From a098ece6bb862cd49fadd6220cd253c1dcddc35b Mon Sep 17 00:00:00 2001 From: axinglu Date: Wed, 16 Oct 2024 15:49:38 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=92=8C=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LICENSE.txt | 0 apps/api/documents/api.js | 1 + apps/common/Gateway.js | 2 + apps/common/main/lib/controller/History.js | 2 + apps/common/main/lib/extend/Bootstrap.js | 0 .../img/controls/common-controls.png | Bin .../img/controls/common-controls@2x.png | Bin .../main/resources/img/iconshuge@2.5x.svg | 1 + apps/documenteditor/mobile/css/526.css | 6 + apps/documenteditor/mobile/css/526.css.map | 1 + apps/documenteditor/mobile/css/964.css | 6 + apps/documenteditor/mobile/css/964.css.map | 1 + .../mobile/css/framework7-rtl.css | 3 + .../mobile/css/framework7-rtl.css.map | 1 + apps/documenteditor/mobile/css/framework7.css | 3 + .../mobile/css/framework7.css.map | 1 + apps/documenteditor/mobile/dist/js/526.js | 2 + .../mobile/dist/js/526.js.LICENSE.txt | 5 + apps/documenteditor/mobile/dist/js/964.js | 2 + .../mobile/dist/js/964.js.LICENSE.txt | 5 + apps/documenteditor/mobile/dist/js/app.js | 3 + .../mobile/dist/js/app.js.LICENSE.txt | 47 ++ apps/documenteditor/mobile/dist/js/app.js.map | 1 + apps/documenteditor/mobile/index.html | 433 ++++++++++++++++++ .../resources/img/bullets/bullet-01.png | Bin .../resources/img/bullets/bullet-02.png | Bin .../resources/img/bullets/bullet-03.png | Bin .../resources/img/bullets/bullet-04.png | Bin .../resources/img/bullets/bullet-05.png | Bin .../resources/img/bullets/bullet-06.png | Bin .../resources/img/bullets/bullet-07.png | Bin .../mobile/resources/img/charts/chart-01.png | Bin .../mobile/resources/img/charts/chart-02.png | Bin .../mobile/resources/img/charts/chart-03.png | Bin .../mobile/resources/img/charts/chart-04.png | Bin .../mobile/resources/img/charts/chart-05.png | Bin .../mobile/resources/img/charts/chart-06.png | Bin .../mobile/resources/img/charts/chart-07.png | Bin .../mobile/resources/img/charts/chart-08.png | Bin .../mobile/resources/img/charts/chart-09.png | Bin .../mobile/resources/img/charts/chart-10.png | Bin .../mobile/resources/img/charts/chart-11.png | Bin .../mobile/resources/img/charts/chart-12.png | Bin .../mobile/resources/img/charts/chart-13.png | Bin .../mobile/resources/img/charts/chart-14.png | Bin .../mobile/resources/img/charts/chart-15.png | Bin .../mobile/resources/img/charts/chart-16.png | Bin .../mobile/resources/img/charts/chart-17.png | Bin .../mobile/resources/img/charts/chart-18.png | Bin .../mobile/resources/img/charts/chart-19.png | Bin .../mobile/resources/img/charts/chart-20.png | Bin .../mobile/resources/img/charts/chart-21.png | Bin .../mobile/resources/img/charts/chart-22.png | Bin .../mobile/resources/img/charts/chart-23.png | Bin .../mobile/resources/img/charts/chart-24.png | Bin .../mobile/resources/img/charts/chart-25.png | Bin .../resources/img/numbers/number-01.png | Bin .../resources/img/numbers/number-02.png | Bin .../resources/img/numbers/number-03.png | Bin .../resources/img/numbers/number-04.png | Bin .../resources/img/numbers/number-05.png | Bin .../resources/img/numbers/number-06.png | Bin .../resources/img/numbers/number-07.png | Bin .../main/resources/img/iconshuge@2.5x.svg | 1 + .../main/resources/img/iconshuge@2.5x.svg | 1 + apps/presentationeditor/mobile/css/612.css | 6 + .../presentationeditor/mobile/css/612.css.map | 1 + apps/presentationeditor/mobile/css/923.css | 6 + .../presentationeditor/mobile/css/923.css.map | 1 + .../mobile/css/framework7-rtl.css | 3 + .../mobile/css/framework7-rtl.css.map | 1 + .../mobile/css/framework7.css | 3 + .../mobile/css/framework7.css.map | 1 + apps/presentationeditor/mobile/dist/js/612.js | 2 + .../mobile/dist/js/612.js.LICENSE.txt | 5 + apps/presentationeditor/mobile/dist/js/923.js | 2 + .../mobile/dist/js/923.js.LICENSE.txt | 5 + apps/presentationeditor/mobile/dist/js/app.js | 3 + .../mobile/dist/js/app.js.LICENSE.txt | 47 ++ .../mobile/dist/js/app.js.map | 1 + apps/presentationeditor/mobile/index.html | 270 +++++++++++ .../main/app/controller/Main.js | 2 + .../main/app/view/CellEditor.js | 4 +- .../main/resources/img/iconshuge@2.5x.svg | 1 + apps/spreadsheeteditor/mobile/css/611.css | 6 + apps/spreadsheeteditor/mobile/css/611.css.map | 1 + apps/spreadsheeteditor/mobile/css/887.css | 6 + apps/spreadsheeteditor/mobile/css/887.css.map | 1 + apps/spreadsheeteditor/mobile/css/app.css | 6 + apps/spreadsheeteditor/mobile/css/app.css.map | 1 + .../mobile/css/framework7-rtl.css | 3 + .../mobile/css/framework7-rtl.css.map | 1 + .../mobile/css/framework7.css | 3 + .../mobile/css/framework7.css.map | 1 + apps/spreadsheeteditor/mobile/dist/js/611.js | 2 + .../mobile/dist/js/611.js.LICENSE.txt | 5 + apps/spreadsheeteditor/mobile/dist/js/887.js | 2 + .../mobile/dist/js/887.js.LICENSE.txt | 5 + apps/spreadsheeteditor/mobile/dist/js/app.js | 3 + .../mobile/dist/js/app.js.LICENSE.txt | 47 ++ .../mobile/dist/js/app.js.map | 1 + apps/spreadsheeteditor/mobile/index.html | 270 +++++++++++ .../mobile/resources/img/charts/chart-01.png | Bin .../mobile/resources/img/charts/chart-02.png | Bin .../mobile/resources/img/charts/chart-03.png | Bin .../mobile/resources/img/charts/chart-04.png | Bin .../mobile/resources/img/charts/chart-05.png | Bin .../mobile/resources/img/charts/chart-06.png | Bin .../mobile/resources/img/charts/chart-07.png | Bin .../mobile/resources/img/charts/chart-08.png | Bin .../mobile/resources/img/charts/chart-09.png | Bin .../mobile/resources/img/charts/chart-10.png | Bin .../mobile/resources/img/charts/chart-11.png | Bin .../mobile/resources/img/charts/chart-12.png | Bin .../mobile/resources/img/charts/chart-13.png | Bin .../mobile/resources/img/charts/chart-14.png | Bin .../mobile/resources/img/charts/chart-15.png | Bin .../mobile/resources/img/charts/chart-16.png | Bin .../mobile/resources/img/charts/chart-17.png | Bin .../mobile/resources/img/charts/chart-18.png | Bin .../mobile/resources/img/charts/chart-19.png | Bin .../mobile/resources/img/charts/chart-20.png | Bin .../mobile/resources/img/charts/chart-21.png | Bin .../mobile/resources/img/charts/chart-22.png | Bin .../mobile/resources/img/charts/chart-23.png | Bin .../mobile/resources/img/charts/chart-24.png | Bin .../mobile/resources/img/charts/chart-25.png | Bin .../mobile/src/controller/Main.jsx | 9 +- ...7\346\234\254\346\226\207\346\241\243.txt" | 0 build/common.json | 4 +- build/documenteditor.json | 2 +- build/pdfeditor.json | 2 +- build/presentationeditor.json | 2 +- build/spreadsheeteditor.json | 2 +- build/sprites.sh | 0 .../backbone/docs/public/fonts/aller-bold.eot | Bin .../backbone/docs/public/fonts/aller-bold.ttf | Bin .../docs/public/fonts/aller-bold.woff | Bin .../docs/public/fonts/aller-light.eot | Bin .../docs/public/fonts/aller-light.ttf | Bin .../docs/public/fonts/aller-light.woff | Bin .../backbone/docs/public/fonts/fleurons.eot | Bin .../backbone/docs/public/fonts/fleurons.ttf | Bin .../backbone/docs/public/fonts/fleurons.woff | Bin .../docs/public/fonts/novecento-bold.eot | Bin .../docs/public/fonts/novecento-bold.ttf | Bin .../docs/public/fonts/novecento-bold.woff | Bin vendor/backbone/test/vendor/qunit.css | 0 vendor/backbone/test/vendor/qunit.js | 0 vendor/perfect-scrollbar/Gruntfile.js | 0 vendor/perfect-scrollbar/README.md | 0 vendor/perfect-scrollbar/bower.json | 0 vendor/perfect-scrollbar/examples/azusa.jpg | Bin .../examples/options-default.html | 0 .../examples/options-minScrollbarLength.html | 0 .../examples/options-suppressScrollAxis.html | 0 .../examples/options-useBothWheelAxes.html | 0 .../examples/options-wheelPropagation.html | 0 .../examples/options-wheelSpeed.html | 0 .../examples/reach-the-end-callback.html | 0 .../examples/text-content.html | 0 .../min/perfect-scrollbar-0.4.9.min.css | 0 .../min/perfect-scrollbar-0.4.9.min.js | 0 ...ect-scrollbar-0.4.9.with-mousewheel.min.js | 0 vendor/perfect-scrollbar/package.json | 0 .../perfect-scrollbar.jquery.json | 0 .../src/jquery.mousewheel.js | 0 .../src/perfect-scrollbar.css | 0 .../src/perfect-scrollbar.js | 0 vendor/requirejs/dist/Markdown.pl | 0 vendor/requirejs/dist/dist-build.sh | 0 .../tests/browsertests/async/async.php | 0 .../tests/browsertests/async/one.php | 0 .../requirejs/tests/browsertests/async/two.js | 0 vendor/requirejs/tests/doh/runner.sh | 0 vendor/requirejs/tests/layers/build.sh | 0 vendor/requirejs/updatesubs.sh | 0 .../docs/public/fonts/aller-bold.eot | Bin .../docs/public/fonts/aller-bold.ttf | Bin .../docs/public/fonts/aller-bold.woff | Bin .../docs/public/fonts/aller-light.eot | Bin .../docs/public/fonts/aller-light.ttf | Bin .../docs/public/fonts/aller-light.woff | Bin .../docs/public/fonts/novecento-bold.eot | Bin .../docs/public/fonts/novecento-bold.ttf | Bin .../docs/public/fonts/novecento-bold.woff | Bin 186 files changed, 1268 insertions(+), 9 deletions(-) mode change 100755 => 100644 LICENSE.txt mode change 100755 => 100644 apps/common/main/lib/extend/Bootstrap.js mode change 100755 => 100644 apps/common/main/resources/img/controls/common-controls.png mode change 100755 => 100644 apps/common/main/resources/img/controls/common-controls@2x.png create mode 100644 apps/documenteditor/main/resources/img/iconshuge@2.5x.svg create mode 100644 apps/documenteditor/mobile/css/526.css create mode 100644 apps/documenteditor/mobile/css/526.css.map create mode 100644 apps/documenteditor/mobile/css/964.css create mode 100644 apps/documenteditor/mobile/css/964.css.map create mode 100644 apps/documenteditor/mobile/css/framework7-rtl.css create mode 100644 apps/documenteditor/mobile/css/framework7-rtl.css.map create mode 100644 apps/documenteditor/mobile/css/framework7.css create mode 100644 apps/documenteditor/mobile/css/framework7.css.map create mode 100644 apps/documenteditor/mobile/dist/js/526.js create mode 100644 apps/documenteditor/mobile/dist/js/526.js.LICENSE.txt create mode 100644 apps/documenteditor/mobile/dist/js/964.js create mode 100644 apps/documenteditor/mobile/dist/js/964.js.LICENSE.txt create mode 100644 apps/documenteditor/mobile/dist/js/app.js create mode 100644 apps/documenteditor/mobile/dist/js/app.js.LICENSE.txt create mode 100644 apps/documenteditor/mobile/dist/js/app.js.map create mode 100644 apps/documenteditor/mobile/index.html mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/bullets/bullet-01.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/bullets/bullet-02.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/bullets/bullet-03.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/bullets/bullet-04.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/bullets/bullet-05.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/bullets/bullet-06.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/bullets/bullet-07.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-01.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-02.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-03.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-04.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-05.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-06.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-07.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-08.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-09.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-10.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-11.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-12.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-13.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-14.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-15.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-16.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-17.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-18.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-19.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-20.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-21.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-22.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-23.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-24.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/charts/chart-25.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/numbers/number-01.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/numbers/number-02.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/numbers/number-03.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/numbers/number-04.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/numbers/number-05.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/numbers/number-06.png mode change 100755 => 100644 apps/documenteditor/mobile/resources/img/numbers/number-07.png create mode 100644 apps/pdfeditor/main/resources/img/iconshuge@2.5x.svg create mode 100644 apps/presentationeditor/main/resources/img/iconshuge@2.5x.svg create mode 100644 apps/presentationeditor/mobile/css/612.css create mode 100644 apps/presentationeditor/mobile/css/612.css.map create mode 100644 apps/presentationeditor/mobile/css/923.css create mode 100644 apps/presentationeditor/mobile/css/923.css.map create mode 100644 apps/presentationeditor/mobile/css/framework7-rtl.css create mode 100644 apps/presentationeditor/mobile/css/framework7-rtl.css.map create mode 100644 apps/presentationeditor/mobile/css/framework7.css create mode 100644 apps/presentationeditor/mobile/css/framework7.css.map create mode 100644 apps/presentationeditor/mobile/dist/js/612.js create mode 100644 apps/presentationeditor/mobile/dist/js/612.js.LICENSE.txt create mode 100644 apps/presentationeditor/mobile/dist/js/923.js create mode 100644 apps/presentationeditor/mobile/dist/js/923.js.LICENSE.txt create mode 100644 apps/presentationeditor/mobile/dist/js/app.js create mode 100644 apps/presentationeditor/mobile/dist/js/app.js.LICENSE.txt create mode 100644 apps/presentationeditor/mobile/dist/js/app.js.map create mode 100644 apps/presentationeditor/mobile/index.html create mode 100644 apps/spreadsheeteditor/main/resources/img/iconshuge@2.5x.svg create mode 100644 apps/spreadsheeteditor/mobile/css/611.css create mode 100644 apps/spreadsheeteditor/mobile/css/611.css.map create mode 100644 apps/spreadsheeteditor/mobile/css/887.css create mode 100644 apps/spreadsheeteditor/mobile/css/887.css.map create mode 100644 apps/spreadsheeteditor/mobile/css/app.css create mode 100644 apps/spreadsheeteditor/mobile/css/app.css.map create mode 100644 apps/spreadsheeteditor/mobile/css/framework7-rtl.css create mode 100644 apps/spreadsheeteditor/mobile/css/framework7-rtl.css.map create mode 100644 apps/spreadsheeteditor/mobile/css/framework7.css create mode 100644 apps/spreadsheeteditor/mobile/css/framework7.css.map create mode 100644 apps/spreadsheeteditor/mobile/dist/js/611.js create mode 100644 apps/spreadsheeteditor/mobile/dist/js/611.js.LICENSE.txt create mode 100644 apps/spreadsheeteditor/mobile/dist/js/887.js create mode 100644 apps/spreadsheeteditor/mobile/dist/js/887.js.LICENSE.txt create mode 100644 apps/spreadsheeteditor/mobile/dist/js/app.js create mode 100644 apps/spreadsheeteditor/mobile/dist/js/app.js.LICENSE.txt create mode 100644 apps/spreadsheeteditor/mobile/dist/js/app.js.map create mode 100644 apps/spreadsheeteditor/mobile/index.html mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-01.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-02.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-03.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-04.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-05.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-06.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-07.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-08.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-09.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-10.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-11.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-12.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-13.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-14.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-15.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-16.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-17.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-18.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-19.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-20.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-21.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-22.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-23.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-24.png mode change 100755 => 100644 apps/spreadsheeteditor/mobile/resources/img/charts/chart-25.png create mode 100644 "apps/spreadsheeteditor/mobile/src/controller/\346\226\260\345\273\272 \346\226\207\346\234\254\346\226\207\346\241\243.txt" mode change 100755 => 100644 build/sprites.sh mode change 100755 => 100644 vendor/backbone/docs/public/fonts/aller-bold.eot mode change 100755 => 100644 vendor/backbone/docs/public/fonts/aller-bold.ttf mode change 100755 => 100644 vendor/backbone/docs/public/fonts/aller-bold.woff mode change 100755 => 100644 vendor/backbone/docs/public/fonts/aller-light.eot mode change 100755 => 100644 vendor/backbone/docs/public/fonts/aller-light.ttf mode change 100755 => 100644 vendor/backbone/docs/public/fonts/aller-light.woff mode change 100755 => 100644 vendor/backbone/docs/public/fonts/fleurons.eot mode change 100755 => 100644 vendor/backbone/docs/public/fonts/fleurons.ttf mode change 100755 => 100644 vendor/backbone/docs/public/fonts/fleurons.woff mode change 100755 => 100644 vendor/backbone/docs/public/fonts/novecento-bold.eot mode change 100755 => 100644 vendor/backbone/docs/public/fonts/novecento-bold.ttf mode change 100755 => 100644 vendor/backbone/docs/public/fonts/novecento-bold.woff mode change 100755 => 100644 vendor/backbone/test/vendor/qunit.css mode change 100755 => 100644 vendor/backbone/test/vendor/qunit.js mode change 100755 => 100644 vendor/perfect-scrollbar/Gruntfile.js mode change 100755 => 100644 vendor/perfect-scrollbar/README.md mode change 100755 => 100644 vendor/perfect-scrollbar/bower.json mode change 100755 => 100644 vendor/perfect-scrollbar/examples/azusa.jpg mode change 100755 => 100644 vendor/perfect-scrollbar/examples/options-default.html mode change 100755 => 100644 vendor/perfect-scrollbar/examples/options-minScrollbarLength.html mode change 100755 => 100644 vendor/perfect-scrollbar/examples/options-suppressScrollAxis.html mode change 100755 => 100644 vendor/perfect-scrollbar/examples/options-useBothWheelAxes.html mode change 100755 => 100644 vendor/perfect-scrollbar/examples/options-wheelPropagation.html mode change 100755 => 100644 vendor/perfect-scrollbar/examples/options-wheelSpeed.html mode change 100755 => 100644 vendor/perfect-scrollbar/examples/reach-the-end-callback.html mode change 100755 => 100644 vendor/perfect-scrollbar/examples/text-content.html mode change 100755 => 100644 vendor/perfect-scrollbar/min/perfect-scrollbar-0.4.9.min.css mode change 100755 => 100644 vendor/perfect-scrollbar/min/perfect-scrollbar-0.4.9.min.js mode change 100755 => 100644 vendor/perfect-scrollbar/min/perfect-scrollbar-0.4.9.with-mousewheel.min.js mode change 100755 => 100644 vendor/perfect-scrollbar/package.json mode change 100755 => 100644 vendor/perfect-scrollbar/perfect-scrollbar.jquery.json mode change 100755 => 100644 vendor/perfect-scrollbar/src/jquery.mousewheel.js mode change 100755 => 100644 vendor/perfect-scrollbar/src/perfect-scrollbar.css mode change 100755 => 100644 vendor/perfect-scrollbar/src/perfect-scrollbar.js mode change 100755 => 100644 vendor/requirejs/dist/Markdown.pl mode change 100755 => 100644 vendor/requirejs/dist/dist-build.sh mode change 100755 => 100644 vendor/requirejs/tests/browsertests/async/async.php mode change 100755 => 100644 vendor/requirejs/tests/browsertests/async/one.php mode change 100755 => 100644 vendor/requirejs/tests/browsertests/async/two.js mode change 100755 => 100644 vendor/requirejs/tests/doh/runner.sh mode change 100755 => 100644 vendor/requirejs/tests/layers/build.sh mode change 100755 => 100644 vendor/requirejs/updatesubs.sh mode change 100755 => 100644 vendor/underscore/docs/public/fonts/aller-bold.eot mode change 100755 => 100644 vendor/underscore/docs/public/fonts/aller-bold.ttf mode change 100755 => 100644 vendor/underscore/docs/public/fonts/aller-bold.woff mode change 100755 => 100644 vendor/underscore/docs/public/fonts/aller-light.eot mode change 100755 => 100644 vendor/underscore/docs/public/fonts/aller-light.ttf mode change 100755 => 100644 vendor/underscore/docs/public/fonts/aller-light.woff mode change 100755 => 100644 vendor/underscore/docs/public/fonts/novecento-bold.eot mode change 100755 => 100644 vendor/underscore/docs/public/fonts/novecento-bold.ttf mode change 100755 => 100644 vendor/underscore/docs/public/fonts/novecento-bold.woff diff --git a/LICENSE.txt b/LICENSE.txt old mode 100755 new mode 100644 diff --git a/apps/api/documents/api.js b/apps/api/documents/api.js index 8e9c567bd7..35660a3025 100644 --- a/apps/api/documents/api.js +++ b/apps/api/documents/api.js @@ -623,6 +623,7 @@ }; var _processSaveResult = function(result, message) { + console.log("axing _processSaveResult", result, message) _sendCommand({ command: 'processSaveResult', data: { diff --git a/apps/common/Gateway.js b/apps/common/Gateway.js index 5faee33ea8..9f9b56dbbc 100644 --- a/apps/common/Gateway.js +++ b/apps/common/Gateway.js @@ -72,6 +72,7 @@ if (window.Common === undefined) { }, 'setHistoryData': function(data) { + console.log("axing setHistoryData", data) $me.trigger('sethistorydata', data); }, @@ -407,6 +408,7 @@ if (window.Common === undefined) { }, saveDocument: function(data) { + console.log("axing saveDocument", data) data && _postMessage({ event: 'onSaveDocument', data: data.buffer diff --git a/apps/common/main/lib/controller/History.js b/apps/common/main/lib/controller/History.js index b3e1c561a2..8eca1b2253 100644 --- a/apps/common/main/lib/controller/History.js +++ b/apps/common/main/lib/controller/History.js @@ -208,7 +208,9 @@ define([ } var data = opts.data; + var historyStore = this.getApplication().getCollection('Common.Collections.HistoryVersions'); + console.log("axing onSetHistoryData data = ", data, "\nopts = ", opts, ""); if (historyStore && data!==null) { var rev, revisions = historyStore.findRevisions(data.version), urlGetTime = new Date(); diff --git a/apps/common/main/lib/extend/Bootstrap.js b/apps/common/main/lib/extend/Bootstrap.js old mode 100755 new mode 100644 diff --git a/apps/common/main/resources/img/controls/common-controls.png b/apps/common/main/resources/img/controls/common-controls.png old mode 100755 new mode 100644 diff --git a/apps/common/main/resources/img/controls/common-controls@2x.png b/apps/common/main/resources/img/controls/common-controls@2x.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/main/resources/img/iconshuge@2.5x.svg b/apps/documenteditor/main/resources/img/iconshuge@2.5x.svg new file mode 100644 index 0000000000..ec11f4377b --- /dev/null +++ b/apps/documenteditor/main/resources/img/iconshuge@2.5x.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/documenteditor/mobile/css/526.css b/apps/documenteditor/mobile/css/526.css new file mode 100644 index 0000000000..8b6e646ca7 --- /dev/null +++ b/apps/documenteditor/mobile/css/526.css @@ -0,0 +1,6 @@ +/*! + * + * * Version: 8.0.1 (build: 0) + * + */:root{--brand-word:#446995;--brand-cell:#40865C;--brand-slide:#BE664F;--brand-form:#AA5252;--brand-primary:#3880BE;--brand-secondary:#ED7309;--brand-text-on-brand:#FFF;--background-primary:#FFF;--background-secondary:#FFF;--background-tertiary:#EFF0F5;--background-menu-divider:rgba(60,60,67,0.15);--background-button:#EFF0F5;--text-normal:#000000;--text-secondary:rgba(0,0,0,0.6);--text-tertiary:rgba(0,0,0,0.4);--text-link:#007AFF;--text-error:#FF3B30;--fill-black:#000;--fill-white:#FFF;--toolbar-background:#446995;--toolbar-icons:#FFF;--toolbar-segment:#446995;--toolbar-tab-normal:rgba(255,255,255,0.5);--component-disabled-opacity:0.4;--active-opacity-word:rgba(68,105,149,0.3);--active-opacity-slide:rgba(190,102,79,0.3);--active-opacity-cell:rgba(64,134,92,0.3);--image-border-types-filter:none;--canvas-background:#eee;--canvas-content-background:#fff;--canvas-page-border:#ccc;--canvas-ruler-background:#fff;--canvas-ruler-margins-background:#d9d9d9;--canvas-ruler-mark:#555;--canvas-ruler-handle-border:#555;--canvas-ruler-handle-border-disabled:#aaa;--canvas-high-contrast:#000;--canvas-cell-border:#999;--canvas-cell-title-text:rgba(0,0,0,0.8);--canvas-cell-title-background:#f7f7f7;--canvas-cell-title-background-selected:#cfcfcf;--canvas-cell-title-border:#d8d8d8;--canvas-cell-title-border-selected:#c9c9c9}:root .pdf-view{--brand-word:var(--brand-form)}:root .pdf-view__android{--toolbar-background:var(--brand-word)}:root .theme-dark,:root .theme-type-dark{--background-primary:#232323;--background-secondary:#333;--background-tertiary:#131313;--background-menu-divider:rgba(84,84,88,0.5);--background-button:#333333;--text-normal:rgba(255,255,255,0.87);--text-secondary:rgba(255,255,255,0.6);--text-tertiary:rgba(255,255,255,0.4);--text-link:#1976D2;--text-error:#FF453A;--fill-black:#000;--fill-white:#FFF;--brand-word:#208BFF;--brand-cell:#34C759;--brand-slide:#FE8C33;--brand-form:#FE8C33;--brand-primary:#3E9CF0;--brand-secondary:#FFAF49;--brand-text-on-brand:#000;--toolbar-background:#232323;--toolbar-icons:#208BFF;--toolbar-segment:#FFF;--toolbar-tab-normal:#757575;--component-disabled-opacity:0.4;--active-opacity-word:rgba(68,105,149,0.2);--active-opacity-slide:rgba(190,102,79,0.2);--active-opacity-cell:rgba(64,134,92,0.2);--image-border-types-filter:invert(100%) brightness(4);--canvas-background:#000;--canvas-content-background:#fff;--canvas-page-border:#303030;--canvas-ruler-background:#636366;--canvas-ruler-margins-background:#3a3a3c;--canvas-ruler-mark:#8e8e93;--canvas-ruler-handle-border:#636366;--canvas-ruler-handle-border-disabled:#636366;--canvas-high-contrast:#000;--canvas-cell-border:rgba(0,0,0,0.1);--canvas-cell-title-border:#757575;--canvas-cell-title-border-hover:#858585;--canvas-cell-title-border-selected:#999;--canvas-cell-title-text:rgba(255,255,255,0.8);--canvas-cell-title-background:#555;--canvas-cell-title-background-selected:#3d3d3d}:root .theme-dark.pdf-view,:root .theme-type-dark.pdf-view{--brand-word:var(--brand-form)}:root .theme-dark.pdf-view__android,:root .theme-type-dark.pdf-view__android{--toolbar-background:var(--background-primary)}[dir=rtl].device-android .app-layout .searchbar input{background-position:100%;padding-left:36px;padding-right:24px}[dir=rtl].device-android .app-layout .searchbar .number-search-results{left:26px;right:auto}[dir=rtl].device-android .comment-list .comment-header .initials,[dir=rtl].device-android .wrap-comment .comment-header .initials{margin-left:10px;margin-right:0}[dir=rtl].device-android .actions-modal .actions-button-text{text-align:right}[dir=rtl].device-android .navigation-sheet__title{padding-left:0;padding-right:16px}[dir=rtl].device-ios .app-layout .navbar .left a+a,[dir=rtl].device-ios .app-layout .navbar .right a+a,[dir=rtl].device-ios .app-layout .subnavbar{margin-right:0}[dir=rtl].device-ios .app-layout .tab-buttons .tab-link:first-child{border-radius:0 5px 5px 0}[dir=rtl].device-ios .app-layout .tab-buttons .tab-link:last-child{border-radius:5px 0 0 5px}[dir=rtl].device-ios .app-layout .searchbar .number-search-results{left:26px;right:auto}[dir=rtl].device-ios .app-layout .popover li:first-child .segmented a:first-child,[dir=rtl].device-ios .app-layout .popover li:last-child .segmented a:first-child{border-radius:0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0}[dir=rtl].device-ios .app-layout .popover li:first-child .segmented a:last-child,[dir=rtl].device-ios .app-layout .popover li:last-child .segmented a:last-child{border-radius:var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius)}[dir=rtl].device-ios .app-layout .list .item-inner .item-after .segmented{margin-left:0;margin-right:10px}[dir=rtl].device-ios .app-layout .searchbar-inner__right .buttons-row a.next{margin-left:0;margin-right:15px}[dir=rtl].device-ios .app-layout .navbar .searchbar-input-wrap,[dir=rtl].device-ios .app-layout .searchbar-inner__left{margin-left:10px;margin-right:0}[dir=rtl].device-ios .app-layout .comment-list .item-content .item-inner .comment-header{padding-left:16px}[dir=rtl] .comment-list .item-content .item-inner{padding-left:0}[dir=rtl] .comment-list .item-content .item-inner .comment-header .right{justify-content:space-between}[dir=rtl] .comment-list .item-content .item-inner .comment-header .right .comment-resolve{margin-left:10px;margin-right:0}[dir=rtl] .comment-list .item-content .item-inner .comment-header .name{text-align:right}[dir=rtl] .comment-quote{border-left:0;border-right:1px solid var(--text-secondary);padding-left:16px;padding-right:10px}[dir=rtl] .comment-text,[dir=rtl] .reply-text{padding-left:15px;padding-right:0}[dir=rtl] #add-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #add-comment-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #add-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,[dir=rtl] #add-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #add-reply-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #add-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date,[dir=rtl] #edit-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #edit-comment-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #edit-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,[dir=rtl] #edit-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #edit-reply-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #edit-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date{text-align:right}[dir=rtl] #view-comment-popover .page .page-content{padding:16px 0 60px 16px}[dir=rtl] .wrap-comment{padding:16px 16px 0 24px}[dir=rtl] .shapes .thumb{transform:scaleX(-1)}[dir=rtl] #settings-popover .link,[dir=rtl] .settings-popup .link{display:inline}[dir=rtl] #edit-table-style ul{padding-right:0}[dir=rtl] .color-schemes-menu .item-title{margin-right:20px}[dir=rtl] .list [slot=root-start]{padding:15px 15px 0 0}[dir=rtl] .bullets .item-content,[dir=rtl] .multilevels .item-content,[dir=rtl] .numbers .item-content{padding-right:0}[dir=rtl] .dataview .active:after{left:-5px;right:unset}[dir=rtl] .popover .list .range-number,[dir=rtl] .popup .list .range-number,[dir=rtl] .sheet-modal .list .range-number{text-align:left}[dir=rtl] .popover .list .inner-range-title,[dir=rtl] .popup .list .inner-range-title,[dir=rtl] .sheet-modal .list .inner-range-title{padding-left:0;padding-right:15px}[dir=rtl] #color-picker .right-block,[dir=rtl] .page-review .toolbar #btn-reject-change{margin-left:0;margin-right:20px}[dir=rtl] .view .list li.no-indicator .item-link .item-inner{padding-left:15px;padding-right:0}[dir=rtl] .dialog .modal-password .modal-password__icon{left:4px;right:auto}@media (max-width:550px){.device-ios[dir=rtl] .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__right{margin-left:0;margin-right:10px}.device-ios[dir=rtl] .app-layout .navbar .searchbar-input-wrap{margin-left:0}.device-android[dir=rtl] .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__left{margin-left:33px;margin-right:0}}[dir=rtl] i.icon.icon-next,[dir=rtl] i.icon.icon-numbers-3,[dir=rtl] i.icon.icon-numbers-7,[dir=rtl] i.icon.icon-prev,[dir=rtl] i.icon.icon-table-add-column-left,[dir=rtl] i.icon.icon-table-add-column-right,[dir=rtl] i.icon.icon-table-borders-left,[dir=rtl] i.icon.icon-table-borders-right,[dir=rtl] i.icon.icon-table-remove-column,[dir=rtl] i.icon.icon-text-align-left,[dir=rtl] i.icon.icon-text-align-right{transform:scaleX(-1)}[dir=rtl] i.icon.icon-numbers-1{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M55.728 18v-6.725h-.022l-2.051 1.477v-1.02l2.062-1.482h.946V18h-.935ZM52.35 30.484c0-.677.243-1.239.73-1.687.487-.45 1.096-.676 1.826-.676.691 0 1.277.206 1.757.617.48.412.72.915.72 1.51 0 .43-.119.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.775V36h-5.113v-.666l2.728-2.874c.52-.547.863-.963 1.032-1.246.172-.282.258-.585.258-.907 0-.373-.15-.69-.452-.951a1.585 1.585 0 0 0-1.085-.392c-.454 0-.834.145-1.138.435-.305.29-.457.652-.457 1.085v.005h-.934v-.005ZM53.698 49.423v-.817h.929c.444 0 .807-.127 1.09-.38.283-.259.425-.585.425-.978 0-.394-.131-.708-.393-.94-.26-.233-.632-.35-1.111-.35-.444 0-.806.119-1.085.355-.28.236-.44.559-.484.967h-.929c.054-.66.308-1.184.763-1.574.458-.39 1.05-.585 1.778-.585.698 0 1.278.188 1.74.564.462.375.693.854.693 1.434 0 .483-.143.89-.43 1.219-.286.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.402.564.347.337.52.777.52 1.322 0 .433-.121.823-.364 1.17a2.39 2.39 0 0 1-.989.806c-.415.19-.875.285-1.38.285-.802 0-1.449-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.042.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.595.5-1 0-.454-.161-.814-.483-1.079-.32-.265-.756-.397-1.311-.397h-.972ZM51 17h-1v1h1zM51 35h-1v1h1zM51 52h-1v1h1z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-2{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M52.312 18v-6.725h-.021l-2.052 1.477v-1.02L52.3 10.25h.946V18h-.935Zm2.47 1.488c.123-.208.214-.37.275-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM48.934 30.484c0-.677.243-1.239.73-1.687.487-.45 1.096-.676 1.826-.676.691 0 1.277.206 1.757.617.48.412.72.915.72 1.51 0 .43-.119.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.775V36h-5.113v-.666l2.728-2.874c.52-.547.863-.963 1.032-1.246.172-.282.258-.585.258-.907 0-.373-.15-.69-.452-.951a1.585 1.585 0 0 0-1.085-.392c-.454 0-.834.145-1.138.435-.305.29-.457.652-.457 1.085v.005h-.934v-.005Zm5.849 7.004c.121-.208.213-.37.274-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM50.282 49.423v-.817h.929c.444 0 .807-.127 1.09-.38.283-.259.425-.585.425-.978 0-.394-.131-.708-.392-.94-.262-.233-.633-.35-1.112-.35-.444 0-.806.119-1.085.355-.28.236-.44.559-.484.967h-.929c.054-.66.308-1.184.763-1.574.458-.39 1.05-.585 1.778-.585.698 0 1.278.188 1.74.564.462.375.693.854.693 1.434 0 .483-.144.89-.43 1.219-.286.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.402.564.347.337.52.777.52 1.322 0 .433-.121.823-.364 1.17a2.39 2.39 0 0 1-.989.806c-.415.19-.875.285-1.38.285-.802 0-1.448-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.043.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.595.5-1 0-.454-.161-.814-.483-1.079-.32-.265-.756-.397-1.311-.397h-.972Zm4.5 5.065c.123-.208.214-.37.275-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822Z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-4{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='m56.85 18-.778-2.218h-3.083L52.21 18h-1.015l2.857-7.75h.956L57.866 18H56.85Zm-2.336-6.574-1.24 3.534h2.513l-1.24-3.534h-.033ZM55.03 36h-3.024v-7.75h3.035c.662 0 1.197.177 1.606.531.411.355.617.822.617 1.402 0 .405-.13.772-.392 1.101-.258.326-.573.523-.945.591v.043c.526.068.945.274 1.257.618.315.343.472.773.472 1.289 0 .684-.233 1.217-.698 1.6-.462.383-1.105.575-1.928.575Zm-2.057-6.896v2.486h1.547c.572 0 1.01-.11 1.31-.333.304-.222.457-.542.457-.961 0-.383-.127-.677-.382-.881-.254-.208-.616-.311-1.085-.311h-1.847Zm0 6.042h1.912c.583 0 1.026-.116 1.326-.35.301-.232.452-.572.452-1.02 0-.902-.623-1.353-1.87-1.353h-1.82v2.723ZM54.39 53.129c-1.07 0-1.92-.36-2.55-1.08-.627-.723-.94-1.699-.94-2.927 0-1.217.316-2.188.95-2.911.634-.727 1.48-1.09 2.54-1.09.846 0 1.562.236 2.15.709.59.469.946 1.09 1.068 1.863h-.978a2.1 2.1 0 0 0-.8-1.219c-.408-.308-.888-.462-1.44-.462-.755 0-1.36.283-1.815.849-.455.566-.682 1.32-.682 2.261 0 .953.226 1.71.677 2.272.451.562 1.06.843 1.826.843.57 0 1.05-.13 1.44-.392.39-.261.655-.628.794-1.1h.978c-.18.765-.546 1.354-1.101 1.766-.555.412-1.26.618-2.116.618ZM49 17h-1v1h1zM49 35h-1v1h1zM49 52h-1v1h1z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-5{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M51.404 17.243c.473 0 .863-.136 1.171-.409.312-.275.467-.62.467-1.036v-.467l-1.514.096c-.881.054-1.322.364-1.322.93 0 .268.108.483.323.644.218.161.51.242.875.242Zm-.198.81c-.588 0-1.06-.155-1.418-.467-.358-.311-.537-.723-.537-1.235 0-.498.186-.888.558-1.17.373-.287.91-.452 1.611-.495l1.622-.097v-.483c0-.358-.114-.634-.343-.827-.23-.194-.557-.29-.983-.29-.337 0-.621.08-.854.241-.23.162-.373.378-.43.65h-.897c.015-.487.231-.895.65-1.224.419-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36V18h-.886v-1.004h-.022c-.164.322-.415.58-.752.773-.336.19-.707.285-1.111.285Zm3.577 1.435c.121-.208.213-.37.274-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM51.759 36.054a2.3 2.3 0 0 1-1.117-.264 1.979 1.979 0 0 1-.769-.767h-.02V36h-.887v-8.089h.934v3.239h.022c.183-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.322.272 1.773.817.45.54.677 1.251.677 2.132 0 .884-.228 1.597-.683 2.138-.45.54-1.047.81-1.788.81Zm-.167-5.065c-.505 0-.915.197-1.23.59-.311.39-.467.9-.467 1.526 0 .63.156 1.14.467 1.53.315.391.725.586 1.23.586.509 0 .915-.191 1.22-.574.308-.384.461-.898.461-1.542 0-.641-.154-1.153-.462-1.536-.304-.387-.71-.58-1.219-.58Zm3.19 6.499c.123-.208.214-.37.275-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM54.31 49.095h-.918a1.274 1.274 0 0 0-.484-.795c-.261-.207-.601-.311-1.02-.311-.509 0-.919.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.468 1.547.315.38.728.57 1.24.57.405 0 .736-.092.994-.275.261-.186.432-.453.51-.8h.919c-.079.57-.34 1.03-.784 1.38-.44.351-.989.527-1.644.527-.802 0-1.445-.265-1.928-.795-.484-.534-.725-1.252-.725-2.154 0-.888.241-1.6.725-2.138.483-.54 1.122-.81 1.917-.81.684 0 1.245.189 1.681.569.437.376.686.832.747 1.37Zm.473 5.393c.121-.208.213-.37.274-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822Z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-6{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M54.82 17.243c.473 0 .863-.136 1.171-.409.312-.275.468-.62.468-1.036v-.467l-1.515.096c-.881.054-1.321.364-1.321.93 0 .268.107.483.322.644.218.161.51.242.875.242Zm-.198.81c-.588 0-1.06-.155-1.418-.467-.358-.311-.538-.723-.538-1.235 0-.498.187-.888.56-1.17.371-.287.909-.452 1.61-.495l1.623-.097v-.483c0-.358-.115-.634-.344-.827-.23-.194-.557-.29-.983-.29-.337 0-.621.08-.854.241-.23.162-.373.378-.43.65h-.897c.014-.487.231-.895.65-1.224.419-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36V18h-.886v-1.004h-.022a1.86 1.86 0 0 1-.752.773c-.336.19-.707.285-1.111.285ZM55.175 36.054a2.3 2.3 0 0 1-1.117-.264 1.979 1.979 0 0 1-.768-.767h-.022V36h-.886v-8.089h.934v3.239h.022c.182-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.322.272 1.773.817.45.54.676 1.251.676 2.132 0 .884-.227 1.597-.682 2.138-.45.54-1.047.81-1.788.81Zm-.167-5.065c-.505 0-.915.197-1.23.59-.311.39-.467.9-.467 1.526 0 .63.156 1.14.467 1.53.315.391.725.586 1.23.586.509 0 .915-.191 1.22-.574.307-.384.462-.898.462-1.542 0-.641-.154-1.153-.462-1.536-.305-.387-.711-.58-1.22-.58ZM57.726 49.095h-.918a1.274 1.274 0 0 0-.484-.795c-.261-.207-.601-.311-1.02-.311-.509 0-.919.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.468 1.547.315.38.728.57 1.24.57.405 0 .736-.092.994-.275.261-.186.432-.453.51-.8h.919c-.079.57-.34 1.03-.784 1.38-.44.351-.989.527-1.644.527-.802 0-1.445-.265-1.928-.795-.483-.534-.725-1.252-.725-2.154 0-.888.242-1.6.725-2.138.483-.54 1.122-.81 1.917-.81.684 0 1.245.189 1.681.569.437.376.686.832.747 1.37ZM51 17h-1v1h1zM51 35h-1v1h1zM51 52h-1v1h1z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-align-left,[dir=rtl] i.icon.icon-align-right{transform:scaleX(-1)}[dir=rtl] i.icon.icon-text-orientation-horizontal{background-color:var(--brand-word);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M9.514 10.75h1.755L8.069 2H6.363L3.25 10.75h1.712l.66-1.988h3.194l.698 1.988ZM7.197 4.041l1.101 3.247h-2.18l1.079-3.247ZM16 2h-3.194v8.75h2.72c1.028-.008 1.677-.028 1.946-.06.429-.051.789-.189 1.08-.412.294-.226.525-.527.692-.9.17-.379.256-.767.256-1.165 0-.505-.13-.945-.392-1.319s-.637-.638-1.123-.794c.345-.17.617-.427.817-.77.204-.342.306-.718.306-1.128 0-.378-.082-.718-.246-1.02a2.162 2.162 0 0 0-.616-.734 1.93 1.93 0 0 0-.834-.358C17.103 2.03 16.632 2 16 2Zm-1.58 3.48V3.456h.926c.76 0 1.22.01 1.38.03.268.036.47.14.604.31.138.168.208.387.208.657 0 .283-.08.511-.24.686-.157.172-.373.275-.65.31-.152.02-.542.03-1.171.03h-1.058Zm0 3.796v-2.34h1.302c.734 0 1.21.042 1.428.125.222.084.391.217.507.4.117.183.175.406.175.669 0 .31-.076.559-.23.746a.973.973 0 0 1-.582.346c-.157.036-.526.054-1.107.054h-1.494ZM6.016 13.25l-3.52 3.833-.497.542.498.542L6.018 22l.995-1.084-2.318-2.524H22v-1.534H4.695l2.318-2.524-.996-1.084Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain}[dir=rtl] i.icon.icon-text-orientation-anglecount{background-color:var(--brand-word);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23000' d='m12.614 10.658-1.076-1.113.79-1.703-1.958-2.025-1.623.842-1.05-1.085L14.972 2l1.046 1.082-3.403 7.576Zm.301-4.079 1.316-2.756-2.653 1.374 1.337 1.382ZM18.92 6.085l1.96 2.025c.387.4.657.718.81.952.157.233.255.485.292.756a2 2 0 0 1-.073.856 1.905 1.905 0 0 1-.475.802c-.251.26-.544.434-.879.522a1.61 1.61 0 0 1-.973-.03c.203.407.27.812.202 1.215a2.032 2.032 0 0 1-.568 1.085 2.42 2.42 0 0 1-.871.575 1.928 1.928 0 0 1-.977.133c-.315-.043-.62-.185-.914-.424-.185-.15-.595-.549-1.23-1.196l-1.668-1.724 5.365-5.547Zm.097 1.946-1.24 1.283.648.67c.386.399.631.64.737.724.191.153.387.224.588.215.205-.01.395-.104.568-.283.166-.172.258-.354.275-.548.023-.194-.038-.387-.18-.58-.086-.114-.362-.412-.828-.894l-.568-.587Zm-2.133 2.206-1.435 1.483.916.947c.357.369.594.591.712.668a.822.822 0 0 0 .57.15c.208-.022.407-.131.597-.328.161-.166.262-.344.303-.534a.92.92 0 0 0-.066-.575c-.082-.191-.348-.52-.798-.985l-.8-.826Z'/%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M2 8.72h5.604v1.358H4.24L15.45 20.916 14.328 22 3.403 11.144v3.286H2V8.72Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain}[dir=rtl] i.icon.icon-text-orientation-angleclock{background-color:var(--brand-word);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M8.72 22v-5.604h1.358v3.363L20.916 8.55 22 9.672 11.144 20.597h3.286V22H8.72Z' clip-rule='evenodd'/%3E%3Cpath fill='%23000' d='m10.658 11.386-1.113 1.076-1.703-.79-2.025 1.958.842 1.623-1.085 1.05L2 9.028l1.082-1.046 7.576 3.403Zm-4.079-.301L3.823 9.769l1.374 2.653 1.382-1.337ZM6.085 5.08 8.11 3.12c.4-.387.718-.657.952-.81.233-.157.485-.255.756-.292a2 2 0 0 1 .856.073c.295.085.562.243.802.475.26.251.434.544.522.879.09.332.08.657-.03.973.407-.203.812-.27 1.215-.202.403.07.764.259 1.085.568.252.244.444.535.575.871.131.332.175.658.133.977-.043.315-.185.62-.424.914-.15.185-.549.595-1.196 1.23l-1.724 1.668-5.547-5.365Zm1.946-.097 1.283 1.24.67-.648c.399-.385.64-.631.724-.737.153-.191.224-.387.215-.588-.01-.205-.104-.395-.283-.568-.172-.166-.354-.257-.548-.275-.194-.023-.387.038-.58.18-.114.086-.412.362-.894.828l-.587.568Zm2.206 2.133 1.483 1.435.947-.916c.369-.357.591-.594.668-.711a.822.822 0 0 0 .15-.57c-.022-.209-.131-.408-.328-.598a1.104 1.104 0 0 0-.534-.303.92.92 0 0 0-.575.066c-.191.082-.52.348-.985.798l-.826.8Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain}.device-ios{--toolbar-background:var(--background-primary,#FFF);--toolbar-segment:var(--brand-word,#446995);--toolbar-icons:var(--brand-word,#446995);--f7-toolbar-border-color:var(--background-menu-divider);--f7-bars-border-color:var(--background-menu-divider);--f7-calendar-row-border-color:var(--background-menu-divider)}.device-android{--toolbar-background:var(--brand-word,#446995)}.device-android .theme-type-dark{--toolbar-icons:var(--brand-word,#446995)}.page.page-users .block-title{font-size:17px;font-weight:400;line-height:17px;margin-bottom:20px;margin-top:20px;text-transform:none}.page.page-users .color{border-radius:50px;color:var(--fill-white);font-size:18px;line-height:40px;min-height:40px;min-width:40px;text-align:center}.about .page-content{display:flex;flex-direction:column;text-align:center}.about_ios{padding-bottom:30px;padding-top:120px}.about_android{padding-bottom:16px;padding-top:60px}.about_tablet{padding-bottom:12px;padding-top:12px}.about__text{color:var(--text-normal);font-size:12px;font-style:normal;font-weight:400;line-height:16px;margin:0;text-align:center}.about a{color:var(--brand-word)}.about .logo-block__elem{display:flex;justify-content:center}.about .logo-block__elem img{height:auto;max-width:100%}.about__logo{background:url(../../../documenteditor/mobile/resources/img/about/logo-new.svg) no-repeat 50%;height:80px;width:100%}.about__editor{flex-grow:1;margin-top:20px}.about__contacts{padding-left:72px;padding-right:72px;text-align:center}.about__customer,.about__licensor{margin-top:12px;text-align:center}.theme-type-dark .about__logo{background:url(../../../documenteditor/mobile/resources/img/about/logo-new-white.svg) no-repeat 50%}.row{--f7-cols-per-row:1;align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:space-between}.row+.row{margin-top:var(--f7-grid-row-gap)}.navbar.main-navbar{height:0}.navbar.main-navbar.navbar-with-logo{height:26px}.navbar.main-navbar .navbar-inner{display:flex;justify-content:center;padding:0}.navbar.main-navbar .navbar-bg:after,.navbar.main-navbar .navbar-bg:before{content:none}.navbar-hidden{transform:translate3d(0,calc((var(--f7-navbar-height) + var(--f7-subnavbar-height))*-1),0)}.navbar-hidden+.page-content,.navbar-hidden+.page>.page-content{padding-top:0}.page.editor>.page-content{transition:padding-top .3s ease-in}.main-logo{align-items:center;display:flex;height:100%;justify-content:center;max-width:100%;width:100%}.main-logo .custom-logo-image{height:auto;max-height:20px;width:auto}.subnavbar .subnavbar-inner{padding:0}.subnavbar .subnavbar-inner .title{flex-shrink:1;margin:0;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap}.subnavbar .icon-back{color:var(--toolbar-icons)}.page.page-with-subnavbar .page-content{--f7-page-subnavbar-offset:0px}.page.page-with-subnavbar.page-with-logo .page-content{--f7-page-subnavbar-offset:26px}.popover .list:first-child,.popup .list:first-child,.sheet-modal .list:first-child{margin-bottom:0;margin-top:0}.popover .list .inner-range-title,.popup .list .inner-range-title,.sheet-modal .list .inner-range-title{color:var(--text-normal);padding:15px 0 0 15px}.popover .list .range-number,.popup .list .range-number,.sheet-modal .list .range-number{color:var(--text-normal);min-width:60px;text-align:right}.popover .page-content.no-padding-top,.popup .page-content.no-padding-top,.sheet-modal .page-content.no-padding-top{padding-top:0}.sheet-modal.coauth__sheet{transition:all .3s}.disabled,[disabled]{opacity:.55;pointer-events:none}.text-content{padding:14px 10px 0}.view .list{--menu-list-offset:0px;max-width:100%}.view .list ul{background:var(--f7-list-bg-color);max-width:100%}.view .list li.no-indicator .item-link .item-inner{padding-right:15px}.view .list li.no-indicator .item-link .item-inner:before{content:none}.view .list .item-text{-webkit-line-clamp:none;height:auto;max-height:none;text-overflow:clip;white-space:normal}.view .list .font-item img{filter:var(--image-border-types-filter,none)}.view .list .buttons .button.active{background-color:var(--active-opacity-word)}.view .list .item-link .item-inner{width:100%}.view .list .item-inner{color:var(--text-normal)}.bullets,.multilevels,.numbers{min-height:160px}.bullets .row.list,.multilevels .row.list,.numbers .row.list{margin:0}.bullets .row.list ul,.multilevels .row.list ul,.numbers .row.list ul{grid-gap:10px;background:none;display:grid;grid-template-columns:repeat(4,auto);justify-content:space-around;padding:5px;width:100%}.bullets .row.list ul:after,.bullets .row.list ul:before,.multilevels .row.list ul:after,.multilevels .row.list ul:before,.numbers .row.list ul:after,.numbers .row.list ul:before{display:none}.bullets .row.list ul li,.multilevels .row.list ul li,.numbers .row.list ul li{border:1px solid #c4c4c4;height:70px;width:70px}html.pixel-ratio-2 .bullets .row.list ul li,html.pixel-ratio-2 .multilevels .row.list ul li,html.pixel-ratio-2 .numbers .row.list ul li{border:.5px solid #c4c4c4}html.pixel-ratio-3 .bullets .row.list ul li,html.pixel-ratio-3 .multilevels .row.list ul li,html.pixel-ratio-3 .numbers .row.list ul li{border:.33px solid #c4c4c4}.bullets .row.list ul li .thumb,.multilevels .row.list ul li .thumb,.numbers .row.list ul li .thumb{background-color:var(--fill-white);background-size:cover;height:100%;width:100%}.bullets .row.list ul li .thumb label,.multilevels .row.list ul li .thumb label,.numbers .row.list ul li .thumb label{color:var(--fill-black);position:absolute;text-align:center;top:34%;width:100%}.bullets .row.list ul li .item-marker,.bullets .row.list ul li .item-multilevellist,.bullets .row.list ul li .item-number,.multilevels .row.list ul li .item-marker,.multilevels .row.list ul li .item-multilevellist,.multilevels .row.list ul li .item-number,.numbers .row.list ul li .item-marker,.numbers .row.list ul li .item-multilevellist,.numbers .row.list ul li .item-number{height:68px;width:68px}.bullets .row.list .item-content,.multilevels .row.list .item-content,.numbers .row.list .item-content{min-height:68px;padding-left:0;padding-right:0}.bullets .row.list .item-content .item-inner,.multilevels .row.list .item-content .item-inner,.numbers .row.list .item-content .item-inner{padding:0}.bullets .row.list .item-content .item-inner:after,.multilevels .row.list .item-content .item-inner:after,.numbers .row.list .item-content .item-inner:after{display:none}.popover .page .list:first-child:last-child ul{background-color:var(--f7-list-bg-color);border-radius:0}.popover .list:first-child li:first-child,.popover .list:first-child li:first-child a,.popover .list:first-child li:first-child>label,.popover .list:last-child li:last-child,.popover .list:last-child li:last-child a,.popover .list:last-child li:last-child>label,.popover .page .list:first-child:last-child ul li:first-child .item-link,.popover .page .list:first-child:last-child ul li:last-child .item-link{border-radius:0}.shapes li{height:70px;margin:0 1px;width:70px}.shapes li .thumb{background-color:var(--brand-word);height:100%;width:100%}.chart-types{width:100%}.chart-types .row{padding:0 10px}.chart-types li{height:60px;margin:6px;width:60px}.chart-types li .thumb{background-size:contain;height:100%;width:100%}.chart-styles .row li{margin:0;padding:1px}.chart-styles .row img{height:50px;width:50px}.segmented .decrement,.segmented .increment{text-overflow:clip}.content-block{box-sizing:border-box;margin:32px 0;padding:0 16px}.content-block p{color:var(--text-normal)}.color-schemes-menu{cursor:pointer;display:block}.color-schemes-menu .item-inner{justify-content:flex-start}.color-schemes-menu .color-schema-block{display:flex}.color-schemes-menu .color{box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);margin:0 2px 0 0;min-height:26px;min-width:26px}.color-schemes-menu .item-title{color:var(--text-normal);margin-left:20px}.slide-layout__list{margin:auto}.slide-layout ul{display:flex;flex-wrap:wrap;justify-content:space-around}.slide-layout ul:after,.slide-layout ul:before{display:none}.slide-layout li{margin-top:12px;position:relative;z-index:1}.slide-layout li img{box-shadow:0 0 0 1px rgba(0,0,0,.15)}.slide-layout .item-inner{padding-top:0}.slide-layout .item-inner:after{display:none}.slide-layout .item-inner:before{background-color:var(--brand-word);background-repeat:no-repeat;bottom:0;content:"";height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='11' fill='transparent'/%3E%3Cpath d='M11 21a10 10 0 1 1 10-10 10 10 0 0 1-10 10Zm6.4-13.68L17.06 7a.48.48 0 0 0-.67 0l-7 6.84-2.44-2.6a.51.51 0 0 0-.59.08l-.36.34a.58.58 0 0 0 0 .65l3.19 3.35a.38.38 0 0 0 .39 0L17.4 8a.48.48 0 0 0 0-.67Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;opacity:0;position:absolute;right:11px;width:22px;z-index:1}.slide-layout .active .item-inner:before{opacity:1}.slide-transition .splitter{align-items:center;color:#000000;display:flex}.slide-transition .splitter label{margin:0 5px}.slide-transition .buttons-row{display:flex;margin:0 0 0 10px;min-width:90px}.slide-transition .buttons-row .button{width:100%}.slide-transition .buttons-row .button:first-child{border-left-style:solid;border-left-width:1px;border-radius:5px 0 0 5px}.slide-transition .buttons-row .button:last-child{border-radius:0 5px 5px 0}.style-effect .list .item-title,.style-type .list .item-title{font-weight:400}.range-slider-delay{appearance:none;background:linear-gradient(90deg,#b7b8b7 0,#b7b8b7);background-position:50%;background-repeat:no-repeat;background-size:100% 2px;border:none;box-sizing:initial;margin:4px 0 5px;outline:0;width:100%}.range-slider-delay:disabled{opacity:.55}.range-slider-delay::-webkit-slider-thumb{appearance:none;background:#ffffff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.3);cursor:pointer;height:28px;width:28px}.range-slider-delay::-ms-thumb{appearance:none;background:#ffffff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.3);cursor:pointer;height:28px;width:28px}.buttons-list ul li{border:0;font-weight:400}.buttons-list ul li .item-link{height:100%}.buttons-list ul li .item-link .item-content{height:100%;min-height:auto;padding:0}.buttons-list ul li .item-link .item-inner{align-items:center;justify-content:center;min-height:auto;padding:0}.buttons-list ul li .item-link .item-inner:before{display:none}.item-color-auto .color-auto{background-color:#000000;height:22px;width:22px}.item-color-auto.active .color-auto{border-radius:1px;box-shadow:0 0 0 1px #ffffff,0 0 0 4px var(--brand-word)}.page .color-palettes .list ul .palette{padding:8px 0}.page .color-palettes .list ul .palette a{border-radius:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);flex-grow:1;margin:1px 1px 0 0;min-height:26px;min-width:10px;position:relative}.page .color-palettes .list ul .palette a.active:after{border-radius:1px;box-shadow:0 0 0 1px #ffffff,0 0 0 4px var(--brand-word);content:" ";height:100%;position:absolute;width:100%;z-index:1}.page .color-palettes .list ul .palette a.transparent{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='0 0 22 22'%3E%3Cpath fill='none' stroke='red' stroke-linecap='undefined' stroke-linejoin='undefined' stroke-width='2' d='M0 22 22 0'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:100% 100%}.page .color-palettes .row{padding:0}.page .color-palettes .list .item-inner{color:var(--text-normal);display:block}.page .color-palettes .dynamic-colors .palette,.page .color-palettes .standart-colors .palette{display:flex}.page .color-palettes .dynamic-colors .empty-color{background-color:#ffffff}#color-picker{align-items:center;display:flex;justify-content:space-around;margin:4px auto 0;max-width:300px}#color-picker .color-picker-container{font-size:0;height:auto;max-width:100%;position:relative;width:calc(100% - 94px)}#color-picker .color-picker-container .color-picker-module-wheel{margin:0}#color-picker .right-block{margin-left:20px}#color-picker .right-block .color-hsb-preview{border:1px solid #c4c4c4;border-radius:100px;height:72px;overflow:hidden;width:72px}#color-picker .right-block .color-hsb-preview .current-color-hsb-preview,#color-picker .right-block .color-hsb-preview .new-color-hsb-preview{height:36px}#color-picker .right-block .color-hsb-preview .new-color-hsb-preview{border-radius:100px 100px 0 0}#color-picker .right-block .color-hsb-preview .current-color-hsb-preview{border-radius:0 0 100px 100px}#color-picker .right-block .button-round{align-items:center;background-color:var(--fill-white);border:0;border-radius:100px;box-shadow:0 4px 4px rgba(0,0,0,.25);display:flex;height:72px;justify-content:center;margin-top:20px;padding:0;width:72px}.table-styles{width:100%}.table-styles .row,.table-styles .row li{margin-bottom:12px}.table-styles .row div,.table-styles .row li{align-items:center;box-shadow:0 0 0 1px #c4c4c4;display:flex;justify-content:center}.table-styles .row div,.table-styles li{margin:0;padding:1px}.table-styles .row div img,.table-styles li img{height:50px;width:70px}#edit-table-style .list ul ul{padding-left:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.icon.lang-flag{background-image:url(../../../documenteditor/mobile/resources/img/controls/flags@2x.png);background-size:48px auto;height:12px;width:16px}.lang-flag.ca,.lang-flag.ca-ES{background-position:0 0}.lang-flag.cs,.lang-flag.cs-CZ{background-position:-16px 0}.lang-flag.da,.lang-flag.da-DK{background-position:-32px 0}.lang-flag.de,.lang-flag.de-DE{background-position:0 -12px}.lang-flag.el,.lang-flag.el-GR{background-position:-16px -12px}.lang-flag.en,.lang-flag.en-US{background-position:-32px -12px}.lang-flag.fr,.lang-flag.fr-FR{background-position:0 -24px}.lang-flag.hu,.lang-flag.hu-HU{background-position:-16px -24px}.lang-flag.it,.lang-flag.it-IT{background-position:-32px -24px}.lang-flag.ko,.lang-flag.ko-KR{background-position:0 -36px}.lang-flag.nl,.lang-flag.nl-NL{background-position:-16px -36px}.lang-flag.nb,.lang-flag.nb-NO,.lang-flag.nn,.lang-flag.nn-NO{background-position:-32px -36px}.lang-flag.pl,.lang-flag.pl-PL{background-position:0 -48px}.lang-flag.pt,.lang-flag.pt-BR{background-position:-16px -48px}.lang-flag.ro,.lang-flag.ro-RO{background-position:-32px -48px}.lang-flag.ru,.lang-flag.ru-RU{background-position:0 -60px}.lang-flag.sv,.lang-flag.sv-SE{background-position:-32px -60px}.lang-flag.tr,.lang-flag.tr-TR{background-position:0 -72px}.lang-flag.uk,.lang-flag.uk-UA{background-position:-16px -72px}.lang-flag.lv,.lang-flag.lv-LV{background-position:-32px -72px}.lang-flag.lt,.lang-flag.lt-LT{background-position:0 -84px}.lang-flag.vi,.lang-flag.vi-VN{background-position:-16px -84px}.lang-flag.de-CH,.lang-flag.fr-CH,.lang-flag.it-CH{background-position:-32px -84px}.lang-flag.pt-PT{background-position:-16px -96px}.lang-flag.de-AT{background-position:-32px -96px}.lang-flag.es,.lang-flag.es-ES{background-position:0 -108px}.lang-flag.en-GB{background-position:-32px -108px}.lang-flag.en-AU{background-position:0 -120px}.lang-flag.az-Latn-AZ{background-position:-16px -120px}.lang-flag.en-ID,.lang-flag.id,.lang-flag.id-ID{background-position:-32px -120px}.lang-flag.bg,.lang-flag.bg-BG{background-position:0 -132px}.lang-flag.ca-ES-valencia{background-position:-16px -132px}.lang-flag.en-CA{background-position:-32px -132px}.lang-flag.en-ZA{background-position:0 -144px}.lang-flag.eu,.lang-flag.eu-ES{background-position:-16px -144px}.lang-flag.gl,.lang-flag.gl-ES{background-position:-32px -144px}.lang-flag.hr,.lang-flag.hr-HR{background-position:0 -156px}.lang-flag.lb,.lang-flag.lb-LU{background-position:-16px -156px}.lang-flag.mn,.lang-flag.mn-MN{background-position:-32px -156px}.lang-flag.sl,.lang-flag.sl-SI{background-position:0 -168px}.lang-flag.sr,.lang-flag.sr-Cyrl-RS,.lang-flag.sr-Latn-RS{background-position:-16px -168px}.lang-flag.sk,.lang-flag.sk-SK{background-position:-32px -168px}.lang-flag.kk,.lang-flag.kk-KZ{background-position:0 -180px}.lang-flag.fi,.lang-flag.fi-FI,.lang-flag.sv-FI{background-position:-16px -180px}.lang-flag.zh,.lang-flag.zh-CN{background-position:-32px -180px}.lang-flag.ja,.lang-flag.ja-JP{background-position:0 -192px}.lang-flag.es-MX{background-position:-16px -192px}.checkbox-in-modal{align-items:center;display:flex;margin-top:10px}.checkbox-in-modal .right-text{margin-left:10px}.username-tip{color:#ffffff;display:none;height:20px;opacity:0;padding:0 10px;pointer-events:none;position:absolute;transition:opacity .1ms ease-out;z-index:900}.username-tip.active{display:block;opacity:1}.dlg-adv-options{z-index:13700}.dlg-adv-options .content-block{padding:0}.dlg-adv-options .picker-3d .picker-item{font-size:16px;padding:0;text-align:left}.dlg-adv-options .picker-center-highlight{left:0;right:0;width:100%}.dlg-macros-request .dialog-text{word-break:break-word}@keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}@-o-keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}@-moz-keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}@-webkit-keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}.doc-placeholder-container{height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:6000}.statusbar .statusbar--box-tabs>ul>.locked a{box-shadow:inset 0 2px red}.font-item .item-inner{overflow:hidden}.font-item .item-inner:after{left:16px}.cell-editor{overflow:initial}.functions-list{background-color:var(--background-primary);max-height:200px;overflow-x:hidden;overflow-y:auto;width:360px}.functions-list__mobile{box-shadow:0 10px 10px -10px rgba(0,0,0,.3);left:0;position:absolute;right:0;width:100%}.functions-list__mobile .list{margin:0}.functions-list__mobile .list ul:before{display:none}.functions-list__mobile .list .item-content{padding-left:0}.functions-list__mobile .list .item-inner{padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left) - var(--menu-list-offset))}.functions-list__mobile .list .item-title{font-size:15px}#idx-functions-list{width:350px}#idx-functions-list .popover-inner .navbars .right .link{font-weight:600}#idx-functions-list .popover-inner .navbars .navbar-bg{background:var(--background-secondary)}#idx-functions-list .popover-inner .navbars .navbar-bg:after,#idx-functions-list .popover-inner .page-function-info .navbar .navbar-bg:after{background:var(--background-menu-divider)}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner{background:var(--background-secondary)}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner .title{color:var(--text-normal)}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner .right .link{color:var(--brand-word);font-weight:600}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner .icon-back:after{color:var(--brand-word)}.highlight-palette{width:100%}.highlight-color{box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);flex-grow:1;margin:1px;min-height:34px;min-width:10px;position:relative}.highlight-color_active:after{border-radius:1px;box-shadow:0 0 0 1px #ffffff,0 0 0 4px #446995;content:" ";height:100%;position:absolute;width:100%;z-index:1}#idx-celleditor.expanded .functions-list__mobile{top:70px}.popover__functions{box-shadow:0 10px 100px rgba(0,0,0,.3)}.popover__functions .view{transition:height .2s}.popover__functions .popover-angle.on-bottom{display:none}.target-function-list{bottom:0;height:100%;left:0;position:absolute;top:0;width:0}.dropdown-list-popup{bottom:0;height:260px;top:auto}.dropdown-list__placeholder{opacity:.6}.dropdown-list__placeholder .item-inner{border-bottom:1px solid var(--f7-list-item-border-color)}.swiper-wrapper .swiper-slide .list ul{background-color:initial}.swiper-pagination-bullet{background:var(--background-menu-divider);opacity:1}.swiper-pagination-bullet-active{background:var(--text-secondary)}.swiper-pagination-bullets{bottom:9px;position:fixed;width:100%}.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 5.5px}.preview-cell-style{background-color:var(--fill-white);background-position:50%;background-repeat:no-repeat;background-size:cover;border:.5px solid var(--background-menu-divider);border-radius:4px;height:44px;width:104px}.sharing-placeholder{height:100%}.sheet-modal .page-current-comment{padding-bottom:60px}.picker-columns{justify-content:space-around}.row-picker .col-50{color:var(--text-secondary);text-align:center}.block{font-size:12px;font-style:normal;font-weight:400;line-height:16px;margin-top:8px}.block-title+.block,.block-title+.block-header,.block-title+.card,.block-title+.list,.block-title+.timeline{margin:0}.inputs-list{margin-bottom:0}.inputs-list ul{background:var(--f7-list-bg-color);list-style:none;margin:0;padding:0;position:relative}.list input[type=password],.list input[type=text]{background:transparent}.dialog .modal-password{position:relative}.dialog .modal-password__icon{position:absolute;right:4px;top:calc(50% - 12.5px)}.dialog .modal-password .item-input-wrap{align-items:center;display:flex;justify-content:space-between}.version-history__user{border-radius:50%;border-radius:50px;color:var(--fill-white);font-size:18px;height:40px;line-height:40px;min-height:40px;min-width:40px;text-align:center;width:40px}.accept-reject .link{margin-right:20px}.beta-badge{border-radius:4px;color:var(--fill-white);font-size:12px;font-weight:400;letter-spacing:.5px;line-height:16px;padding:2px 4px}.close-editor-btn .item-inner{padding-left:36px}.close-editor-btn .item-title{color:var(--text-error)}.device-ios .app-layout{--f7-navbar-link-color:var(--brand-word);--f7-subnavbar-link-color:var(--brand-word);--f7-navbar-text-color:var(--text-normal);--f7-navbar-title-line-height:44px;--f7-navbar-link-line-height:44px;--f7-navbar-title-font-size:17px;--f7-list-bg-color:var(--background-primary);--f7-navbar-bg-color:var(--toolbar-background);--f7-tabbar-link-inactive-color:var(--toolbar-segment);--f7-radio-active-color:var(--brand-word);--f7-toggle-active-color:var(--brand-word);--f7-range-bar-active-bg-color:var(--brand-word);--f7-list-button-text-color:var(--brand-word);--f7-list-item-border-color:var(--background-menu-divider);--f7-page-bg-color:var(--background-tertiary);--f7-list-item-title-text-color:var(--text-normal);--f7-list-item-text-text-color:var(--text-normal);--f7-list-item-subtitle-text-color:var(--text-secondary);--f7-label-text-color:var(--text-normal);--f7-list-item-after-text-color:var(--text-normal);--f7-input-text-color:var(--text-normal);--f7-block-title-text-color:var(--text-secondary);--f7-input-placeholder-color:var(--text-secondary);--f7-list-chevron-icon-color:var(--text-tertiary);--f7-searchbar-search-icon-color:var(--text-tertiary);--f7-searchbar-input-clear-button-color:var(--text-tertiary);--f7-toggle-inactive-border-color:var(--background-menu-divider);--f7-toggle-inactive-bg-color:var(--background-menu-divider);--f7-actions-button-border-color:var(--background-menu-divider);--f7-popover-bg-color:var(--background-primary);--f7-dialog-bg-color-rgb:var(--background-secondary);--f7-dialog-title-text-color:var(--text-normal);--f7-dialog-text-color:var(--text-normal);--f7-dialog-button-text-color:var(--brand-word);--f7-dialog-border-divider-color:var(--background-menu-divider);--f7-subnavbar-border-color:var(--background-menu-divider);--f7-list-border-color:var(--background-menu-divider);--f7-picker-item-text-color:rgba(var(--text-normal),0.45);--f7-picker-item-selected-text-color:var(--text-normal);--f7-block-text-color:var(--text-secondary);--f7-theme-color-shade:var(--background-primary);--f7-fab-pressed-bg-color:var(--background-primary);--f7-input-clear-button-color:var(--text-tertiary)}.device-ios .app-layout #editor-navbar.navbar .left a+a,.device-ios .app-layout #editor-navbar.navbar .right a+a{margin-left:0}.device-ios .app-layout .navbar,.device-ios .app-layout .navbar-bg,.device-ios .app-layout .subnavbar{background-color:var(--f7-navbar-bg-color)}.device-ios .app-layout .navbar a.btn-doc-back,.device-ios .app-layout .navbar-bg a.btn-doc-back,.device-ios .app-layout .subnavbar a.btn-doc-back{width:22px}.device-ios .app-layout .navbar .title,.device-ios .app-layout .navbar-bg .title,.device-ios .app-layout .subnavbar .title{color:var(--text-normal)}.device-ios .app-layout .navbar .navbar-inner,.device-ios .app-layout .navbar .subnavbar-inner,.device-ios .app-layout .navbar-bg .navbar-inner,.device-ios .app-layout .navbar-bg .subnavbar-inner,.device-ios .app-layout .subnavbar .navbar-inner,.device-ios .app-layout .subnavbar .subnavbar-inner{z-index:auto}.device-ios .app-layout .navbar .sheet-close,.device-ios .app-layout .navbar-bg .sheet-close,.device-ios .app-layout .subnavbar .sheet-close{display:flex;height:44px;justify-content:center;width:44px}.device-ios .app-layout .subnavbar .icon-back{color:var(--brand-word)}.device-ios .app-layout .subnavbar .title{font-size:15px;font-weight:400}.device-ios .app-layout .popover__titled .list:first-child li:first-child>label,.device-ios .app-layout .popover__titled .list:first-child li:last-child>label,.device-ios .app-layout .popover__titled .list:first-child ul,.device-ios .app-layout .popover__titled .list:last-child li:first-child>label,.device-ios .app-layout .popover__titled .list:last-child li:last-child>label,.device-ios .app-layout .popover__titled .list:last-child ul{border-radius:0}.device-ios .app-layout .popover__titled .popover-inner>.view{border-radius:var(--f7-popover-border-radius)}.device-ios .app-layout .popover__titled .navbar-bg{backdrop-filter:none}.device-ios .app-layout .popover__titled .navbar-bg:after{background:var(--background-menu-divider)}.device-ios .app-layout .popover__titled .list:last-child li:last-child:after{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-navbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%}.device-ios .app-layout .popover li:last-child .segmented a:first-child{border-radius:var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius)}.device-ios .app-layout .popover li:last-child .segmented a:last-child{border-radius:0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0}.device-ios .app-layout .list .item-content .color-preview{background:var(--fill-white);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);box-sizing:border-box;display:inline-block;height:8px;margin-top:21px;width:22px}.device-ios .app-layout .list .item-content .item-after .color-preview{height:30px;margin-top:-3px;width:75px}.device-ios .app-layout .list .item-inner{padding-top:7px}.device-ios .app-layout .list .item-inner .item-after .after-start{margin:0 5px}.device-ios .app-layout .list .item-inner .item-after .segmented{margin-left:10px;min-width:90px}.device-ios .app-layout .list .buttons .item-inner{align-items:stretch;padding-bottom:0;padding-top:0}.device-ios .app-layout .list .buttons .item-inner>.row{align-items:stretch;width:100%}.device-ios .app-layout .list .buttons .item-inner>.row .button{align-items:center;border:none;border-radius:0;display:flex;flex:1;font-size:17px;height:inherit;justify-content:center}.device-ios .app-layout .list .list-input-right input{text-align:right}.device-ios .app-layout .links-list a:after,.device-ios .app-layout .list .item-inner:after,.device-ios .app-layout .simple-list li:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.device-ios .app-layout .tab-buttons{align-self:center;display:flex;flex-wrap:nowrap;width:100%}.device-ios .app-layout .tab-buttons .tab-link{-webkit-box-flex:1;border:1px solid var(--toolbar-segment);color:var(--brand-word);cursor:pointer;display:block;font-family:inherit;font-size:14px;font-weight:600;height:29px;line-height:26px;margin:0;outline:0;overflow:hidden;padding:0 1px;position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;width:100%}.device-ios .app-layout .tab-buttons .tab-link:first-child{border-left-style:solid;border-left-width:1px;border-radius:5px 0 0 5px}.device-ios .app-layout .tab-buttons .tab-link:last-child{border-radius:0 5px 5px 0}.device-ios .app-layout .tab-buttons .tab-link.tab-link-active{background:var(--toolbar-segment);color:var(--brand-text-on-brand)}.device-ios .app-layout .tab-buttons .tab-link.tab-link-active i.icon{background-color:var(--brand-text-on-brand)}.device-ios .app-layout .button{background:0 0;border:1px solid var(--brand-word);box-sizing:border-box;color:var(--brand-word);cursor:pointer;display:block;font-family:inherit;font-size:14px;height:29px;line-height:27px;margin:0;outline:0;overflow:hidden;padding:0 10px;position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.device-ios .app-layout .button-fill{background-color:var(--background-primary);color:var(--brand-word)}.device-ios .app-layout .button-red{background-color:var(--background-primary);color:var(--text-error)}.device-ios .app-layout .buttons-list li{border:0;border-radius:0;box-shadow:none;font-size:17px;height:43px;min-height:43px;padding:0;text-transform:none}.device-ios .app-layout .button-red .list-button{color:var(--text-error)}.device-ios .app-layout .list-button{position:static}.device-ios .app-layout .block-title{color:#6d6d72;font-size:14px;line-height:1;margin:35px 15px 10px;overflow:hidden;position:relative;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.device-ios .app-layout .shapes .page-content{background:var(--fill-white)}.device-ios .app-layout .dialog{background-color:var(--f7-dialog-bg-color-rgb)}.device-ios .app-layout #color-picker .right-block .button-round .icon{height:30px;width:30px}.device-ios .app-layout .content-block{color:#6d6d72}.device-ios .app-layout #add-chart .page-content,.device-ios .app-layout #add-chart.page-content,.device-ios .app-layout #add-shape .page-content,.device-ios .app-layout #add-shape.page-content,.device-ios .app-layout #add-slide .page-content,.device-ios .app-layout #add-slide.page-content,.device-ios .app-layout #add-table .page-content,.device-ios .app-layout #add-table.page-content,.device-ios .app-layout .dataview .page-content,.device-ios .app-layout .dataview.page-content{background-color:var(--background-tertiary)}.device-ios .app-layout input[type=number]:-moz-placeholder,.device-ios .app-layout input[type=number]:-ms-input-placeholder,.device-ios .app-layout input[type=number]::-moz-placeholder,.device-ios .app-layout input[type=number]::-webkit-input-placeholder,.device-ios .app-layout input[type=number]::placeholder{color:#40865c}.device-ios .app-layout .regional-settings .item-title-row{align-items:center;display:flex;justify-content:flex-start}.device-ios .app-layout .regional-settings .item-title-row .item-title{margin-left:20px;white-space:normal}.device-ios .app-layout .navbar .searchbar{background:var(--f7-navbar-bg-color)}.device-ios .app-layout .navbar .searchbar-input-wrap{height:28px;margin-right:10px;position:relative}.device-ios .app-layout .navbar .buttons-row-replace a{color:var(--brand-word)}.device-ios .app-layout .searchbar input{appearance:none;background-color:var(--background-button);border:none;border-radius:5px;box-sizing:border-box;color:var(--text-normal);display:block;font-family:inherit;font-size:14px;font-weight:400;height:100%;padding:0 36px 0 28px;width:100%}.device-ios .app-layout .searchbar input::placeholder{color:var(--text-tertiary)}.device-ios .app-layout .searchbar .number-search-results{color:var(--text-tertiary);font-size:13px;font-weight:400;line-height:18px;position:absolute;right:26px;top:4.5px;z-index:100}.device-ios .app-layout .searchbar-inner__left{justify-content:center;margin-right:10px}.device-ios .app-layout .searchbar-inner__right .buttons-row a.next{margin-left:15px}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__right{width:28%}@media (max-width:550px){.device-ios .app-layout .navbar .searchbar-input-wrap{margin-right:0}.device-ios .app-layout .searchbar-expandable.searchbar-enabled{top:0}.device-ios .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__center{flex-direction:column}.device-ios .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__right{flex-direction:column-reverse;margin-left:10px}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace{height:88px}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner{height:100%}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__center .searchbar-input-wrap{margin:8px 0}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__right{height:100%;justify-content:space-between;width:auto}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__right .buttons-row-replace{height:50%}}.device-ios .app-layout .actions-button{--f7-actions-button-border-color:var(--background-menu-divider);background:var(--background-secondary)}.device-ios .app-layout .actions-button-text{color:var(--text-normal);font-size:20px;text-overflow:ellipsis;white-space:normal}.device-ios .app-layout input.modal-text-input{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;background:var(--background-primary);border:1px solid var(--text-tertiary);border-radius:0;box-shadow:0 0 0 transparent;box-sizing:border-box;display:block;font-family:inherit;font-size:14px;height:26px;margin:15px 0 0;padding:0 5px;width:100%}.device-ios .app-layout .font-item .item-content{padding-left:0}.device-ios .app-layout .edit-comment-popup .navbar .title{line-height:normal}.device-ios .app-layout .version-history__title{color:var(--text-secondary);font-size:13px;font-style:normal;font-weight:400;line-height:18px;margin-bottom:4px;margin-top:16px}.device-ios .app-layout .version-history__btn{background:transparent;border:0;color:var(--brand-word);font-size:15px;font-style:normal;font-weight:600;letter-spacing:-.24px;line-height:20px;margin-top:22px;outline:none;padding:0;text-transform:uppercase;width:auto}.device-ios .app-layout .version-history__list ul{background:var(--background-primary)}.device-ios .app-layout .version-history__list .item-title{color:var(--text-normal);font-size:13px;font-weight:600;letter-spacing:-.08px;line-height:18px}.device-ios .app-layout .version-history__list .item-inner,.device-ios .app-layout .version-history__list .item-media{padding-bottom:10px;padding-top:10px}.device-ios .app-layout .version-history__list .item-link .item-title-row:before{display:none}.device-ios .app-layout .version-history__list .item-subtitle{color:var(--text-secondary);font-size:11px;font-style:normal;font-weight:400;letter-spacing:.06px;line-height:13px;margin-top:3px}.device-ios .app-layout .version-history__item_active{background-color:var(--canvas-ruler-margins-background)}.device-ios .app-layout .btn-close-history{color:var(--brand-word);font-size:17px;font-style:normal;font-weight:400;letter-spacing:-.41px;line-height:22px;margin-left:10px}.device-ios .app-layout .beta-badge{background-color:#FF9F0A;margin-left:10px}.device-android .app-layout{--f7-navbar-shadow-image:none;--f7-theme-color:var(--brand-word);--f7-navbar-bg-color:var(--toolbar-background);--f7-navbar-link-color:var(--fill-white);--f7-navbar-text-color:var(--fill-white);--f7-navbar-height:56px;--f7-list-bg-color:var(--background-primary);--f7-subnavbar-bg-color:var(--toolbar-background);--f7-subnavbar-link-color:var(--toolbar-icons);--f7-subnavbar-text-color:var(--fill-white);--f7-subnavbar-height:56px;--f7-radio-active-color:var(--brand-word);--f7-range-bar-active-bg-color:var(--brand-word);--f7-range-knob-color:var(--brand-word);--f7-range-knob-size:16px;--f7-list-item-after-text-color:var(--text-normal);--f7-link-highlight-color:transparent;--f7-link-touch-ripple-color:rgba(255,255,255,0.1);--f7-actions-bg-color:var(--background-secondary);--f7-actions-button-border-color:var(--background-menu-divider);--f7-popover-bg-color:var(--background-secondary);--f7-dialog-bg-color:var(--background-secondary);--f7-dialog-text-color:var(--text-secondary);--f7-dialog-title-text-color:var(--text-normal);--f7-dialog-button-text-color:var(--brand-word);--f7-picker-item-text-color:rgba(var(--text-normal),0.45);--f7-picker-item-selected-text-color:var(--text-normal);--f7-input-bg-color:var(--background-primary);--f7-input-placeholder-color:var(--text-secondary);--f7-input-text-color:var(--text-normal);--f7-block-text-color:var(--text-secondary);--f7-dialog-border-radius:0;--f7-sheet-border-radius:0;--f7-popover-border-radius:4px;--f7-actions-border-radius:0;--f7-box-shadow:0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);--f7-popover-box-shadow:var(--f7-box-shadow);--f7-toggle-active-bg-color:var(--brand-word);--f7-toggle-active-border-color:var(--brand-word);--f7-navbar-title-margin-left:20px;--f7-navbar-title-margin-right:20px;--f7-input-focused-border-color:var(--brand-word);--f7-label-focused-text-color:var(--brand-word)}.device-android .app-layout .button{--f7-touch-ripple-color:transparent}.device-android .app-layout .segmented .button{--f7-touch-ripple-color:var(--f7-list-link-pressed-bg-color)}.device-android .app-layout .navbar{--f7-touch-ripple-color:rgba(255,255,255,0.1)}.device-android .app-layout .navbar .sheet-close{display:flex;height:56px;justify-content:center;width:56px}.device-android .app-layout .navbar-inner{background:var(--f7-navbar-bg-color);background-color:var(--f7-navbar-bg-color,var(--f7-bars-bg-color));background-image:var(--f7-navbar-bg-image,var(--f7-bars-bg-image))}.device-android .app-layout .page.page-with-subnavbar.page-with-logo .page-content{--f7-page-navbar-offset:var(--f7-navbar-height)}.device-android .app-layout .page{--f7-text-color:var(--text-normal);--f7-list-item-title-text-color:var(--text-normal);--f7-list-item-text-text-color:var(--text-normal);--f7-list-item-subtitle-text-color:var(--text-secondary);--f7-block-title-text-color:var(--text-secondary);--f7-label-text-color:var(--text-normal);--f7-page-bg-color:var(--background-tertiary);--f7-list-item-border-color:var(--background-menu-divider);--f7-list-chevron-icon-color:var(--text-tertiary);--f7-actions-button-text-color:var(--text-normal);--f7-subnavbar-border-color:var(--background-menu-divider);--f7-list-border-color:var(--background-menu-divider)}.device-android .app-layout .add-popup .view .add-image ul:after,.device-android .app-layout .add-popup .view .inputs-list ul:after{display:none}.device-android .app-layout .coauth__sheet{max-height:65%}.device-android .app-layout .segmented .decrement,.device-android .app-layout .segmented .increment{border:none;border-radius:0;display:flex;height:32px;margin-left:0;min-width:40px}.device-android .app-layout .segmented .decrement i.icon-expand-down,.device-android .app-layout .segmented .increment i.icon-expand-down{background:var(--brand-word)}.device-android .app-layout .segmented label{color:var(--text-normal);line-height:32px;margin:0 5px}.device-android .app-layout .button{--f7-button-text-color:var(--brand-word);appearance:none;background:0 0;border-radius:2px;box-sizing:border-box;color:var(--brand-word);cursor:pointer;display:block;font-family:inherit;font-size:14px;height:36px;line-height:36px;margin:0;min-width:64px;outline:0;overflow:hidden;padding:0 8px;position:relative;text-align:center;text-overflow:ellipsis;text-transform:uppercase;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition-duration:.3s;transition-duration:.3s;white-space:nowrap}.device-android .app-layout .button-fill{background-color:initial;color:var(--brand-text-on-brand)}.device-android .app-layout .button-raised{box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)}.device-android .app-layout .button-red{background-color:var(--text-error);color:var(--brand-text-on-brand)}.device-android .app-layout .buttons-list ul{background-color:var(--background-tertiary)}.device-android .app-layout .buttons-list ul:after,.device-android .app-layout .buttons-list ul:before{display:none}.device-android .app-layout .buttons-list ul li{border-radius:2px;color:var(--fill-white);font-size:14px;height:36px;margin:20px 16px;min-height:36px;text-transform:uppercase}.device-android .app-layout .table-presets .button{min-width:0}.device-android .app-layout .button-fill .list-button{background-color:var(--brand-word);border-radius:2px;color:var(--brand-text-on-brand);font-size:14px;font-weight:500;height:36px;line-height:36px;margin:0;text-align:center;text-transform:uppercase}.device-android .app-layout .button-raised .list-button{box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)}.device-android .app-layout .button-red .list-button{background-color:var(--text-error)}.device-android .app-layout .tab-buttons{display:flex;height:100%;justify-content:space-between;position:relative;width:100%}.device-android .app-layout .tab-buttons .tab-link{align-items:center;box-sizing:border-box;color:rgba(255,255,255,.7);font-size:14px;font-weight:500;height:100%;justify-content:center;padding-left:0;padding-right:0;text-transform:uppercase}.device-android .app-layout .tab-buttons .tab-link i.icon{opacity:.5}.device-android .app-layout .tab-buttons .tab-link.tab-link-active{color:var(--fill-white)}.device-android .app-layout .tab-buttons .tab-link.tab-link-active i.icon{background-color:var(--fill-white);opacity:1}.device-android .app-layout .tab-buttons .tab-link-highlight{--f7-tabbar-link-active-border-color:var(--toolbar-icons);bottom:0;height:3px;left:0;position:absolute}.device-android .app-layout .list.inputs-list{margin:0}.device-android .app-layout .list.inputs-list .item-input.item-content{padding-left:0}.device-android .app-layout .list.inputs-list .item-input .item-inner,.device-android .app-layout .list.inputs-list .item-link .item-inner{display:block}.device-android .app-layout .list.inputs-list .item-input .item-inner .item-label,.device-android .app-layout .list.inputs-list .item-input .item-inner .item-title,.device-android .app-layout .list.inputs-list .item-link .item-inner .item-label,.device-android .app-layout .list.inputs-list .item-link .item-inner .item-title{font-size:12px;width:100%}.device-android .app-layout .list.inputs-list .item-input .item-inner .item-input-wrap,.device-android .app-layout .list.inputs-list .item-link .item-inner .item-input-wrap{margin-left:0}.device-android .app-layout .list .buttons{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;min-height:48px;width:100%}.device-android .app-layout .list .buttons .item-content{width:100%}.device-android .app-layout .list .buttons .item-content .item-inner{padding-bottom:0;padding-top:0}.device-android .app-layout .list .buttons .item-content .item-inner .row{--f7-cols-per-row:1;align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.device-android .app-layout .list .buttons .item-content .item-inner .row .button{align-items:center;display:flex;flex:1;font-size:17px;justify-content:center;margin-left:5px}.device-android .app-layout .list .buttons .item-content .item-inner .row .button:first-child{margin-left:0}.device-android .app-layout .list .item-content .color-preview{background-color:var(--fill-white);border-radius:4px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);height:30px;margin-top:-3px;width:30px}.device-android .app-layout .list .item-content .color-preview.auto{background-color:#000000}.device-android .app-layout .item-input:not(.item-input-outline) .item-content:before,.device-android .app-layout .item-input:not(.item-input-outline).item-content:before{background:transparent}.device-android .app-layout .links-list a:after,.device-android .app-layout .list .item-inner:after,.device-android .app-layout .simple-list li:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.device-android .app-layout .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,.device-android .app-layout .list:not(.inset):not(.inset-md):not(.menu-list) .media-item>.item-link,.device-android .app-layout .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,.device-android .app-layout .media-list:not(.inset):not(.inset-md):not(.menu-list) li>.item-link{border-radius:0}.device-android .app-layout #color-picker .right-block .button-round{background-color:var(--brand-word)}.device-android .app-layout .regional-settings .list .item-inner{margin-left:16px}.device-android .app-layout .regional-settings .list .item-title-row{align-items:center;display:flex;flex-direction:row-reverse;justify-content:space-between;width:100%}.device-android .app-layout .regional-settings .list .item-title-row .item-title{white-space:normal}.device-android .app-layout .searchbar-inner__center{flex-wrap:wrap}.device-android .app-layout .navbar .searchbar-input-wrap{height:32px;margin:4px 0}.device-android .app-layout .navbar .navbar-inner{overflow:initial}.device-android .app-layout .navbar .left{margin:0}.device-android .app-layout .navbar .title{margin-left:var(--f7-navbar-title-margin-left);margin-right:var(--f7-navbar-title-margin-left)}.device-android .app-layout .subnavbar .title{font-size:14px;font-weight:400}.device-android .app-layout .searchbar input{appearance:none;background-color:initial;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='%23fff'%3E%3Cpath d='M15.5 14h-.79l-.28-.27A6.471 6.471 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/%3E%3Cpath fill='none' d='M0 0h24v24H0z'/%3E%3C/svg%3E");background-position:0;background-repeat:no-repeat;background-size:24px 24px;border:none;border-bottom:1px solid var(--fill-white);border-radius:0;box-sizing:border-box;color:var(--fill-white);display:block;font-family:inherit;font-size:16px;font-weight:400;height:100%;opacity:1;padding:0 40px 0 24px;transition-duration:.3s;width:100%}.device-android .app-layout .searchbar input::placeholder{color:var(--fill-white)}.device-android .app-layout .searchbar .input-clear-button{height:18px;margin:0;top:7px;width:18px}.device-android .app-layout .searchbar .input-clear-button:after{color:var(--fill-white);font-size:19px;line-height:19px}.device-android .app-layout .searchbar .number-search-results{font-size:16px;font-weight:400;line-height:24px;position:absolute;right:26px;top:4px}.device-android .app-layout .searchbar-icon:after{color:var(--fill-white);font-size:19px}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled{top:0}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled .searchbar-inner{height:100%;padding:0}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__center{flex-direction:column}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__right{flex-direction:column-reverse}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled.replace{height:96px}.device-android .app-layout .navbar a.link{padding:0 16px}.device-android .app-layout .navbar a.link.searchbar-enable i.icon-search{background-color:var(--toolbar-icons)}.device-android .app-layout .navbar a.icon-only{height:56px;width:auto}.device-android .app-layout .navbar .buttons-row-replace a{color:var(--fill-white);padding:0}.device-android .app-layout .navbar .searchbar .buttons-row{align-self:flex-start}@media (max-width:550px){.device-android .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__left{margin-right:33px}}.device-android .app-layout .actions-button-text{color:var(--text-normal);cursor:pointer;font-size:16px;line-height:48px}@media (min-width:496px){.device-android .app-layout .actions-modal{left:auto;margin-left:0;width:100%}}.device-android .app-layout input.modal-text-input{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;background:#fff;border:none;box-shadow:none;box-sizing:border-box;display:block;font-family:inherit;font-size:16px;height:36px;margin:15px 0 0;padding:0;-webkit-transition-duration:.2s;transition-duration:.2s;width:100%}.device-android .app-layout .input-field .inputs-list{margin:15px 0 0}.device-android .app-layout .input-field .inputs-list ul{background:none}.device-android .app-layout .input-field .inputs-list ul:after,.device-android .app-layout .input-field .inputs-list ul:before{display:none}.device-android .app-layout .input-field .inputs-list .item-inner,.device-android .app-layout .input-field .inputs-list .item-input{margin:0;padding:0}.device-android .app-layout .font-item .item-radio:not(.item-radio-icon-end)>.icon-radio{margin-right:0}.device-android .app-layout .navbar-dropdown-list .navbar-inner,.device-android .app-layout .navbar-link-settings .navbar-inner{background:var(--background-primary)}.device-android .app-layout .navbar-dropdown-list .navbar-inner .icon-back,.device-android .app-layout .navbar-dropdown-list .title,.device-android .app-layout .navbar-dropdown-list a,.device-android .app-layout .navbar-link-settings .navbar-inner .icon-back,.device-android .app-layout .navbar-link-settings .title,.device-android .app-layout .navbar-link-settings a{color:var(--text-normal)}.device-android .app-layout .popover{box-shadow:var(--f7-box-shadow)}.device-android .app-layout .popover.popover__titled .popover-arrow:after{background:var(--toolbar-background)}.device-android .app-layout .popover.document-menu .popover-arrow:after,.device-android .app-layout .popover.popover__functions .popover-arrow:after{background:var(--background-secondary)}.device-android .app-layout .page-version-history{--f7-page-bg-color:var(--background-primary)}.device-android .app-layout .version-history__title{color:var(--brand-word);font-size:14px;font-style:normal;font-weight:500;line-height:20px;margin-bottom:4px;margin-top:16px}.device-android .app-layout .version-history__btn{background:var(--background-primary);border:0;border-radius:6px;box-shadow:0 .25px 1px rgba(0,0,0,.039),0 .85px 3px rgba(0,0,0,.19);color:var(--brand-word);font-size:16px;font-style:normal;font-weight:500;letter-spacing:.25px;line-height:20px;margin-top:10px;padding:6px 20px;width:auto}.device-android .app-layout .version-history__list ul:after,.device-android .app-layout .version-history__list ul:before{display:none}.device-android .app-layout .version-history__list .item-title{color:var(--text-normal);font-size:16px;font-style:normal;font-weight:400;letter-spacing:.15px;line-height:24px}.device-android .app-layout .version-history__list .item-inner{padding-bottom:10px;padding-top:10px}.device-android .app-layout .version-history__list .item-inner:before{background-color:var(--background-menu-divider);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.device-android .app-layout .version-history__list .item-media{max-width:40px;min-width:40px;padding-bottom:12px;padding-top:12px}.device-android .app-layout .version-history__list .item-link .item-title-row:before{display:none}.device-android .app-layout .version-history__list .item-subtitle{color:var(--text-secondary);font-size:12px;font-style:normal;font-weight:400;letter-spacing:.5px;line-height:16px}.device-android .app-layout .version-history__item_active{background-color:var(--background-tertiary)}.device-android .app-layout .btn-close-history{color:var(--toolbar-icons);font-size:16px;font-style:normal;font-weight:400;letter-spacing:.15px;line-height:24px;margin-left:16px}.device-android .app-layout .beta-badge{background-color:var(--brand-secondary);margin-left:8px}.device-android .app-layout .dropdown-list .icon-radio{display:none}.device-android .app-layout .dropdown-list input[type=radio]:checked+.icon-radio{display:inline-block}.device-ios .theme-type-dark i.icon.icon-logo{background:url(../../../documenteditor/mobile/resources/img/header/logo-android.svg) no-repeat 50%;background-size:contain}.device-ios i.icon.icon_mask{background-color:white}.device-ios i.icon.icon-logo{background:url(../../../documenteditor/mobile/resources/img/header/logo-ios.svg) no-repeat 50%;background-size:contain;height:20px;width:100px}.device-ios i.icon.icon-prev{background-color:var(--brand-word);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='m16 20.5-1 1L4.5 11 15 .5l1 1L6.6 11l9.4 9.5z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-prev:after{display:none}.device-ios i.icon.icon-next{background-color:var(--brand-word);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M15.5 11 6 1.5 7.1.4 17.5 11 7.1 21.5l-1.1-1 9.5-9.5z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-next:after{display:none}.device-ios i.icon.icon-edit{background-color:var(--brand-word);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M0 20h22v1H0v-1zM19.3 5.3 6.1 18.4l-1.5-1.5L17.8 3.8l-.7-.7L3.5 16.7 3 20l3.3-.5L19.9 5.9zM20.5 5.3 22 3.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5 2.8 2.8z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-show-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='25'%3E%3Cpath fill-rule='evenodd' d='M5.625 12.5A8.488 8.488 0 0 0 12.5 16a8.487 8.487 0 0 0 6.875-3.5A8.487 8.487 0 0 0 12.5 9a8.488 8.488 0 0 0-6.875 3.5Zm14.955 0A9.494 9.494 0 0 0 12.5 8a9.494 9.494 0 0 0-8.08 4.5A9.494 9.494 0 0 0 12.5 17a9.494 9.494 0 0 0 8.08-4.5Z' clip-rule='evenodd'/%3E%3Cpath d='M12.5 10a2.5 2.5 0 0 1 2.502 2.5 2.502 2.502 0 0 1-2.502 2.511 2.5 2.5 0 0 1-2.489-2.511 2.499 2.499 0 0 1 2.49-2.5Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-hide-password,.device-ios i.icon.icon-show-password{background-color:var(--text-secondary);height:25px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:25px}.device-ios i.icon.icon-hide-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='25'%3E%3Cpath fill-rule='evenodd' d='M11.356 15.765a8.487 8.487 0 0 0 8.019-3.424c-.751-1.03-1.209-1.584-2.339-2.19l.723-.74c1.375.787 1.987 1.587 2.82 2.93a9.494 9.494 0 0 1-8.079 4.5 9.534 9.534 0 0 1-1.99-.208l.846-.868Zm-3.228-1.133a8.546 8.546 0 0 1-2.503-2.29 8.488 8.488 0 0 1 6.875-3.5c.598 0 .719-.018 1.297.069l.924-.849c-.83-.238-1.303-.22-2.206-.22H12.5a9.494 9.494 0 0 0-8.08 4.5 9.549 9.549 0 0 0 2.962 3.004l.746-.714Z' clip-rule='evenodd'/%3E%3Cpath d='M16.031 9.671a20.396 20.396 0 0 0-1.01-.397l-5.863 5.885a8.45 8.45 0 0 0 1.033.365l5.84-5.853Z'/%3E%3Cpath d='M16.79 8.91c-.311-.146-.65-.298-.974-.434l-.794.798c.336.122.687.26 1.01.397l.758-.76Z'/%3E%3Cpath d='m18.345 7.353-.72-.692-1.809 1.815c.324.136.663.288.974.435l1.555-1.558ZM9.395 16.322a9.443 9.443 0 0 1-.99-.406l-1.728 1.733.705.69 2.013-2.017Z'/%3E%3Cpath d='M10.191 15.524a8.45 8.45 0 0 1-1.033-.365l-.754.757c.32.153.651.289.99.406l.797-.798Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-return{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='m11.5 7.793 2.854 2.853-.707.708L12 9.707V16h2.5v1H11V9.707l-1.646 1.647-.708-.708L11.5 7.793Z'/%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M1 4a1 1 0 0 1 1-1h7.75l2 2H22a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4Zm1 16V4h7.25l2 2H22v14H2Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon_mask{background-color:var(--text-normal)}.device-android i.icon.icon-logo{background:url(../../../documenteditor/mobile/resources/img/header/logo-android.svg) no-repeat 50%;background-size:contain;height:20px;width:100px}.device-android i.icon.icon-prev{background-color:var(--brand-word);height:20px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M5.1 10.9 13.9 2 16 4.1l-6.8 7 6.8 6.8-2.1 2.1-8.8-8.8-.1-.1z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:20px}.device-android i.icon.icon-prev:after{display:none}.device-android i.icon.icon-next{background-color:var(--brand-word);height:20px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M16.9 10.9 8.1 2 6 4.1l6.8 7L6 17.9 8.1 20l8.8-8.8.1-.1z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:20px}.device-android i.icon.icon-next:after{display:none}.device-android i.icon.icon-show-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M9.894 9.89C10.486 9.298 11.189 9 12 9c.811 0 1.514.297 2.106.89.593.594.89 1.297.89 2.11s-.297 1.516-.89 2.11c-.592.593-1.295.89-2.106.89-.811 0-1.514-.297-2.106-.89-.593-.594-.89-1.297-.89-2.11 0-.812.297-1.516.89-2.11Zm-1.451 5.672c.998.97 2.184 1.454 3.557 1.454 1.373 0 2.543-.485 3.51-1.453 1-1 1.499-2.188 1.499-3.563s-.5-2.547-1.498-3.516c-.968-1-2.138-1.5-3.511-1.5-1.373 0-2.559.5-3.557 1.5-.968.97-1.452 2.141-1.452 3.516s.484 2.563 1.452 3.563Zm-3.137-9C7.304 5.188 9.535 4.5 12 4.5s4.697.688 6.694 2.063C20.69 7.938 22.126 9.75 23 12c-.874 2.25-2.31 4.063-4.306 5.438C16.697 18.813 14.465 19.5 12 19.5s-4.696-.687-6.694-2.062C3.31 16.063 1.874 14.25 1 12c.874-2.25 2.31-4.062 4.306-5.437Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-hide-password,.device-android i.icon.icon-show-password{background-color:var(--text-secondary);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-hide-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M11.883 9.005h.14c.813 0 1.517.297 2.111.891.595.595.892 1.298.892 2.111v.188l-3.143-3.19Zm-4.316.797c-.375.751-.563 1.486-.563 2.205 0 1.377.485 2.565 1.454 3.566 1.001.97 2.19 1.454 3.566 1.454.719 0 1.454-.187 2.204-.563l-1.548-1.548c-.25.063-.469.094-.656.094-.814 0-1.517-.297-2.111-.892-.595-.594-.892-1.297-.892-2.11 0-.188.032-.407.094-.657L7.567 9.802ZM2.032 4.267 3.299 3l17.73 17.733L19.764 22c-.156-.156-.656-.641-1.5-1.454l-1.877-1.877c-1.345.563-2.799.845-4.362.845-2.471 0-4.707-.688-6.708-2.065-2.002-1.376-3.44-3.19-4.316-5.442.782-1.939 2.033-3.596 3.753-4.972L3.158 5.44a139.128 139.128 0 0 0-1.126-1.173Zm9.992 2.72c-.626 0-1.236.126-1.83.376L8.036 5.205c1.22-.47 2.549-.704 3.988-.704 2.47 0 4.69.688 6.66 2.064 2.002 1.377 3.44 3.19 4.316 5.442a12.231 12.231 0 0 1-3.424 4.739l-2.909-2.909c.25-.594.376-1.204.376-1.83 0-1.376-.5-2.549-1.501-3.518-.97-1-2.143-1.501-3.518-1.501Z'/%3E%3C/svg%3E")}.device-android .dropdown-list i.icon.icon-radio{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='m9 16-5-5-1 1 6 6L20 7l-1-1L9 16Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-collaboration{background-color:var(--toolbar-icons);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill-rule='evenodd' clip-path='url(%23a)' clip-rule='evenodd'%3E%3Cpath d='M7.5 14c-2.823 0-4.989 1.407-6.099 3.257-.56.935-.4 1.305-.299 1.433.154.194.508.31.87.31H7.5v1H1.972c-.47 0-1.216-.134-1.655-.69-.49-.622-.412-1.502.227-2.567C1.834 14.593 4.324 13 7.5 13v1Zm0-1c3.177 0 5.639 1.593 6.929 3.743.639 1.065.716 1.945.226 2.567-.438.556-1.184.69-1.655.69H7.5v-1H13c.363 0 .717-.116.87-.31.101-.128.262-.498-.299-1.433C12.461 15.407 10.323 14 7.5 14v-1Z'/%3E%3Cpath d='M15 20h7c.471 0 1.217-.134 1.656-.69.49-.622.413-1.502-.226-2.567C22.14 14.593 19.677 13 16.5 13c-1.293 0-2.322.164-3.354.623.364.28.64.494.997.732A7.774 7.774 0 0 1 16.502 14c2.823 0 4.96 1.407 6.071 3.257.561.935.4 1.305.299 1.433-.153.194-.508.31-.87.31H16.5a1.466 1.466 0 0 1-.343.478c-.444.415-.738.522-1.157.522ZM7.5 11C8.76 11 10 9.786 10 8S8.76 5 7.5 5 5 6.214 5 8s1.24 3 2.5 3Zm0 1c1.933 0 3.5-1.79 3.5-4S9.433 4 7.5 4 4 5.79 4 8s1.567 4 3.5 4ZM17 11c.965 0 2-.97 2-2.5S17.965 6 17 6c-.965 0-2 .97-2 2.5s1.035 2.5 2 2.5Zm0 1c1.657 0 3-1.567 3-3.5S18.657 5 17 5s-3 1.567-3 3.5 1.343 3.5 3 3.5Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-back{color:var(--toolbar-icons)}.device-android .navbar i.icon.icon-edit{background-color:var(--toolbar-icons);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M0 20h22v1H0v-1zM17.1 3.1 3.5 16.7 3 20l3.3-.5L19.9 5.9zM20.5 5.3 22 3.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5 2.8 2.8z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-close{background-color:var(--text-normal);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M18.984 6.422 13.406 12l5.578 5.578-1.406 1.406L12 13.406l-5.578 5.578-1.406-1.406L10.594 12 5.016 6.422l1.406-1.406L12 10.594l5.578-5.578 1.406 1.406Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-done-disabled{background-color:var(--text-tertiary)}.device-android .navbar i.icon.icon-done,.device-android .navbar i.icon.icon-done-disabled{height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='m9 16.219 10.594-10.64L21 6.983l-12 12-5.578-5.578L4.782 12 9 16.219Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-done{background-color:var(--brand-word)}.device-android .navbar i.icon.icon-search{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M16 16.708a9 9 0 1 1 .707-.707l5.647 5.645-.708.708-5.645-5.646ZM18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-search,.device-android .navbar i.icon.icon-version-history{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-version-history{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M12 6h2v6.845l4.196 2.423-1 1.732L12 14V6Z'/%3E%3Cpath d='M22 12a9 9 0 0 1-15.364 6.364l-.708.707A9.969 9.969 0 0 0 13 22c5.523 0 10-4.477 10-10S18.523 2 13 2C7.477 2 3 6.477 3 12h1a9 9 0 0 1 18 0Z'/%3E%3Cpath d='m1.5 10.5 2 2 2-2'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-return{background-color:var(--toolbar-icons);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='m11.5 7.793 2.854 2.853-.707.708L12 9.707V16h2.5v1H11V9.707l-1.646 1.647-.708-.708L11.5 7.793Z'/%3E%3Cpath fill-rule='evenodd' d='M1 4a1 1 0 0 1 1-1h7.75l2 2H22a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4Zm1 16V4h7.25l2 2H22v14H2Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-paste{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M5 2H0v18h9v4h15V7h-5V2h-5v1h4v4H9v12H1V3h4V2Zm5 6h13v15H10V8Z' clip-rule='evenodd'/%3E%3Cpath d='M5 0h9v5H5V0Z'/%3E%3Cpath fill-rule='evenodd' d='M21 12h-9v-1h9v1ZM21 16h-9v-1h9v1ZM21 20h-9v-1h9v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-copy,i.icon.icon-paste{background-color:var(--text-normal);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-copy{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M1 1h14v6h1V0H0v17h8v-1H1V1Z'/%3E%3Cpath fill-rule='evenodd' d='M23 8H9v15h14V8ZM8 7v17h16V7H8ZM13 5H3V4h10v1ZM8 9H3V8h5v1ZM8 13H3v-1h5v1Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='M21 12H11v-1h10v1ZM21 16H11v-1h10v1ZM21 20H11v-1h10v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-cut{background-color:var(--text-normal);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill-rule='evenodd' d='M3.224 22.27c1.291.857 3.303.448 4.435-1.257 1.132-1.706.727-3.719-.564-4.575-1.291-.857-3.303-.448-4.435 1.257-1.132 1.706-.727 3.719.564 4.575Zm-.553.834c1.841 1.221 4.447.532 5.821-1.538 1.375-2.071.996-4.74-.844-5.962-1.841-1.221-4.447-.533-5.821 1.538-1.375 2.071-.996 4.74.844 5.962ZM20.916 22.27c-1.291.857-3.303.448-4.435-1.257-1.132-1.706-.727-3.719.564-4.575 1.291-.857 3.303-.448 4.435 1.257 1.132 1.706.727 3.719-.564 4.575Zm.553.834c-1.841 1.221-4.447.532-5.821-1.538-1.374-2.071-.996-4.74.844-5.962 1.841-1.221 4.447-.533 5.822 1.538 1.374 2.071.995 4.74-.845 5.962Z' clip-rule='evenodd'/%3E%3Cpath d='m16.492 15.604-2.588-3.13L19.955.676a.436.436 0 0 0-.228-.595c-.285-.092-.628 0-.742.183L12.023 11.42 5.176.264c-.115-.229-.457-.32-.742-.229-.286.092-.4.366-.286.595L10.2 12.428l-2.552 3.176L9.229 18l2.794-4.52L14.911 18l1.581-2.396Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-next:after,i.icon.icon-prev:after{content:none}i.icon.icon-collaboration{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill-rule='evenodd' clip-path='url(%23a)' clip-rule='evenodd'%3E%3Cpath d='M7.5 14c-2.823 0-4.989 1.407-6.099 3.257-.56.935-.4 1.305-.299 1.433.154.194.508.31.87.31H7.5v1H1.972c-.47 0-1.216-.134-1.655-.69-.49-.622-.412-1.502.227-2.567C1.834 14.593 4.324 13 7.5 13v1Zm0-1c3.177 0 5.639 1.593 6.929 3.743.639 1.065.716 1.945.226 2.567-.438.556-1.184.69-1.655.69H7.5v-1H13c.363 0 .717-.116.87-.31.101-.128.262-.498-.299-1.433C12.461 15.407 10.323 14 7.5 14v-1Z'/%3E%3Cpath d='M15 20h7c.471 0 1.217-.134 1.656-.69.49-.622.413-1.502-.226-2.567C22.14 14.593 19.677 13 16.5 13c-1.293 0-2.322.164-3.354.623.364.28.64.494.997.732A7.774 7.774 0 0 1 16.502 14c2.823 0 4.96 1.407 6.071 3.257.561.935.4 1.305.299 1.433-.153.194-.508.31-.87.31H16.5a1.466 1.466 0 0 1-.343.478c-.444.415-.738.522-1.157.522ZM7.5 11C8.76 11 10 9.786 10 8S8.76 5 7.5 5 5 6.214 5 8s1.24 3 2.5 3Zm0 1c1.933 0 3.5-1.79 3.5-4S9.433 4 7.5 4 4 5.79 4 8s1.567 4 3.5 4ZM17 11c.965 0 2-.97 2-2.5S17.965 6 17 6c-.965 0-2 .97-2 2.5s1.035 2.5 2 2.5Zm0 1c1.657 0 3-1.567 3-3.5S18.657 5 17 5s-3 1.567-3 3.5 1.343 3.5 3 3.5Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-cancellation{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cmask id='a' width='20' height='20' x='2' y='2' maskUnits='userSpaceOnUse' style='mask-type:alpha'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='%23c4c4c4' stroke='var(--brand-word)'/%3E%3C/mask%3E%3Cg stroke='var(--brand-word)' mask='url(%23a)'%3E%3Ccircle cx='12' cy='12' r='9.5' transform='rotate(-90 12 12)'/%3E%3Cpath d='M5.091 19.202 19.192 5.101'/%3E%3C/g%3E%3C/svg%3E");height:24px;width:24px}i.icon.icon-remove-style{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23FF3B30' fill-rule='evenodd' d='M9.333 2a1.06 1.06 0 0 0-1.066 1.053V4H4.533A.53.53 0 0 0 4 4.526c0 .291.239.527.533.527h.534l1 15.894A1.06 1.06 0 0 0 7.133 22h9.734a1.06 1.06 0 0 0 1.066-1.053L19 5h.467c.294 0 .533-.21.533-.5 0-.29-.239-.5-.533-.5h-3.734v-.947A1.06 1.06 0 0 0 14.667 2H9.333Zm5.334 2v-.947H9.333V4h5.334ZM18 5H6l.941 15.062A1 1 0 0 0 7.94 21h8.122a1 1 0 0 0 .998-.938L18 5Z' clip-rule='evenodd'/%3E%3Cpath fill='%23FF3B30' d='M8 7.002h1L9.5 19h-1L8 7.002ZM11.5 7h1v12h-1V7ZM15 7.002 16 7l-.5 12h-1L15 7.002Z'/%3E%3C/svg%3E");height:24px;width:24px}i.icon.icon-image{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M9 9a2 2 0 1 1-4 0 2 2 0 0 1 4 0ZM8 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='M2 4v16h20V4H2Zm19 1H3v11.293l3.5-3.5 2 2 6-6 6.5 6.5V5ZM3 19v-1.293l3.5-3.5 2 2 6-6 6.5 6.5V19H3Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-format-pdf{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23DB4437' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H4Zm1 8v6h1v-2h2c.5 0 1-.672 1-1.5v-1C9 9.5 8.5 9 7.679 9H5Zm1 1h1.5c.296 0 .5.224.5.5v1c0 .276-.026.5-.321.5H6v-2Zm10 5h1v-2.5h2.5v-1H17V10h3V9h-4v6Zm-5.5-6H13c1 0 1.5.5 1.5 1.5v3c0 1-.536 1.5-1.5 1.5h-2.5V9Zm2.5 1h-1.5v4H13c.5 0 .5-.5.5-.5v-3s0-.5-.5-.5Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-pdfa{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23A8A8A8' fill-rule='evenodd' d='M18 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm.275 2.815h.326l2.618 6.37H19.82l-.524-1.417h-2.602l-.52 1.418H14.78l2.604-6.371H18.275Zm-1.23 4.003h1.902l-.954-2.582-.949 2.582Z' clip-rule='evenodd'/%3E%3Cpath fill='%23DB4437' fill-rule='evenodd' d='M1 4a3 3 0 0 1 3-3h16a3 3 0 0 1 3 3v9.101a6.981 6.981 0 0 0-4.036-2.035V11h-2.678V9H19.5V8h-4.286v3.576a6.983 6.983 0 0 0-1.071.582V9.5c0-.828-.72-1.5-1.607-1.5H9.857v6h2.398A6.968 6.968 0 0 0 11 18c0 1.959.805 3.73 2.101 5H4a3 3 0 0 1-3-3V4Zm3.5 4v6h1.071v-2H7.18c.887 0 1.607-.672 1.607-1.5v-1c0-.828-.72-1.5-1.607-1.5H4.5Zm1.071 1H7.18c.295 0 .535.224.535.5v1c0 .276-.24.5-.535.5H5.57V9Zm6.965 0h-1.607v4h1.607c.296 0 .535-.224.535-.5v-3c0-.276-.24-.5-.535-.5Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-numbers-1{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.605 18.998v-6.725h-.021l-2.052 1.478V12.73l2.062-1.482h.946v7.75h-.935ZM6.58 31.482c0-.677.244-1.239.73-1.687.488-.45 1.096-.676 1.827-.676.69 0 1.276.206 1.756.617.48.412.72.915.72 1.51 0 .43-.118.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.776v.859H6.628v-.666l2.729-2.873c.52-.548.863-.964 1.031-1.247.172-.283.258-.585.258-.907 0-.373-.15-.69-.451-.951a1.585 1.585 0 0 0-1.085-.392c-.455 0-.834.145-1.139.435-.304.29-.456.652-.456 1.085v.005H6.58v-.005ZM8.208 50.42v-.816h.929c.444 0 .807-.127 1.09-.38.283-.259.424-.584.424-.978s-.13-.708-.392-.94c-.261-.233-.632-.35-1.112-.35-.444 0-.805.119-1.085.355-.279.236-.44.559-.483.967h-.93c.055-.659.309-1.184.764-1.574.458-.39 1.05-.585 1.777-.585.699 0 1.279.188 1.74.564.463.376.694.854.694 1.434 0 .483-.144.89-.43 1.219-.287.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.401.564.348.337.521.778.521 1.322 0 .433-.121.823-.365 1.17a2.39 2.39 0 0 1-.988.806c-.415.19-.875.285-1.38.285-.802 0-1.449-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.042.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.594.5-1 0-.454-.162-.814-.484-1.079-.319-.265-.755-.397-1.31-.397h-.972ZM13 17.998h1v1h-1zM13 35.998h1v1h-1zM13 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-2{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.605 18.998v-6.725h-.021l-2.052 1.478V12.73l2.062-1.482h.946v7.75h-.935Zm2.47 1.488c.122-.208.214-.37.275-.489.064-.114.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.144-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.354 3.354 0 0 0-.408-.602h.784c.168.215.31.406.424.575.115.164.246.39.393.676.15.287.27.575.36.865a8.83 8.83 0 0 1 .328 2.412c-.001 1.923-.486 3.491-1.457 4.705h-.821ZM6.58 31.482c0-.677.244-1.239.73-1.687.488-.45 1.096-.676 1.827-.676.69 0 1.276.206 1.756.617.48.412.72.915.72 1.51 0 .43-.118.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.776v.859H6.628v-.666l2.729-2.873c.52-.548.863-.964 1.031-1.247.172-.283.258-.585.258-.907 0-.373-.15-.69-.451-.951a1.585 1.585 0 0 0-1.085-.392c-.455 0-.834.145-1.139.435-.304.29-.456.652-.456 1.085v.005H6.58v-.005Zm5.85 7.004c.12-.208.212-.37.273-.489.065-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.23-.811.083-.312.144-.647.183-1.005.04-.361.06-.74.06-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.364 3.364 0 0 0-.409-.602h.785c.168.215.31.406.424.575.114.164.245.39.392.676.15.287.27.575.36.865a8.844 8.844 0 0 1 .328 2.412c0 1.923-.486 3.491-1.456 4.705h-.822ZM8.208 50.42v-.816h.929c.444 0 .807-.127 1.09-.38.283-.259.424-.584.424-.978s-.13-.708-.392-.94c-.261-.233-.632-.35-1.112-.35-.444 0-.805.119-1.085.355-.279.236-.44.559-.483.967h-.93c.055-.659.309-1.184.764-1.574.458-.39 1.05-.585 1.777-.585.699 0 1.279.188 1.74.564.463.376.694.854.694 1.434 0 .483-.144.89-.43 1.219-.287.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.401.564.348.337.521.778.521 1.322 0 .433-.121.823-.365 1.17a2.39 2.39 0 0 1-.988.806c-.415.19-.875.285-1.38.285-.802 0-1.449-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.042.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.594.5-1 0-.454-.162-.814-.484-1.079-.319-.265-.755-.397-1.31-.397h-.972Zm4.5 5.066c.122-.208.213-.37.274-.489.065-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.231-.811.082-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.364 3.364 0 0 0-.408-.602h.784c.168.215.31.406.424.575.115.164.245.39.392.676.15.287.27.575.36.865.09.29.167.647.231 1.069.065.419.097.866.097 1.343 0 1.923-.485 3.491-1.456 4.705h-.821Z'/%3E%3C/svg%3E")}i.icon.icon-numbers-3{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M7 10.998h1v8H7zM10 17.998h1v1h-1zM7 28.998h1v8H7zM10 28.998h1v8h-1zM13 35.998h1v1h-1zM7 45.998h1v8H7zM10 45.998h1v8h-1zM13 45.998h1v8h-1zM16 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-4{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='m11.79 18.998-.779-2.218H7.928l-.779 2.218H6.134l2.858-7.75h.956l2.857 7.75H11.79Zm-2.336-6.574-1.241 3.534h2.514l-1.241-3.534h-.032ZM9.776 36.998H6.752v-7.75h3.035c.662 0 1.197.177 1.606.531.411.355.617.822.617 1.402 0 .405-.13.772-.392 1.101-.258.326-.573.523-.945.591v.043c.526.068.945.274 1.257.618.315.343.472.773.472 1.289 0 .684-.232 1.217-.698 1.6-.462.383-1.105.575-1.928.575Zm-2.057-6.896v2.486h1.547c.573 0 1.01-.11 1.31-.333.304-.222.457-.542.457-.961 0-.383-.127-.677-.382-.88-.254-.209-.615-.312-1.085-.312H7.72Zm0 6.042H9.63c.583 0 1.026-.116 1.326-.35.301-.232.452-.572.452-1.02 0-.902-.623-1.353-1.87-1.353H7.72v2.723ZM9.942 54.127c-1.07 0-1.92-.36-2.55-1.08-.628-.723-.94-1.699-.94-2.927 0-1.217.316-2.188.95-2.911.634-.727 1.48-1.09 2.54-1.09.845 0 1.562.236 2.149.709.59.469.947 1.09 1.069 1.863h-.978a2.1 2.1 0 0 0-.8-1.219c-.408-.308-.888-.462-1.44-.462-.755 0-1.36.283-1.815.849-.455.566-.682 1.32-.682 2.261 0 .953.225 1.71.677 2.272.45.562 1.06.843 1.826.843.57 0 1.049-.13 1.44-.392.39-.261.655-.628.794-1.1h.978c-.18.765-.546 1.354-1.101 1.766-.555.412-1.26.618-2.117.618ZM15 17.998h1v1h-1zM15 35.998h1v1h-1zM15 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-5{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.524 18.24c.473 0 .863-.135 1.171-.407.312-.276.468-.622.468-1.037v-.467l-1.515.096c-.88.054-1.321.364-1.321.93 0 .268.107.483.322.644.218.161.51.242.875.242Zm-.198.812c-.588 0-1.06-.156-1.418-.468-.358-.311-.537-.723-.537-1.235 0-.498.186-.888.558-1.17.373-.287.91-.452 1.612-.495l1.622-.097v-.483c0-.358-.115-.634-.344-.827-.23-.193-.557-.29-.983-.29-.337 0-.621.08-.854.242-.23.16-.372.377-.43.65h-.897c.015-.488.231-.896.65-1.225.42-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36v3.974h-.886v-1.004h-.021a1.86 1.86 0 0 1-.752.773c-.337.19-.708.285-1.112.285Zm3.577 1.434c.122-.208.213-.37.274-.489.064-.114.157-.299.28-.553.124-.254.223-.496.294-.725.076-.23.153-.5.231-.811a6.85 6.85 0 0 0 .183-1.005c.04-.361.06-.74.06-1.133 0-.576-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.36-1.343 7.911 7.911 0 0 0-.425-.918 3.36 3.36 0 0 0-.408-.602h.784c.169.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.844 8.844 0 0 1 .328 2.412c0 1.923-.486 3.491-1.456 4.705h-.822ZM9.48 37.052a2.3 2.3 0 0 1-1.117-.263 1.98 1.98 0 0 1-.768-.769h-.021v.978h-.886v-8.089h.934v3.239h.022c.182-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.321.272 1.772.817.452.54.677 1.251.677 2.132 0 .884-.227 1.597-.682 2.138-.451.54-1.047.81-1.789.81Zm-.166-5.065c-.505 0-.915.197-1.23.59-.312.39-.467.9-.467 1.526 0 .63.155 1.14.467 1.53.315.391.725.586 1.23.586.508 0 .915-.191 1.22-.575.307-.383.461-.896.461-1.541 0-.64-.154-1.153-.462-1.536-.304-.387-.71-.58-1.219-.58Zm3.19 6.499c.122-.208.213-.37.274-.489.065-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.231-.811.082-.312.143-.647.183-1.005.039-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.364 3.364 0 0 0-.408-.602h.784c.168.215.31.406.424.575.115.164.245.39.392.676.15.287.27.575.36.865.09.29.167.647.231 1.069.064.419.097.866.097 1.343 0 1.923-.486 3.491-1.456 4.705h-.822ZM11.42 50.093H10.5a1.274 1.274 0 0 0-.483-.795c-.262-.207-.602-.311-1.02-.311-.51 0-.92.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.467 1.547.315.38.729.57 1.24.57.405 0 .737-.092.995-.275.26-.186.43-.453.51-.8h.918c-.079.57-.34 1.03-.784 1.38-.44.351-.988.527-1.644.527-.802 0-1.444-.265-1.928-.795-.483-.534-.725-1.252-.725-2.154 0-.888.242-1.6.725-2.138.484-.54 1.123-.81 1.918-.81.684 0 1.244.19 1.68.569.438.376.687.832.747 1.37Zm.472 5.393c.122-.208.213-.37.274-.489.064-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.23-.811.083-.312.144-.647.183-1.005.04-.361.06-.74.06-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.359 3.359 0 0 0-.409-.602h.784c.169.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.844 8.844 0 0 1 .328 2.412c0 1.923-.486 3.491-1.456 4.705h-.822Z'/%3E%3C/svg%3E")}i.icon.icon-numbers-6{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.524 18.24c.473 0 .863-.135 1.171-.407.312-.276.468-.622.468-1.037v-.467l-1.515.096c-.88.054-1.321.364-1.321.93 0 .268.107.483.322.644.218.161.51.242.875.242Zm-.198.812c-.588 0-1.06-.156-1.418-.468-.358-.311-.537-.723-.537-1.235 0-.498.186-.888.558-1.17.373-.287.91-.452 1.612-.495l1.622-.097v-.483c0-.358-.115-.634-.344-.827-.23-.193-.557-.29-.983-.29-.337 0-.621.08-.854.242-.23.16-.372.377-.43.65h-.897c.015-.488.231-.896.65-1.225.42-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36v3.974h-.886v-1.004h-.021a1.86 1.86 0 0 1-.752.773c-.337.19-.708.285-1.112.285ZM9.48 37.052a2.3 2.3 0 0 1-1.117-.263 1.98 1.98 0 0 1-.768-.769h-.021v.978h-.886v-8.089h.934v3.239h.022c.182-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.321.272 1.772.817.452.54.677 1.251.677 2.132 0 .884-.227 1.597-.682 2.138-.451.54-1.047.81-1.789.81Zm-.166-5.065c-.505 0-.915.197-1.23.59-.312.39-.467.9-.467 1.526 0 .63.155 1.14.467 1.53.315.391.725.586 1.23.586.508 0 .915-.191 1.22-.575.307-.383.461-.896.461-1.541 0-.64-.154-1.153-.462-1.536-.304-.387-.71-.58-1.219-.58ZM11.42 50.093H10.5a1.274 1.274 0 0 0-.483-.795c-.262-.207-.602-.311-1.02-.311-.51 0-.92.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.467 1.547.315.38.729.57 1.24.57.405 0 .737-.092.995-.275.26-.186.43-.453.51-.8h.918c-.079.57-.34 1.03-.784 1.38-.44.351-.988.527-1.644.527-.802 0-1.444-.265-1.928-.795-.483-.534-.725-1.252-.725-2.154 0-.888.242-1.6.725-2.138.484-.54 1.123-.81 1.918-.81.684 0 1.244.19 1.68.569.438.376.687.832.747 1.37ZM13 17.998h1v1h-1zM13 35.998h1v1h-1zM13 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-7{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M7 12.998h1v6H7zM7 10.998h1v1H7zM10 17.998h1v1h-1zM7 30.998h1v6H7zM10 30.998h1v6h-1zM10 28.998h1v1h-1zM7 28.998h1v1H7zM13 35.998h1v1h-1zM7 47.998h1v6H7zM10 47.998h1v6h-1zM13 47.998h1v6h-1zM7 45.998h1v1H7zM10 45.998h1v1h-1zM13 45.998h1v1h-1zM16 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-sharing-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill-rule='evenodd' clip-path='url(%23a)' clip-rule='evenodd'%3E%3Cpath d='M7.5 14c-2.823 0-4.989 1.407-6.099 3.257-.56.935-.4 1.305-.299 1.433.154.194.508.31.87.31H7.5v1H1.972c-.47 0-1.216-.134-1.655-.69-.49-.622-.412-1.502.227-2.567C1.834 14.593 4.324 13 7.5 13v1Zm0-1c3.177 0 5.639 1.593 6.929 3.743.639 1.065.716 1.945.226 2.567-.438.556-1.184.69-1.655.69H7.5v-1H13c.363 0 .717-.116.87-.31.101-.128.262-.498-.299-1.433C12.461 15.407 10.323 14 7.5 14v-1Z'/%3E%3Cpath d='M15 20h7c.471 0 1.217-.134 1.656-.69.49-.622.413-1.502-.226-2.567C22.14 14.593 19.677 13 16.5 13c-1.293 0-2.322.164-3.354.623.364.28.64.494.997.732A7.774 7.774 0 0 1 16.502 14c2.823 0 4.96 1.407 6.071 3.257.561.935.4 1.305.299 1.433-.153.194-.508.31-.87.31H16.5a1.466 1.466 0 0 1-.343.478c-.444.415-.738.522-1.157.522ZM7.5 11C8.76 11 10 9.786 10 8S8.76 5 7.5 5 5 6.214 5 8s1.24 3 2.5 3Zm0 1c1.933 0 3.5-1.79 3.5-4S9.433 4 7.5 4 4 5.79 4 8s1.567 4 3.5 4ZM17 11c.965 0 2-.97 2-2.5S17.965 6 17 6c-.965 0-2 .97-2 2.5s1.035 2.5 2 2.5Zm0 1c1.657 0 3-1.567 3-3.5S18.657 5 17 5s-3 1.567-3 3.5 1.343 3.5 3 3.5Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}i.icon.icon-info,i.icon.icon-sharing-settings{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-info{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M4 8v13h6v1H3V7l6-6h11v9h-1V2h-9v6H4Zm.414-1L9 2.414V7H4.414Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M17 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm-5 6a5 5 0 1 1 10 0 5 5 0 0 1-10 0Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='M16.252 14.991h1.484v1.496h-1.484v-1.496ZM16.252 17.509v3.98h1.484v-3.98h-1.484Z'/%3E%3C/svg%3E")}i.icon.icon-help{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M11.26 17h1.497v-1.5h-1.496V17ZM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2Zm0 19c-5 0-9-4-9-9s4-9 9-9 9 4 9 9-4 9-9 9Zm.392-14C10.182 7 9 8.29 9 10.5h1.5c0-1.1.588-2 1.892-2 1.303 0 1.612.618 1.608 1.5-.005 1-2.74 1.5-2.74 4.442h1.497c0-2.25 2.79-1.942 2.79-4.442 0-2.21-1.547-3-3.155-3Z'/%3E%3C/svg%3E")}i.icon.icon-about,i.icon.icon-help{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-about{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Zm0 1c5.522 0 10-4.477 10-10S17.522 2 12 2C6.477 2 2 6.477 2 12s4.477 10 10 10Z' clip-rule='evenodd'/%3E%3Cpath d='M11.253 7h1.492v1.5h-1.492V7ZM12.745 10.012V17h-1.492v-6.988h1.492Z'/%3E%3C/svg%3E")}i.icon.icon-search{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M16 16.708a9 9 0 1 1 .707-.707l5.647 5.645-.708.708-5.645-5.646ZM18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-search,i.icon.icon-version-history{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-version-history{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M12 6h2v6.845l4.196 2.423-1 1.732L12 14V6Z'/%3E%3Cpath d='M22 12a9 9 0 0 1-15.364 6.364l-.708.707A9.969 9.969 0 0 0 13 22c5.523 0 10-4.477 10-10S18.523 2 13 2C7.477 2 3 6.477 3 12h1a9 9 0 0 1 18 0Z'/%3E%3Cpath d='m1.5 10.5 2 2 2-2'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-horizontal{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M9.514 10.75h1.755L8.069 2H6.363L3.25 10.75h1.712l.66-1.988h3.194l.698 1.988ZM7.197 4.041l1.101 3.247h-2.18l1.079-3.247ZM16 2h-3.194v8.75h2.72c1.028-.008 1.677-.028 1.946-.06.429-.051.789-.189 1.08-.412.294-.226.525-.527.692-.9.17-.379.256-.767.256-1.165 0-.505-.13-.945-.392-1.319s-.637-.638-1.123-.794c.345-.17.617-.427.817-.77.204-.342.306-.718.306-1.128 0-.378-.082-.718-.246-1.02a2.162 2.162 0 0 0-.616-.734 1.93 1.93 0 0 0-.834-.358C17.103 2.03 16.632 2 16 2Zm-1.58 3.48V3.456h.926c.76 0 1.22.01 1.38.03.268.036.47.14.604.31.138.168.208.387.208.657 0 .283-.08.511-.24.686-.157.172-.373.275-.65.31-.152.02-.542.03-1.171.03h-1.058Zm0 3.796v-2.34h1.302c.734 0 1.21.042 1.428.125.222.084.391.217.507.4.117.183.175.406.175.669 0 .31-.076.559-.23.746a.973.973 0 0 1-.582.346c-.157.036-.526.054-1.107.054h-1.494Zm3.563 3.974 3.52 3.833.497.542-.498.542L17.982 22l-.994-1.084 2.317-2.524H2v-1.534h17.305l-2.317-2.524.995-1.084Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-anglecount,i.icon.icon-text-orientation-horizontal{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-text-orientation-anglecount{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M22 8.72h-5.604v1.358h3.363L8.55 20.916 9.672 22l10.925-10.856v3.286H22V8.72Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='m10.658 11.386-1.113 1.076-1.703-.79-2.025 1.958.842 1.623-1.085 1.05L2 9.028l1.082-1.046 7.576 3.403Zm-4.079-.301L3.823 9.769l1.374 2.653 1.382-1.337ZM6.085 5.08 8.11 3.12c.4-.387.718-.657.952-.81.233-.157.485-.255.756-.292a2 2 0 0 1 .856.073c.295.085.562.243.802.475.26.251.434.544.522.879.09.332.08.657-.03.973.407-.203.812-.27 1.215-.202.403.07.764.259 1.085.568.252.244.444.535.575.871.131.332.175.658.133.977-.043.315-.185.62-.424.914-.15.185-.549.595-1.196 1.23l-1.724 1.668-5.547-5.365Zm1.946-.097 1.283 1.24.67-.648c.399-.385.64-.631.724-.737.153-.191.224-.387.215-.588-.01-.205-.104-.395-.283-.568-.172-.166-.354-.257-.548-.275-.194-.023-.387.038-.58.18-.114.086-.412.362-.894.828l-.587.568Zm2.206 2.133 1.483 1.435.947-.916c.369-.357.591-.594.668-.711a.822.822 0 0 0 .15-.57c-.022-.209-.131-.408-.328-.598a1.104 1.104 0 0 0-.534-.303.92.92 0 0 0-.575.066c-.191.082-.52.348-.985.798l-.826.8Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-angleclock{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M15.28 22v-5.604h-1.358v3.363L3.084 8.55 2 9.672l10.856 10.925H9.57V22h5.71Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='m12.614 10.658-1.076-1.113.79-1.703-1.958-2.025-1.623.842-1.05-1.085L14.972 2l1.046 1.082-3.403 7.576Zm.301-4.079 1.316-2.756-2.653 1.374 1.337 1.382ZM18.92 6.085l1.96 2.025c.387.4.657.718.81.952.157.233.255.485.292.756a2 2 0 0 1-.073.856 1.905 1.905 0 0 1-.475.802c-.251.26-.544.434-.879.522a1.61 1.61 0 0 1-.973-.03c.203.407.27.812.202 1.215a2.032 2.032 0 0 1-.568 1.085 2.42 2.42 0 0 1-.871.575 1.928 1.928 0 0 1-.977.133c-.315-.043-.62-.185-.914-.424-.185-.15-.595-.549-1.23-1.196l-1.668-1.724 5.365-5.547Zm.097 1.946-1.24 1.283.648.67c.386.399.631.64.737.724.191.153.387.224.588.215.205-.01.395-.104.568-.283.166-.172.258-.354.275-.548.023-.194-.038-.387-.18-.58-.086-.114-.362-.412-.828-.894l-.568-.587Zm-2.133 2.206-1.435 1.483.916.947c.357.369.594.591.712.668a.822.822 0 0 0 .57.15c.208-.022.407-.131.597-.328.161-.166.262-.344.303-.534a.92.92 0 0 0-.066-.575c-.082-.191-.348-.52-.798-.985l-.8-.826Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-angleclock,i.icon.icon-text-orientation-vertical{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-text-orientation-vertical{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='m7.104 22.065 3.978-3.52-1.125-.995-2.62 2.318V1.938H5.745v17.93l-2.62-2.318L2 18.545l3.978 3.52.563.497.563-.497Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='M14.513 13.188h3.316c.656 0 1.145.03 1.465.089.325.056.613.175.866.358.256.183.47.428.64.734.169.303.254.643.254 1.02 0 .41-.106.787-.317 1.129a1.96 1.96 0 0 1-.849.77c.506.155.894.42 1.166.794.272.374.407.813.407 1.319 0 .398-.088.786-.266 1.164a2.308 2.308 0 0 1-.718.901c-.302.223-.675.36-1.12.412-.28.032-.953.052-2.02.06h-2.824v-8.75Zm1.675 1.456v2.023h1.098c.652 0 1.058-.01 1.216-.03.287-.035.511-.139.673-.31.166-.175.25-.404.25-.686 0-.271-.072-.49-.216-.657-.14-.171-.349-.274-.628-.31-.166-.02-.643-.03-1.431-.03h-.962Zm0 3.48v2.34h1.55c.604 0 .987-.019 1.149-.054.249-.048.45-.164.605-.347.159-.187.238-.435.238-.746 0-.262-.06-.485-.181-.668a1.028 1.028 0 0 0-.526-.4c-.227-.084-.72-.125-1.483-.125h-1.352ZM22 10.688h-1.822L19.454 8.7h-3.316l-.685 1.988h-1.776l3.23-8.75h1.772L22 10.688Zm-3.084-3.462-1.143-3.247-1.12 3.247h2.263Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-rotateup{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M5.914 2.483 2 5.895l1.107.966 2.578-2.248V22H7.25V4.613l2.577 2.248 1.108-.966L7.02 2.483 6.468 2l-.554.483Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='m21.928 12.594-.029 1.656-1.931.69-.052 3.012 1.91.59-.028 1.615-8.403-2.798.028-1.609 8.505-3.156Zm-3.393 2.857-3.154 1.09 3.119.966.035-2.056ZM13.5 11.079l.051-3.013c.01-.596.047-1.04.11-1.333.058-.296.178-.56.359-.792.18-.236.42-.434.72-.593.294-.159.624-.241.99-.247.395-.007.757.083 1.084.27.327.183.57.436.73.759.158-.462.42-.819.786-1.072a2.264 2.264 0 0 1 1.28-.39c.385-.007.758.067 1.12.223.36.151.646.364.86.638.21.27.337.608.38 1.012.027.253.036.864.027 1.834v2.704h-8.498Zm1.432-1.545 1.955-.032.017-.997c.01-.593.007-.962-.01-1.105-.03-.26-.126-.462-.289-.607-.166-.148-.386-.22-.66-.215-.26.004-.473.072-.637.205-.167.13-.27.322-.31.576-.021.15-.038.585-.05 1.301l-.016.874Zm3.362-.055 2.26-.037.025-1.409c.009-.548-.002-.896-.034-1.042a.875.875 0 0 0-.325-.545c-.179-.141-.418-.21-.717-.204-.254.004-.47.062-.649.175a.99.99 0 0 0-.395.484c-.084.207-.132.657-.144 1.35l-.02 1.228Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-rotatedown,i.icon.icon-text-orientation-rotateup{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-text-orientation-rotatedown{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='m7.021 21.517 3.914-3.412-1.107-.966-2.577 2.248V2H5.685v17.387l-2.578-2.248L2 18.105l3.914 3.412.554.483.553-.483Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='m13.468 11.406.028-1.656 1.931-.69.052-3.012-1.91-.59.028-1.615L22 6.641l-.028 1.609-8.505 3.156Zm3.392-2.857 3.155-1.09-3.12-.966-.035 2.056ZM21.896 12.921l-.052 3.013c-.01.596-.047 1.04-.11 1.333-.058.296-.178.56-.359.792-.18.236-.42.434-.719.593a2.126 2.126 0 0 1-.99.247 2.081 2.081 0 0 1-1.085-.27 1.74 1.74 0 0 1-.73-.759c-.158.462-.42.819-.785 1.072a2.264 2.264 0 0 1-1.281.39 2.706 2.706 0 0 1-1.12-.223 2.107 2.107 0 0 1-.86-.638c-.21-.27-.337-.608-.38-1.012-.027-.253-.035-.864-.026-1.834V12.92h8.497Zm-1.433 1.545-1.955.032-.017.997c-.01.593-.007.962.01 1.105.03.26.126.462.29.607.166.148.385.22.658.215.262-.004.474-.072.638-.205.167-.13.27-.322.31-.576.021-.15.038-.585.05-1.301l.016-.874Zm-3.362.055-2.26.037-.024 1.409c-.01.548.002.896.034 1.042.042.226.15.407.324.545.179.141.418.21.718.204.253-.004.47-.062.648-.175a.99.99 0 0 0 .395-.484c.084-.207.132-.657.144-1.35l.021-1.228Z'/%3E%3C/svg%3E")}.dataview .row{justify-content:space-around}.dataview ul{list-style:none;padding:0 10px}.dataview ul li{display:inline-block}.dataview .row.list:last-child li:not(.active):last-child:after{content:none}.dataview .active,.dataview .row.list:last-child li.active:last-child{position:relative;z-index:1}.dataview .active:after,.dataview .row.list:last-child li.active:last-child:after{background-color:var(--brand-word);bottom:-5px;content:"";height:22px;left:auto;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='11'/%3E%3Cpath fill='%23fff' d='M11 21a10 10 0 1 1 10-10 10 10 0 0 1-10 10Zm6.4-13.68L17.06 7a.48.48 0 0 0-.67 0l-7 6.84-2.44-2.6a.51.51 0 0 0-.59.08l-.36.34a.58.58 0 0 0 0 .65l3.19 3.35a.38.38 0 0 0 .39 0L17.4 8a.48.48 0 0 0 0-.67Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;position:absolute;right:-5px;transform:none;width:22px}.navbar .searchbar{background-color:var(--f7-navbar-bg-color)}.navbar .searchbar .buttons-row{align-self:center;display:flex}.navbar .searchbar .searchbar-bg:after{background-color:#cbcbcb;bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.navbar .searchbar-inner{justify-content:space-between}.navbar .searchbar-inner__center{align-items:center;display:flex;width:81%}.navbar .searchbar-inner__right{align-items:center;display:flex}.navbar .searchbar-expandable{transition-duration:0s}.navbar .buttons-row-replace{align-items:center;display:flex;flex-direction:column;justify-content:center;width:100%}.navbar .buttons-row-replace a{display:block;font-size:15px;height:auto;line-height:normal}.navbar .buttons-row-replace a:before{display:none}@media (max-width:550px){.navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__left{max-width:22px;min-width:22px}.navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__center{flex-direction:column}.navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__right{flex-direction:column-reverse}.navbar .searchbar-expandable.searchbar-enabled.replace{top:0}.navbar .searchbar-expandable.searchbar-enabled.replace .searchbar-inner{height:100%}.navbar .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__left{align-self:flex-start}}.device-ios .document-menu{background-color:rgba(0,0,0,.9);border-radius:8px}.device-ios .document-menu .popover-angle:after{background:rgba(0,0,0,.9)}.device-ios .document-menu .list-block{font-size:14px;white-space:pre}.device-ios .document-menu .list-block:first-child ul:before{display:none!important}.device-ios .document-menu .list-block:first-child li:first-child a{border-radius:0}.device-ios .document-menu .list-block .item-link{display:inline-block}.device-ios .document-menu .list-block .item-link.active-state,html:not(.watch-active-state) .device-ios .document-menu .list-block .item-link:active{background-color:#d9d9d9}.device-ios .document-menu .list-block .item-link.active-state .item-inner:after,html:not(.watch-active-state) .device-ios .document-menu .list-block .item-link:active .item-inner:after{background-color:initial}html.phone .device-ios .document-menu .list-block .item-link{padding:0 10px}.device-ios .document-menu .list-block .list-button{color:#ffffff;line-height:36px}.device-ios .document-menu .list-block .list-button:after{background-color:rgba(230,230,230,.9);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.device-ios .document-menu .list-block li{display:inline-flex}.device-ios .document-menu .list-block li:last-child .item-inner:after,.device-ios .document-menu .list-block li:last-child .list-button:after,.device-ios .document-menu .list-block li:last-child li:last-child .item-inner:after{display:none!important}.device-ios .document-menu .list-block li li:last-child .item-inner:after,.device-ios .document-menu .list-block li:last-child li .item-inner:after{background-color:rgba(230,230,230,.9);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.md .document-menu .popover-inner{overflow:hidden}.md .document-menu .list-block{white-space:pre}.md .document-menu .list-block ul{height:48px}.md .document-menu .list-block li{display:inline-block}.md .document-menu .list-block .list-button{color:var(--text-normal)}.document-menu{width:auto}html.phone .document-menu .list-block .list-button{padding:0 10px}.device-ios .wrap-comment{height:calc(100% - 60px)}.device-ios .add-comment-dialog .wrap-textarea,.device-ios .add-comment-popup .wrap-textarea,.device-ios .add-reply-dialog .wrap-textarea,.device-ios .add-reply-popup .wrap-textarea{height:calc(100% - 34px)}.device-ios .edit-comment-dialog .wrap-textarea,.device-ios .edit-comment-popup .wrap-textarea,.device-ios .edit-reply-dialog .wrap-textarea,.device-ios .edit-reply-popup .wrap-textarea{height:calc(100% - 52px)}.device-ios .comment-list .reply-item .item-inner:after{content:none!important}.device-ios .comment-list .reply-item:before{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:auto;position:absolute;right:auto;top:0;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;width:100%;z-index:15}.device-android .wrap-comment{height:calc(100% - 72px)}.device-android .add-comment-dialog .wrap-textarea,.device-android .add-comment-popup .wrap-textarea,.device-android .add-reply-dialog .wrap-textarea,.device-android .add-reply-popup .wrap-textarea{height:calc(100% - 41px)}.device-android .edit-comment-dialog .wrap-textarea,.device-android .edit-comment-popup .wrap-textarea,.device-android .edit-reply-dialog .wrap-textarea,.device-android .edit-reply-popup .wrap-textarea{height:calc(100% - 56px)}.device-android .comment-list .comment-header,.device-android .comment-list .reply-header,.device-android .reply-list .comment-header,.device-android .reply-list .reply-header,.device-android .wrap-comment .comment-header,.device-android .wrap-comment .reply-header{display:flex}.device-android .comment-list .comment-header .initials,.device-android .comment-list .reply-header .initials,.device-android .reply-list .comment-header .initials,.device-android .reply-list .reply-header .initials,.device-android .wrap-comment .comment-header .initials,.device-android .wrap-comment .reply-header .initials{align-items:center;border-radius:50px;color:var(--fill-white);display:flex;font-size:14px;justify-content:center;margin-right:10px}.device-android .wrap-comment .comment-header{align-items:center}.device-android .wrap-comment .comment-header .initials{height:30px;width:30px}.device-android .wrap-comment .wrap-textarea .input:not(.input-outline):after{content:none}.device-android #add-comment-dialog .dialog,.device-android #add-reply-dialog .dialog,.device-android #edit-comment-dialog .dialog,.device-android #edit-reply-dialog .dialog{--f7-dialog-text-color:#000000}.device-android #add-comment-dialog .dialog .done,.device-android #add-reply-dialog .dialog .done,.device-android #edit-comment-dialog .dialog .done,.device-android #edit-reply-dialog .dialog .done{padding-right:6px}.device-android .comment-list .item-inner:after,.device-android .comment-list li:last-child li .item-inner:after,.device-android .comment-list ul:after{content:none}.device-android .comment-list .comment-header .left{align-items:center;display:flex}.device-android .comment-list .comment-header .left .initials{font-size:18px;height:40px;width:40px}.device-android .reply-list .reply-header .left{display:flex}.device-android .reply-list .reply-header .left .initials{font-size:11px;height:24px;margin-top:5px;width:24px}.device-android #edit-comment-dialog .wrap-comment .comment-header .initials,.device-android #edit-comment-dialog .wrap-comment .reply-header .initials,.device-android #edit-reply-dialog .wrap-comment .comment-header .initials,.device-android #edit-reply-dialog .wrap-comment .reply-header .initials,.device-android .edit-comment-popup .wrap-comment .comment-header .initials,.device-android .edit-comment-popup .wrap-comment .reply-header .initials,.device-android .edit-reply-popup .wrap-comment .comment-header .initials,.device-android .edit-reply-popup .wrap-comment .reply-header .initials{height:40px;width:40px}.device-android #view-comment-popover .toolbar-bottom:after{content:none}.wrap-comment{background-color:var(--background-tertiary);padding:16px 24px 0 16px}.wrap-comment .comment-date{color:var(--text-secondary)}.wrap-comment .wrap-textarea{margin-top:6px}.wrap-comment .name{color:var(--text-normal);font-size:16px;font-weight:600}.wrap-comment .reply-date{color:var(--text-secondary)}.wrap-textarea .input{height:100%}.wrap-textarea textarea{color:var(--text-normal);font-size:14px;height:100%;margin-top:0;padding:5px 0}#add-comment-dialog .dialog,#add-reply-dialog .dialog,#edit-comment-dialog .dialog,#edit-reply-dialog .dialog{--f7-dialog-width:400px;z-index:13700}#add-comment-dialog .dialog .dialog-inner,#add-reply-dialog .dialog .dialog-inner,#edit-comment-dialog .dialog .dialog-inner,#edit-reply-dialog .dialog .dialog-inner{height:400px;padding:0}#add-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,#add-comment-dialog .dialog .dialog-inner .wrap-comment .name,#add-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,#add-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,#add-reply-dialog .dialog .dialog-inner .wrap-comment .name,#add-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .name,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .name,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date{text-align:left}#add-comment-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea,#add-reply-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea{color:var(--text-normal);width:100%}.comment-list .item-content .item-inner{padding-bottom:0;padding-right:0;padding-top:16px}.comment-list .item-content .item-inner .comment-header{display:flex;justify-content:space-between;padding-right:16px}.comment-list .item-content .item-inner .comment-header .right{display:flex;justify-content:flex-end;width:70px}.comment-list .item-content .item-inner .comment-header .right .comment-resolve{margin-right:10px}.comment-list .item-content .item-inner .reply-header{display:flex;justify-content:space-between;padding-right:16px}.comment-list .item-title{width:100%}.comment-list .user-name{color:var(--text-normal);font-size:16px;font-weight:700;line-height:22px;margin:0}.comment-list .comment-date,.comment-list .reply-date{color:var(--text-secondary);font-size:12px;line-height:18px;margin:0}.comment-list .comment-quote{border-left:1px solid var(--text-secondary);color:var(--text-secondary);font-size:14px;margin:5px 0;padding-left:10px;padding-right:16px}.comment-list .comment-text,.comment-list .reply-text{color:var(--text-normal);font-size:14px;line-height:25px;margin:0;max-width:100%;padding-right:15px;word-break:break-all}.comment-list .comment-text pre,.comment-list .reply-text pre{overflow-wrap:break-word;white-space:pre-wrap}.comment-list .reply-list{padding-left:26px}.comment-list .reply-item{padding-right:26px}.add-reply-popup,.edit-comment-popup,.edit-reply-popup{z-index:20000}#view-comment-sheet{webkit-transition:height .2s;background-color:var(--fill-white);border-top-left-radius:4px;border-top-right-radius:4px;box-shadow:0 1px 10px rgba(0,0,0,.2),0 4px 5px rgba(0,0,0,.12);height:45%;transition:height .2s}#view-comment-sheet .top{height:90%}#view-comment-sheet .swipe-container{background-color:var(--background-primary);display:flex;height:40px;justify-content:center}#view-comment-sheet .swipe-container .icon-swipe{background:var(--background-menu-divider);border-radius:2px;height:4px;margin-top:8px;width:40px}#view-comment-popover .toolbar,#view-comment-sheet .toolbar{background-color:var(--background-primary);box-shadow:0 1px 10px rgba(0,0,0,.2),0 4px 5px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.14);position:fixed}#view-comment-popover .toolbar .link,#view-comment-sheet .toolbar .link{--f7-toolbar-link-color:var(--brand-word)}#view-comment-popover .toolbar .toolbar-inner,#view-comment-sheet .toolbar .toolbar-inner{padding:0 16px}#view-comment-popover .toolbar .btn-add-reply,#view-comment-sheet .toolbar .btn-add-reply{font-size:16px;min-width:80px;padding:0}#view-comment-popover .toolbar .comment-navigation,#view-comment-sheet .toolbar .comment-navigation{display:flex;justify-content:space-between;min-width:62px}#view-comment-popover .toolbar .comment-navigation .link,#view-comment-sheet .toolbar .comment-navigation .link{padding:0 12px}#view-comment-popover{background-color:var(--background-primary)}#view-comment-popover .pages{position:absolute}#view-comment-popover .page,#view-comment-popover .page .page-content{border-radius:var(--f7-popover-border-radius)}#view-comment-popover .page .page-content{padding:16px 16px 60px 0}#view-comment-popover .comment-list .item-content .item-inner .comment-header,#view-comment-popover .comment-list .item-content .item-inner .reply-header{padding-right:0}#view-comment-popover .toolbar{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);position:absolute}.page-current-comment{position:relative}.page-current-comment .page-content{background-color:var(--background-primary)}.page-current-comment .comment-list ul:after,.page-current-comment .comment-list ul:before{content:none}.page-current-comment .comment-list ul .item-content .item-inner{padding-top:0}.page-current-comment .comment-list ul .item-content .item-inner .reply-list .item-content .item-inner{padding-top:13px}.dialog.modal-in{max-height:100%;overflow:auto;z-index:14000}.dialog.modal-in .item-content .item-input-wrap:after{background-color:var(--brand-word)}.dialog-backdrop.backdrop-in{z-index:13600}.no-comments{color:var(--text-normal);margin-top:35px;text-align:center}.actions-modal.modal-in{z-index:13700}.actions-modal.modal-in .actions-group:after{background-color:var(--background-menu-divider)}.actions-backdrop.backdrop-in{z-index:13600}.device-android #editor-navbar.navbar .right{padding-right:4px}.device-android #editor-navbar.navbar .left a.link,.device-android #editor-navbar.navbar .right a.link{align-items:center;box-sizing:border-box;justify-content:space-between;padding:0 13px;width:auto}.device-android .page-review .header-change{display:flex}.device-android .page-review .toolbar{height:56px}.device-android .page-review .toolbar .toolbar-inner{padding:0 15px}.device-android .page-review .toolbar .toolbar-inner .link{font-size:14px;font-weight:500;padding:0;text-transform:uppercase}.device-android .page-review .initials{align-items:center;border-radius:50px;color:#ffffff;display:flex;font-size:18px;height:40px;justify-content:center;margin-right:16px;width:40px}.device-android .content-block.stepper-block{display:flex;justify-content:center;margin:25px 0 0}.device-android .content-block.stepper-block .stepper{--f7-touch-ripple-color:none}.device-android .content-block.stepper-block .stepper-button,.device-android .content-block.stepper-block .stepper-button-minus,.device-android .content-block.stepper-block .stepper-button-plus{border:none;border-radius:0}.device-android .content-block.stepper-block .stepper-button-minus:after,.device-android .content-block.stepper-block .stepper-button-minus:before,.device-android .content-block.stepper-block .stepper-button-plus:after,.device-android .content-block.stepper-block .stepper-button-plus:before,.device-android .content-block.stepper-block .stepper-button:after,.device-android .content-block.stepper-block .stepper-button:before{display:none}.device-android .content-block.stepper-block .stepper-button-minus.active-state,.device-android .content-block.stepper-block .stepper-button-plus.active-state{background-color:var(--f7-list-link-pressed-bg-color)}.device-android .content-block.stepper-block .stepper-input-wrap{border:none}.device-android .content-block.stepper-block .stepper-input-wrap input{color:var(--text-normal);font-size:16px;font-weight:var(--f7-list-item-after-line-height);width:40px}.device-android .navigation-sheet{border-radius:4px 4px 0 0}.device-android .navigation-sheet__title{align-items:center;background:var(--background-primary);display:flex;padding-bottom:15px;padding-left:16px}.device-android .navigation-sheet__title p{color:var(--text-normal);font-size:20px;font-style:normal;font-weight:500;line-height:23px;margin:0}.device-android .snackbar{background:#333333;border-radius:4px;bottom:16px;left:calc(50% - 172px);position:absolute;width:344px;z-index:1000000}.device-android .snackbar__content{padding:14px 16px}.device-android .snackbar__text{color:var(--fill-white);font-size:14px;font-style:normal;font-weight:400;letter-spacing:.25px;line-height:20px;margin:0;text-align:center}@media (max-width:450px){.device-android .snackbar{bottom:8px;left:16px;max-width:100%;right:16px;width:auto}.device-android .snackbar__text{text-align:left}}.device-android .password-field__wrap{display:flex;justify-content:space-between;position:relative}.device-android .password-field__icon{min-height:24px;min-width:24px}.device-android .password-field__input{-webkit-appearance:none;appearance:none;background-color:var(--f7-input-bg-color,transparent);background:none;border:none;border-radius:0;box-shadow:none;box-sizing:border-box;color:var(--f7-input-text-color);display:block;font-family:inherit;font-size:var(--f7-input-font-size);height:var(--f7-input-height);margin:0;outline:0;padding:0;resize:none;width:100%}.ios .content-block.stepper-block{margin:20px 0}.ios .content-block.stepper-block .stepper.stepper-large{border-radius:var(--f7-button-border-radius);box-shadow:var(--f7-button-box-shadow);height:35px}.ios .content-block.stepper-block .stepper-button-minus,.ios .content-block.stepper-block .stepper-button-plus{border:1px solid #446995;color:#446995}.ios .content-block.stepper-block .stepper-button-minus:after,.ios .content-block.stepper-block .stepper-button-minus:before,.ios .content-block.stepper-block .stepper-button-plus:after,.ios .content-block.stepper-block .stepper-button-plus:before{display:none}.ios .content-block.stepper-block .stepper-button-minus.active-state,.ios .content-block.stepper-block .stepper-button-plus.active-state{background-color:var(--f7-list-link-pressed-bg-color)}.ios .content-block.stepper-block .stepper-input-wrap{border-bottom:1px solid #446995;border-top:1px solid #446995}.ios .content-block.stepper-block .stepper-input-wrap input{color:var(--text-normal);font-size:17px;font-weight:var(--f7-list-item-after-line-height)}.ios .navigation-sheet{border-radius:10px 10px 0 0}.ios .navigation-sheet__title{align-items:center;background:var(--background-primary);display:flex;justify-content:center;padding-bottom:10px}.ios .navigation-sheet__title p{color:var(--text-normal);font-size:17px;font-style:normal;font-weight:600;line-height:22px;margin:0;text-align:center}.ios .custom-option-wrapper{padding:11px 16px}.ios .custom-option-wrapper .wrap-textarea{padding:0}.ios .back-reader-mode{margin-left:10px}.ios .snackbar{background:rgba(0,0,0,.9);border-radius:4px;bottom:24px;left:calc(50% - 97.5px);position:absolute;width:195px;z-index:1000000}.ios .snackbar__content{padding:15px 16.5px}.ios .snackbar__text{color:var(--fill-white);font-size:13px;font-style:normal;font-weight:400;letter-spacing:-.078px;line-height:18px;margin:0;text-align:center}@media (max-width:450px){.ios .snackbar{bottom:50px}}.device-ios i.icon.icon-undo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M22 16v2h-1v-2c0-2.9-2.1-5-5-5H1.9L5 14c.1.1.1.2 0 .3l-.4.4c-.1.1-.2.1-.3 0L.1 10.5c-.1-.1-.1-.2 0-.3l.4-.4h.1L4.4 6c.1-.1.2-.1.3 0l.5.4c.1.1.1.2 0 .3L1.9 10H16c3.3 0 6 2.7 6 6z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-redo,.device-ios i.icon.icon-undo{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-redo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M0 16c0-3.3 2.7-6 6-6h14.1l-3.3-3.3c-.1-.1-.1-.2 0-.3l.5-.4c.1-.1.2-.1.3 0l3.8 3.8h.1l.4.4c.1.1.1.2 0 .3l-4.2 4.2c-.1.1-.2.1-.3 0l-.4-.4c-.1-.1-.1-.2 0-.3l3.1-3H6c-2.9 0-5 2.1-5 5v2H0v-2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-edit-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath fill-rule='evenodd' d='M8 1 3 15h1.2l1.777-5h5.046l.616 1.733.88-.88L9 1zm.5 1.9L10.668 9H6.332z' clip-rule='evenodd'/%3E%3Cpath d='m18.3 11.3-9.2 9.1-1.5-1.5 9.2-9.1-.7-.7-9.6 9.6L6 22l3.3-.5 9.6-9.6zm1.2 0L21 9.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-edit-settings,.device-ios i.icon.icon-plus{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-plus{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M22 12H12v10h-1V12H1v-1h10V1h1v10h10v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-settings{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='m11.8 3 .4 2c.1.7.6 1.1 1.3 1.1.3 0 .5-.1.7-.2l1.9-1.2 1.1 1.1-1.1 1.8c-.3.4-.3.9-.1 1.3.2.4.5.7 1 .8l2.1.5v1.6l-2.1.4c-.5.1-.8.4-1 .8-.2.4-.1.9.1 1.2l1.2 1.9-1.1 1.1-1.8-1.1c-.2-.2-.5-.2-.8-.2-.6 0-1.2.5-1.3 1.1l-.5 2.1h-1.6l-.4-2c-.1-.7-.6-1.1-1.3-1.1-.3 0-.5.1-.7.2l-1.9 1.2-1.1-1.1 1.1-1.8c.3-.4.3-.9.1-1.3-.2-.4-.5-.7-1-.8l-2.1-.5v-1.6l2-.4c.5-.1.8-.4 1-.8.2-.4.1-.9-.1-1.2l-1-2 1.1-1.1 1.8 1.1c.3.2.5.3.8.3.6 0 1.2-.5 1.3-1.1l.5-2.1h1.5M11 15.5c2.5 0 4.5-2 4.5-4.5s-2-4.5-4.5-4.5-4.5 2-4.5 4.5 2 4.5 4.5 4.5M12.1 2H9.9c-.3 0-.5.2-.6.5l-.5 2.4c0 .2-.2.3-.3.3s-.1 0-.2-.1L6.2 3.8c-.1-.1-.2-.1-.4-.1-.1 0-.3 0-.4.1L3.8 5.4c-.1.2-.2.5 0 .8l1.3 2.1c.1.2.1.4-.2.5l-2.4.5c-.3.1-.5.3-.5.6v2.2c0 .3.2.5.5.6l2.4.5c.3.1.4.3.2.5l-1.3 2.1c-.2.2-.1.6.1.8l1.6 1.6c.1.1.3.2.4.2s.2 0 .3-.1L8.3 17c.1-.1.1-.1.2-.1s.3.1.3.3l.5 2.3c.1.3.3.5.6.5h2.2c.3 0 .5-.2.6-.5l.5-2.4c0-.2.1-.3.3-.3.1 0 .1 0 .2.1l2.1 1.3c.1.1.2.1.3.1.2 0 .3-.1.4-.2l1.6-1.6c.2-.2.2-.5.1-.8l-1.3-2.1c-.2-.2-.1-.5.2-.5l2.4-.5c.3-.1.5-.3.5-.6V9.8c0-.3-.2-.5-.5-.6l-2.4-.5c-.3-.1-.4-.3-.2-.5l1.3-2.1c.2-.2.1-.6-.1-.8l-1.6-1.6c-.1-.1-.3-.2-.4-.2-.1 0-.2 0-.3.1l-2.1 1.3c-.1.1-.1.1-.2.1s-.3-.1-.3-.3l-.5-2.2c-.1-.3-.3-.5-.6-.5zM11 14.5c-1.9 0-3.5-1.6-3.5-3.5S9.1 7.5 11 7.5s3.5 1.6 3.5 3.5-1.6 3.5-3.5 3.5z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-expand-down{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='m20.5 6.5 1.1 1.1L11 18 .5 7.5l1.1-1.1 9.5 9.5 9.4-9.4z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-expand-down,.device-ios i.icon.icon-spellcheck{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-spellcheck{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cg fill-rule='evenodd' clip-rule='evenodd'%3E%3Cpath d='M8 1 3 15h1.2l1.777-5h5.046l.654 1.84a6.03 6.03 0 0 1 .916-.78L9 1H8Zm.5 1.9L10.668 9H6.332L8.5 2.9ZM16 21a5 5 0 1 0 0-10 5 5 0 0 0 0 10Zm-.646-2.646 4-4-.708-.708L15 17.293l-1.646-1.647-.708.708 2 2 .354.353.354-.353Z'/%3E%3C/g%3E%3C/svg%3E")}.device-ios i.icon.icon-reader{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M17 21H1V9h6V2h10v5h1V1H6.2L0 7.6V22h18v-3h-1v2zM6 2.8V8H1.1L6 2.8zM13 8c-5.1 0-9 5-9 5s4.1 5 9 5c5 0 9-5 9-5s-4-5-9-5zm-4.3 7.5C6.8 14.4 6.4 13 6.4 13s.4-1.5 2.4-2.6C8.3 11.2 8 12 8 13c0 .9.3 1.8.7 2.5zm4.3 1.2c-2.1 0-3.7-1.7-3.7-3.7 0-2.1 1.7-3.7 3.7-3.7 2.1 0 3.7 1.7 3.7 3.7 0 2.1-1.6 3.7-3.7 3.7zm4.3-1.2c.4-.7.7-1.6.7-2.5 0-1-.3-1.8-.7-2.6 2 1.1 3.4 2.6 3.4 2.6s-1.5 1.4-3.4 2.5zM13 11.7c-.7 0-1.3.6-1.3 1.3s.6 1.3 1.3 1.3 1.3-.6 1.3-1.3-.6-1.3-1.3-1.3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-doc-setup,.device-ios i.icon.icon-reader{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-doc-setup{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='-4 6 22 22'%3E%3Cpath d='M15 27H-1V15h6V8h10v19zm1-20H4.2L-2 13.6V28h18V7zM4 8.8V14H-.9L4 8.8z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-app-settings{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M7 14h9a4 4 0 0 1 0 8H7a4 4 0 0 1 0-8Zm9-1a5 5 0 0 1 0 10H7a5 5 0 0 1 0-10h9Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M16 20a2 2 0 1 1 0-4 2 2 0 0 1 0 4Zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6ZM16 3H7a4 4 0 1 0 0 8h9a4 4 0 0 0 0-8ZM7 2a5 5 0 0 0 0 10h9a5 5 0 0 0 0-10H7Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M7 9a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm0 1a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-download{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M12 0h-1v14l-3.6-3.7-.7.8 4.8 4.9 4.8-4.9-.7-.8L12 14V0Z'/%3E%3Cpath d='M14 5v1h5v14H4V6h5V5H3v16h17V5h-6Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-download,.device-ios i.icon.icon-print{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-print{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath fill-rule='evenodd' d='M5 1h12v5h4v11h-4v4H5v-4H1V6h4V1Zm1 5h10V2H6v4ZM5 16v-3H2v3h3Zm-3-4h18V7H2v5Zm18 1h-3v3h3v-3Zm-4 0H6v7h10v-7Zm-2 3H8v-1h6v1Zm0 2H8v-1h6v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-navigation{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M16 4H2v1h14V4ZM19 9H5v1h14V9ZM23 14v1H9v-1h14ZM16 20v-1H2v1h14Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-feedback,.device-ios i.icon.icon-navigation{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-feedback{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill-rule='evenodd' d='M21 6H3v12h18V6ZM3 5a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H3Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m2.666 6.372.668-.744 8.666 7.7 8.666-7.7.668.744-9.334 8.3-9.334-8.3Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m9.376 11.33-6 7-.752-.66 6-7 .752.66ZM15.376 10.67l6 7-.752.66-6-7 .752-.66Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-additional{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M18.5 15.5c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 3c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1zm0-11c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0-3c.6 0 1 .4 1 1s-.4 1-1 1-1-.4-1-1 .4-1 1-1zm0 5c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 3c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1zM6.9 3.8 1 18.9h1.5l1.8-4.7h6.9l1.7 4.7h1.5L8.6 3.8H6.9zm-2.2 9.1 3-7.9 3 7.9h-6z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-bullets,.device-ios i.icon.icon-text-additional{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-bullets{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M7 4v1h15V4H7zM1 6h3V3H1v3zm6 6h15v-1H7v1zm-6 1h3v-3H1v3zm6 6h15v-1H7v1zm-6 1h3v-3H1v3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-numbers{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M7 3.8v1h15v-1H7zm0 8h15v-1H7v1zm0 7h15v-1H7v1zM3.1 6.9h.7V2h-.5c-.1.4-.2.6-.4.7-.2.1-.5.2-.9.2v.5h1.2v3.5zM3.3 9c-.7 0-1.2.2-1.4.7-.2.3-.2.6-.2 1h.6c0-.3.1-.5.1-.7.2-.3.5-.5.9-.5.3 0 .5.1.7.3s.3.4.3.7c0 .2-.1.5-.3.7-.1.1-.3.3-.6.4l-.7.4c-.4.3-.7.5-.9.9-.2.3-.2.7-.3 1.1h3.4v-.6H2.2c.1-.2.2-.5.4-.7.1-.1.3-.2.5-.4l.5-.3c.4-.2.7-.4.9-.6.3-.3.4-.6.4-1s-.1-.7-.4-1c-.2-.3-.6-.4-1.2-.4zm.8 9.3c.2-.1.3-.2.4-.3.2-.2.2-.4.2-.7 0-.4-.1-.7-.4-1-.3-.2-.7-.3-1.2-.3-.6 0-1.1.2-1.3.7-.1.3-.2.6-.2.9h.6c0-.3.1-.5.1-.6.2-.3.4-.4.9-.4.2 0 .4.1.6.2.2.1.3.2.3.5s-.1.6-.4.7c-.1.1-.3.1-.6.1H2.8v.5H3c.4 0 .7.1.9.2.2.1.3.4.3.7 0 .3-.1.5-.3.7-.2.2-.5.3-.8.3-.4 0-.7-.1-.9-.4-.1-.1-.2-.4-.2-.7h-.5c0 .5.1.8.4 1.2.2.2.6.4 1.2.4s1-.1 1.3-.4c.3-.3.5-.7.5-1.1 0-.3-.1-.5-.2-.7-.2-.3-.4-.5-.6-.5z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-linespacing,.device-ios i.icon.icon-numbers{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-linespacing{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M22 4V3H1v1h10v.3L8 7.4l.7.7L11 5.7v11.6l-2.3-2.4-.7.7 3 3.1v.3H1v1h21v-1H12v-.4l3-3-.7-.7-2.3 2.3V5.8l2.3 2.3.7-.7-3-3V4z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-color{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='m8.9 12 2.3-6.3 2.2 6.3H8.9zm-4.2 5.8h2l1.6-4.3h5.6l1.5 4.3h2.1L12.3 3.5h-2.2L4.7 17.8z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-color,.device-ios i.icon.icon-text-selection{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-selection{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M7.6 10.3c.2.3.4.4.5.5.3.2.6.3 1 .3.7 0 1.3-.3 1.7-.8.4-.5.6-1.2.6-2.1 0-.9-.2-1.5-.6-2-.4-.4-.9-.7-1.6-.7-.3 0-.6.1-.9.2l-.7.7V3.8h-.8V11h.8v-.7zM8 6.9c.3-.3.7-.4 1.1-.4.5 0 .8.2 1 .5.2.4.4.8.4 1.4 0 .6-.1 1.1-.4 1.5-.2.4-.6.6-1.1.6-.6 0-1.1-.3-1.3-.9-.1-.4-.1-.8-.1-1.3 0-.6.1-1.1.4-1.4zm-2.3 3.5c-.1 0-.2 0-.2-.1s-.1-.1-.1-.2v-3c0-.5-.2-.9-.6-1.1-.4-.2-.8-.4-1.5-.4-.5 0-1 .1-1.4.4-.4.3-.6.7-.6 1.4h.8c0-.3.1-.5.2-.6.2-.2.5-.4 1-.4.4 0 .7.1.9.2.2.1.3.4.3.7 0 .1 0 .3-.1.3 0 .1-.1.2-.3.2L2.7 8c-.5.1-.9.2-1.2.5-.3.3-.5.6-.5 1.1 0 .4.2.8.5 1.1.3.3.7.4 1.2.4.4 0 .8-.1 1.1-.3.3-.2.6-.4.8-.6 0 .2.1.4.2.5.1.2.4.3.7.3h.3c.1 0 .2 0 .3-.1v-.6h-.2c-.1.1-.2.1-.2.1zM4.5 9.1c0 .5-.2.9-.7 1.2-.3.1-.6.2-.9.2-.3 0-.5-.1-.7-.2-.2-.2-.2-.4-.2-.7 0-.3.1-.6.4-.7.2-.1.4-.2.7-.2l.5-.1c.2 0 .3-.1.5-.1s.3-.1.4-.2v.8zm14-4.1L8.3 15.3l-.5 2c-.6.4-1.3.3-1.5.6-.3.4.9.4 1.5.3.4 0 .5 0 .5-.2l2.2-.6L20.7 7.1 18.5 5zM9 15.3l9.5-9.5L20 7.1l-9.5 9.5L9 15.3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm14 4H1v1h14V7zM1 12h21v-1H1v1zm14 3H1v1h14v-1zM1 20h21v-1H1v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-left,.device-ios i.icon.icon-text-align-right{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-align-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm7 5h14V7H8v1zm14 3H1v1h21v-1zM8 16h14v-1H8v1zm14 3H1v1h21v-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm3 4v1h14V7H4zm-3 5h21v-1H1v1zm3 3v1h14v-1H4zm-3 5h21v-1H1v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-center,.device-ios i.icon.icon-text-align-just{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-align-just{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm0 5h21V7H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-de-indent{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 20v-1h21v1H1zm10-5h11v1H11v-1zm0-4h11v1H11v-1zm0-4h11v1H11V7zM6.3 7l.7.7-3.8 3.8L7 15.3l-.7.7L2 11.8l-.2-.3.2-.3L6.3 7zM1 3h21v1H1V3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-de-indent,.device-ios i.icon.icon-in-indent{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-in-indent{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 20v-1h21v1H1zm11-4H1v-1h11v1zm0-4H1v-1h11v1zm0-4H1V7h11v1zm9 3.2.2.3-.2.3-4.3 4.2-.7-.7 3.8-3.8L16 7.7l.7-.7 4.3 4.2zM22 4H1V3h21v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-add-column-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M15 19H7v-4H0V2h22v17h-7zm0-1h6v-3h-6v3zm0-4h6v-3h-6v3zm-7 4h6v-3H8v3zm0-4h6v-3H8v3zm6-4V7H8v3h6zM8 3v3h6V3H8zm13 0h-6v3h6V3zm-6 4v3h6V7h-6zM3 16h1v2h2v1H4v2H3v-2H1v-1h2v-2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-add-column-left,.device-ios i.icon.icon-table-add-column-right{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-table-add-column-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M0 19V2h22v13h-7v4H0zm7-4H1v3h6v-3zm0-4H1v3h6v-3zm7 4H8v3h6v-3zm0-4H8v3h6v-3zm0-1V7H8v3h6zM8 3v3h6V3H8zM1 6h6V3H1v3zm0 1v3h6V7H1zm18 11h2v1h-2v2h-1v-2h-2v-1h2v-2h1v2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-add-row-above{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M21 20H0V1h15v6h7v13h-1zM7 8H1v3h6V8zm0 4H1v3h6v-3zm0 4H1v3h6v-3zm1 3h6v-3H8v3zm0-4h6v-3H8v3zm0-4h6V8H8v3zm13-3h-6v3h6V8zm0 4h-6v3h6v-3zm0 4h-6v3h6v-3zM19 6h-1V4h-2V3h2V1h1v2h2v1h-2v2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-add-row-above,.device-ios i.icon.icon-table-add-row-below{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-table-add-row-below{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M22 1v13h-7v6H0V1h22zM7 10H1v3h6v-3zm0-4H1v3h6V6zm0-4H1v3h6V2zm1 3h6V2H8v3zm0 4h6V6H8v3zm0 4h6v-3H8v3zm13-3h-6v3h6v-3zm0-4h-6v3h6V6zm0-4h-6v3h6V2zm-2 15h2v1h-2v2h-1v-2h-2v-1h2v-2h1v2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-remove-column{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M21 19h-8.6c-.9 1.8-2.7 3-4.9 3s-4-1.2-4.9-3H0V2h22v17h-1zM7.5 12C5 12 3 14 3 16.5S5 21 7.5 21s4.5-2 4.5-4.5S10 12 7.5 12zM14 3H8v3h6V3zm0 4H8v3h6V7zm0 4H8v.1c1.9.2 3.5 1.3 4.4 2.9H14v-3zm0 4h-1.2c.1.5.2 1 .2 1.5s-.1 1-.2 1.5H14v-3zm7-12h-6v3h6V3zm0 4h-6v3h6V7zm0 4h-6v3h6v-3zm0 4h-6v3h6v-3zM9.6 19.3l-2.1-2.1-2.1 2.1-.7-.7 2.1-2.1-2.1-2.1.7-.7 2.1 2.1 2.1-2.1.7.7-2.1 2.1 2.1 2.1-.7.7z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-remove-column,.device-ios i.icon.icon-table-remove-row{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-table-remove-row{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M21 19h-8.6c-.9 1.8-2.7 3-4.9 3s-4-1.2-4.9-3H0V2h22v17h-1zM1 18h1.2c-.1-.5-.2-1-.2-1.5s.1-1 .2-1.5H1v3zM7 3H1v3h6V3zm0 4H1v3h6V7zm.5 5C5 12 3 14 3 16.5S5 21 7.5 21s4.5-2 4.5-4.5S10 12 7.5 12zM14 3H8v3h6V3zm0 4H8v3h6V7zm0 8h-1.2c.1.5.2 1 .2 1.5s-.1 1-.2 1.5H14v-3zm7-12h-6v3h6V3zm0 4h-6v3h6V7zm0 8h-6v3h6v-3zM9.6 19.3l-2.1-2.1-2.1 2.1-.7-.7 2.1-2.1-2.1-2.1.7-.7 2.1 2.1 2.1-2.1.7.7-2.1 2.1 2.1 2.1-.7.7z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-all{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-all,.device-ios i.icon.icon-table-borders-none{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-none{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z' opacity='.3'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-inner{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M26 13H14V1h-1v12H1v1h12v12h1V14h12v-1z'/%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-inner,.device-ios i.icon.icon-table-borders-outer{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-outer{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h1v27H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-center,.device-ios i.icon.icon-table-borders-left{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M13 0h1v27h-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M26 0h1v27h-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-right,.device-ios i.icon.icon-table-borders-top{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h27v1H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 13h27v1H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-bottom,.device-ios i.icon.icon-table-borders-middle{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-bottom{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 26h27v1H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-backward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h17v17H1z' opacity='.3'/%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-backward,.device-ios i.icon.icon-move-forward{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-move-forward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z' opacity='.3'/%3E%3Cpath d='M1 1h17v17H1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-background,.device-ios i.icon.icon-move-mask{background-color:var(--brand-word);height:28px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M8 8h13v13H8z' opacity='.3'/%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-move-foreground{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z' opacity='.3'/%3E%3Cpath d='M8 8h13v13H8z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-foreground,.device-ios i.icon.icon-wrap-inline{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-wrap-inline{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M0 1h26v1H0zM0 4h26v1H0zM0 25h26v1H0zM0 22h26v1H0zM0 7h5v1H0zM20 19h6v1h-6zM16.08 8.31c-1.69 1-2.82 3.91-2.82 3.91s-.19.06-.07-.22a.33.33 0 0 0 0-.45l.78-1.9a.45.45 0 0 0 .03-.17.26.26 0 0 0 0-.23.24.24 0 0 0-.14.18.49.49 0 0 0 0 .19l-.78 1.9a.17.17 0 0 0-.11 0 .25.25 0 0 1-.11 0l-.78-1.9a.47.47 0 0 0 0-.19.24.24 0 0 0-.14-.18.26.26 0 0 0 0 .23.45.45 0 0 0 .1.17l.78 1.91a.32.32 0 0 0-.05.44c.12.29-.07.22-.07.22s-1.13-2.93-2.82-3.91-3.55-2-3.8-.53.23 1.42.37 2 .28 2.34.76 2.75a6.19 6.19 0 0 0 2.41.47s-2.17 1.24-2.14 2 .62 4.86 1.83 4.92 2-1.87 2.34-2.78a26.9 26.9 0 0 1 .93-2.84 8.39 8.39 0 0 1 .14 1.51c.11.3.25.26.25.26s.14 0 .25-.26a8.39 8.39 0 0 1 .14-1.51 26.73 26.73 0 0 1 .93 2.84c.34.92 1.13 2.84 2.34 2.78s1.8-4.18 1.83-4.92-2.14-2-2.14-2a6.19 6.19 0 0 0 2.42-.44c.48-.41.62-2.13.76-2.75s.62-.62.37-2-2.1-.48-3.79.5Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-wrap-square{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M0 1h26v1H0zM0 4h26v1H0zM0 25h26v1H0zM0 22h26v1H0zM0 7h5v1H0zM0 10h5v1H0zM0 13h5v1H0zM0 16h5v1H0zM0 19h5v1H0zM21 19h5v1h-5zM21 16h5v1h-5zM21 13h5v1h-5zM21 10h5v1h-5zM21 7h5v1h-5zM16.08 8.33c-1.69 1-2.82 3.91-2.82 3.91s-.19.06-.07-.22a.33.33 0 0 0 0-.45l.78-1.9A.45.45 0 0 0 14 9.5a.26.26 0 0 0 0-.23.24.24 0 0 0-.14.18.49.49 0 0 0 0 .19l-.78 1.9a.17.17 0 0 0-.11 0 .25.25 0 0 1-.11 0l-.78-1.9a.47.47 0 0 0 0-.19.24.24 0 0 0-.14-.18.26.26 0 0 0 0 .23.45.45 0 0 0 .1.17l.78 1.91a.32.32 0 0 0-.05.44c.12.29-.07.22-.07.22S11.57 9.3 9.88 8.33s-3.55-2-3.8-.53.23 1.42.37 2 .28 2.34.76 2.75a6.19 6.19 0 0 0 2.41.45s-2.17 1.24-2.14 2 .62 4.86 1.83 4.92 2-1.87 2.34-2.78a26.9 26.9 0 0 1 .93-2.84 8.39 8.39 0 0 1 .14 1.51c.11.3.25.26.25.26s.14 0 .25-.26a8.39 8.39 0 0 1 .14-1.51 26.73 26.73 0 0 1 .93 2.84c.34.92 1.13 2.84 2.34 2.78s1.8-4.18 1.83-4.92-2.14-2-2.14-2a6.19 6.19 0 0 0 2.42-.44c.48-.41.62-2.13.76-2.75s.62-.62.37-2-2.1-.46-3.79.52Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-wrap-square,.device-ios i.icon.icon-wrap-tight{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-wrap-tight{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M0 1h26v1H0zM0 4h26v1H0zM0 25h26v1H0zM0 22h26v1H0zM0 7h5v1H0zM0 10h5v1H0zM0 13h6v1H0zM0 16h6v1H0zM0 19h7v1H0zM19 19h7v1h-7zM12 19h2v1h-2zM20 16h6v1h-6zM20 13h6v1h-6zM21 10h5v1h-5zM21 7h5v1h-5zM11 7h4v1h-4z'/%3E%3Cpath d='M16.07 8.3c-1.69 1-2.82 3.91-2.82 3.91s-.19.06-.07-.22a.33.33 0 0 0 0-.45l.78-1.9a.45.45 0 0 0 .04-.17.26.26 0 0 0 0-.23.24.24 0 0 0-.14.18.49.49 0 0 0 0 .19l-.78 1.9a.17.17 0 0 0-.11 0 .25.25 0 0 1-.11 0l-.78-1.9a.47.47 0 0 0 0-.19.24.24 0 0 0-.14-.18.26.26 0 0 0 0 .23.45.45 0 0 0 .1.17l.78 1.91a.32.32 0 0 0-.05.44c.12.29-.07.22-.07.22S11.56 9.28 9.87 8.3s-3.55-2-3.8-.53.23 1.42.37 2 .28 2.34.76 2.76a6.17 6.17 0 0 0 2.42.47s-2.17 1.25-2.14 2 .62 4.86 1.83 4.92 2-1.87 2.34-2.79a27 27 0 0 1 .93-2.85 8.41 8.41 0 0 1 .14 1.51c.11.3.25.26.25.26s.14 0 .25-.26a8.41 8.41 0 0 1 .14-1.51 26.81 26.81 0 0 1 .93 2.85c.34.92 1.13 2.85 2.34 2.79s1.8-4.18 1.83-4.92-2.14-2-2.14-2a6.17 6.17 0 0 0 2.42-.44c.48-.42.62-2.13.76-2.76s.62-.62.37-2-2.11-.48-3.8.5Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-wrap-through{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M0 1h26v1H0zM0 4h26v1H0zM0 25h26v1H0zM0 22h26v1H0zM0 7h5v1H0zM0 10h5v1H0zM0 13h6v1H0zM0 16h6v1H0zM0 19h7v1H0zM19 19h7v1h-7zM20 16h6v1h-6zM20 13h6v1h-6zM21 10h5v1h-5zM21 7h5v1h-5zM16.09 8.31c-1.68 1-2.8 3.93-2.8 3.93s-.19.06-.07-.22a.33.33 0 0 0 0-.45l.77-1.91a.46.46 0 0 0 .01-.17.26.26 0 0 0 0-.23.24.24 0 0 0-.14.18.49.49 0 0 0 0 .2l-.77 1.91a.17.17 0 0 0-.11 0 .25.25 0 0 1-.11 0l-.75-1.91a.48.48 0 0 0 0-.2.24.24 0 0 0-.14-.18.26.26 0 0 0 0 .23.46.46 0 0 0 .1.17l.78 1.92a.32.32 0 0 0-.05.44c.12.29-.07.22-.07.22S11.61 9.3 9.93 8.31s-3.53-2-3.78-.54.22 1.43.36 2.05.28 2.35.76 2.77a6.08 6.08 0 0 0 2.41.41s-2.16 1.3-2.13 2 .62 4.92 1.82 5 2-1.88 2.32-2.8a27.27 27.27 0 0 1 .92-2.86 8.53 8.53 0 0 1 .14 1.52c.11.3.25.26.25.26s.14 0 .25-.26a8.53 8.53 0 0 1 .14-1.52 27.09 27.09 0 0 1 .92 2.86c.34.92 1.12 2.86 2.32 2.8s1.79-4.2 1.82-4.94-2.13-2-2.13-2a6.08 6.08 0 0 0 2.41-.45c.48-.42.62-2.14.76-2.77s.62-.62.36-2.05-2.08-.46-3.76.52Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-wrap-through,.device-ios i.icon.icon-wrap-top-bottom{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-wrap-top-bottom{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M0 1h26v1H0zM0 4h26v1H0zM0 25h26v1H0zM0 22h26v1H0zM16.08 8.3c-1.68 1-2.8 3.91-2.8 3.91s-.19.06-.07-.22a.33.33 0 0 0 0-.45l.77-1.9a.45.45 0 0 0 .02-.17.26.26 0 0 0 0-.23.24.24 0 0 0-.14.18.49.49 0 0 0 0 .19l-.77 1.9a.17.17 0 0 0-.11 0 .25.25 0 0 1-.11 0l-.75-1.9a.48.48 0 0 0 0-.19.24.24 0 0 0-.14-.18.26.26 0 0 0 0 .23.45.45 0 0 0 .1.17l.78 1.91a.32.32 0 0 0 0 .44c.12.29-.07.22-.07.22S11.6 9.28 9.92 8.3s-3.52-2-3.77-.53.22 1.42.36 2 .28 2.34.76 2.76a6.08 6.08 0 0 0 2.4.44s-2.15 1.25-2.12 2 .61 4.86 1.82 4.92 2-1.87 2.32-2.79a27.11 27.11 0 0 1 .92-2.85 8.47 8.47 0 0 1 .14 1.51c.11.3.25.26.25.26s.14 0 .25-.26a8.47 8.47 0 0 1 .14-1.51 26.94 26.94 0 0 1 .92 2.85c.34.92 1.12 2.85 2.32 2.79s1.79-4.18 1.82-4.92-2.12-2-2.12-2a6.08 6.08 0 0 0 2.4-.44c.48-.42.62-2.13.76-2.76s.61-.62.36-2-2.1-.45-3.77.53Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-wrap-infront{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M0 1h26v1H0zM0 4h26v1H0zM0 25h26v1H0zM0 22h26v1H0zM0 7h26v1H0zM0 10h26v1H0zM0 13h26v1H0zM0 16h26v1H0zM0 19h26v1H0z' opacity='.3'/%3E%3Cpath d='M16.08 8.29c-1.69 1-2.82 3.93-2.82 3.93s-.19.06-.07-.22a.33.33 0 0 0 0-.45l.78-1.91a.46.46 0 0 0 .03-.17.26.26 0 0 0 0-.23.25.25 0 0 0-.14.18.49.49 0 0 0 0 .2l-.78 1.9a.17.17 0 0 0-.11 0 .25.25 0 0 1-.11 0l-.77-1.91a.48.48 0 0 0 0-.2.24.24 0 0 0-.14-.18.26.26 0 0 0 0 .23.46.46 0 0 0 .1.17l.78 1.92a.32.32 0 0 0-.05.44c.12.29-.07.22-.07.22s-1.14-2.94-2.83-3.92-3.55-2-3.8-.54.23 1.43.37 2.05.28 2.35.76 2.77a6.16 6.16 0 0 0 2.41.43s-2.17 1.25-2.14 2 .62 4.89 1.83 5 2-1.87 2.34-2.8a27.1 27.1 0 0 1 .93-2.86 8.46 8.46 0 0 1 .14 1.52c.11.3.25.26.25.26s.14 0 .25-.26a8.46 8.46 0 0 1 .14-1.52 26.92 26.92 0 0 1 .93 2.86c.34.92 1.13 2.86 2.34 2.8s1.8-4.19 1.83-4.94-2.14-2-2.14-2a6.16 6.16 0 0 0 2.42-.45c.48-.42.62-2.14.76-2.77s.62-.62.37-2.05-2.1-.48-3.79.5Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-wrap-behind,.device-ios i.icon.icon-wrap-infront{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-wrap-behind{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M16.07 8.34c-1.68 1-2.8 3.91-2.8 3.91s-.19.06-.07-.22a.33.33 0 0 0 0-.45l.77-1.9a.45.45 0 0 0 .03-.17.26.26 0 0 0 0-.23.24.24 0 0 0-.14.18.49.49 0 0 0 0 .19l-.77 1.89a.17.17 0 0 0-.11 0 .25.25 0 0 1-.11 0l-.77-1.9a.48.48 0 0 0 0-.19.24.24 0 0 0-.14-.18.26.26 0 0 0 0 .23.45.45 0 0 0 .1.17l.78 1.91a.32.32 0 0 0-.05.44c.12.29-.07.22-.07.22s-1.12-2.92-2.8-3.9-3.52-2-3.78-.53.22 1.42.36 2 .28 2.34.76 2.75a6.1 6.1 0 0 0 2.41.44s-2.15 1.24-2.13 2 .62 4.85 1.82 4.91 2-1.86 2.32-2.78a27 27 0 0 1 .92-2.84 8.43 8.43 0 0 1 .14 1.51c.11.3.25.26.25.26s.14 0 .25-.26a8.43 8.43 0 0 1 .14-1.51 26.83 26.83 0 0 1 .92 2.84c.34.92 1.12 2.84 2.32 2.78s1.79-4.17 1.82-4.91-2.13-2-2.13-2a6.1 6.1 0 0 0 2.41-.44c.48-.41.62-2.13.76-2.75s.62-.62.36-2-2.09-.45-3.77.53Z' opacity='.3'/%3E%3Cpath d='M0 1h26v1H0zM0 4h26v1H0zM0 25h26v1H0zM0 22h26v1H0zM0 7h26v1H0zM0 10h26v1H0zM0 13h26v1H0zM0 16h26v1H0zM0 19h26v1H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-wrap-table-inline{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h26v1H1zM1 4h26v1H1zM1 25h26v1H1zM1 22h26v1H1zM7 7h14v13H7z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-wrap-table-flow,.device-ios i.icon.icon-wrap-table-inline{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-wrap-table-flow{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h26v1H1zM1 4h26v1H1zM1 25h26v1H1zM1 22h26v1H1zM1 7h4v1H1zM1 10h4v1H1zM1 13h4v1H1zM1 16h4v1H1zM1 19h4v1H1zM23 19h4v1h-4zM23 16h4v1h-4zM23 13h4v1h-4zM23 10h4v1h-4zM23 7h4v1h-4zM7 7h14v13H7z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-block-align-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h26v1H1zM1 4h26v1H1zM1 25h26v1H1zM1 22h26v1H1zM1 8h12v11H1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-block-align-center,.device-ios i.icon.icon-block-align-left{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-block-align-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M0 1h26v1H0zM0 4h26v1H0zM0 25h26v1H0zM0 22h26v1H0zM7 8.08h12V19H7z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-block-align-right{height:28px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h26v1H1zM1 4h26v1H1zM1 25h26v1H1zM1 22h26v1H1zM15 8h12v11H15z'/%3E%3C/svg%3E");width:28px}.device-ios i.icon.icon-block-align-right,.device-ios i.icon.icon-link{background-color:var(--brand-word);-webkit-mask-repeat:round;-webkit-mask-size:contain}.device-ios i.icon.icon-link{height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M12.4 9.8s-2.1-.1-3.8 1.2c-2.8 2-3.3 4.3-3.3 4.3s1.6-1.7 3.5-2.5c1.7-.7 3.7-.4 3.7-.4v1.9l4.8-3.3-4.8-3.3v2.1zM11 1C5.5 1 1 5.5 1 11s4.5 10 10 10 10-4.5 10-10S16.5 1 11 1zm0 19c-5 0-9-4.1-9-9 0-5 4-9 9-9s9 4.1 9 9c0 5-4 9-9 9z'/%3E%3C/svg%3E");width:22px}.device-ios i.icon.icon-image-library{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cdefs%3E%3ClinearGradient id='a' x1='11.08' x2='11.08' y1='10.26' y2='1.26' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23f3e916'/%3E%3Cstop offset='1' stop-color='%23f89d34'/%3E%3C/linearGradient%3E%3ClinearGradient id='b' x1='11.08' x2='11.08' y1='20.44' y2='11.88' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%235eb6e8'/%3E%3Cstop offset='1' stop-color='%23958cc3'/%3E%3C/linearGradient%3E%3ClinearGradient id='c' x1='1.46' x2='10.46' y1='11.05' y2='11.05' gradientTransform='rotate(90 5.955 11.045)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23cc8dba'/%3E%3Cstop offset='1' stop-color='%23f86867'/%3E%3C/linearGradient%3E%3ClinearGradient id='d' x1='11.73' x2='20.73' y1='11.05' y2='11.05' gradientTransform='rotate(90 16.23 11.05)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%236ac07f'/%3E%3Cstop offset='1' stop-color='%23c5da3d'/%3E%3C/linearGradient%3E%3ClinearGradient id='e' x1='11.74' x2='17.52' y1='10.42' y2='4.63' gradientTransform='rotate(135 14.625 7.528)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23c5da3d'/%3E%3Cstop offset='1' stop-color='%23f3e916'/%3E%3C/linearGradient%3E%3ClinearGradient id='f' x1='4.7' x2='10.48' y1='17.49' y2='11.71' gradientTransform='rotate(135 7.55 14.638)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%239595c3'/%3E%3Cstop offset='1' stop-color='%23cc8dba'/%3E%3C/linearGradient%3E%3ClinearGradient id='g' x1='4.69' x2='10.47' y1='4.64' y2='10.42' gradientTransform='rotate(45 7.572 7.527)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23f86867'/%3E%3Cstop offset='1' stop-color='%23f89d34'/%3E%3C/linearGradient%3E%3ClinearGradient id='h' x1='11.77' x2='17.55' y1='11.78' y2='17.56' gradientTransform='rotate(45 14.618 14.635)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%235ec0e8'/%3E%3Cstop offset='1' stop-color='%236ac07f'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg data-name='Слой 1' style='isolation:isolate'%3E%3Crect width='22' height='22' x='.09' y='.01' rx='4' ry='4' style='opacity:.2'/%3E%3Crect width='21.04' height='21.04' x='.57' y='.49' rx='3.6' ry='3.6' style='fill:%23fff'/%3E%3Crect width='5.5' height='9' x='8.33' y='1.26' rx='2.5' ry='2.5' style='fill:url(%23a);mix-blend-mode:multiply'/%3E%3Crect width='5.5' height='9' x='8.33' y='11.76' rx='2.5' ry='2.5' style='fill:url(%23b)'/%3E%3Crect width='5.5' height='9' x='3.21' y='6.55' rx='2.5' ry='2.5' style='fill:url(%23c);mix-blend-mode:multiply' transform='rotate(-90 5.955 11.045)'/%3E%3Crect width='5.5' height='9' x='13.48' y='6.55' rx='2.5' ry='2.5' style='fill:url(%23d);mix-blend-mode:multiply' transform='rotate(-90 16.23 11.05)'/%3E%3Crect width='5.5' height='9' x='11.87' y='3.03' rx='2.5' ry='2.5' style='fill:url(%23e);mix-blend-mode:multiply' transform='rotate(-135 14.623 7.527)'/%3E%3Crect width='5.5' height='9' x='4.8' y='10.14' rx='2.5' ry='2.5' style='fill:url(%23f);mix-blend-mode:multiply' transform='rotate(-135 7.552 14.639)'/%3E%3Crect width='5.5' height='9' x='4.83' y='3.03' rx='2.5' ry='2.5' style='fill:url(%23g);mix-blend-mode:multiply' transform='rotate(-45 7.576 7.522)'/%3E%3Crect width='5.5' height='9' x='11.87' y='10.14' rx='2.5' ry='2.5' style='fill:url(%23h);mix-blend-mode:multiply' transform='rotate(-45 14.625 14.642)'/%3E%3C/g%3E%3C/svg%3E");height:22px;width:22px}.device-ios i.icon.icon-add-table{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-segment)' d='M4 5.6h7.2v3.2H4V5.6ZM12.8 5.6H20v3.2h-7.2V5.6ZM4 10.4h7.2v3.2H4v-3.2ZM12.8 10.4H20v3.2h-7.2v-3.2Z'/%3E%3Cpath fill='var(--brand-word)' d='M4 15.2h7.2v3.2H4v-3.2Z'/%3E%3Cpath fill='var(--toolbar-segment)' d='M12.8 15.2H20v3.2h-7.2v-3.2Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-shape,.device-ios i.icon.icon-add-table{background-color:var(--toolbar-segment);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-add-shape{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cellipse cx='15.333' cy='14.4' fill='var(--toolbar-segment)' rx='5.667' ry='5.6'/%3E%3Cpath fill='var(--toolbar-segment)' fill-rule='evenodd' d='M5 4.8a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h4.328a6.317 6.317 0 0 1-.47-2.4c0-3.534 2.899-6.4 6.475-6.4.56 0 1.102.07 1.62.202V5.8a1 1 0 0 0-1-1H5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-image{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-segment)' fill-rule='evenodd' d='m5.792 16.667 3.083-3.5 2.25 2.333L14.21 12l4 4.667H5.792Zm13.667 1.859c.361-.316.542-.68.542-1.094V6.568c0-.413-.18-.778-.542-1.094A1.842 1.842 0 0 0 18.21 5H5.792c-.472 0-.89.158-1.25.474C4.18 5.79 4 6.154 4 6.568v10.864c0 .414.18.778.542 1.094.36.316.778.474 1.25.474h12.417c.472 0 .89-.158 1.25-.474ZM8.8 11.222c.884 0 1.6-.696 1.6-1.555 0-.86-.716-1.556-1.6-1.556-.883 0-1.6.697-1.6 1.556 0 .859.717 1.555 1.6 1.555Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-image,.device-ios i.icon.icon-add-other{background-color:var(--toolbar-segment);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-add-other{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M7 18a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm6.5 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm5 1.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-contents{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='var(--brand-word)' viewBox='0 0 20 13'%3E%3Cpath fill-rule='evenodd' d='M17 0H0v1h17V0Zm-5.1 4H0v1h11.9V4ZM0 8h17v1H0V8Zm15 4H0v1h15v-1ZM20 0h-1v1h1V0Zm0 4h-1v1h1V4Zm-1 4h1v1h-1V8Zm1 4h-1v1h1v-1Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-pagenumber{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M8.2 1 2 7.6V22h17V1H8.2zM8 2.8V8H3.1L8 2.8zM18 21H3V9h6V2h9v19zm-6-2h1v-4h-.7c0 .2-.1-.1-.1 0-.1.1-.2 0-.3 0-.1.1-.2.1-.4.1h-.4v.9h.9v3zm3.3-1.7c-.3.6-.2 1.1-.3 1.7h.9c0-.3 0-.6.1-.9.1-.3.1-.6.3-.9.1-.3.3-.6.4-.9.2-.3.1-.3.3-.5V15h-3v1h1.9c-.3.4-.4.7-.6 1.3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-pagenumber,.device-ios i.icon.icon-sectionbreak{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-sectionbreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M20 14V2H3v12H2V1h19v13h-1zM5 14v1H4v-1h1zm2 0v1H6v-1h1zm2 0v1H8v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm1 0h1v1h-1v-1zM3 21h17v-6h1v7H2v-7h1v6z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-footnote{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M22 8.111h-1.082V5.154l.01-.486.018-.532c-.18.18-.305.297-.375.353l-.588.472-.522-.65L21.11 3H22v5.111ZM10.336 18.851l-1.354-3.454H4.62L3.28 18.85H2L6.302 7.945h1.064l4.28 10.906h-1.31Zm-1.749-4.59-1.265-3.366a18.015 18.015 0 0 1-.506-1.568c-.11.476-.266.998-.47 1.568l-1.28 3.365h3.521ZM16.142 10.575c1.072 0 1.903.367 2.494 1.1.595.728.893 1.76.893 3.098 0 1.337-.3 2.377-.9 3.12-.596.738-1.425 1.107-2.487 1.107a3.602 3.602 0 0 1-1.458-.29 2.773 2.773 0 0 1-1.102-.906h-.09l-.26 1.047h-.885V7.291h1.235V10.1c0 .629-.02 1.193-.06 1.694h.06c.576-.813 1.43-1.219 2.56-1.219Zm-.178 1.033c-.844 0-1.452.243-1.824.728-.372.48-.558 1.293-.558 2.437s.191 1.964.573 2.459c.382.49.995.735 1.839.735.759 0 1.325-.274 1.697-.824.372-.555.558-1.35.558-2.385 0-1.06-.186-1.85-.558-2.37-.372-.52-.948-.78-1.727-.78Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-pagebreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M8 14v1h1v-1H8zm-2 0v1h1v-1H6zm12 7H3v-6H2v7h17v-7h-1v6zM4 14v1h1v-1H4zm10 0v1h1v-1h-1zm-4 0v1h1v-1h-1zM8.2 1 2 7.6V14h1V9h6V2h9v12h1V1H8.2zM8 8H3.1L8 2.8V8zm4 6v1h1v-1h-1zm4 0v1h1v-1h-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-pagebreak,.device-ios i.icon.icon-stringbreak{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-stringbreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M18 12H5.1L9 15.9l-.7.7-4.5-4.5-.6-.6.6-.6 4.5-4.5.7.7L5.1 11H18V5h1v7h-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-users{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M16 7c0 2.341-.584 4.135-1.386 5.312C13.807 13.497 12.834 14 12 14c-.834 0-1.807-.503-2.614-1.688C8.584 11.135 8 9.341 8 7c0-2.385 1.979-4 4-4s4 1.615 4 4Zm-.81 6.22C14.286 14.375 13.144 15 12 15s-2.287-.625-3.19-1.78c-1.405.564-2.597 1.129-3.54 1.702C3.553 15.967 3 16.832 3 17.5c0 .755.426 1.588 1.823 2.288C6.25 20.503 8.573 21 12 21c3.427 0 5.75-.497 7.177-1.212C20.574 19.088 21 18.255 21 17.5c0-.667-.553-1.533-2.27-2.578-.943-.573-2.135-1.138-3.54-1.702Zm.564-.85C16.514 11.028 17 9.21 17 7c0-3-2.491-5-5-5S7 4 7 7c0 2.21.486 4.028 1.246 5.37C4.39 13.94 2 15.579 2 17.5 2 19.985 5 22 12 22s10-2.015 10-4.5c0-1.921-2.39-3.56-6.246-5.13Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-review,.device-ios i.icon.icon-users{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-review{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M3 3h17v4h-1V4H4v16h15v-6h1v7H3V3Z'/%3E%3Cpath fill='var(--brand-word)' d='M16 8H7V7h9v1ZM7 10h9V9H7v1ZM14 12H7v-1h7v1ZM7 14h5v-1H7v1ZM11 16H7v-1h4v1ZM13 15.5V17h1.5l8-8L21 7.5l-8 8Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-review-changes{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M19 10H5V9h14v1ZM19 13H5v-1h14v1ZM19 16H5v-1h14v1Z'/%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M21 6H3v13h18V6ZM3 5H2v15h20V5H3Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-accept-changes,.device-ios i.icon.icon-review-changes{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-accept-changes{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%2340865C' d='m12 20-3-3-1 1 4 4 10-10-1-1-9 9Z'/%3E%3Cpath fill='var(--brand-word)' d='M19 9H5V8h14v1ZM16 12H5v-1h11v1ZM14 15H5v-1h9v1Z'/%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M3 5h18v4h1V4H2v16h4v-1H3V5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-reject-changes{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23AA5252' d='m13 11-1 1 4 4-4 4 1 1 4-4 4 4 1-1-4-4 4-4-1-1-4 4-4-4Z'/%3E%3Cpath fill='var(--brand-word)' d='M19 9H5V8h14v1ZM10 12H5v-1h5v1ZM10 15H5v-1h5v1Z'/%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M3 5h18v4h1V4H2v16h8v-1H3V5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-accept,.device-ios i.icon.icon-reject-changes{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-accept{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='m9 18-7-7-1 1 8 8L23 6l-1-1L9 18Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-reject{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M5 4 4 5l7 7-7 7 1 1 7-7 7 7 1-1-7-7 7-7-1-1-7 7-7-7Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-next-change,.device-ios i.icon.icon-reject{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-next-change{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill='var(--brand-word)' d='M16 12 6.5 22l1 1L18 12 7.5 1l-1 1L16 12Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='none' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}.device-ios i.icon.icon-prev-change{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill='var(--brand-word)' d='m8 12 9.5-10-1-1L6 12l10.5 11 1-1L8 12Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='none' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}.device-ios i.icon.icon-goto,.device-ios i.icon.icon-prev-change{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-goto{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M21 3H3v18h18V3ZM3 2H2v20h20V2H3Zm12.293 6H9V7h8v8h-1V8.707l-8.646 8.647-.708-.708L15.293 8Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-edit-mode{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M21.5 6.3 23 4.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5 2.8 2.8Zm-1.2 0L7.1 19.4l-1.5-1.5L18.8 4.8l-.7-.7L4.5 17.7 4 21H1v1h22v-1H4l3.3-.5L20.9 6.9l-.6-.6Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-edit-mode,.device-ios i.icon.icon-mobile-view{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-mobile-view{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M7 3h10a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1ZM5 4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V4Zm4.5 15a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-standard-view{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M7 1v2.5a.5.5 0 0 1-.5.5H4V3h2V1h1Zm10 2.5V1h1v2h2v1h-2.5a.5.5 0 0 1-.5-.5Zm0 17V23h1v-2h2v-1h-2.5a.5.5 0 0 0-.5.5Zm-10 0V23H6v-2H4v-1h2.5a.5.5 0 0 1 .5.5ZM16 6H8a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1ZM8 5a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2H8Zm1 3.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5Zm.5 2.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5ZM9 14.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-menu-comment{background-color:var(--text-tertiary);height:30px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath fill='%23A3A3A3' fill-rule='evenodd' d='M10 15a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.714a1.714 1.714 0 1 0 0-3.428 1.714 1.714 0 0 0 0 3.428ZM18 15a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.714a1.714 1.714 0 1 0 0-3.428 1.714 1.714 0 0 0 0 3.428ZM26 15a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.714a1.714 1.714 0 1 0 0-3.428 1.714 1.714 0 0 0 0 3.428Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:30px}.device-ios i.icon.icon-resolve-comment{background-color:var(--brand-word);height:30px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath fill='%23A3A3A3' fill-rule='evenodd' d='M11.62 20.856a.5.5 0 0 0 .738-.021L22.516 9.058a.75.75 0 1 0-1.138-.98l-9.023 10.509a.5.5 0 0 1-.736.025l-3.513-3.575a.755.755 0 0 0-1.082 1.053l4.596 4.765Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:30px}.device-ios i.icon.icon-resolve-comment.check{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath fill='%23fff' d='M0 0h30v30H0V0Z'/%3E%3Cpath fill='%234cd964' fill-rule='evenodd' d='M11.62 20.856a.5.5 0 0 0 .738-.021L22.516 9.058a.75.75 0 1 0-1.138-.98l-9.023 10.509a.5.5 0 0 1-.736.025l-3.513-3.575a.755.755 0 0 0-1.083 1.054l4.597 4.764Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:30px;width:30px}.device-ios i.icon.icon-insert-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M20.154 9.007h-8.308c-1.02 0-1.846.828-1.846 1.848v4.314c0 1.021.827 1.849 1.846 1.849h1.987c.108 0 .212.038.295.107l4.115 3.267c.3.25.757.037.757-.355V17.48c0-.255.207-.462.462-.462h.692c1.02 0 1.846-.828 1.846-1.849v-4.314c0-1.02-.827-1.848-1.846-1.848ZM20 10.008a1 1 0 0 1 1 1.002v4.005a1 1 0 0 1-1 1.002h-1.997L18 18.9v.1l-3.5-2.983H12a1 1 0 0 1-1-1.002V11.01a1 1 0 0 1 1-1h8Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='M14.5 3h-10C3.19 3 2 4.215 2 5.503v6.532c0 1.287 1.19 1.978 2.5 1.978h1c.328 0 .5.179.5.5v3.005c0 .494.614.817 1 .5l4-3.032V13.5l-4 3v-3.488H4.5c-.71 0-1.5-.28-1.5-.977V5.503c0-.698.79-1.502 1.5-1.502h10c.71 0 1.5.804 1.5 1.502v2.503h1V5.503C17 4.215 15.81 3 14.5 3Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-export,.device-ios i.icon.icon-insert-comment{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-export{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill='%2327ABA3' clip-path='url(%23a)'%3E%3Cpath fill-rule='evenodd' d='M4 8h6v1H5v13h15V9h-5V8h6v15H4V8Z' clip-rule='evenodd'/%3E%3Cpath d='M12.999 16h-1V2l-3.6 3.7-.7-.8 4.8-4.9 4.8 4.9-.7.8-3.6-3.7v14Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}.device-ios i.icon.icon-prev-field{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Zm-10 9a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='M16.756 13.884a.5.5 0 0 1-.761.115l-3.662-3.263a.5.5 0 0 0-.666 0L8.005 14a.5.5 0 0 1-.76-.115l-.031-.051a.5.5 0 0 1 .094-.63l4.358-3.904a.5.5 0 0 1 .668 0l4.358 3.903a.5.5 0 0 1 .094.63l-.03.052Z'/%3E%3Cpath fill-rule='evenodd' stroke='var(--brand-word)' d='M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Zm-10 9a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z' clip-rule='evenodd'/%3E%3Cpath stroke='var(--brand-word)' d='M16.756 13.884a.5.5 0 0 1-.761.115l-3.662-3.263a.5.5 0 0 0-.666 0L8.005 14a.5.5 0 0 1-.76-.115l-.031-.051a.5.5 0 0 1 .094-.63l4.358-3.904a.5.5 0 0 1 .668 0l4.358 3.903a.5.5 0 0 1 .094.63l-.03.052Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-next-field,.device-ios i.icon.icon-prev-field{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-next-field{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M2 12C2 6.477 6.477 2 12 2s10 4.477 10 10-4.477 10-10 10S2 17.523 2 12Zm10-9a9 9 0 1 0 0 18 9 9 0 0 0 0-18Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='M7.245 10.116a.5.5 0 0 1 .76-.115l3.662 3.263a.5.5 0 0 0 .666 0L15.995 10a.5.5 0 0 1 .76.115l.031.051a.5.5 0 0 1-.094.63l-4.358 3.904a.5.5 0 0 1-.668 0l-4.358-3.903a.5.5 0 0 1-.094-.63l.03-.052Z'/%3E%3Cpath fill-rule='evenodd' stroke='var(--brand-word)' d='M2 12C2 6.477 6.477 2 12 2s10 4.477 10 10-4.477 10-10 10S2 17.523 2 12Zm10-9a9 9 0 1 0 0 18 9 9 0 0 0 0-18Z' clip-rule='evenodd'/%3E%3Cpath stroke='var(--brand-word)' d='M7.245 10.116a.5.5 0 0 1 .76-.115l3.662 3.263a.5.5 0 0 0 .666 0L15.995 10a.5.5 0 0 1 .76.115l.031.051a.5.5 0 0 1-.094.63l-4.358 3.904a.5.5 0 0 1-.668 0l-4.358-3.903a.5.5 0 0 1-.094-.63l.03-.052Z'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-table{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23fff' d='M4 5.6h7.2v3.2H4V5.6ZM12.8 5.6H20v3.2h-7.2V5.6ZM4 10.4h7.2v3.2H4v-3.2ZM12.8 10.4H20v3.2h-7.2v-3.2ZM4 15.2h7.2v3.2H4v-3.2ZM12.8 15.2H20v3.2h-7.2v-3.2Z'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-shape,.device-ios .tab-link-active i.icon.icon-add-table{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios .tab-link-active i.icon.icon-add-shape{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cellipse cx='15.333' cy='14.4' fill='%23fff' rx='5.667' ry='5.6'/%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M5 4.8a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h4.328a6.317 6.317 0 0 1-.47-2.4c0-3.534 2.899-6.4 6.475-6.4.56 0 1.102.07 1.62.202V5.8a1 1 0 0 0-1-1H5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-image{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='m5.792 16.667 3.083-3.5 2.25 2.333L14.21 12l4 4.667H5.792Zm13.667 1.859c.361-.316.542-.68.542-1.094V6.568c0-.413-.18-.778-.542-1.094A1.842 1.842 0 0 0 18.21 5H5.792c-.472 0-.89.158-1.25.474C4.18 5.79 4 6.154 4 6.568v10.864c0 .414.18.778.542 1.094.36.316.778.474 1.25.474h12.417c.472 0 .89-.158 1.25-.474ZM8.8 11.222c.884 0 1.6-.696 1.6-1.555 0-.86-.716-1.556-1.6-1.556-.883 0-1.6.697-1.6 1.556 0 .859.717 1.555 1.6 1.555Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-image,.device-ios .tab-link-active i.icon.icon-add-other{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios .tab-link-active i.icon.icon-add-other{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M7 18a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm6.5 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm5 1.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-undo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M20 17v-2c0-1.7-1.3-3-3-3H3.7l3.4 3.4-1.4 1.4-5.2-5.2L0 11l.5-.6 5.2-5.2 1.4 1.4L3.7 10H17c2.8 0 5 2.2 5 5v2h-2z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-redo,.device-android .navbar i.icon.icon-undo{background-color:var(--toolbar-icons);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-redo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M0 17v-2c0-2.8 2.2-5 5-5h13.3l-3.4-3.4 1.4-1.4 5.2 5.2.5.6-.5.6-5.2 5.2-1.4-1.4 3.4-3.4H5c-1.7 0-3 1.3-3 3v2H0z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-edit-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cg fill='%23fff'%3E%3Cpath fill-rule='evenodd' d='M2.5 15 8 1h2l4.415 11.257-1.601 1.601L12.12 12H5.87l-1.12 3zM9 3.67 6.62 10h4.76z' clip-rule='evenodd'/%3E%3Cpath d='M10 19.5V22h2.5l7.372-7.372-2.5-2.5zm11.805-6.805c.26-.26.26-.68 0-.94l-1.56-1.56a.664.664 0 0 0-.94 0l-1.22 1.22 2.5 2.5z'/%3E%3C/g%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-edit-settings,.device-android .navbar i.icon.icon-plus{background-color:var(--toolbar-icons);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-plus{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M21 12h-9v9h-2v-9H1v-2h9V1h2v9h9v2z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-settings{background-color:var(--toolbar-icons);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M12.1 2H9.9c-.3 0-.5.2-.6.5l-.5 2.4c0 .2-.2.3-.3.3s-.1 0-.2-.1L6.2 3.8c-.1-.1-.2-.1-.4-.1-.1 0-.3 0-.4.1L3.8 5.4c-.1.2-.2.5 0 .8l1.3 2.1c.1.2.1.4-.2.5l-2.4.5c-.3.1-.5.3-.5.6v2.2c0 .3.2.5.5.6l2.4.5c.3.1.4.3.2.5l-1.3 2.1c-.2.2-.1.6.1.8l1.6 1.6c.1.1.3.2.4.2s.2 0 .3-.1L8.3 17c.1-.1.1-.1.2-.1s.3.1.3.3l.5 2.3c.1.3.3.5.6.5h2.2c.3 0 .5-.2.6-.5l.5-2.4c0-.2.1-.3.3-.3.1 0 .1 0 .2.1l2.1 1.3c.1.1.2.1.3.1.2 0 .3-.1.4-.2l1.6-1.6c.2-.2.2-.5.1-.8l-1.3-2.1c-.2-.2-.1-.5.2-.5l2.4-.5c.3-.1.5-.3.5-.6V9.8c0-.3-.2-.5-.5-.6l-2.4-.5c-.3-.1-.4-.3-.2-.5l1.3-2.1c.2-.2.1-.6-.1-.8l-1.6-1.6c-.1-.1-.3-.2-.4-.2s-.2 0-.3.1l-2.1 1.3c-.1.1-.1.1-.2.1s-.3-.1-.3-.3l-.5-2.2c-.1-.3-.3-.5-.6-.5zM11 14.5c-1.9 0-3.5-1.6-3.5-3.5S9.1 7.5 11 7.5s3.5 1.6 3.5 3.5-1.6 3.5-3.5 3.5z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-prev{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M5.1 10.9 13.9 2 16 4.1l-6.8 7 6.8 6.8-2.1 2.1-8.8-8.8-.1-.1z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-next,.device-android .navbar i.icon.icon-prev{background-color:var(--toolbar-icons);height:20px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:20px}.device-android .navbar i.icon.icon-next{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M16.9 10.9 8.1 2 6 4.1l6.8 7L6 17.9 8.1 20l8.8-8.8.1-.1z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-expand-down{background-color:var(--fill-white);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cpath d='M10.9 16.9 2 8.1 4.1 6l7 6.8L17.9 6 20 8.1l-8.8 8.8-.1.1z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-add-table{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-tab-normal)' d='M2 4h9v4H2V4ZM13 4h9v4h-9V4ZM2 10h9v4H2v-4ZM13 10h9v4h-9v-4ZM2 16h9v4H2v-4ZM13 16h9v4h-9v-4Z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-add-shape,.device-android .navbar i.icon.icon-add-table{background-color:var(--toolbar-tab-normal);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-add-shape{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Ccircle cx='16' cy='15' r='7' fill='var(--toolbar-tab-normal)'/%3E%3Cpath fill='var(--toolbar-tab-normal)' fill-rule='evenodd' d='M3 3a1 1 0 0 0-1 1v13a1 1 0 0 0 1 1h5.582A8 8 0 0 1 18 7.252V4a1 1 0 0 0-1-1H3Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-add-image{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill='var(--toolbar-tab-normal)' fill-rule='evenodd' d='m4.24 18 3.854-4.5 2.812 3L14.76 12l5 6H4.24Zm17.083 2.39c.451-.406.677-.874.677-1.406V5.016c0-.532-.226-1-.677-1.407A2.266 2.266 0 0 0 19.76 3H4.24c-.59 0-1.112.203-1.563.61C2.226 4.015 2 4.483 2 5.015v13.968c0 .532.226 1 .677 1.407.451.406.972.609 1.563.609h15.52c.59 0 1.111-.203 1.563-.61ZM8 11a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z' clip-rule='evenodd'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='transparent' d='M0 0h24v24H0V0Z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-add-image,.device-android .navbar i.icon.icon-add-other{background-color:var(--toolbar-tab-normal);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-add-other{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-tab-normal)' fill-rule='evenodd' d='M7 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm8 0a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm5 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-mobile-view{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='M7 3h10a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1ZM5 4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V4Zm4.5 15a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-mobile-view,.device-android .navbar i.icon.icon-standard-view{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-standard-view{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='M7 1v2.5a.5.5 0 0 1-.5.5H4V3h2V1h1Zm10 2.5V1h1v2h2v1h-2.5a.5.5 0 0 1-.5-.5Zm0 17V23h1v-2h2v-1h-2.5a.5.5 0 0 0-.5.5Zm-10 0V23H6v-2H4v-1h2.5a.5.5 0 0 1 .5.5ZM16 6H8a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1ZM8 5a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2H8Zm1 3.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5Zm.5 2.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5ZM9 14.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-check{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-check,.device-android .navbar i.icon.icon-prev-field{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-prev-field{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Zm-10 9a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--toolbar-icons)' d='M16.756 13.884a.5.5 0 0 1-.761.115l-3.662-3.263a.5.5 0 0 0-.666 0L8.005 14a.5.5 0 0 1-.76-.115l-.031-.051a.5.5 0 0 1 .094-.63l4.358-3.904a.5.5 0 0 1 .668 0l4.358 3.903a.5.5 0 0 1 .094.63l-.03.052Z'/%3E%3Cpath fill-rule='evenodd' stroke='var(--toolbar-icons)' d='M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Zm-10 9a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z' clip-rule='evenodd'/%3E%3Cpath stroke='var(--toolbar-icons)' d='M16.756 13.884a.5.5 0 0 1-.761.115l-3.662-3.263a.5.5 0 0 0-.666 0L8.005 14a.5.5 0 0 1-.76-.115l-.031-.051a.5.5 0 0 1 .094-.63l4.358-3.904a.5.5 0 0 1 .668 0l4.358 3.903a.5.5 0 0 1 .094.63l-.03.052Z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-next-field{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='M2 12C2 6.477 6.477 2 12 2s10 4.477 10 10-4.477 10-10 10S2 17.523 2 12Zm10-9a9 9 0 1 0 0 18 9 9 0 0 0 0-18Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--toolbar-icons)' d='M7.245 10.116a.5.5 0 0 1 .76-.115l3.662 3.263a.5.5 0 0 0 .666 0L15.995 10a.5.5 0 0 1 .76.115l.031.051a.5.5 0 0 1-.094.63l-4.358 3.904a.5.5 0 0 1-.668 0l-4.358-3.903a.5.5 0 0 1-.094-.63l.03-.052Z'/%3E%3Cpath fill-rule='evenodd' stroke='var(--toolbar-icons)' d='M2 12C2 6.477 6.477 2 12 2s10 4.477 10 10-4.477 10-10 10S2 17.523 2 12Zm10-9a9 9 0 1 0 0 18 9 9 0 0 0 0-18Z' clip-rule='evenodd'/%3E%3Cpath stroke='var(--toolbar-icons)' d='M7.245 10.116a.5.5 0 0 1 .76-.115l3.662 3.263a.5.5 0 0 0 .666 0L15.995 10a.5.5 0 0 1 .76.115l.031.051a.5.5 0 0 1-.094.63l-4.358 3.904a.5.5 0 0 1-.668 0l-4.358-3.903a.5.5 0 0 1-.094-.63l.03-.052Z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-export,.device-android .navbar i.icon.icon-next-field{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-export{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill='%2327ABA3' clip-path='url(%23a)'%3E%3Cpath fill-rule='evenodd' d='M4 8h6v1H5v13h15V9h-5V8h6v15H4V8Z' clip-rule='evenodd'/%3E%3Cpath d='M12.999 16h-1V2l-3.6 3.7-.7-.8 4.8-4.9 4.8 4.9-.7.8-3.6-3.7v14Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-save-form{background-color:var(--toolbar-icons);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M3 5a2 2 0 0 1 2-2h10.379a2 2 0 0 1 1.414.586l3.621 3.621A2 2 0 0 1 21 8.621V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5Zm2-1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h1v-6a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v6h1a1 1 0 0 0 1-1V8.621a1 1 0 0 0-.293-.707L15.793 4H15v3a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4H5Zm8 0v3h1V4h-1Zm4 16v-6a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v6h10Zm-2-5a.5.5 0 0 1 0 1H9a.5.5 0 0 1 0-1h6Zm-2.5 2.5a.5.5 0 0 1-.5.5H9a.5.5 0 0 1 0-1h3a.5.5 0 0 1 .5.5Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-plus{background-color:var(--fill-white);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--fill-white)' viewBox='0 0 22 22'%3E%3Cpath d='M21 12h-9v9h-2v-9H1v-2h9V1h2v9h9v2z'/%3E%3C/svg%3E")}.device-android i.icon.icon-check,.device-android i.icon.icon-plus{height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-check{background-color:var(--brand-word);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-expand-down{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M10.9 16.9 2 8.1 4.1 6l7 6.8L17.9 6 20 8.1l-8.8 8.8-.1.1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-expand-down,.device-android i.icon.icon-expand-up{background-color:var(--brand-word);height:17px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:17px}.device-android i.icon.icon-expand-up{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cpath d='M10.9 5.1 2 13.9 4.1 16l7-6.8 6.8 6.8 2.1-2.1-8.8-8.8-.1-.1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-spellcheck{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cg fill-rule='evenodd' clip-rule='evenodd'%3E%3Cpath d='M8 1 3 15h1.2l1.777-5h5.046l.654 1.84a6.03 6.03 0 0 1 .916-.78L9 1H8Zm.5 1.9L10.668 9H6.332L8.5 2.9ZM16 21a5 5 0 1 0 0-10 5 5 0 0 0 0 10Zm-.646-2.646 4-4-.708-.708L15 17.293l-1.646-1.647-.708.708 2 2 .354.353.354-.353Z'/%3E%3C/g%3E%3C/svg%3E")}.device-android i.icon.icon-reader,.device-android i.icon.icon-spellcheck{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-reader{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M17 21H1V9h6V2h10v5h1V1H6.2L0 7.6V22h18v-3h-1v2zM6 2.8V8H1.1L6 2.8zM13 8c-5.1 0-9 5-9 5s4.1 5 9 5c5 0 9-5 9-5s-4-5-9-5zm-4.3 7.5C6.8 14.4 6.4 13 6.4 13s.4-1.5 2.4-2.6C8.3 11.2 8 12 8 13c0 .9.3 1.8.7 2.5zm4.3 1.2c-2.1 0-3.7-1.7-3.7-3.7 0-2.1 1.7-3.7 3.7-3.7 2.1 0 3.7 1.7 3.7 3.7 0 2.1-1.6 3.7-3.7 3.7zm4.3-1.2c.4-.7.7-1.6.7-2.5 0-1-.3-1.8-.7-2.6 2 1.1 3.4 2.6 3.4 2.6s-1.5 1.4-3.4 2.5zM13 11.7c-.7 0-1.3.6-1.3 1.3s.6 1.3 1.3 1.3 1.3-.6 1.3-1.3-.6-1.3-1.3-1.3z'/%3E%3C/svg%3E")}.device-android i.icon.icon-doc-setup{height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='-4 6 22 22'%3E%3Cpath d='M15 27H-1V15h6V8h10v19zm1-20H4.2L-2 13.6V28h18V7zM4 8.8V14H-.9L4 8.8z'/%3E%3C/svg%3E");width:22px}.device-android i.icon.icon-app-settings,.device-android i.icon.icon-doc-setup{background-color:var(--brand-word);-webkit-mask-repeat:round;-webkit-mask-size:contain}.device-android i.icon.icon-app-settings{height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M7 14h9a4 4 0 0 1 0 8H7a4 4 0 0 1 0-8Zm9-1a5 5 0 0 1 0 10H7a5 5 0 0 1 0-10h9Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M16 20a2 2 0 1 1 0-4 2 2 0 0 1 0 4Zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6ZM16 3H7a4 4 0 1 0 0 8h9a4 4 0 0 0 0-8ZM7 2a5 5 0 0 0 0 10h9a5 5 0 0 0 0-10H7Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M7 9a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm0 1a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z' clip-rule='evenodd'/%3E%3C/svg%3E");width:24px}.device-android i.icon.icon-download{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M12 0h-1v14l-3.6-3.7-.7.8 4.8 4.9 4.8-4.9-.7-.8L12 14V0Z'/%3E%3Cpath d='M14 5v1h5v14H4V6h5V5H3v16h17V5h-6Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-download,.device-android i.icon.icon-print{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-print{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath fill-rule='evenodd' d='M5 1h12v5h4v11h-4v4H5v-4H1V6h4V1Zm1 5h10V2H6v4ZM5 16v-3H2v3h3Zm-3-4h18V7H2v5Zm18 1h-3v3h3v-3Zm-4 0H6v7h10v-7Zm-2 3H8v-1h6v1Zm0 2H8v-1h6v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-contents{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M2 12.983v-1.966h14.993v1.966H2Zm0 5.988v-1.965h14.993v1.965H2ZM2 5.029h14.993v1.965H2V5.03Zm17.005 5.989v-1.03H22v.936l-1.825 2.059H22v1.029h-2.995v-.936l1.778-2.059h-1.778Zm.983-2.995V5.03h-.983V4h1.965v4.023h-.982Zm-.983 8.983v-1.03H22V20h-2.995v-1.03h1.965v-.467h-.982v-1.03h.982v-.467h-1.965Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-navigation{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M16 4H2v1h14V4ZM19 9H5v1h14V9ZM23 14v1H9v-1h14ZM16 20v-1H2v1h14Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-feedback,.device-android i.icon.icon-navigation{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-feedback{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill-rule='evenodd' d='M21 6H3v12h18V6ZM2 5v14h20V5H2Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m2.666 6.372.668-.744 8.666 7.7 8.666-7.7.668.744-9.334 8.3-9.334-8.3Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m9.376 11.33-6 7-.752-.66 6-7 .752.66ZM15.376 10.67l6 7-.752.66-6-7 .752-.66Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-export{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill='%2327ABA3' clip-path='url(%23a)'%3E%3Cpath fill-rule='evenodd' d='M4 8h6v1H5v13h15V9h-5V8h6v15H4V8Z' clip-rule='evenodd'/%3E%3Cpath d='M12.999 16h-1V2l-3.6 3.7-.7-.8 4.8-4.9 4.8 4.9-.7.8-3.6-3.7v14Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}.device-android i.icon.icon-add-favorites,.device-android i.icon.icon-export{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-add-favorites{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='m12 3.604-2.134 5.13a1.5 1.5 0 0 1-1.265.918l-5.538.444 4.22 3.614a1.5 1.5 0 0 1 .482 1.488L6.476 20.6l4.741-2.895a1.5 1.5 0 0 1 1.564 0l4.741 2.895-1.289-5.403a1.5 1.5 0 0 1 .483-1.488l4.22-3.614-5.538-.444a1.5 1.5 0 0 1-1.265-.919l-2.134-5.13Zm.461-1.494a.5.5 0 0 0-.923 0L8.943 8.35a.5.5 0 0 1-.422.305l-6.736.54a.5.5 0 0 0-.285.879l5.132 4.396a.5.5 0 0 1 .16.495L5.226 21.54a.5.5 0 0 0 .747.542l5.767-3.522a.5.5 0 0 1 .521 0l5.767 3.522a.5.5 0 0 0 .747-.542l-1.568-6.574a.5.5 0 0 1 .161-.495l5.132-4.396a.5.5 0 0 0-.285-.878l-6.736-.54a.5.5 0 0 1-.422-.307l-2.595-6.24Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-clear-fields{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M17.648 4.083a3.783 3.783 0 0 0-5.3 0l-9.25 9.127a3.662 3.662 0 0 0 0 5.228l2.376 2.345.22.217h14.55v-1.479h-6.435l7.094-6.998a3.662 3.662 0 0 0 0-5.229l-3.255-3.211ZM11.69 19.52l5.246-5.176L10.5 7.997l-6.344 6.258a2.197 2.197 0 0 0 0 3.138l2.158 2.128h5.375Zm-.129-12.57 6.435 6.348 1.847-1.822a2.197 2.197 0 0 0 0-3.137l-3.255-3.211a2.27 2.27 0 0 0-3.18 0L11.561 6.95Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-clear-fields,.device-android i.icon.icon-mobile-view{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-mobile-view{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M7 3h10a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1ZM5 4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V4Zm4.5 15a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-edit-mode{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M21.5 6.3 23 4.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5 2.8 2.8Zm-1.2 0L7.1 19.4l-1.5-1.5L18.8 4.8l-.7-.7L4.5 17.7 4 21H1v1h22v-1H4l3.3-.5L20.9 6.9l-.6-.6Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-text-align-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm14 4H1v1h14V7zM1 12h21v-1H1v1zm14 3H1v1h14v-1zM1 20h21v-1H1v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-left,.device-android i.icon.icon-text-align-right{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-text-align-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm7 5h14V7H8v1zm14 3H1v1h21v-1zM8 16h14v-1H8v1zm14 3H1v1h21v-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm3 4v1h14V7H4zm-3 5h21v-1H1v1zm3 3v1h14v-1H4zm-3 5h21v-1H1v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-center,.device-android i.icon.icon-text-align-just{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-text-align-just{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm0 5h21V7H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-de-indent{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 20v-1h21v1H1zm10-5h11v1H11v-1zm0-4h11v1H11v-1zm0-4h11v1H11V7zM6.3 7l.7.7-3.8 3.8L7 15.3l-.7.7L2 11.8l-.2-.3.2-.3L6.3 7zM1 3h21v1H1V3z'/%3E%3C/svg%3E")}.device-android i.icon.icon-de-indent,.device-android i.icon.icon-in-indent{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-in-indent{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 20v-1h21v1H1zm11-4H1v-1h11v1zm0-4H1v-1h11v1zm0-4H1V7h11v1zm9 3.2.2.3-.2.3-4.3 4.2-.7-.7 3.8-3.8L16 7.7l.7-.7 4.3 4.2zM22 4H1V3h21v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-add-column-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M15 19H7v-4H0V2h22v17h-7zm0-1h6v-3h-6v3zm0-4h6v-3h-6v3zm-7 4h6v-3H8v3zm0-4h6v-3H8v3zm6-4V7H8v3h6zM8 3v3h6V3H8zm13 0h-6v3h6V3zm-6 4v3h6V7h-6zM3 16h1v2h2v1H4v2H3v-2H1v-1h2v-2z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-add-column-left,.device-android i.icon.icon-table-add-column-right{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-table-add-column-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M0 19V2h22v13h-7v4H0zm7-4H1v3h6v-3zm0-4H1v3h6v-3zm7 4H8v3h6v-3zm0-4H8v3h6v-3zm0-1V7H8v3h6zM8 3v3h6V3H8zM1 6h6V3H1v3zm0 1v3h6V7H1zm18 11h2v1h-2v2h-1v-2h-2v-1h2v-2h1v2z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-add-row-above{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M21 20H0V1h15v6h7v13h-1zM7 8H1v3h6V8zm0 4H1v3h6v-3zm0 4H1v3h6v-3zm1 3h6v-3H8v3zm0-4h6v-3H8v3zm0-4h6V8H8v3zm13-3h-6v3h6V8zm0 4h-6v3h6v-3zm0 4h-6v3h6v-3zM19 6h-1V4h-2V3h2V1h1v2h2v1h-2v2z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-add-row-above,.device-android i.icon.icon-table-add-row-below{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-table-add-row-below{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M22 1v13h-7v6H0V1h22zM7 10H1v3h6v-3zm0-4H1v3h6V6zm0-4H1v3h6V2zm1 3h6V2H8v3zm0 4h6V6H8v3zm0 4h6v-3H8v3zm13-3h-6v3h6v-3zm0-4h-6v3h6V6zm0-4h-6v3h6V2zm-2 15h2v1h-2v2h-1v-2h-2v-1h2v-2h1v2z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-remove-column{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M21 19h-8.6c-.9 1.8-2.7 3-4.9 3s-4-1.2-4.9-3H0V2h22v17h-1zM7.5 12C5 12 3 14 3 16.5S5 21 7.5 21s4.5-2 4.5-4.5S10 12 7.5 12zM14 3H8v3h6V3zm0 4H8v3h6V7zm0 4H8v.1c1.9.2 3.5 1.3 4.4 2.9H14v-3zm0 4h-1.2c.1.5.2 1 .2 1.5s-.1 1-.2 1.5H14v-3zm7-12h-6v3h6V3zm0 4h-6v3h6V7zm0 4h-6v3h6v-3zm0 4h-6v3h6v-3zM9.6 19.3l-2.1-2.1-2.1 2.1-.7-.7 2.1-2.1-2.1-2.1.7-.7 2.1 2.1 2.1-2.1.7.7-2.1 2.1 2.1 2.1-.7.7z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-remove-column,.device-android i.icon.icon-table-remove-row{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-table-remove-row{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M21 19h-8.6c-.9 1.8-2.7 3-4.9 3s-4-1.2-4.9-3H0V2h22v17h-1zM1 18h1.2c-.1-.5-.2-1-.2-1.5s.1-1 .2-1.5H1v3zM7 3H1v3h6V3zm0 4H1v3h6V7zm.5 5C5 12 3 14 3 16.5S5 21 7.5 21s4.5-2 4.5-4.5S10 12 7.5 12zM14 3H8v3h6V3zm0 4H8v3h6V7zm0 8h-1.2c.1.5.2 1 .2 1.5s-.1 1-.2 1.5H14v-3zm7-12h-6v3h6V3zm0 4h-6v3h6V7zm0 8h-6v3h6v-3zM9.6 19.3l-2.1-2.1-2.1 2.1-.7-.7 2.1-2.1-2.1-2.1.7-.7 2.1 2.1 2.1-2.1.7.7-2.1 2.1 2.1 2.1-.7.7z'/%3E%3C/svg%3E")}.device-android i.icon.icon-create-style{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M18.984 12c0 .544-.44.984-.984.984h-5.016V18a.984.984 0 1 1-1.968 0v-5.016H6a.984.984 0 1 1 0-1.968h5.016V6a.984.984 0 1 1 1.968 0v5.016H18c.544 0 .984.44.984.984Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-table-borders-all{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-all,.device-android i.icon.icon-table-borders-none{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-none{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z' opacity='.3'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-inner{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M26 13H14V1h-1v12H1v1h12v12h1V14h12v-1z'/%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-inner,.device-android i.icon.icon-table-borders-outer{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-outer{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h1v27H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-center,.device-android i.icon.icon-table-borders-left{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M13 0h1v27h-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M26 0h1v27h-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-right,.device-android i.icon.icon-table-borders-top{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h27v1H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 13h27v1H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-bottom,.device-android i.icon.icon-table-borders-middle{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-bottom{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 26h27v1H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-move-backward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h17v17H1z' opacity='.3'/%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-move-backward,.device-android i.icon.icon-move-forward{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-move-forward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z' opacity='.3'/%3E%3Cpath d='M1 1h17v17H1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-move-background,.device-android i.icon.icon-move-mask{background-color:var(--brand-word);height:28px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M8 8h13v13H8z' opacity='.3'/%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-move-foreground{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z' opacity='.3'/%3E%3Cpath d='M8 8h13v13H8z'/%3E%3C/svg%3E")}.device-android i.icon.icon-block-align-left,.device-android i.icon.icon-move-foreground{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-block-align-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h26v1H1zM1 4h26v1H1zM1 25h26v1H1zM1 22h26v1H1zM1 8h12v11H1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-block-align-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M0 1h26v1H0zM0 4h26v1H0zM0 25h26v1H0zM0 22h26v1H0zM7 8.08h12V19H7z'/%3E%3C/svg%3E")}.device-android i.icon.icon-block-align-center,.device-android i.icon.icon-block-align-right{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-block-align-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h26v1H1zM1 4h26v1H1zM1 25h26v1H1zM1 22h26v1H1zM15 8h12v11H15z'/%3E%3C/svg%3E")}.device-android i.icon.icon-link{height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M17.024 7c1.377 0 2.55.498 3.52 1.495C21.515 9.461 22 10.63 22 12c0 1.37-.485 2.555-1.455 3.552-.97.965-2.144 1.448-3.522 1.448H13v-2h4c.845 0 1.588-.212 2.183-.804.626-.623.817-1.355.817-2.196 0-.841-.19-1.558-.817-2.15-.595-.623-1.314-.85-2.16-.85H13V7h4.023Zm-9.015 5.981V11.02h7.982v1.962H8.009Zm-3.24-3.13C4.176 10.441 4 11.158 4 12s.175 1.573.77 2.196C5.396 14.788 6.155 15 7 15h4.014v2H6.977c-1.378 0-2.551-.483-3.522-1.448C2.485 14.555 2 13.37 2 12c0-1.37.485-2.539 1.455-3.505C4.425 7.498 5.6 7 6.977 7h4.037v2H6.977c-.846 0-1.581.227-2.207.85Z'/%3E%3C/svg%3E");width:22px}.device-android i.icon.icon-image-library,.device-android i.icon.icon-link{background-color:var(--brand-word);-webkit-mask-repeat:round;-webkit-mask-size:contain}.device-android i.icon.icon-image-library{height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M20 5.5H4a.5.5 0 0 0-.5.5v9.582l4.533-3.892a1.25 1.25 0 0 1 1.555-.06l3.985 2.928 2.389-1.88a1.25 1.25 0 0 1 1.631.073l2.907 2.745V6a.5.5 0 0 0-.5-.5Zm.5 12.03-.015.015-3.765-3.556-2.37 1.865a1.25 1.25 0 0 1-1.512.025L8.86 12.957 3.5 17.56V18a.5.5 0 0 0 .5.5h16a.5.5 0 0 0 .5-.5v-.47ZM4 4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H4Zm12.5 5.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z' clip-rule='evenodd'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='transparent' d='M0 0h24v24H0V0Z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");width:24px}.device-android i.icon.icon-pagenumber{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M18 4H6v16.028L18 20V4ZM4 4.5A2.5 2.5 0 0 1 6.5 2H18c.53 0 .986.203 1.392.61.374.376.608.858.608 1.39v16a2 2 0 0 1-2 2H6c-.53 0-.986-.188-1.392-.563A2.012 2.012 0 0 1 4 19.994V4.5ZM11.57 16h-1.386v-3.742h-.027L9 13.068v-1.23L10.184 11h1.386v5Zm2.59 0h-1.452l1.925-3.863v-.028h-2.262V11H16v1.105L14.16 16Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-pagenumber,.device-android i.icon.icon-sectionbreak{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-sectionbreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill='var(--brand-word)' clip-path='url(%23a)'%3E%3Cpath d='M3 11h4v2H3v-2ZM9 11h6v2H9v-2ZM17 11h4v2h-4v-2Z'/%3E%3Cpath fill-rule='evenodd' d='M18 4H6v5H4V4a2 2 0 0 1 2-2h12c.53 0 .986.203 1.392.61.374.376.608.858.608 1.39v5h-2V4ZM6 15v5.028L18 20v-5h2v5a2 2 0 0 1-2 2H6c-.53 0-.986-.188-1.392-.563A2.012 2.012 0 0 1 4 19.994V15h2Z' clip-rule='evenodd'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='transparent' d='M0 0h24v24H0V0Z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}.device-android i.icon.icon-footnote{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M12.117 18.798H10.11l-.74-2.15h-4.62l-.74 2.15H2l3.956-11.21h2.205l3.956 11.21Zm-3.246-3.882L7.059 9.571l-1.812 5.345H8.87ZM14.758 16.361c.17.303.433.56.785.773a2.22 2.22 0 0 0 1.087.303c.624 0 1.123-.247 1.495-.74.383-.504.574-1.154.574-1.95 0-.795-.191-1.444-.574-1.949-.372-.504-.87-.756-1.495-.756-.362 0-.72.107-1.072.32-.352.212-.62.476-.8.79v3.21Zm0 2.437h-1.586V7.588h1.586v4.219c.594-.885 1.374-1.328 2.34-1.328.947 0 1.722.392 2.326 1.177.604.773.906 1.803.906 3.092 0 1.31-.302 2.347-.906 3.11-.604.761-1.38 1.142-2.326 1.142-.956 0-1.736-.437-2.34-1.31v1.108ZM24 11.723h-1.223V6.748l-1.012 1.16-.695-.824L22.944 5H24v6.723Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-pagebreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill='var(--brand-word)' clip-path='url(%23a)'%3E%3Cpath fill-rule='evenodd' d='m6 8 4-.005V4L6 8Zm4 2H6v1H4V7l5-5h9c.53 0 .986.203 1.392.61.374.376.608.858.608 1.39v7h-2V4h-6v4a2 2 0 0 1-2 2Zm-4 7v3.028L18 20v-3h2v3a2 2 0 0 1-2 2H6c-.53 0-.986-.188-1.392-.563A2.012 2.012 0 0 1 4 19.994V17h2Z' clip-rule='evenodd'/%3E%3Cpath d='M3 13h4v2H3v-2ZM9 13h6v2H9v-2ZM17 13h4v2h-4v-2Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='transparent' d='M0 0h24v24H0V0Z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}.device-android i.icon.icon-pagebreak,.device-android i.icon.icon-stringbreak{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-stringbreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='m10 9.013 1.406 1.405-3.61 3.606h10.188V4.002H20v11.99H7.797l3.61 3.605L10 21.002l-6-5.994 6-5.995Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-users{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M15.5 7c0 2.262-.564 3.952-1.299 5.03-.743 1.091-1.578 1.47-2.201 1.47s-1.458-.379-2.201-1.47C9.064 10.953 8.5 9.263 8.5 7c0-2.077 1.722-3.5 3.5-3.5s3.5 1.423 3.5 3.5Zm-.654 6.622C14.006 14.519 13.004 15 12 15s-2.006-.48-2.846-1.378c-1.457.578-2.676 1.15-3.625 1.728C3.83 16.384 3.5 17.12 3.5 17.5c0 .51.264 1.198 1.547 1.84 1.328.666 3.562 1.16 6.953 1.16 3.39 0 5.625-.494 6.953-1.16 1.283-.642 1.547-1.33 1.547-1.84 0-.38-.329-1.116-2.03-2.15-.948-.577-2.167-1.15-3.624-1.728Zm.908-1.252C16.514 11.028 17 9.21 17 7c0-3-2.491-5-5-5S7 4 7 7c0 2.21.486 4.028 1.246 5.37C4.39 13.94 2 15.579 2 17.5 2 19.985 5 22 12 22s10-2.015 10-4.5c0-1.921-2.39-3.56-6.246-5.13Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-review,.device-android i.icon.icon-users{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-review{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M17.5 3.5h-13v17h13V18H19v2a2 2 0 0 1-2 2H5c-.53 0-.986-.188-1.392-.563A2.012 2.012 0 0 1 3 19.994V4a2 2 0 0 1 2-2h12c.53 0 .986.203 1.392.61.374.376.608.858.608 1.39v3h-1.5V3.5Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='m22.844 10.24-1.016 1.015-2.083-2.083 1.015-1.016A.53.53 0 0 1 21.151 8a.53.53 0 0 1 .39.156l1.303 1.302A.53.53 0 0 1 23 9.85a.53.53 0 0 1-.156.39ZM13 15.917l6.146-6.146 2.083 2.083L15.083 18H13v-2.083ZM7 15.5h4V17H7v-1.5ZM7 11h6v1.5H7V11ZM7 7h8v1.5H7V7Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-review-changes{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M20.5 4.5v15h-17v-15h17ZM22 19V5a2 2 0 0 0-2-2H4.005c-.532 0-1.035.203-1.442.608C2.188 4.014 2 4.47 2 5v14a2 2 0 0 0 2 2h16c.532 0 1.014-.234 1.39-.608.407-.406.61-.862.61-1.392Z'/%3E%3Cpath fill='var(--brand-word)' d='M6 15h12v1.5H6V15ZM6 11h12v1.5H6V11ZM6 7h12v1.5H6V7Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-accept-changes,.device-android i.icon.icon-review-changes{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-accept-changes{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%2340865C' d='M13.397 19.288 21.65 11 23 12.356 13.397 22 9 17.585l1.35-1.356 3.047 3.059Z'/%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M20.5 8V4.5h-17v13H7V19H4a2 2 0 0 1-2-2V5c0-.53.188-.986.563-1.392C2.97 3.203 3.473 3 4.005 3H20a2 2 0 0 1 2 2v3h-1.5Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='M6 8h12v1.5H6V8ZM6 12h10v1.5H6V12Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-reject-changes{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23C60915' d='M23 13.41 19.41 17 23 20.59 21.59 22 18 18.41 14.41 22 13 20.59 16.59 17 13 13.41 14.41 12 18 15.59 21.59 12 23 13.41Z'/%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M20.5 10V4.5h-17v13H11V19H4a2 2 0 0 1-2-2V5c0-.53.188-.986.563-1.392C2.97 3.203 3.473 3 4.005 3H20a2 2 0 0 1 2 2v5h-1.5Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='M6 8h12v1.5H6V8ZM6 12h5v1.5H6V12Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-accept,.device-android i.icon.icon-reject-changes{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-accept{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='m9 18-7-7-1 1 8 8L23 6l-1-1L9 18Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-reject{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M5 4 4 5l7 7-7 7 1 1 7-7 7 7 1-1-7-7 7-7-1-1-7 7-7-7Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-next-change,.device-android i.icon.icon-reject{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-next-change{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='m9.984 6 6 6-6 6-1.406-1.406L13.172 12 8.578 7.406 9.984 6Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-prev-change{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M15.422 7.406 10.828 12l4.594 4.594L14.016 18l-6-6 6-6 1.406 1.406Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-goto,.device-android i.icon.icon-prev-change{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-goto{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M20.5 3.5h-17v17h17v-17ZM3.5 2H2v20h20V2H3.5Zm11.19 6.25H9v-1.5h8.25V15h-1.5V9.31l-8.22 8.22-1.06-1.06 8.22-8.22Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-menu-comment{background-color:var(--text-tertiary);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--text-tertiary)' fill-opacity='.6' d='M16.605 16.585c.403-.406.868-.608 1.395-.608s.992.202 1.395.608c.403.405.605.873.605 1.403s-.202.998-.605 1.404c-.403.405-.868.608-1.395.608s-.992-.203-1.395-.608c-.403-.406-.605-.873-.605-1.404 0-.53.202-.998.605-1.403Zm0-5.988c.403-.406.868-.609 1.395-.609s.992.203 1.395.609c.403.405.605.873.605 1.403s-.202.998-.605 1.403c-.403.406-.868.609-1.395.609s-.992-.203-1.395-.609C16.202 12.999 16 12.53 16 12s.202-.998.605-1.403Zm2.79-3.182c-.403.406-.868.608-1.395.608s-.992-.202-1.395-.608C16.202 7.01 16 6.542 16 6.012s.202-.998.605-1.404C17.008 4.203 17.473 4 18 4s.992.203 1.395.608c.403.406.605.873.605 1.404 0 .53-.202.998-.605 1.403Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-resolve-comment{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-resolve-comment.check{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%234cd964' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E");height:24px;width:24px}.device-android i.icon.icon-done-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-done-comment,.device-android i.icon.icon-insert-comment{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-insert-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M19.5 3h-15C3.19 3 2 4.215 2 5.503v9.532c0 1.287 1.19 1.978 2.5 1.978h1c.328 0 .5.179.5.5V21l6-4h8a2 2 0 0 0 2-2V8h-1.5v6.5a1 1 0 0 1-1 1h-8l-4 2.5v-2.5h-3a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1h15a1 1 0 0 1 1 1V8H22V5.503C22 4.215 20.81 3 19.5 3Z'/%3E%3Cpath fill='var(--brand-word)' d='M6 7.5h12V9H6V7.5ZM6 11h12v1.5H6V11Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-done-comment-white{background-color:var(--fill-white);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--fill-white)' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-format-docx{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='24' fill='none'%3E%3Cpath fill='%23446995' fill-rule='evenodd' d='M4.5 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3h-16Zm1 6.5h14v1h-14v-1Zm0 4h14v1h-14v-1Zm14 4h-14v1h14v-1Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-docxf{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='24' fill='none'%3E%3Cpath fill='%2327ABA3' fill-rule='evenodd' d='M4.5 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3h-16Zm15 6h-14v3h14V7Zm-15-1v5h16V6h-16Zm1 8h14v3h-14v-3Zm-1 4v-5h16v5h-16Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-oform{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='24' fill='none'%3E%3Cpath fill='%23188079' fill-rule='evenodd' d='M4.5 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3h-16Zm15 6h-14v10h14V7Zm-14-1h-1v12h16V6h-15Zm4 3h-2v1h2v4h-2v1h2v-1h1v1h2v-1h-2v-4h2V9h-2v1h-1V9Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-txt{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23757575' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H4Zm1 6.5h14v1H5v-1Zm0 4h14v1H5v-1Zm14 4H5v1h14v-1Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-rtf{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23635E9B' fill-rule='evenodd' d='M1 4a3 3 0 0 1 3-3h16a3 3 0 0 1 3 3v16a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3V4Zm18 3.5h-7v1h7v-1Zm0 4h-7v1h7v-1Zm0 4v1H5v-1h14Zm-9-8H5v5h5v-5Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-odt{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='24' fill='none'%3E%3Cpath fill='%233C6D88' fill-rule='evenodd' d='M1.5 4a3 3 0 0 1 3-3h16a3 3 0 0 1 3 3v16a3 3 0 0 1-3 3h-16a3 3 0 0 1-3-3V4Zm18.952 3.749c-.026-.02-.053-.037-.08-.054l-.02-.013a4.236 4.236 0 0 0-1.763-.651c-1.114-.14-2.179.2-3.078.89a4.32 4.32 0 0 0-2.066-.86c-1.035-.13-2.028.155-2.885.751l-.01.008-.015.01a.135.135 0 0 0-.035.093c0 .066.04.12.09.12l.013-.003.007-.002a3.93 3.93 0 0 1 1.431-.084c1.376.173 2.575.737 3.416 2.002.044.06.083.057.128-.003 1.058-1.627 2.68-2.27 4.424-2.051.097.012.193.028.289.047l.029.006c.029.006.062.013.084.016.058.009.089-.053.089-.119 0-.044-.015-.082-.048-.103Zm-1.026 5.026.01.006c.038.024.064.075.064.136 0 .083-.051.151-.114.151l-.164-.016a5.975 5.975 0 0 0-.547-.026c-2.574 0-4.885 1.254-6.288 3.796l-.04.074-.026.048c-.021.035-.053.056-.088.056a.097.097 0 0 1-.075-.037l-.002-.004-.007-.008c-1.38-1.722-3.215-2.367-5.272-2.367a5.987 5.987 0 0 0-2.24.44.086.086 0 0 1-.023.003c-.063 0-.114-.068-.114-.151a.17.17 0 0 1 .044-.12l.004-.003a.155.155 0 0 1 .009-.008C5.787 13.644 7.267 13 8.863 13c1.122 0 2.188.319 3.15.89C13.273 12.701 14.815 12 16.48 12c1.042 0 2.035.276 2.943.773l.003.002Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-html{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%237C9A34' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H4Zm10.75 7.5 5.503 3.082v.954L14.753 15v-1.096l4.174-1.92-4.177-2.309V8.5Zm-2.124-1h1l-2.249 9h-1l2.25-9Zm-3.373 1L3.75 11.582v.954L9.25 15v-1.096l-4.174-1.92 4.177-2.309V8.5Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-dotx{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23A8A8A8' fill-rule='evenodd' d='M18 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm.746 10v-5.27h2.506v-1.234h-6.504v1.235h2.479V22h1.519Z' clip-rule='evenodd'/%3E%3Cpath fill='%23446995' fill-rule='evenodd' d='M1 4a3 3 0 0 1 3-3h16a3 3 0 0 1 3 3v9.101A7.003 7.003 0 0 0 11.46 15.5H5v1h6.161A7.026 7.026 0 0 0 11 18c0 1.959.805 3.73 2.101 5H4a3 3 0 0 1-3-3V4Zm4 3.5h14v1H5v-1Zm0 4h8v1H5v-1Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-ott{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23A8A8A8' fill-rule='evenodd' d='M18 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm.746 10v-5.27h2.506v-1.234h-6.504v1.235h2.479V22h1.519Z' clip-rule='evenodd'/%3E%3Cpath fill='%233C6D88' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h9.101A6.979 6.979 0 0 1 11 18c0-.542.062-1.07.178-1.577-1.315-1.328-2.97-1.839-4.801-1.839a5.987 5.987 0 0 0-2.24.44.086.086 0 0 1-.023.003c-.063 0-.114-.068-.114-.151a.17.17 0 0 1 .044-.12l.004-.003a.155.155 0 0 1 .009-.008C5.287 13.644 6.767 13 8.363 13c1.122 0 2.188.319 3.15.89a7.139 7.139 0 0 1 2.244-1.459A6.97 6.97 0 0 1 18 11c1.959 0 3.73.805 5 2.101V4a3 3 0 0 0-3-3H4Zm15.952 6.749c-.026-.02-.053-.037-.08-.054l-.02-.013a4.236 4.236 0 0 0-1.763-.651c-1.114-.14-2.179.2-3.078.89a4.32 4.32 0 0 0-2.066-.86c-1.035-.13-2.028.155-2.885.751l-.01.008-.015.01a.135.135 0 0 0-.035.093c0 .066.04.12.09.12l.013-.003.007-.002a3.93 3.93 0 0 1 1.431-.084c1.376.173 2.575.737 3.416 2.002.044.06.083.057.128-.003 1.058-1.627 2.68-2.27 4.424-2.051.097.012.193.028.289.047l.029.006c.029.006.062.013.084.016.058.009.089-.053.089-.119 0-.044-.015-.082-.048-.103Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-protect-document{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M9 1 3 7v15h7v-1H4V8h6V2h9v8h1V1H9ZM4.414 7 9 2.414V7H4.414Z' clip-rule='evenodd'/%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill-rule='evenodd' d='M14.5 15.5V17h-1v-1.5a3.5 3.5 0 1 1 7 0V17h-1v-1.5a2.5 2.5 0 0 0-5 0Zm-1 2.5h7s.5 0 .5.5v4c0 .5-.5.5-.5.5h-7s-.5 0-.5-.5v-4c0-.5.5-.5.5-.5ZM12 18c0-1 1-1 1-1h8s1 0 1 1v4.667C22 23.31 21.644 24 21 24h-8s-1 0-1-1v-5Zm5.583 2.402a.875.875 0 1 0-1.167 0v1.681h1.167v-1.68Z' clip-rule='evenodd'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M11 12h12v12H11z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}i.icon.icon-protect-document,i.icon.icon-protection{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}i.icon.icon-protection{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M12 2a6 6 0 0 1 6 6v2h1a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h1V8a6 6 0 0 1 6-6Zm5 8V8A5 5 0 0 0 7 8v2h10ZM4 12a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-8Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-encrypt-file{background-color:var(--brand-word);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M12 2a6 6 0 0 1 6 6v2h1a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h1V8a6 6 0 0 1 6-6Zm5 8V8A5 5 0 0 0 7 8v2h10ZM4 12a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-8Zm9 4.119a1.5 1.5 0 1 0-2 0v2.881h2v-2.881Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}i.icon.icon-format-fb2{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='none'%3E%3Cpath fill='%23B07408' fill-rule='evenodd' d='M3 0a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3H3Zm11.264 5c-1.516 0-2.829.635-3.261 1.212C10.565 5.635 9.252 5 7.736 5 5.863 5 4.3 5.952 4 6.778v9.619c0 .428.288.603.608.603.257 0 .411-.08.56-.201.348-.339 1.212-.857 2.568-.857 1.361 0 2.3.508 2.61.825.144.122.331.233.657.233.32 0 .501-.122.65-.233.332-.301 1.255-.825 2.61-.825 1.357 0 2.226.524 2.568.857.15.122.304.201.566.201.315 0 .603-.175.603-.603v-9.62C17.701 5.953 16.137 5 14.264 5ZM4.95 15.884v-8.82c.123-.408 1.2-1.186 2.786-1.186 1.59 0 2.685.784 2.792 1.186v8.799c-.63-.514-1.66-.8-2.792-.8-1.126 0-2.156.286-2.786.82Zm12.1-8.82c-.123-.408-1.196-1.186-2.786-1.186s-2.685.784-2.792 1.186v8.799c.63-.514 1.666-.8 2.792-.8s2.156.286 2.786.82v-8.82Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-epub{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='none'%3E%3Cpath fill='%235892B6' fill-rule='evenodd' d='M3 0a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3H3Zm3.372 11L11 15.714l5.427-5.571.372.371a.687.687 0 0 1 0 .972l-5.313 5.313a.687.687 0 0 1-.972 0l-5.313-5.313a.687.687 0 0 1 0-.972l5.313-5.313a.687.687 0 0 1 .972 0L14.5 8.215l-3.77 3.77-.858-.856 2.971-2.971L11 6.286 6.372 11Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-save-form{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M3 5a2 2 0 0 1 2-2h10.379a2 2 0 0 1 1.414.586l3.621 3.621A2 2 0 0 1 21 8.621V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5Zm2-1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h1v-6a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v6h1a1 1 0 0 0 1-1V8.621a1 1 0 0 0-.293-.707L15.793 4H15v3a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4H5Zm8 0v3h1V4h-1Zm4 16v-6a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v6h10Zm-2-5a.5.5 0 0 1 0 1H9a.5.5 0 0 1 0-1h6Zm-2.5 2.5a.5.5 0 0 1-.5.5H9a.5.5 0 0 1 0-1h3a.5.5 0 0 1 .5.5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-add-favorites,i.icon.icon-save-form{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-add-favorites{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='m12 3.604-2.134 5.13a1.5 1.5 0 0 1-1.265.918l-5.538.444 4.22 3.614a1.5 1.5 0 0 1 .482 1.488L6.476 20.6l4.741-2.895a1.5 1.5 0 0 1 1.564 0l4.741 2.895-1.289-5.403a1.5 1.5 0 0 1 .483-1.488l4.22-3.614-5.538-.444a1.5 1.5 0 0 1-1.265-.919l-2.134-5.13Zm.461-1.494a.5.5 0 0 0-.923 0L8.943 8.35a.5.5 0 0 1-.422.305l-6.736.54a.5.5 0 0 0-.285.879l5.132 4.396a.5.5 0 0 1 .16.495L5.226 21.54a.5.5 0 0 0 .747.542l5.767-3.522a.5.5 0 0 1 .521 0l5.767 3.522a.5.5 0 0 0 .747-.542l-1.568-6.574a.5.5 0 0 1 .161-.495l5.132-4.396a.5.5 0 0 0-.285-.878l-6.736-.54a.5.5 0 0 1-.422-.307l-2.595-6.24Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-remove-favorites{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M12.461 2.11a.5.5 0 0 0-.923 0L8.943 8.35a.5.5 0 0 1-.422.305l-6.736.54a.5.5 0 0 0-.285.879l5.132 4.396a.5.5 0 0 1 .16.495L5.226 21.54a.5.5 0 0 0 .747.542l5.767-3.522a.5.5 0 0 1 .521 0l5.767 3.522a.5.5 0 0 0 .747-.542l-1.568-6.574a.5.5 0 0 1 .161-.495l5.132-4.396a.5.5 0 0 0-.285-.878l-6.736-.54a.5.5 0 0 1-.422-.307l-2.595-6.24Z'/%3E%3C/svg%3E")}i.icon.icon-clear-fields,i.icon.icon-remove-favorites{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-clear-fields{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M17.648 4.083a3.783 3.783 0 0 0-5.3 0l-9.25 9.127a3.662 3.662 0 0 0 0 5.228l2.376 2.345.22.217h14.55v-1.479h-6.435l7.094-6.998a3.662 3.662 0 0 0 0-5.229l-3.255-3.211ZM11.69 19.52l5.246-5.176L10.5 7.997l-6.344 6.258a2.197 2.197 0 0 0 0 3.138l2.158 2.128h5.375Zm-.129-12.57 6.435 6.348 1.847-1.822a2.197 2.197 0 0 0 0-3.137l-3.255-3.211a2.27 2.27 0 0 0-3.18 0L11.561 6.95Z' clip-rule='evenodd'/%3E%3C/svg%3E")}:root{--f7-popover-width:360px}.doc-placeholder{background:#fbfbfb;height:100%;overflow:hidden;padding-top:calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-subnavbar-offset, 0px));position:relative}.doc-placeholder>.line{-webkit-animation:flickerAnimation 2s ease-in-out infinite;-moz-animation:flickerAnimation 2s ease-in-out infinite;-o-animation:flickerAnimation 2s ease-in-out infinite;animation:flickerAnimation 2s ease-in-out infinite;background:#e2e2e2;height:15px;margin:30px;overflow:hidden;position:relative}.page.page-with-subnavbar .page-content,.page.page-with-subnavbar.page-with-logo .page-content{--f7-page-subnavbar-offset:0;padding-top:0}.page.editor>.page-content{--f7-page-navbar-offset:0}.page-review{--f7-toolbar-link-color:var(--brand-word)}.page-review .toolbar{background-color:var(--background-secondary);box-shadow:0 1px 10px rgba(0,0,0,.2);position:absolute}.page-review .toolbar #btn-goto-change{margin-left:10px}.page-review .toolbar .next-prev .link{width:44px}.page-review .page-content .no-changes{color:var(--text-normal);padding:15px}.page-review .page-content .block-description{padding:15px}.page-review .page-content .block-description .user-name{color:var(--text-normal);font-size:17px;line-height:22px;margin:0}.page-review .page-content .block-description .date-change{color:var(--text-secondary);font-size:14px;line-height:18px;margin:3px 0 0}.page-review .page-content .block-description .text{color:var(--text-normal);font-size:15px;line-height:20px;margin:10px 0 0}.item-content .preview{color:#c4c4c4}.phone .swiper-container,.tablet .swiper-container{position:static}.swiper-container .swiper-pagination-bullet-active{background:#000000}.table-styles .row div:not(:first-child){margin:2px auto 0}.table-styles .row div,.table-styles .skeleton-list li{padding:0}.table-styles .row .skeleton-list{display:block;height:50px;width:70px}.item-contents{padding:0 16px}.style-toc__image{margin:0 15px;max-height:150px;overflow:hidden}.style-toc__image_active{border:1.5px solid var(--brand-word)}.block>.block-title:first-child,.list>.block-title:first-child{margin-left:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));margin-right:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));margin-top:var(--f7-block-margin-vertical)}.empty-screens{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center}.empty-screens__icon{margin-bottom:48px}.empty-screens__text{color:var(--text-normal);margin:0 32px;text-align:center}.swipe-container{background-color:var(--background-primary);display:flex;height:40px;justify-content:center}.swipe-container .icon-swipe{background:var(--background-menu-divider);border-radius:2px;height:4px;margin-top:8px;width:40px}.sheet-modal.navigation-sheet{box-shadow:0 -2px 20px rgba(0,0,0,.2)}.sheet-modal.navigation-sheet .sheet-modal-inner{background:var(--background-tertiary);overflow-y:auto}.sheet-modal.navigation-sheet .swipe-container{position:fixed;top:0;width:100%;z-index:1000}.sheet-modal.navigation-sheet.sheet-modal-bottom:before,.sheet-modal.navigation-sheet.sheet-modal:not(.sheet-modal-top):before{display:none}.list.navigation-list{margin-top:72px}.list.navigation-list .item-title{color:var(--text-normal)}.navigation-sheet__title{left:0;position:fixed;right:0;top:40px;width:100%;z-index:100;z-index:1000}.calendar,.calendar .toolbar{background-color:var(--background-secondary)}.calendar .toolbar i.icon.icon-next,.calendar .toolbar i.icon.icon-prev{background-color:var(--text-normal)}.calendar .toolbar:after{background-color:var(--background-menu-divider)}.calendar .calendar-row{padding:0 16px}.calendar .calendar-row:before{display:none}.calendar .current-month-value,.calendar .current-year-value{color:var(--text-normal);font-size:16px}.calendar .calendar-day-selected .calendar-day-number,.calendar .calendar-day-today.calendar-day-selected .calendar-day-number{background-color:var(--brand-word);border:1px solid transparent;color:var(--fill-white)}.calendar .calendar-day-selected.calendar-day-weekend .calendar-day-number{color:var(--fill-white)}.calendar .calendar-day-today .calendar-day-number{background-color:initial;border:1px solid var(--brand-word)}.calendar .calendar-day-weekend .calendar-day-number{color:var(--text-secondary)}.calendar .calendar-day-number{border-radius:16px;color:var(--text-normal);font-size:14px;font-weight:500;height:32px;width:47px}.calendar .calendar-week-header{background-color:var(--background-secondary);border-bottom:1px solid var(--background-menu-divider);color:var(--text-normal);height:auto;margin:25px 16px 10px;padding-bottom:5px}.calendar .calendar-week-header .calendar-week-day{color:var(--text-normal);font-size:12px}.calendar .calendar-months{margin-bottom:12px}.calendar .calendar-month-picker-item,.calendar .calendar-year-picker-item{color:var(--text-normal)}.calendar .calendar-month-picker-item:after,.calendar .calendar-month-picker-item:before,.calendar .calendar-year-picker-item:after,.calendar .calendar-year-picker-item:before{background-color:var(--background-menu-divider)}.calendar .calendar-month-picker,.calendar .calendar-year-picker{background:var(--background-secondary)}.calendar .calendar-month-picker-item-current,.calendar .calendar-year-picker-item-current{color:var(--brand-word)}.calendar-sheet .calendar-month-picker,.calendar-sheet .calendar-year-picker{border-top:1px solid var(--background-menu-divider)}.create-style-link .item-link .item-inner:before{display:none}.create-style-link .item-title{color:var(--brand-word)}.fab{z-index:10000}.fab a{background-color:var(--background-primary);border-radius:50%}.fab a.active-state,.fab a:active,.fab a:focus,.fab a:focus-within{background-color:var(--background-primary)}.fab-enter,.snackbar-enter{opacity:0}.fab-enter-active,.snackbar-enter-active{opacity:1;transition:opacity .3s}.fab-exit,.snackbar-exit{opacity:1}.fab-exit-active,.snackbar-exit-active{opacity:0;transition:opacity .3s} +/*# sourceMappingURL=526.css.map*/ \ No newline at end of file diff --git a/apps/documenteditor/mobile/css/526.css.map b/apps/documenteditor/mobile/css/526.css.map new file mode 100644 index 0000000000..965d4ec9ce --- /dev/null +++ b/apps/documenteditor/mobile/css/526.css.map @@ -0,0 +1 @@ +{"version":3,"file":"css/526.css","mappings":";;;;GACA,MACI,oBAAqB,CACrB,oBAAqB,CACrB,qBAAsB,CACtB,oBAAqB,CACrB,uBAAwB,CACxB,yBAA0B,CAC1B,0BAA2B,CAE3B,yBAA0B,CAC1B,2BAA4B,CAC5B,6BAA8B,CAC9B,8CACA,2BAA4B,CAE5B,qBAAsB,CACtB,iCACA,gCACA,mBAAoB,CACpB,oBAAqB,CAErB,iBAAkB,CAClB,iBAAkB,CAElB,4BAA6B,CAC7B,oBAAqB,CACrB,yBAA0B,CAC1B,2CAEA,iCAEA,2CACA,4CACA,0CAEA,gCAAiC,CAIjC,wBAAyB,CACzB,gCAAiC,CACjC,yBAA0B,CAE1B,8BAA+B,CAE/B,yCAA0C,CAC1C,wBAAyB,CACzB,iCAAkC,CAClC,0CAA2C,CAE3C,2BAA4B,CAG5B,yBAA0B,CAC1B,yCACA,sCAAuC,CACvC,+CAAgD,CAChD,kCAAmC,CACnC,2CCfJ,CD3CA,gBAyEQ,8BC3BR,CD6BQ,yBACI,sCC3BZ,CCjDA,yCAGQ,4BAA6B,CAC7B,2BAA4B,CAC5B,6BAA8B,CAC9B,6CACA,2BAA4B,CAE5B,qCACA,uCACA,sCACA,mBAAoB,CACpB,oBAAqB,CAErB,iBAAkB,CAClB,iBAAkB,CAElB,oBAAqB,CACrB,oBAAqB,CACrB,qBAAsB,CACtB,oBAAqB,CACrB,uBAAwB,CACxB,yBAA0B,CAC1B,0BAA2B,CAE3B,4BAA6B,CAC7B,uBAAwB,CACxB,sBAAuB,CACvB,4BAA6B,CAE7B,iCAIA,2CACA,4CACA,0CAEA,sDAAuD,CAIvD,wBAAyB,CACzB,gCAAiC,CACjC,4BAA6B,CAE7B,iCAAkC,CAElC,yCAA0C,CAC1C,2BAA4B,CAC5B,oCAAqC,CACrC,6CAA8C,CAE9C,2BAA4B,CAG5B,qCACA,kCAAmC,CACnC,wCAAyC,CACzC,wCAAyC,CACzC,+CACA,mCAAoC,CACpC,+CDiCR,CChGA,2DAgFQ,8BDoBR,CClBQ,6EACI,8CDqBZ,CEzGA,sDAMgB,wBAA0B,CAD1B,iBAAkB,CADlB,kBF0GhB,CE9GA,uEAWgB,SAAU,CADV,UFwGhB,CElHA,kIAmBY,gBAAiB,CADjB,cFqGZ,CEvHA,6DAyBY,gBFiGZ,CE5FQ,kDACI,cAAe,CACf,kBF8FZ,CEzFA,mJAMQ,cF2FR,CEjGA,oEAWY,yBFyFZ,CEpGA,mEAeY,yBFwFZ,CEvGA,mEAqBQ,SAAU,CADV,UFuFR,CE3GA,mKA2BgB,+EFoFhB,CE/GA,iKA8BgB,+EFqFhB,CEnHA,0EAsCgB,aAAgB,CAChB,iBFgFhB,CEvHA,6EA6CQ,aAAc,CACd,iBF6ER,CE3HA,uHAmDQ,gBAAiB,CADjB,cFiFR,CEnIA,yFA4DQ,iBF0ER,CEtEA,kDAEQ,cFuER,CEzEA,yEAKgB,6BFuEhB,CE5EA,0FAQoB,gBAAiB,CADjB,cFyEpB,CEhFA,wEAagB,gBFsEhB,CEnFA,yBAoBQ,aAAc,CADd,4CAA6C,CAE7C,iBAAkB,CAClB,kBFmER,CEzFA,8CA2BQ,iBAAkB,CADlB,eFoER,CE9FA,k5BAmCQ,gBFyER,CE5GA,oDAuCQ,wBFwER,CE/GA,wBA2CQ,wBFuER,CElHA,yBAgDY,oBFqEZ,CErHA,kEAuDY,cFkEZ,CEzHA,+BA6DY,eF+DZ,CE5HA,0CAmEY,iBF4DZ,CE/HA,kCAwEQ,qBF0DR,CElIA,uGA6EY,eF0DZ,CEvIA,kCAkFQ,SAAU,CACV,WFwDR,CE3IA,uHAuFQ,eFyDR,CEhJA,sIA2FQ,cAAe,CACf,kBF0DR,CEtJA,wFAqGQ,aAAc,CACd,iBFwDR,CE9JA,6DA2GQ,iBAAkB,CADlB,eFwDR,CElKA,wDAiHQ,QAAS,CADT,UFsDR,CEjDA,yBACI,iGAGQ,aAAc,CADd,iBFmDV,CErDE,+DAOQ,aFiDV,CE7CE,oGAGQ,gBAAiB,CADjB,cF+CV,CACF,CGrRQ,yZAGI,oBH+RZ,CG5RQ,gCCON,q8CJwRF,CG3RQ,gCCGN,+nFJ2RF,CG1RQ,gCCDN,m3CJ8RF,CGzRQ,gCCLN,o+FJiSF,CGxRQ,gCCTN,yyDJoSF,CGpRQ,mEACI,oBHuRZ,CGhRQ,kDCrCN,mCACA,unCAEA,yBAA0B,CAD1B,yBJyTF,CGlRQ,kDCzCN,mCACA,8sCAEA,yBAA0B,CAD1B,yBJ+TF,CGpRQ,kDC7CN,mCACA,2sCAEA,yBAA0B,CAD1B,yBJqUF,CAlUA,YACI,mDAA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EE,2BP+UF,CO7UA,+BAEE,+BP+UF,CO7UA,8DAIE,+BP+UF,CO7UA,+BAEE,2BP+UF,CO7UA,+BAEE,+BP+UF,CO7UA,+BAEE,+BP+UF,CO7UA,+BAEE,2BP+UF,CO7UA,+BAEE,+BP+UF,CO7UA,+BAEE,2BP+UF,CO7UA,+BAEE,+BP+UF,CO7UA,+BAEE,+BP+UF,CO7UA,+BAEE,2BP+UF,CO7UA,+BAEE,+BP+UF,CO7UA,mDAGE,+BP+UF,CO7UA,iBACE,+BP+UF,CO7UA,iBACE,+BP+UF,CO7UA,+BAEE,4BP+UF,CO7UA,iBACE,gCP+UF,CO7UA,iBACE,4BP+UF,CO7UA,sBACE,gCP+UF,CO7UA,gDAGE,gCP+UF,CO7UA,+BAEE,4BP+UF,CO7UA,0BACE,gCP+UF,CO7UA,iBACE,gCP+UF,CO7UA,iBACE,4BP+UF,CO7UA,+BAEE,gCP+UF,CO7UA,+BAEE,gCP+UF,CO7UA,+BAEE,4BP+UF,CO7UA,+BAEE,gCP+UF,CO7UA,+BAEE,gCP+UF,CO7UA,+BAEE,4BP+UF,CO7UA,0DAGE,gCP+UF,CO7UA,+BAEE,gCP+UF,CO7UA,+BAEE,4BP+UF,CO7UA,gDAGE,gCP+UF,CO7UA,+BAEE,gCP+UF,CO7UA,+BAEE,4BP+UF,CO7UA,iBACE,gCP+UF,CO5UA,mBAGI,kBAAmB,CADnB,YAAa,CADb,ePgVJ,COjVA,+BAKQ,gBP+UR,CO3UA,cAEI,cAIA,YAAa,CALb,WAAY,CAQZ,SAAU,CANV,cAAe,CAIf,mBAAoB,CAHpB,iBAAkB,CAIlB,gCAAkC,CAHlC,WPiVJ,CO5UI,qBACI,aAAc,CACd,SP8UR,CO1UA,iBACI,aP4UJ,CO7UA,gCAGQ,SP6UR,COhVA,yCASY,cAAe,CAFf,SAAU,CACV,eP6UZ,COrVA,0CAcQ,MAAO,CACP,OAAQ,CAFR,UP6UR,COvUA,iCAEQ,qBPwUR,COnUA,4BACI,GAAO,UPsUT,COrUE,IAAO,SPwUT,COvUE,GAAO,UP0UT,CACF,COzUA,+BACI,GAAO,UP4UT,CO3UE,IAAO,SP8UT,CO7UE,GAAO,UPgVT,CACF,CO/UA,iCACI,GAAO,UPkVT,COjVE,IAAO,SPoVT,COn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,gBT61DhB,CSnjFA,0DA6tBQ,2CTy1DR,CStjFA,+CAsuBQ,2BAHA,cAAe,CAFf,iBAAkB,CAClB,eAAgB,CAGhB,oBAAsB,CADtB,gBAAiB,CAGjB,gBTw1DR,CS/jFA,wCA2uBQ,wCACA,eTu1DR,CSnkFA,uDAivBY,YTq1DZ,CStkFA,iFAqvBY,oBTo1DZ,CUrkFY,8CACI,mGACA,uBVukFhB,CUlkFQ,6BACI,sBVokFZ,CUlkFQ,6BAGI,+FACA,uBAAwB,CAFxB,WAAY,CADZ,WVukFZ,CUlkFQ,6BNlBN,mCMoBU,WAAY,CNnBtB,4NAEA,yBAA0B,CAD1B,yBAA0B,CMiBhB,UVykFZ,CUtkFY,mCACE,YVwkFd,CUrkFQ,6BN1BN,mCM4BU,WAAY,CN3BtB,oOAEA,yBAA0B,CAD1B,yBAA0B,CMyBhB,UV4kFZ,CUzkFY,mCACI,YV2kFhB,CUxkFQ,6BNlCN,mCMoCU,WAAY,CNnCtB,+UAEA,yBAA0B,CAD1B,yBAA0B,CMiChB,UV+kFZ,CU3kFQ,sCNtCN,8iBJynFF,CU9kFQ,4EN5CN,uCMyCU,WAAY,CNtCtB,yBAA0B,CAD1B,yBAA0B,CMsChB,UV0lFZ,CUtlFQ,sCN3CN,siCJioFF,CUjlFQ,+BNjDN,mCMmDU,WAAY,CNlDtB,0cAEA,yBAA0B,CAD1B,yBAA0B,CMgDhB,UVwlFZ,CWzoFQ,iCACI,mCX2oFZ,CWzoFQ,iCAGI,mGACA,uBAAwB,CAFxB,WAAY,CADZ,WX8oFZ,CWzoFQ,iCPVN,mCOYU,WAAY,CPXtB,4OAEA,yBAA0B,CAD1B,yBAA0B,COShB,UXgpFZ,CW7oFY,uCACE,YX+oFd,CW5oFQ,iCPlBN,mCOoBU,WAAY,CPnBtB,uOAEA,yBAA0B,CAD1B,yBAA0B,COiBhB,UXmpFZ,CWhpFY,uCACI,YXkpFhB,CW/oFQ,0CPzBN,q1BJgrFF,CWlpFQ,oFP/BN,uCO4BU,WAAY,CPzBtB,yBAA0B,CAD1B,yBAA0B,COyBhB,UX8pFZ,CW1pFQ,0CP9BN,2hCJwrFF,CWlpFY,iDPvCV,mCOyCc,WAAY,CPxC1B,0LAEA,yBAA0B,CAD1B,yBAA0B,COsCZ,UXypFhB,CWjpFY,kDPhDV,sCOkDc,WAAY,CPjD1B,izCAEA,yBAA0B,CAD1B,yBAA0B,CO+CZ,UXwpFhB,CWppFY,yCACI,0BXspFhB,CWppFY,yCPxDV,sCO0Dc,WAAY,CPzD1B,gTAEA,yBAA0B,CAD1B,yBAA0B,COuDZ,UX2pFhB,CWvpFY,0CP7DV,oCO+Dc,WAAY,CP9D1B,gTAEA,yBAA0B,CAD1B,yBAA0B,CO4DZ,UX8pFhB,CW1pFY,kDPlEV,qCJouFF,CW7pFY,2FAHI,WAAY,CPnE1B,8NAEA,yBAA0B,CAD1B,yBAA0B,COiEZ,UXyqFhB,CWrqFY,yCPvEV,kCJ4uFF,CWhqFY,2CP3EV,qSJmvFF,CWnqFY,+FPjFV,sCO8Ec,WAAY,CP3E1B,yBAA0B,CAD1B,yBAA0B,CO2EZ,UX+qFhB,CW3qFY,oDPhFV,8XJ2vFF,CWtqFY,2CPtFV,sCOwFc,WAAY,CPvF1B,wZAEA,yBAA0B,CAD1B,yBAA0B,COqFZ,UX6qFhB,CYnwFI,kBRAF,sYJ2wFF,CYtwFI,mCRNF,oCQGM,WAAY,CRAlB,yBAA0B,CAD1B,yBAA0B,CQApB,UZkxFR,CY9wFI,iBRLF,oaJmxFF,CYzwFI,gBRXF,oCQaM,WAAY,CRZlB,0nCAEA,yBAA0B,CAD1B,yBAA0B,CQUpB,UZgxFR,CY5wFI,8CACI,YZ+wFR,CY7wFI,0BRnBF,mCQqBM,WAAY,CRpBlB,izCAEA,yBAA0B,CAD1B,yBAA0B,CQkBpB,UZoxFR,CYhxFI,yBRXF,8fQaM,WAAY,CADZ,UZoxFR,CYhxFI,yBRhBF,yqBQkBM,WAAY,CADZ,UZoxFR,CYhxFI,kBRlCF,mCQoCM,WAAY,CRnClB,6ZAEA,yBAA0B,CAD1B,yBAA0B,CQiCpB,UZuxFR,CYhxFI,uBR7BF,giBQ+BM,WAAY,CADZ,UZoxFR,CYhxFI,wBRlCF,45BQoCM,WAAY,CADZ,UZoxFR,CY7wFI,sBR1CF,+9CJ0zFF,CY5wFI,sBR9CF,0lFJ6zFF,CY3wFI,sBRlDF,gbJg0FF,CY1wFI,sBRtDF,q5CJm0FF,CYzwFI,sBR1DF,g9FJs0FF,CYxwFI,sBR9DF,6zDJy0FF,CYvwFI,sBRlEF,shBJ40FF,CYtwFI,6BRlFF,gzCJg2FF,CYxwFI,8CRzFF,mCQqFM,WAAY,CRlFlB,yBAA0B,CAD1B,yBAA0B,CQkFpB,UZqxFR,CYhxFI,iBRxFF,yiBJw2FF,CY1wFI,iBR9FF,6cJg3FF,CY5wFI,mCRrGF,mCQiGM,WAAY,CR9FlB,yBAA0B,CAD1B,yBAA0B,CQ8FpB,UZyxFR,CYpxFI,kBRpGF,sYJw3FF,CY9wFI,mBR1GF,qSJg4FF,CYhxFI,+CRjHF,mCQ6GM,WAAY,CR1GlB,yBAA0B,CAD1B,yBAA0B,CQ0GpB,UZ6xFR,CYxxFI,4BRhHF,8XJw4FF,CYhxFI,wCRxHF,snCJg5FF,CYnxFI,gFR9HF,mCQ2HM,WAAY,CRxHlB,yBAA0B,CAD1B,yBAA0B,CQwHpB,UZ+xFR,CY3xFI,wCR7HF,otCJw5FF,CYtxFI,wCRlIF,ytCJg6FF,CYzxFI,8ERxIF,mCQqIM,WAAY,CRlIlB,yBAA0B,CAD1B,yBAA0B,CQkIpB,UZqyFR,CYjyFI,sCRvIF,+rCJw6FF,CY5xFI,sCR5IF,6uCJg7FF,CY/xFI,8ERlJF,mCQ+IM,WAAY,CR5IlB,yBAA0B,CAD1B,yBAA0B,CQ4IpB,UZ2yFR,CYvyFI,wCRjJF,ovCJw7FF,Ca17FA,eAEI,4Bb27FJ,Ca77FA,aAOI,eAAgB,CADhB,cb27FJ,Caj8FA,gBAUM,oBb07FN,Cap8FA,gEAeI,Ybw7FJ,Cav8FA,sEAmBI,iBAAkB,CAClB,Sbw7FJ,Cat7FI,kFTrBF,mCS4BI,WAAY,CANZ,UAAW,CAGX,WAAY,CAEZ,SAAU,CT1Bd,4ZAEA,yBAA0B,CAD1B,yBAA0B,CSqBtB,iBAAkB,CAGlB,UAAW,CAGX,cAAe,CALf,Ubk8FN,Cc39FA,mBAEQ,0Cd49FR,Cc99FA,gCAKY,iBAAkB,CAClB,Yd49FZ,Cej2FE,uCA3BA,yBAKA,SAPA,UAAW,CAGX,aAAc,CA4BZ,UAAW,CAvBb,OAPA,iBAAkB,CAKlB,WADA,SA6BE,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CA5Bb,Ufy4FF,Ccj/FA,yBAeQ,6Bdq+FR,Ccp+FQ,iCAEI,kBAAmB,CADnB,YAAa,CAEb,Sds+FZ,Ccp+FQ,gCAEI,kBAAmB,CADnB,Ydu+FZ,Cc7/FA,8BA4BQ,s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wHN,CwBtwHI,oCpBvBF,qOJqyHF,CwBxwHI,uEpB9BF,mCoB0BI,WAAY,CpBvBhB,yBAA0B,CAD1B,yBAA0B,CoBuBtB,UxBqxHN,CwBhxHI,mCpB7BF,+bJ6yHF,CwB3wHI,+BpBlCF,ynBJqzHF,CwB9wHI,iEpBxCF,mCoBqCI,WAAY,CpBlChB,yBAA0B,CAD1B,yBAA0B,CoBkCtB,UxB0xHN,CwBtxHI,kCpBvCF,oPJ6zHF,CwBjxHI,qCpB7CF,mCoB+CI,WAAY,CpB9ChB,4pBAEA,yBAA0B,CAD1B,yBAA0B,CoB4CtB,UxBwxHN,CwBpxHI,iCpBjDF,wRJ60HF,CwBvxHI,+DpBvDF,mCoBoDI,WAAY,CpBjDhB,yBAA0B,CAD1B,yBAA0B,CoBiDtB,UxBmyHN,CwB/xHI,8BpBtDF,gWJq1HF,CwB1xHI,mCpB3DF,iPJ61HF,CwB7xHI,oEpBjEF,mCoB8DI,WAAY,CpB3DhB,yBAA0B,CAD1B,yBAA0B,CoB2DtB,UxByyHN,CwBryHI,iCpBhEF,uhBJq2HF,CwB7xHI,wCpBxEF,miBJ62HF,CwBhyHI,wEpB9EF,mCoB2EI,WAAY,CpBxEhB,yBAA0B,CAD1B,yBAA0B,CoBwEtB,UxB4yHN,CwBxyHI,gCpB7EF,qQJq3HF,CwBnyHI,gCpBlFF,g7BJ63HF,CwBtyHI,oEpBxFF,mCoBqFI,WAAY,CpBlFhB,yBAA0B,CAD1B,yBAA0B,CoBkFtB,UxBkzHN,CwB9yHI,oCpBvFF,wSJq4HF,CwBzyHI,mCpB5FF,qQJ64HF,CwB5yHI,0EpBlGF,mCoB+FI,WAAY,CpB5FhB,yBAA0B,CAD1B,yBAA0B,CoB4FtB,UxBwzHN,CwBpzHI,uCpBjGF,olCJq5HF,CwB9yHI,wCpBvGF,2PJ65HF,CwBjzHI,iFpB7GF,mCoB0GI,WAAY,CpBvGhB,yBAA0B,CAD1B,yBAA0B,CoBuGtB,UxB6zHN,CwBzzHI,yCpB5GF,0PJq6HF,CwBpzHI,0CpBjHF,yPJ66HF,CwBvzHI,kFpBvHF,mCoBoHI,WAAY,CpBjHhB,yBAA0B,CAD1B,yBAA0B,CoBiHtB,UxBm0HN,CwB/zHI,wCpBtHF,uPJq7HF,CwB1zHI,kCpB3HF,sTJ67HF,CwB7zHI,oEpBjIF,mCoB8HI,WAAY,CpB3HhB,yBAA0B,CAD1B,yBAA0B,CoB2HtB,UxBy0HN,CwBr0HI,kCpBhIF,qTJq8HF,CwB/zHI,8CpBtIF,2VJ68HF,CwBl0HI,6FpB5IF,mCoByII,WAAY,CpBtIhB,yBAA0B,CAD1B,yBAA0B,CoBsItB,UxB80HN,CwB10HI,+CpB3IF,oVJq9HF,CwBr0HI,4CpBhJF,sWJ69HF,CwBx0HI,wFpBtJF,mCoBmJI,WAAY,CpBhJhB,yBAA0B,CAD1B,yBAA0B,CoBgJtB,UxBo1HN,CwBh1HI,4CpBrJF,qWJq+HF,CwB30HI,4CpB1JF,gjBJ6+HF,CwB90HI,qFpBhKF,mCoB6JI,WAAY,CpB1JhB,yBAA0B,CAD1B,yBAA0B,CoB0JtB,UxB01HN,CwBt1HI,yCpB/JF,gkBJq/HF,CwBh1HI,0CpBrKF,0QJ6/HF,CwBn1HI,qFpB3KF,mCoBwKI,WAAY,CpBrKhB,yBAA0B,CAD1B,yBAA0B,CoBqKtB,UxB+1HN,CwB31HI,2CpB1KF,uRJqgIF,CwBt1HI,4CpB/KF,kRJ6gIF,CwBz1HI,wFpBrLF,mCoBkLI,WAAY,CpB/KhB,yBAA0B,CAD1B,yBAA0B,CoB+KtB,UxBq2HN,CwBj2HI,4CpBpLF,8MJqhIF,CwB51HI,2CpBzLF,uPJ6hIF,CwB/1HI,wFpB/LF,mCoB4LI,WAAY,CpBzLhB,yBAA0B,CAD1B,yBAA0B,CoByLtB,UxB22HN,CwBv2HI,6CpB9LF,yPJqiIF,CwBl2HI,4CpBnMF,yPJ6iIF,CwBr2HI,sFpBzMF,mCoBsMI,WAAY,CpBnMhB,yBAA0B,CAD1B,yBAA0B,CoBmMtB,UxBi3HN,CwB72HI,0CpBxMF,uPJqjIF,CwBx2HI,6CpB7MF,wPJ6jIF,CwB32HI,0FpBnNF,mCoBgNI,WAAY,CpB7MhB,yBAA0B,CAD1B,yBAA0B,CoB6MtB,UxBu3HN,CwBn3HI,6CpBlNF,wPJqkIF,CwB72HI,sCpBxNF,8PJ6kIF,CwBh3HI,2EpB9NF,mCoB2NI,WAAY,CpBxNhB,yBAA0B,CAD1B,yBAA0B,CoBwNtB,UxB43HN,CwBx3HI,qCpB7NF,8PJqlIF,CwB92HI,0EpBxOF,mCoB0OI,WAAY,CpBzOhB,+RAEA,yBAA0B,CAD1B,yBAA0B,CoBuOtB,UxB63HN,CwBz3HI,wCpB5OF,8RJ6mIF,CwB33HI,4EpBnPF,mCoB+OI,WAAY,CpB5OhB,yBAA0B,CAD1B,yBAA0B,CoB4OtB,UxBw4HN,CwBn4HI,oCpBlPF,4+BJqnIF,CwB93HI,oCpBvPF,olCJ6nIF,CwBj4HI,uEpB7PF,mCoB0PI,WAAY,CpBvPhB,yBAA0B,CAD1B,yBAA0B,CoBuPtB,UxB64HN,CwBz4HI,mCpB5PF,ynCJqoIF,CwBp4HI,qCpBjQF,slCJ6oIF,CwBv4HI,6EpBvQF,mCoBoQI,WAAY,CpBjQhB,yBAA0B,CAD1B,yBAA0B,CoBiQtB,UxBm5HN,CwB/4HI,wCpBtQF,i9BJqpIF,CwB14HI,qCpB3QF,gjCJ6pIF,CwB74HI,yEpBjRF,mCoB8QI,WAAY,CpB3QhB,yBAA0B,CAD1B,yBAA0B,CoB2QtB,UxBy5HN,CwBr5HI,oCpBhRF,yiCJqqIF,CwB/4HI,0CpBtRF,6OJ6qIF,CwBl5HI,kFpB5RF,mCoByRI,WAAY,CpBtRhB,yBAA0B,CAD1B,yBAA0B,CoBsRtB,UxB85HN,CwB15HI,wCpB3RF,6WJqrIF,CwBr5HI,yCpBhSF,6OJ6rIF,CwBx5HI,oFpBtSF,mCoBmSI,WAAY,CpBhShB,yBAA0B,CAD1B,yBAA0B,CoBgStB,UxBo6HN,CwBh6HI,2CpBrSF,gPJqsIF,CwB35HI,0CAEE,WAAY,CpB5ShB,gPoB2SI,UxBk6HN,CwB75HI,uEpBjTF,mCAGA,yBAA0B,CAD1B,yBJotIF,CwBr6HI,6BAEE,WAAY,CpBlThB,iZoBiTI,UxBo6HN,CwBh6HI,sCpBzSF,m6GoB2SI,WAAY,CADZ,UxBo6HN,CwB/5HI,kCpB3TF,kaJkuIF,CwBl6HI,oEpBjUF,wCoB8TI,WAAY,CpB3ThB,yBAA0B,CAD1B,yBAA0B,CoB2TtB,UxB86HN,CwB16HI,kCpBhUF,icJ0uIF,CwBr6HI,kCpBrUF,moBJkvIF,CwBx6HI,oEpB3UF,wCoBwUI,WAAY,CpBrUhB,yBAA0B,CAD1B,yBAA0B,CoBqUtB,UxBo7HN,CwBh7HI,kCpB1UF,gUJ0vIF,CwB36HI,uCpBhVF,mCoBkVI,WAAY,CpBjVhB,yWAEA,yBAA0B,CAD1B,yBAA0B,CoB+UtB,UxBk7HN,CwBx6HI,mCpB1VF,ibJkxIF,CwBn7HI,wEpBhWF,mCoB6VI,WAAY,CpB1VhB,yBAA0B,CAD1B,yBAA0B,CoB0VtB,UxB+7HN,CwB37HI,qCpB/VF,wVJ0xIF,CwBt7HI,iCpBrWF,mCoBuWI,WAAY,CpBtWhB,q9BAEA,yBAA0B,CAD1B,yBAA0B,CoBoWtB,UxB67HN,CwBz7HI,kCpBzWF,yWJ0yIF,CwB57HI,sEpB/WF,mCoB4WI,WAAY,CpBzWhB,yBAA0B,CAD1B,yBAA0B,CoByWtB,UxBw8HN,CwBp8HI,oCpB9WF,wPJkzIF,CwB97HI,8BpBpXF,21BJ0zIF,CwBj8HI,6DpB1XF,mCoBuXI,WAAY,CpBpXhB,yBAA0B,CAD1B,yBAA0B,CoBoXtB,UxB68HN,CwBz8HI,+BpBzXF,uWJk0IF,CwBp8HI,uCpB9XF,qVJ00IF,CwBv8HI,8EpBpYF,mCoBiYI,WAAY,CpB9XhB,yBAA0B,CAD1B,yBAA0B,CoB8XtB,UxBm9HN,CwB/8HI,uCpBnYF,gZJk1IF,CwB18HI,uCpBxYF,qaJ01IF,CwB78HI,sEpB9YF,mCoB2YI,WAAY,CpBxYhB,yBAA0B,CAD1B,yBAA0B,CoBwYtB,UxBy9HN,CwBr9HI,+BpB7YF,kNJk2IF,CwBh9HI,+BpBlZF,sOJ02IF,CwBn9HI,mEpBxZF,mCoBqZI,WAAY,CpBlZhB,yBAA0B,CAD1B,yBAA0B,CoBkZtB,UxB+9HN,CwB39HI,oCpBvZF,iWJk3IF,CwBt9HI,oCpB5ZF,+VJ03IF,CwBz9HI,iEpBlaF,mCoB+ZI,WAAY,CpB5ZhB,yBAA0B,CAD1B,yBAA0B,CoB4ZtB,UxBq+HN,CwBj+HI,6BpBjaF,qTJk4IF,CwB19HI,kCpBxaF,0XJ04IF,CwB79HI,sEpB9aF,mCoB2aI,WAAY,CpBxahB,yBAA0B,CAD1B,yBAA0B,CoBwatB,UxBy+HN,CwBr+HI,oCpB7aF,kZJk5IF,CwBh+HI,sCpBnbF,mCoBqbI,WAAY,CpBpbhB,wqBAEA,yBAA0B,CAD1B,yBAA0B,CoBkbtB,UxBu+HN,CwBj+HI,qCpB1bF,sCoB4bI,WAAY,CpB3bhB,qfAEA,yBAA0B,CAD1B,yBAA0B,CoBybtB,UxBw+HN,CwBp+HI,wCpB/bF,mCoBicI,WAAY,CpBhchB,+WAEA,yBAA0B,CAD1B,yBAA0B,CoB8btB,UxB2+HN,CwBv+HI,8CpBvbF,0ZoBybI,WAAY,CADZ,UxB2+HN,CwBv+HI,uCpBxcF,w4BJu7IF,CwB1+HI,sEpB9cF,mCoB2cI,WAAY,CpBxchB,yBAA0B,CAD1B,yBAA0B,CoBwctB,UxBs/HN,CwBl/HI,+BpB7cF,0cJ+7IF,CwB7+HI,mCpBldF,k+BJu8IF,CwBh/HI,sEpBxdF,mCoBqdI,WAAY,CpBldhB,yBAA0B,CAD1B,yBAA0B,CoBkdtB,UxB4/HN,CwBx/HI,mCpBvdF,09BJ+8IF,CwBh/HM,mDpB/dJ,2TJu9IF,CwBn/HM,sGpBreJ,mCoBkeM,WAAY,CpB/dlB,yBAA0B,CAD1B,yBAA0B,CoB+dpB,UxB+/HR,CwB3/HM,mDpBpeJ,iaJ+9IF,CwBt/HM,mDpBzeJ,mnBJu+IF,CwBz/HM,sGpB/eJ,mCoB4eM,WAAY,CpBzelB,yBAA0B,CAD1B,yBAA0B,CoByepB,UxBqgIR,CwBjgIM,mDpB9eJ,8UJ++IF,CyBh/IM,yCrBCJ,iSJu/IF,CyBn/IM,kFrBLJ,sCqBEM,WAAY,CrBClB,yBAA0B,CAD1B,yBAA0B,CqBDpB,UzB+/IR,CyB3/IM,yCrBJJ,gSJ+/IF,CyBt/IM,kDrBTJ,+cJugJF,CyBz/IM,2FrBfJ,sCqBYM,WAAY,CrBTlB,yBAA0B,CAD1B,yBAA0B,CqBSpB,UzBqgJR,CyBjgJM,yCrBdJ,oNJ+gJF,CyB5/IM,6CrBpBJ,sCqBsBM,WAAY,CrBrBlB,s5BAEA,yBAA0B,CAD1B,yBAA0B,CqBmBpB,UzBmgJR,CyB//IM,yCrBxBJ,8OJ+hJF,CyBlgJM,kFrB9BJ,sCqB2BM,WAAY,CrBxBlB,yBAA0B,CAD1B,yBAA0B,CqBwBpB,UzB8gJR,CyB1gJM,yCrB7BJ,yOJuiJF,CyBrgJM,gDrBnCJ,mCqBqCM,WAAY,CrBpClB,+MAEA,yBAA0B,CAD1B,yBAA0B,CqBkCpB,UzB4gJR,CyBvgJM,8CrBxCJ,qRJujJF,CyB1gJM,4FrB9CJ,2CqB2CM,WAAY,CrBxClB,yBAA0B,CAD1B,yBAA0B,CqBwCpB,UzBshJR,CyBlhJM,8CrB7CJ,oXJ+jJF,CyB7gJM,8CrBlDJ,wrBJukJF,CyBhhJM,4FrBxDJ,2CqBqDM,WAAY,CrBlDlB,yBAA0B,CAD1B,yBAA0B,CqBkDpB,UzB4hJR,CyBxhJM,8CrBvDJ,qUJ+kJF,CyBjhJM,gDrB9DJ,qZJulJF,CyBphJM,kGrBpEJ,sCqBiEM,WAAY,CrB9DlB,yBAA0B,CAD1B,yBAA0B,CqB8DpB,UzBgiJR,CyB5hJM,kDrBnEJ,0qBJ+lJF,CyBvhJM,0CrBxEJ,yPJumJF,CyBzhJM,yFrB/EJ,sCqB2EM,WAAY,CrBxElB,yBAA0B,CAD1B,yBAA0B,CqBwEpB,UzBsiJR,CyBjiJM,+CrB9EJ,8+BJ+mJF,CyB5hJM,+CrBnFJ,s+BJunJF,CyB/hJM,0FrBzFJ,sCqBsFM,WAAY,CrBnFlB,yBAA0B,CAD1B,yBAA0B,CqBmFpB,UzB2iJR,CyBviJM,2CrBxFJ,0cJ+nJF,CyBliJM,8CrB9FJ,sCqBgGM,WAAY,CrB/FlB,mnBAEA,yBAA0B,CAD1B,yBAA0B,CqB6FpB,UzByiJR,CyBliJI,iCrBtGF,mCACA,iNJ+oJF,CyBriJI,mEAHE,WAAY,CrBrGhB,yBAA0B,CAD1B,yBAA0B,CqBqGtB,UzBijJN,CyB7iJI,kCrB3GF,mCACA,sPJupJF,CyBxiJI,wCrB/GF,uOJ+pJF,CyB3iJI,8ErBrHF,mCqBkHI,WAAY,CrB/GhB,yBAA0B,CAD1B,yBAA0B,CqB+GtB,UzBujJN,CyBnjJI,sCrBpHF,iNJuqJF,CyB7iJI,uCrB1HF,+bJ+qJF,CyBhjJI,0ErBhIF,mCqB6HI,WAAY,CrB1HhB,yBAA0B,CAD1B,yBAA0B,CqB0HtB,UzB4jJN,CyBxjJI,mCrB/HF,ynBJurJF,CyBnjJI,sCAEE,WAAY,CrBtIhB,qPqBqII,UzB0jJN,CyBtjJI,+ErB1IF,mCAGA,yBAA0B,CAD1B,yBJssJF,CyB9jJI,yCAEE,WAAY,CrB3IhB,4pBqB0II,UzB6jJN,CyBzjJI,qCrB9IF,wRJ+sJF,CyB5jJI,uErBpJF,mCqBiJI,WAAY,CrB9IhB,yBAA0B,CAD1B,yBAA0B,CqB8ItB,UzBwkJN,CyBpkJI,kCrBnJF,gWJutJF,CyB/jJI,2CrBzJF,mCqB2JI,WAAY,CrB1JhB,2dAEA,yBAA0B,CAD1B,yBAA0B,CqBwJtB,UzBskJN,CyBlkJI,uCrB7JF,iPJuuJF,CyBrkJI,4ErBnKF,mCqBgKI,WAAY,CrB7JhB,yBAA0B,CAD1B,yBAA0B,CqB6JtB,UzBilJN,CyB7kJI,qCrBlKF,+dJ+uJF,CyBtkJI,mCrBzKF,0cJuvJF,CyBzkJI,6ErB/KF,mCqB4KI,WAAY,CrBzKhB,yBAA0B,CAD1B,yBAA0B,CqByKtB,UzBqlJN,CyBjlJI,0CrB9KF,sxBJ+vJF,CyB5kJI,yCrBnLF,kjBJuwJF,CyB7kJI,iFrB3LF,mCqBsLI,WAAY,CrBnLhB,yBAA0B,CAD1B,yBAA0B,CqBmLtB,UzB2lJN,CyBrlJI,wCrB1LF,kZJ+wJF,CyBhlJI,sCrBhMF,mCqBkMI,WAAY,CrBjMhB,2XAEA,yBAA0B,CAD1B,yBAA0B,CqB+LtB,UzBulJN,CyBjlJI,4CrBtMF,2PJ+xJF,CyBplJI,yFrB5MF,mCqByMI,WAAY,CrBtMhB,yBAA0B,CAD1B,yBAA0B,CqBsMtB,UzBgmJN,CyB5lJI,6CrB3MF,0PJuyJF,CyBvlJI,8CrBhNF,yPJ+yJF,CyB1lJI,0FrBtNF,mCqBmNI,WAAY,CrBhNhB,yBAA0B,CAD1B,yBAA0B,CqBgNtB,UzBsmJN,CyBlmJI,4CrBrNF,uPJuzJF,CyB7lJI,sCrB1NF,sTJ+zJF,CyBhmJI,4ErBhOF,mCqB6NI,WAAY,CrB1NhB,yBAA0B,CAD1B,yBAA0B,CqB0NtB,UzB4mJN,CyBxmJI,sCrB/NF,qTJu0JF,CyBlmJI,kDrBrOF,2VJ+0JF,CyBrmJI,qGrB3OF,mCqBwOI,WAAY,CrBrOhB,yBAA0B,CAD1B,yBAA0B,CqBqOtB,UzBinJN,CyB7mJI,mDrB1OF,oVJu1JF,CyBxmJI,gDrB/OF,sWJ+1JF,CyB3mJI,gGrBrPF,mCqBkPI,WAAY,CrB/OhB,yBAA0B,CAD1B,yBAA0B,CqB+OtB,UzBunJN,CyBnnJI,gDrBpPF,qWJu2JF,CyB9mJI,gDrBzPF,gjBJ+2JF,CyBjnJI,6FrB/PF,mCqB4PI,WAAY,CrBzPhB,yBAA0B,CAD1B,yBAA0B,CqByPtB,UzB6nJN,CyBznJI,6CrB9PF,gkBJu3JF,CyBpnJI,yCrBpQF,mCqBsQI,WAAY,CrBrQhB,qVAEA,yBAA0B,CAD1B,yBAA0B,CqBmQtB,UzB2nJN,CyBtnJI,8CrBzQF,0QJu4JF,CyBznJI,6FrB/QF,mCqB4QI,WAAY,CrBzQhB,yBAA0B,CAD1B,yBAA0B,CqByQtB,UzBqoJN,CyBjoJI,+CrB9QF,uRJ+4JF,CyB5nJI,gDrBnRF,kRJu5JF,CyB/nJI,gGrBzRF,mCqBsRI,WAAY,CrBnRhB,yBAA0B,CAD1B,yBAA0B,CqBmRtB,UzB2oJN,CyBvoJI,gDrBxRF,8MJ+5JF,CyBloJI,+CrB7RF,uPJu6JF,CyBroJI,gGrBnSF,mCqBgSI,WAAY,CrB7RhB,yBAA0B,CAD1B,yBAA0B,CqB6RtB,UzBipJN,CyB7oJI,iDrBlSF,yPJ+6JF,CyBxoJI,gDrBvSF,yPJu7JF,CyB3oJI,8FrB7SF,mCqB0SI,WAAY,CrBvShB,yBAA0B,CAD1B,yBAA0B,CqBuStB,UzBupJN,CyBnpJI,8CrB5SF,uPJ+7JF,CyB9oJI,iDrBjTF,wPJu8JF,CyBjpJI,kGrBvTF,mCqBoTI,WAAY,CrBjThB,yBAA0B,CAD1B,yBAA0B,CqBiTtB,UzB6pJN,CyBzpJI,iDrBtTF,wPJ+8JF,CyBnpJI,0CrB5TF,8PJu9JF,CyBtpJI,mFrBlUF,mCqB+TI,WAAY,CrB5ThB,yBAA0B,CAD1B,yBAA0B,CqB4TtB,UzBkqJN,CyB9pJI,yCrBjUF,8PJ+9JF,CyBppJI,kFrB5UF,mCqB8UI,WAAY,CrB7UhB,+RAEA,yBAA0B,CAD1B,yBAA0B,CqB2UtB,UzBmqJN,CyB/pJI,4CrBhVF,8RJu/JF,CyBjqJI,yFrBvVF,mCqBmVI,WAAY,CrBhVhB,yBAA0B,CAD1B,yBAA0B,CqBgVtB,UzB8qJN,CyBzqJI,6CrBtVF,6OJ+/JF,CyBpqJI,+CrB3VF,gPJugKF,CyBvqJI,6FrBjWF,mCqB8VI,WAAY,CrB3VhB,yBAA0B,CAD1B,yBAA0B,CqB2VtB,UzBmrJN,CyB/qJI,8CrBhWF,+OJ+gKF,CyBzqJI,iCAEE,WAAY,CrBxWhB,2tBqBuWI,UzBgrJN,CyB5qJI,2ErB5WF,mCAGA,yBAA0B,CAD1B,yBJ8hKF,CyBprJI,0CAEE,WAAY,CrB7WhB,+xBqB4WI,UzBmrJN,CyBzqJI,uCrBtXF,ygBJ+iKF,CyBprJI,gFrB5XF,mCqByXI,WAAY,CrBtXhB,yBAA0B,CAD1B,yBAA0B,CqBsXtB,UzBgsJN,CyB5rJI,yCrB3XF,omBJujKF,CyBvrJI,qCrBjYF,mCqBmYI,WAAY,CrBlYhB,6yBAEA,yBAA0B,CAD1B,yBAA0B,CqBgYtB,UzB8rJN,CyB1rJI,sCrBrYF,6nBJukKF,CyB7rJI,8ErB3YF,mCqBwYI,WAAY,CrBrYhB,yBAA0B,CAD1B,yBAA0B,CqBqYtB,UzBysJN,CyBrsJI,wCrB1YF,oRJ+kKF,CyB/rJI,kCrBhZF,+2BJulKF,CyBlsJI,qErBtZF,mCqBmZI,WAAY,CrBhZhB,yBAA0B,CAD1B,yBAA0B,CqBgZtB,UzB8sJN,CyB1sJI,mCrBrZF,krBJ+lKF,CyBrsJI,2CrB1ZF,gcJumKF,CyBxsJI,sFrBhaF,mCqB6ZI,WAAY,CrB1ZhB,yBAA0B,CAD1B,yBAA0B,CqB0ZtB,UzBotJN,CyBhtJI,2CrB/ZF,ugBJ+mKF,CyB3sJI,2CrBpaF,kjBJunKF,CyB9sJI,8ErB1aF,mCqBuaI,WAAY,CrBpahB,yBAA0B,CAD1B,yBAA0B,CqBoatB,UzB0tJN,CyBttJI,mCrBzaF,kNJ+nKF,CyBjtJI,mCrB9aF,sOJuoKF,CyBptJI,2ErBpbF,mCqBibI,WAAY,CrB9ahB,yBAA0B,CAD1B,yBAA0B,CqB8atB,UzBguJN,CyB5tJI,wCrBnbF,4OJ+oKF,CyBvtJI,wCrBxbF,oPJupKF,CyB1tJI,yErB9bF,mCqB2bI,WAAY,CrBxbhB,yBAA0B,CAD1B,yBAA0B,CqBwbtB,UzBsuJN,CyBluJI,iCrB7bF,0UJ+pKF,CyB3tJI,yCrBrcF,sCqBucI,WAAY,CrBtchB,q0BAEA,yBAA0B,CAD1B,yBAA0B,CqBoctB,UzBkuJN,CyB9tJI,4CrB1cF,mCqB4cI,WAAY,CrB3chB,uPAEA,yBAA0B,CAD1B,yBAA0B,CqByctB,UzBquJN,CyBjuJI,kDrBlcF,6OqBocI,WAAY,CADZ,UzBquJN,CyBjuJI,yCrBndF,sPJ4rKF,CyBpuJI,oFrBzdF,mCqBsdI,WAAY,CrBndhB,yBAA0B,CAD1B,yBAA0B,CqBmdtB,UzBgvJN,CyB5uJI,2CrBxdF,6eJosKF,CyBvuJI,+CrB9dF,mCqBgeI,WAAY,CrB/dhB,uPAEA,yBAA0B,CAD1B,yBAA0B,CqB6dtB,UzB8uJN,C0B7sKI,wBtBaF,6VsBXM,WAAY,CADZ,U1BitKR,C0B5sKI,yBtBOF,6WsBLM,WAAY,CADZ,U1BgtKR,C0B3sKI,yBtBCF,oYsBCM,WAAY,CADZ,U1B+sKR,C0B1sKI,uBtBLF,mVsBOM,WAAY,CADZ,U1B8sKR,C0BzsKI,uBtBXF,kWsBaM,WAAY,CADZ,U1B6sKR,C0BxsKI,uBtBjBF,qxCsBmBM,WAAY,CADZ,U1B4sKR,C0BvsKI,wBtBvBF,gdsByBM,WAAY,CADZ,U1B2sKR,C0BtsKI,wBtB7BF,qjBsB+BM,WAAY,CADZ,U1B0sKR,C0BrsKI,uBtBnCF,yvCsBqCM,WAAY,CADZ,U1BysKR,C0BpsKI,6BtBrDF,quBJiwKF,C0BtsKI,oDtB5DF,mCsBwDM,WAAY,CtBrDlB,yBAA0B,CAD1B,yBAA0B,CsBqDpB,U1BmtKR,C0B9sKI,uBtB3DF,2YJywKF,C0BxsKI,yBtBlEF,mCsBoEM,WAAY,CtBnElB,sbAEA,yBAA0B,CAD1B,yBAA0B,CsBiEpB,U1B+sKR,C0B1sKI,uBtB3DF,w7BsB6DM,WAAY,CADZ,U1B8sKR,C0BzsKI,wBtBjEF,ugBsBmEM,WAAY,CADZ,U1B6sKR,C0BzsKI,sBtBlFF,knBJmyKF,C0B5sKI,gDtBxFF,mCsBqFM,WAAY,CtBlFlB,yBAA0B,CAD1B,yBAA0B,CsBkFpB,U1BwtKR,C0BptKI,0BtBvFF,sxBJ2yKF,C0B/sKI,6BtB5FF,ieJmzKF,C0BltKI,sDtBlGF,mCsB+FM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","sources":["webpack://documenteditor/../../apps/common/mobile/resources/less/colors-table.less","webpack://documenteditor/../../apps/documenteditor/mobile/src/less/app.less","webpack://documenteditor/../../apps/common/mobile/resources/less/colors-table-dark.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common-rtl.less","webpack://documenteditor/../../apps/common/mobile/resources/less/icons.rtl.less","webpack://documenteditor/../../apps/common/mobile/resources/less/_mixins.less","webpack://documenteditor/../../apps/common/mobile/resources/less/collaboration.less","webpack://documenteditor/../../apps/common/mobile/resources/less/about.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common-ios.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common-material.less","webpack://documenteditor/../../apps/common/mobile/resources/less/ios/icons.less","webpack://documenteditor/../../apps/common/mobile/resources/less/material/icons.less","webpack://documenteditor/../../apps/common/mobile/resources/less/icons.less","webpack://documenteditor/../../apps/common/mobile/resources/less/dataview.less","webpack://documenteditor/../../apps/common/mobile/resources/less/search.less","webpack://documenteditor/./node_modules/framework7/less/mixins.less","webpack://documenteditor/../../apps/common/mobile/resources/less/ios/contextmenu.less","webpack://documenteditor/../../apps/common/mobile/resources/less/material/contextmenu.less","webpack://documenteditor/../../apps/common/mobile/resources/less/contextmenu.less","webpack://documenteditor/../../apps/common/mobile/resources/less/ios/comments.less","webpack://documenteditor/../../apps/common/mobile/resources/less/material/comments.less","webpack://documenteditor/../../apps/common/mobile/resources/less/comments.less","webpack://documenteditor/../../apps/documenteditor/mobile/src/less/app-material.less","webpack://documenteditor/../../apps/documenteditor/mobile/src/less/app-ios.less","webpack://documenteditor/../../apps/documenteditor/mobile/src/less/icons-ios.less","webpack://documenteditor/../../apps/documenteditor/mobile/src/less/icons-material.less","webpack://documenteditor/../../apps/documenteditor/mobile/src/less/icons-common.less"],"sourcesContent":["\n:root {\n --brand-word: #446995;\n --brand-cell: #40865C;\n --brand-slide: #BE664F;\n --brand-form: #AA5252;\n --brand-primary: #3880BE;\n --brand-secondary: #ED7309;\n --brand-text-on-brand: #FFF;\n\n --background-primary: #FFF;\n --background-secondary: #FFF;\n --background-tertiary: #EFF0F5;\n --background-menu-divider: fade(#3C3C43, 15%);\n --background-button: #EFF0F5;\n\n --text-normal: #000000;\n --text-secondary: fade(#000, 60%);\n --text-tertiary: fade(#000, 40%);\n --text-link: #007AFF;\n --text-error: #FF3B30;\n\n --fill-black: #000;\n --fill-white: #FFF;\n\n --toolbar-background: #446995;\n --toolbar-icons: #FFF;\n --toolbar-segment: #446995;\n --toolbar-tab-normal:fade(#FFF, 50%);\n\n --component-disabled-opacity: .4;\n\n --active-opacity-word: fade(#446995, 30%);\n --active-opacity-slide: fade(#BE664F, 30%);\n --active-opacity-cell: fade(#40865C, 30%);\n\n --image-border-types-filter: none;\n\n // Canvas\n\n --canvas-background: #eee;\n --canvas-content-background: #fff;\n --canvas-page-border: #ccc;\n\n --canvas-ruler-background: #fff;\n //--canvas-ruler-border: #cbcbcb;\n --canvas-ruler-margins-background: #d9d9d9;\n --canvas-ruler-mark: #555;\n --canvas-ruler-handle-border: #555;\n --canvas-ruler-handle-border-disabled: #aaa;\n\n --canvas-high-contrast: #000;\n //--canvas-high-contrast-disabled: #666;\n\n --canvas-cell-border: #999;\n --canvas-cell-title-text: fade(#000, 80%);\n --canvas-cell-title-background: #f7f7f7;\n --canvas-cell-title-background-selected: #cfcfcf;\n --canvas-cell-title-border: #d8d8d8;\n --canvas-cell-title-border-selected: #c9c9c9;\n\n //--canvas-scroll-thumb: #f7f7f7;\n //--canvas-scroll-thumb-hover: #c0c0c0;\n //--canvas-scroll-thumb-pressed: #adadad;\n //--canvas-scroll-thumb-border: #cbcbcb;\n //--canvas-scroll-thumb-border-hover: #cbcbcb;\n //--canvas-scroll-thumb-border-pressed: #adadad;\n //--canvas-scroll-arrow: #adadad;\n //--canvas-scroll-arrow-hover: #f7f7f7;\n //--canvas-scroll-arrow-pressed: #f7f7f7;\n //--canvas-scroll-thumb-target: #c0c0c0;\n //--canvas-scroll-thumb-target-hover: #f7f7f7;\n //--canvas-scroll-thumb-target-pressed: #f7f7f7;\n .pdf-view {\n --brand-word: var(--brand-form);\n\n &__android {\n --toolbar-background: var(--brand-word);\n }\n }\n}\n\n@brand-word: var(--brand-word);\n@brand-cell: var(--brand-cell);\n@brand-slide: var(--brand-slide);\n@brand-form: var(--brand-form);\n@brand-primary: var(--brand-primary);\n@brand-secondary: var(--brand-secondary);\n@brand-text-on-brand: var(--brand-text-on-brand);\n\n@background-primary: var(--background-primary);\n@background-secondary: var(--background-secondary);\n@background-tertiary: var(--background-tertiary);\n@background-menu-divider: var(--background-menu-divider);\n@background-button: var(--background-button);\n\n@text-normal: var(--text-normal);\n@text-secondary: var(--text-secondary);\n@text-tertiary: var(--text-tertiary);\n@text-link: var(--text-link);\n@text-error: var(--text-error);\n\n@fill-black: var(--fill-black);\n@fill-white: var(--fill-white);\n\n@toolbar-icons: var(--toolbar-icons);\n@toolbar-segment: var(--toolbar-segment);\n@toolbar-tab-normal: var(--toolbar-tab-normal);\n\n@component-disabled-opacity: var(--component-disabled-opacity);\n","@import '../../../../../vendor/framework7-react/node_modules/framework7/less/mixins.less';\n@import '../../../../common/mobile/resources/less/_mixins.less';\n@import '../../../../common/mobile/resources/less/colors-table.less';\n@import '../../../../common/mobile/resources/less/colors-table-dark.less';\n@import './app-rtl.less';\n\n@brandColor: var(--brand-word);\n\n.device-ios {\n --toolbar-background: var(--background-primary, #FFF);\n --toolbar-segment: var(--brand-word, #446995);\n --toolbar-icons: var(--brand-word, #446995);\n --f7-toolbar-border-color: var(--background-menu-divider);\n --f7-bars-border-color: var(--background-menu-divider);\n --f7-calendar-row-border-color: var(--background-menu-divider);\n}\n\n.device-android {\n --toolbar-background: var(--brand-word, #446995);\n\n .theme-type-dark {\n --toolbar-icons: var(--brand-word, #446995);\n }\n}\n\n@toolbar-background: var(--toolbar-background);\n@toolbar-segment: var(--toolbar-segment);\n@button-active-opacity: var(--active-opacity-word);\n\n@import '../../../../common/mobile/resources/less/collaboration.less';\n@import '../../../../common/mobile/resources/less/common.less';\n@import '../../../../common/mobile/resources/less/common-ios.less';\n@import '../../../../common/mobile/resources/less/common-material.less';\n@import '../../../../common/mobile/resources/less/icons.less';\n@import '../../../../common/mobile/resources/less/dataview.less';\n@import '../../../../common/mobile/resources/less/search.less';\n@import '../../../../common/mobile/resources/less/contextmenu.less';\n@import '../../../../common/mobile/resources/less/comments.less';\n@import './app-material.less';\n@import './app-ios.less';\n@import './icons-ios.less';\n@import './icons-material.less';\n@import './icons-common.less';\n\n:root {\n --f7-popover-width: 360px;\n}\n\n// Skeleton of document\n\n.doc-placeholder {\n position: relative;\n background: #fbfbfb;\n padding-top: calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-subnavbar-offset, 0px));\n overflow: hidden;\n height: 100%;\n\n > .line {\n height: 15px;\n margin: 30px;\n background: #e2e2e2;\n overflow: hidden;\n position: relative;\n\n -webkit-animation: flickerAnimation 2s infinite ease-in-out;\n -moz-animation: flickerAnimation 2s infinite ease-in-out;\n -o-animation: flickerAnimation 2s infinite ease-in-out;\n animation: flickerAnimation 2s infinite ease-in-out;\n }\n}\n\n.page.page-with-subnavbar {\n .page-content, &.page-with-logo .page-content {\n --f7-page-subnavbar-offset: 0;\n padding-top: 0;\n }\n}\n\n.page.editor > .page-content {\n --f7-page-navbar-offset: 0;\n}\n\n// Review\n.page-review {\n --f7-toolbar-link-color: @brandColor;\n \n .toolbar {\n background-color: @background-secondary;\n box-shadow: 0 1px 10px rgba(0, 0, 0, 0.2);\n position: absolute;\n\n #btn-goto-change {\n margin-left: 10px;\n }\n\n .next-prev {\n .link {\n width: 44px;\n }\n }\n }\n .page-content {\n // background-color: @white;\n .no-changes {\n padding: 15px;\n color: @text-normal;\n }\n .block-description {\n padding: 15px;\n .user-name {\n font-size: 17px;\n line-height: 22px;\n color: @text-normal;\n margin: 0;\n }\n .date-change {\n font-size: 14px;\n line-height: 18px;\n color: @text-secondary;\n margin: 0;\n margin-top: 3px;\n }\n .text {\n color: @text-normal;\n font-size: 15px;\n line-height: 20px;\n margin: 0;\n margin-top: 10px;\n }\n }\n }\n}\n\n.item-content {\n .preview{\n color: @gray;\n }\n}\n\n.phone, .tablet {\n .swiper-container{\n position: static;\n }\n}\n\n// Swiper\n.swiper-container {\n // height: 100%;\n .swiper-pagination-bullet-active{\n background: @black;\n }\n // .multilevels {\n // li:not(:first-child){ \n // border:none;\n // .item-content {\n // min-height: 70px;\n // }\n // }\n // }\n}\n\n// Skeleton table\n\n.table-styles .row div:not(:first-child) {\n margin: 2px auto 0px;\n}\n.table-styles .skeleton-list li, .table-styles .row div {\n padding: 0;\n}\n.table-styles .row .skeleton-list{\n display: block;\n width: 70px;\n height: 50px;\n}\n\n// Table of Contents\n\n.item-contents {\n padding: 0 16px;\n}\n\n.style-toc {\n &__image {\n margin: 0 15px;\n max-height: 150px;\n overflow: hidden;\n &_active {\n border: 1.5px solid @brandColor;\n }\n }\n}\n\n.block > .block-title:first-child, .list > .block-title:first-child {\n margin-top: var(--f7-block-margin-vertical);\n margin-left: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left)); \n margin-right: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));\n}\n\n// Navigation \n\n.empty-screens {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n height: 100%;\n &__icon {\n margin-bottom: 48px;\n }\n &__text {\n margin: 0 32px;\n text-align: center;\n color: @text-normal;\n }\n}\n\n.swipe-container {\n display: flex;\n justify-content: center;\n height: 40px;\n background-color: @background-primary;\n .icon-swipe {\n margin-top: 8px;\n width: 40px;\n height: 4px;\n background: @background-menu-divider;\n border-radius: 2px;\n }\n}\n\n.sheet-modal.navigation-sheet {\n box-shadow: 0px -2px 20px rgba(0, 0, 0, 0.2);\n .sheet-modal-inner {\n background: @background-tertiary;\n overflow-y: auto;\n }\n .swipe-container {\n position: fixed;\n top: 0;\n width: 100%;\n z-index: 1000;\n }\n &.sheet-modal-bottom:before, &.sheet-modal:not(.sheet-modal-top):before {\n display: none;\n }\n}\n\n.list.navigation-list {\n margin-top: 72px;\n .item-title {\n color: @text-normal;\n }\n}\n\n.navigation-sheet {\n &__title {\n position: fixed;\n left: 0;\n width: 100%;\n z-index: 100;\n top: 40px;\n z-index: 1000;\n right: 0;\n }\n}\n\n// Calendar\n.calendar {\n background-color: @background-secondary;\n .toolbar {\n background-color: @background-secondary;\n i.icon.icon-next, i.icon.icon-prev {\n background-color: @text-normal;\n }\n &:after {\n background-color: @background-menu-divider;\n }\n }\n .calendar-row {\n padding: 0 16px;\n &:before {\n display: none;\n }\n }\n .current-year-value, .current-month-value {\n color: @text-normal;\n font-size: 16px;\n }\n .calendar-day-selected .calendar-day-number, .calendar-day-today.calendar-day-selected .calendar-day-number {\n border: 1px solid transparent;\n background-color: @brandColor;\n color: @fill-white;\n }\n .calendar-day-selected.calendar-day-weekend .calendar-day-number {\n color: @fill-white;\n }\n .calendar-day-today .calendar-day-number {\n border: 1px solid @brandColor;\n background-color: transparent;\n }\n .calendar-day-weekend .calendar-day-number {\n color: @text-secondary;\n }\n .calendar-day-number {\n color: @text-normal;\n font-size: 14px;\n font-weight: 500;\n width: 47px;\n height: 32px;\n border-radius: 16px;\n }\n .calendar-week-header {\n margin: 25px 16px 10px 16px;\n background-color: @background-secondary;\n color: @text-normal;\n border-bottom: 1px solid @background-menu-divider;\n padding-bottom: 5px;\n height: auto;\n .calendar-week-day {\n color: @text-normal;\n font-size: 12px;\n }\n }\n .calendar-months {\n margin-bottom: 12px;\n }\n .calendar-month-picker-item, .calendar-year-picker-item {\n color: @text-normal;\n &:before, &:after {\n background-color: @background-menu-divider;\n }\n }\n .calendar-month-picker, .calendar-year-picker {\n background: @background-secondary;\n }\n .calendar-month-picker-item-current, .calendar-year-picker-item-current {\n color: @brandColor;\n }\n}\n\n.calendar-sheet {\n .calendar-month-picker, .calendar-year-picker {\n border-top: 1px solid var(--background-menu-divider);\n }\n}\n\n.create-style-link {\n .item-link .item-inner:before {\n display: none;\n }\n .item-title {\n color: @brandColor;\n }\n}\n\n// FAB\n.fab {\n z-index: 10000;\n a {\n background-color: @background-primary;\n border-radius: 50%;\n\n &:focus, &:focus-within, &:active, &.active-state {\n background-color: @background-primary;\n }\n }\n}\n\n// Snackbar and FAB animation\n.snackbar-enter, .fab-enter {\n opacity: 0;\n}\n.snackbar-enter-active, .fab-enter-active {\n opacity: 1;\n transition: opacity 300ms;\n}\n.snackbar-exit, .fab-exit {\n opacity: 1;\n}\n.snackbar-exit-active, .fab-exit-active {\n opacity: 0;\n transition: opacity 300ms;\n}\n\n\n","\n:root {\n .theme-type-dark,\n .theme-dark {\n --background-primary: #232323;\n --background-secondary: #333;\n --background-tertiary: #131313;\n --background-menu-divider: fade(#545458, 50%);\n --background-button: #333333;\n\n --text-normal: fade(#FFF, 87%);\n --text-secondary: fade(#FFF, 60%);\n --text-tertiary: fade(#FFF, 40%);\n --text-link: #1976D2;\n --text-error: #FF453A;\n\n --fill-black: #000;\n --fill-white: #FFF;\n\n --brand-word: #208BFF;\n --brand-cell: #34C759;\n --brand-slide: #FE8C33;\n --brand-form: #FE8C33;\n --brand-primary: #3E9CF0;\n --brand-secondary: #FFAF49;\n --brand-text-on-brand: #000;\n\n --toolbar-background: #232323;\n --toolbar-icons: #208BFF;\n --toolbar-segment: #FFF;\n --toolbar-tab-normal: #757575;\n\n --component-disabled-opacity: .4;\n\n --image-border-types-filter: invert(100%) brightness(4);\n\n --active-opacity-word: fade(#446995, 20%);\n --active-opacity-slide: fade(#BE664F, 20%);\n --active-opacity-cell: fade(#40865C, 20%);\n\n --image-border-types-filter: invert(100%) brightness(4);\n\n // Canvas\n\n --canvas-background: #000;\n --canvas-content-background: #fff;\n --canvas-page-border: #303030;\n\n --canvas-ruler-background: #636366;\n //--canvas-ruler-border: #2A2A2A;\n --canvas-ruler-margins-background: #3a3a3c;\n --canvas-ruler-mark: #8e8e93;\n --canvas-ruler-handle-border: #636366;\n --canvas-ruler-handle-border-disabled: #636366;\n\n --canvas-high-contrast: #000;\n //--canvas-high-contrast-disabled: #000;\n\n --canvas-cell-border: fade(#000, 10%);\n --canvas-cell-title-border: #757575;\n --canvas-cell-title-border-hover: #858585;\n --canvas-cell-title-border-selected: #999;\n --canvas-cell-title-text: fade(#fff, 80%);\n --canvas-cell-title-background: #555;\n --canvas-cell-title-background-selected: #3d3d3d;\n\n //--canvas-scroll-thumb: #404040;\n //--canvas-scroll-thumb-hover: #999;\n //--canvas-scroll-thumb-pressed: #adadad;\n //--canvas-scroll-thumb-border: #2a2a2a;\n //--canvas-scroll-thumb-border-hover: #999;\n //--canvas-scroll-thumb-border-pressed: #adadad;\n //--canvas-scroll-arrow: #999;\n //--canvas-scroll-arrow-hover: #404040;\n //--canvas-scroll-arrow-pressed: #404040;\n //--canvas-scroll-thumb-target: #999;\n //--canvas-scroll-thumb-target-hover: #404040;\n //--canvas-scroll-thumb-target-pressed: #404040;\n }\n\n .theme-type-dark.pdf-view, .theme-dark.pdf-view {\n --brand-word: var(--brand-form);\n\n &__android {\n --toolbar-background: var(--background-primary);\n }\n }\n}","[dir=\"rtl\"].device-android {\n .app-layout {\n .searchbar {\n input {\n padding-right: 24px;\n padding-left: 36px;\n background-position: right;\n }\n\n .number-search-results {\n right: auto;\n left: 26px;\n }\n }\n }\n\n .wrap-comment, .comment-list{\n .comment-header .initials {\n margin-right: 0;\n margin-left: 10px;\n }\n }\n\n .actions-modal {\n .actions-button-text {\n text-align: right;\n }\n }\n\n .navigation-sheet {\n &__title {\n padding-left: 0;\n padding-right: 16px;\n }\n }\n}\n\n[dir=\"rtl\"].device-ios .app-layout {\n .subnavbar,.navbar .left a + a {\n margin-right: 0;\n }\n\n .subnavbar,.navbar .right a + a {\n margin-right: 0;\n }\n\n .tab-buttons {\n .tab-link:first-child {\n border-radius: 0px 5px 5px 0px;\n }\n\n .tab-link:last-child {\n border-radius: 5px 0px 0px 5px;\n }\n }\n\n .searchbar .number-search-results {\n right: auto;\n left: 26px;\n }\n\n .popover {\n li:last-child, li:first-child {\n .segmented a:first-child {\n border-radius: 0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0;\n }\n .segmented a:last-child {\n border-radius: var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius);\n }\n } \n }\n\n .list {\n .item-inner {\n .item-after .segmented {\n margin-left: 0px;\n margin-right: 10px;\n }\n }\n }\n\n .searchbar-inner__right .buttons-row a.next {\n margin-left: 0;\n margin-right: 15px;\n }\n\n .searchbar-inner__left {\n margin-right: 0;\n margin-left: 10px;\n }\n\n .navbar .searchbar-input-wrap {\n margin-left: 10px;\n margin-right: 0;\n }\n\n .comment-list .item-content .item-inner .comment-header {\n padding-left: 16px;\n }\n}\n\n[dir=\"rtl\"] {\n .comment-list .item-content .item-inner{\n padding-left: 0;\n .comment-header {\n .right {\n justify-content: space-between;\n .comment-resolve {\n margin-right: 0px;\n margin-left: 10px;\n }\n }\n\n .name {\n text-align: right;\n }\n }\n }\n\n .comment-quote {\n border-right: 1px solid var(--text-secondary);\n border-left: 0;\n padding-left: 16px;\n padding-right: 10px;\n }\n\n .comment-text, .reply-text {\n padding-right: 0;\n padding-left: 15px;\n }\n\n // .comment-list .item-content .item-inner .comment-header {\n // padding-left: 16px;\n // }\n\n #add-comment-dialog .dialog .dialog-inner .wrap-comment .name, #edit-comment-dialog .dialog .dialog-inner .wrap-comment .name, #add-reply-dialog .dialog .dialog-inner .wrap-comment .name, #edit-reply-dialog .dialog .dialog-inner .wrap-comment .name, #add-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date, #edit-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date, #add-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date, #edit-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date, #add-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date, #edit-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date, #add-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date, #edit-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date {\n text-align: right;\n }\n\n #view-comment-popover .page .page-content {\n padding: 16px 0 60px 16px;\n }\n\n .wrap-comment {\n padding: 16px 16px 0 24px;\n }\n\n .shapes {\n .thumb {\n transform: scaleX(-1);\n }\n }\n\n .settings-popup,\n #settings-popover{\n .link {\n display: inline;\n }\n }\n\n #edit-table-style {\n ul {\n padding-right: 0;\n }\n }\n\n .color-schemes-menu {\n .item-title{\n margin-right: 20px;\n }\n }\n\n .list [slot=\"root-start\"] {\n padding: 15px 15px 0 0px;\n }\n\n .numbers, .bullets, .multilevels {\n .item-content {\n padding-right: 0;\n }\n }\n\n .dataview .active::after {\n left: -5px;\n right: unset;\n }\n\n .popup .list .range-number, .popover .list .range-number, .sheet-modal .list .range-number {\n text-align: left;\n }\n\n .popup .list .inner-range-title, .popover .list .inner-range-title, .sheet-modal .list .inner-range-title {\n padding-left: 0;\n padding-right: 15px;\n }\n\n #color-picker .right-block {\n margin-left: 0px;\n margin-right: 20px;\n }\n\n .page-review .toolbar #btn-reject-change {\n margin-left: 0;\n margin-right: 20px;\n }\n\n .view .list li.no-indicator .item-link .item-inner {\n padding-right: 0;\n padding-left: 15px;\n }\n\n // Dialog with password\n .dialog .modal-password .modal-password__icon {\n right: auto;\n left: 4px;\n }\n}\n\n@media (max-width: 550px) {\n .device-ios[dir=rtl] .app-layout {\n .searchbar-expandable.searchbar-enabled .searchbar-inner__right {\n margin-right: 10px;\n margin-left: 0;\n }\n\n .navbar .searchbar-input-wrap {\n margin-left: 0;\n }\n }\n\n .device-android[dir=rtl] .app-layout {\n .searchbar-expandable.searchbar-enabled .searchbar-inner__left {\n margin-right: 0;\n margin-left: 33px;\n }\n }\n}\n","[dir=\"rtl\"] {\n // Common rtl-icons\n i.icon {\n &.icon-next, &.icon-prev, &.icon-text-align-right, &.icon-text-align-left, \n &.icon-table-add-column-left, &.icon-table-add-column-right, &.icon-table-remove-column, \n &.icon-table-borders-left, &.icon-table-borders-right, &.icon-numbers-3, &.icon-numbers-7 {\n transform: scaleX(-1);\n }\n\n &.icon-numbers-1 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-2 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-4 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-5 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-6 {\n .encoded-svg-background('');\n }\n }\n\n // [PE] rtl-icons \n i.icon {\n &.icon-align-left, &.icon-align-right {\n transform: scaleX(-1);\n }\n }\n\n // [SSE] rtl-icons\n\n i.icon {\n &.icon-text-orientation-horizontal {\n .encoded-svg-mask('');\n }\n\n &.icon-text-orientation-anglecount {\n .encoded-svg-mask('');\n }\n\n &.icon-text-orientation-angleclock {\n .encoded-svg-mask('');\n }\n }\n}","// Encoded SVG Background\n.encoded-svg-mask(@svg, @color: @brandColor) {\n @url: `encodeURIComponent(@{svg})`;\n background-color: @color;\n -webkit-mask-image: url(\"data:image/svg+xml;charset=utf-8,@{url}\");\n -webkit-mask-size: contain;\n -webkit-mask-repeat: round;\n}\n\n.encoded-svg-uncolored-mask(@svg) {\n @url: `encodeURIComponent(@{svg})`;\n -webkit-mask-image: url(\"data:image/svg+xml;charset=utf-8,@{url}\");\n}\n\n.encoded-svg-background(@svg) {\n @url: `encodeURIComponent(@{svg})`;\n background-image: url(\"data:image/svg+xml;charset=utf-8,@{url}\");\n}",".page.page-users {\n .block-title {\n text-transform: none;\n margin-top: 20px;\n margin-bottom: 20px;\n font-size: 17px;\n line-height: 17px;\n font-weight: normal;\n }\n .color {\n min-width: 40px;\n min-height: 40px;\n text-align: center;\n border-radius: 50px;\n line-height: 40px;\n color: @fill-white;\n font-size: 18px;\n }\n}","// @text-normal: #000;\n// @common-image-path - defined in webpack config\n\n.about {\n .page-content {\n text-align: center /*rtl:ignore*/;\n display: flex;\n flex-direction: column;\n }\n\n &_ios {\n padding-top: 120px;\n padding-bottom: 30px;\n }\n\n &_android {\n padding-top: 60px;\n padding-bottom: 16px;\n }\n\n &_tablet {\n padding-top: 12px;\n padding-bottom: 12px;\n } \n\n &__text {\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 16px;\n text-align: center;\n color: @text-normal;\n margin: 0;\n }\n\n a {\n color: @brandColor;\n }\n\n .logo-block {\n &__elem {\n display: flex;\n justify-content: center;\n img {\n max-width: 100%;\n height: auto;\n }\n }\n }\n\n &__logo {\n width: 100%;\n height: 80px;\n background: ~\"url(@{common-image-path}/about/logo-new.svg) no-repeat center\";\n }\n\n &__editor {\n flex-grow: 1;\n margin-top: 20px;\n }\n\n &__contacts {\n text-align: center;\n padding-left: 72px;\n padding-right: 72px;\n }\n\n &__licensor, &__customer {\n text-align: center;\n margin-top: 12px;\n }\n}\n\n.theme-type-dark {\n .about__logo {\n background: ~\"url(@{common-image-path}/about/logo-new-white.svg) no-repeat center\";\n }\n}","@import './about';\n\n@white: #ffffff;\n@black: #000000;\n@gray: #c4c4c4;\n@darkGray: #6d6d72;\n@green: #4cd964;\n@red: #f00;\n@autoColor: @black;\n\n.row {\n --f7-cols-per-row: 1;\n align-items: flex-start;\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n}\n\n.row + .row {\n margin-top: var(--f7-grid-row-gap);\n}\n\n.navbar.main-navbar {\n height: 0;\n\n &.navbar-with-logo {\n height: 26px;\n }\n\n .navbar-inner {\n display: flex;\n justify-content: center;\n padding: 0;\n }\n\n .navbar-bg {\n &:before, &:after {\n content: none;\n }\n }\n}\n\n.navbar-hidden {\n transform: translate3d(0, calc(-1 * (var(--f7-navbar-height) + var(--f7-subnavbar-height))), 0);\n}\n\n.navbar-hidden+.page>.page-content, .navbar-hidden+.page-content {\n padding-top: 0;\n}\n\n.page.editor>.page-content {\n transition: padding-top .3s ease-in;\n}\n\n.main-logo {\n max-width: 100%;\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n\n .custom-logo-image {\n max-height: 20px;\n height: auto;\n width: auto;\n }\n}\n\n.subnavbar {\n .subnavbar-inner {\n padding: 0;\n \n .title {\n white-space: nowrap;\n overflow: hidden;\n margin: 0;\n padding: 0;\n flex-shrink: initial;\n text-overflow: ellipsis;\n }\n }\n .icon-back {\n color: @toolbar-icons;\n }\n}\n\n.page.page-with-subnavbar {\n .page-content {\n --f7-page-subnavbar-offset: 0px;\n }\n &.page-with-logo .page-content {\n --f7-page-subnavbar-offset: 26px;\n }\n}\n\n.popup, .popover, .sheet-modal {\n .list {\n &:first-child {\n margin-top: 0;\n margin-bottom: 0;\n }\n .inner-range-title {\n color: @text-normal;\n padding: 15px 0 0 15px;\n }\n\n .range-number {\n color: @text-normal;\n min-width: 60px;\n text-align: right;\n }\n }\n .page-content {\n &.no-padding-top {\n padding-top: 0;\n }\n }\n}\n\n.sheet-modal.coauth__sheet {\n transition: all .3s;\n}\n\n.disabled, [disabled] {\n opacity: .55;\n pointer-events: none;\n}\n\n.text-content {\n padding: 14px 10px 0 10px;\n}\n\n.view .list {\n max-width: 100%;\n --menu-list-offset: 0px;\n\n ul {\n max-width: 100%;\n background: var(--f7-list-bg-color);\n }\n\n li.no-indicator {\n .item-link {\n .item-inner{\n padding-right: 15px;\n &:before {\n content: none;\n }\n }\n }\n }\n .item-text {\n text-overflow: initial;\n white-space: normal;\n height: auto;\n max-height: initial;\n -webkit-line-clamp: initial;\n }\n .font-item img {\n filter: var(--image-border-types-filter, none)\n }\n .buttons {\n .button.active {\n background-color: @button-active-opacity;\n }\n }\n .item-link .item-inner {\n width: 100%;\n }\n .item-inner {\n color: @text-normal;\n }\n}\n\n// Bullets, numbers and multilevels\n\n.bullets,\n.numbers,\n.multilevels {\n min-height: 160px;\n .row.list {\n margin: 0;\n ul {\n background: none;\n &:before, &:after {\n display: none;\n }\n display: grid;\n grid-template-columns: repeat(4, auto);\n justify-content: space-around;\n grid-gap: 10px;\n width: 100%;\n padding: 5px;\n li {\n width: 70px;\n height: 70px;\n border: 1px solid @gray;\n html.pixel-ratio-2 & {\n border: 0.5px solid @gray;\n }\n html.pixel-ratio-3 & {\n border: 0.33px solid @gray;\n }\n \n .thumb {\n width: 100%;\n height: 100%;\n background-color: @fill-white;\n background-size: cover;\n \n label {\n width: 100%;\n text-align: center;\n position: absolute;\n top: 34%;\n color: @fill-black;\n }\n }\n\n .item-number, .item-marker, .item-multilevellist {\n width: 68px;\n height: 68px;\n }\n }\n }\n }\n \n .row.list .item-content {\n padding-left: 0;\n padding-right: 0;\n min-height: 68px;\n .item-inner{\n padding: 0;\n &:after {\n display: none;\n }\n }\n }\n}\n\n.popover {\n .page .list:first-child:last-child {\n ul {\n border-radius: 0;\n background-color: var(--f7-list-bg-color);\n li:first-child, li:last-child {\n .item-link {\n border-radius: 0;\n }\n }\n }\n }\n}\n\n// .popover .list + .list {\n// margin-top: 0;\n// }\n\n.popover .list:first-child li:first-child, .popover .list:first-child li:first-child a, .popover .list:first-child li:first-child > label, .popover .list:last-child li:last-child, .popover .list:last-child li:last-child a, .popover .list:last-child li:last-child > label {\n border-radius: 0;\n}\n\n.shapes {\n li {\n width: 70px;\n height: 70px;\n margin: 0 1px;\n\n .thumb {\n width: 100%;\n height: 100%;\n background-color: @brandColor;\n }\n }\n}\n\n.chart-types {\n width: 100%;\n .row {\n padding: 0 10px;\n }\n li {\n width: 60px;\n height: 60px;\n margin: 6px;\n\n .thumb {\n width: 100%;\n height: 100%;\n background-size: contain;\n }\n }\n}\n\n.chart-styles {\n .row {\n li {\n margin: 0;\n padding: 1px;\n }\n img {\n width: 50px;\n height: 50px;\n }\n }\n}\n\n.segmented {\n .decrement, .increment {\n text-overflow: clip;\n }\n}\n\n.content-block {\n margin: 32px 0;\n padding: 0 16px;\n box-sizing: border-box;\n p {\n color: @text-normal;\n }\n}\n\n\n// Color Schemes\n\n.color-schemes-menu {\n cursor: pointer;\n display: block;\n // background-color: @white;\n .item-inner {\n justify-content: flex-start;\n }\n .color-schema-block {\n display: flex;\n }\n .color {\n min-width: 26px;\n min-height: 26px;\n margin: 0 2px 0 0;\n box-shadow: 0 0 0 1px rgba(0,0,0,.15) inset;\n }\n .item-title {\n margin-left: 20px;\n color: @text-normal;\n }\n}\n\n\n// Layout \n\n.slide-layout {\n &__list {\n margin: auto;\n }\n ul {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n &::before, &::after {\n display: none;\n }\n }\n li {\n position: relative;\n z-index: 1;\n margin-top: 12px;\n img {\n box-shadow: 0 0 0 1px rgba(0,0,0,.15);\n }\n }\n .item-inner {\n padding-top: 0;\n }\n .item-inner:after {\n display: none;\n }\n .item-inner:before {\n opacity: 0;\n content: '';\n position: absolute;\n width: 22px;\n height: 22px;\n right: 11px;\n bottom: 0;\n z-index: 1;\n background-repeat: no-repeat;\n .encoded-svg-mask('');\n }\n .active .item-inner:before {\n opacity: 1;\n }\n}\n\n// Transition \n\n.slide-transition {\n .splitter {\n display: flex;\n align-items: center;\n color: @black;\n label {\n margin: 0 5px;\n }\n }\n .buttons-row {\n display: flex;\n margin: 0;\n min-width: 90px;\n margin-left: 10px;\n .button {\n width: 100%;\n }\n .button:first-child {\n border-radius: 5px 0 0 5px;\n border-left-width: 1px;\n border-left-style: solid;\n }\n .button:last-child {\n border-radius: 0 5px 5px 0;\n }\n }\n}\n\n.style-effect, .style-type {\n .list .item-title {\n font-weight: normal; \n }\n}\n\n.range-slider-delay {\n width: 100%;\n margin: 4px 0 5px 0;\n appearance: none;\n background: linear-gradient(to right,#b7b8b7 0,#b7b8b7 100%);\n background-position: center;\n background-size: 100% 2px;\n background-repeat: no-repeat;\n outline: 0;\n border: none;\n box-sizing: content-box;\n &:disabled {\n opacity: .55;\n }\n &::-webkit-slider-thumb {\n appearance: none;\n height: 28px;\n width: 28px;\n border-radius: 50%;\n background: @white;\n cursor: pointer;\n box-shadow: 0 2px 4px rgba(0, 0, 0, .3);\n }\n &::-ms-thumb { \n appearance: none;\n height: 28px;\n width: 28px;\n border-radius: 50%;\n background: @white;\n cursor: pointer;\n box-shadow: 0 2px 4px rgba(0, 0, 0, .3);\n }\n}\n\n.buttons-list {\n ul {\n // &::before, &::after {\n // display: none;\n // }\n li {\n border: 0;\n font-weight: normal;\n .item-link {\n height: 100%;\n .item-content {\n min-height: initial;\n height: 100%;\n padding: 0;\n }\n .item-inner {\n justify-content: center;\n align-items: center;\n padding: 0;\n min-height: initial;\n &::before {\n display: none;\n }\n }\n }\n }\n }\n}\n\n.item-color-auto {\n .color-auto {\n width: 22px;\n height: 22px;\n background-color: @autoColor;\n }\n &.active {\n .color-auto {\n box-shadow: 0 0 0 1px @white, 0 0 0 4px @brandColor;\n border-radius: 1px;\n }\n }\n}\n\n.page {\n .color-palettes {\n .list {\n ul {\n .palette {\n padding: 8px 0px;\n a {\n flex-grow: 1;\n position: relative;\n min-width: 10px;\n min-height: 26px;\n margin: 1px 1px 0 0;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset;\n border-radius: 0;\n &.active:after {\n content: ' ';\n position: absolute;\n width: 100%;\n height: 100%;\n box-shadow: 0 0 0 1px @white, 0 0 0 4px @brandColor;\n z-index: 1;\n border-radius: 1px;\n }\n &.transparent {\n background-repeat: no-repeat;\n background-size: 100% 100%;\n .encoded-svg-background(\"\");\n }\n } \n }\n }\n }\n .row {\n padding: 0;\n }\n .list .item-inner {\n display: block;\n color: var(--text-normal);\n }\n .standart-colors, .dynamic-colors {\n .palette {\n display: flex;\n }\n }\n\n .dynamic-colors {\n .empty-color {\n background-color: @white;\n }\n }\n }\n}\n\n#color-picker {\n display: flex;\n justify-content: space-around;\n align-items: center;\n max-width: 300px;\n margin: 0 auto;\n margin-top: 4px;\n .color-picker-container {\n width: calc(100% - 94px);\n position: relative;\n max-width: 100%;\n height: auto;\n font-size: 0;\n .color-picker-module-wheel {\n margin: 0;\n }\n }\n .right-block {\n margin-left: 20px;\n .color-hsb-preview {\n width: 72px;\n height: 72px;\n overflow: hidden;\n border: 1px solid @gray;\n border-radius: 100px;\n .new-color-hsb-preview, .current-color-hsb-preview {\n height: 36px;\n }\n .new-color-hsb-preview {\n border-radius: 100px 100px 0 0;\n }\n .current-color-hsb-preview {\n border-radius: 0 0 100px 100px;\n }\n }\n .button-round {\n height: 72px;\n width: 72px;\n padding: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 100px;\n background-color: @fill-white;\n box-shadow: 0 4px 4px rgba(0,0,0,.25);\n // border-color: transparent;\n border: 0;\n margin-top: 20px;\n }\n }\n}\n\n// Table styles\n\n.table-styles {\n width: 100%;\n .row {\n &, li {\n margin-bottom: 12px;\n }\n li, div {\n box-shadow: 0 0 0 1px @gray;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n }\n\n li,\n .row div {\n margin: 0;\n padding: 1px;\n\n img {\n width: 70px;\n height: 50px;\n }\n }\n}\n\n#edit-table-style {\n .list ul ul {\n padding-left: 0;\n }\n}\n\n// input[type=\"number\"]\ninput[type=\"number\"]::-webkit-outer-spin-button,\ninput[type=\"number\"]::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n// Regional Settings\n.icon.lang-flag {\n background-size: 48px auto;\n background-image: ~'url(@{common-image-path}/controls/flags@2x.png)';\n}\n\n.icon.lang-flag {\n width: 16px;\n height: 12px;\n}\n\n.lang-flag.ca,\n.lang-flag.ca-ES {\n background-position: 0 0;\n}\n.lang-flag.cs,\n.lang-flag.cs-CZ {\n background-position: -16px 0;\n}\n.lang-flag.da,\n.lang-flag.da-DK {\n background-position: -32px 0;\n}\n.lang-flag.de,\n.lang-flag.de-DE {\n background-position: 0 -12px;\n}\n.lang-flag.el,\n.lang-flag.el-GR {\n background-position: -16px -12px;\n}\n.lang-flag.en,\n.lang-flag.en-US {\n background-position: -32px -12px;\n}\n.lang-flag.fr,\n.lang-flag.fr-FR {\n background-position: 0 -24px;\n}\n.lang-flag.hu,\n.lang-flag.hu-HU {\n background-position: -16px -24px;\n}\n.lang-flag.it,\n.lang-flag.it-IT {\n background-position: -32px -24px;\n}\n.lang-flag.ko,\n.lang-flag.ko-KR {\n background-position: 0 -36px;\n}\n.lang-flag.nl,\n.lang-flag.nl-NL {\n background-position: -16px -36px;\n}\n.lang-flag.nb,\n.lang-flag.nb-NO,\n.lang-flag.nn,\n.lang-flag.nn-NO {\n background-position: -32px -36px;\n}\n.lang-flag.pl,\n.lang-flag.pl-PL {\n background-position: 0 -48px;\n}\n.lang-flag.pt,\n.lang-flag.pt-BR {\n background-position: -16px -48px;\n}\n.lang-flag.ro,\n.lang-flag.ro-RO {\n background-position: -32px -48px;\n}\n.lang-flag.ru,\n.lang-flag.ru-RU {\n background-position: 0 -60px;\n}\n.lang-flag.sv,\n.lang-flag.sv-SE {\n background-position: -32px -60px;\n}\n.lang-flag.tr,\n.lang-flag.tr-TR {\n background-position: 0 -72px;\n}\n.lang-flag.uk,\n.lang-flag.uk-UA {\n background-position: -16px -72px;\n}\n.lang-flag.lv,\n.lang-flag.lv-LV {\n background-position: -32px -72px;\n}\n.lang-flag.lt,\n.lang-flag.lt-LT {\n background-position: 0 -84px;\n}\n.lang-flag.vi,\n.lang-flag.vi-VN {\n background-position: -16px -84px;\n}\n.lang-flag.de-CH,\n.lang-flag.fr-CH,\n.lang-flag.it-CH {\n background-position: -32px -84px;\n}\n.lang-flag.pt-PT {\n background-position: -16px -96px;\n}\n.lang-flag.de-AT {\n background-position: -32px -96px;\n}\n.lang-flag.es,\n.lang-flag.es-ES {\n background-position: 0 -108px;\n}\n.lang-flag.en-GB {\n background-position: -32px -108px;\n}\n.lang-flag.en-AU {\n background-position: 0 -120px;\n}\n.lang-flag.az-Latn-AZ {\n background-position: -16px -120px;\n}\n.lang-flag.id,\n.lang-flag.id-ID,\n.lang-flag.en-ID {\n background-position: -32px -120px;\n}\n.lang-flag.bg,\n.lang-flag.bg-BG {\n background-position: 0 -132px;\n}\n.lang-flag.ca-ES-valencia {\n background-position: -16px -132px;\n}\n.lang-flag.en-CA {\n background-position: -32px -132px;\n}\n.lang-flag.en-ZA {\n background-position: 0 -144px;\n}\n.lang-flag.eu,\n.lang-flag.eu-ES {\n background-position: -16px -144px;\n}\n.lang-flag.gl,\n.lang-flag.gl-ES {\n background-position: -32px -144px;\n}\n.lang-flag.hr,\n.lang-flag.hr-HR {\n background-position: 0 -156px;\n}\n.lang-flag.lb,\n.lang-flag.lb-LU {\n background-position: -16px -156px;\n}\n.lang-flag.mn,\n.lang-flag.mn-MN {\n background-position: -32px -156px;\n}\n.lang-flag.sl,\n.lang-flag.sl-SI {\n background-position: 0 -168px;\n}\n.lang-flag.sr,\n.lang-flag.sr-Cyrl-RS,\n.lang-flag.sr-Latn-RS {\n background-position: -16px -168px;\n}\n.lang-flag.sk,\n.lang-flag.sk-SK {\n background-position: -32px -168px;\n}\n.lang-flag.kk,\n.lang-flag.kk-KZ {\n background-position: 0 -180px;\n}\n.lang-flag.fi,\n.lang-flag.fi-FI,\n.lang-flag.sv-FI {\n background-position: -16px -180px;\n}\n.lang-flag.zh,\n.lang-flag.zh-CN {\n background-position: -32px -180px;\n}\n.lang-flag.ja,\n.lang-flag.ja-JP {\n background-position: 0 -192px;\n}\n.lang-flag.es-MX {\n background-position: -16px -192px;\n}\n\n.checkbox-in-modal {\n margin-top: 10px;\n display: flex;\n align-items: center;\n .right-text {\n margin-left: 10px;\n }\n}\n\n.username-tip {\n height: 20px;\n color: @white;\n padding: 0 10px;\n position: absolute;\n z-index: 900;\n display: none;\n pointer-events: none;\n transition: opacity 0.1ms ease-out;\n opacity: 0;\n &.active {\n display: block;\n opacity: 1;\n }\n}\n\n.dlg-adv-options {\n z-index: 13700;\n .content-block {\n padding: 0;\n }\n .picker-3d { \n .picker-item {\n padding: 0;\n text-align: left;\n font-size: 16px;\n }\n }\n .picker-center-highlight {\n width: 100%;\n left: 0;\n right: 0;\n }\n}\n\n.dlg-macros-request {\n .dialog-text {\n word-break: break-word;\n }\n}\n// Skeleton of document\n\n@keyframes flickerAnimation {\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n@-o-keyframes flickerAnimation{\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n@-moz-keyframes flickerAnimation{\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n@-webkit-keyframes flickerAnimation{\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n\n.doc-placeholder-container {\n position: absolute;\n width: 100%;\n height: 100%;\n z-index: 6000;\n top: 0;\n left: 0;\n overflow: hidden;\n}\n\n// Statusbar\n\n.statusbar .statusbar--box-tabs > ul > .locked a {\n box-shadow: inset 0 2px red;\n}\n\n// Fonts List \n\n.font-item {\n .item-inner {\n overflow: hidden;\n &:after {\n left: 16px;\n }\n }\n}\n\n// Functions List \n\n.cell-editor {\n overflow: initial;\n}\n\n.functions-list {\n max-height: 200px;\n width: 360px;\n overflow-y: auto;\n overflow-x: hidden;\n background-color: @background-primary;\n &__mobile {\n position: absolute;\n right: 0;\n left: 0;\n width: 100%;\n box-shadow: 0px 10px 10px -10px rgba(0, 0, 0, 0.3);\n .list {\n margin: 0;\n ul:before {\n display: none;\n }\n .item-content {\n padding-left: 0;\n }\n .item-inner {\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left) - var(--menu-list-offset));\n }\n .item-title {\n font-size: 15px;\n }\n }\n }\n}\n\n// Function List Popover\n\n#idx-functions-list {\n width: 350px;\n .popover-inner {\n .navbars {\n .right .link {\n font-weight: 600;\n }\n .navbar-bg {\n background: @background-secondary;\n &::after {\n background: @background-menu-divider;\n }\n }\n }\n .page-function-info{\n .navbar {\n .navbar-bg::after {\n background: @background-menu-divider;\n }\n .navbar-inner{\n background: @background-secondary;\n .title {\n color: @text-normal;\n }\n .right .link {\n color: @brandColor;\n font-weight: 600;\n }\n .icon-back::after {\n color: @brandColor;\n }\n }\n }\n }\n }\n}\n\n// Highlight Colors\n\n.highlight-palette {\n width: 100%;\n}\n\n.highlight-color {\n min-width: 10px;\n min-height: 34px;\n margin: 1px;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset;\n position: relative;\n flex-grow: 1;\n &_active:after {\n content: ' ';\n position: absolute;\n width: 100%;\n height: 100%;\n box-shadow: 0 0 0 1px #ffffff, 0 0 0 4px #446995;\n z-index: 1;\n border-radius: 1px;\n }\n}\n#idx-celleditor.expanded {\n .functions-list {\n &__mobile {\n top: 70px;\n }\n }\n}\n\n.popover__functions {\n box-shadow: 0px 10px 100px rgba(0, 0, 0, 0.3);\n .view {\n transition: .2s height;\n }\n .popover-angle.on-bottom {\n display: none;\n }\n}\n\n.target-function-list {\n position: absolute; \n left: 0;\n top: 0;\n bottom: 0;\n width: 0; \n height: 100%;\n}\n\n.dropdown-list-popup {\n height: 260px;\n bottom: 0;\n top: auto;\n}\n\n.dropdown-list {\n &__placeholder {\n opacity: 0.6;\n .item-inner {\n border-bottom: 1px solid var(--f7-list-item-border-color);\n }\n }\n}\n\n// Swiper\n.swiper-wrapper .swiper-slide .list ul {\n background-color: transparent;\n}\n\n.swiper-pagination-bullet {\n background: @background-menu-divider;\n opacity: 1;\n &-active {\n background: @text-secondary;\n }\n}\n\n.swiper-pagination-bullets {\n position: fixed;\n width: 100%;\n bottom: 9px;\n .swiper-pagination-bullet {\n margin: 0 5.5px;\n }\n}\n\n.preview-cell-style {\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n width: 104px;\n height: 44px;\n background-color: @fill-white;\n border-radius: 4px;\n border: 0.5px solid @background-menu-divider;\n}\n\n// Sharing Settings\n.sharing-placeholder {\n height: 100%;\n}\n\n// Comment List\n.sheet-modal .page-current-comment {\n padding-bottom: 60px;\n}\n\n// Picker\n.picker-columns {\n justify-content: space-around;\n}\n\n.row-picker {\n .col-50 {\n color: @text-secondary;\n text-align: center;\n }\n}\n\n// Block \n.block {\n margin-top: 8px;\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 16px;\n}\n\n// Inputs List \n.block-title + .list, .block-title + .block, .block-title + .card, .block-title + .timeline, .block-title + .block-header {\n margin: 0;\n}\n\n.inputs-list {\n margin-bottom: 0;\n\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n position: relative;\n background: var(--f7-list-bg-color);\n }\n}\n\n.list input[type='password'], \n.list input[type='text'] {\n background: transparent;\n}\n\n// Dialog with password\n.dialog {\n .modal-password {\n position: relative;\n\n &__icon {\n position: absolute;\n right: 4px;\n top: calc(50% - 12.5px);\n }\n\n .item-input-wrap {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n }\n}\n\n// Version History \n.version-history { \n &__user {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n min-width: 40px;\n min-height: 40px;\n text-align: center;\n border-radius: 50px;\n line-height: 40px;\n color: var(--fill-white);\n font-size: 18px;\n }\n}\n\n// Review change\n.accept-reject .link {\n margin-right: 20px;\n}\n\n// Beta badge\n.beta-badge {\n font-size: 12px;\n font-weight: 400;\n line-height: 16px;\n letter-spacing: 0.5px;\n color: @fill-white;\n padding: 2px 4px;\n border-radius: 4px;\n}\n\n// Close editor button\n.close-editor-btn {\n .item-inner {\n padding-left: 36px;\n }\n\n .item-title {\n color: @text-error;\n }\n}\n\n\n\n\n\n\n\n","\n.device-ios .app-layout {\n @blockTitleColor: #6d6d72;\n @item-border-color: #c8c7cc;\n @darkGreen: #40865c;\n @text-normal: var(--text-normal);\n @background-warning: #FF9F0A;\n\n --f7-navbar-link-color: @brandColor;\n --f7-subnavbar-link-color: @brandColor;\n --f7-navbar-text-color: @text-normal;\n --f7-navbar-title-line-height: 44px;\n --f7-navbar-link-line-height: 44px;\n --f7-navbar-title-font-size: 17px;\n\n --f7-list-bg-color: @background-primary;\n --f7-navbar-bg-color: @toolbar-background;\n\n --f7-tabbar-link-inactive-color: @toolbar-segment;\n\n --f7-radio-active-color: @brandColor;\n --f7-toggle-active-color: @brandColor;\n --f7-range-bar-active-bg-color: @brandColor;\n\n --f7-list-button-text-color: @brandColor;\n\n --f7-list-item-border-color: @background-menu-divider;\n\n --f7-page-bg-color: @background-tertiary;\n --f7-list-item-title-text-color: @text-normal;\n --f7-list-item-text-text-color: @text-normal;\n --f7-list-item-subtitle-text-color: @text-secondary;\n --f7-label-text-color: @text-normal;\n --f7-list-item-after-text-color: @text-normal;\n --f7-input-text-color: @text-normal;\n --f7-block-title-text-color: @text-secondary;\n --f7-input-placeholder-color: @text-secondary;\n\n --f7-list-chevron-icon-color: @text-tertiary;\n --f7-searchbar-search-icon-color: @text-tertiary;\n --f7-searchbar-input-clear-button-color: @text-tertiary;\n\n --f7-toggle-inactive-border-color: @background-menu-divider;\n --f7-toggle-inactive-bg-color: @background-menu-divider;\n\n --f7-actions-button-border-color: @background-menu-divider;\n --f7-popover-bg-color: @background-primary;\n --f7-dialog-bg-color-rgb: @background-secondary;\n --f7-dialog-title-text-color: @text-normal;\n --f7-dialog-text-color: @text-normal;\n --f7-dialog-button-text-color: @brandColor;\n --f7-dialog-border-divider-color: @background-menu-divider;\n\n --f7-subnavbar-border-color: @background-menu-divider;\n --f7-list-border-color: @background-menu-divider;\n\n --f7-picker-item-text-color: rgba(var(--text-normal), 0.45);\n --f7-picker-item-selected-text-color: @text-normal;\n\n --f7-block-text-color: @text-secondary;\n\n --f7-theme-color-shade: @background-primary;\n --f7-fab-pressed-bg-color: @background-primary;\n --f7-input-clear-button-color: @text-tertiary;\n\n // Main Toolbar\n #editor-navbar.navbar .right a + a,\n #editor-navbar.navbar .left a + a {\n margin-left: 0;\n }\n\n .navbar, .navbar-bg, .subnavbar {\n background-color: var(--f7-navbar-bg-color);\n\n a.btn-doc-back {\n width: 22px;\n }\n\n .title {\n color: @text-normal;\n }\n\n .navbar-inner, .subnavbar-inner {\n z-index: auto;\n }\n \n .sheet-close {\n width: 44px;\n height: 44px;\n display: flex;\n justify-content: center;\n }\n }\n\n .subnavbar {\n .icon-back {\n color: @brandColor;\n }\n\n .title {\n font-size: 15px;\n font-weight: normal;\n }\n }\n\n .popover__titled {\n .list {\n &:first-child, &:last-child {\n ul {\n border-radius: 0;\n }\n\n li:first-child, li:last-child {\n > label {\n border-radius: 0;\n }\n }\n }\n }\n\n .popover-inner {\n //border-radius: var(--f7-popover-border-radius);\n\n > .view {\n border-radius: var(--f7-popover-border-radius);\n }\n }\n\n .navbar-bg {\n //-webkit-backdrop-filter: none;\n backdrop-filter: none;\n &::after {\n background: @background-menu-divider;\n }\n }\n\n // .list:first-child {\n // li:first-child {\n // a {\n // border-radius: 0;\n // }\n // }\n // }\n\n .list:last-child {\n li:last-child {\n &:after {\n content: '';\n position: absolute;\n background-color: var(--f7-navbar-border-color, var(--f7-bars-border-color));\n display: block;\n //z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n }\n }\n }\n }\n\n .popover {\n li:last-child {\n .segmented a {\n &:first-child {\n border-radius: var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius);\n }\n\n &:last-child {\n border-radius: 0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0;\n }\n }\n }\n\n .page-content {\n > .list {\n &:last-child {\n // margin-bottom: 30px;\n }\n }\n }\n }\n\n .list {\n .item-content {\n .color-preview {\n width: 22px;\n height: 8px;\n display: inline-block;\n margin-top: 21px;\n box-sizing: border-box;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset;\n background: @fill-white;\n }\n .item-after {\n .color-preview {\n width: 75px;\n height: 30px;\n margin-top: -3px;\n }\n }\n }\n .item-inner {\n padding-top: 7px;\n .item-after {\n .after-start {\n margin: 0 5px;\n }\n .segmented {\n min-width: 90px;\n margin-left: 10px;\n }\n }\n }\n .buttons {\n .item-inner {\n padding-top: 0;\n padding-bottom: 0;\n align-items: stretch;\n > .row {\n width: 100%;\n align-items: stretch;\n .button {\n flex: 1;\n border: none;\n height: inherit;\n border-radius: 0;\n font-size: 17px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n }\n }\n }\n .list-input-right input {\n text-align: right;\n }\n }\n\n .links-list a:after, .list .item-inner:after, .simple-list li:after {\n background-color: var(--f7-list-item-border-color);\n bottom: 0;\n content: \"\";\n display: block;\n height: 1px;\n left: 0;\n position: absolute;\n right: auto;\n top: auto;\n transform: scaleY(calc(1/var(--f7-device-pixel-ratio)));\n transform-origin: 50% 100%;\n width: 100%;\n z-index: 15;\n }\n\n .tab-buttons {\n width: 100%;\n display: flex;\n flex-wrap: nowrap;\n align-self: center;\n .tab-link {\n display: block;\n width: 100%;\n line-height: 26px;\n position: relative;\n overflow: hidden;\n -webkit-box-flex: 1;\n border: 1px solid @toolbar-segment;\n text-decoration: none;\n text-align: center;\n margin: 0;\n padding: 0 1px;\n height: 29px;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n font-family: inherit;\n cursor: pointer;\n outline: 0;\n font-weight: 600;\n color: @brandColor;\n &:first-child {\n border-radius: 5px 0 0 5px;\n border-left-width: 1px;\n border-left-style: solid;\n }\n &:last-child {\n border-radius: 0 5px 5px 0;\n }\n &.tab-link-active {\n // background: @brandColor;\n // color: @fill-white;\n background: @toolbar-segment;\n color: @brand-text-on-brand;\n i.icon {\n background-color: @brand-text-on-brand;\n }\n }\n }\n }\n\n .button {\n border: 1px solid @brandColor;\n color: @brandColor;\n text-decoration: none;\n text-align: center;\n display: block;\n // border-radius: 5px;\n line-height: 27px;\n box-sizing: border-box;\n background: 0 0;\n padding: 0 10px;\n margin: 0;\n height: 29px;\n white-space: nowrap;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 14px;\n font-family: inherit;\n cursor: pointer;\n outline: 0;\n }\n\n .button-fill {\n color: @brandColor;\n background-color: @background-primary;\n }\n\n .button-red {\n color: @text-error;\n background-color: @background-primary;\n }\n\n .buttons-list {\n li {\n border: 0;\n border-radius: 0;\n height: 43px;\n min-height: 43px;\n font-size: 17px;\n text-transform: initial;\n padding: 0;\n box-shadow: none;\n }\n }\n\n .button-red .list-button {\n color: @text-error;\n }\n\n .list-button {\n position: initial;\n }\n\n .block-title {\n position: relative;\n overflow: hidden;\n margin: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n text-transform: uppercase;\n line-height: 1;\n color: @blockTitleColor;\n margin: 35px 15px 10px;\n }\n\n .shapes {\n .page-content {\n background: @fill-white;\n }\n }\n\n .dialog {\n background-color: var(--f7-dialog-bg-color-rgb);\n }\n\n #color-picker {\n .right-block {\n .button-round {\n .icon {\n height: 30px;\n width: 30px;\n }\n }\n }\n }\n\n .content-block {\n color: @blockTitleColor;\n }\n\n .dataview, #add-table, #add-shape, #add-slide, #add-chart {\n &.page-content, .page-content {\n background-color: @background-tertiary;\n }\n }\n\n // input[type=\"number\"]\n\n input[type=\"number\"] {\n &::placeholder,\n &::-webkit-input-placeholder,\n &::-moz-placeholder,\n &:-moz-placeholder,\n &:-ms-input-placeholder\n {\n color: @darkGreen;\n }\n }\n\n // Regional Settings\n\n .regional-settings {\n .item-title-row {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n .item-title {\n margin-left: 20px;\n white-space: normal;\n }\n }\n }\n\n // Find and Replace \n\n .navbar {\n .searchbar {\n background: var(--f7-navbar-bg-color);\n }\n .searchbar-input-wrap {\n position: relative;\n margin-right: 10px;\n height: 28px;\n }\n .buttons-row-replace a {\n color: @brandColor;\n }\n }\n\n .searchbar {\n input {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n display: block;\n border: none;\n appearance: none;\n border-radius: 5px;\n font-family: inherit;\n color: @text-normal;\n font-size: 14px;\n font-weight: 400;\n padding: 0 8px;\n background-color: @background-button;\n padding: 0 36px 0 28px;\n\n &::placeholder {\n color: @text-tertiary;\n }\n }\n\n .number-search-results {\n position: absolute;\n font-size: 13px;\n font-weight: 400;\n line-height: 18px;\n right: 26px;\n color: @text-tertiary;\n top: 4.5px;\n z-index: 100;\n }\n }\n\n .searchbar-inner {\n &__left {\n margin-right: 10px;\n justify-content: center;\n }\n &__right {\n .buttons-row a.next {\n margin-left: 15px;\n }\n }\n }\n\n .searchbar-expandable.searchbar-enabled {\n &.replace {\n .searchbar-inner {\n &__right {\n width: 28%;\n }\n }\n }\n } \n\n @media(max-width: 550px) {\n .navbar {\n .searchbar-input-wrap {\n margin-right: 0; \n }\n }\n .searchbar-expandable.searchbar-enabled {\n top: 0;\n .searchbar-inner {\n &__center {\n flex-direction: column;\n }\n &__right {\n flex-direction: column-reverse;\n margin-left: 10px;\n }\n }\n &.replace {\n height: 88px;\n .searchbar-inner {\n height: 100%;\n &__center {\n .searchbar-input-wrap {\n margin: 8px 0;\n }\n }\n &__right {\n width: auto;\n height: 100%;\n justify-content: space-between;\n .buttons-row-replace {\n height: 50%;\n }\n }\n }\n }\n } \n }\n\n .actions-button {\n background: @background-secondary;\n --f7-actions-button-border-color: @background-menu-divider;\n }\n \n .actions-button-text {\n // height: 57px;\n // line-height: 57px;\n font-size: 20px;\n color: @text-normal;\n white-space: normal;\n text-overflow: ellipsis;\n }\n\n input.modal-text-input {\n box-sizing: border-box;\n height: 26px;\n background: @background-primary;\n margin: 0;\n margin-top: 15px;\n padding: 0 5px;\n border: 1px solid @text-tertiary;\n border-radius: 0;\n width: 100%;\n font-size: 14px;\n font-family: inherit;\n display: block;\n box-shadow: 0 0 0 transparent;\n -webkit-appearance: none;\n -moz-appearance: none;\n -ms-appearance: none;\n appearance: none;\n }\n\n // Fonts List \n\n .font-item {\n .item-content {\n padding-left: 0;\n }\n }\n\n // Toggle Icon \n\n // .toggle-icon {\n // background: transparent;\n // }\n\n // Edit Comment Popup\n\n .edit-comment-popup {\n .navbar .title {\n line-height: normal;\n }\n }\n\n // Version History\n .version-history {\n &__title {\n font-style: normal;\n font-weight: 400;\n font-size: 13px;\n line-height: 18px;\n color: @text-secondary;\n margin-top: 16px;\n margin-bottom: 4px;\n }\n\n &__btn {\n font-style: normal;\n font-weight: 600;\n font-size: 15px;\n line-height: 20px;\n letter-spacing: -0.24px;\n text-transform: uppercase;\n color: @brandColor;\n background: transparent;\n outline: none;\n border: 0;\n padding: 0;\n margin-top: 22px;\n width: auto;\n }\n\n &__list {\n ul {\n background: @background-primary;\n }\n \n .item-title {\n font-weight: 600;\n font-size: 13px;\n line-height: 18px;\n color: @text-normal;\n letter-spacing: -0.08px;\n }\n\n .item-media, .item-inner {\n padding-top: 10px;\n padding-bottom: 10px;\n }\n\n .item-link .item-title-row:before {\n display: none;\n }\n\n .item-subtitle {\n font-style: normal;\n font-weight: 400;\n font-size: 11px;\n line-height: 13px;\n color: @text-secondary;\n margin-top: 3px;\n letter-spacing: 0.06px;\n }\n }\n }\n\n .version-history__item_active {\n background-color: var(--canvas-ruler-margins-background);\n }\n\n .btn-close-history {\n font-style: normal;\n font-weight: 400;\n font-size: 17px;\n line-height: 22px;\n letter-spacing: -0.41px;\n color: @brandColor;\n margin-left: 10px;\n }\n\n .beta-badge {\n background-color: @background-warning;\n margin-left: 10px;\n }\n}\n\n\n","\n.device-android .app-layout {\n @tabLinkColor: rgba(255,255,255,.7);\n @red: #f44336;\n @white: #fff;\n @darkGreen: #40865c;\n @darkGrey: #757575;\n @text-normal: var(--text-normal);\n @brand-text-on-brand: var(--brand-text-on-brand);\n @touchColor: rgba(255,255,255,0.1);\n\n --f7-navbar-shadow-image: none;\n --f7-theme-color: @brandColor;\n\n --f7-navbar-bg-color: @toolbar-background;\n --f7-navbar-link-color: @fill-white;\n --f7-navbar-text-color: @fill-white;\n --f7-navbar-height: 56px;\n\n --f7-list-bg-color: @background-primary;\n --f7-subnavbar-bg-color: @toolbar-background;\n --f7-subnavbar-link-color: @toolbar-icons;\n --f7-subnavbar-text-color: @fill-white;\n --f7-subnavbar-height: 56px;\n\n --f7-radio-active-color: @brandColor;\n --f7-range-bar-active-bg-color: @brandColor;\n --f7-range-knob-color: @brandColor;\n --f7-range-knob-size: 16px;\n\n --f7-list-item-after-text-color: @text-normal;\n\n --f7-link-highlight-color: transparent;\n --f7-link-touch-ripple-color: @touchColor;\n\n --f7-actions-bg-color: @background-secondary;\n --f7-actions-button-border-color: @background-menu-divider;\n --f7-popover-bg-color: @background-secondary;\n\n --f7-dialog-bg-color: @background-secondary;\n --f7-dialog-text-color: @text-secondary;\n --f7-dialog-title-text-color: @text-normal;\n --f7-dialog-button-text-color: @brandColor;\n\n --f7-picker-item-text-color: rgba(var(--text-normal), 0.45);\n --f7-picker-item-selected-text-color: @text-normal;\n\n --f7-input-bg-color: @background-primary;\n --f7-input-placeholder-color: @text-secondary;\n --f7-input-text-color: @text-normal;\n \n --f7-block-text-color: @text-secondary;\n --f7-dialog-border-radius: 0;\n --f7-sheet-border-radius: 0;\n --f7-popover-border-radius: 4px;\n --f7-actions-border-radius: 0;\n --f7-box-shadow: 0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);\n --f7-popover-box-shadow: var(--f7-box-shadow);\n\n --f7-toggle-active-bg-color: @brandColor;\n --f7-toggle-active-border-color: @brandColor;\n\n --f7-navbar-title-margin-left: 20px;\n --f7-navbar-title-margin-right: 20px;\n\n .button {\n --f7-touch-ripple-color: transparent;\n }\n\n .segmented {\n .button {\n --f7-touch-ripple-color: var(--f7-list-link-pressed-bg-color);\n }\n }\n\n --f7-input-focused-border-color: @brandColor;\n --f7-label-focused-text-color: @brandColor;\n\n .navbar {\n --f7-touch-ripple-color: @touchColor;\n\n .sheet-close {\n width: 56px;\n height: 56px;\n display: flex;\n justify-content: center;\n }\n &-inner {\n background: var(--f7-navbar-bg-color);\n background-image: var(--f7-navbar-bg-image, var(--f7-bars-bg-image));\n background-color: var(--f7-navbar-bg-color, var(--f7-bars-bg-color));\n }\n }\n\n .page.page-with-subnavbar.page-with-logo {\n .page-content {\n --f7-page-navbar-offset: var(--f7-navbar-height);\n }\n }\n\n .page {\n --f7-text-color: @text-normal;\n --f7-list-item-title-text-color: @text-normal;\n --f7-list-item-text-text-color: @text-normal;\n --f7-list-item-subtitle-text-color: @text-secondary;\n --f7-block-title-text-color: @text-secondary;\n --f7-label-text-color: @text-normal;\n --f7-page-bg-color: @background-tertiary;\n --f7-list-item-border-color: @background-menu-divider;\n --f7-list-chevron-icon-color: @text-tertiary;\n --f7-actions-button-text-color: @text-normal;\n --f7-subnavbar-border-color: @background-menu-divider;\n --f7-list-border-color: @background-menu-divider;\n }\n\n .add-popup {\n .view {\n .add-image, .inputs-list {\n ul:after {\n display: none;\n }\n }\n }\n }\n\n .coauth__sheet {\n max-height: 65%;\n }\n\n // Buttons\n .segmented {\n .decrement, .increment {\n display: flex;\n border: none;\n min-width: 40px;\n margin-left: 0;\n border-radius: 0;\n height: 32px;\n i.icon-expand-down {\n background: @brandColor;\n }\n }\n label {\n color: @text-normal;\n margin: 0 5px;\n line-height: 32px;\n }\n }\n .button {\n --f7-button-text-color: @brandColor;\n color: @brandColor;\n text-align: center;\n display: block;\n border-radius: 2px;\n line-height: 36px;\n box-sizing: border-box;\n appearance: none;\n background: 0 0;\n margin: 0;\n height: 36px;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n text-transform: uppercase;\n font-family: inherit;\n cursor: pointer;\n min-width: 64px;\n padding: 0 8px;\n position: relative;\n overflow: hidden;\n outline: 0;\n -webkit-transition-duration: .3s;\n transition-duration: .3s;\n -webkit-transform: translate3d(0,0,0);\n transform: translate3d(0,0,0);\n }\n\n .button-fill {\n color: @brand-text-on-brand;\n background-color: transparent;\n }\n\n .button-raised {\n box-shadow: 0 1px 3px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.24);\n }\n\n .button-red {\n color: @brand-text-on-brand;\n background-color: @text-error;\n }\n\n .buttons-list {\n ul {\n background-color: @background-tertiary;\n &::before, &::after {\n display: none;\n }\n li {\n margin: 20px 16px;\n color: @fill-white;\n border-radius: 2px;\n text-transform: uppercase;\n height: 36px;\n min-height: 36px;\n font-size: 14px;\n }\n }\n }\n\n .table-presets {\n .button {\n min-width: 0;\n }\n }\n .button-fill .list-button {\n background-color: @brandColor;\n color: @brand-text-on-brand;\n height: 36px;\n text-align: center;\n line-height: 36px;\n text-transform: uppercase;\n font-size: 14px;\n font-weight: 500;\n border-radius: 2px;\n // margin: 20px 16px;\n margin: 0;\n }\n .button-raised .list-button {\n box-shadow: 0 1px 3px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.24);\n }\n .button-red .list-button {\n background-color: @text-error;\n }\n // Tabs\n .tab-buttons {\n position: relative;\n display: flex;\n height: 100%;\n width: 100%;\n justify-content: space-between;\n .tab-link {\n justify-content: center;\n height: 100%;\n box-sizing: border-box;\n padding-left: 0;\n padding-right: 0;\n font-size: 14px;\n font-weight: 500;\n text-transform: uppercase;\n align-items: center;\n color: @tabLinkColor;\n i.icon {\n opacity: 0.5;\n }\n &.tab-link-active {\n color: @fill-white;\n i.icon {\n opacity: 1;\n background-color: @fill-white;\n }\n }\n }\n .tab-link-highlight {\n --f7-tabbar-link-active-border-color: @toolbar-icons;\n position: absolute;\n left: 0;\n bottom: 0;\n height: 3px;\n }\n }\n\n // List\n .list {\n &.inputs-list {\n margin: 0;\n\n .item-input.item-content {\n padding-left: 0;\n }\n \n .item-input, .item-link {\n .item-inner {\n display: block;\n\n .item-title, .item-label {\n width: 100%;\n font-size: 12px;\n }\n \n .item-input-wrap {\n margin-left: 0;\n }\n }\n }\n }\n\n .buttons {\n box-sizing: border-box;\n min-height: 48px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n\n .item-content {\n width: 100%;\n\n .item-inner {\n padding-bottom: 0;\n padding-top: 0;\n\n .row {\n width: 100%;\n --f7-cols-per-row: 1;\n align-items: flex-start;\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n\n .button {\n flex: 1;\n font-size: 17px;\n margin-left: 5px;\n display: flex;\n align-items: center;\n justify-content: center;\n &:first-child {\n margin-left: 0;\n }\n }\n }\n }\n }\n }\n\n .item-content {\n .color-preview {\n width: 30px;\n height: 30px;\n border-radius: 4px;\n margin-top: -3px;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset;\n background-color: @fill-white;\n &.auto { \n background-color: @autoColor;\n }\n }\n }\n }\n\n .item-input:not(.item-input-outline) .item-content::before, .item-input:not(.item-input-outline).item-content::before {\n background: transparent;\n }\n\n .links-list a:after, .list .item-inner:after, .simple-list li:after {\n background-color: var(--f7-list-item-border-color);\n bottom: 0;\n content: \"\";\n display: block;\n height: 1px;\n left: 0;\n position: absolute;\n right: auto;\n top: auto;\n transform: scaleY(calc(1/var(--f7-device-pixel-ratio)));\n transform-origin: 50% 100%;\n width: 100%;\n z-index: 15;\n }\n\n .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content, .media-list:not(.inset):not(.inset-md):not(.menu-list) li > .item-link, .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content, .list:not(.inset):not(.inset-md):not(.menu-list) .media-item > .item-link {\n border-radius: 0;\n }\n\n // Color palette\n\n #color-picker {\n .right-block {\n .button-round {\n background-color: @brandColor;\n }\n }\n }\n\n // Regional Settings\n\n .regional-settings {\n .list {\n .item-inner {\n margin-left: 16px;\n }\n .item-title-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n flex-direction: row-reverse;\n .item-title {\n white-space: normal;\n }\n }\n }\n }\n\n // Find and Replace \n\n .searchbar-inner {\n &__center {\n flex-wrap: wrap;\n }\n // &__left {\n // padding-top: 4px;\n // }\n }\n\n .navbar {\n .searchbar-input-wrap {\n height: 32px;\n margin-right: 10px;\n margin: 4px 0;\n }\n\n .navbar-inner {\n overflow: initial;\n }\n\n .left {\n margin: 0;\n }\n\n .title {\n margin-left: var(--f7-navbar-title-margin-left);\n margin-right: var(--f7-navbar-title-margin-left);\n }\n }\n\n .subnavbar .title {\n font-size: 14px;\n font-weight: normal;\n }\n\n .searchbar {\n input {\n box-sizing: border-box;\n width: 100%;\n display: block;\n border: none;\n appearance: none;\n border-radius: 0;\n font-family: inherit;\n color: @fill-white;\n font-size: 16px;\n font-weight: 400;\n padding: 0;\n border-bottom: 1px solid @fill-white;\n height: 100%;\n padding: 0 40px 0 24px;\n background-color: transparent;\n background-repeat: no-repeat;\n background-position: 0 center;\n opacity: 1;\n background-size: 24px 24px;\n transition-duration: .3s;\n .encoded-svg-background('');\n &::placeholder {\n color: @fill-white;\n }\n }\n\n .input-clear-button {\n width: 18px;\n height: 18px;\n top: 7px;\n margin: 0;\n\n &:after {\n color: @fill-white;\n font-size: 19px;\n line-height: 19px;\n }\n }\n\n .number-search-results {\n position: absolute;\n right: 26px;\n top: 4px;\n font-size: 16px;\n font-weight: 400;\n line-height: 24px;\n }\n }\n\n .searchbar-icon {\n &:after {\n color: @fill-white;\n font-size: 19px;\n }\n }\n \n .navbar {\n .searchbar-expandable.searchbar-enabled {\n top: 0;\n // height: 100%;\n .searchbar-inner {\n height: 100%;\n padding: 0;\n\n &__center {\n flex-direction: column;\n }\n\n &__right {\n flex-direction: column-reverse;\n }\n }\n\n &.replace {\n height: 96px;\n }\n }\n a.link {\n padding: 0 16px;\n }\n a.link.searchbar-enable {\n i.icon-search {\n background-color: @toolbar-icons;\n }\n }\n a.icon-only {\n width: auto;\n height: 56px;\n }\n .buttons-row-replace a {\n color: @fill-white;\n padding: 0;\n }\n .searchbar .buttons-row {\n align-self: flex-start;\n }\n }\n\n @media(max-width: 550px) {\n .searchbar-expandable.searchbar-enabled {\n .searchbar-inner {\n &__left {\n margin-right: 33px;\n }\n }\n }\n }\n\n .actions-button-text {\n cursor: pointer;\n line-height: 48px;\n font-size: 16px;\n // color: rgba(0,0,0,.87);\n color: @text-normal;\n // color: var(--f7-actions-button-text-color, );\n }\n\n @media (min-width: 496px) {\n .actions-modal {\n width: 100%;\n left: auto;\n margin-left: 0;\n }\n }\n\n input.modal-text-input {\n box-sizing: border-box;\n height: 36px;\n background: #fff;\n margin: 0;\n margin-top: 15px;\n padding: 0;\n border: none;\n width: 100%;\n font-size: 16px;\n font-family: inherit;\n display: block;\n box-shadow: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n -ms-appearance: none;\n appearance: none;\n -webkit-transition-duration: .2s;\n transition-duration: .2s;\n }\n\n .input-field {\n .inputs-list {\n margin: 15px 0 0;\n ul {\n background: none;\n &::before, &::after {\n display: none;\n }\n }\n .item-input, .item-inner {\n padding: 0;\n margin: 0;\n }\n }\n }\n\n // Fonts List \n\n .font-item {\n .item-radio:not(.item-radio-icon-end) > .icon-radio {\n margin-right: 0;\n }\n }\n\n // Navbar link settings \n\n .navbar-link-settings, .navbar-dropdown-list {\n .navbar-inner {\n background: @background-primary;\n\n .icon-back {\n color: @text-normal;\n }\n }\n .title, a {\n color: @text-normal;\n }\n }\n\n // Popover styles\n .popover {\n box-shadow: var(--f7-box-shadow);\n\n &.popover__titled {\n .popover-arrow:after {\n background: @toolbar-background;\n }\n }\n\n &.document-menu, &.popover__functions {\n .popover-arrow:after {\n background: @background-secondary;\n }\n }\n }\n // Version History\n .page-version-history {\n --f7-page-bg-color: @background-primary;\n }\n\n .version-history {\n &__title {\n font-style: normal;\n font-weight: 500;\n font-size: 14px;\n line-height: 20px;\n color: @brandColor;\n margin-top: 16px;\n margin-bottom: 4px;\n }\n\n &__btn {\n box-shadow: 0px 0.25px 1px rgba(0, 0, 0, 0.039), 0px 0.85px 3px rgba(0, 0, 0, 0.19);\n border-radius: 6px;\n background: @background-primary;\n padding: 6px 20px;\n font-style: normal;\n font-weight: 500;\n font-size: 16px;\n line-height: 20px;\n letter-spacing: 0.25px;\n color: @brandColor;\n margin-top: 10px;\n border: 0;\n width: auto;\n }\n\n &__list {\n ul:before, ul:after {\n display: none;\n }\n\n .item-title {\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n line-height: 24px;\n color: @text-normal;\n letter-spacing: 0.15px;\n }\n\n .item-inner {\n padding-top: 10px;\n padding-bottom: 10px;\n }\n\n .item-inner::before {\n content: '';\n position: absolute;\n background-color: @background-menu-divider;\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n\n .item-media {\n padding-top: 12px;\n padding-bottom: 12px;\n min-width: 40px;\n max-width: 40px;\n }\n\n .item-link .item-title-row:before {\n display: none;\n }\n\n .item-subtitle {\n color: @text-secondary;\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 16px;\n letter-spacing: 0.5px;\n }\n }\n }\n\n .version-history__item_active {\n background-color: @background-tertiary;\n }\n\n .btn-close-history {\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n line-height: 24px;\n letter-spacing: 0.15px;\n color: @toolbar-icons;\n margin-left: 16px;\n }\n\n .beta-badge {\n background-color: @brand-secondary;\n margin-left: 8px;\n }\n\n .dropdown-list {\n .icon-radio {\n display: none;\n }\n\n input[type=\"radio\"]:checked + .icon-radio {\n display: inline-block;\n }\n }\n}\n","// @common-image-path - defined in webpack config\n\n.device-ios {\n .theme-type-dark {\n i.icon {\n &.icon-logo {\n background: ~\"url(@{common-image-path}/header/logo-android.svg)\" no-repeat center;\n background-size: contain;\n }\n }\n }\n i.icon {\n &.icon_mask {\n background-color: white;\n }\n &.icon-logo {\n width: 100px;\n height: 20px;\n background: ~\"url(@{common-image-path}/header/logo-ios.svg)\" no-repeat center;\n background-size: contain;\n }\n &.icon-prev {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-next {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-edit {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-show-password {\n width: 25px;\n height: 25px;\n .encoded-svg-mask('', @text-secondary);\n }\n &.icon-hide-password {\n width: 25px;\n height: 25px;\n .encoded-svg-mask('', @text-secondary);\n }\n &.icon-return {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n }\n}\n","// @common-image-path - defined in webpack config\n\n.device-android {\n i.icon {\n &.icon_mask {\n background-color: @text-normal;\n }\n &.icon-logo {\n width: 100px;\n height: 20px;\n background: ~\"url(@{common-image-path}/header/logo-android.svg) no-repeat center\";\n background-size: contain;\n }\n &.icon-prev {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-next {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-show-password {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-secondary);\n }\n &.icon-hide-password {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-secondary);\n }\n }\n .dropdown-list {\n i.icon {\n &.icon-radio {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @brandColor);\n }\n }\n }\n .navbar {\n i.icon {\n &.icon-collaboration {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-back {\n color: @toolbar-icons;\n }\n &.icon-edit {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-close {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-done-disabled {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-tertiary);\n }\n &.icon-done {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-search {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-version-history {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-return {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n }\n }\n}\n","@import \"./ios/icons\";\n@import \"./material/icons\";\n\ni.icon {\n &.icon-paste {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-copy {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-cut {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-prev:after, &.icon-next:after {\n content: none;\n }\n &.icon-collaboration {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-cancellation {\n width: 24px;\n height: 24px;\n .encoded-svg-background('');\n }\n &.icon-remove-style {\n width: 24px;\n height: 24px;\n .encoded-svg-background('')\n }\n &.icon-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n // Formats \n \n &.icon-format-pdf {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n &.icon-format-pdfa {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n\n // Numbers\n\n &.icon-numbers-1 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-2 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-3 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-4 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-5 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-6 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-7 {\n .encoded-svg-background('');\n }\n\n &.icon-sharing-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n &.icon-info {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @brandColor);\n }\n\n &.icon-help {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-about {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n &.icon-search {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-version-history {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n // Text orientation\n\n &.icon-text-orientation-horizontal {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-anglecount {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-angleclock {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-vertical {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-rotateup {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-rotatedown {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n}\n","// Data view\n\n.dataview {\n .row {\n justify-content: space-around;\n }\n\n ul {\n padding: 0 10px;\n list-style: none;\n\n li {\n display: inline-block;\n }\n }\n\n .row.list:last-child li:not(.active):last-child::after {\n content: none;\n }\n\n .row.list:last-child li.active:last-child, .active {\n position: relative;\n z-index: 1;\n\n &::after {\n content: '';\n position: absolute;\n width: 22px;\n height: 22px;\n right: -5px;\n left: auto;\n bottom: -5px;\n transform: none;\n .encoded-svg-mask('');\n }\n }\n}","@statusBarBorderColor: #cbcbcb;\n\n.navbar {\n .searchbar {\n background-color: var(--f7-navbar-bg-color);\n\n .buttons-row {\n align-self: center;\n display: flex;\n }\n\n .searchbar-bg {\n .hairline(bottom, @statusBarBorderColor);\n }\n }\n\n .searchbar-inner {\n justify-content: space-between;\n &__center {\n display: flex;\n align-items: center;\n width: 81%;\n }\n &__right {\n display: flex;\n align-items: center;\n }\n }\n\n .searchbar-expandable {\n transition-duration: 0s;\n }\n\n .buttons-row-replace {\n display: flex;\n flex-direction: column;\n align-items: center;\n // width: max-content;\n width: 100%;\n justify-content: center;\n a {\n font-size: 15px;\n height: auto;\n display: block;\n line-height: normal;\n\n &:before{\n display: none;\n }\n }\n }\n\n @media(max-width: 550px)\n {\n .searchbar-expandable.searchbar-enabled {\n .searchbar-inner {\n &__left {\n min-width: 22px;\n max-width: 22px;\n }\n &__center {\n flex-direction: column;\n }\n &__right {\n flex-direction: column-reverse;\n }\n }\n &.replace {\n top: 0;\n .searchbar-inner {\n height: 100%;\n &__left {\n align-self: flex-start;\n }\n }\n }\n } \n }\n}\n","\n// RTL, LTR\n.ltr(@ruleset) {\n & when not (@rtl) {\n @ruleset();\n }\n}\n.rtl(@ruleset) {\n & when (@rtl) {\n @ruleset();\n }\n}\n.if-ios-theme(@ruleset) {\n & when (@includeIosTheme) {\n @ruleset();\n }\n}\n.if-md-theme(@ruleset) {\n & when (@includeMdTheme) {\n @ruleset();\n }\n}\n.if-dark-theme(@ruleset) {\n & when(@includeDarkTheme) {\n @ruleset();\n }\n}\n.ios-vars(@ruleset) {\n & when (@includeIosTheme) {\n .ios {\n @ruleset();\n }\n }\n}\n.md-vars(@ruleset) {\n & when (@includeMdTheme) {\n .md {\n @ruleset();\n }\n }\n}\n.md-color-vars(@ruleset) {\n & when (@includeMdTheme) {\n .md,\n .md .dark,\n .md [class*='color-'] {\n @ruleset();\n }\n }\n}\n.dark-vars(@ruleset) {\n & when (@includeDarkTheme) {\n .dark,\n &.dark {\n @ruleset();\n }\n }\n}\n.light-vars(@ruleset) {\n & when (@includeLightTheme) {\n & {\n @ruleset();\n }\n }\n}\n// Scrollable\n.scrollable() {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n}\n.not-scrollable() {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\n// Disabled\n.disabled() {\n opacity: 0.55;\n pointer-events: none;\n}\n// Modal Backdrops\n.modal-backdrop() {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.4);\n z-index: 13000;\n visibility: hidden;\n opacity: 0;\n transition-duration: 400ms;\n &.not-animated {\n transition-duration: 0ms;\n }\n &.backdrop-in {\n visibility: visible;\n opacity: 1;\n }\n}\n\n// Hairlines\n.hairline-pseudo(@color, @top, @right, @bottom, @left) {\n content: '';\n position: absolute;\n background-color: @color;\n display: block;\n z-index: 15;\n top: @top;\n right: @right;\n bottom: @bottom;\n left: @left;\n}\n.hairline(@position, @color) when (@position = top) {\n &:before {\n .hairline-pseudo(@color, 0, auto, auto, 0);\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline(@position, @color) when (@position = left) {\n &:before {\n .hairline-pseudo(@color, 0, auto, auto, 0);\n width: 1px;\n height: 100%;\n transform-origin: 0% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline(@position, @color) when (@position = bottom) {\n &:after {\n .hairline-pseudo(@color, auto, auto, 0, 0);\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline(@position, @color) when (@position = right) {\n &:after {\n .hairline-pseudo(@color, 0, 0, auto, auto);\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline-remove-top-bottom() {\n &:before,\n &:after {\n display: none !important;\n }\n}\n// For right and bottom\n.hairline-remove(@position) when not (@position = left) and not (@position = top) {\n &:after {\n display: none !important;\n }\n}\n// For left and top\n.hairline-remove(@position) when not (@position = right) and not (@position = bottom) {\n &:before {\n display: none !important;\n }\n}\n// For right and bottom\n.hairline-color(@position, @color) when not (@position = left) and not (@position = top) {\n &:after {\n background-color: @color;\n }\n}\n// For left and top\n.hairline-color(@position, @color) when not (@position = right) and not (@position = bottom) {\n &:before {\n background-color: @color;\n }\n}\n// MD Active Active Links Highlights\n.link-highlight() {\n &:before {\n content: '';\n width: 152%;\n height: 152%;\n left: -26%;\n top: -26%;\n position: absolute;\n background-image: radial-gradient(\n circle at center,\n var(--f7-link-highlight-color) 66%,\n rgba(255, 255, 255, 0) 66%\n );\n background-repeat: no-repeat;\n background-position: center;\n background-size: 100% 100%;\n opacity: 0;\n pointer-events: none;\n transition-duration: 300ms;\n transition-property: opacity;\n }\n &.icon-only:before,\n &.ripple-inset:before,\n &.searchbar-disable-button:before,\n &.input-clear-button:before,\n &.notification-close-button:before {\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n background-image: radial-gradient(\n circle at center,\n var(--f7-link-highlight-color) 71%,\n rgba(255, 255, 255, 0) 71%\n );\n }\n &.active-state:before {\n opacity: 1;\n transition-duration: 150ms;\n }\n}\n// MD Bars Shadow\n\n.core-icons-font() {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n\n.ios-translucent-bars(@color) {\n .ios-translucent-bars & {\n @supports (backdrop-filter: blur(20px)) {\n background-color: rgba(@color, var(--f7-bars-translucent-opacity));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n }\n}\n.ios-translucent-modals(@color) {\n .ios-translucent-modals & {\n @supports (backdrop-filter: blur(20px)) {\n background-color: rgba(@color, 0.8);\n backdrop-filter: saturate(180%) blur(20px);\n }\n }\n}\n\n.no-scrollbar() {\n scrollbar-width: none;\n scrollbar-color: transparent;\n &::-webkit-scrollbar {\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n }\n &::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n }\n &::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n }\n}\n","\n.device-ios {\n .document-menu {\n @contextMenuBg: rgba(0, 0, 0, 0.9);\n @modalHairlineColor: rgba(230, 230, 230, 0.9);\n @modalButtonColor: rgba(200, 200, 200, 0.9);\n\n background-color: @contextMenuBg;\n border-radius: 8px;\n\n .popover-angle {\n &:after {\n background: @contextMenuBg;\n }\n }\n\n .list-block {\n font-size: 14px;\n white-space: pre;\n\n &:first-child {\n ul {\n .hairline-remove(left);\n //border-radius: 7px 0 0 7px;\n }\n\n li:first-child a {\n //border-radius: 7px 0 0 7px;\n border-radius: 0;\n }\n }\n\n //&:last-child {\n // ul {\n // .hairline-remove(right);\n // border-radius: 0 7px 7px 0;\n // }\n // li:last-child a{\n // border-radius: 0 7px 7px 0;\n // }\n //}\n\n //&:first-child:last-child {\n // li:first-child:last-child a, ul:first-child:last-child {\n // border-radius: 7px;\n // }\n //}\n\n .item-link {\n display: inline-block;\n\n html:not(.watch-active-state) &:active, &.active-state {\n //.transition(0ms);\n background-color: #d9d9d9;\n .item-inner {\n .hairline-color(right, transparent);\n }\n }\n\n html.phone & {\n padding: 0 10px;\n }\n }\n\n .list-button {\n color: @white;\n line-height: 36px;\n\n .hairline(right, @modalHairlineColor);\n }\n\n // List items\n li {\n display: inline-flex;\n }\n\n // Last-childs\n li {\n &:last-child {\n .list-button {\n .hairline-remove(right);\n }\n }\n\n &:last-child, &:last-child li:last-child {\n .item-inner {\n .hairline-remove(right);\n }\n }\n\n li:last-child, &:last-child li {\n .item-inner {\n .hairline(right, @modalHairlineColor);\n }\n }\n }\n\n //.no-hairlines();\n //.no-hairlines-between()\n }\n }\n}","\n.md {\n .document-menu {\n //line-height: 1 !important;\n\n .popover-inner {\n overflow: hidden;\n }\n\n .list-block {\n white-space: pre;\n\n ul {\n height: 48px;\n }\n\n li {\n display: inline-block;\n }\n\n .list-button {\n color: @text-normal;\n }\n\n //.item-link {\n // html.phone & {\n //padding: 0 10px;\n //}\n //}\n }\n }\n}\n","@import './ios/contextmenu';\n@import './material/contextmenu';\n\n\n.document-menu {\n width: auto;\n}\n\nhtml.phone .document-menu .list-block .list-button {\n padding: 0 10px;\n}",".device-ios {\n .wrap-comment {\n height: calc(100% - 60px);\n }\n .add-comment-popup, .add-reply-popup, .add-comment-dialog, .add-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 34px);\n }\n }\n .edit-comment-popup, .edit-reply-popup, .edit-comment-dialog, .edit-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 52px);\n }\n }\n .comment-list {\n .reply-item {\n .item-inner:after {\n content: none !important;\n }\n &:before {\n content: '';\n position: absolute;\n left: auto;\n bottom: 0;\n right: auto;\n top: 0;\n height: 1px;\n width: 100%;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n -webkit-transform-origin: 50% 100%;\n transform-origin: 50% 100%;\n }\n }\n }\n}",".device-android {\n .wrap-comment {\n height: calc(100% - 72px);\n }\n .add-comment-popup, .add-reply-popup, .add-comment-dialog, .add-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 41px);\n }\n }\n .edit-comment-popup, .edit-reply-popup, .edit-comment-dialog, .edit-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 56px);\n }\n }\n .wrap-comment, .comment-list, .reply-list {\n .comment-header, .reply-header {\n display: flex;\n .initials {\n border-radius: 50px;\n color: @fill-white;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: 10px;\n font-size: 14px;\n }\n }\n }\n\n .wrap-comment {\n .comment-header {\n align-items: center;\n .initials {\n height: 30px;\n width: 30px;\n }\n }\n .wrap-textarea {\n .input:not(.input-outline):after {\n content: none;\n }\n }\n }\n\n #add-comment-dialog, #edit-comment-dialog, #add-reply-dialog, #edit-reply-dialog {\n .dialog {\n --f7-dialog-text-color: @black;\n .done {\n padding-right: 6px;\n }\n }\n }\n\n .comment-list {\n ul:after, .item-inner:after, li:last-child li .item-inner:after {\n content: none;\n }\n .comment-header {\n .left {\n display: flex;\n align-items: center;\n .initials {\n width: 40px;\n height: 40px;\n font-size: 18px;\n }\n }\n }\n }\n .reply-list {\n .reply-header {\n .left {\n display: flex;\n .initials {\n margin-top: 5px;\n width: 24px;\n height: 24px;\n font-size: 11px;\n }\n }\n }\n }\n\n .edit-comment-popup, .edit-reply-popup, #edit-comment-dialog, #edit-reply-dialog {\n .wrap-comment {\n .comment-header, .reply-header {\n .initials {\n height: 40px;\n width: 40px;\n }\n }\n }\n }\n\n #view-comment-popover {\n .toolbar-bottom:after {\n content: none;\n }\n }\n\n}","@comment-date: #6d6d72;\n@swipe-icon: #E5E5E5;\n\n@import './ios/comments';\n@import './material/comments';\n\n.wrap-comment {\n padding: 16px 24px 0 16px;\n background-color: @background-tertiary;\n \n .comment-date {\n color: @text-secondary;\n }\n .wrap-textarea {\n margin-top: 6px;\n }\n .name {\n font-weight: 600;\n font-size: 16px;\n color: @text-normal;\n }\n .reply-date {\n color: @text-secondary;\n }\n}\n\n.wrap-textarea {\n .input {\n height: 100%;\n }\n\n textarea {\n font-size: 14px;\n margin-top: 0;\n height: 100%;\n padding: 5px 0;\n color: @text-normal;\n }\n}\n\n#add-comment-dialog, #edit-comment-dialog, #add-reply-dialog, #edit-reply-dialog {\n .dialog {\n --f7-dialog-width: 400px;\n z-index: 13700;\n .dialog-inner {\n padding: 0;\n height: 400px;\n .wrap-comment {\n .name, .comment-date, .reply-date {\n text-align: left;\n }\n .wrap-textarea {\n textarea {\n color: @text-normal;\n width: 100%;\n }\n }\n }\n }\n }\n}\n\n.comment-list {\n .item-content .item-inner {\n padding-right: 0;\n padding-bottom: 0;\n padding-top: 16px;\n .comment-header {\n display: flex;\n justify-content: space-between;\n padding-right: 16px;\n .right {\n display: flex;\n justify-content: flex-end;\n width: 70px;\n .comment-resolve {\n margin-right: 10px;\n }\n }\n }\n .reply-header {\n display: flex;\n justify-content: space-between;\n padding-right: 16px;\n }\n }\n .item-title {\n width: 100%;\n }\n .user-name {\n font-size: 16px;\n line-height: 22px;\n color: @text-normal;\n margin: 0;\n font-weight: 700;\n }\n .comment-date, .reply-date {\n font-size: 12px;\n line-height: 18px;\n color: @text-secondary;\n margin: 0;\n }\n .comment-quote {\n color: @text-secondary;\n border-left: 1px solid @text-secondary;\n padding-left: 10px;\n padding-right: 16px;\n margin: 5px 0;\n font-size: 14px;\n }\n .comment-text, .reply-text {\n color: @text-normal;\n font-size: 14px;\n line-height: 25px;\n margin: 0;\n max-width: 100%;\n padding-right: 15px;\n word-break: break-all;\n pre {\n white-space: pre-wrap;\n overflow-wrap: break-word;\n }\n }\n .reply-list {\n padding-left: 26px;\n }\n .reply-item {\n padding-right: 26px;\n }\n}\n\n.edit-comment-popup, .add-reply-popup, .edit-reply-popup {\n z-index: 20000;\n}\n\n#view-comment-sheet {\n background-color: @fill-white;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n height: 45%;\n box-shadow: 0 1px 10px rgba(0, 0, 0, 0.2), 0 4px 5px rgba(0, 0, 0, 0.12);\n webkit-transition: height 200ms;\n transition: height 200ms;\n .top {\n height: 90%;\n }\n .swipe-container {\n display: flex;\n justify-content: center;\n height: 40px;\n background-color: @background-primary;\n .icon-swipe {\n margin-top: 8px;\n width: 40px;\n height: 4px;\n background: @background-menu-divider;\n border-radius: 2px;\n }\n }\n}\n\n#view-comment-popover, #view-comment-sheet {\n .toolbar {\n position: fixed;\n background-color: @background-primary;\n box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.2), 0px 4px 5px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14);\n .link {\n --f7-toolbar-link-color: @brandColor;\n }\n .toolbar-inner {\n padding: 0 16px;\n }\n .btn-add-reply {\n padding: 0;\n min-width: 80px;\n font-size: 16px;\n }\n .comment-navigation {\n min-width: 62px;\n display: flex;\n justify-content: space-between;\n .link {\n padding: 0 12px;\n }\n }\n }\n}\n\n#view-comment-popover {\n background-color: @background-primary;\n .pages {\n position: absolute;\n }\n .page {\n border-radius: var(--f7-popover-border-radius);\n .page-content {\n padding: 16px 16px 60px 0;\n border-radius: var(--f7-popover-border-radius);\n }\n }\n .comment-list {\n .item-content {\n .item-inner {\n .comment-header, .reply-header {\n padding-right: 0;\n }\n }\n }\n }\n .toolbar {\n position: absolute;\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n }\n}\n\n.page-current-comment {\n position: relative;\n .page-content {\n background-color: @background-primary;\n }\n .comment-list {\n ul {\n &:before, &:after {\n content: none;\n }\n .item-content .item-inner {\n padding-top: 0;\n .reply-list .item-content .item-inner {\n padding-top: 13px;\n }\n }\n }\n }\n}\n\n.dialog.modal-in {\n z-index: 14000;\n max-height: 100%;\n overflow: auto;\n\n .item-content .item-input-wrap::after {\n background-color: @brandColor;\n }\n}\n\n.dialog-backdrop.backdrop-in {\n z-index: 13600;\n}\n\n.no-comments {\n text-align: center;\n margin-top: 35px;\n color: @text-normal;\n}\n\n.actions-modal.modal-in {\n z-index: 13700;\n .actions-group::after {\n background-color: @background-menu-divider;\n }\n}\n\n.actions-backdrop.backdrop-in {\n z-index: 13600;\n}","\n// Colors\n@themeColorLight: #a2bdde;\n@navBarIconColor: @toolbar-icons;\n\n\n.device-android {\n // Main Toolbar\n #editor-navbar.navbar .right {\n padding-right: 4px;\n }\n #editor-navbar.navbar .right a.link,\n #editor-navbar.navbar .left a.link {\n padding: 0 13px;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n width: auto;\n }\n\n // .toggle input[type=\"checkbox\"]:checked + .toggle-icon {\n // background-color: rgba(68,105,149,.5);\n // }\n\n // Review\n .page-review {\n .header-change {\n display: flex;\n }\n .toolbar {\n height: 56px;\n .toolbar-inner {\n padding: 0 15px;\n .link {\n padding: 0;\n font-size: 14px;\n text-transform: uppercase;\n font-weight: 500;\n }\n }\n }\n .initials {\n height: 40px;\n width: 40px;\n border-radius: 50px;\n color: @white;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: 16px;\n font-size: 18px;\n }\n }\n\n // Stepper \n .content-block.stepper-block {\n display: flex;\n justify-content: center;\n margin: 25px 0 0;\n\n .stepper {\n --f7-touch-ripple-color: none;\n }\n \n .stepper-button, .stepper-button-minus, .stepper-button-plus {\n border: none;\n border-radius: 0;\n\n &:before, &:after{\n display: none;\n }\n }\n\n .stepper-button-minus.active-state, .stepper-button-plus.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n }\n\n .stepper-input-wrap{\n border:none;\n\n input {\n color: @text-normal;\n font-size: 16px;\n width: 40px;\n font-weight: var(--f7-list-item-after-line-height);\n }\n }\n }\n\n .navigation-sheet {\n border-radius: 4px 4px 0px 0px;\n &__title {\n display: flex;\n align-items: center;\n background: @background-primary;\n padding-bottom: 15px;\n padding-left: 16px;\n p {\n font-style: normal;\n font-weight: 500;\n font-size: 20px;\n line-height: 23px;\n color: @text-normal;\n margin: 0;\n }\n }\n }\n\n // Snackbar\n .snackbar {\n position: absolute;\n width: 344px;\n left: calc(50% - 344px / 2);\n bottom: 16px;\n background: #333333;\n border-radius: 4px;\n z-index: 1000000;\n &__content {\n padding: 14px 16px;\n }\n &__text {\n margin: 0;\n color: @fill-white;\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 20px;\n letter-spacing: 0.25px;\n text-align: center;\n }\n }\n\n @media(max-width: 450px) {\n .snackbar {\n width: auto;\n max-width: 100%;\n left: 16px;\n right: 16px;\n bottom: 8px;\n &__text {\n text-align: left;\n }\n }\n }\n\n // Password input\n .password-field {\n &__wrap {\n display: flex;\n justify-content: space-between;\n position: relative;\n }\n\n &__icon {\n min-width: 24px;\n min-height: 24px;\n }\n\n &__input {\n width: 100%;\n height: var(--f7-input-height);\n color: var(--f7-input-text-color);\n font-size: var(--f7-input-font-size);\n background-color: var(--f7-input-bg-color, transparent);\n padding-left: var(--f7-input-padding-left);\n padding-right: var(--f7-input-padding-right);\n box-sizing: border-box;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n box-shadow: none;\n border-radius: 0;\n outline: 0;\n display: block;\n padding: 0;\n margin: 0;\n font-family: inherit;\n background: none;\n resize: none;\n }\n }\n}",".ios {\n // Stepper \n .content-block.stepper-block {\n margin: 20px 0;\n\n .stepper.stepper-large {\n height: 35px;\n border-radius: var(--f7-button-border-radius);\n box-shadow: var(--f7-button-box-shadow);\n }\n\n .stepper-button-minus, .stepper-button-plus {\n color: #446995;\n border: 1px solid #446995;\n \n &:before, &:after{\n display: none;\n }\n }\n\n .stepper-button-minus.active-state, .stepper-button-plus.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n }\n\n .stepper-input-wrap {\n border-top: 1px solid #446995;\n border-bottom: 1px solid #446995;\n input {\n color: @text-normal;\n font-size: 17px;\n font-weight: var(--f7-list-item-after-line-height);\n }\n }\n }\n\n .navigation-sheet {\n border-radius: 10px 10px 0px 0px;\n &__title {\n display: flex;\n justify-content: center;\n align-items: center;\n background: @background-primary;\n padding-bottom: 10px;\n p {\n font-style: normal;\n font-weight: 600;\n font-size: 17px;\n line-height: 22px;\n text-align: center;\n color: @text-normal;\n margin: 0;\n }\n }\n }\n\n // Custom option dropdown page\n .custom-option-wrapper {\n padding: 11px 16px;\n \n .wrap-textarea {\n padding: 0;\n }\n }\n\n\n // Reader mode\n .back-reader-mode {\n margin-left: 10px;\n }\n\n // Snackbar\n .snackbar {\n width: 195px;\n position: absolute;\n bottom: 24px;\n left: calc(50% - 195px / 2);\n background: rgba(0, 0, 0, .9);\n border-radius: 4px;\n z-index: 1000000;\n &__content {\n padding: 15px 16.5px;\n }\n &__text {\n margin: 0;\n font-style: normal;\n font-weight: 400;\n font-size: 13px;\n line-height: 18px;\n letter-spacing: -0.078px;\n color: @fill-white;\n text-align: center;\n }\n }\n\n @media(max-width: 450px) {\n .snackbar {\n bottom: 50px;\n }\n }\n}\n\n",".device-ios {\n i.icon {\n &.icon-undo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-redo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-edit-settings {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-plus {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-expand-down {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n //Settings\n &.icon-spellcheck {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-reader {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-doc-setup {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-app-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-download {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-print {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-navigation {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-feedback {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n // Edit\n \n &.icon-text-additional {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-bullets {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-numbers {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-linespacing {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-color {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-selection {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n // Align\n &.icon-text-align-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-center {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-just {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-de-indent {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-in-indent {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n // Table\n &.icon-table-add-column-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-table-add-column-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-table-add-row-above {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-table-add-row-below {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-table-remove-column {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-table-remove-row {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n // Presets of table borders\n &.icon-table-borders-all {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-none {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-inner {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-outer {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-left {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-center {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-right {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-top {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-middle {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-bottom {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n // Reorder\n &.icon-move-backward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-forward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-mask {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-background {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-foreground {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n // Wrap\n &.icon-wrap-inline {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-wrap-square {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-wrap-tight {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-wrap-through {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-wrap-top-bottom {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-wrap-infront {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-wrap-behind {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n // Table Wrap\n &.icon-wrap-table-inline {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-wrap-table-flow {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-block-align-left {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-block-align-center {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-block-align-right {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n // Insert link/image-library\n &.icon-link {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-image-library {\n width: 22px;\n height: 22px;\n .encoded-svg-background('icons_for_svg');\n }\n //Insert\n &.icon-add-table {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-segment);\n }\n &.icon-add-shape {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('',@toolbar-segment);\n }\n &.icon-add-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-segment);\n }\n &.icon-add-other {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-segment);\n }\n &.icon-table-contents {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-insert-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-pagenumber {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-sectionbreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-footnote {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-pagebreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-stringbreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n // Collaboration\n &.icon-users {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-review {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-review-changes {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-accept-changes {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-reject-changes {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-accept {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-reject {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-next-change {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-prev-change {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-goto {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n // Reader mode\n &.icon-edit-mode {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-mobile-view {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-standard-view {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n // Comments\n &.icon-menu-comment {\n width: 30px;\n height: 30px;\n .encoded-svg-mask('', @text-tertiary);\n }\n &.icon-resolve-comment {\n width: 30px;\n height: 30px;\n .encoded-svg-mask('');\n }\n &.icon-resolve-comment.check {\n width: 30px;\n height: 30px;\n .encoded-svg-background('');\n }\n &.icon-insert-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-export {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-prev-field {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n &.icon-next-field {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n }\n .tab-link-active {\n i.icon {\n &.icon-add-table {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-shape {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-other {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n }\n }\n}",".device-android {\n .navbar {\n i.icon {\n &.icon-undo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-redo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-edit-settings {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-plus {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-settings {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-prev {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-next {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-expand-down {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @fill-white);\n }\n // Insert\n &.icon-add-table {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-tab-normal);\n }\n &.icon-add-shape {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-tab-normal);\n }\n &.icon-add-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-tab-normal);\n }\n &.icon-add-other {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-tab-normal);\n }\n\n // Reader mode\n &.icon-mobile-view {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-standard-view {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-check {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n // Forms tools\n &.icon-prev-field {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons)\n }\n &.icon-next-field {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-export {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-save-form {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n }\n }\n i.icon {\n &.icon-plus {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @fill-white);\n }\n &.icon-check {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-expand-down {\n width: 17px;\n height: 17px;\n .encoded-svg-mask('');\n }\n &.icon-expand-up {\n width: 17px;\n height: 17px;\n .encoded-svg-mask('');\n }\n //Settings\n &.icon-spellcheck {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-reader {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-doc-setup {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-app-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-download {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-print {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-table-contents {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-navigation {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-feedback {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n // Forms tools\n &.icon-export {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-favorites {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n &.icon-clear-fields {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n // Mobile View\n &.icon-mobile-view {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @brandColor);\n }\n &.icon-edit-mode {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @brandColor);\n }\n\n // Edit\n &.icon-text-align-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-center {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-just {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-de-indent {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-in-indent {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n // Table\n &.icon-table-add-column-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-table-add-column-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-table-add-row-above {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-table-add-row-below {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-table-remove-column {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-table-remove-row {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-create-style {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n // Presets of table borders\n &.icon-table-borders-all {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-none {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-inner {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-outer {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-left {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-center {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-right {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-top {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-middle {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-bottom {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n // Reorder\n &.icon-move-backward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-forward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-mask {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-background {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-foreground {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n // Table Wrap\n &.icon-block-align-left {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-block-align-center {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-block-align-right {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n // Insert link/image-library\n &.icon-link {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-image-library {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-insert-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-pagenumber {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-sectionbreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-footnote {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-pagebreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-stringbreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n // Collaboration\n &.icon-users {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-review {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-review-changes {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-accept-changes {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-reject-changes {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-accept {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-reject {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-next-change {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-prev-change {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-goto {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n // Comments\n &.icon-menu-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-tertiary);\n }\n &.icon-resolve-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-resolve-comment.check {\n width: 24px;\n height: 24px;\n .encoded-svg-background('');\n }\n &.icon-done-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-insert-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-done-comment-white {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @fill-white);\n }\n }\n}","// Formats\n\ni.icon {\n &.icon-format-docx {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n \n &.icon-format-docxf {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n \n &.icon-format-oform {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n \n &.icon-format-txt {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n \n &.icon-format-rtf {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n \n &.icon-format-odt {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n \n &.icon-format-html {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n \n &.icon-format-dotx {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n \n &.icon-format-ott {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n\n &.icon-protect-document {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-protection {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-encrypt-file {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n \n &.icon-format-fb2 {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n\n &.icon-format-epub {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n &.icon-save-form {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n &.icon-add-favorites {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n &.icon-remove-favorites {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n &.icon-clear-fields {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/apps/documenteditor/mobile/css/964.css b/apps/documenteditor/mobile/css/964.css new file mode 100644 index 0000000000..d0b8cea545 --- /dev/null +++ b/apps/documenteditor/mobile/css/964.css @@ -0,0 +1,6 @@ +/*! + * + * * Version: 8.0.1 (build: 0) + * + */:root{--brand-word:#446995;--brand-cell:#40865c;--brand-slide:#be664f;--brand-form:#be664f;--brand-primary:#3880be;--brand-secondary:#ed7309;--brand-text-on-brand:#fff;--background-primary:#fff;--background-secondary:#fff;--background-tertiary:#eff0f5;--background-menu-divider:rgba(60,60,67,.15);--background-button:#eff0f5;--text-normal:#000;--text-secondary:rgba(0,0,0,.6);--text-tertiary:rgba(0,0,0,.4);--text-link:#007aff;--text-error:#ff3b30;--fill-black:#000;--fill-white:#fff;--toolbar-background:#446995;--toolbar-icons:#fff;--toolbar-segment:#446995;--toolbar-tab-normal:hsla(0,0%,100%,.5);--component-disabled-opacity:0.4;--active-opacity-word:rgba(68,105,149,.3);--active-opacity-slide:rgba(190,102,79,.3);--active-opacity-cell:rgba(64,134,92,.3);--image-border-types-filter:none;--canvas-background:#eee;--canvas-content-background:#fff;--canvas-page-border:#ccc;--canvas-ruler-background:#fff;--canvas-ruler-margins-background:#d9d9d9;--canvas-ruler-mark:#555;--canvas-ruler-handle-border:#555;--canvas-ruler-handle-border-disabled:#aaa;--canvas-high-contrast:#000;--canvas-cell-border:rgba(0,0,0,.1);--canvas-cell-title-selected:#cfcfcf;--canvas-cell-title-border:#d8d8d8;--canvas-cell-title-border-selected:#bbb;--canvas-dark-cell-title:#444;--canvas-dark-cell-title-selected:#111;--canvas-dark-cell-title-border:#3d3d3d;--canvas-dark-cell-title-border-selected:#0f0f0f;--canvas-dark-content-background:#3a3a3a;--canvas-dark-page-border:#2a2a2a}:root .theme-dark,:root .theme-type-dark{--background-primary:#232323;--background-secondary:#333;--background-tertiary:#131313;--background-menu-divider:rgba(84,84,88,.5);--background-button:#333;--text-normal:hsla(0,0%,100%,.87);--text-secondary:hsla(0,0%,100%,.6);--text-tertiary:hsla(0,0%,100%,.4);--text-link:#1976d2;--text-error:#ff453a;--fill-black:#000;--fill-white:#fff;--brand-word:#208bff;--brand-cell:#34c759;--brand-slide:#fe8c33;--brand-form:#fe8c33;--brand-primary:#3e9cf0;--brand-secondary:#ffaf49;--brand-text-on-brand:#000;--toolbar-background:#232323;--toolbar-icons:#208bff;--toolbar-segment:#fff;--toolbar-tab-normal:#757575;--component-disabled-opacity:0.4;--active-opacity-word:rgba(68,105,149,.2);--active-opacity-slide:rgba(190,102,79,.2);--active-opacity-cell:rgba(64,134,92,.2);--image-border-types-filter:invert(100%) brightness(4);--canvas-background:#000;--canvas-content-background:#fff;--canvas-page-border:#303030;--canvas-ruler-background:#636366;--canvas-ruler-margins-background:#3a3a3c;--canvas-ruler-mark:#8e8e93;--canvas-ruler-handle-border:#636366;--canvas-ruler-handle-border-disabled:#636366;--canvas-high-contrast:#000;--canvas-cell-border:rgba(0,0,0,.1);--canvas-cell-title-border:#d5d5d5;--canvas-cell-title-border-hover:#858585;--canvas-cell-title-border-selected:#afafaf;--canvas-cell-title-selected:#cfcfcf;--canvas-dark-cell-title:#444;--canvas-dark-cell-title-selected:#111;--canvas-dark-cell-title-border:#d5d5d5;--canvas-dark-cell-title-border-selected:#afafaf}[dir=rtl].device-android .app-layout .searchbar input{background-position:100%;padding-left:36px;padding-right:24px}[dir=rtl].device-android .app-layout .searchbar .number-search-results{left:26px;right:auto}[dir=rtl].device-android .comment-list .comment-header .initials,[dir=rtl].device-android .wrap-comment .comment-header .initials{margin-left:10px;margin-right:0}[dir=rtl].device-android .actions-modal .actions-button-text{text-align:right}[dir=rtl].device-android .navigation-sheet__title{padding-left:0;padding-right:16px}[dir=rtl].device-ios .app-layout .navbar .left a+a,[dir=rtl].device-ios .app-layout .navbar .right a+a,[dir=rtl].device-ios .app-layout .subnavbar{margin-right:0}[dir=rtl].device-ios .app-layout .tab-buttons .tab-link:first-child{border-radius:0 5px 5px 0}[dir=rtl].device-ios .app-layout .tab-buttons .tab-link:last-child{border-radius:5px 0 0 5px}[dir=rtl].device-ios .app-layout .searchbar .number-search-results{left:26px;right:auto}[dir=rtl].device-ios .app-layout .popover li:first-child .segmented a:first-child,[dir=rtl].device-ios .app-layout .popover li:last-child .segmented a:first-child{border-radius:0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0}[dir=rtl].device-ios .app-layout .popover li:first-child .segmented a:last-child,[dir=rtl].device-ios .app-layout .popover li:last-child .segmented a:last-child{border-radius:var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius)}[dir=rtl].device-ios .app-layout .list .item-inner .item-after .segmented{margin-left:0;margin-right:10px}[dir=rtl].device-ios .app-layout .searchbar-inner__right .buttons-row a.next{margin-left:0;margin-right:15px}[dir=rtl].device-ios .app-layout .navbar .searchbar-input-wrap,[dir=rtl].device-ios .app-layout .searchbar-inner__left{margin-left:10px;margin-right:0}[dir=rtl].device-ios .app-layout .comment-list .item-content .item-inner .comment-header{padding-left:16px}[dir=rtl] .comment-list .item-content .item-inner{padding-left:0}[dir=rtl] .comment-list .item-content .item-inner .comment-header .right{justify-content:space-between}[dir=rtl] .comment-list .item-content .item-inner .comment-header .right .comment-resolve{margin-left:10px;margin-right:0}[dir=rtl] .comment-list .item-content .item-inner .comment-header .name{text-align:right}[dir=rtl] .comment-quote{border-left:0;border-right:1px solid var(--text-secondary);padding-left:16px;padding-right:10px}[dir=rtl] .comment-text,[dir=rtl] .reply-text{padding-left:15px;padding-right:0}[dir=rtl] #add-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #add-comment-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #add-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,[dir=rtl] #add-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #add-reply-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #add-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date,[dir=rtl] #edit-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #edit-comment-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #edit-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,[dir=rtl] #edit-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #edit-reply-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #edit-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date{text-align:right}[dir=rtl] #view-comment-popover .page .page-content{padding:16px 0 60px 16px}[dir=rtl] .wrap-comment{padding:16px 16px 0 24px}[dir=rtl] .shapes .thumb{transform:scaleX(-1)}[dir=rtl] #settings-popover .link,[dir=rtl] .settings-popup .link{display:inline}[dir=rtl] #edit-table-style ul{padding-right:0}[dir=rtl] .color-schemes-menu .item-title{margin-right:20px}[dir=rtl] .list [slot=root-start]{padding:15px 15px 0 0}[dir=rtl] .bullets .item-content,[dir=rtl] .multilevels .item-content,[dir=rtl] .numbers .item-content{padding-right:0}[dir=rtl] .dataview .active:after{left:-5px;right:unset}[dir=rtl] .popover .list .range-number,[dir=rtl] .popup .list .range-number,[dir=rtl] .sheet-modal .list .range-number{text-align:left}[dir=rtl] .popover .list .inner-range-title,[dir=rtl] .popup .list .inner-range-title,[dir=rtl] .sheet-modal .list .inner-range-title{padding-left:0;padding-right:15px}[dir=rtl] #color-picker .right-block,[dir=rtl] .page-review .toolbar #btn-reject-change{margin-left:0;margin-right:20px}[dir=rtl] .list li.no-indicator .item-link .item-inner{padding-right:0}[dir=rtl] .dialog .modal-password .modal-password__icon{left:4px;right:auto}@media (max-width:550px){.device-ios[dir=rtl] .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__right{margin-left:0;margin-right:10px}.device-ios[dir=rtl] .app-layout .navbar .searchbar-input-wrap{margin-left:0}.device-android[dir=rtl] .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__left{margin-left:33px;margin-right:0}}[dir=rtl] i.icon.icon-next,[dir=rtl] i.icon.icon-numbers-3,[dir=rtl] i.icon.icon-numbers-7,[dir=rtl] i.icon.icon-prev,[dir=rtl] i.icon.icon-table-add-column-left,[dir=rtl] i.icon.icon-table-add-column-right,[dir=rtl] i.icon.icon-table-borders-left,[dir=rtl] i.icon.icon-table-borders-right,[dir=rtl] i.icon.icon-table-remove-column,[dir=rtl] i.icon.icon-text-align-left,[dir=rtl] i.icon.icon-text-align-right{transform:scaleX(-1)}[dir=rtl] i.icon.icon-numbers-1{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M55.728 18v-6.725h-.022l-2.051 1.477v-1.02l2.062-1.482h.946V18h-.935ZM52.35 30.484c0-.677.243-1.239.73-1.687.487-.45 1.096-.676 1.826-.676.691 0 1.277.206 1.757.617.48.412.72.915.72 1.51 0 .43-.119.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.775V36h-5.113v-.666l2.728-2.874c.52-.547.863-.963 1.032-1.246.172-.282.258-.585.258-.907 0-.373-.15-.69-.452-.951a1.585 1.585 0 0 0-1.085-.392c-.454 0-.834.145-1.138.435-.305.29-.457.652-.457 1.085v.005h-.934v-.005ZM53.698 49.423v-.817h.929c.444 0 .807-.127 1.09-.38.283-.259.425-.585.425-.978 0-.394-.131-.708-.393-.94-.26-.233-.632-.35-1.111-.35-.444 0-.806.119-1.085.355-.28.236-.44.559-.484.967h-.929c.054-.66.308-1.184.763-1.574.458-.39 1.05-.585 1.778-.585.698 0 1.278.188 1.74.564.462.375.693.854.693 1.434 0 .483-.143.89-.43 1.219-.286.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.402.564.347.337.52.777.52 1.322 0 .433-.121.823-.364 1.17a2.39 2.39 0 0 1-.989.806c-.415.19-.875.285-1.38.285-.802 0-1.449-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.042.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.595.5-1 0-.454-.161-.814-.483-1.079-.32-.265-.756-.397-1.311-.397h-.972ZM51 17h-1v1h1zM51 35h-1v1h1zM51 52h-1v1h1z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-2{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M52.312 18v-6.725h-.021l-2.052 1.477v-1.02L52.3 10.25h.946V18h-.935Zm2.47 1.488c.123-.208.214-.37.275-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM48.934 30.484c0-.677.243-1.239.73-1.687.487-.45 1.096-.676 1.826-.676.691 0 1.277.206 1.757.617.48.412.72.915.72 1.51 0 .43-.119.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.775V36h-5.113v-.666l2.728-2.874c.52-.547.863-.963 1.032-1.246.172-.282.258-.585.258-.907 0-.373-.15-.69-.452-.951a1.585 1.585 0 0 0-1.085-.392c-.454 0-.834.145-1.138.435-.305.29-.457.652-.457 1.085v.005h-.934v-.005Zm5.849 7.004c.121-.208.213-.37.274-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM50.282 49.423v-.817h.929c.444 0 .807-.127 1.09-.38.283-.259.425-.585.425-.978 0-.394-.131-.708-.392-.94-.262-.233-.633-.35-1.112-.35-.444 0-.806.119-1.085.355-.28.236-.44.559-.484.967h-.929c.054-.66.308-1.184.763-1.574.458-.39 1.05-.585 1.778-.585.698 0 1.278.188 1.74.564.462.375.693.854.693 1.434 0 .483-.144.89-.43 1.219-.286.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.402.564.347.337.52.777.52 1.322 0 .433-.121.823-.364 1.17a2.39 2.39 0 0 1-.989.806c-.415.19-.875.285-1.38.285-.802 0-1.448-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.043.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.595.5-1 0-.454-.161-.814-.483-1.079-.32-.265-.756-.397-1.311-.397h-.972Zm4.5 5.065c.123-.208.214-.37.275-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822Z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-4{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='m56.85 18-.778-2.218h-3.083L52.21 18h-1.015l2.857-7.75h.956L57.866 18H56.85Zm-2.336-6.574-1.24 3.534h2.513l-1.24-3.534h-.033ZM55.03 36h-3.024v-7.75h3.035c.662 0 1.197.177 1.606.531.411.355.617.822.617 1.402 0 .405-.13.772-.392 1.101-.258.326-.573.523-.945.591v.043c.526.068.945.274 1.257.618.315.343.472.773.472 1.289 0 .684-.233 1.217-.698 1.6-.462.383-1.105.575-1.928.575Zm-2.057-6.896v2.486h1.547c.572 0 1.01-.11 1.31-.333.304-.222.457-.542.457-.961 0-.383-.127-.677-.382-.881-.254-.208-.616-.311-1.085-.311h-1.847Zm0 6.042h1.912c.583 0 1.026-.116 1.326-.35.301-.232.452-.572.452-1.02 0-.902-.623-1.353-1.87-1.353h-1.82v2.723ZM54.39 53.129c-1.07 0-1.92-.36-2.55-1.08-.627-.723-.94-1.699-.94-2.927 0-1.217.316-2.188.95-2.911.634-.727 1.48-1.09 2.54-1.09.846 0 1.562.236 2.15.709.59.469.946 1.09 1.068 1.863h-.978a2.1 2.1 0 0 0-.8-1.219c-.408-.308-.888-.462-1.44-.462-.755 0-1.36.283-1.815.849-.455.566-.682 1.32-.682 2.261 0 .953.226 1.71.677 2.272.451.562 1.06.843 1.826.843.57 0 1.05-.13 1.44-.392.39-.261.655-.628.794-1.1h.978c-.18.765-.546 1.354-1.101 1.766-.555.412-1.26.618-2.116.618ZM49 17h-1v1h1zM49 35h-1v1h1zM49 52h-1v1h1z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-5{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M51.404 17.243c.473 0 .863-.136 1.171-.409.312-.275.467-.62.467-1.036v-.467l-1.514.096c-.881.054-1.322.364-1.322.93 0 .268.108.483.323.644.218.161.51.242.875.242Zm-.198.81c-.588 0-1.06-.155-1.418-.467-.358-.311-.537-.723-.537-1.235 0-.498.186-.888.558-1.17.373-.287.91-.452 1.611-.495l1.622-.097v-.483c0-.358-.114-.634-.343-.827-.23-.194-.557-.29-.983-.29-.337 0-.621.08-.854.241-.23.162-.373.378-.43.65h-.897c.015-.487.231-.895.65-1.224.419-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36V18h-.886v-1.004h-.022c-.164.322-.415.58-.752.773-.336.19-.707.285-1.111.285Zm3.577 1.435c.121-.208.213-.37.274-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM51.759 36.054a2.3 2.3 0 0 1-1.117-.264 1.979 1.979 0 0 1-.769-.767h-.02V36h-.887v-8.089h.934v3.239h.022c.183-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.322.272 1.773.817.45.54.677 1.251.677 2.132 0 .884-.228 1.597-.683 2.138-.45.54-1.047.81-1.788.81Zm-.167-5.065c-.505 0-.915.197-1.23.59-.311.39-.467.9-.467 1.526 0 .63.156 1.14.467 1.53.315.391.725.586 1.23.586.509 0 .915-.191 1.22-.574.308-.384.461-.898.461-1.542 0-.641-.154-1.153-.462-1.536-.304-.387-.71-.58-1.219-.58Zm3.19 6.499c.123-.208.214-.37.275-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM54.31 49.095h-.918a1.274 1.274 0 0 0-.484-.795c-.261-.207-.601-.311-1.02-.311-.509 0-.919.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.468 1.547.315.38.728.57 1.24.57.405 0 .736-.092.994-.275.261-.186.432-.453.51-.8h.919c-.079.57-.34 1.03-.784 1.38-.44.351-.989.527-1.644.527-.802 0-1.445-.265-1.928-.795-.484-.534-.725-1.252-.725-2.154 0-.888.241-1.6.725-2.138.483-.54 1.122-.81 1.917-.81.684 0 1.245.189 1.681.569.437.376.686.832.747 1.37Zm.473 5.393c.121-.208.213-.37.274-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822Z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-6{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M54.82 17.243c.473 0 .863-.136 1.171-.409.312-.275.468-.62.468-1.036v-.467l-1.515.096c-.881.054-1.321.364-1.321.93 0 .268.107.483.322.644.218.161.51.242.875.242Zm-.198.81c-.588 0-1.06-.155-1.418-.467-.358-.311-.538-.723-.538-1.235 0-.498.187-.888.56-1.17.371-.287.909-.452 1.61-.495l1.623-.097v-.483c0-.358-.115-.634-.344-.827-.23-.194-.557-.29-.983-.29-.337 0-.621.08-.854.241-.23.162-.373.378-.43.65h-.897c.014-.487.231-.895.65-1.224.419-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36V18h-.886v-1.004h-.022a1.86 1.86 0 0 1-.752.773c-.336.19-.707.285-1.111.285ZM55.175 36.054a2.3 2.3 0 0 1-1.117-.264 1.979 1.979 0 0 1-.768-.767h-.022V36h-.886v-8.089h.934v3.239h.022c.182-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.322.272 1.773.817.45.54.676 1.251.676 2.132 0 .884-.227 1.597-.682 2.138-.45.54-1.047.81-1.788.81Zm-.167-5.065c-.505 0-.915.197-1.23.59-.311.39-.467.9-.467 1.526 0 .63.156 1.14.467 1.53.315.391.725.586 1.23.586.509 0 .915-.191 1.22-.574.307-.384.462-.898.462-1.542 0-.641-.154-1.153-.462-1.536-.305-.387-.711-.58-1.22-.58ZM57.726 49.095h-.918a1.274 1.274 0 0 0-.484-.795c-.261-.207-.601-.311-1.02-.311-.509 0-.919.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.468 1.547.315.38.728.57 1.24.57.405 0 .736-.092.994-.275.261-.186.432-.453.51-.8h.919c-.079.57-.34 1.03-.784 1.38-.44.351-.989.527-1.644.527-.802 0-1.445-.265-1.928-.795-.483-.534-.725-1.252-.725-2.154 0-.888.242-1.6.725-2.138.483-.54 1.122-.81 1.917-.81.684 0 1.245.189 1.681.569.437.376.686.832.747 1.37ZM51 17h-1v1h1zM51 35h-1v1h1zM51 52h-1v1h1z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-align-left,[dir=rtl] i.icon.icon-align-right{transform:scaleX(-1)}[dir=rtl] i.icon.icon-text-orientation-horizontal{background-color:var(--brand-word);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M9.514 10.75h1.755L8.069 2H6.363L3.25 10.75h1.712l.66-1.988h3.194l.698 1.988ZM7.197 4.041l1.101 3.247h-2.18l1.079-3.247ZM16 2h-3.194v8.75h2.72c1.028-.008 1.677-.028 1.946-.06.429-.051.789-.189 1.08-.412.294-.226.525-.527.692-.9.17-.379.256-.767.256-1.165 0-.505-.13-.945-.392-1.319s-.637-.638-1.123-.794c.345-.17.617-.427.817-.77.204-.342.306-.718.306-1.128 0-.378-.082-.718-.246-1.02a2.162 2.162 0 0 0-.616-.734 1.93 1.93 0 0 0-.834-.358C17.103 2.03 16.632 2 16 2Zm-1.58 3.48V3.456h.926c.76 0 1.22.01 1.38.03.268.036.47.14.604.31.138.168.208.387.208.657 0 .283-.08.511-.24.686-.157.172-.373.275-.65.31-.152.02-.542.03-1.171.03h-1.058Zm0 3.796v-2.34h1.302c.734 0 1.21.042 1.428.125.222.084.391.217.507.4.117.183.175.406.175.669 0 .31-.076.559-.23.746a.973.973 0 0 1-.582.346c-.157.036-.526.054-1.107.054h-1.494ZM6.016 13.25l-3.52 3.833-.497.542.498.542L6.018 22l.995-1.084-2.318-2.524H22v-1.534H4.695l2.318-2.524-.996-1.084Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain}[dir=rtl] i.icon.icon-text-orientation-anglecount{background-color:var(--brand-word);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23000' d='m12.614 10.658-1.076-1.113.79-1.703-1.958-2.025-1.623.842-1.05-1.085L14.972 2l1.046 1.082-3.403 7.576Zm.301-4.079 1.316-2.756-2.653 1.374 1.337 1.382ZM18.92 6.085l1.96 2.025c.387.4.657.718.81.952.157.233.255.485.292.756a2 2 0 0 1-.073.856 1.905 1.905 0 0 1-.475.802c-.251.26-.544.434-.879.522a1.61 1.61 0 0 1-.973-.03c.203.407.27.812.202 1.215a2.032 2.032 0 0 1-.568 1.085 2.42 2.42 0 0 1-.871.575 1.928 1.928 0 0 1-.977.133c-.315-.043-.62-.185-.914-.424-.185-.15-.595-.549-1.23-1.196l-1.668-1.724 5.365-5.547Zm.097 1.946-1.24 1.283.648.67c.386.399.631.64.737.724.191.153.387.224.588.215.205-.01.395-.104.568-.283.166-.172.258-.354.275-.548.023-.194-.038-.387-.18-.58-.086-.114-.362-.412-.828-.894l-.568-.587Zm-2.133 2.206-1.435 1.483.916.947c.357.369.594.591.712.668a.822.822 0 0 0 .57.15c.208-.022.407-.131.597-.328.161-.166.262-.344.303-.534a.92.92 0 0 0-.066-.575c-.082-.191-.348-.52-.798-.985l-.8-.826Z'/%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M2 8.72h5.604v1.358H4.24L15.45 20.916 14.328 22 3.403 11.144v3.286H2V8.72Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain}[dir=rtl] i.icon.icon-text-orientation-angleclock{background-color:var(--brand-word);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M8.72 22v-5.604h1.358v3.363L20.916 8.55 22 9.672 11.144 20.597h3.286V22H8.72Z' clip-rule='evenodd'/%3E%3Cpath fill='%23000' d='m10.658 11.386-1.113 1.076-1.703-.79-2.025 1.958.842 1.623-1.085 1.05L2 9.028l1.082-1.046 7.576 3.403Zm-4.079-.301L3.823 9.769l1.374 2.653 1.382-1.337ZM6.085 5.08 8.11 3.12c.4-.387.718-.657.952-.81.233-.157.485-.255.756-.292a2 2 0 0 1 .856.073c.295.085.562.243.802.475.26.251.434.544.522.879.09.332.08.657-.03.973.407-.203.812-.27 1.215-.202.403.07.764.259 1.085.568.252.244.444.535.575.871.131.332.175.658.133.977-.043.315-.185.62-.424.914-.15.185-.549.595-1.196 1.23l-1.724 1.668-5.547-5.365Zm1.946-.097 1.283 1.24.67-.648c.399-.385.64-.631.724-.737.153-.191.224-.387.215-.588-.01-.205-.104-.395-.283-.568-.172-.166-.354-.257-.548-.275-.194-.023-.387.038-.58.18-.114.086-.412.362-.894.828l-.587.568Zm2.206 2.133 1.483 1.435.947-.916c.369-.357.591-.594.668-.711a.822.822 0 0 0 .15-.57c-.022-.209-.131-.408-.328-.598a1.104 1.104 0 0 0-.534-.303.92.92 0 0 0-.575.066c-.191.082-.52.348-.985.798l-.826.8Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain}.device-ios{--toolbar-background:var(--background-primary,#fff);--toolbar-segment:var(--brand-word,#446995);--toolbar-icons:var(--brand-word,#446995);--f7-toolbar-border-color:var(--background-menu-divider);--f7-bars-border-color:var(--background-menu-divider);--f7-calendar-row-border-color:var(--background-menu-divider)}.device-android{--toolbar-background:var(--brand-word,#446995)}.device-android .theme-type-dark{--toolbar-icons:var(--brand-word,#446995)}.page.page-users .block-title{font-size:17px;font-weight:400;line-height:17px;margin-bottom:20px;margin-top:20px;text-transform:none}.page.page-users .color{border-radius:50px;color:var(--fill-white);font-size:18px;line-height:40px;min-height:40px;min-width:40px;text-align:center}.about .page-content{display:flex;flex-direction:column;text-align:center}.about_ios{padding-bottom:30px;padding-top:120px}.about_android{padding-bottom:16px;padding-top:60px}.about_tablet{padding-bottom:12px;padding-top:12px}.about__text{color:var(--text-normal);font-size:12px;font-style:normal;font-weight:400;line-height:16px;margin:0;text-align:center}.about a{color:var(--brand-word)}.about .logo-block__elem{display:flex;justify-content:center}.about .logo-block__elem img{height:auto;max-width:100%}.about__logo{background:url(../../../documenteditor/mobile/resources/img/about/logo-new.svg) no-repeat 50%;height:80px;width:100%}.about__editor{flex-grow:1;margin-top:20px}.about__contacts{padding-left:72px;padding-right:72px;text-align:center}.about__customer,.about__licensor{margin-top:12px;text-align:center}.theme-type-dark .about__logo{background:url(../../../documenteditor/mobile/resources/img/about/logo-new-white.svg) no-repeat 50%}.row{--f7-cols-per-row:1;align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:space-between}.row+.row{margin-top:var(--f7-grid-row-gap)}.navbar.main-navbar{height:0}.navbar.main-navbar.navbar-with-logo{height:26px}.navbar.main-navbar .navbar-inner{display:flex;justify-content:center;padding-top:8px}.navbar.main-navbar .navbar-bg:after,.navbar.main-navbar .navbar-bg:before{content:none}.navbar-hidden{transform:translate3d(0,calc((var(--f7-navbar-height) + var(--f7-subnavbar-height))*-1),0)}.navbar-hidden+.page-content,.navbar-hidden+.page>.page-content{padding-top:0}.page.editor>.page-content{transition:padding-top .3s ease-in}.subnavbar .subnavbar-inner{padding:0}.subnavbar .subnavbar-inner .title{flex-shrink:1;margin:0;overflow:hidden;padding:0;text-overflow:clip}.subnavbar .icon-back{color:var(--toolbar-icons)}.page.page-with-subnavbar .page-content{--f7-page-subnavbar-offset:0px}.page.page-with-subnavbar.page-with-logo .page-content{--f7-page-subnavbar-offset:26px}.popover .list:first-child,.popup .list:first-child,.sheet-modal .list:first-child{margin-bottom:0;margin-top:0}.popover .list .inner-range-title,.popup .list .inner-range-title,.sheet-modal .list .inner-range-title{color:var(--text-normal);padding:15px 0 0 15px}.popover .list .range-number,.popup .list .range-number,.sheet-modal .list .range-number{color:var(--text-normal);min-width:60px;text-align:right}.popover .page-content.no-padding-top,.popup .page-content.no-padding-top,.sheet-modal .page-content.no-padding-top{padding-top:0}.sheet-modal.coauth__sheet{transition:all .3s}.disabled,[disabled]{opacity:.55;pointer-events:none}.text-content{padding:14px 10px 0}.view .list{--menu-list-offset:0px;max-width:100%}.view .list ul{background:var(--f7-list-bg-color);max-width:100%}.view .list li.no-indicator .item-link .item-inner{padding-right:15px}.view .list li.no-indicator .item-link .item-inner:before{content:none}.view .list .item-text{-webkit-line-clamp:none;height:auto;max-height:none;text-overflow:clip;white-space:normal}.view .list .font-item img{filter:var(--image-border-types-filter,none)}.view .list .buttons .button.active{background-color:var(--active-opacity-word)}.view .list .item-link .item-inner{width:100%}.view .list .item-inner{color:var(--text-normal)}.bullets,.multilevels,.numbers{min-height:160px}.bullets .row.list,.multilevels .row.list,.numbers .row.list{margin:0}.bullets .row.list ul,.multilevels .row.list ul,.numbers .row.list ul{grid-gap:10px;background:none;display:grid;grid-template-columns:repeat(4,auto);justify-content:space-around;padding:5px;width:100%}.bullets .row.list ul:after,.bullets .row.list ul:before,.multilevels .row.list ul:after,.multilevels .row.list ul:before,.numbers .row.list ul:after,.numbers .row.list ul:before{display:none}.bullets .row.list ul li,.multilevels .row.list ul li,.numbers .row.list ul li{border:1px solid #c4c4c4;height:70px;width:70px}html.pixel-ratio-2 .bullets .row.list ul li,html.pixel-ratio-2 .multilevels .row.list ul li,html.pixel-ratio-2 .numbers .row.list ul li{border:.5px solid #c4c4c4}html.pixel-ratio-3 .bullets .row.list ul li,html.pixel-ratio-3 .multilevels .row.list ul li,html.pixel-ratio-3 .numbers .row.list ul li{border:.33px solid #c4c4c4}.bullets .row.list ul li .thumb,.multilevels .row.list ul li .thumb,.numbers .row.list ul li .thumb{background-color:var(--fill-white);background-size:cover;height:100%;width:100%}.bullets .row.list ul li .thumb label,.multilevels .row.list ul li .thumb label,.numbers .row.list ul li .thumb label{color:var(--fill-black);position:absolute;text-align:center;top:34%;width:100%}.bullets .row.list ul li .item-marker,.bullets .row.list ul li .item-multilevellist,.bullets .row.list ul li .item-number,.multilevels .row.list ul li .item-marker,.multilevels .row.list ul li .item-multilevellist,.multilevels .row.list ul li .item-number,.numbers .row.list ul li .item-marker,.numbers .row.list ul li .item-multilevellist,.numbers .row.list ul li .item-number{height:68px;width:68px}.bullets .row.list .item-content,.multilevels .row.list .item-content,.numbers .row.list .item-content{min-height:68px;padding-left:0;padding-right:0}.bullets .row.list .item-content .item-inner,.multilevels .row.list .item-content .item-inner,.numbers .row.list .item-content .item-inner{padding:0}.bullets .row.list .item-content .item-inner:after,.multilevels .row.list .item-content .item-inner:after,.numbers .row.list .item-content .item-inner:after{display:none}.popover .page .list:first-child:last-child ul{background-color:var(--f7-list-bg-color);border-radius:0}.popover .list:first-child li:first-child,.popover .list:first-child li:first-child a,.popover .list:first-child li:first-child>label,.popover .list:last-child li:last-child,.popover .list:last-child li:last-child a,.popover .list:last-child li:last-child>label,.popover .page .list:first-child:last-child ul li:first-child .item-link,.popover .page .list:first-child:last-child ul li:last-child .item-link{border-radius:0}.shapes li{height:70px;margin:0 1px;width:70px}.shapes li .thumb{background-color:var(--brand-word);height:100%;width:100%}.chart-types{width:100%}.chart-types .row{padding:0 10px}.chart-types li{height:60px;margin:6px;width:60px}.chart-types li .thumb{background-size:contain;height:100%;width:100%}.chart-styles .row li{margin:0;padding:1px}.chart-styles .row img{height:50px;width:50px}.segmented .decrement,.segmented .increment{text-overflow:clip}.content-block{box-sizing:border-box;margin:32px 0;padding:0 16px}.content-block p{color:var(--text-normal)}.color-schemes-menu{cursor:pointer;display:block}.color-schemes-menu .item-inner{justify-content:flex-start}.color-schemes-menu .color-schema-block{display:flex}.color-schemes-menu .color{box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);margin:0 2px 0 0;min-height:26px;min-width:26px}.color-schemes-menu .item-title{color:var(--text-normal);margin-left:20px}.slide-layout__list{margin:auto}.slide-layout ul{display:flex;flex-wrap:wrap;justify-content:space-around}.slide-layout ul:after,.slide-layout ul:before{display:none}.slide-layout li{margin-top:12px;position:relative;z-index:1}.slide-layout li img{box-shadow:0 0 0 1px rgba(0,0,0,.15)}.slide-layout .item-inner{padding-top:0}.slide-layout .item-inner:after{display:none}.slide-layout .item-inner:before{background-color:var(--brand-word);background-repeat:no-repeat;bottom:0;content:"";height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='11' fill='transparent'/%3E%3Cpath d='M11 21a10 10 0 1 1 10-10 10 10 0 0 1-10 10Zm6.4-13.68L17.06 7a.48.48 0 0 0-.67 0l-7 6.84-2.44-2.6a.51.51 0 0 0-.59.08l-.36.34a.58.58 0 0 0 0 .65l3.19 3.35a.38.38 0 0 0 .39 0L17.4 8a.48.48 0 0 0 0-.67Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;opacity:0;position:absolute;right:11px;width:22px;z-index:1}.slide-layout .active .item-inner:before{opacity:1}.slide-transition .splitter{align-items:center;color:#000;display:flex}.slide-transition .splitter label{margin:0 5px}.slide-transition .buttons-row{display:flex;margin:0 0 0 10px;min-width:90px}.slide-transition .buttons-row .button{width:100%}.slide-transition .buttons-row .button:first-child{border-left-style:solid;border-left-width:1px;border-radius:5px 0 0 5px}.slide-transition .buttons-row .button:last-child{border-radius:0 5px 5px 0}.style-effect .list .item-title,.style-type .list .item-title{font-weight:400}.range-slider-delay{appearance:none;background:linear-gradient(90deg,#b7b8b7 0,#b7b8b7);background-position:50%;background-repeat:no-repeat;background-size:100% 2px;border:none;box-sizing:initial;margin:4px 0 5px;outline:0;width:100%}.range-slider-delay:disabled{opacity:.55}.range-slider-delay::-webkit-slider-thumb{appearance:none;background:#fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.3);cursor:pointer;height:28px;width:28px}.range-slider-delay::-ms-thumb{appearance:none;background:#fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.3);cursor:pointer;height:28px;width:28px}.buttons-list ul li{border:0;font-weight:400}.buttons-list ul li .item-link{height:100%}.buttons-list ul li .item-link .item-content{height:100%;min-height:auto;padding:0}.buttons-list ul li .item-link .item-inner{align-items:center;justify-content:center;min-height:auto;padding:0}.buttons-list ul li .item-link .item-inner:before{display:none}.item-color-auto .color-auto{background-color:#000;height:22px;width:22px}.item-color-auto.active .color-auto{border-radius:1px;box-shadow:0 0 0 1px #fff,0 0 0 4px var(--brand-word)}.page .color-palettes .list ul .palette{padding:8px 0}.page .color-palettes .list ul .palette a{border-radius:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);flex-grow:1;margin:1px 1px 0 0;min-height:26px;min-width:10px;position:relative}.page .color-palettes .list ul .palette a.active:after{border-radius:1px;box-shadow:0 0 0 1px #fff,0 0 0 4px var(--brand-word);content:" ";height:100%;position:absolute;width:100%;z-index:1}.page .color-palettes .list ul .palette a.transparent{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='0 0 22 22'%3E%3Cpath fill='none' stroke='red' stroke-linecap='undefined' stroke-linejoin='undefined' stroke-width='2' d='M0 22 22 0'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:100% 100%}.page .color-palettes .row{padding:0}.page .color-palettes .list .item-inner{color:var(--text-normal);display:block}.page .color-palettes .dynamic-colors .palette,.page .color-palettes .standart-colors .palette{display:flex}.page .color-palettes .dynamic-colors .empty-color{background-color:#fff}#color-picker{align-items:center;display:flex;justify-content:space-around;margin:4px auto 0;max-width:300px}#color-picker .color-picker-container{font-size:0;height:auto;max-width:100%;position:relative;width:calc(100% - 94px)}#color-picker .color-picker-container .color-picker-module-wheel{margin:0}#color-picker .right-block{margin-left:20px}#color-picker .right-block .color-hsb-preview{border:1px solid #c4c4c4;border-radius:100px;height:72px;overflow:hidden;width:72px}#color-picker .right-block .color-hsb-preview .current-color-hsb-preview,#color-picker .right-block .color-hsb-preview .new-color-hsb-preview{height:36px}#color-picker .right-block .color-hsb-preview .new-color-hsb-preview{border-radius:100px 100px 0 0}#color-picker .right-block .color-hsb-preview .current-color-hsb-preview{border-radius:0 0 100px 100px}#color-picker .right-block .button-round{align-items:center;background-color:var(--fill-white);border:0;border-radius:100px;box-shadow:0 4px 4px rgba(0,0,0,.25);display:flex;height:72px;justify-content:center;margin-top:20px;padding:0;width:72px}.table-styles{width:100%}.table-styles .row,.table-styles .row li{margin-bottom:12px}.table-styles .row div,.table-styles .row li{align-items:center;box-shadow:0 0 0 1px #c4c4c4;display:flex;justify-content:center}.table-styles .row div,.table-styles li{margin:0;padding:1px}.table-styles .row div img,.table-styles li img{height:50px;width:70px}#edit-table-style .list ul ul{padding-left:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.icon.lang-flag{background-image:url(../../../documenteditor/mobile/resources/img/controls/flags@2x.png);background-size:48px auto;height:12px;width:16px}.lang-flag.ca,.lang-flag.ca-ES{background-position:0 0}.lang-flag.cs,.lang-flag.cs-CZ{background-position:-16px 0}.lang-flag.da,.lang-flag.da-DK{background-position:-32px 0}.lang-flag.de,.lang-flag.de-DE{background-position:0 -12px}.lang-flag.el,.lang-flag.el-GR{background-position:-16px -12px}.lang-flag.en,.lang-flag.en-US{background-position:-32px -12px}.lang-flag.fr,.lang-flag.fr-FR{background-position:0 -24px}.lang-flag.hu,.lang-flag.hu-HU{background-position:-16px -24px}.lang-flag.it,.lang-flag.it-IT{background-position:-32px -24px}.lang-flag.ko,.lang-flag.ko-KR{background-position:0 -36px}.lang-flag.nl,.lang-flag.nl-NL{background-position:-16px -36px}.lang-flag.nb,.lang-flag.nb-NO,.lang-flag.nn,.lang-flag.nn-NO{background-position:-32px -36px}.lang-flag.pl,.lang-flag.pl-PL{background-position:0 -48px}.lang-flag.pt,.lang-flag.pt-BR{background-position:-16px -48px}.lang-flag.ro,.lang-flag.ro-RO{background-position:-32px -48px}.lang-flag.ru,.lang-flag.ru-RU{background-position:0 -60px}.lang-flag.sv,.lang-flag.sv-SE{background-position:-32px -60px}.lang-flag.tr,.lang-flag.tr-TR{background-position:0 -72px}.lang-flag.uk,.lang-flag.uk-UA{background-position:-16px -72px}.lang-flag.lv,.lang-flag.lv-LV{background-position:-32px -72px}.lang-flag.lt,.lang-flag.lt-LT{background-position:0 -84px}.lang-flag.vi,.lang-flag.vi-VN{background-position:-16px -84px}.lang-flag.de-CH,.lang-flag.fr-CH,.lang-flag.it-CH{background-position:-32px -84px}.lang-flag.pt-PT{background-position:-16px -96px}.lang-flag.de-AT{background-position:-32px -96px}.lang-flag.es,.lang-flag.es-ES{background-position:0 -108px}.lang-flag.en-GB{background-position:-32px -108px}.lang-flag.en-AU{background-position:0 -120px}.lang-flag.az-Latn-AZ{background-position:-16px -120px}.lang-flag.en-ID,.lang-flag.id,.lang-flag.id-ID{background-position:-32px -120px}.lang-flag.bg,.lang-flag.bg-BG{background-position:0 -132px}.lang-flag.ca-ES-valencia{background-position:-16px -132px}.lang-flag.en-CA{background-position:-32px -132px}.lang-flag.en-ZA{background-position:0 -144px}.lang-flag.eu,.lang-flag.eu-ES{background-position:-16px -144px}.lang-flag.gl,.lang-flag.gl-ES{background-position:-32px -144px}.lang-flag.hr,.lang-flag.hr-HR{background-position:0 -156px}.lang-flag.lb,.lang-flag.lb-LU{background-position:-16px -156px}.lang-flag.mn,.lang-flag.mn-MN{background-position:-32px -156px}.lang-flag.sl,.lang-flag.sl-SI{background-position:0 -168px}.lang-flag.sr,.lang-flag.sr-Cyrl-RS,.lang-flag.sr-Latn-RS{background-position:-16px -168px}.lang-flag.sk,.lang-flag.sk-SK{background-position:-32px -168px}.lang-flag.kk,.lang-flag.kk-KZ{background-position:0 -180px}.lang-flag.fi,.lang-flag.fi-FI,.lang-flag.sv-FI{background-position:-16px -180px}.lang-flag.zh,.lang-flag.zh-CN{background-position:-32px -180px}.lang-flag.ja,.lang-flag.ja-JP{background-position:0 -192px}.lang-flag.es-MX{background-position:-16px -192px}.checkbox-in-modal{align-items:center;display:flex;margin-top:10px}.checkbox-in-modal .right-text{margin-left:10px}.username-tip{color:#fff;display:none;height:20px;opacity:0;padding:0 10px;pointer-events:none;position:absolute;transition:opacity .1ms ease-out;z-index:900}.username-tip.active{display:block;opacity:1}.dlg-adv-options{z-index:13700}.dlg-adv-options .content-block{padding:0}.dlg-adv-options .picker-3d .picker-item{font-size:16px;padding:0;text-align:left}.dlg-adv-options .picker-center-highlight{left:0;right:0;width:100%}.dlg-macros-request .dialog-text{word-break:break-word}@keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}@-o-keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}@-moz-keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}@-webkit-keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}.doc-placeholder-container{height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:6000}.statusbar .statusbar--box-tabs>ul>.locked a{box-shadow:inset 0 2px red}.font-item .item-inner{overflow:hidden}.font-item .item-inner:after{left:16px}.cell-editor{overflow:initial}.functions-list{background-color:var(--background-primary);max-height:200px;overflow-x:hidden;overflow-y:auto;width:360px}.functions-list__mobile{box-shadow:0 10px 10px -10px rgba(0,0,0,.3);left:0;position:absolute;right:0;width:100%}.functions-list__mobile .list{margin:0}.functions-list__mobile .list ul:before{display:none}.functions-list__mobile .list .item-content{padding-left:0}.functions-list__mobile .list .item-inner{padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left) - var(--menu-list-offset))}.functions-list__mobile .list .item-title{font-size:15px}#idx-functions-list{width:350px}#idx-functions-list .popover-inner .navbars .right .link{font-weight:600}#idx-functions-list .popover-inner .navbars .navbar-bg{background:var(--background-secondary)}#idx-functions-list .popover-inner .navbars .navbar-bg:after,#idx-functions-list .popover-inner .page-function-info .navbar .navbar-bg:after{background:var(--background-menu-divider)}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner{background:var(--background-secondary)}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner .title{color:var(--text-normal)}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner .right .link{color:var(--brand-word);font-weight:600}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner .icon-back:after{color:var(--brand-word)}.highlight-palette{width:100%}.highlight-color{box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);flex-grow:1;margin:1px;min-height:34px;min-width:10px;position:relative}.highlight-color_active:after{border-radius:1px;box-shadow:0 0 0 1px #fff,0 0 0 4px #446995;content:" ";height:100%;position:absolute;width:100%;z-index:1}#idx-celleditor.expanded .functions-list__mobile{top:70px}.popover__functions{box-shadow:0 10px 100px rgba(0,0,0,.3)}.popover__functions .view{transition:height .2s}.popover__functions .popover-angle.on-bottom{display:none}.target-function-list{bottom:0;height:100%;left:0;position:absolute;top:0;width:0}.dropdown-list__placeholder{opacity:.6}.dropdown-list__placeholder .item-inner{border-bottom:1px solid var(--f7-list-item-border-color)}.swiper-wrapper .swiper-slide .list ul{background-color:initial}.swiper-pagination-bullet{background:var(--background-menu-divider);opacity:1}.swiper-pagination-bullet-active{background:var(--text-secondary)}.swiper-pagination-bullets{bottom:9px;position:fixed;width:100%}.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 5.5px}.preview-cell-style{background-color:var(--fill-white);background-position:50%;background-repeat:no-repeat;background-size:cover;border:.5px solid var(--background-menu-divider);border-radius:4px;height:44px;width:104px}.sharing-placeholder{height:100%}.sheet-modal .page-current-comment{padding-bottom:60px}.picker-columns{justify-content:space-around}.row-picker .col-50{color:var(--text-secondary);text-align:center}.block{font-size:12px;font-style:normal;font-weight:400;line-height:16px;margin-top:8px}.block-title+.block,.block-title+.block-header,.block-title+.card,.block-title+.list,.block-title+.timeline{margin:0}.inputs-list{margin-bottom:0}.inputs-list ul{background:var(--f7-list-bg-color);list-style:none;margin:0;padding:0;position:relative}.list input[type=password],.list input[type=text]{background:transparent}.dialog .modal-password{position:relative}.dialog .modal-password__icon{position:absolute;right:4px;top:calc(50% - 12.5px)}.dialog .modal-password .item-input-wrap{align-items:center;display:flex;justify-content:space-between}.version-history__user{border-radius:50%;border-radius:50px;color:var(--fill-white);font-size:18px;height:40px;line-height:40px;min-height:40px;min-width:40px;text-align:center;width:40px}.accept-reject .link{margin-right:20px}.beta-badge{border-radius:4px;color:var(--fill-white);font-size:12px;font-weight:400;letter-spacing:.5px;line-height:16px;padding:2px 4px}.device-ios .app-layout{--f7-navbar-link-color:var(--brand-word);--f7-subnavbar-link-color:var(--brand-word);--f7-navbar-text-color:var(--text-normal);--f7-navbar-title-line-height:44px;--f7-navbar-link-line-height:44px;--f7-navbar-title-font-size:17px;--f7-list-bg-color:var(--background-primary);--f7-navbar-bg-color:var(--toolbar-background);--f7-tabbar-link-inactive-color:var(--toolbar-segment);--f7-radio-active-color:var(--brand-word);--f7-toggle-active-color:var(--brand-word);--f7-range-bar-active-bg-color:var(--brand-word);--f7-list-button-text-color:var(--brand-word);--f7-list-item-border-color:var(--background-menu-divider);--f7-page-bg-color:var(--background-tertiary);--f7-list-item-title-text-color:var(--text-normal);--f7-list-item-text-text-color:var(--text-normal);--f7-list-item-subtitle-text-color:var(--text-secondary);--f7-label-text-color:var(--text-normal);--f7-list-item-after-text-color:var(--text-normal);--f7-input-text-color:var(--text-normal);--f7-block-title-text-color:var(--text-secondary);--f7-input-placeholder-color:var(--text-secondary);--f7-list-chevron-icon-color:var(--text-tertiary);--f7-searchbar-search-icon-color:var(--text-tertiary);--f7-searchbar-input-clear-button-color:var(--text-tertiary);--f7-toggle-inactive-border-color:var(--background-menu-divider);--f7-toggle-inactive-bg-color:var(--background-menu-divider);--f7-actions-button-border-color:var(--background-menu-divider);--f7-popover-bg-color:var(--background-primary);--f7-dialog-bg-color-rgb:var(--background-secondary);--f7-dialog-title-text-color:var(--text-normal);--f7-dialog-text-color:var(--text-normal);--f7-dialog-button-text-color:var(--brand-word);--f7-dialog-border-divider-color:var(--background-menu-divider);--f7-subnavbar-border-color:var(--background-menu-divider);--f7-list-border-color:var(--background-menu-divider);--f7-picker-item-text-color:rgba(var(--text-normal),0.45);--f7-picker-item-selected-text-color:var(--text-normal);--f7-block-text-color:var(--text-secondary);--f7-theme-color-shade:var(--background-primary);--f7-fab-pressed-bg-color:var(--background-primary);--f7-input-clear-button-color:var(--text-tertiary)}.device-ios .app-layout #editor-navbar.navbar .left a+a,.device-ios .app-layout #editor-navbar.navbar .right a+a{margin-left:0}.device-ios .app-layout .navbar,.device-ios .app-layout .navbar-bg,.device-ios .app-layout .subnavbar{background-color:var(--f7-navbar-bg-color)}.device-ios .app-layout .navbar a.btn-doc-back,.device-ios .app-layout .navbar-bg a.btn-doc-back,.device-ios .app-layout .subnavbar a.btn-doc-back{width:22px}.device-ios .app-layout .navbar .title,.device-ios .app-layout .navbar-bg .title,.device-ios .app-layout .subnavbar .title{color:var(--text-normal);font-weight:600}.device-ios .app-layout .navbar .navbar-inner,.device-ios .app-layout .navbar .subnavbar-inner,.device-ios .app-layout .navbar-bg .navbar-inner,.device-ios .app-layout .navbar-bg .subnavbar-inner,.device-ios .app-layout .subnavbar .navbar-inner,.device-ios .app-layout .subnavbar .subnavbar-inner{z-index:auto}.device-ios .app-layout .navbar .sheet-close,.device-ios .app-layout .navbar-bg .sheet-close,.device-ios .app-layout .subnavbar .sheet-close{display:flex;height:44px;justify-content:center;width:44px}.device-ios .app-layout .subnavbar .icon-back{color:var(--brand-word)}.device-ios .app-layout .popover__titled .list:first-child li:first-child>label,.device-ios .app-layout .popover__titled .list:first-child li:last-child>label,.device-ios .app-layout .popover__titled .list:first-child ul,.device-ios .app-layout .popover__titled .list:last-child li:first-child>label,.device-ios .app-layout .popover__titled .list:last-child li:last-child>label,.device-ios .app-layout .popover__titled .list:last-child ul{border-radius:0}.device-ios .app-layout .popover__titled .popover-inner>.view{border-radius:var(--f7-popover-border-radius)}.device-ios .app-layout .popover__titled .navbar-bg{backdrop-filter:none}.device-ios .app-layout .popover__titled .navbar-bg:after{background:var(--background-menu-divider)}.device-ios .app-layout .popover__titled .list:last-child li:last-child:after{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-navbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%}.device-ios .app-layout .popover li:last-child .segmented a:first-child{border-radius:var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius)}.device-ios .app-layout .popover li:last-child .segmented a:last-child{border-radius:0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0}.device-ios .app-layout .popover-arrow:after{background:rgba(0,0,0,.9)}.device-ios .app-layout .list .item-content .color-preview{background:var(--fill-white);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);box-sizing:border-box;display:inline-block;height:8px;margin-top:21px;width:22px}.device-ios .app-layout .list .item-content .item-after .color-preview{height:30px;margin-top:-3px;width:75px}.device-ios .app-layout .list .item-inner{padding-top:7px}.device-ios .app-layout .list .item-inner .item-after .after-start{margin:0 5px}.device-ios .app-layout .list .item-inner .item-after .segmented{margin-left:10px;min-width:90px}.device-ios .app-layout .list .buttons .item-inner{align-items:stretch;padding-bottom:0;padding-top:0}.device-ios .app-layout .list .buttons .item-inner>.row{align-items:stretch;width:100%}.device-ios .app-layout .list .buttons .item-inner>.row .button{align-items:center;border:none;border-radius:0;display:flex;flex:1;font-size:17px;height:inherit;justify-content:center}.device-ios .app-layout .list .list-input-right input{text-align:right}.device-ios .app-layout .links-list a:after,.device-ios .app-layout .list .item-inner:after,.device-ios .app-layout .simple-list li:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.device-ios .app-layout .tab-buttons{align-self:center;display:flex;flex-wrap:nowrap;width:100%}.device-ios .app-layout .tab-buttons .tab-link{-webkit-box-flex:1;border:1px solid var(--toolbar-segment);color:var(--brand-word);cursor:pointer;display:block;font-family:inherit;font-size:14px;font-weight:600;height:29px;line-height:26px;margin:0;outline:0;overflow:hidden;padding:0 1px;position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;width:100%}.device-ios .app-layout .tab-buttons .tab-link:first-child{border-left-style:solid;border-left-width:1px;border-radius:5px 0 0 5px}.device-ios .app-layout .tab-buttons .tab-link:last-child{border-radius:0 5px 5px 0}.device-ios .app-layout .tab-buttons .tab-link.tab-link-active{background:var(--toolbar-segment);color:var(--brand-text-on-brand)}.device-ios .app-layout .tab-buttons .tab-link.tab-link-active i.icon{background-color:var(--brand-text-on-brand)}.device-ios .app-layout .button{background:0 0;border:1px solid var(--brand-word);box-sizing:border-box;color:var(--brand-word);cursor:pointer;display:block;font-family:inherit;font-size:14px;height:29px;line-height:27px;margin:0;outline:0;overflow:hidden;padding:0 10px;position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.device-ios .app-layout .button-fill{background-color:var(--background-primary);color:var(--brand-word)}.device-ios .app-layout .button-red{background-color:var(--background-primary);color:var(--text-error)}.device-ios .app-layout .buttons-list li{border:0;border-radius:0;box-shadow:none;font-size:17px;height:43px;min-height:43px;padding:0;text-transform:none}.device-ios .app-layout .button-red .list-button{color:var(--text-error)}.device-ios .app-layout .list-button{position:static}.device-ios .app-layout .block-title{color:#6d6d72;font-size:14px;line-height:1;margin:35px 15px 10px;overflow:hidden;position:relative;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.device-ios .app-layout .shapes .page-content{background:var(--fill-white)}.device-ios .app-layout .dialog{background-color:var(--f7-dialog-bg-color-rgb)}.device-ios .app-layout #color-picker .right-block .button-round .icon{height:30px;width:30px}.device-ios .app-layout .content-block{color:#6d6d72}.device-ios .app-layout #add-chart .page-content,.device-ios .app-layout #add-chart.page-content,.device-ios .app-layout #add-shape .page-content,.device-ios .app-layout #add-shape.page-content,.device-ios .app-layout #add-slide .page-content,.device-ios .app-layout #add-slide.page-content,.device-ios .app-layout #add-table .page-content,.device-ios .app-layout #add-table.page-content,.device-ios .app-layout .dataview .page-content,.device-ios .app-layout .dataview.page-content{background-color:var(--background-tertiary)}.device-ios .app-layout input[type=number]:-moz-placeholder,.device-ios .app-layout input[type=number]:-ms-input-placeholder,.device-ios .app-layout input[type=number]::-moz-placeholder,.device-ios .app-layout input[type=number]::-webkit-input-placeholder,.device-ios .app-layout input[type=number]::placeholder{color:#40865c}.device-ios .app-layout .regional-settings .item-title-row{align-items:center;display:flex;justify-content:flex-start}.device-ios .app-layout .regional-settings .item-title-row .item-title{margin-left:20px;white-space:normal}.device-ios .app-layout .navbar .searchbar{background:var(--f7-navbar-bg-color)}.device-ios .app-layout .navbar .searchbar-input-wrap{height:28px;margin-right:10px;position:relative}.device-ios .app-layout .navbar .buttons-row-replace a{color:var(--brand-word)}.device-ios .app-layout .searchbar input{appearance:none;background-color:var(--background-button);border:none;border-radius:5px;box-sizing:border-box;color:var(--text-normal);display:block;font-family:inherit;font-size:14px;font-weight:400;height:100%;padding:0 36px 0 28px;width:100%}.device-ios .app-layout .searchbar input::placeholder{color:var(--text-tertiary)}.device-ios .app-layout .searchbar .number-search-results{color:var(--text-tertiary);font-size:13px;font-weight:400;line-height:18px;position:absolute;right:26px;top:4.5px;z-index:100}.device-ios .app-layout .searchbar-inner__left{justify-content:center;margin-right:10px}.device-ios .app-layout .searchbar-inner__right .buttons-row a.next{margin-left:15px}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__right{width:28%}@media (max-width:550px){.device-ios .app-layout .navbar .searchbar-input-wrap{margin-right:0}.device-ios .app-layout .searchbar-expandable.searchbar-enabled{top:0}.device-ios .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__center{flex-direction:column}.device-ios .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__right{flex-direction:column-reverse;margin-left:10px}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace{height:88px}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner{height:100%}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__center .searchbar-input-wrap{margin:8px 0}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__right{height:100%;justify-content:space-between;width:auto}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__right .buttons-row-replace{height:50%}}.device-ios .app-layout .actions-button{--f7-actions-button-border-color:var(--background-menu-divider);background:var(--background-secondary)}.device-ios .app-layout .actions-button-text{color:var(--text-normal);font-size:20px;text-overflow:ellipsis;white-space:normal}.device-ios .app-layout input.modal-text-input{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;background:var(--background-primary);border:1px solid var(--text-tertiary);border-radius:0;box-shadow:0 0 0 transparent;box-sizing:border-box;display:block;font-family:inherit;font-size:14px;height:26px;margin:15px 0 0;padding:0 5px;width:100%}.device-ios .app-layout .font-item .item-content{padding-left:0}.device-ios .app-layout .edit-comment-popup .navbar .title{line-height:normal}.device-ios .app-layout .version-history__title{color:var(--text-secondary);font-size:13px;font-style:normal;font-weight:400;line-height:18px;margin-bottom:4px;margin-top:16px}.device-ios .app-layout .version-history__btn{background:transparent;border:0;color:var(--brand-word);font-size:15px;font-style:normal;font-weight:600;letter-spacing:-.24px;line-height:20px;margin-top:22px;outline:none;padding:0;text-transform:uppercase;width:auto}.device-ios .app-layout .version-history__list ul{background:var(--background-primary)}.device-ios .app-layout .version-history__list .item-title{color:var(--text-normal);font-size:13px;font-weight:600;letter-spacing:-.08px;line-height:18px}.device-ios .app-layout .version-history__list .item-inner,.device-ios .app-layout .version-history__list .item-media{padding-bottom:10px;padding-top:10px}.device-ios .app-layout .version-history__list .item-link .item-title-row:before{display:none}.device-ios .app-layout .version-history__list .item-subtitle{color:var(--text-secondary);font-size:11px;font-style:normal;font-weight:400;letter-spacing:.06px;line-height:13px;margin-top:3px}.device-ios .app-layout .version-history__item_active{background-color:var(--canvas-ruler-margins-background)}.device-ios .app-layout .btn-close-history{color:var(--brand-word);font-size:17px;font-style:normal;font-weight:400;letter-spacing:-.41px;line-height:22px;margin-left:10px}.device-ios .app-layout .beta-badge{background-color:#ff9f0a;margin-left:10px}.device-android .app-layout{--f7-navbar-shadow-image:none;--f7-theme-color:var(--brand-word);--f7-navbar-bg-color:var(--toolbar-background);--f7-navbar-link-color:var(--fill-white);--f7-navbar-text-color:var(--fill-white);--f7-navbar-height:56px;--f7-list-bg-color:var(--background-primary);--f7-subnavbar-bg-color:var(--toolbar-background);--f7-subnavbar-link-color:var(--toolbar-icons);--f7-subnavbar-text-color:var(--fill-white);--f7-subnavbar-height:56px;--f7-radio-active-color:var(--brand-word);--f7-range-bar-active-bg-color:var(--brand-word);--f7-range-knob-color:var(--brand-word);--f7-range-knob-size:16px;--f7-list-item-after-text-color:var(--text-normal);--f7-link-highlight-color:transparent;--f7-link-touch-ripple-color:hsla(0,0%,100%,.1);--f7-actions-bg-color:var(--background-secondary);--f7-actions-button-border-color:var(--background-menu-divider);--f7-popover-bg-color:var(--background-secondary);--f7-dialog-bg-color:var(--background-secondary);--f7-dialog-text-color:var(--text-secondary);--f7-dialog-title-text-color:var(--text-normal);--f7-dialog-button-text-color:var(--brand-word);--f7-picker-item-text-color:rgba(var(--text-normal),0.45);--f7-picker-item-selected-text-color:var(--text-normal);--f7-input-bg-color:var(--background-primary);--f7-input-placeholder-color:var(--text-secondary);--f7-input-text-color:var(--text-normal);--f7-block-text-color:var(--text-secondary);--f7-dialog-border-radius:0;--f7-sheet-border-radius:0;--f7-popover-border-radius:4px;--f7-actions-border-radius:0;--f7-box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);--f7-popover-box-shadow:var(--f7-box-shadow);--f7-toggle-active-bg-color:var(--brand-word);--f7-toggle-active-border-color:var(--brand-word);--f7-navbar-title-margin-left:20px;--f7-navbar-title-margin-right:20px;--f7-input-focused-border-color:var(--brand-word);--f7-label-focused-text-color:var(--brand-word)}.device-android .app-layout .button{--f7-touch-ripple-color:transparent}.device-android .app-layout .segmented .button{--f7-touch-ripple-color:var(--f7-list-link-pressed-bg-color)}.device-android .app-layout .navbar{--f7-touch-ripple-color:hsla(0,0%,100%,.1)}.device-android .app-layout .navbar .sheet-close{display:flex;height:56px;justify-content:center;width:56px}.device-android .app-layout .navbar-inner{background:var(--f7-navbar-bg-color);background-color:var(--f7-navbar-bg-color,var(--f7-bars-bg-color));background-image:var(--f7-navbar-bg-image,var(--f7-bars-bg-image))}.device-android .app-layout .page.page-with-subnavbar.page-with-logo .page-content{--f7-page-navbar-offset:var(--f7-navbar-height)}.device-android .app-layout .page{--f7-text-color:var(--text-normal);--f7-list-item-title-text-color:var(--text-normal);--f7-list-item-text-text-color:var(--text-normal);--f7-list-item-subtitle-text-color:var(--text-secondary);--f7-block-title-text-color:var(--text-secondary);--f7-label-text-color:var(--text-normal);--f7-page-bg-color:var(--background-tertiary);--f7-list-item-border-color:var(--background-menu-divider);--f7-list-chevron-icon-color:var(--text-tertiary);--f7-actions-button-text-color:var(--text-normal);--f7-subnavbar-border-color:var(--background-menu-divider);--f7-list-border-color:var(--background-menu-divider)}.device-android .app-layout .add-popup .view .add-image ul:after,.device-android .app-layout .add-popup .view .inputs-list ul:after{display:none}.device-android .app-layout .coauth__sheet{max-height:65%}.device-android .app-layout .segmented .decrement,.device-android .app-layout .segmented .increment{border:none;border-radius:0;display:flex;height:32px;margin-left:0;min-width:40px}.device-android .app-layout .segmented .decrement i.icon-expand-down,.device-android .app-layout .segmented .increment i.icon-expand-down{background:var(--brand-word)}.device-android .app-layout .segmented label{color:var(--text-normal);line-height:32px;margin:0 5px}.device-android .app-layout .button{--f7-button-text-color:var(--brand-word);appearance:none;background:0 0;border-radius:2px;box-sizing:border-box;color:var(--brand-word);cursor:pointer;display:block;font-family:inherit;font-size:14px;height:36px;line-height:36px;margin:0;min-width:64px;outline:0;overflow:hidden;padding:0 8px;position:relative;text-align:center;text-overflow:ellipsis;text-transform:uppercase;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition-duration:.3s;transition-duration:.3s;white-space:nowrap}.device-android .app-layout .button-fill{background-color:initial;color:var(--brand-text-on-brand)}.device-android .app-layout .button-raised{box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)}.device-android .app-layout .button-red{background-color:var(--text-error);color:var(--brand-text-on-brand)}.device-android .app-layout .buttons-list ul{background-color:var(--background-tertiary)}.device-android .app-layout .buttons-list ul:after,.device-android .app-layout .buttons-list ul:before{display:none}.device-android .app-layout .buttons-list ul li{border-radius:2px;color:var(--fill-white);font-size:14px;height:36px;margin:20px 16px;min-height:36px;text-transform:uppercase}.device-android .app-layout .table-presets .button{min-width:0}.device-android .app-layout .button-fill .list-button{background-color:var(--brand-word);border-radius:2px;color:var(--brand-text-on-brand);font-size:14px;font-weight:500;height:36px;line-height:36px;margin:0;text-align:center;text-transform:uppercase}.device-android .app-layout .button-raised .list-button{box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)}.device-android .app-layout .button-red .list-button{background-color:var(--text-error)}.device-android .app-layout .tab-buttons{display:flex;height:100%;justify-content:space-between;position:relative;width:100%}.device-android .app-layout .tab-buttons .tab-link{align-items:center;box-sizing:border-box;color:hsla(0,0%,100%,.7);font-size:14px;font-weight:500;height:100%;justify-content:center;padding-left:0;padding-right:0;text-transform:uppercase}.device-android .app-layout .tab-buttons .tab-link i.icon{opacity:.5}.device-android .app-layout .tab-buttons .tab-link.tab-link-active{color:var(--fill-white)}.device-android .app-layout .tab-buttons .tab-link.tab-link-active i.icon{background-color:var(--fill-white);opacity:1}.device-android .app-layout .tab-buttons .tab-link-highlight{--f7-tabbar-link-active-border-color:var(--toolbar-icons);bottom:0;height:3px;left:0;position:absolute}.device-android .app-layout .list.inputs-list{margin:0}.device-android .app-layout .list.inputs-list .item-input.item-content{padding-left:0}.device-android .app-layout .list.inputs-list .item-input .item-inner,.device-android .app-layout .list.inputs-list .item-link .item-inner{display:block}.device-android .app-layout .list.inputs-list .item-input .item-inner .item-label,.device-android .app-layout .list.inputs-list .item-input .item-inner .item-title,.device-android .app-layout .list.inputs-list .item-link .item-inner .item-label,.device-android .app-layout .list.inputs-list .item-link .item-inner .item-title{font-size:12px;width:100%}.device-android .app-layout .list.inputs-list .item-input .item-inner .item-input-wrap,.device-android .app-layout .list.inputs-list .item-link .item-inner .item-input-wrap{margin-left:0}.device-android .app-layout .list .buttons{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;min-height:48px;width:100%}.device-android .app-layout .list .buttons .item-content{width:100%}.device-android .app-layout .list .buttons .item-content .item-inner{padding-bottom:0;padding-top:0}.device-android .app-layout .list .buttons .item-content .item-inner .row{--f7-cols-per-row:1;align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.device-android .app-layout .list .buttons .item-content .item-inner .row .button{align-items:center;display:flex;flex:1;font-size:17px;justify-content:center;margin-left:5px}.device-android .app-layout .list .buttons .item-content .item-inner .row .button:first-child{margin-left:0}.device-android .app-layout .list .item-content .color-preview{background-color:var(--fill-white);border-radius:4px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);height:30px;margin-top:-3px;width:30px}.device-android .app-layout .list .item-content .color-preview.auto{background-color:#000}.device-android .app-layout .item-input:not(.item-input-outline) .item-content:before,.device-android .app-layout .item-input:not(.item-input-outline).item-content:before{background:transparent}.device-android .app-layout .links-list a:after,.device-android .app-layout .list .item-inner:after,.device-android .app-layout .simple-list li:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.device-android .app-layout .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,.device-android .app-layout .list:not(.inset):not(.inset-md):not(.menu-list) .media-item>.item-link,.device-android .app-layout .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,.device-android .app-layout .media-list:not(.inset):not(.inset-md):not(.menu-list) li>.item-link{border-radius:0}.device-android .app-layout #color-picker .right-block .button-round{background-color:var(--brand-word)}.device-android .app-layout .regional-settings .list .item-inner{margin-left:16px}.device-android .app-layout .regional-settings .list .item-title-row{align-items:center;display:flex;flex-direction:row-reverse;justify-content:space-between;width:100%}.device-android .app-layout .regional-settings .list .item-title-row .item-title{white-space:normal}.device-android .app-layout .searchbar-inner__center{flex-wrap:wrap}.device-android .app-layout .navbar .searchbar-input-wrap{height:32px;margin:4px 0}.device-android .app-layout .navbar .navbar-inner{overflow:initial}.device-android .app-layout .navbar .left{margin:0}.device-android .app-layout .navbar .title{margin-left:var(--f7-navbar-title-margin-left);margin-right:var(--f7-navbar-title-margin-left)}.device-android .app-layout .searchbar input{appearance:none;background-color:initial;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='%23fff'%3E%3Cpath d='M15.5 14h-.79l-.28-.27A6.471 6.471 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/%3E%3Cpath fill='none' d='M0 0h24v24H0z'/%3E%3C/svg%3E");background-position:0;background-repeat:no-repeat;background-size:24px 24px;border:none;border-bottom:1px solid var(--fill-white);border-radius:0;box-sizing:border-box;color:var(--fill-white);display:block;font-family:inherit;font-size:16px;font-weight:400;height:100%;opacity:1;padding:0 40px 0 24px;transition-duration:.3s;width:100%}.device-android .app-layout .searchbar input::placeholder{color:var(--fill-white)}.device-android .app-layout .searchbar .input-clear-button{height:18px;margin:0;top:7px;width:18px}.device-android .app-layout .searchbar .input-clear-button:after{color:var(--fill-white);font-size:19px;line-height:19px}.device-android .app-layout .searchbar .number-search-results{font-size:16px;font-weight:400;line-height:24px;position:absolute;right:26px;top:4px}.device-android .app-layout .searchbar-icon:after{color:var(--fill-white);font-size:19px}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled{top:0}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled .searchbar-inner{height:100%;padding:0}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__center{flex-direction:column}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__right{flex-direction:column-reverse}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled.replace{height:96px}.device-android .app-layout .navbar a.link{padding:0 16px}.device-android .app-layout .navbar a.link.searchbar-enable i.icon-search{background-color:var(--toolbar-icons)}.device-android .app-layout .navbar a.icon-only{height:56px;width:auto}.device-android .app-layout .navbar .buttons-row-replace a{color:var(--fill-white);padding:0}.device-android .app-layout .navbar .searchbar .buttons-row{align-self:flex-start}@media (max-width:550px){.device-android .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__left{margin-right:33px}}.device-android .app-layout .actions-button-text{color:var(--text-normal);cursor:pointer;font-size:16px;line-height:48px}@media (min-width:496px){.device-android .app-layout .actions-modal{left:auto;margin-left:0;width:100%}}.device-android .app-layout input.modal-text-input{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;background:#fff;border:none;box-shadow:none;box-sizing:border-box;display:block;font-family:inherit;font-size:16px;height:36px;margin:15px 0 0;padding:0;-webkit-transition-duration:.2s;transition-duration:.2s;width:100%}.device-android .app-layout .input-field .inputs-list{margin:15px 0 0}.device-android .app-layout .input-field .inputs-list ul{background:none}.device-android .app-layout .input-field .inputs-list ul:after,.device-android .app-layout .input-field .inputs-list ul:before{display:none}.device-android .app-layout .input-field .inputs-list .item-inner,.device-android .app-layout .input-field .inputs-list .item-input{margin:0;padding:0}.device-android .app-layout .font-item .item-radio:not(.item-radio-icon-end)>.icon-radio{margin-right:0}.device-android .app-layout .navbar-dropdown-list .navbar-inner,.device-android .app-layout .navbar-link-settings .navbar-inner{background:var(--background-primary)}.device-android .app-layout .navbar-dropdown-list .navbar-inner .icon-back,.device-android .app-layout .navbar-dropdown-list .title,.device-android .app-layout .navbar-dropdown-list a,.device-android .app-layout .navbar-link-settings .navbar-inner .icon-back,.device-android .app-layout .navbar-link-settings .title,.device-android .app-layout .navbar-link-settings a{color:var(--text-normal)}.device-android .app-layout .popover{box-shadow:var(--f7-box-shadow)}.device-android .app-layout .popover.popover__titled .popover-arrow:after{background:var(--toolbar-background)}.device-android .app-layout .popover.document-menu .popover-arrow:after,.device-android .app-layout .popover.popover__functions .popover-arrow:after{background:var(--background-secondary)}.device-android .app-layout .page-version-history{--f7-page-bg-color:var(--background-primary)}.device-android .app-layout .version-history__title{color:var(--brand-word);font-size:14px;font-style:normal;font-weight:500;line-height:20px;margin-bottom:4px;margin-top:16px}.device-android .app-layout .version-history__btn{background:var(--background-primary);border:0;border-radius:6px;box-shadow:0 .25px 1px rgba(0,0,0,.039),0 .85px 3px rgba(0,0,0,.19);color:var(--brand-word);font-size:16px;font-style:normal;font-weight:500;letter-spacing:.25px;line-height:20px;margin-top:10px;padding:6px 20px;width:auto}.device-android .app-layout .version-history__list ul:after,.device-android .app-layout .version-history__list ul:before{display:none}.device-android .app-layout .version-history__list .item-title{color:var(--text-normal);font-size:16px;font-style:normal;font-weight:400;letter-spacing:.15px;line-height:24px}.device-android .app-layout .version-history__list .item-inner{padding-bottom:10px;padding-top:10px}.device-android .app-layout .version-history__list .item-inner:before{background-color:var(--background-menu-divider);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.device-android .app-layout .version-history__list .item-media{max-width:40px;min-width:40px;padding-bottom:12px;padding-top:12px}.device-android .app-layout .version-history__list .item-link .item-title-row:before{display:none}.device-android .app-layout .version-history__list .item-subtitle{color:var(--text-secondary);font-size:12px;font-style:normal;font-weight:400;letter-spacing:.5px;line-height:16px}.device-android .app-layout .version-history__item_active{background-color:var(--background-tertiary)}.device-android .app-layout .btn-close-history{color:var(--toolbar-icons);font-size:16px;font-style:normal;font-weight:400;letter-spacing:.15px;line-height:24px;margin-left:16px}.device-android .app-layout .beta-badge{background-color:var(--brand-secondary);margin-left:8px}.device-ios .theme-type-dark i.icon.icon-logo{background:url(../../../documenteditor/mobile/resources/img/header/logo-android.svg) no-repeat 50%}.device-ios i.icon.icon_mask{background-color:#fff}.device-ios i.icon.icon-logo{background:url(../../../documenteditor/mobile/resources/img/header/logo-ios.svg) no-repeat 50%;height:14px;width:100px}.device-ios i.icon.icon-prev{background-color:var(--brand-word);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='m16 20.5-1 1L4.5 11 15 .5l1 1L6.6 11l9.4 9.5z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-prev:after{display:none}.device-ios i.icon.icon-next{background-color:var(--brand-word);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M15.5 11 6 1.5 7.1.4 17.5 11 7.1 21.5l-1.1-1 9.5-9.5z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-next:after{display:none}.device-ios i.icon.icon-edit{background-color:var(--brand-word);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M0 20h22v1H0v-1zM19.3 5.3 6.1 18.4l-1.5-1.5L17.8 3.8l-.7-.7L3.5 16.7 3 20l3.3-.5L19.9 5.9zM20.5 5.3 22 3.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5 2.8 2.8z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-show-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='25'%3E%3Cpath fill-rule='evenodd' d='M5.625 12.5A8.488 8.488 0 0 0 12.5 16a8.487 8.487 0 0 0 6.875-3.5A8.487 8.487 0 0 0 12.5 9a8.488 8.488 0 0 0-6.875 3.5Zm14.955 0A9.494 9.494 0 0 0 12.5 8a9.494 9.494 0 0 0-8.08 4.5A9.494 9.494 0 0 0 12.5 17a9.494 9.494 0 0 0 8.08-4.5Z' clip-rule='evenodd'/%3E%3Cpath d='M12.5 10a2.5 2.5 0 0 1 2.502 2.5 2.502 2.502 0 0 1-2.502 2.511 2.5 2.5 0 0 1-2.489-2.511 2.499 2.499 0 0 1 2.49-2.5Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-hide-password,.device-ios i.icon.icon-show-password{background-color:var(--text-secondary);height:25px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:25px}.device-ios i.icon.icon-hide-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='25'%3E%3Cpath fill-rule='evenodd' d='M11.356 15.765a8.487 8.487 0 0 0 8.019-3.424c-.751-1.03-1.209-1.584-2.339-2.19l.723-.74c1.375.787 1.987 1.587 2.82 2.93a9.494 9.494 0 0 1-8.079 4.5 9.534 9.534 0 0 1-1.99-.208l.846-.868Zm-3.228-1.133a8.546 8.546 0 0 1-2.503-2.29 8.488 8.488 0 0 1 6.875-3.5c.598 0 .719-.018 1.297.069l.924-.849c-.83-.238-1.303-.22-2.206-.22H12.5a9.494 9.494 0 0 0-8.08 4.5 9.549 9.549 0 0 0 2.962 3.004l.746-.714Z' clip-rule='evenodd'/%3E%3Cpath d='M16.031 9.671a20.396 20.396 0 0 0-1.01-.397l-5.863 5.885a8.45 8.45 0 0 0 1.033.365l5.84-5.853Z'/%3E%3Cpath d='M16.79 8.91c-.311-.146-.65-.298-.974-.434l-.794.798c.336.122.687.26 1.01.397l.758-.76Z'/%3E%3Cpath d='m18.345 7.353-.72-.692-1.809 1.815c.324.136.663.288.974.435l1.555-1.558ZM9.395 16.322a9.443 9.443 0 0 1-.99-.406l-1.728 1.733.705.69 2.013-2.017Z'/%3E%3Cpath d='M10.191 15.524a8.45 8.45 0 0 1-1.033-.365l-.754.757c.32.153.651.289.99.406l.797-.798Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-return{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='m11.5 7.793 2.854 2.853-.707.708L12 9.707V16h2.5v1H11V9.707l-1.646 1.647-.708-.708L11.5 7.793Z'/%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M1 4a1 1 0 0 1 1-1h7.75l2 2H22a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4Zm1 16V4h7.25l2 2H22v14H2Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon_mask{background-color:var(--text-normal)}.device-android i.icon.icon-logo{background:url(../../../documenteditor/mobile/resources/img/header/logo-android.svg) no-repeat 50%;height:14px;width:100px}.device-android i.icon.icon-prev{background-color:var(--brand-word);height:20px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M5.1 10.9 13.9 2 16 4.1l-6.8 7 6.8 6.8-2.1 2.1-8.8-8.8-.1-.1z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:20px}.device-android i.icon.icon-prev:after{display:none}.device-android i.icon.icon-next{background-color:var(--brand-word);height:20px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M16.9 10.9 8.1 2 6 4.1l6.8 7L6 17.9 8.1 20l8.8-8.8.1-.1z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:20px}.device-android i.icon.icon-next:after{display:none}.device-android i.icon.icon-show-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M9.894 9.89C10.486 9.298 11.189 9 12 9c.811 0 1.514.297 2.106.89.593.594.89 1.297.89 2.11s-.297 1.516-.89 2.11c-.592.593-1.295.89-2.106.89-.811 0-1.514-.297-2.106-.89-.593-.594-.89-1.297-.89-2.11 0-.812.297-1.516.89-2.11Zm-1.451 5.672c.998.97 2.184 1.454 3.557 1.454 1.373 0 2.543-.485 3.51-1.453 1-1 1.499-2.188 1.499-3.563s-.5-2.547-1.498-3.516c-.968-1-2.138-1.5-3.511-1.5-1.373 0-2.559.5-3.557 1.5-.968.97-1.452 2.141-1.452 3.516s.484 2.563 1.452 3.563Zm-3.137-9C7.304 5.188 9.535 4.5 12 4.5s4.697.688 6.694 2.063C20.69 7.938 22.126 9.75 23 12c-.874 2.25-2.31 4.063-4.306 5.438C16.697 18.813 14.465 19.5 12 19.5s-4.696-.687-6.694-2.062C3.31 16.063 1.874 14.25 1 12c.874-2.25 2.31-4.062 4.306-5.437Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-hide-password,.device-android i.icon.icon-show-password{background-color:var(--text-secondary);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-hide-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M11.883 9.005h.14c.813 0 1.517.297 2.111.891.595.595.892 1.298.892 2.111v.188l-3.143-3.19Zm-4.316.797c-.375.751-.563 1.486-.563 2.205 0 1.377.485 2.565 1.454 3.566 1.001.97 2.19 1.454 3.566 1.454.719 0 1.454-.187 2.204-.563l-1.548-1.548c-.25.063-.469.094-.656.094-.814 0-1.517-.297-2.111-.892-.595-.594-.892-1.297-.892-2.11 0-.188.032-.407.094-.657L7.567 9.802ZM2.032 4.267 3.299 3l17.73 17.733L19.764 22c-.156-.156-.656-.641-1.5-1.454l-1.877-1.877c-1.345.563-2.799.845-4.362.845-2.471 0-4.707-.688-6.708-2.065-2.002-1.376-3.44-3.19-4.316-5.442.782-1.939 2.033-3.596 3.753-4.972L3.158 5.44a139.128 139.128 0 0 0-1.126-1.173Zm9.992 2.72c-.626 0-1.236.126-1.83.376L8.036 5.205c1.22-.47 2.549-.704 3.988-.704 2.47 0 4.69.688 6.66 2.064 2.002 1.377 3.44 3.19 4.316 5.442a12.231 12.231 0 0 1-3.424 4.739l-2.909-2.909c.25-.594.376-1.204.376-1.83 0-1.376-.5-2.549-1.501-3.518-.97-1-2.143-1.501-3.518-1.501Z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-collaboration{background-color:var(--toolbar-icons);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill-rule='evenodd' clip-path='url(%23a)' clip-rule='evenodd'%3E%3Cpath d='M7.5 14c-2.823 0-4.989 1.407-6.099 3.257-.56.935-.4 1.305-.299 1.433.154.194.508.31.87.31H7.5v1H1.972c-.47 0-1.216-.134-1.655-.69-.49-.622-.412-1.502.227-2.567C1.834 14.593 4.324 13 7.5 13v1Zm0-1c3.177 0 5.639 1.593 6.929 3.743.639 1.065.716 1.945.226 2.567-.438.556-1.184.69-1.655.69H7.5v-1H13c.363 0 .717-.116.87-.31.101-.128.262-.498-.299-1.433C12.461 15.407 10.323 14 7.5 14v-1Z'/%3E%3Cpath d='M15 20h7c.471 0 1.217-.134 1.656-.69.49-.622.413-1.502-.226-2.567C22.14 14.593 19.677 13 16.5 13c-1.293 0-2.322.164-3.354.623.364.28.64.494.997.732A7.774 7.774 0 0 1 16.502 14c2.823 0 4.96 1.407 6.071 3.257.561.935.4 1.305.299 1.433-.153.194-.508.31-.87.31H16.5a1.466 1.466 0 0 1-.343.478c-.444.415-.738.522-1.157.522ZM7.5 11C8.76 11 10 9.786 10 8S8.76 5 7.5 5 5 6.214 5 8s1.24 3 2.5 3Zm0 1c1.933 0 3.5-1.79 3.5-4S9.433 4 7.5 4 4 5.79 4 8s1.567 4 3.5 4ZM17 11c.965 0 2-.97 2-2.5S17.965 6 17 6c-.965 0-2 .97-2 2.5s1.035 2.5 2 2.5Zm0 1c1.657 0 3-1.567 3-3.5S18.657 5 17 5s-3 1.567-3 3.5 1.343 3.5 3 3.5Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-back{color:var(--toolbar-icons)}.device-android .navbar i.icon.icon-edit{background-color:var(--toolbar-icons);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M0 20h22v1H0v-1zM17.1 3.1 3.5 16.7 3 20l3.3-.5L19.9 5.9zM20.5 5.3 22 3.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5 2.8 2.8z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-close{background-color:var(--text-normal);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M18.984 6.422 13.406 12l5.578 5.578-1.406 1.406L12 13.406l-5.578 5.578-1.406-1.406L10.594 12 5.016 6.422l1.406-1.406L12 10.594l5.578-5.578 1.406 1.406Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-done-disabled{background-color:var(--text-tertiary)}.device-android .navbar i.icon.icon-done,.device-android .navbar i.icon.icon-done-disabled{height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='m9 16.219 10.594-10.64L21 6.983l-12 12-5.578-5.578L4.782 12 9 16.219Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-done{background-color:var(--brand-word)}.device-android .navbar i.icon.icon-search{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M16 16.708a9 9 0 1 1 .707-.707l5.647 5.645-.708.708-5.645-5.646ZM18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-search,.device-android .navbar i.icon.icon-version-history{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-version-history{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M12 6h2v6.845l4.196 2.423-1 1.732L12 14V6Z'/%3E%3Cpath d='M22 12a9 9 0 0 1-15.364 6.364l-.708.707A9.969 9.969 0 0 0 13 22c5.523 0 10-4.477 10-10S18.523 2 13 2C7.477 2 3 6.477 3 12h1a9 9 0 0 1 18 0Z'/%3E%3Cpath d='m1.5 10.5 2 2 2-2'/%3E%3C/svg%3E")}i.icon.icon-paste{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M5 2H0v18h9v4h15V7h-5V2h-5v1h4v4H9v12H1V3h4V2Zm5 6h13v15H10V8Z' clip-rule='evenodd'/%3E%3Cpath d='M5 0h9v5H5V0Z'/%3E%3Cpath fill-rule='evenodd' d='M21 12h-9v-1h9v1ZM21 16h-9v-1h9v1ZM21 20h-9v-1h9v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-copy,i.icon.icon-paste{background-color:var(--text-normal);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-copy{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M1 1h14v6h1V0H0v17h8v-1H1V1Z'/%3E%3Cpath fill-rule='evenodd' d='M23 8H9v15h14V8ZM8 7v17h16V7H8ZM13 5H3V4h10v1ZM8 9H3V8h5v1ZM8 13H3v-1h5v1Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='M21 12H11v-1h10v1ZM21 16H11v-1h10v1ZM21 20H11v-1h10v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-cut{background-color:var(--text-normal);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill-rule='evenodd' d='M3.224 22.27c1.291.857 3.303.448 4.435-1.257 1.132-1.706.727-3.719-.564-4.575-1.291-.857-3.303-.448-4.435 1.257-1.132 1.706-.727 3.719.564 4.575Zm-.553.834c1.841 1.221 4.447.532 5.821-1.538 1.375-2.071.996-4.74-.844-5.962-1.841-1.221-4.447-.533-5.821 1.538-1.375 2.071-.996 4.74.844 5.962ZM20.916 22.27c-1.291.857-3.303.448-4.435-1.257-1.132-1.706-.727-3.719.564-4.575 1.291-.857 3.303-.448 4.435 1.257 1.132 1.706.727 3.719-.564 4.575Zm.553.834c-1.841 1.221-4.447.532-5.821-1.538-1.374-2.071-.996-4.74.844-5.962 1.841-1.221 4.447-.533 5.822 1.538 1.374 2.071.995 4.74-.845 5.962Z' clip-rule='evenodd'/%3E%3Cpath d='m16.492 15.604-2.588-3.13L19.955.676a.436.436 0 0 0-.228-.595c-.285-.092-.628 0-.742.183L12.023 11.42 5.176.264c-.115-.229-.457-.32-.742-.229-.286.092-.4.366-.286.595L10.2 12.428l-2.552 3.176L9.229 18l2.794-4.52L14.911 18l1.581-2.396Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-next:after,i.icon.icon-prev:after{content:none}i.icon.icon-collaboration{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill-rule='evenodd' clip-path='url(%23a)' clip-rule='evenodd'%3E%3Cpath d='M7.5 14c-2.823 0-4.989 1.407-6.099 3.257-.56.935-.4 1.305-.299 1.433.154.194.508.31.87.31H7.5v1H1.972c-.47 0-1.216-.134-1.655-.69-.49-.622-.412-1.502.227-2.567C1.834 14.593 4.324 13 7.5 13v1Zm0-1c3.177 0 5.639 1.593 6.929 3.743.639 1.065.716 1.945.226 2.567-.438.556-1.184.69-1.655.69H7.5v-1H13c.363 0 .717-.116.87-.31.101-.128.262-.498-.299-1.433C12.461 15.407 10.323 14 7.5 14v-1Z'/%3E%3Cpath d='M15 20h7c.471 0 1.217-.134 1.656-.69.49-.622.413-1.502-.226-2.567C22.14 14.593 19.677 13 16.5 13c-1.293 0-2.322.164-3.354.623.364.28.64.494.997.732A7.774 7.774 0 0 1 16.502 14c2.823 0 4.96 1.407 6.071 3.257.561.935.4 1.305.299 1.433-.153.194-.508.31-.87.31H16.5a1.466 1.466 0 0 1-.343.478c-.444.415-.738.522-1.157.522ZM7.5 11C8.76 11 10 9.786 10 8S8.76 5 7.5 5 5 6.214 5 8s1.24 3 2.5 3Zm0 1c1.933 0 3.5-1.79 3.5-4S9.433 4 7.5 4 4 5.79 4 8s1.567 4 3.5 4ZM17 11c.965 0 2-.97 2-2.5S17.965 6 17 6c-.965 0-2 .97-2 2.5s1.035 2.5 2 2.5Zm0 1c1.657 0 3-1.567 3-3.5S18.657 5 17 5s-3 1.567-3 3.5 1.343 3.5 3 3.5Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-cancellation{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cmask id='a' width='20' height='20' x='2' y='2' maskUnits='userSpaceOnUse' style='mask-type:alpha'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='%23c4c4c4' stroke='var(--brand-word)'/%3E%3C/mask%3E%3Cg stroke='var(--brand-word)' mask='url(%23a)'%3E%3Ccircle cx='12' cy='12' r='9.5' transform='rotate(-90 12 12)'/%3E%3Cpath d='M5.091 19.202 19.192 5.101'/%3E%3C/g%3E%3C/svg%3E");height:24px;width:24px}i.icon.icon-remove-style{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23FF3B30' fill-rule='evenodd' d='M9.333 2a1.06 1.06 0 0 0-1.066 1.053V4H4.533A.53.53 0 0 0 4 4.526c0 .291.239.527.533.527h.534l1 15.894A1.06 1.06 0 0 0 7.133 22h9.734a1.06 1.06 0 0 0 1.066-1.053L19 5h.467c.294 0 .533-.21.533-.5 0-.29-.239-.5-.533-.5h-3.734v-.947A1.06 1.06 0 0 0 14.667 2H9.333Zm5.334 2v-.947H9.333V4h5.334ZM18 5H6l.941 15.062A1 1 0 0 0 7.94 21h8.122a1 1 0 0 0 .998-.938L18 5Z' clip-rule='evenodd'/%3E%3Cpath fill='%23FF3B30' d='M8 7.002h1L9.5 19h-1L8 7.002ZM11.5 7h1v12h-1V7ZM15 7.002 16 7l-.5 12h-1L15 7.002Z'/%3E%3C/svg%3E");height:24px;width:24px}i.icon.icon-image{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M9 9a2 2 0 1 1-4 0 2 2 0 0 1 4 0ZM8 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='M2 4v16h20V4H2Zm19 1H3v11.293l3.5-3.5 2 2 6-6 6.5 6.5V5ZM3 19v-1.293l3.5-3.5 2 2 6-6 6.5 6.5V19H3Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-format-pdf{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cmask id='a' width='24' height='24' x='0' y='0' maskUnits='userSpaceOnUse' style='mask-type:alpha'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H4Zm1 8v6h1.071v-2H7.68c.887 0 1.607-.672 1.607-1.5v-1c0-.828-.72-1.5-1.607-1.5H5Zm1.071 1H7.68c.295 0 .535.224.535.5v1c0 .276-.24.5-.535.5H6.07v-2Zm9.643 5h1.072v-2h2.678v-1h-2.678v-2H20V9h-4.286v6Zm-5.357-6h2.679c.887 0 1.607.672 1.607 1.5v3c0 .828-.72 1.5-1.607 1.5h-2.679V9Zm2.679 1h-1.607v4h1.607c.296 0 .535-.224.535-.5v-3c0-.276-.24-.5-.535-.5Z' clip-rule='evenodd'/%3E%3C/mask%3E%3Cg mask='url(%23a)'%3E%3Cpath fill='%23DB4437' d='M0 0h24v24H0z'/%3E%3C/g%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-pdfa{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23A8A8A8' fill-rule='evenodd' d='M18 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm.275 2.815h.326l2.618 6.37H19.82l-.524-1.417h-2.602l-.52 1.418H14.78l2.604-6.371H18.275Zm-1.23 4.003h1.902l-.954-2.582-.949 2.582Z' clip-rule='evenodd'/%3E%3Cpath fill='%23DB4437' fill-rule='evenodd' d='M1 4a3 3 0 0 1 3-3h16a3 3 0 0 1 3 3v9.101a6.981 6.981 0 0 0-4.036-2.035V11h-2.678V9H19.5V8h-4.286v3.576a6.983 6.983 0 0 0-1.071.582V9.5c0-.828-.72-1.5-1.607-1.5H9.857v6h2.398A6.968 6.968 0 0 0 11 18c0 1.959.805 3.73 2.101 5H4a3 3 0 0 1-3-3V4Zm3.5 4v6h1.071v-2H7.18c.887 0 1.607-.672 1.607-1.5v-1c0-.828-.72-1.5-1.607-1.5H4.5Zm1.071 1H7.18c.295 0 .535.224.535.5v1c0 .276-.24.5-.535.5H5.57V9Zm6.965 0h-1.607v4h1.607c.296 0 .535-.224.535-.5v-3c0-.276-.24-.5-.535-.5Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-numbers-1{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.605 18.998v-6.725h-.021l-2.052 1.478V12.73l2.062-1.482h.946v7.75h-.935ZM6.58 31.482c0-.677.244-1.239.73-1.687.488-.45 1.096-.676 1.827-.676.69 0 1.276.206 1.756.617.48.412.72.915.72 1.51 0 .43-.118.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.776v.859H6.628v-.666l2.729-2.873c.52-.548.863-.964 1.031-1.247.172-.283.258-.585.258-.907 0-.373-.15-.69-.451-.951a1.585 1.585 0 0 0-1.085-.392c-.455 0-.834.145-1.139.435-.304.29-.456.652-.456 1.085v.005H6.58v-.005ZM8.208 50.42v-.816h.929c.444 0 .807-.127 1.09-.38.283-.259.424-.584.424-.978s-.13-.708-.392-.94c-.261-.233-.632-.35-1.112-.35-.444 0-.805.119-1.085.355-.279.236-.44.559-.483.967h-.93c.055-.659.309-1.184.764-1.574.458-.39 1.05-.585 1.777-.585.699 0 1.279.188 1.74.564.463.376.694.854.694 1.434 0 .483-.144.89-.43 1.219-.287.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.401.564.348.337.521.778.521 1.322 0 .433-.121.823-.365 1.17a2.39 2.39 0 0 1-.988.806c-.415.19-.875.285-1.38.285-.802 0-1.449-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.042.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.594.5-1 0-.454-.162-.814-.484-1.079-.319-.265-.755-.397-1.31-.397h-.972ZM13 17.998h1v1h-1zM13 35.998h1v1h-1zM13 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-2{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.605 18.998v-6.725h-.021l-2.052 1.478V12.73l2.062-1.482h.946v7.75h-.935Zm2.47 1.488c.122-.208.214-.37.275-.489.064-.114.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.144-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.354 3.354 0 0 0-.408-.602h.784c.168.215.31.406.424.575.115.164.246.39.393.676.15.287.27.575.36.865a8.83 8.83 0 0 1 .328 2.412c-.001 1.923-.486 3.491-1.457 4.705h-.821ZM6.58 31.482c0-.677.244-1.239.73-1.687.488-.45 1.096-.676 1.827-.676.69 0 1.276.206 1.756.617.48.412.72.915.72 1.51 0 .43-.118.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.776v.859H6.628v-.666l2.729-2.873c.52-.548.863-.964 1.031-1.247.172-.283.258-.585.258-.907 0-.373-.15-.69-.451-.951a1.585 1.585 0 0 0-1.085-.392c-.455 0-.834.145-1.139.435-.304.29-.456.652-.456 1.085v.005H6.58v-.005Zm5.85 7.004c.12-.208.212-.37.273-.489.065-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.23-.811.083-.312.144-.647.183-1.005.04-.361.06-.74.06-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.364 3.364 0 0 0-.409-.602h.785c.168.215.31.406.424.575.114.164.245.39.392.676.15.287.27.575.36.865a8.844 8.844 0 0 1 .328 2.412c0 1.923-.486 3.491-1.456 4.705h-.822ZM8.208 50.42v-.816h.929c.444 0 .807-.127 1.09-.38.283-.259.424-.584.424-.978s-.13-.708-.392-.94c-.261-.233-.632-.35-1.112-.35-.444 0-.805.119-1.085.355-.279.236-.44.559-.483.967h-.93c.055-.659.309-1.184.764-1.574.458-.39 1.05-.585 1.777-.585.699 0 1.279.188 1.74.564.463.376.694.854.694 1.434 0 .483-.144.89-.43 1.219-.287.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.401.564.348.337.521.778.521 1.322 0 .433-.121.823-.365 1.17a2.39 2.39 0 0 1-.988.806c-.415.19-.875.285-1.38.285-.802 0-1.449-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.042.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.594.5-1 0-.454-.162-.814-.484-1.079-.319-.265-.755-.397-1.31-.397h-.972Zm4.5 5.066c.122-.208.213-.37.274-.489.065-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.231-.811.082-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.364 3.364 0 0 0-.408-.602h.784c.168.215.31.406.424.575.115.164.245.39.392.676.15.287.27.575.36.865.09.29.167.647.231 1.069.065.419.097.866.097 1.343 0 1.923-.485 3.491-1.456 4.705h-.821Z'/%3E%3C/svg%3E")}i.icon.icon-numbers-3{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M7 10.998h1v8H7zM10 17.998h1v1h-1zM7 28.998h1v8H7zM10 28.998h1v8h-1zM13 35.998h1v1h-1zM7 45.998h1v8H7zM10 45.998h1v8h-1zM13 45.998h1v8h-1zM16 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-4{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='m11.79 18.998-.779-2.218H7.928l-.779 2.218H6.134l2.858-7.75h.956l2.857 7.75H11.79Zm-2.336-6.574-1.241 3.534h2.514l-1.241-3.534h-.032ZM9.776 36.998H6.752v-7.75h3.035c.662 0 1.197.177 1.606.531.411.355.617.822.617 1.402 0 .405-.13.772-.392 1.101-.258.326-.573.523-.945.591v.043c.526.068.945.274 1.257.618.315.343.472.773.472 1.289 0 .684-.232 1.217-.698 1.6-.462.383-1.105.575-1.928.575Zm-2.057-6.896v2.486h1.547c.573 0 1.01-.11 1.31-.333.304-.222.457-.542.457-.961 0-.383-.127-.677-.382-.88-.254-.209-.615-.312-1.085-.312H7.72Zm0 6.042H9.63c.583 0 1.026-.116 1.326-.35.301-.232.452-.572.452-1.02 0-.902-.623-1.353-1.87-1.353H7.72v2.723ZM9.942 54.127c-1.07 0-1.92-.36-2.55-1.08-.628-.723-.94-1.699-.94-2.927 0-1.217.316-2.188.95-2.911.634-.727 1.48-1.09 2.54-1.09.845 0 1.562.236 2.149.709.59.469.947 1.09 1.069 1.863h-.978a2.1 2.1 0 0 0-.8-1.219c-.408-.308-.888-.462-1.44-.462-.755 0-1.36.283-1.815.849-.455.566-.682 1.32-.682 2.261 0 .953.225 1.71.677 2.272.45.562 1.06.843 1.826.843.57 0 1.049-.13 1.44-.392.39-.261.655-.628.794-1.1h.978c-.18.765-.546 1.354-1.101 1.766-.555.412-1.26.618-2.117.618ZM15 17.998h1v1h-1zM15 35.998h1v1h-1zM15 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-5{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.524 18.24c.473 0 .863-.135 1.171-.407.312-.276.468-.622.468-1.037v-.467l-1.515.096c-.88.054-1.321.364-1.321.93 0 .268.107.483.322.644.218.161.51.242.875.242Zm-.198.812c-.588 0-1.06-.156-1.418-.468-.358-.311-.537-.723-.537-1.235 0-.498.186-.888.558-1.17.373-.287.91-.452 1.612-.495l1.622-.097v-.483c0-.358-.115-.634-.344-.827-.23-.193-.557-.29-.983-.29-.337 0-.621.08-.854.242-.23.16-.372.377-.43.65h-.897c.015-.488.231-.896.65-1.225.42-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36v3.974h-.886v-1.004h-.021a1.86 1.86 0 0 1-.752.773c-.337.19-.708.285-1.112.285Zm3.577 1.434c.122-.208.213-.37.274-.489.064-.114.157-.299.28-.553.124-.254.223-.496.294-.725.076-.23.153-.5.231-.811a6.85 6.85 0 0 0 .183-1.005c.04-.361.06-.74.06-1.133 0-.576-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.36-1.343 7.911 7.911 0 0 0-.425-.918 3.36 3.36 0 0 0-.408-.602h.784c.169.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.844 8.844 0 0 1 .328 2.412c0 1.923-.486 3.491-1.456 4.705h-.822ZM9.48 37.052a2.3 2.3 0 0 1-1.117-.263 1.98 1.98 0 0 1-.768-.769h-.021v.978h-.886v-8.089h.934v3.239h.022c.182-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.321.272 1.772.817.452.54.677 1.251.677 2.132 0 .884-.227 1.597-.682 2.138-.451.54-1.047.81-1.789.81Zm-.166-5.065c-.505 0-.915.197-1.23.59-.312.39-.467.9-.467 1.526 0 .63.155 1.14.467 1.53.315.391.725.586 1.23.586.508 0 .915-.191 1.22-.575.307-.383.461-.896.461-1.541 0-.64-.154-1.153-.462-1.536-.304-.387-.71-.58-1.219-.58Zm3.19 6.499c.122-.208.213-.37.274-.489.065-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.231-.811.082-.312.143-.647.183-1.005.039-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.364 3.364 0 0 0-.408-.602h.784c.168.215.31.406.424.575.115.164.245.39.392.676.15.287.27.575.36.865.09.29.167.647.231 1.069.064.419.097.866.097 1.343 0 1.923-.486 3.491-1.456 4.705h-.822ZM11.42 50.093H10.5a1.274 1.274 0 0 0-.483-.795c-.262-.207-.602-.311-1.02-.311-.51 0-.92.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.467 1.547.315.38.729.57 1.24.57.405 0 .737-.092.995-.275.26-.186.43-.453.51-.8h.918c-.079.57-.34 1.03-.784 1.38-.44.351-.988.527-1.644.527-.802 0-1.444-.265-1.928-.795-.483-.534-.725-1.252-.725-2.154 0-.888.242-1.6.725-2.138.484-.54 1.123-.81 1.918-.81.684 0 1.244.19 1.68.569.438.376.687.832.747 1.37Zm.472 5.393c.122-.208.213-.37.274-.489.064-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.23-.811.083-.312.144-.647.183-1.005.04-.361.06-.74.06-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.359 3.359 0 0 0-.409-.602h.784c.169.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.844 8.844 0 0 1 .328 2.412c0 1.923-.486 3.491-1.456 4.705h-.822Z'/%3E%3C/svg%3E")}i.icon.icon-numbers-6{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.524 18.24c.473 0 .863-.135 1.171-.407.312-.276.468-.622.468-1.037v-.467l-1.515.096c-.88.054-1.321.364-1.321.93 0 .268.107.483.322.644.218.161.51.242.875.242Zm-.198.812c-.588 0-1.06-.156-1.418-.468-.358-.311-.537-.723-.537-1.235 0-.498.186-.888.558-1.17.373-.287.91-.452 1.612-.495l1.622-.097v-.483c0-.358-.115-.634-.344-.827-.23-.193-.557-.29-.983-.29-.337 0-.621.08-.854.242-.23.16-.372.377-.43.65h-.897c.015-.488.231-.896.65-1.225.42-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36v3.974h-.886v-1.004h-.021a1.86 1.86 0 0 1-.752.773c-.337.19-.708.285-1.112.285ZM9.48 37.052a2.3 2.3 0 0 1-1.117-.263 1.98 1.98 0 0 1-.768-.769h-.021v.978h-.886v-8.089h.934v3.239h.022c.182-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.321.272 1.772.817.452.54.677 1.251.677 2.132 0 .884-.227 1.597-.682 2.138-.451.54-1.047.81-1.789.81Zm-.166-5.065c-.505 0-.915.197-1.23.59-.312.39-.467.9-.467 1.526 0 .63.155 1.14.467 1.53.315.391.725.586 1.23.586.508 0 .915-.191 1.22-.575.307-.383.461-.896.461-1.541 0-.64-.154-1.153-.462-1.536-.304-.387-.71-.58-1.219-.58ZM11.42 50.093H10.5a1.274 1.274 0 0 0-.483-.795c-.262-.207-.602-.311-1.02-.311-.51 0-.92.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.467 1.547.315.38.729.57 1.24.57.405 0 .737-.092.995-.275.26-.186.43-.453.51-.8h.918c-.079.57-.34 1.03-.784 1.38-.44.351-.988.527-1.644.527-.802 0-1.444-.265-1.928-.795-.483-.534-.725-1.252-.725-2.154 0-.888.242-1.6.725-2.138.484-.54 1.123-.81 1.918-.81.684 0 1.244.19 1.68.569.438.376.687.832.747 1.37ZM13 17.998h1v1h-1zM13 35.998h1v1h-1zM13 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-7{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M7 12.998h1v6H7zM7 10.998h1v1H7zM10 17.998h1v1h-1zM7 30.998h1v6H7zM10 30.998h1v6h-1zM10 28.998h1v1h-1zM7 28.998h1v1H7zM13 35.998h1v1h-1zM7 47.998h1v6H7zM10 47.998h1v6h-1zM13 47.998h1v6h-1zM7 45.998h1v1H7zM10 45.998h1v1h-1zM13 45.998h1v1h-1zM16 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-sharing-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill-rule='evenodd' clip-path='url(%23a)' clip-rule='evenodd'%3E%3Cpath d='M7.5 14c-2.823 0-4.989 1.407-6.099 3.257-.56.935-.4 1.305-.299 1.433.154.194.508.31.87.31H7.5v1H1.972c-.47 0-1.216-.134-1.655-.69-.49-.622-.412-1.502.227-2.567C1.834 14.593 4.324 13 7.5 13v1Zm0-1c3.177 0 5.639 1.593 6.929 3.743.639 1.065.716 1.945.226 2.567-.438.556-1.184.69-1.655.69H7.5v-1H13c.363 0 .717-.116.87-.31.101-.128.262-.498-.299-1.433C12.461 15.407 10.323 14 7.5 14v-1Z'/%3E%3Cpath d='M15 20h7c.471 0 1.217-.134 1.656-.69.49-.622.413-1.502-.226-2.567C22.14 14.593 19.677 13 16.5 13c-1.293 0-2.322.164-3.354.623.364.28.64.494.997.732A7.774 7.774 0 0 1 16.502 14c2.823 0 4.96 1.407 6.071 3.257.561.935.4 1.305.299 1.433-.153.194-.508.31-.87.31H16.5a1.466 1.466 0 0 1-.343.478c-.444.415-.738.522-1.157.522ZM7.5 11C8.76 11 10 9.786 10 8S8.76 5 7.5 5 5 6.214 5 8s1.24 3 2.5 3Zm0 1c1.933 0 3.5-1.79 3.5-4S9.433 4 7.5 4 4 5.79 4 8s1.567 4 3.5 4ZM17 11c.965 0 2-.97 2-2.5S17.965 6 17 6c-.965 0-2 .97-2 2.5s1.035 2.5 2 2.5Zm0 1c1.657 0 3-1.567 3-3.5S18.657 5 17 5s-3 1.567-3 3.5 1.343 3.5 3 3.5Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}i.icon.icon-info,i.icon.icon-sharing-settings{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-info{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M4 8v13h6v1H3V7l6-6h11v9h-1V2h-9v6H4Zm.414-1L9 2.414V7H4.414Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M17 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm-5 6a5 5 0 1 1 10 0 5 5 0 0 1-10 0Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='M16.252 14.991h1.484v1.496h-1.484v-1.496ZM16.252 17.509v3.98h1.484v-3.98h-1.484Z'/%3E%3C/svg%3E")}i.icon.icon-help{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M11.26 17h1.497v-1.5h-1.496V17ZM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2Zm0 19c-5 0-9-4-9-9s4-9 9-9 9 4 9 9-4 9-9 9Zm.392-14C10.182 7 9 8.29 9 10.5h1.5c0-1.1.588-2 1.892-2 1.303 0 1.612.618 1.608 1.5-.005 1-2.74 1.5-2.74 4.442h1.497c0-2.25 2.79-1.942 2.79-4.442 0-2.21-1.547-3-3.155-3Z'/%3E%3C/svg%3E")}i.icon.icon-about,i.icon.icon-help{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-about{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Zm0 1c5.522 0 10-4.477 10-10S17.522 2 12 2C6.477 2 2 6.477 2 12s4.477 10 10 10Z' clip-rule='evenodd'/%3E%3Cpath d='M11.253 7h1.492v1.5h-1.492V7ZM12.745 10.012V17h-1.492v-6.988h1.492Z'/%3E%3C/svg%3E")}i.icon.icon-search{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M16 16.708a9 9 0 1 1 .707-.707l5.647 5.645-.708.708-5.645-5.646ZM18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-search,i.icon.icon-version-history{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-version-history{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M12 6h2v6.845l4.196 2.423-1 1.732L12 14V6Z'/%3E%3Cpath d='M22 12a9 9 0 0 1-15.364 6.364l-.708.707A9.969 9.969 0 0 0 13 22c5.523 0 10-4.477 10-10S18.523 2 13 2C7.477 2 3 6.477 3 12h1a9 9 0 0 1 18 0Z'/%3E%3Cpath d='m1.5 10.5 2 2 2-2'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-horizontal{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M9.514 10.75h1.755L8.069 2H6.363L3.25 10.75h1.712l.66-1.988h3.194l.698 1.988ZM7.197 4.041l1.101 3.247h-2.18l1.079-3.247ZM16 2h-3.194v8.75h2.72c1.028-.008 1.677-.028 1.946-.06.429-.051.789-.189 1.08-.412.294-.226.525-.527.692-.9.17-.379.256-.767.256-1.165 0-.505-.13-.945-.392-1.319s-.637-.638-1.123-.794c.345-.17.617-.427.817-.77.204-.342.306-.718.306-1.128 0-.378-.082-.718-.246-1.02a2.162 2.162 0 0 0-.616-.734 1.93 1.93 0 0 0-.834-.358C17.103 2.03 16.632 2 16 2Zm-1.58 3.48V3.456h.926c.76 0 1.22.01 1.38.03.268.036.47.14.604.31.138.168.208.387.208.657 0 .283-.08.511-.24.686-.157.172-.373.275-.65.31-.152.02-.542.03-1.171.03h-1.058Zm0 3.796v-2.34h1.302c.734 0 1.21.042 1.428.125.222.084.391.217.507.4.117.183.175.406.175.669 0 .31-.076.559-.23.746a.973.973 0 0 1-.582.346c-.157.036-.526.054-1.107.054h-1.494Zm3.563 3.974 3.52 3.833.497.542-.498.542L17.982 22l-.994-1.084 2.317-2.524H2v-1.534h17.305l-2.317-2.524.995-1.084Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-anglecount,i.icon.icon-text-orientation-horizontal{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-text-orientation-anglecount{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M22 8.72h-5.604v1.358h3.363L8.55 20.916 9.672 22l10.925-10.856v3.286H22V8.72Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='m10.658 11.386-1.113 1.076-1.703-.79-2.025 1.958.842 1.623-1.085 1.05L2 9.028l1.082-1.046 7.576 3.403Zm-4.079-.301L3.823 9.769l1.374 2.653 1.382-1.337ZM6.085 5.08 8.11 3.12c.4-.387.718-.657.952-.81.233-.157.485-.255.756-.292a2 2 0 0 1 .856.073c.295.085.562.243.802.475.26.251.434.544.522.879.09.332.08.657-.03.973.407-.203.812-.27 1.215-.202.403.07.764.259 1.085.568.252.244.444.535.575.871.131.332.175.658.133.977-.043.315-.185.62-.424.914-.15.185-.549.595-1.196 1.23l-1.724 1.668-5.547-5.365Zm1.946-.097 1.283 1.24.67-.648c.399-.385.64-.631.724-.737.153-.191.224-.387.215-.588-.01-.205-.104-.395-.283-.568-.172-.166-.354-.257-.548-.275-.194-.023-.387.038-.58.18-.114.086-.412.362-.894.828l-.587.568Zm2.206 2.133 1.483 1.435.947-.916c.369-.357.591-.594.668-.711a.822.822 0 0 0 .15-.57c-.022-.209-.131-.408-.328-.598a1.104 1.104 0 0 0-.534-.303.92.92 0 0 0-.575.066c-.191.082-.52.348-.985.798l-.826.8Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-angleclock{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M15.28 22v-5.604h-1.358v3.363L3.084 8.55 2 9.672l10.856 10.925H9.57V22h5.71Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='m12.614 10.658-1.076-1.113.79-1.703-1.958-2.025-1.623.842-1.05-1.085L14.972 2l1.046 1.082-3.403 7.576Zm.301-4.079 1.316-2.756-2.653 1.374 1.337 1.382ZM18.92 6.085l1.96 2.025c.387.4.657.718.81.952.157.233.255.485.292.756a2 2 0 0 1-.073.856 1.905 1.905 0 0 1-.475.802c-.251.26-.544.434-.879.522a1.61 1.61 0 0 1-.973-.03c.203.407.27.812.202 1.215a2.032 2.032 0 0 1-.568 1.085 2.42 2.42 0 0 1-.871.575 1.928 1.928 0 0 1-.977.133c-.315-.043-.62-.185-.914-.424-.185-.15-.595-.549-1.23-1.196l-1.668-1.724 5.365-5.547Zm.097 1.946-1.24 1.283.648.67c.386.399.631.64.737.724.191.153.387.224.588.215.205-.01.395-.104.568-.283.166-.172.258-.354.275-.548.023-.194-.038-.387-.18-.58-.086-.114-.362-.412-.828-.894l-.568-.587Zm-2.133 2.206-1.435 1.483.916.947c.357.369.594.591.712.668a.822.822 0 0 0 .57.15c.208-.022.407-.131.597-.328.161-.166.262-.344.303-.534a.92.92 0 0 0-.066-.575c-.082-.191-.348-.52-.798-.985l-.8-.826Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-angleclock,i.icon.icon-text-orientation-vertical{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-text-orientation-vertical{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='m7.104 22.065 3.978-3.52-1.125-.995-2.62 2.318V1.938H5.745v17.93l-2.62-2.318L2 18.545l3.978 3.52.563.497.563-.497Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='M14.513 13.188h3.316c.656 0 1.145.03 1.465.089.325.056.613.175.866.358.256.183.47.428.64.734.169.303.254.643.254 1.02 0 .41-.106.787-.317 1.129a1.96 1.96 0 0 1-.849.77c.506.155.894.42 1.166.794.272.374.407.813.407 1.319 0 .398-.088.786-.266 1.164a2.308 2.308 0 0 1-.718.901c-.302.223-.675.36-1.12.412-.28.032-.953.052-2.02.06h-2.824v-8.75Zm1.675 1.456v2.023h1.098c.652 0 1.058-.01 1.216-.03.287-.035.511-.139.673-.31.166-.175.25-.404.25-.686 0-.271-.072-.49-.216-.657-.14-.171-.349-.274-.628-.31-.166-.02-.643-.03-1.431-.03h-.962Zm0 3.48v2.34h1.55c.604 0 .987-.019 1.149-.054.249-.048.45-.164.605-.347.159-.187.238-.435.238-.746 0-.262-.06-.485-.181-.668a1.028 1.028 0 0 0-.526-.4c-.227-.084-.72-.125-1.483-.125h-1.352ZM22 10.688h-1.822L19.454 8.7h-3.316l-.685 1.988h-1.776l3.23-8.75h1.772L22 10.688Zm-3.084-3.462-1.143-3.247-1.12 3.247h2.263Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-rotateup{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M5.914 2.483 2 5.895l1.107.966 2.578-2.248V22H7.25V4.613l2.577 2.248 1.108-.966L7.02 2.483 6.468 2l-.554.483Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='m21.928 12.594-.029 1.656-1.931.69-.052 3.012 1.91.59-.028 1.615-8.403-2.798.028-1.609 8.505-3.156Zm-3.393 2.857-3.154 1.09 3.119.966.035-2.056ZM13.5 11.079l.051-3.013c.01-.596.047-1.04.11-1.333.058-.296.178-.56.359-.792.18-.236.42-.434.72-.593.294-.159.624-.241.99-.247.395-.007.757.083 1.084.27.327.183.57.436.73.759.158-.462.42-.819.786-1.072a2.264 2.264 0 0 1 1.28-.39c.385-.007.758.067 1.12.223.36.151.646.364.86.638.21.27.337.608.38 1.012.027.253.036.864.027 1.834v2.704h-8.498Zm1.432-1.545 1.955-.032.017-.997c.01-.593.007-.962-.01-1.105-.03-.26-.126-.462-.289-.607-.166-.148-.386-.22-.66-.215-.26.004-.473.072-.637.205-.167.13-.27.322-.31.576-.021.15-.038.585-.05 1.301l-.016.874Zm3.362-.055 2.26-.037.025-1.409c.009-.548-.002-.896-.034-1.042a.875.875 0 0 0-.325-.545c-.179-.141-.418-.21-.717-.204-.254.004-.47.062-.649.175a.99.99 0 0 0-.395.484c-.084.207-.132.657-.144 1.35l-.02 1.228Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-rotatedown,i.icon.icon-text-orientation-rotateup{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-text-orientation-rotatedown{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='m7.021 21.517 3.914-3.412-1.107-.966-2.577 2.248V2H5.685v17.387l-2.578-2.248L2 18.105l3.914 3.412.554.483.553-.483Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='m13.468 11.406.028-1.656 1.931-.69.052-3.012-1.91-.59.028-1.615L22 6.641l-.028 1.609-8.505 3.156Zm3.392-2.857 3.155-1.09-3.12-.966-.035 2.056ZM21.896 12.921l-.052 3.013c-.01.596-.047 1.04-.11 1.333-.058.296-.178.56-.359.792-.18.236-.42.434-.719.593a2.126 2.126 0 0 1-.99.247 2.081 2.081 0 0 1-1.085-.27 1.74 1.74 0 0 1-.73-.759c-.158.462-.42.819-.785 1.072a2.264 2.264 0 0 1-1.281.39 2.706 2.706 0 0 1-1.12-.223 2.107 2.107 0 0 1-.86-.638c-.21-.27-.337-.608-.38-1.012-.027-.253-.035-.864-.026-1.834V12.92h8.497Zm-1.433 1.545-1.955.032-.017.997c-.01.593-.007.962.01 1.105.03.26.126.462.29.607.166.148.385.22.658.215.262-.004.474-.072.638-.205.167-.13.27-.322.31-.576.021-.15.038-.585.05-1.301l.016-.874Zm-3.362.055-2.26.037-.024 1.409c-.01.548.002.896.034 1.042.042.226.15.407.324.545.179.141.418.21.718.204.253-.004.47-.062.648-.175a.99.99 0 0 0 .395-.484c.084-.207.132-.657.144-1.35l.021-1.228Z'/%3E%3C/svg%3E")}.dataview .row{justify-content:space-around}.dataview ul{list-style:none;padding:0 10px}.dataview ul li{display:inline-block}.dataview .row.list:last-child li:not(.active):last-child:after{content:none}.dataview .active,.dataview .row.list:last-child li.active:last-child{position:relative;z-index:1}.dataview .active:after,.dataview .row.list:last-child li.active:last-child:after{background-color:var(--brand-word);bottom:-5px;content:"";height:22px;left:auto;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='11'/%3E%3Cpath fill='%23fff' d='M11 21a10 10 0 1 1 10-10 10 10 0 0 1-10 10Zm6.4-13.68L17.06 7a.48.48 0 0 0-.67 0l-7 6.84-2.44-2.6a.51.51 0 0 0-.59.08l-.36.34a.58.58 0 0 0 0 .65l3.19 3.35a.38.38 0 0 0 .39 0L17.4 8a.48.48 0 0 0 0-.67Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;position:absolute;right:-5px;transform:none;width:22px}.navbar .searchbar{background-color:var(--f7-navbar-bg-color)}.navbar .searchbar .buttons-row{align-self:center;display:flex}.navbar .searchbar .searchbar-bg:after{background-color:#cbcbcb;bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.navbar .searchbar-inner{justify-content:space-between}.navbar .searchbar-inner__center{align-items:center;display:flex;width:81%}.navbar .searchbar-inner__right{align-items:center;display:flex}.navbar .searchbar-expandable{transition-duration:0s}.navbar .buttons-row-replace{align-items:center;display:flex;flex-direction:column;justify-content:center;width:100%}.navbar .buttons-row-replace a{display:block;font-size:15px;height:auto;line-height:normal}.navbar .buttons-row-replace a:before{display:none}@media (max-width:550px){.navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__left{max-width:22px;min-width:22px}.navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__center{flex-direction:column}.navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__right{flex-direction:column-reverse}.navbar .searchbar-expandable.searchbar-enabled.replace{top:0}.navbar .searchbar-expandable.searchbar-enabled.replace .searchbar-inner{height:100%}.navbar .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__left{align-self:flex-start}}.device-ios .document-menu{background-color:rgba(0,0,0,.9);border-radius:8px}.device-ios .document-menu .popover-angle:after{background:rgba(0,0,0,.9)}.device-ios .document-menu .list-block{font-size:14px;white-space:pre}.device-ios .document-menu .list-block:first-child ul:before{display:none!important}.device-ios .document-menu .list-block:first-child li:first-child a{border-radius:0}.device-ios .document-menu .list-block .item-link{display:inline-block}.device-ios .document-menu .list-block .item-link.active-state,html:not(.watch-active-state) .device-ios .document-menu .list-block .item-link:active{background-color:#d9d9d9}.device-ios .document-menu .list-block .item-link.active-state .item-inner:after,html:not(.watch-active-state) .device-ios .document-menu .list-block .item-link:active .item-inner:after{background-color:initial}html.phone .device-ios .document-menu .list-block .item-link{padding:0 10px}.device-ios .document-menu .list-block .list-button{color:#fff;line-height:36px}.device-ios .document-menu .list-block .list-button:after{background-color:hsla(0,0%,90%,.9);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.device-ios .document-menu .list-block li{display:inline-flex}.device-ios .document-menu .list-block li:last-child .item-inner:after,.device-ios .document-menu .list-block li:last-child .list-button:after,.device-ios .document-menu .list-block li:last-child li:last-child .item-inner:after{display:none!important}.device-ios .document-menu .list-block li li:last-child .item-inner:after,.device-ios .document-menu .list-block li:last-child li .item-inner:after{background-color:hsla(0,0%,90%,.9);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.md .document-menu .popover-inner{overflow:hidden}.md .document-menu .list-block{white-space:pre}.md .document-menu .list-block ul{height:48px}.md .document-menu .list-block li{display:inline-block}.md .document-menu .list-block .list-button{color:var(--text-normal)}.document-menu{width:auto}html.phone .document-menu .list-block .list-button{padding:0 10px}.device-ios .wrap-comment{height:calc(100% - 60px)}.device-ios .add-comment-dialog .wrap-textarea,.device-ios .add-comment-popup .wrap-textarea,.device-ios .add-reply-dialog .wrap-textarea,.device-ios .add-reply-popup .wrap-textarea{height:calc(100% - 34px)}.device-ios .edit-comment-dialog .wrap-textarea,.device-ios .edit-comment-popup .wrap-textarea,.device-ios .edit-reply-dialog .wrap-textarea,.device-ios .edit-reply-popup .wrap-textarea{height:calc(100% - 52px)}.device-ios .comment-list .reply-item .item-inner:after{content:none!important}.device-ios .comment-list .reply-item:before{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:auto;position:absolute;right:auto;top:0;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;width:100%;z-index:15}.device-android .wrap-comment{height:calc(100% - 72px)}.device-android .add-comment-dialog .wrap-textarea,.device-android .add-comment-popup .wrap-textarea,.device-android .add-reply-dialog .wrap-textarea,.device-android .add-reply-popup .wrap-textarea{height:calc(100% - 41px)}.device-android .edit-comment-dialog .wrap-textarea,.device-android .edit-comment-popup .wrap-textarea,.device-android .edit-reply-dialog .wrap-textarea,.device-android .edit-reply-popup .wrap-textarea{height:calc(100% - 56px)}.device-android .comment-list .comment-header,.device-android .comment-list .reply-header,.device-android .reply-list .comment-header,.device-android .reply-list .reply-header,.device-android .wrap-comment .comment-header,.device-android .wrap-comment .reply-header{display:flex}.device-android .comment-list .comment-header .initials,.device-android .comment-list .reply-header .initials,.device-android .reply-list .comment-header .initials,.device-android .reply-list .reply-header .initials,.device-android .wrap-comment .comment-header .initials,.device-android .wrap-comment .reply-header .initials{align-items:center;border-radius:50px;color:var(--fill-white);display:flex;font-size:14px;justify-content:center;margin-right:10px}.device-android .wrap-comment .comment-header{align-items:center}.device-android .wrap-comment .comment-header .initials{height:30px;width:30px}.device-android .wrap-comment .wrap-textarea .input:not(.input-outline):after{content:none}.device-android #add-comment-dialog .dialog,.device-android #add-reply-dialog .dialog,.device-android #edit-comment-dialog .dialog,.device-android #edit-reply-dialog .dialog{--f7-dialog-text-color:#000}.device-android #add-comment-dialog .dialog .done,.device-android #add-reply-dialog .dialog .done,.device-android #edit-comment-dialog .dialog .done,.device-android #edit-reply-dialog .dialog .done{padding-right:6px}.device-android .comment-list .item-inner:after,.device-android .comment-list li:last-child li .item-inner:after,.device-android .comment-list ul:after{content:none}.device-android .comment-list .comment-header .left{align-items:center;display:flex}.device-android .comment-list .comment-header .left .initials{font-size:18px;height:40px;width:40px}.device-android .reply-list .reply-header .left{display:flex}.device-android .reply-list .reply-header .left .initials{font-size:11px;height:24px;margin-top:5px;width:24px}.device-android #edit-comment-dialog .wrap-comment .comment-header .initials,.device-android #edit-comment-dialog .wrap-comment .reply-header .initials,.device-android #edit-reply-dialog .wrap-comment .comment-header .initials,.device-android #edit-reply-dialog .wrap-comment .reply-header .initials,.device-android .edit-comment-popup .wrap-comment .comment-header .initials,.device-android .edit-comment-popup .wrap-comment .reply-header .initials,.device-android .edit-reply-popup .wrap-comment .comment-header .initials,.device-android .edit-reply-popup .wrap-comment .reply-header .initials{height:40px;width:40px}.device-android #view-comment-popover .toolbar-bottom:after{content:none}.wrap-comment{background-color:var(--background-tertiary);padding:16px 24px 0 16px}.wrap-comment .comment-date{color:var(--text-secondary)}.wrap-comment .wrap-textarea{margin-top:6px}.wrap-comment .name{color:var(--text-normal);font-size:16px;font-weight:600}.wrap-comment .reply-date{color:var(--text-secondary)}.wrap-textarea .input{height:100%}.wrap-textarea textarea{color:var(--text-normal);font-size:14px;height:100%;margin-top:0;padding:5px 0}#add-comment-dialog .dialog,#add-reply-dialog .dialog,#edit-comment-dialog .dialog,#edit-reply-dialog .dialog{--f7-dialog-width:400px;z-index:13700}#add-comment-dialog .dialog .dialog-inner,#add-reply-dialog .dialog .dialog-inner,#edit-comment-dialog .dialog .dialog-inner,#edit-reply-dialog .dialog .dialog-inner{height:400px;padding:0}#add-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,#add-comment-dialog .dialog .dialog-inner .wrap-comment .name,#add-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,#add-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,#add-reply-dialog .dialog .dialog-inner .wrap-comment .name,#add-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .name,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .name,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date{text-align:left}#add-comment-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea,#add-reply-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea{color:var(--text-normal);width:100%}.comment-list .item-content .item-inner{padding-bottom:0;padding-right:0;padding-top:16px}.comment-list .item-content .item-inner .comment-header{display:flex;justify-content:space-between;padding-right:16px}.comment-list .item-content .item-inner .comment-header .right{display:flex;justify-content:flex-end;width:70px}.comment-list .item-content .item-inner .comment-header .right .comment-resolve{margin-right:10px}.comment-list .item-content .item-inner .reply-header{display:flex;justify-content:space-between;padding-right:16px}.comment-list .item-title{width:100%}.comment-list .user-name{color:var(--text-normal);font-size:16px;font-weight:700;line-height:22px;margin:0}.comment-list .comment-date,.comment-list .reply-date{color:var(--text-secondary);font-size:12px;line-height:18px;margin:0}.comment-list .comment-quote{border-left:1px solid var(--text-secondary);color:var(--text-secondary);font-size:14px;margin:5px 0;padding-left:10px;padding-right:16px}.comment-list .comment-text,.comment-list .reply-text{color:var(--text-normal);font-size:14px;line-height:25px;margin:0;max-width:100%;padding-right:15px;word-break:break-all}.comment-list .comment-text pre,.comment-list .reply-text pre{overflow-wrap:break-word;white-space:pre-wrap}.comment-list .reply-list{padding-left:26px}.comment-list .reply-item{padding-right:26px}.add-reply-popup,.edit-comment-popup,.edit-reply-popup{z-index:20000}#view-comment-sheet{webkit-transition:height .2s;background-color:var(--fill-white);border-top-left-radius:4px;border-top-right-radius:4px;box-shadow:0 1px 10px rgba(0,0,0,.2),0 4px 5px rgba(0,0,0,.12);height:45%;transition:height .2s}#view-comment-sheet .top{height:90%}#view-comment-sheet .swipe-container{background-color:var(--background-primary);display:flex;height:40px;justify-content:center}#view-comment-sheet .swipe-container .icon-swipe{background:var(--background-menu-divider);border-radius:2px;height:4px;margin-top:8px;width:40px}#view-comment-popover .toolbar,#view-comment-sheet .toolbar{background-color:var(--background-primary);box-shadow:0 1px 10px rgba(0,0,0,.2),0 4px 5px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.14);position:fixed}#view-comment-popover .toolbar .link,#view-comment-sheet .toolbar .link{--f7-toolbar-link-color:var(--brand-word)}#view-comment-popover .toolbar .toolbar-inner,#view-comment-sheet .toolbar .toolbar-inner{padding:0 16px}#view-comment-popover .toolbar .btn-add-reply,#view-comment-sheet .toolbar .btn-add-reply{font-size:16px;min-width:80px;padding:0}#view-comment-popover .toolbar .comment-navigation,#view-comment-sheet .toolbar .comment-navigation{display:flex;justify-content:space-between;min-width:62px}#view-comment-popover .toolbar .comment-navigation .link,#view-comment-sheet .toolbar .comment-navigation .link{padding:0 12px}#view-comment-popover{background-color:var(--background-primary)}#view-comment-popover .pages{position:absolute}#view-comment-popover .page,#view-comment-popover .page .page-content{border-radius:var(--f7-popover-border-radius)}#view-comment-popover .page .page-content{padding:16px 16px 60px 0}#view-comment-popover .comment-list .item-content .item-inner .comment-header,#view-comment-popover .comment-list .item-content .item-inner .reply-header{padding-right:0}#view-comment-popover .toolbar{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);position:absolute}.page-current-comment{position:relative}.page-current-comment .page-content{background-color:var(--background-primary)}.page-current-comment .comment-list ul:after,.page-current-comment .comment-list ul:before{content:none}.page-current-comment .comment-list ul .item-content .item-inner{padding-top:0}.page-current-comment .comment-list ul .item-content .item-inner .reply-list .item-content .item-inner{padding-top:13px}.dialog.modal-in{max-height:100%;overflow:auto;z-index:14000}.dialog.modal-in .item-content .item-input-wrap:after{background-color:var(--brand-word)}.dialog-backdrop.backdrop-in{z-index:13600}.no-comments{color:var(--text-normal);margin-top:35px;text-align:center}.actions-modal.modal-in{z-index:13700}.actions-modal.modal-in .actions-group:after{background-color:var(--background-menu-divider)}.actions-backdrop.backdrop-in{z-index:13600}.device-android #editor-navbar.navbar .right{padding-right:4px}.device-android #editor-navbar.navbar .left a.link,.device-android #editor-navbar.navbar .right a.link{align-items:center;box-sizing:border-box;justify-content:space-between;padding:0 13px;width:auto}.device-android .page-review .header-change{display:flex}.device-android .page-review .toolbar{height:56px}.device-android .page-review .toolbar .toolbar-inner{padding:0 15px}.device-android .page-review .toolbar .toolbar-inner .link{font-size:14px;font-weight:500;padding:0;text-transform:uppercase}.device-android .page-review .initials{align-items:center;border-radius:50px;color:#fff;display:flex;font-size:18px;height:40px;justify-content:center;margin-right:16px;width:40px}.device-android .content-block.stepper-block{display:flex;justify-content:center;margin:25px 0 0}.device-android .content-block.stepper-block .stepper{--f7-touch-ripple-color:none}.device-android .content-block.stepper-block .stepper-button,.device-android .content-block.stepper-block .stepper-button-minus,.device-android .content-block.stepper-block .stepper-button-plus{border:none;border-radius:0}.device-android .content-block.stepper-block .stepper-button-minus:after,.device-android .content-block.stepper-block .stepper-button-minus:before,.device-android .content-block.stepper-block .stepper-button-plus:after,.device-android .content-block.stepper-block .stepper-button-plus:before,.device-android .content-block.stepper-block .stepper-button:after,.device-android .content-block.stepper-block .stepper-button:before{display:none}.device-android .content-block.stepper-block .stepper-button-minus.active-state,.device-android .content-block.stepper-block .stepper-button-plus.active-state{background-color:var(--f7-list-link-pressed-bg-color)}.device-android .content-block.stepper-block .stepper-input-wrap{border:none}.device-android .content-block.stepper-block .stepper-input-wrap input{color:var(--text-normal);font-size:16px;font-weight:var(--f7-list-item-after-line-height);width:40px}.device-android .navigation-sheet{border-radius:4px 4px 0 0}.device-android .navigation-sheet__title{align-items:center;background:var(--background-primary);display:flex;padding-bottom:15px;padding-left:16px}.device-android .navigation-sheet__title p{color:var(--text-normal);font-size:20px;font-style:normal;font-weight:500;line-height:23px;margin:0}.device-android .snackbar{background:#333;border-radius:4px;bottom:16px;left:calc(50% - 172px);position:absolute;width:344px;z-index:1000000}.device-android .snackbar__content{padding:14px 16px}.device-android .snackbar__text{color:var(--fill-white);font-size:14px;font-style:normal;font-weight:400;letter-spacing:.25px;line-height:20px;margin:0;text-align:center}@media (max-width:450px){.device-android .snackbar{bottom:8px;left:16px;max-width:100%;right:16px;width:auto}.device-android .snackbar__text{text-align:left}}.device-android .password-field__wrap{display:flex;justify-content:space-between;position:relative}.device-android .password-field__icon{min-height:24px;min-width:24px}.device-android .password-field__input{-webkit-appearance:none;appearance:none;background-color:var(--f7-input-bg-color,transparent);background:none;border:none;border-radius:0;box-shadow:none;box-sizing:border-box;color:var(--f7-input-text-color);display:block;font-family:inherit;font-size:var(--f7-input-font-size);height:var(--f7-input-height);margin:0;outline:0;padding:0;resize:none;width:100%}.ios .content-block.stepper-block{margin:20px 0}.ios .content-block.stepper-block .stepper.stepper-large{border-radius:var(--f7-button-border-radius);box-shadow:var(--f7-button-box-shadow);height:35px}.ios .content-block.stepper-block .stepper-button-minus,.ios .content-block.stepper-block .stepper-button-plus{border:1px solid #446995;color:#446995}.ios .content-block.stepper-block .stepper-button-minus:after,.ios .content-block.stepper-block .stepper-button-minus:before,.ios .content-block.stepper-block .stepper-button-plus:after,.ios .content-block.stepper-block .stepper-button-plus:before{display:none}.ios .content-block.stepper-block .stepper-button-minus.active-state,.ios .content-block.stepper-block .stepper-button-plus.active-state{background-color:var(--f7-list-link-pressed-bg-color)}.ios .content-block.stepper-block .stepper-input-wrap{border-bottom:1px solid #446995;border-top:1px solid #446995}.ios .content-block.stepper-block .stepper-input-wrap input{color:var(--text-normal);font-size:17px;font-weight:var(--f7-list-item-after-line-height)}.ios .navigation-sheet{border-radius:10px 10px 0 0}.ios .navigation-sheet__title{align-items:center;background:var(--background-primary);display:flex;justify-content:center;padding-bottom:10px}.ios .navigation-sheet__title p{color:var(--text-normal);font-size:17px;font-style:normal;font-weight:600;line-height:22px;margin:0;text-align:center}.ios .custom-option-wrapper{padding:11px 16px}.ios .custom-option-wrapper .wrap-textarea{padding:0}.ios .back-reader-mode{margin-left:10px}.ios .snackbar{background:rgba(0,0,0,.9);border-radius:4px;bottom:24px;left:calc(50% - 97.5px);position:absolute;width:195px;z-index:1000000}.ios .snackbar__content{padding:15px 16.5px}.ios .snackbar__text{color:var(--fill-white);font-size:13px;font-style:normal;font-weight:400;letter-spacing:-.078px;line-height:18px;margin:0;text-align:center}@media (max-width:450px){.ios .snackbar{bottom:50px}}.device-ios i.icon.icon-undo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M22 16v2h-1v-2c0-2.9-2.1-5-5-5H1.9L5 14c.1.1.1.2 0 .3l-.4.4c-.1.1-.2.1-.3 0L.1 10.5c-.1-.1-.1-.2 0-.3l.4-.4h.1L4.4 6c.1-.1.2-.1.3 0l.5.4c.1.1.1.2 0 .3L1.9 10H16c3.3 0 6 2.7 6 6z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-redo,.device-ios i.icon.icon-undo{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-redo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M0 16c0-3.3 2.7-6 6-6h14.1l-3.3-3.3c-.1-.1-.1-.2 0-.3l.5-.4c.1-.1.2-.1.3 0l3.8 3.8h.1l.4.4c.1.1.1.2 0 .3l-4.2 4.2c-.1.1-.2.1-.3 0l-.4-.4c-.1-.1-.1-.2 0-.3l3.1-3H6c-2.9 0-5 2.1-5 5v2H0v-2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-edit-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath fill-rule='evenodd' d='M8 1 3 15h1.2l1.777-5h5.046l.616 1.733.88-.88L9 1zm.5 1.9L10.668 9H6.332z' clip-rule='evenodd'/%3E%3Cpath d='m18.3 11.3-9.2 9.1-1.5-1.5 9.2-9.1-.7-.7-9.6 9.6L6 22l3.3-.5 9.6-9.6zm1.2 0L21 9.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-edit-settings,.device-ios i.icon.icon-plus{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-plus{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M22 12H12v10h-1V12H1v-1h10V1h1v10h10v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-settings{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='m11.8 3 .4 2c.1.7.6 1.1 1.3 1.1.3 0 .5-.1.7-.2l1.9-1.2 1.1 1.1-1.1 1.8c-.3.4-.3.9-.1 1.3.2.4.5.7 1 .8l2.1.5v1.6l-2.1.4c-.5.1-.8.4-1 .8-.2.4-.1.9.1 1.2l1.2 1.9-1.1 1.1-1.8-1.1c-.2-.2-.5-.2-.8-.2-.6 0-1.2.5-1.3 1.1l-.5 2.1h-1.6l-.4-2c-.1-.7-.6-1.1-1.3-1.1-.3 0-.5.1-.7.2l-1.9 1.2-1.1-1.1 1.1-1.8c.3-.4.3-.9.1-1.3-.2-.4-.5-.7-1-.8l-2.1-.5v-1.6l2-.4c.5-.1.8-.4 1-.8.2-.4.1-.9-.1-1.2l-1-2 1.1-1.1 1.8 1.1c.3.2.5.3.8.3.6 0 1.2-.5 1.3-1.1l.5-2.1h1.5M11 15.5c2.5 0 4.5-2 4.5-4.5s-2-4.5-4.5-4.5-4.5 2-4.5 4.5 2 4.5 4.5 4.5M12.1 2H9.9c-.3 0-.5.2-.6.5l-.5 2.4c0 .2-.2.3-.3.3s-.1 0-.2-.1L6.2 3.8c-.1-.1-.2-.1-.4-.1-.1 0-.3 0-.4.1L3.8 5.4c-.1.2-.2.5 0 .8l1.3 2.1c.1.2.1.4-.2.5l-2.4.5c-.3.1-.5.3-.5.6v2.2c0 .3.2.5.5.6l2.4.5c.3.1.4.3.2.5l-1.3 2.1c-.2.2-.1.6.1.8l1.6 1.6c.1.1.3.2.4.2s.2 0 .3-.1L8.3 17c.1-.1.1-.1.2-.1s.3.1.3.3l.5 2.3c.1.3.3.5.6.5h2.2c.3 0 .5-.2.6-.5l.5-2.4c0-.2.1-.3.3-.3.1 0 .1 0 .2.1l2.1 1.3c.1.1.2.1.3.1.2 0 .3-.1.4-.2l1.6-1.6c.2-.2.2-.5.1-.8l-1.3-2.1c-.2-.2-.1-.5.2-.5l2.4-.5c.3-.1.5-.3.5-.6V9.8c0-.3-.2-.5-.5-.6l-2.4-.5c-.3-.1-.4-.3-.2-.5l1.3-2.1c.2-.2.1-.6-.1-.8l-1.6-1.6c-.1-.1-.3-.2-.4-.2-.1 0-.2 0-.3.1l-2.1 1.3c-.1.1-.1.1-.2.1s-.3-.1-.3-.3l-.5-2.2c-.1-.3-.3-.5-.6-.5zM11 14.5c-1.9 0-3.5-1.6-3.5-3.5S9.1 7.5 11 7.5s3.5 1.6 3.5 3.5-1.6 3.5-3.5 3.5z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-expand-down{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='m20.5 6.5 1.1 1.1L11 18 .5 7.5l1.1-1.1 9.5 9.5 9.4-9.4z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-expand-down,.device-ios i.icon.icon-spellcheck{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-spellcheck{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cg fill-rule='evenodd' clip-rule='evenodd'%3E%3Cpath d='M8 1 3 15h1.2l1.777-5h5.046l.654 1.84a6.03 6.03 0 0 1 .916-.78L9 1H8Zm.5 1.9L10.668 9H6.332L8.5 2.9ZM16 21a5 5 0 1 0 0-10 5 5 0 0 0 0 10Zm-.646-2.646 4-4-.708-.708L15 17.293l-1.646-1.647-.708.708 2 2 .354.353.354-.353Z'/%3E%3C/g%3E%3C/svg%3E")}.device-ios i.icon.icon-reader{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M17 21H1V9h6V2h10v5h1V1H6.2L0 7.6V22h18v-3h-1v2zM6 2.8V8H1.1L6 2.8zM13 8c-5.1 0-9 5-9 5s4.1 5 9 5c5 0 9-5 9-5s-4-5-9-5zm-4.3 7.5C6.8 14.4 6.4 13 6.4 13s.4-1.5 2.4-2.6C8.3 11.2 8 12 8 13c0 .9.3 1.8.7 2.5zm4.3 1.2c-2.1 0-3.7-1.7-3.7-3.7 0-2.1 1.7-3.7 3.7-3.7 2.1 0 3.7 1.7 3.7 3.7 0 2.1-1.6 3.7-3.7 3.7zm4.3-1.2c.4-.7.7-1.6.7-2.5 0-1-.3-1.8-.7-2.6 2 1.1 3.4 2.6 3.4 2.6s-1.5 1.4-3.4 2.5zM13 11.7c-.7 0-1.3.6-1.3 1.3s.6 1.3 1.3 1.3 1.3-.6 1.3-1.3-.6-1.3-1.3-1.3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-doc-setup,.device-ios i.icon.icon-reader{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-doc-setup{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='-4 6 22 22'%3E%3Cpath d='M15 27H-1V15h6V8h10v19zm1-20H4.2L-2 13.6V28h18V7zM4 8.8V14H-.9L4 8.8z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-app-settings{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M7 14h9a4 4 0 0 1 0 8H7a4 4 0 0 1 0-8Zm9-1a5 5 0 0 1 0 10H7a5 5 0 0 1 0-10h9Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M16 20a2 2 0 1 1 0-4 2 2 0 0 1 0 4Zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6ZM16 3H7a4 4 0 1 0 0 8h9a4 4 0 0 0 0-8ZM7 2a5 5 0 0 0 0 10h9a5 5 0 0 0 0-10H7Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M7 9a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm0 1a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-download{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M12 0h-1v14l-3.6-3.7-.7.8 4.8 4.9 4.8-4.9-.7-.8L12 14V0Z'/%3E%3Cpath d='M14 5v1h5v14H4V6h5V5H3v16h17V5h-6Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-download,.device-ios i.icon.icon-print{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-print{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath fill-rule='evenodd' d='M5 1h12v5h4v11h-4v4H5v-4H1V6h4V1Zm1 5h10V2H6v4ZM5 16v-3H2v3h3Zm-3-4h18V7H2v5Zm18 1h-3v3h3v-3Zm-4 0H6v7h10v-7Zm-2 3H8v-1h6v1Zm0 2H8v-1h6v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-navigation{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M16 4H2v1h14V4ZM19 9H5v1h14V9ZM23 14v1H9v-1h14ZM16 20v-1H2v1h14Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-feedback,.device-ios i.icon.icon-navigation{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-feedback{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill-rule='evenodd' d='M21 6H3v12h18V6ZM3 5a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H3Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m2.666 6.372.668-.744 8.666 7.7 8.666-7.7.668.744-9.334 8.3-9.334-8.3Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m9.376 11.33-6 7-.752-.66 6-7 .752.66ZM15.376 10.67l6 7-.752.66-6-7 .752-.66Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-additional{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M18.5 15.5c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 3c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1zm0-11c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0-3c.6 0 1 .4 1 1s-.4 1-1 1-1-.4-1-1 .4-1 1-1zm0 5c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 3c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1zM6.9 3.8 1 18.9h1.5l1.8-4.7h6.9l1.7 4.7h1.5L8.6 3.8H6.9zm-2.2 9.1 3-7.9 3 7.9h-6z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-bullets,.device-ios i.icon.icon-text-additional{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-bullets{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M7 4v1h15V4H7zM1 6h3V3H1v3zm6 6h15v-1H7v1zm-6 1h3v-3H1v3zm6 6h15v-1H7v1zm-6 1h3v-3H1v3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-numbers{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M7 3.8v1h15v-1H7zm0 8h15v-1H7v1zm0 7h15v-1H7v1zM3.1 6.9h.7V2h-.5c-.1.4-.2.6-.4.7-.2.1-.5.2-.9.2v.5h1.2v3.5zM3.3 9c-.7 0-1.2.2-1.4.7-.2.3-.2.6-.2 1h.6c0-.3.1-.5.1-.7.2-.3.5-.5.9-.5.3 0 .5.1.7.3s.3.4.3.7c0 .2-.1.5-.3.7-.1.1-.3.3-.6.4l-.7.4c-.4.3-.7.5-.9.9-.2.3-.2.7-.3 1.1h3.4v-.6H2.2c.1-.2.2-.5.4-.7.1-.1.3-.2.5-.4l.5-.3c.4-.2.7-.4.9-.6.3-.3.4-.6.4-1s-.1-.7-.4-1c-.2-.3-.6-.4-1.2-.4zm.8 9.3c.2-.1.3-.2.4-.3.2-.2.2-.4.2-.7 0-.4-.1-.7-.4-1-.3-.2-.7-.3-1.2-.3-.6 0-1.1.2-1.3.7-.1.3-.2.6-.2.9h.6c0-.3.1-.5.1-.6.2-.3.4-.4.9-.4.2 0 .4.1.6.2.2.1.3.2.3.5s-.1.6-.4.7c-.1.1-.3.1-.6.1H2.8v.5H3c.4 0 .7.1.9.2.2.1.3.4.3.7 0 .3-.1.5-.3.7-.2.2-.5.3-.8.3-.4 0-.7-.1-.9-.4-.1-.1-.2-.4-.2-.7h-.5c0 .5.1.8.4 1.2.2.2.6.4 1.2.4s1-.1 1.3-.4c.3-.3.5-.7.5-1.1 0-.3-.1-.5-.2-.7-.2-.3-.4-.5-.6-.5z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-linespacing,.device-ios i.icon.icon-numbers{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-linespacing{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M22 4V3H1v1h10v.3L8 7.4l.7.7L11 5.7v11.6l-2.3-2.4-.7.7 3 3.1v.3H1v1h21v-1H12v-.4l3-3-.7-.7-2.3 2.3V5.8l2.3 2.3.7-.7-3-3V4z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-color{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='m8.9 12 2.3-6.3 2.2 6.3H8.9zm-4.2 5.8h2l1.6-4.3h5.6l1.5 4.3h2.1L12.3 3.5h-2.2L4.7 17.8z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-color,.device-ios i.icon.icon-text-selection{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-selection{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M7.6 10.3c.2.3.4.4.5.5.3.2.6.3 1 .3.7 0 1.3-.3 1.7-.8.4-.5.6-1.2.6-2.1 0-.9-.2-1.5-.6-2-.4-.4-.9-.7-1.6-.7-.3 0-.6.1-.9.2l-.7.7V3.8h-.8V11h.8v-.7zM8 6.9c.3-.3.7-.4 1.1-.4.5 0 .8.2 1 .5.2.4.4.8.4 1.4 0 .6-.1 1.1-.4 1.5-.2.4-.6.6-1.1.6-.6 0-1.1-.3-1.3-.9-.1-.4-.1-.8-.1-1.3 0-.6.1-1.1.4-1.4zm-2.3 3.5c-.1 0-.2 0-.2-.1s-.1-.1-.1-.2v-3c0-.5-.2-.9-.6-1.1-.4-.2-.8-.4-1.5-.4-.5 0-1 .1-1.4.4-.4.3-.6.7-.6 1.4h.8c0-.3.1-.5.2-.6.2-.2.5-.4 1-.4.4 0 .7.1.9.2.2.1.3.4.3.7 0 .1 0 .3-.1.3 0 .1-.1.2-.3.2L2.7 8c-.5.1-.9.2-1.2.5-.3.3-.5.6-.5 1.1 0 .4.2.8.5 1.1.3.3.7.4 1.2.4.4 0 .8-.1 1.1-.3.3-.2.6-.4.8-.6 0 .2.1.4.2.5.1.2.4.3.7.3h.3c.1 0 .2 0 .3-.1v-.6h-.2c-.1.1-.2.1-.2.1zM4.5 9.1c0 .5-.2.9-.7 1.2-.3.1-.6.2-.9.2-.3 0-.5-.1-.7-.2-.2-.2-.2-.4-.2-.7 0-.3.1-.6.4-.7.2-.1.4-.2.7-.2l.5-.1c.2 0 .3-.1.5-.1s.3-.1.4-.2v.8zm14-4.1L8.3 15.3l-.5 2c-.6.4-1.3.3-1.5.6-.3.4.9.4 1.5.3.4 0 .5 0 .5-.2l2.2-.6L20.7 7.1 18.5 5zM9 15.3l9.5-9.5L20 7.1l-9.5 9.5L9 15.3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm14 4H1v1h14V7zM1 12h21v-1H1v1zm14 3H1v1h14v-1zM1 20h21v-1H1v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-left,.device-ios i.icon.icon-text-align-right{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-align-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm7 5h14V7H8v1zm14 3H1v1h21v-1zM8 16h14v-1H8v1zm14 3H1v1h21v-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm3 4v1h14V7H4zm-3 5h21v-1H1v1zm3 3v1h14v-1H4zm-3 5h21v-1H1v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-center,.device-ios i.icon.icon-text-align-just{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-align-just{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm0 5h21V7H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-de-indent{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 20v-1h21v1H1zm10-5h11v1H11v-1zm0-4h11v1H11v-1zm0-4h11v1H11V7zM6.3 7l.7.7-3.8 3.8L7 15.3l-.7.7L2 11.8l-.2-.3.2-.3L6.3 7zM1 3h21v1H1V3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-de-indent,.device-ios i.icon.icon-in-indent{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-in-indent{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 20v-1h21v1H1zm11-4H1v-1h11v1zm0-4H1v-1h11v1zm0-4H1V7h11v1zm9 3.2.2.3-.2.3-4.3 4.2-.7-.7 3.8-3.8L16 7.7l.7-.7 4.3 4.2zM22 4H1V3h21v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-add-column-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M15 19H7v-4H0V2h22v17h-7zm0-1h6v-3h-6v3zm0-4h6v-3h-6v3zm-7 4h6v-3H8v3zm0-4h6v-3H8v3zm6-4V7H8v3h6zM8 3v3h6V3H8zm13 0h-6v3h6V3zm-6 4v3h6V7h-6zM3 16h1v2h2v1H4v2H3v-2H1v-1h2v-2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-add-column-left,.device-ios i.icon.icon-table-add-column-right{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-table-add-column-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M0 19V2h22v13h-7v4H0zm7-4H1v3h6v-3zm0-4H1v3h6v-3zm7 4H8v3h6v-3zm0-4H8v3h6v-3zm0-1V7H8v3h6zM8 3v3h6V3H8zM1 6h6V3H1v3zm0 1v3h6V7H1zm18 11h2v1h-2v2h-1v-2h-2v-1h2v-2h1v2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-add-row-above{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M21 20H0V1h15v6h7v13h-1zM7 8H1v3h6V8zm0 4H1v3h6v-3zm0 4H1v3h6v-3zm1 3h6v-3H8v3zm0-4h6v-3H8v3zm0-4h6V8H8v3zm13-3h-6v3h6V8zm0 4h-6v3h6v-3zm0 4h-6v3h6v-3zM19 6h-1V4h-2V3h2V1h1v2h2v1h-2v2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-add-row-above,.device-ios i.icon.icon-table-add-row-below{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-table-add-row-below{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M22 1v13h-7v6H0V1h22zM7 10H1v3h6v-3zm0-4H1v3h6V6zm0-4H1v3h6V2zm1 3h6V2H8v3zm0 4h6V6H8v3zm0 4h6v-3H8v3zm13-3h-6v3h6v-3zm0-4h-6v3h6V6zm0-4h-6v3h6V2zm-2 15h2v1h-2v2h-1v-2h-2v-1h2v-2h1v2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-remove-column{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M21 19h-8.6c-.9 1.8-2.7 3-4.9 3s-4-1.2-4.9-3H0V2h22v17h-1zM7.5 12C5 12 3 14 3 16.5S5 21 7.5 21s4.5-2 4.5-4.5S10 12 7.5 12zM14 3H8v3h6V3zm0 4H8v3h6V7zm0 4H8v.1c1.9.2 3.5 1.3 4.4 2.9H14v-3zm0 4h-1.2c.1.5.2 1 .2 1.5s-.1 1-.2 1.5H14v-3zm7-12h-6v3h6V3zm0 4h-6v3h6V7zm0 4h-6v3h6v-3zm0 4h-6v3h6v-3zM9.6 19.3l-2.1-2.1-2.1 2.1-.7-.7 2.1-2.1-2.1-2.1.7-.7 2.1 2.1 2.1-2.1.7.7-2.1 2.1 2.1 2.1-.7.7z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-remove-column,.device-ios i.icon.icon-table-remove-row{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-table-remove-row{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M21 19h-8.6c-.9 1.8-2.7 3-4.9 3s-4-1.2-4.9-3H0V2h22v17h-1zM1 18h1.2c-.1-.5-.2-1-.2-1.5s.1-1 .2-1.5H1v3zM7 3H1v3h6V3zm0 4H1v3h6V7zm.5 5C5 12 3 14 3 16.5S5 21 7.5 21s4.5-2 4.5-4.5S10 12 7.5 12zM14 3H8v3h6V3zm0 4H8v3h6V7zm0 8h-1.2c.1.5.2 1 .2 1.5s-.1 1-.2 1.5H14v-3zm7-12h-6v3h6V3zm0 4h-6v3h6V7zm0 8h-6v3h6v-3zM9.6 19.3l-2.1-2.1-2.1 2.1-.7-.7 2.1-2.1-2.1-2.1.7-.7 2.1 2.1 2.1-2.1.7.7-2.1 2.1 2.1 2.1-.7.7z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-all{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-all,.device-ios i.icon.icon-table-borders-none{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-none{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z' opacity='.3'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-inner{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M26 13H14V1h-1v12H1v1h12v12h1V14h12v-1z'/%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-inner,.device-ios i.icon.icon-table-borders-outer{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-outer{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h1v27H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-center,.device-ios i.icon.icon-table-borders-left{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M13 0h1v27h-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M26 0h1v27h-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-right,.device-ios i.icon.icon-table-borders-top{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h27v1H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 13h27v1H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-bottom,.device-ios i.icon.icon-table-borders-middle{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-bottom{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 26h27v1H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-backward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h17v17H1z' opacity='.3'/%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-backward,.device-ios i.icon.icon-move-forward{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-move-forward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z' opacity='.3'/%3E%3Cpath d='M1 1h17v17H1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-background,.device-ios i.icon.icon-move-mask{background-color:var(--brand-word);height:28px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M8 8h13v13H8z' opacity='.3'/%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-move-foreground{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z' opacity='.3'/%3E%3Cpath d='M8 8h13v13H8z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-foreground,.device-ios i.icon.icon-wrap-inline{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-wrap-inline{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M0 1h26v1H0zM0 4h26v1H0zM0 25h26v1H0zM0 22h26v1H0zM0 7h5v1H0zM20 19h6v1h-6zM16.08 8.31c-1.69 1-2.82 3.91-2.82 3.91s-.19.06-.07-.22a.33.33 0 0 0 0-.45l.78-1.9a.45.45 0 0 0 .03-.17.26.26 0 0 0 0-.23.24.24 0 0 0-.14.18.49.49 0 0 0 0 .19l-.78 1.9a.17.17 0 0 0-.11 0 .25.25 0 0 1-.11 0l-.78-1.9a.47.47 0 0 0 0-.19.24.24 0 0 0-.14-.18.26.26 0 0 0 0 .23.45.45 0 0 0 .1.17l.78 1.91a.32.32 0 0 0-.05.44c.12.29-.07.22-.07.22s-1.13-2.93-2.82-3.91-3.55-2-3.8-.53.23 1.42.37 2 .28 2.34.76 2.75a6.19 6.19 0 0 0 2.41.47s-2.17 1.24-2.14 2 .62 4.86 1.83 4.92 2-1.87 2.34-2.78a26.9 26.9 0 0 1 .93-2.84 8.39 8.39 0 0 1 .14 1.51c.11.3.25.26.25.26s.14 0 .25-.26a8.39 8.39 0 0 1 .14-1.51 26.73 26.73 0 0 1 .93 2.84c.34.92 1.13 2.84 2.34 2.78s1.8-4.18 1.83-4.92-2.14-2-2.14-2a6.19 6.19 0 0 0 2.42-.44c.48-.41.62-2.13.76-2.75s.62-.62.37-2-2.1-.48-3.79.5Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-wrap-square{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M0 1h26v1H0zM0 4h26v1H0zM0 25h26v1H0zM0 22h26v1H0zM0 7h5v1H0zM0 10h5v1H0zM0 13h5v1H0zM0 16h5v1H0zM0 19h5v1H0zM21 19h5v1h-5zM21 16h5v1h-5zM21 13h5v1h-5zM21 10h5v1h-5zM21 7h5v1h-5zM16.08 8.33c-1.69 1-2.82 3.91-2.82 3.91s-.19.06-.07-.22a.33.33 0 0 0 0-.45l.78-1.9A.45.45 0 0 0 14 9.5a.26.26 0 0 0 0-.23.24.24 0 0 0-.14.18.49.49 0 0 0 0 .19l-.78 1.9a.17.17 0 0 0-.11 0 .25.25 0 0 1-.11 0l-.78-1.9a.47.47 0 0 0 0-.19.24.24 0 0 0-.14-.18.26.26 0 0 0 0 .23.45.45 0 0 0 .1.17l.78 1.91a.32.32 0 0 0-.05.44c.12.29-.07.22-.07.22S11.57 9.3 9.88 8.33s-3.55-2-3.8-.53.23 1.42.37 2 .28 2.34.76 2.75a6.19 6.19 0 0 0 2.41.45s-2.17 1.24-2.14 2 .62 4.86 1.83 4.92 2-1.87 2.34-2.78a26.9 26.9 0 0 1 .93-2.84 8.39 8.39 0 0 1 .14 1.51c.11.3.25.26.25.26s.14 0 .25-.26a8.39 8.39 0 0 1 .14-1.51 26.73 26.73 0 0 1 .93 2.84c.34.92 1.13 2.84 2.34 2.78s1.8-4.18 1.83-4.92-2.14-2-2.14-2a6.19 6.19 0 0 0 2.42-.44c.48-.41.62-2.13.76-2.75s.62-.62.37-2-2.1-.46-3.79.52Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-wrap-square,.device-ios i.icon.icon-wrap-tight{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-wrap-tight{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M0 1h26v1H0zM0 4h26v1H0zM0 25h26v1H0zM0 22h26v1H0zM0 7h5v1H0zM0 10h5v1H0zM0 13h6v1H0zM0 16h6v1H0zM0 19h7v1H0zM19 19h7v1h-7zM12 19h2v1h-2zM20 16h6v1h-6zM20 13h6v1h-6zM21 10h5v1h-5zM21 7h5v1h-5zM11 7h4v1h-4z'/%3E%3Cpath d='M16.07 8.3c-1.69 1-2.82 3.91-2.82 3.91s-.19.06-.07-.22a.33.33 0 0 0 0-.45l.78-1.9a.45.45 0 0 0 .04-.17.26.26 0 0 0 0-.23.24.24 0 0 0-.14.18.49.49 0 0 0 0 .19l-.78 1.9a.17.17 0 0 0-.11 0 .25.25 0 0 1-.11 0l-.78-1.9a.47.47 0 0 0 0-.19.24.24 0 0 0-.14-.18.26.26 0 0 0 0 .23.45.45 0 0 0 .1.17l.78 1.91a.32.32 0 0 0-.05.44c.12.29-.07.22-.07.22S11.56 9.28 9.87 8.3s-3.55-2-3.8-.53.23 1.42.37 2 .28 2.34.76 2.76a6.17 6.17 0 0 0 2.42.47s-2.17 1.25-2.14 2 .62 4.86 1.83 4.92 2-1.87 2.34-2.79a27 27 0 0 1 .93-2.85 8.41 8.41 0 0 1 .14 1.51c.11.3.25.26.25.26s.14 0 .25-.26a8.41 8.41 0 0 1 .14-1.51 26.81 26.81 0 0 1 .93 2.85c.34.92 1.13 2.85 2.34 2.79s1.8-4.18 1.83-4.92-2.14-2-2.14-2a6.17 6.17 0 0 0 2.42-.44c.48-.42.62-2.13.76-2.76s.62-.62.37-2-2.11-.48-3.8.5Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-wrap-through{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M0 1h26v1H0zM0 4h26v1H0zM0 25h26v1H0zM0 22h26v1H0zM0 7h5v1H0zM0 10h5v1H0zM0 13h6v1H0zM0 16h6v1H0zM0 19h7v1H0zM19 19h7v1h-7zM20 16h6v1h-6zM20 13h6v1h-6zM21 10h5v1h-5zM21 7h5v1h-5zM16.09 8.31c-1.68 1-2.8 3.93-2.8 3.93s-.19.06-.07-.22a.33.33 0 0 0 0-.45l.77-1.91a.46.46 0 0 0 .01-.17.26.26 0 0 0 0-.23.24.24 0 0 0-.14.18.49.49 0 0 0 0 .2l-.77 1.91a.17.17 0 0 0-.11 0 .25.25 0 0 1-.11 0l-.75-1.91a.48.48 0 0 0 0-.2.24.24 0 0 0-.14-.18.26.26 0 0 0 0 .23.46.46 0 0 0 .1.17l.78 1.92a.32.32 0 0 0-.05.44c.12.29-.07.22-.07.22S11.61 9.3 9.93 8.31s-3.53-2-3.78-.54.22 1.43.36 2.05.28 2.35.76 2.77a6.08 6.08 0 0 0 2.41.41s-2.16 1.3-2.13 2 .62 4.92 1.82 5 2-1.88 2.32-2.8a27.27 27.27 0 0 1 .92-2.86 8.53 8.53 0 0 1 .14 1.52c.11.3.25.26.25.26s.14 0 .25-.26a8.53 8.53 0 0 1 .14-1.52 27.09 27.09 0 0 1 .92 2.86c.34.92 1.12 2.86 2.32 2.8s1.79-4.2 1.82-4.94-2.13-2-2.13-2a6.08 6.08 0 0 0 2.41-.45c.48-.42.62-2.14.76-2.77s.62-.62.36-2.05-2.08-.46-3.76.52Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-wrap-through,.device-ios i.icon.icon-wrap-top-bottom{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-wrap-top-bottom{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M0 1h26v1H0zM0 4h26v1H0zM0 25h26v1H0zM0 22h26v1H0zM16.08 8.3c-1.68 1-2.8 3.91-2.8 3.91s-.19.06-.07-.22a.33.33 0 0 0 0-.45l.77-1.9a.45.45 0 0 0 .02-.17.26.26 0 0 0 0-.23.24.24 0 0 0-.14.18.49.49 0 0 0 0 .19l-.77 1.9a.17.17 0 0 0-.11 0 .25.25 0 0 1-.11 0l-.75-1.9a.48.48 0 0 0 0-.19.24.24 0 0 0-.14-.18.26.26 0 0 0 0 .23.45.45 0 0 0 .1.17l.78 1.91a.32.32 0 0 0 0 .44c.12.29-.07.22-.07.22S11.6 9.28 9.92 8.3s-3.52-2-3.77-.53.22 1.42.36 2 .28 2.34.76 2.76a6.08 6.08 0 0 0 2.4.44s-2.15 1.25-2.12 2 .61 4.86 1.82 4.92 2-1.87 2.32-2.79a27.11 27.11 0 0 1 .92-2.85 8.47 8.47 0 0 1 .14 1.51c.11.3.25.26.25.26s.14 0 .25-.26a8.47 8.47 0 0 1 .14-1.51 26.94 26.94 0 0 1 .92 2.85c.34.92 1.12 2.85 2.32 2.79s1.79-4.18 1.82-4.92-2.12-2-2.12-2a6.08 6.08 0 0 0 2.4-.44c.48-.42.62-2.13.76-2.76s.61-.62.36-2-2.1-.45-3.77.53Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-wrap-infront{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M0 1h26v1H0zM0 4h26v1H0zM0 25h26v1H0zM0 22h26v1H0zM0 7h26v1H0zM0 10h26v1H0zM0 13h26v1H0zM0 16h26v1H0zM0 19h26v1H0z' opacity='.3'/%3E%3Cpath d='M16.08 8.29c-1.69 1-2.82 3.93-2.82 3.93s-.19.06-.07-.22a.33.33 0 0 0 0-.45l.78-1.91a.46.46 0 0 0 .03-.17.26.26 0 0 0 0-.23.25.25 0 0 0-.14.18.49.49 0 0 0 0 .2l-.78 1.9a.17.17 0 0 0-.11 0 .25.25 0 0 1-.11 0l-.77-1.91a.48.48 0 0 0 0-.2.24.24 0 0 0-.14-.18.26.26 0 0 0 0 .23.46.46 0 0 0 .1.17l.78 1.92a.32.32 0 0 0-.05.44c.12.29-.07.22-.07.22s-1.14-2.94-2.83-3.92-3.55-2-3.8-.54.23 1.43.37 2.05.28 2.35.76 2.77a6.16 6.16 0 0 0 2.41.43s-2.17 1.25-2.14 2 .62 4.89 1.83 5 2-1.87 2.34-2.8a27.1 27.1 0 0 1 .93-2.86 8.46 8.46 0 0 1 .14 1.52c.11.3.25.26.25.26s.14 0 .25-.26a8.46 8.46 0 0 1 .14-1.52 26.92 26.92 0 0 1 .93 2.86c.34.92 1.13 2.86 2.34 2.8s1.8-4.19 1.83-4.94-2.14-2-2.14-2a6.16 6.16 0 0 0 2.42-.45c.48-.42.62-2.14.76-2.77s.62-.62.37-2.05-2.1-.48-3.79.5Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-wrap-behind,.device-ios i.icon.icon-wrap-infront{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-wrap-behind{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M16.07 8.34c-1.68 1-2.8 3.91-2.8 3.91s-.19.06-.07-.22a.33.33 0 0 0 0-.45l.77-1.9a.45.45 0 0 0 .03-.17.26.26 0 0 0 0-.23.24.24 0 0 0-.14.18.49.49 0 0 0 0 .19l-.77 1.89a.17.17 0 0 0-.11 0 .25.25 0 0 1-.11 0l-.77-1.9a.48.48 0 0 0 0-.19.24.24 0 0 0-.14-.18.26.26 0 0 0 0 .23.45.45 0 0 0 .1.17l.78 1.91a.32.32 0 0 0-.05.44c.12.29-.07.22-.07.22s-1.12-2.92-2.8-3.9-3.52-2-3.78-.53.22 1.42.36 2 .28 2.34.76 2.75a6.1 6.1 0 0 0 2.41.44s-2.15 1.24-2.13 2 .62 4.85 1.82 4.91 2-1.86 2.32-2.78a27 27 0 0 1 .92-2.84 8.43 8.43 0 0 1 .14 1.51c.11.3.25.26.25.26s.14 0 .25-.26a8.43 8.43 0 0 1 .14-1.51 26.83 26.83 0 0 1 .92 2.84c.34.92 1.12 2.84 2.32 2.78s1.79-4.17 1.82-4.91-2.13-2-2.13-2a6.1 6.1 0 0 0 2.41-.44c.48-.41.62-2.13.76-2.75s.62-.62.36-2-2.09-.45-3.77.53Z' opacity='.3'/%3E%3Cpath d='M0 1h26v1H0zM0 4h26v1H0zM0 25h26v1H0zM0 22h26v1H0zM0 7h26v1H0zM0 10h26v1H0zM0 13h26v1H0zM0 16h26v1H0zM0 19h26v1H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-wrap-table-inline{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h26v1H1zM1 4h26v1H1zM1 25h26v1H1zM1 22h26v1H1zM7 7h14v13H7z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-wrap-table-flow,.device-ios i.icon.icon-wrap-table-inline{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-wrap-table-flow{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h26v1H1zM1 4h26v1H1zM1 25h26v1H1zM1 22h26v1H1zM1 7h4v1H1zM1 10h4v1H1zM1 13h4v1H1zM1 16h4v1H1zM1 19h4v1H1zM23 19h4v1h-4zM23 16h4v1h-4zM23 13h4v1h-4zM23 10h4v1h-4zM23 7h4v1h-4zM7 7h14v13H7z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-block-align-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h26v1H1zM1 4h26v1H1zM1 25h26v1H1zM1 22h26v1H1zM1 8h12v11H1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-block-align-center,.device-ios i.icon.icon-block-align-left{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-block-align-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M0 1h26v1H0zM0 4h26v1H0zM0 25h26v1H0zM0 22h26v1H0zM7 8.08h12V19H7z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-block-align-right{height:28px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h26v1H1zM1 4h26v1H1zM1 25h26v1H1zM1 22h26v1H1zM15 8h12v11H15z'/%3E%3C/svg%3E");width:28px}.device-ios i.icon.icon-block-align-right,.device-ios i.icon.icon-link{background-color:var(--brand-word);-webkit-mask-repeat:round;-webkit-mask-size:contain}.device-ios i.icon.icon-link{height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M12.4 9.8s-2.1-.1-3.8 1.2c-2.8 2-3.3 4.3-3.3 4.3s1.6-1.7 3.5-2.5c1.7-.7 3.7-.4 3.7-.4v1.9l4.8-3.3-4.8-3.3v2.1zM11 1C5.5 1 1 5.5 1 11s4.5 10 10 10 10-4.5 10-10S16.5 1 11 1zm0 19c-5 0-9-4.1-9-9 0-5 4-9 9-9s9 4.1 9 9c0 5-4 9-9 9z'/%3E%3C/svg%3E");width:22px}.device-ios i.icon.icon-image-library{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cdefs%3E%3ClinearGradient id='a' x1='11.08' x2='11.08' y1='10.26' y2='1.26' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23f3e916'/%3E%3Cstop offset='1' stop-color='%23f89d34'/%3E%3C/linearGradient%3E%3ClinearGradient id='b' x1='11.08' x2='11.08' y1='20.44' y2='11.88' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%235eb6e8'/%3E%3Cstop offset='1' stop-color='%23958cc3'/%3E%3C/linearGradient%3E%3ClinearGradient id='c' x1='1.46' x2='10.46' y1='11.05' y2='11.05' gradientTransform='rotate(90 5.955 11.045)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23cc8dba'/%3E%3Cstop offset='1' stop-color='%23f86867'/%3E%3C/linearGradient%3E%3ClinearGradient id='d' x1='11.73' x2='20.73' y1='11.05' y2='11.05' gradientTransform='rotate(90 16.23 11.05)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%236ac07f'/%3E%3Cstop offset='1' stop-color='%23c5da3d'/%3E%3C/linearGradient%3E%3ClinearGradient id='e' x1='11.74' x2='17.52' y1='10.42' y2='4.63' gradientTransform='rotate(135 14.625 7.528)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23c5da3d'/%3E%3Cstop offset='1' stop-color='%23f3e916'/%3E%3C/linearGradient%3E%3ClinearGradient id='f' x1='4.7' x2='10.48' y1='17.49' y2='11.71' gradientTransform='rotate(135 7.55 14.638)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%239595c3'/%3E%3Cstop offset='1' stop-color='%23cc8dba'/%3E%3C/linearGradient%3E%3ClinearGradient id='g' x1='4.69' x2='10.47' y1='4.64' y2='10.42' gradientTransform='rotate(45 7.572 7.527)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23f86867'/%3E%3Cstop offset='1' stop-color='%23f89d34'/%3E%3C/linearGradient%3E%3ClinearGradient id='h' x1='11.77' x2='17.55' y1='11.78' y2='17.56' gradientTransform='rotate(45 14.618 14.635)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%235ec0e8'/%3E%3Cstop offset='1' stop-color='%236ac07f'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg data-name='Слой 1' style='isolation:isolate'%3E%3Crect width='22' height='22' x='.09' y='.01' rx='4' ry='4' style='opacity:.2'/%3E%3Crect width='21.04' height='21.04' x='.57' y='.49' rx='3.6' ry='3.6' style='fill:%23fff'/%3E%3Crect width='5.5' height='9' x='8.33' y='1.26' rx='2.5' ry='2.5' style='fill:url(%23a);mix-blend-mode:multiply'/%3E%3Crect width='5.5' height='9' x='8.33' y='11.76' rx='2.5' ry='2.5' style='fill:url(%23b)'/%3E%3Crect width='5.5' height='9' x='3.21' y='6.55' rx='2.5' ry='2.5' style='fill:url(%23c);mix-blend-mode:multiply' transform='rotate(-90 5.955 11.045)'/%3E%3Crect width='5.5' height='9' x='13.48' y='6.55' rx='2.5' ry='2.5' style='fill:url(%23d);mix-blend-mode:multiply' transform='rotate(-90 16.23 11.05)'/%3E%3Crect width='5.5' height='9' x='11.87' y='3.03' rx='2.5' ry='2.5' style='fill:url(%23e);mix-blend-mode:multiply' transform='rotate(-135 14.623 7.527)'/%3E%3Crect width='5.5' height='9' x='4.8' y='10.14' rx='2.5' ry='2.5' style='fill:url(%23f);mix-blend-mode:multiply' transform='rotate(-135 7.552 14.639)'/%3E%3Crect width='5.5' height='9' x='4.83' y='3.03' rx='2.5' ry='2.5' style='fill:url(%23g);mix-blend-mode:multiply' transform='rotate(-45 7.576 7.522)'/%3E%3Crect width='5.5' height='9' x='11.87' y='10.14' rx='2.5' ry='2.5' style='fill:url(%23h);mix-blend-mode:multiply' transform='rotate(-45 14.625 14.642)'/%3E%3C/g%3E%3C/svg%3E");height:22px;width:22px}.device-ios i.icon.icon-add-table{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-segment)' d='M4 5.6h7.2v3.2H4V5.6ZM12.8 5.6H20v3.2h-7.2V5.6ZM4 10.4h7.2v3.2H4v-3.2ZM12.8 10.4H20v3.2h-7.2v-3.2Z'/%3E%3Cpath fill='var(--brand-word)' d='M4 15.2h7.2v3.2H4v-3.2Z'/%3E%3Cpath fill='var(--toolbar-segment)' d='M12.8 15.2H20v3.2h-7.2v-3.2Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-shape,.device-ios i.icon.icon-add-table{background-color:var(--toolbar-segment);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-add-shape{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cellipse cx='15.333' cy='14.4' fill='var(--toolbar-segment)' rx='5.667' ry='5.6'/%3E%3Cpath fill='var(--toolbar-segment)' fill-rule='evenodd' d='M5 4.8a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h4.328a6.317 6.317 0 0 1-.47-2.4c0-3.534 2.899-6.4 6.475-6.4.56 0 1.102.07 1.62.202V5.8a1 1 0 0 0-1-1H5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-image{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-segment)' fill-rule='evenodd' d='m5.792 16.667 3.083-3.5 2.25 2.333L14.21 12l4 4.667H5.792Zm13.667 1.859c.361-.316.542-.68.542-1.094V6.568c0-.413-.18-.778-.542-1.094A1.842 1.842 0 0 0 18.21 5H5.792c-.472 0-.89.158-1.25.474C4.18 5.79 4 6.154 4 6.568v10.864c0 .414.18.778.542 1.094.36.316.778.474 1.25.474h12.417c.472 0 .89-.158 1.25-.474ZM8.8 11.222c.884 0 1.6-.696 1.6-1.555 0-.86-.716-1.556-1.6-1.556-.883 0-1.6.697-1.6 1.556 0 .859.717 1.555 1.6 1.555Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-image,.device-ios i.icon.icon-add-other{background-color:var(--toolbar-segment);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-add-other{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M7 18a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm6.5 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm5 1.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-contents{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='var(--brand-word)' viewBox='0 0 20 13'%3E%3Cpath fill-rule='evenodd' d='M17 0H0v1h17V0Zm-5.1 4H0v1h11.9V4ZM0 8h17v1H0V8Zm15 4H0v1h15v-1ZM20 0h-1v1h1V0Zm0 4h-1v1h1V4Zm-1 4h1v1h-1V8Zm1 4h-1v1h1v-1Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-pagenumber{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M8.2 1 2 7.6V22h17V1H8.2zM8 2.8V8H3.1L8 2.8zM18 21H3V9h6V2h9v19zm-6-2h1v-4h-.7c0 .2-.1-.1-.1 0-.1.1-.2 0-.3 0-.1.1-.2.1-.4.1h-.4v.9h.9v3zm3.3-1.7c-.3.6-.2 1.1-.3 1.7h.9c0-.3 0-.6.1-.9.1-.3.1-.6.3-.9.1-.3.3-.6.4-.9.2-.3.1-.3.3-.5V15h-3v1h1.9c-.3.4-.4.7-.6 1.3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-pagenumber,.device-ios i.icon.icon-sectionbreak{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-sectionbreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M20 14V2H3v12H2V1h19v13h-1zM5 14v1H4v-1h1zm2 0v1H6v-1h1zm2 0v1H8v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm1 0h1v1h-1v-1zM3 21h17v-6h1v7H2v-7h1v6z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-footnote{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M22 8.111h-1.082V5.154l.01-.486.018-.532c-.18.18-.305.297-.375.353l-.588.472-.522-.65L21.11 3H22v5.111ZM10.336 18.851l-1.354-3.454H4.62L3.28 18.85H2L6.302 7.945h1.064l4.28 10.906h-1.31Zm-1.749-4.59-1.265-3.366a18.015 18.015 0 0 1-.506-1.568c-.11.476-.266.998-.47 1.568l-1.28 3.365h3.521ZM16.142 10.575c1.072 0 1.903.367 2.494 1.1.595.728.893 1.76.893 3.098 0 1.337-.3 2.377-.9 3.12-.596.738-1.425 1.107-2.487 1.107a3.602 3.602 0 0 1-1.458-.29 2.773 2.773 0 0 1-1.102-.906h-.09l-.26 1.047h-.885V7.291h1.235V10.1c0 .629-.02 1.193-.06 1.694h.06c.576-.813 1.43-1.219 2.56-1.219Zm-.178 1.033c-.844 0-1.452.243-1.824.728-.372.48-.558 1.293-.558 2.437s.191 1.964.573 2.459c.382.49.995.735 1.839.735.759 0 1.325-.274 1.697-.824.372-.555.558-1.35.558-2.385 0-1.06-.186-1.85-.558-2.37-.372-.52-.948-.78-1.727-.78Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-pagebreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M8 14v1h1v-1H8zm-2 0v1h1v-1H6zm12 7H3v-6H2v7h17v-7h-1v6zM4 14v1h1v-1H4zm10 0v1h1v-1h-1zm-4 0v1h1v-1h-1zM8.2 1 2 7.6V14h1V9h6V2h9v12h1V1H8.2zM8 8H3.1L8 2.8V8zm4 6v1h1v-1h-1zm4 0v1h1v-1h-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-pagebreak,.device-ios i.icon.icon-stringbreak{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-stringbreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M18 12H5.1L9 15.9l-.7.7-4.5-4.5-.6-.6.6-.6 4.5-4.5.7.7L5.1 11H18V5h1v7h-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-users{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M16 7c0 2.341-.584 4.135-1.386 5.312C13.807 13.497 12.834 14 12 14c-.834 0-1.807-.503-2.614-1.688C8.584 11.135 8 9.341 8 7c0-2.385 1.979-4 4-4s4 1.615 4 4Zm-.81 6.22C14.286 14.375 13.144 15 12 15s-2.287-.625-3.19-1.78c-1.405.564-2.597 1.129-3.54 1.702C3.553 15.967 3 16.832 3 17.5c0 .755.426 1.588 1.823 2.288C6.25 20.503 8.573 21 12 21c3.427 0 5.75-.497 7.177-1.212C20.574 19.088 21 18.255 21 17.5c0-.667-.553-1.533-2.27-2.578-.943-.573-2.135-1.138-3.54-1.702Zm.564-.85C16.514 11.028 17 9.21 17 7c0-3-2.491-5-5-5S7 4 7 7c0 2.21.486 4.028 1.246 5.37C4.39 13.94 2 15.579 2 17.5 2 19.985 5 22 12 22s10-2.015 10-4.5c0-1.921-2.39-3.56-6.246-5.13Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-review,.device-ios i.icon.icon-users{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-review{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M3 3h17v4h-1V4H4v16h15v-6h1v7H3V3Z'/%3E%3Cpath fill='var(--brand-word)' d='M16 8H7V7h9v1ZM7 10h9V9H7v1ZM14 12H7v-1h7v1ZM7 14h5v-1H7v1ZM11 16H7v-1h4v1ZM13 15.5V17h1.5l8-8L21 7.5l-8 8Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-review-changes{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M19 10H5V9h14v1ZM19 13H5v-1h14v1ZM19 16H5v-1h14v1Z'/%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M21 6H3v13h18V6ZM3 5H2v15h20V5H3Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-accept-changes,.device-ios i.icon.icon-review-changes{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-accept-changes{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%2340865C' d='m12 20-3-3-1 1 4 4 10-10-1-1-9 9Z'/%3E%3Cpath fill='var(--brand-word)' d='M19 9H5V8h14v1ZM16 12H5v-1h11v1ZM14 15H5v-1h9v1Z'/%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M3 5h18v4h1V4H2v16h4v-1H3V5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-reject-changes{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23AA5252' d='m13 11-1 1 4 4-4 4 1 1 4-4 4 4 1-1-4-4 4-4-1-1-4 4-4-4Z'/%3E%3Cpath fill='var(--brand-word)' d='M19 9H5V8h14v1ZM10 12H5v-1h5v1ZM10 15H5v-1h5v1Z'/%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M3 5h18v4h1V4H2v16h8v-1H3V5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-accept,.device-ios i.icon.icon-reject-changes{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-accept{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='m9 18-7-7-1 1 8 8L23 6l-1-1L9 18Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-reject{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M5 4 4 5l7 7-7 7 1 1 7-7 7 7 1-1-7-7 7-7-1-1-7 7-7-7Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-next-change,.device-ios i.icon.icon-reject{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-next-change{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill='var(--brand-word)' d='M16 12 6.5 22l1 1L18 12 7.5 1l-1 1L16 12Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='none' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}.device-ios i.icon.icon-prev-change{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill='var(--brand-word)' d='m8 12 9.5-10-1-1L6 12l10.5 11 1-1L8 12Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='none' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}.device-ios i.icon.icon-goto,.device-ios i.icon.icon-prev-change{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-goto{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M21 3H3v18h18V3ZM3 2H2v20h20V2H3Zm12.293 6H9V7h8v8h-1V8.707l-8.646 8.647-.708-.708L15.293 8Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-edit-mode{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M21.5 6.3 23 4.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5 2.8 2.8Zm-1.2 0L7.1 19.4l-1.5-1.5L18.8 4.8l-.7-.7L4.5 17.7 4 21H1v1h22v-1H4l3.3-.5L20.9 6.9l-.6-.6Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-edit-mode,.device-ios i.icon.icon-mobile-view{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-mobile-view{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M7 3h10a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1ZM5 4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V4Zm4.5 15a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-standard-view{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M7 1v2.5a.5.5 0 0 1-.5.5H4V3h2V1h1Zm10 2.5V1h1v2h2v1h-2.5a.5.5 0 0 1-.5-.5Zm0 17V23h1v-2h2v-1h-2.5a.5.5 0 0 0-.5.5Zm-10 0V23H6v-2H4v-1h2.5a.5.5 0 0 1 .5.5ZM16 6H8a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1ZM8 5a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2H8Zm1 3.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5Zm.5 2.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5ZM9 14.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-menu-comment{background-color:var(--text-tertiary);height:30px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath fill='%23A3A3A3' fill-rule='evenodd' d='M10 15a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.714a1.714 1.714 0 1 0 0-3.428 1.714 1.714 0 0 0 0 3.428ZM18 15a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.714a1.714 1.714 0 1 0 0-3.428 1.714 1.714 0 0 0 0 3.428ZM26 15a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.714a1.714 1.714 0 1 0 0-3.428 1.714 1.714 0 0 0 0 3.428Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:30px}.device-ios i.icon.icon-resolve-comment{background-color:var(--brand-word);height:30px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath fill='%23A3A3A3' fill-rule='evenodd' d='M11.62 20.856a.5.5 0 0 0 .738-.021L22.516 9.058a.75.75 0 1 0-1.138-.98l-9.023 10.509a.5.5 0 0 1-.736.025l-3.513-3.575a.755.755 0 0 0-1.082 1.053l4.596 4.765Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:30px}.device-ios i.icon.icon-resolve-comment.check{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath fill='%23fff' d='M0 0h30v30H0V0Z'/%3E%3Cpath fill='%234cd964' fill-rule='evenodd' d='M11.62 20.856a.5.5 0 0 0 .738-.021L22.516 9.058a.75.75 0 1 0-1.138-.98l-9.023 10.509a.5.5 0 0 1-.736.025l-3.513-3.575a.755.755 0 0 0-1.083 1.054l4.597 4.764Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:30px;width:30px}.device-ios i.icon.icon-insert-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M20.154 9.007h-8.308c-1.02 0-1.846.828-1.846 1.848v4.314c0 1.021.827 1.849 1.846 1.849h1.987c.108 0 .212.038.295.107l4.115 3.267c.3.25.757.037.757-.355V17.48c0-.255.207-.462.462-.462h.692c1.02 0 1.846-.828 1.846-1.849v-4.314c0-1.02-.827-1.848-1.846-1.848ZM20 10.008a1 1 0 0 1 1 1.002v4.005a1 1 0 0 1-1 1.002h-1.997L18 18.9v.1l-3.5-2.983H12a1 1 0 0 1-1-1.002V11.01a1 1 0 0 1 1-1h8Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='M14.5 3h-10C3.19 3 2 4.215 2 5.503v6.532c0 1.287 1.19 1.978 2.5 1.978h1c.328 0 .5.179.5.5v3.005c0 .494.614.817 1 .5l4-3.032V13.5l-4 3v-3.488H4.5c-.71 0-1.5-.28-1.5-.977V5.503c0-.698.79-1.502 1.5-1.502h10c.71 0 1.5.804 1.5 1.502v2.503h1V5.503C17 4.215 15.81 3 14.5 3Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-export,.device-ios i.icon.icon-insert-comment{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-export{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill='%2327ABA3' clip-path='url(%23a)'%3E%3Cpath fill-rule='evenodd' d='M4 8h6v1H5v13h15V9h-5V8h6v15H4V8Z' clip-rule='evenodd'/%3E%3Cpath d='M12.999 16h-1V2l-3.6 3.7-.7-.8 4.8-4.9 4.8 4.9-.7.8-3.6-3.7v14Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}.device-ios i.icon.icon-prev-field{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Zm-10 9a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='M16.756 13.884a.5.5 0 0 1-.761.115l-3.662-3.263a.5.5 0 0 0-.666 0L8.005 14a.5.5 0 0 1-.76-.115l-.031-.051a.5.5 0 0 1 .094-.63l4.358-3.904a.5.5 0 0 1 .668 0l4.358 3.903a.5.5 0 0 1 .094.63l-.03.052Z'/%3E%3Cpath fill-rule='evenodd' stroke='var(--brand-word)' d='M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Zm-10 9a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z' clip-rule='evenodd'/%3E%3Cpath stroke='var(--brand-word)' d='M16.756 13.884a.5.5 0 0 1-.761.115l-3.662-3.263a.5.5 0 0 0-.666 0L8.005 14a.5.5 0 0 1-.76-.115l-.031-.051a.5.5 0 0 1 .094-.63l4.358-3.904a.5.5 0 0 1 .668 0l4.358 3.903a.5.5 0 0 1 .094.63l-.03.052Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-next-field,.device-ios i.icon.icon-prev-field{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-next-field{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M2 12C2 6.477 6.477 2 12 2s10 4.477 10 10-4.477 10-10 10S2 17.523 2 12Zm10-9a9 9 0 1 0 0 18 9 9 0 0 0 0-18Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='M7.245 10.116a.5.5 0 0 1 .76-.115l3.662 3.263a.5.5 0 0 0 .666 0L15.995 10a.5.5 0 0 1 .76.115l.031.051a.5.5 0 0 1-.094.63l-4.358 3.904a.5.5 0 0 1-.668 0l-4.358-3.903a.5.5 0 0 1-.094-.63l.03-.052Z'/%3E%3Cpath fill-rule='evenodd' stroke='var(--brand-word)' d='M2 12C2 6.477 6.477 2 12 2s10 4.477 10 10-4.477 10-10 10S2 17.523 2 12Zm10-9a9 9 0 1 0 0 18 9 9 0 0 0 0-18Z' clip-rule='evenodd'/%3E%3Cpath stroke='var(--brand-word)' d='M7.245 10.116a.5.5 0 0 1 .76-.115l3.662 3.263a.5.5 0 0 0 .666 0L15.995 10a.5.5 0 0 1 .76.115l.031.051a.5.5 0 0 1-.094.63l-4.358 3.904a.5.5 0 0 1-.668 0l-4.358-3.903a.5.5 0 0 1-.094-.63l.03-.052Z'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-table{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23fff' d='M4 5.6h7.2v3.2H4V5.6ZM12.8 5.6H20v3.2h-7.2V5.6ZM4 10.4h7.2v3.2H4v-3.2ZM12.8 10.4H20v3.2h-7.2v-3.2ZM4 15.2h7.2v3.2H4v-3.2ZM12.8 15.2H20v3.2h-7.2v-3.2Z'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-shape,.device-ios .tab-link-active i.icon.icon-add-table{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios .tab-link-active i.icon.icon-add-shape{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cellipse cx='15.333' cy='14.4' fill='%23fff' rx='5.667' ry='5.6'/%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M5 4.8a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h4.328a6.317 6.317 0 0 1-.47-2.4c0-3.534 2.899-6.4 6.475-6.4.56 0 1.102.07 1.62.202V5.8a1 1 0 0 0-1-1H5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-image{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='m5.792 16.667 3.083-3.5 2.25 2.333L14.21 12l4 4.667H5.792Zm13.667 1.859c.361-.316.542-.68.542-1.094V6.568c0-.413-.18-.778-.542-1.094A1.842 1.842 0 0 0 18.21 5H5.792c-.472 0-.89.158-1.25.474C4.18 5.79 4 6.154 4 6.568v10.864c0 .414.18.778.542 1.094.36.316.778.474 1.25.474h12.417c.472 0 .89-.158 1.25-.474ZM8.8 11.222c.884 0 1.6-.696 1.6-1.555 0-.86-.716-1.556-1.6-1.556-.883 0-1.6.697-1.6 1.556 0 .859.717 1.555 1.6 1.555Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-image,.device-ios .tab-link-active i.icon.icon-add-other{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios .tab-link-active i.icon.icon-add-other{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M7 18a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm6.5 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm5 1.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-undo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M20 17v-2c0-1.7-1.3-3-3-3H3.7l3.4 3.4-1.4 1.4-5.2-5.2L0 11l.5-.6 5.2-5.2 1.4 1.4L3.7 10H17c2.8 0 5 2.2 5 5v2h-2z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-redo,.device-android .navbar i.icon.icon-undo{background-color:var(--toolbar-icons);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-redo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M0 17v-2c0-2.8 2.2-5 5-5h13.3l-3.4-3.4 1.4-1.4 5.2 5.2.5.6-.5.6-5.2 5.2-1.4-1.4 3.4-3.4H5c-1.7 0-3 1.3-3 3v2H0z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-edit-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cg fill='%23fff'%3E%3Cpath fill-rule='evenodd' d='M2.5 15 8 1h2l4.415 11.257-1.601 1.601L12.12 12H5.87l-1.12 3zM9 3.67 6.62 10h4.76z' clip-rule='evenodd'/%3E%3Cpath d='M10 19.5V22h2.5l7.372-7.372-2.5-2.5zm11.805-6.805c.26-.26.26-.68 0-.94l-1.56-1.56a.664.664 0 0 0-.94 0l-1.22 1.22 2.5 2.5z'/%3E%3C/g%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-edit-settings,.device-android .navbar i.icon.icon-plus{background-color:var(--toolbar-icons);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-plus{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M21 12h-9v9h-2v-9H1v-2h9V1h2v9h9v2z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-settings{background-color:var(--toolbar-icons);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M12.1 2H9.9c-.3 0-.5.2-.6.5l-.5 2.4c0 .2-.2.3-.3.3s-.1 0-.2-.1L6.2 3.8c-.1-.1-.2-.1-.4-.1-.1 0-.3 0-.4.1L3.8 5.4c-.1.2-.2.5 0 .8l1.3 2.1c.1.2.1.4-.2.5l-2.4.5c-.3.1-.5.3-.5.6v2.2c0 .3.2.5.5.6l2.4.5c.3.1.4.3.2.5l-1.3 2.1c-.2.2-.1.6.1.8l1.6 1.6c.1.1.3.2.4.2s.2 0 .3-.1L8.3 17c.1-.1.1-.1.2-.1s.3.1.3.3l.5 2.3c.1.3.3.5.6.5h2.2c.3 0 .5-.2.6-.5l.5-2.4c0-.2.1-.3.3-.3.1 0 .1 0 .2.1l2.1 1.3c.1.1.2.1.3.1.2 0 .3-.1.4-.2l1.6-1.6c.2-.2.2-.5.1-.8l-1.3-2.1c-.2-.2-.1-.5.2-.5l2.4-.5c.3-.1.5-.3.5-.6V9.8c0-.3-.2-.5-.5-.6l-2.4-.5c-.3-.1-.4-.3-.2-.5l1.3-2.1c.2-.2.1-.6-.1-.8l-1.6-1.6c-.1-.1-.3-.2-.4-.2s-.2 0-.3.1l-2.1 1.3c-.1.1-.1.1-.2.1s-.3-.1-.3-.3l-.5-2.2c-.1-.3-.3-.5-.6-.5zM11 14.5c-1.9 0-3.5-1.6-3.5-3.5S9.1 7.5 11 7.5s3.5 1.6 3.5 3.5-1.6 3.5-3.5 3.5z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-prev{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M5.1 10.9 13.9 2 16 4.1l-6.8 7 6.8 6.8-2.1 2.1-8.8-8.8-.1-.1z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-next,.device-android .navbar i.icon.icon-prev{background-color:var(--toolbar-icons);height:20px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:20px}.device-android .navbar i.icon.icon-next{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M16.9 10.9 8.1 2 6 4.1l6.8 7L6 17.9 8.1 20l8.8-8.8.1-.1z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-expand-down{background-color:var(--fill-white);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cpath d='M10.9 16.9 2 8.1 4.1 6l7 6.8L17.9 6 20 8.1l-8.8 8.8-.1.1z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-add-table{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-tab-normal)' d='M2 4h9v4H2V4ZM13 4h9v4h-9V4ZM2 10h9v4H2v-4ZM13 10h9v4h-9v-4ZM2 16h9v4H2v-4ZM13 16h9v4h-9v-4Z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-add-shape,.device-android .navbar i.icon.icon-add-table{background-color:var(--toolbar-tab-normal);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-add-shape{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Ccircle cx='16' cy='15' r='7' fill='var(--toolbar-tab-normal)'/%3E%3Cpath fill='var(--toolbar-tab-normal)' fill-rule='evenodd' d='M3 3a1 1 0 0 0-1 1v13a1 1 0 0 0 1 1h5.582A8 8 0 0 1 18 7.252V4a1 1 0 0 0-1-1H3Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-add-image{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill='var(--toolbar-tab-normal)' fill-rule='evenodd' d='m4.24 18 3.854-4.5 2.812 3L14.76 12l5 6H4.24Zm17.083 2.39c.451-.406.677-.874.677-1.406V5.016c0-.532-.226-1-.677-1.407A2.266 2.266 0 0 0 19.76 3H4.24c-.59 0-1.112.203-1.563.61C2.226 4.015 2 4.483 2 5.015v13.968c0 .532.226 1 .677 1.407.451.406.972.609 1.563.609h15.52c.59 0 1.111-.203 1.563-.61ZM8 11a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z' clip-rule='evenodd'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='transparent' d='M0 0h24v24H0V0Z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-add-image,.device-android .navbar i.icon.icon-add-other{background-color:var(--toolbar-tab-normal);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-add-other{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-tab-normal)' fill-rule='evenodd' d='M7 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm8 0a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm5 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-mobile-view{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='M7 3h10a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1ZM5 4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V4Zm4.5 15a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-mobile-view,.device-android .navbar i.icon.icon-standard-view{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-standard-view{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='M7 1v2.5a.5.5 0 0 1-.5.5H4V3h2V1h1Zm10 2.5V1h1v2h2v1h-2.5a.5.5 0 0 1-.5-.5Zm0 17V23h1v-2h2v-1h-2.5a.5.5 0 0 0-.5.5Zm-10 0V23H6v-2H4v-1h2.5a.5.5 0 0 1 .5.5ZM16 6H8a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1ZM8 5a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2H8Zm1 3.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5Zm.5 2.5a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5ZM9 14.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-check{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-check,.device-android .navbar i.icon.icon-prev-field{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-prev-field{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Zm-10 9a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--toolbar-icons)' d='M16.756 13.884a.5.5 0 0 1-.761.115l-3.662-3.263a.5.5 0 0 0-.666 0L8.005 14a.5.5 0 0 1-.76-.115l-.031-.051a.5.5 0 0 1 .094-.63l4.358-3.904a.5.5 0 0 1 .668 0l4.358 3.903a.5.5 0 0 1 .094.63l-.03.052Z'/%3E%3Cpath fill-rule='evenodd' stroke='var(--toolbar-icons)' d='M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Zm-10 9a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z' clip-rule='evenodd'/%3E%3Cpath stroke='var(--toolbar-icons)' d='M16.756 13.884a.5.5 0 0 1-.761.115l-3.662-3.263a.5.5 0 0 0-.666 0L8.005 14a.5.5 0 0 1-.76-.115l-.031-.051a.5.5 0 0 1 .094-.63l4.358-3.904a.5.5 0 0 1 .668 0l4.358 3.903a.5.5 0 0 1 .094.63l-.03.052Z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-next-field{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='M2 12C2 6.477 6.477 2 12 2s10 4.477 10 10-4.477 10-10 10S2 17.523 2 12Zm10-9a9 9 0 1 0 0 18 9 9 0 0 0 0-18Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--toolbar-icons)' d='M7.245 10.116a.5.5 0 0 1 .76-.115l3.662 3.263a.5.5 0 0 0 .666 0L15.995 10a.5.5 0 0 1 .76.115l.031.051a.5.5 0 0 1-.094.63l-4.358 3.904a.5.5 0 0 1-.668 0l-4.358-3.903a.5.5 0 0 1-.094-.63l.03-.052Z'/%3E%3Cpath fill-rule='evenodd' stroke='var(--toolbar-icons)' d='M2 12C2 6.477 6.477 2 12 2s10 4.477 10 10-4.477 10-10 10S2 17.523 2 12Zm10-9a9 9 0 1 0 0 18 9 9 0 0 0 0-18Z' clip-rule='evenodd'/%3E%3Cpath stroke='var(--toolbar-icons)' d='M7.245 10.116a.5.5 0 0 1 .76-.115l3.662 3.263a.5.5 0 0 0 .666 0L15.995 10a.5.5 0 0 1 .76.115l.031.051a.5.5 0 0 1-.094.63l-4.358 3.904a.5.5 0 0 1-.668 0l-4.358-3.903a.5.5 0 0 1-.094-.63l.03-.052Z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-export,.device-android .navbar i.icon.icon-next-field{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-export{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill='%2327ABA3' clip-path='url(%23a)'%3E%3Cpath fill-rule='evenodd' d='M4 8h6v1H5v13h15V9h-5V8h6v15H4V8Z' clip-rule='evenodd'/%3E%3Cpath d='M12.999 16h-1V2l-3.6 3.7-.7-.8 4.8-4.9 4.8 4.9-.7.8-3.6-3.7v14Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-return{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='m11.5 7.793 2.854 2.853-.707.708L12 9.707V16h2.5v1H11V9.707l-1.646 1.647-.708-.708L11.5 7.793Z'/%3E%3Cpath fill-rule='evenodd' d='M1 4a1 1 0 0 1 1-1h7.75l2 2H22a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4Zm1 16V4h7.25l2 2H22v14H2Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-return,.device-android .navbar i.icon.icon-save-form{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-save-form{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M3 5a2 2 0 0 1 2-2h10.379a2 2 0 0 1 1.414.586l3.621 3.621A2 2 0 0 1 21 8.621V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5Zm2-1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h1v-6a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v6h1a1 1 0 0 0 1-1V8.621a1 1 0 0 0-.293-.707L15.793 4H15v3a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4H5Zm8 0v3h1V4h-1Zm4 16v-6a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v6h10Zm-2-5a.5.5 0 0 1 0 1H9a.5.5 0 0 1 0-1h6Zm-2.5 2.5a.5.5 0 0 1-.5.5H9a.5.5 0 0 1 0-1h3a.5.5 0 0 1 .5.5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-plus{background-color:var(--fill-white);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--fill-white)' viewBox='0 0 22 22'%3E%3Cpath d='M21 12h-9v9h-2v-9H1v-2h9V1h2v9h9v2z'/%3E%3C/svg%3E")}.device-android i.icon.icon-check,.device-android i.icon.icon-plus{height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-check{background-color:var(--brand-word);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-expand-down{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M10.9 16.9 2 8.1 4.1 6l7 6.8L17.9 6 20 8.1l-8.8 8.8-.1.1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-expand-down,.device-android i.icon.icon-expand-up{background-color:var(--brand-word);height:17px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:17px}.device-android i.icon.icon-expand-up{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cpath d='M10.9 5.1 2 13.9 4.1 16l7-6.8 6.8 6.8 2.1-2.1-8.8-8.8-.1-.1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-spellcheck{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cg fill-rule='evenodd' clip-rule='evenodd'%3E%3Cpath d='M8 1 3 15h1.2l1.777-5h5.046l.654 1.84a6.03 6.03 0 0 1 .916-.78L9 1H8Zm.5 1.9L10.668 9H6.332L8.5 2.9ZM16 21a5 5 0 1 0 0-10 5 5 0 0 0 0 10Zm-.646-2.646 4-4-.708-.708L15 17.293l-1.646-1.647-.708.708 2 2 .354.353.354-.353Z'/%3E%3C/g%3E%3C/svg%3E")}.device-android i.icon.icon-reader,.device-android i.icon.icon-spellcheck{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-reader{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M17 21H1V9h6V2h10v5h1V1H6.2L0 7.6V22h18v-3h-1v2zM6 2.8V8H1.1L6 2.8zM13 8c-5.1 0-9 5-9 5s4.1 5 9 5c5 0 9-5 9-5s-4-5-9-5zm-4.3 7.5C6.8 14.4 6.4 13 6.4 13s.4-1.5 2.4-2.6C8.3 11.2 8 12 8 13c0 .9.3 1.8.7 2.5zm4.3 1.2c-2.1 0-3.7-1.7-3.7-3.7 0-2.1 1.7-3.7 3.7-3.7 2.1 0 3.7 1.7 3.7 3.7 0 2.1-1.6 3.7-3.7 3.7zm4.3-1.2c.4-.7.7-1.6.7-2.5 0-1-.3-1.8-.7-2.6 2 1.1 3.4 2.6 3.4 2.6s-1.5 1.4-3.4 2.5zM13 11.7c-.7 0-1.3.6-1.3 1.3s.6 1.3 1.3 1.3 1.3-.6 1.3-1.3-.6-1.3-1.3-1.3z'/%3E%3C/svg%3E")}.device-android i.icon.icon-doc-setup{height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='-4 6 22 22'%3E%3Cpath d='M15 27H-1V15h6V8h10v19zm1-20H4.2L-2 13.6V28h18V7zM4 8.8V14H-.9L4 8.8z'/%3E%3C/svg%3E");width:22px}.device-android i.icon.icon-app-settings,.device-android i.icon.icon-doc-setup{background-color:var(--brand-word);-webkit-mask-repeat:round;-webkit-mask-size:contain}.device-android i.icon.icon-app-settings{height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M7 14h9a4 4 0 0 1 0 8H7a4 4 0 0 1 0-8Zm9-1a5 5 0 0 1 0 10H7a5 5 0 0 1 0-10h9Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M16 20a2 2 0 1 1 0-4 2 2 0 0 1 0 4Zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6ZM16 3H7a4 4 0 1 0 0 8h9a4 4 0 0 0 0-8ZM7 2a5 5 0 0 0 0 10h9a5 5 0 0 0 0-10H7Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M7 9a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm0 1a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z' clip-rule='evenodd'/%3E%3C/svg%3E");width:24px}.device-android i.icon.icon-download{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M12 0h-1v14l-3.6-3.7-.7.8 4.8 4.9 4.8-4.9-.7-.8L12 14V0Z'/%3E%3Cpath d='M14 5v1h5v14H4V6h5V5H3v16h17V5h-6Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-download,.device-android i.icon.icon-print{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-print{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath fill-rule='evenodd' d='M5 1h12v5h4v11h-4v4H5v-4H1V6h4V1Zm1 5h10V2H6v4ZM5 16v-3H2v3h3Zm-3-4h18V7H2v5Zm18 1h-3v3h3v-3Zm-4 0H6v7h10v-7Zm-2 3H8v-1h6v1Zm0 2H8v-1h6v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-contents{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M2 12.983v-1.966h14.993v1.966H2Zm0 5.988v-1.965h14.993v1.965H2ZM2 5.029h14.993v1.965H2V5.03Zm17.005 5.989v-1.03H22v.936l-1.825 2.059H22v1.029h-2.995v-.936l1.778-2.059h-1.778Zm.983-2.995V5.03h-.983V4h1.965v4.023h-.982Zm-.983 8.983v-1.03H22V20h-2.995v-1.03h1.965v-.467h-.982v-1.03h.982v-.467h-1.965Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-navigation{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M16 4H2v1h14V4ZM19 9H5v1h14V9ZM23 14v1H9v-1h14ZM16 20v-1H2v1h14Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-feedback,.device-android i.icon.icon-navigation{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-feedback{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill-rule='evenodd' d='M21 6H3v12h18V6ZM2 5v14h20V5H2Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m2.666 6.372.668-.744 8.666 7.7 8.666-7.7.668.744-9.334 8.3-9.334-8.3Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m9.376 11.33-6 7-.752-.66 6-7 .752.66ZM15.376 10.67l6 7-.752.66-6-7 .752-.66Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-export{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill='%2327ABA3' clip-path='url(%23a)'%3E%3Cpath fill-rule='evenodd' d='M4 8h6v1H5v13h15V9h-5V8h6v15H4V8Z' clip-rule='evenodd'/%3E%3Cpath d='M12.999 16h-1V2l-3.6 3.7-.7-.8 4.8-4.9 4.8 4.9-.7.8-3.6-3.7v14Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}.device-android i.icon.icon-add-favorites,.device-android i.icon.icon-export{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-add-favorites{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='m12 3.604-2.134 5.13a1.5 1.5 0 0 1-1.265.918l-5.538.444 4.22 3.614a1.5 1.5 0 0 1 .482 1.488L6.476 20.6l4.741-2.895a1.5 1.5 0 0 1 1.564 0l4.741 2.895-1.289-5.403a1.5 1.5 0 0 1 .483-1.488l4.22-3.614-5.538-.444a1.5 1.5 0 0 1-1.265-.919l-2.134-5.13Zm.461-1.494a.5.5 0 0 0-.923 0L8.943 8.35a.5.5 0 0 1-.422.305l-6.736.54a.5.5 0 0 0-.285.879l5.132 4.396a.5.5 0 0 1 .16.495L5.226 21.54a.5.5 0 0 0 .747.542l5.767-3.522a.5.5 0 0 1 .521 0l5.767 3.522a.5.5 0 0 0 .747-.542l-1.568-6.574a.5.5 0 0 1 .161-.495l5.132-4.396a.5.5 0 0 0-.285-.878l-6.736-.54a.5.5 0 0 1-.422-.307l-2.595-6.24Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-clear-fields{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M17.648 4.083a3.783 3.783 0 0 0-5.3 0l-9.25 9.127a3.662 3.662 0 0 0 0 5.228l2.376 2.345.22.217h14.55v-1.479h-6.435l7.094-6.998a3.662 3.662 0 0 0 0-5.229l-3.255-3.211ZM11.69 19.52l5.246-5.176L10.5 7.997l-6.344 6.258a2.197 2.197 0 0 0 0 3.138l2.158 2.128h5.375Zm-.129-12.57 6.435 6.348 1.847-1.822a2.197 2.197 0 0 0 0-3.137l-3.255-3.211a2.27 2.27 0 0 0-3.18 0L11.561 6.95Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-clear-fields,.device-android i.icon.icon-mobile-view{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-mobile-view{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M7 3h10a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1ZM5 4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V4Zm4.5 15a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-edit-mode{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M21.5 6.3 23 4.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5 2.8 2.8Zm-1.2 0L7.1 19.4l-1.5-1.5L18.8 4.8l-.7-.7L4.5 17.7 4 21H1v1h22v-1H4l3.3-.5L20.9 6.9l-.6-.6Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-text-align-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm14 4H1v1h14V7zM1 12h21v-1H1v1zm14 3H1v1h14v-1zM1 20h21v-1H1v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-left,.device-android i.icon.icon-text-align-right{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-text-align-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm7 5h14V7H8v1zm14 3H1v1h21v-1zM8 16h14v-1H8v1zm14 3H1v1h21v-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm3 4v1h14V7H4zm-3 5h21v-1H1v1zm3 3v1h14v-1H4zm-3 5h21v-1H1v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-center,.device-android i.icon.icon-text-align-just{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-text-align-just{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm0 5h21V7H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-de-indent{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 20v-1h21v1H1zm10-5h11v1H11v-1zm0-4h11v1H11v-1zm0-4h11v1H11V7zM6.3 7l.7.7-3.8 3.8L7 15.3l-.7.7L2 11.8l-.2-.3.2-.3L6.3 7zM1 3h21v1H1V3z'/%3E%3C/svg%3E")}.device-android i.icon.icon-de-indent,.device-android i.icon.icon-in-indent{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-in-indent{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M1 20v-1h21v1H1zm11-4H1v-1h11v1zm0-4H1v-1h11v1zm0-4H1V7h11v1zm9 3.2.2.3-.2.3-4.3 4.2-.7-.7 3.8-3.8L16 7.7l.7-.7 4.3 4.2zM22 4H1V3h21v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-add-column-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M15 19H7v-4H0V2h22v17h-7zm0-1h6v-3h-6v3zm0-4h6v-3h-6v3zm-7 4h6v-3H8v3zm0-4h6v-3H8v3zm6-4V7H8v3h6zM8 3v3h6V3H8zm13 0h-6v3h6V3zm-6 4v3h6V7h-6zM3 16h1v2h2v1H4v2H3v-2H1v-1h2v-2z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-add-column-left,.device-android i.icon.icon-table-add-column-right{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-table-add-column-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M0 19V2h22v13h-7v4H0zm7-4H1v3h6v-3zm0-4H1v3h6v-3zm7 4H8v3h6v-3zm0-4H8v3h6v-3zm0-1V7H8v3h6zM8 3v3h6V3H8zM1 6h6V3H1v3zm0 1v3h6V7H1zm18 11h2v1h-2v2h-1v-2h-2v-1h2v-2h1v2z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-add-row-above{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M21 20H0V1h15v6h7v13h-1zM7 8H1v3h6V8zm0 4H1v3h6v-3zm0 4H1v3h6v-3zm1 3h6v-3H8v3zm0-4h6v-3H8v3zm0-4h6V8H8v3zm13-3h-6v3h6V8zm0 4h-6v3h6v-3zm0 4h-6v3h6v-3zM19 6h-1V4h-2V3h2V1h1v2h2v1h-2v2z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-add-row-above,.device-android i.icon.icon-table-add-row-below{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-table-add-row-below{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M22 1v13h-7v6H0V1h22zM7 10H1v3h6v-3zm0-4H1v3h6V6zm0-4H1v3h6V2zm1 3h6V2H8v3zm0 4h6V6H8v3zm0 4h6v-3H8v3zm13-3h-6v3h6v-3zm0-4h-6v3h6V6zm0-4h-6v3h6V2zm-2 15h2v1h-2v2h-1v-2h-2v-1h2v-2h1v2z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-remove-column{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M21 19h-8.6c-.9 1.8-2.7 3-4.9 3s-4-1.2-4.9-3H0V2h22v17h-1zM7.5 12C5 12 3 14 3 16.5S5 21 7.5 21s4.5-2 4.5-4.5S10 12 7.5 12zM14 3H8v3h6V3zm0 4H8v3h6V7zm0 4H8v.1c1.9.2 3.5 1.3 4.4 2.9H14v-3zm0 4h-1.2c.1.5.2 1 .2 1.5s-.1 1-.2 1.5H14v-3zm7-12h-6v3h6V3zm0 4h-6v3h6V7zm0 4h-6v3h6v-3zm0 4h-6v3h6v-3zM9.6 19.3l-2.1-2.1-2.1 2.1-.7-.7 2.1-2.1-2.1-2.1.7-.7 2.1 2.1 2.1-2.1.7.7-2.1 2.1 2.1 2.1-.7.7z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-remove-column,.device-android i.icon.icon-table-remove-row{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-table-remove-row{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 22 22'%3E%3Cpath d='M21 19h-8.6c-.9 1.8-2.7 3-4.9 3s-4-1.2-4.9-3H0V2h22v17h-1zM1 18h1.2c-.1-.5-.2-1-.2-1.5s.1-1 .2-1.5H1v3zM7 3H1v3h6V3zm0 4H1v3h6V7zm.5 5C5 12 3 14 3 16.5S5 21 7.5 21s4.5-2 4.5-4.5S10 12 7.5 12zM14 3H8v3h6V3zm0 4H8v3h6V7zm0 8h-1.2c.1.5.2 1 .2 1.5s-.1 1-.2 1.5H14v-3zm7-12h-6v3h6V3zm0 4h-6v3h6V7zm0 8h-6v3h6v-3zM9.6 19.3l-2.1-2.1-2.1 2.1-.7-.7 2.1-2.1-2.1-2.1.7-.7 2.1 2.1 2.1-2.1.7.7-2.1 2.1 2.1 2.1-.7.7z'/%3E%3C/svg%3E")}.device-android i.icon.icon-create-style{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M18.984 12c0 .544-.44.984-.984.984h-5.016V18a.984.984 0 1 1-1.968 0v-5.016H6a.984.984 0 1 1 0-1.968h5.016V6a.984.984 0 1 1 1.968 0v5.016H18c.544 0 .984.44.984.984Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-table-borders-all{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-all,.device-android i.icon.icon-table-borders-none{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-none{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z' opacity='.3'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-inner{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M26 13H14V1h-1v12H1v1h12v12h1V14h12v-1z'/%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-inner,.device-android i.icon.icon-table-borders-outer{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-outer{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h1v27H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-center,.device-android i.icon.icon-table-borders-left{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M13 0h1v27h-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M26 0h1v27h-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-right,.device-android i.icon.icon-table-borders-top{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h27v1H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 13h27v1H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-bottom,.device-android i.icon.icon-table-borders-middle{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-bottom{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 26h27v1H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-move-backward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h17v17H1z' opacity='.3'/%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-move-backward,.device-android i.icon.icon-move-forward{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-move-forward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z' opacity='.3'/%3E%3Cpath d='M1 1h17v17H1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-move-background,.device-android i.icon.icon-move-mask{background-color:var(--brand-word);height:28px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M8 8h13v13H8z' opacity='.3'/%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-move-foreground{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z' opacity='.3'/%3E%3Cpath d='M8 8h13v13H8z'/%3E%3C/svg%3E")}.device-android i.icon.icon-block-align-left,.device-android i.icon.icon-move-foreground{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-block-align-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h26v1H1zM1 4h26v1H1zM1 25h26v1H1zM1 22h26v1H1zM1 8h12v11H1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-block-align-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M0 1h26v1H0zM0 4h26v1H0zM0 25h26v1H0zM0 22h26v1H0zM7 8.08h12V19H7z'/%3E%3C/svg%3E")}.device-android i.icon.icon-block-align-center,.device-android i.icon.icon-block-align-right{background-color:var(--brand-word);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-block-align-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-word)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h26v1H1zM1 4h26v1H1zM1 25h26v1H1zM1 22h26v1H1zM15 8h12v11H15z'/%3E%3C/svg%3E")}.device-android i.icon.icon-link{height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M17.024 7c1.377 0 2.55.498 3.52 1.495C21.515 9.461 22 10.63 22 12c0 1.37-.485 2.555-1.455 3.552-.97.965-2.144 1.448-3.522 1.448H13v-2h4c.845 0 1.588-.212 2.183-.804.626-.623.817-1.355.817-2.196 0-.841-.19-1.558-.817-2.15-.595-.623-1.314-.85-2.16-.85H13V7h4.023Zm-9.015 5.981V11.02h7.982v1.962H8.009Zm-3.24-3.13C4.176 10.441 4 11.158 4 12s.175 1.573.77 2.196C5.396 14.788 6.155 15 7 15h4.014v2H6.977c-1.378 0-2.551-.483-3.522-1.448C2.485 14.555 2 13.37 2 12c0-1.37.485-2.539 1.455-3.505C4.425 7.498 5.6 7 6.977 7h4.037v2H6.977c-.846 0-1.581.227-2.207.85Z'/%3E%3C/svg%3E");width:22px}.device-android i.icon.icon-image-library,.device-android i.icon.icon-link{background-color:var(--brand-word);-webkit-mask-repeat:round;-webkit-mask-size:contain}.device-android i.icon.icon-image-library{height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M20 5.5H4a.5.5 0 0 0-.5.5v9.582l4.533-3.892a1.25 1.25 0 0 1 1.555-.06l3.985 2.928 2.389-1.88a1.25 1.25 0 0 1 1.631.073l2.907 2.745V6a.5.5 0 0 0-.5-.5Zm.5 12.03-.015.015-3.765-3.556-2.37 1.865a1.25 1.25 0 0 1-1.512.025L8.86 12.957 3.5 17.56V18a.5.5 0 0 0 .5.5h16a.5.5 0 0 0 .5-.5v-.47ZM4 4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H4Zm12.5 5.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z' clip-rule='evenodd'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='transparent' d='M0 0h24v24H0V0Z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");width:24px}.device-android i.icon.icon-pagenumber{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M18 4H6v16.028L18 20V4ZM4 4.5A2.5 2.5 0 0 1 6.5 2H18c.53 0 .986.203 1.392.61.374.376.608.858.608 1.39v16a2 2 0 0 1-2 2H6c-.53 0-.986-.188-1.392-.563A2.012 2.012 0 0 1 4 19.994V4.5ZM11.57 16h-1.386v-3.742h-.027L9 13.068v-1.23L10.184 11h1.386v5Zm2.59 0h-1.452l1.925-3.863v-.028h-2.262V11H16v1.105L14.16 16Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-pagenumber,.device-android i.icon.icon-sectionbreak{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-sectionbreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill='var(--brand-word)' clip-path='url(%23a)'%3E%3Cpath d='M3 11h4v2H3v-2ZM9 11h6v2H9v-2ZM17 11h4v2h-4v-2Z'/%3E%3Cpath fill-rule='evenodd' d='M18 4H6v5H4V4a2 2 0 0 1 2-2h12c.53 0 .986.203 1.392.61.374.376.608.858.608 1.39v5h-2V4ZM6 15v5.028L18 20v-5h2v5a2 2 0 0 1-2 2H6c-.53 0-.986-.188-1.392-.563A2.012 2.012 0 0 1 4 19.994V15h2Z' clip-rule='evenodd'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='transparent' d='M0 0h24v24H0V0Z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}.device-android i.icon.icon-footnote{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M12.117 18.798H10.11l-.74-2.15h-4.62l-.74 2.15H2l3.956-11.21h2.205l3.956 11.21Zm-3.246-3.882L7.059 9.571l-1.812 5.345H8.87ZM14.758 16.361c.17.303.433.56.785.773a2.22 2.22 0 0 0 1.087.303c.624 0 1.123-.247 1.495-.74.383-.504.574-1.154.574-1.95 0-.795-.191-1.444-.574-1.949-.372-.504-.87-.756-1.495-.756-.362 0-.72.107-1.072.32-.352.212-.62.476-.8.79v3.21Zm0 2.437h-1.586V7.588h1.586v4.219c.594-.885 1.374-1.328 2.34-1.328.947 0 1.722.392 2.326 1.177.604.773.906 1.803.906 3.092 0 1.31-.302 2.347-.906 3.11-.604.761-1.38 1.142-2.326 1.142-.956 0-1.736-.437-2.34-1.31v1.108ZM24 11.723h-1.223V6.748l-1.012 1.16-.695-.824L22.944 5H24v6.723Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-pagebreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill='var(--brand-word)' clip-path='url(%23a)'%3E%3Cpath fill-rule='evenodd' d='m6 8 4-.005V4L6 8Zm4 2H6v1H4V7l5-5h9c.53 0 .986.203 1.392.61.374.376.608.858.608 1.39v7h-2V4h-6v4a2 2 0 0 1-2 2Zm-4 7v3.028L18 20v-3h2v3a2 2 0 0 1-2 2H6c-.53 0-.986-.188-1.392-.563A2.012 2.012 0 0 1 4 19.994V17h2Z' clip-rule='evenodd'/%3E%3Cpath d='M3 13h4v2H3v-2ZM9 13h6v2H9v-2ZM17 13h4v2h-4v-2Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='transparent' d='M0 0h24v24H0V0Z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}.device-android i.icon.icon-pagebreak,.device-android i.icon.icon-stringbreak{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-stringbreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='m10 9.013 1.406 1.405-3.61 3.606h10.188V4.002H20v11.99H7.797l3.61 3.605L10 21.002l-6-5.994 6-5.995Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-users{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M15.5 7c0 2.262-.564 3.952-1.299 5.03-.743 1.091-1.578 1.47-2.201 1.47s-1.458-.379-2.201-1.47C9.064 10.953 8.5 9.263 8.5 7c0-2.077 1.722-3.5 3.5-3.5s3.5 1.423 3.5 3.5Zm-.654 6.622C14.006 14.519 13.004 15 12 15s-2.006-.48-2.846-1.378c-1.457.578-2.676 1.15-3.625 1.728C3.83 16.384 3.5 17.12 3.5 17.5c0 .51.264 1.198 1.547 1.84 1.328.666 3.562 1.16 6.953 1.16 3.39 0 5.625-.494 6.953-1.16 1.283-.642 1.547-1.33 1.547-1.84 0-.38-.329-1.116-2.03-2.15-.948-.577-2.167-1.15-3.624-1.728Zm.908-1.252C16.514 11.028 17 9.21 17 7c0-3-2.491-5-5-5S7 4 7 7c0 2.21.486 4.028 1.246 5.37C4.39 13.94 2 15.579 2 17.5 2 19.985 5 22 12 22s10-2.015 10-4.5c0-1.921-2.39-3.56-6.246-5.13Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-review,.device-android i.icon.icon-users{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-review{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M17.5 3.5h-13v17h13V18H19v2a2 2 0 0 1-2 2H5c-.53 0-.986-.188-1.392-.563A2.012 2.012 0 0 1 3 19.994V4a2 2 0 0 1 2-2h12c.53 0 .986.203 1.392.61.374.376.608.858.608 1.39v3h-1.5V3.5Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='m22.844 10.24-1.016 1.015-2.083-2.083 1.015-1.016A.53.53 0 0 1 21.151 8a.53.53 0 0 1 .39.156l1.303 1.302A.53.53 0 0 1 23 9.85a.53.53 0 0 1-.156.39ZM13 15.917l6.146-6.146 2.083 2.083L15.083 18H13v-2.083ZM7 15.5h4V17H7v-1.5ZM7 11h6v1.5H7V11ZM7 7h8v1.5H7V7Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-review-changes{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M20.5 4.5v15h-17v-15h17ZM22 19V5a2 2 0 0 0-2-2H4.005c-.532 0-1.035.203-1.442.608C2.188 4.014 2 4.47 2 5v14a2 2 0 0 0 2 2h16c.532 0 1.014-.234 1.39-.608.407-.406.61-.862.61-1.392Z'/%3E%3Cpath fill='var(--brand-word)' d='M6 15h12v1.5H6V15ZM6 11h12v1.5H6V11ZM6 7h12v1.5H6V7Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-accept-changes,.device-android i.icon.icon-review-changes{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-accept-changes{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%2340865C' d='M13.397 19.288 21.65 11 23 12.356 13.397 22 9 17.585l1.35-1.356 3.047 3.059Z'/%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M20.5 8V4.5h-17v13H7V19H4a2 2 0 0 1-2-2V5c0-.53.188-.986.563-1.392C2.97 3.203 3.473 3 4.005 3H20a2 2 0 0 1 2 2v3h-1.5Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='M6 8h12v1.5H6V8ZM6 12h10v1.5H6V12Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-reject-changes{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23C60915' d='M23 13.41 19.41 17 23 20.59 21.59 22 18 18.41 14.41 22 13 20.59 16.59 17 13 13.41 14.41 12 18 15.59 21.59 12 23 13.41Z'/%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M20.5 10V4.5h-17v13H11V19H4a2 2 0 0 1-2-2V5c0-.53.188-.986.563-1.392C2.97 3.203 3.473 3 4.005 3H20a2 2 0 0 1 2 2v5h-1.5Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-word)' d='M6 8h12v1.5H6V8ZM6 12h5v1.5H6V12Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-accept,.device-android i.icon.icon-reject-changes{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-accept{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='m9 18-7-7-1 1 8 8L23 6l-1-1L9 18Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-reject{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M5 4 4 5l7 7-7 7 1 1 7-7 7 7 1-1-7-7 7-7-1-1-7 7-7-7Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-next-change,.device-android i.icon.icon-reject{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-next-change{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='m9.984 6 6 6-6 6-1.406-1.406L13.172 12 8.578 7.406 9.984 6Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-prev-change{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M15.422 7.406 10.828 12l4.594 4.594L14.016 18l-6-6 6-6 1.406 1.406Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-goto,.device-android i.icon.icon-prev-change{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-goto{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M20.5 3.5h-17v17h17v-17ZM3.5 2H2v20h20V2H3.5Zm11.19 6.25H9v-1.5h8.25V15h-1.5V9.31l-8.22 8.22-1.06-1.06 8.22-8.22Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-menu-comment{background-color:var(--text-tertiary);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--text-tertiary)' fill-opacity='.6' d='M16.605 16.585c.403-.406.868-.608 1.395-.608s.992.202 1.395.608c.403.405.605.873.605 1.403s-.202.998-.605 1.404c-.403.405-.868.608-1.395.608s-.992-.203-1.395-.608c-.403-.406-.605-.873-.605-1.404 0-.53.202-.998.605-1.403Zm0-5.988c.403-.406.868-.609 1.395-.609s.992.203 1.395.609c.403.405.605.873.605 1.403s-.202.998-.605 1.403c-.403.406-.868.609-1.395.609s-.992-.203-1.395-.609C16.202 12.999 16 12.53 16 12s.202-.998.605-1.403Zm2.79-3.182c-.403.406-.868.608-1.395.608s-.992-.202-1.395-.608C16.202 7.01 16 6.542 16 6.012s.202-.998.605-1.404C17.008 4.203 17.473 4 18 4s.992.203 1.395.608c.403.406.605.873.605 1.404 0 .53-.202.998-.605 1.403Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-resolve-comment{background-color:var(--brand-word);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-resolve-comment.check{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%234cd964' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E");height:24px;width:24px}.device-android i.icon.icon-done-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-done-comment,.device-android i.icon.icon-insert-comment{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-insert-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' d='M19.5 3h-15C3.19 3 2 4.215 2 5.503v9.532c0 1.287 1.19 1.978 2.5 1.978h1c.328 0 .5.179.5.5V21l6-4h8a2 2 0 0 0 2-2V8h-1.5v6.5a1 1 0 0 1-1 1h-8l-4 2.5v-2.5h-3a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1h15a1 1 0 0 1 1 1V8H22V5.503C22 4.215 20.81 3 19.5 3Z'/%3E%3Cpath fill='var(--brand-word)' d='M6 7.5h12V9H6V7.5ZM6 11h12v1.5H6V11Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-done-comment-white{background-color:var(--fill-white);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--fill-white)' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-format-docx{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='24' fill='none'%3E%3Cpath fill='%23446995' fill-rule='evenodd' d='M4.5 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3h-16Zm1 6.5h14v1h-14v-1Zm0 4h14v1h-14v-1Zm14 4h-14v1h14v-1Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-docxf{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='24' fill='none'%3E%3Cpath fill='%2327ABA3' fill-rule='evenodd' d='M4.5 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3h-16Zm15 6h-14v3h14V7Zm-15-1v5h16V6h-16Zm1 8h14v3h-14v-3Zm-1 4v-5h16v5h-16Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-oform{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='24' fill='none'%3E%3Cpath fill='%23188079' fill-rule='evenodd' d='M4.5 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3h-16Zm15 6h-14v10h14V7Zm-14-1h-1v12h16V6h-15Zm4 3h-2v1h2v4h-2v1h2v-1h1v1h2v-1h-2v-4h2V9h-2v1h-1V9Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-txt{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23757575' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H4Zm1 6.5h14v1H5v-1Zm0 4h14v1H5v-1Zm14 4H5v1h14v-1Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-rtf{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23635E9B' fill-rule='evenodd' d='M1 4a3 3 0 0 1 3-3h16a3 3 0 0 1 3 3v16a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3V4Zm18 3.5h-7v1h7v-1Zm0 4h-7v1h7v-1Zm0 4v1H5v-1h14Zm-9-8H5v5h5v-5Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-odt{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='24' fill='none'%3E%3Cpath fill='%233C6D88' fill-rule='evenodd' d='M1.5 4a3 3 0 0 1 3-3h16a3 3 0 0 1 3 3v16a3 3 0 0 1-3 3h-16a3 3 0 0 1-3-3V4Zm18.952 3.749c-.026-.02-.053-.037-.08-.054l-.02-.013a4.236 4.236 0 0 0-1.763-.651c-1.114-.14-2.179.2-3.078.89a4.32 4.32 0 0 0-2.066-.86c-1.035-.13-2.028.155-2.885.751l-.01.008-.015.01a.135.135 0 0 0-.035.093c0 .066.04.12.09.12l.013-.003.007-.002a3.93 3.93 0 0 1 1.431-.084c1.376.173 2.575.737 3.416 2.002.044.06.083.057.128-.003 1.058-1.627 2.68-2.27 4.424-2.051.097.012.193.028.289.047l.029.006c.029.006.062.013.084.016.058.009.089-.053.089-.119 0-.044-.015-.082-.048-.103Zm-1.026 5.026.01.006c.038.024.064.075.064.136 0 .083-.051.151-.114.151l-.164-.016a5.975 5.975 0 0 0-.547-.026c-2.574 0-4.885 1.254-6.288 3.796l-.04.074-.026.048c-.021.035-.053.056-.088.056a.097.097 0 0 1-.075-.037l-.002-.004-.007-.008c-1.38-1.722-3.215-2.367-5.272-2.367a5.987 5.987 0 0 0-2.24.44.086.086 0 0 1-.023.003c-.063 0-.114-.068-.114-.151a.17.17 0 0 1 .044-.12l.004-.003a.155.155 0 0 1 .009-.008C5.787 13.644 7.267 13 8.863 13c1.122 0 2.188.319 3.15.89C13.273 12.701 14.815 12 16.48 12c1.042 0 2.035.276 2.943.773l.003.002Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-html{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%237C9A34' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H4Zm10.75 7.5 5.503 3.082v.954L14.753 15v-1.096l4.174-1.92-4.177-2.309V8.5Zm-2.124-1h1l-2.249 9h-1l2.25-9Zm-3.373 1L3.75 11.582v.954L9.25 15v-1.096l-4.174-1.92 4.177-2.309V8.5Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-dotx{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23A8A8A8' fill-rule='evenodd' d='M18 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm.746 10v-5.27h2.506v-1.234h-6.504v1.235h2.479V22h1.519Z' clip-rule='evenodd'/%3E%3Cpath fill='%23446995' fill-rule='evenodd' d='M1 4a3 3 0 0 1 3-3h16a3 3 0 0 1 3 3v9.101A7.003 7.003 0 0 0 11.46 15.5H5v1h6.161A7.026 7.026 0 0 0 11 18c0 1.959.805 3.73 2.101 5H4a3 3 0 0 1-3-3V4Zm4 3.5h14v1H5v-1Zm0 4h8v1H5v-1Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-ott{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23A8A8A8' fill-rule='evenodd' d='M18 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm.746 10v-5.27h2.506v-1.234h-6.504v1.235h2.479V22h1.519Z' clip-rule='evenodd'/%3E%3Cpath fill='%233C6D88' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h9.101A6.979 6.979 0 0 1 11 18c0-.542.062-1.07.178-1.577-1.315-1.328-2.97-1.839-4.801-1.839a5.987 5.987 0 0 0-2.24.44.086.086 0 0 1-.023.003c-.063 0-.114-.068-.114-.151a.17.17 0 0 1 .044-.12l.004-.003a.155.155 0 0 1 .009-.008C5.287 13.644 6.767 13 8.363 13c1.122 0 2.188.319 3.15.89a7.139 7.139 0 0 1 2.244-1.459A6.97 6.97 0 0 1 18 11c1.959 0 3.73.805 5 2.101V4a3 3 0 0 0-3-3H4Zm15.952 6.749c-.026-.02-.053-.037-.08-.054l-.02-.013a4.236 4.236 0 0 0-1.763-.651c-1.114-.14-2.179.2-3.078.89a4.32 4.32 0 0 0-2.066-.86c-1.035-.13-2.028.155-2.885.751l-.01.008-.015.01a.135.135 0 0 0-.035.093c0 .066.04.12.09.12l.013-.003.007-.002a3.93 3.93 0 0 1 1.431-.084c1.376.173 2.575.737 3.416 2.002.044.06.083.057.128-.003 1.058-1.627 2.68-2.27 4.424-2.051.097.012.193.028.289.047l.029.006c.029.006.062.013.084.016.058.009.089-.053.089-.119 0-.044-.015-.082-.048-.103Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-protect-document{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='M9 1 3 7v15h7v-1H4V8h6V2h9v8h1V1H9ZM4.414 7 9 2.414V7H4.414Z' clip-rule='evenodd'/%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill-rule='evenodd' d='M14.5 15.5V17h-1v-1.5a3.5 3.5 0 1 1 7 0V17h-1v-1.5a2.5 2.5 0 0 0-5 0Zm-1 2.5h7s.5 0 .5.5v4c0 .5-.5.5-.5.5h-7s-.5 0-.5-.5v-4c0-.5.5-.5.5-.5ZM12 18c0-1 1-1 1-1h8s1 0 1 1v4.667C22 23.31 21.644 24 21 24h-8s-1 0-1-1v-5Zm5.583 2.402a.875.875 0 1 0-1.167 0v1.681h1.167v-1.68Z' clip-rule='evenodd'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M11 12h12v12H11z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}i.icon.icon-protect-document,i.icon.icon-protection{background-color:var(--brand-word);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}i.icon.icon-protection{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M12 2a6 6 0 0 1 6 6v2h1a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h1V8a6 6 0 0 1 6-6Zm5 8V8A5 5 0 0 0 7 8v2h10ZM4 12a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-8Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-encrypt-file{background-color:var(--brand-word);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M12 2a6 6 0 0 1 6 6v2h1a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h1V8a6 6 0 0 1 6-6Zm5 8V8A5 5 0 0 0 7 8v2h10ZM4 12a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-8Zm9 4.119a1.5 1.5 0 1 0-2 0v2.881h2v-2.881Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}i.icon.icon-format-fb2{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='none'%3E%3Cpath fill='%23B07408' fill-rule='evenodd' d='M3 0a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3H3Zm11.264 5c-1.516 0-2.829.635-3.261 1.212C10.565 5.635 9.252 5 7.736 5 5.863 5 4.3 5.952 4 6.778v9.619c0 .428.288.603.608.603.257 0 .411-.08.56-.201.348-.339 1.212-.857 2.568-.857 1.361 0 2.3.508 2.61.825.144.122.331.233.657.233.32 0 .501-.122.65-.233.332-.301 1.255-.825 2.61-.825 1.357 0 2.226.524 2.568.857.15.122.304.201.566.201.315 0 .603-.175.603-.603v-9.62C17.701 5.953 16.137 5 14.264 5ZM4.95 15.884v-8.82c.123-.408 1.2-1.186 2.786-1.186 1.59 0 2.685.784 2.792 1.186v8.799c-.63-.514-1.66-.8-2.792-.8-1.126 0-2.156.286-2.786.82Zm12.1-8.82c-.123-.408-1.196-1.186-2.786-1.186s-2.685.784-2.792 1.186v8.799c.63-.514 1.666-.8 2.792-.8s2.156.286 2.786.82v-8.82Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-epub{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='none'%3E%3Cpath fill='%235892B6' fill-rule='evenodd' d='M3 0a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3H3Zm3.372 11L11 15.714l5.427-5.571.372.371a.687.687 0 0 1 0 .972l-5.313 5.313a.687.687 0 0 1-.972 0l-5.313-5.313a.687.687 0 0 1 0-.972l5.313-5.313a.687.687 0 0 1 .972 0L14.5 8.215l-3.77 3.77-.858-.856 2.971-2.971L11 6.286 6.372 11Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-save-form{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M3 5a2 2 0 0 1 2-2h10.379a2 2 0 0 1 1.414.586l3.621 3.621A2 2 0 0 1 21 8.621V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5Zm2-1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h1v-6a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v6h1a1 1 0 0 0 1-1V8.621a1 1 0 0 0-.293-.707L15.793 4H15v3a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4H5Zm8 0v3h1V4h-1Zm4 16v-6a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v6h10Zm-2-5a.5.5 0 0 1 0 1H9a.5.5 0 0 1 0-1h6Zm-2.5 2.5a.5.5 0 0 1-.5.5H9a.5.5 0 0 1 0-1h3a.5.5 0 0 1 .5.5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-add-favorites,i.icon.icon-save-form{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-add-favorites{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-word)' fill-rule='evenodd' d='m12 3.604-2.134 5.13a1.5 1.5 0 0 1-1.265.918l-5.538.444 4.22 3.614a1.5 1.5 0 0 1 .482 1.488L6.476 20.6l4.741-2.895a1.5 1.5 0 0 1 1.564 0l4.741 2.895-1.289-5.403a1.5 1.5 0 0 1 .483-1.488l4.22-3.614-5.538-.444a1.5 1.5 0 0 1-1.265-.919l-2.134-5.13Zm.461-1.494a.5.5 0 0 0-.923 0L8.943 8.35a.5.5 0 0 1-.422.305l-6.736.54a.5.5 0 0 0-.285.879l5.132 4.396a.5.5 0 0 1 .16.495L5.226 21.54a.5.5 0 0 0 .747.542l5.767-3.522a.5.5 0 0 1 .521 0l5.767 3.522a.5.5 0 0 0 .747-.542l-1.568-6.574a.5.5 0 0 1 .161-.495l5.132-4.396a.5.5 0 0 0-.285-.878l-6.736-.54a.5.5 0 0 1-.422-.307l-2.595-6.24Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-remove-favorites{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M12.461 2.11a.5.5 0 0 0-.923 0L8.943 8.35a.5.5 0 0 1-.422.305l-6.736.54a.5.5 0 0 0-.285.879l5.132 4.396a.5.5 0 0 1 .16.495L5.226 21.54a.5.5 0 0 0 .747.542l5.767-3.522a.5.5 0 0 1 .521 0l5.767 3.522a.5.5 0 0 0 .747-.542l-1.568-6.574a.5.5 0 0 1 .161-.495l5.132-4.396a.5.5 0 0 0-.285-.878l-6.736-.54a.5.5 0 0 1-.422-.307l-2.595-6.24Z'/%3E%3C/svg%3E")}i.icon.icon-clear-fields,i.icon.icon-remove-favorites{background-color:var(--brand-word);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-clear-fields{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M17.648 4.083a3.783 3.783 0 0 0-5.3 0l-9.25 9.127a3.662 3.662 0 0 0 0 5.228l2.376 2.345.22.217h14.55v-1.479h-6.435l7.094-6.998a3.662 3.662 0 0 0 0-5.229l-3.255-3.211ZM11.69 19.52l5.246-5.176L10.5 7.997l-6.344 6.258a2.197 2.197 0 0 0 0 3.138l2.158 2.128h5.375Zm-.129-12.57 6.435 6.348 1.847-1.822a2.197 2.197 0 0 0 0-3.137l-3.255-3.211a2.27 2.27 0 0 0-3.18 0L11.561 6.95Z' clip-rule='evenodd'/%3E%3C/svg%3E")}:root{--f7-popover-width:360px}.doc-placeholder{background:#fbfbfb;height:100%;overflow:hidden;padding-top:calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-subnavbar-offset, 0px));position:relative}.doc-placeholder>.line{-webkit-animation:flickerAnimation 2s ease-in-out infinite;-moz-animation:flickerAnimation 2s ease-in-out infinite;-o-animation:flickerAnimation 2s ease-in-out infinite;animation:flickerAnimation 2s ease-in-out infinite;background:#e2e2e2;height:15px;margin:30px;overflow:hidden;position:relative}.page.page-with-subnavbar .page-content,.page.page-with-subnavbar.page-with-logo .page-content{--f7-page-subnavbar-offset:0;padding-top:0}.page.editor>.page-content{--f7-page-navbar-offset:0}.page-review{--f7-toolbar-link-color:var(--brand-word)}.page-review .toolbar{background-color:var(--background-secondary);box-shadow:0 1px 10px rgba(0,0,0,.2);position:absolute}.page-review .toolbar #btn-goto-change{margin-left:10px}.page-review .toolbar .next-prev .link{width:44px}.page-review .page-content .no-changes{color:var(--text-normal);padding:15px}.page-review .page-content .block-description{padding:15px}.page-review .page-content .block-description .user-name{color:var(--text-normal);font-size:17px;line-height:22px;margin:0}.page-review .page-content .block-description .date-change{color:var(--text-secondary);font-size:14px;line-height:18px;margin:3px 0 0}.page-review .page-content .block-description .text{color:var(--text-normal);font-size:15px;line-height:20px;margin:10px 0 0}.item-content .preview{color:#c4c4c4}.phone .swiper-container,.tablet .swiper-container{position:static}.swiper-container .swiper-pagination-bullet-active{background:#000}.table-styles .row div:not(:first-child){margin:2px auto 0}.table-styles .row div,.table-styles .skeleton-list li{padding:0}.table-styles .row .skeleton-list{display:block;height:50px;width:70px}.item-contents{padding:0 16px}.style-toc__image{margin:0 15px;max-height:150px;overflow:hidden}.style-toc__image_active{border:1.5px solid var(--brand-word)}.block>.block-title:first-child,.list>.block-title:first-child{margin-left:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));margin-right:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));margin-top:var(--f7-block-margin-vertical)}.empty-screens{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center}.empty-screens__icon{margin-bottom:48px}.empty-screens__text{color:var(--text-normal);margin:0 32px;text-align:center}.swipe-container{background-color:var(--background-primary);display:flex;height:40px;justify-content:center}.swipe-container .icon-swipe{background:var(--background-menu-divider);border-radius:2px;height:4px;margin-top:8px;width:40px}.sheet-modal.navigation-sheet{box-shadow:0 -2px 20px rgba(0,0,0,.2)}.sheet-modal.navigation-sheet .sheet-modal-inner{background:var(--background-tertiary);overflow-y:auto}.sheet-modal.navigation-sheet .swipe-container{position:fixed;top:0;width:100%;z-index:1000}.sheet-modal.navigation-sheet.sheet-modal-bottom:before,.sheet-modal.navigation-sheet.sheet-modal:not(.sheet-modal-top):before{display:none}.list.navigation-list{margin-top:72px}.list.navigation-list .item-title{color:var(--text-normal)}.navigation-sheet__title{left:0;position:fixed;right:0;top:40px;width:100%;z-index:100;z-index:1000}.calendar,.calendar .toolbar{background-color:var(--background-secondary)}.calendar .toolbar i.icon.icon-next,.calendar .toolbar i.icon.icon-prev{background-color:var(--text-normal)}.calendar .toolbar:after{background-color:var(--background-menu-divider)}.calendar .calendar-row{padding:0 16px}.calendar .calendar-row:before{display:none}.calendar .current-month-value,.calendar .current-year-value{color:var(--text-normal);font-size:16px}.calendar .calendar-day-selected .calendar-day-number,.calendar .calendar-day-today.calendar-day-selected .calendar-day-number{background-color:var(--brand-word);border:1px solid transparent;color:var(--fill-white)}.calendar .calendar-day-selected.calendar-day-weekend .calendar-day-number{color:var(--fill-white)}.calendar .calendar-day-today .calendar-day-number{background-color:initial;border:1px solid var(--brand-word)}.calendar .calendar-day-weekend .calendar-day-number{color:var(--text-secondary)}.calendar .calendar-day-number{border-radius:16px;color:var(--text-normal);font-size:14px;font-weight:500;height:32px;width:47px}.calendar .calendar-week-header{background-color:var(--background-secondary);border-bottom:1px solid var(--background-menu-divider);color:var(--text-normal);height:auto;margin:25px 16px 10px;padding-bottom:5px}.calendar .calendar-week-header .calendar-week-day{color:var(--text-normal);font-size:12px}.calendar .calendar-months{margin-bottom:12px}.calendar .calendar-month-picker-item,.calendar .calendar-year-picker-item{color:var(--text-normal)}.calendar .calendar-month-picker-item:after,.calendar .calendar-month-picker-item:before,.calendar .calendar-year-picker-item:after,.calendar .calendar-year-picker-item:before{background-color:var(--background-menu-divider)}.calendar .calendar-month-picker,.calendar .calendar-year-picker{background:var(--background-secondary)}.calendar .calendar-month-picker-item-current,.calendar .calendar-year-picker-item-current{color:var(--brand-word)}.calendar-sheet .calendar-month-picker,.calendar-sheet .calendar-year-picker{border-top:1px solid var(--background-menu-divider)}.create-style-link .item-link .item-inner:before{display:none}.create-style-link .item-title{color:var(--brand-word)}.fab{z-index:10000}.fab a{background-color:var(--background-primary);border-radius:50%}.fab a.active-state,.fab a:active,.fab a:focus,.fab a:focus-within{background-color:var(--background-primary)}.fab-enter,.snackbar-enter{opacity:0}.fab-enter-active,.snackbar-enter-active{opacity:1;transition:opacity .3s}.fab-exit,.snackbar-exit{opacity:1}.fab-exit-active,.snackbar-exit-active{opacity:0;transition:opacity .3s} +/*# sourceMappingURL=964.css.map*/ \ No newline at end of file diff --git a/apps/documenteditor/mobile/css/964.css.map b/apps/documenteditor/mobile/css/964.css.map new file mode 100644 index 0000000000..1c696c33c3 --- /dev/null +++ b/apps/documenteditor/mobile/css/964.css.map @@ -0,0 +1 @@ +{"version":3,"file":"css/964.css","mappings":";;;;GACA,MACI,oBAAqB,CACrB,oBAAqB,CACrB,qBAAsB,CACtB,oBAAqB,CACrB,uBAAwB,CACxB,yBAA0B,CAC1B,0BAA2B,CAE3B,yBAA0B,CAC1B,2BAA4B,CAC5B,6BAA8B,CAC9B,6CACA,2BAA4B,CAE5B,kBAAsB,CACtB,gCACA,+BACA,mBAAoB,CACpB,oBAAqB,CAErB,iBAAkB,CAClB,iBAAkB,CAElB,4BAA6B,CAC7B,oBAAqB,CACrB,yBAA0B,CAC1B,wCAEA,iCAEA,0CACA,2CACA,yCAEA,gCAAiC,CAIjC,wBAAyB,CACzB,gCAAiC,CACjC,yBAA0B,CAE1B,8BAA+B,CAE/B,yCAA0C,CAC1C,wBAAyB,CACzB,iCAAkC,CAClC,0CAA2C,CAE3C,2BAA4B,CAG5B,oCAEA,oCAAqC,CACrC,kCAAmC,CAEnC,wCAAyC,CAEzC,6BAA8B,CAE9B,sCAAuC,CACvC,uCAAwC,CAExC,gDAAiD,CACjD,wCAAyC,CACzC,iCCpBJ,CC/CA,yCAGQ,4BAA6B,CAC7B,2BAA4B,CAC5B,6BAA8B,CAC9B,4CACA,wBAA4B,CAE5B,kCACA,oCACA,mCACA,mBAAoB,CACpB,oBAAqB,CAErB,iBAAkB,CAClB,iBAAkB,CAElB,oBAAqB,CACrB,oBAAqB,CACrB,qBAAsB,CACtB,oBAAqB,CACrB,uBAAwB,CACxB,yBAA0B,CAC1B,0BAA2B,CAE3B,4BAA6B,CAC7B,uBAAwB,CACxB,sBAAuB,CACvB,4BAA6B,CAE7B,iCAIA,0CACA,2CACA,yCAEA,sDAAuD,CAIvD,wBAAyB,CACzB,gCAAiC,CACjC,4BAA6B,CAE7B,iCAAkC,CAElC,yCAA0C,CAC1C,2BAA4B,CAC5B,oCAAqC,CACrC,6CAA8C,CAE9C,2BAA4B,CAG5B,oCACA,kCAAmC,CACnC,wCAAyC,CACzC,2CAA4C,CAE5C,oCAAqC,CAErC,6BAA8B,CAE9B,sCAAuC,CACvC,uCAAwC,CAExC,gDD2BR,CEjGA,sDAMgB,wBAA0B,CAD1B,iBAAkB,CADlB,kBFkGhB,CEtGA,uEAWgB,SAAU,CADV,UFgGhB,CE1GA,kIAmBY,gBAAiB,CADjB,cF6FZ,CE/GA,6DAyBY,gBFyFZ,CEpFQ,kDACI,cAAe,CACf,kBFsFZ,CEjFA,mJAMQ,cFmFR,CEzFA,oEAWY,yBFiFZ,CE5FA,mEAeY,yBFgFZ,CE/FA,mEAqBQ,SAAU,CADV,UF+ER,CEnGA,mKA2BgB,+EF4EhB,CEvGA,iKA8BgB,+EF6EhB,CE3GA,0EAsCgB,aAAgB,CAChB,iBFwEhB,CE/GA,6EA6CQ,aAAc,CACd,iBFqER,CEnHA,uHAmDQ,gBAAiB,CADjB,cFyER,CE3HA,yFA4DQ,iBFkER,CE9DA,kDAEQ,cF+DR,CEjEA,yEAKgB,6BF+DhB,CEpEA,0FAQoB,gBAAiB,CADjB,cFiEpB,CExEA,wEAagB,gBF8DhB,CE3EA,yBAoBQ,aAAc,CADd,4CAA6C,CAE7C,iBAAkB,CAClB,kBF2DR,CEjFA,8CA2BQ,iBAAkB,CADlB,eF4DR,CEtFA,k5BAmCQ,gBFiER,CEpGA,oDAuCQ,wBFgER,CEvGA,wBA2CQ,wBF+DR,CE1GA,yBAgDY,oBF6DZ,CE7GA,kEAuDY,cF0DZ,CEjHA,+BA6DY,eFuDZ,CEpHA,0CAmEY,iBFoDZ,CEvHA,kCAwEQ,qBFkDR,CE1HA,uGA6EY,eFkDZ,CE/HA,kCAkFQ,SAAU,CACV,WFgDR,CEnIA,uHAuFQ,eFiDR,CExIA,sIA2FQ,cAAe,CACf,kBFkDR,CE9IA,wFAqGQ,aAAc,CACd,iBFgDR,CEtJA,uDA0GQ,eF+CR,CEzJA,wDAgHQ,QAAS,CADT,UF8CR,CEzCA,yBACI,iGAGQ,aAAc,CADd,iBF2CV,CE7CE,+DAOQ,aFyCV,CErCE,oGAGQ,gBAAiB,CADjB,cFuCV,CACF,CG5QQ,yZAGI,oBHsRZ,CGnRQ,gCCON,q8CJ+QF,CGlRQ,gCCGN,+nFJkRF,CGjRQ,gCCDN,m3CJqRF,CGhRQ,gCCLN,o+FJwRF,CG/QQ,gCCTN,yyDJ2RF,CG3QQ,mEACI,oBH8QZ,CGvQQ,kDCrCN,mCACA,unCAEA,yBAA0B,CAD1B,yBJgTF,CGzQQ,kDCzCN,mCACA,8sCAEA,yBAA0B,CAD1B,yBJsTF,CG3QQ,kDC7CN,mCACA,2sCAEA,yBAA0B,CAD1B,yBJ4TF,CAzTA,YACI,mDAAqD,CA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EE,+BP2UF,COzUA,+BAEE,2BP2UF,COzUA,+BAEE,+BP2UF,COzUA,+BAEE,+BP2UF,COzUA,+BAEE,2BP2UF,COzUA,+BAEE,+BP2UF,COzUA,mDAGE,+BP2UF,COzUA,iBACE,+BP2UF,COzUA,iBACE,+BP2UF,COzUA,+BAEE,4BP2UF,COzUA,iBACE,gCP2UF,COzUA,iBACE,4BP2UF,COzUA,sBACE,gCP2UF,COzUA,gDAGE,gCP2UF,COzUA,+BAEE,4BP2UF,COzUA,0BACE,gCP2UF,COzUA,iBACE,gCP2UF,COzUA,iBACE,4BP2UF,COzUA,+BAEE,gCP2UF,COzUA,+BAEE,gCP2UF,COzUA,+BAEE,4BP2UF,COzUA,+BAEE,gCP2UF,COzUA,+BAEE,gCP2UF,COzUA,+BAEE,4BP2UF,COzUA,0DAGE,gCP2UF,COzUA,+BAEE,gCP2UF,COzUA,+BAEE,4BP2UF,COzUA,gDAGE,gCP2UF,COzUA,+BAEE,gCP2UF,COzUA,+BAEE,4BP2UF,COzUA,iBACE,gCP2UF,COxUA,mBAGI,kBAAmB,CADnB,YAAa,CADb,eP4UJ,CO7UA,+BAKQ,gBP2UR,COvUA,cAEI,WAIA,YAAa,CALb,WAAY,CAQZ,SAAU,CANV,cAAe,CAIf,mBAAoB,CAHpB,iBAAkB,CAIlB,gCAAkC,CAHlC,WP6UJ,COxUI,qBACI,aAAc,CACd,SP0UR,COtUA,iBACI,aPwUJ,COzUA,gCAGQ,SPyUR,CO5UA,yCASY,cAAe,CAFf,SAAU,CACV,ePyUZ,COjVA,0CAcQ,MAAO,CACP,OAAQ,CAFR,UPyUR,COnUA,iCAEQ,qBPoUR,CO/TA,4BACI,GAAO,UPkUT,COjUE,IAAO,SPoUT,COnUE,GAAO,UPsUT,CACF,COrUA,+BACI,GAAO,UPwUT,COvUE,IAAO,SP0UT,COzUE,GAAO,UP4UT,CACF,CO3UA,iCACI,GAAO,UP8UT,CO7UE,IAAO,SPgVT,CO/UE,GAAO,UPkVT,CACF,COjVA,oCACI,GAAO,UPoVT,COnVE,IAAO,SPsVT,COrVE,GAAO,UPwVT,CACF,COtVA,2BAGI,WAAY,CAGZ,MAAO,CACP,eAAgB,CANhB,iBAAkB,C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mCMkBU,WAAY,CNjBtB,4NAEA,yBAA0B,CAD1B,yBAA0B,CMehB,UV6hFZ,CU1hFY,mCACE,YV4hFd,CUzhFQ,6BNxBN,mCM0BU,WAAY,CNzBtB,oOAEA,yBAA0B,CAD1B,yBAA0B,CMuBhB,UVgiFZ,CU7hFY,mCACI,YV+hFhB,CU5hFQ,6BNhCN,mCMkCU,WAAY,CNjCtB,+UAEA,yBAA0B,CAD1B,yBAA0B,CM+BhB,UVmiFZ,CU/hFQ,sCNpCN,8iBJ2kFF,CUliFQ,4EN1CN,uCMuCU,WAAY,CNpCtB,yBAA0B,CAD1B,yBAA0B,CMoChB,UV8iFZ,CU1iFQ,sCNzCN,siCJmlFF,CUriFQ,+BN/CN,mCMiDU,WAAY,CNhDtB,0cAEA,yBAA0B,CAD1B,yBAA0B,CM8ChB,UV4iFZ,CW3lFQ,iCACI,mCX6lFZ,CW3lFQ,iCAGI,mGADA,WAAY,CADZ,WX+lFZ,CW3lFQ,iCPTN,mCOWU,WAAY,CPVtB,4OAEA,yBAA0B,CAD1B,yBAA0B,COQhB,UXkmFZ,CW/lFY,uCACE,YXimFd,CW9lFQ,iCPjBN,mCOmBU,WAAY,CPlBtB,uOAEA,yBAA0B,CAD1B,yBAA0B,COgBhB,UXqmFZ,CWlmFY,uCACI,YXomFhB,CWjmFQ,0CPxBN,q1BJioFF,CWpmFQ,oFP9BN,uCO2BU,WAAY,CPxBtB,yBAA0B,CAD1B,yBAA0B,COwBhB,UXgnFZ,CW5mFQ,0CP7BN,2hCJyoFF,CWpmFY,kDPtCV,sCOwCc,WAAY,CPvC1B,izCAEA,yBAA0B,CAD1B,yBAA0B,COqCZ,UX2mFhB,CWvmFY,yCACI,0BXymFhB,CWvmFY,yCP9CV,sCOgDc,WAAY,CP/C1B,gTAEA,yBAA0B,CAD1B,yBAA0B,CO6CZ,UX8mFhB,CW1mFY,0CPnDV,oCOqDc,WAAY,CPpD1B,gTAEA,yBAA0B,CAD1B,yBAA0B,COkDZ,UXinFhB,CW7mFY,kDPxDV,qCJ6qFF,CWhnFY,2FAHI,WAAY,CPzD1B,8NAEA,yBAA0B,CAD1B,yBAA0B,COuDZ,UX4nFhB,CWxnFY,yCP7DV,kCJqrFF,CWnnFY,2CPjEV,qSJ4rFF,CWtnFY,+FPvEV,sCOoEc,WAAY,CPjE1B,yBAA0B,CAD1B,yBAA0B,COiEZ,UXkoFhB,CW9nFY,oDPtEV,8XJosFF,CYpsFI,kBRAF,sYJ4sFF,CYvsFI,mCRNF,oCQGM,WAAY,CRAlB,yBAA0B,CAD1B,yBAA0B,CQApB,UZmtFR,CY/sFI,iBRLF,oaJotFF,CY1sFI,gBRXF,oCQaM,WAAY,CRZlB,0nCAEA,yBAA0B,CAD1B,yBAA0B,CQUpB,UZitFR,CY7sFI,8CACI,YZgtFR,CY9sFI,0BRnBF,mCQqBM,WAAY,CRpBlB,izCAEA,yBAA0B,CAD1B,yBAA0B,CQkBpB,UZqtFR,CYjtFI,yBRXF,8fQaM,WAAY,CADZ,UZqtFR,CYjtFI,yBRhBF,yqBQkBM,WAAY,CADZ,UZqtFR,CYjtFI,kBRlCF,mCQoCM,WAAY,CRnClB,6ZAEA,yBAA0B,CAD1B,yBAA0B,CQiCpB,UZwtFR,CYjtFI,uBR7BF,4zBQ+BM,WAAY,CADZ,UZqtFR,CYjtFI,wBRlCF,45BQoCM,WAAY,CADZ,UZqtFR,CY9sFI,sBR1CF,+9CJ2vFF,CY7sFI,sBR9CF,0lFJ8vFF,CY5sFI,sBRlDF,gbJiwFF,CY3sFI,sBRtDF,q5CJowFF,CY1sFI,sBR1DF,g9FJuwFF,CYzsFI,sBR9DF,6zDJ0wFF,CYxsFI,sBRlEF,shBJ6wFF,CYvsFI,6BRlFF,gzCJiyFF,CYzsFI,8CRzFF,mCQqFM,WAAY,CRlFlB,yBAA0B,CAD1B,yBAA0B,CQkFpB,UZstFR,CYjtFI,iBRxFF,yiBJyyFF,CY3sFI,iBR9FF,6cJizFF,CY7sFI,mCRrGF,mCQiGM,WAAY,CR9FlB,yBAA0B,CAD1B,yBAA0B,CQ8FpB,UZ0tFR,CYrtFI,kBRpGF,sYJyzFF,CY/sFI,mBR1GF,qSJi0FF,CYjtFI,+CRjHF,mCQ6GM,WAAY,CR1GlB,yBAA0B,CAD1B,yBAA0B,CQ0GpB,UZ8tFR,CYztFI,4BRhHF,8XJy0FF,CYjtFI,wCRxHF,snCJi1FF,CYptFI,gFR9HF,mCQ2HM,WAAY,CRxHlB,yBAA0B,CAD1B,yBAA0B,CQwHpB,UZguFR,CY5tFI,wCR7HF,otCJy1FF,CYvtFI,wCRlIF,ytCJi2FF,CY1tFI,8ERxIF,mCQqIM,WAAY,CR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a,CACb,sBAAuB,CAGvB,mBvBmmHZ,CuBxmHQ,gCAYQ,yBAHA,cAAe,CAFf,iBAAkB,CAClB,eAAgB,CAEhB,gBAAiB,CAGjB,QAAS,CAFT,iBvBsmHhB,CuBtpHA,4BAyDQ,iBvBgmHR,CuBzpHA,2CA4DY,SvBgmHZ,CuB5pHA,uBAmEQ,gBvB4lHR,CuB/pHA,eA4EQ,0BACA,iBAAkB,CAHlB,WAAY,CACZ,uBAA2B,CAF3B,iBAAkB,CADlB,WAAY,CAMZ,evB0lHR,CuBzlHQ,wBACI,mBvB2lHZ,CuBzlHQ,qBAOI,wBAHA,cAAe,CAFf,iBAAkB,CAClB,eAAgB,CAGhB,sBAAwB,CADxB,gBAAiB,CAJjB,QAAS,CAOT,iBvB2lHZ,CuBvlHI,wCAEQ,WvBylHV,CACF,CwBxrHI,6BpBEF,+VJ8rHF,CwB3rHI,0DpBJF,mCoBCI,WAAY,CpBEhB,yBAA0B,CAD1B,yBAA0B,CoBFtB,UxBusHN,CwBnsHI,6BpBHF,yWJssHF,CwB9rHI,sCpBRF,+aJ8sHF,CwBjsHI,mEpBdF,mCoBWI,WAAY,CpBRhB,yBAA0B,CAD1B,yBAA0B,CoBQtB,UxB6sHN,CwBzsHI,6BpBbF,qNJstHF,CwBpsHI,iCpBnBF,mCoBqBI,WAAY,CpBpBhB,w5CAEA,yBAA0B,CAD1B,yBAA0B,CoBkBtB,UxB2sHN,CwBvsHI,oCpBvBF,qOJsuHF,CwBzsHI,uEpB9BF,mCoB0BI,WAAY,CpBvBhB,yBAA0B,CAD1B,yBAA0B,CoBuBtB,UxBstHN,CwBjtHI,mCpB7BF,+bJ8uHF,CwB5sHI,+BpBlCF,ynBJsvHF,CwB/sHI,iEpBxCF,mCoBqCI,WAAY,CpBlChB,yBAA0B,CAD1B,yBAA0B,CoBkCtB,UxB2tHN,CwBvtHI,kCpBvCF,oPJ8vHF,CwBltHI,qCpB7CF,mCoB+CI,WAAY,CpB9ChB,4pBAEA,yBAA0B,CAD1B,yBAA0B,CoB4CtB,UxBytHN,CwBrtHI,iCpBjDF,wRJ8wHF,CwBxtHI,+DpBvDF,mCoBoDI,WAAY,CpBjDhB,yBAA0B,CAD1B,yBAA0B,CoBiDtB,UxBouHN,CwBhuHI,8BpBtDF,gWJsxHF,CwB3tHI,mCpB3DF,iPJ8xHF,CwB9tHI,oEpBjEF,mCoB8DI,WAAY,CpB3DhB,yBAA0B,CAD1B,yBAA0B,CoB2DtB,UxB0uHN,CwBtuHI,iCpBhEF,uhBJsyHF,CwB9tHI,wCpBxEF,miBJ8yHF,CwBjuHI,wEpB9EF,mCoB2EI,WAAY,CpBxEhB,yBAA0B,CAD1B,yBAA0B,CoBwEtB,UxB6uHN,CwBzuHI,gCpB7EF,qQJszHF,CwBpuHI,gCpBlFF,g7BJ8zHF,CwBvuHI,oEpBxFF,mCoBqFI,WAAY,CpBlFhB,yBAA0B,CAD1B,yBAA0B,CoBkFtB,UxBmvHN,CwB/uHI,oCpBvFF,wSJs0HF,CwB1uHI,mCpB5FF,qQJ80HF,CwB7uHI,0EpBlGF,mCoB+FI,WAAY,CpB5FhB,yBAA0B,CAD1B,yBAA0B,CoB4FtB,UxByvHN,CwBrvHI,uCpBjGF,olCJs1HF,CwB/uHI,wCpBvGF,2PJ81HF,CwBlvHI,iFpB7GF,mCoB0GI,WAAY,CpBvGhB,yBAA0B,CAD1B,yBAA0B,CoBuGtB,UxB8vHN,CwB1vHI,yCpB5GF,0PJs2HF,CwBrvHI,0CpBjHF,yPJ82HF,CwBxvHI,kFpBvHF,mCoBoHI,WAAY,CpBjHhB,yBAA0B,CAD1B,yBAA0B,CoBiHtB,UxBowHN,CwBhwHI,wCpBtHF,uPJs3HF,CwB3vHI,kCpB3HF,sTJ83HF,CwB9vHI,oEpBjIF,mCoB8HI,WAAY,CpB3HhB,yBAA0B,CAD1B,yBAA0B,CoB2HtB,UxB0wHN,CwBtwHI,kCpBhIF,qTJs4HF,CwBhwHI,8CpBtIF,2VJ84HF,CwBnwHI,6FpB5IF,mCoByII,WAAY,CpBtIhB,yBAA0B,CAD1B,yBAA0B,CoBsItB,UxB+wHN,CwB3wHI,+CpB3IF,oVJs5HF,CwBtwHI,4CpBhJF,sWJ85HF,CwBzwHI,wFpBtJF,mCoBmJI,WAAY,CpBhJhB,yBAA0B,CAD1B,yBAA0B,CoBgJtB,UxBqxHN,CwBjxHI,4CpBrJF,qWJs6HF,CwB5wHI,4CpB1JF,gjBJ86HF,CwB/wHI,qFpBhKF,mCoB6JI,WAAY,CpB1JhB,yBAA0B,CAD1B,yBAA0B,CoB0JtB,UxB2xHN,CwBvxHI,yCpB/JF,gkBJs7HF,CwBjxHI,0CpBrKF,0QJ87HF,CwBpxHI,qFpB3KF,mCoBwKI,WAAY,CpBrKhB,yBAA0B,CAD1B,yBAA0B,CoBqKtB,UxBgyHN,CwB5xHI,2CpB1KF,uRJs8HF,CwBvxHI,4CpB/KF,kRJ88HF,CwB1xHI,wFpBrLF,mCoBkLI,WAAY,CpB/KhB,yBAA0B,CAD1B,yBAA0B,CoB+KtB,UxBsyHN,CwBlyHI,4CpBpLF,8MJs9HF,CwB7xHI,2CpBzLF,uPJ89HF,CwBhyHI,wFpB/LF,mCoB4LI,WAAY,CpBzLhB,yBAA0B,CAD1B,yBAA0B,CoByLtB,UxB4yHN,CwBxyHI,6CpB9LF,yPJs+HF,CwBnyHI,4CpBnMF,yPJ8+HF,CwBtyHI,sFpBzMF,mCoBsMI,WAAY,CpBnMhB,yBAA0B,CAD1B,yBAA0B,CoBmMtB,UxBkzHN,CwB9yHI,0CpBxMF,uPJs/HF,CwBzyHI,6CpB7MF,wPJ8/HF,CwB5yHI,0FpBnNF,mCoBgNI,WAAY,CpB7MhB,yBAA0B,CAD1B,yBAA0B,CoB6MtB,UxBwzHN,CwBpzHI,6CpBlNF,wPJsgIF,CwB9yHI,sCpBxNF,8PJ8gIF,CwBjzHI,2EpB9NF,mCoB2NI,WAAY,CpBxNhB,yBAA0B,CAD1B,yBAA0B,CoBwNtB,UxB6zHN,CwBzzHI,qCpB7NF,8PJshIF,CwB/yHI,0EpBxOF,mCoB0OI,WAAY,CpBzOhB,+RAEA,yBAA0B,CAD1B,yBAA0B,CoBuOtB,UxB8zHN,CwB1zHI,wCpB5OF,8RJ8iIF,CwB5zHI,4EpBnPF,mCoB+OI,WAAY,CpB5OhB,yBAA0B,CAD1B,yBAA0B,CoB4OtB,UxBy0HN,CwBp0HI,oCpBlPF,4+BJsjIF,CwB/zHI,oCpBvPF,olCJ8jIF,CwBl0HI,uEpB7PF,mCoB0PI,WAAY,CpBvPhB,yBAA0B,CAD1B,yBAA0B,CoBuPtB,UxB80HN,CwB10HI,mCpB5PF,ynCJskIF,CwBr0HI,qCpBjQF,slCJ8kIF,CwBx0HI,6EpBvQF,mCoBoQI,WAAY,CpBjQhB,yBAA0B,CAD1B,yBAA0B,CoBiQtB,UxBo1HN,CwBh1HI,wCpBtQF,i9BJslIF,CwB30HI,qCpB3QF,gjCJ8lIF,CwB90HI,yEpBjRF,mCoB8QI,WAAY,CpB3QhB,yBAA0B,CAD1B,yBAA0B,CoB2QtB,UxB01HN,CwBt1HI,oCpBhRF,yiCJsmIF,CwBh1HI,0CpBtRF,6OJ8mIF,CwBn1HI,kFpB5RF,mCoByRI,WAAY,CpBtRhB,yBAA0B,CAD1B,yBAA0B,CoBsRtB,UxB+1HN,CwB31HI,wCpB3RF,6WJsnIF,CwBt1HI,yCpBhSF,6OJ8nIF,CwBz1HI,oFpBtSF,mCoBmSI,WAAY,CpBhShB,yBAA0B,CAD1B,yBAA0B,CoBgStB,UxBq2HN,CwBj2HI,2CpBrSF,gPJsoIF,CwB51HI,0CAEE,WAAY,CpB5ShB,gPoB2SI,UxBm2HN,CwB91HI,uEpBjTF,mCAGA,yBAA0B,CAD1B,yBJqpIF,CwBt2HI,6BAEE,WAAY,CpBlThB,iZoBiTI,UxBq2HN,CwBj2HI,sCpBzSF,m6GoB2SI,WAAY,CADZ,UxBq2HN,CwBh2HI,kCpB3TF,kaJmqIF,CwBn2HI,oEpBjUF,wCoB8TI,WAAY,CpB3ThB,yBAA0B,CAD1B,yBAA0B,CoB2TtB,UxB+2HN,CwB32HI,kCpBhUF,icJ2qIF,CwBt2HI,kCpBrUF,moBJmrIF,CwBz2HI,oEpB3UF,wCoBwUI,WAAY,CpBrUhB,yBAA0B,CAD1B,yBAA0B,CoBqUtB,UxBq3HN,CwBj3HI,kCpB1UF,gUJ2rIF,CwB52HI,uCpBhVF,mCoBkVI,WAAY,CpBjVhB,yWAEA,yBAA0B,CAD1B,yBAA0B,CoB+UtB,UxBm3HN,CwBz2HI,mCpB1VF,ibJmtIF,CwBp3HI,wEpBhWF,mCoB6VI,WAAY,CpB1VhB,yBAA0B,CAD1B,yBAA0B,CoB0VtB,UxBg4HN,CwB53HI,qCpB/VF,wVJ2tIF,CwBv3HI,iCpBrWF,mCoBuWI,WAAY,CpBtWhB,q9BAEA,yBAA0B,CAD1B,yBAA0B,CoBoWtB,UxB83HN,CwB13HI,kCpBzWF,yWJ2uIF,CwB73HI,sEpB/WF,mCoB4WI,WAAY,CpBzWhB,yBAA0B,CAD1B,yBAA0B,CoByWtB,UxBy4HN,CwBr4HI,oCpB9WF,wPJmvIF,CwB/3HI,8BpBpXF,21BJ2vIF,CwBl4HI,6DpB1XF,mCoBuXI,WAAY,CpBpXhB,yBAA0B,CAD1B,yBAA0B,CoBoXtB,UxB84HN,CwB14HI,+BpBzXF,uWJmwIF,CwBr4HI,uCpB9XF,qVJ2wIF,CwBx4HI,8EpBpYF,mCoBiYI,WAAY,CpB9XhB,yBAA0B,CAD1B,yBAA0B,CoB8XtB,UxBo5HN,CwBh5HI,uCpBnYF,gZJmxIF,CwB34HI,uCpBxYF,qaJ2xIF,CwB94HI,sEpB9YF,mCoB2YI,WAAY,CpBxYhB,yBAA0B,CAD1B,yBAA0B,CoBwYtB,UxB05HN,CwBt5HI,+BpB7YF,kNJmyIF,CwBj5HI,+BpBlZF,sOJ2yIF,CwBp5HI,mEpBxZF,mCoBqZI,WAAY,CpBlZhB,yBAA0B,CAD1B,yBAA0B,CoBkZtB,UxBg6HN,CwB55HI,oCpBvZF,iWJmzIF,CwBv5HI,oCpB5ZF,+VJ2zIF,CwB15HI,iEpBlaF,mCoB+ZI,WAAY,CpB5ZhB,yBAA0B,CAD1B,yBAA0B,CoB4ZtB,UxBs6HN,CwBl6HI,6BpBjaF,qTJm0IF,CwB35HI,kCpBxaF,0XJ20IF,CwB95HI,sEpB9aF,mCoB2aI,WAAY,CpBxahB,yBAA0B,CAD1B,yBAA0B,CoBwatB,UxB06HN,CwBt6HI,oCpB7aF,kZJm1IF,CwBj6HI,sCpBnbF,mCoBqbI,WAAY,CpBpbhB,wqBAEA,yBAA0B,CAD1B,yBAA0B,CoBkbtB,UxBw6HN,CwBl6HI,qCpB1bF,sCoB4bI,WAAY,CpB3bhB,qfAEA,yBAA0B,CAD1B,yBAA0B,CoBybtB,UxBy6HN,CwBr6HI,wCpB/bF,mCoBicI,WAAY,CpBhchB,+WAEA,yBAA0B,CAD1B,yBAA0B,CoB8btB,UxB46HN,CwBx6HI,8CpBvbF,0ZoBybI,WAAY,CADZ,UxB46HN,CwBx6HI,uCpBxcF,w4BJw3IF,CwB36HI,sEpB9cF,mCoB2cI,WAAY,CpBxchB,yBAA0B,CAD1B,yBAA0B,CoBwctB,UxBu7HN,CwBn7HI,+BpB7cF,0cJg4IF,CwB96HI,mCpBldF,k+BJw4IF,CwBj7HI,sEpBxdF,mCoBqdI,WAAY,CpBldhB,yBAA0B,CAD1B,yBAA0B,CoBkdtB,UxB67HN,CwBz7HI,mCpBvdF,09BJg5IF,CwBj7HM,mDpB/dJ,2TJw5IF,CwBp7HM,sGpBreJ,mCoBkeM,WAAY,CpB/dlB,yBAA0B,CAD1B,yBAA0B,CoB+dpB,UxBg8HR,CwB57HM,mDpBpeJ,iaJg6IF,CwBv7HM,mDpBzeJ,mnBJw6IF,CwB17HM,sGpB/eJ,mCoB4eM,WAAY,CpBzelB,yBAA0B,CAD1B,yBAA0B,CoByepB,UxBs8HR,CwBl8HM,mDpB9eJ,8UJg7IF,CyBj7IM,yCrBCJ,iSJw7IF,CyBp7IM,kFrBLJ,sCqBEM,WAAY,CrBClB,yBAA0B,CAD1B,yBAA0B,CqBDpB,UzBg8IR,CyB57IM,yCrBJJ,gSJg8IF,CyBv7IM,kDrBTJ,+cJw8IF,CyB17IM,2FrBfJ,sCqBYM,WAAY,CrBTlB,yBAA0B,CAD1B,yBAA0B,CqBSpB,UzBs8IR,CyBl8IM,yCrBdJ,oNJg9IF,CyB77IM,6CrBpBJ,sCqBsBM,WAAY,CrBrBlB,s5BAEA,yBAA0B,CAD1B,yBAA0B,CqBmBpB,UzBo8IR,CyBh8IM,yCrBxBJ,8OJg+IF,CyBn8IM,kFrB9BJ,sCqB2BM,WAAY,CrBxBlB,yBAA0B,CAD1B,yBAA0B,CqBwBpB,UzB+8IR,CyB38IM,yCrB7BJ,yOJw+IF,CyBt8IM,gDrBnCJ,mCqBqCM,WAAY,CrBpClB,+MAEA,yBAA0B,CAD1B,yBAA0B,CqBkCpB,UzB68IR,CyBx8IM,8CrBxCJ,qRJw/IF,CyB38IM,4FrB9CJ,2CqB2CM,WAAY,CrBxClB,yBAA0B,CAD1B,yBAA0B,CqBwCpB,UzBu9IR,CyBn9IM,8CrB7CJ,oXJggJF,CyB98IM,8CrBlDJ,wrBJwgJF,CyBj9IM,4FrBxDJ,2CqBqDM,WAAY,CrBlDlB,yBAA0B,CAD1B,yBAA0B,CqBkDpB,UzB69IR,CyBz9IM,8CrBvDJ,qUJghJF,CyBl9IM,gDrB9DJ,qZJwhJF,CyBr9IM,kGrBpEJ,sCqBiEM,WAAY,CrB9DlB,yBAA0B,CAD1B,yBAA0B,CqB8DpB,UzBi+IR,CyB79IM,kDrBnEJ,0qBJgiJF,CyBx9IM,0CrBxEJ,yPJwiJF,CyB19IM,yFrB/EJ,sCqB2EM,WAAY,CrBxElB,yBAA0B,CAD1B,yBAA0B,CqBwEpB,UzBu+IR,CyBl+IM,+CrB9EJ,8+BJgjJF,CyB79IM,+CrBnFJ,s+BJwjJF,CyBh+IM,0FrBzFJ,sCqBsFM,WAAY,CrBnFlB,yBAA0B,CAD1B,yBAA0B,CqBmFpB,UzB4+IR,CyBx+IM,2CrBxFJ,0cJgkJF,CyBn+IM,2CrB7FJ,uZJwkJF,CyBt+IM,yFrBnGJ,sCqBgGM,WAAY,CrB7FlB,yBAA0B,CAD1B,yBAA0B,CqB6FpB,UzBk/IR,CyB9+IM,8CrBlGJ,knBJglJF,CyBt+II,iCrB3GF,mCACA,iNJwlJF,CyBz+II,mEAHE,WAAY,CrB1GhB,yBAA0B,CAD1B,yBAA0B,CqB0GtB,UzBq/IN,CyBj/II,kCrBhHF,mCACA,sPJgmJF,CyB5+II,wCrBpHF,uOJwmJF,CyB/+II,8ErB1HF,mCqBuHI,WAAY,CrBpHhB,yBAA0B,CAD1B,yBAA0B,CqBoHtB,UzB2/IN,CyBv/II,sCrBzHF,iNJgnJF,CyBj/II,uCrB/HF,+bJwnJF,CyBp/II,0ErBrIF,mCqBkII,WAAY,CrB/HhB,yBAA0B,CAD1B,yBAA0B,CqB+HtB,UzBggJN,CyB5/II,mCrBpIF,ynBJgoJF,CyBv/II,sCAEE,WAAY,CrB3IhB,qPqB0II,UzB8/IN,CyB1/II,+ErB/IF,mCAGA,yBAA0B,CAD1B,yBJ+oJF,CyBlgJI,yCAEE,WAAY,CrBhJhB,4pBqB+II,UzBigJN,CyB7/II,qCrBnJF,wRJwpJF,CyBhgJI,uErBzJF,mCqBsJI,WAAY,CrBnJhB,yBAA0B,CAD1B,yBAA0B,CqBmJtB,UzB4gJN,CyBxgJI,kCrBxJF,gWJgqJF,CyBngJI,2CrB9JF,mCqBgKI,WAAY,CrB/JhB,2dAEA,yBAA0B,CAD1B,yBAA0B,CqB6JtB,UzB0gJN,CyBtgJI,uCrBlKF,iPJgrJF,CyBzgJI,4ErBxKF,mCqBqKI,WAAY,CrBlKhB,yBAA0B,CAD1B,yBAA0B,CqBkKtB,UzBqhJN,CyBjhJI,qCrBvKF,+dJwrJF,CyB1gJI,mCrB9KF,0cJgsJF,CyB7gJI,6ErBpLF,mCqBiLI,WAAY,CrB9KhB,yBAA0B,CAD1B,yBAA0B,CqB8KtB,UzByhJN,CyBrhJI,0CrBnLF,sxBJwsJF,CyBhhJI,yCrBxLF,kjBJgtJF,CyBjhJI,iFrBhMF,mCqB2LI,WAAY,CrBxLhB,yBAA0B,CAD1B,yBAA0B,CqBwLtB,UzB+hJN,CyBzhJI,wCrB/LF,kZJwtJF,CyBphJI,sCrBrMF,mCqBuMI,WAAY,CrBtMhB,2XAEA,yBAA0B,CAD1B,yBAA0B,CqBoMtB,UzB2hJN,CyBrhJI,4CrB3MF,2PJwuJF,CyBxhJI,yFrBjNF,mCqB8MI,WAAY,CrB3MhB,yBAA0B,CAD1B,yBAA0B,CqB2MtB,UzBoiJN,CyBhiJI,6CrBhNF,0PJgvJF,CyB3hJI,8CrBrNF,yPJwvJF,CyB9hJI,0FrB3NF,mCqBwNI,WAAY,CrBrNhB,yBAA0B,CAD1B,yBAA0B,CqBqNtB,UzB0iJN,CyBtiJI,4CrB1NF,uPJgwJF,CyBjiJI,sCrB/NF,sTJwwJF,CyBpiJI,4ErBrOF,mCqBkOI,WAAY,CrB/NhB,yBAA0B,CAD1B,yBAA0B,CqB+NtB,UzBgjJN,CyB5iJI,sCrBpOF,qTJgxJF,CyBtiJI,kDrB1OF,2VJwxJF,CyBziJI,qGrBhPF,mCqB6OI,WAAY,CrB1OhB,yBAA0B,CAD1B,yBAA0B,CqB0OtB,UzBqjJN,CyBjjJI,mDrB/OF,oVJgyJF,CyB5iJI,gDrBpPF,sWJwyJF,CyB/iJI,gGrB1PF,mCqBuPI,WAAY,CrBpPhB,yBAA0B,CAD1B,yBAA0B,CqBoPtB,UzB2jJN,CyBvjJI,gDrBzPF,qWJgzJF,CyBljJI,gDrB9PF,gjBJwzJF,CyBrjJI,6FrBpQF,mCqBiQI,WAAY,CrB9PhB,yBAA0B,CAD1B,yBAA0B,CqB8PtB,UzBikJN,CyB7jJI,6CrBnQF,gkBJg0JF,CyBxjJI,yCrBzQF,mCqB2QI,WAAY,CrB1QhB,qVAEA,yBAA0B,CAD1B,yBAA0B,CqBwQtB,UzB+jJN,CyB1jJI,8CrB9QF,0QJg1JF,CyB7jJI,6FrBpRF,mCqBiRI,WAAY,CrB9QhB,yBAA0B,CAD1B,yBAA0B,CqB8QtB,UzBykJN,CyBrkJI,+CrBnRF,uRJw1JF,CyBhkJI,gDrBxRF,kRJg2JF,CyBnkJI,gGrB9RF,mCqB2RI,WAAY,CrBxRhB,yBAA0B,CAD1B,yBAA0B,CqBwRtB,UzB+kJN,CyB3kJI,gDrB7RF,8MJw2JF,CyBtkJI,+CrBlSF,uPJg3JF,CyBzkJI,gGrBxSF,mCqBqSI,WAAY,CrBlShB,yBAA0B,CAD1B,yBAA0B,CqBkStB,UzBqlJN,CyBjlJI,iDrBvSF,yPJw3JF,CyB5kJI,gDrB5SF,yPJg4JF,CyB/kJI,8FrBlTF,mCqB+SI,WAAY,CrB5ShB,yBAA0B,CAD1B,yBAA0B,CqB4StB,UzB2lJN,CyBvlJI,8CrBjTF,uPJw4JF,CyBllJI,iDrBtTF,wPJg5JF,CyBrlJI,kGrB5TF,mCqByTI,WAAY,CrBtThB,yBAA0B,CAD1B,yBAA0B,CqBsTtB,UzBimJN,CyB7lJI,iDrB3TF,wPJw5JF,CyBvlJI,0CrBjUF,8PJg6JF,CyB1lJI,mFrBvUF,mCqBoUI,WAAY,CrBjUhB,yBAA0B,CAD1B,yBAA0B,CqBiUtB,UzBsmJN,CyBlmJI,yCrBtUF,8PJw6JF,CyBxlJI,kFrBjVF,mCqBmVI,WAAY,CrBlVhB,+RAEA,yBAA0B,CAD1B,yBAA0B,CqBgVtB,UzBumJN,CyBnmJI,4CrBrVF,8RJg8JF,CyBrmJI,yFrB5VF,mCqBwVI,WAAY,CrBrVhB,yBAA0B,CAD1B,yBAA0B,CqBqVtB,UzBknJN,CyB7mJI,6CrB3VF,6OJw8JF,CyBxmJI,+CrBhWF,gPJg9JF,CyB3mJI,6FrBtWF,mCqBmWI,WAAY,CrBhWhB,yBAA0B,CAD1B,yBAA0B,CqBgWtB,UzBunJN,CyBnnJI,8CrBrWF,+OJw9JF,CyB7mJI,iCAEE,WAAY,CrB7WhB,2tBqB4WI,UzBonJN,CyBhnJI,2ErBjXF,mCAGA,yBAA0B,CAD1B,yBJu+JF,CyBxnJI,0CAEE,WAAY,CrBlXhB,+xBqBiXI,UzBunJN,CyB7mJI,uCrB3XF,ygBJw/JF,CyBxnJI,gFrBjYF,mCqB8XI,WAAY,CrB3XhB,yBAA0B,CAD1B,yBAA0B,CqB2XtB,UzBooJN,CyBhoJI,yCrBhYF,omBJggKF,CyB3nJI,qCrBtYF,mCqBwYI,WAAY,CrBvYhB,6yBAEA,yBAA0B,CAD1B,yBAA0B,CqBqYtB,UzBkoJN,CyB9nJI,sCrB1YF,6nBJghKF,CyBjoJI,8ErBhZF,mCqB6YI,WAAY,CrB1YhB,yBAA0B,CAD1B,yBAA0B,CqB0YtB,UzB6oJN,CyBzoJI,wCrB/YF,oRJwhKF,CyBnoJI,kCrBrZF,+2BJgiKF,CyBtoJI,qErB3ZF,mCqBwZI,WAAY,CrBrZhB,yBAA0B,CAD1B,yBAA0B,CqBqZtB,UzBkpJN,CyB9oJI,mCrB1ZF,krBJwiKF,CyBzoJI,2CrB/ZF,gcJgjKF,CyB5oJI,sFrBraF,mCqBkaI,WAAY,CrB/ZhB,yBAA0B,CAD1B,yBAA0B,CqB+ZtB,UzBwpJN,CyBppJI,2CrBpaF,ugBJwjKF,CyB/oJI,2CrBzaF,kjBJgkKF,CyBlpJI,8ErB/aF,mCqB4aI,WAAY,CrBzahB,yBAA0B,CAD1B,yBAA0B,CqByatB,UzB8pJN,CyB1pJI,mCrB9aF,kNJwkKF,CyBrpJI,mCrBnbF,sOJglKF,CyBxpJI,2ErBzbF,mCqBsbI,WAAY,CrBnbhB,yBAA0B,CAD1B,yBAA0B,CqBmbtB,UzBoqJN,CyBhqJI,wCrBxbF,4OJwlKF,CyB3pJI,wCrB7bF,oPJgmKF,CyB9pJI,yErBncF,mCqBgcI,WAAY,CrB7bhB,yBAA0B,CAD1B,yBAA0B,CqB6btB,UzB0qJN,CyBtqJI,iCrBlcF,0UJwmKF,CyB/pJI,yCrB1cF,sCqB4cI,WAAY,CrB3chB,q0BAEA,yBAA0B,CAD1B,yBAA0B,CqByctB,UzBsqJN,CyBlqJI,4CrB/cF,mCqBidI,WAAY,CrBhdhB,uPAEA,yBAA0B,CAD1B,yBAA0B,CqB8ctB,UzByqJN,CyBrqJI,kDrBvcF,6OqBycI,WAAY,CADZ,UzByqJN,CyBrqJI,yCrBxdF,sPJqoKF,CyBxqJI,oFrB9dF,mCqB2dI,WAAY,CrBxdhB,yBAA0B,CAD1B,yBAA0B,CqBwdtB,UzBorJN,CyBhrJI,2CrB7dF,6eJ6oKF,CyB3qJI,+CrBneF,mCqBqeI,WAAY,CrBpehB,uPAEA,yBAA0B,CAD1B,yBAA0B,CqBketB,UzBkrJN,C0BtpKI,wBtBaF,6VsBXM,WAAY,CADZ,U1B0pKR,C0BrpKI,yBtBOF,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","sources":["webpack://documenteditor/../../apps/common/mobile/resources/less/colors-table.less","webpack://documenteditor/../../apps/documenteditor/mobile/src/less/app.less","webpack://documenteditor/../../apps/common/mobile/resources/less/colors-table-dark.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common-rtl.less","webpack://documenteditor/../../apps/common/mobile/resources/less/icons.rtl.less","webpack://documenteditor/../../apps/common/mobile/resources/less/_mixins.less","webpack://documenteditor/../../apps/common/mobile/resources/less/collaboration.less","webpack://documenteditor/../../apps/common/mobile/resources/less/about.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common-ios.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common-material.less","webpack://documenteditor/../../apps/common/mobile/resources/less/ios/icons.less","webpack://documenteditor/../../apps/common/mobile/resources/less/material/icons.less","webpack://documenteditor/../../apps/common/mobile/resources/less/icons.less","webpack://documenteditor/../../apps/common/mobile/resources/less/dataview.less","webpack://documenteditor/../../apps/common/mobile/resources/less/search.less","webpack://documenteditor/./node_modules/framework7/less/mixins.less","webpack://documenteditor/../../apps/common/mobile/resources/less/ios/contextmenu.less","webpack://documenteditor/../../apps/common/mobile/resources/less/material/contextmenu.less","webpack://documenteditor/../../apps/common/mobile/resources/less/contextmenu.less","webpack://documenteditor/../../apps/common/mobile/resources/less/ios/comments.less","webpack://documenteditor/../../apps/common/mobile/resources/less/material/comments.less","webpack://documenteditor/../../apps/common/mobile/resources/less/comments.less","webpack://documenteditor/../../apps/documenteditor/mobile/src/less/app-material.less","webpack://documenteditor/../../apps/documenteditor/mobile/src/less/app-ios.less","webpack://documenteditor/../../apps/documenteditor/mobile/src/less/icons-ios.less","webpack://documenteditor/../../apps/documenteditor/mobile/src/less/icons-material.less","webpack://documenteditor/../../apps/documenteditor/mobile/src/less/icons-common.less"],"sourcesContent":["\n:root {\n --brand-word: #446995;\n --brand-cell: #40865C;\n --brand-slide: #BE664F;\n --brand-form: #BE664F;\n --brand-primary: #3880BE;\n --brand-secondary: #ED7309;\n --brand-text-on-brand: #FFF;\n\n --background-primary: #FFF;\n --background-secondary: #FFF;\n --background-tertiary: #EFF0F5;\n --background-menu-divider: fade(#3C3C43, 15%);\n --background-button: #EFF0F5;\n\n --text-normal: #000000;\n --text-secondary: fade(#000, 60%);\n --text-tertiary: fade(#000, 40%);\n --text-link: #007AFF;\n --text-error: #FF3B30;\n\n --fill-black: #000;\n --fill-white: #FFF;\n\n --toolbar-background: #446995;\n --toolbar-icons: #FFF;\n --toolbar-segment: #446995;\n --toolbar-tab-normal:fade(#FFF, 50%);\n\n --component-disabled-opacity: .4;\n\n --active-opacity-word: fade(#446995, 30%);\n --active-opacity-slide: fade(#BE664F, 30%);\n --active-opacity-cell: fade(#40865C, 30%);\n\n --image-border-types-filter: none;\n\n // Canvas\n\n --canvas-background: #eee;\n --canvas-content-background: #fff;\n --canvas-page-border: #ccc;\n\n --canvas-ruler-background: #fff;\n //--canvas-ruler-border: #cbcbcb;\n --canvas-ruler-margins-background: #d9d9d9;\n --canvas-ruler-mark: #555;\n --canvas-ruler-handle-border: #555;\n --canvas-ruler-handle-border-disabled: #aaa;\n\n --canvas-high-contrast: #000;\n //--canvas-high-contrast-disabled: #666;\n\n --canvas-cell-border: fade(#000, 10%);\n //--canvas-cell-title-hover: #dfdfdf;\n --canvas-cell-title-selected: #cfcfcf;\n --canvas-cell-title-border: #d8d8d8;\n //--canvas-cell-title-border-hover: #c9c9c9;\n --canvas-cell-title-border-selected: #bbb;\n\n --canvas-dark-cell-title: #444;\n //--canvas-dark-cell-title-hover: #666 ;\n --canvas-dark-cell-title-selected: #111;\n --canvas-dark-cell-title-border: #3d3d3d;\n //--canvas-dark-cell-title-border-hover: #5c5c5c;\n --canvas-dark-cell-title-border-selected: #0f0f0f;\n --canvas-dark-content-background: #3a3a3a;\n --canvas-dark-page-border: #2a2a2a;\n\n //--canvas-scroll-thumb: #f7f7f7;\n //--canvas-scroll-thumb-hover: #c0c0c0;\n //--canvas-scroll-thumb-pressed: #adadad;\n //--canvas-scroll-thumb-border: #cbcbcb;\n //--canvas-scroll-thumb-border-hover: #cbcbcb;\n //--canvas-scroll-thumb-border-pressed: #adadad;\n //--canvas-scroll-arrow: #adadad;\n //--canvas-scroll-arrow-hover: #f7f7f7;\n //--canvas-scroll-arrow-pressed: #f7f7f7;\n //--canvas-scroll-thumb-target: #c0c0c0;\n //--canvas-scroll-thumb-target-hover: #f7f7f7;\n //--canvas-scroll-thumb-target-pressed: #f7f7f7;\n}\n\n@brand-word: var(--brand-word);\n@brand-cell: var(--brand-cell);\n@brand-slide: var(--brand-slide);\n@brand-form: var(--brand-form);\n@brand-primary: var(--brand-primary);\n@brand-secondary: var(--brand-secondary);\n@brand-text-on-brand: var(--brand-text-on-brand);\n\n@background-primary: var(--background-primary);\n@background-secondary: var(--background-secondary);\n@background-tertiary: var(--background-tertiary);\n@background-menu-divider: var(--background-menu-divider);\n@background-button: var(--background-button);\n\n@text-normal: var(--text-normal);\n@text-secondary: var(--text-secondary);\n@text-tertiary: var(--text-tertiary);\n@text-link: var(--text-link);\n@text-error: var(--text-error);\n\n@fill-black: var(--fill-black);\n@fill-white: var(--fill-white);\n\n@toolbar-icons: var(--toolbar-icons);\n@toolbar-segment: var(--toolbar-segment);\n@toolbar-tab-normal: var(--toolbar-tab-normal);\n\n@component-disabled-opacity: var(--component-disabled-opacity);\n","@import '../../../../../vendor/framework7-react/node_modules/framework7/less/mixins.less';\n@import '../../../../common/mobile/resources/less/_mixins.less';\n@import '../../../../common/mobile/resources/less/colors-table.less';\n@import '../../../../common/mobile/resources/less/colors-table-dark.less';\n@import './app-rtl.less';\n\n@brandColor: var(--brand-word);\n\n.device-ios {\n --toolbar-background: var(--background-primary, #FFF);\n --toolbar-segment: var(--brand-word, #446995);\n --toolbar-icons: var(--brand-word, #446995);\n --f7-toolbar-border-color: var(--background-menu-divider);\n --f7-bars-border-color: var(--background-menu-divider);\n --f7-calendar-row-border-color: var(--background-menu-divider);\n}\n\n.device-android {\n --toolbar-background: var(--brand-word, #446995);\n\n .theme-type-dark {\n --toolbar-icons: var(--brand-word, #446995);\n }\n}\n\n@toolbar-background: var(--toolbar-background);\n@toolbar-segment: var(--toolbar-segment);\n@button-active-opacity: var(--active-opacity-word);\n\n@import '../../../../common/mobile/resources/less/collaboration.less';\n@import '../../../../common/mobile/resources/less/common.less';\n@import '../../../../common/mobile/resources/less/common-ios.less';\n@import '../../../../common/mobile/resources/less/common-material.less';\n@import '../../../../common/mobile/resources/less/icons.less';\n@import '../../../../common/mobile/resources/less/dataview.less';\n@import '../../../../common/mobile/resources/less/search.less';\n@import '../../../../common/mobile/resources/less/contextmenu.less';\n@import '../../../../common/mobile/resources/less/comments.less';\n@import './app-material.less';\n@import './app-ios.less';\n@import './icons-ios.less';\n@import './icons-material.less';\n@import './icons-common.less';\n\n:root {\n --f7-popover-width: 360px;\n}\n\n// Skeleton of document\n\n.doc-placeholder {\n position: relative;\n background: #fbfbfb;\n padding-top: calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-subnavbar-offset, 0px));\n overflow: hidden;\n height: 100%;\n\n > .line {\n height: 15px;\n margin: 30px;\n background: #e2e2e2;\n overflow: hidden;\n position: relative;\n\n -webkit-animation: flickerAnimation 2s infinite ease-in-out;\n -moz-animation: flickerAnimation 2s infinite ease-in-out;\n -o-animation: flickerAnimation 2s infinite ease-in-out;\n animation: flickerAnimation 2s infinite ease-in-out;\n }\n}\n\n.page.page-with-subnavbar {\n .page-content, &.page-with-logo .page-content {\n --f7-page-subnavbar-offset: 0;\n padding-top: 0;\n }\n}\n\n.page.editor > .page-content {\n --f7-page-navbar-offset: 0;\n}\n\n// Review\n.page-review {\n --f7-toolbar-link-color: @brandColor;\n \n .toolbar {\n background-color: @background-secondary;\n box-shadow: 0 1px 10px rgba(0, 0, 0, 0.2);\n position: absolute;\n\n #btn-goto-change {\n margin-left: 10px;\n }\n\n .next-prev {\n .link {\n width: 44px;\n }\n }\n }\n .page-content {\n // background-color: @white;\n .no-changes {\n padding: 15px;\n color: @text-normal;\n }\n .block-description {\n padding: 15px;\n .user-name {\n font-size: 17px;\n line-height: 22px;\n color: @text-normal;\n margin: 0;\n }\n .date-change {\n font-size: 14px;\n line-height: 18px;\n color: @text-secondary;\n margin: 0;\n margin-top: 3px;\n }\n .text {\n color: @text-normal;\n font-size: 15px;\n line-height: 20px;\n margin: 0;\n margin-top: 10px;\n }\n }\n }\n}\n\n.item-content {\n .preview{\n color: @gray;\n }\n}\n\n.phone, .tablet {\n .swiper-container{\n position: static;\n }\n}\n\n// Swiper\n.swiper-container {\n // height: 100%;\n .swiper-pagination-bullet-active{\n background: @black;\n }\n // .multilevels {\n // li:not(:first-child){ \n // border:none;\n // .item-content {\n // min-height: 70px;\n // }\n // }\n // }\n}\n\n// Skeleton table\n\n.table-styles .row div:not(:first-child) {\n margin: 2px auto 0px;\n}\n.table-styles .skeleton-list li, .table-styles .row div {\n padding: 0;\n}\n.table-styles .row .skeleton-list{\n display: block;\n width: 70px;\n height: 50px;\n}\n\n// Table of Contents\n\n.item-contents {\n padding: 0 16px;\n}\n\n.style-toc {\n &__image {\n margin: 0 15px;\n max-height: 150px;\n overflow: hidden;\n &_active {\n border: 1.5px solid @brandColor;\n }\n }\n}\n\n.block > .block-title:first-child, .list > .block-title:first-child {\n margin-top: var(--f7-block-margin-vertical);\n margin-left: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left)); \n margin-right: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));\n}\n\n// Navigation \n\n.empty-screens {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n height: 100%;\n &__icon {\n margin-bottom: 48px;\n }\n &__text {\n margin: 0 32px;\n text-align: center;\n color: @text-normal;\n }\n}\n\n.swipe-container {\n display: flex;\n justify-content: center;\n height: 40px;\n background-color: @background-primary;\n .icon-swipe {\n margin-top: 8px;\n width: 40px;\n height: 4px;\n background: @background-menu-divider;\n border-radius: 2px;\n }\n}\n\n.sheet-modal.navigation-sheet {\n box-shadow: 0px -2px 20px rgba(0, 0, 0, 0.2);\n .sheet-modal-inner {\n background: @background-tertiary;\n overflow-y: auto;\n }\n .swipe-container {\n position: fixed;\n top: 0;\n width: 100%;\n z-index: 1000;\n }\n &.sheet-modal-bottom:before, &.sheet-modal:not(.sheet-modal-top):before {\n display: none;\n }\n}\n\n.list.navigation-list {\n margin-top: 72px;\n .item-title {\n color: @text-normal;\n }\n}\n\n.navigation-sheet {\n &__title {\n position: fixed;\n left: 0;\n width: 100%;\n z-index: 100;\n top: 40px;\n z-index: 1000;\n right: 0;\n }\n}\n\n// Calendar\n.calendar {\n background-color: @background-secondary;\n .toolbar {\n background-color: @background-secondary;\n i.icon.icon-next, i.icon.icon-prev {\n background-color: @text-normal;\n }\n &:after {\n background-color: @background-menu-divider;\n }\n }\n .calendar-row {\n padding: 0 16px;\n &:before {\n display: none;\n }\n }\n .current-year-value, .current-month-value {\n color: @text-normal;\n font-size: 16px;\n }\n .calendar-day-selected .calendar-day-number, .calendar-day-today.calendar-day-selected .calendar-day-number {\n border: 1px solid transparent;\n background-color: @brandColor;\n color: @fill-white;\n }\n .calendar-day-selected.calendar-day-weekend .calendar-day-number {\n color: @fill-white;\n }\n .calendar-day-today .calendar-day-number {\n border: 1px solid @brandColor;\n background-color: transparent;\n }\n .calendar-day-weekend .calendar-day-number {\n color: @text-secondary;\n }\n .calendar-day-number {\n color: @text-normal;\n font-size: 14px;\n font-weight: 500;\n width: 47px;\n height: 32px;\n border-radius: 16px;\n }\n .calendar-week-header {\n margin: 25px 16px 10px 16px;\n background-color: @background-secondary;\n color: @text-normal;\n border-bottom: 1px solid @background-menu-divider;\n padding-bottom: 5px;\n height: auto;\n .calendar-week-day {\n color: @text-normal;\n font-size: 12px;\n }\n }\n .calendar-months {\n margin-bottom: 12px;\n }\n .calendar-month-picker-item, .calendar-year-picker-item {\n color: @text-normal;\n &:before, &:after {\n background-color: @background-menu-divider;\n }\n }\n .calendar-month-picker, .calendar-year-picker {\n background: @background-secondary;\n }\n .calendar-month-picker-item-current, .calendar-year-picker-item-current {\n color: @brandColor;\n }\n}\n\n.calendar-sheet {\n .calendar-month-picker, .calendar-year-picker {\n border-top: 1px solid var(--background-menu-divider);\n }\n}\n\n.create-style-link {\n .item-link .item-inner:before {\n display: none;\n }\n .item-title {\n color: @brandColor;\n }\n}\n\n// FAB\n.fab {\n z-index: 10000;\n a {\n background-color: @background-primary;\n border-radius: 50%;\n\n &:focus, &:focus-within, &:active, &.active-state {\n background-color: @background-primary;\n }\n }\n}\n\n// Snackbar and FAB animation\n.snackbar-enter, .fab-enter {\n opacity: 0;\n}\n.snackbar-enter-active, .fab-enter-active {\n opacity: 1;\n transition: opacity 300ms;\n}\n.snackbar-exit, .fab-exit {\n opacity: 1;\n}\n.snackbar-exit-active, .fab-exit-active {\n opacity: 0;\n transition: opacity 300ms;\n}\n\n\n","\n:root {\n .theme-type-dark,\n .theme-dark {\n --background-primary: #232323;\n --background-secondary: #333;\n --background-tertiary: #131313;\n --background-menu-divider: fade(#545458, 50%);\n --background-button: #333333;\n\n --text-normal: fade(#FFF, 87%);\n --text-secondary: fade(#FFF, 60%);\n --text-tertiary: fade(#FFF, 40%);\n --text-link: #1976D2;\n --text-error: #FF453A;\n\n --fill-black: #000;\n --fill-white: #FFF;\n\n --brand-word: #208BFF;\n --brand-cell: #34C759;\n --brand-slide: #FE8C33;\n --brand-form: #FE8C33;\n --brand-primary: #3E9CF0;\n --brand-secondary: #FFAF49;\n --brand-text-on-brand: #000;\n\n --toolbar-background: #232323;\n --toolbar-icons: #208BFF;\n --toolbar-segment: #FFF;\n --toolbar-tab-normal: #757575;\n\n --component-disabled-opacity: .4;\n\n --image-border-types-filter: invert(100%) brightness(4);\n\n --active-opacity-word: fade(#446995, 20%);\n --active-opacity-slide: fade(#BE664F, 20%);\n --active-opacity-cell: fade(#40865C, 20%);\n\n --image-border-types-filter: invert(100%) brightness(4);\n\n // Canvas\n\n --canvas-background: #000;\n --canvas-content-background: #fff;\n --canvas-page-border: #303030;\n\n --canvas-ruler-background: #636366;\n //--canvas-ruler-border: #2A2A2A;\n --canvas-ruler-margins-background: #3a3a3c;\n --canvas-ruler-mark: #8e8e93;\n --canvas-ruler-handle-border: #636366;\n --canvas-ruler-handle-border-disabled: #636366;\n\n --canvas-high-contrast: #000;\n //--canvas-high-contrast-disabled: #000;\n\n --canvas-cell-border: fade(#000, 10%);\n --canvas-cell-title-border: #d5d5d5;\n --canvas-cell-title-border-hover: #858585;\n --canvas-cell-title-border-selected: #afafaf;\n //--canvas-cell-title-hover: #787878;\n --canvas-cell-title-selected: #cfcfcf;\n\n --canvas-dark-cell-title: #444;\n //--canvas-dark-cell-title-hover: #000;\n --canvas-dark-cell-title-selected: #111;\n --canvas-dark-cell-title-border: #d5d5d5;\n //--canvas-dark-cell-title-border-hover: #191919;\n --canvas-dark-cell-title-border-selected: #afafaf;\n\n //--canvas-scroll-thumb: #404040;\n //--canvas-scroll-thumb-hover: #999;\n //--canvas-scroll-thumb-pressed: #adadad;\n //--canvas-scroll-thumb-border: #2a2a2a;\n //--canvas-scroll-thumb-border-hover: #999;\n //--canvas-scroll-thumb-border-pressed: #adadad;\n //--canvas-scroll-arrow: #999;\n //--canvas-scroll-arrow-hover: #404040;\n //--canvas-scroll-arrow-pressed: #404040;\n //--canvas-scroll-thumb-target: #999;\n //--canvas-scroll-thumb-target-hover: #404040;\n //--canvas-scroll-thumb-target-pressed: #404040;\n }\n}","[dir=\"rtl\"].device-android {\n .app-layout {\n .searchbar {\n input {\n padding-right: 24px;\n padding-left: 36px;\n background-position: right;\n }\n\n .number-search-results {\n right: auto;\n left: 26px;\n }\n }\n }\n\n .wrap-comment, .comment-list{\n .comment-header .initials {\n margin-right: 0;\n margin-left: 10px;\n }\n }\n\n .actions-modal {\n .actions-button-text {\n text-align: right;\n }\n }\n\n .navigation-sheet {\n &__title {\n padding-left: 0;\n padding-right: 16px;\n }\n }\n}\n\n[dir=\"rtl\"].device-ios .app-layout {\n .subnavbar,.navbar .left a + a {\n margin-right: 0;\n }\n\n .subnavbar,.navbar .right a + a {\n margin-right: 0;\n }\n\n .tab-buttons {\n .tab-link:first-child {\n border-radius: 0px 5px 5px 0px;\n }\n\n .tab-link:last-child {\n border-radius: 5px 0px 0px 5px;\n }\n }\n\n .searchbar .number-search-results {\n right: auto;\n left: 26px;\n }\n\n .popover {\n li:last-child, li:first-child {\n .segmented a:first-child {\n border-radius: 0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0;\n }\n .segmented a:last-child {\n border-radius: var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius);\n }\n } \n }\n\n .list {\n .item-inner {\n .item-after .segmented {\n margin-left: 0px;\n margin-right: 10px;\n }\n }\n }\n\n .searchbar-inner__right .buttons-row a.next {\n margin-left: 0;\n margin-right: 15px;\n }\n\n .searchbar-inner__left {\n margin-right: 0;\n margin-left: 10px;\n }\n\n .navbar .searchbar-input-wrap {\n margin-left: 10px;\n margin-right: 0;\n }\n\n .comment-list .item-content .item-inner .comment-header {\n padding-left: 16px;\n }\n}\n\n[dir=\"rtl\"] {\n .comment-list .item-content .item-inner{\n padding-left: 0;\n .comment-header {\n .right {\n justify-content: space-between;\n .comment-resolve {\n margin-right: 0px;\n margin-left: 10px;\n }\n }\n\n .name {\n text-align: right;\n }\n }\n }\n\n .comment-quote {\n border-right: 1px solid var(--text-secondary);\n border-left: 0;\n padding-left: 16px;\n padding-right: 10px;\n }\n\n .comment-text, .reply-text {\n padding-right: 0;\n padding-left: 15px;\n }\n\n // .comment-list .item-content .item-inner .comment-header {\n // padding-left: 16px;\n // }\n\n #add-comment-dialog .dialog .dialog-inner .wrap-comment .name, #edit-comment-dialog .dialog .dialog-inner .wrap-comment .name, #add-reply-dialog .dialog .dialog-inner .wrap-comment .name, #edit-reply-dialog .dialog .dialog-inner .wrap-comment .name, #add-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date, #edit-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date, #add-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date, #edit-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date, #add-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date, #edit-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date, #add-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date, #edit-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date {\n text-align: right;\n }\n\n #view-comment-popover .page .page-content {\n padding: 16px 0 60px 16px;\n }\n\n .wrap-comment {\n padding: 16px 16px 0 24px;\n }\n\n .shapes {\n .thumb {\n transform: scaleX(-1);\n }\n }\n\n .settings-popup,\n #settings-popover{\n .link {\n display: inline;\n }\n }\n\n #edit-table-style {\n ul {\n padding-right: 0;\n }\n }\n\n .color-schemes-menu {\n .item-title{\n margin-right: 20px;\n }\n }\n\n .list [slot=\"root-start\"] {\n padding: 15px 15px 0 0px;\n }\n\n .numbers, .bullets, .multilevels {\n .item-content {\n padding-right: 0;\n }\n }\n\n .dataview .active::after {\n left: -5px;\n right: unset;\n }\n\n .popup .list .range-number, .popover .list .range-number, .sheet-modal .list .range-number {\n text-align: left;\n }\n\n .popup .list .inner-range-title, .popover .list .inner-range-title, .sheet-modal .list .inner-range-title {\n padding-left: 0;\n padding-right: 15px;\n }\n\n #color-picker .right-block {\n margin-left: 0px;\n margin-right: 20px;\n }\n\n .page-review .toolbar #btn-reject-change {\n margin-left: 0;\n margin-right: 20px;\n }\n\n .list li.no-indicator .item-link .item-inner {\n padding-right: 0;\n }\n\n // Dialog with password\n .dialog .modal-password .modal-password__icon {\n right: auto;\n left: 4px;\n }\n}\n\n@media (max-width: 550px) {\n .device-ios[dir=rtl] .app-layout {\n .searchbar-expandable.searchbar-enabled .searchbar-inner__right {\n margin-right: 10px;\n margin-left: 0;\n }\n\n .navbar .searchbar-input-wrap {\n margin-left: 0;\n }\n }\n\n .device-android[dir=rtl] .app-layout {\n .searchbar-expandable.searchbar-enabled .searchbar-inner__left {\n margin-right: 0;\n margin-left: 33px;\n }\n }\n}\n","[dir=\"rtl\"] {\n // Common rtl-icons\n i.icon {\n &.icon-next, &.icon-prev, &.icon-text-align-right, &.icon-text-align-left, \n &.icon-table-add-column-left, &.icon-table-add-column-right, &.icon-table-remove-column, \n &.icon-table-borders-left, &.icon-table-borders-right, &.icon-numbers-3, &.icon-numbers-7 {\n transform: scaleX(-1);\n }\n\n &.icon-numbers-1 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-2 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-4 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-5 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-6 {\n .encoded-svg-background('');\n }\n }\n\n // [PE] rtl-icons \n i.icon {\n &.icon-align-left, &.icon-align-right {\n transform: scaleX(-1);\n }\n }\n\n // [SSE] rtl-icons\n\n i.icon {\n &.icon-text-orientation-horizontal {\n .encoded-svg-mask('');\n }\n\n &.icon-text-orientation-anglecount {\n .encoded-svg-mask('');\n }\n\n &.icon-text-orientation-angleclock {\n .encoded-svg-mask('');\n }\n }\n}","// Encoded SVG Background\n.encoded-svg-mask(@svg, @color: @brandColor) {\n @url: `encodeURIComponent(@{svg})`;\n background-color: @color;\n -webkit-mask-image: url(\"data:image/svg+xml;charset=utf-8,@{url}\");\n -webkit-mask-size: contain;\n -webkit-mask-repeat: round;\n}\n\n.encoded-svg-uncolored-mask(@svg) {\n @url: `encodeURIComponent(@{svg})`;\n -webkit-mask-image: url(\"data:image/svg+xml;charset=utf-8,@{url}\");\n}\n\n.encoded-svg-background(@svg) {\n @url: `encodeURIComponent(@{svg})`;\n background-image: url(\"data:image/svg+xml;charset=utf-8,@{url}\");\n}",".page.page-users {\n .block-title {\n text-transform: none;\n margin-top: 20px;\n margin-bottom: 20px;\n font-size: 17px;\n line-height: 17px;\n font-weight: normal;\n }\n .color {\n min-width: 40px;\n min-height: 40px;\n text-align: center;\n border-radius: 50px;\n line-height: 40px;\n color: @fill-white;\n font-size: 18px;\n }\n}","// @text-normal: #000;\n// @common-image-path - defined in webpack config\n\n.about {\n .page-content {\n text-align: center /*rtl:ignore*/;\n display: flex;\n flex-direction: column;\n }\n\n &_ios {\n padding-top: 120px;\n padding-bottom: 30px;\n }\n\n &_android {\n padding-top: 60px;\n padding-bottom: 16px;\n }\n\n &_tablet {\n padding-top: 12px;\n padding-bottom: 12px;\n } \n\n &__text {\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 16px;\n text-align: center;\n color: @text-normal;\n margin: 0;\n }\n\n a {\n color: @brandColor;\n }\n\n .logo-block {\n &__elem {\n display: flex;\n justify-content: center;\n img {\n max-width: 100%;\n height: auto;\n }\n }\n }\n\n &__logo {\n width: 100%;\n height: 80px;\n background: ~\"url(@{common-image-path}/about/logo-new.svg) no-repeat center\";\n }\n\n &__editor {\n flex-grow: 1;\n margin-top: 20px;\n }\n\n &__contacts {\n text-align: center;\n padding-left: 72px;\n padding-right: 72px;\n }\n\n &__licensor, &__customer {\n text-align: center;\n margin-top: 12px;\n }\n}\n\n.theme-type-dark {\n .about__logo {\n background: ~\"url(@{common-image-path}/about/logo-new-white.svg) no-repeat center\";\n }\n}","@import './about';\n\n@white: #ffffff;\n@black: #000000;\n@gray: #c4c4c4;\n@darkGray: #6d6d72;\n@green: #4cd964;\n@red: #f00;\n@autoColor: @black;\n\n.row {\n --f7-cols-per-row: 1;\n align-items: flex-start;\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n}\n\n.row + .row {\n margin-top: var(--f7-grid-row-gap);\n}\n\n.navbar.main-navbar {\n height: 0;\n &.navbar-with-logo {\n height: 26px;\n }\n .navbar-inner {\n display: flex;\n justify-content: center;\n padding-top: 8px;\n }\n .navbar-bg {\n &:before, &:after {\n content: none;\n }\n }\n}\n\n.navbar-hidden {\n transform: translate3d(0, calc(-1 * (var(--f7-navbar-height) + var(--f7-subnavbar-height))), 0);\n}\n\n.navbar-hidden+.page>.page-content, .navbar-hidden+.page-content {\n padding-top: 0;\n}\n\n.page.editor>.page-content {\n transition: padding-top .3s ease-in;\n}\n\n.subnavbar {\n .subnavbar-inner {\n padding: 0;\n .title {\n //white-space: nowrap;\n overflow: hidden;\n text-overflow: initial;\n margin: 0;\n padding: 0;\n flex-shrink: initial;\n }\n }\n .icon-back {\n color: @toolbar-icons;\n }\n}\n\n.page.page-with-subnavbar {\n .page-content {\n --f7-page-subnavbar-offset: 0px;\n }\n &.page-with-logo .page-content {\n --f7-page-subnavbar-offset: 26px;\n }\n}\n\n.popup, .popover, .sheet-modal {\n .list {\n &:first-child {\n margin-top: 0;\n margin-bottom: 0;\n }\n .inner-range-title {\n color: @text-normal;\n padding: 15px 0 0 15px;\n }\n\n .range-number {\n color: @text-normal;\n min-width: 60px;\n text-align: right;\n }\n }\n .page-content {\n &.no-padding-top {\n padding-top: 0;\n }\n }\n}\n\n.sheet-modal.coauth__sheet {\n transition: all .3s;\n}\n\n.disabled, [disabled] {\n opacity: .55;\n pointer-events: none;\n}\n\n.text-content {\n padding: 14px 10px 0 10px;\n}\n\n.view .list {\n max-width: 100%;\n --menu-list-offset: 0px;\n\n ul {\n max-width: 100%;\n background: var(--f7-list-bg-color);\n }\n\n li.no-indicator {\n .item-link {\n .item-inner{\n padding-right: 15px;\n &:before {\n content: none;\n }\n }\n }\n }\n .item-text {\n text-overflow: initial;\n white-space: normal;\n height: auto;\n max-height: initial;\n -webkit-line-clamp: initial;\n }\n .font-item img {\n filter: var(--image-border-types-filter, none)\n }\n .buttons {\n .button.active {\n background-color: @button-active-opacity;\n }\n }\n .item-link .item-inner {\n width: 100%;\n }\n .item-inner {\n color: @text-normal;\n }\n}\n\n// Bullets, numbers and multilevels\n\n.bullets,\n.numbers,\n.multilevels {\n min-height: 160px;\n .row.list {\n margin: 0;\n ul {\n background: none;\n &:before, &:after {\n display: none;\n }\n display: grid;\n grid-template-columns: repeat(4, auto);\n justify-content: space-around;\n grid-gap: 10px;\n width: 100%;\n padding: 5px;\n li {\n width: 70px;\n height: 70px;\n border: 1px solid @gray;\n html.pixel-ratio-2 & {\n border: 0.5px solid @gray;\n }\n html.pixel-ratio-3 & {\n border: 0.33px solid @gray;\n }\n \n .thumb {\n width: 100%;\n height: 100%;\n background-color: @fill-white;\n background-size: cover;\n \n label {\n width: 100%;\n text-align: center;\n position: absolute;\n top: 34%;\n color: @fill-black;\n }\n }\n\n .item-number, .item-marker, .item-multilevellist {\n width: 68px;\n height: 68px;\n }\n }\n }\n }\n \n .row.list .item-content {\n padding-left: 0;\n padding-right: 0;\n min-height: 68px;\n .item-inner{\n padding: 0;\n &:after {\n display: none;\n }\n }\n }\n}\n\n.popover {\n .page .list:first-child:last-child {\n ul {\n border-radius: 0;\n background-color: var(--f7-list-bg-color);\n li:first-child, li:last-child {\n .item-link {\n border-radius: 0;\n }\n }\n }\n }\n}\n\n// .popover .list + .list {\n// margin-top: 0;\n// }\n\n.popover .list:first-child li:first-child, .popover .list:first-child li:first-child a, .popover .list:first-child li:first-child > label, .popover .list:last-child li:last-child, .popover .list:last-child li:last-child a, .popover .list:last-child li:last-child > label {\n border-radius: 0;\n}\n\n.shapes {\n li {\n width: 70px;\n height: 70px;\n margin: 0 1px;\n\n .thumb {\n width: 100%;\n height: 100%;\n background-color: @brandColor;\n }\n }\n}\n\n.chart-types {\n width: 100%;\n .row {\n padding: 0 10px;\n }\n li {\n width: 60px;\n height: 60px;\n margin: 6px;\n\n .thumb {\n width: 100%;\n height: 100%;\n background-size: contain;\n }\n }\n}\n\n.chart-styles {\n .row {\n li {\n margin: 0;\n padding: 1px;\n }\n img {\n width: 50px;\n height: 50px;\n }\n }\n}\n\n.segmented {\n .decrement, .increment {\n text-overflow: clip;\n }\n}\n\n.content-block {\n margin: 32px 0;\n padding: 0 16px;\n box-sizing: border-box;\n p {\n color: @text-normal;\n }\n}\n\n\n// Color Schemes\n\n.color-schemes-menu {\n cursor: pointer;\n display: block;\n // background-color: @white;\n .item-inner {\n justify-content: flex-start;\n }\n .color-schema-block {\n display: flex;\n }\n .color {\n min-width: 26px;\n min-height: 26px;\n margin: 0 2px 0 0;\n box-shadow: 0 0 0 1px rgba(0,0,0,.15) inset;\n }\n .item-title {\n margin-left: 20px;\n color: @text-normal;\n }\n}\n\n\n// Layout \n\n.slide-layout {\n &__list {\n margin: auto;\n }\n ul {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n &::before, &::after {\n display: none;\n }\n }\n li {\n position: relative;\n z-index: 1;\n margin-top: 12px;\n img {\n box-shadow: 0 0 0 1px rgba(0,0,0,.15);\n }\n }\n .item-inner {\n padding-top: 0;\n }\n .item-inner:after {\n display: none;\n }\n .item-inner:before {\n opacity: 0;\n content: '';\n position: absolute;\n width: 22px;\n height: 22px;\n right: 11px;\n bottom: 0;\n z-index: 1;\n background-repeat: no-repeat;\n .encoded-svg-mask('');\n }\n .active .item-inner:before {\n opacity: 1;\n }\n}\n\n// Transition \n\n.slide-transition {\n .splitter {\n display: flex;\n align-items: center;\n color: @black;\n label {\n margin: 0 5px;\n }\n }\n .buttons-row {\n display: flex;\n margin: 0;\n min-width: 90px;\n margin-left: 10px;\n .button {\n width: 100%;\n }\n .button:first-child {\n border-radius: 5px 0 0 5px;\n border-left-width: 1px;\n border-left-style: solid;\n }\n .button:last-child {\n border-radius: 0 5px 5px 0;\n }\n }\n}\n\n.style-effect, .style-type {\n .list .item-title {\n font-weight: normal; \n }\n}\n\n.range-slider-delay {\n width: 100%;\n margin: 4px 0 5px 0;\n appearance: none;\n background: linear-gradient(to right,#b7b8b7 0,#b7b8b7 100%);\n background-position: center;\n background-size: 100% 2px;\n background-repeat: no-repeat;\n outline: 0;\n border: none;\n box-sizing: content-box;\n &:disabled {\n opacity: .55;\n }\n &::-webkit-slider-thumb {\n appearance: none;\n height: 28px;\n width: 28px;\n border-radius: 50%;\n background: @white;\n cursor: pointer;\n box-shadow: 0 2px 4px rgba(0, 0, 0, .3);\n }\n &::-ms-thumb { \n appearance: none;\n height: 28px;\n width: 28px;\n border-radius: 50%;\n background: @white;\n cursor: pointer;\n box-shadow: 0 2px 4px rgba(0, 0, 0, .3);\n }\n}\n\n.buttons-list {\n ul {\n // &::before, &::after {\n // display: none;\n // }\n li {\n border: 0;\n font-weight: normal;\n .item-link {\n height: 100%;\n .item-content {\n min-height: initial;\n height: 100%;\n padding: 0;\n }\n .item-inner {\n justify-content: center;\n align-items: center;\n padding: 0;\n min-height: initial;\n &::before {\n display: none;\n }\n }\n }\n }\n }\n}\n\n.item-color-auto {\n .color-auto {\n width: 22px;\n height: 22px;\n background-color: @autoColor;\n }\n &.active {\n .color-auto {\n box-shadow: 0 0 0 1px @white, 0 0 0 4px @brandColor;\n border-radius: 1px;\n }\n }\n}\n\n.page {\n .color-palettes {\n .list {\n ul {\n .palette {\n padding: 8px 0px;\n a {\n flex-grow: 1;\n position: relative;\n min-width: 10px;\n min-height: 26px;\n margin: 1px 1px 0 0;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset;\n border-radius: 0;\n &.active:after {\n content: ' ';\n position: absolute;\n width: 100%;\n height: 100%;\n box-shadow: 0 0 0 1px @white, 0 0 0 4px @brandColor;\n z-index: 1;\n border-radius: 1px;\n }\n &.transparent {\n background-repeat: no-repeat;\n background-size: 100% 100%;\n .encoded-svg-background(\"\");\n }\n } \n }\n }\n }\n .row {\n padding: 0;\n }\n .list .item-inner {\n display: block;\n color: var(--text-normal);\n }\n .standart-colors, .dynamic-colors {\n .palette {\n display: flex;\n }\n }\n\n .dynamic-colors {\n .empty-color {\n background-color: @white;\n }\n }\n }\n}\n\n#color-picker {\n display: flex;\n justify-content: space-around;\n align-items: center;\n max-width: 300px;\n margin: 0 auto;\n margin-top: 4px;\n .color-picker-container {\n width: calc(100% - 94px);\n position: relative;\n max-width: 100%;\n height: auto;\n font-size: 0;\n .color-picker-module-wheel {\n margin: 0;\n }\n }\n .right-block {\n margin-left: 20px;\n .color-hsb-preview {\n width: 72px;\n height: 72px;\n overflow: hidden;\n border: 1px solid @gray;\n border-radius: 100px;\n .new-color-hsb-preview, .current-color-hsb-preview {\n height: 36px;\n }\n .new-color-hsb-preview {\n border-radius: 100px 100px 0 0;\n }\n .current-color-hsb-preview {\n border-radius: 0 0 100px 100px;\n }\n }\n .button-round {\n height: 72px;\n width: 72px;\n padding: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 100px;\n background-color: @fill-white;\n box-shadow: 0 4px 4px rgba(0,0,0,.25);\n // border-color: transparent;\n border: 0;\n margin-top: 20px;\n }\n }\n}\n\n// Table styles\n\n.table-styles {\n width: 100%;\n .row {\n &, li {\n margin-bottom: 12px;\n }\n li, div {\n box-shadow: 0 0 0 1px @gray;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n }\n\n li,\n .row div {\n margin: 0;\n padding: 1px;\n\n img {\n width: 70px;\n height: 50px;\n }\n }\n}\n\n#edit-table-style {\n .list ul ul {\n padding-left: 0;\n }\n}\n\n// input[type=\"number\"]\ninput[type=\"number\"]::-webkit-outer-spin-button,\ninput[type=\"number\"]::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n// Regional Settings\n.icon.lang-flag {\n background-size: 48px auto;\n background-image: ~'url(@{common-image-path}/controls/flags@2x.png)';\n}\n\n.icon.lang-flag {\n width: 16px;\n height: 12px;\n}\n\n.lang-flag.ca,\n.lang-flag.ca-ES {\n background-position: 0 0;\n}\n.lang-flag.cs,\n.lang-flag.cs-CZ {\n background-position: -16px 0;\n}\n.lang-flag.da,\n.lang-flag.da-DK {\n background-position: -32px 0;\n}\n.lang-flag.de,\n.lang-flag.de-DE {\n background-position: 0 -12px;\n}\n.lang-flag.el,\n.lang-flag.el-GR {\n background-position: -16px -12px;\n}\n.lang-flag.en,\n.lang-flag.en-US {\n background-position: -32px -12px;\n}\n.lang-flag.fr,\n.lang-flag.fr-FR {\n background-position: 0 -24px;\n}\n.lang-flag.hu,\n.lang-flag.hu-HU {\n background-position: -16px -24px;\n}\n.lang-flag.it,\n.lang-flag.it-IT {\n background-position: -32px -24px;\n}\n.lang-flag.ko,\n.lang-flag.ko-KR {\n background-position: 0 -36px;\n}\n.lang-flag.nl,\n.lang-flag.nl-NL {\n background-position: -16px -36px;\n}\n.lang-flag.nb,\n.lang-flag.nb-NO,\n.lang-flag.nn,\n.lang-flag.nn-NO {\n background-position: -32px -36px;\n}\n.lang-flag.pl,\n.lang-flag.pl-PL {\n background-position: 0 -48px;\n}\n.lang-flag.pt,\n.lang-flag.pt-BR {\n background-position: -16px -48px;\n}\n.lang-flag.ro,\n.lang-flag.ro-RO {\n background-position: -32px -48px;\n}\n.lang-flag.ru,\n.lang-flag.ru-RU {\n background-position: 0 -60px;\n}\n.lang-flag.sv,\n.lang-flag.sv-SE {\n background-position: -32px -60px;\n}\n.lang-flag.tr,\n.lang-flag.tr-TR {\n background-position: 0 -72px;\n}\n.lang-flag.uk,\n.lang-flag.uk-UA {\n background-position: -16px -72px;\n}\n.lang-flag.lv,\n.lang-flag.lv-LV {\n background-position: -32px -72px;\n}\n.lang-flag.lt,\n.lang-flag.lt-LT {\n background-position: 0 -84px;\n}\n.lang-flag.vi,\n.lang-flag.vi-VN {\n background-position: -16px -84px;\n}\n.lang-flag.de-CH,\n.lang-flag.fr-CH,\n.lang-flag.it-CH {\n background-position: -32px -84px;\n}\n.lang-flag.pt-PT {\n background-position: -16px -96px;\n}\n.lang-flag.de-AT {\n background-position: -32px -96px;\n}\n.lang-flag.es,\n.lang-flag.es-ES {\n background-position: 0 -108px;\n}\n.lang-flag.en-GB {\n background-position: -32px -108px;\n}\n.lang-flag.en-AU {\n background-position: 0 -120px;\n}\n.lang-flag.az-Latn-AZ {\n background-position: -16px -120px;\n}\n.lang-flag.id,\n.lang-flag.id-ID,\n.lang-flag.en-ID {\n background-position: -32px -120px;\n}\n.lang-flag.bg,\n.lang-flag.bg-BG {\n background-position: 0 -132px;\n}\n.lang-flag.ca-ES-valencia {\n background-position: -16px -132px;\n}\n.lang-flag.en-CA {\n background-position: -32px -132px;\n}\n.lang-flag.en-ZA {\n background-position: 0 -144px;\n}\n.lang-flag.eu,\n.lang-flag.eu-ES {\n background-position: -16px -144px;\n}\n.lang-flag.gl,\n.lang-flag.gl-ES {\n background-position: -32px -144px;\n}\n.lang-flag.hr,\n.lang-flag.hr-HR {\n background-position: 0 -156px;\n}\n.lang-flag.lb,\n.lang-flag.lb-LU {\n background-position: -16px -156px;\n}\n.lang-flag.mn,\n.lang-flag.mn-MN {\n background-position: -32px -156px;\n}\n.lang-flag.sl,\n.lang-flag.sl-SI {\n background-position: 0 -168px;\n}\n.lang-flag.sr,\n.lang-flag.sr-Cyrl-RS,\n.lang-flag.sr-Latn-RS {\n background-position: -16px -168px;\n}\n.lang-flag.sk,\n.lang-flag.sk-SK {\n background-position: -32px -168px;\n}\n.lang-flag.kk,\n.lang-flag.kk-KZ {\n background-position: 0 -180px;\n}\n.lang-flag.fi,\n.lang-flag.fi-FI,\n.lang-flag.sv-FI {\n background-position: -16px -180px;\n}\n.lang-flag.zh,\n.lang-flag.zh-CN {\n background-position: -32px -180px;\n}\n.lang-flag.ja,\n.lang-flag.ja-JP {\n background-position: 0 -192px;\n}\n.lang-flag.es-MX {\n background-position: -16px -192px;\n}\n\n.checkbox-in-modal {\n margin-top: 10px;\n display: flex;\n align-items: center;\n .right-text {\n margin-left: 10px;\n }\n}\n\n.username-tip {\n height: 20px;\n color: @white;\n padding: 0 10px;\n position: absolute;\n z-index: 900;\n display: none;\n pointer-events: none;\n transition: opacity 0.1ms ease-out;\n opacity: 0;\n &.active {\n display: block;\n opacity: 1;\n }\n}\n\n.dlg-adv-options {\n z-index: 13700;\n .content-block {\n padding: 0;\n }\n .picker-3d { \n .picker-item {\n padding: 0;\n text-align: left;\n font-size: 16px;\n }\n }\n .picker-center-highlight {\n width: 100%;\n left: 0;\n right: 0;\n }\n}\n\n.dlg-macros-request {\n .dialog-text {\n word-break: break-word;\n }\n}\n// Skeleton of document\n\n@keyframes flickerAnimation {\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n@-o-keyframes flickerAnimation{\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n@-moz-keyframes flickerAnimation{\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n@-webkit-keyframes flickerAnimation{\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n\n.doc-placeholder-container {\n position: absolute;\n width: 100%;\n height: 100%;\n z-index: 6000;\n top: 0;\n left: 0;\n overflow: hidden;\n}\n\n// Statusbar\n\n.statusbar .statusbar--box-tabs > ul > .locked a {\n box-shadow: inset 0 2px red;\n}\n\n// Fonts List \n\n.font-item {\n .item-inner {\n overflow: hidden;\n &:after {\n left: 16px;\n }\n }\n}\n\n// Functions List \n\n.cell-editor {\n overflow: initial;\n}\n\n.functions-list {\n max-height: 200px;\n width: 360px;\n overflow-y: auto;\n overflow-x: hidden;\n background-color: @background-primary;\n &__mobile {\n position: absolute;\n right: 0;\n left: 0;\n width: 100%;\n box-shadow: 0px 10px 10px -10px rgba(0, 0, 0, 0.3);\n .list {\n margin: 0;\n ul:before {\n display: none;\n }\n .item-content {\n padding-left: 0;\n }\n .item-inner {\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left) - var(--menu-list-offset));\n }\n .item-title {\n font-size: 15px;\n }\n }\n }\n}\n\n// Function List Popover\n\n#idx-functions-list {\n width: 350px;\n .popover-inner {\n .navbars {\n .right .link {\n font-weight: 600;\n }\n .navbar-bg {\n background: @background-secondary;\n &::after {\n background: @background-menu-divider;\n }\n }\n }\n .page-function-info{\n .navbar {\n .navbar-bg::after {\n background: @background-menu-divider;\n }\n .navbar-inner{\n background: @background-secondary;\n .title {\n color: @text-normal;\n }\n .right .link {\n color: @brandColor;\n font-weight: 600;\n }\n .icon-back::after {\n color: @brandColor;\n }\n }\n }\n }\n }\n}\n\n// Highlight Colors\n\n.highlight-palette {\n width: 100%;\n}\n\n.highlight-color {\n min-width: 10px;\n min-height: 34px;\n margin: 1px;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset;\n position: relative;\n flex-grow: 1;\n &_active:after {\n content: ' ';\n position: absolute;\n width: 100%;\n height: 100%;\n box-shadow: 0 0 0 1px #ffffff, 0 0 0 4px #446995;\n z-index: 1;\n border-radius: 1px;\n }\n}\n#idx-celleditor.expanded {\n .functions-list {\n &__mobile {\n top: 70px;\n }\n }\n}\n\n.popover__functions {\n box-shadow: 0px 10px 100px rgba(0, 0, 0, 0.3);\n .view {\n transition: .2s height;\n }\n .popover-angle.on-bottom {\n display: none;\n }\n}\n\n.target-function-list {\n position: absolute; \n left: 0;\n top: 0;\n bottom: 0;\n width: 0; \n height: 100%;\n}\n\n.dropdown-list {\n &__placeholder {\n opacity: 0.6;\n .item-inner {\n border-bottom: 1px solid var(--f7-list-item-border-color);\n }\n }\n}\n\n// Swiper\n.swiper-wrapper .swiper-slide .list ul {\n background-color: transparent;\n}\n\n.swiper-pagination-bullet {\n background: @background-menu-divider;\n opacity: 1;\n &-active {\n background: @text-secondary;\n }\n}\n\n.swiper-pagination-bullets {\n position: fixed;\n width: 100%;\n bottom: 9px;\n .swiper-pagination-bullet {\n margin: 0 5.5px;\n }\n}\n\n.preview-cell-style {\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n width: 104px;\n height: 44px;\n background-color: @fill-white;\n border-radius: 4px;\n border: 0.5px solid @background-menu-divider;\n}\n\n// Sharing Settings\n.sharing-placeholder {\n height: 100%;\n}\n\n// Comment List\n.sheet-modal .page-current-comment {\n padding-bottom: 60px;\n}\n\n// Picker\n.picker-columns {\n justify-content: space-around;\n}\n\n.row-picker {\n .col-50 {\n color: @text-secondary;\n text-align: center;\n }\n}\n\n// Block \n.block {\n margin-top: 8px;\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 16px;\n}\n\n// Inputs List \n.block-title + .list, .block-title + .block, .block-title + .card, .block-title + .timeline, .block-title + .block-header {\n margin: 0;\n}\n\n.inputs-list {\n margin-bottom: 0;\n\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n position: relative;\n background: var(--f7-list-bg-color);\n }\n}\n\n.list input[type='password'], \n.list input[type='text'] {\n background: transparent;\n}\n\n// Dialog with password\n.dialog {\n .modal-password {\n position: relative;\n\n &__icon {\n position: absolute;\n right: 4px;\n top: calc(50% - 12.5px);\n }\n\n .item-input-wrap {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n }\n}\n\n// Version History \n.version-history { \n &__user {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n min-width: 40px;\n min-height: 40px;\n text-align: center;\n border-radius: 50px;\n line-height: 40px;\n color: var(--fill-white);\n font-size: 18px;\n }\n}\n\n// Review change\n.accept-reject .link {\n margin-right: 20px;\n}\n\n// Beta badge\n.beta-badge {\n font-size: 12px;\n font-weight: 400;\n line-height: 16px;\n letter-spacing: 0.5px;\n color: @fill-white;\n padding: 2px 4px;\n border-radius: 4px;\n}\n\n\n\n\n\n\n\n","\n.device-ios .app-layout {\n @blockTitleColor: #6d6d72;\n @item-border-color: #c8c7cc;\n @darkGreen: #40865c;\n @text-normal: var(--text-normal);\n @background-warning: #FF9F0A;\n\n --f7-navbar-link-color: @brandColor;\n --f7-subnavbar-link-color: @brandColor;\n --f7-navbar-text-color: @text-normal;\n --f7-navbar-title-line-height: 44px;\n --f7-navbar-link-line-height: 44px;\n --f7-navbar-title-font-size: 17px;\n\n --f7-list-bg-color: @background-primary;\n --f7-navbar-bg-color: @toolbar-background;\n\n --f7-tabbar-link-inactive-color: @toolbar-segment;\n\n --f7-radio-active-color: @brandColor;\n --f7-toggle-active-color: @brandColor;\n --f7-range-bar-active-bg-color: @brandColor;\n\n --f7-list-button-text-color: @brandColor;\n\n --f7-list-item-border-color: @background-menu-divider;\n\n --f7-page-bg-color: @background-tertiary;\n --f7-list-item-title-text-color: @text-normal;\n --f7-list-item-text-text-color: @text-normal;\n --f7-list-item-subtitle-text-color: @text-secondary;\n --f7-label-text-color: @text-normal;\n --f7-list-item-after-text-color: @text-normal;\n --f7-input-text-color: @text-normal;\n --f7-block-title-text-color: @text-secondary;\n --f7-input-placeholder-color: @text-secondary;\n\n --f7-list-chevron-icon-color: @text-tertiary;\n --f7-searchbar-search-icon-color: @text-tertiary;\n --f7-searchbar-input-clear-button-color: @text-tertiary;\n\n --f7-toggle-inactive-border-color: @background-menu-divider;\n --f7-toggle-inactive-bg-color: @background-menu-divider;\n\n --f7-actions-button-border-color: @background-menu-divider;\n --f7-popover-bg-color: @background-primary;\n --f7-dialog-bg-color-rgb: @background-secondary;\n --f7-dialog-title-text-color: @text-normal;\n --f7-dialog-text-color: @text-normal;\n --f7-dialog-button-text-color: @brandColor;\n --f7-dialog-border-divider-color: @background-menu-divider;\n\n --f7-subnavbar-border-color: @background-menu-divider;\n --f7-list-border-color: @background-menu-divider;\n\n --f7-picker-item-text-color: rgba(var(--text-normal), 0.45);\n --f7-picker-item-selected-text-color: @text-normal;\n\n --f7-block-text-color: @text-secondary;\n\n --f7-theme-color-shade: @background-primary;\n --f7-fab-pressed-bg-color: @background-primary;\n --f7-input-clear-button-color: @text-tertiary;\n\n // Main Toolbar\n #editor-navbar.navbar .right a + a,\n #editor-navbar.navbar .left a + a {\n margin-left: 0;\n }\n\n .navbar, .navbar-bg, .subnavbar {\n a.btn-doc-back {\n width: 22px;\n }\n background-color: var(--f7-navbar-bg-color);\n .title {\n font-weight: 600;\n color: @text-normal;\n //line-height: 17px;\n //max-height: 34px;\n //overflow: hidden;\n }\n .navbar-inner, .subnavbar-inner {\n z-index: auto;\n }\n .sheet-close {\n width: 44px;\n height: 44px;\n display: flex;\n justify-content: center;\n }\n }\n\n .subnavbar {\n .icon-back {\n color: @brandColor;\n }\n }\n\n .popover__titled {\n .list {\n &:first-child, &:last-child {\n ul {\n border-radius: 0;\n }\n\n li:first-child, li:last-child {\n > label {\n border-radius: 0;\n }\n }\n }\n }\n\n .popover-inner {\n //border-radius: var(--f7-popover-border-radius);\n\n > .view {\n border-radius: var(--f7-popover-border-radius);\n }\n }\n\n .navbar-bg {\n //-webkit-backdrop-filter: none;\n backdrop-filter: none;\n &::after {\n background: @background-menu-divider;\n }\n }\n\n // .list:first-child {\n // li:first-child {\n // a {\n // border-radius: 0;\n // }\n // }\n // }\n\n .list:last-child {\n li:last-child {\n &:after {\n content: '';\n position: absolute;\n background-color: var(--f7-navbar-border-color, var(--f7-bars-border-color));\n display: block;\n //z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n }\n }\n }\n }\n\n .popover {\n li:last-child {\n .segmented a {\n &:first-child {\n border-radius: var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius);\n }\n\n &:last-child {\n border-radius: 0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0;\n }\n }\n }\n\n .page-content {\n > .list {\n &:last-child {\n // margin-bottom: 30px;\n }\n }\n }\n }\n\n .popover-arrow:after {\n background: rgba(0, 0, 0, 0.9);\n }\n\n .list {\n .item-content {\n .color-preview {\n width: 22px;\n height: 8px;\n display: inline-block;\n margin-top: 21px;\n box-sizing: border-box;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset;\n background: @fill-white;\n }\n .item-after {\n .color-preview {\n width: 75px;\n height: 30px;\n margin-top: -3px;\n }\n }\n }\n .item-inner {\n padding-top: 7px;\n .item-after {\n .after-start {\n margin: 0 5px;\n }\n .segmented {\n min-width: 90px;\n margin-left: 10px;\n }\n }\n }\n .buttons {\n .item-inner {\n padding-top: 0;\n padding-bottom: 0;\n align-items: stretch;\n > .row {\n width: 100%;\n align-items: stretch;\n .button {\n flex: 1;\n border: none;\n height: inherit;\n border-radius: 0;\n font-size: 17px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n }\n }\n }\n .list-input-right input {\n text-align: right;\n }\n }\n\n .links-list a:after, .list .item-inner:after, .simple-list li:after {\n background-color: var(--f7-list-item-border-color);\n bottom: 0;\n content: \"\";\n display: block;\n height: 1px;\n left: 0;\n position: absolute;\n right: auto;\n top: auto;\n transform: scaleY(calc(1/var(--f7-device-pixel-ratio)));\n transform-origin: 50% 100%;\n width: 100%;\n z-index: 15;\n }\n\n .tab-buttons {\n width: 100%;\n display: flex;\n flex-wrap: nowrap;\n align-self: center;\n .tab-link {\n display: block;\n width: 100%;\n line-height: 26px;\n position: relative;\n overflow: hidden;\n -webkit-box-flex: 1;\n border: 1px solid @toolbar-segment;\n text-decoration: none;\n text-align: center;\n margin: 0;\n padding: 0 1px;\n height: 29px;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n font-family: inherit;\n cursor: pointer;\n outline: 0;\n font-weight: 600;\n color: @brandColor;\n &:first-child {\n border-radius: 5px 0 0 5px;\n border-left-width: 1px;\n border-left-style: solid;\n }\n &:last-child {\n border-radius: 0 5px 5px 0;\n }\n &.tab-link-active {\n // background: @brandColor;\n // color: @fill-white;\n background: @toolbar-segment;\n color: @brand-text-on-brand;\n i.icon {\n background-color: @brand-text-on-brand;\n }\n }\n }\n }\n\n .button {\n border: 1px solid @brandColor;\n color: @brandColor;\n text-decoration: none;\n text-align: center;\n display: block;\n // border-radius: 5px;\n line-height: 27px;\n box-sizing: border-box;\n background: 0 0;\n padding: 0 10px;\n margin: 0;\n height: 29px;\n white-space: nowrap;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 14px;\n font-family: inherit;\n cursor: pointer;\n outline: 0;\n }\n\n .button-fill {\n color: @brandColor;\n background-color: @background-primary;\n }\n\n .button-red {\n color: @text-error;\n background-color: @background-primary;\n }\n\n .buttons-list {\n li {\n border: 0;\n border-radius: 0;\n height: 43px;\n min-height: 43px;\n font-size: 17px;\n text-transform: initial;\n padding: 0;\n box-shadow: none;\n }\n }\n\n .button-red .list-button {\n color: @text-error;\n }\n\n .list-button {\n position: initial;\n }\n\n .block-title {\n position: relative;\n overflow: hidden;\n margin: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n text-transform: uppercase;\n line-height: 1;\n color: @blockTitleColor;\n margin: 35px 15px 10px;\n }\n\n .shapes {\n .page-content {\n background: @fill-white;\n }\n }\n\n .dialog {\n background-color: var(--f7-dialog-bg-color-rgb);\n }\n\n #color-picker {\n .right-block {\n .button-round {\n .icon {\n height: 30px;\n width: 30px;\n }\n }\n }\n }\n\n .content-block {\n color: @blockTitleColor;\n }\n\n .dataview, #add-table, #add-shape, #add-slide, #add-chart {\n &.page-content, .page-content {\n background-color: @background-tertiary;\n }\n }\n\n // input[type=\"number\"]\n\n input[type=\"number\"] {\n &::placeholder,\n &::-webkit-input-placeholder,\n &::-moz-placeholder,\n &:-moz-placeholder,\n &:-ms-input-placeholder\n {\n color: @darkGreen;\n }\n }\n\n // Regional Settings\n\n .regional-settings {\n .item-title-row {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n .item-title {\n margin-left: 20px;\n white-space: normal;\n }\n }\n }\n\n // Find and Replace \n\n .navbar {\n .searchbar {\n background: var(--f7-navbar-bg-color);\n }\n .searchbar-input-wrap {\n position: relative;\n margin-right: 10px;\n height: 28px;\n }\n .buttons-row-replace a {\n color: @brandColor;\n }\n }\n\n .searchbar {\n input {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n display: block;\n border: none;\n appearance: none;\n border-radius: 5px;\n font-family: inherit;\n color: @text-normal;\n font-size: 14px;\n font-weight: 400;\n padding: 0 8px;\n background-color: @background-button;\n padding: 0 36px 0 28px;\n\n &::placeholder {\n color: @text-tertiary;\n }\n }\n\n .number-search-results {\n position: absolute;\n font-size: 13px;\n font-weight: 400;\n line-height: 18px;\n right: 26px;\n color: @text-tertiary;\n top: 4.5px;\n z-index: 100;\n }\n }\n\n .searchbar-inner {\n &__left {\n margin-right: 10px;\n justify-content: center;\n }\n &__right {\n .buttons-row a.next {\n margin-left: 15px;\n }\n }\n }\n\n .searchbar-expandable.searchbar-enabled {\n &.replace {\n .searchbar-inner {\n &__right {\n width: 28%;\n }\n }\n }\n } \n\n @media(max-width: 550px) {\n .navbar {\n .searchbar-input-wrap {\n margin-right: 0; \n }\n }\n .searchbar-expandable.searchbar-enabled {\n top: 0;\n .searchbar-inner {\n &__center {\n flex-direction: column;\n }\n &__right {\n flex-direction: column-reverse;\n margin-left: 10px;\n }\n }\n &.replace {\n height: 88px;\n .searchbar-inner {\n height: 100%;\n &__center {\n .searchbar-input-wrap {\n margin: 8px 0;\n }\n }\n &__right {\n width: auto;\n height: 100%;\n justify-content: space-between;\n .buttons-row-replace {\n height: 50%;\n }\n }\n }\n }\n } \n }\n\n .actions-button {\n background: @background-secondary;\n --f7-actions-button-border-color: @background-menu-divider;\n }\n \n .actions-button-text {\n // height: 57px;\n // line-height: 57px;\n font-size: 20px;\n color: @text-normal;\n white-space: normal;\n text-overflow: ellipsis;\n }\n\n input.modal-text-input {\n box-sizing: border-box;\n height: 26px;\n background: @background-primary;\n margin: 0;\n margin-top: 15px;\n padding: 0 5px;\n border: 1px solid @text-tertiary;\n border-radius: 0;\n width: 100%;\n font-size: 14px;\n font-family: inherit;\n display: block;\n box-shadow: 0 0 0 transparent;\n -webkit-appearance: none;\n -moz-appearance: none;\n -ms-appearance: none;\n appearance: none;\n }\n\n // Fonts List \n\n .font-item {\n .item-content {\n padding-left: 0;\n }\n }\n\n // Toggle Icon \n\n // .toggle-icon {\n // background: transparent;\n // }\n\n // Edit Comment Popup\n\n .edit-comment-popup {\n .navbar .title {\n line-height: normal;\n }\n }\n\n // Version History\n .version-history {\n &__title {\n font-style: normal;\n font-weight: 400;\n font-size: 13px;\n line-height: 18px;\n color: @text-secondary;\n margin-top: 16px;\n margin-bottom: 4px;\n }\n\n &__btn {\n font-style: normal;\n font-weight: 600;\n font-size: 15px;\n line-height: 20px;\n letter-spacing: -0.24px;\n text-transform: uppercase;\n color: @brandColor;\n background: transparent;\n outline: none;\n border: 0;\n padding: 0;\n margin-top: 22px;\n width: auto;\n }\n\n &__list {\n ul {\n background: @background-primary;\n }\n \n .item-title {\n font-weight: 600;\n font-size: 13px;\n line-height: 18px;\n color: @text-normal;\n letter-spacing: -0.08px;\n }\n\n .item-media, .item-inner {\n padding-top: 10px;\n padding-bottom: 10px;\n }\n\n .item-link .item-title-row:before {\n display: none;\n }\n\n .item-subtitle {\n font-style: normal;\n font-weight: 400;\n font-size: 11px;\n line-height: 13px;\n color: @text-secondary;\n margin-top: 3px;\n letter-spacing: 0.06px;\n }\n }\n }\n\n .version-history__item_active {\n background-color: var(--canvas-ruler-margins-background);\n }\n\n .btn-close-history {\n font-style: normal;\n font-weight: 400;\n font-size: 17px;\n line-height: 22px;\n letter-spacing: -0.41px;\n color: @brandColor;\n margin-left: 10px;\n }\n\n .beta-badge {\n background-color: @background-warning;\n margin-left: 10px;\n }\n}\n\n\n","\n.device-android .app-layout {\n @tabLinkColor: rgba(255,255,255,.7);\n @red: #f44336;\n @white: #fff;\n @darkGreen: #40865c;\n @darkGrey: #757575;\n @text-normal: var(--text-normal);\n @brand-text-on-brand: var(--brand-text-on-brand);\n @touchColor: rgba(255,255,255,0.1);\n\n --f7-navbar-shadow-image: none;\n --f7-theme-color: @brandColor;\n\n --f7-navbar-bg-color: @toolbar-background;\n --f7-navbar-link-color: @fill-white;\n --f7-navbar-text-color: @fill-white;\n --f7-navbar-height: 56px;\n\n --f7-list-bg-color: @background-primary;\n --f7-subnavbar-bg-color: @toolbar-background;\n --f7-subnavbar-link-color: @toolbar-icons;\n --f7-subnavbar-text-color: @fill-white;\n --f7-subnavbar-height: 56px;\n\n --f7-radio-active-color: @brandColor;\n --f7-range-bar-active-bg-color: @brandColor;\n --f7-range-knob-color: @brandColor;\n --f7-range-knob-size: 16px;\n\n --f7-list-item-after-text-color: @text-normal;\n\n --f7-link-highlight-color: transparent;\n --f7-link-touch-ripple-color: @touchColor;\n\n --f7-actions-bg-color: @background-secondary;\n --f7-actions-button-border-color: @background-menu-divider;\n --f7-popover-bg-color: @background-secondary;\n\n --f7-dialog-bg-color: @background-secondary;\n --f7-dialog-text-color: @text-secondary;\n --f7-dialog-title-text-color: @text-normal;\n --f7-dialog-button-text-color: @brandColor;\n\n --f7-picker-item-text-color: rgba(var(--text-normal), 0.45);\n --f7-picker-item-selected-text-color: @text-normal;\n\n --f7-input-bg-color: @background-primary;\n --f7-input-placeholder-color: @text-secondary;\n --f7-input-text-color: @text-normal;\n \n --f7-block-text-color: @text-secondary;\n --f7-dialog-border-radius: 0;\n --f7-sheet-border-radius: 0;\n --f7-popover-border-radius: 4px;\n --f7-actions-border-radius: 0;\n --f7-box-shadow: 0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);\n --f7-popover-box-shadow: var(--f7-box-shadow);\n\n --f7-toggle-active-bg-color: @brandColor;\n --f7-toggle-active-border-color: @brandColor;\n\n --f7-navbar-title-margin-left: 20px;\n --f7-navbar-title-margin-right: 20px;\n\n .button {\n --f7-touch-ripple-color: transparent;\n }\n\n .segmented {\n .button {\n --f7-touch-ripple-color: var(--f7-list-link-pressed-bg-color);\n }\n }\n\n --f7-input-focused-border-color: @brandColor;\n --f7-label-focused-text-color: @brandColor;\n\n .navbar {\n --f7-touch-ripple-color: @touchColor;\n\n .sheet-close {\n width: 56px;\n height: 56px;\n display: flex;\n justify-content: center;\n }\n &-inner {\n background: var(--f7-navbar-bg-color);\n background-image: var(--f7-navbar-bg-image, var(--f7-bars-bg-image));\n background-color: var(--f7-navbar-bg-color, var(--f7-bars-bg-color));\n }\n }\n\n .page.page-with-subnavbar.page-with-logo {\n .page-content {\n --f7-page-navbar-offset: var(--f7-navbar-height);\n }\n }\n\n .page {\n --f7-text-color: @text-normal;\n --f7-list-item-title-text-color: @text-normal;\n --f7-list-item-text-text-color: @text-normal;\n --f7-list-item-subtitle-text-color: @text-secondary;\n --f7-block-title-text-color: @text-secondary;\n --f7-label-text-color: @text-normal;\n --f7-page-bg-color: @background-tertiary;\n --f7-list-item-border-color: @background-menu-divider;\n --f7-list-chevron-icon-color: @text-tertiary;\n --f7-actions-button-text-color: @text-normal;\n --f7-subnavbar-border-color: @background-menu-divider;\n --f7-list-border-color: @background-menu-divider;\n }\n\n .add-popup {\n .view {\n .add-image, .inputs-list {\n ul:after {\n display: none;\n }\n }\n }\n }\n\n .coauth__sheet {\n max-height: 65%;\n }\n\n // Buttons\n .segmented {\n .decrement, .increment {\n display: flex;\n border: none;\n min-width: 40px;\n margin-left: 0;\n border-radius: 0;\n height: 32px;\n i.icon-expand-down {\n background: @brandColor;\n }\n }\n label {\n color: @text-normal;\n margin: 0 5px;\n line-height: 32px;\n }\n }\n .button {\n --f7-button-text-color: @brandColor;\n color: @brandColor;\n text-align: center;\n display: block;\n border-radius: 2px;\n line-height: 36px;\n box-sizing: border-box;\n appearance: none;\n background: 0 0;\n margin: 0;\n height: 36px;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n text-transform: uppercase;\n font-family: inherit;\n cursor: pointer;\n min-width: 64px;\n padding: 0 8px;\n position: relative;\n overflow: hidden;\n outline: 0;\n -webkit-transition-duration: .3s;\n transition-duration: .3s;\n -webkit-transform: translate3d(0,0,0);\n transform: translate3d(0,0,0);\n }\n\n .button-fill {\n color: @brand-text-on-brand;\n background-color: transparent;\n }\n\n .button-raised {\n box-shadow: 0 1px 3px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.24);\n }\n\n .button-red {\n color: @brand-text-on-brand;\n background-color: @text-error;\n }\n\n .buttons-list {\n ul {\n background-color: @background-tertiary;\n &::before, &::after {\n display: none;\n }\n li {\n margin: 20px 16px;\n color: @fill-white;\n border-radius: 2px;\n text-transform: uppercase;\n height: 36px;\n min-height: 36px;\n font-size: 14px;\n }\n }\n }\n\n .table-presets {\n .button {\n min-width: 0;\n }\n }\n .button-fill .list-button {\n background-color: @brandColor;\n color: @brand-text-on-brand;\n height: 36px;\n text-align: center;\n line-height: 36px;\n text-transform: uppercase;\n font-size: 14px;\n font-weight: 500;\n border-radius: 2px;\n // margin: 20px 16px;\n margin: 0;\n }\n .button-raised .list-button {\n box-shadow: 0 1px 3px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.24);\n }\n .button-red .list-button {\n background-color: @text-error;\n }\n // Tabs\n .tab-buttons {\n position: relative;\n display: flex;\n height: 100%;\n width: 100%;\n justify-content: space-between;\n .tab-link {\n justify-content: center;\n height: 100%;\n box-sizing: border-box;\n padding-left: 0;\n padding-right: 0;\n font-size: 14px;\n font-weight: 500;\n text-transform: uppercase;\n align-items: center;\n color: @tabLinkColor;\n i.icon {\n opacity: 0.5;\n }\n &.tab-link-active {\n color: @fill-white;\n i.icon {\n opacity: 1;\n background-color: @fill-white;\n }\n }\n }\n .tab-link-highlight {\n --f7-tabbar-link-active-border-color: @toolbar-icons;\n position: absolute;\n left: 0;\n bottom: 0;\n height: 3px;\n }\n }\n\n // List\n .list {\n &.inputs-list {\n margin: 0;\n\n .item-input.item-content {\n padding-left: 0;\n }\n \n .item-input, .item-link {\n .item-inner {\n display: block;\n\n .item-title, .item-label {\n width: 100%;\n font-size: 12px;\n }\n \n .item-input-wrap {\n margin-left: 0;\n }\n }\n }\n }\n\n .buttons {\n box-sizing: border-box;\n min-height: 48px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n\n .item-content {\n width: 100%;\n\n .item-inner {\n padding-bottom: 0;\n padding-top: 0;\n\n .row {\n width: 100%;\n --f7-cols-per-row: 1;\n align-items: flex-start;\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n\n .button {\n flex: 1;\n font-size: 17px;\n margin-left: 5px;\n display: flex;\n align-items: center;\n justify-content: center;\n &:first-child {\n margin-left: 0;\n }\n }\n }\n }\n }\n }\n\n .item-content {\n .color-preview {\n width: 30px;\n height: 30px;\n border-radius: 4px;\n margin-top: -3px;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset;\n background-color: @fill-white;\n &.auto { \n background-color: @autoColor;\n }\n }\n }\n }\n\n .item-input:not(.item-input-outline) .item-content::before, .item-input:not(.item-input-outline).item-content::before {\n background: transparent;\n }\n\n .links-list a:after, .list .item-inner:after, .simple-list li:after {\n background-color: var(--f7-list-item-border-color);\n bottom: 0;\n content: \"\";\n display: block;\n height: 1px;\n left: 0;\n position: absolute;\n right: auto;\n top: auto;\n transform: scaleY(calc(1/var(--f7-device-pixel-ratio)));\n transform-origin: 50% 100%;\n width: 100%;\n z-index: 15;\n }\n\n .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content, .media-list:not(.inset):not(.inset-md):not(.menu-list) li > .item-link, .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content, .list:not(.inset):not(.inset-md):not(.menu-list) .media-item > .item-link {\n border-radius: 0;\n }\n\n // Color palette\n\n #color-picker {\n .right-block {\n .button-round {\n background-color: @brandColor;\n }\n }\n }\n\n // Regional Settings\n\n .regional-settings {\n .list {\n .item-inner {\n margin-left: 16px;\n }\n .item-title-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n flex-direction: row-reverse;\n .item-title {\n white-space: normal;\n }\n }\n }\n }\n\n // Find and Replace \n\n .searchbar-inner {\n &__center {\n flex-wrap: wrap;\n }\n // &__left {\n // padding-top: 4px;\n // }\n }\n\n .navbar {\n .searchbar-input-wrap {\n height: 32px;\n margin-right: 10px;\n margin: 4px 0;\n }\n\n .navbar-inner {\n overflow: initial;\n }\n\n .left {\n margin: 0;\n }\n\n .title {\n margin-left: var(--f7-navbar-title-margin-left);\n margin-right: var(--f7-navbar-title-margin-left);\n }\n }\n\n .searchbar {\n input {\n box-sizing: border-box;\n width: 100%;\n display: block;\n border: none;\n appearance: none;\n border-radius: 0;\n font-family: inherit;\n color: @fill-white;\n font-size: 16px;\n font-weight: 400;\n padding: 0;\n border-bottom: 1px solid @fill-white;\n height: 100%;\n padding: 0 40px 0 24px;\n background-color: transparent;\n background-repeat: no-repeat;\n background-position: 0 center;\n opacity: 1;\n background-size: 24px 24px;\n transition-duration: .3s;\n .encoded-svg-background('');\n &::placeholder {\n color: @fill-white;\n }\n }\n\n .input-clear-button {\n width: 18px;\n height: 18px;\n top: 7px;\n margin: 0;\n\n &:after {\n color: @fill-white;\n font-size: 19px;\n line-height: 19px;\n }\n }\n\n .number-search-results {\n position: absolute;\n right: 26px;\n top: 4px;\n font-size: 16px;\n font-weight: 400;\n line-height: 24px;\n }\n }\n\n .searchbar-icon {\n &:after {\n color: @fill-white;\n font-size: 19px;\n }\n }\n \n .navbar {\n .searchbar-expandable.searchbar-enabled {\n top: 0;\n // height: 100%;\n .searchbar-inner {\n height: 100%;\n padding: 0;\n\n &__center {\n flex-direction: column;\n }\n\n &__right {\n flex-direction: column-reverse;\n }\n }\n\n &.replace {\n height: 96px;\n }\n }\n a.link {\n padding: 0 16px;\n }\n a.link.searchbar-enable {\n i.icon-search {\n background-color: @toolbar-icons;\n }\n }\n a.icon-only {\n width: auto;\n height: 56px;\n }\n .buttons-row-replace a {\n color: @fill-white;\n padding: 0;\n }\n .searchbar .buttons-row {\n align-self: flex-start;\n }\n }\n\n @media(max-width: 550px) {\n .searchbar-expandable.searchbar-enabled {\n .searchbar-inner {\n &__left {\n margin-right: 33px;\n }\n }\n }\n }\n\n .actions-button-text {\n cursor: pointer;\n line-height: 48px;\n font-size: 16px;\n // color: rgba(0,0,0,.87);\n color: @text-normal;\n // color: var(--f7-actions-button-text-color, );\n }\n\n @media (min-width: 496px) {\n .actions-modal {\n width: 100%;\n left: auto;\n margin-left: 0;\n }\n }\n\n input.modal-text-input {\n box-sizing: border-box;\n height: 36px;\n background: #fff;\n margin: 0;\n margin-top: 15px;\n padding: 0;\n border: none;\n width: 100%;\n font-size: 16px;\n font-family: inherit;\n display: block;\n box-shadow: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n -ms-appearance: none;\n appearance: none;\n -webkit-transition-duration: .2s;\n transition-duration: .2s;\n }\n\n .input-field {\n .inputs-list {\n margin: 15px 0 0;\n ul {\n background: none;\n &::before, &::after {\n display: none;\n }\n }\n .item-input, .item-inner {\n padding: 0;\n margin: 0;\n }\n }\n }\n\n // Fonts List \n\n .font-item {\n .item-radio:not(.item-radio-icon-end) > .icon-radio {\n margin-right: 0;\n }\n }\n\n // Navbar link settings \n\n .navbar-link-settings, .navbar-dropdown-list {\n .navbar-inner {\n background: @background-primary;\n\n .icon-back {\n color: @text-normal;\n }\n }\n .title, a {\n color: @text-normal;\n }\n }\n\n // Popover styles\n .popover {\n box-shadow: var(--f7-box-shadow);\n\n &.popover__titled {\n .popover-arrow:after {\n background: @toolbar-background;\n }\n }\n\n &.document-menu, &.popover__functions {\n .popover-arrow:after {\n background: @background-secondary;\n }\n }\n }\n // Version History\n .page-version-history {\n --f7-page-bg-color: @background-primary;\n }\n\n .version-history {\n &__title {\n font-style: normal;\n font-weight: 500;\n font-size: 14px;\n line-height: 20px;\n color: @brandColor;\n margin-top: 16px;\n margin-bottom: 4px;\n }\n\n &__btn {\n box-shadow: 0px 0.25px 1px rgba(0, 0, 0, 0.039), 0px 0.85px 3px rgba(0, 0, 0, 0.19);\n border-radius: 6px;\n background: @background-primary;\n padding: 6px 20px;\n font-style: normal;\n font-weight: 500;\n font-size: 16px;\n line-height: 20px;\n letter-spacing: 0.25px;\n color: @brandColor;\n margin-top: 10px;\n border: 0;\n width: auto;\n }\n\n &__list {\n ul:before, ul:after {\n display: none;\n }\n\n .item-title {\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n line-height: 24px;\n color: @text-normal;\n letter-spacing: 0.15px;\n }\n\n .item-inner {\n padding-top: 10px;\n padding-bottom: 10px;\n }\n\n .item-inner::before {\n content: '';\n position: absolute;\n background-color: @background-menu-divider;\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n\n .item-media {\n padding-top: 12px;\n padding-bottom: 12px;\n min-width: 40px;\n max-width: 40px;\n }\n\n .item-link .item-title-row:before {\n display: none;\n }\n\n .item-subtitle {\n color: @text-secondary;\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 16px;\n letter-spacing: 0.5px;\n }\n }\n }\n\n .version-history__item_active {\n background-color: @background-tertiary;\n }\n\n .btn-close-history {\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n line-height: 24px;\n letter-spacing: 0.15px;\n color: @toolbar-icons;\n margin-left: 16px;\n }\n\n .beta-badge {\n background-color: @brand-secondary;\n margin-left: 8px;\n }\n}\n","// @common-image-path - defined in webpack config\n\n.device-ios {\n .theme-type-dark {\n i.icon {\n &.icon-logo {\n background: ~\"url(@{common-image-path}/header/logo-android.svg)\" no-repeat center;\n }\n }\n }\n i.icon {\n &.icon_mask {\n background-color: white;\n }\n &.icon-logo {\n width: 100px;\n height: 14px;\n background: ~\"url(@{common-image-path}/header/logo-ios.svg)\" no-repeat center;\n }\n &.icon-prev {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-next {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-edit {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-show-password {\n width: 25px;\n height: 25px;\n .encoded-svg-mask('', @text-secondary);\n }\n &.icon-hide-password {\n width: 25px;\n height: 25px;\n .encoded-svg-mask('', @text-secondary);\n }\n &.icon-return {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n }\n}\n","// @common-image-path - defined in webpack config\n\n.device-android {\n i.icon {\n &.icon_mask {\n background-color: @text-normal;\n }\n &.icon-logo {\n width: 100px;\n height: 14px;\n background: ~\"url(@{common-image-path}/header/logo-android.svg) no-repeat center\";\n }\n &.icon-prev {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-next {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-show-password {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-secondary);\n }\n &.icon-hide-password {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-secondary);\n }\n }\n .navbar {\n i.icon {\n &.icon-collaboration {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-back {\n color: @toolbar-icons;\n }\n &.icon-edit {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-close {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-done-disabled {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-tertiary);\n }\n &.icon-done {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-search {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-version-history {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n }\n }\n}\n","@import \"./ios/icons\";\n@import \"./material/icons\";\n\ni.icon {\n &.icon-paste {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-copy {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-cut {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-prev:after, &.icon-next:after {\n content: none;\n }\n &.icon-collaboration {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-cancellation {\n width: 24px;\n height: 24px;\n .encoded-svg-background('');\n }\n &.icon-remove-style {\n width: 24px;\n height: 24px;\n .encoded-svg-background('')\n }\n &.icon-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n // Formats \n \n &.icon-format-pdf {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n &.icon-format-pdfa {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n\n // Numbers\n\n &.icon-numbers-1 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-2 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-3 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-4 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-5 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-6 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-7 {\n .encoded-svg-background('');\n }\n\n &.icon-sharing-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n &.icon-info {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @brandColor);\n }\n\n &.icon-help {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-about {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n &.icon-search {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-version-history {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n // Text orientation\n\n &.icon-text-orientation-horizontal {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-anglecount {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-angleclock {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-vertical {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-rotateup {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-rotatedown {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n}\n","// Data view\n\n.dataview {\n .row {\n justify-content: space-around;\n }\n\n ul {\n padding: 0 10px;\n list-style: none;\n\n li {\n display: inline-block;\n }\n }\n\n .row.list:last-child li:not(.active):last-child::after {\n content: none;\n }\n\n .row.list:last-child li.active:last-child, .active {\n position: relative;\n z-index: 1;\n\n &::after {\n content: '';\n position: absolute;\n width: 22px;\n height: 22px;\n right: -5px;\n left: auto;\n bottom: -5px;\n transform: none;\n .encoded-svg-mask('');\n }\n }\n}","@statusBarBorderColor: #cbcbcb;\n\n.navbar {\n .searchbar {\n background-color: var(--f7-navbar-bg-color);\n\n .buttons-row {\n align-self: center;\n display: flex;\n }\n\n .searchbar-bg {\n .hairline(bottom, @statusBarBorderColor);\n }\n }\n\n .searchbar-inner {\n justify-content: space-between;\n &__center {\n display: flex;\n align-items: center;\n width: 81%;\n }\n &__right {\n display: flex;\n align-items: center;\n }\n }\n\n .searchbar-expandable {\n transition-duration: 0s;\n }\n\n .buttons-row-replace {\n display: flex;\n flex-direction: column;\n align-items: center;\n // width: max-content;\n width: 100%;\n justify-content: center;\n a {\n font-size: 15px;\n height: auto;\n display: block;\n line-height: normal;\n\n &:before{\n display: none;\n }\n }\n }\n\n @media(max-width: 550px)\n {\n .searchbar-expandable.searchbar-enabled {\n .searchbar-inner {\n &__left {\n min-width: 22px;\n max-width: 22px;\n }\n &__center {\n flex-direction: column;\n }\n &__right {\n flex-direction: column-reverse;\n }\n }\n &.replace {\n top: 0;\n .searchbar-inner {\n height: 100%;\n &__left {\n align-self: flex-start;\n }\n }\n }\n } \n }\n}\n","\n// RTL, LTR\n.ltr(@ruleset) {\n & when not (@rtl) {\n @ruleset();\n }\n}\n.rtl(@ruleset) {\n & when (@rtl) {\n @ruleset();\n }\n}\n.if-ios-theme(@ruleset) {\n & when (@includeIosTheme) {\n @ruleset();\n }\n}\n.if-md-theme(@ruleset) {\n & when (@includeMdTheme) {\n @ruleset();\n }\n}\n.if-dark-theme(@ruleset) {\n & when(@includeDarkTheme) {\n @ruleset();\n }\n}\n.ios-vars(@ruleset) {\n & when (@includeIosTheme) {\n .ios {\n @ruleset();\n }\n }\n}\n.md-vars(@ruleset) {\n & when (@includeMdTheme) {\n .md {\n @ruleset();\n }\n }\n}\n.md-color-vars(@ruleset) {\n & when (@includeMdTheme) {\n .md,\n .md .dark,\n .md [class*='color-'] {\n @ruleset();\n }\n }\n}\n.dark-vars(@ruleset) {\n & when (@includeDarkTheme) {\n .dark,\n &.dark {\n @ruleset();\n }\n }\n}\n.light-vars(@ruleset) {\n & when (@includeLightTheme) {\n & {\n @ruleset();\n }\n }\n}\n// Scrollable\n.scrollable() {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n}\n.not-scrollable() {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\n// Disabled\n.disabled() {\n opacity: 0.55;\n pointer-events: none;\n}\n// Modal Backdrops\n.modal-backdrop() {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.4);\n z-index: 13000;\n visibility: hidden;\n opacity: 0;\n transition-duration: 400ms;\n &.not-animated {\n transition-duration: 0ms;\n }\n &.backdrop-in {\n visibility: visible;\n opacity: 1;\n }\n}\n\n// Hairlines\n.hairline-pseudo(@color, @top, @right, @bottom, @left) {\n content: '';\n position: absolute;\n background-color: @color;\n display: block;\n z-index: 15;\n top: @top;\n right: @right;\n bottom: @bottom;\n left: @left;\n}\n.hairline(@position, @color) when (@position = top) {\n &:before {\n .hairline-pseudo(@color, 0, auto, auto, 0);\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline(@position, @color) when (@position = left) {\n &:before {\n .hairline-pseudo(@color, 0, auto, auto, 0);\n width: 1px;\n height: 100%;\n transform-origin: 0% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline(@position, @color) when (@position = bottom) {\n &:after {\n .hairline-pseudo(@color, auto, auto, 0, 0);\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline(@position, @color) when (@position = right) {\n &:after {\n .hairline-pseudo(@color, 0, 0, auto, auto);\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline-remove-top-bottom() {\n &:before,\n &:after {\n display: none !important;\n }\n}\n// For right and bottom\n.hairline-remove(@position) when not (@position = left) and not (@position = top) {\n &:after {\n display: none !important;\n }\n}\n// For left and top\n.hairline-remove(@position) when not (@position = right) and not (@position = bottom) {\n &:before {\n display: none !important;\n }\n}\n// For right and bottom\n.hairline-color(@position, @color) when not (@position = left) and not (@position = top) {\n &:after {\n background-color: @color;\n }\n}\n// For left and top\n.hairline-color(@position, @color) when not (@position = right) and not (@position = bottom) {\n &:before {\n background-color: @color;\n }\n}\n// MD Active Active Links Highlights\n.link-highlight() {\n &:before {\n content: '';\n width: 152%;\n height: 152%;\n left: -26%;\n top: -26%;\n position: absolute;\n background-image: radial-gradient(\n circle at center,\n var(--f7-link-highlight-color) 66%,\n rgba(255, 255, 255, 0) 66%\n );\n background-repeat: no-repeat;\n background-position: center;\n background-size: 100% 100%;\n opacity: 0;\n pointer-events: none;\n transition-duration: 300ms;\n transition-property: opacity;\n }\n &.icon-only:before,\n &.ripple-inset:before,\n &.searchbar-disable-button:before,\n &.input-clear-button:before,\n &.notification-close-button:before {\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n background-image: radial-gradient(\n circle at center,\n var(--f7-link-highlight-color) 71%,\n rgba(255, 255, 255, 0) 71%\n );\n }\n &.active-state:before {\n opacity: 1;\n transition-duration: 150ms;\n }\n}\n// MD Bars Shadow\n\n.core-icons-font() {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n\n.ios-translucent-bars(@color) {\n .ios-translucent-bars & {\n @supports (backdrop-filter: blur(20px)) {\n background-color: rgba(@color, var(--f7-bars-translucent-opacity));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n }\n}\n.ios-translucent-modals(@color) {\n .ios-translucent-modals & {\n @supports (backdrop-filter: blur(20px)) {\n background-color: rgba(@color, 0.8);\n backdrop-filter: saturate(180%) blur(20px);\n }\n }\n}\n\n.no-scrollbar() {\n scrollbar-width: none;\n scrollbar-color: transparent;\n &::-webkit-scrollbar {\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n }\n &::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n }\n &::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n }\n}\n","\n.device-ios {\n .document-menu {\n @contextMenuBg: rgba(0, 0, 0, 0.9);\n @modalHairlineColor: rgba(230, 230, 230, 0.9);\n @modalButtonColor: rgba(200, 200, 200, 0.9);\n\n background-color: @contextMenuBg;\n border-radius: 8px;\n\n .popover-angle {\n &:after {\n background: @contextMenuBg;\n }\n }\n\n .list-block {\n font-size: 14px;\n white-space: pre;\n\n &:first-child {\n ul {\n .hairline-remove(left);\n //border-radius: 7px 0 0 7px;\n }\n\n li:first-child a {\n //border-radius: 7px 0 0 7px;\n border-radius: 0;\n }\n }\n\n //&:last-child {\n // ul {\n // .hairline-remove(right);\n // border-radius: 0 7px 7px 0;\n // }\n // li:last-child a{\n // border-radius: 0 7px 7px 0;\n // }\n //}\n\n //&:first-child:last-child {\n // li:first-child:last-child a, ul:first-child:last-child {\n // border-radius: 7px;\n // }\n //}\n\n .item-link {\n display: inline-block;\n\n html:not(.watch-active-state) &:active, &.active-state {\n //.transition(0ms);\n background-color: #d9d9d9;\n .item-inner {\n .hairline-color(right, transparent);\n }\n }\n\n html.phone & {\n padding: 0 10px;\n }\n }\n\n .list-button {\n color: @white;\n line-height: 36px;\n\n .hairline(right, @modalHairlineColor);\n }\n\n // List items\n li {\n display: inline-flex;\n }\n\n // Last-childs\n li {\n &:last-child {\n .list-button {\n .hairline-remove(right);\n }\n }\n\n &:last-child, &:last-child li:last-child {\n .item-inner {\n .hairline-remove(right);\n }\n }\n\n li:last-child, &:last-child li {\n .item-inner {\n .hairline(right, @modalHairlineColor);\n }\n }\n }\n\n //.no-hairlines();\n //.no-hairlines-between()\n }\n }\n}","\n.md {\n .document-menu {\n //line-height: 1 !important;\n\n .popover-inner {\n overflow: hidden;\n }\n\n .list-block {\n white-space: pre;\n\n ul {\n height: 48px;\n }\n\n li {\n display: inline-block;\n }\n\n .list-button {\n color: @text-normal;\n }\n\n //.item-link {\n // html.phone & {\n //padding: 0 10px;\n //}\n //}\n }\n }\n}\n","@import './ios/contextmenu';\n@import './material/contextmenu';\n\n\n.document-menu {\n width: auto;\n}\n\nhtml.phone .document-menu .list-block .list-button {\n padding: 0 10px;\n}",".device-ios {\n .wrap-comment {\n height: calc(100% - 60px);\n }\n .add-comment-popup, .add-reply-popup, .add-comment-dialog, .add-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 34px);\n }\n }\n .edit-comment-popup, .edit-reply-popup, .edit-comment-dialog, .edit-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 52px);\n }\n }\n .comment-list {\n .reply-item {\n .item-inner:after {\n content: none !important;\n }\n &:before {\n content: '';\n position: absolute;\n left: auto;\n bottom: 0;\n right: auto;\n top: 0;\n height: 1px;\n width: 100%;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n -webkit-transform-origin: 50% 100%;\n transform-origin: 50% 100%;\n }\n }\n }\n}",".device-android {\n .wrap-comment {\n height: calc(100% - 72px);\n }\n .add-comment-popup, .add-reply-popup, .add-comment-dialog, .add-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 41px);\n }\n }\n .edit-comment-popup, .edit-reply-popup, .edit-comment-dialog, .edit-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 56px);\n }\n }\n .wrap-comment, .comment-list, .reply-list {\n .comment-header, .reply-header {\n display: flex;\n .initials {\n border-radius: 50px;\n color: @fill-white;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: 10px;\n font-size: 14px;\n }\n }\n }\n\n .wrap-comment {\n .comment-header {\n align-items: center;\n .initials {\n height: 30px;\n width: 30px;\n }\n }\n .wrap-textarea {\n .input:not(.input-outline):after {\n content: none;\n }\n }\n }\n\n #add-comment-dialog, #edit-comment-dialog, #add-reply-dialog, #edit-reply-dialog {\n .dialog {\n --f7-dialog-text-color: @black;\n .done {\n padding-right: 6px;\n }\n }\n }\n\n .comment-list {\n ul:after, .item-inner:after, li:last-child li .item-inner:after {\n content: none;\n }\n .comment-header {\n .left {\n display: flex;\n align-items: center;\n .initials {\n width: 40px;\n height: 40px;\n font-size: 18px;\n }\n }\n }\n }\n .reply-list {\n .reply-header {\n .left {\n display: flex;\n .initials {\n margin-top: 5px;\n width: 24px;\n height: 24px;\n font-size: 11px;\n }\n }\n }\n }\n\n .edit-comment-popup, .edit-reply-popup, #edit-comment-dialog, #edit-reply-dialog {\n .wrap-comment {\n .comment-header, .reply-header {\n .initials {\n height: 40px;\n width: 40px;\n }\n }\n }\n }\n\n #view-comment-popover {\n .toolbar-bottom:after {\n content: none;\n }\n }\n\n}","@comment-date: #6d6d72;\n@swipe-icon: #E5E5E5;\n\n@import './ios/comments';\n@import './material/comments';\n\n.wrap-comment {\n padding: 16px 24px 0 16px;\n background-color: @background-tertiary;\n \n .comment-date {\n color: @text-secondary;\n }\n .wrap-textarea {\n margin-top: 6px;\n }\n .name {\n font-weight: 600;\n font-size: 16px;\n color: @text-normal;\n }\n .reply-date {\n color: @text-secondary;\n }\n}\n\n.wrap-textarea {\n .input {\n height: 100%;\n }\n\n textarea {\n font-size: 14px;\n margin-top: 0;\n height: 100%;\n padding: 5px 0;\n color: @text-normal;\n }\n}\n\n#add-comment-dialog, #edit-comment-dialog, #add-reply-dialog, #edit-reply-dialog {\n .dialog {\n --f7-dialog-width: 400px;\n z-index: 13700;\n .dialog-inner {\n padding: 0;\n height: 400px;\n .wrap-comment {\n .name, .comment-date, .reply-date {\n text-align: left;\n }\n .wrap-textarea {\n textarea {\n color: @text-normal;\n width: 100%;\n }\n }\n }\n }\n }\n}\n\n.comment-list {\n .item-content .item-inner {\n padding-right: 0;\n padding-bottom: 0;\n padding-top: 16px;\n .comment-header {\n display: flex;\n justify-content: space-between;\n padding-right: 16px;\n .right {\n display: flex;\n justify-content: flex-end;\n width: 70px;\n .comment-resolve {\n margin-right: 10px;\n }\n }\n }\n .reply-header {\n display: flex;\n justify-content: space-between;\n padding-right: 16px;\n }\n }\n .item-title {\n width: 100%;\n }\n .user-name {\n font-size: 16px;\n line-height: 22px;\n color: @text-normal;\n margin: 0;\n font-weight: 700;\n }\n .comment-date, .reply-date {\n font-size: 12px;\n line-height: 18px;\n color: @text-secondary;\n margin: 0;\n }\n .comment-quote {\n color: @text-secondary;\n border-left: 1px solid @text-secondary;\n padding-left: 10px;\n padding-right: 16px;\n margin: 5px 0;\n font-size: 14px;\n }\n .comment-text, .reply-text {\n color: @text-normal;\n font-size: 14px;\n line-height: 25px;\n margin: 0;\n max-width: 100%;\n padding-right: 15px;\n word-break: break-all;\n pre {\n white-space: pre-wrap;\n overflow-wrap: break-word;\n }\n }\n .reply-list {\n padding-left: 26px;\n }\n .reply-item {\n padding-right: 26px;\n }\n}\n\n.edit-comment-popup, .add-reply-popup, .edit-reply-popup {\n z-index: 20000;\n}\n\n#view-comment-sheet {\n background-color: @fill-white;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n height: 45%;\n box-shadow: 0 1px 10px rgba(0, 0, 0, 0.2), 0 4px 5px rgba(0, 0, 0, 0.12);\n webkit-transition: height 200ms;\n transition: height 200ms;\n .top {\n height: 90%;\n }\n .swipe-container {\n display: flex;\n justify-content: center;\n height: 40px;\n background-color: @background-primary;\n .icon-swipe {\n margin-top: 8px;\n width: 40px;\n height: 4px;\n background: @background-menu-divider;\n border-radius: 2px;\n }\n }\n}\n\n#view-comment-popover, #view-comment-sheet {\n .toolbar {\n position: fixed;\n background-color: @background-primary;\n box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.2), 0px 4px 5px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14);\n .link {\n --f7-toolbar-link-color: @brandColor;\n }\n .toolbar-inner {\n padding: 0 16px;\n }\n .btn-add-reply {\n padding: 0;\n min-width: 80px;\n font-size: 16px;\n }\n .comment-navigation {\n min-width: 62px;\n display: flex;\n justify-content: space-between;\n .link {\n padding: 0 12px;\n }\n }\n }\n}\n\n#view-comment-popover {\n background-color: @background-primary;\n .pages {\n position: absolute;\n }\n .page {\n border-radius: var(--f7-popover-border-radius);\n .page-content {\n padding: 16px 16px 60px 0;\n border-radius: var(--f7-popover-border-radius);\n }\n }\n .comment-list {\n .item-content {\n .item-inner {\n .comment-header, .reply-header {\n padding-right: 0;\n }\n }\n }\n }\n .toolbar {\n position: absolute;\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n }\n}\n\n.page-current-comment {\n position: relative;\n .page-content {\n background-color: @background-primary;\n }\n .comment-list {\n ul {\n &:before, &:after {\n content: none;\n }\n .item-content .item-inner {\n padding-top: 0;\n .reply-list .item-content .item-inner {\n padding-top: 13px;\n }\n }\n }\n }\n}\n\n.dialog.modal-in {\n z-index: 14000;\n max-height: 100%;\n overflow: auto;\n\n .item-content .item-input-wrap::after {\n background-color: @brandColor;\n }\n}\n\n.dialog-backdrop.backdrop-in {\n z-index: 13600;\n}\n\n.no-comments {\n text-align: center;\n margin-top: 35px;\n color: @text-normal;\n}\n\n.actions-modal.modal-in {\n z-index: 13700;\n .actions-group::after {\n background-color: @background-menu-divider;\n }\n}\n\n.actions-backdrop.backdrop-in {\n z-index: 13600;\n}","\n// Colors\n@themeColorLight: #a2bdde;\n@navBarIconColor: @toolbar-icons;\n\n\n.device-android {\n // Main Toolbar\n #editor-navbar.navbar .right {\n padding-right: 4px;\n }\n #editor-navbar.navbar .right a.link,\n #editor-navbar.navbar .left a.link {\n padding: 0 13px;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n width: auto;\n }\n\n // .toggle input[type=\"checkbox\"]:checked + .toggle-icon {\n // background-color: rgba(68,105,149,.5);\n // }\n\n // Review\n .page-review {\n .header-change {\n display: flex;\n }\n .toolbar {\n height: 56px;\n .toolbar-inner {\n padding: 0 15px;\n .link {\n padding: 0;\n font-size: 14px;\n text-transform: uppercase;\n font-weight: 500;\n }\n }\n }\n .initials {\n height: 40px;\n width: 40px;\n border-radius: 50px;\n color: @white;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: 16px;\n font-size: 18px;\n }\n }\n\n // Stepper \n .content-block.stepper-block {\n display: flex;\n justify-content: center;\n margin: 25px 0 0;\n\n .stepper {\n --f7-touch-ripple-color: none;\n }\n \n .stepper-button, .stepper-button-minus, .stepper-button-plus {\n border: none;\n border-radius: 0;\n\n &:before, &:after{\n display: none;\n }\n }\n\n .stepper-button-minus.active-state, .stepper-button-plus.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n }\n\n .stepper-input-wrap{\n border:none;\n\n input {\n color: @text-normal;\n font-size: 16px;\n width: 40px;\n font-weight: var(--f7-list-item-after-line-height);\n }\n }\n }\n\n .navigation-sheet {\n border-radius: 4px 4px 0px 0px;\n &__title {\n display: flex;\n align-items: center;\n background: @background-primary;\n padding-bottom: 15px;\n padding-left: 16px;\n p {\n font-style: normal;\n font-weight: 500;\n font-size: 20px;\n line-height: 23px;\n color: @text-normal;\n margin: 0;\n }\n }\n }\n\n // Snackbar\n .snackbar {\n position: absolute;\n width: 344px;\n left: calc(50% - 344px / 2);\n bottom: 16px;\n background: #333333;\n border-radius: 4px;\n z-index: 1000000;\n &__content {\n padding: 14px 16px;\n }\n &__text {\n margin: 0;\n color: @fill-white;\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 20px;\n letter-spacing: 0.25px;\n text-align: center;\n }\n }\n\n @media(max-width: 450px) {\n .snackbar {\n width: auto;\n max-width: 100%;\n left: 16px;\n right: 16px;\n bottom: 8px;\n &__text {\n text-align: left;\n }\n }\n }\n\n // Password input\n .password-field {\n &__wrap {\n display: flex;\n justify-content: space-between;\n position: relative;\n }\n\n &__icon {\n min-width: 24px;\n min-height: 24px;\n }\n\n &__input {\n width: 100%;\n height: var(--f7-input-height);\n color: var(--f7-input-text-color);\n font-size: var(--f7-input-font-size);\n background-color: var(--f7-input-bg-color, transparent);\n padding-left: var(--f7-input-padding-left);\n padding-right: var(--f7-input-padding-right);\n box-sizing: border-box;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n box-shadow: none;\n border-radius: 0;\n outline: 0;\n display: block;\n padding: 0;\n margin: 0;\n font-family: inherit;\n background: none;\n resize: none;\n }\n }\n}",".ios {\n // Stepper \n .content-block.stepper-block {\n margin: 20px 0;\n\n .stepper.stepper-large {\n height: 35px;\n border-radius: var(--f7-button-border-radius);\n box-shadow: var(--f7-button-box-shadow);\n }\n\n .stepper-button-minus, .stepper-button-plus {\n color: #446995;\n border: 1px solid #446995;\n \n &:before, &:after{\n display: none;\n }\n }\n\n .stepper-button-minus.active-state, .stepper-button-plus.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n }\n\n .stepper-input-wrap {\n border-top: 1px solid #446995;\n border-bottom: 1px solid #446995;\n input {\n color: @text-normal;\n font-size: 17px;\n font-weight: var(--f7-list-item-after-line-height);\n }\n }\n }\n\n .navigation-sheet {\n border-radius: 10px 10px 0px 0px;\n &__title {\n display: flex;\n justify-content: center;\n align-items: center;\n background: @background-primary;\n padding-bottom: 10px;\n p {\n font-style: normal;\n font-weight: 600;\n font-size: 17px;\n line-height: 22px;\n text-align: center;\n color: @text-normal;\n margin: 0;\n }\n }\n }\n\n // Custom option dropdown page\n .custom-option-wrapper {\n padding: 11px 16px;\n \n .wrap-textarea {\n padding: 0;\n }\n }\n\n\n // Reader mode\n .back-reader-mode {\n margin-left: 10px;\n }\n\n // Snackbar\n .snackbar {\n width: 195px;\n position: absolute;\n bottom: 24px;\n left: calc(50% - 195px / 2);\n background: rgba(0, 0, 0, .9);\n border-radius: 4px;\n z-index: 1000000;\n &__content {\n padding: 15px 16.5px;\n }\n &__text {\n margin: 0;\n font-style: normal;\n font-weight: 400;\n font-size: 13px;\n line-height: 18px;\n letter-spacing: -0.078px;\n color: @fill-white;\n text-align: center;\n }\n }\n\n @media(max-width: 450px) {\n .snackbar {\n bottom: 50px;\n }\n }\n}\n\n",".device-ios {\n i.icon {\n &.icon-undo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-redo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-edit-settings {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-plus {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-expand-down {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n //Settings\n &.icon-spellcheck {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-reader {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-doc-setup {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-app-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-download {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-print {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-navigation {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-feedback {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n // Edit\n \n &.icon-text-additional {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-bullets {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-numbers {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-linespacing {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-color {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-selection {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n // Align\n &.icon-text-align-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-center {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-just {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-de-indent {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-in-indent {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n // Table\n &.icon-table-add-column-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-table-add-column-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-table-add-row-above {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-table-add-row-below {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-table-remove-column {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-table-remove-row {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n // Presets of table borders\n &.icon-table-borders-all {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-none {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-inner {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-outer {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-left {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-center {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-right {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-top {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-middle {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-bottom {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n // Reorder\n &.icon-move-backward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-forward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-mask {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-background {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-foreground {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n // Wrap\n &.icon-wrap-inline {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-wrap-square {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-wrap-tight {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-wrap-through {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-wrap-top-bottom {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-wrap-infront {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-wrap-behind {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n // Table Wrap\n &.icon-wrap-table-inline {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-wrap-table-flow {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-block-align-left {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-block-align-center {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-block-align-right {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n // Insert link/image-library\n &.icon-link {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-image-library {\n width: 22px;\n height: 22px;\n .encoded-svg-background('icons_for_svg');\n }\n //Insert\n &.icon-add-table {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-segment);\n }\n &.icon-add-shape {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('',@toolbar-segment);\n }\n &.icon-add-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-segment);\n }\n &.icon-add-other {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-segment);\n }\n &.icon-table-contents {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-insert-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-pagenumber {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-sectionbreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-footnote {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-pagebreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-stringbreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n // Collaboration\n &.icon-users {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-review {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-review-changes {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-accept-changes {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-reject-changes {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-accept {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-reject {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-next-change {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-prev-change {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-goto {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n // Reader mode\n &.icon-edit-mode {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-mobile-view {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-standard-view {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n // Comments\n &.icon-menu-comment {\n width: 30px;\n height: 30px;\n .encoded-svg-mask('', @text-tertiary);\n }\n &.icon-resolve-comment {\n width: 30px;\n height: 30px;\n .encoded-svg-mask('');\n }\n &.icon-resolve-comment.check {\n width: 30px;\n height: 30px;\n .encoded-svg-background('');\n }\n &.icon-insert-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-export {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-prev-field {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n &.icon-next-field {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n }\n .tab-link-active {\n i.icon {\n &.icon-add-table {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-shape {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-other {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n }\n }\n}",".device-android {\n .navbar {\n i.icon {\n &.icon-undo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-redo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-edit-settings {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-plus {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-settings {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-prev {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-next {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-expand-down {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @fill-white);\n }\n // Insert\n &.icon-add-table {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-tab-normal);\n }\n &.icon-add-shape {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-tab-normal);\n }\n &.icon-add-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-tab-normal);\n }\n &.icon-add-other {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-tab-normal);\n }\n\n // Reader mode\n &.icon-mobile-view {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-standard-view {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-check {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n // Forms tools\n &.icon-prev-field {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons)\n }\n &.icon-next-field {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-export {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-return {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-save-form {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n }\n }\n i.icon {\n &.icon-plus {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @fill-white);\n }\n &.icon-check {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-expand-down {\n width: 17px;\n height: 17px;\n .encoded-svg-mask('');\n }\n &.icon-expand-up {\n width: 17px;\n height: 17px;\n .encoded-svg-mask('');\n }\n //Settings\n &.icon-spellcheck {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-reader {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-doc-setup {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-app-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-download {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-print {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-table-contents {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-navigation {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-feedback {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n // Forms tools\n &.icon-export {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-favorites {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n &.icon-clear-fields {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n // Mobile View\n &.icon-mobile-view {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @brandColor);\n }\n &.icon-edit-mode {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @brandColor);\n }\n\n // Edit\n &.icon-text-align-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-center {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-just {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-de-indent {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-in-indent {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n // Table\n &.icon-table-add-column-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-table-add-column-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-table-add-row-above {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-table-add-row-below {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-table-remove-column {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-table-remove-row {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-create-style {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n // Presets of table borders\n &.icon-table-borders-all {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-none {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-inner {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-outer {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-left {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-center {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-right {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-top {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-middle {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-bottom {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n // Reorder\n &.icon-move-backward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-forward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-mask {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-background {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-foreground {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n // Table Wrap\n &.icon-block-align-left {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-block-align-center {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-block-align-right {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n // Insert link/image-library\n &.icon-link {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-image-library {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-insert-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-pagenumber {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-sectionbreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-footnote {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-pagebreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-stringbreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n // Collaboration\n &.icon-users {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-review {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-review-changes {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-accept-changes {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-reject-changes {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-accept {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-reject {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-next-change {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-prev-change {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-goto {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n // Comments\n &.icon-menu-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-tertiary);\n }\n &.icon-resolve-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-resolve-comment.check {\n width: 24px;\n height: 24px;\n .encoded-svg-background('');\n }\n &.icon-done-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-insert-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-done-comment-white {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @fill-white);\n }\n }\n}","// Formats\n\ni.icon {\n &.icon-format-docx {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n \n &.icon-format-docxf {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n \n &.icon-format-oform {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n \n &.icon-format-txt {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n \n &.icon-format-rtf {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n \n &.icon-format-odt {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n \n &.icon-format-html {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n \n &.icon-format-dotx {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n \n &.icon-format-ott {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n\n &.icon-protect-document {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-protection {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-encrypt-file {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n \n &.icon-format-fb2 {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n\n &.icon-format-epub {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n &.icon-save-form {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n &.icon-add-favorites {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n &.icon-remove-favorites {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n &.icon-clear-fields {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/apps/documenteditor/mobile/css/framework7-rtl.css b/apps/documenteditor/mobile/css/framework7-rtl.css new file mode 100644 index 0000000000..3bec0867ef --- /dev/null +++ b/apps/documenteditor/mobile/css/framework7-rtl.css @@ -0,0 +1,3 @@ +:root{--f7-safe-area-left:0px;--f7-safe-area-right:0px;--f7-safe-area-top:0px;--f7-safe-area-bottom:0px;--f7-safe-area-outer-left:0px;--f7-safe-area-outer-right:0px;--f7-device-pixel-ratio:1}@supports (left:env(safe-area-inset-left)){:root{--f7-safe-area-top:env(safe-area-inset-top);--f7-safe-area-bottom:env(safe-area-inset-bottom)}:root .ios-edges,:root .ios-left-edge,:root .panel-left,:root .popup,:root .safe-area-left,:root .safe-areas,:root .sheet-modal{--f7-safe-area-left:env(safe-area-inset-left);--f7-safe-area-outer-left:env(safe-area-inset-left)}:root .ios-edges,:root .ios-right-edge,:root .panel-right,:root .popup,:root .safe-area-right,:root .safe-areas,:root .sheet-modal{--f7-safe-area-right:env(safe-area-inset-right);--f7-safe-area-outer-right:env(safe-area-inset-right)}:root .no-ios-edges,:root .no-ios-left-edge,:root .no-safe-area-left,:root .no-safe-areas{--f7-safe-area-left:0px;--f7-safe-area-outer-left:0px}:root .no-ios-edges,:root .no-ios-right-edge,:root .no-safe-area-right,:root .no-safe-areas{--f7-safe-area-right:0px;--f7-safe-area-outer-right:0px}}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){:root{--f7-device-pixel-ratio:2}}@media (-webkit-min-device-pixel-ratio:3),(min-resolution:3dppx){:root{--f7-device-pixel-ratio:3}}:root{--f7-font-size:14px;--f7-bars-translucent-opacity:0.8;--f7-bars-translucent-blur:20px}.ios{--f7-font-family:-apple-system,SF Pro Text,SF UI Text,system-ui,Helvetica Neue,Helvetica,Arial,sans-serif;--f7-line-height:1.4;--f7-bars-text-color:#000;--f7-text-color:#000;--f7-bars-bg-color:#f7f7f8;--f7-bars-bg-color-rgb:247,247,248;--f7-bars-border-color:rgba(0,0,0,0.25)}.ios .dark,.ios.dark{--f7-bars-text-color:#fff;--f7-text-color:#fff;--f7-bars-bg-color:#121212;--f7-bars-bg-color-rgb:22,22,22;--f7-bars-border-color:rgba(255,255,255,0.16)}.md{--f7-font-family:Roboto,system-ui,Noto,Helvetica,Arial,sans-serif;--f7-line-height:1.5;--f7-bars-border-color:transparent;--f7-text-color:#212121}.md .dark,.md.dark{--f7-text-color:rgba(255,255,255,0.87)}.md,.md .dark,.md [class*=color-]{--f7-bars-link-color:var(--f7-md-on-surface);--f7-bars-bg-color:var(--f7-md-surface-2);--f7-bars-bg-color-rgb:var(--f7-md-surface-2-rgb)}.text-color-primary{--f7-theme-color-text-color:var(--f7-theme-color)}.bg-color-primary{--f7-theme-color-bg-color:var(--f7-theme-color)}.border-color-primary{--f7-theme-color-border-color:var(--f7-theme-color)}.ripple-color-primary{--f7-theme-color-ripple-color:rgba(var(--f7-theme-color-rgb),0.3)}@font-face{font-family:framework7-core-icons;font-style:normal;font-weight:400;src:url("data:application/font-woff;charset=utf-8;base64, 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") format("woff")}html{direction:rtl;overscroll-behavior:none}.framework7-root,body,html{height:100%;overflow-x:hidden;position:relative;width:100%}body{-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;background:#fff;color:var(--f7-text-color);font-family:var(--f7-font-family);font-size:var(--f7-font-size);line-height:var(--f7-line-height);margin:0;overflow:hidden;overflow-y:scroll;padding:0;scrollbar-color:transparent;scrollbar-width:none;width:100%}body::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}body::-webkit-scrollbar-track{background:transparent;box-shadow:none}body::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.dark body,body.dark{background:#000}.dark{color:var(--f7-text-color)}.framework7-root{box-sizing:border-box;overflow:hidden}.framework7-initializing *,.framework7-initializing :after,.framework7-initializing :before{transition-duration:0ms!important}.device-android,.device-ios{cursor:pointer}.device-ios{touch-action:manipulation}@media (width:1024px) and (height:691px) and (orientation:landscape){.framework7-root,body,html{height:671px}}@media (width:1024px) and (height:692px) and (orientation:landscape){.framework7-root,body,html{height:672px}}*{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:none}a,input,select,textarea{outline:0}a{color:var(--f7-theme-color);text-decoration:none}.item-link,.link,a{cursor:pointer}p{margin:1em 0}.disabled{opacity:.55!important;pointer-events:none!important}html.device-full-viewport,html.device-full-viewport body{height:100vh}.ios .if-md,.ios .if-not-ios,.ios .md-only,.ios .not-ios{display:none!important}@media (width:1024px) and (height:691px) and (orientation:landscape){.ios,.ios .framework7-root,.ios body{height:671px}}@media (width:1024px) and (height:692px) and (orientation:landscape){.ios,.ios .framework7-root,.ios body{height:672px}}.md .if-ios,.md .if-not-md,.md .ios-only,.md .not-md{display:none!important}.view,.views{box-sizing:border-box;height:100%;overflow:hidden;position:relative;z-index:5000}.framework7-root>.view,.framework7-root>.views{height:100%}.view-resize-handler{cursor:col-resize;display:none;height:100%;left:var(--f7-page-master-width);margin-left:-3px;position:absolute;top:0;width:6px;z-index:1000}.view-master-detail .view-resize-handler{display:block}:root{--f7-page-master-width:320px;--f7-page-master-border-color:rgba(0,0,0,0.1);--f7-page-master-border-width:1px;--f7-page-swipeback-transition-duration:300ms;--f7-page-parallax-transition-duration:500ms;--f7-page-cover-transition-duration:450ms;--f7-page-dive-transition-duration:500ms;--f7-page-fade-transition-duration:500ms;--f7-page-flip-transition-duration:700ms;--f7-page-push-transition-duration:500ms;--f7-page-title-line-height:1.2;--f7-page-title-text-color:inherit;--f7-page-title-padding-left:16px;--f7-page-title-padding-right:16px}.ios{--f7-page-transition-duration:400ms;--f7-page-title-font-size:34px;--f7-page-title-font-weight:700;--f7-page-title-letter-spacing:-0.03em;--f7-page-title-padding-vertical:6px;--f7-page-bg-color:#efeff4}.ios .dark,.ios.dark{--f7-page-bg-color:#000}.md{--f7-page-transition-duration:400ms;--f7-page-title-font-size:34px;--f7-page-title-font-weight:500;--f7-page-title-letter-spacing:0;--f7-page-title-padding-vertical:8px}.md,.md .dark,.md [class*=color-]{--f7-page-bg-color:var(--f7-md-surface)}.dark{--f7-page-master-border-color:rgba(255,255,255,0.2)}.pages{overflow:hidden;position:relative}.page,.pages{height:100%;width:100%}.page{background-color:var(--f7-page-bg-color);box-sizing:border-box;left:0;position:absolute;top:0;transform:none;z-index:1}.page-with-navbar-large-collapsed{--f7-navbar-large-collapse-progress:1}.page-previous{pointer-events:none}.page-content{-webkit-overflow-scrolling:touch;box-sizing:border-box;height:100%;overflow:auto;padding-bottom:calc(var(--f7-page-toolbar-bottom-offset, 0px) + var(--f7-safe-area-bottom) + var(--f7-page-content-extra-padding-bottom, 0px));padding-top:calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-toolbar-top-offset, 0px) + var(--f7-page-subnavbar-offset, 0px) + var(--f7-page-searchbar-offset, 0px) + var(--f7-page-content-extra-padding-top, 0px));position:relative;z-index:1}.page-transitioning,.page-transitioning .page-opacity-effect,.page-transitioning .page-shadow-effect{transition-duration:var(--f7-page-transition-duration)}.page-transitioning-swipeback,.page-transitioning-swipeback .page-opacity-effect,.page-transitioning-swipeback .page-shadow-effect{transition-duration:var(--f7-page-swipeback-transition-duration)}.router-transition-backward .page-current,.router-transition-backward .page-next,.router-transition-forward .page-current,.router-transition-forward .page-next{pointer-events:none}.page-shadow-effect{background:linear-gradient(270deg,rgba(0,0,0,0) 0,rgba(0,0,0,0) 10%,rgba(0,0,0,.01) 50%,rgba(0,0,0,.2));left:100%;width:16px;z-index:-1}.page-opacity-effect,.page-shadow-effect{bottom:0;content:"";opacity:0;position:absolute;top:0}.page-opacity-effect{background:rgba(0,0,0,.1);left:0;width:100%;z-index:10000}.ios .page-previous{transform:translate3d(20%,0,0)}.ios .page-next{transform:translate3d(-100%,0,0)}.ios .page-current .page-shadow-effect,.ios .page-previous .page-opacity-effect,.ios .page-previous:after{opacity:1}.ios .router-transition-forward .page-next{animation:ios-page-next-to-current var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .page-next:before{animation:ios-page-element-fade-in var(--f7-page-transition-duration) forwards;background:linear-gradient(270deg,rgba(0,0,0,0) 0,rgba(0,0,0,0) 10%,rgba(0,0,0,.01) 50%,rgba(0,0,0,.2));bottom:0;content:"";left:100%;opacity:0;position:absolute;top:0;width:16px;z-index:-1}.ios .router-transition-forward .page-current{animation:ios-page-current-to-previous var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .page-current:after{animation:ios-page-element-fade-in var(--f7-page-transition-duration) forwards;background:rgba(0,0,0,.1);bottom:0;content:"";left:0;opacity:0;position:absolute;top:0;width:100%;z-index:10000}.ios .router-transition-backward .page-previous{animation:ios-page-previous-to-current var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .page-previous:after{animation:ios-page-element-fade-out var(--f7-page-transition-duration) forwards;background:rgba(0,0,0,.1);bottom:0;content:"";left:0;opacity:0;position:absolute;top:0;width:100%;z-index:10000}.ios .router-transition-backward .page-current{animation:ios-page-current-to-next var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .page-current:before{animation:ios-page-element-fade-out var(--f7-page-transition-duration) forwards;background:linear-gradient(270deg,rgba(0,0,0,0) 0,rgba(0,0,0,0) 10%,rgba(0,0,0,.01) 50%,rgba(0,0,0,.2));bottom:0;content:"";left:100%;opacity:0;position:absolute;top:0;width:16px;z-index:-1}@keyframes ios-page-next-to-current{0%{transform:translate3d(-100%,0,0)}to{transform:translateZ(0)}}@keyframes ios-page-previous-to-current{0%{transform:translate3d(20%,0,0)}to{transform:translateZ(0)}}@keyframes ios-page-current-to-previous{0%{transform:translateZ(0)}to{transform:translate3d(20%,0,0)}}@keyframes ios-page-current-to-next{0%{transform:translateZ(0)}to{transform:translate3d(-100%,0,0)}}@keyframes ios-page-element-fade-in{0%{opacity:0}to{opacity:1}}@keyframes ios-page-element-fade-out{0%{opacity:1}to{opacity:0}}.md .page-previous{transform:translate3d(0,-20px,0)}.md .page-next{opacity:0;pointer-events:none;transform:translate3d(0,128px,0)}.md .page-next.page-next-on-right{opacity:1;transform:translate3d(-100%,0,0)}.md .router-transition-forward .page-next{animation:md-page-next-to-current var(--f7-page-transition-duration) forwards cubic-bezier(0,.8,.3,1);opacity:1}.md .router-transition-forward .page-current{animation:md-page-current-to-previous var(--f7-page-transition-duration) forwards cubic-bezier(0,.8,.3,1)}.md .router-transition-backward .page-current{animation:md-page-current-to-next calc(var(--f7-page-transition-duration)/4) forwards cubic-bezier(.8,0,1,.3),md-page-current-to-next-opacity 0ms calc(var(--f7-page-transition-duration)/4) forwards}.md .router-transition-backward .page-previous{animation:md-page-previous-to-current var(--f7-page-transition-duration) forwards}@keyframes md-page-next-to-current{0%{transform:translate3d(0,128px,0)}to{transform:translateZ(0)}}@keyframes md-page-current-to-next{0%{transform:translateZ(0)}to{transform:translate3d(0,128px,0)}}@keyframes md-page-current-to-next-opacity{0%{opacity:1}to{opacity:0}}@keyframes md-page-current-to-previous{0%{transform:translateZ(0)}to{transform:translate3d(0,-20px,0)}}@keyframes md-page-previous-to-current{0%{transform:translate3d(0,-20px,0)}to{transform:translateZ(0)}}.view:not(.view-master-detail) .navbar-master-stacked,.view:not(.view-master-detail) .page-master-stacked{display:none}.view-master-detail .navbar-master,.view-master-detail .page-master{--f7-safe-area-left:0px;--f7-safe-area-outer-left:0px;border-left:var(--f7-page-master-border-width) solid var(--f7-page-master-border-color);left:auto;right:0;width:var(--f7-page-master-width)}.view-master-detail .navbar-master-detail,.view-master-detail .page-master-detail{--f7-safe-area-right:0px;--f7-safe-area-outer-right:0px;right:var(--f7-page-master-width);width:calc(100% - var(--f7-page-master-width))}.view-master-detail .page-master-detail>.navbar-master-detail{left:0;right:0;width:100%}.view-master-detail .page-master{pointer-events:auto;transform:none;z-index:2}.view-master-detail .page-master:after,.view-master-detail .page-master:before{display:none}.view-master-detail.router-transition .page-master{animation:none}.ios .router-transition-custom .page-next,.ios .router-transition-custom .page-previous,.md .router-transition-custom .page-next,.md .router-transition-custom .page-previous{opacity:1;transform:none}.ios .router-transition-custom.view-master-detail .page-master,.md .router-transition-custom.view-master-detail .page-master{animation:none}.page-title{box-sizing:border-box;color:var(--f7-page-title-text-color);font-size:var(--f7-page-title-font-size);font-weight:var(--f7-page-title-font-weight);letter-spacing:var(--f7-page-title-letter-spacing);line-height:var(--f7-page-title-line-height);overflow:hidden;padding:var(--f7-page-title-padding-vertical) calc(var(--f7-page-title-padding-right) + var(--f7-safe-area-right)) var(--f7-page-title-padding-vertical) calc(var(--f7-page-title-padding-left) + var(--f7-safe-area-left));position:relative;text-overflow:ellipsis;white-space:nowrap;width:100%;z-index:10}.router-transition-f7-circle-backward:after,.router-transition-f7-circle-forward:after{background:var(--f7-page-bg-color);content:"";height:100vmax;left:50%;margin-left:-50vmax;margin-top:-50vmax;position:absolute;top:50%;width:100vmax;z-index:100}.router-transition-f7-circle-backward .page,.router-transition-f7-circle-forward .page{pointer-events:none}.router-transition-f7-circle-forward:after{animation:f7-circle-circle-in .4s forwards;border-radius:50%;transform:scale(0)}.ios .router-transition-f7-circle-forward .page-next,.md .router-transition-f7-circle-forward .page-next{animation:f7-circle-next-to-current .3s forwards;animation-delay:.3s;opacity:0;transform:scale(.9);z-index:150}.router-transition-f7-circle-backward:after{animation:f7-circle-circle-out .3s forwards;animation-delay:.35s}.ios .router-transition-f7-circle-backward .page-current,.md .router-transition-f7-circle-backward .page-current{animation:f7-circle-current-to-next .7s forwards;z-index:150}@keyframes f7-circle-circle-in{0%{border-radius:50%;transform:scale(0)}50%{border-radius:50%}to{border-radius:0;transform:scale(1)}}@keyframes f7-circle-circle-out{0%{border-radius:0;transform:scale(1)}50%{border-radius:50%}to{border-radius:50%;transform:scale(0)}}@keyframes f7-circle-next-to-current{0%{opacity:0;transform:scale(.9)}40%{opacity:1;transform:scale(1.035)}to{opacity:1;transform:scale(1)}}@keyframes f7-circle-current-to-next{0%{opacity:1;transform:scale(1)}34%{opacity:1;transform:scale(1.035)}57%{opacity:0;transform:scale(.9)}to{opacity:0;transform:scale(.9)}}.router-transition-f7-cover-v-backward,.router-transition-f7-cover-v-forward{background:#000;perspective:1200px}.router-transition-f7-cover-v-backward .page,.router-transition-f7-cover-v-forward .page{pointer-events:none}.router-transition-f7-cover-v-forward .page-next{animation:f7-cover-v-next-to-current var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-v-forward .page-current{animation:f7-cover-v-current-to-prev var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-v-backward .page-current{animation:f7-cover-v-current-to-next var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-v-backward .page-previous{animation:f7-cover-v-prev-to-current var(--f7-page-cover-transition-duration) forwards}@keyframes f7-cover-v-next-to-current{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes f7-cover-v-current-to-next{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes f7-cover-v-current-to-prev{0%{opacity:1;transform:translateZ(0)}to{opacity:.5;transform:translateZ(-300px)}}@keyframes f7-cover-v-prev-to-current{0%{opacity:.5;transform:translateZ(-300px)}to{opacity:1;transform:translateZ(0)}}.router-transition-f7-cover-backward,.router-transition-f7-cover-forward{background:#000;perspective:1200px}.router-transition-f7-cover-backward .page,.router-transition-f7-cover-forward .page{pointer-events:none}.router-transition-f7-cover-forward .page-next{animation:f7-cover-next-to-current var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-forward .page-current{animation:f7-cover-current-to-prev var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-backward .page-current{animation:f7-cover-current-to-next var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-backward .page-previous{animation:f7-cover-prev-to-current var(--f7-page-cover-transition-duration) forwards}@keyframes f7-cover-next-to-current{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes f7-cover-current-to-next{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes f7-cover-current-to-prev{0%{opacity:1;transform:translateZ(0)}to{opacity:.5;transform:translateZ(-300px)}}@keyframes f7-cover-prev-to-current{0%{opacity:.5;transform:translateZ(-300px)}to{opacity:1;transform:translateZ(0)}}.router-transition-f7-dive-backward,.router-transition-f7-dive-forward{background:var(--f7-page-bg-color);perspective:1200px}.router-transition-f7-dive-backward .page,.router-transition-f7-dive-forward .page{pointer-events:none}.router-transition-f7-dive-forward .page-next{animation:f7-dive-next-to-current var(--f7-page-dive-transition-duration) forwards}.router-transition-f7-dive-forward .page-current{animation:f7-dive-current-to-prev var(--f7-page-dive-transition-duration) forwards}.router-transition-f7-dive-backward .page-current{animation:f7-dive-current-to-next var(--f7-page-dive-transition-duration) forwards}.router-transition-f7-dive-backward .page-previous{animation:f7-dive-prev-to-current var(--f7-page-dive-transition-duration) forwards}@keyframes f7-dive-next-to-current{0%{opacity:0;transform:translateZ(-150px)}50%{opacity:0}to{opacity:1;transform:translateZ(0)}}@keyframes f7-dive-current-to-next{0%{opacity:1;transform:translateZ(0)}50%{opacity:0}to{opacity:0;transform:translateZ(-150px)}}@keyframes f7-dive-current-to-prev{0%{opacity:1;transform:translateZ(0)}50%{opacity:0}to{opacity:0;transform:translateZ(150px)}}@keyframes f7-dive-prev-to-current{0%{opacity:0;transform:translateZ(150px)}50%{opacity:0}to{opacity:1;transform:translateZ(0)}}.router-transition-f7-fade-backward,.router-transition-f7-fade-forward{background:var(--f7-page-bg-color)}.router-transition-f7-fade-backward .page,.router-transition-f7-fade-forward .page{pointer-events:none}.ios .router-transition-f7-fade-forward .page-next,.md .router-transition-f7-fade-forward .page-next{animation:f7-fade-in var(--f7-page-fade-transition-duration) forwards;opacity:0}.ios .router-transition-f7-fade-backward .page-current,.ios .router-transition-f7-fade-forward .page-current,.md .router-transition-f7-fade-backward .page-current,.md .router-transition-f7-fade-forward .page-current{animation:f7-fade-out var(--f7-page-fade-transition-duration) forwards}.ios .router-transition-f7-fade-backward .page-previous,.md .router-transition-f7-fade-backward .page-previous{animation:f7-fade-in var(--f7-page-fade-transition-duration) forwards}@keyframes f7-fade-in{0%{opacity:0}50%{opacity:0}to{opacity:1}}@keyframes f7-fade-out{0%{opacity:1}50%{opacity:0}to{opacity:0}}.router-transition-f7-flip-backward,.router-transition-f7-flip-forward{background:#000;perspective:1200px}.router-transition-f7-flip-backward .page,.router-transition-f7-flip-forward .page{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;pointer-events:none}.router-transition-f7-flip-forward .page-next{animation:f7-flip-next-to-current var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}.router-transition-f7-flip-forward .page-current{animation:f7-flip-current-to-prev var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}.router-transition-f7-flip-backward .page-current{animation:f7-flip-current-to-next var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}.router-transition-f7-flip-backward .page-previous{animation:f7-flip-prev-to-current var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}@keyframes f7-flip-next-to-current{0%{border-radius:32px;transform:translateZ(-100vmax) rotateY(-180deg)}to{border-radius:0;transform:translateZ(0) rotateY(0deg)}}@keyframes f7-flip-current-to-next{0%{border-radius:0;transform:translateZ(0) rotateY(0deg)}to{border-radius:32px;transform:translateZ(-100vmax) rotateY(-180deg)}}@keyframes f7-flip-current-to-prev{0%{border-radius:0;transform:translateZ(0) rotateY(0deg)}to{border-radius:32px;transform:translateZ(-100vmax) rotateY(180deg)}}@keyframes f7-flip-prev-to-current{0%{border-radius:32px;transform:translateZ(-100vmax) rotateY(180deg)}to{border-radius:0;transform:translateZ(0) rotateY(0deg)}}.router-transition-f7-parallax-forward .page{pointer-events:none}.router-transition-f7-parallax-forward .page-next{animation:f7-parallax-next-to-current var(--f7-page-parallax-transition-duration) forwards}.router-transition-f7-parallax-forward .page-current{animation:f7-parallax-current-to-prev var(--f7-page-parallax-transition-duration) forwards}.router-transition-f7-parallax-backward .page{pointer-events:none}.router-transition-f7-parallax-backward .page-current{animation:f7-parallax-current-to-next var(--f7-page-parallax-transition-duration) forwards}.router-transition-f7-parallax-backward .page-previous{animation:f7-parallax-prev-to-current var(--f7-page-parallax-transition-duration) forwards}@keyframes f7-parallax-next-to-current{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes f7-parallax-current-to-next{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes f7-parallax-current-to-prev{0%{transform:translateX(0)}to{transform:translateX(20%)}}@keyframes f7-parallax-prev-to-current{0%{transform:translateX(20%)}to{transform:translateX(0)}}.router-transition-f7-push-forward .page{pointer-events:none}.router-transition-f7-push-forward .page-next{animation:f7-push-next-to-current var(--f7-page-push-transition-duration) forwards}.router-transition-f7-push-forward .page-current{animation:f7-push-current-to-prev var(--f7-page-push-transition-duration) forwards}.router-transition-f7-push-backward .page{pointer-events:none}.router-transition-f7-push-backward .page-current{animation:f7-push-current-to-next var(--f7-page-push-transition-duration) forwards}.router-transition-f7-push-backward .page-previous{animation:f7-push-prev-to-current var(--f7-page-push-transition-duration) forwards}@keyframes f7-push-next-to-current{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes f7-push-current-to-next{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes f7-push-current-to-prev{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes f7-push-prev-to-current{0%{transform:translateX(100%)}to{transform:translateX(0)}}:root{--f7-link-highlight-black:rgba(0,0,0,0.1);--f7-link-highlight-white:rgba(255,255,255,0.15);--f7-link-highlight-color:rgba(var(--f7-theme-color-rgb),0.15)}.ios{--f7-link-pressed-opacity:0.3}.link,.tab-link{--f7-touch-ripple-color:var(--f7-link-touch-ripple-color,rgba(var(--f7-theme-color-rgb),0.25));align-content:center;align-items:center;box-sizing:border-box;display:inline-flex;justify-content:center;position:relative;z-index:1}.link i+i,.link i+span,.link span+i,.link span+span{margin-right:4px}.link[class*=color-]{color:var(--f7-theme-color)}.ios .link{transition:opacity .3s}.ios .link.active-state{opacity:var(--f7-link-pressed-opacity);transition-duration:0ms}:root{--f7-navbar-hide-show-transition-duration:400ms;--f7-navbar-title-line-height:1.2;--f7-navbar-subtitle-text-align:inherit;--f7-navbar-large-title-line-height:1.2;--f7-navbar-large-title-text-color:inherit;--f7-navbar-large-title-padding-left:16px;--f7-navbar-large-title-padding-right:16px}.ios{--f7-navbar-height:44px;--f7-navbar-font-size:17px;--f7-navbar-title-font-size:inherit;--f7-navbar-inner-padding-left:8px;--f7-navbar-inner-padding-right:8px;--f7-navbar-title-font-weight:600;--f7-navbar-title-margin-left:0;--f7-navbar-title-margin-right:0;--f7-navbar-title-text-align:center;--f7-navbar-subtitle-font-size:10px;--f7-navbar-subtitle-line-height:1;--f7-navbar-large-title-height:52px;--f7-navbar-large-title-font-size:34px;--f7-navbar-large-title-font-weight:700;--f7-navbar-large-title-letter-spacing:-0.03em;--f7-navbar-large-title-padding-vertical:6px;--f7-navbar-subtitle-text-color:rgba(0,0,0,0.55)}.ios .dark,.ios.dark{--f7-navbar-subtitle-text-color:rgba(255,255,255,0.55)}.md{--f7-navbar-height:64px;--f7-navbar-font-size:16px;--f7-navbar-title-font-size:22px;--f7-navbar-inner-padding-left:0px;--f7-navbar-inner-padding-right:0px;--f7-navbar-title-font-weight:400;--f7-navbar-title-margin-left:0px;--f7-navbar-title-margin-right:16px;--f7-navbar-title-text-align:left;--f7-navbar-subtitle-font-size:14px;--f7-navbar-subtitle-line-height:1.2;--f7-navbar-large-title-font-size:28px;--f7-navbar-large-title-height:88px;--f7-navbar-large-title-font-weight:400;--f7-navbar-large-title-letter-spacing:0;--f7-navbar-large-title-padding-vertical:8px;--f7-navbar-link-height:48px;--f7-navbar-link-line-height:48px}.md,.md .dark,.md [class*=color-]{--f7-navbar-link-color:var(--f7-md-on-surface);--f7-navbar-text-color:var(--f7-md-on-surface);--f7-navbar-subtitle-text-color:var(--f7-md-on-surface-variant)}.navbar,.navbars{left:0;top:0;width:100%;z-index:500}.navbars{position:absolute}.navbars .navbar{z-index:auto}.navbars .navbar-transitioning{z-index:500}.navbar{--f7-navbar-large-collapse-progress:0;-webkit-backface-visibility:hidden;backface-visibility:hidden;box-sizing:border-box;color:var(--f7-navbar-text-color,var(--f7-bars-text-color));font-size:var(--f7-navbar-font-size);height:calc(var(--f7-navbar-height) + var(--f7-safe-area-top));margin:0;position:relative}.navbar b{font-weight:500}.navbar a{color:var(--f7-navbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.navbar a.link{display:flex;height:var(--f7-navbar-link-height,var(--f7-navbar-height));justify-content:flex-start;line-height:var(--f7-navbar-link-line-height,var(--f7-navbar-height))}.navbar .left,.navbar .right,.navbar .title{position:relative;z-index:10}.navbar .title{display:inline-block;flex-shrink:10;font-size:var(--f7-navbar-title-font-size);font-weight:var(--f7-navbar-title-font-weight);line-height:var(--f7-navbar-title-line-height);margin-left:var(--f7-navbar-title-margin-left);margin-right:var(--f7-navbar-title-margin-left);overflow:hidden;position:relative;text-align:var(--f7-navbar-title-text-align);text-overflow:ellipsis;white-space:nowrap}.navbar .subtitle{color:var(--f7-navbar-subtitle-text-color);display:block;font-size:var(--f7-navbar-subtitle-font-size);font-weight:400;line-height:var(--f7-navbar-subtitle-line-height);text-align:var(--f7-navbar-subtitle-text-align)}.navbar .left,.navbar .right{align-items:center;display:flex;flex-shrink:0;justify-content:flex-start}.navbar .right:first-child{height:100%;position:absolute}.navbar .no-outline .navbar-bg:after,.navbar .no-outline .title-large:after,.navbar.no-outline .navbar-bg:after,.navbar.no-outline .title-large:after{display:none!important}.navbar-hidden .navbar .navbar-bg:before,.navbar.navbar-hidden .navbar-bg:before{opacity:0!important}.navbar-bg{background:var(--f7-navbar-bg-color);background-color:var(--f7-navbar-bg-color,var(--f7-bars-bg-color));height:100%;left:0;pointer-events:none;position:absolute;top:0;transition-property:transform;width:100%;z-index:0}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .navbar-bg{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-navbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.navbar-bg:after,.navbar-bg:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.navbar-bg:after{background-color:var(--f7-navbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15;z-index:1}.navbar-transitioning,.navbar-transitioning .left,.navbar-transitioning .navbar-bg,.navbar-transitioning .navbar-bg:before,.navbar-transitioning .right,.navbar-transitioning .subnavbar,.navbar-transitioning .title,.navbar-transitioning .title-large-text{transition-duration:var(--f7-navbar-hide-show-transition-duration)}.navbar-page-transitioning,.navbar-page-transitioning .navbar-bg,.navbar-page-transitioning .title-large-text{transition-duration:var(--f7-page-swipeback-transition-duration)!important}.navbar-hidden{transform:translate3d(0,calc(var(--f7-navbar-height)*-1),0)}.navbar-hidden .navbar-inner{pointer-events:none}.navbar-hidden .navbar-inner>.left,.navbar-hidden .navbar-inner>.right,.navbar-hidden .navbar-inner>.title{opacity:0!important}.navbar-hidden .subnavbar{pointer-events:auto}.navbar-hidden-statusbar{transform:translate3d(0,calc(var(--f7-navbar-height)*-1 - var(--f7-safe-area-top)),0)}.navbar-large-hidden .navbar-large{--f7-navbar-large-collapse-progress:1}.navbar-inner{align-items:center;bottom:0;box-sizing:border-box;display:flex;height:100%;left:0;padding:var(--f7-safe-area-top) calc(var(--f7-navbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-navbar-inner-padding-left) + var(--f7-safe-area-left));transform:translateZ(0);width:100%;z-index:10}.navbar-inner,.navbars>.navbar,.page>.navbar,.view>.navbar,.views>.navbar{position:absolute}.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(.with-searchbar-expandable-enabled) .navbar-bg,.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(.with-searchbar-expandable-enabled) .title{opacity:0}.navbar-large .navbar-bg{height:calc(100% + var(--f7-navbar-large-title-height));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.navbar-large-transparent .navbar-bg,.navbar-large.navbar-transparent .navbar-bg{opacity:var(--f7-navbar-large-collapse-progress)}.ios .router-navbar-transition-from-large .navbar-bg,.ios .router-navbar-transition-to-large .navbar-bg,.navbar-bg.ios-swipeback-navbar-bg-large,.navbar-large-transparent .navbar-bg.ios-swipeback-navbar-bg-large,.navbar-large.navbar-transparent .navbar-bg.ios-swipeback-navbar-bg-large{height:calc(100% + var(--f7-navbar-large-title-height));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.ios .navbar:not(.navbar-large) .navbar-bg{--f7-navbar-large-collapse-progress:1}.navbar-large .title{opacity:var(--f7-navbar-large-collapse-progress)}.navbar-large-collapsed{--f7-navbar-large-collapse-progress:1}.navbar-large-collapsed .title-large{pointer-events:none}.navbar .title-large{display:flex;height:var(--f7-navbar-large-title-height);left:0;position:absolute;right:0;top:100%;z-index:5}.navbar .title-large,.navbar .title-large-text{box-sizing:border-box;overflow:hidden;white-space:nowrap}.navbar .title-large-text{color:var(--f7-navbar-large-title-text-color);font-size:var(--f7-navbar-large-title-font-size);font-weight:var(--f7-navbar-large-title-font-weight);letter-spacing:var(--f7-navbar-large-title-letter-spacing);line-height:var(--f7-navbar-large-title-line-height);padding:var(--f7-navbar-large-title-padding-vertical) calc(var(--f7-navbar-large-title-padding-right) + var(--f7-safe-area-right)) var(--f7-navbar-large-title-padding-vertical) calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left));text-overflow:ellipsis;transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0);transform-origin:calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center;width:100%}.navbar-no-title-large-transition .title-large-text{transition-duration:0ms}.navbars~*,.navbar~*{--f7-page-navbar-offset:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbars~* .page-with-navbar-large,.navbars~.page-with-navbar-large,.navbar~* .page-with-navbar-large,.navbar~.page-with-navbar-large,.page-with-navbar-large .navbar~*{--f7-page-navbar-offset:calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top))}.page.no-navbar,.page.no-navbar .navbar~*{--f7-page-navbar-offset:var(--f7-safe-area-top)}.ios{--f7-navbarLeftTextOffset:calc(16px + var(--f7-navbar-inner-padding-left));--f7-navbarTitleLargeOffset:var(--f7-navbar-large-title-padding-left);--f7-navbar-large-bg-center-top:translateX(0) translateY(calc(var(--f7-navbar-large-title-height)*-1));--f7-navbar-large-bg-center-bottom:translateX(0) translateY(0);--f7-navbar-large-bg-left-top:translateX(100%) translateY(calc(var(--f7-navbar-large-title-height)*-1));--f7-navbar-large-bg-left-bottom:translateX(100%) translateY(0);--f7-navbar-large-bg-right-top:translateX(-100%) translateY(calc(var(--f7-navbar-large-title-height)*-1));--f7-navbar-large-bg-right-bottom:translateX(-100%) translateY(0)}.ios .navbar .title-large{align-items:flex-end}.ios .navbar a.icon-only{justify-content:center;margin:0;width:44px}.ios .navbar .left a+a,.ios .navbar .right a+a{margin-right:16px}.ios .navbar b{font-weight:600}.ios .navbar .left{margin-left:10px}.ios .navbar .right{margin-right:10px}.ios .navbar .right:first-child{left:calc(8px + var(--f7-safe-area-left))}.ios .navbar-inner{justify-content:space-between}.ios .navbar-inner-left-title{justify-content:flex-start}.ios .navbar-inner-left-title .right{margin-right:auto}.ios .navbar-inner-left-title .title{margin-left:10px;text-align:left}.ios .navbar-next .fading,.ios .navbar-next .left,.ios .navbar-next .right,.ios .navbar-next .subnavbar,.ios .navbar-next .title,.ios .view-master-detail .navbar-previous:not(.navbar-master) .fading,.ios .view-master-detail .navbar-previous:not(.navbar-master) .left,.ios .view-master-detail .navbar-previous:not(.navbar-master) .right,.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar,.ios .view-master-detail .navbar-previous:not(.navbar-master) .title,.ios .view:not(.view-master-detail) .navbar-previous .fading,.ios .view:not(.view-master-detail) .navbar-previous .left,.ios .view:not(.view-master-detail) .navbar-previous .right,.ios .view:not(.view-master-detail) .navbar-previous .subnavbar,.ios .view:not(.view-master-detail) .navbar-previous .title{opacity:0}.ios .view-master-detail .navbar-previous:not(.navbar-master),.ios .view:not(.view-master-detail) .navbar-previous{pointer-events:none}.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large,.ios .view:not(.view-master-detail) .navbar-previous .title-large{opacity:0;transition-duration:0ms}.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large .title-large-text,.ios .view:not(.view-master-detail) .navbar-previous .title-large .title-large-text{transform:scale(.5);transition-duration:0ms}.ios .view-master-detail .navbar-previous:not(.navbar-master) .sliding .subnavbar,.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar.sliding,.ios .view:not(.view-master-detail) .navbar-previous .sliding .subnavbar,.ios .view:not(.view-master-detail) .navbar-previous .subnavbar.sliding{opacity:1;transform:translate3d(100%,0,0)}.ios .view-master-detail .navbar-previous:not(.navbar-master) .navbar-bg,.ios .view:not(.view-master-detail) .navbar-previous .navbar-bg{transform:translateX(-100%)}.ios .navbar-next{pointer-events:none}.ios .navbar-next .navbar-bg{transform:translateX(-100%)}.ios .navbar-next .title-large .title-large-text{transform:translateX(-100%) translateY(calc(var(--f7-navbar-large-title-height)*-1));transition-duration:0ms}.ios .navbar-next .sliding .subnavbar,.ios .navbar-next .subnavbar.sliding{opacity:1;transform:translate3d(-100%,0,0)}.ios .router-transition .navbar,.ios .router-transition .navbar-bg{transition-duration:var(--f7-page-transition-duration)}.ios .router-transition .navbar-bg{animation-duration:var(--f7-page-transition-duration);animation-fill-mode:forwards}.ios .router-transition .title-large,.ios .router-transition .title-large-text{transition-duration:0ms}.ios .router-transition .navbar-current .left,.ios .router-transition .navbar-current .right,.ios .router-transition .navbar-current .subnavbar,.ios .router-transition .navbar-current .title{animation:ios-navbar-element-fade-out var(--f7-page-transition-duration) forwards}.ios .router-transition .navbar-current .sliding .left,.ios .router-transition .navbar-current .sliding .left .icon+span,.ios .router-transition .navbar-current .sliding .right,.ios .router-transition .navbar-current .sliding .title,.ios .router-transition .navbar-current .sliding.left,.ios .router-transition .navbar-current .sliding.left .icon+span,.ios .router-transition .navbar-current .sliding.right,.ios .router-transition .navbar-current .sliding.title{animation:none;opacity:0!important;transition-duration:var(--f7-page-transition-duration)}.ios .router-transition .navbar-current .sliding .subnavbar,.ios .router-transition .navbar-current .sliding.subnavbar{animation:none;opacity:1;transition-duration:var(--f7-page-transition-duration)}.ios .router-transition-backward .navbar-previous .left,.ios .router-transition-backward .navbar-previous .right,.ios .router-transition-backward .navbar-previous .subnavbar,.ios .router-transition-backward .navbar-previous .title,.ios .router-transition-forward .navbar-next .left,.ios .router-transition-forward .navbar-next .right,.ios .router-transition-forward .navbar-next .subnavbar,.ios .router-transition-forward .navbar-next .title{animation:ios-navbar-element-fade-in var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .navbar-previous .sliding .left,.ios .router-transition-backward .navbar-previous .sliding .left .icon+span,.ios .router-transition-backward .navbar-previous .sliding .right,.ios .router-transition-backward .navbar-previous .sliding .subnavbar,.ios .router-transition-backward .navbar-previous .sliding .title,.ios .router-transition-backward .navbar-previous .sliding.left,.ios .router-transition-backward .navbar-previous .sliding.left .icon+span,.ios .router-transition-backward .navbar-previous .sliding.right,.ios .router-transition-backward .navbar-previous .sliding.title,.ios .router-transition-forward .navbar-next .sliding .left,.ios .router-transition-forward .navbar-next .sliding .left .icon+span,.ios .router-transition-forward .navbar-next .sliding .right,.ios .router-transition-forward .navbar-next .sliding .subnavbar,.ios .router-transition-forward .navbar-next .sliding .title,.ios .router-transition-forward .navbar-next .sliding.left,.ios .router-transition-forward .navbar-next .sliding.left .icon+span,.ios .router-transition-forward .navbar-next .sliding.right,.ios .router-transition-forward .navbar-next .sliding.title{animation:none;opacity:1!important;transform:translateZ(0)!important;transition-duration:var(--f7-page-transition-duration)}.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title,.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title{animation:none}.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title,.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title,.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title,.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title{opacity:0!important}.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .left,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .right,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .subnavbar,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .title,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .left,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .right,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .subnavbar,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .title{animation:none}.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large{overflow:visible}.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-up var(--f7-page-transition-duration) forwards,ios-navbar-large-title-text-fade-out var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large .left .back span{animation:ios-navbar-back-text-next-to-current var(--f7-page-transition-duration) forwards;transform-origin:right center;transition:none}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large{overflow:visible}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-forward .navbar-next.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-left var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title,.ios .router-transition-forward .navbar-next.navbar-large:not(.navbar-large-collapsed) .title{animation:none;opacity:0!important;transition-duration:0}.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large .left .back span{animation:ios-navbar-back-text-current-to-previous var(--f7-page-transition-duration) forwards;transform-origin:right center;transition:none}.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large{overflow:visible}.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-right var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large{opacity:0}.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large{opacity:1;overflow:visible}.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-down var(--f7-page-transition-duration) forwards,ios-navbar-large-title-text-fade-in var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title,.ios .router-transition-backward .navbar-previous.navbar-large:not(.navbar-large-collapsed) .title{animation:none;opacity:0!important;transition-duration:0}.ios .router-transition-forward .navbar-current .navbar-bg,.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-lb}.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-lt}.ios .router-transition-forward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-lb}.ios .router-transition-forward .navbar-current.navbar-large-collapsed:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-lt}.ios .router-transition-forward .navbar-next .navbar-bg,.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-rb-to-cb}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-rb-to-ct}.ios .router-transition-forward .navbar-next:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-rt-to-cb}.ios .router-transition-backward .navbar-current .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-rb}.ios .router-transition-backward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-rb}.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-rt}.ios .router-transition-backward .navbar-current.navbar-large-collapsed .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-rt}.ios .router-transition-backward .navbar-current.navbar-large-collapsed.router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-rb}.ios .router-transition-backward .navbar-previous .navbar-bg{animation-name:ios-navbar-bg-from-lb-to-cb}.ios .router-transition-backward .navbar-previous:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-lt-to-cb}.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-lb-to-ct}.ios .router-transition-backward .navbar-previous.navbar-large-collapsed .navbar-bg{animation-name:ios-navbar-bg-from-lt-to-ct}.view-master-detail .navbars{z-index:auto}.view-master-detail .page-master{z-index:525}.view-master-detail .navbar-master .navbar-bg,.view-master-detail .navbar-master .navbar-inner{z-index:550}.view-master-detail .navbar-master-detail .navbar-bg,.view-master-detail .navbar-master-detail .navbar-inner{z-index:500}.view-master-detail .navbar-master.navbar-previous{pointer-events:auto}.view-master-detail .navbar-master.navbar-previous .left,.view-master-detail .navbar-master.navbar-previous .right,.view-master-detail .navbar-master.navbar-previous .subnavbar,.view-master-detail .navbar-master.navbar-previous:not(.navbar-large) .title{opacity:1}.view-master-detail.router-transition .navbar-master .fading,.view-master-detail.router-transition .navbar-master .left,.view-master-detail.router-transition .navbar-master .left .icon+span,.view-master-detail.router-transition .navbar-master .right,.view-master-detail.router-transition .navbar-master .subnavbar,.view-master-detail.router-transition .navbar-master:not(.navbar-large) .title{animation:none!important;opacity:1!important;transform:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master .navbar-bg{animation:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master.navbar-large .title{animation:none!important;opacity:calc(-1 + var(--f7-navbar-large-collapse-progress)*2)!important;transform:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master.navbar-large .title-large,.view-master-detail.router-transition .navbar-master.navbar-large .title-large-text{animation:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master.navbar-large-transparent .navbar-bg,.view-master-detail.router-transition .navbar-master.navbar-large.navbar-transparent .navbar-bg{height:100%!important;opacity:var(--f7-navbar-large-collapse-progress)!important}@keyframes ios-navbar-element-fade-in{0%{opacity:0}25%{opacity:0}to{opacity:1}}@keyframes ios-navbar-element-fade-out{0%{opacity:1}75%{opacity:0}to{opacity:0}}@keyframes ios-navbar-large-title-text-slide-up{0%{transform:translateX(0) translateY(0) scale(1)}to{transform:translateX(calc((var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset))*-1)) translateY(calc(var(--f7-navbar-large-title-height)*-1 + var(--f7-navbar-large-title-padding-vertical))) scale(.5)}}@keyframes ios-navbar-large-title-text-slide-down{0%{transform:translateX(calc((var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset))*-1)) translateY(calc(var(--f7-navbar-large-title-height)*-1 + var(--f7-navbar-large-title-padding-vertical)/2)) scale(.5)}to{transform:translateX(0) translateY(0) scale(1)}}@keyframes ios-navbar-large-title-text-slide-left{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes ios-navbar-large-title-text-slide-right{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes ios-navbar-large-title-text-fade-out{0%{opacity:1}80%{opacity:0}to{opacity:0}}@keyframes ios-navbar-large-title-text-fade-in{0%{opacity:0}20%{opacity:0}to{opacity:1}}@keyframes ios-navbar-back-text-current-to-previous{0%{opacity:1;transform:translateY(0) translateX(0) scale(1)}80%{opacity:0}to{opacity:0;transform:translateX(calc((var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset))*-1)) translateY(calc(var(--f7-navbar-large-title-height)*1 - var(--f7-navbar-large-title-padding-vertical)/2)) scale(2)}}@keyframes ios-navbar-back-text-next-to-current{0%{opacity:0;transform:translateX(calc((var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset))*-1)) translateY(calc(var(--f7-navbar-large-title-height)*1 + var(--f7-navbar-large-title-padding-vertical)/2)) scale(2)}20%{opacity:0}to{opacity:1;transform:translateX(0) translateY(0) scale(1)}}@keyframes ios-navbar-bg-from-cb-to-lb{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-left-bottom)}}@keyframes ios-navbar-bg-from-cb-to-lt{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-left-top)}}@keyframes ios-navbar-bg-from-ct-to-lb{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-left-bottom)}}@keyframes ios-navbar-bg-from-ct-to-lt{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-left-top)}}@keyframes ios-navbar-bg-from-rb-to-cb{0%{transform:var(--f7-navbar-large-bg-right-bottom)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-rb-to-ct{0%{transform:var(--f7-navbar-large-bg-right-bottom)}to{transform:var(--f7-navbar-large-bg-center-top)}}@keyframes ios-navbar-bg-from-rt-to-cb{0%{transform:var(--f7-navbar-large-bg-right-top)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-cb-to-rb{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-right-bottom)}}@keyframes ios-navbar-bg-from-ct-to-rb{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-right-bottom)}}@keyframes ios-navbar-bg-from-cb-to-rt{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-right-top)}}@keyframes ios-navbar-bg-from-ct-to-rt{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-right-top)}}@keyframes ios-navbar-bg-from-lb-to-cb{0%{transform:var(--f7-navbar-large-bg-left-bottom)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-lt-to-cb{0%{transform:var(--f7-navbar-large-bg-left-top)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-lb-to-ct{0%{transform:var(--f7-navbar-large-bg-left-bottom)}to{transform:var(--f7-navbar-large-bg-center-top)}}@keyframes ios-navbar-bg-from-lt-to-ct{0%{transform:var(--f7-navbar-large-bg-left-top)}to{transform:var(--f7-navbar-large-bg-center-top)}}.md .navbar .title-large{align-items:center}.md .navbar .left{margin-left:4px;margin-right:4px}.md .navbar a.link{min-width:48px;padding:0 12px}.md .navbar a.icon-only{flex-shrink:0;min-width:0;width:48px}.md .navbar .right{margin-left:4px;margin-right:auto}.md .navbar .right:first-child{left:var(--f7-safe-area-left)}.md .navbar-inner{justify-content:flex-start;overflow:hidden}.md .navbar-large:not(.navbar-large-collapsed) .navbar-inner,.md .page.page-with-subnavbar .navbar-inner{overflow:visible}.md .navbar-inner:not(.navbar-inner-centered-title) .title:first-child{margin-left:16px}.md .navbar-inner-centered-title{justify-content:space-between}.md .navbar-inner-centered-title .right{margin-right:0}.md .navbar-inner-centered-title .title{text-align:center}:root{--f7-tabbar-link-active-bg-color:transparent;--f7-tabbar-label-text-transform:none;--f7-toolbar-hide-show-transition-duration:400ms}.ios{--f7-toolbar-height:44px;--f7-toolbar-font-size:17px;--f7-toolbar-inner-padding-left:8px;--f7-toolbar-inner-padding-right:8px;--f7-toolbar-link-font-weight:400;--f7-tabbar-icons-height:50px;--f7-tabbar-icons-tablet-height:50px;--f7-tabbar-icon-size:28px;--f7-tabbar-link-text-transform:none;--f7-tabbar-link-font-weight:400;--f7-tabbar-link-letter-spacing:0;--f7-tabbar-label-font-size:12px;--f7-tabbar-label-tablet-font-size:14px;--f7-tabbar-label-font-weight:500;--f7-tabbar-label-letter-spacing:0.01;--f7-tabbar-link-inactive-color:rgba(0,0,0,0.4)}.ios .dark,.ios.dark{--f7-tabbar-link-inactive-color:rgba(255,255,255,0.54)}.md{--f7-toolbar-height:56px;--f7-toolbar-font-size:14px;--f7-toolbar-inner-padding-left:0px;--f7-toolbar-inner-padding-right:0px;--f7-tabbar-icons-height:80px;--f7-tabbar-icons-tablet-height:80px;--f7-tabbar-icon-size:24px;--f7-tabbar-link-text-transform:none;--f7-tabbar-link-font-weight:500;--f7-tabbar-link-letter-spacing:0;--f7-toolbar-link-font-weight:500;--f7-tabbar-label-font-size:12px;--f7-tabbar-label-tablet-font-size:12px;--f7-tabbar-label-font-weight:500;--f7-tabbar-label-letter-spacing:0}.md,.md .dark,.md [class*=color-]{--f7-tabbar-link-active-color:var(--f7-md-on-secondary-container);--f7-tabbar-link-active-border-color:var(--f7-md-primary);--f7-tabbar-link-inactive-color:var(--f7-md-on-surface-variant);--f7-tabbar-link-active-icon-bg-color:var(--f7-md-secondary-container)}.toolbar{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-toolbar-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-toolbar-text-color,var(--f7-bars-text-color));font-size:var(--f7-toolbar-font-size);height:var(--f7-toolbar-height);left:0;margin:0;position:relative;transform:translateZ(0);width:100%;z-index:600}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .toolbar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-toolbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.toolbar b{font-weight:600}.toolbar a{box-sizing:border-box;color:var(--f7-toolbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)));flex-shrink:1;position:relative;text-overflow:ellipsis;white-space:nowrap}.toolbar .link{display:flex;font-weight:var(--f7-toolbar-link-font-weight);height:var(--f7-toolbar-link-height,var(--f7-toolbar-height));line-height:var(--f7-toolbar-link-line-height,var(--f7-toolbar-height))}.toolbar i.icon{display:block}.toolbar:after,.toolbar:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.page>.toolbar,.view>.toolbar,.views>.toolbar{position:absolute}.ios .toolbar-top-ios,.md .toolbar-top-md,.toolbar-top{top:0}.ios .toolbar-top-ios .tab-link-highlight,.md .toolbar-top-md .tab-link-highlight,.toolbar-top .tab-link-highlight{bottom:0}.ios .toolbar-top-ios.no-outline:after,.ios .toolbar-top-ios.toolbar-hidden:before,.md .toolbar-top-md.no-outline:after,.md .toolbar-top-md.toolbar-hidden:before,.toolbar-top.no-outline:after,.toolbar-top.toolbar-hidden:before{display:none!important}.ios .toolbar-top-ios:after,.ios .toolbar-top-ios:before,.md .toolbar-top-md:after,.md .toolbar-top-md:before,.toolbar-top:after,.toolbar-top:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.ios .toolbar-top-ios:after,.md .toolbar-top-md:after,.toolbar-top:after{background-color:var(--f7-toolbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .toolbar-bottom-ios,.md .toolbar-bottom-md,.toolbar-bottom{bottom:0;height:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.ios .toolbar-bottom-ios .tab-link-highlight,.md .toolbar-bottom-md .tab-link-highlight,.toolbar-bottom .tab-link-highlight{top:0}.ios .toolbar-bottom-ios .toolbar-inner,.md .toolbar-bottom-md .toolbar-inner,.toolbar-bottom .toolbar-inner{bottom:var(--f7-safe-area-bottom);height:auto;top:0}.ios .toolbar-bottom-ios.no-outline:before,.ios .toolbar-bottom-ios.toolbar-hidden:after,.md .toolbar-bottom-md.no-outline:before,.md .toolbar-bottom-md.toolbar-hidden:after,.toolbar-bottom.no-outline:before,.toolbar-bottom.toolbar-hidden:after{display:none!important}.ios .toolbar-bottom-ios:before,.md .toolbar-bottom-md:before,.toolbar-bottom:before{background-color:var(--f7-toolbar-border-color,var(--f7-bars-border-color));bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.toolbar-inner{align-content:center;align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:space-between;left:0;overflow:hidden;padding:0 calc(var(--f7-toolbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-toolbar-inner-padding-left) + var(--f7-safe-area-left));position:absolute;top:0;width:100%}.views>.tabbar,.views>.tabbar-icons{z-index:5001}.tabbar a,.tabbar-icons a{color:var(--f7-tabbar-link-inactive-color)}.tabbar .link,.tabbar-icons .link{line-height:1.4}.tabbar .link,.tabbar .tab-link,.tabbar-icons .link,.tabbar-icons .tab-link{align-items:center;box-sizing:border-box;display:flex;flex-direction:column;font-weight:var(--f7-tabbar-link-font-weight);height:100%;justify-content:center;letter-spacing:var(--f7-tabbar-link-letter-spacing);overflow:hidden;text-transform:var(--f7-tabbar-link-text-transform);width:100%}.tabbar .tab-link-active,.tabbar-icons .tab-link-active{background-color:var(--f7-tabbar-link-active-bg-color,transparent);color:var(--f7-tabbar-link-active-color,var(--f7-theme-color))}.tabbar i.icon,.tabbar-icons i.icon{font-size:var(--f7-tabbar-icon-size);height:var(--f7-tabbar-icon-size);line-height:var(--f7-tabbar-icon-size)}.md .tabbar-icons.tabbar-icons .tab-link-highlight,.md .tabbar.tabbar-icons .tab-link-highlight{display:none}.md .tabbar-icons:not(.tabbar-icons) .tab-link-highlight,.md .tabbar:not(.tabbar-icons) .tab-link-highlight{background:var(--f7-tabbar-link-active-border-color,var(--f7-theme-color));height:2px;left:0;position:absolute;right:0;transition-duration:.3s}.tabbar-icons{--f7-toolbar-height:var(--f7-tabbar-icons-height)}.tabbar-icons .link,.tabbar-icons .tab-link{align-items:center;height:100%;justify-content:center}.tabbar-icons .tabbar-label{display:block;font-size:var(--f7-tabbar-label-font-size);font-weight:var(--f7-tabbar-label-font-weight);letter-spacing:var(--f7-tabbar-label-letter-spacing);line-height:1;margin:0;position:relative;text-overflow:ellipsis;text-transform:var(--f7-tabbar-label-text-transform);white-space:nowrap}@media (min-width:768px) and (min-height:600px){:root{--f7-tabbar-icons-height:var(--f7-tabbar-icons-tablet-height);--f7-tabbar-label-font-size:var(--f7-tabbar-label-tablet-font-size)}}.tabbar-scrollable .toolbar-inner{-webkit-overflow-scrolling:touch;justify-content:flex-start;overflow:auto;scrollbar-color:transparent;scrollbar-width:none}.tabbar-scrollable .toolbar-inner::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-track{background:transparent;box-shadow:none}.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.tabbar-scrollable .link,.tabbar-scrollable .tab-link{flex-shrink:0;width:auto}.navbar-transitioning+.toolbar,.navbar-transitioning~* .toolbar,.toolbar-transitioning{transition-duration:var(--f7-toolbar-hide-show-transition-duration)}.ios .toolbar-bottom-ios~*,.md .toolbar-bottom-md~*,.toolbar-bottom~*{--f7-page-toolbar-bottom-offset:var(--f7-toolbar-height)}.ios .toolbar-bottom-ios.tabbar-icons~*,.md .toolbar-bottom-md.tabbar-icons~*,.toolbar-bottom.tabbar-icons~*{--f7-page-toolbar-bottom-offset:var(--f7-tabbar-icons-height)}.ios .toolbar-bottom-ios.toolbar-hidden,.md .toolbar-bottom-md.toolbar-hidden,.toolbar-bottom.toolbar-hidden{transform:translate3d(0,100%,0)}.ios .toolbar-top-ios~*,.md .toolbar-top-md~*,.toolbar-top~*{--f7-page-toolbar-top-offset:var(--f7-toolbar-height)}.ios .toolbar-top-ios.tabbar-icons~*,.md .toolbar-top-md.tabbar-icons~*,.toolbar-top.tabbar-icons~*{--f7-page-toolbar-top-offset:var(--f7-tabbar-icons-height)}.ios .toolbar-top-ios.toolbar-hidden,.md .toolbar-top-md.toolbar-hidden,.toolbar-top.toolbar-hidden{transform:translate3d(0,-100%,0)}.ios .navbars~* .toolbar-top-ios,.ios .navbars~.page:not(.no-navbar) .toolbar-top-ios,.ios .navbars~.toolbar-top-ios,.ios .navbar~* .toolbar-top-ios,.ios .navbar~.page:not(.no-navbar) .toolbar-top-ios,.ios .navbar~.toolbar-top-ios,.md .navbar~* .toolbar-top-md,.md .navbar~.page:not(.no-navbar) .toolbar-top-md,.md .navbar~.toolbar-top-md,.navbars~* .toolbar-top,.navbars~.page:not(.no-navbar) .toolbar-top,.navbars~.toolbar-top,.navbar~* .toolbar-top,.navbar~.page:not(.no-navbar) .toolbar-top,.navbar~.toolbar-top{top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars~* .toolbar-top-ios.toolbar-hidden,.ios .navbars~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,.ios .navbars~.toolbar-top-ios.toolbar-hidden,.ios .navbar~* .toolbar-top-ios.toolbar-hidden,.ios .navbar~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,.ios .navbar~.toolbar-top-ios.toolbar-hidden,.md .navbar~* .toolbar-top-md.toolbar-hidden,.md .navbar~.page:not(.no-navbar) .toolbar-top-md.toolbar-hidden,.md .navbar~.toolbar-top-md.toolbar-hidden,.navbars~* .toolbar-top.toolbar-hidden,.navbars~.page:not(.no-navbar) .toolbar-top.toolbar-hidden,.navbars~.toolbar-top.toolbar-hidden,.navbar~* .toolbar-top.toolbar-hidden,.navbar~.page:not(.no-navbar) .toolbar-top.toolbar-hidden,.navbar~.toolbar-top.toolbar-hidden{transform:translate3d(0,calc((var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top))*-1),0)}.ios .navbars~* .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbars~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbars~.toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbar~* .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbar~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbar~.toolbar-top-ios.toolbar-hidden.tabbar-icons,.md .navbar~* .toolbar-top-md.toolbar-hidden.tabbar-icons,.md .navbar~.page:not(.no-navbar) .toolbar-top-md.toolbar-hidden.tabbar-icons,.md .navbar~.toolbar-top-md.toolbar-hidden.tabbar-icons,.navbars~* .toolbar-top.toolbar-hidden.tabbar-icons,.navbars~.page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,.navbars~.toolbar-top.toolbar-hidden.tabbar-icons,.navbar~* .toolbar-top.toolbar-hidden.tabbar-icons,.navbar~.page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,.navbar~.toolbar-top.toolbar-hidden.tabbar-icons{transform:translate3d(0,calc((var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top))*-1),0)}.ios .navbar-hidden+.toolbar-top-ios:not(.toolbar-hidden),.ios .navbar-hidden~* .toolbar-top-ios:not(.toolbar-hidden),.md .navbar-hidden+.toolbar-top-md:not(.toolbar-hidden),.md .navbar-hidden~* .toolbar-top-md:not(.toolbar-hidden),.navbar-hidden+.toolbar-top:not(.toolbar-hidden),.navbar-hidden~* .toolbar-top:not(.toolbar-hidden){transform:translate3d(0,calc(0px - var(--f7-navbar-height)),0)}.ios .navbar-large-hidden+.toolbar-top-ios:not(.toolbar-hidden),.ios .navbar-large-hidden~* .toolbar-top-ios:not(.toolbar-hidden),.md .navbar-large-hidden+.toolbar-top-md:not(.toolbar-hidden),.md .navbar-large-hidden~* .toolbar-top-md:not(.toolbar-hidden),.navbar-large-hidden+.toolbar-top:not(.toolbar-hidden),.navbar-large-hidden~* .toolbar-top:not(.toolbar-hidden){transform:translate3d(0,calc(0px - var(--f7-navbar-height) - var(--f7-navbar-large-title-height)),0)}.ios .toolbar a.icon-only{align-items:center;display:flex;justify-content:center;margin:0;min-height:var(--f7-toolbar-height);min-width:44px}.ios .tabbar-icons .link,.ios .tabbar-icons .tab-link{padding-bottom:4px;padding-top:4px}.ios .tabbar-icons .link i+span,.ios .tabbar-icons .tab-link i+span{margin:4px 0 0}@media (min-width:768px) and (min-height:600px){.ios .tabbar .link,.ios .tabbar .tab-link,.ios .tabbar-icons .link,.ios .tabbar-icons .tab-link{flex-direction:row;justify-content:center}.ios .tabbar .link i+span,.ios .tabbar .tab-link i+span,.ios .tabbar-icons .link i+span,.ios .tabbar-icons .tab-link i+span{margin-left:5px}}.ios .tabbar-scrollable .toolbar-inner{justify-content:flex-start}.ios .tabbar-scrollable .link,.ios .tabbar-scrollable .tab-link{padding:0 8px}.md .toolbar .link{justify-content:center;min-width:48px;padding:0 12px}.md .toolbar a.icon-only{flex-shrink:0;min-width:0}.md .tabbar .link,.md .tabbar .tab-link,.md .tabbar-icons .link,.md .tabbar-icons .tab-link{padding-left:0;padding-right:0}.md .tabbar a.icon-only,.md .tabbar-icons a.icon-only{flex-shrink:1}.md .tabbar .tab-link,.md .tabbar-icons .tab-link{overflow:hidden;position:relative;transition-duration:.3s}.md .tabbar i.icon,.md .tabbar-icons i.icon{position:relative}.md .tabbar i.icon:before,.md .tabbar-icons i.icon:before{background:var(--f7-tabbar-link-active-icon-bg-color);border-radius:32px;content:"";height:32px;left:50%;opacity:0;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) scaleX(.5);transition-duration:.2s;width:64px;z-index:-1}.md .tabbar i.icon+.tabbar-label,.md .tabbar-icons i.icon+.tabbar-label{margin-top:8px}.md .tabbar .tab-link-active i.icon:before,.md .tabbar-icons .tab-link-active i.icon:before{opacity:1;transform:translateX(-50%) translateY(-50%) scaleX(1)}.md .tabbar-icons .link,.md .tabbar-icons .tab-link{padding-bottom:8px;padding-top:8px}.md .tabbar-label{line-height:1.2;max-width:100%;overflow:hidden}.md .tabbar-scrollable .toolbar-inner{overflow:auto}.md .tabbar-scrollable .link,.md .tabbar-scrollable .tab-link{padding:0 12px}:root{--f7-subnavbar-title-line-height:1.2}.ios{--f7-subnavbar-height:44px;--f7-subnavbar-inner-padding-left:8px;--f7-subnavbar-inner-padding-right:8px;--f7-subnavbar-title-font-size:34px;--f7-subnavbar-title-font-weight:700;--f7-subnavbar-title-letter-spacing:-0.03em;--f7-subnavbar-title-margin-left:8px}.md{--f7-subnavbar-height:64px;--f7-subnavbar-inner-padding-left:16px;--f7-subnavbar-inner-padding-right:16px;--f7-subnavbar-title-font-size:22px;--f7-subnavbar-title-font-weight:400;--f7-subnavbar-title-letter-spacing:0;--f7-subnavbar-title-margin-left:0px}.subnavbar{align-items:center;background-color:var(--f7-subnavbar-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-subnavbar-text-color,var(--f7-bars-text-color));display:flex;justify-content:space-between;left:0;position:absolute;top:0;width:100%;z-index:600}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .subnavbar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-subnavbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.subnavbar .subnavbar-title{display:inline-block;font-size:var(--f7-subnavbar-title-font-size);font-weight:var(--f7-subnavbar-title-font-weight);letter-spacing:var(--f7-subnavbar-title-letter-spacing);line-height:var(--f7-subnavbar-title-line-height);margin-right:var(--f7-subnavbar-title-margin-left);overflow:hidden;position:relative;text-align:left;text-overflow:ellpsis;white-space:nowrap}.subnavbar .left,.subnavbar .right{align-items:center;display:flex;flex-shrink:0;justify-content:flex-start}.subnavbar .right:first-child{height:100%;position:absolute}.subnavbar a{color:var(--f7-subnavbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.subnavbar a.link{height:var(--f7-subnavbar-link-height,var(--f7-subnavbar-height));line-height:var(--f7-subnavbar-link-line-height,var(--f7-subnavbar-height))}.subnavbar a.icon-only{min-width:var(--f7-subnavbar-height)}.subnavbar.navbar-hidden:before,.subnavbar.no-outline:after{display:none!important}.subnavbar:after,.subnavbar:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.subnavbar:after{background-color:var(--f7-subnavbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.subnavbar-inner{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:space-between;overflow:hidden;padding:0 calc(var(--f7-subnavbar-inner-padding-left) + var(--f7-safe-area-right)) 0 calc(var(--f7-subnavbar-inner-padding-right) + var(--f7-safe-area-left));width:100%}.navbar .subnavbar{top:100%}.page>.subnavbar,.view>.subnavbar,.views>.subnavbar{position:absolute}.navbars~* .subnavbar,.navbars~.page-with-subnavbar:not(.no-navbar) .subnavbar,.navbars~.subnavbar,.navbar~* .subnavbar,.navbar~.page-with-subnavbar:not(.no-navbar) .subnavbar,.navbar~.subnavbar,.page-with-subnavbar .navbar~* .subnavbar,.page-with-subnavbar .navbar~.subnavbar{top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbar .title-large~.subnavbar,.navbars~.page-with-navbar-large:not(.no-navbar) .subnavbar,.navbar~.page-with-navbar-large:not(.no-navbar) .subnavbar,.page-with-subnavbar.page-with-navbar-large .navbar~* .subnavbar,.page-with-subnavbar.page-with-navbar-large .navbar~.subnavbar{top:calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.page-with-subnavbar,.subnavbar~*{--f7-page-subnavbar-offset:var(--f7-subnavbar-height)}.ios .subnavbar{height:calc(var(--f7-subnavbar-height) + 1px);margin-top:-1px;padding-top:1px}.ios .subnavbar .title{align-self:flex-start;flex-shrink:10}.ios .subnavbar .left a+a,.ios .subnavbar .right a+a{margin-right:16px}.ios .subnavbar .left{margin-left:10px}.ios .subnavbar .right{margin-right:10px}.ios .subnavbar .right:first-child{left:8px}.ios .subnavbar a.link{justify-content:flex-start}.ios .subnavbar a.icon-only{justify-content:center;margin:0}.md .subnavbar{height:var(--f7-subnavbar-height)}.md .subnavbar .right{margin-right:auto}.md .subnavbar .right:first-child{left:16px}.md .subnavbar a.link{justify-content:center;padding:0 12px}.md .subnavbar a.icon-only{flex-shrink:0;padding:0 12px}.md .subnavbar-inner>a.link:first-child{margin-right:calc(var(--f7-subnavbar-inner-padding-right)*-1)}.md .subnavbar-inner>a.link:last-child{margin-left:calc(var(--f7-subnavbar-inner-padding-left)*-1)}:root{--f7-block-padding-horizontal:16px;--f7-block-padding-vertical:16px;--f7-block-font-size:inherit;--f7-block-header-margin:10px;--f7-block-footer-margin:10px;--f7-block-header-font-size:14px;--f7-block-footer-font-size:14px;--f7-block-title-text-transform:none;--f7-block-title-white-space:nowrap;--f7-block-title-medium-text-transform:none;--f7-block-title-large-text-transform:none;--f7-block-inset-side-margin:16px}:root .dark,:root.dark{--f7-block-outline-border-color:rgba(255,255,255,0.15)}.ios{--f7-block-text-color:inherit;--f7-block-margin-vertical:35px;--f7-block-outline-border-color:rgba(0,0,0,0.22);--f7-block-title-font-size:16px;--f7-block-title-font-weight:600;--f7-block-title-line-height:20px;--f7-block-title-margin-bottom:10px;--f7-block-title-medium-font-size:22px;--f7-block-title-medium-font-weight:bold;--f7-block-title-medium-line-height:1.4;--f7-block-title-large-font-size:30px;--f7-block-title-large-font-weight:bold;--f7-block-title-large-line-height:1.3;--f7-block-inset-border-radius:8px;--f7-block-title-text-color:#000;--f7-block-strong-text-color:#000;--f7-block-header-text-color:rgba(0,0,0,0.45);--f7-block-footer-text-color:rgba(0,0,0,0.45);--f7-block-strong-bg-color:#fff;--f7-block-title-medium-text-color:#000;--f7-block-title-large-text-color:#000}.ios .dark,.ios.dark{--f7-block-title-text-color:#fff;--f7-block-header-text-color:rgba(255,255,255,0.55);--f7-block-footer-text-color:rgba(255,255,255,0.55);--f7-block-strong-text-color:#fff;--f7-block-strong-bg-color:#1c1c1d;--f7-block-title-medium-text-color:#fff;--f7-block-title-large-text-color:#fff}.md{--f7-block-margin-vertical:32px;--f7-block-title-font-size:inherit;--f7-block-title-font-weight:500;--f7-block-title-line-height:16px;--f7-block-title-margin-bottom:16px;--f7-block-title-medium-font-size:16px;--f7-block-title-medium-font-weight:500;--f7-block-title-medium-line-height:1.3;--f7-block-title-large-font-size:22px;--f7-block-title-large-font-weight:500;--f7-block-title-large-line-height:1.2;--f7-block-inset-border-radius:16px}.md,.md .dark,.md [class*=color-]{--f7-block-text-color:var(--f7-md-on-surface);--f7-block-strong-text-color:var(--f7-md-on-surface);--f7-block-outline-border-color:var(--f7-md-outline);--f7-block-title-text-color:var(--f7-theme-color);--f7-block-title-medium-text-color:var(--f7-theme-color);--f7-block-title-large-text-color:var(--f7-theme-color);--f7-block-strong-bg-color:var(--f7-md-surface-1);--f7-block-header-text-color:var(--f7-md-on-surface-variant);--f7-block-footer-text-color:var(--f7-md-on-surface-variant)}.block{box-sizing:border-box;color:var(--f7-block-text-color);font-size:var(--f7-block-font-size);margin:var(--f7-block-margin-vertical) 0;padding-bottom:0;padding-left:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));padding-top:0;position:relative;z-index:1}.block>h1:first-child,.block>h2:first-child,.block>h3:first-child,.block>h4:first-child,.block>p:first-child{margin-top:0}.block>h1:last-child,.block>h2:last-child,.block>h3:last-child,.block>h4:last-child,.block>p:last-child{margin-bottom:0}.block-strong,.ios .block-strong-ios,.md .block-strong-md{background-color:var(--f7-block-strong-bg-color);color:var(--f7-block-strong-text-color);padding-bottom:var(--f7-block-padding-vertical);padding-top:var(--f7-block-padding-vertical)}.block-outline:not(.inset):before,.ios .block-outline-ios:not(.inset):not(.inset-ios):before,.md .block-outline-md:not(.inset):not(.inset-md):before{background-color:var(--f7-block-outline-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.block-outline:not(.inset):after,.ios .block-outline-ios:not(.inset):not(.inset-ios):after,.md .block-outline-md:not(.inset):not(.inset-md):after{background-color:var(--f7-block-outline-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.block-outline.inset,.ios .block-outline-ios.inset,.ios .block-outline-ios.inset-ios,.md .block-outline-md.inset,.md .block-outline-md.inset-md{border:1px solid var(--f7-block-outline-border-color)}.block-title{color:var(--f7-block-title-text-color);font-size:var(--f7-block-title-font-size,inherit);font-weight:var(--f7-block-title-font-weight);line-height:var(--f7-block-title-line-height);margin:0;margin:var(--f7-block-margin-vertical) calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right)) var(--f7-block-title-margin-bottom) calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));overflow:hidden;position:relative;text-overflow:ellipsis;text-transform:var(--f7-block-title-text-transform);white-space:var(--f7-block-title-white-space)}.block-title+.block,.block-title+.block-header,.block-title+.card,.block-title+.list,.block-title+.timeline{margin-top:0}.block-title-medium{color:var(--f7-block-title-medium-text-color);font-size:var(--f7-block-title-medium-font-size);font-weight:var(--f7-block-title-medium-font-weight);line-height:var(--f7-block-title-medium-line-height);text-transform:var(--f7-block-title-medium-text-transform)}.block-title-large{color:var(--f7-block-title-large-text-color);font-size:var(--f7-block-title-large-font-size);font-weight:var(--f7-block-title-large-font-weight);line-height:var(--f7-block-title-large-line-height);text-transform:var(--f7-block-title-large-text-transform)}.block>.block-title:first-child,.list>.block-title:first-child{margin-left:0;margin-right:0;margin-top:0}.block-header{color:var(--f7-block-header-text-color);font-size:var(--f7-block-header-font-size);margin-bottom:var(--f7-block-header-margin);margin-top:var(--f7-block-margin-vertical)}.block-header+.block,.block-header+.card,.block-header+.list,.block-header+.timeline{margin-top:var(--f7-block-header-margin)}.block-footer{color:var(--f7-block-footer-text-color);font-size:var(--f7-block-footer-font-size);margin-bottom:var(--f7-block-margin-vertical);margin-top:var(--f7-block-footer-margin)}.block-footer,.block-header{padding-bottom:0;padding-left:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));padding-top:0}.block-footer h1:first-child,.block-footer h2:first-child,.block-footer h3:first-child,.block-footer h4:first-child,.block-footer p:first-child,.block-footer ul:first-child,.block-header h1:first-child,.block-header h2:first-child,.block-header h3:first-child,.block-header h4:first-child,.block-header p:first-child,.block-header ul:first-child{margin-top:0}.block-footer h1:last-child,.block-footer h2:last-child,.block-footer h3:last-child,.block-footer h4:last-child,.block-footer p:last-child,.block-footer ul:last-child,.block-header h1:last-child,.block-header h2:last-child,.block-header h3:last-child,.block-header h4:last-child,.block-header p:last-child,.block-header ul:last-child{margin-bottom:0}.block-footer h1:first-child:last-child,.block-footer h2:first-child:last-child,.block-footer h3:first-child:last-child,.block-footer h4:first-child:last-child,.block-footer p:first-child:last-child,.block-footer ul:first-child:last-child,.block-header h1:first-child:last-child,.block-header h2:first-child:last-child,.block-header h3:first-child:last-child,.block-header h4:first-child:last-child,.block-header p:first-child:last-child,.block-header ul:first-child:last-child{margin-bottom:0;margin-top:0}.block .block-header,.card .block-header,.list .block-header,.timeline .block-header{margin-top:0}.block .block-footer,.card .block-footer,.list .block-footer,.timeline .block-footer{margin-bottom:0}.block+.block-footer,.card+.block-footer,.list+.block-footer,.timeline+.block-footer{margin-top:calc((var(--f7-block-margin-vertical) - var(--f7-block-footer-margin))*-1)}.block+.block-footer{margin-bottom:var(--f7-block-margin-vertical)}.block .block-footer,.block .block-header{padding:0}.block.inset,.ios .block.inset-ios,.md .block.inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block-strong.inset:after,.block-strong.inset:before,.ios .block-strong-ios.inset-ios:after,.ios .block-strong-ios.inset-ios:before,.ios .block-strong-ios.inset:after,.ios .block-strong-ios.inset:before,.ios .block-strong.inset-ios:after,.ios .block-strong.inset-ios:before,.md .block-strong-md.inset-md:after,.md .block-strong-md.inset-md:before,.md .block-strong-md.inset:after,.md .block-strong-md.inset:before,.md .block-strong.inset-md:after,.md .block-strong.inset-md:before{display:none!important}@media (min-width:480px){.block.xsmall-inset,.ios .block.xsmall-inset-ios,.md .block.xsmall-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.xsmall-inset:after,.block.xsmall-inset:before,.ios .block.xsmall-inset-ios:after,.ios .block.xsmall-inset-ios:before,.md .block.xsmall-inset-md:after,.md .block.xsmall-inset-md:before{display:none!important}.block.xsmall-inset.block-outline,.ios .block.xsmall-inset-ios.block-outline,.ios .block.xsmall-inset-ios.block-outline-ios,.md .block.xsmall-inset-md.block-outline,.md .block.xsmall-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:568px){.block.small-inset,.ios .block.small-inset-ios,.md .block.small-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.small-inset:after,.block.small-inset:before,.ios .block.small-inset-ios:after,.ios .block.small-inset-ios:before,.md .block.small-inset-md:after,.md .block.small-inset-md:before{display:none!important}.block.small-inset.block-outline,.ios .block.small-inset-ios.block-outline,.ios .block.small-inset-ios.block-outline-ios,.md .block.small-inset-md.block-outline,.md .block.small-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:768px){.block.medium-inset,.ios .block.medium-inset-ios,.md .block.medium-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.medium-inset:after,.block.medium-inset:before,.ios .block.medium-inset-ios:after,.ios .block.medium-inset-ios:before,.md .block.medium-inset-md:after,.md .block.medium-inset-md:before{display:none!important}.block.medium-inset.block-outline,.ios .block.medium-inset-ios.block-outline,.ios .block.medium-inset-ios.block-outline-ios,.md .block.medium-inset-md.block-outline,.md .block.medium-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:1024px){.block.large-inset,.ios .block.large-inset-ios,.md .block.large-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.large-inset:after,.block.large-inset:before,.ios .block.large-inset-ios:after,.ios .block.large-inset-ios:before,.md .block.large-inset-md:after,.md .block.large-inset-md:before{display:none!important}.block.large-inset.block-outline,.ios .block.large-inset-ios.block-outline,.ios .block.large-inset-ios.block-outline-ios,.md .block.large-inset-md.block-outline,.md .block.large-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:1200px){.block.xlarge-inset,.ios .block.xlarge-inset-ios,.md .block.xlarge-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.xlarge-inset:after,.block.xlarge-inset:before,.ios .block.xlarge-inset-ios:after,.ios .block.xlarge-inset-ios:before,.md .block.xlarge-inset-md:after,.md .block.xlarge-inset-md:before{display:none!important}.block.xlarge-inset.block-outline,.ios .block.xlarge-inset-ios.block-outline,.ios .block.xlarge-inset-ios.block-outline-ios,.md .block.xlarge-inset-md.block-outline,.md .block.xlarge-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}:root{--f7-list-inset-side-margin:16px;--f7-list-item-padding-horizontal:16px;--f7-list-item-padding-vertical:8px;--f7-list-media-item-padding-horizontal:16px;--f7-list-item-text-max-lines:2;--f7-list-chevron-icon-font-size:20px;--f7-list-item-media-margin:16px;--f7-list-item-title-font-size:inherit;--f7-list-item-title-font-weight:400;--f7-list-item-title-line-height:inherit;--f7-list-item-title-white-space:nowrap;--f7-list-item-subtitle-font-weight:400;--f7-list-item-subtitle-line-height:inherit;--f7-list-item-text-font-weight:400;--f7-list-item-after-font-weight:400;--f7-list-item-after-line-height:inherit;--f7-list-item-header-font-size:12px;--f7-list-item-header-font-weight:400;--f7-list-item-header-line-height:1.2;--f7-list-item-footer-font-size:12px;--f7-list-item-footer-font-weight:400;--f7-list-item-footer-line-height:1.2;--f7-list-button-font-size:inherit;--f7-list-button-font-weight:400;--f7-list-button-text-align:center;--f7-list-group-title-line-height:inherit;--f7-menu-list-font-size:14px;--f7-menu-list-item-title-font-size:14px;--f7-menu-list-item-title-font-weight:500;--f7-menu-list-item-subtitle-font-size:14px;--f7-menu-list-item-text-font-size:14px;--f7-menu-list-item-after-font-size:14px;--f7-list-outline-border-color:rgba(0,0,0,0.22);--f7-list-chevron-icon-color:rgba(0,0,0,0.2)}:root .dark,:root.dark{--f7-list-button-border-color:rgba(255,255,255,0.15);--f7-list-outline-border-color:rgba(255,255,255,0.15);--f7-list-group-title-border-color:rgba(255,255,255,0.15);--f7-list-chevron-icon-color:rgba(255,255,255,0.3)}.ios{--f7-list-in-list-padding-left:30px;--f7-list-inset-border-radius:8px;--f7-list-margin-vertical:35px;--f7-list-font-size:17px;--f7-list-chevron-icon-area:20px;--f7-list-item-title-text-color:inherit;--f7-list-item-subtitle-text-color:inherit;--f7-list-link-pressed-bg-color:rgba(0,0,0,0.15);--f7-list-item-subtitle-font-size:15px;--f7-list-item-text-font-size:15px;--f7-list-item-text-line-height:21px;--f7-list-item-after-font-size:inherit;--f7-list-item-after-padding:5px;--f7-list-item-min-height:44px;--f7-list-item-media-icons-margin:5px;--f7-list-media-item-padding-vertical:10px;--f7-list-media-item-title-font-weight:600;--f7-list-button-border-color:rgba(0,0,0,0.22);--f7-list-group-title-border-color:rgba(0,0,0,0.22);--f7-list-group-title-height:31px;--f7-list-group-title-font-size:inherit;--f7-list-group-title-font-weight:400;--f7-menu-list-offset:8px;--f7-menu-list-border-radius:8px;--f7-menu-list-item-bg-color:transparent;--f7-menu-list-item-text-color:inherit;--f7-menu-list-item-min-height:44px;--f7-list-item-border-color:rgba(0,0,0,0.22);--f7-list-outline-inset-border-color:rgba(0,0,0,0.22);--f7-list-strong-bg-color:#fff;--f7-list-item-after-text-color:rgba(0,0,0,0.45);--f7-list-item-header-text-color:inherit;--f7-list-item-footer-text-color:rgba(0,0,0,0.45);--f7-list-item-text-text-color:rgba(0,0,0,0.45);--f7-list-group-title-text-color:rgba(0,0,0,0.45);--f7-list-group-title-bg-color:#f7f7f7;--f7-menu-list-item-selected-text-color:var(--f7-theme-color);--f7-menu-list-item-selected-bg-color:rgba(var(--f7-theme-color-rgb),0.15)}.ios .dark,.ios.dark{--f7-list-item-border-color:rgba(255,255,255,0.15);--f7-list-outline-inset-color:rgba(255,255,255,0.15);--f7-list-strong-bg-color:#1c1c1d;--f7-list-item-after-text-color:rgba(255,255,255,0.55);--f7-list-item-header-text-color:rgba(255,255,255,0.55);--f7-list-item-footer-text-color:rgba(255,255,255,0.55);--f7-list-item-text-text-color:rgba(255,255,255,0.55);--f7-list-group-title-text-color:rgba(255,255,255,0.55);--f7-list-group-title-bg-color:#232323;--f7-list-link-pressed-bg-color:rgba(255,255,255,0.08);--f7-menu-list-item-selected-text-color:inherit;--f7-menu-list-item-selected-bg-color:var(--f7-theme-color)}.md{--f7-list-in-list-padding-left:24px;--f7-list-inset-border-radius:16px;--f7-list-margin-vertical:32px;--f7-list-font-size:16px;--f7-list-chevron-icon-area:26px;--f7-list-item-subtitle-font-size:14px;--f7-list-item-text-font-size:14px;--f7-list-item-text-line-height:20px;--f7-list-item-after-font-size:14px;--f7-list-item-after-padding:8px;--f7-list-item-min-height:48px;--f7-list-item-media-icons-margin:8px;--f7-list-media-item-padding-vertical:12px;--f7-list-media-item-title-font-weight:500;--f7-list-button-border-color:transparent;--f7-list-group-title-border-color:transparent;--f7-list-group-title-height:48px;--f7-list-group-title-font-size:16px;--f7-list-group-title-font-weight:400;--f7-menu-list-offset:16px;--f7-menu-list-border-radius:999px;--f7-menu-list-item-min-height:56px;--f7-list-link-pressed-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-list-outline-inset-border-color:var(--f7-md-outline);--f7-list-item-border-color:var(--f7-md-outline);--f7-list-item-title-text-color:var(--f7-md-on-surface);--f7-list-item-subtitle-text-color:var(--f7-md-on-surface);--f7-list-group-title-bg-color:var(--f7-md-surface-2);--f7-list-group-title-text-color:var(--f7-md-on-surface-variant);--f7-list-strong-bg-color:var(--f7-md-surface-1);--f7-list-item-after-text-color:var(--f7-md-on-surface-variant);--f7-list-item-text-text-color:var(--f7-md-on-surface-variant);--f7-list-item-header-text-color:var(--f7-md-on-surface-variant);--f7-list-item-footer-text-color:var(--f7-md-on-surface-variant);--f7-menu-list-item-text-color:var(--f7-md-on-surface-variant);--f7-menu-list-item-bg-color:var(--f7-md-surface-1);--f7-menu-list-item-selected-text-color:var(--f7-md-on-secondary-container);--f7-menu-list-item-selected-bg-color:var(--f7-md-secondary-container)}:root{--f7-list-chevron-icon-left:"chevron_left";--f7-list-chevron-icon-right:"chevron_right"}.list{font-size:var(--f7-list-font-size);margin:var(--f7-list-margin-vertical) 0;position:relative;z-index:1}.ios .list-strong-ios ul,.list-strong ul,.md .list-strong-md ul{background:var(--f7-list-strong-bg-color)}.ios .list-outline-ios ul:before,.list-outline ul:before,.md .list-outline-md ul:before{background-color:var(--f7-list-outline-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.ios .list-outline-ios ul:after,.list-outline ul:after,.md .list-outline-md ul:after{background-color:var(--f7-list-outline-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .list-outline-ios.inset,.ios .list-outline-ios.inset-ios,.list-outline.inset,.md .list-outline-md.inset,.md .list-outline-md.inset-md{border:1px solid var(--f7-list-outline-inset-border-color)}.list ul{list-style:none;margin:0;padding:0;position:relative}.list ul ul{padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-list-in-list-padding-left))}.list ul ul:after,.list ul ul:before{display:none!important}.list .item-media,.list li{box-sizing:border-box;position:relative}.list .item-media{align-items:center;display:flex;flex-shrink:0;flex-wrap:nowrap;padding-bottom:var(--f7-list-item-padding-vertical);padding-top:var(--f7-list-item-padding-vertical)}.list .item-media+.item-inner{margin-right:var(--f7-list-item-media-margin)}.list .item-media i+i,.list .item-media i+img{margin-right:var(--f7-list-item-media-icons-margin)}.list .item-after{padding-right:var(--f7-list-item-after-padding)}.list .item-inner{align-items:center;align-self:stretch;box-sizing:border-box;display:flex;justify-content:space-between;min-height:calc(var(--f7-list-item-min-height));min-width:0;padding-bottom:var(--f7-list-item-padding-vertical);padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));padding-top:var(--f7-list-item-padding-vertical);position:relative;width:100%}.list .item-title{color:var(--f7-list-item-title-text-color);flex-shrink:1;font-size:var(--f7-list-item-title-font-size);font-weight:var(--f7-list-item-title-font-weight);line-height:var(--f7-list-item-title-line-height);max-width:100%;min-width:0;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:var(--f7-list-item-title-white-space)}.list .item-after{color:var(--f7-list-item-after-text-color);display:flex;flex-shrink:0;font-size:var(--f7-list-item-after-font-size);font-weight:var(--f7-list-item-after-font-weight);line-height:var(--f7-list-item-after-line-height);margin-right:auto;white-space:nowrap}.list .item-footer,.list .item-header{white-space:normal}.list .item-header{color:var(--f7-list-item-header-text-color);font-size:var(--f7-list-item-header-font-size);font-weight:var(--f7-list-item-header-font-weight);line-height:var(--f7-list-item-header-line-height)}.list .item-footer{color:var(--f7-list-item-footer-text-color);font-size:var(--f7-list-item-footer-font-size);font-weight:var(--f7-list-item-footer-font-weight);line-height:var(--f7-list-item-footer-line-height)}.list .item-link,.list .list-button,.list label.item-content{cursor:pointer;overflow:hidden;position:relative;transition-duration:.3s;transition-property:background-color,color;z-index:0}.list .item-link,.list .list-button{display:block}.list .item-link,.list label.item-content{color:inherit}.list .item-link.active-state,.list label.item-content.active-state{background-color:var(--f7-list-link-pressed-bg-color)}.list .item-link .item-inner{padding-left:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left))}.list .item-content{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;min-height:calc(var(--f7-list-item-min-height));padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.list .item-subtitle{color:var(--f7-list-item-subtitle-text-color);font-size:var(--f7-list-item-subtitle-font-size);font-weight:var(--f7-list-item-subtitle-font-weight);line-height:var(--f7-list-item-subtitle-line-height);max-width:100%;white-space:nowrap}.list .item-subtitle,.list .item-text{overflow:hidden;position:relative;text-overflow:ellipsis}.list .item-text{-webkit-line-clamp:var(--f7-list-item-text-max-lines);-webkit-box-orient:vertical;color:var(--f7-list-item-text-text-color);display:-webkit-box;font-size:var(--f7-list-item-text-font-size);font-weight:var(--f7-list-item-text-font-weight);line-height:var(--f7-list-item-text-line-height);max-height:calc(var(--f7-list-item-text-line-height)*var(--f7-list-item-text-max-lines))}.list .item-title-row{box-sizing:border-box;display:flex;justify-content:space-between;position:relative}.list .item-title-row .item-after{align-self:center}.list li:last-child .list-button:after,.list li:last-child li:last-child>.item-content>.item-inner:after,.list li:last-child li:last-child>.item-inner:after,.list li:last-child li:last-child>.item-link>.item-content>.item-inner:after,.list li:last-child li:last-child>.swipeout-content>.item-content>.item-inner:after,.list li:last-child>.item-content>.item-inner:after,.list li:last-child>.item-inner:after,.list li:last-child>.item-link>.item-content>.item-inner:after,.list li:last-child>.swipeout-content>.item-content>.item-inner:after{display:none!important}.list li li:last-child .item-inner:after,.list li:last-child li .item-inner:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.list-button{--f7-touch-ripple-color:var(--f7-link-touch-ripple-color,rgba(var(--f7-theme-color-rgb),0.25));color:var(--f7-list-button-text-color,var(--f7-theme-color));font-size:var(--f7-list-button-font-size);font-weight:var(--f7-list-button-font-weight);line-height:var(--f7-list-item-min-height);padding:0 var(--f7-list-item-padding-horizontal);text-align:var(--f7-list-button-text-align)}.ios .list-button.active-state{background-color:var(--f7-list-button-pressed-bg-color,rgba(var(--f7-theme-color-rgb),.15))}.md .list-button.active-state{background-color:var(--f7-list-button-pressed-bg-color,transparent)}.ios .list-dividers-ios .list-button:after,.list-dividers .list-button:after,.md .list-dividers-md .list-button:after{background-color:var(--f7-list-button-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.list-button[class*=color-]{--f7-list-button-text-color:var(--f7-theme-color)}.simple-list li{align-content:center;align-items:center;box-sizing:border-box;display:flex;height:var(--f7-list-item-min-height);justify-content:space-between;line-height:var(--f7-list-item-min-height);max-width:100%;padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));position:relative;text-overflow:ellipsis;white-space:nowrap}.simple-list li:after{left:var(--f7-list-item-padding-horizontal);left:0;right:0;right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));width:auto}.simple-list li:last-child:after{display:none!important}.links-list li{z-index:1}.links-list a{align-content:center;align-items:center;box-sizing:border-box;color:inherit;display:block;display:flex;height:var(--f7-list-item-min-height);justify-content:space-between;max-width:100%;overflow:hidden;position:relative;text-overflow:ellipsis;transition-duration:.3s;transition-property:background-color;white-space:nowrap}.links-list a .ripple-wave{z-index:0}.links-list a:after{width:auto}.links-list a.active-state{background-color:var(--f7-list-link-pressed-bg-color)}.links-list a{padding-left:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.links-list a:after{left:0;right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.links-list li:last-child a:after{display:none!important}.ios .list-dividers-ios .item-inner:after,.ios .list-dividers-ios.links-list a:after,.ios .list-dividers-ios.simple-list li:after,.list-dividers .item-inner:after,.list-dividers.links-list a:after,.list-dividers.simple-list li:after,.md .list-dividers-md .item-inner:after,.md .list-dividers-md.links-list a:after,.md .list-dividers-md.simple-list li:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item>.item-link,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li>.item-link{border-radius:16px;margin-left:calc(var(--f7-list-item-padding-horizontal)/2);margin-right:calc(var(--f7-list-item-padding-horizontal)/2)}.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item>.item-link>.item-content,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li>.item-link>.item-content{margin-left:0;margin-right:0}.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content{padding-right:calc(var(--f7-list-item-padding-horizontal)/2 + var(--f7-safe-area-right))}.media-list,li.media-item{--f7-list-item-padding-vertical:var(--f7-list-media-item-padding-vertical);--f7-list-item-padding-horizontal:var(--f7-list-media-item-padding-horizontal)}.media-list .item-title,li.media-item .item-title{font-weight:var(--f7-list-media-item-title-font-weight,var(--f7-list-item-title-font-weight,inherit))}.media-list .item-inner,li.media-item .item-inner{align-self:stretch;display:block}.media-list .item-media img,li.media-item .item-media img{display:block}.media-list .item-link .item-inner,li.media-item .item-link .item-inner{padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left))}.media-list .item-link .item-title-row,li.media-item .item-link .item-title-row{padding-left:calc(var(--f7-list-chevron-icon-area))}.media-list .chevron-center .item-link .item-inner,.media-list .item-link.chevron-center .item-inner,.media-list.chevron-center .item-link .item-inner,li.media-item .chevron-center .item-link .item-inner,li.media-item .item-link.chevron-center .item-inner,li.media-item.chevron-center .item-link .item-inner{padding-left:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left))}.media-list .chevron-center .item-title-row,.media-list.chevron-center .item-title-row,li.media-item .chevron-center .item-title-row,li.media-item.chevron-center .item-title-row{padding-left:0}.links-list a:before,.list .item-link .item-inner:before,.media-list .chevron-center .item-link .item-inner:before,.media-list .item-link .item-title-row:before,.media-list .item-link.chevron-center .item-inner:before,.media-list.chevron-center .item-link .item-inner:before,li.media-item .chevron-center .item-link .item-inner:before,li.media-item .item-link .item-title-row:before,li.media-item .item-link.chevron-center .item-inner:before,li.media-item.chevron-center .item-link .item-inner:before{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-list-chevron-icon-color);content:var(--f7-list-chevron-icon-left);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-size:var(--f7-list-chevron-icon-font-size);font-style:normal;font-weight:400;height:100%;height:14px;left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));letter-spacing:normal;line-height:1;line-height:14px;margin-top:-7px;pointer-events:none;position:absolute;text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;white-space:nowrap;width:100%;width:8px}.media-list .chevron-center .item-title-row:before,.media-list .item-link .item-inner:before,.media-list.chevron-center .item-title-row:before,li.media-item .chevron-center .item-title-row:before,li.media-item .item-link .item-inner:before,li.media-item.chevron-center .item-title-row:before{display:none}.media-list .item-link .item-title-row:before,li.media-item .item-link .item-title-row:before{left:0}.list-group ul:after,.list-group ul:before{z-index:25!important}.list-group+.list-group ul:before{display:none!important}.list-group-title,li.list-group-title{align-content:center;align-items:center;background-color:var(--f7-list-group-title-bg-color);box-sizing:border-box;color:var(--f7-list-group-title-text-color);display:flex;font-size:var(--f7-list-group-title-font-size);font-weight:var(--f7-list-group-title-font-weight);height:var(--f7-list-group-title-height);line-height:var(--f7-list-group-title-line-height);margin-top:-1px;max-width:100%;overflow:hidden;padding-bottom:0;padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));padding-top:0;position:relative;text-overflow:ellipsis;white-space:nowrap;z-index:15}.list-group-title:before,li.list-group-title:before{background-color:var(--f7-list-group-title-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.list-group-title:after,li.list-group-title:after{display:none!important}.list-group>.list-group-title,.list-group>ul>.list-group-title{margin-top:0;position:sticky;top:0;z-index:20}.page-with-navbar-large .list-group>.list-group-title,.page-with-navbar-large .list-group>ul>.list-group-title{top:calc(var(--f7-navbar-large-title-height)*-1)}.ios .list.inset-ios,.list.inset,.md .list.inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.inset-ios .block-title,.list.inset .block-title,.md .list.inset-md .block-title{margin-left:0;margin-right:0}.ios .list.inset-ios ul,.list.inset ul,.md .list.inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.inset-ios ul:after,.ios .list.inset-ios ul:before,.list.inset ul:after,.list.inset ul:before,.md .list.inset-md ul:after,.md .list.inset-md ul:before{display:none!important}.ios .list.inset-ios li.swipeout:first-child,.ios .list.inset-ios li:first-child>a,.list.inset li.swipeout:first-child,.list.inset li:first-child>a,.md .list.inset-md li.swipeout:first-child,.md .list.inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.inset-ios li.swipeout:last-child,.ios .list.inset-ios li:last-child>a,.list.inset li.swipeout:last-child,.list.inset li:last-child>a,.md .list.inset-md li.swipeout:last-child,.md .list.inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.inset-ios li.swipeout:first-child:last-child,.ios .list.inset-ios li:first-child:last-child>a,.list.inset li.swipeout:first-child:last-child,.list.inset li:first-child:last-child>a,.md .list.inset-md li.swipeout:first-child:last-child,.md .list.inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}@media (min-width:480px){.ios .list.xsmall-inset-ios,.list.xsmall-inset,.md .list.xsmall-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.xsmall-inset-ios .block-title,.list.xsmall-inset .block-title,.md .list.xsmall-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.xsmall-inset-ios ul,.list.xsmall-inset ul,.md .list.xsmall-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xsmall-inset-ios ul:after,.ios .list.xsmall-inset-ios ul:before,.list.xsmall-inset ul:after,.list.xsmall-inset ul:before,.md .list.xsmall-inset-md ul:after,.md .list.xsmall-inset-md ul:before{display:none!important}.ios .list.xsmall-inset-ios li:first-child>a,.list.xsmall-inset li:first-child>a,.md .list.xsmall-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.xsmall-inset-ios li:last-child>a,.list.xsmall-inset li:last-child>a,.md .list.xsmall-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.xsmall-inset-ios li:first-child:last-child>a,.list.xsmall-inset li:first-child:last-child>a,.md .list.xsmall-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xsmall-inset-ios.list-outline ul,.ios .list.xsmall-inset-ios.list-outline-ios ul,.list.xsmall-inset.list-outline ul,.md .list.xsmall-inset-md.list-outline ul,.md .list.xsmall-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:568px){.ios .list.small-inset-ios,.list.small-inset,.md .list.small-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.small-inset-ios .block-title,.list.small-inset .block-title,.md .list.small-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.small-inset-ios ul,.list.small-inset ul,.md .list.small-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.small-inset-ios ul:after,.ios .list.small-inset-ios ul:before,.list.small-inset ul:after,.list.small-inset ul:before,.md .list.small-inset-md ul:after,.md .list.small-inset-md ul:before{display:none!important}.ios .list.small-inset-ios li:first-child>a,.list.small-inset li:first-child>a,.md .list.small-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.small-inset-ios li:last-child>a,.list.small-inset li:last-child>a,.md .list.small-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.small-inset-ios li:first-child:last-child>a,.list.small-inset li:first-child:last-child>a,.md .list.small-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.small-inset-ios.list-outline ul,.ios .list.small-inset-ios.list-outline-ios ul,.list.small-inset.list-outline ul,.md .list.small-inset-md.list-outline ul,.md .list.small-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:768px){.ios .list.medium-inset-ios,.list.medium-inset,.md .list.medium-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.medium-inset-ios .block-title,.list.medium-inset .block-title,.md .list.medium-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.medium-inset-ios ul,.list.medium-inset ul,.md .list.medium-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.medium-inset-ios ul:after,.ios .list.medium-inset-ios ul:before,.list.medium-inset ul:after,.list.medium-inset ul:before,.md .list.medium-inset-md ul:after,.md .list.medium-inset-md ul:before{display:none!important}.ios .list.medium-inset-ios li:first-child>a,.list.medium-inset li:first-child>a,.md .list.medium-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.medium-inset-ios li:last-child>a,.list.medium-inset li:last-child>a,.md .list.medium-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.medium-inset-ios li:first-child:last-child>a,.list.medium-inset li:first-child:last-child>a,.md .list.medium-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.medium-inset-ios.list-outline ul,.ios .list.medium-inset-ios.list-outline-ios ul,.list.medium-inset.list-outline ul,.md .list.medium-inset-md.list-outline ul,.md .list.medium-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:1024px){.ios .list.large-inset-ios,.list.large-inset,.md .list.large-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.large-inset-ios .block-title,.list.large-inset .block-title,.md .list.large-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.large-inset-ios ul,.list.large-inset ul,.md .list.large-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.large-inset-ios ul:after,.ios .list.large-inset-ios ul:before,.list.large-inset ul:after,.list.large-inset ul:before,.md .list.large-inset-md ul:after,.md .list.large-inset-md ul:before{display:none!important}.ios .list.large-inset-ios li:first-child>a,.list.large-inset li:first-child>a,.md .list.large-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.large-inset-ios li:last-child>a,.list.large-inset li:last-child>a,.md .list.large-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.large-inset-ios li:first-child:last-child>a,.list.large-inset li:first-child:last-child>a,.md .list.large-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.large-inset-ios.list-outline ul,.ios .list.large-inset-ios.list-outline-ios ul,.list.large-inset.list-outline ul,.md .list.large-inset-md.list-outline ul,.md .list.large-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:1200px){.ios .list.xlarge-inset-ios,.list.xlarge-inset,.md .list.xlarge-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.xlarge-inset-ios .block-title,.list.xlarge-inset .block-title,.md .list.xlarge-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.xlarge-inset-ios ul,.list.xlarge-inset ul,.md .list.xlarge-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xlarge-inset-ios ul:after,.ios .list.xlarge-inset-ios ul:before,.list.xlarge-inset ul:after,.list.xlarge-inset ul:before,.md .list.xlarge-inset-md ul:after,.md .list.xlarge-inset-md ul:before{display:none!important}.ios .list.xlarge-inset-ios li:first-child>a,.list.xlarge-inset li:first-child>a,.md .list.xlarge-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.xlarge-inset-ios li:last-child>a,.list.xlarge-inset li:last-child>a,.md .list.xlarge-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.xlarge-inset-ios li:first-child:last-child>a,.list.xlarge-inset li:first-child:last-child>a,.md .list.xlarge-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xlarge-inset-ios.list-outline ul,.ios .list.xlarge-inset-ios.list-outline-ios ul,.list.xlarge-inset.list-outline ul,.md .list.xlarge-inset-md.list-outline ul,.md .list.xlarge-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}.list .no-chevron,.list.no-chevron,.menu-list{--f7-list-chevron-icon-color:transparent;--f7-list-chevron-icon-area:0px}.menu-list{--f7-list-font-size:var(--f7-menu-list-font-size);--f7-list-item-title-font-size:var(--f7-menu-list-item-title-font-size);--f7-list-item-title-font-weight:var(--f7-menu-list-item-title-font-weight);--f7-list-item-subtitle-font-size:var(--f7-menu-list-item-subtitle-font-size);--f7-list-item-text-font-size:var(--f7-menu-list-item-text-font-size);--f7-list-item-after-font-size:var(--f7-menu-list-item-after-font-size);--f7-list-item-min-height:var(--f7-menu-list-item-min-height)}.menu-list .item-after,.menu-list .item-footer,.menu-list .item-header,.menu-list .item-subtitle,.menu-list .item-text,.menu-list .item-title{transition-duration:.3s}.menu-list li:not(.list-group-title){padding-bottom:4px;padding-top:4px}.menu-list li:not(.list-group-title):first-child{padding-top:4px}.menu-list li:not(.list-group-title):last-child{padding-bottom:4px}.menu-list .item-link{background-color:var(--f7-menu-list-item-bg-color);border-radius:var(--f7-menu-list-border-radius)!important;color:var(--f7-menu-list-item-text-color);margin-left:var(--f7-menu-list-offset);margin-right:var(--f7-menu-list-offset)}.menu-list .item-inner:after{display:none}.menu-list .item-selected .item-link,.menu-list .item-selected.item-link,.menu-list .tab-link-active .item-link,.menu-list .tab-link-active.item-link{background-color:var(--f7-menu-list-item-selected-bg-color);color:var(--f7-menu-list-item-selected-text-color)}.menu-list .item-selected .item-after,.menu-list .item-selected .item-footer,.menu-list .item-selected .item-header,.menu-list .item-selected .item-subtitle,.menu-list .item-selected .item-text,.menu-list .item-selected .item-title{color:var(--f7-menu-list-item-selected-text-color)}.ios .item-link.active-state .item-inner:after,.ios .links-list a.active-state:after,.ios .list-button.active-state:after{background-color:initial}.ios .links-list a.active-state,.ios .list .item-link.active-state,.ios .list .list-button.active-state{transition-duration:0ms}.md .menu-list .item-link.active-state{background-color:var(--f7-menu-list-item-bg-color)}:root{--f7-badge-text-color:#fff;--f7-badge-bg-color:#8e8e93;--f7-badge-in-icon-size:16px;--f7-badge-in-icon-font-size:10px;--f7-badge-font-weight:normal;--f7-badge-font-size:12px}.ios{--f7-badge-padding:0 4px;--f7-badge-size:20px;--f7-badge-font-weight:600}.md{--f7-badge-padding:2px 6px;--f7-badge-size:20px;--f7-badge-font-weight:500}.badge{align-content:center;align-items:center;background:var(--f7-badge-bg-color);border-radius:var(--f7-badge-size);box-sizing:border-box;color:var(--f7-badge-text-color);display:inline-flex;font-size:var(--f7-badge-font-size);font-weight:var(--f7-badge-font-weight);height:var(--f7-badge-size);justify-content:center;min-width:var(--f7-badge-size);padding:var(--f7-badge-padding);position:relative;text-align:center;vertical-align:middle}.f7-icons .badge,.framework7-icons .badge,.icon .badge,.material-icons .badge{--f7-badge-font-size:var(--f7-badge-in-icon-font-size);--f7-badge-size:var(--f7-badge-in-icon-size);--f7-badge-padding:0px 2px;font-family:var(--f7-font-family);left:100%;margin-left:-10px;position:absolute;top:-2px}.badge[class*=color-]{--f7-badge-bg-color:var(--f7-theme-color)}:root{--f7-button-font-size:14px;--f7-button-min-width:32px;--f7-button-bg-color:transparent;--f7-button-border-width:0px;--f7-button-raised-box-shadow:0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);--f7-button-raised-pressed-box-shadow:0 3px 6px rgba(0,0,0,0.16),0 3px 6px rgba(0,0,0,0.23);--f7-segmented-raised-divider-color:rgba(0,0,0,0.1);--f7-segmented-strong-padding:2px;--f7-segmented-strong-between-buttons:4px;--f7-segmented-strong-button-font-weight:500;--f7-segmented-strong-button-active-box-shadow:0px 2px 2px rgba(0,0,0,0.25);--f7-segmented-strong-button-text-color:#000;--f7-segmented-strong-button-hover-bg-color:rgba(0,0,0,0.04);--f7-segmented-strong-button-active-text-color:#000;--f7-segmented-strong-button-active-bg-color:#fff}:root .dark,:root.dark{--f7-segmented-strong-button-hover-bg-color:rgba(255,255,255,0.02);--f7-segmented-strong-button-active-bg-color:rgba(255,255,255,0.14);--f7-segmented-strong-button-text-color:#fff;--f7-segmented-strong-button-active-text-color:#fff}.ios{--f7-button-fill-text-color:#fff;--f7-button-text-transform:uppercase;--f7-button-height:28px;--f7-button-padding-horizontal:10px;--f7-button-border-radius:4px;--f7-button-font-weight:600;--f7-button-letter-spacing:0;--f7-button-outline-border-width:2px;--f7-button-large-text-transform:uppercase;--f7-button-large-height:44px;--f7-button-large-font-size:17px;--f7-button-large-font-weight:500;--f7-button-small-outline-border-width:2px;--f7-button-small-text-transform:uppercase;--f7-button-small-height:26px;--f7-button-small-font-size:13px;--f7-button-small-font-weight:600;--f7-segmented-strong-button-text-transform:none;--f7-segmented-strong-button-active-font-weight:600;--f7-button-tonal-bg-color:rgba(var(--f7-theme-color-rgb),0.15);--f7-button-tonal-pressed-bg-color:rgba(var(--f7-theme-color-rgb),0.25);--f7-button-tonal-text-color:var(--f7-theme-color);--f7-segmented-strong-bg-color:rgba(0,0,0,0.07);--f7-segmented-strong-button-pressed-bg-color:rgba(0,0,0,0.07)}.ios .dark,.ios.dark{--f7-segmented-strong-bg-color:rgba(255,255,255,0.1);--f7-segmented-strong-button-pressed-bg-color:rgba(255,255,255,0.04)}.md{--f7-button-text-transform:none;--f7-button-height:40px;--f7-button-padding-horizontal:16px;--f7-button-border-radius:8px;--f7-button-font-weight:500;--f7-button-letter-spacing:normal;--f7-button-outline-border-width:1px;--f7-button-large-text-transform:none;--f7-button-large-height:48px;--f7-button-large-font-size:14px;--f7-button-large-font-weight:500;--f7-button-small-text-transform:none;--f7-button-small-outline-border-width:1px;--f7-button-small-height:32px;--f7-button-small-font-size:14px;--f7-button-small-font-weight:500;--f7-segmented-strong-button-text-transform:none;--f7-segmented-strong-button-active-font-weight:500;--f7-segmented-strong-button-pressed-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-button-fill-pressed-bg-color:transparent;--f7-button-fill-text-color:var(--f7-md-on-primary);--f7-button-outline-border-color:var(--f7-md-outline);--f7-segmented-strong-bg-color:var(--f7-md-surface-variant);--f7-button-tonal-bg-color:var(--f7-md-secondary-container);--f7-button-tonal-pressed-bg-color:transparent;--f7-button-tonal-text-color:var(--f7-md-on-secondary-container)}button{width:100%}.button,button{-webkit-appearance:none;appearance:none}.button{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25);align-items:center;background:none;background-color:var(--f7-button-bg-color);border:var(--f7-button-border-width,0) solid var(--f7-button-border-color,var(--f7-theme-color));border-radius:var(--f7-button-border-radius);box-shadow:var(--f7-button-box-shadow);box-sizing:border-box;color:var(--f7-button-text-color,var(--f7-theme-color));cursor:pointer;display:flex;font-family:inherit;font-size:var(--f7-button-font-size);font-weight:var(--f7-button-font-weight);height:var(--f7-button-height);justify-content:center;letter-spacing:var(--f7-button-letter-spacing);line-height:calc(var(--f7-button-height) - var(--f7-button-border-width, 0)*2);margin:0;min-width:var(--f7-button-min-width);outline:0;overflow:hidden;padding:var(--f7-button-padding-vertical,0) var(--f7-button-padding-horizontal);position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:var(--f7-button-text-transform);vertical-align:middle;white-space:nowrap}.button.active-state{color:var(--f7-button-pressed-text-color,var(--f7-button-text-color,var(--f7-theme-color)))}input[type=button].button,input[type=reset].button,input[type=submit].button{width:100%}.button>i+span,.button>span+span,.button>span~i{margin-right:4px}.navbar .button,.searchbar .button,.subnavbar .button,.toolbar .button{color:var(--f7-button-text-color,var(--f7-theme-color))}.button-round,.ios .button-round-ios,.md .button-round-md{--f7-button-border-radius:var(--f7-button-height)}.button-active,.button-fill,.button.tab-link-active,.ios .button-fill-ios,.md .button-fill-md{--f7-button-bg-color:var(--f7-button-fill-bg-color,var(--f7-theme-color));--f7-button-text-color:var(--f7-button-fill-text-color,#fff);--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.ios .button-active.color-white,.ios .button-fill.color-white,.ios .button.tab-link-active.color-white,.ios .color-white .button-active,.ios .color-white .button-fill,.ios .color-white .button.tab-link-active,.ios .color-white .ios .button-fill-ios,.ios .color-white .md .button-fill-md,.ios .ios .button-fill-ios.color-white,.ios .md .button-fill-md.color-white{--f7-button-text-color:#000}.button-fill,.ios .button-fill-ios,.md .button-fill-md{--f7-button-pressed-bg-color:var(--f7-button-fill-pressed-bg-color)}.button-active,.button.tab-link-active{--f7-button-pressed-bg-color:var(--f7-button-bg-color)}.button-outline,.ios .button-outline-ios,.md .button-outline-md{--f7-button-border-color:var(--f7-button-outline-border-color,var(--f7-theme-color));--f7-button-border-width:var(--f7-button-outline-border-width)}.button-tonal,.ios .button-tonal-ios,.md .button-tonal-md{--f7-button-bg-color:var(--f7-button-tonal-bg-color);--f7-button-text-color:var(--f7-button-tonal-text-color);--f7-button-pressed-bg-color:var(--f7-button-tonal-pressed-bg-color)}.button-large,.ios .button-large-ios,.md .button-large-md{--f7-button-height:var(--f7-button-large-height);--f7-button-font-size:var(--f7-button-large-font-size);--f7-button-font-weight:var(--f7-button-large-font-weight);--f7-button-text-transform:var(--f7-button-large-text-transform)}.button-small,.ios .button-small-ios,.md .button-small-md{--f7-button-outline-border-width:var(--f7-button-small-outline-border-width);--f7-button-height:var(--f7-button-small-height);--f7-button-font-size:var(--f7-button-small-font-size);--f7-button-font-weight:var(--f7-button-small-font-weight);--f7-button-text-transform:var(--f7-button-small-text-transform)}.ios .button-small-ios.button-fill,.ios .button-small.button-fill,.ios .button-small.button-fill-ios{--f7-button-border-width:var(--f7-button-small-outline-border-width);--f7-button-pressed-text-color:var(--f7-theme-color);--f7-button-pressed-bg-color:transparent}.segmented{align-self:center;border-radius:var(--f7-button-border-radius);box-shadow:var(--f7-button-box-shadow);box-sizing:border-box;display:flex;flex-wrap:nowrap}.segmented .button,.segmented button{border-radius:0;flex-shrink:1;min-width:0;width:100%}.segmented .button:first-child{border-radius:0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0}.segmented .button.button-outline:nth-child(n+2),.segmented .button:not(.button-outline):first-child{border-right:none}.segmented .button:last-child{border-radius:var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius)}.segmented .button-round:first-child{border-radius:0 var(--f7-button-height) var(--f7-button-height) 0}.segmented .button-round:last-child{border-radius:var(--f7-button-height) 0 0 var(--f7-button-height)}.segmented .button:first-child:last-child{border-radius:var(--f7-button-border-radius)}.ios .segmented-raised-ios,.md .segmented-raised-md,.segmented-raised{box-shadow:var(--f7-button-raised-box-shadow)}.ios .segmented-raised-ios .button:not(.button-outline),.md .segmented-raised-md .button:not(.button-outline),.segmented-raised .button:not(.button-outline){border-right:1px solid var(--f7-segmented-raised-divider-color)}.button-raised,.ios .button-raised-ios,.md .button-raised-md{--f7-button-box-shadow:var(--f7-button-raised-box-shadow)}.button-raised.active-state,.ios .button-raised-ios.active-state,.md .button-raised-md.active-state{--f7-button-box-shadow:var(--f7-button-raised-pressed-box-shadow)}.ios .segmented-strong-ios,.md .segmented-strong-md,.segmented-strong{--f7-button-bg-color:transparent;--f7-button-hover-bg-color:var(--f7-segmented-strong-button-hover-bg-color);--f7-button-text-color:var(--f7-segmented-strong-button-text-color);--f7-button-font-weight:var(--f7-segmented-strong-button-font-weight);--f7-button-text-transform:var(--f7-segmented-strong-button-text-transform);--f7-button-pressed-bg-color:var(--f7-segmented-strong-button-pressed-bg-color);background:var(--f7-segmented-strong-bg-color);border-radius:calc(var(--f7-button-border-radius) + 2px);box-shadow:none;overflow:hidden;padding:var(--f7-segmented-strong-padding);position:relative}.ios .segmented-strong-ios .button,.md .segmented-strong-md .button,.segmented-strong .button{transform:translateZ(0);z-index:1}.ios .segmented-strong-ios .button,.ios .segmented-strong-ios .button:first-child,.ios .segmented-strong-ios .button:last-child,.md .segmented-strong-md .button,.md .segmented-strong-md .button:first-child,.md .segmented-strong-md .button:last-child,.segmented-strong .button,.segmented-strong .button:first-child,.segmented-strong .button:last-child{border-radius:var(--f7-button-border-radius)}.ios .segmented-strong-ios .button+.button,.md .segmented-strong-md .button+.button,.segmented-strong .button+.button{margin-right:var(--f7-segmented-strong-between-buttons)}.ios .segmented-strong-ios .button.button-active,.ios .segmented-strong-ios .button.tab-link-active,.md .segmented-strong-md .button.button-active,.md .segmented-strong-md .button.tab-link-active,.segmented-strong .button.button-active,.segmented-strong .button.tab-link-active{--f7-button-hover-bg-color:transparent;--f7-button-bg-color:transparent;--f7-button-text-color:var(--f7-segmented-strong-button-active-text-color);--f7-button-font-weight:var(--f7-segmented-strong-button-active-font-weight)}.ios .segmented-strong-ios .segmented-highlight,.md .segmented-strong-md .segmented-highlight,.segmented-strong .segmented-highlight{--f7-segmented-highlight-num:1;--f7-segmented-highlight-active:0;--f7-segmented-highlight-padding:calc(var(--f7-segmented-strong-padding)*2);--f7-segmented-highlight-between:var(--f7-segmented-strong-between-buttons);--f7-segmented-highlight-width:calc((100% - var(--f7-segmented-highlight-padding) - var(--f7-segmented-highlight-between)*(var(--f7-segmented-highlight-num) - 1))/var(--f7-segmented-highlight-num));background-color:var(--f7-segmented-strong-button-active-bg-color);border-radius:var(--f7-button-border-radius);box-shadow:var(--f7-segmented-strong-button-active-box-shadow);height:calc(100% - var(--f7-segmented-strong-padding)*2);left:var(--f7-segmented-strong-padding);position:absolute;top:var(--f7-segmented-strong-padding);transform:translateX(calc(var(--f7-segmented-highlight-active)*100% + var(--f7-segmented-highlight-active)*var(--f7-segmented-highlight-between)));transition:.2s;width:var(--f7-segmented-highlight-width);z-index:0}.button:nth-child(2)~.segmented-highlight{--f7-segmented-highlight-num:2}.button:nth-child(3)~.segmented-highlight{--f7-segmented-highlight-num:3}.button:nth-child(4)~.segmented-highlight{--f7-segmented-highlight-num:4}.button:nth-child(5)~.segmented-highlight{--f7-segmented-highlight-num:5}.button:nth-child(6)~.segmented-highlight{--f7-segmented-highlight-num:6}.button:nth-child(7)~.segmented-highlight{--f7-segmented-highlight-num:7}.button:nth-child(8)~.segmented-highlight{--f7-segmented-highlight-num:8}.button:nth-child(9)~.segmented-highlight{--f7-segmented-highlight-num:9}.button:nth-child(10)~.segmented-highlight{--f7-segmented-highlight-num:10}.button-active:nth-child(2)~.segmented-highlight,.tab-link-active:nth-child(2)~.segmented-highlight{--f7-segmented-highlight-active:1}.button-active:nth-child(3)~.segmented-highlight,.tab-link-active:nth-child(3)~.segmented-highlight{--f7-segmented-highlight-active:2}.button-active:nth-child(4)~.segmented-highlight,.tab-link-active:nth-child(4)~.segmented-highlight{--f7-segmented-highlight-active:3}.button-active:nth-child(5)~.segmented-highlight,.tab-link-active:nth-child(5)~.segmented-highlight{--f7-segmented-highlight-active:4}.button-active:nth-child(6)~.segmented-highlight,.tab-link-active:nth-child(6)~.segmented-highlight{--f7-segmented-highlight-active:5}.button-active:nth-child(7)~.segmented-highlight,.tab-link-active:nth-child(7)~.segmented-highlight{--f7-segmented-highlight-active:6}.button-active:nth-child(8)~.segmented-highlight,.tab-link-active:nth-child(8)~.segmented-highlight{--f7-segmented-highlight-active:7}.button-active:nth-child(9)~.segmented-highlight,.tab-link-active:nth-child(9)~.segmented-highlight{--f7-segmented-highlight-active:8}.button-active:nth-child(10)~.segmented-highlight,.tab-link-active:nth-child(10)~.segmented-highlight{--f7-segmented-highlight-active:9}.ios .segmented-round-ios,.ios .segmented-round-ios .segmented-highlight,.md .segmented-round-md,.md .segmented-round-md .segmented-highlight,.segmented-round,.segmented-round .segmented-highlight{border-radius:var(--f7-button-height)}.subnavbar .segmented{width:100%}.button-preloader{--f7-preloader-color:var(--f7-button-text-color,var(--f7-theme-color));position:relative}.button-preloader:not(.button-large){--f7-preloader-size:calc(var(--f7-button-height) - 6px)}.button-preloader.button-fill{--f7-preloader-color:#fff}.button-preloader>span:not(.preloader){align-content:center;align-items:center;display:inline-flex;justify-content:center;transform:scale(1);transition:.2s}.button-preloader>.preloader{left:50%;margin-left:calc(var(--f7-preloader-size)*-1/2);margin-top:calc(var(--f7-preloader-size)*-1/2);opacity:0;position:absolute;top:50%;transition:.2s;transition-property:opacity;visibility:hidden}.button-preloader.button-loading>span:not(.preloader){opacity:0;transform:scale(0)}.button-preloader.button-loading>.preloader{opacity:1;visibility:visible}.ios .button{transition-duration:.1s}.ios .button.active-state{background-color:var(--f7-button-pressed-bg-color,rgba(var(--f7-theme-color-rgb),.15))}.ios .button-fill,.ios .button-fill-ios{--f7-button-pressed-bg-color:var(--f7-button-fill-pressed-bg-color,var(--f7-theme-color-tint))}.ios .button-small,.ios .button-small-ios{transition-duration:.2s}.md .button{transform:translateZ(0);transition-duration:.3s}.md .button-fill,.md .button-fill-md{--f7-button-pressed-bg-color:var(--f7-button-fill-pressed-bg-color,transparent)}:root{--f7-touch-ripple-black:rgba(0,0,0,0.1);--f7-touch-ripple-white:rgba(255,255,255,0.15);--f7-touch-ripple-color:var(--f7-touch-ripple-black)}.dark{--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.actions-button,.button,.checkbox,.dialog-button,.fab a,.item-link,.link,.list-button,.radio,.ripple,.speed-dial-buttons a,.tab-link{-webkit-user-select:none;user-select:none}.ripple-wave{animation:touch-ripple-in .2s forwards;border-radius:50%;font-size:0;left:0;margin:0;padding:0;pointer-events:none;position:absolute!important;top:0;transform:translateZ(0) scale(0);z-index:-1}.ripple-wave,.ripple-wave.ripple-wave-inset{background-color:var(--f7-touch-ripple-color)}.ripple-wave.ripple-wave-inset{background-image:none}.ripple-wave.ripple-wave-out{animation:touch-ripple-out .25s forwards!important;transform:var(--f7-ripple-transform)}.actions-button .ripple-wave,.button .ripple-wave,.dialog-button .ripple-wave,.fab a .ripple-wave,.item-checkbox .ripple-wave,.item-link .ripple-wave,.item-radio .ripple-wave,.links-list a .ripple-wave,.list label.item-content .ripple-wave,.list-button .ripple-wave,.list.accordion-list .accordion-item-toggle .ripple-wave,.photo-browser .toolbar .link .ripple-wave,.ripple-blur .ripple-wave,.stepper-button .ripple-wave,.stepper-button-minus .ripple-wave,.stepper-button-plus .ripple-wave,.tab-link .ripple-wave,button .ripple-wave{animation:touch-ripple-in-blurred .25s forwards;background-color:initial;background-image:radial-gradient(closest-side circle at 50% 50%,var(--f7-touch-ripple-color) 50%,rgba(255,255,255,0))}.checkbox .ripple-wave,.data-table .sortable-cell .ripple-wave,.radio .ripple-wave{z-index:0}[class*=ripple-color-]{--f7-touch-ripple-color:var(--f7-theme-color-ripple-color)}@keyframes touch-ripple-in-blurred{0%{transform:translateZ(0) scale(.5)}to{transform:var(--f7-ripple-transform)}}@keyframes touch-ripple-in{0%{transform:translateZ(0) scale(0)}to{transform:var(--f7-ripple-transform)}}@keyframes touch-ripple-out{0%{opacity:1}to{opacity:0}}.f7-icons,.material-icons{height:1em;width:1em}i.icon{background-position:50%;background-repeat:no-repeat;background-size:100% auto;display:inline-block;font-style:normal;position:relative;vertical-align:middle}.icon-back:after,.icon-forward:after,.icon-next:after,.icon-prev:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.icon[class*=color-]{color:var(--f7-theme-color)}.ios .icon-back,.ios .icon-forward,.ios .icon-next,.ios .icon-prev{height:20px;line-height:20px;width:12px}.ios .icon-back:after,.ios .icon-forward:after,.ios .icon-next:after,.ios .icon-prev:after{line-height:inherit}.ios .icon-next:after,.ios .icon-prev:after{font-size:16px}.ios .icon-back:after,.ios .icon-prev:after{content:"chevron_right_ios"}.ios .icon-forward:after,.ios .icon-next:after{content:"chevron_left_ios"}.md .icon-back,.md .icon-forward,.md .icon-next,.md .icon-prev{height:24px;width:24px}.md .icon-back:after,.md .icon-forward:after,.md .icon-next:after,.md .icon-prev:after{line-height:1.2}.md .icon-back:after{content:"arrow_right_md"}.md .icon-forward:after{content:"arrow_left_md"}.md .icon-next:after{content:"chevron_left_md"}.md .icon-prev:after{content:"chevron_right_md"}.custom-modal-backdrop{z-index:10500}.actions-backdrop,.custom-modal-backdrop,.dialog-backdrop,.fab-backdrop,.popover-backdrop,.popup-backdrop,.preloader-backdrop,.sheet-backdrop{background:rgba(0,0,0,.4);height:100%;left:0;opacity:0;position:absolute;top:0;transition-duration:.4s;visibility:hidden;width:100%;z-index:13000}.actions-backdrop.not-animated,.custom-modal-backdrop.not-animated,.dialog-backdrop.not-animated,.fab-backdrop.not-animated,.popover-backdrop.not-animated,.popup-backdrop.not-animated,.preloader-backdrop.not-animated,.sheet-backdrop.not-animated{transition-duration:0ms}.actions-backdrop.backdrop-in,.custom-modal-backdrop.backdrop-in,.dialog-backdrop.backdrop-in,.fab-backdrop.backdrop-in,.popover-backdrop.backdrop-in,.popup-backdrop.backdrop-in,.preloader-backdrop.backdrop-in,.sheet-backdrop.backdrop-in{opacity:1;visibility:visible}:root{--f7-dialog-button-text-color:var(--f7-theme-color);--f7-dialog-button-text-align:center}.ios{--f7-dialog-width:270px;--f7-dialog-inner-padding:16px;--f7-dialog-border-radius:13px;--f7-dialog-text-align:center;--f7-dialog-font-size:14px;--f7-dialog-title-text-color:inherit;--f7-dialog-title-font-size:18px;--f7-dialog-title-font-weight:600;--f7-dialog-title-line-height:inherit;--f7-dialog-button-font-size:17px;--f7-dialog-button-height:44px;--f7-dialog-button-letter-spacing:0;--f7-dialog-button-font-weight:400;--f7-dialog-button-text-transform:none;--f7-dialog-button-strong-bg-color:transparent;--f7-dialog-button-strong-text-color:var(--f7-theme-color);--f7-dialog-button-strong-font-weight:500;--f7-dialog-input-border-radius:4px;--f7-dialog-input-font-size:14px;--f7-dialog-input-height:32px;--f7-dialog-input-border-width:1px;--f7-dialog-input-placeholder-color:#a9a9a9;--f7-dialog-preloader-size:34px;--f7-dialog-input-bg-color:#fff;--f7-dialog-bg-color:rgba(255,255,255,0.95);--f7-dialog-bg-color-rgb:255,255,255;--f7-dialog-text-color:#000;--f7-dialog-button-pressed-bg-color:rgba(0,0,0,0.1);--f7-dialog-button-strong-pressed-bg-color:rgba(0,0,0,0.1);--f7-dialog-input-border-color:rgba(0,0,0,0.3);--f7-dialog-border-divider-color:rgba(0,0,0,0.2)}.ios .dark,.ios.dark{--f7-dialog-text-color:#fff;--f7-dialog-bg-color:rgba(45,45,45,0.95);--f7-dialog-bg-color-rgb:45,45,45;--f7-dialog-button-pressed-bg-color:rgba(0,0,0,0.2);--f7-dialog-button-strong-pressed-bg-color:rgba(0,0,0,0.2);--f7-dialog-border-divider-color:rgba(255,255,255,0.15);--f7-dialog-input-border-color:rgba(255,255,255,0.15);--f7-dialog-input-bg-color:rgba(0,0,0,0.5)}.md{--f7-dialog-width:280px;--f7-dialog-inner-padding:24px;--f7-dialog-border-radius:28px;--f7-dialog-text-align:right;--f7-dialog-font-size:14px;--f7-dialog-title-font-size:24px;--f7-dialog-title-font-weight:400;--f7-dialog-title-line-height:1.3;--f7-dialog-button-font-size:14px;--f7-dialog-button-height:40px;--f7-dialog-button-letter-spacing:normal;--f7-dialog-button-font-weight:500;--f7-dialog-button-text-transform:none;--f7-dialog-button-strong-font-weight:500;--f7-dialog-input-border-radius:0px;--f7-dialog-input-font-size:16px;--f7-dialog-input-height:36px;--f7-dialog-input-border-color:transparent;--f7-dialog-input-border-width:0px;--f7-dialog-preloader-size:32px;--f7-dialog-input-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-dialog-button-pressed-bg-color:transparent;--f7-dialog-button-strong-bg-color:var(--f7-theme-color);--f7-dialog-button-strong-text-color:var(--f7-md-on-primary);--f7-dialog-button-strong-pressed-bg-color:transparent;--f7-dialog-bg-color:var(--f7-md-surface-3);--f7-dialog-input-placeholder-color:var(--f7-md-on-surface-variant);--f7-dialog-text-color:var(--f7-md-on-surface-variant);--f7-dialog-title-text-color:var(--f7-md-on-surface)}.dialog{background:var(--f7-dialog-bg-color);border-radius:var(--f7-dialog-border-radius);color:var(--f7-dialog-text-color);display:none;font-size:var(--f7-dialog-font-size);left:50%;margin-left:calc(var(--f7-dialog-width)*-1/2);margin-top:0;opacity:0;overflow:hidden;position:absolute;text-align:var(--f7-dialog-text-align);top:50%;transform:translate3d(0,-50%,0) scale(1.185);transition-duration:.4s;transition-property:transform,opacity;width:var(--f7-dialog-width);will-change:transform,opacity;z-index:13500}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .dialog{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-dialog-bg-color-rgb),.8)}}.dialog.modal-in{opacity:1;transform:translate3d(0,-50%,0) scale(1)}.dialog.modal-out{opacity:0;z-index:13499}.dialog.not-animated{transition-duration:0ms}.dialog-inner{padding:var(--f7-dialog-inner-padding);position:relative}.dialog-title{color:var(--f7-dialog-title-text-color);font-size:var(--f7-dialog-title-font-size);font-weight:var(--f7-dialog-title-font-weight);line-height:var(--f7-dialog-title-line-height)}.dialog-buttons{display:flex;flex-direction:row-reverse;position:relative}.dialog-buttons-vertical .dialog-buttons{display:block;height:auto!important}.dialog-button{box-sizing:border-box;color:var(--f7-dialog-button-text-color);cursor:pointer;display:block;font-size:var(--f7-dialog-button-font-size);font-weight:var(--f7-dialog-button-font-weight);height:var(--f7-dialog-button-height);letter-spacing:var(--f7-dialog-button-letter-spacing);line-height:var(--f7-dialog-button-height);overflow:hidden;position:relative;text-align:var(--f7-dialog-button-text-align);text-overflow:ellipsis;text-transform:var(--f7-dialog-button-text-transform);white-space:nowrap}.dialog-button.active-state{background-color:var(--f7-dialog-button-pressed-bg-color)}.dialog-button-strong{background-color:var(--f7-dialog-button-strong-bg-color);color:var(--f7-dialog-button-strong-text-color);font-weight:var(--f7-dialog-button-strong-font-weight)}.dialog-button-strong.active-state{background-color:var(--f7-dialog-button-strong-pressed-bg-color)}.dialog-no-buttons .dialog-buttons{display:none}.dialog-input-field{position:relative}input.dialog-input[type]{-webkit-appearance:none;appearance:none;background-color:var(--f7-dialog-input-bg-color);border:var(--f7-dialog-input-border-width) solid var(--f7-dialog-input-border-color);border-radius:var(--f7-dialog-input-border-radius);box-shadow:none;box-sizing:border-box;display:block;font-family:inherit;font-size:var(--f7-dialog-input-font-size);height:var(--f7-dialog-input-height);margin:15px 0 0;width:100%}input.dialog-input[type]::placeholder{color:var(--f7-dialog-input-placeholder-color)}.dialog-input-double input.dialog-input{border-radius:var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius) 0 0}.dialog-input-double+.dialog-input-double input.dialog-input{border-radius:0 0 var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius)}.dialog-preloader .preloader{--f7-preloader-size:var(--f7-dialog-preloader-size)}html.with-modal-dialog .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}.ios .dialog.modal-out{transform:translate3d(0,-50%,0) scale(1)}.ios .dialog-inner{border-radius:var(--f7-dialog-border-radius) var(--f7-dialog-border-radius) 0 0}.ios .dialog-inner:after{background-color:var(--f7-dialog-border-divider-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .dialog-title+.dialog-text{margin-top:5px}.ios .dialog-buttons{height:44px;justify-content:center}.ios .dialog-button{-webkit-box-flex:1;-ms-flex:1;padding:0 5px;width:100%}.ios .dialog-button:after{background-color:var(--f7-dialog-border-divider-color);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.ios .dialog-button:first-child{border-radius:0 0 0 var(--f7-dialog-border-radius)}.ios .dialog-button:last-child{border-radius:0 0 var(--f7-dialog-border-radius) 0}.ios .dialog-button:last-child:after{display:none!important}.ios .dialog-button:first-child:last-child{border-radius:0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius)}.ios .dialog-button[class*=color-]{--f7-dialog-button-text-color:var(--f7-theme-color)}.ios .dialog-buttons-vertical .dialog-buttons{height:auto}.ios .dialog-buttons-vertical .dialog-button{border-radius:0}.ios .dialog-buttons-vertical .dialog-button:after{background-color:var(--f7-dialog-border-divider-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .dialog-buttons-vertical .dialog-button:last-child{border-radius:0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius)}.ios .dialog-buttons-vertical .dialog-button:last-child:after{display:none!important}.ios .dialog-no-buttons .dialog-inner{border-radius:var(--f7-dialog-border-radius)}.ios .dialog-no-buttons .dialog-inner:after{display:none!important}.ios .dialog-input-field{margin-top:15px}.ios .dialog-input{padding:0 5px}.ios .dialog-input+.dialog-input{margin-top:5px}.ios .dialog-input-double+.dialog-input-double{margin-top:0}.ios .dialog-input-double+.dialog-input-double .dialog-input{border-top:0;margin-top:0}.ios .dialog-preloader .dialog-text~.preloader,.ios .dialog-preloader .dialog-title~.preloader,.ios .dialog-progress .dialog-text~.progressbar,.ios .dialog-progress .dialog-text~.progressbar-infinite,.ios .dialog-progress .dialog-title~.progressbar,.ios .dialog-progress .dialog-title~.progressbar-infinite{margin-top:15px}.md .dialog.modal-out{transform:translate3d(0,-50%,0) scale(.815)}.md .dialog-title+.dialog-text{margin-top:20px}.md .dialog-text{line-height:1.5}.md .dialog-buttons{box-sizing:border-box;height:64px;justify-content:flex-end;overflow:hidden;padding:0 24px 24px}.md .dialog-button{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25);border:none;border-radius:99px;min-width:64px;padding:0 16px;transform:translateZ(0);transition-duration:.3s}.md .dialog-button+.dialog-button{margin-left:8px}.md .dialog-button-strong{--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.md .dialog-button[class*=color-]{--f7-dialog-button-text-color:var(--f7-theme-color)}.md .dialog-buttons-vertical .dialog-buttons{align-items:flex-end;display:flex;flex-direction:column}.md .dialog-buttons-vertical .dialog-button+.dialog-button{margin-left:0;margin-top:8px}.md .dialog-input{padding:0;position:relative;transition-duration:.2s}.md .dialog-input+.dialog-input{margin-top:16px}.md .dialog-preloader .dialog-inner,.md .dialog-preloader .dialog-title,.md .dialog-progress .dialog-inner,.md .dialog-progress .dialog-title{text-align:center}.md .dialog-preloader .dialog-text~.preloader,.md .dialog-preloader .dialog-title~.preloader{margin-top:20px}.md .dialog-progress .dialog-text~.progressbar,.md .dialog-progress .dialog-text~.progressbar-infinite,.md .dialog-progress .dialog-title~.progressbar,.md .dialog-progress .dialog-title~.progressbar-infinite{margin-top:16px}:root{--f7-popup-border-radius:0px;--f7-popup-tablet-width:630px;--f7-popup-tablet-height:630px;--f7-popup-push-offset:var(--f7-safe-area-top)}.ios{--f7-popup-tablet-border-radius:5px;--f7-popup-transition-duration:400ms;--f7-popup-transition-timing-function:initial;--f7-popup-push-border-radius:10px}.md{--f7-popup-tablet-border-radius:28px;--f7-popup-transition-duration:600ms;--f7-popup-transition-timing-function:cubic-bezier(0,1,0.2,1);--f7-popup-push-border-radius:28px}.popup-backdrop{z-index:10500}.popup,.popup-backdrop-unique{z-index:11000}.popup{background:#fff;border-radius:var(--f7-popup-border-radius);box-sizing:border-box;display:none;height:100%;left:0;overflow:hidden;position:absolute;top:0;transform:translate3d(0,100vh,0);transition-property:transform;transition-timing-function:var(--f7-popup-transition-timing-function);width:100%}.dark .popup,.popup.dark{background:#000}.popup.modal-in,.popup.modal-out{transition-duration:var(--f7-popup-transition-duration)}.popup.not-animated{transition-duration:0ms}.popup.modal-in{display:block;transform:translateZ(0)}.popup.modal-out{transform:translate3d(0,100vh,0)}.popup.swipe-close-to-top.modal-out{transform:translate3d(0,-100vh,0)}@media (min-width:630px) and (min-height:630px){.popup:not(.popup-tablet-fullscreen){--f7-safe-area-top:0px;--f7-safe-area-bottom:0px;border-radius:var(--f7-popup-tablet-border-radius,var(--f7-popup-border-radius));height:var(--f7-popup-tablet-height);left:50%;margin-left:calc(var(--f7-popup-tablet-width)*-1/2);margin-top:calc(var(--f7-popup-tablet-height)*-1/2);top:50%;transform:translate3d(0,100vh,0);width:var(--f7-popup-tablet-width)}.popup:not(.popup-tablet-fullscreen).modal-in{transform:translateZ(0)}.popup:not(.popup-tablet-fullscreen).modal-out{transform:translate3d(0,100vh,0)}.popup:not(.popup-tablet-fullscreen).swipe-close-to-top.modal-out{transform:translate3d(0,-100vh,0)}.popup:not(.popup-tablet-fullscreen).popup-behind{pointer-events:none;transform:translateZ(0) scale(.9)}.popup:not(.popup-tablet-fullscreen).popup-behind.modal-out{transform:translate3d(0,100vh,0) scale(.9)}html.with-modal-popup-push .popup-push:not(.popup-tablet-fullscreen){margin-top:0}}html.with-modal-popup .framework7-root>.panel .page-content,html.with-modal-popup .framework7-root>.view .page-content,html.with-modal-popup .framework7-root>.views .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}html.with-modal-popup-push .popup-push,html.with-modal-popup-push-closing .popup-push{--f7-safe-area-top:0px;border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;height:calc(100% - var(--f7-popup-push-offset) - 10px);top:calc(var(--f7-popup-push-offset) + 10px)}html.with-modal-popup-push .popup-push .page,html.with-modal-popup-push .popup-push .view,html.with-modal-popup-push-closing .popup-push .page,html.with-modal-popup-push-closing .popup-push .view{--f7-safe-area-top:0px}html.with-modal-popup-push .framework7-root,html.with-modal-popup-push-closing .framework7-root{background:#000}html.with-modal-popup-push .framework7-root>.view,html.with-modal-popup-push .framework7-root>.views,html.with-modal-popup-push-closing .framework7-root>.view,html.with-modal-popup-push-closing .framework7-root>.views{transition-duration:var(--f7-popup-transition-duration);transition-timing-function:var(--f7-popup-transition-timing-function)}html.with-modal-popup-push .dark .framework7-root>.view:after,html.with-modal-popup-push .dark .framework7-root>.views:after,html.with-modal-popup-push .dark.framework7-root>.view:after,html.with-modal-popup-push .dark.framework7-root>.views:after,html.with-modal-popup-push .framework7-root>.view.dark:after,html.with-modal-popup-push .framework7-root>.views.dark:after,html.with-modal-popup-push-closing .dark .framework7-root>.view:after,html.with-modal-popup-push-closing .dark .framework7-root>.views:after,html.with-modal-popup-push-closing .dark.framework7-root>.view:after,html.with-modal-popup-push-closing .dark.framework7-root>.views:after,html.with-modal-popup-push-closing .framework7-root>.view.dark:after,html.with-modal-popup-push-closing .framework7-root>.views.dark:after,html.with-modal-popup-push-closing.dark .framework7-root>.view:after,html.with-modal-popup-push-closing.dark .framework7-root>.views:after,html.with-modal-popup-push.dark .framework7-root>.view:after,html.with-modal-popup-push.dark .framework7-root>.views:after{animation:popup-dark-push-overlay-fade-in var(--f7-popup-transition-duration) forwards;background:rgba(255,255,255,.1);border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;content:"";height:100%;left:0;opacity:1;pointer-events:none;position:absolute;top:0;width:100%;z-index:13000}html.with-modal-popup-push .framework7-root>.view,html.with-modal-popup-push .framework7-root>.views{border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;transform:translateZ(0) scale(var(--f7-popup-push-scale,1))!important}html.with-modal-popup-push .popup:after{background:rgba(0,0,0,.4);border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;content:"";height:100%;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transition-duration:var(--f7-popup-transition-duration);transition-timing-function:var(--f7-popup-transition-timing-function);width:100%;z-index:13000}html.with-modal-popup-push .dark .popup:after,html.with-modal-popup-push .dark.popup:after,html.with-modal-popup-push.dark .popup:after{background:rgba(255,255,255,.05)}html.with-modal-popup-push .popup-behind{transform:translateZ(0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind.modal-out{transform:translate3d(0,100vh,0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind:not(.popup-push){border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0}html.with-modal-popup-push .popup-behind.popup-push{transform:translate3d(0,calc(-10px - var(--f7-popup-push-offset)),0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind.popup-push.modal-out{transform:translate3d(0,calc(-10px - var(--f7-popup-push-offset) + 100vh),0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind:after{opacity:1;pointer-events:auto}html.with-modal-popup-push-closing .dark .framework7-root>.view:after,html.with-modal-popup-push-closing .dark .framework7-root>.views:after,html.with-modal-popup-push-closing .dark.framework7-root>.view:after,html.with-modal-popup-push-closing .dark.framework7-root>.views:after,html.with-modal-popup-push-closing .framework7-root>.view.dark:after,html.with-modal-popup-push-closing .framework7-root>.views.dark:after,html.with-modal-popup-push-closing.dark .framework7-root>.view:after,html.with-modal-popup-push-closing.dark .framework7-root>.views:after{animation:popup-dark-push-overlay-fade-out var(--f7-popup-transition-duration) forwards;animation-timing-function:var(--f7-popup-transition-timing-function)}@keyframes popup-dark-push-overlay-fade-in{0%{opacity:0}to{opacity:1}}@keyframes popup-dark-push-overlay-fade-out{0%{opacity:1}to{opacity:0}}:root{--f7-login-screen-blocks-max-width:480px;--f7-login-screen-title-text-align:center;--f7-login-screen-title-text-color:inherit;--f7-login-screen-title-letter-spacing:0}.ios{--f7-login-screen-blocks-margin-vertical:25px;--f7-login-screen-transition-timing-function:initial;--f7-login-screen-transition-duration:400ms;--f7-login-screen-title-font-weight:600;--f7-login-screen-title-font-size:28px;--f7-login-screen-content-bg-color:#fff;--f7-login-screen-bg-color:#fff}.ios .dark,.ios.dark{--f7-login-screen-bg-color:#000;--f7-login-screen-content-bg-color:#000}.md{--f7-login-screen-transition-duration:600ms;--f7-login-screen-transition-timing-function:cubic-bezier(0,1,0.2,1);--f7-login-screen-blocks-margin-vertical:24px;--f7-login-screen-title-font-weight:400;--f7-login-screen-title-font-size:28px}.md,.md .dark,.md [class*=color-]{--f7-login-screen-content-bg-color:var(--f7-md-surface);--f7-login-screen-bg-color:var(--f7-md-surface)}.login-screen{background:var(--f7-login-screen-bg-color);box-sizing:border-box;display:none;height:100%;left:0;position:absolute;top:0;transform:translate3d(0,100vh,0);transition-property:transform;transition-timing-function:var(--f7-login-screen-transition-timing-function);width:100%;z-index:11000}.login-screen.modal-in,.login-screen.modal-out{transition-duration:var(--f7-login-screen-transition-duration)}.login-screen.not-animated{transition-duration:0ms}.login-screen.modal-in{display:block;transform:translateZ(0)}.login-screen.modal-out{transform:translate3d(0,100%,0)}.login-screen .page,.login-screen-content,.login-screen-page{background:var(--f7-login-screen-content-bg-color)}.login-screen-content .block,.login-screen-content .list,.login-screen-content .login-screen-title,.login-screen-page .block,.login-screen-page .list,.login-screen-page .login-screen-title{margin:var(--f7-login-screen-blocks-margin-vertical) auto}.login-screen-content .block,.login-screen-content .block-footer,.login-screen-content .block-header,.login-screen-content .list,.login-screen-content .login-screen-title,.login-screen-page .block,.login-screen-page .block-footer,.login-screen-page .block-header,.login-screen-page .list,.login-screen-page .login-screen-title{max-width:var(--f7-login-screen-blocks-max-width)}.login-screen-content .list ul,.login-screen-page .list ul{background:none}.login-screen-content .list ul:after,.login-screen-content .list ul:before,.login-screen-page .list ul:after,.login-screen-page .list ul:before{display:none!important}.login-screen-content .block-footer,.login-screen-content .block-header,.login-screen-page .block-footer,.login-screen-page .block-header{margin-left:auto;margin-right:auto;text-align:center}.login-screen-title{color:var(--f7-login-screen-title-text-color);font-size:var(--f7-login-screen-title-font-size);font-weight:var(--f7-login-screen-title-font-weight);letter-spacing:var(--f7-login-screen-title-letter-spacing);text-align:var(--f7-login-screen-title-text-align)}.login-screen-page,.login-screen>.page,.login-screen>.view>.page{display:flex;flex-direction:column}.login-screen-page .login-screen-content,.login-screen-page .page-content,.login-screen>.page .login-screen-content,.login-screen>.page .page-content,.login-screen>.view>.page .login-screen-content,.login-screen>.view>.page .page-content{height:auto;margin-bottom:auto;margin-top:auto;max-height:100%;width:100%}.dark .login-screen-content .block-strong,.dark .login-screen-content .list ul,.dark .login-screen-page .block-strong,.dark .login-screen-page .list ul,.dark.login-screen-page .block-strong,.dark.login-screen-page .list ul{background-color:initial}:root{--f7-popover-width:260px}.ios{--f7-popover-border-radius:13px;--f7-popover-actions-icon-size:28px;--f7-popover-transition-timing-function:initial;--f7-popover-bg-color:rgba(255,255,255,0.95);--f7-popover-actions-label-text-color:rgba(0,0,0,0.45)}.ios .dark,.ios.dark{--f7-popover-bg-color:rgba(30,30,30,0.95);--f7-popover-actions-label-text-color:rgba(255,255,255,0.55)}.md{--f7-popover-transition-timing-function:cubic-bezier(0,0.8,0.34,1);--f7-popover-border-radius:28px;--f7-popover-actions-icon-size:24px}.md,.md .dark,.md [class*=color-]{--f7-popover-bg-color:var(--f7-md-surface-3);--f7-popover-actions-label-text-color:var(--f7-md-on-surface-variant)}.popover,.popover-backdrop-unique{z-index:13500}.popover{--f7-safe-area-top:0px;--f7-safe-area-left:0px;--f7-safe-area-right:0px;--f7-safe-area-bottom:0px;background-color:var(--f7-popover-bg-color);border-radius:var(--f7-popover-border-radius);display:none;left:0;margin:0;opacity:0;position:absolute;top:0;transition-duration:.3s;width:var(--f7-popover-width);will-change:transform,opacity}.popover .list{margin:0}.popover .list ul{background:none}.popover .list:first-child ul:before,.popover .list:last-child ul:after{display:none!important}.popover .list:first-child li:first-child,.popover .list:first-child li:first-child a,.popover .list:first-child li:first-child>label,.popover .list:first-child ul{border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0}.popover .list:last-child li:last-child,.popover .list:last-child li:last-child a,.popover .list:last-child li:last-child>label,.popover .list:last-child ul{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.popover .list:first-child:last-child li:first-child:last-child,.popover .list:first-child:last-child li:first-child:last-child a,.popover .list:first-child:last-child li:first-child:last-child>label,.popover .list:first-child:last-child ul{border-radius:var(--f7-popover-border-radius)}.popover .list+.list{margin-top:var(--f7-list-margin-vertical)}.popover.modal-in{opacity:1}.popover.not-animated{transition-duration:0ms}.popover,.popover-backdrop{transition-timing-function:var(--f7-popover-transition-timing-function)}.popover-inner{-webkit-overflow-scrolling:touch;overflow:auto}.popover-from-actions .item-link i.icon{font-size:var(--f7-popover-actions-icon-size);height:var(--f7-popover-actions-icon-size);width:var(--f7-popover-actions-icon-size)}.ios .popover-from-actions-strong{font-weight:600}.md .popover-from-actions-strong{font-weight:500}.popover-from-actions-label{align-items:center;color:var(--f7-popover-actions-label-text-color);display:flex;font-size:var(--f7-actions-label-font-size);justify-content:var(--f7-actions-label-justify-content);line-height:1.3;padding:var(--f7-actions-label-padding);position:relative}.popover-from-actions-label:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.popover-from-actions-label:last-child:after{display:none!important}.md .popover-from-actions-label{justify-content:center}.popover-arrow{left:-26px;overflow:hidden;z-index:100}.popover-arrow,.popover-arrow:after{height:26px;position:absolute;top:0;width:26px}.popover-arrow:after{background:var(--f7-popover-bg-color);border-radius:3px;content:"";left:0;transform:rotate(45deg)}.popover-arrow.on-left{left:-26px}.popover-arrow.on-left:after{left:19px;top:0}.popover-arrow.on-right{left:100%}.popover-arrow.on-right:after{left:-19px;top:0}.popover-arrow.on-top{left:0;top:-26px}.popover-arrow.on-top:after{left:0;top:19px}.popover-arrow.on-bottom{left:0;top:100%}.popover-arrow.on-bottom:after{left:0;top:-19px}.ios .popover{transform:none;transition-property:opacity}.md .popover{transform:scale(.85,.6);transition-property:opacity,transform}.md .popover.modal-in{opacity:1;transform:scale(1)}.md .popover.modal-out{opacity:0;transform:scale(1)}.md .popover-on-top{transform-origin:center bottom}.md .popover-on-top.popover-on-right{transform-origin:left bottom}.md .popover-on-top.popover-on-left{transform-origin:right bottom}.md .popover-on-middle{transform-origin:center center}.md .popover-on-middle.popover-on-right{transform-origin:left center}.md .popover-on-middle.popover-on-left{transform-origin:right center}.md .popover-on-bottom{transform-origin:center top}.md .popover-on-bottom.popover-on-right{transform-origin:left top}.md .popover-on-bottom.popover-on-left{transform-origin:right top}:root{--f7-actions-grid-button-font-size:12px;--f7-actions-grid-button-icon-size:48px}.ios{--f7-actions-transition-timing-function:initial;--f7-actions-border-radius:13px;--f7-actions-grid-button-text-color:#757575;--f7-actions-button-padding:0px;--f7-actions-button-text-align:center;--f7-actions-button-height:57px;--f7-actions-button-height-landscape:44px;--f7-actions-button-font-size:20px;--f7-actions-button-icon-size:28px;--f7-actions-button-justify-content:center;--f7-actions-label-padding:8px 10px;--f7-actions-label-font-weight:400;--f7-actions-label-font-size:13px;--f7-actions-label-justify-content:center;--f7-actions-group-border-color:transparent;--f7-actions-group-margin:8px;--f7-actions-bg-color:rgba(255,255,255,0.95);--f7-actions-bg-color-rgb:255,255,255;--f7-actions-button-border-color:rgba(0,0,0,0.2);--f7-actions-button-pressed-bg-color:rgba(230,230,230,0.9);--f7-actions-button-pressed-bg-color-rgb:230,230,230;--f7-actions-label-text-color:#8a8a8a}.ios .dark,.ios.dark{--f7-actions-bg-color:rgba(45,45,45,0.95);--f7-actions-bg-color-rgb:45,45,45;--f7-actions-button-border-color:rgba(255,255,255,0.15);--f7-actions-button-pressed-bg-color:rgba(50,50,50,0.9);--f7-actions-button-pressed-bg-color-rgb:50,50,50;--f7-actions-label-text-color:rgba(255,255,255,0.55)}.md{--f7-actions-transition-timing-function:cubic-bezier(0,0.8,0.34,1);--f7-actions-border-radius:16px;--f7-actions-button-border-color:transparent;--f7-actions-button-padding:0 16px;--f7-actions-button-text-align:left;--f7-actions-button-height:48px;--f7-actions-button-height-landscape:48px;--f7-actions-button-font-size:16px;--f7-actions-button-icon-size:24px;--f7-actions-button-justify-content:space-between;--f7-actions-label-padding:12px 16px;--f7-actions-label-font-size:14px;--f7-actions-label-font-weight:500;--f7-actions-label-justify-content:flex-start;--f7-actions-group-margin:0px;--f7-actions-button-pressed-bg-color:#e5e5e5}.md .dark,.md.dark{--f7-actions-button-pressed-bg-color:#2e2e2e}.md,.md .dark,.md [class*=color-]{--f7-actions-button-text-color:var(--f7-md-on-surface);--f7-actions-bg-color:var(--f7-md-surface-3);--f7-actions-group-border-color:var(--f7-md-outline);--f7-actions-label-text-color:var(--f7-theme-color);--f7-actions-grid-button-text-color:var(--f7-md-on-surface)}.actions-backdrop-unique{z-index:13500}.actions-modal{-webkit-overflow-scrolling:touch;bottom:0;display:none;left:0;max-height:100%;overflow:auto;position:absolute;transform:translate3d(0,100%,0);transition-property:transform;width:100%;will-change:transform;z-index:13500}.actions-modal.modal-in,.actions-modal.modal-out{transition-duration:.3s}.actions-modal.not-animated{transition-duration:0ms}.ios .actions-modal.modal-in{transform:translate3d(0,calc(var(--f7-safe-area-bottom)*-1),0)}.md .actions-modal.modal-in{transform:translateZ(0)}.actions-modal.modal-out{transform:translate3d(0,100%,0);z-index:13499}@media (min-width:496px){.actions-modal{left:50%;margin-left:-240px;width:480px}}@media (orientation:landscape){.actions-modal{--f7-actions-button-height:var(--f7-actions-button-height-landscape)}}.actions-backdrop,.actions-modal{transition-timing-function:var(--f7-actions-transition-timing-function)}.actions-group{margin:var(--f7-actions-group-margin);overflow:hidden;position:relative;transform:translateZ(0)}.actions-group:after{background-color:var(--f7-actions-group-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.actions-group:last-child:after{display:none!important}.actions-button,.actions-label{box-sizing:border-box;display:block;font-weight:400;margin:0;overflow:hidden;position:relative;text-align:var(--f7-actions-button-text-align);width:100%}.actions-button:after,.actions-label:after{background-color:var(--f7-actions-button-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.actions-button a,.actions-label a{color:inherit;display:block;text-decoration:none}.actions-button{color:var(--f7-actions-button-text-color,var(--f7-theme-color));cursor:pointer;display:flex;font-size:var(--f7-actions-button-font-size);height:var(--f7-actions-button-height);justify-content:var(--f7-actions-button-justify-content);line-height:var(--f7-actions-button-height);padding:var(--f7-actions-button-padding);z-index:10}.actions-button.active-state{background-color:var(--f7-actions-button-pressed-bg-color)!important}.actions-button[class*=color-]{color:var(--f7-theme-color)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .actions-button.active-state{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-actions-button-pressed-bg-color-rgb),.8)}}.actions-button-media{align-items:center;display:flex;flex-shrink:0}.actions-button-media i.icon{font-size:var(--f7-actions-button-icon-size);height:var(--f7-actions-button-icon-size);width:var(--f7-actions-button-icon-size)}.actions-button a,.actions-button-text{overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}.actions-button-text{flex-shrink:1;text-align:var(--f7-actions-button-text-align);width:100%}.actions-label{align-items:center;color:var(--f7-actions-label-text-color);display:flex;font-size:var(--f7-actions-label-font-size);font-weight:var(--f7-actions-label-font-weight);justify-content:var(--f7-actions-label-justify-content);line-height:1.3;min-height:var(--f7-actions-label-min-height,var(--f7-actions-button-height));padding:var(--f7-actions-label-padding)}.actions-label[class*=" color-"]{--f7-actions-label-text-color:var(--f7-theme-color)}.actions-grid .actions-group{display:flex;flex-wrap:wrap;justify-content:flex-start;margin-top:0}.actions-grid .actions-group:not(:last-child){margin-bottom:0}.actions-grid .actions-button,.actions-grid .actions-label{background:none}.actions-grid .actions-button{color:var(--f7-actions-grid-button-text-color);display:block;height:auto;line-height:1;padding:16px;width:33.33333333%}.actions-grid .actions-button:after{display:none!important}.actions-grid .actions-button-media{margin-left:auto!important;margin-right:auto!important}.actions-grid .actions-button-media,.actions-grid .actions-button-media i.icon{height:var(--f7-actions-grid-button-icon-size);width:var(--f7-actions-grid-button-icon-size)}.actions-grid .actions-button-media i.icon{font-size:var(--f7-actions-grid-button-icon-size)}.actions-grid .actions-button-text{font-size:var(--f7-actions-grid-button-font-size);height:1.33em;line-height:1.33em;margin-left:0!important;margin-top:8px;text-align:center!important}.ios .actions-group{border-radius:var(--f7-actions-border-radius)}.ios .actions-button,.ios .actions-label{background:var(--f7-actions-bg-color)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .ios .actions-button,.ios-translucent-modals .ios .actions-label{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-actions-bg-color-rgb),.8)}}.ios .actions-button:first-child,.ios .actions-label:first-child{border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0}.ios .actions-button:last-child,.ios .actions-label:last-child{border-radius:0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius)}.ios .actions-button:last-child:after,.ios .actions-label:last-child:after{display:none!important}.ios .actions-button:first-child:last-child,.ios .actions-label:first-child:last-child{border-radius:var(--f7-actions-border-radius)}.ios .actions-button b,.ios .actions-button.actions-button-strong,.ios .actions-label b,.ios .actions-label.actions-button-strong{font-weight:600}.ios .actions-grid .actions-group{background:var(--f7-actions-bg-color);border-radius:0}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .ios .actions-grid .actions-group{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-actions-bg-color-rgb),.8)}}.ios .actions-grid .actions-group:first-child{border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0}.ios .actions-grid .actions-group:last-child{border-radius:0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius)}.ios .actions-grid .actions-group:first-child:last-child{border-radius:var(--f7-actions-border-radius)}.ios .actions-grid .actions-button,.ios .actions-grid .actions-label{border-radius:0!important}.ios .actions-button-media{margin-left:16px}.ios .actions-button-media+.actions-button-text{margin-left:16px;text-align:left}.md .actions-modal{background-color:var(--f7-actions-bg-color);border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;padding-bottom:var(--f7-safe-area-bottom)}.md .actions-button{transition-duration:.3s}.md .actions-button b,.md .actions-button.actions-button-strong,.md .actions-label b,.md .actions-label.actions-button-strong{font-weight:500}.md .actions-button-media{min-width:40px}.md .actions-button-media+.actions-button-text{margin-left:16px}:root{--f7-sheet-height:260px;--f7-sheet-push-offset:var(--f7-safe-area-top)}.ios{--f7-sheet-border-radius:0px;--f7-sheet-border-color:var(--f7-bars-border-color);--f7-sheet-transition-timing-function:initial;--f7-sheet-push-border-radius:10px;--f7-sheet-transition-duration:300ms;--f7-sheet-bg-color:#fff}.ios .dark,.ios.dark{--f7-sheet-bg-color:#202020}.md{--f7-sheet-border-radius:16px;--f7-sheet-push-border-radius:16px;--f7-sheet-border-color:transparent;--f7-sheet-transition-timing-function:cubic-bezier(0,0.8,0.34,1);--f7-sheet-transition-duration:400ms}.md,.md .dark,.md [class*=color-]{--f7-sheet-bg-color:var(--f7-md-surface)}.sheet-backdrop{z-index:11000}.sheet-backdrop-unique,.sheet-modal{z-index:12500}.sheet-modal{background:var(--f7-sheet-bg-color);bottom:0;box-sizing:border-box;display:none;height:var(--f7-sheet-height);left:0;overflow:hidden;position:absolute;transform:translate3d(0,100%,0);transition-property:transform;width:100%;will-change:transform,opacity}.sheet-modal.modal-in,.sheet-modal.modal-out{transition-duration:var(--f7-sheet-transition-duration)}.sheet-modal.not-animated{transition-duration:0ms}.sheet-modal.modal-in{display:block;transform:translateZ(0)}.sheet-modal.modal-in-breakpoint,.sheet-modal.modal-in-swipe-step{display:block;transform:translate3d(0,var(--f7-sheet-breakpoint,var(--f7-sheet-swipe-step,0)),0)}.sheet-modal.modal-out{transform:translate3d(0,100%,0)}.sheet-modal .sheet-modal-inner{height:100%;overflow:hidden;position:relative}.sheet-modal .toolbar{--f7-safe-area-bottom:0px;position:relative;width:100%}.sheet-modal .toolbar:after,.sheet-modal .toolbar:before{display:none}.sheet-modal .toolbar+.sheet-modal-inner{height:calc(100% - var(--f7-toolbar-height))}.sheet-modal .toolbar+.sheet-modal-inner .page-content{--f7-page-toolbar-top-offset:0px;--f7-page-toolbar-bottom-offset:0px}.sheet-backdrop,.sheet-modal{transition-timing-function:var(--f7-sheet-transition-timing-function)}.sheet-modal-top{border-radius:0 0 var(--f7-sheet-border-radius) var(--f7-sheet-border-radius)}.sheet-modal-top:after{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-sheet-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;transform-style:preserve-3d;width:100%;z-index:15;z-index:700}.sheet-modal-bottom,.sheet-modal:not(.sheet-modal-top){--f7-safe-area-top:0px;border-radius:var(--f7-sheet-border-radius) var(--f7-sheet-border-radius) 0 0}.sheet-modal-bottom:before,.sheet-modal:not(.sheet-modal-top):before{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-sheet-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;transform-style:preserve-3d;width:100%;z-index:15;z-index:700}.sheet-modal-top{--f7-safe-area-bottom:0px;bottom:auto;top:0}.sheet-modal-top,.sheet-modal-top.modal-out{transform:translate3d(0,-100%,0)}.sheet-modal-top .toolbar-bottom{position:absolute}.sheet-modal-top .page-content{padding-top:var(--f7-safe-area-top)}html.with-modal-sheet-push .sheet-modal-push,html.with-modal-sheet-push-closing .sheet-modal-push{--f7-sheet-border-color:transparent;border-radius:var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius) 0 0;overflow:hidden}html.with-modal-sheet-push .sheet-modal-push .page,html.with-modal-sheet-push .sheet-modal-push .view,html.with-modal-sheet-push-closing .sheet-modal-push .page,html.with-modal-sheet-push-closing .sheet-modal-push .view{--f7-safe-area-top:0px}html.with-modal-sheet-push .sheet-modal-push.sheet-modal-top,html.with-modal-sheet-push-closing .sheet-modal-push.sheet-modal-top{border-radius:0 0 var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius)}html.with-modal-sheet-push .framework7-root,html.with-modal-sheet-push-closing .framework7-root{background:#000}html.with-modal-sheet-push .framework7-root>.view,html.with-modal-sheet-push .framework7-root>.views,html.with-modal-sheet-push-closing .framework7-root>.view,html.with-modal-sheet-push-closing .framework7-root>.views{transition-duration:var(--f7-sheet-transition-duration);transition-timing-function:var(--f7-sheet-transition-timing-function)}html.with-modal-sheet-push .dark .framework7-root>.view:after,html.with-modal-sheet-push .dark .framework7-root>.views:after,html.with-modal-sheet-push .dark.framework7-root>.view:after,html.with-modal-sheet-push .dark.framework7-root>.views:after,html.with-modal-sheet-push .framework7-root>.view.dark:after,html.with-modal-sheet-push .framework7-root>.views.dark:after,html.with-modal-sheet-push-closing .dark .framework7-root>.view:after,html.with-modal-sheet-push-closing .dark .framework7-root>.views:after,html.with-modal-sheet-push-closing .dark.framework7-root>.view:after,html.with-modal-sheet-push-closing .dark.framework7-root>.views:after,html.with-modal-sheet-push-closing .framework7-root>.view.dark:after,html.with-modal-sheet-push-closing .framework7-root>.views.dark:after,html.with-modal-sheet-push-closing.dark .framework7-root>.view:after,html.with-modal-sheet-push-closing.dark .framework7-root>.views:after,html.with-modal-sheet-push.dark .framework7-root>.view:after,html.with-modal-sheet-push.dark .framework7-root>.views:after{animation:sheet-dark-push-overlay-fade-in var(--f7-sheet-transition-duration);animation-timing-function:var(--f7-sheet-transition-timing-function);background:rgba(255,255,255,.1);content:"";height:100%;left:0;opacity:1;pointer-events:none;position:absolute;top:0;transition-duration:var(--f7-sheet-transition-duration);transition-timing-function:var(--f7-sheet-transition-timing-function);width:100%;z-index:13000}html.with-modal-sheet-push .framework7-root>.view,html.with-modal-sheet-push .framework7-root>.views{border-radius:var(--f7-sheet-push-border-radius);transform:translateZ(0) scale(var(--f7-sheet-push-scale,1))!important}html.with-modal-sheet-push-closing .dark .framework7-root>.view:after,html.with-modal-sheet-push-closing .dark .framework7-root>.views:after,html.with-modal-sheet-push-closing .dark.framework7-root>.view:after,html.with-modal-sheet-push-closing .dark.framework7-root>.views:after,html.with-modal-sheet-push-closing .framework7-root>.view.dark:after,html.with-modal-sheet-push-closing .framework7-root>.views.dark:after,html.with-modal-sheet-push-closing.dark .framework7-root>.view:after,html.with-modal-sheet-push-closing.dark .framework7-root>.views:after{animation:none;opacity:0}@keyframes sheet-dark-push-overlay-fade-in{0%{opacity:0}to{opacity:1}}.md .sheet-modal .toolbar a.link:not(.tab-link){flex-shrink:0}:root{--f7-toast-font-size:14px;--f7-toast-icon-size:48px;--f7-toast-max-width:568px}.ios{--f7-toast-text-color:#fff;--f7-toast-bg-color:rgba(0,0,0,0.75);--f7-toast-bg-color-rgb:0,0,0;--f7-toast-padding-horizontal:16px;--f7-toast-padding-vertical:12px;--f7-toast-border-radius:8px;--f7-toast-button-min-width:64px}.md{--f7-toast-padding-horizontal:24px;--f7-toast-padding-vertical:14px;--f7-toast-border-radius:16px;--f7-toast-button-min-width:64px}.md,.md .dark,.md [class*=color-]{--f7-toast-text-color:var(--f7-md-on-surface);--f7-toast-bg-color:var(--f7-md-surface-5)}.toast{background-color:var(--f7-toast-bg-color);box-sizing:border-box;color:var(--f7-toast-text-color);font-size:var(--f7-toast-font-size);max-width:var(--f7-toast-max-width);opacity:0;position:absolute;transition-property:transform,opacity;z-index:20000}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .toast{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-toast-bg-color-rgb),.8)}}.toast.modal-in{opacity:1}.toast .toast-content{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;padding:var(--f7-toast-padding-vertical) var(--f7-toast-padding-horizontal)}.toast .toast-text{flex-shrink:1;line-height:20px;min-width:0}.toast .toast-button{flex-shrink:0;margin-bottom:-8px;margin-top:-8px;min-width:var(--f7-toast-button-min-width)}.toast.toast-with-icon .toast-content{display:block;text-align:center}.toast.toast-with-icon .toast-text{text-align:center}.toast.toast-with-icon .toast-icon .f7-icons,.toast.toast-with-icon .toast-icon .material-icons{font-size:var(--f7-toast-icon-size)}.toast.toast-center{top:50%}.toast.toast-top{margin-top:var(--f7-safe-area-top)}.ios .toast{left:0;transition-duration:.3s;width:100%}.ios .toast.toast-top{top:0;transform:translate3d(0,-100%,0)}.ios .toast.toast-top.modal-in{transform:translateZ(0)}.ios .toast.toast-center{border-radius:var(--f7-toast-border-radius);left:50%;width:auto}.ios .toast.toast-center,.ios .toast.toast-center.modal-in{transform:translate3d(-50%,-50%,0)}.ios .toast.toast-bottom{bottom:0;transform:translate3d(0,100%,0)}.ios .toast.toast-bottom.modal-in{transform:translateZ(0)}@media (max-width:568px){.ios .toast.toast-top{margin-top:0}.ios .toast.toast-top .toast-content{padding-top:calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-top))}.ios .toast.toast-bottom .toast-content{padding-bottom:calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-bottom))}}@media (min-width:569px){.ios .toast{border-radius:var(--f7-toast-border-radius);left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2)}.ios .toast.toast-top{top:16px}.ios .toast.toast-center{margin-left:0}.ios .toast.toast-bottom{margin-bottom:calc(16px + var(--f7-safe-area-bottom))}}@media (min-width:1024px){.ios .toast{margin-left:0;width:auto}.ios .toast.toast-horizontal-left{left:16px}.ios .toast.toast-horizontal-right{left:auto;right:16px}.ios .toast.toast-horizontal-center{left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2);width:var(--f7-toast-max-width)}}.ios .toast-button{margin-left:calc(var(--f7-button-padding-horizontal)*-1);margin-right:16px}.md .toast{border-radius:var(--f7-toast-border-radius);left:8px;transform:scale(.9);transition-duration:.2s;width:calc(100% - 16px)}.md .toast.modal-in,.md .toast.modal-out{transform:scale(1)}.md .toast.toast-top{top:8px}.md .toast.toast-center{left:50%;transform:scale(.9) translate3d(-55%,-55%,0);width:auto}.md .toast.toast-center.modal-in,.md .toast.toast-center.modal-out{transform:scale(1) translate3d(-50%,-50%,0)}.md .toast.toast-bottom{bottom:calc(8px + var(--f7-safe-area-bottom))}@media (min-width:584px){.md .toast{left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2)}.md .toast.toast-center{margin-left:0}}@media (min-width:1024px){.md .toast{margin-left:0;width:auto}.md .toast.toast-horizontal-left{left:24px}.md .toast.toast-horizontal-right{left:auto;right:24px}.md .toast.toast-horizontal-center{left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2);width:var(--f7-toast-max-width)}.md .toast.toast-bottom{bottom:calc(24px + var(--f7-safe-area-bottom))}.md .toast.toast-top{top:24px}}.md .toast-button{margin-left:-8px;margin-right:16px}:root{--f7-preloader-modal-padding:8px;--f7-preloader-modal-bg-color:rgba(0,0,0,0.8)}.ios{--f7-preloader-color:#6c6c6c;--f7-preloader-size:20px;--f7-preloader-modal-preloader-size:34px;--f7-preloader-modal-border-radius:5px}.md{--f7-preloader-color:#757575;--f7-preloader-size:32px;--f7-preloader-modal-preloader-size:32px;--f7-preloader-modal-border-radius:4px}.preloader{display:inline-block;font-size:0;height:var(--f7-preloader-size);position:relative;vertical-align:middle;width:var(--f7-preloader-size)}.preloader .preloader-inner{display:block;height:100%;position:relative;width:100%}.preloader-backdrop{background:none;opacity:0;visibility:visible;z-index:14000}.preloader-modal{background:var(--f7-preloader-modal-bg-color);border-radius:var(--f7-preloader-modal-border-radius);left:50%;padding:var(--f7-preloader-modal-padding);position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);z-index:14500}.preloader-modal .preloader{--f7-preloader-size:var(--f7-preloader-modal-preloader-size);display:block!important}.with-modal-preloader .page-content,.with-modal-preloader.page-content,html.with-modal-preloader .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}.preloader[class*=color-]{--f7-preloader-color:var(--f7-theme-color)}.preloader.color-white{--f7-preloader-color:#fff}.preloader.color-black{--f7-preloader-color:#000}.ios .preloader{color:var(--f7-preloader-color)}.ios .preloader-inner{animation:ios-preloader-spin 1s steps(8) infinite}.ios .preloader-inner-line{background:currentColor;border-radius:100px;display:block;height:33.33%;left:50%;position:absolute;top:50%;transform-origin:center 150%;width:11.6%}.ios .preloader-multi-color .preloader-inner-line,.ios .preloader.color-multi .preloader-inner-line{animation:ios-preloader-multicolor 3s linear infinite}.ios .preloader-inner-line:first-child{opacity:.27;transform:translate(-50%,-150%) rotate(0deg)}.ios .preloader-inner-line:nth-child(2){opacity:.35285714;transform:translate(-50%,-150%) rotate(45deg)}.ios .preloader-inner-line:nth-child(3){opacity:.43571429;transform:translate(-50%,-150%) rotate(90deg)}.ios .preloader-inner-line:nth-child(4){opacity:.51857143;transform:translate(-50%,-150%) rotate(135deg)}.ios .preloader-inner-line:nth-child(5){opacity:.60142857;transform:translate(-50%,-150%) rotate(180deg)}.ios .preloader-inner-line:nth-child(6){opacity:.68428571;transform:translate(-50%,-150%) rotate(225deg)}.ios .preloader-inner-line:nth-child(7){opacity:.76714286;transform:translate(-50%,-150%) rotate(270deg)}.ios .preloader-inner-line:nth-child(8){opacity:.85;transform:translate(-50%,-150%) rotate(315deg)}@keyframes ios-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes ios-preloader-multicolor{0%,to{background-color:#2196f3}25%{background-color:#ff3b30}50%{background-color:#4cd964}75%{background-color:#ff9500}}.md .preloader{color:var(--f7-preloader-color)}.md .preloader-inner{animation:md-preloader-rotate 1.4s linear infinite}.md .preloader-inner circle{fill:none;stroke:currentColor;stroke-dasharray:100px;stroke-dashoffset:80px;stroke-width:4;animation:md-preloader-circle-rotate 5.6s ease-in-out infinite;transform:rotate(-90deg);transform-origin:18px 18px}.md .preloader-multi-color circle,.md .preloader.color-multi circle{animation:md-preloader-circle-rotate 5.6s ease-in-out infinite,md-preloader-multicolor 5.6s ease-in-out infinite}@keyframes md-preloader-multicolor{0%,to{stroke:#4285f4}75%{stroke:#1b9a59}50%{stroke:#f7c223}25%{stroke:#de3e35}}@keyframes md-preloader-rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes md-preloader-circle-rotate{0%{stroke-dashoffset:100px;transform:rotate(-90deg)}12.5%{stroke-dashoffset:25px;transform:rotate(-90deg)}25%{stroke-dashoffset:100px;transform:rotate(180deg)}25.1%{stroke-dashoffset:100px;transform:rotate(-180deg)}37.5%{stroke-dashoffset:25px;transform:rotate(-180deg)}50%{stroke-dashoffset:100px;transform:rotate(90deg)}50.1%{stroke-dashoffset:100px;transform:rotate(90deg)}62.5%{stroke-dashoffset:25px;transform:rotate(90deg)}75%{stroke-dashoffset:100px;transform:rotate(1turn)}75.1%{stroke-dashoffset:100px;transform:rotate(0deg)}87.5%{stroke-dashoffset:25px;transform:rotate(0deg)}to{stroke-dashoffset:100px;transform:rotate(270deg)}}.ios{--f7-progressbar-height:4px;--f7-progressbar-border-radius:4px;--f7-progressbar-bg-color:rgba(0,0,0,0.3)}.ios .dark,.ios.dark{--f7-progressbar-bg-color:rgba(255,255,255,0.3)}.md{--f7-progressbar-height:4px;--f7-progressbar-border-radius:0px}.md,.md .dark,.md [class*=color-]{--f7-progressbar-bg-color:rgba(var(--f7-theme-color-rgb),0.5)}.progressbar,.progressbar-infinite{background:var(--f7-progressbar-bg-color,rgba(var(--f7-theme-color-rgb),.5));border-radius:var(--f7-progressbar-border-radius);display:block;height:var(--f7-progressbar-height);overflow:hidden;position:relative;transform-origin:center top;transform-style:preserve-3d;width:100%}.progressbar{vertical-align:middle}.progressbar span{background-color:var(--f7-progressbar-progress-color,var(--f7-theme-color));height:100%;position:absolute;right:0;top:0;transform:translate3d(100%,0,0);transition-duration:.15s;width:100%}.progressbar-infinite{z-index:15000}.progressbar-infinite:after,.progressbar-infinite:before{background-color:var(--f7-progressbar-progress-color,var(--f7-theme-color));content:"";display:block;height:100%;position:absolute;right:0;top:0;transform:translateZ(0);transform-origin:right center;width:100%}.progressbar-infinite.color-multi{background:none!important}.progressbar-in{animation:progressbar-in .15s forwards}.progressbar-out{animation:progressbar-out .15s forwards}.framework7-root>.progressbar,.framework7-root>.progressbar-infinite,.page>.progressbar,.page>.progressbar-infinite,.panel>.progressbar,.panel>.progressbar-infinite,.popup>.progressbar,.popup>.progressbar-infinite,.view>.progressbar,.view>.progressbar-infinite,.views>.progressbar,.views>.progressbar-infinite,body>.progressbar,body>.progressbar-infinite{border-radius:0!important;left:0;position:absolute;top:0;transform-origin:center top!important;z-index:15000}@keyframes progressbar-in{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes progressbar-out{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}.ios .progressbar-infinite:before{animation:ios-progressbar-infinite 1s linear infinite}.ios .progressbar-infinite:after{display:none}.ios .progressbar-infinite.color-multi:before{animation:ios-progressbar-infinite-multicolor 3s linear infinite;background-image:linear-gradient(90deg,#4cd964,#5ac8fa,#007aff,#34aadc,#5856d6,#ff2d55,#5856d6,#34aadc,#007aff,#5ac8fa,#4cd964);background-repeat:repeat-x;background-size:25% 100%;width:400%}@keyframes ios-progressbar-infinite{0%{transform:translate3d(100%,0,0)}to{transform:translate3d(-100%,0,0)}}@keyframes ios-progressbar-infinite-multicolor{0%{transform:translateZ(0)}to{transform:translate3d(-50%,0,0)}}.md .progressbar-infinite:before{animation:md-progressbar-infinite-1 2s linear infinite}.md .progressbar-infinite:after{animation:md-progressbar-infinite-2 2s linear infinite}.md .progressbar-infinite.color-multi:before{animation:md-progressbar-infinite-multicolor-bg 3s step-end infinite;background:none}.md .progressbar-infinite.color-multi:after{animation:md-progressbar-infinite-multicolor-fill 3s linear infinite;background:none;transform-origin:center center}@keyframes md-progressbar-infinite-1{0%{transform:translateX(10%) scaleX(.1)}25%{transform:translateX(-30%) scaleX(.6)}50%{transform:translateX(-100%) scaleX(1)}to{transform:translateX(-100%) scaleX(1)}}@keyframes md-progressbar-infinite-2{0%{transform:translateX(100%) scaleX(1)}40%{transform:translateX(100%) scaleX(1)}75%{transform:translateX(-60%) scaleX(.35)}90%{transform:translateX(-100%) scaleX(.1)}to{transform:translateX(-100%) scaleX(.1)}}@keyframes md-progressbar-infinite-multicolor-bg{0%{background-color:#4caf50}25%{background-color:#f44336}50%{background-color:#2196f3}75%{background-color:#ffeb3b}}@keyframes md-progressbar-infinite-multicolor-fill{0%{background-color:#f44336;transform:scaleX(0)}24.9%{background-color:#f44336;transform:scaleX(1)}25%{background-color:#2196f3;transform:scaleX(0)}49.9%{background-color:#2196f3;transform:scaleX(1)}50%{background-color:#ffeb3b;transform:scaleX(0)}74.9%{background-color:#ffeb3b;transform:scaleX(1)}75%{background-color:#4caf50;transform:scaleX(0)}to{background-color:#4caf50;transform:scaleX(1)}}.ios{--f7-sortable-handler-width:36px;--f7-sortable-sorting-item-box-shadow:0px 2px 8px rgba(0,0,0,0.6);--f7-sortable-handler-color:rgba(0,0,0,0.22);--f7-sortable-sorting-item-bg-color:rgba(255,255,255,0.8)}.ios .dark,.ios.dark{--f7-sortable-sorting-item-bg-color:rgba(50,50,50,0.8);--f7-sortable-handler-color:rgba(255,255,255,0.55)}.md{--f7-sortable-handler-width:42px;--f7-sortable-sorting-item-box-shadow:none}.md,.md .dark,.md [class*=color-]{--f7-sortable-handler-color:var(--f7-md-on-surface-variant);--f7-sortable-sorting-item-bg-color:var(--f7-md-surface-3)}.sortable .sortable-handler{align-items:center;cursor:move;display:flex;height:100%;justify-content:center;left:var(--f7-safe-area-left);opacity:0;overflow:hidden;pointer-events:none;position:absolute;top:0;transition-duration:.3s;width:var(--f7-sortable-handler-width);z-index:10}.sortable .sortable-handler:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-sortable-handler-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;height:20px;letter-spacing:normal;line-height:1;overflow:hidden;text-align:center;text-rendering:optimizeLegibility;text-transform:none;transform:translateX(10px);transition-duration:.3s;white-space:nowrap;width:100%;width:18px}.sortable li.sorting{background:var(--f7-sortable-sorting-item-bg-color);box-shadow:var(--f7-sortable-sorting-item-box-shadow);transition-duration:0ms;z-index:50}.sortable li.sorting .item-inner:after{display:none!important}.sortable-opposite .sortable-handler{left:auto;right:var(--f7-safe-area-left)}.sortable-opposite .sortable-handler:after{transform:translateX(-10px)}.sortable-opposite .item-content,.sortable-opposite.links-list li a,.sortable.simple-list li,.sortable:not(.sortable-opposite) .item-inner{transition-duration:.3s;transition-property:all}.sortable-sorting li{transition-duration:.3s}.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler{opacity:1;pointer-events:auto;touch-action:none}.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler:after{transform:translateX(0)}.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner:before,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-title-row:before,.sortable-enabled:not(.sortable-opposite).links-list li:not(.no-sorting):not(.disallow-sorting)>a:before{display:none}.links-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) a,.no-chevron .sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,.simple-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting),.sortable-enabled :not(.sortable-opposite).no-chevron .item-link .item-inner,.sortable-enabled.no-chevron:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-inner,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link.no-chevron .item-inner{padding-left:calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right))}.links-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) a,.simple-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting),.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .item-content{padding-right:calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right))}.ios .sortable-handler:after{content:"sort_ios"}.md .sortable-handler:after{content:"sort_md"}:root{--f7-swipeout-delete-button-bg-color:#ff3b30;--f7-swipeout-button-text-color:#fff;--f7-swipeout-button-padding-vertical:0px;--f7-swipeout-button-bg-color:rgba(0,0,0,0.22)}:root .dark,:root.dark{--f7-swipeout-button-bg-color:rgba(255,255,255,0.55)}.ios{--f7-swipeout-button-padding-horizontal:30px;--f7-swipeout-button-font-size:inherit;--f7-swipeout-button-font-weight:inherit}.md{--f7-swipeout-button-padding-horizontal:24px;--f7-swipeout-button-font-size:14px;--f7-swipeout-button-font-weight:500}.md .dark,.md.dark{--f7-swipeout-button-text-color:#000}.swipeout{overflow:hidden;transform-style:preserve-3d}.swipeout-deleting{transition-duration:.3s}.swipeout-deleting .swipeout-content{transform:translateX(-100%)}.swipeout-transitioning .swipeout-actions-left a,.swipeout-transitioning .swipeout-actions-right a,.swipeout-transitioning .swipeout-content,.swipeout-transitioning .swipeout-overswipe{transition-duration:.3s;transition-property:transform,left}.swipeout-content{position:relative;z-index:10}.swipeout-overswipe{transition-duration:.2s;transition-property:left}.swipeout-actions-left,.swipeout-actions-right{direction:ltr;display:flex;height:100%;position:absolute;top:0}.swipeout-actions-left>a,.swipeout-actions-left>button,.swipeout-actions-left>div,.swipeout-actions-left>span,.swipeout-actions-right>a,.swipeout-actions-right>button,.swipeout-actions-right>div,.swipeout-actions-right>span{align-items:center;background:var(--f7-swipeout-button-bg-color);color:var(--f7-swipeout-button-text-color);display:flex;font-size:var(--f7-swipeout-button-font-size);font-weight:var(--f7-swipeout-button-font-weight);left:0;padding:var(--f7-swipeout-button-padding-vertical) var(--f7-swipeout-button-padding-horizontal);position:relative}.swipeout-actions-left>a:after,.swipeout-actions-left>button:after,.swipeout-actions-left>div:after,.swipeout-actions-left>span:after,.swipeout-actions-right>a:after,.swipeout-actions-right>button:after,.swipeout-actions-right>div:after,.swipeout-actions-right>span:after{background:inherit;content:"";height:100%;pointer-events:none;position:absolute;top:0;transform:translateZ(0);width:600%;z-index:-1}.swipeout-actions-left .swipeout-delete,.swipeout-actions-right .swipeout-delete{background:var(--f7-swipeout-delete-button-bg-color)}.swipeout-actions-right{right:0;transform:translateX(calc(100% + 1px))}.swipeout-actions-right>a:after,.swipeout-actions-right>button:after,.swipeout-actions-right>div:after,.swipeout-actions-right>span:after{left:100%}.swipeout-actions-right>a:last-child,.swipeout-actions-right>button:last-child,.swipeout-actions-right>div:last-child,.swipeout-actions-right>span:last-child{padding-right:calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-right))}.swipeout-actions-left{left:0;transform:translateX(calc(-100% - 1px))}.swipeout-actions-left>a:after,.swipeout-actions-left>button:after,.swipeout-actions-left>div:after,.swipeout-actions-left>span:after{right:100%}.swipeout-actions-left>a:first-child,.swipeout-actions-left>button:first-child,.swipeout-actions-left>div:first-child,.swipeout-actions-left>span:first-child{padding-left:calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-left))}.swipeout-actions-left [class*=color-],.swipeout-actions-right [class*=color-]{--f7-swipeout-button-bg-color:var(--f7-theme-color)}:root{--f7-accordion-chevron-icon-down:"chevron_down";--f7-accordion-chevron-icon-up:"chevron_up"}.accordion-item-toggle{cursor:pointer}.list.accordion-list .accordion-item-toggle{overflow:hidden;position:relative;transition-duration:.3s}.list.accordion-list .accordion-item-toggle.active-state{background-color:var(--f7-list-link-pressed-bg-color);transition-duration:.3s}.list.accordion-list .accordion-item-toggle.active-state>.item-inner:after{background-color:initial}.list.accordion-list .accordion-item-toggle .item-inner{transition-duration:.3s;transition-property:background-color}.list.accordion-list .accordion-item-toggle .item-inner:after{transition-duration:.3s}.list.accordion-list .accordion-item-toggle .ripple-wave{z-index:0}.accordion-item .item-link .item-inner:after{transition-duration:.3s}.accordion-item .block,.accordion-item .list{margin-bottom:0;margin-top:0}.accordion-item .block>h1:first-child,.accordion-item .block>h2:first-child,.accordion-item .block>h3:first-child,.accordion-item .block>h4:first-child,.accordion-item .block>p:first-child{margin-top:10px}.accordion-item .block>h1:last-child,.accordion-item .block>h2:last-child,.accordion-item .block>h3:last-child,.accordion-item .block>h4:last-child,.accordion-item .block>p:last-child{margin-bottom:10px}.accordion-item-opened .accordion-item-toggle .item-inner:after,.accordion-item-opened>.item-link .item-inner:after{background-color:initial}.list li.accordion-item ul{padding-right:0}.accordion-item-content{font-size:14px;height:0;overflow:hidden;position:relative;transition-duration:.3s}.accordion-item-opened>.accordion-item-content{height:auto}html.device-android-4 .accordion-item-content{transform:none}.list .accordion-item-toggle .item-inner:before{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-list-chevron-icon-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-size:var(--f7-list-chevron-icon-font-size);font-style:normal;font-weight:400;height:100%;left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));letter-spacing:normal;line-height:1;pointer-events:none;position:absolute;text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;white-space:nowrap;width:100%}.list:not(.accordion-opposite) .accordion-item-toggle .item-inner{padding-left:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left))}.accordion-opposite .accordion-item-toggle .item-inner,.accordion-opposite .accordion-item-toggle.item-link .item-inner,.accordion-opposite .accordion-item>.item-link>.item-content>.item-inner,.accordion-opposite .accordion-item>.item-link>.item-inner{padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left))}.accordion-opposite .accordion-item>.item-link>.item-title-row{padding-right:0}.accordion-opposite .accordion-item-toggle .item-inner:before,.accordion-opposite .accordion-item-toggle.item-link .item-inner:before,.accordion-opposite .accordion-item>.item-link .item-title-row:before,.accordion-opposite .accordion-item>.item-link>.item-content>.item-inner:before,.accordion-opposite .accordion-item>.item-link>.item-inner:before{display:none}.accordion-opposite .accordion-item-toggle.item-content,.accordion-opposite .accordion-item-toggle>.item-content,.accordion-opposite .accordion-item>.item-content,.accordion-opposite .accordion-item>.item-link>.item-content,.accordion-opposite.links-list .accordion-item>a{padding-right:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));position:relative}.accordion-opposite .accordion-item-toggle.item-content:before,.accordion-opposite .accordion-item-toggle>.item-content:before,.accordion-opposite .accordion-item>.item-content:before,.accordion-opposite .accordion-item>.item-link>.item-content:before,.accordion-opposite.links-list .accordion-item>a:before{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-list-chevron-icon-color);content:var(--f7-accordion-chevron-icon-down);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-size:var(--f7-list-chevron-icon-font-size);font-style:normal;font-weight:400;height:100%;height:8px;letter-spacing:normal;line-height:1;line-height:8px;margin-top:-4px;pointer-events:none;position:absolute;right:calc((var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal))/2 + var(--f7-safe-area-right));text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;transform:translateX(-50%);white-space:nowrap;width:100%;width:14px}.list .accordion-item-toggle.active-state{background-color:var(--f7-list-link-pressed-bg-color)}.accordion-item.media-item .accordion-item-toggle .item-title-row:before,.accordion-item.media-item>.item-link .item-title-row:before,.links-list .accordion-item>a:before,.list .accordion-item-toggle .item-inner:before,.list:not(.media-list) .accordion-item:not(.media-item) .accordion-item-toggle .item-inner:before,.list:not(.media-list) .accordion-item:not(.media-item)>.item-link .item-inner:before,.media-list .accordion-item .accordion-item-toggle .item-title-row:before,.media-list .accordion-item>.item-link .item-title-row:before{content:var(--f7-accordion-chevron-icon-down);height:8px;line-height:8px;margin-top:-4px;width:14px}.accordion-item-opened.media-item .accordion-item-toggle .item-title-row:before,.accordion-item-opened.media-item>.item-link .item-title-row:before,.accordion-opposite .accordion-item-opened .accordion-item-toggle.item-content:before,.accordion-opposite .accordion-item-opened .accordion-item-toggle>.item-content:before,.accordion-opposite .accordion-item-opened>.item-content:before,.accordion-opposite .accordion-item-opened>.item-link>.item-content:before,.accordion-opposite .links-list .accordion-item-opened>a:before,.links-list .accordion-item-opened>a:before,.list .accordion-item-toggle.accordion-item-opened .item-inner:before,.list:not(.media-list) .accordion-item-opened:not(.media-item) .accordion-item-toggle .item-inner:before,.list:not(.media-list) .accordion-item-opened:not(.media-item)>.item-link .item-inner:before,.media-list .accordion-item-opened .accordion-item-toggle .item-title-row:before,.media-list .accordion-item-opened>.item-link .item-title-row:before{content:var(--f7-accordion-chevron-icon-up);height:8px;line-height:8px;margin-top:-4px;width:14px}.ios{--f7-contacts-list-title-font-size:inherit;--f7-contacts-list-title-font-weight:600;--f7-contacts-list-title-height:22px;--f7-contacts-list-title-text-color:#000;--f7-contacts-list-title-bg-color:#f7f7f7}.ios .dark,.ios.dark{--f7-contacts-list-title-text-color:#fff;--f7-contacts-list-title-bg-color:#323234}.md{--f7-contacts-list-title-font-size:20px;--f7-contacts-list-title-font-weight:500;--f7-contacts-list-title-height:48px;--f7-contacts-list-title-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-contacts-list-title-text-color:var(--f7-theme-color)}.contacts-list{--f7-list-margin-vertical:0px}.contacts-list .list-group-title,.contacts-list li.list-group-title{background-color:var(--f7-contacts-list-title-bg-color,var(--f7-list-group-title-bg-color));color:var(--f7-contacts-list-title-text-color,var(--f7-theme-color));font-size:var(--f7-contacts-list-title-font-size,var(--f7-list-group-title-font-size));font-weight:var(--f7-contacts-list-title-font-weight,var(--f7-list-group-title-font-weight));height:var(--f7-contacts-list-title-height,var(--f7-list-group-title-height));line-height:var(--f7-contacts-list-title-height,var(--f7-list-group-title-height))}.contacts-list .list-group:first-child ul:before,.contacts-list .list-group:last-child ul:after{display:none!important}.md .contacts-list .list-group-title{overflow:visible;pointer-events:none;width:40px}.md .contacts-list .list-group-title+li{margin-top:calc(var(--f7-contacts-list-title-height)*-1)}.md .contacts-list .list-group-title:before{display:none!important}.md .contacts-list li:not(.list-group-title){padding-right:40px}:root{--f7-list-index-width:16px;--f7-list-index-font-size:11px;--f7-list-index-font-weight:600;--f7-list-index-item-height:14px;--f7-list-index-label-font-weight:500}.ios{--f7-list-index-label-text-color:#fff;--f7-list-index-label-size:44px;--f7-list-index-label-font-size:17px;--f7-list-index-skip-dot-size:6px}.md{--f7-list-index-label-size:56px;--f7-list-index-label-font-size:20px;--f7-list-index-skip-dot-size:4px}.md,.md .dark,.md [class*=color-]{--f7-list-index-label-bg-color:var(--f7-md-primary);--f7-list-index-label-text-color:var(--f7-md-on-primary)}.list-index{bottom:0;cursor:pointer;left:var(--f7-safe-area-left);position:absolute;text-align:center;top:0;-webkit-user-select:none;user-select:none;width:var(--f7-list-index-width);z-index:10}.list-index:before{content:"";height:100%;position:absolute;right:100%;top:0;width:20px}.list-index ul{align-items:center;color:var(--f7-list-index-text-color,var(--f7-theme-color));display:flex;flex-direction:column;font-size:var(--f7-list-index-font-size);font-weight:var(--f7-list-index-font-weight);height:100%;justify-content:center}.list-index li,.list-index ul{flex-shrink:0;list-style:none;margin:0;padding:0;position:relative;width:100%}.list-index li{display:block;height:var(--f7-list-index-item-height);line-height:var(--f7-list-index-item-height)}.list-index .list-index-skip-placeholder:after{background:var(--f7-list-index-text-color,var(--f7-theme-color));border-radius:50%;content:"";height:var(--f7-list-index-skip-dot-size);left:50%;margin-left:calc(var(--f7-list-index-skip-dot-size)*-1/2);margin-top:calc(var(--f7-list-index-skip-dot-size)*-1/2);position:absolute;top:50%;width:var(--f7-list-index-skip-dot-size)}.list-index .list-index-label{background-color:var(--f7-list-index-label-bg-color,var(--f7-theme-color));bottom:0;color:var(--f7-list-index-label-text-color);font-size:var(--f7-list-index-label-font-size);font-weight:var(--f7-list-index-label-font-weight);height:var(--f7-list-index-label-size);line-height:var(--f7-list-index-label-size);position:absolute;right:100%;text-align:center;width:var(--f7-list-index-label-size)}.navbars~.page>.list-index,.navbar~.list-index,.navbar~.page>.list-index{top:var(--f7-navbar-height)}.ios .navbars~.toolbar-top-ios .md .navbar~.toolbar-top-md~.list-index,.ios .navbar~.toolbar-top-ios~.list-index,.navbars~.toolbar-top~.list-index,.navbar~.toolbar-top~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-toolbar-height))}.ios .navbars~.toolbar-top-ios .md .navbar~.toolbar-top-md.tabbar-icons~.list-index,.ios .navbar~.toolbar-top-ios.tabbar-icons~.list-index,.navbars~.toolbar-top.tabbar-icons~.list-index,.navbar~.toolbar-top.tabbar-icons~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height))}.navbars~.subnavbar~.list-index,.navbar~.subnavbar~.list-index,.page-with-subnavbar .navbar~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-subnavbar-height))}.ios .toolbar-bottom-ios~* .page>.list-index,.ios .toolbar-bottom-ios~.list-index,.ios .toolbar-bottom-ios~.page>.list-index,.md .toolbar-bottom-md~* .page>.list-index,.md .toolbar-bottom-md~.list-index,.md .toolbar-bottom-md~.page>.list-index,.toolbar-bottom~* .page>.list-index,.toolbar-bottom~.list-index,.toolbar-bottom~.page>.list-index{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.ios .toolbar-bottom-ios.tabbar-icons~* .page>.list-index,.ios .toolbar-bottom-ios.tabbar-icons~.list-index,.ios .toolbar-bottom-ios.tabbar-icons~.page>.list-index,.md .toolbar-bottom-md.tabbar-icons~* .page>.list-index,.md .toolbar-bottom-md.tabbar-icons~.list-index,.md .toolbar-bottom-md.tabbar-icons~.page>.list-index,.toolbar-bottom.tabbar-icons~* .page>.list-index,.toolbar-bottom.tabbar-icons~.list-index,.toolbar-bottom.tabbar-icons~.page>.list-index{bottom:calc(var(--f7-tabbar-icons-height) + var(--f7-safe-area-bottom))}.ios .list-index .list-index-label{border-radius:50%;margin-bottom:calc(var(--f7-list-index-label-size)*-1/2);margin-right:calc(var(--f7-list-index-width) - 1px)}.ios .list-index .list-index-label:before{background-color:inherit;border-radius:50% 0 50% 50%;content:"";height:100%;left:0;position:absolute;top:0;transform:rotate(45deg);width:100%;z-index:-1}.md .list-index .list-index-label{border-radius:50% 50% 0 50%}:root{--f7-timeline-inner-block-margin-vertical:16px;--f7-timeline-divider-margin-horizontal:16px;--f7-timeline-horizontal-date-height:34px;--f7-timeline-year-height:24px;--f7-timeline-year-font-weight:inherit;--f7-timeline-month-height:24px;--f7-timeline-month-font-size:inherit;--f7-timeline-month-font-weight:inherit;--f7-timeline-item-text-font-weight:inherit;--f7-timeline-item-subtitle-font-weight:inherit}.ios{--f7-timeline-divider-color:#bbb;--f7-timeline-padding-horizontal:16px;--f7-timeline-margin-vertical:35px;--f7-timeline-item-inner-border-radius:7px;--f7-timeline-item-time-font-size:13px;--f7-timeline-item-title-font-size:17px;--f7-timeline-item-title-line-height:inherit;--f7-timeline-item-title-font-weight:600;--f7-timeline-item-subtitle-font-size:15px;--f7-timeline-item-subtitle-line-height:inherit;--f7-timeline-item-text-font-size:inherit;--f7-timeline-item-text-color:inherit;--f7-timeline-item-text-line-height:inherit;--f7-timeline-year-font-size:16px;--f7-timeline-horizontal-item-padding:10px;--f7-timeline-item-inner-bg-color:#fff;--f7-timeline-item-time-text-color:rgba(0,0,0,0.45);--f7-timeline-horizontal-item-border-color:rgba(0,0,0,0.22);--f7-timeline-horizontal-item-date-border-color:rgba(0,0,0,0.22)}.ios .dark,.ios.dark{--f7-timeline-horizontal-item-border-color:rgba(255,255,255,0.15);--f7-timeline-horizontal-item-date-border-color:rgba(255,255,255,0.15);--f7-timeline-item-inner-bg-color:#1c1c1d;--f7-timeline-item-time-text-color:rgba(255,255,255,0.55)}.md{--f7-timeline-padding-horizontal:16px;--f7-timeline-margin-vertical:32px;--f7-timeline-item-inner-border-radius:16px;--f7-timeline-item-time-font-size:13px;--f7-timeline-item-title-font-size:16px;--f7-timeline-item-title-line-height:inherit;--f7-timeline-item-title-font-weight:400;--f7-timeline-item-subtitle-font-size:inherit;--f7-timeline-item-subtitle-line-height:inherit;--f7-timeline-item-text-font-size:inherit;--f7-timeline-item-text-line-height:inherit;--f7-timeline-year-font-size:16px;--f7-timeline-horizontal-item-padding:12px;--f7-timeline-horizontal-item-date-border-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-timeline-divider-color:var(--f7-md-outline);--f7-timeline-item-text-color:var(--f7-md-on-surface);--f7-timeline-horizontal-item-border-color:var(--f7-md-outline);--f7-timeline-item-inner-bg-color:var(--f7-md-surface-1);--f7-timeline-item-time-text-color:var(--f7-md-on-surface-variant)}.timeline{box-sizing:border-box;margin:var(--f7-timeline-margin-vertical) 0;padding:0 var(--f7-timeline-padding-horizontal);padding-bottom:0;padding-left:calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-right));padding-top:0}.block-strong .timeline{margin:0;padding:0}.timeline-item{box-sizing:border-box;display:flex;justify-content:flex-start;overflow:hidden;padding:2px 0 var(--f7-timeline-padding-horizontal);position:relative}.timeline-item:last-child{padding-bottom:2px}.timeline-item-date{box-sizing:border-box;flex-shrink:0;text-align:right;width:50px}.timeline-item-date small{font-size:10px}.timeline-item-content{flex-shrink:10;margin:2px;min-width:0;position:relative}.timeline-item-content .block,.timeline-item-content .card,.timeline-item-content .list,.timeline-item-content.block,.timeline-item-content.card,.timeline-item-content.list{margin:0;width:100%}.timeline-item-content .block+.block,.timeline-item-content .block+.card,.timeline-item-content .block+.list,.timeline-item-content .card+.block,.timeline-item-content .card+.card,.timeline-item-content .card+.list,.timeline-item-content .list+.block,.timeline-item-content .list+.card,.timeline-item-content .list+.list{margin:var(--f7-timeline-inner-block-margin-vertical) 0 0}.timeline-item-content h1:first-child,.timeline-item-content h2:first-child,.timeline-item-content h3:first-child,.timeline-item-content h4:first-child,.timeline-item-content ol:first-child,.timeline-item-content p:first-child,.timeline-item-content ul:first-child{margin-top:0}.timeline-item-content h1:last-child,.timeline-item-content h2:last-child,.timeline-item-content h3:last-child,.timeline-item-content h4:last-child,.timeline-item-content ol:last-child,.timeline-item-content p:last-child,.timeline-item-content ul:last-child{margin-bottom:0}.timeline-item-inner{background:var(--f7-timeline-item-inner-bg-color);border-radius:var(--f7-timeline-item-inner-border-radius);box-sizing:border-box;padding:8px var(--f7-timeline-padding-horizontal)}.timeline-item-inner+.timeline-item-inner{margin-top:var(--f7-timeline-inner-block-margin-vertical)}.timeline-item-inner .block{color:inherit;padding:0}.timeline-item-inner .block-strong{margin:0;padding-left:0;padding-right:0}.timeline-item-inner .block-strong:after,.timeline-item-inner .block-strong:before,.timeline-item-inner .list ul:after,.timeline-item-inner .list ul:before{display:none!important}.timeline-item-divider{background:var(--f7-timeline-divider-color);border-radius:50%;flex-shrink:0;height:10px;margin:3px var(--f7-timeline-divider-margin-horizontal) 0;position:relative;width:1px;width:10px}.timeline-item-divider:after,.timeline-item-divider:before{background:inherit;content:" ";height:100vh;left:50%;position:absolute;transform:translate3d(-50%,0,0);width:1px}.timeline-item-divider:after{top:100%}.timeline-item-divider:before{bottom:100%}.timeline-item:first-child .timeline-item-divider:before,.timeline-item:last-child .timeline-item-divider:after{display:none}.timeline-item-time{color:var(--f7-timeline-item-time-text-color);font-size:var(--f7-timeline-item-time-font-size);margin-top:var(--f7-timeline-inner-block-margin-vertical)}.timeline-item-time:first-child,.timeline-item-time:last-child,.timeline-item-title+.timeline-item-time{margin-top:0}.timeline-item-title{font-size:var(--f7-timeline-item-title-font-size);font-weight:var(--f7-timeline-item-title-font-weight);line-height:var(--f7-timeline-item-title-line-height)}.timeline-item-subtitle{font-size:var(--f7-timeline-item-subtitle-font-size);font-weight:var(--f7-timeline-item-subtitle-font-weight);line-height:var(--f7-timeline-item-subtitle-line-height)}.timeline-item-text{color:var(--f7-timeline-item-text-color);font-size:var(--f7-timeline-item-text-font-size);font-weight:var(--f7-timeline-item-text-font-weight);line-height:var(--f7-timeline-item-text-line-height)}.timeline-sides .timeline-item,.timeline-sides .timeline-item-right{margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.timeline-sides .timeline-item .timeline-item-date,.timeline-sides .timeline-item-right .timeline-item-date{text-align:left}.timeline-sides .timeline-item-left,.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.timeline-sides .timeline-item-left .timeline-item-date,.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:right}@media (min-width:480px){.xsmall-sides .timeline-item,.xsmall-sides .timeline-item-right{margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.xsmall-sides .timeline-item .timeline-item-date,.xsmall-sides .timeline-item-right .timeline-item-date{text-align:left}.xsmall-sides .timeline-item-left,.xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.xsmall-sides .timeline-item-left .timeline-item-date,.xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:right}}@media (min-width:568px){.small-sides .timeline-item,.small-sides .timeline-item-right{margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.small-sides .timeline-item .timeline-item-date,.small-sides .timeline-item-right .timeline-item-date{text-align:left}.small-sides .timeline-item-left,.small-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.small-sides .timeline-item-left .timeline-item-date,.small-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:right}}@media (min-width:768px){.medium-sides .timeline-item,.medium-sides .timeline-item-right{margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.medium-sides .timeline-item .timeline-item-date,.medium-sides .timeline-item-right .timeline-item-date{text-align:left}.medium-sides .timeline-item-left,.medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.medium-sides .timeline-item-left .timeline-item-date,.medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:right}}@media (min-width:1024px){.large-sides .timeline-item,.large-sides .timeline-item-right{margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.large-sides .timeline-item .timeline-item-date,.large-sides .timeline-item-right .timeline-item-date{text-align:left}.large-sides .timeline-item-left,.large-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.large-sides .timeline-item-left .timeline-item-date,.large-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:right}}@media (min-width:1200px){.xlarge-sides .timeline-item,.xlarge-sides .timeline-item-right{margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.xlarge-sides .timeline-item .timeline-item-date,.xlarge-sides .timeline-item-right .timeline-item-date{text-align:left}.xlarge-sides .timeline-item-left,.xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.xlarge-sides .timeline-item-left .timeline-item-date,.xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:right}}.timeline-horizontal{display:flex;height:100%;margin:0;padding:0;padding-left:var(--f7-safe-area-left);padding-right:0;position:relative}.timeline-horizontal .timeline-item{display:block;flex-shrink:0;height:100%;margin:0;padding:0;padding-bottom:var(--f7-timeline-horizontal-item-padding);padding-top:var(--f7-timeline-horizontal-date-height)!important;position:relative;width:100/3vw}.timeline-horizontal .timeline-item:after{background-color:var(--f7-timeline-horizontal-item-border-color);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.timeline-horizontal .timeline-item-date{background-color:var(--f7-bars-bg-color);color:var(--f7-bars-text-color);height:var(--f7-timeline-horizontal-date-height);left:0;line-height:var(--f7-timeline-horizontal-date-height);padding:0 var(--f7-timeline-horizontal-item-padding);position:absolute;text-align:left;text-align:right;top:0;width:auto;width:100%}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .timeline-horizontal .timeline-item-date{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-bars-bg-color-rgb),var(--f7-bars-translucent-opacity))}}.timeline-horizontal .timeline-item-date:after{background-color:var(--f7-timeline-horizontal-item-date-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.timeline-horizontal .timeline-item-content{-webkit-overflow-scrolling:touch;height:calc(100vw - var(--f7-timeline-horizontal-item-padding));margin:0;overflow:auto;padding:var(--f7-timeline-horizontal-item-padding)}.timeline-horizontal .timeline-item-divider{display:none}.timeline-horizontal .timeline-month:last-child .timeline-item:last-child:after,.timeline-horizontal>.timeline-item:last-child:after{display:none!important}.timeline-horizontal.timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.timeline-cols-20 .timeline-item{width:5vw}@media (min-width:480px){.timeline-horizontal.xsmall-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.xsmall-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.xsmall-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.xsmall-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.xsmall-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.xsmall-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.xsmall-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.xsmall-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.xsmall-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.xsmall-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.xsmall-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.xsmall-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.xsmall-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.xsmall-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.xsmall-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.xsmall-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.xsmall-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.xsmall-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.xsmall-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.xsmall-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:568px){.timeline-horizontal.small-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.small-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.small-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.small-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.small-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.small-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.small-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.small-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.small-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.small-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.small-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.small-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.small-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.small-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.small-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.small-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.small-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.small-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.small-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.small-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:768px){.timeline-horizontal.medium-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.medium-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.medium-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.medium-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.medium-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.medium-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.medium-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.medium-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.medium-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.medium-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.medium-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.medium-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.medium-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.medium-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.medium-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.medium-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.medium-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.medium-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.medium-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.medium-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:1024px){.timeline-horizontal.large-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.large-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.large-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.large-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.large-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.large-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.large-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.large-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.large-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.large-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.large-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.large-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.large-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.large-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.large-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.large-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.large-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.large-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.large-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.large-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:1200px){.timeline-horizontal.xlarge-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.xlarge-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.xlarge-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.xlarge-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.xlarge-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.xlarge-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.xlarge-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.xlarge-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.xlarge-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.xlarge-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.xlarge-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.xlarge-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.xlarge-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.xlarge-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.xlarge-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.xlarge-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.xlarge-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.xlarge-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.xlarge-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.xlarge-timeline-cols-20 .timeline-item{width:5vw}}.timeline-year{padding-top:var(--f7-timeline-year-height)}.timeline-year:after{background-color:var(--f7-timeline-horizontal-item-border-color);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.timeline-year:last-child:after{display:none!important}.timeline-month{padding-top:var(--f7-timeline-month-height)}.timeline-month .timeline-item:before{background-color:var(--f7-timeline-horizontal-item-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.timeline-month,.timeline-year{box-sizing:border-box;display:flex;flex-shrink:0;height:100%;position:relative}.timeline-year-title{font-size:var(--f7-timeline-year-font-size);font-weight:var(--f7-timeline-year-font-weight);height:var(--f7-timeline-year-height);line-height:var(--f7-timeline-year-height)}.timeline-month-title{font-size:var(--f7-timeline-month-font-size);font-weight:var(--f7-timeline-month-font-weight);height:var(--f7-timeline-month-height);line-height:var(--f7-timeline-month-height)}.timeline-month-title,.timeline-year-title{background-color:var(--f7-bars-bg-color);box-sizing:border-box;color:var(--f7-bars-text-color);left:0;padding:0 var(--f7-timeline-horizontal-item-padding);position:absolute;top:0;width:100%}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .timeline-month-title,.ios-translucent-bars .timeline-year-title{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-bars-bg-color-rgb),var(--f7-bars-translucent-opacity))}}.timeline-month-title span,.timeline-year-title span{display:inline-block;position:sticky;right:calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-right))}.timeline-month-title span{margin-top:-2px}.timeline-year:first-child .timeline-month:first-child .timeline-month-title,.timeline-year:first-child .timeline-year-title,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-month-title{left:calc(var(--f7-safe-area-left)*-1);right:0;width:auto}.timeline-horizontal .timeline-item:first-child,.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-item:first-child,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-month-title+.timeline-item{overflow:visible}.timeline-horizontal .timeline-item:first-child .timeline-item-date,.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child .timeline-item-date,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-item:first-child .timeline-item-date,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-month-title+.timeline-item .timeline-item-date{left:calc(0px - var(--f7-safe-area-left));padding-left:calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-left));right:0;width:auto}.timeline-year:last-child .timeline-month:last-child .timeline-month-title,.timeline-year:last-child .timeline-year-title{right:calc(0px - var(--f7-safe-area-right));width:auto}.timeline-horizontal .timeline-item:last-child,.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child{overflow:visible}.timeline-horizontal .timeline-item:last-child .timeline-item-date,.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child .timeline-item-date{left:0;right:calc(0px - var(--f7-safe-area-right));width:auto}.ios .block-strong .timeline-item-inner{border:1px solid rgba(0,0,0,.1);border-radius:3px}.ios .timeline-year-title span{margin-top:3px}.md .timeline-year-title span{margin-top:2px}.tabs .tab{display:none}.tabs .tab-active{display:block}.tabs-animated-wrap{height:100%;overflow:hidden;position:relative;width:100%}.tabs-animated-wrap>.tabs{display:flex;height:100%;transition-duration:.3s}.tabs-animated-wrap>.tabs>.tab{display:block;flex-shrink:0;width:100%}.tabs-animated-wrap.not-animated>.tabs{transition-duration:0ms}swiper-container.tabs{height:100%}swiper-container.tabs>.tab{display:block;touch-action:pan-y}.page>.tabs{height:100%}:root{--f7-panel-width:260px;--f7-panel-backdrop-bg-color:rgba(0,0,0,0.3);--f7-panel-bg-color:#fff}:root .dark,:root.dark{--f7-panel-bg-color:#000}.ios{--f7-panel-collapsed-width:58px;--f7-panel-transition-duration:400ms;--f7-panel-transition-timing-function:initial}.md{--f7-panel-collapsed-width:60px;--f7-panel-transition-duration:400ms;--f7-panel-transition-timing-function:cubic-bezier(0,0.8,0.34,1)}.panel-backdrop{background-color:var(--f7-panel-backdrop-bg-color);height:100%;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transform:translateZ(0);transition-duration:var(--f7-panel-transition-duration);transition-property:transform,opacity;visibility:hidden;width:100%;z-index:5999}.panel-backdrop .with-panel,.panel-backdrop .with-panel-closing{visibility:visible}.panel-backdrop.not-animated{transition-duration:0ms!important}.panel{background-color:var(--f7-panel-bg-color);box-sizing:border-box;height:100%;overflow:visible;position:absolute;top:0;transform:translateZ(0);transition-duration:var(--f7-panel-transition-duration);transition-property:transform;width:var(--f7-panel-width);z-index:1000}.panel:not(.panel-in):not(.panel-out):not(.panel-in-breakpoint):not(.panel-in-collapsed):not(.panel-in-swipe){display:none}.panel:after{content:"";height:100%;opacity:0;pointer-events:none;position:absolute;top:0;transition-duration:var(--f7-panel-transition-duration);transition-property:transform,opacity;width:20px;z-index:5999}.panel.not-animated,.panel.not-animated:after,.panel.panel-reveal.not-animated~.view,.panel.panel-reveal.not-animated~.views{transition-duration:0ms!important}.panel.panel-resizing{-webkit-user-select:none;user-select:none}.panel.panel-resizing,.panel.panel-resizing:after,.panel.panel-resizing~.view,.panel.panel-resizing~.views{transition-duration:0ms!important}.panel-cover,.panel-floating{z-index:6000}.panel-floating{border-radius:16px;bottom:calc(8px + var(--f7-safe-area-bottom, 0px));height:auto;overflow:hidden;top:calc(8px + var(--f7-safe-area-top, 0px))}.panel-floating .view,.panel-floating .views{--f7-safe-area-top:0px;--f7-safe-area-bottom:0px}.page .panel-floating{bottom:calc(8px + var(--f7-safe-area-bottom, 0px));top:calc(8px + var(--f7-page-navbar-offset, 0px))}.page .panel-floating .page{--f7-page-navbar-offset:0px}.page .panel-floating .navbars~*,.page .panel-floating .navbar~*{--f7-page-navbar-offset:calc(var(--f7-navbar-height))}.panel-left{left:0;width:var(--f7-panel-left-width,var(--f7-panel-width))}.panel-left.panel-cover,.panel-left.panel-floating,.panel-left.panel-push{transform:translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width))*-1),0,0)}.panel-right{right:0;width:var(--f7-panel-right-width,var(--f7-panel-width))}.panel-right.panel-cover,.panel-right.panel-floating,.panel-right.panel-push{transform:translate3d(var(--f7-panel-right-width,var(--f7-panel-width)),0,0)}.panel-in-breakpoint{transform:translateZ(0)!important;transition-duration:0ms}.panel-in-breakpoint:after{display:none}.panel-in-breakpoint.panel-cover,.panel-in-breakpoint.panel-floating{z-index:5900}.panel,.panel-backdrop{transition-timing-function:var(--f7-panel-transition-timing-function)}html.with-panel-closing .framework7-root>.view,html.with-panel-closing .views,html.with-panel-left-push .framework7-root>.view,html.with-panel-left-push .views,html.with-panel-left-reveal .framework7-root>.view,html.with-panel-left-reveal .views,html.with-panel-right-push .framework7-root>.view,html.with-panel-right-push .views,html.with-panel-right-reveal .framework7-root>.view,html.with-panel-right-reveal .views{transition-duration:var(--f7-panel-transition-duration);transition-property:transform;transition-timing-function:var(--f7-panel-transition-timing-function)}html.with-panel .framework7-root>.view .page-content,html.with-panel .framework7-root>.views .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}html.with-panel-left-push .framework7-root>.view,html.with-panel-left-push .views,html.with-panel-left-reveal .framework7-root>.view,html.with-panel-left-reveal .views{transform:translate3d(var(--f7-panel-left-width,var(--f7-panel-width)),0,0)}html.with-panel-right-push .framework7-root>.view,html.with-panel-right-push .views,html.with-panel-right-reveal .framework7-root>.view,html.with-panel-right-reveal .views{transform:translate3d(calc(var(--f7-panel-right-width, var(--f7-panel-width))*-1),0,0)}.page>.panel-backdrop{z-index:290}.page .panel-push,.page>.panel-reveal{z-index:1}.page>.panel-cover,.page>.panel-floating{z-index:300}.page.with-panel-closing>.page-content,.page.with-panel-closing>.tabs,.page.with-panel-left-push>.page-content,.page.with-panel-left-push>.tabs,.page.with-panel-left-reveal>.page-content,.page.with-panel-left-reveal>.tabs,.page.with-panel-right-push>.page-content,.page.with-panel-right-push>.tabs,.page.with-panel-right-reveal>.page-content,.page.with-panel-right-reveal>.tabs{transition-duration:var(--f7-panel-transition-duration);transition-property:transform;transition-timing-function:var(--f7-panel-transition-timing-function)}.page.with-panel-left-push>.page-content,.page.with-panel-left-push>.tabs,.page.with-panel-left-reveal>.page-content,.page.with-panel-left-reveal>.tabs{transform:translate3d(var(--f7-panel-left-width,var(--f7-panel-width)),0,0)}.page.with-panel-right-push>.page-content,.page.with-panel-right-push>.tabs,.page.with-panel-right-reveal>.page-content,.page.with-panel-right-reveal>.tabs{transform:translate3d(calc(var(--f7-panel-right-width, var(--f7-panel-width))*-1),0,0)}.with-panel-closing .panel-backdrop-in{opacity:0;pointer-events:auto;visibility:visible}.with-panel-left-cover .panel-backdrop-in,.with-panel-left-floating .panel-backdrop-in,.with-panel-left-push .panel-backdrop-in,.with-panel-left-reveal .panel-backdrop-in,.with-panel-right-cover .panel-backdrop-in,.with-panel-right-floating .panel-backdrop-in,.with-panel-right-push .panel-backdrop-in,.with-panel-right-reveal .panel-backdrop-in{opacity:1;pointer-events:auto;visibility:visible}.with-panel-left-push .panel-backdrop-in,.with-panel-left-reveal .panel-backdrop-in{transform:translate3d(var(--f7-panel-left-width,var(--f7-panel-width)),0,0)}.with-panel-right-push .panel-backdrop-in,.with-panel-right-reveal .panel-backdrop-in{transform:translate3d(calc(var(--f7-panel-right-width, var(--f7-panel-width))*-1),0,0)}.with-panel-left-cover .panel-left,.with-panel-left-push .panel-left{transform:translateZ(0)}.with-panel-left-floating .panel-left{transform:translate3d(8px,0,0)}.with-panel-right-cover .panel-right,.with-panel-right-push .panel-right{transform:translateZ(0)}.with-panel-right-floating .panel-right{transform:translate3d(-8px,0,0)}.panel-resizable{max-width:100%}.panel-resize-handler{cursor:col-resize;display:none;height:100%;position:absolute;top:0;width:6px;z-index:6000}.panel-resizable .panel-resize-handler{display:block}.panel-left.panel-cover .panel-resize-handler,.panel-left.panel-floating .panel-resize-handler{right:-3px}.panel-left.panel-push .panel-resize-handler,.panel-left.panel-reveal .panel-resize-handler{right:0}.panel-right.panel-cover .panel-resize-handler,.panel-right.panel-floating .panel-resize-handler{left:-3px}.panel-right.panel-push .panel-resize-handler,.panel-right.panel-reveal .panel-resize-handler{left:0}.panel-left.panel-in-collapsed~.page-content,.panel-left.panel-in-collapsed~.tabs,.panel-left.panel-in-collapsed~.view,.panel-left.panel-in-collapsed~.views{margin-left:var(--f7-panel-left-collapsed-width,var(--f7-panel-collapsed-width))}.page.with-panel-left-reveal .panel-left.panel-in-collapsed~.page-content,.page.with-panel-left-reveal .panel-left.panel-in-collapsed~.tabs,html.with-panel-left-reveal .panel-left.panel-in-collapsed~.view,html.with-panel-left-reveal .panel-left.panel-in-collapsed~.views{transform:translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width)) - var(--f7-panel-left-collapsed-width, var(--f7-panel-collapsed-width))),0,0)}.panel-right.panel-in-collapsed~.page-content,.panel-right.panel-in-collapsed~.tabs,.panel-right.panel-in-collapsed~.view,.panel-right.panel-in-collapsed~.views{margin-right:var(--f7-panel-right-collapsed-width,var(--f7-panel-collapsed-width))}.page.with-panel-right-reveal .panel-right.panel-in-collapsed~.page-content,.page.with-panel-right-reveal .panel-right.panel-in-collapsed~.tabs,html.with-panel-right-reveal .panel-right.panel-in-collapsed~.view,html.with-panel-right-reveal .panel-right.panel-in-collapsed~.views{transform:translate3d(calc(var(--f7-panel-right-collapsed-width, var(--f7-panel-collapsed-width)) - var(--f7-panel-right-width, var(--f7-panel-width))),0,0)}html.with-modal-popup-push .framework7-root,html.with-modal-popup-push-closing .framework7-root{--f7-panelPushScale:var(--f7-popup-push-scale);--f7-panelPushTransitionDuration:var(--f7-popup-transition-duration);--f7-panelPushTransitionTimingFunction:var(--f7-popup-transition-timing-function);--f7-panelPushBorderRadius:var(--f7-popup-push-border-radius)}html.with-modal-sheet-push .framework7-root,html.with-modal-sheet-push-closing .framework7-root{--f7-panelPushScale:var(--f7-sheet-push-scale);--f7-panelPushTransitionDuration:var(--f7-sheet-transition-duration);--f7-panelPushTransitionTimingFunction:var(--f7-sheet-transition-timing-function);--f7-panelPushBorderRadius:var(--f7-sheet-push-border-radius)}html.with-modal-popup-push .framework7-root>.panel-in,html.with-modal-popup-push .framework7-root>.panel-out,html.with-modal-sheet-push .framework7-root>.panel-in,html.with-modal-sheet-push .framework7-root>.panel-out{transition-duration:var(--f7-panelPushTransitionDuration);transition-timing-function:var(--f7-panelPushTransitionTimingFunction)}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-left,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-left,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-left,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-left,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-left,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-left{border-top-left-radius:var(--f7-panelPushBorderRadius);transform:scale(var(--f7-panelPushScale,1));transform-origin:50vw center}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-left .view,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-left .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-left .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-left .view{border-top-left-radius:var(--f7-panelPushBorderRadius)}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-right,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-right,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-right,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-right,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-right,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-right{border-top-right-radius:var(--f7-panelPushBorderRadius);transform:scale(var(--f7-panelPushScale,1));transform-origin:calc(var(--f7-panel-left-width, var(--f7-panel-width)) - 50vw) center}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-right .view,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-right .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-right .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-right .view{border-top-right-radius:var(--f7-panelPushBorderRadius)}html.with-modal-popup-push .framework7-root>.panel-in.panel-cover.panel-left,html.with-modal-popup-push .framework7-root>.panel-out.panel-cover.panel-left,html.with-modal-sheet-push .framework7-root>.panel-in.panel-cover.panel-left,html.with-modal-sheet-push .framework7-root>.panel-out.panel-cover.panel-left{transform:translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width))*-1),0,0)}html.with-modal-popup-push .framework7-root>.panel-in.panel-cover.panel-right,html.with-modal-popup-push .framework7-root>.panel-out.panel-cover.panel-right,html.with-modal-sheet-push .framework7-root>.panel-in.panel-cover.panel-right,html.with-modal-sheet-push .framework7-root>.panel-out.panel-cover.panel-right{transform:translate3d(var(--f7-panel-right-width,var(--f7-panel-width)),0,0)}html.with-modal-popup-push-closing .framework7-root>.panel-in,html.with-modal-sheet-push-closing .framework7-root>.panel-in{transition-duration:var(--f7-panelPushTransitionDuration);transition-timing-function:var(--f7-panelPushTransitionTimingFunction)}html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-reveal.panel-left,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-reveal.panel-left{transform-origin:50vw center}html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-reveal.panel-right,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-reveal.panel-right{transform-origin:calc(var(--f7-panel-right-width, var(--f7-panel-width)) - 50vw) center}.md .panel-cover{overflow:hidden}.md .panel-cover.panel-left{border-radius:0 16px 16px 0}.md .panel-cover.panel-right{border-radius:16px 0 0 16px}:root{--f7-card-margin-horizontal:16px;--f7-card-margin-vertical:16px;--f7-card-content-padding-horizontal:16px;--f7-card-content-padding-vertical:16px;--f7-card-font-size:inherit;--f7-card-header-text-color:inherit;--f7-card-header-font-weight:400;--f7-card-header-padding-horizontal:16px;--f7-card-footer-font-weight:400;--f7-card-footer-font-size:inherit;--f7-card-footer-padding-horizontal:16px;--f7-card-expandable-font-size:16px;--f7-card-expandable-tablet-width:670px;--f7-card-expandable-tablet-height:670px}.ios{--f7-card-border-radius:8px;--f7-card-box-shadow:0px 1px 2px rgba(0,0,0,0.2);--f7-card-header-font-size:17px;--f7-card-header-padding-vertical:10px;--f7-card-header-min-height:44px;--f7-card-footer-text-color:rgba(0,0,0,0.45);--f7-card-footer-padding-vertical:10px;--f7-card-footer-min-height:44px;--f7-card-expandable-margin-horizontal:20px;--f7-card-expandable-margin-vertical:30px;--f7-card-expandable-box-shadow:0px 20px 40px rgba(0,0,0,0.3);--f7-card-expandable-border-radius:16px;--f7-card-expandable-tablet-border-radius:16px;--f7-card-expandable-header-font-size:27px;--f7-card-expandable-header-font-weight:bold;--f7-card-text-color:inherit;--f7-card-bg-color:#fff;--f7-card-expandable-bg-color:#fff;--f7-card-outline-border-color:rgba(0,0,0,0.12);--f7-card-header-border-color:rgba(0,0,0,0.1);--f7-card-footer-border-color:rgba(0,0,0,0.1)}.ios .dark,.ios.dark{--f7-card-bg-color:#1c1c1d;--f7-card-expandable-bg-color:#1c1c1d;--f7-card-outline-border-color:rgba(255,255,255,0.15);--f7-card-header-border-color:rgba(255,255,255,0.15);--f7-card-footer-border-color:rgba(255,255,255,0.15);--f7-card-footer-text-color:rgba(255,255,255,0.55)}.md{--f7-card-border-radius:16px;--f7-card-box-shadow:0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);--f7-card-header-font-size:22px;--f7-card-header-padding-vertical:16px;--f7-card-header-min-height:48px;--f7-card-footer-padding-vertical:16px;--f7-card-footer-min-height:48px;--f7-card-expandable-margin-horizontal:12px;--f7-card-expandable-margin-vertical:24px;--f7-card-expandable-box-shadow:0px 6px 6px -3px rgba(0,0,0,0.2),0px 10px 14px 1px rgba(0,0,0,0.14),0px 4px 18px 3px rgba(0,0,0,0.12);--f7-card-expandable-border-radius:16px;--f7-card-expandable-tablet-border-radius:16px;--f7-card-expandable-header-font-size:22px;--f7-card-expandable-header-font-weight:500}.md,.md .dark,.md [class*=color-]{--f7-card-bg-color:var(--f7-md-surface-1);--f7-card-expandable-bg-color:var(--f7-md-surface-1);--f7-card-outline-border-color:var(--f7-md-outline);--f7-card-header-border-color:var(--f7-md-outline);--f7-card-footer-border-color:var(--f7-md-outline);--f7-card-text-color:var(--f7-md-on-surface);--f7-card-footer-text-color:var(--f7-md-on-surface-variant)}.card .list>ul:after,.card .list>ul:before,.cards-list>ul:after,.cards-list>ul:before{display:none!important}.card .list ul,.cards-list ul{background:none}.card{background:var(--f7-card-bg-color);border-radius:var(--f7-card-border-radius);color:var(--f7-card-text-color);font-size:var(--f7-card-font-size);margin:var(--f7-card-margin-vertical) calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-right)) var(--f7-card-margin-vertical) calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-left));position:relative}.card .block,.card .list{margin:0}.row:not(.no-gap) .col>.card{margin-left:0;margin-right:0}.card-raised{box-shadow:var(--f7-card-box-shadow)}.card-outline,.ios .card-outline-ios,.md .card-outline-md{border:1px solid var(--f7-card-outline-border-color)}.card-content{position:relative}.card-content-padding{padding:var(--f7-card-content-padding-vertical) var(--f7-card-content-padding-horizontal);position:relative}.card-content-padding>.block,.card-content-padding>.list{margin:calc(var(--f7-card-content-padding-vertical)*-1) calc(var(--f7-card-content-padding-horizontal)*-1)}.card-content-padding>p:first-child{margin-top:0}.card-content-padding>p:last-child{margin-bottom:0}.card-header{color:var(--f7-card-header-text-color);font-size:var(--f7-card-header-font-size);font-weight:var(--f7-card-header-font-weight);min-height:var(--f7-card-header-min-height);padding:var(--f7-card-header-padding-vertical) var(--f7-card-header-padding-horizontal)}.card-dividers .card-header,.card-header-divider .card-header,.card-header.card-header-divider{border-bottom:1px solid var(--f7-card-header-border-color)}.card-footer{color:var(--f7-card-footer-text-color);font-size:var(--f7-card-footer-font-size);font-weight:var(--f7-card-footer-font-weight);min-height:var(--f7-card-footer-min-height);padding:var(--f7-card-footer-padding-vertical) var(--f7-card-footer-padding-horizontal)}.card-dividers .card-footer,.card-footer-divider .card-footer,.card-footer.card-footer-divider{border-top:1px solid var(--f7-card-header-border-color)}.card-footer a.link{overflow:hidden}.card-footer,.card-header{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;position:relative}.card-footer[valign=top],.card-header[valign=top]{align-items:flex-start}.card-footer[valign=bottom],.card-header[valign=bottom]{align-items:flex-end}.card-footer a.link,.card-header a.link{position:relative}.card-footer a.link i.icon,.card-header a.link i.icon{display:block}.card-footer a.icon-only,.card-header a.icon-only{align-items:center;display:flex;justify-content:center;margin:0}.card-header{border-radius:var(--f7-card-border-radius) var(--f7-card-border-radius) 0 0}.card-footer{border-radius:0 0 var(--f7-card-border-radius) var(--f7-card-border-radius)}.card-expandable{background:var(--f7-card-expandable-bg-color);border-radius:var(--f7-card-expandable-border-radius);font-size:var(--f7-card-expandable-font-size);height:300px;margin:var(--f7-card-expandable-margin-vertical) calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-right)) var(--f7-card-expandable-margin-vertical) calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-left));overflow:hidden;position:relative;transform-origin:center center;transition-duration:.2s;transition-property:transform,border-radius;z-index:2}.card-expandable.card-raised{box-shadow:var(--f7-card-expandable-box-shadow)}.card-expandable:not(.card-opened){-webkit-user-select:none;user-select:none}.card-expandable.card-no-transition{transition-duration:0ms}.card-expandable.card-expandable-animate-width .card-content{transition-property:width,transform;width:100%}.card-expandable.active-state{transform:scale(.97) translateZ(0)}.card-expandable .card-opened-fade-in,.card-expandable .card-opened-fade-out{transition-duration:.4s}.card-expandable .card-opened-fade-in{opacity:0;pointer-events:none}.card-expandable .card-content{box-sizing:border-box;height:100vh;overflow:hidden;pointer-events:none;position:absolute;right:0;top:0;transform-origin:center top;transition-property:transform;width:100vw}.card-expandable .card-content .card-content-padding{padding-left:calc(var(--f7-safe-area-left) + var(--f7-card-content-padding-horizontal));padding-right:calc(var(--f7-safe-area-right) + var(--f7-card-content-padding-horizontal))}.card-expandable.card-opened{transition-duration:0ms}.card-expandable.card-closing,.card-expandable.card-opening,.card-expandable.card-transitioning{transition-duration:.4s}.card-expandable.card-opening .card-content{transition-duration:.3s}.card-expandable.card-closing .card-content{transition-duration:.5s}.card-expandable.card-closing,.card-expandable.card-opened,.card-expandable.card-opening{z-index:300}.card-expandable.card-opened,.card-expandable.card-opening{border-radius:0}.card-expandable.card-opened .card-opened-fade-in,.card-expandable.card-opening .card-opened-fade-in{opacity:1;pointer-events:auto}.card-expandable.card-opened .card-opened-fade-out,.card-expandable.card-opening .card-opened-fade-out{opacity:0;pointer-events:none}.card-expandable.card-opened .card-content{-webkit-overflow-scrolling:touch;overflow:auto;pointer-events:auto}.card-expandable .card-header{font-size:var(--f7-card-expandable-header-font-size);font-weight:var(--f7-card-expandable-header-font-weight)}.card-prevent-open{pointer-events:auto}.card-expandable-size{height:0;left:0;opacity:0;pointer-events:none;position:absolute;top:0;visibility:hidden;width:0}@media (min-width:768px) and (min-height:670px){.card-expandable:not(.card-tablet-fullscreen){max-width:var(--f7-card-expandable-tablet-width)}.card-expandable:not(.card-tablet-fullscreen).card-opened,.card-expandable:not(.card-tablet-fullscreen).card-opening{border-radius:var(--f7-card-expandable-tablet-border-radius)}.card-expandable:not(.card-tablet-fullscreen):not(.card-expandable-animate-width) .card-content{width:var(--f7-card-expandable-tablet-width)}.card-expandable:not(.card-tablet-fullscreen) .card-expandable-size{height:var(--f7-card-expandable-tablet-height);width:var(--f7-card-expandable-tablet-width)}}.page.page-with-card-opened .page-content{overflow:hidden}.card-backdrop{background:rgba(0,0,0,.2);height:100%;left:0;opacity:0;pointer-events:none;position:fixed;top:0;width:100%;z-index:299}.card-backdrop-in{animation:card-backdrop-fade-in .4s forwards;pointer-events:auto}.card-backdrop-out{animation:card-backdrop-fade-out .4s forwards}@supports ((-webkit-backdrop-filter:blur(15px)) or (backdrop-filter:blur(15px))){.card-backdrop{-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background:transparent}}@keyframes card-backdrop-fade-in{0%{opacity:0}to{opacity:1}}@keyframes card-backdrop-fade-out{0%{opacity:1}to{opacity:0}}:root{--f7-chip-font-size:14px;--f7-chip-media-font-size:16px;--f7-chip-delete-button-color:#000}:root .dark,:root.dark{--f7-chip-delete-button-color:#fff}.ios{--f7-chip-height:28px;--f7-chip-media-size:28px;--f7-chip-padding-horizontal:10px;--f7-chip-border-radius:28px;--f7-chip-font-weight:normal;--f7-chip-outline-border-color:rgba(0,0,0,0.12);--f7-chip-bg-color:rgba(0,0,0,0.12);--f7-chip-text-color:#000;--f7-chip-outline-text-color:#000}.ios .dark,.ios.dark{--f7-chip-bg-color:#333;--f7-chip-text-color:#fff;--f7-chip-outline-text-color:#fff;--f7-chip-outline-border-color:rgba(255,255,255,0.12)}.md{--f7-chip-font-weight:500;--f7-chip-media-size:24px;--f7-chip-height:32px;--f7-chip-padding-horizontal:12px;--f7-chip-border-radius:8px}.md,.md .dark,.md [class*=color-]{--f7-chip-bg-color:var(--f7-md-secondary-container);--f7-chip-text-color:var(--f7-md-on-secondary-container);--f7-chip-outline-text-color:var(--f7-md-on-surface);--f7-chip-outline-border-color:var(--f7-md-outline)}.chip{background-color:var(--f7-chip-bg-color);border-radius:var(--f7-chip-border-radius);color:var(--f7-chip-text-color);display:inline-flex;font-size:var(--f7-chip-font-size);font-weight:var(--f7-chip-font-weight);height:var(--f7-chip-height);line-height:var(--f7-chip-height);margin:2px 0;padding-left:var(--f7-chip-padding-horizontal);padding-right:var(--f7-chip-padding-horizontal);position:relative}.chip,.chip-media{align-items:center;box-sizing:border-box;vertical-align:middle}.chip-media{border-radius:50%;border-radius:var(--f7-chip-media-size);color:#fff;display:flex;flex-shrink:0;font-size:var(--f7-chip-media-font-size);height:var(--f7-chip-media-size);justify-content:center;line-height:var(--f7-chip-media-size);text-align:center;width:var(--f7-chip-media-size)}.chip-media i.icon{font-size:calc(var(--f7-chip-media-size) - 8px);height:calc(var(--f7-chip-media-size) - 8px)}.chip-media img{border-radius:50%;display:block;height:auto;max-height:100%;max-width:100%;width:auto}.chip-media+.chip-label{margin-right:4px}.chip-label{flex-shrink:1;min-width:0;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}.chip-delete{background-repeat:no-repeat;color:var(--f7-chip-delete-button-color);cursor:pointer;flex-shrink:0;height:24px;opacity:.54;position:relative;text-align:center;width:24px}.chip-delete:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;line-height:24px;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.chip .chip-delete.active-state{opacity:1}.chip-outline,.ios .chip-outline-ios,.md .chip-outline-md{background:none;border:1px solid var(--f7-chip-outline-border-color);color:var(--f7-chip-outline-text-color)}.ios .chip[class*=color-]{--f7-chip-bg-color:var(--f7-theme-color);--f7-chip-text-color:#fff}.ios .chip-outline-ios[class*=color-],.ios .chip-outline[class*=color-]{--f7-chip-outline-border-color:var(--f7-theme-color);--f7-chip-outline-text-color:var(--f7-theme-color)}.ios .chip-media{margin-right:calc(var(--f7-chip-padding-horizontal)*-1)}.ios .chip-delete{margin-left:calc(var(--f7-chip-padding-horizontal)*-1)}.ios .chip-delete:after{content:"delete_round_ios";font-size:10px}.md .chip-media{margin-right:calc(var(--f7-chip-padding-horizontal)*-1 + 4px)}.md .chip-label+.chip-delete{margin-right:4px}.md .chip-delete{margin-left:calc(var(--f7-chip-padding-horizontal)*-1 + 4px)}.md .chip-delete:after{content:"delete_round_md";font-size:16px}:root{--f7-input-bg-color:transparent;--f7-label-font-weight:400;--f7-label-height:16px;--f7-label-font-size:12px;--f7-floating-label-scale:1.33333;--f7-input-padding-left:0px;--f7-input-padding-right:0px;--f7-input-error-text-color:#ff3b30;--f7-input-error-font-size:12px;--f7-input-error-line-height:1.4;--f7-input-error-font-weight:400;--f7-input-info-font-size:12px;--f7-input-info-line-height:1.4;--f7-textarea-height:100px}.ios{--f7-input-item-bg-color:transparent;--f7-input-item-border-radius:0px;--f7-input-height:40px;--f7-input-font-size:16px;--f7-input-placeholder-color:#a9a9a9;--f7-textarea-padding-vertical:8px;--f7-label-text-color:inherit;--f7-input-clear-button-size:14px;--f7-input-outline-border-radius:8px;--f7-input-text-color:#000000;--f7-input-info-text-color:rgba(0,0,0,0.45);--f7-input-clear-button-color:rgba(0,0,0,0.45);--f7-input-outline-border-color:#bbb}.ios .dark,.ios.dark{--f7-input-text-color:#fff;--f7-input-info-text-color:rgba(255,255,255,0.55);--f7-input-clear-button-color:rgba(255,255,255,0.5);--f7-input-outline-border-color:#444}.md{--f7-input-item-border-radius:4px 4px 0 0;--f7-input-height:24px;--f7-input-font-size:16px;--f7-textarea-padding-vertical:0px;--f7-input-outline-border-radius:4px;--f7-floating-label-scale:1.33333;--f7-input-clear-button-size:24px;--f7-input-info-text-color:rgba(0,0,0,0.45)}.md .dark,.md.dark{--f7-input-info-text-color:rgba(255,255,255,0.45)}.md,.md .dark,.md [class*=color-]{--f7-input-placeholder-color:var(--f7-md-on-surface-variant);--f7-input-item-bg-color:var(--f7-md-surface-variant);--f7-input-border-color:var(--f7-md-outline);--f7-input-clear-button-color:var(--f7-md-on-surface-variant);--f7-input-outline-border-color:var(--f7-md-outline);--f7-input-text-color:var(--f7-md-on-surface);--f7-label-text-color:var(--f7-md-on-surface-variant)}input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],select,textarea{-webkit-appearance:none;appearance:none;background:none;border:none;border-radius:0;box-shadow:none;box-sizing:border-box;color:inherit;display:block;font-family:inherit;font-size:inherit;margin:0;outline:0;padding:0;resize:none}input[type=date]:-internal-autofill-selected,input[type=datetime-local]:-internal-autofill-selected,input[type=email]:-internal-autofill-selected,input[type=month]:-internal-autofill-selected,input[type=number]:-internal-autofill-selected,input[type=password]:-internal-autofill-selected,input[type=search]:-internal-autofill-selected,input[type=tel]:-internal-autofill-selected,input[type=text]:-internal-autofill-selected,input[type=time]:-internal-autofill-selected,input[type=url]:-internal-autofill-selected,select:-internal-autofill-selected,textarea:-internal-autofill-selected{background-color:initial!important;transition:background-color 5000s ease-in-out 0s!important}input[type=date]:-webkit-autofill,input[type=datetime-local]:-webkit-autofill,input[type=email]:-webkit-autofill,input[type=month]:-webkit-autofill,input[type=number]:-webkit-autofill,input[type=password]:-webkit-autofill,input[type=search]:-webkit-autofill,input[type=tel]:-webkit-autofill,input[type=text]:-webkit-autofill,input[type=time]:-webkit-autofill,input[type=url]:-webkit-autofill,select:-webkit-autofill,textarea:-webkit-autofill{background-color:initial!important;-webkit-transition:background-color 5000s ease-in-out 0s!important;transition:background-color 5000s ease-in-out 0s!important}input[type=date]:-webkit-autofill-and-obscured,input[type=date]:autofill,input[type=datetime-local]:-webkit-autofill-and-obscured,input[type=datetime-local]:autofill,input[type=email]:-webkit-autofill-and-obscured,input[type=email]:autofill,input[type=month]:-webkit-autofill-and-obscured,input[type=month]:autofill,input[type=number]:-webkit-autofill-and-obscured,input[type=number]:autofill,input[type=password]:-webkit-autofill-and-obscured,input[type=password]:autofill,input[type=search]:-webkit-autofill-and-obscured,input[type=search]:autofill,input[type=tel]:-webkit-autofill-and-obscured,input[type=tel]:autofill,input[type=text]:-webkit-autofill-and-obscured,input[type=text]:autofill,input[type=time]:-webkit-autofill-and-obscured,input[type=time]:autofill,input[type=url]:-webkit-autofill-and-obscured,input[type=url]:autofill,select:-webkit-autofill-and-obscured,select:autofill,textarea:-webkit-autofill-and-obscured,textarea:autofill{background-color:initial!important;-webkit-transition:background-color 5000s ease-in-out 0s!important;transition:background-color 5000s ease-in-out 0s!important}.textarea-resizable-shadow{left:-1000px;opacity:0;pointer-events:none;position:absolute;top:-1000px;visibility:hidden;z-index:-1000}.list input[type=date],.list input[type=datetime-local],.list input[type=email],.list input[type=month],.list input[type=number],.list input[type=password],.list input[type=search],.list input[type=tel],.list input[type=text],.list input[type=time],.list input[type=url],.list select{background-color:var(--f7-input-bg-color,transparent);color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);height:var(--f7-input-height);padding-left:var(--f7-input-padding-left);padding-right:var(--f7-input-padding-right);width:100%}.list input[type=date]::placeholder,.list input[type=datetime-local]::placeholder,.list input[type=email]::placeholder,.list input[type=month]::placeholder,.list input[type=number]::placeholder,.list input[type=password]::placeholder,.list input[type=search]::placeholder,.list input[type=tel]::placeholder,.list input[type=text]::placeholder,.list input[type=time]::placeholder,.list input[type=url]::placeholder,.list select::placeholder{color:var(--f7-input-placeholder-color)}.list textarea{background-color:var(--f7-input-bg-color,transparent);color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);height:var(--f7-textarea-height);line-height:1.4;padding:var(--f7-textarea-padding-vertical) var(--f7-input-padding-right) var(--f7-textarea-padding-vertical) var(--f7-input-padding-left);resize:none;width:100%}.list textarea::placeholder{color:var(--f7-input-placeholder-color)}.list textarea.resizable{height:calc(var(--f7-input-height) + var(--f7-textarea-padding-vertical)*2)}.list input[type=date],.list input[type=datetime-local],.list input[type=month],.list input[type=time]{line-height:var(--f7-input-height)}.list input[type=date],.list input[type=datetime-local],.list input[type=month]{flex-direction:row-reverse;text-align:right;width:auto}.list .item-floating-label,.list .item-label{color:var(--f7-label-text-color);flex-shrink:0;font-size:var(--f7-label-font-size);font-weight:var(--f7-label-font-weight);line-height:var(--f7-label-height);transition-duration:.2s;transition-property:transform,color;vertical-align:top;width:auto}.list .item-floating-label{color:var(--f7-input-placeholder-color);max-width:calc(100%/var(--f7-floating-label-scale));pointer-events:none;right:var(--f7-input-padding-right);transform-origin:right center}.list .item-floating-label~.item-input-wrap input::placeholder,.list .item-floating-label~.item-input-wrap textarea::placeholder{opacity:0;transition-duration:.1s}.list .item-floating-label~.item-input-wrap input.input-focused::placeholder,.list .item-floating-label~.item-input-wrap textarea.input-focused::placeholder{opacity:1;transition-duration:.3s}.list .item-input-with-value .item-floating-label{color:var(--f7-label-text-color)}.list .item-input-focused .item-floating-label,.list .item-input-with-value .item-floating-label{transform:scale(1) translateY(0)!important}.list .item-input-wrap{flex-shrink:1;position:relative;width:100%}.input,.item-input{position:relative}.item-input .item-inner{align-items:flex-start;display:flex;flex-direction:column;justify-content:center}.input-error-message,.item-input-error-message{box-sizing:border-box;color:var(--f7-input-error-text-color);display:none;font-size:var(--f7-input-error-font-size);font-weight:var(--f7-input-error-font-weight);line-height:var(--f7-input-error-line-height)}.input-info,.item-input-info{color:var(--f7-input-info-text-color);font-size:var(--f7-input-info-font-size);line-height:var(--f7-input-info-line-height)}.input-invalid .input-error-message,.input-invalid .item-input-error-message,.item-input-invalid .input-error-message,.item-input-invalid .item-input-error-message{display:block}.input-invalid .input-info,.input-invalid .item-input-info,.item-input-invalid .input-info,.item-input-invalid .item-input-info{display:none}.input{position:relative}.input input,.input select,.input textarea{width:100%}.input-clear-button{background:none;border:none;color:var(--f7-input-clear-button-color);cursor:pointer;height:var(--f7-input-clear-button-size);left:0;margin:0;margin-top:calc(var(--f7-input-clear-button-size)*-1/2);opacity:0;outline:0;padding:0;pointer-events:none;position:absolute;top:50%;transition-duration:.1s;visibility:hidden;width:var(--f7-input-clear-button-size);z-index:1}.input-clear-button:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.input-clear-button:before{content:"";left:50%;position:absolute;top:50%}.item-input-wrap .input-clear-button{top:calc(var(--f7-input-height)/2)}.input-clear-button.active-state{opacity:.75!important}.input-with-value .input-clear-button,.input-with-value~.input-clear-button,.item-input-with-value .input-clear-button{opacity:1;pointer-events:auto;visibility:visible}.input-dropdown,.input-dropdown-wrap{position:relative}.input-dropdown-wrap:before,.input-dropdown:before{border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #727272;content:"";height:0;left:6px;margin-top:-2px;pointer-events:none;position:absolute;top:50%;width:0}.input-dropdown input,.input-dropdown select,.input-dropdown textarea,.input-dropdown-wrap input,.input-dropdown-wrap select,.input-dropdown-wrap textarea{padding-left:calc(20px + var(--f7-input-padding-left))}.input-outline:after,.item-input-outline .item-content:after,.item-input-outline.item-content:after{border:1px solid var(--f7-input-outline-border-color);border-radius:var(--f7-input-outline-border-radius);bottom:8px;box-sizing:border-box;content:"";left:0;pointer-events:none;position:absolute;right:0;top:8px;transition-duration:.2s}.input-outline .item-floating-label,.input-outline .item-label,.item-input-outline .item-content .item-floating-label,.item-input-outline .item-content .item-label,.item-input-outline.item-content .item-floating-label,.item-input-outline.item-content .item-label{background:var(--f7-page-bg-color);padding:4px;pointer-events:none;z-index:1}.input-outline.input-focused:after,.input-outline.item-input-focused:after,.item-input-outline .item-content.input-focused:after,.item-input-outline .item-content.item-input-focused:after,.item-input-outline.item-content.input-focused:after,.item-input-outline.item-content.item-input-focused:after{border-color:var(--f7-input-outline-invalid-border-color,var(--f7-theme-color));border-width:2px}.input-outline.input-invalid:after,.input-outline.item-input-invalid:after,.item-input-outline .item-content.input-invalid:after,.item-input-outline .item-content.item-input-invalid:after,.item-input-outline.item-content.input-invalid:after,.item-input-outline.item-content.item-input-invalid:after{border-color:var(--f7-input-outline-invalid-border-color,var(--f7-input-error-text-color));border-width:2px}.block-strong .item-input-outline .item-floating-label,.block-strong .item-input-outline .item-label,.ios .block-strong-ios .item-input-outline .item-floating-label,.ios .block-strong-ios .item-input-outline .item-label,.md .block-strong-md .item-input-outline .item-floating-label,.md .block-strong-md .item-input-outline .item-label{background:var(--f7-block-strong-bg-color)!important}.ios .list-strong-ios .item-input-outline .item-floating-label,.ios .list-strong-ios .item-input-outline .item-label,.list-strong .item-input-outline .item-floating-label,.list-strong .item-input-outline .item-label,.md .list-strong-md .item-input-outline .item-floating-label,.md .list-strong-md .item-input-outline .item-label{background:var(--f7-list-strong-bg-color)!important}.dark option{background-color:var(--f7-page-bg-color)}.ios .item-floating-label+.item-input-wrap,.ios .item-label+.item-input-wrap{margin-top:0}.ios .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height) + 25%))}.ios .item-input-focused .item-floating-label{color:var(--f7-label-text-color)}.ios .item-input .item-media{align-self:flex-start}.ios .item-input-wrap{margin-bottom:calc(var(--f7-list-item-padding-vertical)*-1);margin-top:calc(var(--f7-list-item-padding-vertical)*-1)}.ios .item-input:not(.item-input-outline) .item-content,.ios .item-input:not(.item-input-outline).item-content{background:var(--f7-input-item-bg-color)}.ios .input-error-message,.ios .input-info,.ios .item-input-error-message,.ios .item-input-info{margin-bottom:6px;margin-top:-8px;position:relative}.ios .item-input-focused .item-floating-label,.ios .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-label-text-color))}.ios .item-input-focused .item-inner:after{background:var(--f7-input-focused-border-color,var(--f7-list-item-border-color))}.ios .item-input-invalid .item-floating-label,.ios .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-label-text-color))}.ios .item-input-invalid .item-inner:after{background:var(--f7-input-invalid-border-color,var(--f7-list-item-border-color))}.ios .input-invalid input,.ios .input-invalid select,.ios .input-invalid textarea,.ios .item-input-invalid input,.ios .item-input-invalid select,.ios .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-error-text-color))}.ios .input-clear-button:after{content:"delete_round_ios";font-size:calc(var(--f7-input-clear-button-size)/1.4);line-height:1.4}.ios .input-clear-button:before{height:44px;margin-left:-22px;margin-top:-22px;width:44px}.ios .item-input-outline .item-content,.ios .item-input-outline.item-content{margin-left:16px;margin-right:16px;padding-bottom:8px;padding-top:8px}.ios li.item-input-outline:first-child,.ios li:first-child>.item-input-outline{padding-top:16px}.ios li.item-input-outline:first-child:after,.ios li:first-child>.item-input-outline:after{top:16px}.ios li.item-input-outline:last-child,.ios li:last-child>.item-input-outline{padding-bottom:16px}.ios li.item-input-outline:last-child:after,.ios li:last-child>.item-input-outline:after{bottom:16px}.ios .input-outline .item-inner,.ios .item-input-outline .item-content .item-inner,.ios .item-input-outline.item-content .item-inner{display:block;padding-bottom:0;padding-top:0}.ios .input-outline .item-input-wrap,.ios .item-input-outline .item-content .item-input-wrap,.ios .item-input-outline.item-content .item-input-wrap{margin-top:2px}.ios .input-outline .item-title+.item-input-wrap,.ios .item-input-outline .item-content .item-title+.item-input-wrap,.ios .item-input-outline.item-content .item-title+.item-input-wrap{margin-top:-22px}.ios .input-outline .item-floating-label,.ios .input-outline .item-label,.ios .item-input-outline .item-content .item-floating-label,.ios .item-input-outline .item-content .item-label,.ios .item-input-outline.item-content .item-floating-label,.ios .item-input-outline.item-content .item-label{display:inline-flex;margin:-8px -4px -4px;top:-4px}.ios .input-outline .item-floating-label,.ios .item-input-outline .item-content .item-floating-label,.ios .item-input-outline.item-content .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height)))}.md .item-input-wrap{min-height:var(--f7-input-height)}.md .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc((var(--f7-input-height)/2)/var(--f7-floating-label-scale)))}.md .item-input .item-inner:after{display:none!important}.md .item-input .item-content,.md .item-input.item-content{margin-left:16px;margin-right:16px;padding-bottom:8px;padding-top:8px}.md .input:after{background-color:var(--f7-input-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform:scaleY(1)!important;transform-origin:50% 100%;transition-duration:.2s;width:100%;z-index:15}.md .input.input-focused:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color));transform:scaleY(2)!important}.md .input.input-invalid:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color));transform:scaleY(2)!important}.md .item-input:not(.item-input-outline) .item-content:after,.md .item-input:not(.item-input-outline).item-content:after{background-color:var(--f7-input-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.md .item-input:not(.item-input-outline) .item-content:before,.md .item-input:not(.item-input-outline).item-content:before{background:var(--f7-input-item-bg-color);border-radius:var(--f7-input-item-border-radius);bottom:8px;content:"";left:0;pointer-events:none;position:absolute;right:0;top:8px}.md .item-input:not(.item-input-outline) .item-content:after,.md .item-input:not(.item-input-outline).item-content:after{bottom:8px;transform:scaleY(1)!important;transition-duration:.2s}.md .item-input:not(.item-input-outline) .item-content.item-input-focused:after,.md .item-input:not(.item-input-outline).item-content.item-input-focused:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color));transform:scaleY(2)!important}.md .item-input:not(.item-input-outline) .item-content.input-invalid:after,.md .item-input:not(.item-input-outline) .item-content.item-input-invalid:after,.md .item-input:not(.item-input-outline).item-content.input-invalid:after,.md .item-input:not(.item-input-outline).item-content.item-input-invalid:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color));transform:scaleY(2)!important}.md .input-outline .item-inner,.md .item-input-outline .item-content .item-inner,.md .item-input-outline.item-content .item-inner{padding-bottom:16px;padding-top:16px}.md .input-outline .item-floating-label,.md .input-outline .item-label,.md .item-input-outline .item-content .item-floating-label,.md .item-input-outline .item-content .item-label,.md .item-input-outline.item-content .item-floating-label,.md .item-input-outline.item-content .item-label{--label-height:calc(var(--f7-label-height) + 8px);margin:calc(-16px - var(--label-height)/2) -4px 4px}.md .input-outline .item-floating-label,.md .item-input-outline .item-content .item-floating-label,.md .item-input-outline.item-content .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-input-height)/2 + 8px))}.md .input-with-error-message,.md .input-with-info,.md .item-input-with-error-message,.md .item-input-with-info{padding-bottom:24px!important}.md .input-error-message,.md .input-info,.md .item-input-error-message,.md .item-input-info{overflow:hidden;position:absolute;right:0;text-overflow:ellipsis;top:100%;white-space:nowrap;width:100%}.md .item-input-focused .item-floating-label,.md .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-theme-color))}.md .input-focused:not(.input-outline):after,.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color))}.md .input-focused:not(.input-outline):after,.md .input-invalid:not(.input-outline):after,.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after,.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after{transform:scaleY(2)!important}.md .input-invalid:not(.input-outline):after,.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color))}.md .item-input-invalid .item-floating-label,.md .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-input-error-text-color))}.md .input-invalid input,.md .input-invalid select,.md .input-invalid textarea,.md .item-input-invalid input,.md .item-input-invalid select,.md .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-text-color))}.md .input-clear-button:after{content:"delete_round_md";font-size:var(--f7-input-clear-button-size);line-height:1}.md .input-clear-button:before{height:48px;margin-left:-24px;margin-top:-24px;width:48px}:root{--f7-checkbox-icon-color:#fff;--f7-checkbox-extra-margin:0px}:root .dark,:root.dark{--f7-checkbox-inactive-color:rgba(255,255,255,0.3);--f7-checkbox-icon-color:#000}.ios{--f7-checkbox-size:22px;--f7-checkbox-border-radius:50%;--f7-checkbox-border-width:1px;--f7-checkbox-inactive-color:#c7c7cc}.md{--f7-checkbox-size:18px;--f7-checkbox-border-radius:2px;--f7-checkbox-border-width:2px;--f7-checkbox-inactive-color:#6d6d6d}.checkbox{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.5);background-color:initial;display:inline-block;position:relative;vertical-align:middle;z-index:1}.checkbox i,.icon-checkbox{border:var(--f7-checkbox-border-width) solid var(--f7-checkbox-inactive-color);border-radius:var(--f7-checkbox-border-radius);box-sizing:border-box;display:block;flex-shrink:0;height:var(--f7-checkbox-size);position:relative;width:var(--f7-checkbox-size)}.checkbox i:after,.icon-checkbox:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-checkbox-icon-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;height:var(--f7-checkbox-size);letter-spacing:normal;line-height:1;line-height:var(--f7-checkbox-size);opacity:0;position:relative;right:calc(0px - var(--f7-checkbox-border-width));text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:calc(0px - var(--f7-checkbox-border-width));transition-property:opacity;white-space:nowrap;width:100%;width:var(--f7-checkbox-size)}.checkbox i.color-white,.color-white .checkbox i,.color-white .icon-checkbox,.icon-checkbox.color-white{--f7-theme-color:#fff;--f7-checkbox-icon-color:#000}.checkbox i.color-black,.color-black .checkbox i,.color-black .icon-checkbox,.icon-checkbox.color-black{--f7-theme-color:#000;--f7-checkbox-icon-color:#fff}.checkbox input[type=checkbox]:not(:checked)~i:after,label.item-checkbox input[type=checkbox]:not(:checked)~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:not(:checked)~.icon-checkbox:after{font-size:0}.checkbox input[type=checkbox]:checked~i,.checkbox input[type=checkbox]:indeterminate~i,label.item-checkbox input[type=checkbox]:checked~* .icon-checkbox,label.item-checkbox input[type=checkbox]:checked~.icon-checkbox,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox{background-color:var(--f7-checkbox-active-color,var(--f7-theme-color));border-color:var(--f7-checkbox-active-color,var(--f7-theme-color))}.checkbox input[type=checkbox]:checked~i:after,.checkbox input[type=checkbox]:indeterminate~i:after,label.item-checkbox input[type=checkbox]:checked~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:checked~.icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{opacity:1}.checkbox input[type=checkbox]:indeterminate~i:after,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{background:var(--f7-checkbox-icon-color);border-radius:2px;content:"";font-size:0;height:2px;margin-top:-1px;position:absolute;right:15%;top:50%;transition:0ms;width:70%}.checkbox,label.item-checkbox{cursor:pointer}.checkbox input[type=checkbox],.checkbox input[type=radio],label.item-checkbox input[type=checkbox],label.item-checkbox input[type=radio]{display:none}label.item-checkbox{transition-duration:.3s}label.item-checkbox .item-content .item-media,label.item-checkbox.item-content .item-media{align-self:center}label.item-checkbox>.icon-checkbox{margin-left:calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin))}label.item-checkbox.active-state{background-color:var(--f7-list-link-pressed-bg-color)}label.item-checkbox.active-state:after{background-color:initial}.disabled label.item-checkbox,label.item-checkbox.disabled{opacity:.55;opacity:.55!important;pointer-events:none;pointer-events:none!important}label.item-checkbox.item-checkbox-icon-end .item-inner{padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right) + var(--f7-checkbox-size) + 16px)}label.item-checkbox.item-checkbox-icon-end input[type=checkbox]~.icon-checkbox{left:calc(var(--f7-safe-area-left) + 16px);margin-left:0;position:absolute}.ios .checkbox i:after,.ios .icon-checkbox:after{content:"checkbox_ios";font-size:21px}.ios label.item-checkbox.active-state{transition-duration:0ms}.ios .checkbox input[type=checkbox]:indeterminate~i:after,.ios label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,.ios label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{height:2px;margin-top:-1px}.md .checkbox i,.md .icon-checkbox{transition-duration:.2s}.md .checkbox i:after,.md .icon-checkbox:after{content:"checkbox_md";font-size:15px;transition-duration:.2s}.md label.item-checkbox{overflow:hidden;position:relative;z-index:0}:root{--f7-radio-border-radius:50%;--f7-radio-extra-margin:0px}:root .dark,:root.dark{--f7-radio-inactive-color:rgba(255,255,255,0.3)}.ios{--f7-radio-size:22px;--f7-radio-border-width:1px;--f7-radio-inactive-color:#c7c7cc}.md{--f7-radio-size:20px;--f7-radio-border-width:2px;--f7-radio-inactive-color:#6d6d6d}.radio{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.5);display:inline-block;position:relative;vertical-align:middle;z-index:1}.icon-radio{border-radius:var(--f7-radio-border-radius);box-sizing:border-box;display:block;flex-shrink:0;height:var(--f7-radio-size);position:relative;width:var(--f7-radio-size)}.color-white .icon-radio,.color-white .radio,.icon-radio.color-white,.radio.color-white{--f7-theme-color:#fff}.color-black .icon-radio,.color-black .radio,.icon-radio.color-black,.radio.color-black{--f7-theme-color:#000}.md .icon-radio,.radio .icon-radio{border:var(--f7-radio-border-width) solid var(--f7-radio-inactive-color)}.radio,label.item-radio{cursor:pointer}.radio input[type=checkbox],.radio input[type=radio],label.item-radio input[type=checkbox],label.item-radio input[type=radio]{display:none}label.item-radio{transition-duration:.3s}label.item-radio .item-content .item-media,label.item-radio.item-content .item-media{align-self:center}label.item-radio.active-state{background-color:var(--f7-list-link-pressed-bg-color)}label.item-radio.active-state:after{background-color:initial}.disabled label.item-radio,label.item-radio.disabled{opacity:.55;opacity:.55!important;pointer-events:none;pointer-events:none!important}.ios .icon-radio:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-radio-active-color,var(--f7-theme-color));content:"radio_ios";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;height:calc(var(--f7-radio-size) - var(--f7-radio-border-width)*2);letter-spacing:normal;line-height:1;line-height:calc(var(--f7-radio-size) - var(--f7-radio-border-width)*2 + 1px);opacity:0;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%;width:calc(var(--f7-radio-size) - var(--f7-radio-border-width)*2)}.ios .radio input[type=radio]:checked~.icon-radio:after,.ios label.item-radio input[type=radio]:checked~* .icon-radio:after,.ios label.item-radio input[type=radio]:checked~.icon-radio:after{opacity:1}.ios .radio input[type=radio]:checked~.icon-radio{border-color:var(--f7-radio-active-color,var(--f7-theme-color))}.ios label.item-radio:not(.item-radio-icon-start) input[type=radio]~.icon-radio{left:calc(var(--f7-safe-area-left) + 10px);margin-top:-11px;position:absolute;top:50%}.ios label.item-radio:not(.item-radio-icon-start) .item-inner{padding-left:calc(var(--f7-safe-area-left) + 36px)}.ios label.item-radio-icon-start>.icon-radio{margin-left:calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin))}.ios label.item-radio.active-state{transition-duration:0ms}.md .icon-radio,.md .icon-radio:after{transition-duration:.2s}.md .icon-radio:after{background-color:var(--f7-radio-active-color,var(--f7-theme-color));border-radius:50%;content:"";height:10px;left:50%;margin-left:-5px;margin-top:-5px;position:absolute;top:50%;transform:scale(0);width:10px}.md .radio input[type=radio]:checked~.icon-radio,.md label.item-radio input[type=radio]:checked~* .icon-radio,.md label.item-radio input[type=radio]:checked~.icon-radio{border-color:var(--f7-radio-active-color,var(--f7-theme-color))}.md .radio input[type=radio]:checked~.icon-radio:after,.md label.item-radio input[type=radio]:checked~* .icon-radio:after,.md label.item-radio input[type=radio]:checked~.icon-radio:after{background-color:var(--f7-radio-active-color,var(--f7-theme-color));transform:scale(1)}.md label.item-radio{overflow:hidden;position:relative;z-index:0}.md label.item-radio:not(.item-radio-icon-end)>.icon-radio{margin-left:calc(var(--f7-list-item-media-margin) + var(--f7-radio-extra-margin))}.md label.item-radio-icon-end input[type=radio]~.icon-radio{left:calc(var(--f7-safe-area-left) + 16px);margin-top:-10px;position:absolute;top:50%}.md label.item-radio-icon-end .item-inner{padding-left:calc(var(--f7-safe-area-left) + 52px)}.ios{--f7-toggle-width:52px;--f7-toggle-height:32px;--f7-toggle-inactive-knob-bg-color:#fff;--f7-toggle-active-knob-bg-color:#fff;--f7-toggle-inactive-border-color:#e5e5e5;--f7-toggle-inactive-bg-color:#fff}.ios .dark,.ios.dark{--f7-toggle-inactive-border-color:#555;--f7-toggle-inactive-bg-color:#555}.md{--f7-toggle-width:52px;--f7-toggle-height:32px}.md,.md .dark,.md [class*=color-]{--f7-toggle-inactive-bg-color:var(--f7-md-surface-variant);--f7-toggle-active-bg-color:var(--f7-theme-color);--f7-toggle-inactive-knob-bg-color:var(--f7-md-outline);--f7-toggle-active-knob-bg-color:var(--f7-md-on-primary);--f7-toggle-inactive-border-color:var(--f7-md-outline);--f7-toggle-active-border-color:var(--f7-theme-color)}.toggle,.toggle-icon{border-radius:var(--f7-toggle-height);height:var(--f7-toggle-height);width:var(--f7-toggle-width)}.toggle{align-self:center;box-sizing:border-box;display:inline-block;position:relative;-webkit-user-select:none;user-select:none;vertical-align:middle}.toggle input[type=checkbox]{display:none}.toggle input[disabled]~.toggle-icon{pointer-events:none}.toggle-icon{-webkit-appearance:none;appearance:none;border:none;box-sizing:border-box;cursor:pointer;display:block;margin:0;padding:0;position:relative;transition:.3s;z-index:0}.toggle-icon:after,.toggle-icon:before{content:""}.toggle-icon:after{position:absolute;transform:translateX(0);transition-duration:.3s;z-index:2}.ios .toggle{background:var(--f7-toggle-inactive-border-color)}.ios .toggle input[type=checkbox]:checked+.toggle-icon{background:var(--f7-toggle-active-color,var(--f7-theme-color))}.ios .toggle input[type=checkbox]:checked+.toggle-icon:before{background:var(--f7-toggle-active-bg-color,var(--f7-theme-color));transform:scale(0)}.ios .toggle input[type=checkbox]:checked+.toggle-icon:after{background:var(--f7-toggle-active-knob-bg-color);transform:translateX(calc((var(--f7-toggle-width) - var(--f7-toggle-height))*-1))}.ios .toggle-icon{background:var(--f7-toggle-border-color)}.ios .toggle-icon:before{background:var(--f7-toggle-inactive-bg-color);border-radius:var(--f7-toggle-height);box-sizing:border-box;position:absolute;transform:scale(1);transition-duration:.3s;width:calc(var(--f7-toggle-width) - 4px);z-index:1}.ios .toggle-icon:after,.ios .toggle-icon:before{height:calc(var(--f7-toggle-height) - 4px);right:2px;top:2px}.ios .toggle-icon:after{background:var(--f7-toggle-inactive-knob-bg-color);border-radius:calc(var(--f7-toggle-height) - 4px);box-shadow:0 2px 4px rgba(0,0,0,.3);width:calc(var(--f7-toggle-height) - 4px)}.ios .toggle-active-state input[type=checkbox]:not(:checked)+.toggle-icon:before{transform:scale(0)}.ios .toggle-active-state input[type=checkbox]+.toggle-icon:after{width:calc(var(--f7-toggle-height) + 4px)}.ios .toggle-active-state input[type=checkbox]:checked+.toggle-icon:after{transform:translateX(calc(var(--f7-toggle-width)*-1 - var(--f7-toggle-height)*-1 - -8px))}.md .toggle input[type=checkbox]:checked+.toggle-icon{background:var(--f7-toggle-active-bg-color);border-color:var(--f7-toggle-active-border-color)}.md .toggle input[type=checkbox]:checked+.toggle-icon:after{background:var(--f7-toggle-active-knob-bg-color);transform:translateX(calc((var(--f7-toggle-width) - var(--f7-toggle-height))*-1)) scale(1)}.md .toggle.active-state input[type=checkbox]:checked+.toggle-icon:after{transform:translateX(calc((var(--f7-toggle-width) - var(--f7-toggle-height))*-1)) scale(1.1)}.md .toggle-icon{background:var(--f7-toggle-inactive-bg-color);border:2px solid var(--f7-toggle-inactive-border-color)}.md .toggle-icon:after{background:var(--f7-toggle-inactive-knob-bg-color);border-radius:var(--f7-toggle-height);height:calc(var(--f7-toggle-height) - 8px);right:2px;top:2px;transform:scale(.666);width:calc(var(--f7-toggle-height) - 8px)}.md .toggle-icon.active-state:after{transform:scale(1.1)}:root{--f7-range-scale-step-height:5px;--f7-range-scale-substep-width:1px;--f7-range-scale-substep-height:4px;--f7-range-bar-bg-color:rgba(0,0,0,0.2)}:root .dark,:root.dark{--f7-range-bar-bg-color:rgba(255,255,255,0.2)}.ios{--f7-range-size:28px;--f7-range-bar-size:4px;--f7-range-bar-border-radius:2px;--f7-range-knob-size:28px;--f7-range-knob-color:#fff;--f7-range-knob-box-shadow:0 2px 4px rgba(0,0,0,0.3);--f7-range-label-size:24px;--f7-range-label-text-color:#000;--f7-range-label-bg-color:#fff;--f7-range-label-font-size:12px;--f7-range-label-font-weight:500;--f7-range-label-border-radius:5px;--f7-range-label-padding:0px 2px;--f7-range-scale-text-color:#666;--f7-range-scale-step-width:1px;--f7-range-scale-font-size:12px;--f7-range-scale-font-weight:400;--f7-range-scale-label-offset:4px}.md{--f7-range-size:20px;--f7-range-bar-size:2px;--f7-range-bar-border-radius:0px;--f7-range-knob-size:12px;--f7-range-knob-box-shadow:none;--f7-range-label-size:26px;--f7-range-label-font-weight:normal;--f7-range-label-font-size:10px;--f7-range-label-border-radius:50%;--f7-range-label-padding:0px;--f7-range-scale-step-width:2px;--f7-range-scale-font-size:12px;--f7-range-scale-font-weight:400;--f7-range-scale-label-offset:4px}.md,.md .dark,.md [class*=color-]{--f7-range-knob-color:var(--f7-theme-color);--f7-range-label-text-color:var(--f7-md-on-primary);--f7-range-label-bg-color:var(--f7-theme-color);--f7-range-scale-text-color:var(--f7-md-on-surface-variant)}.range-slider{align-self:center;cursor:pointer;display:block;position:relative;-webkit-user-select:none;user-select:none}.range-slider input[type=range]{display:none}.range-slider.range-slider-horizontal{height:var(--f7-range-size);touch-action:pan-y;width:100%}.range-slider.range-slider-vertical{height:100%;touch-action:pan-x;width:var(--f7-range-size)}.range-bar{background:var(--f7-range-bar-bg-color);border-radius:var(--f7-range-bar-border-radius);overflow:hidden;position:absolute}.range-slider-vertical .range-bar{height:100%;left:50%;margin-left:calc(var(--f7-range-bar-size)*-1/2);top:0;width:var(--f7-range-bar-size)}.range-slider-horizontal .range-bar{height:var(--f7-range-bar-size);left:0;margin-top:calc(var(--f7-range-bar-size)*-1/2);top:50%;width:100%}.range-bar-active{background:var(--f7-range-bar-active-bg-color,var(--f7-theme-color));position:absolute}.range-slider-horizontal .range-bar-active{height:100%;right:0;top:0}.range-slider-vertical .range-bar-active{bottom:0;left:0;width:100%}.range-slider-vertical-reversed .range-bar-active{bottom:auto;top:0}.range-knob-wrap{height:var(--f7-range-knob-size);position:absolute;width:var(--f7-range-knob-size);z-index:20}.range-slider-horizontal .range-knob-wrap{margin-right:calc(var(--f7-range-knob-size)*-1/2);margin-top:calc(var(--f7-range-knob-size)*-1/2);right:0;top:50%}.range-slider-vertical .range-knob-wrap{bottom:0;left:50%;margin-bottom:calc(var(--f7-range-knob-size)*-1/2);margin-left:calc(var(--f7-range-knob-size)*-1/2)}.range-slider-vertical-reversed .range-knob-wrap{bottom:auto;margin-bottom:0;margin-top:calc(var(--f7-range-knob-size)*-1/2);top:0}.range-knob{background:var(--f7-range-knob-color,var(--f7-range-knob-bg-color,var(--f7-theme-color)));border-radius:50%;box-shadow:var(--f7-range-knob-box-shadow);box-sizing:border-box;height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}.range-knob:after{content:"";height:44px;left:50%;margin-left:-22px;margin-top:-22px;position:absolute;top:50%;width:44px}.range-knob-label{background-color:var(--f7-range-label-bg-color,var(--f7-theme-color));border-radius:var(--f7-range-label-border-radius);bottom:100%;box-sizing:border-box;color:var(--f7-range-label-text-color);font-size:var(--f7-range-label-font-size);font-weight:var(--f7-range-label-font-weight);height:var(--f7-range-label-size);left:50%;line-height:var(--f7-range-label-size);min-width:var(--f7-range-label-size);padding:var(--f7-range-label-padding);position:absolute;text-align:center;transform:translateY(100%) scale(0);transition-duration:.12s;transition-property:transform}.range-knob-active-state .range-knob-label{transform:translateY(0) scale(1)}.range-scale{position:absolute}.range-slider-horizontal .range-scale{left:0;margin-top:calc(var(--f7-range-bar-size)/2);top:50%;width:100%}.range-slider-vertical .range-scale{height:100%;margin-right:calc(var(--f7-range-bar-size)/2);right:50%;top:0}.range-scale-step{box-sizing:border-box;color:var(--f7-range-scale-text-color,var(--f7-range-bar-bg-color));display:flex;font-size:var(--f7-range-scale-font-size);font-weight:var(--f7-range-scale-font-weight);line-height:1;position:absolute}.range-scale-step:before{background:var(--f7-range-scale-step-bg-color,var(--f7-range-bar-bg-color));content:"";position:absolute}.range-slider-horizontal .range-scale-step{align-items:flex-start;height:var(--f7-range-scale-step-height);justify-content:center;margin-right:calc(var(--f7-range-scale-step-width)*-1/2);padding-top:calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));top:0;width:var(--f7-range-scale-step-width)}.range-slider-horizontal .range-scale-step:before{height:var(--f7-range-scale-step-height);left:0;top:0;width:100%}.range-slider-horizontal .range-scale-step:first-child{margin-right:0}.range-slider-horizontal .range-scale-step:last-child{margin-right:calc(var(--f7-range-scale-step-width)*-1)}.range-slider-vertical .range-scale-step{align-items:center;height:var(--f7-range-scale-step-width);justify-content:flex-end;line-height:1;margin-bottom:calc(var(--f7-range-scale-step-width)*-1/2);padding-right:calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));right:0;width:var(--f7-range-scale-step-height)}.range-slider-vertical .range-scale-step:first-child{margin-bottom:0}.range-slider-vertical .range-scale-step:last-child{margin-bottom:calc(var(--f7-range-scale-step-width)*-1)}.range-slider-vertical .range-scale-step:before{height:100%;right:0;top:0;width:var(--f7-range-scale-step-height)}.range-scale-substep{--f7-range-scale-step-bg-color:var(--f7-range-scale-substep-bg-color,var(--f7-range-bar-bg-color));--f7-range-scale-step-width:var(--f7-range-scale-substep-width);--f7-range-scale-step-height:var(--f7-range-scale-substep-height)}.ios .range-knob-label{margin-bottom:6px;transform:translateX(-50%) translateY(100%) scale(0)}.ios .range-knob-active-state .range-knob-label{transform:translateX(-50%) translateY(0) scale(1)}.md .range-knob{transition-duration:.2s;transition-property:transform,background-color}.md .range-knob-active-state .range-knob{transform:scale(1.5)}.md .range-slider-min:not(.range-slider-dual) .range-knob{background:#fff!important;border:2px solid var(--f7-range-bar-bg-color)}.md .range-knob-label{margin-bottom:8px}.md .range-knob-label,.md .range-knob-label:before{margin-left:calc(var(--f7-range-label-size)*-1/2);width:var(--f7-range-label-size)}.md .range-knob-label:before{background:var(--f7-range-label-bg-color,var(--f7-theme-color));border-radius:50% 50% 50% 0;content:"";height:var(--f7-range-label-size);left:50%;position:absolute;top:0;transform:rotate(-45deg);z-index:-1}.md .range-knob-active-state .range-knob-label{transform:translateY(0) scale(1)}.md .range-slider-label .range-knob-active-state .range-knob{transform:scale(0)}:root{--f7-stepper-raised-box-shadow:0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);--f7-stepper-value-font-weight:500}.ios{--f7-stepper-height:28px;--f7-stepper-border-radius:5px;--f7-stepper-fill-button-text-color:#fff;--f7-stepper-large-height:44px;--f7-stepper-small-height:26px;--f7-stepper-value-font-size:17px;--f7-stepper-border-width:2px;--f7-stepper-border-color:var(--f7-theme-color);--f7-stepper-small-border-width:2px}.md{--f7-stepper-height:40px;--f7-stepper-border-radius:8px;--f7-stepper-large-height:48px;--f7-stepper-small-height:32px;--f7-stepper-value-font-size:14px;--f7-stepper-border-width:1px;--f7-stepper-small-border-width:1px;--f7-stepper-button-pressed-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-stepper-fill-button-text-color:var(--f7-md-on-primary);--f7-stepper-fill-button-pressed-bg-color:var(--f7-theme-color);--f7-stepper-border-color:var(--f7-md-outline)}.stepper{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25);align-items:stretch;border-radius:var(--f7-stepper-border-radius);display:inline-flex;flex-direction:row-reverse;height:var(--f7-stepper-height)}.stepper-button,.stepper-button-minus,.stepper-button-plus{align-content:center;align-items:center;background-color:var(--f7-stepper-button-bg-color);border:var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);border-radius:var(--f7-stepper-border-radius);box-sizing:border-box;color:var(--f7-stepper-button-text-color,var(--f7-theme-color));cursor:pointer;display:flex;flex-shrink:0;justify-content:center;line-height:calc(var(--f7-stepper-height) - var(--f7-stepper-border-width, 0px));position:relative;text-align:center;width:40px}.stepper-button-minus.active-state,.stepper-button-plus.active-state,.stepper-button.active-state{background-color:var(--f7-stepper-button-pressed-bg-color,rgba(var(--f7-theme-color-rgb),.15));color:var(--f7-stepper-button-pressed-text-color,var(--f7-stepper-button-text-color,var(--f7-theme-color)))}.stepper-button-minus:first-child,.stepper-button-plus:first-child,.stepper-button:first-child{border-radius:var(--f7-stepper-border-radius) 0 0 var(--f7-stepper-border-radius)}.stepper-button-minus:last-child,.stepper-button-plus:last-child,.stepper-button:last-child{border-radius:0 var(--f7-stepper-border-radius) var(--f7-stepper-border-radius) 0}.stepper-button .icon,.stepper-button-minus .icon,.stepper-button-plus .icon{pointer-events:none}.stepper-button+.stepper-button,.stepper-button+.stepper-button-minus,.stepper-button+.stepper-button-plus,.stepper-button-minus+.stepper-button,.stepper-button-minus+.stepper-button-minus,.stepper-button-minus+.stepper-button-plus,.stepper-button-plus+.stepper-button,.stepper-button-plus+.stepper-button-minus,.stepper-button-plus+.stepper-button-plus{border-left:none}.stepper-button-minus,.stepper-button-plus{-webkit-user-select:none;user-select:none}.stepper-button-minus:after,.stepper-button-minus:before,.stepper-button-plus:after,.stepper-button-plus:before{background-color:var(--f7-stepper-button-text-color,var(--f7-theme-color));border-radius:2px;content:"";left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.stepper-button-minus:after,.stepper-button-plus:after{height:2px;width:15px}.stepper-button-plus:before{height:15px;width:2px}.stepper-value{align-content:center;align-items:center;display:flex;justify-content:center}.stepper-input-wrap,.stepper-value{border-bottom:var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);border-top:var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);flex-shrink:1;text-align:center}.stepper .stepper-input-wrap input,.stepper-value{color:var(--f7-stepper-value-text-color,var(--f7-theme-color));font-size:var(--f7-stepper-value-font-size);font-weight:var(--f7-stepper-value-font-weight);text-align:center;width:45px}.stepper .stepper-input-wrap input{height:100%}.ios .stepper-round-ios,.md .stepper-round-md,.stepper-round{--f7-stepper-border-radius:var(--f7-stepper-height)}.ios .stepper-fill-ios,.md .stepper-fill-md,.stepper-fill{--f7-stepper-border-color:var(--f7-stepper-fill-button-bg-color,var(--f7-theme-color));--f7-stepper-button-bg-color:var(--f7-stepper-fill-button-bg-color,var(--f7-theme-color));--f7-stepper-button-text-color:var(--f7-stepper-fill-button-text-color);--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.ios .stepper-fill-ios .stepper-button+.stepper-button,.ios .stepper-fill-ios .stepper-button-minus+.stepper-button-plus,.ios .stepper-raised-ios .stepper-button+.stepper-button,.ios .stepper-raised-ios .stepper-button-minus+.stepper-button-plus,.md .stepper-fill-md .stepper-button+.stepper-button,.md .stepper-fill-md .stepper-button-minus+.stepper-button-plus,.md .stepper-raised-md .stepper-button+.stepper-button,.md .stepper-raised-md .stepper-button-minus+.stepper-button-plus,.stepper-fill .stepper-button+.stepper-button,.stepper-fill .stepper-button-minus+.stepper-button-plus,.stepper-raised .stepper-button+.stepper-button,.stepper-raised .stepper-button-minus+.stepper-button-plus{border-left:1px solid rgba(0,0,0,.1)}.ios .stepper-fill-ios .stepper-button+.stepper-button.active-state,.ios .stepper-fill-ios .stepper-button-minus+.stepper-button-plus.active-state,.md .stepper-fill-md .stepper-button+.stepper-button.active-state,.md .stepper-fill-md .stepper-button-minus+.stepper-button-plus.active-state,.stepper-fill .stepper-button+.stepper-button.active-state,.stepper-fill .stepper-button-minus+.stepper-button-plus.active-state{border-left-color:var(--f7-stepper-button-pressed-bg-color)}.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-input-wrap,.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-value,.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-input-wrap,.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-value,.stepper-raised:not(.stepper-fill) .stepper-input-wrap,.stepper-raised:not(.stepper-fill) .stepper-value{border-left:1px solid rgba(0,0,0,.1);border-right:1px solid rgba(0,0,0,.1)}.ios .stepper-large-ios,.md .stepper-large-md,.stepper-large{--f7-stepper-height:var(--f7-stepper-large-height)}.ios .stepper-small-ios,.md .stepper-small-md,.stepper-small{--f7-stepper-border-width:var(--f7-stepper-small-border-width);--f7-stepper-height:var(--f7-stepper-small-height)}.ios .stepper-fill.stepper-small,.ios .stepper-fill.stepper-small-ios{--f7-stepper-button-pressed-bg-color:transparent;--f7-stepper-button-pressed-text-color:var(--f7-theme-color)}.ios .stepper-raised-ios,.md .stepper-raised-md,.stepper-raised{--f7-stepper-border-width:0;box-shadow:var(--f7-stepper-raised-box-shadow)}.ios .stepper-button .f7-icons,.ios .stepper-button-minus .f7-icons,.ios .stepper-button-plus .f7-icons{font-size:22px}.ios .stepper-fill,.ios .stepper-fill-ios{--f7-stepper-button-pressed-bg-color:var(--f7-stepper-fill-button-pressed-bg-color,var(--f7-theme-color-tint))}.ios .stepper-small-ios.stepper-raised,.ios .stepper-small-ios.stepper-raised-ios,.ios .stepper-small.stepper-raised,.ios .stepper-small.stepper-raised-ios{--f7-stepper-border-width:0px}.ios .stepper-small .stepper-button,.ios .stepper-small .stepper-button-minus,.ios .stepper-small .stepper-button-plus,.ios .stepper-small-ios .stepper-button,.ios .stepper-small-ios .stepper-button-minus,.ios .stepper-small-ios .stepper-button-plus{transition-duration:.2s}.ios .stepper-small .stepper-button-minus.active-state:after,.ios .stepper-small .stepper-button-minus.active-state:before,.ios .stepper-small .stepper-button-plus.active-state:after,.ios .stepper-small .stepper-button-plus.active-state:before,.ios .stepper-small .stepper-button.active-state:after,.ios .stepper-small .stepper-button.active-state:before,.ios .stepper-small-ios .stepper-button-minus.active-state:after,.ios .stepper-small-ios .stepper-button-minus.active-state:before,.ios .stepper-small-ios .stepper-button-plus.active-state:after,.ios .stepper-small-ios .stepper-button-plus.active-state:before,.ios .stepper-small-ios .stepper-button.active-state:after,.ios .stepper-small-ios .stepper-button.active-state:before{background-color:var(--f7-theme-color);transition-duration:.2s}.md .stepper-button,.md .stepper-button-minus,.md .stepper-button-plus{overflow:hidden;transform:translateZ(0);transition-duration:.3s}.md .stepper-fill,.md .stepper-fill-md{--f7-stepper-button-pressed-bg-color:var(--f7-stepper-fill-button-bg-color,var(--f7-theme-color))}.smart-select select{display:none}.smart-select .item-after{display:block;max-width:70%;overflow:hidden;position:relative;text-overflow:ellipsis}.smart-select-sheet .list ul,.smart-select-sheet .page,.smart-select-sheet .sheet-modal-inner{background:var(--f7-smart-select-sheet-bg,var(--f7-list-bg-color))}.smart-select-sheet .toolbar:after{background-color:var(--f7-smart-select-sheet-toolbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.smart-select-sheet .list{margin:0}.smart-select-sheet .list ul:after,.smart-select-sheet .list ul:before{display:none!important}.smart-select-popover .popover-inner{max-height:40vh}:root{--f7-grid-gap:16px}.grid{display:grid}.grid.grid-gap{gap:var(--f7-grid-gap)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}@media (min-width:480px){.xsmall-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xsmall-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.xsmall-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xsmall-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.xsmall-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xsmall-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.xsmall-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xsmall-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.xsmall-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xsmall-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.xsmall-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xsmall-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.xsmall-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xsmall-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.xsmall-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xsmall-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.xsmall-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xsmall-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.xsmall-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xsmall-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.xsmall-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xsmall-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.xsmall-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xsmall-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.xsmall-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.xsmall-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.xsmall-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.xsmall-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.xsmall-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.xsmall-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.xsmall-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.xsmall-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.xsmall-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.xsmall-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.xsmall-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.xsmall-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.xsmall-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.xsmall-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.xsmall-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.xsmall-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:568px){.small-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.small-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.small-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.small-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.small-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.small-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.small-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.small-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.small-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.small-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.small-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.small-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.small-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.small-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.small-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.small-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.small-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.small-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.small-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.small-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.small-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.small-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.small-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.small-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.small-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.small-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.small-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.small-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.small-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.small-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.small-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.small-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.small-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.small-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.small-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.small-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.small-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.small-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.small-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.small-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:768px){.medium-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.medium-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.medium-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.medium-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.medium-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.medium-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.medium-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.medium-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.medium-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.medium-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.medium-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.medium-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.medium-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.medium-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.medium-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.medium-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.medium-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.medium-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.medium-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.medium-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.medium-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.medium-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.medium-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.medium-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.medium-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.medium-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.medium-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.medium-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.medium-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.medium-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.medium-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.medium-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.medium-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.medium-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.medium-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.medium-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.medium-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.medium-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.medium-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.medium-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:1024px){.large-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.large-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.large-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.large-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.large-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.large-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.large-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.large-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.large-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.large-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.large-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.large-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.large-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.large-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.large-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.large-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.large-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.large-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.large-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.large-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.large-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.large-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.large-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.large-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.large-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.large-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.large-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.large-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.large-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.large-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.large-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.large-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.large-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.large-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.large-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.large-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.large-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.large-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.large-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.large-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:1200px){.xlarge-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xlarge-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.xlarge-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xlarge-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.xlarge-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xlarge-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.xlarge-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xlarge-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.xlarge-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xlarge-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.xlarge-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xlarge-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.xlarge-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xlarge-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.xlarge-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xlarge-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.xlarge-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xlarge-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.xlarge-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xlarge-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.xlarge-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xlarge-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.xlarge-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xlarge-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.xlarge-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.xlarge-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.xlarge-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.xlarge-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.xlarge-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.xlarge-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.xlarge-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.xlarge-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.xlarge-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.xlarge-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.xlarge-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.xlarge-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.xlarge-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.xlarge-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.xlarge-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.xlarge-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}:root{--f7-calendar-height:340px;--f7-calendar-sheet-landscape-height:220px;--f7-calendar-popover-width:320px;--f7-calendar-popover-height:320px;--f7-calendar-modal-height:420px;--f7-calendar-modal-max-width:380px;--f7-calendar-week-header-bg-color:transparent;--f7-calendar-footer-padding:0 8px;--f7-calendar-week-header-font-size:11px;--f7-calendar-disabled-text-color:#d4d4d4;--f7-calendar-event-dot-size:4px;--f7-calendar-time-selector-height:28px;--f7-calendar-picker-pressed-bg-color:rgba(0,0,0,0.1);--f7-calendar-picker-hover-bg-color:rgba(0,0,0,0.03);--f7-calendar-time-selector-bg-color:rgba(0,0,0,0.05)}:root .dark,:root.dark{--f7-calendar-picker-pressed-bg-color:rgba(255,255,255,0.08);--f7-calendar-picker-hover-bg-color:rgba(255,255,255,0.03);--f7-calendar-time-selector-bg-color:rgba(255,255,255,0.1)}.ios{--f7-calendar-selected-text-color:#fff;--f7-calendar-header-height:44px;--f7-calendar-header-font-size:17px;--f7-calendar-header-font-weight:600;--f7-calendar-header-padding:0 8px;--f7-calendar-footer-height:44px;--f7-calendar-footer-font-size:17px;--f7-calendar-week-header-height:18px;--f7-calendar-day-font-size:15px;--f7-calendar-day-size:30px;--f7-calendar-picker-font-size:17px;--f7-calendar-time-selector-font-size:17px;--f7-calendar-modal-border-radius:4px;--f7-calendar-modal-box-shadow:0px 11px 15px -7px rgba(0,0,0,0.2),0px 24px 38px 3px rgba(0,0,0,0.14),0px 9px 46px 8px rgba(0,0,0,0.12);--f7-calendar-prev-next-text-color:#c8c8c8;--f7-calendar-sheet-border-color:#929499;--f7-calendar-sheet-bg-color:#fff;--f7-calendar-week-header-text-color:#5e5e5e;--f7-calendar-modal-bg-color:#fff;--f7-calendar-day-text-color:#000;--f7-calendar-today-text-color:#000;--f7-calendar-today-bg-color:#e3e3e3}.ios .dark,.ios.dark{--f7-calendar-prev-next-text-color:#5e5e5e;--f7-calendar-sheet-border-color:var(--f7-bars-border-color);--f7-calendar-sheet-bg-color:#121212;--f7-calendar-week-header-text-color:#aaa;--f7-calendar-modal-bg-color:#121212;--f7-calendar-day-text-color:#fff;--f7-calendar-today-text-color:#fff;--f7-calendar-today-bg-color:#333}.md{--f7-calendar-sheet-border-color:transparent;--f7-calendar-header-height:64px;--f7-calendar-header-font-size:24px;--f7-calendar-header-font-weight:400;--f7-calendar-header-padding:0 24px;--f7-calendar-footer-height:56px;--f7-calendar-footer-font-size:14px;--f7-calendar-week-header-height:24px;--f7-calendar-day-font-size:14px;--f7-calendar-today-bg-color:none;--f7-calendar-day-size:32px;--f7-calendar-picker-font-size:14px;--f7-calendar-time-selector-font-size:14px;--f7-calendar-modal-border-radius:28px;--f7-calendar-modal-box-shadow:none}.md,.md .dark,.md [class*=color-]{--f7-calendar-sheet-bg-color:var(--f7-md-surface-1);--f7-calendar-selected-text-color:var(--f7-md-on-primary);--f7-calendar-week-header-text-color:var(--f7-md-on-surface-variant);--f7-calendar-day-text-color:var(--f7-md-on-surface);--f7-calendar-prev-next-text-color:rgba(var(--f7-md-on-surface-variant-rgb),0.55);--f7-calendar-today-text-color:var(--f7-theme-color);--f7-calendar-modal-bg-color:var(--f7-md-surface-1)}.calendar{flex-direction:column;height:var(--f7-calendar-height);overflow:hidden;width:100%}.calendar,.calendar.modal-in{display:flex}@media (orientation:landscape) and (max-height:415px){.calendar.calendar-sheet{height:var(--f7-calendar-sheet-landscape-height)}.calendar.calendar-modal{height:calc(100vh - var(--f7-navbar-height))}}.calendar.calendar-inline,.calendar.calendar-popover .calendar{position:relative}.calendar-sheet{--f7-sheet-border-color:var(--f7-calendar-sheet-border-color);background:var(--f7-calendar-sheet-bg-color);height:calc(var(--f7-calendar-height) + var(--f7-safe-area-bottom));padding-bottom:var(--f7-safe-area-bottom)}.calendar-sheet:before{z-index:600}.calendar-modal .toolbar:before,.calendar-popover .toolbar:before,.calendar-sheet .toolbar:before{display:none}.calendar-popover{width:var(--f7-calendar-popover-width)}.calendar-popover .calendar-header,.calendar-popover .toolbar-top{border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;overflow:hidden}.calendar-popover .calendar-header+.toolbar-top{border-radius:0}.calendar-popover .calendar-footer,.calendar-popover .toolbar-bottom{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.calendar-popover .calendar{height:var(--f7-calendar-popover-height);position:relative;z-index:1}.calendar-popover .calendar-month-picker,.calendar-popover .calendar-time-picker,.calendar-popover .calendar-year-picker{border-radius:var(--f7-popover-border-radius)}.calendar-popover .calendar-month-picker .picker,.calendar-popover .calendar-time-picker .picker,.calendar-popover .calendar-year-picker .picker{display:flex;flex-direction:column;height:100%}.calendar-header{background-color:var(--f7-calendar-header-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-calendar-header-text-color,var(--f7-bars-text-color));flex-shrink:0;font-size:var(--f7-calendar-header-font-size);font-weight:var(--f7-calendar-header-font-weight);height:var(--f7-calendar-header-height);line-height:var(--f7-calendar-header-height);overflow:hidden;padding:var(--f7-calendar-header-padding);position:relative;text-overflow:ellipsis;white-space:nowrap;width:100%}.calendar-header a{color:var(--f7-calendar-header-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer{align-items:center;background-color:var(--f7-calendar-footer-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-calendar-footer-text-color,var(--f7-bars-text-color));display:flex;flex-shrink:0;font-size:var(--f7-calendar-header-font-size);height:var(--f7-calendar-footer-height);justify-content:flex-end;padding:var(--f7-calendar-footer-padding);position:relative;width:100%}.calendar-footer a{color:var(--f7-calendar-footer-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer:before{background-color:var(--f7-calendar-footer-border-color,var(--f7-bars-border-color));bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.calendar-modal{background:var(--f7-calendar-modal-bg-color);border-radius:var(--f7-calendar-modal-border-radius);box-shadow:var(--f7-calendar-modal-box-shadow);display:flex;height:var(--f7-calendar-modal-height);left:50%;max-width:var(--f7-calendar-modal-max-width);min-width:300px;overflow:hidden;position:absolute;top:50%;transform:translate3d(-50%,100vh,0);transition-property:transform;transition-timing-function:cubic-bezier(0,1,.2,1);width:90%;z-index:13500}.calendar-modal.modal-in,.calendar-modal.modal-out{transition-duration:.4s}.calendar-modal.modal-in{transform:translate3d(-50%,-50%,0)}.calendar-modal.modal-out{transform:translate3d(-50%,100vh,0)}.calendar-week-header{background-color:var(--f7-calendar-week-header-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-calendar-week-header-text-color,var(--f7-bars-text-color));display:flex;font-size:var(--f7-calendar-week-header-font-size);height:var(--f7-calendar-week-header-height);padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right);position:relative}.calendar-week-header .calendar-week-day{flex-shrink:1;line-height:var(--f7-calendar-week-header-height);text-align:center;width:14.28571%}.calendar-months{flex-shrink:10;height:100%;overflow:hidden;position:relative;width:100%}.calendar-months-wrapper{height:100%;position:relative;transition:.3s;width:100%}.calendar-month{display:flex;flex-direction:column;height:100%;left:0;position:absolute;top:0;width:100%}.calendar-row{box-sizing:border-box;display:flex;flex-shrink:1;height:16.66666667%;padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right);position:relative;width:100%}.calendar-modal .calendar-months:first-child .calendar-row:first-child:before,.calendar-popover .calendar-months:first-child .calendar-row:first-child:before{display:none!important}.calendar-day{align-items:center;box-sizing:border-box;color:var(--f7-calendar-day-text-color);cursor:pointer;display:flex;flex-shrink:1;font-size:var(--f7-calendar-day-font-size);height:100%;justify-content:center;text-align:center;width:14.28571429%;z-index:20}.calendar-day-today .calendar-day-number{background-color:var(--f7-calendar-today-bg-color);color:var(--f7-calendar-today-text-color,var(--f7-theme-color))}.calendar-day-next,.calendar-day-prev{color:var(--f7-calendar-prev-next-text-color)}.calendar-day-disabled{color:var(--f7-calendar-disabled-text-color);cursor:auto}.calendar-day-selected .calendar-day-number{background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color));color:var(--f7-calendar-selected-text-color)}.calendar-day-number{border-radius:50%;display:inline-block;height:var(--f7-calendar-day-size);line-height:var(--f7-calendar-day-size);position:relative;width:var(--f7-calendar-day-size)}.calendar-day-events{align-items:center;display:flex;justify-content:center;left:0;margin-top:1px;position:absolute;top:100%;width:100%}.calendar-day-event{background-color:var(--f7-calendar-event-bg-color);border-radius:calc(var(--f7-calendar-event-dot-size)/2);height:var(--f7-calendar-event-dot-size);width:var(--f7-calendar-event-dot-size)}.calendar-day-event+.calendar-day-event{margin-left:2px}.calendar-day-selected-left,.calendar-day-selected-range,.calendar-day-selected-right{position:relative}.calendar-day-selected-left:before,.calendar-day-selected-range:before,.calendar-day-selected-right:before{background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color));content:"";height:var(--f7-calendar-day-size);left:0;opacity:.2;position:absolute;top:50%;transform:translateY(-50%);width:100%;z-index:-1}.calendar-day-selected-left:before,.calendar-day-selected-range:first-child:before{border-radius:var(--f7-calendar-day-size) 0 0 var(--f7-calendar-day-size);left:auto;right:0;width:calc(50% + var(--f7-calendar-day-size)/2)}.calendar-day-selected-range:last-child:before,.calendar-day-selected-right:before{border-radius:0 var(--f7-calendar-day-size) var(--f7-calendar-day-size) 0;width:calc(50% + var(--f7-calendar-day-size)/2)}.calendar-day-selected-left:last-child:before,.calendar-day-selected-right:first-child:before{display:none}.calendar-day-selected-left.calendar-day-selected-right:before{content:none;display:none}.calendar-day-selected-range .calendar-day-number{background-color:initial;color:inherit}.calendar-month-selector,.calendar-year-selector{align-items:center;display:flex;flex-shrink:10;justify-content:space-between;margin-left:auto;margin-right:auto;max-width:200px;width:50%}.calendar-month-selector .calendar-day-number,.calendar-year-selector .calendar-day-number{flex-shrink:1;overflow:hidden;position:relative;text-overflow:ellipsis}.calendar-month-selector a.icon-only,.calendar-year-selector a.icon-only{min-width:36px}.calendar-month-picker,.calendar-time-picker,.calendar-year-picker{background:transparent;height:100%;position:relative;-webkit-user-select:none;user-select:none;width:100%}.calendar-month-picker .picker-columns,.calendar-year-picker .picker-columns{text-align:center}.calendar-month-picker-item,.calendar-year-picker-item{align-items:center;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;overflow:hidden;position:relative;transition-duration:.1s}.calendar-month-picker-item span,.calendar-year-picker-item span{box-sizing:border-box;overflow:hidden;pointer-events:none;position:relative;text-overflow:ellipsis;white-space:nowrap}.calendar-month-picker-item.active-state,.calendar-year-picker-item.active-state{background:var(--f7-calendar-picker-pressed-bg-color)}.calendar-month-picker-item{padding:5px}.sheet-modal .calendar-month-picker-item{height:33.33333333%;width:25%}.sheet-modal .calendar-month-picker-item:nth-child(4n+1):before,.sheet-modal .calendar-month-picker-item:nth-child(n+9):after{display:none!important}.calendar-modal .calendar-month-picker-item,.popover .calendar-month-picker-item{height:25%;width:33.33333333%}.calendar-modal .calendar-month-picker-item:nth-child(3n+1):before,.calendar-modal .calendar-month-picker-item:nth-child(n+10):after,.popover .calendar-month-picker-item:nth-child(3n+1):before,.popover .calendar-month-picker-item:nth-child(n+10):after{display:none!important}.calendar-month-picker-item-current,.calendar-year-picker-item-current{color:var(--f7-calendar-picker-selected-text-color,var(--f7-theme-color))}.calendar-year-picker{--webkit-overflow-scrolling:touch;overflow:auto}.calendar-year-picker-item{height:34px;line-height:34px;width:100%}.calendar-time-selector{align-items:center;display:flex;flex-shrink:0;font-size:var(--f7-calendar-time-selector-font-size);justify-content:space-between;padding:12px 16px;position:relative}.calendar-time-selector a{align-items:center;background-color:var(--f7-calendar-time-selector-bg-color);border-radius:8px;box-sizing:border-box;display:flex;height:var(--f7-calendar-time-selector-height);justify-content:center;overflow:hidden;padding:0 16px;position:relative}.calendar-time-selector>span{font-weight:500}.calendar-time-selector .segmented{margin-left:8px}.calendar-month-picker-popover,.calendar-time-picker-popover,.calendar-year-picker-popover{height:240px;width:240px}.calendar-month-picker-popover .popover-inner,.calendar-time-picker-popover .popover-inner,.calendar-year-picker-popover .popover-inner{height:100%;overflow:hidden}.calendar-time-picker{--f7-picker-popover-height:100%;--f7-picker-inline-height:100%}.calendar-time-picker .toolbar{flex-shrink:0;top:0!important}.calendar-time-picker .picker{display:flex;flex-direction:column;height:100%}:root{--f7-picker-height:260px;--f7-picker-inline-height:200px;--f7-picker-popover-height:260px;--f7-picker-popover-width:280px;--f7-picker-landscape-height:200px;--f7-picker-item-height:36px}.ios{--f7-picker-column-font-size:20px;--f7-picker-item-selected-text-color:#000;--f7-picker-item-selected-bg-color:rgba(0,0,0,0.12);--f7-picker-divider-text-color:#000;--f7-picker-item-text-color:rgba(0,0,0,0.45)}.ios .dark,.ios.dark{--f7-picker-item-selected-text-color:#fff;--f7-picker-item-selected-bg-color:rgba(255,255,255,0.1);--f7-picker-divider-text-color:#fff;--f7-picker-item-text-color:rgba(255,255,255,0.55)}.md{--f7-picker-column-font-size:20px}.md,.md .dark,.md [class*=color-]{--f7-picker-item-selected-text-color:var(--f7-md-on-surface);--f7-picker-item-text-color:var(--f7-md-on-surface-variant);--f7-picker-divider-text-color:var(--f7-md-on-surface);--f7-picker-item-selected-border-color:var(--f7-md-outline)}.picker{height:var(--f7-picker-height);width:100%}.picker.picker-inline{height:var(--f7-picker-inline-height)}.popover .picker{height:var(--f7-picker-popover-height)}@media (orientation:landscape) and (max-height:415px){.picker:not(.picker-inline){height:var(--f7-picker-landscape-height)}}.picker.sheet-modal{background:var(--f7-picker-sheet-bg-color,var(--f7-sheet-bg-color))}.picker-popover{width:var(--f7-picker-popover-width)}.picker-popover .toolbar{background:none;border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0}.picker-popover .toolbar:before{display:none!important}.picker-popover .toolbar+.picker-columns{height:calc(100% - var(--f7-toolbar-height))}.picker-columns{--f7-picker-mask-bg-color:transparent;display:flex;font-size:var(--f7-picker-column-font-size);height:100%;justify-content:center;overflow:hidden;padding:0;position:relative;text-align:right}.popover .picker-columns{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.picker-columns:after,.picker-columns:before{content:"";height:20%;left:0;pointer-events:none;position:absolute;width:100%;z-index:100}.page .picker-columns{--f7-picker-mask-bg-color:var(--f7-page-bg-color)}.block-strong .picker-columns{--f7-picker-mask-bg-color:var(--f7-block-strong-bg-color)}.picker-sheet .picker-columns{--f7-picker-mask-bg-color:var(--f7-picker-sheet-bg-color,var(--f7-sheet-bg-color))}.picker-popover .picker-columns{--f7-picker-mask-bg-color:var(--f7-popover-bg-color)}.picker-columns:before{background-image:linear-gradient(to bottom,var(--f7-picker-mask-bg-color),transparent);top:0}.picker-columns:after{background-image:linear-gradient(to top,var(--f7-picker-mask-bg-color),transparent);bottom:0}.picker-column{max-height:100%;position:relative;z-index:10}.picker-column.picker-column-first.picker-column-last{width:100%}.picker-column.picker-column-left{text-align:left}.picker-column.picker-column-center{text-align:center}.picker-column.picker-column-right{text-align:right}.picker-column.picker-column-divider{align-items:center;color:var(--f7-picker-divider-text-color);display:flex}.picker-items{box-sizing:border-box;height:100%;overflow:auto;padding:var(--f7-picker-scroll-padding,0) 0;scroll-snap-type:y mandatory;scrollbar-color:transparent;scrollbar-width:none}.picker-items::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.picker-items::-webkit-scrollbar-track{background:transparent;box-shadow:none}.picker-items::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.picker-item{box-sizing:border-box;color:var(--f7-picker-item-text-color);cursor:pointer;height:var(--f7-picker-item-height);left:0;line-height:var(--f7-picker-item-height);overflow:hidden;position:relative;scroll-snap-align:center;text-overflow:ellipsis;top:0;white-space:nowrap;width:100%}.picker-item span{padding:0 10px}.picker-item.picker-item-far{pointer-events:none}.picker-item.picker-item-selected{color:var(--f7-picker-item-selected-text-color);transform:translateZ(0) rotateX(0deg)}.picker-column-free-mode .picker-item{scroll-snap-align:none}.picker-center-highlight{box-sizing:border-box;height:var(--f7-picker-item-height);margin-top:calc(var(--f7-picker-item-height)*-1/2);pointer-events:none;position:absolute;top:50%}.picker-3d .picker-columns{overflow:hidden}.picker-3d .picker-column,.picker-3d .picker-item,.picker-3d .picker-items{transform-style:preserve-3d}.picker-3d .picker-column{overflow:visible}.picker-3d .picker-item{overflow:visible;perspective:1200px}.picker-3d .picker-item>span{-webkit-backface-visibility:hidden;backface-visibility:hidden;box-sizing:border-box;display:block;max-width:100%;overflow:hidden;position:relative;text-overflow:ellipsis;transform-origin:center center -100px;transform-style:preserve-3d}.ios .picker-center-highlight{background-color:var(--f7-picker-item-selected-bg-color);border-radius:8px;left:16px;right:16px}.popover .ios .picker-center-highlight{left:8px;right:8px}.md .picker-center-highlight{border-bottom:1px solid var(--f7-md-outline);border-top:1px solid var(--f7-md-outline);left:0;right:0}.infinite-scroll-preloader{margin-left:auto;margin-right:auto;text-align:center}.infinite-scroll-preloader.preloader{display:block}.ios .infinite-scroll-preloader{margin-bottom:35px;margin-top:35px}.ios .infinite-scroll-preloader .preloader,.ios .infinite-scroll-preloader.preloader{height:27px;width:27px}.md .infinite-scroll-preloader{margin-bottom:32px;margin-top:32px}.ios{--f7-ptr-preloader-size:28px;--f7-ptr-size:44px}.md{--f7-ptr-preloader-size:22px;--f7-ptr-size:40px}.md,.md .dark,.md [class*=color-]{--f7-ptr-preloader-bg-color:var(--f7-md-surface-1);--f7-ptr-preloader-color:var(--f7-md-primary)}.ptr-preloader{height:var(--f7-ptr-size);pointer-events:none;position:relative;top:var(--f7-ptr-top,0)}.ptr-preloader .preloader{height:var(--f7-ptr-preloader-size);left:50%;margin-left:calc(var(--f7-ptr-preloader-size)*-1/2);margin-top:calc(var(--f7-ptr-preloader-size)*-1/2);position:absolute;top:50%;visibility:hidden;width:var(--f7-ptr-preloader-size)}.ptr-bottom .ptr-preloader{bottom:0;position:fixed;top:auto}.ptr-with-navbar-large-transparent .ptr-preloader,.ptr-with-navbar-transparent .ptr-preloader{top:calc(var(--f7-page-navbar-offset, 0px)*-1 + var(--f7-safe-area-top))}.ios .ptr-preloader{left:0;margin-bottom:calc(var(--f7-ptr-size)*-1);position:relative;top:0;width:100%}.ios .ptr-preloader .preloader{visibility:visible}.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner{animation:none}.ios .ptr-content.ptr-closing .ptr-preloader .preloader-inner-line,.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up):not(.ptr-pull-down) .ptr-preloader .preloader-inner-line{opacity:0!important}.ios .ptr-refreshing>*,.ios .ptr-transitioning>*{transition-duration:.2s;transition-property:transform}.ios .ptr-transitioning .ptr-preloader .preloader-inner-line{transition-duration:.2s}.ios .ptr-pull-up .ptr-preloader .preloader{animation:ios-ptr-preloader-spin 1s ease-out forwards}.ios .ptr-refreshing:not(.ptr-bottom){transform:none}.ios .ptr-refreshing:not(.ptr-bottom)>*{transform:translate3d(0,var(--f7-ptr-size),0)}.ios .ptr-refreshing:not(.ptr-bottom)>.ptr-preloader{transform:translateZ(0)}.ios .ptr-bottom .ptr-preloader{margin-bottom:0;margin-top:calc(var(--f7-ptr-size)*-1);position:relative}.ios .ptr-bottom.ptr-refreshing>*,.ios .ptr-bottom.ptr-transitioning>*{transition-duration:.3s;transition-property:transform}.ios .ptr-bottom.ptr-refreshing{transform:none}.ios .ptr-bottom.ptr-refreshing>*{transform:translate3d(0,calc(var(--f7-ptr-size)*-1),0)}.ios .ptr-bottom.ptr-refreshing>.ptr-preloader{transform:translateZ(0)}@keyframes ios-ptr-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(135deg)}}.md{--f7-ptr-top:-4px}.md .ptr-preloader{--f7-preloader-color:var(--f7-ptr-preloader-color);background:var(--f7-ptr-preloader-bg-color);border-radius:50%;box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);margin-right:calc(var(--f7-ptr-size)*-1/2);margin-top:calc(var(--f7-ptr-size)*-1);right:50%;width:var(--f7-ptr-size);z-index:100}.md .ptr-preloader .preloader circle{stroke-width:4}.md .ptr-arrow{border:3px solid var(--f7-preloader-color);border-left:3px solid transparent;border-radius:50%;box-sizing:border-box;height:22px;left:50%;margin-left:-11px;margin-top:-11px;opacity:1;position:absolute;top:50%;transform:rotate(150deg);width:22px}.md .ptr-arrow:after{border-bottom-color:inherit;border-bottom-style:solid;border-bottom-width:6px;border-left:5px solid transparent;border-right:5px solid transparent;bottom:0;content:"";height:0;left:-5px;position:absolute;transform:rotate(-40deg);width:0}.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner,.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader circle{animation:none}.md .ptr-pull-up .ptr-preloader .preloader,.md .ptr-refreshing .ptr-preloader .preloader{visibility:visible}.md .ptr-pull-up .ptr-arrow,.md .ptr-refreshing .ptr-arrow{visibility:hidden}.md .ptr-refreshing .ptr-preloader{transform:translate3d(0,66px,0)}.md .ptr-transitioning .ptr-arrow{transition:.3s}.md .ptr-pull-up .ptr-arrow{opacity:0;transform:rotate(620deg)!important;transition:.4s}.md .ptr-refreshing .ptr-preloader,.md .ptr-transitioning .ptr-preloader{transition-duration:.3s;transition-property:transform,opacity}.md .ptr-bottom .ptr-preloader{margin-bottom:calc(var(--f7-ptr-size)*-1 - 4px);margin-top:0}.md .ptr-bottom.ptr-refreshing .ptr-preloader{transform:translate3d(0,-66px,0)}.md .ptr-with-navbar-large-transparent .ptr-preloader,.md .ptr-with-navbar-transparent .ptr-preloader{opacity:0}.md .ptr-with-navbar-large-transparent.ptr-pull-down .ptr-preloader,.md .ptr-with-navbar-large-transparent.ptr-pull-up .ptr-preloader,.md .ptr-with-navbar-large-transparent.ptr-refreshing .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-pull-down .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-pull-up .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-refreshing .ptr-preloader{opacity:1}.md .ptr-with-navbar-large-transparent.ptr-closing .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-closing .ptr-preloader{opacity:0;transition-duration:.3s}:root{--f7-table-head-font-size:12px;--f7-table-body-font-size:14px;--f7-table-footer-font-size:12px;--f7-table-input-height:24px;--f7-table-input-font-size:14px;--f7-table-collapsible-cell-padding:16px;--f7-table-link-icon-only-icon-size:20px;--f7-table-head-bg-color:transparent;--f7-table-card-header-bg-color:transparent;--f7-table-card-header-height:64px;--f7-table-cell-padding-vertical:0px;--f7-table-sortable-icon-color:#000}:root .dark,:root.dark{--f7-table-sortable-icon-color:#fff;--f7-table-input-text-color:#fff}.ios{--f7-table-head-font-weight:600;--f7-table-head-cell-height:44px;--f7-table-head-icon-size:18px;--f7-table-body-cell-height:44px;--f7-table-cell-padding-horizontal:16px;--f7-table-edge-cell-padding-horizontal:16px;--f7-table-label-cell-padding-horizontal:16px;--f7-table-checkbox-cell-width:22px;--f7-table-title-font-size:17px;--f7-table-title-font-weight:600;--f7-table-footer-height:44px;--f7-table-head-text-color:rgba(0,0,0,0.45);--f7-table-cell-border-color:rgba(0,0,0,0.22);--f7-table-selected-row-bg-color:rgba(0,0,0,0.03);--f7-table-footer-text-color:rgba(0,0,0,0.45);--f7-table-input-text-color:#000}.ios .dark,.ios.dark{--f7-table-head-text-color:rgba(255,255,255,0.55);--f7-table-cell-border-color:rgba(255,255,255,0.15);--f7-table-footer-text-color:rgba(255,255,255,0.55);--f7-table-selected-row-bg-color:rgba(255,255,255,0.08)}.md{--f7-table-head-font-weight:500;--f7-table-head-cell-height:56px;--f7-table-head-icon-size:16px;--f7-table-body-cell-height:48px;--f7-table-cell-padding-horizontal:28px;--f7-table-edge-cell-padding-horizontal:24px;--f7-table-label-cell-padding-horizontal:24px;--f7-table-checkbox-cell-width:18px;--f7-table-title-font-size:20px;--f7-table-title-font-weight:400;--f7-table-footer-height:56px;--f7-table-actions-cell-link-color:rgba(0,0,0,0.54);--f7-table-actions-link-color:rgba(0,0,0,0.54);--f7-table-input-text-color:#212121}.md .dark,.md.dark{--f7-table-actions-cell-link-color:rgba(255,255,255,0.54);--f7-table-actions-link-color:rgba(255,255,255,0.54)}.md,.md .dark,.md [class*=color-]{--f7-table-head-text-color:var(--f7-md-on-surface-variant);--f7-table-footer-text-color:var(--f7-md-on-surface-variant);--f7-table-selected-row-bg-color:var(--f7-md-secondary-container);--f7-table-cell-border-color:var(--f7-md-outline)}.data-table{overflow-x:auto}.data-table table,table.data-table{border:none;border-collapse:collapse;margin:0;padding:0;text-align:right;width:100%}.data-table thead td,.data-table thead th{background-color:var(--f7-table-head-bg-color);font-size:var(--f7-table-head-font-size);font-weight:var(--f7-table-head-font-weight);height:var(--f7-table-head-cell-height);line-height:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table thead td:not(.sortable-cell-active),.data-table thead th:not(.sortable-cell-active){color:var(--f7-table-head-text-color)}.data-table thead i.f7-icons,.data-table thead i.icon,.data-table thead i.material-icons{font-size:var(--f7-table-head-icon-size);vertical-align:top}.data-table tbody{font-size:var(--f7-table-body-font-size)}.data-table tbody td,.data-table tbody th{height:var(--f7-table-body-cell-height)}.data-table tbody tr.data-table-row-selected,.device-desktop .data-table tbody tr:hover{background:var(--f7-table-selected-row-bg-color)}.data-table tbody td:before,.data-table tbody th:before{background-color:var(--f7-table-cell-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.data-table td,.data-table th{--f7-table-cell-padding-left:var(--f7-table-cell-padding-horizontal);--f7-table-cell-padding-right:var(--f7-table-cell-padding-horizontal);box-sizing:border-box;padding:var(--f7-table-cell-padding-vertical) var(--f7-table-cell-padding-right) var(--f7-table-cell-padding-vertical) var(--f7-table-cell-padding-left);position:relative}.data-table td:first-child,.data-table th:first-child{--f7-table-cell-padding-right:var(--f7-table-edge-cell-padding-horizontal)}.data-table td:last-child,.data-table th:last-child{--f7-table-cell-padding-left:var(--f7-table-edge-cell-padding-horizontal)}.data-table td.label-cell,.data-table th.label-cell{--f7-table-cell-padding-left:var(--f7-table-label-cell-padding-horizontal);--f7-table-cell-padding-right:var(--f7-table-label-cell-padding-horizontal)}.data-table td.numeric-cell,.data-table th.numeric-cell{text-align:left}.data-table td.checkbox-cell,.data-table th.checkbox-cell{overflow:visible;width:var(--f7-table-checkbox-cell-width)}.data-table td.checkbox-cell label+span,.data-table th.checkbox-cell label+span{margin-right:8px}.data-table td.checkbox-cell:first-child,.data-table th.checkbox-cell:first-child{padding-left:calc(var(--f7-table-cell-padding-left)/2)}.data-table td.checkbox-cell:first-child+td,.data-table td.checkbox-cell:first-child+th,.data-table td.checkbox-cell:last-child,.data-table th.checkbox-cell:first-child+td,.data-table th.checkbox-cell:first-child+th,.data-table th.checkbox-cell:last-child{padding-right:calc(var(--f7-table-cell-padding-right)/2)}.data-table td.actions-cell,.data-table th.actions-cell{text-align:left;white-space:nowrap}.data-table td.actions-cell a.link,.data-table th.actions-cell a.link{color:var(--f7-table-actions-cell-link-color,var(--f7-theme-color))}.card .data-table td a.icon-only,.card .data-table th a.icon-only,.card.data-table td a.icon-only,.card.data-table th a.icon-only,.data-table td a.icon-only,.data-table th a.icon-only{display:inline-block;font-size:0;min-width:0;text-align:center;vertical-align:middle}.card .data-table td a.icon-only i,.card .data-table th a.icon-only i,.card.data-table td a.icon-only i,.card.data-table th a.icon-only i,.data-table td a.icon-only i,.data-table th a.icon-only i{font-size:var(--f7-table-link-icon-only-icon-size);vertical-align:middle}.data-table .sortable-cell.input-cell .table-head-label,.data-table .sortable-cell:not(.input-cell){cursor:pointer;position:relative}.data-table .sortable-cell.numeric-cell.input-cell>.table-head-label:before,.data-table .sortable-cell.numeric-cell:not(.input-cell):before,.data-table .sortable-cell:not(.numeric-cell).input-cell>.table-head-label:after,.data-table .sortable-cell:not(.numeric-cell):not(.input-cell):after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-table-sortable-icon-color);content:"arrow_bottom_md";direction:ltr;display:block;display:inline-block;font-family:framework7-core-icons;font-size:20px;font-size:13px;font-style:normal;font-weight:400;height:100%;height:16px;letter-spacing:normal;line-height:1;line-height:16px;opacity:0;text-align:center;text-rendering:optimizeLegibility;text-transform:none;transform:rotate(0);transition-duration:.3s;vertical-align:top;white-space:nowrap;width:100%;width:16px}.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:after,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:before,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:after,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:before{opacity:.54}.data-table .sortable-cell.sortable-cell-active .table-head-label:after,.data-table .sortable-cell.sortable-cell-active .table-head-label:before,.data-table .sortable-cell.sortable-cell-active:after,.data-table .sortable-cell.sortable-cell-active:before{opacity:.87!important}.data-table .sortable-cell.sortable-desc:after,.data-table .sortable-cell.sortable-desc:before,.data-table .table-head-label:after,.data-table .table-head-label:before{transform:rotate(180deg)!important}.card .data-table .card-footer,.card .data-table .card-header,.data-table.card .card-footer,.data-table.card .card-header{padding-left:var(--f7-table-edge-cell-padding-horizontal);padding-right:var(--f7-table-edge-cell-padding-horizontal)}.card .data-table .card-header,.data-table.card .card-header{background-color:var(--f7-table-card-header-bg-color);min-height:var(--f7-table-card-header-height)}.card .data-table .card-content,.data-table.card .card-content{overflow-x:auto}.card .data-table .card-footer,.data-table.card .card-footer{min-height:var(--f7-table-footer-height)}.data-table .data-table-title{font-size:var(--f7-table-title-font-size);font-weight:var(--f7-table-title-font-weight)}.data-table .data-table-actions,.data-table .data-table-links{display:flex}.data-table .data-table-links .button{min-width:64px}.data-table .data-table-actions{align-items:center;margin-right:auto}.data-table .data-table-actions a.link{color:var(--f7-table-actions-link-color,var(--f7-theme-color));min-width:0}.data-table .data-table-actions a.link.icon-only{justify-content:center;line-height:1;padding:0}.data-table .data-table-header,.data-table .data-table-header-selected{align-items:center;display:flex;justify-content:space-between;width:100%}.data-table .card-header>.data-table-header,.data-table .card-header>.data-table-header-selected{height:100%;margin:calc(var(--f7-card-header-padding-vertical)*-1) calc(var(--f7-table-edge-cell-padding-horizontal)*-1);min-height:var(--f7-table-card-header-height);padding:var(--f7-card-header-padding-vertical) var(--f7-table-edge-cell-padding-horizontal)}.data-table .data-table-header-selected{background:rgba(var(--f7-theme-color-rgb),.1);display:none}.data-table.data-table-has-checked .data-table-header{display:none}.data-table.data-table-has-checked .data-table-header-selected{display:flex}.data-table .data-table-title-selected{color:var(--f7-theme-color);font-size:14px}.data-table .data-table-footer{align-items:center;box-sizing:border-box;color:var(--f7-table-footer-text-color);display:flex;font-size:var(--f7-table-footer-font-size);justify-content:flex-start;min-height:var(--f7-table-footer-height);overflow:hidden;position:relative}.data-table .data-table-footer:before{background-color:var(--f7-table-cell-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.data-table .data-table-pagination,.data-table .data-table-rows-select{align-items:center;display:flex}.data-table .input-cell{height:auto;padding-bottom:8px;padding-top:8px;vertical-align:top}.data-table .input-cell .table-head-label+.input{margin-top:4px}.data-table .input-cell .input{height:var(--f7-table-input-height)}.data-table .input-cell .input input,.data-table .input-cell .input select,.data-table .input-cell .input textarea{color:var(--f7-table-input-text-color);font-size:var(--f7-table-input-font-size);height:var(--f7-table-input-height)}@media (max-width:480px) and (orientation:portrait){.data-table.data-table-collapsible thead{display:none}.data-table.data-table-collapsible tbody,.data-table.data-table-collapsible td,.data-table.data-table-collapsible tr{display:block}.data-table.data-table-collapsible tr{position:relative}.data-table.data-table-collapsible tr:before{background-color:var(--f7-table-cell-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.data-table.data-table-collapsible tr:hover{background-color:inherit}.data-table.data-table-collapsible td{--f7-table-cell-padding-left:var(--f7-table-collapsible-cell-padding);--f7-table-cell-padding-right:var(--f7-table-collapsible-cell-padding);align-content:center;align-items:center;display:flex;height:auto;justify-content:flex-start;min-height:var(--f7-table-body-cell-height);text-align:right}.data-table.data-table-collapsible td:before{display:none!important}.data-table.data-table-collapsible td:not(.checkbox-cell):before{background:none!important;color:var(--f7-table-head-text-color);content:attr(data-collapsible-title);display:block!important;flex-shrink:0;font-size:var(--f7-table-head-font-size);font-weight:var(--f7-table-head-font-weight);height:auto;margin-left:16px;position:relative;transform:none!important;width:40%}.data-table.data-table-collapsible td.checkbox-cell{position:absolute;right:0;top:0}.data-table.data-table-collapsible td.checkbox-cell+td{padding-right:16px}.data-table.data-table-collapsible td.checkbox-cell~td{margin-right:32px}}.data-table .xsmall-landscape-only,.data-table .xsmall-only{display:none}@media (min-width:480px){.data-table .xsmall-only{display:table-cell}}@media (min-width:480px) and (orientation:landscape){.data-table .xsmall-landscape-only{display:table-cell}}.data-table .small-landscape-only,.data-table .small-only{display:none}@media (min-width:568px){.data-table .small-only{display:table-cell}}@media (min-width:568px) and (orientation:landscape){.data-table .small-landscape-only{display:table-cell}}.data-table .medium-landscape-only,.data-table .medium-only{display:none}@media (min-width:768px){.data-table .medium-only{display:table-cell}}@media (min-width:768px) and (orientation:landscape){.data-table .medium-landscape-only{display:table-cell}}.data-table .large-landscape-only,.data-table .large-only{display:none}@media (min-width:1024px){.data-table .large-only{display:table-cell}}@media (min-width:1024px) and (orientation:landscape){.data-table .large-landscape-only{display:table-cell}}.data-table .xlarge-landscape-only,.data-table .xlarge-only{display:none}@media (min-width:1200px){.data-table .xlarge-only{display:table-cell}}@media (min-width:1200px) and (orientation:landscape){.data-table .xlarge-landscape-only{display:table-cell}}.ios .data-table td.actions-cell a.link+a.link,.ios .data-table th.actions-cell a.link+a.link{margin-right:16px}.ios .sortable-cell:not(.numeric-cell):after{margin-right:5px}.ios .sortable-cell.numeric-cell:before{margin-left:5px}.ios .data-table-actions .button+.button,.ios .data-table-actions a.link+a.link,.ios .data-table-links .button+.button,.ios .data-table-links a.link+a.link{margin-right:16px}.ios .data-table-actions a.link.icon-only,.ios .data-table-pagination a.link,.ios .data-table-rows-select a.link{height:44px;width:44px}.ios .data-table-rows-select+.data-table-pagination{margin-right:30px}.ios .data-table-rows-select .input{margin-right:20px}.ios .data-table-pagination-label{margin-left:16px}.md .data-table td.actions-cell a.link+a.link,.md .data-table th.actions-cell a.link+a.link{margin-right:24px}.md .data-table td.actions-cell a.icon-only,.md .data-table th.actions-cell a.icon-only{height:24px;line-height:24px;width:24px}.md .sortable-cell:not(.numeric-cell):after{margin-right:8px}.md .sortable-cell.numeric-cell:before{margin-left:8px}.md .data-table-actions .button+.button,.md .data-table-actions a.link+a.link,.md .data-table-links .button+.button,.md .data-table-links a.link+a.link{margin-right:24px}.md .data-table-actions a.link.icon-only{height:24px;overflow:visible;width:24px}.md .data-table-actions a.link.icon-only.active-state{background:none}.md .data-table-pagination a.link,.md .data-table-rows-select a.link{height:48px;width:48px}.md .data-table-rows-select+.data-table-pagination{margin-right:32px}.md .data-table-rows-select .input{margin-right:24px}.md .data-table-pagination-label{margin-left:20px}.md .input-cell .input-clear-button{transform:scale(.8)}:root{--f7-fab-margin:16px;--f7-fab-extended-text-font-size:14px;--f7-fab-label-padding:4px 12px;--f7-fab-label-font-size:inherit;--f7-fab-button-size:40px}.ios{--f7-fab-text-color:#fff;--f7-fab-border-radius:50px;--f7-fab-size:50px;--f7-fab-box-shadow:0px 2px 4px rgba(0,0,0,0.4);--f7-fab-extended-text-transform:uppercase;--f7-fab-extended-size:50px;--f7-fab-extended-text-padding:0 20px;--f7-fab-extended-text-font-weight:600;--f7-fab-extended-text-letter-spacing:0;--f7-fab-label-border-radius:4px;--f7-fab-label-box-shadow:0px 1px 2px rgba(0,0,0,0.4);--f7-fab-label-text-color:#333;--f7-fab-label-bg-color:#fff}.md{--f7-fab-border-radius:16px;--f7-fab-size:56px;--f7-fab-box-shadow:0px 1px 2px rgba(0,0,0,0.25);--f7-fab-extended-size:56px;--f7-fab-extended-text-padding:0 16px;--f7-fab-extended-text-font-weight:500;--f7-fab-extended-text-letter-spacing:0;--f7-fab-extended-text-transform:none;--f7-fab-label-border-radius:8px;--f7-fab-label-box-shadow:0px 1px 2px rgba(0,0,0,0.25)}.md,.md .dark,.md [class*=color-]{--f7-fab-bg-color:var(--f7-md-primary-container);--f7-fab-text-color:var(--f7-md-on-primary-container);--f7-fab-label-text-color:var(--f7-md-on-surface);--f7-fab-label-bg-color:var(--f7-md-surface-5)}.fab-backdrop{z-index:1400}.fab{position:absolute;z-index:1500}.fab a{--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.fab-left-bottom,.fab-left-center,.fab-left-top{left:calc(var(--f7-fab-margin) + var(--f7-safe-area-left))}.fab-right-bottom,.fab-right-center,.fab-right-top{right:calc(var(--f7-fab-margin) + var(--f7-safe-area-right))}.fab-center-top,.fab-left-top,.fab-right-top{top:var(--f7-fab-margin)}.fab-center-bottom,.fab-left-bottom,.fab-right-bottom{bottom:calc(var(--f7-fab-margin) + var(--f7-safe-area-bottom))}.fab-center-bottom,.fab-center-center,.fab-center-top{left:50%;transform:translateX(-50%)}.fab-center-center,.fab-left-center,.fab-right-center{top:50%;transform:translateY(-50%)}.fab-center-center{left:50%;top:50%;transform:translateX(-50%) translateY(-50%)}.fab-buttons a,.fab>a{align-items:center;background-color:var(--f7-fab-bg-color,var(--f7-theme-color));border-radius:var(--f7-fab-border-radius);box-shadow:var(--f7-fab-box-shadow);color:var(--f7-fab-text-color);display:flex;height:var(--f7-fab-size);justify-content:center;overflow:hidden;position:relative;transition-duration:.3s;width:var(--f7-fab-size);z-index:1}.fab>a i{left:50%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0) rotate(0deg) scale(1);transition:.3s}.fab>a i+i{opacity:0;transform:translate3d(-50%,-50%,0) rotate(-90deg) scale(.5)}.fab-buttons a{border-radius:var(--f7-fab-border-radius);height:var(--f7-fab-button-size);width:var(--f7-fab-button-size)}.fab-buttons{display:flex;pointer-events:none;position:absolute;visibility:hidden}.fab-buttons a{opacity:0}.fab-opened:not(.fab-morph)>a i{opacity:0;transform:translate3d(-50%,-50%,0) rotate(90deg) scale(.5)}.fab-opened:not(.fab-morph)>a i+i{opacity:1;transform:translate3d(-50%,-50%,0) rotate(0deg) scale(1)}.fab-opened .fab-buttons{pointer-events:auto;visibility:visible}.fab-opened .fab-buttons a{opacity:1;transform:translateZ(0) scale(1)!important}.fab-opened .fab-buttons a:nth-child(2){transition-delay:50ms}.fab-opened .fab-buttons a:nth-child(3){transition-delay:.1s}.fab-opened .fab-buttons a:nth-child(4){transition-delay:.15s}.fab-opened .fab-buttons a:nth-child(5){transition-delay:.2s}.fab-opened .fab-buttons a:nth-child(6){transition-delay:.25s}.fab-buttons-bottom,.fab-buttons-top{left:50%;margin-left:calc(var(--f7-fab-button-size)*-1/2);width:var(--f7-fab-button-size)}.fab-buttons-top{bottom:100%;flex-direction:column-reverse;margin-bottom:16px}.fab-buttons-top a{transform:translate3d(0,8px,0) scale(.3);transform-origin:center bottom}.fab-buttons-top a+a{margin-bottom:16px}.fab-buttons-bottom{flex-direction:column;margin-top:16px;top:100%}.fab-buttons-bottom a{transform:translate3d(0,-8px,0) scale(.3);transform-origin:center top}.fab-buttons-bottom a+a{margin-top:16px}.fab-buttons-left,.fab-buttons-right{height:var(--f7-fab-button-size);margin-top:calc(var(--f7-fab-button-size)*-1/2);top:50%}.fab-buttons-left{margin-right:16px;right:100%}.fab-buttons-left a{transform:translate3d(8px,0,0) scale(.3);transform-origin:right center}.fab-buttons-left a+a{margin-right:16px}.fab-buttons-right{flex-direction:row-reverse;left:100%;margin-left:16px}.fab-buttons-right a{transform:translate3d(-8px,0,0) scale(.3);transform-origin:left center}.fab-buttons-right a+a{margin-left:16px}.fab-buttons-center{height:100%;left:0;top:0;width:100%}.fab-buttons-center a{position:absolute}.fab-buttons-center a:first-child{bottom:100%;left:50%;margin-bottom:16px;margin-left:calc(var(--f7-fab-button-size)*-1/2);transform:translateY(-8px) scale(.3);transform-origin:center bottom}.fab-buttons-center a:nth-child(2){left:100%;margin-left:16px;margin-top:calc(var(--f7-fab-button-size)*-1/2);top:50%;transform:translateX(-8px) scale(.3);transform-origin:left center}.fab-buttons-center a:nth-child(3){left:50%;margin-left:calc(var(--f7-fab-button-size)*-1/2);margin-top:16px;top:100%;transform:translateY(8px) scale(.3);transform-origin:center top}.fab-buttons-center a:nth-child(4){margin-right:16px;margin-top:calc(var(--f7-fab-button-size)*-1/2);right:100%;top:50%;transform:translateX(8px) scale(.3);transform-origin:right center}.fab-morph{background:var(--f7-fab-bg-color,var(--f7-theme-color));border-radius:var(--f7-fab-border-radius);box-shadow:var(--f7-fab-box-shadow)}.fab-morph>a{background:none!important;box-shadow:none}.fab-opened.fab-morph>a i{opacity:0}.fab-morph,.fab-morph-target,.fab-morph>a{transition-duration:.25s}.fab-morph-target:not(.fab-morph-target-visible){display:none}.fab-extended{min-width:var(--f7-fab-extended-size);width:auto}.fab-extended>a{height:var(--f7-fab-extended-size);width:100%}.fab-extended>a i{left:calc(var(--f7-fab-extended-size)/2)}.fab-extended i~.fab-text{padding-left:var(--f7-fab-extended-size)}.fab-extended>a{width:100%!important}.fab-text{box-sizing:border-box;font-size:var(--f7-fab-extended-text-font-size);font-weight:var(--f7-fab-extended-text-font-weight);letter-spacing:var(--f7-fab-extended-text-letter-spacing);padding:var(--f7-fab-extended-text-padding);text-transform:var(--f7-fab-extended-text-transform)}.fab-label-button{overflow:visible!important}.fab-label{background:var(--f7-fab-label-bg-color);border-radius:var(--f7-fab-label-border-radius);box-shadow:var(--f7-fab-label-box-shadow);color:var(--f7-fab-label-text-color);font-size:var(--f7-fab-label-font-size);padding:var(--f7-fab-label-padding);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);white-space:nowrap}.fab-right-bottom .fab-label,.fab-right-center .fab-label,.fab-right-top .fab-label{margin-right:8px;right:100%}.fab-left-bottom .fab-label,.fab-left-center .fab-label,.fab-left-top .fab-label{left:100%;margin-left:8px}.navbars~* .fab-center-top,.navbars~* .fab-left-top,.navbars~* .fab-right-top,.navbars~.fab-center-top,.navbars~.fab-left-top,.navbars~.fab-right-top,.navbar~* .fab-center-top,.navbar~* .fab-left-top,.navbar~* .fab-right-top,.navbar~.fab-center-top,.navbar~.fab-left-top,.navbar~.fab-right-top{margin-top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .toolbar-top-ios~* .fab-center-top,.ios .toolbar-top-ios~* .fab-left-top,.ios .toolbar-top-ios~* .fab-right-top,.ios .toolbar-top-ios~.fab-center-top,.ios .toolbar-top-ios~.fab-left-top,.ios .toolbar-top-ios~.fab-right-top,.md .toolbar-top-md~* .fab-center-top,.md .toolbar-top-md~* .fab-left-top,.md .toolbar-top-md~* .fab-right-top,.md .toolbar-top-md~.fab-center-top,.md .toolbar-top-md~.fab-left-top,.md .toolbar-top-md~.fab-right-top,.toolbar-top~* .fab-center-top,.toolbar-top~* .fab-left-top,.toolbar-top~* .fab-right-top,.toolbar-top~.fab-center-top,.toolbar-top~.fab-left-top,.toolbar-top~.fab-right-top{margin-top:var(--f7-toolbar-height)}.ios .toolbar-bottom-ios~* .fab-center-bottom,.ios .toolbar-bottom-ios~* .fab-left-bottom,.ios .toolbar-bottom-ios~* .fab-right-bottom,.ios .toolbar-bottom-ios~.fab-center-bottom,.ios .toolbar-bottom-ios~.fab-left-bottom,.ios .toolbar-bottom-ios~.fab-right-bottom,.md .toolbar-bottom-md~* .fab-center-bottom,.md .toolbar-bottom-md~* .fab-left-bottom,.md .toolbar-bottom-md~* .fab-right-bottom,.md .toolbar-bottom-md~.fab-center-bottom,.md .toolbar-bottom-md~.fab-left-bottom,.md .toolbar-bottom-md~.fab-right-bottom,.toolbar-bottom~* .fab-center-bottom,.toolbar-bottom~* .fab-left-bottom,.toolbar-bottom~* .fab-right-bottom,.toolbar-bottom~.fab-center-bottom,.toolbar-bottom~.fab-left-bottom,.toolbar-bottom~.fab-right-bottom{margin-bottom:var(--f7-toolbar-height)}.ios .tabbar-icons.toolbar-bottom-ios~* .fab-center-bottom,.ios .tabbar-icons.toolbar-bottom-ios~* .fab-left-bottom,.ios .tabbar-icons.toolbar-bottom-ios~* .fab-right-bottom,.ios .tabbar-icons.toolbar-bottom-ios~.fab-center-bottom,.ios .tabbar-icons.toolbar-bottom-ios~.fab-left-bottom,.ios .tabbar-icons.toolbar-bottom-ios~.fab-right-bottom,.md .tabbar-icons.toolbar-bottom-md~* .fab-center-bottom,.md .tabbar-icons.toolbar-bottom-md~* .fab-left-bottom,.md .tabbar-icons.toolbar-bottom-md~* .fab-right-bottom,.md .tabbar-icons.toolbar-bottom-md~.fab-center-bottom,.md .tabbar-icons.toolbar-bottom-md~.fab-left-bottom,.md .tabbar-icons.toolbar-bottom-md~.fab-right-bottom,.tabbar-icons.toolbar-bottom~* .fab-center-bottom,.tabbar-icons.toolbar-bottom~* .fab-left-bottom,.tabbar-icons.toolbar-bottom~* .fab-right-bottom,.tabbar-icons.toolbar-bottom~.fab-center-bottom,.tabbar-icons.toolbar-bottom~.fab-left-bottom,.tabbar-icons.toolbar-bottom~.fab-right-bottom{margin-bottom:var(--f7-tabbar-icons-height)}.ios .tabbar-icons.toolbar-top-ios~* .fab-center-bottom,.ios .tabbar-icons.toolbar-top-ios~* .fab-left-bottom,.ios .tabbar-icons.toolbar-top-ios~* .fab-right-bottom,.ios .tabbar-icons.toolbar-top-ios~.fab-center-bottom,.ios .tabbar-icons.toolbar-top-ios~.fab-left-bottom,.ios .tabbar-icons.toolbar-top-ios~.fab-right-bottom,.md .tabbar-icons.toolbar-top-md~* .fab-center-bottom,.md .tabbar-icons.toolbar-top-md~* .fab-left-bottom,.md .tabbar-icons.toolbar-top-md~* .fab-right-bottom,.md .tabbar-icons.toolbar-top-md~.fab-center-bottom,.md .tabbar-icons.toolbar-top-md~.fab-left-bottom,.md .tabbar-icons.toolbar-top-md~.fab-right-bottom,.tabbar-icons.toolbar-top~* .fab-center-bottom,.tabbar-icons.toolbar-top~* .fab-left-bottom,.tabbar-icons.toolbar-top~* .fab-right-bottom,.tabbar-icons.toolbar-top~.fab-center-bottom,.tabbar-icons.toolbar-top~.fab-left-bottom,.tabbar-icons.toolbar-top~.fab-right-bottom{margin-top:var(--f7-tabbar-icons-height)}.messagebar~* .fab-center-bottom,.messagebar~* .fab-left-bottom,.messagebar~* .fab-right-bottom,.messagebar~.fab-center-bottom,.messagebar~.fab-left-bottom,.messagebar~.fab-right-bottom{margin-bottom:var(--f7-messagebar-height)}.ios .navbar+.toolbar-top-ios~* .fab-center-top,.ios .navbar+.toolbar-top-ios~* .fab-left-top,.ios .navbar+.toolbar-top-ios~* .fab-right-top,.ios .navbar+.toolbar-top-ios~.fab-center-top,.ios .navbar+.toolbar-top-ios~.fab-left-top,.ios .navbar+.toolbar-top-ios~.fab-right-top,.md .navbar+.toolbar-top-ios~* .fab-center-top,.md .navbar+.toolbar-top-ios~* .fab-left-top,.md .navbar+.toolbar-top-ios~* .fab-right-top,.md .navbar+.toolbar-top-ios~.fab-center-top,.md .navbar+.toolbar-top-ios~.fab-left-top,.md .navbar+.toolbar-top-ios~.fab-right-top,.navbar+.toolbar-top~* .fab-center-top,.navbar+.toolbar-top~* .fab-left-top,.navbar+.toolbar-top~* .fab-right-top,.navbar+.toolbar-top~.fab-center-top,.navbar+.toolbar-top~.fab-left-top,.navbar+.toolbar-top~.fab-right-top{margin-top:calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbar+.toolbar-top-ios.tabbar-icons~* .fab-center-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~* .fab-left-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~* .fab-right-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~.fab-center-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~.fab-left-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~.fab-right-top,.md .navbar+.toolbar-top-ios.tabbar-icons~* .fab-center-top,.md .navbar+.toolbar-top-ios.tabbar-icons~* .fab-left-top,.md .navbar+.toolbar-top-ios.tabbar-icons~* .fab-right-top,.md .navbar+.toolbar-top-ios.tabbar-icons~.fab-center-top,.md .navbar+.toolbar-top-ios.tabbar-icons~.fab-left-top,.md .navbar+.toolbar-top-ios.tabbar-icons~.fab-right-top,.navbar+.toolbar-top.tabbar-icons~* .fab-center-top,.navbar+.toolbar-top.tabbar-icons~* .fab-left-top,.navbar+.toolbar-top.tabbar-icons~* .fab-right-top,.navbar+.toolbar-top.tabbar-icons~.fab-center-top,.navbar+.toolbar-top.tabbar-icons~.fab-left-top,.navbar+.toolbar-top.tabbar-icons~.fab-right-top{margin-top:calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars+.toolbar-top-ios~* .fab-center-top,.ios .navbars+.toolbar-top-ios~* .fab-left-top,.ios .navbars+.toolbar-top-ios~* .fab-right-top,.ios .navbars+.toolbar-top-ios~.fab-center-top,.ios .navbars+.toolbar-top-ios~.fab-left-top,.ios .navbars+.toolbar-top-ios~.fab-right-top,.navbars+.toolbar-top~* .fab-center-top,.navbars+.toolbar-top~* .fab-left-top,.navbars+.toolbar-top~* .fab-right-top,.navbars+.toolbar-top~.fab-center-top,.navbars+.toolbar-top~.fab-left-top,.navbars+.toolbar-top~.fab-right-top{margin-top:calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars+.toolbar-top-ios.tabbar-icons~* .fab-center-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~* .fab-left-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~* .fab-right-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~.fab-center-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~.fab-left-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~.fab-right-top,.navbars+.toolbar-top.tabbar-icons~* .fab-center-top,.navbars+.toolbar-top.tabbar-icons~* .fab-left-top,.navbars+.toolbar-top.tabbar-icons~* .fab-right-top,.navbars+.toolbar-top.tabbar-icons~.fab-center-top,.navbars+.toolbar-top.tabbar-icons~.fab-left-top,.navbars+.toolbar-top.tabbar-icons~.fab-right-top{margin-top:calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .fab-buttons a.active-state,.ios .fab>a.active-state{background-color:var(--f7-fab-pressed-bg-color,var(--f7-theme-color-shade));transition-duration:0ms}.md .fab-buttons a.active-state,.md .fab>a.active-state{background-color:var(--f7-fab-pressed-bg-color,var(--f7-fab-bg-color,var(--f7-theme-color)))}:root{--f7-searchbar-input-border-width:0px;--f7-searchbar-input-border-color:transparent}.ios{--f7-searchbar-height:44px;--f7-searchbar-inner-padding-left:8px;--f7-searchbar-inner-padding-right:8px;--f7-searchbar-input-font-size:17px;--f7-searchbar-input-border-radius:8px;--f7-searchbar-input-height:32px;--f7-searchbar-inline-input-height:32px;--f7-searchbar-input-padding-horizontal:28px;--f7-searchbar-backdrop-bg-color:rgba(0,0,0,0.4);--f7-searchbar-in-page-content-margin:0px;--f7-searchbar-in-page-content-box-shadow:none;--f7-searchbar-in-page-content-border-radius:0;--f7-searchbar-in-page-content-input-border-radius:0;--f7-searchbar-placeholder-color:rgba(0,0,0,0.4);--f7-searchbar-input-text-color:#000;--f7-searchbar-search-icon-color:rgba(0,0,0,0.4);--f7-searchbar-input-bg-color:#e4e4e4}.ios .dark,.ios.dark{--f7-searchbar-placeholder-color:rgba(255,255,255,0.4);--f7-searchbar-input-text-color:#fff;--f7-searchbar-search-icon-color:rgba(255,255,255,0.4);--f7-searchbar-input-bg-color:#2a2a2a}.md{--f7-searchbar-border-color:transparent;--f7-searchbar-height:48px;--f7-searchbar-inner-padding-left:8px;--f7-searchbar-inner-padding-right:8px;--f7-searchbar-input-font-size:16px;--f7-searchbar-input-border-radius:24px;--f7-searchbar-input-height:48px;--f7-searchbar-inline-input-height:48px;--f7-searchbar-inline-input-border-radius:24px;--f7-searchbar-input-padding-horizontal:16px;--f7-searchbar-inline-input-padding-horizontal:16px;--f7-searchbar-backdrop-bg-color:rgba(0,0,0,0.25);--f7-searchbar-in-page-content-margin:16px 0;--f7-searchbar-in-page-content-box-shadow:none;--f7-searchbar-in-page-content-border-radius:24px;--f7-searchbar-in-page-content-input-border-radius:24px;--f7-searchbar-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-searchbar-link-color:var(--f7-md-on-surface);--f7-searchbar-search-icon-color:var(--f7-md-on-surface);--f7-searchbar-input-clear-button-color:var(--f7-md-on-surface);--f7-searchbar-placeholder-color:var(--f7-md-on-surface-variant);--f7-searchbar-input-bg-color:var(--f7-md-secondary-container);--f7-searchbar-input-text-color:var(--f7-md-on-surface)}.searchbar{--f7-link-highlight-color:var(--f7-link-highlight-black);background-color:var(--f7-searchbar-bg-color,var(--f7-bars-bg-color));height:var(--f7-searchbar-height);position:relative;width:100%;z-index:200}.dark .searchbar{--f7-link-highlight-color:var(--f7-link-highlight-white)}.searchbar input[type=search]::-webkit-search-decoration{display:none}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .searchbar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-searchbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.ios .subnavbar .searchbar{-webkit-backdrop-filter:none;backdrop-filter:none;background-color:initial}.ios .subnavbar .searchbar:after,.searchbar.no-outline:after{display:none!important}.searchbar:after{background-color:var(--f7-searchbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.page>.searchbar:not(.searchbar-inline){z-index:600}.searchbar input[type=search],.searchbar input[type=text]{-webkit-appearance:none;appearance:none;background-color:var(--f7-searchbar-input-bg-color);border:var(--f7-searchbar-input-border-width) solid var(--f7-searchbar-input-border-color);border-radius:var(--f7-searchbar-input-border-radius);box-sizing:border-box;color:var(--f7-searchbar-input-text-color);display:block;font-family:inherit;font-size:var(--f7-searchbar-input-font-size);font-weight:400;height:100%;padding:0;padding-left:calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-right, 0px));padding-right:calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px));position:relative;width:100%}.searchbar input[type=search]::placeholder,.searchbar input[type=text]::placeholder{color:var(--f7-searchbar-placeholder-color);opacity:1}.searchbar input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}.searchbar .searchbar-input-wrap{flex-shrink:1;height:var(--f7-searchbar-input-height);position:relative;width:100%}.searchbar a{color:var(--f7-searchbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.page>.searchbar:not(.searchbar-inline){left:0;position:absolute;top:0}.page-content .searchbar:not(.searchbar-inline){border-radius:var(--f7-searchbar-in-page-content-border-radius);box-shadow:var(--f7-searchbar-in-page-content-box-shadow);margin:var(--f7-searchbar-in-page-content-margin);width:auto}.page-content .searchbar:not(.searchbar-inline) .searchbar-inner,.page-content .searchbar:not(.searchbar-inline) input[type=search],.page-content .searchbar:not(.searchbar-inline) input[type=text]{border-radius:var(--f7-searchbar-in-page-content-input-border-radius,var(--f7-searchbar-input-border-radius))}.searchbar .input-clear-button{color:var(--f7-searchbar-input-clear-button-color,var(--f7-input-clear-button-color))}.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-searchbar-height);pointer-events:none;position:absolute;transition-duration:.3s}.navbar .searchbar-expandable{background:transparent}.navbar .searchbar-expandable:after{display:none!important}.navbar .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbar .searchbar.searchbar-expandable .searchbar-inner{height:calc(100% - var(--f7-safe-area-top));top:var(--f7-safe-area-top)}.toolbar .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-toolbar-height)}.subnavbar .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-subnavbar-height)}.tabbar-icons .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-tabbar-icons-height)}.searchbar-inner{align-items:center;box-sizing:border-box;display:flex;height:100%;left:0;padding:0 calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left));position:absolute;top:0;width:100%}.searchbar-disable-button{-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;margin:0;opacity:0;outline:0;padding:0;pointer-events:none;width:auto}.searchbar-icon{background-position:50%;background-repeat:no-repeat;pointer-events:none}.searchbar-icon:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-searchbar-search-icon-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.searchbar-backdrop{background:var(--f7-searchbar-backdrop-bg-color);height:100%;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transform:translateZ(0);transition-duration:.3s;width:100%;z-index:100}.searchbar-backdrop.searchbar-backdrop-in{opacity:1;pointer-events:auto}.page-content>.searchbar-backdrop{position:fixed}.searchbar-not-found{display:none}.hidden-by-searchbar,.list .hidden-by-searchbar,.list li.hidden-by-searchbar,.list.li.hidden-by-searchbar{display:none!important}.navbar.with-searchbar-expandable-enabled,.navbar.with-searchbar-expandable-enabled-no-transition{--f7-navbar-large-collapse-progress:1}.navbar.with-searchbar-expandable-closing .navbar-bg,.navbar.with-searchbar-expandable-closing .title-large,.navbar.with-searchbar-expandable-closing .title-large-text,.navbar.with-searchbar-expandable-enabled .navbar-bg,.navbar.with-searchbar-expandable-enabled .title-large,.navbar.with-searchbar-expandable-enabled .title-large-text{transition-duration:.3s}.page-content.with-searchbar-expandable-enabled{height:calc(100% + var(--f7-navbar-large-title-height));transform:translateY(calc(var(--f7-navbar-large-title-height)*-1));transition-duration:.3s;transition-property:transform}.page-content.with-searchbar-expandable-closing{transition-duration:.3s}.navbars~.page:not(.no-navbar)>.searchbar,.navbar~.page:not(.no-navbar)>.searchbar,.page>.navbar~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbars~.page-with-navbar-large:not(.no-navbar) .searchbar,.navbar~.page-with-navbar-large:not(.no-navbar) .searchbar,.page-with-navbar-large .navbar~* .searchbar,.page-with-navbar-large .navbar~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.navbars~.page-with-navbar-large:not(.no-navbar) .page-content .searchbar,.page-with-navbar-large .page-content .searchbar{top:0;transform:none}.searchbar~*{--f7-page-searchbar-offset:var(--f7-searchbar-height)}.ios .page>.toolbar-top-ios~.searchbar,.md .page>.toolbar-top-md~.searchbar,.page>.toolbar-top~.searchbar{top:var(--f7-toolbar-height)}.ios .page>.tabbar-icons.toolbar-top-ios~.searchbar,.md .page>.tabbar-icons.toolbar-top-md~.searchbar,.page>.tabbar-icons.toolbar-top~.searchbar{top:var(--f7-tabbar-icons-height)}.ios .page>.navbar~.toolbar-top-ios~.searchbar,.md .page>.navbar~.toolbar-top-md~.searchbar,.page>.navbar~.toolbar-top~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top))}.ios .page>.navbar~.tabbar-icons.toolbar-top-ios~.searchbar,.md .page>.navbar~.tabbar-icons.toolbar-top-md~.searchbar,.page>.navbar~.tabbar-icons.toolbar-top~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top))}.searchbar.searchbar-inline{background-color:initial;background-image:none;height:auto;width:auto}.searchbar.searchbar-inline:after,.searchbar.searchbar-inline:before{display:none!important}.searchbar.searchbar-inline .searchbar-input-wrap{height:var(--f7-searchbar-inline-input-height,var(--f7-searchbar-input-height))}.searchbar.searchbar-inline .searchbar-inner{height:auto;padding:0;position:static;width:auto}.searchbar.searchbar-inline input[type=search],.searchbar.searchbar-inline input[type=text]{border-radius:var(--f7-searchbar-inline-input-border-radius,var(--f7-searchbar-input-border-radius));font-size:var(--f7-searchbar-inline-input-font-size,var(--f7-searchbar-input-font-size));padding-left:calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-right, 0px));padding-right:calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-left, 0px))}.ios .searchbar input[type=search],.ios .searchbar input[type=text]{z-index:30}.ios .searchbar .input-clear-button{left:7px;z-index:40}.ios .searchbar-icon{height:13px;margin-top:-6px;position:absolute;right:8px;top:50%;width:13px;z-index:40}.ios .searchbar-icon:after{content:"search_ios";line-height:13px}.ios .searchbar-disable-button{color:var(--f7-searchbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)));display:none;flex-shrink:0;font-size:17px;transform:translateZ(0);transition-duration:.3s}.ios .searchbar-disable-button.active-state{opacity:.3!important;transition-duration:0ms}.ios .searchbar-enabled .searchbar-disable-button{margin-right:8px;opacity:1;pointer-events:auto}.ios .searchbar:not(.searchbar-enabled) .searchbar-disable-button{transition-duration:.3s!important}.ios .searchbar-expandable{bottom:0;height:0;opacity:1;overflow:hidden;right:0;transform:translateZ(0);width:100%}.ios .searchbar-expandable .searchbar-disable-button{display:block;margin-right:8px;opacity:1}.ios .searchbar-expandable .searchbar-inner{height:var(--f7-searchbar-expandable-size)}.ios .navbar.with-searchbar-expandable-closing .navbar-bg,.ios .navbar.with-searchbar-expandable-enabled .navbar-bg{transition-property:transform,opacity}.ios .navbar.with-searchbar-expandable-closing .left,.ios .navbar.with-searchbar-expandable-closing .navbar-bg,.ios .navbar.with-searchbar-expandable-closing .right,.ios .navbar.with-searchbar-expandable-closing .title,.ios .navbar.with-searchbar-expandable-enabled .left,.ios .navbar.with-searchbar-expandable-enabled .navbar-bg,.ios .navbar.with-searchbar-expandable-enabled .right,.ios .navbar.with-searchbar-expandable-enabled .title{transition-duration:.3s}.ios .navbar.with-searchbar-expandable-enabled .left,.ios .navbar.with-searchbar-expandable-enabled .right,.ios .navbar.with-searchbar-expandable-enabled .title,.ios .navbar.with-searchbar-expandable-enabled-no-transition .left,.ios .navbar.with-searchbar-expandable-enabled-no-transition .right,.ios .navbar.with-searchbar-expandable-enabled-no-transition .title{opacity:0!important;transform:translateY(calc(var(--f7-navbar-height)*-1))}.ios .searchbar-expandable.searchbar-enabled{height:var(--f7-searchbar-expandable-size);opacity:1;pointer-events:auto}.md .searchbar-disable-button,.md .searchbar-icon{position:absolute;top:50%;transition-duration:.3s}.md .searchbar-icon{align-items:center;display:flex;height:48px;justify-content:center;left:0;right:var(--f7-safe-area-right);top:0;width:48px}.md .searchbar-icon:after{content:"search_md";height:auto;line-height:1.2;width:auto}.md .searchbar-disable-button{color:var(--f7-searchbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)));display:block;font-size:0!important;height:48px;margin-top:-24px;right:calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right));transform:rotate(-90deg) scale(.5);width:48px}.md .searchbar-disable-button:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";content:"arrow_right_md";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;line-height:48px;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-disable-button{opacity:1;pointer-events:auto;transform:rotate(0deg) scale(1)}.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-icon{opacity:0;transform:rotate(90deg) scale(.5)}.md .searchbar{--f7-searchbar-input-extra-padding-left:34px}.md .searchbar .input-clear-button{height:48px;left:0;margin-top:-24px;width:48px}.md .searchbar .input-clear-button:after{content:"delete_round_md";line-height:48px;opacity:1}.md .searchbar .input-clear-button:before{display:none}.md .searchbar-inline{--f7-searchbar-input-extra-padding-left:32px}.md .page>.searchbar,.md .searchbar-expandable,.md .subnavbar .searchbar{--f7-searchbar-input-extra-padding-left:34px}.md .page>.searchbar .searchbar-disable-button,.md .searchbar-expandable .searchbar-disable-button,.md .subnavbar .searchbar .searchbar-disable-button{right:calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right))}.md .page>.searchbar .searchbar-icon,.md .searchbar-expandable .searchbar-icon,.md .subnavbar .searchbar .searchbar-icon{right:var(--f7-safe-area-right)}.md .searchbar-expandable{--f7-searchbar-inner-padding-left:4px;--f7-searchbar-inner-padding-right:4px;background-color:var(--f7-searchbar-input-bg-color);border-radius:calc(var(--f7-searchbar-expandable-size));bottom:0;height:var(--f7-searchbar-expandable-size);margin-right:calc(var(--f7-searchbar-expandable-size)*-1);margin-top:calc(var(--f7-searchbar-expandable-size)*-1/2);opacity:0;right:100%;transform:translateZ(0);width:calc(var(--f7-searchbar-expandable-size))}.md .searchbar-expandable.searchbar-enabled{border-radius:0;margin-right:0;margin-top:0;opacity:1;pointer-events:auto;right:0;width:100%}:root{--f7-message-text-header-opacity:0.65;--f7-message-text-header-font-size:12px;--f7-message-text-footer-opacity:0.65;--f7-message-text-footer-font-size:12px;--f7-message-bubble-line-height:1.2;--f7-message-header-font-size:12px;--f7-message-footer-font-size:11px;--f7-message-name-font-size:12px;--f7-message-name-font-weight:inherit;--f7-message-avatar-border-radius:50%;--f7-messages-title-font-weight:inherit;--f7-message-typing-indicator-bg-color:#000}:root .dark,:root.dark{--f7-message-typing-indicator-bg-color:#fff}.ios{--f7-message-text-header-text-color:inherit;--f7-message-text-footer-text-color:inherit;--f7-messages-title-font-size:11px;--f7-message-avatar-size:29px;--f7-message-margin:10px;--f7-message-bubble-min-height:32px;--f7-message-bubble-font-size:17px;--f7-message-bubble-border-radius:16px;--f7-message-bubble-padding-vertical:6px;--f7-message-bubble-padding-horizontal:16px;--f7-message-typing-indicator-opacity:0.35;--f7-message-sent-text-color:#fff;--f7-messages-content-bg-color:#fff;--f7-message-received-text-color:#000;--f7-message-received-bg-color:#e5e5ea;--f7-messages-title-text-color:rgba(0,0,0,0.45);--f7-message-header-text-color:rgba(0,0,0,0.45);--f7-message-footer-text-color:rgba(0,0,0,0.45);--f7-message-name-text-color:rgba(0,0,0,0.45)}.ios .dark,.ios.dark{--f7-message-received-bg-color:#252525;--f7-message-received-text-color:#fff;--f7-messages-content-bg-color:transparent;--f7-messages-title-text-color:rgba(255,255,255,0.54);--f7-message-header-text-color:rgba(255,255,255,0.54);--f7-message-name-text-color:rgba(255,255,255,0.54);--f7-message-footer-text-color:rgba(255,255,255,0.54)}.md{--f7-messages-content-bg-color:transparent;--f7-messages-title-font-size:12px;--f7-message-avatar-size:32px;--f7-message-margin:16px;--f7-message-bubble-min-height:40px;--f7-message-bubble-font-size:16px;--f7-message-bubble-border-radius:20px;--f7-message-bubble-padding-vertical:10px;--f7-message-bubble-padding-horizontal:16px;--f7-message-typing-indicator-opacity:0.6}.md,.md .dark,.md [class*=color-]{--f7-message-sent-bg-color:var(--f7-md-primary);--f7-message-sent-text-color:var(--f7-md-on-primary);--f7-message-received-bg-color:var(--f7-md-surface-variant);--f7-message-received-text-color:var(--f7-md-on-surface);--f7-message-text-header-text-color:var(--f7-md-on-surface-variant);--f7-message-text-footer-text-color:var(--f7-md-on-surface-variant);--f7-messages-title-text-color:var(--f7-md-on-surface-variant);--f7-message-header-text-color:var(--f7-md-on-surface-variant);--f7-message-footer-text-color:var(--f7-md-on-surface-variant);--f7-message-name-text-color:var(--f7-md-on-surface-variant)}.messages,.messages-content{background:var(--f7-messages-content-bg-color)}.messages{display:flex;flex-direction:column;min-height:100%;position:relative;z-index:1}.message,.messages-title{margin-top:var(--f7-message-margin)}.message:last-child,.messages-title:last-child{margin-bottom:var(--f7-message-margin)}.messages-title{color:var(--f7-messages-title-text-color);font-size:var(--f7-messages-title-font-size);font-weight:var(--f7-messages-title-font-weight);line-height:1;text-align:center;width:100%}.message{align-items:flex-end;box-sizing:border-box;display:flex;max-width:70%;position:relative;transform:translateZ(0);z-index:1}.message-avatar{align-self:flex-end;background-size:cover;border-radius:var(--f7-message-avatar-border-radius);flex-shrink:0;height:var(--f7-message-avatar-size);position:relative;width:var(--f7-message-avatar-size)}.message-content{display:flex;flex-direction:column;position:relative}.message-footer,.message-header,.message-name{line-height:1}.message-header{color:var(--f7-message-header-text-color);font-size:var(--f7-message-header-font-size)}.message-footer{color:var(--f7-message-footer-text-color);font-size:var(--f7-message-footer-font-size);margin-bottom:-1em}.message-name{color:var(--f7-message-name-text-color);font-size:var(--f7-message-name-font-size);font-weight:var(--f7-message-name-font-weight)}.message-bubble{border-radius:var(--f7-message-bubble-border-radius);box-sizing:border-box;display:flex;flex-direction:column;font-size:var(--f7-message-bubble-font-size);line-height:var(--f7-message-bubble-line-height);min-height:var(--f7-message-bubble-min-height);padding:var(--f7-message-bubble-padding-vertical) var(--f7-message-bubble-padding-horizontal);position:relative;word-break:break-word}.message-image img{display:block;height:auto;max-width:100%;width:auto}.message-text-footer,.message-text-header{line-height:1}.message-text-header{color:var(--f7-message-text-header-text-color);font-size:var(--f7-message-text-header-font-size);opacity:var(--f7-message-text-header-opacity)}.message-text-footer{color:var(--f7-message-text-footer-text-color);font-size:var(--f7-message-text-footer-font-size);opacity:var(--f7-message-text-footer-opacity)}.message-text{text-align:left}.message-sent{align-self:flex-start;flex-direction:row;text-align:right}.message-sent .message-bubble{background:var(--f7-message-sent-bg-color,var(--f7-theme-color));color:var(--f7-message-sent-text-color)}.message-sent .message-content{align-items:flex-start}.message-received{align-self:flex-end;flex-direction:row-reverse}.message-received .message-bubble{background:var(--f7-message-received-bg-color);color:var(--f7-message-received-text-color)}.message-received .message-content{align-items:flex-end}.message:not(.message-last) .message-avatar{opacity:0}.message.message-same-footer .message-footer,.message.message-same-header .message-header,.message.message-same-name .message-name,.message:not(.message-first) .message-name{display:none}.message-appear-from-bottom{animation:message-appear-from-bottom .3s}.message-appear-from-top{animation:message-appear-from-top .3s}.message-typing-indicator{display:inline-block;font-size:0;vertical-align:middle}.message-typing-indicator>div{background:var(--f7-message-typing-indicator-bg-color);border-radius:50%;display:inline-block;opacity:var(--f7-message-typing-indicator-opacity);position:relative;vertical-align:middle}@keyframes message-appear-from-bottom{0%{transform:translate3d(0,100%,0)}to{transform:translateZ(0)}}@keyframes message-appear-from-top{0%{transform:translate3d(0,-100%,0)}to{transform:translateZ(0)}}.ios .message-footer b,.ios .message-header b,.ios .message-name b,.ios .messages-title b{font-weight:600}.ios .message-header,.ios .message-name{margin-bottom:3px}.ios .message-footer{margin-top:3px}.ios .message-bubble{min-width:48px}.ios .message-image{margin:var(--f7-message-bubble-padding-vertical) calc(var(--f7-message-bubble-padding-horizontal)*-1)}.ios .message-image:first-child{margin-top:calc(var(--f7-message-bubble-padding-vertical)*-1)}.ios .message-image:first-child img{border-top-left-radius:var(--f7-message-bubble-border-radius);border-top-right-radius:var(--f7-message-bubble-border-radius)}.ios .message-image:last-child{margin-bottom:calc(var(--f7-message-bubble-padding-vertical)*-1)}.ios .message-image:last-child img{border-bottom-left-radius:var(--f7-message-bubble-border-radius);border-bottom-right-radius:var(--f7-message-bubble-border-radius)}.ios .message-text-header{margin-bottom:3px}.ios .message-text-footer{margin-top:3px}.ios .message-received{margin-left:calc(10px + var(--f7-safe-area-left))}.ios .message-received .message-footer,.ios .message-received .message-header,.ios .message-received .message-name{margin-left:var(--f7-message-bubble-padding-horizontal)}.ios .message-received .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 42% 46% 56%;padding-left:calc(var(--f7-message-bubble-padding-horizontal) + 6px)}.ios .message-received .message-image{margin-left:calc((var(--f7-message-bubble-padding-horizontal) + 6px)*-1)}.ios .message-received.message-tail .message-bubble{border-radius:var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0}.ios .message-received.message-tail:not(.message-typing) .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 42% 46% 56%}.ios .message-received.message-tail:not(.message-typing) .message-bubble .message-image:last-child img{border-bottom-left-radius:0}.ios .message-sent{margin-right:calc(10px + var(--f7-safe-area-right))}.ios .message-sent .message-footer,.ios .message-sent .message-header,.ios .message-sent .message-name{margin-right:var(--f7-message-bubble-padding-horizontal)}.ios .message-sent .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 56% 46% 42%;padding-right:calc(var(--f7-message-bubble-padding-horizontal) + 6px)}.ios .message-sent .message-image{margin-right:calc((var(--f7-message-bubble-padding-horizontal) + 6px)*-1)}.ios .message-sent.message-tail .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 56% 46% 42%;border-radius:var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0 var(--f7-message-bubble-border-radius)}.ios .message-sent.message-tail .message-bubble .message-image:last-child img{border-bottom-right-radius:0}.ios .message+.message:not(.message-first){margin-top:1px}.ios .message-received.message-typing .message-content:after,.ios .message-received.message-typing .message-content:before{background:var(--f7-message-received-bg-color);border-radius:50%;content:"";position:absolute}.ios .message-received.message-typing .message-content:after{bottom:0;height:11px;left:4px;width:11px}.ios .message-received.message-typing .message-content:before{bottom:-4px;height:6px;left:-1px;width:6px}.ios .message-typing-indicator>div{height:9px;width:9px}.ios .message-typing-indicator>div+div{margin-right:4px}.ios .message-typing-indicator>div:first-child{animation:ios-message-typing-indicator .9s infinite}.ios .message-typing-indicator>div:nth-child(2){animation:ios-message-typing-indicator .9s .15s infinite}.ios .message-typing-indicator>div:nth-child(3){animation:ios-message-typing-indicator .9s .3s infinite}@keyframes ios-message-typing-indicator{0%{opacity:.35}25%{opacity:.2}50%{opacity:.2}}.md .message-footer b,.md .message-header b,.md .message-name b,.md .messages-title b{font-weight:500}.md .message-header,.md .message-name{margin-bottom:2px}.md .message-footer{margin-top:2px}.md .message-text-header{margin-bottom:4px}.md .message-text-footer{margin-top:4px}.md .message-image{margin:calc(var(--f7-message-bubble-padding-vertical)*-1) calc(var(--f7-message-bubble-padding-horizontal)*-1)}.md .message-image,.md .message-image img{border-radius:var(--f7-message-bubble-border-radius)}.md .message-received{margin-left:calc(8px + var(--f7-safe-area-left))}.md .message-received .message-footer,.md .message-received .message-header,.md .message-received .message-name{margin-left:16px}.md .message-received.message-first:not(.message-last) .message-bubble,.md .message-received.message-first:not(.message-last) .message-image,.md .message-received.message-first:not(.message-last) .message-image img{border-bottom-left-radius:4px}.md .message-received.message-last:not(.message-first) .message-bubble,.md .message-received.message-last:not(.message-first) .message-image,.md .message-received.message-last:not(.message-first) .message-image img{border-top-left-radius:4px}.md .message-received:not(.message-last):not(.message-first) .message-bubble,.md .message-received:not(.message-last):not(.message-first) .message-image,.md .message-received:not(.message-last):not(.message-first) .message-image img{border-bottom-left-radius:4px;border-top-left-radius:4px}.md .message-received .message-avatar+.message-content{margin-left:8px}.md .message-sent{margin-right:calc(8px + var(--f7-safe-area-right))}.md .message-sent .message-footer,.md .message-sent .message-header,.md .message-sent .message-name{margin-right:16px}.md .message-sent.message-first:not(.message-last) .message-bubble,.md .message-sent.message-first:not(.message-last) .message-image,.md .message-sent.message-first:not(.message-last) .message-image img{border-bottom-right-radius:4px}.md .message-sent.message-last:not(.message-first) .message-bubble,.md .message-sent.message-last:not(.message-first) .message-image,.md .message-sent.message-last:not(.message-first) .message-image img{border-top-right-radius:4px}.md .message-sent:not(.message-last):not(.message-first) .message-bubble,.md .message-sent:not(.message-last):not(.message-first) .message-image,.md .message-sent:not(.message-last):not(.message-first) .message-image img{border-bottom-right-radius:4px;border-top-right-radius:4px}.md .message-sent .message-avatar+.message-content{margin-right:var(--f7-message-bubble-padding-horizontal)}.md .message+.message:not(.message-first){margin-top:2px}.md .message-typing-indicator>div{height:6px;width:6px}.md .message-typing-indicator>div+div{margin-right:6px}.md .message-typing-indicator>div:first-child{animation:md-message-typing-indicator .9s infinite}.md .message-typing-indicator>div:nth-child(2){animation:md-message-typing-indicator .9s .15s infinite}.md .message-typing-indicator>div:nth-child(3){animation:md-message-typing-indicator .9s .3s infinite}@keyframes md-message-typing-indicator{0%{transform:translateY(0)}25%{transform:translateY(-5px)}50%{transform:translateY(0)}}:root{--f7-messagebar-attachments-height:155px;--f7-messagebar-sheet-height:252px;--f7-messagebar-sheet-landscape-height:192px}.ios{--f7-messagebar-height:44px;--f7-messagebar-font-size:17px;--f7-messagebar-textarea-bg-color:transparent;--f7-messagebar-border-color:transparent;--f7-messagebar-textarea-border-radius:17px;--f7-messagebar-textarea-padding:6px 16px;--f7-messagebar-textarea-height:34px;--f7-messagebar-textarea-font-size:17px;--f7-messagebar-textarea-line-height:20px;--f7-messagebar-sheet-bg-color:#d1d5da;--f7-messagebar-sheet-border-color:transparent;--f7-messagebar-attachment-border-radius:12px;--f7-messagebar-attachment-height:155px;--f7-messagebar-attachment-landscape-height:120px;--f7-messagebar-textarea-placeholder-color:rgba(0,0,0,0.4);--f7-messagebar-textarea-text-color:#000;--f7-messagebar-textarea-border:1px solid #c8c8cd;--f7-messagebar-attachments-border-color:#c8c8cd;--f7-messagebar-bg-color:#fff;--f7-messagebar-bg-color-rgb:255,255,255}.ios .dark,.ios.dark{--f7-messagebar-textarea-placeholder-color:rgba(255,255,255,0.4);--f7-messagebar-textarea-text-color:#fff;--f7-messagebar-textarea-border:1px solid var(--f7-bars-border-color);--f7-messagebar-attachments-border-color:var(--f7-bars-border-color);--f7-messagebar-bg-color:var(--f7-bars-bg-color);--f7-messagebar-bg-color-rgb:var(--f7-bars-bg-color-rgb)}.md{--f7-messagebar-height:64px;--f7-messagebar-font-size:16px;--f7-messagebar-textarea-border-radius:24px;--f7-messagebar-textarea-padding:12px 16px;--f7-messagebar-textarea-height:48px;--f7-messagebar-textarea-font-size:16px;--f7-messagebar-textarea-line-height:22px;--f7-messagebar-textarea-border:1px solid transparent;--f7-messagebar-attachment-border-radius:12px;--f7-messagebar-attachment-height:72px;--f7-messagebar-attachment-landscape-height:72px;--f7-messagebar-border-color:transparent;--f7-messagebar-attachments-border-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-messagebar-textarea-placeholder-color:var(--f7-md-on-surface-variant);--f7-messagebar-textarea-bg-color:var(--f7-md-surface-variant);--f7-messagebar-bg-color:var(--f7-md-surface);--f7-messagebar-textarea-text-color:var(--f7-md-on-surface);--f7-messagebar-sheet-bg-color:var(--f7-md-surface);--f7-messagebar-sheet-border-color:var(--f7-md-outline-variant);--f7-messagebar-link-color:var(--f7-md-on-surface)}.messagebar{background:var(--f7-messagebar-bg-color);bottom:0;font-size:var(--f7-messagebar-font-size);height:auto;min-height:var(--f7-messagebar-height);padding-bottom:var(--f7-safe-area-bottom);transform:translateZ(0)}.messagebar:before{background-color:var(--f7-messagebar-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .messagebar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-messagebar-bg-color-rgb),var(--f7-bars-translucent-opacity))}}.messagebar.no-outline:before,.messagebar.toolbar-hidden:after{display:none!important}.messagebar .toolbar-inner{bottom:auto;flex-direction:row-reverse;height:auto;padding-left:calc(var(--f7-messagebar-inner-padding-left, var(--f7-toolbar-inner-padding-left)) + var(--f7-safe-area-left));padding-right:calc(var(--f7-messagebar-inner-padding-right, var(--f7-toolbar-inner-padding-right)) + var(--f7-safe-area-right));position:relative;top:auto}.messagebar.messagebar-sheet-visible>.toolbar-inner{bottom:0}.messagebar .messagebar-area{flex-shrink:1;overflow:hidden;position:relative;width:100%}.messagebar textarea{background-color:var(--f7-messagebar-textarea-bg-color);border:var(--f7-messagebar-textarea-border);border-radius:var(--f7-messagebar-textarea-border-radius);color:var(--f7-messagebar-textarea-text-color);flex-shrink:1;font-size:var(--f7-messagebar-textarea-font-size);height:var(--f7-messagebar-textarea-height);line-height:var(--f7-messagebar-textarea-line-height);padding:var(--f7-messagebar-textarea-padding);width:100%}.messagebar textarea::placeholder{color:var(--f7-messagebar-textarea-placeholder-color)}.messagebar a.link{align-self:flex-end;color:var(--f7-messagebar-link-color,var(--f7-theme-color));flex-shrink:0}.messagebar-attachments{-webkit-overflow-scrolling:touch;box-sizing:border-box;font-size:0;overflow:auto;position:relative;white-space:nowrap;width:100%}.messagebar:not(.messagebar-attachments-visible) .messagebar-attachments{display:none}.messagebar-attachment{background-position:50%;background-repeat:no-repeat;background-size:cover;border-radius:var(--f7-messagebar-attachment-border-radius);display:inline-block;height:var(--f7-messagebar-attachment-height);position:relative;vertical-align:middle;white-space:normal}@media (orientation:landscape){.messagebar-attachment{height:var(--f7-messagebar-attachment-landscape-height)}}.messagebar-attachment img{border-radius:var(--f7-messagebar-attachment-border-radius);display:block;height:100%;width:auto}.messagebar-sheet{-webkit-overflow-scrolling:touch;align-content:flex-start;background-color:var(--f7-messagebar-sheet-bg-color);border-top:1px solid var(--f7-messagebar-sheet-border-color);display:flex;flex-direction:column;flex-wrap:wrap;height:var(--f7-messagebar-sheet-height);overflow:auto;padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right)}@media (orientation:landscape){.messagebar-sheet{height:var(--f7-messagebar-sheet-landscape-height)}}.messagebar-sheet-image{background-position:50%;background-repeat:no-repeat;background-size:cover}.messagebar-sheet-image>img{border-radius:inherit;height:100%;object-fit:cover;object-position:center;transition-duration:.2s;width:100%}.messagebar-attachment-delete{border-radius:50%;box-sizing:border-box;cursor:pointer;display:block;position:absolute}.messagebar-attachment-delete:after,.messagebar-attachment-delete:before{content:"";left:50%;position:absolute;top:50%}.messagebar-attachment-delete:after{transform:rotate(45deg)}.messagebar-attachment-delete:before{transform:rotate(-45deg)}.messagebar:not(.messagebar-sheet-visible) .messagebar-sheet{display:none}.messagebar~*{--f7-page-toolbar-bottom-offset:var(--f7-messagebar-height)}.ios .messagebar a.link.icon-only:first-child{margin-left:-8px}.ios .messagebar a.link.icon-only:last-child{margin-right:-8px}.ios .messagebar .messagebar-area+a.link:not(.icon-only),.ios .messagebar a.link:not(.icon-only)+.messagebar-area{margin-left:8px}.ios .messagebar-area{margin-bottom:5px;margin-top:5px}.ios .messagebar-attachments{border:1px solid var(--f7-messagebar-attachments-border-color);border-bottom:none;border-radius:var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;padding:5px}.ios .messagebar-attachments-visible .messagebar-attachments+textarea{border-radius:0 0 var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius)}.ios .messagebar-attachment{font-size:14px}.ios .messagebar-attachment+.messagebar-attachment{margin-right:8px}.ios .messagebar-attachment-delete{background:#7d7e80;border:2px solid #fff;box-shadow:0 0 2px rgba(0,0,0,.2);height:20px;right:5px;top:5px;width:20px}.ios .messagebar-attachment-delete:after,.ios .messagebar-attachment-delete:before{background:#fff;height:2px;margin-left:-5px;margin-top:-1px;width:10px}.ios .messagebar-sheet-image,.ios .messagebar-sheet-item{box-sizing:border-box;flex-shrink:0;height:calc((var(--f7-messagebar-sheet-height) - 2px)/2);margin-right:1px;margin-top:1px;overflow:hidden;position:relative;width:calc((var(--f7-messagebar-sheet-height) - 2px)/2)}@media (orientation:landscape){.ios .messagebar-sheet-image,.ios .messagebar-sheet-item{height:calc((var(--f7-messagebar-sheet-landscape-height) - 2px)/2);width:calc((var(--f7-messagebar-sheet-landscape-height) - 2px)/2)}}.ios .messagebar-sheet-image .icon-checkbox,.ios .messagebar-sheet-image .icon-radio,.ios .messagebar-sheet-item .icon-checkbox,.ios .messagebar-sheet-item .icon-radio{bottom:8px;position:absolute;right:8px;z-index:1}.md .messagebar{--f7-toolbar-link-height:var(--f7-messagebar-height)}.md .messagebar-attachments{border-bottom:1px solid var(--f7-messagebar-attachments-border-color);padding:16px 16px 0}.md .messagebar-attachment img{height:var(--f7-messagebar-attachment-height);object-fit:cover;object-position:center;width:var(--f7-messagebar-attachment-height)}.md .messagebar-attachment+.messagebar-attachment{margin-right:16px}.md .messagebar-attachments-visible .messagebar-attachments{background:var(--f7-messagebar-textarea-bg-color);border-radius:var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0}.md .messagebar-attachments-visible textarea{border-top-left-radius:0;border-top-right-radius:0}.md .messagebar-area{margin-bottom:8px;margin-top:8px}.md .messagebar-attachment-delete{background-color:var(--f7-md-inverse-surface);border:2px solid var(--f7-messagebar-textarea-bg-color);border-radius:24px;height:24px;right:-6px;top:-6px;width:24px}.md .messagebar-attachment-delete:after,.md .messagebar-attachment-delete:before{background:var(--f7-messagebar-textarea-bg-color);height:2px;margin-left:-6px;margin-top:-1px;width:12px}.md .messagebar-sheet-image,.md .messagebar-sheet-item{--f7-touch-ripple-color:transparent;border-radius:4px;box-sizing:border-box;flex-shrink:0;height:calc((var(--f7-messagebar-sheet-height) - 24px)/2);margin-right:8px;margin-top:8px;overflow:hidden;position:relative;width:calc((var(--f7-messagebar-sheet-height) - 24px)/2)}@media (orientation:landscape){.md .messagebar-sheet-image,.md .messagebar-sheet-item{height:calc((var(--f7-messagebar-sheet-landscape-height) - 24px)/2);width:calc((var(--f7-messagebar-sheet-landscape-height) - 8px)/2)}}.md .messagebar-sheet-image input:checked~img,.md .messagebar-sheet-item input:checked~img{transform:scale(.85)}.md .messagebar-sheet-image input:checked~.icon-checkbox,.md .messagebar-sheet-image input:checked~.icon-radio,.md .messagebar-sheet-item input:checked~.icon-checkbox,.md .messagebar-sheet-item input:checked~.icon-radio{transform:translate(-50%,-50%) scale(1)}.md .messagebar-sheet-image .icon-checkbox,.md .messagebar-sheet-image .icon-radio,.md .messagebar-sheet-item .icon-checkbox,.md .messagebar-sheet-item .icon-radio{--f7-checkbox-inactive-color:var(--f7-md-surface);--f7-checkbox-active-color:var(--f7-md-surface);align-items:center;border:none;border-radius:50%;display:flex;height:32px;justify-content:center;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(.85);width:32px;z-index:1}.md .messagebar-sheet-image .icon-checkbox:after,.md .messagebar-sheet-image .icon-radio:after,.md .messagebar-sheet-item .icon-checkbox:after,.md .messagebar-sheet-item .icon-radio:after{color:var(--f7-md-on-surface);font-size:18px;height:100%;left:0;line-height:32px;position:static;width:auto}@font-face{font-family:swiper-icons;font-style:normal;font-weight:400;src:url("data:application/font-woff;charset=utf-8;base64, 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")}:root{--swiper-theme-color:#007aff}:host{display:block;margin-left:auto;margin-right:auto;position:relative;z-index:1}.swiper{display:block;list-style:none;margin-left:auto;margin-right:auto;overflow:hidden;overflow:clip;padding:0;position:relative;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{box-sizing:initial;display:flex;height:100%;position:relative;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);width:100%;z-index:1}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{display:block;flex-shrink:0;height:100%;position:relative;transition-property:transform;width:100%}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{-ms-overflow-style:none;overflow:auto;scrollbar-width:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);min-width:1px;width:100%}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(270deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(90deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(0deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(180deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top:4px solid transparent;box-sizing:border-box;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;transform-origin:50%;width:42px;z-index:10}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s linear infinite}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper:after{content:"";left:0;pointer-events:none;position:absolute;top:0}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper:after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper:after{height:var(--swiper-virtual-size);width:1px}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{align-items:center;color:var(--swiper-navigation-color,var(--swiper-theme-color));cursor:pointer;display:flex;height:var(--swiper-navigation-size);justify-content:center;margin-top:calc(0px - var(--swiper-navigation-size)/2);position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/44*27);z-index:10}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{cursor:auto;opacity:.35;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{cursor:auto;opacity:0;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{height:100%;object-fit:contain;transform-origin:center;width:100%}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);font-variant:normal;letter-spacing:0;line-height:1;text-transform:none!important}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:"prev"}.swiper-button-next,.swiper-rtl .swiper-button-prev{left:auto;right:var(--swiper-navigation-sides-offset,10px)}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:"next"}.swiper-pagination{position:absolute;text-align:center;transform:translateZ(0);transition:opacity .3s;z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);left:0;top:var(--swiper-pagination-top,auto);width:100%}.swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{position:relative;transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{background:var(--swiper-pagination-bullet-inactive-color,#000);border-radius:var(--swiper-pagination-bullet-border-radius,50%);display:inline-block;height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px))}button.swiper-pagination-bullet{-webkit-appearance:none;appearance:none;border:none;box-shadow:none;margin:0;padding:0}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{background:var(--swiper-pagination-color,var(--swiper-theme-color));opacity:var(--swiper-pagination-bullet-opacity,1)}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{left:var(--swiper-pagination-left,auto);right:var(--swiper-pagination-right,8px);top:50%;transform:translate3d(0,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{display:block;margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:transform .2s,top .2s}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,left .2s}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));height:100%;left:0;position:absolute;top:0;transform:scale(0);transform-origin:left top;width:100%}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0;width:100%}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{height:100%;left:0;top:0;width:var(--swiper-pagination-progressbar-size,4px)}.swiper-pagination-lock{display:none}.swiper-scrollbar{background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1));border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;-ms-touch-action:none}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{bottom:var(--swiper-scrollbar-bottom,4px);height:var(--swiper-scrollbar-size,4px);left:var(--swiper-scrollbar-sides-offset,1%);position:absolute;top:var(--swiper-scrollbar-top,auto);width:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);z-index:50}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{height:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);left:var(--swiper-scrollbar-left,auto);position:absolute;right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);width:var(--swiper-scrollbar-size,4px);z-index:50}.swiper-scrollbar-drag{background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);height:100%;left:0;position:relative;top:0;width:100%}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{align-items:center;display:flex;height:100%;justify-content:center;text-align:center;width:100%}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-height:100%;max-width:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none}.swiper .swiper-notification{left:0;opacity:0;pointer-events:none;position:absolute;top:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{margin:0 auto;transition-timing-function:ease-out}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-direction:column;flex-wrap:wrap}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;height:100%;pointer-events:none;transform-origin:0 0;visibility:hidden;width:100%;z-index:1}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{bottom:0;height:100%;left:0;opacity:.6;position:absolute;width:100%;z-index:0}.swiper-cube .swiper-cube-shadow:before{background:#000;bottom:0;content:"";filter:blur(50px);left:0;position:absolute;right:0;top:0}.swiper-cube .swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top{-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:0}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:none;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top{-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:0}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transform-origin:center bottom}:root{--f7-photobrowser-bg-color:#fff;--f7-photobrowser-bars-bg-color:rgba(var(--f7-bars-bg-color-rgb),0.95);--f7-photobrowser-bars-text-color:var(--f7-bars-text-color);--f7-photobrowser-bars-link-color:var(--f7-bars-link-color);--f7-photobrowser-caption-font-size:13px;--f7-photobrowser-caption-font-weight:500;--f7-photobrowser-caption-light-text-color:#000;--f7-photobrowser-caption-dark-text-color:#fff;--f7-photobrowser-exposed-bg-color:#000;--f7-photobrowser-dark-bg-color:#000;--f7-photobrowser-dark-bars-bg-color:rgba(27,27,27,0.8);--f7-photobrowser-dark-bars-text-color:#fff;--f7-photobrowser-dark-bars-link-color:#fff}.photo-browser{height:100%;left:0;position:absolute;top:0;width:100%;z-index:400}.photo-browser-standalone.modal-in{animation:photo-browser-in .4s;transition-duration:0ms}.photo-browser-standalone.modal-out{animation:photo-browser-out .4s!important;transition-duration:0ms}.photo-browser-standalone.modal-out.swipe-close-to-bottom,.photo-browser-standalone.modal-out.swipe-close-to-top{animation:none!important}.photo-browser-standalone.photo-browser-transitioning{animation:none!important;transition:.4s}.photo-browser-popup.modal-out.swipe-close-to-bottom,.photo-browser-popup.modal-out.swipe-close-to-top{transition-duration:.3s}.photo-browser-popup.modal-out.swipe-close-to-bottom{transform:translate3d(0,100vh,0)}.photo-browser-popup.modal-out.swipe-close-to-top{transform:translate3d(0,-100vh,0)}.photo-browser-page{background:none}.photo-browser-page .toolbar{transform:none}.photo-browser-popup{background:none}.photo-browser-of{margin:0 5px}.photo-browser-captions{bottom:var(--f7-safe-area-bottom);left:0;opacity:1;pointer-events:none;position:absolute;transition-duration:.4s;width:100%;z-index:10}.photo-browser-captions.photo-browser-captions-exposed{opacity:0}.toolbar~.toolbar.photo-browser-thumbs{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.page~.photo-browser-page:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs,.photo-browser-popup:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs,.photo-browser-standalone:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs{height:var(--f7-toolbar-height)}.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs{transform:translate3d(0,calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom, 0)),0)}.navbar+.toolbar.photo-browser-thumbs .swiper,.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs .swiper{height:calc(100% - var(--f7-safe-area-bottom, 0))}.toolbar~.photo-browser-captions{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));transform:translateZ(0)}.toolbar~.photo-browser-captions.photo-browser-captions-exposed{transform:translateZ(0)}.toolbar~.toolbar~.photo-browser-captions{bottom:calc(var(--f7-toolbar-height)*2 + var(--f7-safe-area-bottom))}.toolbar~.toolbar~.photo-browser-captions.photo-browser-captions-exposed{transform:translate3d(0,var(--f7-toolbar-height),0)}.photo-browser-thumbs{transition-property:transform,background-color,color}.photo-browser-thumbs .swiper{height:100%;width:100%}.photo-browser-thumbs .swiper-slide{align-items:center;display:flex;justify-content:center;width:auto}.photo-browser-thumbs img{border-radius:2px;display:block;height:75%;min-width:4px;width:auto}.photo-browser-thumbs .swiper-slide img{transform:translateX(-4px);transition-duration:.15s}.photo-browser-thumbs .swiper-slide-active img{transform:scale(1.2)}.photo-browser-thumbs .swiper-slide-active~.swiper-slide img{transform:translateX(4px)}.photo-browser-caption{bottom:0;box-sizing:border-box;font-size:var(--f7-photobrowser-caption-font-size);font-weight:var(--f7-photobrowser-caption-font-weight);left:0;opacity:0;padding:4px 5px;position:absolute;text-align:center;transition-duration:.4s;width:100%}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .photo-browser-caption{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur))}}.photo-browser-caption:empty{display:none}.photo-browser-caption.photo-browser-caption-active{opacity:1}.photo-browser-captions-light .photo-browser-caption{color:var(--f7-photobrowser-caption-light-text-color)}.dark .photo-browser-caption,.photo-browser-captions-dark .photo-browser-caption{color:var(--f7-photobrowser-caption-dark-text-color)}.photo-browser-swiper-container{background:var(--f7-photobrowser-bg-color);height:100%;left:0;overflow:hidden;position:absolute;top:0;touch-action:none;transition:.4s;transition-property:background-color;width:100%}.photo-browser-next.swiper-button-disabled,.photo-browser-prev.swiper-button-disabled{opacity:.3;pointer-events:none}.photo-browser-slide{align-items:center;box-sizing:border-box;display:flex;flex-shrink:0;height:100%;justify-content:center;overflow:hidden;position:relative;width:100%}.photo-browser-slide span.swiper-zoom-container{display:none}.photo-browser-slide img{display:none;height:auto;max-height:100%;max-width:100%;width:auto}.photo-browser-slide.swiper-slide-active span.swiper-zoom-container,.photo-browser-slide.swiper-slide-next span.swiper-zoom-container,.photo-browser-slide.swiper-slide-prev span.swiper-zoom-container{display:flex}.photo-browser-slide.swiper-slide-active img,.photo-browser-slide.swiper-slide-next img,.photo-browser-slide.swiper-slide-prev img{display:inline}.photo-browser-slide.swiper-slide-active.photo-browser-slide-lazy .preloader,.photo-browser-slide.swiper-slide-next.photo-browser-slide-lazy .preloader,.photo-browser-slide.swiper-slide-prev.photo-browser-slide-lazy .preloader{display:block}.photo-browser-slide iframe{height:100%;width:100%}.photo-browser-slide .preloader{display:none;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;width:42px}.navbar-photo-browser .right .link i,.navbar-photo-browser .right .link svg{display:block;height:24px;width:24px}.navbar-photo-browser .navbar-bg,.photo-browser-caption,.photo-browser-page .navbar-bg,.photo-browser-page .toolbar{background-color:var(--f7-photobrowser-bars-bg-color,rgba(var(--f7-bars-bg-color-rgb),.95))}.photo-browser-page{touch-action:none}.photo-browser-page .navbar,.photo-browser-page .toolbar{color:var(--f7-photobrowser-bars-text-color,var(--f7-bars-text-color));transform:translateZ(0);transition-duration:.4s}.photo-browser-page .navbar a,.photo-browser-page .toolbar a{color:var(--f7-photobrowser-bars-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.photo-browser-exposed .navbar,.photo-browser-exposed .toolbar:not(.photo-browser-thumbs){opacity:0;pointer-events:none;visibility:hidden}.photo-browser-exposed .toolbar:not(.photo-browser-thumbs)~.photo-browser-captions,.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs~.photo-browser-captions{transform:translate3d(0,var(--f7-toolbar-height),0)}.photo-browser-exposed .photo-browser-swiper-container{background:var(--f7-photobrowser-exposed-bg-color)}.photo-browser-dark .photo-browser-thumbs,.photo-browser-dark .toolbar,.photo-browser-exposed .photo-browser-thumbs,.photo-browser-exposed .toolbar{background-color:var(--f7-photobrowser-dark-bars-bg-color)}.photo-browser-dark .photo-browser-caption,.photo-browser-exposed .photo-browser-caption{background-color:var(--f7-photobrowser-dark-bars-bg-color);color:var(--f7-photobrowser-caption-dark-text-color)}.view.with-photo-browser-page-exposed .navbar{opacity:0;pointer-events:none}.photo-browser-page .toolbar:after,.photo-browser-page .toolbar:before{display:none!important}.navbar-photo-browser-dark .navbar-bg,.photo-browser-page-dark .navbar-bg{background:var(--f7-photobrowser-dark-bars-bg-color)}.navbar-photo-browser-dark .navbar-bg:after,.navbar-photo-browser-dark .navbar-bg:before,.photo-browser-page-dark .navbar-bg:after,.photo-browser-page-dark .navbar-bg:before{display:none!important}.navbar-photo-browser-dark,.photo-browser-dark .navbar,.photo-browser-dark .toolbar,.photo-browser-page-dark .navbar,.photo-browser-page-dark .toolbar{color:var(--f7-photobrowser-dark-bars-text-color)}.navbar-photo-browser-dark a,.photo-browser-dark .navbar a,.photo-browser-dark .toolbar a,.photo-browser-page-dark .navbar a,.photo-browser-page-dark .toolbar a{color:var(--f7-photobrowser-dark-bars-link-color)}.photo-browser-dark .photo-browser-swiper-container,.photo-browser-page-dark .photo-browser-swiper-container{background:var(--f7-photobrowser-dark-bg-color)}@keyframes photo-browser-in{0%{opacity:0;transform:translateZ(0) scale(.5)}50%{opacity:1;transform:translateZ(0) scale(1.05)}to{opacity:1;transform:translateZ(0) scale(1)}}@keyframes photo-browser-out{0%{opacity:1;transform:translateZ(0) scale(1)}50%{opacity:1;transform:translateZ(0) scale(1.05)}to{opacity:0;transform:translateZ(0) scale(.5)}}:root{--f7-notification-max-width:568px;--f7-notification-subtitle-text-transform:none;--f7-notification-subtitle-line-height:1.35;--f7-notification-text-text-transform:none;--f7-notification-text-font-weight:400}.ios{--f7-notification-margin:8px;--f7-notification-padding-horizontal:10px;--f7-notification-padding-vertical:10px;--f7-notification-border-radius:12px;--f7-notification-box-shadow:0px 5px 25px -10px rgba(0,0,0,0.7);--f7-notification-icon-size:20px;--f7-notification-title-font-size:13px;--f7-notification-title-text-transform:uppercase;--f7-notification-title-line-height:1.4;--f7-notification-title-font-weight:400;--f7-notification-title-letter-spacing:0.02em;--f7-notification-title-right-font-size:13px;--f7-notification-subtitle-font-size:15px;--f7-notification-subtitle-font-weight:600;--f7-notification-text-font-size:15px;--f7-notification-text-line-height:1.2;--f7-notification-bg-color:rgba(250,250,250,0.95);--f7-notification-bg-color-rgb:255,255,255;--f7-notification-title-color:#000;--f7-notification-title-right-color:rgba(0,0,0,0.45);--f7-notification-subtitle-color:#000;--f7-notification-text-color:#000}.ios .dark,.ios.dark{--f7-notification-bg-color:rgba(30,30,30,0.95);--f7-notification-bg-color-rgb:30,30,30;--f7-notification-title-color:#fff;--f7-notification-text-color:#fff;--f7-notification-subtitle-color:#fff;--f7-notification-title-right-color:rgba(255,255,255,0.55)}.md{--f7-notification-margin:16px;--f7-notification-padding-vertical:20px;--f7-notification-padding-horizontal:16px;--f7-notification-border-radius:16px;--f7-notification-box-shadow:none;--f7-notification-icon-size:24px;--f7-notification-title-font-size:16px;--f7-notification-title-text-transform:none;--f7-notification-title-line-height:1.35;--f7-notification-title-font-weight:500;--f7-notification-title-right-font-size:12px;--f7-notification-subtitle-font-size:14px;--f7-notification-subtitle-font-weight:400;--f7-notification-text-font-size:14px;--f7-notification-text-line-height:1.35}.md,.md .dark,.md [class*=color-]{--f7-notification-title-color:var(--f7-md-on-surface);--f7-notification-bg-color:var(--f7-md-surface-5);--f7-notification-text-color:var(--f7-md-on-surface-variant);--f7-notification-title-right-color:var(--f7-md-on-surface-variant);--f7-notification-subtitle-color:var(--f7-md-on-surface)}.notification{background:var(--f7-notification-bg-color);border:none;border-radius:var(--f7-notification-border-radius);box-shadow:var(--f7-notification-box-shadow);box-sizing:border-box;direction:ltr;display:none;font-size:14px;left:var(--f7-notification-margin);margin:0;margin-top:var(--f7-safe-area-top);max-width:var(--f7-notification-max-width);padding:var(--f7-notification-padding-vertical) var(--f7-notification-padding-horizontal);position:absolute;top:var(--f7-notification-margin);transition-property:transform;width:calc(100% - var(--f7-notification-margin)*2);z-index:20000}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .notification{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-notification-bg-color-rgb),.8)}}@media (min-width:568px){.notification{left:50%;margin-left:calc(var(--f7-notification-max-width)*-1/2);width:var(--f7-notification-max-width)}}.notification-title{color:var(--f7-notification-title-color,var(--f7-theme-color));font-size:var(--f7-notification-title-font-size);font-weight:var(--f7-notification-title-font-weight);letter-spacing:var(--f7-notification-title-letter-spacing);line-height:var(--f7-notification-title-line-height);text-transform:var(--f7-notification-title-text-transform)}.notification-subtitle{color:var(--f7-notification-subtitle-color);font-size:var(--f7-notification-subtitle-font-size);font-weight:var(--f7-notification-subtitle-font-weight);line-height:var(--f7-notification-subtitle-line-height);text-transform:var(--f7-notification-subtitle-text-transform)}.notification-text{color:var(--f7-notification-text-color);font-size:var(--f7-notification-text-font-size);font-weight:var(--f7-notification-text-font-weight);line-height:var(--f7-notification-text-line-height);text-transform:var(--f7-notification-text-text-transform)}.notification-title-right-text{color:var(--f7-notification-title-right-color);font-size:var(--f7-notification-title-right-font-size)}.notification-icon{font-size:0;line-height:var(--f7-notification-icon-size)}.notification-icon,.notification-icon i{height:var(--f7-notification-icon-size)!important;width:var(--f7-notification-icon-size)!important}.notification-icon i{font-size:var(--f7-notification-icon-size)}.notification-icon img{height:var(--f7-notification-icon-size)}.notification-header{align-items:center;display:flex;justify-content:flex-start}.notification-close-button{cursor:pointer;margin-left:auto;position:relative}.notification-close-button:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;left:50%;letter-spacing:normal;line-height:1;position:absolute;text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;white-space:nowrap;width:100%}.ios .notification{transform:translate3d(0,-200%,0);transition-duration:.45s}.ios .notification.modal-in{opacity:1;transform:translateZ(0)}.ios .notification.modal-out{transform:translate3d(0,-200%,0)}.ios .notification-icon{margin-right:8px}.ios .notification-header+.notification-content{margin-top:10px}.ios .notification-title-right-text{margin-left:auto;margin-right:6px}.ios .notification-title-right-text+.notification-close-button{margin-left:10px}.ios .notification-close-button{font-size:14px;height:20px;opacity:.3;transition-duration:.3s;width:20px}.ios .notification-close-button.active-state{opacity:.1;transition-duration:0ms}.ios .notification-close-button:after{color:#000;content:"notification_close_ios";font-size:.65em;height:44px;line-height:44px;margin-left:-22px;margin-top:-22px;width:44px}.ios .dark .notification-close-button:after,.ios.dark .notification-close-button:after{color:#fff}.md .notification{transform:translate3d(0,-150%,0)}.md .notification.modal-in{transform:translateZ(0);transition-duration:.5s;transition-timing-function:cubic-bezier(0,.8,.34,1)}.md .notification.modal-in.notification-transitioning{transition-duration:.2s}.md .notification.modal-out{animation:none;transform:translate3d(0,-150%,0);transition-duration:.2s;transition-timing-function:ease-in}.md .notification-with-icon .notification-icon{left:var(--f7-notification-padding-horizontal);position:absolute;top:var(--f7-notification-padding-vertical)}.md .notification-with-icon .notification-content,.md .notification-with-icon .notification-header{margin-left:calc(var(--f7-notification-icon-size) + 16px)}.md .notification-icon{margin-right:8px}.md .notification-subtitle+.notification-text{margin-top:4px}.md .notification-header+.notification-content{margin-top:8px}.md .notification-title-right-text{margin-left:4px}.md .notification-title-right-text:before{background:var(--f7-notification-title-right-color);border-radius:50%;content:"";display:inline-block;height:3px;margin-right:4px;vertical-align:middle;width:3px}.md .notification-close-button{height:16px;transition-duration:.3s;width:16px}.md .notification-close-button:after,.md .notification-close-button:before{height:48px;left:50%;margin-left:-24px;margin-top:-24px;top:50%;width:48px}.md .notification-close-button:after{color:var(--f7-md-on-surface-variant);content:"delete_round_md";font-size:24px;line-height:48px}@keyframes notification-md-in{0%{transform:translate3d(0,-150%,0)}50%{transform:translate3d(0,10%,0)}to{transform:translateZ(0)}}:root{--f7-autocomplete-dropdown-placeholder-color:#a9a9a9;--f7-autocomplete-dropdown-preloader-size:20px;--f7-autocomplete-dropdown-font-size:var(--f7-list-font-size)}.ios{--f7-autocomplete-dropdown-box-shadow:0px 3px 3px rgba(0,0,0,0.2);--f7-autocomplete-dropdown-text-matching-font-weight:600;--f7-autocomplete-dropdown-bg-color:#fff;--f7-autocomplete-dropdown-text-color:#000;--f7-autocomplete-dropdown-text-matching-color:#000}.ios .dark,.ios.dark{--f7-autocomplete-dropdown-bg-color:#1c1c1d;--f7-autocomplete-dropdown-text-color:#fff;--f7-autocomplete-dropdown-text-matching-color:#fff}.md{--f7-autocomplete-dropdown-box-shadow:none;--f7-autocomplete-dropdown-text-matching-font-weight:500;--f7-autocomplete-dropdown-text-matching-color:#000}.md .dark,.md.dark{--f7-autocomplete-dropdown-text-matching-color:#fff}.md,.md .dark,.md [class*=color-]{--f7-autocomplete-dropdown-bg-color:var(--f7-md-surface-2);--f7-autocomplete-dropdown-text-color:var(--f7-md-on-surface)}.autocomplete-page .autocomplete-found{display:block}.autocomplete-page .autocomplete-not-found{display:none}.autocomplete-page .autocomplete-values{display:block}.autocomplete-page .list ul:empty{display:none}.autocomplete-preloader:not(.autocomplete-preloader-visible){visibility:hidden}.autocomplete-preloader:not(.autocomplete-preloader-visible),.autocomplete-preloader:not(.autocomplete-preloader-visible) *{animation:none}.autocomplete-dropdown{background:var(--f7-autocomplete-dropdown-bg-color);box-shadow:var(--f7-autocomplete-dropdown-box-shadow);box-sizing:border-box;position:absolute;right:0;width:100%;z-index:500}.autocomplete-dropdown .autocomplete-dropdown-inner{-webkit-overflow-scrolling:touch;height:100%;overflow:auto;position:relative;z-index:1}.autocomplete-dropdown .autocomplete-preloader{bottom:100%;display:none;height:var(--f7-autocomplete-dropdown-preloader-size);position:absolute;width:var(--f7-autocomplete-dropdown-preloader-size)}.autocomplete-dropdown .autocomplete-preloader-visible{display:block}.autocomplete-dropdown .autocomplete-dropdown-placeholder{color:var(--f7-autocomplete-dropdown-placeholder-color)}.autocomplete-dropdown .list{color:var(--f7-autocomplete-dropdown-text-color);font-size:var(--f7-autocomplete-dropdown-font-size);margin:0}.autocomplete-dropdown .list b{color:var(--f7-autocomplete-dropdown-text-matching-color);font-weight:var(--f7-autocomplete-dropdown-text-matching-font-weight)}.autocomplete-dropdown .list ul{background:none!important}.autocomplete-dropdown .list ul:after,.autocomplete-dropdown .list ul:before{display:none!important}.autocomplete-dropdown .autocomplete-dropdown-selected{background:var(--f7-autocomplete-dropdown-selected-bg-color,rgba(var(--f7-theme-color-rgb),.2))}.searchbar-input-wrap .autocomplete-dropdown{background-color:var(--f7-searchbar-input-bg-color,var(--f7-searchbar-bg-color));border-radius:var(--f7-searchbar-input-border-radius);margin-top:calc(var(--f7-searchbar-input-height)*-1);top:100%;z-index:-1}.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-inner{padding-top:var(--f7-searchbar-input-height)}.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-placeholder{color:var(--f7-searchbar-placeholder-color)}.searchbar-input-wrap .autocomplete-dropdown li:last-child{border-radius:0 0 var(--f7-searchbar-input-border-radius) var(--f7-searchbar-input-border-radius);overflow:hidden;position:relative}.searchbar-input-wrap .autocomplete-dropdown .item-content{padding-right:calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px))}.ios .autocomplete-dropdown .autocomplete-preloader{left:16px;margin-bottom:12px}.md .autocomplete-page .navbar .autocomplete-preloader{margin-left:8px}.md .autocomplete-popup .navbar .autocomplete-preloader{margin-left:16px;margin-right:8px}.md .autocomplete-dropdown .autocomplete-preloader{left:16px;margin-bottom:8px}.md .autocomplete-dropdown .autocomplete-preloader circle{stroke-width:3}:root{--f7-tooltip-padding:8px 16px;--f7-tooltip-font-size:14px;--f7-tooltip-font-weight:500;--f7-tooltip-desktop-padding:6px 8px;--f7-tooltip-desktop-font-size:12px}.ios{--f7-tooltip-border-radius:4px;--f7-tooltip-bg-color:rgba(0,0,0,0.87);--f7-tooltip-text-color:#fff}.md{--f7-tooltip-border-radius:8px}.md,.md .dark,.md [class*=color-]{--f7-tooltip-bg-color:var(--f7-md-secondary);--f7-tooltip-text-color:var(--f7-md-on-secondary)}.tooltip{background:var(--f7-tooltip-bg-color);border-radius:var(--f7-tooltip-border-radius);box-sizing:border-box;color:var(--f7-tooltip-text-color);font-size:var(--f7-tooltip-font-size);font-weight:var(--f7-tooltip-font-weight);line-height:1.2;opacity:0;padding:var(--f7-tooltip-padding);position:absolute;transform:scale(.9);transition-duration:.15s;transition-property:opacity,transform;z-index:20000;z-index:99000}.tooltip.tooltip-in{opacity:1;transform:scale(1)}.tooltip.tooltip-out{opacity:0;transform:scale(1)}.device-desktop .tooltip{font-size:var(--f7-tooltip-desktop-font-size);padding:var(--f7-tooltip-desktop-padding)}.gauge{display:inline-block;margin-left:auto;margin-right:auto;position:relative;text-align:center}.gauge svg,.gauge-svg{height:auto;max-width:100%}.gauge svg circle,.gauge svg path,.gauge-svg circle,.gauge-svg path{transition-duration:.4s}.skeleton-block{background:var(--skeleton-color)!important;display:block;height:1em;width:100%}@font-face{font-display:block;font-family:skeleton;font-style:normal,italic;font-weight:100,200,300,400,500,600,700,800,900;src:url("data:application/font-woff;charset=utf-8;base64,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") format("woff")}.skeleton-text{font-family:skeleton!important;-webkit-user-select:none;user-select:none}.skeleton-text,.skeleton-text *{color:var(--skeleton-color)!important;letter-spacing:-.03em!important}.skeleton-image{display:inline-block}.skeleton-image svg{height:auto;max-width:100%}.skeleton-image polygon{fill:var(--skeleton-color)}.skeleton-image path{fill:var(--skeleton-icon-color)}.skeleton-avatar{display:inline-block}.skeleton-avatar svg{height:auto;max-width:100%}.skeleton-avatar rect{fill:var(--skeleton-color)}.skeleton-avatar path{fill:var(--skeleton-icon-color)}.skeleton-effect-blink,.skeleton-effect-wave{animation:skeleton-effect-wave 1s infinite;-webkit-mask-image:linear-gradient(90deg,transparent 0,black 25%,black 75%,transparent);mask-image:linear-gradient(90deg,transparent 0,black 25%,black 75%,transparent);-webkit-mask-position:50% top;mask-position:50% top;-webkit-mask-repeat:repeat;mask-repeat:repeat;-webkit-mask-size:200% 100%;mask-size:200% 100%}.skeleton-effect-fade{animation:skeleton-effect-fade 1s infinite}.skeleton-effect-pulse{animation:skeleton-effect-pulse 1s infinite}@keyframes skeleton-effect-fade{0%{opacity:1}50%{opacity:.2}to{opacity:1}}@keyframes skeleton-effect-wave{0%{-webkit-mask-position:50% top;mask-position:50% top}to{-webkit-mask-position:-150% top;mask-position:-150% top}}@keyframes skeleton-effect-pulse{0%{transform:scale(1)}40%{transform:scale(1)}50%{transform:scale(.975)}to{transform:scale(1)}}:root{--skeleton-color:#ccc;--skeleton-icon-color:rgba(0,0,0,0.25)}.dark{--skeleton-color:#515151;--skeleton-icon-color:rgba(255,255,255,0.25)}:root{--f7-color-picker-popover-width:350px;--f7-color-picker-slider-size:6px;--f7-color-picker-slider-knob-size:16px;--f7-color-picker-bar-size:50px;--f7-color-picker-bar-min-height:260px;--f7-color-picker-value-width:64px;--f7-color-picker-value-height:32px;--f7-color-picker-value-font-size:16px;--f7-color-picker-value-border-radius:4px;--f7-color-picker-hex-value-width:84px;--f7-color-picker-label-font-size:14px;--f7-color-picker-label-width:10px;--f7-color-picker-label-height:14px;--f7-color-picker-sb-spectrum-height:260px;--f7-color-picker-sb-spectrum-handle-size:16px;--f7-color-picker-wheel-width:330px;--f7-color-picker-palette-value-width:36px;--f7-color-picker-palette-value-height:36px;--f7-color-picker-initial-current-color-height:40px;--f7-color-picker-initial-current-color-border-radius:4px;--f7-color-picker-sheet-bg-color:#fff;--f7-color-picker-popup-bg-color:#fff;--f7-color-picker-value-bg-color:rgba(0,0,0,0.05);--f7-color-picker-group-bg-color:rgba(0,0,0,0.05);--f7-color-picker-group-value-bg-color:#fff}:root .dark,:root.dark{--f7-color-picker-sheet-bg-color:#121212;--f7-color-picker-popup-bg-color:#121212;--f7-color-picker-value-bg-color:rgba(255,255,255,0.1);--f7-color-picker-group-bg-color:#000;--f7-color-picker-group-value-bg-color:rgba(255,255,255,0.12)}.color-picker{display:flex;flex-direction:column;overflow:hidden;width:100%}.color-picker-popover .color-picker,.color-picker-popup .color-picker,.color-picker.color-picker-inline{position:relative}.color-picker-sheet-modal{background:var(--f7-color-picker-sheet-bg-color)}.color-picker-sheet-modal:before{z-index:600}.color-picker-sheet-modal .sheet-modal-inner{margin-bottom:var(--f7-safe-area-bottom)}.color-picker-popup .page{background:var(--f7-color-picker-popup-bg-color)}.color-picker-popup .page-content{padding-bottom:var(--f7-safe-area-bottom)}.color-picker-page .color-picker,.color-picker-popover .color-picker,.color-picker-popup .color-picker{height:100%}.color-picker-page .color-picker .toolbar,.color-picker-popover .color-picker .toolbar,.color-picker-popup .color-picker .toolbar{position:absolute}.color-picker-popover{max-height:80vh;max-width:90vw;width:var(--f7-color-picker-popover-width)}.md .color-picker-popover .popover-inner{padding:8px}.color-picker-popover .color-picker{max-height:80vh}.color-picker-popover .toolbar-top{border-top-left-radius:var(--f7-popover-border-radius);border-top-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette{flex-shrink:0;overflow:hidden}.color-picker-popover .color-picker-module-palette:first-child{border-top-left-radius:var(--f7-popover-border-radius);border-top-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette:last-child{border-bottom-left-radius:var(--f7-popover-border-radius);border-bottom-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette:first-child:last-child{border-radius:var(--f7-popover-border-radius)}.color-picker-popover .toolbar~.page-content .color-picker-module-palette:first-child{border-top-left-radius:0;border-top-right-radius:0}.color-picker-page .page-content,.color-picker-popover .page-content,.color-picker-popup .page-content,.color-picker-sheet-modal .page-content{align-items:stretch;display:flex;flex-direction:column;justify-content:flex-start;overflow-x:hidden}.color-picker-module{margin-top:5px}.color-picker-module:last-child{margin-bottom:5px}.color-picker-module-hs-spectrum,.color-picker-module-sb-spectrum{margin-left:10px;margin-right:10px}.color-picker-module-hs-spectrum:first-child,.color-picker-module-sb-spectrum:first-child{margin-top:10px}.color-picker-module-hs-spectrum .color-picker-hs-spectrum,.color-picker-module-hs-spectrum .color-picker-sb-spectrum,.color-picker-module-sb-spectrum .color-picker-hs-spectrum,.color-picker-module-sb-spectrum .color-picker-sb-spectrum{height:var(--f7-color-picker-sb-spectrum-height)}.ios .color-picker-module-hs-spectrum .color-picker-hs-spectrum,.ios .color-picker-module-hs-spectrum .color-picker-sb-spectrum,.ios .color-picker-module-sb-spectrum .color-picker-hs-spectrum,.ios .color-picker-module-sb-spectrum .color-picker-sb-spectrum{border-radius:4px}.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum,.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum,.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum,.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum{border-radius:12px}.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum:after,.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum:after,.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum:after,.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum:after{border-radius:inherit}.color-picker-sb-spectrum{background-color:#000;background-image:linear-gradient(180deg,rgba(0,0,0,0) 0,#000),linear-gradient(270deg,rgba(255,255,255,0) 0,#fff);position:relative}.color-picker-hs-spectrum{background-image:linear-gradient(90deg,hsl(0,100%,50%),hsl(60,100%,50%),hsl(120,100%,50%),hsl(180,100%,50%),hsl(240,100%,50%),hsl(300,100%,50%),hsl(0,100%,50%));position:relative}.color-picker-hs-spectrum:after{background-image:linear-gradient(180deg,rgba(255,255,255,0),#ffffff);content:"";height:100%;left:0;position:absolute;top:0;width:100%}.color-picker-hs-spectrum-handle,.color-picker-sb-spectrum-handle{height:4px;left:-2px;position:absolute;top:-2px;width:4px;z-index:1}.color-picker-hs-spectrum-handle:after,.color-picker-sb-spectrum-handle:after{background-color:inherit;border:1px solid #fff;border-radius:50%;box-shadow:0 0 2px rgba(0,0,0,.5);box-sizing:border-box;content:"";height:var(--f7-color-picker-sb-spectrum-handle-size);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);transform-origin:center;transition:.15s;transition-property:transform;width:var(--f7-color-picker-sb-spectrum-handle-size)}.color-picker-hs-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,.color-picker-hs-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after,.color-picker-sb-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,.color-picker-sb-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after{transform:scale(1.5) translate(-33.333%,-33.333%)}.color-picker-module-wheel{margin-left:10px;margin-right:10px}.color-picker-wheel{font-size:0;height:auto;margin-left:auto;margin-right:auto;max-width:100%;position:relative;width:var(--f7-color-picker-wheel-width)}.color-picker-wheel svg{height:auto;width:100%}.color-picker-wheel .color-picker-wheel-handle{background:red;border:2px solid #fff;border-radius:50%;box-shadow:0 0 5px rgba(0,0,0,.5);box-sizing:border-box;height:16.66666667%;left:0;position:absolute;top:0;width:16.66666667%}.color-picker-wheel .color-picker-sb-spectrum{height:45%;left:50%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0);width:45%}.color-picker-slider-wrap{align-items:center;display:flex;margin-bottom:2px}.color-picker-slider-wrap+.color-picker-slider-wrap{margin-top:5px}.color-picker-hex-wrap{align-items:center;display:flex;justify-content:space-between}.color-picker-hex-label,.color-picker-slider-label{flex-shrink:0;font-size:var(--f7-color-picker-label-font-size);margin-left:12px;width:var(--f7-color-picker-label-size)}.color-picker-hex-label{width:auto}.color-picker-bar-value,.color-picker-hex-value,.color-picker-slider-value{align-items:center;background:var(--f7-color-picker-value-bg-color);border-radius:var(--f7-color-picker-value-border-radius);display:flex;flex-shrink:0;font-size:var(--f7-color-picker-value-font-size);height:var(--f7-color-picker-value-height);justify-content:center;margin-right:10px;text-align:center;width:var(--f7-color-picker-value-width)}.color-picker-bar-value input,.color-picker-hex-value input,.color-picker-slider-value input{-webkit-appearance:none;appearance:none;background:transparent;border:none;border-radius:4px;color:inherit;display:block;font-family:inherit;font-size:inherit;height:100%;outline:0;text-align:center;width:100%}.color-picker-bar-value input::-webkit-inner-spin-button,.color-picker-bar-value input::-webkit-outer-spin-button,.color-picker-hex-value input::-webkit-inner-spin-button,.color-picker-hex-value input::-webkit-outer-spin-button,.color-picker-slider-value input::-webkit-inner-spin-button,.color-picker-slider-value input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;display:none;margin:0}.color-picker-hex-value{width:var(--f7-color-picker-hex-value-width)}.color-picker-hex-value:first-child{margin-right:auto}.color-picker-slider{--f7-range-bar-active-bg-color:transparent;--f7-range-bar-size:var(--f7-color-picker-slider-size);--f7-range-bar-border-radius:var(--f7-color-picker-slider-size);--f7-range-knob-size:var(--f7-color-picker-slider-knob-size);--f7-range-knob-box-shadow:0 1px 2px rgba(0,0,0,0.3)}.color-picker-slider .range-knob{transition-duration:.2s;transition-property:transform}.color-picker-slider .range-knob:after{height:30px;margin-left:-16px;margin-top:-16px;width:30px}.color-picker-slider .range-knob-active-state .range-knob{transform:scale(1.5)}.md .color-picker-slider.range-slider-min:not(.range-slider-dual) .range-knob{background:var(--f7-range-knob-color)!important;border:none}.color-picker-module-rgb-bars{align-items:stretch;box-sizing:border-box;display:flex;height:100%;justify-content:space-around;justify-content:space-evenly;min-height:var(--f7-color-picker-bar-min-height);padding-bottom:10px;padding-top:10px}.color-picker-bar-wrap{align-items:center;display:flex;flex-direction:column-reverse}.color-picker-bar{--f7-range-bar-active-bg-color:transparent;--f7-range-bar-size:var(--f7-color-picker-bar-size);--f7-range-bar-border-radius:2px;--f7-range-knob-size:6px;--f7-range-knob-box-shadow:0 0px 3px rgba(0,0,0,0.3);--f7-range-knob-color:#fff}.color-picker-bar .range-knob{border-radius:3px;transition-duration:0ms;transition-property:transform}.color-picker-bar .range-knob-wrap{height:6px;margin-left:calc((var(--f7-color-picker-bar-size) - 4px)*-.5);width:calc(var(--f7-color-picker-bar-size) - 4px)}.color-picker-bar .range-knob-active-state .range-knob{transform:scale(1)}.md .color-picker-bar.range-slider-min:not(.range-slider-dual) .range-knob{background:var(--f7-range-knob-color)!important;border:none}.color-picker-bar-label{flex-shrink:0;font-size:var(--f7-color-picker-label-size);height:var(--f7-color-picker-label-height);line-height:1;margin-top:12px}.color-picker-bar-value{margin-bottom:10px;margin-left:0}.color-picker-slider-alpha{--f7-range-knob-color:#fff}.color-picker-slider-alpha .range-bar{background-image:linear-gradient(270deg,rgba(0,0,0,0),#000),linear-gradient(90deg,rgba(255,255,255,.2) 50%,rgba(0,0,0,.2) 0),linear-gradient(270deg,rgba(255,255,255,.2) 50%,rgba(0,0,0,.2) 0);background-position:0 0,0 3px,0 0;background-repeat:repeat-y,repeat-x,repeat-x;background-size:100% 100%,6px 3px,6px 3px}.color-picker-slider-hue .range-bar{background-image:linear-gradient(270deg,hsl(0,100%,50%),hsl(60,100%,50%),hsl(120,100%,50%),hsl(180,100%,50%),hsl(240,100%,50%),hsl(300,100%,50%),hsl(0,100%,50%))}.color-picker-slider-brightness .range-bar{background-image:linear-gradient(270deg,#000,#fff)}.color-picker-module-palette{margin-top:16px}.color-picker-module-palette:first-child{margin-top:0}.color-picker-module-palette:last-child{margin-bottom:0}.color-picker-module-palette:first-child:last-child{margin:0}.color-picker-palette{display:flex;flex-wrap:wrap}.color-picker-palette-row{display:flex;flex-wrap:nowrap;width:100%}.color-picker-palette-row .color-picker-palette-value{width:100%}.color-picker-palette-value{cursor:pointer;height:var(--f7-color-picker-palette-value-height);width:var(--f7-color-picker-palette-value-width)}.color-picker-module-current-color,.color-picker-module-initial-current-colors{border-radius:var(--f7-color-picker-initial-current-color-border-radius);flex-shrink:0;margin-left:10px;margin-right:10px;overflow:hidden}.color-picker-current-color,.color-picker-initial-color{height:var(--f7-color-picker-initial-current-color-height)}.color-picker-initial-current-colors{display:flex}.color-picker-initial-current-colors .color-picker-current-color,.color-picker-initial-current-colors .color-picker-initial-color{width:50%}.color-picker-module-alpha-slider,.color-picker-module-brightness-slider,.color-picker-module-hex,.color-picker-module-hsb-sliders,.color-picker-module-hue-slider,.color-picker-module-rgb-sliders{margin-left:10px;margin-right:10px}.color-picker-grouped-modules .color-picker-module-alpha-slider,.color-picker-grouped-modules .color-picker-module-brightness-slider,.color-picker-grouped-modules .color-picker-module-hex,.color-picker-grouped-modules .color-picker-module-hsb-sliders,.color-picker-grouped-modules .color-picker-module-hue-slider,.color-picker-grouped-modules .color-picker-module-rgb-sliders{background:var(--f7-color-picker-group-bg-color);border-radius:8px;margin-left:8px;margin-right:8px;margin-top:16px;padding:8px}.color-picker-grouped-modules .color-picker-module-alpha-slider:last-child,.color-picker-grouped-modules .color-picker-module-brightness-slider:last-child,.color-picker-grouped-modules .color-picker-module-hex:last-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders:last-child,.color-picker-grouped-modules .color-picker-module-hue-slider:last-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders:last-child{margin-bottom:16px}.color-picker-grouped-modules .color-picker-hex-value,.color-picker-grouped-modules .color-picker-slider-value{background:var(--f7-color-picker-group-value-bg-color)}.color-picker-grouped-modules .color-picker-hex-label,.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:first-child,.color-picker-grouped-modules .color-picker-slider-label{margin-right:5px}.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:last-child{margin-left:5px}:root{--f7-treeview-item-height:34px;--f7-treeview-item-padding-left:16px;--f7-treeview-item-padding-right:16px;--f7-treeview-toggle-size:24px;--f7-treeview-children-offset:29px;--f7-treeview-label-font-weight:400;--f7-treeview-label-text-color:inherit;--f7-treeview-icon-size:24px;--f7-treeview-toggle-color:rgba(0,0,0,0.5);--f7-treeview-toggle-hover-bg-color:rgba(0,0,0,0.1);--f7-treeview-toggle-pressed-bg-color:rgba(0,0,0,0.15);--f7-treeview-icon-color:rgba(0,0,0,0.5);--f7-treeview-selectable-hover-bg-color:rgba(0,0,0,0.1);--f7-treeview-link-hover-bg-color:rgba(0,0,0,0.1);--f7-treeview-link-pressed-bg-color:rgba(0,0,0,0.15)}:root .dark,:root.dark{--f7-treeview-toggle-color:rgba(255,255,255,0.5);--f7-treeview-toggle-hover-bg-color:rgba(255,255,255,0.03);--f7-treeview-toggle-pressed-bg-color:rgba(255,255,255,0.1);--f7-treeview-icon-color:rgba(255,255,255,0.75);--f7-treeview-selectable-hover-bg-color:rgba(255,255,255,0.03);--f7-treeview-link-hover-bg-color:rgba(255,255,255,0.03);--f7-treeview-link-pressed-bg-color:rgba(255,255,255,0.11)}.ios{--f7-treeview-label-font-size:17px}.md{--f7-treeview-label-font-size:16px}.treeview-item-root{min-height:var(--f7-treeview-item-height);padding-left:var(--f7-treeview-item-padding-right);padding-right:var(--f7-treeview-item-padding-left)}.treeview-item-content,.treeview-item-root{align-items:center;display:flex;justify-content:flex-start}.treeview-item-content>.f7-icons,.treeview-item-content>.material-icons,.treeview-item-content>i{color:var(--f7-treeview-icon-color);font-size:var(--f7-treeview-icon-size)}.treeview-item-content:first-child{margin-right:calc(var(--f7-treeview-toggle-size) + 5px)}.treeview-item-content>*+*{margin-right:5px}.treeview-item-label{color:var(--f7-treeview-label-text-color);font-size:var(--f7-treeview-label-font-size);font-weight:var(--f7-treeview-label-font-weight)}.treeview-toggle{background-color:rgba(0,0,0,0);border-radius:4px;cursor:pointer;height:var(--f7-treeview-toggle-size);margin-left:5px;position:relative;transition-duration:.2s;width:var(--f7-treeview-toggle-size)}.treeview-toggle.active-state{background-color:var(--f7-treeview-toggle-pressed-bg-color)}.treeview-toggle:after{border-bottom:5px solid transparent;border-right:6px solid var(--f7-treeview-toggle-color);border-top:5px solid transparent;content:"";height:0;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);transition-duration:.2s;width:0}.treeview-toggle-hidden{opacity:0;pointer-events:none;visibility:hidden}.treeview-preloader{--f7-preloader-size:var(--f7-treeview-toggle-size);margin-left:calc(var(--f7-treeview-toggle-size)*-1)}.treeview-item-children{display:none}.treeview-item-opened>.treeview-item-children{display:block}.treeview-item-opened>.treeview-item-root .treeview-toggle:after{transform:translate(-50%,-50%) rotate(-90deg)}a.treeview-item-root{color:var(--f7-treeview-label-text-color)}.treeview-item-selectable.treeview-item-root,.treeview-item-selectable>.treeview-item-root{cursor:pointer;transition-duration:.15s}a.treeview-item-root{transition-duration:.15s}a.treeview-item-root.active-state{background:var(--f7-treeview-link-pressed-bg-color)}.treeview-item-toggle.treeview-item-root,.treeview-item-toggle>.treeview-item-root{cursor:pointer}.treeview-item-selected.treeview-item-root,.treeview-item-selected>.treeview-item-root{background:var(--f7-treeview-selectable-selected-bg-color,rgba(var(--f7-theme-color-rgb),.2))}.treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*1)}.treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*2)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*3)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*4)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*5)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*6)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*7)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*8)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*9)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*10)}:root{--f7-text-editor-font-size:inherit;--f7-text-editor-font-weight:inherit;--f7-text-editor-border-width:1px;--f7-text-editor-height:250px;--f7-text-editor-margin:16px;--f7-text-editor-padding:8px;--f7-text-editor-button-bg-color:transparent;--f7-text-editor-button-size:28px;--f7-text-editor-button-icon-size:20px;--f7-text-editor-button-margin:2px;--f7-text-editor-text-color:#000;--f7-text-editor-bg-color:#fff;--f7-text-editor-button-divider-color:rgba(0,0,0,0.15)}:root .dark,:root.dark{--f7-text-editor-bg-color:#121212;--f7-text-editor-text-color:#fff;--f7-text-editor-button-divider-color:rgba(255,255,255,0.15)}.ios{--f7-text-editor-toolbar-padding:6px;--f7-text-editor-button-border-radius:2px;--f7-text-editor-placeholder-color:rgba(0,0,0,0.35);--f7-text-editor-toolbar-border-color:rgba(0,0,0,0.25);--f7-text-editor-toolbar-bg-color:#fff;--f7-text-editor-border-color:rgba(0,0,0,0.1);--f7-text-editor-button-text-color:#333}.ios .dark,.ios.dark{--f7-text-editor-placeholder-color:rgba(255,255,255,0.35);--f7-text-editor-toolbar-bg-color:#121212;--f7-text-editor-toolbar-border-color:rgba(255,255,255,0.1);--f7-text-editor-toolbar-bg-color:#202020;--f7-text-editor-border-color:rgba(255,255,255,0.1);--f7-text-editor-button-text-color:#fff}.md{--f7-text-editor-button-border-radius:8px;--f7-text-editor-toolbar-padding:8px}.md,.md .dark,.md [class*=color-]{--f7-text-editor-placeholder-color:var(--f7-md-on-surface-variant);--f7-text-editor-toolbar-bg-color:var(--f7-md-surface-1);--f7-text-editor-border-color:var(--f7-md-outline);--f7-text-editor-button-text-color:var(--f7-md-on-surface)}.text-editor{align-items:stretch;background-color:var(--f7-text-editor-bg-color);border:var(--f7-text-editor-border-width) solid var(--f7-text-editor-border-color);box-sizing:border-box;display:block;display:flex;flex-direction:column;height:var(--f7-text-editor-height);margin:var(--f7-text-editor-margin);position:relative}.text-editor.text-editor-resizable{height:auto}.text-editor-toolbar{background:var(--f7-text-editor-toolbar-bg-color);box-sizing:border-box;display:flex;flex-shrink:0;flex-wrap:wrap;left:0;padding:var(--f7-text-editor-toolbar-padding);position:relative;position:sticky;top:0;z-index:100}.text-editor-toolbar:after{background-color:var(--f7-text-editor-toolbar-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}button.text-editor-button{align-items:center;-webkit-appearance:none;appearance:none;background:transparent;background-color:var(--f7-text-editor-button-bg-color);border:none;border-radius:var(--f7-text-editor-button-border-radius);box-shadow:none;box-sizing:border-box;color:var(--f7-text-editor-button-text-color);cursor:pointer;display:flex;flex-shrink:0;font-family:inherit;height:var(--f7-text-editor-button-size);justify-content:center;margin:0;margin:var(--f7-text-editor-button-margin);outline:0;overflow:hidden;padding:0;position:relative;width:auto;width:var(--f7-text-editor-button-size);z-index:1}button.text-editor-button .f7-icons,button.text-editor-button .material-icons,button.text-editor-button i{font-size:var(--f7-text-editor-button-icon-size);font-style:normal}button.text-editor-button .f7-icons sub,button.text-editor-button .f7-icons sup,button.text-editor-button .material-icons sub,button.text-editor-button .material-icons sup,button.text-editor-button i sub,button.text-editor-button i sup{font-size:60%}.text-editor-button-divider{background:var(--f7-text-editor-button-divider-color);flex-shrink:0;margin:0 2px;width:1px}.text-editor-content{-webkit-user-modify:read-write;-webkit-appearance:none;appearance:none;border:none;box-sizing:border-box;color:var(--f7-text-editor-text-color);flex-shrink:10;font-size:var(--f7-text-editor-font-size);font-weight:var(--f7-text-editor-font-weight);height:100%;outline:0;overflow:auto;padding:var(--f7-text-editor-padding);-webkit-user-select:text;user-select:text}.text-editor-content .text-editor-placeholder{color:var(--f7-text-editor-placeholder-color);pointer-events:none}.text-editor-content img{max-width:100%}.text-editor-content a{pointer-events:none}.text-editor-popover{max-width:80vw;width:auto;z-index:12500}.text-editor-popover .popover-inner{display:flex;flex-wrap:wrap;padding:3px}.text-editor-keyboard-toolbar{--f7-safe-area-bottom:0px;position:absolute;z-index:6000}.text-editor-keyboard-toolbar .toolbar-inner{-webkit-overflow-scrolling:touch;justify-content:flex-start!important;overflow:auto;scrollbar-color:transparent;scrollbar-width:none}.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-track{background:transparent;box-shadow:none}.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.text-editor-keyboard-toolbar .toolbar-inner .text-editor-button-divider{height:100%}.item-input .text-editor{background-color:var(--f7-input-bg-color,transparent);border:none;margin:0}.item-input .text-editor-content{color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);padding:var(--f7-textarea-padding-vertical) var(--f7-input-padding-right) var(--f7-textarea-padding-vertical) var(--f7-input-padding-left)}.item-input .text-editor-toolbar{box-shadow:none}.item-input .text-editor-toolbar:after{display:none!important}.item-input-outline .text-editor-content{border-radius:var(--f7-input-outline-border-radius)}.ios button.text-editor-button{transition:opacity .3s}.ios button.text-editor-button.active-state{opacity:.3;transition-duration:0ms}.md button.text-editor-button{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25)}.md .text-editor-keyboard-toolbar .toolbar-inner{padding-left:8px;padding-right:8px}.pie-chart{position:relative}.pie-chart svg{display:block;font-size:0;height:auto;margin:0 auto;width:100%}.pie-chart path{transition-duration:.15s}.pie-chart-hidden{opacity:.4}.pie-chart-tooltip{font-size:12px;line-height:1.4;max-width:none;pointer-events:none;text-align:left;white-space:nowrap;width:auto}.pie-chart-tooltip-label{align-items:center;display:flex}.pie-chart-tooltip-color{border-radius:50%;display:inline-block;height:10px;margin-right:4px;width:10px}:root{--f7-area-chart-current-line-stroke-width:2px;--f7-area-chart-current-line-stroke:rgba(0,0,0,0.15);--f7-area-chart-axis-text-color:inherit;--f7-area-chart-axis-height:1px;--f7-area-chart-axis-font-size:10px;--f7-area-chart-axis-font-weight:500;--f7-area-chart-tooltip-font-size:12px;--f7-area-chart-tooltip-total-font-size:16px;--f7-area-chart-tooltip-total-font-weight:bold;--f7-area-chart-tooltip-color-size:10px;--f7-area-chart-legend-font-size:14px;--f7-area-chart-legend-font-weight:500;--f7-area-chart-legend-text-color:inherit;--f7-area-chart-legend-padding:4px 8px;--f7-area-chart-legend-border-radius:4px;--f7-area-chart-legend-color-size:14px;--f7-area-chart-line-stroke-width:2px;--f7-area-chart-axis-bg-color:rgba(0,0,0,0.15);--f7-area-chart-legend-disabled-text-color:rgba(0,0,0,0.22)}:root .dark,:root.dark{--f7-area-chart-axis-bg-color:rgba(255,255,255,0.15);--f7-area-chart-legend-disabled-text-color:rgba(255,255,255,0.22)}.ios{--f7-area-chart-tooltip-total-label-text-color:rgba(255,255,255,0.75)}.md{--f7-area-chart-tooltip-total-label-text-color:inherit}.area-chart{position:relative}.area-chart svg{display:block;font-size:0;height:auto;margin:0 auto;width:100%}.area-chart path{fill:none;stroke-width:var(--f7-area-chart-line-stroke-width)}.area-chart-current-line{stroke:var(--f7-area-chart-current-line-stroke);stroke-width:var(--f7-area-chart-current-line-stroke-width)}.area-chart-axis{background:var(--f7-area-chart-axis-bg-color);color:var(--f7-area-chart-axis-text-color);display:flex;font-size:var(--f7-area-chart-axis-font-size);font-weight:var(--f7-area-chart-axis-font-weight);height:var(--f7-area-chart-axis-height);justify-content:space-between;line-height:1;margin-bottom:2em}.area-chart-axis>span{align-items:flex-start;display:flex;justify-content:center;padding-top:10px;white-space:nowrap;width:0}.area-chart-axis>span:first-child{justify-content:flex-start}.area-chart-axis>span:last-child{justify-content:flex-end}.area-chart-tooltip{font-size:var(--f7-area-chart-tooltip-font-size);line-height:1.4;pointer-events:none;text-align:left}.area-chart-tooltip-label{color:var(--f7-area-chart-tooltip-total-label-text-color)}.area-chart-tooltip-total{font-size:var(--f7-area-chart-tooltip-total-font-size);font-weight:var(--f7-area-chart-tooltip-total-font-weight)}.area-chart-tooltip-list{list-style:none;margin:0;padding:0}.area-chart-tooltip-list li{white-space:nowrap}.area-chart-tooltip-list span{border-radius:50%;display:inline-block;height:var(--f7-area-chart-tooltip-color-size);margin-right:4px;width:var(--f7-area-chart-tooltip-color-size)}.area-chart-axis~.area-chart-legend{margin-top:2em}.area-chart-legend{align-items:center;display:flex;flex-wrap:wrap;font-size:var(--f7-area-chart-legend-font-size);justify-content:center;margin-top:1em;width:100%}.area-chart-legend-button{-webkit-appearance:none!important;appearance:none!important;background-color:initial;border:none;border-radius:0;box-shadow:none!important;cursor:pointer;font-family:inherit;font-size:inherit;outline:0!important}.area-chart-legend-item{align-items:center;border-radius:var(--f7-area-chart-legend-border-radius);color:var(--f7-area-chart-legend-text-color);display:flex;font-weight:var(--f7-area-chart-legend-font-weight);overflow:hidden;padding:var(--f7-area-chart-legend-padding);position:relative;transition-duration:.2s;width:auto}.area-chart-legend-item span{border-radius:50%;height:var(--f7-area-chart-legend-color-size);margin-right:4px;transition-duration:.2s;width:var(--f7-area-chart-legend-color-size)}.area-chart-legend-item-hidden{color:var(--f7-area-chart-legend-disabled-text-color)}.area-chart-legend-item-hidden span{background-color:var(--f7-area-chart-legend-disabled-text-color)!important}:root{--f7-breadcrumbs-spacing:12px;--f7-breadcrumbs-padding:2px 0;--f7-breadcrumbs-icon-size:24px;--f7-breadcrumbs-separator-color:rgba(0,0,0,0.35)}:root .dark,:root.dark{--f7-breadcrumbs-separator-color:rgba(255,255,255,0.35)}.ios{--f7-breadcrumbs-item-bg-color:transparent;--f7-breadcrumbs-collapsed-border-radius:4px;--f7-breadcrumbs-collapsed-padding:0px 6px;--f7-breadcrumbs-separator-icon:"chevron_right_ios";--f7-breadcrumbs-font-size:17px;--f7-breadcrumbs-item-border-radius:0px;--f7-breadcrumbs-item-padding:0px;--f7-breadcrumbs-item-font-weight:normal;--f7-breadcrumbs-item-active-font-weight:600;--f7-breadcrumbs-item-color:rgba(0,0,0,0.55);--f7-breadcrumbs-item-active-color:#000;--f7-breadcrumbs-collapsed-bg-color:rgba(0,0,0,0.15);--f7-breadcrumbs-collapsed-color:rgba(0,0,0,0.75)}.ios .dark,.ios.dark{--f7-breadcrumbs-item-color:rgba(255,255,255,0.75);--f7-breadcrumbs-item-active-color:#fff;--f7-breadcrumbs-collapsed-bg-color:rgba(255,255,255,0.15);--f7-breadcrumbs-collapsed-color:rgba(255,255,255,0.75)}.md{--f7-breadcrumbs-collapsed-border-radius:8px;--f7-breadcrumbs-collapsed-padding:12px 8px;--f7-breadcrumbs-separator-icon:"chevron_right_md";--f7-breadcrumbs-font-size:14px;--f7-breadcrumbs-item-border-radius:8px;--f7-breadcrumbs-item-padding:4px 8px;--f7-breadcrumbs-item-font-weight:500;--f7-breadcrumbs-item-active-font-weight:500}.md,.md .dark,.md [class*=color-]{--f7-breadcrumbs-item-color:var(--f7-theme-color);--f7-breadcrumbs-item-bg-color:var(--f7-md-secondary-container);--f7-breadcrumbs-item-active-color:var(--f7-md-on-secondary-container);--f7-breadcrumbs-collapsed-color:var(--f7-theme-color);--f7-breadcrumbs-collapsed-bg-color:var(--f7-md-secondary-container)}.breadcrumbs{align-items:center;display:flex;font-size:var(--f7-breadcrumbs-font-size);justify-content:flex-start;overflow:auto;padding:var(--f7-breadcrumbs-padding);scrollbar-color:transparent;scrollbar-width:none;white-space:nowrap}.breadcrumbs::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.breadcrumbs::-webkit-scrollbar-track{background:transparent;box-shadow:none}.breadcrumbs::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.breadcrumbs-collapsed,.breadcrumbs-item,.breadcrumbs-separator{--f7-touch-ripple-color:transparent!important;flex-shrink:0}.breadcrumbs-collapsed+.breadcrumbs-collapsed,.breadcrumbs-collapsed+.breadcrumbs-item,.breadcrumbs-collapsed+.breadcrumbs-separator,.breadcrumbs-item+.breadcrumbs-collapsed,.breadcrumbs-item+.breadcrumbs-item,.breadcrumbs-item+.breadcrumbs-separator,.breadcrumbs-separator+.breadcrumbs-collapsed,.breadcrumbs-separator+.breadcrumbs-item,.breadcrumbs-separator+.breadcrumbs-separator{margin-left:var(--f7-breadcrumbs-spacing)}.breadcrumbs-item{align-items:center;background-color:var(--f7-breadcrumbs-item-bg-color);border-radius:var(--f7-breadcrumbs-item-border-radius);color:var(--f7-breadcrumbs-item-color);display:flex;font-weight:var(--f7-breadcrumbs-item-font-weight);padding:var(--f7-breadcrumbs-item-padding)}.breadcrumbs-item .icon{font-size:var(--f7-breadcrumbs-icon-size);height:var(--f7-breadcrumbs-icon-size);width:var(--f7-breadcrumbs-icon-size)}.breadcrumbs-item a{--f7-touch-ripple-color:transparent!important;color:inherit}.breadcrumbs-item-active{color:var(--f7-breadcrumbs-item-active-color,var(--f7-breadcrumbs-item-color));font-weight:var(--f7-breadcrumbs-item-active-font-weight)}.breadcrumbs-separator{align-items:center;color:var(--f7-breadcrumbs-separator-color);display:flex;height:24px;overflow:hidden}.breadcrumbs-separator:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";content:var(--f7-breadcrumbs-separator-icon);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%;width:12px}.ios .breadcrumbs-separator:after{font-size:12px;height:11px}.md .breadcrumbs-separator:after{font-size:18px;height:18px}.breadcrumbs-collapsed{align-items:center;background:var(--f7-breadcrumbs-collapsed-bg-color);border-radius:var(--f7-breadcrumbs-collapsed-border-radius);cursor:pointer;display:flex;min-height:1em;padding:var(--f7-breadcrumbs-collapsed-padding)}.breadcrumbs-collapsed span,.breadcrumbs-collapsed:after,.breadcrumbs-collapsed:before{background:var(--f7-breadcrumbs-collapsed-color);border-radius:50%;content:"";height:4px;width:4px}.breadcrumbs-collapsed span{margin:0 3px}:root{--f7-typography-padding:16px;--f7-typography-margin:16px}.display-flex{display:flex!important}.display-block{display:block!important}.display-inline-flex{display:inline-flex!important}.display-inline-block{display:inline-block!important}.display-inline{display:inline!important}.display-none{display:none!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-shrink-2{flex-shrink:2!important}.flex-shrink-3{flex-shrink:3!important}.flex-shrink-4{flex-shrink:4!important}.flex-shrink-5{flex-shrink:5!important}.flex-shrink-6{flex-shrink:6!important}.flex-shrink-7{flex-shrink:7!important}.flex-shrink-8{flex-shrink:8!important}.flex-shrink-9{flex-shrink:9!important}.flex-shrink-10{flex-shrink:10!important}.flex-direction-row{flex-direction:row!important}.flex-direction-row-reverse{flex-direction:row-reverse!important}.flex-direction-column{flex-direction:column!important}.flex-direction-column-reverse{flex-direction:column-reverse!important}.justify-content-flex-start{justify-content:flex-start!important}.justify-content-center{justify-content:center!important}.justify-content-flex-end{justify-content:flex-end!important}.justify-content-space-between{justify-content:space-between!important}.justify-content-space-around{justify-content:space-around!important}.justify-content-space-evenly{justify-content:space-evenly!important}.justify-content-stretch{justify-content:stretch!important}.justify-content-start{justify-content:start!important}.justify-content-end{justify-content:end!important}.justify-content-left{justify-content:left!important}.justify-content-right{justify-content:right!important}.align-content-flex-start{align-content:flex-start!important}.align-content-flex-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-space-between{align-content:space-between!important}.align-content-space-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-items-baseline{align-items:baseline!important}.align-items-flex-start{align-items:flex-start!important}.align-items-flex-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-stretch{align-items:stretch!important}.align-self-flex-start{align-self:flex-start!important}.align-self-flex-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-stretch{align-self:stretch!important}.text-align-left{text-align:left!important}.text-align-center{text-align:center!important}.text-align-right{text-align:right!important}.text-align-justify{text-align:justify!important}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}.vertical-align-bottom{vertical-align:bottom!important}.vertical-align-middle{vertical-align:middle!important}.vertical-align-top{vertical-align:top!important}.no-padding{padding:0!important}.no-padding-left{padding-left:0!important}.no-padding-horizontal,.no-padding-right{padding-right:0!important}.no-padding-horizontal{padding-left:0!important}.no-padding-top{padding-top:0!important}.no-padding-bottom,.no-padding-vertical{padding-bottom:0!important}.no-padding-vertical{padding-top:0!important}.no-margin{margin:0!important}.no-margin-left{margin-left:0!important}.no-margin-horizontal,.no-margin-right{margin-right:0!important}.no-margin-horizontal{margin-left:0!important}.no-margin-top{margin-top:0!important}.no-margin-bottom,.no-margin-vertical{margin-bottom:0!important}.no-margin-vertical{margin-top:0!important}.width-auto{width:auto!important}.width-100{width:100%!important}.padding{padding:var(--f7-typography-padding)!important}.padding-half{padding:calc(var(--f7-typography-padding)/2)!important}.padding-top{padding-top:var(--f7-typography-padding)!important}.padding-top-half{padding-top:calc(var(--f7-typography-padding)/2)!important}.padding-bottom{padding-bottom:var(--f7-typography-padding)!important}.padding-bottom-half{padding-bottom:calc(var(--f7-typography-padding)/2)!important}.padding-left{padding-left:var(--f7-typography-padding)!important}.padding-left-half{padding-left:calc(var(--f7-typography-padding)/2)!important}.padding-right{padding-right:var(--f7-typography-padding)!important}.padding-right-half{padding-right:calc(var(--f7-typography-padding)/2)!important}.padding-vertical{padding-bottom:var(--f7-typography-padding)!important;padding-top:var(--f7-typography-padding)!important}.padding-vertical-half{padding-bottom:calc(var(--f7-typography-padding)/2)!important;padding-top:calc(var(--f7-typography-padding)/2)!important}.padding-horizontal{padding-left:var(--f7-typography-padding)!important;padding-right:var(--f7-typography-padding)!important}.padding-horizontal-half{padding-left:calc(var(--f7-typography-padding)/2)!important;padding-right:calc(var(--f7-typography-padding)/2)!important}.margin{margin:var(--f7-typography-margin)!important}.margin-half{margin:calc(var(--f7-typography-margin)/2)!important}.margin-top{margin-top:var(--f7-typography-margin)!important}.margin-top-half{margin-top:calc(var(--f7-typography-margin)/2)!important}.margin-bottom{margin-bottom:var(--f7-typography-margin)!important}.margin-bottom-half{margin-bottom:calc(var(--f7-typography-margin)/2)!important}.margin-left{margin-left:var(--f7-typography-margin)!important}.margin-left-half{margin-left:calc(var(--f7-typography-margin)/2)!important}.margin-right{margin-right:var(--f7-typography-margin)!important}.margin-right-half{margin-right:calc(var(--f7-typography-margin)/2)!important}.margin-vertical{margin-bottom:var(--f7-typography-margin)!important;margin-top:var(--f7-typography-margin)!important}.margin-vertical-half{margin-bottom:calc(var(--f7-typography-margin)/2)!important;margin-top:calc(var(--f7-typography-margin)/2)!important}.margin-horizontal{margin-left:var(--f7-typography-margin)!important;margin-right:var(--f7-typography-margin)!important}.margin-horizontal-half{margin-left:calc(var(--f7-typography-margin)/2)!important;margin-right:calc(var(--f7-typography-margin)/2)!important}[class*=text-color-]{color:var(--f7-theme-color-text-color)!important}[class*=bg-color-]{background-color:var(--f7-theme-color-bg-color)!important}[class*=border-color-]{border-color:var(--f7-theme-color-border-color)!important} +/*# sourceMappingURL=../../documenteditor/mobile/css/framework7-rtl.css.map */ +/*# sourceMappingURL=framework7-rtl.css.map*/ \ No newline at end of file diff --git a/apps/documenteditor/mobile/css/framework7-rtl.css.map b/apps/documenteditor/mobile/css/framework7-rtl.css.map new file mode 100644 index 0000000000..b59a938c9f --- /dev/null +++ b/apps/documenteditor/mobile/css/framework7-rtl.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://documenteditor/../../documenteditor/mobile/css/framework7-rtl.css"],"names":[],"mappings":"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N,iBAAkB,CAClB,SAGF,CACA,qGAGE,sDACF,CACA,mIAGE,gEACF,CACA,gKAIE,mBACF,CACA,oBASE,uGAAiI,CADjI,SAAU,CALV,UAAW,CAEX,UAKF,CACA,yCAPE,QAAS,CAET,UAAW,CACX,SAAU,CANV,iBAAkB,CAClB,KAmBF,CAVA,qBAIE,yBAA8B,CAF9B,MAAO,CAGP,UAAW,CAIX,aACF,CACA,oBACE,8BACF,CACA,gBACE,gCACF,CAOA,0GACE,SACF,CACA,2CACE,8EACF,CACA,kDAUE,8EAA+E,CAD/E,uGAAiI,CALjI,QAAS,CAET,UAAW,CAEX,SAAU,CADV,SAAU,CANV,iBAAkB,CAClB,KAAM,CACN,UAAW,CAEX,UAMF,CACA,8CACE,kFACF,CACA,oDAUE,8EAA+E,CAN/E,yBAA8B,CAE9B,QAAS,CACT,UAAW,CALX,MAAO,CAMP,SAAU,CAPV,iBAAkB,CAElB,KAAM,CAEN,UAAW,CAIX,aAEF,CACA,gDACE,kFACF,CACA,sDAUE,+EAAgF,CANhF,yBAA8B,CAE9B,QAAS,CACT,UAAW,CALX,MAAO,CAMP,SAAU,CAPV,iBAAkB,CAElB,KAAM,CAEN,UAAW,CAIX,aAEF,CACA,+CACE,8EACF,CACA,sDAUE,+EAAgF,CADhF,uGAAiI,CALjI,QAAS,CAET,UAAW,CAEX,SAAU,CADV,SAAU,CANV,iBAAkB,CAClB,KAAM,CACN,UAAW,CAEX,UAMF,CACA,oCACE,GACE,gCACF,CACA,GACE,uBACF,CACF,CACA,wCACE,GACE,8BACF,CACA,GACE,uBACF,CACF,CACA,wCACE,GACE,uBACF,CACA,GACE,8BACF,CACF,CACA,oCACE,GACE,uBACF,CACA,GACE,gCACF,CACF,CACA,oCACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,qCACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,mBACE,gCACF,CACA,eAGE,SAAU,CAFV,mBAAoB,CACpB,gCAEF,CACA,kCAEE,SAAU,CADV,gCAEF,CACA,0CAEE,qGAA2G,CAD3G,SAEF,CACA,6CACE,yGACF,CACA,8CACE,qMACF,CACA,+CACE,iFACF,CACA,mCACE,GACE,gCACF,CACA,GACE,uBACF,CACF,CACA,mCACE,GACE,uBACF,CACA,GACE,gCACF,CACF,CACA,2CACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,uCACE,GACE,uBACF,CACA,GACE,gCACF,CACF,CACA,uCACE,GACE,gCACF,CACA,GACE,uBACF,CACF,CAIA,0GACE,YACF,CACA,oEAKE,uBAAwB,CACxB,6BAA8B,CAC9B,uFAAwF,CAJxF,SAAU,CACV,OAAQ,CAFR,iCAMF,CACA,kFAGE,wBAAyB,CACzB,8BAA+B,CAC/B,iCAAkC,CAHlC,8CAIF,CACA,8DACE,MAAO,CACP,OAAQ,CACR,UACF,CACA,iCAGE,mBAAoB,CADpB,cAAe,CADf,SAGF,CACA,+EAEE,YACF,CACA,mDACE,cACF,CACA,8KAIE,SAAU,CACV,cACF,CACA,6HAEE,cACF,CACA,YAcE,qBAAsB,CATtB,qCAAsC,CAEtC,wCAAyC,CACzC,4CAA6C,CAF7C,kDAAmD,CAGnD,4CAA6C,CAM7C,eAAgB,CAFhB,2NAAqD,CAZrD,iBAAkB,CAElB,sBAAuB,CACvB,kBAAmB,CAYnB,UAAW,CAdX,UAeF,CACA,uFAUE,kCAAmC,CARnC,UAAW,CAKX,cAAe,CAHf,QAAS,CAIT,mBAAoB,CACpB,kBAAmB,CANnB,iBAAkB,CAElB,OAAQ,CACR,aAAc,CAKd,WACF,CACA,uFAEE,mBACF,CACA,2CAGE,0CAA6C,CAD7C,iBAAkB,CADlB,kBAGF,CACA,yGAIE,gDAAmD,CACnD,mBAAsB,CAHtB,SAAU,CACV,mBAAqB,CAGrB,WACF,CACA,4CACE,2CAA8C,CAC9C,oBACF,CACA,iHAEE,gDAAmD,CACnD,WACF,CACA,+BACE,GAEE,iBAAkB,CADlB,kBAEF,CACA,IACE,iBACF,CACA,GAEE,eAAiB,CADjB,kBAEF,CACF,CACA,gCACE,GAEE,eAAiB,CADjB,kBAEF,CACA,IACE,iBACF,CACA,GAEE,iBAAkB,CADlB,kBAEF,CACF,CACA,qCACE,GAEE,SAAU,CADV,mBAEF,CACA,IAEE,SAAU,CADV,sBAEF,CACA,GAEE,SAAU,CADV,kBAEF,CACF,CACA,qCACE,GAEE,SAAU,CADV,kBAEF,CACA,IAEE,SAAU,CADV,sBAEF,CACA,IAEE,SAAU,CADV,mBAEF,CACA,GAEE,SAAU,CADV,mBAEF,CACF,CACA,6EAEE,eAAgB,CAChB,kBACF,CACA,yFAEE,mBACF,CACA,iDACE,sFACF,CACA,oDACE,sFACF,CACA,qDACE,sFACF,CACA,sDACE,sFACF,CACA,sCACE,GACE,0BACF,CACA,GACE,uBACF,CACF,CACA,sCACE,GACE,uBACF,CACA,GACE,0BACF,CACF,CACA,sCACE,GAEE,SAAU,CADV,uBAEF,CACA,GAEE,UAAY,CADZ,4BAEF,CACF,CACA,sCACE,GAEE,UAAY,CADZ,4BAEF,CACA,GAEE,SAAU,CADV,uBAEF,CACF,CACA,yEAEE,eAAgB,CAChB,kBACF,CACA,qFAEE,mBACF,CACA,+CACE,oFACF,CACA,kDACE,oFACF,CACA,mDACE,oFACF,CACA,oDACE,oFACF,CACA,oCACE,GACE,2BACF,CACA,GACE,uBACF,CACF,CACA,oCACE,GACE,uBACF,CACA,GACE,2BACF,CACF,CACA,oCACE,GAEE,SAAU,CADV,uBAEF,CACA,GAEE,UAAY,CADZ,4BAEF,CACF,CACA,oCACE,GAEE,UAAY,CADZ,4BAEF,CACA,GAEE,SAAU,CADV,uBAEF,CACF,CACA,uEAEE,kCAAmC,CACnC,kBACF,CACA,mFAEE,mBACF,CACA,8CACE,kFACF,CACA,iDACE,kFACF,CACA,kDACE,kFACF,CACA,mDACE,kFACF,CACA,mCACE,GACE,SAAU,CACV,4BACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,uBACF,CACF,CACA,mCACE,GACE,SAAU,CACV,uBACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,4BACF,CACF,CACA,mCACE,GAEE,SAAU,CADV,uBAEF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,2BACF,CACF,CACA,mCACE,GACE,SAAU,CACV,2BACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,uBACF,CACF,CACA,uEAEE,kCACF,CACA,mFAEE,mBACF,CACA,qGAGE,qEAAsE,CADtE,SAEF,CAKA,wNAEE,sEACF,CACA,+GAEE,qEACF,CACA,sBACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,uBACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,uEAEE,eAAgB,CAChB,kBACF,CACA,mFAEE,kCAAmC,CAC3B,0BAA2B,CACnC,eAAgB,CAChB,mBACF,CACA,8CAEE,kFAAmF,CADnF,2BAEF,CACA,iDAEE,kFAAmF,CADnF,2BAEF,CACA,kDAEE,kFAAmF,CADnF,2BAEF,CACA,mDAEE,kFAAmF,CADnF,2BAEF,CACA,mCACE,GACE,kBAAmB,CACnB,+CACF,CACA,GACE,eAAgB,CAChB,qCACF,CACF,CACA,mCACE,GACE,eAAkB,CAClB,qCACF,CACA,GACE,kBAAmB,CACnB,+CACF,CACF,CACA,mCACE,GACE,eAAkB,CAClB,qCACF,CACA,GACE,kBAAmB,CACnB,8CACF,CACF,CACA,mCACE,GACE,kBAAmB,CACnB,8CACF,CACA,GACE,eAAkB,CAClB,qCACF,CACF,CACA,6CACE,mBACF,CACA,kDACE,0FACF,CACA,qDACE,0FACF,CACA,8CACE,mBACF,CACA,sDACE,0FACF,CACA,uDACE,0FACF,CACA,uCACE,GACE,2BACF,CACA,GACE,uBACF,CACF,CACA,uCACE,GACE,uBACF,CACA,GACE,2BACF,CACF,CACA,uCACE,GACE,uBACF,CACA,GACE,yBACF,CACF,CACA,uCACE,GACE,yBACF,CACA,GACE,uBACF,CACF,CACA,yCACE,mBACF,CACA,8CACE,kFACF,CACA,iDACE,kFACF,CACA,0CACE,mBACF,CACA,kDACE,kFACF,CACA,mDACE,kFACF,CACA,mCACE,GACE,2BACF,CACA,GACE,uBACF,CACF,CACA,mCACE,GACE,uBACF,CACA,GACE,2BACF,CACF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,mBACF,CACA,qBAME,YAAa,CAGb,0CAA2C,CAN3C,MAAO,CADP,iBAAkB,CAElB,OAAQ,CACR,QAAS,CAKT,SACF,CACA,+CAXE,qBAAsB,CAOtB,eAAgB,CADhB,kBAsBF,CAjBA,0BAGE,6CAA8C,CAE9C,gDAAiD,CACjD,oDAAqD,CAFrD,0DAA2D,CAG3D,oDAAqD,CAIrD,2PAA6D,CAV7D,sBAAuB,CAcvB,gHAAyH,CACzH,yGAA0G,CAF1G,UAGF,CACA,oDACE,uBACF,CACA,qBAEE,+EACF,CACA,wKAKE,qHACF,CACA,0CAEE,+CACF,CACA,KACE,0EAAiF,CACjF,qEAAsE,CACtE,sGAAyG,CACzG,8DAA+D,CAC/D,uGAA0G,CAC1G,+DAAgE,CAChE,yGAA4G,CAC5G,iEACF,CACA,0BACE,oBACF,CACA,yBAGE,sBAAuB,CADvB,QAAS,CADT,UAGF,CACA,+CAEE,iBACF,CACA,eACE,eACF,CACA,mBACE,gBACF,CACA,oBACE,iBACF,CACA,gCACE,yCACF,CACA,mBACE,6BACF,CACA,8BACE,0BACF,CACA,qCACE,iBACF,CACA,qCAEE,gBAAiB,CADjB,eAEF,CACA,8wBAeE,SACF,CACA,mHAEE,mBACF,CACA,6IAEE,SAAU,CACV,uBACF,CACA,iLAEE,mBAAqB,CACrB,uBACF,CACA,oTAIE,SAAU,CACV,+BACF,CACA,yIAEE,2BACF,CACA,kBACE,mBACF,CACA,6BACE,2BACF,CACA,iDAEE,oFAAuF,CADvF,uBAEF,CACA,2EAEE,SAAU,CACV,gCACF,CACA,mEAEE,sDACF,CACA,mCACE,qDAAsD,CACtD,4BACF,CACA,+EAEE,uBACF,CACA,+LAIE,iFACF,CACA,8cAUE,cAAe,CADf,mBAAqB,CADrB,sDAGF,CACA,uHAGE,cAAe,CACf,SAAU,CAFV,sDAGF,CACA,0bAQE,gFACF,CACA,2pCAmBE,cAAe,CAEf,mBAAqB,CADrB,iCAA0C,CAF1C,sDAIF,CACA,2PAEE,cACF,CACA,whBAIE,mBACF,CACA,sxBAQE,cACF,CACA,4QAEE,gBACF,CACA,gTAEE,2KACF,CACA,kGACE,0FAA2F,CAE3F,6BAA8B,CAD9B,eAEF,CACA,gIACE,gBACF,CAIA,0SACE,4FACF,CACA,+LAEE,cAAe,CACf,mBAAqB,CACrB,qBACF,CACA,oGACE,8FAA+F,CAE/F,6BAA8B,CAD9B,eAEF,CACA,oIACE,gBACF,CAIA,kTACE,6FACF,CACA,0IACE,SACF,CACA,gRAGE,SAAU,CADV,gBAEF,CACA,oTAEE,4KACF,CACA,qMAEE,cAAe,CACf,mBAAqB,CACrB,qBACF,CAIA,4LACE,0CACF,CACA,uIACE,0CACF,CACA,uIACE,0CACF,CACA,0HACE,0CACF,CAIA,sLACE,0CACF,CACA,oIACE,0CACF,CACA,oIACE,0CACF,CACA,4DACE,0CACF,CACA,wIACE,0CACF,CACA,wIACE,0CACF,CACA,mFACE,0CACF,CACA,qHACE,0CACF,CACA,6DACE,0CACF,CACA,yIACE,0CACF,CACA,yIACE,0CACF,CACA,oFACE,0CACF,CACA,6BACE,YACF,CACA,iCACE,WACF,CACA,+FAEE,WACF,CACA,6GAEE,WACF,CACA,mDACE,mBACF,CACA,8PAIE,SACF,CACA,yYASE,wBAA0B,CAH1B,mBAAqB,CAErB,wBAA0B,CAD1B,uBAGF,CACA,gEAEE,wBAA0B,CAD1B,uBAEF,CACA,yEAIE,wBAA0B,CAH1B,uEAA2E,CAE3E,wBAA0B,CAD1B,uBAGF,CACA,mKAGE,wBAA0B,CAD1B,uBAEF,CACA,yLAEE,qBAAuB,CACvB,0DACF,CACA,sCACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,uCACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,gDACE,GACE,8CACF,CACA,GACE,qNACF,CACF,CACA,kDACE,GACE,uNACF,CACA,GACE,8CACF,CACF,CACA,kDACE,GACE,2BACF,CACA,GACE,uBACF,CACF,CACA,mDACE,GACE,uBACF,CACA,GACE,2BACF,CACF,CACA,gDACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,+CACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,oDACE,GACE,SAAU,CACV,8CACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,qNACF,CACF,CACA,gDACE,GACE,SAAU,CACV,qNACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,8CACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,+CACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,4CACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,+CACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,4CACF,CACF,CACA,uCACE,GACE,gDACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,gDACF,CACA,GACE,8CACF,CACF,CACA,uCACE,GACE,6CACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,gDACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,gDACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,6CACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,6CACF,CACF,CACA,uCACE,GACE,+CACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,4CACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,+CACF,CACA,GACE,8CACF,CACF,CACA,uCACE,GACE,4CACF,CACA,GACE,8CACF,CACF,CACA,yBACE,kBACF,CACA,kBACE,eAAgB,CAChB,gBACF,CACA,mBAEE,cAAe,CADf,cAEF,CACA,wBAEE,aAAc,CADd,WAAY,CAEZ,UACF,CACA,mBACE,eAAgB,CAChB,iBACF,CACA,+BACE,6BACF,CACA,kBACE,0BAA2B,CAC3B,eACF,CAIA,yGACE,gBACF,CACA,uEACE,gBACF,CACA,iCACE,6BACF,CACA,wCACE,cACF,CACA,wCACE,iBACF,CAEA,MAQE,4CAA6C,CAC7C,qCAAsC,CACtC,gDACF,CACA,KACE,wBAAyB,CACzB,2BAA4B,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aAAc,CACd,cACF,CACA,kFAGE,gDACF,CACA,2MAME,sBACF,CACA,4HAGE,uFACF,CACA,yHAGE,uFACF,CACA,6JAGE,gDACF,CACA,sNAKE,0DACF,CACF,CACA,yBACE,sEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,6GAGE,aAAc,CACd,cACF,CACA,+EAGE,gDACF,CACA,qMAME,sBACF,CACA,yHAGE,uFACF,CACA,sHAGE,uFACF,CACA,0JAGE,gDACF,CACA,iNAKE,0DACF,CACF,CACA,yBACE,yEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,gHAGE,aAAc,CACd,cACF,CACA,kFAGE,gDACF,CACA,2MAME,sBACF,CACA,4HAGE,uFACF,CACA,yHAGE,uFACF,CACA,6JAGE,gDACF,CACA,sNAKE,0DACF,CACF,CACA,0BACE,sEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,6GAGE,aAAc,CACd,cACF,CACA,+EAGE,gDACF,CACA,qMAME,sBACF,CACA,yHAGE,uFACF,CACA,sHAGE,uFACF,CACA,0JAGE,gDACF,CACA,iNAKE,0DACF,CACF,CACA,0BACE,yEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,gHAGE,aAAc,CACd,cACF,CACA,kFAGE,gDACF,CACA,2MAME,sBACF,CACA,4HAGE,uFACF,CACA,yHAGE,uFACF,CACA,6JAGE,gDACF,CACA,sNAKE,0DACF,CACF,CACA,8CAGE,wCAAyC,CACzC,+BACF,CACA,WACE,iDAAkD,CAClD,uEAAwE,CACxE,2EAA4E,CAC5E,6EAA8E,CAC9E,qEAAsE,CACtE,uEAAwE,CACxE,6DACF,CACA,8IAME,uBACF,CACA,qCAEE,kBAAmB,CADnB,eAEF,CACA,iDACE,eACF,CACA,gDACE,kBACF,CACA,sBAKE,kDAAmD,CAFnD,yDAA2D,CAC3D,yCAA0C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AAO,CASP,SAAU,CAXV,mBAAoB,CACpB,iBAAkB,CAElB,KAAM,CAKN,uDAAwD,CACxD,qEAAsE,CALtE,UAAW,CAGX,aAKF,CACA,wIAGE,gCACF,CACA,yCACE,2DACF,CACA,mDACE,oEACF,CACA,0DACE,uFACF,CACA,oDACE,wGACF,CACA,8DACE,gHACF,CACA,+CACE,SAAU,CACV,mBACF,CACA,8iBAQE,uFAAwF,CACxF,oEACF,CACA,2CACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,4CACE,GACE,SACF,CACA,GACE,SACF,CACF,CAEA,MACE,wCAAyC,CACzC,yCAA0C,CAC1C,0CAA2C,CAC3C,wCACF,CACA,KACE,6CAA8C,CAC9C,oDAAqD,CACrD,2CAA4C,CAC5C,uCAAwC,CACxC,sCAAuC,CACvC,uCAAwC,CACxC,+BACF,CACA,qBAEE,+BAAgC,CAChC,uCACF,CACA,IACE,2CAA4C,CAC5C,oEAAwE,CACxE,6CAA8C,CAC9C,uCAAwC,CACxC,sCACF,CACA,kCAGE,uDAAwD,CACxD,+CACF,CACA,cAUE,0CAA2C,CAH3C,qBAAsB,CADtB,YAAa,CADb,WAAY,CAHZ,MAAO,CADP,iBAAkB,CAElB,KAAM,CAMN,gCAAmC,CADnC,6BAA8B,CAG9B,4EAA6E,CAP7E,UAAW,CAQX,aACF,CACA,+CAEE,8DACF,CACA,2BACE,uBACF,CACA,uBACE,aAAc,CACd,uBACF,CACA,wBACE,+BACF,CACA,6DAGE,kDACF,CACA,6LAME,yDACF,CACA,uUAUE,iDACF,CACA,2DAEE,eACF,CACA,gJAIE,sBACF,CACA,0IAKE,gBAAiB,CACjB,iBAAkB,CAFlB,iBAGF,CACA,oBAIE,6CAA8C,CAF9C,gDAAiD,CACjD,oDAAqD,CAErD,0DAA2D,CAJ3D,kDAKF,CACA,iEAGE,YAAa,CACb,qBACF,CACA,8OAQE,WAAY,CADZ,kBAAmB,CADnB,eAAgB,CAGhB,eAAgB,CAChB,UACF,CACA,+NAME,wBACF,CAEA,MACE,wBACF,CACA,KACE,+BAAgC,CAChC,mCAAoC,CACpC,+CAAgD,CA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oCAAwC,CACxC,6BAAgC,CAChC,kCAAmC,CACnC,gCAAiC,CACjC,4BAA6B,CAC7B,gCACF,CACA,IACE,kCAAmC,CACnC,gCAAiC,CACjC,6BAA8B,CAC9B,gCACF,CACA,kCAGE,6CAA8C,CAC9C,0CACF,CACA,OAQE,yCAA0C,CAD1C,qBAAsB,CAFtB,gCAAiC,CACjC,mCAAoC,CAHpC,mCAAoC,CAMpC,SAAU,CAPV,iBAAkB,CADlB,qCAAuC,CAGvC,aAMF,CACA,iFACE,+BAEE,iDAAkD,CAC1C,yCAA0C,CAFlD,sDAGF,CACF,CACA,gBACE,SACF,CACA,sBAGE,kBAAmB,CACnB,qBAAsB,CAHtB,YAAa,CACb,6BAA8B,CAG9B,2EACF,CACA,mBAEE,aAAc,CADd,gBAAiB,CAEjB,WACF,CACA,qBACE,aAAc,CAGd,kBAAmB,CADnB,eAAgB,CADhB,0CAGF,CACA,sCACE,aAAc,CACd,iBACF,CACA,mCACE,iBACF,CACA,gGAEE,mCACF,CACA,oBACE,OACF,CACA,iBACE,kCACF,CACA,YAGE,MAAO,CAFP,uBAA0B,CAC1B,UAEF,CACA,sBACE,KAAM,CACN,gCACF,CACA,+BACE,uBACF,CACA,yBAGE,2CAA4C,CAD5C,QAAS,CADT,UAIF,CACA,2DAFE,kCAIF,CACA,yBACE,QAAS,CACT,+BACF,CACA,kCACE,uBACF,CACA,yBACE,sBACE,YACF,CACA,qCACE,4EACF,CACA,wCACE,kFACF,CACF,CACA,yBACE,YAGE,2CAA4C,CAF5C,QAAS,CACT,gDAEF,CACA,sBACE,QACF,CACA,yBACE,aACF,CACA,yBACE,qDACF,CACF,CACA,0BACE,YACE,aAAc,CACd,UACF,CACA,kCACE,SACF,CACA,mCACE,SAAU,CACV,UACF,CACA,oCACE,QAAS,CAET,gDAAqD,CADrD,+BAEF,CACF,CACA,mBAEE,wDAA2D,CAD3D,iBAEF,CACA,WAEE,2CAA4C,CAG5C,QAAS,CADT,mBAAqB,CAHrB,uBAA0B,CAE1B,uBAGF,CAIA,yCACE,kBACF,CACA,qBACE,OACF,CACA,wBACE,QAAS,CAET,4CAAgD,CADhD,UAEF,CAIA,mEACE,2CACF,CACA,wBACE,6CACF,CACA,yBACE,WACE,QAAS,CACT,gDACF,CACA,wBACE,aACF,CACF,CACA,0BACE,WACE,aAAc,CACd,UACF,CACA,iCACE,SACF,CACA,kCACE,SAAU,CACV,UACF,CACA,mCACE,QAAS,CAET,gDAAqD,CADrD,+BAEF,CACA,wBACE,8CACF,CACA,qBACE,QACF,CACF,CACA,kBAEE,gBAAiB,CADjB,iBAEF,CAEA,MACE,gCAAiC,CACjC,6CACF,CACA,KACE,4BAA6B,CAC7B,wBAAyB,CACzB,wCAAyC,CACzC,sCACF,CACA,IACE,4BAA6B,CAC7B,wBAAyB,CACzB,wCAAyC,CACzC,sCACF,CACA,WACE,oBAAqB,CAIrB,WAAY,CADZ,+BAAgC,CAEhC,iBAAkB,CAJlB,qBAAsB,CACtB,8BAIF,CACA,4BAGE,aAAc,CADd,WAAY,CAEZ,iBAAkB,CAHlB,UAIF,CAEA,oBAGE,eAAgB,CADhB,SAAU,CADV,kBAAmB,CAGnB,aACF,CACA,iBAKE,6CAA8C,CAG9C,qDAAsD,CANtD,QAAS,CAET,yCAA0C,CAH1C,iBAAkB,CAElB,OAAQ,CAIR,2CAA4C,CAD5C,aAGF,CACA,4BACE,4DAA6D,CAC7D,uBACF,CACA,+GAIE,+BAAgC,CADhC,eAEF,CACA,0BACE,0CACF,CACA,uBACE,yBACF,CACA,uBACE,yBACF,CACA,gBACE,+BACF,CACA,sBACE,iDACF,CACA,2BAKE,uBAAwB,CADxB,mBAAoB,CAHpB,aAAc,CAEd,aAAc,CAId,QAAS,CADT,iBAAkB,CAElB,OAAQ,CACR,4BAA6B,CAP7B,WAQF,CACA,oGAEE,qDACF,CACA,uCAEE,WAAa,CADb,4CAEF,CACA,wCAEE,iBAAmB,CADnB,6CAEF,CACA,wCAEE,iBAAmB,CADnB,6CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,WAAa,CADb,8CAEF,CACA,8BACE,GACE,sBACF,CACA,GACE,uBACF,CACF,CACA,oCACE,MAEE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACF,CACA,eACE,+BACF,CACA,qBACE,kDACF,CACA,4BACE,SAAU,CACV,mBAAoB,CAEpB,sBAAuB,CACvB,sBAAuB,CACvB,cAAe,CAHf,8DAA+D,CAI/D,wBAAyB,CACzB,0BACF,CACA,oEAEE,gHACF,CACA,mCACE,MAEE,cACF,CACA,IACE,cACF,CACA,IACE,cACF,CACA,IACE,cACF,CACF,CACA,+BACE,GACE,sBACF,CACA,GACE,uBACF,CACF,CACA,sCACE,GAEE,uBAAwB,CADxB,wBAEF,CACA,MAEE,sBAAuB,CADvB,wBAEF,CACA,IACE,uBAAwB,CACxB,wBACF,CACA,MAEE,uBAAwB,CADxB,yBAEF,CACA,MAEE,sBAAuB,CADvB,yBAEF,CACA,IACE,uBAAwB,CACxB,uBACF,CACA,MAEE,uBAAwB,CADxB,uBAEF,CACA,MAEE,sBAAuB,CADvB,uBAEF,CACA,IACE,uBAAwB,CACxB,uBACF,CACA,MAEE,uBAAwB,CADxB,sBAEF,CACA,MAEE,sBAAuB,CADvB,sBAEF,CACA,GACE,uBAAwB,CACxB,wBACF,CACF,CAOA,KACE,2BAA4B,CAC5B,kCAAmC,CACnC,yCACF,CACA,qBAEE,+CACF,CACA,IACE,2BAA4B,CAC5B,kCACF,CACA,kCAGE,6DACF,CACA,mCAOE,4EAAgF,CAGhF,iDAAkD,CALlD,aAAc,CAId,mCAAoC,CANpC,eAAgB,CAChB,iBAAkB,CAIlB,2BAA4B,CAF5B,2BAA4B,CAJ5B,UASF,CACA,aACE,qBACF,CACA,kBACE,2EAA6E,CAE7E,WAAY,CACZ,iBAAkB,CAGlB,OAAQ,CAFR,KAAM,CAGN,+BAAkC,CAFlC,wBAA0B,CAJ1B,UAOF,CACA,sBACE,aACF,CACA,yDASE,2EAA6E,CAP7E,UAAW,CAMX,aAAc,CAFd,WAAY,CAHZ,iBAAkB,CAOlB,OAAQ,CANR,KAAM,CAGN,uBAA+B,CAI/B,6BAA8B,CAN9B,UAOF,CACA,kCACE,yBACF,CACA,gBACE,sCACF,CACA,iBACE,uCACF,CACA,mWAkBE,yBAA2B,CAH3B,MAAO,CADP,iBAAkB,CAElB,KAAM,CAGN,qCAAuC,CAFvC,aAGF,CACA,0BACE,GACE,SAAU,CACV,mBACF,CACA,GACE,SAAU,CACV,mBACF,CACF,CACA,2BACE,GACE,SAAU,CACV,mBACF,CACA,GACE,SAAU,CACV,mBACF,CACF,CACA,kCACE,qDACF,CACA,iCACE,YACF,CACA,8CAKE,gEAAiE,CAHjE,+HAA8I,CAE9I,0BAA2B,CAD3B,wBAAyB,CAFzB,UAKF,CACA,oCACE,GACE,+BACF,CACA,GACE,gCACF,CACF,CACA,+CACE,GACE,uBACF,CACA,GACE,+BACF,CACF,CACA,iCACE,sDACF,CACA,gCACE,sDACF,CACA,6CAEE,oEAAqE,CADrE,eAEF,CACA,4CAEE,oEAAqE,CADrE,eAAgB,CAEhB,8BACF,CACA,qCACE,GACE,oCACF,CACA,IACE,qCACF,CACA,IACE,qCACF,CACA,GACE,qCACF,CACF,CACA,qCACE,GACE,oCACF,CACA,IACE,oCACF,CACA,IACE,sCACF,CACA,IACE,sCACF,CACA,GACE,sCACF,CACF,CACA,iDACE,GACE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACF,CACA,mDACE,GAEE,wBAAyB,CADzB,mBAEF,CACA,MAEE,wBAAyB,CADzB,mBAEF,CACA,IAEE,wBAAyB,CADzB,mBAEF,CACA,MAEE,wBAAyB,CADzB,mBAEF,CACA,IAEE,wBAAyB,CADzB,mBAEF,CACA,MAEE,wBAAyB,CADzB,mBAEF,CACA,IAEE,wBAAyB,CADzB,mBAEF,CACA,GAEE,wBAAyB,CADzB,mBAEF,CACF,CAEA,KACE,gCAAiC,CACjC,iEAAqE,CACrE,4CAAgD,CAChD,yDACF,CACA,qBAEE,sDAA0D,CAC1D,kDACF,CACA,IACE,gCAAiC,CACjC,0CACF,CACA,kCAGE,2DAA4D,CAC5D,0DACF,CACA,4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E,+DAEE,4EAA6E,CACrE,oEAAqE,CAF7E,qFAGF,CACF,CACA,+CAGE,qEAAsE,CAKtE,QAAS,CAPT,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,QAAS,CAOT,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CANX,UASF,CACA,4CAIE,gCAAiC,CAFjC,+DAAgE,CAGhE,QAAS,CAFT,aAAc,CAFd,kDAKF,CACA,4CACE,YACF,CACA,qIAEE,sBACF,CACA,oDACE,WACF,CACA,oDACE,UACF,CACA,oDACE,gBACF,CACA,oDACE,UACF,CACA,oDACE,UACF,CACA,oDACE,gBACF,CACA,oDACE,gBACF,CACA,oDACE,YACF,CACA,oDACE,gBACF,CACA,qDACE,UACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,YACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,SACF,CACA,yBACE,2DACE,WACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,gBACF,CACA,2DACE,YACF,CACA,2DACE,gBACF,CACA,4DACE,UACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,YACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,SACF,CACF,CACA,yBACE,0DACE,WACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,UACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,gBACF,CACA,0DACE,YACF,CACA,0DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,YACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,SACF,CACF,CACA,yBACE,2DACE,WACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,gBACF,CACA,2DACE,YACF,CACA,2DACE,gBACF,CACA,4DACE,UACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,YACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,SACF,CACF,CACA,0BACE,0DACE,WACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,UACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,gBACF,CACA,0DACE,YACF,CACA,0DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,YACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,SACF,CACF,CACA,0BACE,2DACE,WACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,gBACF,CACA,2DACE,YACF,CACA,2DACE,gBACF,CACA,4DACE,UACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,YACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,SACF,CACF,CACA,eACE,0CACF,CACA,qBAGE,gEAAiE,CAKjE,WAAY,CAPZ,UAAW,CAGX,aAAc,CAOd,WAAY,CAFZ,SAAU,CAPV,iBAAkB,CAKlB,OAAQ,CADR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B,CAI/B,uBAA0B,CAH1B,2CAA6C,CAE7C,SAOF,CACA,6BACE,+CACF,CACA,mCACE,wBAAyB,CACjB,gBACV,CACA,oCACE,uBACF,CACA,6DACE,mCAAqC,CACrC,UACF,CACA,8BACE,kCACF,CACA,6EAEE,uBACF,CACA,sCACE,SAAU,CACV,mBACF,CACA,+BAQE,qBAAsB,CAJtB,YAAa,CAEb,eAAgB,CAGhB,mBAAoB,CARpB,iBAAkB,CASlB,OAAQ,CARR,KAAM,CAGN,2BAA4B,CAE5B,6BAA8B,CAJ9B,WAQF,CACA,qDACE,uFAAwF,CACxF,yFACF,CACA,6BACE,uBACF,CACA,gGAGE,uBACF,CACA,4CACE,uBACF,CACA,4CACE,uBACF,CACA,yFAGE,WACF,CACA,2DAEE,eACF,CACA,qGAEE,SAAU,CACV,mBACF,CACA,uGAEE,SAAU,CACV,mBACF,CACA,2CAEE,gCAAiC,CADjC,aAAc,CAEd,mBACF,CACA,8BACE,oDAAqD,CACrD,wDACF,CACA,mBACE,mBACF,CACA,sBAEE,QAAS,CAET,MAAO,CAEP,SAAU,CACV,mBAAoB,CAJpB,iBAAkB,CAElB,KAAM,CAGN,iBAAkB,CAPlB,OAQF,CACA,gDACE,8CACE,gDACF,CACA,qHAEE,4DACF,CACA,gGACE,4CACF,CACA,oEAEE,8CAA+C,CAD/C,4CAEF,CACF,CACA,0CACE,eACF,CACA,eAQE,yBAA8B,CAH9B,WAAY,CAHZ,MAAO,CAOP,SAAU,CAFV,mBAAoB,CANpB,cAAe,CAEf,KAAM,CACN,UAAW,CAEX,WAIF,CACA,kBACE,4CAA+C,CAC/C,mBACF,CACA,mBACE,6CACF,CACA,iFACE,eAEE,kCAAmC,CAC3B,0BAA2B,CAFnC,sBAGF,CACF,CACA,iCACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,kCACE,GACE,SACF,CACA,GACE,SACF,CACF,CAEA,MACE,wBAAyB,CACzB,8BAA+B,CAC/B,kCACF,CACA,uBAEE,kCACF,CACA,KACE,qBAAsB,CACtB,yBAA0B,CAC1B,iCAAkC,CAClC,4BAA6B,CAC7B,4BAA6B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B,YAAa,CAGb,sBACF,CACA,mCAKE,iFAAkF,CADlF,8EAA+E,CAF/E,aAAc,CACd,iBAGF,CACA,kDAGE,8DAAgE,CAChE,2CAA4C,CAC5C,+CAAgD,CAChD,iBAAkB,CAJlB,UAKF,CACA,mCACE,WACF,CACA,6DAGE,mDACF,CACA,0DAGE,sFAAwF,CACxF,yFAA2F,CAC3F,uEAAwE,CACxE,oDACF,CACA,srBAYE,oCACF,CACA,maAME,2DACF,CACA,qbAME,oCAAyC,CACzC,qCACF,CACA,6DAGE,kDACF,CACA,6DAGE,8DAA+D,CAC/D,kDACF,CACA,sEAEE,gDAAiD,CACjD,4DACF,CACA,gEAGE,2BAA4B,CAC5B,8CACF,CACA,wGAGE,cACF,CACA,0CAEE,8GACF,CACA,4JAIE,6BACF,CACA,0PAME,uBACF,CACA,8tBAaE,sCAAuC,CADvC,uBAEF,CACA,uEAKE,eAAgB,CADhB,uBAA+B,CAD/B,uBAGF,CACA,uCAEE,iGACF,CAQA,qBACE,YACF,CACA,0BAKE,aAAc,CAJd,aAAc,CACd,eAAgB,CAEhB,iBAAkB,CADlB,sBAGF,CACA,8FAGE,kEACF,CACA,mCAGE,8FAAgG,CAKhG,QAAS,CAPT,UAAW,CAeX,aAAc,CANd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,QAAS,CAOT,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CANX,UASF,CAIA,0BACE,QACF,CACA,uEAEE,sBACF,CACA,qCACE,eACF,CAEA,MACE,kBACF,CACA,MACE,YACF,CACA,eACE,sBACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,yBACE,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACF,CACA,yBACE,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACF,CACA,yBACE,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACF,CACA,0BACE,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACF,CACA,0BACE,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,C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IE,sCAAuC,CACvC,yCAA0C,CAF1C,mCAGF,CACA,oDACE,yCACE,YACF,CACA,qHAGE,aACF,CACA,sCACE,iBACF,CACA,6CAGE,kDAAmD,CAKnD,WAAY,CAPZ,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,KAAM,CAON,sDAAyD,CADzD,sBAAwB,CADxB,UAAW,CANX,UASF,CACA,4CACE,wBACF,CACA,sCACE,qEAAsE,CACtE,sEAAuE,CAIvE,oBAAqB,CACrB,kBAAmB,CAFnB,YAAa,CAFb,WAAY,CAKZ,0BAA2B,CAJ3B,2CAA4C,CAK5C,gBACF,CACA,6CACE,sBACF,CACA,iEAME,yBAA2B,CAI3B,qCAAsC,CAPtC,oCAAqC,CADrC,uBAAyB,CAUzB,aAAc,CAJd,wCAAyC,CACzC,4CAA6C,CAJ7C,WAAY,CAMZ,gBAAiB,CAPjB,iBAAkB,CAGlB,wBAA0B,CAN1B,SAYF,CACA,oDACE,iBAAkB,CAElB,OAAQ,CADR,KAEF,CACA,uDACE,kBACF,CACA,uDACE,iBACF,CACF,CACA,4DAEE,YACF,CACA,yBACE,yBACE,kBACF,CACF,CACA,qDACE,mCACE,kBACF,CACF,CACA,0DAEE,YACF,CACA,yBACE,wBACE,kBACF,CACF,CACA,qDACE,kCACE,kBACF,CACF,CACA,4DAEE,YACF,CACA,yBACE,yBACE,kBACF,CACF,CACA,qDACE,mCACE,kBACF,CACF,CACA,0DAEE,YACF,CACA,0BACE,wBACE,kBACF,CACF,CACA,sDACE,kCACE,kBACF,CACF,CACA,4DAEE,YACF,CACA,0BACE,yBACE,kBACF,CACF,CACA,sDACE,mCACE,kBACF,CACF,CACA,8FAEE,iBACF,CACA,6CACE,gBACF,CACA,wCACE,eACF,CACA,4JAIE,iBACF,CAKA,iHAGE,WAAY,CADZ,UAEF,CACA,oDACE,iBACF,CACA,oCACE,iBACF,CACA,kCACE,gBACF,CACA,4FAEE,iBACF,CACA,wFAGE,WAAY,CACZ,gBAAiB,CAFjB,UAGF,CACA,4CACE,gBACF,CACA,uCACE,eACF,CACA,wJAIE,iBACF,CACA,yCAEE,WAAY,CACZ,gBAAiB,CAFjB,UAGF,CACA,sDACE,eACF,CACA,qEAGE,WAAY,CADZ,UAEF,CACA,mDACE,iBACF,CACA,mCACE,iBACF,CACA,iCACE,gBACF,CACA,oCACE,mBACF,CAEA,MACE,oBAAqB,CACrB,qCAAsC,CACtC,+BAAgC,CAChC,gCAAiC,CACjC,yBACF,CACA,KAGE,wBAAyB,CACzB,2BAA4B,CAC5B,kBAAmB,CACnB,+CAAmD,CACnD,0CAA2C,CAC3C,2BAA4B,CAC5B,qCAAsC,CACtC,sCAAuC,CACvC,uCAAwC,CACxC,gCAAiC,CACjC,qDAAyD,CACzD,8BAA+B,CAC/B,4BACF,CACA,IAIE,2BAA4B,CAC5B,kBAAmB,CACnB,gDAAoD,CACpD,2BAA4B,CAC5B,qCAAsC,CACtC,sCAAuC,CACvC,uCAAwC,CACxC,qCAAsC,CACtC,gCAAiC,CACjC,sDACF,CACA,kCAGE,gDAAiD,CACjD,qDAAsD,CACtD,iDAAkD,CAClD,8CACF,CACA,cACE,YACF,CACA,KACE,iBAAkB,CAClB,YACF,CACA,OACE,oDACF,CACA,gDAGE,0DACF,CACA,mDAGE,4DACF,CACA,6CAGE,wBACF,CACA,sDAGE,8DACF,CACA,sDAGE,QAAS,CACT,0BACF,CACA,sDAGE,OAAQ,CACR,0BACF,CACA,mBAEE,QAAS,CADT,OAAQ,CAER,2CACF,CACA,sBAUE,kBAAmB,CARnB,6DAA+D,CAI/D,yCAA0C,CAD1C,mCAAoC,CASpC,8BAA+B,CAL/B,YAAa,CALb,yBAA0B,CAO1B,sBAAuB,CACvB,eAAgB,CALhB,iBAAkB,CAClB,uBAA0B,CAL1B,wBAAyB,CAUzB,SAEF,CACA,SAEE,QAAS,CADT,iBAAkB,CAElB,OAAQ,CACR,wDAA2D,CAC3D,cACF,CACA,WAEE,SAAU,CADV,2DAEF,CACA,eACE,yCAA0C,CAE1C,gCAAiC,CADjC,+BAEF,CACA,aACE,YAAa,CAEb,mBAAoB,CACpB,iBAAkB,CAFlB,iBAGF,CACA,eACE,SACF,CACA,gCAEE,SAAU,CADV,0DAEF,CACA,kCAEE,SAAU,CADV,wDAEF,CACA,yBAEE,mBAAoB,CADpB,kBAEF,CACA,2BACE,SAAU,CACV,0CACF,CACA,wCACE,qBACF,CACA,wCACE,oBACF,CACA,wCACE,qBACF,CACA,wCACE,oBACF,CACA,wCACE,qBACF,CACA,qCAEE,QAAS,CAET,gDAAqD,CADrD,+BAEF,CACA,iBACE,WAAY,CAEZ,6BAA8B,CAD9B,kBAEF,CACA,mBACE,wCAA4C,CAC5C,8BACF,CACA,qBACE,kBACF,CACA,oBAGE,qBAAsB,CADtB,eAAgB,CADhB,QAGF,CACA,sBACE,yCAA6C,CAC7C,2BACF,CACA,wBACE,eACF,CACA,qCAGE,gCAAiC,CACjC,+CAAoD,CAFpD,OAGF,CACA,kBAEE,iBAAkB,CADlB,UAEF,CACA,oBACE,wCAA8C,CAC9C,6BACF,CACA,sBACE,iBACF,CACA,mBAGE,0BAA2B,CAF3B,SAAU,CACV,gBAEF,CACA,qBACE,yCAA6C,CAC7C,4BACF,CACA,uBACE,gBACF,CACA,oBAIE,WAAY,CAHZ,MAAQ,CACR,KAAO,CACP,UAEF,CACA,sBACE,iBACF,CACA,kCAGE,WAAY,CAFZ,QAAS,CAGT,kBAAmB,CAFnB,gDAAqD,CAGrD,oCAAsC,CACtC,8BACF,CACA,mCACE,SAAU,CAGV,gBAAiB,CAFjB,+CAAoD,CACpD,OAAQ,CAER,oCAAsC,CACtC,4BACF,CACA,mCACE,QAAS,CACT,gDAAqD,CAErD,eAAgB,CADhB,QAAS,CAET,mCAAqC,CACrC,2BACF,CACA,mCAIE,iBAAkB,CAFlB,+CAAoD,CADpD,UAAW,CAEX,OAAQ,CAER,mCAAqC,CACrC,6BACF,CACA,WAEE,uDAAyD,CADzD,yCAA0C,CAE1C,mCACF,CACA,aAEE,yBAA2B,CAD3B,eAEF,CACA,0BACE,SACF,CACA,0CAGE,wBACF,CACA,iDACE,YACF,CACA,cAEE,qCAAsC,CADtC,UAEF,CACA,gBAEE,kCAAmC,CADnC,UAEF,CACA,kBACE,wCACF,CACA,0BACE,wCACF,CACA,gBACE,oBACF,CACA,UACE,qBAAsB,CACtB,+CAAgD,CAEhD,mDAAoD,CACpD,yDAA0D,CAF1D,2CAA4C,CAG5C,oDACF,CACA,kBACE,0BACF,CACA,WAKE,uCAAwC,CADxC,+CAAgD,CAGhD,yCAA0C,CAD1C,oCAAqC,CAKrC,uCAAwC,CARxC,mCAAoC,CAOpC,mBAAoB,CATpB,iBAAkB,CAClB,OAAQ,CAOR,0BAA2B,CAD3B,kBAIF,CACA,oFAIE,gBAAiB,CADjB,UAEF,CACA,iFAGE,SAAU,CACV,eACF,CACA,sSAYE,kEACF,CACA,0mBAkBE,mCACF,CACA,stBAkBE,sCACF,CACA,g8BAkBE,2CACF,CACA,04BAkBE,wCACF,CACA,0LAME,yCACF,CACA,gwBAkBE,6FACF,CACA,0+BAkBE,kGACF,CACA,8fAYE,6FACF,CACA,0pBAYE,kGACF,CACA,0DAGE,2EAA6E,CAD7E,uBAEF,CACA,wDAEE,4FACF,CAEA,MAKE,qCAAsC,CACtC,6CACF,CACA,KAME,0BAA2B,CAC3B,qCAAsC,CACtC,sCAAuC,CAIvC,mCAAoC,CACpC,sCAAuC,CACvC,gCAAiC,CACjC,uCAAwC,CAIxC,4CAA6C,CAK7C,gDAAoD,CACpD,yCAA0C,CAC1C,8CAA+C,CAC/C,8CAA+C,CAC/C,oDAAqD,CACrD,gDAAoD,CACpD,oCAAqC,CACrC,gDAAoD,CACpD,qCACF,CACA,qBAEE,sDAA0D,CAC1D,oCAAqC,CACrC,sDAA0D,CAC1D,qCACF,CACA,IACE,uCAAwC,CACxC,0BAA2B,CAC3B,qCAAsC,CACtC,sCAAuC,CACvC,mCAAoC,CACpC,uCAAwC,CACxC,gCAAiC,CACjC,uCAAwC,CACxC,8CAA+C,CAC/C,4CAA6C,CAC7C,mDAAoD,CACpD,iDAAqD,CACrD,4CAA6C,CAC7C,8CAA+C,CAC/C,iDAAkD,CAClD,uDAAwD,CACxD,mCACF,CACA,kCAGE,iDAAkD,CAClD,wDAAyD,CACzD,+DAAgE,CAChE,gEAAiE,CACjE,8DAA+D,CAC/D,uDACF,CACA,WACE,wDAAyD,CAKzD,qEAAuE,CADvE,iCAAkC,CAFlC,iBAAkB,CADlB,UAAW,CAEX,WAGF,CACA,iBACE,wDACF,CACA,yDACE,YACF,CACA,iFACE,iCAEE,4EAA6E,CACrE,oEAAqE,CAF7E,sHAGF,CACF,CACA,2BAEE,4BAA6B,CACrB,oBAAqB,CAF7B,wBAGF,CAIA,6DACE,sBACF,CACA,iBAGE,6EAA+E,CAK/E,QAAS,CAPT,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,QAAS,CAOT,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CANX,UASF,CACA,wCACE,WACF,CACA,0DAOE,uBAAwB,CAChB,eAAgB,CAKxB,mDAAoD,CAPpD,0FAA2F,CAQ3F,qDAAsD,CAZtD,qBAAsB,CAStB,0CAA2C,CAN3C,aAAc,CAId,mBAAoB,CAGpB,6CAA8C,CAF9C,eAAmB,CANnB,WAAY,CAYZ,SAAU,CACV,oHAAqH,CACrH,oHAAqH,CAHrH,iBAAkB,CAZlB,UAgBF,CACA,oFAEE,2CAA4C,CAC5C,SACF,CACA,+CACE,uBAAwB,CAChB,eACV,CACA,iCACE,aAAc,CAEd,uCAAwC,CACxC,iBAAkB,CAFlB,UAGF,CACA,aACE,oFACF,CACA,wCAEE,MAAO,CADP,iBAAkB,CAElB,KACF,CACA,gDACE,+DAAgE,CAGhE,yDAA0D,CAF1D,iDAAkD,CAClD,UAEF,CACA,qMAGE,6GACF,CACA,+BACE,qFACF,CACA,sBACE,yDAA0D,CAG1D,mBAAoB,CAFpB,iBAAkB,CAClB,uBAEF,CACA,8BACE,sBACF,CACA,oCACE,sBACF,CACA,wCACE,sFACF,CACA,yDAEE,2CAA4C,CAD5C,2BAEF,CACA,yCACE,uDACF,CACA,2CACE,yDACF,CACA,8CACE,4DACF,CACA,iBAOE,kBAAmB,CACnB,qBAAsB,CAFtB,YAAa,CADb,WAAY,CAHZ,MAAO,CAOP,6JAA8J,CAR9J,iBAAkB,CAElB,KAAM,CACN,UAMF,CACA,0BAGE,uBAAwB,CAChB,eAAgB,CACxB,eAAgB,CAChB,WAAY,CALZ,cAAe,CAQf,QAAS,CAET,SAAU,CAJV,SAAU,CACV,SAAU,CANV,mBAAoB,CAQpB,UAEF,CACA,gBAEE,uBAA2B,CAC3B,2BAA4B,CAF5B,mBAGF,CACA,sBASE,gBAAiB,CAEjB,kCAAmC,CAEnC,iCAAkC,CAClC,4BAA6B,CAb7B,2CAA4C,CAS5C,aAAc,CAMd,aAAc,CAdd,iCAAoC,CAiBpC,cAAe,CAff,iBAAkB,CADlB,eAAmB,CAenB,WAAY,CAZZ,qBAAsB,CADtB,aAAc,CAUd,iBAAkB,CAHlB,iCAAkC,CALlC,mBAAoB,CACpB,kBAAmB,CASnB,UAGF,CACA,oBAWE,gDAAiD,CANjD,WAAY,CAHZ,MAAO,CAKP,SAAU,CACV,mBAAoB,CAPpB,iBAAkB,CAElB,KAAM,CAON,uBAA+B,CAD/B,uBAA0B,CAL1B,UAAW,CAEX,WAMF,CACA,0CACE,SAAU,CACV,mBACF,CACA,kCACE,cACF,CACA,qBACE,YACF,CACA,0GAIE,sBACF,CAKA,kGAEE,qCACF,CASA,gVAME,uBACF,CACA,gDACE,uDAAwD,CACxD,kEAAqE,CACrE,uBAA0B,CAC1B,6BACF,CACA,gDACE,uBACF,CACA,4GAGE,2DACF,CACA,+MAIE,iGAAkG,CAClG,gHACF,CACA,2HAEE,KAAM,CACN,cACF,CACA,aACE,qDACF,CACA,0GAGE,4BACF,CACA,iJAGE,iCACF,CACA,kIAGE,sFACF,CACA,yKAGE,2FACF,CACA,4BAGE,wBAA6B,CAC7B,qBAAsB,CAFtB,WAAY,CADZ,UAIF,CACA,qEAEE,sBACF,CACA,kDACE,+EACF,CACA,6CAIE,WAAY,CAHZ,SAAU,CACV,eAAgB,CAChB,UAEF,CACA,4FAGE,oGAAsG,CADtG,wFAA0F,CAE1F,yKAA0K,CAC1K,yKACF,CACA,oEAEE,UACF,CACA,oCAEE,QAAS,CADT,UAEF,CACA,qBAEE,WAAY,CAGZ,eAAgB,CAFhB,iBAAkB,CAIlB,SAAU,CAHV,OAAQ,CAHR,UAAW,CAKX,UAEF,CACA,2BACE,oBAAqB,CACrB,gBACF,CACA,+BAKE,oFAAuF,CACvF,YAAa,CAJb,aAAc,CADd,cAAe,CAEf,uBAA+B,CAC/B,uBAGF,CACA,4CAEE,oBAAuB,CADvB,uBAEF,CACA,kDAGE,gBAAiB,CADjB,SAAU,CADV,mBAGF,CACA,kEACE,iCACF,CACA,2BAEE,QAAS,CAGT,QAAU,CAFV,SAAU,CAIV,eAAgB,CANhB,OAAQ,CAKR,uBAA+B,CAF/B,UAIF,CACA,qDAGE,aAAc,CAFd,gBAAiB,CACjB,SAEF,CACA,4CACE,0CACF,CACA,oHAEE,qCACF,CACA,sbAQE,uBACF,CACA,4WAOE,mBAAqB,CADrB,sDAEF,CACA,6CAEE,0CAA2C,CAD3C,SAAU,CAEV,mBACF,CACA,kDAEE,iBAAkB,CAClB,OAAQ,CACR,uBACF,CACA,oBAME,kBAAmB,CADnB,YAAa,CAHb,WAAY,CAKZ,sBAAuB,CAJvB,MAAO,CAKP,+BAAgC,CAJhC,KAAM,CAHN,UAQF,CACA,0BAGE,mBAAoB,CADpB,WAAY,CAEZ,eAAgB,CAHhB,UAIF,CACA,8BAOE,oFAAuF,CAFvF,aAAc,CADd,qBAAuB,CAFvB,WAAY,CAIZ,gBAAiB,CAEjB,+EAAgF,CALhF,kCAAoC,CAFpC,UAQF,CACA,oCAQE,gBAAiB,CAEjB,kCAAmC,CAEnC,iCAAkC,CAClC,4BAA6B,CAO7B,wBAAyB,CAXzB,aAAc,CAMd,aAAc,CAdd,iCAAoC,CAiBpC,cAAe,CAff,iBAAkB,CADlB,eAAmB,CAenB,WAAY,CAZZ,qBAAsB,CADtB,aAAc,CAed,gBAAiB,CALjB,iBAAkB,CAHlB,iCAAkC,CALlC,mBAAoB,CACpB,kBAAmB,CASnB,UAKF,CACA,2FAGE,SAAU,CADV,mBAAoB,CADpB,+BAGF,CACA,iFACE,SAAU,CACV,iCACF,CACA,eACE,4CACF,CACA,mCAEE,WAAY,CAEZ,MAAO,CADP,gBAAiB,CAFjB,UAIF,CACA,yCAEE,yBAA0B,CAD1B,gBAAiB,CAEjB,SACF,CACA,0CACE,YACF,CACA,sBACE,4CACF,CACA,yEAGE,4CACF,CACA,uJAGE,+EACF,CACA,yHAGE,+BACF,CACA,0BACE,qCAAsC,CACtC,sCAAuC,CAQvC,mDAAoD,CAJpD,uDAAwD,CADxD,QAAS,CAFT,0CAA2C,CAS3C,yDAA4D,CAJ5D,yDAA8D,CAJ9D,SAAU,CAOV,UAAW,CAFX,uBAAqC,CAFrC,+CAMF,CACA,4CAEE,eAAgB,CAKhB,cAAe,CAFf,YAAa,CAFb,SAAU,CACV,mBAAoB,CAEpB,OAAQ,CALR,UAOF,CAEA,MACE,qCAAsC,CACtC,uCAAwC,CACxC,qCAAsC,CACtC,uCAAwC,CACxC,mCAAoC,CACpC,kCAAmC,CACnC,kCAAmC,CACnC,gCAAiC,CACjC,qCAAsC,CACtC,qCAAsC,CACtC,uCAAwC,CACxC,2CACF,CACA,uBAEE,2CACF,CACA,KACE,2CAA4C,CAC5C,2CAA4C,CAC5C,kCAAmC,CACnC,6BAA8B,CAC9B,wBAAyB,CACzB,mCAAoC,CACpC,kCAAmC,CACnC,sCAAuC,CACvC,wCAAyC,CACzC,2CAA4C,CAC5C,0CAA2C,CAI3C,iCAAkC,CAClC,mCAAoC,CACpC,qCAAsC,CACtC,sCAAuC,CACvC,+CAAmD,CACnD,+CAAmD,CACnD,+CAAmD,CACnD,6CACF,CACA,qBAEE,sCAAuC,CACvC,qCAAsC,CACtC,0CAA2C,CAC3C,qDAAyD,CACzD,qDAAyD,CACzD,mDAAuD,CACvD,qDACF,CACA,IACE,0CAA2C,CAC3C,kCAAmC,CACnC,6BAA8B,CAC9B,wBAAyB,CACzB,mCAAoC,CACpC,kCAAmC,CACnC,sCAAuC,CACvC,yCAA0C,CAC1C,2CAA4C,CAC5C,yCACF,CACA,kCAGE,+CAAgD,CAChD,oDAAqD,CACrD,2DAA4D,CAC5D,wDAAyD,CACzD,mEAAoE,CACpE,mEAAoE,CACpE,8DAA+D,CAC/D,8DAA+D,CAC/D,8DAA+D,CAC/D,4DACF,CACA,4BAEE,8CACF,CACA,UACE,YAAa,CACb,qBAAsB,CACtB,eAAgB,CAChB,iBAAkB,CAClB,SACF,CACA,yBAEE,mCACF,CACA,+CAEE,sCACF,CACA,gBAIE,yCAA0C,CAC1C,4CAA6C,CAC7C,gDAAiD,CAHjD,aAAc,CAFd,iBAAkB,CAClB,UAKF,CACA,SAIE,oBAAqB,CAFrB,qBAAsB,CACtB,YAAa,CAFb,aAAc,CAId,iBAAkB,CAElB,uBAA+B,CAD/B,SAEF,CACA,gBAIE,mBAAoB,CADpB,qBAAsB,CAFtB,oDAAqD,CAIrD,aAAc,CAEd,oCAAqC,CALrC,iBAAkB,CAIlB,mCAEF,CACA,iBAEE,YAAa,CACb,qBAAsB,CAFtB,iBAGF,CACA,8CAGE,aACF,CACA,gBACE,yCAA0C,CAC1C,4CACF,CACA,gBACE,yCAA0C,CAC1C,4CAA6C,CAC7C,kBACF,CACA,cACE,uCAAwC,CACxC,0CAA2C,CAC3C,8CACF,CACA,gBAQE,oDAAqD,CAPrD,qBAAsB,CAEtB,YAAa,CACb,qBAAsB,CAGtB,4CAA6C,CAD7C,gDAAiD,CAIjD,8CAA+C,CAD/C,6FAA8F,CAJ9F,iBAAkB,CAHlB,qBASF,CACA,mBACE,aAAc,CAEd,WAAY,CADZ,cAAe,CAEf,UACF,CACA,0CAEE,aACF,CACA,qBACE,8CAA+C,CAE/C,iDAAkD,CADlD,6CAEF,CACA,qBACE,8CAA+C,CAE/C,iDAAkD,CADlD,6CAEF,CACA,cACE,eACF,CACA,cAGE,qBAAsB,CADtB,kBAAmB,CADnB,gBAGF,CACA,8BAEE,gEAAkE,CADlE,uCAEF,CACA,+BACE,sBACF,CACA,kBAEE,mBAAoB,CADpB,0BAEF,CACA,kCAEE,8CAA+C,CAD/C,2CAEF,CACA,mCACE,oBACF,CACA,4CACE,SACF,CAUA,8KACE,YACF,CACA,4BACE,wCACF,CACA,yBACE,qCACF,CACA,0BACE,oBAAqB,CACrB,WAAY,CACZ,qBACF,CACA,8BAGE,sDAAuD,CAGvD,iBAAkB,CALlB,oBAAqB,CAGrB,kDAAmD,CAFnD,iBAAkB,CAGlB,qBAEF,CACA,sCACE,GACE,+BACF,CACA,GACE,uBACF,CACF,CACA,mCACE,GACE,gCACF,CACA,GACE,uBACF,CACF,CACA,0FAIE,eACF,CACA,wCAEE,iBACF,CACA,qBACE,cACF,CACA,qBACE,cACF,CACA,oBACE,qGACF,CACA,gCACE,6DACF,CACA,oCACE,6DAA8D,CAC9D,8DACF,CACA,+BACE,gEACF,CACA,mCACE,gEAAiE,CACjE,iEACF,CACA,0BACE,iBACF,CACA,0BACE,cACF,CACA,uBACE,iDACF,CACA,mHAGE,uDACF,CACA,uCAEE,2PAA4P,CAD5P,oEAEF,CACA,sCACE,wEACF,CACA,oDACE,oIACF,CACA,yEACE,gTACF,CACA,uGACE,2BACF,CACA,mBACE,mDACF,CACA,uGAGE,wDACF,CACA,mCAEE,wPAA4P,CAD5P,qEAEF,CACA,kCACE,yEACF,CACA,gDAIE,8SAAoT,CAHpT,oIACF,CAIA,8EACE,4BACF,CACA,2CACE,cACF,CACA,2HAIE,8CAA+C,CAC/C,iBAAkB,CAHlB,UAAW,CACX,iBAGF,CACA,6DAIE,QAAW,CAFX,WAAY,CACZ,QAAS,CAFT,UAIF,CACA,8DAIE,WAAY,CAFZ,UAAW,CACX,SAAU,CAFV,SAIF,CACA,mCAEE,UAAW,CADX,SAEF,CACA,uCACE,gBACF,CACA,+CACE,mDACF,CACA,gDACE,wDACF,CACA,gDACE,uDACF,CACA,wCACE,GACE,WACF,CACA,IACE,UACF,CACA,IACE,UACF,CACF,CACA,sFAIE,eACF,CACA,sCAEE,iBACF,CACA,oBACE,cACF,CACA,yBACE,iBACF,CACA,yBACE,cACF,CACA,mBACE,8GACF,CACA,0CAEE,oDACF,CACA,sBACE,gDACF,CACA,gHAGE,gBACF,CACA,uNAGE,6BACF,CACA,uNAGE,0BACF,CACA,yOAGE,6BAA8B,CAC9B,0BACF,CACA,uDACE,eACF,CACA,kBACE,kDACF,CACA,oGAGE,iBACF,CACA,2MAGE,8BACF,CACA,2MAGE,2BACF,CACA,6NAGE,8BAA+B,CAC/B,2BACF,CACA,mDACE,wDACF,CACA,0CACE,cACF,CACA,kCAEE,UAAW,CADX,SAEF,CACA,sCACE,gBACF,CACA,8CACE,kDACF,CACA,+CACE,uDACF,CACA,+CACE,sDACF,CACA,uCACE,GACE,uBACF,CACA,IACE,0BACF,CACA,IACE,uBACF,CACF,CAEA,MACE,wCAAyC,CACzC,kCAAmC,CACnC,4CAKF,CACA,KACE,2BAA4B,CAC5B,8BAA+B,CAC/B,6CAA8C,CAI9C,wCAAyC,CACzC,2CAA4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Z,iBAAkB,CAKlB,6BAA8B,CAC9B,mFAAqF,CALrF,UAAW,CAEX,SAKF,CACA,wEAGE,uBACF,CACA,mBACE,kBACF,CACA,iBACE,kBACF,CACA,cAME,aAAc,CALd,aAAc,CAEd,WAAY,CACZ,iBAAkB,CAClB,6BAA8B,CAH9B,UAKF,CACA,8BACE,iBACF,CAEA,oDAEE,WACF,CACA,mCACE,sBAAuB,CACvB,oCACF,CACA,sCAEE,kCAAmC,CAC3B,0BAA2B,CAFnC,uBAGF,CAEA,2CACE,kBACF,CACA,2BACE,2BACF,CACA,WACE,kBACF,CACA,wDAEE,2BACF,CAEA,iCAIE,uBAAwB,CAHxB,aAAc,CACd,oBAIF,CACA,oDACE,YACF,CACA,+CACE,6BACF,CACA,mDACE,4BACF,CACA,iDACE,4BACF,CACA,kDACE,qBACF,CACA,gEACE,sBACF,CACA,wDACE,UAAW,CACX,aAAc,CACd,UACF,CACA,+DACE,+BAAgC,CAChC,uBACF,CACA,6FACE,wDACF,CACA,0EACE,WAAY,CACZ,cAAe,CACf,yCACF,CACA,2FACE,uDACF,CACA,wEAGE,0CAA2C,CAD3C,aAAc,CADd,UAGF,CAGA,sLAcE,WAAY,CAHZ,MAAO,CAIP,mBAAoB,CALpB,iBAAkB,CAElB,KAAM,CACN,UAAW,CAGX,UACF,CACA,gCACE,0BACF,CACA,qCACE,qEACF,CACA,sCACE,oEACF,CACA,oCACE,mEACF,CACA,uCACE,qEACF,CACA,uBAaE,wEAA6B,CAD7B,iBAAkB,CAClB,gCAA6B,CAH7B,qBAAsB,CARtB,WAAY,CAEZ,QAAS,CAET,iBAAkB,CAClB,gBAAiB,CAJjB,iBAAkB,CAElB,OAAQ,CAIR,oBAAqB,CARrB,UAAW,CAOX,UAMF,CACA,+HAEE,kDACF,CACA,6BACE,6BACF,CACA,6BACE,6BACF,CACA,iCACE,GACE,sBACF,CACA,GACE,uBACF,CACF,CAEA,8BACE,kCAAmC,CACnC,uBACF,CACA,sDACE,UAAW,CAEX,MAAO,CAEP,mBAAoB,CAHpB,iBAAkB,CAElB,KAEF,CACA,wEACE,UAAW,CACX,gCACF,CACA,sEAEE,iCAAkC,CADlC,SAEF,CACA,MACE,6BAMF,CACA,wCAUE,kBAAmB,CAEnB,8DAAgE,CAJhE,cAAe,CACf,YAAa,CAJb,oCAAqC,CAMrC,sBAAuB,CALvB,sDAA2D,CAJ3D,iBAAkB,CAClB,2CAA6C,CAC7C,+CAAoD,CAGpD,UAMF,CACA,sFAGE,WAAY,CADZ,WAAa,CAEb,mBACF,CACA,kFAGE,WAAY,CADZ,SAAU,CAEV,mBACF,CACA,gGAEE,sBACF,CACA,gDAGE,WAAY,CACZ,kBAAmB,CACnB,uBAAwB,CAHxB,UAIF,CACA,wEAEE,wBACF,CACA,oDAEE,+CAAiD,CACjD,UACF,CAMA,oBACE,YACF,CAEA,oDAEE,wBAAyB,CACzB,uCAAwC,CAGxC,mBAAqB,CADrB,gBAAiB,CAEjB,aAAc,CAHd,6BAIF,CACA,gEAEE,cACF,CACA,oDAGE,SAAU,CADV,gDAEF,CACA,gEAEE,cACF,CAuBA,mBACE,iBAAkB,CAClB,iBAAkB,CAElB,uBAA+B,CAD/B,sBAAyB,CAEzB,UACF,CACA,4CACE,SACF,CACA,6FAEE,sBACF,CAEA,4JAIE,0CAA4C,CAE5C,MAAO,CADP,qCAAuC,CAEvC,UACF,CAEA,mCAEE,WAAY,CADZ,eAEF,CACA,6DAEE,iBAAkB,CADlB,oBAEF,CAIA,6IACE,kBACF,CACA,yEACE,oBACF,CACA,8EACE,oBACF,CACA,yEACE,oBACF,CACA,8EACE,oBACF,CACA,0BAKE,8DAAgE,CADhE,+DAAiE,CADjE,oBAAqB,CADrB,sFAAyF,CAIzF,2DAA8D,CAL9D,oFAMF,CACA,gCAKE,uBAAwB,CAChB,eAAgB,CALxB,WAAY,CAGZ,eAAgB,CAFhB,QAAS,CACT,SAIF,CACA,uDACE,cACF,CACA,qCACE,sBACF,CACA,iCAEE,mEAAqE,CADrE,iDAEF,CACA,kGAGE,uCAAyC,CADzC,wCAA0C,CAE1C,OAAQ,CACR,+BACF,CACA,sJAGE,aAAc,CADd,yDAEF,CACA,sKAEE,OAAQ,CACR,0BAA2B,CAC3B,SACF,CACA,0NAEE,oBAAqB,CACrB,gCACF,CACA,0JAEE,2DACF,CACA,0KAEE,QAAS,CACT,0BAA2B,CAC3B,kBACF,CACA,8NAEE,iCACF,CACA,2FACE,kCACF,CAEA,4BACE,qDACF,CAEA,+BACE,wEAA8E,CAC9E,iBACF,CACA,mEACE,mEAAqE,CAKrE,WAAY,CAHZ,MAAO,CADP,iBAAkB,CAElB,KAAM,CAGN,kBAAmB,CACnB,yBAA0B,CAH1B,UAIF,CACA,+EACE,0BACF,CACA,sSAKE,oDAAsD,CACtD,MAAO,CACP,KAAM,CAHN,UAIF,CACA,sSAKE,WAAY,CACZ,MAAO,CACP,KAAM,CAHN,mDAIF,CACA,wBACE,YACF,CAcA,kBAIE,0DAAgE,CAHhE,wDAA0D,CAC1D,iBAAkB,CAClB,qBAEF,CACA,yFAEE,sBACF,CACA,mFAIE,yCAA2C,CAG3C,uCAAyC,CAJzC,4CAA8C,CAD9C,iBAAkB,CAGlB,oCAAsC,CAGtC,6DAAgE,CAFhE,UAGF,CACA,+EAQE,8DAAiE,CALjE,sCAAwC,CADxC,iBAAkB,CAElB,uCAAyC,CACzC,2CAA6C,CAE7C,sCAAwC,CADxC,UAGF,CACA,uBAIE,+DAAqE,CACrE,wDAA0D,CAJ1D,WAAY,CAKZ,MAAO,CAHP,iBAAkB,CAIlB,KAAM,CALN,UAMF,CACA,8BACE,WACF,CACA,uBACE,YACF,CAEA,uBAKE,kBAAmB,CAFnB,YAAa,CADb,WAAY,CAEZ,sBAAuB,CAEvB,iBAAkB,CALlB,UAMF,CACA,oFAIE,eAAgB,CADhB,cAAe,CAEf,kBACF,CAEA,qBACE,WAAY,CACZ,iBACF,CAEA,6BAEE,MAAO,CAGP,SAAU,CADV,mBAAoB,CAHpB,iBAAkB,CAElB,KAAM,CAGN,aACF,CACA,kCAEE,aAAc,CADd,mCAEF,CACA,6BACE,cACF,CACA,oCAEE,qBAAsB,CADtB,cAEF,CACA,4CACE,mCACF,CACA,2BACE,mBAAoB,CACpB,2BACF,CACA,yCACE,mBACF,CAIA,yFACE,mBACF,CACA,aACE,gBACF,CACA,2BAEE,kCAAmC,CAC3B,0BAA2B,CAKnC,WAAY,CAPZ,mBAAoB,CAKpB,oBAAqB,CADrB,iBAAkB,CAElB,UAAW,CAHX,SAKF,CACA,yCACE,mBACF,CACA,sCACE,uBACF,CACA,yFAEE,mBACF,CACA,kGAGE,mBAAoB,CACpB,kBACF,CACA,iCAGE,QAAW,CAEX,WAAY,CAHZ,MAAO,CAIP,UAAY,CALZ,iBAAkB,CAGlB,UAAW,CAGX,SACF,CACA,wCAEE,eAAgB,CAIhB,QAAS,CALT,UAAW,CAOX,iBAAkB,CAJlB,MAAO,CADP,iBAAkB,CAIlB,OAAQ,CAFR,KAIF,CACA,8CACE,mBAAoB,CACpB,kBACF,CAEA,kQAKE,kCAAmC,CAC3B,0BAA2B,CAFnC,SAGF,CAEA,aACE,gBACF,CACA,2BAEE,kCAAmC,CAC3B,0BAA2B,CAFnC,mBAAoB,CAGpB,SACF,CACA,yCACE,mBACF,CACA,yFAEE,mBACF,CAEA,kQAKE,kCAAmC,CAC3B,0BAA2B,CAFnC,SAGF,CAEA,+BACE,kCAAmC,CAC3B,0BAA2B,CACnC,eAAgB,CAChB,4CACF,CACA,cACE,gBACF,CACA,4BAEE,kCAAmC,CAC3B,0BAA2B,CACnC,eAAgB,CAHhB,8BAIF,CAGA,MACE,+BAAgC,CAChC,sEAAwE,CACxE,2DAA4D,CAC5D,2DAA4D,CAC5D,wCAAyC,CACzC,yCAA0C,CAC1C,+CAAgD,CAChD,8CAA+C,CAC/C,uCAAwC,CACxC,oCAAqC,CACrC,uDAA2D,CAC3D,2CAA4C,CAC5C,2CACF,CACA,eAKE,WAAY,CAHZ,MAAO,CADP,iBAAkB,CAElB,KAAM,CACN,UAAW,CAEX,WACF,CACA,mCAEE,8BAAiC,CADjC,uBAEF,CACA,oCAEE,yCAA6C,CAD7C,uBAEF,CACA,iHAEE,wBACF,CACA,sDAEE,wBAA0B,CAD1B,cAEF,CACA,uGAEE,uBACF,CACA,qDACE,gCACF,CACA,kDACE,iCACF,CACA,oBACE,eACF,CACA,6BACE,cACF,CACA,qBACE,eACF,CACA,kBACE,YACF,CACA,wBAKE,iCAAkC,CAFlC,MAAO,CAIP,SAAU,CANV,mBAAoB,CACpB,iBAAkB,CAMlB,uBAA0B,CAJ1B,UAAW,CAEX,UAGF,CACA,uDACE,SACF,CACA,uCACE,kEACF,CACA,kRAGE,+BACF,CACA,8DACE,yFACF,CAIA,oHACE,iDACF,CACA,iCACE,kEAAmE,CACnE,uBACF,CACA,gEACE,uBACF,CACA,0CACE,oEACF,CACA,yEACE,mDACF,CACA,sBACE,oDACF,CACA,8BAEE,WAAY,CADZ,UAEF,CACA,oCAGE,kBAAmB,CADnB,YAAa,CAEb,sBAAuB,CAHvB,UAIF,CACA,0BAIE,iBAAkB,CADlB,aAAc,CADd,UAAW,CAGX,aAAc,CAJd,UAKF,CACA,wCACE,0BAA2B,CAC3B,wBACF,CACA,+CACE,oBACF,CACA,6DACE,yBACF,CACA,uBAIE,QAAS,CAHT,qBAAsB,CAStB,kDAAmD,CACnD,sDAAuD,CANvD,MAAO,CACP,SAAU,CACV,eAAgB,CAJhB,iBAAkB,CAMlB,iBAAkB,CAPlB,uBAA0B,CAM1B,UAIF,CACA,iFACE,6CACE,4EAA6E,CACrE,oEACV,CACF,CACA,6BACE,YACF,CACA,oDACE,SACF,CACA,qDACE,qDACF,CACA,iFAEE,oDACF,CACA,gCAOE,0CAA2C,CAF3C,WAAY,CAHZ,MAAO,CAIP,eAAgB,CALhB,iBAAkB,CAElB,KAAM,CAON,iBAAkB,CAFlB,cAAiB,CACjB,oCAAqC,CALrC,UAOF,CACA,sFAEE,UAAY,CACZ,mBACF,CACA,qBAOE,kBAAmB,CAEnB,qBAAsB,CAJtB,YAAa,CAGb,aAAc,CANd,WAAY,CAIZ,sBAAuB,CAFvB,eAAgB,CADhB,iBAAkB,CAFlB,UASF,CACA,gDACE,YACF,CACA,yBAKE,YAAa,CAHb,WAAY,CAEZ,eAAgB,CADhB,cAAe,CAFf,UAKF,CACA,wMAGE,YACF,CACA,mIAGE,cACF,CACA,mOAGE,aACF,CACA,4BAEE,WAAY,CADZ,UAEF,CACA,gCACE,YAAa,CAGb,WAAY,CAGZ,QAAS,CAFT,iBAAkB,CAClB,gBAAiB,CAJjB,iBAAkB,CAMlB,OAAQ,CALR,UAMF,CACA,4EAIE,aAAc,CADd,WAAY,CADZ,UAGF,CACA,oHAIE,2FACF,CACA,oBACE,iBACF,CACA,yDAIE,sEAAwE,CAFxE,uBAA+B,CAC/B,uBAEF,CACA,6DAEE,4FACF,CACA,0FAEE,SAAU,CAEV,mBAAoB,CADpB,iBAEF,CACA,yKAEE,mDACF,CACA,uDACE,kDACF,CACA,oJAIE,0DACF,CACA,yFAGE,0DAA2D,CAD3D,oDAEF,CACA,8CACE,SAAU,CACV,mBACF,CACA,uEAEE,sBACF,CACA,0EAEE,oDACF,CACA,8KAIE,sBACF,CACA,uJAKE,iDACF,CACA,iKAKE,iDACF,CACA,6GAEE,+CACF,CACA,4BACE,GAEE,SAAU,CADV,iCAEF,CACA,IAEE,SAAU,CADV,mCAEF,CACA,GAEE,SAAU,CADV,gCAEF,CACF,CACA,6BACE,GAEE,SAAU,CADV,gCAEF,CACA,IAEE,SAAU,CADV,mCAEF,CACA,GAEE,SAAU,CADV,iCAEF,CACF,CAEA,MACE,iCAAkC,CAClC,8CAA+C,CAC/C,2CAA4C,CAC5C,0CAA2C,CAC3C,sCACF,CACA,KACE,4BAA6B,CAC7B,yCAA0C,CAC1C,uCAAwC,CACxC,oCAAqC,CACrC,+DAAmE,CACnE,gCAAiC,CACjC,sCAAuC,CACvC,gDAAiD,CACjD,uCAAwC,CACxC,uCAAwC,CACxC,6CAA8C,CAC9C,4CAA6C,CAC7C,yCAA0C,CAC1C,0CAA2C,CAC3C,qCAAsC,CACtC,sCAAuC,CACvC,iDAAqD,CACrD,0CAA6C,CAC7C,kCAAmC,CACnC,oDAAwD,CACxD,qCAAsC,CACtC,iCACF,CACA,qBAEE,8CAAkD,CAClD,uCAA0C,CAC1C,kCAAmC,CACnC,iCAAkC,CAClC,qCAAsC,CACtC,0DACF,CACA,IACE,6BAA8B,CAC9B,uCAAwC,CACxC,yCAA0C,CAC1C,oCAAqC,CACrC,iCAAkC,CAClC,gCAAiC,CACjC,sCAAuC,CACvC,2CAA4C,CAC5C,wCAAyC,CACzC,uCAAwC,CACxC,4CAA6C,CAC7C,yCAA0C,CAC1C,0CAA2C,CAC3C,qCAAsC,CACtC,uCACF,CACA,kCAGE,qDAAsD,CACtD,iDAAkD,CAClD,4DAA6D,CAC7D,mEAAoE,CACpE,wDACF,CACA,cAiBE,0CAA2C,CAT3C,WAAY,CAOZ,kDAAmD,CACnD,4CAA6C,CAN7C,qBAAsB,CAEtB,aAAc,CAHd,YAAa,CAHb,cAAe,CAJf,kCAAmC,CAKnC,QAAS,CAWT,kCAAmC,CALnC,0CAA2C,CAC3C,yFAA0F,CAb1F,iBAAkB,CAElB,iCAAkC,CAQlC,6BAA8B,CAP9B,kDAAqD,CACrD,aAcF,CACA,iFACE,sCAEE,iDAAkD,CAC1C,yCAA0C,CAFlD,6DAGF,CACF,CACA,yBACE,cACE,QAAS,CAET,uDAA4D,CAD5D,sCAEF,CACF,CACA,oBACE,8DAAgE,CAChE,gDAAiD,CAGjD,oDAAqD,CACrD,0DAA2D,CAF3D,oDAAqD,CADrD,0DAIF,CACA,uBACE,2CAA4C,CAC5C,mDAAoD,CAGpD,uDAAwD,CADxD,uDAAwD,CADxD,6DAGF,CACA,mBACE,uCAAwC,CACxC,+CAAgD,CAGhD,mDAAoD,CADpD,mDAAoD,CADpD,yDAGF,CACA,+BACE,8CAA+C,CAC/C,sDACF,CACA,mBACE,WAAY,CACZ,4CACF,CACA,wCAGE,iDAAmD,CADnD,gDAEF,CACA,qBACE,0CACF,CACA,uBACE,uCACF,CACA,qBAGE,kBAAmB,CAFnB,YAAa,CACb,0BAEF,CACA,2BAEE,cAAe,CADf,gBAAiB,CAEjB,iBACF,CACA,iCAQE,gBAAiB,CAEjB,kCAAmC,CAEnC,iCAAkC,CAClC,4BAA6B,CAJ7B,aAAc,CAKd,aAAc,CAbd,iCAAoC,CAgBpC,cAAe,CAdf,iBAAkB,CADlB,eAAmB,CAcnB,WAAY,CAGZ,QAAS,CAdT,qBAAsB,CADtB,aAAc,CAcd,iBAAkB,CAGlB,iBAAkB,CAVlB,iCAAkC,CALlC,mBAAoB,CAcpB,OAAQ,CAbR,kBAAmB,CAQnB,UAOF,CACA,mBAEE,gCAAoC,CADpC,wBAEF,CACA,4BAEE,SAAU,CADV,uBAEF,CACA,6BACE,gCACF,CACA,wBACE,gBACF,CACA,gDACE,eACF,CACA,oCAEE,gBAAiB,CADjB,gBAEF,CACA,+DACE,gBACF,CACA,gCACE,cAAe,CAEf,WAAY,CACZ,UAAY,CACZ,uBAA0B,CAH1B,UAIF,CACA,6CAEE,UAAY,CADZ,uBAEF,CACA,sCACE,UAAW,CACX,gCAAiC,CACjC,eAAiB,CAGjB,WAAY,CAFZ,gBAAiB,CAGjB,iBAAkB,CAClB,gBAAiB,CAHjB,UAIF,CACA,uFAEE,UACF,CACA,kBACE,gCACF,CACA,2BAEE,uBAAgC,CADhC,uBAA0B,CAE1B,mDACF,CACA,sDACE,uBACF,CACA,4BACE,cAAe,CAGf,gCAAmC,CAFnC,uBAA0B,CAC1B,kCAEF,CACA,+CAEE,8CAA+C,CAD/C,iBAAkB,CAElB,2CACF,CACA,mGAEE,yDACF,CACA,uBACE,gBACF,CACA,8CACE,cACF,CACA,+CACE,cACF,CACA,mCACE,eACF,CACA,0CAQE,mDAAoD,CAJpD,iBAAkB,CAHlB,UAAW,CAIX,oBAAqB,CAFrB,UAAW,CAIX,gBAAiB,CADjB,qBAAsB,CAJtB,SAOF,CACA,+BAEE,WAAY,CACZ,uBAA0B,CAF1B,UAGF,CACA,2EAGE,WAAY,CACZ,QAAS,CAET,iBAAkB,CAClB,gBAAiB,CAFjB,OAAQ,CAHR,UAMF,CACA,qCACE,qCAAsC,CACtC,yBAA0B,CAE1B,cAAe,CADf,gBAEF,CACA,8BACE,GACE,gCACF,CACA,IACE,8BACF,CACA,GACE,uBACF,CACF,CAEA,MACE,oDAAqD,CACrD,8CAA+C,CAC/C,6DAIF,CACA,KACE,iEAAqE,CACrE,wDAAyD,CACzD,wCAAyC,CACzC,0CAA2C,CAC3C,mDACF,CACA,qBAEE,2CAA4C,CAC5C,0CAA2C,CAC3C,mDACF,CACA,IACE,0CAA2C,CAC3C,wDAAyD,CACzD,mDACF,CACA,mBAEE,mDACF,CACA,kCAGE,0DAA2D,CAC3D,6DACF,CACA,uCACE,aACF,CACA,2CACE,YACF,CACA,wCACE,aACF,CACA,kCACE,YACF,CACA,6DACE,iBACF,CACA,4HAEE,cACF,CACA,uBACE,mDAAoD,CACpD,qDAAsD,CACtD,qBAAsB,CACtB,iBAAkB,CAGlB,OAAQ,CADR,UAAW,CADX,WAGF,CACA,oDAGE,gCAAiC,CACjC,WAAY,CAFZ,aAAc,CADd,iBAAkB,CAIlB,SACF,CACA,+CAGE,WAAY,CAFZ,YAAa,CAIb,qDAAsD,CAHtD,iBAAkB,CAElB,oDAEF,CACA,uDACE,aACF,CACA,0DACE,uDACF,CACA,6BAEE,gDAAiD,CACjD,mDAAoD,CAFpD,QAGF,CACA,+BACE,yDAA0D,CAC1D,qEACF,CACA,gCACE,yBACF,CACA,6EAEE,sBACF,CACA,uDACE,+FACF,CACA,6CACE,gFAAkF,CAClF,qDAAsD,CACtD,oDAAuD,CACvD,QAAS,CACT,UACF,CACA,0EACE,4CACF,CACA,gFACE,2CACF,CACA,2DACE,iGAAkG,CAElG,eAAgB,CADhB,iBAEF,CACA,2DACE,oHACF,CACA,oDACE,SAAU,CACV,kBACF,CACA,uDACE,eACF,CACA,wDAEE,gBAAiB,CADjB,gBAEF,CACA,mDACE,SAAU,CACV,iBACF,CACA,0DACE,cACF,CAEA,MACE,6BAA8B,CAC9B,2BAA4B,CAC5B,4BAA6B,CAC7B,oCAAqC,CACrC,mCACF,CACA,KACE,8BAA+B,CAC/B,sCAA0C,CAC1C,4BACF,CACA,IACE,8BACF,CACA,kCAGE,4CAA6C,CAC7C,iDACF,CACA,SAGE,qCAAsC,CACtC,6CAA8C,CAK9C,qBAAsB,CAHtB,kCAAmC,CACnC,qCAAsC,CACtC,yCAA0C,CAE1C,eAAgB,CAChB,SAAU,CANV,iCAAkC,CAJlC,iBAAkB,CAWlB,mBAAqB,CACrB,wBAA0B,CAC1B,qCAAuC,CAZvC,aAAc,CAad,aACF,CACA,oBAEE,SAAU,CADV,kBAEF,CACA,qBACE,SAAU,CACV,kBACF,CACA,yBACE,6CAA8C,CAC9C,yCACF,CAEA,OAKE,oBAAqB,CAFrB,gBAAiB,CACjB,iBAAkB,CAHlB,iBAAkB,CAClB,iBAIF,CACA,sBAGE,WAAY,CADZ,cAEF,CACA,oEAIE,uBACF,CAOA,gBAEE,0CAA4C,CAE5C,aAAc,CAHd,UAAW,CAEX,UAEF,CAEA,WAKE,kBAAmB,CAJnB,oBAAuB,CAGvB,wBAA0B,CAD1B,+CAAwD,CADxD,0kEAIF,CACA,eACE,8BAAkC,CAClC,wBAAyB,CACjB,gBACV,CACA,gCACE,qCAAuC,CACvC,+BACF,CAEA,gBACE,oBACF,CACA,oBAEE,WAAY,CADZ,cAEF,CACA,wBACE,0BACF,CACA,qBACE,+BACF,CAEA,iBACE,oBACF,CACA,qBAEE,WAAY,CADZ,cAEF,CACA,sBACE,0BACF,CACA,sBACE,+BACF,CAEA,6CASE,0CAA2C,CAR3C,uFAAqG,CACrG,+EAA6F,CAK7F,6BAA8B,CAC9B,qBAAsB,CAHtB,0BAA2B,CAC3B,kBAAmB,CAHnB,2BAA4B,CAC5B,mBAMF,CACA,sBACE,0CACF,CACA,uBACE,2CACF,CAEA,gCACE,GACE,SACF,CACA,IACE,UACF,CACA,GACE,SACF,CACF,CACA,gCACE,GACE,6BAA8B,CAC9B,qBACF,CACA,GACE,+BAAgC,CAChC,uBACF,CACF,CACA,iCACE,GACE,kBACF,CACA,IACE,kBACF,CACA,IACE,qBACF,CACA,GACE,kBACF,CACF,CACA,MACE,qBAAsB,CACtB,sCACF,CACA,MACE,wBAAyB,CACzB,4CACF,CAEA,MACE,qCAAsC,CACtC,iCAAkC,CAClC,uCAAwC,CACxC,+BAAgC,CAChC,sCAAuC,CACvC,kCAAmC,CACnC,mCAAoC,CACpC,sCAAuC,CACvC,yCAA0C,CAC1C,sCAAuC,CACvC,sCAAuC,CACvC,kCAAmC,CACnC,mCAAoC,CACpC,0CAA2C,CAC3C,8CAA+C,CAC/C,mCAAoC,CACpC,0CAA2C,CAC3C,2CAA4C,CAC5C,mDAAoD,CACpD,yDAA0D,CAC1D,qCAAsC,CACtC,qCAAsC,CACtC,iDAAqD,CACrD,iDAAqD,CACrD,2CACF,CACA,uBAEE,wCAAyC,CACzC,wCAAyC,CACzC,sDAA0D,CAC1D,qCAAsC,CACtC,6DACF,CACA,cAGE,YAAa,CACb,qBAAsB,CAHtB,eAAgB,CAChB,UAGF,CACA,wGAGE,iBACF,CACA,0BACE,gDACF,CACA,iCACE,WACF,CACA,6CACE,wCACF,CACA,0BACE,gDACF,CACA,kCACE,yCACF,CACA,uGAGE,WACF,CACA,kIAGE,iBACF,CACA,sBAGE,eAAgB,CADhB,cAAe,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CA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,gBACE,wBACF,CACA,oBACE,4BACF,CACA,4BACE,oCACF,CACA,uBACE,+BACF,CACA,+BACE,uCACF,CACA,4BACE,oCACF,CACA,wBACE,gCACF,CACA,0BACE,kCACF,CACA,+BACE,uCACF,CACA,8BACE,sCACF,CACA,8BACE,sCACF,CACA,yBACE,iCACF,CACA,uBACE,+BACF,CACA,qBACE,6BACF,CACA,sBACE,8BACF,CACA,uBACE,+BACF,CACA,0BACE,kCACF,CACA,wBACE,gCACF,CACA,sBACE,8BACF,CACA,6BACE,qCACF,CACA,4BACE,oCACF,CACA,uBACE,+BACF,CACA,sBACE,8BACF,CACA,wBACE,gCACF,CACA,sBACE,8BACF,CACA,oBACE,4BACF,CACA,qBACE,6BACF,CACA,uBACE,+BACF,CACA,qBACE,6BACF,CACA,mBACE,2BACF,CACA,oBACE,4BACF,CACA,iBACE,yBACF,CACA,mBACE,2BACF,CACA,kBACE,0BACF,CACA,oBACE,4BACF,CACA,YACE,oBACF,CACA,aACE,qBACF,CACA,YACE,oBACF,CACA,uBACE,+BACF,CACA,uBACE,+BACF,CACA,oBACE,4BACF,CACA,YACE,mBACF,CACA,iBACE,wBACF,CAIA,yCAFE,yBAKF,CAHA,uBACE,wBAEF,CACA,gBACE,uBACF,CAIA,wCAFE,0BAKF,CAHA,qBACE,uBAEF,CACA,WACE,kBACF,CACA,gBACE,uBACF,CAIA,uCAFE,wBAKF,CAHA,sBACE,uBAEF,CACA,eACE,sBACF,CAIA,sCAFE,yBAKF,CAHA,oBACE,sBAEF,CACA,YACE,oBACF,CACA,WACE,oBACF,CACA,SACE,8CACF,CACA,cACE,sDACF,CACA,aACE,kDACF,CACA,kBACE,0DACF,CACA,gBACE,qDACF,CACA,qBACE,6DACF,CACA,cACE,mDACF,CACA,mBACE,2DACF,CACA,eACE,oDACF,CACA,oBACE,4DACF,CACA,kBAEE,qDAAuD,CADvD,kDAEF,CACA,uBAEE,6DAAiE,CADjE,0DAEF,CACA,oBACE,mDAAqD,CACrD,oDACF,CACA,yBACE,2DAA+D,CAC/D,4DACF,CACA,QACE,4CACF,CACA,aACE,oDACF,CACA,YACE,gDACF,CACA,iBACE,wDACF,CACA,eACE,mDACF,CACA,oBACE,2DACF,CACA,aACE,iDACF,CACA,kBACE,yDACF,CACA,cACE,kDACF,CACA,mBACE,0DACF,CACA,iBAEE,mDAAqD,CADrD,gDAEF,CACA,sBAEE,2DAA+D,CAD/D,wDAEF,CACA,mBACE,iDAAmD,CACnD,kDACF,CACA,wBACE,yDAA6D,CAC7D,0DACF,CACA,qBACE,gDACF,CACA,mBACE,yDACF,CACA,uBACE,yDACF","file":"../../documenteditor/mobile/css/framework7-rtl.css","sourcesContent":["/**\n * Framework7 8.3.2\n * Full featured mobile HTML framework for building iOS & Android apps\n * https://framework7.io/\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 27, 2024\n */\n\n/*====================\n Core\n ==================== */\n:root {\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n --f7-safe-area-top: 0px;\n --f7-safe-area-bottom: 0px;\n --f7-safe-area-outer-left: 0px;\n --f7-safe-area-outer-right: 0px;\n --f7-device-pixel-ratio: 1;\n}\n@supports (left: env(safe-area-inset-left)) {\n :root {\n --f7-safe-area-top: env(safe-area-inset-top);\n --f7-safe-area-bottom: env(safe-area-inset-bottom);\n }\n :root .ios-left-edge,\n :root .ios-edges,\n :root .safe-area-left,\n :root .safe-areas,\n :root .popup,\n :root .sheet-modal,\n :root .panel-left {\n --f7-safe-area-left: env(safe-area-inset-left);\n --f7-safe-area-outer-left: env(safe-area-inset-left);\n }\n :root .ios-right-edge,\n :root .ios-edges,\n :root .safe-area-right,\n :root .safe-areas,\n :root .popup,\n :root .sheet-modal,\n :root .panel-right {\n --f7-safe-area-right: env(safe-area-inset-right);\n --f7-safe-area-outer-right: env(safe-area-inset-right);\n }\n :root .no-safe-areas,\n :root .no-safe-area-left,\n :root .no-ios-edges,\n :root .no-ios-left-edge {\n --f7-safe-area-left: 0px;\n --f7-safe-area-outer-left: 0px;\n }\n :root .no-safe-areas,\n :root .no-safe-area-right,\n :root .no-ios-edges,\n :root .no-ios-right-edge {\n --f7-safe-area-right: 0px;\n --f7-safe-area-outer-right: 0px;\n }\n}\n@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 2dppx) {\n :root {\n --f7-device-pixel-ratio: 2;\n }\n}\n@media (-webkit-min-device-pixel-ratio: 3), (min-resolution: 3dppx) {\n :root {\n --f7-device-pixel-ratio: 3;\n }\n}\n/*====================\n Fonts & Bars\n ==================== */\n:root {\n --f7-font-size: 14px;\n --f7-bars-translucent-opacity: 0.8;\n --f7-bars-translucent-blur: 20px;\n}\n.ios {\n --f7-font-family: -apple-system, SF Pro Text, SF UI Text, system-ui, Helvetica Neue, Helvetica, Arial, sans-serif;\n --f7-line-height: 1.4;\n /*\n --f7-bars-link-color: var(--f7-theme-color);\n */\n --f7-bars-text-color: #000;\n --f7-text-color: #000;\n --f7-bars-bg-color: #f7f7f8;\n --f7-bars-bg-color-rgb: 247, 247, 248;\n --f7-bars-border-color: rgba(0, 0, 0, 0.25);\n}\n.ios .dark,\n.ios.dark {\n --f7-bars-text-color: #fff;\n --f7-text-color: #fff;\n --f7-bars-bg-color: #121212;\n --f7-bars-bg-color-rgb: 22, 22, 22;\n --f7-bars-border-color: rgba(255, 255, 255, 0.16);\n}\n.md {\n --f7-font-family: Roboto, system-ui, Noto, Helvetica, Arial, sans-serif;\n --f7-line-height: 1.5;\n --f7-bars-border-color: transparent;\n --f7-text-color: #212121;\n}\n.md .dark,\n.md.dark {\n --f7-text-color: rgba(255, 255, 255, 0.87);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-bars-link-color: var(--f7-md-on-surface);\n --f7-bars-bg-color: var(--f7-md-surface-2);\n --f7-bars-bg-color-rgb: var(--f7-md-surface-2-rgb);\n}\n/*====================\n Color Themes\n ==================== */\n.text-color-primary {\n --f7-theme-color-text-color: var(--f7-theme-color);\n}\n.bg-color-primary {\n --f7-theme-color-bg-color: var(--f7-theme-color);\n}\n.border-color-primary {\n --f7-theme-color-border-color: var(--f7-theme-color);\n}\n.ripple-color-primary {\n --f7-theme-color-ripple-color: rgba(var(--f7-theme-color-rgb), 0.3);\n}\n@font-face {\n font-family: 'framework7-core-icons';\n src: url('data:application/font-woff;charset=utf-8;base64, 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') format('woff');\n font-weight: 400;\n font-style: normal;\n}\nhtml {\n overscroll-behavior: none;\n}\nhtml {\n direction: rtl;\n}\nhtml,\nbody,\n.framework7-root {\n position: relative;\n height: 100%;\n width: 100%;\n overflow-x: hidden;\n}\nbody {\n margin: 0;\n padding: 0;\n width: 100%;\n background: #fff;\n overflow: hidden;\n overflow-y: scroll;\n -webkit-text-size-adjust: 100%;\n -webkit-font-smoothing: antialiased;\n font-family: var(--f7-font-family);\n font-size: var(--f7-font-size);\n line-height: var(--f7-line-height);\n color: var(--f7-text-color);\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\nbody::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\nbody::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\nbody::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.dark body,\nbody.dark {\n background: #000;\n}\n.dark {\n color: var(--f7-text-color);\n}\n.framework7-root {\n overflow: hidden;\n box-sizing: border-box;\n}\n.framework7-initializing *,\n.framework7-initializing *:before,\n.framework7-initializing *:after {\n transition-duration: 0ms !important;\n}\n.device-ios,\n.device-android {\n cursor: pointer;\n}\n.device-ios {\n touch-action: manipulation;\n}\n@media (width: 1024px) and (height: 691px) and (orientation: landscape) {\n html,\n body,\n .framework7-root {\n height: 671px;\n }\n}\n@media (width: 1024px) and (height: 692px) and (orientation: landscape) {\n html,\n body,\n .framework7-root {\n height: 672px;\n }\n}\n* {\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n -webkit-touch-callout: none;\n}\na,\ninput,\ntextarea,\nselect {\n outline: 0;\n}\na {\n cursor: pointer;\n text-decoration: none;\n color: var(--f7-theme-color);\n}\n.link,\n.item-link {\n cursor: pointer;\n}\np {\n margin: 1em 0;\n}\n.disabled {\n opacity: 0.55 !important;\n pointer-events: none !important;\n}\nhtml.device-full-viewport,\nhtml.device-full-viewport body {\n height: 100vh;\n}\n.ios .md-only,\n.ios .if-md,\n.ios .if-not-ios,\n.ios .not-ios {\n display: none !important;\n}\n@media (width: 1024px) and (height: 691px) and (orientation: landscape) {\n .ios,\n .ios body,\n .ios .framework7-root {\n height: 671px;\n }\n}\n@media (width: 1024px) and (height: 692px) and (orientation: landscape) {\n .ios,\n .ios body,\n .ios .framework7-root {\n height: 672px;\n }\n}\n.md .ios-only,\n.md .if-ios,\n.md .if-not-md,\n.md .not-md {\n display: none !important;\n}\n/* === Statusbar === */\n/* === Views === */\n.views,\n.view {\n position: relative;\n height: 100%;\n z-index: 5000;\n overflow: hidden;\n box-sizing: border-box;\n}\n.framework7-root > .view,\n.framework7-root > .views {\n height: 100%;\n}\n.view-resize-handler {\n width: 6px;\n height: 100%;\n position: absolute;\n left: var(--f7-page-master-width);\n margin-left: -3px;\n top: 0;\n cursor: col-resize;\n z-index: 1000;\n display: none;\n}\n.view-master-detail .view-resize-handler {\n display: block;\n}\n/* === Pages === */\n:root {\n --f7-page-master-width: 320px;\n --f7-page-master-border-color: rgba(0, 0, 0, 0.1);\n --f7-page-master-border-width: 1px;\n --f7-page-swipeback-transition-duration: 300ms;\n --f7-page-parallax-transition-duration: 500ms;\n --f7-page-cover-transition-duration: 450ms;\n --f7-page-dive-transition-duration: 500ms;\n --f7-page-fade-transition-duration: 500ms;\n --f7-page-flip-transition-duration: 700ms;\n --f7-page-push-transition-duration: 500ms;\n /*\n --f7-page-content-extra-padding-top: 0px;\n --f7-page-content-extra-padding-bottom: 0px;\n */\n --f7-page-title-line-height: 1.2;\n --f7-page-title-text-color: inherit;\n --f7-page-title-padding-left: 16px;\n --f7-page-title-padding-right: 16px;\n}\n.ios {\n --f7-page-transition-duration: 400ms;\n --f7-page-title-font-size: 34px;\n --f7-page-title-font-weight: 700;\n --f7-page-title-letter-spacing: -0.03em;\n --f7-page-title-padding-vertical: 6px;\n --f7-page-bg-color: #efeff4;\n}\n.ios .dark,\n.ios.dark {\n --f7-page-bg-color: #000;\n}\n.md {\n --f7-page-transition-duration: 400ms;\n --f7-page-title-font-size: 34px;\n --f7-page-title-font-weight: 500;\n --f7-page-title-letter-spacing: 0;\n --f7-page-title-padding-vertical: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-page-bg-color: var(--f7-md-surface);\n}\n.dark {\n --f7-page-master-border-color: rgba(255, 255, 255, 0.2);\n}\n.pages {\n position: relative;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n.page {\n box-sizing: border-box;\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n transform: none;\n background-color: var(--f7-page-bg-color);\n z-index: 1;\n}\n.page-with-navbar-large-collapsed {\n --f7-navbar-large-collapse-progress: 1;\n}\n.page-previous {\n pointer-events: none;\n}\n.page-content {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n box-sizing: border-box;\n height: 100%;\n position: relative;\n z-index: 1;\n padding-top: calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-toolbar-top-offset, 0px) + var(--f7-page-subnavbar-offset, 0px) + var(--f7-page-searchbar-offset, 0px) + var(--f7-page-content-extra-padding-top, 0px));\n padding-bottom: calc(var(--f7-page-toolbar-bottom-offset, 0px) + var(--f7-safe-area-bottom) + var(--f7-page-content-extra-padding-bottom, 0px));\n}\n.page-transitioning,\n.page-transitioning .page-shadow-effect,\n.page-transitioning .page-opacity-effect {\n transition-duration: var(--f7-page-transition-duration);\n}\n.page-transitioning-swipeback,\n.page-transitioning-swipeback .page-shadow-effect,\n.page-transitioning-swipeback .page-opacity-effect {\n transition-duration: var(--f7-page-swipeback-transition-duration);\n}\n.router-transition-forward .page-next,\n.router-transition-backward .page-next,\n.router-transition-forward .page-current,\n.router-transition-backward .page-current {\n pointer-events: none;\n}\n.page-shadow-effect {\n position: absolute;\n top: 0;\n width: 16px;\n bottom: 0;\n z-index: -1;\n content: '';\n opacity: 0;\n left: 100%;\n background: linear-gradient(to left, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);\n}\n.page-opacity-effect {\n position: absolute;\n left: 0;\n top: 0;\n background: rgba(0, 0, 0, 0.1);\n width: 100%;\n bottom: 0;\n content: '';\n opacity: 0;\n z-index: 10000;\n}\n.ios .page-previous {\n transform: translate3d(20%, 0, 0);\n}\n.ios .page-next {\n transform: translate3d(-100%, 0, 0);\n}\n.ios .page-previous .page-opacity-effect {\n opacity: 1;\n}\n.ios .page-previous:after {\n opacity: 1;\n}\n.ios .page-current .page-shadow-effect {\n opacity: 1;\n}\n.ios .router-transition-forward .page-next {\n animation: ios-page-next-to-current var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .page-next:before {\n position: absolute;\n top: 0;\n width: 16px;\n bottom: 0;\n z-index: -1;\n content: '';\n opacity: 0;\n left: 100%;\n background: linear-gradient(to left, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);\n animation: ios-page-element-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .page-current {\n animation: ios-page-current-to-previous var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .page-current:after {\n position: absolute;\n left: 0;\n top: 0;\n background: rgba(0, 0, 0, 0.1);\n width: 100%;\n bottom: 0;\n content: '';\n opacity: 0;\n z-index: 10000;\n animation: ios-page-element-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-previous {\n animation: ios-page-previous-to-current var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-previous:after {\n position: absolute;\n left: 0;\n top: 0;\n background: rgba(0, 0, 0, 0.1);\n width: 100%;\n bottom: 0;\n content: '';\n opacity: 0;\n z-index: 10000;\n animation: ios-page-element-fade-out var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-current {\n animation: ios-page-current-to-next var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-current:before {\n position: absolute;\n top: 0;\n width: 16px;\n bottom: 0;\n z-index: -1;\n content: '';\n opacity: 0;\n left: 100%;\n background: linear-gradient(to left, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);\n animation: ios-page-element-fade-out var(--f7-page-transition-duration) forwards;\n}\n@keyframes ios-page-next-to-current {\n from {\n transform: translate3d(-100%, 0, 0);\n }\n to {\n transform: translate3d(0%, 0, 0);\n }\n}\n@keyframes ios-page-previous-to-current {\n from {\n transform: translate3d(20%, 0, 0);\n }\n to {\n transform: translate3d(0%, 0, 0);\n }\n}\n@keyframes ios-page-current-to-previous {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(20%, 0, 0);\n }\n}\n@keyframes ios-page-current-to-next {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(-100%, 0, 0);\n }\n}\n@keyframes ios-page-element-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes ios-page-element-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n.md .page-previous {\n transform: translate3d(0, -20px, 0);\n}\n.md .page-next {\n pointer-events: none;\n transform: translate3d(0, 128px, 0);\n opacity: 0;\n}\n.md .page-next.page-next-on-right {\n transform: translate3d(-100%, 0, 0);\n opacity: 1;\n}\n.md .router-transition-forward .page-next {\n opacity: 1;\n animation: md-page-next-to-current var(--f7-page-transition-duration) forwards cubic-bezier(0, 0.8, 0.3, 1);\n}\n.md .router-transition-forward .page-current {\n animation: md-page-current-to-previous var(--f7-page-transition-duration) forwards cubic-bezier(0, 0.8, 0.3, 1);\n}\n.md .router-transition-backward .page-current {\n animation: md-page-current-to-next calc(var(--f7-page-transition-duration) / 4) forwards cubic-bezier(0.8, 0, 1, 0.3), md-page-current-to-next-opacity 0ms calc(var(--f7-page-transition-duration) / 4) forwards;\n}\n.md .router-transition-backward .page-previous {\n animation: md-page-previous-to-current var(--f7-page-transition-duration) forwards;\n}\n@keyframes md-page-next-to-current {\n from {\n transform: translate3d(0, 128px, 0);\n }\n to {\n transform: translate3d(0, 0px, 0);\n }\n}\n@keyframes md-page-current-to-next {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(0, 128px, 0);\n }\n}\n@keyframes md-page-current-to-next-opacity {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes md-page-current-to-previous {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(0, -20px, 0);\n }\n}\n@keyframes md-page-previous-to-current {\n from {\n transform: translate3d(0, -20px, 0);\n }\n to {\n transform: translate3d(0, 0px, 0);\n }\n}\n.view:not(.view-master-detail) .page-master-stacked {\n display: none;\n}\n.view:not(.view-master-detail) .navbar-master-stacked {\n display: none;\n}\n.view-master-detail .page-master,\n.view-master-detail .navbar-master {\n width: var(--f7-page-master-width);\n left: auto;\n right: 0;\n --f7-safe-area-left: 0px;\n --f7-safe-area-outer-left: 0px;\n border-left: var(--f7-page-master-border-width) solid var(--f7-page-master-border-color);\n}\n.view-master-detail .page-master-detail,\n.view-master-detail .navbar-master-detail {\n width: calc(100% - var(--f7-page-master-width));\n --f7-safe-area-right: 0px;\n --f7-safe-area-outer-right: 0px;\n right: var(--f7-page-master-width);\n}\n.view-master-detail .page-master-detail > .navbar-master-detail {\n left: 0;\n right: 0;\n width: 100%;\n}\n.view-master-detail .page-master {\n z-index: 2;\n transform: none;\n pointer-events: auto;\n}\n.view-master-detail .page-master:before,\n.view-master-detail .page-master:after {\n display: none;\n}\n.view-master-detail.router-transition .page-master {\n animation: none;\n}\n.md .router-transition-custom .page-previous,\n.ios .router-transition-custom .page-previous,\n.md .router-transition-custom .page-next,\n.ios .router-transition-custom .page-next {\n opacity: 1;\n transform: none;\n}\n.md .router-transition-custom.view-master-detail .page-master,\n.ios .router-transition-custom.view-master-detail .page-master {\n animation: none;\n}\n.page-title {\n position: relative;\n z-index: 10;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--f7-page-title-text-color);\n letter-spacing: var(--f7-page-title-letter-spacing);\n font-size: var(--f7-page-title-font-size);\n font-weight: var(--f7-page-title-font-weight);\n line-height: var(--f7-page-title-line-height);\n padding-left: calc(var(--f7-page-title-padding-left) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-page-title-padding-right) + var(--f7-safe-area-right));\n padding-top: var(--f7-page-title-padding-vertical);\n padding-bottom: var(--f7-page-title-padding-vertical);\n box-sizing: border-box;\n overflow: hidden;\n width: 100%;\n}\n.router-transition-f7-circle-forward:after,\n.router-transition-f7-circle-backward:after {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n width: 100vmax;\n height: 100vmax;\n margin-left: -50vmax;\n margin-top: -50vmax;\n background: var(--f7-page-bg-color);\n z-index: 100;\n}\n.router-transition-f7-circle-forward .page,\n.router-transition-f7-circle-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-circle-forward:after {\n transform: scale(0);\n border-radius: 50%;\n animation: f7-circle-circle-in 400ms forwards;\n}\n.ios .router-transition-f7-circle-forward .page-next,\n.md .router-transition-f7-circle-forward .page-next {\n opacity: 0;\n transform: scale(0.9);\n animation: f7-circle-next-to-current 300ms forwards;\n animation-delay: 300ms;\n z-index: 150;\n}\n.router-transition-f7-circle-backward:after {\n animation: f7-circle-circle-out 300ms forwards;\n animation-delay: 350ms;\n}\n.ios .router-transition-f7-circle-backward .page-current,\n.md .router-transition-f7-circle-backward .page-current {\n animation: f7-circle-current-to-next 700ms forwards;\n z-index: 150;\n}\n@keyframes f7-circle-circle-in {\n from {\n transform: scale(0);\n border-radius: 50%;\n }\n 50% {\n border-radius: 50%;\n }\n to {\n transform: scale(1);\n border-radius: 0%;\n }\n}\n@keyframes f7-circle-circle-out {\n from {\n transform: scale(1);\n border-radius: 0%;\n }\n 50% {\n border-radius: 50%;\n }\n to {\n transform: scale(0);\n border-radius: 50%;\n }\n}\n@keyframes f7-circle-next-to-current {\n from {\n transform: scale(0.9);\n opacity: 0;\n }\n 40% {\n transform: scale(1.035);\n opacity: 1;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n@keyframes f7-circle-current-to-next {\n from {\n transform: scale(1);\n opacity: 1;\n }\n 34% {\n transform: scale(1.035);\n opacity: 1;\n }\n 57% {\n transform: scale(0.9);\n opacity: 0;\n }\n to {\n transform: scale(0.9);\n opacity: 0;\n }\n}\n.router-transition-f7-cover-v-forward,\n.router-transition-f7-cover-v-backward {\n background: #000;\n perspective: 1200px;\n}\n.router-transition-f7-cover-v-forward .page,\n.router-transition-f7-cover-v-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-cover-v-forward .page-next {\n animation: f7-cover-v-next-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-v-forward .page-current {\n animation: f7-cover-v-current-to-prev var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-v-backward .page-current {\n animation: f7-cover-v-current-to-next var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-v-backward .page-previous {\n animation: f7-cover-v-prev-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n@keyframes f7-cover-v-next-to-current {\n from {\n transform: translateY(100%);\n }\n to {\n transform: translateY(0%);\n }\n}\n@keyframes f7-cover-v-current-to-next {\n from {\n transform: translateY(0%);\n }\n to {\n transform: translateY(100%);\n }\n}\n@keyframes f7-cover-v-current-to-prev {\n from {\n transform: translateZ(0);\n opacity: 1;\n }\n to {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n}\n@keyframes f7-cover-v-prev-to-current {\n from {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n to {\n transform: translateZ(0);\n opacity: 1;\n }\n}\n.router-transition-f7-cover-forward,\n.router-transition-f7-cover-backward {\n background: #000;\n perspective: 1200px;\n}\n.router-transition-f7-cover-forward .page,\n.router-transition-f7-cover-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-cover-forward .page-next {\n animation: f7-cover-next-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-forward .page-current {\n animation: f7-cover-current-to-prev var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-backward .page-current {\n animation: f7-cover-current-to-next var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-backward .page-previous {\n animation: f7-cover-prev-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n@keyframes f7-cover-next-to-current {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n@keyframes f7-cover-current-to-next {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(-100%);\n }\n}\n@keyframes f7-cover-current-to-prev {\n from {\n transform: translateZ(0);\n opacity: 1;\n }\n to {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n}\n@keyframes f7-cover-prev-to-current {\n from {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n to {\n transform: translateZ(0);\n opacity: 1;\n }\n}\n.router-transition-f7-dive-forward,\n.router-transition-f7-dive-backward {\n background: var(--f7-page-bg-color);\n perspective: 1200px;\n}\n.router-transition-f7-dive-forward .page,\n.router-transition-f7-dive-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-dive-forward .page-next {\n animation: f7-dive-next-to-current var(--f7-page-dive-transition-duration) forwards;\n}\n.router-transition-f7-dive-forward .page-current {\n animation: f7-dive-current-to-prev var(--f7-page-dive-transition-duration) forwards;\n}\n.router-transition-f7-dive-backward .page-current {\n animation: f7-dive-current-to-next var(--f7-page-dive-transition-duration) forwards;\n}\n.router-transition-f7-dive-backward .page-previous {\n animation: f7-dive-prev-to-current var(--f7-page-dive-transition-duration) forwards;\n}\n@keyframes f7-dive-next-to-current {\n from {\n opacity: 0;\n transform: translateZ(-150px);\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 1;\n transform: translateZ(0px);\n }\n}\n@keyframes f7-dive-current-to-next {\n from {\n opacity: 1;\n transform: translateZ(0px);\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 0;\n transform: translateZ(-150px);\n }\n}\n@keyframes f7-dive-current-to-prev {\n from {\n transform: translateZ(0px);\n opacity: 1;\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 0;\n transform: translateZ(150px);\n }\n}\n@keyframes f7-dive-prev-to-current {\n from {\n opacity: 0;\n transform: translateZ(150px);\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 1;\n transform: translateZ(0px);\n }\n}\n.router-transition-f7-fade-forward,\n.router-transition-f7-fade-backward {\n background: var(--f7-page-bg-color);\n}\n.router-transition-f7-fade-forward .page,\n.router-transition-f7-fade-backward .page {\n pointer-events: none;\n}\n.ios .router-transition-f7-fade-forward .page-next,\n.md .router-transition-f7-fade-forward .page-next {\n opacity: 0;\n animation: f7-fade-in var(--f7-page-fade-transition-duration) forwards;\n}\n.ios .router-transition-f7-fade-forward .page-current,\n.md .router-transition-f7-fade-forward .page-current {\n animation: f7-fade-out var(--f7-page-fade-transition-duration) forwards;\n}\n.ios .router-transition-f7-fade-backward .page-current,\n.md .router-transition-f7-fade-backward .page-current {\n animation: f7-fade-out var(--f7-page-fade-transition-duration) forwards;\n}\n.ios .router-transition-f7-fade-backward .page-previous,\n.md .router-transition-f7-fade-backward .page-previous {\n animation: f7-fade-in var(--f7-page-fade-transition-duration) forwards;\n}\n@keyframes f7-fade-in {\n from {\n opacity: 0;\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes f7-fade-out {\n from {\n opacity: 1;\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 0;\n }\n}\n.router-transition-f7-flip-forward,\n.router-transition-f7-flip-backward {\n background: #000;\n perspective: 1200px;\n}\n.router-transition-f7-flip-forward .page,\n.router-transition-f7-flip-backward .page {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n overflow: hidden;\n pointer-events: none;\n}\n.router-transition-f7-flip-forward .page-next {\n transform-style: preserve-3d;\n animation: f7-flip-next-to-current var(--f7-page-flip-transition-duration) forwards;\n}\n.router-transition-f7-flip-forward .page-current {\n transform-style: preserve-3d;\n animation: f7-flip-current-to-prev var(--f7-page-flip-transition-duration) forwards;\n}\n.router-transition-f7-flip-backward .page-current {\n transform-style: preserve-3d;\n animation: f7-flip-current-to-next var(--f7-page-flip-transition-duration) forwards;\n}\n.router-transition-f7-flip-backward .page-previous {\n transform-style: preserve-3d;\n animation: f7-flip-prev-to-current var(--f7-page-flip-transition-duration) forwards;\n}\n@keyframes f7-flip-next-to-current {\n from {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(-180deg);\n }\n to {\n border-radius: 0;\n transform: translateZ(0px) rotateY(0deg);\n }\n}\n@keyframes f7-flip-current-to-next {\n from {\n border-radius: 0px;\n transform: translateZ(0px) rotateY(0deg);\n }\n to {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(-180deg);\n }\n}\n@keyframes f7-flip-current-to-prev {\n from {\n border-radius: 0px;\n transform: translateZ(0px) rotateY(0deg);\n }\n to {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(180deg);\n }\n}\n@keyframes f7-flip-prev-to-current {\n from {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(180deg);\n }\n to {\n border-radius: 0px;\n transform: translateZ(0px) rotateY(0deg);\n }\n}\n.router-transition-f7-parallax-forward .page {\n pointer-events: none;\n}\n.router-transition-f7-parallax-forward .page-next {\n animation: f7-parallax-next-to-current var(--f7-page-parallax-transition-duration) forwards;\n}\n.router-transition-f7-parallax-forward .page-current {\n animation: f7-parallax-current-to-prev var(--f7-page-parallax-transition-duration) forwards;\n}\n.router-transition-f7-parallax-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-parallax-backward .page-current {\n animation: f7-parallax-current-to-next var(--f7-page-parallax-transition-duration) forwards;\n}\n.router-transition-f7-parallax-backward .page-previous {\n animation: f7-parallax-prev-to-current var(--f7-page-parallax-transition-duration) forwards;\n}\n@keyframes f7-parallax-next-to-current {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n@keyframes f7-parallax-current-to-next {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(-100%);\n }\n}\n@keyframes f7-parallax-current-to-prev {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(20%);\n }\n}\n@keyframes f7-parallax-prev-to-current {\n from {\n transform: translateX(20%);\n }\n to {\n transform: translateX(0%);\n }\n}\n.router-transition-f7-push-forward .page {\n pointer-events: none;\n}\n.router-transition-f7-push-forward .page-next {\n animation: f7-push-next-to-current var(--f7-page-push-transition-duration) forwards;\n}\n.router-transition-f7-push-forward .page-current {\n animation: f7-push-current-to-prev var(--f7-page-push-transition-duration) forwards;\n}\n.router-transition-f7-push-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-push-backward .page-current {\n animation: f7-push-current-to-next var(--f7-page-push-transition-duration) forwards;\n}\n.router-transition-f7-push-backward .page-previous {\n animation: f7-push-prev-to-current var(--f7-page-push-transition-duration) forwards;\n}\n@keyframes f7-push-next-to-current {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n@keyframes f7-push-current-to-next {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(-100%);\n }\n}\n@keyframes f7-push-current-to-prev {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(100%);\n }\n}\n@keyframes f7-push-prev-to-current {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n/* === Link === */\n:root {\n --f7-link-highlight-black: rgba(0, 0, 0, 0.1);\n --f7-link-highlight-white: rgba(255, 255, 255, 0.15);\n --f7-link-highlight-color: rgba(var(--f7-theme-color-rgb), 0.15);\n}\n.ios {\n --f7-link-pressed-opacity: 0.3;\n}\n.link,\n.tab-link {\n display: inline-flex;\n align-items: center;\n align-content: center;\n justify-content: center;\n position: relative;\n box-sizing: border-box;\n z-index: 1;\n --f7-touch-ripple-color: var(--f7-link-touch-ripple-color, rgba(var(--f7-theme-color-rgb), 0.25));\n}\n.link i + span,\n.link i + i,\n.link span + i,\n.link span + span {\n margin-right: 4px;\n}\n.link[class*='color-'] {\n color: var(--f7-theme-color);\n}\n.ios .link {\n transition: opacity 300ms;\n}\n.ios .link.active-state {\n opacity: var(--f7-link-pressed-opacity);\n transition-duration: 0ms;\n}\n/* === Navbar === */\n:root {\n /*\n --f7-navbar-bg-color: var(--f7-bars-bg-color);\n --f7-navbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-navbar-border-color: var(--f7-bars-border-color);\n */\n --f7-navbar-hide-show-transition-duration: 400ms;\n --f7-navbar-title-line-height: 1.2;\n --f7-navbar-subtitle-text-align: inherit;\n --f7-navbar-large-title-line-height: 1.2;\n --f7-navbar-large-title-text-color: inherit;\n --f7-navbar-large-title-padding-left: 16px;\n --f7-navbar-large-title-padding-right: 16px;\n}\n.ios {\n /*\n --f7-navbar-link-color: var(--f7-bars-link-color);\n --f7-navbar-text-color: var(--f7-bars-text-color);\n */\n --f7-navbar-height: 44px;\n --f7-navbar-font-size: 17px;\n --f7-navbar-title-font-size: inherit;\n --f7-navbar-inner-padding-left: 8px;\n --f7-navbar-inner-padding-right: 8px;\n --f7-navbar-title-font-weight: 600;\n --f7-navbar-title-margin-left: 0;\n --f7-navbar-title-margin-right: 0;\n --f7-navbar-title-text-align: center;\n --f7-navbar-subtitle-font-size: 10px;\n --f7-navbar-subtitle-line-height: 1;\n --f7-navbar-large-title-height: 52px;\n --f7-navbar-large-title-font-size: 34px;\n --f7-navbar-large-title-font-weight: 700;\n --f7-navbar-large-title-letter-spacing: -0.03em;\n --f7-navbar-large-title-padding-vertical: 6px;\n /*\n --f7-navbar-link-height: var(--f7-navbar-height);\n --f7-navbar-link-line-height: var(--f7-navbar-height);\n */\n --f7-navbar-subtitle-text-color: rgba(0, 0, 0, 0.55);\n}\n.ios .dark,\n.ios.dark {\n --f7-navbar-subtitle-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-navbar-height: 64px;\n --f7-navbar-font-size: 16px;\n --f7-navbar-title-font-size: 22px;\n --f7-navbar-inner-padding-left: 0px;\n --f7-navbar-inner-padding-right: 0px;\n --f7-navbar-title-font-weight: 400;\n --f7-navbar-title-margin-left: 0px;\n --f7-navbar-title-margin-right: 16px;\n --f7-navbar-title-text-align: left;\n --f7-navbar-subtitle-font-size: 14px;\n --f7-navbar-subtitle-line-height: 1.2;\n --f7-navbar-large-title-font-size: 28px;\n --f7-navbar-large-title-height: 88px;\n --f7-navbar-large-title-font-weight: 400;\n --f7-navbar-large-title-letter-spacing: 0;\n --f7-navbar-large-title-padding-vertical: 8px;\n --f7-navbar-link-height: 48px;\n --f7-navbar-link-line-height: 48px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-navbar-link-color: var(--f7-md-on-surface);\n --f7-navbar-text-color: var(--f7-md-on-surface);\n --f7-navbar-subtitle-text-color: var(--f7-md-on-surface-variant);\n}\n.navbars,\n.navbar {\n z-index: 500;\n left: 0;\n top: 0;\n width: 100%;\n}\n.navbars {\n position: absolute;\n}\n.navbars .navbar {\n z-index: auto;\n}\n.navbars .navbar-transitioning {\n z-index: 500;\n}\n.navbar {\n --f7-navbar-large-collapse-progress: 0;\n position: relative;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n box-sizing: border-box;\n margin: 0;\n height: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n color: var(--f7-navbar-text-color, var(--f7-bars-text-color));\n font-size: var(--f7-navbar-font-size);\n}\n.navbar b {\n font-weight: 500;\n}\n.navbar a {\n color: var(--f7-navbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.navbar a.link {\n display: flex;\n justify-content: flex-start;\n line-height: var(--f7-navbar-link-line-height, var(--f7-navbar-height));\n height: var(--f7-navbar-link-height, var(--f7-navbar-height));\n}\n.navbar .title,\n.navbar .left,\n.navbar .right {\n position: relative;\n z-index: 10;\n}\n.navbar .title {\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex-shrink: 10;\n font-weight: var(--f7-navbar-title-font-weight);\n display: inline-block;\n line-height: var(--f7-navbar-title-line-height);\n text-align: var(--f7-navbar-title-text-align);\n font-size: var(--f7-navbar-title-font-size);\n margin-right: var(--f7-navbar-title-margin-left);\n margin-left: var(--f7-navbar-title-margin-left);\n}\n.navbar .subtitle {\n display: block;\n color: var(--f7-navbar-subtitle-text-color);\n font-weight: normal;\n font-size: var(--f7-navbar-subtitle-font-size);\n line-height: var(--f7-navbar-subtitle-line-height);\n text-align: var(--f7-navbar-subtitle-text-align);\n}\n.navbar .left,\n.navbar .right {\n flex-shrink: 0;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.navbar .right:first-child {\n position: absolute;\n height: 100%;\n}\n.navbar.no-outline .navbar-bg:after,\n.navbar .no-outline .navbar-bg:after {\n display: none !important;\n}\n.navbar.no-outline .title-large:after,\n.navbar .no-outline .title-large:after {\n display: none !important;\n}\n.navbar.navbar-hidden .navbar-bg:before,\n.navbar-hidden .navbar .navbar-bg:before {\n opacity: 0 !important;\n}\n.navbar-bg {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 0;\n background: var(--f7-navbar-bg-color);\n background-color: var(--f7-navbar-bg-color, var(--f7-bars-bg-color));\n transition-property: transform;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .navbar-bg {\n background-color: rgba(var(--f7-navbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.navbar-bg:after,\n.navbar-bg:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.navbar-bg:after {\n content: '';\n position: absolute;\n background-color: var(--f7-navbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.navbar-bg:after {\n z-index: 1;\n}\n.navbar-transitioning,\n.navbar-transitioning .left,\n.navbar-transitioning .title,\n.navbar-transitioning .right,\n.navbar-transitioning .title-large-text,\n.navbar-transitioning .navbar-bg,\n.navbar-transitioning .subnavbar,\n.navbar-transitioning .navbar-bg:before {\n transition-duration: var(--f7-navbar-hide-show-transition-duration);\n}\n.navbar-page-transitioning {\n transition-duration: var(--f7-page-swipeback-transition-duration) !important;\n}\n.navbar-page-transitioning .title-large-text,\n.navbar-page-transitioning .navbar-bg {\n transition-duration: var(--f7-page-swipeback-transition-duration) !important;\n}\n.navbar-hidden {\n transform: translate3d(0, calc(-1 * var(--f7-navbar-height)), 0);\n}\n.navbar-hidden .navbar-inner {\n pointer-events: none;\n}\n.navbar-hidden .navbar-inner > .left,\n.navbar-hidden .navbar-inner > .title,\n.navbar-hidden .navbar-inner > .right {\n opacity: 0 !important;\n}\n.navbar-hidden .subnavbar {\n pointer-events: auto;\n}\n.navbar-hidden-statusbar {\n transform: translate3d(0, calc(-1 * var(--f7-navbar-height) - var(--f7-safe-area-top)), 0);\n}\n.navbar-large-hidden .navbar-large {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar-inner {\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n padding: var(--f7-safe-area-top) calc(var(--f7-navbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-navbar-inner-padding-left) + var(--f7-safe-area-left));\n transform: translate3d(0, 0, 0);\n z-index: 10;\n}\n.views > .navbar,\n.view > .navbar,\n.page > .navbar,\n.navbars > .navbar {\n position: absolute;\n}\n.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(\n .with-searchbar-expandable-enabled\n ) .navbar-bg,\n.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(\n .with-searchbar-expandable-enabled\n ) .title {\n opacity: 0;\n}\n.navbar-large .navbar-bg {\n height: calc(100% + var(--f7-navbar-large-title-height));\n transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.navbar-large-transparent .navbar-bg,\n.navbar-large.navbar-transparent .navbar-bg {\n opacity: var(--f7-navbar-large-collapse-progress);\n}\n.ios .router-navbar-transition-to-large .navbar-bg,\n.ios .router-navbar-transition-from-large .navbar-bg,\n.navbar-bg.ios-swipeback-navbar-bg-large,\n.navbar-large-transparent .navbar-bg.ios-swipeback-navbar-bg-large,\n.navbar-large.navbar-transparent .navbar-bg.ios-swipeback-navbar-bg-large {\n height: calc(100% + var(--f7-navbar-large-title-height));\n transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.ios .navbar:not(.navbar-large) .navbar-bg {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar-large .title {\n opacity: var(--f7-navbar-large-collapse-progress);\n}\n.navbar-large-collapsed {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar-large-collapsed .title-large {\n pointer-events: none;\n}\n.navbar .title-large {\n box-sizing: border-box;\n position: absolute;\n left: 0;\n right: 0;\n top: 100%;\n display: flex;\n white-space: nowrap;\n overflow: hidden;\n height: var(--f7-navbar-large-title-height);\n z-index: 5;\n}\n.navbar .title-large-text {\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--f7-navbar-large-title-text-color);\n letter-spacing: var(--f7-navbar-large-title-letter-spacing);\n font-size: var(--f7-navbar-large-title-font-size);\n font-weight: var(--f7-navbar-large-title-font-weight);\n line-height: var(--f7-navbar-large-title-line-height);\n padding-left: calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-navbar-large-title-padding-right) + var(--f7-safe-area-right));\n padding-top: var(--f7-navbar-large-title-padding-vertical);\n padding-bottom: var(--f7-navbar-large-title-padding-vertical);\n box-sizing: border-box;\n overflow: hidden;\n width: 100%;\n transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n transform-origin: calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center;\n}\n.navbar-no-title-large-transition .title-large-text {\n transition-duration: 0ms;\n}\n.navbar ~ *,\n.navbars ~ * {\n --f7-page-navbar-offset: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ * .page-with-navbar-large,\n.navbar ~ .page-with-navbar-large,\n.navbars ~ * .page-with-navbar-large,\n.navbars ~ .page-with-navbar-large,\n.page-with-navbar-large .navbar ~ * {\n --f7-page-navbar-offset: calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));\n}\n.page.no-navbar,\n.page.no-navbar .navbar ~ * {\n --f7-page-navbar-offset: var(--f7-safe-area-top);\n}\n.ios {\n --f7-navbarLeftTextOffset: calc(4px + 12px + var(--f7-navbar-inner-padding-left));\n --f7-navbarTitleLargeOffset: var(--f7-navbar-large-title-padding-left);\n --f7-navbar-large-bg-center-top: translateX(0) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n --f7-navbar-large-bg-center-bottom: translateX(0) translateY(0);\n --f7-navbar-large-bg-left-top: translateX(100%) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n --f7-navbar-large-bg-left-bottom: translateX(100%) translateY(0);\n --f7-navbar-large-bg-right-top: translateX(-100%) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n --f7-navbar-large-bg-right-bottom: translateX(-100%) translateY(0);\n}\n.ios .navbar .title-large {\n align-items: flex-end;\n}\n.ios .navbar a.icon-only {\n width: 44px;\n margin: 0;\n justify-content: center;\n}\n.ios .navbar .left a + a,\n.ios .navbar .right a + a {\n margin-right: 16px;\n}\n.ios .navbar b {\n font-weight: 600;\n}\n.ios .navbar .left {\n margin-left: 10px;\n}\n.ios .navbar .right {\n margin-right: 10px;\n}\n.ios .navbar .right:first-child {\n left: calc(8px + var(--f7-safe-area-left));\n}\n.ios .navbar-inner {\n justify-content: space-between;\n}\n.ios .navbar-inner-left-title {\n justify-content: flex-start;\n}\n.ios .navbar-inner-left-title .right {\n margin-right: auto;\n}\n.ios .navbar-inner-left-title .title {\n text-align: left;\n margin-left: 10px;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .left,\n.ios .view:not(.view-master-detail) .navbar-previous .left,\n.ios .navbar-next .left,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .title,\n.ios .view:not(.view-master-detail) .navbar-previous .title,\n.ios .navbar-next .title,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .right,\n.ios .view:not(.view-master-detail) .navbar-previous .right,\n.ios .navbar-next .right,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar,\n.ios .view:not(.view-master-detail) .navbar-previous .subnavbar,\n.ios .navbar-next .subnavbar,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .fading,\n.ios .view:not(.view-master-detail) .navbar-previous .fading,\n.ios .navbar-next .fading {\n opacity: 0;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master),\n.ios .view:not(.view-master-detail) .navbar-previous {\n pointer-events: none;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large,\n.ios .view:not(.view-master-detail) .navbar-previous .title-large {\n opacity: 0;\n transition-duration: 0ms;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large .title-large-text,\n.ios .view:not(.view-master-detail) .navbar-previous .title-large .title-large-text {\n transform: scale(0.5);\n transition-duration: 0ms;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar.sliding,\n.ios .view:not(.view-master-detail) .navbar-previous .subnavbar.sliding,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .sliding .subnavbar,\n.ios .view:not(.view-master-detail) .navbar-previous .sliding .subnavbar {\n opacity: 1;\n transform: translate3d(100%, 0, 0);\n}\n.ios .view:not(.view-master-detail) .navbar-previous .navbar-bg,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .navbar-bg {\n transform: translateX(-100%);\n}\n.ios .navbar-next {\n pointer-events: none;\n}\n.ios .navbar-next .navbar-bg {\n transform: translateX(-100%);\n}\n.ios .navbar-next .title-large .title-large-text {\n transition-duration: 0ms;\n transform: translateX(-100%) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n}\n.ios .navbar-next .subnavbar.sliding,\n.ios .navbar-next .sliding .subnavbar {\n opacity: 1;\n transform: translate3d(-100%, 0, 0);\n}\n.ios .router-transition .navbar,\n.ios .router-transition .navbar-bg {\n transition-duration: var(--f7-page-transition-duration);\n}\n.ios .router-transition .navbar-bg {\n animation-duration: var(--f7-page-transition-duration);\n animation-fill-mode: forwards;\n}\n.ios .router-transition .title-large,\n.ios .router-transition .title-large-text {\n transition-duration: 0ms;\n}\n.ios .router-transition .navbar-current .left,\n.ios .router-transition .navbar-current .title,\n.ios .router-transition .navbar-current .right,\n.ios .router-transition .navbar-current .subnavbar {\n animation: ios-navbar-element-fade-out var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition .navbar-current .sliding.left,\n.ios .router-transition .navbar-current .sliding.left .icon + span,\n.ios .router-transition .navbar-current .sliding.title,\n.ios .router-transition .navbar-current .sliding.right,\n.ios .router-transition .navbar-current .sliding .left,\n.ios .router-transition .navbar-current .sliding .left .icon + span,\n.ios .router-transition .navbar-current .sliding .title,\n.ios .router-transition .navbar-current .sliding .right {\n transition-duration: var(--f7-page-transition-duration);\n opacity: 0 !important;\n animation: none;\n}\n.ios .router-transition .navbar-current .sliding .subnavbar,\n.ios .router-transition .navbar-current .sliding.subnavbar {\n transition-duration: var(--f7-page-transition-duration);\n animation: none;\n opacity: 1;\n}\n.ios .router-transition-forward .navbar-next .left,\n.ios .router-transition-backward .navbar-previous .left,\n.ios .router-transition-forward .navbar-next .title,\n.ios .router-transition-backward .navbar-previous .title,\n.ios .router-transition-forward .navbar-next .right,\n.ios .router-transition-backward .navbar-previous .right,\n.ios .router-transition-forward .navbar-next .subnavbar,\n.ios .router-transition-backward .navbar-previous .subnavbar {\n animation: ios-navbar-element-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next .sliding.left,\n.ios .router-transition-backward .navbar-previous .sliding.left,\n.ios .router-transition-forward .navbar-next .sliding.left .icon + span,\n.ios .router-transition-backward .navbar-previous .sliding.left .icon + span,\n.ios .router-transition-forward .navbar-next .sliding.title,\n.ios .router-transition-backward .navbar-previous .sliding.title,\n.ios .router-transition-forward .navbar-next .sliding.right,\n.ios .router-transition-backward .navbar-previous .sliding.right,\n.ios .router-transition-forward .navbar-next .sliding .left,\n.ios .router-transition-backward .navbar-previous .sliding .left,\n.ios .router-transition-forward .navbar-next .sliding .left .icon + span,\n.ios .router-transition-backward .navbar-previous .sliding .left .icon + span,\n.ios .router-transition-forward .navbar-next .sliding .title,\n.ios .router-transition-backward .navbar-previous .sliding .title,\n.ios .router-transition-forward .navbar-next .sliding .right,\n.ios .router-transition-backward .navbar-previous .sliding .right,\n.ios .router-transition-forward .navbar-next .sliding .subnavbar,\n.ios .router-transition-backward .navbar-previous .sliding .subnavbar {\n transition-duration: var(--f7-page-transition-duration);\n animation: none;\n transform: translate3d(0, 0, 0) !important;\n opacity: 1 !important;\n}\n.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title,\n.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title {\n animation: none;\n}\n.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title,\n.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title,\n.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title,\n.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title {\n opacity: 0 !important;\n}\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .left,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .left,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .title,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .title,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .right,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .right,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .subnavbar,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .subnavbar {\n animation: none;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large {\n overflow: visible;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-up var(--f7-page-transition-duration) forwards, ios-navbar-large-title-text-fade-out var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large .left .back span {\n animation: ios-navbar-back-text-next-to-current var(--f7-page-transition-duration) forwards;\n transition: none;\n transform-origin: right center;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large {\n overflow: visible;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-left var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-left var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next.navbar-large:not(.navbar-large-collapsed) .title,\n.ios .router-transition-forward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title {\n animation: none;\n opacity: 0 !important;\n transition-duration: 0;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large .left .back span {\n animation: ios-navbar-back-text-current-to-previous var(--f7-page-transition-duration) forwards;\n transition: none;\n transform-origin: right center;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large {\n overflow: visible;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-right var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-right var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large {\n opacity: 0;\n}\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large {\n overflow: visible;\n opacity: 1;\n}\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-down var(--f7-page-transition-duration) forwards, ios-navbar-large-title-text-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title,\n.ios .router-transition-backward .navbar-previous.navbar-large:not(.navbar-large-collapsed) .title {\n animation: none;\n opacity: 0 !important;\n transition-duration: 0;\n}\n.ios .router-transition-forward .navbar-current .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-lb;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-lb;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-lt;\n}\n.ios .router-transition-forward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-lb;\n}\n.ios .router-transition-forward .navbar-current.navbar-large-collapsed:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-lt;\n}\n.ios .router-transition-forward .navbar-next .navbar-bg {\n animation-name: ios-navbar-bg-from-rb-to-cb;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-rb-to-cb;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-rb-to-ct;\n}\n.ios .router-transition-forward .navbar-next:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-rt-to-cb;\n}\n.ios .router-transition-backward .navbar-current .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-rb;\n}\n.ios .router-transition-backward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-rb;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-rt;\n}\n.ios .router-transition-backward .navbar-current.navbar-large-collapsed .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-rt;\n}\n.ios .router-transition-backward .navbar-current.navbar-large-collapsed.router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-rb;\n}\n.ios .router-transition-backward .navbar-previous .navbar-bg {\n animation-name: ios-navbar-bg-from-lb-to-cb;\n}\n.ios .router-transition-backward .navbar-previous:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-lt-to-cb;\n}\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-lb-to-ct;\n}\n.ios .router-transition-backward .navbar-previous.navbar-large-collapsed .navbar-bg {\n animation-name: ios-navbar-bg-from-lt-to-ct;\n}\n.view-master-detail .navbars {\n z-index: auto;\n}\n.view-master-detail .page-master {\n z-index: 525;\n}\n.view-master-detail .navbar-master .navbar-inner,\n.view-master-detail .navbar-master .navbar-bg {\n z-index: 550;\n}\n.view-master-detail .navbar-master-detail .navbar-inner,\n.view-master-detail .navbar-master-detail .navbar-bg {\n z-index: 500;\n}\n.view-master-detail .navbar-master.navbar-previous {\n pointer-events: auto;\n}\n.view-master-detail .navbar-master.navbar-previous .left,\n.view-master-detail .navbar-master.navbar-previous:not(.navbar-large) .title,\n.view-master-detail .navbar-master.navbar-previous .right,\n.view-master-detail .navbar-master.navbar-previous .subnavbar {\n opacity: 1;\n}\n.view-master-detail.router-transition .navbar-master .left,\n.view-master-detail.router-transition .navbar-master .left .icon + span,\n.view-master-detail.router-transition .navbar-master:not(.navbar-large) .title,\n.view-master-detail.router-transition .navbar-master .right,\n.view-master-detail.router-transition .navbar-master .subnavbar,\n.view-master-detail.router-transition .navbar-master .fading {\n opacity: 1 !important;\n transition-duration: 0ms;\n transform: none !important;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master .navbar-bg {\n transition-duration: 0ms;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master.navbar-large .title {\n opacity: calc(-1 + 2 * var(--f7-navbar-large-collapse-progress)) !important;\n transition-duration: 0ms;\n transform: none !important;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master.navbar-large .title-large,\n.view-master-detail.router-transition .navbar-master.navbar-large .title-large-text {\n transition-duration: 0ms;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master.navbar-large-transparent .navbar-bg,\n.view-master-detail.router-transition .navbar-master.navbar-large.navbar-transparent .navbar-bg {\n height: 100% !important;\n opacity: var(--f7-navbar-large-collapse-progress) !important;\n}\n@keyframes ios-navbar-element-fade-in {\n 0% {\n opacity: 0;\n }\n 25% {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes ios-navbar-element-fade-out {\n from {\n opacity: 1;\n }\n 75% {\n opacity: 0;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes ios-navbar-large-title-text-slide-up {\n 0% {\n transform: translateX(0px) translateY(0%) scale(1);\n }\n 100% {\n transform: translateX(calc(-1 * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(-1 * var(--f7-navbar-large-title-height) + var(--f7-navbar-large-title-padding-vertical))) scale(0.5);\n }\n}\n@keyframes ios-navbar-large-title-text-slide-down {\n 0% {\n transform: translateX(calc(-1 * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(-1 * var(--f7-navbar-large-title-height) + var(--f7-navbar-large-title-padding-vertical) / 2)) scale(0.5);\n }\n 100% {\n transform: translateX(0px) translateY(0%) scale(1);\n }\n}\n@keyframes ios-navbar-large-title-text-slide-left {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(0%);\n }\n}\n@keyframes ios-navbar-large-title-text-slide-right {\n 0% {\n transform: translateX(0%);\n }\n 100% {\n transform: translateX(-100%);\n }\n}\n@keyframes ios-navbar-large-title-text-fade-out {\n 0% {\n opacity: 1;\n }\n 80% {\n opacity: 0;\n }\n 100% {\n opacity: 0;\n }\n}\n@keyframes ios-navbar-large-title-text-fade-in {\n 0% {\n opacity: 0;\n }\n 20% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes ios-navbar-back-text-current-to-previous {\n 0% {\n opacity: 1;\n transform: translateY(0px) translateX(0px) scale(1);\n }\n 80% {\n opacity: 0;\n }\n 100% {\n opacity: 0;\n transform: translateX(calc(-1 * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(1 * var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2)) scale(2);\n }\n}\n@keyframes ios-navbar-back-text-next-to-current {\n 0% {\n opacity: 0;\n transform: translateX(calc(-1 * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(1 * var(--f7-navbar-large-title-height) + var(--f7-navbar-large-title-padding-vertical) / 2)) scale(2);\n }\n 20% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n transform: translateX(0px) translateY(0px) scale(1);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-lb {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-lt {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-lb {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-lt {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n}\n@keyframes ios-navbar-bg-from-rb-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-rb-to-ct {\n from {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n}\n@keyframes ios-navbar-bg-from-rt-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-right-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-rb {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-rb {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-rt {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-top);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-rt {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-top);\n }\n}\n@keyframes ios-navbar-bg-from-lb-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-lt-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-lb-to-ct {\n from {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n}\n@keyframes ios-navbar-bg-from-lt-to-ct {\n from {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n}\n.md .navbar .title-large {\n align-items: center;\n}\n.md .navbar .left {\n margin-left: 4px;\n margin-right: 4px;\n}\n.md .navbar a.link {\n padding: 0 12px;\n min-width: 48px;\n}\n.md .navbar a.icon-only {\n min-width: 0;\n flex-shrink: 0;\n width: 48px;\n}\n.md .navbar .right {\n margin-left: 4px;\n margin-right: auto;\n}\n.md .navbar .right:first-child {\n left: var(--f7-safe-area-left);\n}\n.md .navbar-inner {\n justify-content: flex-start;\n overflow: hidden;\n}\n.md .navbar-large:not(.navbar-large-collapsed) .navbar-inner {\n overflow: visible;\n}\n.md .page.page-with-subnavbar .navbar-inner {\n overflow: visible;\n}\n.md .navbar-inner:not(.navbar-inner-centered-title) .title:first-child {\n margin-left: 16px;\n}\n.md .navbar-inner-centered-title {\n justify-content: space-between;\n}\n.md .navbar-inner-centered-title .right {\n margin-right: 0;\n}\n.md .navbar-inner-centered-title .title {\n text-align: center;\n}\n/* === Toolbar === */\n:root {\n /*\n --f7-toolbar-bg-color: var(--f7-bars-bg-color);\n --f7-toolbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-toolbar-border-color: var(--f7-bars-border-color);\n --f7-toolbar-link-color: var(--f7-bars-link-color);\n --f7-toolbar-text-color: var(--f7-bars-text-color);\n */\n --f7-tabbar-link-active-bg-color: transparent;\n --f7-tabbar-label-text-transform: none;\n --f7-toolbar-hide-show-transition-duration: 400ms;\n}\n.ios {\n --f7-toolbar-height: 44px;\n --f7-toolbar-font-size: 17px;\n --f7-toolbar-inner-padding-left: 8px;\n --f7-toolbar-inner-padding-right: 8px;\n --f7-toolbar-link-font-weight: 400;\n /*\n --f7-toolbar-link-height: var(--f7-toolbar-height);\n --f7-toolbar-link-line-height: var(--f7-toolbar-height);\n --f7-tabbar-link-active-color: var(--f7-theme-color);\n */\n --f7-tabbar-icons-height: 50px;\n --f7-tabbar-icons-tablet-height: 50px;\n --f7-tabbar-icon-size: 28px;\n --f7-tabbar-link-text-transform: none;\n --f7-tabbar-link-font-weight: 400;\n --f7-tabbar-link-letter-spacing: 0;\n --f7-tabbar-label-font-size: 12px;\n --f7-tabbar-label-tablet-font-size: 14px;\n --f7-tabbar-label-font-weight: 500;\n --f7-tabbar-label-letter-spacing: 0.01;\n --f7-tabbar-link-inactive-color: rgba(0, 0, 0, 0.4);\n}\n.ios .dark,\n.ios.dark {\n --f7-tabbar-link-inactive-color: rgba(255, 255, 255, 0.54);\n}\n.md {\n --f7-toolbar-height: 56px;\n --f7-toolbar-font-size: 14px;\n --f7-toolbar-inner-padding-left: 0px;\n --f7-toolbar-inner-padding-right: 0px;\n /*\n --f7-toolbar-link-height: var(--f7-toolbar-height);\n --f7-toolbar-link-line-height: var(--f7-toolbar-height);\n */\n --f7-tabbar-icons-height: 80px;\n --f7-tabbar-icons-tablet-height: 80px;\n --f7-tabbar-icon-size: 24px;\n --f7-tabbar-link-text-transform: none;\n --f7-tabbar-link-font-weight: 500;\n --f7-tabbar-link-letter-spacing: 0;\n --f7-toolbar-link-font-weight: 500;\n --f7-tabbar-label-font-size: 12px;\n --f7-tabbar-label-tablet-font-size: 12px;\n --f7-tabbar-label-font-weight: 500;\n --f7-tabbar-label-letter-spacing: 0;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-tabbar-link-active-color: var(--f7-md-on-secondary-container);\n --f7-tabbar-link-active-border-color: var(--f7-md-primary);\n --f7-tabbar-link-inactive-color: var(--f7-md-on-surface-variant);\n --f7-tabbar-link-active-icon-bg-color: var(--f7-md-secondary-container);\n}\n.toolbar {\n width: 100%;\n position: relative;\n margin: 0;\n transform: translate3d(0, 0, 0);\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n z-index: 600;\n box-sizing: border-box;\n left: 0;\n height: var(--f7-toolbar-height);\n background-color: var(--f7-toolbar-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-toolbar-text-color, var(--f7-bars-text-color));\n font-size: var(--f7-toolbar-font-size);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .toolbar {\n background-color: rgba(var(--f7-toolbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.toolbar b {\n font-weight: 600;\n}\n.toolbar a {\n color: var(--f7-toolbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n box-sizing: border-box;\n flex-shrink: 1;\n position: relative;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.toolbar .link {\n display: flex;\n line-height: var(--f7-toolbar-link-line-height, var(--f7-toolbar-height));\n height: var(--f7-toolbar-link-height, var(--f7-toolbar-height));\n font-weight: var(--f7-toolbar-link-font-weight);\n}\n.toolbar i.icon {\n display: block;\n}\n.toolbar:after,\n.toolbar:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.views > .toolbar,\n.view > .toolbar,\n.page > .toolbar {\n position: absolute;\n}\n.toolbar-top,\n.ios .toolbar-top-ios,\n.md .toolbar-top-md {\n top: 0;\n}\n.toolbar-top .tab-link-highlight,\n.ios .toolbar-top-ios .tab-link-highlight,\n.md .toolbar-top-md .tab-link-highlight {\n bottom: 0;\n}\n.toolbar-top.no-outline:after,\n.ios .toolbar-top-ios.no-outline:after,\n.md .toolbar-top-md.no-outline:after {\n display: none !important;\n}\n.toolbar-top.toolbar-hidden:before,\n.ios .toolbar-top-ios.toolbar-hidden:before,\n.md .toolbar-top-md.toolbar-hidden:before {\n display: none !important;\n}\n.toolbar-top:after,\n.ios .toolbar-top-ios:after,\n.md .toolbar-top-md:after,\n.toolbar-top:before,\n.ios .toolbar-top-ios:before,\n.md .toolbar-top-md:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.toolbar-top:after,\n.ios .toolbar-top-ios:after,\n.md .toolbar-top-md:after {\n content: '';\n position: absolute;\n background-color: var(--f7-toolbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.toolbar-bottom,\n.ios .toolbar-bottom-ios,\n.md .toolbar-bottom-md {\n bottom: 0;\n height: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n}\n.toolbar-bottom .tab-link-highlight,\n.ios .toolbar-bottom-ios .tab-link-highlight,\n.md .toolbar-bottom-md .tab-link-highlight {\n top: 0;\n}\n.toolbar-bottom .toolbar-inner,\n.ios .toolbar-bottom-ios .toolbar-inner,\n.md .toolbar-bottom-md .toolbar-inner {\n height: auto;\n top: 0;\n bottom: var(--f7-safe-area-bottom);\n}\n.toolbar-bottom.no-outline:before,\n.ios .toolbar-bottom-ios.no-outline:before,\n.md .toolbar-bottom-md.no-outline:before {\n display: none !important;\n}\n.toolbar-bottom.toolbar-hidden:after,\n.ios .toolbar-bottom-ios.toolbar-hidden:after,\n.md .toolbar-bottom-md.toolbar-hidden:after {\n display: none !important;\n}\n.toolbar-bottom:before,\n.ios .toolbar-bottom-ios:before,\n.md .toolbar-bottom-md:before {\n content: '';\n position: absolute;\n background-color: var(--f7-toolbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.toolbar-inner {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n align-content: center;\n overflow: hidden;\n padding: 0 calc(var(--f7-toolbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-toolbar-inner-padding-left) + var(--f7-safe-area-left));\n}\n.views > .tabbar,\n.views > .tabbar-icons {\n z-index: 5001;\n}\n.tabbar a,\n.tabbar-icons a {\n color: var(--f7-tabbar-link-inactive-color);\n}\n.tabbar .link,\n.tabbar-icons .link {\n line-height: 1.4;\n}\n.tabbar .tab-link,\n.tabbar-icons .tab-link,\n.tabbar .link,\n.tabbar-icons .link {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n text-transform: var(--f7-tabbar-link-text-transform);\n font-weight: var(--f7-tabbar-link-font-weight);\n letter-spacing: var(--f7-tabbar-link-letter-spacing);\n overflow: hidden;\n}\n.tabbar .tab-link-active,\n.tabbar-icons .tab-link-active {\n color: var(--f7-tabbar-link-active-color, var(--f7-theme-color));\n background-color: var(--f7-tabbar-link-active-bg-color, transparent);\n}\n.tabbar i.icon,\n.tabbar-icons i.icon {\n font-size: var(--f7-tabbar-icon-size);\n height: var(--f7-tabbar-icon-size);\n line-height: var(--f7-tabbar-icon-size);\n}\n.md .tabbar.tabbar-icons .tab-link-highlight,\n.md .tabbar-icons.tabbar-icons .tab-link-highlight {\n display: none;\n}\n.md .tabbar:not(.tabbar-icons) .tab-link-highlight,\n.md .tabbar-icons:not(.tabbar-icons) .tab-link-highlight {\n position: absolute;\n left: 0;\n height: 2px;\n background: var(--f7-tabbar-link-active-border-color, var(--f7-theme-color));\n transition-duration: 300ms;\n right: 0;\n}\n.tabbar-icons {\n --f7-toolbar-height: var(--f7-tabbar-icons-height);\n}\n.tabbar-icons .tab-link,\n.tabbar-icons .link {\n height: 100%;\n justify-content: center;\n align-items: center;\n}\n.tabbar-icons .tabbar-label {\n display: block;\n line-height: 1;\n margin: 0;\n position: relative;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--f7-tabbar-label-font-size);\n text-transform: var(--f7-tabbar-label-text-transform);\n font-weight: var(--f7-tabbar-label-font-weight);\n letter-spacing: var(--f7-tabbar-label-letter-spacing);\n}\n@media (min-width: 768px) and (min-height: 600px) {\n :root {\n --f7-tabbar-icons-height: var(--f7-tabbar-icons-tablet-height);\n --f7-tabbar-label-font-size: var(--f7-tabbar-label-tablet-font-size);\n }\n}\n.tabbar-scrollable .toolbar-inner {\n justify-content: flex-start;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.tabbar-scrollable .toolbar-inner::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.tabbar-scrollable .tab-link,\n.tabbar-scrollable .link {\n width: auto;\n flex-shrink: 0;\n}\n.toolbar-transitioning,\n.navbar-transitioning + .toolbar,\n.navbar-transitioning ~ * .toolbar {\n transition-duration: var(--f7-toolbar-hide-show-transition-duration);\n}\n.toolbar-bottom ~ *,\n.ios .toolbar-bottom-ios ~ *,\n.md .toolbar-bottom-md ~ * {\n --f7-page-toolbar-bottom-offset: var(--f7-toolbar-height);\n}\n.toolbar-bottom.tabbar-icons ~ *,\n.ios .toolbar-bottom-ios.tabbar-icons ~ *,\n.md .toolbar-bottom-md.tabbar-icons ~ * {\n --f7-page-toolbar-bottom-offset: var(--f7-tabbar-icons-height);\n}\n.toolbar-bottom.toolbar-hidden,\n.ios .toolbar-bottom-ios.toolbar-hidden,\n.md .toolbar-bottom-md.toolbar-hidden {\n transform: translate3d(0, 100%, 0);\n}\n.toolbar-top ~ *,\n.ios .toolbar-top-ios ~ *,\n.md .toolbar-top-md ~ * {\n --f7-page-toolbar-top-offset: var(--f7-toolbar-height);\n}\n.toolbar-top.tabbar-icons ~ *,\n.ios .toolbar-top-ios.tabbar-icons ~ *,\n.md .toolbar-top-md.tabbar-icons ~ * {\n --f7-page-toolbar-top-offset: var(--f7-tabbar-icons-height);\n}\n.toolbar-top.toolbar-hidden,\n.ios .toolbar-top-ios.toolbar-hidden,\n.md .toolbar-top-md.toolbar-hidden {\n transform: translate3d(0, -100%, 0);\n}\n.navbar ~ .toolbar-top,\n.navbars ~ .toolbar-top,\n.ios .navbar ~ .toolbar-top-ios,\n.ios .navbars ~ .toolbar-top-ios,\n.md .navbar ~ .toolbar-top-md,\n.navbar ~ * .toolbar-top,\n.navbars ~ * .toolbar-top,\n.ios .navbar ~ * .toolbar-top-ios,\n.ios .navbars ~ * .toolbar-top-ios,\n.md .navbar ~ * .toolbar-top-md,\n.navbar ~ .page:not(.no-navbar) .toolbar-top,\n.navbars ~ .page:not(.no-navbar) .toolbar-top,\n.ios .navbar ~ .page:not(.no-navbar) .toolbar-top-ios,\n.ios .navbars ~ .page:not(.no-navbar) .toolbar-top-ios,\n.md .navbar ~ .page:not(.no-navbar) .toolbar-top-md {\n top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ .toolbar-top.toolbar-hidden,\n.navbars ~ .toolbar-top.toolbar-hidden,\n.ios .navbar ~ .toolbar-top-ios.toolbar-hidden,\n.ios .navbars ~ .toolbar-top-ios.toolbar-hidden,\n.md .navbar ~ .toolbar-top-md.toolbar-hidden,\n.navbar ~ * .toolbar-top.toolbar-hidden,\n.navbars ~ * .toolbar-top.toolbar-hidden,\n.ios .navbar ~ * .toolbar-top-ios.toolbar-hidden,\n.ios .navbars ~ * .toolbar-top-ios.toolbar-hidden,\n.md .navbar ~ * .toolbar-top-md.toolbar-hidden,\n.navbar ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden,\n.navbars ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden,\n.ios .navbar ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,\n.ios .navbars ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,\n.md .navbar ~ .page:not(.no-navbar) .toolbar-top-md.toolbar-hidden {\n transform: translate3d(0, calc(-1 * (var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top))), 0);\n}\n.navbar ~ .toolbar-top.toolbar-hidden.tabbar-icons,\n.navbars ~ .toolbar-top.toolbar-hidden.tabbar-icons,\n.ios .navbar ~ .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.ios .navbars ~ .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.md .navbar ~ .toolbar-top-md.toolbar-hidden.tabbar-icons,\n.navbar ~ * .toolbar-top.toolbar-hidden.tabbar-icons,\n.navbars ~ * .toolbar-top.toolbar-hidden.tabbar-icons,\n.ios .navbar ~ * .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.ios .navbars ~ * .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.md .navbar ~ * .toolbar-top-md.toolbar-hidden.tabbar-icons,\n.navbar ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,\n.navbars ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,\n.ios .navbar ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.ios .navbars ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.md .navbar ~ .page:not(.no-navbar) .toolbar-top-md.toolbar-hidden.tabbar-icons {\n transform: translate3d(0, calc(-1 * (var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top))), 0);\n}\n.navbar-hidden + .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-hidden + .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-hidden + .toolbar-top-md:not(.toolbar-hidden),\n.navbar-hidden ~ * .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-hidden ~ * .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-hidden ~ * .toolbar-top-md:not(.toolbar-hidden) {\n transform: translate3d(0, calc(0px - var(--f7-navbar-height)), 0);\n}\n.navbar-large-hidden + .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-large-hidden + .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-large-hidden + .toolbar-top-md:not(.toolbar-hidden),\n.navbar-large-hidden ~ * .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-large-hidden ~ * .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-large-hidden ~ * .toolbar-top-md:not(.toolbar-hidden) {\n transform: translate3d(0, calc(0px - var(--f7-navbar-height) - var(--f7-navbar-large-title-height)), 0);\n}\n.ios .toolbar a.icon-only {\n min-height: var(--f7-toolbar-height);\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 0;\n min-width: 44px;\n}\n.ios .tabbar-icons .tab-link,\n.ios .tabbar-icons .link {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n.ios .tabbar-icons .tab-link i + span,\n.ios .tabbar-icons .link i + span {\n margin: 0;\n margin-top: 4px;\n}\n@media (min-width: 768px) and (min-height: 600px) {\n .ios .tabbar .tab-link,\n .ios .tabbar-icons .tab-link,\n .ios .tabbar .link,\n .ios .tabbar-icons .link {\n justify-content: center;\n flex-direction: row;\n }\n .ios .tabbar .tab-link i + span,\n .ios .tabbar-icons .tab-link i + span,\n .ios .tabbar .link i + span,\n .ios .tabbar-icons .link i + span {\n margin-left: 5px;\n }\n}\n.ios .tabbar-scrollable .toolbar-inner {\n justify-content: flex-start;\n}\n.ios .tabbar-scrollable .tab-link,\n.ios .tabbar-scrollable .link {\n padding: 0 8px;\n}\n.md .toolbar .link {\n justify-content: center;\n padding: 0 12px;\n min-width: 48px;\n}\n.md .toolbar a.icon-only {\n min-width: 0;\n flex-shrink: 0;\n}\n.md .tabbar .tab-link,\n.md .tabbar-icons .tab-link,\n.md .tabbar .link,\n.md .tabbar-icons .link {\n padding-left: 0;\n padding-right: 0;\n}\n.md .tabbar a.icon-only,\n.md .tabbar-icons a.icon-only {\n flex-shrink: initial;\n}\n.md .tabbar .tab-link,\n.md .tabbar-icons .tab-link {\n transition-duration: 300ms;\n overflow: hidden;\n position: relative;\n}\n.md .tabbar i.icon,\n.md .tabbar-icons i.icon {\n position: relative;\n}\n.md .tabbar i.icon::before,\n.md .tabbar-icons i.icon::before {\n content: '';\n width: 64px;\n height: 32px;\n border-radius: 32px;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translateX(-50%) translateY(-50%) scaleX(0.5);\n background: var(--f7-tabbar-link-active-icon-bg-color);\n opacity: 0;\n transition-duration: 200ms;\n z-index: -1;\n}\n.md .tabbar i.icon + .tabbar-label,\n.md .tabbar-icons i.icon + .tabbar-label {\n margin-top: 8px;\n}\n.md .tabbar .tab-link-active i.icon::before,\n.md .tabbar-icons .tab-link-active i.icon::before {\n opacity: 1;\n transform: translateX(-50%) translateY(-50%) scaleX(1);\n}\n.md .tabbar-icons .tab-link,\n.md .tabbar-icons .link {\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.md .tabbar-label {\n max-width: 100%;\n overflow: hidden;\n line-height: 1.2;\n}\n.md .tabbar-scrollable .toolbar-inner {\n overflow: auto;\n}\n.md .tabbar-scrollable .tab-link,\n.md .tabbar-scrollable .link {\n padding: 0 12px;\n}\n/* === Subnavbar === */\n:root {\n /*\n --f7-subnavbar-bg-color: var(--f7-bars-bg-color);\n --f7-subnavbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-subnavbar-border-color: var(--f7-bars-border-color);\n --f7-subnavbar-link-color: var(--f7-bars-link-color);\n --f7-subnavbar-text-color: var(--f7-bars-text-color);\n */\n --f7-subnavbar-title-line-height: 1.2;\n}\n.ios {\n --f7-subnavbar-height: 44px;\n --f7-subnavbar-inner-padding-left: 8px;\n --f7-subnavbar-inner-padding-right: 8px;\n --f7-subnavbar-title-font-size: 34px;\n --f7-subnavbar-title-font-weight: 700;\n --f7-subnavbar-title-letter-spacing: -0.03em;\n --f7-subnavbar-title-margin-left: 8px;\n /*\n --f7-subnavbar-link-height: var(--f7-subnavbar-height);\n --f7-subnavbar-link-line-height: var(--f7-subnavbar-height);\n */\n}\n.md {\n --f7-subnavbar-height: 64px;\n --f7-subnavbar-inner-padding-left: 16px;\n --f7-subnavbar-inner-padding-right: 16px;\n --f7-subnavbar-title-font-size: 22px;\n --f7-subnavbar-title-font-weight: 400;\n --f7-subnavbar-title-letter-spacing: 0;\n --f7-subnavbar-title-margin-left: 0px;\n /*\n --f7-subnavbar-link-height: var(--f7-subnavbar-height);\n --f7-subnavbar-link-line-height: var(--f7-subnavbar-height);\n */\n}\n.subnavbar {\n width: 100%;\n position: absolute;\n left: 0;\n top: 0;\n z-index: 600;\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background-color: var(--f7-subnavbar-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-subnavbar-text-color, var(--f7-bars-text-color));\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .subnavbar {\n background-color: rgba(var(--f7-subnavbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.subnavbar .subnavbar-title {\n position: relative;\n overflow: hidden;\n text-overflow: ellpsis;\n white-space: nowrap;\n font-size: var(--f7-subnavbar-title-font-size);\n font-weight: var(--f7-subnavbar-title-font-weight);\n text-align: left;\n display: inline-block;\n line-height: var(--f7-subnavbar-title-line-height);\n letter-spacing: var(--f7-subnavbar-title-letter-spacing);\n margin-right: var(--f7-subnavbar-title-margin-left);\n}\n.subnavbar .left,\n.subnavbar .right {\n flex-shrink: 0;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.subnavbar .right:first-child {\n position: absolute;\n height: 100%;\n}\n.subnavbar a {\n color: var(--f7-subnavbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.subnavbar a.link {\n line-height: var(--f7-subnavbar-link-line-height, var(--f7-subnavbar-height));\n height: var(--f7-subnavbar-link-height, var(--f7-subnavbar-height));\n}\n.subnavbar a.icon-only {\n min-width: var(--f7-subnavbar-height);\n}\n.subnavbar.no-outline:after {\n display: none !important;\n}\n.subnavbar.navbar-hidden:before {\n display: none !important;\n}\n.subnavbar:after,\n.subnavbar:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.subnavbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-subnavbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.subnavbar-inner {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n justify-content: space-between;\n overflow: hidden;\n padding: 0 calc(var(--f7-subnavbar-inner-padding-left) + var(--f7-safe-area-right)) 0 calc(var(--f7-subnavbar-inner-padding-right) + var(--f7-safe-area-left));\n}\n.navbar .subnavbar {\n top: 100%;\n}\n.views > .subnavbar,\n.view > .subnavbar,\n.page > .subnavbar {\n position: absolute;\n}\n.navbar ~ * .subnavbar,\n.navbars ~ * .subnavbar,\n.page-with-subnavbar .navbar ~ .subnavbar,\n.page-with-subnavbar .navbar ~ * .subnavbar,\n.navbar ~ .page-with-subnavbar:not(.no-navbar) .subnavbar,\n.navbar ~ .subnavbar,\n.navbars ~ .page-with-subnavbar:not(.no-navbar) .subnavbar,\n.navbars ~ .subnavbar {\n top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ .page-with-navbar-large:not(.no-navbar) .subnavbar,\n.navbars ~ .page-with-navbar-large:not(.no-navbar) .subnavbar,\n.page-with-subnavbar.page-with-navbar-large .navbar ~ .subnavbar,\n.page-with-subnavbar.page-with-navbar-large .navbar ~ * .subnavbar,\n.navbar .title-large ~ .subnavbar {\n top: calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));\n transform: translate3d(0, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.page-with-subnavbar,\n.subnavbar ~ * {\n --f7-page-subnavbar-offset: var(--f7-subnavbar-height);\n}\n.ios .subnavbar {\n height: calc(var(--f7-subnavbar-height) + 1px);\n margin-top: -1px;\n padding-top: 1px;\n}\n.ios .subnavbar .title {\n align-self: flex-start;\n flex-shrink: 10;\n}\n.ios .subnavbar .left a + a,\n.ios .subnavbar .right a + a {\n margin-right: 16px;\n}\n.ios .subnavbar .left {\n margin-left: 10px;\n}\n.ios .subnavbar .right {\n margin-right: 10px;\n}\n.ios .subnavbar .right:first-child {\n left: 8px;\n}\n.ios .subnavbar a.link {\n justify-content: flex-start;\n}\n.ios .subnavbar a.icon-only {\n justify-content: center;\n margin: 0;\n}\n.md .subnavbar {\n height: var(--f7-subnavbar-height);\n}\n.md .subnavbar .right {\n margin-right: auto;\n}\n.md .subnavbar .right:first-child {\n left: 16px;\n}\n.md .subnavbar a.link {\n justify-content: center;\n padding: 0 12px;\n}\n.md .subnavbar a.icon-only {\n flex-shrink: 0;\n padding: 0 12px;\n}\n.md .subnavbar-inner > a.link:first-child {\n margin-right: calc(-1 * var(--f7-subnavbar-inner-padding-right));\n}\n.md .subnavbar-inner > a.link:last-child {\n margin-left: calc(-1 * var(--f7-subnavbar-inner-padding-left));\n}\n/* === Content Block === */\n:root {\n --f7-block-padding-horizontal: 16px;\n --f7-block-padding-vertical: 16px;\n --f7-block-font-size: inherit;\n --f7-block-header-margin: 10px;\n --f7-block-footer-margin: 10px;\n --f7-block-header-font-size: 14px;\n --f7-block-footer-font-size: 14px;\n --f7-block-title-text-transform: none;\n --f7-block-title-white-space: nowrap;\n --f7-block-title-medium-text-transform: none;\n --f7-block-title-large-text-transform: none;\n --f7-block-inset-side-margin: 16px;\n}\n:root .dark,\n:root.dark {\n --f7-block-outline-border-color: rgba(255, 255, 255, 0.15);\n}\n.ios {\n --f7-block-text-color: inherit;\n --f7-block-margin-vertical: 35px;\n --f7-block-outline-border-color: rgba(0, 0, 0, 0.22);\n --f7-block-title-font-size: 16px;\n --f7-block-title-font-weight: 600;\n --f7-block-title-line-height: 20px;\n --f7-block-title-margin-bottom: 10px;\n --f7-block-title-medium-font-size: 22px;\n --f7-block-title-medium-font-weight: bold;\n --f7-block-title-medium-line-height: 1.4;\n --f7-block-title-large-font-size: 30px;\n --f7-block-title-large-font-weight: bold;\n --f7-block-title-large-line-height: 1.3;\n --f7-block-inset-border-radius: 8px;\n --f7-block-title-text-color: #000;\n --f7-block-strong-text-color: #000;\n --f7-block-header-text-color: rgba(0, 0, 0, 0.45);\n --f7-block-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-block-strong-bg-color: #fff;\n --f7-block-title-medium-text-color: #000;\n --f7-block-title-large-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-block-title-text-color: #fff;\n --f7-block-header-text-color: rgba(255, 255, 255, 0.55);\n --f7-block-footer-text-color: rgba(255, 255, 255, 0.55);\n --f7-block-strong-text-color: #fff;\n --f7-block-strong-bg-color: #1c1c1d;\n --f7-block-title-medium-text-color: #fff;\n --f7-block-title-large-text-color: #fff;\n}\n.md {\n --f7-block-margin-vertical: 32px;\n --f7-block-title-font-size: inherit;\n --f7-block-title-font-weight: 500;\n --f7-block-title-line-height: 16px;\n --f7-block-title-margin-bottom: 16px;\n --f7-block-title-medium-font-size: 16px;\n --f7-block-title-medium-font-weight: 500;\n --f7-block-title-medium-line-height: 1.3;\n --f7-block-title-large-font-size: 22px;\n --f7-block-title-large-font-weight: 500;\n --f7-block-title-large-line-height: 1.2;\n --f7-block-inset-border-radius: 16px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-block-text-color: var(--f7-md-on-surface);\n --f7-block-strong-text-color: var(--f7-md-on-surface);\n --f7-block-outline-border-color: var(--f7-md-outline);\n --f7-block-title-text-color: var(--f7-theme-color);\n --f7-block-title-medium-text-color: var(--f7-theme-color);\n --f7-block-title-large-text-color: var(--f7-theme-color);\n --f7-block-strong-bg-color: var(--f7-md-surface-1);\n --f7-block-header-text-color: var(--f7-md-on-surface-variant);\n --f7-block-footer-text-color: var(--f7-md-on-surface-variant);\n}\n.block {\n box-sizing: border-box;\n position: relative;\n z-index: 1;\n color: var(--f7-block-text-color);\n margin: var(--f7-block-margin-vertical) 0;\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));\n font-size: var(--f7-block-font-size);\n}\n.block > h1:first-child,\n.block > h2:first-child,\n.block > h3:first-child,\n.block > h4:first-child,\n.block > p:first-child {\n margin-top: 0;\n}\n.block > h1:last-child,\n.block > h2:last-child,\n.block > h3:last-child,\n.block > h4:last-child,\n.block > p:last-child {\n margin-bottom: 0;\n}\n.block-strong,\n.ios .block-strong-ios,\n.md .block-strong-md {\n color: var(--f7-block-strong-text-color);\n padding-top: var(--f7-block-padding-vertical);\n padding-bottom: var(--f7-block-padding-vertical);\n background-color: var(--f7-block-strong-bg-color);\n}\n.block-outline:not(.inset):before,\n.ios .block-outline-ios:not(.inset):not(.inset-ios):before,\n.md .block-outline-md:not(.inset):not(.inset-md):before {\n content: '';\n position: absolute;\n background-color: var(--f7-block-outline-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.block-outline:not(.inset):after,\n.ios .block-outline-ios:not(.inset):not(.inset-ios):after,\n.md .block-outline-md:not(.inset):not(.inset-md):after {\n content: '';\n position: absolute;\n background-color: var(--f7-block-outline-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.block-outline.inset,\n.ios .block-outline-ios.inset,\n.ios .block-outline-ios.inset-ios,\n.md .block-outline-md.inset,\n.md .block-outline-md.inset-md {\n border: 1px solid var(--f7-block-outline-border-color);\n}\n.block-title {\n position: relative;\n overflow: hidden;\n margin: 0;\n white-space: var(--f7-block-title-white-space);\n text-overflow: ellipsis;\n text-transform: var(--f7-block-title-text-transform);\n color: var(--f7-block-title-text-color);\n font-size: var(--f7-block-title-font-size, inherit);\n font-weight: var(--f7-block-title-font-weight);\n line-height: var(--f7-block-title-line-height);\n margin-top: var(--f7-block-margin-vertical);\n margin-bottom: var(--f7-block-title-margin-bottom);\n margin-left: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));\n margin-right: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));\n}\n.block-title + .list,\n.block-title + .block,\n.block-title + .card,\n.block-title + .timeline,\n.block-title + .block-header {\n margin-top: 0px;\n}\n.block-title-medium {\n font-size: var(--f7-block-title-medium-font-size);\n text-transform: var(--f7-block-title-medium-text-transform);\n color: var(--f7-block-title-medium-text-color);\n font-weight: var(--f7-block-title-medium-font-weight);\n line-height: var(--f7-block-title-medium-line-height);\n}\n.block-title-large {\n font-size: var(--f7-block-title-large-font-size);\n text-transform: var(--f7-block-title-large-text-transform);\n color: var(--f7-block-title-large-text-color);\n font-weight: var(--f7-block-title-large-font-weight);\n line-height: var(--f7-block-title-large-line-height);\n}\n.block > .block-title:first-child,\n.list > .block-title:first-child {\n margin-top: 0;\n margin-left: 0;\n margin-right: 0;\n}\n.block-header {\n color: var(--f7-block-header-text-color);\n font-size: var(--f7-block-header-font-size);\n margin-bottom: var(--f7-block-header-margin);\n margin-top: var(--f7-block-margin-vertical);\n}\n.block-header + .list,\n.block-header + .block,\n.block-header + .card,\n.block-header + .timeline {\n margin-top: var(--f7-block-header-margin);\n}\n.block-footer {\n color: var(--f7-block-footer-text-color);\n font-size: var(--f7-block-footer-font-size);\n margin-top: var(--f7-block-footer-margin);\n margin-bottom: var(--f7-block-margin-vertical);\n}\n.block-footer,\n.block-header {\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));\n}\n.block-footer ul:first-child,\n.block-header ul:first-child,\n.block-footer p:first-child,\n.block-header p:first-child,\n.block-footer h1:first-child,\n.block-header h1:first-child,\n.block-footer h2:first-child,\n.block-header h2:first-child,\n.block-footer h3:first-child,\n.block-header h3:first-child,\n.block-footer h4:first-child,\n.block-header h4:first-child {\n margin-top: 0;\n}\n.block-footer ul:last-child,\n.block-header ul:last-child,\n.block-footer p:last-child,\n.block-header p:last-child,\n.block-footer h1:last-child,\n.block-header h1:last-child,\n.block-footer h2:last-child,\n.block-header h2:last-child,\n.block-footer h3:last-child,\n.block-header h3:last-child,\n.block-footer h4:last-child,\n.block-header h4:last-child {\n margin-bottom: 0;\n}\n.block-footer ul:first-child:last-child,\n.block-header ul:first-child:last-child,\n.block-footer p:first-child:last-child,\n.block-header p:first-child:last-child,\n.block-footer h1:first-child:last-child,\n.block-header h1:first-child:last-child,\n.block-footer h2:first-child:last-child,\n.block-header h2:first-child:last-child,\n.block-footer h3:first-child:last-child,\n.block-header h3:first-child:last-child,\n.block-footer h4:first-child:last-child,\n.block-header h4:first-child:last-child {\n margin-top: 0;\n margin-bottom: 0;\n}\n.list .block-header,\n.block .block-header,\n.card .block-header,\n.timeline .block-header {\n margin-top: 0;\n}\n.list .block-footer,\n.block .block-footer,\n.card .block-footer,\n.timeline .block-footer {\n margin-bottom: 0;\n}\n.list + .block-footer,\n.block + .block-footer,\n.card + .block-footer,\n.timeline + .block-footer {\n margin-top: calc(-1 * (var(--f7-block-margin-vertical) - var(--f7-block-footer-margin)));\n}\n.block + .block-footer {\n margin-top: calc(-1 * (var(--f7-block-margin-vertical) - var(--f7-block-footer-margin)));\n margin-bottom: var(--f7-block-margin-vertical);\n}\n.block .block-header,\n.block .block-footer {\n padding: 0;\n}\n.block.inset,\n.ios .block.inset-ios,\n.md .block.inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n}\n.block-strong.inset:before,\n.ios .block-strong-ios.inset:before,\n.md .block-strong-md.inset:before,\n.ios .block-strong.inset-ios:before,\n.md .block-strong.inset-md:before,\n.ios .block-strong-ios.inset-ios:before,\n.md .block-strong-md.inset-md:before,\n.block-strong.inset:after,\n.ios .block-strong-ios.inset:after,\n.md .block-strong-md.inset:after,\n.ios .block-strong.inset-ios:after,\n.md .block-strong.inset-md:after,\n.ios .block-strong-ios.inset-ios:after,\n.md .block-strong-md.inset-md:after {\n display: none !important;\n}\n@media (min-width: 480px) {\n .block.xsmall-inset,\n .ios .block.xsmall-inset-ios,\n .md .block.xsmall-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.xsmall-inset:before,\n .ios .block.xsmall-inset-ios:before,\n .md .block.xsmall-inset-md:before,\n .block.xsmall-inset:after,\n .ios .block.xsmall-inset-ios:after,\n .md .block.xsmall-inset-md:after {\n display: none !important;\n }\n .block.xsmall-inset.block-outline,\n .ios .block.xsmall-inset-ios.block-outline,\n .ios .block.xsmall-inset-ios.block-outline-ios,\n .md .block.xsmall-inset-md.block-outline,\n .md .block.xsmall-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 568px) {\n .block.small-inset,\n .ios .block.small-inset-ios,\n .md .block.small-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.small-inset:before,\n .ios .block.small-inset-ios:before,\n .md .block.small-inset-md:before,\n .block.small-inset:after,\n .ios .block.small-inset-ios:after,\n .md .block.small-inset-md:after {\n display: none !important;\n }\n .block.small-inset.block-outline,\n .ios .block.small-inset-ios.block-outline,\n .ios .block.small-inset-ios.block-outline-ios,\n .md .block.small-inset-md.block-outline,\n .md .block.small-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 768px) {\n .block.medium-inset,\n .ios .block.medium-inset-ios,\n .md .block.medium-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.medium-inset:before,\n .ios .block.medium-inset-ios:before,\n .md .block.medium-inset-md:before,\n .block.medium-inset:after,\n .ios .block.medium-inset-ios:after,\n .md .block.medium-inset-md:after {\n display: none !important;\n }\n .block.medium-inset.block-outline,\n .ios .block.medium-inset-ios.block-outline,\n .ios .block.medium-inset-ios.block-outline-ios,\n .md .block.medium-inset-md.block-outline,\n .md .block.medium-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 1024px) {\n .block.large-inset,\n .ios .block.large-inset-ios,\n .md .block.large-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.large-inset:before,\n .ios .block.large-inset-ios:before,\n .md .block.large-inset-md:before,\n .block.large-inset:after,\n .ios .block.large-inset-ios:after,\n .md .block.large-inset-md:after {\n display: none !important;\n }\n .block.large-inset.block-outline,\n .ios .block.large-inset-ios.block-outline,\n .ios .block.large-inset-ios.block-outline-ios,\n .md .block.large-inset-md.block-outline,\n .md .block.large-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 1200px) {\n .block.xlarge-inset,\n .ios .block.xlarge-inset-ios,\n .md .block.xlarge-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.xlarge-inset:before,\n .ios .block.xlarge-inset-ios:before,\n .md .block.xlarge-inset-md:before,\n .block.xlarge-inset:after,\n .ios .block.xlarge-inset-ios:after,\n .md .block.xlarge-inset-md:after {\n display: none !important;\n }\n .block.xlarge-inset.block-outline,\n .ios .block.xlarge-inset-ios.block-outline,\n .ios .block.xlarge-inset-ios.block-outline-ios,\n .md .block.xlarge-inset-md.block-outline,\n .md .block.xlarge-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n/* === List View === */\n:root {\n --f7-list-inset-side-margin: 16px;\n --f7-list-item-padding-horizontal: 16px;\n --f7-list-item-padding-vertical: 8px;\n --f7-list-media-item-padding-horizontal: 16px;\n --f7-list-item-text-max-lines: 2;\n --f7-list-chevron-icon-font-size: 20px;\n --f7-list-item-media-margin: 16px;\n --f7-list-item-title-font-size: inherit;\n --f7-list-item-title-font-weight: 400;\n --f7-list-item-title-line-height: inherit;\n --f7-list-item-title-white-space: nowrap;\n --f7-list-item-subtitle-font-weight: 400;\n --f7-list-item-subtitle-line-height: inherit;\n --f7-list-item-text-font-weight: 400;\n --f7-list-item-after-font-weight: 400;\n --f7-list-item-after-line-height: inherit;\n --f7-list-item-header-font-size: 12px;\n --f7-list-item-header-font-weight: 400;\n --f7-list-item-header-line-height: 1.2;\n --f7-list-item-footer-font-size: 12px;\n --f7-list-item-footer-font-weight: 400;\n --f7-list-item-footer-line-height: 1.2;\n /*\n --f7-list-button-text-color: var(--f7-theme-color);\n */\n --f7-list-button-font-size: inherit;\n --f7-list-button-font-weight: 400;\n --f7-list-button-text-align: center;\n --f7-list-group-title-line-height: inherit;\n --f7-menu-list-font-size: 14px;\n --f7-menu-list-item-title-font-size: 14px;\n --f7-menu-list-item-title-font-weight: 500;\n --f7-menu-list-item-subtitle-font-size: 14px;\n --f7-menu-list-item-text-font-size: 14px;\n --f7-menu-list-item-after-font-size: 14px;\n --f7-list-outline-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-chevron-icon-color: rgba(0, 0, 0, 0.2);\n}\n:root .dark,\n:root.dark {\n --f7-list-button-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-outline-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-group-title-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-chevron-icon-color: rgba(255, 255, 255, 0.3);\n}\n.ios {\n --f7-list-in-list-padding-left: 30px;\n --f7-list-inset-border-radius: 8px;\n --f7-list-margin-vertical: 35px;\n --f7-list-font-size: 17px;\n --f7-list-chevron-icon-area: 20px;\n --f7-list-item-title-text-color: inherit;\n --f7-list-item-subtitle-text-color: inherit;\n --f7-list-link-pressed-bg-color: rgba(0, 0, 0, 0.15);\n --f7-list-item-subtitle-font-size: 15px;\n --f7-list-item-text-font-size: 15px;\n --f7-list-item-text-line-height: 21px;\n --f7-list-item-after-font-size: inherit;\n --f7-list-item-after-padding: 5px;\n --f7-list-item-min-height: 44px;\n --f7-list-item-media-icons-margin: 5px;\n --f7-list-media-item-padding-vertical: 10px;\n --f7-list-media-item-title-font-weight: 600;\n --f7-list-button-border-color: rgba(0, 0, 0, 0.22);\n /*\n --f7-list-button-pressed-bg-color: rgba(var(--f7-theme-color-rgb), .15);\n */\n --f7-list-group-title-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-group-title-height: 31px;\n --f7-list-group-title-font-size: inherit;\n --f7-list-group-title-font-weight: 400;\n --f7-menu-list-offset: 8px;\n --f7-menu-list-border-radius: 8px;\n --f7-menu-list-item-bg-color: transparent;\n --f7-menu-list-item-text-color: inherit;\n --f7-menu-list-item-min-height: 44px;\n --f7-list-item-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-outline-inset-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-strong-bg-color: #fff;\n --f7-list-item-after-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-item-header-text-color: inherit;\n --f7-list-item-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-item-text-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-group-title-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-group-title-bg-color: #f7f7f7;\n --f7-menu-list-item-selected-text-color: var(--f7-theme-color);\n --f7-menu-list-item-selected-bg-color: rgba(var(--f7-theme-color-rgb), 0.15);\n}\n.ios .dark,\n.ios.dark {\n --f7-list-item-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-outline-inset-color: rgba(255, 255, 255, 0.15);\n --f7-list-strong-bg-color: #1c1c1d;\n --f7-list-item-after-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-item-header-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-item-footer-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-item-text-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-group-title-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-group-title-bg-color: #232323;\n --f7-list-link-pressed-bg-color: rgba(255, 255, 255, 0.08);\n --f7-menu-list-item-selected-text-color: inherit;\n --f7-menu-list-item-selected-bg-color: var(--f7-theme-color);\n}\n.md {\n --f7-list-in-list-padding-left: 24px;\n --f7-list-inset-border-radius: 16px;\n --f7-list-margin-vertical: 32px;\n --f7-list-font-size: 16px;\n --f7-list-chevron-icon-area: 26px;\n --f7-list-item-subtitle-font-size: 14px;\n --f7-list-item-text-font-size: 14px;\n --f7-list-item-text-line-height: 20px;\n --f7-list-item-after-font-size: 14px;\n --f7-list-item-after-padding: 8px;\n --f7-list-item-min-height: 48px;\n --f7-list-item-media-icons-margin: 8px;\n --f7-list-media-item-padding-vertical: 12px;\n --f7-list-media-item-title-font-weight: 500;\n --f7-list-button-border-color: transparent;\n /*\n --f7-list-button-pressed-bg-color: transparent;\n */\n --f7-list-group-title-border-color: transparent;\n --f7-list-group-title-height: 48px;\n --f7-list-group-title-font-size: 16px;\n --f7-list-group-title-font-weight: 400;\n --f7-menu-list-offset: 16px;\n --f7-menu-list-border-radius: 999px;\n --f7-menu-list-item-min-height: 56px;\n --f7-list-link-pressed-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-list-outline-inset-border-color: var(--f7-md-outline);\n --f7-list-item-border-color: var(--f7-md-outline);\n --f7-list-item-title-text-color: var(--f7-md-on-surface);\n --f7-list-item-subtitle-text-color: var(--f7-md-on-surface);\n --f7-list-group-title-bg-color: var(--f7-md-surface-2);\n --f7-list-group-title-text-color: var(--f7-md-on-surface-variant);\n --f7-list-strong-bg-color: var(--f7-md-surface-1);\n --f7-list-item-after-text-color: var(--f7-md-on-surface-variant);\n --f7-list-item-text-text-color: var(--f7-md-on-surface-variant);\n --f7-list-item-header-text-color: var(--f7-md-on-surface-variant);\n --f7-list-item-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-menu-list-item-text-color: var(--f7-md-on-surface-variant);\n --f7-menu-list-item-bg-color: var(--f7-md-surface-1);\n --f7-menu-list-item-selected-text-color: var(--f7-md-on-secondary-container);\n --f7-menu-list-item-selected-bg-color: var(--f7-md-secondary-container);\n}\n:root {\n --f7-list-chevron-icon-left: 'chevron_left';\n --f7-list-chevron-icon-right: 'chevron_right';\n}\n.list {\n position: relative;\n z-index: 1;\n font-size: var(--f7-list-font-size);\n margin: var(--f7-list-margin-vertical) 0;\n}\n.list-strong ul,\n.ios .list-strong-ios ul,\n.md .list-strong-md ul {\n background: var(--f7-list-strong-bg-color);\n}\n.list-outline ul:before,\n.ios .list-outline-ios ul:before,\n.md .list-outline-md ul:before {\n content: '';\n position: absolute;\n background-color: var(--f7-list-outline-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-outline ul:after,\n.ios .list-outline-ios ul:after,\n.md .list-outline-md ul:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-outline-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-outline.inset,\n.ios .list-outline-ios.inset,\n.ios .list-outline-ios.inset-ios,\n.md .list-outline-md.inset,\n.md .list-outline-md.inset-md {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n}\n.list ul {\n list-style: none;\n margin: 0;\n padding: 0;\n position: relative;\n}\n.list ul ul {\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-list-in-list-padding-left));\n}\n.list ul ul:before,\n.list ul ul:after {\n display: none !important;\n}\n.list li {\n position: relative;\n box-sizing: border-box;\n}\n.list .item-media {\n display: flex;\n flex-shrink: 0;\n flex-wrap: nowrap;\n align-items: center;\n box-sizing: border-box;\n padding-bottom: var(--f7-list-item-padding-vertical);\n padding-top: var(--f7-list-item-padding-vertical);\n position: relative;\n}\n.list .item-media + .item-inner {\n margin-right: var(--f7-list-item-media-margin);\n}\n.list .item-media i + i,\n.list .item-media i + img {\n margin-right: var(--f7-list-item-media-icons-margin);\n}\n.list .item-after {\n padding-right: var(--f7-list-item-after-padding);\n}\n.list .item-inner {\n position: relative;\n width: 100%;\n min-width: 0;\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n align-self: stretch;\n padding-top: var(--f7-list-item-padding-vertical);\n padding-bottom: var(--f7-list-item-padding-vertical);\n min-height: calc(var(--f7-list-item-min-height));\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.list .item-title {\n min-width: 0;\n flex-shrink: 1;\n white-space: var(--f7-list-item-title-white-space);\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n font-size: var(--f7-list-item-title-font-size);\n font-weight: var(--f7-list-item-title-font-weight);\n color: var(--f7-list-item-title-text-color);\n line-height: var(--f7-list-item-title-line-height);\n}\n.list .item-after {\n white-space: nowrap;\n flex-shrink: 0;\n display: flex;\n font-size: var(--f7-list-item-after-font-size);\n font-weight: var(--f7-list-item-after-font-weight);\n color: var(--f7-list-item-after-text-color);\n line-height: var(--f7-list-item-after-line-height);\n margin-right: auto;\n}\n.list .item-header,\n.list .item-footer {\n white-space: normal;\n}\n.list .item-header {\n color: var(--f7-list-item-header-text-color);\n font-size: var(--f7-list-item-header-font-size);\n font-weight: var(--f7-list-item-header-font-weight);\n line-height: var(--f7-list-item-header-line-height);\n}\n.list .item-footer {\n color: var(--f7-list-item-footer-text-color);\n font-size: var(--f7-list-item-footer-font-size);\n font-weight: var(--f7-list-item-footer-font-weight);\n line-height: var(--f7-list-item-footer-line-height);\n}\n.list .item-link,\n.list label.item-content,\n.list .list-button {\n transition-duration: 300ms;\n transition-property: background-color, color;\n position: relative;\n overflow: hidden;\n z-index: 0;\n cursor: pointer;\n}\n.list .item-link,\n.list .list-button {\n display: block;\n}\n.list .item-link,\n.list label.item-content {\n color: inherit;\n}\n.list .item-link.active-state,\n.list label.item-content.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.list .item-link .item-inner {\n padding-left: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.list .item-content {\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n min-height: calc(var(--f7-list-item-min-height));\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.list .item-subtitle {\n position: relative;\n overflow: hidden;\n white-space: nowrap;\n max-width: 100%;\n text-overflow: ellipsis;\n font-size: var(--f7-list-item-subtitle-font-size);\n font-weight: var(--f7-list-item-subtitle-font-weight);\n color: var(--f7-list-item-subtitle-text-color);\n line-height: var(--f7-list-item-subtitle-line-height);\n}\n.list .item-text {\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n /* autoprefixer: ignore next */\n -webkit-line-clamp: var(--f7-list-item-text-max-lines);\n /* autoprefixer: ignore next */\n -webkit-box-orient: vertical;\n display: -webkit-box;\n font-size: var(--f7-list-item-text-font-size);\n font-weight: var(--f7-list-item-text-font-weight);\n color: var(--f7-list-item-text-text-color);\n line-height: var(--f7-list-item-text-line-height);\n max-height: calc(var(--f7-list-item-text-line-height) * var(--f7-list-item-text-max-lines));\n}\n.list .item-title-row {\n position: relative;\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n}\n.list .item-title-row .item-after {\n align-self: center;\n}\n.list li:last-child .list-button:after {\n display: none !important;\n}\n.list li:last-child > .item-inner:after,\n.list li:last-child li:last-child > .item-inner:after,\n.list li:last-child > .item-content > .item-inner:after,\n.list li:last-child li:last-child > .item-content > .item-inner:after,\n.list li:last-child > .swipeout-content > .item-content > .item-inner:after,\n.list li:last-child li:last-child > .swipeout-content > .item-content > .item-inner:after,\n.list li:last-child > .item-link > .item-content > .item-inner:after,\n.list li:last-child li:last-child > .item-link > .item-content > .item-inner:after {\n display: none !important;\n}\n.list li li:last-child .item-inner:after,\n.list li:last-child li .item-inner:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-button {\n --f7-touch-ripple-color: var(--f7-link-touch-ripple-color, rgba(var(--f7-theme-color-rgb), 0.25));\n padding: 0 var(--f7-list-item-padding-horizontal);\n line-height: var(--f7-list-item-min-height);\n color: var(--f7-list-button-text-color, var(--f7-theme-color));\n font-size: var(--f7-list-button-font-size);\n font-weight: var(--f7-list-button-font-weight);\n text-align: var(--f7-list-button-text-align);\n}\n.ios .list-button.active-state {\n background-color: var(--f7-list-button-pressed-bg-color, rgba(var(--f7-theme-color-rgb), 0.15));\n}\n.md .list-button.active-state {\n background-color: var(--f7-list-button-pressed-bg-color, transparent);\n}\n.list-dividers .list-button:after,\n.ios .list-dividers-ios .list-button:after,\n.md .list-dividers-md .list-button:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-button-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-button[class*='color-'] {\n --f7-list-button-text-color: var(--f7-theme-color);\n}\n.simple-list li {\n position: relative;\n white-space: nowrap;\n text-overflow: ellipsis;\n max-width: 100%;\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n align-items: center;\n align-content: center;\n line-height: var(--f7-list-item-min-height);\n height: var(--f7-list-item-min-height);\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.simple-list li:after {\n left: var(--f7-list-item-padding-horizontal);\n right: 0;\n width: auto;\n right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n left: 0;\n}\n.simple-list li:last-child:after {\n display: none !important;\n}\n.links-list li {\n z-index: 1;\n}\n.links-list a {\n transition-duration: 300ms;\n transition-property: background-color;\n display: block;\n position: relative;\n overflow: hidden;\n display: flex;\n align-items: center;\n align-content: center;\n justify-content: space-between;\n box-sizing: border-box;\n white-space: nowrap;\n text-overflow: ellipsis;\n max-width: 100%;\n height: var(--f7-list-item-min-height);\n color: inherit;\n}\n.links-list a .ripple-wave {\n z-index: 0;\n}\n.links-list a:after {\n width: auto;\n}\n.links-list a.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.links-list a {\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n padding-left: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.links-list a:after {\n right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n left: 0;\n}\n.links-list li:last-child a:after {\n display: none !important;\n}\n.list-dividers.simple-list li:after,\n.ios .list-dividers-ios.simple-list li:after,\n.md .list-dividers-md.simple-list li:after,\n.list-dividers.links-list a:after,\n.ios .list-dividers-ios.links-list a:after,\n.md .list-dividers-md.links-list a:after,\n.list-dividers .item-inner:after,\n.ios .list-dividers-ios .item-inner:after,\n.md .list-dividers-md .item-inner:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li > .item-link,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item > .item-link {\n margin-left: calc(var(--f7-list-item-padding-horizontal) / 2);\n margin-right: calc(var(--f7-list-item-padding-horizontal) / 2);\n border-radius: 16px;\n}\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li > .item-link > .item-content,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item > .item-link > .item-content {\n margin-left: 0;\n margin-right: 0;\n}\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content {\n padding-right: calc(var(--f7-list-item-padding-horizontal) / 2 + var(--f7-safe-area-right));\n}\n.media-list,\nli.media-item {\n --f7-list-item-padding-vertical: var(--f7-list-media-item-padding-vertical);\n --f7-list-item-padding-horizontal: var(--f7-list-media-item-padding-horizontal);\n}\n.media-list .item-title,\nli.media-item .item-title {\n font-weight: var(--f7-list-media-item-title-font-weight, var(--f7-list-item-title-font-weight, inherit));\n}\n.media-list .item-inner,\nli.media-item .item-inner {\n display: block;\n align-self: stretch;\n}\n.media-list .item-media img,\nli.media-item .item-media img {\n display: block;\n}\n.media-list .item-link .item-inner,\nli.media-item .item-link .item-inner {\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.media-list .item-link .item-title-row,\nli.media-item .item-link .item-title-row {\n padding-left: calc(var(--f7-list-chevron-icon-area));\n}\n.media-list.chevron-center .item-link .item-inner,\n.media-list .chevron-center .item-link .item-inner,\n.media-list .item-link.chevron-center .item-inner,\nli.media-item.chevron-center .item-link .item-inner,\nli.media-item .item-link.chevron-center .item-inner,\nli.media-item .chevron-center .item-link .item-inner {\n padding-left: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.media-list.chevron-center .item-title-row,\n.media-list .chevron-center .item-title-row,\nli.media-item.chevron-center .item-title-row,\nli.media-item .chevron-center .item-title-row {\n padding-left: 0;\n}\n.list .item-link .item-inner:before,\n.links-list a:before,\n.media-list .item-link .item-title-row:before,\nli.media-item .item-link .item-title-row:before,\n.media-list.chevron-center .item-link .item-inner:before,\n.media-list .chevron-center .item-link .item-inner:before,\n.media-list .item-link.chevron-center .item-inner:before,\nli.media-item.chevron-center .item-link .item-inner:before,\nli.media-item .chevron-center .item-link .item-inner:before,\nli.media-item .item-link.chevron-center .item-inner:before {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n top: 50%;\n width: 8px;\n height: 14px;\n margin-top: -7px;\n font-size: var(--f7-list-chevron-icon-font-size);\n line-height: 14px;\n color: var(--f7-list-chevron-icon-color);\n pointer-events: none;\n left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n content: var(--f7-list-chevron-icon-left);\n}\n.media-list.chevron-center .item-title-row:before,\n.media-list .chevron-center .item-title-row:before,\nli.media-item.chevron-center .item-title-row:before,\nli.media-item .chevron-center .item-title-row:before {\n display: none;\n}\n.media-list .item-link .item-inner:before,\nli.media-item .item-link .item-inner:before {\n display: none;\n}\n.media-list .item-link .item-title-row:before,\nli.media-item .item-link .item-title-row:before {\n left: 0;\n}\n.list-group ul:after,\n.list-group ul:before {\n z-index: 25 !important;\n}\n.list-group + .list-group ul:before {\n display: none !important;\n}\nli.list-group-title,\n.list-group-title {\n margin-top: -1px;\n white-space: nowrap;\n position: relative;\n max-width: 100%;\n text-overflow: ellipsis;\n overflow: hidden;\n z-index: 15;\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n box-sizing: border-box;\n display: flex;\n align-items: center;\n align-content: center;\n height: var(--f7-list-group-title-height);\n color: var(--f7-list-group-title-text-color);\n font-size: var(--f7-list-group-title-font-size);\n font-weight: var(--f7-list-group-title-font-weight);\n background-color: var(--f7-list-group-title-bg-color);\n line-height: var(--f7-list-group-title-line-height);\n}\nli.list-group-title:before,\n.list-group-title:before {\n content: '';\n position: absolute;\n background-color: var(--f7-list-group-title-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\nli.list-group-title:after,\n.list-group-title:after {\n display: none !important;\n}\n.list-group > .list-group-title,\n.list-group > ul > .list-group-title {\n top: 0;\n margin-top: 0;\n position: sticky;\n z-index: 20;\n}\n.page-with-navbar-large .list-group > .list-group-title,\n.page-with-navbar-large .list-group > ul > .list-group-title {\n top: calc(-1 * var(--f7-navbar-large-title-height));\n}\n.list.inset,\n.ios .list.inset-ios,\n.md .list.inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n}\n.list.inset .block-title,\n.ios .list.inset-ios .block-title,\n.md .list.inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n}\n.list.inset ul,\n.ios .list.inset-ios ul,\n.md .list.inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n}\n.list.inset ul:before,\n.ios .list.inset-ios ul:before,\n.md .list.inset-md ul:before,\n.list.inset ul:after,\n.ios .list.inset-ios ul:after,\n.md .list.inset-md ul:after {\n display: none !important;\n}\n.list.inset li.swipeout:first-child,\n.ios .list.inset-ios li.swipeout:first-child,\n.md .list.inset-md li.swipeout:first-child,\n.list.inset li:first-child > a,\n.ios .list.inset-ios li:first-child > a,\n.md .list.inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n}\n.list.inset li.swipeout:last-child,\n.ios .list.inset-ios li.swipeout:last-child,\n.md .list.inset-md li.swipeout:last-child,\n.list.inset li:last-child > a,\n.ios .list.inset-ios li:last-child > a,\n.md .list.inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n}\n.list.inset li.swipeout:first-child:last-child,\n.ios .list.inset-ios li.swipeout:first-child:last-child,\n.md .list.inset-md li.swipeout:first-child:last-child,\n.list.inset li:first-child:last-child > a,\n.ios .list.inset-ios li:first-child:last-child > a,\n.md .list.inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n}\n@media (min-width: 480px) {\n .list.xsmall-inset,\n .ios .list.xsmall-inset-ios,\n .md .list.xsmall-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.xsmall-inset .block-title,\n .ios .list.xsmall-inset-ios .block-title,\n .md .list.xsmall-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.xsmall-inset ul,\n .ios .list.xsmall-inset-ios ul,\n .md .list.xsmall-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xsmall-inset ul:before,\n .ios .list.xsmall-inset-ios ul:before,\n .md .list.xsmall-inset-md ul:before,\n .list.xsmall-inset ul:after,\n .ios .list.xsmall-inset-ios ul:after,\n .md .list.xsmall-inset-md ul:after {\n display: none !important;\n }\n .list.xsmall-inset li:first-child > a,\n .ios .list.xsmall-inset-ios li:first-child > a,\n .md .list.xsmall-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.xsmall-inset li:last-child > a,\n .ios .list.xsmall-inset-ios li:last-child > a,\n .md .list.xsmall-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.xsmall-inset li:first-child:last-child > a,\n .ios .list.xsmall-inset-ios li:first-child:last-child > a,\n .md .list.xsmall-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xsmall-inset.list-outline ul,\n .ios .list.xsmall-inset-ios.list-outline ul,\n .ios .list.xsmall-inset-ios.list-outline-ios ul,\n .md .list.xsmall-inset-md.list-outline ul,\n .md .list.xsmall-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 568px) {\n .list.small-inset,\n .ios .list.small-inset-ios,\n .md .list.small-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.small-inset .block-title,\n .ios .list.small-inset-ios .block-title,\n .md .list.small-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.small-inset ul,\n .ios .list.small-inset-ios ul,\n .md .list.small-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.small-inset ul:before,\n .ios .list.small-inset-ios ul:before,\n .md .list.small-inset-md ul:before,\n .list.small-inset ul:after,\n .ios .list.small-inset-ios ul:after,\n .md .list.small-inset-md ul:after {\n display: none !important;\n }\n .list.small-inset li:first-child > a,\n .ios .list.small-inset-ios li:first-child > a,\n .md .list.small-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.small-inset li:last-child > a,\n .ios .list.small-inset-ios li:last-child > a,\n .md .list.small-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.small-inset li:first-child:last-child > a,\n .ios .list.small-inset-ios li:first-child:last-child > a,\n .md .list.small-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.small-inset.list-outline ul,\n .ios .list.small-inset-ios.list-outline ul,\n .ios .list.small-inset-ios.list-outline-ios ul,\n .md .list.small-inset-md.list-outline ul,\n .md .list.small-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 768px) {\n .list.medium-inset,\n .ios .list.medium-inset-ios,\n .md .list.medium-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.medium-inset .block-title,\n .ios .list.medium-inset-ios .block-title,\n .md .list.medium-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.medium-inset ul,\n .ios .list.medium-inset-ios ul,\n .md .list.medium-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.medium-inset ul:before,\n .ios .list.medium-inset-ios ul:before,\n .md .list.medium-inset-md ul:before,\n .list.medium-inset ul:after,\n .ios .list.medium-inset-ios ul:after,\n .md .list.medium-inset-md ul:after {\n display: none !important;\n }\n .list.medium-inset li:first-child > a,\n .ios .list.medium-inset-ios li:first-child > a,\n .md .list.medium-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.medium-inset li:last-child > a,\n .ios .list.medium-inset-ios li:last-child > a,\n .md .list.medium-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.medium-inset li:first-child:last-child > a,\n .ios .list.medium-inset-ios li:first-child:last-child > a,\n .md .list.medium-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.medium-inset.list-outline ul,\n .ios .list.medium-inset-ios.list-outline ul,\n .ios .list.medium-inset-ios.list-outline-ios ul,\n .md .list.medium-inset-md.list-outline ul,\n .md .list.medium-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 1024px) {\n .list.large-inset,\n .ios .list.large-inset-ios,\n .md .list.large-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.large-inset .block-title,\n .ios .list.large-inset-ios .block-title,\n .md .list.large-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.large-inset ul,\n .ios .list.large-inset-ios ul,\n .md .list.large-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.large-inset ul:before,\n .ios .list.large-inset-ios ul:before,\n .md .list.large-inset-md ul:before,\n .list.large-inset ul:after,\n .ios .list.large-inset-ios ul:after,\n .md .list.large-inset-md ul:after {\n display: none !important;\n }\n .list.large-inset li:first-child > a,\n .ios .list.large-inset-ios li:first-child > a,\n .md .list.large-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.large-inset li:last-child > a,\n .ios .list.large-inset-ios li:last-child > a,\n .md .list.large-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.large-inset li:first-child:last-child > a,\n .ios .list.large-inset-ios li:first-child:last-child > a,\n .md .list.large-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.large-inset.list-outline ul,\n .ios .list.large-inset-ios.list-outline ul,\n .ios .list.large-inset-ios.list-outline-ios ul,\n .md .list.large-inset-md.list-outline ul,\n .md .list.large-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 1200px) {\n .list.xlarge-inset,\n .ios .list.xlarge-inset-ios,\n .md .list.xlarge-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.xlarge-inset .block-title,\n .ios .list.xlarge-inset-ios .block-title,\n .md .list.xlarge-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.xlarge-inset ul,\n .ios .list.xlarge-inset-ios ul,\n .md .list.xlarge-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xlarge-inset ul:before,\n .ios .list.xlarge-inset-ios ul:before,\n .md .list.xlarge-inset-md ul:before,\n .list.xlarge-inset ul:after,\n .ios .list.xlarge-inset-ios ul:after,\n .md .list.xlarge-inset-md ul:after {\n display: none !important;\n }\n .list.xlarge-inset li:first-child > a,\n .ios .list.xlarge-inset-ios li:first-child > a,\n .md .list.xlarge-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.xlarge-inset li:last-child > a,\n .ios .list.xlarge-inset-ios li:last-child > a,\n .md .list.xlarge-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.xlarge-inset li:first-child:last-child > a,\n .ios .list.xlarge-inset-ios li:first-child:last-child > a,\n .md .list.xlarge-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xlarge-inset.list-outline ul,\n .ios .list.xlarge-inset-ios.list-outline ul,\n .ios .list.xlarge-inset-ios.list-outline-ios ul,\n .md .list.xlarge-inset-md.list-outline ul,\n .md .list.xlarge-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n.list.no-chevron,\n.list .no-chevron,\n.menu-list {\n --f7-list-chevron-icon-color: transparent;\n --f7-list-chevron-icon-area: 0px;\n}\n.menu-list {\n --f7-list-font-size: var(--f7-menu-list-font-size);\n --f7-list-item-title-font-size: var(--f7-menu-list-item-title-font-size);\n --f7-list-item-title-font-weight: var(--f7-menu-list-item-title-font-weight);\n --f7-list-item-subtitle-font-size: var(--f7-menu-list-item-subtitle-font-size);\n --f7-list-item-text-font-size: var(--f7-menu-list-item-text-font-size);\n --f7-list-item-after-font-size: var(--f7-menu-list-item-after-font-size);\n --f7-list-item-min-height: var(--f7-menu-list-item-min-height);\n}\n.menu-list .item-header,\n.menu-list .item-footer,\n.menu-list .item-title,\n.menu-list .item-after,\n.menu-list .item-text,\n.menu-list .item-subtitle {\n transition-duration: 300ms;\n}\n.menu-list li:not(.list-group-title) {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n.menu-list li:not(.list-group-title):first-child {\n padding-top: 4px;\n}\n.menu-list li:not(.list-group-title):last-child {\n padding-bottom: 4px;\n}\n.menu-list .item-link {\n margin-left: var(--f7-menu-list-offset);\n margin-right: var(--f7-menu-list-offset);\n border-radius: var(--f7-menu-list-border-radius) !important;\n color: var(--f7-menu-list-item-text-color);\n background-color: var(--f7-menu-list-item-bg-color);\n}\n.menu-list .item-inner:after {\n display: none;\n}\n.menu-list .item-selected .item-link,\n.menu-list .item-selected.item-link,\n.menu-list .tab-link-active .item-link,\n.menu-list .tab-link-active.item-link {\n color: var(--f7-menu-list-item-selected-text-color);\n background-color: var(--f7-menu-list-item-selected-bg-color);\n}\n.menu-list .item-selected .item-header,\n.menu-list .item-selected .item-footer,\n.menu-list .item-selected .item-title,\n.menu-list .item-selected .item-after,\n.menu-list .item-selected .item-text,\n.menu-list .item-selected .item-subtitle {\n color: var(--f7-menu-list-item-selected-text-color);\n}\n.ios .item-link.active-state .item-inner:after,\n.ios .list-button.active-state:after,\n.ios .links-list a.active-state:after {\n background-color: transparent;\n}\n.ios .links-list a.active-state,\n.ios .list .item-link.active-state,\n.ios .list .list-button.active-state {\n transition-duration: 0ms;\n}\n.md .menu-list .item-link.active-state {\n background-color: var(--f7-menu-list-item-bg-color);\n}\n/* === Badge === */\n:root {\n --f7-badge-text-color: #fff;\n --f7-badge-bg-color: #8e8e93;\n --f7-badge-in-icon-size: 16px;\n --f7-badge-in-icon-font-size: 10px;\n --f7-badge-font-weight: normal;\n --f7-badge-font-size: 12px;\n}\n.ios {\n --f7-badge-padding: 0 4px;\n --f7-badge-size: 20px;\n --f7-badge-font-weight: 600;\n}\n.md {\n --f7-badge-padding: 2px 6px;\n --f7-badge-size: 20px;\n --f7-badge-font-weight: 500;\n}\n.badge {\n display: inline-flex;\n align-items: center;\n align-content: center;\n justify-content: center;\n color: var(--f7-badge-text-color);\n background: var(--f7-badge-bg-color);\n position: relative;\n box-sizing: border-box;\n text-align: center;\n vertical-align: middle;\n font-weight: var(--f7-badge-font-weight);\n font-size: var(--f7-badge-font-size);\n border-radius: var(--f7-badge-size);\n padding: var(--f7-badge-padding);\n height: var(--f7-badge-size);\n min-width: var(--f7-badge-size);\n}\n.icon .badge,\n.f7-icons .badge,\n.framework7-icons .badge,\n.material-icons .badge {\n position: absolute;\n left: 100%;\n margin-left: -10px;\n top: -2px;\n font-family: var(--f7-font-family);\n --f7-badge-font-size: var(--f7-badge-in-icon-font-size);\n --f7-badge-size: var(--f7-badge-in-icon-size);\n --f7-badge-padding: 0px 2px;\n}\n.badge[class*='color-'] {\n --f7-badge-bg-color: var(--f7-theme-color);\n}\n:root {\n --f7-button-font-size: 14px;\n --f7-button-min-width: 32px;\n --f7-button-bg-color: transparent;\n --f7-button-border-width: 0px;\n /*\n --f7-button-text-color: var(--f7-theme-color);\n --f7-button-pressed-text-color: var(--f7-button-text-color, var(--f7-theme-color));\n --f7-button-border-color: var(--f7-theme-color);\n --f7-button-fill-bg-color: var(--f7-theme-color);\n --f7-button-padding-vertical: 0px;\n */\n --f7-button-raised-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);\n --f7-button-raised-pressed-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16),\n 0 3px 6px rgba(0, 0, 0, 0.23);\n --f7-segmented-raised-divider-color: rgba(0, 0, 0, 0.1);\n --f7-segmented-strong-padding: 2px;\n --f7-segmented-strong-between-buttons: 4px;\n --f7-segmented-strong-button-font-weight: 500;\n --f7-segmented-strong-button-active-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.25);\n --f7-segmented-strong-button-text-color: #000;\n --f7-segmented-strong-button-hover-bg-color: rgba(0, 0, 0, 0.04);\n --f7-segmented-strong-button-active-text-color: #000;\n --f7-segmented-strong-button-active-bg-color: #fff;\n}\n:root .dark,\n:root.dark {\n --f7-segmented-strong-button-hover-bg-color: rgba(255, 255, 255, 0.02);\n --f7-segmented-strong-button-active-bg-color: rgba(255, 255, 255, 0.14);\n --f7-segmented-strong-button-text-color: #fff;\n --f7-segmented-strong-button-active-text-color: #fff;\n}\n.ios {\n --f7-button-fill-text-color: #fff;\n --f7-button-text-transform: uppercase;\n --f7-button-height: 28px;\n --f7-button-padding-horizontal: 10px;\n --f7-button-border-radius: 4px;\n --f7-button-font-weight: 600;\n --f7-button-letter-spacing: 0;\n /*\n --f7-button-outline-border-color: var(--f7-theme-color);\n */\n --f7-button-outline-border-width: 2px;\n /*\n --f7-button-pressed-bg-color: rgba(var(--f7-theme-color-rgb), .15);\n --f7-button-fill-pressed-bg-color: var(--f7-theme-color-tint);\n */\n --f7-button-large-text-transform: uppercase;\n --f7-button-large-height: 44px;\n --f7-button-large-font-size: 17px;\n --f7-button-large-font-weight: 500;\n --f7-button-small-outline-border-width: 2px;\n --f7-button-small-text-transform: uppercase;\n --f7-button-small-height: 26px;\n --f7-button-small-font-size: 13px;\n --f7-button-small-font-weight: 600;\n --f7-segmented-strong-button-text-transform: none;\n --f7-segmented-strong-button-active-font-weight: 600;\n --f7-button-tonal-bg-color: rgba(var(--f7-theme-color-rgb), 0.15);\n --f7-button-tonal-pressed-bg-color: rgba(var(--f7-theme-color-rgb), 0.25);\n --f7-button-tonal-text-color: var(--f7-theme-color);\n --f7-segmented-strong-bg-color: rgba(0, 0, 0, 0.07);\n --f7-segmented-strong-button-pressed-bg-color: rgba(0, 0, 0, 0.07);\n}\n.ios .dark,\n.ios.dark {\n --f7-segmented-strong-bg-color: rgba(255, 255, 255, 0.1);\n --f7-segmented-strong-button-pressed-bg-color: rgba(255, 255, 255, 0.04);\n}\n.md {\n /*\n --f7-button-pressed-bg-color: transparent;\n */\n --f7-button-text-transform: none;\n --f7-button-height: 40px;\n --f7-button-padding-horizontal: 16px;\n --f7-button-border-radius: 8px;\n --f7-button-font-weight: 500;\n --f7-button-letter-spacing: normal;\n --f7-button-outline-border-width: 1px;\n --f7-button-large-text-transform: none;\n --f7-button-large-height: 48px;\n --f7-button-large-font-size: 14px;\n --f7-button-large-font-weight: 500;\n --f7-button-small-text-transform: none;\n --f7-button-small-outline-border-width: 1px;\n --f7-button-small-height: 32px;\n --f7-button-small-font-size: 14px;\n --f7-button-small-font-weight: 500;\n --f7-segmented-strong-button-text-transform: none;\n --f7-segmented-strong-button-active-font-weight: 500;\n --f7-segmented-strong-button-pressed-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-button-fill-pressed-bg-color: transparent;\n --f7-button-fill-text-color: var(--f7-md-on-primary);\n --f7-button-outline-border-color: var(--f7-md-outline);\n --f7-segmented-strong-bg-color: var(--f7-md-surface-variant);\n --f7-button-tonal-bg-color: var(--f7-md-secondary-container);\n --f7-button-tonal-pressed-bg-color: transparent;\n --f7-button-tonal-text-color: var(--f7-md-on-secondary-container);\n}\nbutton {\n -webkit-appearance: none;\n appearance: none;\n width: 100%;\n}\n.button {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n text-decoration: none;\n text-align: center;\n display: flex;\n -webkit-appearance: none;\n appearance: none;\n background: none;\n margin: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n position: relative;\n overflow: hidden;\n font-family: inherit;\n cursor: pointer;\n outline: 0;\n box-sizing: border-box;\n vertical-align: middle;\n justify-content: center;\n align-items: center;\n border: var(--f7-button-border-width, 0px) solid var(--f7-button-border-color, var(--f7-theme-color));\n font-size: var(--f7-button-font-size);\n color: var(--f7-button-text-color, var(--f7-theme-color));\n height: var(--f7-button-height);\n line-height: calc(var(--f7-button-height) - var(--f7-button-border-width, 0) * 2);\n padding: var(--f7-button-padding-vertical, 0px) var(--f7-button-padding-horizontal);\n border-radius: var(--f7-button-border-radius);\n min-width: var(--f7-button-min-width);\n font-weight: var(--f7-button-font-weight);\n letter-spacing: var(--f7-button-letter-spacing);\n text-transform: var(--f7-button-text-transform);\n background-color: var(--f7-button-bg-color);\n box-shadow: var(--f7-button-box-shadow);\n}\n.button.active-state {\n color: var(--f7-button-pressed-text-color, var(--f7-button-text-color, var(--f7-theme-color)));\n}\ninput[type='submit'].button,\ninput[type='button'].button,\ninput[type='reset'].button {\n width: 100%;\n}\n.button > i + span,\n.button > span + span,\n.button > span ~ i {\n margin-right: 4px;\n}\n.subnavbar .button,\n.navbar .button,\n.toolbar .button,\n.searchbar .button {\n color: var(--f7-button-text-color, var(--f7-theme-color));\n}\n.button-round,\n.ios .button-round-ios,\n.md .button-round-md {\n --f7-button-border-radius: var(--f7-button-height);\n}\n.button-fill,\n.ios .button-fill-ios,\n.md .button-fill-md,\n.button-active,\n.button.tab-link-active {\n --f7-button-bg-color: var(--f7-button-fill-bg-color, var(--f7-theme-color));\n --f7-button-text-color: var(--f7-button-fill-text-color, #fff);\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.ios .color-white .button-fill,\n.ios .color-white .ios .button-fill-ios,\n.ios .color-white .md .button-fill-md,\n.ios .color-white .button-active,\n.ios .color-white .button.tab-link-active,\n.ios .button-fill.color-white,\n.ios .ios .button-fill-ios.color-white,\n.ios .md .button-fill-md.color-white,\n.ios .button-active.color-white,\n.ios .button.tab-link-active.color-white {\n --f7-button-text-color: #000;\n}\n.button-fill,\n.ios .button-fill-ios,\n.md .button-fill-md {\n --f7-button-pressed-bg-color: var(--f7-button-fill-pressed-bg-color);\n}\n.button-active,\n.button.tab-link-active {\n --f7-button-pressed-bg-color: var(--f7-button-bg-color);\n}\n.button-outline,\n.ios .button-outline-ios,\n.md .button-outline-md {\n --f7-button-border-color: var(--f7-button-outline-border-color, var(--f7-theme-color));\n --f7-button-border-width: var(--f7-button-outline-border-width);\n}\n.button-tonal,\n.ios .button-tonal-ios,\n.md .button-tonal-md {\n --f7-button-bg-color: var(--f7-button-tonal-bg-color);\n --f7-button-text-color: var(--f7-button-tonal-text-color);\n --f7-button-pressed-bg-color: var(--f7-button-tonal-pressed-bg-color);\n}\n.button-large,\n.ios .button-large-ios,\n.md .button-large-md {\n --f7-button-height: var(--f7-button-large-height);\n --f7-button-font-size: var(--f7-button-large-font-size);\n --f7-button-font-weight: var(--f7-button-large-font-weight);\n --f7-button-text-transform: var(--f7-button-large-text-transform);\n}\n.button-small,\n.ios .button-small-ios,\n.md .button-small-md {\n --f7-button-outline-border-width: var(--f7-button-small-outline-border-width);\n --f7-button-height: var(--f7-button-small-height);\n --f7-button-font-size: var(--f7-button-small-font-size);\n --f7-button-font-weight: var(--f7-button-small-font-weight);\n --f7-button-text-transform: var(--f7-button-small-text-transform);\n}\n.ios .button-small.button-fill,\n.ios .button-small-ios.button-fill,\n.ios .button-small.button-fill-ios {\n --f7-button-border-width: var(--f7-button-small-outline-border-width);\n --f7-button-pressed-text-color: var(--f7-theme-color);\n --f7-button-pressed-bg-color: transparent;\n}\n.segmented {\n align-self: center;\n display: flex;\n flex-wrap: nowrap;\n border-radius: var(--f7-button-border-radius);\n box-shadow: var(--f7-button-box-shadow);\n box-sizing: border-box;\n}\n.segmented .button,\n.segmented button {\n width: 100%;\n flex-shrink: 1;\n min-width: 0;\n border-radius: 0;\n}\n.segmented .button:first-child {\n border-radius: 0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0;\n}\n.segmented .button:not(.button-outline):first-child {\n border-right: none;\n}\n.segmented .button.button-outline:nth-child(n + 2) {\n border-right: none;\n}\n.segmented .button:last-child {\n border-radius: var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius);\n}\n.segmented .button-round:first-child {\n border-radius: 0 var(--f7-button-height) var(--f7-button-height) 0;\n}\n.segmented .button-round:last-child {\n border-radius: var(--f7-button-height) 0 0 var(--f7-button-height);\n}\n.segmented .button:first-child:last-child {\n border-radius: var(--f7-button-border-radius);\n}\n.segmented-raised,\n.ios .segmented-raised-ios,\n.md .segmented-raised-md {\n box-shadow: var(--f7-button-raised-box-shadow);\n}\n.segmented-raised .button:not(.button-outline),\n.ios .segmented-raised-ios .button:not(.button-outline),\n.md .segmented-raised-md .button:not(.button-outline) {\n border-right: 1px solid var(--f7-segmented-raised-divider-color);\n}\n.button-raised,\n.ios .button-raised-ios,\n.md .button-raised-md {\n --f7-button-box-shadow: var(--f7-button-raised-box-shadow);\n}\n.button-raised.active-state,\n.ios .button-raised-ios.active-state,\n.md .button-raised-md.active-state {\n --f7-button-box-shadow: var(--f7-button-raised-pressed-box-shadow);\n}\n.segmented-strong,\n.ios .segmented-strong-ios,\n.md .segmented-strong-md {\n --f7-button-bg-color: transparent;\n --f7-button-hover-bg-color: var(--f7-segmented-strong-button-hover-bg-color);\n --f7-button-text-color: var(--f7-segmented-strong-button-text-color);\n --f7-button-font-weight: var(--f7-segmented-strong-button-font-weight);\n --f7-button-text-transform: var(--f7-segmented-strong-button-text-transform);\n --f7-button-pressed-bg-color: var(--f7-segmented-strong-button-pressed-bg-color);\n position: relative;\n background: var(--f7-segmented-strong-bg-color);\n border-radius: calc(var(--f7-button-border-radius) + 2px);\n box-shadow: none;\n padding: var(--f7-segmented-strong-padding);\n overflow: hidden;\n}\n.segmented-strong .button,\n.ios .segmented-strong-ios .button,\n.md .segmented-strong-md .button {\n z-index: 1;\n transform: translate3d(0, 0, 0);\n}\n.segmented-strong .button,\n.ios .segmented-strong-ios .button,\n.md .segmented-strong-md .button,\n.segmented-strong .button:first-child,\n.ios .segmented-strong-ios .button:first-child,\n.md .segmented-strong-md .button:first-child,\n.segmented-strong .button:last-child,\n.ios .segmented-strong-ios .button:last-child,\n.md .segmented-strong-md .button:last-child {\n border-radius: var(--f7-button-border-radius);\n}\n.segmented-strong .button + .button,\n.ios .segmented-strong-ios .button + .button,\n.md .segmented-strong-md .button + .button {\n margin-right: var(--f7-segmented-strong-between-buttons);\n}\n.segmented-strong .button.button-active,\n.ios .segmented-strong-ios .button.button-active,\n.md .segmented-strong-md .button.button-active,\n.segmented-strong .button.tab-link-active,\n.ios .segmented-strong-ios .button.tab-link-active,\n.md .segmented-strong-md .button.tab-link-active {\n --f7-button-hover-bg-color: transparent;\n --f7-button-bg-color: transparent;\n --f7-button-text-color: var(--f7-segmented-strong-button-active-text-color);\n --f7-button-font-weight: var(--f7-segmented-strong-button-active-font-weight);\n}\n.segmented-strong .segmented-highlight,\n.ios .segmented-strong-ios .segmented-highlight,\n.md .segmented-strong-md .segmented-highlight {\n --f7-segmented-highlight-num: 1;\n --f7-segmented-highlight-active: 0;\n --f7-segmented-highlight-padding: calc(var(--f7-segmented-strong-padding) * 2);\n --f7-segmented-highlight-between: var(--f7-segmented-strong-between-buttons);\n --f7-segmented-highlight-width: calc((100% - var(--f7-segmented-highlight-padding) - var(--f7-segmented-highlight-between) * (var(--f7-segmented-highlight-num) - 1)) / var(--f7-segmented-highlight-num));\n position: absolute;\n background-color: var(--f7-segmented-strong-button-active-bg-color);\n border-radius: var(--f7-button-border-radius);\n box-shadow: var(--f7-segmented-strong-button-active-box-shadow);\n left: var(--f7-segmented-strong-padding);\n top: var(--f7-segmented-strong-padding);\n height: calc(100% - var(--f7-segmented-strong-padding) * 2);\n width: var(--f7-segmented-highlight-width);\n z-index: 0;\n transform: translateX(calc(var(--f7-segmented-highlight-active) * 100% + var(--f7-segmented-highlight-active) * var(--f7-segmented-highlight-between)));\n transition: 200ms;\n}\n.button:nth-child(2) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 2;\n}\n.button:nth-child(3) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 3;\n}\n.button:nth-child(4) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 4;\n}\n.button:nth-child(5) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 5;\n}\n.button:nth-child(6) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 6;\n}\n.button:nth-child(7) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 7;\n}\n.button:nth-child(8) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 8;\n}\n.button:nth-child(9) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 9;\n}\n.button:nth-child(10) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 10;\n}\n.button-active:nth-child(2) ~ .segmented-highlight,\n.tab-link-active:nth-child(2) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 1;\n}\n.button-active:nth-child(3) ~ .segmented-highlight,\n.tab-link-active:nth-child(3) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 2;\n}\n.button-active:nth-child(4) ~ .segmented-highlight,\n.tab-link-active:nth-child(4) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 3;\n}\n.button-active:nth-child(5) ~ .segmented-highlight,\n.tab-link-active:nth-child(5) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 4;\n}\n.button-active:nth-child(6) ~ .segmented-highlight,\n.tab-link-active:nth-child(6) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 5;\n}\n.button-active:nth-child(7) ~ .segmented-highlight,\n.tab-link-active:nth-child(7) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 6;\n}\n.button-active:nth-child(8) ~ .segmented-highlight,\n.tab-link-active:nth-child(8) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 7;\n}\n.button-active:nth-child(9) ~ .segmented-highlight,\n.tab-link-active:nth-child(9) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 8;\n}\n.button-active:nth-child(10) ~ .segmented-highlight,\n.tab-link-active:nth-child(10) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 9;\n}\n.segmented-round,\n.ios .segmented-round-ios,\n.md .segmented-round-md {\n border-radius: var(--f7-button-height);\n}\n.segmented-round .segmented-highlight,\n.ios .segmented-round-ios .segmented-highlight,\n.md .segmented-round-md .segmented-highlight {\n border-radius: var(--f7-button-height);\n}\n.subnavbar .segmented {\n width: 100%;\n}\n.button-preloader {\n position: relative;\n --f7-preloader-color: var(--f7-button-text-color, var(--f7-theme-color));\n}\n.button-preloader:not(.button-large) {\n --f7-preloader-size: calc(var(--f7-button-height) - 6px);\n}\n.button-preloader.button-fill {\n --f7-preloader-color: #fff;\n}\n.button-preloader > span:not(.preloader) {\n transition: 0.2s;\n display: inline-flex;\n align-items: center;\n align-content: center;\n justify-content: center;\n transform: scale(1);\n}\n.button-preloader > .preloader {\n position: absolute;\n left: 50%;\n top: 50%;\n transition: 0.2s;\n transition-property: opacity;\n opacity: 0;\n visibility: hidden;\n margin-left: calc(-1 * var(--f7-preloader-size) / 2);\n margin-top: calc(-1 * var(--f7-preloader-size) / 2);\n}\n.button-preloader.button-loading > span:not(.preloader) {\n opacity: 0;\n transform: scale(0);\n}\n.button-preloader.button-loading > .preloader {\n opacity: 1;\n visibility: visible;\n}\n.ios .button {\n transition-duration: 100ms;\n}\n.ios .button.active-state {\n background-color: var(--f7-button-pressed-bg-color, rgba(var(--f7-theme-color-rgb), 0.15));\n}\n.ios .button-fill,\n.ios .button-fill-ios {\n --f7-button-pressed-bg-color: var(--f7-button-fill-pressed-bg-color, var(--f7-theme-color-tint));\n}\n.ios .button-small,\n.ios .button-small-ios {\n transition-duration: 200ms;\n}\n.md .button {\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n}\n.md .button-fill,\n.md .button-fill-md {\n --f7-button-pressed-bg-color: var(--f7-button-fill-pressed-bg-color, transparent);\n}\n/* === Touch Ripple === */\n:root {\n --f7-touch-ripple-black: rgba(0, 0, 0, 0.1);\n --f7-touch-ripple-white: rgba(255, 255, 255, 0.15);\n --f7-touch-ripple-color: var(--f7-touch-ripple-black);\n}\n.dark {\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.ripple,\n.fab a,\n.link,\n.item-link,\n.list-button,\n.button,\n.dialog-button,\n.tab-link,\n.radio,\n.checkbox,\n.actions-button,\n.speed-dial-buttons a {\n -webkit-user-select: none;\n user-select: none;\n}\n.ripple-wave {\n left: 0;\n top: 0;\n position: absolute !important;\n border-radius: 50%;\n pointer-events: none;\n z-index: -1;\n padding: 0;\n margin: 0;\n font-size: 0;\n transform: translate3d(0px, 0px, 0) scale(0);\n background-color: var(--f7-touch-ripple-color);\n animation: touch-ripple-in 200ms forwards;\n}\n.ripple-wave.ripple-wave-inset {\n background-image: none;\n background-color: var(--f7-touch-ripple-color);\n}\n.ripple-wave.ripple-wave-out {\n transform: var(--f7-ripple-transform);\n animation: touch-ripple-out 250ms forwards !important;\n}\n.item-link .ripple-wave,\n.list label.item-content .ripple-wave,\n.list-button .ripple-wave,\n.links-list a .ripple-wave,\n.button .ripple-wave,\nbutton .ripple-wave,\n.dialog-button .ripple-wave,\n.tab-link .ripple-wave,\n.item-radio .ripple-wave,\n.item-checkbox .ripple-wave,\n.actions-button .ripple-wave,\n.fab a .ripple-wave,\n.stepper-button .ripple-wave,\n.stepper-button-minus .ripple-wave,\n.stepper-button-plus .ripple-wave,\n.list.accordion-list .accordion-item-toggle .ripple-wave,\n.photo-browser .toolbar .link .ripple-wave,\n.ripple-blur .ripple-wave {\n animation: touch-ripple-in-blurred 250ms forwards;\n background-image: radial-gradient(closest-side circle at 50% 50%, var(--f7-touch-ripple-color) 50%, rgba(255, 255, 255, 0));\n background-color: transparent;\n}\n.checkbox .ripple-wave,\n.radio .ripple-wave,\n.data-table .sortable-cell .ripple-wave {\n z-index: 0;\n}\n[class*='ripple-color-'] {\n --f7-touch-ripple-color: var(--f7-theme-color-ripple-color);\n}\n@keyframes touch-ripple-in-blurred {\n from {\n transform: translate3d(0px, 0px, 0) scale(0.5);\n }\n to {\n transform: var(--f7-ripple-transform);\n }\n}\n@keyframes touch-ripple-in {\n from {\n transform: translate3d(0px, 0px, 0) scale(0);\n }\n to {\n transform: var(--f7-ripple-transform);\n }\n}\n@keyframes touch-ripple-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n/* === Icon === */\n.f7-icons,\n.material-icons {\n width: 1em;\n height: 1em;\n}\ni.icon {\n display: inline-block;\n vertical-align: middle;\n background-size: 100% auto;\n background-position: center;\n background-repeat: no-repeat;\n font-style: normal;\n position: relative;\n}\n.icon-back:after,\n.icon-prev:after,\n.icon-forward:after,\n.icon-next:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n.icon[class*='color-'] {\n color: var(--f7-theme-color);\n}\n.ios .icon-back,\n.ios .icon-prev,\n.ios .icon-forward,\n.ios .icon-next {\n width: 12px;\n height: 20px;\n line-height: 20px;\n}\n.ios .icon-back:after,\n.ios .icon-prev:after,\n.ios .icon-forward:after,\n.ios .icon-next:after {\n line-height: inherit;\n}\n.ios .icon-prev:after,\n.ios .icon-next:after {\n font-size: 16px;\n}\n.ios .icon-back:after,\n.ios .icon-prev:after {\n content: 'chevron_right_ios';\n}\n.ios .icon-forward:after,\n.ios .icon-next:after {\n content: 'chevron_left_ios';\n}\n.md .icon-back,\n.md .icon-forward,\n.md .icon-next,\n.md .icon-prev {\n width: 24px;\n height: 24px;\n}\n.md .icon-back:after,\n.md .icon-forward:after,\n.md .icon-next:after,\n.md .icon-prev:after {\n line-height: 1.2;\n}\n.md .icon-back:after {\n content: 'arrow_right_md';\n}\n.md .icon-forward:after {\n content: 'arrow_left_md';\n}\n.md .icon-next:after {\n content: 'chevron_left_md';\n}\n.md .icon-prev:after {\n content: 'chevron_right_md';\n}\n.custom-modal-backdrop {\n z-index: 10500;\n}\n.custom-modal-backdrop,\n.actions-backdrop,\n.dialog-backdrop,\n.popover-backdrop,\n.popup-backdrop,\n.preloader-backdrop,\n.sheet-backdrop,\n.fab-backdrop {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.4);\n z-index: 13000;\n visibility: hidden;\n opacity: 0;\n transition-duration: 400ms;\n}\n.custom-modal-backdrop.not-animated,\n.actions-backdrop.not-animated,\n.dialog-backdrop.not-animated,\n.popover-backdrop.not-animated,\n.popup-backdrop.not-animated,\n.preloader-backdrop.not-animated,\n.sheet-backdrop.not-animated,\n.fab-backdrop.not-animated {\n transition-duration: 0ms;\n}\n.custom-modal-backdrop.backdrop-in,\n.actions-backdrop.backdrop-in,\n.dialog-backdrop.backdrop-in,\n.popover-backdrop.backdrop-in,\n.popup-backdrop.backdrop-in,\n.preloader-backdrop.backdrop-in,\n.sheet-backdrop.backdrop-in,\n.fab-backdrop.backdrop-in {\n visibility: visible;\n opacity: 1;\n}\n/* === Dialog === */\n:root {\n --f7-dialog-button-text-color: var(--f7-theme-color);\n --f7-dialog-button-text-align: center;\n}\n.ios {\n --f7-dialog-width: 270px;\n --f7-dialog-inner-padding: 16px;\n --f7-dialog-border-radius: 13px;\n --f7-dialog-text-align: center;\n --f7-dialog-font-size: 14px;\n --f7-dialog-title-text-color: inherit;\n --f7-dialog-title-font-size: 18px;\n --f7-dialog-title-font-weight: 600;\n --f7-dialog-title-line-height: inherit;\n --f7-dialog-button-font-size: 17px;\n --f7-dialog-button-height: 44px;\n --f7-dialog-button-letter-spacing: 0;\n --f7-dialog-button-font-weight: 400;\n --f7-dialog-button-text-transform: none;\n --f7-dialog-button-strong-bg-color: transparent;\n --f7-dialog-button-strong-text-color: var(--f7-theme-color);\n --f7-dialog-button-strong-font-weight: 500;\n --f7-dialog-input-border-radius: 4px;\n --f7-dialog-input-font-size: 14px;\n --f7-dialog-input-height: 32px;\n --f7-dialog-input-border-width: 1px;\n --f7-dialog-input-placeholder-color: #a9a9a9;\n --f7-dialog-preloader-size: 34px;\n --f7-dialog-input-bg-color: #fff;\n --f7-dialog-bg-color: rgba(255, 255, 255, 0.95);\n --f7-dialog-bg-color-rgb: 255, 255, 255;\n --f7-dialog-text-color: #000;\n --f7-dialog-button-pressed-bg-color: rgba(0, 0, 0, 0.1);\n --f7-dialog-button-strong-pressed-bg-color: rgba(0, 0, 0, 0.1);\n --f7-dialog-input-border-color: rgba(0, 0, 0, 0.3);\n --f7-dialog-border-divider-color: rgba(0, 0, 0, 0.2);\n}\n.ios .dark,\n.ios.dark {\n --f7-dialog-text-color: #fff;\n --f7-dialog-bg-color: rgba(45, 45, 45, 0.95);\n --f7-dialog-bg-color-rgb: 45, 45, 45;\n --f7-dialog-button-pressed-bg-color: rgba(0, 0, 0, 0.2);\n --f7-dialog-button-strong-pressed-bg-color: rgba(0, 0, 0, 0.2);\n --f7-dialog-border-divider-color: rgba(255, 255, 255, 0.15);\n --f7-dialog-input-border-color: rgba(255, 255, 255, 0.15);\n --f7-dialog-input-bg-color: rgba(0, 0, 0, 0.5);\n}\n.md {\n --f7-dialog-width: 280px;\n --f7-dialog-inner-padding: 24px;\n --f7-dialog-border-radius: 28px;\n --f7-dialog-text-align: right;\n --f7-dialog-font-size: 14px;\n --f7-dialog-title-font-size: 24px;\n --f7-dialog-title-font-weight: 400;\n --f7-dialog-title-line-height: 1.3;\n --f7-dialog-button-font-size: 14px;\n --f7-dialog-button-height: 40px;\n --f7-dialog-button-letter-spacing: normal;\n --f7-dialog-button-font-weight: 500;\n --f7-dialog-button-text-transform: none;\n --f7-dialog-button-strong-font-weight: 500;\n --f7-dialog-input-border-radius: 0px;\n --f7-dialog-input-font-size: 16px;\n --f7-dialog-input-height: 36px;\n --f7-dialog-input-border-color: transparent;\n --f7-dialog-input-border-width: 0px;\n --f7-dialog-preloader-size: 32px;\n --f7-dialog-input-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-dialog-button-pressed-bg-color: transparent;\n --f7-dialog-button-strong-bg-color: var(--f7-theme-color);\n --f7-dialog-button-strong-text-color: var(--f7-md-on-primary);\n --f7-dialog-button-strong-pressed-bg-color: transparent;\n --f7-dialog-bg-color: var(--f7-md-surface-3);\n --f7-dialog-input-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-dialog-text-color: var(--f7-md-on-surface-variant);\n --f7-dialog-title-text-color: var(--f7-md-on-surface);\n}\n.dialog {\n position: absolute;\n z-index: 13500;\n left: 50%;\n margin-top: 0;\n top: 50%;\n overflow: hidden;\n opacity: 0;\n transform: translate3d(0, -50%, 0) scale(1.185);\n transition-property: transform, opacity;\n display: none;\n transition-duration: 400ms;\n width: var(--f7-dialog-width);\n margin-left: calc(-1 * var(--f7-dialog-width) / 2);\n border-radius: var(--f7-dialog-border-radius);\n text-align: var(--f7-dialog-text-align);\n color: var(--f7-dialog-text-color);\n font-size: var(--f7-dialog-font-size);\n background: var(--f7-dialog-bg-color);\n will-change: transform, opacity;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .dialog {\n background-color: rgba(var(--f7-dialog-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.dialog.modal-in {\n opacity: 1;\n transform: translate3d(0, -50%, 0) scale(1);\n}\n.dialog.modal-out {\n opacity: 0;\n z-index: 13499;\n}\n.dialog.not-animated {\n transition-duration: 0ms;\n}\n.dialog-inner {\n position: relative;\n padding: var(--f7-dialog-inner-padding);\n}\n.dialog-title {\n color: var(--f7-dialog-title-text-color);\n font-size: var(--f7-dialog-title-font-size);\n font-weight: var(--f7-dialog-title-font-weight);\n line-height: var(--f7-dialog-title-line-height);\n}\n.dialog-buttons {\n position: relative;\n display: flex;\n flex-direction: row-reverse;\n}\n.dialog-buttons-vertical .dialog-buttons {\n display: block;\n height: auto !important;\n}\n.dialog-button {\n box-sizing: border-box;\n overflow: hidden;\n position: relative;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: var(--f7-dialog-button-text-color);\n font-size: var(--f7-dialog-button-font-size);\n height: var(--f7-dialog-button-height);\n line-height: var(--f7-dialog-button-height);\n letter-spacing: var(--f7-dialog-button-letter-spacing);\n text-align: var(--f7-dialog-button-text-align);\n font-weight: var(--f7-dialog-button-font-weight);\n text-transform: var(--f7-dialog-button-text-transform);\n display: block;\n cursor: pointer;\n}\n.dialog-button.active-state {\n background-color: var(--f7-dialog-button-pressed-bg-color);\n}\n.dialog-button-strong {\n background-color: var(--f7-dialog-button-strong-bg-color);\n color: var(--f7-dialog-button-strong-text-color);\n font-weight: var(--f7-dialog-button-strong-font-weight);\n}\n.dialog-button-strong.active-state {\n background-color: var(--f7-dialog-button-strong-pressed-bg-color);\n}\n.dialog-no-buttons .dialog-buttons {\n display: none;\n}\n.dialog-input-field {\n position: relative;\n}\ninput.dialog-input[type] {\n box-sizing: border-box;\n margin: 0;\n margin-top: 15px;\n border-radius: var(--f7-dialog-input-border-radius);\n -webkit-appearance: none;\n appearance: none;\n width: 100%;\n display: block;\n font-family: inherit;\n box-shadow: none;\n font-size: var(--f7-dialog-input-font-size);\n height: var(--f7-dialog-input-height);\n background-color: var(--f7-dialog-input-bg-color);\n border: var(--f7-dialog-input-border-width) solid var(--f7-dialog-input-border-color);\n}\ninput.dialog-input[type]::placeholder {\n color: var(--f7-dialog-input-placeholder-color);\n}\n.dialog-input-double input.dialog-input {\n border-radius: var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius) 0 0;\n}\n.dialog-input-double + .dialog-input-double input.dialog-input {\n border-radius: 0 0 var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius);\n}\n.dialog-preloader .preloader {\n --f7-preloader-size: var(--f7-dialog-preloader-size);\n}\nhtml.with-modal-dialog .page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\n.ios .dialog.modal-out {\n transform: translate3d(0, -50%, 0) scale(1);\n}\n.ios .dialog-inner {\n border-radius: var(--f7-dialog-border-radius) var(--f7-dialog-border-radius) 0 0;\n}\n.ios .dialog-inner:after {\n content: '';\n position: absolute;\n background-color: var(--f7-dialog-border-divider-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.ios .dialog-title + .dialog-text {\n margin-top: 5px;\n}\n.ios .dialog-buttons {\n height: 44px;\n justify-content: center;\n}\n.ios .dialog-button {\n width: 100%;\n padding: 0 5px;\n -webkit-box-flex: 1;\n -ms-flex: 1;\n}\n.ios .dialog-button:after {\n content: '';\n position: absolute;\n background-color: var(--f7-dialog-border-divider-color);\n display: block;\n z-index: 15;\n top: 0;\n right: 0;\n bottom: auto;\n left: auto;\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.ios .dialog-button:first-child {\n border-radius: 0 0 0 var(--f7-dialog-border-radius);\n}\n.ios .dialog-button:last-child {\n border-radius: 0 0 var(--f7-dialog-border-radius) 0;\n}\n.ios .dialog-button:last-child:after {\n display: none !important;\n}\n.ios .dialog-button:first-child:last-child {\n border-radius: 0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius);\n}\n.ios .dialog-button[class*='color-'] {\n --f7-dialog-button-text-color: var(--f7-theme-color);\n}\n.ios .dialog-buttons-vertical .dialog-buttons {\n height: auto;\n}\n.ios .dialog-buttons-vertical .dialog-button {\n border-radius: 0;\n}\n.ios .dialog-buttons-vertical .dialog-button:after {\n content: '';\n position: absolute;\n background-color: var(--f7-dialog-border-divider-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.ios .dialog-buttons-vertical .dialog-button:last-child {\n border-radius: 0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius);\n}\n.ios .dialog-buttons-vertical .dialog-button:last-child:after {\n display: none !important;\n}\n.ios .dialog-no-buttons .dialog-inner {\n border-radius: var(--f7-dialog-border-radius);\n}\n.ios .dialog-no-buttons .dialog-inner:after {\n display: none !important;\n}\n.ios .dialog-input-field {\n margin-top: 15px;\n}\n.ios .dialog-input {\n padding: 0 5px;\n}\n.ios .dialog-input + .dialog-input {\n margin-top: 5px;\n}\n.ios .dialog-input-double + .dialog-input-double {\n margin-top: 0;\n}\n.ios .dialog-input-double + .dialog-input-double .dialog-input {\n border-top: 0;\n margin-top: 0;\n}\n.ios .dialog-preloader .dialog-title ~ .preloader,\n.ios .dialog-preloader .dialog-text ~ .preloader {\n margin-top: 15px;\n}\n.ios .dialog-progress .dialog-title ~ .progressbar,\n.ios .dialog-progress .dialog-text ~ .progressbar,\n.ios .dialog-progress .dialog-title ~ .progressbar-infinite,\n.ios .dialog-progress .dialog-text ~ .progressbar-infinite {\n margin-top: 15px;\n}\n.md .dialog.modal-out {\n transform: translate3d(0, -50%, 0) scale(0.815);\n}\n.md .dialog-title + .dialog-text {\n margin-top: 20px;\n}\n.md .dialog-text {\n line-height: 1.5;\n}\n.md .dialog-buttons {\n height: 64px;\n padding: 0px 24px 24px;\n overflow: hidden;\n box-sizing: border-box;\n justify-content: flex-end;\n}\n.md .dialog-button {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n border-radius: 99px;\n min-width: 64px;\n padding: 0px 16px;\n border: none;\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n}\n.md .dialog-button + .dialog-button {\n margin-left: 8px;\n}\n.md .dialog-button-strong {\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.md .dialog-button[class*='color-'] {\n --f7-dialog-button-text-color: var(--f7-theme-color);\n}\n.md .dialog-buttons-vertical .dialog-buttons {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n}\n.md .dialog-buttons-vertical .dialog-button + .dialog-button {\n margin-top: 8px;\n margin-left: 0;\n}\n.md .dialog-input {\n padding: 0;\n transition-duration: 200ms;\n position: relative;\n}\n.md .dialog-input + .dialog-input {\n margin-top: 16px;\n}\n.md .dialog-preloader .dialog-title,\n.md .dialog-progress .dialog-title,\n.md .dialog-preloader .dialog-inner,\n.md .dialog-progress .dialog-inner {\n text-align: center;\n}\n.md .dialog-preloader .dialog-title ~ .preloader,\n.md .dialog-preloader .dialog-text ~ .preloader {\n margin-top: 20px;\n}\n.md .dialog-progress .dialog-title ~ .progressbar,\n.md .dialog-progress .dialog-text ~ .progressbar,\n.md .dialog-progress .dialog-title ~ .progressbar-infinite,\n.md .dialog-progress .dialog-text ~ .progressbar-infinite {\n margin-top: 16px;\n}\n/* === Popup === */\n:root {\n --f7-popup-border-radius: 0px;\n --f7-popup-tablet-width: 630px;\n --f7-popup-tablet-height: 630px;\n --f7-popup-push-offset: var(--f7-safe-area-top);\n /*\n --f7-popup-tablet-border-radius: var(--f7-popup-border-radius);\n */\n}\n.ios {\n --f7-popup-tablet-border-radius: 5px;\n --f7-popup-transition-duration: 400ms;\n --f7-popup-transition-timing-function: initial;\n --f7-popup-push-border-radius: 10px;\n}\n.md {\n --f7-popup-tablet-border-radius: 28px;\n --f7-popup-transition-duration: 600ms;\n --f7-popup-transition-timing-function: cubic-bezier(0, 1, 0.2, 1);\n --f7-popup-push-border-radius: 28px;\n}\n.popup-backdrop {\n z-index: 10500;\n}\n.popup-backdrop-unique {\n z-index: 11000;\n}\n.popup {\n position: absolute;\n left: 0;\n top: 0px;\n width: 100%;\n height: 100%;\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n transition-timing-function: var(--f7-popup-transition-timing-function);\n transform: translate3d(0, 100vh, 0);\n background: #fff;\n z-index: 11000;\n overflow: hidden;\n border-radius: var(--f7-popup-border-radius);\n}\n.dark .popup,\n.popup.dark {\n background: #000;\n}\n.popup.modal-in,\n.popup.modal-out {\n transition-duration: var(--f7-popup-transition-duration);\n}\n.popup.not-animated {\n transition-duration: 0ms;\n}\n.popup.modal-in {\n display: block;\n transform: translate3d(0, 0, 0);\n}\n.popup.modal-out {\n transform: translate3d(0, 100vh, 0);\n}\n.popup.swipe-close-to-top.modal-out {\n transform: translate3d(0, -100vh, 0);\n}\n@media (min-width: 630px) and (min-height: 630px) {\n .popup:not(.popup-tablet-fullscreen) {\n --f7-safe-area-top: 0px;\n --f7-safe-area-bottom: 0px;\n width: var(--f7-popup-tablet-width);\n height: var(--f7-popup-tablet-height);\n left: 50%;\n top: 50%;\n margin-left: calc(-1 * var(--f7-popup-tablet-width) / 2);\n margin-top: calc(-1 * var(--f7-popup-tablet-height) / 2);\n transform: translate3d(0, 100vh, 0);\n border-radius: var(--f7-popup-tablet-border-radius, var(--f7-popup-border-radius));\n }\n .popup:not(.popup-tablet-fullscreen).modal-in {\n transform: translate3d(0, 0, 0);\n }\n .popup:not(.popup-tablet-fullscreen).modal-out {\n transform: translate3d(0, 100vh, 0);\n }\n .popup:not(.popup-tablet-fullscreen).swipe-close-to-top.modal-out {\n transform: translate3d(0, -100vh, 0);\n }\n .popup:not(.popup-tablet-fullscreen).popup-behind {\n transform: translate3d(0, 0, 0) scale(0.9);\n pointer-events: none;\n }\n .popup:not(.popup-tablet-fullscreen).popup-behind.modal-out {\n transform: translate3d(0, 100vh, 0) scale(0.9);\n }\n html.with-modal-popup-push .popup-push:not(.popup-tablet-fullscreen) {\n margin-top: 0;\n }\n}\nhtml.with-modal-popup .framework7-root > .views .page-content,\nhtml.with-modal-popup .framework7-root > .view .page-content,\nhtml.with-modal-popup .framework7-root > .panel .page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\nhtml.with-modal-popup-push .popup-push,\nhtml.with-modal-popup-push-closing .popup-push {\n top: calc(var(--f7-popup-push-offset) + 10px);\n height: calc(100% - var(--f7-popup-push-offset) - 10px);\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n --f7-safe-area-top: 0px;\n}\nhtml.with-modal-popup-push .popup-push .view,\nhtml.with-modal-popup-push-closing .popup-push .view,\nhtml.with-modal-popup-push .popup-push .page,\nhtml.with-modal-popup-push-closing .popup-push .page {\n --f7-safe-area-top: 0px;\n}\nhtml.with-modal-popup-push .framework7-root,\nhtml.with-modal-popup-push-closing .framework7-root {\n background: #000;\n}\nhtml.with-modal-popup-push .framework7-root > .views,\nhtml.with-modal-popup-push-closing .framework7-root > .views,\nhtml.with-modal-popup-push .framework7-root > .view,\nhtml.with-modal-popup-push-closing .framework7-root > .view {\n transition-duration: var(--f7-popup-transition-duration);\n transition-timing-function: var(--f7-popup-transition-timing-function);\n}\nhtml.with-modal-popup-push.dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-popup-push.dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-popup-push .dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-popup-push .dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-popup-push .dark.framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-popup-push .dark.framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-popup-push .framework7-root > .views.dark:after,\nhtml.with-modal-popup-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-popup-push .framework7-root > .view.dark:after,\nhtml.with-modal-popup-push-closing .framework7-root > .view.dark:after {\n content: '';\n position: absolute;\n pointer-events: none;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(255, 255, 255, 0.1);\n z-index: 13000;\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n opacity: 1;\n animation: popup-dark-push-overlay-fade-in var(--f7-popup-transition-duration) forwards;\n}\nhtml.with-modal-popup-push .framework7-root > .views,\nhtml.with-modal-popup-push .framework7-root > .view {\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n transform: translate3d(0, 0, 0px) scale(var(--f7-popup-push-scale, 1)) !important;\n}\nhtml.with-modal-popup-push .popup:after {\n content: '';\n pointer-events: none;\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.4);\n z-index: 13000;\n transition-duration: var(--f7-popup-transition-duration);\n transition-timing-function: var(--f7-popup-transition-timing-function);\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n opacity: 0;\n}\nhtml.with-modal-popup-push.dark .popup:after,\nhtml.with-modal-popup-push .dark .popup:after,\nhtml.with-modal-popup-push .dark.popup:after {\n background: rgba(255, 255, 255, 0.05);\n}\nhtml.with-modal-popup-push .popup-behind {\n transform: translate3d(0, 0px, 0px) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind.modal-out {\n transform: translate3d(0, 100vh, 0) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind:not(.popup-push) {\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n}\nhtml.with-modal-popup-push .popup-behind.popup-push {\n transform: translate3d(0, calc(0px - var(--f7-popup-push-offset) - 10px), 0px) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind.popup-push.modal-out {\n transform: translate3d(0, calc(0px - var(--f7-popup-push-offset) - 10px + 100vh), 0px) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind:after {\n opacity: 1;\n pointer-events: auto;\n}\nhtml.with-modal-popup-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-popup-push-closing .framework7-root > .view.dark:after {\n animation: popup-dark-push-overlay-fade-out var(--f7-popup-transition-duration) forwards;\n animation-timing-function: var(--f7-popup-transition-timing-function);\n}\n@keyframes popup-dark-push-overlay-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes popup-dark-push-overlay-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n/* === Login Screen === */\n:root {\n --f7-login-screen-blocks-max-width: 480px;\n --f7-login-screen-title-text-align: center;\n --f7-login-screen-title-text-color: inherit;\n --f7-login-screen-title-letter-spacing: 0;\n}\n.ios {\n --f7-login-screen-blocks-margin-vertical: 25px;\n --f7-login-screen-transition-timing-function: initial;\n --f7-login-screen-transition-duration: 400ms;\n --f7-login-screen-title-font-weight: 600;\n --f7-login-screen-title-font-size: 28px;\n --f7-login-screen-content-bg-color: #fff;\n --f7-login-screen-bg-color: #fff;\n}\n.ios .dark,\n.ios.dark {\n --f7-login-screen-bg-color: #000;\n --f7-login-screen-content-bg-color: #000;\n}\n.md {\n --f7-login-screen-transition-duration: 600ms;\n --f7-login-screen-transition-timing-function: cubic-bezier(0, 1, 0.2, 1);\n --f7-login-screen-blocks-margin-vertical: 24px;\n --f7-login-screen-title-font-weight: 400;\n --f7-login-screen-title-font-size: 28px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-login-screen-content-bg-color: var(--f7-md-surface);\n --f7-login-screen-bg-color: var(--f7-md-surface);\n}\n.login-screen {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n transform: translate3d(0, 100vh, 0);\n background: var(--f7-login-screen-bg-color);\n transition-timing-function: var(--f7-login-screen-transition-timing-function);\n z-index: 11000;\n}\n.login-screen.modal-in,\n.login-screen.modal-out {\n transition-duration: var(--f7-login-screen-transition-duration);\n}\n.login-screen.not-animated {\n transition-duration: 0ms;\n}\n.login-screen.modal-in {\n display: block;\n transform: translate3d(0, 0, 0);\n}\n.login-screen.modal-out {\n transform: translate3d(0, 100%, 0);\n}\n.login-screen-content,\n.login-screen-page,\n.login-screen .page {\n background: var(--f7-login-screen-content-bg-color);\n}\n.login-screen-content .login-screen-title,\n.login-screen-page .login-screen-title,\n.login-screen-content .list,\n.login-screen-page .list,\n.login-screen-content .block,\n.login-screen-page .block {\n margin: var(--f7-login-screen-blocks-margin-vertical) auto;\n}\n.login-screen-content .login-screen-title,\n.login-screen-page .login-screen-title,\n.login-screen-content .list,\n.login-screen-page .list,\n.login-screen-content .block,\n.login-screen-page .block,\n.login-screen-content .block-footer,\n.login-screen-page .block-footer,\n.login-screen-content .block-header,\n.login-screen-page .block-header {\n max-width: var(--f7-login-screen-blocks-max-width);\n}\n.login-screen-content .list ul,\n.login-screen-page .list ul {\n background: none;\n}\n.login-screen-content .list ul:before,\n.login-screen-page .list ul:before,\n.login-screen-content .list ul:after,\n.login-screen-page .list ul:after {\n display: none !important;\n}\n.login-screen-content .block-footer,\n.login-screen-page .block-footer,\n.login-screen-content .block-header,\n.login-screen-page .block-header {\n text-align: center;\n margin-left: auto;\n margin-right: auto;\n}\n.login-screen-title {\n text-align: var(--f7-login-screen-title-text-align);\n font-size: var(--f7-login-screen-title-font-size);\n font-weight: var(--f7-login-screen-title-font-weight);\n color: var(--f7-login-screen-title-text-color);\n letter-spacing: var(--f7-login-screen-title-letter-spacing);\n}\n.login-screen-page,\n.login-screen > .view > .page,\n.login-screen > .page {\n display: flex;\n flex-direction: column;\n}\n.login-screen-page .page-content,\n.login-screen > .view > .page .page-content,\n.login-screen > .page .page-content,\n.login-screen-page .login-screen-content,\n.login-screen > .view > .page .login-screen-content,\n.login-screen > .page .login-screen-content {\n margin-top: auto;\n margin-bottom: auto;\n height: auto;\n max-height: 100%;\n width: 100%;\n}\n.dark .login-screen-content .list ul,\n.dark .login-screen-content .block-strong,\n.dark .login-screen-page .list ul,\n.dark .login-screen-page .block-strong,\n.dark.login-screen-page .list ul,\n.dark.login-screen-page .block-strong {\n background-color: transparent;\n}\n/* === Popover === */\n:root {\n --f7-popover-width: 260px;\n}\n.ios {\n --f7-popover-border-radius: 13px;\n --f7-popover-actions-icon-size: 28px;\n --f7-popover-transition-timing-function: initial;\n --f7-popover-bg-color: rgba(255, 255, 255, 0.95);\n --f7-popover-actions-label-text-color: rgba(0, 0, 0, 0.45);\n}\n.ios .dark,\n.ios.dark {\n --f7-popover-bg-color: rgba(30, 30, 30, 0.95);\n --f7-popover-actions-label-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-popover-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n --f7-popover-border-radius: 28px;\n --f7-popover-actions-icon-size: 24px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-popover-bg-color: var(--f7-md-surface-3);\n --f7-popover-actions-label-text-color: var(--f7-md-on-surface-variant);\n}\n.popover-backdrop-unique {\n z-index: 13500;\n}\n.popover {\n width: var(--f7-popover-width);\n z-index: 13500;\n margin: 0;\n top: 0;\n opacity: 0;\n left: 0;\n position: absolute;\n display: none;\n transition-duration: 300ms;\n background-color: var(--f7-popover-bg-color);\n border-radius: var(--f7-popover-border-radius);\n will-change: transform, opacity;\n --f7-safe-area-top: 0px;\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n --f7-safe-area-bottom: 0px;\n}\n.popover .list {\n margin: 0;\n}\n.popover .list ul {\n background: none;\n}\n.popover .list:first-child ul:before {\n display: none !important;\n}\n.popover .list:last-child ul:after {\n display: none !important;\n}\n.popover .list:first-child ul {\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n}\n.popover .list:first-child li:first-child,\n.popover .list:first-child li:first-child a,\n.popover .list:first-child li:first-child > label {\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n}\n.popover .list:last-child ul {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.popover .list:last-child li:last-child,\n.popover .list:last-child li:last-child a,\n.popover .list:last-child li:last-child > label {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.popover .list:first-child:last-child li:first-child:last-child,\n.popover .list:first-child:last-child li:first-child:last-child a,\n.popover .list:first-child:last-child li:first-child:last-child > label,\n.popover .list:first-child:last-child ul {\n border-radius: var(--f7-popover-border-radius);\n}\n.popover .list + .list {\n margin-top: var(--f7-list-margin-vertical);\n}\n.popover.modal-in {\n opacity: 1;\n}\n.popover.not-animated {\n transition-duration: 0ms;\n}\n.popover,\n.popover-backdrop {\n transition-timing-function: var(--f7-popover-transition-timing-function);\n}\n.popover-inner {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n}\n.popover-from-actions .item-link i.icon {\n width: var(--f7-popover-actions-icon-size);\n height: var(--f7-popover-actions-icon-size);\n font-size: var(--f7-popover-actions-icon-size);\n}\n.ios .popover-from-actions-strong {\n font-weight: 600;\n}\n.md .popover-from-actions-strong {\n font-weight: 500;\n}\n.popover-from-actions-label {\n line-height: 1.3;\n position: relative;\n display: flex;\n align-items: center;\n padding: var(--f7-actions-label-padding);\n color: var(--f7-popover-actions-label-text-color);\n font-size: var(--f7-actions-label-font-size);\n justify-content: var(--f7-actions-label-justify-content);\n}\n.popover-from-actions-label:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.popover-from-actions-label:last-child:after {\n display: none !important;\n}\n.md .popover-from-actions-label {\n justify-content: center;\n}\n.popover-arrow {\n width: 26px;\n height: 26px;\n position: absolute;\n left: -26px;\n top: 0;\n z-index: 100;\n overflow: hidden;\n}\n.popover-arrow:after {\n content: '';\n background: var(--f7-popover-bg-color);\n width: 26px;\n height: 26px;\n position: absolute;\n left: 0;\n top: 0;\n border-radius: 3px;\n transform: rotate(45deg);\n}\n.popover-arrow.on-left {\n left: -26px;\n}\n.popover-arrow.on-left:after {\n left: 19px;\n top: 0;\n}\n.popover-arrow.on-right {\n left: 100%;\n}\n.popover-arrow.on-right:after {\n left: -19px;\n top: 0;\n}\n.popover-arrow.on-top {\n left: 0;\n top: -26px;\n}\n.popover-arrow.on-top:after {\n left: 0;\n top: 19px;\n}\n.popover-arrow.on-bottom {\n left: 0;\n top: 100%;\n}\n.popover-arrow.on-bottom:after {\n left: 0;\n top: -19px;\n}\n.ios .popover {\n transform: none;\n transition-property: opacity;\n}\n.md .popover {\n transform: scale(0.85, 0.6);\n transition-property: opacity, transform;\n}\n.md .popover.modal-in {\n opacity: 1;\n transform: scale(1);\n}\n.md .popover.modal-out {\n opacity: 0;\n transform: scale(1);\n}\n.md .popover-on-top {\n transform-origin: center bottom;\n}\n.md .popover-on-top.popover-on-right {\n transform-origin: left bottom;\n}\n.md .popover-on-top.popover-on-left {\n transform-origin: right bottom;\n}\n.md .popover-on-middle {\n transform-origin: center center;\n}\n.md .popover-on-middle.popover-on-right {\n transform-origin: left center;\n}\n.md .popover-on-middle.popover-on-left {\n transform-origin: right center;\n}\n.md .popover-on-bottom {\n transform-origin: center top;\n}\n.md .popover-on-bottom.popover-on-right {\n transform-origin: left top;\n}\n.md .popover-on-bottom.popover-on-left {\n transform-origin: right top;\n}\n/* === Actions === */\n:root {\n --f7-actions-grid-button-font-size: 12px;\n --f7-actions-grid-button-icon-size: 48px;\n}\n.ios {\n --f7-actions-transition-timing-function: initial;\n --f7-actions-border-radius: 13px;\n /*\n --f7-actions-button-text-color: var(--f7-theme-color);\n */\n --f7-actions-grid-button-text-color: #757575;\n --f7-actions-button-padding: 0px;\n --f7-actions-button-text-align: center;\n --f7-actions-button-height: 57px;\n --f7-actions-button-height-landscape: 44px;\n --f7-actions-button-font-size: 20px;\n --f7-actions-button-icon-size: 28px;\n --f7-actions-button-justify-content: center;\n --f7-actions-label-padding: 8px 10px;\n --f7-actions-label-font-weight: 400;\n --f7-actions-label-font-size: 13px;\n --f7-actions-label-justify-content: center;\n --f7-actions-group-border-color: transparent;\n --f7-actions-group-margin: 8px;\n --f7-actions-bg-color: rgba(255, 255, 255, 0.95);\n --f7-actions-bg-color-rgb: 255, 255, 255;\n --f7-actions-button-border-color: rgba(0, 0, 0, 0.2);\n --f7-actions-button-pressed-bg-color: rgba(230, 230, 230, 0.9);\n --f7-actions-button-pressed-bg-color-rgb: 230, 230, 230;\n --f7-actions-label-text-color: #8a8a8a;\n}\n.ios .dark,\n.ios.dark {\n --f7-actions-bg-color: rgba(45, 45, 45, 0.95);\n --f7-actions-bg-color-rgb: 45, 45, 45;\n --f7-actions-button-border-color: rgba(255, 255, 255, 0.15);\n --f7-actions-button-pressed-bg-color: rgba(50, 50, 50, 0.9);\n --f7-actions-button-pressed-bg-color-rgb: 50, 50, 50;\n --f7-actions-label-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-actions-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n --f7-actions-border-radius: 16px;\n --f7-actions-button-border-color: transparent;\n --f7-actions-button-padding: 0 16px;\n --f7-actions-button-text-align: left;\n --f7-actions-button-height: 48px;\n --f7-actions-button-height-landscape: 48px;\n --f7-actions-button-font-size: 16px;\n --f7-actions-button-icon-size: 24px;\n --f7-actions-button-justify-content: space-between;\n --f7-actions-label-padding: 12px 16px;\n --f7-actions-label-font-size: 14px;\n --f7-actions-label-font-weight: 500;\n --f7-actions-label-justify-content: flex-start;\n --f7-actions-group-margin: 0px;\n --f7-actions-button-pressed-bg-color: #e5e5e5;\n}\n.md .dark,\n.md.dark {\n --f7-actions-button-pressed-bg-color: #2e2e2e;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-actions-button-text-color: var(--f7-md-on-surface);\n --f7-actions-bg-color: var(--f7-md-surface-3);\n --f7-actions-group-border-color: var(--f7-md-outline);\n --f7-actions-label-text-color: var(--f7-theme-color);\n --f7-actions-grid-button-text-color: var(--f7-md-on-surface);\n}\n.actions-backdrop-unique {\n z-index: 13500;\n}\n.actions-modal {\n position: absolute;\n left: 0;\n bottom: 0;\n z-index: 13500;\n width: 100%;\n transform: translate3d(0, 100%, 0);\n display: none;\n max-height: 100%;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n transition-property: transform;\n will-change: transform;\n}\n.actions-modal.modal-in,\n.actions-modal.modal-out {\n transition-duration: 300ms;\n}\n.actions-modal.not-animated {\n transition-duration: 0ms;\n}\n.ios .actions-modal.modal-in {\n transform: translate3d(0, calc(-1 * var(--f7-safe-area-bottom)), 0);\n}\n.md .actions-modal.modal-in {\n transform: translate3d(0, 0, 0);\n}\n.actions-modal.modal-out {\n z-index: 13499;\n transform: translate3d(0, 100%, 0);\n}\n@media (min-width: 496px) {\n .actions-modal {\n width: 480px;\n left: 50%;\n margin-left: -240px;\n }\n}\n@media (orientation: landscape) {\n .actions-modal {\n --f7-actions-button-height: var(--f7-actions-button-height-landscape);\n }\n}\n.actions-backdrop,\n.actions-modal {\n transition-timing-function: var(--f7-actions-transition-timing-function);\n}\n.actions-group {\n overflow: hidden;\n position: relative;\n margin: var(--f7-actions-group-margin);\n transform: translate3d(0, 0, 0);\n}\n.actions-group:after {\n content: '';\n position: absolute;\n background-color: var(--f7-actions-group-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.actions-group:last-child:after {\n display: none !important;\n}\n.actions-button,\n.actions-label {\n width: 100%;\n font-weight: normal;\n margin: 0;\n box-sizing: border-box;\n display: block;\n position: relative;\n overflow: hidden;\n text-align: var(--f7-actions-button-text-align);\n}\n.actions-button:after,\n.actions-label:after {\n content: '';\n position: absolute;\n background-color: var(--f7-actions-button-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.actions-button a,\n.actions-label a {\n text-decoration: none;\n color: inherit;\n display: block;\n}\n.actions-button {\n cursor: pointer;\n display: flex;\n color: var(--f7-actions-button-text-color, var(--f7-theme-color));\n font-size: var(--f7-actions-button-font-size);\n height: var(--f7-actions-button-height);\n line-height: var(--f7-actions-button-height);\n padding: var(--f7-actions-button-padding);\n justify-content: var(--f7-actions-button-justify-content);\n z-index: 10;\n}\n.actions-button.active-state {\n background-color: var(--f7-actions-button-pressed-bg-color) !important;\n}\n.actions-button[class*='color-'] {\n color: var(--f7-theme-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .actions-button.active-state {\n background-color: rgba(var(--f7-actions-button-pressed-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.actions-button-media {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n}\n.actions-button-media i.icon {\n width: var(--f7-actions-button-icon-size);\n height: var(--f7-actions-button-icon-size);\n font-size: var(--f7-actions-button-icon-size);\n}\n.actions-button a,\n.actions-button-text {\n position: relative;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.actions-button-text {\n width: 100%;\n flex-shrink: 1;\n text-align: var(--f7-actions-button-text-align);\n}\n.actions-label {\n line-height: 1.3;\n display: flex;\n align-items: center;\n font-size: var(--f7-actions-label-font-size);\n font-weight: var(--f7-actions-label-font-weight);\n color: var(--f7-actions-label-text-color);\n padding: var(--f7-actions-label-padding);\n justify-content: var(--f7-actions-label-justify-content);\n min-height: var(--f7-actions-label-min-height, var(--f7-actions-button-height));\n}\n.actions-label[class*=' color-'] {\n --f7-actions-label-text-color: var(--f7-theme-color);\n}\n.actions-grid .actions-group {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n margin-top: 0;\n}\n.actions-grid .actions-group:not(:last-child) {\n margin-bottom: 0;\n}\n.actions-grid .actions-button,\n.actions-grid .actions-label {\n background: none;\n}\n.actions-grid .actions-button {\n width: 33.33333333%;\n display: block;\n color: var(--f7-actions-grid-button-text-color);\n height: auto;\n line-height: 1;\n padding: 16px;\n}\n.actions-grid .actions-button:after {\n display: none !important;\n}\n.actions-grid .actions-button-media {\n margin-left: auto !important;\n margin-right: auto !important;\n width: var(--f7-actions-grid-button-icon-size);\n height: var(--f7-actions-grid-button-icon-size);\n}\n.actions-grid .actions-button-media i.icon {\n width: var(--f7-actions-grid-button-icon-size);\n height: var(--f7-actions-grid-button-icon-size);\n font-size: var(--f7-actions-grid-button-icon-size);\n}\n.actions-grid .actions-button-text {\n margin-left: 0 !important;\n text-align: center !important;\n margin-top: 8px;\n line-height: 1.33em;\n height: 1.33em;\n font-size: var(--f7-actions-grid-button-font-size);\n}\n.ios .actions-group {\n border-radius: var(--f7-actions-border-radius);\n}\n.ios .actions-button,\n.ios .actions-label {\n background: var(--f7-actions-bg-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .ios .actions-button,\n .ios-translucent-modals .ios .actions-label {\n background-color: rgba(var(--f7-actions-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.ios .actions-button:first-child,\n.ios .actions-label:first-child {\n border-radius: var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;\n}\n.ios .actions-button:last-child,\n.ios .actions-label:last-child {\n border-radius: 0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius);\n}\n.ios .actions-button:last-child:after,\n.ios .actions-label:last-child:after {\n display: none !important;\n}\n.ios .actions-button:first-child:last-child,\n.ios .actions-label:first-child:last-child {\n border-radius: var(--f7-actions-border-radius);\n}\n.ios .actions-button b,\n.ios .actions-label b,\n.ios .actions-button.actions-button-strong,\n.ios .actions-label.actions-button-strong {\n font-weight: 600;\n}\n.ios .actions-grid .actions-group {\n border-radius: 0;\n background: var(--f7-actions-bg-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .ios .actions-grid .actions-group {\n background-color: rgba(var(--f7-actions-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.ios .actions-grid .actions-group:first-child {\n border-radius: var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;\n}\n.ios .actions-grid .actions-group:last-child {\n border-radius: 0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius);\n}\n.ios .actions-grid .actions-group:first-child:last-child {\n border-radius: var(--f7-actions-border-radius);\n}\n.ios .actions-grid .actions-button,\n.ios .actions-grid .actions-label {\n border-radius: 0 !important;\n}\n.ios .actions-button-media {\n margin-left: 16px;\n}\n.ios .actions-button-media + .actions-button-text {\n text-align: left;\n margin-left: 16px;\n}\n.md .actions-modal {\n background-color: var(--f7-actions-bg-color);\n border-radius: var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;\n padding-bottom: var(--f7-safe-area-bottom);\n}\n.md .actions-button {\n transition-duration: 300ms;\n}\n.md .actions-button b,\n.md .actions-label b,\n.md .actions-button.actions-button-strong,\n.md .actions-label.actions-button-strong {\n font-weight: 500;\n}\n.md .actions-button-media {\n min-width: 40px;\n}\n.md .actions-button-media + .actions-button-text {\n margin-left: 16px;\n}\n/* === Sheet Modal === */\n:root {\n --f7-sheet-height: 260px;\n --f7-sheet-push-offset: var(--f7-safe-area-top);\n}\n.ios {\n --f7-sheet-border-radius: 0px;\n --f7-sheet-border-color: var(--f7-bars-border-color);\n --f7-sheet-transition-timing-function: initial;\n --f7-sheet-push-border-radius: 10px;\n --f7-sheet-transition-duration: 300ms;\n --f7-sheet-bg-color: #fff;\n}\n.ios .dark,\n.ios.dark {\n --f7-sheet-bg-color: #202020;\n}\n.md {\n --f7-sheet-border-radius: 16px;\n --f7-sheet-push-border-radius: 16px;\n --f7-sheet-border-color: transparent;\n --f7-sheet-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n --f7-sheet-transition-duration: 400ms;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-sheet-bg-color: var(--f7-md-surface);\n}\n.sheet-backdrop {\n z-index: 11000;\n}\n.sheet-backdrop-unique {\n z-index: 12500;\n}\n.sheet-modal {\n overflow: hidden;\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n height: var(--f7-sheet-height);\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n transform: translate3d(0, 100%, 0);\n background: var(--f7-sheet-bg-color);\n z-index: 12500;\n will-change: transform, opacity;\n}\n.sheet-modal.modal-in,\n.sheet-modal.modal-out {\n transition-duration: var(--f7-sheet-transition-duration);\n}\n.sheet-modal.not-animated {\n transition-duration: 0ms;\n}\n.sheet-modal.modal-in {\n display: block;\n transform: translate3d(0, 0, 0);\n}\n.sheet-modal.modal-in-swipe-step,\n.sheet-modal.modal-in-breakpoint {\n display: block;\n transform: translate3d(0, var(--f7-sheet-breakpoint, var(--f7-sheet-swipe-step, 0)), 0);\n}\n.sheet-modal.modal-out {\n transform: translate3d(0, 100%, 0);\n}\n.sheet-modal .sheet-modal-inner {\n height: 100%;\n position: relative;\n overflow: hidden;\n}\n.sheet-modal .toolbar {\n --f7-safe-area-bottom: 0px;\n position: relative;\n width: 100%;\n}\n.sheet-modal .toolbar:after,\n.sheet-modal .toolbar:before {\n display: none;\n}\n.sheet-modal .toolbar + .sheet-modal-inner {\n height: calc(100% - var(--f7-toolbar-height));\n}\n.sheet-modal .toolbar + .sheet-modal-inner .page-content {\n --f7-page-toolbar-top-offset: 0px;\n --f7-page-toolbar-bottom-offset: 0px;\n}\n.sheet-backdrop,\n.sheet-modal {\n transition-timing-function: var(--f7-sheet-transition-timing-function);\n}\n.sheet-modal-top {\n border-radius: 0 0 var(--f7-sheet-border-radius) var(--f7-sheet-border-radius);\n}\n.sheet-modal-top:after {\n content: '';\n position: absolute;\n background-color: var(--f7-sheet-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.sheet-modal-top:after {\n z-index: 700;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n transform-style: preserve-3d;\n}\n.sheet-modal-bottom,\n.sheet-modal:not(.sheet-modal-top) {\n --f7-safe-area-top: 0px;\n border-radius: var(--f7-sheet-border-radius) var(--f7-sheet-border-radius) 0 0;\n}\n.sheet-modal-bottom:before,\n.sheet-modal:not(.sheet-modal-top):before {\n content: '';\n position: absolute;\n background-color: var(--f7-sheet-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.sheet-modal-bottom:before,\n.sheet-modal:not(.sheet-modal-top):before {\n z-index: 700;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n transform-style: preserve-3d;\n}\n.sheet-modal-top {\n --f7-safe-area-bottom: 0px;\n bottom: auto;\n top: 0;\n transform: translate3d(0, -100%, 0);\n}\n.sheet-modal-top.modal-out {\n transform: translate3d(0, -100%, 0);\n}\n.sheet-modal-top .toolbar-bottom {\n position: absolute;\n}\n.sheet-modal-top .page-content {\n padding-top: var(--f7-safe-area-top);\n}\nhtml.with-modal-sheet-push .sheet-modal-push,\nhtml.with-modal-sheet-push-closing .sheet-modal-push {\n --f7-sheet-border-color: transparent;\n border-radius: var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius) 0 0;\n overflow: hidden;\n}\nhtml.with-modal-sheet-push .sheet-modal-push .view,\nhtml.with-modal-sheet-push-closing .sheet-modal-push .view,\nhtml.with-modal-sheet-push .sheet-modal-push .page,\nhtml.with-modal-sheet-push-closing .sheet-modal-push .page {\n --f7-safe-area-top: 0px;\n}\nhtml.with-modal-sheet-push .sheet-modal-push.sheet-modal-top,\nhtml.with-modal-sheet-push-closing .sheet-modal-push.sheet-modal-top {\n border-radius: 0 0 var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius);\n}\nhtml.with-modal-sheet-push .framework7-root,\nhtml.with-modal-sheet-push-closing .framework7-root {\n background: #000;\n}\nhtml.with-modal-sheet-push .framework7-root > .views,\nhtml.with-modal-sheet-push-closing .framework7-root > .views,\nhtml.with-modal-sheet-push .framework7-root > .view,\nhtml.with-modal-sheet-push-closing .framework7-root > .view {\n transition-duration: var(--f7-sheet-transition-duration);\n transition-timing-function: var(--f7-sheet-transition-timing-function);\n}\nhtml.with-modal-sheet-push.dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push.dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push .dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push .dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push .dark.framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-sheet-push .dark.framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-sheet-push .framework7-root > .views.dark:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-sheet-push .framework7-root > .view.dark:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .view.dark:after {\n content: '';\n position: absolute;\n pointer-events: none;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(255, 255, 255, 0.1);\n z-index: 13000;\n opacity: 1;\n transition-duration: var(--f7-sheet-transition-duration);\n transition-timing-function: var(--f7-sheet-transition-timing-function);\n animation: sheet-dark-push-overlay-fade-in var(--f7-sheet-transition-duration);\n animation-timing-function: var(--f7-sheet-transition-timing-function);\n}\nhtml.with-modal-sheet-push .framework7-root > .views,\nhtml.with-modal-sheet-push .framework7-root > .view {\n border-radius: var(--f7-sheet-push-border-radius);\n transform: translate3d(0, 0, 0px) scale(var(--f7-sheet-push-scale, 1)) !important;\n}\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .view.dark:after {\n opacity: 0;\n animation: none;\n}\n@keyframes sheet-dark-push-overlay-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n.md .sheet-modal .toolbar a.link:not(.tab-link) {\n flex-shrink: 0;\n}\n/* === Toast === */\n:root {\n --f7-toast-font-size: 14px;\n --f7-toast-icon-size: 48px;\n --f7-toast-max-width: 568px;\n}\n.ios {\n --f7-toast-text-color: #fff;\n --f7-toast-bg-color: rgba(0, 0, 0, 0.75);\n --f7-toast-bg-color-rgb: 0, 0, 0;\n --f7-toast-padding-horizontal: 16px;\n --f7-toast-padding-vertical: 12px;\n --f7-toast-border-radius: 8px;\n --f7-toast-button-min-width: 64px;\n}\n.md {\n --f7-toast-padding-horizontal: 24px;\n --f7-toast-padding-vertical: 14px;\n --f7-toast-border-radius: 16px;\n --f7-toast-button-min-width: 64px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-toast-text-color: var(--f7-md-on-surface);\n --f7-toast-bg-color: var(--f7-md-surface-5);\n}\n.toast {\n transition-property: transform, opacity;\n position: absolute;\n max-width: var(--f7-toast-max-width);\n z-index: 20000;\n color: var(--f7-toast-text-color);\n font-size: var(--f7-toast-font-size);\n box-sizing: border-box;\n background-color: var(--f7-toast-bg-color);\n opacity: 0;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .toast {\n background-color: rgba(var(--f7-toast-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.toast.modal-in {\n opacity: 1;\n}\n.toast .toast-content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-sizing: border-box;\n padding: var(--f7-toast-padding-vertical) var(--f7-toast-padding-horizontal);\n}\n.toast .toast-text {\n line-height: 20px;\n flex-shrink: 1;\n min-width: 0;\n}\n.toast .toast-button {\n flex-shrink: 0;\n min-width: var(--f7-toast-button-min-width);\n margin-top: -8px;\n margin-bottom: -8px;\n}\n.toast.toast-with-icon .toast-content {\n display: block;\n text-align: center;\n}\n.toast.toast-with-icon .toast-text {\n text-align: center;\n}\n.toast.toast-with-icon .toast-icon .f7-icons,\n.toast.toast-with-icon .toast-icon .material-icons {\n font-size: var(--f7-toast-icon-size);\n}\n.toast.toast-center {\n top: 50%;\n}\n.toast.toast-top {\n margin-top: var(--f7-safe-area-top);\n}\n.ios .toast {\n transition-duration: 300ms;\n width: 100%;\n left: 0;\n}\n.ios .toast.toast-top {\n top: 0;\n transform: translate3d(0, -100%, 0);\n}\n.ios .toast.toast-top.modal-in {\n transform: translate3d(0, 0%, 0);\n}\n.ios .toast.toast-center {\n width: auto;\n left: 50%;\n border-radius: var(--f7-toast-border-radius);\n transform: translate3d(-50%, -50%, 0);\n}\n.ios .toast.toast-center.modal-in {\n transform: translate3d(-50%, -50%, 0);\n}\n.ios .toast.toast-bottom {\n bottom: 0;\n transform: translate3d(0, 100%, 0);\n}\n.ios .toast.toast-bottom.modal-in {\n transform: translate3d(0, 0%, 0);\n}\n@media (max-width: 568px) {\n .ios .toast.toast-top {\n margin-top: 0;\n }\n .ios .toast.toast-top .toast-content {\n padding-top: calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-top));\n }\n .ios .toast.toast-bottom .toast-content {\n padding-bottom: calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-bottom));\n }\n}\n@media (min-width: 569px) {\n .ios .toast {\n left: 50%;\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n border-radius: var(--f7-toast-border-radius);\n }\n .ios .toast.toast-top {\n top: 16px;\n }\n .ios .toast.toast-center {\n margin-left: 0;\n }\n .ios .toast.toast-bottom {\n margin-bottom: calc(16px + var(--f7-safe-area-bottom));\n }\n}\n@media (min-width: 1024px) {\n .ios .toast {\n margin-left: 0;\n width: auto;\n }\n .ios .toast.toast-horizontal-left {\n left: 16px;\n }\n .ios .toast.toast-horizontal-right {\n left: auto;\n right: 16px;\n }\n .ios .toast.toast-horizontal-center {\n left: 50%;\n width: var(--f7-toast-max-width);\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n }\n}\n.ios .toast-button {\n margin-right: 16px;\n margin-left: calc(-1 * var(--f7-button-padding-horizontal));\n}\n.md .toast {\n transition-duration: 200ms;\n border-radius: var(--f7-toast-border-radius);\n width: calc(100% - 16px);\n transform: scale(0.9);\n left: 8px;\n}\n.md .toast.modal-in {\n transform: scale(1);\n}\n.md .toast.modal-out {\n transform: scale(1);\n}\n.md .toast.toast-top {\n top: 8px;\n}\n.md .toast.toast-center {\n left: 50%;\n width: auto;\n transform: scale(0.9) translate3d(-55%, -55%, 0);\n}\n.md .toast.toast-center.modal-in {\n transform: scale(1) translate3d(-50%, -50%, 0);\n}\n.md .toast.toast-center.modal-out {\n transform: scale(1) translate3d(-50%, -50%, 0);\n}\n.md .toast.toast-bottom {\n bottom: calc(8px + var(--f7-safe-area-bottom));\n}\n@media (min-width: 584px) {\n .md .toast {\n left: 50%;\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n }\n .md .toast.toast-center {\n margin-left: 0;\n }\n}\n@media (min-width: 1024px) {\n .md .toast {\n margin-left: 0;\n width: auto;\n }\n .md .toast.toast-horizontal-left {\n left: 24px;\n }\n .md .toast.toast-horizontal-right {\n left: auto;\n right: 24px;\n }\n .md .toast.toast-horizontal-center {\n left: 50%;\n width: var(--f7-toast-max-width);\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n }\n .md .toast.toast-bottom {\n bottom: calc(24px + var(--f7-safe-area-bottom));\n }\n .md .toast.toast-top {\n top: 24px;\n }\n}\n.md .toast-button {\n margin-right: 16px;\n margin-left: -8px;\n}\n/* === Preloader === */\n:root {\n --f7-preloader-modal-padding: 8px;\n --f7-preloader-modal-bg-color: rgba(0, 0, 0, 0.8);\n}\n.ios {\n --f7-preloader-color: #6c6c6c;\n --f7-preloader-size: 20px;\n --f7-preloader-modal-preloader-size: 34px;\n --f7-preloader-modal-border-radius: 5px;\n}\n.md {\n --f7-preloader-color: #757575;\n --f7-preloader-size: 32px;\n --f7-preloader-modal-preloader-size: 32px;\n --f7-preloader-modal-border-radius: 4px;\n}\n.preloader {\n display: inline-block;\n vertical-align: middle;\n width: var(--f7-preloader-size);\n height: var(--f7-preloader-size);\n font-size: 0;\n position: relative;\n}\n.preloader .preloader-inner {\n width: 100%;\n height: 100%;\n display: block;\n position: relative;\n}\n/* === Preloader Modal === */\n.preloader-backdrop {\n visibility: visible;\n opacity: 0;\n background: none;\n z-index: 14000;\n}\n.preloader-modal {\n position: absolute;\n left: 50%;\n top: 50%;\n padding: var(--f7-preloader-modal-padding);\n background: var(--f7-preloader-modal-bg-color);\n z-index: 14500;\n transform: translateX(-50%) translateY(-50%);\n border-radius: var(--f7-preloader-modal-border-radius);\n}\n.preloader-modal .preloader {\n --f7-preloader-size: var(--f7-preloader-modal-preloader-size);\n display: block !important;\n}\nhtml.with-modal-preloader .page-content,\n.with-modal-preloader .page-content,\n.with-modal-preloader.page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\n.preloader[class*='color-'] {\n --f7-preloader-color: var(--f7-theme-color);\n}\n.preloader.color-white {\n --f7-preloader-color: #fff;\n}\n.preloader.color-black {\n --f7-preloader-color: #000;\n}\n.ios .preloader {\n color: var(--f7-preloader-color);\n}\n.ios .preloader-inner {\n animation: ios-preloader-spin 1s steps(8, end) infinite;\n}\n.ios .preloader-inner-line {\n display: block;\n width: 11.6%;\n height: 33.33%;\n border-radius: 100px;\n background: currentColor;\n position: absolute;\n left: 50%;\n top: 50%;\n transform-origin: center 150%;\n}\n.ios .preloader-multi-color .preloader-inner-line,\n.ios .preloader.color-multi .preloader-inner-line {\n animation: ios-preloader-multicolor 3s linear infinite;\n}\n.ios .preloader-inner-line:nth-child(1) {\n transform: translate(-50%, -150%) rotate(0deg);\n opacity: 0.27;\n}\n.ios .preloader-inner-line:nth-child(2) {\n transform: translate(-50%, -150%) rotate(45deg);\n opacity: 0.35285714;\n}\n.ios .preloader-inner-line:nth-child(3) {\n transform: translate(-50%, -150%) rotate(90deg);\n opacity: 0.43571429;\n}\n.ios .preloader-inner-line:nth-child(4) {\n transform: translate(-50%, -150%) rotate(135deg);\n opacity: 0.51857143;\n}\n.ios .preloader-inner-line:nth-child(5) {\n transform: translate(-50%, -150%) rotate(180deg);\n opacity: 0.60142857;\n}\n.ios .preloader-inner-line:nth-child(6) {\n transform: translate(-50%, -150%) rotate(225deg);\n opacity: 0.68428571;\n}\n.ios .preloader-inner-line:nth-child(7) {\n transform: translate(-50%, -150%) rotate(270deg);\n opacity: 0.76714286;\n}\n.ios .preloader-inner-line:nth-child(8) {\n transform: translate(-50%, -150%) rotate(315deg);\n opacity: 0.85;\n}\n@keyframes ios-preloader-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n@keyframes ios-preloader-multicolor {\n 0%,\n 100% {\n background-color: #2196f3;\n }\n 25% {\n background-color: #ff3b30;\n }\n 50% {\n background-color: #4cd964;\n }\n 75% {\n background-color: #ff9500;\n }\n}\n.md .preloader {\n color: var(--f7-preloader-color);\n}\n.md .preloader-inner {\n animation: md-preloader-rotate 1.4s linear infinite;\n}\n.md .preloader-inner circle {\n fill: none;\n stroke: currentColor;\n animation: md-preloader-circle-rotate 5.6s ease-in-out infinite;\n stroke-dasharray: 100px;\n stroke-dashoffset: 80px;\n stroke-width: 4;\n transform: rotate(-90deg);\n transform-origin: 18px 18px;\n}\n.md .preloader-multi-color circle,\n.md .preloader.color-multi circle {\n animation: md-preloader-circle-rotate 5.6s ease-in-out infinite, md-preloader-multicolor 5.6s ease-in-out infinite;\n}\n@keyframes md-preloader-multicolor {\n 0%,\n 100% {\n stroke: #4285f4;\n }\n 75% {\n stroke: #1b9a59;\n }\n 50% {\n stroke: #f7c223;\n }\n 25% {\n stroke: #de3e35;\n }\n}\n@keyframes md-preloader-rotate {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n@keyframes md-preloader-circle-rotate {\n 0% {\n transform: rotate(-90deg);\n stroke-dashoffset: 100px;\n }\n 12.5% {\n transform: rotate(-90deg);\n stroke-dashoffset: 25px;\n }\n 25% {\n stroke-dashoffset: 100px;\n transform: rotate(180deg);\n }\n 25.1% {\n transform: rotate(-180deg);\n stroke-dashoffset: 100px;\n }\n 37.5% {\n transform: rotate(-180deg);\n stroke-dashoffset: 25px;\n }\n 50% {\n stroke-dashoffset: 100px;\n transform: rotate(90deg);\n }\n 50.1% {\n transform: rotate(90deg);\n stroke-dashoffset: 100px;\n }\n 62.5% {\n transform: rotate(90deg);\n stroke-dashoffset: 25px;\n }\n 75% {\n stroke-dashoffset: 100px;\n transform: rotate(360deg);\n }\n 75.1% {\n transform: rotate(0deg);\n stroke-dashoffset: 100px;\n }\n 87.5% {\n transform: rotate(0deg);\n stroke-dashoffset: 25px;\n }\n 100% {\n stroke-dashoffset: 100px;\n transform: rotate(270deg);\n }\n}\n/* === Progressbar === */\n:root {\n /*\n --f7-progressbar-progress-color: var(--f7-theme-color);\n */\n}\n.ios {\n --f7-progressbar-height: 4px;\n --f7-progressbar-border-radius: 4px;\n --f7-progressbar-bg-color: rgba(0, 0, 0, 0.3);\n}\n.ios .dark,\n.ios.dark {\n --f7-progressbar-bg-color: rgba(255, 255, 255, 0.3);\n}\n.md {\n --f7-progressbar-height: 4px;\n --f7-progressbar-border-radius: 0px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-progressbar-bg-color: rgba(var(--f7-theme-color-rgb), 0.5);\n}\n.progressbar,\n.progressbar-infinite {\n width: 100%;\n overflow: hidden;\n position: relative;\n display: block;\n transform-style: preserve-3d;\n background: var(--f7-progressbar-bg-color, rgba(var(--f7-theme-color-rgb), 0.5));\n transform-origin: center top;\n height: var(--f7-progressbar-height);\n border-radius: var(--f7-progressbar-border-radius);\n}\n.progressbar {\n vertical-align: middle;\n}\n.progressbar span {\n background-color: var(--f7-progressbar-progress-color, var(--f7-theme-color));\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n transition-duration: 150ms;\n right: 0;\n transform: translate3d(100%, 0, 0);\n}\n.progressbar-infinite {\n z-index: 15000;\n}\n.progressbar-infinite:before,\n.progressbar-infinite:after {\n content: '';\n position: absolute;\n top: 0;\n width: 100%;\n height: 100%;\n transform: translate3d(0, 0, 0);\n display: block;\n background-color: var(--f7-progressbar-progress-color, var(--f7-theme-color));\n right: 0;\n transform-origin: right center;\n}\n.progressbar-infinite.color-multi {\n background: none !important;\n}\n.progressbar-in {\n animation: progressbar-in 150ms forwards;\n}\n.progressbar-out {\n animation: progressbar-out 150ms forwards;\n}\nbody > .progressbar,\n.view > .progressbar,\n.views > .progressbar,\n.page > .progressbar,\n.panel > .progressbar,\n.popup > .progressbar,\n.framework7-root > .progressbar,\nbody > .progressbar-infinite,\n.view > .progressbar-infinite,\n.views > .progressbar-infinite,\n.page > .progressbar-infinite,\n.panel > .progressbar-infinite,\n.popup > .progressbar-infinite,\n.framework7-root > .progressbar-infinite {\n position: absolute;\n left: 0;\n top: 0;\n z-index: 15000;\n border-radius: 0 !important;\n transform-origin: center top !important;\n}\n@keyframes progressbar-in {\n from {\n opacity: 0;\n transform: scaleY(0);\n }\n to {\n opacity: 1;\n transform: scaleY(1);\n }\n}\n@keyframes progressbar-out {\n from {\n opacity: 1;\n transform: scaleY(1);\n }\n to {\n opacity: 0;\n transform: scaleY(0);\n }\n}\n.ios .progressbar-infinite:before {\n animation: ios-progressbar-infinite 1s linear infinite;\n}\n.ios .progressbar-infinite:after {\n display: none;\n}\n.ios .progressbar-infinite.color-multi:before {\n width: 400%;\n background-image: linear-gradient(to right, #4cd964, #5ac8fa, #007aff, #34aadc, #5856d6, #ff2d55, #5856d6, #34aadc, #007aff, #5ac8fa, #4cd964);\n background-size: 25% 100%;\n background-repeat: repeat-x;\n animation: ios-progressbar-infinite-multicolor 3s linear infinite;\n}\n@keyframes ios-progressbar-infinite {\n 0% {\n transform: translate3d(100%, 0, 0);\n }\n 100% {\n transform: translate3d(-100%, 0, 0);\n }\n}\n@keyframes ios-progressbar-infinite-multicolor {\n 0% {\n transform: translate3d(0%, 0, 0);\n }\n 100% {\n transform: translate3d(-50%, 0, 0);\n }\n}\n.md .progressbar-infinite:before {\n animation: md-progressbar-infinite-1 2s linear infinite;\n}\n.md .progressbar-infinite:after {\n animation: md-progressbar-infinite-2 2s linear infinite;\n}\n.md .progressbar-infinite.color-multi:before {\n background: none;\n animation: md-progressbar-infinite-multicolor-bg 3s step-end infinite;\n}\n.md .progressbar-infinite.color-multi:after {\n background: none;\n animation: md-progressbar-infinite-multicolor-fill 3s linear infinite;\n transform-origin: center center;\n}\n@keyframes md-progressbar-infinite-1 {\n 0% {\n transform: translateX(10%) scaleX(0.1);\n }\n 25% {\n transform: translateX(-30%) scaleX(0.6);\n }\n 50% {\n transform: translateX(-100%) scaleX(1);\n }\n 100% {\n transform: translateX(-100%) scaleX(1);\n }\n}\n@keyframes md-progressbar-infinite-2 {\n 0% {\n transform: translateX(100%) scaleX(1);\n }\n 40% {\n transform: translateX(100%) scaleX(1);\n }\n 75% {\n transform: translateX(-60%) scaleX(0.35);\n }\n 90% {\n transform: translateX(-100%) scaleX(0.1);\n }\n 100% {\n transform: translateX(-100%) scaleX(0.1);\n }\n}\n@keyframes md-progressbar-infinite-multicolor-bg {\n 0% {\n background-color: #4caf50;\n }\n 25% {\n background-color: #f44336;\n }\n 50% {\n background-color: #2196f3;\n }\n 75% {\n background-color: #ffeb3b;\n }\n}\n@keyframes md-progressbar-infinite-multicolor-fill {\n 0% {\n transform: scaleX(0);\n background-color: #f44336;\n }\n 24.9% {\n transform: scaleX(1);\n background-color: #f44336;\n }\n 25% {\n transform: scaleX(0);\n background-color: #2196f3;\n }\n 49.9% {\n transform: scaleX(1);\n background-color: #2196f3;\n }\n 50% {\n transform: scaleX(0);\n background-color: #ffeb3b;\n }\n 74.9% {\n transform: scaleX(1);\n background-color: #ffeb3b;\n }\n 75% {\n transform: scaleX(0);\n background-color: #4caf50;\n }\n 100% {\n transform: scaleX(1);\n background-color: #4caf50;\n }\n}\n/* === Sortable === */\n.ios {\n --f7-sortable-handler-width: 36px;\n --f7-sortable-sorting-item-box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.6);\n --f7-sortable-handler-color: rgba(0, 0, 0, 0.22);\n --f7-sortable-sorting-item-bg-color: rgba(255, 255, 255, 0.8);\n}\n.ios .dark,\n.ios.dark {\n --f7-sortable-sorting-item-bg-color: rgba(50, 50, 50, 0.8);\n --f7-sortable-handler-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-sortable-handler-width: 42px;\n --f7-sortable-sorting-item-box-shadow: none;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-sortable-handler-color: var(--f7-md-on-surface-variant);\n --f7-sortable-sorting-item-bg-color: var(--f7-md-surface-3);\n}\n.sortable .sortable-handler {\n width: var(--f7-sortable-handler-width);\n height: 100%;\n position: absolute;\n top: 0;\n z-index: 10;\n opacity: 0;\n pointer-events: none;\n cursor: move;\n transition-duration: 300ms;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n left: var(--f7-safe-area-left);\n}\n.sortable .sortable-handler:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n transition-duration: 300ms;\n transform: translateX(10px);\n color: var(--f7-sortable-handler-color);\n overflow: hidden;\n height: 20px;\n width: 18px;\n}\n.sortable li.sorting {\n z-index: 50;\n background: var(--f7-sortable-sorting-item-bg-color);\n transition-duration: 0ms;\n box-shadow: var(--f7-sortable-sorting-item-box-shadow);\n}\n.sortable li.sorting .item-inner:after {\n display: none !important;\n}\n.sortable-opposite .sortable-handler {\n right: var(--f7-safe-area-left);\n left: auto;\n}\n.sortable-opposite .sortable-handler:after {\n transform: translateX(-10px);\n}\n.sortable:not(.sortable-opposite) .item-inner,\n.sortable-opposite .item-content,\n.sortable.simple-list li,\n.sortable-opposite.links-list li a {\n transition-duration: 300ms;\n transition-property: all;\n}\n.sortable-sorting li {\n transition-duration: 300ms;\n}\n.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler {\n pointer-events: auto;\n touch-action: none;\n opacity: 1;\n}\n.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler:after {\n transform: translateX(0px);\n}\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner:before,\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-title-row:before,\n.sortable-enabled:not(.sortable-opposite).links-list li:not(.no-sorting):not(.disallow-sorting) > a:before {\n display: none;\n}\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-inner,\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link.no-chevron .item-inner,\n.sortable-enabled.no-chevron:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,\n.sortable-enabled :not(.sortable-opposite).no-chevron .item-link .item-inner,\n.no-chevron .sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,\n.simple-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting),\n.links-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) a {\n padding-left: calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right));\n}\n.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .item-content,\n.simple-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting),\n.links-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) a {\n padding-right: calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right));\n}\n.ios .sortable-handler:after {\n content: 'sort_ios';\n}\n.md .sortable-handler:after {\n content: 'sort_md';\n}\n/* === Swipeout === */\n:root {\n --f7-swipeout-delete-button-bg-color: #ff3b30;\n --f7-swipeout-button-text-color: #fff;\n --f7-swipeout-button-padding-vertical: 0px;\n --f7-swipeout-button-bg-color: rgba(0, 0, 0, 0.22);\n}\n:root .dark,\n:root.dark {\n --f7-swipeout-button-bg-color: rgba(255, 255, 255, 0.55);\n}\n.ios {\n --f7-swipeout-button-padding-horizontal: 30px;\n --f7-swipeout-button-font-size: inherit;\n --f7-swipeout-button-font-weight: inherit;\n}\n.md {\n --f7-swipeout-button-padding-horizontal: 24px;\n --f7-swipeout-button-font-size: 14px;\n --f7-swipeout-button-font-weight: 500;\n}\n.md .dark,\n.md.dark {\n --f7-swipeout-button-text-color: #000;\n}\n.swipeout {\n overflow: hidden;\n transform-style: preserve-3d;\n}\n.swipeout-deleting {\n transition-duration: 300ms;\n}\n.swipeout-deleting .swipeout-content {\n transform: translateX(-100%);\n}\n.swipeout-transitioning .swipeout-content,\n.swipeout-transitioning .swipeout-actions-right a,\n.swipeout-transitioning .swipeout-actions-left a,\n.swipeout-transitioning .swipeout-overswipe {\n transition-duration: 300ms;\n transition-property: transform, left;\n}\n.swipeout-content {\n position: relative;\n z-index: 10;\n}\n.swipeout-overswipe {\n transition-duration: 200ms;\n transition-property: left;\n}\n.swipeout-actions-left,\n.swipeout-actions-right {\n position: absolute;\n top: 0;\n height: 100%;\n display: flex;\n direction: ltr;\n}\n.swipeout-actions-left > a,\n.swipeout-actions-right > a,\n.swipeout-actions-left > button,\n.swipeout-actions-right > button,\n.swipeout-actions-left > span,\n.swipeout-actions-right > span,\n.swipeout-actions-left > div,\n.swipeout-actions-right > div {\n color: var(--f7-swipeout-button-text-color);\n background: var(--f7-swipeout-button-bg-color);\n padding: var(--f7-swipeout-button-padding-vertical) var(--f7-swipeout-button-padding-horizontal);\n display: flex;\n align-items: center;\n position: relative;\n left: 0;\n font-size: var(--f7-swipeout-button-font-size);\n font-weight: var(--f7-swipeout-button-font-weight);\n}\n.swipeout-actions-left > a:after,\n.swipeout-actions-right > a:after,\n.swipeout-actions-left > button:after,\n.swipeout-actions-right > button:after,\n.swipeout-actions-left > span:after,\n.swipeout-actions-right > span:after,\n.swipeout-actions-left > div:after,\n.swipeout-actions-right > div:after {\n content: '';\n position: absolute;\n top: 0;\n width: 600%;\n height: 100%;\n background: inherit;\n z-index: -1;\n transform: translate3d(0, 0, 0);\n pointer-events: none;\n}\n.swipeout-actions-left .swipeout-delete,\n.swipeout-actions-right .swipeout-delete {\n background: var(--f7-swipeout-delete-button-bg-color);\n}\n.swipeout-actions-right {\n right: 0%;\n transform: translateX(calc(100% + 1px));\n}\n.swipeout-actions-right > a:after,\n.swipeout-actions-right > button:after,\n.swipeout-actions-right > span:after,\n.swipeout-actions-right > div:after {\n left: 100%;\n}\n.swipeout-actions-right > a:last-child,\n.swipeout-actions-right > button:last-child,\n.swipeout-actions-right > span:last-child,\n.swipeout-actions-right > div:last-child {\n padding-right: calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-right));\n}\n.swipeout-actions-left {\n left: 0%;\n transform: translateX(calc(-100% - 1px));\n}\n.swipeout-actions-left > a:after,\n.swipeout-actions-left > button:after,\n.swipeout-actions-left > span:after,\n.swipeout-actions-left > div:after {\n right: 100%;\n}\n.swipeout-actions-left > a:first-child,\n.swipeout-actions-left > button:first-child,\n.swipeout-actions-left > span:first-child,\n.swipeout-actions-left > div:first-child {\n padding-left: calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-left));\n}\n.swipeout-actions-left [class*='color-'],\n.swipeout-actions-right [class*='color-'] {\n --f7-swipeout-button-bg-color: var(--f7-theme-color);\n}\n/* === Accordion === */\n:root {\n --f7-accordion-chevron-icon-down: 'chevron_down';\n --f7-accordion-chevron-icon-up: 'chevron_up';\n}\n.accordion-item-toggle {\n cursor: pointer;\n}\n.list.accordion-list .accordion-item-toggle {\n transition-duration: 300ms;\n position: relative;\n overflow: hidden;\n}\n.list.accordion-list .accordion-item-toggle.active-state {\n transition-duration: 300ms;\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.list.accordion-list .accordion-item-toggle.active-state > .item-inner:after {\n background-color: transparent;\n}\n.list.accordion-list .accordion-item-toggle .item-inner {\n transition-duration: 300ms;\n transition-property: background-color;\n}\n.list.accordion-list .accordion-item-toggle .item-inner:after {\n transition-duration: 300ms;\n}\n.list.accordion-list .accordion-item-toggle .ripple-wave {\n z-index: 0;\n}\n.accordion-item .item-link .item-inner:after {\n transition-duration: 300ms;\n}\n.accordion-item .list,\n.accordion-item .block {\n margin-top: 0;\n margin-bottom: 0;\n}\n.accordion-item .block > h1:first-child,\n.accordion-item .block > h2:first-child,\n.accordion-item .block > h3:first-child,\n.accordion-item .block > h4:first-child,\n.accordion-item .block > p:first-child {\n margin-top: 10px;\n}\n.accordion-item .block > h1:last-child,\n.accordion-item .block > h2:last-child,\n.accordion-item .block > h3:last-child,\n.accordion-item .block > h4:last-child,\n.accordion-item .block > p:last-child {\n margin-bottom: 10px;\n}\n.accordion-item-opened .accordion-item-toggle .item-inner:after,\n.accordion-item-opened > .item-link .item-inner:after {\n background-color: transparent;\n}\n.list li.accordion-item ul {\n padding-right: 0;\n}\n.accordion-item-content {\n position: relative;\n overflow: hidden;\n height: 0;\n font-size: 14px;\n transition-duration: 300ms;\n}\n.accordion-item-opened > .accordion-item-content {\n height: auto;\n}\nhtml.device-android-4 .accordion-item-content {\n transform: none;\n}\n.list .accordion-item-toggle .item-inner:before {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n top: 50%;\n font-size: var(--f7-list-chevron-icon-font-size);\n color: var(--f7-list-chevron-icon-color);\n pointer-events: none;\n left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.list:not(.accordion-opposite) .accordion-item-toggle .item-inner {\n padding-left: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.accordion-opposite .accordion-item-toggle.item-link .item-inner,\n.accordion-opposite .accordion-item-toggle .item-inner,\n.accordion-opposite .accordion-item > .item-link > .item-inner,\n.accordion-opposite .accordion-item > .item-link > .item-content > .item-inner {\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.accordion-opposite .accordion-item > .item-link > .item-title-row {\n padding-right: 0;\n}\n.accordion-opposite .accordion-item-toggle.item-link .item-inner:before,\n.accordion-opposite .accordion-item-toggle .item-inner:before,\n.accordion-opposite .accordion-item > .item-link > .item-inner:before,\n.accordion-opposite .accordion-item > .item-link > .item-content > .item-inner:before,\n.accordion-opposite .accordion-item > .item-link .item-title-row:before {\n display: none;\n}\n.accordion-opposite .accordion-item-toggle > .item-content,\n.accordion-opposite .accordion-item-toggle.item-content,\n.accordion-opposite .accordion-item > .item-content,\n.accordion-opposite .accordion-item > .item-link > .item-content,\n.accordion-opposite.links-list .accordion-item > a {\n position: relative;\n padding-right: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.accordion-opposite .accordion-item-toggle > .item-content:before,\n.accordion-opposite .accordion-item-toggle.item-content:before,\n.accordion-opposite .accordion-item > .item-content:before,\n.accordion-opposite .accordion-item > .item-link > .item-content:before,\n.accordion-opposite.links-list .accordion-item > a:before {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n top: 50%;\n font-size: var(--f7-list-chevron-icon-font-size);\n color: var(--f7-list-chevron-icon-color);\n pointer-events: none;\n content: var(--f7-accordion-chevron-icon-down);\n width: 14px;\n height: 8px;\n margin-top: -4px;\n line-height: 8px;\n transform: translateX(-50%);\n right: calc((var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal)) / 2 + var(--f7-safe-area-right));\n}\n.list .accordion-item-toggle.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.list .accordion-item-toggle .item-inner:before,\n.list:not(.media-list) .accordion-item:not(.media-item) .accordion-item-toggle .item-inner:before,\n.list:not(.media-list) .accordion-item:not(.media-item) > .item-link .item-inner:before,\n.media-list .accordion-item .accordion-item-toggle .item-title-row:before,\n.media-list .accordion-item > .item-link .item-title-row:before,\n.accordion-item.media-item .accordion-item-toggle .item-title-row:before,\n.accordion-item.media-item > .item-link .item-title-row:before,\n.links-list .accordion-item > a:before {\n content: var(--f7-accordion-chevron-icon-down);\n width: 14px;\n height: 8px;\n margin-top: -4px;\n line-height: 8px;\n}\n.list .accordion-item-toggle.accordion-item-opened .item-inner:before,\n.list:not(.media-list) .accordion-item-opened:not(.media-item) .accordion-item-toggle .item-inner:before,\n.list:not(.media-list) .accordion-item-opened:not(.media-item) > .item-link .item-inner:before,\n.media-list .accordion-item-opened .accordion-item-toggle .item-title-row:before,\n.media-list .accordion-item-opened > .item-link .item-title-row:before,\n.accordion-item-opened.media-item .accordion-item-toggle .item-title-row:before,\n.accordion-item-opened.media-item > .item-link .item-title-row:before,\n.links-list .accordion-item-opened > a:before,\n.accordion-opposite .accordion-item-opened .accordion-item-toggle > .item-content:before,\n.accordion-opposite .accordion-item-opened .accordion-item-toggle.item-content:before,\n.accordion-opposite .accordion-item-opened > .item-content:before,\n.accordion-opposite .accordion-item-opened > .item-link > .item-content:before,\n.accordion-opposite .links-list .accordion-item-opened > a:before {\n content: var(--f7-accordion-chevron-icon-up);\n width: 14px;\n height: 8px;\n margin-top: -4px;\n line-height: 8px;\n}\n/* === Contacts === */\n.ios {\n --f7-contacts-list-title-font-size: inherit;\n --f7-contacts-list-title-font-weight: 600;\n --f7-contacts-list-title-height: 22px;\n --f7-contacts-list-title-text-color: #000;\n --f7-contacts-list-title-bg-color: #f7f7f7;\n}\n.ios .dark,\n.ios.dark {\n --f7-contacts-list-title-text-color: #fff;\n --f7-contacts-list-title-bg-color: #323234;\n}\n.md {\n --f7-contacts-list-title-font-size: 20px;\n --f7-contacts-list-title-font-weight: 500;\n --f7-contacts-list-title-height: 48px;\n --f7-contacts-list-title-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-contacts-list-title-text-color: var(--f7-theme-color);\n}\n.contacts-list {\n --f7-list-margin-vertical: 0px;\n}\n.contacts-list .list-group-title,\n.contacts-list li.list-group-title {\n background-color: var(--f7-contacts-list-title-bg-color, var(--f7-list-group-title-bg-color));\n font-weight: var(--f7-contacts-list-title-font-weight, var(--f7-list-group-title-font-weight));\n font-size: var(--f7-contacts-list-title-font-size, var(--f7-list-group-title-font-size));\n color: var(--f7-contacts-list-title-text-color, var(--f7-theme-color));\n line-height: var(--f7-contacts-list-title-height, var(--f7-list-group-title-height));\n height: var(--f7-contacts-list-title-height, var(--f7-list-group-title-height));\n}\n.contacts-list .list-group:first-child ul:before {\n display: none !important;\n}\n.contacts-list .list-group:last-child ul:after {\n display: none !important;\n}\n.md .contacts-list .list-group-title {\n pointer-events: none;\n overflow: visible;\n width: 40px;\n}\n.md .contacts-list .list-group-title + li {\n margin-top: calc(var(--f7-contacts-list-title-height) * -1);\n}\n.md .contacts-list .list-group-title:before {\n display: none !important;\n}\n.md .contacts-list li:not(.list-group-title) {\n padding-right: 40px;\n}\n/* === Virtual List === */\n/* === Indexed List === */\n:root {\n --f7-list-index-width: 16px;\n --f7-list-index-font-size: 11px;\n --f7-list-index-font-weight: 600;\n /* --f7-list-index-text-color: var(--f7-theme-color); */\n --f7-list-index-item-height: 14px;\n --f7-list-index-label-font-weight: 500;\n}\n.ios {\n --f7-list-index-label-text-color: #fff;\n /* --f7-list-index-label-bg-color: var(--f7-theme-color); */\n --f7-list-index-label-size: 44px;\n --f7-list-index-label-font-size: 17px;\n --f7-list-index-skip-dot-size: 6px;\n}\n.md {\n --f7-list-index-label-size: 56px;\n --f7-list-index-label-font-size: 20px;\n --f7-list-index-skip-dot-size: 4px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-list-index-label-bg-color: var(--f7-md-primary);\n --f7-list-index-label-text-color: var(--f7-md-on-primary);\n}\n.list-index {\n position: absolute;\n top: 0;\n bottom: 0;\n text-align: center;\n z-index: 10;\n width: var(--f7-list-index-width);\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n left: var(--f7-safe-area-left);\n}\n.list-index:before {\n content: '';\n position: absolute;\n width: 20px;\n top: 0;\n right: 100%;\n height: 100%;\n}\n.list-index ul {\n color: var(--f7-list-index-text-color, var(--f7-theme-color));\n font-size: var(--f7-list-index-font-size);\n font-weight: var(--f7-list-index-font-weight);\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n height: 100%;\n width: 100%;\n position: relative;\n}\n.list-index li {\n margin: 0;\n padding: 0;\n list-style: none;\n position: relative;\n height: var(--f7-list-index-item-height);\n line-height: var(--f7-list-index-item-height);\n flex-shrink: 0;\n display: block;\n width: 100%;\n}\n.list-index .list-index-skip-placeholder:after {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n border-radius: 50%;\n width: var(--f7-list-index-skip-dot-size);\n height: var(--f7-list-index-skip-dot-size);\n margin-left: calc(-1 * var(--f7-list-index-skip-dot-size) / 2);\n margin-top: calc(-1 * var(--f7-list-index-skip-dot-size) / 2);\n background: var(--f7-list-index-text-color, var(--f7-theme-color));\n}\n.list-index .list-index-label {\n position: absolute;\n bottom: 0;\n right: 100%;\n text-align: center;\n background-color: var(--f7-list-index-label-bg-color, var(--f7-theme-color));\n color: var(--f7-list-index-label-text-color);\n width: var(--f7-list-index-label-size);\n height: var(--f7-list-index-label-size);\n line-height: var(--f7-list-index-label-size);\n font-size: var(--f7-list-index-label-font-size);\n font-weight: var(--f7-list-index-label-font-weight);\n}\n.navbar ~ .page > .list-index,\n.navbars ~ .page > .list-index,\n.navbar ~ .list-index {\n top: var(--f7-navbar-height);\n}\n.navbar ~ .toolbar-top ~ .list-index,\n.navbars ~ .toolbar-top ~ .list-index,\n.ios .navbar ~ .toolbar-top-ios ~ .list-index,\n.ios .navbars ~ .toolbar-top-ios .md .navbar ~ .toolbar-top-md ~ .list-index {\n top: calc(var(--f7-navbar-height) + var(--f7-toolbar-height));\n}\n.navbar ~ .toolbar-top.tabbar-icons ~ .list-index,\n.navbars ~ .toolbar-top.tabbar-icons ~ .list-index,\n.ios .navbar ~ .toolbar-top-ios.tabbar-icons ~ .list-index,\n.ios .navbars ~ .toolbar-top-ios .md .navbar ~ .toolbar-top-md.tabbar-icons ~ .list-index {\n top: calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height));\n}\n.navbar ~ .subnavbar ~ .list-index,\n.navbars ~ .subnavbar ~ .list-index,\n.page-with-subnavbar .navbar ~ .list-index {\n top: calc(var(--f7-navbar-height) + var(--f7-subnavbar-height));\n}\n.toolbar-bottom ~ .page > .list-index,\n.ios .toolbar-bottom-ios ~ .page > .list-index,\n.md .toolbar-bottom-md ~ .page > .list-index,\n.toolbar-bottom ~ * .page > .list-index,\n.ios .toolbar-bottom-ios ~ * .page > .list-index,\n.md .toolbar-bottom-md ~ * .page > .list-index,\n.toolbar-bottom ~ .list-index,\n.ios .toolbar-bottom-ios ~ .list-index,\n.md .toolbar-bottom-md ~ .list-index {\n bottom: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n}\n.toolbar-bottom.tabbar-icons ~ .page > .list-index,\n.ios .toolbar-bottom-ios.tabbar-icons ~ .page > .list-index,\n.md .toolbar-bottom-md.tabbar-icons ~ .page > .list-index,\n.toolbar-bottom.tabbar-icons ~ * .page > .list-index,\n.ios .toolbar-bottom-ios.tabbar-icons ~ * .page > .list-index,\n.md .toolbar-bottom-md.tabbar-icons ~ * .page > .list-index,\n.toolbar-bottom.tabbar-icons ~ .list-index,\n.ios .toolbar-bottom-ios.tabbar-icons ~ .list-index,\n.md .toolbar-bottom-md.tabbar-icons ~ .list-index {\n bottom: calc(var(--f7-tabbar-icons-height) + var(--f7-safe-area-bottom));\n}\n.ios .list-index .list-index-label {\n margin-bottom: calc(-1 * var(--f7-list-index-label-size) / 2);\n margin-right: calc(var(--f7-list-index-width) - 1px);\n border-radius: 50%;\n}\n.ios .list-index .list-index-label:before {\n position: absolute;\n width: 100%;\n height: 100%;\n border-radius: 50% 0% 50% 50%;\n content: '';\n background-color: inherit;\n left: 0;\n top: 0;\n transform: rotate(45deg);\n z-index: -1;\n}\n.md .list-index .list-index-label {\n border-radius: 50% 50% 0 50%;\n}\n/* === Timeline === */\n:root {\n --f7-timeline-inner-block-margin-vertical: 16px;\n --f7-timeline-divider-margin-horizontal: 16px;\n --f7-timeline-horizontal-date-height: 34px;\n --f7-timeline-year-height: 24px;\n --f7-timeline-year-font-weight: inherit;\n --f7-timeline-month-height: 24px;\n --f7-timeline-month-font-size: inherit;\n --f7-timeline-month-font-weight: inherit;\n --f7-timeline-item-text-font-weight: inherit;\n --f7-timeline-item-subtitle-font-weight: inherit;\n}\n.ios {\n --f7-timeline-divider-color: #bbb;\n --f7-timeline-padding-horizontal: 16px;\n --f7-timeline-margin-vertical: 35px;\n --f7-timeline-item-inner-border-radius: 7px;\n --f7-timeline-item-time-font-size: 13px;\n --f7-timeline-item-title-font-size: 17px;\n --f7-timeline-item-title-line-height: inherit;\n --f7-timeline-item-title-font-weight: 600;\n --f7-timeline-item-subtitle-font-size: 15px;\n --f7-timeline-item-subtitle-line-height: inherit;\n --f7-timeline-item-text-font-size: inherit;\n --f7-timeline-item-text-color: inherit;\n --f7-timeline-item-text-line-height: inherit;\n --f7-timeline-year-font-size: 16px;\n --f7-timeline-horizontal-item-padding: 10px;\n --f7-timeline-item-inner-bg-color: #fff;\n --f7-timeline-item-time-text-color: rgba(0, 0, 0, 0.45);\n --f7-timeline-horizontal-item-border-color: rgba(0, 0, 0, 0.22);\n --f7-timeline-horizontal-item-date-border-color: rgba(0, 0, 0, 0.22);\n}\n.ios .dark,\n.ios.dark {\n --f7-timeline-horizontal-item-border-color: rgba(255, 255, 255, 0.15);\n --f7-timeline-horizontal-item-date-border-color: rgba(255, 255, 255, 0.15);\n --f7-timeline-item-inner-bg-color: #1c1c1d;\n --f7-timeline-item-time-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-timeline-padding-horizontal: 16px;\n --f7-timeline-margin-vertical: 32px;\n --f7-timeline-item-inner-border-radius: 16px;\n --f7-timeline-item-time-font-size: 13px;\n --f7-timeline-item-title-font-size: 16px;\n --f7-timeline-item-title-line-height: inherit;\n --f7-timeline-item-title-font-weight: 400;\n --f7-timeline-item-subtitle-font-size: inherit;\n --f7-timeline-item-subtitle-line-height: inherit;\n --f7-timeline-item-text-font-size: inherit;\n --f7-timeline-item-text-line-height: inherit;\n --f7-timeline-year-font-size: 16px;\n --f7-timeline-horizontal-item-padding: 12px;\n --f7-timeline-horizontal-item-date-border-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-timeline-divider-color: var(--f7-md-outline);\n --f7-timeline-item-text-color: var(--f7-md-on-surface);\n --f7-timeline-horizontal-item-border-color: var(--f7-md-outline);\n --f7-timeline-item-inner-bg-color: var(--f7-md-surface-1);\n --f7-timeline-item-time-text-color: var(--f7-md-on-surface-variant);\n}\n.timeline {\n box-sizing: border-box;\n margin: var(--f7-timeline-margin-vertical) 0;\n padding: 0 var(--f7-timeline-padding-horizontal);\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-right));\n}\n.block-strong .timeline {\n padding: 0;\n margin: 0;\n}\n.timeline-item {\n display: flex;\n justify-content: flex-start;\n overflow: hidden;\n box-sizing: border-box;\n position: relative;\n padding: 2px 0px var(--f7-timeline-padding-horizontal);\n}\n.timeline-item:last-child {\n padding-bottom: 2px;\n}\n.timeline-item-date {\n flex-shrink: 0;\n width: 50px;\n text-align: right;\n box-sizing: border-box;\n}\n.timeline-item-date small {\n font-size: 10px;\n}\n.timeline-item-content {\n margin: 2px;\n min-width: 0;\n position: relative;\n flex-shrink: 10;\n}\n.timeline-item-content .card,\n.timeline-item-content.card,\n.timeline-item-content .list,\n.timeline-item-content.list,\n.timeline-item-content .block,\n.timeline-item-content.block {\n margin: 0;\n width: 100%;\n}\n.timeline-item-content .card + .card,\n.timeline-item-content .list + .card,\n.timeline-item-content .block + .card,\n.timeline-item-content .card + .list,\n.timeline-item-content .list + .list,\n.timeline-item-content .block + .list,\n.timeline-item-content .card + .block,\n.timeline-item-content .list + .block,\n.timeline-item-content .block + .block {\n margin: var(--f7-timeline-inner-block-margin-vertical) 0 0;\n}\n.timeline-item-content p:first-child,\n.timeline-item-content ul:first-child,\n.timeline-item-content ol:first-child,\n.timeline-item-content h1:first-child,\n.timeline-item-content h2:first-child,\n.timeline-item-content h3:first-child,\n.timeline-item-content h4:first-child {\n margin-top: 0;\n}\n.timeline-item-content p:last-child,\n.timeline-item-content ul:last-child,\n.timeline-item-content ol:last-child,\n.timeline-item-content h1:last-child,\n.timeline-item-content h2:last-child,\n.timeline-item-content h3:last-child,\n.timeline-item-content h4:last-child {\n margin-bottom: 0;\n}\n.timeline-item-inner {\n background: var(--f7-timeline-item-inner-bg-color);\n box-sizing: border-box;\n border-radius: var(--f7-timeline-item-inner-border-radius);\n padding: 8px var(--f7-timeline-padding-horizontal);\n}\n.timeline-item-inner + .timeline-item-inner {\n margin-top: var(--f7-timeline-inner-block-margin-vertical);\n}\n.timeline-item-inner .block {\n padding: 0;\n color: inherit;\n}\n.timeline-item-inner .block-strong {\n padding-left: 0;\n padding-right: 0;\n margin: 0;\n}\n.timeline-item-inner .block-strong:before,\n.timeline-item-inner .block-strong:after {\n display: none !important;\n}\n.timeline-item-inner .list ul:before,\n.timeline-item-inner .list ul:after {\n display: none !important;\n}\n.timeline-item-divider {\n width: 1px;\n position: relative;\n width: 10px;\n height: 10px;\n background: var(--f7-timeline-divider-color);\n border-radius: 50%;\n flex-shrink: 0;\n margin: 3px var(--f7-timeline-divider-margin-horizontal) 0;\n}\n.timeline-item-divider:after,\n.timeline-item-divider:before {\n content: ' ';\n width: 1px;\n height: 100vh;\n position: absolute;\n left: 50%;\n background: inherit;\n transform: translate3d(-50%, 0, 0);\n}\n.timeline-item-divider:after {\n top: 100%;\n}\n.timeline-item-divider:before {\n bottom: 100%;\n}\n.timeline-item:last-child .timeline-item-divider:after {\n display: none;\n}\n.timeline-item:first-child .timeline-item-divider:before {\n display: none;\n}\n.timeline-item-time {\n font-size: var(--f7-timeline-item-time-font-size);\n margin-top: var(--f7-timeline-inner-block-margin-vertical);\n color: var(--f7-timeline-item-time-text-color);\n}\n.timeline-item-time:first-child,\n.timeline-item-time:last-child {\n margin-top: 0;\n}\n.timeline-item-title + .timeline-item-time {\n margin-top: 0;\n}\n.timeline-item-title {\n font-size: var(--f7-timeline-item-title-font-size);\n font-weight: var(--f7-timeline-item-title-font-weight);\n line-height: var(--f7-timeline-item-title-line-height);\n}\n.timeline-item-subtitle {\n font-size: var(--f7-timeline-item-subtitle-font-size);\n font-weight: var(--f7-timeline-item-subtitle-font-weight);\n line-height: var(--f7-timeline-item-subtitle-line-height);\n}\n.timeline-item-text {\n color: var(--f7-timeline-item-text-color);\n font-size: var(--f7-timeline-item-text-font-size);\n font-weight: var(--f7-timeline-item-text-font-weight);\n line-height: var(--f7-timeline-item-text-line-height);\n}\n.timeline-sides .timeline-item-right,\n.timeline-sides .timeline-item {\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n}\n.timeline-sides .timeline-item-right .timeline-item-date,\n.timeline-sides .timeline-item .timeline-item-date {\n text-align: left;\n}\n.timeline-sides .timeline-item-left,\n.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n}\n.timeline-sides .timeline-item-left .timeline-item-date,\n.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: right;\n}\n@media (min-width: 480px) {\n .xsmall-sides .timeline-item-right,\n .xsmall-sides .timeline-item {\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .xsmall-sides .timeline-item-right .timeline-item-date,\n .xsmall-sides .timeline-item .timeline-item-date {\n text-align: left;\n }\n .xsmall-sides .timeline-item-left,\n .xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .xsmall-sides .timeline-item-left .timeline-item-date,\n .xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: right;\n }\n}\n@media (min-width: 568px) {\n .small-sides .timeline-item-right,\n .small-sides .timeline-item {\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .small-sides .timeline-item-right .timeline-item-date,\n .small-sides .timeline-item .timeline-item-date {\n text-align: left;\n }\n .small-sides .timeline-item-left,\n .small-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .small-sides .timeline-item-left .timeline-item-date,\n .small-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: right;\n }\n}\n@media (min-width: 768px) {\n .medium-sides .timeline-item-right,\n .medium-sides .timeline-item {\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .medium-sides .timeline-item-right .timeline-item-date,\n .medium-sides .timeline-item .timeline-item-date {\n text-align: left;\n }\n .medium-sides .timeline-item-left,\n .medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .medium-sides .timeline-item-left .timeline-item-date,\n .medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: right;\n }\n}\n@media (min-width: 1024px) {\n .large-sides .timeline-item-right,\n .large-sides .timeline-item {\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .large-sides .timeline-item-right .timeline-item-date,\n .large-sides .timeline-item .timeline-item-date {\n text-align: left;\n }\n .large-sides .timeline-item-left,\n .large-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .large-sides .timeline-item-left .timeline-item-date,\n .large-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: right;\n }\n}\n@media (min-width: 1200px) {\n .xlarge-sides .timeline-item-right,\n .xlarge-sides .timeline-item {\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .xlarge-sides .timeline-item-right .timeline-item-date,\n .xlarge-sides .timeline-item .timeline-item-date {\n text-align: left;\n }\n .xlarge-sides .timeline-item-left,\n .xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .xlarge-sides .timeline-item-left .timeline-item-date,\n .xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: right;\n }\n}\n.timeline-horizontal {\n height: 100%;\n display: flex;\n padding: 0;\n margin: 0;\n position: relative;\n padding-left: var(--f7-safe-area-left);\n padding-right: 0;\n}\n.timeline-horizontal .timeline-item {\n display: block;\n width: 100/3vw;\n margin: 0;\n padding: 0;\n flex-shrink: 0;\n position: relative;\n height: 100%;\n padding-top: var(--f7-timeline-horizontal-date-height) !important;\n padding-bottom: var(--f7-timeline-horizontal-item-padding);\n}\n.timeline-horizontal .timeline-item:after {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: 0;\n bottom: auto;\n left: auto;\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-horizontal .timeline-item-date {\n padding: 0px var(--f7-timeline-horizontal-item-padding);\n width: auto;\n text-align: left;\n line-height: var(--f7-timeline-horizontal-date-height);\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: var(--f7-timeline-horizontal-date-height);\n background-color: var(--f7-bars-bg-color);\n color: var(--f7-bars-text-color);\n text-align: right;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .timeline-horizontal .timeline-item-date {\n background-color: rgba(var(--f7-bars-bg-color-rgb), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.timeline-horizontal .timeline-item-date:after {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-date-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-horizontal .timeline-item-content {\n padding: var(--f7-timeline-horizontal-item-padding);\n height: calc(100vw - var(--f7-timeline-horizontal-item-padding));\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n margin: 0;\n}\n.timeline-horizontal .timeline-item-divider {\n display: none;\n}\n.timeline-horizontal > .timeline-item:last-child:after,\n.timeline-horizontal .timeline-month:last-child .timeline-item:last-child:after {\n display: none !important;\n}\n.timeline-horizontal.timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n}\n.timeline-horizontal.timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n}\n.timeline-horizontal.timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n}\n.timeline-horizontal.timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n}\n.timeline-horizontal.timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n}\n.timeline-horizontal.timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n}\n.timeline-horizontal.timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n}\n.timeline-horizontal.timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n}\n.timeline-horizontal.timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n}\n.timeline-horizontal.timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n}\n.timeline-horizontal.timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n}\n.timeline-horizontal.timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n}\n.timeline-horizontal.timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n}\n.timeline-horizontal.timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n}\n.timeline-horizontal.timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n}\n.timeline-horizontal.timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n}\n.timeline-horizontal.timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n}\n.timeline-horizontal.timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n}\n.timeline-horizontal.timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n}\n.timeline-horizontal.timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n}\n@media (min-width: 480px) {\n .timeline-horizontal.xsmall-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.xsmall-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.xsmall-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.xsmall-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.xsmall-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.xsmall-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.xsmall-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.xsmall-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.xsmall-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.xsmall-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.xsmall-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.xsmall-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.xsmall-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.xsmall-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.xsmall-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.xsmall-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.xsmall-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.xsmall-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.xsmall-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.xsmall-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 568px) {\n .timeline-horizontal.small-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.small-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.small-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.small-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.small-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.small-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.small-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.small-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.small-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.small-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.small-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.small-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.small-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.small-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.small-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.small-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.small-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.small-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.small-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.small-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 768px) {\n .timeline-horizontal.medium-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.medium-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.medium-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.medium-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.medium-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.medium-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.medium-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.medium-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.medium-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.medium-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.medium-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.medium-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.medium-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.medium-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.medium-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.medium-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.medium-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.medium-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.medium-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.medium-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 1024px) {\n .timeline-horizontal.large-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.large-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.large-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.large-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.large-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.large-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.large-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.large-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.large-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.large-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.large-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.large-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.large-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.large-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.large-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.large-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.large-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.large-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.large-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.large-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 1200px) {\n .timeline-horizontal.xlarge-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.xlarge-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.xlarge-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.xlarge-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.xlarge-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.xlarge-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.xlarge-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.xlarge-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.xlarge-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.xlarge-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.xlarge-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.xlarge-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.xlarge-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.xlarge-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.xlarge-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.xlarge-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.xlarge-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.xlarge-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.xlarge-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.xlarge-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n.timeline-year {\n padding-top: var(--f7-timeline-year-height);\n}\n.timeline-year:after {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: 0;\n bottom: auto;\n left: auto;\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-year:last-child:after {\n display: none !important;\n}\n.timeline-month {\n padding-top: var(--f7-timeline-month-height);\n}\n.timeline-month .timeline-item:before {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-year,\n.timeline-month {\n display: flex;\n flex-shrink: 0;\n position: relative;\n box-sizing: border-box;\n height: 100%;\n}\n.timeline-year-title {\n line-height: var(--f7-timeline-year-height);\n height: var(--f7-timeline-year-height);\n font-size: var(--f7-timeline-year-font-size);\n font-weight: var(--f7-timeline-year-font-weight);\n}\n.timeline-month-title {\n line-height: var(--f7-timeline-month-height);\n height: var(--f7-timeline-month-height);\n font-size: var(--f7-timeline-month-font-size);\n font-weight: var(--f7-timeline-month-font-weight);\n}\n.timeline-year-title,\n.timeline-month-title {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n box-sizing: border-box;\n padding: 0 var(--f7-timeline-horizontal-item-padding);\n background-color: var(--f7-bars-bg-color);\n color: var(--f7-bars-text-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .timeline-year-title,\n .ios-translucent-bars .timeline-month-title {\n background-color: rgba(var(--f7-bars-bg-color-rgb), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.timeline-year-title span,\n.timeline-month-title span {\n display: inline-block;\n position: sticky;\n right: calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-right));\n}\n.timeline-month-title span {\n margin-top: -2px;\n}\n.timeline-year:first-child .timeline-year-title,\n.timeline-year:first-child .timeline-month:first-child .timeline-month-title,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-month-title {\n left: calc(var(--f7-safe-area-left) * -1);\n right: 0;\n width: auto;\n}\n.timeline-horizontal .timeline-item:first-child,\n.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-item:first-child,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-month-title + .timeline-item {\n overflow: visible;\n}\n.timeline-horizontal .timeline-item:first-child .timeline-item-date,\n.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child .timeline-item-date,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-item:first-child .timeline-item-date,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-month-title + .timeline-item .timeline-item-date {\n width: auto;\n padding-left: calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-left));\n left: calc(0px - var(--f7-safe-area-left));\n right: 0;\n}\n.timeline-year:last-child .timeline-year-title,\n.timeline-year:last-child .timeline-month:last-child .timeline-month-title {\n width: auto;\n right: calc(0px - var(--f7-safe-area-right));\n}\n.timeline-horizontal .timeline-item:last-child,\n.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child {\n overflow: visible;\n}\n.timeline-horizontal .timeline-item:last-child .timeline-item-date,\n.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child .timeline-item-date {\n width: auto;\n right: calc(0px - var(--f7-safe-area-right));\n left: 0;\n}\n.ios .block-strong .timeline-item-inner {\n border-radius: 3px;\n border: 1px solid rgba(0, 0, 0, 0.1);\n}\n.ios .timeline-year-title span {\n margin-top: 3px;\n}\n.md .timeline-year-title span {\n margin-top: 2px;\n}\n/* === Tabs === */\n.tabs .tab {\n display: none;\n}\n.tabs .tab-active {\n display: block;\n}\n.tabs-animated-wrap {\n position: relative;\n width: 100%;\n overflow: hidden;\n height: 100%;\n}\n.tabs-animated-wrap > .tabs {\n display: flex;\n height: 100%;\n transition-duration: 300ms;\n}\n.tabs-animated-wrap > .tabs > .tab {\n width: 100%;\n display: block;\n flex-shrink: 0;\n}\n.tabs-animated-wrap.not-animated > .tabs {\n transition-duration: 0ms;\n}\nswiper-container.tabs {\n height: 100%;\n}\nswiper-container.tabs > .tab {\n display: block;\n touch-action: pan-y;\n}\n.page > .tabs {\n height: 100%;\n}\n/* === Panels === */\n:root {\n --f7-panel-width: 260px;\n --f7-panel-backdrop-bg-color: rgba(0, 0, 0, 0.3);\n /*\n --f7-panel-left-width: var(--f7-panel-width);\n --f7-panel-right-width: var(--f7-panel-width);\n --f7-panel-left-collapsed-width: var(--f7-panel-collapsed-width);\n --f7-panel-right-collapsed-width: var(--f7-panel-collapsed-width);\n */\n --f7-panel-bg-color: #fff;\n}\n:root .dark,\n:root.dark {\n --f7-panel-bg-color: #000;\n}\n.ios {\n --f7-panel-collapsed-width: 58px;\n --f7-panel-transition-duration: 400ms;\n --f7-panel-transition-timing-function: initial;\n}\n.md {\n --f7-panel-collapsed-width: 60px;\n --f7-panel-transition-duration: 400ms;\n --f7-panel-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n}\n.panel-backdrop {\n position: absolute;\n left: 0;\n top: 0px;\n width: 100%;\n height: 100%;\n opacity: 0;\n z-index: 5999;\n visibility: hidden;\n pointer-events: none;\n transform: translate3d(0, 0, 0);\n background-color: var(--f7-panel-backdrop-bg-color);\n transition-property: transform, opacity;\n transition-duration: var(--f7-panel-transition-duration);\n}\n.panel-backdrop .with-panel,\n.panel-backdrop .with-panel-closing {\n visibility: visible;\n}\n.panel-backdrop.not-animated {\n transition-duration: 0ms !important;\n}\n.panel {\n z-index: 1000;\n box-sizing: border-box;\n position: absolute;\n top: 0px;\n height: 100%;\n transform: translate3d(0, 0, 0);\n width: var(--f7-panel-width);\n background-color: var(--f7-panel-bg-color);\n overflow: visible;\n transition-property: transform;\n transition-duration: var(--f7-panel-transition-duration);\n}\n.panel:not(.panel-in):not(.panel-out):not(.panel-in-breakpoint):not(.panel-in-collapsed):not(\n .panel-in-swipe\n ) {\n display: none;\n}\n.panel:after {\n pointer-events: none;\n opacity: 0;\n z-index: 5999;\n position: absolute;\n content: '';\n top: 0;\n width: 20px;\n height: 100%;\n transition-property: transform, opacity;\n transition-duration: var(--f7-panel-transition-duration);\n}\n.panel.not-animated,\n.panel.not-animated:after {\n transition-duration: 0ms !important;\n}\n.panel.panel-reveal.not-animated ~ .views,\n.panel.panel-reveal.not-animated ~ .view {\n transition-duration: 0ms !important;\n}\n.panel.panel-resizing {\n -webkit-user-select: none;\n user-select: none;\n}\n.panel.panel-resizing,\n.panel.panel-resizing:after,\n.panel.panel-resizing ~ .views,\n.panel.panel-resizing ~ .view {\n transition-duration: 0ms !important;\n}\n.panel-cover,\n.panel-floating {\n z-index: 6000;\n}\n.panel-floating {\n overflow: hidden;\n border-radius: 16px;\n height: auto;\n top: calc(8px + var(--f7-safe-area-top, 0px));\n bottom: calc(8px + var(--f7-safe-area-bottom, 0px));\n}\n.panel-floating .views,\n.panel-floating .view {\n --f7-safe-area-top: 0px;\n --f7-safe-area-bottom: 0px;\n}\n.page .panel-floating {\n top: calc(8px + var(--f7-page-navbar-offset, 0px));\n bottom: calc(8px + var(--f7-safe-area-bottom, 0px));\n}\n.page .panel-floating .page {\n --f7-page-navbar-offset: 0px;\n}\n.page .panel-floating .navbar ~ *,\n.page .panel-floating .navbars ~ * {\n --f7-page-navbar-offset: calc(var(--f7-navbar-height));\n}\n.panel-left {\n left: 0;\n width: var(--f7-panel-left-width, var(--f7-panel-width));\n}\n.panel-left.panel-cover,\n.panel-left.panel-floating,\n.panel-left.panel-push {\n transform: translate3d(calc(-1 * var(--f7-panel-left-width, var(--f7-panel-width))), 0, 0);\n}\n.panel-right {\n right: 0;\n width: var(--f7-panel-right-width, var(--f7-panel-width));\n}\n.panel-right.panel-cover,\n.panel-right.panel-floating,\n.panel-right.panel-push {\n transform: translate3d(var(--f7-panel-right-width, var(--f7-panel-width)), 0, 0);\n}\n.panel-in-breakpoint {\n transform: translate3d(0, 0, 0) !important;\n transition-duration: 0ms;\n}\n.panel-in-breakpoint:after {\n display: none;\n}\n.panel-in-breakpoint.panel-cover,\n.panel-in-breakpoint.panel-floating {\n z-index: 5900;\n}\n.panel,\n.panel-backdrop {\n transition-timing-function: var(--f7-panel-transition-timing-function);\n}\nhtml.with-panel-left-reveal .views,\nhtml.with-panel-right-reveal .views,\nhtml.with-panel-left-push .views,\nhtml.with-panel-right-push .views,\nhtml.with-panel-closing .views,\nhtml.with-panel-left-reveal .framework7-root > .view,\nhtml.with-panel-right-reveal .framework7-root > .view,\nhtml.with-panel-left-push .framework7-root > .view,\nhtml.with-panel-right-push .framework7-root > .view,\nhtml.with-panel-closing .framework7-root > .view {\n transition-duration: var(--f7-panel-transition-duration);\n transition-property: transform;\n transition-timing-function: var(--f7-panel-transition-timing-function);\n}\nhtml.with-panel .framework7-root > .views .page-content,\nhtml.with-panel .framework7-root > .view .page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\nhtml.with-panel-left-reveal .views,\nhtml.with-panel-left-push .views,\nhtml.with-panel-left-reveal .framework7-root > .view,\nhtml.with-panel-left-push .framework7-root > .view {\n transform: translate3d(var(--f7-panel-left-width, var(--f7-panel-width)), 0, 0);\n}\nhtml.with-panel-right-reveal .views,\nhtml.with-panel-right-push .views,\nhtml.with-panel-right-reveal .framework7-root > .view,\nhtml.with-panel-right-push .framework7-root > .view {\n transform: translate3d(calc(-1 * var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\n.page > .panel-backdrop {\n z-index: 290;\n}\n.page > .panel-reveal,\n.page .panel-push {\n z-index: 1;\n}\n.page > .panel-cover,\n.page > .panel-floating {\n z-index: 300;\n}\n.page.with-panel-left-reveal > .page-content,\n.page.with-panel-right-reveal > .page-content,\n.page.with-panel-left-push > .page-content,\n.page.with-panel-right-push > .page-content,\n.page.with-panel-closing > .page-content,\n.page.with-panel-left-reveal > .tabs,\n.page.with-panel-right-reveal > .tabs,\n.page.with-panel-left-push > .tabs,\n.page.with-panel-right-push > .tabs,\n.page.with-panel-closing > .tabs {\n transition-duration: var(--f7-panel-transition-duration);\n transition-property: transform;\n transition-timing-function: var(--f7-panel-transition-timing-function);\n}\n.page.with-panel-left-reveal > .page-content,\n.page.with-panel-left-push > .page-content,\n.page.with-panel-left-reveal > .tabs,\n.page.with-panel-left-push > .tabs {\n transform: translate3d(var(--f7-panel-left-width, var(--f7-panel-width)), 0, 0);\n}\n.page.with-panel-right-reveal > .page-content,\n.page.with-panel-right-push > .page-content,\n.page.with-panel-right-reveal > .tabs,\n.page.with-panel-right-push > .tabs {\n transform: translate3d(calc(-1 * var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\n.with-panel-closing .panel-backdrop-in {\n visibility: visible;\n pointer-events: auto;\n opacity: 0;\n}\n.with-panel-left-reveal .panel-backdrop-in,\n.with-panel-right-reveal .panel-backdrop-in,\n.with-panel-left-cover .panel-backdrop-in,\n.with-panel-right-cover .panel-backdrop-in,\n.with-panel-left-floating .panel-backdrop-in,\n.with-panel-right-floating .panel-backdrop-in,\n.with-panel-left-push .panel-backdrop-in,\n.with-panel-right-push .panel-backdrop-in {\n visibility: visible;\n pointer-events: auto;\n opacity: 1;\n}\n.with-panel-left-reveal .panel-backdrop-in,\n.with-panel-left-push .panel-backdrop-in {\n transform: translate3d(var(--f7-panel-left-width, var(--f7-panel-width)), 0, 0);\n}\n.with-panel-right-reveal .panel-backdrop-in,\n.with-panel-right-push .panel-backdrop-in {\n transform: translate3d(calc(-1 * var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\n.with-panel-left-cover .panel-left,\n.with-panel-left-push .panel-left {\n transform: translate3d(0px, 0, 0);\n}\n.with-panel-left-floating .panel-left {\n transform: translate3d(8px, 0, 0);\n}\n.with-panel-right-cover .panel-right,\n.with-panel-right-push .panel-right {\n transform: translate3d(0px, 0, 0);\n}\n.with-panel-right-floating .panel-right {\n transform: translate3d(-8px, 0, 0);\n}\n.panel-resizable {\n max-width: 100%;\n}\n.panel-resize-handler {\n position: absolute;\n top: 0;\n height: 100%;\n width: 6px;\n cursor: col-resize;\n z-index: 6000;\n display: none;\n}\n.panel-resizable .panel-resize-handler {\n display: block;\n}\n.panel-left.panel-cover .panel-resize-handler,\n.panel-left.panel-floating .panel-resize-handler {\n right: -3px;\n}\n.panel-left.panel-reveal .panel-resize-handler,\n.panel-left.panel-push .panel-resize-handler {\n right: 0;\n}\n.panel-right.panel-cover .panel-resize-handler,\n.panel-right.panel-floating .panel-resize-handler {\n left: -3px;\n}\n.panel-right.panel-reveal .panel-resize-handler,\n.panel-right.panel-push .panel-resize-handler {\n left: 0;\n}\n.panel-left.panel-in-collapsed ~ .views,\n.panel-left.panel-in-collapsed ~ .view,\n.panel-left.panel-in-collapsed ~ .page-content,\n.panel-left.panel-in-collapsed ~ .tabs {\n margin-left: var(--f7-panel-left-collapsed-width, var(--f7-panel-collapsed-width));\n}\n.page.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .page-content,\n.page.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .tabs,\nhtml.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .views,\nhtml.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .view {\n transform: translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width)) - var(--f7-panel-left-collapsed-width, var(--f7-panel-collapsed-width))), 0, 0);\n}\n.panel-right.panel-in-collapsed ~ .views,\n.panel-right.panel-in-collapsed ~ .view,\n.panel-right.panel-in-collapsed ~ .page-content,\n.panel-right.panel-in-collapsed ~ .tabs {\n margin-right: var(--f7-panel-right-collapsed-width, var(--f7-panel-collapsed-width));\n}\n.page.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .page-content,\n.page.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .tabs,\nhtml.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .views,\nhtml.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .view {\n transform: translate3d(calc(var(--f7-panel-right-collapsed-width, var(--f7-panel-collapsed-width)) - var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\nhtml.with-modal-popup-push .framework7-root,\nhtml.with-modal-popup-push-closing .framework7-root {\n --f7-panelPushScale: var(--f7-popup-push-scale);\n --f7-panelPushTransitionDuration: var(--f7-popup-transition-duration);\n --f7-panelPushTransitionTimingFunction: var(--f7-popup-transition-timing-function);\n --f7-panelPushBorderRadius: var(--f7-popup-push-border-radius);\n}\nhtml.with-modal-sheet-push .framework7-root,\nhtml.with-modal-sheet-push-closing .framework7-root {\n --f7-panelPushScale: var(--f7-sheet-push-scale);\n --f7-panelPushTransitionDuration: var(--f7-sheet-transition-duration);\n --f7-panelPushTransitionTimingFunction: var(--f7-sheet-transition-timing-function);\n --f7-panelPushBorderRadius: var(--f7-sheet-push-border-radius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in,\nhtml.with-modal-sheet-push .framework7-root > .panel-in,\nhtml.with-modal-popup-push .framework7-root > .panel-out,\nhtml.with-modal-sheet-push .framework7-root > .panel-out {\n transition-duration: var(--f7-panelPushTransitionDuration);\n transition-timing-function: var(--f7-panelPushTransitionTimingFunction);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-left {\n transform: scale(var(--f7-panelPushScale, 1));\n transform-origin: 50vw center;\n border-top-left-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-left .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-left .view,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-left .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-left .view {\n border-top-left-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-right {\n transform: scale(var(--f7-panelPushScale, 1));\n transform-origin: calc(var(--f7-panel-left-width, var(--f7-panel-width)) - 50vw) center;\n border-top-right-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-right .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-right .view,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-right .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-right .view {\n border-top-right-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-cover.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-cover.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-cover.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-cover.panel-left {\n transform: translate3d(calc(-1 * var(--f7-panel-left-width, var(--f7-panel-width))), 0, 0px);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-cover.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-cover.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-cover.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-cover.panel-right {\n transform: translate3d(var(--f7-panel-right-width, var(--f7-panel-width)), 0, 0px);\n}\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in {\n transition-duration: var(--f7-panelPushTransitionDuration);\n transition-timing-function: var(--f7-panelPushTransitionTimingFunction);\n}\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-push.panel-left,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-push.panel-left {\n transform-origin: 50vw center;\n}\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-push.panel-right,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-push.panel-right {\n transform-origin: calc(var(--f7-panel-right-width, var(--f7-panel-width)) - 50vw) center;\n}\n.md .panel-cover {\n overflow: hidden;\n}\n.md .panel-cover.panel-left {\n border-radius: 0 16px 16px 0;\n}\n.md .panel-cover.panel-right {\n border-radius: 16px 0 0 16px;\n}\n/* === Card === */\n:root {\n --f7-card-margin-horizontal: 16px;\n --f7-card-margin-vertical: 16px;\n --f7-card-content-padding-horizontal: 16px;\n --f7-card-content-padding-vertical: 16px;\n --f7-card-font-size: inherit;\n --f7-card-header-text-color: inherit;\n --f7-card-header-font-weight: 400;\n --f7-card-header-padding-horizontal: 16px;\n --f7-card-footer-font-weight: 400;\n --f7-card-footer-font-size: inherit;\n --f7-card-footer-padding-horizontal: 16px;\n --f7-card-expandable-font-size: 16px;\n --f7-card-expandable-tablet-width: 670px;\n --f7-card-expandable-tablet-height: 670px;\n}\n.ios {\n --f7-card-border-radius: 8px;\n --f7-card-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.2);\n --f7-card-header-font-size: 17px;\n --f7-card-header-padding-vertical: 10px;\n --f7-card-header-min-height: 44px;\n --f7-card-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-card-footer-padding-vertical: 10px;\n --f7-card-footer-min-height: 44px;\n --f7-card-expandable-margin-horizontal: 20px;\n --f7-card-expandable-margin-vertical: 30px;\n --f7-card-expandable-box-shadow: 0px 20px 40px rgba(0, 0, 0, 0.3);\n --f7-card-expandable-border-radius: 16px;\n --f7-card-expandable-tablet-border-radius: 16px;\n --f7-card-expandable-header-font-size: 27px;\n --f7-card-expandable-header-font-weight: bold;\n --f7-card-text-color: inherit;\n --f7-card-bg-color: #fff;\n --f7-card-expandable-bg-color: #fff;\n --f7-card-outline-border-color: rgba(0, 0, 0, 0.12);\n --f7-card-header-border-color: rgba(0, 0, 0, 0.1);\n --f7-card-footer-border-color: rgba(0, 0, 0, 0.1);\n}\n.ios .dark,\n.ios.dark {\n --f7-card-bg-color: #1c1c1d;\n --f7-card-expandable-bg-color: #1c1c1d;\n --f7-card-outline-border-color: rgba(255, 255, 255, 0.15);\n --f7-card-header-border-color: rgba(255, 255, 255, 0.15);\n --f7-card-footer-border-color: rgba(255, 255, 255, 0.15);\n --f7-card-footer-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-card-border-radius: 16px;\n --f7-card-box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2),\n 0px 1px 1px 0px rgba(0, 0, 0, 0.14),\n 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\n --f7-card-header-font-size: 22px;\n --f7-card-header-padding-vertical: 16px;\n --f7-card-header-min-height: 48px;\n --f7-card-footer-padding-vertical: 16px;\n --f7-card-footer-min-height: 48px;\n --f7-card-expandable-margin-horizontal: 12px;\n --f7-card-expandable-margin-vertical: 24px;\n --f7-card-expandable-box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2),\n 0px 10px 14px 1px rgba(0, 0, 0, 0.14),\n 0px 4px 18px 3px rgba(0, 0, 0, 0.12);\n --f7-card-expandable-border-radius: 16px;\n --f7-card-expandable-tablet-border-radius: 16px;\n --f7-card-expandable-header-font-size: 22px;\n --f7-card-expandable-header-font-weight: 500;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-card-bg-color: var(--f7-md-surface-1);\n --f7-card-expandable-bg-color: var(--f7-md-surface-1);\n --f7-card-outline-border-color: var(--f7-md-outline);\n --f7-card-header-border-color: var(--f7-md-outline);\n --f7-card-footer-border-color: var(--f7-md-outline);\n --f7-card-text-color: var(--f7-md-on-surface);\n --f7-card-footer-text-color: var(--f7-md-on-surface-variant);\n}\n.cards-list > ul:before,\n.card .list > ul:before,\n.cards-list > ul:after,\n.card .list > ul:after {\n display: none !important;\n}\n.cards-list ul,\n.card .list ul {\n background: none;\n}\n.card {\n background: var(--f7-card-bg-color);\n position: relative;\n border-radius: var(--f7-card-border-radius);\n font-size: var(--f7-card-font-size);\n margin-top: var(--f7-card-margin-vertical);\n margin-bottom: var(--f7-card-margin-vertical);\n margin-left: calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-left));\n margin-right: calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-right));\n color: var(--f7-card-text-color);\n}\n.card .list,\n.card .block {\n margin: 0;\n}\n.row:not(.no-gap) .col > .card {\n margin-left: 0;\n margin-right: 0;\n}\n.card-raised {\n box-shadow: var(--f7-card-box-shadow);\n}\n.card-outline,\n.ios .card-outline-ios,\n.md .card-outline-md {\n border: 1px solid var(--f7-card-outline-border-color);\n}\n.card-content {\n position: relative;\n}\n.card-content-padding {\n position: relative;\n padding: var(--f7-card-content-padding-vertical) var(--f7-card-content-padding-horizontal);\n}\n.card-content-padding > .list,\n.card-content-padding > .block {\n margin: calc(-1 * var(--f7-card-content-padding-vertical)) calc(-1 * var(--f7-card-content-padding-horizontal));\n}\n.card-content-padding > p:first-child {\n margin-top: 0;\n}\n.card-content-padding > p:last-child {\n margin-bottom: 0;\n}\n.card-header {\n min-height: var(--f7-card-header-min-height);\n color: var(--f7-card-header-text-color);\n font-size: var(--f7-card-header-font-size);\n font-weight: var(--f7-card-header-font-weight);\n padding: var(--f7-card-header-padding-vertical) var(--f7-card-header-padding-horizontal);\n}\n.card-header.card-header-divider,\n.card-header-divider .card-header,\n.card-dividers .card-header {\n border-bottom: 1px solid var(--f7-card-header-border-color);\n}\n.card-footer {\n min-height: var(--f7-card-footer-min-height);\n color: var(--f7-card-footer-text-color);\n font-size: var(--f7-card-footer-font-size);\n font-weight: var(--f7-card-footer-font-weight);\n padding: var(--f7-card-footer-padding-vertical) var(--f7-card-footer-padding-horizontal);\n}\n.card-footer.card-footer-divider,\n.card-footer-divider .card-footer,\n.card-dividers .card-footer {\n border-top: 1px solid var(--f7-card-header-border-color);\n}\n.card-footer a.link {\n overflow: hidden;\n}\n.card-header,\n.card-footer {\n position: relative;\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.card-header[valign='top'],\n.card-footer[valign='top'] {\n align-items: flex-start;\n}\n.card-header[valign='bottom'],\n.card-footer[valign='bottom'] {\n align-items: flex-end;\n}\n.card-header a.link,\n.card-footer a.link {\n position: relative;\n}\n.card-header a.link i.icon,\n.card-footer a.link i.icon {\n display: block;\n}\n.card-header a.icon-only,\n.card-footer a.icon-only {\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 0;\n}\n.card-header {\n border-radius: var(--f7-card-border-radius) var(--f7-card-border-radius) 0 0;\n}\n.card-footer {\n border-radius: 0 0 var(--f7-card-border-radius) var(--f7-card-border-radius);\n}\n.card-expandable {\n overflow: hidden;\n height: 300px;\n background: var(--f7-card-expandable-bg-color);\n position: relative;\n transform-origin: center center;\n transition-property: transform, border-radius;\n border-radius: var(--f7-card-expandable-border-radius);\n z-index: 2;\n transition-duration: 200ms;\n margin-left: calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-left));\n margin-right: calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-right));\n margin-top: var(--f7-card-expandable-margin-vertical);\n margin-bottom: var(--f7-card-expandable-margin-vertical);\n font-size: var(--f7-card-expandable-font-size);\n}\n.card-expandable.card-raised {\n box-shadow: var(--f7-card-expandable-box-shadow);\n}\n.card-expandable:not(.card-opened) {\n -webkit-user-select: none;\n user-select: none;\n}\n.card-expandable.card-no-transition {\n transition-duration: 0ms;\n}\n.card-expandable.card-expandable-animate-width .card-content {\n transition-property: width, transform;\n width: 100%;\n}\n.card-expandable.active-state {\n transform: scale(0.97) translate3d(0, 0, 0);\n}\n.card-expandable .card-opened-fade-in,\n.card-expandable .card-opened-fade-out {\n transition-duration: 400ms;\n}\n.card-expandable .card-opened-fade-in {\n opacity: 0;\n pointer-events: none;\n}\n.card-expandable .card-content {\n position: absolute;\n top: 0;\n width: 100vw;\n height: 100vh;\n transform-origin: center top;\n overflow: hidden;\n transition-property: transform;\n box-sizing: border-box;\n pointer-events: none;\n right: 0;\n}\n.card-expandable .card-content .card-content-padding {\n padding-left: calc(var(--f7-safe-area-left) + var(--f7-card-content-padding-horizontal));\n padding-right: calc(var(--f7-safe-area-right) + var(--f7-card-content-padding-horizontal));\n}\n.card-expandable.card-opened {\n transition-duration: 0ms;\n}\n.card-expandable.card-opening,\n.card-expandable.card-closing,\n.card-expandable.card-transitioning {\n transition-duration: 400ms;\n}\n.card-expandable.card-opening .card-content {\n transition-duration: 300ms;\n}\n.card-expandable.card-closing .card-content {\n transition-duration: 500ms;\n}\n.card-expandable.card-opening,\n.card-expandable.card-opened,\n.card-expandable.card-closing {\n z-index: 300;\n}\n.card-expandable.card-opening,\n.card-expandable.card-opened {\n border-radius: 0;\n}\n.card-expandable.card-opening .card-opened-fade-in,\n.card-expandable.card-opened .card-opened-fade-in {\n opacity: 1;\n pointer-events: auto;\n}\n.card-expandable.card-opening .card-opened-fade-out,\n.card-expandable.card-opened .card-opened-fade-out {\n opacity: 0;\n pointer-events: none;\n}\n.card-expandable.card-opened .card-content {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n pointer-events: auto;\n}\n.card-expandable .card-header {\n font-size: var(--f7-card-expandable-header-font-size);\n font-weight: var(--f7-card-expandable-header-font-weight);\n}\n.card-prevent-open {\n pointer-events: auto;\n}\n.card-expandable-size {\n width: 0;\n height: 0;\n position: absolute;\n left: 0;\n top: 0;\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n}\n@media (min-width: 768px) and (min-height: 670px) {\n .card-expandable:not(.card-tablet-fullscreen) {\n max-width: var(--f7-card-expandable-tablet-width);\n }\n .card-expandable:not(.card-tablet-fullscreen).card-opened,\n .card-expandable:not(.card-tablet-fullscreen).card-opening {\n border-radius: var(--f7-card-expandable-tablet-border-radius);\n }\n .card-expandable:not(.card-tablet-fullscreen):not(.card-expandable-animate-width) .card-content {\n width: var(--f7-card-expandable-tablet-width);\n }\n .card-expandable:not(.card-tablet-fullscreen) .card-expandable-size {\n width: var(--f7-card-expandable-tablet-width);\n height: var(--f7-card-expandable-tablet-height);\n }\n}\n.page.page-with-card-opened .page-content {\n overflow: hidden;\n}\n.card-backdrop {\n position: fixed;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 299;\n pointer-events: none;\n background: rgba(0, 0, 0, 0.2);\n opacity: 0;\n}\n.card-backdrop-in {\n animation: card-backdrop-fade-in 400ms forwards;\n pointer-events: auto;\n}\n.card-backdrop-out {\n animation: card-backdrop-fade-out 400ms forwards;\n}\n@supports ((-webkit-backdrop-filter: blur(15px)) or (backdrop-filter: blur(15px))) {\n .card-backdrop {\n background: transparent;\n -webkit-backdrop-filter: blur(15px);\n backdrop-filter: blur(15px);\n }\n}\n@keyframes card-backdrop-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes card-backdrop-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n/* === Chips === */\n:root {\n --f7-chip-font-size: 14px;\n --f7-chip-media-font-size: 16px;\n --f7-chip-delete-button-color: #000;\n}\n:root .dark,\n:root.dark {\n --f7-chip-delete-button-color: #fff;\n}\n.ios {\n --f7-chip-height: 28px;\n --f7-chip-media-size: 28px;\n --f7-chip-padding-horizontal: 10px;\n --f7-chip-border-radius: 28px;\n --f7-chip-font-weight: normal;\n --f7-chip-outline-border-color: rgba(0, 0, 0, 0.12);\n --f7-chip-bg-color: rgba(0, 0, 0, 0.12);\n --f7-chip-text-color: #000;\n --f7-chip-outline-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-chip-bg-color: #333;\n --f7-chip-text-color: #fff;\n --f7-chip-outline-text-color: #fff;\n --f7-chip-outline-border-color: rgba(255, 255, 255, 0.12);\n}\n.md {\n --f7-chip-font-weight: 500;\n --f7-chip-media-size: 24px;\n --f7-chip-height: 32px;\n --f7-chip-padding-horizontal: 12px;\n --f7-chip-border-radius: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-chip-bg-color: var(--f7-md-secondary-container);\n --f7-chip-text-color: var(--f7-md-on-secondary-container);\n --f7-chip-outline-text-color: var(--f7-md-on-surface);\n --f7-chip-outline-border-color: var(--f7-md-outline);\n}\n.chip {\n padding-left: var(--f7-chip-padding-horizontal);\n padding-right: var(--f7-chip-padding-horizontal);\n font-weight: var(--f7-chip-font-weight);\n display: inline-flex;\n box-sizing: border-box;\n vertical-align: middle;\n align-items: center;\n margin: 2px 0;\n background-color: var(--f7-chip-bg-color);\n font-size: var(--f7-chip-font-size);\n color: var(--f7-chip-text-color);\n height: var(--f7-chip-height);\n line-height: var(--f7-chip-height);\n border-radius: var(--f7-chip-border-radius);\n position: relative;\n}\n.chip-media {\n border-radius: 50%;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--f7-chip-media-size);\n width: var(--f7-chip-media-size);\n border-radius: var(--f7-chip-media-size);\n text-align: center;\n line-height: var(--f7-chip-media-size);\n box-sizing: border-box;\n color: #fff;\n font-size: var(--f7-chip-media-font-size);\n vertical-align: middle;\n}\n.chip-media i.icon {\n font-size: calc(var(--f7-chip-media-size) - 8px);\n height: calc(var(--f7-chip-media-size) - 8px);\n}\n.chip-media img {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n border-radius: 50%;\n display: block;\n}\n.chip-media + .chip-label {\n margin-right: 4px;\n}\n.chip-label {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n position: relative;\n flex-shrink: 1;\n min-width: 0;\n}\n.chip-delete {\n text-align: center;\n cursor: pointer;\n flex-shrink: 0;\n background-repeat: no-repeat;\n width: 24px;\n height: 24px;\n color: var(--f7-chip-delete-button-color);\n opacity: 0.54;\n position: relative;\n}\n.chip-delete:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n line-height: 24px;\n}\n.chip .chip-delete.active-state {\n opacity: 1;\n}\n.chip-outline,\n.ios .chip-outline-ios,\n.md .chip-outline-md {\n border: 1px solid var(--f7-chip-outline-border-color);\n color: var(--f7-chip-outline-text-color);\n background: none;\n}\n.ios .chip[class*='color-'] {\n --f7-chip-bg-color: var(--f7-theme-color);\n --f7-chip-text-color: #fff;\n}\n.ios .chip-outline[class*='color-'],\n.ios .chip-outline-ios[class*='color-'] {\n --f7-chip-outline-border-color: var(--f7-theme-color);\n --f7-chip-outline-text-color: var(--f7-theme-color);\n}\n.ios .chip-media {\n margin-right: calc(-1 * var(--f7-chip-padding-horizontal));\n}\n.ios .chip-delete {\n margin-left: calc(-1 * var(--f7-chip-padding-horizontal));\n}\n.ios .chip-delete::after {\n content: 'delete_round_ios';\n}\n.ios .chip-delete:after {\n font-size: 10px;\n}\n.md .chip-media {\n margin-right: calc(-1 * var(--f7-chip-padding-horizontal) + 4px);\n}\n.md .chip-label + .chip-delete {\n margin-right: 4px;\n}\n.md .chip-delete {\n margin-left: calc(-1 * var(--f7-chip-padding-horizontal) + 4px);\n}\n.md .chip-delete::after {\n content: 'delete_round_md';\n font-size: 16px;\n}\n/* === Form === */\n/* === Input === */\n:root {\n --f7-input-bg-color: transparent;\n --f7-label-font-weight: 400;\n --f7-label-height: 16px;\n --f7-label-font-size: 12px;\n --f7-floating-label-scale: calc(16 / 12);\n --f7-input-padding-left: 0px;\n --f7-input-padding-right: 0px;\n --f7-input-error-text-color: #ff3b30;\n --f7-input-error-font-size: 12px;\n --f7-input-error-line-height: 1.4;\n --f7-input-error-font-weight: 400;\n --f7-input-info-font-size: 12px;\n --f7-input-info-line-height: 1.4;\n --f7-textarea-height: 100px;\n /*\n --f7-input-outline-focused-border-color: var(--f7-theme-color);\n --f7-input-outline-invalid-border-color: var(--f7-input-error-text-color);\n */\n}\n.ios {\n --f7-input-item-bg-color: transparent;\n --f7-input-item-border-radius: 0px;\n --f7-input-height: 40px;\n --f7-input-font-size: 16px;\n --f7-input-placeholder-color: #a9a9a9;\n --f7-textarea-padding-vertical: 8px;\n /*\n --f7-input-focused-border-color: var(--f7-list-item-border-color);\n --f7-input-invalid-border-color: var(--f7-list-item-border-color);\n --f7-input-invalid-text-color: var(--f7-input-error-text-color);\n */\n --f7-label-text-color: inherit;\n /*\n --f7-label-focused-text-color: var(--f7-label-text-color);\n --f7-label-invalid-text-color: var(--f7-label-text-color);\n */\n --f7-input-clear-button-size: 14px;\n --f7-input-outline-border-radius: 8px;\n --f7-input-text-color: #000000;\n --f7-input-info-text-color: rgba(0, 0, 0, 0.45);\n --f7-input-clear-button-color: rgba(0, 0, 0, 0.45);\n --f7-input-outline-border-color: #bbb;\n}\n.ios .dark,\n.ios.dark {\n --f7-input-text-color: #fff;\n --f7-input-info-text-color: rgba(255, 255, 255, 0.55);\n --f7-input-clear-button-color: rgba(255, 255, 255, 0.5);\n --f7-input-outline-border-color: #444;\n}\n.md {\n --f7-input-item-border-radius: 4px 4px 0 0;\n --f7-input-height: 24px;\n --f7-input-font-size: 16px;\n --f7-textarea-padding-vertical: 0px;\n --f7-input-outline-border-radius: 4px;\n /*\n --f7-input-focused-border-color: var(--f7-theme-color);\n --f7-input-invalid-border-color: var(--f7-input-error-text-color);\n --f7-input-invalid-text-color: var(--f7-input-text-color);\n */\n /*\n --f7-label-focused-text-color: var(--f7-theme-color);\n --f7-label-invalid-text-color: var(--f7-input-error-text-color );\n */\n --f7-floating-label-scale: calc(16 / 12);\n --f7-input-clear-button-size: 24px;\n --f7-input-info-text-color: rgba(0, 0, 0, 0.45);\n}\n.md .dark,\n.md.dark {\n --f7-input-info-text-color: rgba(255, 255, 255, 0.45);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-input-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-input-item-bg-color: var(--f7-md-surface-variant);\n --f7-input-border-color: var(--f7-md-outline);\n --f7-input-clear-button-color: var(--f7-md-on-surface-variant);\n --f7-input-outline-border-color: var(--f7-md-outline);\n --f7-input-text-color: var(--f7-md-on-surface);\n --f7-label-text-color: var(--f7-md-on-surface-variant);\n}\ninput[type='text'],\ninput[type='password'],\ninput[type='search'],\ninput[type='email'],\ninput[type='tel'],\ninput[type='url'],\ninput[type='date'],\ninput[type='month'],\ninput[type='datetime-local'],\ninput[type='time'],\ninput[type='number'],\nselect,\ntextarea {\n box-sizing: border-box;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n box-shadow: none;\n border-radius: 0;\n outline: 0;\n display: block;\n padding: 0;\n margin: 0;\n font-family: inherit;\n background: none;\n resize: none;\n font-size: inherit;\n color: inherit;\n}\ninput[type='text']:-internal-autofill-selected,\ninput[type='password']:-internal-autofill-selected,\ninput[type='search']:-internal-autofill-selected,\ninput[type='email']:-internal-autofill-selected,\ninput[type='tel']:-internal-autofill-selected,\ninput[type='url']:-internal-autofill-selected,\ninput[type='date']:-internal-autofill-selected,\ninput[type='month']:-internal-autofill-selected,\ninput[type='datetime-local']:-internal-autofill-selected,\ninput[type='time']:-internal-autofill-selected,\ninput[type='number']:-internal-autofill-selected,\nselect:-internal-autofill-selected,\ntextarea:-internal-autofill-selected {\n background-color: transparent !important;\n transition: background-color 5000s ease-in-out 0s !important;\n}\ninput[type='text']:-webkit-autofill, input[type='password']:-webkit-autofill, input[type='search']:-webkit-autofill, input[type='email']:-webkit-autofill, input[type='tel']:-webkit-autofill, input[type='url']:-webkit-autofill, input[type='date']:-webkit-autofill, input[type='month']:-webkit-autofill, input[type='datetime-local']:-webkit-autofill, input[type='time']:-webkit-autofill, input[type='number']:-webkit-autofill, select:-webkit-autofill, textarea:-webkit-autofill {\n background-color: transparent !important;\n -webkit-transition: background-color 5000s ease-in-out 0s !important;\n transition: background-color 5000s ease-in-out 0s !important;\n}\ninput[type='text']:autofill,\ninput[type='password']:autofill,\ninput[type='search']:autofill,\ninput[type='email']:autofill,\ninput[type='tel']:autofill,\ninput[type='url']:autofill,\ninput[type='date']:autofill,\ninput[type='month']:autofill,\ninput[type='datetime-local']:autofill,\ninput[type='time']:autofill,\ninput[type='number']:autofill,\nselect:autofill,\ntextarea:autofill,\ninput[type='text']:-webkit-autofill-and-obscured,\ninput[type='password']:-webkit-autofill-and-obscured,\ninput[type='search']:-webkit-autofill-and-obscured,\ninput[type='email']:-webkit-autofill-and-obscured,\ninput[type='tel']:-webkit-autofill-and-obscured,\ninput[type='url']:-webkit-autofill-and-obscured,\ninput[type='date']:-webkit-autofill-and-obscured,\ninput[type='month']:-webkit-autofill-and-obscured,\ninput[type='datetime-local']:-webkit-autofill-and-obscured,\ninput[type='time']:-webkit-autofill-and-obscured,\ninput[type='number']:-webkit-autofill-and-obscured,\nselect:-webkit-autofill-and-obscured,\ntextarea:-webkit-autofill-and-obscured {\n background-color: transparent !important;\n -webkit-transition: background-color 5000s ease-in-out 0s !important;\n transition: background-color 5000s ease-in-out 0s !important;\n}\n.textarea-resizable-shadow {\n opacity: 0;\n position: absolute;\n z-index: -1000;\n pointer-events: none;\n left: -1000px;\n top: -1000px;\n visibility: hidden;\n}\n.list input[type='text'],\n.list input[type='password'],\n.list input[type='search'],\n.list input[type='email'],\n.list input[type='tel'],\n.list input[type='url'],\n.list input[type='date'],\n.list input[type='month'],\n.list input[type='datetime-local'],\n.list input[type='time'],\n.list input[type='number'],\n.list select {\n width: 100%;\n height: var(--f7-input-height);\n color: var(--f7-input-text-color);\n font-size: var(--f7-input-font-size);\n background-color: var(--f7-input-bg-color, transparent);\n padding-left: var(--f7-input-padding-left);\n padding-right: var(--f7-input-padding-right);\n}\n.list input[type='text']::placeholder,\n.list input[type='password']::placeholder,\n.list input[type='search']::placeholder,\n.list input[type='email']::placeholder,\n.list input[type='tel']::placeholder,\n.list input[type='url']::placeholder,\n.list input[type='date']::placeholder,\n.list input[type='month']::placeholder,\n.list input[type='datetime-local']::placeholder,\n.list input[type='time']::placeholder,\n.list input[type='number']::placeholder,\n.list select::placeholder {\n color: var(--f7-input-placeholder-color);\n}\n.list textarea {\n width: 100%;\n color: var(--f7-input-text-color);\n font-size: var(--f7-input-font-size);\n resize: none;\n line-height: 1.4;\n height: var(--f7-textarea-height);\n background-color: var(--f7-input-bg-color, transparent);\n padding-top: var(--f7-textarea-padding-vertical);\n padding-bottom: var(--f7-textarea-padding-vertical);\n padding-left: var(--f7-input-padding-left);\n padding-right: var(--f7-input-padding-right);\n}\n.list textarea::placeholder {\n color: var(--f7-input-placeholder-color);\n}\n.list textarea.resizable {\n height: calc(var(--f7-input-height) + var(--f7-textarea-padding-vertical) * 2);\n}\n.list input[type='time'],\n.list input[type='date'],\n.list input[type='month'],\n.list input[type='datetime-local'] {\n line-height: var(--f7-input-height);\n}\n.list input[type='date'],\n.list input[type='month'],\n.list input[type='datetime-local'] {\n text-align: right;\n flex-direction: row-reverse;\n width: auto;\n}\n.list .item-label,\n.list .item-floating-label {\n width: auto;\n vertical-align: top;\n flex-shrink: 0;\n font-size: var(--f7-label-font-size);\n font-weight: var(--f7-label-font-weight);\n line-height: var(--f7-label-height);\n color: var(--f7-label-text-color);\n transition-duration: 200ms;\n transition-property: transform, color;\n}\n.list .item-floating-label {\n color: var(--f7-input-placeholder-color);\n max-width: calc(100% / var(--f7-floating-label-scale));\n pointer-events: none;\n right: var(--f7-input-padding-right);\n transform-origin: right center;\n}\n.list .item-floating-label ~ .item-input-wrap input::placeholder,\n.list .item-floating-label ~ .item-input-wrap textarea::placeholder {\n opacity: 0;\n transition-duration: 100ms;\n}\n.list .item-floating-label ~ .item-input-wrap input.input-focused::placeholder,\n.list .item-floating-label ~ .item-input-wrap textarea.input-focused::placeholder {\n opacity: 1;\n transition-duration: 300ms;\n}\n.list .item-input-with-value .item-floating-label {\n color: var(--f7-label-text-color);\n}\n.list .item-input-with-value .item-floating-label,\n.list .item-input-focused .item-floating-label {\n transform: scale(1) translateY(0) !important;\n}\n.list .item-input-wrap {\n width: 100%;\n flex-shrink: 1;\n position: relative;\n}\n.item-input,\n.input {\n position: relative;\n}\n.item-input .item-inner {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n.item-input-error-message,\n.input-error-message {\n font-size: var(--f7-input-error-font-size);\n line-height: var(--f7-input-error-line-height);\n color: var(--f7-input-error-text-color);\n font-weight: var(--f7-input-error-font-weight);\n display: none;\n box-sizing: border-box;\n}\n.item-input-info,\n.input-info {\n font-size: var(--f7-input-info-font-size);\n line-height: var(--f7-input-info-line-height);\n color: var(--f7-input-info-text-color);\n}\n.item-input-invalid .item-input-error-message,\n.input-invalid .item-input-error-message,\n.item-input-invalid .input-error-message,\n.input-invalid .input-error-message {\n display: block;\n}\n.item-input-invalid .item-input-info,\n.input-invalid .item-input-info,\n.item-input-invalid .input-info,\n.input-invalid .input-info {\n display: none;\n}\n.input {\n position: relative;\n}\n.input input,\n.input select,\n.input textarea {\n width: 100%;\n}\n.input-clear-button {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n transition-duration: 100ms;\n position: absolute;\n top: 50%;\n border: none;\n padding: 0;\n margin: 0;\n outline: 0;\n z-index: 1;\n cursor: pointer;\n background: none;\n width: var(--f7-input-clear-button-size);\n height: var(--f7-input-clear-button-size);\n margin-top: calc(-1 * var(--f7-input-clear-button-size) / 2);\n color: var(--f7-input-clear-button-color);\n left: 0;\n}\n.input-clear-button:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n.input-clear-button:before {\n position: absolute;\n content: '';\n left: 50%;\n top: 50%;\n}\n.item-input-wrap .input-clear-button {\n top: calc(var(--f7-input-height) / 2);\n}\n.input-clear-button.active-state {\n opacity: 0.75 !important;\n}\n.input-with-value ~ .input-clear-button,\n.item-input-with-value .input-clear-button,\n.input-with-value .input-clear-button {\n opacity: 1;\n pointer-events: auto;\n visibility: visible;\n}\n.input-dropdown-wrap,\n.input-dropdown {\n position: relative;\n}\n.input-dropdown-wrap:before,\n.input-dropdown:before {\n content: '';\n pointer-events: none;\n position: absolute;\n top: 50%;\n margin-top: -2px;\n width: 0;\n height: 0;\n border-left: 4px solid transparent;\n border-right: 4px solid transparent;\n border-top: 5px solid #727272;\n left: 6px;\n}\n.input-dropdown-wrap select,\n.input-dropdown select,\n.input-dropdown-wrap input,\n.input-dropdown input,\n.input-dropdown-wrap textarea,\n.input-dropdown textarea {\n padding-left: calc(20px + var(--f7-input-padding-left));\n}\n.item-input-outline .item-content::after,\n.item-input-outline.item-content::after,\n.input-outline::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n top: 8px;\n bottom: 8px;\n border: 1px solid var(--f7-input-outline-border-color);\n border-radius: var(--f7-input-outline-border-radius);\n pointer-events: none;\n box-sizing: border-box;\n transition-duration: 200ms;\n}\n.item-input-outline .item-content .item-label,\n.item-input-outline.item-content .item-label,\n.input-outline .item-label,\n.item-input-outline .item-content .item-floating-label,\n.item-input-outline.item-content .item-floating-label,\n.input-outline .item-floating-label {\n pointer-events: none;\n background: var(--f7-page-bg-color);\n z-index: 1;\n padding: 4px;\n}\n.item-input-outline .item-content.item-input-focused::after,\n.item-input-outline.item-content.item-input-focused::after,\n.input-outline.item-input-focused::after,\n.item-input-outline .item-content.input-focused::after,\n.item-input-outline.item-content.input-focused::after,\n.input-outline.input-focused::after {\n border-width: 2px;\n border-color: var(--f7-input-outline-invalid-border-color, var(--f7-theme-color));\n}\n.item-input-outline .item-content.item-input-invalid::after,\n.item-input-outline.item-content.item-input-invalid::after,\n.input-outline.item-input-invalid::after,\n.item-input-outline .item-content.input-invalid::after,\n.item-input-outline.item-content.input-invalid::after,\n.input-outline.input-invalid::after {\n border-width: 2px;\n border-color: var(--f7-input-outline-invalid-border-color, var(--f7-input-error-text-color));\n}\n.block-strong .item-input-outline .item-label,\n.block-strong .item-input-outline .item-floating-label,\n.ios .block-strong-ios .item-input-outline .item-label,\n.ios .block-strong-ios .item-input-outline .item-floating-label,\n.md .block-strong-md .item-input-outline .item-label,\n.md .block-strong-md .item-input-outline .item-floating-label {\n background: var(--f7-block-strong-bg-color) !important;\n}\n.list-strong .item-input-outline .item-floating-label,\n.list-strong .item-input-outline .item-label,\n.ios .list-strong-ios .item-input-outline .item-floating-label,\n.ios .list-strong-ios .item-input-outline .item-label,\n.md .list-strong-md .item-input-outline .item-floating-label,\n.md .list-strong-md .item-input-outline .item-label {\n background: var(--f7-list-strong-bg-color) !important;\n}\n.dark option {\n background-color: var(--f7-page-bg-color);\n}\n.ios .item-label + .item-input-wrap,\n.ios .item-floating-label + .item-input-wrap {\n margin-top: 0;\n}\n.ios .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height) + 25%));\n}\n.ios .item-input-focused .item-floating-label {\n color: var(--f7-label-text-color);\n}\n.ios .item-input .item-media {\n align-self: flex-start;\n}\n.ios .item-input-wrap {\n margin-top: calc(-1 * var(--f7-list-item-padding-vertical));\n margin-bottom: calc(-1 * var(--f7-list-item-padding-vertical));\n}\n.ios .item-input:not(.item-input-outline) .item-content,\n.ios .item-input:not(.item-input-outline).item-content {\n background: var(--f7-input-item-bg-color);\n}\n.ios .item-input-error-message,\n.ios .item-input-info,\n.ios .input-error-message,\n.ios .input-info {\n position: relative;\n margin-bottom: 6px;\n margin-top: -8px;\n}\n.ios .item-input-focused .item-label,\n.ios .item-input-focused .item-floating-label {\n color: var(--f7-label-focused-text-color, var(--f7-label-text-color));\n}\n.ios .item-input-focused .item-inner:after {\n background: var(--f7-input-focused-border-color, var(--f7-list-item-border-color));\n}\n.ios .item-input-invalid .item-label,\n.ios .item-input-invalid .item-floating-label {\n color: var(--f7-label-invalid-text-color, var(--f7-label-text-color));\n}\n.ios .item-input-invalid .item-inner:after {\n background: var(--f7-input-invalid-border-color, var(--f7-list-item-border-color));\n}\n.ios .item-input-invalid input,\n.ios .input-invalid input,\n.ios .item-input-invalid select,\n.ios .input-invalid select,\n.ios .item-input-invalid textarea,\n.ios .input-invalid textarea {\n color: var(--f7-input-invalid-text-color, var(--f7-input-error-text-color));\n}\n.ios .input-clear-button:after {\n content: 'delete_round_ios';\n font-size: calc(var(--f7-input-clear-button-size) / (14 / 10));\n line-height: 1.4;\n}\n.ios .input-clear-button:before {\n width: 44px;\n height: 44px;\n margin-left: -22px;\n margin-top: -22px;\n}\n.ios .item-input-outline .item-content,\n.ios .item-input-outline.item-content {\n padding-top: 8px;\n padding-bottom: 8px;\n margin-left: 16px;\n margin-right: 16px;\n}\n.ios li.item-input-outline:first-child,\n.ios li:first-child > .item-input-outline {\n padding-top: 16px;\n}\n.ios li.item-input-outline:first-child::after,\n.ios li:first-child > .item-input-outline::after {\n top: 16px;\n}\n.ios li.item-input-outline:last-child,\n.ios li:last-child > .item-input-outline {\n padding-bottom: 16px;\n}\n.ios li.item-input-outline:last-child::after,\n.ios li:last-child > .item-input-outline::after {\n bottom: 16px;\n}\n.ios .item-input-outline .item-content .item-inner,\n.ios .item-input-outline.item-content .item-inner,\n.ios .input-outline .item-inner {\n display: block;\n padding-top: 0px;\n padding-bottom: 0px;\n}\n.ios .item-input-outline .item-content .item-input-wrap,\n.ios .item-input-outline.item-content .item-input-wrap,\n.ios .input-outline .item-input-wrap {\n margin-top: 2px;\n}\n.ios .item-input-outline .item-content .item-title + .item-input-wrap,\n.ios .item-input-outline.item-content .item-title + .item-input-wrap,\n.ios .input-outline .item-title + .item-input-wrap {\n margin-top: -22px;\n}\n.ios .item-input-outline .item-content .item-label,\n.ios .item-input-outline.item-content .item-label,\n.ios .input-outline .item-label,\n.ios .item-input-outline .item-content .item-floating-label,\n.ios .item-input-outline.item-content .item-floating-label,\n.ios .input-outline .item-floating-label {\n display: inline-flex;\n margin: -8px -4px -4px;\n top: -4px;\n}\n.ios .item-input-outline .item-content .item-floating-label,\n.ios .item-input-outline.item-content .item-floating-label,\n.ios .input-outline .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height)));\n}\n.md .item-input-wrap {\n min-height: var(--f7-input-height);\n}\n.md .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc((var(--f7-input-height) / 2) / var(--f7-floating-label-scale)));\n}\n.md .item-input .item-inner:after {\n display: none !important;\n}\n.md .item-input .item-content,\n.md .item-input.item-content {\n margin-left: 16px;\n margin-right: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.md .input:after {\n content: '';\n position: absolute;\n background-color: var(--f7-input-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.md .input::after {\n transform: scaleY(1) !important;\n transition-duration: 200ms;\n bottom: 0px;\n}\n.md .input.input-focused::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-focused-border-color, var(--f7-theme-color));\n}\n.md .input.input-invalid::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-invalid-border-color, var(--f7-input-error-text-color));\n}\n.md .item-input:not(.item-input-outline) .item-content:after,\n.md .item-input:not(.item-input-outline).item-content:after {\n content: '';\n position: absolute;\n background-color: var(--f7-input-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.md .item-input:not(.item-input-outline) .item-content::before,\n.md .item-input:not(.item-input-outline).item-content::before {\n content: '';\n position: absolute;\n left: 0;\n top: 8px;\n bottom: 8px;\n right: 0;\n border-radius: var(--f7-input-item-border-radius);\n background: var(--f7-input-item-bg-color);\n pointer-events: none;\n}\n.md .item-input:not(.item-input-outline) .item-content::after,\n.md .item-input:not(.item-input-outline).item-content::after {\n transform: scaleY(1) !important;\n transition-duration: 200ms;\n bottom: 8px;\n}\n.md .item-input:not(.item-input-outline) .item-content.item-input-focused::after,\n.md .item-input:not(.item-input-outline).item-content.item-input-focused::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-focused-border-color, var(--f7-theme-color));\n}\n.md .item-input:not(.item-input-outline) .item-content.item-input-invalid::after,\n.md .item-input:not(.item-input-outline).item-content.item-input-invalid::after,\n.md .item-input:not(.item-input-outline) .item-content.input-invalid::after,\n.md .item-input:not(.item-input-outline).item-content.input-invalid::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-invalid-border-color, var(--f7-input-error-text-color));\n}\n.md .item-input-outline .item-content .item-inner,\n.md .item-input-outline.item-content .item-inner,\n.md .input-outline .item-inner {\n padding-top: 16px;\n padding-bottom: 16px;\n}\n.md .item-input-outline .item-content .item-label,\n.md .item-input-outline.item-content .item-label,\n.md .input-outline .item-label,\n.md .item-input-outline .item-content .item-floating-label,\n.md .item-input-outline.item-content .item-floating-label,\n.md .input-outline .item-floating-label {\n --label-height: calc(var(--f7-label-height) + 8px);\n margin: calc(0px - 16px - var(--label-height) / 2) -4px 4px;\n}\n.md .item-input-outline .item-content .item-floating-label,\n.md .item-input-outline.item-content .item-floating-label,\n.md .input-outline .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc((var(--f7-input-height) / 2) + 8px));\n}\n.md .item-input-with-error-message,\n.md .item-input-with-info,\n.md .input-with-error-message,\n.md .input-with-info {\n padding-bottom: 24px !important;\n}\n.md .item-input-error-message,\n.md .item-input-info,\n.md .input-error-message,\n.md .input-info {\n position: absolute;\n top: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n width: 100%;\n right: 0;\n}\n.md .item-input-focused .item-label,\n.md .item-input-focused .item-floating-label {\n color: var(--f7-label-focused-text-color, var(--f7-theme-color));\n}\n.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after,\n.md .input-focused:not(.input-outline):after {\n background: var(--f7-input-focused-border-color, var(--f7-theme-color));\n}\n.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after,\n.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after,\n.md .input-invalid:not(.input-outline):after,\n.md .input-focused:not(.input-outline):after {\n transform: scaleY(2) !important;\n}\n.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after,\n.md .input-invalid:not(.input-outline):after {\n background: var(--f7-input-invalid-border-color, var(--f7-input-error-text-color));\n}\n.md .item-input-invalid .item-label,\n.md .item-input-invalid .item-floating-label {\n color: var(--f7-label-invalid-text-color, var(--f7-input-error-text-color));\n}\n.md .item-input-invalid input,\n.md .input-invalid input,\n.md .item-input-invalid select,\n.md .input-invalid select,\n.md .item-input-invalid textarea,\n.md .input-invalid textarea {\n color: var(--f7-input-invalid-text-color, var(--f7-input-text-color));\n}\n.md .input-clear-button:after {\n font-size: var(--f7-input-clear-button-size);\n content: 'delete_round_md';\n line-height: 1;\n}\n.md .input-clear-button:before {\n width: 48px;\n height: 48px;\n margin-left: -24px;\n margin-top: -24px;\n}\n/* === Checkbox === */\n:root {\n /* --f7-checkbox-active-color: var(--f7-theme-color); */\n --f7-checkbox-icon-color: #fff;\n --f7-checkbox-extra-margin: 0px;\n}\n:root .dark,\n:root.dark {\n --f7-checkbox-inactive-color: rgba(255, 255, 255, 0.3);\n --f7-checkbox-icon-color: #000;\n}\n.ios {\n --f7-checkbox-size: 22px;\n --f7-checkbox-border-radius: 50%;\n --f7-checkbox-border-width: 1px;\n --f7-checkbox-inactive-color: #c7c7cc;\n}\n.md {\n --f7-checkbox-size: 18px;\n --f7-checkbox-border-radius: 2px;\n --f7-checkbox-border-width: 2px;\n --f7-checkbox-inactive-color: #6d6d6d;\n}\n.checkbox {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n z-index: 1;\n background-color: transparent;\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.5);\n}\n.icon-checkbox,\n.checkbox i {\n flex-shrink: 0;\n border: var(--f7-checkbox-border-width) solid var(--f7-checkbox-inactive-color);\n width: var(--f7-checkbox-size);\n height: var(--f7-checkbox-size);\n border-radius: var(--f7-checkbox-border-radius);\n box-sizing: border-box;\n position: relative;\n display: block;\n}\n.icon-checkbox:after,\n.checkbox i:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n width: var(--f7-checkbox-size);\n height: var(--f7-checkbox-size);\n line-height: var(--f7-checkbox-size);\n top: calc(0px - var(--f7-checkbox-border-width));\n opacity: 0;\n color: var(--f7-checkbox-icon-color);\n position: relative;\n transition-property: opacity;\n right: calc(0px - var(--f7-checkbox-border-width));\n}\n.icon-checkbox.color-white,\n.checkbox i.color-white,\n.color-white .icon-checkbox,\n.color-white .checkbox i {\n --f7-theme-color: #fff;\n --f7-checkbox-icon-color: #000;\n}\n.icon-checkbox.color-black,\n.checkbox i.color-black,\n.color-black .icon-checkbox,\n.color-black .checkbox i {\n --f7-theme-color: #000;\n --f7-checkbox-icon-color: #fff;\n}\nlabel.item-checkbox input[type='checkbox']:not(:checked) ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:not(:checked) ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:not(:checked) ~ i:after {\n font-size: 0;\n}\nlabel.item-checkbox input[type='checkbox']:checked ~ .icon-checkbox,\nlabel.item-checkbox input[type='checkbox']:checked ~ * .icon-checkbox,\n.checkbox input[type='checkbox']:checked ~ i,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox,\n.checkbox input[type='checkbox']:indeterminate ~ i {\n border-color: var(--f7-checkbox-active-color, var(--f7-theme-color));\n background-color: var(--f7-checkbox-active-color, var(--f7-theme-color));\n}\nlabel.item-checkbox input[type='checkbox']:checked ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:checked ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:checked ~ i:after,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:indeterminate ~ i:after {\n opacity: 1;\n}\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:indeterminate ~ i:after {\n font-size: 0;\n content: '';\n position: absolute;\n top: 50%;\n width: 70%;\n background: var(--f7-checkbox-icon-color);\n height: 2px;\n border-radius: 2px;\n margin-top: -1px;\n transition: 0ms;\n right: 15%;\n}\nlabel.item-checkbox,\n.checkbox {\n cursor: pointer;\n}\nlabel.item-checkbox input[type='checkbox'],\n.checkbox input[type='checkbox'],\nlabel.item-checkbox input[type='radio'],\n.checkbox input[type='radio'] {\n display: none;\n}\nlabel.item-checkbox {\n transition-duration: 300ms;\n}\nlabel.item-checkbox .item-content .item-media,\nlabel.item-checkbox.item-content .item-media {\n align-self: center;\n}\nlabel.item-checkbox > .icon-checkbox {\n margin-left: calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin));\n}\nlabel.item-checkbox.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\nlabel.item-checkbox.active-state:after {\n background-color: transparent;\n}\nlabel.item-checkbox.disabled,\n.disabled label.item-checkbox {\n opacity: 0.55;\n pointer-events: none;\n opacity: 0.55 !important;\n pointer-events: none !important;\n}\nlabel.item-checkbox.item-checkbox-icon-end .item-inner {\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right) + var(--f7-checkbox-size) + 16px);\n}\nlabel.item-checkbox.item-checkbox-icon-end input[type='checkbox'] ~ .icon-checkbox {\n position: absolute;\n left: calc(var(--f7-safe-area-left) + 16px);\n margin-left: 0;\n}\n.ios .icon-checkbox:after,\n.ios .checkbox i:after {\n content: 'checkbox_ios';\n font-size: 21px;\n}\n.ios label.item-checkbox.active-state {\n transition-duration: 0ms;\n}\n.ios label.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox:after,\n.ios label.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox:after,\n.ios .checkbox input[type='checkbox']:indeterminate ~ i:after {\n height: 2px;\n margin-top: -1px;\n}\n.md .icon-checkbox,\n.md .checkbox i {\n transition-duration: 200ms;\n}\n.md .icon-checkbox:after,\n.md .checkbox i:after {\n content: 'checkbox_md';\n transition-duration: 200ms;\n font-size: 15px;\n}\n.md label.item-checkbox {\n position: relative;\n overflow: hidden;\n z-index: 0;\n}\n/* === Radio === */\n:root {\n /*\n --f7-radio-active-color: var(--f7-theme-color);\n */\n --f7-radio-border-radius: 50%;\n --f7-radio-extra-margin: 0px;\n}\n:root .dark,\n:root.dark {\n --f7-radio-inactive-color: rgba(255, 255, 255, 0.3);\n}\n.ios {\n --f7-radio-size: 22px;\n --f7-radio-border-width: 1px;\n --f7-radio-inactive-color: #c7c7cc;\n}\n.md {\n --f7-radio-size: 20px;\n --f7-radio-border-width: 2px;\n --f7-radio-inactive-color: #6d6d6d;\n}\n.radio {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n z-index: 1;\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.5);\n}\n.icon-radio {\n width: var(--f7-radio-size);\n height: var(--f7-radio-size);\n border-radius: var(--f7-radio-border-radius);\n position: relative;\n box-sizing: border-box;\n display: block;\n flex-shrink: 0;\n}\n.radio.color-white,\n.icon-radio.color-white,\n.color-white .radio,\n.color-white .icon-radio {\n --f7-theme-color: #fff;\n}\n.radio.color-black,\n.icon-radio.color-black,\n.color-black .radio,\n.color-black .icon-radio {\n --f7-theme-color: #000;\n}\n.radio .icon-radio,\n.md .icon-radio {\n border: var(--f7-radio-border-width) solid var(--f7-radio-inactive-color);\n}\nlabel.item-radio,\n.radio {\n cursor: pointer;\n}\nlabel.item-radio input[type='checkbox'],\n.radio input[type='checkbox'],\nlabel.item-radio input[type='radio'],\n.radio input[type='radio'] {\n display: none;\n}\nlabel.item-radio {\n transition-duration: 300ms;\n}\nlabel.item-radio .item-content .item-media,\nlabel.item-radio.item-content .item-media {\n align-self: center;\n}\nlabel.item-radio.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\nlabel.item-radio.active-state:after {\n background-color: transparent;\n}\nlabel.item-radio.disabled,\n.disabled label.item-radio {\n opacity: 0.55;\n pointer-events: none;\n opacity: 0.55 !important;\n pointer-events: none !important;\n}\n.ios .icon-radio:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n width: calc(var(--f7-radio-size) - var(--f7-radio-border-width) * 2);\n height: calc(var(--f7-radio-size) - var(--f7-radio-border-width) * 2);\n line-height: calc(var(--f7-radio-size) - var(--f7-radio-border-width) * 2 + 1px);\n font-size: 20px;\n content: 'radio_ios';\n color: var(--f7-radio-active-color, var(--f7-theme-color));\n opacity: 0;\n}\n.ios label.item-radio input[type='radio']:checked ~ .icon-radio:after,\n.ios label.item-radio input[type='radio']:checked ~ * .icon-radio:after,\n.ios .radio input[type='radio']:checked ~ .icon-radio:after {\n opacity: 1;\n}\n.ios .radio input[type='radio']:checked ~ .icon-radio {\n border-color: var(--f7-radio-active-color, var(--f7-theme-color));\n}\n.ios label.item-radio:not(.item-radio-icon-start) input[type='radio'] ~ .icon-radio {\n position: absolute;\n top: 50%;\n margin-top: -11px;\n left: calc(var(--f7-safe-area-left) + 10px);\n}\n.ios label.item-radio:not(.item-radio-icon-start) .item-inner {\n padding-left: calc(var(--f7-safe-area-left) + 36px);\n}\n.ios label.item-radio-icon-start > .icon-radio {\n margin-left: calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin));\n}\n.ios label.item-radio.active-state {\n transition-duration: 0ms;\n}\n.md .icon-radio {\n transition-duration: 200ms;\n}\n.md .icon-radio:after {\n content: '';\n position: absolute;\n width: 10px;\n height: 10px;\n left: 50%;\n top: 50%;\n margin-left: -5px;\n margin-top: -5px;\n background-color: var(--f7-radio-active-color, var(--f7-theme-color));\n border-radius: 50%;\n transform: scale(0);\n transition-duration: 200ms;\n}\n.md label.item-radio input[type='radio']:checked ~ .icon-radio,\n.md label.item-radio input[type='radio']:checked ~ * .icon-radio,\n.md .radio input[type='radio']:checked ~ .icon-radio {\n border-color: var(--f7-radio-active-color, var(--f7-theme-color));\n}\n.md label.item-radio input[type='radio']:checked ~ .icon-radio:after,\n.md label.item-radio input[type='radio']:checked ~ * .icon-radio:after,\n.md .radio input[type='radio']:checked ~ .icon-radio:after {\n background-color: var(--f7-radio-active-color, var(--f7-theme-color));\n transform: scale(1);\n}\n.md label.item-radio {\n position: relative;\n overflow: hidden;\n z-index: 0;\n}\n.md label.item-radio:not(.item-radio-icon-end) > .icon-radio {\n margin-left: calc(var(--f7-list-item-media-margin) + var(--f7-radio-extra-margin));\n}\n.md label.item-radio-icon-end input[type='radio'] ~ .icon-radio {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n left: calc(var(--f7-safe-area-left) + 16px);\n}\n.md label.item-radio-icon-end .item-inner {\n padding-left: calc(var(--f7-safe-area-left) + 52px);\n}\n/* === Toggle === */\n.ios {\n --f7-toggle-width: 52px;\n --f7-toggle-height: 32px;\n /*\n --f7-toggle-active-bg-color: var(--f7-theme-color);\n */\n --f7-toggle-inactive-knob-bg-color: #fff;\n --f7-toggle-active-knob-bg-color: #fff;\n --f7-toggle-inactive-border-color: #e5e5e5;\n --f7-toggle-inactive-bg-color: #fff;\n}\n.ios .dark,\n.ios.dark {\n --f7-toggle-inactive-border-color: #555;\n --f7-toggle-inactive-bg-color: #555;\n}\n.md {\n --f7-toggle-width: 52px;\n --f7-toggle-height: 32px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-toggle-inactive-bg-color: var(--f7-md-surface-variant);\n --f7-toggle-active-bg-color: var(--f7-theme-color);\n --f7-toggle-inactive-knob-bg-color: var(--f7-md-outline);\n --f7-toggle-active-knob-bg-color: var(--f7-md-on-primary);\n --f7-toggle-inactive-border-color: var(--f7-md-outline);\n --f7-toggle-active-border-color: var(--f7-theme-color);\n}\n.toggle,\n.toggle-icon {\n width: var(--f7-toggle-width);\n height: var(--f7-toggle-height);\n border-radius: var(--f7-toggle-height);\n}\n.toggle {\n display: inline-block;\n vertical-align: middle;\n position: relative;\n box-sizing: border-box;\n align-self: center;\n -webkit-user-select: none;\n user-select: none;\n}\n.toggle input[type='checkbox'] {\n display: none;\n}\n.toggle input[disabled] ~ .toggle-icon {\n pointer-events: none;\n}\n.toggle-icon {\n z-index: 0;\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n position: relative;\n transition: 300ms;\n box-sizing: border-box;\n display: block;\n cursor: pointer;\n}\n.toggle-icon:before,\n.toggle-icon:after {\n content: '';\n}\n.toggle-icon:after {\n position: absolute;\n z-index: 2;\n transform: translateX(0px);\n transition-duration: 300ms;\n}\n.ios .toggle {\n background: var(--f7-toggle-inactive-border-color);\n}\n.ios .toggle input[type='checkbox']:checked + .toggle-icon {\n background: var(--f7-toggle-active-color, var(--f7-theme-color));\n}\n.ios .toggle input[type='checkbox']:checked + .toggle-icon:before {\n background: var(--f7-toggle-active-bg-color, var(--f7-theme-color));\n transform: scale(0);\n}\n.ios .toggle input[type='checkbox']:checked + .toggle-icon:after {\n background: var(--f7-toggle-active-knob-bg-color);\n transform: translateX(calc(-1 * (var(--f7-toggle-width) - var(--f7-toggle-height))));\n}\n.ios .toggle-icon {\n background: var(--f7-toggle-border-color);\n}\n.ios .toggle-icon:before {\n position: absolute;\n right: 2px;\n top: 2px;\n width: calc(var(--f7-toggle-width) - 4px);\n height: calc(var(--f7-toggle-height) - 4px);\n border-radius: var(--f7-toggle-height);\n box-sizing: border-box;\n background: var(--f7-toggle-inactive-bg-color);\n z-index: 1;\n transition-duration: 300ms;\n transform: scale(1);\n}\n.ios .toggle-icon:after {\n background: var(--f7-toggle-inactive-knob-bg-color);\n height: calc(var(--f7-toggle-height) - 4px);\n width: calc(var(--f7-toggle-height) - 4px);\n top: 2px;\n right: 2px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n border-radius: calc(var(--f7-toggle-height) - 4px);\n}\n.ios .toggle-active-state input[type='checkbox']:not(:checked) + .toggle-icon:before {\n transform: scale(0);\n}\n.ios .toggle-active-state input[type='checkbox'] + .toggle-icon:after {\n width: calc(var(--f7-toggle-height) + 4px);\n}\n.ios .toggle-active-state input[type='checkbox']:checked + .toggle-icon:after {\n transform: translateX(calc(-1 * (var(--f7-toggle-width) - var(--f7-toggle-height) - 8px)));\n}\n.md .toggle input[type='checkbox']:checked + .toggle-icon {\n background: var(--f7-toggle-active-bg-color);\n border-color: var(--f7-toggle-active-border-color);\n}\n.md .toggle input[type='checkbox']:checked + .toggle-icon:after {\n transform: translateX(calc(-1 * (var(--f7-toggle-width) - var(--f7-toggle-height)))) scale(1);\n background: var(--f7-toggle-active-knob-bg-color);\n}\n.md .toggle.active-state input[type='checkbox']:checked + .toggle-icon:after {\n transform: translateX(calc(-1 * (var(--f7-toggle-width) - var(--f7-toggle-height)))) scale(1.1);\n}\n.md .toggle-icon {\n background: var(--f7-toggle-inactive-bg-color);\n border: 2px solid var(--f7-toggle-inactive-border-color);\n}\n.md .toggle-icon:after {\n background: var(--f7-toggle-inactive-knob-bg-color);\n height: calc(var(--f7-toggle-height) - 8px);\n width: calc(var(--f7-toggle-height) - 8px);\n top: 2px;\n border-radius: var(--f7-toggle-height);\n transform: scale(0.666);\n right: 2px;\n}\n.md .toggle-icon.active-state:after {\n transform: scale(1.1);\n}\n/* === Range Slider === */\n:root {\n /*\n --f7-range-bar-active-bg-color: var(--f7-theme-color);\n --f7-range-scale-bg-color: var(--f7-range-bar-bg-color);\n --f7-range-scale-substep-bg-color: var(--f7-range-bar-bg-color);\n */\n --f7-range-scale-step-height: 5px;\n --f7-range-scale-substep-width: 1px;\n --f7-range-scale-substep-height: 4px;\n --f7-range-bar-bg-color: rgba(0, 0, 0, 0.2);\n}\n:root .dark,\n:root.dark {\n --f7-range-bar-bg-color: rgba(255, 255, 255, 0.2);\n}\n.ios {\n --f7-range-size: 28px;\n --f7-range-bar-size: 4px;\n --f7-range-bar-border-radius: 2px;\n --f7-range-knob-size: 28px;\n --f7-range-knob-color: #fff;\n --f7-range-knob-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n --f7-range-label-size: 24px;\n --f7-range-label-text-color: #000;\n --f7-range-label-bg-color: #fff;\n --f7-range-label-font-size: 12px;\n --f7-range-label-font-weight: 500;\n --f7-range-label-border-radius: 5px;\n --f7-range-label-padding: 0px 2px;\n --f7-range-scale-text-color: #666;\n --f7-range-scale-step-width: 1px;\n --f7-range-scale-font-size: 12px;\n --f7-range-scale-font-weight: 400;\n --f7-range-scale-label-offset: 4px;\n}\n.md {\n --f7-range-size: 20px;\n --f7-range-bar-size: 2px;\n --f7-range-bar-border-radius: 0px;\n --f7-range-knob-size: 12px;\n --f7-range-knob-box-shadow: none;\n --f7-range-label-size: 26px;\n --f7-range-label-font-weight: normal;\n --f7-range-label-font-size: 10px;\n --f7-range-label-border-radius: 50%;\n --f7-range-label-padding: 0px;\n --f7-range-scale-step-width: 2px;\n --f7-range-scale-font-size: 12px;\n --f7-range-scale-font-weight: 400;\n --f7-range-scale-label-offset: 4px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-range-knob-color: var(--f7-theme-color);\n --f7-range-label-text-color: var(--f7-md-on-primary);\n --f7-range-label-bg-color: var(--f7-theme-color);\n --f7-range-scale-text-color: var(--f7-md-on-surface-variant);\n}\n.range-slider {\n display: block;\n position: relative;\n align-self: center;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n}\n.range-slider input[type='range'] {\n display: none;\n}\n.range-slider.range-slider-horizontal {\n width: 100%;\n height: var(--f7-range-size);\n touch-action: pan-y;\n}\n.range-slider.range-slider-vertical {\n height: 100%;\n width: var(--f7-range-size);\n touch-action: pan-x;\n}\n.range-bar {\n position: absolute;\n overflow: hidden;\n background: var(--f7-range-bar-bg-color);\n border-radius: var(--f7-range-bar-border-radius);\n}\n.range-slider-vertical .range-bar {\n left: 50%;\n top: 0;\n height: 100%;\n width: var(--f7-range-bar-size);\n margin-left: calc(-1 * var(--f7-range-bar-size) / 2);\n}\n.range-slider-horizontal .range-bar {\n left: 0;\n top: 50%;\n width: 100%;\n height: var(--f7-range-bar-size);\n margin-top: calc(-1 * var(--f7-range-bar-size) / 2);\n}\n.range-bar-active {\n position: absolute;\n background: var(--f7-range-bar-active-bg-color, var(--f7-theme-color));\n}\n.range-slider-horizontal .range-bar-active {\n right: 0;\n top: 0;\n height: 100%;\n}\n.range-slider-vertical .range-bar-active {\n left: 0;\n bottom: 0;\n width: 100%;\n}\n.range-slider-vertical-reversed .range-bar-active {\n top: 0;\n bottom: auto;\n}\n.range-knob-wrap {\n z-index: 20;\n position: absolute;\n height: var(--f7-range-knob-size);\n width: var(--f7-range-knob-size);\n}\n.range-slider-horizontal .range-knob-wrap {\n top: 50%;\n margin-top: calc(-1 * var(--f7-range-knob-size) / 2);\n margin-right: calc(-1 * var(--f7-range-knob-size) / 2);\n right: 0;\n}\n.range-slider-vertical .range-knob-wrap {\n left: 50%;\n margin-left: calc(-1 * var(--f7-range-knob-size) / 2);\n bottom: 0;\n margin-bottom: calc(-1 * var(--f7-range-knob-size) / 2);\n}\n.range-slider-vertical-reversed .range-knob-wrap {\n bottom: auto;\n top: 0;\n margin-bottom: 0;\n margin-top: calc(-1 * var(--f7-range-knob-size) / 2);\n}\n.range-knob {\n box-sizing: border-box;\n border-radius: 50%;\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 1;\n background: var(--f7-range-knob-color, var(--f7-range-knob-bg-color, var(--f7-theme-color)));\n box-shadow: var(--f7-range-knob-box-shadow);\n}\n.range-knob:after {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n width: 44px;\n height: 44px;\n margin-left: -22px;\n margin-top: -22px;\n}\n.range-knob-label {\n position: absolute;\n left: 50%;\n bottom: 100%;\n text-align: center;\n transition-duration: 120ms;\n transition-property: transform;\n box-sizing: border-box;\n transform: translateY(100%) scale(0);\n height: var(--f7-range-label-size);\n line-height: var(--f7-range-label-size);\n min-width: var(--f7-range-label-size);\n color: var(--f7-range-label-text-color);\n background-color: var(--f7-range-label-bg-color, var(--f7-theme-color));\n font-size: var(--f7-range-label-font-size);\n font-weight: var(--f7-range-label-font-weight);\n border-radius: var(--f7-range-label-border-radius);\n padding: var(--f7-range-label-padding);\n}\n.range-knob-active-state .range-knob-label {\n transform: translateY(0%) scale(1);\n}\n.range-scale {\n position: absolute;\n}\n.range-slider-horizontal .range-scale {\n top: 50%;\n left: 0;\n width: 100%;\n margin-top: calc(var(--f7-range-bar-size) / 2);\n}\n.range-slider-vertical .range-scale {\n right: 50%;\n top: 0;\n height: 100%;\n margin-right: calc(var(--f7-range-bar-size) / 2);\n}\n.range-scale-step {\n position: absolute;\n box-sizing: border-box;\n display: flex;\n font-size: var(--f7-range-scale-font-size);\n font-weight: var(--f7-range-scale-font-weight);\n color: var(--f7-range-scale-text-color, var(--f7-range-bar-bg-color));\n line-height: 1;\n}\n.range-scale-step:before {\n content: '';\n position: absolute;\n background: var(--f7-range-scale-step-bg-color, var(--f7-range-bar-bg-color));\n}\n.range-slider-horizontal .range-scale-step {\n justify-content: center;\n align-items: flex-start;\n width: var(--f7-range-scale-step-width);\n height: var(--f7-range-scale-step-height);\n padding-top: calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));\n top: 0;\n margin-right: calc(-1 * var(--f7-range-scale-step-width) / 2);\n}\n.range-slider-horizontal .range-scale-step:before {\n left: 0;\n top: 0;\n width: 100%;\n height: var(--f7-range-scale-step-height);\n}\n.range-slider-horizontal .range-scale-step:first-child {\n margin-right: 0;\n}\n.range-slider-horizontal .range-scale-step:last-child {\n margin-right: calc(-1 * var(--f7-range-scale-step-width));\n}\n.range-slider-vertical .range-scale-step {\n line-height: 1;\n justify-content: flex-end;\n align-items: center;\n height: var(--f7-range-scale-step-width);\n width: var(--f7-range-scale-step-height);\n padding-right: calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));\n right: 0;\n margin-bottom: calc(-1 * var(--f7-range-scale-step-width) / 2);\n}\n.range-slider-vertical .range-scale-step:first-child {\n margin-bottom: 0;\n}\n.range-slider-vertical .range-scale-step:last-child {\n margin-bottom: calc(-1 * var(--f7-range-scale-step-width));\n}\n.range-slider-vertical .range-scale-step:before {\n right: 0;\n top: 0;\n height: 100%;\n width: var(--f7-range-scale-step-height);\n}\n.range-scale-substep {\n --f7-range-scale-step-bg-color: var(--f7-range-scale-substep-bg-color, var(--f7-range-bar-bg-color));\n --f7-range-scale-step-width: var(--f7-range-scale-substep-width);\n --f7-range-scale-step-height: var(--f7-range-scale-substep-height);\n}\n.ios .range-knob-label {\n margin-bottom: 6px;\n transform: translateX(-50%) translateY(100%) scale(0);\n}\n.ios .range-knob-active-state .range-knob-label {\n transform: translateX(-50%) translateY(0%) scale(1);\n}\n.md .range-knob {\n transition-duration: 200ms;\n transition-property: transform, background-color;\n}\n.md .range-knob-active-state .range-knob {\n transform: scale(1.5);\n}\n.md .range-slider-min:not(.range-slider-dual) .range-knob {\n background: #fff !important;\n border: 2px solid var(--f7-range-bar-bg-color);\n}\n.md .range-knob-label {\n width: var(--f7-range-label-size);\n margin-left: calc(-1 * var(--f7-range-label-size) / 2);\n margin-bottom: 8px;\n}\n.md .range-knob-label:before {\n content: '';\n left: 50%;\n top: 0px;\n margin-left: calc(-1 * var(--f7-range-label-size) / 2);\n position: absolute;\n z-index: -1;\n width: var(--f7-range-label-size);\n height: var(--f7-range-label-size);\n background: var(--f7-range-label-bg-color, var(--f7-theme-color));\n transform: rotate(-45deg);\n border-radius: 50% 50% 50% 0;\n}\n.md .range-knob-active-state .range-knob-label {\n transform: translateY(0%) scale(1);\n}\n.md .range-slider-label .range-knob-active-state .range-knob {\n transform: scale(0);\n}\n/* === Stepper === */\n:root {\n /*\n --f7-stepper-button-text-color: var(--f7-theme-color);\n --f7-stepper-button-pressed-text-color: var(--f7-button-text-color, var(--f7-theme-color));\n --f7-stepper-value-text-color: var(--f7-theme-color);\n --f7-stepper-fill-button-bg-color: var(--f7-theme-color);\n */\n --f7-stepper-raised-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);\n --f7-stepper-value-font-weight: 500;\n}\n.ios {\n --f7-stepper-height: 28px;\n --f7-stepper-border-radius: 5px;\n --f7-stepper-fill-button-text-color: #fff;\n /*\n --f7-stepper-button-pressed-bg-color: rgba(var(--f7-theme-color-rgb), .15);\n --f7-stepper-fill-button-pressed-bg-color: var(--f7-theme-color-tint);\n */\n --f7-stepper-large-height: 44px;\n --f7-stepper-small-height: 26px;\n --f7-stepper-value-font-size: 17px;\n --f7-stepper-border-width: 2px;\n --f7-stepper-border-color: var(--f7-theme-color);\n --f7-stepper-small-border-width: 2px;\n}\n.md {\n --f7-stepper-height: 40px;\n --f7-stepper-border-radius: 8px;\n --f7-stepper-large-height: 48px;\n --f7-stepper-small-height: 32px;\n --f7-stepper-value-font-size: 14px;\n --f7-stepper-border-width: 1px;\n --f7-stepper-small-border-width: 1px;\n --f7-stepper-button-pressed-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-stepper-fill-button-text-color: var(--f7-md-on-primary);\n --f7-stepper-fill-button-pressed-bg-color: var(--f7-theme-color);\n --f7-stepper-border-color: var(--f7-md-outline);\n}\n.stepper {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n display: inline-flex;\n align-items: stretch;\n height: var(--f7-stepper-height);\n border-radius: var(--f7-stepper-border-radius);\n flex-direction: row-reverse;\n}\n.stepper-button,\n.stepper-button-minus,\n.stepper-button-plus {\n background-color: var(--f7-stepper-button-bg-color);\n width: 40px;\n border-radius: var(--f7-stepper-border-radius);\n border: var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);\n color: var(--f7-stepper-button-text-color, var(--f7-theme-color));\n line-height: calc(var(--f7-stepper-height) - var(--f7-stepper-border-width, 0px));\n text-align: center;\n display: flex;\n justify-content: center;\n align-content: center;\n align-items: center;\n flex-shrink: 0;\n box-sizing: border-box;\n position: relative;\n cursor: pointer;\n}\n.stepper-button.active-state,\n.stepper-button-minus.active-state,\n.stepper-button-plus.active-state {\n background-color: var(--f7-stepper-button-pressed-bg-color, rgba(var(--f7-theme-color-rgb), 0.15));\n color: var(--f7-stepper-button-pressed-text-color, var(--f7-stepper-button-text-color, var(--f7-theme-color)));\n}\n.stepper-button:first-child,\n.stepper-button-minus:first-child,\n.stepper-button-plus:first-child {\n border-radius: var(--f7-stepper-border-radius) 0 0 var(--f7-stepper-border-radius);\n}\n.stepper-button:last-child,\n.stepper-button-minus:last-child,\n.stepper-button-plus:last-child {\n border-radius: 0 var(--f7-stepper-border-radius) var(--f7-stepper-border-radius) 0;\n}\n.stepper-button .icon,\n.stepper-button-minus .icon,\n.stepper-button-plus .icon {\n pointer-events: none;\n}\n.stepper-button + .stepper-button,\n.stepper-button-minus + .stepper-button,\n.stepper-button-plus + .stepper-button,\n.stepper-button + .stepper-button-minus,\n.stepper-button-minus + .stepper-button-minus,\n.stepper-button-plus + .stepper-button-minus,\n.stepper-button + .stepper-button-plus,\n.stepper-button-minus + .stepper-button-plus,\n.stepper-button-plus + .stepper-button-plus {\n border-left: none;\n}\n.stepper-button-plus,\n.stepper-button-minus {\n -webkit-user-select: none;\n user-select: none;\n}\n.stepper-button-plus:after,\n.stepper-button-minus:after,\n.stepper-button-plus:before,\n.stepper-button-minus:before {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--f7-stepper-button-text-color, var(--f7-theme-color));\n border-radius: 2px;\n}\n.stepper-button-plus:after,\n.stepper-button-minus:after {\n width: 15px;\n height: 2px;\n}\n.stepper-button-plus:before {\n height: 15px;\n width: 2px;\n}\n.stepper-value {\n display: flex;\n align-content: center;\n align-items: center;\n justify-content: center;\n}\n.stepper-input-wrap,\n.stepper-value {\n flex-shrink: 1;\n text-align: center;\n border-top: var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);\n border-bottom: var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);\n}\n.stepper .stepper-input-wrap input,\n.stepper-value {\n width: 45px;\n color: var(--f7-stepper-value-text-color, var(--f7-theme-color));\n font-size: var(--f7-stepper-value-font-size);\n font-weight: var(--f7-stepper-value-font-weight);\n text-align: center;\n}\n.stepper .stepper-input-wrap input {\n height: 100%;\n}\n.stepper-round,\n.ios .stepper-round-ios,\n.md .stepper-round-md {\n --f7-stepper-border-radius: var(--f7-stepper-height);\n}\n.stepper-fill,\n.ios .stepper-fill-ios,\n.md .stepper-fill-md {\n --f7-stepper-border-color: var(--f7-stepper-fill-button-bg-color, var(--f7-theme-color));\n --f7-stepper-button-bg-color: var(--f7-stepper-fill-button-bg-color, var(--f7-theme-color));\n --f7-stepper-button-text-color: var(--f7-stepper-fill-button-text-color);\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.stepper-fill .stepper-button + .stepper-button,\n.ios .stepper-fill-ios .stepper-button + .stepper-button,\n.md .stepper-fill-md .stepper-button + .stepper-button,\n.stepper-raised .stepper-button + .stepper-button,\n.ios .stepper-raised-ios .stepper-button + .stepper-button,\n.md .stepper-raised-md .stepper-button + .stepper-button,\n.stepper-fill .stepper-button-minus + .stepper-button-plus,\n.ios .stepper-fill-ios .stepper-button-minus + .stepper-button-plus,\n.md .stepper-fill-md .stepper-button-minus + .stepper-button-plus,\n.stepper-raised .stepper-button-minus + .stepper-button-plus,\n.ios .stepper-raised-ios .stepper-button-minus + .stepper-button-plus,\n.md .stepper-raised-md .stepper-button-minus + .stepper-button-plus {\n border-left: 1px solid rgba(0, 0, 0, 0.1);\n}\n.stepper-fill .stepper-button + .stepper-button.active-state,\n.ios .stepper-fill-ios .stepper-button + .stepper-button.active-state,\n.md .stepper-fill-md .stepper-button + .stepper-button.active-state,\n.stepper-fill .stepper-button-minus + .stepper-button-plus.active-state,\n.ios .stepper-fill-ios .stepper-button-minus + .stepper-button-plus.active-state,\n.md .stepper-fill-md .stepper-button-minus + .stepper-button-plus.active-state {\n border-left-color: var(--f7-stepper-button-pressed-bg-color);\n}\n.stepper-raised:not(.stepper-fill) .stepper-input-wrap,\n.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-input-wrap,\n.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-input-wrap,\n.stepper-raised:not(.stepper-fill) .stepper-value,\n.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-value,\n.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-value {\n border-left: 1px solid rgba(0, 0, 0, 0.1);\n border-right: 1px solid rgba(0, 0, 0, 0.1);\n}\n.stepper-large,\n.ios .stepper-large-ios,\n.md .stepper-large-md {\n --f7-stepper-height: var(--f7-stepper-large-height);\n}\n.stepper-small,\n.ios .stepper-small-ios,\n.md .stepper-small-md {\n --f7-stepper-border-width: var(--f7-stepper-small-border-width);\n --f7-stepper-height: var(--f7-stepper-small-height);\n}\n.ios .stepper-fill.stepper-small-ios,\n.ios .stepper-fill.stepper-small {\n --f7-stepper-button-pressed-bg-color: transparent;\n --f7-stepper-button-pressed-text-color: var(--f7-theme-color);\n}\n.stepper-raised,\n.ios .stepper-raised-ios,\n.md .stepper-raised-md {\n --f7-stepper-border-width: 0;\n box-shadow: var(--f7-stepper-raised-box-shadow);\n}\n.ios .stepper-button .f7-icons,\n.ios .stepper-button-minus .f7-icons,\n.ios .stepper-button-plus .f7-icons {\n font-size: 22px;\n}\n.ios .stepper-fill,\n.ios .stepper-fill-ios {\n --f7-stepper-button-pressed-bg-color: var(--f7-stepper-fill-button-pressed-bg-color, var(--f7-theme-color-tint));\n}\n.ios .stepper-small.stepper-raised,\n.ios .stepper-small-ios.stepper-raised,\n.ios .stepper-small.stepper-raised-ios,\n.ios .stepper-small-ios.stepper-raised-ios {\n --f7-stepper-border-width: 0px;\n}\n.ios .stepper-small .stepper-button,\n.ios .stepper-small-ios .stepper-button,\n.ios .stepper-small .stepper-button-minus,\n.ios .stepper-small-ios .stepper-button-minus,\n.ios .stepper-small .stepper-button-plus,\n.ios .stepper-small-ios .stepper-button-plus {\n transition-duration: 200ms;\n}\n.ios .stepper-small .stepper-button.active-state:after,\n.ios .stepper-small-ios .stepper-button.active-state:after,\n.ios .stepper-small .stepper-button-minus.active-state:after,\n.ios .stepper-small-ios .stepper-button-minus.active-state:after,\n.ios .stepper-small .stepper-button-plus.active-state:after,\n.ios .stepper-small-ios .stepper-button-plus.active-state:after,\n.ios .stepper-small .stepper-button.active-state:before,\n.ios .stepper-small-ios .stepper-button.active-state:before,\n.ios .stepper-small .stepper-button-minus.active-state:before,\n.ios .stepper-small-ios .stepper-button-minus.active-state:before,\n.ios .stepper-small .stepper-button-plus.active-state:before,\n.ios .stepper-small-ios .stepper-button-plus.active-state:before {\n transition-duration: 200ms;\n background-color: var(--f7-theme-color);\n}\n.md .stepper-button,\n.md .stepper-button-minus,\n.md .stepper-button-plus {\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n overflow: hidden;\n}\n.md .stepper-fill,\n.md .stepper-fill-md {\n --f7-stepper-button-pressed-bg-color: var(--f7-stepper-fill-button-bg-color, var(--f7-theme-color));\n}\n/* === Smart Select === */\n.smart-select :root {\n /*\n --f7-smart-select-sheet-bg: var(--f7-list-bg-color);\n --f7-smart-select-sheet-toolbar-border-color: var(--f7-bars-border-color);\n */\n}\n.smart-select select {\n display: none;\n}\n.smart-select .item-after {\n max-width: 70%;\n overflow: hidden;\n text-overflow: ellipsis;\n position: relative;\n display: block;\n}\n.smart-select-sheet .page,\n.smart-select-sheet .sheet-modal-inner,\n.smart-select-sheet .list ul {\n background: var(--f7-smart-select-sheet-bg, var(--f7-list-bg-color));\n}\n.smart-select-sheet .toolbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-smart-select-sheet-toolbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.smart-select-sheet .toolbar:after {\n display: block;\n}\n.smart-select-sheet .list {\n margin: 0;\n}\n.smart-select-sheet .list ul:before,\n.smart-select-sheet .list ul:after {\n display: none !important;\n}\n.smart-select-popover .popover-inner {\n max-height: 40vh;\n}\n/* === Grid === */\n:root {\n --f7-grid-gap: 16px;\n}\n.grid {\n display: grid;\n}\n.grid.grid-gap {\n gap: var(--f7-grid-gap);\n}\n.grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n}\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n}\n.grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n}\n.grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n}\n.grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n}\n.grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n}\n.grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n}\n.grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n}\n.grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n}\n.grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n}\n.grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n}\n.grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n}\n.grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n}\n.grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n}\n.grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n}\n.grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n}\n.grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n}\n.grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n}\n.grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n}\n.grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n}\n.grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n}\n.grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n}\n.grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n}\n.grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n}\n.grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n}\n.grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n}\n.grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n}\n.grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n}\n.grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n}\n.grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n}\n.grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n}\n.grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n}\n.grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n}\n.grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n}\n.grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n}\n.grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n}\n.grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n}\n.grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n}\n.grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n}\n@media (min-width: 480px) {\n .xsmall-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .xsmall-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .xsmall-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .xsmall-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .xsmall-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .xsmall-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .xsmall-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .xsmall-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .xsmall-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .xsmall-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .xsmall-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .xsmall-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .xsmall-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .xsmall-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .xsmall-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .xsmall-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .xsmall-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .xsmall-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .xsmall-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .xsmall-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .xsmall-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .xsmall-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .xsmall-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .xsmall-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .xsmall-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .xsmall-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .xsmall-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .xsmall-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .xsmall-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .xsmall-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .xsmall-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .xsmall-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .xsmall-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .xsmall-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .xsmall-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .xsmall-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .xsmall-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .xsmall-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .xsmall-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .xsmall-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 568px) {\n .small-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .small-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .small-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .small-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .small-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .small-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .small-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .small-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .small-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .small-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .small-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .small-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .small-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .small-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .small-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .small-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .small-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .small-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .small-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .small-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .small-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .small-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .small-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .small-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .small-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .small-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .small-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .small-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .small-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .small-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .small-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .small-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .small-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .small-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .small-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .small-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .small-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .small-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .small-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .small-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 768px) {\n .medium-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .medium-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .medium-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .medium-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .medium-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .medium-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .medium-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .medium-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .medium-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .medium-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .medium-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .medium-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .medium-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .medium-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .medium-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .medium-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .medium-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .medium-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .medium-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .medium-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .medium-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .medium-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .medium-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .medium-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .medium-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .medium-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .medium-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .medium-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .medium-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .medium-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .medium-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .medium-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .medium-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .medium-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .medium-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .medium-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .medium-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .medium-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .medium-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .medium-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 1024px) {\n .large-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .large-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .large-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .large-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .large-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .large-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .large-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .large-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .large-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .large-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .large-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .large-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .large-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .large-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .large-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .large-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .large-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .large-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .large-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .large-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .large-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .large-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .large-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .large-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .large-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .large-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .large-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .large-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .large-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .large-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .large-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .large-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .large-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .large-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .large-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .large-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .large-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .large-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .large-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .large-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 1200px) {\n .xlarge-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .xlarge-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .xlarge-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .xlarge-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .xlarge-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .xlarge-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .xlarge-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .xlarge-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .xlarge-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .xlarge-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .xlarge-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .xlarge-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .xlarge-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .xlarge-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .xlarge-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .xlarge-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .xlarge-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .xlarge-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .xlarge-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .xlarge-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .xlarge-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .xlarge-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .xlarge-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .xlarge-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .xlarge-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .xlarge-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .xlarge-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .xlarge-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .xlarge-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .xlarge-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .xlarge-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .xlarge-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .xlarge-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .xlarge-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .xlarge-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .xlarge-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .xlarge-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .xlarge-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .xlarge-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .xlarge-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n/* === Calendar/Datepicker === */\n:root {\n --f7-calendar-height: 340px;\n --f7-calendar-sheet-landscape-height: 220px;\n --f7-calendar-popover-width: 320px;\n --f7-calendar-popover-height: 320px;\n --f7-calendar-modal-height: 420px;\n --f7-calendar-modal-max-width: 380px;\n /*\n --f7-calendar-header-bg-color: var(--f7-bars-bg-color);\n --f7-calendar-header-link-color: var(--f7-bars-link-color);\n --f7-calendar-header-text-color: var(--f7-bars-text-color);\n --f7-calendar-footer-bg-color: var(--f7-bars-bg-color);\n --f7-calendar-footer-border-color: var(--f7-bars-border-color);\n --f7-calendar-footer-link-color: var(--f7-bars-link-color);\n --f7-calendar-footer-text-color: var(--f7-bars-text-color);\n */\n --f7-calendar-week-header-bg-color: transparent;\n --f7-calendar-footer-padding: 0 8px;\n --f7-calendar-week-header-font-size: 11px;\n /*\n --f7-calendar-selected-bg-color: var(--f7-theme-color);\n */\n --f7-calendar-disabled-text-color: #d4d4d4;\n --f7-calendar-event-dot-size: 4px;\n /*\n --f7-calendar-event-bg-color: var(--f7-theme-color);\n */\n /*\n --f7-calendar-picker-selected-text-color: var(--f7-theme-color);\n */\n --f7-calendar-time-selector-height: 28px;\n --f7-calendar-picker-pressed-bg-color: rgba(0, 0, 0, 0.1);\n --f7-calendar-picker-hover-bg-color: rgba(0, 0, 0, 0.03);\n --f7-calendar-time-selector-bg-color: rgba(0, 0, 0, 0.05);\n}\n:root .dark,\n:root.dark {\n --f7-calendar-picker-pressed-bg-color: rgba(255, 255, 255, 0.08);\n --f7-calendar-picker-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-calendar-time-selector-bg-color: rgba(255, 255, 255, 0.1);\n}\n.ios {\n --f7-calendar-selected-text-color: #fff;\n --f7-calendar-header-height: 44px;\n --f7-calendar-header-font-size: 17px;\n --f7-calendar-header-font-weight: 600;\n --f7-calendar-header-padding: 0 8px;\n --f7-calendar-footer-height: 44px;\n --f7-calendar-footer-font-size: 17px;\n --f7-calendar-week-header-height: 18px;\n --f7-calendar-day-font-size: 15px;\n --f7-calendar-day-size: 30px;\n --f7-calendar-picker-font-size: 17px;\n --f7-calendar-time-selector-font-size: 17px;\n --f7-calendar-modal-border-radius: 4px;\n --f7-calendar-modal-box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2),\n 0px 24px 38px 3px rgba(0, 0, 0, 0.14),\n 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\n --f7-calendar-prev-next-text-color: #c8c8c8;\n --f7-calendar-sheet-border-color: #929499;\n --f7-calendar-sheet-bg-color: #fff;\n --f7-calendar-week-header-text-color: #5e5e5e;\n --f7-calendar-modal-bg-color: #fff;\n --f7-calendar-day-text-color: #000;\n --f7-calendar-today-text-color: #000;\n --f7-calendar-today-bg-color: #e3e3e3;\n}\n.ios .dark,\n.ios.dark {\n --f7-calendar-prev-next-text-color: #5e5e5e;\n --f7-calendar-sheet-border-color: var(--f7-bars-border-color);\n --f7-calendar-sheet-bg-color: #121212;\n --f7-calendar-week-header-text-color: #aaa;\n --f7-calendar-modal-bg-color: #121212;\n --f7-calendar-day-text-color: #fff;\n --f7-calendar-today-text-color: #fff;\n --f7-calendar-today-bg-color: #333;\n}\n.md {\n --f7-calendar-sheet-border-color: transparent;\n --f7-calendar-header-height: 64px;\n --f7-calendar-header-font-size: 24px;\n --f7-calendar-header-font-weight: 400;\n --f7-calendar-header-padding: 0 24px;\n --f7-calendar-footer-height: 56px;\n --f7-calendar-footer-font-size: 14px;\n --f7-calendar-week-header-height: 24px;\n --f7-calendar-day-font-size: 14px;\n --f7-calendar-today-bg-color: none;\n --f7-calendar-day-size: 32px;\n --f7-calendar-picker-font-size: 14px;\n --f7-calendar-time-selector-font-size: 14px;\n --f7-calendar-modal-border-radius: 28px;\n --f7-calendar-modal-box-shadow: none;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-calendar-sheet-bg-color: var(--f7-md-surface-1);\n --f7-calendar-selected-text-color: var(--f7-md-on-primary);\n --f7-calendar-week-header-text-color: var(--f7-md-on-surface-variant);\n --f7-calendar-day-text-color: var(--f7-md-on-surface);\n --f7-calendar-prev-next-text-color: rgba(var(--f7-md-on-surface-variant-rgb), 0.55);\n --f7-calendar-today-text-color: var(--f7-theme-color);\n --f7-calendar-modal-bg-color: var(--f7-md-surface-1);\n}\n.calendar {\n overflow: hidden;\n height: var(--f7-calendar-height);\n width: 100%;\n display: flex;\n flex-direction: column;\n}\n.calendar.modal-in {\n display: flex;\n}\n@media (orientation: landscape) and (max-height: 415px) {\n .calendar.calendar-sheet {\n height: var(--f7-calendar-sheet-landscape-height);\n }\n .calendar.calendar-modal {\n height: calc(100vh - var(--f7-navbar-height));\n }\n}\n.calendar.calendar-inline,\n.calendar.calendar-popover .calendar {\n position: relative;\n}\n.calendar-sheet {\n --f7-sheet-border-color: var(--f7-calendar-sheet-border-color);\n background: var(--f7-calendar-sheet-bg-color);\n padding-bottom: var(--f7-safe-area-bottom);\n height: calc(var(--f7-calendar-height) + var(--f7-safe-area-bottom));\n}\n.calendar-sheet:before {\n z-index: 600;\n}\n.calendar-sheet .toolbar:before,\n.calendar-modal .toolbar:before,\n.calendar-popover .toolbar:before {\n display: none;\n}\n.calendar-popover {\n width: var(--f7-calendar-popover-width);\n}\n.calendar-popover .toolbar-top,\n.calendar-popover .calendar-header {\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n overflow: hidden;\n}\n.calendar-popover .calendar-header + .toolbar-top {\n border-radius: 0;\n}\n.calendar-popover .toolbar-bottom,\n.calendar-popover .calendar-footer {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.calendar-popover .calendar {\n height: var(--f7-calendar-popover-height);\n position: relative;\n z-index: 1;\n}\n.calendar-popover .calendar-month-picker,\n.calendar-popover .calendar-year-picker,\n.calendar-popover .calendar-time-picker {\n border-radius: var(--f7-popover-border-radius);\n}\n.calendar-popover .calendar-month-picker .picker,\n.calendar-popover .calendar-year-picker .picker,\n.calendar-popover .calendar-time-picker .picker {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n.calendar-header {\n width: 100%;\n position: relative;\n overflow: hidden;\n flex-shrink: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n box-sizing: border-box;\n padding: var(--f7-calendar-header-padding);\n background-color: var(--f7-calendar-header-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-calendar-header-text-color, var(--f7-bars-text-color));\n height: var(--f7-calendar-header-height);\n line-height: var(--f7-calendar-header-height);\n font-size: var(--f7-calendar-header-font-size);\n font-weight: var(--f7-calendar-header-font-weight);\n}\n.calendar-header a {\n color: var(--f7-calendar-header-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.calendar-footer {\n width: 100%;\n flex-shrink: 0;\n padding: var(--f7-calendar-footer-padding);\n background-color: var(--f7-calendar-footer-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-calendar-footer-text-color, var(--f7-bars-text-color));\n height: var(--f7-calendar-footer-height);\n font-size: var(--f7-calendar-header-font-size);\n display: flex;\n justify-content: flex-end;\n box-sizing: border-box;\n align-items: center;\n position: relative;\n}\n.calendar-footer a {\n color: var(--f7-calendar-footer-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.calendar-footer:before {\n content: '';\n position: absolute;\n background-color: var(--f7-calendar-footer-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.calendar-modal {\n position: absolute;\n height: var(--f7-calendar-modal-height);\n overflow: hidden;\n top: 50%;\n left: 50%;\n min-width: 300px;\n max-width: var(--f7-calendar-modal-max-width);\n transform: translate3d(-50%, 100vh, 0);\n transition-property: transform;\n display: flex;\n z-index: 13500;\n background: var(--f7-calendar-modal-bg-color);\n width: 90%;\n border-radius: var(--f7-calendar-modal-border-radius);\n box-shadow: var(--f7-calendar-modal-box-shadow);\n transition-timing-function: cubic-bezier(0, 1, 0.2, 1);\n}\n.calendar-modal.modal-in,\n.calendar-modal.modal-out {\n transition-duration: 400ms;\n}\n.calendar-modal.modal-in {\n transform: translate3d(-50%, -50%, 0);\n}\n.calendar-modal.modal-out {\n transform: translate3d(-50%, 100vh, 0);\n}\n.calendar-week-header {\n display: flex;\n box-sizing: border-box;\n position: relative;\n font-size: var(--f7-calendar-week-header-font-size);\n background-color: var(--f7-calendar-week-header-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-calendar-week-header-text-color, var(--f7-bars-text-color));\n height: var(--f7-calendar-week-header-height);\n padding-left: var(--f7-safe-area-left);\n padding-right: var(--f7-safe-area-right);\n}\n.calendar-week-header .calendar-week-day {\n flex-shrink: 1;\n width: calc(100% / 7);\n text-align: center;\n line-height: var(--f7-calendar-week-header-height);\n}\n.calendar-months {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: relative;\n flex-shrink: 10;\n}\n.calendar-months-wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n transition: 300ms;\n}\n.calendar-month {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n}\n.calendar-row {\n height: 16.66666667%;\n display: flex;\n flex-shrink: 1;\n width: 100%;\n position: relative;\n box-sizing: border-box;\n padding-left: var(--f7-safe-area-left);\n padding-right: var(--f7-safe-area-right);\n}\n.calendar-modal .calendar-months:first-child .calendar-row:first-child:before,\n.calendar-popover .calendar-months:first-child .calendar-row:first-child:before {\n display: none !important;\n}\n.calendar-day {\n flex-shrink: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n box-sizing: border-box;\n width: 14.28571429%;\n text-align: center;\n cursor: pointer;\n z-index: 20;\n color: var(--f7-calendar-day-text-color);\n height: 100%;\n font-size: var(--f7-calendar-day-font-size);\n}\n.calendar-day-today .calendar-day-number {\n color: var(--f7-calendar-today-text-color, var(--f7-theme-color));\n background-color: var(--f7-calendar-today-bg-color);\n}\n.calendar-day-prev,\n.calendar-day-next {\n color: var(--f7-calendar-prev-next-text-color);\n}\n.calendar-day-disabled {\n color: var(--f7-calendar-disabled-text-color);\n cursor: auto;\n}\n.calendar-day-selected .calendar-day-number {\n color: var(--f7-calendar-selected-text-color);\n background-color: var(--f7-calendar-selected-bg-color, var(--f7-theme-color));\n}\n.calendar-day-number {\n display: inline-block;\n border-radius: 50%;\n position: relative;\n width: var(--f7-calendar-day-size);\n height: var(--f7-calendar-day-size);\n line-height: var(--f7-calendar-day-size);\n}\n.calendar-day-events {\n position: absolute;\n display: flex;\n left: 0;\n width: 100%;\n top: 100%;\n align-items: center;\n justify-content: center;\n margin-top: 1px;\n}\n.calendar-day-event {\n width: var(--f7-calendar-event-dot-size);\n height: var(--f7-calendar-event-dot-size);\n border-radius: calc(var(--f7-calendar-event-dot-size) / 2);\n background-color: var(--f7-calendar-event-bg-color);\n}\n.calendar-day-event + .calendar-day-event {\n margin-left: 2px;\n}\n.calendar-day-selected-range,\n.calendar-day-selected-left,\n.calendar-day-selected-right {\n position: relative;\n}\n.calendar-day-selected-range:before,\n.calendar-day-selected-left:before,\n.calendar-day-selected-right:before {\n width: 100%;\n height: var(--f7-calendar-day-size);\n content: '';\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n z-index: -1;\n background-color: var(--f7-calendar-selected-bg-color, var(--f7-theme-color));\n opacity: 0.2;\n}\n.calendar-day-selected-range:first-child:before,\n.calendar-day-selected-left:before {\n left: auto;\n right: 0;\n width: calc(50% + var(--f7-calendar-day-size) / 2);\n border-radius: var(--f7-calendar-day-size) 0 0 var(--f7-calendar-day-size);\n}\n.calendar-day-selected-range:last-child:before,\n.calendar-day-selected-right:before {\n width: calc(50% + var(--f7-calendar-day-size) / 2);\n border-radius: 0 var(--f7-calendar-day-size) var(--f7-calendar-day-size) 0;\n}\n.calendar-day-selected-left:last-child:before,\n.calendar-day-selected-right:first-child:before {\n display: none;\n}\n.calendar-day-selected-left.calendar-day-selected-right:before {\n content: none;\n display: none;\n}\n.calendar-day-selected-range .calendar-day-number {\n background-color: transparent;\n color: inherit;\n}\n.calendar-month-selector,\n.calendar-year-selector {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 50%;\n max-width: 200px;\n flex-shrink: 10;\n margin-left: auto;\n margin-right: auto;\n}\n.calendar-month-selector .calendar-day-number,\n.calendar-year-selector .calendar-day-number {\n flex-shrink: 1;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.calendar-month-selector a.icon-only,\n.calendar-year-selector a.icon-only {\n min-width: 36px;\n}\n.calendar-month-picker,\n.calendar-year-picker,\n.calendar-time-picker {\n position: relative;\n width: 100%;\n height: 100%;\n -webkit-user-select: none;\n user-select: none;\n background: transparent;\n}\n.calendar-month-picker .picker-columns,\n.calendar-year-picker .picker-columns {\n text-align: center;\n}\n.calendar-month-picker-item,\n.calendar-year-picker-item {\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n overflow: hidden;\n cursor: pointer;\n transition-duration: 100ms;\n box-sizing: border-box;\n}\n.calendar-month-picker-item span,\n.calendar-year-picker-item span {\n white-space: nowrap;\n text-overflow: ellipsis;\n box-sizing: border-box;\n position: relative;\n overflow: hidden;\n pointer-events: none;\n}\n.calendar-month-picker-item.active-state,\n.calendar-year-picker-item.active-state {\n background: var(--f7-calendar-picker-pressed-bg-color);\n}\n.calendar-month-picker-item {\n padding: 5px;\n}\n.sheet-modal .calendar-month-picker-item {\n width: 25%;\n height: 33.33333333%;\n}\n.sheet-modal .calendar-month-picker-item:nth-child(4n + 1):before {\n display: none !important;\n}\n.sheet-modal .calendar-month-picker-item:nth-child(n + 9):after {\n display: none !important;\n}\n.popover .calendar-month-picker-item,\n.calendar-modal .calendar-month-picker-item {\n width: 33.33333333%;\n height: 25%;\n}\n.popover .calendar-month-picker-item:nth-child(3n + 1):before,\n.calendar-modal .calendar-month-picker-item:nth-child(3n + 1):before {\n display: none !important;\n}\n.popover .calendar-month-picker-item:nth-child(n + 10):after,\n.calendar-modal .calendar-month-picker-item:nth-child(n + 10):after {\n display: none !important;\n}\n.calendar-month-picker-item-current,\n.calendar-year-picker-item-current {\n color: var(--f7-calendar-picker-selected-text-color, var(--f7-theme-color));\n}\n.calendar-year-picker {\n overflow: auto;\n --webkit-overflow-scrolling: touch;\n}\n.calendar-year-picker-item {\n height: 34px;\n line-height: 34px;\n width: 100%;\n}\n.calendar-time-selector {\n flex-shrink: 0;\n font-size: var(--f7-calendar-time-selector-font-size);\n position: relative;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n}\n.calendar-time-selector a {\n overflow: hidden;\n position: relative;\n justify-content: center;\n align-items: center;\n display: flex;\n box-sizing: border-box;\n height: var(--f7-calendar-time-selector-height);\n background-color: var(--f7-calendar-time-selector-bg-color);\n padding: 0 16px;\n border-radius: 8px;\n}\n.calendar-time-selector > span {\n font-weight: 500;\n}\n.calendar-time-selector .segmented {\n margin-left: 8px;\n}\n.calendar-time-picker-popover,\n.calendar-year-picker-popover,\n.calendar-month-picker-popover {\n height: 240px;\n width: 240px;\n}\n.calendar-time-picker-popover .popover-inner,\n.calendar-year-picker-popover .popover-inner,\n.calendar-month-picker-popover .popover-inner {\n height: 100%;\n overflow: hidden;\n}\n.calendar-time-picker {\n --f7-picker-popover-height: 100%;\n --f7-picker-inline-height: 100%;\n}\n.calendar-time-picker .toolbar {\n flex-shrink: 0;\n top: 0 !important;\n}\n.calendar-time-picker .picker {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n/* === Picker === */\n:root {\n --f7-picker-height: 260px;\n --f7-picker-inline-height: 200px;\n --f7-picker-popover-height: 260px;\n --f7-picker-popover-width: 280px;\n --f7-picker-landscape-height: 200px;\n --f7-picker-item-height: 36px;\n /*\n --f7-picker-sheet-bg-color: var(--f7-sheet-bg-color);\n */\n}\n.ios {\n --f7-picker-column-font-size: 20px;\n --f7-picker-item-selected-text-color: #000;\n --f7-picker-item-selected-bg-color: rgba(0, 0, 0, 0.12);\n --f7-picker-divider-text-color: #000;\n --f7-picker-item-text-color: rgba(0, 0, 0, 0.45);\n}\n.ios .dark,\n.ios.dark {\n --f7-picker-item-selected-text-color: #fff;\n --f7-picker-item-selected-bg-color: rgba(255, 255, 255, 0.1);\n --f7-picker-divider-text-color: #fff;\n --f7-picker-item-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-picker-column-font-size: 20px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-picker-item-selected-text-color: var(--f7-md-on-surface);\n --f7-picker-item-text-color: var(--f7-md-on-surface-variant);\n --f7-picker-divider-text-color: var(--f7-md-on-surface);\n --f7-picker-item-selected-border-color: var(--f7-md-outline);\n}\n.picker {\n width: 100%;\n height: var(--f7-picker-height);\n}\n.picker.picker-inline {\n height: var(--f7-picker-inline-height);\n}\n.popover .picker {\n height: var(--f7-picker-popover-height);\n}\n@media (orientation: landscape) and (max-height: 415px) {\n .picker:not(.picker-inline) {\n height: var(--f7-picker-landscape-height);\n }\n}\n.picker.sheet-modal {\n background: var(--f7-picker-sheet-bg-color, var(--f7-sheet-bg-color));\n}\n.picker-popover {\n width: var(--f7-picker-popover-width);\n}\n.picker-popover .toolbar {\n background: none;\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n}\n.picker-popover .toolbar:before {\n display: none !important;\n}\n.picker-popover .toolbar + .picker-columns {\n height: calc(100% - var(--f7-toolbar-height));\n}\n.picker-columns {\n display: flex;\n overflow: hidden;\n justify-content: center;\n padding: 0;\n text-align: right;\n height: 100%;\n position: relative;\n font-size: var(--f7-picker-column-font-size);\n --f7-picker-mask-bg-color: transparent;\n}\n.popover .picker-columns {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.picker-columns::before,\n.picker-columns::after {\n content: '';\n position: absolute;\n left: 0;\n width: 100%;\n height: 20%;\n z-index: 100;\n pointer-events: none;\n}\n.page .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-page-bg-color);\n}\n.block-strong .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-block-strong-bg-color);\n}\n.picker-sheet .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-picker-sheet-bg-color, var(--f7-sheet-bg-color));\n}\n.picker-popover .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-popover-bg-color);\n}\n.picker-columns::before {\n top: 0;\n background-image: linear-gradient(to bottom, var(--f7-picker-mask-bg-color), transparent);\n}\n.picker-columns::after {\n bottom: 0;\n background-image: linear-gradient(to top, var(--f7-picker-mask-bg-color), transparent);\n}\n.picker-column {\n position: relative;\n max-height: 100%;\n z-index: 10;\n}\n.picker-column.picker-column-first.picker-column-last {\n width: 100%;\n}\n.picker-column.picker-column-left {\n text-align: left;\n}\n.picker-column.picker-column-center {\n text-align: center;\n}\n.picker-column.picker-column-right {\n text-align: right;\n}\n.picker-column.picker-column-divider {\n display: flex;\n align-items: center;\n color: var(--f7-picker-divider-text-color);\n}\n.picker-items {\n overflow: auto;\n scroll-snap-type: y mandatory;\n height: 100%;\n box-sizing: border-box;\n padding: var(--f7-picker-scroll-padding, 0px) 0px;\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.picker-items::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.picker-items::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.picker-items::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.picker-item {\n height: var(--f7-picker-item-height);\n line-height: var(--f7-picker-item-height);\n white-space: nowrap;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n left: 0;\n top: 0;\n width: 100%;\n box-sizing: border-box;\n color: var(--f7-picker-item-text-color);\n cursor: pointer;\n scroll-snap-align: center;\n}\n.picker-item span {\n padding: 0 10px;\n}\n.picker-item.picker-item-far {\n pointer-events: none;\n}\n.picker-item.picker-item-selected {\n color: var(--f7-picker-item-selected-text-color);\n transform: translate3d(0, 0, 0) rotateX(0deg);\n}\n.picker-column-free-mode .picker-item {\n scroll-snap-align: none;\n}\n.picker-center-highlight {\n height: var(--f7-picker-item-height);\n box-sizing: border-box;\n position: absolute;\n top: 50%;\n margin-top: calc(-1 * var(--f7-picker-item-height) / 2);\n pointer-events: none;\n}\n.picker-3d .picker-columns {\n overflow: hidden;\n}\n.picker-3d .picker-column,\n.picker-3d .picker-items,\n.picker-3d .picker-item {\n transform-style: preserve-3d;\n}\n.picker-3d .picker-column {\n overflow: visible;\n}\n.picker-3d .picker-item {\n perspective: 1200px;\n overflow: visible;\n}\n.picker-3d .picker-item > span {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n display: block;\n transform-style: preserve-3d;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n box-sizing: border-box;\n max-width: 100%;\n transform-origin: center center -100px;\n}\n.ios .picker-center-highlight {\n left: 16px;\n right: 16px;\n background-color: var(--f7-picker-item-selected-bg-color);\n border-radius: 8px;\n}\n.popover .ios .picker-center-highlight {\n left: 8px;\n right: 8px;\n}\n.md .picker-center-highlight {\n left: 0;\n right: 0;\n border-top: 1px solid var(--f7-md-outline);\n border-bottom: 1px solid var(--f7-md-outline);\n}\n/* === Infinite === */\n.infinite-scroll-preloader {\n margin-left: auto;\n margin-right: auto;\n text-align: center;\n}\n.infinite-scroll-preloader.preloader {\n display: block;\n}\n.ios .infinite-scroll-preloader {\n margin-top: 35px;\n margin-bottom: 35px;\n}\n.ios .infinite-scroll-preloader .preloader,\n.ios .infinite-scroll-preloader.preloader {\n width: 27px;\n height: 27px;\n}\n.md .infinite-scroll-preloader {\n margin-top: 32px;\n margin-bottom: 32px;\n}\n/* === PTR === */\n.ios {\n --f7-ptr-preloader-size: 28px;\n --f7-ptr-size: 44px;\n}\n.md {\n --f7-ptr-preloader-size: 22px;\n --f7-ptr-size: 40px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-ptr-preloader-bg-color: var(--f7-md-surface-1);\n --f7-ptr-preloader-color: var(--f7-md-primary);\n}\n.ptr-preloader {\n position: relative;\n top: var(--f7-ptr-top, 0);\n height: var(--f7-ptr-size);\n pointer-events: none;\n}\n.ptr-preloader .preloader {\n position: absolute;\n left: 50%;\n width: var(--f7-ptr-preloader-size);\n height: var(--f7-ptr-preloader-size);\n margin-left: calc(-1 * var(--f7-ptr-preloader-size) / 2);\n margin-top: calc(-1 * var(--f7-ptr-preloader-size) / 2);\n top: 50%;\n visibility: hidden;\n}\n.ptr-bottom .ptr-preloader {\n top: auto;\n bottom: 0;\n position: fixed;\n}\n.ptr-with-navbar-large-transparent .ptr-preloader,\n.ptr-with-navbar-transparent .ptr-preloader {\n top: calc(-1 * var(--f7-page-navbar-offset, 0px) + var(--f7-safe-area-top));\n}\n.ios .ptr-preloader {\n margin-bottom: calc(-1 * var(--f7-ptr-size));\n width: 100%;\n left: 0;\n top: 0;\n position: relative;\n}\n.ios .ptr-preloader .preloader {\n visibility: visible;\n}\n.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,\n.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner {\n animation: none;\n}\n.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up):not(.ptr-pull-down) .ptr-preloader .preloader-inner-line,\n.ios .ptr-content.ptr-closing .ptr-preloader .preloader-inner-line {\n opacity: 0 !important;\n}\n.ios .ptr-transitioning > *,\n.ios .ptr-refreshing > * {\n transition-duration: 200ms;\n transition-property: transform;\n}\n.ios .ptr-transitioning .ptr-preloader .preloader-inner-line {\n transition-duration: 200ms;\n}\n.ios .ptr-pull-up .ptr-preloader .preloader {\n animation: ios-ptr-preloader-spin 1s ease-out forwards;\n}\n.ios .ptr-refreshing:not(.ptr-bottom) {\n transform: none;\n}\n.ios .ptr-refreshing:not(.ptr-bottom) > * {\n transform: translate3d(0, var(--f7-ptr-size), 0);\n}\n.ios .ptr-refreshing:not(.ptr-bottom) > .ptr-preloader {\n transform: translate3d(0, 0, 0);\n}\n.ios .ptr-bottom .ptr-preloader {\n margin-bottom: 0;\n margin-top: calc(-1 * var(--f7-ptr-size));\n position: relative;\n}\n.ios .ptr-bottom.ptr-transitioning > *,\n.ios .ptr-bottom.ptr-refreshing > * {\n transition-duration: 300ms;\n transition-property: transform;\n}\n.ios .ptr-bottom.ptr-refreshing {\n transform: none;\n}\n.ios .ptr-bottom.ptr-refreshing > * {\n transform: translate3d(0, calc(-1 * var(--f7-ptr-size)), 0);\n}\n.ios .ptr-bottom.ptr-refreshing > .ptr-preloader {\n transform: translate3d(0, 0, 0);\n}\n@keyframes ios-ptr-preloader-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(135deg);\n }\n}\n.md {\n --f7-ptr-top: -4px;\n}\n.md .ptr-preloader {\n width: var(--f7-ptr-size);\n border-radius: 50%;\n background: var(--f7-ptr-preloader-bg-color);\n --f7-preloader-color: var(--f7-ptr-preloader-color);\n margin-top: calc(-1 * var(--f7-ptr-size));\n z-index: 100;\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\n right: 50%;\n margin-right: calc(-1 * var(--f7-ptr-size) / 2);\n}\n.md .ptr-preloader .preloader circle {\n stroke-width: 4;\n}\n.md .ptr-arrow {\n width: 22px;\n height: 22px;\n box-sizing: border-box;\n border: 3px solid var(--f7-preloader-color);\n position: absolute;\n left: 50%;\n top: 50%;\n margin-left: -11px;\n margin-top: -11px;\n border-left-color: transparent;\n border-radius: 50%;\n opacity: 1;\n transform: rotate(150deg);\n}\n.md .ptr-arrow:after {\n content: '';\n width: 0px;\n height: 0px;\n position: absolute;\n left: -5px;\n bottom: 0px;\n border-bottom-width: 6px;\n border-bottom-style: solid;\n border-bottom-color: inherit;\n border-left: 5px solid transparent;\n border-right: 5px solid transparent;\n transform: rotate(-40deg);\n}\n.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,\n.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner,\n.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader circle {\n animation: none;\n}\n.md .ptr-refreshing .ptr-preloader .preloader,\n.md .ptr-pull-up .ptr-preloader .preloader {\n visibility: visible;\n}\n.md .ptr-refreshing .ptr-arrow,\n.md .ptr-pull-up .ptr-arrow {\n visibility: hidden;\n}\n.md .ptr-refreshing .ptr-preloader {\n transform: translate3d(0, 66px, 0);\n}\n.md .ptr-transitioning .ptr-arrow {\n transition: 300ms;\n}\n.md .ptr-pull-up .ptr-arrow {\n transition: 400ms;\n transform: rotate(620deg) !important;\n opacity: 0;\n}\n.md .ptr-transitioning .ptr-preloader,\n.md .ptr-refreshing .ptr-preloader {\n transition-duration: 300ms;\n transition-property: transform, opacity;\n}\n.md .ptr-bottom .ptr-preloader {\n margin-top: 0;\n margin-bottom: calc(-1 * var(--f7-ptr-size) - 4px);\n}\n.md .ptr-bottom.ptr-refreshing .ptr-preloader {\n transform: translate3d(0, -66px, 0);\n}\n.md .ptr-with-navbar-large-transparent .ptr-preloader,\n.md .ptr-with-navbar-transparent .ptr-preloader {\n opacity: 0;\n}\n.md .ptr-with-navbar-large-transparent.ptr-pull-down .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-pull-down .ptr-preloader,\n.md .ptr-with-navbar-large-transparent.ptr-pull-up .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-pull-up .ptr-preloader,\n.md .ptr-with-navbar-large-transparent.ptr-refreshing .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-refreshing .ptr-preloader {\n opacity: 1;\n}\n.md .ptr-with-navbar-large-transparent.ptr-closing .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-closing .ptr-preloader {\n opacity: 0;\n transition-duration: 300ms;\n}\n/* === Data Table === */\n:root {\n --f7-table-head-font-size: 12px;\n --f7-table-body-font-size: 14px;\n --f7-table-footer-font-size: 12px;\n --f7-table-input-height: 24px;\n --f7-table-input-font-size: 14px;\n --f7-table-collapsible-cell-padding: 16px;\n --f7-table-link-icon-only-icon-size: 20px;\n --f7-table-head-bg-color: transparent;\n --f7-table-card-header-bg-color: transparent;\n --f7-table-card-header-height: 64px;\n --f7-table-cell-padding-vertical: 0px;\n --f7-table-sortable-icon-color: #000;\n}\n:root .dark,\n:root.dark {\n --f7-table-sortable-icon-color: #fff;\n --f7-table-input-text-color: #fff;\n}\n.ios {\n --f7-table-head-font-weight: 600;\n --f7-table-head-cell-height: 44px;\n --f7-table-head-icon-size: 18px;\n --f7-table-body-cell-height: 44px;\n --f7-table-cell-padding-horizontal: 16px;\n --f7-table-edge-cell-padding-horizontal: 16px;\n --f7-table-label-cell-padding-horizontal: 16px;\n --f7-table-checkbox-cell-width: 22px;\n /* --f7-table-actions-cell-link-color: var(--f7-theme-color); */\n /* --f7-table-actions-link-color: var(--f7-theme-color); */\n --f7-table-title-font-size: 17px;\n --f7-table-title-font-weight: 600;\n --f7-table-footer-height: 44px;\n --f7-table-head-text-color: rgba(0, 0, 0, 0.45);\n --f7-table-cell-border-color: rgba(0, 0, 0, 0.22);\n --f7-table-selected-row-bg-color: rgba(0, 0, 0, 0.03);\n --f7-table-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-table-input-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-table-head-text-color: rgba(255, 255, 255, 0.55);\n --f7-table-cell-border-color: rgba(255, 255, 255, 0.15);\n --f7-table-footer-text-color: rgba(255, 255, 255, 0.55);\n --f7-table-selected-row-bg-color: rgba(255, 255, 255, 0.08);\n}\n.md {\n --f7-table-head-font-weight: 500;\n --f7-table-head-cell-height: 56px;\n --f7-table-head-icon-size: 16px;\n --f7-table-body-cell-height: 48px;\n --f7-table-cell-padding-horizontal: 28px;\n --f7-table-edge-cell-padding-horizontal: 24px;\n --f7-table-label-cell-padding-horizontal: 24px;\n --f7-table-checkbox-cell-width: 18px;\n --f7-table-title-font-size: 20px;\n --f7-table-title-font-weight: 400;\n --f7-table-footer-height: 56px;\n --f7-table-actions-cell-link-color: rgba(0, 0, 0, 0.54);\n --f7-table-actions-link-color: rgba(0, 0, 0, 0.54);\n --f7-table-input-text-color: #212121;\n}\n.md .dark,\n.md.dark {\n --f7-table-actions-cell-link-color: rgba(255, 255, 255, 0.54);\n --f7-table-actions-link-color: rgba(255, 255, 255, 0.54);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-table-head-text-color: var(--f7-md-on-surface-variant);\n --f7-table-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-table-selected-row-bg-color: var(--f7-md-secondary-container);\n --f7-table-cell-border-color: var(--f7-md-outline);\n}\n.data-table {\n overflow-x: auto;\n}\n.data-table table,\ntable.data-table {\n width: 100%;\n border: none;\n padding: 0;\n margin: 0;\n border-collapse: collapse;\n text-align: right;\n}\n.data-table thead th,\n.data-table thead td {\n font-size: var(--f7-table-head-font-size);\n font-weight: var(--f7-table-head-font-weight);\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n line-height: 16px;\n height: var(--f7-table-head-cell-height);\n background-color: var(--f7-table-head-bg-color);\n}\n.data-table thead th:not(.sortable-cell-active),\n.data-table thead td:not(.sortable-cell-active) {\n color: var(--f7-table-head-text-color);\n}\n.data-table thead i.icon,\n.data-table thead i.f7-icons,\n.data-table thead i.material-icons {\n vertical-align: top;\n font-size: var(--f7-table-head-icon-size);\n}\n.data-table tbody {\n font-size: var(--f7-table-body-font-size);\n}\n.data-table tbody th,\n.data-table tbody td {\n height: var(--f7-table-body-cell-height);\n}\n.data-table tbody tr.data-table-row-selected,\n.device-desktop .data-table tbody tr:hover {\n background: var(--f7-table-selected-row-bg-color);\n}\n.data-table tbody td:before,\n.data-table tbody th:before {\n content: '';\n position: absolute;\n background-color: var(--f7-table-cell-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.data-table th,\n.data-table td {\n --f7-table-cell-padding-left: var(--f7-table-cell-padding-horizontal);\n --f7-table-cell-padding-right: var(--f7-table-cell-padding-horizontal);\n padding-top: var(--f7-table-cell-padding-vertical);\n padding-bottom: var(--f7-table-cell-padding-vertical);\n padding-left: var(--f7-table-cell-padding-left);\n padding-right: var(--f7-table-cell-padding-right);\n position: relative;\n box-sizing: border-box;\n}\n.data-table th:first-child,\n.data-table td:first-child {\n --f7-table-cell-padding-right: var(--f7-table-edge-cell-padding-horizontal);\n}\n.data-table th:last-child,\n.data-table td:last-child {\n --f7-table-cell-padding-left: var(--f7-table-edge-cell-padding-horizontal);\n}\n.data-table th.label-cell,\n.data-table td.label-cell {\n --f7-table-cell-padding-left: var(--f7-table-label-cell-padding-horizontal);\n --f7-table-cell-padding-right: var(--f7-table-label-cell-padding-horizontal);\n}\n.data-table th.numeric-cell,\n.data-table td.numeric-cell {\n text-align: left;\n}\n.data-table th.checkbox-cell,\n.data-table td.checkbox-cell {\n overflow: visible;\n width: var(--f7-table-checkbox-cell-width);\n}\n.data-table th.checkbox-cell label + span,\n.data-table td.checkbox-cell label + span {\n margin-right: 8px;\n}\n.data-table th.checkbox-cell:first-child,\n.data-table td.checkbox-cell:first-child {\n padding-left: calc(var(--f7-table-cell-padding-left) / 2);\n}\n.data-table th.checkbox-cell:first-child + td,\n.data-table td.checkbox-cell:first-child + td,\n.data-table th.checkbox-cell:first-child + th,\n.data-table td.checkbox-cell:first-child + th {\n padding-right: calc(var(--f7-table-cell-padding-right) / 2);\n}\n.data-table th.checkbox-cell:last-child,\n.data-table td.checkbox-cell:last-child {\n padding-right: calc(var(--f7-table-cell-padding-right) / 2);\n}\n.data-table th.actions-cell,\n.data-table td.actions-cell {\n text-align: left;\n white-space: nowrap;\n}\n.data-table th.actions-cell a.link,\n.data-table td.actions-cell a.link {\n color: var(--f7-table-actions-cell-link-color, var(--f7-theme-color));\n}\n.data-table th a.icon-only,\n.data-table td a.icon-only,\n.card .data-table th a.icon-only,\n.card .data-table td a.icon-only,\n.card.data-table th a.icon-only,\n.card.data-table td a.icon-only {\n display: inline-block;\n vertical-align: middle;\n text-align: center;\n font-size: 0;\n min-width: 0;\n}\n.data-table th a.icon-only i,\n.data-table td a.icon-only i,\n.card .data-table th a.icon-only i,\n.card .data-table td a.icon-only i,\n.card.data-table th a.icon-only i,\n.card.data-table td a.icon-only i {\n font-size: var(--f7-table-link-icon-only-icon-size);\n vertical-align: middle;\n}\n.data-table .sortable-cell:not(.input-cell) {\n cursor: pointer;\n position: relative;\n}\n.data-table .sortable-cell.input-cell .table-head-label {\n cursor: pointer;\n position: relative;\n}\n.data-table .sortable-cell:not(.numeric-cell):not(.input-cell):after,\n.data-table .sortable-cell.numeric-cell:not(.input-cell):before,\n.data-table .sortable-cell:not(.numeric-cell).input-cell > .table-head-label:after,\n.data-table .sortable-cell.numeric-cell.input-cell > .table-head-label:before {\n content: 'arrow_bottom_md';\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n display: inline-block;\n vertical-align: top;\n width: 16px;\n height: 16px;\n color: var(--f7-table-sortable-icon-color);\n font-size: 13px;\n line-height: 16px;\n transition-duration: 300ms;\n transform: rotate(0);\n opacity: 0;\n}\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:after,\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:after,\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:before,\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:before {\n opacity: 0.54;\n}\n.data-table .sortable-cell.sortable-cell-active:after,\n.data-table .sortable-cell.sortable-cell-active .table-head-label:after,\n.data-table .sortable-cell.sortable-cell-active:before,\n.data-table .sortable-cell.sortable-cell-active .table-head-label:before {\n opacity: 0.87 !important;\n}\n.data-table .sortable-cell.sortable-desc:after,\n.data-table .sortable-cell.sortable-desc:after,\n.data-table .table-head-label:after,\n.data-table .sortable-cell.sortable-desc:before,\n.data-table .sortable-cell.sortable-desc:before,\n.data-table .table-head-label:before {\n transform: rotate(180deg) !important;\n}\n.data-table.card .card-header,\n.card .data-table .card-header,\n.data-table.card .card-footer,\n.card .data-table .card-footer {\n padding-left: var(--f7-table-edge-cell-padding-horizontal);\n padding-right: var(--f7-table-edge-cell-padding-horizontal);\n}\n.data-table.card .card-header,\n.card .data-table .card-header {\n min-height: var(--f7-table-card-header-height);\n background-color: var(--f7-table-card-header-bg-color);\n}\n.data-table.card .card-content,\n.card .data-table .card-content {\n overflow-x: auto;\n}\n.data-table.card .card-footer,\n.card .data-table .card-footer {\n min-height: var(--f7-table-footer-height);\n}\n.data-table .data-table-title {\n font-size: var(--f7-table-title-font-size);\n font-weight: var(--f7-table-title-font-weight);\n}\n.data-table .data-table-links,\n.data-table .data-table-actions {\n display: flex;\n}\n.data-table .data-table-links .button {\n min-width: 64px;\n}\n.data-table .data-table-actions {\n margin-right: auto;\n align-items: center;\n}\n.data-table .data-table-actions a.link {\n color: var(--f7-table-actions-link-color, var(--f7-theme-color));\n min-width: 0;\n}\n.data-table .data-table-actions a.link.icon-only {\n line-height: 1;\n justify-content: center;\n padding: 0;\n}\n.data-table .data-table-header,\n.data-table .data-table-header-selected {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n}\n.data-table .card-header > .data-table-header,\n.data-table .card-header > .data-table-header-selected {\n padding-top: var(--f7-card-header-padding-vertical);\n padding-bottom: var(--f7-card-header-padding-vertical);\n height: 100%;\n margin-top: calc(-1 * var(--f7-card-header-padding-vertical));\n margin-bottom: calc(-1 * var(--f7-card-header-padding-vertical));\n min-height: var(--f7-table-card-header-height);\n padding-right: var(--f7-table-edge-cell-padding-horizontal);\n padding-left: var(--f7-table-edge-cell-padding-horizontal);\n margin-right: calc(-1 * var(--f7-table-edge-cell-padding-horizontal));\n margin-left: calc(-1 * var(--f7-table-edge-cell-padding-horizontal));\n}\n.data-table .data-table-header-selected {\n background: rgba(var(--f7-theme-color-rgb), 0.1);\n display: none;\n}\n.data-table.data-table-has-checked .data-table-header {\n display: none;\n}\n.data-table.data-table-has-checked .data-table-header-selected {\n display: flex;\n}\n.data-table .data-table-title-selected {\n font-size: 14px;\n color: var(--f7-theme-color);\n}\n.data-table .data-table-footer {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n position: relative;\n font-size: var(--f7-table-footer-font-size);\n overflow: hidden;\n min-height: var(--f7-table-footer-height);\n color: var(--f7-table-footer-text-color);\n justify-content: flex-start;\n}\n.data-table .data-table-footer:before {\n content: '';\n position: absolute;\n background-color: var(--f7-table-cell-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.data-table .data-table-rows-select,\n.data-table .data-table-pagination {\n display: flex;\n align-items: center;\n}\n.data-table .input-cell {\n padding-top: 8px;\n padding-bottom: 8px;\n height: auto;\n vertical-align: top;\n}\n.data-table .input-cell .table-head-label + .input {\n margin-top: 4px;\n}\n.data-table .input-cell .input {\n height: var(--f7-table-input-height);\n}\n.data-table .input-cell .input input,\n.data-table .input-cell .input textarea,\n.data-table .input-cell .input select {\n height: var(--f7-table-input-height);\n color: var(--f7-table-input-text-color);\n font-size: var(--f7-table-input-font-size);\n}\n@media (max-width: 480px) and (orientation: portrait) {\n .data-table.data-table-collapsible thead {\n display: none;\n }\n .data-table.data-table-collapsible tbody,\n .data-table.data-table-collapsible tr,\n .data-table.data-table-collapsible td {\n display: block;\n }\n .data-table.data-table-collapsible tr {\n position: relative;\n }\n .data-table.data-table-collapsible tr:before {\n content: '';\n position: absolute;\n background-color: var(--f7-table-cell-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n .data-table.data-table-collapsible tr:hover {\n background-color: inherit;\n }\n .data-table.data-table-collapsible td {\n --f7-table-cell-padding-left: var(--f7-table-collapsible-cell-padding);\n --f7-table-cell-padding-right: var(--f7-table-collapsible-cell-padding);\n height: auto;\n min-height: var(--f7-table-body-cell-height);\n display: flex;\n align-content: center;\n align-items: center;\n justify-content: flex-start;\n text-align: right;\n }\n .data-table.data-table-collapsible td:before {\n display: none !important;\n }\n .data-table.data-table-collapsible td:not(.checkbox-cell):before {\n width: 40%;\n display: block !important;\n content: attr(data-collapsible-title);\n position: relative;\n height: auto;\n background: none !important;\n transform: none !important;\n font-size: var(--f7-table-head-font-size);\n font-weight: var(--f7-table-head-font-weight);\n color: var(--f7-table-head-text-color);\n margin-left: 16px;\n flex-shrink: 0;\n }\n .data-table.data-table-collapsible td.checkbox-cell {\n position: absolute;\n top: 0;\n right: 0;\n }\n .data-table.data-table-collapsible td.checkbox-cell + td {\n padding-right: 16px;\n }\n .data-table.data-table-collapsible td.checkbox-cell ~ td {\n margin-right: 32px;\n }\n}\n.data-table .xsmall-only,\n.data-table .xsmall-landscape-only {\n display: none;\n}\n@media (min-width: 480px) {\n .data-table .xsmall-only {\n display: table-cell;\n }\n}\n@media (min-width: 480px) and (orientation: landscape) {\n .data-table .xsmall-landscape-only {\n display: table-cell;\n }\n}\n.data-table .small-only,\n.data-table .small-landscape-only {\n display: none;\n}\n@media (min-width: 568px) {\n .data-table .small-only {\n display: table-cell;\n }\n}\n@media (min-width: 568px) and (orientation: landscape) {\n .data-table .small-landscape-only {\n display: table-cell;\n }\n}\n.data-table .medium-only,\n.data-table .medium-landscape-only {\n display: none;\n}\n@media (min-width: 768px) {\n .data-table .medium-only {\n display: table-cell;\n }\n}\n@media (min-width: 768px) and (orientation: landscape) {\n .data-table .medium-landscape-only {\n display: table-cell;\n }\n}\n.data-table .large-only,\n.data-table .large-landscape-only {\n display: none;\n}\n@media (min-width: 1024px) {\n .data-table .large-only {\n display: table-cell;\n }\n}\n@media (min-width: 1024px) and (orientation: landscape) {\n .data-table .large-landscape-only {\n display: table-cell;\n }\n}\n.data-table .xlarge-only,\n.data-table .xlarge-landscape-only {\n display: none;\n}\n@media (min-width: 1200px) {\n .data-table .xlarge-only {\n display: table-cell;\n }\n}\n@media (min-width: 1200px) and (orientation: landscape) {\n .data-table .xlarge-landscape-only {\n display: table-cell;\n }\n}\n.ios .data-table th.actions-cell a.link + a.link,\n.ios .data-table td.actions-cell a.link + a.link {\n margin-right: 16px;\n}\n.ios .sortable-cell:not(.numeric-cell):after {\n margin-right: 5px;\n}\n.ios .sortable-cell.numeric-cell:before {\n margin-left: 5px;\n}\n.ios .data-table-links a.link + a.link,\n.ios .data-table-actions a.link + a.link,\n.ios .data-table-links .button + .button,\n.ios .data-table-actions .button + .button {\n margin-right: 16px;\n}\n.ios .data-table-actions a.link.icon-only {\n width: 44px;\n height: 44px;\n}\n.ios .data-table-rows-select a.link,\n.ios .data-table-pagination a.link {\n width: 44px;\n height: 44px;\n}\n.ios .data-table-rows-select + .data-table-pagination {\n margin-right: 30px;\n}\n.ios .data-table-rows-select .input {\n margin-right: 20px;\n}\n.ios .data-table-pagination-label {\n margin-left: 16px;\n}\n.md .data-table th.actions-cell a.link + a.link,\n.md .data-table td.actions-cell a.link + a.link {\n margin-right: 24px;\n}\n.md .data-table th.actions-cell a.icon-only,\n.md .data-table td.actions-cell a.icon-only {\n width: 24px;\n height: 24px;\n line-height: 24px;\n}\n.md .sortable-cell:not(.numeric-cell):after {\n margin-right: 8px;\n}\n.md .sortable-cell.numeric-cell:before {\n margin-left: 8px;\n}\n.md .data-table-links a.link + a.link,\n.md .data-table-actions a.link + a.link,\n.md .data-table-links .button + .button,\n.md .data-table-actions .button + .button {\n margin-right: 24px;\n}\n.md .data-table-actions a.link.icon-only {\n width: 24px;\n height: 24px;\n overflow: visible;\n}\n.md .data-table-actions a.link.icon-only.active-state {\n background: none;\n}\n.md .data-table-rows-select a.link,\n.md .data-table-pagination a.link {\n width: 48px;\n height: 48px;\n}\n.md .data-table-rows-select + .data-table-pagination {\n margin-right: 32px;\n}\n.md .data-table-rows-select .input {\n margin-right: 24px;\n}\n.md .data-table-pagination-label {\n margin-left: 20px;\n}\n.md .input-cell .input-clear-button {\n transform: scale(0.8);\n}\n/* === FAB === */\n:root {\n --f7-fab-margin: 16px;\n --f7-fab-extended-text-font-size: 14px;\n --f7-fab-label-padding: 4px 12px;\n --f7-fab-label-font-size: inherit;\n --f7-fab-button-size: 40px;\n}\n.ios {\n /* --f7-fab-pressed-bg-color: var(--f7-theme-color-shade); */\n /* --f7-fab-bg-color: var(--f7-theme-color)); */\n --f7-fab-text-color: #fff;\n --f7-fab-border-radius: 50px;\n --f7-fab-size: 50px;\n --f7-fab-box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.4);\n --f7-fab-extended-text-transform: uppercase;\n --f7-fab-extended-size: 50px;\n --f7-fab-extended-text-padding: 0 20px;\n --f7-fab-extended-text-font-weight: 600;\n --f7-fab-extended-text-letter-spacing: 0;\n --f7-fab-label-border-radius: 4px;\n --f7-fab-label-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.4);\n --f7-fab-label-text-color: #333;\n --f7-fab-label-bg-color: #fff;\n}\n.md {\n /*\n --f7-fab-pressed-bg-color: var(--f7-fab-bg-color, var(--f7-theme-color));\n */\n --f7-fab-border-radius: 16px;\n --f7-fab-size: 56px;\n --f7-fab-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.25);\n --f7-fab-extended-size: 56px;\n --f7-fab-extended-text-padding: 0 16px;\n --f7-fab-extended-text-font-weight: 500;\n --f7-fab-extended-text-letter-spacing: 0;\n --f7-fab-extended-text-transform: none;\n --f7-fab-label-border-radius: 8px;\n --f7-fab-label-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.25);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-fab-bg-color: var(--f7-md-primary-container);\n --f7-fab-text-color: var(--f7-md-on-primary-container);\n --f7-fab-label-text-color: var(--f7-md-on-surface);\n --f7-fab-label-bg-color: var(--f7-md-surface-5);\n}\n.fab-backdrop {\n z-index: 1400;\n}\n.fab {\n position: absolute;\n z-index: 1500;\n}\n.fab a {\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.fab-left-top,\n.fab-left-center,\n.fab-left-bottom {\n left: calc(var(--f7-fab-margin) + var(--f7-safe-area-left));\n}\n.fab-right-top,\n.fab-right-center,\n.fab-right-bottom {\n right: calc(var(--f7-fab-margin) + var(--f7-safe-area-right));\n}\n.fab-left-top,\n.fab-center-top,\n.fab-right-top {\n top: var(--f7-fab-margin);\n}\n.fab-left-bottom,\n.fab-center-bottom,\n.fab-right-bottom {\n bottom: calc(var(--f7-fab-margin) + var(--f7-safe-area-bottom));\n}\n.fab-center-top,\n.fab-center-center,\n.fab-center-bottom {\n left: 50%;\n transform: translateX(-50%);\n}\n.fab-left-center,\n.fab-center-center,\n.fab-right-center {\n top: 50%;\n transform: translateY(-50%);\n}\n.fab-center-center {\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n}\n.fab > a,\n.fab-buttons a {\n background-color: var(--f7-fab-bg-color, var(--f7-theme-color));\n width: var(--f7-fab-size);\n height: var(--f7-fab-size);\n box-shadow: var(--f7-fab-box-shadow);\n border-radius: var(--f7-fab-border-radius);\n position: relative;\n transition-duration: 300ms;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n z-index: 1;\n color: var(--f7-fab-text-color);\n}\n.fab > a i {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate3d(-50%, -50%, 0) rotate(0deg) scale(1);\n transition: 300ms;\n}\n.fab > a i + i {\n transform: translate3d(-50%, -50%, 0) rotate(-90deg) scale(0.5);\n opacity: 0;\n}\n.fab-buttons a {\n border-radius: var(--f7-fab-border-radius);\n width: var(--f7-fab-button-size);\n height: var(--f7-fab-button-size);\n}\n.fab-buttons {\n display: flex;\n visibility: hidden;\n pointer-events: none;\n position: absolute;\n}\n.fab-buttons a {\n opacity: 0;\n}\n.fab-opened:not(.fab-morph) > a i {\n transform: translate3d(-50%, -50%, 0) rotate(90deg) scale(0.5);\n opacity: 0;\n}\n.fab-opened:not(.fab-morph) > a i + i {\n transform: translate3d(-50%, -50%, 0) rotate(0deg) scale(1);\n opacity: 1;\n}\n.fab-opened .fab-buttons {\n visibility: visible;\n pointer-events: auto;\n}\n.fab-opened .fab-buttons a {\n opacity: 1;\n transform: translate3d(0, 0px, 0) scale(1) !important;\n}\n.fab-opened .fab-buttons a:nth-child(2) {\n transition-delay: 50ms;\n}\n.fab-opened .fab-buttons a:nth-child(3) {\n transition-delay: 100ms;\n}\n.fab-opened .fab-buttons a:nth-child(4) {\n transition-delay: 150ms;\n}\n.fab-opened .fab-buttons a:nth-child(5) {\n transition-delay: 200ms;\n}\n.fab-opened .fab-buttons a:nth-child(6) {\n transition-delay: 250ms;\n}\n.fab-buttons-top,\n.fab-buttons-bottom {\n left: 50%;\n width: var(--f7-fab-button-size);\n margin-left: calc(-1 * var(--f7-fab-button-size) / 2);\n}\n.fab-buttons-top {\n bottom: 100%;\n margin-bottom: 16px;\n flex-direction: column-reverse;\n}\n.fab-buttons-top a {\n transform: translate3d(0, 8px, 0) scale(0.3);\n transform-origin: center bottom;\n}\n.fab-buttons-top a + a {\n margin-bottom: 16px;\n}\n.fab-buttons-bottom {\n top: 100%;\n margin-top: 16px;\n flex-direction: column;\n}\n.fab-buttons-bottom a {\n transform: translate3d(0, -8px, 0) scale(0.3);\n transform-origin: center top;\n}\n.fab-buttons-bottom a + a {\n margin-top: 16px;\n}\n.fab-buttons-left,\n.fab-buttons-right {\n top: 50%;\n height: var(--f7-fab-button-size);\n margin-top: calc(-1 * var(--f7-fab-button-size) / 2);\n}\n.fab-buttons-left {\n right: 100%;\n margin-right: 16px;\n}\n.fab-buttons-left a {\n transform: translate3d(8px, 0px, 0) scale(0.3);\n transform-origin: right center;\n}\n.fab-buttons-left a + a {\n margin-right: 16px;\n}\n.fab-buttons-right {\n left: 100%;\n margin-left: 16px;\n flex-direction: row-reverse;\n}\n.fab-buttons-right a {\n transform: translate3d(-8px, 0, 0) scale(0.3);\n transform-origin: left center;\n}\n.fab-buttons-right a + a {\n margin-left: 16px;\n}\n.fab-buttons-center {\n left: 0%;\n top: 0%;\n width: 100%;\n height: 100%;\n}\n.fab-buttons-center a {\n position: absolute;\n}\n.fab-buttons-center a:nth-child(1) {\n left: 50%;\n margin-left: calc(-1 * var(--f7-fab-button-size) / 2);\n bottom: 100%;\n margin-bottom: 16px;\n transform: translateY(-8px) scale(0.3);\n transform-origin: center bottom;\n}\n.fab-buttons-center a:nth-child(2) {\n left: 100%;\n margin-top: calc(-1 * var(--f7-fab-button-size) / 2);\n top: 50%;\n margin-left: 16px;\n transform: translateX(-8px) scale(0.3);\n transform-origin: left center;\n}\n.fab-buttons-center a:nth-child(3) {\n left: 50%;\n margin-left: calc(-1 * var(--f7-fab-button-size) / 2);\n top: 100%;\n margin-top: 16px;\n transform: translateY(8px) scale(0.3);\n transform-origin: center top;\n}\n.fab-buttons-center a:nth-child(4) {\n right: 100%;\n margin-top: calc(-1 * var(--f7-fab-button-size) / 2);\n top: 50%;\n margin-right: 16px;\n transform: translateX(8px) scale(0.3);\n transform-origin: right center;\n}\n.fab-morph {\n border-radius: var(--f7-fab-border-radius);\n background: var(--f7-fab-bg-color, var(--f7-theme-color));\n box-shadow: var(--f7-fab-box-shadow);\n}\n.fab-morph > a {\n box-shadow: none;\n background: none !important;\n}\n.fab-opened.fab-morph > a i {\n opacity: 0;\n}\n.fab-morph,\n.fab-morph > a,\n.fab-morph-target {\n transition-duration: 250ms;\n}\n.fab-morph-target:not(.fab-morph-target-visible) {\n display: none;\n}\n.fab-extended {\n width: auto;\n min-width: var(--f7-fab-extended-size);\n}\n.fab-extended > a {\n width: 100%;\n height: var(--f7-fab-extended-size);\n}\n.fab-extended > a i {\n left: calc(var(--f7-fab-extended-size) / 2);\n}\n.fab-extended i ~ .fab-text {\n padding-left: var(--f7-fab-extended-size);\n}\n.fab-extended > a {\n width: 100% !important;\n}\n.fab-text {\n box-sizing: border-box;\n font-size: var(--f7-fab-extended-text-font-size);\n padding: var(--f7-fab-extended-text-padding);\n font-weight: var(--f7-fab-extended-text-font-weight);\n letter-spacing: var(--f7-fab-extended-text-letter-spacing);\n text-transform: var(--f7-fab-extended-text-transform);\n}\n.fab-label-button {\n overflow: visible !important;\n}\n.fab-label {\n position: absolute;\n top: 50%;\n padding: var(--f7-fab-label-padding);\n border-radius: var(--f7-fab-label-border-radius);\n background: var(--f7-fab-label-bg-color);\n color: var(--f7-fab-label-text-color);\n box-shadow: var(--f7-fab-label-box-shadow);\n white-space: nowrap;\n transform: translateY(-50%);\n pointer-events: none;\n font-size: var(--f7-fab-label-font-size);\n}\n.fab-right-top .fab-label,\n.fab-right-center .fab-label,\n.fab-right-bottom .fab-label {\n right: 100%;\n margin-right: 8px;\n}\n.fab-left-top .fab-label,\n.fab-left-center .fab-label,\n.fab-left-bottom .fab-label {\n left: 100%;\n margin-left: 8px;\n}\n.navbar ~ * .fab-left-top,\n.navbar ~ * .fab-center-top,\n.navbar ~ * .fab-right-top,\n.navbar ~ .fab-left-top,\n.navbar ~ .fab-center-top,\n.navbar ~ .fab-right-top,\n.navbars ~ * .fab-left-top,\n.navbars ~ * .fab-center-top,\n.navbars ~ * .fab-right-top,\n.navbars ~ .fab-left-top,\n.navbars ~ .fab-center-top,\n.navbars ~ .fab-right-top {\n margin-top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.toolbar-top ~ * .fab-left-top,\n.toolbar-top ~ * .fab-center-top,\n.toolbar-top ~ * .fab-right-top,\n.toolbar-top ~ .fab-left-top,\n.toolbar-top ~ .fab-center-top,\n.toolbar-top ~ .fab-right-top,\n.ios .toolbar-top-ios ~ * .fab-left-top,\n.ios .toolbar-top-ios ~ * .fab-center-top,\n.ios .toolbar-top-ios ~ * .fab-right-top,\n.ios .toolbar-top-ios ~ .fab-left-top,\n.ios .toolbar-top-ios ~ .fab-center-top,\n.ios .toolbar-top-ios ~ .fab-right-top,\n.md .toolbar-top-md ~ * .fab-left-top,\n.md .toolbar-top-md ~ * .fab-center-top,\n.md .toolbar-top-md ~ * .fab-right-top,\n.md .toolbar-top-md ~ .fab-left-top,\n.md .toolbar-top-md ~ .fab-center-top,\n.md .toolbar-top-md ~ .fab-right-top {\n margin-top: var(--f7-toolbar-height);\n}\n.toolbar-bottom ~ * .fab-left-bottom,\n.toolbar-bottom ~ * .fab-center-bottom,\n.toolbar-bottom ~ * .fab-right-bottom,\n.toolbar-bottom ~ .fab-left-bottom,\n.toolbar-bottom ~ .fab-center-bottom,\n.toolbar-bottom ~ .fab-right-bottom,\n.ios .toolbar-bottom-ios ~ * .fab-left-bottom,\n.ios .toolbar-bottom-ios ~ * .fab-center-bottom,\n.ios .toolbar-bottom-ios ~ * .fab-right-bottom,\n.ios .toolbar-bottom-ios ~ .fab-left-bottom,\n.ios .toolbar-bottom-ios ~ .fab-center-bottom,\n.ios .toolbar-bottom-ios ~ .fab-right-bottom,\n.md .toolbar-bottom-md ~ * .fab-left-bottom,\n.md .toolbar-bottom-md ~ * .fab-center-bottom,\n.md .toolbar-bottom-md ~ * .fab-right-bottom,\n.md .toolbar-bottom-md ~ .fab-left-bottom,\n.md .toolbar-bottom-md ~ .fab-center-bottom,\n.md .toolbar-bottom-md ~ .fab-right-bottom {\n margin-bottom: var(--f7-toolbar-height);\n}\n.tabbar-icons.toolbar-bottom ~ * .fab-left-bottom,\n.tabbar-icons.toolbar-bottom ~ * .fab-center-bottom,\n.tabbar-icons.toolbar-bottom ~ * .fab-right-bottom,\n.tabbar-icons.toolbar-bottom ~ .fab-left-bottom,\n.tabbar-icons.toolbar-bottom ~ .fab-center-bottom,\n.tabbar-icons.toolbar-bottom ~ .fab-right-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ * .fab-left-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ * .fab-center-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ * .fab-right-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ .fab-left-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ .fab-center-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ .fab-right-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ * .fab-left-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ * .fab-center-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ * .fab-right-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ .fab-left-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ .fab-center-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ .fab-right-bottom {\n margin-bottom: var(--f7-tabbar-icons-height);\n}\n.tabbar-icons.toolbar-top ~ * .fab-left-bottom,\n.tabbar-icons.toolbar-top ~ * .fab-center-bottom,\n.tabbar-icons.toolbar-top ~ * .fab-right-bottom,\n.tabbar-icons.toolbar-top ~ .fab-left-bottom,\n.tabbar-icons.toolbar-top ~ .fab-center-bottom,\n.tabbar-icons.toolbar-top ~ .fab-right-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ * .fab-left-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ * .fab-center-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ * .fab-right-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ .fab-left-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ .fab-center-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ .fab-right-bottom,\n.md .tabbar-icons.toolbar-top-md ~ * .fab-left-bottom,\n.md .tabbar-icons.toolbar-top-md ~ * .fab-center-bottom,\n.md .tabbar-icons.toolbar-top-md ~ * .fab-right-bottom,\n.md .tabbar-icons.toolbar-top-md ~ .fab-left-bottom,\n.md .tabbar-icons.toolbar-top-md ~ .fab-center-bottom,\n.md .tabbar-icons.toolbar-top-md ~ .fab-right-bottom {\n margin-top: var(--f7-tabbar-icons-height);\n}\n.messagebar ~ * .fab-left-bottom,\n.messagebar ~ * .fab-center-bottom,\n.messagebar ~ * .fab-right-bottom,\n.messagebar ~ .fab-left-bottom,\n.messagebar ~ .fab-center-bottom,\n.messagebar ~ .fab-right-bottom {\n margin-bottom: var(--f7-messagebar-height);\n}\n.navbar + .toolbar-top ~ * .fab-left-top,\n.ios .navbar + .toolbar-top-ios ~ * .fab-left-top,\n.md .navbar + .toolbar-top-ios ~ * .fab-left-top,\n.navbar + .toolbar-top ~ * .fab-center-top,\n.ios .navbar + .toolbar-top-ios ~ * .fab-center-top,\n.md .navbar + .toolbar-top-ios ~ * .fab-center-top,\n.navbar + .toolbar-top ~ * .fab-right-top,\n.ios .navbar + .toolbar-top-ios ~ * .fab-right-top,\n.md .navbar + .toolbar-top-ios ~ * .fab-right-top,\n.navbar + .toolbar-top ~ .fab-left-top,\n.ios .navbar + .toolbar-top-ios ~ .fab-left-top,\n.md .navbar + .toolbar-top-ios ~ .fab-left-top,\n.navbar + .toolbar-top ~ .fab-center-top,\n.ios .navbar + .toolbar-top-ios ~ .fab-center-top,\n.md .navbar + .toolbar-top-ios ~ .fab-center-top,\n.navbar + .toolbar-top ~ .fab-right-top,\n.ios .navbar + .toolbar-top-ios ~ .fab-right-top,\n.md .navbar + .toolbar-top-ios ~ .fab-right-top {\n margin-top: calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar + .toolbar-top.tabbar-icons ~ * .fab-left-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-left-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-left-top,\n.navbar + .toolbar-top.tabbar-icons ~ * .fab-center-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-center-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-center-top,\n.navbar + .toolbar-top.tabbar-icons ~ * .fab-right-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-right-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-right-top,\n.navbar + .toolbar-top.tabbar-icons ~ .fab-left-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-left-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-left-top,\n.navbar + .toolbar-top.tabbar-icons ~ .fab-center-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-center-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-center-top,\n.navbar + .toolbar-top.tabbar-icons ~ .fab-right-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-right-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-right-top {\n margin-top: calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbars + .toolbar-top ~ * .fab-left-top,\n.ios .navbars + .toolbar-top-ios ~ * .fab-left-top,\n.navbars + .toolbar-top ~ * .fab-center-top,\n.ios .navbars + .toolbar-top-ios ~ * .fab-center-top,\n.navbars + .toolbar-top ~ * .fab-right-top,\n.ios .navbars + .toolbar-top-ios ~ * .fab-right-top,\n.navbars + .toolbar-top ~ .fab-left-top,\n.ios .navbars + .toolbar-top-ios ~ .fab-left-top,\n.navbars + .toolbar-top ~ .fab-center-top,\n.ios .navbars + .toolbar-top-ios ~ .fab-center-top,\n.navbars + .toolbar-top ~ .fab-right-top,\n.ios .navbars + .toolbar-top-ios ~ .fab-right-top {\n margin-top: calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbars + .toolbar-top.tabbar-icons ~ * .fab-left-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ * .fab-left-top,\n.navbars + .toolbar-top.tabbar-icons ~ * .fab-center-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ * .fab-center-top,\n.navbars + .toolbar-top.tabbar-icons ~ * .fab-right-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ * .fab-right-top,\n.navbars + .toolbar-top.tabbar-icons ~ .fab-left-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ .fab-left-top,\n.navbars + .toolbar-top.tabbar-icons ~ .fab-center-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ .fab-center-top,\n.navbars + .toolbar-top.tabbar-icons ~ .fab-right-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ .fab-right-top {\n margin-top: calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.ios .fab > a.active-state,\n.ios .fab-buttons a.active-state {\n transition-duration: 0ms;\n background-color: var(--f7-fab-pressed-bg-color, var(--f7-theme-color-shade));\n}\n.md .fab > a.active-state,\n.md .fab-buttons a.active-state {\n background-color: var(--f7-fab-pressed-bg-color, var(--f7-fab-bg-color, var(--f7-theme-color)));\n}\n/* === Searchbar === */\n:root {\n /*\n --f7-searchbar-link-color: var(--f7-bars-link-color);\n --f7-searchbar-inline-input-font-size: var(--f7-searchbar-input-font-size);\n */\n --f7-searchbar-input-border-width: 0px;\n --f7-searchbar-input-border-color: transparent;\n}\n.ios {\n /*\n --f7-searchbar-bg-color: var(--f7-bars-bg-color);\n --f7-searchbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-searchbar-border-color: var(--f7-bars-border-color);\n */\n --f7-searchbar-height: 44px;\n --f7-searchbar-inner-padding-left: 8px;\n --f7-searchbar-inner-padding-right: 8px;\n /*\n --f7-searchbar-link-color: var(--f7-bars-link-color, var(--f7-theme-color));\n */\n --f7-searchbar-input-font-size: 17px;\n --f7-searchbar-input-border-radius: 8px;\n --f7-searchbar-input-height: 32px;\n --f7-searchbar-inline-input-height: 32px;\n /*\n --f7-searchbar-inline-input-border-radius: var(--f7-searchbar-input-border-radius);\n */\n --f7-searchbar-input-padding-horizontal: 28px;\n /*\n --f7-searchbar-inline-input-padding-horizontal: var(--f7-searchbar-input-padding-horizontal);\n --f7-searchbar-input-clear-button-color: var(--f7-input-clear-button-color);\n */\n --f7-searchbar-backdrop-bg-color: rgba(0, 0, 0, 0.4);\n --f7-searchbar-in-page-content-margin: 0px;\n --f7-searchbar-in-page-content-box-shadow: none;\n --f7-searchbar-in-page-content-border-radius: 0;\n --f7-searchbar-in-page-content-input-border-radius: 0;\n --f7-searchbar-placeholder-color: rgba(0, 0, 0, 0.4);\n --f7-searchbar-input-text-color: #000;\n --f7-searchbar-search-icon-color: rgba(0, 0, 0, 0.4);\n --f7-searchbar-input-bg-color: #e4e4e4;\n}\n.ios .dark,\n.ios.dark {\n --f7-searchbar-placeholder-color: rgba(255, 255, 255, 0.4);\n --f7-searchbar-input-text-color: #fff;\n --f7-searchbar-search-icon-color: rgba(255, 255, 255, 0.4);\n --f7-searchbar-input-bg-color: #2a2a2a;\n}\n.md {\n --f7-searchbar-border-color: transparent;\n --f7-searchbar-height: 48px;\n --f7-searchbar-inner-padding-left: 8px;\n --f7-searchbar-inner-padding-right: 8px;\n --f7-searchbar-input-font-size: 16px;\n --f7-searchbar-input-border-radius: 24px;\n --f7-searchbar-input-height: 48px;\n --f7-searchbar-inline-input-height: 48px;\n --f7-searchbar-inline-input-border-radius: 24px;\n --f7-searchbar-input-padding-horizontal: 16px;\n --f7-searchbar-inline-input-padding-horizontal: 16px;\n --f7-searchbar-backdrop-bg-color: rgba(0, 0, 0, 0.25);\n --f7-searchbar-in-page-content-margin: 16px 0;\n --f7-searchbar-in-page-content-box-shadow: none;\n --f7-searchbar-in-page-content-border-radius: 24px;\n --f7-searchbar-in-page-content-input-border-radius: 24px;\n --f7-searchbar-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-searchbar-link-color: var(--f7-md-on-surface);\n --f7-searchbar-search-icon-color: var(--f7-md-on-surface);\n --f7-searchbar-input-clear-button-color: var(--f7-md-on-surface);\n --f7-searchbar-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-searchbar-input-bg-color: var(--f7-md-secondary-container);\n --f7-searchbar-input-text-color: var(--f7-md-on-surface);\n}\n.searchbar {\n --f7-link-highlight-color: var(--f7-link-highlight-black);\n width: 100%;\n position: relative;\n z-index: 200;\n height: var(--f7-searchbar-height);\n background-color: var(--f7-searchbar-bg-color, var(--f7-bars-bg-color));\n}\n.dark .searchbar {\n --f7-link-highlight-color: var(--f7-link-highlight-white);\n}\n.searchbar input[type='search']::-webkit-search-decoration {\n display: none;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .searchbar {\n background-color: rgba(var(--f7-searchbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.ios .subnavbar .searchbar {\n background-color: transparent;\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n}\n.ios .subnavbar .searchbar:after {\n display: none !important;\n}\n.searchbar.no-outline:after {\n display: none !important;\n}\n.searchbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-searchbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.page > .searchbar:not(.searchbar-inline) {\n z-index: 600;\n}\n.searchbar input[type='text'],\n.searchbar input[type='search'] {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n display: block;\n border: var(--f7-searchbar-input-border-width) solid var(--f7-searchbar-input-border-color);\n -webkit-appearance: none;\n appearance: none;\n font-family: inherit;\n font-weight: normal;\n color: var(--f7-searchbar-input-text-color);\n font-size: var(--f7-searchbar-input-font-size);\n background-color: var(--f7-searchbar-input-bg-color);\n border-radius: var(--f7-searchbar-input-border-radius);\n position: relative;\n padding: 0;\n padding-left: calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-right, 0px));\n padding-right: calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px));\n}\n.searchbar input[type='text']::placeholder,\n.searchbar input[type='search']::placeholder {\n color: var(--f7-searchbar-placeholder-color);\n opacity: 1;\n}\n.searchbar input::-webkit-search-cancel-button {\n -webkit-appearance: none;\n appearance: none;\n}\n.searchbar .searchbar-input-wrap {\n flex-shrink: 1;\n width: 100%;\n height: var(--f7-searchbar-input-height);\n position: relative;\n}\n.searchbar a {\n color: var(--f7-searchbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.page > .searchbar:not(.searchbar-inline) {\n position: absolute;\n left: 0;\n top: 0;\n}\n.page-content .searchbar:not(.searchbar-inline) {\n border-radius: var(--f7-searchbar-in-page-content-border-radius);\n margin: var(--f7-searchbar-in-page-content-margin);\n width: auto;\n box-shadow: var(--f7-searchbar-in-page-content-box-shadow);\n}\n.page-content .searchbar:not(.searchbar-inline) .searchbar-inner,\n.page-content .searchbar:not(.searchbar-inline) input[type='text'],\n.page-content .searchbar:not(.searchbar-inline) input[type='search'] {\n border-radius: var(--f7-searchbar-in-page-content-input-border-radius, var(--f7-searchbar-input-border-radius));\n}\n.searchbar .input-clear-button {\n color: var(--f7-searchbar-input-clear-button-color, var(--f7-input-clear-button-color));\n}\n.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-searchbar-height);\n position: absolute;\n transition-duration: 300ms;\n pointer-events: none;\n}\n.navbar .searchbar-expandable {\n background: transparent;\n}\n.navbar .searchbar-expandable:after {\n display: none !important;\n}\n.navbar .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar .searchbar.searchbar-expandable .searchbar-inner {\n top: var(--f7-safe-area-top);\n height: calc(100% - var(--f7-safe-area-top));\n}\n.toolbar .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-toolbar-height);\n}\n.subnavbar .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-subnavbar-height);\n}\n.tabbar-icons .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-tabbar-icons-height);\n}\n.searchbar-inner {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n padding: 0 calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left));\n}\n.searchbar-disable-button {\n cursor: pointer;\n pointer-events: none;\n -webkit-appearance: none;\n appearance: none;\n background: none;\n border: none;\n outline: 0;\n padding: 0;\n margin: 0;\n width: auto;\n opacity: 0;\n}\n.searchbar-icon {\n pointer-events: none;\n background-position: center;\n background-repeat: no-repeat;\n}\n.searchbar-icon:after {\n color: var(--f7-searchbar-search-icon-color);\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n.searchbar-backdrop {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 100;\n opacity: 0;\n pointer-events: none;\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n background: var(--f7-searchbar-backdrop-bg-color);\n}\n.searchbar-backdrop.searchbar-backdrop-in {\n opacity: 1;\n pointer-events: auto;\n}\n.page-content > .searchbar-backdrop {\n position: fixed;\n}\n.searchbar-not-found {\n display: none;\n}\n.hidden-by-searchbar,\n.list .hidden-by-searchbar,\n.list.li.hidden-by-searchbar,\n.list li.hidden-by-searchbar {\n display: none !important;\n}\n.navbar.with-searchbar-expandable-enabled-no-transition,\n.navbar.with-searchbar-expandable-enabled-no-transition {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar.with-searchbar-expandable-enabled,\n.navbar.with-searchbar-expandable-enabled {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar.with-searchbar-expandable-enabled .navbar-bg,\n.navbar.with-searchbar-expandable-enabled .navbar-bg,\n.navbar.with-searchbar-expandable-enabled .title-large,\n.navbar.with-searchbar-expandable-enabled .title-large,\n.navbar.with-searchbar-expandable-enabled .title-large-text,\n.navbar.with-searchbar-expandable-enabled .title-large-text {\n transition-duration: 300ms;\n}\n.navbar.with-searchbar-expandable-closing .navbar-bg,\n.navbar.with-searchbar-expandable-closing .navbar-bg,\n.navbar.with-searchbar-expandable-closing .title-large,\n.navbar.with-searchbar-expandable-closing .title-large,\n.navbar.with-searchbar-expandable-closing .title-large-text,\n.navbar.with-searchbar-expandable-closing .title-large-text {\n transition-duration: 300ms;\n}\n.page-content.with-searchbar-expandable-enabled {\n height: calc(100% + var(--f7-navbar-large-title-height));\n transform: translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n transition-duration: 300ms;\n transition-property: transform;\n}\n.page-content.with-searchbar-expandable-closing {\n transition-duration: 300ms;\n}\n.navbar ~ .page:not(.no-navbar) > .searchbar,\n.navbars ~ .page:not(.no-navbar) > .searchbar,\n.page > .navbar ~ .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ .page-with-navbar-large:not(.no-navbar) .searchbar,\n.navbars ~ .page-with-navbar-large:not(.no-navbar) .searchbar,\n.page-with-navbar-large .navbar ~ .searchbar,\n.page-with-navbar-large .navbar ~ * .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));\n transform: translate3d(0, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.navbars ~ .page-with-navbar-large:not(.no-navbar) .page-content .searchbar,\n.page-with-navbar-large .page-content .searchbar {\n top: 0;\n transform: none;\n}\n.searchbar ~ * {\n --f7-page-searchbar-offset: var(--f7-searchbar-height);\n}\n.page > .toolbar-top ~ .searchbar,\n.ios .page > .toolbar-top-ios ~ .searchbar,\n.md .page > .toolbar-top-md ~ .searchbar {\n top: var(--f7-toolbar-height);\n}\n.page > .tabbar-icons.toolbar-top ~ .searchbar,\n.ios .page > .tabbar-icons.toolbar-top-ios ~ .searchbar,\n.md .page > .tabbar-icons.toolbar-top-md ~ .searchbar {\n top: var(--f7-tabbar-icons-height);\n}\n.page > .navbar ~ .toolbar-top ~ .searchbar,\n.ios .page > .navbar ~ .toolbar-top-ios ~ .searchbar,\n.md .page > .navbar ~ .toolbar-top-md ~ .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top));\n}\n.page > .navbar ~ .tabbar-icons.toolbar-top ~ .searchbar,\n.ios .page > .navbar ~ .tabbar-icons.toolbar-top-ios ~ .searchbar,\n.md .page > .navbar ~ .tabbar-icons.toolbar-top-md ~ .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top));\n}\n.searchbar.searchbar-inline {\n width: auto;\n height: auto;\n background-color: transparent;\n background-image: none;\n}\n.searchbar.searchbar-inline:after,\n.searchbar.searchbar-inline:before {\n display: none !important;\n}\n.searchbar.searchbar-inline .searchbar-input-wrap {\n height: var(--f7-searchbar-inline-input-height, var(--f7-searchbar-input-height));\n}\n.searchbar.searchbar-inline .searchbar-inner {\n padding: 0;\n position: static;\n width: auto;\n height: auto;\n}\n.searchbar.searchbar-inline input[type='text'],\n.searchbar.searchbar-inline input[type='search'] {\n font-size: var(--f7-searchbar-inline-input-font-size, var(--f7-searchbar-input-font-size));\n border-radius: var(--f7-searchbar-inline-input-border-radius, var(--f7-searchbar-input-border-radius));\n padding-left: calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-right, 0px));\n padding-right: calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-left, 0px));\n}\n.ios .searchbar input[type='search'],\n.ios .searchbar input[type='text'] {\n z-index: 30;\n}\n.ios .searchbar .input-clear-button {\n z-index: 40;\n left: 7px;\n}\n.ios .searchbar-icon {\n width: 13px;\n height: 13px;\n position: absolute;\n top: 50%;\n margin-top: -6px;\n z-index: 40;\n right: 8px;\n}\n.ios .searchbar-icon:after {\n content: 'search_ios';\n line-height: 13px;\n}\n.ios .searchbar-disable-button {\n font-size: 17px;\n flex-shrink: 0;\n transform: translate3d(0, 0, 0);\n transition-duration: 300ms;\n color: var(--f7-searchbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n display: none;\n}\n.ios .searchbar-disable-button.active-state {\n transition-duration: 0ms;\n opacity: 0.3 !important;\n}\n.ios .searchbar-enabled .searchbar-disable-button {\n pointer-events: auto;\n opacity: 1;\n margin-right: 8px;\n}\n.ios .searchbar:not(.searchbar-enabled) .searchbar-disable-button {\n transition-duration: 300ms !important;\n}\n.ios .searchbar-expandable {\n right: 0;\n bottom: 0;\n opacity: 1;\n width: 100%;\n height: 0%;\n transform: translate3d(0, 0, 0);\n overflow: hidden;\n}\n.ios .searchbar-expandable .searchbar-disable-button {\n margin-right: 8px;\n opacity: 1;\n display: block;\n}\n.ios .searchbar-expandable .searchbar-inner {\n height: var(--f7-searchbar-expandable-size);\n}\n.ios .navbar.with-searchbar-expandable-enabled .navbar-bg,\n.ios .navbar.with-searchbar-expandable-closing .navbar-bg {\n transition-property: transform, opacity;\n}\n.ios .navbar.with-searchbar-expandable-enabled .navbar-bg,\n.ios .navbar.with-searchbar-expandable-closing .navbar-bg,\n.ios .navbar.with-searchbar-expandable-enabled .left,\n.ios .navbar.with-searchbar-expandable-closing .left,\n.ios .navbar.with-searchbar-expandable-enabled .title,\n.ios .navbar.with-searchbar-expandable-closing .title,\n.ios .navbar.with-searchbar-expandable-enabled .right,\n.ios .navbar.with-searchbar-expandable-closing .right {\n transition-duration: 300ms;\n}\n.ios .navbar.with-searchbar-expandable-enabled .left,\n.ios .navbar.with-searchbar-expandable-enabled-no-transition .left,\n.ios .navbar.with-searchbar-expandable-enabled .title,\n.ios .navbar.with-searchbar-expandable-enabled-no-transition .title,\n.ios .navbar.with-searchbar-expandable-enabled .right,\n.ios .navbar.with-searchbar-expandable-enabled-no-transition .right {\n transform: translateY(calc(-1 * var(--f7-navbar-height)));\n opacity: 0 !important;\n}\n.ios .searchbar-expandable.searchbar-enabled {\n opacity: 1;\n height: var(--f7-searchbar-expandable-size);\n pointer-events: auto;\n}\n.md .searchbar-icon,\n.md .searchbar-disable-button {\n position: absolute;\n top: 50%;\n transition-duration: 300ms;\n}\n.md .searchbar-icon {\n width: 48px;\n height: 48px;\n left: 0;\n top: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n right: var(--f7-safe-area-right);\n}\n.md .searchbar-icon:after {\n width: auto;\n height: auto;\n content: 'search_md';\n line-height: 1.2;\n}\n.md .searchbar-disable-button {\n width: 48px;\n height: 48px;\n transform: rotate(-90deg) scale(0.5);\n font-size: 0 !important;\n display: block;\n margin-top: -24px;\n color: var(--f7-searchbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n right: calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right));\n}\n.md .searchbar-disable-button:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n line-height: 48px;\n content: 'arrow_right_md';\n}\n.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-disable-button {\n transform: rotate(0deg) scale(1);\n pointer-events: auto;\n opacity: 1;\n}\n.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-icon {\n opacity: 0;\n transform: rotate(90deg) scale(0.5);\n}\n.md .searchbar {\n --f7-searchbar-input-extra-padding-left: 34px;\n}\n.md .searchbar .input-clear-button {\n width: 48px;\n height: 48px;\n margin-top: -24px;\n left: 0;\n}\n.md .searchbar .input-clear-button:after {\n line-height: 48px;\n content: 'delete_round_md';\n opacity: 1;\n}\n.md .searchbar .input-clear-button:before {\n display: none;\n}\n.md .searchbar-inline {\n --f7-searchbar-input-extra-padding-left: 32px;\n}\n.md .page > .searchbar,\n.md .subnavbar .searchbar,\n.md .searchbar-expandable {\n --f7-searchbar-input-extra-padding-left: 34px;\n}\n.md .page > .searchbar .searchbar-disable-button,\n.md .subnavbar .searchbar .searchbar-disable-button,\n.md .searchbar-expandable .searchbar-disable-button {\n right: calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right));\n}\n.md .page > .searchbar .searchbar-icon,\n.md .subnavbar .searchbar .searchbar-icon,\n.md .searchbar-expandable .searchbar-icon {\n right: var(--f7-safe-area-right);\n}\n.md .searchbar-expandable {\n --f7-searchbar-inner-padding-left: 4px;\n --f7-searchbar-inner-padding-right: 4px;\n height: var(--f7-searchbar-expandable-size);\n opacity: 0;\n bottom: 0;\n border-radius: calc(var(--f7-searchbar-expandable-size));\n width: calc(var(--f7-searchbar-expandable-size));\n margin-top: calc(var(--f7-searchbar-expandable-size) * -1 / 2);\n transform: translate3d(0px, 0px, 0px);\n background-color: var(--f7-searchbar-input-bg-color);\n right: 100%;\n margin-right: calc(var(--f7-searchbar-expandable-size) * -1);\n}\n.md .searchbar-expandable.searchbar-enabled {\n width: 100%;\n border-radius: 0;\n opacity: 1;\n pointer-events: auto;\n margin-top: 0;\n right: 0;\n margin-right: 0;\n}\n/* === Messages === */\n:root {\n --f7-message-text-header-opacity: 0.65;\n --f7-message-text-header-font-size: 12px;\n --f7-message-text-footer-opacity: 0.65;\n --f7-message-text-footer-font-size: 12px;\n --f7-message-bubble-line-height: 1.2;\n --f7-message-header-font-size: 12px;\n --f7-message-footer-font-size: 11px;\n --f7-message-name-font-size: 12px;\n --f7-message-name-font-weight: inherit;\n --f7-message-avatar-border-radius: 50%;\n --f7-messages-title-font-weight: inherit;\n --f7-message-typing-indicator-bg-color: #000;\n}\n:root .dark,\n:root.dark {\n --f7-message-typing-indicator-bg-color: #fff;\n}\n.ios {\n --f7-message-text-header-text-color: inherit;\n --f7-message-text-footer-text-color: inherit;\n --f7-messages-title-font-size: 11px;\n --f7-message-avatar-size: 29px;\n --f7-message-margin: 10px;\n --f7-message-bubble-min-height: 32px;\n --f7-message-bubble-font-size: 17px;\n --f7-message-bubble-border-radius: 16px;\n --f7-message-bubble-padding-vertical: 6px;\n --f7-message-bubble-padding-horizontal: 16px;\n --f7-message-typing-indicator-opacity: 0.35;\n /*\n --f7-message-sent-bg-color: var(--f7-theme-color);\n */\n --f7-message-sent-text-color: #fff;\n --f7-messages-content-bg-color: #fff;\n --f7-message-received-text-color: #000;\n --f7-message-received-bg-color: #e5e5ea;\n --f7-messages-title-text-color: rgba(0, 0, 0, 0.45);\n --f7-message-header-text-color: rgba(0, 0, 0, 0.45);\n --f7-message-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-message-name-text-color: rgba(0, 0, 0, 0.45);\n}\n.ios .dark,\n.ios.dark {\n --f7-message-received-bg-color: #252525;\n --f7-message-received-text-color: #fff;\n --f7-messages-content-bg-color: transparent;\n --f7-messages-title-text-color: rgba(255, 255, 255, 0.54);\n --f7-message-header-text-color: rgba(255, 255, 255, 0.54);\n --f7-message-name-text-color: rgba(255, 255, 255, 0.54);\n --f7-message-footer-text-color: rgba(255, 255, 255, 0.54);\n}\n.md {\n --f7-messages-content-bg-color: transparent;\n --f7-messages-title-font-size: 12px;\n --f7-message-avatar-size: 32px;\n --f7-message-margin: 16px;\n --f7-message-bubble-min-height: 40px;\n --f7-message-bubble-font-size: 16px;\n --f7-message-bubble-border-radius: 20px;\n --f7-message-bubble-padding-vertical: 10px;\n --f7-message-bubble-padding-horizontal: 16px;\n --f7-message-typing-indicator-opacity: 0.6;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-message-sent-bg-color: var(--f7-md-primary);\n --f7-message-sent-text-color: var(--f7-md-on-primary);\n --f7-message-received-bg-color: var(--f7-md-surface-variant);\n --f7-message-received-text-color: var(--f7-md-on-surface);\n --f7-message-text-header-text-color: var(--f7-md-on-surface-variant);\n --f7-message-text-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-messages-title-text-color: var(--f7-md-on-surface-variant);\n --f7-message-header-text-color: var(--f7-md-on-surface-variant);\n --f7-message-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-message-name-text-color: var(--f7-md-on-surface-variant);\n}\n.messages-content,\n.messages {\n background: var(--f7-messages-content-bg-color);\n}\n.messages {\n display: flex;\n flex-direction: column;\n min-height: 100%;\n position: relative;\n z-index: 1;\n}\n.messages-title,\n.message {\n margin-top: var(--f7-message-margin);\n}\n.messages-title:last-child,\n.message:last-child {\n margin-bottom: var(--f7-message-margin);\n}\n.messages-title {\n text-align: center;\n width: 100%;\n line-height: 1;\n color: var(--f7-messages-title-text-color);\n font-size: var(--f7-messages-title-font-size);\n font-weight: var(--f7-messages-title-font-weight);\n}\n.message {\n max-width: 70%;\n box-sizing: border-box;\n display: flex;\n align-items: flex-end;\n position: relative;\n z-index: 1;\n transform: translate3d(0, 0, 0);\n}\n.message-avatar {\n border-radius: var(--f7-message-avatar-border-radius);\n position: relative;\n background-size: cover;\n align-self: flex-end;\n flex-shrink: 0;\n width: var(--f7-message-avatar-size);\n height: var(--f7-message-avatar-size);\n}\n.message-content {\n position: relative;\n display: flex;\n flex-direction: column;\n}\n.message-header,\n.message-footer,\n.message-name {\n line-height: 1;\n}\n.message-header {\n color: var(--f7-message-header-text-color);\n font-size: var(--f7-message-header-font-size);\n}\n.message-footer {\n color: var(--f7-message-footer-text-color);\n font-size: var(--f7-message-footer-font-size);\n margin-bottom: -1em;\n}\n.message-name {\n color: var(--f7-message-name-text-color);\n font-size: var(--f7-message-name-font-size);\n font-weight: var(--f7-message-name-font-weight);\n}\n.message-bubble {\n box-sizing: border-box;\n word-break: break-word;\n display: flex;\n flex-direction: column;\n position: relative;\n line-height: var(--f7-message-bubble-line-height);\n font-size: var(--f7-message-bubble-font-size);\n border-radius: var(--f7-message-bubble-border-radius);\n padding: var(--f7-message-bubble-padding-vertical) var(--f7-message-bubble-padding-horizontal);\n min-height: var(--f7-message-bubble-min-height);\n}\n.message-image img {\n display: block;\n max-width: 100%;\n height: auto;\n width: auto;\n}\n.message-text-header,\n.message-text-footer {\n line-height: 1;\n}\n.message-text-header {\n color: var(--f7-message-text-header-text-color);\n opacity: var(--f7-message-text-header-opacity);\n font-size: var(--f7-message-text-header-font-size);\n}\n.message-text-footer {\n color: var(--f7-message-text-footer-text-color);\n opacity: var(--f7-message-text-footer-opacity);\n font-size: var(--f7-message-text-footer-font-size);\n}\n.message-text {\n text-align: left;\n}\n.message-sent {\n text-align: right;\n flex-direction: row;\n align-self: flex-start;\n}\n.message-sent .message-bubble {\n color: var(--f7-message-sent-text-color);\n background: var(--f7-message-sent-bg-color, var(--f7-theme-color));\n}\n.message-sent .message-content {\n align-items: flex-start;\n}\n.message-received {\n flex-direction: row-reverse;\n align-self: flex-end;\n}\n.message-received .message-bubble {\n color: var(--f7-message-received-text-color);\n background: var(--f7-message-received-bg-color);\n}\n.message-received .message-content {\n align-items: flex-end;\n}\n.message:not(.message-last) .message-avatar {\n opacity: 0;\n}\n.message:not(.message-first) .message-name {\n display: none;\n}\n.message.message-same-name .message-name {\n display: none;\n}\n.message.message-same-header .message-header {\n display: none;\n}\n.message.message-same-footer .message-footer {\n display: none;\n}\n.message-appear-from-bottom {\n animation: message-appear-from-bottom 300ms;\n}\n.message-appear-from-top {\n animation: message-appear-from-top 300ms;\n}\n.message-typing-indicator {\n display: inline-block;\n font-size: 0;\n vertical-align: middle;\n}\n.message-typing-indicator > div {\n display: inline-block;\n position: relative;\n background: var(--f7-message-typing-indicator-bg-color);\n opacity: var(--f7-message-typing-indicator-opacity);\n vertical-align: middle;\n border-radius: 50%;\n}\n@keyframes message-appear-from-bottom {\n from {\n transform: translate3d(0, 100%, 0);\n }\n to {\n transform: translate3d(0, 0, 0);\n }\n}\n@keyframes message-appear-from-top {\n from {\n transform: translate3d(0, -100%, 0);\n }\n to {\n transform: translate3d(0, 0, 0);\n }\n}\n.ios .messages-title b,\n.ios .message-header b,\n.ios .message-footer b,\n.ios .message-name b {\n font-weight: 600;\n}\n.ios .message-header,\n.ios .message-name {\n margin-bottom: 3px;\n}\n.ios .message-footer {\n margin-top: 3px;\n}\n.ios .message-bubble {\n min-width: 48px;\n}\n.ios .message-image {\n margin: var(--f7-message-bubble-padding-vertical) calc(-1 * var(--f7-message-bubble-padding-horizontal));\n}\n.ios .message-image:first-child {\n margin-top: calc(-1 * var(--f7-message-bubble-padding-vertical));\n}\n.ios .message-image:first-child img {\n border-top-left-radius: var(--f7-message-bubble-border-radius);\n border-top-right-radius: var(--f7-message-bubble-border-radius);\n}\n.ios .message-image:last-child {\n margin-bottom: calc(-1 * var(--f7-message-bubble-padding-vertical));\n}\n.ios .message-image:last-child img {\n border-bottom-left-radius: var(--f7-message-bubble-border-radius);\n border-bottom-right-radius: var(--f7-message-bubble-border-radius);\n}\n.ios .message-text-header {\n margin-bottom: 3px;\n}\n.ios .message-text-footer {\n margin-top: 3px;\n}\n.ios .message-received {\n margin-left: calc(10px + var(--f7-safe-area-left));\n}\n.ios .message-received .message-header,\n.ios .message-received .message-footer,\n.ios .message-received .message-name {\n margin-left: var(--f7-message-bubble-padding-horizontal);\n}\n.ios .message-received .message-bubble {\n padding-left: calc(var(--f7-message-bubble-padding-horizontal) + 6px);\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 42% 46% 56%;\n}\n.ios .message-received .message-image {\n margin-left: calc(-1 * (var(--f7-message-bubble-padding-horizontal) + 6px));\n}\n.ios .message-received.message-tail .message-bubble {\n border-radius: var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0;\n}\n.ios .message-received.message-tail:not(.message-typing) .message-bubble {\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 42% 46% 56%;\n}\n.ios .message-received.message-tail:not(.message-typing) .message-bubble .message-image:last-child img {\n border-bottom-left-radius: 0px;\n}\n.ios .message-sent {\n margin-right: calc(10px + var(--f7-safe-area-right));\n}\n.ios .message-sent .message-header,\n.ios .message-sent .message-footer,\n.ios .message-sent .message-name {\n margin-right: var(--f7-message-bubble-padding-horizontal);\n}\n.ios .message-sent .message-bubble {\n padding-right: calc(var(--f7-message-bubble-padding-horizontal) + 6px);\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 56% 46% 42%;\n}\n.ios .message-sent .message-image {\n margin-right: calc(-1 * (var(--f7-message-bubble-padding-horizontal) + 6px));\n}\n.ios .message-sent.message-tail .message-bubble {\n border-radius: var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0 var(--f7-message-bubble-border-radius);\n}\n.ios .message-sent.message-tail .message-bubble {\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 56% 46% 42%;\n}\n.ios .message-sent.message-tail .message-bubble .message-image:last-child img {\n border-bottom-right-radius: 0px;\n}\n.ios .message + .message:not(.message-first) {\n margin-top: 1px;\n}\n.ios .message-received.message-typing .message-content:after,\n.ios .message-received.message-typing .message-content:before {\n content: '';\n position: absolute;\n background: var(--f7-message-received-bg-color);\n border-radius: 50%;\n}\n.ios .message-received.message-typing .message-content:after {\n width: 11px;\n height: 11px;\n left: 4px;\n bottom: 0px;\n}\n.ios .message-received.message-typing .message-content:before {\n width: 6px;\n height: 6px;\n left: -1px;\n bottom: -4px;\n}\n.ios .message-typing-indicator > div {\n width: 9px;\n height: 9px;\n}\n.ios .message-typing-indicator > div + div {\n margin-right: 4px;\n}\n.ios .message-typing-indicator > div:nth-child(1) {\n animation: ios-message-typing-indicator 900ms infinite;\n}\n.ios .message-typing-indicator > div:nth-child(2) {\n animation: ios-message-typing-indicator 900ms 150ms infinite;\n}\n.ios .message-typing-indicator > div:nth-child(3) {\n animation: ios-message-typing-indicator 900ms 300ms infinite;\n}\n@keyframes ios-message-typing-indicator {\n 0% {\n opacity: 0.35;\n }\n 25% {\n opacity: 0.2;\n }\n 50% {\n opacity: 0.2;\n }\n}\n.md .messages-title b,\n.md .message-header b,\n.md .message-footer b,\n.md .message-name b {\n font-weight: 500;\n}\n.md .message-header,\n.md .message-name {\n margin-bottom: 2px;\n}\n.md .message-footer {\n margin-top: 2px;\n}\n.md .message-text-header {\n margin-bottom: 4px;\n}\n.md .message-text-footer {\n margin-top: 4px;\n}\n.md .message-image {\n margin: calc(-1 * var(--f7-message-bubble-padding-vertical)) calc(-1 * var(--f7-message-bubble-padding-horizontal));\n}\n.md .message-image,\n.md .message-image img {\n border-radius: var(--f7-message-bubble-border-radius);\n}\n.md .message-received {\n margin-left: calc(8px + var(--f7-safe-area-left));\n}\n.md .message-received .message-name,\n.md .message-received .message-header,\n.md .message-received .message-footer {\n margin-left: 16px;\n}\n.md .message-received.message-first:not(.message-last) .message-bubble,\n.md .message-received.message-first:not(.message-last) .message-image,\n.md .message-received.message-first:not(.message-last) .message-image img {\n border-bottom-left-radius: 4px;\n}\n.md .message-received.message-last:not(.message-first) .message-bubble,\n.md .message-received.message-last:not(.message-first) .message-image,\n.md .message-received.message-last:not(.message-first) .message-image img {\n border-top-left-radius: 4px;\n}\n.md .message-received:not(.message-last):not(.message-first) .message-bubble,\n.md .message-received:not(.message-last):not(.message-first) .message-image,\n.md .message-received:not(.message-last):not(.message-first) .message-image img {\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.md .message-received .message-avatar + .message-content {\n margin-left: 8px;\n}\n.md .message-sent {\n margin-right: calc(8px + var(--f7-safe-area-right));\n}\n.md .message-sent .message-name,\n.md .message-sent .message-header,\n.md .message-sent .message-footer {\n margin-right: 16px;\n}\n.md .message-sent.message-first:not(.message-last) .message-bubble,\n.md .message-sent.message-first:not(.message-last) .message-image,\n.md .message-sent.message-first:not(.message-last) .message-image img {\n border-bottom-right-radius: 4px;\n}\n.md .message-sent.message-last:not(.message-first) .message-bubble,\n.md .message-sent.message-last:not(.message-first) .message-image,\n.md .message-sent.message-last:not(.message-first) .message-image img {\n border-top-right-radius: 4px;\n}\n.md .message-sent:not(.message-last):not(.message-first) .message-bubble,\n.md .message-sent:not(.message-last):not(.message-first) .message-image,\n.md .message-sent:not(.message-last):not(.message-first) .message-image img {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.md .message-sent .message-avatar + .message-content {\n margin-right: var(--f7-message-bubble-padding-horizontal);\n}\n.md .message + .message:not(.message-first) {\n margin-top: 2px;\n}\n.md .message-typing-indicator > div {\n width: 6px;\n height: 6px;\n}\n.md .message-typing-indicator > div + div {\n margin-right: 6px;\n}\n.md .message-typing-indicator > div:nth-child(1) {\n animation: md-message-typing-indicator 900ms infinite;\n}\n.md .message-typing-indicator > div:nth-child(2) {\n animation: md-message-typing-indicator 900ms 150ms infinite;\n}\n.md .message-typing-indicator > div:nth-child(3) {\n animation: md-message-typing-indicator 900ms 300ms infinite;\n}\n@keyframes md-message-typing-indicator {\n 0% {\n transform: translateY(0%);\n }\n 25% {\n transform: translateY(-5px);\n }\n 50% {\n transform: translateY(0%);\n }\n}\n/* === Messagebar === */\n:root {\n --f7-messagebar-attachments-height: 155px;\n --f7-messagebar-sheet-height: 252px;\n --f7-messagebar-sheet-landscape-height: 192px;\n /*\n --f7-messagebar-inner-padding-left: var(--f7-toolbar-inner-padding-left);\n --f7-messagebar-inner-padding-right: var(--f7-toolbar-inner-padding-right);\n */\n}\n.ios {\n --f7-messagebar-height: 44px;\n --f7-messagebar-font-size: 17px;\n --f7-messagebar-textarea-bg-color: transparent;\n /*\n --f7-messagebar-link-color: var(--f7-theme-color);\n */\n --f7-messagebar-border-color: transparent;\n --f7-messagebar-textarea-border-radius: 17px;\n --f7-messagebar-textarea-padding: 6px 16px;\n --f7-messagebar-textarea-height: 34px;\n --f7-messagebar-textarea-font-size: 17px;\n --f7-messagebar-textarea-line-height: 20px;\n --f7-messagebar-sheet-bg-color: #d1d5da;\n --f7-messagebar-sheet-border-color: transparent;\n --f7-messagebar-attachment-border-radius: 12px;\n --f7-messagebar-attachment-height: 155px;\n --f7-messagebar-attachment-landscape-height: 120px;\n --f7-messagebar-textarea-placeholder-color: rgba(0, 0, 0, 0.4);\n --f7-messagebar-textarea-text-color: #000;\n --f7-messagebar-textarea-border: 1px solid #c8c8cd;\n --f7-messagebar-attachments-border-color: #c8c8cd;\n --f7-messagebar-bg-color: #fff;\n --f7-messagebar-bg-color-rgb: 255, 255, 255;\n}\n.ios .dark,\n.ios.dark {\n --f7-messagebar-textarea-placeholder-color: rgba(255, 255, 255, 0.4);\n --f7-messagebar-textarea-text-color: #fff;\n --f7-messagebar-textarea-border: 1px solid var(--f7-bars-border-color);\n --f7-messagebar-attachments-border-color: var(--f7-bars-border-color);\n --f7-messagebar-bg-color: var(--f7-bars-bg-color);\n --f7-messagebar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n}\n.md {\n --f7-messagebar-height: 64px;\n --f7-messagebar-font-size: 16px;\n --f7-messagebar-textarea-border-radius: 24px;\n --f7-messagebar-textarea-padding: 12px 16px;\n --f7-messagebar-textarea-height: 48px;\n --f7-messagebar-textarea-font-size: 16px;\n --f7-messagebar-textarea-line-height: 22px;\n --f7-messagebar-textarea-border: 1px solid transparent;\n --f7-messagebar-attachment-border-radius: 12px;\n --f7-messagebar-attachment-height: 72px;\n --f7-messagebar-attachment-landscape-height: 72px;\n --f7-messagebar-border-color: transparent;\n --f7-messagebar-attachments-border-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-messagebar-textarea-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-messagebar-textarea-bg-color: var(--f7-md-surface-variant);\n --f7-messagebar-bg-color: var(--f7-md-surface);\n --f7-messagebar-textarea-text-color: var(--f7-md-on-surface);\n --f7-messagebar-sheet-bg-color: var(--f7-md-surface);\n --f7-messagebar-sheet-border-color: var(--f7-md-outline-variant);\n --f7-messagebar-link-color: var(--f7-md-on-surface);\n}\n.messagebar {\n transform: translate3d(0, 0, 0);\n background: var(--f7-messagebar-bg-color);\n height: auto;\n min-height: var(--f7-messagebar-height);\n font-size: var(--f7-messagebar-font-size);\n padding-bottom: var(--f7-safe-area-bottom);\n bottom: 0;\n}\n.messagebar:before {\n content: '';\n position: absolute;\n background-color: var(--f7-messagebar-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .messagebar {\n background-color: rgba(var(--f7-messagebar-bg-color-rgb), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.messagebar.no-outline:before {\n display: none !important;\n}\n.messagebar.toolbar-hidden:after {\n display: none !important;\n}\n.messagebar .toolbar-inner {\n top: auto;\n position: relative;\n height: auto;\n bottom: auto;\n padding-left: calc(var(--f7-messagebar-inner-padding-left, var(--f7-toolbar-inner-padding-left)) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-messagebar-inner-padding-right, var(--f7-toolbar-inner-padding-right)) + var(--f7-safe-area-right));\n flex-direction: row-reverse;\n}\n.messagebar.messagebar-sheet-visible > .toolbar-inner {\n bottom: 0;\n}\n.messagebar .messagebar-area {\n width: 100%;\n flex-shrink: 1;\n overflow: hidden;\n position: relative;\n}\n.messagebar textarea {\n width: 100%;\n flex-shrink: 1;\n background-color: var(--f7-messagebar-textarea-bg-color);\n border-radius: var(--f7-messagebar-textarea-border-radius);\n padding: var(--f7-messagebar-textarea-padding);\n height: var(--f7-messagebar-textarea-height);\n color: var(--f7-messagebar-textarea-text-color);\n font-size: var(--f7-messagebar-textarea-font-size);\n line-height: var(--f7-messagebar-textarea-line-height);\n border: var(--f7-messagebar-textarea-border);\n}\n.messagebar textarea::placeholder {\n color: var(--f7-messagebar-textarea-placeholder-color);\n}\n.messagebar a.link {\n align-self: flex-end;\n flex-shrink: 0;\n color: var(--f7-messagebar-link-color, var(--f7-theme-color));\n}\n.messagebar-attachments {\n width: 100%;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n font-size: 0;\n white-space: nowrap;\n box-sizing: border-box;\n position: relative;\n}\n.messagebar:not(.messagebar-attachments-visible) .messagebar-attachments {\n display: none;\n}\n.messagebar-attachment {\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n display: inline-block;\n vertical-align: middle;\n white-space: normal;\n height: var(--f7-messagebar-attachment-height);\n position: relative;\n border-radius: var(--f7-messagebar-attachment-border-radius);\n}\n@media (orientation: landscape) {\n .messagebar-attachment {\n height: var(--f7-messagebar-attachment-landscape-height);\n }\n}\n.messagebar-attachment img {\n display: block;\n width: auto;\n height: 100%;\n border-radius: var(--f7-messagebar-attachment-border-radius);\n}\n.messagebar-sheet {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n display: flex;\n flex-wrap: wrap;\n flex-direction: column;\n align-content: flex-start;\n height: var(--f7-messagebar-sheet-height);\n background-color: var(--f7-messagebar-sheet-bg-color);\n border-top: 1px solid var(--f7-messagebar-sheet-border-color);\n padding-left: var(--f7-safe-area-left);\n padding-right: var(--f7-safe-area-right);\n}\n@media (orientation: landscape) {\n .messagebar-sheet {\n height: var(--f7-messagebar-sheet-landscape-height);\n }\n}\n.messagebar-sheet-image {\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n}\n.messagebar-sheet-image > img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n border-radius: inherit;\n transition-duration: 200ms;\n}\n.messagebar-attachment-delete {\n display: block;\n position: absolute;\n border-radius: 50%;\n box-sizing: border-box;\n cursor: pointer;\n}\n.messagebar-attachment-delete:after,\n.messagebar-attachment-delete:before {\n position: absolute;\n content: '';\n left: 50%;\n top: 50%;\n}\n.messagebar-attachment-delete:after {\n transform: rotate(45deg);\n}\n.messagebar-attachment-delete:before {\n transform: rotate(-45deg);\n}\n.messagebar:not(.messagebar-sheet-visible) .messagebar-sheet {\n display: none;\n}\n.messagebar ~ * {\n --f7-page-toolbar-bottom-offset: var(--f7-messagebar-height);\n}\n.ios .messagebar a.link.icon-only:first-child {\n margin-left: -8px;\n}\n.ios .messagebar a.link.icon-only:last-child {\n margin-right: -8px;\n}\n.ios .messagebar a.link:not(.icon-only) + .messagebar-area {\n margin-left: 8px;\n}\n.ios .messagebar .messagebar-area + a.link:not(.icon-only) {\n margin-left: 8px;\n}\n.ios .messagebar-area {\n margin-top: 5px;\n margin-bottom: 5px;\n}\n.ios .messagebar-attachments {\n padding: 5px;\n border-radius: var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;\n border: 1px solid var(--f7-messagebar-attachments-border-color);\n border-bottom: none;\n}\n.ios .messagebar-attachments-visible .messagebar-attachments + textarea {\n border-radius: 0 0 var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius);\n}\n.ios .messagebar-attachment {\n font-size: 14px;\n}\n.ios .messagebar-attachment + .messagebar-attachment {\n margin-right: 8px;\n}\n.ios .messagebar-attachment-delete {\n right: 5px;\n top: 5px;\n width: 20px;\n height: 20px;\n background: #7d7e80;\n border: 2px solid #fff;\n box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);\n}\n.ios .messagebar-attachment-delete:after,\n.ios .messagebar-attachment-delete:before {\n width: 10px;\n height: 2px;\n background: #fff;\n margin-left: -5px;\n margin-top: -1px;\n}\n.ios .messagebar-sheet-image,\n.ios .messagebar-sheet-item {\n box-sizing: border-box;\n flex-shrink: 0;\n margin-top: 1px;\n position: relative;\n overflow: hidden;\n height: calc((var(--f7-messagebar-sheet-height) - 2px) / 2);\n width: calc((var(--f7-messagebar-sheet-height) - 2px) / 2);\n margin-right: 1px;\n}\n@media (orientation: landscape) {\n .ios .messagebar-sheet-image,\n .ios .messagebar-sheet-item {\n width: calc((var(--f7-messagebar-sheet-landscape-height) - 2px) / 2);\n height: calc((var(--f7-messagebar-sheet-landscape-height) - 2px) / 2);\n }\n}\n.ios .messagebar-sheet-image .icon-checkbox,\n.ios .messagebar-sheet-item .icon-checkbox,\n.ios .messagebar-sheet-image .icon-radio,\n.ios .messagebar-sheet-item .icon-radio {\n position: absolute;\n right: 8px;\n bottom: 8px;\n z-index: 1;\n}\n.md .messagebar {\n --f7-toolbar-link-height: var(--f7-messagebar-height);\n}\n.md .messagebar-attachments {\n padding: 16px 16px 0;\n border-bottom: 1px solid var(--f7-messagebar-attachments-border-color);\n}\n.md .messagebar-attachment img {\n width: var(--f7-messagebar-attachment-height);\n height: var(--f7-messagebar-attachment-height);\n object-fit: cover;\n object-position: center;\n}\n.md .messagebar-attachment + .messagebar-attachment {\n margin-right: 16px;\n}\n.md .messagebar-attachments-visible .messagebar-attachments {\n background: var(--f7-messagebar-textarea-bg-color);\n border-radius: var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;\n}\n.md .messagebar-attachments-visible textarea {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.md .messagebar-area {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.md .messagebar-attachment-delete {\n right: -6px;\n top: -6px;\n width: 24px;\n height: 24px;\n background-color: var(--f7-md-inverse-surface);\n border-radius: 24px;\n border: 2px solid var(--f7-messagebar-textarea-bg-color);\n}\n.md .messagebar-attachment-delete:after,\n.md .messagebar-attachment-delete:before {\n width: 12px;\n height: 2px;\n background: var(--f7-messagebar-textarea-bg-color);\n margin-left: -6px;\n margin-top: -1px;\n}\n.md .messagebar-sheet-image,\n.md .messagebar-sheet-item {\n --f7-touch-ripple-color: transparent;\n box-sizing: border-box;\n flex-shrink: 0;\n margin-top: 8px;\n position: relative;\n overflow: hidden;\n height: calc((var(--f7-messagebar-sheet-height) - 24px) / 2);\n width: calc((var(--f7-messagebar-sheet-height) - 24px) / 2);\n border-radius: 4px;\n margin-right: 8px;\n}\n@media (orientation: landscape) {\n .md .messagebar-sheet-image,\n .md .messagebar-sheet-item {\n width: calc((var(--f7-messagebar-sheet-landscape-height) - 8px) / 2);\n height: calc((var(--f7-messagebar-sheet-landscape-height) - 24px) / 2);\n }\n}\n.md .messagebar-sheet-image input:checked ~ img,\n.md .messagebar-sheet-item input:checked ~ img {\n transform: scale(0.85);\n}\n.md .messagebar-sheet-image input:checked ~ .icon-checkbox,\n.md .messagebar-sheet-item input:checked ~ .icon-checkbox,\n.md .messagebar-sheet-image input:checked ~ .icon-radio,\n.md .messagebar-sheet-item input:checked ~ .icon-radio {\n transform: translate(-50%, -50%) scale(1);\n}\n.md .messagebar-sheet-image .icon-checkbox,\n.md .messagebar-sheet-item .icon-checkbox,\n.md .messagebar-sheet-image .icon-radio,\n.md .messagebar-sheet-item .icon-radio {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%) scale(0.85);\n border: none;\n z-index: 1;\n --f7-checkbox-inactive-color: var(--f7-md-surface);\n --f7-checkbox-active-color: var(--f7-md-surface);\n}\n.md .messagebar-sheet-image .icon-checkbox::after,\n.md .messagebar-sheet-item .icon-checkbox::after,\n.md .messagebar-sheet-image .icon-radio::after,\n.md .messagebar-sheet-item .icon-radio::after {\n color: var(--f7-md-on-surface);\n font-size: 18px;\n width: auto;\n height: 100%;\n line-height: 32px;\n left: 0;\n position: static;\n}\n/* === Swiper === */\n/**\n * Swiper 10.2.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: August 17, 2023\n */\n\n/* FONT_START */\n@font-face {\n font-family: 'swiper-icons';\n src: url('data:application/font-woff;charset=utf-8;base64, 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');\n font-weight: 400;\n font-style: normal;\n}\n/* FONT_END */\n:root {\n --swiper-theme-color: #007aff;\n /*\n --swiper-preloader-color: var(--swiper-theme-color);\n --swiper-wrapper-transition-timing-function: initial;\n */\n}\n:host {\n position: relative;\n display: block;\n margin-left: auto;\n margin-right: auto;\n z-index: 1;\n}\n.swiper {\n margin-left: auto;\n margin-right: auto;\n position: relative;\n overflow: hidden;\n overflow: clip;\n list-style: none;\n padding: 0;\n /* Fix of Webkit flickering */\n z-index: 1;\n display: block;\n}\n.swiper-vertical > .swiper-wrapper {\n flex-direction: column;\n}\n.swiper-wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n z-index: 1;\n display: flex;\n transition-property: transform;\n transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial);\n box-sizing: content-box;\n}\n.swiper-android .swiper-slide,\n.swiper-ios .swiper-slide,\n.swiper-wrapper {\n transform: translate3d(0px, 0, 0);\n}\n.swiper-horizontal {\n touch-action: pan-y;\n}\n.swiper-vertical {\n touch-action: pan-x;\n}\n.swiper-slide {\n flex-shrink: 0;\n width: 100%;\n height: 100%;\n position: relative;\n transition-property: transform;\n display: block;\n}\n.swiper-slide-invisible-blank {\n visibility: hidden;\n}\n/* Auto Height */\n.swiper-autoheight,\n.swiper-autoheight .swiper-slide {\n height: auto;\n}\n.swiper-autoheight .swiper-wrapper {\n align-items: flex-start;\n transition-property: transform, height;\n}\n.swiper-backface-hidden .swiper-slide {\n transform: translateZ(0);\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n/* 3D Effects */\n.swiper-3d.swiper-css-mode .swiper-wrapper {\n perspective: 1200px;\n}\n.swiper-3d .swiper-wrapper {\n transform-style: preserve-3d;\n}\n.swiper-3d {\n perspective: 1200px;\n}\n.swiper-3d .swiper-slide,\n.swiper-3d .swiper-cube-shadow {\n transform-style: preserve-3d;\n}\n/* CSS Mode */\n.swiper-css-mode > .swiper-wrapper {\n overflow: auto;\n scrollbar-width: none;\n /* For Firefox */\n -ms-overflow-style: none;\n /* For Internet Explorer and Edge */\n}\n.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar {\n display: none;\n}\n.swiper-css-mode > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: start start;\n}\n.swiper-css-mode.swiper-horizontal > .swiper-wrapper {\n scroll-snap-type: x mandatory;\n}\n.swiper-css-mode.swiper-vertical > .swiper-wrapper {\n scroll-snap-type: y mandatory;\n}\n.swiper-css-mode.swiper-free-mode > .swiper-wrapper {\n scroll-snap-type: none;\n}\n.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: none;\n}\n.swiper-css-mode.swiper-centered > .swiper-wrapper::before {\n content: '';\n flex-shrink: 0;\n order: 9999;\n}\n.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: center center;\n scroll-snap-stop: always;\n}\n.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child {\n margin-inline-start: var(--swiper-centered-offset-before);\n}\n.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before {\n height: 100%;\n min-height: 1px;\n width: var(--swiper-centered-offset-after);\n}\n.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child {\n margin-block-start: var(--swiper-centered-offset-before);\n}\n.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before {\n width: 100%;\n min-width: 1px;\n height: var(--swiper-centered-offset-after);\n}\n/* Slide styles start */\n/* 3D Shadows */\n.swiper-3d .swiper-slide-shadow,\n.swiper-3d .swiper-slide-shadow-left,\n.swiper-3d .swiper-slide-shadow-right,\n.swiper-3d .swiper-slide-shadow-top,\n.swiper-3d .swiper-slide-shadow-bottom,\n.swiper-3d .swiper-slide-shadow,\n.swiper-3d .swiper-slide-shadow-left,\n.swiper-3d .swiper-slide-shadow-right,\n.swiper-3d .swiper-slide-shadow-top,\n.swiper-3d .swiper-slide-shadow-bottom {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 10;\n}\n.swiper-3d .swiper-slide-shadow {\n background: rgba(0, 0, 0, 0.15);\n}\n.swiper-3d .swiper-slide-shadow-left {\n background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-right {\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-top {\n background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-bottom {\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-lazy-preloader {\n width: 42px;\n height: 42px;\n position: absolute;\n left: 50%;\n top: 50%;\n margin-left: -21px;\n margin-top: -21px;\n z-index: 10;\n transform-origin: 50%;\n box-sizing: border-box;\n border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));\n border-radius: 50%;\n border-top-color: transparent;\n}\n.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader,\n.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader {\n animation: swiper-preloader-spin 1s infinite linear;\n}\n.swiper-lazy-preloader-white {\n --swiper-preloader-color: #fff;\n}\n.swiper-lazy-preloader-black {\n --swiper-preloader-color: #000;\n}\n@keyframes swiper-preloader-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n/* Slide styles end */\n.swiper-virtual .swiper-slide {\n -webkit-backface-visibility: hidden;\n transform: translateZ(0);\n}\n.swiper-virtual.swiper-css-mode .swiper-wrapper::after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n pointer-events: none;\n}\n.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after {\n height: 1px;\n width: var(--swiper-virtual-size);\n}\n.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after {\n width: 1px;\n height: var(--swiper-virtual-size);\n}\n:root {\n --swiper-navigation-size: 44px;\n /*\n --swiper-navigation-top-offset: 50%;\n --swiper-navigation-sides-offset: 10px;\n --swiper-navigation-color: var(--swiper-theme-color);\n */\n}\n.swiper-button-prev,\n.swiper-button-next {\n position: absolute;\n top: var(--swiper-navigation-top-offset, 50%);\n width: calc(var(--swiper-navigation-size) / 44 * 27);\n height: var(--swiper-navigation-size);\n margin-top: calc(0px - (var(--swiper-navigation-size) / 2));\n z-index: 10;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--swiper-navigation-color, var(--swiper-theme-color));\n}\n.swiper-button-prev.swiper-button-disabled,\n.swiper-button-next.swiper-button-disabled {\n opacity: 0.35;\n cursor: auto;\n pointer-events: none;\n}\n.swiper-button-prev.swiper-button-hidden,\n.swiper-button-next.swiper-button-hidden {\n opacity: 0;\n cursor: auto;\n pointer-events: none;\n}\n.swiper-navigation-disabled .swiper-button-prev,\n.swiper-navigation-disabled .swiper-button-next {\n display: none !important;\n}\n.swiper-button-prev svg,\n.swiper-button-next svg {\n width: 100%;\n height: 100%;\n object-fit: contain;\n transform-origin: center;\n}\n.swiper-rtl .swiper-button-prev svg,\n.swiper-rtl .swiper-button-next svg {\n transform: rotate(180deg);\n}\n.swiper-button-prev,\n.swiper-rtl .swiper-button-next {\n left: var(--swiper-navigation-sides-offset, 10px);\n right: auto;\n}\n.swiper-button-next,\n.swiper-rtl .swiper-button-prev {\n right: var(--swiper-navigation-sides-offset, 10px);\n left: auto;\n}\n.swiper-button-lock {\n display: none;\n}\n/* Navigation font start */\n.swiper-button-prev:after,\n.swiper-button-next:after {\n font-family: swiper-icons;\n font-size: var(--swiper-navigation-size);\n text-transform: none !important;\n letter-spacing: 0;\n font-variant: initial;\n line-height: 1;\n}\n.swiper-button-prev:after,\n.swiper-rtl .swiper-button-next:after {\n content: 'prev';\n}\n.swiper-button-next,\n.swiper-rtl .swiper-button-prev {\n right: var(--swiper-navigation-sides-offset, 10px);\n left: auto;\n}\n.swiper-button-next:after,\n.swiper-rtl .swiper-button-prev:after {\n content: 'next';\n}\n/* Navigation font end */\n:root {\n /*\n --swiper-pagination-color: var(--swiper-theme-color);\n --swiper-pagination-left: auto;\n --swiper-pagination-right: 8px;\n --swiper-pagination-bottom: 8px;\n --swiper-pagination-top: auto;\n --swiper-pagination-fraction-color: inherit;\n --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25);\n --swiper-pagination-progressbar-size: 4px;\n --swiper-pagination-bullet-size: 8px;\n --swiper-pagination-bullet-width: 8px;\n --swiper-pagination-bullet-height: 8px;\n --swiper-pagination-bullet-border-radius: 50%;\n --swiper-pagination-bullet-inactive-color: #000;\n --swiper-pagination-bullet-inactive-opacity: 0.2;\n --swiper-pagination-bullet-opacity: 1;\n --swiper-pagination-bullet-horizontal-gap: 4px;\n --swiper-pagination-bullet-vertical-gap: 6px;\n */\n}\n.swiper-pagination {\n position: absolute;\n text-align: center;\n transition: 300ms opacity;\n transform: translate3d(0, 0, 0);\n z-index: 10;\n}\n.swiper-pagination.swiper-pagination-hidden {\n opacity: 0;\n}\n.swiper-pagination-disabled > .swiper-pagination,\n.swiper-pagination.swiper-pagination-disabled {\n display: none !important;\n}\n/* Common Styles */\n.swiper-pagination-fraction,\n.swiper-pagination-custom,\n.swiper-horizontal > .swiper-pagination-bullets,\n.swiper-pagination-bullets.swiper-pagination-horizontal {\n bottom: var(--swiper-pagination-bottom, 8px);\n top: var(--swiper-pagination-top, auto);\n left: 0;\n width: 100%;\n}\n/* Bullets */\n.swiper-pagination-bullets-dynamic {\n overflow: hidden;\n font-size: 0;\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transform: scale(0.33);\n position: relative;\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {\n transform: scale(1);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {\n transform: scale(1);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {\n transform: scale(0.66);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {\n transform: scale(0.33);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {\n transform: scale(0.66);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {\n transform: scale(0.33);\n}\n.swiper-pagination-bullet {\n width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px));\n height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px));\n display: inline-block;\n border-radius: var(--swiper-pagination-bullet-border-radius, 50%);\n background: var(--swiper-pagination-bullet-inactive-color, #000);\n opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2);\n}\nbutton.swiper-pagination-bullet {\n border: none;\n margin: 0;\n padding: 0;\n box-shadow: none;\n -webkit-appearance: none;\n appearance: none;\n}\n.swiper-pagination-clickable .swiper-pagination-bullet {\n cursor: pointer;\n}\n.swiper-pagination-bullet:only-child {\n display: none !important;\n}\n.swiper-pagination-bullet-active {\n opacity: var(--swiper-pagination-bullet-opacity, 1);\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\n}\n.swiper-vertical > .swiper-pagination-bullets,\n.swiper-pagination-vertical.swiper-pagination-bullets {\n right: var(--swiper-pagination-right, 8px);\n left: var(--swiper-pagination-left, auto);\n top: 50%;\n transform: translate3d(0px, -50%, 0);\n}\n.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet,\n.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet {\n margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0;\n display: block;\n}\n.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,\n.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\n top: 50%;\n transform: translateY(-50%);\n width: 8px;\n}\n.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,\n.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n display: inline-block;\n transition: 200ms transform, 200ms top;\n}\n.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet,\n.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet {\n margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px);\n}\n.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,\n.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\n left: 50%;\n transform: translateX(-50%);\n white-space: nowrap;\n}\n.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,\n.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transition: 200ms transform, 200ms left;\n}\n.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transition: 200ms transform, 200ms right;\n}\n/* Fraction */\n.swiper-pagination-fraction {\n color: var(--swiper-pagination-fraction-color, inherit);\n}\n/* Progress */\n.swiper-pagination-progressbar {\n background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25));\n position: absolute;\n}\n.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n transform: scale(0);\n transform-origin: left top;\n}\n.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n transform-origin: right top;\n}\n.swiper-horizontal > .swiper-pagination-progressbar,\n.swiper-pagination-progressbar.swiper-pagination-horizontal,\n.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,\n.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite {\n width: 100%;\n height: var(--swiper-pagination-progressbar-size, 4px);\n left: 0;\n top: 0;\n}\n.swiper-vertical > .swiper-pagination-progressbar,\n.swiper-pagination-progressbar.swiper-pagination-vertical,\n.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,\n.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite {\n width: var(--swiper-pagination-progressbar-size, 4px);\n height: 100%;\n left: 0;\n top: 0;\n}\n.swiper-pagination-lock {\n display: none;\n}\n:root {\n /*\n --swiper-scrollbar-border-radius: 10px;\n --swiper-scrollbar-top: auto;\n --swiper-scrollbar-bottom: 4px;\n --swiper-scrollbar-left: auto;\n --swiper-scrollbar-right: 4px;\n --swiper-scrollbar-sides-offset: 1%;\n --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1);\n --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5);\n --swiper-scrollbar-size: 4px;\n */\n}\n.swiper-scrollbar {\n border-radius: var(--swiper-scrollbar-border-radius, 10px);\n position: relative;\n -ms-touch-action: none;\n background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1));\n}\n.swiper-scrollbar-disabled > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-disabled {\n display: none !important;\n}\n.swiper-horizontal > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-horizontal {\n position: absolute;\n left: var(--swiper-scrollbar-sides-offset, 1%);\n bottom: var(--swiper-scrollbar-bottom, 4px);\n top: var(--swiper-scrollbar-top, auto);\n z-index: 50;\n height: var(--swiper-scrollbar-size, 4px);\n width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%));\n}\n.swiper-vertical > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-vertical {\n position: absolute;\n left: var(--swiper-scrollbar-left, auto);\n right: var(--swiper-scrollbar-right, 4px);\n top: var(--swiper-scrollbar-sides-offset, 1%);\n z-index: 50;\n width: var(--swiper-scrollbar-size, 4px);\n height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%));\n}\n.swiper-scrollbar-drag {\n height: 100%;\n width: 100%;\n position: relative;\n background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5));\n border-radius: var(--swiper-scrollbar-border-radius, 10px);\n left: 0;\n top: 0;\n}\n.swiper-scrollbar-cursor-drag {\n cursor: move;\n}\n.swiper-scrollbar-lock {\n display: none;\n}\n/* Zoom container styles start */\n.swiper-zoom-container {\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n}\n.swiper-zoom-container > img,\n.swiper-zoom-container > svg,\n.swiper-zoom-container > canvas {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n}\n/* Zoom container styles end */\n.swiper-slide-zoomed {\n cursor: move;\n touch-action: none;\n}\n/* a11y */\n.swiper .swiper-notification {\n position: absolute;\n left: 0;\n top: 0;\n pointer-events: none;\n opacity: 0;\n z-index: -1000;\n}\n.swiper-free-mode > .swiper-wrapper {\n transition-timing-function: ease-out;\n margin: 0 auto;\n}\n.swiper-grid > .swiper-wrapper {\n flex-wrap: wrap;\n}\n.swiper-grid-column > .swiper-wrapper {\n flex-wrap: wrap;\n flex-direction: column;\n}\n.swiper-fade.swiper-free-mode .swiper-slide {\n transition-timing-function: ease-out;\n}\n.swiper-fade .swiper-slide {\n pointer-events: none;\n transition-property: opacity;\n}\n.swiper-fade .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-fade .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-fade .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-cube {\n overflow: visible;\n}\n.swiper-cube .swiper-slide {\n pointer-events: none;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n z-index: 1;\n visibility: hidden;\n transform-origin: 0 0;\n width: 100%;\n height: 100%;\n}\n.swiper-cube .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-cube.swiper-rtl .swiper-slide {\n transform-origin: 100% 0;\n}\n.swiper-cube .swiper-slide-active,\n.swiper-cube .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-cube .swiper-slide-active,\n.swiper-cube .swiper-slide-next,\n.swiper-cube .swiper-slide-prev {\n pointer-events: auto;\n visibility: visible;\n}\n.swiper-cube .swiper-cube-shadow {\n position: absolute;\n left: 0;\n bottom: 0px;\n width: 100%;\n height: 100%;\n opacity: 0.6;\n z-index: 0;\n}\n.swiper-cube .swiper-cube-shadow:before {\n content: '';\n background: #000;\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n filter: blur(50px);\n}\n.swiper-cube .swiper-slide-next + .swiper-slide {\n pointer-events: auto;\n visibility: visible;\n}\n/* Cube slide shadows start */\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top,\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right {\n z-index: 0;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n/* Cube slide shadows end */\n.swiper-flip {\n overflow: visible;\n}\n.swiper-flip .swiper-slide {\n pointer-events: none;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n z-index: 1;\n}\n.swiper-flip .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-flip .swiper-slide-active,\n.swiper-flip .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n/* Flip slide shadows start */\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top,\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right {\n z-index: 0;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n/* Flip slide shadows end */\n.swiper-creative .swiper-slide {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n overflow: hidden;\n transition-property: transform, opacity, height;\n}\n.swiper-cards {\n overflow: visible;\n}\n.swiper-cards .swiper-slide {\n transform-origin: center bottom;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n overflow: hidden;\n}\n\n/* === Photo Browser === */\n:root {\n --f7-photobrowser-bg-color: #fff;\n --f7-photobrowser-bars-bg-color: rgba(var(--f7-bars-bg-color-rgb), 0.95);\n --f7-photobrowser-bars-text-color: var(--f7-bars-text-color);\n --f7-photobrowser-bars-link-color: var(--f7-bars-link-color);\n --f7-photobrowser-caption-font-size: 13px;\n --f7-photobrowser-caption-font-weight: 500;\n --f7-photobrowser-caption-light-text-color: #000;\n --f7-photobrowser-caption-dark-text-color: #fff;\n --f7-photobrowser-exposed-bg-color: #000;\n --f7-photobrowser-dark-bg-color: #000;\n --f7-photobrowser-dark-bars-bg-color: rgba(27, 27, 27, 0.8);\n --f7-photobrowser-dark-bars-text-color: #fff;\n --f7-photobrowser-dark-bars-link-color: #fff;\n}\n.photo-browser {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 400;\n}\n.photo-browser-standalone.modal-in {\n transition-duration: 0ms;\n animation: photo-browser-in 400ms;\n}\n.photo-browser-standalone.modal-out {\n transition-duration: 0ms;\n animation: photo-browser-out 400ms !important;\n}\n.photo-browser-standalone.modal-out.swipe-close-to-bottom,\n.photo-browser-standalone.modal-out.swipe-close-to-top {\n animation: none !important;\n}\n.photo-browser-standalone.photo-browser-transitioning {\n transition: 400ms;\n animation: none !important;\n}\n.photo-browser-popup.modal-out.swipe-close-to-bottom,\n.photo-browser-popup.modal-out.swipe-close-to-top {\n transition-duration: 300ms;\n}\n.photo-browser-popup.modal-out.swipe-close-to-bottom {\n transform: translate3d(0, 100vh, 0);\n}\n.photo-browser-popup.modal-out.swipe-close-to-top {\n transform: translate3d(0, -100vh, 0);\n}\n.photo-browser-page {\n background: none;\n}\n.photo-browser-page .toolbar {\n transform: none;\n}\n.photo-browser-popup {\n background: none;\n}\n.photo-browser-of {\n margin: 0 5px;\n}\n.photo-browser-captions {\n pointer-events: none;\n position: absolute;\n left: 0;\n width: 100%;\n bottom: var(--f7-safe-area-bottom);\n z-index: 10;\n opacity: 1;\n transition-duration: 400ms;\n}\n.photo-browser-captions.photo-browser-captions-exposed {\n opacity: 0;\n}\n.toolbar ~ .toolbar.photo-browser-thumbs {\n bottom: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n}\n.page ~ .photo-browser-page:not(.photo-browser-exposed) .toolbar ~ .toolbar.photo-browser-thumbs,\n.photo-browser-popup:not(.photo-browser-exposed) .toolbar ~ .toolbar.photo-browser-thumbs,\n.photo-browser-standalone:not(.photo-browser-exposed) .toolbar ~ .toolbar.photo-browser-thumbs {\n height: var(--f7-toolbar-height);\n}\n.photo-browser-exposed .toolbar ~ .toolbar.photo-browser-thumbs {\n transform: translate3d(0, calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom, 0)), 0);\n}\n.photo-browser-exposed .toolbar ~ .toolbar.photo-browser-thumbs .swiper {\n height: calc(100% - var(--f7-safe-area-bottom, 0));\n}\n.navbar + .toolbar.photo-browser-thumbs .swiper {\n height: calc(100% - var(--f7-safe-area-bottom, 0));\n}\n.toolbar ~ .photo-browser-captions {\n bottom: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n transform: translate3d(0, 0px, 0);\n}\n.toolbar ~ .photo-browser-captions.photo-browser-captions-exposed {\n transform: translate3d(0, 0px, 0);\n}\n.toolbar ~ .toolbar ~ .photo-browser-captions {\n bottom: calc(var(--f7-toolbar-height) * 2 + var(--f7-safe-area-bottom));\n}\n.toolbar ~ .toolbar ~ .photo-browser-captions.photo-browser-captions-exposed {\n transform: translate3d(0, var(--f7-toolbar-height), 0);\n}\n.photo-browser-thumbs {\n transition-property: transform, background-color, color;\n}\n.photo-browser-thumbs .swiper {\n width: 100%;\n height: 100%;\n}\n.photo-browser-thumbs .swiper-slide {\n width: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.photo-browser-thumbs img {\n width: auto;\n height: 75%;\n display: block;\n border-radius: 2px;\n min-width: 4px;\n}\n.photo-browser-thumbs .swiper-slide img {\n transform: translateX(-4px);\n transition-duration: 150ms;\n}\n.photo-browser-thumbs .swiper-slide-active img {\n transform: scale(1.2);\n}\n.photo-browser-thumbs .swiper-slide-active ~ .swiper-slide img {\n transform: translateX(4px);\n}\n.photo-browser-caption {\n box-sizing: border-box;\n transition-duration: 400ms;\n position: absolute;\n bottom: 0;\n left: 0;\n opacity: 0;\n padding: 4px 5px;\n width: 100%;\n text-align: center;\n font-size: var(--f7-photobrowser-caption-font-size);\n font-weight: var(--f7-photobrowser-caption-font-weight);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .photo-browser-caption {\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.photo-browser-caption:empty {\n display: none;\n}\n.photo-browser-caption.photo-browser-caption-active {\n opacity: 1;\n}\n.photo-browser-captions-light .photo-browser-caption {\n color: var(--f7-photobrowser-caption-light-text-color);\n}\n.photo-browser-captions-dark .photo-browser-caption,\n.dark .photo-browser-caption {\n color: var(--f7-photobrowser-caption-dark-text-color);\n}\n.photo-browser-swiper-container {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n background: var(--f7-photobrowser-bg-color);\n transition: 400ms;\n transition-property: background-color;\n touch-action: none;\n}\n.photo-browser-prev.swiper-button-disabled,\n.photo-browser-next.swiper-button-disabled {\n opacity: 0.3;\n pointer-events: none;\n}\n.photo-browser-slide {\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n box-sizing: border-box;\n}\n.photo-browser-slide span.swiper-zoom-container {\n display: none;\n}\n.photo-browser-slide img {\n width: auto;\n height: auto;\n max-width: 100%;\n max-height: 100%;\n display: none;\n}\n.photo-browser-slide.swiper-slide-active span.swiper-zoom-container,\n.photo-browser-slide.swiper-slide-next span.swiper-zoom-container,\n.photo-browser-slide.swiper-slide-prev span.swiper-zoom-container {\n display: flex;\n}\n.photo-browser-slide.swiper-slide-active img,\n.photo-browser-slide.swiper-slide-next img,\n.photo-browser-slide.swiper-slide-prev img {\n display: inline;\n}\n.photo-browser-slide.swiper-slide-active.photo-browser-slide-lazy .preloader,\n.photo-browser-slide.swiper-slide-next.photo-browser-slide-lazy .preloader,\n.photo-browser-slide.swiper-slide-prev.photo-browser-slide-lazy .preloader {\n display: block;\n}\n.photo-browser-slide iframe {\n width: 100%;\n height: 100%;\n}\n.photo-browser-slide .preloader {\n display: none;\n position: absolute;\n width: 42px;\n height: 42px;\n margin-left: -21px;\n margin-top: -21px;\n left: 50%;\n top: 50%;\n}\n.navbar-photo-browser .right .link svg,\n.navbar-photo-browser .right .link i {\n width: 24px;\n height: 24px;\n display: block;\n}\n.photo-browser-page .navbar-bg,\n.navbar-photo-browser .navbar-bg,\n.photo-browser-page .toolbar,\n.photo-browser-caption {\n background-color: var(--f7-photobrowser-bars-bg-color, rgba(var(--f7-bars-bg-color-rgb), 0.95));\n}\n.photo-browser-page {\n touch-action: none;\n}\n.photo-browser-page .navbar,\n.photo-browser-page .toolbar {\n transform: translate3d(0, 0, 0);\n transition-duration: 400ms;\n color: var(--f7-photobrowser-bars-text-color, var(--f7-bars-text-color));\n}\n.photo-browser-page .navbar a,\n.photo-browser-page .toolbar a {\n color: var(--f7-photobrowser-bars-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.photo-browser-exposed .navbar,\n.photo-browser-exposed .toolbar:not(.photo-browser-thumbs) {\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n}\n.photo-browser-exposed .toolbar:not(.photo-browser-thumbs) ~ .photo-browser-captions,\n.photo-browser-exposed .toolbar ~ .toolbar.photo-browser-thumbs ~ .photo-browser-captions {\n transform: translate3d(0, var(--f7-toolbar-height), 0);\n}\n.photo-browser-exposed .photo-browser-swiper-container {\n background: var(--f7-photobrowser-exposed-bg-color);\n}\n.photo-browser-exposed .photo-browser-thumbs,\n.photo-browser-dark .photo-browser-thumbs,\n.photo-browser-exposed .toolbar,\n.photo-browser-dark .toolbar {\n background-color: var(--f7-photobrowser-dark-bars-bg-color);\n}\n.photo-browser-exposed .photo-browser-caption,\n.photo-browser-dark .photo-browser-caption {\n color: var(--f7-photobrowser-caption-dark-text-color);\n background-color: var(--f7-photobrowser-dark-bars-bg-color);\n}\n.view.with-photo-browser-page-exposed .navbar {\n opacity: 0;\n pointer-events: none;\n}\n.photo-browser-page .toolbar:before,\n.photo-browser-page .toolbar:after {\n display: none !important;\n}\n.photo-browser-page-dark .navbar-bg,\n.navbar-photo-browser-dark .navbar-bg {\n background: var(--f7-photobrowser-dark-bars-bg-color);\n}\n.photo-browser-page-dark .navbar-bg:before,\n.navbar-photo-browser-dark .navbar-bg:before,\n.photo-browser-page-dark .navbar-bg:after,\n.navbar-photo-browser-dark .navbar-bg:after {\n display: none !important;\n}\n.navbar-photo-browser-dark,\n.photo-browser-dark .navbar,\n.photo-browser-dark .toolbar,\n.photo-browser-page-dark .navbar,\n.photo-browser-page-dark .toolbar {\n color: var(--f7-photobrowser-dark-bars-text-color);\n}\n.navbar-photo-browser-dark a,\n.photo-browser-dark .navbar a,\n.photo-browser-dark .toolbar a,\n.photo-browser-page-dark .navbar a,\n.photo-browser-page-dark .toolbar a {\n color: var(--f7-photobrowser-dark-bars-link-color);\n}\n.photo-browser-dark .photo-browser-swiper-container,\n.photo-browser-page-dark .photo-browser-swiper-container {\n background: var(--f7-photobrowser-dark-bg-color);\n}\n@keyframes photo-browser-in {\n 0% {\n transform: translate3d(0, 0, 0) scale(0.5);\n opacity: 0;\n }\n 50% {\n transform: translate3d(0, 0, 0) scale(1.05);\n opacity: 1;\n }\n 100% {\n transform: translate3d(0, 0, 0) scale(1);\n opacity: 1;\n }\n}\n@keyframes photo-browser-out {\n 0% {\n transform: translate3d(0, 0, 0) scale(1);\n opacity: 1;\n }\n 50% {\n transform: translate3d(0, 0, 0) scale(1.05);\n opacity: 1;\n }\n 100% {\n transform: translate3d(0, 0, 0) scale(0.5);\n opacity: 0;\n }\n}\n/* === Notifications === */\n:root {\n --f7-notification-max-width: 568px;\n --f7-notification-subtitle-text-transform: none;\n --f7-notification-subtitle-line-height: 1.35;\n --f7-notification-text-text-transform: none;\n --f7-notification-text-font-weight: 400;\n}\n.ios {\n --f7-notification-margin: 8px;\n --f7-notification-padding-horizontal: 10px;\n --f7-notification-padding-vertical: 10px;\n --f7-notification-border-radius: 12px;\n --f7-notification-box-shadow: 0px 5px 25px -10px rgba(0, 0, 0, 0.7);\n --f7-notification-icon-size: 20px;\n --f7-notification-title-font-size: 13px;\n --f7-notification-title-text-transform: uppercase;\n --f7-notification-title-line-height: 1.4;\n --f7-notification-title-font-weight: 400;\n --f7-notification-title-letter-spacing: 0.02em;\n --f7-notification-title-right-font-size: 13px;\n --f7-notification-subtitle-font-size: 15px;\n --f7-notification-subtitle-font-weight: 600;\n --f7-notification-text-font-size: 15px;\n --f7-notification-text-line-height: 1.2;\n --f7-notification-bg-color: rgba(250, 250, 250, 0.95);\n --f7-notification-bg-color-rgb: 255, 255, 255;\n --f7-notification-title-color: #000;\n --f7-notification-title-right-color: rgba(0, 0, 0, 0.45);\n --f7-notification-subtitle-color: #000;\n --f7-notification-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-notification-bg-color: rgba(30, 30, 30, 0.95);\n --f7-notification-bg-color-rgb: 30, 30, 30;\n --f7-notification-title-color: #fff;\n --f7-notification-text-color: #fff;\n --f7-notification-subtitle-color: #fff;\n --f7-notification-title-right-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-notification-margin: 16px;\n --f7-notification-padding-vertical: 20px;\n --f7-notification-padding-horizontal: 16px;\n --f7-notification-border-radius: 16px;\n --f7-notification-box-shadow: none;\n --f7-notification-icon-size: 24px;\n --f7-notification-title-font-size: 16px;\n --f7-notification-title-text-transform: none;\n --f7-notification-title-line-height: 1.35;\n --f7-notification-title-font-weight: 500;\n --f7-notification-title-right-font-size: 12px;\n --f7-notification-subtitle-font-size: 14px;\n --f7-notification-subtitle-font-weight: 400;\n --f7-notification-text-font-size: 14px;\n --f7-notification-text-line-height: 1.35;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-notification-title-color: var(--f7-md-on-surface);\n --f7-notification-bg-color: var(--f7-md-surface-5);\n --f7-notification-text-color: var(--f7-md-on-surface-variant);\n --f7-notification-title-right-color: var(--f7-md-on-surface-variant);\n --f7-notification-subtitle-color: var(--f7-md-on-surface);\n}\n.notification {\n position: absolute;\n left: var(--f7-notification-margin);\n top: var(--f7-notification-margin);\n width: calc(100% - var(--f7-notification-margin) * 2);\n z-index: 20000;\n font-size: 14px;\n margin: 0;\n border: none;\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n direction: ltr;\n max-width: var(--f7-notification-max-width);\n padding: var(--f7-notification-padding-vertical) var(--f7-notification-padding-horizontal);\n border-radius: var(--f7-notification-border-radius);\n box-shadow: var(--f7-notification-box-shadow);\n background: var(--f7-notification-bg-color);\n margin-top: var(--f7-safe-area-top);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .notification {\n background-color: rgba(var(--f7-notification-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n@media (min-width: 568px) {\n .notification {\n left: 50%;\n width: var(--f7-notification-max-width);\n margin-left: calc(-1 * var(--f7-notification-max-width) / 2);\n }\n}\n.notification-title {\n color: var(--f7-notification-title-color, var(--f7-theme-color));\n font-size: var(--f7-notification-title-font-size);\n text-transform: var(--f7-notification-title-text-transform);\n line-height: var(--f7-notification-title-line-height);\n font-weight: var(--f7-notification-title-font-weight);\n letter-spacing: var(--f7-notification-title-letter-spacing);\n}\n.notification-subtitle {\n color: var(--f7-notification-subtitle-color);\n font-size: var(--f7-notification-subtitle-font-size);\n text-transform: var(--f7-notification-subtitle-text-transform);\n line-height: var(--f7-notification-subtitle-line-height);\n font-weight: var(--f7-notification-subtitle-font-weight);\n}\n.notification-text {\n color: var(--f7-notification-text-color);\n font-size: var(--f7-notification-text-font-size);\n text-transform: var(--f7-notification-text-text-transform);\n line-height: var(--f7-notification-text-line-height);\n font-weight: var(--f7-notification-text-font-weight);\n}\n.notification-title-right-text {\n color: var(--f7-notification-title-right-color);\n font-size: var(--f7-notification-title-right-font-size);\n}\n.notification-icon {\n font-size: 0;\n line-height: var(--f7-notification-icon-size);\n}\n.notification-icon i,\n.notification-icon {\n width: var(--f7-notification-icon-size) !important;\n height: var(--f7-notification-icon-size) !important;\n}\n.notification-icon i {\n font-size: var(--f7-notification-icon-size);\n}\n.notification-icon img {\n height: var(--f7-notification-icon-size);\n}\n.notification-header {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.notification-close-button {\n margin-left: auto;\n cursor: pointer;\n position: relative;\n}\n.notification-close-button:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n left: 50%;\n top: 50%;\n text-align: center;\n}\n.ios .notification {\n transition-duration: 450ms;\n transform: translate3d(0%, -200%, 0);\n}\n.ios .notification.modal-in {\n transform: translate3d(0%, 0%, 0);\n opacity: 1;\n}\n.ios .notification.modal-out {\n transform: translate3d(0%, -200%, 0);\n}\n.ios .notification-icon {\n margin-right: 8px;\n}\n.ios .notification-header + .notification-content {\n margin-top: 10px;\n}\n.ios .notification-title-right-text {\n margin-right: 6px;\n margin-left: auto;\n}\n.ios .notification-title-right-text + .notification-close-button {\n margin-left: 10px;\n}\n.ios .notification-close-button {\n font-size: 14px;\n width: 20px;\n height: 20px;\n opacity: 0.3;\n transition-duration: 300ms;\n}\n.ios .notification-close-button.active-state {\n transition-duration: 0ms;\n opacity: 0.1;\n}\n.ios .notification-close-button:after {\n color: #000;\n content: 'notification_close_ios';\n font-size: 0.65em;\n line-height: 44px;\n width: 44px;\n height: 44px;\n margin-left: -22px;\n margin-top: -22px;\n}\n.ios .dark .notification-close-button:after,\n.ios.dark .notification-close-button:after {\n color: #fff;\n}\n.md .notification {\n transform: translate3d(0, -150%, 0);\n}\n.md .notification.modal-in {\n transition-duration: 500ms;\n transform: translate3d(0, 0%, 0);\n transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n}\n.md .notification.modal-in.notification-transitioning {\n transition-duration: 200ms;\n}\n.md .notification.modal-out {\n animation: none;\n transition-duration: 200ms;\n transition-timing-function: ease-in;\n transform: translate3d(0, -150%, 0);\n}\n.md .notification-with-icon .notification-icon {\n position: absolute;\n left: var(--f7-notification-padding-horizontal);\n top: var(--f7-notification-padding-vertical);\n}\n.md .notification-with-icon .notification-content,\n.md .notification-with-icon .notification-header {\n margin-left: calc(var(--f7-notification-icon-size) + 16px);\n}\n.md .notification-icon {\n margin-right: 8px;\n}\n.md .notification-subtitle + .notification-text {\n margin-top: 4px;\n}\n.md .notification-header + .notification-content {\n margin-top: 8px;\n}\n.md .notification-title-right-text {\n margin-left: 4px;\n}\n.md .notification-title-right-text:before {\n content: '';\n width: 3px;\n height: 3px;\n border-radius: 50%;\n display: inline-block;\n vertical-align: middle;\n margin-right: 4px;\n background: var(--f7-notification-title-right-color);\n}\n.md .notification-close-button {\n width: 16px;\n height: 16px;\n transition-duration: 300ms;\n}\n.md .notification-close-button:before,\n.md .notification-close-button:after {\n width: 48px;\n height: 48px;\n left: 50%;\n top: 50%;\n margin-left: -24px;\n margin-top: -24px;\n}\n.md .notification-close-button:after {\n color: var(--f7-md-on-surface-variant);\n content: 'delete_round_md';\n line-height: 48px;\n font-size: 24px;\n}\n@keyframes notification-md-in {\n 0% {\n transform: translate3d(0, -150%, 0);\n }\n 50% {\n transform: translate3d(0, 10%, 0);\n }\n 100% {\n transform: translate3d(0, 0%, 0);\n }\n}\n/* === Autocomplete === */\n:root {\n --f7-autocomplete-dropdown-placeholder-color: #a9a9a9;\n --f7-autocomplete-dropdown-preloader-size: 20px;\n --f7-autocomplete-dropdown-font-size: var(--f7-list-font-size);\n /*\n --f7-autocomplete-dropdown-selected-bg-color: rgba(var(--f7-theme-color-rgb), 0.2);\n */\n}\n.ios {\n --f7-autocomplete-dropdown-box-shadow: 0px 3px 3px rgba(0, 0, 0, 0.2);\n --f7-autocomplete-dropdown-text-matching-font-weight: 600;\n --f7-autocomplete-dropdown-bg-color: #fff;\n --f7-autocomplete-dropdown-text-color: #000;\n --f7-autocomplete-dropdown-text-matching-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-autocomplete-dropdown-bg-color: #1c1c1d;\n --f7-autocomplete-dropdown-text-color: #fff;\n --f7-autocomplete-dropdown-text-matching-color: #fff;\n}\n.md {\n --f7-autocomplete-dropdown-box-shadow: none;\n --f7-autocomplete-dropdown-text-matching-font-weight: 500;\n --f7-autocomplete-dropdown-text-matching-color: #000;\n}\n.md .dark,\n.md.dark {\n --f7-autocomplete-dropdown-text-matching-color: #fff;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-autocomplete-dropdown-bg-color: var(--f7-md-surface-2);\n --f7-autocomplete-dropdown-text-color: var(--f7-md-on-surface);\n}\n.autocomplete-page .autocomplete-found {\n display: block;\n}\n.autocomplete-page .autocomplete-not-found {\n display: none;\n}\n.autocomplete-page .autocomplete-values {\n display: block;\n}\n.autocomplete-page .list ul:empty {\n display: none;\n}\n.autocomplete-preloader:not(.autocomplete-preloader-visible) {\n visibility: hidden;\n}\n.autocomplete-preloader:not(.autocomplete-preloader-visible),\n.autocomplete-preloader:not(.autocomplete-preloader-visible) * {\n animation: none;\n}\n.autocomplete-dropdown {\n background: var(--f7-autocomplete-dropdown-bg-color);\n box-shadow: var(--f7-autocomplete-dropdown-box-shadow);\n box-sizing: border-box;\n position: absolute;\n z-index: 500;\n width: 100%;\n right: 0;\n}\n.autocomplete-dropdown .autocomplete-dropdown-inner {\n position: relative;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n height: 100%;\n z-index: 1;\n}\n.autocomplete-dropdown .autocomplete-preloader {\n display: none;\n position: absolute;\n bottom: 100%;\n width: var(--f7-autocomplete-dropdown-preloader-size);\n height: var(--f7-autocomplete-dropdown-preloader-size);\n}\n.autocomplete-dropdown .autocomplete-preloader-visible {\n display: block;\n}\n.autocomplete-dropdown .autocomplete-dropdown-placeholder {\n color: var(--f7-autocomplete-dropdown-placeholder-color);\n}\n.autocomplete-dropdown .list {\n margin: 0;\n color: var(--f7-autocomplete-dropdown-text-color);\n font-size: var(--f7-autocomplete-dropdown-font-size);\n}\n.autocomplete-dropdown .list b {\n color: var(--f7-autocomplete-dropdown-text-matching-color);\n font-weight: var(--f7-autocomplete-dropdown-text-matching-font-weight);\n}\n.autocomplete-dropdown .list ul {\n background: none !important;\n}\n.autocomplete-dropdown .list ul:before,\n.autocomplete-dropdown .list ul:after {\n display: none !important;\n}\n.autocomplete-dropdown .autocomplete-dropdown-selected {\n background: var(--f7-autocomplete-dropdown-selected-bg-color, rgba(var(--f7-theme-color-rgb), 0.2));\n}\n.searchbar-input-wrap .autocomplete-dropdown {\n background-color: var(--f7-searchbar-input-bg-color, var(--f7-searchbar-bg-color));\n border-radius: var(--f7-searchbar-input-border-radius);\n margin-top: calc(-1 * var(--f7-searchbar-input-height));\n top: 100%;\n z-index: -1;\n}\n.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-inner {\n padding-top: var(--f7-searchbar-input-height);\n}\n.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-placeholder {\n color: var(--f7-searchbar-placeholder-color);\n}\n.searchbar-input-wrap .autocomplete-dropdown li:last-child {\n border-radius: 0 0 var(--f7-searchbar-input-border-radius) var(--f7-searchbar-input-border-radius);\n position: relative;\n overflow: hidden;\n}\n.searchbar-input-wrap .autocomplete-dropdown .item-content {\n padding-right: calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px));\n}\n.ios .autocomplete-dropdown .autocomplete-preloader {\n left: 16px;\n margin-bottom: 12px;\n}\n.md .autocomplete-page .navbar .autocomplete-preloader {\n margin-left: 8px;\n}\n.md .autocomplete-popup .navbar .autocomplete-preloader {\n margin-right: 8px;\n margin-left: 16px;\n}\n.md .autocomplete-dropdown .autocomplete-preloader {\n left: 16px;\n margin-bottom: 8px;\n}\n.md .autocomplete-dropdown .autocomplete-preloader circle {\n stroke-width: 3;\n}\n/* === Tooltip === */\n:root {\n --f7-tooltip-padding: 8px 16px;\n --f7-tooltip-font-size: 14px;\n --f7-tooltip-font-weight: 500;\n --f7-tooltip-desktop-padding: 6px 8px;\n --f7-tooltip-desktop-font-size: 12px;\n}\n.ios {\n --f7-tooltip-border-radius: 4px;\n --f7-tooltip-bg-color: rgba(0, 0, 0, 0.87);\n --f7-tooltip-text-color: #fff;\n}\n.md {\n --f7-tooltip-border-radius: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-tooltip-bg-color: var(--f7-md-secondary);\n --f7-tooltip-text-color: var(--f7-md-on-secondary);\n}\n.tooltip {\n position: absolute;\n z-index: 20000;\n background: var(--f7-tooltip-bg-color);\n border-radius: var(--f7-tooltip-border-radius);\n padding: var(--f7-tooltip-padding);\n color: var(--f7-tooltip-text-color);\n font-size: var(--f7-tooltip-font-size);\n font-weight: var(--f7-tooltip-font-weight);\n box-sizing: border-box;\n line-height: 1.2;\n opacity: 0;\n transform: scale(0.9);\n transition-duration: 150ms;\n transition-property: opacity, transform;\n z-index: 99000;\n}\n.tooltip.tooltip-in {\n transform: scale(1);\n opacity: 1;\n}\n.tooltip.tooltip-out {\n opacity: 0;\n transform: scale(1);\n}\n.device-desktop .tooltip {\n font-size: var(--f7-tooltip-desktop-font-size);\n padding: var(--f7-tooltip-desktop-padding);\n}\n/* === Gauge === */\n.gauge {\n position: relative;\n text-align: center;\n margin-left: auto;\n margin-right: auto;\n display: inline-block;\n}\n.gauge-svg,\n.gauge svg {\n max-width: 100%;\n height: auto;\n}\n.gauge-svg circle,\n.gauge svg circle,\n.gauge-svg path,\n.gauge svg path {\n transition-duration: 400ms;\n}\n/* === Skeleton === */\n:root {\n --skeleton-color: #ccc;\n --skeleton-icon-color: rgba(0, 0, 0, 0.25);\n}\n\n.skeleton-block {\n height: 1em;\n background: var(--skeleton-color) !important;\n width: 100%;\n display: block;\n}\n\n@font-face {\n font-family: \"skeleton\";\n src: url(\"data:application/font-woff;charset=utf-8;base64,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\") format(\"woff\");\n font-weight: 100, 200, 300, 400, 500, 600, 700, 800, 900;\n font-style: normal, italic;\n font-display: block;\n}\n.skeleton-text {\n font-family: \"skeleton\" !important;\n -webkit-user-select: none;\n user-select: none;\n}\n.skeleton-text, .skeleton-text * {\n color: var(--skeleton-color) !important;\n letter-spacing: -0.03em !important;\n}\n\n.skeleton-image {\n display: inline-block;\n}\n.skeleton-image svg {\n max-width: 100%;\n height: auto;\n}\n.skeleton-image polygon {\n fill: var(--skeleton-color);\n}\n.skeleton-image path {\n fill: var(--skeleton-icon-color);\n}\n\n.skeleton-avatar {\n display: inline-block;\n}\n.skeleton-avatar svg {\n max-width: 100%;\n height: auto;\n}\n.skeleton-avatar rect {\n fill: var(--skeleton-color);\n}\n.skeleton-avatar path {\n fill: var(--skeleton-icon-color);\n}\n\n.skeleton-effect-blink, .skeleton-effect-wave {\n -webkit-mask-image: linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%);\n mask-image: linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%);\n -webkit-mask-size: 200% 100%;\n mask-size: 200% 100%;\n -webkit-mask-repeat: repeat;\n mask-repeat: repeat;\n -webkit-mask-position: 50% top;\n mask-position: 50% top;\n animation: skeleton-effect-wave 1s infinite;\n}\n.skeleton-effect-fade {\n animation: skeleton-effect-fade 1s infinite;\n}\n.skeleton-effect-pulse {\n animation: skeleton-effect-pulse 1s infinite;\n}\n\n@keyframes skeleton-effect-fade {\n 0% {\n opacity: 1;\n }\n 50% {\n opacity: 0.2;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes skeleton-effect-wave {\n 0% {\n -webkit-mask-position: 50% top;\n mask-position: 50% top;\n }\n 100% {\n -webkit-mask-position: -150% top;\n mask-position: -150% top;\n }\n}\n@keyframes skeleton-effect-pulse {\n 0% {\n transform: scale(1);\n }\n 40% {\n transform: scale(1);\n }\n 50% {\n transform: scale(0.975);\n }\n 100% {\n transform: scale(1);\n }\n}\n:root {\n --skeleton-color: #ccc;\n --skeleton-icon-color: rgba(0, 0, 0, 0.25);\n}\n.dark {\n --skeleton-color: #515151;\n --skeleton-icon-color: rgba(255, 255, 255, 0.25);\n}\n/* === Color Picker === */\n:root {\n --f7-color-picker-popover-width: 350px;\n --f7-color-picker-slider-size: 6px;\n --f7-color-picker-slider-knob-size: 16px;\n --f7-color-picker-bar-size: 50px;\n --f7-color-picker-bar-min-height: 260px;\n --f7-color-picker-value-width: 64px;\n --f7-color-picker-value-height: 32px;\n --f7-color-picker-value-font-size: 16px;\n --f7-color-picker-value-border-radius: 4px;\n --f7-color-picker-hex-value-width: 84px;\n --f7-color-picker-label-font-size: 14px;\n --f7-color-picker-label-width: 10px;\n --f7-color-picker-label-height: 14px;\n --f7-color-picker-sb-spectrum-height: 260px;\n --f7-color-picker-sb-spectrum-handle-size: 16px;\n --f7-color-picker-wheel-width: 330px;\n --f7-color-picker-palette-value-width: 36px;\n --f7-color-picker-palette-value-height: 36px;\n --f7-color-picker-initial-current-color-height: 40px;\n --f7-color-picker-initial-current-color-border-radius: 4px;\n --f7-color-picker-sheet-bg-color: #fff;\n --f7-color-picker-popup-bg-color: #fff;\n --f7-color-picker-value-bg-color: rgba(0, 0, 0, 0.05);\n --f7-color-picker-group-bg-color: rgba(0, 0, 0, 0.05);\n --f7-color-picker-group-value-bg-color: #fff;\n}\n:root .dark,\n:root.dark {\n --f7-color-picker-sheet-bg-color: #121212;\n --f7-color-picker-popup-bg-color: #121212;\n --f7-color-picker-value-bg-color: rgba(255, 255, 255, 0.1);\n --f7-color-picker-group-bg-color: #000;\n --f7-color-picker-group-value-bg-color: rgba(255, 255, 255, 0.12);\n}\n.color-picker {\n overflow: hidden;\n width: 100%;\n display: flex;\n flex-direction: column;\n}\n.color-picker.color-picker-inline,\n.color-picker-popover .color-picker,\n.color-picker-popup .color-picker {\n position: relative;\n}\n.color-picker-sheet-modal {\n background: var(--f7-color-picker-sheet-bg-color);\n}\n.color-picker-sheet-modal:before {\n z-index: 600;\n}\n.color-picker-sheet-modal .sheet-modal-inner {\n margin-bottom: var(--f7-safe-area-bottom);\n}\n.color-picker-popup .page {\n background: var(--f7-color-picker-popup-bg-color);\n}\n.color-picker-popup .page-content {\n padding-bottom: var(--f7-safe-area-bottom);\n}\n.color-picker-popover .color-picker,\n.color-picker-popup .color-picker,\n.color-picker-page .color-picker {\n height: 100%;\n}\n.color-picker-popover .color-picker .toolbar,\n.color-picker-popup .color-picker .toolbar,\n.color-picker-page .color-picker .toolbar {\n position: absolute;\n}\n.color-picker-popover {\n width: var(--f7-color-picker-popover-width);\n max-width: 90vw;\n max-height: 80vh;\n}\n.md .color-picker-popover .popover-inner {\n padding: 8px;\n}\n.color-picker-popover .color-picker {\n max-height: 80vh;\n}\n.color-picker-popover .toolbar-top {\n border-top-left-radius: var(--f7-popover-border-radius);\n border-top-right-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .color-picker-module-palette {\n overflow: hidden;\n flex-shrink: 0;\n}\n.color-picker-popover .color-picker-module-palette:first-child {\n border-top-left-radius: var(--f7-popover-border-radius);\n border-top-right-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .color-picker-module-palette:last-child {\n border-bottom-left-radius: var(--f7-popover-border-radius);\n border-bottom-right-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .color-picker-module-palette:first-child:last-child {\n border-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .toolbar ~ .page-content .color-picker-module-palette:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.color-picker-popup .page-content,\n.color-picker-popover .page-content,\n.color-picker-sheet-modal .page-content,\n.color-picker-page .page-content {\n display: flex;\n justify-content: flex-start;\n align-items: stretch;\n flex-direction: column;\n overflow-x: hidden;\n}\n.color-picker-module {\n margin-top: 5px;\n}\n.color-picker-module:last-child {\n margin-bottom: 5px;\n}\n.color-picker-module-sb-spectrum,\n.color-picker-module-hs-spectrum {\n margin-left: 10px;\n margin-right: 10px;\n}\n.color-picker-module-sb-spectrum:first-child,\n.color-picker-module-hs-spectrum:first-child {\n margin-top: 10px;\n}\n.color-picker-module-sb-spectrum .color-picker-sb-spectrum,\n.color-picker-module-hs-spectrum .color-picker-sb-spectrum,\n.color-picker-module-sb-spectrum .color-picker-hs-spectrum,\n.color-picker-module-hs-spectrum .color-picker-hs-spectrum {\n height: var(--f7-color-picker-sb-spectrum-height);\n}\n.ios .color-picker-module-sb-spectrum .color-picker-sb-spectrum,\n.ios .color-picker-module-hs-spectrum .color-picker-sb-spectrum,\n.ios .color-picker-module-sb-spectrum .color-picker-hs-spectrum,\n.ios .color-picker-module-hs-spectrum .color-picker-hs-spectrum {\n border-radius: 4px;\n}\n.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum,\n.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum,\n.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum,\n.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum {\n border-radius: 12px;\n}\n.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum::after,\n.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum::after,\n.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum::after,\n.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum::after {\n border-radius: inherit;\n}\n.color-picker-sb-spectrum {\n background-color: #000;\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, #000 100%), linear-gradient(to left, rgba(255, 255, 255, 0) 0%, #fff 100%);\n position: relative;\n}\n.color-picker-hs-spectrum {\n position: relative;\n background-image: linear-gradient(to right, hsl(0, 100%, 50%), hsl(60, 100%, 50%), hsl(120, 100%, 50%), hsl(180, 100%, 50%), hsl(240, 100%, 50%), hsl(300, 100%, 50%), hsl(0, 100%, 50%));\n}\n.color-picker-hs-spectrum:after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), #ffffff);\n}\n.color-picker-sb-spectrum-handle,\n.color-picker-hs-spectrum-handle {\n width: 4px;\n height: 4px;\n position: absolute;\n left: -2px;\n top: -2px;\n z-index: 1;\n}\n.color-picker-sb-spectrum-handle:after,\n.color-picker-hs-spectrum-handle:after {\n background-color: inherit;\n content: '';\n position: absolute;\n width: var(--f7-color-picker-sb-spectrum-handle-size);\n height: var(--f7-color-picker-sb-spectrum-handle-size);\n border: 1px solid #fff;\n border-radius: 50%;\n box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.5);\n box-sizing: border-box;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n transition: 150ms;\n transition-property: transform;\n transform-origin: center;\n}\n.color-picker-sb-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after,\n.color-picker-hs-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after,\n.color-picker-sb-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,\n.color-picker-hs-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after {\n transform: scale(1.5) translate(-33.333%, -33.333%);\n}\n.color-picker-module-wheel {\n margin-left: 10px;\n margin-right: 10px;\n}\n.color-picker-wheel {\n position: relative;\n width: var(--f7-color-picker-wheel-width);\n max-width: 100%;\n height: auto;\n font-size: 0;\n margin-left: auto;\n margin-right: auto;\n}\n.color-picker-wheel svg {\n width: 100%;\n height: auto;\n}\n.color-picker-wheel .color-picker-wheel-handle {\n width: 16.66666667%;\n height: 16.66666667%;\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #fff;\n box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5);\n background: red;\n border-radius: 50%;\n left: 0;\n top: 0;\n}\n.color-picker-wheel .color-picker-sb-spectrum {\n width: 45%;\n height: 45%;\n left: 50%;\n top: 50%;\n transform: translate3d(-50%, -50%, 0);\n position: absolute;\n}\n.color-picker-slider-wrap {\n display: flex;\n align-items: center;\n margin-bottom: 2px;\n}\n.color-picker-slider-wrap + .color-picker-slider-wrap {\n margin-top: 5px;\n}\n.color-picker-hex-wrap {\n justify-content: space-between;\n display: flex;\n align-items: center;\n}\n.color-picker-slider-label,\n.color-picker-hex-label {\n font-size: var(--f7-color-picker-label-font-size);\n width: var(--f7-color-picker-label-size);\n flex-shrink: 0;\n margin-left: 12px;\n}\n.color-picker-hex-label {\n width: auto;\n}\n.color-picker-bar-value,\n.color-picker-slider-value,\n.color-picker-hex-value {\n width: var(--f7-color-picker-value-width);\n height: var(--f7-color-picker-value-height);\n background: var(--f7-color-picker-value-bg-color);\n border-radius: var(--f7-color-picker-value-border-radius);\n text-align: center;\n font-size: var(--f7-color-picker-value-font-size);\n display: flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n margin-right: 10px;\n}\n.color-picker-bar-value input,\n.color-picker-slider-value input,\n.color-picker-hex-value input {\n width: 100%;\n height: 100%;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n outline: 0;\n background: transparent;\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n text-align: center;\n display: block;\n border-radius: 4px;\n}\n.color-picker-bar-value input::-webkit-inner-spin-button,\n.color-picker-slider-value input::-webkit-inner-spin-button,\n.color-picker-hex-value input::-webkit-inner-spin-button,\n.color-picker-bar-value input::-webkit-outer-spin-button,\n.color-picker-slider-value input::-webkit-outer-spin-button,\n.color-picker-hex-value input::-webkit-outer-spin-button {\n -webkit-appearance: none;\n appearance: none;\n margin: 0;\n display: none;\n}\n.color-picker-hex-value {\n width: var(--f7-color-picker-hex-value-width);\n}\n.color-picker-hex-value:first-child {\n margin-right: auto;\n}\n.color-picker-slider {\n --f7-range-bar-active-bg-color: transparent;\n --f7-range-bar-size: var(--f7-color-picker-slider-size);\n --f7-range-bar-border-radius: var(--f7-color-picker-slider-size);\n --f7-range-knob-size: var(--f7-color-picker-slider-knob-size);\n --f7-range-knob-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n}\n.color-picker-slider .range-knob {\n transition-duration: 200ms;\n transition-property: transform;\n}\n.color-picker-slider .range-knob:after {\n width: 30px;\n height: 30px;\n margin-left: -16px;\n margin-top: -16px;\n}\n.color-picker-slider .range-knob-active-state .range-knob {\n transform: scale(1.5);\n}\n.md .color-picker-slider.range-slider-min:not(.range-slider-dual) .range-knob {\n background: var(--f7-range-knob-color) !important;\n border: none;\n}\n.color-picker-module-rgb-bars {\n display: flex;\n justify-content: space-around;\n justify-content: space-evenly;\n align-items: stretch;\n height: 100%;\n min-height: var(--f7-color-picker-bar-min-height);\n padding-bottom: 10px;\n padding-top: 10px;\n box-sizing: border-box;\n}\n.color-picker-bar-wrap {\n display: flex;\n align-items: center;\n flex-direction: column-reverse;\n}\n.color-picker-bar {\n --f7-range-bar-active-bg-color: transparent;\n --f7-range-bar-size: var(--f7-color-picker-bar-size);\n --f7-range-bar-border-radius: 2px;\n --f7-range-knob-size: 6px;\n --f7-range-knob-box-shadow: 0 0px 3px rgba(0, 0, 0, 0.3);\n --f7-range-knob-color: #fff;\n}\n.color-picker-bar .range-knob {\n transition-duration: 0ms;\n transition-property: transform;\n border-radius: 3px;\n}\n.color-picker-bar .range-knob-wrap {\n height: 6px;\n width: calc(var(--f7-color-picker-bar-size) - 4px);\n margin-left: calc(-0.5 * (var(--f7-color-picker-bar-size) - 4px));\n}\n.color-picker-bar .range-knob-active-state .range-knob {\n transform: scale(1);\n}\n.md .color-picker-bar.range-slider-min:not(.range-slider-dual) .range-knob {\n background: var(--f7-range-knob-color) !important;\n border: none;\n}\n.color-picker-bar-label {\n font-size: var(--f7-color-picker-label-size);\n margin-top: 12px;\n line-height: 1;\n height: var(--f7-color-picker-label-height);\n flex-shrink: 0;\n}\n.color-picker-bar-value {\n margin-left: 0;\n margin-bottom: 10px;\n}\n.color-picker-slider-alpha {\n --f7-range-knob-color: #fff;\n}\n.color-picker-slider-alpha .range-bar {\n background-image: linear-gradient(to left, rgba(0, 0, 0, 0), #000), linear-gradient(to right, rgba(255, 255, 255, 0.2) 50%, rgba(0, 0, 0, 0.2) 50%), linear-gradient(to left, rgba(255, 255, 255, 0.2) 50%, rgba(0, 0, 0, 0.2) 50%);\n background-size: 100% 100%,\n 6px 3px,\n 6px 3px;\n background-position: 0 0,\n 0px 3px,\n 0 0;\n background-repeat: repeat-y, repeat-x, repeat-x;\n}\n.color-picker-slider-hue .range-bar {\n background-image: linear-gradient(to left, hsl(0, 100%, 50%), hsl(60, 100%, 50%), hsl(120, 100%, 50%), hsl(180, 100%, 50%), hsl(240, 100%, 50%), hsl(300, 100%, 50%), hsl(0, 100%, 50%));\n}\n.color-picker-slider-brightness .range-bar {\n background-image: linear-gradient(to left, #000, #fff);\n}\n.color-picker-module-palette {\n margin-top: 16px;\n}\n.color-picker-module-palette:first-child {\n margin-top: 0;\n}\n.color-picker-module-palette:last-child {\n margin-bottom: 0;\n}\n.color-picker-module-palette:first-child:last-child {\n margin: 0;\n}\n.color-picker-palette {\n display: flex;\n flex-wrap: wrap;\n}\n.color-picker-palette-row {\n width: 100%;\n display: flex;\n flex-wrap: nowrap;\n}\n.color-picker-palette-row .color-picker-palette-value {\n width: 100%;\n}\n.color-picker-palette-value {\n width: var(--f7-color-picker-palette-value-width);\n height: var(--f7-color-picker-palette-value-height);\n cursor: pointer;\n}\n.color-picker-module-initial-current-colors,\n.color-picker-module-current-color {\n margin-left: 10px;\n margin-right: 10px;\n border-radius: var(--f7-color-picker-initial-current-color-border-radius);\n overflow: hidden;\n flex-shrink: 0;\n}\n.color-picker-initial-color,\n.color-picker-current-color {\n height: var(--f7-color-picker-initial-current-color-height);\n}\n.color-picker-initial-current-colors {\n display: flex;\n}\n.color-picker-initial-current-colors .color-picker-initial-color,\n.color-picker-initial-current-colors .color-picker-current-color {\n width: 50%;\n}\n.color-picker-module-rgb-sliders,\n.color-picker-module-hsb-sliders,\n.color-picker-module-alpha-slider,\n.color-picker-module-hue-slider,\n.color-picker-module-brightness-slider,\n.color-picker-module-hex {\n margin-left: 10px;\n margin-right: 10px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders,\n.color-picker-grouped-modules .color-picker-module-alpha-slider,\n.color-picker-grouped-modules .color-picker-module-hue-slider,\n.color-picker-grouped-modules .color-picker-module-brightness-slider,\n.color-picker-grouped-modules .color-picker-module-hex {\n background: var(--f7-color-picker-group-bg-color);\n padding: 8px;\n border-radius: 8px;\n margin-top: 16px;\n margin-left: 8px;\n margin-right: 8px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders:last-child,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders:last-child,\n.color-picker-grouped-modules .color-picker-module-alpha-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hue-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-brightness-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hex:last-child {\n margin-bottom: 16px;\n}\n.color-picker-grouped-modules .color-picker-slider-value,\n.color-picker-grouped-modules .color-picker-hex-value {\n background: var(--f7-color-picker-group-value-bg-color);\n}\n.color-picker-grouped-modules .color-picker-slider-label,\n.color-picker-grouped-modules .color-picker-hex-label {\n margin-right: 5px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:first-child {\n margin-right: 5px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:last-child {\n margin-left: 5px;\n}\n/* === Treeview === */\n:root {\n --f7-treeview-item-height: 34px;\n --f7-treeview-item-padding-left: 16px;\n --f7-treeview-item-padding-right: 16px;\n --f7-treeview-toggle-size: 24px;\n --f7-treeview-children-offset: 29px;\n --f7-treeview-label-font-weight: 400;\n --f7-treeview-label-text-color: inherit;\n --f7-treeview-icon-size: 24px;\n /*\n --f7-treeview-selectable-selected-bg-color: rgba(var(--f7-theme-color-rgb), 0.2);\n */\n --f7-treeview-toggle-color: rgba(0, 0, 0, 0.5);\n --f7-treeview-toggle-hover-bg-color: rgba(0, 0, 0, 0.1);\n --f7-treeview-toggle-pressed-bg-color: rgba(0, 0, 0, 0.15);\n --f7-treeview-icon-color: rgba(0, 0, 0, 0.5);\n --f7-treeview-selectable-hover-bg-color: rgba(0, 0, 0, 0.1);\n --f7-treeview-link-hover-bg-color: rgba(0, 0, 0, 0.1);\n --f7-treeview-link-pressed-bg-color: rgba(0, 0, 0, 0.15);\n}\n:root .dark,\n:root.dark {\n --f7-treeview-toggle-color: rgba(255, 255, 255, 0.5);\n --f7-treeview-toggle-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-treeview-toggle-pressed-bg-color: rgba(255, 255, 255, 0.1);\n --f7-treeview-icon-color: rgba(255, 255, 255, 0.75);\n --f7-treeview-selectable-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-treeview-link-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-treeview-link-pressed-bg-color: rgba(255, 255, 255, 0.11);\n}\n.ios {\n --f7-treeview-label-font-size: 17px;\n}\n.md {\n --f7-treeview-label-font-size: 16px;\n}\n.treeview-item-root {\n padding-right: var(--f7-treeview-item-padding-left);\n padding-left: var(--f7-treeview-item-padding-right);\n min-height: var(--f7-treeview-item-height);\n display: flex;\n align-items: center;\n justify-content: flex-start;\n}\n.treeview-item-content {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.treeview-item-content > i,\n.treeview-item-content > .f7-icons,\n.treeview-item-content > .material-icons {\n font-size: var(--f7-treeview-icon-size);\n color: var(--f7-treeview-icon-color);\n}\n.treeview-item-content:first-child {\n margin-right: calc(var(--f7-treeview-toggle-size) + 5px);\n}\n.treeview-item-content > * + * {\n margin-right: 5px;\n}\n.treeview-item-label {\n font-size: var(--f7-treeview-label-font-size);\n font-weight: var(--f7-treeview-label-font-weight);\n color: var(--f7-treeview-label-text-color);\n}\n.treeview-toggle {\n width: var(--f7-treeview-toggle-size);\n height: var(--f7-treeview-toggle-size);\n cursor: pointer;\n border-radius: 4px;\n background-color: rgba(0, 0, 0, 0);\n transition-duration: 200ms;\n position: relative;\n margin-left: 5px;\n}\n.treeview-toggle.active-state {\n background-color: var(--f7-treeview-toggle-pressed-bg-color);\n}\n.treeview-toggle:after {\n transition-duration: 200ms;\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n width: 0;\n height: 0;\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n transform: translate(-50%, -50%);\n border-right: 6px solid var(--f7-treeview-toggle-color);\n}\n.treeview-toggle-hidden {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n}\n.treeview-preloader {\n --f7-preloader-size: var(--f7-treeview-toggle-size);\n margin-left: calc(-1 * var(--f7-treeview-toggle-size));\n}\n.treeview-item-children {\n display: none;\n}\n.treeview-item-opened > .treeview-item-children {\n display: block;\n}\n.treeview-item-opened > .treeview-item-root .treeview-toggle:after {\n transform: translate(-50%, -50%) rotate(-90deg);\n}\na.treeview-item-root {\n color: var(--f7-treeview-label-text-color);\n}\n.treeview-item-selectable > .treeview-item-root,\n.treeview-item-selectable.treeview-item-root {\n cursor: pointer;\n transition-duration: 150ms;\n}\na.treeview-item-root {\n transition-duration: 150ms;\n}\na.treeview-item-root.active-state {\n background: var(--f7-treeview-link-pressed-bg-color);\n}\n.treeview-item-toggle > .treeview-item-root,\n.treeview-item-toggle.treeview-item-root {\n cursor: pointer;\n}\n.treeview-item-selected > .treeview-item-root,\n.treeview-item-selected.treeview-item-root {\n background: var(--f7-treeview-selectable-selected-bg-color, rgba(var(--f7-theme-color-rgb), 0.2));\n}\n.treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 1);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 2);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 3);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 4);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 5);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 6);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 7);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 8);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 9);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 10);\n}\n/* === Stepper === */\n:root {\n --f7-text-editor-font-size: inherit;\n --f7-text-editor-font-weight: inherit;\n --f7-text-editor-border-width: 1px;\n --f7-text-editor-height: 250px;\n --f7-text-editor-margin: 16px;\n --f7-text-editor-padding: 8px;\n --f7-text-editor-button-bg-color: transparent;\n --f7-text-editor-button-size: 28px;\n --f7-text-editor-button-icon-size: 20px;\n --f7-text-editor-button-margin: 2px;\n --f7-text-editor-text-color: #000;\n --f7-text-editor-bg-color: #fff;\n --f7-text-editor-button-divider-color: rgba(0, 0, 0, 0.15);\n}\n:root .dark,\n:root.dark {\n --f7-text-editor-bg-color: #121212;\n --f7-text-editor-text-color: #fff;\n --f7-text-editor-button-divider-color: rgba(255, 255, 255, 0.15);\n}\n.ios {\n --f7-text-editor-toolbar-padding: 6px;\n --f7-text-editor-button-border-radius: 2px;\n --f7-text-editor-placeholder-color: rgba(0, 0, 0, 0.35);\n --f7-text-editor-toolbar-border-color: rgba(0, 0, 0, 0.25);\n --f7-text-editor-toolbar-bg-color: #fff;\n --f7-text-editor-border-color: rgba(0, 0, 0, 0.1);\n --f7-text-editor-button-text-color: #333;\n}\n.ios .dark,\n.ios.dark {\n --f7-text-editor-placeholder-color: rgba(255, 255, 255, 0.35);\n --f7-text-editor-toolbar-bg-color: #121212;\n --f7-text-editor-toolbar-border-color: rgba(255, 255, 255, 0.1);\n --f7-text-editor-toolbar-bg-color: #202020;\n --f7-text-editor-border-color: rgba(255, 255, 255, 0.1);\n --f7-text-editor-button-text-color: #fff;\n}\n.md {\n --f7-text-editor-button-border-radius: 8px;\n --f7-text-editor-toolbar-padding: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-text-editor-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-text-editor-toolbar-bg-color: var(--f7-md-surface-1);\n --f7-text-editor-border-color: var(--f7-md-outline);\n --f7-text-editor-button-text-color: var(--f7-md-on-surface);\n}\n.text-editor {\n margin: var(--f7-text-editor-margin);\n background-color: var(--f7-text-editor-bg-color);\n display: block;\n position: relative;\n border: var(--f7-text-editor-border-width) solid var(--f7-text-editor-border-color);\n display: flex;\n flex-direction: column;\n align-items: stretch;\n height: var(--f7-text-editor-height);\n box-sizing: border-box;\n}\n.text-editor.text-editor-resizable {\n height: auto;\n}\n.text-editor-toolbar {\n display: flex;\n flex-wrap: wrap;\n background: var(--f7-text-editor-toolbar-bg-color);\n z-index: 100;\n position: relative;\n position: sticky;\n left: 0;\n top: 0;\n padding: var(--f7-text-editor-toolbar-padding);\n flex-shrink: 0;\n box-sizing: border-box;\n}\n.text-editor-toolbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-text-editor-toolbar-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\nbutton.text-editor-button {\n -webkit-appearance: none;\n appearance: none;\n border: none;\n padding: 0;\n margin: 0;\n outline: 0;\n font-family: inherit;\n background: transparent;\n cursor: pointer;\n box-shadow: none;\n border-radius: var(--f7-text-editor-button-border-radius);\n position: relative;\n z-index: 1;\n display: flex;\n width: auto;\n overflow: hidden;\n width: var(--f7-text-editor-button-size);\n height: var(--f7-text-editor-button-size);\n align-items: center;\n justify-content: center;\n margin: var(--f7-text-editor-button-margin);\n box-sizing: border-box;\n color: var(--f7-text-editor-button-text-color);\n background-color: var(--f7-text-editor-button-bg-color);\n flex-shrink: 0;\n}\nbutton.text-editor-button i,\nbutton.text-editor-button .f7-icons,\nbutton.text-editor-button .material-icons {\n font-size: var(--f7-text-editor-button-icon-size);\n font-style: normal;\n}\nbutton.text-editor-button i sup,\nbutton.text-editor-button .f7-icons sup,\nbutton.text-editor-button .material-icons sup,\nbutton.text-editor-button i sub,\nbutton.text-editor-button .f7-icons sub,\nbutton.text-editor-button .material-icons sub {\n font-size: 60%;\n}\n.text-editor-button-divider {\n width: 1px;\n background: var(--f7-text-editor-button-divider-color);\n margin: 0 2px;\n flex-shrink: 0;\n}\n.text-editor-content {\n -webkit-user-modify: read-write;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n outline: 0;\n height: 100%;\n -webkit-user-select: text;\n user-select: text;\n padding: var(--f7-text-editor-padding);\n overflow: auto;\n flex-shrink: 10;\n box-sizing: border-box;\n color: var(--f7-text-editor-text-color);\n font-size: var(--f7-text-editor-font-size);\n font-weight: var(--f7-text-editor-font-weight);\n}\n.text-editor-content .text-editor-placeholder {\n pointer-events: none;\n color: var(--f7-text-editor-placeholder-color);\n}\n.text-editor-content img {\n max-width: 100%;\n}\n.text-editor-content a {\n pointer-events: none;\n}\n.text-editor-popover {\n z-index: 12500;\n width: auto;\n max-width: 80vw;\n}\n.text-editor-popover .popover-inner {\n display: flex;\n flex-wrap: wrap;\n padding: 3px;\n}\n.text-editor-keyboard-toolbar {\n position: absolute;\n z-index: 6000;\n --f7-safe-area-bottom: 0px;\n}\n.text-editor-keyboard-toolbar .toolbar-inner {\n justify-content: flex-start !important;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.text-editor-keyboard-toolbar .toolbar-inner .text-editor-button-divider {\n height: 100%;\n}\n.item-input .text-editor {\n border: none;\n margin: 0;\n background-color: var(--f7-input-bg-color, transparent);\n}\n.item-input .text-editor-content {\n padding-top: var(--f7-textarea-padding-vertical);\n padding-bottom: var(--f7-textarea-padding-vertical);\n padding-left: var(--f7-input-padding-left);\n padding-right: var(--f7-input-padding-right);\n color: var(--f7-input-text-color);\n font-size: var(--f7-input-font-size);\n}\n.item-input .text-editor-toolbar {\n box-shadow: none;\n}\n.item-input .text-editor-toolbar:after {\n display: none !important;\n}\n.item-input-outline .text-editor-content {\n border-radius: var(--f7-input-outline-border-radius);\n}\n.ios button.text-editor-button {\n transition: opacity 300ms;\n}\n.ios button.text-editor-button.active-state {\n opacity: 0.3;\n transition-duration: 0ms;\n}\n.md button.text-editor-button {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n}\n.md .text-editor-keyboard-toolbar .toolbar-inner {\n padding-left: 8px;\n padding-right: 8px;\n}\n.pie-chart {\n position: relative;\n}\n.pie-chart svg {\n display: block;\n width: 100%;\n font-size: 0;\n height: auto;\n margin: 0 auto;\n}\n.pie-chart path {\n transition-duration: 150ms;\n}\n.pie-chart-hidden {\n opacity: 0.4;\n}\n.pie-chart-tooltip {\n pointer-events: none;\n text-align: left;\n font-size: 12px;\n line-height: 1.4;\n white-space: nowrap;\n width: auto;\n max-width: none;\n}\n.pie-chart-tooltip-label {\n display: flex;\n align-items: center;\n}\n.pie-chart-tooltip-color {\n display: inline-block;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n margin-right: 4px;\n}\n:root {\n --f7-area-chart-current-line-stroke-width: 2px;\n --f7-area-chart-current-line-stroke: rgba(0, 0, 0, 0.15);\n --f7-area-chart-axis-text-color: inherit;\n --f7-area-chart-axis-height: 1px;\n --f7-area-chart-axis-font-size: 10px;\n --f7-area-chart-axis-font-weight: 500;\n --f7-area-chart-tooltip-font-size: 12px;\n --f7-area-chart-tooltip-total-font-size: 16px;\n --f7-area-chart-tooltip-total-font-weight: bold;\n --f7-area-chart-tooltip-color-size: 10px;\n --f7-area-chart-legend-font-size: 14px;\n --f7-area-chart-legend-font-weight: 500;\n --f7-area-chart-legend-text-color: inherit;\n --f7-area-chart-legend-padding: 4px 8px;\n --f7-area-chart-legend-border-radius: 4px;\n --f7-area-chart-legend-color-size: 14px;\n --f7-area-chart-line-stroke-width: 2px;\n --f7-area-chart-axis-bg-color: rgba(0, 0, 0, 0.15);\n --f7-area-chart-legend-disabled-text-color: rgba(0, 0, 0, 0.22);\n}\n:root .dark,\n:root.dark {\n --f7-area-chart-axis-bg-color: rgba(255, 255, 255, 0.15);\n --f7-area-chart-legend-disabled-text-color: rgba(255, 255, 255, 0.22);\n}\n.ios {\n --f7-area-chart-tooltip-total-label-text-color: rgba(255, 255, 255, 0.75);\n}\n.md {\n --f7-area-chart-tooltip-total-label-text-color: inherit;\n}\n.area-chart {\n position: relative;\n}\n.area-chart svg {\n display: block;\n width: 100%;\n font-size: 0;\n height: auto;\n margin: 0 auto;\n}\n.area-chart path {\n fill: none;\n stroke-width: var(--f7-area-chart-line-stroke-width);\n}\n.area-chart-current-line {\n stroke: var(--f7-area-chart-current-line-stroke);\n stroke-width: var(--f7-area-chart-current-line-stroke-width);\n}\n.area-chart-axis {\n height: var(--f7-area-chart-axis-height);\n background: var(--f7-area-chart-axis-bg-color);\n color: var(--f7-area-chart-axis-text-color);\n display: flex;\n font-size: var(--f7-area-chart-axis-font-size);\n font-weight: var(--f7-area-chart-axis-font-weight);\n justify-content: space-between;\n line-height: 1;\n margin-bottom: 2em;\n}\n.area-chart-axis > span {\n padding-top: 10px;\n width: 0;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n white-space: nowrap;\n}\n.area-chart-axis > span:first-child {\n justify-content: flex-start;\n}\n.area-chart-axis > span:last-child {\n justify-content: flex-end;\n}\n.area-chart-tooltip {\n pointer-events: none;\n text-align: left;\n font-size: var(--f7-area-chart-tooltip-font-size);\n line-height: 1.4;\n}\n.area-chart-tooltip-label {\n color: var(--f7-area-chart-tooltip-total-label-text-color);\n}\n.area-chart-tooltip-total {\n font-size: var(--f7-area-chart-tooltip-total-font-size);\n font-weight: var(--f7-area-chart-tooltip-total-font-weight);\n}\n.area-chart-tooltip-list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n.area-chart-tooltip-list li {\n white-space: nowrap;\n}\n.area-chart-tooltip-list span {\n display: inline-block;\n width: var(--f7-area-chart-tooltip-color-size);\n height: var(--f7-area-chart-tooltip-color-size);\n border-radius: 50%;\n margin-right: 4px;\n}\n.area-chart-axis ~ .area-chart-legend {\n margin-top: 2em;\n}\n.area-chart-legend {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n font-size: var(--f7-area-chart-legend-font-size);\n width: 100%;\n margin-top: 1em;\n}\n.area-chart-legend-button {\n -webkit-appearance: none !important;\n appearance: none !important;\n background-color: transparent;\n border-radius: 0;\n border: none;\n outline: 0 !important;\n cursor: pointer;\n font-family: inherit;\n font-size: inherit;\n box-shadow: none !important;\n}\n.area-chart-legend-item {\n position: relative;\n color: var(--f7-area-chart-legend-text-color);\n width: auto;\n display: flex;\n align-items: center;\n font-weight: var(--f7-area-chart-legend-font-weight);\n transition-duration: 200ms;\n padding: var(--f7-area-chart-legend-padding);\n border-radius: var(--f7-area-chart-legend-border-radius);\n overflow: hidden;\n}\n.area-chart-legend-item span {\n width: var(--f7-area-chart-legend-color-size);\n height: var(--f7-area-chart-legend-color-size);\n margin-right: 4px;\n border-radius: 50%;\n transition-duration: 200ms;\n}\n.area-chart-legend-item-hidden {\n color: var(--f7-area-chart-legend-disabled-text-color);\n}\n.area-chart-legend-item-hidden span {\n background-color: var(--f7-area-chart-legend-disabled-text-color) !important;\n}\n/* === Breadcrumbs === */\n:root {\n --f7-breadcrumbs-spacing: 12px;\n --f7-breadcrumbs-padding: 2px 0;\n --f7-breadcrumbs-icon-size: 24px;\n --f7-breadcrumbs-separator-color: rgba(0, 0, 0, 0.35);\n}\n:root .dark,\n:root.dark {\n --f7-breadcrumbs-separator-color: rgba(255, 255, 255, 0.35);\n}\n.ios {\n --f7-breadcrumbs-item-bg-color: transparent;\n --f7-breadcrumbs-collapsed-border-radius: 4px;\n --f7-breadcrumbs-collapsed-padding: 0px 6px;\n --f7-breadcrumbs-separator-icon: 'chevron_right_ios';\n --f7-breadcrumbs-font-size: 17px;\n --f7-breadcrumbs-item-border-radius: 0px;\n --f7-breadcrumbs-item-padding: 0px;\n --f7-breadcrumbs-item-font-weight: normal;\n --f7-breadcrumbs-item-active-font-weight: 600;\n --f7-breadcrumbs-item-color: rgba(0, 0, 0, 0.55);\n --f7-breadcrumbs-item-active-color: #000;\n --f7-breadcrumbs-collapsed-bg-color: rgba(0, 0, 0, 0.15);\n --f7-breadcrumbs-collapsed-color: rgba(0, 0, 0, 0.75);\n}\n.ios .dark,\n.ios.dark {\n --f7-breadcrumbs-item-color: rgba(255, 255, 255, 0.75);\n --f7-breadcrumbs-item-active-color: #fff;\n --f7-breadcrumbs-collapsed-bg-color: rgba(255, 255, 255, 0.15);\n --f7-breadcrumbs-collapsed-color: rgba(255, 255, 255, 0.75);\n}\n.md {\n --f7-breadcrumbs-collapsed-border-radius: 8px;\n --f7-breadcrumbs-collapsed-padding: 12px 8px;\n --f7-breadcrumbs-separator-icon: 'chevron_right_md';\n --f7-breadcrumbs-font-size: 14px;\n --f7-breadcrumbs-item-border-radius: 8px;\n --f7-breadcrumbs-item-padding: 4px 8px;\n --f7-breadcrumbs-item-font-weight: 500;\n --f7-breadcrumbs-item-active-font-weight: 500;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-breadcrumbs-item-color: var(--f7-theme-color);\n --f7-breadcrumbs-item-bg-color: var(--f7-md-secondary-container);\n --f7-breadcrumbs-item-active-color: var(--f7-md-on-secondary-container);\n --f7-breadcrumbs-collapsed-color: var(--f7-theme-color);\n --f7-breadcrumbs-collapsed-bg-color: var(--f7-md-secondary-container);\n}\n.breadcrumbs {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n font-size: var(--f7-breadcrumbs-font-size);\n overflow: auto;\n white-space: nowrap;\n padding: var(--f7-breadcrumbs-padding);\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.breadcrumbs::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.breadcrumbs::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.breadcrumbs::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.breadcrumbs-separator,\n.breadcrumbs-item,\n.breadcrumbs-collapsed {\n flex-shrink: 0;\n --f7-touch-ripple-color: transparent !important;\n}\n.breadcrumbs-separator + .breadcrumbs-separator,\n.breadcrumbs-separator + .breadcrumbs-item,\n.breadcrumbs-separator + .breadcrumbs-collapsed,\n.breadcrumbs-item + .breadcrumbs-separator,\n.breadcrumbs-item + .breadcrumbs-item,\n.breadcrumbs-item + .breadcrumbs-collapsed,\n.breadcrumbs-collapsed + .breadcrumbs-separator,\n.breadcrumbs-collapsed + .breadcrumbs-item,\n.breadcrumbs-collapsed + .breadcrumbs-collapsed {\n margin-left: var(--f7-breadcrumbs-spacing);\n}\n.breadcrumbs-item {\n color: var(--f7-breadcrumbs-item-color);\n font-weight: var(--f7-breadcrumbs-item-font-weight);\n padding: var(--f7-breadcrumbs-item-padding);\n background-color: var(--f7-breadcrumbs-item-bg-color);\n display: flex;\n align-items: center;\n border-radius: var(--f7-breadcrumbs-item-border-radius);\n}\n.breadcrumbs-item .icon {\n font-size: var(--f7-breadcrumbs-icon-size);\n width: var(--f7-breadcrumbs-icon-size);\n height: var(--f7-breadcrumbs-icon-size);\n}\n.breadcrumbs-item a {\n color: inherit;\n --f7-touch-ripple-color: transparent !important;\n}\n.breadcrumbs-item-active {\n color: var(--f7-breadcrumbs-item-active-color, var(--f7-breadcrumbs-item-color));\n font-weight: var(--f7-breadcrumbs-item-active-font-weight);\n}\n.breadcrumbs-separator {\n color: var(--f7-breadcrumbs-separator-color);\n height: 24px;\n overflow: hidden;\n display: flex;\n align-items: center;\n}\n.breadcrumbs-separator::after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n content: var(--f7-breadcrumbs-separator-icon);\n width: 12px;\n}\n.ios .breadcrumbs-separator::after {\n font-size: 12px;\n height: 11px;\n}\n.md .breadcrumbs-separator::after {\n font-size: 18px;\n height: 18px;\n}\n.breadcrumbs-collapsed {\n display: flex;\n align-items: center;\n padding: var(--f7-breadcrumbs-collapsed-padding);\n background: var(--f7-breadcrumbs-collapsed-bg-color);\n min-height: 1em;\n border-radius: var(--f7-breadcrumbs-collapsed-border-radius);\n cursor: pointer;\n}\n.breadcrumbs-collapsed::before,\n.breadcrumbs-collapsed::after,\n.breadcrumbs-collapsed span {\n content: '';\n width: 4px;\n height: 4px;\n background: var(--f7-breadcrumbs-collapsed-color);\n border-radius: 50%;\n}\n.breadcrumbs-collapsed span {\n margin: 0 3px;\n}\n/* === Typography === */\n:root {\n --f7-typography-padding: 16px;\n --f7-typography-margin: 16px;\n}\n.display-flex {\n display: flex !important;\n}\n.display-block {\n display: block !important;\n}\n.display-inline-flex {\n display: inline-flex !important;\n}\n.display-inline-block {\n display: inline-block !important;\n}\n.display-inline {\n display: inline !important;\n}\n.display-none {\n display: none !important;\n}\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n.flex-shrink-2 {\n flex-shrink: 2 !important;\n}\n.flex-shrink-3 {\n flex-shrink: 3 !important;\n}\n.flex-shrink-4 {\n flex-shrink: 4 !important;\n}\n.flex-shrink-5 {\n flex-shrink: 5 !important;\n}\n.flex-shrink-6 {\n flex-shrink: 6 !important;\n}\n.flex-shrink-7 {\n flex-shrink: 7 !important;\n}\n.flex-shrink-8 {\n flex-shrink: 8 !important;\n}\n.flex-shrink-9 {\n flex-shrink: 9 !important;\n}\n.flex-shrink-10 {\n flex-shrink: 10 !important;\n}\n.flex-direction-row {\n flex-direction: row !important;\n}\n.flex-direction-row-reverse {\n flex-direction: row-reverse !important;\n}\n.flex-direction-column {\n flex-direction: column !important;\n}\n.flex-direction-column-reverse {\n flex-direction: column-reverse !important;\n}\n.justify-content-flex-start {\n justify-content: flex-start !important;\n}\n.justify-content-center {\n justify-content: center !important;\n}\n.justify-content-flex-end {\n justify-content: flex-end !important;\n}\n.justify-content-space-between {\n justify-content: space-between !important;\n}\n.justify-content-space-around {\n justify-content: space-around !important;\n}\n.justify-content-space-evenly {\n justify-content: space-evenly !important;\n}\n.justify-content-stretch {\n justify-content: stretch !important;\n}\n.justify-content-start {\n justify-content: start !important;\n}\n.justify-content-end {\n justify-content: end !important;\n}\n.justify-content-left {\n justify-content: left !important;\n}\n.justify-content-right {\n justify-content: right !important;\n}\n.align-content-flex-start {\n align-content: flex-start !important;\n}\n.align-content-flex-end {\n align-content: flex-end !important;\n}\n.align-content-center {\n align-content: center !important;\n}\n.align-content-space-between {\n align-content: space-between !important;\n}\n.align-content-space-around {\n align-content: space-around !important;\n}\n.align-content-stretch {\n align-content: stretch !important;\n}\n.align-items-baseline {\n align-items: baseline !important;\n}\n.align-items-flex-start {\n align-items: flex-start !important;\n}\n.align-items-flex-end {\n align-items: flex-end !important;\n}\n.align-items-center {\n align-items: center !important;\n}\n.align-items-stretch {\n align-items: stretch !important;\n}\n.align-self-flex-start {\n align-self: flex-start !important;\n}\n.align-self-flex-end {\n align-self: flex-end !important;\n}\n.align-self-center {\n align-self: center !important;\n}\n.align-self-stretch {\n align-self: stretch !important;\n}\n.text-align-left {\n text-align: left !important;\n}\n.text-align-center {\n text-align: center !important;\n}\n.text-align-right {\n text-align: right !important;\n}\n.text-align-justify {\n text-align: justify !important;\n}\n.float-left {\n float: left !important;\n}\n.float-right {\n float: right !important;\n}\n.float-none {\n float: none !important;\n}\n.vertical-align-bottom {\n vertical-align: bottom !important;\n}\n.vertical-align-middle {\n vertical-align: middle !important;\n}\n.vertical-align-top {\n vertical-align: top !important;\n}\n.no-padding {\n padding: 0 !important;\n}\n.no-padding-left {\n padding-left: 0 !important;\n}\n.no-padding-right {\n padding-right: 0 !important;\n}\n.no-padding-horizontal {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n.no-padding-top {\n padding-top: 0 !important;\n}\n.no-padding-bottom {\n padding-bottom: 0 !important;\n}\n.no-padding-vertical {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n.no-margin {\n margin: 0 !important;\n}\n.no-margin-left {\n margin-left: 0 !important;\n}\n.no-margin-right {\n margin-right: 0 !important;\n}\n.no-margin-horizontal {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n.no-margin-top {\n margin-top: 0 !important;\n}\n.no-margin-bottom {\n margin-bottom: 0 !important;\n}\n.no-margin-vertical {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n.width-auto {\n width: auto !important;\n}\n.width-100 {\n width: 100% !important;\n}\n.padding {\n padding: var(--f7-typography-padding) !important;\n}\n.padding-half {\n padding: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-top {\n padding-top: var(--f7-typography-padding) !important;\n}\n.padding-top-half {\n padding-top: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-bottom {\n padding-bottom: var(--f7-typography-padding) !important;\n}\n.padding-bottom-half {\n padding-bottom: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-left {\n padding-left: var(--f7-typography-padding) !important;\n}\n.padding-left-half {\n padding-left: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-right {\n padding-right: var(--f7-typography-padding) !important;\n}\n.padding-right-half {\n padding-right: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-vertical {\n padding-top: var(--f7-typography-padding) !important;\n padding-bottom: var(--f7-typography-padding) !important;\n}\n.padding-vertical-half {\n padding-top: calc(var(--f7-typography-padding) / 2) !important;\n padding-bottom: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-horizontal {\n padding-left: var(--f7-typography-padding) !important;\n padding-right: var(--f7-typography-padding) !important;\n}\n.padding-horizontal-half {\n padding-left: calc(var(--f7-typography-padding) / 2) !important;\n padding-right: calc(var(--f7-typography-padding) / 2) !important;\n}\n.margin {\n margin: var(--f7-typography-margin) !important;\n}\n.margin-half {\n margin: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-top {\n margin-top: var(--f7-typography-margin) !important;\n}\n.margin-top-half {\n margin-top: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-bottom {\n margin-bottom: var(--f7-typography-margin) !important;\n}\n.margin-bottom-half {\n margin-bottom: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-left {\n margin-left: var(--f7-typography-margin) !important;\n}\n.margin-left-half {\n margin-left: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-right {\n margin-right: var(--f7-typography-margin) !important;\n}\n.margin-right-half {\n margin-right: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-vertical {\n margin-top: var(--f7-typography-margin) !important;\n margin-bottom: var(--f7-typography-margin) !important;\n}\n.margin-vertical-half {\n margin-top: calc(var(--f7-typography-margin) / 2) !important;\n margin-bottom: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-horizontal {\n margin-left: var(--f7-typography-margin) !important;\n margin-right: var(--f7-typography-margin) !important;\n}\n.margin-horizontal-half {\n margin-left: calc(var(--f7-typography-margin) / 2) !important;\n margin-right: calc(var(--f7-typography-margin) / 2) !important;\n}\n[class*='text-color-'] {\n color: var(--f7-theme-color-text-color) !important;\n}\n[class*='bg-color-'] {\n background-color: var(--f7-theme-color-bg-color) !important;\n}\n[class*='border-color-'] {\n border-color: var(--f7-theme-color-border-color) !important;\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/apps/documenteditor/mobile/css/framework7.css b/apps/documenteditor/mobile/css/framework7.css new file mode 100644 index 0000000000..9c964d2757 --- /dev/null +++ b/apps/documenteditor/mobile/css/framework7.css @@ -0,0 +1,3 @@ +:root{--f7-safe-area-left:0px;--f7-safe-area-right:0px;--f7-safe-area-top:0px;--f7-safe-area-bottom:0px;--f7-safe-area-outer-left:0px;--f7-safe-area-outer-right:0px;--f7-device-pixel-ratio:1}@supports (left:env(safe-area-inset-left)){:root{--f7-safe-area-top:env(safe-area-inset-top);--f7-safe-area-bottom:env(safe-area-inset-bottom)}:root .ios-edges,:root .ios-left-edge,:root .panel-left,:root .popup,:root .safe-area-left,:root .safe-areas,:root .sheet-modal{--f7-safe-area-left:env(safe-area-inset-left);--f7-safe-area-outer-left:env(safe-area-inset-left)}:root .ios-edges,:root .ios-right-edge,:root .panel-right,:root .popup,:root .safe-area-right,:root .safe-areas,:root .sheet-modal{--f7-safe-area-right:env(safe-area-inset-right);--f7-safe-area-outer-right:env(safe-area-inset-right)}:root .no-ios-edges,:root .no-ios-left-edge,:root .no-safe-area-left,:root .no-safe-areas{--f7-safe-area-left:0px;--f7-safe-area-outer-left:0px}:root .no-ios-edges,:root .no-ios-right-edge,:root .no-safe-area-right,:root .no-safe-areas{--f7-safe-area-right:0px;--f7-safe-area-outer-right:0px}}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){:root{--f7-device-pixel-ratio:2}}@media (-webkit-min-device-pixel-ratio:3),(min-resolution:3dppx){:root{--f7-device-pixel-ratio:3}}:root{--f7-font-size:14px;--f7-bars-translucent-opacity:0.8;--f7-bars-translucent-blur:20px}.ios{--f7-font-family:-apple-system,SF Pro Text,SF UI Text,system-ui,Helvetica Neue,Helvetica,Arial,sans-serif;--f7-line-height:1.4;--f7-bars-text-color:#000;--f7-text-color:#000;--f7-bars-bg-color:#f7f7f8;--f7-bars-bg-color-rgb:247,247,248;--f7-bars-border-color:rgba(0,0,0,0.25)}.ios .dark,.ios.dark{--f7-bars-text-color:#fff;--f7-text-color:#fff;--f7-bars-bg-color:#121212;--f7-bars-bg-color-rgb:22,22,22;--f7-bars-border-color:rgba(255,255,255,0.16)}.md{--f7-font-family:Roboto,system-ui,Noto,Helvetica,Arial,sans-serif;--f7-line-height:1.5;--f7-bars-border-color:transparent;--f7-text-color:#212121}.md .dark,.md.dark{--f7-text-color:rgba(255,255,255,0.87)}.md,.md .dark,.md [class*=color-]{--f7-bars-link-color:var(--f7-md-on-surface);--f7-bars-bg-color:var(--f7-md-surface-2);--f7-bars-bg-color-rgb:var(--f7-md-surface-2-rgb)}.text-color-primary{--f7-theme-color-text-color:var(--f7-theme-color)}.bg-color-primary{--f7-theme-color-bg-color:var(--f7-theme-color)}.border-color-primary{--f7-theme-color-border-color:var(--f7-theme-color)}.ripple-color-primary{--f7-theme-color-ripple-color:rgba(var(--f7-theme-color-rgb),0.3)}@font-face{font-family:framework7-core-icons;font-style:normal;font-weight:400;src:url("data:application/font-woff;charset=utf-8;base64, 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") format("woff")}html{overscroll-behavior:none}.framework7-root,body,html{height:100%;overflow-x:hidden;position:relative;width:100%}body{-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;background:#fff;color:var(--f7-text-color);font-family:var(--f7-font-family);font-size:var(--f7-font-size);line-height:var(--f7-line-height);margin:0;overflow:hidden;overflow-y:scroll;padding:0;scrollbar-color:transparent;scrollbar-width:none;width:100%}body::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}body::-webkit-scrollbar-track{background:transparent;box-shadow:none}body::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.dark body,body.dark{background:#000}.dark{color:var(--f7-text-color)}.framework7-root{box-sizing:border-box;overflow:hidden}.framework7-initializing *,.framework7-initializing :after,.framework7-initializing :before{transition-duration:0ms!important}.device-android,.device-ios{cursor:pointer}.device-ios{touch-action:manipulation}@media (width:1024px) and (height:691px) and (orientation:landscape){.framework7-root,body,html{height:671px}}@media (width:1024px) and (height:692px) and (orientation:landscape){.framework7-root,body,html{height:672px}}*{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:none}a,input,select,textarea{outline:0}a{color:var(--f7-theme-color);text-decoration:none}.item-link,.link,a{cursor:pointer}p{margin:1em 0}.disabled{opacity:.55!important;pointer-events:none!important}html.device-full-viewport,html.device-full-viewport body{height:100vh}.ios .if-md,.ios .if-not-ios,.ios .md-only,.ios .not-ios{display:none!important}@media (width:1024px) and (height:691px) and (orientation:landscape){.ios,.ios .framework7-root,.ios body{height:671px}}@media (width:1024px) and (height:692px) and (orientation:landscape){.ios,.ios .framework7-root,.ios body{height:672px}}.md .if-ios,.md .if-not-md,.md .ios-only,.md .not-md{display:none!important}.view,.views{box-sizing:border-box;height:100%;overflow:hidden;position:relative;z-index:5000}.framework7-root>.view,.framework7-root>.views{height:100%}.view-resize-handler{cursor:col-resize;display:none;height:100%;left:var(--f7-page-master-width);margin-left:-3px;position:absolute;top:0;width:6px;z-index:1000}.view-master-detail .view-resize-handler{display:block}:root{--f7-page-master-width:320px;--f7-page-master-border-color:rgba(0,0,0,0.1);--f7-page-master-border-width:1px;--f7-page-swipeback-transition-duration:300ms;--f7-page-parallax-transition-duration:500ms;--f7-page-cover-transition-duration:450ms;--f7-page-dive-transition-duration:500ms;--f7-page-fade-transition-duration:500ms;--f7-page-flip-transition-duration:700ms;--f7-page-push-transition-duration:500ms;--f7-page-title-line-height:1.2;--f7-page-title-text-color:inherit;--f7-page-title-padding-left:16px;--f7-page-title-padding-right:16px}.ios{--f7-page-transition-duration:400ms;--f7-page-title-font-size:34px;--f7-page-title-font-weight:700;--f7-page-title-letter-spacing:-0.03em;--f7-page-title-padding-vertical:6px;--f7-page-bg-color:#efeff4}.ios .dark,.ios.dark{--f7-page-bg-color:#000}.md{--f7-page-transition-duration:400ms;--f7-page-title-font-size:34px;--f7-page-title-font-weight:500;--f7-page-title-letter-spacing:0;--f7-page-title-padding-vertical:8px}.md,.md .dark,.md [class*=color-]{--f7-page-bg-color:var(--f7-md-surface)}.dark{--f7-page-master-border-color:rgba(255,255,255,0.2)}.pages{overflow:hidden;position:relative}.page,.pages{height:100%;width:100%}.page{background-color:var(--f7-page-bg-color);box-sizing:border-box;left:0;position:absolute;top:0;transform:none;z-index:1}.page-with-navbar-large-collapsed{--f7-navbar-large-collapse-progress:1}.page-previous{pointer-events:none}.page-content{-webkit-overflow-scrolling:touch;box-sizing:border-box;height:100%;overflow:auto;padding-bottom:calc(var(--f7-page-toolbar-bottom-offset, 0px) + var(--f7-safe-area-bottom) + var(--f7-page-content-extra-padding-bottom, 0px));padding-top:calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-toolbar-top-offset, 0px) + var(--f7-page-subnavbar-offset, 0px) + var(--f7-page-searchbar-offset, 0px) + var(--f7-page-content-extra-padding-top, 0px));position:relative;z-index:1}.page-transitioning,.page-transitioning .page-opacity-effect,.page-transitioning .page-shadow-effect{transition-duration:var(--f7-page-transition-duration)}.page-transitioning-swipeback,.page-transitioning-swipeback .page-opacity-effect,.page-transitioning-swipeback .page-shadow-effect{transition-duration:var(--f7-page-swipeback-transition-duration)}.router-transition-backward .page-current,.router-transition-backward .page-next,.router-transition-forward .page-current,.router-transition-forward .page-next{pointer-events:none}.page-shadow-effect{background:linear-gradient(90deg,rgba(0,0,0,0) 0,rgba(0,0,0,0) 10%,rgba(0,0,0,.01) 50%,rgba(0,0,0,.2));right:100%;width:16px;z-index:-1}.page-opacity-effect,.page-shadow-effect{bottom:0;content:"";opacity:0;position:absolute;top:0}.page-opacity-effect{background:rgba(0,0,0,.1);left:0;width:100%;z-index:10000}.ios .page-previous{transform:translate3d(-20%,0,0)}.ios .page-next{transform:translate3d(100%,0,0)}.ios .page-current .page-shadow-effect,.ios .page-previous .page-opacity-effect,.ios .page-previous:after{opacity:1}.ios .router-transition-forward .page-next{animation:ios-page-next-to-current var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .page-next:before{animation:ios-page-element-fade-in var(--f7-page-transition-duration) forwards;background:linear-gradient(90deg,rgba(0,0,0,0) 0,rgba(0,0,0,0) 10%,rgba(0,0,0,.01) 50%,rgba(0,0,0,.2));bottom:0;content:"";opacity:0;position:absolute;right:100%;top:0;width:16px;z-index:-1}.ios .router-transition-forward .page-current{animation:ios-page-current-to-previous var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .page-current:after{animation:ios-page-element-fade-in var(--f7-page-transition-duration) forwards;background:rgba(0,0,0,.1);bottom:0;content:"";left:0;opacity:0;position:absolute;top:0;width:100%;z-index:10000}.ios .router-transition-backward .page-previous{animation:ios-page-previous-to-current var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .page-previous:after{animation:ios-page-element-fade-out var(--f7-page-transition-duration) forwards;background:rgba(0,0,0,.1);bottom:0;content:"";left:0;opacity:0;position:absolute;top:0;width:100%;z-index:10000}.ios .router-transition-backward .page-current{animation:ios-page-current-to-next var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .page-current:before{animation:ios-page-element-fade-out var(--f7-page-transition-duration) forwards;background:linear-gradient(90deg,rgba(0,0,0,0) 0,rgba(0,0,0,0) 10%,rgba(0,0,0,.01) 50%,rgba(0,0,0,.2));bottom:0;content:"";opacity:0;position:absolute;right:100%;top:0;width:16px;z-index:-1}@keyframes ios-page-next-to-current{0%{transform:translate3d(100%,0,0)}to{transform:translateZ(0)}}@keyframes ios-page-previous-to-current{0%{transform:translate3d(-20%,0,0)}to{transform:translateZ(0)}}@keyframes ios-page-current-to-previous{0%{transform:translateZ(0)}to{transform:translate3d(-20%,0,0)}}@keyframes ios-page-current-to-next{0%{transform:translateZ(0)}to{transform:translate3d(100%,0,0)}}@keyframes ios-page-element-fade-in{0%{opacity:0}to{opacity:1}}@keyframes ios-page-element-fade-out{0%{opacity:1}to{opacity:0}}.md .page-previous{transform:translate3d(0,-20px,0)}.md .page-next{opacity:0;pointer-events:none;transform:translate3d(0,128px,0)}.md .page-next.page-next-on-right{opacity:1;transform:translate3d(100%,0,0)}.md .router-transition-forward .page-next{animation:md-page-next-to-current var(--f7-page-transition-duration) forwards cubic-bezier(0,.8,.3,1);opacity:1}.md .router-transition-forward .page-current{animation:md-page-current-to-previous var(--f7-page-transition-duration) forwards cubic-bezier(0,.8,.3,1)}.md .router-transition-backward .page-current{animation:md-page-current-to-next calc(var(--f7-page-transition-duration)/4) forwards cubic-bezier(.8,0,1,.3),md-page-current-to-next-opacity 0ms calc(var(--f7-page-transition-duration)/4) forwards}.md .router-transition-backward .page-previous{animation:md-page-previous-to-current var(--f7-page-transition-duration) forwards}@keyframes md-page-next-to-current{0%{transform:translate3d(0,128px,0)}to{transform:translateZ(0)}}@keyframes md-page-current-to-next{0%{transform:translateZ(0)}to{transform:translate3d(0,128px,0)}}@keyframes md-page-current-to-next-opacity{0%{opacity:1}to{opacity:0}}@keyframes md-page-current-to-previous{0%{transform:translateZ(0)}to{transform:translate3d(0,-20px,0)}}@keyframes md-page-previous-to-current{0%{transform:translate3d(0,-20px,0)}to{transform:translateZ(0)}}.view:not(.view-master-detail) .navbar-master-stacked,.view:not(.view-master-detail) .page-master-stacked{display:none}.view-master-detail .navbar-master,.view-master-detail .page-master{--f7-safe-area-right:0px;--f7-safe-area-outer-right:0px;border-right:var(--f7-page-master-border-width) solid var(--f7-page-master-border-color);width:var(--f7-page-master-width)}.view-master-detail .navbar-master-detail,.view-master-detail .page-master-detail{--f7-safe-area-left:0px;--f7-safe-area-outer-left:0px;left:var(--f7-page-master-width);width:calc(100% - var(--f7-page-master-width))}.view-master-detail .page-master-detail>.navbar-master-detail{left:0;right:0;width:100%}.view-master-detail .page-master{pointer-events:auto;transform:none;z-index:2}.view-master-detail .page-master:after,.view-master-detail .page-master:before{display:none}.view-master-detail.router-transition .page-master{animation:none}.ios .router-transition-custom .page-next,.ios .router-transition-custom .page-previous,.md .router-transition-custom .page-next,.md .router-transition-custom .page-previous{opacity:1;transform:none}.ios .router-transition-custom.view-master-detail .page-master,.md .router-transition-custom.view-master-detail .page-master{animation:none}.page-title{box-sizing:border-box;color:var(--f7-page-title-text-color);font-size:var(--f7-page-title-font-size);font-weight:var(--f7-page-title-font-weight);letter-spacing:var(--f7-page-title-letter-spacing);line-height:var(--f7-page-title-line-height);overflow:hidden;padding:var(--f7-page-title-padding-vertical) calc(var(--f7-page-title-padding-right) + var(--f7-safe-area-right)) var(--f7-page-title-padding-vertical) calc(var(--f7-page-title-padding-left) + var(--f7-safe-area-left));position:relative;text-overflow:ellipsis;white-space:nowrap;width:100%;z-index:10}.router-transition-f7-circle-backward:after,.router-transition-f7-circle-forward:after{background:var(--f7-page-bg-color);content:"";height:100vmax;left:50%;margin-left:-50vmax;margin-top:-50vmax;position:absolute;top:50%;width:100vmax;z-index:100}.router-transition-f7-circle-backward .page,.router-transition-f7-circle-forward .page{pointer-events:none}.router-transition-f7-circle-forward:after{animation:f7-circle-circle-in .4s forwards;border-radius:50%;transform:scale(0)}.ios .router-transition-f7-circle-forward .page-next,.md .router-transition-f7-circle-forward .page-next{animation:f7-circle-next-to-current .3s forwards;animation-delay:.3s;opacity:0;transform:scale(.9);z-index:150}.router-transition-f7-circle-backward:after{animation:f7-circle-circle-out .3s forwards;animation-delay:.35s}.ios .router-transition-f7-circle-backward .page-current,.md .router-transition-f7-circle-backward .page-current{animation:f7-circle-current-to-next .7s forwards;z-index:150}@keyframes f7-circle-circle-in{0%{border-radius:50%;transform:scale(0)}50%{border-radius:50%}to{border-radius:0;transform:scale(1)}}@keyframes f7-circle-circle-out{0%{border-radius:0;transform:scale(1)}50%{border-radius:50%}to{border-radius:50%;transform:scale(0)}}@keyframes f7-circle-next-to-current{0%{opacity:0;transform:scale(.9)}40%{opacity:1;transform:scale(1.035)}to{opacity:1;transform:scale(1)}}@keyframes f7-circle-current-to-next{0%{opacity:1;transform:scale(1)}34%{opacity:1;transform:scale(1.035)}57%{opacity:0;transform:scale(.9)}to{opacity:0;transform:scale(.9)}}.router-transition-f7-cover-v-backward,.router-transition-f7-cover-v-forward{background:#000;perspective:1200px}.router-transition-f7-cover-v-backward .page,.router-transition-f7-cover-v-forward .page{pointer-events:none}.router-transition-f7-cover-v-forward .page-next{animation:f7-cover-v-next-to-current var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-v-forward .page-current{animation:f7-cover-v-current-to-prev var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-v-backward .page-current{animation:f7-cover-v-current-to-next var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-v-backward .page-previous{animation:f7-cover-v-prev-to-current var(--f7-page-cover-transition-duration) forwards}@keyframes f7-cover-v-next-to-current{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes f7-cover-v-current-to-next{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes f7-cover-v-current-to-prev{0%{opacity:1;transform:translateZ(0)}to{opacity:.5;transform:translateZ(-300px)}}@keyframes f7-cover-v-prev-to-current{0%{opacity:.5;transform:translateZ(-300px)}to{opacity:1;transform:translateZ(0)}}.router-transition-f7-cover-backward,.router-transition-f7-cover-forward{background:#000;perspective:1200px}.router-transition-f7-cover-backward .page,.router-transition-f7-cover-forward .page{pointer-events:none}.router-transition-f7-cover-forward .page-next{animation:f7-cover-next-to-current var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-forward .page-current{animation:f7-cover-current-to-prev var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-backward .page-current{animation:f7-cover-current-to-next var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-backward .page-previous{animation:f7-cover-prev-to-current var(--f7-page-cover-transition-duration) forwards}@keyframes f7-cover-next-to-current{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes f7-cover-current-to-next{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes f7-cover-current-to-prev{0%{opacity:1;transform:translateZ(0)}to{opacity:.5;transform:translateZ(-300px)}}@keyframes f7-cover-prev-to-current{0%{opacity:.5;transform:translateZ(-300px)}to{opacity:1;transform:translateZ(0)}}.router-transition-f7-dive-backward,.router-transition-f7-dive-forward{background:var(--f7-page-bg-color);perspective:1200px}.router-transition-f7-dive-backward .page,.router-transition-f7-dive-forward .page{pointer-events:none}.router-transition-f7-dive-forward .page-next{animation:f7-dive-next-to-current var(--f7-page-dive-transition-duration) forwards}.router-transition-f7-dive-forward .page-current{animation:f7-dive-current-to-prev var(--f7-page-dive-transition-duration) forwards}.router-transition-f7-dive-backward .page-current{animation:f7-dive-current-to-next var(--f7-page-dive-transition-duration) forwards}.router-transition-f7-dive-backward .page-previous{animation:f7-dive-prev-to-current var(--f7-page-dive-transition-duration) forwards}@keyframes f7-dive-next-to-current{0%{opacity:0;transform:translateZ(-150px)}50%{opacity:0}to{opacity:1;transform:translateZ(0)}}@keyframes f7-dive-current-to-next{0%{opacity:1;transform:translateZ(0)}50%{opacity:0}to{opacity:0;transform:translateZ(-150px)}}@keyframes f7-dive-current-to-prev{0%{opacity:1;transform:translateZ(0)}50%{opacity:0}to{opacity:0;transform:translateZ(150px)}}@keyframes f7-dive-prev-to-current{0%{opacity:0;transform:translateZ(150px)}50%{opacity:0}to{opacity:1;transform:translateZ(0)}}.router-transition-f7-fade-backward,.router-transition-f7-fade-forward{background:var(--f7-page-bg-color)}.router-transition-f7-fade-backward .page,.router-transition-f7-fade-forward .page{pointer-events:none}.ios .router-transition-f7-fade-forward .page-next,.md .router-transition-f7-fade-forward .page-next{animation:f7-fade-in var(--f7-page-fade-transition-duration) forwards;opacity:0}.ios .router-transition-f7-fade-backward .page-current,.ios .router-transition-f7-fade-forward .page-current,.md .router-transition-f7-fade-backward .page-current,.md .router-transition-f7-fade-forward .page-current{animation:f7-fade-out var(--f7-page-fade-transition-duration) forwards}.ios .router-transition-f7-fade-backward .page-previous,.md .router-transition-f7-fade-backward .page-previous{animation:f7-fade-in var(--f7-page-fade-transition-duration) forwards}@keyframes f7-fade-in{0%{opacity:0}50%{opacity:0}to{opacity:1}}@keyframes f7-fade-out{0%{opacity:1}50%{opacity:0}to{opacity:0}}.router-transition-f7-flip-backward,.router-transition-f7-flip-forward{background:#000;perspective:1200px}.router-transition-f7-flip-backward .page,.router-transition-f7-flip-forward .page{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;pointer-events:none}.router-transition-f7-flip-forward .page-next{animation:f7-flip-next-to-current var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}.router-transition-f7-flip-forward .page-current{animation:f7-flip-current-to-prev var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}.router-transition-f7-flip-backward .page-current{animation:f7-flip-current-to-next var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}.router-transition-f7-flip-backward .page-previous{animation:f7-flip-prev-to-current var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}@keyframes f7-flip-next-to-current{0%{border-radius:32px;transform:translateZ(-100vmax) rotateY(180deg)}to{border-radius:0;transform:translateZ(0) rotateY(0deg)}}@keyframes f7-flip-current-to-next{0%{border-radius:0;transform:translateZ(0) rotateY(0deg)}to{border-radius:32px;transform:translateZ(-100vmax) rotateY(180deg)}}@keyframes f7-flip-current-to-prev{0%{border-radius:0;transform:translateZ(0) rotateY(0deg)}to{border-radius:32px;transform:translateZ(-100vmax) rotateY(-180deg)}}@keyframes f7-flip-prev-to-current{0%{border-radius:32px;transform:translateZ(-100vmax) rotateY(-180deg)}to{border-radius:0;transform:translateZ(0) rotateY(0deg)}}.router-transition-f7-parallax-forward .page{pointer-events:none}.router-transition-f7-parallax-forward .page-next{animation:f7-parallax-next-to-current var(--f7-page-parallax-transition-duration) forwards}.router-transition-f7-parallax-forward .page-current{animation:f7-parallax-current-to-prev var(--f7-page-parallax-transition-duration) forwards}.router-transition-f7-parallax-backward .page{pointer-events:none}.router-transition-f7-parallax-backward .page-current{animation:f7-parallax-current-to-next var(--f7-page-parallax-transition-duration) forwards}.router-transition-f7-parallax-backward .page-previous{animation:f7-parallax-prev-to-current var(--f7-page-parallax-transition-duration) forwards}@keyframes f7-parallax-next-to-current{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes f7-parallax-current-to-next{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes f7-parallax-current-to-prev{0%{transform:translateX(0)}to{transform:translateX(-20%)}}@keyframes f7-parallax-prev-to-current{0%{transform:translateX(-20%)}to{transform:translateX(0)}}.router-transition-f7-push-forward .page{pointer-events:none}.router-transition-f7-push-forward .page-next{animation:f7-push-next-to-current var(--f7-page-push-transition-duration) forwards}.router-transition-f7-push-forward .page-current{animation:f7-push-current-to-prev var(--f7-page-push-transition-duration) forwards}.router-transition-f7-push-backward .page{pointer-events:none}.router-transition-f7-push-backward .page-current{animation:f7-push-current-to-next var(--f7-page-push-transition-duration) forwards}.router-transition-f7-push-backward .page-previous{animation:f7-push-prev-to-current var(--f7-page-push-transition-duration) forwards}@keyframes f7-push-next-to-current{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes f7-push-current-to-next{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes f7-push-current-to-prev{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes f7-push-prev-to-current{0%{transform:translateX(-100%)}to{transform:translateX(0)}}:root{--f7-link-highlight-black:rgba(0,0,0,0.1);--f7-link-highlight-white:rgba(255,255,255,0.15);--f7-link-highlight-color:rgba(var(--f7-theme-color-rgb),0.15)}.ios{--f7-link-pressed-opacity:0.3}.link,.tab-link{--f7-touch-ripple-color:var(--f7-link-touch-ripple-color,rgba(var(--f7-theme-color-rgb),0.25));align-content:center;align-items:center;box-sizing:border-box;display:inline-flex;justify-content:center;position:relative;z-index:1}.link i+i,.link i+span,.link span+i,.link span+span{margin-left:4px}.link[class*=color-]{color:var(--f7-theme-color)}.ios .link{transition:opacity .3s}.ios .link.active-state{opacity:var(--f7-link-pressed-opacity);transition-duration:0ms}:root{--f7-navbar-hide-show-transition-duration:400ms;--f7-navbar-title-line-height:1.2;--f7-navbar-subtitle-text-align:inherit;--f7-navbar-large-title-line-height:1.2;--f7-navbar-large-title-text-color:inherit;--f7-navbar-large-title-padding-left:16px;--f7-navbar-large-title-padding-right:16px}.ios{--f7-navbar-height:44px;--f7-navbar-font-size:17px;--f7-navbar-title-font-size:inherit;--f7-navbar-inner-padding-left:8px;--f7-navbar-inner-padding-right:8px;--f7-navbar-title-font-weight:600;--f7-navbar-title-margin-left:0;--f7-navbar-title-margin-right:0;--f7-navbar-title-text-align:center;--f7-navbar-subtitle-font-size:10px;--f7-navbar-subtitle-line-height:1;--f7-navbar-large-title-height:52px;--f7-navbar-large-title-font-size:34px;--f7-navbar-large-title-font-weight:700;--f7-navbar-large-title-letter-spacing:-0.03em;--f7-navbar-large-title-padding-vertical:6px;--f7-navbar-subtitle-text-color:rgba(0,0,0,0.55)}.ios .dark,.ios.dark{--f7-navbar-subtitle-text-color:rgba(255,255,255,0.55)}.md{--f7-navbar-height:64px;--f7-navbar-font-size:16px;--f7-navbar-title-font-size:22px;--f7-navbar-inner-padding-left:0px;--f7-navbar-inner-padding-right:0px;--f7-navbar-title-font-weight:400;--f7-navbar-title-margin-left:0px;--f7-navbar-title-margin-right:16px;--f7-navbar-title-text-align:left;--f7-navbar-subtitle-font-size:14px;--f7-navbar-subtitle-line-height:1.2;--f7-navbar-large-title-font-size:28px;--f7-navbar-large-title-height:88px;--f7-navbar-large-title-font-weight:400;--f7-navbar-large-title-letter-spacing:0;--f7-navbar-large-title-padding-vertical:8px;--f7-navbar-link-height:48px;--f7-navbar-link-line-height:48px}.md,.md .dark,.md [class*=color-]{--f7-navbar-link-color:var(--f7-md-on-surface);--f7-navbar-text-color:var(--f7-md-on-surface);--f7-navbar-subtitle-text-color:var(--f7-md-on-surface-variant)}.navbar,.navbars{left:0;top:0;width:100%;z-index:500}.navbars{position:absolute}.navbars .navbar{z-index:auto}.navbars .navbar-transitioning{z-index:500}.navbar{--f7-navbar-large-collapse-progress:0;-webkit-backface-visibility:hidden;backface-visibility:hidden;box-sizing:border-box;color:var(--f7-navbar-text-color,var(--f7-bars-text-color));font-size:var(--f7-navbar-font-size);height:calc(var(--f7-navbar-height) + var(--f7-safe-area-top));margin:0;position:relative}.navbar b{font-weight:500}.navbar a{color:var(--f7-navbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.navbar a.link{display:flex;height:var(--f7-navbar-link-height,var(--f7-navbar-height));justify-content:flex-start;line-height:var(--f7-navbar-link-line-height,var(--f7-navbar-height))}.navbar .left,.navbar .right,.navbar .title{position:relative;z-index:10}.navbar .title{display:inline-block;flex-shrink:10;font-size:var(--f7-navbar-title-font-size);font-weight:var(--f7-navbar-title-font-weight);line-height:var(--f7-navbar-title-line-height);margin-left:var(--f7-navbar-title-margin-left);margin-right:var(--f7-navbar-title-margin-left);overflow:hidden;position:relative;text-align:var(--f7-navbar-title-text-align);text-overflow:ellipsis;white-space:nowrap}.navbar .subtitle{color:var(--f7-navbar-subtitle-text-color);display:block;font-size:var(--f7-navbar-subtitle-font-size);font-weight:400;line-height:var(--f7-navbar-subtitle-line-height);text-align:var(--f7-navbar-subtitle-text-align)}.navbar .left,.navbar .right{align-items:center;display:flex;flex-shrink:0;justify-content:flex-start}.navbar .right:first-child{height:100%;position:absolute}.navbar .no-outline .navbar-bg:after,.navbar .no-outline .title-large:after,.navbar.no-outline .navbar-bg:after,.navbar.no-outline .title-large:after{display:none!important}.navbar-hidden .navbar .navbar-bg:before,.navbar.navbar-hidden .navbar-bg:before{opacity:0!important}.navbar-bg{background:var(--f7-navbar-bg-color);background-color:var(--f7-navbar-bg-color,var(--f7-bars-bg-color));height:100%;left:0;pointer-events:none;position:absolute;top:0;transition-property:transform;width:100%;z-index:0}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .navbar-bg{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-navbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.navbar-bg:after,.navbar-bg:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.navbar-bg:after{background-color:var(--f7-navbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15;z-index:1}.navbar-transitioning,.navbar-transitioning .left,.navbar-transitioning .navbar-bg,.navbar-transitioning .navbar-bg:before,.navbar-transitioning .right,.navbar-transitioning .subnavbar,.navbar-transitioning .title,.navbar-transitioning .title-large-text{transition-duration:var(--f7-navbar-hide-show-transition-duration)}.navbar-page-transitioning,.navbar-page-transitioning .navbar-bg,.navbar-page-transitioning .title-large-text{transition-duration:var(--f7-page-swipeback-transition-duration)!important}.navbar-hidden{transform:translate3d(0,calc(var(--f7-navbar-height)*-1),0)}.navbar-hidden .navbar-inner{pointer-events:none}.navbar-hidden .navbar-inner>.left,.navbar-hidden .navbar-inner>.right,.navbar-hidden .navbar-inner>.title{opacity:0!important}.navbar-hidden .subnavbar{pointer-events:auto}.navbar-hidden-statusbar{transform:translate3d(0,calc(var(--f7-navbar-height)*-1 - var(--f7-safe-area-top)),0)}.navbar-large-hidden .navbar-large{--f7-navbar-large-collapse-progress:1}.navbar-inner{align-items:center;bottom:0;box-sizing:border-box;display:flex;height:100%;left:0;padding:var(--f7-safe-area-top) calc(var(--f7-navbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-navbar-inner-padding-left) + var(--f7-safe-area-left));transform:translateZ(0);width:100%;z-index:10}.navbar-inner,.navbars>.navbar,.page>.navbar,.view>.navbar,.views>.navbar{position:absolute}.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(.with-searchbar-expandable-enabled) .navbar-bg,.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(.with-searchbar-expandable-enabled) .title{opacity:0}.navbar-large .navbar-bg{height:calc(100% + var(--f7-navbar-large-title-height));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.navbar-large-transparent .navbar-bg,.navbar-large.navbar-transparent .navbar-bg{opacity:var(--f7-navbar-large-collapse-progress)}.ios .router-navbar-transition-from-large .navbar-bg,.ios .router-navbar-transition-to-large .navbar-bg,.navbar-bg.ios-swipeback-navbar-bg-large,.navbar-large-transparent .navbar-bg.ios-swipeback-navbar-bg-large,.navbar-large.navbar-transparent .navbar-bg.ios-swipeback-navbar-bg-large{height:calc(100% + var(--f7-navbar-large-title-height));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.ios .navbar:not(.navbar-large) .navbar-bg{--f7-navbar-large-collapse-progress:1}.navbar-large .title{opacity:var(--f7-navbar-large-collapse-progress)}.navbar-large-collapsed{--f7-navbar-large-collapse-progress:1}.navbar-large-collapsed .title-large{pointer-events:none}.navbar .title-large{display:flex;height:var(--f7-navbar-large-title-height);left:0;position:absolute;right:0;top:100%;z-index:5}.navbar .title-large,.navbar .title-large-text{box-sizing:border-box;overflow:hidden;white-space:nowrap}.navbar .title-large-text{color:var(--f7-navbar-large-title-text-color);font-size:var(--f7-navbar-large-title-font-size);font-weight:var(--f7-navbar-large-title-font-weight);letter-spacing:var(--f7-navbar-large-title-letter-spacing);line-height:var(--f7-navbar-large-title-line-height);padding:var(--f7-navbar-large-title-padding-vertical) calc(var(--f7-navbar-large-title-padding-right) + var(--f7-safe-area-right)) var(--f7-navbar-large-title-padding-vertical) calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left));text-overflow:ellipsis;transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0);transform-origin:calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center;width:100%}.navbar-no-title-large-transition .title-large-text{transition-duration:0ms}.navbars~*,.navbar~*{--f7-page-navbar-offset:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbars~* .page-with-navbar-large,.navbars~.page-with-navbar-large,.navbar~* .page-with-navbar-large,.navbar~.page-with-navbar-large,.page-with-navbar-large .navbar~*{--f7-page-navbar-offset:calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top))}.page.no-navbar,.page.no-navbar .navbar~*{--f7-page-navbar-offset:var(--f7-safe-area-top)}.ios{--f7-navbarLeftTextOffset:calc(16px + var(--f7-navbar-inner-padding-left));--f7-navbarTitleLargeOffset:var(--f7-navbar-large-title-padding-left);--f7-navbar-large-bg-center-top:translateX(0) translateY(calc(var(--f7-navbar-large-title-height)*-1));--f7-navbar-large-bg-center-bottom:translateX(0) translateY(0);--f7-navbar-large-bg-left-top:translateX(-100%) translateY(calc(var(--f7-navbar-large-title-height)*-1));--f7-navbar-large-bg-left-bottom:translateX(-100%) translateY(0);--f7-navbar-large-bg-right-top:translateX(100%) translateY(calc(var(--f7-navbar-large-title-height)*-1));--f7-navbar-large-bg-right-bottom:translateX(100%) translateY(0)}.ios .navbar .title-large{align-items:flex-end}.ios .navbar a.icon-only{justify-content:center;margin:0;width:44px}.ios .navbar .left a+a,.ios .navbar .right a+a{margin-left:16px}.ios .navbar b{font-weight:600}.ios .navbar .left{margin-right:10px}.ios .navbar .right{margin-left:10px}.ios .navbar .right:first-child{right:calc(8px + var(--f7-safe-area-right))}.ios .navbar-inner{justify-content:space-between}.ios .navbar-inner-left-title{justify-content:flex-start}.ios .navbar-inner-left-title .right{margin-left:auto}.ios .navbar-inner-left-title .title{margin-right:10px;text-align:left}.ios .navbar-next .fading,.ios .navbar-next .left,.ios .navbar-next .right,.ios .navbar-next .subnavbar,.ios .navbar-next .title,.ios .view-master-detail .navbar-previous:not(.navbar-master) .fading,.ios .view-master-detail .navbar-previous:not(.navbar-master) .left,.ios .view-master-detail .navbar-previous:not(.navbar-master) .right,.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar,.ios .view-master-detail .navbar-previous:not(.navbar-master) .title,.ios .view:not(.view-master-detail) .navbar-previous .fading,.ios .view:not(.view-master-detail) .navbar-previous .left,.ios .view:not(.view-master-detail) .navbar-previous .right,.ios .view:not(.view-master-detail) .navbar-previous .subnavbar,.ios .view:not(.view-master-detail) .navbar-previous .title{opacity:0}.ios .view-master-detail .navbar-previous:not(.navbar-master),.ios .view:not(.view-master-detail) .navbar-previous{pointer-events:none}.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large,.ios .view:not(.view-master-detail) .navbar-previous .title-large{opacity:0;transition-duration:0ms}.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large .title-large-text,.ios .view:not(.view-master-detail) .navbar-previous .title-large .title-large-text{transform:scale(.5);transition-duration:0ms}.ios .view-master-detail .navbar-previous:not(.navbar-master) .sliding .subnavbar,.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar.sliding,.ios .view:not(.view-master-detail) .navbar-previous .sliding .subnavbar,.ios .view:not(.view-master-detail) .navbar-previous .subnavbar.sliding{opacity:1;transform:translate3d(-100%,0,0)}.ios .view-master-detail .navbar-previous:not(.navbar-master) .navbar-bg,.ios .view:not(.view-master-detail) .navbar-previous .navbar-bg{transform:translateX(-100%)}.ios .navbar-next{pointer-events:none}.ios .navbar-next .navbar-bg{transform:translateX(100%)}.ios .navbar-next .title-large .title-large-text{transform:translateX(100%) translateY(calc(var(--f7-navbar-large-title-height)*-1));transition-duration:0ms}.ios .navbar-next .sliding .subnavbar,.ios .navbar-next .subnavbar.sliding{opacity:1;transform:translate3d(100%,0,0)}.ios .router-transition .navbar,.ios .router-transition .navbar-bg{transition-duration:var(--f7-page-transition-duration)}.ios .router-transition .navbar-bg{animation-duration:var(--f7-page-transition-duration);animation-fill-mode:forwards}.ios .router-transition .title-large,.ios .router-transition .title-large-text{transition-duration:0ms}.ios .router-transition .navbar-current .left,.ios .router-transition .navbar-current .right,.ios .router-transition .navbar-current .subnavbar,.ios .router-transition .navbar-current .title{animation:ios-navbar-element-fade-out var(--f7-page-transition-duration) forwards}.ios .router-transition .navbar-current .sliding .left,.ios .router-transition .navbar-current .sliding .left .icon+span,.ios .router-transition .navbar-current .sliding .right,.ios .router-transition .navbar-current .sliding .title,.ios .router-transition .navbar-current .sliding.left,.ios .router-transition .navbar-current .sliding.left .icon+span,.ios .router-transition .navbar-current .sliding.right,.ios .router-transition .navbar-current .sliding.title{animation:none;opacity:0!important;transition-duration:var(--f7-page-transition-duration)}.ios .router-transition .navbar-current .sliding .subnavbar,.ios .router-transition .navbar-current .sliding.subnavbar{animation:none;opacity:1;transition-duration:var(--f7-page-transition-duration)}.ios .router-transition-backward .navbar-previous .left,.ios .router-transition-backward .navbar-previous .right,.ios .router-transition-backward .navbar-previous .subnavbar,.ios .router-transition-backward .navbar-previous .title,.ios .router-transition-forward .navbar-next .left,.ios .router-transition-forward .navbar-next .right,.ios .router-transition-forward .navbar-next .subnavbar,.ios .router-transition-forward .navbar-next .title{animation:ios-navbar-element-fade-in var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .navbar-previous .sliding .left,.ios .router-transition-backward .navbar-previous .sliding .left .icon+span,.ios .router-transition-backward .navbar-previous .sliding .right,.ios .router-transition-backward .navbar-previous .sliding .subnavbar,.ios .router-transition-backward .navbar-previous .sliding .title,.ios .router-transition-backward .navbar-previous .sliding.left,.ios .router-transition-backward .navbar-previous .sliding.left .icon+span,.ios .router-transition-backward .navbar-previous .sliding.right,.ios .router-transition-backward .navbar-previous .sliding.title,.ios .router-transition-forward .navbar-next .sliding .left,.ios .router-transition-forward .navbar-next .sliding .left .icon+span,.ios .router-transition-forward .navbar-next .sliding .right,.ios .router-transition-forward .navbar-next .sliding .subnavbar,.ios .router-transition-forward .navbar-next .sliding .title,.ios .router-transition-forward .navbar-next .sliding.left,.ios .router-transition-forward .navbar-next .sliding.left .icon+span,.ios .router-transition-forward .navbar-next .sliding.right,.ios .router-transition-forward .navbar-next .sliding.title{animation:none;opacity:1!important;transform:translateZ(0)!important;transition-duration:var(--f7-page-transition-duration)}.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title,.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title{animation:none}.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title,.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title,.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title,.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title{opacity:0!important}.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .left,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .right,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .subnavbar,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .title,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .left,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .right,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .subnavbar,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .title{animation:none}.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large{overflow:visible}.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-up var(--f7-page-transition-duration) forwards,ios-navbar-large-title-text-fade-out var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large .left .back span{animation:ios-navbar-back-text-next-to-current var(--f7-page-transition-duration) forwards;transform-origin:left center;transition:none}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large{overflow:visible}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-forward .navbar-next.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-left var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title,.ios .router-transition-forward .navbar-next.navbar-large:not(.navbar-large-collapsed) .title{animation:none;opacity:0!important;transition-duration:0}.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large .left .back span{animation:ios-navbar-back-text-current-to-previous var(--f7-page-transition-duration) forwards;transform-origin:left center;transition:none}.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large{overflow:visible}.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-right var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large{opacity:0}.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large{opacity:1;overflow:visible}.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-down var(--f7-page-transition-duration) forwards,ios-navbar-large-title-text-fade-in var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title,.ios .router-transition-backward .navbar-previous.navbar-large:not(.navbar-large-collapsed) .title{animation:none;opacity:0!important;transition-duration:0}.ios .router-transition-forward .navbar-current .navbar-bg,.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-lb}.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-lt}.ios .router-transition-forward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-lb}.ios .router-transition-forward .navbar-current.navbar-large-collapsed:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-lt}.ios .router-transition-forward .navbar-next .navbar-bg,.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-rb-to-cb}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-rb-to-ct}.ios .router-transition-forward .navbar-next:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-rt-to-cb}.ios .router-transition-backward .navbar-current .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-rb}.ios .router-transition-backward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-rb}.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-rt}.ios .router-transition-backward .navbar-current.navbar-large-collapsed .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-rt}.ios .router-transition-backward .navbar-current.navbar-large-collapsed.router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-rb}.ios .router-transition-backward .navbar-previous .navbar-bg{animation-name:ios-navbar-bg-from-lb-to-cb}.ios .router-transition-backward .navbar-previous:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-lt-to-cb}.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-lb-to-ct}.ios .router-transition-backward .navbar-previous.navbar-large-collapsed .navbar-bg{animation-name:ios-navbar-bg-from-lt-to-ct}.view-master-detail .navbars{z-index:auto}.view-master-detail .page-master{z-index:525}.view-master-detail .navbar-master .navbar-bg,.view-master-detail .navbar-master .navbar-inner{z-index:550}.view-master-detail .navbar-master-detail .navbar-bg,.view-master-detail .navbar-master-detail .navbar-inner{z-index:500}.view-master-detail .navbar-master.navbar-previous{pointer-events:auto}.view-master-detail .navbar-master.navbar-previous .left,.view-master-detail .navbar-master.navbar-previous .right,.view-master-detail .navbar-master.navbar-previous .subnavbar,.view-master-detail .navbar-master.navbar-previous:not(.navbar-large) .title{opacity:1}.view-master-detail.router-transition .navbar-master .fading,.view-master-detail.router-transition .navbar-master .left,.view-master-detail.router-transition .navbar-master .left .icon+span,.view-master-detail.router-transition .navbar-master .right,.view-master-detail.router-transition .navbar-master .subnavbar,.view-master-detail.router-transition .navbar-master:not(.navbar-large) .title{animation:none!important;opacity:1!important;transform:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master .navbar-bg{animation:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master.navbar-large .title{animation:none!important;opacity:calc(-1 + var(--f7-navbar-large-collapse-progress)*2)!important;transform:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master.navbar-large .title-large,.view-master-detail.router-transition .navbar-master.navbar-large .title-large-text{animation:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master.navbar-large-transparent .navbar-bg,.view-master-detail.router-transition .navbar-master.navbar-large.navbar-transparent .navbar-bg{height:100%!important;opacity:var(--f7-navbar-large-collapse-progress)!important}@keyframes ios-navbar-element-fade-in{0%{opacity:0}25%{opacity:0}to{opacity:1}}@keyframes ios-navbar-element-fade-out{0%{opacity:1}75%{opacity:0}to{opacity:0}}@keyframes ios-navbar-large-title-text-slide-up{0%{transform:translateX(0) translateY(0) scale(1)}to{transform:translateX(calc(var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset))) translateY(calc(var(--f7-navbar-large-title-height)*-1 + var(--f7-navbar-large-title-padding-vertical))) scale(.5)}}@keyframes ios-navbar-large-title-text-slide-down{0%{transform:translateX(calc(var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset))) translateY(calc(var(--f7-navbar-large-title-height)*-1 + var(--f7-navbar-large-title-padding-vertical)/2)) scale(.5)}to{transform:translateX(0) translateY(0) scale(1)}}@keyframes ios-navbar-large-title-text-slide-left{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes ios-navbar-large-title-text-slide-right{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes ios-navbar-large-title-text-fade-out{0%{opacity:1}80%{opacity:0}to{opacity:0}}@keyframes ios-navbar-large-title-text-fade-in{0%{opacity:0}20%{opacity:0}to{opacity:1}}@keyframes ios-navbar-back-text-current-to-previous{0%{opacity:1;transform:translateY(0) translateX(0) scale(1)}80%{opacity:0}to{opacity:0;transform:translateX(calc(var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset))) translateY(calc(var(--f7-navbar-large-title-height)*1 - var(--f7-navbar-large-title-padding-vertical)/2)) scale(2)}}@keyframes ios-navbar-back-text-next-to-current{0%{opacity:0;transform:translateX(calc(var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset))) translateY(calc(var(--f7-navbar-large-title-height)*1 + var(--f7-navbar-large-title-padding-vertical)/2)) scale(2)}20%{opacity:0}to{opacity:1;transform:translateX(0) translateY(0) scale(1)}}@keyframes ios-navbar-bg-from-cb-to-lb{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-left-bottom)}}@keyframes ios-navbar-bg-from-cb-to-lt{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-left-top)}}@keyframes ios-navbar-bg-from-ct-to-lb{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-left-bottom)}}@keyframes ios-navbar-bg-from-ct-to-lt{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-left-top)}}@keyframes ios-navbar-bg-from-rb-to-cb{0%{transform:var(--f7-navbar-large-bg-right-bottom)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-rb-to-ct{0%{transform:var(--f7-navbar-large-bg-right-bottom)}to{transform:var(--f7-navbar-large-bg-center-top)}}@keyframes ios-navbar-bg-from-rt-to-cb{0%{transform:var(--f7-navbar-large-bg-right-top)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-cb-to-rb{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-right-bottom)}}@keyframes ios-navbar-bg-from-ct-to-rb{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-right-bottom)}}@keyframes ios-navbar-bg-from-cb-to-rt{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-right-top)}}@keyframes ios-navbar-bg-from-ct-to-rt{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-right-top)}}@keyframes ios-navbar-bg-from-lb-to-cb{0%{transform:var(--f7-navbar-large-bg-left-bottom)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-lt-to-cb{0%{transform:var(--f7-navbar-large-bg-left-top)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-lb-to-ct{0%{transform:var(--f7-navbar-large-bg-left-bottom)}to{transform:var(--f7-navbar-large-bg-center-top)}}@keyframes ios-navbar-bg-from-lt-to-ct{0%{transform:var(--f7-navbar-large-bg-left-top)}to{transform:var(--f7-navbar-large-bg-center-top)}}.md .navbar .title-large{align-items:center}.md .navbar .left{margin-left:4px;margin-right:4px}.md .navbar a.link{min-width:48px;padding:0 12px}.md .navbar a.icon-only{flex-shrink:0;min-width:0;width:48px}.md .navbar .right{margin-left:auto;margin-right:4px}.md .navbar .right:first-child{right:var(--f7-safe-area-right)}.md .navbar-inner{justify-content:flex-start;overflow:hidden}.md .navbar-large:not(.navbar-large-collapsed) .navbar-inner,.md .page.page-with-subnavbar .navbar-inner{overflow:visible}.md .navbar-inner:not(.navbar-inner-centered-title) .title:first-child{margin-left:16px}.md .navbar-inner-centered-title{justify-content:space-between}.md .navbar-inner-centered-title .right{margin-left:0}.md .navbar-inner-centered-title .title{text-align:center}:root{--f7-tabbar-link-active-bg-color:transparent;--f7-tabbar-label-text-transform:none;--f7-toolbar-hide-show-transition-duration:400ms}.ios{--f7-toolbar-height:44px;--f7-toolbar-font-size:17px;--f7-toolbar-inner-padding-left:8px;--f7-toolbar-inner-padding-right:8px;--f7-toolbar-link-font-weight:400;--f7-tabbar-icons-height:50px;--f7-tabbar-icons-tablet-height:50px;--f7-tabbar-icon-size:28px;--f7-tabbar-link-text-transform:none;--f7-tabbar-link-font-weight:400;--f7-tabbar-link-letter-spacing:0;--f7-tabbar-label-font-size:12px;--f7-tabbar-label-tablet-font-size:14px;--f7-tabbar-label-font-weight:500;--f7-tabbar-label-letter-spacing:0.01;--f7-tabbar-link-inactive-color:rgba(0,0,0,0.4)}.ios .dark,.ios.dark{--f7-tabbar-link-inactive-color:rgba(255,255,255,0.54)}.md{--f7-toolbar-height:56px;--f7-toolbar-font-size:14px;--f7-toolbar-inner-padding-left:0px;--f7-toolbar-inner-padding-right:0px;--f7-tabbar-icons-height:80px;--f7-tabbar-icons-tablet-height:80px;--f7-tabbar-icon-size:24px;--f7-tabbar-link-text-transform:none;--f7-tabbar-link-font-weight:500;--f7-tabbar-link-letter-spacing:0;--f7-toolbar-link-font-weight:500;--f7-tabbar-label-font-size:12px;--f7-tabbar-label-tablet-font-size:12px;--f7-tabbar-label-font-weight:500;--f7-tabbar-label-letter-spacing:0}.md,.md .dark,.md [class*=color-]{--f7-tabbar-link-active-color:var(--f7-md-on-secondary-container);--f7-tabbar-link-active-border-color:var(--f7-md-primary);--f7-tabbar-link-inactive-color:var(--f7-md-on-surface-variant);--f7-tabbar-link-active-icon-bg-color:var(--f7-md-secondary-container)}.toolbar{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-toolbar-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-toolbar-text-color,var(--f7-bars-text-color));font-size:var(--f7-toolbar-font-size);height:var(--f7-toolbar-height);left:0;margin:0;position:relative;transform:translateZ(0);width:100%;z-index:600}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .toolbar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-toolbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.toolbar b{font-weight:600}.toolbar a{box-sizing:border-box;color:var(--f7-toolbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)));flex-shrink:1;position:relative;text-overflow:ellipsis;white-space:nowrap}.toolbar .link{display:flex;font-weight:var(--f7-toolbar-link-font-weight);height:var(--f7-toolbar-link-height,var(--f7-toolbar-height));line-height:var(--f7-toolbar-link-line-height,var(--f7-toolbar-height))}.toolbar i.icon{display:block}.toolbar:after,.toolbar:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.page>.toolbar,.view>.toolbar,.views>.toolbar{position:absolute}.ios .toolbar-top-ios,.md .toolbar-top-md,.toolbar-top{top:0}.ios .toolbar-top-ios .tab-link-highlight,.md .toolbar-top-md .tab-link-highlight,.toolbar-top .tab-link-highlight{bottom:0}.ios .toolbar-top-ios.no-outline:after,.ios .toolbar-top-ios.toolbar-hidden:before,.md .toolbar-top-md.no-outline:after,.md .toolbar-top-md.toolbar-hidden:before,.toolbar-top.no-outline:after,.toolbar-top.toolbar-hidden:before{display:none!important}.ios .toolbar-top-ios:after,.ios .toolbar-top-ios:before,.md .toolbar-top-md:after,.md .toolbar-top-md:before,.toolbar-top:after,.toolbar-top:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.ios .toolbar-top-ios:after,.md .toolbar-top-md:after,.toolbar-top:after{background-color:var(--f7-toolbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .toolbar-bottom-ios,.md .toolbar-bottom-md,.toolbar-bottom{bottom:0;height:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.ios .toolbar-bottom-ios .tab-link-highlight,.md .toolbar-bottom-md .tab-link-highlight,.toolbar-bottom .tab-link-highlight{top:0}.ios .toolbar-bottom-ios .toolbar-inner,.md .toolbar-bottom-md .toolbar-inner,.toolbar-bottom .toolbar-inner{bottom:var(--f7-safe-area-bottom);height:auto;top:0}.ios .toolbar-bottom-ios.no-outline:before,.ios .toolbar-bottom-ios.toolbar-hidden:after,.md .toolbar-bottom-md.no-outline:before,.md .toolbar-bottom-md.toolbar-hidden:after,.toolbar-bottom.no-outline:before,.toolbar-bottom.toolbar-hidden:after{display:none!important}.ios .toolbar-bottom-ios:before,.md .toolbar-bottom-md:before,.toolbar-bottom:before{background-color:var(--f7-toolbar-border-color,var(--f7-bars-border-color));bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.toolbar-inner{align-content:center;align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:space-between;left:0;overflow:hidden;padding:0 calc(var(--f7-toolbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-toolbar-inner-padding-left) + var(--f7-safe-area-left));position:absolute;top:0;width:100%}.views>.tabbar,.views>.tabbar-icons{z-index:5001}.tabbar a,.tabbar-icons a{color:var(--f7-tabbar-link-inactive-color)}.tabbar .link,.tabbar-icons .link{line-height:1.4}.tabbar .link,.tabbar .tab-link,.tabbar-icons .link,.tabbar-icons .tab-link{align-items:center;box-sizing:border-box;display:flex;flex-direction:column;font-weight:var(--f7-tabbar-link-font-weight);height:100%;justify-content:center;letter-spacing:var(--f7-tabbar-link-letter-spacing);overflow:hidden;text-transform:var(--f7-tabbar-link-text-transform);width:100%}.tabbar .tab-link-active,.tabbar-icons .tab-link-active{background-color:var(--f7-tabbar-link-active-bg-color,transparent);color:var(--f7-tabbar-link-active-color,var(--f7-theme-color))}.tabbar i.icon,.tabbar-icons i.icon{font-size:var(--f7-tabbar-icon-size);height:var(--f7-tabbar-icon-size);line-height:var(--f7-tabbar-icon-size)}.md .tabbar-icons.tabbar-icons .tab-link-highlight,.md .tabbar.tabbar-icons .tab-link-highlight{display:none}.md .tabbar-icons:not(.tabbar-icons) .tab-link-highlight,.md .tabbar:not(.tabbar-icons) .tab-link-highlight{background:var(--f7-tabbar-link-active-border-color,var(--f7-theme-color));height:2px;left:0;position:absolute;transition-duration:.3s}.tabbar-icons{--f7-toolbar-height:var(--f7-tabbar-icons-height)}.tabbar-icons .link,.tabbar-icons .tab-link{align-items:center;height:100%;justify-content:center}.tabbar-icons .tabbar-label{display:block;font-size:var(--f7-tabbar-label-font-size);font-weight:var(--f7-tabbar-label-font-weight);letter-spacing:var(--f7-tabbar-label-letter-spacing);line-height:1;margin:0;position:relative;text-overflow:ellipsis;text-transform:var(--f7-tabbar-label-text-transform);white-space:nowrap}@media (min-width:768px) and (min-height:600px){:root{--f7-tabbar-icons-height:var(--f7-tabbar-icons-tablet-height);--f7-tabbar-label-font-size:var(--f7-tabbar-label-tablet-font-size)}}.tabbar-scrollable .toolbar-inner{-webkit-overflow-scrolling:touch;justify-content:flex-start;overflow:auto;scrollbar-color:transparent;scrollbar-width:none}.tabbar-scrollable .toolbar-inner::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-track{background:transparent;box-shadow:none}.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.tabbar-scrollable .link,.tabbar-scrollable .tab-link{flex-shrink:0;width:auto}.navbar-transitioning+.toolbar,.navbar-transitioning~* .toolbar,.toolbar-transitioning{transition-duration:var(--f7-toolbar-hide-show-transition-duration)}.ios .toolbar-bottom-ios~*,.md .toolbar-bottom-md~*,.toolbar-bottom~*{--f7-page-toolbar-bottom-offset:var(--f7-toolbar-height)}.ios .toolbar-bottom-ios.tabbar-icons~*,.md .toolbar-bottom-md.tabbar-icons~*,.toolbar-bottom.tabbar-icons~*{--f7-page-toolbar-bottom-offset:var(--f7-tabbar-icons-height)}.ios .toolbar-bottom-ios.toolbar-hidden,.md .toolbar-bottom-md.toolbar-hidden,.toolbar-bottom.toolbar-hidden{transform:translate3d(0,100%,0)}.ios .toolbar-top-ios~*,.md .toolbar-top-md~*,.toolbar-top~*{--f7-page-toolbar-top-offset:var(--f7-toolbar-height)}.ios .toolbar-top-ios.tabbar-icons~*,.md .toolbar-top-md.tabbar-icons~*,.toolbar-top.tabbar-icons~*{--f7-page-toolbar-top-offset:var(--f7-tabbar-icons-height)}.ios .toolbar-top-ios.toolbar-hidden,.md .toolbar-top-md.toolbar-hidden,.toolbar-top.toolbar-hidden{transform:translate3d(0,-100%,0)}.ios .navbars~* .toolbar-top-ios,.ios .navbars~.page:not(.no-navbar) .toolbar-top-ios,.ios .navbars~.toolbar-top-ios,.ios .navbar~* .toolbar-top-ios,.ios .navbar~.page:not(.no-navbar) .toolbar-top-ios,.ios .navbar~.toolbar-top-ios,.md .navbar~* .toolbar-top-md,.md .navbar~.page:not(.no-navbar) .toolbar-top-md,.md .navbar~.toolbar-top-md,.navbars~* .toolbar-top,.navbars~.page:not(.no-navbar) .toolbar-top,.navbars~.toolbar-top,.navbar~* .toolbar-top,.navbar~.page:not(.no-navbar) .toolbar-top,.navbar~.toolbar-top{top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars~* .toolbar-top-ios.toolbar-hidden,.ios .navbars~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,.ios .navbars~.toolbar-top-ios.toolbar-hidden,.ios .navbar~* .toolbar-top-ios.toolbar-hidden,.ios .navbar~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,.ios .navbar~.toolbar-top-ios.toolbar-hidden,.md .navbar~* .toolbar-top-md.toolbar-hidden,.md .navbar~.page:not(.no-navbar) .toolbar-top-md.toolbar-hidden,.md .navbar~.toolbar-top-md.toolbar-hidden,.navbars~* .toolbar-top.toolbar-hidden,.navbars~.page:not(.no-navbar) .toolbar-top.toolbar-hidden,.navbars~.toolbar-top.toolbar-hidden,.navbar~* .toolbar-top.toolbar-hidden,.navbar~.page:not(.no-navbar) .toolbar-top.toolbar-hidden,.navbar~.toolbar-top.toolbar-hidden{transform:translate3d(0,calc((var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top))*-1),0)}.ios .navbars~* .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbars~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbars~.toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbar~* .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbar~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbar~.toolbar-top-ios.toolbar-hidden.tabbar-icons,.md .navbar~* .toolbar-top-md.toolbar-hidden.tabbar-icons,.md .navbar~.page:not(.no-navbar) .toolbar-top-md.toolbar-hidden.tabbar-icons,.md .navbar~.toolbar-top-md.toolbar-hidden.tabbar-icons,.navbars~* .toolbar-top.toolbar-hidden.tabbar-icons,.navbars~.page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,.navbars~.toolbar-top.toolbar-hidden.tabbar-icons,.navbar~* .toolbar-top.toolbar-hidden.tabbar-icons,.navbar~.page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,.navbar~.toolbar-top.toolbar-hidden.tabbar-icons{transform:translate3d(0,calc((var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top))*-1),0)}.ios .navbar-hidden+.toolbar-top-ios:not(.toolbar-hidden),.ios .navbar-hidden~* .toolbar-top-ios:not(.toolbar-hidden),.md .navbar-hidden+.toolbar-top-md:not(.toolbar-hidden),.md .navbar-hidden~* .toolbar-top-md:not(.toolbar-hidden),.navbar-hidden+.toolbar-top:not(.toolbar-hidden),.navbar-hidden~* .toolbar-top:not(.toolbar-hidden){transform:translate3d(0,calc(0px - var(--f7-navbar-height)),0)}.ios .navbar-large-hidden+.toolbar-top-ios:not(.toolbar-hidden),.ios .navbar-large-hidden~* .toolbar-top-ios:not(.toolbar-hidden),.md .navbar-large-hidden+.toolbar-top-md:not(.toolbar-hidden),.md .navbar-large-hidden~* .toolbar-top-md:not(.toolbar-hidden),.navbar-large-hidden+.toolbar-top:not(.toolbar-hidden),.navbar-large-hidden~* .toolbar-top:not(.toolbar-hidden){transform:translate3d(0,calc(0px - var(--f7-navbar-height) - var(--f7-navbar-large-title-height)),0)}.ios .toolbar a.icon-only{align-items:center;display:flex;justify-content:center;margin:0;min-height:var(--f7-toolbar-height);min-width:44px}.ios .tabbar-icons .link,.ios .tabbar-icons .tab-link{padding-bottom:4px;padding-top:4px}.ios .tabbar-icons .link i+span,.ios .tabbar-icons .tab-link i+span{margin:4px 0 0}@media (min-width:768px) and (min-height:600px){.ios .tabbar .link,.ios .tabbar .tab-link,.ios .tabbar-icons .link,.ios .tabbar-icons .tab-link{flex-direction:row;justify-content:center}.ios .tabbar .link i+span,.ios .tabbar .tab-link i+span,.ios .tabbar-icons .link i+span,.ios .tabbar-icons .tab-link i+span{margin-left:5px}}.ios .tabbar-scrollable .toolbar-inner{justify-content:flex-start}.ios .tabbar-scrollable .link,.ios .tabbar-scrollable .tab-link{padding:0 8px}.md .toolbar .link{justify-content:center;min-width:48px;padding:0 12px}.md .toolbar a.icon-only{flex-shrink:0;min-width:0}.md .tabbar .link,.md .tabbar .tab-link,.md .tabbar-icons .link,.md .tabbar-icons .tab-link{padding-left:0;padding-right:0}.md .tabbar a.icon-only,.md .tabbar-icons a.icon-only{flex-shrink:1}.md .tabbar .tab-link,.md .tabbar-icons .tab-link{overflow:hidden;position:relative;transition-duration:.3s}.md .tabbar i.icon,.md .tabbar-icons i.icon{position:relative}.md .tabbar i.icon:before,.md .tabbar-icons i.icon:before{background:var(--f7-tabbar-link-active-icon-bg-color);border-radius:32px;content:"";height:32px;left:50%;opacity:0;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) scaleX(.5);transition-duration:.2s;width:64px;z-index:-1}.md .tabbar i.icon+.tabbar-label,.md .tabbar-icons i.icon+.tabbar-label{margin-top:8px}.md .tabbar .tab-link-active i.icon:before,.md .tabbar-icons .tab-link-active i.icon:before{opacity:1;transform:translateX(-50%) translateY(-50%) scaleX(1)}.md .tabbar-icons .link,.md .tabbar-icons .tab-link{padding-bottom:8px;padding-top:8px}.md .tabbar-label{line-height:1.2;max-width:100%;overflow:hidden}.md .tabbar-scrollable .toolbar-inner{overflow:auto}.md .tabbar-scrollable .link,.md .tabbar-scrollable .tab-link{padding:0 12px}:root{--f7-subnavbar-title-line-height:1.2}.ios{--f7-subnavbar-height:44px;--f7-subnavbar-inner-padding-left:8px;--f7-subnavbar-inner-padding-right:8px;--f7-subnavbar-title-font-size:34px;--f7-subnavbar-title-font-weight:700;--f7-subnavbar-title-letter-spacing:-0.03em;--f7-subnavbar-title-margin-left:8px}.md{--f7-subnavbar-height:64px;--f7-subnavbar-inner-padding-left:16px;--f7-subnavbar-inner-padding-right:16px;--f7-subnavbar-title-font-size:22px;--f7-subnavbar-title-font-weight:400;--f7-subnavbar-title-letter-spacing:0;--f7-subnavbar-title-margin-left:0px}.subnavbar{align-items:center;background-color:var(--f7-subnavbar-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-subnavbar-text-color,var(--f7-bars-text-color));display:flex;justify-content:space-between;left:0;position:absolute;top:0;width:100%;z-index:600}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .subnavbar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-subnavbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.subnavbar .subnavbar-title{display:inline-block;font-size:var(--f7-subnavbar-title-font-size);font-weight:var(--f7-subnavbar-title-font-weight);letter-spacing:var(--f7-subnavbar-title-letter-spacing);line-height:var(--f7-subnavbar-title-line-height);margin-left:var(--f7-subnavbar-title-margin-left);overflow:hidden;position:relative;text-align:left;text-overflow:ellpsis;white-space:nowrap}.subnavbar .left,.subnavbar .right{align-items:center;display:flex;flex-shrink:0;justify-content:flex-start}.subnavbar .right:first-child{height:100%;position:absolute}.subnavbar a{color:var(--f7-subnavbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.subnavbar a.link{height:var(--f7-subnavbar-link-height,var(--f7-subnavbar-height));line-height:var(--f7-subnavbar-link-line-height,var(--f7-subnavbar-height))}.subnavbar a.icon-only{min-width:var(--f7-subnavbar-height)}.subnavbar.navbar-hidden:before,.subnavbar.no-outline:after{display:none!important}.subnavbar:after,.subnavbar:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.subnavbar:after{background-color:var(--f7-subnavbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.subnavbar-inner{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:space-between;overflow:hidden;padding:0 calc(var(--f7-subnavbar-inner-padding-left) + var(--f7-safe-area-right)) 0 calc(var(--f7-subnavbar-inner-padding-right) + var(--f7-safe-area-left));width:100%}.navbar .subnavbar{top:100%}.page>.subnavbar,.view>.subnavbar,.views>.subnavbar{position:absolute}.navbars~* .subnavbar,.navbars~.page-with-subnavbar:not(.no-navbar) .subnavbar,.navbars~.subnavbar,.navbar~* .subnavbar,.navbar~.page-with-subnavbar:not(.no-navbar) .subnavbar,.navbar~.subnavbar,.page-with-subnavbar .navbar~* .subnavbar,.page-with-subnavbar .navbar~.subnavbar{top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbar .title-large~.subnavbar,.navbars~.page-with-navbar-large:not(.no-navbar) .subnavbar,.navbar~.page-with-navbar-large:not(.no-navbar) .subnavbar,.page-with-subnavbar.page-with-navbar-large .navbar~* .subnavbar,.page-with-subnavbar.page-with-navbar-large .navbar~.subnavbar{top:calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.page-with-subnavbar,.subnavbar~*{--f7-page-subnavbar-offset:var(--f7-subnavbar-height)}.ios .subnavbar{height:calc(var(--f7-subnavbar-height) + 1px);margin-top:-1px;padding-top:1px}.ios .subnavbar .title{align-self:flex-start;flex-shrink:10}.ios .subnavbar .left a+a,.ios .subnavbar .right a+a{margin-left:16px}.ios .subnavbar .left{margin-right:10px}.ios .subnavbar .right{margin-left:10px}.ios .subnavbar .right:first-child{right:8px}.ios .subnavbar a.link{justify-content:flex-start}.ios .subnavbar a.icon-only{justify-content:center;margin:0}.md .subnavbar{height:var(--f7-subnavbar-height)}.md .subnavbar .right{margin-left:auto}.md .subnavbar .right:first-child{right:16px}.md .subnavbar a.link{justify-content:center;padding:0 12px}.md .subnavbar a.icon-only{flex-shrink:0;padding:0 12px}.md .subnavbar-inner>a.link:first-child{margin-left:calc(var(--f7-subnavbar-inner-padding-left)*-1)}.md .subnavbar-inner>a.link:last-child{margin-right:calc(var(--f7-subnavbar-inner-padding-right)*-1)}:root{--f7-block-padding-horizontal:16px;--f7-block-padding-vertical:16px;--f7-block-font-size:inherit;--f7-block-header-margin:10px;--f7-block-footer-margin:10px;--f7-block-header-font-size:14px;--f7-block-footer-font-size:14px;--f7-block-title-text-transform:none;--f7-block-title-white-space:nowrap;--f7-block-title-medium-text-transform:none;--f7-block-title-large-text-transform:none;--f7-block-inset-side-margin:16px}:root .dark,:root.dark{--f7-block-outline-border-color:rgba(255,255,255,0.15)}.ios{--f7-block-text-color:inherit;--f7-block-margin-vertical:35px;--f7-block-outline-border-color:rgba(0,0,0,0.22);--f7-block-title-font-size:16px;--f7-block-title-font-weight:600;--f7-block-title-line-height:20px;--f7-block-title-margin-bottom:10px;--f7-block-title-medium-font-size:22px;--f7-block-title-medium-font-weight:bold;--f7-block-title-medium-line-height:1.4;--f7-block-title-large-font-size:30px;--f7-block-title-large-font-weight:bold;--f7-block-title-large-line-height:1.3;--f7-block-inset-border-radius:8px;--f7-block-title-text-color:#000;--f7-block-strong-text-color:#000;--f7-block-header-text-color:rgba(0,0,0,0.45);--f7-block-footer-text-color:rgba(0,0,0,0.45);--f7-block-strong-bg-color:#fff;--f7-block-title-medium-text-color:#000;--f7-block-title-large-text-color:#000}.ios .dark,.ios.dark{--f7-block-title-text-color:#fff;--f7-block-header-text-color:rgba(255,255,255,0.55);--f7-block-footer-text-color:rgba(255,255,255,0.55);--f7-block-strong-text-color:#fff;--f7-block-strong-bg-color:#1c1c1d;--f7-block-title-medium-text-color:#fff;--f7-block-title-large-text-color:#fff}.md{--f7-block-margin-vertical:32px;--f7-block-title-font-size:inherit;--f7-block-title-font-weight:500;--f7-block-title-line-height:16px;--f7-block-title-margin-bottom:16px;--f7-block-title-medium-font-size:16px;--f7-block-title-medium-font-weight:500;--f7-block-title-medium-line-height:1.3;--f7-block-title-large-font-size:22px;--f7-block-title-large-font-weight:500;--f7-block-title-large-line-height:1.2;--f7-block-inset-border-radius:16px}.md,.md .dark,.md [class*=color-]{--f7-block-text-color:var(--f7-md-on-surface);--f7-block-strong-text-color:var(--f7-md-on-surface);--f7-block-outline-border-color:var(--f7-md-outline);--f7-block-title-text-color:var(--f7-theme-color);--f7-block-title-medium-text-color:var(--f7-theme-color);--f7-block-title-large-text-color:var(--f7-theme-color);--f7-block-strong-bg-color:var(--f7-md-surface-1);--f7-block-header-text-color:var(--f7-md-on-surface-variant);--f7-block-footer-text-color:var(--f7-md-on-surface-variant)}.block{box-sizing:border-box;color:var(--f7-block-text-color);font-size:var(--f7-block-font-size);margin:var(--f7-block-margin-vertical) 0;padding-bottom:0;padding-left:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));padding-top:0;position:relative;z-index:1}.block>h1:first-child,.block>h2:first-child,.block>h3:first-child,.block>h4:first-child,.block>p:first-child{margin-top:0}.block>h1:last-child,.block>h2:last-child,.block>h3:last-child,.block>h4:last-child,.block>p:last-child{margin-bottom:0}.block-strong,.ios .block-strong-ios,.md .block-strong-md{background-color:var(--f7-block-strong-bg-color);color:var(--f7-block-strong-text-color);padding-bottom:var(--f7-block-padding-vertical);padding-top:var(--f7-block-padding-vertical)}.block-outline:not(.inset):before,.ios .block-outline-ios:not(.inset):not(.inset-ios):before,.md .block-outline-md:not(.inset):not(.inset-md):before{background-color:var(--f7-block-outline-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.block-outline:not(.inset):after,.ios .block-outline-ios:not(.inset):not(.inset-ios):after,.md .block-outline-md:not(.inset):not(.inset-md):after{background-color:var(--f7-block-outline-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.block-outline.inset,.ios .block-outline-ios.inset,.ios .block-outline-ios.inset-ios,.md .block-outline-md.inset,.md .block-outline-md.inset-md{border:1px solid var(--f7-block-outline-border-color)}.block-title{color:var(--f7-block-title-text-color);font-size:var(--f7-block-title-font-size,inherit);font-weight:var(--f7-block-title-font-weight);line-height:var(--f7-block-title-line-height);margin:0;margin:var(--f7-block-margin-vertical) calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right)) var(--f7-block-title-margin-bottom) calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));overflow:hidden;position:relative;text-overflow:ellipsis;text-transform:var(--f7-block-title-text-transform);white-space:var(--f7-block-title-white-space)}.block-title+.block,.block-title+.block-header,.block-title+.card,.block-title+.list,.block-title+.timeline{margin-top:0}.block-title-medium{color:var(--f7-block-title-medium-text-color);font-size:var(--f7-block-title-medium-font-size);font-weight:var(--f7-block-title-medium-font-weight);line-height:var(--f7-block-title-medium-line-height);text-transform:var(--f7-block-title-medium-text-transform)}.block-title-large{color:var(--f7-block-title-large-text-color);font-size:var(--f7-block-title-large-font-size);font-weight:var(--f7-block-title-large-font-weight);line-height:var(--f7-block-title-large-line-height);text-transform:var(--f7-block-title-large-text-transform)}.block>.block-title:first-child,.list>.block-title:first-child{margin-left:0;margin-right:0;margin-top:0}.block-header{color:var(--f7-block-header-text-color);font-size:var(--f7-block-header-font-size);margin-bottom:var(--f7-block-header-margin);margin-top:var(--f7-block-margin-vertical)}.block-header+.block,.block-header+.card,.block-header+.list,.block-header+.timeline{margin-top:var(--f7-block-header-margin)}.block-footer{color:var(--f7-block-footer-text-color);font-size:var(--f7-block-footer-font-size);margin-bottom:var(--f7-block-margin-vertical);margin-top:var(--f7-block-footer-margin)}.block-footer,.block-header{padding-bottom:0;padding-left:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));padding-top:0}.block-footer h1:first-child,.block-footer h2:first-child,.block-footer h3:first-child,.block-footer h4:first-child,.block-footer p:first-child,.block-footer ul:first-child,.block-header h1:first-child,.block-header h2:first-child,.block-header h3:first-child,.block-header h4:first-child,.block-header p:first-child,.block-header ul:first-child{margin-top:0}.block-footer h1:last-child,.block-footer h2:last-child,.block-footer h3:last-child,.block-footer h4:last-child,.block-footer p:last-child,.block-footer ul:last-child,.block-header h1:last-child,.block-header h2:last-child,.block-header h3:last-child,.block-header h4:last-child,.block-header p:last-child,.block-header ul:last-child{margin-bottom:0}.block-footer h1:first-child:last-child,.block-footer h2:first-child:last-child,.block-footer h3:first-child:last-child,.block-footer h4:first-child:last-child,.block-footer p:first-child:last-child,.block-footer ul:first-child:last-child,.block-header h1:first-child:last-child,.block-header h2:first-child:last-child,.block-header h3:first-child:last-child,.block-header h4:first-child:last-child,.block-header p:first-child:last-child,.block-header ul:first-child:last-child{margin-bottom:0;margin-top:0}.block .block-header,.card .block-header,.list .block-header,.timeline .block-header{margin-top:0}.block .block-footer,.card .block-footer,.list .block-footer,.timeline .block-footer{margin-bottom:0}.block+.block-footer,.card+.block-footer,.list+.block-footer,.timeline+.block-footer{margin-top:calc((var(--f7-block-margin-vertical) - var(--f7-block-footer-margin))*-1)}.block+.block-footer{margin-bottom:var(--f7-block-margin-vertical)}.block .block-footer,.block .block-header{padding:0}.block.inset,.ios .block.inset-ios,.md .block.inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block-strong.inset:after,.block-strong.inset:before,.ios .block-strong-ios.inset-ios:after,.ios .block-strong-ios.inset-ios:before,.ios .block-strong-ios.inset:after,.ios .block-strong-ios.inset:before,.ios .block-strong.inset-ios:after,.ios .block-strong.inset-ios:before,.md .block-strong-md.inset-md:after,.md .block-strong-md.inset-md:before,.md .block-strong-md.inset:after,.md .block-strong-md.inset:before,.md .block-strong.inset-md:after,.md .block-strong.inset-md:before{display:none!important}@media (min-width:480px){.block.xsmall-inset,.ios .block.xsmall-inset-ios,.md .block.xsmall-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.xsmall-inset:after,.block.xsmall-inset:before,.ios .block.xsmall-inset-ios:after,.ios .block.xsmall-inset-ios:before,.md .block.xsmall-inset-md:after,.md .block.xsmall-inset-md:before{display:none!important}.block.xsmall-inset.block-outline,.ios .block.xsmall-inset-ios.block-outline,.ios .block.xsmall-inset-ios.block-outline-ios,.md .block.xsmall-inset-md.block-outline,.md .block.xsmall-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:568px){.block.small-inset,.ios .block.small-inset-ios,.md .block.small-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.small-inset:after,.block.small-inset:before,.ios .block.small-inset-ios:after,.ios .block.small-inset-ios:before,.md .block.small-inset-md:after,.md .block.small-inset-md:before{display:none!important}.block.small-inset.block-outline,.ios .block.small-inset-ios.block-outline,.ios .block.small-inset-ios.block-outline-ios,.md .block.small-inset-md.block-outline,.md .block.small-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:768px){.block.medium-inset,.ios .block.medium-inset-ios,.md .block.medium-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.medium-inset:after,.block.medium-inset:before,.ios .block.medium-inset-ios:after,.ios .block.medium-inset-ios:before,.md .block.medium-inset-md:after,.md .block.medium-inset-md:before{display:none!important}.block.medium-inset.block-outline,.ios .block.medium-inset-ios.block-outline,.ios .block.medium-inset-ios.block-outline-ios,.md .block.medium-inset-md.block-outline,.md .block.medium-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:1024px){.block.large-inset,.ios .block.large-inset-ios,.md .block.large-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.large-inset:after,.block.large-inset:before,.ios .block.large-inset-ios:after,.ios .block.large-inset-ios:before,.md .block.large-inset-md:after,.md .block.large-inset-md:before{display:none!important}.block.large-inset.block-outline,.ios .block.large-inset-ios.block-outline,.ios .block.large-inset-ios.block-outline-ios,.md .block.large-inset-md.block-outline,.md .block.large-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:1200px){.block.xlarge-inset,.ios .block.xlarge-inset-ios,.md .block.xlarge-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.xlarge-inset:after,.block.xlarge-inset:before,.ios .block.xlarge-inset-ios:after,.ios .block.xlarge-inset-ios:before,.md .block.xlarge-inset-md:after,.md .block.xlarge-inset-md:before{display:none!important}.block.xlarge-inset.block-outline,.ios .block.xlarge-inset-ios.block-outline,.ios .block.xlarge-inset-ios.block-outline-ios,.md .block.xlarge-inset-md.block-outline,.md .block.xlarge-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}:root{--f7-list-inset-side-margin:16px;--f7-list-item-padding-horizontal:16px;--f7-list-item-padding-vertical:8px;--f7-list-media-item-padding-horizontal:16px;--f7-list-item-text-max-lines:2;--f7-list-chevron-icon-font-size:20px;--f7-list-item-media-margin:16px;--f7-list-item-title-font-size:inherit;--f7-list-item-title-font-weight:400;--f7-list-item-title-line-height:inherit;--f7-list-item-title-white-space:nowrap;--f7-list-item-subtitle-font-weight:400;--f7-list-item-subtitle-line-height:inherit;--f7-list-item-text-font-weight:400;--f7-list-item-after-font-weight:400;--f7-list-item-after-line-height:inherit;--f7-list-item-header-font-size:12px;--f7-list-item-header-font-weight:400;--f7-list-item-header-line-height:1.2;--f7-list-item-footer-font-size:12px;--f7-list-item-footer-font-weight:400;--f7-list-item-footer-line-height:1.2;--f7-list-button-font-size:inherit;--f7-list-button-font-weight:400;--f7-list-button-text-align:center;--f7-list-group-title-line-height:inherit;--f7-menu-list-font-size:14px;--f7-menu-list-item-title-font-size:14px;--f7-menu-list-item-title-font-weight:500;--f7-menu-list-item-subtitle-font-size:14px;--f7-menu-list-item-text-font-size:14px;--f7-menu-list-item-after-font-size:14px;--f7-list-outline-border-color:rgba(0,0,0,0.22);--f7-list-chevron-icon-color:rgba(0,0,0,0.2)}:root .dark,:root.dark{--f7-list-button-border-color:rgba(255,255,255,0.15);--f7-list-outline-border-color:rgba(255,255,255,0.15);--f7-list-group-title-border-color:rgba(255,255,255,0.15);--f7-list-chevron-icon-color:rgba(255,255,255,0.3)}.ios{--f7-list-in-list-padding-left:30px;--f7-list-inset-border-radius:8px;--f7-list-margin-vertical:35px;--f7-list-font-size:17px;--f7-list-chevron-icon-area:20px;--f7-list-item-title-text-color:inherit;--f7-list-item-subtitle-text-color:inherit;--f7-list-link-pressed-bg-color:rgba(0,0,0,0.15);--f7-list-item-subtitle-font-size:15px;--f7-list-item-text-font-size:15px;--f7-list-item-text-line-height:21px;--f7-list-item-after-font-size:inherit;--f7-list-item-after-padding:5px;--f7-list-item-min-height:44px;--f7-list-item-media-icons-margin:5px;--f7-list-media-item-padding-vertical:10px;--f7-list-media-item-title-font-weight:600;--f7-list-button-border-color:rgba(0,0,0,0.22);--f7-list-group-title-border-color:rgba(0,0,0,0.22);--f7-list-group-title-height:31px;--f7-list-group-title-font-size:inherit;--f7-list-group-title-font-weight:400;--f7-menu-list-offset:8px;--f7-menu-list-border-radius:8px;--f7-menu-list-item-bg-color:transparent;--f7-menu-list-item-text-color:inherit;--f7-menu-list-item-min-height:44px;--f7-list-item-border-color:rgba(0,0,0,0.22);--f7-list-outline-inset-border-color:rgba(0,0,0,0.22);--f7-list-strong-bg-color:#fff;--f7-list-item-after-text-color:rgba(0,0,0,0.45);--f7-list-item-header-text-color:inherit;--f7-list-item-footer-text-color:rgba(0,0,0,0.45);--f7-list-item-text-text-color:rgba(0,0,0,0.45);--f7-list-group-title-text-color:rgba(0,0,0,0.45);--f7-list-group-title-bg-color:#f7f7f7;--f7-menu-list-item-selected-text-color:var(--f7-theme-color);--f7-menu-list-item-selected-bg-color:rgba(var(--f7-theme-color-rgb),0.15)}.ios .dark,.ios.dark{--f7-list-item-border-color:rgba(255,255,255,0.15);--f7-list-outline-inset-color:rgba(255,255,255,0.15);--f7-list-strong-bg-color:#1c1c1d;--f7-list-item-after-text-color:rgba(255,255,255,0.55);--f7-list-item-header-text-color:rgba(255,255,255,0.55);--f7-list-item-footer-text-color:rgba(255,255,255,0.55);--f7-list-item-text-text-color:rgba(255,255,255,0.55);--f7-list-group-title-text-color:rgba(255,255,255,0.55);--f7-list-group-title-bg-color:#232323;--f7-list-link-pressed-bg-color:rgba(255,255,255,0.08);--f7-menu-list-item-selected-text-color:inherit;--f7-menu-list-item-selected-bg-color:var(--f7-theme-color)}.md{--f7-list-in-list-padding-left:24px;--f7-list-inset-border-radius:16px;--f7-list-margin-vertical:32px;--f7-list-font-size:16px;--f7-list-chevron-icon-area:26px;--f7-list-item-subtitle-font-size:14px;--f7-list-item-text-font-size:14px;--f7-list-item-text-line-height:20px;--f7-list-item-after-font-size:14px;--f7-list-item-after-padding:8px;--f7-list-item-min-height:48px;--f7-list-item-media-icons-margin:8px;--f7-list-media-item-padding-vertical:12px;--f7-list-media-item-title-font-weight:500;--f7-list-button-border-color:transparent;--f7-list-group-title-border-color:transparent;--f7-list-group-title-height:48px;--f7-list-group-title-font-size:16px;--f7-list-group-title-font-weight:400;--f7-menu-list-offset:16px;--f7-menu-list-border-radius:999px;--f7-menu-list-item-min-height:56px;--f7-list-link-pressed-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-list-outline-inset-border-color:var(--f7-md-outline);--f7-list-item-border-color:var(--f7-md-outline);--f7-list-item-title-text-color:var(--f7-md-on-surface);--f7-list-item-subtitle-text-color:var(--f7-md-on-surface);--f7-list-group-title-bg-color:var(--f7-md-surface-2);--f7-list-group-title-text-color:var(--f7-md-on-surface-variant);--f7-list-strong-bg-color:var(--f7-md-surface-1);--f7-list-item-after-text-color:var(--f7-md-on-surface-variant);--f7-list-item-text-text-color:var(--f7-md-on-surface-variant);--f7-list-item-header-text-color:var(--f7-md-on-surface-variant);--f7-list-item-footer-text-color:var(--f7-md-on-surface-variant);--f7-menu-list-item-text-color:var(--f7-md-on-surface-variant);--f7-menu-list-item-bg-color:var(--f7-md-surface-1);--f7-menu-list-item-selected-text-color:var(--f7-md-on-secondary-container);--f7-menu-list-item-selected-bg-color:var(--f7-md-secondary-container)}:root{--f7-list-chevron-icon-left:"chevron_left";--f7-list-chevron-icon-right:"chevron_right"}.list{font-size:var(--f7-list-font-size);margin:var(--f7-list-margin-vertical) 0;position:relative;z-index:1}.ios .list-strong-ios ul,.list-strong ul,.md .list-strong-md ul{background:var(--f7-list-strong-bg-color)}.ios .list-outline-ios ul:before,.list-outline ul:before,.md .list-outline-md ul:before{background-color:var(--f7-list-outline-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.ios .list-outline-ios ul:after,.list-outline ul:after,.md .list-outline-md ul:after{background-color:var(--f7-list-outline-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .list-outline-ios.inset,.ios .list-outline-ios.inset-ios,.list-outline.inset,.md .list-outline-md.inset,.md .list-outline-md.inset-md{border:1px solid var(--f7-list-outline-inset-border-color)}.list ul{list-style:none;margin:0;padding:0;position:relative}.list ul ul{padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-list-in-list-padding-left))}.list ul ul:after,.list ul ul:before{display:none!important}.list .item-media,.list li{box-sizing:border-box;position:relative}.list .item-media{align-items:center;display:flex;flex-shrink:0;flex-wrap:nowrap;padding-bottom:var(--f7-list-item-padding-vertical);padding-top:var(--f7-list-item-padding-vertical)}.list .item-media+.item-inner{margin-left:var(--f7-list-item-media-margin)}.list .item-media i+i,.list .item-media i+img{margin-left:var(--f7-list-item-media-icons-margin)}.list .item-after{padding-left:var(--f7-list-item-after-padding)}.list .item-inner{align-items:center;align-self:stretch;box-sizing:border-box;display:flex;justify-content:space-between;min-height:calc(var(--f7-list-item-min-height));min-width:0;padding-bottom:var(--f7-list-item-padding-vertical);padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));padding-top:var(--f7-list-item-padding-vertical);position:relative;width:100%}.list .item-title{color:var(--f7-list-item-title-text-color);flex-shrink:1;font-size:var(--f7-list-item-title-font-size);font-weight:var(--f7-list-item-title-font-weight);line-height:var(--f7-list-item-title-line-height);max-width:100%;min-width:0;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:var(--f7-list-item-title-white-space)}.list .item-after{color:var(--f7-list-item-after-text-color);display:flex;flex-shrink:0;font-size:var(--f7-list-item-after-font-size);font-weight:var(--f7-list-item-after-font-weight);line-height:var(--f7-list-item-after-line-height);margin-left:auto;white-space:nowrap}.list .item-footer,.list .item-header{white-space:normal}.list .item-header{color:var(--f7-list-item-header-text-color);font-size:var(--f7-list-item-header-font-size);font-weight:var(--f7-list-item-header-font-weight);line-height:var(--f7-list-item-header-line-height)}.list .item-footer{color:var(--f7-list-item-footer-text-color);font-size:var(--f7-list-item-footer-font-size);font-weight:var(--f7-list-item-footer-font-weight);line-height:var(--f7-list-item-footer-line-height)}.list .item-link,.list .list-button,.list label.item-content{cursor:pointer;overflow:hidden;position:relative;transition-duration:.3s;transition-property:background-color,color;z-index:0}.list .item-link,.list .list-button{display:block}.list .item-link,.list label.item-content{color:inherit}.list .item-link.active-state,.list label.item-content.active-state{background-color:var(--f7-list-link-pressed-bg-color)}.list .item-link .item-inner{padding-right:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.list .item-content{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;min-height:calc(var(--f7-list-item-min-height));padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left))}.list .item-subtitle{color:var(--f7-list-item-subtitle-text-color);font-size:var(--f7-list-item-subtitle-font-size);font-weight:var(--f7-list-item-subtitle-font-weight);line-height:var(--f7-list-item-subtitle-line-height);max-width:100%;white-space:nowrap}.list .item-subtitle,.list .item-text{overflow:hidden;position:relative;text-overflow:ellipsis}.list .item-text{-webkit-line-clamp:var(--f7-list-item-text-max-lines);-webkit-box-orient:vertical;color:var(--f7-list-item-text-text-color);display:-webkit-box;font-size:var(--f7-list-item-text-font-size);font-weight:var(--f7-list-item-text-font-weight);line-height:var(--f7-list-item-text-line-height);max-height:calc(var(--f7-list-item-text-line-height)*var(--f7-list-item-text-max-lines))}.list .item-title-row{box-sizing:border-box;display:flex;justify-content:space-between;position:relative}.list .item-title-row .item-after{align-self:center}.list li:last-child .list-button:after,.list li:last-child li:last-child>.item-content>.item-inner:after,.list li:last-child li:last-child>.item-inner:after,.list li:last-child li:last-child>.item-link>.item-content>.item-inner:after,.list li:last-child li:last-child>.swipeout-content>.item-content>.item-inner:after,.list li:last-child>.item-content>.item-inner:after,.list li:last-child>.item-inner:after,.list li:last-child>.item-link>.item-content>.item-inner:after,.list li:last-child>.swipeout-content>.item-content>.item-inner:after{display:none!important}.list li li:last-child .item-inner:after,.list li:last-child li .item-inner:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.list-button{--f7-touch-ripple-color:var(--f7-link-touch-ripple-color,rgba(var(--f7-theme-color-rgb),0.25));color:var(--f7-list-button-text-color,var(--f7-theme-color));font-size:var(--f7-list-button-font-size);font-weight:var(--f7-list-button-font-weight);line-height:var(--f7-list-item-min-height);padding:0 var(--f7-list-item-padding-horizontal);text-align:var(--f7-list-button-text-align)}.ios .list-button.active-state{background-color:var(--f7-list-button-pressed-bg-color,rgba(var(--f7-theme-color-rgb),.15))}.md .list-button.active-state{background-color:var(--f7-list-button-pressed-bg-color,transparent)}.ios .list-dividers-ios .list-button:after,.list-dividers .list-button:after,.md .list-dividers-md .list-button:after{background-color:var(--f7-list-button-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.list-button[class*=color-]{--f7-list-button-text-color:var(--f7-theme-color)}.simple-list li{align-content:center;align-items:center;box-sizing:border-box;display:flex;height:var(--f7-list-item-min-height);justify-content:space-between;line-height:var(--f7-list-item-min-height);max-width:100%;padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));position:relative;text-overflow:ellipsis;white-space:nowrap}.simple-list li:after{left:var(--f7-list-item-padding-horizontal);left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));right:0;width:auto}.simple-list li:last-child:after{display:none!important}.links-list li{z-index:1}.links-list a{align-content:center;align-items:center;box-sizing:border-box;color:inherit;display:block;display:flex;height:var(--f7-list-item-min-height);justify-content:space-between;max-width:100%;overflow:hidden;position:relative;text-overflow:ellipsis;transition-duration:.3s;transition-property:background-color;white-space:nowrap}.links-list a .ripple-wave{z-index:0}.links-list a:after{width:auto}.links-list a.active-state{background-color:var(--f7-list-link-pressed-bg-color)}.links-list a{padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.links-list a:after{left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));right:0}.links-list li:last-child a:after{display:none!important}.ios .list-dividers-ios .item-inner:after,.ios .list-dividers-ios.links-list a:after,.ios .list-dividers-ios.simple-list li:after,.list-dividers .item-inner:after,.list-dividers.links-list a:after,.list-dividers.simple-list li:after,.md .list-dividers-md .item-inner:after,.md .list-dividers-md.links-list a:after,.md .list-dividers-md.simple-list li:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item>.item-link,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li>.item-link{border-radius:16px;margin-left:calc(var(--f7-list-item-padding-horizontal)/2);margin-right:calc(var(--f7-list-item-padding-horizontal)/2)}.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item>.item-link>.item-content,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li>.item-link>.item-content{margin-left:0;margin-right:0}.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content{padding-left:calc(var(--f7-list-item-padding-horizontal)/2 + var(--f7-safe-area-left))}.media-list,li.media-item{--f7-list-item-padding-vertical:var(--f7-list-media-item-padding-vertical);--f7-list-item-padding-horizontal:var(--f7-list-media-item-padding-horizontal)}.media-list .item-title,li.media-item .item-title{font-weight:var(--f7-list-media-item-title-font-weight,var(--f7-list-item-title-font-weight,inherit))}.media-list .item-inner,li.media-item .item-inner{align-self:stretch;display:block}.media-list .item-media img,li.media-item .item-media img{display:block}.media-list .item-link .item-inner,li.media-item .item-link .item-inner{padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.media-list .item-link .item-title-row,li.media-item .item-link .item-title-row{padding-right:calc(var(--f7-list-chevron-icon-area))}.media-list .chevron-center .item-link .item-inner,.media-list .item-link.chevron-center .item-inner,.media-list.chevron-center .item-link .item-inner,li.media-item .chevron-center .item-link .item-inner,li.media-item .item-link.chevron-center .item-inner,li.media-item.chevron-center .item-link .item-inner{padding-right:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.media-list .chevron-center .item-title-row,.media-list.chevron-center .item-title-row,li.media-item .chevron-center .item-title-row,li.media-item.chevron-center .item-title-row{padding-right:0}.links-list a:before,.list .item-link .item-inner:before,.media-list .chevron-center .item-link .item-inner:before,.media-list .item-link .item-title-row:before,.media-list .item-link.chevron-center .item-inner:before,.media-list.chevron-center .item-link .item-inner:before,li.media-item .chevron-center .item-link .item-inner:before,li.media-item .item-link .item-title-row:before,li.media-item .item-link.chevron-center .item-inner:before,li.media-item.chevron-center .item-link .item-inner:before{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-list-chevron-icon-color);content:var(--f7-list-chevron-icon-right);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-size:var(--f7-list-chevron-icon-font-size);font-style:normal;font-weight:400;height:100%;height:14px;letter-spacing:normal;line-height:1;line-height:14px;margin-top:-7px;pointer-events:none;position:absolute;right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;white-space:nowrap;width:100%;width:8px}.media-list .chevron-center .item-title-row:before,.media-list .item-link .item-inner:before,.media-list.chevron-center .item-title-row:before,li.media-item .chevron-center .item-title-row:before,li.media-item .item-link .item-inner:before,li.media-item.chevron-center .item-title-row:before{display:none}.media-list .item-link .item-title-row:before,li.media-item .item-link .item-title-row:before{right:0}.list-group ul:after,.list-group ul:before{z-index:25!important}.list-group+.list-group ul:before{display:none!important}.list-group-title,li.list-group-title{align-content:center;align-items:center;background-color:var(--f7-list-group-title-bg-color);box-sizing:border-box;color:var(--f7-list-group-title-text-color);display:flex;font-size:var(--f7-list-group-title-font-size);font-weight:var(--f7-list-group-title-font-weight);height:var(--f7-list-group-title-height);line-height:var(--f7-list-group-title-line-height);margin-top:-1px;max-width:100%;overflow:hidden;padding-bottom:0;padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));padding-top:0;position:relative;text-overflow:ellipsis;white-space:nowrap;z-index:15}.list-group-title:before,li.list-group-title:before{background-color:var(--f7-list-group-title-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.list-group-title:after,li.list-group-title:after{display:none!important}.list-group>.list-group-title,.list-group>ul>.list-group-title{margin-top:0;position:sticky;top:0;z-index:20}.page-with-navbar-large .list-group>.list-group-title,.page-with-navbar-large .list-group>ul>.list-group-title{top:calc(var(--f7-navbar-large-title-height)*-1)}.ios .list.inset-ios,.list.inset,.md .list.inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.inset-ios .block-title,.list.inset .block-title,.md .list.inset-md .block-title{margin-left:0;margin-right:0}.ios .list.inset-ios ul,.list.inset ul,.md .list.inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.inset-ios ul:after,.ios .list.inset-ios ul:before,.list.inset ul:after,.list.inset ul:before,.md .list.inset-md ul:after,.md .list.inset-md ul:before{display:none!important}.ios .list.inset-ios li.swipeout:first-child,.ios .list.inset-ios li:first-child>a,.list.inset li.swipeout:first-child,.list.inset li:first-child>a,.md .list.inset-md li.swipeout:first-child,.md .list.inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.inset-ios li.swipeout:last-child,.ios .list.inset-ios li:last-child>a,.list.inset li.swipeout:last-child,.list.inset li:last-child>a,.md .list.inset-md li.swipeout:last-child,.md .list.inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.inset-ios li.swipeout:first-child:last-child,.ios .list.inset-ios li:first-child:last-child>a,.list.inset li.swipeout:first-child:last-child,.list.inset li:first-child:last-child>a,.md .list.inset-md li.swipeout:first-child:last-child,.md .list.inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}@media (min-width:480px){.ios .list.xsmall-inset-ios,.list.xsmall-inset,.md .list.xsmall-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.xsmall-inset-ios .block-title,.list.xsmall-inset .block-title,.md .list.xsmall-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.xsmall-inset-ios ul,.list.xsmall-inset ul,.md .list.xsmall-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xsmall-inset-ios ul:after,.ios .list.xsmall-inset-ios ul:before,.list.xsmall-inset ul:after,.list.xsmall-inset ul:before,.md .list.xsmall-inset-md ul:after,.md .list.xsmall-inset-md ul:before{display:none!important}.ios .list.xsmall-inset-ios li:first-child>a,.list.xsmall-inset li:first-child>a,.md .list.xsmall-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.xsmall-inset-ios li:last-child>a,.list.xsmall-inset li:last-child>a,.md .list.xsmall-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.xsmall-inset-ios li:first-child:last-child>a,.list.xsmall-inset li:first-child:last-child>a,.md .list.xsmall-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xsmall-inset-ios.list-outline ul,.ios .list.xsmall-inset-ios.list-outline-ios ul,.list.xsmall-inset.list-outline ul,.md .list.xsmall-inset-md.list-outline ul,.md .list.xsmall-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:568px){.ios .list.small-inset-ios,.list.small-inset,.md .list.small-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.small-inset-ios .block-title,.list.small-inset .block-title,.md .list.small-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.small-inset-ios ul,.list.small-inset ul,.md .list.small-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.small-inset-ios ul:after,.ios .list.small-inset-ios ul:before,.list.small-inset ul:after,.list.small-inset ul:before,.md .list.small-inset-md ul:after,.md .list.small-inset-md ul:before{display:none!important}.ios .list.small-inset-ios li:first-child>a,.list.small-inset li:first-child>a,.md .list.small-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.small-inset-ios li:last-child>a,.list.small-inset li:last-child>a,.md .list.small-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.small-inset-ios li:first-child:last-child>a,.list.small-inset li:first-child:last-child>a,.md .list.small-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.small-inset-ios.list-outline ul,.ios .list.small-inset-ios.list-outline-ios ul,.list.small-inset.list-outline ul,.md .list.small-inset-md.list-outline ul,.md .list.small-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:768px){.ios .list.medium-inset-ios,.list.medium-inset,.md .list.medium-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.medium-inset-ios .block-title,.list.medium-inset .block-title,.md .list.medium-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.medium-inset-ios ul,.list.medium-inset ul,.md .list.medium-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.medium-inset-ios ul:after,.ios .list.medium-inset-ios ul:before,.list.medium-inset ul:after,.list.medium-inset ul:before,.md .list.medium-inset-md ul:after,.md .list.medium-inset-md ul:before{display:none!important}.ios .list.medium-inset-ios li:first-child>a,.list.medium-inset li:first-child>a,.md .list.medium-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.medium-inset-ios li:last-child>a,.list.medium-inset li:last-child>a,.md .list.medium-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.medium-inset-ios li:first-child:last-child>a,.list.medium-inset li:first-child:last-child>a,.md .list.medium-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.medium-inset-ios.list-outline ul,.ios .list.medium-inset-ios.list-outline-ios ul,.list.medium-inset.list-outline ul,.md .list.medium-inset-md.list-outline ul,.md .list.medium-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:1024px){.ios .list.large-inset-ios,.list.large-inset,.md .list.large-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.large-inset-ios .block-title,.list.large-inset .block-title,.md .list.large-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.large-inset-ios ul,.list.large-inset ul,.md .list.large-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.large-inset-ios ul:after,.ios .list.large-inset-ios ul:before,.list.large-inset ul:after,.list.large-inset ul:before,.md .list.large-inset-md ul:after,.md .list.large-inset-md ul:before{display:none!important}.ios .list.large-inset-ios li:first-child>a,.list.large-inset li:first-child>a,.md .list.large-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.large-inset-ios li:last-child>a,.list.large-inset li:last-child>a,.md .list.large-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.large-inset-ios li:first-child:last-child>a,.list.large-inset li:first-child:last-child>a,.md .list.large-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.large-inset-ios.list-outline ul,.ios .list.large-inset-ios.list-outline-ios ul,.list.large-inset.list-outline ul,.md .list.large-inset-md.list-outline ul,.md .list.large-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:1200px){.ios .list.xlarge-inset-ios,.list.xlarge-inset,.md .list.xlarge-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.xlarge-inset-ios .block-title,.list.xlarge-inset .block-title,.md .list.xlarge-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.xlarge-inset-ios ul,.list.xlarge-inset ul,.md .list.xlarge-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xlarge-inset-ios ul:after,.ios .list.xlarge-inset-ios ul:before,.list.xlarge-inset ul:after,.list.xlarge-inset ul:before,.md .list.xlarge-inset-md ul:after,.md .list.xlarge-inset-md ul:before{display:none!important}.ios .list.xlarge-inset-ios li:first-child>a,.list.xlarge-inset li:first-child>a,.md .list.xlarge-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.xlarge-inset-ios li:last-child>a,.list.xlarge-inset li:last-child>a,.md .list.xlarge-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.xlarge-inset-ios li:first-child:last-child>a,.list.xlarge-inset li:first-child:last-child>a,.md .list.xlarge-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xlarge-inset-ios.list-outline ul,.ios .list.xlarge-inset-ios.list-outline-ios ul,.list.xlarge-inset.list-outline ul,.md .list.xlarge-inset-md.list-outline ul,.md .list.xlarge-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}.list .no-chevron,.list.no-chevron,.menu-list{--f7-list-chevron-icon-color:transparent;--f7-list-chevron-icon-area:0px}.menu-list{--f7-list-font-size:var(--f7-menu-list-font-size);--f7-list-item-title-font-size:var(--f7-menu-list-item-title-font-size);--f7-list-item-title-font-weight:var(--f7-menu-list-item-title-font-weight);--f7-list-item-subtitle-font-size:var(--f7-menu-list-item-subtitle-font-size);--f7-list-item-text-font-size:var(--f7-menu-list-item-text-font-size);--f7-list-item-after-font-size:var(--f7-menu-list-item-after-font-size);--f7-list-item-min-height:var(--f7-menu-list-item-min-height)}.menu-list .item-after,.menu-list .item-footer,.menu-list .item-header,.menu-list .item-subtitle,.menu-list .item-text,.menu-list .item-title{transition-duration:.3s}.menu-list li:not(.list-group-title){padding-bottom:4px;padding-top:4px}.menu-list li:not(.list-group-title):first-child{padding-top:4px}.menu-list li:not(.list-group-title):last-child{padding-bottom:4px}.menu-list .item-link{background-color:var(--f7-menu-list-item-bg-color);border-radius:var(--f7-menu-list-border-radius)!important;color:var(--f7-menu-list-item-text-color);margin-left:var(--f7-menu-list-offset);margin-right:var(--f7-menu-list-offset)}.menu-list .item-inner:after{display:none}.menu-list .item-selected .item-link,.menu-list .item-selected.item-link,.menu-list .tab-link-active .item-link,.menu-list .tab-link-active.item-link{background-color:var(--f7-menu-list-item-selected-bg-color);color:var(--f7-menu-list-item-selected-text-color)}.menu-list .item-selected .item-after,.menu-list .item-selected .item-footer,.menu-list .item-selected .item-header,.menu-list .item-selected .item-subtitle,.menu-list .item-selected .item-text,.menu-list .item-selected .item-title{color:var(--f7-menu-list-item-selected-text-color)}.ios .item-link.active-state .item-inner:after,.ios .links-list a.active-state:after,.ios .list-button.active-state:after{background-color:initial}.ios .links-list a.active-state,.ios .list .item-link.active-state,.ios .list .list-button.active-state{transition-duration:0ms}.md .menu-list .item-link.active-state{background-color:var(--f7-menu-list-item-bg-color)}:root{--f7-badge-text-color:#fff;--f7-badge-bg-color:#8e8e93;--f7-badge-in-icon-size:16px;--f7-badge-in-icon-font-size:10px;--f7-badge-font-weight:normal;--f7-badge-font-size:12px}.ios{--f7-badge-padding:0 4px;--f7-badge-size:20px;--f7-badge-font-weight:600}.md{--f7-badge-padding:2px 6px;--f7-badge-size:20px;--f7-badge-font-weight:500}.badge{align-content:center;align-items:center;background:var(--f7-badge-bg-color);border-radius:var(--f7-badge-size);box-sizing:border-box;color:var(--f7-badge-text-color);display:inline-flex;font-size:var(--f7-badge-font-size);font-weight:var(--f7-badge-font-weight);height:var(--f7-badge-size);justify-content:center;min-width:var(--f7-badge-size);padding:var(--f7-badge-padding);position:relative;text-align:center;vertical-align:middle}.f7-icons .badge,.framework7-icons .badge,.icon .badge,.material-icons .badge{--f7-badge-font-size:var(--f7-badge-in-icon-font-size);--f7-badge-size:var(--f7-badge-in-icon-size);--f7-badge-padding:0px 2px;font-family:var(--f7-font-family);left:100%;margin-left:-10px;position:absolute;top:-2px}.badge[class*=color-]{--f7-badge-bg-color:var(--f7-theme-color)}:root{--f7-button-font-size:14px;--f7-button-min-width:32px;--f7-button-bg-color:transparent;--f7-button-border-width:0px;--f7-button-raised-box-shadow:0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);--f7-button-raised-pressed-box-shadow:0 3px 6px rgba(0,0,0,0.16),0 3px 6px rgba(0,0,0,0.23);--f7-segmented-raised-divider-color:rgba(0,0,0,0.1);--f7-segmented-strong-padding:2px;--f7-segmented-strong-between-buttons:4px;--f7-segmented-strong-button-font-weight:500;--f7-segmented-strong-button-active-box-shadow:0px 2px 2px rgba(0,0,0,0.25);--f7-segmented-strong-button-text-color:#000;--f7-segmented-strong-button-hover-bg-color:rgba(0,0,0,0.04);--f7-segmented-strong-button-active-text-color:#000;--f7-segmented-strong-button-active-bg-color:#fff}:root .dark,:root.dark{--f7-segmented-strong-button-hover-bg-color:rgba(255,255,255,0.02);--f7-segmented-strong-button-active-bg-color:rgba(255,255,255,0.14);--f7-segmented-strong-button-text-color:#fff;--f7-segmented-strong-button-active-text-color:#fff}.ios{--f7-button-fill-text-color:#fff;--f7-button-text-transform:uppercase;--f7-button-height:28px;--f7-button-padding-horizontal:10px;--f7-button-border-radius:4px;--f7-button-font-weight:600;--f7-button-letter-spacing:0;--f7-button-outline-border-width:2px;--f7-button-large-text-transform:uppercase;--f7-button-large-height:44px;--f7-button-large-font-size:17px;--f7-button-large-font-weight:500;--f7-button-small-outline-border-width:2px;--f7-button-small-text-transform:uppercase;--f7-button-small-height:26px;--f7-button-small-font-size:13px;--f7-button-small-font-weight:600;--f7-segmented-strong-button-text-transform:none;--f7-segmented-strong-button-active-font-weight:600;--f7-button-tonal-bg-color:rgba(var(--f7-theme-color-rgb),0.15);--f7-button-tonal-pressed-bg-color:rgba(var(--f7-theme-color-rgb),0.25);--f7-button-tonal-text-color:var(--f7-theme-color);--f7-segmented-strong-bg-color:rgba(0,0,0,0.07);--f7-segmented-strong-button-pressed-bg-color:rgba(0,0,0,0.07)}.ios .dark,.ios.dark{--f7-segmented-strong-bg-color:rgba(255,255,255,0.1);--f7-segmented-strong-button-pressed-bg-color:rgba(255,255,255,0.04)}.md{--f7-button-text-transform:none;--f7-button-height:40px;--f7-button-padding-horizontal:16px;--f7-button-border-radius:8px;--f7-button-font-weight:500;--f7-button-letter-spacing:normal;--f7-button-outline-border-width:1px;--f7-button-large-text-transform:none;--f7-button-large-height:48px;--f7-button-large-font-size:14px;--f7-button-large-font-weight:500;--f7-button-small-text-transform:none;--f7-button-small-outline-border-width:1px;--f7-button-small-height:32px;--f7-button-small-font-size:14px;--f7-button-small-font-weight:500;--f7-segmented-strong-button-text-transform:none;--f7-segmented-strong-button-active-font-weight:500;--f7-segmented-strong-button-pressed-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-button-fill-pressed-bg-color:transparent;--f7-button-fill-text-color:var(--f7-md-on-primary);--f7-button-outline-border-color:var(--f7-md-outline);--f7-segmented-strong-bg-color:var(--f7-md-surface-variant);--f7-button-tonal-bg-color:var(--f7-md-secondary-container);--f7-button-tonal-pressed-bg-color:transparent;--f7-button-tonal-text-color:var(--f7-md-on-secondary-container)}button{width:100%}.button,button{-webkit-appearance:none;appearance:none}.button{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25);align-items:center;background:none;background-color:var(--f7-button-bg-color);border:var(--f7-button-border-width,0) solid var(--f7-button-border-color,var(--f7-theme-color));border-radius:var(--f7-button-border-radius);box-shadow:var(--f7-button-box-shadow);box-sizing:border-box;color:var(--f7-button-text-color,var(--f7-theme-color));cursor:pointer;display:flex;font-family:inherit;font-size:var(--f7-button-font-size);font-weight:var(--f7-button-font-weight);height:var(--f7-button-height);justify-content:center;letter-spacing:var(--f7-button-letter-spacing);line-height:calc(var(--f7-button-height) - var(--f7-button-border-width, 0)*2);margin:0;min-width:var(--f7-button-min-width);outline:0;overflow:hidden;padding:var(--f7-button-padding-vertical,0) var(--f7-button-padding-horizontal);position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:var(--f7-button-text-transform);vertical-align:middle;white-space:nowrap}.button.active-state{color:var(--f7-button-pressed-text-color,var(--f7-button-text-color,var(--f7-theme-color)))}input[type=button].button,input[type=reset].button,input[type=submit].button{width:100%}.button>i+span,.button>span+span,.button>span~i{margin-left:4px}.navbar .button,.searchbar .button,.subnavbar .button,.toolbar .button{color:var(--f7-button-text-color,var(--f7-theme-color))}.button-round,.ios .button-round-ios,.md .button-round-md{--f7-button-border-radius:var(--f7-button-height)}.button-active,.button-fill,.button.tab-link-active,.ios .button-fill-ios,.md .button-fill-md{--f7-button-bg-color:var(--f7-button-fill-bg-color,var(--f7-theme-color));--f7-button-text-color:var(--f7-button-fill-text-color,#fff);--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.ios .button-active.color-white,.ios .button-fill.color-white,.ios .button.tab-link-active.color-white,.ios .color-white .button-active,.ios .color-white .button-fill,.ios .color-white .button.tab-link-active,.ios .color-white .ios .button-fill-ios,.ios .color-white .md .button-fill-md,.ios .ios .button-fill-ios.color-white,.ios .md .button-fill-md.color-white{--f7-button-text-color:#000}.button-fill,.ios .button-fill-ios,.md .button-fill-md{--f7-button-pressed-bg-color:var(--f7-button-fill-pressed-bg-color)}.button-active,.button.tab-link-active{--f7-button-pressed-bg-color:var(--f7-button-bg-color)}.button-outline,.ios .button-outline-ios,.md .button-outline-md{--f7-button-border-color:var(--f7-button-outline-border-color,var(--f7-theme-color));--f7-button-border-width:var(--f7-button-outline-border-width)}.button-tonal,.ios .button-tonal-ios,.md .button-tonal-md{--f7-button-bg-color:var(--f7-button-tonal-bg-color);--f7-button-text-color:var(--f7-button-tonal-text-color);--f7-button-pressed-bg-color:var(--f7-button-tonal-pressed-bg-color)}.button-large,.ios .button-large-ios,.md .button-large-md{--f7-button-height:var(--f7-button-large-height);--f7-button-font-size:var(--f7-button-large-font-size);--f7-button-font-weight:var(--f7-button-large-font-weight);--f7-button-text-transform:var(--f7-button-large-text-transform)}.button-small,.ios .button-small-ios,.md .button-small-md{--f7-button-outline-border-width:var(--f7-button-small-outline-border-width);--f7-button-height:var(--f7-button-small-height);--f7-button-font-size:var(--f7-button-small-font-size);--f7-button-font-weight:var(--f7-button-small-font-weight);--f7-button-text-transform:var(--f7-button-small-text-transform)}.ios .button-small-ios.button-fill,.ios .button-small.button-fill,.ios .button-small.button-fill-ios{--f7-button-border-width:var(--f7-button-small-outline-border-width);--f7-button-pressed-text-color:var(--f7-theme-color);--f7-button-pressed-bg-color:transparent}.segmented{align-self:center;border-radius:var(--f7-button-border-radius);box-shadow:var(--f7-button-box-shadow);box-sizing:border-box;display:flex;flex-wrap:nowrap}.segmented .button,.segmented button{border-radius:0;flex-shrink:1;min-width:0;width:100%}.segmented .button:first-child{border-radius:var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius)}.segmented .button.button-outline:nth-child(n+2),.segmented .button:not(.button-outline):first-child{border-left:none}.segmented .button:last-child{border-radius:0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0}.segmented .button-round:first-child{border-radius:var(--f7-button-height) 0 0 var(--f7-button-height)}.segmented .button-round:last-child{border-radius:0 var(--f7-button-height) var(--f7-button-height) 0}.segmented .button:first-child:last-child{border-radius:var(--f7-button-border-radius)}.ios .segmented-raised-ios,.md .segmented-raised-md,.segmented-raised{box-shadow:var(--f7-button-raised-box-shadow)}.ios .segmented-raised-ios .button:not(.button-outline),.md .segmented-raised-md .button:not(.button-outline),.segmented-raised .button:not(.button-outline){border-left:1px solid var(--f7-segmented-raised-divider-color)}.button-raised,.ios .button-raised-ios,.md .button-raised-md{--f7-button-box-shadow:var(--f7-button-raised-box-shadow)}.button-raised.active-state,.ios .button-raised-ios.active-state,.md .button-raised-md.active-state{--f7-button-box-shadow:var(--f7-button-raised-pressed-box-shadow)}.ios .segmented-strong-ios,.md .segmented-strong-md,.segmented-strong{--f7-button-bg-color:transparent;--f7-button-hover-bg-color:var(--f7-segmented-strong-button-hover-bg-color);--f7-button-text-color:var(--f7-segmented-strong-button-text-color);--f7-button-font-weight:var(--f7-segmented-strong-button-font-weight);--f7-button-text-transform:var(--f7-segmented-strong-button-text-transform);--f7-button-pressed-bg-color:var(--f7-segmented-strong-button-pressed-bg-color);background:var(--f7-segmented-strong-bg-color);border-radius:calc(var(--f7-button-border-radius) + 2px);box-shadow:none;overflow:hidden;padding:var(--f7-segmented-strong-padding);position:relative}.ios .segmented-strong-ios .button,.md .segmented-strong-md .button,.segmented-strong .button{transform:translateZ(0);z-index:1}.ios .segmented-strong-ios .button,.ios .segmented-strong-ios .button:first-child,.ios .segmented-strong-ios .button:last-child,.md .segmented-strong-md .button,.md .segmented-strong-md .button:first-child,.md .segmented-strong-md .button:last-child,.segmented-strong .button,.segmented-strong .button:first-child,.segmented-strong .button:last-child{border-radius:var(--f7-button-border-radius)}.ios .segmented-strong-ios .button+.button,.md .segmented-strong-md .button+.button,.segmented-strong .button+.button{margin-left:var(--f7-segmented-strong-between-buttons)}.ios .segmented-strong-ios .button.button-active,.ios .segmented-strong-ios .button.tab-link-active,.md .segmented-strong-md .button.button-active,.md .segmented-strong-md .button.tab-link-active,.segmented-strong .button.button-active,.segmented-strong .button.tab-link-active{--f7-button-hover-bg-color:transparent;--f7-button-bg-color:transparent;--f7-button-text-color:var(--f7-segmented-strong-button-active-text-color);--f7-button-font-weight:var(--f7-segmented-strong-button-active-font-weight)}.ios .segmented-strong-ios .segmented-highlight,.md .segmented-strong-md .segmented-highlight,.segmented-strong .segmented-highlight{--f7-segmented-highlight-num:1;--f7-segmented-highlight-active:0;--f7-segmented-highlight-padding:calc(var(--f7-segmented-strong-padding)*2);--f7-segmented-highlight-between:var(--f7-segmented-strong-between-buttons);--f7-segmented-highlight-width:calc((100% - var(--f7-segmented-highlight-padding) - var(--f7-segmented-highlight-between)*(var(--f7-segmented-highlight-num) - 1))/var(--f7-segmented-highlight-num));background-color:var(--f7-segmented-strong-button-active-bg-color);border-radius:var(--f7-button-border-radius);box-shadow:var(--f7-segmented-strong-button-active-box-shadow);height:calc(100% - var(--f7-segmented-strong-padding)*2);left:var(--f7-segmented-strong-padding);position:absolute;top:var(--f7-segmented-strong-padding);transform:translateX(calc(var(--f7-segmented-highlight-active)*100% + var(--f7-segmented-highlight-active)*var(--f7-segmented-highlight-between)));transition:.2s;width:var(--f7-segmented-highlight-width);z-index:0}.button:nth-child(2)~.segmented-highlight{--f7-segmented-highlight-num:2}.button:nth-child(3)~.segmented-highlight{--f7-segmented-highlight-num:3}.button:nth-child(4)~.segmented-highlight{--f7-segmented-highlight-num:4}.button:nth-child(5)~.segmented-highlight{--f7-segmented-highlight-num:5}.button:nth-child(6)~.segmented-highlight{--f7-segmented-highlight-num:6}.button:nth-child(7)~.segmented-highlight{--f7-segmented-highlight-num:7}.button:nth-child(8)~.segmented-highlight{--f7-segmented-highlight-num:8}.button:nth-child(9)~.segmented-highlight{--f7-segmented-highlight-num:9}.button:nth-child(10)~.segmented-highlight{--f7-segmented-highlight-num:10}.button-active:nth-child(2)~.segmented-highlight,.tab-link-active:nth-child(2)~.segmented-highlight{--f7-segmented-highlight-active:1}.button-active:nth-child(3)~.segmented-highlight,.tab-link-active:nth-child(3)~.segmented-highlight{--f7-segmented-highlight-active:2}.button-active:nth-child(4)~.segmented-highlight,.tab-link-active:nth-child(4)~.segmented-highlight{--f7-segmented-highlight-active:3}.button-active:nth-child(5)~.segmented-highlight,.tab-link-active:nth-child(5)~.segmented-highlight{--f7-segmented-highlight-active:4}.button-active:nth-child(6)~.segmented-highlight,.tab-link-active:nth-child(6)~.segmented-highlight{--f7-segmented-highlight-active:5}.button-active:nth-child(7)~.segmented-highlight,.tab-link-active:nth-child(7)~.segmented-highlight{--f7-segmented-highlight-active:6}.button-active:nth-child(8)~.segmented-highlight,.tab-link-active:nth-child(8)~.segmented-highlight{--f7-segmented-highlight-active:7}.button-active:nth-child(9)~.segmented-highlight,.tab-link-active:nth-child(9)~.segmented-highlight{--f7-segmented-highlight-active:8}.button-active:nth-child(10)~.segmented-highlight,.tab-link-active:nth-child(10)~.segmented-highlight{--f7-segmented-highlight-active:9}.ios .segmented-round-ios,.ios .segmented-round-ios .segmented-highlight,.md .segmented-round-md,.md .segmented-round-md .segmented-highlight,.segmented-round,.segmented-round .segmented-highlight{border-radius:var(--f7-button-height)}.subnavbar .segmented{width:100%}.button-preloader{--f7-preloader-color:var(--f7-button-text-color,var(--f7-theme-color));position:relative}.button-preloader:not(.button-large){--f7-preloader-size:calc(var(--f7-button-height) - 6px)}.button-preloader.button-fill{--f7-preloader-color:#fff}.button-preloader>span:not(.preloader){align-content:center;align-items:center;display:inline-flex;justify-content:center;transform:scale(1);transition:.2s}.button-preloader>.preloader{left:50%;margin-left:calc(var(--f7-preloader-size)*-1/2);margin-top:calc(var(--f7-preloader-size)*-1/2);opacity:0;position:absolute;top:50%;transition:.2s;transition-property:opacity;visibility:hidden}.button-preloader.button-loading>span:not(.preloader){opacity:0;transform:scale(0)}.button-preloader.button-loading>.preloader{opacity:1;visibility:visible}.ios .button{transition-duration:.1s}.ios .button.active-state{background-color:var(--f7-button-pressed-bg-color,rgba(var(--f7-theme-color-rgb),.15))}.ios .button-fill,.ios .button-fill-ios{--f7-button-pressed-bg-color:var(--f7-button-fill-pressed-bg-color,var(--f7-theme-color-tint))}.ios .button-small,.ios .button-small-ios{transition-duration:.2s}.md .button{transform:translateZ(0);transition-duration:.3s}.md .button-fill,.md .button-fill-md{--f7-button-pressed-bg-color:var(--f7-button-fill-pressed-bg-color,transparent)}:root{--f7-touch-ripple-black:rgba(0,0,0,0.1);--f7-touch-ripple-white:rgba(255,255,255,0.15);--f7-touch-ripple-color:var(--f7-touch-ripple-black)}.dark{--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.actions-button,.button,.checkbox,.dialog-button,.fab a,.item-link,.link,.list-button,.radio,.ripple,.speed-dial-buttons a,.tab-link{-webkit-user-select:none;user-select:none}.ripple-wave{animation:touch-ripple-in .2s forwards;border-radius:50%;font-size:0;left:0;margin:0;padding:0;pointer-events:none;position:absolute!important;top:0;transform:translateZ(0) scale(0);z-index:-1}.ripple-wave,.ripple-wave.ripple-wave-inset{background-color:var(--f7-touch-ripple-color)}.ripple-wave.ripple-wave-inset{background-image:none}.ripple-wave.ripple-wave-out{animation:touch-ripple-out .25s forwards!important;transform:var(--f7-ripple-transform)}.actions-button .ripple-wave,.button .ripple-wave,.dialog-button .ripple-wave,.fab a .ripple-wave,.item-checkbox .ripple-wave,.item-link .ripple-wave,.item-radio .ripple-wave,.links-list a .ripple-wave,.list label.item-content .ripple-wave,.list-button .ripple-wave,.list.accordion-list .accordion-item-toggle .ripple-wave,.photo-browser .toolbar .link .ripple-wave,.ripple-blur .ripple-wave,.stepper-button .ripple-wave,.stepper-button-minus .ripple-wave,.stepper-button-plus .ripple-wave,.tab-link .ripple-wave,button .ripple-wave{animation:touch-ripple-in-blurred .25s forwards;background-color:initial;background-image:radial-gradient(closest-side circle at 50% 50%,var(--f7-touch-ripple-color) 50%,rgba(255,255,255,0))}.checkbox .ripple-wave,.data-table .sortable-cell .ripple-wave,.radio .ripple-wave{z-index:0}[class*=ripple-color-]{--f7-touch-ripple-color:var(--f7-theme-color-ripple-color)}@keyframes touch-ripple-in-blurred{0%{transform:translateZ(0) scale(.5)}to{transform:var(--f7-ripple-transform)}}@keyframes touch-ripple-in{0%{transform:translateZ(0) scale(0)}to{transform:var(--f7-ripple-transform)}}@keyframes touch-ripple-out{0%{opacity:1}to{opacity:0}}.f7-icons,.material-icons{height:1em;width:1em}i.icon{background-position:50%;background-repeat:no-repeat;background-size:100% auto;display:inline-block;font-style:normal;position:relative;vertical-align:middle}.icon-back:after,.icon-forward:after,.icon-next:after,.icon-prev:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.icon[class*=color-]{color:var(--f7-theme-color)}.ios .icon-back,.ios .icon-forward,.ios .icon-next,.ios .icon-prev{height:20px;line-height:20px;width:12px}.ios .icon-back:after,.ios .icon-forward:after,.ios .icon-next:after,.ios .icon-prev:after{line-height:inherit}.ios .icon-next:after,.ios .icon-prev:after{font-size:16px}.ios .icon-back:after,.ios .icon-prev:after{content:"chevron_left_ios"}.ios .icon-forward:after,.ios .icon-next:after{content:"chevron_right_ios"}.md .icon-back,.md .icon-forward,.md .icon-next,.md .icon-prev{height:24px;width:24px}.md .icon-back:after,.md .icon-forward:after,.md .icon-next:after,.md .icon-prev:after{line-height:1.2}.md .icon-back:after{content:"arrow_left_md"}.md .icon-forward:after{content:"arrow_right_md"}.md .icon-next:after{content:"chevron_right_md"}.md .icon-prev:after{content:"chevron_left_md"}.custom-modal-backdrop{z-index:10500}.actions-backdrop,.custom-modal-backdrop,.dialog-backdrop,.fab-backdrop,.popover-backdrop,.popup-backdrop,.preloader-backdrop,.sheet-backdrop{background:rgba(0,0,0,.4);height:100%;left:0;opacity:0;position:absolute;top:0;transition-duration:.4s;visibility:hidden;width:100%;z-index:13000}.actions-backdrop.not-animated,.custom-modal-backdrop.not-animated,.dialog-backdrop.not-animated,.fab-backdrop.not-animated,.popover-backdrop.not-animated,.popup-backdrop.not-animated,.preloader-backdrop.not-animated,.sheet-backdrop.not-animated{transition-duration:0ms}.actions-backdrop.backdrop-in,.custom-modal-backdrop.backdrop-in,.dialog-backdrop.backdrop-in,.fab-backdrop.backdrop-in,.popover-backdrop.backdrop-in,.popup-backdrop.backdrop-in,.preloader-backdrop.backdrop-in,.sheet-backdrop.backdrop-in{opacity:1;visibility:visible}:root{--f7-dialog-button-text-color:var(--f7-theme-color);--f7-dialog-button-text-align:center}.ios{--f7-dialog-width:270px;--f7-dialog-inner-padding:16px;--f7-dialog-border-radius:13px;--f7-dialog-text-align:center;--f7-dialog-font-size:14px;--f7-dialog-title-text-color:inherit;--f7-dialog-title-font-size:18px;--f7-dialog-title-font-weight:600;--f7-dialog-title-line-height:inherit;--f7-dialog-button-font-size:17px;--f7-dialog-button-height:44px;--f7-dialog-button-letter-spacing:0;--f7-dialog-button-font-weight:400;--f7-dialog-button-text-transform:none;--f7-dialog-button-strong-bg-color:transparent;--f7-dialog-button-strong-text-color:var(--f7-theme-color);--f7-dialog-button-strong-font-weight:500;--f7-dialog-input-border-radius:4px;--f7-dialog-input-font-size:14px;--f7-dialog-input-height:32px;--f7-dialog-input-border-width:1px;--f7-dialog-input-placeholder-color:#a9a9a9;--f7-dialog-preloader-size:34px;--f7-dialog-input-bg-color:#fff;--f7-dialog-bg-color:rgba(255,255,255,0.95);--f7-dialog-bg-color-rgb:255,255,255;--f7-dialog-text-color:#000;--f7-dialog-button-pressed-bg-color:rgba(0,0,0,0.1);--f7-dialog-button-strong-pressed-bg-color:rgba(0,0,0,0.1);--f7-dialog-input-border-color:rgba(0,0,0,0.3);--f7-dialog-border-divider-color:rgba(0,0,0,0.2)}.ios .dark,.ios.dark{--f7-dialog-text-color:#fff;--f7-dialog-bg-color:rgba(45,45,45,0.95);--f7-dialog-bg-color-rgb:45,45,45;--f7-dialog-button-pressed-bg-color:rgba(0,0,0,0.2);--f7-dialog-button-strong-pressed-bg-color:rgba(0,0,0,0.2);--f7-dialog-border-divider-color:rgba(255,255,255,0.15);--f7-dialog-input-border-color:rgba(255,255,255,0.15);--f7-dialog-input-bg-color:rgba(0,0,0,0.5)}.md{--f7-dialog-width:280px;--f7-dialog-inner-padding:24px;--f7-dialog-border-radius:28px;--f7-dialog-text-align:left;--f7-dialog-font-size:14px;--f7-dialog-title-font-size:24px;--f7-dialog-title-font-weight:400;--f7-dialog-title-line-height:1.3;--f7-dialog-button-font-size:14px;--f7-dialog-button-height:40px;--f7-dialog-button-letter-spacing:normal;--f7-dialog-button-font-weight:500;--f7-dialog-button-text-transform:none;--f7-dialog-button-strong-font-weight:500;--f7-dialog-input-border-radius:0px;--f7-dialog-input-font-size:16px;--f7-dialog-input-height:36px;--f7-dialog-input-border-color:transparent;--f7-dialog-input-border-width:0px;--f7-dialog-preloader-size:32px;--f7-dialog-input-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-dialog-button-pressed-bg-color:transparent;--f7-dialog-button-strong-bg-color:var(--f7-theme-color);--f7-dialog-button-strong-text-color:var(--f7-md-on-primary);--f7-dialog-button-strong-pressed-bg-color:transparent;--f7-dialog-bg-color:var(--f7-md-surface-3);--f7-dialog-input-placeholder-color:var(--f7-md-on-surface-variant);--f7-dialog-text-color:var(--f7-md-on-surface-variant);--f7-dialog-title-text-color:var(--f7-md-on-surface)}.dialog{background:var(--f7-dialog-bg-color);border-radius:var(--f7-dialog-border-radius);color:var(--f7-dialog-text-color);display:none;font-size:var(--f7-dialog-font-size);left:50%;margin-left:calc(var(--f7-dialog-width)*-1/2);margin-top:0;opacity:0;overflow:hidden;position:absolute;text-align:var(--f7-dialog-text-align);top:50%;transform:translate3d(0,-50%,0) scale(1.185);transition-duration:.4s;transition-property:transform,opacity;width:var(--f7-dialog-width);will-change:transform,opacity;z-index:13500}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .dialog{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-dialog-bg-color-rgb),.8)}}.dialog.modal-in{opacity:1;transform:translate3d(0,-50%,0) scale(1)}.dialog.modal-out{opacity:0;z-index:13499}.dialog.not-animated{transition-duration:0ms}.dialog-inner{padding:var(--f7-dialog-inner-padding);position:relative}.dialog-title{color:var(--f7-dialog-title-text-color);font-size:var(--f7-dialog-title-font-size);font-weight:var(--f7-dialog-title-font-weight);line-height:var(--f7-dialog-title-line-height)}.dialog-buttons{display:flex;position:relative}.dialog-buttons-vertical .dialog-buttons{display:block;height:auto!important}.dialog-button{box-sizing:border-box;color:var(--f7-dialog-button-text-color);cursor:pointer;display:block;font-size:var(--f7-dialog-button-font-size);font-weight:var(--f7-dialog-button-font-weight);height:var(--f7-dialog-button-height);letter-spacing:var(--f7-dialog-button-letter-spacing);line-height:var(--f7-dialog-button-height);overflow:hidden;position:relative;text-align:var(--f7-dialog-button-text-align);text-overflow:ellipsis;text-transform:var(--f7-dialog-button-text-transform);white-space:nowrap}.dialog-button.active-state{background-color:var(--f7-dialog-button-pressed-bg-color)}.dialog-button-strong{background-color:var(--f7-dialog-button-strong-bg-color);color:var(--f7-dialog-button-strong-text-color);font-weight:var(--f7-dialog-button-strong-font-weight)}.dialog-button-strong.active-state{background-color:var(--f7-dialog-button-strong-pressed-bg-color)}.dialog-no-buttons .dialog-buttons{display:none}.dialog-input-field{position:relative}input.dialog-input[type]{-webkit-appearance:none;appearance:none;background-color:var(--f7-dialog-input-bg-color);border:var(--f7-dialog-input-border-width) solid var(--f7-dialog-input-border-color);border-radius:var(--f7-dialog-input-border-radius);box-shadow:none;box-sizing:border-box;display:block;font-family:inherit;font-size:var(--f7-dialog-input-font-size);height:var(--f7-dialog-input-height);margin:15px 0 0;width:100%}input.dialog-input[type]::placeholder{color:var(--f7-dialog-input-placeholder-color)}.dialog-input-double input.dialog-input{border-radius:var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius) 0 0}.dialog-input-double+.dialog-input-double input.dialog-input{border-radius:0 0 var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius)}.dialog-preloader .preloader{--f7-preloader-size:var(--f7-dialog-preloader-size)}html.with-modal-dialog .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}.ios .dialog.modal-out{transform:translate3d(0,-50%,0) scale(1)}.ios .dialog-inner{border-radius:var(--f7-dialog-border-radius) var(--f7-dialog-border-radius) 0 0}.ios .dialog-inner:after{background-color:var(--f7-dialog-border-divider-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .dialog-title+.dialog-text{margin-top:5px}.ios .dialog-buttons{height:44px;justify-content:center}.ios .dialog-button{-webkit-box-flex:1;-ms-flex:1;padding:0 5px;width:100%}.ios .dialog-button:after{background-color:var(--f7-dialog-border-divider-color);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.ios .dialog-button:first-child{border-radius:0 0 0 var(--f7-dialog-border-radius)}.ios .dialog-button:last-child{border-radius:0 0 var(--f7-dialog-border-radius) 0}.ios .dialog-button:last-child:after{display:none!important}.ios .dialog-button:first-child:last-child{border-radius:0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius)}.ios .dialog-button[class*=color-]{--f7-dialog-button-text-color:var(--f7-theme-color)}.ios .dialog-buttons-vertical .dialog-buttons{height:auto}.ios .dialog-buttons-vertical .dialog-button{border-radius:0}.ios .dialog-buttons-vertical .dialog-button:after{background-color:var(--f7-dialog-border-divider-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .dialog-buttons-vertical .dialog-button:last-child{border-radius:0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius)}.ios .dialog-buttons-vertical .dialog-button:last-child:after{display:none!important}.ios .dialog-no-buttons .dialog-inner{border-radius:var(--f7-dialog-border-radius)}.ios .dialog-no-buttons .dialog-inner:after{display:none!important}.ios .dialog-input-field{margin-top:15px}.ios .dialog-input{padding:0 5px}.ios .dialog-input+.dialog-input{margin-top:5px}.ios .dialog-input-double+.dialog-input-double{margin-top:0}.ios .dialog-input-double+.dialog-input-double .dialog-input{border-top:0;margin-top:0}.ios .dialog-preloader .dialog-text~.preloader,.ios .dialog-preloader .dialog-title~.preloader,.ios .dialog-progress .dialog-text~.progressbar,.ios .dialog-progress .dialog-text~.progressbar-infinite,.ios .dialog-progress .dialog-title~.progressbar,.ios .dialog-progress .dialog-title~.progressbar-infinite{margin-top:15px}.md .dialog.modal-out{transform:translate3d(0,-50%,0) scale(.815)}.md .dialog-title+.dialog-text{margin-top:20px}.md .dialog-text{line-height:1.5}.md .dialog-buttons{box-sizing:border-box;height:64px;justify-content:flex-end;overflow:hidden;padding:0 24px 24px}.md .dialog-button{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25);border:none;border-radius:99px;min-width:64px;padding:0 16px;transform:translateZ(0);transition-duration:.3s}.md .dialog-button+.dialog-button{margin-left:8px}.md .dialog-button-strong{--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.md .dialog-button[class*=color-]{--f7-dialog-button-text-color:var(--f7-theme-color)}.md .dialog-buttons-vertical .dialog-buttons{align-items:flex-end;display:flex;flex-direction:column}.md .dialog-buttons-vertical .dialog-button+.dialog-button{margin-left:0;margin-top:8px}.md .dialog-input{padding:0;position:relative;transition-duration:.2s}.md .dialog-input+.dialog-input{margin-top:16px}.md .dialog-preloader .dialog-inner,.md .dialog-preloader .dialog-title,.md .dialog-progress .dialog-inner,.md .dialog-progress .dialog-title{text-align:center}.md .dialog-preloader .dialog-text~.preloader,.md .dialog-preloader .dialog-title~.preloader{margin-top:20px}.md .dialog-progress .dialog-text~.progressbar,.md .dialog-progress .dialog-text~.progressbar-infinite,.md .dialog-progress .dialog-title~.progressbar,.md .dialog-progress .dialog-title~.progressbar-infinite{margin-top:16px}:root{--f7-popup-border-radius:0px;--f7-popup-tablet-width:630px;--f7-popup-tablet-height:630px;--f7-popup-push-offset:var(--f7-safe-area-top)}.ios{--f7-popup-tablet-border-radius:5px;--f7-popup-transition-duration:400ms;--f7-popup-transition-timing-function:initial;--f7-popup-push-border-radius:10px}.md{--f7-popup-tablet-border-radius:28px;--f7-popup-transition-duration:600ms;--f7-popup-transition-timing-function:cubic-bezier(0,1,0.2,1);--f7-popup-push-border-radius:28px}.popup-backdrop{z-index:10500}.popup,.popup-backdrop-unique{z-index:11000}.popup{background:#fff;border-radius:var(--f7-popup-border-radius);box-sizing:border-box;display:none;height:100%;left:0;overflow:hidden;position:absolute;top:0;transform:translate3d(0,100vh,0);transition-property:transform;transition-timing-function:var(--f7-popup-transition-timing-function);width:100%}.dark .popup,.popup.dark{background:#000}.popup.modal-in,.popup.modal-out{transition-duration:var(--f7-popup-transition-duration)}.popup.not-animated{transition-duration:0ms}.popup.modal-in{display:block;transform:translateZ(0)}.popup.modal-out{transform:translate3d(0,100vh,0)}.popup.swipe-close-to-top.modal-out{transform:translate3d(0,-100vh,0)}@media (min-width:630px) and (min-height:630px){.popup:not(.popup-tablet-fullscreen){--f7-safe-area-top:0px;--f7-safe-area-bottom:0px;border-radius:var(--f7-popup-tablet-border-radius,var(--f7-popup-border-radius));height:var(--f7-popup-tablet-height);left:50%;margin-left:calc(var(--f7-popup-tablet-width)*-1/2);margin-top:calc(var(--f7-popup-tablet-height)*-1/2);top:50%;transform:translate3d(0,100vh,0);width:var(--f7-popup-tablet-width)}.popup:not(.popup-tablet-fullscreen).modal-in{transform:translateZ(0)}.popup:not(.popup-tablet-fullscreen).modal-out{transform:translate3d(0,100vh,0)}.popup:not(.popup-tablet-fullscreen).swipe-close-to-top.modal-out{transform:translate3d(0,-100vh,0)}.popup:not(.popup-tablet-fullscreen).popup-behind{pointer-events:none;transform:translateZ(0) scale(.9)}.popup:not(.popup-tablet-fullscreen).popup-behind.modal-out{transform:translate3d(0,100vh,0) scale(.9)}html.with-modal-popup-push .popup-push:not(.popup-tablet-fullscreen){margin-top:0}}html.with-modal-popup .framework7-root>.panel .page-content,html.with-modal-popup .framework7-root>.view .page-content,html.with-modal-popup .framework7-root>.views .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}html.with-modal-popup-push .popup-push,html.with-modal-popup-push-closing .popup-push{--f7-safe-area-top:0px;border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;height:calc(100% - var(--f7-popup-push-offset) - 10px);top:calc(var(--f7-popup-push-offset) + 10px)}html.with-modal-popup-push .popup-push .page,html.with-modal-popup-push .popup-push .view,html.with-modal-popup-push-closing .popup-push .page,html.with-modal-popup-push-closing .popup-push .view{--f7-safe-area-top:0px}html.with-modal-popup-push .framework7-root,html.with-modal-popup-push-closing .framework7-root{background:#000}html.with-modal-popup-push .framework7-root>.view,html.with-modal-popup-push .framework7-root>.views,html.with-modal-popup-push-closing .framework7-root>.view,html.with-modal-popup-push-closing .framework7-root>.views{transition-duration:var(--f7-popup-transition-duration);transition-timing-function:var(--f7-popup-transition-timing-function)}html.with-modal-popup-push .dark .framework7-root>.view:after,html.with-modal-popup-push .dark .framework7-root>.views:after,html.with-modal-popup-push .dark.framework7-root>.view:after,html.with-modal-popup-push .dark.framework7-root>.views:after,html.with-modal-popup-push .framework7-root>.view.dark:after,html.with-modal-popup-push .framework7-root>.views.dark:after,html.with-modal-popup-push-closing .dark .framework7-root>.view:after,html.with-modal-popup-push-closing .dark .framework7-root>.views:after,html.with-modal-popup-push-closing .dark.framework7-root>.view:after,html.with-modal-popup-push-closing .dark.framework7-root>.views:after,html.with-modal-popup-push-closing .framework7-root>.view.dark:after,html.with-modal-popup-push-closing .framework7-root>.views.dark:after,html.with-modal-popup-push-closing.dark .framework7-root>.view:after,html.with-modal-popup-push-closing.dark .framework7-root>.views:after,html.with-modal-popup-push.dark .framework7-root>.view:after,html.with-modal-popup-push.dark .framework7-root>.views:after{animation:popup-dark-push-overlay-fade-in var(--f7-popup-transition-duration) forwards;background:rgba(255,255,255,.1);border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;content:"";height:100%;left:0;opacity:1;pointer-events:none;position:absolute;top:0;width:100%;z-index:13000}html.with-modal-popup-push .framework7-root>.view,html.with-modal-popup-push .framework7-root>.views{border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;transform:translateZ(0) scale(var(--f7-popup-push-scale,1))!important}html.with-modal-popup-push .popup:after{background:rgba(0,0,0,.4);border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;content:"";height:100%;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transition-duration:var(--f7-popup-transition-duration);transition-timing-function:var(--f7-popup-transition-timing-function);width:100%;z-index:13000}html.with-modal-popup-push .dark .popup:after,html.with-modal-popup-push .dark.popup:after,html.with-modal-popup-push.dark .popup:after{background:rgba(255,255,255,.05)}html.with-modal-popup-push .popup-behind{transform:translateZ(0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind.modal-out{transform:translate3d(0,100vh,0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind:not(.popup-push){border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0}html.with-modal-popup-push .popup-behind.popup-push{transform:translate3d(0,calc(-10px - var(--f7-popup-push-offset)),0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind.popup-push.modal-out{transform:translate3d(0,calc(-10px - var(--f7-popup-push-offset) + 100vh),0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind:after{opacity:1;pointer-events:auto}html.with-modal-popup-push-closing .dark .framework7-root>.view:after,html.with-modal-popup-push-closing .dark .framework7-root>.views:after,html.with-modal-popup-push-closing .dark.framework7-root>.view:after,html.with-modal-popup-push-closing .dark.framework7-root>.views:after,html.with-modal-popup-push-closing .framework7-root>.view.dark:after,html.with-modal-popup-push-closing .framework7-root>.views.dark:after,html.with-modal-popup-push-closing.dark .framework7-root>.view:after,html.with-modal-popup-push-closing.dark .framework7-root>.views:after{animation:popup-dark-push-overlay-fade-out var(--f7-popup-transition-duration) forwards;animation-timing-function:var(--f7-popup-transition-timing-function)}@keyframes popup-dark-push-overlay-fade-in{0%{opacity:0}to{opacity:1}}@keyframes popup-dark-push-overlay-fade-out{0%{opacity:1}to{opacity:0}}:root{--f7-login-screen-blocks-max-width:480px;--f7-login-screen-title-text-align:center;--f7-login-screen-title-text-color:inherit;--f7-login-screen-title-letter-spacing:0}.ios{--f7-login-screen-blocks-margin-vertical:25px;--f7-login-screen-transition-timing-function:initial;--f7-login-screen-transition-duration:400ms;--f7-login-screen-title-font-weight:600;--f7-login-screen-title-font-size:28px;--f7-login-screen-content-bg-color:#fff;--f7-login-screen-bg-color:#fff}.ios .dark,.ios.dark{--f7-login-screen-bg-color:#000;--f7-login-screen-content-bg-color:#000}.md{--f7-login-screen-transition-duration:600ms;--f7-login-screen-transition-timing-function:cubic-bezier(0,1,0.2,1);--f7-login-screen-blocks-margin-vertical:24px;--f7-login-screen-title-font-weight:400;--f7-login-screen-title-font-size:28px}.md,.md .dark,.md [class*=color-]{--f7-login-screen-content-bg-color:var(--f7-md-surface);--f7-login-screen-bg-color:var(--f7-md-surface)}.login-screen{background:var(--f7-login-screen-bg-color);box-sizing:border-box;display:none;height:100%;left:0;position:absolute;top:0;transform:translate3d(0,100vh,0);transition-property:transform;transition-timing-function:var(--f7-login-screen-transition-timing-function);width:100%;z-index:11000}.login-screen.modal-in,.login-screen.modal-out{transition-duration:var(--f7-login-screen-transition-duration)}.login-screen.not-animated{transition-duration:0ms}.login-screen.modal-in{display:block;transform:translateZ(0)}.login-screen.modal-out{transform:translate3d(0,100%,0)}.login-screen .page,.login-screen-content,.login-screen-page{background:var(--f7-login-screen-content-bg-color)}.login-screen-content .block,.login-screen-content .list,.login-screen-content .login-screen-title,.login-screen-page .block,.login-screen-page .list,.login-screen-page .login-screen-title{margin:var(--f7-login-screen-blocks-margin-vertical) auto}.login-screen-content .block,.login-screen-content .block-footer,.login-screen-content .block-header,.login-screen-content .list,.login-screen-content .login-screen-title,.login-screen-page .block,.login-screen-page .block-footer,.login-screen-page .block-header,.login-screen-page .list,.login-screen-page .login-screen-title{max-width:var(--f7-login-screen-blocks-max-width)}.login-screen-content .list ul,.login-screen-page .list ul{background:none}.login-screen-content .list ul:after,.login-screen-content .list ul:before,.login-screen-page .list ul:after,.login-screen-page .list ul:before{display:none!important}.login-screen-content .block-footer,.login-screen-content .block-header,.login-screen-page .block-footer,.login-screen-page .block-header{margin-left:auto;margin-right:auto;text-align:center}.login-screen-title{color:var(--f7-login-screen-title-text-color);font-size:var(--f7-login-screen-title-font-size);font-weight:var(--f7-login-screen-title-font-weight);letter-spacing:var(--f7-login-screen-title-letter-spacing);text-align:var(--f7-login-screen-title-text-align)}.login-screen-page,.login-screen>.page,.login-screen>.view>.page{display:flex;flex-direction:column}.login-screen-page .login-screen-content,.login-screen-page .page-content,.login-screen>.page .login-screen-content,.login-screen>.page .page-content,.login-screen>.view>.page .login-screen-content,.login-screen>.view>.page .page-content{height:auto;margin-bottom:auto;margin-top:auto;max-height:100%;width:100%}.dark .login-screen-content .block-strong,.dark .login-screen-content .list ul,.dark .login-screen-page .block-strong,.dark .login-screen-page .list ul,.dark.login-screen-page .block-strong,.dark.login-screen-page .list ul{background-color:initial}:root{--f7-popover-width:260px}.ios{--f7-popover-border-radius:13px;--f7-popover-actions-icon-size:28px;--f7-popover-transition-timing-function:initial;--f7-popover-bg-color:rgba(255,255,255,0.95);--f7-popover-actions-label-text-color:rgba(0,0,0,0.45)}.ios .dark,.ios.dark{--f7-popover-bg-color:rgba(30,30,30,0.95);--f7-popover-actions-label-text-color:rgba(255,255,255,0.55)}.md{--f7-popover-transition-timing-function:cubic-bezier(0,0.8,0.34,1);--f7-popover-border-radius:28px;--f7-popover-actions-icon-size:24px}.md,.md .dark,.md [class*=color-]{--f7-popover-bg-color:var(--f7-md-surface-3);--f7-popover-actions-label-text-color:var(--f7-md-on-surface-variant)}.popover,.popover-backdrop-unique{z-index:13500}.popover{--f7-safe-area-top:0px;--f7-safe-area-left:0px;--f7-safe-area-right:0px;--f7-safe-area-bottom:0px;background-color:var(--f7-popover-bg-color);border-radius:var(--f7-popover-border-radius);display:none;left:0;margin:0;opacity:0;position:absolute;top:0;transition-duration:.3s;width:var(--f7-popover-width);will-change:transform,opacity}.popover .list{margin:0}.popover .list ul{background:none}.popover .list:first-child ul:before,.popover .list:last-child ul:after{display:none!important}.popover .list:first-child li:first-child,.popover .list:first-child li:first-child a,.popover .list:first-child li:first-child>label,.popover .list:first-child ul{border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0}.popover .list:last-child li:last-child,.popover .list:last-child li:last-child a,.popover .list:last-child li:last-child>label,.popover .list:last-child ul{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.popover .list:first-child:last-child li:first-child:last-child,.popover .list:first-child:last-child li:first-child:last-child a,.popover .list:first-child:last-child li:first-child:last-child>label,.popover .list:first-child:last-child ul{border-radius:var(--f7-popover-border-radius)}.popover .list+.list{margin-top:var(--f7-list-margin-vertical)}.popover.modal-in{opacity:1}.popover.not-animated{transition-duration:0ms}.popover,.popover-backdrop{transition-timing-function:var(--f7-popover-transition-timing-function)}.popover-inner{-webkit-overflow-scrolling:touch;overflow:auto}.popover-from-actions .item-link i.icon{font-size:var(--f7-popover-actions-icon-size);height:var(--f7-popover-actions-icon-size);width:var(--f7-popover-actions-icon-size)}.ios .popover-from-actions-strong{font-weight:600}.md .popover-from-actions-strong{font-weight:500}.popover-from-actions-label{align-items:center;color:var(--f7-popover-actions-label-text-color);display:flex;font-size:var(--f7-actions-label-font-size);justify-content:var(--f7-actions-label-justify-content);line-height:1.3;padding:var(--f7-actions-label-padding);position:relative}.popover-from-actions-label:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.popover-from-actions-label:last-child:after{display:none!important}.md .popover-from-actions-label{justify-content:center}.popover-arrow{left:-26px;overflow:hidden;z-index:100}.popover-arrow,.popover-arrow:after{height:26px;position:absolute;top:0;width:26px}.popover-arrow:after{background:var(--f7-popover-bg-color);border-radius:3px;content:"";left:0;transform:rotate(45deg)}.popover-arrow.on-left{left:-26px}.popover-arrow.on-left:after{left:19px;top:0}.popover-arrow.on-right{left:100%}.popover-arrow.on-right:after{left:-19px;top:0}.popover-arrow.on-top{left:0;top:-26px}.popover-arrow.on-top:after{left:0;top:19px}.popover-arrow.on-bottom{left:0;top:100%}.popover-arrow.on-bottom:after{left:0;top:-19px}.ios .popover{transform:none;transition-property:opacity}.md .popover{transform:scale(.85,.6);transition-property:opacity,transform}.md .popover.modal-in{opacity:1;transform:scale(1)}.md .popover.modal-out{opacity:0;transform:scale(1)}.md .popover-on-top{transform-origin:center bottom}.md .popover-on-top.popover-on-right{transform-origin:left bottom}.md .popover-on-top.popover-on-left{transform-origin:right bottom}.md .popover-on-middle{transform-origin:center center}.md .popover-on-middle.popover-on-right{transform-origin:left center}.md .popover-on-middle.popover-on-left{transform-origin:right center}.md .popover-on-bottom{transform-origin:center top}.md .popover-on-bottom.popover-on-right{transform-origin:left top}.md .popover-on-bottom.popover-on-left{transform-origin:right top}:root{--f7-actions-grid-button-font-size:12px;--f7-actions-grid-button-icon-size:48px}.ios{--f7-actions-transition-timing-function:initial;--f7-actions-border-radius:13px;--f7-actions-grid-button-text-color:#757575;--f7-actions-button-padding:0px;--f7-actions-button-text-align:center;--f7-actions-button-height:57px;--f7-actions-button-height-landscape:44px;--f7-actions-button-font-size:20px;--f7-actions-button-icon-size:28px;--f7-actions-button-justify-content:center;--f7-actions-label-padding:8px 10px;--f7-actions-label-font-weight:400;--f7-actions-label-font-size:13px;--f7-actions-label-justify-content:center;--f7-actions-group-border-color:transparent;--f7-actions-group-margin:8px;--f7-actions-bg-color:rgba(255,255,255,0.95);--f7-actions-bg-color-rgb:255,255,255;--f7-actions-button-border-color:rgba(0,0,0,0.2);--f7-actions-button-pressed-bg-color:rgba(230,230,230,0.9);--f7-actions-button-pressed-bg-color-rgb:230,230,230;--f7-actions-label-text-color:#8a8a8a}.ios .dark,.ios.dark{--f7-actions-bg-color:rgba(45,45,45,0.95);--f7-actions-bg-color-rgb:45,45,45;--f7-actions-button-border-color:rgba(255,255,255,0.15);--f7-actions-button-pressed-bg-color:rgba(50,50,50,0.9);--f7-actions-button-pressed-bg-color-rgb:50,50,50;--f7-actions-label-text-color:rgba(255,255,255,0.55)}.md{--f7-actions-transition-timing-function:cubic-bezier(0,0.8,0.34,1);--f7-actions-border-radius:16px;--f7-actions-button-border-color:transparent;--f7-actions-button-padding:0 16px;--f7-actions-button-text-align:left;--f7-actions-button-height:48px;--f7-actions-button-height-landscape:48px;--f7-actions-button-font-size:16px;--f7-actions-button-icon-size:24px;--f7-actions-button-justify-content:space-between;--f7-actions-label-padding:12px 16px;--f7-actions-label-font-size:14px;--f7-actions-label-font-weight:500;--f7-actions-label-justify-content:flex-start;--f7-actions-group-margin:0px;--f7-actions-button-pressed-bg-color:#e5e5e5}.md .dark,.md.dark{--f7-actions-button-pressed-bg-color:#2e2e2e}.md,.md .dark,.md [class*=color-]{--f7-actions-button-text-color:var(--f7-md-on-surface);--f7-actions-bg-color:var(--f7-md-surface-3);--f7-actions-group-border-color:var(--f7-md-outline);--f7-actions-label-text-color:var(--f7-theme-color);--f7-actions-grid-button-text-color:var(--f7-md-on-surface)}.actions-backdrop-unique{z-index:13500}.actions-modal{-webkit-overflow-scrolling:touch;bottom:0;display:none;left:0;max-height:100%;overflow:auto;position:absolute;transform:translate3d(0,100%,0);transition-property:transform;width:100%;will-change:transform;z-index:13500}.actions-modal.modal-in,.actions-modal.modal-out{transition-duration:.3s}.actions-modal.not-animated{transition-duration:0ms}.ios .actions-modal.modal-in{transform:translate3d(0,calc(var(--f7-safe-area-bottom)*-1),0)}.md .actions-modal.modal-in{transform:translateZ(0)}.actions-modal.modal-out{transform:translate3d(0,100%,0);z-index:13499}@media (min-width:496px){.actions-modal{left:50%;margin-left:-240px;width:480px}}@media (orientation:landscape){.actions-modal{--f7-actions-button-height:var(--f7-actions-button-height-landscape)}}.actions-backdrop,.actions-modal{transition-timing-function:var(--f7-actions-transition-timing-function)}.actions-group{margin:var(--f7-actions-group-margin);overflow:hidden;position:relative;transform:translateZ(0)}.actions-group:after{background-color:var(--f7-actions-group-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.actions-group:last-child:after{display:none!important}.actions-button,.actions-label{box-sizing:border-box;display:block;font-weight:400;margin:0;overflow:hidden;position:relative;text-align:var(--f7-actions-button-text-align);width:100%}.actions-button:after,.actions-label:after{background-color:var(--f7-actions-button-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.actions-button a,.actions-label a{color:inherit;display:block;text-decoration:none}.actions-button{color:var(--f7-actions-button-text-color,var(--f7-theme-color));cursor:pointer;display:flex;font-size:var(--f7-actions-button-font-size);height:var(--f7-actions-button-height);justify-content:var(--f7-actions-button-justify-content);line-height:var(--f7-actions-button-height);padding:var(--f7-actions-button-padding);z-index:10}.actions-button.active-state{background-color:var(--f7-actions-button-pressed-bg-color)!important}.actions-button[class*=color-]{color:var(--f7-theme-color)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .actions-button.active-state{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-actions-button-pressed-bg-color-rgb),.8)}}.actions-button-media{align-items:center;display:flex;flex-shrink:0}.actions-button-media i.icon{font-size:var(--f7-actions-button-icon-size);height:var(--f7-actions-button-icon-size);width:var(--f7-actions-button-icon-size)}.actions-button a,.actions-button-text{overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}.actions-button-text{flex-shrink:1;text-align:var(--f7-actions-button-text-align);width:100%}.actions-label{align-items:center;color:var(--f7-actions-label-text-color);display:flex;font-size:var(--f7-actions-label-font-size);font-weight:var(--f7-actions-label-font-weight);justify-content:var(--f7-actions-label-justify-content);line-height:1.3;min-height:var(--f7-actions-label-min-height,var(--f7-actions-button-height));padding:var(--f7-actions-label-padding)}.actions-label[class*=" color-"]{--f7-actions-label-text-color:var(--f7-theme-color)}.actions-grid .actions-group{display:flex;flex-wrap:wrap;justify-content:flex-start;margin-top:0}.actions-grid .actions-group:not(:last-child){margin-bottom:0}.actions-grid .actions-button,.actions-grid .actions-label{background:none}.actions-grid .actions-button{color:var(--f7-actions-grid-button-text-color);display:block;height:auto;line-height:1;padding:16px;width:33.33333333%}.actions-grid .actions-button:after{display:none!important}.actions-grid .actions-button-media{margin-left:auto!important;margin-right:auto!important}.actions-grid .actions-button-media,.actions-grid .actions-button-media i.icon{height:var(--f7-actions-grid-button-icon-size);width:var(--f7-actions-grid-button-icon-size)}.actions-grid .actions-button-media i.icon{font-size:var(--f7-actions-grid-button-icon-size)}.actions-grid .actions-button-text{font-size:var(--f7-actions-grid-button-font-size);height:1.33em;line-height:1.33em;margin-left:0!important;margin-top:8px;text-align:center!important}.ios .actions-group{border-radius:var(--f7-actions-border-radius)}.ios .actions-button,.ios .actions-label{background:var(--f7-actions-bg-color)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .ios .actions-button,.ios-translucent-modals .ios .actions-label{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-actions-bg-color-rgb),.8)}}.ios .actions-button:first-child,.ios .actions-label:first-child{border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0}.ios .actions-button:last-child,.ios .actions-label:last-child{border-radius:0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius)}.ios .actions-button:last-child:after,.ios .actions-label:last-child:after{display:none!important}.ios .actions-button:first-child:last-child,.ios .actions-label:first-child:last-child{border-radius:var(--f7-actions-border-radius)}.ios .actions-button b,.ios .actions-button.actions-button-strong,.ios .actions-label b,.ios .actions-label.actions-button-strong{font-weight:600}.ios .actions-grid .actions-group{background:var(--f7-actions-bg-color);border-radius:0}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .ios .actions-grid .actions-group{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-actions-bg-color-rgb),.8)}}.ios .actions-grid .actions-group:first-child{border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0}.ios .actions-grid .actions-group:last-child{border-radius:0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius)}.ios .actions-grid .actions-group:first-child:last-child{border-radius:var(--f7-actions-border-radius)}.ios .actions-grid .actions-button,.ios .actions-grid .actions-label{border-radius:0!important}.ios .actions-button-media{margin-left:16px}.ios .actions-button-media+.actions-button-text{margin-left:16px;text-align:left}.md .actions-modal{background-color:var(--f7-actions-bg-color);border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;padding-bottom:var(--f7-safe-area-bottom)}.md .actions-button{transition-duration:.3s}.md .actions-button b,.md .actions-button.actions-button-strong,.md .actions-label b,.md .actions-label.actions-button-strong{font-weight:500}.md .actions-button-media{min-width:40px}.md .actions-button-media+.actions-button-text{margin-left:16px}:root{--f7-sheet-height:260px;--f7-sheet-push-offset:var(--f7-safe-area-top)}.ios{--f7-sheet-border-radius:0px;--f7-sheet-border-color:var(--f7-bars-border-color);--f7-sheet-transition-timing-function:initial;--f7-sheet-push-border-radius:10px;--f7-sheet-transition-duration:300ms;--f7-sheet-bg-color:#fff}.ios .dark,.ios.dark{--f7-sheet-bg-color:#202020}.md{--f7-sheet-border-radius:16px;--f7-sheet-push-border-radius:16px;--f7-sheet-border-color:transparent;--f7-sheet-transition-timing-function:cubic-bezier(0,0.8,0.34,1);--f7-sheet-transition-duration:400ms}.md,.md .dark,.md [class*=color-]{--f7-sheet-bg-color:var(--f7-md-surface)}.sheet-backdrop{z-index:11000}.sheet-backdrop-unique,.sheet-modal{z-index:12500}.sheet-modal{background:var(--f7-sheet-bg-color);bottom:0;box-sizing:border-box;display:none;height:var(--f7-sheet-height);left:0;overflow:hidden;position:absolute;transform:translate3d(0,100%,0);transition-property:transform;width:100%;will-change:transform,opacity}.sheet-modal.modal-in,.sheet-modal.modal-out{transition-duration:var(--f7-sheet-transition-duration)}.sheet-modal.not-animated{transition-duration:0ms}.sheet-modal.modal-in{display:block;transform:translateZ(0)}.sheet-modal.modal-in-breakpoint,.sheet-modal.modal-in-swipe-step{display:block;transform:translate3d(0,var(--f7-sheet-breakpoint,var(--f7-sheet-swipe-step,0)),0)}.sheet-modal.modal-out{transform:translate3d(0,100%,0)}.sheet-modal .sheet-modal-inner{height:100%;overflow:hidden;position:relative}.sheet-modal .toolbar{--f7-safe-area-bottom:0px;position:relative;width:100%}.sheet-modal .toolbar:after,.sheet-modal .toolbar:before{display:none}.sheet-modal .toolbar+.sheet-modal-inner{height:calc(100% - var(--f7-toolbar-height))}.sheet-modal .toolbar+.sheet-modal-inner .page-content{--f7-page-toolbar-top-offset:0px;--f7-page-toolbar-bottom-offset:0px}.sheet-backdrop,.sheet-modal{transition-timing-function:var(--f7-sheet-transition-timing-function)}.sheet-modal-top{border-radius:0 0 var(--f7-sheet-border-radius) var(--f7-sheet-border-radius)}.sheet-modal-top:after{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-sheet-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;transform-style:preserve-3d;width:100%;z-index:15;z-index:700}.sheet-modal-bottom,.sheet-modal:not(.sheet-modal-top){--f7-safe-area-top:0px;border-radius:var(--f7-sheet-border-radius) var(--f7-sheet-border-radius) 0 0}.sheet-modal-bottom:before,.sheet-modal:not(.sheet-modal-top):before{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-sheet-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;transform-style:preserve-3d;width:100%;z-index:15;z-index:700}.sheet-modal-top{--f7-safe-area-bottom:0px;bottom:auto;top:0}.sheet-modal-top,.sheet-modal-top.modal-out{transform:translate3d(0,-100%,0)}.sheet-modal-top .toolbar-bottom{position:absolute}.sheet-modal-top .page-content{padding-top:var(--f7-safe-area-top)}html.with-modal-sheet-push .sheet-modal-push,html.with-modal-sheet-push-closing .sheet-modal-push{--f7-sheet-border-color:transparent;border-radius:var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius) 0 0;overflow:hidden}html.with-modal-sheet-push .sheet-modal-push .page,html.with-modal-sheet-push .sheet-modal-push .view,html.with-modal-sheet-push-closing .sheet-modal-push .page,html.with-modal-sheet-push-closing .sheet-modal-push .view{--f7-safe-area-top:0px}html.with-modal-sheet-push .sheet-modal-push.sheet-modal-top,html.with-modal-sheet-push-closing .sheet-modal-push.sheet-modal-top{border-radius:0 0 var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius)}html.with-modal-sheet-push .framework7-root,html.with-modal-sheet-push-closing .framework7-root{background:#000}html.with-modal-sheet-push .framework7-root>.view,html.with-modal-sheet-push .framework7-root>.views,html.with-modal-sheet-push-closing .framework7-root>.view,html.with-modal-sheet-push-closing .framework7-root>.views{transition-duration:var(--f7-sheet-transition-duration);transition-timing-function:var(--f7-sheet-transition-timing-function)}html.with-modal-sheet-push .dark .framework7-root>.view:after,html.with-modal-sheet-push .dark .framework7-root>.views:after,html.with-modal-sheet-push .dark.framework7-root>.view:after,html.with-modal-sheet-push .dark.framework7-root>.views:after,html.with-modal-sheet-push .framework7-root>.view.dark:after,html.with-modal-sheet-push .framework7-root>.views.dark:after,html.with-modal-sheet-push-closing .dark .framework7-root>.view:after,html.with-modal-sheet-push-closing .dark .framework7-root>.views:after,html.with-modal-sheet-push-closing .dark.framework7-root>.view:after,html.with-modal-sheet-push-closing .dark.framework7-root>.views:after,html.with-modal-sheet-push-closing .framework7-root>.view.dark:after,html.with-modal-sheet-push-closing .framework7-root>.views.dark:after,html.with-modal-sheet-push-closing.dark .framework7-root>.view:after,html.with-modal-sheet-push-closing.dark .framework7-root>.views:after,html.with-modal-sheet-push.dark .framework7-root>.view:after,html.with-modal-sheet-push.dark .framework7-root>.views:after{animation:sheet-dark-push-overlay-fade-in var(--f7-sheet-transition-duration);animation-timing-function:var(--f7-sheet-transition-timing-function);background:rgba(255,255,255,.1);content:"";height:100%;left:0;opacity:1;pointer-events:none;position:absolute;top:0;transition-duration:var(--f7-sheet-transition-duration);transition-timing-function:var(--f7-sheet-transition-timing-function);width:100%;z-index:13000}html.with-modal-sheet-push .framework7-root>.view,html.with-modal-sheet-push .framework7-root>.views{border-radius:var(--f7-sheet-push-border-radius);transform:translateZ(0) scale(var(--f7-sheet-push-scale,1))!important}html.with-modal-sheet-push-closing .dark .framework7-root>.view:after,html.with-modal-sheet-push-closing .dark .framework7-root>.views:after,html.with-modal-sheet-push-closing .dark.framework7-root>.view:after,html.with-modal-sheet-push-closing .dark.framework7-root>.views:after,html.with-modal-sheet-push-closing .framework7-root>.view.dark:after,html.with-modal-sheet-push-closing .framework7-root>.views.dark:after,html.with-modal-sheet-push-closing.dark .framework7-root>.view:after,html.with-modal-sheet-push-closing.dark .framework7-root>.views:after{animation:none;opacity:0}@keyframes sheet-dark-push-overlay-fade-in{0%{opacity:0}to{opacity:1}}.md .sheet-modal .toolbar a.link:not(.tab-link){flex-shrink:0}:root{--f7-toast-font-size:14px;--f7-toast-icon-size:48px;--f7-toast-max-width:568px}.ios{--f7-toast-text-color:#fff;--f7-toast-bg-color:rgba(0,0,0,0.75);--f7-toast-bg-color-rgb:0,0,0;--f7-toast-padding-horizontal:16px;--f7-toast-padding-vertical:12px;--f7-toast-border-radius:8px;--f7-toast-button-min-width:64px}.md{--f7-toast-padding-horizontal:24px;--f7-toast-padding-vertical:14px;--f7-toast-border-radius:16px;--f7-toast-button-min-width:64px}.md,.md .dark,.md [class*=color-]{--f7-toast-text-color:var(--f7-md-on-surface);--f7-toast-bg-color:var(--f7-md-surface-5)}.toast{background-color:var(--f7-toast-bg-color);box-sizing:border-box;color:var(--f7-toast-text-color);font-size:var(--f7-toast-font-size);max-width:var(--f7-toast-max-width);opacity:0;position:absolute;transition-property:transform,opacity;z-index:20000}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .toast{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-toast-bg-color-rgb),.8)}}.toast.modal-in{opacity:1}.toast .toast-content{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;padding:var(--f7-toast-padding-vertical) var(--f7-toast-padding-horizontal)}.toast .toast-text{flex-shrink:1;line-height:20px;min-width:0}.toast .toast-button{flex-shrink:0;margin-bottom:-8px;margin-top:-8px;min-width:var(--f7-toast-button-min-width)}.toast.toast-with-icon .toast-content{display:block;text-align:center}.toast.toast-with-icon .toast-text{text-align:center}.toast.toast-with-icon .toast-icon .f7-icons,.toast.toast-with-icon .toast-icon .material-icons{font-size:var(--f7-toast-icon-size)}.toast.toast-center{top:50%}.toast.toast-top{margin-top:var(--f7-safe-area-top)}.ios .toast{left:0;transition-duration:.3s;width:100%}.ios .toast.toast-top{top:0;transform:translate3d(0,-100%,0)}.ios .toast.toast-top.modal-in{transform:translateZ(0)}.ios .toast.toast-center{border-radius:var(--f7-toast-border-radius);left:50%;width:auto}.ios .toast.toast-center,.ios .toast.toast-center.modal-in{transform:translate3d(-50%,-50%,0)}.ios .toast.toast-bottom{bottom:0;transform:translate3d(0,100%,0)}.ios .toast.toast-bottom.modal-in{transform:translateZ(0)}@media (max-width:568px){.ios .toast.toast-top{margin-top:0}.ios .toast.toast-top .toast-content{padding-top:calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-top))}.ios .toast.toast-bottom .toast-content{padding-bottom:calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-bottom))}}@media (min-width:569px){.ios .toast{border-radius:var(--f7-toast-border-radius);left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2)}.ios .toast.toast-top{top:16px}.ios .toast.toast-center{margin-left:0}.ios .toast.toast-bottom{margin-bottom:calc(16px + var(--f7-safe-area-bottom))}}@media (min-width:1024px){.ios .toast{margin-left:0;width:auto}.ios .toast.toast-horizontal-left{left:16px}.ios .toast.toast-horizontal-right{left:auto;right:16px}.ios .toast.toast-horizontal-center{left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2);width:var(--f7-toast-max-width)}}.ios .toast-button{margin-left:16px;margin-right:calc(var(--f7-button-padding-horizontal)*-1)}.md .toast{border-radius:var(--f7-toast-border-radius);left:8px;transform:scale(.9);transition-duration:.2s;width:calc(100% - 16px)}.md .toast.modal-in,.md .toast.modal-out{transform:scale(1)}.md .toast.toast-top{top:8px}.md .toast.toast-center{left:50%;transform:scale(.9) translate3d(-55%,-55%,0);width:auto}.md .toast.toast-center.modal-in,.md .toast.toast-center.modal-out{transform:scale(1) translate3d(-50%,-50%,0)}.md .toast.toast-bottom{bottom:calc(8px + var(--f7-safe-area-bottom))}@media (min-width:584px){.md .toast{left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2)}.md .toast.toast-center{margin-left:0}}@media (min-width:1024px){.md .toast{margin-left:0;width:auto}.md .toast.toast-horizontal-left{left:24px}.md .toast.toast-horizontal-right{left:auto;right:24px}.md .toast.toast-horizontal-center{left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2);width:var(--f7-toast-max-width)}.md .toast.toast-bottom{bottom:calc(24px + var(--f7-safe-area-bottom))}.md .toast.toast-top{top:24px}}.md .toast-button{margin-left:16px;margin-right:-8px}:root{--f7-preloader-modal-padding:8px;--f7-preloader-modal-bg-color:rgba(0,0,0,0.8)}.ios{--f7-preloader-color:#6c6c6c;--f7-preloader-size:20px;--f7-preloader-modal-preloader-size:34px;--f7-preloader-modal-border-radius:5px}.md{--f7-preloader-color:#757575;--f7-preloader-size:32px;--f7-preloader-modal-preloader-size:32px;--f7-preloader-modal-border-radius:4px}.preloader{display:inline-block;font-size:0;height:var(--f7-preloader-size);position:relative;vertical-align:middle;width:var(--f7-preloader-size)}.preloader .preloader-inner{display:block;height:100%;position:relative;width:100%}.preloader-backdrop{background:none;opacity:0;visibility:visible;z-index:14000}.preloader-modal{background:var(--f7-preloader-modal-bg-color);border-radius:var(--f7-preloader-modal-border-radius);left:50%;padding:var(--f7-preloader-modal-padding);position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);z-index:14500}.preloader-modal .preloader{--f7-preloader-size:var(--f7-preloader-modal-preloader-size);display:block!important}.with-modal-preloader .page-content,.with-modal-preloader.page-content,html.with-modal-preloader .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}.preloader[class*=color-]{--f7-preloader-color:var(--f7-theme-color)}.preloader.color-white{--f7-preloader-color:#fff}.preloader.color-black{--f7-preloader-color:#000}.ios .preloader{color:var(--f7-preloader-color)}.ios .preloader-inner{animation:ios-preloader-spin 1s steps(8) infinite}.ios .preloader-inner-line{background:currentColor;border-radius:100px;display:block;height:33.33%;left:50%;position:absolute;top:50%;transform-origin:center 150%;width:11.6%}.ios .preloader-multi-color .preloader-inner-line,.ios .preloader.color-multi .preloader-inner-line{animation:ios-preloader-multicolor 3s linear infinite}.ios .preloader-inner-line:first-child{opacity:.27;transform:translate(-50%,-150%) rotate(0deg)}.ios .preloader-inner-line:nth-child(2){opacity:.35285714;transform:translate(-50%,-150%) rotate(45deg)}.ios .preloader-inner-line:nth-child(3){opacity:.43571429;transform:translate(-50%,-150%) rotate(90deg)}.ios .preloader-inner-line:nth-child(4){opacity:.51857143;transform:translate(-50%,-150%) rotate(135deg)}.ios .preloader-inner-line:nth-child(5){opacity:.60142857;transform:translate(-50%,-150%) rotate(180deg)}.ios .preloader-inner-line:nth-child(6){opacity:.68428571;transform:translate(-50%,-150%) rotate(225deg)}.ios .preloader-inner-line:nth-child(7){opacity:.76714286;transform:translate(-50%,-150%) rotate(270deg)}.ios .preloader-inner-line:nth-child(8){opacity:.85;transform:translate(-50%,-150%) rotate(315deg)}@keyframes ios-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes ios-preloader-multicolor{0%,to{background-color:#2196f3}25%{background-color:#ff3b30}50%{background-color:#4cd964}75%{background-color:#ff9500}}.md .preloader{color:var(--f7-preloader-color)}.md .preloader-inner{animation:md-preloader-rotate 1.4s linear infinite}.md .preloader-inner circle{fill:none;stroke:currentColor;stroke-dasharray:100px;stroke-dashoffset:80px;stroke-width:4;animation:md-preloader-circle-rotate 5.6s ease-in-out infinite;transform:rotate(-90deg);transform-origin:18px 18px}.md .preloader-multi-color circle,.md .preloader.color-multi circle{animation:md-preloader-circle-rotate 5.6s ease-in-out infinite,md-preloader-multicolor 5.6s ease-in-out infinite}@keyframes md-preloader-multicolor{0%,to{stroke:#4285f4}75%{stroke:#1b9a59}50%{stroke:#f7c223}25%{stroke:#de3e35}}@keyframes md-preloader-rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes md-preloader-circle-rotate{0%{stroke-dashoffset:100px;transform:rotate(-90deg)}12.5%{stroke-dashoffset:25px;transform:rotate(-90deg)}25%{stroke-dashoffset:100px;transform:rotate(180deg)}25.1%{stroke-dashoffset:100px;transform:rotate(-180deg)}37.5%{stroke-dashoffset:25px;transform:rotate(-180deg)}50%{stroke-dashoffset:100px;transform:rotate(90deg)}50.1%{stroke-dashoffset:100px;transform:rotate(90deg)}62.5%{stroke-dashoffset:25px;transform:rotate(90deg)}75%{stroke-dashoffset:100px;transform:rotate(1turn)}75.1%{stroke-dashoffset:100px;transform:rotate(0deg)}87.5%{stroke-dashoffset:25px;transform:rotate(0deg)}to{stroke-dashoffset:100px;transform:rotate(270deg)}}.ios{--f7-progressbar-height:4px;--f7-progressbar-border-radius:4px;--f7-progressbar-bg-color:rgba(0,0,0,0.3)}.ios .dark,.ios.dark{--f7-progressbar-bg-color:rgba(255,255,255,0.3)}.md{--f7-progressbar-height:4px;--f7-progressbar-border-radius:0px}.md,.md .dark,.md [class*=color-]{--f7-progressbar-bg-color:rgba(var(--f7-theme-color-rgb),0.5)}.progressbar,.progressbar-infinite{background:var(--f7-progressbar-bg-color,rgba(var(--f7-theme-color-rgb),.5));border-radius:var(--f7-progressbar-border-radius);display:block;height:var(--f7-progressbar-height);overflow:hidden;position:relative;transform-origin:center top;transform-style:preserve-3d;width:100%}.progressbar{vertical-align:middle}.progressbar span{background-color:var(--f7-progressbar-progress-color,var(--f7-theme-color));height:100%;left:0;position:absolute;top:0;transform:translate3d(-100%,0,0);transition-duration:.15s;width:100%}.progressbar-infinite{z-index:15000}.progressbar-infinite:after,.progressbar-infinite:before{background-color:var(--f7-progressbar-progress-color,var(--f7-theme-color));content:"";display:block;height:100%;left:0;position:absolute;top:0;transform:translateZ(0);transform-origin:left center;width:100%}.progressbar-infinite.color-multi{background:none!important}.progressbar-in{animation:progressbar-in .15s forwards}.progressbar-out{animation:progressbar-out .15s forwards}.framework7-root>.progressbar,.framework7-root>.progressbar-infinite,.page>.progressbar,.page>.progressbar-infinite,.panel>.progressbar,.panel>.progressbar-infinite,.popup>.progressbar,.popup>.progressbar-infinite,.view>.progressbar,.view>.progressbar-infinite,.views>.progressbar,.views>.progressbar-infinite,body>.progressbar,body>.progressbar-infinite{border-radius:0!important;left:0;position:absolute;top:0;transform-origin:center top!important;z-index:15000}@keyframes progressbar-in{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes progressbar-out{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}.ios .progressbar-infinite:before{animation:ios-progressbar-infinite 1s linear infinite}.ios .progressbar-infinite:after{display:none}.ios .progressbar-infinite.color-multi:before{animation:ios-progressbar-infinite-multicolor 3s linear infinite;background-image:linear-gradient(90deg,#4cd964,#5ac8fa,#007aff,#34aadc,#5856d6,#ff2d55,#5856d6,#34aadc,#007aff,#5ac8fa,#4cd964);background-repeat:repeat-x;background-size:25% 100%;width:400%}@keyframes ios-progressbar-infinite{0%{transform:translate3d(-100%,0,0)}to{transform:translate3d(100%,0,0)}}@keyframes ios-progressbar-infinite-multicolor{0%{transform:translateZ(0)}to{transform:translate3d(-50%,0,0)}}.md .progressbar-infinite:before{animation:md-progressbar-infinite-1 2s linear infinite}.md .progressbar-infinite:after{animation:md-progressbar-infinite-2 2s linear infinite}.md .progressbar-infinite.color-multi:before{animation:md-progressbar-infinite-multicolor-bg 3s step-end infinite;background:none}.md .progressbar-infinite.color-multi:after{animation:md-progressbar-infinite-multicolor-fill 3s linear infinite;background:none;transform-origin:center center}@keyframes md-progressbar-infinite-1{0%{transform:translateX(-10%) scaleX(.1)}25%{transform:translateX(30%) scaleX(.6)}50%{transform:translateX(100%) scaleX(1)}to{transform:translateX(100%) scaleX(1)}}@keyframes md-progressbar-infinite-2{0%{transform:translateX(-100%) scaleX(1)}40%{transform:translateX(-100%) scaleX(1)}75%{transform:translateX(60%) scaleX(.35)}90%{transform:translateX(100%) scaleX(.1)}to{transform:translateX(100%) scaleX(.1)}}@keyframes md-progressbar-infinite-multicolor-bg{0%{background-color:#4caf50}25%{background-color:#f44336}50%{background-color:#2196f3}75%{background-color:#ffeb3b}}@keyframes md-progressbar-infinite-multicolor-fill{0%{background-color:#f44336;transform:scaleX(0)}24.9%{background-color:#f44336;transform:scaleX(1)}25%{background-color:#2196f3;transform:scaleX(0)}49.9%{background-color:#2196f3;transform:scaleX(1)}50%{background-color:#ffeb3b;transform:scaleX(0)}74.9%{background-color:#ffeb3b;transform:scaleX(1)}75%{background-color:#4caf50;transform:scaleX(0)}to{background-color:#4caf50;transform:scaleX(1)}}.ios{--f7-sortable-handler-width:36px;--f7-sortable-sorting-item-box-shadow:0px 2px 8px rgba(0,0,0,0.6);--f7-sortable-handler-color:rgba(0,0,0,0.22);--f7-sortable-sorting-item-bg-color:rgba(255,255,255,0.8)}.ios .dark,.ios.dark{--f7-sortable-sorting-item-bg-color:rgba(50,50,50,0.8);--f7-sortable-handler-color:rgba(255,255,255,0.55)}.md{--f7-sortable-handler-width:42px;--f7-sortable-sorting-item-box-shadow:none}.md,.md .dark,.md [class*=color-]{--f7-sortable-handler-color:var(--f7-md-on-surface-variant);--f7-sortable-sorting-item-bg-color:var(--f7-md-surface-3)}.sortable .sortable-handler{align-items:center;cursor:move;display:flex;height:100%;justify-content:center;opacity:0;overflow:hidden;pointer-events:none;position:absolute;right:var(--f7-safe-area-right);top:0;transition-duration:.3s;width:var(--f7-sortable-handler-width);z-index:10}.sortable .sortable-handler:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-sortable-handler-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;height:20px;letter-spacing:normal;line-height:1;overflow:hidden;text-align:center;text-rendering:optimizeLegibility;text-transform:none;transform:translateX(10px);transition-duration:.3s;white-space:nowrap;width:100%;width:18px}.sortable li.sorting{background:var(--f7-sortable-sorting-item-bg-color);box-shadow:var(--f7-sortable-sorting-item-box-shadow);transition-duration:0ms;z-index:50}.sortable li.sorting .item-inner:after{display:none!important}.sortable-opposite .sortable-handler{left:var(--f7-safe-area-right);right:auto}.sortable-opposite .sortable-handler:after{transform:translateX(-10px)}.sortable-opposite .item-content,.sortable-opposite.links-list li a,.sortable.simple-list li,.sortable:not(.sortable-opposite) .item-inner{transition-duration:.3s;transition-property:all}.sortable-sorting li{transition-duration:.3s}.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler{opacity:1;pointer-events:auto;touch-action:none}.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler:after{transform:translateX(0)}.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner:before,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-title-row:before,.sortable-enabled:not(.sortable-opposite).links-list li:not(.no-sorting):not(.disallow-sorting)>a:before{display:none}.links-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) a,.no-chevron .sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,.simple-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting),.sortable-enabled :not(.sortable-opposite).no-chevron .item-link .item-inner,.sortable-enabled.no-chevron:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-inner,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link.no-chevron .item-inner{padding-right:calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right))}.links-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) a,.simple-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting),.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .item-content{padding-left:calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right))}.ios .sortable-handler:after{content:"sort_ios"}.md .sortable-handler:after{content:"sort_md"}:root{--f7-swipeout-delete-button-bg-color:#ff3b30;--f7-swipeout-button-text-color:#fff;--f7-swipeout-button-padding-vertical:0px;--f7-swipeout-button-bg-color:rgba(0,0,0,0.22)}:root .dark,:root.dark{--f7-swipeout-button-bg-color:rgba(255,255,255,0.55)}.ios{--f7-swipeout-button-padding-horizontal:30px;--f7-swipeout-button-font-size:inherit;--f7-swipeout-button-font-weight:inherit}.md{--f7-swipeout-button-padding-horizontal:24px;--f7-swipeout-button-font-size:14px;--f7-swipeout-button-font-weight:500}.md .dark,.md.dark{--f7-swipeout-button-text-color:#000}.swipeout{overflow:hidden;transform-style:preserve-3d}.swipeout-deleting{transition-duration:.3s}.swipeout-deleting .swipeout-content{transform:translateX(-100%)}.swipeout-transitioning .swipeout-actions-left a,.swipeout-transitioning .swipeout-actions-right a,.swipeout-transitioning .swipeout-content,.swipeout-transitioning .swipeout-overswipe{transition-duration:.3s;transition-property:transform,left}.swipeout-content{position:relative;z-index:10}.swipeout-overswipe{transition-duration:.2s;transition-property:left}.swipeout-actions-left,.swipeout-actions-right{direction:ltr;display:flex;height:100%;position:absolute;top:0}.swipeout-actions-left>a,.swipeout-actions-left>button,.swipeout-actions-left>div,.swipeout-actions-left>span,.swipeout-actions-right>a,.swipeout-actions-right>button,.swipeout-actions-right>div,.swipeout-actions-right>span{align-items:center;background:var(--f7-swipeout-button-bg-color);color:var(--f7-swipeout-button-text-color);display:flex;font-size:var(--f7-swipeout-button-font-size);font-weight:var(--f7-swipeout-button-font-weight);left:0;padding:var(--f7-swipeout-button-padding-vertical) var(--f7-swipeout-button-padding-horizontal);position:relative}.swipeout-actions-left>a:after,.swipeout-actions-left>button:after,.swipeout-actions-left>div:after,.swipeout-actions-left>span:after,.swipeout-actions-right>a:after,.swipeout-actions-right>button:after,.swipeout-actions-right>div:after,.swipeout-actions-right>span:after{background:inherit;content:"";height:100%;pointer-events:none;position:absolute;top:0;transform:translateZ(0);width:600%;z-index:-1}.swipeout-actions-left .swipeout-delete,.swipeout-actions-right .swipeout-delete{background:var(--f7-swipeout-delete-button-bg-color)}.swipeout-actions-right{right:0;transform:translateX(calc(100% + 1px))}.swipeout-actions-right>a:after,.swipeout-actions-right>button:after,.swipeout-actions-right>div:after,.swipeout-actions-right>span:after{left:100%}.swipeout-actions-right>a:last-child,.swipeout-actions-right>button:last-child,.swipeout-actions-right>div:last-child,.swipeout-actions-right>span:last-child{padding-right:calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-right))}.swipeout-actions-left{left:0;transform:translateX(calc(-100% - 1px))}.swipeout-actions-left>a:after,.swipeout-actions-left>button:after,.swipeout-actions-left>div:after,.swipeout-actions-left>span:after{right:100%}.swipeout-actions-left>a:first-child,.swipeout-actions-left>button:first-child,.swipeout-actions-left>div:first-child,.swipeout-actions-left>span:first-child{padding-left:calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-left))}.swipeout-actions-left [class*=color-],.swipeout-actions-right [class*=color-]{--f7-swipeout-button-bg-color:var(--f7-theme-color)}:root{--f7-accordion-chevron-icon-down:"chevron_down";--f7-accordion-chevron-icon-up:"chevron_up"}.accordion-item-toggle{cursor:pointer}.list.accordion-list .accordion-item-toggle{overflow:hidden;position:relative;transition-duration:.3s}.list.accordion-list .accordion-item-toggle.active-state{background-color:var(--f7-list-link-pressed-bg-color);transition-duration:.3s}.list.accordion-list .accordion-item-toggle.active-state>.item-inner:after{background-color:initial}.list.accordion-list .accordion-item-toggle .item-inner{transition-duration:.3s;transition-property:background-color}.list.accordion-list .accordion-item-toggle .item-inner:after{transition-duration:.3s}.list.accordion-list .accordion-item-toggle .ripple-wave{z-index:0}.accordion-item .item-link .item-inner:after{transition-duration:.3s}.accordion-item .block,.accordion-item .list{margin-bottom:0;margin-top:0}.accordion-item .block>h1:first-child,.accordion-item .block>h2:first-child,.accordion-item .block>h3:first-child,.accordion-item .block>h4:first-child,.accordion-item .block>p:first-child{margin-top:10px}.accordion-item .block>h1:last-child,.accordion-item .block>h2:last-child,.accordion-item .block>h3:last-child,.accordion-item .block>h4:last-child,.accordion-item .block>p:last-child{margin-bottom:10px}.accordion-item-opened .accordion-item-toggle .item-inner:after,.accordion-item-opened>.item-link .item-inner:after{background-color:initial}.list li.accordion-item ul{padding-left:0}.accordion-item-content{font-size:14px;height:0;overflow:hidden;position:relative;transition-duration:.3s}.accordion-item-opened>.accordion-item-content{height:auto}html.device-android-4 .accordion-item-content{transform:none}.list .accordion-item-toggle .item-inner:before{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-list-chevron-icon-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-size:var(--f7-list-chevron-icon-font-size);font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;pointer-events:none;position:absolute;right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;white-space:nowrap;width:100%}.list:not(.accordion-opposite) .accordion-item-toggle .item-inner{padding-right:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.accordion-opposite .accordion-item-toggle .item-inner,.accordion-opposite .accordion-item-toggle.item-link .item-inner,.accordion-opposite .accordion-item>.item-link>.item-content>.item-inner,.accordion-opposite .accordion-item>.item-link>.item-inner{padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.accordion-opposite .accordion-item>.item-link>.item-title-row{padding-right:0}.accordion-opposite .accordion-item-toggle .item-inner:before,.accordion-opposite .accordion-item-toggle.item-link .item-inner:before,.accordion-opposite .accordion-item>.item-link .item-title-row:before,.accordion-opposite .accordion-item>.item-link>.item-content>.item-inner:before,.accordion-opposite .accordion-item>.item-link>.item-inner:before{display:none}.accordion-opposite .accordion-item-toggle.item-content,.accordion-opposite .accordion-item-toggle>.item-content,.accordion-opposite .accordion-item>.item-content,.accordion-opposite .accordion-item>.item-link>.item-content,.accordion-opposite.links-list .accordion-item>a{padding-left:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));position:relative}.accordion-opposite .accordion-item-toggle.item-content:before,.accordion-opposite .accordion-item-toggle>.item-content:before,.accordion-opposite .accordion-item>.item-content:before,.accordion-opposite .accordion-item>.item-link>.item-content:before,.accordion-opposite.links-list .accordion-item>a:before{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-list-chevron-icon-color);content:var(--f7-accordion-chevron-icon-down);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-size:var(--f7-list-chevron-icon-font-size);font-style:normal;font-weight:400;height:100%;height:8px;left:calc((var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal))/2 + var(--f7-safe-area-left));letter-spacing:normal;line-height:1;line-height:8px;margin-top:-4px;pointer-events:none;position:absolute;text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;transform:translateX(-50%);white-space:nowrap;width:100%;width:14px}.list .accordion-item-toggle.active-state{background-color:var(--f7-list-link-pressed-bg-color)}.accordion-item.media-item .accordion-item-toggle .item-title-row:before,.accordion-item.media-item>.item-link .item-title-row:before,.links-list .accordion-item>a:before,.list .accordion-item-toggle .item-inner:before,.list:not(.media-list) .accordion-item:not(.media-item) .accordion-item-toggle .item-inner:before,.list:not(.media-list) .accordion-item:not(.media-item)>.item-link .item-inner:before,.media-list .accordion-item .accordion-item-toggle .item-title-row:before,.media-list .accordion-item>.item-link .item-title-row:before{content:var(--f7-accordion-chevron-icon-down);height:8px;line-height:8px;margin-top:-4px;width:14px}.accordion-item-opened.media-item .accordion-item-toggle .item-title-row:before,.accordion-item-opened.media-item>.item-link .item-title-row:before,.accordion-opposite .accordion-item-opened .accordion-item-toggle.item-content:before,.accordion-opposite .accordion-item-opened .accordion-item-toggle>.item-content:before,.accordion-opposite .accordion-item-opened>.item-content:before,.accordion-opposite .accordion-item-opened>.item-link>.item-content:before,.accordion-opposite .links-list .accordion-item-opened>a:before,.links-list .accordion-item-opened>a:before,.list .accordion-item-toggle.accordion-item-opened .item-inner:before,.list:not(.media-list) .accordion-item-opened:not(.media-item) .accordion-item-toggle .item-inner:before,.list:not(.media-list) .accordion-item-opened:not(.media-item)>.item-link .item-inner:before,.media-list .accordion-item-opened .accordion-item-toggle .item-title-row:before,.media-list .accordion-item-opened>.item-link .item-title-row:before{content:var(--f7-accordion-chevron-icon-up);height:8px;line-height:8px;margin-top:-4px;width:14px}.ios{--f7-contacts-list-title-font-size:inherit;--f7-contacts-list-title-font-weight:600;--f7-contacts-list-title-height:22px;--f7-contacts-list-title-text-color:#000;--f7-contacts-list-title-bg-color:#f7f7f7}.ios .dark,.ios.dark{--f7-contacts-list-title-text-color:#fff;--f7-contacts-list-title-bg-color:#323234}.md{--f7-contacts-list-title-font-size:20px;--f7-contacts-list-title-font-weight:500;--f7-contacts-list-title-height:48px;--f7-contacts-list-title-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-contacts-list-title-text-color:var(--f7-theme-color)}.contacts-list{--f7-list-margin-vertical:0px}.contacts-list .list-group-title,.contacts-list li.list-group-title{background-color:var(--f7-contacts-list-title-bg-color,var(--f7-list-group-title-bg-color));color:var(--f7-contacts-list-title-text-color,var(--f7-theme-color));font-size:var(--f7-contacts-list-title-font-size,var(--f7-list-group-title-font-size));font-weight:var(--f7-contacts-list-title-font-weight,var(--f7-list-group-title-font-weight));height:var(--f7-contacts-list-title-height,var(--f7-list-group-title-height));line-height:var(--f7-contacts-list-title-height,var(--f7-list-group-title-height))}.contacts-list .list-group:first-child ul:before,.contacts-list .list-group:last-child ul:after{display:none!important}.md .contacts-list .list-group-title{overflow:visible;pointer-events:none;width:40px}.md .contacts-list .list-group-title+li{margin-top:calc(var(--f7-contacts-list-title-height)*-1)}.md .contacts-list .list-group-title:before{display:none!important}.md .contacts-list li:not(.list-group-title){padding-left:40px}:root{--f7-list-index-width:16px;--f7-list-index-font-size:11px;--f7-list-index-font-weight:600;--f7-list-index-item-height:14px;--f7-list-index-label-font-weight:500}.ios{--f7-list-index-label-text-color:#fff;--f7-list-index-label-size:44px;--f7-list-index-label-font-size:17px;--f7-list-index-skip-dot-size:6px}.md{--f7-list-index-label-size:56px;--f7-list-index-label-font-size:20px;--f7-list-index-skip-dot-size:4px}.md,.md .dark,.md [class*=color-]{--f7-list-index-label-bg-color:var(--f7-md-primary);--f7-list-index-label-text-color:var(--f7-md-on-primary)}.list-index{bottom:0;cursor:pointer;position:absolute;right:var(--f7-safe-area-right);text-align:center;top:0;-webkit-user-select:none;user-select:none;width:var(--f7-list-index-width);z-index:10}.list-index:before{content:"";height:100%;position:absolute;right:100%;top:0;width:20px}.list-index ul{align-items:center;color:var(--f7-list-index-text-color,var(--f7-theme-color));display:flex;flex-direction:column;font-size:var(--f7-list-index-font-size);font-weight:var(--f7-list-index-font-weight);height:100%;justify-content:center}.list-index li,.list-index ul{flex-shrink:0;list-style:none;margin:0;padding:0;position:relative;width:100%}.list-index li{display:block;height:var(--f7-list-index-item-height);line-height:var(--f7-list-index-item-height)}.list-index .list-index-skip-placeholder:after{background:var(--f7-list-index-text-color,var(--f7-theme-color));border-radius:50%;content:"";height:var(--f7-list-index-skip-dot-size);left:50%;margin-left:calc(var(--f7-list-index-skip-dot-size)*-1/2);margin-top:calc(var(--f7-list-index-skip-dot-size)*-1/2);position:absolute;top:50%;width:var(--f7-list-index-skip-dot-size)}.list-index .list-index-label{background-color:var(--f7-list-index-label-bg-color,var(--f7-theme-color));bottom:0;color:var(--f7-list-index-label-text-color);font-size:var(--f7-list-index-label-font-size);font-weight:var(--f7-list-index-label-font-weight);height:var(--f7-list-index-label-size);line-height:var(--f7-list-index-label-size);position:absolute;right:100%;text-align:center;width:var(--f7-list-index-label-size)}.navbars~.page>.list-index,.navbar~.list-index,.navbar~.page>.list-index{top:var(--f7-navbar-height)}.ios .navbars~.toolbar-top-ios .md .navbar~.toolbar-top-md~.list-index,.ios .navbar~.toolbar-top-ios~.list-index,.navbars~.toolbar-top~.list-index,.navbar~.toolbar-top~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-toolbar-height))}.ios .navbars~.toolbar-top-ios .md .navbar~.toolbar-top-md.tabbar-icons~.list-index,.ios .navbar~.toolbar-top-ios.tabbar-icons~.list-index,.navbars~.toolbar-top.tabbar-icons~.list-index,.navbar~.toolbar-top.tabbar-icons~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height))}.navbars~.subnavbar~.list-index,.navbar~.subnavbar~.list-index,.page-with-subnavbar .navbar~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-subnavbar-height))}.ios .toolbar-bottom-ios~* .page>.list-index,.ios .toolbar-bottom-ios~.list-index,.ios .toolbar-bottom-ios~.page>.list-index,.md .toolbar-bottom-md~* .page>.list-index,.md .toolbar-bottom-md~.list-index,.md .toolbar-bottom-md~.page>.list-index,.toolbar-bottom~* .page>.list-index,.toolbar-bottom~.list-index,.toolbar-bottom~.page>.list-index{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.ios .toolbar-bottom-ios.tabbar-icons~* .page>.list-index,.ios .toolbar-bottom-ios.tabbar-icons~.list-index,.ios .toolbar-bottom-ios.tabbar-icons~.page>.list-index,.md .toolbar-bottom-md.tabbar-icons~* .page>.list-index,.md .toolbar-bottom-md.tabbar-icons~.list-index,.md .toolbar-bottom-md.tabbar-icons~.page>.list-index,.toolbar-bottom.tabbar-icons~* .page>.list-index,.toolbar-bottom.tabbar-icons~.list-index,.toolbar-bottom.tabbar-icons~.page>.list-index{bottom:calc(var(--f7-tabbar-icons-height) + var(--f7-safe-area-bottom))}.ios .list-index .list-index-label{border-radius:50%;margin-bottom:calc(var(--f7-list-index-label-size)*-1/2);margin-right:calc(var(--f7-list-index-width) - 1px)}.ios .list-index .list-index-label:before{background-color:inherit;border-radius:50% 0 50% 50%;content:"";height:100%;left:0;position:absolute;top:0;transform:rotate(45deg);width:100%;z-index:-1}.md .list-index .list-index-label{border-radius:50% 50% 0 50%}:root{--f7-timeline-inner-block-margin-vertical:16px;--f7-timeline-divider-margin-horizontal:16px;--f7-timeline-horizontal-date-height:34px;--f7-timeline-year-height:24px;--f7-timeline-year-font-weight:inherit;--f7-timeline-month-height:24px;--f7-timeline-month-font-size:inherit;--f7-timeline-month-font-weight:inherit;--f7-timeline-item-text-font-weight:inherit;--f7-timeline-item-subtitle-font-weight:inherit}.ios{--f7-timeline-divider-color:#bbb;--f7-timeline-padding-horizontal:16px;--f7-timeline-margin-vertical:35px;--f7-timeline-item-inner-border-radius:7px;--f7-timeline-item-time-font-size:13px;--f7-timeline-item-title-font-size:17px;--f7-timeline-item-title-line-height:inherit;--f7-timeline-item-title-font-weight:600;--f7-timeline-item-subtitle-font-size:15px;--f7-timeline-item-subtitle-line-height:inherit;--f7-timeline-item-text-font-size:inherit;--f7-timeline-item-text-color:inherit;--f7-timeline-item-text-line-height:inherit;--f7-timeline-year-font-size:16px;--f7-timeline-horizontal-item-padding:10px;--f7-timeline-item-inner-bg-color:#fff;--f7-timeline-item-time-text-color:rgba(0,0,0,0.45);--f7-timeline-horizontal-item-border-color:rgba(0,0,0,0.22);--f7-timeline-horizontal-item-date-border-color:rgba(0,0,0,0.22)}.ios .dark,.ios.dark{--f7-timeline-horizontal-item-border-color:rgba(255,255,255,0.15);--f7-timeline-horizontal-item-date-border-color:rgba(255,255,255,0.15);--f7-timeline-item-inner-bg-color:#1c1c1d;--f7-timeline-item-time-text-color:rgba(255,255,255,0.55)}.md{--f7-timeline-padding-horizontal:16px;--f7-timeline-margin-vertical:32px;--f7-timeline-item-inner-border-radius:16px;--f7-timeline-item-time-font-size:13px;--f7-timeline-item-title-font-size:16px;--f7-timeline-item-title-line-height:inherit;--f7-timeline-item-title-font-weight:400;--f7-timeline-item-subtitle-font-size:inherit;--f7-timeline-item-subtitle-line-height:inherit;--f7-timeline-item-text-font-size:inherit;--f7-timeline-item-text-line-height:inherit;--f7-timeline-year-font-size:16px;--f7-timeline-horizontal-item-padding:12px;--f7-timeline-horizontal-item-date-border-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-timeline-divider-color:var(--f7-md-outline);--f7-timeline-item-text-color:var(--f7-md-on-surface);--f7-timeline-horizontal-item-border-color:var(--f7-md-outline);--f7-timeline-item-inner-bg-color:var(--f7-md-surface-1);--f7-timeline-item-time-text-color:var(--f7-md-on-surface-variant)}.timeline{box-sizing:border-box;margin:var(--f7-timeline-margin-vertical) 0;padding:0 var(--f7-timeline-padding-horizontal);padding-bottom:0;padding-left:calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-right));padding-top:0}.block-strong .timeline{margin:0;padding:0}.timeline-item{box-sizing:border-box;display:flex;justify-content:flex-start;overflow:hidden;padding:2px 0 var(--f7-timeline-padding-horizontal);position:relative}.timeline-item:last-child{padding-bottom:2px}.timeline-item-date{box-sizing:border-box;flex-shrink:0;text-align:right;width:50px}.timeline-item-date small{font-size:10px}.timeline-item-content{flex-shrink:10;margin:2px;min-width:0;position:relative}.timeline-item-content .block,.timeline-item-content .card,.timeline-item-content .list,.timeline-item-content.block,.timeline-item-content.card,.timeline-item-content.list{margin:0;width:100%}.timeline-item-content .block+.block,.timeline-item-content .block+.card,.timeline-item-content .block+.list,.timeline-item-content .card+.block,.timeline-item-content .card+.card,.timeline-item-content .card+.list,.timeline-item-content .list+.block,.timeline-item-content .list+.card,.timeline-item-content .list+.list{margin:var(--f7-timeline-inner-block-margin-vertical) 0 0}.timeline-item-content h1:first-child,.timeline-item-content h2:first-child,.timeline-item-content h3:first-child,.timeline-item-content h4:first-child,.timeline-item-content ol:first-child,.timeline-item-content p:first-child,.timeline-item-content ul:first-child{margin-top:0}.timeline-item-content h1:last-child,.timeline-item-content h2:last-child,.timeline-item-content h3:last-child,.timeline-item-content h4:last-child,.timeline-item-content ol:last-child,.timeline-item-content p:last-child,.timeline-item-content ul:last-child{margin-bottom:0}.timeline-item-inner{background:var(--f7-timeline-item-inner-bg-color);border-radius:var(--f7-timeline-item-inner-border-radius);box-sizing:border-box;padding:8px var(--f7-timeline-padding-horizontal)}.timeline-item-inner+.timeline-item-inner{margin-top:var(--f7-timeline-inner-block-margin-vertical)}.timeline-item-inner .block{color:inherit;padding:0}.timeline-item-inner .block-strong{margin:0;padding-left:0;padding-right:0}.timeline-item-inner .block-strong:after,.timeline-item-inner .block-strong:before,.timeline-item-inner .list ul:after,.timeline-item-inner .list ul:before{display:none!important}.timeline-item-divider{background:var(--f7-timeline-divider-color);border-radius:50%;flex-shrink:0;height:10px;margin:3px var(--f7-timeline-divider-margin-horizontal) 0;position:relative;width:1px;width:10px}.timeline-item-divider:after,.timeline-item-divider:before{background:inherit;content:" ";height:100vh;left:50%;position:absolute;transform:translate3d(-50%,0,0);width:1px}.timeline-item-divider:after{top:100%}.timeline-item-divider:before{bottom:100%}.timeline-item:first-child .timeline-item-divider:before,.timeline-item:last-child .timeline-item-divider:after{display:none}.timeline-item-time{color:var(--f7-timeline-item-time-text-color);font-size:var(--f7-timeline-item-time-font-size);margin-top:var(--f7-timeline-inner-block-margin-vertical)}.timeline-item-time:first-child,.timeline-item-time:last-child,.timeline-item-title+.timeline-item-time{margin-top:0}.timeline-item-title{font-size:var(--f7-timeline-item-title-font-size);font-weight:var(--f7-timeline-item-title-font-weight);line-height:var(--f7-timeline-item-title-line-height)}.timeline-item-subtitle{font-size:var(--f7-timeline-item-subtitle-font-size);font-weight:var(--f7-timeline-item-subtitle-font-weight);line-height:var(--f7-timeline-item-subtitle-line-height)}.timeline-item-text{color:var(--f7-timeline-item-text-color);font-size:var(--f7-timeline-item-text-font-size);font-weight:var(--f7-timeline-item-text-font-weight);line-height:var(--f7-timeline-item-text-line-height)}.timeline-sides .timeline-item,.timeline-sides .timeline-item-right{margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.timeline-sides .timeline-item .timeline-item-date,.timeline-sides .timeline-item-right .timeline-item-date{text-align:right}.timeline-sides .timeline-item-left,.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.timeline-sides .timeline-item-left .timeline-item-date,.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:left}@media (min-width:480px){.xsmall-sides .timeline-item,.xsmall-sides .timeline-item-right{margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.xsmall-sides .timeline-item .timeline-item-date,.xsmall-sides .timeline-item-right .timeline-item-date{text-align:right}.xsmall-sides .timeline-item-left,.xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.xsmall-sides .timeline-item-left .timeline-item-date,.xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:left}}@media (min-width:568px){.small-sides .timeline-item,.small-sides .timeline-item-right{margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.small-sides .timeline-item .timeline-item-date,.small-sides .timeline-item-right .timeline-item-date{text-align:right}.small-sides .timeline-item-left,.small-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.small-sides .timeline-item-left .timeline-item-date,.small-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:left}}@media (min-width:768px){.medium-sides .timeline-item,.medium-sides .timeline-item-right{margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.medium-sides .timeline-item .timeline-item-date,.medium-sides .timeline-item-right .timeline-item-date{text-align:right}.medium-sides .timeline-item-left,.medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.medium-sides .timeline-item-left .timeline-item-date,.medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:left}}@media (min-width:1024px){.large-sides .timeline-item,.large-sides .timeline-item-right{margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.large-sides .timeline-item .timeline-item-date,.large-sides .timeline-item-right .timeline-item-date{text-align:right}.large-sides .timeline-item-left,.large-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.large-sides .timeline-item-left .timeline-item-date,.large-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:left}}@media (min-width:1200px){.xlarge-sides .timeline-item,.xlarge-sides .timeline-item-right{margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.xlarge-sides .timeline-item .timeline-item-date,.xlarge-sides .timeline-item-right .timeline-item-date{text-align:right}.xlarge-sides .timeline-item-left,.xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.xlarge-sides .timeline-item-left .timeline-item-date,.xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:left}}.timeline-horizontal{display:flex;height:100%;margin:0;padding:0;padding-left:var(--f7-safe-area-left);padding-right:0;position:relative}.timeline-horizontal .timeline-item{display:block;flex-shrink:0;height:100%;margin:0;padding:0;padding-bottom:var(--f7-timeline-horizontal-item-padding);padding-top:var(--f7-timeline-horizontal-date-height)!important;position:relative;width:100/3vw}.timeline-horizontal .timeline-item:after{background-color:var(--f7-timeline-horizontal-item-border-color);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.timeline-horizontal .timeline-item-date{background-color:var(--f7-bars-bg-color);color:var(--f7-bars-text-color);height:var(--f7-timeline-horizontal-date-height);left:0;line-height:var(--f7-timeline-horizontal-date-height);padding:0 var(--f7-timeline-horizontal-item-padding);position:absolute;text-align:left;top:0;width:auto;width:100%}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .timeline-horizontal .timeline-item-date{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-bars-bg-color-rgb),var(--f7-bars-translucent-opacity))}}.timeline-horizontal .timeline-item-date:after{background-color:var(--f7-timeline-horizontal-item-date-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.timeline-horizontal .timeline-item-content{-webkit-overflow-scrolling:touch;height:calc(100vw - var(--f7-timeline-horizontal-item-padding));margin:0;overflow:auto;padding:var(--f7-timeline-horizontal-item-padding)}.timeline-horizontal .timeline-item-divider{display:none}.timeline-horizontal .timeline-month:last-child .timeline-item:last-child:after,.timeline-horizontal>.timeline-item:last-child:after{display:none!important}.timeline-horizontal.timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.timeline-cols-20 .timeline-item{width:5vw}@media (min-width:480px){.timeline-horizontal.xsmall-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.xsmall-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.xsmall-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.xsmall-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.xsmall-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.xsmall-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.xsmall-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.xsmall-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.xsmall-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.xsmall-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.xsmall-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.xsmall-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.xsmall-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.xsmall-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.xsmall-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.xsmall-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.xsmall-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.xsmall-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.xsmall-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.xsmall-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:568px){.timeline-horizontal.small-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.small-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.small-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.small-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.small-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.small-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.small-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.small-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.small-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.small-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.small-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.small-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.small-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.small-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.small-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.small-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.small-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.small-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.small-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.small-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:768px){.timeline-horizontal.medium-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.medium-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.medium-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.medium-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.medium-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.medium-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.medium-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.medium-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.medium-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.medium-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.medium-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.medium-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.medium-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.medium-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.medium-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.medium-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.medium-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.medium-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.medium-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.medium-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:1024px){.timeline-horizontal.large-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.large-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.large-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.large-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.large-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.large-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.large-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.large-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.large-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.large-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.large-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.large-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.large-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.large-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.large-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.large-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.large-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.large-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.large-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.large-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:1200px){.timeline-horizontal.xlarge-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.xlarge-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.xlarge-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.xlarge-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.xlarge-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.xlarge-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.xlarge-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.xlarge-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.xlarge-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.xlarge-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.xlarge-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.xlarge-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.xlarge-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.xlarge-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.xlarge-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.xlarge-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.xlarge-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.xlarge-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.xlarge-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.xlarge-timeline-cols-20 .timeline-item{width:5vw}}.timeline-year{padding-top:var(--f7-timeline-year-height)}.timeline-year:after{background-color:var(--f7-timeline-horizontal-item-border-color);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.timeline-year:last-child:after{display:none!important}.timeline-month{padding-top:var(--f7-timeline-month-height)}.timeline-month .timeline-item:before{background-color:var(--f7-timeline-horizontal-item-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.timeline-month,.timeline-year{box-sizing:border-box;display:flex;flex-shrink:0;height:100%;position:relative}.timeline-year-title{font-size:var(--f7-timeline-year-font-size);font-weight:var(--f7-timeline-year-font-weight);height:var(--f7-timeline-year-height);line-height:var(--f7-timeline-year-height)}.timeline-month-title{font-size:var(--f7-timeline-month-font-size);font-weight:var(--f7-timeline-month-font-weight);height:var(--f7-timeline-month-height);line-height:var(--f7-timeline-month-height)}.timeline-month-title,.timeline-year-title{background-color:var(--f7-bars-bg-color);box-sizing:border-box;color:var(--f7-bars-text-color);left:0;padding:0 var(--f7-timeline-horizontal-item-padding);position:absolute;top:0;width:100%}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .timeline-month-title,.ios-translucent-bars .timeline-year-title{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-bars-bg-color-rgb),var(--f7-bars-translucent-opacity))}}.timeline-month-title span,.timeline-year-title span{display:inline-block;left:calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-left));position:sticky}.timeline-month-title span{margin-top:-2px}.timeline-year:first-child .timeline-month:first-child .timeline-month-title,.timeline-year:first-child .timeline-year-title,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-month-title{left:calc(var(--f7-safe-area-left)*-1);right:0;width:auto}.timeline-horizontal .timeline-item:first-child,.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-item:first-child,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-month-title+.timeline-item{overflow:visible}.timeline-horizontal .timeline-item:first-child .timeline-item-date,.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child .timeline-item-date,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-item:first-child .timeline-item-date,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-month-title+.timeline-item .timeline-item-date{left:calc(0px - var(--f7-safe-area-left));padding-left:calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-left));right:0;width:auto}.timeline-year:last-child .timeline-month:last-child .timeline-month-title,.timeline-year:last-child .timeline-year-title{right:calc(0px - var(--f7-safe-area-right));width:auto}.timeline-horizontal .timeline-item:last-child,.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child{overflow:visible}.timeline-horizontal .timeline-item:last-child .timeline-item-date,.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child .timeline-item-date{left:0;right:calc(0px - var(--f7-safe-area-right));width:auto}.ios .block-strong .timeline-item-inner{border:1px solid rgba(0,0,0,.1);border-radius:3px}.ios .timeline-year-title span{margin-top:3px}.md .timeline-year-title span{margin-top:2px}.tabs .tab{display:none}.tabs .tab-active{display:block}.tabs-animated-wrap{height:100%;overflow:hidden;position:relative;width:100%}.tabs-animated-wrap>.tabs{display:flex;height:100%;transition-duration:.3s}.tabs-animated-wrap>.tabs>.tab{display:block;flex-shrink:0;width:100%}.tabs-animated-wrap.not-animated>.tabs{transition-duration:0ms}swiper-container.tabs{height:100%}swiper-container.tabs>.tab{display:block;touch-action:pan-y}.page>.tabs{height:100%}:root{--f7-panel-width:260px;--f7-panel-backdrop-bg-color:rgba(0,0,0,0.3);--f7-panel-bg-color:#fff}:root .dark,:root.dark{--f7-panel-bg-color:#000}.ios{--f7-panel-collapsed-width:58px;--f7-panel-transition-duration:400ms;--f7-panel-transition-timing-function:initial}.md{--f7-panel-collapsed-width:60px;--f7-panel-transition-duration:400ms;--f7-panel-transition-timing-function:cubic-bezier(0,0.8,0.34,1)}.panel-backdrop{background-color:var(--f7-panel-backdrop-bg-color);height:100%;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transform:translateZ(0);transition-duration:var(--f7-panel-transition-duration);transition-property:transform,opacity;visibility:hidden;width:100%;z-index:5999}.panel-backdrop .with-panel,.panel-backdrop .with-panel-closing{visibility:visible}.panel-backdrop.not-animated{transition-duration:0ms!important}.panel{background-color:var(--f7-panel-bg-color);box-sizing:border-box;height:100%;overflow:visible;position:absolute;top:0;transform:translateZ(0);transition-duration:var(--f7-panel-transition-duration);transition-property:transform;width:var(--f7-panel-width);z-index:1000}.panel:not(.panel-in):not(.panel-out):not(.panel-in-breakpoint):not(.panel-in-collapsed):not(.panel-in-swipe){display:none}.panel:after{content:"";height:100%;opacity:0;pointer-events:none;position:absolute;top:0;transition-duration:var(--f7-panel-transition-duration);transition-property:transform,opacity;width:20px;z-index:5999}.panel.not-animated,.panel.not-animated:after,.panel.panel-reveal.not-animated~.view,.panel.panel-reveal.not-animated~.views{transition-duration:0ms!important}.panel.panel-resizing{-webkit-user-select:none;user-select:none}.panel.panel-resizing,.panel.panel-resizing:after,.panel.panel-resizing~.view,.panel.panel-resizing~.views{transition-duration:0ms!important}.panel-cover,.panel-floating{z-index:6000}.panel-floating{border-radius:16px;bottom:calc(8px + var(--f7-safe-area-bottom, 0px));height:auto;overflow:hidden;top:calc(8px + var(--f7-safe-area-top, 0px))}.panel-floating .view,.panel-floating .views{--f7-safe-area-top:0px;--f7-safe-area-bottom:0px}.page .panel-floating{bottom:calc(8px + var(--f7-safe-area-bottom, 0px));top:calc(8px + var(--f7-page-navbar-offset, 0px))}.page .panel-floating .page{--f7-page-navbar-offset:0px}.page .panel-floating .navbars~*,.page .panel-floating .navbar~*{--f7-page-navbar-offset:calc(var(--f7-navbar-height))}.panel-left{left:0;width:var(--f7-panel-left-width,var(--f7-panel-width))}.panel-left.panel-cover,.panel-left.panel-floating,.panel-left.panel-push{transform:translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width))*-1),0,0)}.panel-right{right:0;width:var(--f7-panel-right-width,var(--f7-panel-width))}.panel-right.panel-cover,.panel-right.panel-floating,.panel-right.panel-push{transform:translate3d(var(--f7-panel-right-width,var(--f7-panel-width)),0,0)}.panel-in-breakpoint{transform:translateZ(0)!important;transition-duration:0ms}.panel-in-breakpoint:after{display:none}.panel-in-breakpoint.panel-cover,.panel-in-breakpoint.panel-floating{z-index:5900}.panel,.panel-backdrop{transition-timing-function:var(--f7-panel-transition-timing-function)}html.with-panel-closing .framework7-root>.view,html.with-panel-closing .views,html.with-panel-left-push .framework7-root>.view,html.with-panel-left-push .views,html.with-panel-left-reveal .framework7-root>.view,html.with-panel-left-reveal .views,html.with-panel-right-push .framework7-root>.view,html.with-panel-right-push .views,html.with-panel-right-reveal .framework7-root>.view,html.with-panel-right-reveal .views{transition-duration:var(--f7-panel-transition-duration);transition-property:transform;transition-timing-function:var(--f7-panel-transition-timing-function)}html.with-panel .framework7-root>.view .page-content,html.with-panel .framework7-root>.views .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}html.with-panel-left-push .framework7-root>.view,html.with-panel-left-push .views,html.with-panel-left-reveal .framework7-root>.view,html.with-panel-left-reveal .views{transform:translate3d(var(--f7-panel-left-width,var(--f7-panel-width)),0,0)}html.with-panel-right-push .framework7-root>.view,html.with-panel-right-push .views,html.with-panel-right-reveal .framework7-root>.view,html.with-panel-right-reveal .views{transform:translate3d(calc(var(--f7-panel-right-width, var(--f7-panel-width))*-1),0,0)}.page>.panel-backdrop{z-index:290}.page .panel-push,.page>.panel-reveal{z-index:1}.page>.panel-cover,.page>.panel-floating{z-index:300}.page.with-panel-closing>.page-content,.page.with-panel-closing>.tabs,.page.with-panel-left-push>.page-content,.page.with-panel-left-push>.tabs,.page.with-panel-left-reveal>.page-content,.page.with-panel-left-reveal>.tabs,.page.with-panel-right-push>.page-content,.page.with-panel-right-push>.tabs,.page.with-panel-right-reveal>.page-content,.page.with-panel-right-reveal>.tabs{transition-duration:var(--f7-panel-transition-duration);transition-property:transform;transition-timing-function:var(--f7-panel-transition-timing-function)}.page.with-panel-left-push>.page-content,.page.with-panel-left-push>.tabs,.page.with-panel-left-reveal>.page-content,.page.with-panel-left-reveal>.tabs{transform:translate3d(var(--f7-panel-left-width,var(--f7-panel-width)),0,0)}.page.with-panel-right-push>.page-content,.page.with-panel-right-push>.tabs,.page.with-panel-right-reveal>.page-content,.page.with-panel-right-reveal>.tabs{transform:translate3d(calc(var(--f7-panel-right-width, var(--f7-panel-width))*-1),0,0)}.with-panel-closing .panel-backdrop-in{opacity:0;pointer-events:auto;visibility:visible}.with-panel-left-cover .panel-backdrop-in,.with-panel-left-floating .panel-backdrop-in,.with-panel-left-push .panel-backdrop-in,.with-panel-left-reveal .panel-backdrop-in,.with-panel-right-cover .panel-backdrop-in,.with-panel-right-floating .panel-backdrop-in,.with-panel-right-push .panel-backdrop-in,.with-panel-right-reveal .panel-backdrop-in{opacity:1;pointer-events:auto;visibility:visible}.with-panel-left-push .panel-backdrop-in,.with-panel-left-reveal .panel-backdrop-in{transform:translate3d(var(--f7-panel-left-width,var(--f7-panel-width)),0,0)}.with-panel-right-push .panel-backdrop-in,.with-panel-right-reveal .panel-backdrop-in{transform:translate3d(calc(var(--f7-panel-right-width, var(--f7-panel-width))*-1),0,0)}.with-panel-left-cover .panel-left,.with-panel-left-push .panel-left{transform:translateZ(0)}.with-panel-left-floating .panel-left{transform:translate3d(8px,0,0)}.with-panel-right-cover .panel-right,.with-panel-right-push .panel-right{transform:translateZ(0)}.with-panel-right-floating .panel-right{transform:translate3d(-8px,0,0)}.panel-resizable{max-width:100%}.panel-resize-handler{cursor:col-resize;display:none;height:100%;position:absolute;top:0;width:6px;z-index:6000}.panel-resizable .panel-resize-handler{display:block}.panel-left.panel-cover .panel-resize-handler,.panel-left.panel-floating .panel-resize-handler{right:-3px}.panel-left.panel-push .panel-resize-handler,.panel-left.panel-reveal .panel-resize-handler{right:0}.panel-right.panel-cover .panel-resize-handler,.panel-right.panel-floating .panel-resize-handler{left:-3px}.panel-right.panel-push .panel-resize-handler,.panel-right.panel-reveal .panel-resize-handler{left:0}.panel-left.panel-in-collapsed~.page-content,.panel-left.panel-in-collapsed~.tabs,.panel-left.panel-in-collapsed~.view,.panel-left.panel-in-collapsed~.views{margin-left:var(--f7-panel-left-collapsed-width,var(--f7-panel-collapsed-width))}.page.with-panel-left-reveal .panel-left.panel-in-collapsed~.page-content,.page.with-panel-left-reveal .panel-left.panel-in-collapsed~.tabs,html.with-panel-left-reveal .panel-left.panel-in-collapsed~.view,html.with-panel-left-reveal .panel-left.panel-in-collapsed~.views{transform:translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width)) - var(--f7-panel-left-collapsed-width, var(--f7-panel-collapsed-width))),0,0)}.panel-right.panel-in-collapsed~.page-content,.panel-right.panel-in-collapsed~.tabs,.panel-right.panel-in-collapsed~.view,.panel-right.panel-in-collapsed~.views{margin-right:var(--f7-panel-right-collapsed-width,var(--f7-panel-collapsed-width))}.page.with-panel-right-reveal .panel-right.panel-in-collapsed~.page-content,.page.with-panel-right-reveal .panel-right.panel-in-collapsed~.tabs,html.with-panel-right-reveal .panel-right.panel-in-collapsed~.view,html.with-panel-right-reveal .panel-right.panel-in-collapsed~.views{transform:translate3d(calc(var(--f7-panel-right-collapsed-width, var(--f7-panel-collapsed-width)) - var(--f7-panel-right-width, var(--f7-panel-width))),0,0)}html.with-modal-popup-push .framework7-root,html.with-modal-popup-push-closing .framework7-root{--f7-panelPushScale:var(--f7-popup-push-scale);--f7-panelPushTransitionDuration:var(--f7-popup-transition-duration);--f7-panelPushTransitionTimingFunction:var(--f7-popup-transition-timing-function);--f7-panelPushBorderRadius:var(--f7-popup-push-border-radius)}html.with-modal-sheet-push .framework7-root,html.with-modal-sheet-push-closing .framework7-root{--f7-panelPushScale:var(--f7-sheet-push-scale);--f7-panelPushTransitionDuration:var(--f7-sheet-transition-duration);--f7-panelPushTransitionTimingFunction:var(--f7-sheet-transition-timing-function);--f7-panelPushBorderRadius:var(--f7-sheet-push-border-radius)}html.with-modal-popup-push .framework7-root>.panel-in,html.with-modal-popup-push .framework7-root>.panel-out,html.with-modal-sheet-push .framework7-root>.panel-in,html.with-modal-sheet-push .framework7-root>.panel-out{transition-duration:var(--f7-panelPushTransitionDuration);transition-timing-function:var(--f7-panelPushTransitionTimingFunction)}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-left,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-left,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-left,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-left,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-left,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-left{border-top-left-radius:var(--f7-panelPushBorderRadius);transform:scale(var(--f7-panelPushScale,1));transform-origin:50vw center}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-left .view,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-left .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-left .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-left .view{border-top-left-radius:var(--f7-panelPushBorderRadius)}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-right,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-right,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-right,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-right,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-right,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-right{border-top-right-radius:var(--f7-panelPushBorderRadius);transform:scale(var(--f7-panelPushScale,1));transform-origin:calc(var(--f7-panel-left-width, var(--f7-panel-width)) - 50vw) center}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-right .view,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-right .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-right .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-right .view{border-top-right-radius:var(--f7-panelPushBorderRadius)}html.with-modal-popup-push .framework7-root>.panel-in.panel-cover.panel-left,html.with-modal-popup-push .framework7-root>.panel-out.panel-cover.panel-left,html.with-modal-sheet-push .framework7-root>.panel-in.panel-cover.panel-left,html.with-modal-sheet-push .framework7-root>.panel-out.panel-cover.panel-left{transform:translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width))*-1),0,0)}html.with-modal-popup-push .framework7-root>.panel-in.panel-cover.panel-right,html.with-modal-popup-push .framework7-root>.panel-out.panel-cover.panel-right,html.with-modal-sheet-push .framework7-root>.panel-in.panel-cover.panel-right,html.with-modal-sheet-push .framework7-root>.panel-out.panel-cover.panel-right{transform:translate3d(var(--f7-panel-right-width,var(--f7-panel-width)),0,0)}html.with-modal-popup-push-closing .framework7-root>.panel-in,html.with-modal-sheet-push-closing .framework7-root>.panel-in{transition-duration:var(--f7-panelPushTransitionDuration);transition-timing-function:var(--f7-panelPushTransitionTimingFunction)}html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-reveal.panel-left,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-reveal.panel-left{transform-origin:50vw center}html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-reveal.panel-right,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-reveal.panel-right{transform-origin:calc(var(--f7-panel-right-width, var(--f7-panel-width)) - 50vw) center}.md .panel-cover{overflow:hidden}.md .panel-cover.panel-left{border-radius:0 16px 16px 0}.md .panel-cover.panel-right{border-radius:16px 0 0 16px}:root{--f7-card-margin-horizontal:16px;--f7-card-margin-vertical:16px;--f7-card-content-padding-horizontal:16px;--f7-card-content-padding-vertical:16px;--f7-card-font-size:inherit;--f7-card-header-text-color:inherit;--f7-card-header-font-weight:400;--f7-card-header-padding-horizontal:16px;--f7-card-footer-font-weight:400;--f7-card-footer-font-size:inherit;--f7-card-footer-padding-horizontal:16px;--f7-card-expandable-font-size:16px;--f7-card-expandable-tablet-width:670px;--f7-card-expandable-tablet-height:670px}.ios{--f7-card-border-radius:8px;--f7-card-box-shadow:0px 1px 2px rgba(0,0,0,0.2);--f7-card-header-font-size:17px;--f7-card-header-padding-vertical:10px;--f7-card-header-min-height:44px;--f7-card-footer-text-color:rgba(0,0,0,0.45);--f7-card-footer-padding-vertical:10px;--f7-card-footer-min-height:44px;--f7-card-expandable-margin-horizontal:20px;--f7-card-expandable-margin-vertical:30px;--f7-card-expandable-box-shadow:0px 20px 40px rgba(0,0,0,0.3);--f7-card-expandable-border-radius:16px;--f7-card-expandable-tablet-border-radius:16px;--f7-card-expandable-header-font-size:27px;--f7-card-expandable-header-font-weight:bold;--f7-card-text-color:inherit;--f7-card-bg-color:#fff;--f7-card-expandable-bg-color:#fff;--f7-card-outline-border-color:rgba(0,0,0,0.12);--f7-card-header-border-color:rgba(0,0,0,0.1);--f7-card-footer-border-color:rgba(0,0,0,0.1)}.ios .dark,.ios.dark{--f7-card-bg-color:#1c1c1d;--f7-card-expandable-bg-color:#1c1c1d;--f7-card-outline-border-color:rgba(255,255,255,0.15);--f7-card-header-border-color:rgba(255,255,255,0.15);--f7-card-footer-border-color:rgba(255,255,255,0.15);--f7-card-footer-text-color:rgba(255,255,255,0.55)}.md{--f7-card-border-radius:16px;--f7-card-box-shadow:0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);--f7-card-header-font-size:22px;--f7-card-header-padding-vertical:16px;--f7-card-header-min-height:48px;--f7-card-footer-padding-vertical:16px;--f7-card-footer-min-height:48px;--f7-card-expandable-margin-horizontal:12px;--f7-card-expandable-margin-vertical:24px;--f7-card-expandable-box-shadow:0px 6px 6px -3px rgba(0,0,0,0.2),0px 10px 14px 1px rgba(0,0,0,0.14),0px 4px 18px 3px rgba(0,0,0,0.12);--f7-card-expandable-border-radius:16px;--f7-card-expandable-tablet-border-radius:16px;--f7-card-expandable-header-font-size:22px;--f7-card-expandable-header-font-weight:500}.md,.md .dark,.md [class*=color-]{--f7-card-bg-color:var(--f7-md-surface-1);--f7-card-expandable-bg-color:var(--f7-md-surface-1);--f7-card-outline-border-color:var(--f7-md-outline);--f7-card-header-border-color:var(--f7-md-outline);--f7-card-footer-border-color:var(--f7-md-outline);--f7-card-text-color:var(--f7-md-on-surface);--f7-card-footer-text-color:var(--f7-md-on-surface-variant)}.card .list>ul:after,.card .list>ul:before,.cards-list>ul:after,.cards-list>ul:before{display:none!important}.card .list ul,.cards-list ul{background:none}.card{background:var(--f7-card-bg-color);border-radius:var(--f7-card-border-radius);color:var(--f7-card-text-color);font-size:var(--f7-card-font-size);margin:var(--f7-card-margin-vertical) calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-right)) var(--f7-card-margin-vertical) calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-left));position:relative}.card .block,.card .list{margin:0}.row:not(.no-gap) .col>.card{margin-left:0;margin-right:0}.card-raised{box-shadow:var(--f7-card-box-shadow)}.card-outline,.ios .card-outline-ios,.md .card-outline-md{border:1px solid var(--f7-card-outline-border-color)}.card-content{position:relative}.card-content-padding{padding:var(--f7-card-content-padding-vertical) var(--f7-card-content-padding-horizontal);position:relative}.card-content-padding>.block,.card-content-padding>.list{margin:calc(var(--f7-card-content-padding-vertical)*-1) calc(var(--f7-card-content-padding-horizontal)*-1)}.card-content-padding>p:first-child{margin-top:0}.card-content-padding>p:last-child{margin-bottom:0}.card-header{color:var(--f7-card-header-text-color);font-size:var(--f7-card-header-font-size);font-weight:var(--f7-card-header-font-weight);min-height:var(--f7-card-header-min-height);padding:var(--f7-card-header-padding-vertical) var(--f7-card-header-padding-horizontal)}.card-dividers .card-header,.card-header-divider .card-header,.card-header.card-header-divider{border-bottom:1px solid var(--f7-card-header-border-color)}.card-footer{color:var(--f7-card-footer-text-color);font-size:var(--f7-card-footer-font-size);font-weight:var(--f7-card-footer-font-weight);min-height:var(--f7-card-footer-min-height);padding:var(--f7-card-footer-padding-vertical) var(--f7-card-footer-padding-horizontal)}.card-dividers .card-footer,.card-footer-divider .card-footer,.card-footer.card-footer-divider{border-top:1px solid var(--f7-card-header-border-color)}.card-footer a.link{overflow:hidden}.card-footer,.card-header{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;position:relative}.card-footer[valign=top],.card-header[valign=top]{align-items:flex-start}.card-footer[valign=bottom],.card-header[valign=bottom]{align-items:flex-end}.card-footer a.link,.card-header a.link{position:relative}.card-footer a.link i.icon,.card-header a.link i.icon{display:block}.card-footer a.icon-only,.card-header a.icon-only{align-items:center;display:flex;justify-content:center;margin:0}.card-header{border-radius:var(--f7-card-border-radius) var(--f7-card-border-radius) 0 0}.card-footer{border-radius:0 0 var(--f7-card-border-radius) var(--f7-card-border-radius)}.card-expandable{background:var(--f7-card-expandable-bg-color);border-radius:var(--f7-card-expandable-border-radius);font-size:var(--f7-card-expandable-font-size);height:300px;margin:var(--f7-card-expandable-margin-vertical) calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-right)) var(--f7-card-expandable-margin-vertical) calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-left));overflow:hidden;position:relative;transform-origin:center center;transition-duration:.2s;transition-property:transform,border-radius;z-index:2}.card-expandable.card-raised{box-shadow:var(--f7-card-expandable-box-shadow)}.card-expandable:not(.card-opened){-webkit-user-select:none;user-select:none}.card-expandable.card-no-transition{transition-duration:0ms}.card-expandable.card-expandable-animate-width .card-content{transition-property:width,transform;width:100%}.card-expandable.active-state{transform:scale(.97) translateZ(0)}.card-expandable .card-opened-fade-in,.card-expandable .card-opened-fade-out{transition-duration:.4s}.card-expandable .card-opened-fade-in{opacity:0;pointer-events:none}.card-expandable .card-content{box-sizing:border-box;height:100vh;left:0;overflow:hidden;pointer-events:none;position:absolute;top:0;transform-origin:center top;transition-property:transform;width:100vw}.card-expandable .card-content .card-content-padding{padding-left:calc(var(--f7-safe-area-left) + var(--f7-card-content-padding-horizontal));padding-right:calc(var(--f7-safe-area-right) + var(--f7-card-content-padding-horizontal))}.card-expandable.card-opened{transition-duration:0ms}.card-expandable.card-closing,.card-expandable.card-opening,.card-expandable.card-transitioning{transition-duration:.4s}.card-expandable.card-opening .card-content{transition-duration:.3s}.card-expandable.card-closing .card-content{transition-duration:.5s}.card-expandable.card-closing,.card-expandable.card-opened,.card-expandable.card-opening{z-index:300}.card-expandable.card-opened,.card-expandable.card-opening{border-radius:0}.card-expandable.card-opened .card-opened-fade-in,.card-expandable.card-opening .card-opened-fade-in{opacity:1;pointer-events:auto}.card-expandable.card-opened .card-opened-fade-out,.card-expandable.card-opening .card-opened-fade-out{opacity:0;pointer-events:none}.card-expandable.card-opened .card-content{-webkit-overflow-scrolling:touch;overflow:auto;pointer-events:auto}.card-expandable .card-header{font-size:var(--f7-card-expandable-header-font-size);font-weight:var(--f7-card-expandable-header-font-weight)}.card-prevent-open{pointer-events:auto}.card-expandable-size{height:0;left:0;opacity:0;pointer-events:none;position:absolute;top:0;visibility:hidden;width:0}@media (min-width:768px) and (min-height:670px){.card-expandable:not(.card-tablet-fullscreen){max-width:var(--f7-card-expandable-tablet-width)}.card-expandable:not(.card-tablet-fullscreen).card-opened,.card-expandable:not(.card-tablet-fullscreen).card-opening{border-radius:var(--f7-card-expandable-tablet-border-radius)}.card-expandable:not(.card-tablet-fullscreen):not(.card-expandable-animate-width) .card-content{width:var(--f7-card-expandable-tablet-width)}.card-expandable:not(.card-tablet-fullscreen) .card-expandable-size{height:var(--f7-card-expandable-tablet-height);width:var(--f7-card-expandable-tablet-width)}}.page.page-with-card-opened .page-content{overflow:hidden}.card-backdrop{background:rgba(0,0,0,.2);height:100%;left:0;opacity:0;pointer-events:none;position:fixed;top:0;width:100%;z-index:299}.card-backdrop-in{animation:card-backdrop-fade-in .4s forwards;pointer-events:auto}.card-backdrop-out{animation:card-backdrop-fade-out .4s forwards}@supports ((-webkit-backdrop-filter:blur(15px)) or (backdrop-filter:blur(15px))){.card-backdrop{-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background:transparent}}@keyframes card-backdrop-fade-in{0%{opacity:0}to{opacity:1}}@keyframes card-backdrop-fade-out{0%{opacity:1}to{opacity:0}}:root{--f7-chip-font-size:14px;--f7-chip-media-font-size:16px;--f7-chip-delete-button-color:#000}:root .dark,:root.dark{--f7-chip-delete-button-color:#fff}.ios{--f7-chip-height:28px;--f7-chip-media-size:28px;--f7-chip-padding-horizontal:10px;--f7-chip-border-radius:28px;--f7-chip-font-weight:normal;--f7-chip-outline-border-color:rgba(0,0,0,0.12);--f7-chip-bg-color:rgba(0,0,0,0.12);--f7-chip-text-color:#000;--f7-chip-outline-text-color:#000}.ios .dark,.ios.dark{--f7-chip-bg-color:#333;--f7-chip-text-color:#fff;--f7-chip-outline-text-color:#fff;--f7-chip-outline-border-color:rgba(255,255,255,0.12)}.md{--f7-chip-font-weight:500;--f7-chip-media-size:24px;--f7-chip-height:32px;--f7-chip-padding-horizontal:12px;--f7-chip-border-radius:8px}.md,.md .dark,.md [class*=color-]{--f7-chip-bg-color:var(--f7-md-secondary-container);--f7-chip-text-color:var(--f7-md-on-secondary-container);--f7-chip-outline-text-color:var(--f7-md-on-surface);--f7-chip-outline-border-color:var(--f7-md-outline)}.chip{background-color:var(--f7-chip-bg-color);border-radius:var(--f7-chip-border-radius);color:var(--f7-chip-text-color);display:inline-flex;font-size:var(--f7-chip-font-size);font-weight:var(--f7-chip-font-weight);height:var(--f7-chip-height);line-height:var(--f7-chip-height);margin:2px 0;padding-left:var(--f7-chip-padding-horizontal);padding-right:var(--f7-chip-padding-horizontal);position:relative}.chip,.chip-media{align-items:center;box-sizing:border-box;vertical-align:middle}.chip-media{border-radius:50%;border-radius:var(--f7-chip-media-size);color:#fff;display:flex;flex-shrink:0;font-size:var(--f7-chip-media-font-size);height:var(--f7-chip-media-size);justify-content:center;line-height:var(--f7-chip-media-size);text-align:center;width:var(--f7-chip-media-size)}.chip-media i.icon{font-size:calc(var(--f7-chip-media-size) - 8px);height:calc(var(--f7-chip-media-size) - 8px)}.chip-media img{border-radius:50%;display:block;height:auto;max-height:100%;max-width:100%;width:auto}.chip-media+.chip-label{margin-left:4px}.chip-label{flex-shrink:1;min-width:0;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}.chip-delete{background-repeat:no-repeat;color:var(--f7-chip-delete-button-color);cursor:pointer;flex-shrink:0;height:24px;opacity:.54;position:relative;text-align:center;width:24px}.chip-delete:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;line-height:24px;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.chip .chip-delete.active-state{opacity:1}.chip-outline,.ios .chip-outline-ios,.md .chip-outline-md{background:none;border:1px solid var(--f7-chip-outline-border-color);color:var(--f7-chip-outline-text-color)}.ios .chip[class*=color-]{--f7-chip-bg-color:var(--f7-theme-color);--f7-chip-text-color:#fff}.ios .chip-outline-ios[class*=color-],.ios .chip-outline[class*=color-]{--f7-chip-outline-border-color:var(--f7-theme-color);--f7-chip-outline-text-color:var(--f7-theme-color)}.ios .chip-media{margin-left:calc(var(--f7-chip-padding-horizontal)*-1)}.ios .chip-delete{margin-right:calc(var(--f7-chip-padding-horizontal)*-1)}.ios .chip-delete:after{content:"delete_round_ios";font-size:10px}.md .chip-media{margin-left:calc(var(--f7-chip-padding-horizontal)*-1 + 4px)}.md .chip-label+.chip-delete{margin-left:4px}.md .chip-delete{margin-right:calc(var(--f7-chip-padding-horizontal)*-1 + 4px)}.md .chip-delete:after{content:"delete_round_md";font-size:16px}:root{--f7-input-bg-color:transparent;--f7-label-font-weight:400;--f7-label-height:16px;--f7-label-font-size:12px;--f7-floating-label-scale:1.33333;--f7-input-padding-left:0px;--f7-input-padding-right:0px;--f7-input-error-text-color:#ff3b30;--f7-input-error-font-size:12px;--f7-input-error-line-height:1.4;--f7-input-error-font-weight:400;--f7-input-info-font-size:12px;--f7-input-info-line-height:1.4;--f7-textarea-height:100px}.ios{--f7-input-item-bg-color:transparent;--f7-input-item-border-radius:0px;--f7-input-height:40px;--f7-input-font-size:16px;--f7-input-placeholder-color:#a9a9a9;--f7-textarea-padding-vertical:8px;--f7-label-text-color:inherit;--f7-input-clear-button-size:14px;--f7-input-outline-border-radius:8px;--f7-input-text-color:#000000;--f7-input-info-text-color:rgba(0,0,0,0.45);--f7-input-clear-button-color:rgba(0,0,0,0.45);--f7-input-outline-border-color:#bbb}.ios .dark,.ios.dark{--f7-input-text-color:#fff;--f7-input-info-text-color:rgba(255,255,255,0.55);--f7-input-clear-button-color:rgba(255,255,255,0.5);--f7-input-outline-border-color:#444}.md{--f7-input-item-border-radius:4px 4px 0 0;--f7-input-height:24px;--f7-input-font-size:16px;--f7-textarea-padding-vertical:0px;--f7-input-outline-border-radius:4px;--f7-floating-label-scale:1.33333;--f7-input-clear-button-size:24px;--f7-input-info-text-color:rgba(0,0,0,0.45)}.md .dark,.md.dark{--f7-input-info-text-color:rgba(255,255,255,0.45)}.md,.md .dark,.md [class*=color-]{--f7-input-placeholder-color:var(--f7-md-on-surface-variant);--f7-input-item-bg-color:var(--f7-md-surface-variant);--f7-input-border-color:var(--f7-md-outline);--f7-input-clear-button-color:var(--f7-md-on-surface-variant);--f7-input-outline-border-color:var(--f7-md-outline);--f7-input-text-color:var(--f7-md-on-surface);--f7-label-text-color:var(--f7-md-on-surface-variant)}input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],select,textarea{-webkit-appearance:none;appearance:none;background:none;border:none;border-radius:0;box-shadow:none;box-sizing:border-box;color:inherit;display:block;font-family:inherit;font-size:inherit;margin:0;outline:0;padding:0;resize:none}input[type=date]:-internal-autofill-selected,input[type=datetime-local]:-internal-autofill-selected,input[type=email]:-internal-autofill-selected,input[type=month]:-internal-autofill-selected,input[type=number]:-internal-autofill-selected,input[type=password]:-internal-autofill-selected,input[type=search]:-internal-autofill-selected,input[type=tel]:-internal-autofill-selected,input[type=text]:-internal-autofill-selected,input[type=time]:-internal-autofill-selected,input[type=url]:-internal-autofill-selected,select:-internal-autofill-selected,textarea:-internal-autofill-selected{background-color:initial!important;transition:background-color 5000s ease-in-out 0s!important}input[type=date]:-webkit-autofill,input[type=datetime-local]:-webkit-autofill,input[type=email]:-webkit-autofill,input[type=month]:-webkit-autofill,input[type=number]:-webkit-autofill,input[type=password]:-webkit-autofill,input[type=search]:-webkit-autofill,input[type=tel]:-webkit-autofill,input[type=text]:-webkit-autofill,input[type=time]:-webkit-autofill,input[type=url]:-webkit-autofill,select:-webkit-autofill,textarea:-webkit-autofill{background-color:initial!important;-webkit-transition:background-color 5000s ease-in-out 0s!important;transition:background-color 5000s ease-in-out 0s!important}input[type=date]:-webkit-autofill-and-obscured,input[type=date]:autofill,input[type=datetime-local]:-webkit-autofill-and-obscured,input[type=datetime-local]:autofill,input[type=email]:-webkit-autofill-and-obscured,input[type=email]:autofill,input[type=month]:-webkit-autofill-and-obscured,input[type=month]:autofill,input[type=number]:-webkit-autofill-and-obscured,input[type=number]:autofill,input[type=password]:-webkit-autofill-and-obscured,input[type=password]:autofill,input[type=search]:-webkit-autofill-and-obscured,input[type=search]:autofill,input[type=tel]:-webkit-autofill-and-obscured,input[type=tel]:autofill,input[type=text]:-webkit-autofill-and-obscured,input[type=text]:autofill,input[type=time]:-webkit-autofill-and-obscured,input[type=time]:autofill,input[type=url]:-webkit-autofill-and-obscured,input[type=url]:autofill,select:-webkit-autofill-and-obscured,select:autofill,textarea:-webkit-autofill-and-obscured,textarea:autofill{background-color:initial!important;-webkit-transition:background-color 5000s ease-in-out 0s!important;transition:background-color 5000s ease-in-out 0s!important}.textarea-resizable-shadow{left:-1000px;opacity:0;pointer-events:none;position:absolute;top:-1000px;visibility:hidden;z-index:-1000}.list input[type=date],.list input[type=datetime-local],.list input[type=email],.list input[type=month],.list input[type=number],.list input[type=password],.list input[type=search],.list input[type=tel],.list input[type=text],.list input[type=time],.list input[type=url],.list select{background-color:var(--f7-input-bg-color,transparent);color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);height:var(--f7-input-height);padding-left:var(--f7-input-padding-left);padding-right:var(--f7-input-padding-right);width:100%}.list input[type=date]::placeholder,.list input[type=datetime-local]::placeholder,.list input[type=email]::placeholder,.list input[type=month]::placeholder,.list input[type=number]::placeholder,.list input[type=password]::placeholder,.list input[type=search]::placeholder,.list input[type=tel]::placeholder,.list input[type=text]::placeholder,.list input[type=time]::placeholder,.list input[type=url]::placeholder,.list select::placeholder{color:var(--f7-input-placeholder-color)}.list textarea{background-color:var(--f7-input-bg-color,transparent);color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);height:var(--f7-textarea-height);line-height:1.4;padding:var(--f7-textarea-padding-vertical) var(--f7-input-padding-right) var(--f7-textarea-padding-vertical) var(--f7-input-padding-left);resize:none;width:100%}.list textarea::placeholder{color:var(--f7-input-placeholder-color)}.list textarea.resizable{height:calc(var(--f7-input-height) + var(--f7-textarea-padding-vertical)*2)}.list input[type=date],.list input[type=datetime-local],.list input[type=month],.list input[type=time]{line-height:var(--f7-input-height)}.list .item-floating-label,.list .item-label{color:var(--f7-label-text-color);flex-shrink:0;font-size:var(--f7-label-font-size);font-weight:var(--f7-label-font-weight);line-height:var(--f7-label-height);transition-duration:.2s;transition-property:transform,color;vertical-align:top;width:auto}.list .item-floating-label{color:var(--f7-input-placeholder-color);left:var(--f7-input-padding-left);max-width:calc(100%/var(--f7-floating-label-scale));pointer-events:none;transform-origin:left center}.list .item-floating-label~.item-input-wrap input::placeholder,.list .item-floating-label~.item-input-wrap textarea::placeholder{opacity:0;transition-duration:.1s}.list .item-floating-label~.item-input-wrap input.input-focused::placeholder,.list .item-floating-label~.item-input-wrap textarea.input-focused::placeholder{opacity:1;transition-duration:.3s}.list .item-input-with-value .item-floating-label{color:var(--f7-label-text-color)}.list .item-input-focused .item-floating-label,.list .item-input-with-value .item-floating-label{transform:scale(1) translateY(0)!important}.list .item-input-wrap{flex-shrink:1;position:relative;width:100%}.input,.item-input{position:relative}.item-input .item-inner{align-items:flex-start;display:flex;flex-direction:column;justify-content:center}.input-error-message,.item-input-error-message{box-sizing:border-box;color:var(--f7-input-error-text-color);display:none;font-size:var(--f7-input-error-font-size);font-weight:var(--f7-input-error-font-weight);line-height:var(--f7-input-error-line-height)}.input-info,.item-input-info{color:var(--f7-input-info-text-color);font-size:var(--f7-input-info-font-size);line-height:var(--f7-input-info-line-height)}.input-invalid .input-error-message,.input-invalid .item-input-error-message,.item-input-invalid .input-error-message,.item-input-invalid .item-input-error-message{display:block}.input-invalid .input-info,.input-invalid .item-input-info,.item-input-invalid .input-info,.item-input-invalid .item-input-info{display:none}.input{position:relative}.input input,.input select,.input textarea{width:100%}.input-clear-button{background:none;border:none;color:var(--f7-input-clear-button-color);cursor:pointer;height:var(--f7-input-clear-button-size);margin:0;margin-top:calc(var(--f7-input-clear-button-size)*-1/2);opacity:0;outline:0;padding:0;pointer-events:none;position:absolute;right:0;top:50%;transition-duration:.1s;visibility:hidden;width:var(--f7-input-clear-button-size);z-index:1}.input-clear-button:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.input-clear-button:before{content:"";left:50%;position:absolute;top:50%}.item-input-wrap .input-clear-button{top:calc(var(--f7-input-height)/2)}.input-clear-button.active-state{opacity:.75!important}.input-with-value .input-clear-button,.input-with-value~.input-clear-button,.item-input-with-value .input-clear-button{opacity:1;pointer-events:auto;visibility:visible}.input-dropdown,.input-dropdown-wrap{position:relative}.input-dropdown-wrap:before,.input-dropdown:before{border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #727272;content:"";height:0;margin-top:-2px;pointer-events:none;position:absolute;right:6px;top:50%;width:0}.input-dropdown input,.input-dropdown select,.input-dropdown textarea,.input-dropdown-wrap input,.input-dropdown-wrap select,.input-dropdown-wrap textarea{padding-right:calc(20px + var(--f7-input-padding-right))}.input-outline:after,.item-input-outline .item-content:after,.item-input-outline.item-content:after{border:1px solid var(--f7-input-outline-border-color);border-radius:var(--f7-input-outline-border-radius);bottom:8px;box-sizing:border-box;content:"";left:0;pointer-events:none;position:absolute;right:0;top:8px;transition-duration:.2s}.input-outline .item-floating-label,.input-outline .item-label,.item-input-outline .item-content .item-floating-label,.item-input-outline .item-content .item-label,.item-input-outline.item-content .item-floating-label,.item-input-outline.item-content .item-label{background:var(--f7-page-bg-color);padding:4px;pointer-events:none;z-index:1}.input-outline.input-focused:after,.input-outline.item-input-focused:after,.item-input-outline .item-content.input-focused:after,.item-input-outline .item-content.item-input-focused:after,.item-input-outline.item-content.input-focused:after,.item-input-outline.item-content.item-input-focused:after{border-color:var(--f7-input-outline-invalid-border-color,var(--f7-theme-color));border-width:2px}.input-outline.input-invalid:after,.input-outline.item-input-invalid:after,.item-input-outline .item-content.input-invalid:after,.item-input-outline .item-content.item-input-invalid:after,.item-input-outline.item-content.input-invalid:after,.item-input-outline.item-content.item-input-invalid:after{border-color:var(--f7-input-outline-invalid-border-color,var(--f7-input-error-text-color));border-width:2px}.block-strong .item-input-outline .item-floating-label,.block-strong .item-input-outline .item-label,.ios .block-strong-ios .item-input-outline .item-floating-label,.ios .block-strong-ios .item-input-outline .item-label,.md .block-strong-md .item-input-outline .item-floating-label,.md .block-strong-md .item-input-outline .item-label{background:var(--f7-block-strong-bg-color)!important}.ios .list-strong-ios .item-input-outline .item-floating-label,.ios .list-strong-ios .item-input-outline .item-label,.list-strong .item-input-outline .item-floating-label,.list-strong .item-input-outline .item-label,.md .list-strong-md .item-input-outline .item-floating-label,.md .list-strong-md .item-input-outline .item-label{background:var(--f7-list-strong-bg-color)!important}.dark option{background-color:var(--f7-page-bg-color)}.ios .item-floating-label+.item-input-wrap,.ios .item-label+.item-input-wrap{margin-top:0}.ios .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height) + 25%))}.ios .item-input-focused .item-floating-label{color:var(--f7-label-text-color)}.ios .item-input .item-media{align-self:flex-start}.ios .item-input-wrap{margin-bottom:calc(var(--f7-list-item-padding-vertical)*-1);margin-top:calc(var(--f7-list-item-padding-vertical)*-1)}.ios .item-input:not(.item-input-outline) .item-content,.ios .item-input:not(.item-input-outline).item-content{background:var(--f7-input-item-bg-color)}.ios .input-error-message,.ios .input-info,.ios .item-input-error-message,.ios .item-input-info{margin-bottom:6px;margin-top:-8px;position:relative}.ios .item-input-focused .item-floating-label,.ios .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-label-text-color))}.ios .item-input-focused .item-inner:after{background:var(--f7-input-focused-border-color,var(--f7-list-item-border-color))}.ios .item-input-invalid .item-floating-label,.ios .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-label-text-color))}.ios .item-input-invalid .item-inner:after{background:var(--f7-input-invalid-border-color,var(--f7-list-item-border-color))}.ios .input-invalid input,.ios .input-invalid select,.ios .input-invalid textarea,.ios .item-input-invalid input,.ios .item-input-invalid select,.ios .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-error-text-color))}.ios .input-clear-button:after{content:"delete_round_ios";font-size:calc(var(--f7-input-clear-button-size)/1.4);line-height:1.4}.ios .input-clear-button:before{height:44px;margin-left:-22px;margin-top:-22px;width:44px}.ios .item-input-outline .item-content,.ios .item-input-outline.item-content{margin-left:16px;margin-right:16px;padding-bottom:8px;padding-top:8px}.ios li.item-input-outline:first-child,.ios li:first-child>.item-input-outline{padding-top:16px}.ios li.item-input-outline:first-child:after,.ios li:first-child>.item-input-outline:after{top:16px}.ios li.item-input-outline:last-child,.ios li:last-child>.item-input-outline{padding-bottom:16px}.ios li.item-input-outline:last-child:after,.ios li:last-child>.item-input-outline:after{bottom:16px}.ios .input-outline .item-inner,.ios .item-input-outline .item-content .item-inner,.ios .item-input-outline.item-content .item-inner{display:block;padding-bottom:0;padding-top:0}.ios .input-outline .item-input-wrap,.ios .item-input-outline .item-content .item-input-wrap,.ios .item-input-outline.item-content .item-input-wrap{margin-top:2px}.ios .input-outline .item-title+.item-input-wrap,.ios .item-input-outline .item-content .item-title+.item-input-wrap,.ios .item-input-outline.item-content .item-title+.item-input-wrap{margin-top:-22px}.ios .input-outline .item-floating-label,.ios .input-outline .item-label,.ios .item-input-outline .item-content .item-floating-label,.ios .item-input-outline .item-content .item-label,.ios .item-input-outline.item-content .item-floating-label,.ios .item-input-outline.item-content .item-label{display:inline-flex;margin:-8px -4px -4px;top:-4px}.ios .input-outline .item-floating-label,.ios .item-input-outline .item-content .item-floating-label,.ios .item-input-outline.item-content .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height)))}.md .item-input-wrap{min-height:var(--f7-input-height)}.md .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc((var(--f7-input-height)/2)/var(--f7-floating-label-scale)))}.md .item-input .item-inner:after{display:none!important}.md .item-input .item-content,.md .item-input.item-content{margin-left:16px;margin-right:16px;padding-bottom:8px;padding-top:8px}.md .input:after{background-color:var(--f7-input-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform:scaleY(1)!important;transform-origin:50% 100%;transition-duration:.2s;width:100%;z-index:15}.md .input.input-focused:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color));transform:scaleY(2)!important}.md .input.input-invalid:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color));transform:scaleY(2)!important}.md .item-input:not(.item-input-outline) .item-content:after,.md .item-input:not(.item-input-outline).item-content:after{background-color:var(--f7-input-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.md .item-input:not(.item-input-outline) .item-content:before,.md .item-input:not(.item-input-outline).item-content:before{background:var(--f7-input-item-bg-color);border-radius:var(--f7-input-item-border-radius);bottom:8px;content:"";left:0;pointer-events:none;position:absolute;right:0;top:8px}.md .item-input:not(.item-input-outline) .item-content:after,.md .item-input:not(.item-input-outline).item-content:after{bottom:8px;transform:scaleY(1)!important;transition-duration:.2s}.md .item-input:not(.item-input-outline) .item-content.item-input-focused:after,.md .item-input:not(.item-input-outline).item-content.item-input-focused:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color));transform:scaleY(2)!important}.md .item-input:not(.item-input-outline) .item-content.input-invalid:after,.md .item-input:not(.item-input-outline) .item-content.item-input-invalid:after,.md .item-input:not(.item-input-outline).item-content.input-invalid:after,.md .item-input:not(.item-input-outline).item-content.item-input-invalid:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color));transform:scaleY(2)!important}.md .input-outline .item-inner,.md .item-input-outline .item-content .item-inner,.md .item-input-outline.item-content .item-inner{padding-bottom:16px;padding-top:16px}.md .input-outline .item-floating-label,.md .input-outline .item-label,.md .item-input-outline .item-content .item-floating-label,.md .item-input-outline .item-content .item-label,.md .item-input-outline.item-content .item-floating-label,.md .item-input-outline.item-content .item-label{--label-height:calc(var(--f7-label-height) + 8px);margin:calc(-16px - var(--label-height)/2) -4px 4px}.md .input-outline .item-floating-label,.md .item-input-outline .item-content .item-floating-label,.md .item-input-outline.item-content .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-input-height)/2 + 8px))}.md .input-with-error-message,.md .input-with-info,.md .item-input-with-error-message,.md .item-input-with-info{padding-bottom:24px!important}.md .input-error-message,.md .input-info,.md .item-input-error-message,.md .item-input-info{left:0;overflow:hidden;position:absolute;text-overflow:ellipsis;top:100%;white-space:nowrap;width:100%}.md .item-input-focused .item-floating-label,.md .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-theme-color))}.md .input-focused:not(.input-outline):after,.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color))}.md .input-focused:not(.input-outline):after,.md .input-invalid:not(.input-outline):after,.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after,.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after{transform:scaleY(2)!important}.md .input-invalid:not(.input-outline):after,.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color))}.md .item-input-invalid .item-floating-label,.md .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-input-error-text-color))}.md .input-invalid input,.md .input-invalid select,.md .input-invalid textarea,.md .item-input-invalid input,.md .item-input-invalid select,.md .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-text-color))}.md .input-clear-button:after{content:"delete_round_md";font-size:var(--f7-input-clear-button-size);line-height:1}.md .input-clear-button:before{height:48px;margin-left:-24px;margin-top:-24px;width:48px}:root{--f7-checkbox-icon-color:#fff;--f7-checkbox-extra-margin:0px}:root .dark,:root.dark{--f7-checkbox-inactive-color:rgba(255,255,255,0.3);--f7-checkbox-icon-color:#000}.ios{--f7-checkbox-size:22px;--f7-checkbox-border-radius:50%;--f7-checkbox-border-width:1px;--f7-checkbox-inactive-color:#c7c7cc}.md{--f7-checkbox-size:18px;--f7-checkbox-border-radius:2px;--f7-checkbox-border-width:2px;--f7-checkbox-inactive-color:#6d6d6d}.checkbox{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.5);background-color:initial;display:inline-block;position:relative;vertical-align:middle;z-index:1}.checkbox i,.icon-checkbox{border:var(--f7-checkbox-border-width) solid var(--f7-checkbox-inactive-color);border-radius:var(--f7-checkbox-border-radius);box-sizing:border-box;display:block;flex-shrink:0;height:var(--f7-checkbox-size);position:relative;width:var(--f7-checkbox-size)}.checkbox i:after,.icon-checkbox:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-checkbox-icon-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;height:var(--f7-checkbox-size);left:calc(0px - var(--f7-checkbox-border-width));letter-spacing:normal;line-height:1;line-height:var(--f7-checkbox-size);opacity:0;position:relative;text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:calc(0px - var(--f7-checkbox-border-width));transition-property:opacity;white-space:nowrap;width:100%;width:var(--f7-checkbox-size)}.checkbox i.color-white,.color-white .checkbox i,.color-white .icon-checkbox,.icon-checkbox.color-white{--f7-theme-color:#fff;--f7-checkbox-icon-color:#000}.checkbox i.color-black,.color-black .checkbox i,.color-black .icon-checkbox,.icon-checkbox.color-black{--f7-theme-color:#000;--f7-checkbox-icon-color:#fff}.checkbox input[type=checkbox]:not(:checked)~i:after,label.item-checkbox input[type=checkbox]:not(:checked)~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:not(:checked)~.icon-checkbox:after{font-size:0}.checkbox input[type=checkbox]:checked~i,.checkbox input[type=checkbox]:indeterminate~i,label.item-checkbox input[type=checkbox]:checked~* .icon-checkbox,label.item-checkbox input[type=checkbox]:checked~.icon-checkbox,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox{background-color:var(--f7-checkbox-active-color,var(--f7-theme-color));border-color:var(--f7-checkbox-active-color,var(--f7-theme-color))}.checkbox input[type=checkbox]:checked~i:after,.checkbox input[type=checkbox]:indeterminate~i:after,label.item-checkbox input[type=checkbox]:checked~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:checked~.icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{opacity:1}.checkbox input[type=checkbox]:indeterminate~i:after,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{background:var(--f7-checkbox-icon-color);border-radius:2px;content:"";font-size:0;height:2px;left:15%;margin-top:-1px;position:absolute;top:50%;transition:0ms;width:70%}.checkbox,label.item-checkbox{cursor:pointer}.checkbox input[type=checkbox],.checkbox input[type=radio],label.item-checkbox input[type=checkbox],label.item-checkbox input[type=radio]{display:none}label.item-checkbox{transition-duration:.3s}label.item-checkbox .item-content .item-media,label.item-checkbox.item-content .item-media{align-self:center}label.item-checkbox>.icon-checkbox{margin-right:calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin))}label.item-checkbox.active-state{background-color:var(--f7-list-link-pressed-bg-color)}label.item-checkbox.active-state:after{background-color:initial}.disabled label.item-checkbox,label.item-checkbox.disabled{opacity:.55;opacity:.55!important;pointer-events:none;pointer-events:none!important}label.item-checkbox.item-checkbox-icon-end .item-inner{padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right) + var(--f7-checkbox-size) + 16px)}label.item-checkbox.item-checkbox-icon-end input[type=checkbox]~.icon-checkbox{margin-right:0;position:absolute;right:calc(var(--f7-safe-area-right) + 16px)}.ios .checkbox i:after,.ios .icon-checkbox:after{content:"checkbox_ios";font-size:21px}.ios label.item-checkbox.active-state{transition-duration:0ms}.ios .checkbox input[type=checkbox]:indeterminate~i:after,.ios label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,.ios label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{height:2px;margin-top:-1px}.md .checkbox i,.md .icon-checkbox{transition-duration:.2s}.md .checkbox i:after,.md .icon-checkbox:after{content:"checkbox_md";font-size:15px;transition-duration:.2s}.md label.item-checkbox{overflow:hidden;position:relative;z-index:0}:root{--f7-radio-border-radius:50%;--f7-radio-extra-margin:0px}:root .dark,:root.dark{--f7-radio-inactive-color:rgba(255,255,255,0.3)}.ios{--f7-radio-size:22px;--f7-radio-border-width:1px;--f7-radio-inactive-color:#c7c7cc}.md{--f7-radio-size:20px;--f7-radio-border-width:2px;--f7-radio-inactive-color:#6d6d6d}.radio{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.5);display:inline-block;position:relative;vertical-align:middle;z-index:1}.icon-radio{border-radius:var(--f7-radio-border-radius);box-sizing:border-box;display:block;flex-shrink:0;height:var(--f7-radio-size);position:relative;width:var(--f7-radio-size)}.color-white .icon-radio,.color-white .radio,.icon-radio.color-white,.radio.color-white{--f7-theme-color:#fff}.color-black .icon-radio,.color-black .radio,.icon-radio.color-black,.radio.color-black{--f7-theme-color:#000}.md .icon-radio,.radio .icon-radio{border:var(--f7-radio-border-width) solid var(--f7-radio-inactive-color)}.radio,label.item-radio{cursor:pointer}.radio input[type=checkbox],.radio input[type=radio],label.item-radio input[type=checkbox],label.item-radio input[type=radio]{display:none}label.item-radio{transition-duration:.3s}label.item-radio .item-content .item-media,label.item-radio.item-content .item-media{align-self:center}label.item-radio.active-state{background-color:var(--f7-list-link-pressed-bg-color)}label.item-radio.active-state:after{background-color:initial}.disabled label.item-radio,label.item-radio.disabled{opacity:.55;opacity:.55!important;pointer-events:none;pointer-events:none!important}.ios .icon-radio:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-radio-active-color,var(--f7-theme-color));content:"radio_ios";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;height:calc(var(--f7-radio-size) - var(--f7-radio-border-width)*2);letter-spacing:normal;line-height:1;line-height:calc(var(--f7-radio-size) - var(--f7-radio-border-width)*2 + 1px);opacity:0;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%;width:calc(var(--f7-radio-size) - var(--f7-radio-border-width)*2)}.ios .radio input[type=radio]:checked~.icon-radio:after,.ios label.item-radio input[type=radio]:checked~* .icon-radio:after,.ios label.item-radio input[type=radio]:checked~.icon-radio:after{opacity:1}.ios .radio input[type=radio]:checked~.icon-radio{border-color:var(--f7-radio-active-color,var(--f7-theme-color))}.ios label.item-radio:not(.item-radio-icon-start) input[type=radio]~.icon-radio{margin-top:-11px;position:absolute;right:calc(var(--f7-safe-area-right) + 10px);top:50%}.ios label.item-radio:not(.item-radio-icon-start) .item-inner{padding-right:calc(var(--f7-safe-area-right) + 36px)}.ios label.item-radio-icon-start>.icon-radio{margin-right:calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin))}.ios label.item-radio.active-state{transition-duration:0ms}.md .icon-radio,.md .icon-radio:after{transition-duration:.2s}.md .icon-radio:after{background-color:var(--f7-radio-active-color,var(--f7-theme-color));border-radius:50%;content:"";height:10px;left:50%;margin-left:-5px;margin-top:-5px;position:absolute;top:50%;transform:scale(0);width:10px}.md .radio input[type=radio]:checked~.icon-radio,.md label.item-radio input[type=radio]:checked~* .icon-radio,.md label.item-radio input[type=radio]:checked~.icon-radio{border-color:var(--f7-radio-active-color,var(--f7-theme-color))}.md .radio input[type=radio]:checked~.icon-radio:after,.md label.item-radio input[type=radio]:checked~* .icon-radio:after,.md label.item-radio input[type=radio]:checked~.icon-radio:after{background-color:var(--f7-radio-active-color,var(--f7-theme-color));transform:scale(1)}.md label.item-radio{overflow:hidden;position:relative;z-index:0}.md label.item-radio:not(.item-radio-icon-end)>.icon-radio{margin-right:calc(var(--f7-list-item-media-margin) + var(--f7-radio-extra-margin))}.md label.item-radio-icon-end input[type=radio]~.icon-radio{margin-top:-10px;position:absolute;right:calc(var(--f7-safe-area-right) + 16px);top:50%}.md label.item-radio-icon-end .item-inner{padding-right:calc(var(--f7-safe-area-right) + 52px)}.ios{--f7-toggle-width:52px;--f7-toggle-height:32px;--f7-toggle-inactive-knob-bg-color:#fff;--f7-toggle-active-knob-bg-color:#fff;--f7-toggle-inactive-border-color:#e5e5e5;--f7-toggle-inactive-bg-color:#fff}.ios .dark,.ios.dark{--f7-toggle-inactive-border-color:#555;--f7-toggle-inactive-bg-color:#555}.md{--f7-toggle-width:52px;--f7-toggle-height:32px}.md,.md .dark,.md [class*=color-]{--f7-toggle-inactive-bg-color:var(--f7-md-surface-variant);--f7-toggle-active-bg-color:var(--f7-theme-color);--f7-toggle-inactive-knob-bg-color:var(--f7-md-outline);--f7-toggle-active-knob-bg-color:var(--f7-md-on-primary);--f7-toggle-inactive-border-color:var(--f7-md-outline);--f7-toggle-active-border-color:var(--f7-theme-color)}.toggle,.toggle-icon{border-radius:var(--f7-toggle-height);height:var(--f7-toggle-height);width:var(--f7-toggle-width)}.toggle{align-self:center;box-sizing:border-box;display:inline-block;position:relative;-webkit-user-select:none;user-select:none;vertical-align:middle}.toggle input[type=checkbox]{display:none}.toggle input[disabled]~.toggle-icon{pointer-events:none}.toggle-icon{-webkit-appearance:none;appearance:none;border:none;box-sizing:border-box;cursor:pointer;display:block;margin:0;padding:0;position:relative;transition:.3s;z-index:0}.toggle-icon:after,.toggle-icon:before{content:""}.toggle-icon:after{position:absolute;transform:translateX(0);transition-duration:.3s;z-index:2}.ios .toggle{background:var(--f7-toggle-inactive-border-color)}.ios .toggle input[type=checkbox]:checked+.toggle-icon{background:var(--f7-toggle-active-color,var(--f7-theme-color))}.ios .toggle input[type=checkbox]:checked+.toggle-icon:before{background:var(--f7-toggle-active-bg-color,var(--f7-theme-color));transform:scale(0)}.ios .toggle input[type=checkbox]:checked+.toggle-icon:after{background:var(--f7-toggle-active-knob-bg-color);transform:translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height)))}.ios .toggle-icon{background:var(--f7-toggle-border-color)}.ios .toggle-icon:before{background:var(--f7-toggle-inactive-bg-color);border-radius:var(--f7-toggle-height);box-sizing:border-box;position:absolute;transform:scale(1);transition-duration:.3s;width:calc(var(--f7-toggle-width) - 4px);z-index:1}.ios .toggle-icon:after,.ios .toggle-icon:before{height:calc(var(--f7-toggle-height) - 4px);left:2px;top:2px}.ios .toggle-icon:after{background:var(--f7-toggle-inactive-knob-bg-color);border-radius:calc(var(--f7-toggle-height) - 4px);box-shadow:0 2px 4px rgba(0,0,0,.3);width:calc(var(--f7-toggle-height) - 4px)}.ios .toggle-active-state input[type=checkbox]:not(:checked)+.toggle-icon:before{transform:scale(0)}.ios .toggle-active-state input[type=checkbox]+.toggle-icon:after{width:calc(var(--f7-toggle-height) + 4px)}.ios .toggle-active-state input[type=checkbox]:checked+.toggle-icon:after{transform:translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height) - 8px))}.md .toggle input[type=checkbox]:checked+.toggle-icon{background:var(--f7-toggle-active-bg-color);border-color:var(--f7-toggle-active-border-color)}.md .toggle input[type=checkbox]:checked+.toggle-icon:after{background:var(--f7-toggle-active-knob-bg-color);transform:translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height))) scale(1)}.md .toggle.active-state input[type=checkbox]:checked+.toggle-icon:after{transform:translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height))) scale(1.1)}.md .toggle-icon{background:var(--f7-toggle-inactive-bg-color);border:2px solid var(--f7-toggle-inactive-border-color)}.md .toggle-icon:after{background:var(--f7-toggle-inactive-knob-bg-color);border-radius:var(--f7-toggle-height);height:calc(var(--f7-toggle-height) - 8px);left:2px;top:2px;transform:scale(.666);width:calc(var(--f7-toggle-height) - 8px)}.md .toggle-icon.active-state:after{transform:scale(1.1)}:root{--f7-range-scale-step-height:5px;--f7-range-scale-substep-width:1px;--f7-range-scale-substep-height:4px;--f7-range-bar-bg-color:rgba(0,0,0,0.2)}:root .dark,:root.dark{--f7-range-bar-bg-color:rgba(255,255,255,0.2)}.ios{--f7-range-size:28px;--f7-range-bar-size:4px;--f7-range-bar-border-radius:2px;--f7-range-knob-size:28px;--f7-range-knob-color:#fff;--f7-range-knob-box-shadow:0 2px 4px rgba(0,0,0,0.3);--f7-range-label-size:24px;--f7-range-label-text-color:#000;--f7-range-label-bg-color:#fff;--f7-range-label-font-size:12px;--f7-range-label-font-weight:500;--f7-range-label-border-radius:5px;--f7-range-label-padding:0px 2px;--f7-range-scale-text-color:#666;--f7-range-scale-step-width:1px;--f7-range-scale-font-size:12px;--f7-range-scale-font-weight:400;--f7-range-scale-label-offset:4px}.md{--f7-range-size:20px;--f7-range-bar-size:2px;--f7-range-bar-border-radius:0px;--f7-range-knob-size:12px;--f7-range-knob-box-shadow:none;--f7-range-label-size:26px;--f7-range-label-font-weight:normal;--f7-range-label-font-size:10px;--f7-range-label-border-radius:50%;--f7-range-label-padding:0px;--f7-range-scale-step-width:2px;--f7-range-scale-font-size:12px;--f7-range-scale-font-weight:400;--f7-range-scale-label-offset:4px}.md,.md .dark,.md [class*=color-]{--f7-range-knob-color:var(--f7-theme-color);--f7-range-label-text-color:var(--f7-md-on-primary);--f7-range-label-bg-color:var(--f7-theme-color);--f7-range-scale-text-color:var(--f7-md-on-surface-variant)}.range-slider{align-self:center;cursor:pointer;display:block;position:relative;-webkit-user-select:none;user-select:none}.range-slider input[type=range]{display:none}.range-slider.range-slider-horizontal{height:var(--f7-range-size);touch-action:pan-y;width:100%}.range-slider.range-slider-vertical{height:100%;touch-action:pan-x;width:var(--f7-range-size)}.range-bar{background:var(--f7-range-bar-bg-color);border-radius:var(--f7-range-bar-border-radius);overflow:hidden;position:absolute}.range-slider-vertical .range-bar{height:100%;left:50%;margin-left:calc(var(--f7-range-bar-size)*-1/2);top:0;width:var(--f7-range-bar-size)}.range-slider-horizontal .range-bar{height:var(--f7-range-bar-size);left:0;margin-top:calc(var(--f7-range-bar-size)*-1/2);top:50%;width:100%}.range-bar-active{background:var(--f7-range-bar-active-bg-color,var(--f7-theme-color));position:absolute}.range-slider-horizontal .range-bar-active{height:100%;left:0;top:0}.range-slider-vertical .range-bar-active{bottom:0;left:0;width:100%}.range-slider-vertical-reversed .range-bar-active{bottom:auto;top:0}.range-knob-wrap{height:var(--f7-range-knob-size);position:absolute;width:var(--f7-range-knob-size);z-index:20}.range-slider-horizontal .range-knob-wrap{left:0;margin-left:calc(var(--f7-range-knob-size)*-1/2);margin-top:calc(var(--f7-range-knob-size)*-1/2);top:50%}.range-slider-vertical .range-knob-wrap{bottom:0;left:50%;margin-bottom:calc(var(--f7-range-knob-size)*-1/2);margin-left:calc(var(--f7-range-knob-size)*-1/2)}.range-slider-vertical-reversed .range-knob-wrap{bottom:auto;margin-bottom:0;margin-top:calc(var(--f7-range-knob-size)*-1/2);top:0}.range-knob{background:var(--f7-range-knob-color,var(--f7-range-knob-bg-color,var(--f7-theme-color)));border-radius:50%;box-shadow:var(--f7-range-knob-box-shadow);box-sizing:border-box;height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}.range-knob:after{content:"";height:44px;left:50%;margin-left:-22px;margin-top:-22px;position:absolute;top:50%;width:44px}.range-knob-label{background-color:var(--f7-range-label-bg-color,var(--f7-theme-color));border-radius:var(--f7-range-label-border-radius);bottom:100%;box-sizing:border-box;color:var(--f7-range-label-text-color);font-size:var(--f7-range-label-font-size);font-weight:var(--f7-range-label-font-weight);height:var(--f7-range-label-size);left:50%;line-height:var(--f7-range-label-size);min-width:var(--f7-range-label-size);padding:var(--f7-range-label-padding);position:absolute;text-align:center;transform:translateY(100%) scale(0);transition-duration:.12s;transition-property:transform}.range-knob-active-state .range-knob-label{transform:translateY(0) scale(1)}.range-scale{position:absolute}.range-slider-horizontal .range-scale{left:0;margin-top:calc(var(--f7-range-bar-size)/2);top:50%;width:100%}.range-slider-vertical .range-scale{height:100%;margin-right:calc(var(--f7-range-bar-size)/2);right:50%;top:0}.range-scale-step{box-sizing:border-box;color:var(--f7-range-scale-text-color,var(--f7-range-bar-bg-color));display:flex;font-size:var(--f7-range-scale-font-size);font-weight:var(--f7-range-scale-font-weight);line-height:1;position:absolute}.range-scale-step:before{background:var(--f7-range-scale-step-bg-color,var(--f7-range-bar-bg-color));content:"";position:absolute}.range-slider-horizontal .range-scale-step{align-items:flex-start;height:var(--f7-range-scale-step-height);justify-content:center;margin-left:calc(var(--f7-range-scale-step-width)*-1/2);padding-top:calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));top:0;width:var(--f7-range-scale-step-width)}.range-slider-horizontal .range-scale-step:before{height:var(--f7-range-scale-step-height);left:0;top:0;width:100%}.range-slider-horizontal .range-scale-step:first-child{margin-left:0}.range-slider-horizontal .range-scale-step:last-child{margin-left:calc(var(--f7-range-scale-step-width)*-1)}.range-slider-vertical .range-scale-step{align-items:center;height:var(--f7-range-scale-step-width);justify-content:flex-end;line-height:1;margin-bottom:calc(var(--f7-range-scale-step-width)*-1/2);padding-right:calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));right:0;width:var(--f7-range-scale-step-height)}.range-slider-vertical .range-scale-step:first-child{margin-bottom:0}.range-slider-vertical .range-scale-step:last-child{margin-bottom:calc(var(--f7-range-scale-step-width)*-1)}.range-slider-vertical .range-scale-step:before{height:100%;right:0;top:0;width:var(--f7-range-scale-step-height)}.range-scale-substep{--f7-range-scale-step-bg-color:var(--f7-range-scale-substep-bg-color,var(--f7-range-bar-bg-color));--f7-range-scale-step-width:var(--f7-range-scale-substep-width);--f7-range-scale-step-height:var(--f7-range-scale-substep-height)}.ios .range-knob-label{margin-bottom:6px;transform:translateX(-50%) translateY(100%) scale(0)}.ios .range-knob-active-state .range-knob-label{transform:translateX(-50%) translateY(0) scale(1)}.md .range-knob{transition-duration:.2s;transition-property:transform,background-color}.md .range-knob-active-state .range-knob{transform:scale(1.5)}.md .range-slider-min:not(.range-slider-dual) .range-knob{background:#fff!important;border:2px solid var(--f7-range-bar-bg-color)}.md .range-knob-label{margin-bottom:8px}.md .range-knob-label,.md .range-knob-label:before{margin-left:calc(var(--f7-range-label-size)*-1/2);width:var(--f7-range-label-size)}.md .range-knob-label:before{background:var(--f7-range-label-bg-color,var(--f7-theme-color));border-radius:50% 50% 50% 0;content:"";height:var(--f7-range-label-size);left:50%;position:absolute;top:0;transform:rotate(-45deg);z-index:-1}.md .range-knob-active-state .range-knob-label{transform:translateY(0) scale(1)}.md .range-slider-label .range-knob-active-state .range-knob{transform:scale(0)}:root{--f7-stepper-raised-box-shadow:0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);--f7-stepper-value-font-weight:500}.ios{--f7-stepper-height:28px;--f7-stepper-border-radius:5px;--f7-stepper-fill-button-text-color:#fff;--f7-stepper-large-height:44px;--f7-stepper-small-height:26px;--f7-stepper-value-font-size:17px;--f7-stepper-border-width:2px;--f7-stepper-border-color:var(--f7-theme-color);--f7-stepper-small-border-width:2px}.md{--f7-stepper-height:40px;--f7-stepper-border-radius:8px;--f7-stepper-large-height:48px;--f7-stepper-small-height:32px;--f7-stepper-value-font-size:14px;--f7-stepper-border-width:1px;--f7-stepper-small-border-width:1px;--f7-stepper-button-pressed-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-stepper-fill-button-text-color:var(--f7-md-on-primary);--f7-stepper-fill-button-pressed-bg-color:var(--f7-theme-color);--f7-stepper-border-color:var(--f7-md-outline)}.stepper{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25);align-items:stretch;border-radius:var(--f7-stepper-border-radius);display:inline-flex;height:var(--f7-stepper-height)}.stepper-button,.stepper-button-minus,.stepper-button-plus{align-content:center;align-items:center;background-color:var(--f7-stepper-button-bg-color);border:var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);border-radius:var(--f7-stepper-border-radius);box-sizing:border-box;color:var(--f7-stepper-button-text-color,var(--f7-theme-color));cursor:pointer;display:flex;flex-shrink:0;justify-content:center;line-height:calc(var(--f7-stepper-height) - var(--f7-stepper-border-width, 0px));position:relative;text-align:center;width:40px}.stepper-button-minus.active-state,.stepper-button-plus.active-state,.stepper-button.active-state{background-color:var(--f7-stepper-button-pressed-bg-color,rgba(var(--f7-theme-color-rgb),.15));color:var(--f7-stepper-button-pressed-text-color,var(--f7-stepper-button-text-color,var(--f7-theme-color)))}.stepper-button-minus:first-child,.stepper-button-plus:first-child,.stepper-button:first-child{border-radius:var(--f7-stepper-border-radius) 0 0 var(--f7-stepper-border-radius)}.stepper-button-minus:last-child,.stepper-button-plus:last-child,.stepper-button:last-child{border-radius:0 var(--f7-stepper-border-radius) var(--f7-stepper-border-radius) 0}.stepper-button .icon,.stepper-button-minus .icon,.stepper-button-plus .icon{pointer-events:none}.stepper-button+.stepper-button,.stepper-button+.stepper-button-minus,.stepper-button+.stepper-button-plus,.stepper-button-minus+.stepper-button,.stepper-button-minus+.stepper-button-minus,.stepper-button-minus+.stepper-button-plus,.stepper-button-plus+.stepper-button,.stepper-button-plus+.stepper-button-minus,.stepper-button-plus+.stepper-button-plus{border-left:none}.stepper-button-minus,.stepper-button-plus{-webkit-user-select:none;user-select:none}.stepper-button-minus:after,.stepper-button-minus:before,.stepper-button-plus:after,.stepper-button-plus:before{background-color:var(--f7-stepper-button-text-color,var(--f7-theme-color));border-radius:2px;content:"";left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.stepper-button-minus:after,.stepper-button-plus:after{height:2px;width:15px}.stepper-button-plus:before{height:15px;width:2px}.stepper-value{align-content:center;align-items:center;display:flex;justify-content:center}.stepper-input-wrap,.stepper-value{border-bottom:var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);border-top:var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);flex-shrink:1;text-align:center}.stepper .stepper-input-wrap input,.stepper-value{color:var(--f7-stepper-value-text-color,var(--f7-theme-color));font-size:var(--f7-stepper-value-font-size);font-weight:var(--f7-stepper-value-font-weight);text-align:center;width:45px}.stepper .stepper-input-wrap input{height:100%}.ios .stepper-round-ios,.md .stepper-round-md,.stepper-round{--f7-stepper-border-radius:var(--f7-stepper-height)}.ios .stepper-fill-ios,.md .stepper-fill-md,.stepper-fill{--f7-stepper-border-color:var(--f7-stepper-fill-button-bg-color,var(--f7-theme-color));--f7-stepper-button-bg-color:var(--f7-stepper-fill-button-bg-color,var(--f7-theme-color));--f7-stepper-button-text-color:var(--f7-stepper-fill-button-text-color);--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.ios .stepper-fill-ios .stepper-button+.stepper-button,.ios .stepper-fill-ios .stepper-button-minus+.stepper-button-plus,.ios .stepper-raised-ios .stepper-button+.stepper-button,.ios .stepper-raised-ios .stepper-button-minus+.stepper-button-plus,.md .stepper-fill-md .stepper-button+.stepper-button,.md .stepper-fill-md .stepper-button-minus+.stepper-button-plus,.md .stepper-raised-md .stepper-button+.stepper-button,.md .stepper-raised-md .stepper-button-minus+.stepper-button-plus,.stepper-fill .stepper-button+.stepper-button,.stepper-fill .stepper-button-minus+.stepper-button-plus,.stepper-raised .stepper-button+.stepper-button,.stepper-raised .stepper-button-minus+.stepper-button-plus{border-left:1px solid rgba(0,0,0,.1)}.ios .stepper-fill-ios .stepper-button+.stepper-button.active-state,.ios .stepper-fill-ios .stepper-button-minus+.stepper-button-plus.active-state,.md .stepper-fill-md .stepper-button+.stepper-button.active-state,.md .stepper-fill-md .stepper-button-minus+.stepper-button-plus.active-state,.stepper-fill .stepper-button+.stepper-button.active-state,.stepper-fill .stepper-button-minus+.stepper-button-plus.active-state{border-left-color:var(--f7-stepper-button-pressed-bg-color)}.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-input-wrap,.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-value,.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-input-wrap,.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-value,.stepper-raised:not(.stepper-fill) .stepper-input-wrap,.stepper-raised:not(.stepper-fill) .stepper-value{border-left:1px solid rgba(0,0,0,.1);border-right:1px solid rgba(0,0,0,.1)}.ios .stepper-large-ios,.md .stepper-large-md,.stepper-large{--f7-stepper-height:var(--f7-stepper-large-height)}.ios .stepper-small-ios,.md .stepper-small-md,.stepper-small{--f7-stepper-border-width:var(--f7-stepper-small-border-width);--f7-stepper-height:var(--f7-stepper-small-height)}.ios .stepper-fill.stepper-small,.ios .stepper-fill.stepper-small-ios{--f7-stepper-button-pressed-bg-color:transparent;--f7-stepper-button-pressed-text-color:var(--f7-theme-color)}.ios .stepper-raised-ios,.md .stepper-raised-md,.stepper-raised{--f7-stepper-border-width:0;box-shadow:var(--f7-stepper-raised-box-shadow)}.ios .stepper-button .f7-icons,.ios .stepper-button-minus .f7-icons,.ios .stepper-button-plus .f7-icons{font-size:22px}.ios .stepper-fill,.ios .stepper-fill-ios{--f7-stepper-button-pressed-bg-color:var(--f7-stepper-fill-button-pressed-bg-color,var(--f7-theme-color-tint))}.ios .stepper-small-ios.stepper-raised,.ios .stepper-small-ios.stepper-raised-ios,.ios .stepper-small.stepper-raised,.ios .stepper-small.stepper-raised-ios{--f7-stepper-border-width:0px}.ios .stepper-small .stepper-button,.ios .stepper-small .stepper-button-minus,.ios .stepper-small .stepper-button-plus,.ios .stepper-small-ios .stepper-button,.ios .stepper-small-ios .stepper-button-minus,.ios .stepper-small-ios .stepper-button-plus{transition-duration:.2s}.ios .stepper-small .stepper-button-minus.active-state:after,.ios .stepper-small .stepper-button-minus.active-state:before,.ios .stepper-small .stepper-button-plus.active-state:after,.ios .stepper-small .stepper-button-plus.active-state:before,.ios .stepper-small .stepper-button.active-state:after,.ios .stepper-small .stepper-button.active-state:before,.ios .stepper-small-ios .stepper-button-minus.active-state:after,.ios .stepper-small-ios .stepper-button-minus.active-state:before,.ios .stepper-small-ios .stepper-button-plus.active-state:after,.ios .stepper-small-ios .stepper-button-plus.active-state:before,.ios .stepper-small-ios .stepper-button.active-state:after,.ios .stepper-small-ios .stepper-button.active-state:before{background-color:var(--f7-theme-color);transition-duration:.2s}.md .stepper-button,.md .stepper-button-minus,.md .stepper-button-plus{overflow:hidden;transform:translateZ(0);transition-duration:.3s}.md .stepper-fill,.md .stepper-fill-md{--f7-stepper-button-pressed-bg-color:var(--f7-stepper-fill-button-bg-color,var(--f7-theme-color))}.smart-select select{display:none}.smart-select .item-after{display:block;max-width:70%;overflow:hidden;position:relative;text-overflow:ellipsis}.smart-select-sheet .list ul,.smart-select-sheet .page,.smart-select-sheet .sheet-modal-inner{background:var(--f7-smart-select-sheet-bg,var(--f7-list-bg-color))}.smart-select-sheet .toolbar:after{background-color:var(--f7-smart-select-sheet-toolbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.smart-select-sheet .list{margin:0}.smart-select-sheet .list ul:after,.smart-select-sheet .list ul:before{display:none!important}.smart-select-popover .popover-inner{max-height:40vh}:root{--f7-grid-gap:16px}.grid{display:grid}.grid.grid-gap{gap:var(--f7-grid-gap)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}@media (min-width:480px){.xsmall-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xsmall-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.xsmall-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xsmall-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.xsmall-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xsmall-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.xsmall-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xsmall-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.xsmall-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xsmall-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.xsmall-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xsmall-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.xsmall-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xsmall-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.xsmall-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xsmall-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.xsmall-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xsmall-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.xsmall-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xsmall-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.xsmall-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xsmall-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.xsmall-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xsmall-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.xsmall-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.xsmall-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.xsmall-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.xsmall-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.xsmall-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.xsmall-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.xsmall-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.xsmall-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.xsmall-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.xsmall-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.xsmall-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.xsmall-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.xsmall-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.xsmall-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.xsmall-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.xsmall-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:568px){.small-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.small-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.small-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.small-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.small-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.small-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.small-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.small-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.small-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.small-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.small-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.small-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.small-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.small-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.small-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.small-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.small-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.small-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.small-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.small-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.small-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.small-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.small-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.small-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.small-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.small-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.small-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.small-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.small-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.small-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.small-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.small-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.small-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.small-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.small-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.small-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.small-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.small-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.small-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.small-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:768px){.medium-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.medium-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.medium-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.medium-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.medium-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.medium-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.medium-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.medium-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.medium-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.medium-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.medium-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.medium-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.medium-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.medium-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.medium-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.medium-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.medium-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.medium-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.medium-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.medium-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.medium-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.medium-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.medium-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.medium-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.medium-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.medium-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.medium-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.medium-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.medium-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.medium-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.medium-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.medium-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.medium-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.medium-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.medium-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.medium-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.medium-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.medium-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.medium-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.medium-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:1024px){.large-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.large-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.large-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.large-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.large-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.large-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.large-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.large-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.large-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.large-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.large-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.large-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.large-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.large-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.large-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.large-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.large-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.large-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.large-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.large-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.large-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.large-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.large-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.large-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.large-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.large-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.large-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.large-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.large-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.large-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.large-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.large-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.large-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.large-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.large-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.large-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.large-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.large-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.large-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.large-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:1200px){.xlarge-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xlarge-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.xlarge-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xlarge-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.xlarge-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xlarge-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.xlarge-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xlarge-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.xlarge-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xlarge-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.xlarge-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xlarge-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.xlarge-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xlarge-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.xlarge-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xlarge-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.xlarge-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xlarge-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.xlarge-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xlarge-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.xlarge-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xlarge-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.xlarge-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xlarge-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.xlarge-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.xlarge-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.xlarge-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.xlarge-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.xlarge-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.xlarge-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.xlarge-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.xlarge-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.xlarge-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.xlarge-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.xlarge-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.xlarge-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.xlarge-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.xlarge-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.xlarge-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.xlarge-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}:root{--f7-calendar-height:340px;--f7-calendar-sheet-landscape-height:220px;--f7-calendar-popover-width:320px;--f7-calendar-popover-height:320px;--f7-calendar-modal-height:420px;--f7-calendar-modal-max-width:380px;--f7-calendar-week-header-bg-color:transparent;--f7-calendar-footer-padding:0 8px;--f7-calendar-week-header-font-size:11px;--f7-calendar-disabled-text-color:#d4d4d4;--f7-calendar-event-dot-size:4px;--f7-calendar-time-selector-height:28px;--f7-calendar-picker-pressed-bg-color:rgba(0,0,0,0.1);--f7-calendar-picker-hover-bg-color:rgba(0,0,0,0.03);--f7-calendar-time-selector-bg-color:rgba(0,0,0,0.05)}:root .dark,:root.dark{--f7-calendar-picker-pressed-bg-color:rgba(255,255,255,0.08);--f7-calendar-picker-hover-bg-color:rgba(255,255,255,0.03);--f7-calendar-time-selector-bg-color:rgba(255,255,255,0.1)}.ios{--f7-calendar-selected-text-color:#fff;--f7-calendar-header-height:44px;--f7-calendar-header-font-size:17px;--f7-calendar-header-font-weight:600;--f7-calendar-header-padding:0 8px;--f7-calendar-footer-height:44px;--f7-calendar-footer-font-size:17px;--f7-calendar-week-header-height:18px;--f7-calendar-day-font-size:15px;--f7-calendar-day-size:30px;--f7-calendar-picker-font-size:17px;--f7-calendar-time-selector-font-size:17px;--f7-calendar-modal-border-radius:4px;--f7-calendar-modal-box-shadow:0px 11px 15px -7px rgba(0,0,0,0.2),0px 24px 38px 3px rgba(0,0,0,0.14),0px 9px 46px 8px rgba(0,0,0,0.12);--f7-calendar-prev-next-text-color:#c8c8c8;--f7-calendar-sheet-border-color:#929499;--f7-calendar-sheet-bg-color:#fff;--f7-calendar-week-header-text-color:#5e5e5e;--f7-calendar-modal-bg-color:#fff;--f7-calendar-day-text-color:#000;--f7-calendar-today-text-color:#000;--f7-calendar-today-bg-color:#e3e3e3}.ios .dark,.ios.dark{--f7-calendar-prev-next-text-color:#5e5e5e;--f7-calendar-sheet-border-color:var(--f7-bars-border-color);--f7-calendar-sheet-bg-color:#121212;--f7-calendar-week-header-text-color:#aaa;--f7-calendar-modal-bg-color:#121212;--f7-calendar-day-text-color:#fff;--f7-calendar-today-text-color:#fff;--f7-calendar-today-bg-color:#333}.md{--f7-calendar-sheet-border-color:transparent;--f7-calendar-header-height:64px;--f7-calendar-header-font-size:24px;--f7-calendar-header-font-weight:400;--f7-calendar-header-padding:0 24px;--f7-calendar-footer-height:56px;--f7-calendar-footer-font-size:14px;--f7-calendar-week-header-height:24px;--f7-calendar-day-font-size:14px;--f7-calendar-today-bg-color:none;--f7-calendar-day-size:32px;--f7-calendar-picker-font-size:14px;--f7-calendar-time-selector-font-size:14px;--f7-calendar-modal-border-radius:28px;--f7-calendar-modal-box-shadow:none}.md,.md .dark,.md [class*=color-]{--f7-calendar-sheet-bg-color:var(--f7-md-surface-1);--f7-calendar-selected-text-color:var(--f7-md-on-primary);--f7-calendar-week-header-text-color:var(--f7-md-on-surface-variant);--f7-calendar-day-text-color:var(--f7-md-on-surface);--f7-calendar-prev-next-text-color:rgba(var(--f7-md-on-surface-variant-rgb),0.55);--f7-calendar-today-text-color:var(--f7-theme-color);--f7-calendar-modal-bg-color:var(--f7-md-surface-1)}.calendar{flex-direction:column;height:var(--f7-calendar-height);overflow:hidden;width:100%}.calendar,.calendar.modal-in{display:flex}@media (orientation:landscape) and (max-height:415px){.calendar.calendar-sheet{height:var(--f7-calendar-sheet-landscape-height)}.calendar.calendar-modal{height:calc(100vh - var(--f7-navbar-height))}}.calendar.calendar-inline,.calendar.calendar-popover .calendar{position:relative}.calendar-sheet{--f7-sheet-border-color:var(--f7-calendar-sheet-border-color);background:var(--f7-calendar-sheet-bg-color);height:calc(var(--f7-calendar-height) + var(--f7-safe-area-bottom));padding-bottom:var(--f7-safe-area-bottom)}.calendar-sheet:before{z-index:600}.calendar-modal .toolbar:before,.calendar-popover .toolbar:before,.calendar-sheet .toolbar:before{display:none}.calendar-popover{width:var(--f7-calendar-popover-width)}.calendar-popover .calendar-header,.calendar-popover .toolbar-top{border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;overflow:hidden}.calendar-popover .calendar-header+.toolbar-top{border-radius:0}.calendar-popover .calendar-footer,.calendar-popover .toolbar-bottom{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.calendar-popover .calendar{height:var(--f7-calendar-popover-height);position:relative;z-index:1}.calendar-popover .calendar-month-picker,.calendar-popover .calendar-time-picker,.calendar-popover .calendar-year-picker{border-radius:var(--f7-popover-border-radius)}.calendar-popover .calendar-month-picker .picker,.calendar-popover .calendar-time-picker .picker,.calendar-popover .calendar-year-picker .picker{display:flex;flex-direction:column;height:100%}.calendar-header{background-color:var(--f7-calendar-header-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-calendar-header-text-color,var(--f7-bars-text-color));flex-shrink:0;font-size:var(--f7-calendar-header-font-size);font-weight:var(--f7-calendar-header-font-weight);height:var(--f7-calendar-header-height);line-height:var(--f7-calendar-header-height);overflow:hidden;padding:var(--f7-calendar-header-padding);position:relative;text-overflow:ellipsis;white-space:nowrap;width:100%}.calendar-header a{color:var(--f7-calendar-header-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer{align-items:center;background-color:var(--f7-calendar-footer-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-calendar-footer-text-color,var(--f7-bars-text-color));display:flex;flex-shrink:0;font-size:var(--f7-calendar-header-font-size);height:var(--f7-calendar-footer-height);justify-content:flex-end;padding:var(--f7-calendar-footer-padding);position:relative;width:100%}.calendar-footer a{color:var(--f7-calendar-footer-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer:before{background-color:var(--f7-calendar-footer-border-color,var(--f7-bars-border-color));bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.calendar-modal{background:var(--f7-calendar-modal-bg-color);border-radius:var(--f7-calendar-modal-border-radius);box-shadow:var(--f7-calendar-modal-box-shadow);display:flex;height:var(--f7-calendar-modal-height);left:50%;max-width:var(--f7-calendar-modal-max-width);min-width:300px;overflow:hidden;position:absolute;top:50%;transform:translate3d(-50%,100vh,0);transition-property:transform;transition-timing-function:cubic-bezier(0,1,.2,1);width:90%;z-index:13500}.calendar-modal.modal-in,.calendar-modal.modal-out{transition-duration:.4s}.calendar-modal.modal-in{transform:translate3d(-50%,-50%,0)}.calendar-modal.modal-out{transform:translate3d(-50%,100vh,0)}.calendar-week-header{background-color:var(--f7-calendar-week-header-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-calendar-week-header-text-color,var(--f7-bars-text-color));display:flex;font-size:var(--f7-calendar-week-header-font-size);height:var(--f7-calendar-week-header-height);padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right);position:relative}.calendar-week-header .calendar-week-day{flex-shrink:1;line-height:var(--f7-calendar-week-header-height);text-align:center;width:14.28571%}.calendar-months{flex-shrink:10;height:100%;overflow:hidden;position:relative;width:100%}.calendar-months-wrapper{height:100%;position:relative;transition:.3s;width:100%}.calendar-month{display:flex;flex-direction:column;height:100%;left:0;position:absolute;top:0;width:100%}.calendar-row{box-sizing:border-box;display:flex;flex-shrink:1;height:16.66666667%;padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right);position:relative;width:100%}.calendar-modal .calendar-months:first-child .calendar-row:first-child:before,.calendar-popover .calendar-months:first-child .calendar-row:first-child:before{display:none!important}.calendar-day{align-items:center;box-sizing:border-box;color:var(--f7-calendar-day-text-color);cursor:pointer;display:flex;flex-shrink:1;font-size:var(--f7-calendar-day-font-size);height:100%;justify-content:center;text-align:center;width:14.28571429%;z-index:20}.calendar-day-today .calendar-day-number{background-color:var(--f7-calendar-today-bg-color);color:var(--f7-calendar-today-text-color,var(--f7-theme-color))}.calendar-day-next,.calendar-day-prev{color:var(--f7-calendar-prev-next-text-color)}.calendar-day-disabled{color:var(--f7-calendar-disabled-text-color);cursor:auto}.calendar-day-selected .calendar-day-number{background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color));color:var(--f7-calendar-selected-text-color)}.calendar-day-number{border-radius:50%;display:inline-block;height:var(--f7-calendar-day-size);line-height:var(--f7-calendar-day-size);position:relative;width:var(--f7-calendar-day-size)}.calendar-day-events{align-items:center;display:flex;justify-content:center;left:0;margin-top:1px;position:absolute;top:100%;width:100%}.calendar-day-event{background-color:var(--f7-calendar-event-bg-color);border-radius:calc(var(--f7-calendar-event-dot-size)/2);height:var(--f7-calendar-event-dot-size);width:var(--f7-calendar-event-dot-size)}.calendar-day-event+.calendar-day-event{margin-left:2px}.calendar-day-selected-left,.calendar-day-selected-range,.calendar-day-selected-right{position:relative}.calendar-day-selected-left:before,.calendar-day-selected-range:before,.calendar-day-selected-right:before{background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color));content:"";height:var(--f7-calendar-day-size);left:0;opacity:.2;position:absolute;top:50%;transform:translateY(-50%);width:100%;z-index:-1}.calendar-day-selected-left:before,.calendar-day-selected-range:first-child:before{border-radius:var(--f7-calendar-day-size) 0 0 var(--f7-calendar-day-size);left:auto;right:0;width:calc(50% + var(--f7-calendar-day-size)/2)}.calendar-day-selected-range:last-child:before,.calendar-day-selected-right:before{border-radius:0 var(--f7-calendar-day-size) var(--f7-calendar-day-size) 0;width:calc(50% + var(--f7-calendar-day-size)/2)}.calendar-day-selected-left:last-child:before,.calendar-day-selected-right:first-child:before{display:none}.calendar-day-selected-left.calendar-day-selected-right:before{content:none;display:none}.calendar-day-selected-range .calendar-day-number{background-color:initial;color:inherit}.calendar-month-selector,.calendar-year-selector{align-items:center;display:flex;flex-shrink:10;justify-content:space-between;margin-left:auto;margin-right:auto;max-width:200px;width:50%}.calendar-month-selector .calendar-day-number,.calendar-year-selector .calendar-day-number{flex-shrink:1;overflow:hidden;position:relative;text-overflow:ellipsis}.calendar-month-selector a.icon-only,.calendar-year-selector a.icon-only{min-width:36px}.calendar-month-picker,.calendar-time-picker,.calendar-year-picker{background:transparent;height:100%;position:relative;-webkit-user-select:none;user-select:none;width:100%}.calendar-month-picker .picker-columns,.calendar-year-picker .picker-columns{text-align:center}.calendar-month-picker-item,.calendar-year-picker-item{align-items:center;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;overflow:hidden;position:relative;transition-duration:.1s}.calendar-month-picker-item span,.calendar-year-picker-item span{box-sizing:border-box;overflow:hidden;pointer-events:none;position:relative;text-overflow:ellipsis;white-space:nowrap}.calendar-month-picker-item.active-state,.calendar-year-picker-item.active-state{background:var(--f7-calendar-picker-pressed-bg-color)}.calendar-month-picker-item{padding:5px}.sheet-modal .calendar-month-picker-item{height:33.33333333%;width:25%}.sheet-modal .calendar-month-picker-item:nth-child(4n+1):before,.sheet-modal .calendar-month-picker-item:nth-child(n+9):after{display:none!important}.calendar-modal .calendar-month-picker-item,.popover .calendar-month-picker-item{height:25%;width:33.33333333%}.calendar-modal .calendar-month-picker-item:nth-child(3n+1):before,.calendar-modal .calendar-month-picker-item:nth-child(n+10):after,.popover .calendar-month-picker-item:nth-child(3n+1):before,.popover .calendar-month-picker-item:nth-child(n+10):after{display:none!important}.calendar-month-picker-item-current,.calendar-year-picker-item-current{color:var(--f7-calendar-picker-selected-text-color,var(--f7-theme-color))}.calendar-year-picker{--webkit-overflow-scrolling:touch;overflow:auto}.calendar-year-picker-item{height:34px;line-height:34px;width:100%}.calendar-time-selector{align-items:center;display:flex;flex-shrink:0;font-size:var(--f7-calendar-time-selector-font-size);justify-content:space-between;padding:12px 16px;position:relative}.calendar-time-selector a{align-items:center;background-color:var(--f7-calendar-time-selector-bg-color);border-radius:8px;box-sizing:border-box;display:flex;height:var(--f7-calendar-time-selector-height);justify-content:center;overflow:hidden;padding:0 16px;position:relative}.calendar-time-selector>span{font-weight:500}.calendar-time-selector .segmented{margin-left:8px}.calendar-month-picker-popover,.calendar-time-picker-popover,.calendar-year-picker-popover{height:240px;width:240px}.calendar-month-picker-popover .popover-inner,.calendar-time-picker-popover .popover-inner,.calendar-year-picker-popover .popover-inner{height:100%;overflow:hidden}.calendar-time-picker{--f7-picker-popover-height:100%;--f7-picker-inline-height:100%}.calendar-time-picker .toolbar{flex-shrink:0;top:0!important}.calendar-time-picker .picker{display:flex;flex-direction:column;height:100%}:root{--f7-picker-height:260px;--f7-picker-inline-height:200px;--f7-picker-popover-height:260px;--f7-picker-popover-width:280px;--f7-picker-landscape-height:200px;--f7-picker-item-height:36px}.ios{--f7-picker-column-font-size:20px;--f7-picker-item-selected-text-color:#000;--f7-picker-item-selected-bg-color:rgba(0,0,0,0.12);--f7-picker-divider-text-color:#000;--f7-picker-item-text-color:rgba(0,0,0,0.45)}.ios .dark,.ios.dark{--f7-picker-item-selected-text-color:#fff;--f7-picker-item-selected-bg-color:rgba(255,255,255,0.1);--f7-picker-divider-text-color:#fff;--f7-picker-item-text-color:rgba(255,255,255,0.55)}.md{--f7-picker-column-font-size:20px}.md,.md .dark,.md [class*=color-]{--f7-picker-item-selected-text-color:var(--f7-md-on-surface);--f7-picker-item-text-color:var(--f7-md-on-surface-variant);--f7-picker-divider-text-color:var(--f7-md-on-surface);--f7-picker-item-selected-border-color:var(--f7-md-outline)}.picker{height:var(--f7-picker-height);width:100%}.picker.picker-inline{height:var(--f7-picker-inline-height)}.popover .picker{height:var(--f7-picker-popover-height)}@media (orientation:landscape) and (max-height:415px){.picker:not(.picker-inline){height:var(--f7-picker-landscape-height)}}.picker.sheet-modal{background:var(--f7-picker-sheet-bg-color,var(--f7-sheet-bg-color))}.picker-popover{width:var(--f7-picker-popover-width)}.picker-popover .toolbar{background:none;border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0}.picker-popover .toolbar:before{display:none!important}.picker-popover .toolbar+.picker-columns{height:calc(100% - var(--f7-toolbar-height))}.picker-columns{--f7-picker-mask-bg-color:transparent;display:flex;font-size:var(--f7-picker-column-font-size);height:100%;justify-content:center;overflow:hidden;padding:0;position:relative;text-align:right}.popover .picker-columns{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.picker-columns:after,.picker-columns:before{content:"";height:20%;left:0;pointer-events:none;position:absolute;width:100%;z-index:100}.page .picker-columns{--f7-picker-mask-bg-color:var(--f7-page-bg-color)}.block-strong .picker-columns{--f7-picker-mask-bg-color:var(--f7-block-strong-bg-color)}.picker-sheet .picker-columns{--f7-picker-mask-bg-color:var(--f7-picker-sheet-bg-color,var(--f7-sheet-bg-color))}.picker-popover .picker-columns{--f7-picker-mask-bg-color:var(--f7-popover-bg-color)}.picker-columns:before{background-image:linear-gradient(to bottom,var(--f7-picker-mask-bg-color),transparent);top:0}.picker-columns:after{background-image:linear-gradient(to top,var(--f7-picker-mask-bg-color),transparent);bottom:0}.picker-column{max-height:100%;position:relative;z-index:10}.picker-column.picker-column-first.picker-column-last{width:100%}.picker-column.picker-column-left{text-align:left}.picker-column.picker-column-center{text-align:center}.picker-column.picker-column-right{text-align:right}.picker-column.picker-column-divider{align-items:center;color:var(--f7-picker-divider-text-color);display:flex}.picker-items{box-sizing:border-box;height:100%;overflow:auto;padding:var(--f7-picker-scroll-padding,0) 0;scroll-snap-type:y mandatory;scrollbar-color:transparent;scrollbar-width:none}.picker-items::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.picker-items::-webkit-scrollbar-track{background:transparent;box-shadow:none}.picker-items::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.picker-item{box-sizing:border-box;color:var(--f7-picker-item-text-color);cursor:pointer;height:var(--f7-picker-item-height);left:0;line-height:var(--f7-picker-item-height);overflow:hidden;position:relative;scroll-snap-align:center;text-overflow:ellipsis;top:0;white-space:nowrap;width:100%}.picker-item span{padding:0 10px}.picker-item.picker-item-far{pointer-events:none}.picker-item.picker-item-selected{color:var(--f7-picker-item-selected-text-color);transform:translateZ(0) rotateX(0deg)}.picker-column-free-mode .picker-item{scroll-snap-align:none}.picker-center-highlight{box-sizing:border-box;height:var(--f7-picker-item-height);margin-top:calc(var(--f7-picker-item-height)*-1/2);pointer-events:none;position:absolute;top:50%}.picker-3d .picker-columns{overflow:hidden}.picker-3d .picker-column,.picker-3d .picker-item,.picker-3d .picker-items{transform-style:preserve-3d}.picker-3d .picker-column{overflow:visible}.picker-3d .picker-item{overflow:visible;perspective:1200px}.picker-3d .picker-item>span{-webkit-backface-visibility:hidden;backface-visibility:hidden;box-sizing:border-box;display:block;max-width:100%;overflow:hidden;position:relative;text-overflow:ellipsis;transform-origin:center center -100px;transform-style:preserve-3d}.ios .picker-center-highlight{background-color:var(--f7-picker-item-selected-bg-color);border-radius:8px;left:16px;right:16px}.popover .ios .picker-center-highlight{left:8px;right:8px}.md .picker-center-highlight{border-bottom:1px solid var(--f7-md-outline);border-top:1px solid var(--f7-md-outline);left:0;right:0}.infinite-scroll-preloader{margin-left:auto;margin-right:auto;text-align:center}.infinite-scroll-preloader.preloader{display:block}.ios .infinite-scroll-preloader{margin-bottom:35px;margin-top:35px}.ios .infinite-scroll-preloader .preloader,.ios .infinite-scroll-preloader.preloader{height:27px;width:27px}.md .infinite-scroll-preloader{margin-bottom:32px;margin-top:32px}.ios{--f7-ptr-preloader-size:28px;--f7-ptr-size:44px}.md{--f7-ptr-preloader-size:22px;--f7-ptr-size:40px}.md,.md .dark,.md [class*=color-]{--f7-ptr-preloader-bg-color:var(--f7-md-surface-1);--f7-ptr-preloader-color:var(--f7-md-primary)}.ptr-preloader{height:var(--f7-ptr-size);pointer-events:none;position:relative;top:var(--f7-ptr-top,0)}.ptr-preloader .preloader{height:var(--f7-ptr-preloader-size);left:50%;margin-left:calc(var(--f7-ptr-preloader-size)*-1/2);margin-top:calc(var(--f7-ptr-preloader-size)*-1/2);position:absolute;top:50%;visibility:hidden;width:var(--f7-ptr-preloader-size)}.ptr-bottom .ptr-preloader{bottom:0;position:fixed;top:auto}.ptr-with-navbar-large-transparent .ptr-preloader,.ptr-with-navbar-transparent .ptr-preloader{top:calc(var(--f7-page-navbar-offset, 0px)*-1 + var(--f7-safe-area-top))}.ios .ptr-preloader{left:0;margin-bottom:calc(var(--f7-ptr-size)*-1);position:relative;top:0;width:100%}.ios .ptr-preloader .preloader{visibility:visible}.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner{animation:none}.ios .ptr-content.ptr-closing .ptr-preloader .preloader-inner-line,.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up):not(.ptr-pull-down) .ptr-preloader .preloader-inner-line{opacity:0!important}.ios .ptr-refreshing>*,.ios .ptr-transitioning>*{transition-duration:.2s;transition-property:transform}.ios .ptr-transitioning .ptr-preloader .preloader-inner-line{transition-duration:.2s}.ios .ptr-pull-up .ptr-preloader .preloader{animation:ios-ptr-preloader-spin 1s ease-out forwards}.ios .ptr-refreshing:not(.ptr-bottom){transform:none}.ios .ptr-refreshing:not(.ptr-bottom)>*{transform:translate3d(0,var(--f7-ptr-size),0)}.ios .ptr-refreshing:not(.ptr-bottom)>.ptr-preloader{transform:translateZ(0)}.ios .ptr-bottom .ptr-preloader{margin-bottom:0;margin-top:calc(var(--f7-ptr-size)*-1);position:relative}.ios .ptr-bottom.ptr-refreshing>*,.ios .ptr-bottom.ptr-transitioning>*{transition-duration:.3s;transition-property:transform}.ios .ptr-bottom.ptr-refreshing{transform:none}.ios .ptr-bottom.ptr-refreshing>*{transform:translate3d(0,calc(var(--f7-ptr-size)*-1),0)}.ios .ptr-bottom.ptr-refreshing>.ptr-preloader{transform:translateZ(0)}@keyframes ios-ptr-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(135deg)}}.md{--f7-ptr-top:-4px}.md .ptr-preloader{--f7-preloader-color:var(--f7-ptr-preloader-color);background:var(--f7-ptr-preloader-bg-color);border-radius:50%;box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);left:50%;margin-left:calc(var(--f7-ptr-size)*-1/2);margin-top:calc(var(--f7-ptr-size)*-1);width:var(--f7-ptr-size);z-index:100}.md .ptr-preloader .preloader circle{stroke-width:4}.md .ptr-arrow{border:3px solid var(--f7-preloader-color);border-left:3px solid transparent;border-radius:50%;box-sizing:border-box;height:22px;left:50%;margin-left:-11px;margin-top:-11px;opacity:1;position:absolute;top:50%;transform:rotate(150deg);width:22px}.md .ptr-arrow:after{border-bottom-color:inherit;border-bottom-style:solid;border-bottom-width:6px;border-left:5px solid transparent;border-right:5px solid transparent;bottom:0;content:"";height:0;left:-5px;position:absolute;transform:rotate(-40deg);width:0}.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner,.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader circle{animation:none}.md .ptr-pull-up .ptr-preloader .preloader,.md .ptr-refreshing .ptr-preloader .preloader{visibility:visible}.md .ptr-pull-up .ptr-arrow,.md .ptr-refreshing .ptr-arrow{visibility:hidden}.md .ptr-refreshing .ptr-preloader{transform:translate3d(0,66px,0)}.md .ptr-transitioning .ptr-arrow{transition:.3s}.md .ptr-pull-up .ptr-arrow{opacity:0;transform:rotate(620deg)!important;transition:.4s}.md .ptr-refreshing .ptr-preloader,.md .ptr-transitioning .ptr-preloader{transition-duration:.3s;transition-property:transform,opacity}.md .ptr-bottom .ptr-preloader{margin-bottom:calc(var(--f7-ptr-size)*-1 - 4px);margin-top:0}.md .ptr-bottom.ptr-refreshing .ptr-preloader{transform:translate3d(0,-66px,0)}.md .ptr-with-navbar-large-transparent .ptr-preloader,.md .ptr-with-navbar-transparent .ptr-preloader{opacity:0}.md .ptr-with-navbar-large-transparent.ptr-pull-down .ptr-preloader,.md .ptr-with-navbar-large-transparent.ptr-pull-up .ptr-preloader,.md .ptr-with-navbar-large-transparent.ptr-refreshing .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-pull-down .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-pull-up .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-refreshing .ptr-preloader{opacity:1}.md .ptr-with-navbar-large-transparent.ptr-closing .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-closing .ptr-preloader{opacity:0;transition-duration:.3s}:root{--f7-table-head-font-size:12px;--f7-table-body-font-size:14px;--f7-table-footer-font-size:12px;--f7-table-input-height:24px;--f7-table-input-font-size:14px;--f7-table-collapsible-cell-padding:16px;--f7-table-link-icon-only-icon-size:20px;--f7-table-head-bg-color:transparent;--f7-table-card-header-bg-color:transparent;--f7-table-card-header-height:64px;--f7-table-cell-padding-vertical:0px;--f7-table-sortable-icon-color:#000}:root .dark,:root.dark{--f7-table-sortable-icon-color:#fff;--f7-table-input-text-color:#fff}.ios{--f7-table-head-font-weight:600;--f7-table-head-cell-height:44px;--f7-table-head-icon-size:18px;--f7-table-body-cell-height:44px;--f7-table-cell-padding-horizontal:16px;--f7-table-edge-cell-padding-horizontal:16px;--f7-table-label-cell-padding-horizontal:16px;--f7-table-checkbox-cell-width:22px;--f7-table-title-font-size:17px;--f7-table-title-font-weight:600;--f7-table-footer-height:44px;--f7-table-head-text-color:rgba(0,0,0,0.45);--f7-table-cell-border-color:rgba(0,0,0,0.22);--f7-table-selected-row-bg-color:rgba(0,0,0,0.03);--f7-table-footer-text-color:rgba(0,0,0,0.45);--f7-table-input-text-color:#000}.ios .dark,.ios.dark{--f7-table-head-text-color:rgba(255,255,255,0.55);--f7-table-cell-border-color:rgba(255,255,255,0.15);--f7-table-footer-text-color:rgba(255,255,255,0.55);--f7-table-selected-row-bg-color:rgba(255,255,255,0.08)}.md{--f7-table-head-font-weight:500;--f7-table-head-cell-height:56px;--f7-table-head-icon-size:16px;--f7-table-body-cell-height:48px;--f7-table-cell-padding-horizontal:28px;--f7-table-edge-cell-padding-horizontal:24px;--f7-table-label-cell-padding-horizontal:24px;--f7-table-checkbox-cell-width:18px;--f7-table-title-font-size:20px;--f7-table-title-font-weight:400;--f7-table-footer-height:56px;--f7-table-actions-cell-link-color:rgba(0,0,0,0.54);--f7-table-actions-link-color:rgba(0,0,0,0.54);--f7-table-input-text-color:#212121}.md .dark,.md.dark{--f7-table-actions-cell-link-color:rgba(255,255,255,0.54);--f7-table-actions-link-color:rgba(255,255,255,0.54)}.md,.md .dark,.md [class*=color-]{--f7-table-head-text-color:var(--f7-md-on-surface-variant);--f7-table-footer-text-color:var(--f7-md-on-surface-variant);--f7-table-selected-row-bg-color:var(--f7-md-secondary-container);--f7-table-cell-border-color:var(--f7-md-outline)}.data-table{overflow-x:auto}.data-table table,table.data-table{border:none;border-collapse:collapse;margin:0;padding:0;text-align:left;width:100%}.data-table thead td,.data-table thead th{background-color:var(--f7-table-head-bg-color);font-size:var(--f7-table-head-font-size);font-weight:var(--f7-table-head-font-weight);height:var(--f7-table-head-cell-height);line-height:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table thead td:not(.sortable-cell-active),.data-table thead th:not(.sortable-cell-active){color:var(--f7-table-head-text-color)}.data-table thead i.f7-icons,.data-table thead i.icon,.data-table thead i.material-icons{font-size:var(--f7-table-head-icon-size);vertical-align:top}.data-table tbody{font-size:var(--f7-table-body-font-size)}.data-table tbody td,.data-table tbody th{height:var(--f7-table-body-cell-height)}.data-table tbody tr.data-table-row-selected,.device-desktop .data-table tbody tr:hover{background:var(--f7-table-selected-row-bg-color)}.data-table tbody td:before,.data-table tbody th:before{background-color:var(--f7-table-cell-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.data-table td,.data-table th{--f7-table-cell-padding-left:var(--f7-table-cell-padding-horizontal);--f7-table-cell-padding-right:var(--f7-table-cell-padding-horizontal);box-sizing:border-box;padding:var(--f7-table-cell-padding-vertical) var(--f7-table-cell-padding-right) var(--f7-table-cell-padding-vertical) var(--f7-table-cell-padding-left);position:relative}.data-table td:first-child,.data-table th:first-child{--f7-table-cell-padding-left:var(--f7-table-edge-cell-padding-horizontal)}.data-table td:last-child,.data-table th:last-child{--f7-table-cell-padding-right:var(--f7-table-edge-cell-padding-horizontal)}.data-table td.label-cell,.data-table th.label-cell{--f7-table-cell-padding-left:var(--f7-table-label-cell-padding-horizontal);--f7-table-cell-padding-right:var(--f7-table-label-cell-padding-horizontal)}.data-table td.numeric-cell,.data-table th.numeric-cell{text-align:right}.data-table td.checkbox-cell,.data-table th.checkbox-cell{overflow:visible;width:var(--f7-table-checkbox-cell-width)}.data-table td.checkbox-cell label+span,.data-table th.checkbox-cell label+span{margin-left:8px}.data-table td.checkbox-cell:first-child,.data-table th.checkbox-cell:first-child{padding-right:calc(var(--f7-table-cell-padding-right)/2)}.data-table td.checkbox-cell:first-child+td,.data-table td.checkbox-cell:first-child+th,.data-table td.checkbox-cell:last-child,.data-table th.checkbox-cell:first-child+td,.data-table th.checkbox-cell:first-child+th,.data-table th.checkbox-cell:last-child{padding-left:calc(var(--f7-table-cell-padding-left)/2)}.data-table td.actions-cell,.data-table th.actions-cell{text-align:right;white-space:nowrap}.data-table td.actions-cell a.link,.data-table th.actions-cell a.link{color:var(--f7-table-actions-cell-link-color,var(--f7-theme-color))}.card .data-table td a.icon-only,.card .data-table th a.icon-only,.card.data-table td a.icon-only,.card.data-table th a.icon-only,.data-table td a.icon-only,.data-table th a.icon-only{display:inline-block;font-size:0;min-width:0;text-align:center;vertical-align:middle}.card .data-table td a.icon-only i,.card .data-table th a.icon-only i,.card.data-table td a.icon-only i,.card.data-table th a.icon-only i,.data-table td a.icon-only i,.data-table th a.icon-only i{font-size:var(--f7-table-link-icon-only-icon-size);vertical-align:middle}.data-table .sortable-cell.input-cell .table-head-label,.data-table .sortable-cell:not(.input-cell){cursor:pointer;position:relative}.data-table .sortable-cell.numeric-cell.input-cell>.table-head-label:before,.data-table .sortable-cell.numeric-cell:not(.input-cell):before,.data-table .sortable-cell:not(.numeric-cell).input-cell>.table-head-label:after,.data-table .sortable-cell:not(.numeric-cell):not(.input-cell):after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-table-sortable-icon-color);content:"arrow_bottom_md";direction:ltr;display:block;display:inline-block;font-family:framework7-core-icons;font-size:20px;font-size:13px;font-style:normal;font-weight:400;height:100%;height:16px;letter-spacing:normal;line-height:1;line-height:16px;opacity:0;text-align:center;text-rendering:optimizeLegibility;text-transform:none;transform:rotate(0);transition-duration:.3s;vertical-align:top;white-space:nowrap;width:100%;width:16px}.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:after,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:before,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:after,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:before{opacity:.54}.data-table .sortable-cell.sortable-cell-active .table-head-label:after,.data-table .sortable-cell.sortable-cell-active .table-head-label:before,.data-table .sortable-cell.sortable-cell-active:after,.data-table .sortable-cell.sortable-cell-active:before{opacity:.87!important}.data-table .sortable-cell.sortable-desc:after,.data-table .sortable-cell.sortable-desc:before,.data-table .table-head-label:after,.data-table .table-head-label:before{transform:rotate(180deg)!important}.card .data-table .card-footer,.card .data-table .card-header,.data-table.card .card-footer,.data-table.card .card-header{padding-left:var(--f7-table-edge-cell-padding-horizontal);padding-right:var(--f7-table-edge-cell-padding-horizontal)}.card .data-table .card-header,.data-table.card .card-header{background-color:var(--f7-table-card-header-bg-color);min-height:var(--f7-table-card-header-height)}.card .data-table .card-content,.data-table.card .card-content{overflow-x:auto}.card .data-table .card-footer,.data-table.card .card-footer{min-height:var(--f7-table-footer-height)}.data-table .data-table-title{font-size:var(--f7-table-title-font-size);font-weight:var(--f7-table-title-font-weight)}.data-table .data-table-actions,.data-table .data-table-links{display:flex}.data-table .data-table-links .button{min-width:64px}.data-table .data-table-actions{align-items:center;margin-left:auto}.data-table .data-table-actions a.link{color:var(--f7-table-actions-link-color,var(--f7-theme-color));min-width:0}.data-table .data-table-actions a.link.icon-only{justify-content:center;line-height:1;padding:0}.data-table .data-table-header,.data-table .data-table-header-selected{align-items:center;display:flex;justify-content:space-between;width:100%}.data-table .card-header>.data-table-header,.data-table .card-header>.data-table-header-selected{height:100%;margin:calc(var(--f7-card-header-padding-vertical)*-1) calc(var(--f7-table-edge-cell-padding-horizontal)*-1);min-height:var(--f7-table-card-header-height);padding:var(--f7-card-header-padding-vertical) var(--f7-table-edge-cell-padding-horizontal)}.data-table .data-table-header-selected{background:rgba(var(--f7-theme-color-rgb),.1);display:none}.data-table.data-table-has-checked .data-table-header{display:none}.data-table.data-table-has-checked .data-table-header-selected{display:flex}.data-table .data-table-title-selected{color:var(--f7-theme-color);font-size:14px}.data-table .data-table-footer{align-items:center;box-sizing:border-box;color:var(--f7-table-footer-text-color);display:flex;font-size:var(--f7-table-footer-font-size);justify-content:flex-end;min-height:var(--f7-table-footer-height);overflow:hidden;position:relative}.data-table .data-table-footer:before{background-color:var(--f7-table-cell-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.data-table .data-table-pagination,.data-table .data-table-rows-select{align-items:center;display:flex}.data-table .input-cell{height:auto;padding-bottom:8px;padding-top:8px;vertical-align:top}.data-table .input-cell .table-head-label+.input{margin-top:4px}.data-table .input-cell .input{height:var(--f7-table-input-height)}.data-table .input-cell .input input,.data-table .input-cell .input select,.data-table .input-cell .input textarea{color:var(--f7-table-input-text-color);font-size:var(--f7-table-input-font-size);height:var(--f7-table-input-height)}@media (max-width:480px) and (orientation:portrait){.data-table.data-table-collapsible thead{display:none}.data-table.data-table-collapsible tbody,.data-table.data-table-collapsible td,.data-table.data-table-collapsible tr{display:block}.data-table.data-table-collapsible tr{position:relative}.data-table.data-table-collapsible tr:before{background-color:var(--f7-table-cell-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.data-table.data-table-collapsible tr:hover{background-color:inherit}.data-table.data-table-collapsible td{--f7-table-cell-padding-left:var(--f7-table-collapsible-cell-padding);--f7-table-cell-padding-right:var(--f7-table-collapsible-cell-padding);align-content:center;align-items:center;display:flex;height:auto;justify-content:flex-start;min-height:var(--f7-table-body-cell-height);text-align:left}.data-table.data-table-collapsible td:before{display:none!important}.data-table.data-table-collapsible td:not(.checkbox-cell):before{background:none!important;color:var(--f7-table-head-text-color);content:attr(data-collapsible-title);display:block!important;flex-shrink:0;font-size:var(--f7-table-head-font-size);font-weight:var(--f7-table-head-font-weight);height:auto;margin-right:16px;position:relative;transform:none!important;width:40%}.data-table.data-table-collapsible td.checkbox-cell{left:0;position:absolute;top:0}.data-table.data-table-collapsible td.checkbox-cell+td{padding-left:16px}.data-table.data-table-collapsible td.checkbox-cell~td{margin-left:32px}}.data-table .xsmall-landscape-only,.data-table .xsmall-only{display:none}@media (min-width:480px){.data-table .xsmall-only{display:table-cell}}@media (min-width:480px) and (orientation:landscape){.data-table .xsmall-landscape-only{display:table-cell}}.data-table .small-landscape-only,.data-table .small-only{display:none}@media (min-width:568px){.data-table .small-only{display:table-cell}}@media (min-width:568px) and (orientation:landscape){.data-table .small-landscape-only{display:table-cell}}.data-table .medium-landscape-only,.data-table .medium-only{display:none}@media (min-width:768px){.data-table .medium-only{display:table-cell}}@media (min-width:768px) and (orientation:landscape){.data-table .medium-landscape-only{display:table-cell}}.data-table .large-landscape-only,.data-table .large-only{display:none}@media (min-width:1024px){.data-table .large-only{display:table-cell}}@media (min-width:1024px) and (orientation:landscape){.data-table .large-landscape-only{display:table-cell}}.data-table .xlarge-landscape-only,.data-table .xlarge-only{display:none}@media (min-width:1200px){.data-table .xlarge-only{display:table-cell}}@media (min-width:1200px) and (orientation:landscape){.data-table .xlarge-landscape-only{display:table-cell}}.ios .data-table td.actions-cell a.link+a.link,.ios .data-table th.actions-cell a.link+a.link{margin-left:16px}.ios .sortable-cell:not(.numeric-cell):after{margin-left:5px}.ios .sortable-cell.numeric-cell:before{margin-right:5px}.ios .data-table-actions .button+.button,.ios .data-table-actions a.link+a.link,.ios .data-table-links .button+.button,.ios .data-table-links a.link+a.link{margin-left:16px}.ios .data-table-actions a.link.icon-only,.ios .data-table-pagination a.link,.ios .data-table-rows-select a.link{height:44px;width:44px}.ios .data-table-rows-select+.data-table-pagination{margin-left:30px}.ios .data-table-rows-select .input{margin-left:20px}.ios .data-table-pagination-label{margin-right:16px}.md .data-table td.actions-cell a.link+a.link,.md .data-table th.actions-cell a.link+a.link{margin-left:24px}.md .data-table td.actions-cell a.icon-only,.md .data-table th.actions-cell a.icon-only{height:24px;line-height:24px;width:24px}.md .sortable-cell:not(.numeric-cell):after{margin-left:8px}.md .sortable-cell.numeric-cell:before{margin-right:8px}.md .data-table-actions .button+.button,.md .data-table-actions a.link+a.link,.md .data-table-links .button+.button,.md .data-table-links a.link+a.link{margin-left:24px}.md .data-table-actions a.link.icon-only{height:24px;overflow:visible;width:24px}.md .data-table-actions a.link.icon-only.active-state{background:none}.md .data-table-pagination a.link,.md .data-table-rows-select a.link{height:48px;width:48px}.md .data-table-rows-select+.data-table-pagination{margin-left:32px}.md .data-table-rows-select .input{margin-left:24px}.md .data-table-pagination-label{margin-right:20px}.md .input-cell .input-clear-button{transform:scale(.8)}:root{--f7-fab-margin:16px;--f7-fab-extended-text-font-size:14px;--f7-fab-label-padding:4px 12px;--f7-fab-label-font-size:inherit;--f7-fab-button-size:40px}.ios{--f7-fab-text-color:#fff;--f7-fab-border-radius:50px;--f7-fab-size:50px;--f7-fab-box-shadow:0px 2px 4px rgba(0,0,0,0.4);--f7-fab-extended-text-transform:uppercase;--f7-fab-extended-size:50px;--f7-fab-extended-text-padding:0 20px;--f7-fab-extended-text-font-weight:600;--f7-fab-extended-text-letter-spacing:0;--f7-fab-label-border-radius:4px;--f7-fab-label-box-shadow:0px 1px 2px rgba(0,0,0,0.4);--f7-fab-label-text-color:#333;--f7-fab-label-bg-color:#fff}.md{--f7-fab-border-radius:16px;--f7-fab-size:56px;--f7-fab-box-shadow:0px 1px 2px rgba(0,0,0,0.25);--f7-fab-extended-size:56px;--f7-fab-extended-text-padding:0 16px;--f7-fab-extended-text-font-weight:500;--f7-fab-extended-text-letter-spacing:0;--f7-fab-extended-text-transform:none;--f7-fab-label-border-radius:8px;--f7-fab-label-box-shadow:0px 1px 2px rgba(0,0,0,0.25)}.md,.md .dark,.md [class*=color-]{--f7-fab-bg-color:var(--f7-md-primary-container);--f7-fab-text-color:var(--f7-md-on-primary-container);--f7-fab-label-text-color:var(--f7-md-on-surface);--f7-fab-label-bg-color:var(--f7-md-surface-5)}.fab-backdrop{z-index:1400}.fab{position:absolute;z-index:1500}.fab a{--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.fab-left-bottom,.fab-left-center,.fab-left-top{left:calc(var(--f7-fab-margin) + var(--f7-safe-area-left))}.fab-right-bottom,.fab-right-center,.fab-right-top{right:calc(var(--f7-fab-margin) + var(--f7-safe-area-right))}.fab-center-top,.fab-left-top,.fab-right-top{top:var(--f7-fab-margin)}.fab-center-bottom,.fab-left-bottom,.fab-right-bottom{bottom:calc(var(--f7-fab-margin) + var(--f7-safe-area-bottom))}.fab-center-bottom,.fab-center-center,.fab-center-top{left:50%;transform:translateX(-50%)}.fab-center-center,.fab-left-center,.fab-right-center{top:50%;transform:translateY(-50%)}.fab-center-center{left:50%;top:50%;transform:translateX(-50%) translateY(-50%)}.fab-buttons a,.fab>a{align-items:center;background-color:var(--f7-fab-bg-color,var(--f7-theme-color));border-radius:var(--f7-fab-border-radius);box-shadow:var(--f7-fab-box-shadow);color:var(--f7-fab-text-color);display:flex;height:var(--f7-fab-size);justify-content:center;overflow:hidden;position:relative;transition-duration:.3s;width:var(--f7-fab-size);z-index:1}.fab>a i{left:50%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0) rotate(0deg) scale(1);transition:.3s}.fab>a i+i{opacity:0;transform:translate3d(-50%,-50%,0) rotate(-90deg) scale(.5)}.fab-buttons a{border-radius:var(--f7-fab-border-radius);height:var(--f7-fab-button-size);width:var(--f7-fab-button-size)}.fab-buttons{display:flex;pointer-events:none;position:absolute;visibility:hidden}.fab-buttons a{opacity:0}.fab-opened:not(.fab-morph)>a i{opacity:0;transform:translate3d(-50%,-50%,0) rotate(90deg) scale(.5)}.fab-opened:not(.fab-morph)>a i+i{opacity:1;transform:translate3d(-50%,-50%,0) rotate(0deg) scale(1)}.fab-opened .fab-buttons{pointer-events:auto;visibility:visible}.fab-opened .fab-buttons a{opacity:1;transform:translateZ(0) scale(1)!important}.fab-opened .fab-buttons a:nth-child(2){transition-delay:50ms}.fab-opened .fab-buttons a:nth-child(3){transition-delay:.1s}.fab-opened .fab-buttons a:nth-child(4){transition-delay:.15s}.fab-opened .fab-buttons a:nth-child(5){transition-delay:.2s}.fab-opened .fab-buttons a:nth-child(6){transition-delay:.25s}.fab-buttons-bottom,.fab-buttons-top{left:50%;margin-left:calc(var(--f7-fab-button-size)*-1/2);width:var(--f7-fab-button-size)}.fab-buttons-top{bottom:100%;flex-direction:column-reverse;margin-bottom:16px}.fab-buttons-top a{transform:translate3d(0,8px,0) scale(.3);transform-origin:center bottom}.fab-buttons-top a+a{margin-bottom:16px}.fab-buttons-bottom{flex-direction:column;margin-top:16px;top:100%}.fab-buttons-bottom a{transform:translate3d(0,-8px,0) scale(.3);transform-origin:center top}.fab-buttons-bottom a+a{margin-top:16px}.fab-buttons-left,.fab-buttons-right{height:var(--f7-fab-button-size);margin-top:calc(var(--f7-fab-button-size)*-1/2);top:50%}.fab-buttons-left{flex-direction:row-reverse;margin-right:16px;right:100%}.fab-buttons-left a{transform:translate3d(8px,0,0) scale(.3);transform-origin:right center}.fab-buttons-left a+a{margin-right:16px}.fab-buttons-right{left:100%;margin-left:16px}.fab-buttons-right a{transform:translate3d(-8px,0,0) scale(.3);transform-origin:left center}.fab-buttons-right a+a{margin-left:16px}.fab-buttons-center{height:100%;left:0;top:0;width:100%}.fab-buttons-center a{position:absolute}.fab-buttons-center a:first-child{bottom:100%;left:50%;margin-bottom:16px;margin-left:calc(var(--f7-fab-button-size)*-1/2);transform:translateY(-8px) scale(.3);transform-origin:center bottom}.fab-buttons-center a:nth-child(2){left:100%;margin-left:16px;margin-top:calc(var(--f7-fab-button-size)*-1/2);top:50%;transform:translateX(-8px) scale(.3);transform-origin:left center}.fab-buttons-center a:nth-child(3){left:50%;margin-left:calc(var(--f7-fab-button-size)*-1/2);margin-top:16px;top:100%;transform:translateY(8px) scale(.3);transform-origin:center top}.fab-buttons-center a:nth-child(4){margin-right:16px;margin-top:calc(var(--f7-fab-button-size)*-1/2);right:100%;top:50%;transform:translateX(8px) scale(.3);transform-origin:right center}.fab-morph{background:var(--f7-fab-bg-color,var(--f7-theme-color));border-radius:var(--f7-fab-border-radius);box-shadow:var(--f7-fab-box-shadow)}.fab-morph>a{background:none!important;box-shadow:none}.fab-opened.fab-morph>a i{opacity:0}.fab-morph,.fab-morph-target,.fab-morph>a{transition-duration:.25s}.fab-morph-target:not(.fab-morph-target-visible){display:none}.fab-extended{min-width:var(--f7-fab-extended-size);width:auto}.fab-extended>a{height:var(--f7-fab-extended-size);width:100%}.fab-extended>a i{left:calc(var(--f7-fab-extended-size)/2)}.fab-extended i~.fab-text{padding-left:var(--f7-fab-extended-size)}.fab-extended>a{width:100%!important}.fab-text{box-sizing:border-box;font-size:var(--f7-fab-extended-text-font-size);font-weight:var(--f7-fab-extended-text-font-weight);letter-spacing:var(--f7-fab-extended-text-letter-spacing);padding:var(--f7-fab-extended-text-padding);text-transform:var(--f7-fab-extended-text-transform)}.fab-label-button{overflow:visible!important}.fab-label{background:var(--f7-fab-label-bg-color);border-radius:var(--f7-fab-label-border-radius);box-shadow:var(--f7-fab-label-box-shadow);color:var(--f7-fab-label-text-color);font-size:var(--f7-fab-label-font-size);padding:var(--f7-fab-label-padding);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);white-space:nowrap}.fab-right-bottom .fab-label,.fab-right-center .fab-label,.fab-right-top .fab-label{margin-right:8px;right:100%}.fab-left-bottom .fab-label,.fab-left-center .fab-label,.fab-left-top .fab-label{left:100%;margin-left:8px}.navbars~* .fab-center-top,.navbars~* .fab-left-top,.navbars~* .fab-right-top,.navbars~.fab-center-top,.navbars~.fab-left-top,.navbars~.fab-right-top,.navbar~* .fab-center-top,.navbar~* .fab-left-top,.navbar~* .fab-right-top,.navbar~.fab-center-top,.navbar~.fab-left-top,.navbar~.fab-right-top{margin-top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .toolbar-top-ios~* .fab-center-top,.ios .toolbar-top-ios~* .fab-left-top,.ios .toolbar-top-ios~* .fab-right-top,.ios .toolbar-top-ios~.fab-center-top,.ios .toolbar-top-ios~.fab-left-top,.ios .toolbar-top-ios~.fab-right-top,.md .toolbar-top-md~* .fab-center-top,.md .toolbar-top-md~* .fab-left-top,.md .toolbar-top-md~* .fab-right-top,.md .toolbar-top-md~.fab-center-top,.md .toolbar-top-md~.fab-left-top,.md .toolbar-top-md~.fab-right-top,.toolbar-top~* .fab-center-top,.toolbar-top~* .fab-left-top,.toolbar-top~* .fab-right-top,.toolbar-top~.fab-center-top,.toolbar-top~.fab-left-top,.toolbar-top~.fab-right-top{margin-top:var(--f7-toolbar-height)}.ios .toolbar-bottom-ios~* .fab-center-bottom,.ios .toolbar-bottom-ios~* .fab-left-bottom,.ios .toolbar-bottom-ios~* .fab-right-bottom,.ios .toolbar-bottom-ios~.fab-center-bottom,.ios .toolbar-bottom-ios~.fab-left-bottom,.ios .toolbar-bottom-ios~.fab-right-bottom,.md .toolbar-bottom-md~* .fab-center-bottom,.md .toolbar-bottom-md~* .fab-left-bottom,.md .toolbar-bottom-md~* .fab-right-bottom,.md .toolbar-bottom-md~.fab-center-bottom,.md .toolbar-bottom-md~.fab-left-bottom,.md .toolbar-bottom-md~.fab-right-bottom,.toolbar-bottom~* .fab-center-bottom,.toolbar-bottom~* .fab-left-bottom,.toolbar-bottom~* .fab-right-bottom,.toolbar-bottom~.fab-center-bottom,.toolbar-bottom~.fab-left-bottom,.toolbar-bottom~.fab-right-bottom{margin-bottom:var(--f7-toolbar-height)}.ios .tabbar-icons.toolbar-bottom-ios~* .fab-center-bottom,.ios .tabbar-icons.toolbar-bottom-ios~* .fab-left-bottom,.ios .tabbar-icons.toolbar-bottom-ios~* .fab-right-bottom,.ios .tabbar-icons.toolbar-bottom-ios~.fab-center-bottom,.ios .tabbar-icons.toolbar-bottom-ios~.fab-left-bottom,.ios .tabbar-icons.toolbar-bottom-ios~.fab-right-bottom,.md .tabbar-icons.toolbar-bottom-md~* .fab-center-bottom,.md .tabbar-icons.toolbar-bottom-md~* .fab-left-bottom,.md .tabbar-icons.toolbar-bottom-md~* .fab-right-bottom,.md .tabbar-icons.toolbar-bottom-md~.fab-center-bottom,.md .tabbar-icons.toolbar-bottom-md~.fab-left-bottom,.md .tabbar-icons.toolbar-bottom-md~.fab-right-bottom,.tabbar-icons.toolbar-bottom~* .fab-center-bottom,.tabbar-icons.toolbar-bottom~* .fab-left-bottom,.tabbar-icons.toolbar-bottom~* .fab-right-bottom,.tabbar-icons.toolbar-bottom~.fab-center-bottom,.tabbar-icons.toolbar-bottom~.fab-left-bottom,.tabbar-icons.toolbar-bottom~.fab-right-bottom{margin-bottom:var(--f7-tabbar-icons-height)}.ios .tabbar-icons.toolbar-top-ios~* .fab-center-bottom,.ios .tabbar-icons.toolbar-top-ios~* .fab-left-bottom,.ios .tabbar-icons.toolbar-top-ios~* .fab-right-bottom,.ios .tabbar-icons.toolbar-top-ios~.fab-center-bottom,.ios .tabbar-icons.toolbar-top-ios~.fab-left-bottom,.ios .tabbar-icons.toolbar-top-ios~.fab-right-bottom,.md .tabbar-icons.toolbar-top-md~* .fab-center-bottom,.md .tabbar-icons.toolbar-top-md~* .fab-left-bottom,.md .tabbar-icons.toolbar-top-md~* .fab-right-bottom,.md .tabbar-icons.toolbar-top-md~.fab-center-bottom,.md .tabbar-icons.toolbar-top-md~.fab-left-bottom,.md .tabbar-icons.toolbar-top-md~.fab-right-bottom,.tabbar-icons.toolbar-top~* .fab-center-bottom,.tabbar-icons.toolbar-top~* .fab-left-bottom,.tabbar-icons.toolbar-top~* .fab-right-bottom,.tabbar-icons.toolbar-top~.fab-center-bottom,.tabbar-icons.toolbar-top~.fab-left-bottom,.tabbar-icons.toolbar-top~.fab-right-bottom{margin-top:var(--f7-tabbar-icons-height)}.messagebar~* .fab-center-bottom,.messagebar~* .fab-left-bottom,.messagebar~* .fab-right-bottom,.messagebar~.fab-center-bottom,.messagebar~.fab-left-bottom,.messagebar~.fab-right-bottom{margin-bottom:var(--f7-messagebar-height)}.ios .navbar+.toolbar-top-ios~* .fab-center-top,.ios .navbar+.toolbar-top-ios~* .fab-left-top,.ios .navbar+.toolbar-top-ios~* .fab-right-top,.ios .navbar+.toolbar-top-ios~.fab-center-top,.ios .navbar+.toolbar-top-ios~.fab-left-top,.ios .navbar+.toolbar-top-ios~.fab-right-top,.md .navbar+.toolbar-top-ios~* .fab-center-top,.md .navbar+.toolbar-top-ios~* .fab-left-top,.md .navbar+.toolbar-top-ios~* .fab-right-top,.md .navbar+.toolbar-top-ios~.fab-center-top,.md .navbar+.toolbar-top-ios~.fab-left-top,.md .navbar+.toolbar-top-ios~.fab-right-top,.navbar+.toolbar-top~* .fab-center-top,.navbar+.toolbar-top~* .fab-left-top,.navbar+.toolbar-top~* .fab-right-top,.navbar+.toolbar-top~.fab-center-top,.navbar+.toolbar-top~.fab-left-top,.navbar+.toolbar-top~.fab-right-top{margin-top:calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbar+.toolbar-top-ios.tabbar-icons~* .fab-center-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~* .fab-left-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~* .fab-right-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~.fab-center-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~.fab-left-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~.fab-right-top,.md .navbar+.toolbar-top-ios.tabbar-icons~* .fab-center-top,.md .navbar+.toolbar-top-ios.tabbar-icons~* .fab-left-top,.md .navbar+.toolbar-top-ios.tabbar-icons~* .fab-right-top,.md .navbar+.toolbar-top-ios.tabbar-icons~.fab-center-top,.md .navbar+.toolbar-top-ios.tabbar-icons~.fab-left-top,.md .navbar+.toolbar-top-ios.tabbar-icons~.fab-right-top,.navbar+.toolbar-top.tabbar-icons~* .fab-center-top,.navbar+.toolbar-top.tabbar-icons~* .fab-left-top,.navbar+.toolbar-top.tabbar-icons~* .fab-right-top,.navbar+.toolbar-top.tabbar-icons~.fab-center-top,.navbar+.toolbar-top.tabbar-icons~.fab-left-top,.navbar+.toolbar-top.tabbar-icons~.fab-right-top{margin-top:calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars+.toolbar-top-ios~* .fab-center-top,.ios .navbars+.toolbar-top-ios~* .fab-left-top,.ios .navbars+.toolbar-top-ios~* .fab-right-top,.ios .navbars+.toolbar-top-ios~.fab-center-top,.ios .navbars+.toolbar-top-ios~.fab-left-top,.ios .navbars+.toolbar-top-ios~.fab-right-top,.navbars+.toolbar-top~* .fab-center-top,.navbars+.toolbar-top~* .fab-left-top,.navbars+.toolbar-top~* .fab-right-top,.navbars+.toolbar-top~.fab-center-top,.navbars+.toolbar-top~.fab-left-top,.navbars+.toolbar-top~.fab-right-top{margin-top:calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars+.toolbar-top-ios.tabbar-icons~* .fab-center-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~* .fab-left-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~* .fab-right-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~.fab-center-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~.fab-left-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~.fab-right-top,.navbars+.toolbar-top.tabbar-icons~* .fab-center-top,.navbars+.toolbar-top.tabbar-icons~* .fab-left-top,.navbars+.toolbar-top.tabbar-icons~* .fab-right-top,.navbars+.toolbar-top.tabbar-icons~.fab-center-top,.navbars+.toolbar-top.tabbar-icons~.fab-left-top,.navbars+.toolbar-top.tabbar-icons~.fab-right-top{margin-top:calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .fab-buttons a.active-state,.ios .fab>a.active-state{background-color:var(--f7-fab-pressed-bg-color,var(--f7-theme-color-shade));transition-duration:0ms}.md .fab-buttons a.active-state,.md .fab>a.active-state{background-color:var(--f7-fab-pressed-bg-color,var(--f7-fab-bg-color,var(--f7-theme-color)))}:root{--f7-searchbar-input-border-width:0px;--f7-searchbar-input-border-color:transparent}.ios{--f7-searchbar-height:44px;--f7-searchbar-inner-padding-left:8px;--f7-searchbar-inner-padding-right:8px;--f7-searchbar-input-font-size:17px;--f7-searchbar-input-border-radius:8px;--f7-searchbar-input-height:32px;--f7-searchbar-inline-input-height:32px;--f7-searchbar-input-padding-horizontal:28px;--f7-searchbar-backdrop-bg-color:rgba(0,0,0,0.4);--f7-searchbar-in-page-content-margin:0px;--f7-searchbar-in-page-content-box-shadow:none;--f7-searchbar-in-page-content-border-radius:0;--f7-searchbar-in-page-content-input-border-radius:0;--f7-searchbar-placeholder-color:rgba(0,0,0,0.4);--f7-searchbar-input-text-color:#000;--f7-searchbar-search-icon-color:rgba(0,0,0,0.4);--f7-searchbar-input-bg-color:#e4e4e4}.ios .dark,.ios.dark{--f7-searchbar-placeholder-color:rgba(255,255,255,0.4);--f7-searchbar-input-text-color:#fff;--f7-searchbar-search-icon-color:rgba(255,255,255,0.4);--f7-searchbar-input-bg-color:#2a2a2a}.md{--f7-searchbar-border-color:transparent;--f7-searchbar-height:48px;--f7-searchbar-inner-padding-left:8px;--f7-searchbar-inner-padding-right:8px;--f7-searchbar-input-font-size:16px;--f7-searchbar-input-border-radius:24px;--f7-searchbar-input-height:48px;--f7-searchbar-inline-input-height:48px;--f7-searchbar-inline-input-border-radius:24px;--f7-searchbar-input-padding-horizontal:16px;--f7-searchbar-inline-input-padding-horizontal:16px;--f7-searchbar-backdrop-bg-color:rgba(0,0,0,0.25);--f7-searchbar-in-page-content-margin:16px 0;--f7-searchbar-in-page-content-box-shadow:none;--f7-searchbar-in-page-content-border-radius:24px;--f7-searchbar-in-page-content-input-border-radius:24px;--f7-searchbar-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-searchbar-link-color:var(--f7-md-on-surface);--f7-searchbar-search-icon-color:var(--f7-md-on-surface);--f7-searchbar-input-clear-button-color:var(--f7-md-on-surface);--f7-searchbar-placeholder-color:var(--f7-md-on-surface-variant);--f7-searchbar-input-bg-color:var(--f7-md-secondary-container);--f7-searchbar-input-text-color:var(--f7-md-on-surface)}.searchbar{--f7-link-highlight-color:var(--f7-link-highlight-black);background-color:var(--f7-searchbar-bg-color,var(--f7-bars-bg-color));height:var(--f7-searchbar-height);position:relative;width:100%;z-index:200}.dark .searchbar{--f7-link-highlight-color:var(--f7-link-highlight-white)}.searchbar input[type=search]::-webkit-search-decoration{display:none}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .searchbar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-searchbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.ios .subnavbar .searchbar{-webkit-backdrop-filter:none;backdrop-filter:none;background-color:initial}.ios .subnavbar .searchbar:after,.searchbar.no-outline:after{display:none!important}.searchbar:after{background-color:var(--f7-searchbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.page>.searchbar:not(.searchbar-inline){z-index:600}.searchbar input[type=search],.searchbar input[type=text]{-webkit-appearance:none;appearance:none;background-color:var(--f7-searchbar-input-bg-color);border:var(--f7-searchbar-input-border-width) solid var(--f7-searchbar-input-border-color);border-radius:var(--f7-searchbar-input-border-radius);box-sizing:border-box;color:var(--f7-searchbar-input-text-color);display:block;font-family:inherit;font-size:var(--f7-searchbar-input-font-size);font-weight:400;height:100%;padding:0;padding-left:calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px));padding-right:calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-right, 0px));position:relative;width:100%}.searchbar input[type=search]::placeholder,.searchbar input[type=text]::placeholder{color:var(--f7-searchbar-placeholder-color);opacity:1}.searchbar input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}.searchbar .searchbar-input-wrap{flex-shrink:1;height:var(--f7-searchbar-input-height);position:relative;width:100%}.searchbar a{color:var(--f7-searchbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.page>.searchbar:not(.searchbar-inline){left:0;position:absolute;top:0}.page-content .searchbar:not(.searchbar-inline){border-radius:var(--f7-searchbar-in-page-content-border-radius);box-shadow:var(--f7-searchbar-in-page-content-box-shadow);margin:var(--f7-searchbar-in-page-content-margin);width:auto}.page-content .searchbar:not(.searchbar-inline) .searchbar-inner,.page-content .searchbar:not(.searchbar-inline) input[type=search],.page-content .searchbar:not(.searchbar-inline) input[type=text]{border-radius:var(--f7-searchbar-in-page-content-input-border-radius,var(--f7-searchbar-input-border-radius))}.searchbar .input-clear-button{color:var(--f7-searchbar-input-clear-button-color,var(--f7-input-clear-button-color))}.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-searchbar-height);pointer-events:none;position:absolute;transition-duration:.3s}.navbar .searchbar-expandable{background:transparent}.navbar .searchbar-expandable:after{display:none!important}.navbar .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbar .searchbar.searchbar-expandable .searchbar-inner{height:calc(100% - var(--f7-safe-area-top));top:var(--f7-safe-area-top)}.toolbar .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-toolbar-height)}.subnavbar .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-subnavbar-height)}.tabbar-icons .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-tabbar-icons-height)}.searchbar-inner{align-items:center;box-sizing:border-box;display:flex;height:100%;left:0;padding:0 calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left));position:absolute;top:0;width:100%}.searchbar-disable-button{-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;margin:0;opacity:0;outline:0;padding:0;pointer-events:none;width:auto}.searchbar-icon{background-position:50%;background-repeat:no-repeat;pointer-events:none}.searchbar-icon:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-searchbar-search-icon-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.searchbar-backdrop{background:var(--f7-searchbar-backdrop-bg-color);height:100%;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transform:translateZ(0);transition-duration:.3s;width:100%;z-index:100}.searchbar-backdrop.searchbar-backdrop-in{opacity:1;pointer-events:auto}.page-content>.searchbar-backdrop{position:fixed}.searchbar-not-found{display:none}.hidden-by-searchbar,.list .hidden-by-searchbar,.list li.hidden-by-searchbar,.list.li.hidden-by-searchbar{display:none!important}.navbar.with-searchbar-expandable-enabled,.navbar.with-searchbar-expandable-enabled-no-transition{--f7-navbar-large-collapse-progress:1}.navbar.with-searchbar-expandable-closing .navbar-bg,.navbar.with-searchbar-expandable-closing .title-large,.navbar.with-searchbar-expandable-closing .title-large-text,.navbar.with-searchbar-expandable-enabled .navbar-bg,.navbar.with-searchbar-expandable-enabled .title-large,.navbar.with-searchbar-expandable-enabled .title-large-text{transition-duration:.3s}.page-content.with-searchbar-expandable-enabled{height:calc(100% + var(--f7-navbar-large-title-height));transform:translateY(calc(var(--f7-navbar-large-title-height)*-1));transition-duration:.3s;transition-property:transform}.page-content.with-searchbar-expandable-closing{transition-duration:.3s}.navbars~.page:not(.no-navbar)>.searchbar,.navbar~.page:not(.no-navbar)>.searchbar,.page>.navbar~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbars~.page-with-navbar-large:not(.no-navbar) .searchbar,.navbar~.page-with-navbar-large:not(.no-navbar) .searchbar,.page-with-navbar-large .navbar~* .searchbar,.page-with-navbar-large .navbar~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.navbars~.page-with-navbar-large:not(.no-navbar) .page-content .searchbar,.page-with-navbar-large .page-content .searchbar{top:0;transform:none}.searchbar~*{--f7-page-searchbar-offset:var(--f7-searchbar-height)}.ios .page>.toolbar-top-ios~.searchbar,.md .page>.toolbar-top-md~.searchbar,.page>.toolbar-top~.searchbar{top:var(--f7-toolbar-height)}.ios .page>.tabbar-icons.toolbar-top-ios~.searchbar,.md .page>.tabbar-icons.toolbar-top-md~.searchbar,.page>.tabbar-icons.toolbar-top~.searchbar{top:var(--f7-tabbar-icons-height)}.ios .page>.navbar~.toolbar-top-ios~.searchbar,.md .page>.navbar~.toolbar-top-md~.searchbar,.page>.navbar~.toolbar-top~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top))}.ios .page>.navbar~.tabbar-icons.toolbar-top-ios~.searchbar,.md .page>.navbar~.tabbar-icons.toolbar-top-md~.searchbar,.page>.navbar~.tabbar-icons.toolbar-top~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top))}.searchbar.searchbar-inline{background-color:initial;background-image:none;height:auto;width:auto}.searchbar.searchbar-inline:after,.searchbar.searchbar-inline:before{display:none!important}.searchbar.searchbar-inline .searchbar-input-wrap{height:var(--f7-searchbar-inline-input-height,var(--f7-searchbar-input-height))}.searchbar.searchbar-inline .searchbar-inner{height:auto;padding:0;position:static;width:auto}.searchbar.searchbar-inline input[type=search],.searchbar.searchbar-inline input[type=text]{border-radius:var(--f7-searchbar-inline-input-border-radius,var(--f7-searchbar-input-border-radius));font-size:var(--f7-searchbar-inline-input-font-size,var(--f7-searchbar-input-font-size));padding-left:calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-left, 0px));padding-right:calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-right, 0px))}.ios .searchbar input[type=search],.ios .searchbar input[type=text]{z-index:30}.ios .searchbar .input-clear-button{right:7px;z-index:40}.ios .searchbar-icon{height:13px;left:8px;margin-top:-6px;position:absolute;top:50%;width:13px;z-index:40}.ios .searchbar-icon:after{content:"search_ios";line-height:13px}.ios .searchbar-disable-button{color:var(--f7-searchbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)));display:none;flex-shrink:0;font-size:17px;transform:translateZ(0);transition-duration:.3s}.ios .searchbar-disable-button.active-state{opacity:.3!important;transition-duration:0ms}.ios .searchbar-enabled .searchbar-disable-button{margin-left:8px;opacity:1;pointer-events:auto}.ios .searchbar:not(.searchbar-enabled) .searchbar-disable-button{transition-duration:.3s!important}.ios .searchbar-expandable{bottom:0;height:0;left:0;opacity:1;overflow:hidden;transform:translateZ(0);width:100%}.ios .searchbar-expandable .searchbar-disable-button{display:block;margin-left:8px;opacity:1}.ios .searchbar-expandable .searchbar-inner{height:var(--f7-searchbar-expandable-size)}.ios .navbar.with-searchbar-expandable-closing .navbar-bg,.ios .navbar.with-searchbar-expandable-enabled .navbar-bg{transition-property:transform,opacity}.ios .navbar.with-searchbar-expandable-closing .left,.ios .navbar.with-searchbar-expandable-closing .navbar-bg,.ios .navbar.with-searchbar-expandable-closing .right,.ios .navbar.with-searchbar-expandable-closing .title,.ios .navbar.with-searchbar-expandable-enabled .left,.ios .navbar.with-searchbar-expandable-enabled .navbar-bg,.ios .navbar.with-searchbar-expandable-enabled .right,.ios .navbar.with-searchbar-expandable-enabled .title{transition-duration:.3s}.ios .navbar.with-searchbar-expandable-enabled .left,.ios .navbar.with-searchbar-expandable-enabled .right,.ios .navbar.with-searchbar-expandable-enabled .title,.ios .navbar.with-searchbar-expandable-enabled-no-transition .left,.ios .navbar.with-searchbar-expandable-enabled-no-transition .right,.ios .navbar.with-searchbar-expandable-enabled-no-transition .title{opacity:0!important;transform:translateY(calc(var(--f7-navbar-height)*-1))}.ios .searchbar-expandable.searchbar-enabled{height:var(--f7-searchbar-expandable-size);opacity:1;pointer-events:auto}.md .searchbar-disable-button,.md .searchbar-icon{position:absolute;top:50%;transition-duration:.3s}.md .searchbar-icon{align-items:center;display:flex;height:48px;justify-content:center;left:0;left:var(--f7-safe-area-left);top:0;width:48px}.md .searchbar-icon:after{content:"search_md";height:auto;line-height:1.2;width:auto}.md .searchbar-disable-button{color:var(--f7-searchbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)));display:block;font-size:0!important;height:48px;left:calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left));margin-top:-24px;transform:rotate(-90deg) scale(.5);width:48px}.md .searchbar-disable-button:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";content:"arrow_left_md";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;line-height:48px;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-disable-button{opacity:1;pointer-events:auto;transform:rotate(0deg) scale(1)}.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-icon{opacity:0;transform:rotate(90deg) scale(.5)}.md .searchbar{--f7-searchbar-input-extra-padding-left:34px}.md .searchbar .input-clear-button{height:48px;margin-top:-24px;right:0;width:48px}.md .searchbar .input-clear-button:after{content:"delete_round_md";line-height:48px;opacity:1}.md .searchbar .input-clear-button:before{display:none}.md .searchbar-inline{--f7-searchbar-input-extra-padding-left:32px}.md .page>.searchbar,.md .searchbar-expandable,.md .subnavbar .searchbar{--f7-searchbar-input-extra-padding-left:34px}.md .page>.searchbar .searchbar-disable-button,.md .searchbar-expandable .searchbar-disable-button,.md .subnavbar .searchbar .searchbar-disable-button{left:calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left))}.md .page>.searchbar .searchbar-icon,.md .searchbar-expandable .searchbar-icon,.md .subnavbar .searchbar .searchbar-icon{left:var(--f7-safe-area-left)}.md .searchbar-expandable{--f7-searchbar-inner-padding-left:4px;--f7-searchbar-inner-padding-right:4px;background-color:var(--f7-searchbar-input-bg-color);border-radius:calc(var(--f7-searchbar-expandable-size));bottom:0;height:var(--f7-searchbar-expandable-size);left:100%;margin-left:calc(var(--f7-searchbar-expandable-size)*-1);margin-top:calc(var(--f7-searchbar-expandable-size)*-1/2);opacity:0;transform:translateZ(0);width:calc(var(--f7-searchbar-expandable-size))}.md .searchbar-expandable.searchbar-enabled{border-radius:0;left:0;margin-left:0;margin-top:0;opacity:1;pointer-events:auto;width:100%}:root{--f7-message-text-header-opacity:0.65;--f7-message-text-header-font-size:12px;--f7-message-text-footer-opacity:0.65;--f7-message-text-footer-font-size:12px;--f7-message-bubble-line-height:1.2;--f7-message-header-font-size:12px;--f7-message-footer-font-size:11px;--f7-message-name-font-size:12px;--f7-message-name-font-weight:inherit;--f7-message-avatar-border-radius:50%;--f7-messages-title-font-weight:inherit;--f7-message-typing-indicator-bg-color:#000}:root .dark,:root.dark{--f7-message-typing-indicator-bg-color:#fff}.ios{--f7-message-text-header-text-color:inherit;--f7-message-text-footer-text-color:inherit;--f7-messages-title-font-size:11px;--f7-message-avatar-size:29px;--f7-message-margin:10px;--f7-message-bubble-min-height:32px;--f7-message-bubble-font-size:17px;--f7-message-bubble-border-radius:16px;--f7-message-bubble-padding-vertical:6px;--f7-message-bubble-padding-horizontal:16px;--f7-message-typing-indicator-opacity:0.35;--f7-message-sent-text-color:#fff;--f7-messages-content-bg-color:#fff;--f7-message-received-text-color:#000;--f7-message-received-bg-color:#e5e5ea;--f7-messages-title-text-color:rgba(0,0,0,0.45);--f7-message-header-text-color:rgba(0,0,0,0.45);--f7-message-footer-text-color:rgba(0,0,0,0.45);--f7-message-name-text-color:rgba(0,0,0,0.45)}.ios .dark,.ios.dark{--f7-message-received-bg-color:#252525;--f7-message-received-text-color:#fff;--f7-messages-content-bg-color:transparent;--f7-messages-title-text-color:rgba(255,255,255,0.54);--f7-message-header-text-color:rgba(255,255,255,0.54);--f7-message-name-text-color:rgba(255,255,255,0.54);--f7-message-footer-text-color:rgba(255,255,255,0.54)}.md{--f7-messages-content-bg-color:transparent;--f7-messages-title-font-size:12px;--f7-message-avatar-size:32px;--f7-message-margin:16px;--f7-message-bubble-min-height:40px;--f7-message-bubble-font-size:16px;--f7-message-bubble-border-radius:20px;--f7-message-bubble-padding-vertical:10px;--f7-message-bubble-padding-horizontal:16px;--f7-message-typing-indicator-opacity:0.6}.md,.md .dark,.md [class*=color-]{--f7-message-sent-bg-color:var(--f7-md-primary);--f7-message-sent-text-color:var(--f7-md-on-primary);--f7-message-received-bg-color:var(--f7-md-surface-variant);--f7-message-received-text-color:var(--f7-md-on-surface);--f7-message-text-header-text-color:var(--f7-md-on-surface-variant);--f7-message-text-footer-text-color:var(--f7-md-on-surface-variant);--f7-messages-title-text-color:var(--f7-md-on-surface-variant);--f7-message-header-text-color:var(--f7-md-on-surface-variant);--f7-message-footer-text-color:var(--f7-md-on-surface-variant);--f7-message-name-text-color:var(--f7-md-on-surface-variant)}.messages,.messages-content{background:var(--f7-messages-content-bg-color)}.messages{display:flex;flex-direction:column;min-height:100%;position:relative;z-index:1}.message,.messages-title{margin-top:var(--f7-message-margin)}.message:last-child,.messages-title:last-child{margin-bottom:var(--f7-message-margin)}.messages-title{color:var(--f7-messages-title-text-color);font-size:var(--f7-messages-title-font-size);font-weight:var(--f7-messages-title-font-weight);line-height:1;text-align:center;width:100%}.message{align-items:flex-end;box-sizing:border-box;display:flex;max-width:70%;position:relative;transform:translateZ(0);z-index:1}.message-avatar{align-self:flex-end;background-size:cover;border-radius:var(--f7-message-avatar-border-radius);flex-shrink:0;height:var(--f7-message-avatar-size);position:relative;width:var(--f7-message-avatar-size)}.message-content{display:flex;flex-direction:column;position:relative}.message-footer,.message-header,.message-name{line-height:1}.message-header{color:var(--f7-message-header-text-color);font-size:var(--f7-message-header-font-size)}.message-footer{color:var(--f7-message-footer-text-color);font-size:var(--f7-message-footer-font-size);margin-bottom:-1em}.message-name{color:var(--f7-message-name-text-color);font-size:var(--f7-message-name-font-size);font-weight:var(--f7-message-name-font-weight)}.message-bubble{border-radius:var(--f7-message-bubble-border-radius);box-sizing:border-box;display:flex;flex-direction:column;font-size:var(--f7-message-bubble-font-size);line-height:var(--f7-message-bubble-line-height);min-height:var(--f7-message-bubble-min-height);padding:var(--f7-message-bubble-padding-vertical) var(--f7-message-bubble-padding-horizontal);position:relative;word-break:break-word}.message-image img{display:block;height:auto;max-width:100%;width:auto}.message-text-footer,.message-text-header{line-height:1}.message-text-header{color:var(--f7-message-text-header-text-color);font-size:var(--f7-message-text-header-font-size);opacity:var(--f7-message-text-header-opacity)}.message-text-footer{color:var(--f7-message-text-footer-text-color);font-size:var(--f7-message-text-footer-font-size);opacity:var(--f7-message-text-footer-opacity)}.message-text{text-align:left}.message-sent{align-self:flex-end;flex-direction:row-reverse;text-align:right}.message-sent .message-bubble{background:var(--f7-message-sent-bg-color,var(--f7-theme-color));color:var(--f7-message-sent-text-color)}.message-sent .message-content{align-items:flex-end}.message-received{flex-direction:row}.message-received .message-bubble{background:var(--f7-message-received-bg-color);color:var(--f7-message-received-text-color)}.message-received .message-content{align-items:flex-start}.message:not(.message-last) .message-avatar{opacity:0}.message.message-same-footer .message-footer,.message.message-same-header .message-header,.message.message-same-name .message-name,.message:not(.message-first) .message-name{display:none}.message-appear-from-bottom{animation:message-appear-from-bottom .3s}.message-appear-from-top{animation:message-appear-from-top .3s}.message-typing-indicator{display:inline-block;font-size:0;vertical-align:middle}.message-typing-indicator>div{background:var(--f7-message-typing-indicator-bg-color);border-radius:50%;display:inline-block;opacity:var(--f7-message-typing-indicator-opacity);position:relative;vertical-align:middle}@keyframes message-appear-from-bottom{0%{transform:translate3d(0,100%,0)}to{transform:translateZ(0)}}@keyframes message-appear-from-top{0%{transform:translate3d(0,-100%,0)}to{transform:translateZ(0)}}.ios .message-footer b,.ios .message-header b,.ios .message-name b,.ios .messages-title b{font-weight:600}.ios .message-header,.ios .message-name{margin-bottom:3px}.ios .message-footer{margin-top:3px}.ios .message-bubble{min-width:48px}.ios .message-image{margin:var(--f7-message-bubble-padding-vertical) calc(var(--f7-message-bubble-padding-horizontal)*-1)}.ios .message-image:first-child{margin-top:calc(var(--f7-message-bubble-padding-vertical)*-1)}.ios .message-image:first-child img{border-top-left-radius:var(--f7-message-bubble-border-radius);border-top-right-radius:var(--f7-message-bubble-border-radius)}.ios .message-image:last-child{margin-bottom:calc(var(--f7-message-bubble-padding-vertical)*-1)}.ios .message-image:last-child img{border-bottom-left-radius:var(--f7-message-bubble-border-radius);border-bottom-right-radius:var(--f7-message-bubble-border-radius)}.ios .message-text-header{margin-bottom:3px}.ios .message-text-footer{margin-top:3px}.ios .message-received{margin-left:calc(10px + var(--f7-safe-area-left))}.ios .message-received .message-footer,.ios .message-received .message-header,.ios .message-received .message-name{margin-left:var(--f7-message-bubble-padding-horizontal)}.ios .message-received .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 42% 46% 56%;padding-left:calc(var(--f7-message-bubble-padding-horizontal) + 6px)}.ios .message-received .message-image{margin-left:calc((var(--f7-message-bubble-padding-horizontal) + 6px)*-1)}.ios .message-received.message-tail .message-bubble{border-radius:var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0}.ios .message-received.message-tail:not(.message-typing) .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 42% 46% 56%}.ios .message-received.message-tail:not(.message-typing) .message-bubble .message-image:last-child img{border-bottom-left-radius:0}.ios .message-sent{margin-right:calc(10px + var(--f7-safe-area-right))}.ios .message-sent .message-footer,.ios .message-sent .message-header,.ios .message-sent .message-name{margin-right:var(--f7-message-bubble-padding-horizontal)}.ios .message-sent .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 56% 46% 42%;padding-right:calc(var(--f7-message-bubble-padding-horizontal) + 6px)}.ios .message-sent .message-image{margin-right:calc((var(--f7-message-bubble-padding-horizontal) + 6px)*-1)}.ios .message-sent.message-tail .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 56% 46% 42%;border-radius:var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0 var(--f7-message-bubble-border-radius)}.ios .message-sent.message-tail .message-bubble .message-image:last-child img{border-bottom-right-radius:0}.ios .message+.message:not(.message-first){margin-top:1px}.ios .message-received.message-typing .message-content:after,.ios .message-received.message-typing .message-content:before{background:var(--f7-message-received-bg-color);border-radius:50%;content:"";position:absolute}.ios .message-received.message-typing .message-content:after{bottom:0;height:11px;left:4px;width:11px}.ios .message-received.message-typing .message-content:before{bottom:-4px;height:6px;left:-1px;width:6px}.ios .message-typing-indicator>div{height:9px;width:9px}.ios .message-typing-indicator>div+div{margin-left:4px}.ios .message-typing-indicator>div:first-child{animation:ios-message-typing-indicator .9s infinite}.ios .message-typing-indicator>div:nth-child(2){animation:ios-message-typing-indicator .9s .15s infinite}.ios .message-typing-indicator>div:nth-child(3){animation:ios-message-typing-indicator .9s .3s infinite}@keyframes ios-message-typing-indicator{0%{opacity:.35}25%{opacity:.2}50%{opacity:.2}}.md .message-footer b,.md .message-header b,.md .message-name b,.md .messages-title b{font-weight:500}.md .message-header,.md .message-name{margin-bottom:2px}.md .message-footer{margin-top:2px}.md .message-text-header{margin-bottom:4px}.md .message-text-footer{margin-top:4px}.md .message-image{margin:calc(var(--f7-message-bubble-padding-vertical)*-1) calc(var(--f7-message-bubble-padding-horizontal)*-1)}.md .message-image,.md .message-image img{border-radius:var(--f7-message-bubble-border-radius)}.md .message-received{margin-left:calc(8px + var(--f7-safe-area-left))}.md .message-received .message-footer,.md .message-received .message-header,.md .message-received .message-name{margin-left:16px}.md .message-received.message-first:not(.message-last) .message-bubble,.md .message-received.message-first:not(.message-last) .message-image,.md .message-received.message-first:not(.message-last) .message-image img{border-bottom-left-radius:4px}.md .message-received.message-last:not(.message-first) .message-bubble,.md .message-received.message-last:not(.message-first) .message-image,.md .message-received.message-last:not(.message-first) .message-image img{border-top-left-radius:4px}.md .message-received:not(.message-last):not(.message-first) .message-bubble,.md .message-received:not(.message-last):not(.message-first) .message-image,.md .message-received:not(.message-last):not(.message-first) .message-image img{border-bottom-left-radius:4px;border-top-left-radius:4px}.md .message-received .message-avatar+.message-content{margin-left:8px}.md .message-sent{margin-right:calc(8px + var(--f7-safe-area-right))}.md .message-sent .message-footer,.md .message-sent .message-header,.md .message-sent .message-name{margin-right:16px}.md .message-sent.message-first:not(.message-last) .message-bubble,.md .message-sent.message-first:not(.message-last) .message-image,.md .message-sent.message-first:not(.message-last) .message-image img{border-bottom-right-radius:4px}.md .message-sent.message-last:not(.message-first) .message-bubble,.md .message-sent.message-last:not(.message-first) .message-image,.md .message-sent.message-last:not(.message-first) .message-image img{border-top-right-radius:4px}.md .message-sent:not(.message-last):not(.message-first) .message-bubble,.md .message-sent:not(.message-last):not(.message-first) .message-image,.md .message-sent:not(.message-last):not(.message-first) .message-image img{border-bottom-right-radius:4px;border-top-right-radius:4px}.md .message-sent .message-avatar+.message-content{margin-right:var(--f7-message-bubble-padding-horizontal)}.md .message+.message:not(.message-first){margin-top:2px}.md .message-typing-indicator>div{height:6px;width:6px}.md .message-typing-indicator>div+div{margin-left:6px}.md .message-typing-indicator>div:first-child{animation:md-message-typing-indicator .9s infinite}.md .message-typing-indicator>div:nth-child(2){animation:md-message-typing-indicator .9s .15s infinite}.md .message-typing-indicator>div:nth-child(3){animation:md-message-typing-indicator .9s .3s infinite}@keyframes md-message-typing-indicator{0%{transform:translateY(0)}25%{transform:translateY(-5px)}50%{transform:translateY(0)}}:root{--f7-messagebar-attachments-height:155px;--f7-messagebar-sheet-height:252px;--f7-messagebar-sheet-landscape-height:192px}.ios{--f7-messagebar-height:44px;--f7-messagebar-font-size:17px;--f7-messagebar-textarea-bg-color:transparent;--f7-messagebar-border-color:transparent;--f7-messagebar-textarea-border-radius:17px;--f7-messagebar-textarea-padding:6px 16px;--f7-messagebar-textarea-height:34px;--f7-messagebar-textarea-font-size:17px;--f7-messagebar-textarea-line-height:20px;--f7-messagebar-sheet-bg-color:#d1d5da;--f7-messagebar-sheet-border-color:transparent;--f7-messagebar-attachment-border-radius:12px;--f7-messagebar-attachment-height:155px;--f7-messagebar-attachment-landscape-height:120px;--f7-messagebar-textarea-placeholder-color:rgba(0,0,0,0.4);--f7-messagebar-textarea-text-color:#000;--f7-messagebar-textarea-border:1px solid #c8c8cd;--f7-messagebar-attachments-border-color:#c8c8cd;--f7-messagebar-bg-color:#fff;--f7-messagebar-bg-color-rgb:255,255,255}.ios .dark,.ios.dark{--f7-messagebar-textarea-placeholder-color:rgba(255,255,255,0.4);--f7-messagebar-textarea-text-color:#fff;--f7-messagebar-textarea-border:1px solid var(--f7-bars-border-color);--f7-messagebar-attachments-border-color:var(--f7-bars-border-color);--f7-messagebar-bg-color:var(--f7-bars-bg-color);--f7-messagebar-bg-color-rgb:var(--f7-bars-bg-color-rgb)}.md{--f7-messagebar-height:64px;--f7-messagebar-font-size:16px;--f7-messagebar-textarea-border-radius:24px;--f7-messagebar-textarea-padding:12px 16px;--f7-messagebar-textarea-height:48px;--f7-messagebar-textarea-font-size:16px;--f7-messagebar-textarea-line-height:22px;--f7-messagebar-textarea-border:1px solid transparent;--f7-messagebar-attachment-border-radius:12px;--f7-messagebar-attachment-height:72px;--f7-messagebar-attachment-landscape-height:72px;--f7-messagebar-border-color:transparent;--f7-messagebar-attachments-border-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-messagebar-textarea-placeholder-color:var(--f7-md-on-surface-variant);--f7-messagebar-textarea-bg-color:var(--f7-md-surface-variant);--f7-messagebar-bg-color:var(--f7-md-surface);--f7-messagebar-textarea-text-color:var(--f7-md-on-surface);--f7-messagebar-sheet-bg-color:var(--f7-md-surface);--f7-messagebar-sheet-border-color:var(--f7-md-outline-variant);--f7-messagebar-link-color:var(--f7-md-on-surface)}.messagebar{background:var(--f7-messagebar-bg-color);bottom:0;font-size:var(--f7-messagebar-font-size);height:auto;min-height:var(--f7-messagebar-height);padding-bottom:var(--f7-safe-area-bottom);transform:translateZ(0)}.messagebar:before{background-color:var(--f7-messagebar-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .messagebar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-messagebar-bg-color-rgb),var(--f7-bars-translucent-opacity))}}.messagebar.no-outline:before,.messagebar.toolbar-hidden:after{display:none!important}.messagebar .toolbar-inner{bottom:auto;height:auto;padding-left:calc(var(--f7-messagebar-inner-padding-left, var(--f7-toolbar-inner-padding-left)) + var(--f7-safe-area-left));padding-right:calc(var(--f7-messagebar-inner-padding-right, var(--f7-toolbar-inner-padding-right)) + var(--f7-safe-area-right));position:relative;top:auto}.messagebar.messagebar-sheet-visible>.toolbar-inner{bottom:0}.messagebar .messagebar-area{flex-shrink:1;overflow:hidden;position:relative;width:100%}.messagebar textarea{background-color:var(--f7-messagebar-textarea-bg-color);border:var(--f7-messagebar-textarea-border);border-radius:var(--f7-messagebar-textarea-border-radius);color:var(--f7-messagebar-textarea-text-color);flex-shrink:1;font-size:var(--f7-messagebar-textarea-font-size);height:var(--f7-messagebar-textarea-height);line-height:var(--f7-messagebar-textarea-line-height);padding:var(--f7-messagebar-textarea-padding);width:100%}.messagebar textarea::placeholder{color:var(--f7-messagebar-textarea-placeholder-color)}.messagebar a.link{align-self:flex-end;color:var(--f7-messagebar-link-color,var(--f7-theme-color));flex-shrink:0}.messagebar-attachments{-webkit-overflow-scrolling:touch;box-sizing:border-box;font-size:0;overflow:auto;position:relative;white-space:nowrap;width:100%}.messagebar:not(.messagebar-attachments-visible) .messagebar-attachments{display:none}.messagebar-attachment{background-position:50%;background-repeat:no-repeat;background-size:cover;border-radius:var(--f7-messagebar-attachment-border-radius);display:inline-block;height:var(--f7-messagebar-attachment-height);position:relative;vertical-align:middle;white-space:normal}@media (orientation:landscape){.messagebar-attachment{height:var(--f7-messagebar-attachment-landscape-height)}}.messagebar-attachment img{border-radius:var(--f7-messagebar-attachment-border-radius);display:block;height:100%;width:auto}.messagebar-sheet{-webkit-overflow-scrolling:touch;align-content:flex-start;background-color:var(--f7-messagebar-sheet-bg-color);border-top:1px solid var(--f7-messagebar-sheet-border-color);display:flex;flex-direction:column;flex-wrap:wrap;height:var(--f7-messagebar-sheet-height);overflow:auto;padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right)}@media (orientation:landscape){.messagebar-sheet{height:var(--f7-messagebar-sheet-landscape-height)}}.messagebar-sheet-image{background-position:50%;background-repeat:no-repeat;background-size:cover}.messagebar-sheet-image>img{border-radius:inherit;height:100%;object-fit:cover;object-position:center;transition-duration:.2s;width:100%}.messagebar-attachment-delete{border-radius:50%;box-sizing:border-box;cursor:pointer;display:block;position:absolute}.messagebar-attachment-delete:after,.messagebar-attachment-delete:before{content:"";left:50%;position:absolute;top:50%}.messagebar-attachment-delete:after{transform:rotate(45deg)}.messagebar-attachment-delete:before{transform:rotate(-45deg)}.messagebar:not(.messagebar-sheet-visible) .messagebar-sheet{display:none}.messagebar~*{--f7-page-toolbar-bottom-offset:var(--f7-messagebar-height)}.ios .messagebar a.link.icon-only:first-child{margin-left:-8px}.ios .messagebar a.link.icon-only:last-child{margin-right:-8px}.ios .messagebar .messagebar-area+a.link:not(.icon-only),.ios .messagebar a.link:not(.icon-only)+.messagebar-area{margin-left:8px}.ios .messagebar-area{margin-bottom:5px;margin-top:5px}.ios .messagebar-attachments{border:1px solid var(--f7-messagebar-attachments-border-color);border-bottom:none;border-radius:var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;padding:5px}.ios .messagebar-attachments-visible .messagebar-attachments+textarea{border-radius:0 0 var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius)}.ios .messagebar-attachment{font-size:14px}.ios .messagebar-attachment+.messagebar-attachment{margin-left:8px}.ios .messagebar-attachment-delete{background:#7d7e80;border:2px solid #fff;box-shadow:0 0 2px rgba(0,0,0,.2);height:20px;right:5px;top:5px;width:20px}.ios .messagebar-attachment-delete:after,.ios .messagebar-attachment-delete:before{background:#fff;height:2px;margin-left:-5px;margin-top:-1px;width:10px}.ios .messagebar-sheet-image,.ios .messagebar-sheet-item{box-sizing:border-box;flex-shrink:0;height:calc((var(--f7-messagebar-sheet-height) - 2px)/2);margin-left:1px;margin-top:1px;overflow:hidden;position:relative;width:calc((var(--f7-messagebar-sheet-height) - 2px)/2)}@media (orientation:landscape){.ios .messagebar-sheet-image,.ios .messagebar-sheet-item{height:calc((var(--f7-messagebar-sheet-landscape-height) - 2px)/2);width:calc((var(--f7-messagebar-sheet-landscape-height) - 2px)/2)}}.ios .messagebar-sheet-image .icon-checkbox,.ios .messagebar-sheet-image .icon-radio,.ios .messagebar-sheet-item .icon-checkbox,.ios .messagebar-sheet-item .icon-radio{bottom:8px;position:absolute;right:8px;z-index:1}.md .messagebar{--f7-toolbar-link-height:var(--f7-messagebar-height)}.md .messagebar-attachments{border-bottom:1px solid var(--f7-messagebar-attachments-border-color);padding:16px 16px 0}.md .messagebar-attachment img{height:var(--f7-messagebar-attachment-height);object-fit:cover;object-position:center;width:var(--f7-messagebar-attachment-height)}.md .messagebar-attachment+.messagebar-attachment{margin-left:16px}.md .messagebar-attachments-visible .messagebar-attachments{background:var(--f7-messagebar-textarea-bg-color);border-radius:var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0}.md .messagebar-attachments-visible textarea{border-top-left-radius:0;border-top-right-radius:0}.md .messagebar-area{margin-bottom:8px;margin-top:8px}.md .messagebar-attachment-delete{background-color:var(--f7-md-inverse-surface);border:2px solid var(--f7-messagebar-textarea-bg-color);border-radius:24px;height:24px;right:-6px;top:-6px;width:24px}.md .messagebar-attachment-delete:after,.md .messagebar-attachment-delete:before{background:var(--f7-messagebar-textarea-bg-color);height:2px;margin-left:-6px;margin-top:-1px;width:12px}.md .messagebar-sheet-image,.md .messagebar-sheet-item{--f7-touch-ripple-color:transparent;border-radius:4px;box-sizing:border-box;flex-shrink:0;height:calc((var(--f7-messagebar-sheet-height) - 24px)/2);margin-left:8px;margin-top:8px;overflow:hidden;position:relative;width:calc((var(--f7-messagebar-sheet-height) - 24px)/2)}@media (orientation:landscape){.md .messagebar-sheet-image,.md .messagebar-sheet-item{height:calc((var(--f7-messagebar-sheet-landscape-height) - 24px)/2);width:calc((var(--f7-messagebar-sheet-landscape-height) - 8px)/2)}}.md .messagebar-sheet-image input:checked~img,.md .messagebar-sheet-item input:checked~img{transform:scale(.85)}.md .messagebar-sheet-image input:checked~.icon-checkbox,.md .messagebar-sheet-image input:checked~.icon-radio,.md .messagebar-sheet-item input:checked~.icon-checkbox,.md .messagebar-sheet-item input:checked~.icon-radio{transform:translate(-50%,-50%) scale(1)}.md .messagebar-sheet-image .icon-checkbox,.md .messagebar-sheet-image .icon-radio,.md .messagebar-sheet-item .icon-checkbox,.md .messagebar-sheet-item .icon-radio{--f7-checkbox-inactive-color:var(--f7-md-surface);--f7-checkbox-active-color:var(--f7-md-surface);align-items:center;border:none;border-radius:50%;display:flex;height:32px;justify-content:center;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(.85);width:32px;z-index:1}.md .messagebar-sheet-image .icon-checkbox:after,.md .messagebar-sheet-image .icon-radio:after,.md .messagebar-sheet-item .icon-checkbox:after,.md .messagebar-sheet-item .icon-radio:after{color:var(--f7-md-on-surface);font-size:18px;height:100%;left:0;line-height:32px;position:static;width:auto}@font-face{font-family:swiper-icons;font-style:normal;font-weight:400;src:url("data:application/font-woff;charset=utf-8;base64, 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")}:root{--swiper-theme-color:#007aff}:host{display:block;margin-left:auto;margin-right:auto;position:relative;z-index:1}.swiper{display:block;list-style:none;margin-left:auto;margin-right:auto;overflow:hidden;overflow:clip;padding:0;position:relative;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{box-sizing:initial;display:flex;height:100%;position:relative;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);width:100%;z-index:1}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{display:block;flex-shrink:0;height:100%;position:relative;transition-property:transform;width:100%}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{-ms-overflow-style:none;overflow:auto;scrollbar-width:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);min-width:1px;width:100%}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(270deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(90deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(0deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(180deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top:4px solid transparent;box-sizing:border-box;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;transform-origin:50%;width:42px;z-index:10}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s linear infinite}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper:after{content:"";left:0;pointer-events:none;position:absolute;top:0}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper:after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper:after{height:var(--swiper-virtual-size);width:1px}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{align-items:center;color:var(--swiper-navigation-color,var(--swiper-theme-color));cursor:pointer;display:flex;height:var(--swiper-navigation-size);justify-content:center;margin-top:calc(0px - var(--swiper-navigation-size)/2);position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/44*27);z-index:10}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{cursor:auto;opacity:.35;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{cursor:auto;opacity:0;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{height:100%;object-fit:contain;transform-origin:center;width:100%}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);font-variant:normal;letter-spacing:0;line-height:1;text-transform:none!important}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:"prev"}.swiper-button-next,.swiper-rtl .swiper-button-prev{left:auto;right:var(--swiper-navigation-sides-offset,10px)}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:"next"}.swiper-pagination{position:absolute;text-align:center;transform:translateZ(0);transition:opacity .3s;z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);left:0;top:var(--swiper-pagination-top,auto);width:100%}.swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{position:relative;transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{background:var(--swiper-pagination-bullet-inactive-color,#000);border-radius:var(--swiper-pagination-bullet-border-radius,50%);display:inline-block;height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px))}button.swiper-pagination-bullet{-webkit-appearance:none;appearance:none;border:none;box-shadow:none;margin:0;padding:0}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{background:var(--swiper-pagination-color,var(--swiper-theme-color));opacity:var(--swiper-pagination-bullet-opacity,1)}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{left:var(--swiper-pagination-left,auto);right:var(--swiper-pagination-right,8px);top:50%;transform:translate3d(0,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{display:block;margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:transform .2s,top .2s}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,left .2s}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));height:100%;left:0;position:absolute;top:0;transform:scale(0);transform-origin:left top;width:100%}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0;width:100%}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{height:100%;left:0;top:0;width:var(--swiper-pagination-progressbar-size,4px)}.swiper-pagination-lock{display:none}.swiper-scrollbar{background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1));border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;-ms-touch-action:none}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{bottom:var(--swiper-scrollbar-bottom,4px);height:var(--swiper-scrollbar-size,4px);left:var(--swiper-scrollbar-sides-offset,1%);position:absolute;top:var(--swiper-scrollbar-top,auto);width:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);z-index:50}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{height:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);left:var(--swiper-scrollbar-left,auto);position:absolute;right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);width:var(--swiper-scrollbar-size,4px);z-index:50}.swiper-scrollbar-drag{background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);height:100%;left:0;position:relative;top:0;width:100%}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{align-items:center;display:flex;height:100%;justify-content:center;text-align:center;width:100%}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-height:100%;max-width:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none}.swiper .swiper-notification{left:0;opacity:0;pointer-events:none;position:absolute;top:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{margin:0 auto;transition-timing-function:ease-out}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-direction:column;flex-wrap:wrap}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;height:100%;pointer-events:none;transform-origin:0 0;visibility:hidden;width:100%;z-index:1}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{bottom:0;height:100%;left:0;opacity:.6;position:absolute;width:100%;z-index:0}.swiper-cube .swiper-cube-shadow:before{background:#000;bottom:0;content:"";filter:blur(50px);left:0;position:absolute;right:0;top:0}.swiper-cube .swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top{-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:0}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:none;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top{-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:0}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transform-origin:center bottom}:root{--f7-photobrowser-bg-color:#fff;--f7-photobrowser-bars-bg-color:rgba(var(--f7-bars-bg-color-rgb),0.95);--f7-photobrowser-bars-text-color:var(--f7-bars-text-color);--f7-photobrowser-bars-link-color:var(--f7-bars-link-color);--f7-photobrowser-caption-font-size:13px;--f7-photobrowser-caption-font-weight:500;--f7-photobrowser-caption-light-text-color:#000;--f7-photobrowser-caption-dark-text-color:#fff;--f7-photobrowser-exposed-bg-color:#000;--f7-photobrowser-dark-bg-color:#000;--f7-photobrowser-dark-bars-bg-color:rgba(27,27,27,0.8);--f7-photobrowser-dark-bars-text-color:#fff;--f7-photobrowser-dark-bars-link-color:#fff}.photo-browser{height:100%;left:0;position:absolute;top:0;width:100%;z-index:400}.photo-browser-standalone.modal-in{animation:photo-browser-in .4s;transition-duration:0ms}.photo-browser-standalone.modal-out{animation:photo-browser-out .4s!important;transition-duration:0ms}.photo-browser-standalone.modal-out.swipe-close-to-bottom,.photo-browser-standalone.modal-out.swipe-close-to-top{animation:none!important}.photo-browser-standalone.photo-browser-transitioning{animation:none!important;transition:.4s}.photo-browser-popup.modal-out.swipe-close-to-bottom,.photo-browser-popup.modal-out.swipe-close-to-top{transition-duration:.3s}.photo-browser-popup.modal-out.swipe-close-to-bottom{transform:translate3d(0,100vh,0)}.photo-browser-popup.modal-out.swipe-close-to-top{transform:translate3d(0,-100vh,0)}.photo-browser-page{background:none}.photo-browser-page .toolbar{transform:none}.photo-browser-popup{background:none}.photo-browser-of{margin:0 5px}.photo-browser-captions{bottom:var(--f7-safe-area-bottom);left:0;opacity:1;pointer-events:none;position:absolute;transition-duration:.4s;width:100%;z-index:10}.photo-browser-captions.photo-browser-captions-exposed{opacity:0}.toolbar~.toolbar.photo-browser-thumbs{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.page~.photo-browser-page:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs,.photo-browser-popup:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs,.photo-browser-standalone:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs{height:var(--f7-toolbar-height)}.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs{transform:translate3d(0,calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom, 0)),0)}.navbar+.toolbar.photo-browser-thumbs .swiper,.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs .swiper{height:calc(100% - var(--f7-safe-area-bottom, 0))}.toolbar~.photo-browser-captions{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));transform:translateZ(0)}.toolbar~.photo-browser-captions.photo-browser-captions-exposed{transform:translateZ(0)}.toolbar~.toolbar~.photo-browser-captions{bottom:calc(var(--f7-toolbar-height)*2 + var(--f7-safe-area-bottom))}.toolbar~.toolbar~.photo-browser-captions.photo-browser-captions-exposed{transform:translate3d(0,var(--f7-toolbar-height),0)}.photo-browser-thumbs{transition-property:transform,background-color,color}.photo-browser-thumbs .swiper{height:100%;width:100%}.photo-browser-thumbs .swiper-slide{align-items:center;display:flex;justify-content:center;width:auto}.photo-browser-thumbs img{border-radius:2px;display:block;height:75%;min-width:4px;width:auto}.photo-browser-thumbs .swiper-slide img{transform:translateX(-4px);transition-duration:.15s}.photo-browser-thumbs .swiper-slide-active img{transform:scale(1.2)}.photo-browser-thumbs .swiper-slide-active~.swiper-slide img{transform:translateX(4px)}.photo-browser-caption{bottom:0;box-sizing:border-box;font-size:var(--f7-photobrowser-caption-font-size);font-weight:var(--f7-photobrowser-caption-font-weight);left:0;opacity:0;padding:4px 5px;position:absolute;text-align:center;transition-duration:.4s;width:100%}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .photo-browser-caption{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur))}}.photo-browser-caption:empty{display:none}.photo-browser-caption.photo-browser-caption-active{opacity:1}.photo-browser-captions-light .photo-browser-caption{color:var(--f7-photobrowser-caption-light-text-color)}.dark .photo-browser-caption,.photo-browser-captions-dark .photo-browser-caption{color:var(--f7-photobrowser-caption-dark-text-color)}.photo-browser-swiper-container{background:var(--f7-photobrowser-bg-color);height:100%;left:0;overflow:hidden;position:absolute;top:0;touch-action:none;transition:.4s;transition-property:background-color;width:100%}.photo-browser-next.swiper-button-disabled,.photo-browser-prev.swiper-button-disabled{opacity:.3;pointer-events:none}.photo-browser-slide{align-items:center;box-sizing:border-box;display:flex;flex-shrink:0;height:100%;justify-content:center;overflow:hidden;position:relative;width:100%}.photo-browser-slide span.swiper-zoom-container{display:none}.photo-browser-slide img{display:none;height:auto;max-height:100%;max-width:100%;width:auto}.photo-browser-slide.swiper-slide-active span.swiper-zoom-container,.photo-browser-slide.swiper-slide-next span.swiper-zoom-container,.photo-browser-slide.swiper-slide-prev span.swiper-zoom-container{display:flex}.photo-browser-slide.swiper-slide-active img,.photo-browser-slide.swiper-slide-next img,.photo-browser-slide.swiper-slide-prev img{display:inline}.photo-browser-slide.swiper-slide-active.photo-browser-slide-lazy .preloader,.photo-browser-slide.swiper-slide-next.photo-browser-slide-lazy .preloader,.photo-browser-slide.swiper-slide-prev.photo-browser-slide-lazy .preloader{display:block}.photo-browser-slide iframe{height:100%;width:100%}.photo-browser-slide .preloader{display:none;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;width:42px}.navbar-photo-browser .right .link i,.navbar-photo-browser .right .link svg{display:block;height:24px;width:24px}.navbar-photo-browser .navbar-bg,.photo-browser-caption,.photo-browser-page .navbar-bg,.photo-browser-page .toolbar{background-color:var(--f7-photobrowser-bars-bg-color,rgba(var(--f7-bars-bg-color-rgb),.95))}.photo-browser-page{touch-action:none}.photo-browser-page .navbar,.photo-browser-page .toolbar{color:var(--f7-photobrowser-bars-text-color,var(--f7-bars-text-color));transform:translateZ(0);transition-duration:.4s}.photo-browser-page .navbar a,.photo-browser-page .toolbar a{color:var(--f7-photobrowser-bars-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.photo-browser-exposed .navbar,.photo-browser-exposed .toolbar:not(.photo-browser-thumbs){opacity:0;pointer-events:none;visibility:hidden}.photo-browser-exposed .toolbar:not(.photo-browser-thumbs)~.photo-browser-captions,.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs~.photo-browser-captions{transform:translate3d(0,var(--f7-toolbar-height),0)}.photo-browser-exposed .photo-browser-swiper-container{background:var(--f7-photobrowser-exposed-bg-color)}.photo-browser-dark .photo-browser-thumbs,.photo-browser-dark .toolbar,.photo-browser-exposed .photo-browser-thumbs,.photo-browser-exposed .toolbar{background-color:var(--f7-photobrowser-dark-bars-bg-color)}.photo-browser-dark .photo-browser-caption,.photo-browser-exposed .photo-browser-caption{background-color:var(--f7-photobrowser-dark-bars-bg-color);color:var(--f7-photobrowser-caption-dark-text-color)}.view.with-photo-browser-page-exposed .navbar{opacity:0;pointer-events:none}.photo-browser-page .toolbar:after,.photo-browser-page .toolbar:before{display:none!important}.navbar-photo-browser-dark .navbar-bg,.photo-browser-page-dark .navbar-bg{background:var(--f7-photobrowser-dark-bars-bg-color)}.navbar-photo-browser-dark .navbar-bg:after,.navbar-photo-browser-dark .navbar-bg:before,.photo-browser-page-dark .navbar-bg:after,.photo-browser-page-dark .navbar-bg:before{display:none!important}.navbar-photo-browser-dark,.photo-browser-dark .navbar,.photo-browser-dark .toolbar,.photo-browser-page-dark .navbar,.photo-browser-page-dark .toolbar{color:var(--f7-photobrowser-dark-bars-text-color)}.navbar-photo-browser-dark a,.photo-browser-dark .navbar a,.photo-browser-dark .toolbar a,.photo-browser-page-dark .navbar a,.photo-browser-page-dark .toolbar a{color:var(--f7-photobrowser-dark-bars-link-color)}.photo-browser-dark .photo-browser-swiper-container,.photo-browser-page-dark .photo-browser-swiper-container{background:var(--f7-photobrowser-dark-bg-color)}@keyframes photo-browser-in{0%{opacity:0;transform:translateZ(0) scale(.5)}50%{opacity:1;transform:translateZ(0) scale(1.05)}to{opacity:1;transform:translateZ(0) scale(1)}}@keyframes photo-browser-out{0%{opacity:1;transform:translateZ(0) scale(1)}50%{opacity:1;transform:translateZ(0) scale(1.05)}to{opacity:0;transform:translateZ(0) scale(.5)}}:root{--f7-notification-max-width:568px;--f7-notification-subtitle-text-transform:none;--f7-notification-subtitle-line-height:1.35;--f7-notification-text-text-transform:none;--f7-notification-text-font-weight:400}.ios{--f7-notification-margin:8px;--f7-notification-padding-horizontal:10px;--f7-notification-padding-vertical:10px;--f7-notification-border-radius:12px;--f7-notification-box-shadow:0px 5px 25px -10px rgba(0,0,0,0.7);--f7-notification-icon-size:20px;--f7-notification-title-font-size:13px;--f7-notification-title-text-transform:uppercase;--f7-notification-title-line-height:1.4;--f7-notification-title-font-weight:400;--f7-notification-title-letter-spacing:0.02em;--f7-notification-title-right-font-size:13px;--f7-notification-subtitle-font-size:15px;--f7-notification-subtitle-font-weight:600;--f7-notification-text-font-size:15px;--f7-notification-text-line-height:1.2;--f7-notification-bg-color:rgba(250,250,250,0.95);--f7-notification-bg-color-rgb:255,255,255;--f7-notification-title-color:#000;--f7-notification-title-right-color:rgba(0,0,0,0.45);--f7-notification-subtitle-color:#000;--f7-notification-text-color:#000}.ios .dark,.ios.dark{--f7-notification-bg-color:rgba(30,30,30,0.95);--f7-notification-bg-color-rgb:30,30,30;--f7-notification-title-color:#fff;--f7-notification-text-color:#fff;--f7-notification-subtitle-color:#fff;--f7-notification-title-right-color:rgba(255,255,255,0.55)}.md{--f7-notification-margin:16px;--f7-notification-padding-vertical:20px;--f7-notification-padding-horizontal:16px;--f7-notification-border-radius:16px;--f7-notification-box-shadow:none;--f7-notification-icon-size:24px;--f7-notification-title-font-size:16px;--f7-notification-title-text-transform:none;--f7-notification-title-line-height:1.35;--f7-notification-title-font-weight:500;--f7-notification-title-right-font-size:12px;--f7-notification-subtitle-font-size:14px;--f7-notification-subtitle-font-weight:400;--f7-notification-text-font-size:14px;--f7-notification-text-line-height:1.35}.md,.md .dark,.md [class*=color-]{--f7-notification-title-color:var(--f7-md-on-surface);--f7-notification-bg-color:var(--f7-md-surface-5);--f7-notification-text-color:var(--f7-md-on-surface-variant);--f7-notification-title-right-color:var(--f7-md-on-surface-variant);--f7-notification-subtitle-color:var(--f7-md-on-surface)}.notification{background:var(--f7-notification-bg-color);border:none;border-radius:var(--f7-notification-border-radius);box-shadow:var(--f7-notification-box-shadow);box-sizing:border-box;direction:ltr;display:none;font-size:14px;left:var(--f7-notification-margin);margin:0;margin-top:var(--f7-safe-area-top);max-width:var(--f7-notification-max-width);padding:var(--f7-notification-padding-vertical) var(--f7-notification-padding-horizontal);position:absolute;top:var(--f7-notification-margin);transition-property:transform;width:calc(100% - var(--f7-notification-margin)*2);z-index:20000}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .notification{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-notification-bg-color-rgb),.8)}}@media (min-width:568px){.notification{left:50%;margin-left:calc(var(--f7-notification-max-width)*-1/2);width:var(--f7-notification-max-width)}}.notification-title{color:var(--f7-notification-title-color,var(--f7-theme-color));font-size:var(--f7-notification-title-font-size);font-weight:var(--f7-notification-title-font-weight);letter-spacing:var(--f7-notification-title-letter-spacing);line-height:var(--f7-notification-title-line-height);text-transform:var(--f7-notification-title-text-transform)}.notification-subtitle{color:var(--f7-notification-subtitle-color);font-size:var(--f7-notification-subtitle-font-size);font-weight:var(--f7-notification-subtitle-font-weight);line-height:var(--f7-notification-subtitle-line-height);text-transform:var(--f7-notification-subtitle-text-transform)}.notification-text{color:var(--f7-notification-text-color);font-size:var(--f7-notification-text-font-size);font-weight:var(--f7-notification-text-font-weight);line-height:var(--f7-notification-text-line-height);text-transform:var(--f7-notification-text-text-transform)}.notification-title-right-text{color:var(--f7-notification-title-right-color);font-size:var(--f7-notification-title-right-font-size)}.notification-icon{font-size:0;line-height:var(--f7-notification-icon-size)}.notification-icon,.notification-icon i{height:var(--f7-notification-icon-size)!important;width:var(--f7-notification-icon-size)!important}.notification-icon i{font-size:var(--f7-notification-icon-size)}.notification-icon img{height:var(--f7-notification-icon-size)}.notification-header{align-items:center;display:flex;justify-content:flex-start}.notification-close-button{cursor:pointer;margin-left:auto;position:relative}.notification-close-button:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;left:50%;letter-spacing:normal;line-height:1;position:absolute;text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;white-space:nowrap;width:100%}.ios .notification{transform:translate3d(0,-200%,0);transition-duration:.45s}.ios .notification.modal-in{opacity:1;transform:translateZ(0)}.ios .notification.modal-out{transform:translate3d(0,-200%,0)}.ios .notification-icon{margin-right:8px}.ios .notification-header+.notification-content{margin-top:10px}.ios .notification-title-right-text{margin-left:auto;margin-right:6px}.ios .notification-title-right-text+.notification-close-button{margin-left:10px}.ios .notification-close-button{font-size:14px;height:20px;opacity:.3;transition-duration:.3s;width:20px}.ios .notification-close-button.active-state{opacity:.1;transition-duration:0ms}.ios .notification-close-button:after{color:#000;content:"notification_close_ios";font-size:.65em;height:44px;line-height:44px;margin-left:-22px;margin-top:-22px;width:44px}.ios .dark .notification-close-button:after,.ios.dark .notification-close-button:after{color:#fff}.md .notification{transform:translate3d(0,-150%,0)}.md .notification.modal-in{transform:translateZ(0);transition-duration:.5s;transition-timing-function:cubic-bezier(0,.8,.34,1)}.md .notification.modal-in.notification-transitioning{transition-duration:.2s}.md .notification.modal-out{animation:none;transform:translate3d(0,-150%,0);transition-duration:.2s;transition-timing-function:ease-in}.md .notification-with-icon .notification-icon{left:var(--f7-notification-padding-horizontal);position:absolute;top:var(--f7-notification-padding-vertical)}.md .notification-with-icon .notification-content,.md .notification-with-icon .notification-header{margin-left:calc(var(--f7-notification-icon-size) + 16px)}.md .notification-icon{margin-right:8px}.md .notification-subtitle+.notification-text{margin-top:4px}.md .notification-header+.notification-content{margin-top:8px}.md .notification-title-right-text{margin-left:4px}.md .notification-title-right-text:before{background:var(--f7-notification-title-right-color);border-radius:50%;content:"";display:inline-block;height:3px;margin-right:4px;vertical-align:middle;width:3px}.md .notification-close-button{height:16px;transition-duration:.3s;width:16px}.md .notification-close-button:after,.md .notification-close-button:before{height:48px;left:50%;margin-left:-24px;margin-top:-24px;top:50%;width:48px}.md .notification-close-button:after{color:var(--f7-md-on-surface-variant);content:"delete_round_md";font-size:24px;line-height:48px}@keyframes notification-md-in{0%{transform:translate3d(0,-150%,0)}50%{transform:translate3d(0,10%,0)}to{transform:translateZ(0)}}:root{--f7-autocomplete-dropdown-placeholder-color:#a9a9a9;--f7-autocomplete-dropdown-preloader-size:20px;--f7-autocomplete-dropdown-font-size:var(--f7-list-font-size)}.ios{--f7-autocomplete-dropdown-box-shadow:0px 3px 3px rgba(0,0,0,0.2);--f7-autocomplete-dropdown-text-matching-font-weight:600;--f7-autocomplete-dropdown-bg-color:#fff;--f7-autocomplete-dropdown-text-color:#000;--f7-autocomplete-dropdown-text-matching-color:#000}.ios .dark,.ios.dark{--f7-autocomplete-dropdown-bg-color:#1c1c1d;--f7-autocomplete-dropdown-text-color:#fff;--f7-autocomplete-dropdown-text-matching-color:#fff}.md{--f7-autocomplete-dropdown-box-shadow:none;--f7-autocomplete-dropdown-text-matching-font-weight:500;--f7-autocomplete-dropdown-text-matching-color:#000}.md .dark,.md.dark{--f7-autocomplete-dropdown-text-matching-color:#fff}.md,.md .dark,.md [class*=color-]{--f7-autocomplete-dropdown-bg-color:var(--f7-md-surface-2);--f7-autocomplete-dropdown-text-color:var(--f7-md-on-surface)}.autocomplete-page .autocomplete-found{display:block}.autocomplete-page .autocomplete-not-found{display:none}.autocomplete-page .autocomplete-values{display:block}.autocomplete-page .list ul:empty{display:none}.autocomplete-preloader:not(.autocomplete-preloader-visible){visibility:hidden}.autocomplete-preloader:not(.autocomplete-preloader-visible),.autocomplete-preloader:not(.autocomplete-preloader-visible) *{animation:none}.autocomplete-dropdown{background:var(--f7-autocomplete-dropdown-bg-color);box-shadow:var(--f7-autocomplete-dropdown-box-shadow);box-sizing:border-box;left:0;position:absolute;width:100%;z-index:500}.autocomplete-dropdown .autocomplete-dropdown-inner{-webkit-overflow-scrolling:touch;height:100%;overflow:auto;position:relative;z-index:1}.autocomplete-dropdown .autocomplete-preloader{bottom:100%;display:none;height:var(--f7-autocomplete-dropdown-preloader-size);position:absolute;width:var(--f7-autocomplete-dropdown-preloader-size)}.autocomplete-dropdown .autocomplete-preloader-visible{display:block}.autocomplete-dropdown .autocomplete-dropdown-placeholder{color:var(--f7-autocomplete-dropdown-placeholder-color)}.autocomplete-dropdown .list{color:var(--f7-autocomplete-dropdown-text-color);font-size:var(--f7-autocomplete-dropdown-font-size);margin:0}.autocomplete-dropdown .list b{color:var(--f7-autocomplete-dropdown-text-matching-color);font-weight:var(--f7-autocomplete-dropdown-text-matching-font-weight)}.autocomplete-dropdown .list ul{background:none!important}.autocomplete-dropdown .list ul:after,.autocomplete-dropdown .list ul:before{display:none!important}.autocomplete-dropdown .autocomplete-dropdown-selected{background:var(--f7-autocomplete-dropdown-selected-bg-color,rgba(var(--f7-theme-color-rgb),.2))}.searchbar-input-wrap .autocomplete-dropdown{background-color:var(--f7-searchbar-input-bg-color,var(--f7-searchbar-bg-color));border-radius:var(--f7-searchbar-input-border-radius);margin-top:calc(var(--f7-searchbar-input-height)*-1);top:100%;z-index:-1}.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-inner{padding-top:var(--f7-searchbar-input-height)}.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-placeholder{color:var(--f7-searchbar-placeholder-color)}.searchbar-input-wrap .autocomplete-dropdown li:last-child{border-radius:0 0 var(--f7-searchbar-input-border-radius) var(--f7-searchbar-input-border-radius);overflow:hidden;position:relative}.searchbar-input-wrap .autocomplete-dropdown .item-content{padding-left:calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px))}.ios .autocomplete-dropdown .autocomplete-preloader{margin-bottom:12px;right:16px}.md .autocomplete-page .navbar .autocomplete-preloader{margin-right:8px}.md .autocomplete-popup .navbar .autocomplete-preloader{margin-left:8px;margin-right:16px}.md .autocomplete-dropdown .autocomplete-preloader{margin-bottom:8px;right:16px}.md .autocomplete-dropdown .autocomplete-preloader circle{stroke-width:3}:root{--f7-tooltip-padding:8px 16px;--f7-tooltip-font-size:14px;--f7-tooltip-font-weight:500;--f7-tooltip-desktop-padding:6px 8px;--f7-tooltip-desktop-font-size:12px}.ios{--f7-tooltip-border-radius:4px;--f7-tooltip-bg-color:rgba(0,0,0,0.87);--f7-tooltip-text-color:#fff}.md{--f7-tooltip-border-radius:8px}.md,.md .dark,.md [class*=color-]{--f7-tooltip-bg-color:var(--f7-md-secondary);--f7-tooltip-text-color:var(--f7-md-on-secondary)}.tooltip{background:var(--f7-tooltip-bg-color);border-radius:var(--f7-tooltip-border-radius);box-sizing:border-box;color:var(--f7-tooltip-text-color);font-size:var(--f7-tooltip-font-size);font-weight:var(--f7-tooltip-font-weight);line-height:1.2;opacity:0;padding:var(--f7-tooltip-padding);position:absolute;transform:scale(.9);transition-duration:.15s;transition-property:opacity,transform;z-index:20000;z-index:99000}.tooltip.tooltip-in{opacity:1;transform:scale(1)}.tooltip.tooltip-out{opacity:0;transform:scale(1)}.device-desktop .tooltip{font-size:var(--f7-tooltip-desktop-font-size);padding:var(--f7-tooltip-desktop-padding)}.gauge{display:inline-block;margin-left:auto;margin-right:auto;position:relative;text-align:center}.gauge svg,.gauge-svg{height:auto;max-width:100%}.gauge svg circle,.gauge svg path,.gauge-svg circle,.gauge-svg path{transition-duration:.4s}.skeleton-block{background:var(--skeleton-color)!important;display:block;height:1em;width:100%}@font-face{font-display:block;font-family:skeleton;font-style:normal,italic;font-weight:100,200,300,400,500,600,700,800,900;src:url("data:application/font-woff;charset=utf-8;base64,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") format("woff")}.skeleton-text{font-family:skeleton!important;-webkit-user-select:none;user-select:none}.skeleton-text,.skeleton-text *{color:var(--skeleton-color)!important;letter-spacing:-.03em!important}.skeleton-image{display:inline-block}.skeleton-image svg{height:auto;max-width:100%}.skeleton-image polygon{fill:var(--skeleton-color)}.skeleton-image path{fill:var(--skeleton-icon-color)}.skeleton-avatar{display:inline-block}.skeleton-avatar svg{height:auto;max-width:100%}.skeleton-avatar rect{fill:var(--skeleton-color)}.skeleton-avatar path{fill:var(--skeleton-icon-color)}.skeleton-effect-blink,.skeleton-effect-wave{animation:skeleton-effect-wave 1s infinite;-webkit-mask-image:linear-gradient(90deg,transparent 0,black 25%,black 75%,transparent);mask-image:linear-gradient(90deg,transparent 0,black 25%,black 75%,transparent);-webkit-mask-position:50% top;mask-position:50% top;-webkit-mask-repeat:repeat;mask-repeat:repeat;-webkit-mask-size:200% 100%;mask-size:200% 100%}.skeleton-effect-fade{animation:skeleton-effect-fade 1s infinite}.skeleton-effect-pulse{animation:skeleton-effect-pulse 1s infinite}@keyframes skeleton-effect-fade{0%{opacity:1}50%{opacity:.2}to{opacity:1}}@keyframes skeleton-effect-wave{0%{-webkit-mask-position:50% top;mask-position:50% top}to{-webkit-mask-position:-150% top;mask-position:-150% top}}@keyframes skeleton-effect-pulse{0%{transform:scale(1)}40%{transform:scale(1)}50%{transform:scale(.975)}to{transform:scale(1)}}:root{--skeleton-color:#ccc;--skeleton-icon-color:rgba(0,0,0,0.25)}.dark{--skeleton-color:#515151;--skeleton-icon-color:rgba(255,255,255,0.25)}:root{--f7-color-picker-popover-width:350px;--f7-color-picker-slider-size:6px;--f7-color-picker-slider-knob-size:16px;--f7-color-picker-bar-size:50px;--f7-color-picker-bar-min-height:260px;--f7-color-picker-value-width:64px;--f7-color-picker-value-height:32px;--f7-color-picker-value-font-size:16px;--f7-color-picker-value-border-radius:4px;--f7-color-picker-hex-value-width:84px;--f7-color-picker-label-font-size:14px;--f7-color-picker-label-width:10px;--f7-color-picker-label-height:14px;--f7-color-picker-sb-spectrum-height:260px;--f7-color-picker-sb-spectrum-handle-size:16px;--f7-color-picker-wheel-width:330px;--f7-color-picker-palette-value-width:36px;--f7-color-picker-palette-value-height:36px;--f7-color-picker-initial-current-color-height:40px;--f7-color-picker-initial-current-color-border-radius:4px;--f7-color-picker-sheet-bg-color:#fff;--f7-color-picker-popup-bg-color:#fff;--f7-color-picker-value-bg-color:rgba(0,0,0,0.05);--f7-color-picker-group-bg-color:rgba(0,0,0,0.05);--f7-color-picker-group-value-bg-color:#fff}:root .dark,:root.dark{--f7-color-picker-sheet-bg-color:#121212;--f7-color-picker-popup-bg-color:#121212;--f7-color-picker-value-bg-color:rgba(255,255,255,0.1);--f7-color-picker-group-bg-color:#000;--f7-color-picker-group-value-bg-color:rgba(255,255,255,0.12)}.color-picker{display:flex;flex-direction:column;overflow:hidden;width:100%}.color-picker-popover .color-picker,.color-picker-popup .color-picker,.color-picker.color-picker-inline{position:relative}.color-picker-sheet-modal{background:var(--f7-color-picker-sheet-bg-color)}.color-picker-sheet-modal:before{z-index:600}.color-picker-sheet-modal .sheet-modal-inner{margin-bottom:var(--f7-safe-area-bottom)}.color-picker-popup .page{background:var(--f7-color-picker-popup-bg-color)}.color-picker-popup .page-content{padding-bottom:var(--f7-safe-area-bottom)}.color-picker-page .color-picker,.color-picker-popover .color-picker,.color-picker-popup .color-picker{height:100%}.color-picker-page .color-picker .toolbar,.color-picker-popover .color-picker .toolbar,.color-picker-popup .color-picker .toolbar{position:absolute}.color-picker-popover{max-height:80vh;max-width:90vw;width:var(--f7-color-picker-popover-width)}.md .color-picker-popover .popover-inner{padding:8px}.color-picker-popover .color-picker{max-height:80vh}.color-picker-popover .toolbar-top{border-top-left-radius:var(--f7-popover-border-radius);border-top-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette{flex-shrink:0;overflow:hidden}.color-picker-popover .color-picker-module-palette:first-child{border-top-left-radius:var(--f7-popover-border-radius);border-top-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette:last-child{border-bottom-left-radius:var(--f7-popover-border-radius);border-bottom-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette:first-child:last-child{border-radius:var(--f7-popover-border-radius)}.color-picker-popover .toolbar~.page-content .color-picker-module-palette:first-child{border-top-left-radius:0;border-top-right-radius:0}.color-picker-page .page-content,.color-picker-popover .page-content,.color-picker-popup .page-content,.color-picker-sheet-modal .page-content{align-items:stretch;display:flex;flex-direction:column;justify-content:flex-start;overflow-x:hidden}.color-picker-module{margin-top:5px}.color-picker-module:last-child{margin-bottom:5px}.color-picker-module-hs-spectrum,.color-picker-module-sb-spectrum{margin-left:10px;margin-right:10px}.color-picker-module-hs-spectrum:first-child,.color-picker-module-sb-spectrum:first-child{margin-top:10px}.color-picker-module-hs-spectrum .color-picker-hs-spectrum,.color-picker-module-hs-spectrum .color-picker-sb-spectrum,.color-picker-module-sb-spectrum .color-picker-hs-spectrum,.color-picker-module-sb-spectrum .color-picker-sb-spectrum{height:var(--f7-color-picker-sb-spectrum-height)}.ios .color-picker-module-hs-spectrum .color-picker-hs-spectrum,.ios .color-picker-module-hs-spectrum .color-picker-sb-spectrum,.ios .color-picker-module-sb-spectrum .color-picker-hs-spectrum,.ios .color-picker-module-sb-spectrum .color-picker-sb-spectrum{border-radius:4px}.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum,.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum,.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum,.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum{border-radius:12px}.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum:after,.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum:after,.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum:after,.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum:after{border-radius:inherit}.color-picker-sb-spectrum{background-color:#000;background-image:linear-gradient(180deg,rgba(0,0,0,0) 0,#000),linear-gradient(270deg,rgba(255,255,255,0) 0,#fff);position:relative}.color-picker-hs-spectrum{background-image:linear-gradient(90deg,hsl(0,100%,50%),hsl(60,100%,50%),hsl(120,100%,50%),hsl(180,100%,50%),hsl(240,100%,50%),hsl(300,100%,50%),hsl(0,100%,50%));position:relative}.color-picker-hs-spectrum:after{background-image:linear-gradient(180deg,rgba(255,255,255,0),#ffffff);content:"";height:100%;left:0;position:absolute;top:0;width:100%}.color-picker-hs-spectrum-handle,.color-picker-sb-spectrum-handle{height:4px;left:-2px;position:absolute;top:-2px;width:4px;z-index:1}.color-picker-hs-spectrum-handle:after,.color-picker-sb-spectrum-handle:after{background-color:inherit;border:1px solid #fff;border-radius:50%;box-shadow:0 0 2px rgba(0,0,0,.5);box-sizing:border-box;content:"";height:var(--f7-color-picker-sb-spectrum-handle-size);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);transform-origin:center;transition:.15s;transition-property:transform;width:var(--f7-color-picker-sb-spectrum-handle-size)}.color-picker-hs-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,.color-picker-hs-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after,.color-picker-sb-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,.color-picker-sb-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after{transform:scale(1.5) translate(-33.333%,-33.333%)}.color-picker-module-wheel{margin-left:10px;margin-right:10px}.color-picker-wheel{font-size:0;height:auto;margin-left:auto;margin-right:auto;max-width:100%;position:relative;width:var(--f7-color-picker-wheel-width)}.color-picker-wheel svg{height:auto;width:100%}.color-picker-wheel .color-picker-wheel-handle{background:red;border:2px solid #fff;border-radius:50%;box-shadow:0 0 5px rgba(0,0,0,.5);box-sizing:border-box;height:16.66666667%;left:0;position:absolute;top:0;width:16.66666667%}.color-picker-wheel .color-picker-sb-spectrum{height:45%;left:50%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0);width:45%}.color-picker-slider-wrap{align-items:center;display:flex;margin-bottom:2px}.color-picker-slider-wrap+.color-picker-slider-wrap{margin-top:5px}.color-picker-hex-wrap{align-items:center;display:flex;justify-content:space-between}.color-picker-hex-label,.color-picker-slider-label{flex-shrink:0;font-size:var(--f7-color-picker-label-font-size);margin-right:12px;width:var(--f7-color-picker-label-size)}.color-picker-hex-label{width:auto}.color-picker-bar-value,.color-picker-hex-value,.color-picker-slider-value{align-items:center;background:var(--f7-color-picker-value-bg-color);border-radius:var(--f7-color-picker-value-border-radius);display:flex;flex-shrink:0;font-size:var(--f7-color-picker-value-font-size);height:var(--f7-color-picker-value-height);justify-content:center;margin-left:10px;text-align:center;width:var(--f7-color-picker-value-width)}.color-picker-bar-value input,.color-picker-hex-value input,.color-picker-slider-value input{-webkit-appearance:none;appearance:none;background:transparent;border:none;border-radius:4px;color:inherit;display:block;font-family:inherit;font-size:inherit;height:100%;outline:0;text-align:center;width:100%}.color-picker-bar-value input::-webkit-inner-spin-button,.color-picker-bar-value input::-webkit-outer-spin-button,.color-picker-hex-value input::-webkit-inner-spin-button,.color-picker-hex-value input::-webkit-outer-spin-button,.color-picker-slider-value input::-webkit-inner-spin-button,.color-picker-slider-value input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;display:none;margin:0}.color-picker-hex-value{width:var(--f7-color-picker-hex-value-width)}.color-picker-hex-value:first-child{margin-left:auto}.color-picker-slider{--f7-range-bar-active-bg-color:transparent;--f7-range-bar-size:var(--f7-color-picker-slider-size);--f7-range-bar-border-radius:var(--f7-color-picker-slider-size);--f7-range-knob-size:var(--f7-color-picker-slider-knob-size);--f7-range-knob-box-shadow:0 1px 2px rgba(0,0,0,0.3)}.color-picker-slider .range-knob{transition-duration:.2s;transition-property:transform}.color-picker-slider .range-knob:after{height:30px;margin-left:-16px;margin-top:-16px;width:30px}.color-picker-slider .range-knob-active-state .range-knob{transform:scale(1.5)}.md .color-picker-slider.range-slider-min:not(.range-slider-dual) .range-knob{background:var(--f7-range-knob-color)!important;border:none}.color-picker-module-rgb-bars{align-items:stretch;box-sizing:border-box;display:flex;height:100%;justify-content:space-around;justify-content:space-evenly;min-height:var(--f7-color-picker-bar-min-height);padding-bottom:10px;padding-top:10px}.color-picker-bar-wrap{align-items:center;display:flex;flex-direction:column-reverse}.color-picker-bar{--f7-range-bar-active-bg-color:transparent;--f7-range-bar-size:var(--f7-color-picker-bar-size);--f7-range-bar-border-radius:2px;--f7-range-knob-size:6px;--f7-range-knob-box-shadow:0 0px 3px rgba(0,0,0,0.3);--f7-range-knob-color:#fff}.color-picker-bar .range-knob{border-radius:3px;transition-duration:0ms;transition-property:transform}.color-picker-bar .range-knob-wrap{height:6px;margin-left:calc((var(--f7-color-picker-bar-size) - 4px)*-.5);width:calc(var(--f7-color-picker-bar-size) - 4px)}.color-picker-bar .range-knob-active-state .range-knob{transform:scale(1)}.md .color-picker-bar.range-slider-min:not(.range-slider-dual) .range-knob{background:var(--f7-range-knob-color)!important;border:none}.color-picker-bar-label{flex-shrink:0;font-size:var(--f7-color-picker-label-size);height:var(--f7-color-picker-label-height);line-height:1;margin-top:12px}.color-picker-bar-value{margin-bottom:10px;margin-left:0}.color-picker-slider-alpha{--f7-range-knob-color:#fff}.color-picker-slider-alpha .range-bar{background-image:linear-gradient(90deg,rgba(0,0,0,0),#000),linear-gradient(90deg,rgba(255,255,255,.2) 50%,rgba(0,0,0,.2) 0),linear-gradient(270deg,rgba(255,255,255,.2) 50%,rgba(0,0,0,.2) 0);background-position:0 0,0 3px,0 0;background-repeat:repeat-y,repeat-x,repeat-x;background-size:100% 100%,6px 3px,6px 3px}.color-picker-slider-hue .range-bar{background-image:linear-gradient(90deg,hsl(0,100%,50%),hsl(60,100%,50%),hsl(120,100%,50%),hsl(180,100%,50%),hsl(240,100%,50%),hsl(300,100%,50%),hsl(0,100%,50%))}.color-picker-slider-brightness .range-bar{background-image:linear-gradient(90deg,#000,#fff)}.color-picker-module-palette{margin-top:16px}.color-picker-module-palette:first-child{margin-top:0}.color-picker-module-palette:last-child{margin-bottom:0}.color-picker-module-palette:first-child:last-child{margin:0}.color-picker-palette{display:flex;flex-wrap:wrap}.color-picker-palette-row{display:flex;flex-wrap:nowrap;width:100%}.color-picker-palette-row .color-picker-palette-value{width:100%}.color-picker-palette-value{cursor:pointer;height:var(--f7-color-picker-palette-value-height);width:var(--f7-color-picker-palette-value-width)}.color-picker-module-current-color,.color-picker-module-initial-current-colors{border-radius:var(--f7-color-picker-initial-current-color-border-radius);flex-shrink:0;margin-left:10px;margin-right:10px;overflow:hidden}.color-picker-current-color,.color-picker-initial-color{height:var(--f7-color-picker-initial-current-color-height)}.color-picker-initial-current-colors{display:flex}.color-picker-initial-current-colors .color-picker-current-color,.color-picker-initial-current-colors .color-picker-initial-color{width:50%}.color-picker-module-alpha-slider,.color-picker-module-brightness-slider,.color-picker-module-hex,.color-picker-module-hsb-sliders,.color-picker-module-hue-slider,.color-picker-module-rgb-sliders{margin-left:10px;margin-right:10px}.color-picker-grouped-modules .color-picker-module-alpha-slider,.color-picker-grouped-modules .color-picker-module-brightness-slider,.color-picker-grouped-modules .color-picker-module-hex,.color-picker-grouped-modules .color-picker-module-hsb-sliders,.color-picker-grouped-modules .color-picker-module-hue-slider,.color-picker-grouped-modules .color-picker-module-rgb-sliders{background:var(--f7-color-picker-group-bg-color);border-radius:8px;margin-left:8px;margin-right:8px;margin-top:16px;padding:8px}.color-picker-grouped-modules .color-picker-module-alpha-slider:last-child,.color-picker-grouped-modules .color-picker-module-brightness-slider:last-child,.color-picker-grouped-modules .color-picker-module-hex:last-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders:last-child,.color-picker-grouped-modules .color-picker-module-hue-slider:last-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders:last-child{margin-bottom:16px}.color-picker-grouped-modules .color-picker-hex-value,.color-picker-grouped-modules .color-picker-slider-value{background:var(--f7-color-picker-group-value-bg-color)}.color-picker-grouped-modules .color-picker-hex-label,.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:first-child,.color-picker-grouped-modules .color-picker-slider-label{margin-left:5px}.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:last-child{margin-right:5px}:root{--f7-treeview-item-height:34px;--f7-treeview-item-padding-left:16px;--f7-treeview-item-padding-right:16px;--f7-treeview-toggle-size:24px;--f7-treeview-children-offset:29px;--f7-treeview-label-font-weight:400;--f7-treeview-label-text-color:inherit;--f7-treeview-icon-size:24px;--f7-treeview-toggle-color:rgba(0,0,0,0.5);--f7-treeview-toggle-hover-bg-color:rgba(0,0,0,0.1);--f7-treeview-toggle-pressed-bg-color:rgba(0,0,0,0.15);--f7-treeview-icon-color:rgba(0,0,0,0.5);--f7-treeview-selectable-hover-bg-color:rgba(0,0,0,0.1);--f7-treeview-link-hover-bg-color:rgba(0,0,0,0.1);--f7-treeview-link-pressed-bg-color:rgba(0,0,0,0.15)}:root .dark,:root.dark{--f7-treeview-toggle-color:rgba(255,255,255,0.5);--f7-treeview-toggle-hover-bg-color:rgba(255,255,255,0.03);--f7-treeview-toggle-pressed-bg-color:rgba(255,255,255,0.1);--f7-treeview-icon-color:rgba(255,255,255,0.75);--f7-treeview-selectable-hover-bg-color:rgba(255,255,255,0.03);--f7-treeview-link-hover-bg-color:rgba(255,255,255,0.03);--f7-treeview-link-pressed-bg-color:rgba(255,255,255,0.11)}.ios{--f7-treeview-label-font-size:17px}.md{--f7-treeview-label-font-size:16px}.treeview-item-root{min-height:var(--f7-treeview-item-height);padding-left:var(--f7-treeview-item-padding-left);padding-right:var(--f7-treeview-item-padding-right)}.treeview-item-content,.treeview-item-root{align-items:center;display:flex;justify-content:flex-start}.treeview-item-content>.f7-icons,.treeview-item-content>.material-icons,.treeview-item-content>i{color:var(--f7-treeview-icon-color);font-size:var(--f7-treeview-icon-size)}.treeview-item-content:first-child{margin-left:calc(var(--f7-treeview-toggle-size) + 5px)}.treeview-item-content>*+*{margin-left:5px}.treeview-item-label{color:var(--f7-treeview-label-text-color);font-size:var(--f7-treeview-label-font-size);font-weight:var(--f7-treeview-label-font-weight)}.treeview-toggle{background-color:rgba(0,0,0,0);border-radius:4px;cursor:pointer;height:var(--f7-treeview-toggle-size);margin-right:5px;position:relative;transition-duration:.2s;width:var(--f7-treeview-toggle-size)}.treeview-toggle.active-state{background-color:var(--f7-treeview-toggle-pressed-bg-color)}.treeview-toggle:after{border-bottom:5px solid transparent;border-left:6px solid var(--f7-treeview-toggle-color);border-top:5px solid transparent;content:"";height:0;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);transition-duration:.2s;width:0}.treeview-toggle-hidden{opacity:0;pointer-events:none;visibility:hidden}.treeview-preloader{--f7-preloader-size:var(--f7-treeview-toggle-size);margin-right:calc(var(--f7-treeview-toggle-size)*-1)}.treeview-item-children{display:none}.treeview-item-opened>.treeview-item-children{display:block}.treeview-item-opened>.treeview-item-root .treeview-toggle:after{transform:translate(-50%,-50%) rotate(90deg)}a.treeview-item-root{color:var(--f7-treeview-label-text-color)}.treeview-item-selectable.treeview-item-root,.treeview-item-selectable>.treeview-item-root{cursor:pointer;transition-duration:.15s}a.treeview-item-root{transition-duration:.15s}a.treeview-item-root.active-state{background:var(--f7-treeview-link-pressed-bg-color)}.treeview-item-toggle.treeview-item-root,.treeview-item-toggle>.treeview-item-root{cursor:pointer}.treeview-item-selected.treeview-item-root,.treeview-item-selected>.treeview-item-root{background:var(--f7-treeview-selectable-selected-bg-color,rgba(var(--f7-theme-color-rgb),.2))}.treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*1)}.treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*2)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*3)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*4)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*5)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*6)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*7)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*8)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*9)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*10)}:root{--f7-text-editor-font-size:inherit;--f7-text-editor-font-weight:inherit;--f7-text-editor-border-width:1px;--f7-text-editor-height:250px;--f7-text-editor-margin:16px;--f7-text-editor-padding:8px;--f7-text-editor-button-bg-color:transparent;--f7-text-editor-button-size:28px;--f7-text-editor-button-icon-size:20px;--f7-text-editor-button-margin:2px;--f7-text-editor-text-color:#000;--f7-text-editor-bg-color:#fff;--f7-text-editor-button-divider-color:rgba(0,0,0,0.15)}:root .dark,:root.dark{--f7-text-editor-bg-color:#121212;--f7-text-editor-text-color:#fff;--f7-text-editor-button-divider-color:rgba(255,255,255,0.15)}.ios{--f7-text-editor-toolbar-padding:6px;--f7-text-editor-button-border-radius:2px;--f7-text-editor-placeholder-color:rgba(0,0,0,0.35);--f7-text-editor-toolbar-border-color:rgba(0,0,0,0.25);--f7-text-editor-toolbar-bg-color:#fff;--f7-text-editor-border-color:rgba(0,0,0,0.1);--f7-text-editor-button-text-color:#333}.ios .dark,.ios.dark{--f7-text-editor-placeholder-color:rgba(255,255,255,0.35);--f7-text-editor-toolbar-bg-color:#121212;--f7-text-editor-toolbar-border-color:rgba(255,255,255,0.1);--f7-text-editor-toolbar-bg-color:#202020;--f7-text-editor-border-color:rgba(255,255,255,0.1);--f7-text-editor-button-text-color:#fff}.md{--f7-text-editor-button-border-radius:8px;--f7-text-editor-toolbar-padding:8px}.md,.md .dark,.md [class*=color-]{--f7-text-editor-placeholder-color:var(--f7-md-on-surface-variant);--f7-text-editor-toolbar-bg-color:var(--f7-md-surface-1);--f7-text-editor-border-color:var(--f7-md-outline);--f7-text-editor-button-text-color:var(--f7-md-on-surface)}.text-editor{align-items:stretch;background-color:var(--f7-text-editor-bg-color);border:var(--f7-text-editor-border-width) solid var(--f7-text-editor-border-color);box-sizing:border-box;display:block;display:flex;flex-direction:column;height:var(--f7-text-editor-height);margin:var(--f7-text-editor-margin);position:relative}.text-editor.text-editor-resizable{height:auto}.text-editor-toolbar{background:var(--f7-text-editor-toolbar-bg-color);box-sizing:border-box;display:flex;flex-shrink:0;flex-wrap:wrap;left:0;padding:var(--f7-text-editor-toolbar-padding);position:relative;position:sticky;top:0;z-index:100}.text-editor-toolbar:after{background-color:var(--f7-text-editor-toolbar-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}button.text-editor-button{align-items:center;-webkit-appearance:none;appearance:none;background:transparent;background-color:var(--f7-text-editor-button-bg-color);border:none;border-radius:var(--f7-text-editor-button-border-radius);box-shadow:none;box-sizing:border-box;color:var(--f7-text-editor-button-text-color);cursor:pointer;display:flex;flex-shrink:0;font-family:inherit;height:var(--f7-text-editor-button-size);justify-content:center;margin:0;margin:var(--f7-text-editor-button-margin);outline:0;overflow:hidden;padding:0;position:relative;width:auto;width:var(--f7-text-editor-button-size);z-index:1}button.text-editor-button .f7-icons,button.text-editor-button .material-icons,button.text-editor-button i{font-size:var(--f7-text-editor-button-icon-size);font-style:normal}button.text-editor-button .f7-icons sub,button.text-editor-button .f7-icons sup,button.text-editor-button .material-icons sub,button.text-editor-button .material-icons sup,button.text-editor-button i sub,button.text-editor-button i sup{font-size:60%}.text-editor-button-divider{background:var(--f7-text-editor-button-divider-color);flex-shrink:0;margin:0 2px;width:1px}.text-editor-content{-webkit-user-modify:read-write;-webkit-appearance:none;appearance:none;border:none;box-sizing:border-box;color:var(--f7-text-editor-text-color);flex-shrink:10;font-size:var(--f7-text-editor-font-size);font-weight:var(--f7-text-editor-font-weight);height:100%;outline:0;overflow:auto;padding:var(--f7-text-editor-padding);-webkit-user-select:text;user-select:text}.text-editor-content .text-editor-placeholder{color:var(--f7-text-editor-placeholder-color);pointer-events:none}.text-editor-content img{max-width:100%}.text-editor-content a{pointer-events:none}.text-editor-popover{max-width:80vw;width:auto;z-index:12500}.text-editor-popover .popover-inner{display:flex;flex-wrap:wrap;padding:3px}.text-editor-keyboard-toolbar{--f7-safe-area-bottom:0px;position:absolute;z-index:6000}.text-editor-keyboard-toolbar .toolbar-inner{-webkit-overflow-scrolling:touch;justify-content:flex-start!important;overflow:auto;scrollbar-color:transparent;scrollbar-width:none}.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-track{background:transparent;box-shadow:none}.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.text-editor-keyboard-toolbar .toolbar-inner .text-editor-button-divider{height:100%}.item-input .text-editor{background-color:var(--f7-input-bg-color,transparent);border:none;margin:0}.item-input .text-editor-content{color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);padding:var(--f7-textarea-padding-vertical) var(--f7-input-padding-right) var(--f7-textarea-padding-vertical) var(--f7-input-padding-left)}.item-input .text-editor-toolbar{box-shadow:none}.item-input .text-editor-toolbar:after{display:none!important}.item-input-outline .text-editor-content{border-radius:var(--f7-input-outline-border-radius)}.ios button.text-editor-button{transition:opacity .3s}.ios button.text-editor-button.active-state{opacity:.3;transition-duration:0ms}.md button.text-editor-button{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25)}.md .text-editor-keyboard-toolbar .toolbar-inner{padding-left:8px;padding-right:8px}.pie-chart{position:relative}.pie-chart svg{display:block;font-size:0;height:auto;margin:0 auto;width:100%}.pie-chart path{transition-duration:.15s}.pie-chart-hidden{opacity:.4}.pie-chart-tooltip{font-size:12px;line-height:1.4;max-width:none;pointer-events:none;text-align:left;white-space:nowrap;width:auto}.pie-chart-tooltip-label{align-items:center;display:flex}.pie-chart-tooltip-color{border-radius:50%;display:inline-block;height:10px;margin-right:4px;width:10px}:root{--f7-area-chart-current-line-stroke-width:2px;--f7-area-chart-current-line-stroke:rgba(0,0,0,0.15);--f7-area-chart-axis-text-color:inherit;--f7-area-chart-axis-height:1px;--f7-area-chart-axis-font-size:10px;--f7-area-chart-axis-font-weight:500;--f7-area-chart-tooltip-font-size:12px;--f7-area-chart-tooltip-total-font-size:16px;--f7-area-chart-tooltip-total-font-weight:bold;--f7-area-chart-tooltip-color-size:10px;--f7-area-chart-legend-font-size:14px;--f7-area-chart-legend-font-weight:500;--f7-area-chart-legend-text-color:inherit;--f7-area-chart-legend-padding:4px 8px;--f7-area-chart-legend-border-radius:4px;--f7-area-chart-legend-color-size:14px;--f7-area-chart-line-stroke-width:2px;--f7-area-chart-axis-bg-color:rgba(0,0,0,0.15);--f7-area-chart-legend-disabled-text-color:rgba(0,0,0,0.22)}:root .dark,:root.dark{--f7-area-chart-axis-bg-color:rgba(255,255,255,0.15);--f7-area-chart-legend-disabled-text-color:rgba(255,255,255,0.22)}.ios{--f7-area-chart-tooltip-total-label-text-color:rgba(255,255,255,0.75)}.md{--f7-area-chart-tooltip-total-label-text-color:inherit}.area-chart{position:relative}.area-chart svg{display:block;font-size:0;height:auto;margin:0 auto;width:100%}.area-chart path{fill:none;stroke-width:var(--f7-area-chart-line-stroke-width)}.area-chart-current-line{stroke:var(--f7-area-chart-current-line-stroke);stroke-width:var(--f7-area-chart-current-line-stroke-width)}.area-chart-axis{background:var(--f7-area-chart-axis-bg-color);color:var(--f7-area-chart-axis-text-color);display:flex;font-size:var(--f7-area-chart-axis-font-size);font-weight:var(--f7-area-chart-axis-font-weight);height:var(--f7-area-chart-axis-height);justify-content:space-between;line-height:1;margin-bottom:2em}.area-chart-axis>span{align-items:flex-start;display:flex;justify-content:center;padding-top:10px;white-space:nowrap;width:0}.area-chart-axis>span:first-child{justify-content:flex-start}.area-chart-axis>span:last-child{justify-content:flex-end}.area-chart-tooltip{font-size:var(--f7-area-chart-tooltip-font-size);line-height:1.4;pointer-events:none;text-align:left}.area-chart-tooltip-label{color:var(--f7-area-chart-tooltip-total-label-text-color)}.area-chart-tooltip-total{font-size:var(--f7-area-chart-tooltip-total-font-size);font-weight:var(--f7-area-chart-tooltip-total-font-weight)}.area-chart-tooltip-list{list-style:none;margin:0;padding:0}.area-chart-tooltip-list li{white-space:nowrap}.area-chart-tooltip-list span{border-radius:50%;display:inline-block;height:var(--f7-area-chart-tooltip-color-size);margin-right:4px;width:var(--f7-area-chart-tooltip-color-size)}.area-chart-axis~.area-chart-legend{margin-top:2em}.area-chart-legend{align-items:center;display:flex;flex-wrap:wrap;font-size:var(--f7-area-chart-legend-font-size);justify-content:center;margin-top:1em;width:100%}.area-chart-legend-button{-webkit-appearance:none!important;appearance:none!important;background-color:initial;border:none;border-radius:0;box-shadow:none!important;cursor:pointer;font-family:inherit;font-size:inherit;outline:0!important}.area-chart-legend-item{align-items:center;border-radius:var(--f7-area-chart-legend-border-radius);color:var(--f7-area-chart-legend-text-color);display:flex;font-weight:var(--f7-area-chart-legend-font-weight);overflow:hidden;padding:var(--f7-area-chart-legend-padding);position:relative;transition-duration:.2s;width:auto}.area-chart-legend-item span{border-radius:50%;height:var(--f7-area-chart-legend-color-size);margin-right:4px;transition-duration:.2s;width:var(--f7-area-chart-legend-color-size)}.area-chart-legend-item-hidden{color:var(--f7-area-chart-legend-disabled-text-color)}.area-chart-legend-item-hidden span{background-color:var(--f7-area-chart-legend-disabled-text-color)!important}:root{--f7-breadcrumbs-spacing:12px;--f7-breadcrumbs-padding:2px 0;--f7-breadcrumbs-icon-size:24px;--f7-breadcrumbs-separator-color:rgba(0,0,0,0.35)}:root .dark,:root.dark{--f7-breadcrumbs-separator-color:rgba(255,255,255,0.35)}.ios{--f7-breadcrumbs-item-bg-color:transparent;--f7-breadcrumbs-collapsed-border-radius:4px;--f7-breadcrumbs-collapsed-padding:0px 6px;--f7-breadcrumbs-separator-icon:"chevron_right_ios";--f7-breadcrumbs-font-size:17px;--f7-breadcrumbs-item-border-radius:0px;--f7-breadcrumbs-item-padding:0px;--f7-breadcrumbs-item-font-weight:normal;--f7-breadcrumbs-item-active-font-weight:600;--f7-breadcrumbs-item-color:rgba(0,0,0,0.55);--f7-breadcrumbs-item-active-color:#000;--f7-breadcrumbs-collapsed-bg-color:rgba(0,0,0,0.15);--f7-breadcrumbs-collapsed-color:rgba(0,0,0,0.75)}.ios .dark,.ios.dark{--f7-breadcrumbs-item-color:rgba(255,255,255,0.75);--f7-breadcrumbs-item-active-color:#fff;--f7-breadcrumbs-collapsed-bg-color:rgba(255,255,255,0.15);--f7-breadcrumbs-collapsed-color:rgba(255,255,255,0.75)}.md{--f7-breadcrumbs-collapsed-border-radius:8px;--f7-breadcrumbs-collapsed-padding:12px 8px;--f7-breadcrumbs-separator-icon:"chevron_right_md";--f7-breadcrumbs-font-size:14px;--f7-breadcrumbs-item-border-radius:8px;--f7-breadcrumbs-item-padding:4px 8px;--f7-breadcrumbs-item-font-weight:500;--f7-breadcrumbs-item-active-font-weight:500}.md,.md .dark,.md [class*=color-]{--f7-breadcrumbs-item-color:var(--f7-theme-color);--f7-breadcrumbs-item-bg-color:var(--f7-md-secondary-container);--f7-breadcrumbs-item-active-color:var(--f7-md-on-secondary-container);--f7-breadcrumbs-collapsed-color:var(--f7-theme-color);--f7-breadcrumbs-collapsed-bg-color:var(--f7-md-secondary-container)}.breadcrumbs{align-items:center;display:flex;font-size:var(--f7-breadcrumbs-font-size);justify-content:flex-start;overflow:auto;padding:var(--f7-breadcrumbs-padding);scrollbar-color:transparent;scrollbar-width:none;white-space:nowrap}.breadcrumbs::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.breadcrumbs::-webkit-scrollbar-track{background:transparent;box-shadow:none}.breadcrumbs::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.breadcrumbs-collapsed,.breadcrumbs-item,.breadcrumbs-separator{--f7-touch-ripple-color:transparent!important;flex-shrink:0}.breadcrumbs-collapsed+.breadcrumbs-collapsed,.breadcrumbs-collapsed+.breadcrumbs-item,.breadcrumbs-collapsed+.breadcrumbs-separator,.breadcrumbs-item+.breadcrumbs-collapsed,.breadcrumbs-item+.breadcrumbs-item,.breadcrumbs-item+.breadcrumbs-separator,.breadcrumbs-separator+.breadcrumbs-collapsed,.breadcrumbs-separator+.breadcrumbs-item,.breadcrumbs-separator+.breadcrumbs-separator{margin-left:var(--f7-breadcrumbs-spacing)}.breadcrumbs-item{align-items:center;background-color:var(--f7-breadcrumbs-item-bg-color);border-radius:var(--f7-breadcrumbs-item-border-radius);color:var(--f7-breadcrumbs-item-color);display:flex;font-weight:var(--f7-breadcrumbs-item-font-weight);padding:var(--f7-breadcrumbs-item-padding)}.breadcrumbs-item .icon{font-size:var(--f7-breadcrumbs-icon-size);height:var(--f7-breadcrumbs-icon-size);width:var(--f7-breadcrumbs-icon-size)}.breadcrumbs-item a{--f7-touch-ripple-color:transparent!important;color:inherit}.breadcrumbs-item-active{color:var(--f7-breadcrumbs-item-active-color,var(--f7-breadcrumbs-item-color));font-weight:var(--f7-breadcrumbs-item-active-font-weight)}.breadcrumbs-separator{align-items:center;color:var(--f7-breadcrumbs-separator-color);display:flex;height:24px;overflow:hidden}.breadcrumbs-separator:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";content:var(--f7-breadcrumbs-separator-icon);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%;width:12px}.ios .breadcrumbs-separator:after{font-size:12px;height:11px}.md .breadcrumbs-separator:after{font-size:18px;height:18px}.breadcrumbs-collapsed{align-items:center;background:var(--f7-breadcrumbs-collapsed-bg-color);border-radius:var(--f7-breadcrumbs-collapsed-border-radius);cursor:pointer;display:flex;min-height:1em;padding:var(--f7-breadcrumbs-collapsed-padding)}.breadcrumbs-collapsed span,.breadcrumbs-collapsed:after,.breadcrumbs-collapsed:before{background:var(--f7-breadcrumbs-collapsed-color);border-radius:50%;content:"";height:4px;width:4px}.breadcrumbs-collapsed span{margin:0 3px}:root{--f7-typography-padding:16px;--f7-typography-margin:16px}.display-flex{display:flex!important}.display-block{display:block!important}.display-inline-flex{display:inline-flex!important}.display-inline-block{display:inline-block!important}.display-inline{display:inline!important}.display-none{display:none!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-shrink-2{flex-shrink:2!important}.flex-shrink-3{flex-shrink:3!important}.flex-shrink-4{flex-shrink:4!important}.flex-shrink-5{flex-shrink:5!important}.flex-shrink-6{flex-shrink:6!important}.flex-shrink-7{flex-shrink:7!important}.flex-shrink-8{flex-shrink:8!important}.flex-shrink-9{flex-shrink:9!important}.flex-shrink-10{flex-shrink:10!important}.flex-direction-row{flex-direction:row!important}.flex-direction-row-reverse{flex-direction:row-reverse!important}.flex-direction-column{flex-direction:column!important}.flex-direction-column-reverse{flex-direction:column-reverse!important}.justify-content-flex-start{justify-content:flex-start!important}.justify-content-center{justify-content:center!important}.justify-content-flex-end{justify-content:flex-end!important}.justify-content-space-between{justify-content:space-between!important}.justify-content-space-around{justify-content:space-around!important}.justify-content-space-evenly{justify-content:space-evenly!important}.justify-content-stretch{justify-content:stretch!important}.justify-content-start{justify-content:start!important}.justify-content-end{justify-content:end!important}.justify-content-left{justify-content:left!important}.justify-content-right{justify-content:right!important}.align-content-flex-start{align-content:flex-start!important}.align-content-flex-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-space-between{align-content:space-between!important}.align-content-space-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-items-baseline{align-items:baseline!important}.align-items-flex-start{align-items:flex-start!important}.align-items-flex-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-stretch{align-items:stretch!important}.align-self-flex-start{align-self:flex-start!important}.align-self-flex-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-stretch{align-self:stretch!important}.text-align-left{text-align:left!important}.text-align-center{text-align:center!important}.text-align-right{text-align:right!important}.text-align-justify{text-align:justify!important}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}.vertical-align-bottom{vertical-align:bottom!important}.vertical-align-middle{vertical-align:middle!important}.vertical-align-top{vertical-align:top!important}.no-padding{padding:0!important}.no-padding-left{padding-left:0!important}.no-padding-horizontal,.no-padding-right{padding-right:0!important}.no-padding-horizontal{padding-left:0!important}.no-padding-top{padding-top:0!important}.no-padding-bottom,.no-padding-vertical{padding-bottom:0!important}.no-padding-vertical{padding-top:0!important}.no-margin{margin:0!important}.no-margin-left{margin-left:0!important}.no-margin-horizontal,.no-margin-right{margin-right:0!important}.no-margin-horizontal{margin-left:0!important}.no-margin-top{margin-top:0!important}.no-margin-bottom,.no-margin-vertical{margin-bottom:0!important}.no-margin-vertical{margin-top:0!important}.width-auto{width:auto!important}.width-100{width:100%!important}.padding{padding:var(--f7-typography-padding)!important}.padding-half{padding:calc(var(--f7-typography-padding)/2)!important}.padding-top{padding-top:var(--f7-typography-padding)!important}.padding-top-half{padding-top:calc(var(--f7-typography-padding)/2)!important}.padding-bottom{padding-bottom:var(--f7-typography-padding)!important}.padding-bottom-half{padding-bottom:calc(var(--f7-typography-padding)/2)!important}.padding-left{padding-left:var(--f7-typography-padding)!important}.padding-left-half{padding-left:calc(var(--f7-typography-padding)/2)!important}.padding-right{padding-right:var(--f7-typography-padding)!important}.padding-right-half{padding-right:calc(var(--f7-typography-padding)/2)!important}.padding-vertical{padding-bottom:var(--f7-typography-padding)!important;padding-top:var(--f7-typography-padding)!important}.padding-vertical-half{padding-bottom:calc(var(--f7-typography-padding)/2)!important;padding-top:calc(var(--f7-typography-padding)/2)!important}.padding-horizontal{padding-left:var(--f7-typography-padding)!important;padding-right:var(--f7-typography-padding)!important}.padding-horizontal-half{padding-left:calc(var(--f7-typography-padding)/2)!important;padding-right:calc(var(--f7-typography-padding)/2)!important}.margin{margin:var(--f7-typography-margin)!important}.margin-half{margin:calc(var(--f7-typography-margin)/2)!important}.margin-top{margin-top:var(--f7-typography-margin)!important}.margin-top-half{margin-top:calc(var(--f7-typography-margin)/2)!important}.margin-bottom{margin-bottom:var(--f7-typography-margin)!important}.margin-bottom-half{margin-bottom:calc(var(--f7-typography-margin)/2)!important}.margin-left{margin-left:var(--f7-typography-margin)!important}.margin-left-half{margin-left:calc(var(--f7-typography-margin)/2)!important}.margin-right{margin-right:var(--f7-typography-margin)!important}.margin-right-half{margin-right:calc(var(--f7-typography-margin)/2)!important}.margin-vertical{margin-bottom:var(--f7-typography-margin)!important;margin-top:var(--f7-typography-margin)!important}.margin-vertical-half{margin-bottom:calc(var(--f7-typography-margin)/2)!important;margin-top:calc(var(--f7-typography-margin)/2)!important}.margin-horizontal{margin-left:var(--f7-typography-margin)!important;margin-right:var(--f7-typography-margin)!important}.margin-horizontal-half{margin-left:calc(var(--f7-typography-margin)/2)!important;margin-right:calc(var(--f7-typography-margin)/2)!important}[class*=text-color-]{color:var(--f7-theme-color-text-color)!important}[class*=bg-color-]{background-color:var(--f7-theme-color-bg-color)!important}[class*=border-color-]{border-color:var(--f7-theme-color-border-color)!important} +/*# sourceMappingURL=../../documenteditor/mobile/css/framework7.css.map */ +/*# sourceMappingURL=framework7.css.map*/ \ No newline at end of file diff --git a/apps/documenteditor/mobile/css/framework7.css.map b/apps/documenteditor/mobile/css/framework7.css.map new file mode 100644 index 0000000000..88070d628d --- /dev/null +++ b/apps/documenteditor/mobile/css/framework7.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://documenteditor/../../documenteditor/mobile/css/framework7.css"],"names":[],"mappings":"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AClB,SAGF,CACA,qGAGE,sDACF,CACA,mIAGE,gEACF,CACA,gKAIE,mBACF,CACA,oBASE,sGAAkI,CADlI,UAAW,CALX,UAAW,CAEX,UAKF,CACA,yCAPE,QAAS,CAET,UAAW,CACX,SAAU,CANV,iBAAkB,CAClB,KAmBF,CAVA,qBAIE,yBAA8B,CAF9B,MAAO,CAGP,UAAW,CAIX,aACF,CACA,oBACE,+BACF,CACA,gBACE,+BACF,CAOA,0GACE,SACF,CACA,2CACE,8EACF,CACA,kDAUE,8EAA+E,CAD/E,sGAAkI,CALlI,QAAS,CAET,UAAW,CACX,SAAU,CANV,iBAAkB,CAOlB,UAAW,CANX,KAAM,CACN,UAAW,CAEX,UAMF,CACA,8CACE,kFACF,CACA,oDAUE,8EAA+E,CAN/E,yBAA8B,CAE9B,QAAS,CACT,UAAW,CALX,MAAO,CAMP,SAAU,CAPV,iBAAkB,CAElB,KAAM,CAEN,UAAW,CAIX,aAEF,CACA,gDACE,kFACF,CACA,sDAUE,+EAAgF,CANhF,yBAA8B,CAE9B,QAAS,CACT,UAAW,CALX,MAAO,CAMP,SAAU,CAPV,iBAAkB,CAElB,KAAM,CAEN,UAAW,CAIX,aAEF,CACA,+CACE,8EACF,CACA,sDAUE,+EAAgF,CADhF,sGAAkI,CALlI,QAAS,CAET,UAAW,CACX,SAAU,CANV,iBAAkB,CAOlB,UAAW,CANX,KAAM,CACN,UAAW,CAEX,UAMF,CACA,oCACE,GACE,+BACF,CACA,GACE,uBACF,CACF,CACA,wCACE,GACE,+BACF,CACA,GACE,uBACF,CACF,CACA,wCACE,GACE,uBACF,CACA,GACE,+BACF,CACF,CACA,oCACE,GACE,uBACF,CACA,GACE,+BACF,CACF,CACA,oCACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,qCACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,mBACE,gCACF,CACA,eAGE,SAAU,CAFV,mBAAoB,CACpB,gCAEF,CACA,kCAEE,SAAU,CADV,+BAEF,CACA,0CAEE,qGAA2G,CAD3G,SAEF,CACA,6CACE,yGACF,CACA,8CACE,qMACF,CACA,+CACE,iFACF,CACA,mCACE,GACE,gCACF,CACA,GACE,uBACF,CACF,CACA,mCACE,GACE,uBACF,CACA,GACE,gCACF,CACF,CACA,2CACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,uCACE,GACE,uBACF,CACA,GACE,gCACF,CACF,CACA,uCACE,GACE,gCACF,CACA,GACE,uBACF,CACF,CAIA,0GACE,YACF,CACA,oEAGE,wBAAyB,CACzB,8BAA+B,CAC/B,wFAAyF,CAHzF,iCAIF,CACA,kFAGE,uBAAwB,CACxB,6BAA8B,CAC9B,gCAAiC,CAHjC,8CAIF,CACA,8DACE,MAAO,CACP,OAAQ,CACR,UACF,CACA,iCAGE,mBAAoB,CADpB,cAAe,CADf,SAGF,CACA,+EAEE,YACF,CACA,mDACE,cACF,CACA,8KAIE,SAAU,CACV,cACF,CACA,6HAEE,cACF,CACA,YAcE,qBAAsB,CATtB,qCAAsC,CAEtC,wCAAyC,CACzC,4CAA6C,CAF7C,kDAAmD,CAGnD,4CAA6C,CAM7C,eAAgB,CAFhB,2NAAqD,CAZrD,iBAAkB,CAElB,sBAAuB,CACvB,kBAAmB,CAYnB,UAAW,CAdX,UAeF,CACA,uFAUE,kCAAmC,CARnC,UAAW,CAKX,cAAe,CAHf,QAAS,CAIT,mBAAoB,CACpB,kBAAmB,CANnB,iBAAkB,CAElB,OAAQ,CACR,aAAc,CAKd,WACF,CACA,uFAEE,mBACF,CACA,2CAGE,0CAA6C,CAD7C,iBAAkB,CADlB,kBAGF,CACA,yGAIE,gDAAmD,CACnD,mBAAsB,CAHtB,SAAU,CACV,mBAAqB,CAGrB,WACF,CACA,4CACE,2CAA8C,CAC9C,oBACF,CACA,iHAEE,gDAAmD,CACnD,WACF,CACA,+BACE,GAEE,iBAAkB,CADlB,kBAEF,CACA,IACE,iBACF,CACA,GAEE,eAAiB,CADjB,kBAEF,CACF,CACA,gCACE,GAEE,eAAiB,CADjB,kBAEF,CACA,IACE,iBACF,CACA,GAEE,iBAAkB,CADlB,kBAEF,CACF,CACA,qCACE,GAEE,SAAU,CADV,mBAEF,CACA,IAEE,SAAU,CADV,sBAEF,CACA,GAEE,SAAU,CADV,kBAEF,CACF,CACA,qCACE,GAEE,SAAU,CADV,kBAEF,CACA,IAEE,SAAU,CADV,sBAEF,CACA,IAEE,SAAU,CADV,mBAEF,CACA,GAEE,SAAU,CADV,mBAEF,CACF,CACA,6EAEE,eAAgB,CAChB,kBACF,CACA,yFAEE,mBACF,CACA,iDACE,sFACF,CACA,oDACE,sFACF,CACA,qDACE,sFACF,CACA,sDACE,sFACF,CACA,sCACE,GACE,0BACF,CACA,GACE,uBACF,CACF,CACA,sCACE,GACE,uBACF,CACA,GACE,0BACF,CACF,CACA,sCACE,GAEE,SAAU,CADV,uBAEF,CACA,GAEE,UAAY,CADZ,4BAEF,CACF,CACA,sCACE,GAEE,UAAY,CADZ,4BAEF,CACA,GAEE,SAAU,CADV,uBAEF,CACF,CACA,yEAEE,eAAgB,CAChB,kBACF,CACA,qFAEE,mBACF,CACA,+CACE,oFACF,CACA,kDACE,oFACF,CACA,mDACE,oFACF,CACA,oDACE,oFACF,CACA,oCACE,GACE,0BACF,CACA,GACE,uBACF,CACF,CACA,oCACE,GACE,uBACF,CACA,GACE,0BACF,CACF,CACA,oCACE,GAEE,SAAU,CADV,uBAEF,CACA,GAEE,UAAY,CADZ,4BAEF,CACF,CACA,oCACE,GAEE,UAAY,CADZ,4BAEF,CACA,GAEE,SAAU,CADV,uBAEF,CACF,CACA,uEAEE,kCAAmC,CACnC,kBACF,CACA,mFAEE,mBACF,CACA,8CACE,kFACF,CACA,iDACE,kFACF,CACA,kDACE,kFACF,CACA,mDACE,kFACF,CACA,mCACE,GACE,SAAU,CACV,4BACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,uBACF,CACF,CACA,mCACE,GACE,SAAU,CACV,uBACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,4BACF,CACF,CACA,mCACE,GAEE,SAAU,CADV,uBAEF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,2BACF,CACF,CACA,mCACE,GACE,SAAU,CACV,2BACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,uBACF,CACF,CACA,uEAEE,kCACF,CACA,mFAEE,mBACF,CACA,qGAGE,qEAAsE,CADtE,SAEF,CAKA,wNAEE,sEACF,CACA,+GAEE,qEACF,CACA,sBACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,uBACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,uEAEE,eAAgB,CAChB,kBACF,CACA,mFAEE,kCAAmC,CAC3B,0BAA2B,CACnC,eAAgB,CAChB,mBACF,CACA,8CAEE,kFAAmF,CADnF,2BAEF,CACA,iDAEE,kFAAmF,CADnF,2BAEF,CACA,kDAEE,kFAAmF,CADnF,2BAEF,CACA,mDAEE,kFAAmF,CADnF,2BAEF,CACA,mCACE,GACE,kBAAmB,CACnB,8CACF,CACA,GACE,eAAgB,CAChB,qCACF,CACF,CACA,mCACE,GACE,eAAkB,CAClB,qCACF,CACA,GACE,kBAAmB,CACnB,8CACF,CACF,CACA,mCACE,GACE,eAAkB,CAClB,qCACF,CACA,GACE,kBAAmB,CACnB,+CACF,CACF,CACA,mCACE,GACE,kBAAmB,CACnB,+CACF,CACA,GACE,eAAkB,CAClB,qCACF,CACF,CACA,6CACE,mBACF,CACA,kDACE,0FACF,CACA,qDACE,0FACF,CACA,8CACE,mBACF,CACA,sDACE,0FACF,CACA,uDACE,0FACF,CACA,uCACE,GACE,0BACF,CACA,GACE,uBACF,CACF,CACA,uCACE,GACE,uBACF,CACA,GACE,0BACF,CACF,CACA,uCACE,GACE,uBACF,CACA,GACE,0BACF,CACF,CACA,uCACE,GACE,0BACF,CACA,GACE,uBACF,CACF,CACA,yCACE,mBACF,CACA,8CACE,kFACF,CACA,iDACE,kFACF,CACA,0CACE,mBACF,CACA,kDACE,kFACF,CACA,mDACE,kFACF,CACA,mCACE,GACE,0BACF,CACA,GACE,uBACF,CACF,CACA,mCACE,GACE,uBACF,CACA,GACE,0BACF,CACF,CACA,mCACE,GACE,uBACF,CACA,GA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A2C,CAN3C,MAAO,CADP,iBAAkB,CAElB,OAAQ,CACR,QAAS,CAKT,SACF,CACA,+CAXE,qBAAsB,CAOtB,eAAgB,CADhB,kBAsBF,CAjBA,0BAGE,6CAA8C,CAE9C,gDAAiD,CACjD,oDAAqD,CAFrD,0DAA2D,CAG3D,oDAAqD,CAIrD,2PAA6D,CAV7D,sBAAuB,CAcvB,gHAAyH,CACzH,kGAAmG,CAFnG,UAGF,CACA,oDACE,uBACF,CACA,qBAEE,+EACF,CACA,wKAKE,qHACF,CACA,0CAEE,+CACF,CACA,KACE,0EAAiF,CACjF,qEAAsE,CACtE,sGAAyG,CACzG,8DAA+D,CAC/D,wGAA2G,CAC3G,gEAAiE,CACjE,wGAA2G,CAC3G,gEACF,CACA,0BACE,oBACF,CACA,yBAGE,sBAAuB,CADvB,QAAS,CADT,UAGF,CACA,+CAEE,gBACF,CACA,eACE,eACF,CACA,mBACE,iBACF,CACA,oBACE,gBACF,CACA,gCACE,2CACF,CACA,mBACE,6BACF,CACA,8BACE,0BACF,CACA,qCACE,gBACF,CACA,qCAEE,iBAAkB,CADlB,eAEF,CACA,8wBAeE,SACF,CACA,mHAEE,mBACF,CACA,6IAEE,SAAU,CACV,uBACF,CACA,iLAEE,mBAAqB,CACrB,uBACF,CACA,oTAIE,SAAU,CACV,gCACF,CACA,yIAEE,2BACF,CACA,kBACE,mBACF,CACA,6BACE,0BACF,CACA,iDAEE,mFAAsF,CADtF,uBAEF,CACA,2EAEE,SAAU,CACV,+BACF,CACA,mEAEE,sDACF,CACA,mCACE,qDAAsD,CACtD,4BACF,CACA,+EAEE,uBACF,CACA,+LAIE,iFACF,CACA,8cAUE,cAAe,CADf,mBAAqB,CADrB,sDAGF,CACA,uHAGE,cAAe,CACf,SAAU,CAFV,sDAGF,CACA,0bAQE,gFACF,CACA,2pCAmBE,cAAe,CAEf,mBAAqB,CADrB,iCAA0C,CAF1C,sDAIF,CACA,2PAEE,cACF,CACA,whBAIE,mBACF,CACA,sxBAQE,cACF,CACA,4QAEE,gBACF,CACA,gTAEE,2KACF,CACA,kGACE,0FAA2F,CAE3F,4BAA6B,CAD7B,eAEF,CACA,gIACE,gBACF,CAIA,0SACE,4FACF,CACA,+LAEE,cAAe,CACf,mBAAqB,CACrB,qBACF,CACA,oGACE,8FAA+F,CAE/F,4BAA6B,CAD7B,eAEF,CACA,oIACE,gBACF,CAIA,kTACE,6FACF,CACA,0IACE,SACF,CACA,gRAGE,SAAU,CADV,gBAEF,CACA,oTAEE,4KACF,CACA,qMAEE,cAAe,CACf,mBAAqB,CACrB,qBACF,CAIA,4LACE,0CACF,CACA,uIACE,0CACF,CACA,uIACE,0CACF,CACA,0HACE,0CACF,CAIA,sLACE,0CACF,CACA,oIACE,0CACF,CACA,oIACE,0CACF,CACA,4DACE,0CACF,CACA,wIACE,0CACF,CACA,wIACE,0CACF,CACA,mFACE,0CACF,CACA,qHACE,0CACF,CACA,6DACE,0CACF,CACA,yIACE,0CACF,CACA,yIACE,0CACF,CACA,oFACE,0CACF,CACA,6BACE,YACF,CACA,iCACE,WACF,CACA,+FAEE,WACF,CACA,6GAEE,WACF,CACA,mDACE,mBACF,CACA,8PAIE,SACF,CACA,yYASE,wBAA0B,CAH1B,mBAAqB,CAErB,wBAA0B,CAD1B,uBAGF,CACA,gEAEE,wBAA0B,CAD1B,uBAEF,CACA,yEAIE,wBAA0B,CAH1B,uEAA2E,CAE3E,wBAA0B,CAD1B,uBAGF,CACA,mKAGE,wBAA0B,CAD1B,uBAEF,CACA,yLAEE,qBAAuB,CACvB,0DACF,CACA,sCACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,uCACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,gDACE,GACE,8CACF,CACA,GACE,gNACF,CACF,CACA,kDACE,GACE,kNACF,CACA,GACE,8CACF,CACF,CACA,kDACE,GACE,0BACF,CACA,GACE,uBACF,CACF,CACA,mDACE,GACE,uBACF,CACA,GACE,0BACF,CACF,CACA,gDACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,+CACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,oDACE,GACE,SAAU,CACV,8CACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,gNACF,CACF,CACA,gDACE,GACE,SAAU,CACV,gNACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,8CACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,+CACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,4CACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,+CACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,4CACF,CACF,CACA,uCACE,GACE,gDACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,gDACF,CACA,GACE,8CACF,CACF,CACA,uCACE,GACE,6CACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,gDACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,gDACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,6CACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,6CACF,CACF,CACA,uCACE,GACE,+CACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,4CACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,+CACF,CACA,GACE,8CACF,CACF,CACA,uCACE,GACE,4CACF,CACA,GACE,8CACF,CACF,CACA,yBACE,kBACF,CACA,kBACE,eAAgB,CAChB,gBACF,CACA,mBAEE,cAAe,CADf,cAEF,CACA,wBAEE,aAAc,CADd,WAAY,CAEZ,UACF,CACA,mBACE,gBAAiB,CACjB,gBACF,CACA,+BACE,+BACF,CACA,kBACE,0BAA2B,CAC3B,eACF,CAIA,yGACE,gBACF,CACA,uEACE,gBACF,CACA,iCACE,6BACF,CACA,wCACE,aACF,CACA,wCACE,iBACF,CAEA,MAQE,4CAA6C,CAC7C,qCAAsC,CACtC,gDACF,CACA,KACE,wBAAyB,CACzB,2BAA4B,CAC5B,mCAAoC,CACpC,oCAAqC,CACr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,CACA,4HAGE,uFACF,CACA,yHAGE,uFACF,CACA,6JAGE,gDACF,CACA,sNAKE,0DACF,CACF,CACA,yBACE,sEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,6GAGE,aAAc,CACd,cACF,CACA,+EAGE,gDACF,CACA,qMAME,sBACF,CACA,yHAGE,uFACF,CACA,sHAGE,uFACF,CACA,0JAGE,gDACF,CACA,iNAKE,0DACF,CACF,CACA,yBACE,yEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,gHAGE,aAAc,CACd,cACF,CACA,kFAGE,gDACF,CACA,2MAME,sBACF,CACA,4HAGE,uFACF,CACA,yHAGE,uFACF,CACA,6JAGE,gDACF,CACA,sNAKE,0DACF,CACF,CACA,0BACE,sEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,6GAGE,aAAc,CACd,cACF,CACA,+EAGE,gDACF,CACA,qMAME,sBACF,CACA,yHAGE,uFACF,CACA,sHAGE,uFACF,CACA,0JAGE,gDACF,CACA,iNAKE,0DACF,CACF,CACA,0BACE,yEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,gHAGE,aAAc,CACd,cACF,CACA,kFAGE,gDACF,CACA,2MAME,sBACF,CACA,4HAGE,uFACF,CACA,yHAGE,uFACF,CACA,6JAGE,gDACF,CACA,sNAKE,0DACF,CACF,CACA,8CAGE,wCAAyC,CACzC,+BACF,CACA,WACE,iDAAkD,CAClD,uEAAwE,CACxE,2EAA4E,CAC5E,6EAA8E,CAC9E,qEAAsE,CACtE,uEAAwE,CACxE,6DACF,CACA,8IAME,uBACF,CACA,qCAEE,kBAAmB,CADnB,eAEF,CACA,iDACE,eACF,CACA,gDACE,kBACF,CACA,sBAKE,kDAAmD,CAFnD,yDAA2D,CAC3D,yCAA0C,CAH1C,sCAAuC,CACvC,uCAIF,CACA,6BACE,YACF,CACA,s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CACxD,qEAAsE,CALtE,UAAW,CAGX,aAKF,CACA,wIAGE,gCACF,CACA,yCACE,2DACF,CACA,mDACE,oEACF,CACA,0DACE,uFACF,CACA,oDACE,wGACF,CACA,8DACE,gHACF,CACA,+CACE,SAAU,CACV,mBACF,CACA,8iBAQE,uFAAwF,CACxF,oEACF,CACA,2CACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,4CACE,GACE,SACF,CACA,GACE,SACF,CACF,CAEA,MACE,wCAAyC,CACzC,yCAA0C,CAC1C,0CAA2C,CAC3C,wCACF,CACA,KACE,6CAA8C,CAC9C,oDAAqD,CACrD,2CAA4C,CAC5C,uCAAwC,CACxC,sCAAuC,CACvC,uCAAwC,CACxC,+BACF,CACA,qBAEE,+BAAgC,CAChC,uCACF,CACA,IACE,2CAA4C,CAC5C,oEAAwE,CACxE,6CAA8C,CAC9C,uCAAwC,CACxC,sCACF,CACA,kCAGE,uDAAwD,CACxD,+CACF,CACA,cAUE,0CAA2C,CAH3C,qBAAsB,CADtB,YAAa,CADb,WAAY,CAHZ,MAAO,CADP,iBAAkB,CAElB,KAAM,CAMN,gCAAmC,CADnC,6BAA8B,CAG9B,4EAA6E,CAP7E,UAAW,CAQX,aACF,CACA,+CAEE,8DACF,CACA,2BACE,uBACF,CACA,uBACE,aAAc,CACd,uBACF,CACA,wBACE,+BACF,CACA,6DAGE,kDACF,CACA,6LAME,yDACF,CACA,uUAUE,iDACF,CACA,2DAEE,eACF,CACA,gJAIE,sBACF,CACA,0IAKE,gBAAiB,CACjB,iBAAkB,CAFlB,iBAGF,CACA,oBAIE,6CAA8C,CAF9C,gDAAiD,CACjD,oDAAqD,CAErD,0DAA2D,CAJ3D,kDAKF,CACA,iEAGE,YAAa,CACb,qBACF,CACA,8OAQE,WAAY,CADZ,kBAAmB,CADnB,eAAgB,CAGhB,eAAgB,CAChB,UACF,CACA,+NAME,wBACF,CAEA,MACE,wBACF,CACA,KACE,+BAAgC,CAChC,mCAAoC,CACpC,+CAAgD,CAChD,4CAAgD,CAChD,sDACF,CACA,qBAEE,yCAA6C,CAC7C,4DACF,CACA,IACE,kEAAsE,CACtE,+BAAgC,CAChC,mCACF,CACA,kCAGE,4CAA6C,CAC7C,qEACF,CAIA,kCAFE,aAmBF,CAjBA,SAaE,sBAAuB,CACvB,uBAAwB,CACxB,wBAAyB,CACzB,yBAA0B,CAN1B,2CAA4C,CAC5C,6CAA8C,CAH9C,YAAa,CAFb,MAAO,CAHP,QAAS,CAET,SAAU,CAEV,iBAAkB,CAHlB,KAAM,CAKN,uBAA0B,CAR1B,6BAA8B,CAW9B,6BAKF,CACA,eACE,QACF,CACA,kBACE,eACF,CAIA,wEACE,sBACF,CAIA,oKAGE,iFACF,CAIA,6JAGE,iFACF,CACA,iPAIE,6CACF,CACA,qBACE,yCACF,CACA,kBACE,SACF,CACA,sBACE,uBACF,CACA,2BAEE,uEACF,CACA,eAEE,gCAAiC,CADjC,aAEF,CACA,wCAGE,6CAA8C,CAD9C,0CAA2C,CAD3C,yCAGF,CACA,kCACE,eACF,CACA,iCACE,eACF,CACA,4BAIE,kBAAmB,CAEnB,gDAAiD,CAHjD,YAAa,CAIb,2CAA4C,CAC5C,uDAAwD,CAPxD,eAAgB,CAIhB,uCAAwC,CAHxC,iBAOF,CACA,kCAGE,iDAAkD,CAKlD,QAAS,CAPT,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,QAAS,CAOT,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CANX,UASF,CACA,6CACE,sBACF,CACA,gCACE,sBACF,CACA,eAIE,UAAW,CAGX,eAAgB,CADhB,WAEF,CACA,oCAPE,WAAY,CACZ,iBAAkB,CAElB,KAAM,CAJN,UAkBF,CAVA,qBAEE,qCAAsC,CAMtC,iBAAkB,CAPlB,UAAW,CAKX,MAAO,CAGP,uBACF,CACA,uBACE,UACF,CACA,6BACE,SAAU,CACV,KACF,CACA,wBACE,SACF,CACA,8BACE,UAAW,CACX,KACF,CACA,sBACE,MAAO,CACP,SACF,CACA,4BACE,MAAO,CACP,QACF,CACA,yBACE,MAAO,CACP,QACF,CACA,+BACE,MAAO,CACP,SACF,CACA,cACE,cAAe,CACf,2BACF,CACA,aACE,uBAA2B,CAC3B,qCACF,CACA,sBACE,SAAU,CACV,kBACF,CACA,uBACE,SAAU,CACV,kBACF,CACA,oBACE,8BACF,CACA,qCACE,4BACF,CACA,oCACE,6BACF,CACA,uBACE,8BACF,CACA,wCACE,4BACF,CACA,uCACE,6BACF,CACA,uBACE,2BACF,CACA,wCACE,yBACF,CACA,uCACE,0BACF,CAEA,MACE,uCAAwC,CACxC,uCACF,CACA,KACE,+CAAgD,CAChD,+BAAgC,CAIhC,2CAA4C,CAC5C,+BAAgC,CAChC,qCAAsC,CACtC,+BAAgC,CAChC,yCAA0C,CAC1C,kCAAmC,CACnC,kCAAmC,CACnC,0CAA2C,CAC3C,mCAAoC,CACpC,kCAAmC,CACnC,iCAAkC,CAClC,yCAA0C,CAC1C,2CAA4C,CAC5C,6BAA8B,CAC9B,4CAAgD,CAChD,qCAAwC,CACxC,gDAAoD,CACpD,0DAA8D,CAC9D,oDAAuD,CACvD,qCACF,CACA,qBAEE,yCAA6C,CAC7C,kCAAqC,CACrC,uDAA2D,CAC3D,uDAA2D,CAC3D,iDAAoD,CACpD,oDACF,CACA,IACE,kEAAsE,CACtE,+BAAgC,CAChC,4CAA6C,CAC7C,kCAAmC,CACnC,mCAAoC,CACpC,+BAAgC,CAChC,yCAA0C,CAC1C,kCAAmC,CACnC,kCAAmC,CACnC,iDAAkD,CAClD,oCAAqC,CACrC,iCAAkC,CAClC,kCAAmC,CACnC,6CAA8C,CAC9C,6BAA8B,CAC9B,4CACF,CACA,mBAEE,4CACF,CACA,kCAGE,sDAAuD,CACvD,4CAA6C,CAC7C,oDAAqD,CACrD,mDAAoD,CACpD,2DACF,CACA,yBACE,aACF,CACA,eAUE,gCAAiC,CAPjC,QAAS,CAIT,YAAa,CALb,MAAO,CAMP,eAAgB,CAChB,aAAc,CARd,iBAAkB,CAKlB,+BAAkC,CAKlC,6BAA8B,CAN9B,UAAW,CAOX,qBAAsB,CARtB,aASF,CACA,iDAEE,uBACF,CACA,4BACE,uBACF,CACA,6BACE,8DACF,CACA,4BACE,uBACF,CACA,yBAEE,+BAAkC,CADlC,aAEF,CACA,yBACE,eAEE,QAAS,CACT,kBAAmB,CAFnB,WAGF,CACF,CACA,+BACE,eACE,oEACF,CACF,CACA,iCAEE,uEACF,CACA,eAGE,qCAAsC,CAFtC,eAAgB,CAChB,iBAAkB,CAElB,uBACF,CACA,qBAGE,qDAAsD,CAKtD,QAAS,CAPT,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,QAAS,CAOT,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CANX,UASF,CACA,gCACE,sBACF,CACA,+BAKE,qBAAsB,CACtB,aAAc,CAHd,eAAmB,CACnB,QAAS,CAIT,eAAgB,CADhB,iBAAkB,CAElB,8CAA+C,CAP/C,UAQF,CACA,2CAIE,sDAAuD,CAKvD,QAAS,CAPT,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,QAAS,CAOT,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CANX,UASF,CACA,mCAGE,aAAc,CACd,aAAc,CAFd,oBAGF,CACA,gBAGE,+DAAiE,CAFjE,cAAe,CACf,YAAa,CAEb,4CAA6C,CAC7C,sCAAuC,CAGvC,wDAAyD,CAFzD,2CAA4C,CAC5C,wCAAyC,CAEzC,UACF,CACA,6BACE,oEACF,CACA,+BACE,2BACF,CACA,iFACE,qDAEE,iDAAkD,CAC1C,yCAA0C,CAFlD,uEAGF,CACF,CACA,sBAGE,kBAAmB,CADnB,YAAa,CADb,aAGF,CACA,6BAGE,4CAA6C,CAD7C,yCAA0C,CAD1C,wCAGF,CACA,uCAGE,eAAgB,CADhB,iBAAkB,CAGlB,sBAAuB,CADvB,kBAEF,CACA,qBAEE,aAAc,CACd,8CAA+C,CAF/C,UAGF,CACA,eAGE,kBAAmB,CAGnB,wCAAyC,CAJzC,YAAa,CAEb,2CAA4C,CAC5C,+CAAgD,CAGhD,uDAAwD,CAPxD,eAAgB,CAQhB,6EAA+E,CAF/E,uCAGF,CACA,iCACE,mDACF,CACA,6BACE,YAAa,CACb,cAAe,CACf,0BAA2B,CAC3B,YACF,CACA,8CACE,eACF,CACA,2DAEE,eACF,CACA,8BAGE,8CAA+C,CAD/C,aAAc,CAEd,WAAY,CACZ,aAAc,CACd,YAAa,CALb,kBAMF,CACA,oCACE,sBACF,CACA,oCACE,0BAA4B,CAC5B,2BAGF,CACA,+EAFE,8CAA+C,CAD/C,6CAOF,CAJA,2CAGE,iDACF,CACA,mCAME,iDAAkD,CADlD,aAAc,CADd,kBAAmB,CAHnB,uBAAyB,CAEzB,cAAe,CADf,2BAKF,CACA,oBACE,6CACF,CACA,yCAEE,qCACF,CACA,iFACE,yFAGE,iDAAkD,CAC1C,yCAA0C,CAFlD,wDAGF,CACF,CACA,iEAEE,iFACF,CACA,+DAEE,iFACF,CACA,2EAEE,sBACF,CACA,uFAEE,6CACF,CACA,kIAIE,eACF,CACA,kCAEE,qCAAsC,CADtC,eAEF,CACA,iFACE,0DAEE,iDAAkD,CAC1C,yCAA0C,CAFlD,wDAGF,CACF,CACA,8CACE,iFACF,CACA,6CACE,iFACF,CACA,yDACE,6CACF,CACA,qEAEE,yBACF,CACA,2BACE,gBACF,CACA,gDAEE,gBAAiB,CADjB,eAEF,CACA,mBACE,2CAA4C,CAC5C,iFAAkF,CAClF,yCACF,CACA,oBACE,uBACF,CACA,8HAIE,eACF,CACA,0BACE,cACF,CACA,+CACE,gBACF,CAEA,MACE,uBAAwB,CACxB,8CACF,CACA,KACE,4BAA6B,CAC7B,mDAAoD,CACpD,6CAA8C,CAC9C,kCAAmC,CACnC,oCAAqC,CACrC,wBACF,CACA,qBAEE,2BACF,CACA,IACE,6BAA8B,CAC9B,kCAAmC,CACnC,mCAAoC,CACpC,gEAAoE,CACpE,oCACF,CACA,kCAGE,wCACF,CACA,gBACE,aACF,CAIA,oCAFE,aAgBF,CAdA,aAWE,mCAAoC,CAPpC,QAAS,CAIT,qBAAsB,CADtB,YAAa,CADb,6BAA8B,CAH9B,MAAO,CAFP,eAAgB,CAChB,iBAAkB,CAQlB,+BAAkC,CADlC,6BAA8B,CAJ9B,UAAW,CAQX,6BACF,CACA,6CAEE,uDACF,CACA,0BACE,uBACF,CACA,sBACE,aAAc,CACd,uBACF,CACA,kEAEE,aAAc,CACd,kFACF,CACA,uBACE,+BACF,CACA,gCACE,WAAY,CAEZ,eAAgB,CADhB,iBAEF,CACA,sBACE,yBAA0B,CAC1B,iBAAkB,CAClB,UACF,CACA,yDAEE,YACF,CACA,yCACE,4CACF,CACA,uDACE,gCAAiC,CACjC,mCACF,CACA,6BAEE,qEACF,CACA,iBACE,6EACF,CACA,uBAiBE,kCAAmC,CAC3B,0BAA2B,CAfnC,6CAA8C,CAK9C,QAAS,CAPT,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,QAAS,CAOT,sDAAyD,CADzD,yBAA0B,CAO1B,2BAA4B,CAR5B,UAAW,CANX,UAAW,CAWX,WAFF,CAOA,uDAEE,sBAAuB,CACvB,6EACF,CACA,qEAmBE,kCAAmC,CAC3B,0BAA2B,CAhBnC,6CAA8C,CAK9C,WAAY,CAPZ,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,KAAM,CAON,sDAAyD,CADzD,sBAAwB,CAQxB,2BAA4B,CAT5B,UAAW,CANX,UAAW,CAYX,WAHF,CAQA,iBACE,yBAA0B,CAC1B,WAAY,CACZ,KAEF,CACA,4CAFE,gCAIF,CACA,iCACE,iBACF,CACA,+BACE,mCACF,CACA,kGAEE,mCAAoC,CACpC,uFAAwF,CACxF,eACF,CACA,4NAIE,sBACF,CACA,kIAEE,uFACF,CACA,gGAEE,eACF,CACA,0NAIE,uDAAwD,CACxD,qEACF,CACA,4hCA4BE,6EAA8E,CAC9E,oEAAqE,CANrE,+BAAoC,CAPpC,UAAW,CAMX,WAAY,CAHZ,MAAO,CAMP,SAAU,CAPV,mBAAoB,CADpB,iBAAkB,CAGlB,KAAM,CAMN,uDAAwD,CACxD,qEAAsE,CANtE,UAAW,CAGX,aAMF,CACA,qGAEE,gDAAiD,CACjD,qEACF,CACA,8iBASE,cAAe,CADf,SAEF,CACA,2CACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,gDACE,aACF,CAEA,MACE,yBAA0B,CAC1B,yBAA0B,CAC1B,0BACF,CACA,KACE,0BAA2B,CAC3B,oCAAwC,CACxC,6BAAgC,CAChC,kCAAmC,CACnC,gCAAiC,CACjC,4BAA6B,CAC7B,gCACF,CACA,IACE,kCAAmC,CACnC,gCAAiC,CACjC,6BAA8B,CAC9B,gCACF,CACA,kCAGE,6CAA8C,CAC9C,0CACF,CACA,OAQE,yCAA0C,CAD1C,qBAAsB,CAFtB,gCAAiC,CACjC,mCAAoC,CAHpC,mCAAoC,CAMpC,SAAU,CAPV,iBAAkB,CADlB,qCAAuC,CAGvC,aAMF,CACA,iFACE,+BAEE,iDAAkD,CAC1C,yCAA0C,CAFlD,sDAGF,CACF,CACA,gBACE,SACF,CACA,sBAGE,kBAAmB,CACnB,qBAAsB,CAHtB,YAAa,CACb,6BAA8B,CAG9B,2EACF,CACA,mBAEE,aAAc,CADd,gBAAiB,CAEjB,WACF,CACA,qBACE,aAAc,CAGd,kBAAmB,CADnB,eAAgB,CADhB,0CAGF,CACA,sCACE,aAAc,CACd,iBACF,CACA,mCACE,iBACF,CACA,gGAEE,mCACF,CACA,oBACE,OACF,CACA,iBACE,kCACF,CACA,YAGE,MAAO,CAFP,uBAA0B,CAC1B,UAEF,CACA,sBACE,KAAM,CACN,gCACF,CACA,+BACE,uBACF,CACA,yBAGE,2CAA4C,CAD5C,QAAS,CADT,UAIF,CACA,2DAFE,kCAIF,CACA,yBACE,QAAS,CACT,+BACF,CACA,kCACE,uBACF,CACA,yBACE,sBACE,YACF,CACA,qCACE,4EACF,CACA,wCACE,kFACF,CACF,CACA,yBACE,YAGE,2CAA4C,CAF5C,QAAS,CACT,gDAEF,CACA,sBACE,QACF,CACA,yBACE,aACF,CACA,yBACE,qDACF,CACF,CACA,0BACE,YACE,aAAc,CACd,UACF,CACA,kCACE,SACF,CACA,mCACE,SAAU,CACV,UACF,CACA,oCACE,QAAS,CAET,gDAAqD,CADrD,+BAEF,CACF,CACA,mBACE,gBAAiB,CACjB,yDACF,CACA,WAEE,2CAA4C,CAG5C,QAAS,CADT,mBAAqB,CAHrB,uBAA0B,CAE1B,uBAGF,CAIA,yCACE,kBACF,CACA,qBACE,OACF,CACA,wBACE,QAAS,CAET,4CAAgD,CADhD,UAEF,CAIA,mEACE,2CACF,CACA,wBACE,6CACF,CACA,yBACE,WACE,QAAS,CACT,gDACF,CACA,wBACE,aACF,CACF,CACA,0BACE,WACE,aAAc,CACd,UACF,CACA,iCACE,SACF,CACA,kCACE,SAAU,CACV,UACF,CACA,mCACE,QAAS,CAET,gDAAqD,CADrD,+BAEF,CACA,wBACE,8CACF,CACA,qBACE,QACF,CACF,CACA,kBACE,gBAAiB,CACjB,iBACF,CAEA,MACE,gCAAiC,CACjC,6CACF,CACA,KACE,4BAA6B,CAC7B,wBAAyB,CACzB,wCAAyC,CACzC,sCACF,CACA,IACE,4BAA6B,CAC7B,wBAAyB,CACzB,wCAAyC,CACzC,sCACF,CACA,WACE,oBAAqB,CAIrB,WAAY,CADZ,+BAAgC,CAEhC,iBAAkB,CAJlB,qBAAsB,CACtB,8BAIF,CACA,4BAGE,aAAc,CADd,WAAY,CAEZ,iBAAkB,CAHlB,UAIF,CAEA,oBAGE,eAAgB,CADhB,SAAU,CADV,kBAAmB,CAGnB,aACF,CACA,iBAKE,6CAA8C,CAG9C,qDAAsD,CANtD,QAAS,CAET,yCAA0C,CAH1C,iBAAkB,CAElB,OAAQ,CAIR,2CAA4C,CAD5C,aAGF,CACA,4BACE,4DAA6D,CAC7D,uBACF,CACA,+GAIE,+BAAgC,CADhC,eAEF,CACA,0BACE,0CACF,CACA,uBACE,yBACF,CACA,uBACE,yBACF,CACA,gBACE,+BACF,CACA,sBACE,iDACF,CACA,2BAKE,uBAAwB,CADxB,mBAAoB,CAHpB,aAAc,CAEd,aAAc,CAId,QAAS,CADT,iBAAkB,CAElB,OAAQ,CACR,4BAA6B,CAP7B,WAQF,CACA,oGAEE,qDACF,CACA,uCAEE,WAAa,CADb,4CAEF,CACA,wCAEE,iBAAmB,CADnB,6CAEF,CACA,wCAEE,iBAAmB,CADnB,6CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,WAAa,CADb,8CAEF,CACA,8BACE,GACE,sBACF,CACA,GACE,uBACF,CACF,CACA,oCACE,MAEE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACF,CACA,eACE,+BACF,CACA,qBACE,kDACF,CACA,4BACE,SAAU,CACV,mBAAoB,CAEpB,sBAAuB,CACvB,sBAAuB,CACvB,cAAe,CAHf,8DAA+D,CAI/D,wBAAyB,CACzB,0BACF,CACA,oEAEE,gHACF,CACA,mCACE,MAEE,cACF,CACA,IACE,cACF,CACA,IACE,cACF,CACA,IACE,cACF,CACF,CACA,+BACE,GACE,sBACF,CACA,GACE,uBACF,CACF,CACA,sCACE,GAEE,uBAAwB,CADxB,wBAEF,CACA,MAEE,sBAAuB,CADvB,wBAEF,CACA,IACE,uBAAwB,CACxB,wBACF,CACA,MAEE,uBAAwB,CADxB,yBAEF,CACA,MAEE,sBAAuB,CADvB,yBAEF,CACA,IACE,uBAAwB,CACxB,uBACF,CACA,MAEE,uBAAwB,CADxB,uBAEF,CACA,MAEE,sBAAuB,CADvB,uBAEF,CACA,IACE,uBAAwB,CACxB,uBACF,CACA,MAEE,uBAAwB,CADxB,sBAEF,CACA,MAEE,sBAAuB,CADvB,sBAEF,CACA,GACE,uBAAwB,CACxB,wBACF,CACF,CAOA,KACE,2BAA4B,CAC5B,kCAAmC,CACnC,yCACF,CACA,qBAEE,+CACF,CACA,IACE,2BAA4B,CAC5B,kCACF,CACA,kCAGE,6DACF,CACA,mCAOE,4EAAgF,CAGhF,iDAAkD,CALlD,aAAc,CAId,mCAAoC,CANpC,eAAgB,CAChB,iBAAkB,CAIlB,2BAA4B,CAF5B,2BAA4B,CAJ5B,UASF,CACA,aACE,qBACF,CACA,kBACE,2EAA6E,CAE7E,WAAY,CAIZ,MAAO,CAHP,iBAAkB,CAClB,KAAM,CAGN,gCAAmC,CAFnC,wBAA0B,CAJ1B,UAOF,CACA,sBACE,aACF,CACA,yDASE,2EAA6E,CAP7E,UAAW,CAMX,aAAc,CAFd,WAAY,CAIZ,MAAO,CAPP,iBAAkB,CAClB,KAAM,CAGN,uBAA+B,CAI/B,4BAA6B,CAN7B,UAOF,CACA,kCACE,yBACF,CACA,gBACE,sCACF,CACA,iBACE,uCACF,CACA,mWAkBE,yBAA2B,CAH3B,MAAO,CADP,iBAAkB,CAElB,KAAM,CAGN,qCAAuC,CAFvC,aAGF,CACA,0BACE,GACE,SAAU,CACV,mBACF,CACA,GACE,SAAU,CACV,mBACF,CACF,CACA,2BACE,GACE,SAAU,CACV,mBACF,CACA,GACE,SAAU,CACV,mBACF,CACF,CACA,kCACE,qDACF,CACA,iCACE,YACF,CACA,8CAKE,gEAAiE,CAHjE,+HAA8I,CAE9I,0BAA2B,CAD3B,wBAAyB,CAFzB,UAKF,CACA,oCACE,GACE,gCACF,CACA,GACE,+BACF,CACF,CACA,+CACE,GACE,uBACF,CACA,GACE,+BACF,CACF,CACA,iCACE,sDACF,CACA,gCACE,sDACF,CACA,6CAEE,oEAAqE,CADrE,eAEF,CACA,4CAEE,oEAAqE,CADrE,eAAgB,CAEhB,8BACF,CACA,qCACE,GACE,qCACF,CACA,IACE,oCACF,CACA,IACE,oCACF,CACA,GACE,oCACF,CACF,CACA,qCACE,GACE,qCACF,CACA,IACE,qCACF,CACA,IACE,qCACF,CACA,IACE,qCACF,CACA,GACE,qCACF,CACF,CACA,iDACE,GACE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACF,CACA,mDACE,GAEE,wBAAyB,CADzB,mBAEF,CACA,MAEE,wBAAyB,CADzB,mBAEF,CACA,IAEE,wBAAyB,CADzB,mBAEF,CACA,MAEE,wBAAyB,CADzB,mBAEF,CACA,IAEE,wBAAyB,CADzB,mBAEF,CACA,MAEE,wBAAyB,CADzB,mBAEF,CACA,IAEE,wBAAyB,CADzB,mBAEF,CACA,GAEE,wBAAyB,CADzB,mBAEF,CACF,CAEA,KACE,gCAAiC,CACjC,iEAAqE,CACrE,4CAAgD,CAChD,yDACF,CACA,qBAEE,sDAA0D,CAC1D,kDACF,CACA,IACE,gCAAiC,CACjC,0CACF,CACA,kCAGE,2DAA4D,CAC5D,0DACF,CACA,4BAWE,kBAAmB,CAHnB,WAAY,CAEZ,YAAa,CARb,WAAY,CAUZ,sBAAuB,CANvB,S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APT,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,QAAS,CAOT,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CANX,UASF,CACA,4CAIE,gCAAiC,CAFjC,+DAAgE,CAGhE,QAAS,CAFT,aAAc,CAFd,kDAKF,CACA,4CACE,YACF,CACA,qIAEE,sBACF,CACA,oDACE,WACF,CACA,oDACE,UACF,CACA,oDACE,gBACF,CACA,oDACE,UACF,CACA,oDACE,UACF,CACA,oDACE,gBACF,CACA,oDACE,gBACF,CACA,oDACE,YACF,CACA,oDACE,gBACF,CACA,qDACE,UACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,YACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,SACF,CACA,yBACE,2DACE,WACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,gBACF,CACA,2DACE,YACF,CACA,2DACE,gBACF,CACA,4DACE,UACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,YACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,SACF,CACF,CACA,yBACE,0DACE,WACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,UACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,gBACF,CACA,0DACE,YACF,CACA,0DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,YACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,SACF,CACF,CACA,yBACE,2DACE,WACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,gBACF,CACA,2DACE,YACF,CACA,2DACE,gBACF,CACA,4DACE,UACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,YACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,SACF,CACF,CACA,0BACE,0DACE,WACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,UACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,gBACF,CACA,0DACE,YACF,CACA,0DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,YACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,SACF,CACF,CACA,0BACE,2DACE,WACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,gBACF,CACA,2DACE,YACF,CACA,2DACE,gBACF,CACA,4DACE,UACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,YACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,SACF,CACF,CACA,eACE,0CACF,CACA,qBAGE,gEAAiE,CAKjE,WAAY,CAPZ,UAAW,CAGX,aAAc,CAOd,WAAY,CAFZ,SAAU,CAPV,iBAAkB,CAKlB,OAAQ,CADR,KAAM,CAON,sDAAyD,CADzD,yBAA0B,CAF1B,SAAU,CALV,UASF,CACA,gCACE,sBACF,CACA,g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ACjB,gBACV,CACA,oCACE,uBACF,CACA,6DACE,mCAAqC,CACrC,UACF,CACA,8BACE,kCACF,CACA,6EAEE,uBACF,CACA,sCACE,SAAU,CACV,mBACF,CACA,+BAQE,qBAAsB,CAJtB,YAAa,CAMb,MAAO,CAJP,eAAgB,CAGhB,mBAAoB,CARpB,iBAAkB,CAClB,KAAM,CAGN,2BAA4B,CAE5B,6BAA8B,CAJ9B,WAQF,CACA,qDACE,uFAAwF,CACxF,yFACF,CACA,6BACE,uBACF,CACA,gGAGE,uBACF,CACA,4CACE,uBACF,CACA,4CACE,uBACF,CACA,yFAGE,WACF,CACA,2DAEE,eACF,CACA,qGAEE,SAAU,CACV,mBACF,CACA,uGAEE,SAAU,CACV,mBACF,CACA,2CAEE,gCAAiC,CADjC,aAAc,CAEd,mBACF,CACA,8BACE,oDAAqD,CACrD,wDACF,CACA,mBACE,mBACF,CACA,sBAEE,QAAS,CAET,MAAO,CAEP,SAAU,CACV,mBAAoB,CAJpB,iBAAkB,CAElB,KAAM,CAGN,iBAAkB,CAPlB,OAQF,CACA,gDACE,8CACE,gDACF,CACA,qHAEE,4DACF,CACA,gGACE,4CACF,CACA,oEAEE,8CAA+C,CAD/C,4CAEF,CACF,CACA,0CACE,eACF,CACA,eAQE,yBAA8B,CAH9B,WAAY,CAHZ,MAAO,CAOP,SAAU,CAFV,mBAAoB,CANpB,cAAe,CAEf,KAAM,CACN,UAAW,CAEX,WAIF,CACA,kBACE,4CAA+C,CAC/C,mBACF,CACA,mBACE,6CACF,CACA,iFACE,eAEE,kCAAmC,CAC3B,0BAA2B,CAFnC,sBAGF,CACF,CACA,iCACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,kCACE,GACE,SACF,CACA,GACE,SACF,CACF,CAEA,MACE,wBAAyB,CACzB,8BAA+B,CAC/B,kCACF,CACA,uBAEE,kCACF,CACA,KACE,qBAAsB,CACtB,yBAA0B,CAC1B,iCAAkC,CAClC,4BAA6B,CAC7B,4BAA6B,CAC7B,+CAAmD,CACnD,mCAAuC,CACvC,yBAA0B,CAC1B,iCACF,CACA,qBAEE,uBAAwB,CACxB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lB,UAKF,CACA,mCACE,WACF,CACA,6DAGE,mDACF,CACA,0DAGE,sFAAwF,CACxF,yFAA2F,CAC3F,uEAAwE,CACxE,oDACF,CACA,srBAYE,oCACF,CACA,maAME,2DACF,CACA,qbAME,oCAAyC,CACzC,qCACF,CACA,6DAGE,kDACF,CACA,6DAGE,8DAA+D,CAC/D,kDACF,CACA,sEAEE,gDAAiD,CACjD,4DACF,CACA,gEAGE,2BAA4B,CAC5B,8CACF,CACA,wGAGE,cACF,CACA,0CAEE,8GACF,CACA,4JAIE,6BACF,CACA,0PAME,uBACF,CACA,8tBAaE,sCAAuC,CADvC,uBAEF,CACA,uEAKE,eAAgB,CADhB,uBAA+B,CAD/B,uBAGF,CACA,uCAEE,iGACF,CAQA,qBACE,YACF,CACA,0BAKE,aAAc,CAJd,aAAc,CACd,eAAgB,CAEhB,iBAAkB,CADlB,sBAGF,CACA,8FAGE,kEACF,CACA,mCAGE,8FAAgG,CAKhG,QAAS,CAPT,UAAW,CAeX,aAAc,CANd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,QAAS,CAOT,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CANX,UASF,CAIA,0BACE,QACF,CACA,uEAEE,sBACF,CACA,qCACE,eACF,CAEA,MACE,kBACF,CACA,MACE,YACF,CACA,eACE,sBACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,yBACE,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACF,CACA,yBACE,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACF,CACA,yBACE,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACF,CACA,0BACE,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACF,CACA,0BACE,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8C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GX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,KAAM,CAON,sDAAyD,CADzD,sBAAwB,CADxB,UAAW,CANX,UASF,CACA,4CACE,wBACF,CACA,sCACE,qEAAsE,CACtE,sEAAuE,CAIvE,oBAAqB,CACrB,kBAAmB,CAFnB,YAAa,CAFb,WAAY,CAKZ,0BAA2B,CAJ3B,2CAA4C,CAK5C,eACF,CACA,6CACE,sBACF,CACA,iEAME,yBAA2B,CAI3B,qCAAsC,CAPtC,oCAAqC,CADrC,uBAAyB,CAUzB,aAAc,CAJd,wCAAyC,CACzC,4CAA6C,CAJ7C,WAAY,CAMZ,iBAAkB,CAPlB,iBAAkB,CAGlB,wBAA0B,CAN1B,SAYF,CACA,oDAGE,MAAO,CAFP,iBAAkB,CAClB,KAEF,CACA,uDACE,iBACF,CACA,uDACE,gBACF,CACF,CACA,4DAEE,YACF,CACA,yBACE,yBACE,kBACF,CACF,CACA,qDACE,mCACE,kBACF,CACF,CACA,0DAEE,YACF,CACA,yBACE,wBACE,kBACF,CACF,CACA,qDACE,kCACE,kBACF,CACF,CACA,4DAEE,YACF,CACA,yBACE,yBACE,kBACF,CACF,CACA,qDACE,mCACE,kBACF,CACF,CACA,0DAEE,YACF,CACA,0BACE,wBACE,kBACF,CACF,CACA,sDACE,kCACE,kBACF,CACF,CACA,4DAEE,YACF,CACA,0BACE,yBACE,kBACF,CACF,CACA,sDACE,mCACE,kBACF,CACF,CACA,8FAEE,gBACF,CACA,6CACE,eACF,CACA,wCACE,gBACF,CACA,4JAIE,gBACF,CAKA,iHAGE,WAAY,CADZ,UAEF,CACA,oDACE,gBACF,CACA,oCACE,gBACF,CACA,kCACE,iBACF,CACA,4FAEE,gBACF,CACA,wFAGE,WAAY,CACZ,gBAAiB,CAFjB,UAGF,CACA,4CACE,eACF,CACA,uCACE,gBACF,CACA,wJAIE,gBACF,CACA,yCAEE,WAAY,CACZ,gBAAiB,CAFjB,UAGF,CACA,sDACE,eACF,CACA,qEAGE,WAAY,CADZ,UAEF,CACA,mDACE,gBACF,CACA,m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CA,8CAGE,aACF,CACA,gBACE,yCAA0C,CAC1C,4CACF,CACA,gBACE,yCAA0C,CAC1C,4CAA6C,CAC7C,kBACF,CACA,cACE,uCAAwC,CACxC,0CAA2C,CAC3C,8CACF,CACA,gBAQE,oDAAqD,CAPrD,qBAAsB,CAEtB,YAAa,CACb,qBAAsB,CAGtB,4CAA6C,CAD7C,gDAAiD,CAIjD,8CAA+C,CAD/C,6FAA8F,CAJ9F,iBAAkB,CAHlB,qBASF,CACA,mBACE,aAAc,CAEd,WAAY,CADZ,cAAe,CAEf,UACF,CACA,0CAEE,aACF,CACA,qBACE,8CAA+C,CAE/C,iDAAkD,CADlD,6CAEF,CACA,qBACE,8CAA+C,CAE/C,iDAAkD,CADlD,6CAEF,CACA,cACE,eACF,CACA,cAGE,mBAAoB,CADpB,0BAA2B,CAD3B,gBAGF,CACA,8BAEE,gEAAkE,CADlE,uCAEF,CACA,+BACE,oBACF,CACA,kBACE,kBACF,CACA,kCAEE,8CAA+C,CAD/C,2CAEF,CACA,mCACE,sBACF,CACA,4CACE,SACF,CAUA,8KACE,YACF,CACA,4BACE,wCACF,CACA,yBACE,qCACF,CACA,0BACE,oBAAqB,CACrB,WAAY,CACZ,qBACF,CACA,8BAGE,sDAAuD,CAGvD,iBAAkB,CALlB,oBAAqB,CAGrB,kDAAmD,CAFnD,iBAAkB,CAGlB,qBAEF,CACA,sCACE,GACE,+BACF,CACA,GACE,uBACF,CACF,CACA,mCACE,GACE,gCACF,CACA,GACE,uBACF,CACF,CACA,0FAIE,eACF,CACA,wCAEE,iBACF,CACA,qBACE,cACF,CACA,qBACE,cACF,CACA,oBACE,qGACF,CACA,gCACE,6DACF,CACA,oCACE,6DAA8D,CAC9D,8DACF,CACA,+BACE,gEACF,CACA,mCACE,gEAAiE,CACjE,iEACF,CACA,0BACE,iBACF,CACA,0BACE,cACF,CACA,uBACE,iDACF,CACA,mHAGE,uDACF,CACA,uCAEE,2PAA4P,CAD5P,oEAEF,CACA,sCACE,wEACF,CACA,oDACE,oIACF,CACA,yEACE,gTACF,CACA,uGACE,2BACF,CACA,mBACE,mDACF,CACA,uGAGE,wDACF,CACA,mCAEE,wPAA4P,CAD5P,qEAEF,CACA,kCACE,yEACF,CACA,gDAIE,8SAAoT,CAHpT,oIACF,CAIA,8EACE,4BACF,CACA,2CACE,cACF,CACA,2HAIE,8CAA+C,CAC/C,iBAAkB,CAHlB,UAAW,CACX,iBAGF,CACA,6DAIE,QAAW,CAFX,WAAY,CACZ,QAAS,CAFT,UAIF,CACA,8DAIE,WAAY,CAFZ,UAAW,CACX,SAAU,CAFV,SAIF,CACA,mCAEE,UAAW,CADX,SAEF,CACA,uCACE,eACF,CACA,+CACE,mDACF,CACA,gDACE,wDACF,CACA,gDACE,uDACF,CACA,wCACE,GACE,WACF,CACA,IACE,UACF,CACA,IACE,UACF,CACF,CACA,sFAIE,eACF,CACA,sCAEE,iBACF,CACA,oBACE,cACF,CACA,yBACE,iBACF,CACA,yBACE,cACF,CACA,mBACE,8GACF,CACA,0CAEE,oDACF,CACA,sBACE,gDACF,CACA,gHAGE,gBACF,CACA,uNAGE,6BACF,CACA,uNAGE,0BACF,CACA,yOAGE,6BAA8B,CAC9B,0BACF,CACA,uDACE,eACF,CACA,kBACE,kDACF,CACA,oGAGE,iBACF,CACA,2MAGE,8BACF,CACA,2MAGE,2BACF,CACA,6NAGE,8BAA+B,CAC/B,2BACF,CACA,mDACE,wDACF,CACA,0CACE,cACF,CACA,kCAEE,UAAW,CADX,SAEF,CACA,sCACE,eACF,CACA,8CACE,kDACF,CACA,+CACE,uDACF,CACA,+CACE,sDACF,CACA,uCACE,GACE,uBACF,CACA,IACE,0BACF,CACA,IACE,uBACF,CACF,CAEA,MACE,wCAAyC,CACzC,kCAAmC,CACnC,4CAKF,CACA,KACE,2BAA4B,CAC5B,8BAA+B,CAC/B,6CAA8C,CAI9C,wCAAyC,CACzC,2CAA4C,CAC5C,yCAA0C,CAC1C,oCAAqC,CACrC,uCAAwC,CACxC,yCAA0C,CAC1C,sCAAuC,CACvC,8CAA+C,CAC/C,6CAA8C,CAC9C,uCAAwC,CACxC,iDAAkD,CAClD,0DAA8D,CAC9D,wCAAyC,CACzC,iDAAkD,CAClD,gDAAiD,CACjD,6BAA8B,CAC9B,wCACF,CACA,qBAEE,gEAAoE,CACpE,wCAAyC,CACzC,qEAAsE,CACtE,oEAAqE,CACrE,gDAAiD,CACjD,wDACF,CACA,IACE,2BAA4B,CAC5B,8BAA+B,CAC/B,2CAA4C,CAC5C,0CAA2C,CAC3C,oCAAqC,CACrC,uCAAwC,CACxC,yCAA0C,CAC1C,qDAAsD,CACtD,6CAA8C,CAC9C,sCAAuC,CACvC,gDAAiD,CACjD,wCAAyC,CACzC,oDACF,CACA,kCAGE,0EAA2E,CAC3E,8DAA+D,CAC/D,6CAA8C,CAC9C,2DAA4D,CAC5D,mDAAoD,CACpD,+DAAgE,CAChE,kDACF,CACA,YAEE,wCAAyC,CAKzC,QAAS,CAFT,wCAAyC,CAFzC,WAAY,CACZ,sCAAuC,CAEvC,yCAA0C,CAL1C,uBAOF,CACA,mBAGE,kDAAmD,CAKnD,WAAY,CAPZ,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,KAAM,CAON,sDAAyD,CADzD,sBAAwB,CADxB,UAAW,CANX,UASF,CACA,iFACE,kCAEE,4EAA6E,CACrE,oEAAqE,CAF7E,2FAGF,CACF,CAIA,+DACE,sBACF,CACA,2BAIE,WAAY,CADZ,WAAY,CAEZ,2HAA4H,CAC5H,+HAAgI,CAJhI,iBAAkB,CADlB,QAMF,CACA,oDACE,QACF,CACA,6BAEE,aAAc,CACd,eAAgB,CAChB,iBAAkB,CAHlB,UAIF,CACA,qBAGE,uDAAwD,CAOxD,2CAA4C,CAN5C,yDAA0D,CAG1D,8CAA+C,CAL/C,aAAc,CAMd,iDAAkD,CAFlD,2CAA4C,CAG5C,qDAAsD,CAJtD,6CAA8C,CAJ9C,UAUF,CACA,kCACE,qDACF,CACA,mBACE,mBAAoB,CAEpB,2DAA6D,CAD7D,aAEF,CACA,wBAGE,gCAAiC,CAGjC,qBAAsB,CAFtB,WAAY,CAFZ,aAAc,CAKd,iBAAkB,CAFlB,kBAAmB,CAJnB,UAOF,CACA,yEACE,YACF,CACA,uBAEE,uBAA2B,CAC3B,2BAA4B,CAF5B,qBAAsB,CAQtB,2DAA4D,CAL5D,oBAAqB,CAGrB,6CAA8C,CAC9C,iBAAkB,CAHlB,qBAAsB,CACtB,kBAIF,CACA,+BACE,uBACE,uDACF,CACF,CACA,2BAIE,2DAA4D,CAH5D,aAAc,CAEd,WAAY,CADZ,UAGF,CACA,kBAEE,gCAAiC,CAIjC,wBAAyB,CAEzB,oDAAqD,CACrD,4DAA6D,CAN7D,YAAa,CAEb,qBAAsB,CADtB,cAAe,CAGf,wCAAyC,CANzC,aAAc,CASd,qCAAsC,CACtC,uCACF,CACA,+BACE,kBACE,kDACF,CACF,CACA,wBAEE,uBAA2B,CAC3B,2BAA4B,CAF5B,qBAGF,CACA,4BAKE,qBAAsB,CAHtB,WAAY,CACZ,gBAAiB,CACjB,sBAAuB,CAEvB,uBAA0B,CAL1B,UAMF,CACA,8BAGE,iBAAkB,CAClB,qBAAsB,CACtB,cAAe,CAJf,aAAc,CACd,iBAIF,CACA,yEAGE,UAAW,CACX,QAAS,CAFT,iBAAkB,CAGlB,OACF,CACA,oCACE,uBACF,CACA,qCACE,wBACF,CACA,6DACE,YACF,CACA,cACE,2DACF,CACA,8CACE,gBACF,CACA,6CACE,iBACF,CAIA,kHACE,eACF,CACA,sBAEE,iBAAkB,CADlB,cAEF,CACA,6BAIE,8DAAmB,CAAnB,kBAAmB,CAFnB,yGAA0G,CAD1G,WAIF,CACA,sEACE,yGACF,CACA,4BACE,cACF,CACA,mDACE,eACF,CACA,mCAKE,kBAAmB,CACnB,qBAAsB,CACtB,iCAA0C,CAH1C,WAAY,CAHZ,SAAU,CACV,OAAQ,CACR,UAKF,CACA,mFAIE,eAAgB,CADhB,UAAW,CAEX,gBAAiB,CACjB,eAAgB,CAJhB,UAKF,CACA,yDAEE,qBAAsB,CACtB,aAAc,CAId,wDAA2D,CAE3D,eAAgB,CALhB,cAAe,CAEf,eAAgB,CADhB,iBAAkB,CAGlB,uDAEF,CACA,+BACE,yDAGE,kEAAqE,CADrE,iEAEF,CACF,CACA,wKAME,UAAW,CAFX,iBAAkB,CAClB,SAAU,CAEV,SACF,CACA,gBACE,oDACF,CACA,4BAEE,qEAAsE,CADtE,mBAEF,CACA,+BAEE,6CAA8C,CAC9C,gBAAiB,CACjB,sBAAuB,CAHvB,4CAIF,CACA,kDACE,gBACF,CACA,4DACE,iDAAkD,CAClD,yGACF,CACA,6CACE,wBAAyB,CACzB,yBACF,CACA,qBAEE,iBAAkB,CADlB,cAEF,CACA,kCAKE,6CAA8C,CAE9C,uDAAwD,CADxD,kBAAmB,CAFnB,WAAY,CAHZ,UAAW,CACX,QAAS,CACT,UAKF,CACA,iFAIE,iDAAkD,CADlD,UAAW,CAEX,gBAAiB,CACjB,eAAgB,CAJhB,UAKF,CACA,uDAEE,mCAAoC,CAQpC,iBAAkB,CAPlB,qBAAsB,CACtB,aAAc,CAId,yDAA4D,CAG5D,eAAgB,CANhB,cAAe,CAEf,eAAgB,CADhB,iBAAkB,CAGlB,wDAGF,CACA,+BACE,uDAGE,mEAAsE,CADtE,iEAEF,CACF,CACA,2FAEE,oBACF,CACA,4NAIE,uCACF,CACA,oKAgBE,iDAAkD,CAClD,+CAAgD,CAThD,kBAAmB,CAMnB,WAAY,CARZ,iBAAkB,CAClB,YAAa,CAFb,WAAY,CAIZ,sBAAuB,CAEvB,QAAS,CADT,iBAAkB,CAElB,OAAQ,CACR,yCAA4C,CAT5C,UAAW,CAWX,SAGF,CACA,4LAIE,6BAA8B,CAC9B,cAAe,CAEf,WAAY,CAEZ,MAAO,CADP,gBAAiB,CAEjB,eAAgB,CAJhB,UAKF,CAeA,WACE,wBAA2B,CAG3B,iBAAkB,CADlB,eAAgB,CADhB,4rEAGF,CAEA,MACE,4BAKF,CACA,MAEE,aAAc,CACd,gBAAiB,CACjB,iBAAkB,CAHlB,iBAAkB,CAIlB,SACF,CACA,QAUE,aAAc,CAJd,eAAgB,CALhB,gBAAiB,CACjB,iBAAkB,CAElB,eAAgB,CAChB,aAAc,CAEd,SAAU,CAJV,iBAAkB,CAMlB,SAEF,CACA,iCACE,qBACF,CACA,gBAQE,kBAAuB,CAHvB,YAAa,CAFb,WAAY,CAFZ,iBAAkB,CAKlB,6BAA8B,CAC9B,mFAAqF,CALrF,UAAW,CAEX,SAKF,CACA,wEAGE,uBACF,CACA,mBACE,kBACF,CACA,iBACE,kBACF,CACA,cAME,aAAc,CALd,aAAc,CAEd,WAAY,CACZ,iBAAkB,CAClB,6BAA8B,CAH9B,UAKF,CACA,8BACE,iBACF,CAEA,oDAEE,WACF,CACA,mCACE,sBAAuB,CACvB,oCACF,CACA,sCAEE,kCAAmC,CAC3B,0BAA2B,CAFnC,uBAGF,CAEA,2CACE,kBACF,CACA,2BACE,2BACF,CACA,WACE,kBACF,CACA,wDAEE,2BACF,CAEA,iCAIE,uBAAwB,CAHxB,aAAc,CACd,oBAIF,CACA,oDACE,YACF,CACA,+CACE,6BACF,CACA,mDACE,4BACF,CACA,iDACE,4BACF,CACA,kDACE,qBACF,CACA,gEACE,sBACF,CACA,wDACE,UAAW,CACX,aAAc,CACd,UACF,CACA,+DACE,+BAAgC,CAChC,uBACF,CACA,6FACE,wDACF,CACA,0EACE,WAAY,CACZ,cAAe,CACf,yCACF,CACA,2FACE,uDACF,CACA,wEAGE,0CAA2C,CAD3C,aAAc,CADd,UAGF,CAGA,sLAcE,WAAY,CAHZ,MAAO,CAIP,mBAAoB,CALpB,iBAAkB,CAElB,KAAM,CACN,UAAW,CAGX,UACF,CACA,gCACE,0BACF,CACA,qCACE,qEACF,CACA,sCACE,oEACF,CACA,oCACE,mEACF,CACA,uCACE,qEACF,CACA,uBAaE,wEAA6B,CAD7B,iBAAkB,CAClB,gCAA6B,CAH7B,qBAAsB,CARtB,WAAY,CAEZ,QAAS,CAET,iBAAkB,CAClB,gBAAiB,CAJjB,iBAAkB,CAElB,OAAQ,CAIR,oBAAqB,CARrB,UAAW,CAOX,UAMF,CACA,+HAEE,kDACF,CACA,6BACE,6BACF,CACA,6BACE,6BACF,CACA,iCACE,GACE,sBACF,CACA,GACE,uBACF,CACF,CAEA,8BACE,kCAAmC,CACnC,uBACF,CACA,sDACE,UAAW,CAEX,MAAO,CAEP,mBAAoB,CAHpB,iBAAkB,CAElB,KAEF,CACA,wEACE,UAAW,CACX,gCACF,CACA,sEAEE,iCAAkC,CADlC,SAEF,CACA,MACE,6BAMF,CACA,wCAUE,kBAAmB,CAEnB,8DAAgE,CAJhE,cAAe,CACf,YAAa,CAJb,oCAAqC,CAMrC,sBAAuB,CALvB,sDAA2D,CAJ3D,iBAAkB,CAClB,2CA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CACA,sBACE,+BACF,CAEA,6CASE,0CAA2C,CAR3C,uFAAqG,CACrG,+EAA6F,CAK7F,6BAA8B,CAC9B,qBAAsB,CAHtB,0BAA2B,CAC3B,kBAAmB,CAHnB,2BAA4B,CAC5B,mBAMF,CACA,sBACE,0CACF,CACA,uBACE,2CACF,CAEA,gCACE,GACE,SACF,CACA,IACE,UACF,CACA,GACE,SACF,CACF,CACA,gCACE,GACE,6BAA8B,CAC9B,qBACF,CACA,GACE,+BAAgC,CAChC,uBACF,CACF,CACA,iCACE,GACE,kBACF,CACA,IACE,kBACF,CACA,IACE,qBACF,CACA,GACE,kBACF,CACF,CACA,MACE,qBAAsB,CACtB,sCACF,CACA,MACE,wBAAyB,CACzB,4CACF,CAEA,MACE,qCAAsC,CACtC,iCAAkC,CAClC,uCAAwC,CACxC,+BAAgC,CAChC,sCAAuC,CACvC,kCAAmC,CACnC,mCAAoC,CACpC,sCAAuC,CACvC,yCAA0C,CAC1C,sCAAuC,CACvC,sCAAuC,CACvC,kCAAmC,CACnC,mCAAoC,CACpC,0CAA2C,CAC3C,8CAA+C,CAC/C,mCAAoC,CACpC,0CAA2C,CAC3C,2CAA4C,CAC5C,mDAAoD,CACpD,yDAA0D,CAC1D,qCAAsC,CACtC,qCAAsC,CACtC,iDAAqD,CACrD,iDAAqD,CACrD,2CACF,CACA,uBAEE,wCAAyC,CACzC,wCAAyC,CACzC,sDAA0D,CAC1D,qCAAsC,CACtC,6DACF,CACA,cAGE,YAAa,CACb,qBAAsB,CAHtB,eAAgB,CAChB,UAGF,CACA,wGAGE,iBACF,CACA,0BACE,gDACF,CACA,iCACE,WACF,CACA,6CACE,wCACF,CACA,0BACE,gDACF,CACA,kCACE,yCACF,CACA,uGAGE,WACF,CACA,kIAGE,iBACF,CACA,sBAGE,eAAgB,CADhB,cAAe,CADf,0CAGF,CACA,yCACE,WACF,CACA,oCACE,eACF,CACA,mCACE,sDAAuD,CACvD,uDACF,CACA,mDAEE,aAAc,CADd,eAEF,CACA,+DACE,sDAAuD,CACvD,uDACF,CACA,8DACE,yDAA0D,CAC1D,0DACF,CA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CACA,sCAEE,sBAAuB,CADvB,eAEF,CACA,sCACE,wBAA6B,CAE7B,oBAAqB,CADrB,YAAa,CAEb,iBACF,CACA,gEAIE,6CAA+C,CAD/C,aAEF,CACA,gYASE,yCACF,CACA,kBAME,kBAAmB,CAFnB,oDAAqD,CAGrD,sDAAuD,CANvD,sCAAuC,CAIvC,YAAa,CAHb,kDAAmD,CACnD,0CAKF,CACA,wBACE,yCAA0C,CAE1C,sCAAuC,CADvC,qCAEF,CACA,oBAEE,6CAA+C,CAD/C,aAEF,CACA,yBACE,8EAAgF,CAChF,yDACF,CACA,uBAKE,kBAAmB,CAJnB,2CAA4C,CAG5C,YAAa,CAFb,WAAY,CACZ,eAGF,CACA,6BAQE,gBAAiB,CAEjB,kCAAmC,CAEnC,iCAAkC,CAClC,4BAA6B,CAM7B,4CAA6C,CAV7C,aAAc,CAMd,aAAc,CAdd,iCAAoC,CAiBpC,cAAe,CAff,iBAAkB,CADlB,eAAmB,CAenB,WAAY,CAZZ,qBAAsB,CADtB,aAAc,CAUd,iBAAkB,CAHlB,iCAAkC,CALlC,mBAAoB,CACpB,kBAAmB,CASnB,UAAW,CAIX,UACF,CACA,kCACE,cAAe,CACf,WACF,CACA,iCACE,cAAe,CACf,WACF,CACA,uBAEE,kBAAmB,CAEnB,mDAAoD,CAEpD,2DAA4D,CAC5D,cAAe,CANf,YAAa,CAIb,cAAe,CAFf,+CAKF,CACA,uFAME,gDAAiD,CACjD,iBAAkB,CAJlB,UAAW,CAEX,UAAW,CADX,SAIF,CACA,4BACE,YACF,CAEA,MACE,4BAA6B,CAC7B,2BACF,CACA,cACE,sBACF,CACA,eACE,uBACF,CACA,qBACE,6BACF,CACA,sBACE,8BACF,CACA,gBACE,wBACF,CACA,cACE,sBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,gBACE,wBACF,CACA,oBACE,4BACF,CACA,4BACE,oCACF,CACA,uBACE,+BACF,CACA,+BACE,uCACF,CACA,4BACE,oCACF,CACA,wBACE,gCACF,CACA,0BACE,kCACF,CACA,+BACE,uCACF,CACA,8BACE,sCACF,CACA,8BACE,sCACF,CACA,yBACE,iCACF,CACA,uBACE,+BACF,CACA,qBACE,6BACF,CACA,sBACE,8BACF,CACA,uBACE,+BACF,CACA,0BACE,kCACF,CACA,wBACE,gCACF,CACA,sBACE,8BACF,CACA,6BACE,qCACF,CACA,4BACE,oCACF,CACA,uBACE,+BACF,CACA,sBACE,8BACF,CACA,wBACE,gCACF,CACA,sBACE,8BACF,CACA,oBACE,4BACF,CACA,qBACE,6BACF,CACA,uBACE,+BACF,CACA,qBACE,6BACF,CACA,mBACE,2BACF,CACA,oBACE,4BACF,CACA,iBACE,yBACF,CACA,mBACE,2BACF,CACA,kBACE,0BACF,CACA,oBACE,4BACF,CACA,YACE,oBACF,CACA,aACE,qBACF,CACA,YACE,oBACF,CACA,uBACE,+BACF,CACA,uBACE,+BACF,CACA,oBACE,4BACF,CACA,YACE,mBACF,CACA,iBACE,wBACF,CAIA,yCAFE,yBAKF,CAHA,uBACE,wBAEF,CACA,gBACE,uBACF,CAIA,wCAFE,0BAKF,CAHA,qBACE,uBAEF,CACA,WACE,kBACF,CACA,gBACE,uBACF,CAIA,uCAFE,wBAKF,CAHA,sBACE,uBAEF,CACA,eACE,sBACF,CAIA,sCAFE,yBAKF,CAHA,oBACE,sBAEF,CACA,YACE,oBACF,CACA,WACE,oBACF,CACA,SACE,8CACF,CACA,cACE,sDACF,CACA,aACE,kDACF,CACA,kBACE,0DACF,CACA,gBACE,qDACF,CACA,qBACE,6DACF,CACA,cACE,mDACF,CACA,mBACE,2DACF,CACA,eACE,oDACF,CACA,oBACE,4DACF,CACA,kBAEE,qDAAuD,CADvD,kDAEF,CACA,uBAEE,6DAAiE,CADjE,0DAEF,CACA,oBACE,mDAAqD,CACrD,oDACF,CACA,yBACE,2DAA+D,CAC/D,4DACF,CACA,QACE,4CACF,CACA,aACE,oDACF,CACA,YACE,gDACF,CACA,iBACE,wDACF,CACA,eACE,mDACF,CACA,oBACE,2DACF,CACA,aACE,iDACF,CACA,kBACE,yDACF,CACA,cACE,kDACF,CACA,mBACE,0DACF,CACA,iBAEE,mDAAqD,CADrD,gDAEF,CACA,sBAEE,2DAA+D,CAD/D,wDAEF,CACA,mBACE,iDAAmD,CACnD,kDACF,CACA,wBACE,yDAA6D,CAC7D,0DACF,CACA,qBACE,gDACF,CACA,mBACE,yDACF,CACA,uBACE,yDACF","file":"../../documenteditor/mobile/css/framework7.css","sourcesContent":["/**\n * Framework7 8.3.2\n * Full featured mobile HTML framework for building iOS & Android apps\n * https://framework7.io/\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 27, 2024\n */\n\n/*====================\n Core\n ==================== */\n:root {\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n --f7-safe-area-top: 0px;\n --f7-safe-area-bottom: 0px;\n --f7-safe-area-outer-left: 0px;\n --f7-safe-area-outer-right: 0px;\n --f7-device-pixel-ratio: 1;\n}\n@supports (left: env(safe-area-inset-left)) {\n :root {\n --f7-safe-area-top: env(safe-area-inset-top);\n --f7-safe-area-bottom: env(safe-area-inset-bottom);\n }\n :root .ios-left-edge,\n :root .ios-edges,\n :root .safe-area-left,\n :root .safe-areas,\n :root .popup,\n :root .sheet-modal,\n :root .panel-left {\n --f7-safe-area-left: env(safe-area-inset-left);\n --f7-safe-area-outer-left: env(safe-area-inset-left);\n }\n :root .ios-right-edge,\n :root .ios-edges,\n :root .safe-area-right,\n :root .safe-areas,\n :root .popup,\n :root .sheet-modal,\n :root .panel-right {\n --f7-safe-area-right: env(safe-area-inset-right);\n --f7-safe-area-outer-right: env(safe-area-inset-right);\n }\n :root .no-safe-areas,\n :root .no-safe-area-left,\n :root .no-ios-edges,\n :root .no-ios-left-edge {\n --f7-safe-area-left: 0px;\n --f7-safe-area-outer-left: 0px;\n }\n :root .no-safe-areas,\n :root .no-safe-area-right,\n :root .no-ios-edges,\n :root .no-ios-right-edge {\n --f7-safe-area-right: 0px;\n --f7-safe-area-outer-right: 0px;\n }\n}\n@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 2dppx) {\n :root {\n --f7-device-pixel-ratio: 2;\n }\n}\n@media (-webkit-min-device-pixel-ratio: 3), (min-resolution: 3dppx) {\n :root {\n --f7-device-pixel-ratio: 3;\n }\n}\n/*====================\n Fonts & Bars\n ==================== */\n:root {\n --f7-font-size: 14px;\n --f7-bars-translucent-opacity: 0.8;\n --f7-bars-translucent-blur: 20px;\n}\n.ios {\n --f7-font-family: -apple-system, SF Pro Text, SF UI Text, system-ui, Helvetica Neue, Helvetica, Arial, sans-serif;\n --f7-line-height: 1.4;\n /*\n --f7-bars-link-color: var(--f7-theme-color);\n */\n --f7-bars-text-color: #000;\n --f7-text-color: #000;\n --f7-bars-bg-color: #f7f7f8;\n --f7-bars-bg-color-rgb: 247, 247, 248;\n --f7-bars-border-color: rgba(0, 0, 0, 0.25);\n}\n.ios .dark,\n.ios.dark {\n --f7-bars-text-color: #fff;\n --f7-text-color: #fff;\n --f7-bars-bg-color: #121212;\n --f7-bars-bg-color-rgb: 22, 22, 22;\n --f7-bars-border-color: rgba(255, 255, 255, 0.16);\n}\n.md {\n --f7-font-family: Roboto, system-ui, Noto, Helvetica, Arial, sans-serif;\n --f7-line-height: 1.5;\n --f7-bars-border-color: transparent;\n --f7-text-color: #212121;\n}\n.md .dark,\n.md.dark {\n --f7-text-color: rgba(255, 255, 255, 0.87);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-bars-link-color: var(--f7-md-on-surface);\n --f7-bars-bg-color: var(--f7-md-surface-2);\n --f7-bars-bg-color-rgb: var(--f7-md-surface-2-rgb);\n}\n/*====================\n Color Themes\n ==================== */\n.text-color-primary {\n --f7-theme-color-text-color: var(--f7-theme-color);\n}\n.bg-color-primary {\n --f7-theme-color-bg-color: var(--f7-theme-color);\n}\n.border-color-primary {\n --f7-theme-color-border-color: var(--f7-theme-color);\n}\n.ripple-color-primary {\n --f7-theme-color-ripple-color: rgba(var(--f7-theme-color-rgb), 0.3);\n}\n@font-face {\n font-family: 'framework7-core-icons';\n src: url('data:application/font-woff;charset=utf-8;base64, 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') format('woff');\n font-weight: 400;\n font-style: normal;\n}\nhtml {\n overscroll-behavior: none;\n}\nhtml,\nbody,\n.framework7-root {\n position: relative;\n height: 100%;\n width: 100%;\n overflow-x: hidden;\n}\nbody {\n margin: 0;\n padding: 0;\n width: 100%;\n background: #fff;\n overflow: hidden;\n overflow-y: scroll;\n -webkit-text-size-adjust: 100%;\n -webkit-font-smoothing: antialiased;\n font-family: var(--f7-font-family);\n font-size: var(--f7-font-size);\n line-height: var(--f7-line-height);\n color: var(--f7-text-color);\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\nbody::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\nbody::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\nbody::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.dark body,\nbody.dark {\n background: #000;\n}\n.dark {\n color: var(--f7-text-color);\n}\n.framework7-root {\n overflow: hidden;\n box-sizing: border-box;\n}\n.framework7-initializing *,\n.framework7-initializing *:before,\n.framework7-initializing *:after {\n transition-duration: 0ms !important;\n}\n.device-ios,\n.device-android {\n cursor: pointer;\n}\n.device-ios {\n touch-action: manipulation;\n}\n@media (width: 1024px) and (height: 691px) and (orientation: landscape) {\n html,\n body,\n .framework7-root {\n height: 671px;\n }\n}\n@media (width: 1024px) and (height: 692px) and (orientation: landscape) {\n html,\n body,\n .framework7-root {\n height: 672px;\n }\n}\n* {\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n -webkit-touch-callout: none;\n}\na,\ninput,\ntextarea,\nselect {\n outline: 0;\n}\na {\n cursor: pointer;\n text-decoration: none;\n color: var(--f7-theme-color);\n}\n.link,\n.item-link {\n cursor: pointer;\n}\np {\n margin: 1em 0;\n}\n.disabled {\n opacity: 0.55 !important;\n pointer-events: none !important;\n}\nhtml.device-full-viewport,\nhtml.device-full-viewport body {\n height: 100vh;\n}\n.ios .md-only,\n.ios .if-md,\n.ios .if-not-ios,\n.ios .not-ios {\n display: none !important;\n}\n@media (width: 1024px) and (height: 691px) and (orientation: landscape) {\n .ios,\n .ios body,\n .ios .framework7-root {\n height: 671px;\n }\n}\n@media (width: 1024px) and (height: 692px) and (orientation: landscape) {\n .ios,\n .ios body,\n .ios .framework7-root {\n height: 672px;\n }\n}\n.md .ios-only,\n.md .if-ios,\n.md .if-not-md,\n.md .not-md {\n display: none !important;\n}\n/* === Statusbar === */\n/* === Views === */\n.views,\n.view {\n position: relative;\n height: 100%;\n z-index: 5000;\n overflow: hidden;\n box-sizing: border-box;\n}\n.framework7-root > .view,\n.framework7-root > .views {\n height: 100%;\n}\n.view-resize-handler {\n width: 6px;\n height: 100%;\n position: absolute;\n left: var(--f7-page-master-width);\n margin-left: -3px;\n top: 0;\n cursor: col-resize;\n z-index: 1000;\n display: none;\n}\n.view-master-detail .view-resize-handler {\n display: block;\n}\n/* === Pages === */\n:root {\n --f7-page-master-width: 320px;\n --f7-page-master-border-color: rgba(0, 0, 0, 0.1);\n --f7-page-master-border-width: 1px;\n --f7-page-swipeback-transition-duration: 300ms;\n --f7-page-parallax-transition-duration: 500ms;\n --f7-page-cover-transition-duration: 450ms;\n --f7-page-dive-transition-duration: 500ms;\n --f7-page-fade-transition-duration: 500ms;\n --f7-page-flip-transition-duration: 700ms;\n --f7-page-push-transition-duration: 500ms;\n /*\n --f7-page-content-extra-padding-top: 0px;\n --f7-page-content-extra-padding-bottom: 0px;\n */\n --f7-page-title-line-height: 1.2;\n --f7-page-title-text-color: inherit;\n --f7-page-title-padding-left: 16px;\n --f7-page-title-padding-right: 16px;\n}\n.ios {\n --f7-page-transition-duration: 400ms;\n --f7-page-title-font-size: 34px;\n --f7-page-title-font-weight: 700;\n --f7-page-title-letter-spacing: -0.03em;\n --f7-page-title-padding-vertical: 6px;\n --f7-page-bg-color: #efeff4;\n}\n.ios .dark,\n.ios.dark {\n --f7-page-bg-color: #000;\n}\n.md {\n --f7-page-transition-duration: 400ms;\n --f7-page-title-font-size: 34px;\n --f7-page-title-font-weight: 500;\n --f7-page-title-letter-spacing: 0;\n --f7-page-title-padding-vertical: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-page-bg-color: var(--f7-md-surface);\n}\n.dark {\n --f7-page-master-border-color: rgba(255, 255, 255, 0.2);\n}\n.pages {\n position: relative;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n.page {\n box-sizing: border-box;\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n transform: none;\n background-color: var(--f7-page-bg-color);\n z-index: 1;\n}\n.page-with-navbar-large-collapsed {\n --f7-navbar-large-collapse-progress: 1;\n}\n.page-previous {\n pointer-events: none;\n}\n.page-content {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n box-sizing: border-box;\n height: 100%;\n position: relative;\n z-index: 1;\n padding-top: calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-toolbar-top-offset, 0px) + var(--f7-page-subnavbar-offset, 0px) + var(--f7-page-searchbar-offset, 0px) + var(--f7-page-content-extra-padding-top, 0px));\n padding-bottom: calc(var(--f7-page-toolbar-bottom-offset, 0px) + var(--f7-safe-area-bottom) + var(--f7-page-content-extra-padding-bottom, 0px));\n}\n.page-transitioning,\n.page-transitioning .page-shadow-effect,\n.page-transitioning .page-opacity-effect {\n transition-duration: var(--f7-page-transition-duration);\n}\n.page-transitioning-swipeback,\n.page-transitioning-swipeback .page-shadow-effect,\n.page-transitioning-swipeback .page-opacity-effect {\n transition-duration: var(--f7-page-swipeback-transition-duration);\n}\n.router-transition-forward .page-next,\n.router-transition-backward .page-next,\n.router-transition-forward .page-current,\n.router-transition-backward .page-current {\n pointer-events: none;\n}\n.page-shadow-effect {\n position: absolute;\n top: 0;\n width: 16px;\n bottom: 0;\n z-index: -1;\n content: '';\n opacity: 0;\n right: 100%;\n background: linear-gradient(to right, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);\n}\n.page-opacity-effect {\n position: absolute;\n left: 0;\n top: 0;\n background: rgba(0, 0, 0, 0.1);\n width: 100%;\n bottom: 0;\n content: '';\n opacity: 0;\n z-index: 10000;\n}\n.ios .page-previous {\n transform: translate3d(-20%, 0, 0);\n}\n.ios .page-next {\n transform: translate3d(100%, 0, 0);\n}\n.ios .page-previous .page-opacity-effect {\n opacity: 1;\n}\n.ios .page-previous:after {\n opacity: 1;\n}\n.ios .page-current .page-shadow-effect {\n opacity: 1;\n}\n.ios .router-transition-forward .page-next {\n animation: ios-page-next-to-current var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .page-next:before {\n position: absolute;\n top: 0;\n width: 16px;\n bottom: 0;\n z-index: -1;\n content: '';\n opacity: 0;\n right: 100%;\n background: linear-gradient(to right, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);\n animation: ios-page-element-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .page-current {\n animation: ios-page-current-to-previous var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .page-current:after {\n position: absolute;\n left: 0;\n top: 0;\n background: rgba(0, 0, 0, 0.1);\n width: 100%;\n bottom: 0;\n content: '';\n opacity: 0;\n z-index: 10000;\n animation: ios-page-element-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-previous {\n animation: ios-page-previous-to-current var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-previous:after {\n position: absolute;\n left: 0;\n top: 0;\n background: rgba(0, 0, 0, 0.1);\n width: 100%;\n bottom: 0;\n content: '';\n opacity: 0;\n z-index: 10000;\n animation: ios-page-element-fade-out var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-current {\n animation: ios-page-current-to-next var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-current:before {\n position: absolute;\n top: 0;\n width: 16px;\n bottom: 0;\n z-index: -1;\n content: '';\n opacity: 0;\n right: 100%;\n background: linear-gradient(to right, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);\n animation: ios-page-element-fade-out var(--f7-page-transition-duration) forwards;\n}\n@keyframes ios-page-next-to-current {\n from {\n transform: translate3d(100%, 0, 0);\n }\n to {\n transform: translate3d(0%, 0, 0);\n }\n}\n@keyframes ios-page-previous-to-current {\n from {\n transform: translate3d(-20%, 0, 0);\n }\n to {\n transform: translate3d(0%, 0, 0);\n }\n}\n@keyframes ios-page-current-to-previous {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(-20%, 0, 0);\n }\n}\n@keyframes ios-page-current-to-next {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(100%, 0, 0);\n }\n}\n@keyframes ios-page-element-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes ios-page-element-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n.md .page-previous {\n transform: translate3d(0, -20px, 0);\n}\n.md .page-next {\n pointer-events: none;\n transform: translate3d(0, 128px, 0);\n opacity: 0;\n}\n.md .page-next.page-next-on-right {\n transform: translate3d(100%, 0, 0);\n opacity: 1;\n}\n.md .router-transition-forward .page-next {\n opacity: 1;\n animation: md-page-next-to-current var(--f7-page-transition-duration) forwards cubic-bezier(0, 0.8, 0.3, 1);\n}\n.md .router-transition-forward .page-current {\n animation: md-page-current-to-previous var(--f7-page-transition-duration) forwards cubic-bezier(0, 0.8, 0.3, 1);\n}\n.md .router-transition-backward .page-current {\n animation: md-page-current-to-next calc(var(--f7-page-transition-duration) / 4) forwards cubic-bezier(0.8, 0, 1, 0.3), md-page-current-to-next-opacity 0ms calc(var(--f7-page-transition-duration) / 4) forwards;\n}\n.md .router-transition-backward .page-previous {\n animation: md-page-previous-to-current var(--f7-page-transition-duration) forwards;\n}\n@keyframes md-page-next-to-current {\n from {\n transform: translate3d(0, 128px, 0);\n }\n to {\n transform: translate3d(0, 0px, 0);\n }\n}\n@keyframes md-page-current-to-next {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(0, 128px, 0);\n }\n}\n@keyframes md-page-current-to-next-opacity {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes md-page-current-to-previous {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(0, -20px, 0);\n }\n}\n@keyframes md-page-previous-to-current {\n from {\n transform: translate3d(0, -20px, 0);\n }\n to {\n transform: translate3d(0, 0px, 0);\n }\n}\n.view:not(.view-master-detail) .page-master-stacked {\n display: none;\n}\n.view:not(.view-master-detail) .navbar-master-stacked {\n display: none;\n}\n.view-master-detail .page-master,\n.view-master-detail .navbar-master {\n width: var(--f7-page-master-width);\n --f7-safe-area-right: 0px;\n --f7-safe-area-outer-right: 0px;\n border-right: var(--f7-page-master-border-width) solid var(--f7-page-master-border-color);\n}\n.view-master-detail .page-master-detail,\n.view-master-detail .navbar-master-detail {\n width: calc(100% - var(--f7-page-master-width));\n --f7-safe-area-left: 0px;\n --f7-safe-area-outer-left: 0px;\n left: var(--f7-page-master-width);\n}\n.view-master-detail .page-master-detail > .navbar-master-detail {\n left: 0;\n right: 0;\n width: 100%;\n}\n.view-master-detail .page-master {\n z-index: 2;\n transform: none;\n pointer-events: auto;\n}\n.view-master-detail .page-master:before,\n.view-master-detail .page-master:after {\n display: none;\n}\n.view-master-detail.router-transition .page-master {\n animation: none;\n}\n.md .router-transition-custom .page-previous,\n.ios .router-transition-custom .page-previous,\n.md .router-transition-custom .page-next,\n.ios .router-transition-custom .page-next {\n opacity: 1;\n transform: none;\n}\n.md .router-transition-custom.view-master-detail .page-master,\n.ios .router-transition-custom.view-master-detail .page-master {\n animation: none;\n}\n.page-title {\n position: relative;\n z-index: 10;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--f7-page-title-text-color);\n letter-spacing: var(--f7-page-title-letter-spacing);\n font-size: var(--f7-page-title-font-size);\n font-weight: var(--f7-page-title-font-weight);\n line-height: var(--f7-page-title-line-height);\n padding-left: calc(var(--f7-page-title-padding-left) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-page-title-padding-right) + var(--f7-safe-area-right));\n padding-top: var(--f7-page-title-padding-vertical);\n padding-bottom: var(--f7-page-title-padding-vertical);\n box-sizing: border-box;\n overflow: hidden;\n width: 100%;\n}\n.router-transition-f7-circle-forward:after,\n.router-transition-f7-circle-backward:after {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n width: 100vmax;\n height: 100vmax;\n margin-left: -50vmax;\n margin-top: -50vmax;\n background: var(--f7-page-bg-color);\n z-index: 100;\n}\n.router-transition-f7-circle-forward .page,\n.router-transition-f7-circle-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-circle-forward:after {\n transform: scale(0);\n border-radius: 50%;\n animation: f7-circle-circle-in 400ms forwards;\n}\n.ios .router-transition-f7-circle-forward .page-next,\n.md .router-transition-f7-circle-forward .page-next {\n opacity: 0;\n transform: scale(0.9);\n animation: f7-circle-next-to-current 300ms forwards;\n animation-delay: 300ms;\n z-index: 150;\n}\n.router-transition-f7-circle-backward:after {\n animation: f7-circle-circle-out 300ms forwards;\n animation-delay: 350ms;\n}\n.ios .router-transition-f7-circle-backward .page-current,\n.md .router-transition-f7-circle-backward .page-current {\n animation: f7-circle-current-to-next 700ms forwards;\n z-index: 150;\n}\n@keyframes f7-circle-circle-in {\n from {\n transform: scale(0);\n border-radius: 50%;\n }\n 50% {\n border-radius: 50%;\n }\n to {\n transform: scale(1);\n border-radius: 0%;\n }\n}\n@keyframes f7-circle-circle-out {\n from {\n transform: scale(1);\n border-radius: 0%;\n }\n 50% {\n border-radius: 50%;\n }\n to {\n transform: scale(0);\n border-radius: 50%;\n }\n}\n@keyframes f7-circle-next-to-current {\n from {\n transform: scale(0.9);\n opacity: 0;\n }\n 40% {\n transform: scale(1.035);\n opacity: 1;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n@keyframes f7-circle-current-to-next {\n from {\n transform: scale(1);\n opacity: 1;\n }\n 34% {\n transform: scale(1.035);\n opacity: 1;\n }\n 57% {\n transform: scale(0.9);\n opacity: 0;\n }\n to {\n transform: scale(0.9);\n opacity: 0;\n }\n}\n.router-transition-f7-cover-v-forward,\n.router-transition-f7-cover-v-backward {\n background: #000;\n perspective: 1200px;\n}\n.router-transition-f7-cover-v-forward .page,\n.router-transition-f7-cover-v-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-cover-v-forward .page-next {\n animation: f7-cover-v-next-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-v-forward .page-current {\n animation: f7-cover-v-current-to-prev var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-v-backward .page-current {\n animation: f7-cover-v-current-to-next var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-v-backward .page-previous {\n animation: f7-cover-v-prev-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n@keyframes f7-cover-v-next-to-current {\n from {\n transform: translateY(100%);\n }\n to {\n transform: translateY(0%);\n }\n}\n@keyframes f7-cover-v-current-to-next {\n from {\n transform: translateY(0%);\n }\n to {\n transform: translateY(100%);\n }\n}\n@keyframes f7-cover-v-current-to-prev {\n from {\n transform: translateZ(0);\n opacity: 1;\n }\n to {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n}\n@keyframes f7-cover-v-prev-to-current {\n from {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n to {\n transform: translateZ(0);\n opacity: 1;\n }\n}\n.router-transition-f7-cover-forward,\n.router-transition-f7-cover-backward {\n background: #000;\n perspective: 1200px;\n}\n.router-transition-f7-cover-forward .page,\n.router-transition-f7-cover-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-cover-forward .page-next {\n animation: f7-cover-next-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-forward .page-current {\n animation: f7-cover-current-to-prev var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-backward .page-current {\n animation: f7-cover-current-to-next var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-backward .page-previous {\n animation: f7-cover-prev-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n@keyframes f7-cover-next-to-current {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n@keyframes f7-cover-current-to-next {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(100%);\n }\n}\n@keyframes f7-cover-current-to-prev {\n from {\n transform: translateZ(0);\n opacity: 1;\n }\n to {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n}\n@keyframes f7-cover-prev-to-current {\n from {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n to {\n transform: translateZ(0);\n opacity: 1;\n }\n}\n.router-transition-f7-dive-forward,\n.router-transition-f7-dive-backward {\n background: var(--f7-page-bg-color);\n perspective: 1200px;\n}\n.router-transition-f7-dive-forward .page,\n.router-transition-f7-dive-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-dive-forward .page-next {\n animation: f7-dive-next-to-current var(--f7-page-dive-transition-duration) forwards;\n}\n.router-transition-f7-dive-forward .page-current {\n animation: f7-dive-current-to-prev var(--f7-page-dive-transition-duration) forwards;\n}\n.router-transition-f7-dive-backward .page-current {\n animation: f7-dive-current-to-next var(--f7-page-dive-transition-duration) forwards;\n}\n.router-transition-f7-dive-backward .page-previous {\n animation: f7-dive-prev-to-current var(--f7-page-dive-transition-duration) forwards;\n}\n@keyframes f7-dive-next-to-current {\n from {\n opacity: 0;\n transform: translateZ(-150px);\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 1;\n transform: translateZ(0px);\n }\n}\n@keyframes f7-dive-current-to-next {\n from {\n opacity: 1;\n transform: translateZ(0px);\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 0;\n transform: translateZ(-150px);\n }\n}\n@keyframes f7-dive-current-to-prev {\n from {\n transform: translateZ(0px);\n opacity: 1;\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 0;\n transform: translateZ(150px);\n }\n}\n@keyframes f7-dive-prev-to-current {\n from {\n opacity: 0;\n transform: translateZ(150px);\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 1;\n transform: translateZ(0px);\n }\n}\n.router-transition-f7-fade-forward,\n.router-transition-f7-fade-backward {\n background: var(--f7-page-bg-color);\n}\n.router-transition-f7-fade-forward .page,\n.router-transition-f7-fade-backward .page {\n pointer-events: none;\n}\n.ios .router-transition-f7-fade-forward .page-next,\n.md .router-transition-f7-fade-forward .page-next {\n opacity: 0;\n animation: f7-fade-in var(--f7-page-fade-transition-duration) forwards;\n}\n.ios .router-transition-f7-fade-forward .page-current,\n.md .router-transition-f7-fade-forward .page-current {\n animation: f7-fade-out var(--f7-page-fade-transition-duration) forwards;\n}\n.ios .router-transition-f7-fade-backward .page-current,\n.md .router-transition-f7-fade-backward .page-current {\n animation: f7-fade-out var(--f7-page-fade-transition-duration) forwards;\n}\n.ios .router-transition-f7-fade-backward .page-previous,\n.md .router-transition-f7-fade-backward .page-previous {\n animation: f7-fade-in var(--f7-page-fade-transition-duration) forwards;\n}\n@keyframes f7-fade-in {\n from {\n opacity: 0;\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes f7-fade-out {\n from {\n opacity: 1;\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 0;\n }\n}\n.router-transition-f7-flip-forward,\n.router-transition-f7-flip-backward {\n background: #000;\n perspective: 1200px;\n}\n.router-transition-f7-flip-forward .page,\n.router-transition-f7-flip-backward .page {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n overflow: hidden;\n pointer-events: none;\n}\n.router-transition-f7-flip-forward .page-next {\n transform-style: preserve-3d;\n animation: f7-flip-next-to-current var(--f7-page-flip-transition-duration) forwards;\n}\n.router-transition-f7-flip-forward .page-current {\n transform-style: preserve-3d;\n animation: f7-flip-current-to-prev var(--f7-page-flip-transition-duration) forwards;\n}\n.router-transition-f7-flip-backward .page-current {\n transform-style: preserve-3d;\n animation: f7-flip-current-to-next var(--f7-page-flip-transition-duration) forwards;\n}\n.router-transition-f7-flip-backward .page-previous {\n transform-style: preserve-3d;\n animation: f7-flip-prev-to-current var(--f7-page-flip-transition-duration) forwards;\n}\n@keyframes f7-flip-next-to-current {\n from {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(180deg);\n }\n to {\n border-radius: 0;\n transform: translateZ(0px) rotateY(0deg);\n }\n}\n@keyframes f7-flip-current-to-next {\n from {\n border-radius: 0px;\n transform: translateZ(0px) rotateY(0deg);\n }\n to {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(180deg);\n }\n}\n@keyframes f7-flip-current-to-prev {\n from {\n border-radius: 0px;\n transform: translateZ(0px) rotateY(0deg);\n }\n to {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(-180deg);\n }\n}\n@keyframes f7-flip-prev-to-current {\n from {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(-180deg);\n }\n to {\n border-radius: 0px;\n transform: translateZ(0px) rotateY(0deg);\n }\n}\n.router-transition-f7-parallax-forward .page {\n pointer-events: none;\n}\n.router-transition-f7-parallax-forward .page-next {\n animation: f7-parallax-next-to-current var(--f7-page-parallax-transition-duration) forwards;\n}\n.router-transition-f7-parallax-forward .page-current {\n animation: f7-parallax-current-to-prev var(--f7-page-parallax-transition-duration) forwards;\n}\n.router-transition-f7-parallax-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-parallax-backward .page-current {\n animation: f7-parallax-current-to-next var(--f7-page-parallax-transition-duration) forwards;\n}\n.router-transition-f7-parallax-backward .page-previous {\n animation: f7-parallax-prev-to-current var(--f7-page-parallax-transition-duration) forwards;\n}\n@keyframes f7-parallax-next-to-current {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n@keyframes f7-parallax-current-to-next {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(100%);\n }\n}\n@keyframes f7-parallax-current-to-prev {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(-20%);\n }\n}\n@keyframes f7-parallax-prev-to-current {\n from {\n transform: translateX(-20%);\n }\n to {\n transform: translateX(0%);\n }\n}\n.router-transition-f7-push-forward .page {\n pointer-events: none;\n}\n.router-transition-f7-push-forward .page-next {\n animation: f7-push-next-to-current var(--f7-page-push-transition-duration) forwards;\n}\n.router-transition-f7-push-forward .page-current {\n animation: f7-push-current-to-prev var(--f7-page-push-transition-duration) forwards;\n}\n.router-transition-f7-push-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-push-backward .page-current {\n animation: f7-push-current-to-next var(--f7-page-push-transition-duration) forwards;\n}\n.router-transition-f7-push-backward .page-previous {\n animation: f7-push-prev-to-current var(--f7-page-push-transition-duration) forwards;\n}\n@keyframes f7-push-next-to-current {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n@keyframes f7-push-current-to-next {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(100%);\n }\n}\n@keyframes f7-push-current-to-prev {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(-100%);\n }\n}\n@keyframes f7-push-prev-to-current {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n/* === Link === */\n:root {\n --f7-link-highlight-black: rgba(0, 0, 0, 0.1);\n --f7-link-highlight-white: rgba(255, 255, 255, 0.15);\n --f7-link-highlight-color: rgba(var(--f7-theme-color-rgb), 0.15);\n}\n.ios {\n --f7-link-pressed-opacity: 0.3;\n}\n.link,\n.tab-link {\n display: inline-flex;\n align-items: center;\n align-content: center;\n justify-content: center;\n position: relative;\n box-sizing: border-box;\n z-index: 1;\n --f7-touch-ripple-color: var(--f7-link-touch-ripple-color, rgba(var(--f7-theme-color-rgb), 0.25));\n}\n.link i + span,\n.link i + i,\n.link span + i,\n.link span + span {\n margin-left: 4px;\n}\n.link[class*='color-'] {\n color: var(--f7-theme-color);\n}\n.ios .link {\n transition: opacity 300ms;\n}\n.ios .link.active-state {\n opacity: var(--f7-link-pressed-opacity);\n transition-duration: 0ms;\n}\n/* === Navbar === */\n:root {\n /*\n --f7-navbar-bg-color: var(--f7-bars-bg-color);\n --f7-navbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-navbar-border-color: var(--f7-bars-border-color);\n */\n --f7-navbar-hide-show-transition-duration: 400ms;\n --f7-navbar-title-line-height: 1.2;\n --f7-navbar-subtitle-text-align: inherit;\n --f7-navbar-large-title-line-height: 1.2;\n --f7-navbar-large-title-text-color: inherit;\n --f7-navbar-large-title-padding-left: 16px;\n --f7-navbar-large-title-padding-right: 16px;\n}\n.ios {\n /*\n --f7-navbar-link-color: var(--f7-bars-link-color);\n --f7-navbar-text-color: var(--f7-bars-text-color);\n */\n --f7-navbar-height: 44px;\n --f7-navbar-font-size: 17px;\n --f7-navbar-title-font-size: inherit;\n --f7-navbar-inner-padding-left: 8px;\n --f7-navbar-inner-padding-right: 8px;\n --f7-navbar-title-font-weight: 600;\n --f7-navbar-title-margin-left: 0;\n --f7-navbar-title-margin-right: 0;\n --f7-navbar-title-text-align: center;\n --f7-navbar-subtitle-font-size: 10px;\n --f7-navbar-subtitle-line-height: 1;\n --f7-navbar-large-title-height: 52px;\n --f7-navbar-large-title-font-size: 34px;\n --f7-navbar-large-title-font-weight: 700;\n --f7-navbar-large-title-letter-spacing: -0.03em;\n --f7-navbar-large-title-padding-vertical: 6px;\n /*\n --f7-navbar-link-height: var(--f7-navbar-height);\n --f7-navbar-link-line-height: var(--f7-navbar-height);\n */\n --f7-navbar-subtitle-text-color: rgba(0, 0, 0, 0.55);\n}\n.ios .dark,\n.ios.dark {\n --f7-navbar-subtitle-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-navbar-height: 64px;\n --f7-navbar-font-size: 16px;\n --f7-navbar-title-font-size: 22px;\n --f7-navbar-inner-padding-left: 0px;\n --f7-navbar-inner-padding-right: 0px;\n --f7-navbar-title-font-weight: 400;\n --f7-navbar-title-margin-left: 0px;\n --f7-navbar-title-margin-right: 16px;\n --f7-navbar-title-text-align: left;\n --f7-navbar-subtitle-font-size: 14px;\n --f7-navbar-subtitle-line-height: 1.2;\n --f7-navbar-large-title-font-size: 28px;\n --f7-navbar-large-title-height: 88px;\n --f7-navbar-large-title-font-weight: 400;\n --f7-navbar-large-title-letter-spacing: 0;\n --f7-navbar-large-title-padding-vertical: 8px;\n --f7-navbar-link-height: 48px;\n --f7-navbar-link-line-height: 48px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-navbar-link-color: var(--f7-md-on-surface);\n --f7-navbar-text-color: var(--f7-md-on-surface);\n --f7-navbar-subtitle-text-color: var(--f7-md-on-surface-variant);\n}\n.navbars,\n.navbar {\n z-index: 500;\n left: 0;\n top: 0;\n width: 100%;\n}\n.navbars {\n position: absolute;\n}\n.navbars .navbar {\n z-index: auto;\n}\n.navbars .navbar-transitioning {\n z-index: 500;\n}\n.navbar {\n --f7-navbar-large-collapse-progress: 0;\n position: relative;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n box-sizing: border-box;\n margin: 0;\n height: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n color: var(--f7-navbar-text-color, var(--f7-bars-text-color));\n font-size: var(--f7-navbar-font-size);\n}\n.navbar b {\n font-weight: 500;\n}\n.navbar a {\n color: var(--f7-navbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.navbar a.link {\n display: flex;\n justify-content: flex-start;\n line-height: var(--f7-navbar-link-line-height, var(--f7-navbar-height));\n height: var(--f7-navbar-link-height, var(--f7-navbar-height));\n}\n.navbar .title,\n.navbar .left,\n.navbar .right {\n position: relative;\n z-index: 10;\n}\n.navbar .title {\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex-shrink: 10;\n font-weight: var(--f7-navbar-title-font-weight);\n display: inline-block;\n line-height: var(--f7-navbar-title-line-height);\n text-align: var(--f7-navbar-title-text-align);\n font-size: var(--f7-navbar-title-font-size);\n margin-left: var(--f7-navbar-title-margin-left);\n margin-right: var(--f7-navbar-title-margin-left);\n}\n.navbar .subtitle {\n display: block;\n color: var(--f7-navbar-subtitle-text-color);\n font-weight: normal;\n font-size: var(--f7-navbar-subtitle-font-size);\n line-height: var(--f7-navbar-subtitle-line-height);\n text-align: var(--f7-navbar-subtitle-text-align);\n}\n.navbar .left,\n.navbar .right {\n flex-shrink: 0;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.navbar .right:first-child {\n position: absolute;\n height: 100%;\n}\n.navbar.no-outline .navbar-bg:after,\n.navbar .no-outline .navbar-bg:after {\n display: none !important;\n}\n.navbar.no-outline .title-large:after,\n.navbar .no-outline .title-large:after {\n display: none !important;\n}\n.navbar.navbar-hidden .navbar-bg:before,\n.navbar-hidden .navbar .navbar-bg:before {\n opacity: 0 !important;\n}\n.navbar-bg {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 0;\n background: var(--f7-navbar-bg-color);\n background-color: var(--f7-navbar-bg-color, var(--f7-bars-bg-color));\n transition-property: transform;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .navbar-bg {\n background-color: rgba(var(--f7-navbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.navbar-bg:after,\n.navbar-bg:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.navbar-bg:after {\n content: '';\n position: absolute;\n background-color: var(--f7-navbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.navbar-bg:after {\n z-index: 1;\n}\n.navbar-transitioning,\n.navbar-transitioning .left,\n.navbar-transitioning .title,\n.navbar-transitioning .right,\n.navbar-transitioning .title-large-text,\n.navbar-transitioning .navbar-bg,\n.navbar-transitioning .subnavbar,\n.navbar-transitioning .navbar-bg:before {\n transition-duration: var(--f7-navbar-hide-show-transition-duration);\n}\n.navbar-page-transitioning {\n transition-duration: var(--f7-page-swipeback-transition-duration) !important;\n}\n.navbar-page-transitioning .title-large-text,\n.navbar-page-transitioning .navbar-bg {\n transition-duration: var(--f7-page-swipeback-transition-duration) !important;\n}\n.navbar-hidden {\n transform: translate3d(0, calc(-1 * var(--f7-navbar-height)), 0);\n}\n.navbar-hidden .navbar-inner {\n pointer-events: none;\n}\n.navbar-hidden .navbar-inner > .left,\n.navbar-hidden .navbar-inner > .title,\n.navbar-hidden .navbar-inner > .right {\n opacity: 0 !important;\n}\n.navbar-hidden .subnavbar {\n pointer-events: auto;\n}\n.navbar-hidden-statusbar {\n transform: translate3d(0, calc(-1 * var(--f7-navbar-height) - var(--f7-safe-area-top)), 0);\n}\n.navbar-large-hidden .navbar-large {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar-inner {\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n padding: var(--f7-safe-area-top) calc(var(--f7-navbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-navbar-inner-padding-left) + var(--f7-safe-area-left));\n transform: translate3d(0, 0, 0);\n z-index: 10;\n}\n.views > .navbar,\n.view > .navbar,\n.page > .navbar,\n.navbars > .navbar {\n position: absolute;\n}\n.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(\n .with-searchbar-expandable-enabled\n ) .navbar-bg,\n.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(\n .with-searchbar-expandable-enabled\n ) .title {\n opacity: 0;\n}\n.navbar-large .navbar-bg {\n height: calc(100% + var(--f7-navbar-large-title-height));\n transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.navbar-large-transparent .navbar-bg,\n.navbar-large.navbar-transparent .navbar-bg {\n opacity: var(--f7-navbar-large-collapse-progress);\n}\n.ios .router-navbar-transition-to-large .navbar-bg,\n.ios .router-navbar-transition-from-large .navbar-bg,\n.navbar-bg.ios-swipeback-navbar-bg-large,\n.navbar-large-transparent .navbar-bg.ios-swipeback-navbar-bg-large,\n.navbar-large.navbar-transparent .navbar-bg.ios-swipeback-navbar-bg-large {\n height: calc(100% + var(--f7-navbar-large-title-height));\n transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.ios .navbar:not(.navbar-large) .navbar-bg {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar-large .title {\n opacity: var(--f7-navbar-large-collapse-progress);\n}\n.navbar-large-collapsed {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar-large-collapsed .title-large {\n pointer-events: none;\n}\n.navbar .title-large {\n box-sizing: border-box;\n position: absolute;\n left: 0;\n right: 0;\n top: 100%;\n display: flex;\n white-space: nowrap;\n overflow: hidden;\n height: var(--f7-navbar-large-title-height);\n z-index: 5;\n}\n.navbar .title-large-text {\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--f7-navbar-large-title-text-color);\n letter-spacing: var(--f7-navbar-large-title-letter-spacing);\n font-size: var(--f7-navbar-large-title-font-size);\n font-weight: var(--f7-navbar-large-title-font-weight);\n line-height: var(--f7-navbar-large-title-line-height);\n padding-left: calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-navbar-large-title-padding-right) + var(--f7-safe-area-right));\n padding-top: var(--f7-navbar-large-title-padding-vertical);\n padding-bottom: var(--f7-navbar-large-title-padding-vertical);\n box-sizing: border-box;\n overflow: hidden;\n width: 100%;\n transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n transform-origin: calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center;\n}\n.navbar-no-title-large-transition .title-large-text {\n transition-duration: 0ms;\n}\n.navbar ~ *,\n.navbars ~ * {\n --f7-page-navbar-offset: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ * .page-with-navbar-large,\n.navbar ~ .page-with-navbar-large,\n.navbars ~ * .page-with-navbar-large,\n.navbars ~ .page-with-navbar-large,\n.page-with-navbar-large .navbar ~ * {\n --f7-page-navbar-offset: calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));\n}\n.page.no-navbar,\n.page.no-navbar .navbar ~ * {\n --f7-page-navbar-offset: var(--f7-safe-area-top);\n}\n.ios {\n --f7-navbarLeftTextOffset: calc(4px + 12px + var(--f7-navbar-inner-padding-left));\n --f7-navbarTitleLargeOffset: var(--f7-navbar-large-title-padding-left);\n --f7-navbar-large-bg-center-top: translateX(0) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n --f7-navbar-large-bg-center-bottom: translateX(0) translateY(0);\n --f7-navbar-large-bg-left-top: translateX(-100%) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n --f7-navbar-large-bg-left-bottom: translateX(-100%) translateY(0);\n --f7-navbar-large-bg-right-top: translateX(100%) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n --f7-navbar-large-bg-right-bottom: translateX(100%) translateY(0);\n}\n.ios .navbar .title-large {\n align-items: flex-end;\n}\n.ios .navbar a.icon-only {\n width: 44px;\n margin: 0;\n justify-content: center;\n}\n.ios .navbar .left a + a,\n.ios .navbar .right a + a {\n margin-left: 16px;\n}\n.ios .navbar b {\n font-weight: 600;\n}\n.ios .navbar .left {\n margin-right: 10px;\n}\n.ios .navbar .right {\n margin-left: 10px;\n}\n.ios .navbar .right:first-child {\n right: calc(8px + var(--f7-safe-area-right));\n}\n.ios .navbar-inner {\n justify-content: space-between;\n}\n.ios .navbar-inner-left-title {\n justify-content: flex-start;\n}\n.ios .navbar-inner-left-title .right {\n margin-left: auto;\n}\n.ios .navbar-inner-left-title .title {\n text-align: left;\n margin-right: 10px;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .left,\n.ios .view:not(.view-master-detail) .navbar-previous .left,\n.ios .navbar-next .left,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .title,\n.ios .view:not(.view-master-detail) .navbar-previous .title,\n.ios .navbar-next .title,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .right,\n.ios .view:not(.view-master-detail) .navbar-previous .right,\n.ios .navbar-next .right,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar,\n.ios .view:not(.view-master-detail) .navbar-previous .subnavbar,\n.ios .navbar-next .subnavbar,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .fading,\n.ios .view:not(.view-master-detail) .navbar-previous .fading,\n.ios .navbar-next .fading {\n opacity: 0;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master),\n.ios .view:not(.view-master-detail) .navbar-previous {\n pointer-events: none;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large,\n.ios .view:not(.view-master-detail) .navbar-previous .title-large {\n opacity: 0;\n transition-duration: 0ms;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large .title-large-text,\n.ios .view:not(.view-master-detail) .navbar-previous .title-large .title-large-text {\n transform: scale(0.5);\n transition-duration: 0ms;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar.sliding,\n.ios .view:not(.view-master-detail) .navbar-previous .subnavbar.sliding,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .sliding .subnavbar,\n.ios .view:not(.view-master-detail) .navbar-previous .sliding .subnavbar {\n opacity: 1;\n transform: translate3d(-100%, 0, 0);\n}\n.ios .view:not(.view-master-detail) .navbar-previous .navbar-bg,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .navbar-bg {\n transform: translateX(-100%);\n}\n.ios .navbar-next {\n pointer-events: none;\n}\n.ios .navbar-next .navbar-bg {\n transform: translateX(100%);\n}\n.ios .navbar-next .title-large .title-large-text {\n transition-duration: 0ms;\n transform: translateX(100%) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n}\n.ios .navbar-next .subnavbar.sliding,\n.ios .navbar-next .sliding .subnavbar {\n opacity: 1;\n transform: translate3d(100%, 0, 0);\n}\n.ios .router-transition .navbar,\n.ios .router-transition .navbar-bg {\n transition-duration: var(--f7-page-transition-duration);\n}\n.ios .router-transition .navbar-bg {\n animation-duration: var(--f7-page-transition-duration);\n animation-fill-mode: forwards;\n}\n.ios .router-transition .title-large,\n.ios .router-transition .title-large-text {\n transition-duration: 0ms;\n}\n.ios .router-transition .navbar-current .left,\n.ios .router-transition .navbar-current .title,\n.ios .router-transition .navbar-current .right,\n.ios .router-transition .navbar-current .subnavbar {\n animation: ios-navbar-element-fade-out var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition .navbar-current .sliding.left,\n.ios .router-transition .navbar-current .sliding.left .icon + span,\n.ios .router-transition .navbar-current .sliding.title,\n.ios .router-transition .navbar-current .sliding.right,\n.ios .router-transition .navbar-current .sliding .left,\n.ios .router-transition .navbar-current .sliding .left .icon + span,\n.ios .router-transition .navbar-current .sliding .title,\n.ios .router-transition .navbar-current .sliding .right {\n transition-duration: var(--f7-page-transition-duration);\n opacity: 0 !important;\n animation: none;\n}\n.ios .router-transition .navbar-current .sliding .subnavbar,\n.ios .router-transition .navbar-current .sliding.subnavbar {\n transition-duration: var(--f7-page-transition-duration);\n animation: none;\n opacity: 1;\n}\n.ios .router-transition-forward .navbar-next .left,\n.ios .router-transition-backward .navbar-previous .left,\n.ios .router-transition-forward .navbar-next .title,\n.ios .router-transition-backward .navbar-previous .title,\n.ios .router-transition-forward .navbar-next .right,\n.ios .router-transition-backward .navbar-previous .right,\n.ios .router-transition-forward .navbar-next .subnavbar,\n.ios .router-transition-backward .navbar-previous .subnavbar {\n animation: ios-navbar-element-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next .sliding.left,\n.ios .router-transition-backward .navbar-previous .sliding.left,\n.ios .router-transition-forward .navbar-next .sliding.left .icon + span,\n.ios .router-transition-backward .navbar-previous .sliding.left .icon + span,\n.ios .router-transition-forward .navbar-next .sliding.title,\n.ios .router-transition-backward .navbar-previous .sliding.title,\n.ios .router-transition-forward .navbar-next .sliding.right,\n.ios .router-transition-backward .navbar-previous .sliding.right,\n.ios .router-transition-forward .navbar-next .sliding .left,\n.ios .router-transition-backward .navbar-previous .sliding .left,\n.ios .router-transition-forward .navbar-next .sliding .left .icon + span,\n.ios .router-transition-backward .navbar-previous .sliding .left .icon + span,\n.ios .router-transition-forward .navbar-next .sliding .title,\n.ios .router-transition-backward .navbar-previous .sliding .title,\n.ios .router-transition-forward .navbar-next .sliding .right,\n.ios .router-transition-backward .navbar-previous .sliding .right,\n.ios .router-transition-forward .navbar-next .sliding .subnavbar,\n.ios .router-transition-backward .navbar-previous .sliding .subnavbar {\n transition-duration: var(--f7-page-transition-duration);\n animation: none;\n transform: translate3d(0, 0, 0) !important;\n opacity: 1 !important;\n}\n.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title,\n.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title {\n animation: none;\n}\n.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title,\n.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title,\n.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title,\n.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title {\n opacity: 0 !important;\n}\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .left,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .left,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .title,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .title,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .right,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .right,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .subnavbar,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .subnavbar {\n animation: none;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large {\n overflow: visible;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-up var(--f7-page-transition-duration) forwards, ios-navbar-large-title-text-fade-out var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large .left .back span {\n animation: ios-navbar-back-text-next-to-current var(--f7-page-transition-duration) forwards;\n transition: none;\n transform-origin: left center;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large {\n overflow: visible;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-left var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-left var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next.navbar-large:not(.navbar-large-collapsed) .title,\n.ios .router-transition-forward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title {\n animation: none;\n opacity: 0 !important;\n transition-duration: 0;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large .left .back span {\n animation: ios-navbar-back-text-current-to-previous var(--f7-page-transition-duration) forwards;\n transition: none;\n transform-origin: left center;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large {\n overflow: visible;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-right var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-right var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large {\n opacity: 0;\n}\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large {\n overflow: visible;\n opacity: 1;\n}\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-down var(--f7-page-transition-duration) forwards, ios-navbar-large-title-text-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title,\n.ios .router-transition-backward .navbar-previous.navbar-large:not(.navbar-large-collapsed) .title {\n animation: none;\n opacity: 0 !important;\n transition-duration: 0;\n}\n.ios .router-transition-forward .navbar-current .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-lb;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-lb;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-lt;\n}\n.ios .router-transition-forward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-lb;\n}\n.ios .router-transition-forward .navbar-current.navbar-large-collapsed:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-lt;\n}\n.ios .router-transition-forward .navbar-next .navbar-bg {\n animation-name: ios-navbar-bg-from-rb-to-cb;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-rb-to-cb;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-rb-to-ct;\n}\n.ios .router-transition-forward .navbar-next:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-rt-to-cb;\n}\n.ios .router-transition-backward .navbar-current .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-rb;\n}\n.ios .router-transition-backward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-rb;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-rt;\n}\n.ios .router-transition-backward .navbar-current.navbar-large-collapsed .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-rt;\n}\n.ios .router-transition-backward .navbar-current.navbar-large-collapsed.router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-rb;\n}\n.ios .router-transition-backward .navbar-previous .navbar-bg {\n animation-name: ios-navbar-bg-from-lb-to-cb;\n}\n.ios .router-transition-backward .navbar-previous:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-lt-to-cb;\n}\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-lb-to-ct;\n}\n.ios .router-transition-backward .navbar-previous.navbar-large-collapsed .navbar-bg {\n animation-name: ios-navbar-bg-from-lt-to-ct;\n}\n.view-master-detail .navbars {\n z-index: auto;\n}\n.view-master-detail .page-master {\n z-index: 525;\n}\n.view-master-detail .navbar-master .navbar-inner,\n.view-master-detail .navbar-master .navbar-bg {\n z-index: 550;\n}\n.view-master-detail .navbar-master-detail .navbar-inner,\n.view-master-detail .navbar-master-detail .navbar-bg {\n z-index: 500;\n}\n.view-master-detail .navbar-master.navbar-previous {\n pointer-events: auto;\n}\n.view-master-detail .navbar-master.navbar-previous .left,\n.view-master-detail .navbar-master.navbar-previous:not(.navbar-large) .title,\n.view-master-detail .navbar-master.navbar-previous .right,\n.view-master-detail .navbar-master.navbar-previous .subnavbar {\n opacity: 1;\n}\n.view-master-detail.router-transition .navbar-master .left,\n.view-master-detail.router-transition .navbar-master .left .icon + span,\n.view-master-detail.router-transition .navbar-master:not(.navbar-large) .title,\n.view-master-detail.router-transition .navbar-master .right,\n.view-master-detail.router-transition .navbar-master .subnavbar,\n.view-master-detail.router-transition .navbar-master .fading {\n opacity: 1 !important;\n transition-duration: 0ms;\n transform: none !important;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master .navbar-bg {\n transition-duration: 0ms;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master.navbar-large .title {\n opacity: calc(-1 + 2 * var(--f7-navbar-large-collapse-progress)) !important;\n transition-duration: 0ms;\n transform: none !important;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master.navbar-large .title-large,\n.view-master-detail.router-transition .navbar-master.navbar-large .title-large-text {\n transition-duration: 0ms;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master.navbar-large-transparent .navbar-bg,\n.view-master-detail.router-transition .navbar-master.navbar-large.navbar-transparent .navbar-bg {\n height: 100% !important;\n opacity: var(--f7-navbar-large-collapse-progress) !important;\n}\n@keyframes ios-navbar-element-fade-in {\n 0% {\n opacity: 0;\n }\n 25% {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes ios-navbar-element-fade-out {\n from {\n opacity: 1;\n }\n 75% {\n opacity: 0;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes ios-navbar-large-title-text-slide-up {\n 0% {\n transform: translateX(0px) translateY(0%) scale(1);\n }\n 100% {\n transform: translateX(calc(var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset))) translateY(calc(-1 * var(--f7-navbar-large-title-height) + var(--f7-navbar-large-title-padding-vertical))) scale(0.5);\n }\n}\n@keyframes ios-navbar-large-title-text-slide-down {\n 0% {\n transform: translateX(calc(var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset))) translateY(calc(-1 * var(--f7-navbar-large-title-height) + var(--f7-navbar-large-title-padding-vertical) / 2)) scale(0.5);\n }\n 100% {\n transform: translateX(0px) translateY(0%) scale(1);\n }\n}\n@keyframes ios-navbar-large-title-text-slide-left {\n 0% {\n transform: translateX(100%);\n }\n 100% {\n transform: translateX(0%);\n }\n}\n@keyframes ios-navbar-large-title-text-slide-right {\n 0% {\n transform: translateX(0%);\n }\n 100% {\n transform: translateX(100%);\n }\n}\n@keyframes ios-navbar-large-title-text-fade-out {\n 0% {\n opacity: 1;\n }\n 80% {\n opacity: 0;\n }\n 100% {\n opacity: 0;\n }\n}\n@keyframes ios-navbar-large-title-text-fade-in {\n 0% {\n opacity: 0;\n }\n 20% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes ios-navbar-back-text-current-to-previous {\n 0% {\n opacity: 1;\n transform: translateY(0px) translateX(0px) scale(1);\n }\n 80% {\n opacity: 0;\n }\n 100% {\n opacity: 0;\n transform: translateX(calc(var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset))) translateY(calc(1 * var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2)) scale(2);\n }\n}\n@keyframes ios-navbar-back-text-next-to-current {\n 0% {\n opacity: 0;\n transform: translateX(calc(var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset))) translateY(calc(1 * var(--f7-navbar-large-title-height) + var(--f7-navbar-large-title-padding-vertical) / 2)) scale(2);\n }\n 20% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n transform: translateX(0px) translateY(0px) scale(1);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-lb {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-lt {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-lb {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-lt {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n}\n@keyframes ios-navbar-bg-from-rb-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-rb-to-ct {\n from {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n}\n@keyframes ios-navbar-bg-from-rt-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-right-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-rb {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-rb {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-rt {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-top);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-rt {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-top);\n }\n}\n@keyframes ios-navbar-bg-from-lb-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-lt-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-lb-to-ct {\n from {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n}\n@keyframes ios-navbar-bg-from-lt-to-ct {\n from {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n}\n.md .navbar .title-large {\n align-items: center;\n}\n.md .navbar .left {\n margin-left: 4px;\n margin-right: 4px;\n}\n.md .navbar a.link {\n padding: 0 12px;\n min-width: 48px;\n}\n.md .navbar a.icon-only {\n min-width: 0;\n flex-shrink: 0;\n width: 48px;\n}\n.md .navbar .right {\n margin-left: auto;\n margin-right: 4px;\n}\n.md .navbar .right:first-child {\n right: var(--f7-safe-area-right);\n}\n.md .navbar-inner {\n justify-content: flex-start;\n overflow: hidden;\n}\n.md .navbar-large:not(.navbar-large-collapsed) .navbar-inner {\n overflow: visible;\n}\n.md .page.page-with-subnavbar .navbar-inner {\n overflow: visible;\n}\n.md .navbar-inner:not(.navbar-inner-centered-title) .title:first-child {\n margin-left: 16px;\n}\n.md .navbar-inner-centered-title {\n justify-content: space-between;\n}\n.md .navbar-inner-centered-title .right {\n margin-left: 0;\n}\n.md .navbar-inner-centered-title .title {\n text-align: center;\n}\n/* === Toolbar === */\n:root {\n /*\n --f7-toolbar-bg-color: var(--f7-bars-bg-color);\n --f7-toolbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-toolbar-border-color: var(--f7-bars-border-color);\n --f7-toolbar-link-color: var(--f7-bars-link-color);\n --f7-toolbar-text-color: var(--f7-bars-text-color);\n */\n --f7-tabbar-link-active-bg-color: transparent;\n --f7-tabbar-label-text-transform: none;\n --f7-toolbar-hide-show-transition-duration: 400ms;\n}\n.ios {\n --f7-toolbar-height: 44px;\n --f7-toolbar-font-size: 17px;\n --f7-toolbar-inner-padding-left: 8px;\n --f7-toolbar-inner-padding-right: 8px;\n --f7-toolbar-link-font-weight: 400;\n /*\n --f7-toolbar-link-height: var(--f7-toolbar-height);\n --f7-toolbar-link-line-height: var(--f7-toolbar-height);\n --f7-tabbar-link-active-color: var(--f7-theme-color);\n */\n --f7-tabbar-icons-height: 50px;\n --f7-tabbar-icons-tablet-height: 50px;\n --f7-tabbar-icon-size: 28px;\n --f7-tabbar-link-text-transform: none;\n --f7-tabbar-link-font-weight: 400;\n --f7-tabbar-link-letter-spacing: 0;\n --f7-tabbar-label-font-size: 12px;\n --f7-tabbar-label-tablet-font-size: 14px;\n --f7-tabbar-label-font-weight: 500;\n --f7-tabbar-label-letter-spacing: 0.01;\n --f7-tabbar-link-inactive-color: rgba(0, 0, 0, 0.4);\n}\n.ios .dark,\n.ios.dark {\n --f7-tabbar-link-inactive-color: rgba(255, 255, 255, 0.54);\n}\n.md {\n --f7-toolbar-height: 56px;\n --f7-toolbar-font-size: 14px;\n --f7-toolbar-inner-padding-left: 0px;\n --f7-toolbar-inner-padding-right: 0px;\n /*\n --f7-toolbar-link-height: var(--f7-toolbar-height);\n --f7-toolbar-link-line-height: var(--f7-toolbar-height);\n */\n --f7-tabbar-icons-height: 80px;\n --f7-tabbar-icons-tablet-height: 80px;\n --f7-tabbar-icon-size: 24px;\n --f7-tabbar-link-text-transform: none;\n --f7-tabbar-link-font-weight: 500;\n --f7-tabbar-link-letter-spacing: 0;\n --f7-toolbar-link-font-weight: 500;\n --f7-tabbar-label-font-size: 12px;\n --f7-tabbar-label-tablet-font-size: 12px;\n --f7-tabbar-label-font-weight: 500;\n --f7-tabbar-label-letter-spacing: 0;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-tabbar-link-active-color: var(--f7-md-on-secondary-container);\n --f7-tabbar-link-active-border-color: var(--f7-md-primary);\n --f7-tabbar-link-inactive-color: var(--f7-md-on-surface-variant);\n --f7-tabbar-link-active-icon-bg-color: var(--f7-md-secondary-container);\n}\n.toolbar {\n width: 100%;\n position: relative;\n margin: 0;\n transform: translate3d(0, 0, 0);\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n z-index: 600;\n box-sizing: border-box;\n left: 0;\n height: var(--f7-toolbar-height);\n background-color: var(--f7-toolbar-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-toolbar-text-color, var(--f7-bars-text-color));\n font-size: var(--f7-toolbar-font-size);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .toolbar {\n background-color: rgba(var(--f7-toolbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.toolbar b {\n font-weight: 600;\n}\n.toolbar a {\n color: var(--f7-toolbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n box-sizing: border-box;\n flex-shrink: 1;\n position: relative;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.toolbar .link {\n display: flex;\n line-height: var(--f7-toolbar-link-line-height, var(--f7-toolbar-height));\n height: var(--f7-toolbar-link-height, var(--f7-toolbar-height));\n font-weight: var(--f7-toolbar-link-font-weight);\n}\n.toolbar i.icon {\n display: block;\n}\n.toolbar:after,\n.toolbar:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.views > .toolbar,\n.view > .toolbar,\n.page > .toolbar {\n position: absolute;\n}\n.toolbar-top,\n.ios .toolbar-top-ios,\n.md .toolbar-top-md {\n top: 0;\n}\n.toolbar-top .tab-link-highlight,\n.ios .toolbar-top-ios .tab-link-highlight,\n.md .toolbar-top-md .tab-link-highlight {\n bottom: 0;\n}\n.toolbar-top.no-outline:after,\n.ios .toolbar-top-ios.no-outline:after,\n.md .toolbar-top-md.no-outline:after {\n display: none !important;\n}\n.toolbar-top.toolbar-hidden:before,\n.ios .toolbar-top-ios.toolbar-hidden:before,\n.md .toolbar-top-md.toolbar-hidden:before {\n display: none !important;\n}\n.toolbar-top:after,\n.ios .toolbar-top-ios:after,\n.md .toolbar-top-md:after,\n.toolbar-top:before,\n.ios .toolbar-top-ios:before,\n.md .toolbar-top-md:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.toolbar-top:after,\n.ios .toolbar-top-ios:after,\n.md .toolbar-top-md:after {\n content: '';\n position: absolute;\n background-color: var(--f7-toolbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.toolbar-bottom,\n.ios .toolbar-bottom-ios,\n.md .toolbar-bottom-md {\n bottom: 0;\n height: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n}\n.toolbar-bottom .tab-link-highlight,\n.ios .toolbar-bottom-ios .tab-link-highlight,\n.md .toolbar-bottom-md .tab-link-highlight {\n top: 0;\n}\n.toolbar-bottom .toolbar-inner,\n.ios .toolbar-bottom-ios .toolbar-inner,\n.md .toolbar-bottom-md .toolbar-inner {\n height: auto;\n top: 0;\n bottom: var(--f7-safe-area-bottom);\n}\n.toolbar-bottom.no-outline:before,\n.ios .toolbar-bottom-ios.no-outline:before,\n.md .toolbar-bottom-md.no-outline:before {\n display: none !important;\n}\n.toolbar-bottom.toolbar-hidden:after,\n.ios .toolbar-bottom-ios.toolbar-hidden:after,\n.md .toolbar-bottom-md.toolbar-hidden:after {\n display: none !important;\n}\n.toolbar-bottom:before,\n.ios .toolbar-bottom-ios:before,\n.md .toolbar-bottom-md:before {\n content: '';\n position: absolute;\n background-color: var(--f7-toolbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.toolbar-inner {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n align-content: center;\n overflow: hidden;\n padding: 0 calc(var(--f7-toolbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-toolbar-inner-padding-left) + var(--f7-safe-area-left));\n}\n.views > .tabbar,\n.views > .tabbar-icons {\n z-index: 5001;\n}\n.tabbar a,\n.tabbar-icons a {\n color: var(--f7-tabbar-link-inactive-color);\n}\n.tabbar .link,\n.tabbar-icons .link {\n line-height: 1.4;\n}\n.tabbar .tab-link,\n.tabbar-icons .tab-link,\n.tabbar .link,\n.tabbar-icons .link {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n text-transform: var(--f7-tabbar-link-text-transform);\n font-weight: var(--f7-tabbar-link-font-weight);\n letter-spacing: var(--f7-tabbar-link-letter-spacing);\n overflow: hidden;\n}\n.tabbar .tab-link-active,\n.tabbar-icons .tab-link-active {\n color: var(--f7-tabbar-link-active-color, var(--f7-theme-color));\n background-color: var(--f7-tabbar-link-active-bg-color, transparent);\n}\n.tabbar i.icon,\n.tabbar-icons i.icon {\n font-size: var(--f7-tabbar-icon-size);\n height: var(--f7-tabbar-icon-size);\n line-height: var(--f7-tabbar-icon-size);\n}\n.md .tabbar.tabbar-icons .tab-link-highlight,\n.md .tabbar-icons.tabbar-icons .tab-link-highlight {\n display: none;\n}\n.md .tabbar:not(.tabbar-icons) .tab-link-highlight,\n.md .tabbar-icons:not(.tabbar-icons) .tab-link-highlight {\n position: absolute;\n height: 2px;\n background: var(--f7-tabbar-link-active-border-color, var(--f7-theme-color));\n transition-duration: 300ms;\n left: 0;\n}\n.tabbar-icons {\n --f7-toolbar-height: var(--f7-tabbar-icons-height);\n}\n.tabbar-icons .tab-link,\n.tabbar-icons .link {\n height: 100%;\n justify-content: center;\n align-items: center;\n}\n.tabbar-icons .tabbar-label {\n display: block;\n line-height: 1;\n margin: 0;\n position: relative;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--f7-tabbar-label-font-size);\n text-transform: var(--f7-tabbar-label-text-transform);\n font-weight: var(--f7-tabbar-label-font-weight);\n letter-spacing: var(--f7-tabbar-label-letter-spacing);\n}\n@media (min-width: 768px) and (min-height: 600px) {\n :root {\n --f7-tabbar-icons-height: var(--f7-tabbar-icons-tablet-height);\n --f7-tabbar-label-font-size: var(--f7-tabbar-label-tablet-font-size);\n }\n}\n.tabbar-scrollable .toolbar-inner {\n justify-content: flex-start;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.tabbar-scrollable .toolbar-inner::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.tabbar-scrollable .tab-link,\n.tabbar-scrollable .link {\n width: auto;\n flex-shrink: 0;\n}\n.toolbar-transitioning,\n.navbar-transitioning + .toolbar,\n.navbar-transitioning ~ * .toolbar {\n transition-duration: var(--f7-toolbar-hide-show-transition-duration);\n}\n.toolbar-bottom ~ *,\n.ios .toolbar-bottom-ios ~ *,\n.md .toolbar-bottom-md ~ * {\n --f7-page-toolbar-bottom-offset: var(--f7-toolbar-height);\n}\n.toolbar-bottom.tabbar-icons ~ *,\n.ios .toolbar-bottom-ios.tabbar-icons ~ *,\n.md .toolbar-bottom-md.tabbar-icons ~ * {\n --f7-page-toolbar-bottom-offset: var(--f7-tabbar-icons-height);\n}\n.toolbar-bottom.toolbar-hidden,\n.ios .toolbar-bottom-ios.toolbar-hidden,\n.md .toolbar-bottom-md.toolbar-hidden {\n transform: translate3d(0, 100%, 0);\n}\n.toolbar-top ~ *,\n.ios .toolbar-top-ios ~ *,\n.md .toolbar-top-md ~ * {\n --f7-page-toolbar-top-offset: var(--f7-toolbar-height);\n}\n.toolbar-top.tabbar-icons ~ *,\n.ios .toolbar-top-ios.tabbar-icons ~ *,\n.md .toolbar-top-md.tabbar-icons ~ * {\n --f7-page-toolbar-top-offset: var(--f7-tabbar-icons-height);\n}\n.toolbar-top.toolbar-hidden,\n.ios .toolbar-top-ios.toolbar-hidden,\n.md .toolbar-top-md.toolbar-hidden {\n transform: translate3d(0, -100%, 0);\n}\n.navbar ~ .toolbar-top,\n.navbars ~ .toolbar-top,\n.ios .navbar ~ .toolbar-top-ios,\n.ios .navbars ~ .toolbar-top-ios,\n.md .navbar ~ .toolbar-top-md,\n.navbar ~ * .toolbar-top,\n.navbars ~ * .toolbar-top,\n.ios .navbar ~ * .toolbar-top-ios,\n.ios .navbars ~ * .toolbar-top-ios,\n.md .navbar ~ * .toolbar-top-md,\n.navbar ~ .page:not(.no-navbar) .toolbar-top,\n.navbars ~ .page:not(.no-navbar) .toolbar-top,\n.ios .navbar ~ .page:not(.no-navbar) .toolbar-top-ios,\n.ios .navbars ~ .page:not(.no-navbar) .toolbar-top-ios,\n.md .navbar ~ .page:not(.no-navbar) .toolbar-top-md {\n top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ .toolbar-top.toolbar-hidden,\n.navbars ~ .toolbar-top.toolbar-hidden,\n.ios .navbar ~ .toolbar-top-ios.toolbar-hidden,\n.ios .navbars ~ .toolbar-top-ios.toolbar-hidden,\n.md .navbar ~ .toolbar-top-md.toolbar-hidden,\n.navbar ~ * .toolbar-top.toolbar-hidden,\n.navbars ~ * .toolbar-top.toolbar-hidden,\n.ios .navbar ~ * .toolbar-top-ios.toolbar-hidden,\n.ios .navbars ~ * .toolbar-top-ios.toolbar-hidden,\n.md .navbar ~ * .toolbar-top-md.toolbar-hidden,\n.navbar ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden,\n.navbars ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden,\n.ios .navbar ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,\n.ios .navbars ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,\n.md .navbar ~ .page:not(.no-navbar) .toolbar-top-md.toolbar-hidden {\n transform: translate3d(0, calc(-1 * (var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top))), 0);\n}\n.navbar ~ .toolbar-top.toolbar-hidden.tabbar-icons,\n.navbars ~ .toolbar-top.toolbar-hidden.tabbar-icons,\n.ios .navbar ~ .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.ios .navbars ~ .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.md .navbar ~ .toolbar-top-md.toolbar-hidden.tabbar-icons,\n.navbar ~ * .toolbar-top.toolbar-hidden.tabbar-icons,\n.navbars ~ * .toolbar-top.toolbar-hidden.tabbar-icons,\n.ios .navbar ~ * .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.ios .navbars ~ * .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.md .navbar ~ * .toolbar-top-md.toolbar-hidden.tabbar-icons,\n.navbar ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,\n.navbars ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,\n.ios .navbar ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.ios .navbars ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.md .navbar ~ .page:not(.no-navbar) .toolbar-top-md.toolbar-hidden.tabbar-icons {\n transform: translate3d(0, calc(-1 * (var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top))), 0);\n}\n.navbar-hidden + .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-hidden + .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-hidden + .toolbar-top-md:not(.toolbar-hidden),\n.navbar-hidden ~ * .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-hidden ~ * .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-hidden ~ * .toolbar-top-md:not(.toolbar-hidden) {\n transform: translate3d(0, calc(0px - var(--f7-navbar-height)), 0);\n}\n.navbar-large-hidden + .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-large-hidden + .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-large-hidden + .toolbar-top-md:not(.toolbar-hidden),\n.navbar-large-hidden ~ * .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-large-hidden ~ * .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-large-hidden ~ * .toolbar-top-md:not(.toolbar-hidden) {\n transform: translate3d(0, calc(0px - var(--f7-navbar-height) - var(--f7-navbar-large-title-height)), 0);\n}\n.ios .toolbar a.icon-only {\n min-height: var(--f7-toolbar-height);\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 0;\n min-width: 44px;\n}\n.ios .tabbar-icons .tab-link,\n.ios .tabbar-icons .link {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n.ios .tabbar-icons .tab-link i + span,\n.ios .tabbar-icons .link i + span {\n margin: 0;\n margin-top: 4px;\n}\n@media (min-width: 768px) and (min-height: 600px) {\n .ios .tabbar .tab-link,\n .ios .tabbar-icons .tab-link,\n .ios .tabbar .link,\n .ios .tabbar-icons .link {\n justify-content: center;\n flex-direction: row;\n }\n .ios .tabbar .tab-link i + span,\n .ios .tabbar-icons .tab-link i + span,\n .ios .tabbar .link i + span,\n .ios .tabbar-icons .link i + span {\n margin-left: 5px;\n }\n}\n.ios .tabbar-scrollable .toolbar-inner {\n justify-content: flex-start;\n}\n.ios .tabbar-scrollable .tab-link,\n.ios .tabbar-scrollable .link {\n padding: 0 8px;\n}\n.md .toolbar .link {\n justify-content: center;\n padding: 0 12px;\n min-width: 48px;\n}\n.md .toolbar a.icon-only {\n min-width: 0;\n flex-shrink: 0;\n}\n.md .tabbar .tab-link,\n.md .tabbar-icons .tab-link,\n.md .tabbar .link,\n.md .tabbar-icons .link {\n padding-left: 0;\n padding-right: 0;\n}\n.md .tabbar a.icon-only,\n.md .tabbar-icons a.icon-only {\n flex-shrink: initial;\n}\n.md .tabbar .tab-link,\n.md .tabbar-icons .tab-link {\n transition-duration: 300ms;\n overflow: hidden;\n position: relative;\n}\n.md .tabbar i.icon,\n.md .tabbar-icons i.icon {\n position: relative;\n}\n.md .tabbar i.icon::before,\n.md .tabbar-icons i.icon::before {\n content: '';\n width: 64px;\n height: 32px;\n border-radius: 32px;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translateX(-50%) translateY(-50%) scaleX(0.5);\n background: var(--f7-tabbar-link-active-icon-bg-color);\n opacity: 0;\n transition-duration: 200ms;\n z-index: -1;\n}\n.md .tabbar i.icon + .tabbar-label,\n.md .tabbar-icons i.icon + .tabbar-label {\n margin-top: 8px;\n}\n.md .tabbar .tab-link-active i.icon::before,\n.md .tabbar-icons .tab-link-active i.icon::before {\n opacity: 1;\n transform: translateX(-50%) translateY(-50%) scaleX(1);\n}\n.md .tabbar-icons .tab-link,\n.md .tabbar-icons .link {\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.md .tabbar-label {\n max-width: 100%;\n overflow: hidden;\n line-height: 1.2;\n}\n.md .tabbar-scrollable .toolbar-inner {\n overflow: auto;\n}\n.md .tabbar-scrollable .tab-link,\n.md .tabbar-scrollable .link {\n padding: 0 12px;\n}\n/* === Subnavbar === */\n:root {\n /*\n --f7-subnavbar-bg-color: var(--f7-bars-bg-color);\n --f7-subnavbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-subnavbar-border-color: var(--f7-bars-border-color);\n --f7-subnavbar-link-color: var(--f7-bars-link-color);\n --f7-subnavbar-text-color: var(--f7-bars-text-color);\n */\n --f7-subnavbar-title-line-height: 1.2;\n}\n.ios {\n --f7-subnavbar-height: 44px;\n --f7-subnavbar-inner-padding-left: 8px;\n --f7-subnavbar-inner-padding-right: 8px;\n --f7-subnavbar-title-font-size: 34px;\n --f7-subnavbar-title-font-weight: 700;\n --f7-subnavbar-title-letter-spacing: -0.03em;\n --f7-subnavbar-title-margin-left: 8px;\n /*\n --f7-subnavbar-link-height: var(--f7-subnavbar-height);\n --f7-subnavbar-link-line-height: var(--f7-subnavbar-height);\n */\n}\n.md {\n --f7-subnavbar-height: 64px;\n --f7-subnavbar-inner-padding-left: 16px;\n --f7-subnavbar-inner-padding-right: 16px;\n --f7-subnavbar-title-font-size: 22px;\n --f7-subnavbar-title-font-weight: 400;\n --f7-subnavbar-title-letter-spacing: 0;\n --f7-subnavbar-title-margin-left: 0px;\n /*\n --f7-subnavbar-link-height: var(--f7-subnavbar-height);\n --f7-subnavbar-link-line-height: var(--f7-subnavbar-height);\n */\n}\n.subnavbar {\n width: 100%;\n position: absolute;\n left: 0;\n top: 0;\n z-index: 600;\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background-color: var(--f7-subnavbar-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-subnavbar-text-color, var(--f7-bars-text-color));\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .subnavbar {\n background-color: rgba(var(--f7-subnavbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.subnavbar .subnavbar-title {\n position: relative;\n overflow: hidden;\n text-overflow: ellpsis;\n white-space: nowrap;\n font-size: var(--f7-subnavbar-title-font-size);\n font-weight: var(--f7-subnavbar-title-font-weight);\n text-align: left;\n display: inline-block;\n line-height: var(--f7-subnavbar-title-line-height);\n letter-spacing: var(--f7-subnavbar-title-letter-spacing);\n margin-left: var(--f7-subnavbar-title-margin-left);\n}\n.subnavbar .left,\n.subnavbar .right {\n flex-shrink: 0;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.subnavbar .right:first-child {\n position: absolute;\n height: 100%;\n}\n.subnavbar a {\n color: var(--f7-subnavbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.subnavbar a.link {\n line-height: var(--f7-subnavbar-link-line-height, var(--f7-subnavbar-height));\n height: var(--f7-subnavbar-link-height, var(--f7-subnavbar-height));\n}\n.subnavbar a.icon-only {\n min-width: var(--f7-subnavbar-height);\n}\n.subnavbar.no-outline:after {\n display: none !important;\n}\n.subnavbar.navbar-hidden:before {\n display: none !important;\n}\n.subnavbar:after,\n.subnavbar:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.subnavbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-subnavbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.subnavbar-inner {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n justify-content: space-between;\n overflow: hidden;\n padding: 0 calc(var(--f7-subnavbar-inner-padding-left) + var(--f7-safe-area-right)) 0 calc(var(--f7-subnavbar-inner-padding-right) + var(--f7-safe-area-left));\n}\n.navbar .subnavbar {\n top: 100%;\n}\n.views > .subnavbar,\n.view > .subnavbar,\n.page > .subnavbar {\n position: absolute;\n}\n.navbar ~ * .subnavbar,\n.navbars ~ * .subnavbar,\n.page-with-subnavbar .navbar ~ .subnavbar,\n.page-with-subnavbar .navbar ~ * .subnavbar,\n.navbar ~ .page-with-subnavbar:not(.no-navbar) .subnavbar,\n.navbar ~ .subnavbar,\n.navbars ~ .page-with-subnavbar:not(.no-navbar) .subnavbar,\n.navbars ~ .subnavbar {\n top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ .page-with-navbar-large:not(.no-navbar) .subnavbar,\n.navbars ~ .page-with-navbar-large:not(.no-navbar) .subnavbar,\n.page-with-subnavbar.page-with-navbar-large .navbar ~ .subnavbar,\n.page-with-subnavbar.page-with-navbar-large .navbar ~ * .subnavbar,\n.navbar .title-large ~ .subnavbar {\n top: calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));\n transform: translate3d(0, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.page-with-subnavbar,\n.subnavbar ~ * {\n --f7-page-subnavbar-offset: var(--f7-subnavbar-height);\n}\n.ios .subnavbar {\n height: calc(var(--f7-subnavbar-height) + 1px);\n margin-top: -1px;\n padding-top: 1px;\n}\n.ios .subnavbar .title {\n align-self: flex-start;\n flex-shrink: 10;\n}\n.ios .subnavbar .left a + a,\n.ios .subnavbar .right a + a {\n margin-left: 16px;\n}\n.ios .subnavbar .left {\n margin-right: 10px;\n}\n.ios .subnavbar .right {\n margin-left: 10px;\n}\n.ios .subnavbar .right:first-child {\n right: 8px;\n}\n.ios .subnavbar a.link {\n justify-content: flex-start;\n}\n.ios .subnavbar a.icon-only {\n justify-content: center;\n margin: 0;\n}\n.md .subnavbar {\n height: var(--f7-subnavbar-height);\n}\n.md .subnavbar .right {\n margin-left: auto;\n}\n.md .subnavbar .right:first-child {\n right: 16px;\n}\n.md .subnavbar a.link {\n justify-content: center;\n padding: 0 12px;\n}\n.md .subnavbar a.icon-only {\n flex-shrink: 0;\n padding: 0 12px;\n}\n.md .subnavbar-inner > a.link:first-child {\n margin-left: calc(-1 * var(--f7-subnavbar-inner-padding-left));\n}\n.md .subnavbar-inner > a.link:last-child {\n margin-right: calc(-1 * var(--f7-subnavbar-inner-padding-right));\n}\n/* === Content Block === */\n:root {\n --f7-block-padding-horizontal: 16px;\n --f7-block-padding-vertical: 16px;\n --f7-block-font-size: inherit;\n --f7-block-header-margin: 10px;\n --f7-block-footer-margin: 10px;\n --f7-block-header-font-size: 14px;\n --f7-block-footer-font-size: 14px;\n --f7-block-title-text-transform: none;\n --f7-block-title-white-space: nowrap;\n --f7-block-title-medium-text-transform: none;\n --f7-block-title-large-text-transform: none;\n --f7-block-inset-side-margin: 16px;\n}\n:root .dark,\n:root.dark {\n --f7-block-outline-border-color: rgba(255, 255, 255, 0.15);\n}\n.ios {\n --f7-block-text-color: inherit;\n --f7-block-margin-vertical: 35px;\n --f7-block-outline-border-color: rgba(0, 0, 0, 0.22);\n --f7-block-title-font-size: 16px;\n --f7-block-title-font-weight: 600;\n --f7-block-title-line-height: 20px;\n --f7-block-title-margin-bottom: 10px;\n --f7-block-title-medium-font-size: 22px;\n --f7-block-title-medium-font-weight: bold;\n --f7-block-title-medium-line-height: 1.4;\n --f7-block-title-large-font-size: 30px;\n --f7-block-title-large-font-weight: bold;\n --f7-block-title-large-line-height: 1.3;\n --f7-block-inset-border-radius: 8px;\n --f7-block-title-text-color: #000;\n --f7-block-strong-text-color: #000;\n --f7-block-header-text-color: rgba(0, 0, 0, 0.45);\n --f7-block-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-block-strong-bg-color: #fff;\n --f7-block-title-medium-text-color: #000;\n --f7-block-title-large-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-block-title-text-color: #fff;\n --f7-block-header-text-color: rgba(255, 255, 255, 0.55);\n --f7-block-footer-text-color: rgba(255, 255, 255, 0.55);\n --f7-block-strong-text-color: #fff;\n --f7-block-strong-bg-color: #1c1c1d;\n --f7-block-title-medium-text-color: #fff;\n --f7-block-title-large-text-color: #fff;\n}\n.md {\n --f7-block-margin-vertical: 32px;\n --f7-block-title-font-size: inherit;\n --f7-block-title-font-weight: 500;\n --f7-block-title-line-height: 16px;\n --f7-block-title-margin-bottom: 16px;\n --f7-block-title-medium-font-size: 16px;\n --f7-block-title-medium-font-weight: 500;\n --f7-block-title-medium-line-height: 1.3;\n --f7-block-title-large-font-size: 22px;\n --f7-block-title-large-font-weight: 500;\n --f7-block-title-large-line-height: 1.2;\n --f7-block-inset-border-radius: 16px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-block-text-color: var(--f7-md-on-surface);\n --f7-block-strong-text-color: var(--f7-md-on-surface);\n --f7-block-outline-border-color: var(--f7-md-outline);\n --f7-block-title-text-color: var(--f7-theme-color);\n --f7-block-title-medium-text-color: var(--f7-theme-color);\n --f7-block-title-large-text-color: var(--f7-theme-color);\n --f7-block-strong-bg-color: var(--f7-md-surface-1);\n --f7-block-header-text-color: var(--f7-md-on-surface-variant);\n --f7-block-footer-text-color: var(--f7-md-on-surface-variant);\n}\n.block {\n box-sizing: border-box;\n position: relative;\n z-index: 1;\n color: var(--f7-block-text-color);\n margin: var(--f7-block-margin-vertical) 0;\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));\n font-size: var(--f7-block-font-size);\n}\n.block > h1:first-child,\n.block > h2:first-child,\n.block > h3:first-child,\n.block > h4:first-child,\n.block > p:first-child {\n margin-top: 0;\n}\n.block > h1:last-child,\n.block > h2:last-child,\n.block > h3:last-child,\n.block > h4:last-child,\n.block > p:last-child {\n margin-bottom: 0;\n}\n.block-strong,\n.ios .block-strong-ios,\n.md .block-strong-md {\n color: var(--f7-block-strong-text-color);\n padding-top: var(--f7-block-padding-vertical);\n padding-bottom: var(--f7-block-padding-vertical);\n background-color: var(--f7-block-strong-bg-color);\n}\n.block-outline:not(.inset):before,\n.ios .block-outline-ios:not(.inset):not(.inset-ios):before,\n.md .block-outline-md:not(.inset):not(.inset-md):before {\n content: '';\n position: absolute;\n background-color: var(--f7-block-outline-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.block-outline:not(.inset):after,\n.ios .block-outline-ios:not(.inset):not(.inset-ios):after,\n.md .block-outline-md:not(.inset):not(.inset-md):after {\n content: '';\n position: absolute;\n background-color: var(--f7-block-outline-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.block-outline.inset,\n.ios .block-outline-ios.inset,\n.ios .block-outline-ios.inset-ios,\n.md .block-outline-md.inset,\n.md .block-outline-md.inset-md {\n border: 1px solid var(--f7-block-outline-border-color);\n}\n.block-title {\n position: relative;\n overflow: hidden;\n margin: 0;\n white-space: var(--f7-block-title-white-space);\n text-overflow: ellipsis;\n text-transform: var(--f7-block-title-text-transform);\n color: var(--f7-block-title-text-color);\n font-size: var(--f7-block-title-font-size, inherit);\n font-weight: var(--f7-block-title-font-weight);\n line-height: var(--f7-block-title-line-height);\n margin-top: var(--f7-block-margin-vertical);\n margin-bottom: var(--f7-block-title-margin-bottom);\n margin-left: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));\n margin-right: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));\n}\n.block-title + .list,\n.block-title + .block,\n.block-title + .card,\n.block-title + .timeline,\n.block-title + .block-header {\n margin-top: 0px;\n}\n.block-title-medium {\n font-size: var(--f7-block-title-medium-font-size);\n text-transform: var(--f7-block-title-medium-text-transform);\n color: var(--f7-block-title-medium-text-color);\n font-weight: var(--f7-block-title-medium-font-weight);\n line-height: var(--f7-block-title-medium-line-height);\n}\n.block-title-large {\n font-size: var(--f7-block-title-large-font-size);\n text-transform: var(--f7-block-title-large-text-transform);\n color: var(--f7-block-title-large-text-color);\n font-weight: var(--f7-block-title-large-font-weight);\n line-height: var(--f7-block-title-large-line-height);\n}\n.block > .block-title:first-child,\n.list > .block-title:first-child {\n margin-top: 0;\n margin-left: 0;\n margin-right: 0;\n}\n.block-header {\n color: var(--f7-block-header-text-color);\n font-size: var(--f7-block-header-font-size);\n margin-bottom: var(--f7-block-header-margin);\n margin-top: var(--f7-block-margin-vertical);\n}\n.block-header + .list,\n.block-header + .block,\n.block-header + .card,\n.block-header + .timeline {\n margin-top: var(--f7-block-header-margin);\n}\n.block-footer {\n color: var(--f7-block-footer-text-color);\n font-size: var(--f7-block-footer-font-size);\n margin-top: var(--f7-block-footer-margin);\n margin-bottom: var(--f7-block-margin-vertical);\n}\n.block-footer,\n.block-header {\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));\n}\n.block-footer ul:first-child,\n.block-header ul:first-child,\n.block-footer p:first-child,\n.block-header p:first-child,\n.block-footer h1:first-child,\n.block-header h1:first-child,\n.block-footer h2:first-child,\n.block-header h2:first-child,\n.block-footer h3:first-child,\n.block-header h3:first-child,\n.block-footer h4:first-child,\n.block-header h4:first-child {\n margin-top: 0;\n}\n.block-footer ul:last-child,\n.block-header ul:last-child,\n.block-footer p:last-child,\n.block-header p:last-child,\n.block-footer h1:last-child,\n.block-header h1:last-child,\n.block-footer h2:last-child,\n.block-header h2:last-child,\n.block-footer h3:last-child,\n.block-header h3:last-child,\n.block-footer h4:last-child,\n.block-header h4:last-child {\n margin-bottom: 0;\n}\n.block-footer ul:first-child:last-child,\n.block-header ul:first-child:last-child,\n.block-footer p:first-child:last-child,\n.block-header p:first-child:last-child,\n.block-footer h1:first-child:last-child,\n.block-header h1:first-child:last-child,\n.block-footer h2:first-child:last-child,\n.block-header h2:first-child:last-child,\n.block-footer h3:first-child:last-child,\n.block-header h3:first-child:last-child,\n.block-footer h4:first-child:last-child,\n.block-header h4:first-child:last-child {\n margin-top: 0;\n margin-bottom: 0;\n}\n.list .block-header,\n.block .block-header,\n.card .block-header,\n.timeline .block-header {\n margin-top: 0;\n}\n.list .block-footer,\n.block .block-footer,\n.card .block-footer,\n.timeline .block-footer {\n margin-bottom: 0;\n}\n.list + .block-footer,\n.block + .block-footer,\n.card + .block-footer,\n.timeline + .block-footer {\n margin-top: calc(-1 * (var(--f7-block-margin-vertical) - var(--f7-block-footer-margin)));\n}\n.block + .block-footer {\n margin-top: calc(-1 * (var(--f7-block-margin-vertical) - var(--f7-block-footer-margin)));\n margin-bottom: var(--f7-block-margin-vertical);\n}\n.block .block-header,\n.block .block-footer {\n padding: 0;\n}\n.block.inset,\n.ios .block.inset-ios,\n.md .block.inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n}\n.block-strong.inset:before,\n.ios .block-strong-ios.inset:before,\n.md .block-strong-md.inset:before,\n.ios .block-strong.inset-ios:before,\n.md .block-strong.inset-md:before,\n.ios .block-strong-ios.inset-ios:before,\n.md .block-strong-md.inset-md:before,\n.block-strong.inset:after,\n.ios .block-strong-ios.inset:after,\n.md .block-strong-md.inset:after,\n.ios .block-strong.inset-ios:after,\n.md .block-strong.inset-md:after,\n.ios .block-strong-ios.inset-ios:after,\n.md .block-strong-md.inset-md:after {\n display: none !important;\n}\n@media (min-width: 480px) {\n .block.xsmall-inset,\n .ios .block.xsmall-inset-ios,\n .md .block.xsmall-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.xsmall-inset:before,\n .ios .block.xsmall-inset-ios:before,\n .md .block.xsmall-inset-md:before,\n .block.xsmall-inset:after,\n .ios .block.xsmall-inset-ios:after,\n .md .block.xsmall-inset-md:after {\n display: none !important;\n }\n .block.xsmall-inset.block-outline,\n .ios .block.xsmall-inset-ios.block-outline,\n .ios .block.xsmall-inset-ios.block-outline-ios,\n .md .block.xsmall-inset-md.block-outline,\n .md .block.xsmall-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 568px) {\n .block.small-inset,\n .ios .block.small-inset-ios,\n .md .block.small-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.small-inset:before,\n .ios .block.small-inset-ios:before,\n .md .block.small-inset-md:before,\n .block.small-inset:after,\n .ios .block.small-inset-ios:after,\n .md .block.small-inset-md:after {\n display: none !important;\n }\n .block.small-inset.block-outline,\n .ios .block.small-inset-ios.block-outline,\n .ios .block.small-inset-ios.block-outline-ios,\n .md .block.small-inset-md.block-outline,\n .md .block.small-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 768px) {\n .block.medium-inset,\n .ios .block.medium-inset-ios,\n .md .block.medium-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.medium-inset:before,\n .ios .block.medium-inset-ios:before,\n .md .block.medium-inset-md:before,\n .block.medium-inset:after,\n .ios .block.medium-inset-ios:after,\n .md .block.medium-inset-md:after {\n display: none !important;\n }\n .block.medium-inset.block-outline,\n .ios .block.medium-inset-ios.block-outline,\n .ios .block.medium-inset-ios.block-outline-ios,\n .md .block.medium-inset-md.block-outline,\n .md .block.medium-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 1024px) {\n .block.large-inset,\n .ios .block.large-inset-ios,\n .md .block.large-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.large-inset:before,\n .ios .block.large-inset-ios:before,\n .md .block.large-inset-md:before,\n .block.large-inset:after,\n .ios .block.large-inset-ios:after,\n .md .block.large-inset-md:after {\n display: none !important;\n }\n .block.large-inset.block-outline,\n .ios .block.large-inset-ios.block-outline,\n .ios .block.large-inset-ios.block-outline-ios,\n .md .block.large-inset-md.block-outline,\n .md .block.large-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 1200px) {\n .block.xlarge-inset,\n .ios .block.xlarge-inset-ios,\n .md .block.xlarge-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.xlarge-inset:before,\n .ios .block.xlarge-inset-ios:before,\n .md .block.xlarge-inset-md:before,\n .block.xlarge-inset:after,\n .ios .block.xlarge-inset-ios:after,\n .md .block.xlarge-inset-md:after {\n display: none !important;\n }\n .block.xlarge-inset.block-outline,\n .ios .block.xlarge-inset-ios.block-outline,\n .ios .block.xlarge-inset-ios.block-outline-ios,\n .md .block.xlarge-inset-md.block-outline,\n .md .block.xlarge-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n/* === List View === */\n:root {\n --f7-list-inset-side-margin: 16px;\n --f7-list-item-padding-horizontal: 16px;\n --f7-list-item-padding-vertical: 8px;\n --f7-list-media-item-padding-horizontal: 16px;\n --f7-list-item-text-max-lines: 2;\n --f7-list-chevron-icon-font-size: 20px;\n --f7-list-item-media-margin: 16px;\n --f7-list-item-title-font-size: inherit;\n --f7-list-item-title-font-weight: 400;\n --f7-list-item-title-line-height: inherit;\n --f7-list-item-title-white-space: nowrap;\n --f7-list-item-subtitle-font-weight: 400;\n --f7-list-item-subtitle-line-height: inherit;\n --f7-list-item-text-font-weight: 400;\n --f7-list-item-after-font-weight: 400;\n --f7-list-item-after-line-height: inherit;\n --f7-list-item-header-font-size: 12px;\n --f7-list-item-header-font-weight: 400;\n --f7-list-item-header-line-height: 1.2;\n --f7-list-item-footer-font-size: 12px;\n --f7-list-item-footer-font-weight: 400;\n --f7-list-item-footer-line-height: 1.2;\n /*\n --f7-list-button-text-color: var(--f7-theme-color);\n */\n --f7-list-button-font-size: inherit;\n --f7-list-button-font-weight: 400;\n --f7-list-button-text-align: center;\n --f7-list-group-title-line-height: inherit;\n --f7-menu-list-font-size: 14px;\n --f7-menu-list-item-title-font-size: 14px;\n --f7-menu-list-item-title-font-weight: 500;\n --f7-menu-list-item-subtitle-font-size: 14px;\n --f7-menu-list-item-text-font-size: 14px;\n --f7-menu-list-item-after-font-size: 14px;\n --f7-list-outline-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-chevron-icon-color: rgba(0, 0, 0, 0.2);\n}\n:root .dark,\n:root.dark {\n --f7-list-button-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-outline-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-group-title-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-chevron-icon-color: rgba(255, 255, 255, 0.3);\n}\n.ios {\n --f7-list-in-list-padding-left: 30px;\n --f7-list-inset-border-radius: 8px;\n --f7-list-margin-vertical: 35px;\n --f7-list-font-size: 17px;\n --f7-list-chevron-icon-area: 20px;\n --f7-list-item-title-text-color: inherit;\n --f7-list-item-subtitle-text-color: inherit;\n --f7-list-link-pressed-bg-color: rgba(0, 0, 0, 0.15);\n --f7-list-item-subtitle-font-size: 15px;\n --f7-list-item-text-font-size: 15px;\n --f7-list-item-text-line-height: 21px;\n --f7-list-item-after-font-size: inherit;\n --f7-list-item-after-padding: 5px;\n --f7-list-item-min-height: 44px;\n --f7-list-item-media-icons-margin: 5px;\n --f7-list-media-item-padding-vertical: 10px;\n --f7-list-media-item-title-font-weight: 600;\n --f7-list-button-border-color: rgba(0, 0, 0, 0.22);\n /*\n --f7-list-button-pressed-bg-color: rgba(var(--f7-theme-color-rgb), .15);\n */\n --f7-list-group-title-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-group-title-height: 31px;\n --f7-list-group-title-font-size: inherit;\n --f7-list-group-title-font-weight: 400;\n --f7-menu-list-offset: 8px;\n --f7-menu-list-border-radius: 8px;\n --f7-menu-list-item-bg-color: transparent;\n --f7-menu-list-item-text-color: inherit;\n --f7-menu-list-item-min-height: 44px;\n --f7-list-item-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-outline-inset-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-strong-bg-color: #fff;\n --f7-list-item-after-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-item-header-text-color: inherit;\n --f7-list-item-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-item-text-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-group-title-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-group-title-bg-color: #f7f7f7;\n --f7-menu-list-item-selected-text-color: var(--f7-theme-color);\n --f7-menu-list-item-selected-bg-color: rgba(var(--f7-theme-color-rgb), 0.15);\n}\n.ios .dark,\n.ios.dark {\n --f7-list-item-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-outline-inset-color: rgba(255, 255, 255, 0.15);\n --f7-list-strong-bg-color: #1c1c1d;\n --f7-list-item-after-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-item-header-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-item-footer-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-item-text-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-group-title-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-group-title-bg-color: #232323;\n --f7-list-link-pressed-bg-color: rgba(255, 255, 255, 0.08);\n --f7-menu-list-item-selected-text-color: inherit;\n --f7-menu-list-item-selected-bg-color: var(--f7-theme-color);\n}\n.md {\n --f7-list-in-list-padding-left: 24px;\n --f7-list-inset-border-radius: 16px;\n --f7-list-margin-vertical: 32px;\n --f7-list-font-size: 16px;\n --f7-list-chevron-icon-area: 26px;\n --f7-list-item-subtitle-font-size: 14px;\n --f7-list-item-text-font-size: 14px;\n --f7-list-item-text-line-height: 20px;\n --f7-list-item-after-font-size: 14px;\n --f7-list-item-after-padding: 8px;\n --f7-list-item-min-height: 48px;\n --f7-list-item-media-icons-margin: 8px;\n --f7-list-media-item-padding-vertical: 12px;\n --f7-list-media-item-title-font-weight: 500;\n --f7-list-button-border-color: transparent;\n /*\n --f7-list-button-pressed-bg-color: transparent;\n */\n --f7-list-group-title-border-color: transparent;\n --f7-list-group-title-height: 48px;\n --f7-list-group-title-font-size: 16px;\n --f7-list-group-title-font-weight: 400;\n --f7-menu-list-offset: 16px;\n --f7-menu-list-border-radius: 999px;\n --f7-menu-list-item-min-height: 56px;\n --f7-list-link-pressed-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-list-outline-inset-border-color: var(--f7-md-outline);\n --f7-list-item-border-color: var(--f7-md-outline);\n --f7-list-item-title-text-color: var(--f7-md-on-surface);\n --f7-list-item-subtitle-text-color: var(--f7-md-on-surface);\n --f7-list-group-title-bg-color: var(--f7-md-surface-2);\n --f7-list-group-title-text-color: var(--f7-md-on-surface-variant);\n --f7-list-strong-bg-color: var(--f7-md-surface-1);\n --f7-list-item-after-text-color: var(--f7-md-on-surface-variant);\n --f7-list-item-text-text-color: var(--f7-md-on-surface-variant);\n --f7-list-item-header-text-color: var(--f7-md-on-surface-variant);\n --f7-list-item-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-menu-list-item-text-color: var(--f7-md-on-surface-variant);\n --f7-menu-list-item-bg-color: var(--f7-md-surface-1);\n --f7-menu-list-item-selected-text-color: var(--f7-md-on-secondary-container);\n --f7-menu-list-item-selected-bg-color: var(--f7-md-secondary-container);\n}\n:root {\n --f7-list-chevron-icon-left: 'chevron_left';\n --f7-list-chevron-icon-right: 'chevron_right';\n}\n.list {\n position: relative;\n z-index: 1;\n font-size: var(--f7-list-font-size);\n margin: var(--f7-list-margin-vertical) 0;\n}\n.list-strong ul,\n.ios .list-strong-ios ul,\n.md .list-strong-md ul {\n background: var(--f7-list-strong-bg-color);\n}\n.list-outline ul:before,\n.ios .list-outline-ios ul:before,\n.md .list-outline-md ul:before {\n content: '';\n position: absolute;\n background-color: var(--f7-list-outline-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-outline ul:after,\n.ios .list-outline-ios ul:after,\n.md .list-outline-md ul:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-outline-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-outline.inset,\n.ios .list-outline-ios.inset,\n.ios .list-outline-ios.inset-ios,\n.md .list-outline-md.inset,\n.md .list-outline-md.inset-md {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n}\n.list ul {\n list-style: none;\n margin: 0;\n padding: 0;\n position: relative;\n}\n.list ul ul {\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-list-in-list-padding-left));\n}\n.list ul ul:before,\n.list ul ul:after {\n display: none !important;\n}\n.list li {\n position: relative;\n box-sizing: border-box;\n}\n.list .item-media {\n display: flex;\n flex-shrink: 0;\n flex-wrap: nowrap;\n align-items: center;\n box-sizing: border-box;\n padding-bottom: var(--f7-list-item-padding-vertical);\n padding-top: var(--f7-list-item-padding-vertical);\n position: relative;\n}\n.list .item-media + .item-inner {\n margin-left: var(--f7-list-item-media-margin);\n}\n.list .item-media i + i,\n.list .item-media i + img {\n margin-left: var(--f7-list-item-media-icons-margin);\n}\n.list .item-after {\n padding-left: var(--f7-list-item-after-padding);\n}\n.list .item-inner {\n position: relative;\n width: 100%;\n min-width: 0;\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n align-self: stretch;\n padding-top: var(--f7-list-item-padding-vertical);\n padding-bottom: var(--f7-list-item-padding-vertical);\n min-height: calc(var(--f7-list-item-min-height));\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.list .item-title {\n min-width: 0;\n flex-shrink: 1;\n white-space: var(--f7-list-item-title-white-space);\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n font-size: var(--f7-list-item-title-font-size);\n font-weight: var(--f7-list-item-title-font-weight);\n color: var(--f7-list-item-title-text-color);\n line-height: var(--f7-list-item-title-line-height);\n}\n.list .item-after {\n white-space: nowrap;\n flex-shrink: 0;\n display: flex;\n font-size: var(--f7-list-item-after-font-size);\n font-weight: var(--f7-list-item-after-font-weight);\n color: var(--f7-list-item-after-text-color);\n line-height: var(--f7-list-item-after-line-height);\n margin-left: auto;\n}\n.list .item-header,\n.list .item-footer {\n white-space: normal;\n}\n.list .item-header {\n color: var(--f7-list-item-header-text-color);\n font-size: var(--f7-list-item-header-font-size);\n font-weight: var(--f7-list-item-header-font-weight);\n line-height: var(--f7-list-item-header-line-height);\n}\n.list .item-footer {\n color: var(--f7-list-item-footer-text-color);\n font-size: var(--f7-list-item-footer-font-size);\n font-weight: var(--f7-list-item-footer-font-weight);\n line-height: var(--f7-list-item-footer-line-height);\n}\n.list .item-link,\n.list label.item-content,\n.list .list-button {\n transition-duration: 300ms;\n transition-property: background-color, color;\n position: relative;\n overflow: hidden;\n z-index: 0;\n cursor: pointer;\n}\n.list .item-link,\n.list .list-button {\n display: block;\n}\n.list .item-link,\n.list label.item-content {\n color: inherit;\n}\n.list .item-link.active-state,\n.list label.item-content.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.list .item-link .item-inner {\n padding-right: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.list .item-content {\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n min-height: calc(var(--f7-list-item-min-height));\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.list .item-subtitle {\n position: relative;\n overflow: hidden;\n white-space: nowrap;\n max-width: 100%;\n text-overflow: ellipsis;\n font-size: var(--f7-list-item-subtitle-font-size);\n font-weight: var(--f7-list-item-subtitle-font-weight);\n color: var(--f7-list-item-subtitle-text-color);\n line-height: var(--f7-list-item-subtitle-line-height);\n}\n.list .item-text {\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n /* autoprefixer: ignore next */\n -webkit-line-clamp: var(--f7-list-item-text-max-lines);\n /* autoprefixer: ignore next */\n -webkit-box-orient: vertical;\n display: -webkit-box;\n font-size: var(--f7-list-item-text-font-size);\n font-weight: var(--f7-list-item-text-font-weight);\n color: var(--f7-list-item-text-text-color);\n line-height: var(--f7-list-item-text-line-height);\n max-height: calc(var(--f7-list-item-text-line-height) * var(--f7-list-item-text-max-lines));\n}\n.list .item-title-row {\n position: relative;\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n}\n.list .item-title-row .item-after {\n align-self: center;\n}\n.list li:last-child .list-button:after {\n display: none !important;\n}\n.list li:last-child > .item-inner:after,\n.list li:last-child li:last-child > .item-inner:after,\n.list li:last-child > .item-content > .item-inner:after,\n.list li:last-child li:last-child > .item-content > .item-inner:after,\n.list li:last-child > .swipeout-content > .item-content > .item-inner:after,\n.list li:last-child li:last-child > .swipeout-content > .item-content > .item-inner:after,\n.list li:last-child > .item-link > .item-content > .item-inner:after,\n.list li:last-child li:last-child > .item-link > .item-content > .item-inner:after {\n display: none !important;\n}\n.list li li:last-child .item-inner:after,\n.list li:last-child li .item-inner:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-button {\n --f7-touch-ripple-color: var(--f7-link-touch-ripple-color, rgba(var(--f7-theme-color-rgb), 0.25));\n padding: 0 var(--f7-list-item-padding-horizontal);\n line-height: var(--f7-list-item-min-height);\n color: var(--f7-list-button-text-color, var(--f7-theme-color));\n font-size: var(--f7-list-button-font-size);\n font-weight: var(--f7-list-button-font-weight);\n text-align: var(--f7-list-button-text-align);\n}\n.ios .list-button.active-state {\n background-color: var(--f7-list-button-pressed-bg-color, rgba(var(--f7-theme-color-rgb), 0.15));\n}\n.md .list-button.active-state {\n background-color: var(--f7-list-button-pressed-bg-color, transparent);\n}\n.list-dividers .list-button:after,\n.ios .list-dividers-ios .list-button:after,\n.md .list-dividers-md .list-button:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-button-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-button[class*='color-'] {\n --f7-list-button-text-color: var(--f7-theme-color);\n}\n.simple-list li {\n position: relative;\n white-space: nowrap;\n text-overflow: ellipsis;\n max-width: 100%;\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n align-items: center;\n align-content: center;\n line-height: var(--f7-list-item-min-height);\n height: var(--f7-list-item-min-height);\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.simple-list li:after {\n left: var(--f7-list-item-padding-horizontal);\n width: auto;\n left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n right: 0;\n}\n.simple-list li:last-child:after {\n display: none !important;\n}\n.links-list li {\n z-index: 1;\n}\n.links-list a {\n transition-duration: 300ms;\n transition-property: background-color;\n display: block;\n position: relative;\n overflow: hidden;\n display: flex;\n align-items: center;\n align-content: center;\n justify-content: space-between;\n box-sizing: border-box;\n white-space: nowrap;\n text-overflow: ellipsis;\n max-width: 100%;\n height: var(--f7-list-item-min-height);\n color: inherit;\n}\n.links-list a .ripple-wave {\n z-index: 0;\n}\n.links-list a:after {\n width: auto;\n}\n.links-list a.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.links-list a {\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.links-list a:after {\n left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n right: 0;\n}\n.links-list li:last-child a:after {\n display: none !important;\n}\n.list-dividers.simple-list li:after,\n.ios .list-dividers-ios.simple-list li:after,\n.md .list-dividers-md.simple-list li:after,\n.list-dividers.links-list a:after,\n.ios .list-dividers-ios.links-list a:after,\n.md .list-dividers-md.links-list a:after,\n.list-dividers .item-inner:after,\n.ios .list-dividers-ios .item-inner:after,\n.md .list-dividers-md .item-inner:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li > .item-link,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item > .item-link {\n margin-left: calc(var(--f7-list-item-padding-horizontal) / 2);\n margin-right: calc(var(--f7-list-item-padding-horizontal) / 2);\n border-radius: 16px;\n}\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li > .item-link > .item-content,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item > .item-link > .item-content {\n margin-left: 0;\n margin-right: 0;\n}\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content {\n padding-left: calc(var(--f7-list-item-padding-horizontal) / 2 + var(--f7-safe-area-left));\n}\n.media-list,\nli.media-item {\n --f7-list-item-padding-vertical: var(--f7-list-media-item-padding-vertical);\n --f7-list-item-padding-horizontal: var(--f7-list-media-item-padding-horizontal);\n}\n.media-list .item-title,\nli.media-item .item-title {\n font-weight: var(--f7-list-media-item-title-font-weight, var(--f7-list-item-title-font-weight, inherit));\n}\n.media-list .item-inner,\nli.media-item .item-inner {\n display: block;\n align-self: stretch;\n}\n.media-list .item-media img,\nli.media-item .item-media img {\n display: block;\n}\n.media-list .item-link .item-inner,\nli.media-item .item-link .item-inner {\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.media-list .item-link .item-title-row,\nli.media-item .item-link .item-title-row {\n padding-right: calc(var(--f7-list-chevron-icon-area));\n}\n.media-list.chevron-center .item-link .item-inner,\n.media-list .chevron-center .item-link .item-inner,\n.media-list .item-link.chevron-center .item-inner,\nli.media-item.chevron-center .item-link .item-inner,\nli.media-item .item-link.chevron-center .item-inner,\nli.media-item .chevron-center .item-link .item-inner {\n padding-right: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.media-list.chevron-center .item-title-row,\n.media-list .chevron-center .item-title-row,\nli.media-item.chevron-center .item-title-row,\nli.media-item .chevron-center .item-title-row {\n padding-right: 0;\n}\n.list .item-link .item-inner:before,\n.links-list a:before,\n.media-list .item-link .item-title-row:before,\nli.media-item .item-link .item-title-row:before,\n.media-list.chevron-center .item-link .item-inner:before,\n.media-list .chevron-center .item-link .item-inner:before,\n.media-list .item-link.chevron-center .item-inner:before,\nli.media-item.chevron-center .item-link .item-inner:before,\nli.media-item .chevron-center .item-link .item-inner:before,\nli.media-item .item-link.chevron-center .item-inner:before {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n top: 50%;\n width: 8px;\n height: 14px;\n margin-top: -7px;\n font-size: var(--f7-list-chevron-icon-font-size);\n line-height: 14px;\n color: var(--f7-list-chevron-icon-color);\n pointer-events: none;\n right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n content: var(--f7-list-chevron-icon-right);\n}\n.media-list.chevron-center .item-title-row:before,\n.media-list .chevron-center .item-title-row:before,\nli.media-item.chevron-center .item-title-row:before,\nli.media-item .chevron-center .item-title-row:before {\n display: none;\n}\n.media-list .item-link .item-inner:before,\nli.media-item .item-link .item-inner:before {\n display: none;\n}\n.media-list .item-link .item-title-row:before,\nli.media-item .item-link .item-title-row:before {\n right: 0;\n}\n.list-group ul:after,\n.list-group ul:before {\n z-index: 25 !important;\n}\n.list-group + .list-group ul:before {\n display: none !important;\n}\nli.list-group-title,\n.list-group-title {\n margin-top: -1px;\n white-space: nowrap;\n position: relative;\n max-width: 100%;\n text-overflow: ellipsis;\n overflow: hidden;\n z-index: 15;\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n box-sizing: border-box;\n display: flex;\n align-items: center;\n align-content: center;\n height: var(--f7-list-group-title-height);\n color: var(--f7-list-group-title-text-color);\n font-size: var(--f7-list-group-title-font-size);\n font-weight: var(--f7-list-group-title-font-weight);\n background-color: var(--f7-list-group-title-bg-color);\n line-height: var(--f7-list-group-title-line-height);\n}\nli.list-group-title:before,\n.list-group-title:before {\n content: '';\n position: absolute;\n background-color: var(--f7-list-group-title-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\nli.list-group-title:after,\n.list-group-title:after {\n display: none !important;\n}\n.list-group > .list-group-title,\n.list-group > ul > .list-group-title {\n top: 0;\n margin-top: 0;\n position: sticky;\n z-index: 20;\n}\n.page-with-navbar-large .list-group > .list-group-title,\n.page-with-navbar-large .list-group > ul > .list-group-title {\n top: calc(-1 * var(--f7-navbar-large-title-height));\n}\n.list.inset,\n.ios .list.inset-ios,\n.md .list.inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n}\n.list.inset .block-title,\n.ios .list.inset-ios .block-title,\n.md .list.inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n}\n.list.inset ul,\n.ios .list.inset-ios ul,\n.md .list.inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n}\n.list.inset ul:before,\n.ios .list.inset-ios ul:before,\n.md .list.inset-md ul:before,\n.list.inset ul:after,\n.ios .list.inset-ios ul:after,\n.md .list.inset-md ul:after {\n display: none !important;\n}\n.list.inset li.swipeout:first-child,\n.ios .list.inset-ios li.swipeout:first-child,\n.md .list.inset-md li.swipeout:first-child,\n.list.inset li:first-child > a,\n.ios .list.inset-ios li:first-child > a,\n.md .list.inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n}\n.list.inset li.swipeout:last-child,\n.ios .list.inset-ios li.swipeout:last-child,\n.md .list.inset-md li.swipeout:last-child,\n.list.inset li:last-child > a,\n.ios .list.inset-ios li:last-child > a,\n.md .list.inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n}\n.list.inset li.swipeout:first-child:last-child,\n.ios .list.inset-ios li.swipeout:first-child:last-child,\n.md .list.inset-md li.swipeout:first-child:last-child,\n.list.inset li:first-child:last-child > a,\n.ios .list.inset-ios li:first-child:last-child > a,\n.md .list.inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n}\n@media (min-width: 480px) {\n .list.xsmall-inset,\n .ios .list.xsmall-inset-ios,\n .md .list.xsmall-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.xsmall-inset .block-title,\n .ios .list.xsmall-inset-ios .block-title,\n .md .list.xsmall-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.xsmall-inset ul,\n .ios .list.xsmall-inset-ios ul,\n .md .list.xsmall-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xsmall-inset ul:before,\n .ios .list.xsmall-inset-ios ul:before,\n .md .list.xsmall-inset-md ul:before,\n .list.xsmall-inset ul:after,\n .ios .list.xsmall-inset-ios ul:after,\n .md .list.xsmall-inset-md ul:after {\n display: none !important;\n }\n .list.xsmall-inset li:first-child > a,\n .ios .list.xsmall-inset-ios li:first-child > a,\n .md .list.xsmall-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.xsmall-inset li:last-child > a,\n .ios .list.xsmall-inset-ios li:last-child > a,\n .md .list.xsmall-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.xsmall-inset li:first-child:last-child > a,\n .ios .list.xsmall-inset-ios li:first-child:last-child > a,\n .md .list.xsmall-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xsmall-inset.list-outline ul,\n .ios .list.xsmall-inset-ios.list-outline ul,\n .ios .list.xsmall-inset-ios.list-outline-ios ul,\n .md .list.xsmall-inset-md.list-outline ul,\n .md .list.xsmall-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 568px) {\n .list.small-inset,\n .ios .list.small-inset-ios,\n .md .list.small-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.small-inset .block-title,\n .ios .list.small-inset-ios .block-title,\n .md .list.small-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.small-inset ul,\n .ios .list.small-inset-ios ul,\n .md .list.small-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.small-inset ul:before,\n .ios .list.small-inset-ios ul:before,\n .md .list.small-inset-md ul:before,\n .list.small-inset ul:after,\n .ios .list.small-inset-ios ul:after,\n .md .list.small-inset-md ul:after {\n display: none !important;\n }\n .list.small-inset li:first-child > a,\n .ios .list.small-inset-ios li:first-child > a,\n .md .list.small-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.small-inset li:last-child > a,\n .ios .list.small-inset-ios li:last-child > a,\n .md .list.small-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.small-inset li:first-child:last-child > a,\n .ios .list.small-inset-ios li:first-child:last-child > a,\n .md .list.small-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.small-inset.list-outline ul,\n .ios .list.small-inset-ios.list-outline ul,\n .ios .list.small-inset-ios.list-outline-ios ul,\n .md .list.small-inset-md.list-outline ul,\n .md .list.small-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 768px) {\n .list.medium-inset,\n .ios .list.medium-inset-ios,\n .md .list.medium-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.medium-inset .block-title,\n .ios .list.medium-inset-ios .block-title,\n .md .list.medium-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.medium-inset ul,\n .ios .list.medium-inset-ios ul,\n .md .list.medium-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.medium-inset ul:before,\n .ios .list.medium-inset-ios ul:before,\n .md .list.medium-inset-md ul:before,\n .list.medium-inset ul:after,\n .ios .list.medium-inset-ios ul:after,\n .md .list.medium-inset-md ul:after {\n display: none !important;\n }\n .list.medium-inset li:first-child > a,\n .ios .list.medium-inset-ios li:first-child > a,\n .md .list.medium-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.medium-inset li:last-child > a,\n .ios .list.medium-inset-ios li:last-child > a,\n .md .list.medium-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.medium-inset li:first-child:last-child > a,\n .ios .list.medium-inset-ios li:first-child:last-child > a,\n .md .list.medium-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.medium-inset.list-outline ul,\n .ios .list.medium-inset-ios.list-outline ul,\n .ios .list.medium-inset-ios.list-outline-ios ul,\n .md .list.medium-inset-md.list-outline ul,\n .md .list.medium-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 1024px) {\n .list.large-inset,\n .ios .list.large-inset-ios,\n .md .list.large-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.large-inset .block-title,\n .ios .list.large-inset-ios .block-title,\n .md .list.large-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.large-inset ul,\n .ios .list.large-inset-ios ul,\n .md .list.large-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.large-inset ul:before,\n .ios .list.large-inset-ios ul:before,\n .md .list.large-inset-md ul:before,\n .list.large-inset ul:after,\n .ios .list.large-inset-ios ul:after,\n .md .list.large-inset-md ul:after {\n display: none !important;\n }\n .list.large-inset li:first-child > a,\n .ios .list.large-inset-ios li:first-child > a,\n .md .list.large-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.large-inset li:last-child > a,\n .ios .list.large-inset-ios li:last-child > a,\n .md .list.large-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.large-inset li:first-child:last-child > a,\n .ios .list.large-inset-ios li:first-child:last-child > a,\n .md .list.large-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.large-inset.list-outline ul,\n .ios .list.large-inset-ios.list-outline ul,\n .ios .list.large-inset-ios.list-outline-ios ul,\n .md .list.large-inset-md.list-outline ul,\n .md .list.large-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 1200px) {\n .list.xlarge-inset,\n .ios .list.xlarge-inset-ios,\n .md .list.xlarge-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.xlarge-inset .block-title,\n .ios .list.xlarge-inset-ios .block-title,\n .md .list.xlarge-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.xlarge-inset ul,\n .ios .list.xlarge-inset-ios ul,\n .md .list.xlarge-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xlarge-inset ul:before,\n .ios .list.xlarge-inset-ios ul:before,\n .md .list.xlarge-inset-md ul:before,\n .list.xlarge-inset ul:after,\n .ios .list.xlarge-inset-ios ul:after,\n .md .list.xlarge-inset-md ul:after {\n display: none !important;\n }\n .list.xlarge-inset li:first-child > a,\n .ios .list.xlarge-inset-ios li:first-child > a,\n .md .list.xlarge-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.xlarge-inset li:last-child > a,\n .ios .list.xlarge-inset-ios li:last-child > a,\n .md .list.xlarge-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.xlarge-inset li:first-child:last-child > a,\n .ios .list.xlarge-inset-ios li:first-child:last-child > a,\n .md .list.xlarge-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xlarge-inset.list-outline ul,\n .ios .list.xlarge-inset-ios.list-outline ul,\n .ios .list.xlarge-inset-ios.list-outline-ios ul,\n .md .list.xlarge-inset-md.list-outline ul,\n .md .list.xlarge-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n.list.no-chevron,\n.list .no-chevron,\n.menu-list {\n --f7-list-chevron-icon-color: transparent;\n --f7-list-chevron-icon-area: 0px;\n}\n.menu-list {\n --f7-list-font-size: var(--f7-menu-list-font-size);\n --f7-list-item-title-font-size: var(--f7-menu-list-item-title-font-size);\n --f7-list-item-title-font-weight: var(--f7-menu-list-item-title-font-weight);\n --f7-list-item-subtitle-font-size: var(--f7-menu-list-item-subtitle-font-size);\n --f7-list-item-text-font-size: var(--f7-menu-list-item-text-font-size);\n --f7-list-item-after-font-size: var(--f7-menu-list-item-after-font-size);\n --f7-list-item-min-height: var(--f7-menu-list-item-min-height);\n}\n.menu-list .item-header,\n.menu-list .item-footer,\n.menu-list .item-title,\n.menu-list .item-after,\n.menu-list .item-text,\n.menu-list .item-subtitle {\n transition-duration: 300ms;\n}\n.menu-list li:not(.list-group-title) {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n.menu-list li:not(.list-group-title):first-child {\n padding-top: 4px;\n}\n.menu-list li:not(.list-group-title):last-child {\n padding-bottom: 4px;\n}\n.menu-list .item-link {\n margin-left: var(--f7-menu-list-offset);\n margin-right: var(--f7-menu-list-offset);\n border-radius: var(--f7-menu-list-border-radius) !important;\n color: var(--f7-menu-list-item-text-color);\n background-color: var(--f7-menu-list-item-bg-color);\n}\n.menu-list .item-inner:after {\n display: none;\n}\n.menu-list .item-selected .item-link,\n.menu-list .item-selected.item-link,\n.menu-list .tab-link-active .item-link,\n.menu-list .tab-link-active.item-link {\n color: var(--f7-menu-list-item-selected-text-color);\n background-color: var(--f7-menu-list-item-selected-bg-color);\n}\n.menu-list .item-selected .item-header,\n.menu-list .item-selected .item-footer,\n.menu-list .item-selected .item-title,\n.menu-list .item-selected .item-after,\n.menu-list .item-selected .item-text,\n.menu-list .item-selected .item-subtitle {\n color: var(--f7-menu-list-item-selected-text-color);\n}\n.ios .item-link.active-state .item-inner:after,\n.ios .list-button.active-state:after,\n.ios .links-list a.active-state:after {\n background-color: transparent;\n}\n.ios .links-list a.active-state,\n.ios .list .item-link.active-state,\n.ios .list .list-button.active-state {\n transition-duration: 0ms;\n}\n.md .menu-list .item-link.active-state {\n background-color: var(--f7-menu-list-item-bg-color);\n}\n/* === Badge === */\n:root {\n --f7-badge-text-color: #fff;\n --f7-badge-bg-color: #8e8e93;\n --f7-badge-in-icon-size: 16px;\n --f7-badge-in-icon-font-size: 10px;\n --f7-badge-font-weight: normal;\n --f7-badge-font-size: 12px;\n}\n.ios {\n --f7-badge-padding: 0 4px;\n --f7-badge-size: 20px;\n --f7-badge-font-weight: 600;\n}\n.md {\n --f7-badge-padding: 2px 6px;\n --f7-badge-size: 20px;\n --f7-badge-font-weight: 500;\n}\n.badge {\n display: inline-flex;\n align-items: center;\n align-content: center;\n justify-content: center;\n color: var(--f7-badge-text-color);\n background: var(--f7-badge-bg-color);\n position: relative;\n box-sizing: border-box;\n text-align: center;\n vertical-align: middle;\n font-weight: var(--f7-badge-font-weight);\n font-size: var(--f7-badge-font-size);\n border-radius: var(--f7-badge-size);\n padding: var(--f7-badge-padding);\n height: var(--f7-badge-size);\n min-width: var(--f7-badge-size);\n}\n.icon .badge,\n.f7-icons .badge,\n.framework7-icons .badge,\n.material-icons .badge {\n position: absolute;\n left: 100%;\n margin-left: -10px;\n top: -2px;\n font-family: var(--f7-font-family);\n --f7-badge-font-size: var(--f7-badge-in-icon-font-size);\n --f7-badge-size: var(--f7-badge-in-icon-size);\n --f7-badge-padding: 0px 2px;\n}\n.badge[class*='color-'] {\n --f7-badge-bg-color: var(--f7-theme-color);\n}\n:root {\n --f7-button-font-size: 14px;\n --f7-button-min-width: 32px;\n --f7-button-bg-color: transparent;\n --f7-button-border-width: 0px;\n /*\n --f7-button-text-color: var(--f7-theme-color);\n --f7-button-pressed-text-color: var(--f7-button-text-color, var(--f7-theme-color));\n --f7-button-border-color: var(--f7-theme-color);\n --f7-button-fill-bg-color: var(--f7-theme-color);\n --f7-button-padding-vertical: 0px;\n */\n --f7-button-raised-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);\n --f7-button-raised-pressed-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16),\n 0 3px 6px rgba(0, 0, 0, 0.23);\n --f7-segmented-raised-divider-color: rgba(0, 0, 0, 0.1);\n --f7-segmented-strong-padding: 2px;\n --f7-segmented-strong-between-buttons: 4px;\n --f7-segmented-strong-button-font-weight: 500;\n --f7-segmented-strong-button-active-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.25);\n --f7-segmented-strong-button-text-color: #000;\n --f7-segmented-strong-button-hover-bg-color: rgba(0, 0, 0, 0.04);\n --f7-segmented-strong-button-active-text-color: #000;\n --f7-segmented-strong-button-active-bg-color: #fff;\n}\n:root .dark,\n:root.dark {\n --f7-segmented-strong-button-hover-bg-color: rgba(255, 255, 255, 0.02);\n --f7-segmented-strong-button-active-bg-color: rgba(255, 255, 255, 0.14);\n --f7-segmented-strong-button-text-color: #fff;\n --f7-segmented-strong-button-active-text-color: #fff;\n}\n.ios {\n --f7-button-fill-text-color: #fff;\n --f7-button-text-transform: uppercase;\n --f7-button-height: 28px;\n --f7-button-padding-horizontal: 10px;\n --f7-button-border-radius: 4px;\n --f7-button-font-weight: 600;\n --f7-button-letter-spacing: 0;\n /*\n --f7-button-outline-border-color: var(--f7-theme-color);\n */\n --f7-button-outline-border-width: 2px;\n /*\n --f7-button-pressed-bg-color: rgba(var(--f7-theme-color-rgb), .15);\n --f7-button-fill-pressed-bg-color: var(--f7-theme-color-tint);\n */\n --f7-button-large-text-transform: uppercase;\n --f7-button-large-height: 44px;\n --f7-button-large-font-size: 17px;\n --f7-button-large-font-weight: 500;\n --f7-button-small-outline-border-width: 2px;\n --f7-button-small-text-transform: uppercase;\n --f7-button-small-height: 26px;\n --f7-button-small-font-size: 13px;\n --f7-button-small-font-weight: 600;\n --f7-segmented-strong-button-text-transform: none;\n --f7-segmented-strong-button-active-font-weight: 600;\n --f7-button-tonal-bg-color: rgba(var(--f7-theme-color-rgb), 0.15);\n --f7-button-tonal-pressed-bg-color: rgba(var(--f7-theme-color-rgb), 0.25);\n --f7-button-tonal-text-color: var(--f7-theme-color);\n --f7-segmented-strong-bg-color: rgba(0, 0, 0, 0.07);\n --f7-segmented-strong-button-pressed-bg-color: rgba(0, 0, 0, 0.07);\n}\n.ios .dark,\n.ios.dark {\n --f7-segmented-strong-bg-color: rgba(255, 255, 255, 0.1);\n --f7-segmented-strong-button-pressed-bg-color: rgba(255, 255, 255, 0.04);\n}\n.md {\n /*\n --f7-button-pressed-bg-color: transparent;\n */\n --f7-button-text-transform: none;\n --f7-button-height: 40px;\n --f7-button-padding-horizontal: 16px;\n --f7-button-border-radius: 8px;\n --f7-button-font-weight: 500;\n --f7-button-letter-spacing: normal;\n --f7-button-outline-border-width: 1px;\n --f7-button-large-text-transform: none;\n --f7-button-large-height: 48px;\n --f7-button-large-font-size: 14px;\n --f7-button-large-font-weight: 500;\n --f7-button-small-text-transform: none;\n --f7-button-small-outline-border-width: 1px;\n --f7-button-small-height: 32px;\n --f7-button-small-font-size: 14px;\n --f7-button-small-font-weight: 500;\n --f7-segmented-strong-button-text-transform: none;\n --f7-segmented-strong-button-active-font-weight: 500;\n --f7-segmented-strong-button-pressed-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-button-fill-pressed-bg-color: transparent;\n --f7-button-fill-text-color: var(--f7-md-on-primary);\n --f7-button-outline-border-color: var(--f7-md-outline);\n --f7-segmented-strong-bg-color: var(--f7-md-surface-variant);\n --f7-button-tonal-bg-color: var(--f7-md-secondary-container);\n --f7-button-tonal-pressed-bg-color: transparent;\n --f7-button-tonal-text-color: var(--f7-md-on-secondary-container);\n}\nbutton {\n -webkit-appearance: none;\n appearance: none;\n width: 100%;\n}\n.button {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n text-decoration: none;\n text-align: center;\n display: flex;\n -webkit-appearance: none;\n appearance: none;\n background: none;\n margin: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n position: relative;\n overflow: hidden;\n font-family: inherit;\n cursor: pointer;\n outline: 0;\n box-sizing: border-box;\n vertical-align: middle;\n justify-content: center;\n align-items: center;\n border: var(--f7-button-border-width, 0px) solid var(--f7-button-border-color, var(--f7-theme-color));\n font-size: var(--f7-button-font-size);\n color: var(--f7-button-text-color, var(--f7-theme-color));\n height: var(--f7-button-height);\n line-height: calc(var(--f7-button-height) - var(--f7-button-border-width, 0) * 2);\n padding: var(--f7-button-padding-vertical, 0px) var(--f7-button-padding-horizontal);\n border-radius: var(--f7-button-border-radius);\n min-width: var(--f7-button-min-width);\n font-weight: var(--f7-button-font-weight);\n letter-spacing: var(--f7-button-letter-spacing);\n text-transform: var(--f7-button-text-transform);\n background-color: var(--f7-button-bg-color);\n box-shadow: var(--f7-button-box-shadow);\n}\n.button.active-state {\n color: var(--f7-button-pressed-text-color, var(--f7-button-text-color, var(--f7-theme-color)));\n}\ninput[type='submit'].button,\ninput[type='button'].button,\ninput[type='reset'].button {\n width: 100%;\n}\n.button > i + span,\n.button > span + span,\n.button > span ~ i {\n margin-left: 4px;\n}\n.subnavbar .button,\n.navbar .button,\n.toolbar .button,\n.searchbar .button {\n color: var(--f7-button-text-color, var(--f7-theme-color));\n}\n.button-round,\n.ios .button-round-ios,\n.md .button-round-md {\n --f7-button-border-radius: var(--f7-button-height);\n}\n.button-fill,\n.ios .button-fill-ios,\n.md .button-fill-md,\n.button-active,\n.button.tab-link-active {\n --f7-button-bg-color: var(--f7-button-fill-bg-color, var(--f7-theme-color));\n --f7-button-text-color: var(--f7-button-fill-text-color, #fff);\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.ios .color-white .button-fill,\n.ios .color-white .ios .button-fill-ios,\n.ios .color-white .md .button-fill-md,\n.ios .color-white .button-active,\n.ios .color-white .button.tab-link-active,\n.ios .button-fill.color-white,\n.ios .ios .button-fill-ios.color-white,\n.ios .md .button-fill-md.color-white,\n.ios .button-active.color-white,\n.ios .button.tab-link-active.color-white {\n --f7-button-text-color: #000;\n}\n.button-fill,\n.ios .button-fill-ios,\n.md .button-fill-md {\n --f7-button-pressed-bg-color: var(--f7-button-fill-pressed-bg-color);\n}\n.button-active,\n.button.tab-link-active {\n --f7-button-pressed-bg-color: var(--f7-button-bg-color);\n}\n.button-outline,\n.ios .button-outline-ios,\n.md .button-outline-md {\n --f7-button-border-color: var(--f7-button-outline-border-color, var(--f7-theme-color));\n --f7-button-border-width: var(--f7-button-outline-border-width);\n}\n.button-tonal,\n.ios .button-tonal-ios,\n.md .button-tonal-md {\n --f7-button-bg-color: var(--f7-button-tonal-bg-color);\n --f7-button-text-color: var(--f7-button-tonal-text-color);\n --f7-button-pressed-bg-color: var(--f7-button-tonal-pressed-bg-color);\n}\n.button-large,\n.ios .button-large-ios,\n.md .button-large-md {\n --f7-button-height: var(--f7-button-large-height);\n --f7-button-font-size: var(--f7-button-large-font-size);\n --f7-button-font-weight: var(--f7-button-large-font-weight);\n --f7-button-text-transform: var(--f7-button-large-text-transform);\n}\n.button-small,\n.ios .button-small-ios,\n.md .button-small-md {\n --f7-button-outline-border-width: var(--f7-button-small-outline-border-width);\n --f7-button-height: var(--f7-button-small-height);\n --f7-button-font-size: var(--f7-button-small-font-size);\n --f7-button-font-weight: var(--f7-button-small-font-weight);\n --f7-button-text-transform: var(--f7-button-small-text-transform);\n}\n.ios .button-small.button-fill,\n.ios .button-small-ios.button-fill,\n.ios .button-small.button-fill-ios {\n --f7-button-border-width: var(--f7-button-small-outline-border-width);\n --f7-button-pressed-text-color: var(--f7-theme-color);\n --f7-button-pressed-bg-color: transparent;\n}\n.segmented {\n align-self: center;\n display: flex;\n flex-wrap: nowrap;\n border-radius: var(--f7-button-border-radius);\n box-shadow: var(--f7-button-box-shadow);\n box-sizing: border-box;\n}\n.segmented .button,\n.segmented button {\n width: 100%;\n flex-shrink: 1;\n min-width: 0;\n border-radius: 0;\n}\n.segmented .button:first-child {\n border-radius: var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius);\n}\n.segmented .button:not(.button-outline):first-child {\n border-left: none;\n}\n.segmented .button.button-outline:nth-child(n + 2) {\n border-left: none;\n}\n.segmented .button:last-child {\n border-radius: 0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0;\n}\n.segmented .button-round:first-child {\n border-radius: var(--f7-button-height) 0 0 var(--f7-button-height);\n}\n.segmented .button-round:last-child {\n border-radius: 0 var(--f7-button-height) var(--f7-button-height) 0;\n}\n.segmented .button:first-child:last-child {\n border-radius: var(--f7-button-border-radius);\n}\n.segmented-raised,\n.ios .segmented-raised-ios,\n.md .segmented-raised-md {\n box-shadow: var(--f7-button-raised-box-shadow);\n}\n.segmented-raised .button:not(.button-outline),\n.ios .segmented-raised-ios .button:not(.button-outline),\n.md .segmented-raised-md .button:not(.button-outline) {\n border-left: 1px solid var(--f7-segmented-raised-divider-color);\n}\n.button-raised,\n.ios .button-raised-ios,\n.md .button-raised-md {\n --f7-button-box-shadow: var(--f7-button-raised-box-shadow);\n}\n.button-raised.active-state,\n.ios .button-raised-ios.active-state,\n.md .button-raised-md.active-state {\n --f7-button-box-shadow: var(--f7-button-raised-pressed-box-shadow);\n}\n.segmented-strong,\n.ios .segmented-strong-ios,\n.md .segmented-strong-md {\n --f7-button-bg-color: transparent;\n --f7-button-hover-bg-color: var(--f7-segmented-strong-button-hover-bg-color);\n --f7-button-text-color: var(--f7-segmented-strong-button-text-color);\n --f7-button-font-weight: var(--f7-segmented-strong-button-font-weight);\n --f7-button-text-transform: var(--f7-segmented-strong-button-text-transform);\n --f7-button-pressed-bg-color: var(--f7-segmented-strong-button-pressed-bg-color);\n position: relative;\n background: var(--f7-segmented-strong-bg-color);\n border-radius: calc(var(--f7-button-border-radius) + 2px);\n box-shadow: none;\n padding: var(--f7-segmented-strong-padding);\n overflow: hidden;\n}\n.segmented-strong .button,\n.ios .segmented-strong-ios .button,\n.md .segmented-strong-md .button {\n z-index: 1;\n transform: translate3d(0, 0, 0);\n}\n.segmented-strong .button,\n.ios .segmented-strong-ios .button,\n.md .segmented-strong-md .button,\n.segmented-strong .button:first-child,\n.ios .segmented-strong-ios .button:first-child,\n.md .segmented-strong-md .button:first-child,\n.segmented-strong .button:last-child,\n.ios .segmented-strong-ios .button:last-child,\n.md .segmented-strong-md .button:last-child {\n border-radius: var(--f7-button-border-radius);\n}\n.segmented-strong .button + .button,\n.ios .segmented-strong-ios .button + .button,\n.md .segmented-strong-md .button + .button {\n margin-left: var(--f7-segmented-strong-between-buttons);\n}\n.segmented-strong .button.button-active,\n.ios .segmented-strong-ios .button.button-active,\n.md .segmented-strong-md .button.button-active,\n.segmented-strong .button.tab-link-active,\n.ios .segmented-strong-ios .button.tab-link-active,\n.md .segmented-strong-md .button.tab-link-active {\n --f7-button-hover-bg-color: transparent;\n --f7-button-bg-color: transparent;\n --f7-button-text-color: var(--f7-segmented-strong-button-active-text-color);\n --f7-button-font-weight: var(--f7-segmented-strong-button-active-font-weight);\n}\n.segmented-strong .segmented-highlight,\n.ios .segmented-strong-ios .segmented-highlight,\n.md .segmented-strong-md .segmented-highlight {\n --f7-segmented-highlight-num: 1;\n --f7-segmented-highlight-active: 0;\n --f7-segmented-highlight-padding: calc(var(--f7-segmented-strong-padding) * 2);\n --f7-segmented-highlight-between: var(--f7-segmented-strong-between-buttons);\n --f7-segmented-highlight-width: calc((100% - var(--f7-segmented-highlight-padding) - var(--f7-segmented-highlight-between) * (var(--f7-segmented-highlight-num) - 1)) / var(--f7-segmented-highlight-num));\n position: absolute;\n background-color: var(--f7-segmented-strong-button-active-bg-color);\n border-radius: var(--f7-button-border-radius);\n box-shadow: var(--f7-segmented-strong-button-active-box-shadow);\n left: var(--f7-segmented-strong-padding);\n top: var(--f7-segmented-strong-padding);\n height: calc(100% - var(--f7-segmented-strong-padding) * 2);\n width: var(--f7-segmented-highlight-width);\n z-index: 0;\n transform: translateX(calc(var(--f7-segmented-highlight-active) * 100% + var(--f7-segmented-highlight-active) * var(--f7-segmented-highlight-between)));\n transition: 200ms;\n}\n.button:nth-child(2) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 2;\n}\n.button:nth-child(3) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 3;\n}\n.button:nth-child(4) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 4;\n}\n.button:nth-child(5) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 5;\n}\n.button:nth-child(6) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 6;\n}\n.button:nth-child(7) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 7;\n}\n.button:nth-child(8) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 8;\n}\n.button:nth-child(9) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 9;\n}\n.button:nth-child(10) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 10;\n}\n.button-active:nth-child(2) ~ .segmented-highlight,\n.tab-link-active:nth-child(2) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 1;\n}\n.button-active:nth-child(3) ~ .segmented-highlight,\n.tab-link-active:nth-child(3) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 2;\n}\n.button-active:nth-child(4) ~ .segmented-highlight,\n.tab-link-active:nth-child(4) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 3;\n}\n.button-active:nth-child(5) ~ .segmented-highlight,\n.tab-link-active:nth-child(5) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 4;\n}\n.button-active:nth-child(6) ~ .segmented-highlight,\n.tab-link-active:nth-child(6) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 5;\n}\n.button-active:nth-child(7) ~ .segmented-highlight,\n.tab-link-active:nth-child(7) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 6;\n}\n.button-active:nth-child(8) ~ .segmented-highlight,\n.tab-link-active:nth-child(8) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 7;\n}\n.button-active:nth-child(9) ~ .segmented-highlight,\n.tab-link-active:nth-child(9) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 8;\n}\n.button-active:nth-child(10) ~ .segmented-highlight,\n.tab-link-active:nth-child(10) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 9;\n}\n.segmented-round,\n.ios .segmented-round-ios,\n.md .segmented-round-md {\n border-radius: var(--f7-button-height);\n}\n.segmented-round .segmented-highlight,\n.ios .segmented-round-ios .segmented-highlight,\n.md .segmented-round-md .segmented-highlight {\n border-radius: var(--f7-button-height);\n}\n.subnavbar .segmented {\n width: 100%;\n}\n.button-preloader {\n position: relative;\n --f7-preloader-color: var(--f7-button-text-color, var(--f7-theme-color));\n}\n.button-preloader:not(.button-large) {\n --f7-preloader-size: calc(var(--f7-button-height) - 6px);\n}\n.button-preloader.button-fill {\n --f7-preloader-color: #fff;\n}\n.button-preloader > span:not(.preloader) {\n transition: 0.2s;\n display: inline-flex;\n align-items: center;\n align-content: center;\n justify-content: center;\n transform: scale(1);\n}\n.button-preloader > .preloader {\n position: absolute;\n left: 50%;\n top: 50%;\n transition: 0.2s;\n transition-property: opacity;\n opacity: 0;\n visibility: hidden;\n margin-left: calc(-1 * var(--f7-preloader-size) / 2);\n margin-top: calc(-1 * var(--f7-preloader-size) / 2);\n}\n.button-preloader.button-loading > span:not(.preloader) {\n opacity: 0;\n transform: scale(0);\n}\n.button-preloader.button-loading > .preloader {\n opacity: 1;\n visibility: visible;\n}\n.ios .button {\n transition-duration: 100ms;\n}\n.ios .button.active-state {\n background-color: var(--f7-button-pressed-bg-color, rgba(var(--f7-theme-color-rgb), 0.15));\n}\n.ios .button-fill,\n.ios .button-fill-ios {\n --f7-button-pressed-bg-color: var(--f7-button-fill-pressed-bg-color, var(--f7-theme-color-tint));\n}\n.ios .button-small,\n.ios .button-small-ios {\n transition-duration: 200ms;\n}\n.md .button {\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n}\n.md .button-fill,\n.md .button-fill-md {\n --f7-button-pressed-bg-color: var(--f7-button-fill-pressed-bg-color, transparent);\n}\n/* === Touch Ripple === */\n:root {\n --f7-touch-ripple-black: rgba(0, 0, 0, 0.1);\n --f7-touch-ripple-white: rgba(255, 255, 255, 0.15);\n --f7-touch-ripple-color: var(--f7-touch-ripple-black);\n}\n.dark {\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.ripple,\n.fab a,\n.link,\n.item-link,\n.list-button,\n.button,\n.dialog-button,\n.tab-link,\n.radio,\n.checkbox,\n.actions-button,\n.speed-dial-buttons a {\n -webkit-user-select: none;\n user-select: none;\n}\n.ripple-wave {\n left: 0;\n top: 0;\n position: absolute !important;\n border-radius: 50%;\n pointer-events: none;\n z-index: -1;\n padding: 0;\n margin: 0;\n font-size: 0;\n transform: translate3d(0px, 0px, 0) scale(0);\n background-color: var(--f7-touch-ripple-color);\n animation: touch-ripple-in 200ms forwards;\n}\n.ripple-wave.ripple-wave-inset {\n background-image: none;\n background-color: var(--f7-touch-ripple-color);\n}\n.ripple-wave.ripple-wave-out {\n transform: var(--f7-ripple-transform);\n animation: touch-ripple-out 250ms forwards !important;\n}\n.item-link .ripple-wave,\n.list label.item-content .ripple-wave,\n.list-button .ripple-wave,\n.links-list a .ripple-wave,\n.button .ripple-wave,\nbutton .ripple-wave,\n.dialog-button .ripple-wave,\n.tab-link .ripple-wave,\n.item-radio .ripple-wave,\n.item-checkbox .ripple-wave,\n.actions-button .ripple-wave,\n.fab a .ripple-wave,\n.stepper-button .ripple-wave,\n.stepper-button-minus .ripple-wave,\n.stepper-button-plus .ripple-wave,\n.list.accordion-list .accordion-item-toggle .ripple-wave,\n.photo-browser .toolbar .link .ripple-wave,\n.ripple-blur .ripple-wave {\n animation: touch-ripple-in-blurred 250ms forwards;\n background-image: radial-gradient(closest-side circle at 50% 50%, var(--f7-touch-ripple-color) 50%, rgba(255, 255, 255, 0));\n background-color: transparent;\n}\n.checkbox .ripple-wave,\n.radio .ripple-wave,\n.data-table .sortable-cell .ripple-wave {\n z-index: 0;\n}\n[class*='ripple-color-'] {\n --f7-touch-ripple-color: var(--f7-theme-color-ripple-color);\n}\n@keyframes touch-ripple-in-blurred {\n from {\n transform: translate3d(0px, 0px, 0) scale(0.5);\n }\n to {\n transform: var(--f7-ripple-transform);\n }\n}\n@keyframes touch-ripple-in {\n from {\n transform: translate3d(0px, 0px, 0) scale(0);\n }\n to {\n transform: var(--f7-ripple-transform);\n }\n}\n@keyframes touch-ripple-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n/* === Icon === */\n.f7-icons,\n.material-icons {\n width: 1em;\n height: 1em;\n}\ni.icon {\n display: inline-block;\n vertical-align: middle;\n background-size: 100% auto;\n background-position: center;\n background-repeat: no-repeat;\n font-style: normal;\n position: relative;\n}\n.icon-back:after,\n.icon-prev:after,\n.icon-forward:after,\n.icon-next:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n.icon[class*='color-'] {\n color: var(--f7-theme-color);\n}\n.ios .icon-back,\n.ios .icon-prev,\n.ios .icon-forward,\n.ios .icon-next {\n width: 12px;\n height: 20px;\n line-height: 20px;\n}\n.ios .icon-back:after,\n.ios .icon-prev:after,\n.ios .icon-forward:after,\n.ios .icon-next:after {\n line-height: inherit;\n}\n.ios .icon-prev:after,\n.ios .icon-next:after {\n font-size: 16px;\n}\n.ios .icon-back:after,\n.ios .icon-prev:after {\n content: 'chevron_left_ios';\n}\n.ios .icon-forward:after,\n.ios .icon-next:after {\n content: 'chevron_right_ios';\n}\n.md .icon-back,\n.md .icon-forward,\n.md .icon-next,\n.md .icon-prev {\n width: 24px;\n height: 24px;\n}\n.md .icon-back:after,\n.md .icon-forward:after,\n.md .icon-next:after,\n.md .icon-prev:after {\n line-height: 1.2;\n}\n.md .icon-back:after {\n content: 'arrow_left_md';\n}\n.md .icon-forward:after {\n content: 'arrow_right_md';\n}\n.md .icon-next:after {\n content: 'chevron_right_md';\n}\n.md .icon-prev:after {\n content: 'chevron_left_md';\n}\n.custom-modal-backdrop {\n z-index: 10500;\n}\n.custom-modal-backdrop,\n.actions-backdrop,\n.dialog-backdrop,\n.popover-backdrop,\n.popup-backdrop,\n.preloader-backdrop,\n.sheet-backdrop,\n.fab-backdrop {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.4);\n z-index: 13000;\n visibility: hidden;\n opacity: 0;\n transition-duration: 400ms;\n}\n.custom-modal-backdrop.not-animated,\n.actions-backdrop.not-animated,\n.dialog-backdrop.not-animated,\n.popover-backdrop.not-animated,\n.popup-backdrop.not-animated,\n.preloader-backdrop.not-animated,\n.sheet-backdrop.not-animated,\n.fab-backdrop.not-animated {\n transition-duration: 0ms;\n}\n.custom-modal-backdrop.backdrop-in,\n.actions-backdrop.backdrop-in,\n.dialog-backdrop.backdrop-in,\n.popover-backdrop.backdrop-in,\n.popup-backdrop.backdrop-in,\n.preloader-backdrop.backdrop-in,\n.sheet-backdrop.backdrop-in,\n.fab-backdrop.backdrop-in {\n visibility: visible;\n opacity: 1;\n}\n/* === Dialog === */\n:root {\n --f7-dialog-button-text-color: var(--f7-theme-color);\n --f7-dialog-button-text-align: center;\n}\n.ios {\n --f7-dialog-width: 270px;\n --f7-dialog-inner-padding: 16px;\n --f7-dialog-border-radius: 13px;\n --f7-dialog-text-align: center;\n --f7-dialog-font-size: 14px;\n --f7-dialog-title-text-color: inherit;\n --f7-dialog-title-font-size: 18px;\n --f7-dialog-title-font-weight: 600;\n --f7-dialog-title-line-height: inherit;\n --f7-dialog-button-font-size: 17px;\n --f7-dialog-button-height: 44px;\n --f7-dialog-button-letter-spacing: 0;\n --f7-dialog-button-font-weight: 400;\n --f7-dialog-button-text-transform: none;\n --f7-dialog-button-strong-bg-color: transparent;\n --f7-dialog-button-strong-text-color: var(--f7-theme-color);\n --f7-dialog-button-strong-font-weight: 500;\n --f7-dialog-input-border-radius: 4px;\n --f7-dialog-input-font-size: 14px;\n --f7-dialog-input-height: 32px;\n --f7-dialog-input-border-width: 1px;\n --f7-dialog-input-placeholder-color: #a9a9a9;\n --f7-dialog-preloader-size: 34px;\n --f7-dialog-input-bg-color: #fff;\n --f7-dialog-bg-color: rgba(255, 255, 255, 0.95);\n --f7-dialog-bg-color-rgb: 255, 255, 255;\n --f7-dialog-text-color: #000;\n --f7-dialog-button-pressed-bg-color: rgba(0, 0, 0, 0.1);\n --f7-dialog-button-strong-pressed-bg-color: rgba(0, 0, 0, 0.1);\n --f7-dialog-input-border-color: rgba(0, 0, 0, 0.3);\n --f7-dialog-border-divider-color: rgba(0, 0, 0, 0.2);\n}\n.ios .dark,\n.ios.dark {\n --f7-dialog-text-color: #fff;\n --f7-dialog-bg-color: rgba(45, 45, 45, 0.95);\n --f7-dialog-bg-color-rgb: 45, 45, 45;\n --f7-dialog-button-pressed-bg-color: rgba(0, 0, 0, 0.2);\n --f7-dialog-button-strong-pressed-bg-color: rgba(0, 0, 0, 0.2);\n --f7-dialog-border-divider-color: rgba(255, 255, 255, 0.15);\n --f7-dialog-input-border-color: rgba(255, 255, 255, 0.15);\n --f7-dialog-input-bg-color: rgba(0, 0, 0, 0.5);\n}\n.md {\n --f7-dialog-width: 280px;\n --f7-dialog-inner-padding: 24px;\n --f7-dialog-border-radius: 28px;\n --f7-dialog-text-align: left;\n --f7-dialog-font-size: 14px;\n --f7-dialog-title-font-size: 24px;\n --f7-dialog-title-font-weight: 400;\n --f7-dialog-title-line-height: 1.3;\n --f7-dialog-button-font-size: 14px;\n --f7-dialog-button-height: 40px;\n --f7-dialog-button-letter-spacing: normal;\n --f7-dialog-button-font-weight: 500;\n --f7-dialog-button-text-transform: none;\n --f7-dialog-button-strong-font-weight: 500;\n --f7-dialog-input-border-radius: 0px;\n --f7-dialog-input-font-size: 16px;\n --f7-dialog-input-height: 36px;\n --f7-dialog-input-border-color: transparent;\n --f7-dialog-input-border-width: 0px;\n --f7-dialog-preloader-size: 32px;\n --f7-dialog-input-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-dialog-button-pressed-bg-color: transparent;\n --f7-dialog-button-strong-bg-color: var(--f7-theme-color);\n --f7-dialog-button-strong-text-color: var(--f7-md-on-primary);\n --f7-dialog-button-strong-pressed-bg-color: transparent;\n --f7-dialog-bg-color: var(--f7-md-surface-3);\n --f7-dialog-input-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-dialog-text-color: var(--f7-md-on-surface-variant);\n --f7-dialog-title-text-color: var(--f7-md-on-surface);\n}\n.dialog {\n position: absolute;\n z-index: 13500;\n left: 50%;\n margin-top: 0;\n top: 50%;\n overflow: hidden;\n opacity: 0;\n transform: translate3d(0, -50%, 0) scale(1.185);\n transition-property: transform, opacity;\n display: none;\n transition-duration: 400ms;\n width: var(--f7-dialog-width);\n margin-left: calc(-1 * var(--f7-dialog-width) / 2);\n border-radius: var(--f7-dialog-border-radius);\n text-align: var(--f7-dialog-text-align);\n color: var(--f7-dialog-text-color);\n font-size: var(--f7-dialog-font-size);\n background: var(--f7-dialog-bg-color);\n will-change: transform, opacity;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .dialog {\n background-color: rgba(var(--f7-dialog-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.dialog.modal-in {\n opacity: 1;\n transform: translate3d(0, -50%, 0) scale(1);\n}\n.dialog.modal-out {\n opacity: 0;\n z-index: 13499;\n}\n.dialog.not-animated {\n transition-duration: 0ms;\n}\n.dialog-inner {\n position: relative;\n padding: var(--f7-dialog-inner-padding);\n}\n.dialog-title {\n color: var(--f7-dialog-title-text-color);\n font-size: var(--f7-dialog-title-font-size);\n font-weight: var(--f7-dialog-title-font-weight);\n line-height: var(--f7-dialog-title-line-height);\n}\n.dialog-buttons {\n position: relative;\n display: flex;\n}\n.dialog-buttons-vertical .dialog-buttons {\n display: block;\n height: auto !important;\n}\n.dialog-button {\n box-sizing: border-box;\n overflow: hidden;\n position: relative;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: var(--f7-dialog-button-text-color);\n font-size: var(--f7-dialog-button-font-size);\n height: var(--f7-dialog-button-height);\n line-height: var(--f7-dialog-button-height);\n letter-spacing: var(--f7-dialog-button-letter-spacing);\n text-align: var(--f7-dialog-button-text-align);\n font-weight: var(--f7-dialog-button-font-weight);\n text-transform: var(--f7-dialog-button-text-transform);\n display: block;\n cursor: pointer;\n}\n.dialog-button.active-state {\n background-color: var(--f7-dialog-button-pressed-bg-color);\n}\n.dialog-button-strong {\n background-color: var(--f7-dialog-button-strong-bg-color);\n color: var(--f7-dialog-button-strong-text-color);\n font-weight: var(--f7-dialog-button-strong-font-weight);\n}\n.dialog-button-strong.active-state {\n background-color: var(--f7-dialog-button-strong-pressed-bg-color);\n}\n.dialog-no-buttons .dialog-buttons {\n display: none;\n}\n.dialog-input-field {\n position: relative;\n}\ninput.dialog-input[type] {\n box-sizing: border-box;\n margin: 0;\n margin-top: 15px;\n border-radius: var(--f7-dialog-input-border-radius);\n -webkit-appearance: none;\n appearance: none;\n width: 100%;\n display: block;\n font-family: inherit;\n box-shadow: none;\n font-size: var(--f7-dialog-input-font-size);\n height: var(--f7-dialog-input-height);\n background-color: var(--f7-dialog-input-bg-color);\n border: var(--f7-dialog-input-border-width) solid var(--f7-dialog-input-border-color);\n}\ninput.dialog-input[type]::placeholder {\n color: var(--f7-dialog-input-placeholder-color);\n}\n.dialog-input-double input.dialog-input {\n border-radius: var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius) 0 0;\n}\n.dialog-input-double + .dialog-input-double input.dialog-input {\n border-radius: 0 0 var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius);\n}\n.dialog-preloader .preloader {\n --f7-preloader-size: var(--f7-dialog-preloader-size);\n}\nhtml.with-modal-dialog .page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\n.ios .dialog.modal-out {\n transform: translate3d(0, -50%, 0) scale(1);\n}\n.ios .dialog-inner {\n border-radius: var(--f7-dialog-border-radius) var(--f7-dialog-border-radius) 0 0;\n}\n.ios .dialog-inner:after {\n content: '';\n position: absolute;\n background-color: var(--f7-dialog-border-divider-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.ios .dialog-title + .dialog-text {\n margin-top: 5px;\n}\n.ios .dialog-buttons {\n height: 44px;\n justify-content: center;\n}\n.ios .dialog-button {\n width: 100%;\n padding: 0 5px;\n -webkit-box-flex: 1;\n -ms-flex: 1;\n}\n.ios .dialog-button:after {\n content: '';\n position: absolute;\n background-color: var(--f7-dialog-border-divider-color);\n display: block;\n z-index: 15;\n top: 0;\n right: 0;\n bottom: auto;\n left: auto;\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.ios .dialog-button:first-child {\n border-radius: 0 0 0 var(--f7-dialog-border-radius);\n}\n.ios .dialog-button:last-child {\n border-radius: 0 0 var(--f7-dialog-border-radius) 0;\n}\n.ios .dialog-button:last-child:after {\n display: none !important;\n}\n.ios .dialog-button:first-child:last-child {\n border-radius: 0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius);\n}\n.ios .dialog-button[class*='color-'] {\n --f7-dialog-button-text-color: var(--f7-theme-color);\n}\n.ios .dialog-buttons-vertical .dialog-buttons {\n height: auto;\n}\n.ios .dialog-buttons-vertical .dialog-button {\n border-radius: 0;\n}\n.ios .dialog-buttons-vertical .dialog-button:after {\n content: '';\n position: absolute;\n background-color: var(--f7-dialog-border-divider-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.ios .dialog-buttons-vertical .dialog-button:last-child {\n border-radius: 0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius);\n}\n.ios .dialog-buttons-vertical .dialog-button:last-child:after {\n display: none !important;\n}\n.ios .dialog-no-buttons .dialog-inner {\n border-radius: var(--f7-dialog-border-radius);\n}\n.ios .dialog-no-buttons .dialog-inner:after {\n display: none !important;\n}\n.ios .dialog-input-field {\n margin-top: 15px;\n}\n.ios .dialog-input {\n padding: 0 5px;\n}\n.ios .dialog-input + .dialog-input {\n margin-top: 5px;\n}\n.ios .dialog-input-double + .dialog-input-double {\n margin-top: 0;\n}\n.ios .dialog-input-double + .dialog-input-double .dialog-input {\n border-top: 0;\n margin-top: 0;\n}\n.ios .dialog-preloader .dialog-title ~ .preloader,\n.ios .dialog-preloader .dialog-text ~ .preloader {\n margin-top: 15px;\n}\n.ios .dialog-progress .dialog-title ~ .progressbar,\n.ios .dialog-progress .dialog-text ~ .progressbar,\n.ios .dialog-progress .dialog-title ~ .progressbar-infinite,\n.ios .dialog-progress .dialog-text ~ .progressbar-infinite {\n margin-top: 15px;\n}\n.md .dialog.modal-out {\n transform: translate3d(0, -50%, 0) scale(0.815);\n}\n.md .dialog-title + .dialog-text {\n margin-top: 20px;\n}\n.md .dialog-text {\n line-height: 1.5;\n}\n.md .dialog-buttons {\n height: 64px;\n padding: 0px 24px 24px;\n overflow: hidden;\n box-sizing: border-box;\n justify-content: flex-end;\n}\n.md .dialog-button {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n border-radius: 99px;\n min-width: 64px;\n padding: 0px 16px;\n border: none;\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n}\n.md .dialog-button + .dialog-button {\n margin-left: 8px;\n}\n.md .dialog-button-strong {\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.md .dialog-button[class*='color-'] {\n --f7-dialog-button-text-color: var(--f7-theme-color);\n}\n.md .dialog-buttons-vertical .dialog-buttons {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n}\n.md .dialog-buttons-vertical .dialog-button + .dialog-button {\n margin-top: 8px;\n margin-left: 0;\n}\n.md .dialog-input {\n padding: 0;\n transition-duration: 200ms;\n position: relative;\n}\n.md .dialog-input + .dialog-input {\n margin-top: 16px;\n}\n.md .dialog-preloader .dialog-title,\n.md .dialog-progress .dialog-title,\n.md .dialog-preloader .dialog-inner,\n.md .dialog-progress .dialog-inner {\n text-align: center;\n}\n.md .dialog-preloader .dialog-title ~ .preloader,\n.md .dialog-preloader .dialog-text ~ .preloader {\n margin-top: 20px;\n}\n.md .dialog-progress .dialog-title ~ .progressbar,\n.md .dialog-progress .dialog-text ~ .progressbar,\n.md .dialog-progress .dialog-title ~ .progressbar-infinite,\n.md .dialog-progress .dialog-text ~ .progressbar-infinite {\n margin-top: 16px;\n}\n/* === Popup === */\n:root {\n --f7-popup-border-radius: 0px;\n --f7-popup-tablet-width: 630px;\n --f7-popup-tablet-height: 630px;\n --f7-popup-push-offset: var(--f7-safe-area-top);\n /*\n --f7-popup-tablet-border-radius: var(--f7-popup-border-radius);\n */\n}\n.ios {\n --f7-popup-tablet-border-radius: 5px;\n --f7-popup-transition-duration: 400ms;\n --f7-popup-transition-timing-function: initial;\n --f7-popup-push-border-radius: 10px;\n}\n.md {\n --f7-popup-tablet-border-radius: 28px;\n --f7-popup-transition-duration: 600ms;\n --f7-popup-transition-timing-function: cubic-bezier(0, 1, 0.2, 1);\n --f7-popup-push-border-radius: 28px;\n}\n.popup-backdrop {\n z-index: 10500;\n}\n.popup-backdrop-unique {\n z-index: 11000;\n}\n.popup {\n position: absolute;\n left: 0;\n top: 0px;\n width: 100%;\n height: 100%;\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n transition-timing-function: var(--f7-popup-transition-timing-function);\n transform: translate3d(0, 100vh, 0);\n background: #fff;\n z-index: 11000;\n overflow: hidden;\n border-radius: var(--f7-popup-border-radius);\n}\n.dark .popup,\n.popup.dark {\n background: #000;\n}\n.popup.modal-in,\n.popup.modal-out {\n transition-duration: var(--f7-popup-transition-duration);\n}\n.popup.not-animated {\n transition-duration: 0ms;\n}\n.popup.modal-in {\n display: block;\n transform: translate3d(0, 0, 0);\n}\n.popup.modal-out {\n transform: translate3d(0, 100vh, 0);\n}\n.popup.swipe-close-to-top.modal-out {\n transform: translate3d(0, -100vh, 0);\n}\n@media (min-width: 630px) and (min-height: 630px) {\n .popup:not(.popup-tablet-fullscreen) {\n --f7-safe-area-top: 0px;\n --f7-safe-area-bottom: 0px;\n width: var(--f7-popup-tablet-width);\n height: var(--f7-popup-tablet-height);\n left: 50%;\n top: 50%;\n margin-left: calc(-1 * var(--f7-popup-tablet-width) / 2);\n margin-top: calc(-1 * var(--f7-popup-tablet-height) / 2);\n transform: translate3d(0, 100vh, 0);\n border-radius: var(--f7-popup-tablet-border-radius, var(--f7-popup-border-radius));\n }\n .popup:not(.popup-tablet-fullscreen).modal-in {\n transform: translate3d(0, 0, 0);\n }\n .popup:not(.popup-tablet-fullscreen).modal-out {\n transform: translate3d(0, 100vh, 0);\n }\n .popup:not(.popup-tablet-fullscreen).swipe-close-to-top.modal-out {\n transform: translate3d(0, -100vh, 0);\n }\n .popup:not(.popup-tablet-fullscreen).popup-behind {\n transform: translate3d(0, 0, 0) scale(0.9);\n pointer-events: none;\n }\n .popup:not(.popup-tablet-fullscreen).popup-behind.modal-out {\n transform: translate3d(0, 100vh, 0) scale(0.9);\n }\n html.with-modal-popup-push .popup-push:not(.popup-tablet-fullscreen) {\n margin-top: 0;\n }\n}\nhtml.with-modal-popup .framework7-root > .views .page-content,\nhtml.with-modal-popup .framework7-root > .view .page-content,\nhtml.with-modal-popup .framework7-root > .panel .page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\nhtml.with-modal-popup-push .popup-push,\nhtml.with-modal-popup-push-closing .popup-push {\n top: calc(var(--f7-popup-push-offset) + 10px);\n height: calc(100% - var(--f7-popup-push-offset) - 10px);\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n --f7-safe-area-top: 0px;\n}\nhtml.with-modal-popup-push .popup-push .view,\nhtml.with-modal-popup-push-closing .popup-push .view,\nhtml.with-modal-popup-push .popup-push .page,\nhtml.with-modal-popup-push-closing .popup-push .page {\n --f7-safe-area-top: 0px;\n}\nhtml.with-modal-popup-push .framework7-root,\nhtml.with-modal-popup-push-closing .framework7-root {\n background: #000;\n}\nhtml.with-modal-popup-push .framework7-root > .views,\nhtml.with-modal-popup-push-closing .framework7-root > .views,\nhtml.with-modal-popup-push .framework7-root > .view,\nhtml.with-modal-popup-push-closing .framework7-root > .view {\n transition-duration: var(--f7-popup-transition-duration);\n transition-timing-function: var(--f7-popup-transition-timing-function);\n}\nhtml.with-modal-popup-push.dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-popup-push.dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-popup-push .dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-popup-push .dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-popup-push .dark.framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-popup-push .dark.framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-popup-push .framework7-root > .views.dark:after,\nhtml.with-modal-popup-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-popup-push .framework7-root > .view.dark:after,\nhtml.with-modal-popup-push-closing .framework7-root > .view.dark:after {\n content: '';\n position: absolute;\n pointer-events: none;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(255, 255, 255, 0.1);\n z-index: 13000;\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n opacity: 1;\n animation: popup-dark-push-overlay-fade-in var(--f7-popup-transition-duration) forwards;\n}\nhtml.with-modal-popup-push .framework7-root > .views,\nhtml.with-modal-popup-push .framework7-root > .view {\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n transform: translate3d(0, 0, 0px) scale(var(--f7-popup-push-scale, 1)) !important;\n}\nhtml.with-modal-popup-push .popup:after {\n content: '';\n pointer-events: none;\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.4);\n z-index: 13000;\n transition-duration: var(--f7-popup-transition-duration);\n transition-timing-function: var(--f7-popup-transition-timing-function);\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n opacity: 0;\n}\nhtml.with-modal-popup-push.dark .popup:after,\nhtml.with-modal-popup-push .dark .popup:after,\nhtml.with-modal-popup-push .dark.popup:after {\n background: rgba(255, 255, 255, 0.05);\n}\nhtml.with-modal-popup-push .popup-behind {\n transform: translate3d(0, 0px, 0px) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind.modal-out {\n transform: translate3d(0, 100vh, 0) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind:not(.popup-push) {\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n}\nhtml.with-modal-popup-push .popup-behind.popup-push {\n transform: translate3d(0, calc(0px - var(--f7-popup-push-offset) - 10px), 0px) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind.popup-push.modal-out {\n transform: translate3d(0, calc(0px - var(--f7-popup-push-offset) - 10px + 100vh), 0px) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind:after {\n opacity: 1;\n pointer-events: auto;\n}\nhtml.with-modal-popup-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-popup-push-closing .framework7-root > .view.dark:after {\n animation: popup-dark-push-overlay-fade-out var(--f7-popup-transition-duration) forwards;\n animation-timing-function: var(--f7-popup-transition-timing-function);\n}\n@keyframes popup-dark-push-overlay-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes popup-dark-push-overlay-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n/* === Login Screen === */\n:root {\n --f7-login-screen-blocks-max-width: 480px;\n --f7-login-screen-title-text-align: center;\n --f7-login-screen-title-text-color: inherit;\n --f7-login-screen-title-letter-spacing: 0;\n}\n.ios {\n --f7-login-screen-blocks-margin-vertical: 25px;\n --f7-login-screen-transition-timing-function: initial;\n --f7-login-screen-transition-duration: 400ms;\n --f7-login-screen-title-font-weight: 600;\n --f7-login-screen-title-font-size: 28px;\n --f7-login-screen-content-bg-color: #fff;\n --f7-login-screen-bg-color: #fff;\n}\n.ios .dark,\n.ios.dark {\n --f7-login-screen-bg-color: #000;\n --f7-login-screen-content-bg-color: #000;\n}\n.md {\n --f7-login-screen-transition-duration: 600ms;\n --f7-login-screen-transition-timing-function: cubic-bezier(0, 1, 0.2, 1);\n --f7-login-screen-blocks-margin-vertical: 24px;\n --f7-login-screen-title-font-weight: 400;\n --f7-login-screen-title-font-size: 28px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-login-screen-content-bg-color: var(--f7-md-surface);\n --f7-login-screen-bg-color: var(--f7-md-surface);\n}\n.login-screen {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n transform: translate3d(0, 100vh, 0);\n background: var(--f7-login-screen-bg-color);\n transition-timing-function: var(--f7-login-screen-transition-timing-function);\n z-index: 11000;\n}\n.login-screen.modal-in,\n.login-screen.modal-out {\n transition-duration: var(--f7-login-screen-transition-duration);\n}\n.login-screen.not-animated {\n transition-duration: 0ms;\n}\n.login-screen.modal-in {\n display: block;\n transform: translate3d(0, 0, 0);\n}\n.login-screen.modal-out {\n transform: translate3d(0, 100%, 0);\n}\n.login-screen-content,\n.login-screen-page,\n.login-screen .page {\n background: var(--f7-login-screen-content-bg-color);\n}\n.login-screen-content .login-screen-title,\n.login-screen-page .login-screen-title,\n.login-screen-content .list,\n.login-screen-page .list,\n.login-screen-content .block,\n.login-screen-page .block {\n margin: var(--f7-login-screen-blocks-margin-vertical) auto;\n}\n.login-screen-content .login-screen-title,\n.login-screen-page .login-screen-title,\n.login-screen-content .list,\n.login-screen-page .list,\n.login-screen-content .block,\n.login-screen-page .block,\n.login-screen-content .block-footer,\n.login-screen-page .block-footer,\n.login-screen-content .block-header,\n.login-screen-page .block-header {\n max-width: var(--f7-login-screen-blocks-max-width);\n}\n.login-screen-content .list ul,\n.login-screen-page .list ul {\n background: none;\n}\n.login-screen-content .list ul:before,\n.login-screen-page .list ul:before,\n.login-screen-content .list ul:after,\n.login-screen-page .list ul:after {\n display: none !important;\n}\n.login-screen-content .block-footer,\n.login-screen-page .block-footer,\n.login-screen-content .block-header,\n.login-screen-page .block-header {\n text-align: center;\n margin-left: auto;\n margin-right: auto;\n}\n.login-screen-title {\n text-align: var(--f7-login-screen-title-text-align);\n font-size: var(--f7-login-screen-title-font-size);\n font-weight: var(--f7-login-screen-title-font-weight);\n color: var(--f7-login-screen-title-text-color);\n letter-spacing: var(--f7-login-screen-title-letter-spacing);\n}\n.login-screen-page,\n.login-screen > .view > .page,\n.login-screen > .page {\n display: flex;\n flex-direction: column;\n}\n.login-screen-page .page-content,\n.login-screen > .view > .page .page-content,\n.login-screen > .page .page-content,\n.login-screen-page .login-screen-content,\n.login-screen > .view > .page .login-screen-content,\n.login-screen > .page .login-screen-content {\n margin-top: auto;\n margin-bottom: auto;\n height: auto;\n max-height: 100%;\n width: 100%;\n}\n.dark .login-screen-content .list ul,\n.dark .login-screen-content .block-strong,\n.dark .login-screen-page .list ul,\n.dark .login-screen-page .block-strong,\n.dark.login-screen-page .list ul,\n.dark.login-screen-page .block-strong {\n background-color: transparent;\n}\n/* === Popover === */\n:root {\n --f7-popover-width: 260px;\n}\n.ios {\n --f7-popover-border-radius: 13px;\n --f7-popover-actions-icon-size: 28px;\n --f7-popover-transition-timing-function: initial;\n --f7-popover-bg-color: rgba(255, 255, 255, 0.95);\n --f7-popover-actions-label-text-color: rgba(0, 0, 0, 0.45);\n}\n.ios .dark,\n.ios.dark {\n --f7-popover-bg-color: rgba(30, 30, 30, 0.95);\n --f7-popover-actions-label-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-popover-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n --f7-popover-border-radius: 28px;\n --f7-popover-actions-icon-size: 24px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-popover-bg-color: var(--f7-md-surface-3);\n --f7-popover-actions-label-text-color: var(--f7-md-on-surface-variant);\n}\n.popover-backdrop-unique {\n z-index: 13500;\n}\n.popover {\n width: var(--f7-popover-width);\n z-index: 13500;\n margin: 0;\n top: 0;\n opacity: 0;\n left: 0;\n position: absolute;\n display: none;\n transition-duration: 300ms;\n background-color: var(--f7-popover-bg-color);\n border-radius: var(--f7-popover-border-radius);\n will-change: transform, opacity;\n --f7-safe-area-top: 0px;\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n --f7-safe-area-bottom: 0px;\n}\n.popover .list {\n margin: 0;\n}\n.popover .list ul {\n background: none;\n}\n.popover .list:first-child ul:before {\n display: none !important;\n}\n.popover .list:last-child ul:after {\n display: none !important;\n}\n.popover .list:first-child ul {\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n}\n.popover .list:first-child li:first-child,\n.popover .list:first-child li:first-child a,\n.popover .list:first-child li:first-child > label {\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n}\n.popover .list:last-child ul {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.popover .list:last-child li:last-child,\n.popover .list:last-child li:last-child a,\n.popover .list:last-child li:last-child > label {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.popover .list:first-child:last-child li:first-child:last-child,\n.popover .list:first-child:last-child li:first-child:last-child a,\n.popover .list:first-child:last-child li:first-child:last-child > label,\n.popover .list:first-child:last-child ul {\n border-radius: var(--f7-popover-border-radius);\n}\n.popover .list + .list {\n margin-top: var(--f7-list-margin-vertical);\n}\n.popover.modal-in {\n opacity: 1;\n}\n.popover.not-animated {\n transition-duration: 0ms;\n}\n.popover,\n.popover-backdrop {\n transition-timing-function: var(--f7-popover-transition-timing-function);\n}\n.popover-inner {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n}\n.popover-from-actions .item-link i.icon {\n width: var(--f7-popover-actions-icon-size);\n height: var(--f7-popover-actions-icon-size);\n font-size: var(--f7-popover-actions-icon-size);\n}\n.ios .popover-from-actions-strong {\n font-weight: 600;\n}\n.md .popover-from-actions-strong {\n font-weight: 500;\n}\n.popover-from-actions-label {\n line-height: 1.3;\n position: relative;\n display: flex;\n align-items: center;\n padding: var(--f7-actions-label-padding);\n color: var(--f7-popover-actions-label-text-color);\n font-size: var(--f7-actions-label-font-size);\n justify-content: var(--f7-actions-label-justify-content);\n}\n.popover-from-actions-label:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.popover-from-actions-label:last-child:after {\n display: none !important;\n}\n.md .popover-from-actions-label {\n justify-content: center;\n}\n.popover-arrow {\n width: 26px;\n height: 26px;\n position: absolute;\n left: -26px;\n top: 0;\n z-index: 100;\n overflow: hidden;\n}\n.popover-arrow:after {\n content: '';\n background: var(--f7-popover-bg-color);\n width: 26px;\n height: 26px;\n position: absolute;\n left: 0;\n top: 0;\n border-radius: 3px;\n transform: rotate(45deg);\n}\n.popover-arrow.on-left {\n left: -26px;\n}\n.popover-arrow.on-left:after {\n left: 19px;\n top: 0;\n}\n.popover-arrow.on-right {\n left: 100%;\n}\n.popover-arrow.on-right:after {\n left: -19px;\n top: 0;\n}\n.popover-arrow.on-top {\n left: 0;\n top: -26px;\n}\n.popover-arrow.on-top:after {\n left: 0;\n top: 19px;\n}\n.popover-arrow.on-bottom {\n left: 0;\n top: 100%;\n}\n.popover-arrow.on-bottom:after {\n left: 0;\n top: -19px;\n}\n.ios .popover {\n transform: none;\n transition-property: opacity;\n}\n.md .popover {\n transform: scale(0.85, 0.6);\n transition-property: opacity, transform;\n}\n.md .popover.modal-in {\n opacity: 1;\n transform: scale(1);\n}\n.md .popover.modal-out {\n opacity: 0;\n transform: scale(1);\n}\n.md .popover-on-top {\n transform-origin: center bottom;\n}\n.md .popover-on-top.popover-on-right {\n transform-origin: left bottom;\n}\n.md .popover-on-top.popover-on-left {\n transform-origin: right bottom;\n}\n.md .popover-on-middle {\n transform-origin: center center;\n}\n.md .popover-on-middle.popover-on-right {\n transform-origin: left center;\n}\n.md .popover-on-middle.popover-on-left {\n transform-origin: right center;\n}\n.md .popover-on-bottom {\n transform-origin: center top;\n}\n.md .popover-on-bottom.popover-on-right {\n transform-origin: left top;\n}\n.md .popover-on-bottom.popover-on-left {\n transform-origin: right top;\n}\n/* === Actions === */\n:root {\n --f7-actions-grid-button-font-size: 12px;\n --f7-actions-grid-button-icon-size: 48px;\n}\n.ios {\n --f7-actions-transition-timing-function: initial;\n --f7-actions-border-radius: 13px;\n /*\n --f7-actions-button-text-color: var(--f7-theme-color);\n */\n --f7-actions-grid-button-text-color: #757575;\n --f7-actions-button-padding: 0px;\n --f7-actions-button-text-align: center;\n --f7-actions-button-height: 57px;\n --f7-actions-button-height-landscape: 44px;\n --f7-actions-button-font-size: 20px;\n --f7-actions-button-icon-size: 28px;\n --f7-actions-button-justify-content: center;\n --f7-actions-label-padding: 8px 10px;\n --f7-actions-label-font-weight: 400;\n --f7-actions-label-font-size: 13px;\n --f7-actions-label-justify-content: center;\n --f7-actions-group-border-color: transparent;\n --f7-actions-group-margin: 8px;\n --f7-actions-bg-color: rgba(255, 255, 255, 0.95);\n --f7-actions-bg-color-rgb: 255, 255, 255;\n --f7-actions-button-border-color: rgba(0, 0, 0, 0.2);\n --f7-actions-button-pressed-bg-color: rgba(230, 230, 230, 0.9);\n --f7-actions-button-pressed-bg-color-rgb: 230, 230, 230;\n --f7-actions-label-text-color: #8a8a8a;\n}\n.ios .dark,\n.ios.dark {\n --f7-actions-bg-color: rgba(45, 45, 45, 0.95);\n --f7-actions-bg-color-rgb: 45, 45, 45;\n --f7-actions-button-border-color: rgba(255, 255, 255, 0.15);\n --f7-actions-button-pressed-bg-color: rgba(50, 50, 50, 0.9);\n --f7-actions-button-pressed-bg-color-rgb: 50, 50, 50;\n --f7-actions-label-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-actions-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n --f7-actions-border-radius: 16px;\n --f7-actions-button-border-color: transparent;\n --f7-actions-button-padding: 0 16px;\n --f7-actions-button-text-align: left;\n --f7-actions-button-height: 48px;\n --f7-actions-button-height-landscape: 48px;\n --f7-actions-button-font-size: 16px;\n --f7-actions-button-icon-size: 24px;\n --f7-actions-button-justify-content: space-between;\n --f7-actions-label-padding: 12px 16px;\n --f7-actions-label-font-size: 14px;\n --f7-actions-label-font-weight: 500;\n --f7-actions-label-justify-content: flex-start;\n --f7-actions-group-margin: 0px;\n --f7-actions-button-pressed-bg-color: #e5e5e5;\n}\n.md .dark,\n.md.dark {\n --f7-actions-button-pressed-bg-color: #2e2e2e;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-actions-button-text-color: var(--f7-md-on-surface);\n --f7-actions-bg-color: var(--f7-md-surface-3);\n --f7-actions-group-border-color: var(--f7-md-outline);\n --f7-actions-label-text-color: var(--f7-theme-color);\n --f7-actions-grid-button-text-color: var(--f7-md-on-surface);\n}\n.actions-backdrop-unique {\n z-index: 13500;\n}\n.actions-modal {\n position: absolute;\n left: 0;\n bottom: 0;\n z-index: 13500;\n width: 100%;\n transform: translate3d(0, 100%, 0);\n display: none;\n max-height: 100%;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n transition-property: transform;\n will-change: transform;\n}\n.actions-modal.modal-in,\n.actions-modal.modal-out {\n transition-duration: 300ms;\n}\n.actions-modal.not-animated {\n transition-duration: 0ms;\n}\n.ios .actions-modal.modal-in {\n transform: translate3d(0, calc(-1 * var(--f7-safe-area-bottom)), 0);\n}\n.md .actions-modal.modal-in {\n transform: translate3d(0, 0, 0);\n}\n.actions-modal.modal-out {\n z-index: 13499;\n transform: translate3d(0, 100%, 0);\n}\n@media (min-width: 496px) {\n .actions-modal {\n width: 480px;\n left: 50%;\n margin-left: -240px;\n }\n}\n@media (orientation: landscape) {\n .actions-modal {\n --f7-actions-button-height: var(--f7-actions-button-height-landscape);\n }\n}\n.actions-backdrop,\n.actions-modal {\n transition-timing-function: var(--f7-actions-transition-timing-function);\n}\n.actions-group {\n overflow: hidden;\n position: relative;\n margin: var(--f7-actions-group-margin);\n transform: translate3d(0, 0, 0);\n}\n.actions-group:after {\n content: '';\n position: absolute;\n background-color: var(--f7-actions-group-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.actions-group:last-child:after {\n display: none !important;\n}\n.actions-button,\n.actions-label {\n width: 100%;\n font-weight: normal;\n margin: 0;\n box-sizing: border-box;\n display: block;\n position: relative;\n overflow: hidden;\n text-align: var(--f7-actions-button-text-align);\n}\n.actions-button:after,\n.actions-label:after {\n content: '';\n position: absolute;\n background-color: var(--f7-actions-button-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.actions-button a,\n.actions-label a {\n text-decoration: none;\n color: inherit;\n display: block;\n}\n.actions-button {\n cursor: pointer;\n display: flex;\n color: var(--f7-actions-button-text-color, var(--f7-theme-color));\n font-size: var(--f7-actions-button-font-size);\n height: var(--f7-actions-button-height);\n line-height: var(--f7-actions-button-height);\n padding: var(--f7-actions-button-padding);\n justify-content: var(--f7-actions-button-justify-content);\n z-index: 10;\n}\n.actions-button.active-state {\n background-color: var(--f7-actions-button-pressed-bg-color) !important;\n}\n.actions-button[class*='color-'] {\n color: var(--f7-theme-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .actions-button.active-state {\n background-color: rgba(var(--f7-actions-button-pressed-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.actions-button-media {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n}\n.actions-button-media i.icon {\n width: var(--f7-actions-button-icon-size);\n height: var(--f7-actions-button-icon-size);\n font-size: var(--f7-actions-button-icon-size);\n}\n.actions-button a,\n.actions-button-text {\n position: relative;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.actions-button-text {\n width: 100%;\n flex-shrink: 1;\n text-align: var(--f7-actions-button-text-align);\n}\n.actions-label {\n line-height: 1.3;\n display: flex;\n align-items: center;\n font-size: var(--f7-actions-label-font-size);\n font-weight: var(--f7-actions-label-font-weight);\n color: var(--f7-actions-label-text-color);\n padding: var(--f7-actions-label-padding);\n justify-content: var(--f7-actions-label-justify-content);\n min-height: var(--f7-actions-label-min-height, var(--f7-actions-button-height));\n}\n.actions-label[class*=' color-'] {\n --f7-actions-label-text-color: var(--f7-theme-color);\n}\n.actions-grid .actions-group {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n margin-top: 0;\n}\n.actions-grid .actions-group:not(:last-child) {\n margin-bottom: 0;\n}\n.actions-grid .actions-button,\n.actions-grid .actions-label {\n background: none;\n}\n.actions-grid .actions-button {\n width: 33.33333333%;\n display: block;\n color: var(--f7-actions-grid-button-text-color);\n height: auto;\n line-height: 1;\n padding: 16px;\n}\n.actions-grid .actions-button:after {\n display: none !important;\n}\n.actions-grid .actions-button-media {\n margin-left: auto !important;\n margin-right: auto !important;\n width: var(--f7-actions-grid-button-icon-size);\n height: var(--f7-actions-grid-button-icon-size);\n}\n.actions-grid .actions-button-media i.icon {\n width: var(--f7-actions-grid-button-icon-size);\n height: var(--f7-actions-grid-button-icon-size);\n font-size: var(--f7-actions-grid-button-icon-size);\n}\n.actions-grid .actions-button-text {\n margin-left: 0 !important;\n text-align: center !important;\n margin-top: 8px;\n line-height: 1.33em;\n height: 1.33em;\n font-size: var(--f7-actions-grid-button-font-size);\n}\n.ios .actions-group {\n border-radius: var(--f7-actions-border-radius);\n}\n.ios .actions-button,\n.ios .actions-label {\n background: var(--f7-actions-bg-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .ios .actions-button,\n .ios-translucent-modals .ios .actions-label {\n background-color: rgba(var(--f7-actions-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.ios .actions-button:first-child,\n.ios .actions-label:first-child {\n border-radius: var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;\n}\n.ios .actions-button:last-child,\n.ios .actions-label:last-child {\n border-radius: 0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius);\n}\n.ios .actions-button:last-child:after,\n.ios .actions-label:last-child:after {\n display: none !important;\n}\n.ios .actions-button:first-child:last-child,\n.ios .actions-label:first-child:last-child {\n border-radius: var(--f7-actions-border-radius);\n}\n.ios .actions-button b,\n.ios .actions-label b,\n.ios .actions-button.actions-button-strong,\n.ios .actions-label.actions-button-strong {\n font-weight: 600;\n}\n.ios .actions-grid .actions-group {\n border-radius: 0;\n background: var(--f7-actions-bg-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .ios .actions-grid .actions-group {\n background-color: rgba(var(--f7-actions-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.ios .actions-grid .actions-group:first-child {\n border-radius: var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;\n}\n.ios .actions-grid .actions-group:last-child {\n border-radius: 0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius);\n}\n.ios .actions-grid .actions-group:first-child:last-child {\n border-radius: var(--f7-actions-border-radius);\n}\n.ios .actions-grid .actions-button,\n.ios .actions-grid .actions-label {\n border-radius: 0 !important;\n}\n.ios .actions-button-media {\n margin-left: 16px;\n}\n.ios .actions-button-media + .actions-button-text {\n text-align: left;\n margin-left: 16px;\n}\n.md .actions-modal {\n background-color: var(--f7-actions-bg-color);\n border-radius: var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;\n padding-bottom: var(--f7-safe-area-bottom);\n}\n.md .actions-button {\n transition-duration: 300ms;\n}\n.md .actions-button b,\n.md .actions-label b,\n.md .actions-button.actions-button-strong,\n.md .actions-label.actions-button-strong {\n font-weight: 500;\n}\n.md .actions-button-media {\n min-width: 40px;\n}\n.md .actions-button-media + .actions-button-text {\n margin-left: 16px;\n}\n/* === Sheet Modal === */\n:root {\n --f7-sheet-height: 260px;\n --f7-sheet-push-offset: var(--f7-safe-area-top);\n}\n.ios {\n --f7-sheet-border-radius: 0px;\n --f7-sheet-border-color: var(--f7-bars-border-color);\n --f7-sheet-transition-timing-function: initial;\n --f7-sheet-push-border-radius: 10px;\n --f7-sheet-transition-duration: 300ms;\n --f7-sheet-bg-color: #fff;\n}\n.ios .dark,\n.ios.dark {\n --f7-sheet-bg-color: #202020;\n}\n.md {\n --f7-sheet-border-radius: 16px;\n --f7-sheet-push-border-radius: 16px;\n --f7-sheet-border-color: transparent;\n --f7-sheet-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n --f7-sheet-transition-duration: 400ms;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-sheet-bg-color: var(--f7-md-surface);\n}\n.sheet-backdrop {\n z-index: 11000;\n}\n.sheet-backdrop-unique {\n z-index: 12500;\n}\n.sheet-modal {\n overflow: hidden;\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n height: var(--f7-sheet-height);\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n transform: translate3d(0, 100%, 0);\n background: var(--f7-sheet-bg-color);\n z-index: 12500;\n will-change: transform, opacity;\n}\n.sheet-modal.modal-in,\n.sheet-modal.modal-out {\n transition-duration: var(--f7-sheet-transition-duration);\n}\n.sheet-modal.not-animated {\n transition-duration: 0ms;\n}\n.sheet-modal.modal-in {\n display: block;\n transform: translate3d(0, 0, 0);\n}\n.sheet-modal.modal-in-swipe-step,\n.sheet-modal.modal-in-breakpoint {\n display: block;\n transform: translate3d(0, var(--f7-sheet-breakpoint, var(--f7-sheet-swipe-step, 0)), 0);\n}\n.sheet-modal.modal-out {\n transform: translate3d(0, 100%, 0);\n}\n.sheet-modal .sheet-modal-inner {\n height: 100%;\n position: relative;\n overflow: hidden;\n}\n.sheet-modal .toolbar {\n --f7-safe-area-bottom: 0px;\n position: relative;\n width: 100%;\n}\n.sheet-modal .toolbar:after,\n.sheet-modal .toolbar:before {\n display: none;\n}\n.sheet-modal .toolbar + .sheet-modal-inner {\n height: calc(100% - var(--f7-toolbar-height));\n}\n.sheet-modal .toolbar + .sheet-modal-inner .page-content {\n --f7-page-toolbar-top-offset: 0px;\n --f7-page-toolbar-bottom-offset: 0px;\n}\n.sheet-backdrop,\n.sheet-modal {\n transition-timing-function: var(--f7-sheet-transition-timing-function);\n}\n.sheet-modal-top {\n border-radius: 0 0 var(--f7-sheet-border-radius) var(--f7-sheet-border-radius);\n}\n.sheet-modal-top:after {\n content: '';\n position: absolute;\n background-color: var(--f7-sheet-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.sheet-modal-top:after {\n z-index: 700;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n transform-style: preserve-3d;\n}\n.sheet-modal-bottom,\n.sheet-modal:not(.sheet-modal-top) {\n --f7-safe-area-top: 0px;\n border-radius: var(--f7-sheet-border-radius) var(--f7-sheet-border-radius) 0 0;\n}\n.sheet-modal-bottom:before,\n.sheet-modal:not(.sheet-modal-top):before {\n content: '';\n position: absolute;\n background-color: var(--f7-sheet-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.sheet-modal-bottom:before,\n.sheet-modal:not(.sheet-modal-top):before {\n z-index: 700;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n transform-style: preserve-3d;\n}\n.sheet-modal-top {\n --f7-safe-area-bottom: 0px;\n bottom: auto;\n top: 0;\n transform: translate3d(0, -100%, 0);\n}\n.sheet-modal-top.modal-out {\n transform: translate3d(0, -100%, 0);\n}\n.sheet-modal-top .toolbar-bottom {\n position: absolute;\n}\n.sheet-modal-top .page-content {\n padding-top: var(--f7-safe-area-top);\n}\nhtml.with-modal-sheet-push .sheet-modal-push,\nhtml.with-modal-sheet-push-closing .sheet-modal-push {\n --f7-sheet-border-color: transparent;\n border-radius: var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius) 0 0;\n overflow: hidden;\n}\nhtml.with-modal-sheet-push .sheet-modal-push .view,\nhtml.with-modal-sheet-push-closing .sheet-modal-push .view,\nhtml.with-modal-sheet-push .sheet-modal-push .page,\nhtml.with-modal-sheet-push-closing .sheet-modal-push .page {\n --f7-safe-area-top: 0px;\n}\nhtml.with-modal-sheet-push .sheet-modal-push.sheet-modal-top,\nhtml.with-modal-sheet-push-closing .sheet-modal-push.sheet-modal-top {\n border-radius: 0 0 var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius);\n}\nhtml.with-modal-sheet-push .framework7-root,\nhtml.with-modal-sheet-push-closing .framework7-root {\n background: #000;\n}\nhtml.with-modal-sheet-push .framework7-root > .views,\nhtml.with-modal-sheet-push-closing .framework7-root > .views,\nhtml.with-modal-sheet-push .framework7-root > .view,\nhtml.with-modal-sheet-push-closing .framework7-root > .view {\n transition-duration: var(--f7-sheet-transition-duration);\n transition-timing-function: var(--f7-sheet-transition-timing-function);\n}\nhtml.with-modal-sheet-push.dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push.dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push .dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push .dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push .dark.framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-sheet-push .dark.framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-sheet-push .framework7-root > .views.dark:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-sheet-push .framework7-root > .view.dark:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .view.dark:after {\n content: '';\n position: absolute;\n pointer-events: none;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(255, 255, 255, 0.1);\n z-index: 13000;\n opacity: 1;\n transition-duration: var(--f7-sheet-transition-duration);\n transition-timing-function: var(--f7-sheet-transition-timing-function);\n animation: sheet-dark-push-overlay-fade-in var(--f7-sheet-transition-duration);\n animation-timing-function: var(--f7-sheet-transition-timing-function);\n}\nhtml.with-modal-sheet-push .framework7-root > .views,\nhtml.with-modal-sheet-push .framework7-root > .view {\n border-radius: var(--f7-sheet-push-border-radius);\n transform: translate3d(0, 0, 0px) scale(var(--f7-sheet-push-scale, 1)) !important;\n}\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .view.dark:after {\n opacity: 0;\n animation: none;\n}\n@keyframes sheet-dark-push-overlay-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n.md .sheet-modal .toolbar a.link:not(.tab-link) {\n flex-shrink: 0;\n}\n/* === Toast === */\n:root {\n --f7-toast-font-size: 14px;\n --f7-toast-icon-size: 48px;\n --f7-toast-max-width: 568px;\n}\n.ios {\n --f7-toast-text-color: #fff;\n --f7-toast-bg-color: rgba(0, 0, 0, 0.75);\n --f7-toast-bg-color-rgb: 0, 0, 0;\n --f7-toast-padding-horizontal: 16px;\n --f7-toast-padding-vertical: 12px;\n --f7-toast-border-radius: 8px;\n --f7-toast-button-min-width: 64px;\n}\n.md {\n --f7-toast-padding-horizontal: 24px;\n --f7-toast-padding-vertical: 14px;\n --f7-toast-border-radius: 16px;\n --f7-toast-button-min-width: 64px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-toast-text-color: var(--f7-md-on-surface);\n --f7-toast-bg-color: var(--f7-md-surface-5);\n}\n.toast {\n transition-property: transform, opacity;\n position: absolute;\n max-width: var(--f7-toast-max-width);\n z-index: 20000;\n color: var(--f7-toast-text-color);\n font-size: var(--f7-toast-font-size);\n box-sizing: border-box;\n background-color: var(--f7-toast-bg-color);\n opacity: 0;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .toast {\n background-color: rgba(var(--f7-toast-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.toast.modal-in {\n opacity: 1;\n}\n.toast .toast-content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-sizing: border-box;\n padding: var(--f7-toast-padding-vertical) var(--f7-toast-padding-horizontal);\n}\n.toast .toast-text {\n line-height: 20px;\n flex-shrink: 1;\n min-width: 0;\n}\n.toast .toast-button {\n flex-shrink: 0;\n min-width: var(--f7-toast-button-min-width);\n margin-top: -8px;\n margin-bottom: -8px;\n}\n.toast.toast-with-icon .toast-content {\n display: block;\n text-align: center;\n}\n.toast.toast-with-icon .toast-text {\n text-align: center;\n}\n.toast.toast-with-icon .toast-icon .f7-icons,\n.toast.toast-with-icon .toast-icon .material-icons {\n font-size: var(--f7-toast-icon-size);\n}\n.toast.toast-center {\n top: 50%;\n}\n.toast.toast-top {\n margin-top: var(--f7-safe-area-top);\n}\n.ios .toast {\n transition-duration: 300ms;\n width: 100%;\n left: 0;\n}\n.ios .toast.toast-top {\n top: 0;\n transform: translate3d(0, -100%, 0);\n}\n.ios .toast.toast-top.modal-in {\n transform: translate3d(0, 0%, 0);\n}\n.ios .toast.toast-center {\n width: auto;\n left: 50%;\n border-radius: var(--f7-toast-border-radius);\n transform: translate3d(-50%, -50%, 0);\n}\n.ios .toast.toast-center.modal-in {\n transform: translate3d(-50%, -50%, 0);\n}\n.ios .toast.toast-bottom {\n bottom: 0;\n transform: translate3d(0, 100%, 0);\n}\n.ios .toast.toast-bottom.modal-in {\n transform: translate3d(0, 0%, 0);\n}\n@media (max-width: 568px) {\n .ios .toast.toast-top {\n margin-top: 0;\n }\n .ios .toast.toast-top .toast-content {\n padding-top: calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-top));\n }\n .ios .toast.toast-bottom .toast-content {\n padding-bottom: calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-bottom));\n }\n}\n@media (min-width: 569px) {\n .ios .toast {\n left: 50%;\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n border-radius: var(--f7-toast-border-radius);\n }\n .ios .toast.toast-top {\n top: 16px;\n }\n .ios .toast.toast-center {\n margin-left: 0;\n }\n .ios .toast.toast-bottom {\n margin-bottom: calc(16px + var(--f7-safe-area-bottom));\n }\n}\n@media (min-width: 1024px) {\n .ios .toast {\n margin-left: 0;\n width: auto;\n }\n .ios .toast.toast-horizontal-left {\n left: 16px;\n }\n .ios .toast.toast-horizontal-right {\n left: auto;\n right: 16px;\n }\n .ios .toast.toast-horizontal-center {\n left: 50%;\n width: var(--f7-toast-max-width);\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n }\n}\n.ios .toast-button {\n margin-left: 16px;\n margin-right: calc(-1 * var(--f7-button-padding-horizontal));\n}\n.md .toast {\n transition-duration: 200ms;\n border-radius: var(--f7-toast-border-radius);\n width: calc(100% - 16px);\n transform: scale(0.9);\n left: 8px;\n}\n.md .toast.modal-in {\n transform: scale(1);\n}\n.md .toast.modal-out {\n transform: scale(1);\n}\n.md .toast.toast-top {\n top: 8px;\n}\n.md .toast.toast-center {\n left: 50%;\n width: auto;\n transform: scale(0.9) translate3d(-55%, -55%, 0);\n}\n.md .toast.toast-center.modal-in {\n transform: scale(1) translate3d(-50%, -50%, 0);\n}\n.md .toast.toast-center.modal-out {\n transform: scale(1) translate3d(-50%, -50%, 0);\n}\n.md .toast.toast-bottom {\n bottom: calc(8px + var(--f7-safe-area-bottom));\n}\n@media (min-width: 584px) {\n .md .toast {\n left: 50%;\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n }\n .md .toast.toast-center {\n margin-left: 0;\n }\n}\n@media (min-width: 1024px) {\n .md .toast {\n margin-left: 0;\n width: auto;\n }\n .md .toast.toast-horizontal-left {\n left: 24px;\n }\n .md .toast.toast-horizontal-right {\n left: auto;\n right: 24px;\n }\n .md .toast.toast-horizontal-center {\n left: 50%;\n width: var(--f7-toast-max-width);\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n }\n .md .toast.toast-bottom {\n bottom: calc(24px + var(--f7-safe-area-bottom));\n }\n .md .toast.toast-top {\n top: 24px;\n }\n}\n.md .toast-button {\n margin-left: 16px;\n margin-right: -8px;\n}\n/* === Preloader === */\n:root {\n --f7-preloader-modal-padding: 8px;\n --f7-preloader-modal-bg-color: rgba(0, 0, 0, 0.8);\n}\n.ios {\n --f7-preloader-color: #6c6c6c;\n --f7-preloader-size: 20px;\n --f7-preloader-modal-preloader-size: 34px;\n --f7-preloader-modal-border-radius: 5px;\n}\n.md {\n --f7-preloader-color: #757575;\n --f7-preloader-size: 32px;\n --f7-preloader-modal-preloader-size: 32px;\n --f7-preloader-modal-border-radius: 4px;\n}\n.preloader {\n display: inline-block;\n vertical-align: middle;\n width: var(--f7-preloader-size);\n height: var(--f7-preloader-size);\n font-size: 0;\n position: relative;\n}\n.preloader .preloader-inner {\n width: 100%;\n height: 100%;\n display: block;\n position: relative;\n}\n/* === Preloader Modal === */\n.preloader-backdrop {\n visibility: visible;\n opacity: 0;\n background: none;\n z-index: 14000;\n}\n.preloader-modal {\n position: absolute;\n left: 50%;\n top: 50%;\n padding: var(--f7-preloader-modal-padding);\n background: var(--f7-preloader-modal-bg-color);\n z-index: 14500;\n transform: translateX(-50%) translateY(-50%);\n border-radius: var(--f7-preloader-modal-border-radius);\n}\n.preloader-modal .preloader {\n --f7-preloader-size: var(--f7-preloader-modal-preloader-size);\n display: block !important;\n}\nhtml.with-modal-preloader .page-content,\n.with-modal-preloader .page-content,\n.with-modal-preloader.page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\n.preloader[class*='color-'] {\n --f7-preloader-color: var(--f7-theme-color);\n}\n.preloader.color-white {\n --f7-preloader-color: #fff;\n}\n.preloader.color-black {\n --f7-preloader-color: #000;\n}\n.ios .preloader {\n color: var(--f7-preloader-color);\n}\n.ios .preloader-inner {\n animation: ios-preloader-spin 1s steps(8, end) infinite;\n}\n.ios .preloader-inner-line {\n display: block;\n width: 11.6%;\n height: 33.33%;\n border-radius: 100px;\n background: currentColor;\n position: absolute;\n left: 50%;\n top: 50%;\n transform-origin: center 150%;\n}\n.ios .preloader-multi-color .preloader-inner-line,\n.ios .preloader.color-multi .preloader-inner-line {\n animation: ios-preloader-multicolor 3s linear infinite;\n}\n.ios .preloader-inner-line:nth-child(1) {\n transform: translate(-50%, -150%) rotate(0deg);\n opacity: 0.27;\n}\n.ios .preloader-inner-line:nth-child(2) {\n transform: translate(-50%, -150%) rotate(45deg);\n opacity: 0.35285714;\n}\n.ios .preloader-inner-line:nth-child(3) {\n transform: translate(-50%, -150%) rotate(90deg);\n opacity: 0.43571429;\n}\n.ios .preloader-inner-line:nth-child(4) {\n transform: translate(-50%, -150%) rotate(135deg);\n opacity: 0.51857143;\n}\n.ios .preloader-inner-line:nth-child(5) {\n transform: translate(-50%, -150%) rotate(180deg);\n opacity: 0.60142857;\n}\n.ios .preloader-inner-line:nth-child(6) {\n transform: translate(-50%, -150%) rotate(225deg);\n opacity: 0.68428571;\n}\n.ios .preloader-inner-line:nth-child(7) {\n transform: translate(-50%, -150%) rotate(270deg);\n opacity: 0.76714286;\n}\n.ios .preloader-inner-line:nth-child(8) {\n transform: translate(-50%, -150%) rotate(315deg);\n opacity: 0.85;\n}\n@keyframes ios-preloader-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n@keyframes ios-preloader-multicolor {\n 0%,\n 100% {\n background-color: #2196f3;\n }\n 25% {\n background-color: #ff3b30;\n }\n 50% {\n background-color: #4cd964;\n }\n 75% {\n background-color: #ff9500;\n }\n}\n.md .preloader {\n color: var(--f7-preloader-color);\n}\n.md .preloader-inner {\n animation: md-preloader-rotate 1.4s linear infinite;\n}\n.md .preloader-inner circle {\n fill: none;\n stroke: currentColor;\n animation: md-preloader-circle-rotate 5.6s ease-in-out infinite;\n stroke-dasharray: 100px;\n stroke-dashoffset: 80px;\n stroke-width: 4;\n transform: rotate(-90deg);\n transform-origin: 18px 18px;\n}\n.md .preloader-multi-color circle,\n.md .preloader.color-multi circle {\n animation: md-preloader-circle-rotate 5.6s ease-in-out infinite, md-preloader-multicolor 5.6s ease-in-out infinite;\n}\n@keyframes md-preloader-multicolor {\n 0%,\n 100% {\n stroke: #4285f4;\n }\n 75% {\n stroke: #1b9a59;\n }\n 50% {\n stroke: #f7c223;\n }\n 25% {\n stroke: #de3e35;\n }\n}\n@keyframes md-preloader-rotate {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n@keyframes md-preloader-circle-rotate {\n 0% {\n transform: rotate(-90deg);\n stroke-dashoffset: 100px;\n }\n 12.5% {\n transform: rotate(-90deg);\n stroke-dashoffset: 25px;\n }\n 25% {\n stroke-dashoffset: 100px;\n transform: rotate(180deg);\n }\n 25.1% {\n transform: rotate(-180deg);\n stroke-dashoffset: 100px;\n }\n 37.5% {\n transform: rotate(-180deg);\n stroke-dashoffset: 25px;\n }\n 50% {\n stroke-dashoffset: 100px;\n transform: rotate(90deg);\n }\n 50.1% {\n transform: rotate(90deg);\n stroke-dashoffset: 100px;\n }\n 62.5% {\n transform: rotate(90deg);\n stroke-dashoffset: 25px;\n }\n 75% {\n stroke-dashoffset: 100px;\n transform: rotate(360deg);\n }\n 75.1% {\n transform: rotate(0deg);\n stroke-dashoffset: 100px;\n }\n 87.5% {\n transform: rotate(0deg);\n stroke-dashoffset: 25px;\n }\n 100% {\n stroke-dashoffset: 100px;\n transform: rotate(270deg);\n }\n}\n/* === Progressbar === */\n:root {\n /*\n --f7-progressbar-progress-color: var(--f7-theme-color);\n */\n}\n.ios {\n --f7-progressbar-height: 4px;\n --f7-progressbar-border-radius: 4px;\n --f7-progressbar-bg-color: rgba(0, 0, 0, 0.3);\n}\n.ios .dark,\n.ios.dark {\n --f7-progressbar-bg-color: rgba(255, 255, 255, 0.3);\n}\n.md {\n --f7-progressbar-height: 4px;\n --f7-progressbar-border-radius: 0px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-progressbar-bg-color: rgba(var(--f7-theme-color-rgb), 0.5);\n}\n.progressbar,\n.progressbar-infinite {\n width: 100%;\n overflow: hidden;\n position: relative;\n display: block;\n transform-style: preserve-3d;\n background: var(--f7-progressbar-bg-color, rgba(var(--f7-theme-color-rgb), 0.5));\n transform-origin: center top;\n height: var(--f7-progressbar-height);\n border-radius: var(--f7-progressbar-border-radius);\n}\n.progressbar {\n vertical-align: middle;\n}\n.progressbar span {\n background-color: var(--f7-progressbar-progress-color, var(--f7-theme-color));\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n transition-duration: 150ms;\n left: 0;\n transform: translate3d(-100%, 0, 0);\n}\n.progressbar-infinite {\n z-index: 15000;\n}\n.progressbar-infinite:before,\n.progressbar-infinite:after {\n content: '';\n position: absolute;\n top: 0;\n width: 100%;\n height: 100%;\n transform: translate3d(0, 0, 0);\n display: block;\n background-color: var(--f7-progressbar-progress-color, var(--f7-theme-color));\n left: 0;\n transform-origin: left center;\n}\n.progressbar-infinite.color-multi {\n background: none !important;\n}\n.progressbar-in {\n animation: progressbar-in 150ms forwards;\n}\n.progressbar-out {\n animation: progressbar-out 150ms forwards;\n}\nbody > .progressbar,\n.view > .progressbar,\n.views > .progressbar,\n.page > .progressbar,\n.panel > .progressbar,\n.popup > .progressbar,\n.framework7-root > .progressbar,\nbody > .progressbar-infinite,\n.view > .progressbar-infinite,\n.views > .progressbar-infinite,\n.page > .progressbar-infinite,\n.panel > .progressbar-infinite,\n.popup > .progressbar-infinite,\n.framework7-root > .progressbar-infinite {\n position: absolute;\n left: 0;\n top: 0;\n z-index: 15000;\n border-radius: 0 !important;\n transform-origin: center top !important;\n}\n@keyframes progressbar-in {\n from {\n opacity: 0;\n transform: scaleY(0);\n }\n to {\n opacity: 1;\n transform: scaleY(1);\n }\n}\n@keyframes progressbar-out {\n from {\n opacity: 1;\n transform: scaleY(1);\n }\n to {\n opacity: 0;\n transform: scaleY(0);\n }\n}\n.ios .progressbar-infinite:before {\n animation: ios-progressbar-infinite 1s linear infinite;\n}\n.ios .progressbar-infinite:after {\n display: none;\n}\n.ios .progressbar-infinite.color-multi:before {\n width: 400%;\n background-image: linear-gradient(to right, #4cd964, #5ac8fa, #007aff, #34aadc, #5856d6, #ff2d55, #5856d6, #34aadc, #007aff, #5ac8fa, #4cd964);\n background-size: 25% 100%;\n background-repeat: repeat-x;\n animation: ios-progressbar-infinite-multicolor 3s linear infinite;\n}\n@keyframes ios-progressbar-infinite {\n 0% {\n transform: translate3d(-100%, 0, 0);\n }\n 100% {\n transform: translate3d(100%, 0, 0);\n }\n}\n@keyframes ios-progressbar-infinite-multicolor {\n 0% {\n transform: translate3d(0%, 0, 0);\n }\n 100% {\n transform: translate3d(-50%, 0, 0);\n }\n}\n.md .progressbar-infinite:before {\n animation: md-progressbar-infinite-1 2s linear infinite;\n}\n.md .progressbar-infinite:after {\n animation: md-progressbar-infinite-2 2s linear infinite;\n}\n.md .progressbar-infinite.color-multi:before {\n background: none;\n animation: md-progressbar-infinite-multicolor-bg 3s step-end infinite;\n}\n.md .progressbar-infinite.color-multi:after {\n background: none;\n animation: md-progressbar-infinite-multicolor-fill 3s linear infinite;\n transform-origin: center center;\n}\n@keyframes md-progressbar-infinite-1 {\n 0% {\n transform: translateX(-10%) scaleX(0.1);\n }\n 25% {\n transform: translateX(30%) scaleX(0.6);\n }\n 50% {\n transform: translateX(100%) scaleX(1);\n }\n 100% {\n transform: translateX(100%) scaleX(1);\n }\n}\n@keyframes md-progressbar-infinite-2 {\n 0% {\n transform: translateX(-100%) scaleX(1);\n }\n 40% {\n transform: translateX(-100%) scaleX(1);\n }\n 75% {\n transform: translateX(60%) scaleX(0.35);\n }\n 90% {\n transform: translateX(100%) scaleX(0.1);\n }\n 100% {\n transform: translateX(100%) scaleX(0.1);\n }\n}\n@keyframes md-progressbar-infinite-multicolor-bg {\n 0% {\n background-color: #4caf50;\n }\n 25% {\n background-color: #f44336;\n }\n 50% {\n background-color: #2196f3;\n }\n 75% {\n background-color: #ffeb3b;\n }\n}\n@keyframes md-progressbar-infinite-multicolor-fill {\n 0% {\n transform: scaleX(0);\n background-color: #f44336;\n }\n 24.9% {\n transform: scaleX(1);\n background-color: #f44336;\n }\n 25% {\n transform: scaleX(0);\n background-color: #2196f3;\n }\n 49.9% {\n transform: scaleX(1);\n background-color: #2196f3;\n }\n 50% {\n transform: scaleX(0);\n background-color: #ffeb3b;\n }\n 74.9% {\n transform: scaleX(1);\n background-color: #ffeb3b;\n }\n 75% {\n transform: scaleX(0);\n background-color: #4caf50;\n }\n 100% {\n transform: scaleX(1);\n background-color: #4caf50;\n }\n}\n/* === Sortable === */\n.ios {\n --f7-sortable-handler-width: 36px;\n --f7-sortable-sorting-item-box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.6);\n --f7-sortable-handler-color: rgba(0, 0, 0, 0.22);\n --f7-sortable-sorting-item-bg-color: rgba(255, 255, 255, 0.8);\n}\n.ios .dark,\n.ios.dark {\n --f7-sortable-sorting-item-bg-color: rgba(50, 50, 50, 0.8);\n --f7-sortable-handler-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-sortable-handler-width: 42px;\n --f7-sortable-sorting-item-box-shadow: none;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-sortable-handler-color: var(--f7-md-on-surface-variant);\n --f7-sortable-sorting-item-bg-color: var(--f7-md-surface-3);\n}\n.sortable .sortable-handler {\n width: var(--f7-sortable-handler-width);\n height: 100%;\n position: absolute;\n top: 0;\n z-index: 10;\n opacity: 0;\n pointer-events: none;\n cursor: move;\n transition-duration: 300ms;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n right: var(--f7-safe-area-right);\n}\n.sortable .sortable-handler:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n transition-duration: 300ms;\n transform: translateX(10px);\n color: var(--f7-sortable-handler-color);\n overflow: hidden;\n height: 20px;\n width: 18px;\n}\n.sortable li.sorting {\n z-index: 50;\n background: var(--f7-sortable-sorting-item-bg-color);\n transition-duration: 0ms;\n box-shadow: var(--f7-sortable-sorting-item-box-shadow);\n}\n.sortable li.sorting .item-inner:after {\n display: none !important;\n}\n.sortable-opposite .sortable-handler {\n left: var(--f7-safe-area-right);\n right: auto;\n}\n.sortable-opposite .sortable-handler:after {\n transform: translateX(-10px);\n}\n.sortable:not(.sortable-opposite) .item-inner,\n.sortable-opposite .item-content,\n.sortable.simple-list li,\n.sortable-opposite.links-list li a {\n transition-duration: 300ms;\n transition-property: all;\n}\n.sortable-sorting li {\n transition-duration: 300ms;\n}\n.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler {\n pointer-events: auto;\n touch-action: none;\n opacity: 1;\n}\n.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler:after {\n transform: translateX(0px);\n}\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner:before,\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-title-row:before,\n.sortable-enabled:not(.sortable-opposite).links-list li:not(.no-sorting):not(.disallow-sorting) > a:before {\n display: none;\n}\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-inner,\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link.no-chevron .item-inner,\n.sortable-enabled.no-chevron:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,\n.sortable-enabled :not(.sortable-opposite).no-chevron .item-link .item-inner,\n.no-chevron .sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,\n.simple-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting),\n.links-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) a {\n padding-right: calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right));\n}\n.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .item-content,\n.simple-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting),\n.links-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) a {\n padding-left: calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right));\n}\n.ios .sortable-handler:after {\n content: 'sort_ios';\n}\n.md .sortable-handler:after {\n content: 'sort_md';\n}\n/* === Swipeout === */\n:root {\n --f7-swipeout-delete-button-bg-color: #ff3b30;\n --f7-swipeout-button-text-color: #fff;\n --f7-swipeout-button-padding-vertical: 0px;\n --f7-swipeout-button-bg-color: rgba(0, 0, 0, 0.22);\n}\n:root .dark,\n:root.dark {\n --f7-swipeout-button-bg-color: rgba(255, 255, 255, 0.55);\n}\n.ios {\n --f7-swipeout-button-padding-horizontal: 30px;\n --f7-swipeout-button-font-size: inherit;\n --f7-swipeout-button-font-weight: inherit;\n}\n.md {\n --f7-swipeout-button-padding-horizontal: 24px;\n --f7-swipeout-button-font-size: 14px;\n --f7-swipeout-button-font-weight: 500;\n}\n.md .dark,\n.md.dark {\n --f7-swipeout-button-text-color: #000;\n}\n.swipeout {\n overflow: hidden;\n transform-style: preserve-3d;\n}\n.swipeout-deleting {\n transition-duration: 300ms;\n}\n.swipeout-deleting .swipeout-content {\n transform: translateX(-100%);\n}\n.swipeout-transitioning .swipeout-content,\n.swipeout-transitioning .swipeout-actions-right a,\n.swipeout-transitioning .swipeout-actions-left a,\n.swipeout-transitioning .swipeout-overswipe {\n transition-duration: 300ms;\n transition-property: transform, left;\n}\n.swipeout-content {\n position: relative;\n z-index: 10;\n}\n.swipeout-overswipe {\n transition-duration: 200ms;\n transition-property: left;\n}\n.swipeout-actions-left,\n.swipeout-actions-right {\n position: absolute;\n top: 0;\n height: 100%;\n display: flex;\n direction: ltr;\n}\n.swipeout-actions-left > a,\n.swipeout-actions-right > a,\n.swipeout-actions-left > button,\n.swipeout-actions-right > button,\n.swipeout-actions-left > span,\n.swipeout-actions-right > span,\n.swipeout-actions-left > div,\n.swipeout-actions-right > div {\n color: var(--f7-swipeout-button-text-color);\n background: var(--f7-swipeout-button-bg-color);\n padding: var(--f7-swipeout-button-padding-vertical) var(--f7-swipeout-button-padding-horizontal);\n display: flex;\n align-items: center;\n position: relative;\n left: 0;\n font-size: var(--f7-swipeout-button-font-size);\n font-weight: var(--f7-swipeout-button-font-weight);\n}\n.swipeout-actions-left > a:after,\n.swipeout-actions-right > a:after,\n.swipeout-actions-left > button:after,\n.swipeout-actions-right > button:after,\n.swipeout-actions-left > span:after,\n.swipeout-actions-right > span:after,\n.swipeout-actions-left > div:after,\n.swipeout-actions-right > div:after {\n content: '';\n position: absolute;\n top: 0;\n width: 600%;\n height: 100%;\n background: inherit;\n z-index: -1;\n transform: translate3d(0, 0, 0);\n pointer-events: none;\n}\n.swipeout-actions-left .swipeout-delete,\n.swipeout-actions-right .swipeout-delete {\n background: var(--f7-swipeout-delete-button-bg-color);\n}\n.swipeout-actions-right {\n right: 0%;\n transform: translateX(calc(100% + 1px));\n}\n.swipeout-actions-right > a:after,\n.swipeout-actions-right > button:after,\n.swipeout-actions-right > span:after,\n.swipeout-actions-right > div:after {\n left: 100%;\n}\n.swipeout-actions-right > a:last-child,\n.swipeout-actions-right > button:last-child,\n.swipeout-actions-right > span:last-child,\n.swipeout-actions-right > div:last-child {\n padding-right: calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-right));\n}\n.swipeout-actions-left {\n left: 0%;\n transform: translateX(calc(-100% - 1px));\n}\n.swipeout-actions-left > a:after,\n.swipeout-actions-left > button:after,\n.swipeout-actions-left > span:after,\n.swipeout-actions-left > div:after {\n right: 100%;\n}\n.swipeout-actions-left > a:first-child,\n.swipeout-actions-left > button:first-child,\n.swipeout-actions-left > span:first-child,\n.swipeout-actions-left > div:first-child {\n padding-left: calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-left));\n}\n.swipeout-actions-left [class*='color-'],\n.swipeout-actions-right [class*='color-'] {\n --f7-swipeout-button-bg-color: var(--f7-theme-color);\n}\n/* === Accordion === */\n:root {\n --f7-accordion-chevron-icon-down: 'chevron_down';\n --f7-accordion-chevron-icon-up: 'chevron_up';\n}\n.accordion-item-toggle {\n cursor: pointer;\n}\n.list.accordion-list .accordion-item-toggle {\n transition-duration: 300ms;\n position: relative;\n overflow: hidden;\n}\n.list.accordion-list .accordion-item-toggle.active-state {\n transition-duration: 300ms;\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.list.accordion-list .accordion-item-toggle.active-state > .item-inner:after {\n background-color: transparent;\n}\n.list.accordion-list .accordion-item-toggle .item-inner {\n transition-duration: 300ms;\n transition-property: background-color;\n}\n.list.accordion-list .accordion-item-toggle .item-inner:after {\n transition-duration: 300ms;\n}\n.list.accordion-list .accordion-item-toggle .ripple-wave {\n z-index: 0;\n}\n.accordion-item .item-link .item-inner:after {\n transition-duration: 300ms;\n}\n.accordion-item .list,\n.accordion-item .block {\n margin-top: 0;\n margin-bottom: 0;\n}\n.accordion-item .block > h1:first-child,\n.accordion-item .block > h2:first-child,\n.accordion-item .block > h3:first-child,\n.accordion-item .block > h4:first-child,\n.accordion-item .block > p:first-child {\n margin-top: 10px;\n}\n.accordion-item .block > h1:last-child,\n.accordion-item .block > h2:last-child,\n.accordion-item .block > h3:last-child,\n.accordion-item .block > h4:last-child,\n.accordion-item .block > p:last-child {\n margin-bottom: 10px;\n}\n.accordion-item-opened .accordion-item-toggle .item-inner:after,\n.accordion-item-opened > .item-link .item-inner:after {\n background-color: transparent;\n}\n.list li.accordion-item ul {\n padding-left: 0;\n}\n.accordion-item-content {\n position: relative;\n overflow: hidden;\n height: 0;\n font-size: 14px;\n transition-duration: 300ms;\n}\n.accordion-item-opened > .accordion-item-content {\n height: auto;\n}\nhtml.device-android-4 .accordion-item-content {\n transform: none;\n}\n.list .accordion-item-toggle .item-inner:before {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n top: 50%;\n font-size: var(--f7-list-chevron-icon-font-size);\n color: var(--f7-list-chevron-icon-color);\n pointer-events: none;\n right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.list:not(.accordion-opposite) .accordion-item-toggle .item-inner {\n padding-right: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.accordion-opposite .accordion-item-toggle.item-link .item-inner,\n.accordion-opposite .accordion-item-toggle .item-inner,\n.accordion-opposite .accordion-item > .item-link > .item-inner,\n.accordion-opposite .accordion-item > .item-link > .item-content > .item-inner {\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.accordion-opposite .accordion-item > .item-link > .item-title-row {\n padding-right: 0;\n}\n.accordion-opposite .accordion-item-toggle.item-link .item-inner:before,\n.accordion-opposite .accordion-item-toggle .item-inner:before,\n.accordion-opposite .accordion-item > .item-link > .item-inner:before,\n.accordion-opposite .accordion-item > .item-link > .item-content > .item-inner:before,\n.accordion-opposite .accordion-item > .item-link .item-title-row:before {\n display: none;\n}\n.accordion-opposite .accordion-item-toggle > .item-content,\n.accordion-opposite .accordion-item-toggle.item-content,\n.accordion-opposite .accordion-item > .item-content,\n.accordion-opposite .accordion-item > .item-link > .item-content,\n.accordion-opposite.links-list .accordion-item > a {\n position: relative;\n padding-left: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.accordion-opposite .accordion-item-toggle > .item-content:before,\n.accordion-opposite .accordion-item-toggle.item-content:before,\n.accordion-opposite .accordion-item > .item-content:before,\n.accordion-opposite .accordion-item > .item-link > .item-content:before,\n.accordion-opposite.links-list .accordion-item > a:before {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n top: 50%;\n font-size: var(--f7-list-chevron-icon-font-size);\n color: var(--f7-list-chevron-icon-color);\n pointer-events: none;\n content: var(--f7-accordion-chevron-icon-down);\n width: 14px;\n height: 8px;\n margin-top: -4px;\n line-height: 8px;\n transform: translateX(-50%);\n left: calc((var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal)) / 2 + var(--f7-safe-area-left));\n}\n.list .accordion-item-toggle.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.list .accordion-item-toggle .item-inner:before,\n.list:not(.media-list) .accordion-item:not(.media-item) .accordion-item-toggle .item-inner:before,\n.list:not(.media-list) .accordion-item:not(.media-item) > .item-link .item-inner:before,\n.media-list .accordion-item .accordion-item-toggle .item-title-row:before,\n.media-list .accordion-item > .item-link .item-title-row:before,\n.accordion-item.media-item .accordion-item-toggle .item-title-row:before,\n.accordion-item.media-item > .item-link .item-title-row:before,\n.links-list .accordion-item > a:before {\n content: var(--f7-accordion-chevron-icon-down);\n width: 14px;\n height: 8px;\n margin-top: -4px;\n line-height: 8px;\n}\n.list .accordion-item-toggle.accordion-item-opened .item-inner:before,\n.list:not(.media-list) .accordion-item-opened:not(.media-item) .accordion-item-toggle .item-inner:before,\n.list:not(.media-list) .accordion-item-opened:not(.media-item) > .item-link .item-inner:before,\n.media-list .accordion-item-opened .accordion-item-toggle .item-title-row:before,\n.media-list .accordion-item-opened > .item-link .item-title-row:before,\n.accordion-item-opened.media-item .accordion-item-toggle .item-title-row:before,\n.accordion-item-opened.media-item > .item-link .item-title-row:before,\n.links-list .accordion-item-opened > a:before,\n.accordion-opposite .accordion-item-opened .accordion-item-toggle > .item-content:before,\n.accordion-opposite .accordion-item-opened .accordion-item-toggle.item-content:before,\n.accordion-opposite .accordion-item-opened > .item-content:before,\n.accordion-opposite .accordion-item-opened > .item-link > .item-content:before,\n.accordion-opposite .links-list .accordion-item-opened > a:before {\n content: var(--f7-accordion-chevron-icon-up);\n width: 14px;\n height: 8px;\n margin-top: -4px;\n line-height: 8px;\n}\n/* === Contacts === */\n.ios {\n --f7-contacts-list-title-font-size: inherit;\n --f7-contacts-list-title-font-weight: 600;\n --f7-contacts-list-title-height: 22px;\n --f7-contacts-list-title-text-color: #000;\n --f7-contacts-list-title-bg-color: #f7f7f7;\n}\n.ios .dark,\n.ios.dark {\n --f7-contacts-list-title-text-color: #fff;\n --f7-contacts-list-title-bg-color: #323234;\n}\n.md {\n --f7-contacts-list-title-font-size: 20px;\n --f7-contacts-list-title-font-weight: 500;\n --f7-contacts-list-title-height: 48px;\n --f7-contacts-list-title-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-contacts-list-title-text-color: var(--f7-theme-color);\n}\n.contacts-list {\n --f7-list-margin-vertical: 0px;\n}\n.contacts-list .list-group-title,\n.contacts-list li.list-group-title {\n background-color: var(--f7-contacts-list-title-bg-color, var(--f7-list-group-title-bg-color));\n font-weight: var(--f7-contacts-list-title-font-weight, var(--f7-list-group-title-font-weight));\n font-size: var(--f7-contacts-list-title-font-size, var(--f7-list-group-title-font-size));\n color: var(--f7-contacts-list-title-text-color, var(--f7-theme-color));\n line-height: var(--f7-contacts-list-title-height, var(--f7-list-group-title-height));\n height: var(--f7-contacts-list-title-height, var(--f7-list-group-title-height));\n}\n.contacts-list .list-group:first-child ul:before {\n display: none !important;\n}\n.contacts-list .list-group:last-child ul:after {\n display: none !important;\n}\n.md .contacts-list .list-group-title {\n pointer-events: none;\n overflow: visible;\n width: 40px;\n}\n.md .contacts-list .list-group-title + li {\n margin-top: calc(var(--f7-contacts-list-title-height) * -1);\n}\n.md .contacts-list .list-group-title:before {\n display: none !important;\n}\n.md .contacts-list li:not(.list-group-title) {\n padding-left: 40px;\n}\n/* === Virtual List === */\n/* === Indexed List === */\n:root {\n --f7-list-index-width: 16px;\n --f7-list-index-font-size: 11px;\n --f7-list-index-font-weight: 600;\n /* --f7-list-index-text-color: var(--f7-theme-color); */\n --f7-list-index-item-height: 14px;\n --f7-list-index-label-font-weight: 500;\n}\n.ios {\n --f7-list-index-label-text-color: #fff;\n /* --f7-list-index-label-bg-color: var(--f7-theme-color); */\n --f7-list-index-label-size: 44px;\n --f7-list-index-label-font-size: 17px;\n --f7-list-index-skip-dot-size: 6px;\n}\n.md {\n --f7-list-index-label-size: 56px;\n --f7-list-index-label-font-size: 20px;\n --f7-list-index-skip-dot-size: 4px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-list-index-label-bg-color: var(--f7-md-primary);\n --f7-list-index-label-text-color: var(--f7-md-on-primary);\n}\n.list-index {\n position: absolute;\n top: 0;\n bottom: 0;\n text-align: center;\n z-index: 10;\n width: var(--f7-list-index-width);\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n right: var(--f7-safe-area-right);\n}\n.list-index:before {\n content: '';\n position: absolute;\n width: 20px;\n top: 0;\n right: 100%;\n height: 100%;\n}\n.list-index ul {\n color: var(--f7-list-index-text-color, var(--f7-theme-color));\n font-size: var(--f7-list-index-font-size);\n font-weight: var(--f7-list-index-font-weight);\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n height: 100%;\n width: 100%;\n position: relative;\n}\n.list-index li {\n margin: 0;\n padding: 0;\n list-style: none;\n position: relative;\n height: var(--f7-list-index-item-height);\n line-height: var(--f7-list-index-item-height);\n flex-shrink: 0;\n display: block;\n width: 100%;\n}\n.list-index .list-index-skip-placeholder:after {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n border-radius: 50%;\n width: var(--f7-list-index-skip-dot-size);\n height: var(--f7-list-index-skip-dot-size);\n margin-left: calc(-1 * var(--f7-list-index-skip-dot-size) / 2);\n margin-top: calc(-1 * var(--f7-list-index-skip-dot-size) / 2);\n background: var(--f7-list-index-text-color, var(--f7-theme-color));\n}\n.list-index .list-index-label {\n position: absolute;\n bottom: 0;\n right: 100%;\n text-align: center;\n background-color: var(--f7-list-index-label-bg-color, var(--f7-theme-color));\n color: var(--f7-list-index-label-text-color);\n width: var(--f7-list-index-label-size);\n height: var(--f7-list-index-label-size);\n line-height: var(--f7-list-index-label-size);\n font-size: var(--f7-list-index-label-font-size);\n font-weight: var(--f7-list-index-label-font-weight);\n}\n.navbar ~ .page > .list-index,\n.navbars ~ .page > .list-index,\n.navbar ~ .list-index {\n top: var(--f7-navbar-height);\n}\n.navbar ~ .toolbar-top ~ .list-index,\n.navbars ~ .toolbar-top ~ .list-index,\n.ios .navbar ~ .toolbar-top-ios ~ .list-index,\n.ios .navbars ~ .toolbar-top-ios .md .navbar ~ .toolbar-top-md ~ .list-index {\n top: calc(var(--f7-navbar-height) + var(--f7-toolbar-height));\n}\n.navbar ~ .toolbar-top.tabbar-icons ~ .list-index,\n.navbars ~ .toolbar-top.tabbar-icons ~ .list-index,\n.ios .navbar ~ .toolbar-top-ios.tabbar-icons ~ .list-index,\n.ios .navbars ~ .toolbar-top-ios .md .navbar ~ .toolbar-top-md.tabbar-icons ~ .list-index {\n top: calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height));\n}\n.navbar ~ .subnavbar ~ .list-index,\n.navbars ~ .subnavbar ~ .list-index,\n.page-with-subnavbar .navbar ~ .list-index {\n top: calc(var(--f7-navbar-height) + var(--f7-subnavbar-height));\n}\n.toolbar-bottom ~ .page > .list-index,\n.ios .toolbar-bottom-ios ~ .page > .list-index,\n.md .toolbar-bottom-md ~ .page > .list-index,\n.toolbar-bottom ~ * .page > .list-index,\n.ios .toolbar-bottom-ios ~ * .page > .list-index,\n.md .toolbar-bottom-md ~ * .page > .list-index,\n.toolbar-bottom ~ .list-index,\n.ios .toolbar-bottom-ios ~ .list-index,\n.md .toolbar-bottom-md ~ .list-index {\n bottom: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n}\n.toolbar-bottom.tabbar-icons ~ .page > .list-index,\n.ios .toolbar-bottom-ios.tabbar-icons ~ .page > .list-index,\n.md .toolbar-bottom-md.tabbar-icons ~ .page > .list-index,\n.toolbar-bottom.tabbar-icons ~ * .page > .list-index,\n.ios .toolbar-bottom-ios.tabbar-icons ~ * .page > .list-index,\n.md .toolbar-bottom-md.tabbar-icons ~ * .page > .list-index,\n.toolbar-bottom.tabbar-icons ~ .list-index,\n.ios .toolbar-bottom-ios.tabbar-icons ~ .list-index,\n.md .toolbar-bottom-md.tabbar-icons ~ .list-index {\n bottom: calc(var(--f7-tabbar-icons-height) + var(--f7-safe-area-bottom));\n}\n.ios .list-index .list-index-label {\n margin-bottom: calc(-1 * var(--f7-list-index-label-size) / 2);\n margin-right: calc(var(--f7-list-index-width) - 1px);\n border-radius: 50%;\n}\n.ios .list-index .list-index-label:before {\n position: absolute;\n width: 100%;\n height: 100%;\n border-radius: 50% 0% 50% 50%;\n content: '';\n background-color: inherit;\n left: 0;\n top: 0;\n transform: rotate(45deg);\n z-index: -1;\n}\n.md .list-index .list-index-label {\n border-radius: 50% 50% 0 50%;\n}\n/* === Timeline === */\n:root {\n --f7-timeline-inner-block-margin-vertical: 16px;\n --f7-timeline-divider-margin-horizontal: 16px;\n --f7-timeline-horizontal-date-height: 34px;\n --f7-timeline-year-height: 24px;\n --f7-timeline-year-font-weight: inherit;\n --f7-timeline-month-height: 24px;\n --f7-timeline-month-font-size: inherit;\n --f7-timeline-month-font-weight: inherit;\n --f7-timeline-item-text-font-weight: inherit;\n --f7-timeline-item-subtitle-font-weight: inherit;\n}\n.ios {\n --f7-timeline-divider-color: #bbb;\n --f7-timeline-padding-horizontal: 16px;\n --f7-timeline-margin-vertical: 35px;\n --f7-timeline-item-inner-border-radius: 7px;\n --f7-timeline-item-time-font-size: 13px;\n --f7-timeline-item-title-font-size: 17px;\n --f7-timeline-item-title-line-height: inherit;\n --f7-timeline-item-title-font-weight: 600;\n --f7-timeline-item-subtitle-font-size: 15px;\n --f7-timeline-item-subtitle-line-height: inherit;\n --f7-timeline-item-text-font-size: inherit;\n --f7-timeline-item-text-color: inherit;\n --f7-timeline-item-text-line-height: inherit;\n --f7-timeline-year-font-size: 16px;\n --f7-timeline-horizontal-item-padding: 10px;\n --f7-timeline-item-inner-bg-color: #fff;\n --f7-timeline-item-time-text-color: rgba(0, 0, 0, 0.45);\n --f7-timeline-horizontal-item-border-color: rgba(0, 0, 0, 0.22);\n --f7-timeline-horizontal-item-date-border-color: rgba(0, 0, 0, 0.22);\n}\n.ios .dark,\n.ios.dark {\n --f7-timeline-horizontal-item-border-color: rgba(255, 255, 255, 0.15);\n --f7-timeline-horizontal-item-date-border-color: rgba(255, 255, 255, 0.15);\n --f7-timeline-item-inner-bg-color: #1c1c1d;\n --f7-timeline-item-time-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-timeline-padding-horizontal: 16px;\n --f7-timeline-margin-vertical: 32px;\n --f7-timeline-item-inner-border-radius: 16px;\n --f7-timeline-item-time-font-size: 13px;\n --f7-timeline-item-title-font-size: 16px;\n --f7-timeline-item-title-line-height: inherit;\n --f7-timeline-item-title-font-weight: 400;\n --f7-timeline-item-subtitle-font-size: inherit;\n --f7-timeline-item-subtitle-line-height: inherit;\n --f7-timeline-item-text-font-size: inherit;\n --f7-timeline-item-text-line-height: inherit;\n --f7-timeline-year-font-size: 16px;\n --f7-timeline-horizontal-item-padding: 12px;\n --f7-timeline-horizontal-item-date-border-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-timeline-divider-color: var(--f7-md-outline);\n --f7-timeline-item-text-color: var(--f7-md-on-surface);\n --f7-timeline-horizontal-item-border-color: var(--f7-md-outline);\n --f7-timeline-item-inner-bg-color: var(--f7-md-surface-1);\n --f7-timeline-item-time-text-color: var(--f7-md-on-surface-variant);\n}\n.timeline {\n box-sizing: border-box;\n margin: var(--f7-timeline-margin-vertical) 0;\n padding: 0 var(--f7-timeline-padding-horizontal);\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-right));\n}\n.block-strong .timeline {\n padding: 0;\n margin: 0;\n}\n.timeline-item {\n display: flex;\n justify-content: flex-start;\n overflow: hidden;\n box-sizing: border-box;\n position: relative;\n padding: 2px 0px var(--f7-timeline-padding-horizontal);\n}\n.timeline-item:last-child {\n padding-bottom: 2px;\n}\n.timeline-item-date {\n flex-shrink: 0;\n width: 50px;\n text-align: right;\n box-sizing: border-box;\n}\n.timeline-item-date small {\n font-size: 10px;\n}\n.timeline-item-content {\n margin: 2px;\n min-width: 0;\n position: relative;\n flex-shrink: 10;\n}\n.timeline-item-content .card,\n.timeline-item-content.card,\n.timeline-item-content .list,\n.timeline-item-content.list,\n.timeline-item-content .block,\n.timeline-item-content.block {\n margin: 0;\n width: 100%;\n}\n.timeline-item-content .card + .card,\n.timeline-item-content .list + .card,\n.timeline-item-content .block + .card,\n.timeline-item-content .card + .list,\n.timeline-item-content .list + .list,\n.timeline-item-content .block + .list,\n.timeline-item-content .card + .block,\n.timeline-item-content .list + .block,\n.timeline-item-content .block + .block {\n margin: var(--f7-timeline-inner-block-margin-vertical) 0 0;\n}\n.timeline-item-content p:first-child,\n.timeline-item-content ul:first-child,\n.timeline-item-content ol:first-child,\n.timeline-item-content h1:first-child,\n.timeline-item-content h2:first-child,\n.timeline-item-content h3:first-child,\n.timeline-item-content h4:first-child {\n margin-top: 0;\n}\n.timeline-item-content p:last-child,\n.timeline-item-content ul:last-child,\n.timeline-item-content ol:last-child,\n.timeline-item-content h1:last-child,\n.timeline-item-content h2:last-child,\n.timeline-item-content h3:last-child,\n.timeline-item-content h4:last-child {\n margin-bottom: 0;\n}\n.timeline-item-inner {\n background: var(--f7-timeline-item-inner-bg-color);\n box-sizing: border-box;\n border-radius: var(--f7-timeline-item-inner-border-radius);\n padding: 8px var(--f7-timeline-padding-horizontal);\n}\n.timeline-item-inner + .timeline-item-inner {\n margin-top: var(--f7-timeline-inner-block-margin-vertical);\n}\n.timeline-item-inner .block {\n padding: 0;\n color: inherit;\n}\n.timeline-item-inner .block-strong {\n padding-left: 0;\n padding-right: 0;\n margin: 0;\n}\n.timeline-item-inner .block-strong:before,\n.timeline-item-inner .block-strong:after {\n display: none !important;\n}\n.timeline-item-inner .list ul:before,\n.timeline-item-inner .list ul:after {\n display: none !important;\n}\n.timeline-item-divider {\n width: 1px;\n position: relative;\n width: 10px;\n height: 10px;\n background: var(--f7-timeline-divider-color);\n border-radius: 50%;\n flex-shrink: 0;\n margin: 3px var(--f7-timeline-divider-margin-horizontal) 0;\n}\n.timeline-item-divider:after,\n.timeline-item-divider:before {\n content: ' ';\n width: 1px;\n height: 100vh;\n position: absolute;\n left: 50%;\n background: inherit;\n transform: translate3d(-50%, 0, 0);\n}\n.timeline-item-divider:after {\n top: 100%;\n}\n.timeline-item-divider:before {\n bottom: 100%;\n}\n.timeline-item:last-child .timeline-item-divider:after {\n display: none;\n}\n.timeline-item:first-child .timeline-item-divider:before {\n display: none;\n}\n.timeline-item-time {\n font-size: var(--f7-timeline-item-time-font-size);\n margin-top: var(--f7-timeline-inner-block-margin-vertical);\n color: var(--f7-timeline-item-time-text-color);\n}\n.timeline-item-time:first-child,\n.timeline-item-time:last-child {\n margin-top: 0;\n}\n.timeline-item-title + .timeline-item-time {\n margin-top: 0;\n}\n.timeline-item-title {\n font-size: var(--f7-timeline-item-title-font-size);\n font-weight: var(--f7-timeline-item-title-font-weight);\n line-height: var(--f7-timeline-item-title-line-height);\n}\n.timeline-item-subtitle {\n font-size: var(--f7-timeline-item-subtitle-font-size);\n font-weight: var(--f7-timeline-item-subtitle-font-weight);\n line-height: var(--f7-timeline-item-subtitle-line-height);\n}\n.timeline-item-text {\n color: var(--f7-timeline-item-text-color);\n font-size: var(--f7-timeline-item-text-font-size);\n font-weight: var(--f7-timeline-item-text-font-weight);\n line-height: var(--f7-timeline-item-text-line-height);\n}\n.timeline-sides .timeline-item-right,\n.timeline-sides .timeline-item {\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n}\n.timeline-sides .timeline-item-right .timeline-item-date,\n.timeline-sides .timeline-item .timeline-item-date {\n text-align: right;\n}\n.timeline-sides .timeline-item-left,\n.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n}\n.timeline-sides .timeline-item-left .timeline-item-date,\n.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: left;\n}\n@media (min-width: 480px) {\n .xsmall-sides .timeline-item-right,\n .xsmall-sides .timeline-item {\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .xsmall-sides .timeline-item-right .timeline-item-date,\n .xsmall-sides .timeline-item .timeline-item-date {\n text-align: right;\n }\n .xsmall-sides .timeline-item-left,\n .xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .xsmall-sides .timeline-item-left .timeline-item-date,\n .xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: left;\n }\n}\n@media (min-width: 568px) {\n .small-sides .timeline-item-right,\n .small-sides .timeline-item {\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .small-sides .timeline-item-right .timeline-item-date,\n .small-sides .timeline-item .timeline-item-date {\n text-align: right;\n }\n .small-sides .timeline-item-left,\n .small-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .small-sides .timeline-item-left .timeline-item-date,\n .small-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: left;\n }\n}\n@media (min-width: 768px) {\n .medium-sides .timeline-item-right,\n .medium-sides .timeline-item {\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .medium-sides .timeline-item-right .timeline-item-date,\n .medium-sides .timeline-item .timeline-item-date {\n text-align: right;\n }\n .medium-sides .timeline-item-left,\n .medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .medium-sides .timeline-item-left .timeline-item-date,\n .medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: left;\n }\n}\n@media (min-width: 1024px) {\n .large-sides .timeline-item-right,\n .large-sides .timeline-item {\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .large-sides .timeline-item-right .timeline-item-date,\n .large-sides .timeline-item .timeline-item-date {\n text-align: right;\n }\n .large-sides .timeline-item-left,\n .large-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .large-sides .timeline-item-left .timeline-item-date,\n .large-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: left;\n }\n}\n@media (min-width: 1200px) {\n .xlarge-sides .timeline-item-right,\n .xlarge-sides .timeline-item {\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .xlarge-sides .timeline-item-right .timeline-item-date,\n .xlarge-sides .timeline-item .timeline-item-date {\n text-align: right;\n }\n .xlarge-sides .timeline-item-left,\n .xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .xlarge-sides .timeline-item-left .timeline-item-date,\n .xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: left;\n }\n}\n.timeline-horizontal {\n height: 100%;\n display: flex;\n padding: 0;\n margin: 0;\n position: relative;\n padding-left: var(--f7-safe-area-left);\n padding-right: 0;\n}\n.timeline-horizontal .timeline-item {\n display: block;\n width: 100/3vw;\n margin: 0;\n padding: 0;\n flex-shrink: 0;\n position: relative;\n height: 100%;\n padding-top: var(--f7-timeline-horizontal-date-height) !important;\n padding-bottom: var(--f7-timeline-horizontal-item-padding);\n}\n.timeline-horizontal .timeline-item:after {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: 0;\n bottom: auto;\n left: auto;\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-horizontal .timeline-item-date {\n padding: 0px var(--f7-timeline-horizontal-item-padding);\n width: auto;\n line-height: var(--f7-timeline-horizontal-date-height);\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: var(--f7-timeline-horizontal-date-height);\n background-color: var(--f7-bars-bg-color);\n color: var(--f7-bars-text-color);\n text-align: left;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .timeline-horizontal .timeline-item-date {\n background-color: rgba(var(--f7-bars-bg-color-rgb), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.timeline-horizontal .timeline-item-date:after {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-date-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-horizontal .timeline-item-content {\n padding: var(--f7-timeline-horizontal-item-padding);\n height: calc(100vw - var(--f7-timeline-horizontal-item-padding));\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n margin: 0;\n}\n.timeline-horizontal .timeline-item-divider {\n display: none;\n}\n.timeline-horizontal > .timeline-item:last-child:after,\n.timeline-horizontal .timeline-month:last-child .timeline-item:last-child:after {\n display: none !important;\n}\n.timeline-horizontal.timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n}\n.timeline-horizontal.timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n}\n.timeline-horizontal.timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n}\n.timeline-horizontal.timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n}\n.timeline-horizontal.timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n}\n.timeline-horizontal.timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n}\n.timeline-horizontal.timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n}\n.timeline-horizontal.timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n}\n.timeline-horizontal.timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n}\n.timeline-horizontal.timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n}\n.timeline-horizontal.timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n}\n.timeline-horizontal.timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n}\n.timeline-horizontal.timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n}\n.timeline-horizontal.timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n}\n.timeline-horizontal.timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n}\n.timeline-horizontal.timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n}\n.timeline-horizontal.timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n}\n.timeline-horizontal.timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n}\n.timeline-horizontal.timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n}\n.timeline-horizontal.timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n}\n@media (min-width: 480px) {\n .timeline-horizontal.xsmall-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.xsmall-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.xsmall-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.xsmall-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.xsmall-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.xsmall-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.xsmall-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.xsmall-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.xsmall-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.xsmall-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.xsmall-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.xsmall-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.xsmall-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.xsmall-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.xsmall-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.xsmall-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.xsmall-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.xsmall-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.xsmall-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.xsmall-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 568px) {\n .timeline-horizontal.small-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.small-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.small-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.small-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.small-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.small-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.small-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.small-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.small-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.small-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.small-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.small-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.small-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.small-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.small-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.small-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.small-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.small-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.small-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.small-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 768px) {\n .timeline-horizontal.medium-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.medium-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.medium-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.medium-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.medium-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.medium-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.medium-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.medium-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.medium-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.medium-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.medium-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.medium-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.medium-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.medium-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.medium-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.medium-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.medium-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.medium-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.medium-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.medium-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 1024px) {\n .timeline-horizontal.large-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.large-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.large-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.large-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.large-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.large-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.large-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.large-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.large-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.large-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.large-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.large-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.large-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.large-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.large-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.large-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.large-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.large-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.large-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.large-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 1200px) {\n .timeline-horizontal.xlarge-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.xlarge-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.xlarge-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.xlarge-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.xlarge-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.xlarge-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.xlarge-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.xlarge-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.xlarge-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.xlarge-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.xlarge-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.xlarge-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.xlarge-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.xlarge-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.xlarge-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.xlarge-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.xlarge-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.xlarge-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.xlarge-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.xlarge-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n.timeline-year {\n padding-top: var(--f7-timeline-year-height);\n}\n.timeline-year:after {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: 0;\n bottom: auto;\n left: auto;\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-year:last-child:after {\n display: none !important;\n}\n.timeline-month {\n padding-top: var(--f7-timeline-month-height);\n}\n.timeline-month .timeline-item:before {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-year,\n.timeline-month {\n display: flex;\n flex-shrink: 0;\n position: relative;\n box-sizing: border-box;\n height: 100%;\n}\n.timeline-year-title {\n line-height: var(--f7-timeline-year-height);\n height: var(--f7-timeline-year-height);\n font-size: var(--f7-timeline-year-font-size);\n font-weight: var(--f7-timeline-year-font-weight);\n}\n.timeline-month-title {\n line-height: var(--f7-timeline-month-height);\n height: var(--f7-timeline-month-height);\n font-size: var(--f7-timeline-month-font-size);\n font-weight: var(--f7-timeline-month-font-weight);\n}\n.timeline-year-title,\n.timeline-month-title {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n box-sizing: border-box;\n padding: 0 var(--f7-timeline-horizontal-item-padding);\n background-color: var(--f7-bars-bg-color);\n color: var(--f7-bars-text-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .timeline-year-title,\n .ios-translucent-bars .timeline-month-title {\n background-color: rgba(var(--f7-bars-bg-color-rgb), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.timeline-year-title span,\n.timeline-month-title span {\n display: inline-block;\n position: sticky;\n left: calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-left));\n}\n.timeline-month-title span {\n margin-top: -2px;\n}\n.timeline-year:first-child .timeline-year-title,\n.timeline-year:first-child .timeline-month:first-child .timeline-month-title,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-month-title {\n left: calc(var(--f7-safe-area-left) * -1);\n right: 0;\n width: auto;\n}\n.timeline-horizontal .timeline-item:first-child,\n.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-item:first-child,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-month-title + .timeline-item {\n overflow: visible;\n}\n.timeline-horizontal .timeline-item:first-child .timeline-item-date,\n.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child .timeline-item-date,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-item:first-child .timeline-item-date,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-month-title + .timeline-item .timeline-item-date {\n width: auto;\n padding-left: calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-left));\n left: calc(0px - var(--f7-safe-area-left));\n right: 0;\n}\n.timeline-year:last-child .timeline-year-title,\n.timeline-year:last-child .timeline-month:last-child .timeline-month-title {\n width: auto;\n right: calc(0px - var(--f7-safe-area-right));\n}\n.timeline-horizontal .timeline-item:last-child,\n.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child {\n overflow: visible;\n}\n.timeline-horizontal .timeline-item:last-child .timeline-item-date,\n.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child .timeline-item-date {\n width: auto;\n right: calc(0px - var(--f7-safe-area-right));\n left: 0;\n}\n.ios .block-strong .timeline-item-inner {\n border-radius: 3px;\n border: 1px solid rgba(0, 0, 0, 0.1);\n}\n.ios .timeline-year-title span {\n margin-top: 3px;\n}\n.md .timeline-year-title span {\n margin-top: 2px;\n}\n/* === Tabs === */\n.tabs .tab {\n display: none;\n}\n.tabs .tab-active {\n display: block;\n}\n.tabs-animated-wrap {\n position: relative;\n width: 100%;\n overflow: hidden;\n height: 100%;\n}\n.tabs-animated-wrap > .tabs {\n display: flex;\n height: 100%;\n transition-duration: 300ms;\n}\n.tabs-animated-wrap > .tabs > .tab {\n width: 100%;\n display: block;\n flex-shrink: 0;\n}\n.tabs-animated-wrap.not-animated > .tabs {\n transition-duration: 0ms;\n}\nswiper-container.tabs {\n height: 100%;\n}\nswiper-container.tabs > .tab {\n display: block;\n touch-action: pan-y;\n}\n.page > .tabs {\n height: 100%;\n}\n/* === Panels === */\n:root {\n --f7-panel-width: 260px;\n --f7-panel-backdrop-bg-color: rgba(0, 0, 0, 0.3);\n /*\n --f7-panel-left-width: var(--f7-panel-width);\n --f7-panel-right-width: var(--f7-panel-width);\n --f7-panel-left-collapsed-width: var(--f7-panel-collapsed-width);\n --f7-panel-right-collapsed-width: var(--f7-panel-collapsed-width);\n */\n --f7-panel-bg-color: #fff;\n}\n:root .dark,\n:root.dark {\n --f7-panel-bg-color: #000;\n}\n.ios {\n --f7-panel-collapsed-width: 58px;\n --f7-panel-transition-duration: 400ms;\n --f7-panel-transition-timing-function: initial;\n}\n.md {\n --f7-panel-collapsed-width: 60px;\n --f7-panel-transition-duration: 400ms;\n --f7-panel-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n}\n.panel-backdrop {\n position: absolute;\n left: 0;\n top: 0px;\n width: 100%;\n height: 100%;\n opacity: 0;\n z-index: 5999;\n visibility: hidden;\n pointer-events: none;\n transform: translate3d(0, 0, 0);\n background-color: var(--f7-panel-backdrop-bg-color);\n transition-property: transform, opacity;\n transition-duration: var(--f7-panel-transition-duration);\n}\n.panel-backdrop .with-panel,\n.panel-backdrop .with-panel-closing {\n visibility: visible;\n}\n.panel-backdrop.not-animated {\n transition-duration: 0ms !important;\n}\n.panel {\n z-index: 1000;\n box-sizing: border-box;\n position: absolute;\n top: 0px;\n height: 100%;\n transform: translate3d(0, 0, 0);\n width: var(--f7-panel-width);\n background-color: var(--f7-panel-bg-color);\n overflow: visible;\n transition-property: transform;\n transition-duration: var(--f7-panel-transition-duration);\n}\n.panel:not(.panel-in):not(.panel-out):not(.panel-in-breakpoint):not(.panel-in-collapsed):not(\n .panel-in-swipe\n ) {\n display: none;\n}\n.panel:after {\n pointer-events: none;\n opacity: 0;\n z-index: 5999;\n position: absolute;\n content: '';\n top: 0;\n width: 20px;\n height: 100%;\n transition-property: transform, opacity;\n transition-duration: var(--f7-panel-transition-duration);\n}\n.panel.not-animated,\n.panel.not-animated:after {\n transition-duration: 0ms !important;\n}\n.panel.panel-reveal.not-animated ~ .views,\n.panel.panel-reveal.not-animated ~ .view {\n transition-duration: 0ms !important;\n}\n.panel.panel-resizing {\n -webkit-user-select: none;\n user-select: none;\n}\n.panel.panel-resizing,\n.panel.panel-resizing:after,\n.panel.panel-resizing ~ .views,\n.panel.panel-resizing ~ .view {\n transition-duration: 0ms !important;\n}\n.panel-cover,\n.panel-floating {\n z-index: 6000;\n}\n.panel-floating {\n overflow: hidden;\n border-radius: 16px;\n height: auto;\n top: calc(8px + var(--f7-safe-area-top, 0px));\n bottom: calc(8px + var(--f7-safe-area-bottom, 0px));\n}\n.panel-floating .views,\n.panel-floating .view {\n --f7-safe-area-top: 0px;\n --f7-safe-area-bottom: 0px;\n}\n.page .panel-floating {\n top: calc(8px + var(--f7-page-navbar-offset, 0px));\n bottom: calc(8px + var(--f7-safe-area-bottom, 0px));\n}\n.page .panel-floating .page {\n --f7-page-navbar-offset: 0px;\n}\n.page .panel-floating .navbar ~ *,\n.page .panel-floating .navbars ~ * {\n --f7-page-navbar-offset: calc(var(--f7-navbar-height));\n}\n.panel-left {\n left: 0;\n width: var(--f7-panel-left-width, var(--f7-panel-width));\n}\n.panel-left.panel-cover,\n.panel-left.panel-floating,\n.panel-left.panel-push {\n transform: translate3d(calc(-1 * var(--f7-panel-left-width, var(--f7-panel-width))), 0, 0);\n}\n.panel-right {\n right: 0;\n width: var(--f7-panel-right-width, var(--f7-panel-width));\n}\n.panel-right.panel-cover,\n.panel-right.panel-floating,\n.panel-right.panel-push {\n transform: translate3d(var(--f7-panel-right-width, var(--f7-panel-width)), 0, 0);\n}\n.panel-in-breakpoint {\n transform: translate3d(0, 0, 0) !important;\n transition-duration: 0ms;\n}\n.panel-in-breakpoint:after {\n display: none;\n}\n.panel-in-breakpoint.panel-cover,\n.panel-in-breakpoint.panel-floating {\n z-index: 5900;\n}\n.panel,\n.panel-backdrop {\n transition-timing-function: var(--f7-panel-transition-timing-function);\n}\nhtml.with-panel-left-reveal .views,\nhtml.with-panel-right-reveal .views,\nhtml.with-panel-left-push .views,\nhtml.with-panel-right-push .views,\nhtml.with-panel-closing .views,\nhtml.with-panel-left-reveal .framework7-root > .view,\nhtml.with-panel-right-reveal .framework7-root > .view,\nhtml.with-panel-left-push .framework7-root > .view,\nhtml.with-panel-right-push .framework7-root > .view,\nhtml.with-panel-closing .framework7-root > .view {\n transition-duration: var(--f7-panel-transition-duration);\n transition-property: transform;\n transition-timing-function: var(--f7-panel-transition-timing-function);\n}\nhtml.with-panel .framework7-root > .views .page-content,\nhtml.with-panel .framework7-root > .view .page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\nhtml.with-panel-left-reveal .views,\nhtml.with-panel-left-push .views,\nhtml.with-panel-left-reveal .framework7-root > .view,\nhtml.with-panel-left-push .framework7-root > .view {\n transform: translate3d(var(--f7-panel-left-width, var(--f7-panel-width)), 0, 0);\n}\nhtml.with-panel-right-reveal .views,\nhtml.with-panel-right-push .views,\nhtml.with-panel-right-reveal .framework7-root > .view,\nhtml.with-panel-right-push .framework7-root > .view {\n transform: translate3d(calc(-1 * var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\n.page > .panel-backdrop {\n z-index: 290;\n}\n.page > .panel-reveal,\n.page .panel-push {\n z-index: 1;\n}\n.page > .panel-cover,\n.page > .panel-floating {\n z-index: 300;\n}\n.page.with-panel-left-reveal > .page-content,\n.page.with-panel-right-reveal > .page-content,\n.page.with-panel-left-push > .page-content,\n.page.with-panel-right-push > .page-content,\n.page.with-panel-closing > .page-content,\n.page.with-panel-left-reveal > .tabs,\n.page.with-panel-right-reveal > .tabs,\n.page.with-panel-left-push > .tabs,\n.page.with-panel-right-push > .tabs,\n.page.with-panel-closing > .tabs {\n transition-duration: var(--f7-panel-transition-duration);\n transition-property: transform;\n transition-timing-function: var(--f7-panel-transition-timing-function);\n}\n.page.with-panel-left-reveal > .page-content,\n.page.with-panel-left-push > .page-content,\n.page.with-panel-left-reveal > .tabs,\n.page.with-panel-left-push > .tabs {\n transform: translate3d(var(--f7-panel-left-width, var(--f7-panel-width)), 0, 0);\n}\n.page.with-panel-right-reveal > .page-content,\n.page.with-panel-right-push > .page-content,\n.page.with-panel-right-reveal > .tabs,\n.page.with-panel-right-push > .tabs {\n transform: translate3d(calc(-1 * var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\n.with-panel-closing .panel-backdrop-in {\n visibility: visible;\n pointer-events: auto;\n opacity: 0;\n}\n.with-panel-left-reveal .panel-backdrop-in,\n.with-panel-right-reveal .panel-backdrop-in,\n.with-panel-left-cover .panel-backdrop-in,\n.with-panel-right-cover .panel-backdrop-in,\n.with-panel-left-floating .panel-backdrop-in,\n.with-panel-right-floating .panel-backdrop-in,\n.with-panel-left-push .panel-backdrop-in,\n.with-panel-right-push .panel-backdrop-in {\n visibility: visible;\n pointer-events: auto;\n opacity: 1;\n}\n.with-panel-left-reveal .panel-backdrop-in,\n.with-panel-left-push .panel-backdrop-in {\n transform: translate3d(var(--f7-panel-left-width, var(--f7-panel-width)), 0, 0);\n}\n.with-panel-right-reveal .panel-backdrop-in,\n.with-panel-right-push .panel-backdrop-in {\n transform: translate3d(calc(-1 * var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\n.with-panel-left-cover .panel-left,\n.with-panel-left-push .panel-left {\n transform: translate3d(0px, 0, 0);\n}\n.with-panel-left-floating .panel-left {\n transform: translate3d(8px, 0, 0);\n}\n.with-panel-right-cover .panel-right,\n.with-panel-right-push .panel-right {\n transform: translate3d(0px, 0, 0);\n}\n.with-panel-right-floating .panel-right {\n transform: translate3d(-8px, 0, 0);\n}\n.panel-resizable {\n max-width: 100%;\n}\n.panel-resize-handler {\n position: absolute;\n top: 0;\n height: 100%;\n width: 6px;\n cursor: col-resize;\n z-index: 6000;\n display: none;\n}\n.panel-resizable .panel-resize-handler {\n display: block;\n}\n.panel-left.panel-cover .panel-resize-handler,\n.panel-left.panel-floating .panel-resize-handler {\n right: -3px;\n}\n.panel-left.panel-reveal .panel-resize-handler,\n.panel-left.panel-push .panel-resize-handler {\n right: 0;\n}\n.panel-right.panel-cover .panel-resize-handler,\n.panel-right.panel-floating .panel-resize-handler {\n left: -3px;\n}\n.panel-right.panel-reveal .panel-resize-handler,\n.panel-right.panel-push .panel-resize-handler {\n left: 0;\n}\n.panel-left.panel-in-collapsed ~ .views,\n.panel-left.panel-in-collapsed ~ .view,\n.panel-left.panel-in-collapsed ~ .page-content,\n.panel-left.panel-in-collapsed ~ .tabs {\n margin-left: var(--f7-panel-left-collapsed-width, var(--f7-panel-collapsed-width));\n}\n.page.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .page-content,\n.page.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .tabs,\nhtml.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .views,\nhtml.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .view {\n transform: translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width)) - var(--f7-panel-left-collapsed-width, var(--f7-panel-collapsed-width))), 0, 0);\n}\n.panel-right.panel-in-collapsed ~ .views,\n.panel-right.panel-in-collapsed ~ .view,\n.panel-right.panel-in-collapsed ~ .page-content,\n.panel-right.panel-in-collapsed ~ .tabs {\n margin-right: var(--f7-panel-right-collapsed-width, var(--f7-panel-collapsed-width));\n}\n.page.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .page-content,\n.page.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .tabs,\nhtml.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .views,\nhtml.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .view {\n transform: translate3d(calc(var(--f7-panel-right-collapsed-width, var(--f7-panel-collapsed-width)) - var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\nhtml.with-modal-popup-push .framework7-root,\nhtml.with-modal-popup-push-closing .framework7-root {\n --f7-panelPushScale: var(--f7-popup-push-scale);\n --f7-panelPushTransitionDuration: var(--f7-popup-transition-duration);\n --f7-panelPushTransitionTimingFunction: var(--f7-popup-transition-timing-function);\n --f7-panelPushBorderRadius: var(--f7-popup-push-border-radius);\n}\nhtml.with-modal-sheet-push .framework7-root,\nhtml.with-modal-sheet-push-closing .framework7-root {\n --f7-panelPushScale: var(--f7-sheet-push-scale);\n --f7-panelPushTransitionDuration: var(--f7-sheet-transition-duration);\n --f7-panelPushTransitionTimingFunction: var(--f7-sheet-transition-timing-function);\n --f7-panelPushBorderRadius: var(--f7-sheet-push-border-radius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in,\nhtml.with-modal-sheet-push .framework7-root > .panel-in,\nhtml.with-modal-popup-push .framework7-root > .panel-out,\nhtml.with-modal-sheet-push .framework7-root > .panel-out {\n transition-duration: var(--f7-panelPushTransitionDuration);\n transition-timing-function: var(--f7-panelPushTransitionTimingFunction);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-left {\n transform: scale(var(--f7-panelPushScale, 1));\n transform-origin: 50vw center;\n border-top-left-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-left .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-left .view,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-left .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-left .view {\n border-top-left-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-right {\n transform: scale(var(--f7-panelPushScale, 1));\n transform-origin: calc(var(--f7-panel-left-width, var(--f7-panel-width)) - 50vw) center;\n border-top-right-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-right .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-right .view,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-right .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-right .view {\n border-top-right-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-cover.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-cover.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-cover.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-cover.panel-left {\n transform: translate3d(calc(-1 * var(--f7-panel-left-width, var(--f7-panel-width))), 0, 0px);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-cover.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-cover.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-cover.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-cover.panel-right {\n transform: translate3d(var(--f7-panel-right-width, var(--f7-panel-width)), 0, 0px);\n}\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in {\n transition-duration: var(--f7-panelPushTransitionDuration);\n transition-timing-function: var(--f7-panelPushTransitionTimingFunction);\n}\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-push.panel-left,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-push.panel-left {\n transform-origin: 50vw center;\n}\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-push.panel-right,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-push.panel-right {\n transform-origin: calc(var(--f7-panel-right-width, var(--f7-panel-width)) - 50vw) center;\n}\n.md .panel-cover {\n overflow: hidden;\n}\n.md .panel-cover.panel-left {\n border-radius: 0 16px 16px 0;\n}\n.md .panel-cover.panel-right {\n border-radius: 16px 0 0 16px;\n}\n/* === Card === */\n:root {\n --f7-card-margin-horizontal: 16px;\n --f7-card-margin-vertical: 16px;\n --f7-card-content-padding-horizontal: 16px;\n --f7-card-content-padding-vertical: 16px;\n --f7-card-font-size: inherit;\n --f7-card-header-text-color: inherit;\n --f7-card-header-font-weight: 400;\n --f7-card-header-padding-horizontal: 16px;\n --f7-card-footer-font-weight: 400;\n --f7-card-footer-font-size: inherit;\n --f7-card-footer-padding-horizontal: 16px;\n --f7-card-expandable-font-size: 16px;\n --f7-card-expandable-tablet-width: 670px;\n --f7-card-expandable-tablet-height: 670px;\n}\n.ios {\n --f7-card-border-radius: 8px;\n --f7-card-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.2);\n --f7-card-header-font-size: 17px;\n --f7-card-header-padding-vertical: 10px;\n --f7-card-header-min-height: 44px;\n --f7-card-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-card-footer-padding-vertical: 10px;\n --f7-card-footer-min-height: 44px;\n --f7-card-expandable-margin-horizontal: 20px;\n --f7-card-expandable-margin-vertical: 30px;\n --f7-card-expandable-box-shadow: 0px 20px 40px rgba(0, 0, 0, 0.3);\n --f7-card-expandable-border-radius: 16px;\n --f7-card-expandable-tablet-border-radius: 16px;\n --f7-card-expandable-header-font-size: 27px;\n --f7-card-expandable-header-font-weight: bold;\n --f7-card-text-color: inherit;\n --f7-card-bg-color: #fff;\n --f7-card-expandable-bg-color: #fff;\n --f7-card-outline-border-color: rgba(0, 0, 0, 0.12);\n --f7-card-header-border-color: rgba(0, 0, 0, 0.1);\n --f7-card-footer-border-color: rgba(0, 0, 0, 0.1);\n}\n.ios .dark,\n.ios.dark {\n --f7-card-bg-color: #1c1c1d;\n --f7-card-expandable-bg-color: #1c1c1d;\n --f7-card-outline-border-color: rgba(255, 255, 255, 0.15);\n --f7-card-header-border-color: rgba(255, 255, 255, 0.15);\n --f7-card-footer-border-color: rgba(255, 255, 255, 0.15);\n --f7-card-footer-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-card-border-radius: 16px;\n --f7-card-box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2),\n 0px 1px 1px 0px rgba(0, 0, 0, 0.14),\n 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\n --f7-card-header-font-size: 22px;\n --f7-card-header-padding-vertical: 16px;\n --f7-card-header-min-height: 48px;\n --f7-card-footer-padding-vertical: 16px;\n --f7-card-footer-min-height: 48px;\n --f7-card-expandable-margin-horizontal: 12px;\n --f7-card-expandable-margin-vertical: 24px;\n --f7-card-expandable-box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2),\n 0px 10px 14px 1px rgba(0, 0, 0, 0.14),\n 0px 4px 18px 3px rgba(0, 0, 0, 0.12);\n --f7-card-expandable-border-radius: 16px;\n --f7-card-expandable-tablet-border-radius: 16px;\n --f7-card-expandable-header-font-size: 22px;\n --f7-card-expandable-header-font-weight: 500;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-card-bg-color: var(--f7-md-surface-1);\n --f7-card-expandable-bg-color: var(--f7-md-surface-1);\n --f7-card-outline-border-color: var(--f7-md-outline);\n --f7-card-header-border-color: var(--f7-md-outline);\n --f7-card-footer-border-color: var(--f7-md-outline);\n --f7-card-text-color: var(--f7-md-on-surface);\n --f7-card-footer-text-color: var(--f7-md-on-surface-variant);\n}\n.cards-list > ul:before,\n.card .list > ul:before,\n.cards-list > ul:after,\n.card .list > ul:after {\n display: none !important;\n}\n.cards-list ul,\n.card .list ul {\n background: none;\n}\n.card {\n background: var(--f7-card-bg-color);\n position: relative;\n border-radius: var(--f7-card-border-radius);\n font-size: var(--f7-card-font-size);\n margin-top: var(--f7-card-margin-vertical);\n margin-bottom: var(--f7-card-margin-vertical);\n margin-left: calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-left));\n margin-right: calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-right));\n color: var(--f7-card-text-color);\n}\n.card .list,\n.card .block {\n margin: 0;\n}\n.row:not(.no-gap) .col > .card {\n margin-left: 0;\n margin-right: 0;\n}\n.card-raised {\n box-shadow: var(--f7-card-box-shadow);\n}\n.card-outline,\n.ios .card-outline-ios,\n.md .card-outline-md {\n border: 1px solid var(--f7-card-outline-border-color);\n}\n.card-content {\n position: relative;\n}\n.card-content-padding {\n position: relative;\n padding: var(--f7-card-content-padding-vertical) var(--f7-card-content-padding-horizontal);\n}\n.card-content-padding > .list,\n.card-content-padding > .block {\n margin: calc(-1 * var(--f7-card-content-padding-vertical)) calc(-1 * var(--f7-card-content-padding-horizontal));\n}\n.card-content-padding > p:first-child {\n margin-top: 0;\n}\n.card-content-padding > p:last-child {\n margin-bottom: 0;\n}\n.card-header {\n min-height: var(--f7-card-header-min-height);\n color: var(--f7-card-header-text-color);\n font-size: var(--f7-card-header-font-size);\n font-weight: var(--f7-card-header-font-weight);\n padding: var(--f7-card-header-padding-vertical) var(--f7-card-header-padding-horizontal);\n}\n.card-header.card-header-divider,\n.card-header-divider .card-header,\n.card-dividers .card-header {\n border-bottom: 1px solid var(--f7-card-header-border-color);\n}\n.card-footer {\n min-height: var(--f7-card-footer-min-height);\n color: var(--f7-card-footer-text-color);\n font-size: var(--f7-card-footer-font-size);\n font-weight: var(--f7-card-footer-font-weight);\n padding: var(--f7-card-footer-padding-vertical) var(--f7-card-footer-padding-horizontal);\n}\n.card-footer.card-footer-divider,\n.card-footer-divider .card-footer,\n.card-dividers .card-footer {\n border-top: 1px solid var(--f7-card-header-border-color);\n}\n.card-footer a.link {\n overflow: hidden;\n}\n.card-header,\n.card-footer {\n position: relative;\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.card-header[valign='top'],\n.card-footer[valign='top'] {\n align-items: flex-start;\n}\n.card-header[valign='bottom'],\n.card-footer[valign='bottom'] {\n align-items: flex-end;\n}\n.card-header a.link,\n.card-footer a.link {\n position: relative;\n}\n.card-header a.link i.icon,\n.card-footer a.link i.icon {\n display: block;\n}\n.card-header a.icon-only,\n.card-footer a.icon-only {\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 0;\n}\n.card-header {\n border-radius: var(--f7-card-border-radius) var(--f7-card-border-radius) 0 0;\n}\n.card-footer {\n border-radius: 0 0 var(--f7-card-border-radius) var(--f7-card-border-radius);\n}\n.card-expandable {\n overflow: hidden;\n height: 300px;\n background: var(--f7-card-expandable-bg-color);\n position: relative;\n transform-origin: center center;\n transition-property: transform, border-radius;\n border-radius: var(--f7-card-expandable-border-radius);\n z-index: 2;\n transition-duration: 200ms;\n margin-left: calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-left));\n margin-right: calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-right));\n margin-top: var(--f7-card-expandable-margin-vertical);\n margin-bottom: var(--f7-card-expandable-margin-vertical);\n font-size: var(--f7-card-expandable-font-size);\n}\n.card-expandable.card-raised {\n box-shadow: var(--f7-card-expandable-box-shadow);\n}\n.card-expandable:not(.card-opened) {\n -webkit-user-select: none;\n user-select: none;\n}\n.card-expandable.card-no-transition {\n transition-duration: 0ms;\n}\n.card-expandable.card-expandable-animate-width .card-content {\n transition-property: width, transform;\n width: 100%;\n}\n.card-expandable.active-state {\n transform: scale(0.97) translate3d(0, 0, 0);\n}\n.card-expandable .card-opened-fade-in,\n.card-expandable .card-opened-fade-out {\n transition-duration: 400ms;\n}\n.card-expandable .card-opened-fade-in {\n opacity: 0;\n pointer-events: none;\n}\n.card-expandable .card-content {\n position: absolute;\n top: 0;\n width: 100vw;\n height: 100vh;\n transform-origin: center top;\n overflow: hidden;\n transition-property: transform;\n box-sizing: border-box;\n pointer-events: none;\n left: 0;\n}\n.card-expandable .card-content .card-content-padding {\n padding-left: calc(var(--f7-safe-area-left) + var(--f7-card-content-padding-horizontal));\n padding-right: calc(var(--f7-safe-area-right) + var(--f7-card-content-padding-horizontal));\n}\n.card-expandable.card-opened {\n transition-duration: 0ms;\n}\n.card-expandable.card-opening,\n.card-expandable.card-closing,\n.card-expandable.card-transitioning {\n transition-duration: 400ms;\n}\n.card-expandable.card-opening .card-content {\n transition-duration: 300ms;\n}\n.card-expandable.card-closing .card-content {\n transition-duration: 500ms;\n}\n.card-expandable.card-opening,\n.card-expandable.card-opened,\n.card-expandable.card-closing {\n z-index: 300;\n}\n.card-expandable.card-opening,\n.card-expandable.card-opened {\n border-radius: 0;\n}\n.card-expandable.card-opening .card-opened-fade-in,\n.card-expandable.card-opened .card-opened-fade-in {\n opacity: 1;\n pointer-events: auto;\n}\n.card-expandable.card-opening .card-opened-fade-out,\n.card-expandable.card-opened .card-opened-fade-out {\n opacity: 0;\n pointer-events: none;\n}\n.card-expandable.card-opened .card-content {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n pointer-events: auto;\n}\n.card-expandable .card-header {\n font-size: var(--f7-card-expandable-header-font-size);\n font-weight: var(--f7-card-expandable-header-font-weight);\n}\n.card-prevent-open {\n pointer-events: auto;\n}\n.card-expandable-size {\n width: 0;\n height: 0;\n position: absolute;\n left: 0;\n top: 0;\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n}\n@media (min-width: 768px) and (min-height: 670px) {\n .card-expandable:not(.card-tablet-fullscreen) {\n max-width: var(--f7-card-expandable-tablet-width);\n }\n .card-expandable:not(.card-tablet-fullscreen).card-opened,\n .card-expandable:not(.card-tablet-fullscreen).card-opening {\n border-radius: var(--f7-card-expandable-tablet-border-radius);\n }\n .card-expandable:not(.card-tablet-fullscreen):not(.card-expandable-animate-width) .card-content {\n width: var(--f7-card-expandable-tablet-width);\n }\n .card-expandable:not(.card-tablet-fullscreen) .card-expandable-size {\n width: var(--f7-card-expandable-tablet-width);\n height: var(--f7-card-expandable-tablet-height);\n }\n}\n.page.page-with-card-opened .page-content {\n overflow: hidden;\n}\n.card-backdrop {\n position: fixed;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 299;\n pointer-events: none;\n background: rgba(0, 0, 0, 0.2);\n opacity: 0;\n}\n.card-backdrop-in {\n animation: card-backdrop-fade-in 400ms forwards;\n pointer-events: auto;\n}\n.card-backdrop-out {\n animation: card-backdrop-fade-out 400ms forwards;\n}\n@supports ((-webkit-backdrop-filter: blur(15px)) or (backdrop-filter: blur(15px))) {\n .card-backdrop {\n background: transparent;\n -webkit-backdrop-filter: blur(15px);\n backdrop-filter: blur(15px);\n }\n}\n@keyframes card-backdrop-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes card-backdrop-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n/* === Chips === */\n:root {\n --f7-chip-font-size: 14px;\n --f7-chip-media-font-size: 16px;\n --f7-chip-delete-button-color: #000;\n}\n:root .dark,\n:root.dark {\n --f7-chip-delete-button-color: #fff;\n}\n.ios {\n --f7-chip-height: 28px;\n --f7-chip-media-size: 28px;\n --f7-chip-padding-horizontal: 10px;\n --f7-chip-border-radius: 28px;\n --f7-chip-font-weight: normal;\n --f7-chip-outline-border-color: rgba(0, 0, 0, 0.12);\n --f7-chip-bg-color: rgba(0, 0, 0, 0.12);\n --f7-chip-text-color: #000;\n --f7-chip-outline-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-chip-bg-color: #333;\n --f7-chip-text-color: #fff;\n --f7-chip-outline-text-color: #fff;\n --f7-chip-outline-border-color: rgba(255, 255, 255, 0.12);\n}\n.md {\n --f7-chip-font-weight: 500;\n --f7-chip-media-size: 24px;\n --f7-chip-height: 32px;\n --f7-chip-padding-horizontal: 12px;\n --f7-chip-border-radius: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-chip-bg-color: var(--f7-md-secondary-container);\n --f7-chip-text-color: var(--f7-md-on-secondary-container);\n --f7-chip-outline-text-color: var(--f7-md-on-surface);\n --f7-chip-outline-border-color: var(--f7-md-outline);\n}\n.chip {\n padding-left: var(--f7-chip-padding-horizontal);\n padding-right: var(--f7-chip-padding-horizontal);\n font-weight: var(--f7-chip-font-weight);\n display: inline-flex;\n box-sizing: border-box;\n vertical-align: middle;\n align-items: center;\n margin: 2px 0;\n background-color: var(--f7-chip-bg-color);\n font-size: var(--f7-chip-font-size);\n color: var(--f7-chip-text-color);\n height: var(--f7-chip-height);\n line-height: var(--f7-chip-height);\n border-radius: var(--f7-chip-border-radius);\n position: relative;\n}\n.chip-media {\n border-radius: 50%;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--f7-chip-media-size);\n width: var(--f7-chip-media-size);\n border-radius: var(--f7-chip-media-size);\n text-align: center;\n line-height: var(--f7-chip-media-size);\n box-sizing: border-box;\n color: #fff;\n font-size: var(--f7-chip-media-font-size);\n vertical-align: middle;\n}\n.chip-media i.icon {\n font-size: calc(var(--f7-chip-media-size) - 8px);\n height: calc(var(--f7-chip-media-size) - 8px);\n}\n.chip-media img {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n border-radius: 50%;\n display: block;\n}\n.chip-media + .chip-label {\n margin-left: 4px;\n}\n.chip-label {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n position: relative;\n flex-shrink: 1;\n min-width: 0;\n}\n.chip-delete {\n text-align: center;\n cursor: pointer;\n flex-shrink: 0;\n background-repeat: no-repeat;\n width: 24px;\n height: 24px;\n color: var(--f7-chip-delete-button-color);\n opacity: 0.54;\n position: relative;\n}\n.chip-delete:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n line-height: 24px;\n}\n.chip .chip-delete.active-state {\n opacity: 1;\n}\n.chip-outline,\n.ios .chip-outline-ios,\n.md .chip-outline-md {\n border: 1px solid var(--f7-chip-outline-border-color);\n color: var(--f7-chip-outline-text-color);\n background: none;\n}\n.ios .chip[class*='color-'] {\n --f7-chip-bg-color: var(--f7-theme-color);\n --f7-chip-text-color: #fff;\n}\n.ios .chip-outline[class*='color-'],\n.ios .chip-outline-ios[class*='color-'] {\n --f7-chip-outline-border-color: var(--f7-theme-color);\n --f7-chip-outline-text-color: var(--f7-theme-color);\n}\n.ios .chip-media {\n margin-left: calc(-1 * var(--f7-chip-padding-horizontal));\n}\n.ios .chip-delete {\n margin-right: calc(-1 * var(--f7-chip-padding-horizontal));\n}\n.ios .chip-delete::after {\n content: 'delete_round_ios';\n}\n.ios .chip-delete:after {\n font-size: 10px;\n}\n.md .chip-media {\n margin-left: calc(-1 * var(--f7-chip-padding-horizontal) + 4px);\n}\n.md .chip-label + .chip-delete {\n margin-left: 4px;\n}\n.md .chip-delete {\n margin-right: calc(-1 * var(--f7-chip-padding-horizontal) + 4px);\n}\n.md .chip-delete::after {\n content: 'delete_round_md';\n font-size: 16px;\n}\n/* === Form === */\n/* === Input === */\n:root {\n --f7-input-bg-color: transparent;\n --f7-label-font-weight: 400;\n --f7-label-height: 16px;\n --f7-label-font-size: 12px;\n --f7-floating-label-scale: calc(16 / 12);\n --f7-input-padding-left: 0px;\n --f7-input-padding-right: 0px;\n --f7-input-error-text-color: #ff3b30;\n --f7-input-error-font-size: 12px;\n --f7-input-error-line-height: 1.4;\n --f7-input-error-font-weight: 400;\n --f7-input-info-font-size: 12px;\n --f7-input-info-line-height: 1.4;\n --f7-textarea-height: 100px;\n /*\n --f7-input-outline-focused-border-color: var(--f7-theme-color);\n --f7-input-outline-invalid-border-color: var(--f7-input-error-text-color);\n */\n}\n.ios {\n --f7-input-item-bg-color: transparent;\n --f7-input-item-border-radius: 0px;\n --f7-input-height: 40px;\n --f7-input-font-size: 16px;\n --f7-input-placeholder-color: #a9a9a9;\n --f7-textarea-padding-vertical: 8px;\n /*\n --f7-input-focused-border-color: var(--f7-list-item-border-color);\n --f7-input-invalid-border-color: var(--f7-list-item-border-color);\n --f7-input-invalid-text-color: var(--f7-input-error-text-color);\n */\n --f7-label-text-color: inherit;\n /*\n --f7-label-focused-text-color: var(--f7-label-text-color);\n --f7-label-invalid-text-color: var(--f7-label-text-color);\n */\n --f7-input-clear-button-size: 14px;\n --f7-input-outline-border-radius: 8px;\n --f7-input-text-color: #000000;\n --f7-input-info-text-color: rgba(0, 0, 0, 0.45);\n --f7-input-clear-button-color: rgba(0, 0, 0, 0.45);\n --f7-input-outline-border-color: #bbb;\n}\n.ios .dark,\n.ios.dark {\n --f7-input-text-color: #fff;\n --f7-input-info-text-color: rgba(255, 255, 255, 0.55);\n --f7-input-clear-button-color: rgba(255, 255, 255, 0.5);\n --f7-input-outline-border-color: #444;\n}\n.md {\n --f7-input-item-border-radius: 4px 4px 0 0;\n --f7-input-height: 24px;\n --f7-input-font-size: 16px;\n --f7-textarea-padding-vertical: 0px;\n --f7-input-outline-border-radius: 4px;\n /*\n --f7-input-focused-border-color: var(--f7-theme-color);\n --f7-input-invalid-border-color: var(--f7-input-error-text-color);\n --f7-input-invalid-text-color: var(--f7-input-text-color);\n */\n /*\n --f7-label-focused-text-color: var(--f7-theme-color);\n --f7-label-invalid-text-color: var(--f7-input-error-text-color );\n */\n --f7-floating-label-scale: calc(16 / 12);\n --f7-input-clear-button-size: 24px;\n --f7-input-info-text-color: rgba(0, 0, 0, 0.45);\n}\n.md .dark,\n.md.dark {\n --f7-input-info-text-color: rgba(255, 255, 255, 0.45);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-input-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-input-item-bg-color: var(--f7-md-surface-variant);\n --f7-input-border-color: var(--f7-md-outline);\n --f7-input-clear-button-color: var(--f7-md-on-surface-variant);\n --f7-input-outline-border-color: var(--f7-md-outline);\n --f7-input-text-color: var(--f7-md-on-surface);\n --f7-label-text-color: var(--f7-md-on-surface-variant);\n}\ninput[type='text'],\ninput[type='password'],\ninput[type='search'],\ninput[type='email'],\ninput[type='tel'],\ninput[type='url'],\ninput[type='date'],\ninput[type='month'],\ninput[type='datetime-local'],\ninput[type='time'],\ninput[type='number'],\nselect,\ntextarea {\n box-sizing: border-box;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n box-shadow: none;\n border-radius: 0;\n outline: 0;\n display: block;\n padding: 0;\n margin: 0;\n font-family: inherit;\n background: none;\n resize: none;\n font-size: inherit;\n color: inherit;\n}\ninput[type='text']:-internal-autofill-selected,\ninput[type='password']:-internal-autofill-selected,\ninput[type='search']:-internal-autofill-selected,\ninput[type='email']:-internal-autofill-selected,\ninput[type='tel']:-internal-autofill-selected,\ninput[type='url']:-internal-autofill-selected,\ninput[type='date']:-internal-autofill-selected,\ninput[type='month']:-internal-autofill-selected,\ninput[type='datetime-local']:-internal-autofill-selected,\ninput[type='time']:-internal-autofill-selected,\ninput[type='number']:-internal-autofill-selected,\nselect:-internal-autofill-selected,\ntextarea:-internal-autofill-selected {\n background-color: transparent !important;\n transition: background-color 5000s ease-in-out 0s !important;\n}\ninput[type='text']:-webkit-autofill, input[type='password']:-webkit-autofill, input[type='search']:-webkit-autofill, input[type='email']:-webkit-autofill, input[type='tel']:-webkit-autofill, input[type='url']:-webkit-autofill, input[type='date']:-webkit-autofill, input[type='month']:-webkit-autofill, input[type='datetime-local']:-webkit-autofill, input[type='time']:-webkit-autofill, input[type='number']:-webkit-autofill, select:-webkit-autofill, textarea:-webkit-autofill {\n background-color: transparent !important;\n -webkit-transition: background-color 5000s ease-in-out 0s !important;\n transition: background-color 5000s ease-in-out 0s !important;\n}\ninput[type='text']:autofill,\ninput[type='password']:autofill,\ninput[type='search']:autofill,\ninput[type='email']:autofill,\ninput[type='tel']:autofill,\ninput[type='url']:autofill,\ninput[type='date']:autofill,\ninput[type='month']:autofill,\ninput[type='datetime-local']:autofill,\ninput[type='time']:autofill,\ninput[type='number']:autofill,\nselect:autofill,\ntextarea:autofill,\ninput[type='text']:-webkit-autofill-and-obscured,\ninput[type='password']:-webkit-autofill-and-obscured,\ninput[type='search']:-webkit-autofill-and-obscured,\ninput[type='email']:-webkit-autofill-and-obscured,\ninput[type='tel']:-webkit-autofill-and-obscured,\ninput[type='url']:-webkit-autofill-and-obscured,\ninput[type='date']:-webkit-autofill-and-obscured,\ninput[type='month']:-webkit-autofill-and-obscured,\ninput[type='datetime-local']:-webkit-autofill-and-obscured,\ninput[type='time']:-webkit-autofill-and-obscured,\ninput[type='number']:-webkit-autofill-and-obscured,\nselect:-webkit-autofill-and-obscured,\ntextarea:-webkit-autofill-and-obscured {\n background-color: transparent !important;\n -webkit-transition: background-color 5000s ease-in-out 0s !important;\n transition: background-color 5000s ease-in-out 0s !important;\n}\n.textarea-resizable-shadow {\n opacity: 0;\n position: absolute;\n z-index: -1000;\n pointer-events: none;\n left: -1000px;\n top: -1000px;\n visibility: hidden;\n}\n.list input[type='text'],\n.list input[type='password'],\n.list input[type='search'],\n.list input[type='email'],\n.list input[type='tel'],\n.list input[type='url'],\n.list input[type='date'],\n.list input[type='month'],\n.list input[type='datetime-local'],\n.list input[type='time'],\n.list input[type='number'],\n.list select {\n width: 100%;\n height: var(--f7-input-height);\n color: var(--f7-input-text-color);\n font-size: var(--f7-input-font-size);\n background-color: var(--f7-input-bg-color, transparent);\n padding-left: var(--f7-input-padding-left);\n padding-right: var(--f7-input-padding-right);\n}\n.list input[type='text']::placeholder,\n.list input[type='password']::placeholder,\n.list input[type='search']::placeholder,\n.list input[type='email']::placeholder,\n.list input[type='tel']::placeholder,\n.list input[type='url']::placeholder,\n.list input[type='date']::placeholder,\n.list input[type='month']::placeholder,\n.list input[type='datetime-local']::placeholder,\n.list input[type='time']::placeholder,\n.list input[type='number']::placeholder,\n.list select::placeholder {\n color: var(--f7-input-placeholder-color);\n}\n.list textarea {\n width: 100%;\n color: var(--f7-input-text-color);\n font-size: var(--f7-input-font-size);\n resize: none;\n line-height: 1.4;\n height: var(--f7-textarea-height);\n background-color: var(--f7-input-bg-color, transparent);\n padding-top: var(--f7-textarea-padding-vertical);\n padding-bottom: var(--f7-textarea-padding-vertical);\n padding-left: var(--f7-input-padding-left);\n padding-right: var(--f7-input-padding-right);\n}\n.list textarea::placeholder {\n color: var(--f7-input-placeholder-color);\n}\n.list textarea.resizable {\n height: calc(var(--f7-input-height) + var(--f7-textarea-padding-vertical) * 2);\n}\n.list input[type='time'],\n.list input[type='date'],\n.list input[type='month'],\n.list input[type='datetime-local'] {\n line-height: var(--f7-input-height);\n}\n.list .item-label,\n.list .item-floating-label {\n width: auto;\n vertical-align: top;\n flex-shrink: 0;\n font-size: var(--f7-label-font-size);\n font-weight: var(--f7-label-font-weight);\n line-height: var(--f7-label-height);\n color: var(--f7-label-text-color);\n transition-duration: 200ms;\n transition-property: transform, color;\n}\n.list .item-floating-label {\n color: var(--f7-input-placeholder-color);\n max-width: calc(100% / var(--f7-floating-label-scale));\n pointer-events: none;\n left: var(--f7-input-padding-left);\n transform-origin: left center;\n}\n.list .item-floating-label ~ .item-input-wrap input::placeholder,\n.list .item-floating-label ~ .item-input-wrap textarea::placeholder {\n opacity: 0;\n transition-duration: 100ms;\n}\n.list .item-floating-label ~ .item-input-wrap input.input-focused::placeholder,\n.list .item-floating-label ~ .item-input-wrap textarea.input-focused::placeholder {\n opacity: 1;\n transition-duration: 300ms;\n}\n.list .item-input-with-value .item-floating-label {\n color: var(--f7-label-text-color);\n}\n.list .item-input-with-value .item-floating-label,\n.list .item-input-focused .item-floating-label {\n transform: scale(1) translateY(0) !important;\n}\n.list .item-input-wrap {\n width: 100%;\n flex-shrink: 1;\n position: relative;\n}\n.item-input,\n.input {\n position: relative;\n}\n.item-input .item-inner {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n.item-input-error-message,\n.input-error-message {\n font-size: var(--f7-input-error-font-size);\n line-height: var(--f7-input-error-line-height);\n color: var(--f7-input-error-text-color);\n font-weight: var(--f7-input-error-font-weight);\n display: none;\n box-sizing: border-box;\n}\n.item-input-info,\n.input-info {\n font-size: var(--f7-input-info-font-size);\n line-height: var(--f7-input-info-line-height);\n color: var(--f7-input-info-text-color);\n}\n.item-input-invalid .item-input-error-message,\n.input-invalid .item-input-error-message,\n.item-input-invalid .input-error-message,\n.input-invalid .input-error-message {\n display: block;\n}\n.item-input-invalid .item-input-info,\n.input-invalid .item-input-info,\n.item-input-invalid .input-info,\n.input-invalid .input-info {\n display: none;\n}\n.input {\n position: relative;\n}\n.input input,\n.input select,\n.input textarea {\n width: 100%;\n}\n.input-clear-button {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n transition-duration: 100ms;\n position: absolute;\n top: 50%;\n border: none;\n padding: 0;\n margin: 0;\n outline: 0;\n z-index: 1;\n cursor: pointer;\n background: none;\n width: var(--f7-input-clear-button-size);\n height: var(--f7-input-clear-button-size);\n margin-top: calc(-1 * var(--f7-input-clear-button-size) / 2);\n color: var(--f7-input-clear-button-color);\n right: 0;\n}\n.input-clear-button:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n.input-clear-button:before {\n position: absolute;\n content: '';\n left: 50%;\n top: 50%;\n}\n.item-input-wrap .input-clear-button {\n top: calc(var(--f7-input-height) / 2);\n}\n.input-clear-button.active-state {\n opacity: 0.75 !important;\n}\n.input-with-value ~ .input-clear-button,\n.item-input-with-value .input-clear-button,\n.input-with-value .input-clear-button {\n opacity: 1;\n pointer-events: auto;\n visibility: visible;\n}\n.input-dropdown-wrap,\n.input-dropdown {\n position: relative;\n}\n.input-dropdown-wrap:before,\n.input-dropdown:before {\n content: '';\n pointer-events: none;\n position: absolute;\n top: 50%;\n margin-top: -2px;\n width: 0;\n height: 0;\n border-left: 4px solid transparent;\n border-right: 4px solid transparent;\n border-top: 5px solid #727272;\n right: 6px;\n}\n.input-dropdown-wrap select,\n.input-dropdown select,\n.input-dropdown-wrap input,\n.input-dropdown input,\n.input-dropdown-wrap textarea,\n.input-dropdown textarea {\n padding-right: calc(20px + var(--f7-input-padding-right));\n}\n.item-input-outline .item-content::after,\n.item-input-outline.item-content::after,\n.input-outline::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n top: 8px;\n bottom: 8px;\n border: 1px solid var(--f7-input-outline-border-color);\n border-radius: var(--f7-input-outline-border-radius);\n pointer-events: none;\n box-sizing: border-box;\n transition-duration: 200ms;\n}\n.item-input-outline .item-content .item-label,\n.item-input-outline.item-content .item-label,\n.input-outline .item-label,\n.item-input-outline .item-content .item-floating-label,\n.item-input-outline.item-content .item-floating-label,\n.input-outline .item-floating-label {\n pointer-events: none;\n background: var(--f7-page-bg-color);\n z-index: 1;\n padding: 4px;\n}\n.item-input-outline .item-content.item-input-focused::after,\n.item-input-outline.item-content.item-input-focused::after,\n.input-outline.item-input-focused::after,\n.item-input-outline .item-content.input-focused::after,\n.item-input-outline.item-content.input-focused::after,\n.input-outline.input-focused::after {\n border-width: 2px;\n border-color: var(--f7-input-outline-invalid-border-color, var(--f7-theme-color));\n}\n.item-input-outline .item-content.item-input-invalid::after,\n.item-input-outline.item-content.item-input-invalid::after,\n.input-outline.item-input-invalid::after,\n.item-input-outline .item-content.input-invalid::after,\n.item-input-outline.item-content.input-invalid::after,\n.input-outline.input-invalid::after {\n border-width: 2px;\n border-color: var(--f7-input-outline-invalid-border-color, var(--f7-input-error-text-color));\n}\n.block-strong .item-input-outline .item-label,\n.block-strong .item-input-outline .item-floating-label,\n.ios .block-strong-ios .item-input-outline .item-label,\n.ios .block-strong-ios .item-input-outline .item-floating-label,\n.md .block-strong-md .item-input-outline .item-label,\n.md .block-strong-md .item-input-outline .item-floating-label {\n background: var(--f7-block-strong-bg-color) !important;\n}\n.list-strong .item-input-outline .item-floating-label,\n.list-strong .item-input-outline .item-label,\n.ios .list-strong-ios .item-input-outline .item-floating-label,\n.ios .list-strong-ios .item-input-outline .item-label,\n.md .list-strong-md .item-input-outline .item-floating-label,\n.md .list-strong-md .item-input-outline .item-label {\n background: var(--f7-list-strong-bg-color) !important;\n}\n.dark option {\n background-color: var(--f7-page-bg-color);\n}\n.ios .item-label + .item-input-wrap,\n.ios .item-floating-label + .item-input-wrap {\n margin-top: 0;\n}\n.ios .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height) + 25%));\n}\n.ios .item-input-focused .item-floating-label {\n color: var(--f7-label-text-color);\n}\n.ios .item-input .item-media {\n align-self: flex-start;\n}\n.ios .item-input-wrap {\n margin-top: calc(-1 * var(--f7-list-item-padding-vertical));\n margin-bottom: calc(-1 * var(--f7-list-item-padding-vertical));\n}\n.ios .item-input:not(.item-input-outline) .item-content,\n.ios .item-input:not(.item-input-outline).item-content {\n background: var(--f7-input-item-bg-color);\n}\n.ios .item-input-error-message,\n.ios .item-input-info,\n.ios .input-error-message,\n.ios .input-info {\n position: relative;\n margin-bottom: 6px;\n margin-top: -8px;\n}\n.ios .item-input-focused .item-label,\n.ios .item-input-focused .item-floating-label {\n color: var(--f7-label-focused-text-color, var(--f7-label-text-color));\n}\n.ios .item-input-focused .item-inner:after {\n background: var(--f7-input-focused-border-color, var(--f7-list-item-border-color));\n}\n.ios .item-input-invalid .item-label,\n.ios .item-input-invalid .item-floating-label {\n color: var(--f7-label-invalid-text-color, var(--f7-label-text-color));\n}\n.ios .item-input-invalid .item-inner:after {\n background: var(--f7-input-invalid-border-color, var(--f7-list-item-border-color));\n}\n.ios .item-input-invalid input,\n.ios .input-invalid input,\n.ios .item-input-invalid select,\n.ios .input-invalid select,\n.ios .item-input-invalid textarea,\n.ios .input-invalid textarea {\n color: var(--f7-input-invalid-text-color, var(--f7-input-error-text-color));\n}\n.ios .input-clear-button:after {\n content: 'delete_round_ios';\n font-size: calc(var(--f7-input-clear-button-size) / (14 / 10));\n line-height: 1.4;\n}\n.ios .input-clear-button:before {\n width: 44px;\n height: 44px;\n margin-left: -22px;\n margin-top: -22px;\n}\n.ios .item-input-outline .item-content,\n.ios .item-input-outline.item-content {\n padding-top: 8px;\n padding-bottom: 8px;\n margin-left: 16px;\n margin-right: 16px;\n}\n.ios li.item-input-outline:first-child,\n.ios li:first-child > .item-input-outline {\n padding-top: 16px;\n}\n.ios li.item-input-outline:first-child::after,\n.ios li:first-child > .item-input-outline::after {\n top: 16px;\n}\n.ios li.item-input-outline:last-child,\n.ios li:last-child > .item-input-outline {\n padding-bottom: 16px;\n}\n.ios li.item-input-outline:last-child::after,\n.ios li:last-child > .item-input-outline::after {\n bottom: 16px;\n}\n.ios .item-input-outline .item-content .item-inner,\n.ios .item-input-outline.item-content .item-inner,\n.ios .input-outline .item-inner {\n display: block;\n padding-top: 0px;\n padding-bottom: 0px;\n}\n.ios .item-input-outline .item-content .item-input-wrap,\n.ios .item-input-outline.item-content .item-input-wrap,\n.ios .input-outline .item-input-wrap {\n margin-top: 2px;\n}\n.ios .item-input-outline .item-content .item-title + .item-input-wrap,\n.ios .item-input-outline.item-content .item-title + .item-input-wrap,\n.ios .input-outline .item-title + .item-input-wrap {\n margin-top: -22px;\n}\n.ios .item-input-outline .item-content .item-label,\n.ios .item-input-outline.item-content .item-label,\n.ios .input-outline .item-label,\n.ios .item-input-outline .item-content .item-floating-label,\n.ios .item-input-outline.item-content .item-floating-label,\n.ios .input-outline .item-floating-label {\n display: inline-flex;\n margin: -8px -4px -4px;\n top: -4px;\n}\n.ios .item-input-outline .item-content .item-floating-label,\n.ios .item-input-outline.item-content .item-floating-label,\n.ios .input-outline .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height)));\n}\n.md .item-input-wrap {\n min-height: var(--f7-input-height);\n}\n.md .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc((var(--f7-input-height) / 2) / var(--f7-floating-label-scale)));\n}\n.md .item-input .item-inner:after {\n display: none !important;\n}\n.md .item-input .item-content,\n.md .item-input.item-content {\n margin-left: 16px;\n margin-right: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.md .input:after {\n content: '';\n position: absolute;\n background-color: var(--f7-input-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.md .input::after {\n transform: scaleY(1) !important;\n transition-duration: 200ms;\n bottom: 0px;\n}\n.md .input.input-focused::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-focused-border-color, var(--f7-theme-color));\n}\n.md .input.input-invalid::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-invalid-border-color, var(--f7-input-error-text-color));\n}\n.md .item-input:not(.item-input-outline) .item-content:after,\n.md .item-input:not(.item-input-outline).item-content:after {\n content: '';\n position: absolute;\n background-color: var(--f7-input-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.md .item-input:not(.item-input-outline) .item-content::before,\n.md .item-input:not(.item-input-outline).item-content::before {\n content: '';\n position: absolute;\n left: 0;\n top: 8px;\n bottom: 8px;\n right: 0;\n border-radius: var(--f7-input-item-border-radius);\n background: var(--f7-input-item-bg-color);\n pointer-events: none;\n}\n.md .item-input:not(.item-input-outline) .item-content::after,\n.md .item-input:not(.item-input-outline).item-content::after {\n transform: scaleY(1) !important;\n transition-duration: 200ms;\n bottom: 8px;\n}\n.md .item-input:not(.item-input-outline) .item-content.item-input-focused::after,\n.md .item-input:not(.item-input-outline).item-content.item-input-focused::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-focused-border-color, var(--f7-theme-color));\n}\n.md .item-input:not(.item-input-outline) .item-content.item-input-invalid::after,\n.md .item-input:not(.item-input-outline).item-content.item-input-invalid::after,\n.md .item-input:not(.item-input-outline) .item-content.input-invalid::after,\n.md .item-input:not(.item-input-outline).item-content.input-invalid::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-invalid-border-color, var(--f7-input-error-text-color));\n}\n.md .item-input-outline .item-content .item-inner,\n.md .item-input-outline.item-content .item-inner,\n.md .input-outline .item-inner {\n padding-top: 16px;\n padding-bottom: 16px;\n}\n.md .item-input-outline .item-content .item-label,\n.md .item-input-outline.item-content .item-label,\n.md .input-outline .item-label,\n.md .item-input-outline .item-content .item-floating-label,\n.md .item-input-outline.item-content .item-floating-label,\n.md .input-outline .item-floating-label {\n --label-height: calc(var(--f7-label-height) + 8px);\n margin: calc(0px - 16px - var(--label-height) / 2) -4px 4px;\n}\n.md .item-input-outline .item-content .item-floating-label,\n.md .item-input-outline.item-content .item-floating-label,\n.md .input-outline .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc((var(--f7-input-height) / 2) + 8px));\n}\n.md .item-input-with-error-message,\n.md .item-input-with-info,\n.md .input-with-error-message,\n.md .input-with-info {\n padding-bottom: 24px !important;\n}\n.md .item-input-error-message,\n.md .item-input-info,\n.md .input-error-message,\n.md .input-info {\n position: absolute;\n top: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n width: 100%;\n left: 0;\n}\n.md .item-input-focused .item-label,\n.md .item-input-focused .item-floating-label {\n color: var(--f7-label-focused-text-color, var(--f7-theme-color));\n}\n.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after,\n.md .input-focused:not(.input-outline):after {\n background: var(--f7-input-focused-border-color, var(--f7-theme-color));\n}\n.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after,\n.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after,\n.md .input-invalid:not(.input-outline):after,\n.md .input-focused:not(.input-outline):after {\n transform: scaleY(2) !important;\n}\n.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after,\n.md .input-invalid:not(.input-outline):after {\n background: var(--f7-input-invalid-border-color, var(--f7-input-error-text-color));\n}\n.md .item-input-invalid .item-label,\n.md .item-input-invalid .item-floating-label {\n color: var(--f7-label-invalid-text-color, var(--f7-input-error-text-color));\n}\n.md .item-input-invalid input,\n.md .input-invalid input,\n.md .item-input-invalid select,\n.md .input-invalid select,\n.md .item-input-invalid textarea,\n.md .input-invalid textarea {\n color: var(--f7-input-invalid-text-color, var(--f7-input-text-color));\n}\n.md .input-clear-button:after {\n font-size: var(--f7-input-clear-button-size);\n content: 'delete_round_md';\n line-height: 1;\n}\n.md .input-clear-button:before {\n width: 48px;\n height: 48px;\n margin-left: -24px;\n margin-top: -24px;\n}\n/* === Checkbox === */\n:root {\n /* --f7-checkbox-active-color: var(--f7-theme-color); */\n --f7-checkbox-icon-color: #fff;\n --f7-checkbox-extra-margin: 0px;\n}\n:root .dark,\n:root.dark {\n --f7-checkbox-inactive-color: rgba(255, 255, 255, 0.3);\n --f7-checkbox-icon-color: #000;\n}\n.ios {\n --f7-checkbox-size: 22px;\n --f7-checkbox-border-radius: 50%;\n --f7-checkbox-border-width: 1px;\n --f7-checkbox-inactive-color: #c7c7cc;\n}\n.md {\n --f7-checkbox-size: 18px;\n --f7-checkbox-border-radius: 2px;\n --f7-checkbox-border-width: 2px;\n --f7-checkbox-inactive-color: #6d6d6d;\n}\n.checkbox {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n z-index: 1;\n background-color: transparent;\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.5);\n}\n.icon-checkbox,\n.checkbox i {\n flex-shrink: 0;\n border: var(--f7-checkbox-border-width) solid var(--f7-checkbox-inactive-color);\n width: var(--f7-checkbox-size);\n height: var(--f7-checkbox-size);\n border-radius: var(--f7-checkbox-border-radius);\n box-sizing: border-box;\n position: relative;\n display: block;\n}\n.icon-checkbox:after,\n.checkbox i:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n width: var(--f7-checkbox-size);\n height: var(--f7-checkbox-size);\n line-height: var(--f7-checkbox-size);\n top: calc(0px - var(--f7-checkbox-border-width));\n opacity: 0;\n color: var(--f7-checkbox-icon-color);\n position: relative;\n transition-property: opacity;\n left: calc(0px - var(--f7-checkbox-border-width));\n}\n.icon-checkbox.color-white,\n.checkbox i.color-white,\n.color-white .icon-checkbox,\n.color-white .checkbox i {\n --f7-theme-color: #fff;\n --f7-checkbox-icon-color: #000;\n}\n.icon-checkbox.color-black,\n.checkbox i.color-black,\n.color-black .icon-checkbox,\n.color-black .checkbox i {\n --f7-theme-color: #000;\n --f7-checkbox-icon-color: #fff;\n}\nlabel.item-checkbox input[type='checkbox']:not(:checked) ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:not(:checked) ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:not(:checked) ~ i:after {\n font-size: 0;\n}\nlabel.item-checkbox input[type='checkbox']:checked ~ .icon-checkbox,\nlabel.item-checkbox input[type='checkbox']:checked ~ * .icon-checkbox,\n.checkbox input[type='checkbox']:checked ~ i,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox,\n.checkbox input[type='checkbox']:indeterminate ~ i {\n border-color: var(--f7-checkbox-active-color, var(--f7-theme-color));\n background-color: var(--f7-checkbox-active-color, var(--f7-theme-color));\n}\nlabel.item-checkbox input[type='checkbox']:checked ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:checked ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:checked ~ i:after,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:indeterminate ~ i:after {\n opacity: 1;\n}\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:indeterminate ~ i:after {\n font-size: 0;\n content: '';\n position: absolute;\n top: 50%;\n width: 70%;\n background: var(--f7-checkbox-icon-color);\n height: 2px;\n border-radius: 2px;\n margin-top: -1px;\n transition: 0ms;\n left: 15%;\n}\nlabel.item-checkbox,\n.checkbox {\n cursor: pointer;\n}\nlabel.item-checkbox input[type='checkbox'],\n.checkbox input[type='checkbox'],\nlabel.item-checkbox input[type='radio'],\n.checkbox input[type='radio'] {\n display: none;\n}\nlabel.item-checkbox {\n transition-duration: 300ms;\n}\nlabel.item-checkbox .item-content .item-media,\nlabel.item-checkbox.item-content .item-media {\n align-self: center;\n}\nlabel.item-checkbox > .icon-checkbox {\n margin-right: calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin));\n}\nlabel.item-checkbox.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\nlabel.item-checkbox.active-state:after {\n background-color: transparent;\n}\nlabel.item-checkbox.disabled,\n.disabled label.item-checkbox {\n opacity: 0.55;\n pointer-events: none;\n opacity: 0.55 !important;\n pointer-events: none !important;\n}\nlabel.item-checkbox.item-checkbox-icon-end .item-inner {\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right) + var(--f7-checkbox-size) + 16px);\n}\nlabel.item-checkbox.item-checkbox-icon-end input[type='checkbox'] ~ .icon-checkbox {\n position: absolute;\n right: calc(var(--f7-safe-area-right) + 16px);\n margin-right: 0;\n}\n.ios .icon-checkbox:after,\n.ios .checkbox i:after {\n content: 'checkbox_ios';\n font-size: 21px;\n}\n.ios label.item-checkbox.active-state {\n transition-duration: 0ms;\n}\n.ios label.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox:after,\n.ios label.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox:after,\n.ios .checkbox input[type='checkbox']:indeterminate ~ i:after {\n height: 2px;\n margin-top: -1px;\n}\n.md .icon-checkbox,\n.md .checkbox i {\n transition-duration: 200ms;\n}\n.md .icon-checkbox:after,\n.md .checkbox i:after {\n content: 'checkbox_md';\n transition-duration: 200ms;\n font-size: 15px;\n}\n.md label.item-checkbox {\n position: relative;\n overflow: hidden;\n z-index: 0;\n}\n/* === Radio === */\n:root {\n /*\n --f7-radio-active-color: var(--f7-theme-color);\n */\n --f7-radio-border-radius: 50%;\n --f7-radio-extra-margin: 0px;\n}\n:root .dark,\n:root.dark {\n --f7-radio-inactive-color: rgba(255, 255, 255, 0.3);\n}\n.ios {\n --f7-radio-size: 22px;\n --f7-radio-border-width: 1px;\n --f7-radio-inactive-color: #c7c7cc;\n}\n.md {\n --f7-radio-size: 20px;\n --f7-radio-border-width: 2px;\n --f7-radio-inactive-color: #6d6d6d;\n}\n.radio {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n z-index: 1;\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.5);\n}\n.icon-radio {\n width: var(--f7-radio-size);\n height: var(--f7-radio-size);\n border-radius: var(--f7-radio-border-radius);\n position: relative;\n box-sizing: border-box;\n display: block;\n flex-shrink: 0;\n}\n.radio.color-white,\n.icon-radio.color-white,\n.color-white .radio,\n.color-white .icon-radio {\n --f7-theme-color: #fff;\n}\n.radio.color-black,\n.icon-radio.color-black,\n.color-black .radio,\n.color-black .icon-radio {\n --f7-theme-color: #000;\n}\n.radio .icon-radio,\n.md .icon-radio {\n border: var(--f7-radio-border-width) solid var(--f7-radio-inactive-color);\n}\nlabel.item-radio,\n.radio {\n cursor: pointer;\n}\nlabel.item-radio input[type='checkbox'],\n.radio input[type='checkbox'],\nlabel.item-radio input[type='radio'],\n.radio input[type='radio'] {\n display: none;\n}\nlabel.item-radio {\n transition-duration: 300ms;\n}\nlabel.item-radio .item-content .item-media,\nlabel.item-radio.item-content .item-media {\n align-self: center;\n}\nlabel.item-radio.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\nlabel.item-radio.active-state:after {\n background-color: transparent;\n}\nlabel.item-radio.disabled,\n.disabled label.item-radio {\n opacity: 0.55;\n pointer-events: none;\n opacity: 0.55 !important;\n pointer-events: none !important;\n}\n.ios .icon-radio:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n width: calc(var(--f7-radio-size) - var(--f7-radio-border-width) * 2);\n height: calc(var(--f7-radio-size) - var(--f7-radio-border-width) * 2);\n line-height: calc(var(--f7-radio-size) - var(--f7-radio-border-width) * 2 + 1px);\n font-size: 20px;\n content: 'radio_ios';\n color: var(--f7-radio-active-color, var(--f7-theme-color));\n opacity: 0;\n}\n.ios label.item-radio input[type='radio']:checked ~ .icon-radio:after,\n.ios label.item-radio input[type='radio']:checked ~ * .icon-radio:after,\n.ios .radio input[type='radio']:checked ~ .icon-radio:after {\n opacity: 1;\n}\n.ios .radio input[type='radio']:checked ~ .icon-radio {\n border-color: var(--f7-radio-active-color, var(--f7-theme-color));\n}\n.ios label.item-radio:not(.item-radio-icon-start) input[type='radio'] ~ .icon-radio {\n position: absolute;\n top: 50%;\n margin-top: -11px;\n right: calc(var(--f7-safe-area-right) + 10px);\n}\n.ios label.item-radio:not(.item-radio-icon-start) .item-inner {\n padding-right: calc(var(--f7-safe-area-right) + 36px);\n}\n.ios label.item-radio-icon-start > .icon-radio {\n margin-right: calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin));\n}\n.ios label.item-radio.active-state {\n transition-duration: 0ms;\n}\n.md .icon-radio {\n transition-duration: 200ms;\n}\n.md .icon-radio:after {\n content: '';\n position: absolute;\n width: 10px;\n height: 10px;\n left: 50%;\n top: 50%;\n margin-left: -5px;\n margin-top: -5px;\n background-color: var(--f7-radio-active-color, var(--f7-theme-color));\n border-radius: 50%;\n transform: scale(0);\n transition-duration: 200ms;\n}\n.md label.item-radio input[type='radio']:checked ~ .icon-radio,\n.md label.item-radio input[type='radio']:checked ~ * .icon-radio,\n.md .radio input[type='radio']:checked ~ .icon-radio {\n border-color: var(--f7-radio-active-color, var(--f7-theme-color));\n}\n.md label.item-radio input[type='radio']:checked ~ .icon-radio:after,\n.md label.item-radio input[type='radio']:checked ~ * .icon-radio:after,\n.md .radio input[type='radio']:checked ~ .icon-radio:after {\n background-color: var(--f7-radio-active-color, var(--f7-theme-color));\n transform: scale(1);\n}\n.md label.item-radio {\n position: relative;\n overflow: hidden;\n z-index: 0;\n}\n.md label.item-radio:not(.item-radio-icon-end) > .icon-radio {\n margin-right: calc(var(--f7-list-item-media-margin) + var(--f7-radio-extra-margin));\n}\n.md label.item-radio-icon-end input[type='radio'] ~ .icon-radio {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n right: calc(var(--f7-safe-area-right) + 16px);\n}\n.md label.item-radio-icon-end .item-inner {\n padding-right: calc(var(--f7-safe-area-right) + 52px);\n}\n/* === Toggle === */\n.ios {\n --f7-toggle-width: 52px;\n --f7-toggle-height: 32px;\n /*\n --f7-toggle-active-bg-color: var(--f7-theme-color);\n */\n --f7-toggle-inactive-knob-bg-color: #fff;\n --f7-toggle-active-knob-bg-color: #fff;\n --f7-toggle-inactive-border-color: #e5e5e5;\n --f7-toggle-inactive-bg-color: #fff;\n}\n.ios .dark,\n.ios.dark {\n --f7-toggle-inactive-border-color: #555;\n --f7-toggle-inactive-bg-color: #555;\n}\n.md {\n --f7-toggle-width: 52px;\n --f7-toggle-height: 32px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-toggle-inactive-bg-color: var(--f7-md-surface-variant);\n --f7-toggle-active-bg-color: var(--f7-theme-color);\n --f7-toggle-inactive-knob-bg-color: var(--f7-md-outline);\n --f7-toggle-active-knob-bg-color: var(--f7-md-on-primary);\n --f7-toggle-inactive-border-color: var(--f7-md-outline);\n --f7-toggle-active-border-color: var(--f7-theme-color);\n}\n.toggle,\n.toggle-icon {\n width: var(--f7-toggle-width);\n height: var(--f7-toggle-height);\n border-radius: var(--f7-toggle-height);\n}\n.toggle {\n display: inline-block;\n vertical-align: middle;\n position: relative;\n box-sizing: border-box;\n align-self: center;\n -webkit-user-select: none;\n user-select: none;\n}\n.toggle input[type='checkbox'] {\n display: none;\n}\n.toggle input[disabled] ~ .toggle-icon {\n pointer-events: none;\n}\n.toggle-icon {\n z-index: 0;\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n position: relative;\n transition: 300ms;\n box-sizing: border-box;\n display: block;\n cursor: pointer;\n}\n.toggle-icon:before,\n.toggle-icon:after {\n content: '';\n}\n.toggle-icon:after {\n position: absolute;\n z-index: 2;\n transform: translateX(0px);\n transition-duration: 300ms;\n}\n.ios .toggle {\n background: var(--f7-toggle-inactive-border-color);\n}\n.ios .toggle input[type='checkbox']:checked + .toggle-icon {\n background: var(--f7-toggle-active-color, var(--f7-theme-color));\n}\n.ios .toggle input[type='checkbox']:checked + .toggle-icon:before {\n background: var(--f7-toggle-active-bg-color, var(--f7-theme-color));\n transform: scale(0);\n}\n.ios .toggle input[type='checkbox']:checked + .toggle-icon:after {\n background: var(--f7-toggle-active-knob-bg-color);\n transform: translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height)));\n}\n.ios .toggle-icon {\n background: var(--f7-toggle-border-color);\n}\n.ios .toggle-icon:before {\n position: absolute;\n left: 2px;\n top: 2px;\n width: calc(var(--f7-toggle-width) - 4px);\n height: calc(var(--f7-toggle-height) - 4px);\n border-radius: var(--f7-toggle-height);\n box-sizing: border-box;\n background: var(--f7-toggle-inactive-bg-color);\n z-index: 1;\n transition-duration: 300ms;\n transform: scale(1);\n}\n.ios .toggle-icon:after {\n background: var(--f7-toggle-inactive-knob-bg-color);\n height: calc(var(--f7-toggle-height) - 4px);\n width: calc(var(--f7-toggle-height) - 4px);\n top: 2px;\n left: 2px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n border-radius: calc(var(--f7-toggle-height) - 4px);\n}\n.ios .toggle-active-state input[type='checkbox']:not(:checked) + .toggle-icon:before {\n transform: scale(0);\n}\n.ios .toggle-active-state input[type='checkbox'] + .toggle-icon:after {\n width: calc(var(--f7-toggle-height) + 4px);\n}\n.ios .toggle-active-state input[type='checkbox']:checked + .toggle-icon:after {\n transform: translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height) - 8px));\n}\n.md .toggle input[type='checkbox']:checked + .toggle-icon {\n background: var(--f7-toggle-active-bg-color);\n border-color: var(--f7-toggle-active-border-color);\n}\n.md .toggle input[type='checkbox']:checked + .toggle-icon:after {\n transform: translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height))) scale(1);\n background: var(--f7-toggle-active-knob-bg-color);\n}\n.md .toggle.active-state input[type='checkbox']:checked + .toggle-icon:after {\n transform: translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height))) scale(1.1);\n}\n.md .toggle-icon {\n background: var(--f7-toggle-inactive-bg-color);\n border: 2px solid var(--f7-toggle-inactive-border-color);\n}\n.md .toggle-icon:after {\n background: var(--f7-toggle-inactive-knob-bg-color);\n height: calc(var(--f7-toggle-height) - 8px);\n width: calc(var(--f7-toggle-height) - 8px);\n top: 2px;\n border-radius: var(--f7-toggle-height);\n transform: scale(0.666);\n left: 2px;\n}\n.md .toggle-icon.active-state:after {\n transform: scale(1.1);\n}\n/* === Range Slider === */\n:root {\n /*\n --f7-range-bar-active-bg-color: var(--f7-theme-color);\n --f7-range-scale-bg-color: var(--f7-range-bar-bg-color);\n --f7-range-scale-substep-bg-color: var(--f7-range-bar-bg-color);\n */\n --f7-range-scale-step-height: 5px;\n --f7-range-scale-substep-width: 1px;\n --f7-range-scale-substep-height: 4px;\n --f7-range-bar-bg-color: rgba(0, 0, 0, 0.2);\n}\n:root .dark,\n:root.dark {\n --f7-range-bar-bg-color: rgba(255, 255, 255, 0.2);\n}\n.ios {\n --f7-range-size: 28px;\n --f7-range-bar-size: 4px;\n --f7-range-bar-border-radius: 2px;\n --f7-range-knob-size: 28px;\n --f7-range-knob-color: #fff;\n --f7-range-knob-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n --f7-range-label-size: 24px;\n --f7-range-label-text-color: #000;\n --f7-range-label-bg-color: #fff;\n --f7-range-label-font-size: 12px;\n --f7-range-label-font-weight: 500;\n --f7-range-label-border-radius: 5px;\n --f7-range-label-padding: 0px 2px;\n --f7-range-scale-text-color: #666;\n --f7-range-scale-step-width: 1px;\n --f7-range-scale-font-size: 12px;\n --f7-range-scale-font-weight: 400;\n --f7-range-scale-label-offset: 4px;\n}\n.md {\n --f7-range-size: 20px;\n --f7-range-bar-size: 2px;\n --f7-range-bar-border-radius: 0px;\n --f7-range-knob-size: 12px;\n --f7-range-knob-box-shadow: none;\n --f7-range-label-size: 26px;\n --f7-range-label-font-weight: normal;\n --f7-range-label-font-size: 10px;\n --f7-range-label-border-radius: 50%;\n --f7-range-label-padding: 0px;\n --f7-range-scale-step-width: 2px;\n --f7-range-scale-font-size: 12px;\n --f7-range-scale-font-weight: 400;\n --f7-range-scale-label-offset: 4px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-range-knob-color: var(--f7-theme-color);\n --f7-range-label-text-color: var(--f7-md-on-primary);\n --f7-range-label-bg-color: var(--f7-theme-color);\n --f7-range-scale-text-color: var(--f7-md-on-surface-variant);\n}\n.range-slider {\n display: block;\n position: relative;\n align-self: center;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n}\n.range-slider input[type='range'] {\n display: none;\n}\n.range-slider.range-slider-horizontal {\n width: 100%;\n height: var(--f7-range-size);\n touch-action: pan-y;\n}\n.range-slider.range-slider-vertical {\n height: 100%;\n width: var(--f7-range-size);\n touch-action: pan-x;\n}\n.range-bar {\n position: absolute;\n overflow: hidden;\n background: var(--f7-range-bar-bg-color);\n border-radius: var(--f7-range-bar-border-radius);\n}\n.range-slider-vertical .range-bar {\n left: 50%;\n top: 0;\n height: 100%;\n width: var(--f7-range-bar-size);\n margin-left: calc(-1 * var(--f7-range-bar-size) / 2);\n}\n.range-slider-horizontal .range-bar {\n left: 0;\n top: 50%;\n width: 100%;\n height: var(--f7-range-bar-size);\n margin-top: calc(-1 * var(--f7-range-bar-size) / 2);\n}\n.range-bar-active {\n position: absolute;\n background: var(--f7-range-bar-active-bg-color, var(--f7-theme-color));\n}\n.range-slider-horizontal .range-bar-active {\n left: 0;\n top: 0;\n height: 100%;\n}\n.range-slider-vertical .range-bar-active {\n left: 0;\n bottom: 0;\n width: 100%;\n}\n.range-slider-vertical-reversed .range-bar-active {\n top: 0;\n bottom: auto;\n}\n.range-knob-wrap {\n z-index: 20;\n position: absolute;\n height: var(--f7-range-knob-size);\n width: var(--f7-range-knob-size);\n}\n.range-slider-horizontal .range-knob-wrap {\n top: 50%;\n margin-top: calc(-1 * var(--f7-range-knob-size) / 2);\n margin-left: calc(-1 * var(--f7-range-knob-size) / 2);\n left: 0;\n}\n.range-slider-vertical .range-knob-wrap {\n left: 50%;\n margin-left: calc(-1 * var(--f7-range-knob-size) / 2);\n bottom: 0;\n margin-bottom: calc(-1 * var(--f7-range-knob-size) / 2);\n}\n.range-slider-vertical-reversed .range-knob-wrap {\n bottom: auto;\n top: 0;\n margin-bottom: 0;\n margin-top: calc(-1 * var(--f7-range-knob-size) / 2);\n}\n.range-knob {\n box-sizing: border-box;\n border-radius: 50%;\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 1;\n background: var(--f7-range-knob-color, var(--f7-range-knob-bg-color, var(--f7-theme-color)));\n box-shadow: var(--f7-range-knob-box-shadow);\n}\n.range-knob:after {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n width: 44px;\n height: 44px;\n margin-left: -22px;\n margin-top: -22px;\n}\n.range-knob-label {\n position: absolute;\n left: 50%;\n bottom: 100%;\n text-align: center;\n transition-duration: 120ms;\n transition-property: transform;\n box-sizing: border-box;\n transform: translateY(100%) scale(0);\n height: var(--f7-range-label-size);\n line-height: var(--f7-range-label-size);\n min-width: var(--f7-range-label-size);\n color: var(--f7-range-label-text-color);\n background-color: var(--f7-range-label-bg-color, var(--f7-theme-color));\n font-size: var(--f7-range-label-font-size);\n font-weight: var(--f7-range-label-font-weight);\n border-radius: var(--f7-range-label-border-radius);\n padding: var(--f7-range-label-padding);\n}\n.range-knob-active-state .range-knob-label {\n transform: translateY(0%) scale(1);\n}\n.range-scale {\n position: absolute;\n}\n.range-slider-horizontal .range-scale {\n top: 50%;\n left: 0;\n width: 100%;\n margin-top: calc(var(--f7-range-bar-size) / 2);\n}\n.range-slider-vertical .range-scale {\n right: 50%;\n top: 0;\n height: 100%;\n margin-right: calc(var(--f7-range-bar-size) / 2);\n}\n.range-scale-step {\n position: absolute;\n box-sizing: border-box;\n display: flex;\n font-size: var(--f7-range-scale-font-size);\n font-weight: var(--f7-range-scale-font-weight);\n color: var(--f7-range-scale-text-color, var(--f7-range-bar-bg-color));\n line-height: 1;\n}\n.range-scale-step:before {\n content: '';\n position: absolute;\n background: var(--f7-range-scale-step-bg-color, var(--f7-range-bar-bg-color));\n}\n.range-slider-horizontal .range-scale-step {\n justify-content: center;\n align-items: flex-start;\n width: var(--f7-range-scale-step-width);\n height: var(--f7-range-scale-step-height);\n padding-top: calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));\n top: 0;\n margin-left: calc(-1 * var(--f7-range-scale-step-width) / 2);\n}\n.range-slider-horizontal .range-scale-step:before {\n left: 0;\n top: 0;\n width: 100%;\n height: var(--f7-range-scale-step-height);\n}\n.range-slider-horizontal .range-scale-step:first-child {\n margin-left: 0;\n}\n.range-slider-horizontal .range-scale-step:last-child {\n margin-left: calc(-1 * var(--f7-range-scale-step-width));\n}\n.range-slider-vertical .range-scale-step {\n line-height: 1;\n justify-content: flex-end;\n align-items: center;\n height: var(--f7-range-scale-step-width);\n width: var(--f7-range-scale-step-height);\n padding-right: calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));\n right: 0;\n margin-bottom: calc(-1 * var(--f7-range-scale-step-width) / 2);\n}\n.range-slider-vertical .range-scale-step:first-child {\n margin-bottom: 0;\n}\n.range-slider-vertical .range-scale-step:last-child {\n margin-bottom: calc(-1 * var(--f7-range-scale-step-width));\n}\n.range-slider-vertical .range-scale-step:before {\n right: 0;\n top: 0;\n height: 100%;\n width: var(--f7-range-scale-step-height);\n}\n.range-scale-substep {\n --f7-range-scale-step-bg-color: var(--f7-range-scale-substep-bg-color, var(--f7-range-bar-bg-color));\n --f7-range-scale-step-width: var(--f7-range-scale-substep-width);\n --f7-range-scale-step-height: var(--f7-range-scale-substep-height);\n}\n.ios .range-knob-label {\n margin-bottom: 6px;\n transform: translateX(-50%) translateY(100%) scale(0);\n}\n.ios .range-knob-active-state .range-knob-label {\n transform: translateX(-50%) translateY(0%) scale(1);\n}\n.md .range-knob {\n transition-duration: 200ms;\n transition-property: transform, background-color;\n}\n.md .range-knob-active-state .range-knob {\n transform: scale(1.5);\n}\n.md .range-slider-min:not(.range-slider-dual) .range-knob {\n background: #fff !important;\n border: 2px solid var(--f7-range-bar-bg-color);\n}\n.md .range-knob-label {\n width: var(--f7-range-label-size);\n margin-left: calc(-1 * var(--f7-range-label-size) / 2);\n margin-bottom: 8px;\n}\n.md .range-knob-label:before {\n content: '';\n left: 50%;\n top: 0px;\n margin-left: calc(-1 * var(--f7-range-label-size) / 2);\n position: absolute;\n z-index: -1;\n width: var(--f7-range-label-size);\n height: var(--f7-range-label-size);\n background: var(--f7-range-label-bg-color, var(--f7-theme-color));\n transform: rotate(-45deg);\n border-radius: 50% 50% 50% 0;\n}\n.md .range-knob-active-state .range-knob-label {\n transform: translateY(0%) scale(1);\n}\n.md .range-slider-label .range-knob-active-state .range-knob {\n transform: scale(0);\n}\n/* === Stepper === */\n:root {\n /*\n --f7-stepper-button-text-color: var(--f7-theme-color);\n --f7-stepper-button-pressed-text-color: var(--f7-button-text-color, var(--f7-theme-color));\n --f7-stepper-value-text-color: var(--f7-theme-color);\n --f7-stepper-fill-button-bg-color: var(--f7-theme-color);\n */\n --f7-stepper-raised-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);\n --f7-stepper-value-font-weight: 500;\n}\n.ios {\n --f7-stepper-height: 28px;\n --f7-stepper-border-radius: 5px;\n --f7-stepper-fill-button-text-color: #fff;\n /*\n --f7-stepper-button-pressed-bg-color: rgba(var(--f7-theme-color-rgb), .15);\n --f7-stepper-fill-button-pressed-bg-color: var(--f7-theme-color-tint);\n */\n --f7-stepper-large-height: 44px;\n --f7-stepper-small-height: 26px;\n --f7-stepper-value-font-size: 17px;\n --f7-stepper-border-width: 2px;\n --f7-stepper-border-color: var(--f7-theme-color);\n --f7-stepper-small-border-width: 2px;\n}\n.md {\n --f7-stepper-height: 40px;\n --f7-stepper-border-radius: 8px;\n --f7-stepper-large-height: 48px;\n --f7-stepper-small-height: 32px;\n --f7-stepper-value-font-size: 14px;\n --f7-stepper-border-width: 1px;\n --f7-stepper-small-border-width: 1px;\n --f7-stepper-button-pressed-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-stepper-fill-button-text-color: var(--f7-md-on-primary);\n --f7-stepper-fill-button-pressed-bg-color: var(--f7-theme-color);\n --f7-stepper-border-color: var(--f7-md-outline);\n}\n.stepper {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n display: inline-flex;\n align-items: stretch;\n height: var(--f7-stepper-height);\n border-radius: var(--f7-stepper-border-radius);\n}\n.stepper-button,\n.stepper-button-minus,\n.stepper-button-plus {\n background-color: var(--f7-stepper-button-bg-color);\n width: 40px;\n border-radius: var(--f7-stepper-border-radius);\n border: var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);\n color: var(--f7-stepper-button-text-color, var(--f7-theme-color));\n line-height: calc(var(--f7-stepper-height) - var(--f7-stepper-border-width, 0px));\n text-align: center;\n display: flex;\n justify-content: center;\n align-content: center;\n align-items: center;\n flex-shrink: 0;\n box-sizing: border-box;\n position: relative;\n cursor: pointer;\n}\n.stepper-button.active-state,\n.stepper-button-minus.active-state,\n.stepper-button-plus.active-state {\n background-color: var(--f7-stepper-button-pressed-bg-color, rgba(var(--f7-theme-color-rgb), 0.15));\n color: var(--f7-stepper-button-pressed-text-color, var(--f7-stepper-button-text-color, var(--f7-theme-color)));\n}\n.stepper-button:first-child,\n.stepper-button-minus:first-child,\n.stepper-button-plus:first-child {\n border-radius: var(--f7-stepper-border-radius) 0 0 var(--f7-stepper-border-radius);\n}\n.stepper-button:last-child,\n.stepper-button-minus:last-child,\n.stepper-button-plus:last-child {\n border-radius: 0 var(--f7-stepper-border-radius) var(--f7-stepper-border-radius) 0;\n}\n.stepper-button .icon,\n.stepper-button-minus .icon,\n.stepper-button-plus .icon {\n pointer-events: none;\n}\n.stepper-button + .stepper-button,\n.stepper-button-minus + .stepper-button,\n.stepper-button-plus + .stepper-button,\n.stepper-button + .stepper-button-minus,\n.stepper-button-minus + .stepper-button-minus,\n.stepper-button-plus + .stepper-button-minus,\n.stepper-button + .stepper-button-plus,\n.stepper-button-minus + .stepper-button-plus,\n.stepper-button-plus + .stepper-button-plus {\n border-left: none;\n}\n.stepper-button-plus,\n.stepper-button-minus {\n -webkit-user-select: none;\n user-select: none;\n}\n.stepper-button-plus:after,\n.stepper-button-minus:after,\n.stepper-button-plus:before,\n.stepper-button-minus:before {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--f7-stepper-button-text-color, var(--f7-theme-color));\n border-radius: 2px;\n}\n.stepper-button-plus:after,\n.stepper-button-minus:after {\n width: 15px;\n height: 2px;\n}\n.stepper-button-plus:before {\n height: 15px;\n width: 2px;\n}\n.stepper-value {\n display: flex;\n align-content: center;\n align-items: center;\n justify-content: center;\n}\n.stepper-input-wrap,\n.stepper-value {\n flex-shrink: 1;\n text-align: center;\n border-top: var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);\n border-bottom: var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);\n}\n.stepper .stepper-input-wrap input,\n.stepper-value {\n width: 45px;\n color: var(--f7-stepper-value-text-color, var(--f7-theme-color));\n font-size: var(--f7-stepper-value-font-size);\n font-weight: var(--f7-stepper-value-font-weight);\n text-align: center;\n}\n.stepper .stepper-input-wrap input {\n height: 100%;\n}\n.stepper-round,\n.ios .stepper-round-ios,\n.md .stepper-round-md {\n --f7-stepper-border-radius: var(--f7-stepper-height);\n}\n.stepper-fill,\n.ios .stepper-fill-ios,\n.md .stepper-fill-md {\n --f7-stepper-border-color: var(--f7-stepper-fill-button-bg-color, var(--f7-theme-color));\n --f7-stepper-button-bg-color: var(--f7-stepper-fill-button-bg-color, var(--f7-theme-color));\n --f7-stepper-button-text-color: var(--f7-stepper-fill-button-text-color);\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.stepper-fill .stepper-button + .stepper-button,\n.ios .stepper-fill-ios .stepper-button + .stepper-button,\n.md .stepper-fill-md .stepper-button + .stepper-button,\n.stepper-raised .stepper-button + .stepper-button,\n.ios .stepper-raised-ios .stepper-button + .stepper-button,\n.md .stepper-raised-md .stepper-button + .stepper-button,\n.stepper-fill .stepper-button-minus + .stepper-button-plus,\n.ios .stepper-fill-ios .stepper-button-minus + .stepper-button-plus,\n.md .stepper-fill-md .stepper-button-minus + .stepper-button-plus,\n.stepper-raised .stepper-button-minus + .stepper-button-plus,\n.ios .stepper-raised-ios .stepper-button-minus + .stepper-button-plus,\n.md .stepper-raised-md .stepper-button-minus + .stepper-button-plus {\n border-left: 1px solid rgba(0, 0, 0, 0.1);\n}\n.stepper-fill .stepper-button + .stepper-button.active-state,\n.ios .stepper-fill-ios .stepper-button + .stepper-button.active-state,\n.md .stepper-fill-md .stepper-button + .stepper-button.active-state,\n.stepper-fill .stepper-button-minus + .stepper-button-plus.active-state,\n.ios .stepper-fill-ios .stepper-button-minus + .stepper-button-plus.active-state,\n.md .stepper-fill-md .stepper-button-minus + .stepper-button-plus.active-state {\n border-left-color: var(--f7-stepper-button-pressed-bg-color);\n}\n.stepper-raised:not(.stepper-fill) .stepper-input-wrap,\n.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-input-wrap,\n.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-input-wrap,\n.stepper-raised:not(.stepper-fill) .stepper-value,\n.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-value,\n.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-value {\n border-left: 1px solid rgba(0, 0, 0, 0.1);\n border-right: 1px solid rgba(0, 0, 0, 0.1);\n}\n.stepper-large,\n.ios .stepper-large-ios,\n.md .stepper-large-md {\n --f7-stepper-height: var(--f7-stepper-large-height);\n}\n.stepper-small,\n.ios .stepper-small-ios,\n.md .stepper-small-md {\n --f7-stepper-border-width: var(--f7-stepper-small-border-width);\n --f7-stepper-height: var(--f7-stepper-small-height);\n}\n.ios .stepper-fill.stepper-small-ios,\n.ios .stepper-fill.stepper-small {\n --f7-stepper-button-pressed-bg-color: transparent;\n --f7-stepper-button-pressed-text-color: var(--f7-theme-color);\n}\n.stepper-raised,\n.ios .stepper-raised-ios,\n.md .stepper-raised-md {\n --f7-stepper-border-width: 0;\n box-shadow: var(--f7-stepper-raised-box-shadow);\n}\n.ios .stepper-button .f7-icons,\n.ios .stepper-button-minus .f7-icons,\n.ios .stepper-button-plus .f7-icons {\n font-size: 22px;\n}\n.ios .stepper-fill,\n.ios .stepper-fill-ios {\n --f7-stepper-button-pressed-bg-color: var(--f7-stepper-fill-button-pressed-bg-color, var(--f7-theme-color-tint));\n}\n.ios .stepper-small.stepper-raised,\n.ios .stepper-small-ios.stepper-raised,\n.ios .stepper-small.stepper-raised-ios,\n.ios .stepper-small-ios.stepper-raised-ios {\n --f7-stepper-border-width: 0px;\n}\n.ios .stepper-small .stepper-button,\n.ios .stepper-small-ios .stepper-button,\n.ios .stepper-small .stepper-button-minus,\n.ios .stepper-small-ios .stepper-button-minus,\n.ios .stepper-small .stepper-button-plus,\n.ios .stepper-small-ios .stepper-button-plus {\n transition-duration: 200ms;\n}\n.ios .stepper-small .stepper-button.active-state:after,\n.ios .stepper-small-ios .stepper-button.active-state:after,\n.ios .stepper-small .stepper-button-minus.active-state:after,\n.ios .stepper-small-ios .stepper-button-minus.active-state:after,\n.ios .stepper-small .stepper-button-plus.active-state:after,\n.ios .stepper-small-ios .stepper-button-plus.active-state:after,\n.ios .stepper-small .stepper-button.active-state:before,\n.ios .stepper-small-ios .stepper-button.active-state:before,\n.ios .stepper-small .stepper-button-minus.active-state:before,\n.ios .stepper-small-ios .stepper-button-minus.active-state:before,\n.ios .stepper-small .stepper-button-plus.active-state:before,\n.ios .stepper-small-ios .stepper-button-plus.active-state:before {\n transition-duration: 200ms;\n background-color: var(--f7-theme-color);\n}\n.md .stepper-button,\n.md .stepper-button-minus,\n.md .stepper-button-plus {\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n overflow: hidden;\n}\n.md .stepper-fill,\n.md .stepper-fill-md {\n --f7-stepper-button-pressed-bg-color: var(--f7-stepper-fill-button-bg-color, var(--f7-theme-color));\n}\n/* === Smart Select === */\n.smart-select :root {\n /*\n --f7-smart-select-sheet-bg: var(--f7-list-bg-color);\n --f7-smart-select-sheet-toolbar-border-color: var(--f7-bars-border-color);\n */\n}\n.smart-select select {\n display: none;\n}\n.smart-select .item-after {\n max-width: 70%;\n overflow: hidden;\n text-overflow: ellipsis;\n position: relative;\n display: block;\n}\n.smart-select-sheet .page,\n.smart-select-sheet .sheet-modal-inner,\n.smart-select-sheet .list ul {\n background: var(--f7-smart-select-sheet-bg, var(--f7-list-bg-color));\n}\n.smart-select-sheet .toolbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-smart-select-sheet-toolbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.smart-select-sheet .toolbar:after {\n display: block;\n}\n.smart-select-sheet .list {\n margin: 0;\n}\n.smart-select-sheet .list ul:before,\n.smart-select-sheet .list ul:after {\n display: none !important;\n}\n.smart-select-popover .popover-inner {\n max-height: 40vh;\n}\n/* === Grid === */\n:root {\n --f7-grid-gap: 16px;\n}\n.grid {\n display: grid;\n}\n.grid.grid-gap {\n gap: var(--f7-grid-gap);\n}\n.grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n}\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n}\n.grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n}\n.grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n}\n.grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n}\n.grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n}\n.grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n}\n.grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n}\n.grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n}\n.grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n}\n.grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n}\n.grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n}\n.grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n}\n.grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n}\n.grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n}\n.grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n}\n.grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n}\n.grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n}\n.grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n}\n.grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n}\n.grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n}\n.grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n}\n.grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n}\n.grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n}\n.grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n}\n.grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n}\n.grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n}\n.grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n}\n.grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n}\n.grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n}\n.grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n}\n.grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n}\n.grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n}\n.grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n}\n.grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n}\n.grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n}\n.grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n}\n.grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n}\n.grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n}\n@media (min-width: 480px) {\n .xsmall-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .xsmall-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .xsmall-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .xsmall-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .xsmall-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .xsmall-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .xsmall-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .xsmall-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .xsmall-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .xsmall-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .xsmall-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .xsmall-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .xsmall-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .xsmall-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .xsmall-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .xsmall-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .xsmall-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .xsmall-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .xsmall-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .xsmall-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .xsmall-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .xsmall-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .xsmall-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .xsmall-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .xsmall-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .xsmall-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .xsmall-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .xsmall-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .xsmall-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .xsmall-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .xsmall-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .xsmall-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .xsmall-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .xsmall-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .xsmall-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .xsmall-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .xsmall-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .xsmall-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .xsmall-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .xsmall-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 568px) {\n .small-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .small-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .small-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .small-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .small-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .small-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .small-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .small-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .small-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .small-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .small-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .small-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .small-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .small-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .small-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .small-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .small-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .small-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .small-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .small-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .small-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .small-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .small-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .small-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .small-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .small-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .small-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .small-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .small-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .small-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .small-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .small-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .small-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .small-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .small-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .small-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .small-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .small-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .small-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .small-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 768px) {\n .medium-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .medium-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .medium-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .medium-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .medium-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .medium-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .medium-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .medium-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .medium-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .medium-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .medium-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .medium-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .medium-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .medium-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .medium-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .medium-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .medium-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .medium-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .medium-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .medium-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .medium-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .medium-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .medium-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .medium-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .medium-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .medium-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .medium-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .medium-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .medium-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .medium-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .medium-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .medium-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .medium-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .medium-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .medium-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .medium-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .medium-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .medium-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .medium-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .medium-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 1024px) {\n .large-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .large-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .large-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .large-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .large-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .large-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .large-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .large-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .large-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .large-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .large-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .large-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .large-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .large-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .large-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .large-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .large-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .large-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .large-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .large-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .large-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .large-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .large-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .large-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .large-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .large-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .large-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .large-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .large-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .large-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .large-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .large-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .large-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .large-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .large-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .large-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .large-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .large-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .large-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .large-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 1200px) {\n .xlarge-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .xlarge-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .xlarge-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .xlarge-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .xlarge-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .xlarge-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .xlarge-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .xlarge-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .xlarge-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .xlarge-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .xlarge-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .xlarge-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .xlarge-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .xlarge-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .xlarge-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .xlarge-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .xlarge-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .xlarge-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .xlarge-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .xlarge-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .xlarge-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .xlarge-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .xlarge-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .xlarge-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .xlarge-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .xlarge-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .xlarge-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .xlarge-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .xlarge-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .xlarge-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .xlarge-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .xlarge-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .xlarge-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .xlarge-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .xlarge-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .xlarge-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .xlarge-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .xlarge-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .xlarge-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .xlarge-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n/* === Calendar/Datepicker === */\n:root {\n --f7-calendar-height: 340px;\n --f7-calendar-sheet-landscape-height: 220px;\n --f7-calendar-popover-width: 320px;\n --f7-calendar-popover-height: 320px;\n --f7-calendar-modal-height: 420px;\n --f7-calendar-modal-max-width: 380px;\n /*\n --f7-calendar-header-bg-color: var(--f7-bars-bg-color);\n --f7-calendar-header-link-color: var(--f7-bars-link-color);\n --f7-calendar-header-text-color: var(--f7-bars-text-color);\n --f7-calendar-footer-bg-color: var(--f7-bars-bg-color);\n --f7-calendar-footer-border-color: var(--f7-bars-border-color);\n --f7-calendar-footer-link-color: var(--f7-bars-link-color);\n --f7-calendar-footer-text-color: var(--f7-bars-text-color);\n */\n --f7-calendar-week-header-bg-color: transparent;\n --f7-calendar-footer-padding: 0 8px;\n --f7-calendar-week-header-font-size: 11px;\n /*\n --f7-calendar-selected-bg-color: var(--f7-theme-color);\n */\n --f7-calendar-disabled-text-color: #d4d4d4;\n --f7-calendar-event-dot-size: 4px;\n /*\n --f7-calendar-event-bg-color: var(--f7-theme-color);\n */\n /*\n --f7-calendar-picker-selected-text-color: var(--f7-theme-color);\n */\n --f7-calendar-time-selector-height: 28px;\n --f7-calendar-picker-pressed-bg-color: rgba(0, 0, 0, 0.1);\n --f7-calendar-picker-hover-bg-color: rgba(0, 0, 0, 0.03);\n --f7-calendar-time-selector-bg-color: rgba(0, 0, 0, 0.05);\n}\n:root .dark,\n:root.dark {\n --f7-calendar-picker-pressed-bg-color: rgba(255, 255, 255, 0.08);\n --f7-calendar-picker-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-calendar-time-selector-bg-color: rgba(255, 255, 255, 0.1);\n}\n.ios {\n --f7-calendar-selected-text-color: #fff;\n --f7-calendar-header-height: 44px;\n --f7-calendar-header-font-size: 17px;\n --f7-calendar-header-font-weight: 600;\n --f7-calendar-header-padding: 0 8px;\n --f7-calendar-footer-height: 44px;\n --f7-calendar-footer-font-size: 17px;\n --f7-calendar-week-header-height: 18px;\n --f7-calendar-day-font-size: 15px;\n --f7-calendar-day-size: 30px;\n --f7-calendar-picker-font-size: 17px;\n --f7-calendar-time-selector-font-size: 17px;\n --f7-calendar-modal-border-radius: 4px;\n --f7-calendar-modal-box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2),\n 0px 24px 38px 3px rgba(0, 0, 0, 0.14),\n 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\n --f7-calendar-prev-next-text-color: #c8c8c8;\n --f7-calendar-sheet-border-color: #929499;\n --f7-calendar-sheet-bg-color: #fff;\n --f7-calendar-week-header-text-color: #5e5e5e;\n --f7-calendar-modal-bg-color: #fff;\n --f7-calendar-day-text-color: #000;\n --f7-calendar-today-text-color: #000;\n --f7-calendar-today-bg-color: #e3e3e3;\n}\n.ios .dark,\n.ios.dark {\n --f7-calendar-prev-next-text-color: #5e5e5e;\n --f7-calendar-sheet-border-color: var(--f7-bars-border-color);\n --f7-calendar-sheet-bg-color: #121212;\n --f7-calendar-week-header-text-color: #aaa;\n --f7-calendar-modal-bg-color: #121212;\n --f7-calendar-day-text-color: #fff;\n --f7-calendar-today-text-color: #fff;\n --f7-calendar-today-bg-color: #333;\n}\n.md {\n --f7-calendar-sheet-border-color: transparent;\n --f7-calendar-header-height: 64px;\n --f7-calendar-header-font-size: 24px;\n --f7-calendar-header-font-weight: 400;\n --f7-calendar-header-padding: 0 24px;\n --f7-calendar-footer-height: 56px;\n --f7-calendar-footer-font-size: 14px;\n --f7-calendar-week-header-height: 24px;\n --f7-calendar-day-font-size: 14px;\n --f7-calendar-today-bg-color: none;\n --f7-calendar-day-size: 32px;\n --f7-calendar-picker-font-size: 14px;\n --f7-calendar-time-selector-font-size: 14px;\n --f7-calendar-modal-border-radius: 28px;\n --f7-calendar-modal-box-shadow: none;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-calendar-sheet-bg-color: var(--f7-md-surface-1);\n --f7-calendar-selected-text-color: var(--f7-md-on-primary);\n --f7-calendar-week-header-text-color: var(--f7-md-on-surface-variant);\n --f7-calendar-day-text-color: var(--f7-md-on-surface);\n --f7-calendar-prev-next-text-color: rgba(var(--f7-md-on-surface-variant-rgb), 0.55);\n --f7-calendar-today-text-color: var(--f7-theme-color);\n --f7-calendar-modal-bg-color: var(--f7-md-surface-1);\n}\n.calendar {\n overflow: hidden;\n height: var(--f7-calendar-height);\n width: 100%;\n display: flex;\n flex-direction: column;\n}\n.calendar.modal-in {\n display: flex;\n}\n@media (orientation: landscape) and (max-height: 415px) {\n .calendar.calendar-sheet {\n height: var(--f7-calendar-sheet-landscape-height);\n }\n .calendar.calendar-modal {\n height: calc(100vh - var(--f7-navbar-height));\n }\n}\n.calendar.calendar-inline,\n.calendar.calendar-popover .calendar {\n position: relative;\n}\n.calendar-sheet {\n --f7-sheet-border-color: var(--f7-calendar-sheet-border-color);\n background: var(--f7-calendar-sheet-bg-color);\n padding-bottom: var(--f7-safe-area-bottom);\n height: calc(var(--f7-calendar-height) + var(--f7-safe-area-bottom));\n}\n.calendar-sheet:before {\n z-index: 600;\n}\n.calendar-sheet .toolbar:before,\n.calendar-modal .toolbar:before,\n.calendar-popover .toolbar:before {\n display: none;\n}\n.calendar-popover {\n width: var(--f7-calendar-popover-width);\n}\n.calendar-popover .toolbar-top,\n.calendar-popover .calendar-header {\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n overflow: hidden;\n}\n.calendar-popover .calendar-header + .toolbar-top {\n border-radius: 0;\n}\n.calendar-popover .toolbar-bottom,\n.calendar-popover .calendar-footer {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.calendar-popover .calendar {\n height: var(--f7-calendar-popover-height);\n position: relative;\n z-index: 1;\n}\n.calendar-popover .calendar-month-picker,\n.calendar-popover .calendar-year-picker,\n.calendar-popover .calendar-time-picker {\n border-radius: var(--f7-popover-border-radius);\n}\n.calendar-popover .calendar-month-picker .picker,\n.calendar-popover .calendar-year-picker .picker,\n.calendar-popover .calendar-time-picker .picker {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n.calendar-header {\n width: 100%;\n position: relative;\n overflow: hidden;\n flex-shrink: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n box-sizing: border-box;\n padding: var(--f7-calendar-header-padding);\n background-color: var(--f7-calendar-header-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-calendar-header-text-color, var(--f7-bars-text-color));\n height: var(--f7-calendar-header-height);\n line-height: var(--f7-calendar-header-height);\n font-size: var(--f7-calendar-header-font-size);\n font-weight: var(--f7-calendar-header-font-weight);\n}\n.calendar-header a {\n color: var(--f7-calendar-header-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.calendar-footer {\n width: 100%;\n flex-shrink: 0;\n padding: var(--f7-calendar-footer-padding);\n background-color: var(--f7-calendar-footer-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-calendar-footer-text-color, var(--f7-bars-text-color));\n height: var(--f7-calendar-footer-height);\n font-size: var(--f7-calendar-header-font-size);\n display: flex;\n justify-content: flex-end;\n box-sizing: border-box;\n align-items: center;\n position: relative;\n}\n.calendar-footer a {\n color: var(--f7-calendar-footer-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.calendar-footer:before {\n content: '';\n position: absolute;\n background-color: var(--f7-calendar-footer-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.calendar-modal {\n position: absolute;\n height: var(--f7-calendar-modal-height);\n overflow: hidden;\n top: 50%;\n left: 50%;\n min-width: 300px;\n max-width: var(--f7-calendar-modal-max-width);\n transform: translate3d(-50%, 100vh, 0);\n transition-property: transform;\n display: flex;\n z-index: 13500;\n background: var(--f7-calendar-modal-bg-color);\n width: 90%;\n border-radius: var(--f7-calendar-modal-border-radius);\n box-shadow: var(--f7-calendar-modal-box-shadow);\n transition-timing-function: cubic-bezier(0, 1, 0.2, 1);\n}\n.calendar-modal.modal-in,\n.calendar-modal.modal-out {\n transition-duration: 400ms;\n}\n.calendar-modal.modal-in {\n transform: translate3d(-50%, -50%, 0);\n}\n.calendar-modal.modal-out {\n transform: translate3d(-50%, 100vh, 0);\n}\n.calendar-week-header {\n display: flex;\n box-sizing: border-box;\n position: relative;\n font-size: var(--f7-calendar-week-header-font-size);\n background-color: var(--f7-calendar-week-header-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-calendar-week-header-text-color, var(--f7-bars-text-color));\n height: var(--f7-calendar-week-header-height);\n padding-left: var(--f7-safe-area-left);\n padding-right: var(--f7-safe-area-right);\n}\n.calendar-week-header .calendar-week-day {\n flex-shrink: 1;\n width: calc(100% / 7);\n text-align: center;\n line-height: var(--f7-calendar-week-header-height);\n}\n.calendar-months {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: relative;\n flex-shrink: 10;\n}\n.calendar-months-wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n transition: 300ms;\n}\n.calendar-month {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n}\n.calendar-row {\n height: 16.66666667%;\n display: flex;\n flex-shrink: 1;\n width: 100%;\n position: relative;\n box-sizing: border-box;\n padding-left: var(--f7-safe-area-left);\n padding-right: var(--f7-safe-area-right);\n}\n.calendar-modal .calendar-months:first-child .calendar-row:first-child:before,\n.calendar-popover .calendar-months:first-child .calendar-row:first-child:before {\n display: none !important;\n}\n.calendar-day {\n flex-shrink: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n box-sizing: border-box;\n width: 14.28571429%;\n text-align: center;\n cursor: pointer;\n z-index: 20;\n color: var(--f7-calendar-day-text-color);\n height: 100%;\n font-size: var(--f7-calendar-day-font-size);\n}\n.calendar-day-today .calendar-day-number {\n color: var(--f7-calendar-today-text-color, var(--f7-theme-color));\n background-color: var(--f7-calendar-today-bg-color);\n}\n.calendar-day-prev,\n.calendar-day-next {\n color: var(--f7-calendar-prev-next-text-color);\n}\n.calendar-day-disabled {\n color: var(--f7-calendar-disabled-text-color);\n cursor: auto;\n}\n.calendar-day-selected .calendar-day-number {\n color: var(--f7-calendar-selected-text-color);\n background-color: var(--f7-calendar-selected-bg-color, var(--f7-theme-color));\n}\n.calendar-day-number {\n display: inline-block;\n border-radius: 50%;\n position: relative;\n width: var(--f7-calendar-day-size);\n height: var(--f7-calendar-day-size);\n line-height: var(--f7-calendar-day-size);\n}\n.calendar-day-events {\n position: absolute;\n display: flex;\n left: 0;\n width: 100%;\n top: 100%;\n align-items: center;\n justify-content: center;\n margin-top: 1px;\n}\n.calendar-day-event {\n width: var(--f7-calendar-event-dot-size);\n height: var(--f7-calendar-event-dot-size);\n border-radius: calc(var(--f7-calendar-event-dot-size) / 2);\n background-color: var(--f7-calendar-event-bg-color);\n}\n.calendar-day-event + .calendar-day-event {\n margin-left: 2px;\n}\n.calendar-day-selected-range,\n.calendar-day-selected-left,\n.calendar-day-selected-right {\n position: relative;\n}\n.calendar-day-selected-range:before,\n.calendar-day-selected-left:before,\n.calendar-day-selected-right:before {\n width: 100%;\n height: var(--f7-calendar-day-size);\n content: '';\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n z-index: -1;\n background-color: var(--f7-calendar-selected-bg-color, var(--f7-theme-color));\n opacity: 0.2;\n}\n.calendar-day-selected-range:first-child:before,\n.calendar-day-selected-left:before {\n left: auto;\n right: 0;\n width: calc(50% + var(--f7-calendar-day-size) / 2);\n border-radius: var(--f7-calendar-day-size) 0 0 var(--f7-calendar-day-size);\n}\n.calendar-day-selected-range:last-child:before,\n.calendar-day-selected-right:before {\n width: calc(50% + var(--f7-calendar-day-size) / 2);\n border-radius: 0 var(--f7-calendar-day-size) var(--f7-calendar-day-size) 0;\n}\n.calendar-day-selected-left:last-child:before,\n.calendar-day-selected-right:first-child:before {\n display: none;\n}\n.calendar-day-selected-left.calendar-day-selected-right:before {\n content: none;\n display: none;\n}\n.calendar-day-selected-range .calendar-day-number {\n background-color: transparent;\n color: inherit;\n}\n.calendar-month-selector,\n.calendar-year-selector {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 50%;\n max-width: 200px;\n flex-shrink: 10;\n margin-left: auto;\n margin-right: auto;\n}\n.calendar-month-selector .calendar-day-number,\n.calendar-year-selector .calendar-day-number {\n flex-shrink: 1;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.calendar-month-selector a.icon-only,\n.calendar-year-selector a.icon-only {\n min-width: 36px;\n}\n.calendar-month-picker,\n.calendar-year-picker,\n.calendar-time-picker {\n position: relative;\n width: 100%;\n height: 100%;\n -webkit-user-select: none;\n user-select: none;\n background: transparent;\n}\n.calendar-month-picker .picker-columns,\n.calendar-year-picker .picker-columns {\n text-align: center;\n}\n.calendar-month-picker-item,\n.calendar-year-picker-item {\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n overflow: hidden;\n cursor: pointer;\n transition-duration: 100ms;\n box-sizing: border-box;\n}\n.calendar-month-picker-item span,\n.calendar-year-picker-item span {\n white-space: nowrap;\n text-overflow: ellipsis;\n box-sizing: border-box;\n position: relative;\n overflow: hidden;\n pointer-events: none;\n}\n.calendar-month-picker-item.active-state,\n.calendar-year-picker-item.active-state {\n background: var(--f7-calendar-picker-pressed-bg-color);\n}\n.calendar-month-picker-item {\n padding: 5px;\n}\n.sheet-modal .calendar-month-picker-item {\n width: 25%;\n height: 33.33333333%;\n}\n.sheet-modal .calendar-month-picker-item:nth-child(4n + 1):before {\n display: none !important;\n}\n.sheet-modal .calendar-month-picker-item:nth-child(n + 9):after {\n display: none !important;\n}\n.popover .calendar-month-picker-item,\n.calendar-modal .calendar-month-picker-item {\n width: 33.33333333%;\n height: 25%;\n}\n.popover .calendar-month-picker-item:nth-child(3n + 1):before,\n.calendar-modal .calendar-month-picker-item:nth-child(3n + 1):before {\n display: none !important;\n}\n.popover .calendar-month-picker-item:nth-child(n + 10):after,\n.calendar-modal .calendar-month-picker-item:nth-child(n + 10):after {\n display: none !important;\n}\n.calendar-month-picker-item-current,\n.calendar-year-picker-item-current {\n color: var(--f7-calendar-picker-selected-text-color, var(--f7-theme-color));\n}\n.calendar-year-picker {\n overflow: auto;\n --webkit-overflow-scrolling: touch;\n}\n.calendar-year-picker-item {\n height: 34px;\n line-height: 34px;\n width: 100%;\n}\n.calendar-time-selector {\n flex-shrink: 0;\n font-size: var(--f7-calendar-time-selector-font-size);\n position: relative;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n}\n.calendar-time-selector a {\n overflow: hidden;\n position: relative;\n justify-content: center;\n align-items: center;\n display: flex;\n box-sizing: border-box;\n height: var(--f7-calendar-time-selector-height);\n background-color: var(--f7-calendar-time-selector-bg-color);\n padding: 0 16px;\n border-radius: 8px;\n}\n.calendar-time-selector > span {\n font-weight: 500;\n}\n.calendar-time-selector .segmented {\n margin-left: 8px;\n}\n.calendar-time-picker-popover,\n.calendar-year-picker-popover,\n.calendar-month-picker-popover {\n height: 240px;\n width: 240px;\n}\n.calendar-time-picker-popover .popover-inner,\n.calendar-year-picker-popover .popover-inner,\n.calendar-month-picker-popover .popover-inner {\n height: 100%;\n overflow: hidden;\n}\n.calendar-time-picker {\n --f7-picker-popover-height: 100%;\n --f7-picker-inline-height: 100%;\n}\n.calendar-time-picker .toolbar {\n flex-shrink: 0;\n top: 0 !important;\n}\n.calendar-time-picker .picker {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n/* === Picker === */\n:root {\n --f7-picker-height: 260px;\n --f7-picker-inline-height: 200px;\n --f7-picker-popover-height: 260px;\n --f7-picker-popover-width: 280px;\n --f7-picker-landscape-height: 200px;\n --f7-picker-item-height: 36px;\n /*\n --f7-picker-sheet-bg-color: var(--f7-sheet-bg-color);\n */\n}\n.ios {\n --f7-picker-column-font-size: 20px;\n --f7-picker-item-selected-text-color: #000;\n --f7-picker-item-selected-bg-color: rgba(0, 0, 0, 0.12);\n --f7-picker-divider-text-color: #000;\n --f7-picker-item-text-color: rgba(0, 0, 0, 0.45);\n}\n.ios .dark,\n.ios.dark {\n --f7-picker-item-selected-text-color: #fff;\n --f7-picker-item-selected-bg-color: rgba(255, 255, 255, 0.1);\n --f7-picker-divider-text-color: #fff;\n --f7-picker-item-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-picker-column-font-size: 20px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-picker-item-selected-text-color: var(--f7-md-on-surface);\n --f7-picker-item-text-color: var(--f7-md-on-surface-variant);\n --f7-picker-divider-text-color: var(--f7-md-on-surface);\n --f7-picker-item-selected-border-color: var(--f7-md-outline);\n}\n.picker {\n width: 100%;\n height: var(--f7-picker-height);\n}\n.picker.picker-inline {\n height: var(--f7-picker-inline-height);\n}\n.popover .picker {\n height: var(--f7-picker-popover-height);\n}\n@media (orientation: landscape) and (max-height: 415px) {\n .picker:not(.picker-inline) {\n height: var(--f7-picker-landscape-height);\n }\n}\n.picker.sheet-modal {\n background: var(--f7-picker-sheet-bg-color, var(--f7-sheet-bg-color));\n}\n.picker-popover {\n width: var(--f7-picker-popover-width);\n}\n.picker-popover .toolbar {\n background: none;\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n}\n.picker-popover .toolbar:before {\n display: none !important;\n}\n.picker-popover .toolbar + .picker-columns {\n height: calc(100% - var(--f7-toolbar-height));\n}\n.picker-columns {\n display: flex;\n overflow: hidden;\n justify-content: center;\n padding: 0;\n text-align: right;\n height: 100%;\n position: relative;\n font-size: var(--f7-picker-column-font-size);\n --f7-picker-mask-bg-color: transparent;\n}\n.popover .picker-columns {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.picker-columns::before,\n.picker-columns::after {\n content: '';\n position: absolute;\n left: 0;\n width: 100%;\n height: 20%;\n z-index: 100;\n pointer-events: none;\n}\n.page .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-page-bg-color);\n}\n.block-strong .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-block-strong-bg-color);\n}\n.picker-sheet .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-picker-sheet-bg-color, var(--f7-sheet-bg-color));\n}\n.picker-popover .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-popover-bg-color);\n}\n.picker-columns::before {\n top: 0;\n background-image: linear-gradient(to bottom, var(--f7-picker-mask-bg-color), transparent);\n}\n.picker-columns::after {\n bottom: 0;\n background-image: linear-gradient(to top, var(--f7-picker-mask-bg-color), transparent);\n}\n.picker-column {\n position: relative;\n max-height: 100%;\n z-index: 10;\n}\n.picker-column.picker-column-first.picker-column-last {\n width: 100%;\n}\n.picker-column.picker-column-left {\n text-align: left;\n}\n.picker-column.picker-column-center {\n text-align: center;\n}\n.picker-column.picker-column-right {\n text-align: right;\n}\n.picker-column.picker-column-divider {\n display: flex;\n align-items: center;\n color: var(--f7-picker-divider-text-color);\n}\n.picker-items {\n overflow: auto;\n scroll-snap-type: y mandatory;\n height: 100%;\n box-sizing: border-box;\n padding: var(--f7-picker-scroll-padding, 0px) 0px;\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.picker-items::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.picker-items::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.picker-items::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.picker-item {\n height: var(--f7-picker-item-height);\n line-height: var(--f7-picker-item-height);\n white-space: nowrap;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n left: 0;\n top: 0;\n width: 100%;\n box-sizing: border-box;\n color: var(--f7-picker-item-text-color);\n cursor: pointer;\n scroll-snap-align: center;\n}\n.picker-item span {\n padding: 0 10px;\n}\n.picker-item.picker-item-far {\n pointer-events: none;\n}\n.picker-item.picker-item-selected {\n color: var(--f7-picker-item-selected-text-color);\n transform: translate3d(0, 0, 0) rotateX(0deg);\n}\n.picker-column-free-mode .picker-item {\n scroll-snap-align: none;\n}\n.picker-center-highlight {\n height: var(--f7-picker-item-height);\n box-sizing: border-box;\n position: absolute;\n top: 50%;\n margin-top: calc(-1 * var(--f7-picker-item-height) / 2);\n pointer-events: none;\n}\n.picker-3d .picker-columns {\n overflow: hidden;\n}\n.picker-3d .picker-column,\n.picker-3d .picker-items,\n.picker-3d .picker-item {\n transform-style: preserve-3d;\n}\n.picker-3d .picker-column {\n overflow: visible;\n}\n.picker-3d .picker-item {\n perspective: 1200px;\n overflow: visible;\n}\n.picker-3d .picker-item > span {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n display: block;\n transform-style: preserve-3d;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n box-sizing: border-box;\n max-width: 100%;\n transform-origin: center center -100px;\n}\n.ios .picker-center-highlight {\n left: 16px;\n right: 16px;\n background-color: var(--f7-picker-item-selected-bg-color);\n border-radius: 8px;\n}\n.popover .ios .picker-center-highlight {\n left: 8px;\n right: 8px;\n}\n.md .picker-center-highlight {\n left: 0;\n right: 0;\n border-top: 1px solid var(--f7-md-outline);\n border-bottom: 1px solid var(--f7-md-outline);\n}\n/* === Infinite === */\n.infinite-scroll-preloader {\n margin-left: auto;\n margin-right: auto;\n text-align: center;\n}\n.infinite-scroll-preloader.preloader {\n display: block;\n}\n.ios .infinite-scroll-preloader {\n margin-top: 35px;\n margin-bottom: 35px;\n}\n.ios .infinite-scroll-preloader .preloader,\n.ios .infinite-scroll-preloader.preloader {\n width: 27px;\n height: 27px;\n}\n.md .infinite-scroll-preloader {\n margin-top: 32px;\n margin-bottom: 32px;\n}\n/* === PTR === */\n.ios {\n --f7-ptr-preloader-size: 28px;\n --f7-ptr-size: 44px;\n}\n.md {\n --f7-ptr-preloader-size: 22px;\n --f7-ptr-size: 40px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-ptr-preloader-bg-color: var(--f7-md-surface-1);\n --f7-ptr-preloader-color: var(--f7-md-primary);\n}\n.ptr-preloader {\n position: relative;\n top: var(--f7-ptr-top, 0);\n height: var(--f7-ptr-size);\n pointer-events: none;\n}\n.ptr-preloader .preloader {\n position: absolute;\n left: 50%;\n width: var(--f7-ptr-preloader-size);\n height: var(--f7-ptr-preloader-size);\n margin-left: calc(-1 * var(--f7-ptr-preloader-size) / 2);\n margin-top: calc(-1 * var(--f7-ptr-preloader-size) / 2);\n top: 50%;\n visibility: hidden;\n}\n.ptr-bottom .ptr-preloader {\n top: auto;\n bottom: 0;\n position: fixed;\n}\n.ptr-with-navbar-large-transparent .ptr-preloader,\n.ptr-with-navbar-transparent .ptr-preloader {\n top: calc(-1 * var(--f7-page-navbar-offset, 0px) + var(--f7-safe-area-top));\n}\n.ios .ptr-preloader {\n margin-bottom: calc(-1 * var(--f7-ptr-size));\n width: 100%;\n left: 0;\n top: 0;\n position: relative;\n}\n.ios .ptr-preloader .preloader {\n visibility: visible;\n}\n.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,\n.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner {\n animation: none;\n}\n.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up):not(.ptr-pull-down) .ptr-preloader .preloader-inner-line,\n.ios .ptr-content.ptr-closing .ptr-preloader .preloader-inner-line {\n opacity: 0 !important;\n}\n.ios .ptr-transitioning > *,\n.ios .ptr-refreshing > * {\n transition-duration: 200ms;\n transition-property: transform;\n}\n.ios .ptr-transitioning .ptr-preloader .preloader-inner-line {\n transition-duration: 200ms;\n}\n.ios .ptr-pull-up .ptr-preloader .preloader {\n animation: ios-ptr-preloader-spin 1s ease-out forwards;\n}\n.ios .ptr-refreshing:not(.ptr-bottom) {\n transform: none;\n}\n.ios .ptr-refreshing:not(.ptr-bottom) > * {\n transform: translate3d(0, var(--f7-ptr-size), 0);\n}\n.ios .ptr-refreshing:not(.ptr-bottom) > .ptr-preloader {\n transform: translate3d(0, 0, 0);\n}\n.ios .ptr-bottom .ptr-preloader {\n margin-bottom: 0;\n margin-top: calc(-1 * var(--f7-ptr-size));\n position: relative;\n}\n.ios .ptr-bottom.ptr-transitioning > *,\n.ios .ptr-bottom.ptr-refreshing > * {\n transition-duration: 300ms;\n transition-property: transform;\n}\n.ios .ptr-bottom.ptr-refreshing {\n transform: none;\n}\n.ios .ptr-bottom.ptr-refreshing > * {\n transform: translate3d(0, calc(-1 * var(--f7-ptr-size)), 0);\n}\n.ios .ptr-bottom.ptr-refreshing > .ptr-preloader {\n transform: translate3d(0, 0, 0);\n}\n@keyframes ios-ptr-preloader-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(135deg);\n }\n}\n.md {\n --f7-ptr-top: -4px;\n}\n.md .ptr-preloader {\n width: var(--f7-ptr-size);\n border-radius: 50%;\n background: var(--f7-ptr-preloader-bg-color);\n --f7-preloader-color: var(--f7-ptr-preloader-color);\n margin-top: calc(-1 * var(--f7-ptr-size));\n z-index: 100;\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\n left: 50%;\n margin-left: calc(-1 * var(--f7-ptr-size) / 2);\n}\n.md .ptr-preloader .preloader circle {\n stroke-width: 4;\n}\n.md .ptr-arrow {\n width: 22px;\n height: 22px;\n box-sizing: border-box;\n border: 3px solid var(--f7-preloader-color);\n position: absolute;\n left: 50%;\n top: 50%;\n margin-left: -11px;\n margin-top: -11px;\n border-left-color: transparent;\n border-radius: 50%;\n opacity: 1;\n transform: rotate(150deg);\n}\n.md .ptr-arrow:after {\n content: '';\n width: 0px;\n height: 0px;\n position: absolute;\n left: -5px;\n bottom: 0px;\n border-bottom-width: 6px;\n border-bottom-style: solid;\n border-bottom-color: inherit;\n border-left: 5px solid transparent;\n border-right: 5px solid transparent;\n transform: rotate(-40deg);\n}\n.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,\n.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner,\n.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader circle {\n animation: none;\n}\n.md .ptr-refreshing .ptr-preloader .preloader,\n.md .ptr-pull-up .ptr-preloader .preloader {\n visibility: visible;\n}\n.md .ptr-refreshing .ptr-arrow,\n.md .ptr-pull-up .ptr-arrow {\n visibility: hidden;\n}\n.md .ptr-refreshing .ptr-preloader {\n transform: translate3d(0, 66px, 0);\n}\n.md .ptr-transitioning .ptr-arrow {\n transition: 300ms;\n}\n.md .ptr-pull-up .ptr-arrow {\n transition: 400ms;\n transform: rotate(620deg) !important;\n opacity: 0;\n}\n.md .ptr-transitioning .ptr-preloader,\n.md .ptr-refreshing .ptr-preloader {\n transition-duration: 300ms;\n transition-property: transform, opacity;\n}\n.md .ptr-bottom .ptr-preloader {\n margin-top: 0;\n margin-bottom: calc(-1 * var(--f7-ptr-size) - 4px);\n}\n.md .ptr-bottom.ptr-refreshing .ptr-preloader {\n transform: translate3d(0, -66px, 0);\n}\n.md .ptr-with-navbar-large-transparent .ptr-preloader,\n.md .ptr-with-navbar-transparent .ptr-preloader {\n opacity: 0;\n}\n.md .ptr-with-navbar-large-transparent.ptr-pull-down .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-pull-down .ptr-preloader,\n.md .ptr-with-navbar-large-transparent.ptr-pull-up .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-pull-up .ptr-preloader,\n.md .ptr-with-navbar-large-transparent.ptr-refreshing .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-refreshing .ptr-preloader {\n opacity: 1;\n}\n.md .ptr-with-navbar-large-transparent.ptr-closing .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-closing .ptr-preloader {\n opacity: 0;\n transition-duration: 300ms;\n}\n/* === Data Table === */\n:root {\n --f7-table-head-font-size: 12px;\n --f7-table-body-font-size: 14px;\n --f7-table-footer-font-size: 12px;\n --f7-table-input-height: 24px;\n --f7-table-input-font-size: 14px;\n --f7-table-collapsible-cell-padding: 16px;\n --f7-table-link-icon-only-icon-size: 20px;\n --f7-table-head-bg-color: transparent;\n --f7-table-card-header-bg-color: transparent;\n --f7-table-card-header-height: 64px;\n --f7-table-cell-padding-vertical: 0px;\n --f7-table-sortable-icon-color: #000;\n}\n:root .dark,\n:root.dark {\n --f7-table-sortable-icon-color: #fff;\n --f7-table-input-text-color: #fff;\n}\n.ios {\n --f7-table-head-font-weight: 600;\n --f7-table-head-cell-height: 44px;\n --f7-table-head-icon-size: 18px;\n --f7-table-body-cell-height: 44px;\n --f7-table-cell-padding-horizontal: 16px;\n --f7-table-edge-cell-padding-horizontal: 16px;\n --f7-table-label-cell-padding-horizontal: 16px;\n --f7-table-checkbox-cell-width: 22px;\n /* --f7-table-actions-cell-link-color: var(--f7-theme-color); */\n /* --f7-table-actions-link-color: var(--f7-theme-color); */\n --f7-table-title-font-size: 17px;\n --f7-table-title-font-weight: 600;\n --f7-table-footer-height: 44px;\n --f7-table-head-text-color: rgba(0, 0, 0, 0.45);\n --f7-table-cell-border-color: rgba(0, 0, 0, 0.22);\n --f7-table-selected-row-bg-color: rgba(0, 0, 0, 0.03);\n --f7-table-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-table-input-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-table-head-text-color: rgba(255, 255, 255, 0.55);\n --f7-table-cell-border-color: rgba(255, 255, 255, 0.15);\n --f7-table-footer-text-color: rgba(255, 255, 255, 0.55);\n --f7-table-selected-row-bg-color: rgba(255, 255, 255, 0.08);\n}\n.md {\n --f7-table-head-font-weight: 500;\n --f7-table-head-cell-height: 56px;\n --f7-table-head-icon-size: 16px;\n --f7-table-body-cell-height: 48px;\n --f7-table-cell-padding-horizontal: 28px;\n --f7-table-edge-cell-padding-horizontal: 24px;\n --f7-table-label-cell-padding-horizontal: 24px;\n --f7-table-checkbox-cell-width: 18px;\n --f7-table-title-font-size: 20px;\n --f7-table-title-font-weight: 400;\n --f7-table-footer-height: 56px;\n --f7-table-actions-cell-link-color: rgba(0, 0, 0, 0.54);\n --f7-table-actions-link-color: rgba(0, 0, 0, 0.54);\n --f7-table-input-text-color: #212121;\n}\n.md .dark,\n.md.dark {\n --f7-table-actions-cell-link-color: rgba(255, 255, 255, 0.54);\n --f7-table-actions-link-color: rgba(255, 255, 255, 0.54);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-table-head-text-color: var(--f7-md-on-surface-variant);\n --f7-table-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-table-selected-row-bg-color: var(--f7-md-secondary-container);\n --f7-table-cell-border-color: var(--f7-md-outline);\n}\n.data-table {\n overflow-x: auto;\n}\n.data-table table,\ntable.data-table {\n width: 100%;\n border: none;\n padding: 0;\n margin: 0;\n border-collapse: collapse;\n text-align: left;\n}\n.data-table thead th,\n.data-table thead td {\n font-size: var(--f7-table-head-font-size);\n font-weight: var(--f7-table-head-font-weight);\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n line-height: 16px;\n height: var(--f7-table-head-cell-height);\n background-color: var(--f7-table-head-bg-color);\n}\n.data-table thead th:not(.sortable-cell-active),\n.data-table thead td:not(.sortable-cell-active) {\n color: var(--f7-table-head-text-color);\n}\n.data-table thead i.icon,\n.data-table thead i.f7-icons,\n.data-table thead i.material-icons {\n vertical-align: top;\n font-size: var(--f7-table-head-icon-size);\n}\n.data-table tbody {\n font-size: var(--f7-table-body-font-size);\n}\n.data-table tbody th,\n.data-table tbody td {\n height: var(--f7-table-body-cell-height);\n}\n.data-table tbody tr.data-table-row-selected,\n.device-desktop .data-table tbody tr:hover {\n background: var(--f7-table-selected-row-bg-color);\n}\n.data-table tbody td:before,\n.data-table tbody th:before {\n content: '';\n position: absolute;\n background-color: var(--f7-table-cell-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.data-table th,\n.data-table td {\n --f7-table-cell-padding-left: var(--f7-table-cell-padding-horizontal);\n --f7-table-cell-padding-right: var(--f7-table-cell-padding-horizontal);\n padding-top: var(--f7-table-cell-padding-vertical);\n padding-bottom: var(--f7-table-cell-padding-vertical);\n padding-left: var(--f7-table-cell-padding-left);\n padding-right: var(--f7-table-cell-padding-right);\n position: relative;\n box-sizing: border-box;\n}\n.data-table th:first-child,\n.data-table td:first-child {\n --f7-table-cell-padding-left: var(--f7-table-edge-cell-padding-horizontal);\n}\n.data-table th:last-child,\n.data-table td:last-child {\n --f7-table-cell-padding-right: var(--f7-table-edge-cell-padding-horizontal);\n}\n.data-table th.label-cell,\n.data-table td.label-cell {\n --f7-table-cell-padding-left: var(--f7-table-label-cell-padding-horizontal);\n --f7-table-cell-padding-right: var(--f7-table-label-cell-padding-horizontal);\n}\n.data-table th.numeric-cell,\n.data-table td.numeric-cell {\n text-align: right;\n}\n.data-table th.checkbox-cell,\n.data-table td.checkbox-cell {\n overflow: visible;\n width: var(--f7-table-checkbox-cell-width);\n}\n.data-table th.checkbox-cell label + span,\n.data-table td.checkbox-cell label + span {\n margin-left: 8px;\n}\n.data-table th.checkbox-cell:first-child,\n.data-table td.checkbox-cell:first-child {\n padding-right: calc(var(--f7-table-cell-padding-right) / 2);\n}\n.data-table th.checkbox-cell:first-child + td,\n.data-table td.checkbox-cell:first-child + td,\n.data-table th.checkbox-cell:first-child + th,\n.data-table td.checkbox-cell:first-child + th {\n padding-left: calc(var(--f7-table-cell-padding-left) / 2);\n}\n.data-table th.checkbox-cell:last-child,\n.data-table td.checkbox-cell:last-child {\n padding-left: calc(var(--f7-table-cell-padding-left) / 2);\n}\n.data-table th.actions-cell,\n.data-table td.actions-cell {\n text-align: right;\n white-space: nowrap;\n}\n.data-table th.actions-cell a.link,\n.data-table td.actions-cell a.link {\n color: var(--f7-table-actions-cell-link-color, var(--f7-theme-color));\n}\n.data-table th a.icon-only,\n.data-table td a.icon-only,\n.card .data-table th a.icon-only,\n.card .data-table td a.icon-only,\n.card.data-table th a.icon-only,\n.card.data-table td a.icon-only {\n display: inline-block;\n vertical-align: middle;\n text-align: center;\n font-size: 0;\n min-width: 0;\n}\n.data-table th a.icon-only i,\n.data-table td a.icon-only i,\n.card .data-table th a.icon-only i,\n.card .data-table td a.icon-only i,\n.card.data-table th a.icon-only i,\n.card.data-table td a.icon-only i {\n font-size: var(--f7-table-link-icon-only-icon-size);\n vertical-align: middle;\n}\n.data-table .sortable-cell:not(.input-cell) {\n cursor: pointer;\n position: relative;\n}\n.data-table .sortable-cell.input-cell .table-head-label {\n cursor: pointer;\n position: relative;\n}\n.data-table .sortable-cell:not(.numeric-cell):not(.input-cell):after,\n.data-table .sortable-cell.numeric-cell:not(.input-cell):before,\n.data-table .sortable-cell:not(.numeric-cell).input-cell > .table-head-label:after,\n.data-table .sortable-cell.numeric-cell.input-cell > .table-head-label:before {\n content: 'arrow_bottom_md';\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n display: inline-block;\n vertical-align: top;\n width: 16px;\n height: 16px;\n color: var(--f7-table-sortable-icon-color);\n font-size: 13px;\n line-height: 16px;\n transition-duration: 300ms;\n transform: rotate(0);\n opacity: 0;\n}\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:after,\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:after,\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:before,\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:before {\n opacity: 0.54;\n}\n.data-table .sortable-cell.sortable-cell-active:after,\n.data-table .sortable-cell.sortable-cell-active .table-head-label:after,\n.data-table .sortable-cell.sortable-cell-active:before,\n.data-table .sortable-cell.sortable-cell-active .table-head-label:before {\n opacity: 0.87 !important;\n}\n.data-table .sortable-cell.sortable-desc:after,\n.data-table .sortable-cell.sortable-desc:after,\n.data-table .table-head-label:after,\n.data-table .sortable-cell.sortable-desc:before,\n.data-table .sortable-cell.sortable-desc:before,\n.data-table .table-head-label:before {\n transform: rotate(180deg) !important;\n}\n.data-table.card .card-header,\n.card .data-table .card-header,\n.data-table.card .card-footer,\n.card .data-table .card-footer {\n padding-left: var(--f7-table-edge-cell-padding-horizontal);\n padding-right: var(--f7-table-edge-cell-padding-horizontal);\n}\n.data-table.card .card-header,\n.card .data-table .card-header {\n min-height: var(--f7-table-card-header-height);\n background-color: var(--f7-table-card-header-bg-color);\n}\n.data-table.card .card-content,\n.card .data-table .card-content {\n overflow-x: auto;\n}\n.data-table.card .card-footer,\n.card .data-table .card-footer {\n min-height: var(--f7-table-footer-height);\n}\n.data-table .data-table-title {\n font-size: var(--f7-table-title-font-size);\n font-weight: var(--f7-table-title-font-weight);\n}\n.data-table .data-table-links,\n.data-table .data-table-actions {\n display: flex;\n}\n.data-table .data-table-links .button {\n min-width: 64px;\n}\n.data-table .data-table-actions {\n margin-left: auto;\n align-items: center;\n}\n.data-table .data-table-actions a.link {\n color: var(--f7-table-actions-link-color, var(--f7-theme-color));\n min-width: 0;\n}\n.data-table .data-table-actions a.link.icon-only {\n line-height: 1;\n justify-content: center;\n padding: 0;\n}\n.data-table .data-table-header,\n.data-table .data-table-header-selected {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n}\n.data-table .card-header > .data-table-header,\n.data-table .card-header > .data-table-header-selected {\n padding-top: var(--f7-card-header-padding-vertical);\n padding-bottom: var(--f7-card-header-padding-vertical);\n height: 100%;\n margin-top: calc(-1 * var(--f7-card-header-padding-vertical));\n margin-bottom: calc(-1 * var(--f7-card-header-padding-vertical));\n min-height: var(--f7-table-card-header-height);\n padding-left: var(--f7-table-edge-cell-padding-horizontal);\n padding-right: var(--f7-table-edge-cell-padding-horizontal);\n margin-left: calc(-1 * var(--f7-table-edge-cell-padding-horizontal));\n margin-right: calc(-1 * var(--f7-table-edge-cell-padding-horizontal));\n}\n.data-table .data-table-header-selected {\n background: rgba(var(--f7-theme-color-rgb), 0.1);\n display: none;\n}\n.data-table.data-table-has-checked .data-table-header {\n display: none;\n}\n.data-table.data-table-has-checked .data-table-header-selected {\n display: flex;\n}\n.data-table .data-table-title-selected {\n font-size: 14px;\n color: var(--f7-theme-color);\n}\n.data-table .data-table-footer {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n position: relative;\n font-size: var(--f7-table-footer-font-size);\n overflow: hidden;\n min-height: var(--f7-table-footer-height);\n color: var(--f7-table-footer-text-color);\n justify-content: flex-end;\n}\n.data-table .data-table-footer:before {\n content: '';\n position: absolute;\n background-color: var(--f7-table-cell-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.data-table .data-table-rows-select,\n.data-table .data-table-pagination {\n display: flex;\n align-items: center;\n}\n.data-table .input-cell {\n padding-top: 8px;\n padding-bottom: 8px;\n height: auto;\n vertical-align: top;\n}\n.data-table .input-cell .table-head-label + .input {\n margin-top: 4px;\n}\n.data-table .input-cell .input {\n height: var(--f7-table-input-height);\n}\n.data-table .input-cell .input input,\n.data-table .input-cell .input textarea,\n.data-table .input-cell .input select {\n height: var(--f7-table-input-height);\n color: var(--f7-table-input-text-color);\n font-size: var(--f7-table-input-font-size);\n}\n@media (max-width: 480px) and (orientation: portrait) {\n .data-table.data-table-collapsible thead {\n display: none;\n }\n .data-table.data-table-collapsible tbody,\n .data-table.data-table-collapsible tr,\n .data-table.data-table-collapsible td {\n display: block;\n }\n .data-table.data-table-collapsible tr {\n position: relative;\n }\n .data-table.data-table-collapsible tr:before {\n content: '';\n position: absolute;\n background-color: var(--f7-table-cell-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n .data-table.data-table-collapsible tr:hover {\n background-color: inherit;\n }\n .data-table.data-table-collapsible td {\n --f7-table-cell-padding-left: var(--f7-table-collapsible-cell-padding);\n --f7-table-cell-padding-right: var(--f7-table-collapsible-cell-padding);\n height: auto;\n min-height: var(--f7-table-body-cell-height);\n display: flex;\n align-content: center;\n align-items: center;\n justify-content: flex-start;\n text-align: left;\n }\n .data-table.data-table-collapsible td:before {\n display: none !important;\n }\n .data-table.data-table-collapsible td:not(.checkbox-cell):before {\n width: 40%;\n display: block !important;\n content: attr(data-collapsible-title);\n position: relative;\n height: auto;\n background: none !important;\n transform: none !important;\n font-size: var(--f7-table-head-font-size);\n font-weight: var(--f7-table-head-font-weight);\n color: var(--f7-table-head-text-color);\n margin-right: 16px;\n flex-shrink: 0;\n }\n .data-table.data-table-collapsible td.checkbox-cell {\n position: absolute;\n top: 0;\n left: 0;\n }\n .data-table.data-table-collapsible td.checkbox-cell + td {\n padding-left: 16px;\n }\n .data-table.data-table-collapsible td.checkbox-cell ~ td {\n margin-left: 32px;\n }\n}\n.data-table .xsmall-only,\n.data-table .xsmall-landscape-only {\n display: none;\n}\n@media (min-width: 480px) {\n .data-table .xsmall-only {\n display: table-cell;\n }\n}\n@media (min-width: 480px) and (orientation: landscape) {\n .data-table .xsmall-landscape-only {\n display: table-cell;\n }\n}\n.data-table .small-only,\n.data-table .small-landscape-only {\n display: none;\n}\n@media (min-width: 568px) {\n .data-table .small-only {\n display: table-cell;\n }\n}\n@media (min-width: 568px) and (orientation: landscape) {\n .data-table .small-landscape-only {\n display: table-cell;\n }\n}\n.data-table .medium-only,\n.data-table .medium-landscape-only {\n display: none;\n}\n@media (min-width: 768px) {\n .data-table .medium-only {\n display: table-cell;\n }\n}\n@media (min-width: 768px) and (orientation: landscape) {\n .data-table .medium-landscape-only {\n display: table-cell;\n }\n}\n.data-table .large-only,\n.data-table .large-landscape-only {\n display: none;\n}\n@media (min-width: 1024px) {\n .data-table .large-only {\n display: table-cell;\n }\n}\n@media (min-width: 1024px) and (orientation: landscape) {\n .data-table .large-landscape-only {\n display: table-cell;\n }\n}\n.data-table .xlarge-only,\n.data-table .xlarge-landscape-only {\n display: none;\n}\n@media (min-width: 1200px) {\n .data-table .xlarge-only {\n display: table-cell;\n }\n}\n@media (min-width: 1200px) and (orientation: landscape) {\n .data-table .xlarge-landscape-only {\n display: table-cell;\n }\n}\n.ios .data-table th.actions-cell a.link + a.link,\n.ios .data-table td.actions-cell a.link + a.link {\n margin-left: 16px;\n}\n.ios .sortable-cell:not(.numeric-cell):after {\n margin-left: 5px;\n}\n.ios .sortable-cell.numeric-cell:before {\n margin-right: 5px;\n}\n.ios .data-table-links a.link + a.link,\n.ios .data-table-actions a.link + a.link,\n.ios .data-table-links .button + .button,\n.ios .data-table-actions .button + .button {\n margin-left: 16px;\n}\n.ios .data-table-actions a.link.icon-only {\n width: 44px;\n height: 44px;\n}\n.ios .data-table-rows-select a.link,\n.ios .data-table-pagination a.link {\n width: 44px;\n height: 44px;\n}\n.ios .data-table-rows-select + .data-table-pagination {\n margin-left: 30px;\n}\n.ios .data-table-rows-select .input {\n margin-left: 20px;\n}\n.ios .data-table-pagination-label {\n margin-right: 16px;\n}\n.md .data-table th.actions-cell a.link + a.link,\n.md .data-table td.actions-cell a.link + a.link {\n margin-left: 24px;\n}\n.md .data-table th.actions-cell a.icon-only,\n.md .data-table td.actions-cell a.icon-only {\n width: 24px;\n height: 24px;\n line-height: 24px;\n}\n.md .sortable-cell:not(.numeric-cell):after {\n margin-left: 8px;\n}\n.md .sortable-cell.numeric-cell:before {\n margin-right: 8px;\n}\n.md .data-table-links a.link + a.link,\n.md .data-table-actions a.link + a.link,\n.md .data-table-links .button + .button,\n.md .data-table-actions .button + .button {\n margin-left: 24px;\n}\n.md .data-table-actions a.link.icon-only {\n width: 24px;\n height: 24px;\n overflow: visible;\n}\n.md .data-table-actions a.link.icon-only.active-state {\n background: none;\n}\n.md .data-table-rows-select a.link,\n.md .data-table-pagination a.link {\n width: 48px;\n height: 48px;\n}\n.md .data-table-rows-select + .data-table-pagination {\n margin-left: 32px;\n}\n.md .data-table-rows-select .input {\n margin-left: 24px;\n}\n.md .data-table-pagination-label {\n margin-right: 20px;\n}\n.md .input-cell .input-clear-button {\n transform: scale(0.8);\n}\n/* === FAB === */\n:root {\n --f7-fab-margin: 16px;\n --f7-fab-extended-text-font-size: 14px;\n --f7-fab-label-padding: 4px 12px;\n --f7-fab-label-font-size: inherit;\n --f7-fab-button-size: 40px;\n}\n.ios {\n /* --f7-fab-pressed-bg-color: var(--f7-theme-color-shade); */\n /* --f7-fab-bg-color: var(--f7-theme-color)); */\n --f7-fab-text-color: #fff;\n --f7-fab-border-radius: 50px;\n --f7-fab-size: 50px;\n --f7-fab-box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.4);\n --f7-fab-extended-text-transform: uppercase;\n --f7-fab-extended-size: 50px;\n --f7-fab-extended-text-padding: 0 20px;\n --f7-fab-extended-text-font-weight: 600;\n --f7-fab-extended-text-letter-spacing: 0;\n --f7-fab-label-border-radius: 4px;\n --f7-fab-label-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.4);\n --f7-fab-label-text-color: #333;\n --f7-fab-label-bg-color: #fff;\n}\n.md {\n /*\n --f7-fab-pressed-bg-color: var(--f7-fab-bg-color, var(--f7-theme-color));\n */\n --f7-fab-border-radius: 16px;\n --f7-fab-size: 56px;\n --f7-fab-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.25);\n --f7-fab-extended-size: 56px;\n --f7-fab-extended-text-padding: 0 16px;\n --f7-fab-extended-text-font-weight: 500;\n --f7-fab-extended-text-letter-spacing: 0;\n --f7-fab-extended-text-transform: none;\n --f7-fab-label-border-radius: 8px;\n --f7-fab-label-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.25);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-fab-bg-color: var(--f7-md-primary-container);\n --f7-fab-text-color: var(--f7-md-on-primary-container);\n --f7-fab-label-text-color: var(--f7-md-on-surface);\n --f7-fab-label-bg-color: var(--f7-md-surface-5);\n}\n.fab-backdrop {\n z-index: 1400;\n}\n.fab {\n position: absolute;\n z-index: 1500;\n}\n.fab a {\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.fab-left-top,\n.fab-left-center,\n.fab-left-bottom {\n left: calc(var(--f7-fab-margin) + var(--f7-safe-area-left));\n}\n.fab-right-top,\n.fab-right-center,\n.fab-right-bottom {\n right: calc(var(--f7-fab-margin) + var(--f7-safe-area-right));\n}\n.fab-left-top,\n.fab-center-top,\n.fab-right-top {\n top: var(--f7-fab-margin);\n}\n.fab-left-bottom,\n.fab-center-bottom,\n.fab-right-bottom {\n bottom: calc(var(--f7-fab-margin) + var(--f7-safe-area-bottom));\n}\n.fab-center-top,\n.fab-center-center,\n.fab-center-bottom {\n left: 50%;\n transform: translateX(-50%);\n}\n.fab-left-center,\n.fab-center-center,\n.fab-right-center {\n top: 50%;\n transform: translateY(-50%);\n}\n.fab-center-center {\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n}\n.fab > a,\n.fab-buttons a {\n background-color: var(--f7-fab-bg-color, var(--f7-theme-color));\n width: var(--f7-fab-size);\n height: var(--f7-fab-size);\n box-shadow: var(--f7-fab-box-shadow);\n border-radius: var(--f7-fab-border-radius);\n position: relative;\n transition-duration: 300ms;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n z-index: 1;\n color: var(--f7-fab-text-color);\n}\n.fab > a i {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate3d(-50%, -50%, 0) rotate(0deg) scale(1);\n transition: 300ms;\n}\n.fab > a i + i {\n transform: translate3d(-50%, -50%, 0) rotate(-90deg) scale(0.5);\n opacity: 0;\n}\n.fab-buttons a {\n border-radius: var(--f7-fab-border-radius);\n width: var(--f7-fab-button-size);\n height: var(--f7-fab-button-size);\n}\n.fab-buttons {\n display: flex;\n visibility: hidden;\n pointer-events: none;\n position: absolute;\n}\n.fab-buttons a {\n opacity: 0;\n}\n.fab-opened:not(.fab-morph) > a i {\n transform: translate3d(-50%, -50%, 0) rotate(90deg) scale(0.5);\n opacity: 0;\n}\n.fab-opened:not(.fab-morph) > a i + i {\n transform: translate3d(-50%, -50%, 0) rotate(0deg) scale(1);\n opacity: 1;\n}\n.fab-opened .fab-buttons {\n visibility: visible;\n pointer-events: auto;\n}\n.fab-opened .fab-buttons a {\n opacity: 1;\n transform: translate3d(0, 0px, 0) scale(1) !important;\n}\n.fab-opened .fab-buttons a:nth-child(2) {\n transition-delay: 50ms;\n}\n.fab-opened .fab-buttons a:nth-child(3) {\n transition-delay: 100ms;\n}\n.fab-opened .fab-buttons a:nth-child(4) {\n transition-delay: 150ms;\n}\n.fab-opened .fab-buttons a:nth-child(5) {\n transition-delay: 200ms;\n}\n.fab-opened .fab-buttons a:nth-child(6) {\n transition-delay: 250ms;\n}\n.fab-buttons-top,\n.fab-buttons-bottom {\n left: 50%;\n width: var(--f7-fab-button-size);\n margin-left: calc(-1 * var(--f7-fab-button-size) / 2);\n}\n.fab-buttons-top {\n bottom: 100%;\n margin-bottom: 16px;\n flex-direction: column-reverse;\n}\n.fab-buttons-top a {\n transform: translate3d(0, 8px, 0) scale(0.3);\n transform-origin: center bottom;\n}\n.fab-buttons-top a + a {\n margin-bottom: 16px;\n}\n.fab-buttons-bottom {\n top: 100%;\n margin-top: 16px;\n flex-direction: column;\n}\n.fab-buttons-bottom a {\n transform: translate3d(0, -8px, 0) scale(0.3);\n transform-origin: center top;\n}\n.fab-buttons-bottom a + a {\n margin-top: 16px;\n}\n.fab-buttons-left,\n.fab-buttons-right {\n top: 50%;\n height: var(--f7-fab-button-size);\n margin-top: calc(-1 * var(--f7-fab-button-size) / 2);\n}\n.fab-buttons-left {\n right: 100%;\n margin-right: 16px;\n flex-direction: row-reverse;\n}\n.fab-buttons-left a {\n transform: translate3d(8px, 0px, 0) scale(0.3);\n transform-origin: right center;\n}\n.fab-buttons-left a + a {\n margin-right: 16px;\n}\n.fab-buttons-right {\n left: 100%;\n margin-left: 16px;\n}\n.fab-buttons-right a {\n transform: translate3d(-8px, 0, 0) scale(0.3);\n transform-origin: left center;\n}\n.fab-buttons-right a + a {\n margin-left: 16px;\n}\n.fab-buttons-center {\n left: 0%;\n top: 0%;\n width: 100%;\n height: 100%;\n}\n.fab-buttons-center a {\n position: absolute;\n}\n.fab-buttons-center a:nth-child(1) {\n left: 50%;\n margin-left: calc(-1 * var(--f7-fab-button-size) / 2);\n bottom: 100%;\n margin-bottom: 16px;\n transform: translateY(-8px) scale(0.3);\n transform-origin: center bottom;\n}\n.fab-buttons-center a:nth-child(2) {\n left: 100%;\n margin-top: calc(-1 * var(--f7-fab-button-size) / 2);\n top: 50%;\n margin-left: 16px;\n transform: translateX(-8px) scale(0.3);\n transform-origin: left center;\n}\n.fab-buttons-center a:nth-child(3) {\n left: 50%;\n margin-left: calc(-1 * var(--f7-fab-button-size) / 2);\n top: 100%;\n margin-top: 16px;\n transform: translateY(8px) scale(0.3);\n transform-origin: center top;\n}\n.fab-buttons-center a:nth-child(4) {\n right: 100%;\n margin-top: calc(-1 * var(--f7-fab-button-size) / 2);\n top: 50%;\n margin-right: 16px;\n transform: translateX(8px) scale(0.3);\n transform-origin: right center;\n}\n.fab-morph {\n border-radius: var(--f7-fab-border-radius);\n background: var(--f7-fab-bg-color, var(--f7-theme-color));\n box-shadow: var(--f7-fab-box-shadow);\n}\n.fab-morph > a {\n box-shadow: none;\n background: none !important;\n}\n.fab-opened.fab-morph > a i {\n opacity: 0;\n}\n.fab-morph,\n.fab-morph > a,\n.fab-morph-target {\n transition-duration: 250ms;\n}\n.fab-morph-target:not(.fab-morph-target-visible) {\n display: none;\n}\n.fab-extended {\n width: auto;\n min-width: var(--f7-fab-extended-size);\n}\n.fab-extended > a {\n width: 100%;\n height: var(--f7-fab-extended-size);\n}\n.fab-extended > a i {\n left: calc(var(--f7-fab-extended-size) / 2);\n}\n.fab-extended i ~ .fab-text {\n padding-left: var(--f7-fab-extended-size);\n}\n.fab-extended > a {\n width: 100% !important;\n}\n.fab-text {\n box-sizing: border-box;\n font-size: var(--f7-fab-extended-text-font-size);\n padding: var(--f7-fab-extended-text-padding);\n font-weight: var(--f7-fab-extended-text-font-weight);\n letter-spacing: var(--f7-fab-extended-text-letter-spacing);\n text-transform: var(--f7-fab-extended-text-transform);\n}\n.fab-label-button {\n overflow: visible !important;\n}\n.fab-label {\n position: absolute;\n top: 50%;\n padding: var(--f7-fab-label-padding);\n border-radius: var(--f7-fab-label-border-radius);\n background: var(--f7-fab-label-bg-color);\n color: var(--f7-fab-label-text-color);\n box-shadow: var(--f7-fab-label-box-shadow);\n white-space: nowrap;\n transform: translateY(-50%);\n pointer-events: none;\n font-size: var(--f7-fab-label-font-size);\n}\n.fab-right-top .fab-label,\n.fab-right-center .fab-label,\n.fab-right-bottom .fab-label {\n right: 100%;\n margin-right: 8px;\n}\n.fab-left-top .fab-label,\n.fab-left-center .fab-label,\n.fab-left-bottom .fab-label {\n left: 100%;\n margin-left: 8px;\n}\n.navbar ~ * .fab-left-top,\n.navbar ~ * .fab-center-top,\n.navbar ~ * .fab-right-top,\n.navbar ~ .fab-left-top,\n.navbar ~ .fab-center-top,\n.navbar ~ .fab-right-top,\n.navbars ~ * .fab-left-top,\n.navbars ~ * .fab-center-top,\n.navbars ~ * .fab-right-top,\n.navbars ~ .fab-left-top,\n.navbars ~ .fab-center-top,\n.navbars ~ .fab-right-top {\n margin-top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.toolbar-top ~ * .fab-left-top,\n.toolbar-top ~ * .fab-center-top,\n.toolbar-top ~ * .fab-right-top,\n.toolbar-top ~ .fab-left-top,\n.toolbar-top ~ .fab-center-top,\n.toolbar-top ~ .fab-right-top,\n.ios .toolbar-top-ios ~ * .fab-left-top,\n.ios .toolbar-top-ios ~ * .fab-center-top,\n.ios .toolbar-top-ios ~ * .fab-right-top,\n.ios .toolbar-top-ios ~ .fab-left-top,\n.ios .toolbar-top-ios ~ .fab-center-top,\n.ios .toolbar-top-ios ~ .fab-right-top,\n.md .toolbar-top-md ~ * .fab-left-top,\n.md .toolbar-top-md ~ * .fab-center-top,\n.md .toolbar-top-md ~ * .fab-right-top,\n.md .toolbar-top-md ~ .fab-left-top,\n.md .toolbar-top-md ~ .fab-center-top,\n.md .toolbar-top-md ~ .fab-right-top {\n margin-top: var(--f7-toolbar-height);\n}\n.toolbar-bottom ~ * .fab-left-bottom,\n.toolbar-bottom ~ * .fab-center-bottom,\n.toolbar-bottom ~ * .fab-right-bottom,\n.toolbar-bottom ~ .fab-left-bottom,\n.toolbar-bottom ~ .fab-center-bottom,\n.toolbar-bottom ~ .fab-right-bottom,\n.ios .toolbar-bottom-ios ~ * .fab-left-bottom,\n.ios .toolbar-bottom-ios ~ * .fab-center-bottom,\n.ios .toolbar-bottom-ios ~ * .fab-right-bottom,\n.ios .toolbar-bottom-ios ~ .fab-left-bottom,\n.ios .toolbar-bottom-ios ~ .fab-center-bottom,\n.ios .toolbar-bottom-ios ~ .fab-right-bottom,\n.md .toolbar-bottom-md ~ * .fab-left-bottom,\n.md .toolbar-bottom-md ~ * .fab-center-bottom,\n.md .toolbar-bottom-md ~ * .fab-right-bottom,\n.md .toolbar-bottom-md ~ .fab-left-bottom,\n.md .toolbar-bottom-md ~ .fab-center-bottom,\n.md .toolbar-bottom-md ~ .fab-right-bottom {\n margin-bottom: var(--f7-toolbar-height);\n}\n.tabbar-icons.toolbar-bottom ~ * .fab-left-bottom,\n.tabbar-icons.toolbar-bottom ~ * .fab-center-bottom,\n.tabbar-icons.toolbar-bottom ~ * .fab-right-bottom,\n.tabbar-icons.toolbar-bottom ~ .fab-left-bottom,\n.tabbar-icons.toolbar-bottom ~ .fab-center-bottom,\n.tabbar-icons.toolbar-bottom ~ .fab-right-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ * .fab-left-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ * .fab-center-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ * .fab-right-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ .fab-left-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ .fab-center-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ .fab-right-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ * .fab-left-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ * .fab-center-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ * .fab-right-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ .fab-left-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ .fab-center-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ .fab-right-bottom {\n margin-bottom: var(--f7-tabbar-icons-height);\n}\n.tabbar-icons.toolbar-top ~ * .fab-left-bottom,\n.tabbar-icons.toolbar-top ~ * .fab-center-bottom,\n.tabbar-icons.toolbar-top ~ * .fab-right-bottom,\n.tabbar-icons.toolbar-top ~ .fab-left-bottom,\n.tabbar-icons.toolbar-top ~ .fab-center-bottom,\n.tabbar-icons.toolbar-top ~ .fab-right-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ * .fab-left-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ * .fab-center-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ * .fab-right-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ .fab-left-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ .fab-center-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ .fab-right-bottom,\n.md .tabbar-icons.toolbar-top-md ~ * .fab-left-bottom,\n.md .tabbar-icons.toolbar-top-md ~ * .fab-center-bottom,\n.md .tabbar-icons.toolbar-top-md ~ * .fab-right-bottom,\n.md .tabbar-icons.toolbar-top-md ~ .fab-left-bottom,\n.md .tabbar-icons.toolbar-top-md ~ .fab-center-bottom,\n.md .tabbar-icons.toolbar-top-md ~ .fab-right-bottom {\n margin-top: var(--f7-tabbar-icons-height);\n}\n.messagebar ~ * .fab-left-bottom,\n.messagebar ~ * .fab-center-bottom,\n.messagebar ~ * .fab-right-bottom,\n.messagebar ~ .fab-left-bottom,\n.messagebar ~ .fab-center-bottom,\n.messagebar ~ .fab-right-bottom {\n margin-bottom: var(--f7-messagebar-height);\n}\n.navbar + .toolbar-top ~ * .fab-left-top,\n.ios .navbar + .toolbar-top-ios ~ * .fab-left-top,\n.md .navbar + .toolbar-top-ios ~ * .fab-left-top,\n.navbar + .toolbar-top ~ * .fab-center-top,\n.ios .navbar + .toolbar-top-ios ~ * .fab-center-top,\n.md .navbar + .toolbar-top-ios ~ * .fab-center-top,\n.navbar + .toolbar-top ~ * .fab-right-top,\n.ios .navbar + .toolbar-top-ios ~ * .fab-right-top,\n.md .navbar + .toolbar-top-ios ~ * .fab-right-top,\n.navbar + .toolbar-top ~ .fab-left-top,\n.ios .navbar + .toolbar-top-ios ~ .fab-left-top,\n.md .navbar + .toolbar-top-ios ~ .fab-left-top,\n.navbar + .toolbar-top ~ .fab-center-top,\n.ios .navbar + .toolbar-top-ios ~ .fab-center-top,\n.md .navbar + .toolbar-top-ios ~ .fab-center-top,\n.navbar + .toolbar-top ~ .fab-right-top,\n.ios .navbar + .toolbar-top-ios ~ .fab-right-top,\n.md .navbar + .toolbar-top-ios ~ .fab-right-top {\n margin-top: calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar + .toolbar-top.tabbar-icons ~ * .fab-left-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-left-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-left-top,\n.navbar + .toolbar-top.tabbar-icons ~ * .fab-center-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-center-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-center-top,\n.navbar + .toolbar-top.tabbar-icons ~ * .fab-right-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-right-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-right-top,\n.navbar + .toolbar-top.tabbar-icons ~ .fab-left-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-left-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-left-top,\n.navbar + .toolbar-top.tabbar-icons ~ .fab-center-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-center-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-center-top,\n.navbar + .toolbar-top.tabbar-icons ~ .fab-right-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-right-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-right-top {\n margin-top: calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbars + .toolbar-top ~ * .fab-left-top,\n.ios .navbars + .toolbar-top-ios ~ * .fab-left-top,\n.navbars + .toolbar-top ~ * .fab-center-top,\n.ios .navbars + .toolbar-top-ios ~ * .fab-center-top,\n.navbars + .toolbar-top ~ * .fab-right-top,\n.ios .navbars + .toolbar-top-ios ~ * .fab-right-top,\n.navbars + .toolbar-top ~ .fab-left-top,\n.ios .navbars + .toolbar-top-ios ~ .fab-left-top,\n.navbars + .toolbar-top ~ .fab-center-top,\n.ios .navbars + .toolbar-top-ios ~ .fab-center-top,\n.navbars + .toolbar-top ~ .fab-right-top,\n.ios .navbars + .toolbar-top-ios ~ .fab-right-top {\n margin-top: calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbars + .toolbar-top.tabbar-icons ~ * .fab-left-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ * .fab-left-top,\n.navbars + .toolbar-top.tabbar-icons ~ * .fab-center-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ * .fab-center-top,\n.navbars + .toolbar-top.tabbar-icons ~ * .fab-right-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ * .fab-right-top,\n.navbars + .toolbar-top.tabbar-icons ~ .fab-left-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ .fab-left-top,\n.navbars + .toolbar-top.tabbar-icons ~ .fab-center-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ .fab-center-top,\n.navbars + .toolbar-top.tabbar-icons ~ .fab-right-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ .fab-right-top {\n margin-top: calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.ios .fab > a.active-state,\n.ios .fab-buttons a.active-state {\n transition-duration: 0ms;\n background-color: var(--f7-fab-pressed-bg-color, var(--f7-theme-color-shade));\n}\n.md .fab > a.active-state,\n.md .fab-buttons a.active-state {\n background-color: var(--f7-fab-pressed-bg-color, var(--f7-fab-bg-color, var(--f7-theme-color)));\n}\n/* === Searchbar === */\n:root {\n /*\n --f7-searchbar-link-color: var(--f7-bars-link-color);\n --f7-searchbar-inline-input-font-size: var(--f7-searchbar-input-font-size);\n */\n --f7-searchbar-input-border-width: 0px;\n --f7-searchbar-input-border-color: transparent;\n}\n.ios {\n /*\n --f7-searchbar-bg-color: var(--f7-bars-bg-color);\n --f7-searchbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-searchbar-border-color: var(--f7-bars-border-color);\n */\n --f7-searchbar-height: 44px;\n --f7-searchbar-inner-padding-left: 8px;\n --f7-searchbar-inner-padding-right: 8px;\n /*\n --f7-searchbar-link-color: var(--f7-bars-link-color, var(--f7-theme-color));\n */\n --f7-searchbar-input-font-size: 17px;\n --f7-searchbar-input-border-radius: 8px;\n --f7-searchbar-input-height: 32px;\n --f7-searchbar-inline-input-height: 32px;\n /*\n --f7-searchbar-inline-input-border-radius: var(--f7-searchbar-input-border-radius);\n */\n --f7-searchbar-input-padding-horizontal: 28px;\n /*\n --f7-searchbar-inline-input-padding-horizontal: var(--f7-searchbar-input-padding-horizontal);\n --f7-searchbar-input-clear-button-color: var(--f7-input-clear-button-color);\n */\n --f7-searchbar-backdrop-bg-color: rgba(0, 0, 0, 0.4);\n --f7-searchbar-in-page-content-margin: 0px;\n --f7-searchbar-in-page-content-box-shadow: none;\n --f7-searchbar-in-page-content-border-radius: 0;\n --f7-searchbar-in-page-content-input-border-radius: 0;\n --f7-searchbar-placeholder-color: rgba(0, 0, 0, 0.4);\n --f7-searchbar-input-text-color: #000;\n --f7-searchbar-search-icon-color: rgba(0, 0, 0, 0.4);\n --f7-searchbar-input-bg-color: #e4e4e4;\n}\n.ios .dark,\n.ios.dark {\n --f7-searchbar-placeholder-color: rgba(255, 255, 255, 0.4);\n --f7-searchbar-input-text-color: #fff;\n --f7-searchbar-search-icon-color: rgba(255, 255, 255, 0.4);\n --f7-searchbar-input-bg-color: #2a2a2a;\n}\n.md {\n --f7-searchbar-border-color: transparent;\n --f7-searchbar-height: 48px;\n --f7-searchbar-inner-padding-left: 8px;\n --f7-searchbar-inner-padding-right: 8px;\n --f7-searchbar-input-font-size: 16px;\n --f7-searchbar-input-border-radius: 24px;\n --f7-searchbar-input-height: 48px;\n --f7-searchbar-inline-input-height: 48px;\n --f7-searchbar-inline-input-border-radius: 24px;\n --f7-searchbar-input-padding-horizontal: 16px;\n --f7-searchbar-inline-input-padding-horizontal: 16px;\n --f7-searchbar-backdrop-bg-color: rgba(0, 0, 0, 0.25);\n --f7-searchbar-in-page-content-margin: 16px 0;\n --f7-searchbar-in-page-content-box-shadow: none;\n --f7-searchbar-in-page-content-border-radius: 24px;\n --f7-searchbar-in-page-content-input-border-radius: 24px;\n --f7-searchbar-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-searchbar-link-color: var(--f7-md-on-surface);\n --f7-searchbar-search-icon-color: var(--f7-md-on-surface);\n --f7-searchbar-input-clear-button-color: var(--f7-md-on-surface);\n --f7-searchbar-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-searchbar-input-bg-color: var(--f7-md-secondary-container);\n --f7-searchbar-input-text-color: var(--f7-md-on-surface);\n}\n.searchbar {\n --f7-link-highlight-color: var(--f7-link-highlight-black);\n width: 100%;\n position: relative;\n z-index: 200;\n height: var(--f7-searchbar-height);\n background-color: var(--f7-searchbar-bg-color, var(--f7-bars-bg-color));\n}\n.dark .searchbar {\n --f7-link-highlight-color: var(--f7-link-highlight-white);\n}\n.searchbar input[type='search']::-webkit-search-decoration {\n display: none;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .searchbar {\n background-color: rgba(var(--f7-searchbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.ios .subnavbar .searchbar {\n background-color: transparent;\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n}\n.ios .subnavbar .searchbar:after {\n display: none !important;\n}\n.searchbar.no-outline:after {\n display: none !important;\n}\n.searchbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-searchbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.page > .searchbar:not(.searchbar-inline) {\n z-index: 600;\n}\n.searchbar input[type='text'],\n.searchbar input[type='search'] {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n display: block;\n border: var(--f7-searchbar-input-border-width) solid var(--f7-searchbar-input-border-color);\n -webkit-appearance: none;\n appearance: none;\n font-family: inherit;\n font-weight: normal;\n color: var(--f7-searchbar-input-text-color);\n font-size: var(--f7-searchbar-input-font-size);\n background-color: var(--f7-searchbar-input-bg-color);\n border-radius: var(--f7-searchbar-input-border-radius);\n position: relative;\n padding: 0;\n padding-left: calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px));\n padding-right: calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-right, 0px));\n}\n.searchbar input[type='text']::placeholder,\n.searchbar input[type='search']::placeholder {\n color: var(--f7-searchbar-placeholder-color);\n opacity: 1;\n}\n.searchbar input::-webkit-search-cancel-button {\n -webkit-appearance: none;\n appearance: none;\n}\n.searchbar .searchbar-input-wrap {\n flex-shrink: 1;\n width: 100%;\n height: var(--f7-searchbar-input-height);\n position: relative;\n}\n.searchbar a {\n color: var(--f7-searchbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.page > .searchbar:not(.searchbar-inline) {\n position: absolute;\n left: 0;\n top: 0;\n}\n.page-content .searchbar:not(.searchbar-inline) {\n border-radius: var(--f7-searchbar-in-page-content-border-radius);\n margin: var(--f7-searchbar-in-page-content-margin);\n width: auto;\n box-shadow: var(--f7-searchbar-in-page-content-box-shadow);\n}\n.page-content .searchbar:not(.searchbar-inline) .searchbar-inner,\n.page-content .searchbar:not(.searchbar-inline) input[type='text'],\n.page-content .searchbar:not(.searchbar-inline) input[type='search'] {\n border-radius: var(--f7-searchbar-in-page-content-input-border-radius, var(--f7-searchbar-input-border-radius));\n}\n.searchbar .input-clear-button {\n color: var(--f7-searchbar-input-clear-button-color, var(--f7-input-clear-button-color));\n}\n.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-searchbar-height);\n position: absolute;\n transition-duration: 300ms;\n pointer-events: none;\n}\n.navbar .searchbar-expandable {\n background: transparent;\n}\n.navbar .searchbar-expandable:after {\n display: none !important;\n}\n.navbar .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar .searchbar.searchbar-expandable .searchbar-inner {\n top: var(--f7-safe-area-top);\n height: calc(100% - var(--f7-safe-area-top));\n}\n.toolbar .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-toolbar-height);\n}\n.subnavbar .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-subnavbar-height);\n}\n.tabbar-icons .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-tabbar-icons-height);\n}\n.searchbar-inner {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n padding: 0 calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left));\n}\n.searchbar-disable-button {\n cursor: pointer;\n pointer-events: none;\n -webkit-appearance: none;\n appearance: none;\n background: none;\n border: none;\n outline: 0;\n padding: 0;\n margin: 0;\n width: auto;\n opacity: 0;\n}\n.searchbar-icon {\n pointer-events: none;\n background-position: center;\n background-repeat: no-repeat;\n}\n.searchbar-icon:after {\n color: var(--f7-searchbar-search-icon-color);\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n.searchbar-backdrop {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 100;\n opacity: 0;\n pointer-events: none;\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n background: var(--f7-searchbar-backdrop-bg-color);\n}\n.searchbar-backdrop.searchbar-backdrop-in {\n opacity: 1;\n pointer-events: auto;\n}\n.page-content > .searchbar-backdrop {\n position: fixed;\n}\n.searchbar-not-found {\n display: none;\n}\n.hidden-by-searchbar,\n.list .hidden-by-searchbar,\n.list.li.hidden-by-searchbar,\n.list li.hidden-by-searchbar {\n display: none !important;\n}\n.navbar.with-searchbar-expandable-enabled-no-transition,\n.navbar.with-searchbar-expandable-enabled-no-transition {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar.with-searchbar-expandable-enabled,\n.navbar.with-searchbar-expandable-enabled {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar.with-searchbar-expandable-enabled .navbar-bg,\n.navbar.with-searchbar-expandable-enabled .navbar-bg,\n.navbar.with-searchbar-expandable-enabled .title-large,\n.navbar.with-searchbar-expandable-enabled .title-large,\n.navbar.with-searchbar-expandable-enabled .title-large-text,\n.navbar.with-searchbar-expandable-enabled .title-large-text {\n transition-duration: 300ms;\n}\n.navbar.with-searchbar-expandable-closing .navbar-bg,\n.navbar.with-searchbar-expandable-closing .navbar-bg,\n.navbar.with-searchbar-expandable-closing .title-large,\n.navbar.with-searchbar-expandable-closing .title-large,\n.navbar.with-searchbar-expandable-closing .title-large-text,\n.navbar.with-searchbar-expandable-closing .title-large-text {\n transition-duration: 300ms;\n}\n.page-content.with-searchbar-expandable-enabled {\n height: calc(100% + var(--f7-navbar-large-title-height));\n transform: translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n transition-duration: 300ms;\n transition-property: transform;\n}\n.page-content.with-searchbar-expandable-closing {\n transition-duration: 300ms;\n}\n.navbar ~ .page:not(.no-navbar) > .searchbar,\n.navbars ~ .page:not(.no-navbar) > .searchbar,\n.page > .navbar ~ .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ .page-with-navbar-large:not(.no-navbar) .searchbar,\n.navbars ~ .page-with-navbar-large:not(.no-navbar) .searchbar,\n.page-with-navbar-large .navbar ~ .searchbar,\n.page-with-navbar-large .navbar ~ * .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));\n transform: translate3d(0, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.navbars ~ .page-with-navbar-large:not(.no-navbar) .page-content .searchbar,\n.page-with-navbar-large .page-content .searchbar {\n top: 0;\n transform: none;\n}\n.searchbar ~ * {\n --f7-page-searchbar-offset: var(--f7-searchbar-height);\n}\n.page > .toolbar-top ~ .searchbar,\n.ios .page > .toolbar-top-ios ~ .searchbar,\n.md .page > .toolbar-top-md ~ .searchbar {\n top: var(--f7-toolbar-height);\n}\n.page > .tabbar-icons.toolbar-top ~ .searchbar,\n.ios .page > .tabbar-icons.toolbar-top-ios ~ .searchbar,\n.md .page > .tabbar-icons.toolbar-top-md ~ .searchbar {\n top: var(--f7-tabbar-icons-height);\n}\n.page > .navbar ~ .toolbar-top ~ .searchbar,\n.ios .page > .navbar ~ .toolbar-top-ios ~ .searchbar,\n.md .page > .navbar ~ .toolbar-top-md ~ .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top));\n}\n.page > .navbar ~ .tabbar-icons.toolbar-top ~ .searchbar,\n.ios .page > .navbar ~ .tabbar-icons.toolbar-top-ios ~ .searchbar,\n.md .page > .navbar ~ .tabbar-icons.toolbar-top-md ~ .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top));\n}\n.searchbar.searchbar-inline {\n width: auto;\n height: auto;\n background-color: transparent;\n background-image: none;\n}\n.searchbar.searchbar-inline:after,\n.searchbar.searchbar-inline:before {\n display: none !important;\n}\n.searchbar.searchbar-inline .searchbar-input-wrap {\n height: var(--f7-searchbar-inline-input-height, var(--f7-searchbar-input-height));\n}\n.searchbar.searchbar-inline .searchbar-inner {\n padding: 0;\n position: static;\n width: auto;\n height: auto;\n}\n.searchbar.searchbar-inline input[type='text'],\n.searchbar.searchbar-inline input[type='search'] {\n font-size: var(--f7-searchbar-inline-input-font-size, var(--f7-searchbar-input-font-size));\n border-radius: var(--f7-searchbar-inline-input-border-radius, var(--f7-searchbar-input-border-radius));\n padding-left: calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-left, 0px));\n padding-right: calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-right, 0px));\n}\n.ios .searchbar input[type='search'],\n.ios .searchbar input[type='text'] {\n z-index: 30;\n}\n.ios .searchbar .input-clear-button {\n z-index: 40;\n right: 7px;\n}\n.ios .searchbar-icon {\n width: 13px;\n height: 13px;\n position: absolute;\n top: 50%;\n margin-top: -6px;\n z-index: 40;\n left: 8px;\n}\n.ios .searchbar-icon:after {\n content: 'search_ios';\n line-height: 13px;\n}\n.ios .searchbar-disable-button {\n font-size: 17px;\n flex-shrink: 0;\n transform: translate3d(0, 0, 0);\n transition-duration: 300ms;\n color: var(--f7-searchbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n display: none;\n}\n.ios .searchbar-disable-button.active-state {\n transition-duration: 0ms;\n opacity: 0.3 !important;\n}\n.ios .searchbar-enabled .searchbar-disable-button {\n pointer-events: auto;\n opacity: 1;\n margin-left: 8px;\n}\n.ios .searchbar:not(.searchbar-enabled) .searchbar-disable-button {\n transition-duration: 300ms !important;\n}\n.ios .searchbar-expandable {\n left: 0;\n bottom: 0;\n opacity: 1;\n width: 100%;\n height: 0%;\n transform: translate3d(0, 0, 0);\n overflow: hidden;\n}\n.ios .searchbar-expandable .searchbar-disable-button {\n margin-left: 8px;\n opacity: 1;\n display: block;\n}\n.ios .searchbar-expandable .searchbar-inner {\n height: var(--f7-searchbar-expandable-size);\n}\n.ios .navbar.with-searchbar-expandable-enabled .navbar-bg,\n.ios .navbar.with-searchbar-expandable-closing .navbar-bg {\n transition-property: transform, opacity;\n}\n.ios .navbar.with-searchbar-expandable-enabled .navbar-bg,\n.ios .navbar.with-searchbar-expandable-closing .navbar-bg,\n.ios .navbar.with-searchbar-expandable-enabled .left,\n.ios .navbar.with-searchbar-expandable-closing .left,\n.ios .navbar.with-searchbar-expandable-enabled .title,\n.ios .navbar.with-searchbar-expandable-closing .title,\n.ios .navbar.with-searchbar-expandable-enabled .right,\n.ios .navbar.with-searchbar-expandable-closing .right {\n transition-duration: 300ms;\n}\n.ios .navbar.with-searchbar-expandable-enabled .left,\n.ios .navbar.with-searchbar-expandable-enabled-no-transition .left,\n.ios .navbar.with-searchbar-expandable-enabled .title,\n.ios .navbar.with-searchbar-expandable-enabled-no-transition .title,\n.ios .navbar.with-searchbar-expandable-enabled .right,\n.ios .navbar.with-searchbar-expandable-enabled-no-transition .right {\n transform: translateY(calc(-1 * var(--f7-navbar-height)));\n opacity: 0 !important;\n}\n.ios .searchbar-expandable.searchbar-enabled {\n opacity: 1;\n height: var(--f7-searchbar-expandable-size);\n pointer-events: auto;\n}\n.md .searchbar-icon,\n.md .searchbar-disable-button {\n position: absolute;\n top: 50%;\n transition-duration: 300ms;\n}\n.md .searchbar-icon {\n width: 48px;\n height: 48px;\n left: 0;\n top: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n left: var(--f7-safe-area-left);\n}\n.md .searchbar-icon:after {\n width: auto;\n height: auto;\n content: 'search_md';\n line-height: 1.2;\n}\n.md .searchbar-disable-button {\n width: 48px;\n height: 48px;\n transform: rotate(-90deg) scale(0.5);\n font-size: 0 !important;\n display: block;\n margin-top: -24px;\n color: var(--f7-searchbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n left: calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left));\n}\n.md .searchbar-disable-button:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n line-height: 48px;\n content: 'arrow_left_md';\n}\n.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-disable-button {\n transform: rotate(0deg) scale(1);\n pointer-events: auto;\n opacity: 1;\n}\n.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-icon {\n opacity: 0;\n transform: rotate(90deg) scale(0.5);\n}\n.md .searchbar {\n --f7-searchbar-input-extra-padding-left: 34px;\n}\n.md .searchbar .input-clear-button {\n width: 48px;\n height: 48px;\n margin-top: -24px;\n right: 0;\n}\n.md .searchbar .input-clear-button:after {\n line-height: 48px;\n content: 'delete_round_md';\n opacity: 1;\n}\n.md .searchbar .input-clear-button:before {\n display: none;\n}\n.md .searchbar-inline {\n --f7-searchbar-input-extra-padding-left: 32px;\n}\n.md .page > .searchbar,\n.md .subnavbar .searchbar,\n.md .searchbar-expandable {\n --f7-searchbar-input-extra-padding-left: 34px;\n}\n.md .page > .searchbar .searchbar-disable-button,\n.md .subnavbar .searchbar .searchbar-disable-button,\n.md .searchbar-expandable .searchbar-disable-button {\n left: calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left));\n}\n.md .page > .searchbar .searchbar-icon,\n.md .subnavbar .searchbar .searchbar-icon,\n.md .searchbar-expandable .searchbar-icon {\n left: var(--f7-safe-area-left);\n}\n.md .searchbar-expandable {\n --f7-searchbar-inner-padding-left: 4px;\n --f7-searchbar-inner-padding-right: 4px;\n height: var(--f7-searchbar-expandable-size);\n opacity: 0;\n bottom: 0;\n border-radius: calc(var(--f7-searchbar-expandable-size));\n width: calc(var(--f7-searchbar-expandable-size));\n margin-top: calc(var(--f7-searchbar-expandable-size) * -1 / 2);\n transform: translate3d(0px, 0px, 0px);\n background-color: var(--f7-searchbar-input-bg-color);\n left: 100%;\n margin-left: calc(var(--f7-searchbar-expandable-size) * -1);\n}\n.md .searchbar-expandable.searchbar-enabled {\n width: 100%;\n border-radius: 0;\n opacity: 1;\n pointer-events: auto;\n margin-top: 0;\n left: 0;\n margin-left: 0;\n}\n/* === Messages === */\n:root {\n --f7-message-text-header-opacity: 0.65;\n --f7-message-text-header-font-size: 12px;\n --f7-message-text-footer-opacity: 0.65;\n --f7-message-text-footer-font-size: 12px;\n --f7-message-bubble-line-height: 1.2;\n --f7-message-header-font-size: 12px;\n --f7-message-footer-font-size: 11px;\n --f7-message-name-font-size: 12px;\n --f7-message-name-font-weight: inherit;\n --f7-message-avatar-border-radius: 50%;\n --f7-messages-title-font-weight: inherit;\n --f7-message-typing-indicator-bg-color: #000;\n}\n:root .dark,\n:root.dark {\n --f7-message-typing-indicator-bg-color: #fff;\n}\n.ios {\n --f7-message-text-header-text-color: inherit;\n --f7-message-text-footer-text-color: inherit;\n --f7-messages-title-font-size: 11px;\n --f7-message-avatar-size: 29px;\n --f7-message-margin: 10px;\n --f7-message-bubble-min-height: 32px;\n --f7-message-bubble-font-size: 17px;\n --f7-message-bubble-border-radius: 16px;\n --f7-message-bubble-padding-vertical: 6px;\n --f7-message-bubble-padding-horizontal: 16px;\n --f7-message-typing-indicator-opacity: 0.35;\n /*\n --f7-message-sent-bg-color: var(--f7-theme-color);\n */\n --f7-message-sent-text-color: #fff;\n --f7-messages-content-bg-color: #fff;\n --f7-message-received-text-color: #000;\n --f7-message-received-bg-color: #e5e5ea;\n --f7-messages-title-text-color: rgba(0, 0, 0, 0.45);\n --f7-message-header-text-color: rgba(0, 0, 0, 0.45);\n --f7-message-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-message-name-text-color: rgba(0, 0, 0, 0.45);\n}\n.ios .dark,\n.ios.dark {\n --f7-message-received-bg-color: #252525;\n --f7-message-received-text-color: #fff;\n --f7-messages-content-bg-color: transparent;\n --f7-messages-title-text-color: rgba(255, 255, 255, 0.54);\n --f7-message-header-text-color: rgba(255, 255, 255, 0.54);\n --f7-message-name-text-color: rgba(255, 255, 255, 0.54);\n --f7-message-footer-text-color: rgba(255, 255, 255, 0.54);\n}\n.md {\n --f7-messages-content-bg-color: transparent;\n --f7-messages-title-font-size: 12px;\n --f7-message-avatar-size: 32px;\n --f7-message-margin: 16px;\n --f7-message-bubble-min-height: 40px;\n --f7-message-bubble-font-size: 16px;\n --f7-message-bubble-border-radius: 20px;\n --f7-message-bubble-padding-vertical: 10px;\n --f7-message-bubble-padding-horizontal: 16px;\n --f7-message-typing-indicator-opacity: 0.6;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-message-sent-bg-color: var(--f7-md-primary);\n --f7-message-sent-text-color: var(--f7-md-on-primary);\n --f7-message-received-bg-color: var(--f7-md-surface-variant);\n --f7-message-received-text-color: var(--f7-md-on-surface);\n --f7-message-text-header-text-color: var(--f7-md-on-surface-variant);\n --f7-message-text-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-messages-title-text-color: var(--f7-md-on-surface-variant);\n --f7-message-header-text-color: var(--f7-md-on-surface-variant);\n --f7-message-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-message-name-text-color: var(--f7-md-on-surface-variant);\n}\n.messages-content,\n.messages {\n background: var(--f7-messages-content-bg-color);\n}\n.messages {\n display: flex;\n flex-direction: column;\n min-height: 100%;\n position: relative;\n z-index: 1;\n}\n.messages-title,\n.message {\n margin-top: var(--f7-message-margin);\n}\n.messages-title:last-child,\n.message:last-child {\n margin-bottom: var(--f7-message-margin);\n}\n.messages-title {\n text-align: center;\n width: 100%;\n line-height: 1;\n color: var(--f7-messages-title-text-color);\n font-size: var(--f7-messages-title-font-size);\n font-weight: var(--f7-messages-title-font-weight);\n}\n.message {\n max-width: 70%;\n box-sizing: border-box;\n display: flex;\n align-items: flex-end;\n position: relative;\n z-index: 1;\n transform: translate3d(0, 0, 0);\n}\n.message-avatar {\n border-radius: var(--f7-message-avatar-border-radius);\n position: relative;\n background-size: cover;\n align-self: flex-end;\n flex-shrink: 0;\n width: var(--f7-message-avatar-size);\n height: var(--f7-message-avatar-size);\n}\n.message-content {\n position: relative;\n display: flex;\n flex-direction: column;\n}\n.message-header,\n.message-footer,\n.message-name {\n line-height: 1;\n}\n.message-header {\n color: var(--f7-message-header-text-color);\n font-size: var(--f7-message-header-font-size);\n}\n.message-footer {\n color: var(--f7-message-footer-text-color);\n font-size: var(--f7-message-footer-font-size);\n margin-bottom: -1em;\n}\n.message-name {\n color: var(--f7-message-name-text-color);\n font-size: var(--f7-message-name-font-size);\n font-weight: var(--f7-message-name-font-weight);\n}\n.message-bubble {\n box-sizing: border-box;\n word-break: break-word;\n display: flex;\n flex-direction: column;\n position: relative;\n line-height: var(--f7-message-bubble-line-height);\n font-size: var(--f7-message-bubble-font-size);\n border-radius: var(--f7-message-bubble-border-radius);\n padding: var(--f7-message-bubble-padding-vertical) var(--f7-message-bubble-padding-horizontal);\n min-height: var(--f7-message-bubble-min-height);\n}\n.message-image img {\n display: block;\n max-width: 100%;\n height: auto;\n width: auto;\n}\n.message-text-header,\n.message-text-footer {\n line-height: 1;\n}\n.message-text-header {\n color: var(--f7-message-text-header-text-color);\n opacity: var(--f7-message-text-header-opacity);\n font-size: var(--f7-message-text-header-font-size);\n}\n.message-text-footer {\n color: var(--f7-message-text-footer-text-color);\n opacity: var(--f7-message-text-footer-opacity);\n font-size: var(--f7-message-text-footer-font-size);\n}\n.message-text {\n text-align: left;\n}\n.message-sent {\n text-align: right;\n flex-direction: row-reverse;\n align-self: flex-end;\n}\n.message-sent .message-bubble {\n color: var(--f7-message-sent-text-color);\n background: var(--f7-message-sent-bg-color, var(--f7-theme-color));\n}\n.message-sent .message-content {\n align-items: flex-end;\n}\n.message-received {\n flex-direction: row;\n}\n.message-received .message-bubble {\n color: var(--f7-message-received-text-color);\n background: var(--f7-message-received-bg-color);\n}\n.message-received .message-content {\n align-items: flex-start;\n}\n.message:not(.message-last) .message-avatar {\n opacity: 0;\n}\n.message:not(.message-first) .message-name {\n display: none;\n}\n.message.message-same-name .message-name {\n display: none;\n}\n.message.message-same-header .message-header {\n display: none;\n}\n.message.message-same-footer .message-footer {\n display: none;\n}\n.message-appear-from-bottom {\n animation: message-appear-from-bottom 300ms;\n}\n.message-appear-from-top {\n animation: message-appear-from-top 300ms;\n}\n.message-typing-indicator {\n display: inline-block;\n font-size: 0;\n vertical-align: middle;\n}\n.message-typing-indicator > div {\n display: inline-block;\n position: relative;\n background: var(--f7-message-typing-indicator-bg-color);\n opacity: var(--f7-message-typing-indicator-opacity);\n vertical-align: middle;\n border-radius: 50%;\n}\n@keyframes message-appear-from-bottom {\n from {\n transform: translate3d(0, 100%, 0);\n }\n to {\n transform: translate3d(0, 0, 0);\n }\n}\n@keyframes message-appear-from-top {\n from {\n transform: translate3d(0, -100%, 0);\n }\n to {\n transform: translate3d(0, 0, 0);\n }\n}\n.ios .messages-title b,\n.ios .message-header b,\n.ios .message-footer b,\n.ios .message-name b {\n font-weight: 600;\n}\n.ios .message-header,\n.ios .message-name {\n margin-bottom: 3px;\n}\n.ios .message-footer {\n margin-top: 3px;\n}\n.ios .message-bubble {\n min-width: 48px;\n}\n.ios .message-image {\n margin: var(--f7-message-bubble-padding-vertical) calc(-1 * var(--f7-message-bubble-padding-horizontal));\n}\n.ios .message-image:first-child {\n margin-top: calc(-1 * var(--f7-message-bubble-padding-vertical));\n}\n.ios .message-image:first-child img {\n border-top-left-radius: var(--f7-message-bubble-border-radius);\n border-top-right-radius: var(--f7-message-bubble-border-radius);\n}\n.ios .message-image:last-child {\n margin-bottom: calc(-1 * var(--f7-message-bubble-padding-vertical));\n}\n.ios .message-image:last-child img {\n border-bottom-left-radius: var(--f7-message-bubble-border-radius);\n border-bottom-right-radius: var(--f7-message-bubble-border-radius);\n}\n.ios .message-text-header {\n margin-bottom: 3px;\n}\n.ios .message-text-footer {\n margin-top: 3px;\n}\n.ios .message-received {\n margin-left: calc(10px + var(--f7-safe-area-left));\n}\n.ios .message-received .message-header,\n.ios .message-received .message-footer,\n.ios .message-received .message-name {\n margin-left: var(--f7-message-bubble-padding-horizontal);\n}\n.ios .message-received .message-bubble {\n padding-left: calc(var(--f7-message-bubble-padding-horizontal) + 6px);\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 42% 46% 56%;\n}\n.ios .message-received .message-image {\n margin-left: calc(-1 * (var(--f7-message-bubble-padding-horizontal) + 6px));\n}\n.ios .message-received.message-tail .message-bubble {\n border-radius: var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0;\n}\n.ios .message-received.message-tail:not(.message-typing) .message-bubble {\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 42% 46% 56%;\n}\n.ios .message-received.message-tail:not(.message-typing) .message-bubble .message-image:last-child img {\n border-bottom-left-radius: 0px;\n}\n.ios .message-sent {\n margin-right: calc(10px + var(--f7-safe-area-right));\n}\n.ios .message-sent .message-header,\n.ios .message-sent .message-footer,\n.ios .message-sent .message-name {\n margin-right: var(--f7-message-bubble-padding-horizontal);\n}\n.ios .message-sent .message-bubble {\n padding-right: calc(var(--f7-message-bubble-padding-horizontal) + 6px);\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 56% 46% 42%;\n}\n.ios .message-sent .message-image {\n margin-right: calc(-1 * (var(--f7-message-bubble-padding-horizontal) + 6px));\n}\n.ios .message-sent.message-tail .message-bubble {\n border-radius: var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0 var(--f7-message-bubble-border-radius);\n}\n.ios .message-sent.message-tail .message-bubble {\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 56% 46% 42%;\n}\n.ios .message-sent.message-tail .message-bubble .message-image:last-child img {\n border-bottom-right-radius: 0px;\n}\n.ios .message + .message:not(.message-first) {\n margin-top: 1px;\n}\n.ios .message-received.message-typing .message-content:after,\n.ios .message-received.message-typing .message-content:before {\n content: '';\n position: absolute;\n background: var(--f7-message-received-bg-color);\n border-radius: 50%;\n}\n.ios .message-received.message-typing .message-content:after {\n width: 11px;\n height: 11px;\n left: 4px;\n bottom: 0px;\n}\n.ios .message-received.message-typing .message-content:before {\n width: 6px;\n height: 6px;\n left: -1px;\n bottom: -4px;\n}\n.ios .message-typing-indicator > div {\n width: 9px;\n height: 9px;\n}\n.ios .message-typing-indicator > div + div {\n margin-left: 4px;\n}\n.ios .message-typing-indicator > div:nth-child(1) {\n animation: ios-message-typing-indicator 900ms infinite;\n}\n.ios .message-typing-indicator > div:nth-child(2) {\n animation: ios-message-typing-indicator 900ms 150ms infinite;\n}\n.ios .message-typing-indicator > div:nth-child(3) {\n animation: ios-message-typing-indicator 900ms 300ms infinite;\n}\n@keyframes ios-message-typing-indicator {\n 0% {\n opacity: 0.35;\n }\n 25% {\n opacity: 0.2;\n }\n 50% {\n opacity: 0.2;\n }\n}\n.md .messages-title b,\n.md .message-header b,\n.md .message-footer b,\n.md .message-name b {\n font-weight: 500;\n}\n.md .message-header,\n.md .message-name {\n margin-bottom: 2px;\n}\n.md .message-footer {\n margin-top: 2px;\n}\n.md .message-text-header {\n margin-bottom: 4px;\n}\n.md .message-text-footer {\n margin-top: 4px;\n}\n.md .message-image {\n margin: calc(-1 * var(--f7-message-bubble-padding-vertical)) calc(-1 * var(--f7-message-bubble-padding-horizontal));\n}\n.md .message-image,\n.md .message-image img {\n border-radius: var(--f7-message-bubble-border-radius);\n}\n.md .message-received {\n margin-left: calc(8px + var(--f7-safe-area-left));\n}\n.md .message-received .message-name,\n.md .message-received .message-header,\n.md .message-received .message-footer {\n margin-left: 16px;\n}\n.md .message-received.message-first:not(.message-last) .message-bubble,\n.md .message-received.message-first:not(.message-last) .message-image,\n.md .message-received.message-first:not(.message-last) .message-image img {\n border-bottom-left-radius: 4px;\n}\n.md .message-received.message-last:not(.message-first) .message-bubble,\n.md .message-received.message-last:not(.message-first) .message-image,\n.md .message-received.message-last:not(.message-first) .message-image img {\n border-top-left-radius: 4px;\n}\n.md .message-received:not(.message-last):not(.message-first) .message-bubble,\n.md .message-received:not(.message-last):not(.message-first) .message-image,\n.md .message-received:not(.message-last):not(.message-first) .message-image img {\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.md .message-received .message-avatar + .message-content {\n margin-left: 8px;\n}\n.md .message-sent {\n margin-right: calc(8px + var(--f7-safe-area-right));\n}\n.md .message-sent .message-name,\n.md .message-sent .message-header,\n.md .message-sent .message-footer {\n margin-right: 16px;\n}\n.md .message-sent.message-first:not(.message-last) .message-bubble,\n.md .message-sent.message-first:not(.message-last) .message-image,\n.md .message-sent.message-first:not(.message-last) .message-image img {\n border-bottom-right-radius: 4px;\n}\n.md .message-sent.message-last:not(.message-first) .message-bubble,\n.md .message-sent.message-last:not(.message-first) .message-image,\n.md .message-sent.message-last:not(.message-first) .message-image img {\n border-top-right-radius: 4px;\n}\n.md .message-sent:not(.message-last):not(.message-first) .message-bubble,\n.md .message-sent:not(.message-last):not(.message-first) .message-image,\n.md .message-sent:not(.message-last):not(.message-first) .message-image img {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.md .message-sent .message-avatar + .message-content {\n margin-right: var(--f7-message-bubble-padding-horizontal);\n}\n.md .message + .message:not(.message-first) {\n margin-top: 2px;\n}\n.md .message-typing-indicator > div {\n width: 6px;\n height: 6px;\n}\n.md .message-typing-indicator > div + div {\n margin-left: 6px;\n}\n.md .message-typing-indicator > div:nth-child(1) {\n animation: md-message-typing-indicator 900ms infinite;\n}\n.md .message-typing-indicator > div:nth-child(2) {\n animation: md-message-typing-indicator 900ms 150ms infinite;\n}\n.md .message-typing-indicator > div:nth-child(3) {\n animation: md-message-typing-indicator 900ms 300ms infinite;\n}\n@keyframes md-message-typing-indicator {\n 0% {\n transform: translateY(0%);\n }\n 25% {\n transform: translateY(-5px);\n }\n 50% {\n transform: translateY(0%);\n }\n}\n/* === Messagebar === */\n:root {\n --f7-messagebar-attachments-height: 155px;\n --f7-messagebar-sheet-height: 252px;\n --f7-messagebar-sheet-landscape-height: 192px;\n /*\n --f7-messagebar-inner-padding-left: var(--f7-toolbar-inner-padding-left);\n --f7-messagebar-inner-padding-right: var(--f7-toolbar-inner-padding-right);\n */\n}\n.ios {\n --f7-messagebar-height: 44px;\n --f7-messagebar-font-size: 17px;\n --f7-messagebar-textarea-bg-color: transparent;\n /*\n --f7-messagebar-link-color: var(--f7-theme-color);\n */\n --f7-messagebar-border-color: transparent;\n --f7-messagebar-textarea-border-radius: 17px;\n --f7-messagebar-textarea-padding: 6px 16px;\n --f7-messagebar-textarea-height: 34px;\n --f7-messagebar-textarea-font-size: 17px;\n --f7-messagebar-textarea-line-height: 20px;\n --f7-messagebar-sheet-bg-color: #d1d5da;\n --f7-messagebar-sheet-border-color: transparent;\n --f7-messagebar-attachment-border-radius: 12px;\n --f7-messagebar-attachment-height: 155px;\n --f7-messagebar-attachment-landscape-height: 120px;\n --f7-messagebar-textarea-placeholder-color: rgba(0, 0, 0, 0.4);\n --f7-messagebar-textarea-text-color: #000;\n --f7-messagebar-textarea-border: 1px solid #c8c8cd;\n --f7-messagebar-attachments-border-color: #c8c8cd;\n --f7-messagebar-bg-color: #fff;\n --f7-messagebar-bg-color-rgb: 255, 255, 255;\n}\n.ios .dark,\n.ios.dark {\n --f7-messagebar-textarea-placeholder-color: rgba(255, 255, 255, 0.4);\n --f7-messagebar-textarea-text-color: #fff;\n --f7-messagebar-textarea-border: 1px solid var(--f7-bars-border-color);\n --f7-messagebar-attachments-border-color: var(--f7-bars-border-color);\n --f7-messagebar-bg-color: var(--f7-bars-bg-color);\n --f7-messagebar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n}\n.md {\n --f7-messagebar-height: 64px;\n --f7-messagebar-font-size: 16px;\n --f7-messagebar-textarea-border-radius: 24px;\n --f7-messagebar-textarea-padding: 12px 16px;\n --f7-messagebar-textarea-height: 48px;\n --f7-messagebar-textarea-font-size: 16px;\n --f7-messagebar-textarea-line-height: 22px;\n --f7-messagebar-textarea-border: 1px solid transparent;\n --f7-messagebar-attachment-border-radius: 12px;\n --f7-messagebar-attachment-height: 72px;\n --f7-messagebar-attachment-landscape-height: 72px;\n --f7-messagebar-border-color: transparent;\n --f7-messagebar-attachments-border-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-messagebar-textarea-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-messagebar-textarea-bg-color: var(--f7-md-surface-variant);\n --f7-messagebar-bg-color: var(--f7-md-surface);\n --f7-messagebar-textarea-text-color: var(--f7-md-on-surface);\n --f7-messagebar-sheet-bg-color: var(--f7-md-surface);\n --f7-messagebar-sheet-border-color: var(--f7-md-outline-variant);\n --f7-messagebar-link-color: var(--f7-md-on-surface);\n}\n.messagebar {\n transform: translate3d(0, 0, 0);\n background: var(--f7-messagebar-bg-color);\n height: auto;\n min-height: var(--f7-messagebar-height);\n font-size: var(--f7-messagebar-font-size);\n padding-bottom: var(--f7-safe-area-bottom);\n bottom: 0;\n}\n.messagebar:before {\n content: '';\n position: absolute;\n background-color: var(--f7-messagebar-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .messagebar {\n background-color: rgba(var(--f7-messagebar-bg-color-rgb), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.messagebar.no-outline:before {\n display: none !important;\n}\n.messagebar.toolbar-hidden:after {\n display: none !important;\n}\n.messagebar .toolbar-inner {\n top: auto;\n position: relative;\n height: auto;\n bottom: auto;\n padding-left: calc(var(--f7-messagebar-inner-padding-left, var(--f7-toolbar-inner-padding-left)) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-messagebar-inner-padding-right, var(--f7-toolbar-inner-padding-right)) + var(--f7-safe-area-right));\n}\n.messagebar.messagebar-sheet-visible > .toolbar-inner {\n bottom: 0;\n}\n.messagebar .messagebar-area {\n width: 100%;\n flex-shrink: 1;\n overflow: hidden;\n position: relative;\n}\n.messagebar textarea {\n width: 100%;\n flex-shrink: 1;\n background-color: var(--f7-messagebar-textarea-bg-color);\n border-radius: var(--f7-messagebar-textarea-border-radius);\n padding: var(--f7-messagebar-textarea-padding);\n height: var(--f7-messagebar-textarea-height);\n color: var(--f7-messagebar-textarea-text-color);\n font-size: var(--f7-messagebar-textarea-font-size);\n line-height: var(--f7-messagebar-textarea-line-height);\n border: var(--f7-messagebar-textarea-border);\n}\n.messagebar textarea::placeholder {\n color: var(--f7-messagebar-textarea-placeholder-color);\n}\n.messagebar a.link {\n align-self: flex-end;\n flex-shrink: 0;\n color: var(--f7-messagebar-link-color, var(--f7-theme-color));\n}\n.messagebar-attachments {\n width: 100%;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n font-size: 0;\n white-space: nowrap;\n box-sizing: border-box;\n position: relative;\n}\n.messagebar:not(.messagebar-attachments-visible) .messagebar-attachments {\n display: none;\n}\n.messagebar-attachment {\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n display: inline-block;\n vertical-align: middle;\n white-space: normal;\n height: var(--f7-messagebar-attachment-height);\n position: relative;\n border-radius: var(--f7-messagebar-attachment-border-radius);\n}\n@media (orientation: landscape) {\n .messagebar-attachment {\n height: var(--f7-messagebar-attachment-landscape-height);\n }\n}\n.messagebar-attachment img {\n display: block;\n width: auto;\n height: 100%;\n border-radius: var(--f7-messagebar-attachment-border-radius);\n}\n.messagebar-sheet {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n display: flex;\n flex-wrap: wrap;\n flex-direction: column;\n align-content: flex-start;\n height: var(--f7-messagebar-sheet-height);\n background-color: var(--f7-messagebar-sheet-bg-color);\n border-top: 1px solid var(--f7-messagebar-sheet-border-color);\n padding-left: var(--f7-safe-area-left);\n padding-right: var(--f7-safe-area-right);\n}\n@media (orientation: landscape) {\n .messagebar-sheet {\n height: var(--f7-messagebar-sheet-landscape-height);\n }\n}\n.messagebar-sheet-image {\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n}\n.messagebar-sheet-image > img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n border-radius: inherit;\n transition-duration: 200ms;\n}\n.messagebar-attachment-delete {\n display: block;\n position: absolute;\n border-radius: 50%;\n box-sizing: border-box;\n cursor: pointer;\n}\n.messagebar-attachment-delete:after,\n.messagebar-attachment-delete:before {\n position: absolute;\n content: '';\n left: 50%;\n top: 50%;\n}\n.messagebar-attachment-delete:after {\n transform: rotate(45deg);\n}\n.messagebar-attachment-delete:before {\n transform: rotate(-45deg);\n}\n.messagebar:not(.messagebar-sheet-visible) .messagebar-sheet {\n display: none;\n}\n.messagebar ~ * {\n --f7-page-toolbar-bottom-offset: var(--f7-messagebar-height);\n}\n.ios .messagebar a.link.icon-only:first-child {\n margin-left: -8px;\n}\n.ios .messagebar a.link.icon-only:last-child {\n margin-right: -8px;\n}\n.ios .messagebar a.link:not(.icon-only) + .messagebar-area {\n margin-left: 8px;\n}\n.ios .messagebar .messagebar-area + a.link:not(.icon-only) {\n margin-left: 8px;\n}\n.ios .messagebar-area {\n margin-top: 5px;\n margin-bottom: 5px;\n}\n.ios .messagebar-attachments {\n padding: 5px;\n border-radius: var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;\n border: 1px solid var(--f7-messagebar-attachments-border-color);\n border-bottom: none;\n}\n.ios .messagebar-attachments-visible .messagebar-attachments + textarea {\n border-radius: 0 0 var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius);\n}\n.ios .messagebar-attachment {\n font-size: 14px;\n}\n.ios .messagebar-attachment + .messagebar-attachment {\n margin-left: 8px;\n}\n.ios .messagebar-attachment-delete {\n right: 5px;\n top: 5px;\n width: 20px;\n height: 20px;\n background: #7d7e80;\n border: 2px solid #fff;\n box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);\n}\n.ios .messagebar-attachment-delete:after,\n.ios .messagebar-attachment-delete:before {\n width: 10px;\n height: 2px;\n background: #fff;\n margin-left: -5px;\n margin-top: -1px;\n}\n.ios .messagebar-sheet-image,\n.ios .messagebar-sheet-item {\n box-sizing: border-box;\n flex-shrink: 0;\n margin-top: 1px;\n position: relative;\n overflow: hidden;\n height: calc((var(--f7-messagebar-sheet-height) - 2px) / 2);\n width: calc((var(--f7-messagebar-sheet-height) - 2px) / 2);\n margin-left: 1px;\n}\n@media (orientation: landscape) {\n .ios .messagebar-sheet-image,\n .ios .messagebar-sheet-item {\n width: calc((var(--f7-messagebar-sheet-landscape-height) - 2px) / 2);\n height: calc((var(--f7-messagebar-sheet-landscape-height) - 2px) / 2);\n }\n}\n.ios .messagebar-sheet-image .icon-checkbox,\n.ios .messagebar-sheet-item .icon-checkbox,\n.ios .messagebar-sheet-image .icon-radio,\n.ios .messagebar-sheet-item .icon-radio {\n position: absolute;\n right: 8px;\n bottom: 8px;\n z-index: 1;\n}\n.md .messagebar {\n --f7-toolbar-link-height: var(--f7-messagebar-height);\n}\n.md .messagebar-attachments {\n padding: 16px 16px 0;\n border-bottom: 1px solid var(--f7-messagebar-attachments-border-color);\n}\n.md .messagebar-attachment img {\n width: var(--f7-messagebar-attachment-height);\n height: var(--f7-messagebar-attachment-height);\n object-fit: cover;\n object-position: center;\n}\n.md .messagebar-attachment + .messagebar-attachment {\n margin-left: 16px;\n}\n.md .messagebar-attachments-visible .messagebar-attachments {\n background: var(--f7-messagebar-textarea-bg-color);\n border-radius: var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;\n}\n.md .messagebar-attachments-visible textarea {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.md .messagebar-area {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.md .messagebar-attachment-delete {\n right: -6px;\n top: -6px;\n width: 24px;\n height: 24px;\n background-color: var(--f7-md-inverse-surface);\n border-radius: 24px;\n border: 2px solid var(--f7-messagebar-textarea-bg-color);\n}\n.md .messagebar-attachment-delete:after,\n.md .messagebar-attachment-delete:before {\n width: 12px;\n height: 2px;\n background: var(--f7-messagebar-textarea-bg-color);\n margin-left: -6px;\n margin-top: -1px;\n}\n.md .messagebar-sheet-image,\n.md .messagebar-sheet-item {\n --f7-touch-ripple-color: transparent;\n box-sizing: border-box;\n flex-shrink: 0;\n margin-top: 8px;\n position: relative;\n overflow: hidden;\n height: calc((var(--f7-messagebar-sheet-height) - 24px) / 2);\n width: calc((var(--f7-messagebar-sheet-height) - 24px) / 2);\n border-radius: 4px;\n margin-left: 8px;\n}\n@media (orientation: landscape) {\n .md .messagebar-sheet-image,\n .md .messagebar-sheet-item {\n width: calc((var(--f7-messagebar-sheet-landscape-height) - 8px) / 2);\n height: calc((var(--f7-messagebar-sheet-landscape-height) - 24px) / 2);\n }\n}\n.md .messagebar-sheet-image input:checked ~ img,\n.md .messagebar-sheet-item input:checked ~ img {\n transform: scale(0.85);\n}\n.md .messagebar-sheet-image input:checked ~ .icon-checkbox,\n.md .messagebar-sheet-item input:checked ~ .icon-checkbox,\n.md .messagebar-sheet-image input:checked ~ .icon-radio,\n.md .messagebar-sheet-item input:checked ~ .icon-radio {\n transform: translate(-50%, -50%) scale(1);\n}\n.md .messagebar-sheet-image .icon-checkbox,\n.md .messagebar-sheet-item .icon-checkbox,\n.md .messagebar-sheet-image .icon-radio,\n.md .messagebar-sheet-item .icon-radio {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%) scale(0.85);\n border: none;\n z-index: 1;\n --f7-checkbox-inactive-color: var(--f7-md-surface);\n --f7-checkbox-active-color: var(--f7-md-surface);\n}\n.md .messagebar-sheet-image .icon-checkbox::after,\n.md .messagebar-sheet-item .icon-checkbox::after,\n.md .messagebar-sheet-image .icon-radio::after,\n.md .messagebar-sheet-item .icon-radio::after {\n color: var(--f7-md-on-surface);\n font-size: 18px;\n width: auto;\n height: 100%;\n line-height: 32px;\n left: 0;\n position: static;\n}\n/* === Swiper === */\n/**\n * Swiper 10.2.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: August 17, 2023\n */\n\n/* FONT_START */\n@font-face {\n font-family: 'swiper-icons';\n src: url('data:application/font-woff;charset=utf-8;base64, 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');\n font-weight: 400;\n font-style: normal;\n}\n/* FONT_END */\n:root {\n --swiper-theme-color: #007aff;\n /*\n --swiper-preloader-color: var(--swiper-theme-color);\n --swiper-wrapper-transition-timing-function: initial;\n */\n}\n:host {\n position: relative;\n display: block;\n margin-left: auto;\n margin-right: auto;\n z-index: 1;\n}\n.swiper {\n margin-left: auto;\n margin-right: auto;\n position: relative;\n overflow: hidden;\n overflow: clip;\n list-style: none;\n padding: 0;\n /* Fix of Webkit flickering */\n z-index: 1;\n display: block;\n}\n.swiper-vertical > .swiper-wrapper {\n flex-direction: column;\n}\n.swiper-wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n z-index: 1;\n display: flex;\n transition-property: transform;\n transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial);\n box-sizing: content-box;\n}\n.swiper-android .swiper-slide,\n.swiper-ios .swiper-slide,\n.swiper-wrapper {\n transform: translate3d(0px, 0, 0);\n}\n.swiper-horizontal {\n touch-action: pan-y;\n}\n.swiper-vertical {\n touch-action: pan-x;\n}\n.swiper-slide {\n flex-shrink: 0;\n width: 100%;\n height: 100%;\n position: relative;\n transition-property: transform;\n display: block;\n}\n.swiper-slide-invisible-blank {\n visibility: hidden;\n}\n/* Auto Height */\n.swiper-autoheight,\n.swiper-autoheight .swiper-slide {\n height: auto;\n}\n.swiper-autoheight .swiper-wrapper {\n align-items: flex-start;\n transition-property: transform, height;\n}\n.swiper-backface-hidden .swiper-slide {\n transform: translateZ(0);\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n/* 3D Effects */\n.swiper-3d.swiper-css-mode .swiper-wrapper {\n perspective: 1200px;\n}\n.swiper-3d .swiper-wrapper {\n transform-style: preserve-3d;\n}\n.swiper-3d {\n perspective: 1200px;\n}\n.swiper-3d .swiper-slide,\n.swiper-3d .swiper-cube-shadow {\n transform-style: preserve-3d;\n}\n/* CSS Mode */\n.swiper-css-mode > .swiper-wrapper {\n overflow: auto;\n scrollbar-width: none;\n /* For Firefox */\n -ms-overflow-style: none;\n /* For Internet Explorer and Edge */\n}\n.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar {\n display: none;\n}\n.swiper-css-mode > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: start start;\n}\n.swiper-css-mode.swiper-horizontal > .swiper-wrapper {\n scroll-snap-type: x mandatory;\n}\n.swiper-css-mode.swiper-vertical > .swiper-wrapper {\n scroll-snap-type: y mandatory;\n}\n.swiper-css-mode.swiper-free-mode > .swiper-wrapper {\n scroll-snap-type: none;\n}\n.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: none;\n}\n.swiper-css-mode.swiper-centered > .swiper-wrapper::before {\n content: '';\n flex-shrink: 0;\n order: 9999;\n}\n.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: center center;\n scroll-snap-stop: always;\n}\n.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child {\n margin-inline-start: var(--swiper-centered-offset-before);\n}\n.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before {\n height: 100%;\n min-height: 1px;\n width: var(--swiper-centered-offset-after);\n}\n.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child {\n margin-block-start: var(--swiper-centered-offset-before);\n}\n.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before {\n width: 100%;\n min-width: 1px;\n height: var(--swiper-centered-offset-after);\n}\n/* Slide styles start */\n/* 3D Shadows */\n.swiper-3d .swiper-slide-shadow,\n.swiper-3d .swiper-slide-shadow-left,\n.swiper-3d .swiper-slide-shadow-right,\n.swiper-3d .swiper-slide-shadow-top,\n.swiper-3d .swiper-slide-shadow-bottom,\n.swiper-3d .swiper-slide-shadow,\n.swiper-3d .swiper-slide-shadow-left,\n.swiper-3d .swiper-slide-shadow-right,\n.swiper-3d .swiper-slide-shadow-top,\n.swiper-3d .swiper-slide-shadow-bottom {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 10;\n}\n.swiper-3d .swiper-slide-shadow {\n background: rgba(0, 0, 0, 0.15);\n}\n.swiper-3d .swiper-slide-shadow-left {\n background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-right {\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-top {\n background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-bottom {\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-lazy-preloader {\n width: 42px;\n height: 42px;\n position: absolute;\n left: 50%;\n top: 50%;\n margin-left: -21px;\n margin-top: -21px;\n z-index: 10;\n transform-origin: 50%;\n box-sizing: border-box;\n border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));\n border-radius: 50%;\n border-top-color: transparent;\n}\n.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader,\n.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader {\n animation: swiper-preloader-spin 1s infinite linear;\n}\n.swiper-lazy-preloader-white {\n --swiper-preloader-color: #fff;\n}\n.swiper-lazy-preloader-black {\n --swiper-preloader-color: #000;\n}\n@keyframes swiper-preloader-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n/* Slide styles end */\n.swiper-virtual .swiper-slide {\n -webkit-backface-visibility: hidden;\n transform: translateZ(0);\n}\n.swiper-virtual.swiper-css-mode .swiper-wrapper::after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n pointer-events: none;\n}\n.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after {\n height: 1px;\n width: var(--swiper-virtual-size);\n}\n.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after {\n width: 1px;\n height: var(--swiper-virtual-size);\n}\n:root {\n --swiper-navigation-size: 44px;\n /*\n --swiper-navigation-top-offset: 50%;\n --swiper-navigation-sides-offset: 10px;\n --swiper-navigation-color: var(--swiper-theme-color);\n */\n}\n.swiper-button-prev,\n.swiper-button-next {\n position: absolute;\n top: var(--swiper-navigation-top-offset, 50%);\n width: calc(var(--swiper-navigation-size) / 44 * 27);\n height: var(--swiper-navigation-size);\n margin-top: calc(0px - (var(--swiper-navigation-size) / 2));\n z-index: 10;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--swiper-navigation-color, var(--swiper-theme-color));\n}\n.swiper-button-prev.swiper-button-disabled,\n.swiper-button-next.swiper-button-disabled {\n opacity: 0.35;\n cursor: auto;\n pointer-events: none;\n}\n.swiper-button-prev.swiper-button-hidden,\n.swiper-button-next.swiper-button-hidden {\n opacity: 0;\n cursor: auto;\n pointer-events: none;\n}\n.swiper-navigation-disabled .swiper-button-prev,\n.swiper-navigation-disabled .swiper-button-next {\n display: none !important;\n}\n.swiper-button-prev svg,\n.swiper-button-next svg {\n width: 100%;\n height: 100%;\n object-fit: contain;\n transform-origin: center;\n}\n.swiper-rtl .swiper-button-prev svg,\n.swiper-rtl .swiper-button-next svg {\n transform: rotate(180deg);\n}\n.swiper-button-prev,\n.swiper-rtl .swiper-button-next {\n left: var(--swiper-navigation-sides-offset, 10px);\n right: auto;\n}\n.swiper-button-next,\n.swiper-rtl .swiper-button-prev {\n right: var(--swiper-navigation-sides-offset, 10px);\n left: auto;\n}\n.swiper-button-lock {\n display: none;\n}\n/* Navigation font start */\n.swiper-button-prev:after,\n.swiper-button-next:after {\n font-family: swiper-icons;\n font-size: var(--swiper-navigation-size);\n text-transform: none !important;\n letter-spacing: 0;\n font-variant: initial;\n line-height: 1;\n}\n.swiper-button-prev:after,\n.swiper-rtl .swiper-button-next:after {\n content: 'prev';\n}\n.swiper-button-next,\n.swiper-rtl .swiper-button-prev {\n right: var(--swiper-navigation-sides-offset, 10px);\n left: auto;\n}\n.swiper-button-next:after,\n.swiper-rtl .swiper-button-prev:after {\n content: 'next';\n}\n/* Navigation font end */\n:root {\n /*\n --swiper-pagination-color: var(--swiper-theme-color);\n --swiper-pagination-left: auto;\n --swiper-pagination-right: 8px;\n --swiper-pagination-bottom: 8px;\n --swiper-pagination-top: auto;\n --swiper-pagination-fraction-color: inherit;\n --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25);\n --swiper-pagination-progressbar-size: 4px;\n --swiper-pagination-bullet-size: 8px;\n --swiper-pagination-bullet-width: 8px;\n --swiper-pagination-bullet-height: 8px;\n --swiper-pagination-bullet-border-radius: 50%;\n --swiper-pagination-bullet-inactive-color: #000;\n --swiper-pagination-bullet-inactive-opacity: 0.2;\n --swiper-pagination-bullet-opacity: 1;\n --swiper-pagination-bullet-horizontal-gap: 4px;\n --swiper-pagination-bullet-vertical-gap: 6px;\n */\n}\n.swiper-pagination {\n position: absolute;\n text-align: center;\n transition: 300ms opacity;\n transform: translate3d(0, 0, 0);\n z-index: 10;\n}\n.swiper-pagination.swiper-pagination-hidden {\n opacity: 0;\n}\n.swiper-pagination-disabled > .swiper-pagination,\n.swiper-pagination.swiper-pagination-disabled {\n display: none !important;\n}\n/* Common Styles */\n.swiper-pagination-fraction,\n.swiper-pagination-custom,\n.swiper-horizontal > .swiper-pagination-bullets,\n.swiper-pagination-bullets.swiper-pagination-horizontal {\n bottom: var(--swiper-pagination-bottom, 8px);\n top: var(--swiper-pagination-top, auto);\n left: 0;\n width: 100%;\n}\n/* Bullets */\n.swiper-pagination-bullets-dynamic {\n overflow: hidden;\n font-size: 0;\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transform: scale(0.33);\n position: relative;\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {\n transform: scale(1);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {\n transform: scale(1);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {\n transform: scale(0.66);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {\n transform: scale(0.33);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {\n transform: scale(0.66);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {\n transform: scale(0.33);\n}\n.swiper-pagination-bullet {\n width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px));\n height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px));\n display: inline-block;\n border-radius: var(--swiper-pagination-bullet-border-radius, 50%);\n background: var(--swiper-pagination-bullet-inactive-color, #000);\n opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2);\n}\nbutton.swiper-pagination-bullet {\n border: none;\n margin: 0;\n padding: 0;\n box-shadow: none;\n -webkit-appearance: none;\n appearance: none;\n}\n.swiper-pagination-clickable .swiper-pagination-bullet {\n cursor: pointer;\n}\n.swiper-pagination-bullet:only-child {\n display: none !important;\n}\n.swiper-pagination-bullet-active {\n opacity: var(--swiper-pagination-bullet-opacity, 1);\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\n}\n.swiper-vertical > .swiper-pagination-bullets,\n.swiper-pagination-vertical.swiper-pagination-bullets {\n right: var(--swiper-pagination-right, 8px);\n left: var(--swiper-pagination-left, auto);\n top: 50%;\n transform: translate3d(0px, -50%, 0);\n}\n.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet,\n.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet {\n margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0;\n display: block;\n}\n.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,\n.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\n top: 50%;\n transform: translateY(-50%);\n width: 8px;\n}\n.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,\n.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n display: inline-block;\n transition: 200ms transform, 200ms top;\n}\n.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet,\n.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet {\n margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px);\n}\n.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,\n.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\n left: 50%;\n transform: translateX(-50%);\n white-space: nowrap;\n}\n.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,\n.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transition: 200ms transform, 200ms left;\n}\n.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transition: 200ms transform, 200ms right;\n}\n/* Fraction */\n.swiper-pagination-fraction {\n color: var(--swiper-pagination-fraction-color, inherit);\n}\n/* Progress */\n.swiper-pagination-progressbar {\n background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25));\n position: absolute;\n}\n.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n transform: scale(0);\n transform-origin: left top;\n}\n.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n transform-origin: right top;\n}\n.swiper-horizontal > .swiper-pagination-progressbar,\n.swiper-pagination-progressbar.swiper-pagination-horizontal,\n.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,\n.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite {\n width: 100%;\n height: var(--swiper-pagination-progressbar-size, 4px);\n left: 0;\n top: 0;\n}\n.swiper-vertical > .swiper-pagination-progressbar,\n.swiper-pagination-progressbar.swiper-pagination-vertical,\n.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,\n.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite {\n width: var(--swiper-pagination-progressbar-size, 4px);\n height: 100%;\n left: 0;\n top: 0;\n}\n.swiper-pagination-lock {\n display: none;\n}\n:root {\n /*\n --swiper-scrollbar-border-radius: 10px;\n --swiper-scrollbar-top: auto;\n --swiper-scrollbar-bottom: 4px;\n --swiper-scrollbar-left: auto;\n --swiper-scrollbar-right: 4px;\n --swiper-scrollbar-sides-offset: 1%;\n --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1);\n --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5);\n --swiper-scrollbar-size: 4px;\n */\n}\n.swiper-scrollbar {\n border-radius: var(--swiper-scrollbar-border-radius, 10px);\n position: relative;\n -ms-touch-action: none;\n background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1));\n}\n.swiper-scrollbar-disabled > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-disabled {\n display: none !important;\n}\n.swiper-horizontal > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-horizontal {\n position: absolute;\n left: var(--swiper-scrollbar-sides-offset, 1%);\n bottom: var(--swiper-scrollbar-bottom, 4px);\n top: var(--swiper-scrollbar-top, auto);\n z-index: 50;\n height: var(--swiper-scrollbar-size, 4px);\n width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%));\n}\n.swiper-vertical > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-vertical {\n position: absolute;\n left: var(--swiper-scrollbar-left, auto);\n right: var(--swiper-scrollbar-right, 4px);\n top: var(--swiper-scrollbar-sides-offset, 1%);\n z-index: 50;\n width: var(--swiper-scrollbar-size, 4px);\n height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%));\n}\n.swiper-scrollbar-drag {\n height: 100%;\n width: 100%;\n position: relative;\n background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5));\n border-radius: var(--swiper-scrollbar-border-radius, 10px);\n left: 0;\n top: 0;\n}\n.swiper-scrollbar-cursor-drag {\n cursor: move;\n}\n.swiper-scrollbar-lock {\n display: none;\n}\n/* Zoom container styles start */\n.swiper-zoom-container {\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n}\n.swiper-zoom-container > img,\n.swiper-zoom-container > svg,\n.swiper-zoom-container > canvas {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n}\n/* Zoom container styles end */\n.swiper-slide-zoomed {\n cursor: move;\n touch-action: none;\n}\n/* a11y */\n.swiper .swiper-notification {\n position: absolute;\n left: 0;\n top: 0;\n pointer-events: none;\n opacity: 0;\n z-index: -1000;\n}\n.swiper-free-mode > .swiper-wrapper {\n transition-timing-function: ease-out;\n margin: 0 auto;\n}\n.swiper-grid > .swiper-wrapper {\n flex-wrap: wrap;\n}\n.swiper-grid-column > .swiper-wrapper {\n flex-wrap: wrap;\n flex-direction: column;\n}\n.swiper-fade.swiper-free-mode .swiper-slide {\n transition-timing-function: ease-out;\n}\n.swiper-fade .swiper-slide {\n pointer-events: none;\n transition-property: opacity;\n}\n.swiper-fade .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-fade .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-fade .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-cube {\n overflow: visible;\n}\n.swiper-cube .swiper-slide {\n pointer-events: none;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n z-index: 1;\n visibility: hidden;\n transform-origin: 0 0;\n width: 100%;\n height: 100%;\n}\n.swiper-cube .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-cube.swiper-rtl .swiper-slide {\n transform-origin: 100% 0;\n}\n.swiper-cube .swiper-slide-active,\n.swiper-cube .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-cube .swiper-slide-active,\n.swiper-cube .swiper-slide-next,\n.swiper-cube .swiper-slide-prev {\n pointer-events: auto;\n visibility: visible;\n}\n.swiper-cube .swiper-cube-shadow {\n position: absolute;\n left: 0;\n bottom: 0px;\n width: 100%;\n height: 100%;\n opacity: 0.6;\n z-index: 0;\n}\n.swiper-cube .swiper-cube-shadow:before {\n content: '';\n background: #000;\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n filter: blur(50px);\n}\n.swiper-cube .swiper-slide-next + .swiper-slide {\n pointer-events: auto;\n visibility: visible;\n}\n/* Cube slide shadows start */\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top,\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right {\n z-index: 0;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n/* Cube slide shadows end */\n.swiper-flip {\n overflow: visible;\n}\n.swiper-flip .swiper-slide {\n pointer-events: none;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n z-index: 1;\n}\n.swiper-flip .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-flip .swiper-slide-active,\n.swiper-flip .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n/* Flip slide shadows start */\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top,\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right {\n z-index: 0;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n/* Flip slide shadows end */\n.swiper-creative .swiper-slide {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n overflow: hidden;\n transition-property: transform, opacity, height;\n}\n.swiper-cards {\n overflow: visible;\n}\n.swiper-cards .swiper-slide {\n transform-origin: center bottom;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n overflow: hidden;\n}\n\n/* === Photo Browser === */\n:root {\n --f7-photobrowser-bg-color: #fff;\n --f7-photobrowser-bars-bg-color: rgba(var(--f7-bars-bg-color-rgb), 0.95);\n --f7-photobrowser-bars-text-color: var(--f7-bars-text-color);\n --f7-photobrowser-bars-link-color: var(--f7-bars-link-color);\n --f7-photobrowser-caption-font-size: 13px;\n --f7-photobrowser-caption-font-weight: 500;\n --f7-photobrowser-caption-light-text-color: #000;\n --f7-photobrowser-caption-dark-text-color: #fff;\n --f7-photobrowser-exposed-bg-color: #000;\n --f7-photobrowser-dark-bg-color: #000;\n --f7-photobrowser-dark-bars-bg-color: rgba(27, 27, 27, 0.8);\n --f7-photobrowser-dark-bars-text-color: #fff;\n --f7-photobrowser-dark-bars-link-color: #fff;\n}\n.photo-browser {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 400;\n}\n.photo-browser-standalone.modal-in {\n transition-duration: 0ms;\n animation: photo-browser-in 400ms;\n}\n.photo-browser-standalone.modal-out {\n transition-duration: 0ms;\n animation: photo-browser-out 400ms !important;\n}\n.photo-browser-standalone.modal-out.swipe-close-to-bottom,\n.photo-browser-standalone.modal-out.swipe-close-to-top {\n animation: none !important;\n}\n.photo-browser-standalone.photo-browser-transitioning {\n transition: 400ms;\n animation: none !important;\n}\n.photo-browser-popup.modal-out.swipe-close-to-bottom,\n.photo-browser-popup.modal-out.swipe-close-to-top {\n transition-duration: 300ms;\n}\n.photo-browser-popup.modal-out.swipe-close-to-bottom {\n transform: translate3d(0, 100vh, 0);\n}\n.photo-browser-popup.modal-out.swipe-close-to-top {\n transform: translate3d(0, -100vh, 0);\n}\n.photo-browser-page {\n background: none;\n}\n.photo-browser-page .toolbar {\n transform: none;\n}\n.photo-browser-popup {\n background: none;\n}\n.photo-browser-of {\n margin: 0 5px;\n}\n.photo-browser-captions {\n pointer-events: none;\n position: absolute;\n left: 0;\n width: 100%;\n bottom: var(--f7-safe-area-bottom);\n z-index: 10;\n opacity: 1;\n transition-duration: 400ms;\n}\n.photo-browser-captions.photo-browser-captions-exposed {\n opacity: 0;\n}\n.toolbar ~ .toolbar.photo-browser-thumbs {\n bottom: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n}\n.page ~ .photo-browser-page:not(.photo-browser-exposed) .toolbar ~ .toolbar.photo-browser-thumbs,\n.photo-browser-popup:not(.photo-browser-exposed) .toolbar ~ .toolbar.photo-browser-thumbs,\n.photo-browser-standalone:not(.photo-browser-exposed) .toolbar ~ .toolbar.photo-browser-thumbs {\n height: var(--f7-toolbar-height);\n}\n.photo-browser-exposed .toolbar ~ .toolbar.photo-browser-thumbs {\n transform: translate3d(0, calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom, 0)), 0);\n}\n.photo-browser-exposed .toolbar ~ .toolbar.photo-browser-thumbs .swiper {\n height: calc(100% - var(--f7-safe-area-bottom, 0));\n}\n.navbar + .toolbar.photo-browser-thumbs .swiper {\n height: calc(100% - var(--f7-safe-area-bottom, 0));\n}\n.toolbar ~ .photo-browser-captions {\n bottom: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n transform: translate3d(0, 0px, 0);\n}\n.toolbar ~ .photo-browser-captions.photo-browser-captions-exposed {\n transform: translate3d(0, 0px, 0);\n}\n.toolbar ~ .toolbar ~ .photo-browser-captions {\n bottom: calc(var(--f7-toolbar-height) * 2 + var(--f7-safe-area-bottom));\n}\n.toolbar ~ .toolbar ~ .photo-browser-captions.photo-browser-captions-exposed {\n transform: translate3d(0, var(--f7-toolbar-height), 0);\n}\n.photo-browser-thumbs {\n transition-property: transform, background-color, color;\n}\n.photo-browser-thumbs .swiper {\n width: 100%;\n height: 100%;\n}\n.photo-browser-thumbs .swiper-slide {\n width: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.photo-browser-thumbs img {\n width: auto;\n height: 75%;\n display: block;\n border-radius: 2px;\n min-width: 4px;\n}\n.photo-browser-thumbs .swiper-slide img {\n transform: translateX(-4px);\n transition-duration: 150ms;\n}\n.photo-browser-thumbs .swiper-slide-active img {\n transform: scale(1.2);\n}\n.photo-browser-thumbs .swiper-slide-active ~ .swiper-slide img {\n transform: translateX(4px);\n}\n.photo-browser-caption {\n box-sizing: border-box;\n transition-duration: 400ms;\n position: absolute;\n bottom: 0;\n left: 0;\n opacity: 0;\n padding: 4px 5px;\n width: 100%;\n text-align: center;\n font-size: var(--f7-photobrowser-caption-font-size);\n font-weight: var(--f7-photobrowser-caption-font-weight);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .photo-browser-caption {\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.photo-browser-caption:empty {\n display: none;\n}\n.photo-browser-caption.photo-browser-caption-active {\n opacity: 1;\n}\n.photo-browser-captions-light .photo-browser-caption {\n color: var(--f7-photobrowser-caption-light-text-color);\n}\n.photo-browser-captions-dark .photo-browser-caption,\n.dark .photo-browser-caption {\n color: var(--f7-photobrowser-caption-dark-text-color);\n}\n.photo-browser-swiper-container {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n background: var(--f7-photobrowser-bg-color);\n transition: 400ms;\n transition-property: background-color;\n touch-action: none;\n}\n.photo-browser-prev.swiper-button-disabled,\n.photo-browser-next.swiper-button-disabled {\n opacity: 0.3;\n pointer-events: none;\n}\n.photo-browser-slide {\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n box-sizing: border-box;\n}\n.photo-browser-slide span.swiper-zoom-container {\n display: none;\n}\n.photo-browser-slide img {\n width: auto;\n height: auto;\n max-width: 100%;\n max-height: 100%;\n display: none;\n}\n.photo-browser-slide.swiper-slide-active span.swiper-zoom-container,\n.photo-browser-slide.swiper-slide-next span.swiper-zoom-container,\n.photo-browser-slide.swiper-slide-prev span.swiper-zoom-container {\n display: flex;\n}\n.photo-browser-slide.swiper-slide-active img,\n.photo-browser-slide.swiper-slide-next img,\n.photo-browser-slide.swiper-slide-prev img {\n display: inline;\n}\n.photo-browser-slide.swiper-slide-active.photo-browser-slide-lazy .preloader,\n.photo-browser-slide.swiper-slide-next.photo-browser-slide-lazy .preloader,\n.photo-browser-slide.swiper-slide-prev.photo-browser-slide-lazy .preloader {\n display: block;\n}\n.photo-browser-slide iframe {\n width: 100%;\n height: 100%;\n}\n.photo-browser-slide .preloader {\n display: none;\n position: absolute;\n width: 42px;\n height: 42px;\n margin-left: -21px;\n margin-top: -21px;\n left: 50%;\n top: 50%;\n}\n.navbar-photo-browser .right .link svg,\n.navbar-photo-browser .right .link i {\n width: 24px;\n height: 24px;\n display: block;\n}\n.photo-browser-page .navbar-bg,\n.navbar-photo-browser .navbar-bg,\n.photo-browser-page .toolbar,\n.photo-browser-caption {\n background-color: var(--f7-photobrowser-bars-bg-color, rgba(var(--f7-bars-bg-color-rgb), 0.95));\n}\n.photo-browser-page {\n touch-action: none;\n}\n.photo-browser-page .navbar,\n.photo-browser-page .toolbar {\n transform: translate3d(0, 0, 0);\n transition-duration: 400ms;\n color: var(--f7-photobrowser-bars-text-color, var(--f7-bars-text-color));\n}\n.photo-browser-page .navbar a,\n.photo-browser-page .toolbar a {\n color: var(--f7-photobrowser-bars-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.photo-browser-exposed .navbar,\n.photo-browser-exposed .toolbar:not(.photo-browser-thumbs) {\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n}\n.photo-browser-exposed .toolbar:not(.photo-browser-thumbs) ~ .photo-browser-captions,\n.photo-browser-exposed .toolbar ~ .toolbar.photo-browser-thumbs ~ .photo-browser-captions {\n transform: translate3d(0, var(--f7-toolbar-height), 0);\n}\n.photo-browser-exposed .photo-browser-swiper-container {\n background: var(--f7-photobrowser-exposed-bg-color);\n}\n.photo-browser-exposed .photo-browser-thumbs,\n.photo-browser-dark .photo-browser-thumbs,\n.photo-browser-exposed .toolbar,\n.photo-browser-dark .toolbar {\n background-color: var(--f7-photobrowser-dark-bars-bg-color);\n}\n.photo-browser-exposed .photo-browser-caption,\n.photo-browser-dark .photo-browser-caption {\n color: var(--f7-photobrowser-caption-dark-text-color);\n background-color: var(--f7-photobrowser-dark-bars-bg-color);\n}\n.view.with-photo-browser-page-exposed .navbar {\n opacity: 0;\n pointer-events: none;\n}\n.photo-browser-page .toolbar:before,\n.photo-browser-page .toolbar:after {\n display: none !important;\n}\n.photo-browser-page-dark .navbar-bg,\n.navbar-photo-browser-dark .navbar-bg {\n background: var(--f7-photobrowser-dark-bars-bg-color);\n}\n.photo-browser-page-dark .navbar-bg:before,\n.navbar-photo-browser-dark .navbar-bg:before,\n.photo-browser-page-dark .navbar-bg:after,\n.navbar-photo-browser-dark .navbar-bg:after {\n display: none !important;\n}\n.navbar-photo-browser-dark,\n.photo-browser-dark .navbar,\n.photo-browser-dark .toolbar,\n.photo-browser-page-dark .navbar,\n.photo-browser-page-dark .toolbar {\n color: var(--f7-photobrowser-dark-bars-text-color);\n}\n.navbar-photo-browser-dark a,\n.photo-browser-dark .navbar a,\n.photo-browser-dark .toolbar a,\n.photo-browser-page-dark .navbar a,\n.photo-browser-page-dark .toolbar a {\n color: var(--f7-photobrowser-dark-bars-link-color);\n}\n.photo-browser-dark .photo-browser-swiper-container,\n.photo-browser-page-dark .photo-browser-swiper-container {\n background: var(--f7-photobrowser-dark-bg-color);\n}\n@keyframes photo-browser-in {\n 0% {\n transform: translate3d(0, 0, 0) scale(0.5);\n opacity: 0;\n }\n 50% {\n transform: translate3d(0, 0, 0) scale(1.05);\n opacity: 1;\n }\n 100% {\n transform: translate3d(0, 0, 0) scale(1);\n opacity: 1;\n }\n}\n@keyframes photo-browser-out {\n 0% {\n transform: translate3d(0, 0, 0) scale(1);\n opacity: 1;\n }\n 50% {\n transform: translate3d(0, 0, 0) scale(1.05);\n opacity: 1;\n }\n 100% {\n transform: translate3d(0, 0, 0) scale(0.5);\n opacity: 0;\n }\n}\n/* === Notifications === */\n:root {\n --f7-notification-max-width: 568px;\n --f7-notification-subtitle-text-transform: none;\n --f7-notification-subtitle-line-height: 1.35;\n --f7-notification-text-text-transform: none;\n --f7-notification-text-font-weight: 400;\n}\n.ios {\n --f7-notification-margin: 8px;\n --f7-notification-padding-horizontal: 10px;\n --f7-notification-padding-vertical: 10px;\n --f7-notification-border-radius: 12px;\n --f7-notification-box-shadow: 0px 5px 25px -10px rgba(0, 0, 0, 0.7);\n --f7-notification-icon-size: 20px;\n --f7-notification-title-font-size: 13px;\n --f7-notification-title-text-transform: uppercase;\n --f7-notification-title-line-height: 1.4;\n --f7-notification-title-font-weight: 400;\n --f7-notification-title-letter-spacing: 0.02em;\n --f7-notification-title-right-font-size: 13px;\n --f7-notification-subtitle-font-size: 15px;\n --f7-notification-subtitle-font-weight: 600;\n --f7-notification-text-font-size: 15px;\n --f7-notification-text-line-height: 1.2;\n --f7-notification-bg-color: rgba(250, 250, 250, 0.95);\n --f7-notification-bg-color-rgb: 255, 255, 255;\n --f7-notification-title-color: #000;\n --f7-notification-title-right-color: rgba(0, 0, 0, 0.45);\n --f7-notification-subtitle-color: #000;\n --f7-notification-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-notification-bg-color: rgba(30, 30, 30, 0.95);\n --f7-notification-bg-color-rgb: 30, 30, 30;\n --f7-notification-title-color: #fff;\n --f7-notification-text-color: #fff;\n --f7-notification-subtitle-color: #fff;\n --f7-notification-title-right-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-notification-margin: 16px;\n --f7-notification-padding-vertical: 20px;\n --f7-notification-padding-horizontal: 16px;\n --f7-notification-border-radius: 16px;\n --f7-notification-box-shadow: none;\n --f7-notification-icon-size: 24px;\n --f7-notification-title-font-size: 16px;\n --f7-notification-title-text-transform: none;\n --f7-notification-title-line-height: 1.35;\n --f7-notification-title-font-weight: 500;\n --f7-notification-title-right-font-size: 12px;\n --f7-notification-subtitle-font-size: 14px;\n --f7-notification-subtitle-font-weight: 400;\n --f7-notification-text-font-size: 14px;\n --f7-notification-text-line-height: 1.35;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-notification-title-color: var(--f7-md-on-surface);\n --f7-notification-bg-color: var(--f7-md-surface-5);\n --f7-notification-text-color: var(--f7-md-on-surface-variant);\n --f7-notification-title-right-color: var(--f7-md-on-surface-variant);\n --f7-notification-subtitle-color: var(--f7-md-on-surface);\n}\n.notification {\n position: absolute;\n left: var(--f7-notification-margin);\n top: var(--f7-notification-margin);\n width: calc(100% - var(--f7-notification-margin) * 2);\n z-index: 20000;\n font-size: 14px;\n margin: 0;\n border: none;\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n direction: ltr;\n max-width: var(--f7-notification-max-width);\n padding: var(--f7-notification-padding-vertical) var(--f7-notification-padding-horizontal);\n border-radius: var(--f7-notification-border-radius);\n box-shadow: var(--f7-notification-box-shadow);\n background: var(--f7-notification-bg-color);\n margin-top: var(--f7-safe-area-top);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .notification {\n background-color: rgba(var(--f7-notification-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n@media (min-width: 568px) {\n .notification {\n left: 50%;\n width: var(--f7-notification-max-width);\n margin-left: calc(-1 * var(--f7-notification-max-width) / 2);\n }\n}\n.notification-title {\n color: var(--f7-notification-title-color, var(--f7-theme-color));\n font-size: var(--f7-notification-title-font-size);\n text-transform: var(--f7-notification-title-text-transform);\n line-height: var(--f7-notification-title-line-height);\n font-weight: var(--f7-notification-title-font-weight);\n letter-spacing: var(--f7-notification-title-letter-spacing);\n}\n.notification-subtitle {\n color: var(--f7-notification-subtitle-color);\n font-size: var(--f7-notification-subtitle-font-size);\n text-transform: var(--f7-notification-subtitle-text-transform);\n line-height: var(--f7-notification-subtitle-line-height);\n font-weight: var(--f7-notification-subtitle-font-weight);\n}\n.notification-text {\n color: var(--f7-notification-text-color);\n font-size: var(--f7-notification-text-font-size);\n text-transform: var(--f7-notification-text-text-transform);\n line-height: var(--f7-notification-text-line-height);\n font-weight: var(--f7-notification-text-font-weight);\n}\n.notification-title-right-text {\n color: var(--f7-notification-title-right-color);\n font-size: var(--f7-notification-title-right-font-size);\n}\n.notification-icon {\n font-size: 0;\n line-height: var(--f7-notification-icon-size);\n}\n.notification-icon i,\n.notification-icon {\n width: var(--f7-notification-icon-size) !important;\n height: var(--f7-notification-icon-size) !important;\n}\n.notification-icon i {\n font-size: var(--f7-notification-icon-size);\n}\n.notification-icon img {\n height: var(--f7-notification-icon-size);\n}\n.notification-header {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.notification-close-button {\n margin-left: auto;\n cursor: pointer;\n position: relative;\n}\n.notification-close-button:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n left: 50%;\n top: 50%;\n text-align: center;\n}\n.ios .notification {\n transition-duration: 450ms;\n transform: translate3d(0%, -200%, 0);\n}\n.ios .notification.modal-in {\n transform: translate3d(0%, 0%, 0);\n opacity: 1;\n}\n.ios .notification.modal-out {\n transform: translate3d(0%, -200%, 0);\n}\n.ios .notification-icon {\n margin-right: 8px;\n}\n.ios .notification-header + .notification-content {\n margin-top: 10px;\n}\n.ios .notification-title-right-text {\n margin-right: 6px;\n margin-left: auto;\n}\n.ios .notification-title-right-text + .notification-close-button {\n margin-left: 10px;\n}\n.ios .notification-close-button {\n font-size: 14px;\n width: 20px;\n height: 20px;\n opacity: 0.3;\n transition-duration: 300ms;\n}\n.ios .notification-close-button.active-state {\n transition-duration: 0ms;\n opacity: 0.1;\n}\n.ios .notification-close-button:after {\n color: #000;\n content: 'notification_close_ios';\n font-size: 0.65em;\n line-height: 44px;\n width: 44px;\n height: 44px;\n margin-left: -22px;\n margin-top: -22px;\n}\n.ios .dark .notification-close-button:after,\n.ios.dark .notification-close-button:after {\n color: #fff;\n}\n.md .notification {\n transform: translate3d(0, -150%, 0);\n}\n.md .notification.modal-in {\n transition-duration: 500ms;\n transform: translate3d(0, 0%, 0);\n transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n}\n.md .notification.modal-in.notification-transitioning {\n transition-duration: 200ms;\n}\n.md .notification.modal-out {\n animation: none;\n transition-duration: 200ms;\n transition-timing-function: ease-in;\n transform: translate3d(0, -150%, 0);\n}\n.md .notification-with-icon .notification-icon {\n position: absolute;\n left: var(--f7-notification-padding-horizontal);\n top: var(--f7-notification-padding-vertical);\n}\n.md .notification-with-icon .notification-content,\n.md .notification-with-icon .notification-header {\n margin-left: calc(var(--f7-notification-icon-size) + 16px);\n}\n.md .notification-icon {\n margin-right: 8px;\n}\n.md .notification-subtitle + .notification-text {\n margin-top: 4px;\n}\n.md .notification-header + .notification-content {\n margin-top: 8px;\n}\n.md .notification-title-right-text {\n margin-left: 4px;\n}\n.md .notification-title-right-text:before {\n content: '';\n width: 3px;\n height: 3px;\n border-radius: 50%;\n display: inline-block;\n vertical-align: middle;\n margin-right: 4px;\n background: var(--f7-notification-title-right-color);\n}\n.md .notification-close-button {\n width: 16px;\n height: 16px;\n transition-duration: 300ms;\n}\n.md .notification-close-button:before,\n.md .notification-close-button:after {\n width: 48px;\n height: 48px;\n left: 50%;\n top: 50%;\n margin-left: -24px;\n margin-top: -24px;\n}\n.md .notification-close-button:after {\n color: var(--f7-md-on-surface-variant);\n content: 'delete_round_md';\n line-height: 48px;\n font-size: 24px;\n}\n@keyframes notification-md-in {\n 0% {\n transform: translate3d(0, -150%, 0);\n }\n 50% {\n transform: translate3d(0, 10%, 0);\n }\n 100% {\n transform: translate3d(0, 0%, 0);\n }\n}\n/* === Autocomplete === */\n:root {\n --f7-autocomplete-dropdown-placeholder-color: #a9a9a9;\n --f7-autocomplete-dropdown-preloader-size: 20px;\n --f7-autocomplete-dropdown-font-size: var(--f7-list-font-size);\n /*\n --f7-autocomplete-dropdown-selected-bg-color: rgba(var(--f7-theme-color-rgb), 0.2);\n */\n}\n.ios {\n --f7-autocomplete-dropdown-box-shadow: 0px 3px 3px rgba(0, 0, 0, 0.2);\n --f7-autocomplete-dropdown-text-matching-font-weight: 600;\n --f7-autocomplete-dropdown-bg-color: #fff;\n --f7-autocomplete-dropdown-text-color: #000;\n --f7-autocomplete-dropdown-text-matching-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-autocomplete-dropdown-bg-color: #1c1c1d;\n --f7-autocomplete-dropdown-text-color: #fff;\n --f7-autocomplete-dropdown-text-matching-color: #fff;\n}\n.md {\n --f7-autocomplete-dropdown-box-shadow: none;\n --f7-autocomplete-dropdown-text-matching-font-weight: 500;\n --f7-autocomplete-dropdown-text-matching-color: #000;\n}\n.md .dark,\n.md.dark {\n --f7-autocomplete-dropdown-text-matching-color: #fff;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-autocomplete-dropdown-bg-color: var(--f7-md-surface-2);\n --f7-autocomplete-dropdown-text-color: var(--f7-md-on-surface);\n}\n.autocomplete-page .autocomplete-found {\n display: block;\n}\n.autocomplete-page .autocomplete-not-found {\n display: none;\n}\n.autocomplete-page .autocomplete-values {\n display: block;\n}\n.autocomplete-page .list ul:empty {\n display: none;\n}\n.autocomplete-preloader:not(.autocomplete-preloader-visible) {\n visibility: hidden;\n}\n.autocomplete-preloader:not(.autocomplete-preloader-visible),\n.autocomplete-preloader:not(.autocomplete-preloader-visible) * {\n animation: none;\n}\n.autocomplete-dropdown {\n background: var(--f7-autocomplete-dropdown-bg-color);\n box-shadow: var(--f7-autocomplete-dropdown-box-shadow);\n box-sizing: border-box;\n position: absolute;\n z-index: 500;\n width: 100%;\n left: 0;\n}\n.autocomplete-dropdown .autocomplete-dropdown-inner {\n position: relative;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n height: 100%;\n z-index: 1;\n}\n.autocomplete-dropdown .autocomplete-preloader {\n display: none;\n position: absolute;\n bottom: 100%;\n width: var(--f7-autocomplete-dropdown-preloader-size);\n height: var(--f7-autocomplete-dropdown-preloader-size);\n}\n.autocomplete-dropdown .autocomplete-preloader-visible {\n display: block;\n}\n.autocomplete-dropdown .autocomplete-dropdown-placeholder {\n color: var(--f7-autocomplete-dropdown-placeholder-color);\n}\n.autocomplete-dropdown .list {\n margin: 0;\n color: var(--f7-autocomplete-dropdown-text-color);\n font-size: var(--f7-autocomplete-dropdown-font-size);\n}\n.autocomplete-dropdown .list b {\n color: var(--f7-autocomplete-dropdown-text-matching-color);\n font-weight: var(--f7-autocomplete-dropdown-text-matching-font-weight);\n}\n.autocomplete-dropdown .list ul {\n background: none !important;\n}\n.autocomplete-dropdown .list ul:before,\n.autocomplete-dropdown .list ul:after {\n display: none !important;\n}\n.autocomplete-dropdown .autocomplete-dropdown-selected {\n background: var(--f7-autocomplete-dropdown-selected-bg-color, rgba(var(--f7-theme-color-rgb), 0.2));\n}\n.searchbar-input-wrap .autocomplete-dropdown {\n background-color: var(--f7-searchbar-input-bg-color, var(--f7-searchbar-bg-color));\n border-radius: var(--f7-searchbar-input-border-radius);\n margin-top: calc(-1 * var(--f7-searchbar-input-height));\n top: 100%;\n z-index: -1;\n}\n.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-inner {\n padding-top: var(--f7-searchbar-input-height);\n}\n.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-placeholder {\n color: var(--f7-searchbar-placeholder-color);\n}\n.searchbar-input-wrap .autocomplete-dropdown li:last-child {\n border-radius: 0 0 var(--f7-searchbar-input-border-radius) var(--f7-searchbar-input-border-radius);\n position: relative;\n overflow: hidden;\n}\n.searchbar-input-wrap .autocomplete-dropdown .item-content {\n padding-left: calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px));\n}\n.ios .autocomplete-dropdown .autocomplete-preloader {\n right: 16px;\n margin-bottom: 12px;\n}\n.md .autocomplete-page .navbar .autocomplete-preloader {\n margin-right: 8px;\n}\n.md .autocomplete-popup .navbar .autocomplete-preloader {\n margin-left: 8px;\n margin-right: 16px;\n}\n.md .autocomplete-dropdown .autocomplete-preloader {\n right: 16px;\n margin-bottom: 8px;\n}\n.md .autocomplete-dropdown .autocomplete-preloader circle {\n stroke-width: 3;\n}\n/* === Tooltip === */\n:root {\n --f7-tooltip-padding: 8px 16px;\n --f7-tooltip-font-size: 14px;\n --f7-tooltip-font-weight: 500;\n --f7-tooltip-desktop-padding: 6px 8px;\n --f7-tooltip-desktop-font-size: 12px;\n}\n.ios {\n --f7-tooltip-border-radius: 4px;\n --f7-tooltip-bg-color: rgba(0, 0, 0, 0.87);\n --f7-tooltip-text-color: #fff;\n}\n.md {\n --f7-tooltip-border-radius: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-tooltip-bg-color: var(--f7-md-secondary);\n --f7-tooltip-text-color: var(--f7-md-on-secondary);\n}\n.tooltip {\n position: absolute;\n z-index: 20000;\n background: var(--f7-tooltip-bg-color);\n border-radius: var(--f7-tooltip-border-radius);\n padding: var(--f7-tooltip-padding);\n color: var(--f7-tooltip-text-color);\n font-size: var(--f7-tooltip-font-size);\n font-weight: var(--f7-tooltip-font-weight);\n box-sizing: border-box;\n line-height: 1.2;\n opacity: 0;\n transform: scale(0.9);\n transition-duration: 150ms;\n transition-property: opacity, transform;\n z-index: 99000;\n}\n.tooltip.tooltip-in {\n transform: scale(1);\n opacity: 1;\n}\n.tooltip.tooltip-out {\n opacity: 0;\n transform: scale(1);\n}\n.device-desktop .tooltip {\n font-size: var(--f7-tooltip-desktop-font-size);\n padding: var(--f7-tooltip-desktop-padding);\n}\n/* === Gauge === */\n.gauge {\n position: relative;\n text-align: center;\n margin-left: auto;\n margin-right: auto;\n display: inline-block;\n}\n.gauge-svg,\n.gauge svg {\n max-width: 100%;\n height: auto;\n}\n.gauge-svg circle,\n.gauge svg circle,\n.gauge-svg path,\n.gauge svg path {\n transition-duration: 400ms;\n}\n/* === Skeleton === */\n:root {\n --skeleton-color: #ccc;\n --skeleton-icon-color: rgba(0, 0, 0, 0.25);\n}\n\n.skeleton-block {\n height: 1em;\n background: var(--skeleton-color) !important;\n width: 100%;\n display: block;\n}\n\n@font-face {\n font-family: \"skeleton\";\n src: url(\"data:application/font-woff;charset=utf-8;base64,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\") format(\"woff\");\n font-weight: 100, 200, 300, 400, 500, 600, 700, 800, 900;\n font-style: normal, italic;\n font-display: block;\n}\n.skeleton-text {\n font-family: \"skeleton\" !important;\n -webkit-user-select: none;\n user-select: none;\n}\n.skeleton-text, .skeleton-text * {\n color: var(--skeleton-color) !important;\n letter-spacing: -0.03em !important;\n}\n\n.skeleton-image {\n display: inline-block;\n}\n.skeleton-image svg {\n max-width: 100%;\n height: auto;\n}\n.skeleton-image polygon {\n fill: var(--skeleton-color);\n}\n.skeleton-image path {\n fill: var(--skeleton-icon-color);\n}\n\n.skeleton-avatar {\n display: inline-block;\n}\n.skeleton-avatar svg {\n max-width: 100%;\n height: auto;\n}\n.skeleton-avatar rect {\n fill: var(--skeleton-color);\n}\n.skeleton-avatar path {\n fill: var(--skeleton-icon-color);\n}\n\n.skeleton-effect-blink, .skeleton-effect-wave {\n -webkit-mask-image: linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%);\n mask-image: linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%);\n -webkit-mask-size: 200% 100%;\n mask-size: 200% 100%;\n -webkit-mask-repeat: repeat;\n mask-repeat: repeat;\n -webkit-mask-position: 50% top;\n mask-position: 50% top;\n animation: skeleton-effect-wave 1s infinite;\n}\n.skeleton-effect-fade {\n animation: skeleton-effect-fade 1s infinite;\n}\n.skeleton-effect-pulse {\n animation: skeleton-effect-pulse 1s infinite;\n}\n\n@keyframes skeleton-effect-fade {\n 0% {\n opacity: 1;\n }\n 50% {\n opacity: 0.2;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes skeleton-effect-wave {\n 0% {\n -webkit-mask-position: 50% top;\n mask-position: 50% top;\n }\n 100% {\n -webkit-mask-position: -150% top;\n mask-position: -150% top;\n }\n}\n@keyframes skeleton-effect-pulse {\n 0% {\n transform: scale(1);\n }\n 40% {\n transform: scale(1);\n }\n 50% {\n transform: scale(0.975);\n }\n 100% {\n transform: scale(1);\n }\n}\n:root {\n --skeleton-color: #ccc;\n --skeleton-icon-color: rgba(0, 0, 0, 0.25);\n}\n.dark {\n --skeleton-color: #515151;\n --skeleton-icon-color: rgba(255, 255, 255, 0.25);\n}\n/* === Color Picker === */\n:root {\n --f7-color-picker-popover-width: 350px;\n --f7-color-picker-slider-size: 6px;\n --f7-color-picker-slider-knob-size: 16px;\n --f7-color-picker-bar-size: 50px;\n --f7-color-picker-bar-min-height: 260px;\n --f7-color-picker-value-width: 64px;\n --f7-color-picker-value-height: 32px;\n --f7-color-picker-value-font-size: 16px;\n --f7-color-picker-value-border-radius: 4px;\n --f7-color-picker-hex-value-width: 84px;\n --f7-color-picker-label-font-size: 14px;\n --f7-color-picker-label-width: 10px;\n --f7-color-picker-label-height: 14px;\n --f7-color-picker-sb-spectrum-height: 260px;\n --f7-color-picker-sb-spectrum-handle-size: 16px;\n --f7-color-picker-wheel-width: 330px;\n --f7-color-picker-palette-value-width: 36px;\n --f7-color-picker-palette-value-height: 36px;\n --f7-color-picker-initial-current-color-height: 40px;\n --f7-color-picker-initial-current-color-border-radius: 4px;\n --f7-color-picker-sheet-bg-color: #fff;\n --f7-color-picker-popup-bg-color: #fff;\n --f7-color-picker-value-bg-color: rgba(0, 0, 0, 0.05);\n --f7-color-picker-group-bg-color: rgba(0, 0, 0, 0.05);\n --f7-color-picker-group-value-bg-color: #fff;\n}\n:root .dark,\n:root.dark {\n --f7-color-picker-sheet-bg-color: #121212;\n --f7-color-picker-popup-bg-color: #121212;\n --f7-color-picker-value-bg-color: rgba(255, 255, 255, 0.1);\n --f7-color-picker-group-bg-color: #000;\n --f7-color-picker-group-value-bg-color: rgba(255, 255, 255, 0.12);\n}\n.color-picker {\n overflow: hidden;\n width: 100%;\n display: flex;\n flex-direction: column;\n}\n.color-picker.color-picker-inline,\n.color-picker-popover .color-picker,\n.color-picker-popup .color-picker {\n position: relative;\n}\n.color-picker-sheet-modal {\n background: var(--f7-color-picker-sheet-bg-color);\n}\n.color-picker-sheet-modal:before {\n z-index: 600;\n}\n.color-picker-sheet-modal .sheet-modal-inner {\n margin-bottom: var(--f7-safe-area-bottom);\n}\n.color-picker-popup .page {\n background: var(--f7-color-picker-popup-bg-color);\n}\n.color-picker-popup .page-content {\n padding-bottom: var(--f7-safe-area-bottom);\n}\n.color-picker-popover .color-picker,\n.color-picker-popup .color-picker,\n.color-picker-page .color-picker {\n height: 100%;\n}\n.color-picker-popover .color-picker .toolbar,\n.color-picker-popup .color-picker .toolbar,\n.color-picker-page .color-picker .toolbar {\n position: absolute;\n}\n.color-picker-popover {\n width: var(--f7-color-picker-popover-width);\n max-width: 90vw;\n max-height: 80vh;\n}\n.md .color-picker-popover .popover-inner {\n padding: 8px;\n}\n.color-picker-popover .color-picker {\n max-height: 80vh;\n}\n.color-picker-popover .toolbar-top {\n border-top-left-radius: var(--f7-popover-border-radius);\n border-top-right-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .color-picker-module-palette {\n overflow: hidden;\n flex-shrink: 0;\n}\n.color-picker-popover .color-picker-module-palette:first-child {\n border-top-left-radius: var(--f7-popover-border-radius);\n border-top-right-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .color-picker-module-palette:last-child {\n border-bottom-left-radius: var(--f7-popover-border-radius);\n border-bottom-right-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .color-picker-module-palette:first-child:last-child {\n border-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .toolbar ~ .page-content .color-picker-module-palette:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.color-picker-popup .page-content,\n.color-picker-popover .page-content,\n.color-picker-sheet-modal .page-content,\n.color-picker-page .page-content {\n display: flex;\n justify-content: flex-start;\n align-items: stretch;\n flex-direction: column;\n overflow-x: hidden;\n}\n.color-picker-module {\n margin-top: 5px;\n}\n.color-picker-module:last-child {\n margin-bottom: 5px;\n}\n.color-picker-module-sb-spectrum,\n.color-picker-module-hs-spectrum {\n margin-left: 10px;\n margin-right: 10px;\n}\n.color-picker-module-sb-spectrum:first-child,\n.color-picker-module-hs-spectrum:first-child {\n margin-top: 10px;\n}\n.color-picker-module-sb-spectrum .color-picker-sb-spectrum,\n.color-picker-module-hs-spectrum .color-picker-sb-spectrum,\n.color-picker-module-sb-spectrum .color-picker-hs-spectrum,\n.color-picker-module-hs-spectrum .color-picker-hs-spectrum {\n height: var(--f7-color-picker-sb-spectrum-height);\n}\n.ios .color-picker-module-sb-spectrum .color-picker-sb-spectrum,\n.ios .color-picker-module-hs-spectrum .color-picker-sb-spectrum,\n.ios .color-picker-module-sb-spectrum .color-picker-hs-spectrum,\n.ios .color-picker-module-hs-spectrum .color-picker-hs-spectrum {\n border-radius: 4px;\n}\n.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum,\n.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum,\n.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum,\n.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum {\n border-radius: 12px;\n}\n.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum::after,\n.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum::after,\n.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum::after,\n.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum::after {\n border-radius: inherit;\n}\n.color-picker-sb-spectrum {\n background-color: #000;\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, #000 100%), linear-gradient(to left, rgba(255, 255, 255, 0) 0%, #fff 100%);\n position: relative;\n}\n.color-picker-hs-spectrum {\n position: relative;\n background-image: linear-gradient(to right, hsl(0, 100%, 50%), hsl(60, 100%, 50%), hsl(120, 100%, 50%), hsl(180, 100%, 50%), hsl(240, 100%, 50%), hsl(300, 100%, 50%), hsl(0, 100%, 50%));\n}\n.color-picker-hs-spectrum:after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), #ffffff);\n}\n.color-picker-sb-spectrum-handle,\n.color-picker-hs-spectrum-handle {\n width: 4px;\n height: 4px;\n position: absolute;\n left: -2px;\n top: -2px;\n z-index: 1;\n}\n.color-picker-sb-spectrum-handle:after,\n.color-picker-hs-spectrum-handle:after {\n background-color: inherit;\n content: '';\n position: absolute;\n width: var(--f7-color-picker-sb-spectrum-handle-size);\n height: var(--f7-color-picker-sb-spectrum-handle-size);\n border: 1px solid #fff;\n border-radius: 50%;\n box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.5);\n box-sizing: border-box;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n transition: 150ms;\n transition-property: transform;\n transform-origin: center;\n}\n.color-picker-sb-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after,\n.color-picker-hs-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after,\n.color-picker-sb-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,\n.color-picker-hs-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after {\n transform: scale(1.5) translate(-33.333%, -33.333%);\n}\n.color-picker-module-wheel {\n margin-left: 10px;\n margin-right: 10px;\n}\n.color-picker-wheel {\n position: relative;\n width: var(--f7-color-picker-wheel-width);\n max-width: 100%;\n height: auto;\n font-size: 0;\n margin-left: auto;\n margin-right: auto;\n}\n.color-picker-wheel svg {\n width: 100%;\n height: auto;\n}\n.color-picker-wheel .color-picker-wheel-handle {\n width: 16.66666667%;\n height: 16.66666667%;\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #fff;\n box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5);\n background: red;\n border-radius: 50%;\n left: 0;\n top: 0;\n}\n.color-picker-wheel .color-picker-sb-spectrum {\n width: 45%;\n height: 45%;\n left: 50%;\n top: 50%;\n transform: translate3d(-50%, -50%, 0);\n position: absolute;\n}\n.color-picker-slider-wrap {\n display: flex;\n align-items: center;\n margin-bottom: 2px;\n}\n.color-picker-slider-wrap + .color-picker-slider-wrap {\n margin-top: 5px;\n}\n.color-picker-hex-wrap {\n justify-content: space-between;\n display: flex;\n align-items: center;\n}\n.color-picker-slider-label,\n.color-picker-hex-label {\n font-size: var(--f7-color-picker-label-font-size);\n width: var(--f7-color-picker-label-size);\n flex-shrink: 0;\n margin-right: 12px;\n}\n.color-picker-hex-label {\n width: auto;\n}\n.color-picker-bar-value,\n.color-picker-slider-value,\n.color-picker-hex-value {\n width: var(--f7-color-picker-value-width);\n height: var(--f7-color-picker-value-height);\n background: var(--f7-color-picker-value-bg-color);\n border-radius: var(--f7-color-picker-value-border-radius);\n text-align: center;\n font-size: var(--f7-color-picker-value-font-size);\n display: flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n margin-left: 10px;\n}\n.color-picker-bar-value input,\n.color-picker-slider-value input,\n.color-picker-hex-value input {\n width: 100%;\n height: 100%;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n outline: 0;\n background: transparent;\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n text-align: center;\n display: block;\n border-radius: 4px;\n}\n.color-picker-bar-value input::-webkit-inner-spin-button,\n.color-picker-slider-value input::-webkit-inner-spin-button,\n.color-picker-hex-value input::-webkit-inner-spin-button,\n.color-picker-bar-value input::-webkit-outer-spin-button,\n.color-picker-slider-value input::-webkit-outer-spin-button,\n.color-picker-hex-value input::-webkit-outer-spin-button {\n -webkit-appearance: none;\n appearance: none;\n margin: 0;\n display: none;\n}\n.color-picker-hex-value {\n width: var(--f7-color-picker-hex-value-width);\n}\n.color-picker-hex-value:first-child {\n margin-left: auto;\n}\n.color-picker-slider {\n --f7-range-bar-active-bg-color: transparent;\n --f7-range-bar-size: var(--f7-color-picker-slider-size);\n --f7-range-bar-border-radius: var(--f7-color-picker-slider-size);\n --f7-range-knob-size: var(--f7-color-picker-slider-knob-size);\n --f7-range-knob-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n}\n.color-picker-slider .range-knob {\n transition-duration: 200ms;\n transition-property: transform;\n}\n.color-picker-slider .range-knob:after {\n width: 30px;\n height: 30px;\n margin-left: -16px;\n margin-top: -16px;\n}\n.color-picker-slider .range-knob-active-state .range-knob {\n transform: scale(1.5);\n}\n.md .color-picker-slider.range-slider-min:not(.range-slider-dual) .range-knob {\n background: var(--f7-range-knob-color) !important;\n border: none;\n}\n.color-picker-module-rgb-bars {\n display: flex;\n justify-content: space-around;\n justify-content: space-evenly;\n align-items: stretch;\n height: 100%;\n min-height: var(--f7-color-picker-bar-min-height);\n padding-bottom: 10px;\n padding-top: 10px;\n box-sizing: border-box;\n}\n.color-picker-bar-wrap {\n display: flex;\n align-items: center;\n flex-direction: column-reverse;\n}\n.color-picker-bar {\n --f7-range-bar-active-bg-color: transparent;\n --f7-range-bar-size: var(--f7-color-picker-bar-size);\n --f7-range-bar-border-radius: 2px;\n --f7-range-knob-size: 6px;\n --f7-range-knob-box-shadow: 0 0px 3px rgba(0, 0, 0, 0.3);\n --f7-range-knob-color: #fff;\n}\n.color-picker-bar .range-knob {\n transition-duration: 0ms;\n transition-property: transform;\n border-radius: 3px;\n}\n.color-picker-bar .range-knob-wrap {\n height: 6px;\n width: calc(var(--f7-color-picker-bar-size) - 4px);\n margin-left: calc(-0.5 * (var(--f7-color-picker-bar-size) - 4px));\n}\n.color-picker-bar .range-knob-active-state .range-knob {\n transform: scale(1);\n}\n.md .color-picker-bar.range-slider-min:not(.range-slider-dual) .range-knob {\n background: var(--f7-range-knob-color) !important;\n border: none;\n}\n.color-picker-bar-label {\n font-size: var(--f7-color-picker-label-size);\n margin-top: 12px;\n line-height: 1;\n height: var(--f7-color-picker-label-height);\n flex-shrink: 0;\n}\n.color-picker-bar-value {\n margin-left: 0;\n margin-bottom: 10px;\n}\n.color-picker-slider-alpha {\n --f7-range-knob-color: #fff;\n}\n.color-picker-slider-alpha .range-bar {\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0), #000), linear-gradient(to right, rgba(255, 255, 255, 0.2) 50%, rgba(0, 0, 0, 0.2) 50%), linear-gradient(to left, rgba(255, 255, 255, 0.2) 50%, rgba(0, 0, 0, 0.2) 50%);\n background-size: 100% 100%,\n 6px 3px,\n 6px 3px;\n background-position: 0 0,\n 0px 3px,\n 0 0;\n background-repeat: repeat-y, repeat-x, repeat-x;\n}\n.color-picker-slider-hue .range-bar {\n background-image: linear-gradient(to right, hsl(0, 100%, 50%), hsl(60, 100%, 50%), hsl(120, 100%, 50%), hsl(180, 100%, 50%), hsl(240, 100%, 50%), hsl(300, 100%, 50%), hsl(0, 100%, 50%));\n}\n.color-picker-slider-brightness .range-bar {\n background-image: linear-gradient(to right, #000, #fff);\n}\n.color-picker-module-palette {\n margin-top: 16px;\n}\n.color-picker-module-palette:first-child {\n margin-top: 0;\n}\n.color-picker-module-palette:last-child {\n margin-bottom: 0;\n}\n.color-picker-module-palette:first-child:last-child {\n margin: 0;\n}\n.color-picker-palette {\n display: flex;\n flex-wrap: wrap;\n}\n.color-picker-palette-row {\n width: 100%;\n display: flex;\n flex-wrap: nowrap;\n}\n.color-picker-palette-row .color-picker-palette-value {\n width: 100%;\n}\n.color-picker-palette-value {\n width: var(--f7-color-picker-palette-value-width);\n height: var(--f7-color-picker-palette-value-height);\n cursor: pointer;\n}\n.color-picker-module-initial-current-colors,\n.color-picker-module-current-color {\n margin-left: 10px;\n margin-right: 10px;\n border-radius: var(--f7-color-picker-initial-current-color-border-radius);\n overflow: hidden;\n flex-shrink: 0;\n}\n.color-picker-initial-color,\n.color-picker-current-color {\n height: var(--f7-color-picker-initial-current-color-height);\n}\n.color-picker-initial-current-colors {\n display: flex;\n}\n.color-picker-initial-current-colors .color-picker-initial-color,\n.color-picker-initial-current-colors .color-picker-current-color {\n width: 50%;\n}\n.color-picker-module-rgb-sliders,\n.color-picker-module-hsb-sliders,\n.color-picker-module-alpha-slider,\n.color-picker-module-hue-slider,\n.color-picker-module-brightness-slider,\n.color-picker-module-hex {\n margin-left: 10px;\n margin-right: 10px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders,\n.color-picker-grouped-modules .color-picker-module-alpha-slider,\n.color-picker-grouped-modules .color-picker-module-hue-slider,\n.color-picker-grouped-modules .color-picker-module-brightness-slider,\n.color-picker-grouped-modules .color-picker-module-hex {\n background: var(--f7-color-picker-group-bg-color);\n padding: 8px;\n border-radius: 8px;\n margin-top: 16px;\n margin-left: 8px;\n margin-right: 8px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders:last-child,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders:last-child,\n.color-picker-grouped-modules .color-picker-module-alpha-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hue-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-brightness-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hex:last-child {\n margin-bottom: 16px;\n}\n.color-picker-grouped-modules .color-picker-slider-value,\n.color-picker-grouped-modules .color-picker-hex-value {\n background: var(--f7-color-picker-group-value-bg-color);\n}\n.color-picker-grouped-modules .color-picker-slider-label,\n.color-picker-grouped-modules .color-picker-hex-label {\n margin-left: 5px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:first-child {\n margin-left: 5px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:last-child {\n margin-right: 5px;\n}\n/* === Treeview === */\n:root {\n --f7-treeview-item-height: 34px;\n --f7-treeview-item-padding-left: 16px;\n --f7-treeview-item-padding-right: 16px;\n --f7-treeview-toggle-size: 24px;\n --f7-treeview-children-offset: 29px;\n --f7-treeview-label-font-weight: 400;\n --f7-treeview-label-text-color: inherit;\n --f7-treeview-icon-size: 24px;\n /*\n --f7-treeview-selectable-selected-bg-color: rgba(var(--f7-theme-color-rgb), 0.2);\n */\n --f7-treeview-toggle-color: rgba(0, 0, 0, 0.5);\n --f7-treeview-toggle-hover-bg-color: rgba(0, 0, 0, 0.1);\n --f7-treeview-toggle-pressed-bg-color: rgba(0, 0, 0, 0.15);\n --f7-treeview-icon-color: rgba(0, 0, 0, 0.5);\n --f7-treeview-selectable-hover-bg-color: rgba(0, 0, 0, 0.1);\n --f7-treeview-link-hover-bg-color: rgba(0, 0, 0, 0.1);\n --f7-treeview-link-pressed-bg-color: rgba(0, 0, 0, 0.15);\n}\n:root .dark,\n:root.dark {\n --f7-treeview-toggle-color: rgba(255, 255, 255, 0.5);\n --f7-treeview-toggle-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-treeview-toggle-pressed-bg-color: rgba(255, 255, 255, 0.1);\n --f7-treeview-icon-color: rgba(255, 255, 255, 0.75);\n --f7-treeview-selectable-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-treeview-link-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-treeview-link-pressed-bg-color: rgba(255, 255, 255, 0.11);\n}\n.ios {\n --f7-treeview-label-font-size: 17px;\n}\n.md {\n --f7-treeview-label-font-size: 16px;\n}\n.treeview-item-root {\n padding-left: var(--f7-treeview-item-padding-left);\n padding-right: var(--f7-treeview-item-padding-right);\n min-height: var(--f7-treeview-item-height);\n display: flex;\n align-items: center;\n justify-content: flex-start;\n}\n.treeview-item-content {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.treeview-item-content > i,\n.treeview-item-content > .f7-icons,\n.treeview-item-content > .material-icons {\n font-size: var(--f7-treeview-icon-size);\n color: var(--f7-treeview-icon-color);\n}\n.treeview-item-content:first-child {\n margin-left: calc(var(--f7-treeview-toggle-size) + 5px);\n}\n.treeview-item-content > * + * {\n margin-left: 5px;\n}\n.treeview-item-label {\n font-size: var(--f7-treeview-label-font-size);\n font-weight: var(--f7-treeview-label-font-weight);\n color: var(--f7-treeview-label-text-color);\n}\n.treeview-toggle {\n width: var(--f7-treeview-toggle-size);\n height: var(--f7-treeview-toggle-size);\n cursor: pointer;\n border-radius: 4px;\n background-color: rgba(0, 0, 0, 0);\n transition-duration: 200ms;\n position: relative;\n margin-right: 5px;\n}\n.treeview-toggle.active-state {\n background-color: var(--f7-treeview-toggle-pressed-bg-color);\n}\n.treeview-toggle:after {\n transition-duration: 200ms;\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n width: 0;\n height: 0;\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n transform: translate(-50%, -50%);\n border-left: 6px solid var(--f7-treeview-toggle-color);\n}\n.treeview-toggle-hidden {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n}\n.treeview-preloader {\n --f7-preloader-size: var(--f7-treeview-toggle-size);\n margin-right: calc(-1 * var(--f7-treeview-toggle-size));\n}\n.treeview-item-children {\n display: none;\n}\n.treeview-item-opened > .treeview-item-children {\n display: block;\n}\n.treeview-item-opened > .treeview-item-root .treeview-toggle:after {\n transform: translate(-50%, -50%) rotate(90deg);\n}\na.treeview-item-root {\n color: var(--f7-treeview-label-text-color);\n}\n.treeview-item-selectable > .treeview-item-root,\n.treeview-item-selectable.treeview-item-root {\n cursor: pointer;\n transition-duration: 150ms;\n}\na.treeview-item-root {\n transition-duration: 150ms;\n}\na.treeview-item-root.active-state {\n background: var(--f7-treeview-link-pressed-bg-color);\n}\n.treeview-item-toggle > .treeview-item-root,\n.treeview-item-toggle.treeview-item-root {\n cursor: pointer;\n}\n.treeview-item-selected > .treeview-item-root,\n.treeview-item-selected.treeview-item-root {\n background: var(--f7-treeview-selectable-selected-bg-color, rgba(var(--f7-theme-color-rgb), 0.2));\n}\n.treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 1);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 2);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 3);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 4);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 5);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 6);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 7);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 8);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 9);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 10);\n}\n/* === Stepper === */\n:root {\n --f7-text-editor-font-size: inherit;\n --f7-text-editor-font-weight: inherit;\n --f7-text-editor-border-width: 1px;\n --f7-text-editor-height: 250px;\n --f7-text-editor-margin: 16px;\n --f7-text-editor-padding: 8px;\n --f7-text-editor-button-bg-color: transparent;\n --f7-text-editor-button-size: 28px;\n --f7-text-editor-button-icon-size: 20px;\n --f7-text-editor-button-margin: 2px;\n --f7-text-editor-text-color: #000;\n --f7-text-editor-bg-color: #fff;\n --f7-text-editor-button-divider-color: rgba(0, 0, 0, 0.15);\n}\n:root .dark,\n:root.dark {\n --f7-text-editor-bg-color: #121212;\n --f7-text-editor-text-color: #fff;\n --f7-text-editor-button-divider-color: rgba(255, 255, 255, 0.15);\n}\n.ios {\n --f7-text-editor-toolbar-padding: 6px;\n --f7-text-editor-button-border-radius: 2px;\n --f7-text-editor-placeholder-color: rgba(0, 0, 0, 0.35);\n --f7-text-editor-toolbar-border-color: rgba(0, 0, 0, 0.25);\n --f7-text-editor-toolbar-bg-color: #fff;\n --f7-text-editor-border-color: rgba(0, 0, 0, 0.1);\n --f7-text-editor-button-text-color: #333;\n}\n.ios .dark,\n.ios.dark {\n --f7-text-editor-placeholder-color: rgba(255, 255, 255, 0.35);\n --f7-text-editor-toolbar-bg-color: #121212;\n --f7-text-editor-toolbar-border-color: rgba(255, 255, 255, 0.1);\n --f7-text-editor-toolbar-bg-color: #202020;\n --f7-text-editor-border-color: rgba(255, 255, 255, 0.1);\n --f7-text-editor-button-text-color: #fff;\n}\n.md {\n --f7-text-editor-button-border-radius: 8px;\n --f7-text-editor-toolbar-padding: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-text-editor-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-text-editor-toolbar-bg-color: var(--f7-md-surface-1);\n --f7-text-editor-border-color: var(--f7-md-outline);\n --f7-text-editor-button-text-color: var(--f7-md-on-surface);\n}\n.text-editor {\n margin: var(--f7-text-editor-margin);\n background-color: var(--f7-text-editor-bg-color);\n display: block;\n position: relative;\n border: var(--f7-text-editor-border-width) solid var(--f7-text-editor-border-color);\n display: flex;\n flex-direction: column;\n align-items: stretch;\n height: var(--f7-text-editor-height);\n box-sizing: border-box;\n}\n.text-editor.text-editor-resizable {\n height: auto;\n}\n.text-editor-toolbar {\n display: flex;\n flex-wrap: wrap;\n background: var(--f7-text-editor-toolbar-bg-color);\n z-index: 100;\n position: relative;\n position: sticky;\n left: 0;\n top: 0;\n padding: var(--f7-text-editor-toolbar-padding);\n flex-shrink: 0;\n box-sizing: border-box;\n}\n.text-editor-toolbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-text-editor-toolbar-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\nbutton.text-editor-button {\n -webkit-appearance: none;\n appearance: none;\n border: none;\n padding: 0;\n margin: 0;\n outline: 0;\n font-family: inherit;\n background: transparent;\n cursor: pointer;\n box-shadow: none;\n border-radius: var(--f7-text-editor-button-border-radius);\n position: relative;\n z-index: 1;\n display: flex;\n width: auto;\n overflow: hidden;\n width: var(--f7-text-editor-button-size);\n height: var(--f7-text-editor-button-size);\n align-items: center;\n justify-content: center;\n margin: var(--f7-text-editor-button-margin);\n box-sizing: border-box;\n color: var(--f7-text-editor-button-text-color);\n background-color: var(--f7-text-editor-button-bg-color);\n flex-shrink: 0;\n}\nbutton.text-editor-button i,\nbutton.text-editor-button .f7-icons,\nbutton.text-editor-button .material-icons {\n font-size: var(--f7-text-editor-button-icon-size);\n font-style: normal;\n}\nbutton.text-editor-button i sup,\nbutton.text-editor-button .f7-icons sup,\nbutton.text-editor-button .material-icons sup,\nbutton.text-editor-button i sub,\nbutton.text-editor-button .f7-icons sub,\nbutton.text-editor-button .material-icons sub {\n font-size: 60%;\n}\n.text-editor-button-divider {\n width: 1px;\n background: var(--f7-text-editor-button-divider-color);\n margin: 0 2px;\n flex-shrink: 0;\n}\n.text-editor-content {\n -webkit-user-modify: read-write;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n outline: 0;\n height: 100%;\n -webkit-user-select: text;\n user-select: text;\n padding: var(--f7-text-editor-padding);\n overflow: auto;\n flex-shrink: 10;\n box-sizing: border-box;\n color: var(--f7-text-editor-text-color);\n font-size: var(--f7-text-editor-font-size);\n font-weight: var(--f7-text-editor-font-weight);\n}\n.text-editor-content .text-editor-placeholder {\n pointer-events: none;\n color: var(--f7-text-editor-placeholder-color);\n}\n.text-editor-content img {\n max-width: 100%;\n}\n.text-editor-content a {\n pointer-events: none;\n}\n.text-editor-popover {\n z-index: 12500;\n width: auto;\n max-width: 80vw;\n}\n.text-editor-popover .popover-inner {\n display: flex;\n flex-wrap: wrap;\n padding: 3px;\n}\n.text-editor-keyboard-toolbar {\n position: absolute;\n z-index: 6000;\n --f7-safe-area-bottom: 0px;\n}\n.text-editor-keyboard-toolbar .toolbar-inner {\n justify-content: flex-start !important;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.text-editor-keyboard-toolbar .toolbar-inner .text-editor-button-divider {\n height: 100%;\n}\n.item-input .text-editor {\n border: none;\n margin: 0;\n background-color: var(--f7-input-bg-color, transparent);\n}\n.item-input .text-editor-content {\n padding-top: var(--f7-textarea-padding-vertical);\n padding-bottom: var(--f7-textarea-padding-vertical);\n padding-left: var(--f7-input-padding-left);\n padding-right: var(--f7-input-padding-right);\n color: var(--f7-input-text-color);\n font-size: var(--f7-input-font-size);\n}\n.item-input .text-editor-toolbar {\n box-shadow: none;\n}\n.item-input .text-editor-toolbar:after {\n display: none !important;\n}\n.item-input-outline .text-editor-content {\n border-radius: var(--f7-input-outline-border-radius);\n}\n.ios button.text-editor-button {\n transition: opacity 300ms;\n}\n.ios button.text-editor-button.active-state {\n opacity: 0.3;\n transition-duration: 0ms;\n}\n.md button.text-editor-button {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n}\n.md .text-editor-keyboard-toolbar .toolbar-inner {\n padding-left: 8px;\n padding-right: 8px;\n}\n.pie-chart {\n position: relative;\n}\n.pie-chart svg {\n display: block;\n width: 100%;\n font-size: 0;\n height: auto;\n margin: 0 auto;\n}\n.pie-chart path {\n transition-duration: 150ms;\n}\n.pie-chart-hidden {\n opacity: 0.4;\n}\n.pie-chart-tooltip {\n pointer-events: none;\n text-align: left;\n font-size: 12px;\n line-height: 1.4;\n white-space: nowrap;\n width: auto;\n max-width: none;\n}\n.pie-chart-tooltip-label {\n display: flex;\n align-items: center;\n}\n.pie-chart-tooltip-color {\n display: inline-block;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n margin-right: 4px;\n}\n:root {\n --f7-area-chart-current-line-stroke-width: 2px;\n --f7-area-chart-current-line-stroke: rgba(0, 0, 0, 0.15);\n --f7-area-chart-axis-text-color: inherit;\n --f7-area-chart-axis-height: 1px;\n --f7-area-chart-axis-font-size: 10px;\n --f7-area-chart-axis-font-weight: 500;\n --f7-area-chart-tooltip-font-size: 12px;\n --f7-area-chart-tooltip-total-font-size: 16px;\n --f7-area-chart-tooltip-total-font-weight: bold;\n --f7-area-chart-tooltip-color-size: 10px;\n --f7-area-chart-legend-font-size: 14px;\n --f7-area-chart-legend-font-weight: 500;\n --f7-area-chart-legend-text-color: inherit;\n --f7-area-chart-legend-padding: 4px 8px;\n --f7-area-chart-legend-border-radius: 4px;\n --f7-area-chart-legend-color-size: 14px;\n --f7-area-chart-line-stroke-width: 2px;\n --f7-area-chart-axis-bg-color: rgba(0, 0, 0, 0.15);\n --f7-area-chart-legend-disabled-text-color: rgba(0, 0, 0, 0.22);\n}\n:root .dark,\n:root.dark {\n --f7-area-chart-axis-bg-color: rgba(255, 255, 255, 0.15);\n --f7-area-chart-legend-disabled-text-color: rgba(255, 255, 255, 0.22);\n}\n.ios {\n --f7-area-chart-tooltip-total-label-text-color: rgba(255, 255, 255, 0.75);\n}\n.md {\n --f7-area-chart-tooltip-total-label-text-color: inherit;\n}\n.area-chart {\n position: relative;\n}\n.area-chart svg {\n display: block;\n width: 100%;\n font-size: 0;\n height: auto;\n margin: 0 auto;\n}\n.area-chart path {\n fill: none;\n stroke-width: var(--f7-area-chart-line-stroke-width);\n}\n.area-chart-current-line {\n stroke: var(--f7-area-chart-current-line-stroke);\n stroke-width: var(--f7-area-chart-current-line-stroke-width);\n}\n.area-chart-axis {\n height: var(--f7-area-chart-axis-height);\n background: var(--f7-area-chart-axis-bg-color);\n color: var(--f7-area-chart-axis-text-color);\n display: flex;\n font-size: var(--f7-area-chart-axis-font-size);\n font-weight: var(--f7-area-chart-axis-font-weight);\n justify-content: space-between;\n line-height: 1;\n margin-bottom: 2em;\n}\n.area-chart-axis > span {\n padding-top: 10px;\n width: 0;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n white-space: nowrap;\n}\n.area-chart-axis > span:first-child {\n justify-content: flex-start;\n}\n.area-chart-axis > span:last-child {\n justify-content: flex-end;\n}\n.area-chart-tooltip {\n pointer-events: none;\n text-align: left;\n font-size: var(--f7-area-chart-tooltip-font-size);\n line-height: 1.4;\n}\n.area-chart-tooltip-label {\n color: var(--f7-area-chart-tooltip-total-label-text-color);\n}\n.area-chart-tooltip-total {\n font-size: var(--f7-area-chart-tooltip-total-font-size);\n font-weight: var(--f7-area-chart-tooltip-total-font-weight);\n}\n.area-chart-tooltip-list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n.area-chart-tooltip-list li {\n white-space: nowrap;\n}\n.area-chart-tooltip-list span {\n display: inline-block;\n width: var(--f7-area-chart-tooltip-color-size);\n height: var(--f7-area-chart-tooltip-color-size);\n border-radius: 50%;\n margin-right: 4px;\n}\n.area-chart-axis ~ .area-chart-legend {\n margin-top: 2em;\n}\n.area-chart-legend {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n font-size: var(--f7-area-chart-legend-font-size);\n width: 100%;\n margin-top: 1em;\n}\n.area-chart-legend-button {\n -webkit-appearance: none !important;\n appearance: none !important;\n background-color: transparent;\n border-radius: 0;\n border: none;\n outline: 0 !important;\n cursor: pointer;\n font-family: inherit;\n font-size: inherit;\n box-shadow: none !important;\n}\n.area-chart-legend-item {\n position: relative;\n color: var(--f7-area-chart-legend-text-color);\n width: auto;\n display: flex;\n align-items: center;\n font-weight: var(--f7-area-chart-legend-font-weight);\n transition-duration: 200ms;\n padding: var(--f7-area-chart-legend-padding);\n border-radius: var(--f7-area-chart-legend-border-radius);\n overflow: hidden;\n}\n.area-chart-legend-item span {\n width: var(--f7-area-chart-legend-color-size);\n height: var(--f7-area-chart-legend-color-size);\n margin-right: 4px;\n border-radius: 50%;\n transition-duration: 200ms;\n}\n.area-chart-legend-item-hidden {\n color: var(--f7-area-chart-legend-disabled-text-color);\n}\n.area-chart-legend-item-hidden span {\n background-color: var(--f7-area-chart-legend-disabled-text-color) !important;\n}\n/* === Breadcrumbs === */\n:root {\n --f7-breadcrumbs-spacing: 12px;\n --f7-breadcrumbs-padding: 2px 0;\n --f7-breadcrumbs-icon-size: 24px;\n --f7-breadcrumbs-separator-color: rgba(0, 0, 0, 0.35);\n}\n:root .dark,\n:root.dark {\n --f7-breadcrumbs-separator-color: rgba(255, 255, 255, 0.35);\n}\n.ios {\n --f7-breadcrumbs-item-bg-color: transparent;\n --f7-breadcrumbs-collapsed-border-radius: 4px;\n --f7-breadcrumbs-collapsed-padding: 0px 6px;\n --f7-breadcrumbs-separator-icon: 'chevron_right_ios';\n --f7-breadcrumbs-font-size: 17px;\n --f7-breadcrumbs-item-border-radius: 0px;\n --f7-breadcrumbs-item-padding: 0px;\n --f7-breadcrumbs-item-font-weight: normal;\n --f7-breadcrumbs-item-active-font-weight: 600;\n --f7-breadcrumbs-item-color: rgba(0, 0, 0, 0.55);\n --f7-breadcrumbs-item-active-color: #000;\n --f7-breadcrumbs-collapsed-bg-color: rgba(0, 0, 0, 0.15);\n --f7-breadcrumbs-collapsed-color: rgba(0, 0, 0, 0.75);\n}\n.ios .dark,\n.ios.dark {\n --f7-breadcrumbs-item-color: rgba(255, 255, 255, 0.75);\n --f7-breadcrumbs-item-active-color: #fff;\n --f7-breadcrumbs-collapsed-bg-color: rgba(255, 255, 255, 0.15);\n --f7-breadcrumbs-collapsed-color: rgba(255, 255, 255, 0.75);\n}\n.md {\n --f7-breadcrumbs-collapsed-border-radius: 8px;\n --f7-breadcrumbs-collapsed-padding: 12px 8px;\n --f7-breadcrumbs-separator-icon: 'chevron_right_md';\n --f7-breadcrumbs-font-size: 14px;\n --f7-breadcrumbs-item-border-radius: 8px;\n --f7-breadcrumbs-item-padding: 4px 8px;\n --f7-breadcrumbs-item-font-weight: 500;\n --f7-breadcrumbs-item-active-font-weight: 500;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-breadcrumbs-item-color: var(--f7-theme-color);\n --f7-breadcrumbs-item-bg-color: var(--f7-md-secondary-container);\n --f7-breadcrumbs-item-active-color: var(--f7-md-on-secondary-container);\n --f7-breadcrumbs-collapsed-color: var(--f7-theme-color);\n --f7-breadcrumbs-collapsed-bg-color: var(--f7-md-secondary-container);\n}\n.breadcrumbs {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n font-size: var(--f7-breadcrumbs-font-size);\n overflow: auto;\n white-space: nowrap;\n padding: var(--f7-breadcrumbs-padding);\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.breadcrumbs::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.breadcrumbs::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.breadcrumbs::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.breadcrumbs-separator,\n.breadcrumbs-item,\n.breadcrumbs-collapsed {\n flex-shrink: 0;\n --f7-touch-ripple-color: transparent !important;\n}\n.breadcrumbs-separator + .breadcrumbs-separator,\n.breadcrumbs-separator + .breadcrumbs-item,\n.breadcrumbs-separator + .breadcrumbs-collapsed,\n.breadcrumbs-item + .breadcrumbs-separator,\n.breadcrumbs-item + .breadcrumbs-item,\n.breadcrumbs-item + .breadcrumbs-collapsed,\n.breadcrumbs-collapsed + .breadcrumbs-separator,\n.breadcrumbs-collapsed + .breadcrumbs-item,\n.breadcrumbs-collapsed + .breadcrumbs-collapsed {\n margin-left: var(--f7-breadcrumbs-spacing);\n}\n.breadcrumbs-item {\n color: var(--f7-breadcrumbs-item-color);\n font-weight: var(--f7-breadcrumbs-item-font-weight);\n padding: var(--f7-breadcrumbs-item-padding);\n background-color: var(--f7-breadcrumbs-item-bg-color);\n display: flex;\n align-items: center;\n border-radius: var(--f7-breadcrumbs-item-border-radius);\n}\n.breadcrumbs-item .icon {\n font-size: var(--f7-breadcrumbs-icon-size);\n width: var(--f7-breadcrumbs-icon-size);\n height: var(--f7-breadcrumbs-icon-size);\n}\n.breadcrumbs-item a {\n color: inherit;\n --f7-touch-ripple-color: transparent !important;\n}\n.breadcrumbs-item-active {\n color: var(--f7-breadcrumbs-item-active-color, var(--f7-breadcrumbs-item-color));\n font-weight: var(--f7-breadcrumbs-item-active-font-weight);\n}\n.breadcrumbs-separator {\n color: var(--f7-breadcrumbs-separator-color);\n height: 24px;\n overflow: hidden;\n display: flex;\n align-items: center;\n}\n.breadcrumbs-separator::after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n content: var(--f7-breadcrumbs-separator-icon);\n width: 12px;\n}\n.ios .breadcrumbs-separator::after {\n font-size: 12px;\n height: 11px;\n}\n.md .breadcrumbs-separator::after {\n font-size: 18px;\n height: 18px;\n}\n.breadcrumbs-collapsed {\n display: flex;\n align-items: center;\n padding: var(--f7-breadcrumbs-collapsed-padding);\n background: var(--f7-breadcrumbs-collapsed-bg-color);\n min-height: 1em;\n border-radius: var(--f7-breadcrumbs-collapsed-border-radius);\n cursor: pointer;\n}\n.breadcrumbs-collapsed::before,\n.breadcrumbs-collapsed::after,\n.breadcrumbs-collapsed span {\n content: '';\n width: 4px;\n height: 4px;\n background: var(--f7-breadcrumbs-collapsed-color);\n border-radius: 50%;\n}\n.breadcrumbs-collapsed span {\n margin: 0 3px;\n}\n/* === Typography === */\n:root {\n --f7-typography-padding: 16px;\n --f7-typography-margin: 16px;\n}\n.display-flex {\n display: flex !important;\n}\n.display-block {\n display: block !important;\n}\n.display-inline-flex {\n display: inline-flex !important;\n}\n.display-inline-block {\n display: inline-block !important;\n}\n.display-inline {\n display: inline !important;\n}\n.display-none {\n display: none !important;\n}\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n.flex-shrink-2 {\n flex-shrink: 2 !important;\n}\n.flex-shrink-3 {\n flex-shrink: 3 !important;\n}\n.flex-shrink-4 {\n flex-shrink: 4 !important;\n}\n.flex-shrink-5 {\n flex-shrink: 5 !important;\n}\n.flex-shrink-6 {\n flex-shrink: 6 !important;\n}\n.flex-shrink-7 {\n flex-shrink: 7 !important;\n}\n.flex-shrink-8 {\n flex-shrink: 8 !important;\n}\n.flex-shrink-9 {\n flex-shrink: 9 !important;\n}\n.flex-shrink-10 {\n flex-shrink: 10 !important;\n}\n.flex-direction-row {\n flex-direction: row !important;\n}\n.flex-direction-row-reverse {\n flex-direction: row-reverse !important;\n}\n.flex-direction-column {\n flex-direction: column !important;\n}\n.flex-direction-column-reverse {\n flex-direction: column-reverse !important;\n}\n.justify-content-flex-start {\n justify-content: flex-start !important;\n}\n.justify-content-center {\n justify-content: center !important;\n}\n.justify-content-flex-end {\n justify-content: flex-end !important;\n}\n.justify-content-space-between {\n justify-content: space-between !important;\n}\n.justify-content-space-around {\n justify-content: space-around !important;\n}\n.justify-content-space-evenly {\n justify-content: space-evenly !important;\n}\n.justify-content-stretch {\n justify-content: stretch !important;\n}\n.justify-content-start {\n justify-content: start !important;\n}\n.justify-content-end {\n justify-content: end !important;\n}\n.justify-content-left {\n justify-content: left !important;\n}\n.justify-content-right {\n justify-content: right !important;\n}\n.align-content-flex-start {\n align-content: flex-start !important;\n}\n.align-content-flex-end {\n align-content: flex-end !important;\n}\n.align-content-center {\n align-content: center !important;\n}\n.align-content-space-between {\n align-content: space-between !important;\n}\n.align-content-space-around {\n align-content: space-around !important;\n}\n.align-content-stretch {\n align-content: stretch !important;\n}\n.align-items-baseline {\n align-items: baseline !important;\n}\n.align-items-flex-start {\n align-items: flex-start !important;\n}\n.align-items-flex-end {\n align-items: flex-end !important;\n}\n.align-items-center {\n align-items: center !important;\n}\n.align-items-stretch {\n align-items: stretch !important;\n}\n.align-self-flex-start {\n align-self: flex-start !important;\n}\n.align-self-flex-end {\n align-self: flex-end !important;\n}\n.align-self-center {\n align-self: center !important;\n}\n.align-self-stretch {\n align-self: stretch !important;\n}\n.text-align-left {\n text-align: left !important;\n}\n.text-align-center {\n text-align: center !important;\n}\n.text-align-right {\n text-align: right !important;\n}\n.text-align-justify {\n text-align: justify !important;\n}\n.float-left {\n float: left !important;\n}\n.float-right {\n float: right !important;\n}\n.float-none {\n float: none !important;\n}\n.vertical-align-bottom {\n vertical-align: bottom !important;\n}\n.vertical-align-middle {\n vertical-align: middle !important;\n}\n.vertical-align-top {\n vertical-align: top !important;\n}\n.no-padding {\n padding: 0 !important;\n}\n.no-padding-left {\n padding-left: 0 !important;\n}\n.no-padding-right {\n padding-right: 0 !important;\n}\n.no-padding-horizontal {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n.no-padding-top {\n padding-top: 0 !important;\n}\n.no-padding-bottom {\n padding-bottom: 0 !important;\n}\n.no-padding-vertical {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n.no-margin {\n margin: 0 !important;\n}\n.no-margin-left {\n margin-left: 0 !important;\n}\n.no-margin-right {\n margin-right: 0 !important;\n}\n.no-margin-horizontal {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n.no-margin-top {\n margin-top: 0 !important;\n}\n.no-margin-bottom {\n margin-bottom: 0 !important;\n}\n.no-margin-vertical {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n.width-auto {\n width: auto !important;\n}\n.width-100 {\n width: 100% !important;\n}\n.padding {\n padding: var(--f7-typography-padding) !important;\n}\n.padding-half {\n padding: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-top {\n padding-top: var(--f7-typography-padding) !important;\n}\n.padding-top-half {\n padding-top: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-bottom {\n padding-bottom: var(--f7-typography-padding) !important;\n}\n.padding-bottom-half {\n padding-bottom: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-left {\n padding-left: var(--f7-typography-padding) !important;\n}\n.padding-left-half {\n padding-left: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-right {\n padding-right: var(--f7-typography-padding) !important;\n}\n.padding-right-half {\n padding-right: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-vertical {\n padding-top: var(--f7-typography-padding) !important;\n padding-bottom: var(--f7-typography-padding) !important;\n}\n.padding-vertical-half {\n padding-top: calc(var(--f7-typography-padding) / 2) !important;\n padding-bottom: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-horizontal {\n padding-left: var(--f7-typography-padding) !important;\n padding-right: var(--f7-typography-padding) !important;\n}\n.padding-horizontal-half {\n padding-left: calc(var(--f7-typography-padding) / 2) !important;\n padding-right: calc(var(--f7-typography-padding) / 2) !important;\n}\n.margin {\n margin: var(--f7-typography-margin) !important;\n}\n.margin-half {\n margin: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-top {\n margin-top: var(--f7-typography-margin) !important;\n}\n.margin-top-half {\n margin-top: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-bottom {\n margin-bottom: var(--f7-typography-margin) !important;\n}\n.margin-bottom-half {\n margin-bottom: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-left {\n margin-left: var(--f7-typography-margin) !important;\n}\n.margin-left-half {\n margin-left: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-right {\n margin-right: var(--f7-typography-margin) !important;\n}\n.margin-right-half {\n margin-right: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-vertical {\n margin-top: var(--f7-typography-margin) !important;\n margin-bottom: var(--f7-typography-margin) !important;\n}\n.margin-vertical-half {\n margin-top: calc(var(--f7-typography-margin) / 2) !important;\n margin-bottom: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-horizontal {\n margin-left: var(--f7-typography-margin) !important;\n margin-right: var(--f7-typography-margin) !important;\n}\n.margin-horizontal-half {\n margin-left: calc(var(--f7-typography-margin) / 2) !important;\n margin-right: calc(var(--f7-typography-margin) / 2) !important;\n}\n[class*='text-color-'] {\n color: var(--f7-theme-color-text-color) !important;\n}\n[class*='bg-color-'] {\n background-color: var(--f7-theme-color-bg-color) !important;\n}\n[class*='border-color-'] {\n border-color: var(--f7-theme-color-border-color) !important;\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/apps/documenteditor/mobile/dist/js/526.js b/apps/documenteditor/mobile/dist/js/526.js new file mode 100644 index 0000000000..470ff3a0f5 --- /dev/null +++ b/apps/documenteditor/mobile/dist/js/526.js @@ -0,0 +1,2 @@ +/*! For license information please see 526.js.LICENSE.txt */ +"use strict";(self.webpackChunkdocumenteditor=self.webpackChunkdocumenteditor||[]).push([[526],{"../../apps/documenteditor/mobile/src/less/app.less":function(e,s,t){t.r(s)}}]); \ No newline at end of file diff --git a/apps/documenteditor/mobile/dist/js/526.js.LICENSE.txt b/apps/documenteditor/mobile/dist/js/526.js.LICENSE.txt new file mode 100644 index 0000000000..a09e9e3ef9 --- /dev/null +++ b/apps/documenteditor/mobile/dist/js/526.js.LICENSE.txt @@ -0,0 +1,5 @@ +/*! + * + * * Version: 8.0.1 (build: 0) + * + */ diff --git a/apps/documenteditor/mobile/dist/js/964.js b/apps/documenteditor/mobile/dist/js/964.js new file mode 100644 index 0000000000..dba9717345 --- /dev/null +++ b/apps/documenteditor/mobile/dist/js/964.js @@ -0,0 +1,2 @@ +/*! For license information please see 964.js.LICENSE.txt */ +"use strict";(self.webpackChunkdocumenteditor=self.webpackChunkdocumenteditor||[]).push([[964],{"../../apps/documenteditor/mobile/src/less/app.less":function(e,s,t){t.r(s)}}]); \ No newline at end of file diff --git a/apps/documenteditor/mobile/dist/js/964.js.LICENSE.txt b/apps/documenteditor/mobile/dist/js/964.js.LICENSE.txt new file mode 100644 index 0000000000..a09e9e3ef9 --- /dev/null +++ b/apps/documenteditor/mobile/dist/js/964.js.LICENSE.txt @@ -0,0 +1,5 @@ +/*! + * + * * Version: 8.0.1 (build: 0) + * + */ diff --git a/apps/documenteditor/mobile/dist/js/app.js b/apps/documenteditor/mobile/dist/js/app.js new file mode 100644 index 0000000000..8eb68dd7de --- /dev/null +++ b/apps/documenteditor/mobile/dist/js/app.js @@ -0,0 +1,3 @@ +/*! For license information please see app.js.LICENSE.txt */ +(function(){var __webpack_modules__={"../../apps/common/Analytics.js":function(){void 0===window.Common&&(window.Common={}),Common.component=Common.component||{},Common.Analytics=Common.component.Analytics=new function(){var e;return{initialize:function(t,n){if(void 0===t)throw"Analytics: invalid id.";if(void 0===n||"[object String]"!==Object.prototype.toString.apply(n))throw"Analytics: invalid category type.";e=n,$("head").append(''\n );\n },\n\n trackEvent: function(action, label, value) {\n\n if (typeof action !== 'undefined' && Object.prototype.toString.apply(action) !== '[object String]')\n throw 'Analytics: invalid action type.';\n\n if (typeof label !== 'undefined' && Object.prototype.toString.apply(label) !== '[object String]')\n throw 'Analytics: invalid label type.';\n\n if (typeof value !== 'undefined' && !(Object.prototype.toString.apply(value) === '[object Number]' && isFinite(value)))\n throw 'Analytics: invalid value type.';\n\n if (typeof _gaq === 'undefined')\n return;\n\n if (_category === 'undefined')\n throw 'Analytics is not initialized.';\n\n _gaq.push(['_trackEvent', _category, action, label, value]);\n }\n }\n })();\n","/*\n * (c) Copyright Ascensio System SIA 2010-2023\n *\n * This program is a free software product. You can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License (AGPL)\n * version 3 as published by the Free Software Foundation. In accordance with\n * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect\n * that Ascensio System SIA expressly excludes the warranty of non-infringement\n * of any third-party rights.\n *\n * This program is distributed WITHOUT ANY WARRANTY; without even the implied\n * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For\n * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html\n *\n * You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish\n * street, Riga, Latvia, EU, LV-1050.\n *\n * The interactive user interfaces in modified source and object code versions\n * of the Program must display Appropriate Legal Notices, as required under\n * Section 5 of the GNU AGPL version 3.\n *\n * Pursuant to Section 7(b) of the License you must retain the original Product\n * logo when distributing the program. Pursuant to Section 7(e) we decline to\n * grant you any rights under trademark law for use of our trademarks.\n *\n * All the Product's GUI elements, including illustrations and icon sets, as\n * well as technical writing content are licensed under the terms of the\n * Creative Commons Attribution-ShareAlike 4.0 International. See the License\n * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode\n *\n */\n\nif (window.Common === undefined) {\n window.Common = {};\n}\n\n Common.Gateway = new(function() {\n var me = this,\n $me = $(me);\n\n var commandMap = {\n 'init': function(data) {\n $me.trigger('init', data);\n },\n\n 'openDocument': function(data) {\n $me.trigger('opendocument', data);\n },\n\n 'openDocumentFromBinary': function(data) {\n $me.trigger('opendocumentfrombinary', data);\n },\n\n 'showMessage': function(data) {\n $me.trigger('showmessage', data);\n },\n\n 'applyEditRights': function(data) {\n $me.trigger('applyeditrights', data);\n },\n\n 'processSaveResult': function(data) {\n $me.trigger('processsaveresult', data);\n },\n\n 'processRightsChange': function(data) {\n $me.trigger('processrightschange', data);\n },\n\n 'refreshHistory': function(data) {\n $me.trigger('refreshhistory', data);\n },\n\n 'setHistoryData': function(data) {\n $me.trigger('sethistorydata', data);\n },\n\n 'setEmailAddresses': function(data) {\n $me.trigger('setemailaddresses', data);\n },\n\n 'setActionLink': function (data) {\n $me.trigger('setactionlink', data.url);\n },\n\n 'processMailMerge': function(data) {\n $me.trigger('processmailmerge', data);\n },\n\n 'downloadAs': function(data) {\n $me.trigger('downloadas', data);\n },\n\n 'processMouse': function(data) {\n $me.trigger('processmouse', data);\n },\n\n 'internalCommand': function(data) {\n $me.trigger('internalcommand', data);\n },\n\n 'resetFocus': function(data) {\n $me.trigger('resetfocus', data);\n },\n\n 'setUsers': function(data) {\n $me.trigger('setusers', data);\n },\n\n 'showSharingSettings': function(data) {\n $me.trigger('showsharingsettings', data);\n },\n\n 'setSharingSettings': function(data) {\n $me.trigger('setsharingsettings', data);\n },\n\n 'insertImage': function(data) {\n $me.trigger('insertimage', data);\n },\n\n 'setMailMergeRecipients': function(data) {\n $me.trigger('setmailmergerecipients', data);\n },\n\n 'setRevisedFile': function(data) {\n $me.trigger('setrevisedfile', data);\n },\n\n 'setFavorite': function(data) {\n $me.trigger('setfavorite', data);\n },\n\n 'requestClose': function(data) {\n $me.trigger('requestclose', data);\n },\n\n 'blurFocus': function(data) {\n $me.trigger('blurfocus', data);\n },\n\n 'grabFocus': function(data) {\n $me.trigger('grabfocus', data);\n },\n\n 'setReferenceData': function(data) {\n $me.trigger('setreferencedata', data);\n },\n\n 'setRequestedDocument': function(data) {\n $me.trigger('setrequesteddocument', data);\n },\n\n 'setRequestedSpreadsheet': function(data) {\n $me.trigger('setrequestedspreadsheet', data);\n },\n\n 'setReferenceSource': function(data) {\n $me.trigger('setreferencesource', data);\n },\n\n 'startFilling': function(data) {\n $me.trigger('startfilling', data);\n }\n };\n\n var _postMessage = function(msg, buffer) {\n // TODO: specify explicit origin\n if (window.parent && window.JSON) {\n msg.frameEditorId = window.frameEditorId;\n buffer ? window.parent.postMessage(msg, \"*\", [buffer]) : window.parent.postMessage(window.JSON.stringify(msg), \"*\");\n }\n };\n\n var _onMessage = function(msg) {\n // TODO: check message origin\n if (msg.origin !== window.parentOrigin && msg.origin !== window.location.origin && !(msg.origin===\"null\" && (window.parentOrigin===\"file://\" || window.location.origin===\"file://\"))) return;\n\n var data = msg.data;\n if (data && data.command === 'openDocumentFromBinary') {\n handler = commandMap[data.command];\n if (handler) {\n handler.call(this, data.data);\n }\n return;\n }\n\n if (Object.prototype.toString.apply(data) !== '[object String]' || !window.JSON) {\n return;\n }\n\n var cmd, handler;\n\n try {\n cmd = window.JSON.parse(data)\n } catch(e) {\n cmd = '';\n }\n\n if (cmd) {\n handler = commandMap[cmd.command];\n if (handler) {\n handler.call(this, cmd.data);\n }\n }\n };\n\n var fn = function(e) { _onMessage(e); };\n\n if (window.attachEvent) {\n window.attachEvent('onmessage', fn);\n } else {\n window.addEventListener('message', fn, false);\n }\n\n return {\n\n appReady: function() {\n _postMessage({ event: 'onAppReady' });\n },\n\n requestEditRights: function() {\n _postMessage({ event: 'onRequestEditRights' });\n },\n\n requestHistory: function() {\n _postMessage({ event: 'onRequestHistory' });\n },\n\n requestHistoryData: function(revision) {\n _postMessage({\n event: 'onRequestHistoryData',\n data: revision\n });\n },\n\n requestRestore: function(version, url, fileType) {\n _postMessage({\n event: 'onRequestRestore',\n data: {\n version: version,\n url: url,\n fileType: fileType\n }\n });\n },\n\n requestEmailAddresses: function() {\n _postMessage({ event: 'onRequestEmailAddresses' });\n },\n\n requestStartMailMerge: function() {\n _postMessage({event: 'onRequestStartMailMerge'});\n },\n\n requestHistoryClose: function(revision) {\n _postMessage({event: 'onRequestHistoryClose'});\n },\n\n reportError: function(code, description) {\n _postMessage({\n event: 'onError',\n data: {\n errorCode: code,\n errorDescription: description\n }\n });\n },\n\n reportWarning: function(code, description) {\n _postMessage({\n event: 'onWarning',\n data: {\n warningCode: code,\n warningDescription: description\n }\n });\n },\n\n sendInfo: function(info) {\n _postMessage({\n event: 'onInfo',\n data: info\n });\n },\n\n setDocumentModified: function(modified) {\n _postMessage({\n event: 'onDocumentStateChange',\n data: modified\n });\n },\n\n internalMessage: function(type, data) {\n _postMessage({\n event: 'onInternalMessage',\n data: {\n type: type,\n data: data\n }\n });\n },\n\n updateVersion: function() {\n _postMessage({ event: 'onOutdatedVersion' });\n },\n\n downloadAs: function(url, fileType) {\n _postMessage({\n event: 'onDownloadAs',\n data: {\n url: url,\n fileType: fileType\n }\n });\n },\n\n requestSaveAs: function(url, title, fileType) {\n _postMessage({\n event: 'onRequestSaveAs',\n data: {\n url: url,\n title: title,\n fileType: fileType\n }\n });\n },\n\n collaborativeChanges: function() {\n _postMessage({event: 'onCollaborativeChanges'});\n },\n\n requestRename: function(title) {\n _postMessage({event: 'onRequestRename', data: title});\n },\n\n metaChange: function(meta) {\n _postMessage({event: 'onMetaChange', data: meta});\n },\n\n documentReady: function() {\n _postMessage({ event: 'onDocumentReady' });\n },\n\n requestClose: function() {\n _postMessage({event: 'onRequestClose'});\n },\n\n requestMakeActionLink: function (config) {\n _postMessage({event:'onMakeActionLink', data: config});\n },\n\n requestUsers: function (command, id) {\n _postMessage({event:'onRequestUsers', data: {c: command, id: id}});\n },\n\n requestSendNotify: function (emails) {\n _postMessage({event:'onRequestSendNotify', data: emails});\n },\n\n requestInsertImage: function (command) {\n _postMessage({event:'onRequestInsertImage', data: {c: command}});\n },\n\n requestMailMergeRecipients: function () {\n _postMessage({event:'onRequestMailMergeRecipients'});\n },\n\n requestCompareFile: function () {\n _postMessage({event:'onRequestCompareFile'});\n },\n\n requestSharingSettings: function () {\n _postMessage({event:'onRequestSharingSettings'});\n },\n\n requestCreateNew: function () {\n _postMessage({event:'onRequestCreateNew'});\n },\n\n requestReferenceData: function (data) {\n _postMessage({event:'onRequestReferenceData', data: data});\n },\n\n requestOpen: function (data) {\n _postMessage({event:'onRequestOpen', data: data});\n },\n\n requestSelectDocument: function (command) {\n _postMessage({event:'onRequestSelectDocument', data: {c: command}});\n },\n\n requestSelectSpreadsheet: function (command) {\n _postMessage({event:'onRequestSelectSpreadsheet', data: {c: command}});\n },\n\n requestReferenceSource: function () {\n _postMessage({event:'onRequestReferenceSource'});\n },\n\n requestStartFilling: function () {\n _postMessage({event:'onRequestStartFilling'});\n },\n\n pluginsReady: function() {\n _postMessage({ event: 'onPluginsReady' });\n },\n\n saveDocument: function(data) {\n data && _postMessage({\n event: 'onSaveDocument',\n data: data.buffer\n }, data.buffer);\n },\n\n submitForm: function() {\n _postMessage({event: 'onSubmit'});\n },\n\n on: function(event, handler){\n var localHandler = function(event, data){\n handler.call(me, data)\n };\n\n $me.on(event, localHandler);\n }\n }\n\n })();\n","/*\n * (c) Copyright Ascensio System SIA 2010-2023\n *\n * This program is a free software product. You can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License (AGPL)\n * version 3 as published by the Free Software Foundation. In accordance with\n * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect\n * that Ascensio System SIA expressly excludes the warranty of non-infringement\n * of any third-party rights.\n *\n * This program is distributed WITHOUT ANY WARRANTY; without even the implied\n * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For\n * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html\n *\n * You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish\n * street, Riga, Latvia, EU, LV-1050.\n *\n * The interactive user interfaces in modified source and object code versions\n * of the Program must display Appropriate Legal Notices, as required under\n * Section 5 of the GNU AGPL version 3.\n *\n * Pursuant to Section 7(b) of the License you must retain the original Product\n * logo when distributing the program. Pursuant to Section 7(e) we decline to\n * grant you any rights under trademark law for use of our trademarks.\n *\n * All the Product's GUI elements, including illustrations and icon sets, as\n * well as technical writing content are licensed under the terms of the\n * Creative Commons Attribution-ShareAlike 4.0 International. See the License\n * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode\n *\n */\nif (window.Common === undefined) {\n window.Common = {};\n}\n\nif (Common.Utils === undefined) {\n Common.Utils = {};\n}\n\nfunction _extend_object(dest, source) {\n if ( typeof _ != \"undefined\" ) {\n return _.extend({}, dest, source);\n } else\n if ( !!Object ) {\n return Object.assign({}, dest, source);\n }\n\n return source;\n}\n\nvar utils = new(function() {\n var userAgent = navigator.userAgent.toLowerCase(),\n check = function(regex){\n return regex.test(userAgent);\n },\n isStrict = document.compatMode == \"CSS1Compat\",\n version = function (is, regex) {\n var m;\n return (is && (m = regex.exec(userAgent))) ? parseFloat(m[1]) : 0;\n },\n docMode = document.documentMode,\n isEdge = check(/edge/),\n isOpera = check(/opera/),\n isOpera10_5 = isOpera && check(/version\\/10\\.5/),\n isIE = !isOpera && (check(/msie/) || check(/trident/) || check(/edge/)),\n isIE7 = isIE && ((check(/msie 7/) && docMode != 8 && docMode != 9 && docMode != 10) || docMode == 7),\n isIE8 = isIE && ((check(/msie 8/) && docMode != 7 && docMode != 9 && docMode != 10) || docMode == 8),\n isIE9 = isIE && ((check(/msie 9/) && docMode != 7 && docMode != 8 && docMode != 10) || docMode == 9),\n isIE10 = isIE && ((check(/msie 10/) && docMode != 7 && docMode != 8 && docMode != 9) || docMode == 10),\n isIE11 = isIE && ((check(/trident\\/7\\.0/) && docMode != 7 && docMode != 8 && docMode != 9 && docMode != 10) || docMode == 11),\n isIE6 = isIE && check(/msie 6/),\n isChrome = !isIE && check(/\\bchrome\\b/),\n isWebKit = !isIE && check(/webkit/),\n isSafari = !isIE && !isChrome && check(/safari/),\n isSafari2 = isSafari && check(/applewebkit\\/4/), // unique to Safari 2\n isSafari3 = isSafari && check(/version\\/3/),\n isSafari4 = isSafari && check(/version\\/4/),\n isSafari5_0 = isSafari && check(/version\\/5\\.0/),\n isSafari5 = isSafari && check(/version\\/5/),\n isGecko = !isWebKit && !isIE && check(/gecko/), // IE11 adds \"like gecko\" into the user agent string\n isGecko3 = isGecko && check(/rv:1\\.9/),\n isGecko4 = isGecko && check(/rv:2\\.0/),\n isGecko5 = isGecko && check(/rv:5\\./),\n isGecko10 = isGecko && check(/rv:10\\./),\n isFF3_0 = isGecko3 && check(/rv:1\\.9\\.0/),\n isFF3_5 = isGecko3 && check(/rv:1\\.9\\.1/),\n isFF3_6 = isGecko3 && check(/rv:1\\.9\\.2/),\n isWindows = check(/windows|win32/),\n isMac = check(/macintosh|mac os x/),\n isLinux = check(/linux/),\n chromeVersion = version(true, /\\bchrome\\/(\\d+\\.\\d+)/),\n firefoxVersion = version(true, /\\bfirefox\\/(\\d+\\.\\d+)/),\n ieVersion = version(isIE, /msie (\\d+\\.\\d+)/),\n operaVersion = version(isOpera, /version\\/(\\d+\\.\\d+)/),\n safariVersion = version(isSafari, /version\\/(\\d+\\.\\d+)/),\n webKitVersion = version(isWebKit, /webkit\\/(\\d+\\.\\d+)/),\n isSecure = /^https/i.test(window.location.protocol),\n emailRe = /^(mailto:)?([a-z0-9'\\._-]+@[a-z0-9\\.-]+\\.[a-z0-9]{2,4})([a-яё0-9\\._%+-=\\? :&]*)/i,\n ipRe = /^(((https?)|(ftps?)):\\/\\/)?([\\-\\wа-яё]*:?[\\-\\wа-яё]*@)?(((1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])\\.){3}(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9]))(:\\d+)?(\\/[%\\-\\wа-яё]*(\\.[\\wа-яё]{2,})?(([\\wа-яё\\-\\.\\?\\\\\\/+@&#;:`~=%!,\\(\\)]*)(\\.[\\wа-яё]{2,})?)*)*\\/?/i,\n hostnameRe = /^(((https?)|(ftps?)):\\/\\/)?([\\-\\wа-яё]*:?[\\-\\wа-яё]*@)?(([\\-\\wа-яё]+\\.)+[\\wа-яё\\-]{2,}(:\\d+)?(\\/[%\\-\\wа-яё]*(\\.[\\wа-яё]{2,})?(([\\wа-яё\\-\\.\\?\\\\\\/\\+@&#;:`'~=%!,\\(\\)]*)(\\.[\\wа-яё]{2,})?)*)*\\/?)/i,\n localRe = /^(((https?)|(ftps?)):\\/\\/)([\\-\\wа-яё]*:?[\\-\\wа-яё]*@)?(([\\-\\wа-яё]+)(:\\d+)?(\\/[%\\-\\wа-яё]*(\\.[\\wа-яё]{2,})?(([\\wа-яё\\-\\.\\?\\\\\\/\\+@&#;:`'~=%!,\\(\\)]*)(\\.[\\wа-яё]{2,})?)*)*\\/?)/i,\n emailStrongRe = /(mailto:)?([a-z0-9'\\._-]+@[a-z0-9\\.-]+\\.[a-z0-9]{2,4})([a-яё0-9\\._%+-=\\?:&]*)/ig,\n emailAddStrongRe = /(mailto:|\\s[@]|\\s[+])?([a-z0-9'\\._-]+@[a-z0-9\\.-]+\\.[a-z0-9]{2,4})([a-яё0-9\\._%\\+-=\\?:&]*)/ig,\n ipStrongRe = /(((https?)|(ftps?)):\\/\\/([\\-\\wа-яё]*:?[\\-\\wа-яё]*@)?)(((1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])\\.){3}(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9]))(:\\d+)?(\\/[%\\-\\wа-яё]*(\\.[\\wа-яё]{2,})?(([\\wа-яё\\-\\.\\?\\\\\\/\\+@&#;:`~=%!,\\(\\)]*)(\\.[\\wа-яё]{2,})?)*)*\\/?/ig,\n hostnameStrongRe = /((((https?)|(ftps?)):\\/\\/([\\-\\wа-яё]*:?[\\-\\wа-яё]*@)?)|(([\\-\\wа-яё]*:?[\\-\\wа-яё]*@)?www\\.))((([\\-\\wа-яё]+\\.)+[\\wа-яё\\-]{2,}|([\\-\\wа-яё]+))(:\\d+)?(\\/[%\\-\\wа-яё]*(\\.[\\wа-яё]{2,})?(([\\wа-яё\\-\\.\\?\\\\\\/\\+@&#;:`~=%!,\\(\\)]*)(\\.[\\wа-яё]{2,})?)*)*\\/?)/ig,\n documentSettingsType = {\n \tParagraph : 0,\n Table : 1,\n Header : 2,\n TextArt : 3,\n Shape : 4,\n Image : 5,\n Slide : 6,\n Chart : 7,\n MailMerge : 8,\n Signature : 9,\n Pivot : 10,\n Cell : 11,\n Slicer : 12,\n Form : 13\n },\n importTextType = {\n DRM: 0,\n CSV: 1,\n TXT: 2,\n Paste: 3,\n Columns: 4,\n Data: 5\n },\n isMobile = /android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent || navigator.vendor || window.opera),\n me = this,\n checkSize = function() {\n var scale = {};\n if ( !!window.AscCommon && !!window.AscCommon.checkDeviceScale ) {\n scale = window.AscCommon.checkDeviceScale();\n AscCommon.correctApplicationScale(scale);\n } else {\n var str_mq_125 = \"screen and (-webkit-min-device-pixel-ratio: 1.25) and (-webkit-max-device-pixel-ratio: 1.49), \" +\n \"screen and (min-resolution: 1.25dppx) and (max-resolution: 1.49dppx)\";\n var str_mq_150 = \"screen and (-webkit-min-device-pixel-ratio: 1.5) and (-webkit-max-device-pixel-ratio: 1.74), \" +\n \"screen and (min-resolution: 1.5dppx) and (max-resolution: 1.74dppx)\";\n var str_mq_175 = \"screen and (-webkit-min-device-pixel-ratio: 1.75) and (-webkit-max-device-pixel-ratio: 1.99), \" +\n \"screen and (min-resolution: 1.75dppx) and (max-resolution: 1.99dppx)\";\n var str_mq_200 = \"screen and (-webkit-min-device-pixel-ratio: 2), \" +\n \"screen and (min-resolution: 2dppx), screen and (min-resolution: 192dpi)\";\n const str_mq_225 = \"screen and (-webkit-min-device-pixel-ratio: 2.25), \" +\n \"screen and (min-resolution: 2.25dppx), screen and (min-resolution: 216dpi)\";\n\n if ( window.matchMedia(str_mq_125).matches ) {\n scale.devicePixelRatio = 1.5;\n } else\n if ( window.matchMedia(str_mq_150).matches ) {\n scale.devicePixelRatio = 1.5;\n } else\n if ( window.matchMedia(str_mq_175).matches ) {\n scale.devicePixelRatio = 1.75;\n } else\n if ( window.matchMedia(str_mq_200).matches )\n scale.devicePixelRatio = 2;\n else scale.devicePixelRatio = 1;\n\n if ( window.matchMedia(str_mq_225).matches ) {\n scale.devicePixelRatio = 2.25;\n }\n }\n\n var $root = $(document.body);\n var classes = document.body.className;\n var clear_list = classes.replace(/pixel-ratio__[\\w-]+/gi,'').trim();\n if ( scale.devicePixelRatio < 1.25 ) {\n if ( /pixel-ratio__/.test(classes) ) {\n document.body.className = clear_list;\n }\n } else\n if ( scale.devicePixelRatio < 1.5 ) {\n if ( !/pixel-ratio__1_25/.test(classes) ) {\n document.body.className = clear_list + ' pixel-ratio__1_25';\n }\n } else\n if ( scale.devicePixelRatio < 1.75 ) {\n if ( !/pixel-ratio__1_5/.test(classes) ) {\n document.body.className = clear_list + ' pixel-ratio__1_5';\n }\n } else\n if ( !(scale.devicePixelRatio < 1.75) && scale.devicePixelRatio < 2 ) {\n if ( !/pixel-ratio__1_75/.test(classes) ) {\n document.body.className = clear_list + ' pixel-ratio__1_75';\n }\n } else\n if ( !(scale.devicePixelRatio < 2) && scale.devicePixelRatio < 2.25 ) {\n if ( !/pixel-ratio__2\\b/.test(classes) ) {\n document.body.className = clear_list + ' pixel-ratio__2';\n }\n } else {\n // $root.addClass('pixel-ratio__2_5');\n if ( !/pixel-ratio__2_5/.test(classes) ) {\n document.body.className = clear_list + ' pixel-ratio__2_5';\n }\n }\n\n me.zoom = scale.correct ? scale.zoom : 1;\n me.innerWidth = window.innerWidth * me.zoom;\n me.innerHeight = window.innerHeight * me.zoom;\n me.applicationPixelRatio = scale.applicationPixelRatio || scale.devicePixelRatio;\n };\n checkSizeIE = function() {\n me.innerWidth = window.innerWidth;\n me.innerHeight = window.innerHeight;\n },\n isOffsetUsedZoom = function() {\n if (isChrome && 128 <= chromeVersion)\n return (me.zoom === 1) ? false : true;\n return false;\n },\n getBoundingClientRect = function(element) {\n let rect = element.getBoundingClientRect();\n if (!isOffsetUsedZoom())\n return rect;\n\n let koef = me.zoom;\n let newRect = {}\n if (rect.x!==undefined) newRect.x = rect.x * koef;\n if (rect.y!==undefined) newRect.y = rect.y * koef;\n if (rect.width!==undefined) newRect.width = rect.width * koef;\n if (rect.height!==undefined) newRect.height = rect.height * koef;\n\n if (rect.left!==undefined) newRect.left = rect.left * koef;\n if (rect.top!==undefined) newRect.top = rect.top * koef;\n if (rect.right!==undefined) newRect.right = rect.right * koef;\n if (rect.bottom!==undefined) newRect.bottom = rect.bottom * koef;\n return newRect;\n },\n getOffsetLeft = function(element) {\n if (!isOffsetUsedZoom())\n return element.offsetLeft;\n return element.offsetLeft * me.zoom;\n },\n getOffsetTop = function(element) {\n if (!isOffsetUsedZoom())\n return element.offsetTop;\n return element.offsetTop * me.zoom;\n },\n getOffset = function($element) {\n let pos = $element.offset();\n if (!isOffsetUsedZoom())\n return pos;\n return {left: pos.left * me.zoom, top: pos.top * me.zoom};\n },\n getPosition = function($element) {\n let pos = $element.position();\n if (!isOffsetUsedZoom())\n return pos;\n return {left: pos.left * me.zoom, top: pos.top * me.zoom};\n };\n\n me.zoom = 1;\n me.applicationPixelRatio = 1;\n me.innerWidth = window.innerWidth;\n me.innerHeight = window.innerHeight;\n if ( isIE ) {\n $(document.body).addClass('ie');\n $(window).on('resize', checkSizeIE);\n } else {\n checkSize();\n $(window).on('resize', checkSize);\n }\n\n return {\n checkSize: checkSize,\n\n userAgent: userAgent,\n isStrict: isStrict,\n isIEQuirks: isIE && (!isStrict && (isIE6 || isIE7 || isIE8 || isIE9)),\n isOpera : isOpera,\n isOpera10_5 : isOpera10_5,\n isWebKit : isWebKit,\n isChrome : isChrome,\n isSafari : isSafari,\n isSafari3 : isSafari3,\n isSafari4 : isSafari4,\n isSafari5 : isSafari5,\n isSafari5_0 : isSafari5_0,\n isSafari2 : isSafari2,\n isIE : isIE,\n isIE6 : isIE6,\n isIE7 : isIE7,\n isIE7m : isIE6 || isIE7,\n isIE7p : isIE && !isIE6,\n isIE8 : isIE8,\n isIE8m : isIE6 || isIE7 || isIE8,\n isIE8p : isIE && !(isIE6 || isIE7),\n isIE9 : isIE9,\n isIE9m : isIE6 || isIE7 || isIE8 || isIE9,\n isIE9p : isIE && !(isIE6 || isIE7 || isIE8),\n isIE10 : isIE10,\n isIE10m : isIE6 || isIE7 || isIE8 || isIE9 || isIE10,\n isIE10p : isIE && !(isIE6 || isIE7 || isIE8 || isIE9),\n isIE11: isIE11,\n isIE11m : isIE6 || isIE7 || isIE8 || isIE9 || isIE10 || isIE11,\n isIE11p : isIE && !(isIE6 || isIE7 || isIE8 || isIE9 || isIE10),\n isGecko : isGecko,\n isGecko3 : isGecko3,\n isGecko4 : isGecko4,\n isGecko5 : isGecko5,\n isGecko10 : isGecko10,\n isFF3_0 : isFF3_0,\n isFF3_5 : isFF3_5,\n isFF3_6 : isFF3_6,\n isFF4 : 4 <= firefoxVersion && firefoxVersion < 5,\n isFF5 : 5 <= firefoxVersion && firefoxVersion < 6,\n isFF10 : 10 <= firefoxVersion && firefoxVersion < 11,\n isLinux : isLinux,\n isWindows : isWindows,\n isMac : isMac,\n chromeVersion: chromeVersion,\n firefoxVersion: firefoxVersion,\n ieVersion: ieVersion,\n operaVersion: operaVersion,\n safariVersion: safariVersion,\n webKitVersion: webKitVersion,\n isSecure: isSecure,\n emailRe: emailRe,\n ipRe: ipRe,\n hostnameRe: hostnameRe,\n localRe: localRe,\n emailStrongRe: emailStrongRe,\n emailAddStrongRe: emailAddStrongRe,\n ipStrongRe: ipStrongRe,\n hostnameStrongRe: hostnameStrongRe,\n documentSettingsType: documentSettingsType,\n importTextType: importTextType,\n zoom: function() {return me.zoom;},\n applicationPixelRatio: function() {return me.applicationPixelRatio;},\n topOffset: 0,\n innerWidth: function() {return me.innerWidth;},\n innerHeight: function() {return me.innerHeight;},\n croppedGeometry: function() {return {left:0, top: Common.Utils.InternalSettings.get('window-inactive-area-top'),\n width: me.innerWidth, height: me.innerHeight - Common.Utils.InternalSettings.get('window-inactive-area-top')}},\n getBoundingClientRect: getBoundingClientRect,\n getOffsetLeft: getOffsetLeft,\n getOffsetTop: getOffsetTop,\n getOffset: getOffset,\n getPosition: getPosition\n }\n})();\n\nCommon.Utils = _extend_object(Common.Utils, utils);\n\nvar themecolor = new(function() {\n var initnames = true;\n\n return {\n txtBlack: 'Black',\n txtWhite: 'White',\n txtRed: 'Red',\n txtGreen: 'Green',\n txtBlue: 'Blue',\n txtYellow: 'Yellow',\n txtPurple: 'Purple',\n txtAqua: 'Aqua',\n txtDarkRed: 'Dark red',\n txtDarkGreen: 'Dark green',\n txtDarkBlue: 'Dark blue',\n txtDarkYellow: 'Dark yellow',\n txtDarkPurple: 'Dark purple',\n txtDarkTeal: 'Dark teal',\n txtLightGray: 'Light gray',\n txtGray: 'Gray',\n txtLightBlue: 'Light blue',\n txtPink: 'Pink',\n txtLightYellow: 'Light yellow',\n txtSkyBlue: 'Sky blue',\n txtRose: 'Rose',\n txtTurquosie: 'Turquosie',\n txtLightGreen: 'Light green',\n txtLavender: 'Lavender',\n txtLightOrange: 'Light orange',\n txtTeal: 'Teal',\n txtGold: 'Gold',\n txtOrange: 'Orange',\n txtIndigo: 'Indigo',\n txtBrown: 'Brown',\n txtDarkGray: 'Dark gray',\n txtbackground: 'Background',\n txttext: 'Text',\n txtaccent: 'Accent',\n txtDarker: 'Darker',\n txtLighter: 'Lighter',\n txtBrightGreen: 'Bright green',\n txtViolet: 'Violet',\n\n ThemeValues: [6, 15, 7, 16, 0, 1, 2, 3, 4, 5],\n\n getTranslation: function(name) {\n if (!name) return '';\n\n return this['txt' + name.replace(' ', '')] || name\n },\n\n getEffectTranslation: function(value) {\n value = parseInt(value*100);\n if (value !== 0) {\n return (value>0 ? this.txtLighter : this.txtDarker) + ' ' + Math.abs(value) + '%';\n }\n return '';\n },\n\n setColors: function(colors, standart_colors) {\n if (initnames) {\n for (var i=1; i<3; i++) {\n this['txtbackground'+i] = this.txtbackground + ' ' + i;\n this['txttext'+i] = this.txttext + ' ' + i;\n }\n for (var i=1; i<7; i++) {\n this['txtaccent'+i] = this.txtaccent + ' ' + i;\n }\n initnames = false;\n }\n\n var i, j, item;\n\n if (standart_colors && standart_colors.length > 0) {\n var standartcolors = [];\n\n for (i = 0; i < standart_colors.length; i++) {\n item = {\n color: this.getHexColor(standart_colors[i].get_r(), standart_colors[i].get_g(), standart_colors[i].get_b()),\n tip: this.getTranslation(standart_colors[i].asc_getName())\n };\n standartcolors.push(item);\n }\n\n this.standartcolors = standartcolors;\n }\n\n var effectСolors= [];\n\n for (i = 0; i < 6; i++) {\n for (j = 0; j < 10; j++) {\n var idx = i + j * 6;\n var colorName = this.getTranslation(colors[idx].asc_getName()),\n schemeName = this.getTranslation(colors[idx].asc_getNameInColorScheme()),\n effectName = this.getEffectTranslation(colors[idx].asc_getEffectValue());\n if (colorName) {\n schemeName && (colorName += Common.Utils.String.textComma + ' ' + schemeName);\n effectName && (colorName += Common.Utils.String.textComma + ' ' + effectName);\n }\n item = {\n color: this.getHexColor(colors[idx].get_r(), colors[idx].get_g(), colors[idx].get_b()),\n effectId: idx,\n effectValue: this.ThemeValues[j],\n tip: colorName\n };\n effectСolors.push(item);\n }\n }\n this.effectcolors = effectСolors;\n },\n\n getEffectColors: function() {\n return this.effectcolors;\n },\n\n getStandartColors: function() {\n return this.standartcolors;\n },\n\n getHexColor: function(r, g, b){\n r = r.toString(16);\n g = g.toString(16);\n b = b.toString(16);\n if (r.length == 1) r = '0' + r;\n if (g.length == 1) g = '0' + g;\n if (b.length == 1) b = '0' + b;\n return r + g + b;\n },\n\n getRgbColor: function(clr){\n var color = (typeof(clr) == 'object') ? clr.color : clr;\n\n color=color.replace(/#/,'');\n if(color.length==3) color=color.replace(/(.)/g,'$1$1');\n color=parseInt(color,16);\n var c = new Asc.asc_CColor();\n c.put_type( (typeof(clr) == 'object' && clr.effectId !== undefined)? Asc.c_oAscColor.COLOR_TYPE_SCHEME : Asc.c_oAscColor.COLOR_TYPE_SRGB);\n c.put_r(color>>16);\n c.put_g((color&0xff00)>>8);\n c.put_b(color&0xff);\n c.put_a(0xff);\n if (clr.effectId !== undefined)\n c.put_value(clr.effectId);\n return c;\n },\n\n colorValue2EffectId: function(clr){\n if (typeof(clr) == 'object' && clr && clr.effectValue !== undefined && this.effectcolors) {\n for (var i = 0; i < this.effectcolors.length; i++) {\n if (this.effectcolors[i].effectValue===clr.effectValue && clr.color.toUpperCase()===this.effectcolors[i].color.toUpperCase()) {\n clr.effectId = this.effectcolors[i].effectId;\n break;\n }\n }\n }\n return clr;\n }\n }\n})();\nCommon.Utils.ThemeColor = _extend_object(themecolor, Common.Utils.ThemeColor);\n\nvar metrics = new(function() {\n var me = this;\n\n me.c_MetricUnits = {\n cm: 0,\n pt: 1,\n inch: 2\n };\n\n me.currentMetric = me.c_MetricUnits.pt;\n me.metricName = ['Cm', 'Pt', 'Inch'];\n me.defaultMetric = me.c_MetricUnits.cm;\n\n return {\n c_MetricUnits: me.c_MetricUnits,\n txtCm : 'cm',\n txtPt : 'pt',\n txtInch : '\\\"',\n\n setCurrentMetric: function(value) {\n me.currentMetric = value;\n },\n\n getCurrentMetric: function() {\n return me.currentMetric;\n },\n\n getCurrentMetricName: function() {\n return this['txt' + me.metricName[me.currentMetric]];\n },\n\n getMetricName: function(unit) {\n return this['txt' + me.metricName[(unit !== undefined) ? unit : 0]];\n },\n \n setDefaultMetric: function(value) {\n me.defaultMetric = value;\n },\n\n getDefaultMetric: function() {\n return me.defaultMetric;\n },\n\n fnRecalcToMM: function(value) {\n // value in pt/cm/inch. need to convert to mm\n if (value!==null && value!==undefined) {\n switch (me.currentMetric) {\n case me.c_MetricUnits.cm:\n return value * 10;\n case me.c_MetricUnits.pt:\n return value * 25.4 / 72.0;\n case me.c_MetricUnits.inch:\n return value * 25.4;\n }\n }\n return value;\n },\n\n fnRecalcFromMM: function(value) {\n // value in mm. need to convert to pt/cm/inch\n switch (me.currentMetric) {\n case me.c_MetricUnits.cm:\n return parseFloat((value/10.).toFixed(4));\n case me.c_MetricUnits.pt:\n return parseFloat((value * 72.0 / 25.4).toFixed(3));\n case me.c_MetricUnits.inch:\n return parseFloat((value / 25.4).toFixed(3));\n }\n return value;\n }\n }\n})();\n\nCommon.Utils.Metric = _extend_object(metrics, Common.Utils.Metric);\n\nCommon.Utils.RGBColor = function(colorString) {\n var r, g, b;\n\n if (colorString.charAt(0) == '#') {\n colorString = colorString.substr(1,6);\n }\n\n colorString = colorString.replace(/ /g,'');\n colorString = colorString.toLowerCase();\n\n var colorDefinitions = [\n {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n// example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],\n process: function (bits){\n return [\n parseInt(bits[1]),\n parseInt(bits[2]),\n parseInt(bits[3])\n ];\n }\n },\n {\n re: /^hsb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n// example: ['hsb(123, 34, 100)'],\n process: function (bits){\n var rgb = {};\n var h = Math.round(bits[1]);\n var s = Math.round(bits[2] * 255 / 100);\n var v = Math.round(bits[3] * 255 / 100);\n if(s == 0) {\n rgb.r = rgb.g = rgb.b = v;\n } else {\n var t1 = v;\n var t2 = (255 - s) * v / 255;\n var t3 = (t1 - t2) * (h % 60) / 60;\n\n if (h == 360) h = 0;\n if (h < 60) {rgb.r = t1; rgb.b = t2; rgb.g = t2 + t3}\n else if (h < 120) {rgb.g = t1; rgb.b = t2; rgb.r = t1 - t3}\n else if (h < 180) {rgb.g = t1; rgb.r = t2; rgb.b = t2 + t3}\n else if (h < 240) {rgb.b = t1; rgb.r = t2; rgb.g = t1 - t3}\n else if (h < 300) {rgb.b = t1; rgb.g = t2; rgb.r = t2 + t3}\n else if (h < 360) {rgb.r = t1; rgb.g = t2; rgb.b = t1 - t3}\n else {rgb.r = 0; rgb.g = 0; rgb.b = 0}\n }\n return [\n Math.round(rgb.r),\n Math.round(rgb.g),\n Math.round(rgb.b)\n ];\n }\n },\n {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n// example: ['#00ff00', '336699'],\n process: function (bits){\n return [\n parseInt(bits[1], 16),\n parseInt(bits[2], 16),\n parseInt(bits[3], 16)\n ];\n }\n },\n {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n// example: ['#fb0', 'f0f'],\n process: function (bits){\n return [\n parseInt(bits[1] + bits[1], 16),\n parseInt(bits[2] + bits[2], 16),\n parseInt(bits[3] + bits[3], 16)\n ];\n }\n }\n ];\n\n for (var i = 0; i < colorDefinitions.length; i++) {\n var re = colorDefinitions[i].re;\n var processor = colorDefinitions[i].process;\n var bits = re.exec(colorString);\n if (bits) {\n var channels = processor(bits);\n r = channels[0];\n g = channels[1];\n b = channels[2];\n }\n }\n\n r = (r < 0 || isNaN(r)) ? 0 : ((r > 255) ? 255 : r);\n g = (g < 0 || isNaN(g)) ? 0 : ((g > 255) ? 255 : g);\n b = (b < 0 || isNaN(b)) ? 0 : ((b > 255) ? 255 : b);\n\n var isEqual = function(color){\n return ((r == color.r) && (g == color.g) && (b == color.b));\n };\n\n var toRGB = function() {\n return 'rgb(' + r + ', ' + g + ', ' + b + ')';\n };\n\n var toRGBA = function(alfa) {\n if (alfa===undefined) alfa = 1;\n return 'rgba(' + r + ', ' + g + ', ' + b + ', ' + alfa + ')';\n };\n\n var toHex = function() {\n var _r = r.toString(16);\n var _g = g.toString(16);\n var _b = b.toString(16);\n if (_r.length == 1) _r = '0' + _r;\n if (_g.length == 1) _g = '0' + _g;\n if (_b.length == 1) _b = '0' + _b;\n return '#' + _r + _g + _b;\n };\n\n var toHSB = function() {\n var hsb = {\n h: 0,\n s: 0,\n b: 0\n };\n\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n hsb.b = max;\n hsb.s = max != 0 ? 255 * delta / max : 0;\n if (hsb.s != 0) {\n if (r == max) {\n hsb.h = 0 + (g - b) / delta;\n } else if (g == max) {\n hsb.h = 2 + (b - r) / delta;\n } else {\n hsb.h = 4 + (r - g) / delta;\n }\n } else {\n hsb.h = 0;\n }\n hsb.h *= 60;\n if (hsb.h < 0) {\n hsb.h += 360;\n }\n hsb.s *= 100 / 255;\n hsb.b *= 100 / 255;\n\n hsb.h = parseInt(hsb.h);\n hsb.s = parseInt(hsb.s);\n hsb.b = parseInt(hsb.b);\n\n return hsb;\n };\n\n return {\n r : r,\n g : g,\n b : b,\n isEqual : isEqual,\n toRGB : toRGB,\n toRGBA : toRGBA,\n toHex : toHex,\n toHSB : toHSB\n }\n};\n\nvar utilsString = new (function() {\n return {\n textCtrl: 'Ctrl',\n textShift: 'Shift',\n textAlt: 'Alt',\n textComma: ',',\n\n format: function(format) {\n var args = _.toArray(arguments).slice(1);\n if (args.length && typeof args[0] == 'object')\n args = args[0];\n return format.replace(/\\{(\\d+)\\}/g, function(s, i) {\n return args[i];\n });\n },\n\n htmlEncode: function(string) {\n return (typeof _ !== 'undefined') ? _.escape(string) :\n string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n },\n\n htmlDecode: function(string) {\n return _.unescape(string);\n },\n\n ellipsis: function(value, len, word) {\n if (value && value.length > len) {\n if (word) {\n var vs = value.substr(0, len - 2),\n index = Math.max(vs.lastIndexOf(' '), vs.lastIndexOf('.'), vs.lastIndexOf('!'), vs.lastIndexOf('?'));\n if (index !== -1 && index >= (len - 15)) {\n return vs.substr(0, index) + \"...\";\n }\n }\n return value.substr(0, len - 3) + \"...\";\n }\n return value;\n },\n\n platformKey: function(string, template, hookFn) {\n if (_.isEmpty(template))\n template = ' ({0})';\n\n if (Common.Utils.isMac) {\n if (_.isFunction(hookFn)) {\n string = hookFn.call(this, string);\n }\n return Common.Utils.String.format(template, string.replace(/\\+(?=\\S)/g, '').replace(/Ctrl|ctrl/g, '⌘').replace(/Alt|alt/g, '⌥').replace(/Shift|shift/g, '⇧'));\n }\n\n return Common.Utils.String.format(template, string.replace(/Ctrl|ctrl/g, this.textCtrl).replace(/Alt|alt/g, this.textAlt).replace(/Shift|shift/g, this.textShift));\n },\n\n parseFloat: function(string) {\n (typeof string === 'string') && (string = string.replace(',', '.'));\n return parseFloat(string)\n },\n\n encodeSurrogateChar: function(nUnicode) {\n if (nUnicode < 0x10000)\n {\n return String.fromCharCode(nUnicode);\n }\n else\n {\n nUnicode = nUnicode - 0x10000;\n var nLeadingChar = 0xD800 | (nUnicode >> 10);\n var nTrailingChar = 0xDC00 | (nUnicode & 0x3FF);\n return String.fromCharCode(nLeadingChar) + String.fromCharCode(nTrailingChar);\n }\n },\n\n fixedDigits: function(num, digits, fill) {\n (fill===undefined) && (fill = '0');\n var strfill = \"\",\n str = num.toString();\n for (var i=str.length; i0) return;\n var editor = (window.DE ? 'Document' : window.SSE ? 'Spreadsheet' : window.PE ? 'Presentation' : window.PDFE ? 'PDF' : 'that');\n var newDiv = document.createElement(\"div\");\n newDiv.innerHTML = '
' +\n '
' +\n '
' +\n '
Your browser is not supported.
' +\n '
Sorry, ' + editor + ' Editor is currently only supported in the latest versions of the Chrome, Firefox, Safari or Internet Explorer web browsers.
' +\n '
' +\n '
' +\n '
' +\n '
';\n\n document.body.appendChild(newDiv);\n\n $('#loading-mask').hide().remove();\n $('#viewport').hide().remove();\n};\n\nCommon.Utils.applyCustomization = function(config, elmap) {\n for (var name in config) {\n var $el;\n if (!!elmap[name]) {\n $el = $(elmap[name]);\n\n if ($el.length) {\n var item = config[name];\n if (item === false || item.visible === false) {\n $el.hide()\n } else {\n if (!!item.text) {\n $el.text(item.text);\n }\n\n if (item.visible === false) {\n $el.hide();\n }\n }\n }\n }\n }\n};\n\nCommon.Utils.applyCustomizationPlugins = function(plugins) {\n if (!plugins || plugins.length<1) return;\n\n var _createXMLHTTPObject = function() {\n var xmlhttp;\n if (typeof XMLHttpRequest != 'undefined') {\n xmlhttp = new XMLHttpRequest();\n } else {\n try {\n xmlhttp = new ActiveXObject(\"Msxml2.XMLHTTP\");\n }\n catch (e) {\n try {\n xmlhttp = new ActiveXObject(\"Microsoft.XMLHTTP\");\n }\n catch (E) {\n xmlhttp = false;\n }\n }\n }\n\n return xmlhttp;\n };\n\n var _getPluginCode = function(url) {\n if (!url) return '';\n try {\n var xhrObj = _createXMLHTTPObject();\n if (xhrObj && url) {\n xhrObj.open('GET', url, false);\n xhrObj.send('');\n if (xhrObj.status == 200)\n eval(xhrObj.responseText);\n }\n }\n catch (e) {}\n return null;\n };\n\n plugins.forEach(function(url){\n if (url) _getPluginCode(url);\n });\n};\n\nCommon.Utils.fillUserInfo = function(info, lang, defname, defid) {\n var _user = info || {};\n _user.anonymous = !_user.id;\n !_user.id && (_user.id = defid);\n _user.fullname = !_user.name ? defname : _user.name;\n _user.group && (_user.fullname = (_user.group).toString() + AscCommon.UserInfoParser.getSeparator() + _user.fullname);\n _user.guest = !_user.name;\n return _user;\n};\n\n\nCommon.Utils.createXhr = function () {\n var xmlhttp;\n\n if (typeof XMLHttpRequest != 'undefined') {\n xmlhttp = new XMLHttpRequest();\n } else {\n try {\n xmlhttp = new ActiveXObject(\"Msxml2.XMLHTTP\");\n } catch (e) {\n try {\n xmlhttp = new ActiveXObject(\"Microsoft.XMLHTTP\");\n } catch (E) {\n xmlhttp = false;\n }\n }\n }\n\n return xmlhttp;\n};\n\nCommon.Utils.getConfigJson = function (url) {\n if ( url ) {\n try {\n var xhrObj = Common.Utils.createXhr();\n if ( xhrObj ) {\n xhrObj.open('GET', url, false);\n xhrObj.send('');\n\n return JSON.parse(xhrObj.responseText);\n }\n } catch (e) {}\n }\n\n return null;\n};\n\nCommon.Utils.loadConfig = function(url, callback) {\n fetch(url, {\n method: 'get',\n headers: {\n 'Accept': 'application/json',\n },\n }).then(function(response){\n if ( response.ok )\n return response.json();\n else return 'error';\n }).then(function(json){\n callback(json);\n }).catch(function(e) {\n callback('error');\n });\n};\n\nCommon.Utils.asyncCall = function (callback, scope, args) {\n (new Promise(function (resolve, reject) {\n resolve();\n })).then(function () {\n callback.call(scope, args);\n });\n};\n\n// Extend javascript String type\nString.prototype.strongMatch = function(regExp){\n if (regExp && regExp instanceof RegExp) {\n var arr = this.toString().match(regExp);\n return !!(arr && arr.length > 0 && arr[0].length == this.length);\n }\n\n return false;\n};\n\nCommon.Utils.InternalSettings = new(function() {\n var settings = {};\n\n var _get = function(name) {\n return settings[name];\n },\n _set = function(name, value) {\n settings[name] = value;\n };\n\n return {\n get: _get,\n set: _set\n }\n});\n\nCommon.Utils.lockControls = function(causes, lock, opts, defControls) {\n !opts && (opts = {});\n\n var controls = opts.array || defControls;\n opts.merge && (controls = _.union(defControls,controls));\n\n function doLock(cmp, cause) {\n if ( cmp && cmp.options && _.contains(cmp.options.lock, cause) ) {\n var index = cmp.keepState.indexOf(cause);\n if (lock) {\n if (index < 0) {\n cmp.keepState.push(cause);\n }\n } else {\n if (!(index < 0)) {\n cmp.keepState.splice(index, 1);\n }\n }\n }\n }\n\n _.each(controls, function(item) {\n if (item && _.isFunction(item.setDisabled)) {\n !item.keepState && (item.keepState = []);\n if (opts.clear && opts.clear.length > 0 && item.keepState.length > 0) {\n item.keepState = _.difference(item.keepState, opts.clear);\n }\n\n _.isArray(causes) ? _.each(causes, function(c) {doLock(item, c)}) : doLock(item, causes);\n\n if (!(item.keepState.length > 0)) {\n item.isDisabled() && item.setDisabled(false);\n } else {\n !item.isDisabled() && item.setDisabled(true);\n }\n }\n });\n};\n\nCommon.Utils.injectButtons = function($slots, id, iconCls, caption, lock, split, menu, toggle, dataHint, dataHintDirection, dataHintOffset, dataHintTitle) {\n var btnsArr = createButtonSet();\n btnsArr.setDisabled(true);\n id = id || (\"id-toolbar-\" + iconCls);\n $slots.each(function(index, el) {\n var _cls = 'btn-toolbar';\n /x-huge/.test(el.className) && (_cls += ' x-huge icon-top');\n\n var button = new Common.UI.Button({\n parentEl: $slots.eq(index),\n id: id + index,\n cls: _cls,\n iconCls: iconCls,\n caption: caption,\n split: split || false,\n menu: menu || false,\n enableToggle: toggle || false,\n lock: lock,\n disabled: true,\n dataHint: dataHint,\n dataHintDirection: dataHintDirection,\n dataHintOffset: dataHintOffset,\n dataHintTitle: dataHintTitle\n });\n\n btnsArr.add(button);\n });\n return btnsArr;\n};\n\nCommon.Utils.injectComponent = function ($slot, cmp) {\n if (cmp && $slot.length) {\n cmp.rendered ? $slot.append(cmp.$el) : cmp.render($slot);\n }\n};\n\nCommon.Utils.startFullscreenForElement = function (element) {\n if (element) {\n if(element.requestFullscreen) {\n element.requestFullscreen();\n } else if(element.webkitRequestFullscreen) {\n element.webkitRequestFullscreen();\n } else if(element.mozRequestFullScreen) {\n element.mozRequestFullScreen();\n } else if(element.msRequestFullscreen) {\n element.msRequestFullscreen();\n }\n }\n}\n\nCommon.Utils.cancelFullscreen = function () {\n if(document.cancelFullScreen) {\n document.cancelFullScreen();\n } else if(document.webkitCancelFullScreen ) {\n document.webkitCancelFullScreen();\n } else if(document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if(document.msExitFullscreen) {\n document.msExitFullscreen();\n }\n}\n\nCommon.Utils.warningDocumentIsLocked = function (opts) {\n if ( opts.disablefunc )\n opts.disablefunc(true);\n\n var app = window.DE || window.PE || window.SSE || window.PDFE;\n\n Common.UI.warning({\n msg: Common.Locale.get(\"warnFileLocked\",{name:\"Common.Translation\", default: \"You can't edit this file. Document is in use by another application.\"}),\n buttons: [{\n value: 'view',\n caption: Common.Locale.get(\"warnFileLockedBtnView\",{name:\"Common.Translation\", default: \"Open for viewing\"})\n }, {\n value: 'edit',\n caption: Common.Locale.get(\"warnFileLockedBtnEdit\",{name:\"Common.Translation\", default: \"Create a copy\"})\n }],\n primary: 'view',\n callback: function(btn){\n if (btn == 'edit') {\n if ( opts.disablefunc ) opts.disablefunc(false);\n app.getController('Main').api.asc_setLocalRestrictions(Asc.c_oAscLocalRestrictionType.None);\n }\n }\n });\n};\n\njQuery.fn.extend({\n elementById: function (id, parent) {\n /**\n * usage: $obj.findById('#id')\n * $().findById('#id', $obj | node)\n * $.fn.findById('#id', $obj | node)\n *\n * return: dom element\n * */\n var _el = document.getElementById(id.substring(1));\n if ( !_el ) {\n parent = parent || this;\n if ( parent && parent.length > 0 ) {\n parent.each(function (i, node) {\n if (node.querySelectorAll) {\n _el = node.querySelectorAll(id);\n if ( _el.length == 0 ) {\n if ( ('#' + node.id) == id ) {\n _el = node;\n return false;\n }\n } else\n if ( _el.length ) {\n _el = _el[0];\n return false;\n }\n }\n })\n } else {\n if (parent && parent.querySelectorAll) {\n _el = parent.querySelectorAll(id);\n if ( _el && _el.length ) return _el[0];\n }\n }\n }\n\n return _el;\n },\n\n findById: function (id, parent) {\n var _el = $.fn.elementById.apply(this, arguments);\n return !!_el ? $(_el) : $();\n }\n});\n\nCommon.Utils.InternalSettings.set('toolbar-height-tabs', 32);\nCommon.Utils.InternalSettings.set('toolbar-height-tabs-top-title', 28);\nCommon.Utils.InternalSettings.set('toolbar-height-controls', 67);\nCommon.Utils.InternalSettings.set('document-title-height', 28);\nCommon.Utils.InternalSettings.set('window-inactive-area-top', 0);\n\nCommon.Utils.InternalSettings.set('toolbar-height-compact', Common.Utils.InternalSettings.get('toolbar-height-tabs'));\nCommon.Utils.InternalSettings.set('toolbar-height-normal', Common.Utils.InternalSettings.get('toolbar-height-tabs') + Common.Utils.InternalSettings.get('toolbar-height-controls'));\n\nCommon.Utils.ModalWindow = new(function() {\n var count = 0;\n return {\n show: function() {\n count++;\n },\n\n close: function() {\n count--;\n },\n\n isVisible: function() {\n return count>0;\n }\n }\n})();\n\nCommon.Utils.UserInfoParser = new(function() {\n var parse = false;\n var separator = String.fromCharCode(160);\n return {\n setParser: function(value) {\n parse = !!value;\n },\n\n getSeparator: function() {\n return separator;\n },\n\n getParsedName: function(username) {\n if (parse && username) {\n return username.substring(username.indexOf(separator)+1);\n } else\n return username;\n },\n\n getParsedGroups: function(username) {\n if (parse && username) {\n var idx = username.indexOf(separator),\n groups = (idx>-1) ? username.substring(0, idx).split(',') : [];\n for (var i=0; i0; i--) {\n if (fio[i][0]!=='(' && fio[i][0]!==')') {\n if (/[\\u0600-\\u06FF]/.test(initials))\n initials += '\\u2009';\n initials += fio[i].substring(0, 1).toUpperCase();\n break;\n }\n }\n return initials;\n};\n\nCommon.Utils.getKeyByValue = function(obj, value) {\n for(var prop in obj) {\n if(obj.hasOwnProperty(prop)) {\n if(obj[prop] === value)\n return prop;\n }\n }\n};\n\n!Common.UI && (Common.UI = {});\nCommon.UI.isRTL = function () {\n if ( window.isrtl === undefined ) {\n if ( window.nativeprocvars && window.nativeprocvars.rtl !== undefined )\n window.isrtl = window.nativeprocvars.rtl;\n else window.isrtl = !Common.Utils.isIE && Common.localStorage.getBool(\"ui-rtl\", Common.Locale.isCurrentLanguageRtl());\n }\n\n return window.isrtl;\n};\n\nCommon.UI.iconsStr2IconsObj = function(icons) {\n let result = icons;\n if (typeof result === 'string') {\n if (result.indexOf('%') !== -1) {\n /*\n valid params:\n theme-type - {string} theme type (light|dark|common)\n theme-name - {string} the name of theme\n state - {string} state of icons for different situations (normal|hover|active)\n scale - {string} list of avaliable scales (100|125|150|175|200|default|extended)\n extension - {string} use it after symbol \".\" (png|jpeg|svg)\n\n Example: \"resources/%theme-type%(light|dark)/%state%(normal)icon%scale%(default).%extension%(png)\"\n */\n let scaleValue = {\n '100%' : '.',\n '125%' : '@1.25x.',\n '150%' : '@1.5x.',\n '175%' : '@1.75x.',\n '200%' : '@2x.'\n }\n let arrParams = ['theme-type', 'theme-name' ,'state', 'scale', 'extension'],\n start = result.indexOf('%'),\n template = result.substring(start).replace(/[/.]/g, ('')),\n commonPart = result.substring(0, start),\n end = 0,\n param = null,\n values = null,\n iconName = '',\n tempObj = {};\n\n result = [];\n\n for (let index = 0; index < arrParams.length; index++) {\n param = arrParams[index];\n start = template.indexOf(param) - 1;\n if (start < 0 )\n continue;\n\n end = param.length + 2;\n template = template.substring(0, start) + template.substring(start + end);\n start = template.indexOf('(', 0);\n end = template.indexOf(')', 0);\n values = template.substring((start + 1), end);\n template = template.substring(0, start) + template.substring(++end);\n tempObj[param] = values.split('|');\n }\n\n if (template.length) {\n iconName = template;\n } else {\n let arr = commonPart.split('/');\n iconName = arr.pop().replace(/\\./g, '');\n commonPart = arr.join('/') + '/';\n }\n\n // we don't work with svg yet. Change it when we will work with it (extended variant).\n if (tempObj['scale'] && (tempObj['scale'] == 'default' || tempObj['scale'] == 'extended') ) {\n tempObj['scale'] = ['100', '125', '150', '175', '200'];\n } else if (!tempObj['scale']) {\n tempObj['scale'] = ['100'];\n }\n\n if (!tempObj['state']) {\n tempObj['state'] = ['normal'];\n }\n\n if (!iconName) {\n iconName = 'icon';\n }\n\n let bHasName = !!tempObj['theme-name'];\n let bHasType = (tempObj['theme-type'] && tempObj['theme-type'][0] !== 'common');\n let arrThemes = bHasName ? tempObj['theme-name'] : (bHasType ? tempObj['theme-type'] : []);\n let paramName = bHasName ? 'theme' : 'style';\n if (arrThemes.length) {\n for (let thInd = 0; thInd < arrThemes.length; thInd++) {\n let obj = {};\n obj[paramName] = arrThemes[thInd];\n result.push(obj);\n }\n } else {\n result.push({});\n }\n\n for (let index = 0; index < result.length; index++) {\n for (let scaleInd = 0; scaleInd < tempObj['scale'].length; scaleInd++) {\n let themePath = (result[index][paramName] || 'img') + '/';\n let scale = tempObj['scale'][scaleInd] + '%';\n let obj = {};\n for (let stateInd = 0; stateInd < tempObj['state'].length; stateInd++) {\n let state = tempObj['state'][stateInd];\n obj[state] = commonPart + themePath + (state == 'normal' ? '' : (state + '_')) + iconName + (scaleValue[scale] || '.') + tempObj['extension'][0];\n }\n result[index][scale] = obj;\n }\n }\n } else {\n return [icons];\n }\n }\n return result;\n}\n\nCommon.UI.getSuitableIcons = function(icons) {\n if (!icons) return;\n\n icons = Common.UI.iconsStr2IconsObj(icons);\n if (icons.length && typeof icons[0] !== 'string') {\n var theme = Common.UI.Themes.currentThemeId().toLowerCase(),\n style = Common.UI.Themes.isDarkTheme() ? 'dark' : 'light',\n idx = -1;\n for (var i=0; i0.01 && defUrl) && (bestUrl = defUrl);\n return {\n 'normal': bestUrl ? bestUrl['normal'] : '',\n 'hover': bestUrl ? bestUrl['hover'] || bestUrl['normal'] : '',\n 'active': bestUrl ? bestUrl['active'] || bestUrl['normal'] : ''\n };\n } else { // old version\n var url = icons[((Common.Utils.applicationPixelRatio() > 1 && icons.length > 1) ? 1 : 0) + (icons.length > 2 ? 2 : 0)];\n return {\n 'normal': url,\n 'hover': url,\n 'active': url\n };\n }\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * This file automatically generated from `pre-publish.js`.\n * Do not manually edit.\n */\n\nmodule.exports = {\n \"area\": true,\n \"base\": true,\n \"br\": true,\n \"col\": true,\n \"embed\": true,\n \"hr\": true,\n \"img\": true,\n \"input\": true,\n \"link\": true,\n \"meta\": true,\n \"param\": true,\n \"source\": true,\n \"track\": true,\n \"wbr\": true\n};\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw new Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw new Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var inProgress = {};\nvar dataWebpackPrefix = \"documenteditor:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"dist/js/\" + chunkId + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"526\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkdocumenteditor\"] = self[\"webpackChunkdocumenteditor\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(t, e, r) {\n if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);\n var o = [null];\n o.push.apply(o, e);\n var p = new (t.bind.apply(t, o))();\n return r && setPrototypeOf(p, r.prototype), p;\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n try {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n } catch (e) {\n return typeof fn === \"function\";\n }\n}","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionStart(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionstart', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionstart', fireCallBack);\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, transitionStart, trigger, val, value, width };\n","// eslint-disable-next-line\nimport * as methods from 'dom7';\nObject.keys(methods).forEach(methodName => {\n if (methodName === '$') return;\n methods.$.fn[methodName] = methods[methodName];\n});\nexport default methods.$;","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","/* eslint-disable */\nfunction signum(num) {\n return num < 0 ? -1 : 0 === num ? 0 : 1;\n}\nfunction lerp(start, stop, amount) {\n return (1 - amount) * start + amount * stop;\n}\nfunction clampInt(min, max, input) {\n return input < min ? min : input > max ? max : input;\n}\nfunction clampDouble(min, max, input) {\n return input < min ? min : input > max ? max : input;\n}\nfunction sanitizeDegreesDouble(degrees) {\n return (degrees %= 360) < 0 && (degrees += 360), degrees;\n}\nfunction rotationDirection(from, to) {\n return sanitizeDegreesDouble(to - from) <= 180 ? 1 : -1;\n}\nfunction differenceDegrees(a, b) {\n return 180 - Math.abs(Math.abs(a - b) - 180);\n}\nfunction matrixMultiply(row, matrix) {\n return [row[0] * matrix[0][0] + row[1] * matrix[0][1] + row[2] * matrix[0][2], row[0] * matrix[1][0] + row[1] * matrix[1][1] + row[2] * matrix[1][2], row[0] * matrix[2][0] + row[1] * matrix[2][1] + row[2] * matrix[2][2]];\n}\nconst SRGB_TO_XYZ = [[.41233895, .35762064, .18051042], [.2126, .7152, .0722], [.01932141, .11916382, .95034478]],\n XYZ_TO_SRGB = [[3.2413774792388685, -1.5376652402851851, -.49885366846268053], [-.9691452513005321, 1.8758853451067872, .04156585616912061], [.05562093689691305, -.20395524564742123, 1.0571799111220335]],\n WHITE_POINT_D65 = [95.047, 100, 108.883];\nfunction argbFromRgb(red, green, blue) {\n return (255 << 24 | (255 & red) << 16 | (255 & green) << 8 | 255 & blue) >>> 0;\n}\nfunction argbFromLinrgb(linrgb) {\n return argbFromRgb(delinearized(linrgb[0]), delinearized(linrgb[1]), delinearized(linrgb[2]));\n}\nfunction redFromArgb(argb) {\n return argb >> 16 & 255;\n}\nfunction greenFromArgb(argb) {\n return argb >> 8 & 255;\n}\nfunction blueFromArgb(argb) {\n return 255 & argb;\n}\nfunction argbFromXyz(x, y, z) {\n const matrix = XYZ_TO_SRGB,\n linearR = matrix[0][0] * x + matrix[0][1] * y + matrix[0][2] * z,\n linearG = matrix[1][0] * x + matrix[1][1] * y + matrix[1][2] * z,\n linearB = matrix[2][0] * x + matrix[2][1] * y + matrix[2][2] * z;\n return argbFromRgb(delinearized(linearR), delinearized(linearG), delinearized(linearB));\n}\nfunction xyzFromArgb(argb) {\n return matrixMultiply([linearized(redFromArgb(argb)), linearized(greenFromArgb(argb)), linearized(blueFromArgb(argb))], SRGB_TO_XYZ);\n}\nfunction argbFromLstar(lstar) {\n const component = delinearized(yFromLstar(lstar));\n return argbFromRgb(component, component, component);\n}\nfunction lstarFromArgb(argb) {\n return 116 * labF(xyzFromArgb(argb)[1] / 100) - 16;\n}\nfunction yFromLstar(lstar) {\n return 100 * labInvf((lstar + 16) / 116);\n}\nfunction lstarFromY(y) {\n return 116 * labF(y / 100) - 16;\n}\nfunction linearized(rgbComponent) {\n const normalized = rgbComponent / 255;\n return normalized <= .040449936 ? normalized / 12.92 * 100 : 100 * Math.pow((normalized + .055) / 1.055, 2.4);\n}\nfunction delinearized(rgbComponent) {\n const normalized = rgbComponent / 100;\n let delinearized = 0;\n return delinearized = normalized <= .0031308 ? 12.92 * normalized : 1.055 * Math.pow(normalized, 1 / 2.4) - .055, clampInt(0, 255, Math.round(255 * delinearized));\n}\nfunction whitePointD65() {\n return WHITE_POINT_D65;\n}\nfunction labF(t) {\n return t > 216 / 24389 ? Math.pow(t, 1 / 3) : (903.2962962962963 * t + 16) / 116;\n}\nfunction labInvf(ft) {\n const ft3 = ft * ft * ft;\n return ft3 > 216 / 24389 ? ft3 : (116 * ft - 16) / 903.2962962962963;\n}\nclass ViewingConditions {\n static make(whitePoint, adaptingLuminance, backgroundLstar, surround, discountingIlluminant) {\n if (whitePoint === void 0) {\n whitePoint = whitePointD65();\n }\n if (adaptingLuminance === void 0) {\n adaptingLuminance = 200 / Math.PI * yFromLstar(50) / 100;\n }\n if (backgroundLstar === void 0) {\n backgroundLstar = 50;\n }\n if (surround === void 0) {\n surround = 2;\n }\n if (discountingIlluminant === void 0) {\n discountingIlluminant = !1;\n }\n const xyz = whitePoint,\n rW = .401288 * xyz[0] + .650173 * xyz[1] + -.051461 * xyz[2],\n gW = -.250268 * xyz[0] + 1.204414 * xyz[1] + .045854 * xyz[2],\n bW = -.002079 * xyz[0] + .048952 * xyz[1] + .953127 * xyz[2],\n f = .8 + surround / 10,\n c = f >= .9 ? lerp(.59, .69, 10 * (f - .9)) : lerp(.525, .59, 10 * (f - .8));\n let d = discountingIlluminant ? 1 : f * (1 - 1 / 3.6 * Math.exp((-adaptingLuminance - 42) / 92));\n d = d > 1 ? 1 : d < 0 ? 0 : d;\n const nc = f,\n rgbD = [d * (100 / rW) + 1 - d, d * (100 / gW) + 1 - d, d * (100 / bW) + 1 - d],\n k = 1 / (5 * adaptingLuminance + 1),\n k4 = k * k * k * k,\n k4F = 1 - k4,\n fl = k4 * adaptingLuminance + .1 * k4F * k4F * Math.cbrt(5 * adaptingLuminance),\n n = yFromLstar(backgroundLstar) / whitePoint[1],\n z = 1.48 + Math.sqrt(n),\n nbb = .725 / Math.pow(n, .2),\n ncb = nbb,\n rgbAFactors = [Math.pow(fl * rgbD[0] * rW / 100, .42), Math.pow(fl * rgbD[1] * gW / 100, .42), Math.pow(fl * rgbD[2] * bW / 100, .42)],\n rgbA = [400 * rgbAFactors[0] / (rgbAFactors[0] + 27.13), 400 * rgbAFactors[1] / (rgbAFactors[1] + 27.13), 400 * rgbAFactors[2] / (rgbAFactors[2] + 27.13)];\n return new ViewingConditions(n, (2 * rgbA[0] + rgbA[1] + .05 * rgbA[2]) * nbb, nbb, ncb, c, nc, rgbD, fl, Math.pow(fl, .25), z);\n }\n constructor(n, aw, nbb, ncb, c, nc, rgbD, fl, fLRoot, z) {\n this.n = n, this.aw = aw, this.nbb = nbb, this.ncb = ncb, this.c = c, this.nc = nc, this.rgbD = rgbD, this.fl = fl, this.fLRoot = fLRoot, this.z = z;\n }\n}\nViewingConditions.DEFAULT = ViewingConditions.make();\nclass Cam16 {\n constructor(hue, chroma, j, q, m, s, jstar, astar, bstar) {\n this.hue = hue, this.chroma = chroma, this.j = j, this.q = q, this.m = m, this.s = s, this.jstar = jstar, this.astar = astar, this.bstar = bstar;\n }\n distance(other) {\n const dJ = this.jstar - other.jstar,\n dA = this.astar - other.astar,\n dB = this.bstar - other.bstar,\n dEPrime = Math.sqrt(dJ * dJ + dA * dA + dB * dB);\n return 1.41 * Math.pow(dEPrime, .63);\n }\n static fromInt(argb) {\n return Cam16.fromIntInViewingConditions(argb, ViewingConditions.DEFAULT);\n }\n static fromIntInViewingConditions(argb, viewingConditions) {\n const green = (65280 & argb) >> 8,\n blue = 255 & argb,\n redL = linearized((16711680 & argb) >> 16),\n greenL = linearized(green),\n blueL = linearized(blue),\n x = .41233895 * redL + .35762064 * greenL + .18051042 * blueL,\n y = .2126 * redL + .7152 * greenL + .0722 * blueL,\n z = .01932141 * redL + .11916382 * greenL + .95034478 * blueL,\n rC = .401288 * x + .650173 * y - .051461 * z,\n gC = -.250268 * x + 1.204414 * y + .045854 * z,\n bC = -.002079 * x + .048952 * y + .953127 * z,\n rD = viewingConditions.rgbD[0] * rC,\n gD = viewingConditions.rgbD[1] * gC,\n bD = viewingConditions.rgbD[2] * bC,\n rAF = Math.pow(viewingConditions.fl * Math.abs(rD) / 100, .42),\n gAF = Math.pow(viewingConditions.fl * Math.abs(gD) / 100, .42),\n bAF = Math.pow(viewingConditions.fl * Math.abs(bD) / 100, .42),\n rA = 400 * signum(rD) * rAF / (rAF + 27.13),\n gA = 400 * signum(gD) * gAF / (gAF + 27.13),\n bA = 400 * signum(bD) * bAF / (bAF + 27.13),\n a = (11 * rA + -12 * gA + bA) / 11,\n b = (rA + gA - 2 * bA) / 9,\n u = (20 * rA + 20 * gA + 21 * bA) / 20,\n p2 = (40 * rA + 20 * gA + bA) / 20,\n atanDegrees = 180 * Math.atan2(b, a) / Math.PI,\n hue = atanDegrees < 0 ? atanDegrees + 360 : atanDegrees >= 360 ? atanDegrees - 360 : atanDegrees,\n hueRadians = hue * Math.PI / 180,\n ac = p2 * viewingConditions.nbb,\n j = 100 * Math.pow(ac / viewingConditions.aw, viewingConditions.c * viewingConditions.z),\n q = 4 / viewingConditions.c * Math.sqrt(j / 100) * (viewingConditions.aw + 4) * viewingConditions.fLRoot,\n huePrime = hue < 20.14 ? hue + 360 : hue,\n t = 5e4 / 13 * (.25 * (Math.cos(huePrime * Math.PI / 180 + 2) + 3.8)) * viewingConditions.nc * viewingConditions.ncb * Math.sqrt(a * a + b * b) / (u + .305),\n alpha = Math.pow(t, .9) * Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73),\n c = alpha * Math.sqrt(j / 100),\n m = c * viewingConditions.fLRoot,\n s = 50 * Math.sqrt(alpha * viewingConditions.c / (viewingConditions.aw + 4)),\n jstar = (1 + 100 * .007) * j / (1 + .007 * j),\n mstar = 1 / .0228 * Math.log(1 + .0228 * m),\n astar = mstar * Math.cos(hueRadians),\n bstar = mstar * Math.sin(hueRadians);\n return new Cam16(hue, c, j, q, m, s, jstar, astar, bstar);\n }\n static fromJch(j, c, h) {\n return Cam16.fromJchInViewingConditions(j, c, h, ViewingConditions.DEFAULT);\n }\n static fromJchInViewingConditions(j, c, h, viewingConditions) {\n const q = 4 / viewingConditions.c * Math.sqrt(j / 100) * (viewingConditions.aw + 4) * viewingConditions.fLRoot,\n m = c * viewingConditions.fLRoot,\n alpha = c / Math.sqrt(j / 100),\n s = 50 * Math.sqrt(alpha * viewingConditions.c / (viewingConditions.aw + 4)),\n hueRadians = h * Math.PI / 180,\n jstar = (1 + 100 * .007) * j / (1 + .007 * j),\n mstar = 1 / .0228 * Math.log(1 + .0228 * m),\n astar = mstar * Math.cos(hueRadians),\n bstar = mstar * Math.sin(hueRadians);\n return new Cam16(h, c, j, q, m, s, jstar, astar, bstar);\n }\n static fromUcs(jstar, astar, bstar) {\n return Cam16.fromUcsInViewingConditions(jstar, astar, bstar, ViewingConditions.DEFAULT);\n }\n static fromUcsInViewingConditions(jstar, astar, bstar, viewingConditions) {\n const a = astar,\n b = bstar,\n m = Math.sqrt(a * a + b * b),\n c = (Math.exp(.0228 * m) - 1) / .0228 / viewingConditions.fLRoot;\n let h = Math.atan2(b, a) * (180 / Math.PI);\n h < 0 && (h += 360);\n const j = jstar / (1 - .007 * (jstar - 100));\n return Cam16.fromJchInViewingConditions(j, c, h, viewingConditions);\n }\n toInt() {\n return this.viewed(ViewingConditions.DEFAULT);\n }\n viewed(viewingConditions) {\n const alpha = 0 === this.chroma || 0 === this.j ? 0 : this.chroma / Math.sqrt(this.j / 100),\n t = Math.pow(alpha / Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73), 1 / .9),\n hRad = this.hue * Math.PI / 180,\n eHue = .25 * (Math.cos(hRad + 2) + 3.8),\n ac = viewingConditions.aw * Math.pow(this.j / 100, 1 / viewingConditions.c / viewingConditions.z),\n p1 = eHue * (5e4 / 13) * viewingConditions.nc * viewingConditions.ncb,\n p2 = ac / viewingConditions.nbb,\n hSin = Math.sin(hRad),\n hCos = Math.cos(hRad),\n gamma = 23 * (p2 + .305) * t / (23 * p1 + 11 * t * hCos + 108 * t * hSin),\n a = gamma * hCos,\n b = gamma * hSin,\n rA = (460 * p2 + 451 * a + 288 * b) / 1403,\n gA = (460 * p2 - 891 * a - 261 * b) / 1403,\n bA = (460 * p2 - 220 * a - 6300 * b) / 1403,\n rCBase = Math.max(0, 27.13 * Math.abs(rA) / (400 - Math.abs(rA))),\n rC = signum(rA) * (100 / viewingConditions.fl) * Math.pow(rCBase, 1 / .42),\n gCBase = Math.max(0, 27.13 * Math.abs(gA) / (400 - Math.abs(gA))),\n gC = signum(gA) * (100 / viewingConditions.fl) * Math.pow(gCBase, 1 / .42),\n bCBase = Math.max(0, 27.13 * Math.abs(bA) / (400 - Math.abs(bA))),\n bC = signum(bA) * (100 / viewingConditions.fl) * Math.pow(bCBase, 1 / .42),\n rF = rC / viewingConditions.rgbD[0],\n gF = gC / viewingConditions.rgbD[1],\n bF = bC / viewingConditions.rgbD[2];\n return argbFromXyz(1.86206786 * rF - 1.01125463 * gF + .14918677 * bF, .38752654 * rF + .62144744 * gF - .00897398 * bF, -.0158415 * rF - .03412294 * gF + 1.04996444 * bF);\n }\n static fromXyzInViewingConditions(x, y, z, viewingConditions) {\n const rC = .401288 * x + .650173 * y - .051461 * z,\n gC = -.250268 * x + 1.204414 * y + .045854 * z,\n bC = -.002079 * x + .048952 * y + .953127 * z,\n rD = viewingConditions.rgbD[0] * rC,\n gD = viewingConditions.rgbD[1] * gC,\n bD = viewingConditions.rgbD[2] * bC,\n rAF = Math.pow(viewingConditions.fl * Math.abs(rD) / 100, .42),\n gAF = Math.pow(viewingConditions.fl * Math.abs(gD) / 100, .42),\n bAF = Math.pow(viewingConditions.fl * Math.abs(bD) / 100, .42),\n rA = 400 * signum(rD) * rAF / (rAF + 27.13),\n gA = 400 * signum(gD) * gAF / (gAF + 27.13),\n bA = 400 * signum(bD) * bAF / (bAF + 27.13),\n a = (11 * rA + -12 * gA + bA) / 11,\n b = (rA + gA - 2 * bA) / 9,\n u = (20 * rA + 20 * gA + 21 * bA) / 20,\n p2 = (40 * rA + 20 * gA + bA) / 20,\n atanDegrees = 180 * Math.atan2(b, a) / Math.PI,\n hue = atanDegrees < 0 ? atanDegrees + 360 : atanDegrees >= 360 ? atanDegrees - 360 : atanDegrees,\n hueRadians = hue * Math.PI / 180,\n ac = p2 * viewingConditions.nbb,\n J = 100 * Math.pow(ac / viewingConditions.aw, viewingConditions.c * viewingConditions.z),\n Q = 4 / viewingConditions.c * Math.sqrt(J / 100) * (viewingConditions.aw + 4) * viewingConditions.fLRoot,\n huePrime = hue < 20.14 ? hue + 360 : hue,\n t = 5e4 / 13 * (1 / 4 * (Math.cos(huePrime * Math.PI / 180 + 2) + 3.8)) * viewingConditions.nc * viewingConditions.ncb * Math.sqrt(a * a + b * b) / (u + .305),\n alpha = Math.pow(t, .9) * Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73),\n C = alpha * Math.sqrt(J / 100),\n M = C * viewingConditions.fLRoot,\n s = 50 * Math.sqrt(alpha * viewingConditions.c / (viewingConditions.aw + 4)),\n jstar = (1 + 100 * .007) * J / (1 + .007 * J),\n mstar = Math.log(1 + .0228 * M) / .0228,\n astar = mstar * Math.cos(hueRadians),\n bstar = mstar * Math.sin(hueRadians);\n return new Cam16(hue, C, J, Q, M, s, jstar, astar, bstar);\n }\n xyzInViewingConditions(viewingConditions) {\n const alpha = 0 === this.chroma || 0 === this.j ? 0 : this.chroma / Math.sqrt(this.j / 100),\n t = Math.pow(alpha / Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73), 1 / .9),\n hRad = this.hue * Math.PI / 180,\n eHue = .25 * (Math.cos(hRad + 2) + 3.8),\n ac = viewingConditions.aw * Math.pow(this.j / 100, 1 / viewingConditions.c / viewingConditions.z),\n p1 = eHue * (5e4 / 13) * viewingConditions.nc * viewingConditions.ncb,\n p2 = ac / viewingConditions.nbb,\n hSin = Math.sin(hRad),\n hCos = Math.cos(hRad),\n gamma = 23 * (p2 + .305) * t / (23 * p1 + 11 * t * hCos + 108 * t * hSin),\n a = gamma * hCos,\n b = gamma * hSin,\n rA = (460 * p2 + 451 * a + 288 * b) / 1403,\n gA = (460 * p2 - 891 * a - 261 * b) / 1403,\n bA = (460 * p2 - 220 * a - 6300 * b) / 1403,\n rCBase = Math.max(0, 27.13 * Math.abs(rA) / (400 - Math.abs(rA))),\n rC = signum(rA) * (100 / viewingConditions.fl) * Math.pow(rCBase, 1 / .42),\n gCBase = Math.max(0, 27.13 * Math.abs(gA) / (400 - Math.abs(gA))),\n gC = signum(gA) * (100 / viewingConditions.fl) * Math.pow(gCBase, 1 / .42),\n bCBase = Math.max(0, 27.13 * Math.abs(bA) / (400 - Math.abs(bA))),\n bC = signum(bA) * (100 / viewingConditions.fl) * Math.pow(bCBase, 1 / .42),\n rF = rC / viewingConditions.rgbD[0],\n gF = gC / viewingConditions.rgbD[1],\n bF = bC / viewingConditions.rgbD[2];\n return [1.86206786 * rF - 1.01125463 * gF + .14918677 * bF, .38752654 * rF + .62144744 * gF - .00897398 * bF, -.0158415 * rF - .03412294 * gF + 1.04996444 * bF];\n }\n}\nclass HctSolver {\n static sanitizeRadians(angle) {\n return (angle + 8 * Math.PI) % (2 * Math.PI);\n }\n static trueDelinearized(rgbComponent) {\n const normalized = rgbComponent / 100;\n let delinearized = 0;\n return delinearized = normalized <= .0031308 ? 12.92 * normalized : 1.055 * Math.pow(normalized, 1 / 2.4) - .055, 255 * delinearized;\n }\n static chromaticAdaptation(component) {\n const af = Math.pow(Math.abs(component), .42);\n return 400 * signum(component) * af / (af + 27.13);\n }\n static hueOf(linrgb) {\n const scaledDiscount = matrixMultiply(linrgb, HctSolver.SCALED_DISCOUNT_FROM_LINRGB),\n rA = HctSolver.chromaticAdaptation(scaledDiscount[0]),\n gA = HctSolver.chromaticAdaptation(scaledDiscount[1]),\n bA = HctSolver.chromaticAdaptation(scaledDiscount[2]),\n a = (11 * rA + -12 * gA + bA) / 11,\n b = (rA + gA - 2 * bA) / 9;\n return Math.atan2(b, a);\n }\n static areInCyclicOrder(a, b, c) {\n return HctSolver.sanitizeRadians(b - a) < HctSolver.sanitizeRadians(c - a);\n }\n static intercept(source, mid, target) {\n return (mid - source) / (target - source);\n }\n static lerpPoint(source, t, target) {\n return [source[0] + (target[0] - source[0]) * t, source[1] + (target[1] - source[1]) * t, source[2] + (target[2] - source[2]) * t];\n }\n static setCoordinate(source, coordinate, target, axis) {\n const t = HctSolver.intercept(source[axis], coordinate, target[axis]);\n return HctSolver.lerpPoint(source, t, target);\n }\n static isBounded(x) {\n return 0 <= x && x <= 100;\n }\n static nthVertex(y, n) {\n const kR = HctSolver.Y_FROM_LINRGB[0],\n kG = HctSolver.Y_FROM_LINRGB[1],\n kB = HctSolver.Y_FROM_LINRGB[2],\n coordA = n % 4 <= 1 ? 0 : 100,\n coordB = n % 2 == 0 ? 0 : 100;\n if (n < 4) {\n const g = coordA,\n b = coordB,\n r = (y - g * kG - b * kB) / kR;\n return HctSolver.isBounded(r) ? [r, g, b] : [-1, -1, -1];\n }\n if (n < 8) {\n const b = coordA,\n r = coordB,\n g = (y - r * kR - b * kB) / kG;\n return HctSolver.isBounded(g) ? [r, g, b] : [-1, -1, -1];\n }\n {\n const r = coordA,\n g = coordB,\n b = (y - r * kR - g * kG) / kB;\n return HctSolver.isBounded(b) ? [r, g, b] : [-1, -1, -1];\n }\n }\n static bisectToSegment(y, targetHue) {\n let left = [-1, -1, -1],\n right = left,\n leftHue = 0,\n rightHue = 0,\n initialized = !1,\n uncut = !0;\n for (let n = 0; n < 12; n++) {\n const mid = HctSolver.nthVertex(y, n);\n if (mid[0] < 0) continue;\n const midHue = HctSolver.hueOf(mid);\n initialized ? (uncut || HctSolver.areInCyclicOrder(leftHue, midHue, rightHue)) && (uncut = !1, HctSolver.areInCyclicOrder(leftHue, targetHue, midHue) ? (right = mid, rightHue = midHue) : (left = mid, leftHue = midHue)) : (left = mid, right = mid, leftHue = midHue, rightHue = midHue, initialized = !0);\n }\n return [left, right];\n }\n static midpoint(a, b) {\n return [(a[0] + b[0]) / 2, (a[1] + b[1]) / 2, (a[2] + b[2]) / 2];\n }\n static criticalPlaneBelow(x) {\n return Math.floor(x - .5);\n }\n static criticalPlaneAbove(x) {\n return Math.ceil(x - .5);\n }\n static bisectToLimit(y, targetHue) {\n const segment = HctSolver.bisectToSegment(y, targetHue);\n let left = segment[0],\n leftHue = HctSolver.hueOf(left),\n right = segment[1];\n for (let axis = 0; axis < 3; axis++) if (left[axis] !== right[axis]) {\n let lPlane = -1,\n rPlane = 255;\n left[axis] < right[axis] ? (lPlane = HctSolver.criticalPlaneBelow(HctSolver.trueDelinearized(left[axis])), rPlane = HctSolver.criticalPlaneAbove(HctSolver.trueDelinearized(right[axis]))) : (lPlane = HctSolver.criticalPlaneAbove(HctSolver.trueDelinearized(left[axis])), rPlane = HctSolver.criticalPlaneBelow(HctSolver.trueDelinearized(right[axis])));\n for (let i = 0; i < 8 && !(Math.abs(rPlane - lPlane) <= 1); i++) {\n const mPlane = Math.floor((lPlane + rPlane) / 2),\n midPlaneCoordinate = HctSolver.CRITICAL_PLANES[mPlane],\n mid = HctSolver.setCoordinate(left, midPlaneCoordinate, right, axis),\n midHue = HctSolver.hueOf(mid);\n HctSolver.areInCyclicOrder(leftHue, targetHue, midHue) ? (right = mid, rPlane = mPlane) : (left = mid, leftHue = midHue, lPlane = mPlane);\n }\n }\n return HctSolver.midpoint(left, right);\n }\n static inverseChromaticAdaptation(adapted) {\n const adaptedAbs = Math.abs(adapted),\n base = Math.max(0, 27.13 * adaptedAbs / (400 - adaptedAbs));\n return signum(adapted) * Math.pow(base, 1 / .42);\n }\n static findResultByJ(hueRadians, chroma, y) {\n let j = 11 * Math.sqrt(y);\n const viewingConditions = ViewingConditions.DEFAULT,\n tInnerCoeff = 1 / Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73),\n p1 = .25 * (Math.cos(hueRadians + 2) + 3.8) * (5e4 / 13) * viewingConditions.nc * viewingConditions.ncb,\n hSin = Math.sin(hueRadians),\n hCos = Math.cos(hueRadians);\n for (let iterationRound = 0; iterationRound < 5; iterationRound++) {\n const jNormalized = j / 100,\n alpha = 0 === chroma || 0 === j ? 0 : chroma / Math.sqrt(jNormalized),\n t = Math.pow(alpha * tInnerCoeff, 1 / .9),\n p2 = viewingConditions.aw * Math.pow(jNormalized, 1 / viewingConditions.c / viewingConditions.z) / viewingConditions.nbb,\n gamma = 23 * (p2 + .305) * t / (23 * p1 + 11 * t * hCos + 108 * t * hSin),\n a = gamma * hCos,\n b = gamma * hSin,\n rA = (460 * p2 + 451 * a + 288 * b) / 1403,\n gA = (460 * p2 - 891 * a - 261 * b) / 1403,\n bA = (460 * p2 - 220 * a - 6300 * b) / 1403,\n linrgb = matrixMultiply([HctSolver.inverseChromaticAdaptation(rA), HctSolver.inverseChromaticAdaptation(gA), HctSolver.inverseChromaticAdaptation(bA)], HctSolver.LINRGB_FROM_SCALED_DISCOUNT);\n if (linrgb[0] < 0 || linrgb[1] < 0 || linrgb[2] < 0) return 0;\n const kR = HctSolver.Y_FROM_LINRGB[0],\n kG = HctSolver.Y_FROM_LINRGB[1],\n kB = HctSolver.Y_FROM_LINRGB[2],\n fnj = kR * linrgb[0] + kG * linrgb[1] + kB * linrgb[2];\n if (fnj <= 0) return 0;\n if (4 === iterationRound || Math.abs(fnj - y) < .002) return linrgb[0] > 100.01 || linrgb[1] > 100.01 || linrgb[2] > 100.01 ? 0 : argbFromLinrgb(linrgb);\n j -= (fnj - y) * j / (2 * fnj);\n }\n return 0;\n }\n static solveToInt(hueDegrees, chroma, lstar) {\n if (chroma < 1e-4 || lstar < 1e-4 || lstar > 99.9999) return argbFromLstar(lstar);\n const hueRadians = (hueDegrees = sanitizeDegreesDouble(hueDegrees)) / 180 * Math.PI,\n y = yFromLstar(lstar),\n exactAnswer = HctSolver.findResultByJ(hueRadians, chroma, y);\n if (0 !== exactAnswer) return exactAnswer;\n return argbFromLinrgb(HctSolver.bisectToLimit(y, hueRadians));\n }\n static solveToCam(hueDegrees, chroma, lstar) {\n return Cam16.fromInt(HctSolver.solveToInt(hueDegrees, chroma, lstar));\n }\n}\nHctSolver.SCALED_DISCOUNT_FROM_LINRGB = [[.001200833568784504, .002389694492170889, .0002795742885861124], [.0005891086651375999, .0029785502573438758, .0003270666104008398], [.00010146692491640572, .0005364214359186694, .0032979401770712076]], HctSolver.LINRGB_FROM_SCALED_DISCOUNT = [[1373.2198709594231, -1100.4251190754821, -7.278681089101213], [-271.815969077903, 559.6580465940733, -32.46047482791194], [1.9622899599665666, -57.173814538844006, 308.7233197812385]], HctSolver.Y_FROM_LINRGB = [.2126, .7152, .0722], HctSolver.CRITICAL_PLANES = [.015176349177441876, .045529047532325624, .07588174588720938, .10623444424209313, .13658714259697685, .16693984095186062, .19729253930674434, .2276452376616281, .2579979360165119, .28835063437139563, .3188300904430532, .350925934958123, .3848314933096426, .42057480301049466, .458183274052838, .4976837250274023, .5391024159806381, .5824650784040898, .6277969426914107, .6751227633498623, .7244668422128921, .775853049866786, .829304845476233, .8848452951698498, .942497089126609, 1.0022825574869039, 1.0642236851973577, 1.1283421258858297, 1.1946592148522128, 1.2631959812511864, 1.3339731595349034, 1.407011200216447, 1.4823302800086415, 1.5599503113873272, 1.6398909516233677, 1.7221716113234105, 1.8068114625156377, 1.8938294463134073, 1.9832442801866852, 2.075074464868551, 2.1693382909216234, 2.2660538449872063, 2.36523901573795, 2.4669114995532007, 2.5710888059345764, 2.6777882626779785, 2.7870270208169257, 2.898822059350997, 3.0131901897720907, 3.1301480604002863, 3.2497121605402226, 3.3718988244681087, 3.4967242352587946, 3.624204428461639, 3.754355295633311, 3.887192587735158, 4.022731918402185, 4.160988767090289, 4.301978482107941, 4.445716283538092, 4.592217266055746, 4.741496401646282, 4.893568542229298, 5.048448422192488, 5.20615066083972, 5.3666897647573375, 5.5300801301023865, 5.696336044816294, 5.865471690767354, 6.037501145825082, 6.212438385869475, 6.390297286737924, 6.571091626112461, 6.7548350853498045, 6.941541251256611, 7.131223617812143, 7.323895587840543, 7.5195704746346665, 7.7182615035334345, 7.919981813454504, 8.124744458384042, 8.332562408825165, 8.543448553206703, 8.757415699253682, 8.974476575321063, 9.194643831691977, 9.417930041841839, 9.644347703669503, 9.873909240696694, 10.106627003236781, 10.342513269534024, 10.58158024687427, 10.8238400726681, 11.069304815507364, 11.317986476196008, 11.569896988756009, 11.825048221409341, 12.083451977536606, 12.345119996613247, 12.610063955123938, 12.878295467455942, 13.149826086772048, 13.42466730586372, 13.702830557985108, 13.984327217668513, 14.269168601521828, 14.55736596900856, 14.848930523210871, 15.143873411576273, 15.44220572664832, 15.743938506781891, 16.04908273684337, 16.35764934889634, 16.66964922287304, 16.985093187232053, 17.30399201960269, 17.62635644741625, 17.95219714852476, 18.281524751807332, 18.614349837764564, 18.95068293910138, 19.290534541298456, 19.633915083172692, 19.98083495742689, 20.331304511189067, 20.685334046541502, 21.042933821039977, 21.404114048223256, 21.76888489811322, 22.137256497705877, 22.50923893145328, 22.884842241736916, 23.264076429332462, 23.6469514538663, 24.033477234264016, 24.42366364919083, 24.817520537484558, 25.21505769858089, 25.61628489293138, 26.021211842414342, 26.429848230738664, 26.842203703840827, 27.258287870275353, 27.678110301598522, 28.10168053274597, 28.529008062403893, 28.96010235337422, 29.39497283293396, 29.83362889318845, 30.276079891419332, 30.722335150426627, 31.172403958865512, 31.62629557157785, 32.08401920991837, 32.54558406207592, 33.010999283389665, 33.4802739966603, 33.953417292456834, 34.430438229418264, 34.911345834551085, 35.39614910352207, 35.88485700094671, 36.37747846067349, 36.87402238606382, 37.37449765026789, 37.87891309649659, 38.38727753828926, 38.89959975977785, 39.41588851594697, 39.93615253289054, 40.460400508064545, 40.98864111053629, 41.520882981230194, 42.05713473317016, 42.597404951718396, 43.141702194811224, 43.6900349931913, 44.24241185063697, 44.798841244188324, 45.35933162437017, 45.92389141541209, 46.49252901546552, 47.065252796817916, 47.64207110610409, 48.22299226451468, 48.808024568002054, 49.3971762874833, 49.9904556690408, 50.587870934119984, 51.189430279724725, 51.79514187861014, 52.40501387947288, 53.0190544071392, 53.637271562750364, 54.259673423945976, 54.88626804504493, 55.517063457223934, 56.15206766869424, 56.79128866487574, 57.43473440856916, 58.08241284012621, 58.734331877617365, 59.39049941699807, 60.05092333227251, 60.715611475655585, 61.38457167773311, 62.057811747619894, 62.7353394731159, 63.417162620860914, 64.10328893648692, 64.79372614476921, 65.48848194977529, 66.18756403501224, 66.89098006357258, 67.59873767827808, 68.31084450182222, 69.02730813691093, 69.74813616640164, 70.47333615344107, 71.20291564160104, 71.93688215501312, 72.67524319850172, 73.41800625771542, 74.16517879925733, 74.9167682708136, 75.67278210128072, 76.43322770089146, 77.1981124613393, 77.96744375590167, 78.74122893956174, 79.51947534912904, 80.30219030335869, 81.08938110306934, 81.88105503125999, 82.67721935322541, 83.4778813166706, 84.28304815182372, 85.09272707154808, 85.90692527145302, 86.72564993000343, 87.54890820862819, 88.3767072518277, 89.2090541872801, 90.04595612594655, 90.88742016217518, 91.73345337380438, 92.58406282226491, 93.43925555268066, 94.29903859396902, 95.16341895893969, 96.03240364439274, 96.9059996312159, 97.78421388448044, 98.6670533535366, 99.55452497210776];\nclass Hct {\n static from(hue, chroma, tone) {\n return new Hct(HctSolver.solveToInt(hue, chroma, tone));\n }\n static fromInt(argb) {\n return new Hct(argb);\n }\n toInt() {\n return this.argb;\n }\n get hue() {\n return this.internalHue;\n }\n set hue(newHue) {\n this.setInternalState(HctSolver.solveToInt(newHue, this.internalChroma, this.internalTone));\n }\n get chroma() {\n return this.internalChroma;\n }\n set chroma(newChroma) {\n this.setInternalState(HctSolver.solveToInt(this.internalHue, newChroma, this.internalTone));\n }\n get tone() {\n return this.internalTone;\n }\n set tone(newTone) {\n this.setInternalState(HctSolver.solveToInt(this.internalHue, this.internalChroma, newTone));\n }\n constructor(argb) {\n this.argb = argb;\n const cam = Cam16.fromInt(argb);\n this.internalHue = cam.hue, this.internalChroma = cam.chroma, this.internalTone = lstarFromArgb(argb), this.argb = argb;\n }\n setInternalState(argb) {\n const cam = Cam16.fromInt(argb);\n this.internalHue = cam.hue, this.internalChroma = cam.chroma, this.internalTone = lstarFromArgb(argb), this.argb = argb;\n }\n inViewingConditions(vc) {\n const viewedInVc = Cam16.fromInt(this.toInt()).xyzInViewingConditions(vc),\n recastInVc = Cam16.fromXyzInViewingConditions(viewedInVc[0], viewedInVc[1], viewedInVc[2], ViewingConditions.make());\n return Hct.from(recastInVc.hue, recastInVc.chroma, lstarFromY(viewedInVc[1]));\n }\n}\nclass Blend {\n static harmonize(designColor, sourceColor) {\n const fromHct = Hct.fromInt(designColor),\n toHct = Hct.fromInt(sourceColor),\n differenceDegrees$1 = differenceDegrees(fromHct.hue, toHct.hue),\n rotationDegrees = Math.min(.5 * differenceDegrees$1, 15),\n outputHue = sanitizeDegreesDouble(fromHct.hue + rotationDegrees * rotationDirection(fromHct.hue, toHct.hue));\n return Hct.from(outputHue, fromHct.chroma, fromHct.tone).toInt();\n }\n static hctHue(from, to, amount) {\n const ucs = Blend.cam16Ucs(from, to, amount),\n ucsCam = Cam16.fromInt(ucs),\n fromCam = Cam16.fromInt(from);\n return Hct.from(ucsCam.hue, fromCam.chroma, lstarFromArgb(from)).toInt();\n }\n static cam16Ucs(from, to, amount) {\n const fromCam = Cam16.fromInt(from),\n toCam = Cam16.fromInt(to),\n fromJ = fromCam.jstar,\n fromA = fromCam.astar,\n fromB = fromCam.bstar,\n jstar = fromJ + (toCam.jstar - fromJ) * amount,\n astar = fromA + (toCam.astar - fromA) * amount,\n bstar = fromB + (toCam.bstar - fromB) * amount;\n return Cam16.fromUcs(jstar, astar, bstar).toInt();\n }\n}\nclass Contrast {\n static ratioOfTones(toneA, toneB) {\n return toneA = clampDouble(0, 100, toneA), toneB = clampDouble(0, 100, toneB), Contrast.ratioOfYs(yFromLstar(toneA), yFromLstar(toneB));\n }\n static ratioOfYs(y1, y2) {\n const lighter = y1 > y2 ? y1 : y2;\n return (lighter + 5) / ((lighter === y2 ? y1 : y2) + 5);\n }\n static lighter(tone, ratio) {\n if (tone < 0 || tone > 100) return -1;\n const darkY = yFromLstar(tone),\n lightY = ratio * (darkY + 5) - 5,\n realContrast = Contrast.ratioOfYs(lightY, darkY),\n delta = Math.abs(realContrast - ratio);\n if (realContrast < ratio && delta > .04) return -1;\n const returnValue = lstarFromY(lightY) + .4;\n return returnValue < 0 || returnValue > 100 ? -1 : returnValue;\n }\n static darker(tone, ratio) {\n if (tone < 0 || tone > 100) return -1;\n const lightY = yFromLstar(tone),\n darkY = (lightY + 5) / ratio - 5,\n realContrast = Contrast.ratioOfYs(lightY, darkY),\n delta = Math.abs(realContrast - ratio);\n if (realContrast < ratio && delta > .04) return -1;\n const returnValue = lstarFromY(darkY) - .4;\n return returnValue < 0 || returnValue > 100 ? -1 : returnValue;\n }\n static lighterUnsafe(tone, ratio) {\n const lighterSafe = Contrast.lighter(tone, ratio);\n return lighterSafe < 0 ? 100 : lighterSafe;\n }\n static darkerUnsafe(tone, ratio) {\n const darkerSafe = Contrast.darker(tone, ratio);\n return darkerSafe < 0 ? 0 : darkerSafe;\n }\n}\nclass DislikeAnalyzer {\n static isDisliked(hct) {\n const huePasses = Math.round(hct.hue) >= 90 && Math.round(hct.hue) <= 111,\n chromaPasses = Math.round(hct.chroma) > 16,\n tonePasses = Math.round(hct.tone) < 65;\n return huePasses && chromaPasses && tonePasses;\n }\n static fixIfDisliked(hct) {\n return DislikeAnalyzer.isDisliked(hct) ? Hct.from(hct.hue, hct.chroma, 70) : hct;\n }\n}\nclass DynamicColor {\n static fromPalette(args) {\n return new DynamicColor(args.name ?? \"\", args.palette, args.tone, args.isBackground ?? !1, args.background, args.secondBackground, args.contrastCurve, args.toneDeltaPair);\n }\n constructor(name, palette, tone, isBackground, background, secondBackground, contrastCurve, toneDeltaPair) {\n if (this.name = name, this.palette = palette, this.tone = tone, this.isBackground = isBackground, this.background = background, this.secondBackground = secondBackground, this.contrastCurve = contrastCurve, this.toneDeltaPair = toneDeltaPair, this.hctCache = new Map(), !background && secondBackground) throw new Error(`Color ${name} has secondBackgrounddefined, but background is not defined.`);\n if (!background && contrastCurve) throw new Error(`Color ${name} has contrastCurvedefined, but background is not defined.`);\n if (background && !contrastCurve) throw new Error(`Color ${name} has backgrounddefined, but contrastCurve is not defined.`);\n }\n getArgb(scheme) {\n return this.getHct(scheme).toInt();\n }\n getHct(scheme) {\n const cachedAnswer = this.hctCache.get(scheme);\n if (null != cachedAnswer) return cachedAnswer;\n const tone = this.getTone(scheme),\n answer = this.palette(scheme).getHct(tone);\n return this.hctCache.size > 4 && this.hctCache.clear(), this.hctCache.set(scheme, answer), answer;\n }\n getTone(scheme) {\n const decreasingContrast = scheme.contrastLevel < 0;\n if (this.toneDeltaPair) {\n const toneDeltaPair = this.toneDeltaPair(scheme),\n roleA = toneDeltaPair.roleA,\n roleB = toneDeltaPair.roleB,\n delta = toneDeltaPair.delta,\n polarity = toneDeltaPair.polarity,\n stayTogether = toneDeltaPair.stayTogether,\n bgTone = this.background(scheme).getTone(scheme),\n aIsNearer = \"nearer\" === polarity || \"lighter\" === polarity && !scheme.isDark || \"darker\" === polarity && scheme.isDark,\n nearer = aIsNearer ? roleA : roleB,\n farther = aIsNearer ? roleB : roleA,\n amNearer = this.name === nearer.name,\n expansionDir = scheme.isDark ? 1 : -1,\n nContrast = nearer.contrastCurve.getContrast(scheme.contrastLevel),\n fContrast = farther.contrastCurve.getContrast(scheme.contrastLevel),\n nInitialTone = nearer.tone(scheme);\n let nTone = Contrast.ratioOfTones(bgTone, nInitialTone) >= nContrast ? nInitialTone : DynamicColor.foregroundTone(bgTone, nContrast);\n const fInitialTone = farther.tone(scheme);\n let fTone = Contrast.ratioOfTones(bgTone, fInitialTone) >= fContrast ? fInitialTone : DynamicColor.foregroundTone(bgTone, fContrast);\n return decreasingContrast && (nTone = DynamicColor.foregroundTone(bgTone, nContrast), fTone = DynamicColor.foregroundTone(bgTone, fContrast)), (fTone - nTone) * expansionDir >= delta || (fTone = clampDouble(0, 100, nTone + delta * expansionDir), (fTone - nTone) * expansionDir >= delta || (nTone = clampDouble(0, 100, fTone - delta * expansionDir))), 50 <= nTone && nTone < 60 ? expansionDir > 0 ? (nTone = 60, fTone = Math.max(fTone, nTone + delta * expansionDir)) : (nTone = 49, fTone = Math.min(fTone, nTone + delta * expansionDir)) : 50 <= fTone && fTone < 60 && (stayTogether ? expansionDir > 0 ? (nTone = 60, fTone = Math.max(fTone, nTone + delta * expansionDir)) : (nTone = 49, fTone = Math.min(fTone, nTone + delta * expansionDir)) : fTone = expansionDir > 0 ? 60 : 49), amNearer ? nTone : fTone;\n }\n {\n let answer = this.tone(scheme);\n if (null == this.background) return answer;\n const bgTone = this.background(scheme).getTone(scheme),\n desiredRatio = this.contrastCurve.getContrast(scheme.contrastLevel);\n if (Contrast.ratioOfTones(bgTone, answer) >= desiredRatio || (answer = DynamicColor.foregroundTone(bgTone, desiredRatio)), decreasingContrast && (answer = DynamicColor.foregroundTone(bgTone, desiredRatio)), this.isBackground && 50 <= answer && answer < 60 && (answer = Contrast.ratioOfTones(49, bgTone) >= desiredRatio ? 49 : 60), this.secondBackground) {\n const [bg1, bg2] = [this.background, this.secondBackground],\n [bgTone1, bgTone2] = [bg1(scheme).getTone(scheme), bg2(scheme).getTone(scheme)],\n [upper, lower] = [Math.max(bgTone1, bgTone2), Math.min(bgTone1, bgTone2)];\n if (Contrast.ratioOfTones(upper, answer) >= desiredRatio && Contrast.ratioOfTones(lower, answer) >= desiredRatio) return answer;\n const lightOption = Contrast.lighter(upper, desiredRatio),\n darkOption = Contrast.darker(lower, desiredRatio),\n availables = [];\n -1 !== lightOption && availables.push(lightOption), -1 !== darkOption && availables.push(darkOption);\n return DynamicColor.tonePrefersLightForeground(bgTone1) || DynamicColor.tonePrefersLightForeground(bgTone2) ? lightOption < 0 ? 100 : lightOption : 1 === availables.length ? availables[0] : darkOption < 0 ? 0 : darkOption;\n }\n return answer;\n }\n }\n static foregroundTone(bgTone, ratio) {\n const lighterTone = Contrast.lighterUnsafe(bgTone, ratio),\n darkerTone = Contrast.darkerUnsafe(bgTone, ratio),\n lighterRatio = Contrast.ratioOfTones(lighterTone, bgTone),\n darkerRatio = Contrast.ratioOfTones(darkerTone, bgTone);\n if (DynamicColor.tonePrefersLightForeground(bgTone)) {\n const negligibleDifference = Math.abs(lighterRatio - darkerRatio) < .1 && lighterRatio < ratio && darkerRatio < ratio;\n return lighterRatio >= ratio || lighterRatio >= darkerRatio || negligibleDifference ? lighterTone : darkerTone;\n }\n return darkerRatio >= ratio || darkerRatio >= lighterRatio ? darkerTone : lighterTone;\n }\n static tonePrefersLightForeground(tone) {\n return Math.round(tone) < 60;\n }\n static toneAllowsLightForeground(tone) {\n return Math.round(tone) <= 49;\n }\n static enableLightForeground(tone) {\n return DynamicColor.tonePrefersLightForeground(tone) && !DynamicColor.toneAllowsLightForeground(tone) ? 49 : tone;\n }\n}\nvar Variant;\n!function (Variant) {\n Variant[Variant.MONOCHROME = 0] = \"MONOCHROME\", Variant[Variant.NEUTRAL = 1] = \"NEUTRAL\", Variant[Variant.TONAL_SPOT = 2] = \"TONAL_SPOT\", Variant[Variant.VIBRANT = 3] = \"VIBRANT\", Variant[Variant.EXPRESSIVE = 4] = \"EXPRESSIVE\", Variant[Variant.FIDELITY = 5] = \"FIDELITY\", Variant[Variant.CONTENT = 6] = \"CONTENT\", Variant[Variant.RAINBOW = 7] = \"RAINBOW\", Variant[Variant.FRUIT_SALAD = 8] = \"FRUIT_SALAD\";\n}(Variant || (Variant = {}));\nclass ContrastCurve {\n constructor(low, normal, medium, high) {\n this.low = low, this.normal = normal, this.medium = medium, this.high = high;\n }\n getContrast(contrastLevel) {\n return contrastLevel <= -1 ? this.low : contrastLevel < 0 ? lerp(this.low, this.normal, (contrastLevel - -1) / 1) : contrastLevel < .5 ? lerp(this.normal, this.medium, (contrastLevel - 0) / .5) : contrastLevel < 1 ? lerp(this.medium, this.high, (contrastLevel - .5) / .5) : this.high;\n }\n}\nclass ToneDeltaPair {\n constructor(roleA, roleB, delta, polarity, stayTogether) {\n this.roleA = roleA, this.roleB = roleB, this.delta = delta, this.polarity = polarity, this.stayTogether = stayTogether;\n }\n}\nfunction isFidelity(scheme) {\n return scheme.variant === Variant.FIDELITY || scheme.variant === Variant.CONTENT;\n}\nfunction isMonochrome(scheme) {\n return scheme.variant === Variant.MONOCHROME;\n}\nfunction findDesiredChromaByTone(hue, chroma, tone, byDecreasingTone) {\n let answer = tone,\n closestToChroma = Hct.from(hue, chroma, tone);\n if (closestToChroma.chroma < chroma) {\n let chromaPeak = closestToChroma.chroma;\n for (; closestToChroma.chroma < chroma;) {\n answer += byDecreasingTone ? -1 : 1;\n const potentialSolution = Hct.from(hue, chroma, answer);\n if (chromaPeak > potentialSolution.chroma) break;\n if (Math.abs(potentialSolution.chroma - chroma) < .4) break;\n Math.abs(potentialSolution.chroma - chroma) < Math.abs(closestToChroma.chroma - chroma) && (closestToChroma = potentialSolution), chromaPeak = Math.max(chromaPeak, potentialSolution.chroma);\n }\n }\n return answer;\n}\nfunction viewingConditionsForAlbers(scheme) {\n return ViewingConditions.make(void 0, void 0, scheme.isDark ? 30 : 80, void 0, void 0);\n}\nfunction performAlbers(prealbers, scheme) {\n const albersd = prealbers.inViewingConditions(viewingConditionsForAlbers(scheme));\n return DynamicColor.tonePrefersLightForeground(prealbers.tone) && !DynamicColor.toneAllowsLightForeground(albersd.tone) ? DynamicColor.enableLightForeground(prealbers.tone) : DynamicColor.enableLightForeground(albersd.tone);\n}\nclass MaterialDynamicColors {\n static highestSurface(s) {\n return s.isDark ? MaterialDynamicColors.surfaceBright : MaterialDynamicColors.surfaceDim;\n }\n}\nMaterialDynamicColors.contentAccentToneDelta = 15, MaterialDynamicColors.primaryPaletteKeyColor = DynamicColor.fromPalette({\n name: \"primary_palette_key_color\",\n palette: s => s.primaryPalette,\n tone: s => s.primaryPalette.keyColor.tone\n}), MaterialDynamicColors.secondaryPaletteKeyColor = DynamicColor.fromPalette({\n name: \"secondary_palette_key_color\",\n palette: s => s.secondaryPalette,\n tone: s => s.secondaryPalette.keyColor.tone\n}), MaterialDynamicColors.tertiaryPaletteKeyColor = DynamicColor.fromPalette({\n name: \"tertiary_palette_key_color\",\n palette: s => s.tertiaryPalette,\n tone: s => s.tertiaryPalette.keyColor.tone\n}), MaterialDynamicColors.neutralPaletteKeyColor = DynamicColor.fromPalette({\n name: \"neutral_palette_key_color\",\n palette: s => s.neutralPalette,\n tone: s => s.neutralPalette.keyColor.tone\n}), MaterialDynamicColors.neutralVariantPaletteKeyColor = DynamicColor.fromPalette({\n name: \"neutral_variant_palette_key_color\",\n palette: s => s.neutralVariantPalette,\n tone: s => s.neutralVariantPalette.keyColor.tone\n}), MaterialDynamicColors.background = DynamicColor.fromPalette({\n name: \"background\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 6 : 98,\n isBackground: !0\n}), MaterialDynamicColors.onBackground = DynamicColor.fromPalette({\n name: \"on_background\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.background,\n contrastCurve: new ContrastCurve(3, 3, 4.5, 7)\n}), MaterialDynamicColors.surface = DynamicColor.fromPalette({\n name: \"surface\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 6 : 98,\n isBackground: !0\n}), MaterialDynamicColors.surfaceDim = DynamicColor.fromPalette({\n name: \"surface_dim\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 6 : 87,\n isBackground: !0\n}), MaterialDynamicColors.surfaceBright = DynamicColor.fromPalette({\n name: \"surface_bright\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 24 : 98,\n isBackground: !0\n}), MaterialDynamicColors.surfaceContainerLowest = DynamicColor.fromPalette({\n name: \"surface_container_lowest\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 4 : 100,\n isBackground: !0\n}), MaterialDynamicColors.surfaceContainerLow = DynamicColor.fromPalette({\n name: \"surface_container_low\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 10 : 96,\n isBackground: !0\n}), MaterialDynamicColors.surfaceContainer = DynamicColor.fromPalette({\n name: \"surface_container\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 12 : 94,\n isBackground: !0\n}), MaterialDynamicColors.surfaceContainerHigh = DynamicColor.fromPalette({\n name: \"surface_container_high\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 17 : 92,\n isBackground: !0\n}), MaterialDynamicColors.surfaceContainerHighest = DynamicColor.fromPalette({\n name: \"surface_container_highest\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 22 : 90,\n isBackground: !0\n}), MaterialDynamicColors.onSurface = DynamicColor.fromPalette({\n name: \"on_surface\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.surfaceVariant = DynamicColor.fromPalette({\n name: \"surface_variant\",\n palette: s => s.neutralVariantPalette,\n tone: s => s.isDark ? 30 : 90,\n isBackground: !0\n}), MaterialDynamicColors.onSurfaceVariant = DynamicColor.fromPalette({\n name: \"on_surface_variant\",\n palette: s => s.neutralVariantPalette,\n tone: s => s.isDark ? 80 : 30,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.inverseSurface = DynamicColor.fromPalette({\n name: \"inverse_surface\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 90 : 20\n}), MaterialDynamicColors.inverseOnSurface = DynamicColor.fromPalette({\n name: \"inverse_on_surface\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 20 : 95,\n background: s => MaterialDynamicColors.inverseSurface,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.outline = DynamicColor.fromPalette({\n name: \"outline\",\n palette: s => s.neutralVariantPalette,\n tone: s => s.isDark ? 60 : 50,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1.5, 3, 4.5, 7)\n}), MaterialDynamicColors.outlineVariant = DynamicColor.fromPalette({\n name: \"outline_variant\",\n palette: s => s.neutralVariantPalette,\n tone: s => s.isDark ? 30 : 80,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7)\n}), MaterialDynamicColors.shadow = DynamicColor.fromPalette({\n name: \"shadow\",\n palette: s => s.neutralPalette,\n tone: s => 0\n}), MaterialDynamicColors.scrim = DynamicColor.fromPalette({\n name: \"scrim\",\n palette: s => s.neutralPalette,\n tone: s => 0\n}), MaterialDynamicColors.surfaceTint = DynamicColor.fromPalette({\n name: \"surface_tint\",\n palette: s => s.primaryPalette,\n tone: s => s.isDark ? 80 : 40,\n isBackground: !0\n}), MaterialDynamicColors.primary = DynamicColor.fromPalette({\n name: \"primary\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 100 : 0 : s.isDark ? 80 : 40,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryContainer, MaterialDynamicColors.primary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onPrimary = DynamicColor.fromPalette({\n name: \"on_primary\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 10 : 90 : s.isDark ? 20 : 100,\n background: s => MaterialDynamicColors.primary,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.primaryContainer = DynamicColor.fromPalette({\n name: \"primary_container\",\n palette: s => s.primaryPalette,\n tone: s => isFidelity(s) ? performAlbers(s.sourceColorHct, s) : isMonochrome(s) ? s.isDark ? 85 : 25 : s.isDark ? 30 : 90,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryContainer, MaterialDynamicColors.primary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onPrimaryContainer = DynamicColor.fromPalette({\n name: \"on_primary_container\",\n palette: s => s.primaryPalette,\n tone: s => isFidelity(s) ? DynamicColor.foregroundTone(MaterialDynamicColors.primaryContainer.tone(s), 4.5) : isMonochrome(s) ? s.isDark ? 0 : 100 : s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.primaryContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.inversePrimary = DynamicColor.fromPalette({\n name: \"inverse_primary\",\n palette: s => s.primaryPalette,\n tone: s => s.isDark ? 40 : 80,\n background: s => MaterialDynamicColors.inverseSurface,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.secondary = DynamicColor.fromPalette({\n name: \"secondary\",\n palette: s => s.secondaryPalette,\n tone: s => s.isDark ? 80 : 40,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryContainer, MaterialDynamicColors.secondary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onSecondary = DynamicColor.fromPalette({\n name: \"on_secondary\",\n palette: s => s.secondaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 10 : 100 : s.isDark ? 20 : 100,\n background: s => MaterialDynamicColors.secondary,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.secondaryContainer = DynamicColor.fromPalette({\n name: \"secondary_container\",\n palette: s => s.secondaryPalette,\n tone: s => {\n const initialTone = s.isDark ? 30 : 90;\n if (isMonochrome(s)) return s.isDark ? 30 : 85;\n if (!isFidelity(s)) return initialTone;\n let answer = findDesiredChromaByTone(s.secondaryPalette.hue, s.secondaryPalette.chroma, initialTone, !s.isDark);\n return answer = performAlbers(s.secondaryPalette.getHct(answer), s), answer;\n },\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryContainer, MaterialDynamicColors.secondary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onSecondaryContainer = DynamicColor.fromPalette({\n name: \"on_secondary_container\",\n palette: s => s.secondaryPalette,\n tone: s => isFidelity(s) ? DynamicColor.foregroundTone(MaterialDynamicColors.secondaryContainer.tone(s), 4.5) : s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.secondaryContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.tertiary = DynamicColor.fromPalette({\n name: \"tertiary\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 90 : 25 : s.isDark ? 80 : 40,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryContainer, MaterialDynamicColors.tertiary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onTertiary = DynamicColor.fromPalette({\n name: \"on_tertiary\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 10 : 90 : s.isDark ? 20 : 100,\n background: s => MaterialDynamicColors.tertiary,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.tertiaryContainer = DynamicColor.fromPalette({\n name: \"tertiary_container\",\n palette: s => s.tertiaryPalette,\n tone: s => {\n if (isMonochrome(s)) return s.isDark ? 60 : 49;\n if (!isFidelity(s)) return s.isDark ? 30 : 90;\n const albersTone = performAlbers(s.tertiaryPalette.getHct(s.sourceColorHct.tone), s),\n proposedHct = s.tertiaryPalette.getHct(albersTone);\n return DislikeAnalyzer.fixIfDisliked(proposedHct).tone;\n },\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryContainer, MaterialDynamicColors.tertiary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onTertiaryContainer = DynamicColor.fromPalette({\n name: \"on_tertiary_container\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 0 : 100 : isFidelity(s) ? DynamicColor.foregroundTone(MaterialDynamicColors.tertiaryContainer.tone(s), 4.5) : s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.tertiaryContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.error = DynamicColor.fromPalette({\n name: \"error\",\n palette: s => s.errorPalette,\n tone: s => s.isDark ? 80 : 40,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.errorContainer, MaterialDynamicColors.error, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onError = DynamicColor.fromPalette({\n name: \"on_error\",\n palette: s => s.errorPalette,\n tone: s => s.isDark ? 20 : 100,\n background: s => MaterialDynamicColors.error,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.errorContainer = DynamicColor.fromPalette({\n name: \"error_container\",\n palette: s => s.errorPalette,\n tone: s => s.isDark ? 30 : 90,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.errorContainer, MaterialDynamicColors.error, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onErrorContainer = DynamicColor.fromPalette({\n name: \"on_error_container\",\n palette: s => s.errorPalette,\n tone: s => s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.errorContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.primaryFixed = DynamicColor.fromPalette({\n name: \"primary_fixed\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? 40 : 90,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryFixed, MaterialDynamicColors.primaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.primaryFixedDim = DynamicColor.fromPalette({\n name: \"primary_fixed_dim\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? 30 : 80,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryFixed, MaterialDynamicColors.primaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.onPrimaryFixed = DynamicColor.fromPalette({\n name: \"on_primary_fixed\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? 100 : 10,\n background: s => MaterialDynamicColors.primaryFixedDim,\n secondBackground: s => MaterialDynamicColors.primaryFixed,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.onPrimaryFixedVariant = DynamicColor.fromPalette({\n name: \"on_primary_fixed_variant\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? 90 : 30,\n background: s => MaterialDynamicColors.primaryFixedDim,\n secondBackground: s => MaterialDynamicColors.primaryFixed,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.secondaryFixed = DynamicColor.fromPalette({\n name: \"secondary_fixed\",\n palette: s => s.secondaryPalette,\n tone: s => isMonochrome(s) ? 80 : 90,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryFixed, MaterialDynamicColors.secondaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.secondaryFixedDim = DynamicColor.fromPalette({\n name: \"secondary_fixed_dim\",\n palette: s => s.secondaryPalette,\n tone: s => isMonochrome(s) ? 70 : 80,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryFixed, MaterialDynamicColors.secondaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.onSecondaryFixed = DynamicColor.fromPalette({\n name: \"on_secondary_fixed\",\n palette: s => s.secondaryPalette,\n tone: s => 10,\n background: s => MaterialDynamicColors.secondaryFixedDim,\n secondBackground: s => MaterialDynamicColors.secondaryFixed,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.onSecondaryFixedVariant = DynamicColor.fromPalette({\n name: \"on_secondary_fixed_variant\",\n palette: s => s.secondaryPalette,\n tone: s => isMonochrome(s) ? 25 : 30,\n background: s => MaterialDynamicColors.secondaryFixedDim,\n secondBackground: s => MaterialDynamicColors.secondaryFixed,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.tertiaryFixed = DynamicColor.fromPalette({\n name: \"tertiary_fixed\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? 40 : 90,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryFixed, MaterialDynamicColors.tertiaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.tertiaryFixedDim = DynamicColor.fromPalette({\n name: \"tertiary_fixed_dim\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? 30 : 80,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryFixed, MaterialDynamicColors.tertiaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.onTertiaryFixed = DynamicColor.fromPalette({\n name: \"on_tertiary_fixed\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? 100 : 10,\n background: s => MaterialDynamicColors.tertiaryFixedDim,\n secondBackground: s => MaterialDynamicColors.tertiaryFixed,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.onTertiaryFixedVariant = DynamicColor.fromPalette({\n name: \"on_tertiary_fixed_variant\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? 90 : 30,\n background: s => MaterialDynamicColors.tertiaryFixedDim,\n secondBackground: s => MaterialDynamicColors.tertiaryFixed,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n});\nclass TonalPalette {\n static fromInt(argb) {\n const hct = Hct.fromInt(argb);\n return TonalPalette.fromHct(hct);\n }\n static fromHct(hct) {\n return new TonalPalette(hct.hue, hct.chroma, hct);\n }\n static fromHueAndChroma(hue, chroma) {\n return new TonalPalette(hue, chroma, TonalPalette.createKeyColor(hue, chroma));\n }\n constructor(hue, chroma, keyColor) {\n this.hue = hue, this.chroma = chroma, this.keyColor = keyColor, this.cache = new Map();\n }\n static createKeyColor(hue, chroma) {\n let smallestDeltaHct = Hct.from(hue, chroma, 50),\n smallestDelta = Math.abs(smallestDeltaHct.chroma - chroma);\n for (let delta = 1; delta < 50; delta += 1) {\n if (Math.round(chroma) === Math.round(smallestDeltaHct.chroma)) return smallestDeltaHct;\n const hctAdd = Hct.from(hue, chroma, 50 + delta),\n hctAddDelta = Math.abs(hctAdd.chroma - chroma);\n hctAddDelta < smallestDelta && (smallestDelta = hctAddDelta, smallestDeltaHct = hctAdd);\n const hctSubtract = Hct.from(hue, chroma, 50 - delta),\n hctSubtractDelta = Math.abs(hctSubtract.chroma - chroma);\n hctSubtractDelta < smallestDelta && (smallestDelta = hctSubtractDelta, smallestDeltaHct = hctSubtract);\n }\n return smallestDeltaHct;\n }\n tone(tone) {\n let argb = this.cache.get(tone);\n return void 0 === argb && (argb = Hct.from(this.hue, this.chroma, tone).toInt(), this.cache.set(tone, argb)), argb;\n }\n getHct(tone) {\n return Hct.fromInt(this.tone(tone));\n }\n}\nclass CorePalette {\n static of(argb) {\n return new CorePalette(argb, !1);\n }\n static contentOf(argb) {\n return new CorePalette(argb, !0);\n }\n static fromColors(colors) {\n return CorePalette.createPaletteFromColors(!1, colors);\n }\n static contentFromColors(colors) {\n return CorePalette.createPaletteFromColors(!0, colors);\n }\n static createPaletteFromColors(content, colors) {\n const palette = new CorePalette(colors.primary, content);\n if (colors.secondary) {\n const p = new CorePalette(colors.secondary, content);\n palette.a2 = p.a1;\n }\n if (colors.tertiary) {\n const p = new CorePalette(colors.tertiary, content);\n palette.a3 = p.a1;\n }\n if (colors.error) {\n const p = new CorePalette(colors.error, content);\n palette.error = p.a1;\n }\n if (colors.neutral) {\n const p = new CorePalette(colors.neutral, content);\n palette.n1 = p.n1;\n }\n if (colors.neutralVariant) {\n const p = new CorePalette(colors.neutralVariant, content);\n palette.n2 = p.n2;\n }\n return palette;\n }\n constructor(argb, isContent) {\n const hct = Hct.fromInt(argb),\n hue = hct.hue,\n chroma = hct.chroma;\n isContent ? (this.a1 = TonalPalette.fromHueAndChroma(hue, chroma), this.a2 = TonalPalette.fromHueAndChroma(hue, chroma / 3), this.a3 = TonalPalette.fromHueAndChroma(hue + 60, chroma / 2), this.n1 = TonalPalette.fromHueAndChroma(hue, Math.min(chroma / 12, 4)), this.n2 = TonalPalette.fromHueAndChroma(hue, Math.min(chroma / 6, 8))) : (this.a1 = TonalPalette.fromHueAndChroma(hue, Math.max(48, chroma)), this.a2 = TonalPalette.fromHueAndChroma(hue, 16), this.a3 = TonalPalette.fromHueAndChroma(hue + 60, 24), this.n1 = TonalPalette.fromHueAndChroma(hue, 4), this.n2 = TonalPalette.fromHueAndChroma(hue, 8)), this.error = TonalPalette.fromHueAndChroma(25, 84);\n }\n}\nclass Scheme {\n get primary() {\n return this.props.primary;\n }\n get onPrimary() {\n return this.props.onPrimary;\n }\n get primaryContainer() {\n return this.props.primaryContainer;\n }\n get onPrimaryContainer() {\n return this.props.onPrimaryContainer;\n }\n get secondary() {\n return this.props.secondary;\n }\n get onSecondary() {\n return this.props.onSecondary;\n }\n get secondaryContainer() {\n return this.props.secondaryContainer;\n }\n get onSecondaryContainer() {\n return this.props.onSecondaryContainer;\n }\n get tertiary() {\n return this.props.tertiary;\n }\n get onTertiary() {\n return this.props.onTertiary;\n }\n get tertiaryContainer() {\n return this.props.tertiaryContainer;\n }\n get onTertiaryContainer() {\n return this.props.onTertiaryContainer;\n }\n get error() {\n return this.props.error;\n }\n get onError() {\n return this.props.onError;\n }\n get errorContainer() {\n return this.props.errorContainer;\n }\n get onErrorContainer() {\n return this.props.onErrorContainer;\n }\n get background() {\n return this.props.background;\n }\n get onBackground() {\n return this.props.onBackground;\n }\n get surface() {\n return this.props.surface;\n }\n get onSurface() {\n return this.props.onSurface;\n }\n get surfaceVariant() {\n return this.props.surfaceVariant;\n }\n get onSurfaceVariant() {\n return this.props.onSurfaceVariant;\n }\n get outline() {\n return this.props.outline;\n }\n get outlineVariant() {\n return this.props.outlineVariant;\n }\n get shadow() {\n return this.props.shadow;\n }\n get scrim() {\n return this.props.scrim;\n }\n get inverseSurface() {\n return this.props.inverseSurface;\n }\n get inverseOnSurface() {\n return this.props.inverseOnSurface;\n }\n get inversePrimary() {\n return this.props.inversePrimary;\n }\n static light(argb) {\n return Scheme.lightFromCorePalette(CorePalette.of(argb));\n }\n static dark(argb) {\n return Scheme.darkFromCorePalette(CorePalette.of(argb));\n }\n static lightContent(argb) {\n return Scheme.lightFromCorePalette(CorePalette.contentOf(argb));\n }\n static darkContent(argb) {\n return Scheme.darkFromCorePalette(CorePalette.contentOf(argb));\n }\n static lightFromCorePalette(core) {\n return new Scheme({\n primary: core.a1.tone(40),\n onPrimary: core.a1.tone(100),\n primaryContainer: core.a1.tone(90),\n onPrimaryContainer: core.a1.tone(10),\n secondary: core.a2.tone(40),\n onSecondary: core.a2.tone(100),\n secondaryContainer: core.a2.tone(90),\n onSecondaryContainer: core.a2.tone(10),\n tertiary: core.a3.tone(40),\n onTertiary: core.a3.tone(100),\n tertiaryContainer: core.a3.tone(90),\n onTertiaryContainer: core.a3.tone(10),\n error: core.error.tone(40),\n onError: core.error.tone(100),\n errorContainer: core.error.tone(90),\n onErrorContainer: core.error.tone(10),\n background: core.n1.tone(99),\n onBackground: core.n1.tone(10),\n surface: core.n1.tone(99),\n onSurface: core.n1.tone(10),\n surfaceVariant: core.n2.tone(90),\n onSurfaceVariant: core.n2.tone(30),\n outline: core.n2.tone(50),\n outlineVariant: core.n2.tone(80),\n shadow: core.n1.tone(0),\n scrim: core.n1.tone(0),\n inverseSurface: core.n1.tone(20),\n inverseOnSurface: core.n1.tone(95),\n inversePrimary: core.a1.tone(80)\n });\n }\n static darkFromCorePalette(core) {\n return new Scheme({\n primary: core.a1.tone(80),\n onPrimary: core.a1.tone(20),\n primaryContainer: core.a1.tone(30),\n onPrimaryContainer: core.a1.tone(90),\n secondary: core.a2.tone(80),\n onSecondary: core.a2.tone(20),\n secondaryContainer: core.a2.tone(30),\n onSecondaryContainer: core.a2.tone(90),\n tertiary: core.a3.tone(80),\n onTertiary: core.a3.tone(20),\n tertiaryContainer: core.a3.tone(30),\n onTertiaryContainer: core.a3.tone(90),\n error: core.error.tone(80),\n onError: core.error.tone(20),\n errorContainer: core.error.tone(30),\n onErrorContainer: core.error.tone(80),\n background: core.n1.tone(10),\n onBackground: core.n1.tone(90),\n surface: core.n1.tone(10),\n onSurface: core.n1.tone(90),\n surfaceVariant: core.n2.tone(30),\n onSurfaceVariant: core.n2.tone(80),\n outline: core.n2.tone(60),\n outlineVariant: core.n2.tone(30),\n shadow: core.n1.tone(0),\n scrim: core.n1.tone(0),\n inverseSurface: core.n1.tone(90),\n inverseOnSurface: core.n1.tone(20),\n inversePrimary: core.a1.tone(40)\n });\n }\n constructor(props) {\n this.props = props;\n }\n toJSON() {\n return {\n ...this.props\n };\n }\n}\nfunction hexFromArgb(argb) {\n const r = redFromArgb(argb),\n g = greenFromArgb(argb),\n b = blueFromArgb(argb),\n outParts = [r.toString(16), g.toString(16), b.toString(16)];\n for (const [i, part] of outParts.entries()) 1 === part.length && (outParts[i] = \"0\" + part);\n return \"#\" + outParts.join(\"\");\n}\nfunction argbFromHex(hex) {\n const isThree = 3 === (hex = hex.replace(\"#\", \"\")).length,\n isSix = 6 === hex.length,\n isEight = 8 === hex.length;\n if (!isThree && !isSix && !isEight) throw new Error(\"unexpected hex \" + hex);\n let r = 0,\n g = 0,\n b = 0;\n return isThree ? (r = parseIntHex(hex.slice(0, 1).repeat(2)), g = parseIntHex(hex.slice(1, 2).repeat(2)), b = parseIntHex(hex.slice(2, 3).repeat(2))) : isSix ? (r = parseIntHex(hex.slice(0, 2)), g = parseIntHex(hex.slice(2, 4)), b = parseIntHex(hex.slice(4, 6))) : isEight && (r = parseIntHex(hex.slice(2, 4)), g = parseIntHex(hex.slice(4, 6)), b = parseIntHex(hex.slice(6, 8))), (255 << 24 | (255 & r) << 16 | (255 & g) << 8 | 255 & b) >>> 0;\n}\nfunction parseIntHex(value) {\n return parseInt(value, 16);\n}\nfunction themeFromSourceColor(source, customColors) {\n if (customColors === void 0) {\n customColors = [];\n }\n const palette = CorePalette.of(source);\n return {\n source: source,\n schemes: {\n light: Scheme.light(source),\n dark: Scheme.dark(source)\n },\n palettes: {\n primary: palette.a1,\n secondary: palette.a2,\n tertiary: palette.a3,\n neutral: palette.n1,\n neutralVariant: palette.n2,\n error: palette.error\n },\n customColors: customColors.map(c => customColor(source, c))\n };\n}\nfunction customColor(source, color) {\n let value = color.value;\n const from = value,\n to = source;\n color.blend && (value = Blend.harmonize(from, to));\n const tones = CorePalette.of(value).a1;\n return {\n color: color,\n value: value,\n light: {\n color: tones.tone(40),\n onColor: tones.tone(100),\n colorContainer: tones.tone(90),\n onColorContainer: tones.tone(10)\n },\n dark: {\n color: tones.tone(80),\n onColor: tones.tone(20),\n colorContainer: tones.tone(30),\n onColorContainer: tones.tone(90)\n }\n };\n}\nexport { argbFromHex, hexFromArgb, themeFromSourceColor };","// eslint-disable-next-line\nimport { argbFromHex, hexFromArgb, themeFromSourceColor } from './material-color-utils.js';\n\n/* eslint-disable */\n// prettier-ignore\nfunction toRGBA(d) {\n const r = Math.round;\n const l = d.length;\n const rgba = {};\n if (d.slice(0, 3).toLowerCase() === 'rgb') {\n d = d.replace(' ', '').split(',');\n rgba[0] = parseInt(d[0].slice(d[3].toLowerCase() === 'a' ? 5 : 4), 10);\n rgba[1] = parseInt(d[1], 10);\n rgba[2] = parseInt(d[2], 10);\n rgba[3] = d[3] ? parseFloat(d[3]) : -1;\n } else {\n if (l < 6) d = parseInt(String(d[1]) + d[1] + d[2] + d[2] + d[3] + d[3] + (l > 4 ? String(d[4]) + d[4] : ''), 16);else d = parseInt(d.slice(1), 16);\n rgba[0] = d >> 16 & 255;\n rgba[1] = d >> 8 & 255;\n rgba[2] = d & 255;\n rgba[3] = l === 9 || l === 5 ? r((d >> 24 & 255) / 255 * 10000) / 10000 : -1;\n }\n return rgba;\n}\n\n// prettier-ignore\nfunction blend(from, to, p) {\n if (p === void 0) {\n p = 0.5;\n }\n const r = Math.round;\n from = from.trim();\n to = to.trim();\n const b = p < 0;\n p = b ? p * -1 : p;\n const f = toRGBA(from);\n const t = toRGBA(to);\n if (to[0] === 'r') {\n return 'rgb' + (to[3] === 'a' ? 'a(' : '(') + r((t[0] - f[0]) * p + f[0]) + ',' + r((t[1] - f[1]) * p + f[1]) + ',' + r((t[2] - f[2]) * p + f[2]) + (f[3] < 0 && t[3] < 0 ? '' : ',' + (f[3] > -1 && t[3] > -1 ? r(((t[3] - f[3]) * p + f[3]) * 10000) / 10000 : t[3] < 0 ? f[3] : t[3])) + ')';\n }\n return '#' + (0x100000000 + (f[3] > -1 && t[3] > -1 ? r(((t[3] - f[3]) * p + f[3]) * 255) : t[3] > -1 ? r(t[3] * 255) : f[3] > -1 ? r(f[3] * 255) : 255) * 0x1000000 + r((t[0] - f[0]) * p + f[0]) * 0x10000 + r((t[1] - f[1]) * p + f[1]) * 0x100 + r((t[2] - f[2]) * p + f[2])).toString(16).slice(f[3] > -1 || t[3] > -1 ? 1 : 3);\n}\n/* eslint-enable */\n\nexport const materialColors = function (hexColor) {\n if (hexColor === void 0) {\n hexColor = '';\n }\n const theme = themeFromSourceColor(argbFromHex(`#${hexColor.replace('#', '')}`));\n [0.05, 0.08, 0.11, 0.12, 0.14].forEach((amount, index) => {\n theme.schemes.light.props[`surface${index + 1}`] = argbFromHex(blend(hexFromArgb(theme.schemes.light.props.surface), hexFromArgb(theme.schemes.light.props.primary), amount));\n theme.schemes.dark.props[`surface${index + 1}`] = argbFromHex(blend(hexFromArgb(theme.schemes.dark.props.surface), hexFromArgb(theme.schemes.dark.props.primary), amount));\n });\n const name = n => {\n return n.split('').map(char => char.toUpperCase() === char && char !== '-' && char !== '7' ? `-${char.toLowerCase()}` : char).join('');\n };\n const shouldSkip = prop => {\n const skip = ['tertiary', 'shadow', 'scrim', 'error', 'background'];\n return skip.filter(v => prop.toLowerCase().includes(v)).length > 0;\n };\n const light = {};\n const dark = {};\n Object.keys(theme.schemes.light.props).forEach(prop => {\n if (shouldSkip(prop)) return;\n light[name(`--f7-md-${prop}`)] = hexFromArgb(theme.schemes.light.props[prop]);\n });\n Object.keys(theme.schemes.dark.props).forEach(prop => {\n if (shouldSkip(prop)) return;\n dark[name(`--f7-md-${prop}`)] = hexFromArgb(theme.schemes.dark.props[prop]);\n });\n return {\n light,\n dark\n };\n};","import { getWindow } from 'ssr-window';\nimport { materialColors } from './material-colors.js';\nlet uniqueNum = 0;\nexport function uniqueNumber() {\n uniqueNum += 1;\n return uniqueNum;\n}\nexport function id(mask, map) {\n if (mask === void 0) {\n mask = 'xxxxxxxxxx';\n }\n if (map === void 0) {\n map = '0123456789abcdef';\n }\n const length = map.length;\n return mask.replace(/x/g, () => map[Math.floor(Math.random() * length)]);\n}\nexport const mdPreloaderContent = `\n \n \n \n \n \n`.trim();\nexport const iosPreloaderContent = `\n \n ${[0, 1, 2, 3, 4, 5, 6, 7].map(() => '').join('')}\n \n`.trim();\nexport function eventNameToColonCase(eventName) {\n let hasColon;\n return eventName.split('').map((char, index) => {\n if (char.match(/[A-Z]/) && index !== 0 && !hasColon) {\n hasColon = true;\n return `:${char.toLowerCase()}`;\n }\n return char.toLowerCase();\n }).join('');\n}\nexport function deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no setter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nexport function requestAnimationFrame(callback) {\n const window = getWindow();\n return window.requestAnimationFrame(callback);\n}\nexport function cancelAnimationFrame(frameId) {\n const window = getWindow();\n return window.cancelAnimationFrame(frameId);\n}\nexport function nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nexport function nextFrame(callback) {\n return requestAnimationFrame(() => {\n requestAnimationFrame(callback);\n });\n}\nexport function now() {\n return Date.now();\n}\nexport function parseUrlQuery(url) {\n const window = getWindow();\n const query = {};\n let urlToParse = url || window.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter(paramsPart => paramsPart !== '');\n length = params.length;\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param.slice(1).join('=')) || '';\n }\n }\n return query;\n}\nexport function getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = window.getComputedStyle(el, null);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nexport function serializeObject(obj, parents) {\n if (parents === void 0) {\n parents = [];\n }\n if (typeof obj === 'string') return obj;\n const resultArray = [];\n const separator = '&';\n let newParents;\n function varName(name) {\n if (parents.length > 0) {\n let parentParts = '';\n for (let j = 0; j < parents.length; j += 1) {\n if (j === 0) parentParts += parents[j];else parentParts += `[${encodeURIComponent(parents[j])}]`;\n }\n return `${parentParts}[${encodeURIComponent(name)}]`;\n }\n return encodeURIComponent(name);\n }\n function varValue(value) {\n return encodeURIComponent(value);\n }\n Object.keys(obj).forEach(prop => {\n let toPush;\n if (Array.isArray(obj[prop])) {\n toPush = [];\n for (let i = 0; i < obj[prop].length; i += 1) {\n if (!Array.isArray(obj[prop][i]) && typeof obj[prop][i] === 'object') {\n newParents = parents.slice();\n newParents.push(prop);\n newParents.push(String(i));\n toPush.push(serializeObject(obj[prop][i], newParents));\n } else {\n toPush.push(`${varName(prop)}[]=${varValue(obj[prop][i])}`);\n }\n }\n if (toPush.length > 0) resultArray.push(toPush.join(separator));\n } else if (obj[prop] === null || obj[prop] === '') {\n resultArray.push(`${varName(prop)}=`);\n } else if (typeof obj[prop] === 'object') {\n // Object, convert to named array\n newParents = parents.slice();\n newParents.push(prop);\n toPush = serializeObject(obj[prop], newParents);\n if (toPush !== '') resultArray.push(toPush);\n } else if (typeof obj[prop] !== 'undefined' && obj[prop] !== '') {\n // Should be string or plain value\n resultArray.push(`${varName(prop)}=${varValue(obj[prop])}`);\n } else if (obj[prop] === '') resultArray.push(varName(prop)); // eslint-disable-line\n });\n\n return resultArray.join(separator);\n}\nexport function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n}\nexport function merge() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n const to = args[0];\n args.splice(0, 1);\n const from = args;\n for (let i = 0; i < from.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n}\nexport function extend() {\n let deep = true;\n let to;\n let from;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'boolean') {\n deep = args[0];\n to = args[1];\n args.splice(0, 2);\n from = args;\n } else {\n to = args[0];\n args.splice(0, 1);\n from = args;\n }\n for (let i = 0; i < from.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (!deep) {\n to[nextKey] = nextSource[nextKey];\n } else if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n extend(to[nextKey], nextSource[nextKey]);\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nexport function colorHexToRgb(hex) {\n const h = hex.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i, (m, r, g, b) => r + r + g + g + b + b);\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(h);\n return result ? result.slice(1).map(n => parseInt(n, 16)) : null;\n}\nexport function colorRgbToHex(r, g, b) {\n const result = [r, g, b].map(n => {\n const hex = n.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n }).join('');\n return `#${result}`;\n}\nexport function colorRgbToHsl(r, g, b) {\n r /= 255; // eslint-disable-line\n g /= 255; // eslint-disable-line\n b /= 255; // eslint-disable-line\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const d = max - min;\n let h;\n if (d === 0) h = 0;else if (max === r) h = (g - b) / d % 6;else if (max === g) h = (b - r) / d + 2;else if (max === b) h = (r - g) / d + 4;\n const l = (min + max) / 2;\n const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));\n if (h < 0) h = 360 / 60 + h;\n return [h * 60, s, l];\n}\nexport function colorHslToRgb(h, s, l) {\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const hp = h / 60;\n const x = c * (1 - Math.abs(hp % 2 - 1));\n let rgb1;\n if (Number.isNaN(h) || typeof h === 'undefined') {\n rgb1 = [0, 0, 0];\n } else if (hp <= 1) rgb1 = [c, x, 0];else if (hp <= 2) rgb1 = [x, c, 0];else if (hp <= 3) rgb1 = [0, c, x];else if (hp <= 4) rgb1 = [0, x, c];else if (hp <= 5) rgb1 = [x, 0, c];else if (hp <= 6) rgb1 = [c, 0, x];\n const m = l - c / 2;\n return rgb1.map(n => Math.max(0, Math.min(255, Math.round(255 * (n + m)))));\n}\nexport function colorHsbToHsl(h, s, b) {\n const HSL = {\n h,\n s: 0,\n l: 0\n };\n const HSB = {\n h,\n s,\n b\n };\n HSL.l = (2 - HSB.s) * HSB.b / 2;\n HSL.s = HSL.l && HSL.l < 1 ? HSB.s * HSB.b / (HSL.l < 0.5 ? HSL.l * 2 : 2 - HSL.l * 2) : HSL.s;\n return [HSL.h, HSL.s, HSL.l];\n}\nexport function colorHslToHsb(h, s, l) {\n const HSB = {\n h,\n s: 0,\n b: 0\n };\n const HSL = {\n h,\n s,\n l\n };\n const t = HSL.s * (HSL.l < 0.5 ? HSL.l : 1 - HSL.l);\n HSB.b = HSL.l + t;\n HSB.s = HSL.l > 0 ? 2 * t / HSB.b : HSB.s;\n return [HSB.h, HSB.s, HSB.b];\n}\nconst getShadeTintColors = rgb => {\n const hsl = colorRgbToHsl(...rgb);\n const hslShade = [hsl[0], hsl[1], Math.max(0, hsl[2] - 0.08)];\n const hslTint = [hsl[0], hsl[1], Math.max(0, hsl[2] + 0.08)];\n const shade = colorRgbToHex(...colorHslToRgb(...hslShade));\n const tint = colorRgbToHex(...colorHslToRgb(...hslTint));\n return {\n shade,\n tint\n };\n};\nexport function colorThemeCSSProperties() {\n let hex;\n let rgb;\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n if (args.length === 1) {\n hex = args[0];\n rgb = colorHexToRgb(hex);\n } else if (args.length === 3) {\n rgb = args;\n hex = colorRgbToHex(...rgb);\n }\n if (!rgb) return {};\n const {\n light,\n dark\n } = materialColors(hex);\n const shadeTintIos = getShadeTintColors(rgb);\n const shadeTintMdLight = getShadeTintColors(colorHexToRgb(light['--f7-md-primary']));\n const shadeTintMdDark = getShadeTintColors(colorHexToRgb(dark['--f7-md-primary']));\n Object.keys(light).forEach(key => {\n if (key.includes('surface-')) {\n light[`${key}-rgb`] = colorHexToRgb(light[key]);\n }\n });\n Object.keys(dark).forEach(key => {\n if (key.includes('surface-')) {\n dark[`${key}-rgb`] = colorHexToRgb(dark[key]);\n }\n });\n return {\n ios: {\n '--f7-theme-color': 'var(--f7-ios-primary)',\n '--f7-theme-color-rgb': 'var(--f7-ios-primary-rgb)',\n '--f7-theme-color-shade': 'var(--f7-ios-primary-shade)',\n '--f7-theme-color-tint': 'var(--f7-ios-primary-tint)'\n },\n md: {\n '--f7-theme-color': 'var(--f7-md-primary)',\n '--f7-theme-color-rgb': 'var(--f7-md-primary-rgb)',\n '--f7-theme-color-shade': 'var(--f7-md-primary-shade)',\n '--f7-theme-color-tint': 'var(--f7-md-primary-tint)'\n },\n light: {\n '--f7-ios-primary': hex,\n '--f7-ios-primary-shade': shadeTintIos.shade,\n '--f7-ios-primary-tint': shadeTintIos.tint,\n '--f7-ios-primary-rgb': rgb.join(', '),\n '--f7-md-primary-shade': shadeTintMdLight.shade,\n '--f7-md-primary-tint': shadeTintMdLight.tint,\n '--f7-md-primary-rgb': colorHexToRgb(light['--f7-md-primary']).join(', '),\n ...light\n },\n dark: {\n '--f7-md-primary-shade': shadeTintMdDark.shade,\n '--f7-md-primary-tint': shadeTintMdDark.tint,\n '--f7-md-primary-rgb': colorHexToRgb(dark['--f7-md-primary']).join(', '),\n ...dark\n }\n };\n}\nexport function bindMethods(instance, obj) {\n Object.keys(obj).forEach(key => {\n if (isObject(obj[key])) {\n Object.keys(obj[key]).forEach(subKey => {\n if (typeof obj[key][subKey] === 'function') {\n obj[key][subKey] = obj[key][subKey].bind(instance);\n }\n });\n }\n instance[key] = obj[key];\n });\n}\nexport function flattenArray() {\n const arr = [];\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n args.forEach(arg => {\n if (Array.isArray(arg)) arr.push(...flattenArray(...arg));else arr.push(arg);\n });\n return arr;\n}\nexport function colorThemeCSSStyles(colors) {\n if (colors === void 0) {\n colors = {};\n }\n const stringifyObject = obj => {\n let res = '';\n Object.keys(obj).forEach(key => {\n res += `${key}:${obj[key]};`;\n });\n return res;\n };\n const colorVars = colorThemeCSSProperties(colors.primary);\n const primary = [`:root{`, stringifyObject(colorVars.light), `--swiper-theme-color:var(--f7-theme-color);`, ...Object.keys(colors).map(colorName => `--f7-color-${colorName}: ${colors[colorName]};`), `}`, `.dark{`, stringifyObject(colorVars.dark), `}`, `.ios, .ios .dark{`, stringifyObject(colorVars.ios), '}', `.md, .md .dark{`, stringifyObject(colorVars.md), '}'].join('');\n const restVars = {};\n Object.keys(colors).forEach(colorName => {\n const colorValue = colors[colorName];\n restVars[colorName] = colorThemeCSSProperties(colorValue);\n });\n\n // rest\n let rest = '';\n Object.keys(colors).forEach(colorName => {\n const {\n light,\n dark,\n ios,\n md\n } = restVars[colorName];\n const whiteColorVars = `\n --f7-ios-primary: #ffffff;\n --f7-ios-primary-shade: #ebebeb;\n --f7-ios-primary-tint: #ffffff;\n --f7-ios-primary-rgb: 255, 255, 255;\n --f7-md-primary-shade: #eee;\n --f7-md-primary-tint: #fff;\n --f7-md-primary-rgb: 255, 255, 255;\n --f7-md-primary: #fff;\n --f7-md-on-primary: #000;\n --f7-md-primary-container: #fff;\n --f7-md-on-primary-container: #000;\n --f7-md-secondary: #fff;\n --f7-md-on-secondary: #000;\n --f7-md-secondary-container: #555;\n --f7-md-on-secondary-container: #fff;\n --f7-md-surface: #fff;\n --f7-md-on-surface: #000;\n --f7-md-surface-variant: #333;\n --f7-md-on-surface-variant: #fff;\n --f7-md-outline: #fff;\n --f7-md-outline-variant: #fff;\n --f7-md-inverse-surface: #000;\n --f7-md-inverse-on-surface: #fff;\n --f7-md-inverse-primary: #000;\n --f7-md-surface-1: #f8f8f8;\n --f7-md-surface-2: #f1f1f1;\n --f7-md-surface-3: #e7e7e7;\n --f7-md-surface-4: #e1e1e1;\n --f7-md-surface-5: #d7d7d7;\n --f7-md-surface-variant-rgb: 51, 51, 51;\n --f7-md-on-surface-variant-rgb: 255, 255, 255;\n --f7-md-surface-1-rgb: 248, 248, 248;\n --f7-md-surface-2-rgb: 241, 241, 241;\n --f7-md-surface-3-rgb: 231, 231, 231;\n --f7-md-surface-4-rgb: 225, 225, 225;\n --f7-md-surface-5-rgb: 215, 215, 215;\n `;\n const blackColorVars = `\n --f7-ios-primary: #000;\n --f7-ios-primary-shade: #000;\n --f7-ios-primary-tint: #232323;\n --f7-ios-primary-rgb: 0, 0, 0;\n --f7-md-primary-shade: #000;\n --f7-md-primary-tint: #232323;\n --f7-md-primary-rgb: 0, 0, 0;\n --f7-md-primary: #000;\n --f7-md-on-primary: #fff;\n --f7-md-primary-container: #000;\n --f7-md-on-primary-container: #fff;\n --f7-md-secondary: #000;\n --f7-md-on-secondary: #fff;\n --f7-md-secondary-container: #aaa;\n --f7-md-on-secondary-container: #000;\n --f7-md-surface: #000;\n --f7-md-on-surface: #fff;\n --f7-md-surface-variant: #ccc;\n --f7-md-on-surface-variant: #000;\n --f7-md-outline: #000;\n --f7-md-outline-variant: #000;\n --f7-md-inverse-surface: #fff;\n --f7-md-inverse-on-surface: #000;\n --f7-md-inverse-primary: #fff;\n --f7-md-surface-1: #070707;\n --f7-md-surface-2: #161616;\n --f7-md-surface-3: #232323;\n --f7-md-surface-4: #303030;\n --f7-md-surface-5: #373737;\n --f7-md-surface-variant-rgb: 204, 204, 204;\n --f7-md-on-surface-variant-rgb: 0, 0, 0;\n --f7-md-surface-1-rgb: 7, 7, 7;\n --f7-md-surface-2-rgb: 22, 22, 22;\n --f7-md-surface-3-rgb: 35, 35, 35;\n --f7-md-surface-4-rgb: 48, 48, 48;\n --f7-md-surface-5-rgb: 55, 55, 55;\n `;\n /* eslint-disable */\n const lightString = colorName === 'white' ? whiteColorVars : colorName === 'black' ? blackColorVars : stringifyObject(light);\n const darkString = colorName === 'white' ? whiteColorVars : colorName === 'black' ? blackColorVars : stringifyObject(dark);\n /* eslint-enable */\n rest += [`.color-${colorName} {`, lightString, `--swiper-theme-color: var(--f7-theme-color);`, `}`, `.color-${colorName}.dark, .color-${colorName} .dark, .dark .color-${colorName} {`, darkString, `--swiper-theme-color: var(--f7-theme-color);`, `}`, `.ios .color-${colorName}, .ios.color-${colorName}, .ios .dark .color-${colorName}, .ios .dark.color-${colorName} {`, stringifyObject(ios), `}`, `.md .color-${colorName}, .md.color-${colorName}, .md .dark .color-${colorName}, .md .dark.color-${colorName} {`, stringifyObject(md), `}`,\n // text color\n `.text-color-${colorName} {`, `--f7-theme-color-text-color: ${colors[colorName]};`, `}`,\n // bg color\n `.bg-color-${colorName} {`, `--f7-theme-color-bg-color: ${colors[colorName]};`, `}`,\n // border color\n `.border-color-${colorName} {`, `--f7-theme-color-border-color: ${colors[colorName]};`, `}`,\n // ripple color\n `.ripple-color-${colorName} {`, `--f7-theme-color-ripple-color: rgba(${light['--f7-ios-primary-rgb']}, 0.3);`, `}`].join('');\n });\n return `${primary}${rest}`;\n}","import { getWindow, getDocument } from 'ssr-window';\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n pointerEvents: !!window.PointerEvent && 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints >= 0,\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }(),\n intersectionObserver: function checkObserver() {\n return 'IntersectionObserver' in window;\n }()\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCalculated;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!window.cordova,\n electron: false,\n capacitor: !!window.Capacitor,\n nwjs: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS|iPhone;\\sCPU\\sOS)\\s([\\d_]+)/);\n const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n const nwjs = typeof nw !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && typeof process.versions.nw !== 'undefined';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone)) || window.matchMedia && window.matchMedia('(display-mode: standalone)').matches;\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron || nwjs;\n if (device.desktop) {\n device.electron = electron;\n device.nwjs = nwjs;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Color Scheme\n const DARK = '(prefers-color-scheme: dark)';\n const LIGHT = '(prefers-color-scheme: light)';\n device.prefersColorScheme = function prefersColorTheme() {\n let theme;\n if (window.matchMedia && window.matchMedia(LIGHT).matches) {\n theme = 'light';\n }\n if (window.matchMedia && window.matchMedia(DARK).matches) {\n theme = 'dark';\n }\n return theme;\n };\n\n // Export object\n return device;\n}\nfunction getDevice(overrides, reset) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCalculated || reset) {\n deviceCalculated = calcDevice(overrides);\n }\n return deviceCalculated;\n}\nexport { getDevice };","class EventsClass {\n constructor(parents) {\n if (parents === void 0) {\n parents = [];\n }\n const self = this;\n self.eventsParents = parents;\n self.eventsListeners = {};\n }\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n }\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n }\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.f7proxy && eventHandler.f7proxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n }\n emit() {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n let eventsParents;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n eventsParents = self.eventsParents;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n eventsParents = args[0].local ? [] : args[0].parents || self.eventsParents;\n }\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n const localEvents = eventsArray.map(eventName => eventName.replace('local::', ''));\n const parentEvents = eventsArray.filter(eventName => eventName.indexOf('local::') < 0);\n localEvents.forEach(event => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach(eventHandler => {\n handlers.push(eventHandler);\n });\n handlers.forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n if (eventsParents && eventsParents.length > 0) {\n eventsParents.forEach(eventsParent => {\n eventsParent.emit(parentEvents, ...data);\n });\n }\n return self;\n }\n}\nexport default EventsClass;","import { extend, now } from './utils.js';\nimport EventsClass from './events-class.js';\nclass Framework7Class extends EventsClass {\n constructor(params, parents) {\n if (params === void 0) {\n params = {};\n }\n if (parents === void 0) {\n parents = [];\n }\n super(parents);\n const self = this;\n self.params = params;\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach(eventName => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n // eslint-disable-next-line\n useModuleParams(module, instanceParams) {\n if (module.params) {\n const originalParams = {};\n Object.keys(module.params).forEach(paramKey => {\n if (typeof instanceParams[paramKey] === 'undefined') return;\n originalParams[paramKey] = extend({}, instanceParams[paramKey]);\n });\n extend(instanceParams, module.params);\n Object.keys(originalParams).forEach(paramKey => {\n extend(instanceParams[paramKey], originalParams[paramKey]);\n });\n }\n }\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach(moduleName => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n extend(instanceParams, module.params);\n }\n });\n }\n useModule(moduleName, moduleParams) {\n if (moduleName === void 0) {\n moduleName = '';\n }\n if (moduleParams === void 0) {\n moduleParams = {};\n }\n const instance = this;\n if (!instance.modules) return;\n const module = typeof moduleName === 'string' ? instance.modules[moduleName] : moduleName;\n if (!module) return;\n\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach(modulePropName => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach(moduleEventName => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n // Add vnode hooks\n if (module.vnode) {\n if (!instance.vnodeHooks) instance.vnodeHooks = {};\n Object.keys(module.vnode).forEach(vnodeId => {\n Object.keys(module.vnode[vnodeId]).forEach(hookName => {\n const handler = module.vnode[vnodeId][hookName];\n if (!instance.vnodeHooks[hookName]) instance.vnodeHooks[hookName] = {};\n if (!instance.vnodeHooks[hookName][vnodeId]) instance.vnodeHooks[hookName][vnodeId] = [];\n instance.vnodeHooks[hookName][vnodeId].push(handler.bind(instance));\n });\n });\n }\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n }\n useModules(modulesParams) {\n if (modulesParams === void 0) {\n modulesParams = {};\n }\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach(moduleName => {\n const moduleParams = modulesParams[moduleName] || {};\n instance.useModule(moduleName, moduleParams);\n });\n }\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n static installModule(module) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || `${Object.keys(Class.prototype.modules).length}_${now()}`;\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach(key => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach(key => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n module.install.apply(Class, params);\n }\n return Class;\n }\n static use(module) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach(m => Class.installModule(m));\n return Class;\n }\n for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n params[_key2 - 1] = arguments[_key2];\n }\n return Class.installModule(module, ...params);\n }\n}\nexport default Framework7Class;","import $ from './dom7.js';\nexport default function ConstructorMethods(parameters) {\n if (parameters === void 0) {\n parameters = {};\n }\n const {\n defaultSelector,\n constructor: Constructor,\n domProp,\n app,\n addMethods\n } = parameters;\n const methods = {\n create() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (app) return new Constructor(app, ...args);\n return new Constructor(...args);\n },\n get(el) {\n if (el === void 0) {\n el = defaultSelector;\n }\n if (el instanceof Constructor) return el;\n const $el = $(el);\n if ($el.length === 0) return undefined;\n return $el[0][domProp];\n },\n destroy(el) {\n const instance = methods.get(el);\n if (instance && instance.destroy) return instance.destroy();\n return undefined;\n }\n };\n if (addMethods && Array.isArray(addMethods)) {\n addMethods.forEach(methodName => {\n methods[methodName] = function (el) {\n if (el === void 0) {\n el = defaultSelector;\n }\n const instance = methods.get(el);\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n if (instance && instance[methodName]) return instance[methodName](...args);\n return undefined;\n };\n });\n }\n return methods;\n}","import $ from './dom7.js';\nimport { extend } from './utils.js';\nimport ConstructorMethods from './constructor-methods.js';\nexport default function ModalMethods(parameters) {\n if (parameters === void 0) {\n parameters = {};\n }\n const {\n defaultSelector,\n constructor: Constructor,\n app\n } = parameters;\n const methods = extend(ConstructorMethods({\n defaultSelector,\n constructor: Constructor,\n app,\n domProp: 'f7Modal'\n }), {\n open(el, animate, targetEl) {\n let $el = $(el);\n if ($el.length > 1 && targetEl) {\n // check if same modal in other page\n const $targetPage = $(targetEl).parents('.page');\n if ($targetPage.length) {\n $el.each(modalEl => {\n const $modalEl = $(modalEl);\n if ($modalEl.parents($targetPage)[0] === $targetPage[0]) {\n $el = $modalEl;\n }\n });\n }\n }\n if ($el.length > 1) {\n $el = $el.eq($el.length - 1);\n }\n if (!$el.length) return undefined;\n let instance = $el[0].f7Modal;\n if (!instance) {\n const params = $el.dataset();\n instance = new Constructor(app, {\n el: $el,\n ...params\n });\n }\n return instance.open(animate);\n },\n close(el, animate, targetEl) {\n if (el === void 0) {\n el = defaultSelector;\n }\n let $el = $(el);\n if (!$el.length) return undefined;\n if ($el.length > 1) {\n // check if close link (targetEl) in this modal\n let $parentEl;\n if (targetEl) {\n const $targetEl = $(targetEl);\n if ($targetEl.length) {\n $parentEl = $targetEl.parents($el);\n }\n }\n if ($parentEl && $parentEl.length > 0) {\n $el = $parentEl;\n } else {\n $el = $el.eq($el.length - 1);\n }\n }\n let instance = $el[0].f7Modal;\n if (!instance) {\n const params = $el.dataset();\n instance = new Constructor(app, {\n el: $el,\n ...params\n });\n }\n return instance.close(animate);\n }\n });\n return methods;\n}","import { getWindow, getDocument } from 'ssr-window';\nimport { id } from '../../shared/utils.js';\nimport $ from '../../shared/dom7.js';\nconst fetchedModules = [];\nfunction loadModule(moduleToLoad) {\n const Framework7 = this;\n const window = getWindow();\n const document = getDocument();\n return new Promise((resolve, reject) => {\n const app = Framework7.instance;\n let modulePath;\n let moduleObj;\n let moduleFunc;\n if (!moduleToLoad) {\n reject(new Error('Framework7: Lazy module must be specified'));\n return;\n }\n function install(module) {\n Framework7.use(module);\n if (app) {\n app.useModuleParams(module, app.params);\n app.useModule(module);\n }\n }\n if (typeof moduleToLoad === 'string') {\n const matchNamePattern = moduleToLoad.match(/([a-z0-9-]*)/i);\n if (moduleToLoad.indexOf('.') < 0 && matchNamePattern && matchNamePattern[0].length === moduleToLoad.length) {\n if (!app || app && !app.params.lazyModulesPath) {\n reject(new Error('Framework7: \"lazyModulesPath\" app parameter must be specified to fetch module by name'));\n return;\n }\n modulePath = `${app.params.lazyModulesPath}/${moduleToLoad}/${moduleToLoad}.lazy.js`;\n } else {\n modulePath = moduleToLoad;\n }\n } else if (typeof moduleToLoad === 'function') {\n moduleFunc = moduleToLoad;\n } else {\n // considering F7-Plugin object\n moduleObj = moduleToLoad;\n }\n if (moduleFunc) {\n const module = moduleFunc(Framework7, false);\n if (!module) {\n reject(new Error(\"Framework7: Can't find Framework7 component in specified component function\"));\n return;\n }\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolve();\n return;\n }\n // Install It\n install(module);\n resolve();\n }\n if (moduleObj) {\n const module = moduleObj;\n if (!module) {\n reject(new Error(\"Framework7: Can't find Framework7 component in specified component\"));\n return;\n }\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolve();\n return;\n }\n // Install It\n install(module);\n resolve();\n }\n if (modulePath) {\n if (fetchedModules.indexOf(modulePath) >= 0) {\n resolve();\n return;\n }\n fetchedModules.push(modulePath);\n const scriptLoad = new Promise((resolveScript, rejectScript) => {\n fetch(modulePath).then(res => res.text()).then(scriptContent => {\n const callbackId = id();\n const callbackLoadName = `f7_component_loader_callback_${callbackId}`;\n const scriptEl = document.createElement('script');\n scriptEl.innerHTML = `window.${callbackLoadName} = function (Framework7, Framework7AutoInstallComponent) {return ${scriptContent.trim()}}`;\n $('head').append(scriptEl);\n const componentLoader = window[callbackLoadName];\n delete window[callbackLoadName];\n $(scriptEl).remove();\n const module = componentLoader(Framework7, false);\n if (!module) {\n rejectScript(new Error(`Framework7: Can't find Framework7 component in ${modulePath} file`));\n return;\n }\n\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolveScript();\n return;\n }\n\n // Install It\n install(module);\n resolveScript();\n }).catch(err => {\n rejectScript(err);\n });\n });\n const styleLoad = new Promise(resolveStyle => {\n fetch(modulePath.replace('.lazy.js', app.rtl ? '.rtl.css' : '.css').replace('.js', app.rtl ? '.rtl.css' : '.css')).then(res => res.text()).then(styleContent => {\n const styleEl = document.createElement('style');\n styleEl.innerHTML = styleContent;\n $('head').append(styleEl);\n resolveStyle();\n }).catch(() => {\n resolveStyle();\n });\n });\n Promise.all([scriptLoad, styleLoad]).then(() => {\n resolve();\n }).catch(err => {\n reject(err);\n });\n }\n });\n}\nexport default loadModule;","/* eslint-disable prefer-rest-params */\nconst $jsx = function (tag, props) {\n const attrs = props || {};\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n const children = args || [];\n const attrsString = Object.keys(attrs).map(attr => {\n if (attr[0] === '_') {\n if (attrs[attr]) return attr.replace('_', '');\n return '';\n }\n return `${attr}=\"${attrs[attr]}\"`;\n }).filter(attr => !!attr).join(' ');\n if (['path', 'img', 'circle', 'polygon', 'line', 'input'].indexOf(tag) >= 0) {\n return `<${tag} ${attrsString} />`.trim();\n }\n const childrenContent = children.filter(c => !!c).map(c => Array.isArray(c) ? c.join('') : c).join('');\n return `<${tag} ${attrsString}>${childrenContent}`.trim();\n};\nexport default $jsx;","/* eslint-disable no-underscore-dangle */\n\nimport { getWindow, getDocument } from 'ssr-window';\nimport { extend, nextFrame } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport Framework7Class from '../../shared/class.js';\nimport EventsClass from '../../shared/events-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nimport $ from '../../shared/dom7.js';\nimport loadModule from './load-module.js';\nimport $jsx from '../../shared/$jsx.js';\nclass Framework7 extends Framework7Class {\n constructor(params) {\n if (params === void 0) {\n params = {};\n }\n super(params);\n // eslint-disable-next-line\n if (Framework7.instance && typeof window !== 'undefined') {\n throw new Error(\"Framework7 is already initialized and can't be initialized more than once\");\n }\n const device = getDevice({\n userAgent: params.userAgent || undefined\n });\n const support = getSupport();\n const passedParams = extend({}, params);\n\n // App Instance\n const app = this;\n app.device = device;\n app.support = support;\n const w = getWindow();\n const d = getDocument();\n Framework7.instance = app;\n\n // Default\n const defaults = {\n el: 'body',\n theme: 'auto',\n routes: [],\n name: 'Framework7',\n lazyModulesPath: null,\n initOnDeviceReady: true,\n init: true,\n darkMode: undefined,\n iosTranslucentBars: true,\n iosTranslucentModals: true,\n component: undefined,\n componentUrl: undefined,\n userAgent: null,\n url: null,\n colors: {\n primary: '#007aff',\n red: '#ff3b30',\n green: '#4cd964',\n blue: '#2196f3',\n pink: '#ff2d55',\n yellow: '#ffcc00',\n orange: '#ff9500',\n purple: '#9c27b0',\n deeppurple: '#673ab7',\n lightblue: '#5ac8fa',\n teal: '#009688',\n lime: '#cddc39',\n deeporange: '#ff6b22',\n white: '#ffffff',\n black: '#000000'\n }\n };\n\n // Extend defaults with modules params\n app.useModulesParams(defaults);\n\n // Extend defaults with passed params\n app.params = extend(defaults, params);\n extend(app, {\n // App Name\n name: app.params.name,\n // Routes\n routes: app.params.routes,\n // Theme\n theme: function getTheme() {\n if (app.params.theme === 'auto') {\n if (device.ios) return 'ios';\n return 'md';\n }\n return app.params.theme;\n }(),\n // Initially passed parameters\n passedParams,\n online: w.navigator.onLine,\n colors: app.params.colors,\n darkMode: app.params.darkMode\n });\n if (params.store) app.params.store = params.store;\n\n // Save Root\n if (app.$el && app.$el[0]) {\n app.$el[0].f7 = app;\n }\n\n // Install Modules\n app.useModules();\n\n // Init Store\n app.initStore();\n\n // Init\n if (app.params.init) {\n if (device.cordova && app.params.initOnDeviceReady) {\n $(d).on('deviceready', () => {\n app.init();\n });\n } else {\n app.init();\n }\n }\n\n // Return app instance\n return app;\n }\n setColorTheme(color) {\n if (!color) return;\n const app = this;\n app.colors.primary = color;\n app.setColors();\n }\n setColors() {\n const app = this;\n const document = getDocument();\n if (!app.colorsStyleEl) {\n app.colorsStyleEl = document.createElement('style');\n document.head.prepend(app.colorsStyleEl);\n }\n app.colorsStyleEl.textContent = app.utils.colorThemeCSSStyles(app.colors);\n }\n mount(rootEl) {\n const app = this;\n const window = getWindow();\n const document = getDocument();\n const $rootEl = $(rootEl || app.params.el).eq(0);\n app.$el = $rootEl;\n if (app.$el && app.$el[0]) {\n app.el = app.$el[0];\n app.el.f7 = app;\n app.rtl = $rootEl.css('direction') === 'rtl';\n }\n\n // Auto Dark Mode\n const DARK = '(prefers-color-scheme: dark)';\n const LIGHT = '(prefers-color-scheme: light)';\n app.mq = {};\n if (window.matchMedia) {\n app.mq.dark = window.matchMedia(DARK);\n app.mq.light = window.matchMedia(LIGHT);\n }\n app.colorSchemeListener = function colorSchemeListener(_ref) {\n let {\n matches,\n media\n } = _ref;\n if (!matches) {\n return;\n }\n const html = document.querySelector('html');\n if (media === DARK) {\n html.classList.add('dark');\n app.darkMode = true;\n app.emit('darkModeChange', true);\n } else if (media === LIGHT) {\n html.classList.remove('dark');\n app.darkMode = false;\n app.emit('darkModeChange', false);\n }\n };\n app.emit('mount');\n }\n initStore() {\n const app = this;\n if (typeof app.params.store !== 'undefined' && app.params.store.__store) {\n app.store = app.params.store;\n } else {\n app.store = app.createStore(app.params.store);\n }\n }\n enableAutoDarkMode() {\n const window = getWindow();\n const document = getDocument();\n if (!window.matchMedia) return;\n const app = this;\n const html = document.querySelector('html');\n if (app.mq.dark && app.mq.light) {\n app.mq.dark.addEventListener('change', app.colorSchemeListener);\n app.mq.light.addEventListener('change', app.colorSchemeListener);\n }\n if (app.mq.dark && app.mq.dark.matches) {\n html.classList.add('dark');\n app.darkMode = true;\n app.emit('darkModeChange', true);\n } else if (app.mq.light && app.mq.light.matches) {\n html.classList.remove('dark');\n app.darkMode = false;\n app.emit('darkModeChange', false);\n }\n }\n disableAutoDarkMode() {\n const window = getWindow();\n if (!window.matchMedia) return;\n const app = this;\n if (app.mq.dark) app.mq.dark.removeEventListener('change', app.colorSchemeListener);\n if (app.mq.light) app.mq.light.removeEventListener('change', app.colorSchemeListener);\n }\n setDarkMode(mode) {\n const app = this;\n if (mode === 'auto') {\n app.enableAutoDarkMode();\n } else {\n app.disableAutoDarkMode();\n $('html')[mode ? 'addClass' : 'removeClass']('dark');\n app.darkMode = mode;\n }\n }\n initAppComponent(callback) {\n const app = this;\n app.router.componentLoader(app.params.component, app.params.componentUrl, {\n componentOptions: {\n el: app.$el[0]\n }\n }, el => {\n app.$el = $(el);\n app.$el[0].f7 = app;\n app.$elComponent = el.f7Component;\n app.el = app.$el[0];\n if (callback) callback();\n }, () => {});\n }\n init(rootEl) {\n const app = this;\n app.setColors();\n app.mount(rootEl);\n const init = () => {\n if (app.initialized) return;\n app.$el.addClass('framework7-initializing');\n\n // RTL attr\n if (app.rtl) {\n $('html').attr('dir', 'rtl');\n }\n\n // Auto Dark Mode\n if (typeof app.params.darkMode === 'undefined') {\n app.darkMode = $('html').hasClass('dark');\n } else {\n app.setDarkMode(app.params.darkMode);\n }\n\n // Watch for online/offline state\n const window = getWindow();\n window.addEventListener('offline', () => {\n app.online = false;\n app.emit('offline');\n app.emit('connection', false);\n });\n window.addEventListener('online', () => {\n app.online = true;\n app.emit('online');\n app.emit('connection', true);\n });\n\n // Root class\n app.$el.addClass('framework7-root');\n\n // Theme class\n $('html').removeClass('ios md').addClass(app.theme);\n\n // iOS Translucent\n if (app.params.iosTranslucentBars && app.theme === 'ios') {\n $('html').addClass('ios-translucent-bars');\n }\n if (app.params.iosTranslucentModals && app.theme === 'ios') {\n $('html').addClass('ios-translucent-modals');\n }\n\n // Init class\n nextFrame(() => {\n app.$el.removeClass('framework7-initializing');\n });\n // Emit, init other modules\n app.initialized = true;\n app.emit('init');\n };\n if (app.params.component || app.params.componentUrl) {\n app.initAppComponent(() => {\n init();\n });\n } else {\n init();\n }\n return app;\n }\n\n // eslint-disable-next-line\n loadModule() {\n return Framework7.loadModule(...arguments);\n }\n\n // eslint-disable-next-line\n loadModules() {\n return Framework7.loadModules(...arguments);\n }\n getVnodeHooks(hook, id) {\n const app = this;\n if (!app.vnodeHooks || !app.vnodeHooks[hook]) return [];\n return app.vnodeHooks[hook][id] || [];\n }\n\n // eslint-disable-next-line\n get $() {\n return $;\n }\n static get Dom7() {\n return $;\n }\n static get $() {\n return $;\n }\n static get device() {\n return getDevice();\n }\n static get support() {\n return getSupport();\n }\n static get Class() {\n return Framework7Class;\n }\n static get Events() {\n return EventsClass;\n }\n}\nFramework7.$jsx = $jsx;\nFramework7.ModalMethods = ModalMethods;\nFramework7.ConstructorMethods = ConstructorMethods;\nFramework7.loadModule = loadModule;\nFramework7.loadModules = function loadModules(modules) {\n return Promise.all(modules.map(module => Framework7.loadModule(module)));\n};\nexport default Framework7;","import { getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\nexport default {\n name: 'device',\n static: {\n getDevice\n },\n on: {\n init() {\n const document = getDocument();\n const device = getDevice();\n const classNames = [];\n const html = document.querySelector('html');\n const metaStatusbar = document.querySelector('meta[name=\"apple-mobile-web-app-status-bar-style\"]');\n if (!html) return;\n if (device.standalone && device.ios && metaStatusbar && metaStatusbar.content === 'black-translucent') {\n classNames.push('device-full-viewport');\n }\n\n // Pixel Ratio\n classNames.push(`device-pixel-ratio-${Math.floor(device.pixelRatio)}`);\n // OS classes\n if (device.os && !device.desktop) {\n classNames.push(`device-${device.os}`);\n } else if (device.desktop) {\n classNames.push('device-desktop');\n if (device.os) {\n classNames.push(`device-${device.os}`);\n }\n }\n if (device.cordova) {\n classNames.push('device-cordova');\n }\n if (device.capacitor) {\n classNames.push('device-capacitor');\n }\n\n // Add html classes\n classNames.forEach(className => {\n html.classList.add(className);\n });\n }\n }\n};","import { getSupport } from '../../shared/get-support.js';\nexport default {\n name: 'support',\n static: {\n getSupport\n }\n};","import * as utils from '../../shared/utils.js';\nexport default {\n name: 'utils',\n proto: {\n utils\n },\n static: {\n utils\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\nexport default {\n name: 'resize',\n create() {\n const app = this;\n app.getSize = () => {\n if (!app.el) return {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n };\n const offset = app.$el.offset();\n const [width, height, left, top] = [app.el.offsetWidth, app.el.offsetHeight, offset.left, offset.top];\n app.width = width;\n app.height = height;\n app.left = left;\n app.top = top;\n return {\n width,\n height,\n left,\n top\n };\n };\n },\n on: {\n init() {\n const app = this;\n const window = getWindow();\n\n // Get Size\n app.getSize();\n\n // Emit resize\n window.addEventListener('resize', () => {\n app.emit('resize');\n }, false);\n\n // Emit orientationchange\n window.addEventListener('orientationchange', () => {\n app.emit('orientationchange');\n });\n },\n orientationchange() {\n const document = getDocument();\n const device = getDevice();\n // Fix iPad weird body scroll\n if (device.ipad) {\n document.body.scrollLeft = 0;\n setTimeout(() => {\n document.body.scrollLeft = 0;\n }, 0);\n }\n },\n resize() {\n const app = this;\n app.getSize();\n }\n }\n};","/* eslint-disable no-nested-ternary */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { extend } from '../../shared/utils.js';\nfunction initTouch() {\n const app = this;\n const device = getDevice();\n const support = getSupport();\n const window = getWindow();\n const document = getDocument();\n const params = app.params.touch;\n const useRipple = params[`${app.theme}TouchRipple`];\n if (device.ios && device.webView) {\n // Strange hack required for iOS 8 webview to work on inputs\n window.addEventListener('touchstart', () => {});\n }\n let touchStartX;\n let touchStartY;\n let targetElement;\n let isMoved;\n let tapHoldFired;\n let tapHoldTimeout;\n let preventClick;\n let activableElement;\n let activeTimeout;\n let rippleWave;\n let rippleTarget;\n let rippleTimeout;\n function findActivableElement(el) {\n const target = $(el);\n const parents = target.parents(params.activeStateElements);\n if (target.closest('.no-active-state').length) {\n return null;\n }\n let activable;\n if (target.is(params.activeStateElements)) {\n activable = target;\n }\n if (parents.length > 0) {\n activable = activable ? activable.add(parents) : parents;\n }\n if (activable && activable.length > 1) {\n const newActivable = [];\n let preventPropagation;\n for (let i = 0; i < activable.length; i += 1) {\n if (!preventPropagation) {\n newActivable.push(activable[i]);\n if (activable.eq(i).hasClass('prevent-active-state-propagation') || activable.eq(i).hasClass('no-active-state-propagation')) {\n preventPropagation = true;\n }\n }\n }\n activable = $(newActivable);\n }\n return activable || target;\n }\n function isInsideScrollableView(el) {\n const pageContent = el.parents('.page-content');\n return pageContent.length > 0;\n }\n function addActive() {\n if (!activableElement) return;\n activableElement.addClass('active-state');\n }\n function removeActive() {\n if (!activableElement) return;\n activableElement.removeClass('active-state');\n activableElement = null;\n }\n\n // Ripple handlers\n function findRippleElement(el) {\n const rippleElements = params.touchRippleElements;\n const $el = $(el);\n if ($el.is(rippleElements)) {\n if ($el.hasClass('no-ripple')) {\n return false;\n }\n return $el;\n }\n if ($el.parents(rippleElements).length > 0) {\n const rippleParent = $el.parents(rippleElements).eq(0);\n if (rippleParent.hasClass('no-ripple')) {\n return false;\n }\n return rippleParent;\n }\n return false;\n }\n function createRipple($el, x, y) {\n if (!$el) return;\n rippleWave = app.touchRipple.create(app, $el, x, y);\n }\n function removeRipple() {\n if (!rippleWave) return;\n rippleWave.remove();\n rippleWave = undefined;\n rippleTarget = undefined;\n }\n function rippleTouchStart(el) {\n rippleTarget = findRippleElement(el);\n if (!rippleTarget || rippleTarget.length === 0) {\n rippleTarget = undefined;\n return;\n }\n const inScrollable = isInsideScrollableView(rippleTarget);\n if (!inScrollable) {\n removeRipple();\n createRipple(rippleTarget, touchStartX, touchStartY);\n } else {\n clearTimeout(rippleTimeout);\n rippleTimeout = setTimeout(() => {\n removeRipple();\n createRipple(rippleTarget, touchStartX, touchStartY);\n }, 80);\n }\n }\n function rippleTouchMove() {\n clearTimeout(rippleTimeout);\n removeRipple();\n }\n function rippleTouchEnd() {\n if (!rippleWave && rippleTarget && !isMoved) {\n clearTimeout(rippleTimeout);\n createRipple(rippleTarget, touchStartX, touchStartY);\n setTimeout(removeRipple, 0);\n } else {\n removeRipple();\n }\n }\n\n // Mouse Handlers\n function handleMouseDown(e) {\n const $activableEl = findActivableElement(e.target);\n if ($activableEl) {\n $activableEl.addClass('active-state');\n if ('which' in e && e.which === 3) {\n setTimeout(() => {\n $('.active-state').removeClass('active-state');\n }, 0);\n }\n }\n if (useRipple) {\n touchStartX = e.pageX;\n touchStartY = e.pageY;\n rippleTouchStart(e.target, e.pageX, e.pageY);\n }\n }\n function handleMouseMove() {\n if (!params.activeStateOnMouseMove) {\n $('.active-state').removeClass('active-state');\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n function handleMouseUp() {\n $('.active-state').removeClass('active-state');\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n function handleTouchCancel() {\n targetElement = null;\n\n // Remove Active State\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (params.activeState) {\n removeActive();\n }\n\n // Remove Ripple\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n let isScrolling;\n let isSegmentedStrong = false;\n let segmentedStrongEl = null;\n const touchMoveActivableIos = '.dialog-button, .actions-button';\n let isTouchMoveActivable = false;\n let touchmoveActivableEl = null;\n function handleTouchStart(e) {\n if (!e.isTrusted) return true;\n isMoved = false;\n tapHoldFired = false;\n preventClick = false;\n isScrolling = undefined;\n if (e.targetTouches.length > 1) {\n if (activableElement) removeActive();\n return true;\n }\n if (e.touches.length > 1 && activableElement) {\n removeActive();\n }\n if (params.tapHold) {\n if (tapHoldTimeout) clearTimeout(tapHoldTimeout);\n tapHoldTimeout = setTimeout(() => {\n if (e && e.touches && e.touches.length > 1) return;\n tapHoldFired = true;\n e.preventDefault();\n preventClick = true;\n $(e.target).trigger('taphold', e);\n app.emit('taphold', e);\n }, params.tapHoldDelay);\n }\n targetElement = e.target;\n touchStartX = e.targetTouches[0].pageX;\n touchStartY = e.targetTouches[0].pageY;\n isSegmentedStrong = e.target.closest('.segmented-strong .button-active, .segmented-strong .tab-link-active');\n isTouchMoveActivable = app.theme === 'ios' && e.target.closest(touchMoveActivableIos);\n if (isSegmentedStrong) {\n segmentedStrongEl = isSegmentedStrong.closest('.segmented-strong');\n }\n if (params.activeState) {\n activableElement = findActivableElement(targetElement);\n if (activableElement && !isInsideScrollableView(activableElement)) {\n addActive();\n } else if (activableElement) {\n activeTimeout = setTimeout(addActive, 80);\n }\n }\n if (useRipple) {\n rippleTouchStart(targetElement, touchStartX, touchStartY);\n }\n return true;\n }\n function handleTouchMove(e) {\n if (!e.isTrusted) return;\n let touch;\n let distance;\n let shouldRemoveActive = true;\n if (e.type === 'touchmove') {\n touch = e.targetTouches[0];\n distance = params.touchClicksDistanceThreshold;\n }\n const touchCurrentX = e.targetTouches[0].pageX;\n const touchCurrentY = e.targetTouches[0].pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX));\n }\n if (isTouchMoveActivable || !isScrolling && isSegmentedStrong && segmentedStrongEl) {\n if (e.cancelable) e.preventDefault();\n }\n if (!isScrolling && isSegmentedStrong && segmentedStrongEl) {\n const elementFromPoint = document.elementFromPoint(e.targetTouches[0].clientX, e.targetTouches[0].clientY);\n const buttonEl = elementFromPoint.closest('.segmented-strong .button:not(.button-active):not(.tab-link-active)');\n if (buttonEl && segmentedStrongEl.contains(buttonEl)) {\n $(buttonEl).trigger('click', 'f7Segmented');\n targetElement = buttonEl;\n }\n }\n if (distance && touch) {\n const pageX = touch.pageX;\n const pageY = touch.pageY;\n if (Math.abs(pageX - touchStartX) > distance || Math.abs(pageY - touchStartY) > distance) {\n isMoved = true;\n }\n } else {\n isMoved = true;\n }\n if (isMoved) {\n preventClick = true;\n // Keep active state on touchMove (for dialog and actions buttons)\n if (isTouchMoveActivable) {\n const elementFromPoint = document.elementFromPoint(e.targetTouches[0].clientX, e.targetTouches[0].clientY);\n touchmoveActivableEl = elementFromPoint.closest(touchMoveActivableIos);\n if (touchmoveActivableEl && activableElement && activableElement[0] === touchmoveActivableEl) {\n shouldRemoveActive = false;\n } else if (touchmoveActivableEl) {\n setTimeout(() => {\n activableElement = findActivableElement(touchmoveActivableEl);\n addActive();\n });\n }\n }\n if (params.tapHold) {\n clearTimeout(tapHoldTimeout);\n }\n if (params.activeState && shouldRemoveActive) {\n clearTimeout(activeTimeout);\n removeActive();\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n }\n function handleTouchEnd(e) {\n if (!e.isTrusted) return true;\n isScrolling = undefined;\n isSegmentedStrong = false;\n segmentedStrongEl = null;\n isTouchMoveActivable = false;\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (touchmoveActivableEl) {\n $(touchmoveActivableEl).trigger('click', 'f7TouchMoveActivable');\n touchmoveActivableEl = null;\n }\n if (document.activeElement === e.target) {\n if (params.activeState) removeActive();\n if (useRipple) {\n rippleTouchEnd();\n }\n return true;\n }\n if (params.activeState) {\n addActive();\n setTimeout(removeActive, 0);\n }\n if (useRipple) {\n rippleTouchEnd();\n }\n if (params.tapHoldPreventClicks && tapHoldFired || preventClick) {\n if (e.cancelable) e.preventDefault();\n preventClick = true;\n return false;\n }\n return true;\n }\n function handleClick(e) {\n const isOverswipe = e && e.detail && e.detail === 'f7Overswipe';\n const isSegmented = e && e.detail && e.detail === 'f7Segmented';\n // eslint-disable-next-line\n const isTouchMoveActivable = e && e.detail && e.detail === 'f7TouchMoveActivable';\n let localPreventClick = preventClick;\n if (targetElement && e.target !== targetElement) {\n if (isOverswipe || isSegmented || isTouchMoveActivable) {\n localPreventClick = false;\n } else {\n localPreventClick = true;\n }\n } else if (isTouchMoveActivable) {\n localPreventClick = false;\n }\n if (params.tapHold && params.tapHoldPreventClicks && tapHoldFired) {\n localPreventClick = true;\n }\n if (localPreventClick) {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n }\n if (params.tapHold) {\n tapHoldTimeout = setTimeout(() => {\n tapHoldFired = false;\n }, device.ios || device.androidChrome ? 100 : 400);\n }\n preventClick = false;\n targetElement = null;\n return !localPreventClick;\n }\n function emitAppTouchEvent(name, e) {\n app.emit({\n events: name,\n data: [e]\n });\n }\n function appClick(e) {\n emitAppTouchEvent('click', e);\n }\n function appTouchStartActive(e) {\n emitAppTouchEvent('touchstart touchstart:active', e);\n }\n function appTouchMoveActive(e) {\n emitAppTouchEvent('touchmove touchmove:active', e);\n }\n function appTouchEndActive(e) {\n emitAppTouchEvent('touchend touchend:active', e);\n }\n function appTouchStartPassive(e) {\n emitAppTouchEvent('touchstart:passive', e);\n }\n function appTouchMovePassive(e) {\n emitAppTouchEvent('touchmove:passive', e);\n }\n function appTouchEndPassive(e) {\n emitAppTouchEvent('touchend:passive', e);\n }\n const passiveListener = support.passiveListener ? {\n passive: true\n } : false;\n const passiveListenerCapture = support.passiveListener ? {\n passive: true,\n capture: true\n } : true;\n const activeListener = support.passiveListener ? {\n passive: false\n } : false;\n const activeListenerCapture = support.passiveListener ? {\n passive: false,\n capture: true\n } : true;\n document.addEventListener('click', appClick, true);\n if (support.passiveListener) {\n document.addEventListener(app.touchEvents.start, appTouchStartActive, activeListenerCapture);\n document.addEventListener(app.touchEvents.move, appTouchMoveActive, activeListener);\n document.addEventListener(app.touchEvents.end, appTouchEndActive, activeListener);\n document.addEventListener(app.touchEvents.start, appTouchStartPassive, passiveListenerCapture);\n document.addEventListener(app.touchEvents.move, appTouchMovePassive, passiveListener);\n document.addEventListener(app.touchEvents.end, appTouchEndPassive, passiveListener);\n } else {\n document.addEventListener(app.touchEvents.start, e => {\n appTouchStartActive(e);\n appTouchStartPassive(e);\n }, true);\n document.addEventListener(app.touchEvents.move, e => {\n appTouchMoveActive(e);\n appTouchMovePassive(e);\n }, false);\n document.addEventListener(app.touchEvents.end, e => {\n appTouchEndActive(e);\n appTouchEndPassive(e);\n }, false);\n }\n if (support.touch) {\n app.on('click', handleClick);\n app.on('touchstart', handleTouchStart);\n app.on('touchmove', handleTouchMove);\n app.on('touchend', handleTouchEnd);\n document.addEventListener('touchcancel', handleTouchCancel, {\n passive: true\n });\n } else if (params.activeState) {\n app.on('touchstart', handleMouseDown);\n app.on('touchmove', handleMouseMove);\n app.on('touchend', handleMouseUp);\n document.addEventListener('pointercancel', handleMouseUp, {\n passive: true\n });\n }\n document.addEventListener('contextmenu', e => {\n if (params.disableContextMenu && (device.ios || device.android || device.cordova || window.Capacitor && window.Capacitor.isNative)) {\n e.preventDefault();\n }\n if (useRipple) {\n if (activableElement) removeActive();\n rippleTouchEnd();\n }\n });\n}\nexport default {\n name: 'touch',\n params: {\n touch: {\n // Clicks\n touchClicksDistanceThreshold: 5,\n // ContextMenu\n disableContextMenu: false,\n // Tap Hold\n tapHold: false,\n tapHoldDelay: 750,\n tapHoldPreventClicks: true,\n // Active State\n activeState: true,\n activeStateElements: 'a, button, label, span, .actions-button, .stepper-button, .stepper-button-plus, .stepper-button-minus, .card-expandable, .link, .item-link, .accordion-item-toggle',\n activeStateOnMouseMove: false,\n mdTouchRipple: true,\n iosTouchRipple: false,\n touchRippleElements: '.ripple, .link, .item-link, .list label.item-content, .list-button, .links-list a, .button, button, .input-clear-button, .dialog-button, .tab-link, .item-radio, .item-checkbox, .actions-button, .searchbar-disable-button, .fab a, .checkbox, .radio, .data-table .sortable-cell:not(.input-cell), .notification-close-button, .stepper-button, .stepper-button-minus, .stepper-button-plus, .list.accordion-list .accordion-item-toggle',\n touchRippleInsetElements: '.ripple-inset, .icon-only, .searchbar-disable-button, .input-clear-button, .notification-close-button, .md .navbar .link.back'\n }\n },\n create() {\n const app = this;\n const support = getSupport();\n extend(app, {\n touchEvents: {\n start: support.touch ? 'touchstart' : support.pointerEvents ? 'pointerdown' : 'mousedown',\n move: support.touch ? 'touchmove' : support.pointerEvents ? 'pointermove' : 'mousemove',\n end: support.touch ? 'touchend' : support.pointerEvents ? 'pointerup' : 'mouseup'\n }\n });\n },\n on: {\n init: initTouch\n }\n};","/**\n * Tokenize input string.\n */\nfunction lexer(str) {\n var tokens = [];\n var i = 0;\n while (i < str.length) {\n var char = str[i];\n if (char === \"*\" || char === \"+\" || char === \"?\") {\n tokens.push({ type: \"MODIFIER\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"\\\\\") {\n tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n continue;\n }\n if (char === \"{\") {\n tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"}\") {\n tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n continue;\n }\n if (char === \":\") {\n var name = \"\";\n var j = i + 1;\n while (j < str.length) {\n var code = str.charCodeAt(j);\n if (\n // `0-9`\n (code >= 48 && code <= 57) ||\n // `A-Z`\n (code >= 65 && code <= 90) ||\n // `a-z`\n (code >= 97 && code <= 122) ||\n // `_`\n code === 95) {\n name += str[j++];\n continue;\n }\n break;\n }\n if (!name)\n throw new TypeError(\"Missing parameter name at \".concat(i));\n tokens.push({ type: \"NAME\", index: i, value: name });\n i = j;\n continue;\n }\n if (char === \"(\") {\n var count = 1;\n var pattern = \"\";\n var j = i + 1;\n if (str[j] === \"?\") {\n throw new TypeError(\"Pattern cannot start with \\\"?\\\" at \".concat(j));\n }\n while (j < str.length) {\n if (str[j] === \"\\\\\") {\n pattern += str[j++] + str[j++];\n continue;\n }\n if (str[j] === \")\") {\n count--;\n if (count === 0) {\n j++;\n break;\n }\n }\n else if (str[j] === \"(\") {\n count++;\n if (str[j + 1] !== \"?\") {\n throw new TypeError(\"Capturing groups are not allowed at \".concat(j));\n }\n }\n pattern += str[j++];\n }\n if (count)\n throw new TypeError(\"Unbalanced pattern at \".concat(i));\n if (!pattern)\n throw new TypeError(\"Missing pattern at \".concat(i));\n tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n i = j;\n continue;\n }\n tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n }\n tokens.push({ type: \"END\", index: i, value: \"\" });\n return tokens;\n}\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str, options) {\n if (options === void 0) { options = {}; }\n var tokens = lexer(str);\n var _a = options.prefixes, prefixes = _a === void 0 ? \"./\" : _a;\n var defaultPattern = \"[^\".concat(escapeString(options.delimiter || \"/#?\"), \"]+?\");\n var result = [];\n var key = 0;\n var i = 0;\n var path = \"\";\n var tryConsume = function (type) {\n if (i < tokens.length && tokens[i].type === type)\n return tokens[i++].value;\n };\n var mustConsume = function (type) {\n var value = tryConsume(type);\n if (value !== undefined)\n return value;\n var _a = tokens[i], nextType = _a.type, index = _a.index;\n throw new TypeError(\"Unexpected \".concat(nextType, \" at \").concat(index, \", expected \").concat(type));\n };\n var consumeText = function () {\n var result = \"\";\n var value;\n while ((value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\"))) {\n result += value;\n }\n return result;\n };\n while (i < tokens.length) {\n var char = tryConsume(\"CHAR\");\n var name = tryConsume(\"NAME\");\n var pattern = tryConsume(\"PATTERN\");\n if (name || pattern) {\n var prefix = char || \"\";\n if (prefixes.indexOf(prefix) === -1) {\n path += prefix;\n prefix = \"\";\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n result.push({\n name: name || key++,\n prefix: prefix,\n suffix: \"\",\n pattern: pattern || defaultPattern,\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n var value = char || tryConsume(\"ESCAPED_CHAR\");\n if (value) {\n path += value;\n continue;\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n var open = tryConsume(\"OPEN\");\n if (open) {\n var prefix = consumeText();\n var name_1 = tryConsume(\"NAME\") || \"\";\n var pattern_1 = tryConsume(\"PATTERN\") || \"\";\n var suffix = consumeText();\n mustConsume(\"CLOSE\");\n result.push({\n name: name_1 || (pattern_1 ? key++ : \"\"),\n pattern: name_1 && !pattern_1 ? defaultPattern : pattern_1,\n prefix: prefix,\n suffix: suffix,\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n mustConsume(\"END\");\n }\n return result;\n}\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\nexport function tokensToFunction(tokens, options) {\n if (options === void 0) { options = {}; }\n var reFlags = flags(options);\n var _a = options.encode, encode = _a === void 0 ? function (x) { return x; } : _a, _b = options.validate, validate = _b === void 0 ? true : _b;\n // Compile all the tokens into regexps.\n var matches = tokens.map(function (token) {\n if (typeof token === \"object\") {\n return new RegExp(\"^(?:\".concat(token.pattern, \")$\"), reFlags);\n }\n });\n return function (data) {\n var path = \"\";\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === \"string\") {\n path += token;\n continue;\n }\n var value = data ? data[token.name] : undefined;\n var optional = token.modifier === \"?\" || token.modifier === \"*\";\n var repeat = token.modifier === \"*\" || token.modifier === \"+\";\n if (Array.isArray(value)) {\n if (!repeat) {\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not repeat, but got an array\"));\n }\n if (value.length === 0) {\n if (optional)\n continue;\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not be empty\"));\n }\n for (var j = 0; j < value.length; j++) {\n var segment = encode(value[j], token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected all \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n }\n path += token.prefix + segment + token.suffix;\n }\n continue;\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n var segment = encode(String(value), token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n }\n path += token.prefix + segment + token.suffix;\n continue;\n }\n if (optional)\n continue;\n var typeOfMessage = repeat ? \"an array\" : \"a string\";\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to be \").concat(typeOfMessage));\n }\n return path;\n };\n}\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nexport function match(str, options) {\n var keys = [];\n var re = pathToRegexp(str, keys, options);\n return regexpToFunction(re, keys, options);\n}\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nexport function regexpToFunction(re, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.decode, decode = _a === void 0 ? function (x) { return x; } : _a;\n return function (pathname) {\n var m = re.exec(pathname);\n if (!m)\n return false;\n var path = m[0], index = m.index;\n var params = Object.create(null);\n var _loop_1 = function (i) {\n if (m[i] === undefined)\n return \"continue\";\n var key = keys[i - 1];\n if (key.modifier === \"*\" || key.modifier === \"+\") {\n params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {\n return decode(value, key);\n });\n }\n else {\n params[key.name] = decode(m[i], key);\n }\n };\n for (var i = 1; i < m.length; i++) {\n _loop_1(i);\n }\n return { path: path, index: index, params: params };\n };\n}\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options) {\n return options && options.sensitive ? \"\" : \"i\";\n}\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path, keys) {\n if (!keys)\n return path;\n var groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n var index = 0;\n var execResult = groupsRegex.exec(path.source);\n while (execResult) {\n keys.push({\n // Use parenthesized substring match if available, index otherwise\n name: execResult[1] || index++,\n prefix: \"\",\n suffix: \"\",\n modifier: \"\",\n pattern: \"\",\n });\n execResult = groupsRegex.exec(path.source);\n }\n return path;\n}\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(paths, keys, options) {\n var parts = paths.map(function (path) { return pathToRegexp(path, keys, options).source; });\n return new RegExp(\"(?:\".concat(parts.join(\"|\"), \")\"), flags(options));\n}\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegexp(parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nexport function tokensToRegexp(tokens, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function (x) { return x; } : _d, _e = options.delimiter, delimiter = _e === void 0 ? \"/#?\" : _e, _f = options.endsWith, endsWith = _f === void 0 ? \"\" : _f;\n var endsWithRe = \"[\".concat(escapeString(endsWith), \"]|$\");\n var delimiterRe = \"[\".concat(escapeString(delimiter), \"]\");\n var route = start ? \"^\" : \"\";\n // Iterate over the tokens and create our regexp string.\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n if (typeof token === \"string\") {\n route += escapeString(encode(token));\n }\n else {\n var prefix = escapeString(encode(token.prefix));\n var suffix = escapeString(encode(token.suffix));\n if (token.pattern) {\n if (keys)\n keys.push(token);\n if (prefix || suffix) {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n var mod = token.modifier === \"*\" ? \"?\" : \"\";\n route += \"(?:\".concat(prefix, \"((?:\").concat(token.pattern, \")(?:\").concat(suffix).concat(prefix, \"(?:\").concat(token.pattern, \"))*)\").concat(suffix, \")\").concat(mod);\n }\n else {\n route += \"(?:\".concat(prefix, \"(\").concat(token.pattern, \")\").concat(suffix, \")\").concat(token.modifier);\n }\n }\n else {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n route += \"((?:\".concat(token.pattern, \")\").concat(token.modifier, \")\");\n }\n else {\n route += \"(\".concat(token.pattern, \")\").concat(token.modifier);\n }\n }\n }\n else {\n route += \"(?:\".concat(prefix).concat(suffix, \")\").concat(token.modifier);\n }\n }\n }\n if (end) {\n if (!strict)\n route += \"\".concat(delimiterRe, \"?\");\n route += !options.endsWith ? \"$\" : \"(?=\".concat(endsWithRe, \")\");\n }\n else {\n var endToken = tokens[tokens.length - 1];\n var isEndDelimited = typeof endToken === \"string\"\n ? delimiterRe.indexOf(endToken[endToken.length - 1]) > -1\n : endToken === undefined;\n if (!strict) {\n route += \"(?:\".concat(delimiterRe, \"(?=\").concat(endsWithRe, \"))?\");\n }\n if (!isEndDelimited) {\n route += \"(?=\".concat(delimiterRe, \"|\").concat(endsWithRe, \")\");\n }\n }\n return new RegExp(route, flags(options));\n}\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nexport function pathToRegexp(path, keys, options) {\n if (path instanceof RegExp)\n return regexpToRegexp(path, keys);\n if (Array.isArray(path))\n return arrayToRegexp(path, keys, options);\n return stringToRegexp(path, keys, options);\n}\n//# sourceMappingURL=index.js.map","import { getWindow, getDocument } from 'ssr-window';\nimport $ from './dom7.js';\nimport { extend } from './utils.js';\nconst History = {\n queue: [],\n clearQueue() {\n if (History.queue.length === 0) return;\n const currentQueue = History.queue.shift();\n currentQueue();\n },\n routerQueue: [],\n clearRouterQueue() {\n if (History.routerQueue.length === 0) return;\n const currentQueue = History.routerQueue.pop();\n const {\n router,\n stateUrl,\n action\n } = currentQueue;\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n if (action === 'back') {\n router.back({\n animate,\n browserHistory: false\n });\n }\n if (action === 'load') {\n router.navigate(stateUrl, {\n animate,\n browserHistory: false\n });\n }\n },\n handle(e) {\n if (History.blockPopstate) return;\n const app = this;\n // const mainView = app.views.main;\n let state = e.state;\n History.previousState = History.state;\n History.state = state;\n History.allowChange = true;\n History.clearQueue();\n state = History.state;\n if (!state) state = {};\n app.views.forEach(view => {\n const router = view.router;\n let viewState = state[view.id];\n if (!viewState && view.params.browserHistory) {\n viewState = {\n url: view.router.history[0]\n };\n }\n if (!viewState) return;\n const stateUrl = viewState.url || undefined;\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n if (stateUrl !== router.url) {\n if (router.history.indexOf(stateUrl) >= 0) {\n // Go Back\n if (router.allowPageChange) {\n router.back({\n animate,\n browserHistory: false\n });\n } else {\n History.routerQueue.push({\n action: 'back',\n router\n });\n }\n } else if (router.allowPageChange) {\n // Load page\n router.navigate(stateUrl, {\n animate,\n browserHistory: false\n });\n } else {\n History.routerQueue.unshift({\n action: 'load',\n stateUrl,\n router\n });\n }\n }\n });\n },\n initViewState(viewId, viewState) {\n const window = getWindow();\n const newState = extend({}, History.state || {}, {\n [viewId]: viewState\n });\n History.state = newState;\n window.history.replaceState(newState, '');\n },\n push(viewId, viewState, url) {\n const window = getWindow();\n const document = getDocument();\n /* eslint-disable no-param-reassign */\n if (url.substr(-3) === '#!/') {\n url = url.replace('#!/', '');\n if (url === '') {\n url = document.location.href;\n if (url.includes('#!/')) {\n url = document.location.href.split('#!/')[0];\n }\n }\n }\n /* eslint-enable no-param-reassign */\n if (!History.allowChange) {\n History.queue.push(() => {\n History.push(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState\n });\n History.state = newState;\n window.history.pushState(newState, '', url);\n },\n replace(viewId, viewState, url) {\n const window = getWindow();\n if (url.substr(-3) === '#!/') {\n // eslint-disable-next-line\n url = url.replace('#!/', '');\n }\n if (!History.allowChange) {\n History.queue.push(() => {\n History.replace(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState\n });\n History.state = newState;\n window.history.replaceState(newState, '', url);\n },\n go(index) {\n const window = getWindow();\n History.allowChange = false;\n window.history.go(index);\n },\n back() {\n const window = getWindow();\n History.allowChange = false;\n window.history.back();\n },\n allowChange: true,\n previousState: {},\n state: {},\n blockPopstate: true,\n init(app) {\n const window = getWindow();\n const document = getDocument();\n History.state = window.history.state;\n $(window).on('load', () => {\n setTimeout(() => {\n History.blockPopstate = false;\n }, 0);\n });\n if (document.readyState && document.readyState === 'complete') {\n History.blockPopstate = false;\n }\n $(window).on('popstate', History.handle.bind(app));\n }\n};\nexport default History;","import $ from '../../shared/dom7.js';\nimport History from '../../shared/history.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { now } from '../../shared/utils.js';\nfunction SwipeBack(r) {\n const router = r;\n const {\n $el,\n $navbarsEl,\n app,\n params\n } = router;\n const support = getSupport();\n const device = getDevice();\n let isTouched = false;\n let isMoved = false;\n const touchesStart = {};\n let isScrolling;\n let $currentPageEl = [];\n let $previousPageEl = [];\n let viewContainerWidth;\n let touchesDiff;\n let allowViewTouchMove = true;\n let touchStartTime;\n let $currentNavbarEl = [];\n let $previousNavbarEl = [];\n let dynamicNavbar;\n let $pageShadowEl;\n let $pageOpacityEl;\n let animatableNavEls;\n const paramsSwipeBackAnimateShadow = params[`${app.theme}SwipeBackAnimateShadow`];\n const paramsSwipeBackAnimateOpacity = params[`${app.theme}SwipeBackAnimateOpacity`];\n const paramsSwipeBackActiveArea = params[`${app.theme}SwipeBackActiveArea`];\n const paramsSwipeBackThreshold = params[`${app.theme}SwipeBackThreshold`];\n const transformOrigin = app.rtl ? 'right center' : 'left center';\n const transformOriginTitleLarge = app.rtl ? 'calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center' : 'calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center';\n function animatableNavElements() {\n const els = [];\n const inverter = app.rtl ? -1 : 1;\n const currentNavIsTransparent = $currentNavbarEl.hasClass('navbar-transparent') && !$currentNavbarEl.hasClass('navbar-large') && !$currentNavbarEl.hasClass('navbar-transparent-visible');\n const currentNavIsLarge = $currentNavbarEl.hasClass('navbar-large');\n const currentNavIsCollapsed = $currentNavbarEl.hasClass('navbar-large-collapsed');\n const currentNavIsLargeTransparent = $currentNavbarEl.hasClass('navbar-large-transparent') || $currentNavbarEl.hasClass('navbar-large') && $currentNavbarEl.hasClass('navbar-transparent');\n const previousNavIsTransparent = $previousNavbarEl.hasClass('navbar-transparent') && !$previousNavbarEl.hasClass('navbar-large') && !$previousNavbarEl.hasClass('navbar-transparent-visible');\n const previousNavIsLarge = $previousNavbarEl.hasClass('navbar-large');\n const previousNavIsCollapsed = $previousNavbarEl.hasClass('navbar-large-collapsed');\n const previousNavIsLargeTransparent = $previousNavbarEl.hasClass('navbar-large-transparent') || $previousNavbarEl.hasClass('navbar-large') && $previousNavbarEl.hasClass('navbar-transparent');\n const fromLarge = currentNavIsLarge && !currentNavIsCollapsed;\n const toLarge = previousNavIsLarge && !previousNavIsCollapsed;\n const $currentNavElements = $currentNavbarEl.find('.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg');\n const $previousNavElements = $previousNavbarEl.find('.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg');\n let activeNavBackIconText;\n let previousNavBackIconText;\n if (params.iosAnimateNavbarBackIcon) {\n if ($currentNavbarEl.hasClass('sliding') || $currentNavbarEl.find('.navbar-inner.sliding').length) {\n activeNavBackIconText = $currentNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n activeNavBackIconText = $currentNavbarEl.find('.left.sliding').find('.back .icon + span').eq(0);\n }\n if ($previousNavbarEl.hasClass('sliding') || $previousNavbarEl.find('.navbar-inner.sliding').length) {\n previousNavBackIconText = $previousNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n previousNavBackIconText = $previousNavbarEl.find('.left.sliding').find('.back .icon + span').eq(0);\n }\n if (activeNavBackIconText.length) {\n $previousNavElements.each(el => {\n if (!$(el).hasClass('title')) return;\n el.f7NavbarLeftOffset += activeNavBackIconText.prev('.icon')[0].offsetWidth;\n });\n }\n }\n $currentNavElements.each(navEl => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && currentNavIsTransparent) return;\n if (!fromLarge && $navEl.hasClass('.title-large')) return;\n const el = {\n el: navEl\n };\n if (fromLarge) {\n if (isTitle) return;\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each(subNavEl => {\n els.push({\n el: subNavEl,\n transform: progress => `translateX(${progress * 100 * inverter}%)`\n });\n });\n return;\n }\n }\n if (toLarge) {\n if (!fromLarge) {\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = 0;\n }\n }\n if (isLeft) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = progress => 1 - progress ** 0.33;\n $navEl.find('.back span').each(subNavEl => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOrigin,\n transform: progress => `translateX(calc(${progress} * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(${progress} * (var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2))) scale(${1 + 1 * progress})`\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (currentNavIsCollapsed) {\n if (currentNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = progress => `translateX(${100 * progress * inverter}%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = progress => `translateX(${100 * progress * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = progress => `translateX(${100 * progress * inverter}%) translateY(calc(-1 * ${1 - progress} * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = progress => `translateX(${100 * progress * inverter}%)`;\n }\n if (fromLarge && !toLarge) {\n el.transform = progress => `translateX(${100 * progress * inverter}%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding = $navEl.hasClass('sliding') || $navEl.parents('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || isSubnavbar && !isSliding) {\n el.opacity = progress => 1 - progress ** 0.33;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && activeNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = {\n el: activeNavBackIconText[0]\n };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = progress => {\n let activeNavTranslate = progress * transformTarget.el.f7NavbarRightOffset;\n if (device.pixelRatio === 1) activeNavTranslate = Math.round(activeNavTranslate);\n if (isSubnavbar && currentNavIsLarge) {\n return `translate3d(${activeNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${activeNavTranslate}px,0,0)`;\n };\n }\n });\n $previousNavElements.each(navEl => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && previousNavIsTransparent) return;\n const el = {\n el: navEl\n };\n if (toLarge) {\n if (isTitle) return;\n if (els.indexOf(el) < 0) els.push(el);\n if ($navEl.hasClass('title-large')) {\n el.opacity = 1;\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each(subNavEl => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOriginTitleLarge,\n opacity: progress => progress ** 3,\n transform: progress => `translateX(calc(${1 - progress} * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(${progress - 1} * var(--f7-navbar-large-title-height) + ${1 - progress} * var(--f7-navbar-large-title-padding-vertical))) scale(${0.5 + progress * 0.5})`\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (previousNavIsCollapsed) {\n if (previousNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-1 * ${1 - progress} * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && !toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding = $navEl.hasClass('sliding') || $previousNavbarEl.children('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || isSubnavbar && !isSliding) {\n el.opacity = progress => progress ** 3;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && previousNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = {\n el: previousNavBackIconText[0]\n };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = progress => {\n let previousNavTranslate = transformTarget.el.f7NavbarLeftOffset * (1 - progress);\n if (device.pixelRatio === 1) previousNavTranslate = Math.round(previousNavTranslate);\n if (isSubnavbar && previousNavIsLarge) {\n return `translate3d(${previousNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${previousNavTranslate}px,0,0)`;\n };\n }\n });\n return els;\n }\n function setAnimatableNavElements(_temp) {\n let {\n progress,\n reset,\n transition,\n reflow\n } = _temp === void 0 ? {} : _temp;\n const styles = ['overflow', 'transform', 'transform-origin', 'opacity'];\n if (transition === true || transition === false) {\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (transition === true) el.el.classList.add('navbar-page-transitioning');\n if (transition === false) el.el.classList.remove('navbar-page-transitioning');\n }\n }\n }\n if (reflow && animatableNavEls.length && animatableNavEls[0] && animatableNavEls[0].el) {\n // eslint-disable-next-line\n animatableNavEls[0].el._clientLeft = animatableNavEls[0].el.clientLeft;\n }\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (el.className && !el.classNameSet && !reset) {\n el.el.classList.add(el.className);\n el.classNameSet = true;\n }\n if (el.className && reset) {\n el.el.classList.remove(el.className);\n }\n for (let j = 0; j < styles.length; j += 1) {\n const styleProp = styles[j];\n if (el[styleProp]) {\n if (reset) {\n el.el.style[styleProp] = '';\n } else if (typeof el[styleProp] === 'function') {\n el.el.style[styleProp] = el[styleProp](progress);\n } else {\n el.el.style[styleProp] = el[styleProp];\n }\n }\n }\n }\n }\n }\n function handleTouchStart(e) {\n if (!e.isTrusted) return;\n const swipeBackEnabled = params[`${app.theme}SwipeBack`];\n if (!allowViewTouchMove || !swipeBackEnabled || isTouched || app.swipeout && app.swipeout.el || !router.allowPageChange) return;\n if ($(e.target).closest('.range-slider, .calendar-months').length > 0) return;\n if ($(e.target).closest('.page-master, .page-master-detail').length > 0 && params.masterDetailBreakpoint > 0 && app.width >= params.masterDetailBreakpoint) return;\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = now();\n dynamicNavbar = router.dynamicNavbar;\n }\n function handleTouchMove(e) {\n if (!e.isTrusted) return;\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)) || pageX < touchesStart.x && !app.rtl || pageX > touchesStart.x && app.rtl;\n }\n if (isScrolling || e.f7PreventSwipeBack || app.preventSwipeBack) {\n isTouched = false;\n return;\n }\n if (!isMoved) {\n // Calc values during first move fired\n let cancel = false;\n const target = $(e.target);\n const swipeout = target.closest('.swipeout');\n if (swipeout.length > 0) {\n if (!app.rtl && swipeout.find('.swipeout-actions-left').length > 0) cancel = true;\n if (app.rtl && swipeout.find('.swipeout-actions-right').length > 0) cancel = true;\n }\n $currentPageEl = target.closest('.page');\n if ($currentPageEl.hasClass('no-swipeback') || target.closest('.no-swipeback, .card-opened').length > 0) cancel = true;\n $previousPageEl = $el.find('.page-previous');\n if ($previousPageEl.length > 1) {\n $previousPageEl = $previousPageEl.eq($previousPageEl.length - 1);\n }\n let notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n viewContainerWidth = $el.width();\n if (app.rtl) {\n notFromBorder = touchesStart.x < $el.offset().left - $el[0].scrollLeft + (viewContainerWidth - paramsSwipeBackActiveArea);\n } else {\n notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n }\n if (notFromBorder) cancel = true;\n if ($previousPageEl.length === 0 || $currentPageEl.length === 0) cancel = true;\n if (cancel) {\n isTouched = false;\n return;\n }\n if (paramsSwipeBackAnimateShadow) {\n $pageShadowEl = $currentPageEl.find('.page-shadow-effect');\n if ($pageShadowEl.length === 0) {\n $pageShadowEl = $('
');\n $currentPageEl.append($pageShadowEl);\n }\n }\n if (paramsSwipeBackAnimateOpacity) {\n $pageOpacityEl = $previousPageEl.find('.page-opacity-effect');\n if ($pageOpacityEl.length === 0) {\n $pageOpacityEl = $('
');\n $previousPageEl.append($pageOpacityEl);\n }\n }\n if (dynamicNavbar) {\n $currentNavbarEl = $navbarsEl.find('.navbar-current');\n $previousNavbarEl = $navbarsEl.find('.navbar-previous');\n if ($previousNavbarEl.length > 1) {\n $previousNavbarEl = $previousNavbarEl.eq($previousNavbarEl.length - 1);\n }\n animatableNavEls = animatableNavElements($previousNavbarEl, $currentNavbarEl);\n }\n\n // Close/Hide Any Picker\n if ($('.sheet.modal-in').length > 0 && app.sheet) {\n app.sheet.close($('.sheet.modal-in'));\n }\n }\n e.f7PreventSwipePanel = true;\n isMoved = true;\n app.preventSwipePanelBySwipeBack = true;\n e.preventDefault();\n\n // RTL inverter\n const inverter = app.rtl ? -1 : 1;\n\n // Touches diff\n touchesDiff = (pageX - touchesStart.x - paramsSwipeBackThreshold) * inverter;\n if (touchesDiff < 0) touchesDiff = 0;\n const percentage = Math.min(Math.max(touchesDiff / viewContainerWidth, 0), 1);\n\n // Swipe Back Callback\n const callbackData = {\n percentage,\n progress: percentage,\n currentPageEl: $currentPageEl[0],\n previousPageEl: $previousPageEl[0],\n currentNavbarEl: $currentNavbarEl[0],\n previousNavbarEl: $previousNavbarEl[0]\n };\n $el.trigger('swipeback:move', callbackData);\n router.emit('swipebackMove', callbackData);\n\n // Transform pages\n let currentPageTranslate = touchesDiff * inverter;\n let previousPageTranslate = (touchesDiff / 5 - viewContainerWidth / 5) * inverter;\n if (!app.rtl) {\n currentPageTranslate = Math.min(currentPageTranslate, viewContainerWidth);\n previousPageTranslate = Math.min(previousPageTranslate, 0);\n } else {\n currentPageTranslate = Math.max(currentPageTranslate, -viewContainerWidth);\n previousPageTranslate = Math.max(previousPageTranslate, 0);\n }\n if (device.pixelRatio === 1) {\n currentPageTranslate = Math.round(currentPageTranslate);\n previousPageTranslate = Math.round(previousPageTranslate);\n }\n router.swipeBackActive = true;\n $([$currentPageEl[0], $previousPageEl[0]]).addClass('page-swipeback-active');\n $currentPageEl.transform(`translate3d(${currentPageTranslate}px,0,0)`);\n if (paramsSwipeBackAnimateShadow) $pageShadowEl[0].style.opacity = 1 - 1 * percentage;\n if (app.theme === 'ios') {\n $previousPageEl.transform(`translate3d(${previousPageTranslate}px,0,0)`);\n }\n if (paramsSwipeBackAnimateOpacity) $pageOpacityEl[0].style.opacity = 1 - 1 * percentage;\n\n // Dynamic Navbars Animation\n if (!dynamicNavbar) return;\n setAnimatableNavElements({\n progress: percentage\n });\n }\n function handleTouchEnd(e) {\n if (!e.isTrusted) return;\n app.preventSwipePanelBySwipeBack = false;\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n router.swipeBackActive = false;\n const $pages = $([$currentPageEl[0], $previousPageEl[0]]);\n $pages.removeClass('page-swipeback-active');\n if (touchesDiff === 0) {\n $pages.transform('');\n if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();\n if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();\n if (dynamicNavbar) {\n setAnimatableNavElements({\n reset: true\n });\n }\n return;\n }\n const timeDiff = now() - touchStartTime;\n let pageChanged = false;\n // Swipe back to previous page\n if (timeDiff < 300 && touchesDiff > 10 || timeDiff >= 300 && touchesDiff > viewContainerWidth / 2) {\n $currentPageEl.removeClass('page-current').addClass(`page-next${app.theme !== 'ios' ? ' page-next-on-right' : ''}`);\n $previousPageEl.removeClass('page-previous').addClass('page-current').removeAttr('aria-hidden');\n if ($pageShadowEl) $pageShadowEl[0].style.opacity = '';\n if ($pageOpacityEl) $pageOpacityEl[0].style.opacity = '';\n if (dynamicNavbar) {\n router.setNavbarPosition($currentNavbarEl, 'next');\n router.setNavbarPosition($previousNavbarEl, 'current', false);\n }\n pageChanged = true;\n }\n // Reset custom styles\n // Add transitioning class for transition-duration\n $pages.addClass('page-transitioning page-transitioning-swipeback');\n if (device.ios) {\n // eslint-disable-next-line\n $currentPageEl[0]._clientLeft = $currentPageEl[0].clientLeft;\n }\n $pages.transform('');\n if (dynamicNavbar) {\n setAnimatableNavElements({\n progress: pageChanged ? 1 : 0,\n transition: true,\n reflow: !!device.ios\n });\n }\n allowViewTouchMove = false;\n router.allowPageChange = false;\n\n // Swipe Back Callback\n const callbackData = {\n currentPageEl: $currentPageEl[0],\n previousPageEl: $previousPageEl[0],\n currentNavbarEl: $currentNavbarEl[0],\n previousNavbarEl: $previousNavbarEl[0]\n };\n if (pageChanged) {\n // Update Route\n router.currentRoute = $previousPageEl[0].f7Page.route;\n router.currentPage = $previousPageEl[0];\n\n // Page before animation callback\n router.pageCallback('beforeOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {\n route: $currentPageEl[0].f7Page.route,\n swipeBack: true\n });\n router.pageCallback('beforeIn', $previousPageEl, $previousNavbarEl, 'previous', 'current', {\n route: $previousPageEl[0].f7Page.route,\n swipeBack: true\n }, $currentPageEl[0]);\n $el.trigger('swipeback:beforechange', callbackData);\n router.emit('swipebackBeforeChange', callbackData);\n } else {\n $el.trigger('swipeback:beforereset', callbackData);\n router.emit('swipebackBeforeReset', callbackData);\n }\n $currentPageEl.transitionEnd(() => {\n $pages.removeClass('page-transitioning page-transitioning-swipeback');\n if (dynamicNavbar) {\n setAnimatableNavElements({\n reset: true,\n transition: false\n });\n }\n allowViewTouchMove = true;\n router.allowPageChange = true;\n if (pageChanged) {\n // Update History\n if (router.history.length === 1) {\n router.history.unshift(router.url);\n }\n router.history.pop();\n router.saveHistory();\n\n // Update push state\n if (params.browserHistory) {\n History.back();\n }\n\n // Page after animation callback\n router.pageCallback('afterOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {\n route: $currentPageEl[0].f7Page.route,\n swipeBack: true\n });\n router.pageCallback('afterIn', $previousPageEl, $previousNavbarEl, 'previous', 'current', {\n route: $previousPageEl[0].f7Page.route,\n swipeBack: true\n });\n\n // Remove Old Page\n\n router.pageCallback('beforeRemove', $currentPageEl, $currentNavbarEl, 'next', {\n swipeBack: true\n });\n router.removePage($currentPageEl);\n if (dynamicNavbar) {\n router.removeNavbar($currentNavbarEl);\n }\n $el.trigger('swipeback:afterchange', callbackData);\n router.emit('swipebackAfterChange', callbackData);\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (params.preloadPreviousPage) {\n router.back(router.history[router.history.length - 2], {\n preload: true\n });\n }\n } else {\n $el.trigger('swipeback:afterreset', callbackData);\n router.emit('swipebackAfterReset', callbackData);\n }\n if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();\n if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();\n });\n }\n function attachEvents() {\n const passiveListener = app.touchEvents.start === 'touchstart' && support.passiveListener ? {\n passive: true,\n capture: false\n } : false;\n $el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n function detachEvents() {\n const passiveListener = app.touchEvents.start === 'touchstart' && support.passiveListener ? {\n passive: true,\n capture: false\n } : false;\n $el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n attachEvents();\n router.on('routerDestroy', detachEvents);\n}\nexport default SwipeBack;","import { extend } from '../../shared/utils.js';\nexport default function redirect(direction, route, options) {\n const router = this;\n const r = route.route.redirect;\n const method = direction === 'forward' ? 'navigate' : 'back';\n if (options.initial && router.params.browserHistory) {\n options.replaceState = true; // eslint-disable-line\n options.history = true; // eslint-disable-line\n }\n\n function redirectResolve(redirectUrl, redirectOptions) {\n if (redirectOptions === void 0) {\n redirectOptions = {};\n }\n router.allowPageChange = true;\n router[method](redirectUrl, extend({}, options, redirectOptions));\n }\n function redirectReject() {\n router.allowPageChange = true;\n }\n if (typeof r === 'function') {\n router.allowPageChange = false;\n const redirectUrl = r.call(router, {\n router,\n to: route,\n resolve: redirectResolve,\n reject: redirectReject,\n direction,\n app: router.app\n });\n if (redirectUrl && typeof redirectUrl === 'string') {\n router.allowPageChange = true;\n return router[method](redirectUrl, options);\n }\n return router;\n }\n return router[method](r, options);\n}","function processQueue(router, routerQueue, routeQueue, to, from, resolve, reject, direction) {\n const queue = [];\n if (Array.isArray(routeQueue)) {\n queue.push(...routeQueue);\n } else if (routeQueue && typeof routeQueue === 'function') {\n queue.push(routeQueue);\n }\n if (routerQueue) {\n if (Array.isArray(routerQueue)) {\n queue.push(...routerQueue);\n } else {\n queue.push(routerQueue);\n }\n }\n function next() {\n if (queue.length === 0) {\n resolve();\n return;\n }\n const queueItem = queue.shift();\n queueItem.call(router, {\n router,\n to,\n from,\n resolve() {\n next();\n },\n reject() {\n reject();\n },\n direction,\n app: router.app\n });\n }\n next();\n}\nexport default function processRouteQueue(to, from, resolve, reject, direction) {\n const router = this;\n function enterNextRoute() {\n if (to && to.route && (router.params.routesBeforeEnter || to.route.beforeEnter)) {\n router.allowPageChange = false;\n processQueue(router, router.params.routesBeforeEnter, to.route.beforeEnter, to, from, () => {\n router.allowPageChange = true;\n resolve();\n }, () => {\n reject();\n }, direction);\n } else {\n resolve();\n }\n }\n function leaveCurrentRoute() {\n if (from && from.route && (router.params.routesBeforeLeave || from.route.beforeLeave)) {\n router.allowPageChange = false;\n processQueue(router, router.params.routesBeforeLeave, from.route.beforeLeave, to, from, () => {\n router.allowPageChange = true;\n enterNextRoute();\n }, () => {\n reject();\n }, direction);\n } else {\n enterNextRoute();\n }\n }\n leaveCurrentRoute();\n}","export default function appRouterCheck(router, method) {\n if (!router.view) {\n throw new Error(`Framework7: it is not allowed to use router methods on global app router. Use router methods only on related View, e.g. app.views.main.router.${method}(...)`);\n }\n}","export default function asyncComponent(router, component, resolve, reject) {\n function resolvePromise(componentPromise) {\n componentPromise.then(c => {\n // eslint-disable-next-line\n resolve({\n component: c.default || c._default || c\n });\n }).catch(err => {\n reject();\n throw new Error(err, {\n cause: err\n });\n });\n }\n if (component instanceof Promise) {\n resolvePromise(component);\n return;\n }\n const asyncComponentResult = component.call(router);\n if (asyncComponentResult instanceof Promise) {\n resolvePromise(asyncComponentResult);\n } else {\n resolve({\n component: asyncComponentResult\n });\n }\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, parseUrlQuery } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport redirect from './redirect.js';\nimport processRouteQueue from './process-route-queue.js';\nimport appRouterCheck from './app-router-check.js';\nimport asyncComponent from './async-component.js';\nfunction refreshPage(props) {\n if (props === void 0) {\n props = {};\n }\n const router = this;\n appRouterCheck(router, 'refreshPage');\n return router.navigate(router.currentRoute.url, {\n ignoreCache: true,\n reloadCurrent: true,\n props\n });\n}\nfunction forward(router, el, forwardOptions) {\n if (forwardOptions === void 0) {\n forwardOptions = {};\n }\n const document = getDocument();\n const $el = $(el);\n const app = router.app;\n const view = router.view;\n const options = extend(false, {\n animate: router.params.animate,\n browserHistory: true,\n replaceState: false,\n history: true,\n reloadCurrent: router.params.reloadPages,\n reloadPrevious: false,\n reloadAll: false,\n clearPreviousHistory: false,\n reloadDetail: router.params.reloadDetail,\n on: {}\n }, forwardOptions);\n const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n const isMaster = masterDetailEnabled && options.route && options.route.route && (options.route.route.master === true || typeof options.route.route.master === 'function' && options.route.route.master(app, router));\n let masterPageEl;\n let otherDetailPageEl;\n let detailsInBetweenRemoved = 0;\n let currentRouteIsModal = router.currentRoute.modal;\n let modalType;\n if (!currentRouteIsModal) {\n 'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(modalLoadProp => {\n if (router.currentRoute && router.currentRoute.route && router.currentRoute.route[modalLoadProp]) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n if (currentRouteIsModal) {\n const modalToClose = router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n const previousUrl = router.history[router.history.length - 2];\n let previousRoute = router.findMatchingRoute(previousUrl);\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl\n }\n };\n }\n router.modalRemove(modalToClose);\n }\n const dynamicNavbar = router.dynamicNavbar;\n const $viewEl = router.$el;\n const $newPage = $el;\n const reload = options.reloadPrevious || options.reloadCurrent || options.reloadAll;\n let $oldPage;\n let $navbarsEl;\n let $newNavbarEl;\n let $oldNavbarEl;\n router.allowPageChange = false;\n if ($newPage.length === 0) {\n router.allowPageChange = true;\n return router;\n }\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n if (dynamicNavbar) {\n $newNavbarEl = $newPage.children('.navbar');\n $navbarsEl = router.$navbarsEl;\n if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n }\n }\n\n // Save Keep Alive Cache\n if (options.route && options.route.route && options.route.route.keepAlive && !options.route.route.keepAliveData) {\n options.route.route.keepAliveData = {\n pageEl: $el[0]\n };\n }\n\n // Pages In View\n const $pagesInView = $viewEl.children('.page').filter(pageInView => pageInView !== $newPage[0]);\n\n // Navbars In View\n let $navbarsInView;\n if (dynamicNavbar) {\n $navbarsInView = $navbarsEl.children('.navbar').filter(navbarInView => navbarInView !== $newNavbarEl[0]);\n }\n\n // Exit when reload previous and only 1 page in view so nothing ro reload\n if (options.reloadPrevious && $pagesInView.length < 2) {\n router.allowPageChange = true;\n return router;\n }\n\n // Find Detail' master page\n let isDetail;\n let reloadDetail;\n let isDetailRoot;\n if (masterDetailEnabled && !options.reloadAll) {\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {\n masterPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n\n isDetail = !isMaster && masterPageEl;\n if (isDetail) {\n // Find Other Detail\n if (masterPageEl) {\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if ($pagesInView[i].classList.contains('page-master-detail')) {\n otherDetailPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n }\n }\n\n reloadDetail = isDetail && options.reloadDetail && app.width >= router.params.masterDetailBreakpoint && masterPageEl;\n }\n if (isDetail) {\n isDetailRoot = !otherDetailPageEl || reloadDetail || options.reloadAll || options.reloadCurrent;\n }\n\n // New Page\n let newPagePosition = 'next';\n if (options.reloadCurrent || options.reloadAll || reloadDetail) {\n newPagePosition = 'current';\n } else if (options.reloadPrevious) {\n newPagePosition = 'previous';\n }\n $newPage.removeClass('page-previous page-current page-next').addClass(`page-${newPagePosition}${isMaster ? ' page-master' : ''}${isDetail ? ' page-master-detail' : ''}${isDetailRoot ? ' page-master-detail-root' : ''}`).trigger('page:unstack').trigger('page:position', {\n position: newPagePosition\n });\n router.emit('pageUnstack', $newPage[0]);\n router.emit('pagePosition', $newPage[0], newPagePosition);\n if (isMaster || isDetail) {\n $newPage.trigger('page:role', {\n role: isMaster ? 'master' : 'detail',\n root: !!isDetailRoot\n });\n router.emit('pageRole', $newPage[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot\n });\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n $newNavbarEl.removeClass('navbar-previous navbar-current navbar-next').addClass(`navbar-${newPagePosition}${isMaster ? ' navbar-master' : ''}${isDetail ? ' navbar-master-detail' : ''}${isDetailRoot ? ' navbar-master-detail-root' : ''}`);\n $newNavbarEl.trigger('navbar:position', {\n position: newPagePosition\n });\n router.emit('navbarPosition', $newNavbarEl[0], newPagePosition);\n if (isMaster || isDetail) {\n router.emit('navbarRole', $newNavbarEl[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot\n });\n }\n }\n\n // Find Old Page\n if (options.reloadCurrent || reloadDetail) {\n if (reloadDetail) {\n $oldPage = $pagesInView.filter(pageEl => !pageEl.classList.contains('page-master'));\n if (dynamicNavbar) {\n $oldNavbarEl = $($oldPage.map(pageEl => app.navbar.getElByPage(pageEl)));\n }\n if ($oldPage.length > 1 && masterPageEl) {\n detailsInBetweenRemoved = $oldPage.length - 1;\n $(masterPageEl).removeClass('page-master-stacked').trigger('page:masterunstack');\n router.emit('pageMasterUnstack', masterPageEl);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage(masterPageEl)).removeClass('navbar-master-stacked');\n router.emit('navbarMasterUnstack', app.navbar.getElByPage(masterPageEl));\n }\n }\n } else {\n $oldPage = $pagesInView.eq($pagesInView.length - 1);\n if (dynamicNavbar) {\n $oldNavbarEl = $(app.navbar.getElByPage($oldPage));\n }\n }\n } else if (options.reloadPrevious) {\n $oldPage = $pagesInView.eq($pagesInView.length - 2);\n if (dynamicNavbar) {\n // $oldNavbarEl = $navbarsInView.eq($pagesInView.length - 2);\n $oldNavbarEl = $(app.navbar.getElByPage($oldPage));\n }\n } else if (options.reloadAll) {\n $oldPage = $pagesInView.filter(pageEl => pageEl !== $newPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl = $navbarsInView.filter(navbarEl => navbarEl !== $newNavbarEl[0]);\n }\n } else {\n let removedPageEls = [];\n let removedNavbarEls = [];\n if ($pagesInView.length > 1) {\n let i = 0;\n for (i = 0; i < $pagesInView.length - 1; i += 1) {\n if (masterPageEl && $pagesInView[i] === masterPageEl) {\n $pagesInView.eq(i).addClass('page-master-stacked');\n $pagesInView.eq(i).trigger('page:masterstack');\n router.emit('pageMasterStack', $pagesInView[i]);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage(masterPageEl)).addClass('navbar-master-stacked');\n router.emit('navbarMasterStack', app.navbar.getElByPage(masterPageEl));\n }\n continue; // eslint-disable-line\n }\n\n const oldNavbarEl = app.navbar.getElByPage($pagesInView.eq(i));\n\n // Page remove event\n removedPageEls.push($pagesInView[i]);\n router.pageCallback('beforeRemove', $pagesInView[i], $navbarsInView && $navbarsInView[i], 'previous', undefined, options);\n router.removePage($pagesInView[i]);\n if (dynamicNavbar && oldNavbarEl) {\n removedNavbarEls.push(oldNavbarEl);\n router.removeNavbar(oldNavbarEl);\n }\n }\n }\n $oldPage = $viewEl.children('.page').filter(pageEl => pageEl !== $newPage[0] && removedPageEls.indexOf(pageEl) < 0);\n if (dynamicNavbar) {\n $oldNavbarEl = $navbarsEl.children('.navbar').filter(navbarEl => navbarEl !== $newNavbarEl[0] && removedNavbarEls.indexOf(removedNavbarEls) < 0);\n }\n removedPageEls = [];\n removedNavbarEls = [];\n }\n if (isDetail && !options.reloadAll) {\n if ($oldPage.length > 1 || reloadDetail) {\n $oldPage = $oldPage.filter(pageEl => !pageEl.classList.contains('page-master'));\n }\n if ($oldNavbarEl && ($oldNavbarEl.length > 1 || reloadDetail)) {\n $oldNavbarEl = $oldNavbarEl.filter(navbarEl => !navbarEl.classList.contains('navbar-master'));\n }\n }\n\n // Push State\n if (router.params.browserHistory && (options.browserHistory || options.replaceState) && !options.reloadPrevious) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History[options.reloadCurrent || reloadDetail && otherDetailPageEl || options.reloadAll || options.replaceState ? 'replace' : 'push'](view.id, {\n url: options.route.url\n }, browserHistoryRoot + router.params.browserHistorySeparator + options.route.url);\n }\n if (!options.reloadPrevious) {\n // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarEl.length) {\n router.currentNavbarEl = $newNavbarEl[0];\n } else {\n delete router.currentNavbarEl;\n }\n\n // Current Route\n router.currentRoute = options.route;\n }\n\n // Update router history\n const url = options.route.url;\n if (options.history) {\n if (((options.reloadCurrent || reloadDetail && otherDetailPageEl) && router.history.length) > 0 || options.replaceState) {\n if (reloadDetail && detailsInBetweenRemoved > 0) {\n router.history = router.history.slice(0, router.history.length - detailsInBetweenRemoved);\n router.propsHistory = router.propsHistory.slice(0, router.propsHistory.length - detailsInBetweenRemoved);\n }\n router.history[router.history.length - (options.reloadPrevious ? 2 : 1)] = url;\n router.propsHistory[router.propsHistory.length - (options.reloadPrevious ? 2 : 1)] = options.props || {};\n } else if (options.reloadPrevious) {\n router.history[router.history.length - 2] = url;\n router.propsHistory[router.propsHistory.length - 2] = options.props || {};\n } else if (options.reloadAll) {\n router.history = [url];\n router.propsHistory = [options.props || {}];\n } else {\n router.history.push(url);\n router.propsHistory.push(options.props || {});\n }\n }\n router.saveHistory();\n\n // Insert new page and navbar\n const newPageInDom = $newPage.parents(document).length > 0;\n const f7Component = $newPage[0].f7Component;\n if (options.reloadPrevious) {\n if (f7Component && !newPageInDom) {\n f7Component.mount(componentEl => {\n $(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n if ($oldNavbarEl.length) {\n $newNavbarEl.insertBefore($oldNavbarEl);\n } else {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl);\n }\n }\n } else {\n if ($oldPage.next('.page')[0] !== $newPage[0]) {\n if (f7Component && !newPageInDom) {\n f7Component.mount(componentEl => {\n $viewEl.append(componentEl);\n });\n } else {\n $viewEl.append($newPage[0]);\n }\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl[0]);\n }\n }\n if (!newPageInDom) {\n router.pageCallback('mounted', $newPage, $newNavbarEl, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);\n } else if (options.route && options.route.route && options.route.route.keepAlive && !$newPage[0].f7PageMounted) {\n $newPage[0].f7PageMounted = true;\n router.pageCallback('mounted', $newPage, $newNavbarEl, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);\n }\n\n // Remove old page\n if ((options.reloadCurrent || reloadDetail) && $oldPage.length > 0) {\n // Page remove event\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n } else if (options.reloadAll) {\n $oldPage.each((pageEl, index) => {\n const $oldPageEl = $(pageEl);\n const $oldNavbarElEl = $(app.navbar.getElByPage($oldPageEl));\n\n // Page remove event\n if ($oldPageEl.hasClass('page-current')) {\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n }\n router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarEl && $oldNavbarEl.eq(index), 'previous', undefined, options);\n router.removePage($oldPageEl);\n if (dynamicNavbar && $oldNavbarElEl.length) {\n router.removeNavbar($oldNavbarElEl);\n }\n });\n } else if (options.reloadPrevious) {\n // Page remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(options.route.route.tab, extend({}, options, {\n history: false,\n browserHistory: false\n }));\n }\n\n // Check master detail\n if (masterDetailEnabled) {\n view.checkMasterDetailBreakpoint();\n }\n\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);\n if (options.reloadCurrent || options.reloadAll || reloadDetail) {\n router.allowPageChange = true;\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);\n $newPage.removeAttr('aria-hidden');\n if (dynamicNavbar && $newNavbarEl) {\n $newNavbarEl.removeAttr('aria-hidden');\n }\n router.pageCallback('afterIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);\n if (options.reloadCurrent && options.clearPreviousHistory) router.clearPreviousHistory();\n if (reloadDetail) {\n router.setPagePosition($(masterPageEl), 'previous');\n if (masterPageEl.f7Page && masterPageEl.f7Page.navbarEl) {\n router.setNavbarPosition($(masterPageEl.f7Page.navbarEl), 'previous');\n }\n }\n return router;\n }\n if (options.reloadPrevious) {\n router.allowPageChange = true;\n return router;\n }\n\n // Before animation event\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'next', 'current', options);\n\n // Animation\n function afterAnimation() {\n router.setPagePosition($newPage, 'current', false);\n router.setPagePosition($oldPage, 'previous', !$oldPage.hasClass('page-master'));\n if (dynamicNavbar) {\n router.setNavbarPosition($newNavbarEl, 'current', false);\n router.setNavbarPosition($oldNavbarEl, 'previous', !$oldNavbarEl.hasClass('navbar-master'));\n }\n // After animation event\n router.allowPageChange = true;\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'next', 'current', options);\n let keepOldPage = (router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`]) && !isMaster;\n if (!keepOldPage) {\n if ($newPage.hasClass('smart-select-page') || $newPage.hasClass('photo-browser-page') || $newPage.hasClass('autocomplete-page') || $newPage.hasClass('color-picker-page')) {\n keepOldPage = true;\n }\n }\n if (!keepOldPage) {\n if (!($newPage.attr('data-name') && $newPage.attr('data-name') === 'smart-select-page')) {\n // Remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n }\n if (options.clearPreviousHistory) router.clearPreviousHistory();\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.browserHistory) {\n History.clearRouterQueue();\n }\n }\n function setPositionClasses() {\n router.setPagePosition($oldPage, 'current', false);\n router.setPagePosition($newPage, 'next', false);\n if (dynamicNavbar) {\n router.setNavbarPosition($oldNavbarEl, 'current', false);\n router.setNavbarPosition($newNavbarEl, 'next', false);\n }\n }\n if (options.animate && !(isMaster && app.width >= router.params.masterDetailBreakpoint)) {\n const delay = router.params[`${router.app.theme}PageLoadDelay`];\n let transition = router.params.transition;\n if (options.transition) transition = options.transition;\n if (!transition && router.currentRoute && router.currentRoute.route) {\n transition = router.currentRoute.route.transition;\n }\n if (!transition && router.currentRoute && router.currentRoute.route.options) {\n transition = router.currentRoute.route.options.transition;\n }\n if (transition) {\n $newPage[0].f7PageTransition = transition;\n }\n if (delay) {\n setTimeout(() => {\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'forward', transition, () => {\n afterAnimation();\n });\n }, delay);\n } else {\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'forward', transition, () => {\n afterAnimation();\n });\n }\n } else {\n afterAnimation();\n }\n return router;\n}\nfunction load(router, loadParams, loadOptions, ignorePageChange) {\n if (loadParams === void 0) {\n loadParams = {};\n }\n if (loadOptions === void 0) {\n loadOptions = {};\n }\n if (!router.allowPageChange && !ignorePageChange) return router;\n const params = loadParams;\n const options = loadOptions;\n const {\n url,\n content,\n el,\n pageName,\n component,\n componentUrl\n } = params;\n if (!options.reloadCurrent && options.route && options.route.route && options.route.route.parentPath && router.currentRoute.route && router.currentRoute.route.parentPath === options.route.route.parentPath) {\n // Do something nested\n if (options.route.url === router.url) {\n router.allowPageChange = true;\n return false;\n }\n // Check for same params\n let sameParams = Object.keys(options.route.params).length === Object.keys(router.currentRoute.params).length;\n if (sameParams) {\n // Check for equal params name\n Object.keys(options.route.params).forEach(paramName => {\n if (!(paramName in router.currentRoute.params) || router.currentRoute.params[paramName] !== options.route.params[paramName]) {\n sameParams = false;\n }\n });\n }\n if (sameParams) {\n if (options.route.route.tab) {\n return router.tabLoad(options.route.route.tab, options);\n }\n return false;\n }\n if (!sameParams && options.route.route.tab && router.currentRoute.route.tab && router.currentRoute.parentPath === options.route.parentPath) {\n return router.tabLoad(options.route.route.tab, options);\n }\n }\n if (options.route && options.route.url && router.url === options.route.url && !(options.reloadCurrent || options.reloadPrevious) && !router.params.allowDuplicateUrls) {\n router.allowPageChange = true;\n return false;\n }\n if (!options.route && url) {\n options.route = router.parseRouteUrl(url);\n extend(options.route, {\n route: {\n url,\n path: url\n }\n });\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return forward(router, pageEl, extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n if (url || componentUrl || component) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n forward(router, router.getPageEl(content), options);\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n forward(router, router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n forward(router, router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.pageComponentLoader({\n routerEl: router.el,\n component,\n componentUrl,\n options,\n resolve,\n reject\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router.xhrRequest(url, options).then(pageContent => {\n forward(router, router.getPageEl(pageContent), options);\n }).catch(() => {\n router.allowPageChange = true;\n });\n }\n return router;\n}\nfunction navigate(navigateParams, navigateOptions) {\n if (navigateOptions === void 0) {\n navigateOptions = {};\n }\n const router = this;\n if (router.swipeBackActive) return router;\n let url;\n let createRoute;\n let name;\n let path;\n let query;\n let params;\n let route;\n if (typeof navigateParams === 'string') {\n url = navigateParams;\n } else {\n url = navigateParams.url;\n createRoute = navigateParams.route;\n name = navigateParams.name;\n path = navigateParams.path;\n query = navigateParams.query;\n params = navigateParams.params;\n }\n if (name || path) {\n url = router.generateUrl({\n path,\n name,\n params,\n query\n });\n if (url) {\n return router.navigate(url, navigateOptions);\n }\n return router;\n }\n const app = router.app;\n appRouterCheck(router, 'navigate');\n if (url === '#' || url === '') {\n return router;\n }\n let navigateUrl = url.replace('./', '');\n if (navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n const currentPath = router.currentRoute.parentPath || router.currentRoute.path;\n navigateUrl = ((currentPath ? `${currentPath}/` : '/') + navigateUrl).replace('///', '/').replace('//', '/');\n }\n if (createRoute) {\n route = extend(router.parseRouteUrl(navigateUrl), {\n route: extend({}, createRoute)\n });\n } else {\n route = router.findMatchingRoute(navigateUrl);\n }\n if (!route) {\n return router;\n }\n if (route.route && route.route.viewName) {\n const anotherViewName = route.route.viewName;\n const anotherView = app.views[anotherViewName];\n if (!anotherView) {\n throw new Error(`Framework7: There is no View with \"${anotherViewName}\" name that was specified in this route`);\n }\n if (anotherView !== router.view) {\n return anotherView.router.navigate(navigateParams, navigateOptions);\n }\n }\n if (route.route.redirect) {\n return redirect.call(router, 'forward', route, navigateOptions);\n }\n const options = {};\n if (route.route.options) {\n extend(options, route.route.options, navigateOptions);\n } else {\n extend(options, navigateOptions);\n }\n if (options.openIn && (!router.params.ignoreOpenIn || router.params.ignoreOpenIn && router.history.length > 0)) {\n return router.openIn(router, navigateUrl, options);\n }\n options.route = route;\n function resolve() {\n let routerLoaded = false;\n 'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(modalLoadProp => {\n if (route.route[modalLoadProp] && !routerLoaded) {\n routerLoaded = true;\n router.modalLoad(modalLoadProp, route, options, 'forward');\n }\n });\n if (route.route.keepAlive && route.route.keepAliveData) {\n load(router, {\n el: route.route.keepAliveData.pageEl\n }, options, false);\n routerLoaded = true;\n }\n 'url content component pageName el componentUrl'.split(' ').forEach(pageLoadProp => {\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n load(router, {\n [pageLoadProp]: route.route[pageLoadProp]\n }, options, false);\n }\n });\n if (routerLoaded) return;\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n let resolvedAsModal = false;\n 'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(modalLoadProp => {\n if (resolveParams[modalLoadProp]) {\n resolvedAsModal = true;\n const modalRoute = extend({}, route, {\n route: resolveParams\n });\n router.allowPageChange = true;\n router.modalLoad(modalLoadProp, modalRoute, extend(options, resolveOptions), 'forward');\n }\n });\n if (resolvedAsModal) return;\n load(router, resolveParams, extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n route.route.async.call(router, {\n router,\n to: options.route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction: 'forward',\n app\n });\n }\n if (route.route.asyncComponent) {\n asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n if (router.params.masterDetailBreakpoint > 0 && route.route.masterRoute) {\n // load detail route\n let preloadMaster = true;\n let masterLoaded = false;\n if (router.currentRoute && router.currentRoute.route) {\n if ((router.currentRoute.route.master === true || typeof router.currentRoute.route.master === 'function' && router.currentRoute.route.master(app, router)) && (router.currentRoute.route === route.route.masterRoute || router.currentRoute.route.path === route.route.masterRoute.path)) {\n preloadMaster = false;\n }\n if (router.currentRoute.route.masterRoute && (router.currentRoute.route.masterRoute === route.route.masterRoute || router.currentRoute.route.masterRoute.path === route.route.masterRoute.path)) {\n preloadMaster = false;\n masterLoaded = true;\n }\n }\n if (preloadMaster || masterLoaded && navigateOptions.reloadAll) {\n router.navigate({\n path: route.route.masterRoute.path,\n params: route.params || {}\n }, {\n animate: false,\n reloadAll: navigateOptions.reloadAll,\n reloadCurrent: navigateOptions.reloadCurrent,\n reloadPrevious: navigateOptions.reloadPrevious,\n browserHistory: !navigateOptions.initial,\n history: !navigateOptions.initial,\n once: {\n pageAfterIn() {\n router.navigate(navigateParams, extend({}, navigateOptions, {\n animate: false,\n reloadAll: false,\n reloadCurrent: false,\n reloadPrevious: false,\n history: !navigateOptions.initial,\n browserHistory: !navigateOptions.initial\n }));\n }\n }\n });\n return router;\n }\n }\n processRouteQueue.call(router, route, router.currentRoute, () => {\n if (route.route.modules) {\n app.loadModules(Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules]).then(() => {\n resolve();\n }).catch(() => {\n reject();\n });\n } else {\n resolve();\n }\n }, () => {\n reject();\n }, 'forward');\n\n // Return Router\n return router;\n}\nexport { refreshPage, navigate };","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, parseUrlQuery } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport History from '../../shared/history.js';\nimport redirect from './redirect.js';\nimport processRouteQueue from './process-route-queue.js';\nimport appRouterCheck from './app-router-check.js';\nimport asyncComponent from './async-component.js';\nfunction backward(router, el, backwardOptions) {\n const device = getDevice();\n const document = getDocument();\n const $el = $(el);\n const app = router.app;\n const view = router.view;\n const options = extend(false, {\n animate: router.params.animate,\n browserHistory: true,\n replaceState: false\n }, backwardOptions);\n const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n const isMaster = masterDetailEnabled && options.route && options.route.route && (options.route.route.master === true || typeof options.route.route.master === 'function' && options.route.route.master(app, router));\n let masterPageEl;\n let masterPageRemoved;\n const dynamicNavbar = router.dynamicNavbar;\n const $newPage = $el;\n const $oldPage = router.$el.children('.page-current');\n const initialPreload = $oldPage.length === 0 && options.preload;\n const currentIsMaster = masterDetailEnabled && $oldPage.hasClass('page-master');\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n let $navbarsEl;\n let $newNavbarEl;\n let $oldNavbarEl;\n if (dynamicNavbar) {\n $newNavbarEl = $newPage.children('.navbar');\n $navbarsEl = router.$navbarsEl;\n if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n }\n $oldNavbarEl = $navbarsEl.find('.navbar-current');\n }\n router.allowPageChange = false;\n if ($newPage.length === 0 || $oldPage.length === 0 && !options.preload) {\n router.allowPageChange = true;\n return router;\n }\n\n // Remove theme elements\n router.removeThemeElements($newPage);\n\n // Save Keep Alive Cache\n if (options.route && options.route.route && options.route.route.keepAlive && !options.route.route.keepAliveData) {\n options.route.route.keepAliveData = {\n pageEl: $el[0]\n };\n }\n\n // Pages In View\n let isDetail;\n let isDetailRoot;\n if (masterDetailEnabled) {\n const $pagesInView = router.$el.children('.page').filter(pageInView => pageInView !== $newPage[0]);\n\n // Find Detail' master page\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {\n masterPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n\n isDetail = !isMaster && masterPageEl && router.history.indexOf(options.route.url) > router.history.indexOf(masterPageEl.f7Page.route.url);\n if (!isDetail && !isMaster && masterPageEl && masterPageEl.f7Page && options.route.route.masterRoute) {\n isDetail = options.route.route.masterRoute.path === masterPageEl.f7Page.route.route.path;\n }\n }\n if (isDetail && masterPageEl && masterPageEl.f7Page) {\n isDetailRoot = router.history.indexOf(options.route.url) - router.history.indexOf(masterPageEl.f7Page.route.url) === 1;\n }\n\n // New Page\n $newPage.addClass(`page-${initialPreload ? 'current' : 'previous'}${isMaster ? ' page-master' : ''}${isDetail ? ' page-master-detail' : ''}${isDetailRoot ? ' page-master-detail-root' : ''}`).removeAttr('aria-hidden').trigger('page:unstack').trigger('page:position', {\n position: initialPreload ? 'current' : 'previous'\n });\n router.emit('pageUnstack', $newPage[0]);\n router.emit('pagePosition', $newPage[0], initialPreload ? 'current' : 'previous');\n if (isMaster || isDetail) {\n $newPage.trigger('page:role', {\n role: isMaster ? 'master' : 'detail',\n root: !!isDetailRoot\n });\n router.emit('pageRole', $newPage[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot\n });\n }\n if (dynamicNavbar && $newNavbarEl.length > 0) {\n $newNavbarEl.addClass(`navbar-${initialPreload ? 'current' : 'previous'}${isMaster ? ' navbar-master' : ''}${isDetail ? ' navbar-master-detail' : ''}${isDetailRoot ? ' navbar-master-detail-root' : ''}`).removeAttr('aria-hidden');\n $newNavbarEl.trigger('navbar:position', {\n position: initialPreload ? 'current' : 'previous'\n });\n router.emit('navbarPosition', $newNavbarEl[0], initialPreload ? 'current' : 'previous');\n if (isMaster || isDetailRoot) {\n router.emit('navbarRole', $newNavbarEl[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot\n });\n }\n }\n\n // Remove previous page in case of \"forced\"\n let backIndex;\n if (options.force) {\n if ($oldPage.prev('.page-previous').length >= 0) {\n if (router.history.indexOf(options.route.url) >= 0) {\n backIndex = router.history.length - router.history.indexOf(options.route.url) - 1;\n router.history = router.history.slice(0, router.history.indexOf(options.route.url) + 2);\n router.propsHistory = router.propsHistory.slice(0, router.history.indexOf(options.route.url) + 2);\n view.history = router.history;\n } else if (router.history[[router.history.length - 2]]) {\n router.propsHistory[router.propsHistory.length - 2] = options.props || {};\n } else {\n router.history.unshift(router.url);\n router.propsHistory.unshift(options.props || {});\n }\n const $pageToRemove = $oldPage.prev('.page-previous');\n let $navbarToRemove;\n if (dynamicNavbar) {\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if ($pageToRemove.length > 0) {\n router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined, options);\n if ($pageToRemove[0] === masterPageEl) {\n masterPageRemoved = true;\n }\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\n }\n }\n }\n\n // Insert new page\n const newPageInDom = $newPage.parents(document).length > 0;\n const f7Component = $newPage[0].f7Component;\n function insertPage() {\n if (initialPreload) {\n if (!newPageInDom && f7Component) {\n f7Component.mount(componentEl => {\n router.$el.append(componentEl);\n });\n } else {\n router.$el.append($newPage);\n }\n }\n if ($newPage.next($oldPage).length === 0) {\n if (!newPageInDom && f7Component) {\n f7Component.mount(componentEl => {\n $(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n $newNavbarEl.insertBefore($oldNavbarEl);\n if ($oldNavbarEl.length > 0) {\n $newNavbarEl.insertBefore($oldNavbarEl);\n } else {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl);\n }\n }\n if (!newPageInDom) {\n router.pageCallback('mounted', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n } else if (options.route && options.route.route && options.route.route.keepAlive && !$newPage[0].f7PageMounted) {\n $newPage[0].f7PageMounted = true;\n router.pageCallback('mounted', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n }\n }\n if (options.preload) {\n // Insert Page\n insertPage();\n // Tab route\n if (options.route.route.tab) {\n router.tabLoad(options.route.route.tab, extend({}, options, {\n history: false,\n browserHistory: false,\n preload: true\n }));\n }\n if (isMaster) {\n $newPage.removeClass('page-master-stacked').trigger('page:masterunstack');\n router.emit('pageMasterUnstack', $newPage[0]);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage($newPage)).removeClass('navbar-master-stacked');\n router.emit('navbarMasterUnstack', app.navbar.getElByPage($newPage));\n }\n }\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n if (initialPreload) {\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'current', undefined, options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'current', undefined, options);\n }\n const $previousPages = $newPage.prevAll('.page-previous:not(.page-master)');\n if ($previousPages.length > 0) {\n $previousPages.each(pageToRemove => {\n const $pageToRemove = $(pageToRemove);\n let $navbarToRemove;\n if (dynamicNavbar) {\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined);\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\n });\n }\n router.allowPageChange = true;\n return router;\n }\n\n // History State\n if (!(device.ie || device.edge || device.firefox && !device.ios)) {\n if (router.params.browserHistory && options.browserHistory) {\n if (options.replaceState) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(view.id, {\n url: options.route.url\n }, browserHistoryRoot + router.params.browserHistorySeparator + options.route.url);\n } else if (backIndex) {\n History.go(-backIndex);\n } else {\n History.back();\n }\n }\n }\n\n // Update History\n if (options.replaceState) {\n router.history[router.history.length - 1] = options.route.url;\n router.propsHistory[router.propsHistory.length - 1] = options.props || {};\n } else {\n if (router.history.length === 1) {\n router.history.unshift(router.url);\n router.propsHistory.unshift(options.props || {});\n }\n router.history.pop();\n router.propsHistory.pop();\n }\n router.saveHistory();\n\n // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarEl.length) {\n router.currentNavbarEl = $newNavbarEl[0];\n } else {\n delete router.currentNavbarEl;\n }\n\n // Current Route\n router.currentRoute = options.route;\n\n // History State\n if (device.ie || device.edge || device.firefox && !device.ios) {\n if (router.params.browserHistory && options.browserHistory) {\n if (options.replaceState) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(view.id, {\n url: options.route.url\n }, browserHistoryRoot + router.params.browserHistorySeparator + options.route.url);\n } else if (backIndex) {\n History.go(-backIndex);\n } else {\n History.back();\n }\n }\n }\n\n // Insert Page\n insertPage();\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(options.route.route.tab, extend({}, options, {\n history: false,\n browserHistory: false\n }));\n }\n\n // Check master detail\n\n if (masterDetailEnabled && (currentIsMaster || masterPageRemoved)) {\n view.checkMasterDetailBreakpoint(false);\n }\n\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n\n // Before animation callback\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n // Animation\n function afterAnimation() {\n // Set classes\n router.setPagePosition($newPage, 'current', false);\n router.setPagePosition($oldPage, 'next', true);\n if (dynamicNavbar) {\n router.setNavbarPosition($newNavbarEl, 'current', false);\n router.setNavbarPosition($oldNavbarEl, 'next', true);\n }\n\n // After animation event\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n // Remove Old Page\n\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'next', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n router.allowPageChange = true;\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n // Preload previous page\n const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history[router.history.length - 2] && !isMaster) {\n router.back(router.history[router.history.length - 2], {\n preload: true,\n props: router.propsHistory[router.propsHistory.length - 2] || {}\n });\n }\n if (router.params.browserHistory) {\n History.clearRouterQueue();\n }\n }\n function setPositionClasses() {\n router.setPagePosition($oldPage, 'current');\n router.setPagePosition($newPage, 'previous', false);\n if (dynamicNavbar) {\n router.setNavbarPosition($oldNavbarEl, 'current');\n router.setNavbarPosition($newNavbarEl, 'previous', false);\n }\n }\n if (options.animate && !(currentIsMaster && app.width >= router.params.masterDetailBreakpoint)) {\n let transition = router.params.transition;\n if ($oldPage[0] && $oldPage[0].f7PageTransition) {\n transition = $oldPage[0].f7PageTransition;\n delete $oldPage[0].f7PageTransition;\n }\n if (options.transition) transition = options.transition;\n if (!transition && router.previousRoute && router.previousRoute.route) {\n transition = router.previousRoute.route.transition;\n }\n if (!transition && router.previousRoute && router.previousRoute.route && router.previousRoute.route.options) {\n transition = router.previousRoute.route.options.transition;\n }\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'backward', transition, () => {\n afterAnimation();\n });\n } else {\n afterAnimation();\n }\n return router;\n}\nfunction loadBack(router, backParams, backOptions, ignorePageChange) {\n if (!router.allowPageChange && !ignorePageChange) return router;\n const params = backParams;\n const options = backOptions;\n const {\n url,\n content,\n el,\n pageName,\n component,\n componentUrl\n } = params;\n if (options.route.url && router.url === options.route.url && !(options.reloadCurrent || options.reloadPrevious) && !router.params.allowDuplicateUrls) {\n router.allowPageChange = true;\n return false;\n }\n if (!options.route && url) {\n options.route = router.parseRouteUrl(url);\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return backward(router, pageEl, extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n if (url || componentUrl || component) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n backward(router, router.getPageEl(content), options);\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n backward(router, router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n backward(router, router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.pageComponentLoader({\n routerEl: router.el,\n component,\n componentUrl,\n options,\n resolve,\n reject\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router.xhrRequest(url, options).then(pageContent => {\n backward(router, router.getPageEl(pageContent), options);\n }).catch(() => {\n router.allowPageChange = true;\n });\n }\n return router;\n}\nfunction back() {\n const router = this;\n const device = getDevice();\n if (router.swipeBackActive) return router;\n let navigateUrl;\n let navigateOptions;\n let navigateProps;\n let route;\n if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'object') {\n navigateOptions = (arguments.length <= 0 ? undefined : arguments[0]) || {};\n } else {\n navigateUrl = arguments.length <= 0 ? undefined : arguments[0];\n navigateOptions = (arguments.length <= 1 ? undefined : arguments[1]) || {};\n }\n const {\n name,\n params,\n query\n } = navigateOptions;\n if (name) {\n navigateUrl = router.generateUrl({\n name,\n params,\n query\n });\n if (navigateUrl) {\n return router.back(navigateUrl, extend({}, navigateOptions, {\n name: null,\n params: null,\n query: null\n }));\n }\n return router;\n }\n const app = router.app;\n appRouterCheck(router, 'back');\n let currentRouteIsModal = router.currentRoute.modal;\n let modalType;\n if (!currentRouteIsModal) {\n 'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(modalLoadProp => {\n if (router.currentRoute.route[modalLoadProp]) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n if (currentRouteIsModal && !navigateOptions.preload) {\n const modalToClose = router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n const previousUrl = router.history[router.history.length - 2];\n let previousRoute;\n // check if previous route is modal too\n if (modalToClose && modalToClose.$el) {\n const prevOpenedModals = modalToClose.$el.prevAll('.modal-in');\n if (prevOpenedModals.length && prevOpenedModals[0].f7Modal) {\n const modalEl = prevOpenedModals[0];\n // check if current router not inside of the modalEl\n if (!router.$el.parents(modalEl).length) {\n previousRoute = modalEl.f7Modal.route;\n }\n }\n }\n if (!previousRoute) {\n previousRoute = router.findMatchingRoute(previousUrl);\n }\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl\n }\n };\n }\n if (!navigateUrl || navigateUrl.replace(/[# ]/g, '').trim().length === 0) {\n if (!previousRoute || !modalToClose) {\n return router;\n }\n }\n const forceOtherUrl = navigateOptions.force && previousRoute && navigateUrl;\n if (previousRoute && modalToClose) {\n const isBrokenBrowserHistory = device.ie || device.edge || device.firefox && !device.ios;\n const needHistoryBack = router.params.browserHistory && navigateOptions.browserHistory !== false;\n const currentRouteWithoutBrowserHistory = router.currentRoute && router.currentRoute.route && router.currentRoute.route.options && router.currentRoute.route.options.browserHistory === false;\n if (needHistoryBack && !isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {\n History.back();\n }\n router.currentRoute = previousRoute;\n router.history.pop();\n router.propsHistory.pop();\n router.saveHistory();\n if (needHistoryBack && isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {\n History.back();\n }\n router.modalRemove(modalToClose);\n if (forceOtherUrl) {\n router.navigate(navigateUrl, {\n reloadCurrent: true\n });\n }\n } else if (modalToClose) {\n router.modalRemove(modalToClose);\n if (navigateUrl) {\n router.navigate(navigateUrl, {\n reloadCurrent: true\n });\n }\n }\n return router;\n }\n let $previousPage = router.$el.children('.page-current').prevAll('.page-previous:not(.page-master)').eq(0);\n let skipMaster;\n if (router.params.masterDetailBreakpoint > 0) {\n const classes = [];\n router.$el.children('.page').each(pageEl => {\n classes.push(pageEl.className);\n });\n const $previousMaster = router.$el.children('.page-current').prevAll('.page-master').eq(0);\n if ($previousMaster.length) {\n const expectedPreviousPageUrl = router.history[router.history.length - 2];\n const expectedPreviousPageRoute = router.findMatchingRoute(expectedPreviousPageUrl);\n if (expectedPreviousPageRoute && $previousMaster[0].f7Page && expectedPreviousPageRoute.route === $previousMaster[0].f7Page.route.route) {\n $previousPage = $previousMaster;\n if (!navigateOptions.preload) {\n skipMaster = app.width >= router.params.masterDetailBreakpoint;\n }\n }\n }\n }\n if (!navigateOptions.force && $previousPage.length && !skipMaster) {\n if (router.params.browserHistory && $previousPage[0].f7Page && router.history[router.history.length - 2] !== $previousPage[0].f7Page.route.url) {\n router.back(router.history[router.history.length - 2], extend(navigateOptions, {\n force: true,\n props: router.propsHistory[router.propsHistory.length - 2] || {}\n }));\n return router;\n }\n const previousPageRoute = $previousPage[0].f7Page.route;\n processRouteQueue.call(router, previousPageRoute, router.currentRoute, () => {\n loadBack(router, {\n el: $previousPage\n }, extend(navigateOptions, {\n route: previousPageRoute\n }));\n }, () => {}, 'backward');\n return router;\n }\n\n // Navigate URL\n if (navigateUrl === '#') {\n navigateUrl = undefined;\n }\n if (navigateUrl && navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n navigateUrl = ((router.path || '/') + navigateUrl).replace('//', '/');\n }\n if (!navigateUrl && router.history.length > 1) {\n navigateUrl = router.history[router.history.length - 2];\n navigateProps = router.propsHistory[router.propsHistory.length - 2] || {};\n }\n if (skipMaster && !navigateOptions.force && router.history[router.history.length - 3]) {\n return router.back(router.history[router.history.length - 3], extend({}, navigateOptions || {}, {\n force: true,\n animate: false,\n props: router.propsHistory[router.propsHistory.length - 3] || {}\n }));\n }\n if (skipMaster && !navigateOptions.force) {\n return router;\n }\n\n // Find route to load\n route = router.findMatchingRoute(navigateUrl);\n if (!route) {\n if (navigateUrl) {\n route = {\n url: navigateUrl,\n path: navigateUrl.split('?')[0],\n query: parseUrlQuery(navigateUrl),\n route: {\n path: navigateUrl.split('?')[0],\n url: navigateUrl\n }\n };\n }\n }\n if (!route) {\n return router;\n }\n if (route.route.redirect) {\n return redirect.call(router, 'backward', route, navigateOptions);\n }\n const options = {};\n if (route.route.options) {\n extend(options, route.route.options, navigateOptions, {\n props: navigateProps || {}\n });\n } else {\n extend(options, navigateOptions, {\n props: navigateProps || {}\n });\n }\n options.route = route;\n function resolve() {\n let routerLoaded = false;\n if (route.route.keepAlive && route.route.keepAliveData) {\n loadBack(router, {\n el: route.route.keepAliveData.pageEl\n }, options);\n routerLoaded = true;\n }\n 'url content component pageName el componentUrl'.split(' ').forEach(pageLoadProp => {\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n loadBack(router, {\n [pageLoadProp]: route.route[pageLoadProp]\n }, options);\n }\n });\n if (routerLoaded) return;\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n loadBack(router, resolveParams, extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n route.route.async.call(router, {\n router,\n to: route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction: 'backward',\n app\n });\n }\n if (route.route.asyncComponent) {\n asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n if (options.preload) {\n resolve();\n } else {\n processRouteQueue.call(router, route, router.currentRoute, () => {\n if (route.route.modules) {\n app.loadModules(Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules]).then(() => {\n resolve();\n }).catch(() => {\n reject();\n });\n } else {\n resolve();\n }\n }, () => {\n reject();\n }, 'backward');\n }\n\n // Return Router\n return router;\n}\nexport { back };","import { getWindow, getDocument } from 'ssr-window';\nimport { pathToRegexp, compile } from 'path-to-regexp';\nimport $ from '../../shared/dom7.js';\nimport Framework7Class from '../../shared/class.js';\nimport { extend, nextFrame, parseUrlQuery, serializeObject, now, eventNameToColonCase } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport SwipeBack from './swipe-back.js';\nimport { refreshPage, navigate } from './navigate.js';\nimport { tabLoad, tabRemove } from './tab.js';\nimport { modalLoad, modalRemove } from './modal.js';\nimport { back } from './back.js';\nimport { clearPreviousHistory } from './clear-previous-history.js';\nimport appRouterCheck from './app-router-check.js';\nclass Router extends Framework7Class {\n constructor(app, view) {\n super({}, [typeof view === 'undefined' ? app : view]);\n const router = this;\n\n // Is App Router\n router.isAppRouter = typeof view === 'undefined';\n if (router.isAppRouter) {\n // App Router\n extend(false, router, {\n app,\n params: app.params.view,\n routes: app.routes || [],\n cache: app.cache\n });\n } else {\n // View Router\n extend(false, router, {\n app,\n view,\n viewId: view.id,\n id: view.params.routerId,\n params: view.params,\n routes: view.routes,\n history: view.history,\n propsHistory: [],\n scrollHistory: view.scrollHistory,\n cache: app.cache,\n dynamicNavbar: app.theme === 'ios' && view.params.iosDynamicNavbar,\n initialPages: [],\n initialNavbars: []\n });\n }\n\n // Install Modules\n router.useModules();\n\n // AllowPageChage\n router.allowPageChange = true;\n\n // Current Route\n let currentRoute = {};\n let previousRoute = {};\n Object.defineProperty(router, 'currentRoute', {\n enumerable: true,\n configurable: true,\n set(newRoute) {\n if (newRoute === void 0) {\n newRoute = {};\n }\n previousRoute = extend({}, currentRoute);\n currentRoute = newRoute;\n if (!currentRoute) return;\n router.url = currentRoute.url;\n router.emit('routeChange', newRoute, previousRoute, router);\n },\n get() {\n return currentRoute;\n }\n });\n Object.defineProperty(router, 'previousRoute', {\n enumerable: true,\n configurable: true,\n get() {\n return previousRoute;\n },\n set(newRoute) {\n previousRoute = newRoute;\n }\n });\n return router;\n }\n mount() {\n const router = this;\n const view = router.view;\n const document = getDocument();\n extend(false, router, {\n tempDom: document.createElement('div'),\n $el: view.$el,\n el: view.el,\n $navbarsEl: view.$navbarsEl,\n navbarsEl: view.navbarsEl\n });\n router.emit('local::mount routerMount', router);\n }\n animatableNavElements($newNavbarEl, $oldNavbarEl, toLarge, fromLarge, direction) {\n const router = this;\n const dynamicNavbar = router.dynamicNavbar;\n const animateIcon = router.params.iosAnimateNavbarBackIcon;\n let newNavEls;\n let oldNavEls;\n function animatableNavEl($el, $navbarInner) {\n const isSliding = $el.hasClass('sliding') || $navbarInner.hasClass('sliding');\n const isSubnavbar = $el.hasClass('subnavbar');\n const needsOpacityTransition = isSliding ? !isSubnavbar : true;\n const $iconEl = $el.find('.back .icon');\n let isIconLabel;\n if (isSliding && animateIcon && $el.hasClass('left') && $iconEl.length > 0 && $iconEl.next('span').length) {\n $el = $iconEl.next('span'); // eslint-disable-line\n isIconLabel = true;\n }\n return {\n $el,\n isIconLabel,\n leftOffset: $el[0].f7NavbarLeftOffset,\n rightOffset: $el[0].f7NavbarRightOffset,\n isSliding,\n isSubnavbar,\n needsOpacityTransition\n };\n }\n if (dynamicNavbar) {\n newNavEls = [];\n oldNavEls = [];\n $newNavbarEl.children('.navbar-inner').children('.left, .right, .title, .subnavbar').each(navEl => {\n const $navEl = $(navEl);\n if ($navEl.hasClass('left') && fromLarge && direction === 'forward') return;\n if ($navEl.hasClass('title') && toLarge) return;\n newNavEls.push(animatableNavEl($navEl, $newNavbarEl.children('.navbar-inner')));\n });\n if (!($oldNavbarEl.hasClass('navbar-master') && router.params.masterDetailBreakpoint > 0 && router.app.width >= router.params.masterDetailBreakpoint)) {\n $oldNavbarEl.children('.navbar-inner').children('.left, .right, .title, .subnavbar').each(navEl => {\n const $navEl = $(navEl);\n if ($navEl.hasClass('left') && toLarge && !fromLarge && direction === 'forward') return;\n if ($navEl.hasClass('left') && toLarge && direction === 'backward') return;\n if ($navEl.hasClass('title') && fromLarge) {\n return;\n }\n oldNavEls.push(animatableNavEl($navEl, $oldNavbarEl.children('.navbar-inner')));\n });\n }\n [oldNavEls, newNavEls].forEach(navEls => {\n navEls.forEach(navEl => {\n const n = navEl;\n const {\n isSliding,\n $el\n } = navEl;\n const otherEls = navEls === oldNavEls ? newNavEls : oldNavEls;\n if (!(isSliding && $el.hasClass('title') && otherEls)) return;\n otherEls.forEach(otherNavEl => {\n if (otherNavEl.isIconLabel) {\n const iconTextEl = otherNavEl.$el[0];\n n.leftOffset += iconTextEl ? iconTextEl.offsetLeft || 0 : 0;\n }\n });\n });\n });\n }\n return {\n newNavEls,\n oldNavEls\n };\n }\n animate($oldPageEl, $newPageEl, $oldNavbarEl, $newNavbarEl, direction, transition, callback) {\n const router = this;\n if (router.params.animateCustom) {\n router.params.animateCustom.apply(router, [$oldPageEl, $newPageEl, $oldNavbarEl, $newNavbarEl, direction, callback]);\n return;\n }\n const dynamicNavbar = router.dynamicNavbar;\n const ios = router.app.theme === 'ios';\n if (transition) {\n const routerCustomTransitionClass = `router-transition-custom router-transition-${transition}-${direction}`;\n // Animate\n const onCustomTransitionDone = () => {\n router.$el.removeClass(routerCustomTransitionClass);\n if (dynamicNavbar && router.$navbarsEl.length) {\n if ($newNavbarEl) {\n router.$navbarsEl.prepend($newNavbarEl);\n }\n if ($oldNavbarEl) {\n router.$navbarsEl.prepend($oldNavbarEl);\n }\n }\n if (callback) callback();\n };\n (direction === 'forward' ? $newPageEl : $oldPageEl).animationEnd(onCustomTransitionDone);\n if (dynamicNavbar) {\n if ($newNavbarEl && $newPageEl) {\n router.setNavbarPosition($newNavbarEl, '');\n $newNavbarEl.removeClass('navbar-next navbar-previous navbar-current');\n $newPageEl.prepend($newNavbarEl);\n }\n if ($oldNavbarEl && $oldPageEl) {\n router.setNavbarPosition($oldNavbarEl, '');\n $oldNavbarEl.removeClass('navbar-next navbar-previous navbar-current');\n $oldPageEl.prepend($oldNavbarEl);\n }\n }\n router.$el.addClass(routerCustomTransitionClass);\n return;\n }\n\n // Router Animation class\n const routerTransitionClass = `router-transition-${direction} router-transition`;\n let newNavEls;\n let oldNavEls;\n let fromLarge;\n let toLarge;\n let toDifferent;\n let oldIsLarge;\n let newIsLarge;\n if (ios && dynamicNavbar) {\n const betweenMasterAndDetail = router.params.masterDetailBreakpoint > 0 && router.app.width >= router.params.masterDetailBreakpoint && ($oldNavbarEl.hasClass('navbar-master') && $newNavbarEl.hasClass('navbar-master-detail') || $oldNavbarEl.hasClass('navbar-master-detail') && $newNavbarEl.hasClass('navbar-master'));\n if (!betweenMasterAndDetail) {\n oldIsLarge = $oldNavbarEl && $oldNavbarEl.hasClass('navbar-large');\n newIsLarge = $newNavbarEl && $newNavbarEl.hasClass('navbar-large');\n fromLarge = oldIsLarge && !$oldNavbarEl.hasClass('navbar-large-collapsed');\n toLarge = newIsLarge && !$newNavbarEl.hasClass('navbar-large-collapsed');\n toDifferent = fromLarge && !toLarge || toLarge && !fromLarge;\n }\n const navEls = router.animatableNavElements($newNavbarEl, $oldNavbarEl, toLarge, fromLarge, direction);\n newNavEls = navEls.newNavEls;\n oldNavEls = navEls.oldNavEls;\n }\n function animateNavbars(progress) {\n if (!(ios && dynamicNavbar)) return;\n if (progress === 1) {\n if (toLarge) {\n $newNavbarEl.addClass('router-navbar-transition-to-large');\n $oldNavbarEl.addClass('router-navbar-transition-to-large');\n }\n if (fromLarge) {\n $newNavbarEl.addClass('router-navbar-transition-from-large');\n $oldNavbarEl.addClass('router-navbar-transition-from-large');\n }\n }\n newNavEls.forEach(navEl => {\n const $el = navEl.$el;\n const offset = direction === 'forward' ? navEl.rightOffset : navEl.leftOffset;\n if (navEl.isSliding) {\n if (navEl.isSubnavbar && newIsLarge) {\n // prettier-ignore\n $el[0].style.setProperty('transform', `translate3d(${offset * (1 - progress)}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`, 'important');\n } else {\n $el.transform(`translate3d(${offset * (1 - progress)}px,0,0)`);\n }\n }\n });\n oldNavEls.forEach(navEl => {\n const $el = navEl.$el;\n const offset = direction === 'forward' ? navEl.leftOffset : navEl.rightOffset;\n if (navEl.isSliding) {\n if (navEl.isSubnavbar && oldIsLarge) {\n $el.transform(`translate3d(${offset * progress}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`);\n } else {\n $el.transform(`translate3d(${offset * progress}px,0,0)`);\n }\n }\n });\n }\n\n // AnimationEnd Callback\n function onDone() {\n if (router.dynamicNavbar) {\n if ($newNavbarEl) {\n $newNavbarEl.removeClass('router-navbar-transition-to-large router-navbar-transition-from-large');\n $newNavbarEl.addClass('navbar-no-title-large-transition');\n nextFrame(() => {\n $newNavbarEl.removeClass('navbar-no-title-large-transition');\n });\n }\n if ($oldNavbarEl) {\n $oldNavbarEl.removeClass('router-navbar-transition-to-large router-navbar-transition-from-large');\n }\n if ($newNavbarEl.hasClass('sliding') || $newNavbarEl.children('.navbar-inner.sliding').length) {\n $newNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n } else {\n $newNavbarEl.find('.sliding').transform('');\n }\n if ($oldNavbarEl.hasClass('sliding') || $oldNavbarEl.children('.navbar-inner.sliding').length) {\n $oldNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n } else {\n $oldNavbarEl.find('.sliding').transform('');\n }\n }\n router.$el.removeClass(routerTransitionClass);\n if (callback) callback();\n }\n\n // eslint-disable-next-line\n (direction === 'forward' ? $newPageEl : ios ? $oldPageEl : $newPageEl).animationEnd(() => {\n onDone();\n });\n\n // Animate\n if (dynamicNavbar) {\n // Prepare Navbars\n animateNavbars(0);\n nextFrame(() => {\n // Add class, start animation\n router.$el.addClass(routerTransitionClass);\n if (toDifferent) {\n // eslint-disable-next-line\n router.el._clientLeft = router.el.clientLeft;\n }\n animateNavbars(1);\n });\n } else {\n // Add class, start animation\n router.$el.addClass(routerTransitionClass);\n }\n }\n removeModal(modalEl) {\n const router = this;\n router.removeEl(modalEl);\n }\n // eslint-disable-next-line\n removeTabContent(tabEl) {\n const $tabEl = $(tabEl);\n $tabEl.html('');\n }\n removeNavbar(el) {\n const router = this;\n router.removeEl(el);\n }\n removePage(el) {\n const $el = $(el);\n const f7Page = $el && $el[0] && $el[0].f7Page;\n const router = this;\n if (f7Page && f7Page.route && f7Page.route.route && f7Page.route.route.keepAlive) {\n $el.remove();\n return;\n }\n router.removeEl(el);\n }\n removeEl(el) {\n if (!el) return;\n const router = this;\n const $el = $(el);\n if ($el.length === 0) return;\n $el.find('.tab').each(tabEl => {\n $(tabEl).children().each(tabChild => {\n if (tabChild.f7Component) {\n $(tabChild).trigger('tab:beforeremove');\n tabChild.f7Component.destroy();\n }\n });\n });\n if ($el[0].f7Component && $el[0].f7Component.destroy) {\n $el[0].f7Component.destroy();\n }\n if (!router.params.removeElements) {\n return;\n }\n if (router.params.removeElementsWithTimeout) {\n setTimeout(() => {\n $el.remove();\n }, router.params.removeElementsTimeout);\n } else {\n $el.remove();\n }\n }\n getPageEl(content) {\n const router = this;\n if (typeof content === 'string') {\n router.tempDom.innerHTML = content;\n } else {\n if ($(content).hasClass('page')) {\n return content;\n }\n router.tempDom.innerHTML = '';\n $(router.tempDom).append(content);\n }\n return router.findElement('.page', router.tempDom);\n }\n findElement(stringSelector, container) {\n const router = this;\n const view = router.view;\n const app = router.app;\n\n // Modals Selector\n const modalsSelector = '.popup, .dialog, .popover, .actions-modal, .sheet-modal, .login-screen, .page';\n const $container = $(container);\n const selector = stringSelector;\n let found = $container.find(selector).filter(el => $(el).parents(modalsSelector).length === 0);\n if (found.length > 1) {\n if (typeof view.selector === 'string') {\n // Search in related view\n found = $container.find(`${view.selector} ${selector}`);\n }\n if (found.length > 1) {\n // Search in main view\n found = $container.find(`.${app.params.viewMainClass} ${selector}`);\n }\n }\n if (found.length === 1) return found;\n found = router.findElement(selector, $container);\n if (found && found.length === 1) return found;\n if (found && found.length > 1) return $(found[0]);\n return undefined;\n }\n flattenRoutes(routes) {\n if (routes === void 0) {\n routes = this.routes;\n }\n const router = this;\n let flattenedRoutes = [];\n routes.forEach(route => {\n let hasTabRoutes = false;\n if ('tabs' in route && route.tabs) {\n const mergedPathsRoutes = route.tabs.map(tabRoute => {\n const tRoute = extend({}, route, {\n path: `${route.path}/${tabRoute.path}`.replace('///', '/').replace('//', '/'),\n parentPath: route.path,\n tab: tabRoute\n });\n delete tRoute.tabs;\n delete tRoute.routes;\n return tRoute;\n });\n hasTabRoutes = true;\n flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));\n }\n if ('detailRoutes' in route) {\n const mergedPathsRoutes = route.detailRoutes.map(detailRoute => {\n const dRoute = extend({}, detailRoute);\n dRoute.masterRoute = route;\n dRoute.masterRoutePath = route.path;\n return dRoute;\n });\n flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(mergedPathsRoutes));\n }\n if ('routes' in route) {\n const mergedPathsRoutes = route.routes.map(childRoute => {\n const cRoute = extend({}, childRoute);\n cRoute.path = `${route.path}/${cRoute.path}`.replace('///', '/').replace('//', '/');\n return cRoute;\n });\n if (hasTabRoutes) {\n flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));\n } else {\n flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(mergedPathsRoutes));\n }\n }\n if (!('routes' in route) && !('tabs' in route && route.tabs) && !('detailRoutes' in route)) {\n flattenedRoutes.push(route);\n }\n });\n return flattenedRoutes;\n }\n\n // eslint-disable-next-line\n parseRouteUrl(url) {\n if (!url) return {};\n const query = parseUrlQuery(url);\n const hash = url.split('#')[1];\n const params = {};\n const path = url.split('#')[0].split('?')[0];\n return {\n query,\n hash,\n params,\n url,\n path\n };\n }\n generateUrl(parameters) {\n if (parameters === void 0) {\n parameters = {};\n }\n if (typeof parameters === 'string') {\n return parameters;\n }\n const {\n name,\n path,\n params,\n query\n } = parameters;\n if (!name && !path) {\n throw new Error('Framework7: \"name\" or \"path\" parameter is required');\n }\n const router = this;\n const route = name ? router.findRouteByKey('name', name) : router.findRouteByKey('path', path);\n if (!route) {\n if (name) {\n throw new Error(`Framework7: route with name \"${name}\" not found`);\n } else {\n throw new Error(`Framework7: route with path \"${path}\" not found`);\n }\n }\n const url = router.constructRouteUrl(route, {\n params,\n query\n });\n if (url === '') {\n return '/';\n }\n if (!url) {\n throw new Error(`Framework7: can't construct URL for route with name \"${name}\"`);\n }\n return url;\n }\n\n // eslint-disable-next-line\n constructRouteUrl(route, _temp) {\n let {\n params,\n query\n } = _temp === void 0 ? {} : _temp;\n const {\n path\n } = route;\n const toUrl = compile(path);\n let url;\n try {\n url = toUrl(params || {});\n } catch (error) {\n throw new Error(`Framework7: error constructing route URL from passed params:\\nRoute: ${path}\\n${error.toString()}`);\n }\n if (query) {\n if (typeof query === 'string') url += `?${query}`;else if (Object.keys(query).length) url += `?${serializeObject(query)}`;\n }\n return url;\n }\n findTabRouteUrl(tabEl) {\n const router = this;\n const $tabEl = $(tabEl);\n const parentPath = router.currentRoute.route.parentPath;\n const tabId = $tabEl.attr('id');\n const flattenedRoutes = router.flattenRoutes(router.routes);\n let foundTabRouteUrl;\n flattenedRoutes.forEach(route => {\n if (route.parentPath === parentPath && route.tab && route.tab.id === tabId) {\n if (router.currentRoute.params && Object.keys(router.currentRoute.params).length > 0) {\n foundTabRouteUrl = router.constructRouteUrl(route, {\n params: router.currentRoute.params,\n query: router.currentRoute.query\n });\n } else {\n foundTabRouteUrl = route.path;\n }\n }\n });\n return foundTabRouteUrl;\n }\n findRouteByKey(key, value) {\n const router = this;\n const routes = router.routes;\n const flattenedRoutes = router.flattenRoutes(routes);\n let matchingRoute;\n flattenedRoutes.forEach(route => {\n if (matchingRoute) return;\n if (route[key] === value) {\n matchingRoute = route;\n }\n });\n return matchingRoute;\n }\n findMatchingRoute(url) {\n if (!url) return undefined;\n const router = this;\n const routes = router.routes;\n const flattenedRoutes = router.flattenRoutes(routes);\n const {\n path,\n query,\n hash,\n params\n } = router.parseRouteUrl(url);\n let matchingRoute;\n flattenedRoutes.forEach(route => {\n if (matchingRoute) return;\n const keys = [];\n const pathsToMatch = [route.path || '/'];\n if (route.alias) {\n if (typeof route.alias === 'string') pathsToMatch.push(route.alias);else if (Array.isArray(route.alias)) {\n route.alias.forEach(aliasPath => {\n pathsToMatch.push(aliasPath);\n });\n }\n }\n let matched;\n pathsToMatch.forEach(pathToMatch => {\n if (matched) return;\n matched = pathToRegexp(pathToMatch, keys).exec(path || '/');\n });\n if (matched) {\n keys.forEach((keyObj, index) => {\n if (typeof keyObj.name === 'number') return;\n const paramValue = matched[index + 1];\n if (typeof paramValue === 'undefined' || paramValue === null) {\n params[keyObj.name] = paramValue;\n } else {\n params[keyObj.name] = decodeURIComponent(paramValue);\n }\n });\n let parentPath;\n if (route.parentPath) {\n parentPath = (path || '/').split('/').slice(0, route.parentPath.split('/').length - 1).join('/');\n }\n matchingRoute = {\n query,\n hash,\n params,\n url,\n path: path || '/',\n parentPath,\n route,\n name: route.name\n };\n }\n });\n return matchingRoute;\n }\n\n // eslint-disable-next-line\n replaceRequestUrlParams(url, options) {\n if (url === void 0) {\n url = '';\n }\n if (options === void 0) {\n options = {};\n }\n let compiledUrl = url;\n if (typeof compiledUrl === 'string' && compiledUrl.indexOf('{{') >= 0 && options && options.route && options.route.params && Object.keys(options.route.params).length) {\n Object.keys(options.route.params).forEach(paramName => {\n const regExp = new RegExp(`{{${paramName}}}`, 'g');\n compiledUrl = compiledUrl.replace(regExp, options.route.params[paramName] || '');\n });\n }\n return compiledUrl;\n }\n removeFromXhrCache(url) {\n const router = this;\n const xhrCache = router.cache.xhr;\n let index = false;\n for (let i = 0; i < xhrCache.length; i += 1) {\n if (xhrCache[i].url === url) index = i;\n }\n if (index !== false) xhrCache.splice(index, 1);\n }\n xhrRequest(requestUrl, options) {\n const router = this;\n const params = router.params;\n const {\n ignoreCache\n } = options;\n let url = requestUrl;\n let hasQuery = url.indexOf('?') >= 0;\n if (params.passRouteQueryToRequest && options && options.route && options.route.query && Object.keys(options.route.query).length) {\n url += `${hasQuery ? '&' : '?'}${serializeObject(options.route.query)}`;\n hasQuery = true;\n }\n if (params.passRouteParamsToRequest && options && options.route && options.route.params && Object.keys(options.route.params).length) {\n url += `${hasQuery ? '&' : '?'}${serializeObject(options.route.params)}`;\n hasQuery = true;\n }\n if (url.indexOf('{{') >= 0) {\n url = router.replaceRequestUrlParams(url, options);\n }\n // should we ignore get params or not\n if (params.xhrCacheIgnoreGetParameters && url.indexOf('?') >= 0) {\n url = url.split('?')[0];\n }\n return new Promise((resolve, reject) => {\n if (params.xhrCache && !ignoreCache && url.indexOf('nocache') < 0 && params.xhrCacheIgnore.indexOf(url) < 0) {\n for (let i = 0; i < router.cache.xhr.length; i += 1) {\n const cachedUrl = router.cache.xhr[i];\n if (cachedUrl.url === url) {\n // Check expiration\n if (now() - cachedUrl.time < params.xhrCacheDuration) {\n // Load from cache\n resolve(cachedUrl.content);\n return;\n }\n }\n }\n }\n router.xhrAbortController = new AbortController();\n let fetchRes;\n fetch(url, {\n signal: router.xhrAbortController.signal,\n method: 'GET'\n }).then(res => {\n fetchRes = res;\n return res.text();\n }).then(responseText => {\n const {\n status\n } = fetchRes;\n router.emit('routerAjaxComplete', fetchRes);\n if (status !== 'error' && status !== 'timeout' && status >= 200 && status < 300 || status === 0) {\n if (params.xhrCache && responseText !== '') {\n router.removeFromXhrCache(url);\n router.cache.xhr.push({\n url,\n time: now(),\n content: responseText\n });\n }\n router.emit('routerAjaxSuccess', fetchRes, options);\n resolve(responseText);\n } else {\n router.emit('routerAjaxError', fetchRes, options);\n reject(fetchRes);\n }\n }).catch(err => {\n reject(err);\n });\n });\n }\n setNavbarPosition($el, position, ariaHidden) {\n const router = this;\n $el.removeClass('navbar-previous navbar-current navbar-next');\n if (position) {\n $el.addClass(`navbar-${position}`);\n }\n if (ariaHidden === false) {\n $el.removeAttr('aria-hidden');\n } else if (ariaHidden === true) {\n $el.attr('aria-hidden', 'true');\n }\n $el.trigger('navbar:position', {\n position\n });\n router.emit('navbarPosition', $el[0], position);\n }\n setPagePosition($el, position, ariaHidden) {\n const router = this;\n $el.removeClass('page-previous page-current page-next');\n $el.addClass(`page-${position}`);\n if (ariaHidden === false) {\n $el.removeAttr('aria-hidden');\n } else if (ariaHidden === true) {\n $el.attr('aria-hidden', 'true');\n }\n $el.trigger('page:position', {\n position\n });\n router.emit('pagePosition', $el[0], position);\n }\n\n // Remove theme elements\n removeThemeElements(el) {\n const router = this;\n const theme = router.app.theme;\n let toRemove;\n if (theme === 'ios') {\n toRemove = '.md-only, .if-md, .if-not-ios, .not-ios';\n } else if (theme === 'md') {\n toRemove = '.ios-only, .if-ios, .if-not-md, .not-md';\n }\n $(el).find(toRemove).remove();\n }\n getPageData(pageEl, navbarEl, from, to, route, pageFromEl) {\n if (route === void 0) {\n route = {};\n }\n const router = this;\n const $pageEl = $(pageEl).eq(0);\n const $navbarEl = $(navbarEl).eq(0);\n const currentPage = $pageEl[0].f7Page || {};\n let direction;\n let pageFrom;\n if (from === 'next' && to === 'current' || from === 'current' && to === 'previous') direction = 'forward';\n if (from === 'current' && to === 'next' || from === 'previous' && to === 'current') direction = 'backward';\n if (currentPage && !currentPage.fromPage) {\n const $pageFromEl = $(pageFromEl);\n if ($pageFromEl.length) {\n pageFrom = $pageFromEl[0].f7Page;\n }\n }\n pageFrom = currentPage.pageFrom || pageFrom;\n if (pageFrom && pageFrom.pageFrom) {\n pageFrom.pageFrom = null;\n }\n const page = {\n app: router.app,\n view: router.view,\n router,\n $el: $pageEl,\n el: $pageEl[0],\n $pageEl,\n pageEl: $pageEl[0],\n $navbarEl,\n navbarEl: $navbarEl[0],\n name: $pageEl.attr('data-name'),\n position: from,\n from,\n to,\n direction,\n route: currentPage.route ? currentPage.route : route,\n pageFrom\n };\n $pageEl[0].f7Page = page;\n return page;\n }\n\n // Callbacks\n pageCallback(callback, pageEl, navbarEl, from, to, options, pageFromEl) {\n if (options === void 0) {\n options = {};\n }\n if (!pageEl) return;\n const router = this;\n const $pageEl = $(pageEl);\n if (!$pageEl.length) return;\n const $navbarEl = $(navbarEl);\n const {\n route\n } = options;\n const restoreScrollTopOnBack = router.params.restoreScrollTopOnBack && !(router.params.masterDetailBreakpoint > 0 && $pageEl.hasClass('page-master') && router.app.width >= router.params.masterDetailBreakpoint);\n const keepAlive = $pageEl[0].f7Page && $pageEl[0].f7Page.route && $pageEl[0].f7Page.route.route && $pageEl[0].f7Page.route.route.keepAlive;\n if (callback === 'beforeRemove' && keepAlive) {\n callback = 'beforeUnmount'; // eslint-disable-line\n }\n\n const camelName = `page${callback[0].toUpperCase() + callback.slice(1, callback.length)}`;\n const colonName = `page:${callback.toLowerCase()}`;\n let page = {};\n if (callback === 'beforeRemove' && $pageEl[0].f7Page) {\n page = extend($pageEl[0].f7Page, {\n from,\n to,\n position: from\n });\n } else {\n page = router.getPageData($pageEl[0], $navbarEl[0], from, to, route, pageFromEl);\n }\n page.swipeBack = !!options.swipeBack;\n const {\n on = {},\n once = {}\n } = options.route ? options.route.route : {};\n if (options.on) {\n extend(on, options.on);\n }\n if (options.once) {\n extend(once, options.once);\n }\n function attachEvents() {\n if ($pageEl[0].f7RouteEventsAttached) return;\n $pageEl[0].f7RouteEventsAttached = true;\n if (on && Object.keys(on).length > 0) {\n $pageEl[0].f7RouteEventsOn = on;\n Object.keys(on).forEach(eventName => {\n on[eventName] = on[eventName].bind(router);\n $pageEl.on(eventNameToColonCase(eventName), on[eventName]);\n });\n }\n if (once && Object.keys(once).length > 0) {\n $pageEl[0].f7RouteEventsOnce = once;\n Object.keys(once).forEach(eventName => {\n once[eventName] = once[eventName].bind(router);\n $pageEl.once(eventNameToColonCase(eventName), once[eventName]);\n });\n }\n }\n function detachEvents() {\n if (!$pageEl[0].f7RouteEventsAttached) return;\n if ($pageEl[0].f7RouteEventsOn) {\n Object.keys($pageEl[0].f7RouteEventsOn).forEach(eventName => {\n $pageEl.off(eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOn[eventName]);\n });\n }\n if ($pageEl[0].f7RouteEventsOnce) {\n Object.keys($pageEl[0].f7RouteEventsOnce).forEach(eventName => {\n $pageEl.off(eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOnce[eventName]);\n });\n }\n $pageEl[0].f7RouteEventsAttached = null;\n $pageEl[0].f7RouteEventsOn = null;\n $pageEl[0].f7RouteEventsOnce = null;\n delete $pageEl[0].f7RouteEventsAttached;\n delete $pageEl[0].f7RouteEventsOn;\n delete $pageEl[0].f7RouteEventsOnce;\n }\n if (callback === 'mounted') {\n attachEvents();\n }\n if (callback === 'init') {\n if (restoreScrollTopOnBack && (from === 'previous' || !from) && to === 'current' && router.scrollHistory[page.route.url] && !$pageEl.hasClass('no-restore-scroll')) {\n let $pageContent = $pageEl.find('.page-content');\n if ($pageContent.length > 0) {\n // eslint-disable-next-line\n $pageContent = $pageContent.filter(pageContentEl => {\n return $(pageContentEl).parents('.tab:not(.tab-active)').length === 0 && !$(pageContentEl).is('.tab:not(.tab-active)');\n });\n }\n $pageContent.scrollTop(router.scrollHistory[page.route.url]);\n }\n attachEvents();\n if ($pageEl[0].f7PageInitialized) {\n $pageEl.trigger('page:reinit', page);\n router.emit('pageReinit', page);\n return;\n }\n $pageEl[0].f7PageInitialized = true;\n }\n if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'previous') {\n // Save scroll position\n let $pageContent = $pageEl.find('.page-content');\n if ($pageContent.length > 0) {\n // eslint-disable-next-line\n $pageContent = $pageContent.filter(pageContentEl => {\n return $(pageContentEl).parents('.tab:not(.tab-active)').length === 0 && !$(pageContentEl).is('.tab:not(.tab-active)');\n });\n }\n router.scrollHistory[page.route.url] = $pageContent.scrollTop();\n }\n if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'next') {\n // Delete scroll position\n delete router.scrollHistory[page.route.url];\n }\n $pageEl.trigger(colonName, page);\n router.emit(camelName, page);\n if (callback === 'beforeRemove' || callback === 'beforeUnmount') {\n detachEvents();\n if (!keepAlive) {\n if ($pageEl[0].f7Page && $pageEl[0].f7Page.navbarEl) {\n delete $pageEl[0].f7Page.navbarEl.f7Page;\n }\n $pageEl[0].f7Page = null;\n }\n }\n }\n saveHistory() {\n const router = this;\n const window = getWindow();\n router.view.history = router.history;\n if (router.params.browserHistory && router.params.browserHistoryStoreHistory && window.localStorage) {\n window.localStorage[`f7router-${router.view.id}-history`] = JSON.stringify(router.history);\n }\n }\n restoreHistory() {\n const router = this;\n const window = getWindow();\n if (router.params.browserHistory && router.params.browserHistoryStoreHistory && window.localStorage && window.localStorage[`f7router-${router.view.id}-history`]) {\n router.history = JSON.parse(window.localStorage[`f7router-${router.view.id}-history`]);\n router.view.history = router.history;\n }\n }\n clearHistory() {\n const router = this;\n router.history = [];\n if (router.view) router.view.history = [];\n router.saveHistory();\n }\n updateCurrentUrl(newUrl) {\n const router = this;\n appRouterCheck(router, 'updateCurrentUrl');\n // Update history\n if (router.history.length) {\n router.history[router.history.length - 1] = newUrl;\n } else {\n router.history.push(newUrl);\n }\n\n // Update current route params\n const {\n query,\n hash,\n params,\n url,\n path\n } = router.parseRouteUrl(newUrl);\n if (router.currentRoute) {\n extend(router.currentRoute, {\n query,\n hash,\n params,\n url,\n path\n });\n }\n if (router.params.browserHistory) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(router.view.id, {\n url: newUrl\n }, browserHistoryRoot + router.params.browserHistorySeparator + newUrl);\n }\n\n // Save History\n router.saveHistory();\n router.emit('routeUrlUpdate', router.currentRoute, router);\n }\n getInitialUrl() {\n const router = this;\n if (router.initialUrl) {\n return {\n initialUrl: router.initialUrl,\n historyRestored: router.historyRestored\n };\n }\n const {\n app,\n view\n } = router;\n const document = getDocument();\n const window = getWindow();\n const location = app.params.url && typeof app.params.url === 'string' && typeof URL !== 'undefined' ? new URL(app.params.url) : document.location;\n let initialUrl = router.params.url;\n let documentUrl = location.href.split(location.origin)[1];\n let historyRestored;\n const {\n browserHistory,\n browserHistoryOnLoad,\n browserHistorySeparator\n } = router.params;\n let {\n browserHistoryRoot\n } = router.params;\n if ((window.cordova || window.Capacitor && window.Capacitor.isNative) && browserHistory && !browserHistorySeparator && !browserHistoryRoot && location.pathname.indexOf('index.html')) {\n // eslint-disable-next-line\n console.warn('Framework7: wrong or not complete browserHistory configuration, trying to guess browserHistoryRoot');\n browserHistoryRoot = location.pathname.split('index.html')[0];\n }\n if (!browserHistory || !browserHistoryOnLoad) {\n if (!initialUrl) {\n initialUrl = documentUrl;\n }\n if (location.search && initialUrl.indexOf('?') < 0) {\n initialUrl += location.search;\n }\n if (location.hash && initialUrl.indexOf('#') < 0) {\n initialUrl += location.hash;\n }\n } else {\n if (browserHistoryRoot && documentUrl.indexOf(browserHistoryRoot) >= 0) {\n documentUrl = documentUrl.substring(documentUrl.indexOf(browserHistoryRoot) + browserHistoryRoot.length);\n if (documentUrl === '') documentUrl = '/';\n }\n if (browserHistorySeparator.length > 0 && documentUrl.indexOf(browserHistorySeparator) >= 0) {\n initialUrl = documentUrl.substring(documentUrl.indexOf(browserHistorySeparator) + browserHistorySeparator.length);\n } else {\n initialUrl = documentUrl;\n }\n router.restoreHistory();\n if (router.history.indexOf(initialUrl) >= 0) {\n router.history = router.history.slice(0, router.history.indexOf(initialUrl) + 1);\n } else if (router.params.url === initialUrl) {\n router.history = [initialUrl];\n } else if (History.state && History.state[view.id] && History.state[view.id].url === router.history[router.history.length - 1]) {\n initialUrl = router.history[router.history.length - 1];\n } else {\n router.history = [documentUrl.split(browserHistorySeparator)[0] || '/', initialUrl];\n }\n if (router.history.length > 1) {\n historyRestored = true;\n } else {\n router.history = [];\n }\n router.saveHistory();\n }\n router.initialUrl = initialUrl;\n router.historyRestored = historyRestored;\n return {\n initialUrl,\n historyRestored\n };\n }\n init() {\n const router = this;\n const {\n app,\n view\n } = router;\n const document = getDocument();\n router.mount();\n const {\n initialUrl,\n historyRestored\n } = router.getInitialUrl();\n\n // Init Swipeback\n if (view && router.params.iosSwipeBack && app.theme === 'ios' || view && router.params.mdSwipeBack && app.theme === 'md') {\n SwipeBack(router);\n }\n const {\n browserHistory,\n browserHistoryOnLoad,\n browserHistoryAnimateOnLoad,\n browserHistoryInitialMatch\n } = router.params;\n let currentRoute;\n if (router.history.length > 1) {\n // Will load page\n const initUrl = browserHistoryInitialMatch ? initialUrl : router.history[0];\n currentRoute = router.findMatchingRoute(initUrl);\n if (!currentRoute) {\n currentRoute = extend(router.parseRouteUrl(initUrl), {\n route: {\n url: initUrl,\n path: initUrl.split('?')[0]\n }\n });\n }\n } else {\n // Don't load page\n currentRoute = router.findMatchingRoute(initialUrl);\n if (!currentRoute) {\n currentRoute = extend(router.parseRouteUrl(initialUrl), {\n route: {\n url: initialUrl,\n path: initialUrl.split('?')[0]\n }\n });\n }\n }\n if (router.$el.children('.page').length === 0 && initialUrl && router.params.loadInitialPage) {\n // No pages presented in DOM, reload new page\n router.navigate(initialUrl, {\n initial: true,\n reloadCurrent: true,\n browserHistory: false,\n animate: false,\n once: {\n modalOpen() {\n if (!historyRestored) return;\n const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 1) {\n router.back({\n preload: true\n });\n }\n },\n pageAfterIn() {\n if (!historyRestored) return;\n const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 1) {\n router.back({\n preload: true\n });\n }\n }\n }\n });\n } else if (router.$el.children('.page').length) {\n // Init current DOM page\n let hasTabRoute;\n router.currentRoute = currentRoute;\n router.$el.children('.page').each(pageEl => {\n const $pageEl = $(pageEl);\n let $navbarEl;\n router.setPagePosition($pageEl, 'current');\n if (router.dynamicNavbar) {\n $navbarEl = $pageEl.children('.navbar');\n if ($navbarEl.length > 0) {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n router.setNavbarPosition($navbarEl, 'current');\n router.$navbarsEl.append($navbarEl);\n if ($navbarEl.children('.title-large').length) {\n $navbarEl.addClass('navbar-large');\n }\n $pageEl.children('.navbar').remove();\n } else {\n router.$navbarsEl.addClass('navbar-hidden');\n if ($navbarEl.children('.title-large').length) {\n router.$navbarsEl.addClass('navbar-hidden navbar-large-hidden');\n }\n }\n }\n if (router.currentRoute && router.currentRoute.route && (router.currentRoute.route.master === true || typeof router.currentRoute.route.master === 'function' && router.currentRoute.route.master(app, router)) && router.params.masterDetailBreakpoint > 0) {\n $pageEl.addClass('page-master');\n $pageEl.trigger('page:role', {\n role: 'master'\n });\n if ($navbarEl && $navbarEl.length) {\n $navbarEl.addClass('navbar-master');\n }\n view.checkMasterDetailBreakpoint();\n }\n const initOptions = {\n route: router.currentRoute\n };\n if (router.currentRoute && router.currentRoute.route && router.currentRoute.route.options) {\n extend(initOptions, router.currentRoute.route.options);\n }\n router.currentPageEl = $pageEl[0];\n if (router.dynamicNavbar && $navbarEl.length) {\n router.currentNavbarEl = $navbarEl[0];\n }\n router.removeThemeElements($pageEl);\n if (router.dynamicNavbar && $navbarEl.length) {\n router.removeThemeElements($navbarEl);\n }\n if (initOptions.route.route.tab) {\n hasTabRoute = true;\n router.tabLoad(initOptions.route.route.tab, extend({}, initOptions));\n }\n router.pageCallback('init', $pageEl, $navbarEl, 'current', undefined, initOptions);\n router.pageCallback('beforeIn', $pageEl, $navbarEl, 'current', undefined, initOptions);\n router.pageCallback('afterIn', $pageEl, $navbarEl, 'current', undefined, initOptions);\n });\n if (historyRestored) {\n if (browserHistoryInitialMatch) {\n const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 1) {\n router.back({\n preload: true\n });\n }\n } else {\n router.navigate(initialUrl, {\n initial: true,\n browserHistory: false,\n history: false,\n animate: browserHistoryAnimateOnLoad,\n once: {\n pageAfterIn() {\n const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 2) {\n router.back({\n preload: true\n });\n }\n }\n }\n });\n }\n }\n if (!historyRestored && !hasTabRoute) {\n router.history.push(initialUrl);\n router.saveHistory();\n }\n }\n if (initialUrl && browserHistory && browserHistoryOnLoad && (!History.state || !History.state[view.id])) {\n History.initViewState(view.id, {\n url: initialUrl\n });\n }\n router.emit('local::init routerInit', router);\n }\n destroy() {\n let router = this;\n router.emit('local::destroy routerDestroy', router);\n\n // Delete props & methods\n Object.keys(router).forEach(routerProp => {\n router[routerProp] = null;\n delete router[routerProp];\n });\n router = null;\n }\n}\n\n// Load\nRouter.prototype.navigate = navigate;\nRouter.prototype.refreshPage = refreshPage;\n// Tab\nRouter.prototype.tabLoad = tabLoad;\nRouter.prototype.tabRemove = tabRemove;\n// Modal\nRouter.prototype.modalLoad = modalLoad;\nRouter.prototype.modalRemove = modalRemove;\n// Back\nRouter.prototype.back = back;\n// Clear history\nRouter.prototype.clearPreviousHistory = clearPreviousHistory;\nexport default Router;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport asyncComponent from './async-component.js';\nfunction tabLoad(tabRoute, loadOptions) {\n if (loadOptions === void 0) {\n loadOptions = {};\n }\n const router = this;\n const options = extend({\n animate: router.params.animate,\n browserHistory: true,\n history: true,\n parentPageEl: null,\n preload: false,\n on: {}\n }, loadOptions);\n let currentRoute;\n let previousRoute;\n if (options.route) {\n // Set Route\n if (!options.preload && options.route !== router.currentRoute) {\n previousRoute = router.previousRoute;\n router.currentRoute = options.route;\n }\n if (options.preload) {\n currentRoute = options.route;\n previousRoute = router.currentRoute;\n } else {\n currentRoute = router.currentRoute;\n if (!previousRoute) previousRoute = router.previousRoute;\n }\n\n // Update Browser History\n if (router.params.browserHistory && options.browserHistory && !options.reloadPrevious) {\n History[router.params.browserHistoryTabs](router.view.id, {\n url: options.route.url\n }, (router.params.browserHistoryRoot || '') + router.params.browserHistorySeparator + options.route.url);\n }\n\n // Update Router History\n if (options.history) {\n router.history[Math.max(router.history.length - 1, 0)] = options.route.url;\n router.saveHistory();\n }\n }\n\n // Show Tab\n const $parentPageEl = $(options.parentPageEl || router.currentPageEl);\n let tabEl;\n if ($parentPageEl.length && $parentPageEl.find(`#${tabRoute.id}`).length) {\n tabEl = $parentPageEl.find(`#${tabRoute.id}`).eq(0);\n } else if (router.view.selector) {\n tabEl = `${router.view.selector} #${tabRoute.id}`;\n } else {\n tabEl = `#${tabRoute.id}`;\n }\n const tabShowResult = router.app.tab.show({\n tabEl,\n animate: options.animate,\n tabRoute: options.route\n });\n const {\n $newTabEl,\n $oldTabEl,\n animated,\n onTabsChanged\n } = tabShowResult;\n if ($newTabEl && $newTabEl.parents('.page').length > 0 && options.route) {\n const tabParentPageData = $newTabEl.parents('.page')[0].f7Page;\n if (tabParentPageData && options.route) {\n tabParentPageData.route = options.route;\n }\n }\n\n // Tab Content Loaded\n function onTabLoaded(contentEl) {\n // Remove theme elements\n router.removeThemeElements($newTabEl);\n let tabEventTarget = $newTabEl;\n if (typeof contentEl !== 'string') tabEventTarget = $(contentEl);\n tabEventTarget.trigger('tab:init tab:mounted', tabRoute);\n router.emit('tabInit tabMounted', $newTabEl[0], tabRoute);\n if ($oldTabEl && $oldTabEl.length) {\n if (animated) {\n onTabsChanged(() => {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n }\n }\n }\n if ($newTabEl[0].f7RouterTabLoaded) {\n if (!$oldTabEl || !$oldTabEl.length) return router;\n if (animated) {\n onTabsChanged(() => {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n }\n return router;\n }\n\n // Load Tab Content\n function loadTab(loadTabParams, loadTabOptions) {\n // Load Tab Props\n const {\n url,\n content,\n el,\n component,\n componentUrl\n } = loadTabParams;\n // Component/Template Callbacks\n function resolve(contentEl) {\n router.allowPageChange = true;\n if (!contentEl) return;\n if (typeof contentEl === 'string') {\n $newTabEl.html(contentEl);\n } else {\n $newTabEl.html('');\n if (contentEl.f7Component) {\n contentEl.f7Component.mount(componentEl => {\n $newTabEl.append(componentEl);\n });\n } else {\n $newTabEl.append(contentEl);\n }\n }\n $newTabEl[0].f7RouterTabLoaded = true;\n onTabLoaded(contentEl);\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n if (content) {\n resolve(content);\n } else if (el) {\n resolve(el);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.tabComponentLoader({\n tabEl: $newTabEl[0],\n component,\n componentUrl,\n options: loadTabOptions,\n resolve,\n reject\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router.xhrRequest(url, loadTabOptions).then(tabContent => {\n resolve(tabContent);\n }).catch(() => {\n router.allowPageChange = true;\n });\n }\n }\n let hasContentLoadProp;\n 'url content component el componentUrl'.split(' ').forEach(tabLoadProp => {\n if (tabRoute[tabLoadProp]) {\n hasContentLoadProp = true;\n loadTab({\n [tabLoadProp]: tabRoute[tabLoadProp]\n }, options);\n }\n });\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadTab(resolveParams, extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (tabRoute.async) {\n tabRoute.async.call(router, {\n router,\n to: currentRoute,\n from: previousRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n app: router.app\n });\n } else if (tabRoute.asyncComponent) {\n asyncComponent(router, tabRoute.asyncComponent, asyncResolve, asyncReject);\n } else if (!hasContentLoadProp) {\n router.allowPageChange = true;\n }\n return router;\n}\nfunction tabRemove($oldTabEl, $newTabEl, tabRoute) {\n const router = this;\n let hasTabComponentChild;\n if ($oldTabEl[0]) {\n $oldTabEl[0].f7RouterTabLoaded = false;\n delete $oldTabEl[0].f7RouterTabLoaded;\n }\n $oldTabEl.children().each(tabChild => {\n if (tabChild.f7Component) {\n hasTabComponentChild = true;\n $(tabChild).trigger('tab:beforeremove', tabRoute);\n tabChild.f7Component.destroy();\n }\n });\n if (!hasTabComponentChild) {\n $oldTabEl.trigger('tab:beforeremove', tabRoute);\n }\n router.emit('tabBeforeRemove', $oldTabEl[0], $newTabEl[0], tabRoute);\n router.removeTabContent($oldTabEl[0], tabRoute);\n}\nexport { tabLoad, tabRemove };","import { extend, nextTick } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport asyncComponent from './async-component.js';\nfunction modalLoad(modalType, route, loadOptions, direction) {\n if (loadOptions === void 0) {\n loadOptions = {};\n }\n const router = this;\n const app = router.app;\n const isPanel = modalType === 'panel';\n const modalOrPanel = isPanel ? 'panel' : 'modal';\n const options = extend({\n animate: router.params.animate,\n browserHistory: true,\n history: true,\n on: {},\n once: {}\n }, loadOptions);\n const modalParams = extend({}, route.route[modalType]);\n const modalRoute = route.route;\n const routeCallback = (modal, name) => {\n const {\n on,\n once\n } = options;\n let callback;\n if (name === 'open') {\n callback = on.modalOpen || once.modalOpen || on.panelOpen || once.panelOpen;\n }\n if (name === 'close') {\n callback = on.modalClose || once.modalClose || on.panelClose || once.panelClose;\n }\n if (name === 'closed') {\n callback = on.modalClosed || once.modalClosed || on.panelClosed || once.panelClosed;\n }\n if (callback) callback(modal);\n };\n function onModalLoaded() {\n // Create Modal\n const modal = app[modalType].create(modalParams);\n modalRoute.modalInstance = modal;\n const hasEl = modal.el;\n function closeOnSwipeBack() {\n modal.close();\n }\n modal.on(`${modalOrPanel}Open`, () => {\n if (!hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(`${modalType.toLowerCase()}:init ${modalType.toLowerCase()}:mounted`, route, modal);\n router.emit(`${!isPanel ? 'modalInit' : ''} ${modalType}Init ${modalType}Mounted`, modal.el, route, modal);\n }\n router.once('swipeBackMove', closeOnSwipeBack);\n routeCallback(modal, 'open');\n });\n modal.on(`${modalOrPanel}Close`, () => {\n router.off('swipeBackMove', closeOnSwipeBack);\n if (!modal.closeByRouter) {\n router.back();\n }\n routeCallback(modal, 'close');\n });\n modal.on(`${modalOrPanel}Closed`, () => {\n modal.$el.trigger(`${modalType.toLowerCase()}:beforeremove`, route, modal);\n modal.emit(`${!isPanel ? 'modalBeforeRemove ' : ''}${modalType}BeforeRemove`, modal.el, route, modal);\n const modalComponent = modal.el.f7Component;\n routeCallback(modal, 'closed');\n if (modalComponent) {\n modalComponent.destroy();\n }\n nextTick(() => {\n if (modalComponent || modalParams.component || modalParams.asyncComponent || modalParams.async) {\n router.removeModal(modal.el);\n }\n modal.destroy();\n delete modal.route;\n delete modalRoute.modalInstance;\n });\n });\n if (options.route) {\n // Update Browser History\n if (router.params.browserHistory && options.browserHistory) {\n History.push(router.view.id, {\n url: options.route.url,\n modal: modalType\n }, (router.params.browserHistoryRoot || '') + router.params.browserHistorySeparator + options.route.url);\n }\n\n // Set Route\n if (options.route !== router.currentRoute) {\n modal.route = extend(options.route, {\n modal\n });\n router.currentRoute = modal.route;\n }\n\n // Update Router History\n if (options.history && !options.reloadCurrent) {\n router.history.push(options.route.url);\n router.saveHistory();\n }\n }\n if (hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(`${modalType.toLowerCase()}:init ${modalType.toLowerCase()}:mounted`, route, modal);\n router.emit(`${modalOrPanel}Init ${modalType}Init ${modalType}Mounted`, modal.el, route, modal);\n }\n\n // Open\n modal.open(options.animate === false || options.animate === true ? options.animate : undefined);\n }\n\n // Load Modal Content\n function loadModal(loadModalParams, loadModalOptions) {\n // Load Modal Props\n const {\n url,\n content,\n component,\n componentUrl\n } = loadModalParams;\n\n // Component/Template Callbacks\n function resolve(contentEl) {\n if (contentEl) {\n if (typeof contentEl === 'string') {\n modalParams.content = contentEl;\n } else if (contentEl.f7Component) {\n contentEl.f7Component.mount(componentEl => {\n modalParams.el = componentEl;\n app.$el.append(componentEl);\n });\n } else {\n modalParams.el = contentEl;\n }\n onModalLoaded();\n }\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n if (content) {\n resolve(content);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.modalComponentLoader({\n rootEl: app.el,\n component,\n componentUrl,\n options: loadModalOptions,\n resolve,\n reject\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router.xhrRequest(url, loadModalOptions).then(modalContent => {\n modalParams.content = modalContent;\n onModalLoaded();\n }).catch(() => {\n router.allowPageChange = true;\n });\n } else {\n onModalLoaded();\n }\n }\n let foundLoadProp;\n 'url content component el componentUrl template'.split(' ').forEach(modalLoadProp => {\n if (modalParams[modalLoadProp] && !foundLoadProp) {\n foundLoadProp = true;\n loadModal({\n [modalLoadProp]: modalParams[modalLoadProp]\n }, options);\n }\n });\n if (!foundLoadProp && modalType === 'actions') {\n onModalLoaded();\n }\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadModal(resolveParams, extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (modalParams.async) {\n modalParams.async.call(router, {\n router,\n to: options.route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction,\n app\n });\n }\n if (modalParams.asyncComponent) {\n asyncComponent(router, modalParams.asyncComponent, asyncResolve, asyncReject);\n }\n return router;\n}\nfunction modalRemove(modal) {\n extend(modal, {\n closeByRouter: true\n });\n modal.close();\n}\nexport { modalLoad, modalRemove };","import $ from '../../shared/dom7.js';\nimport appRouterCheck from './app-router-check.js';\nfunction clearPreviousPages(router) {\n appRouterCheck(router, 'clearPreviousPages');\n const app = router.app;\n const dynamicNavbar = router.dynamicNavbar;\n const $pagesToRemove = router.$el.children('.page').filter(pageInView => {\n if (router.currentRoute && (router.currentRoute.modal || router.currentRoute.panel)) return true;\n return pageInView !== router.currentPageEl;\n });\n $pagesToRemove.each(pageEl => {\n const $oldPageEl = $(pageEl);\n const $oldNavbarEl = $(app.navbar.getElByPage($oldPageEl));\n // Page remove event\n router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarEl, 'previous', undefined, {});\n router.removePage($oldPageEl);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n });\n}\nfunction clearPreviousHistory() {\n const router = this;\n appRouterCheck(router, 'clearPreviousHistory');\n const url = router.history[router.history.length - 1];\n clearPreviousPages(router);\n router.history = [url];\n router.view.history = [url];\n router.saveHistory();\n}\nexport { clearPreviousHistory }; // eslint-disable-line","import Router from './router-class.js';\nexport default {\n name: 'router',\n static: {\n Router\n },\n instance: {\n cache: {\n xhr: [],\n templates: [],\n components: []\n }\n },\n create() {\n const instance = this;\n if (instance.app) {\n // View Router\n if (instance.params.router) {\n instance.router = new Router(instance.app, instance);\n }\n } else {\n // App Router\n instance.router = new Router(instance);\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nfunction resizableView(view) {\n const app = view.app;\n const support = getSupport();\n if (view.resizableInitialized) return;\n extend(view, {\n resizable: true,\n resizableWidth: null,\n resizableInitialized: true\n });\n const $htmlEl = $('html');\n const {\n $el\n } = view;\n if (!$el) return;\n let $resizeHandlerEl;\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let touchesDiff;\n let width;\n let minWidth;\n let maxWidth;\n function transformCSSWidth(v) {\n if (!v) return null;\n if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {\n return parseInt(v, 10) / 100 * app.width;\n }\n const newV = parseInt(v, 10);\n if (Number.isNaN(newV)) return null;\n return newV;\n }\n function isResizable() {\n return view.resizable && $el.hasClass('view-resizable') && $el.hasClass('view-master-detail');\n }\n function handleTouchStart(e) {\n if (!isResizable()) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isMoved = false;\n isTouched = true;\n const $pageMasterEl = $el.children('.page-master');\n minWidth = transformCSSWidth($pageMasterEl.css('min-width'));\n maxWidth = transformCSSWidth($pageMasterEl.css('max-width'));\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n e.f7PreventSwipePanel = true;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n if (!isMoved) {\n width = $resizeHandlerEl[0].offsetLeft + $resizeHandlerEl[0].offsetWidth;\n $el.addClass('view-resizing');\n $htmlEl.css('cursor', 'col-resize');\n }\n isMoved = true;\n e.preventDefault();\n touchesDiff = pageX - touchesStart.x;\n let newWidth = width + touchesDiff;\n if (minWidth && !Number.isNaN(minWidth)) {\n newWidth = Math.max(newWidth, minWidth);\n }\n if (maxWidth && !Number.isNaN(maxWidth)) {\n newWidth = Math.min(newWidth, maxWidth);\n }\n newWidth = Math.min(Math.max(newWidth, 0), app.width);\n view.resizableWidth = newWidth;\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${newWidth}px`);\n $el.trigger('view:resize', newWidth);\n view.emit('local::resize viewResize', view, newWidth);\n }\n function handleTouchEnd() {\n $('html').css('cursor', '');\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n $el.removeClass('view-resizing');\n }\n function handleResize() {\n if (!view.resizableWidth) return;\n minWidth = transformCSSWidth($resizeHandlerEl.css('min-width'));\n maxWidth = transformCSSWidth($resizeHandlerEl.css('max-width'));\n if (minWidth && !Number.isNaN(minWidth) && view.resizableWidth < minWidth) {\n view.resizableWidth = Math.max(view.resizableWidth, minWidth);\n }\n if (maxWidth && !Number.isNaN(maxWidth) && view.resizableWidth > maxWidth) {\n view.resizableWidth = Math.min(view.resizableWidth, maxWidth);\n }\n view.resizableWidth = Math.min(Math.max(view.resizableWidth, 0), app.width);\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n }\n $resizeHandlerEl = view.$el.children('.view-resize-handler');\n if (!$resizeHandlerEl.length) {\n view.$el.append('
');\n $resizeHandlerEl = view.$el.children('.view-resize-handler');\n }\n view.$resizeHandlerEl = $resizeHandlerEl;\n $el.addClass('view-resizable');\n\n // Add Events\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n view.$el.on(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n view.on('beforeOpen', handleResize);\n view.once('viewDestroy', () => {\n $el.removeClass('view-resizable');\n view.$resizeHandlerEl.remove();\n view.$el.off(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n view.off('beforeOpen', handleResize);\n });\n}\nexport default resizableView;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Router from '../../modules/router/router.js';\nimport Framework7Class from '../../shared/class.js';\nimport resizableView from './resizable-view.js';\nclass View extends Framework7Class {\n constructor(app, el, viewParams) {\n if (viewParams === void 0) {\n viewParams = {};\n }\n super(viewParams, [app]);\n const view = this;\n const ssr = view.params.routerId;\n const defaults = {\n routes: [],\n routesAdd: []\n };\n if (!ssr) {\n const $el = $(el);\n if (!$el.length) {\n let message = \"Framework7: can't create a View instance because \";\n message += typeof el === 'string' ? `the selector \"${el}\" didn't match any element` : 'el must be an HTMLElement or Dom7 object';\n throw new Error(message);\n }\n }\n\n // Default View params\n view.params = extend({\n el\n }, defaults, app.params.view, viewParams);\n\n // Routes\n if (view.params.routes.length > 0) {\n view.routes = view.params.routes;\n } else {\n view.routes = [].concat(app.routes, view.params.routesAdd);\n }\n\n // View Props\n extend(false, view, {\n app,\n name: view.params.name,\n main: view.params.main,\n history: [],\n scrollHistory: {}\n });\n\n // Install Modules\n view.useModules();\n\n // Add to app\n app.views.push(view);\n if (view.main) {\n app.views.main = view;\n }\n if (view.name) {\n app.views[view.name] = view;\n }\n\n // Index\n view.index = app.views.indexOf(view);\n\n // View ID\n let viewId;\n if (view.name) {\n viewId = `view_${view.name}`;\n } else if (view.main) {\n viewId = 'view_main';\n } else {\n viewId = `view_${view.index}`;\n }\n view.id = viewId;\n if (!view.params.init) {\n return view;\n }\n // Init View\n if (app.initialized) {\n view.init();\n } else {\n app.on('init', () => {\n view.init();\n });\n }\n return view;\n }\n destroy() {\n let view = this;\n const app = view.app;\n view.$el.trigger('view:beforedestroy');\n view.emit('local::beforeDestroy viewBeforeDestroy', view);\n app.off('resize', view.checkMasterDetailBreakpoint);\n if (view.main) {\n app.views.main = null;\n delete app.views.main;\n } else if (view.name) {\n app.views[view.name] = null;\n delete app.views[view.name];\n }\n view.$el[0].f7View = null;\n delete view.$el[0].f7View;\n app.views.splice(app.views.indexOf(view), 1);\n\n // Destroy Router\n if (view.params.router && view.router) {\n view.router.destroy();\n }\n view.emit('local::destroy viewDestroy', view);\n\n // Delete props & methods\n Object.keys(view).forEach(viewProp => {\n view[viewProp] = null;\n delete view[viewProp];\n });\n view = null;\n }\n checkMasterDetailBreakpoint(force) {\n const view = this;\n const app = view.app;\n const wasMasterDetail = view.$el.hasClass('view-master-detail');\n const isMasterDetail = app.width >= view.params.masterDetailBreakpoint && view.$el.children('.page-master').length;\n if (typeof force === 'undefined' && isMasterDetail || force === true) {\n view.$el.addClass('view-master-detail');\n if (!wasMasterDetail) {\n view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n view.$el.trigger('view:masterDetailBreakpoint');\n }\n } else {\n view.$el.removeClass('view-master-detail');\n if (wasMasterDetail) {\n view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n view.$el.trigger('view:masterDetailBreakpoint');\n }\n }\n }\n initMasterDetail() {\n const view = this;\n const app = view.app;\n view.checkMasterDetailBreakpoint = view.checkMasterDetailBreakpoint.bind(view);\n view.checkMasterDetailBreakpoint();\n if (view.params.masterDetailResizable) {\n resizableView(view);\n }\n app.on('resize', view.checkMasterDetailBreakpoint);\n }\n mount(viewEl) {\n const view = this;\n const app = view.app;\n const el = view.params.el || viewEl;\n const $el = $(el);\n\n // Selector\n let selector;\n if (typeof el === 'string') selector = el;else {\n // Supposed to be HTMLElement or Dom7\n selector = ($el.attr('id') ? `#${$el.attr('id')}` : '') + ($el.attr('class') ? `.${$el.attr('class').replace(/ /g, '.').replace('.active', '')}` : '');\n }\n\n // DynamicNavbar\n let $navbarsEl;\n if (app.theme === 'ios' && view.params.iosDynamicNavbar) {\n $navbarsEl = $el.children('.navbars').eq(0);\n if ($navbarsEl.length === 0) {\n $navbarsEl = $('
');\n }\n }\n extend(view, {\n $el,\n el: $el[0],\n main: view.main || $el.hasClass('view-main'),\n $navbarsEl,\n navbarsEl: $navbarsEl ? $navbarsEl[0] : undefined,\n selector\n });\n if (view.main) {\n app.views.main = view;\n }\n\n // Save in DOM\n if ($el && $el[0]) {\n $el[0].f7View = view;\n }\n view.emit('local::mount viewMount', view);\n }\n init(viewEl) {\n const view = this;\n view.mount(viewEl);\n if (view.params.router) {\n if (view.params.masterDetailBreakpoint > 0) {\n view.initMasterDetail();\n }\n if (view.params.initRouterOnTabShow && view.$el.hasClass('tab') && !view.$el.hasClass('tab-active')) {\n view.$el.once('tab:show', () => {\n view.router.init();\n });\n } else {\n view.router.init();\n }\n view.$el.trigger('view:init');\n view.emit('local::init viewInit', view);\n }\n }\n}\n\n// Use Router\nView.use(Router);\nexport default View;","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport ViewClass from '../../components/view/view-class.js';\nfunction initClicks(app) {\n function handleClicks(e) {\n const window = getWindow();\n const $clickedEl = $(e.target);\n const $clickedLinkEl = $clickedEl.closest('a');\n const isLink = $clickedLinkEl.length > 0;\n const url = isLink && $clickedLinkEl.attr('href');\n\n // Check if link is external\n if (isLink) {\n if ($clickedLinkEl.is(app.params.clicks.externalLinks) ||\n // eslint-disable-next-line\n url && url.indexOf('javascript:') >= 0) {\n const target = $clickedLinkEl.attr('target');\n if (url && window.cordova && window.cordova.InAppBrowser && (target === '_system' || target === '_blank')) {\n e.preventDefault();\n window.cordova.InAppBrowser.open(url, target);\n } else if (url && window.Capacitor && window.Capacitor.Plugins && window.Capacitor.Plugins.Browser && (target === '_system' || target === '_blank')) {\n e.preventDefault();\n window.Capacitor.Plugins.Browser.open({\n url\n });\n }\n return;\n }\n }\n\n // Modules Clicks\n Object.keys(app.modules).forEach(moduleName => {\n const moduleClicks = app.modules[moduleName].clicks;\n if (!moduleClicks) return;\n if (e.preventF7Router) return;\n Object.keys(moduleClicks).forEach(clickSelector => {\n const matchingClickedElement = $clickedEl.closest(clickSelector).eq(0);\n if (matchingClickedElement.length > 0) {\n moduleClicks[clickSelector].call(app, matchingClickedElement, matchingClickedElement.dataset(), e);\n }\n });\n });\n\n // Load Page\n let clickedLinkData = {};\n if (isLink) {\n e.preventDefault();\n clickedLinkData = $clickedLinkEl.dataset();\n }\n clickedLinkData.clickedEl = $clickedLinkEl[0];\n\n // Prevent Router\n if (e.preventF7Router) return;\n if ($clickedLinkEl.hasClass('prevent-router') || $clickedLinkEl.hasClass('router-prevent')) return;\n const validUrl = url && url.length > 0 && url[0] !== '#';\n if (validUrl || $clickedLinkEl.hasClass('back')) {\n let view;\n if (clickedLinkData.view && clickedLinkData.view === 'current') {\n view = app.views.current;\n } else if (clickedLinkData.view) {\n view = $(clickedLinkData.view)[0].f7View;\n } else {\n view = $clickedEl.parents('.view')[0] && $clickedEl.parents('.view')[0].f7View;\n if (view && view.params.linksView && (!$clickedLinkEl.hasClass('back') || $clickedLinkEl.hasClass('back') && view.router.history.length === 1)) {\n if (typeof view.params.linksView === 'string') view = $(view.params.linksView)[0].f7View;else if (view.params.linksView instanceof ViewClass) view = view.params.linksView;\n }\n }\n if (!view) {\n if (app.views.main) view = app.views.main;\n }\n if (!view || !view.router) return;\n if ($clickedLinkEl[0].f7RouteProps) {\n clickedLinkData.props = $clickedLinkEl[0].f7RouteProps;\n }\n if ($clickedLinkEl.hasClass('back')) view.router.back(url, clickedLinkData);else view.router.navigate(url, clickedLinkData);\n }\n }\n app.on('click', handleClicks);\n}\nexport default {\n name: 'clicks',\n params: {\n clicks: {\n // External Links\n externalLinks: '.external'\n }\n },\n on: {\n init() {\n const app = this;\n initClicks(app);\n }\n }\n};","import History from '../../shared/history.js';\nexport default {\n name: 'history',\n static: {\n history: History\n },\n on: {\n init() {\n History.init(this);\n }\n }\n};","import { getWindow } from 'ssr-window';\nimport { extend } from '../../shared/utils.js';\nconst SW = {\n registrations: [],\n register(path, scope) {\n const app = this;\n const window = getWindow();\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n return new Promise((resolve, reject) => {\n app.serviceWorker.container.register(path, scope ? {\n scope\n } : {}).then(reg => {\n SW.registrations.push(reg);\n app.emit('serviceWorkerRegisterSuccess', reg);\n resolve(reg);\n }).catch(error => {\n app.emit('serviceWorkerRegisterError', error);\n reject(error);\n });\n });\n },\n unregister(registration) {\n const app = this;\n const window = getWindow();\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n let registrations;\n if (!registration) registrations = SW.registrations;else if (Array.isArray(registration)) registrations = registration;else registrations = [registration];\n return Promise.all(registrations.map(reg => new Promise((resolve, reject) => {\n reg.unregister().then(() => {\n if (SW.registrations.indexOf(reg) >= 0) {\n SW.registrations.splice(SW.registrations.indexOf(reg), 1);\n }\n app.emit('serviceWorkerUnregisterSuccess', reg);\n resolve();\n }).catch(error => {\n app.emit('serviceWorkerUnregisterError', reg, error);\n reject(error);\n });\n })));\n }\n};\nexport default {\n name: 'sw',\n params: {\n serviceWorker: {\n path: undefined,\n scope: undefined\n }\n },\n create() {\n const app = this;\n const window = getWindow();\n extend(app, {\n serviceWorker: {\n container: 'serviceWorker' in window.navigator ? window.navigator.serviceWorker : undefined,\n registrations: SW.registrations,\n register: SW.register.bind(app),\n unregister: SW.unregister.bind(app)\n }\n });\n },\n on: {\n init() {\n const window = getWindow();\n if (!('serviceWorker' in window.navigator)) return;\n const app = this;\n if (app.device.cordova || window.Capacitor && window.Capacitor.isNative) return;\n if (!app.serviceWorker.container) return;\n const paths = app.params.serviceWorker.path;\n const scope = app.params.serviceWorker.scope;\n if (!paths || Array.isArray(paths) && !paths.length) return;\n const toRegister = Array.isArray(paths) ? paths : [paths];\n toRegister.forEach(path => {\n app.serviceWorker.register(path, scope);\n });\n }\n }\n};","/* eslint-disable no-underscore-dangle */\nimport { extend } from '../../shared/utils.js';\nfunction createStore(storeParams) {\n if (storeParams === void 0) {\n storeParams = {};\n }\n const store = {\n __store: true\n };\n const originalState = {\n ...(storeParams.state || {})\n };\n const actions = {\n ...(storeParams.actions || {})\n };\n const getters = {\n ...(storeParams.getters || {})\n };\n const state = extend({}, originalState);\n let propsQueue = [];\n const gettersDependencies = {};\n const gettersCallbacks = {};\n Object.keys(getters).forEach(getterKey => {\n gettersDependencies[getterKey] = [];\n gettersCallbacks[getterKey] = [];\n });\n const getGetterValue = getterKey => {\n return getters[getterKey]({\n state: store.state\n });\n };\n const addGetterDependencies = (getterKey, deps) => {\n if (!gettersDependencies[getterKey]) gettersDependencies[getterKey] = [];\n deps.forEach(dep => {\n if (gettersDependencies[getterKey].indexOf(dep) < 0) {\n gettersDependencies[getterKey].push(dep);\n }\n });\n };\n const addGetterCallback = (getterKey, callback) => {\n if (!gettersCallbacks[getterKey]) gettersCallbacks[getterKey] = [];\n gettersCallbacks[getterKey].push(callback);\n };\n const runGetterCallbacks = stateKey => {\n const keys = Object.keys(gettersDependencies).filter(getterKey => {\n return gettersDependencies[getterKey].indexOf(stateKey) >= 0;\n });\n keys.forEach(getterKey => {\n if (!gettersCallbacks[getterKey] || !gettersCallbacks[getterKey].length) return;\n gettersCallbacks[getterKey].forEach(callback => {\n callback(getGetterValue(getterKey));\n });\n });\n };\n const removeGetterCallback = callback => {\n Object.keys(gettersCallbacks).forEach(stateKey => {\n const callbacks = gettersCallbacks[stateKey];\n if (callbacks.indexOf(callback) >= 0) {\n callbacks.splice(callbacks.indexOf(callback), 1);\n }\n });\n };\n\n // eslint-disable-next-line\n store.__removeCallback = callback => {\n removeGetterCallback(callback);\n };\n const getterValue = function (getterKey, addCallback) {\n if (addCallback === void 0) {\n addCallback = true;\n }\n if (getterKey === 'constructor') return undefined;\n propsQueue = [];\n const value = getGetterValue(getterKey);\n addGetterDependencies(getterKey, propsQueue);\n const onUpdated = callback => {\n addGetterCallback(getterKey, callback);\n };\n const obj = {\n value,\n onUpdated\n };\n if (!addCallback) {\n return obj;\n }\n const callback = v => {\n obj.value = v;\n };\n obj.__callback = callback;\n addGetterCallback(getterKey, callback);\n // eslint-disable-next-line\n return obj;\n };\n store.state = new Proxy(state, {\n set: (target, prop, value) => {\n target[prop] = value;\n runGetterCallbacks(prop);\n return true;\n },\n get: (target, prop) => {\n propsQueue.push(prop);\n return target[prop];\n }\n });\n store.getters = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, true);\n }\n });\n store._gettersPlain = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, false);\n }\n });\n store.dispatch = (actionName, data) => {\n return new Promise((resolve, reject) => {\n if (!actions[actionName]) {\n reject();\n throw new Error(`Framework7: Store action \"${actionName}\" is not found`);\n }\n const result = actions[actionName]({\n state: store.state,\n dispatch: store.dispatch\n }, data);\n resolve(result);\n });\n };\n return store;\n}\nexport default createStore;","import createStore from './create-store.js';\nexport { createStore };\nexport default {\n name: 'store',\n static: {\n createStore\n },\n proto: {\n createStore\n }\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nconst isCapacitor = () => {\n const window = getWindow();\n return window.Capacitor && window.Capacitor.isNative && window.Capacitor.Plugins && window.Capacitor.Plugins.StatusBar;\n};\nconst Statusbar = {\n hide() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.hide();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.hide();\n }\n },\n show() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.show();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.show();\n }\n },\n onClick() {\n const app = this;\n let pageContent;\n if ($('.popup.modal-in').length > 0) {\n // Check for opened popup\n pageContent = $('.popup.modal-in').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else if ($('.panel.panel-in').length > 0) {\n // Check for opened panel\n pageContent = $('.panel.panel-in').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else if ($('.views > .view.tab-active').length > 0) {\n // View in tab bar app layout\n pageContent = $('.views > .view.tab-active').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else if ($('.views').length > 0) {\n pageContent = $('.views').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else {\n pageContent = app.$el.children('.view').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n }\n if (pageContent && pageContent.length > 0) {\n // Check for tab\n if (pageContent.hasClass('tab')) {\n pageContent = pageContent.parent('.tabs').children('.page-content.tab-active');\n }\n if (pageContent.length > 0) pageContent.scrollTop(0, 300);\n }\n },\n setTextColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n if (color === 'white') {\n window.StatusBar.styleLightContent();\n } else {\n window.StatusBar.styleDefault();\n }\n }\n if (isCapacitor()) {\n if (color === 'white') {\n window.Capacitor.Plugins.StatusBar.setStyle({\n style: 'DARK'\n });\n } else {\n window.Capacitor.Plugins.StatusBar.setStyle({\n style: 'LIGHT'\n });\n }\n }\n },\n setBackgroundColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.backgroundColorByHexString(color);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setBackgroundColor({\n color\n });\n }\n },\n isVisible() {\n const window = getWindow();\n const device = getDevice();\n return new Promise(resolve => {\n if (device.cordova && window.StatusBar) {\n resolve(window.StatusBar.isVisible);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.getInfo().then(info => {\n resolve(info.visible);\n });\n }\n resolve(false);\n });\n },\n overlaysWebView(overlays) {\n if (overlays === void 0) {\n overlays = true;\n }\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.overlaysWebView(overlays);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setOverlaysWebView({\n overlay: overlays\n });\n }\n },\n init() {\n const app = this;\n const window = getWindow();\n const device = getDevice();\n const params = app.params.statusbar;\n if (!params.enabled) return;\n const isCordova = device.cordova && window.StatusBar;\n const isCap = isCapacitor();\n if (isCordova || isCap) {\n if (params.scrollTopOnClick) {\n $(window).on('statusTap', Statusbar.onClick.bind(app));\n }\n if (device.ios) {\n if (params.iosOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.iosTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n if (device.android) {\n if (params.androidOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.androidTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n }\n if (params.iosBackgroundColor && device.ios) {\n Statusbar.setBackgroundColor(params.iosBackgroundColor);\n }\n if (params.androidBackgroundColor && device.android) {\n Statusbar.setBackgroundColor(params.androidBackgroundColor);\n }\n }\n};\nexport default {\n name: 'statusbar',\n params: {\n statusbar: {\n enabled: true,\n scrollTopOnClick: true,\n iosOverlaysWebView: true,\n iosTextColor: 'black',\n iosBackgroundColor: null,\n androidOverlaysWebView: false,\n androidTextColor: 'black',\n androidBackgroundColor: null\n }\n },\n create() {\n const app = this;\n bindMethods(app, {\n statusbar: Statusbar\n });\n },\n on: {\n init() {\n const app = this;\n Statusbar.init.call(app);\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport View from './view-class.js';\nfunction getCurrentView(app) {\n const $popoverView = $('.popover.modal-in .view');\n const $popupView = $('.popup.modal-in .view');\n const $panelView = $('.panel.panel-in .view');\n let $viewsEl = $('.views');\n if ($viewsEl.length === 0) $viewsEl = app.$el;\n // Find active view as tab\n let $viewEl = $viewsEl.children('.view');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view');\n }\n // Propably in tabs or split view\n if ($viewEl.length > 1) {\n if ($viewEl.hasClass('tab')) {\n // Tabs\n $viewEl = $viewsEl.children('.view.tab-active');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view.tab-active');\n }\n } else {\n // Split View, leave appView intact\n }\n }\n if ($popoverView.length > 0 && $popoverView[0].f7View) return $popoverView[0].f7View;\n if ($popupView.length > 0 && $popupView[0].f7View) return $popupView[0].f7View;\n if ($panelView.length > 0 && $panelView[0].f7View) return $panelView[0].f7View;\n if ($viewEl.length > 0) {\n if ($viewEl.length === 1 && $viewEl[0].f7View) return $viewEl[0].f7View;\n if ($viewEl.length > 1) {\n return app.views.main;\n }\n }\n return undefined;\n}\nexport default {\n name: 'view',\n params: {\n view: {\n init: true,\n initRouterOnTabShow: false,\n name: undefined,\n main: false,\n router: true,\n linksView: null,\n xhrCache: true,\n xhrCacheIgnore: [],\n xhrCacheIgnoreGetParameters: false,\n xhrCacheDuration: 1000 * 60 * 10,\n // Ten minutes\n componentCache: true,\n preloadPreviousPage: true,\n allowDuplicateUrls: false,\n reloadPages: false,\n reloadDetail: false,\n masterDetailBreakpoint: 0,\n masterDetailResizable: false,\n removeElements: true,\n removeElementsWithTimeout: false,\n removeElementsTimeout: 0,\n restoreScrollTopOnBack: true,\n unloadTabContent: true,\n passRouteQueryToRequest: true,\n passRouteParamsToRequest: false,\n loadInitialPage: true,\n // Swipe Back\n iosSwipeBack: true,\n iosSwipeBackAnimateShadow: true,\n iosSwipeBackAnimateOpacity: true,\n iosSwipeBackActiveArea: 30,\n iosSwipeBackThreshold: 0,\n mdSwipeBack: false,\n mdSwipeBackAnimateShadow: true,\n mdSwipeBackAnimateOpacity: false,\n mdSwipeBackActiveArea: 30,\n mdSwipeBackThreshold: 0,\n // Push State\n browserHistory: false,\n browserHistoryRoot: undefined,\n browserHistoryAnimate: true,\n browserHistoryAnimateOnLoad: false,\n browserHistorySeparator: '#!',\n browserHistoryOnLoad: true,\n browserHistoryInitialMatch: false,\n browserHistoryStoreHistory: true,\n browserHistoryTabs: 'replace',\n // Animate Pages\n animate: true,\n // iOS Dynamic Navbar\n iosDynamicNavbar: true,\n // Animate iOS Navbar Back Icon\n iosAnimateNavbarBackIcon: true,\n // Delays\n iosPageLoadDelay: 0,\n mdPageLoadDelay: 0,\n // Routes hooks\n routesBeforeEnter: null,\n routesBeforeLeave: null\n }\n },\n static: {\n View\n },\n create() {\n const app = this;\n extend(app, {\n views: extend([], {\n create(el, params) {\n return new View(app, el, params);\n },\n get(viewEl) {\n const $viewEl = $(viewEl);\n if ($viewEl.length && $viewEl[0].f7View) return $viewEl[0].f7View;\n return undefined;\n }\n })\n });\n Object.defineProperty(app.views, 'current', {\n enumerable: true,\n configurable: true,\n get() {\n return getCurrentView(app);\n }\n });\n // Alias\n app.view = app.views;\n },\n on: {\n init() {\n const app = this;\n $('.view-init').each(viewEl => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n 'modalOpen panelOpen': function onOpen(instance) {\n const app = this;\n instance.$el.find('.view-init').each(viewEl => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n 'modalBeforeDestroy panelBeforeDestroy': function onClose(instance) {\n if (!instance || !instance.$el) return;\n instance.$el.find('.view-init').each(viewEl => {\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n });\n }\n },\n vnode: {\n 'view-init': {\n insert(vnode) {\n const app = this;\n const viewEl = vnode.elm;\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n },\n destroy(vnode) {\n const viewEl = vnode.elm;\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nconst Navbar = {\n size(el) {\n const app = this;\n let $el = $(el);\n if ($el.hasClass('navbars')) {\n $el = $el.children('.navbar').each(navbarEl => {\n app.navbar.size(navbarEl);\n });\n return;\n }\n const $innerEl = $el.children('.navbar-inner');\n if (!$innerEl.length) return;\n const needCenterTitle = $innerEl.hasClass('navbar-inner-centered-title') || app.params.navbar[`${app.theme}CenterTitle`];\n const needLeftTitle = app.theme === 'ios' && !app.params.navbar[`${app.theme}CenterTitle`];\n if (!needCenterTitle && !needLeftTitle) return;\n if ($el.parents('.tab:not(.tab-active)').length > 0 || $el.parents('.popup:not(.modal-in)').length > 0) {\n return;\n }\n if (app.theme !== 'ios' && app.params.navbar[`${app.theme}CenterTitle`]) {\n $innerEl.addClass('navbar-inner-centered-title');\n }\n if (app.theme === 'ios' && !app.params.navbar.iosCenterTitle) {\n $innerEl.addClass('navbar-inner-left-title');\n }\n const $viewEl = $el.parents('.view').eq(0);\n const left = app.rtl ? $innerEl.children('.right') : $innerEl.children('.left');\n const right = app.rtl ? $innerEl.children('.left') : $innerEl.children('.right');\n const title = $innerEl.children('.title');\n const subnavbar = $innerEl.children('.subnavbar');\n const noLeft = left.length === 0;\n const noRight = right.length === 0;\n const leftWidth = noLeft ? 0 : left.outerWidth(true);\n const rightWidth = noRight ? 0 : right.outerWidth(true);\n const titleWidth = title.outerWidth(true);\n const navbarStyles = $innerEl.styles();\n const navbarWidth = $innerEl[0].offsetWidth;\n const navbarInnerWidth = navbarWidth - parseInt(navbarStyles.paddingLeft, 10) - parseInt(navbarStyles.paddingRight, 10);\n const isPrevious = $el.hasClass('navbar-previous');\n const sliding = $innerEl.hasClass('sliding');\n let router;\n let dynamicNavbar;\n if ($viewEl.length > 0 && $viewEl[0].f7View) {\n router = $viewEl[0].f7View.router;\n dynamicNavbar = router && router.dynamicNavbar;\n }\n let currLeft;\n let diff;\n if (noRight) {\n currLeft = navbarInnerWidth - titleWidth;\n }\n if (noLeft) {\n currLeft = 0;\n }\n if (!noLeft && !noRight) {\n currLeft = (navbarInnerWidth - rightWidth - titleWidth + leftWidth) / 2;\n }\n let requiredLeft = (navbarInnerWidth - titleWidth) / 2;\n if (navbarInnerWidth - leftWidth - rightWidth > titleWidth) {\n if (requiredLeft < leftWidth) {\n requiredLeft = leftWidth;\n }\n if (requiredLeft + titleWidth > navbarInnerWidth - rightWidth) {\n requiredLeft = navbarInnerWidth - rightWidth - titleWidth;\n }\n diff = requiredLeft - currLeft;\n } else {\n diff = 0;\n }\n\n // RTL inverter\n const inverter = app.rtl ? -1 : 1;\n if (dynamicNavbar && app.theme === 'ios') {\n if (title.hasClass('sliding') || title.length > 0 && sliding) {\n let titleLeftOffset = -(currLeft + diff) * inverter;\n const titleRightOffset = (navbarInnerWidth - currLeft - diff - titleWidth) * inverter;\n if (isPrevious) {\n if (router && router.params.iosAnimateNavbarBackIcon) {\n const activeNavbarBackLink = $el.parent().find('.navbar-current').children('.left.sliding').find('.back .icon ~ span');\n if (activeNavbarBackLink.length > 0) {\n titleLeftOffset += activeNavbarBackLink[0].offsetLeft;\n }\n }\n }\n title[0].f7NavbarLeftOffset = titleLeftOffset;\n title[0].f7NavbarRightOffset = titleRightOffset;\n }\n if (!noLeft && (left.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n left[0].f7NavbarLeftOffset = -(navbarInnerWidth - left[0].offsetWidth) / 2 * inverter;\n left[0].f7NavbarRightOffset = leftWidth * inverter;\n } else {\n left[0].f7NavbarLeftOffset = -leftWidth;\n left[0].f7NavbarRightOffset = (navbarInnerWidth - left[0].offsetWidth) / 2;\n if (router && router.params.iosAnimateNavbarBackIcon && left.find('.back .icon').length > 0) {\n if (left.find('.back .icon ~ span').length) {\n const leftOffset = left[0].f7NavbarLeftOffset;\n const rightOffset = left[0].f7NavbarRightOffset;\n left[0].f7NavbarLeftOffset = 0;\n left[0].f7NavbarRightOffset = 0;\n left.find('.back .icon ~ span')[0].f7NavbarLeftOffset = leftOffset;\n left.find('.back .icon ~ span')[0].f7NavbarRightOffset = rightOffset - left.find('.back .icon')[0].offsetWidth;\n }\n }\n }\n }\n if (!noRight && (right.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n right[0].f7NavbarLeftOffset = -rightWidth * inverter;\n right[0].f7NavbarRightOffset = (navbarInnerWidth - right[0].offsetWidth) / 2 * inverter;\n } else {\n right[0].f7NavbarLeftOffset = -(navbarInnerWidth - right[0].offsetWidth) / 2;\n right[0].f7NavbarRightOffset = rightWidth;\n }\n }\n if (subnavbar.length && (subnavbar.hasClass('sliding') || sliding)) {\n subnavbar[0].f7NavbarLeftOffset = app.rtl ? subnavbar[0].offsetWidth : -subnavbar[0].offsetWidth;\n subnavbar[0].f7NavbarRightOffset = -subnavbar[0].f7NavbarLeftOffset;\n }\n }\n\n // Center title\n if (needCenterTitle) {\n let titleLeft = diff;\n if (app.rtl && noLeft && noRight && title.length > 0) titleLeft = -titleLeft;\n title.css({\n left: `${titleLeft}px`\n });\n }\n },\n hide(el, animate, hideStatusbar, hideOnlyCurrent) {\n if (animate === void 0) {\n animate = true;\n }\n if (hideStatusbar === void 0) {\n hideStatusbar = false;\n }\n if (hideOnlyCurrent === void 0) {\n hideOnlyCurrent = false;\n }\n const app = this;\n let $el = $(el);\n const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;\n if (isDynamic) $el = $el.parents('.navbars');\n if (!$el.length) return;\n if ($el.hasClass('navbar-hidden')) return;\n let className = `navbar-hidden${animate ? ' navbar-transitioning' : ''}`;\n const currentIsLarge = isDynamic ? $el.find('.navbar-current .title-large').length : $el.find('.title-large').length;\n if (currentIsLarge) {\n className += ' navbar-large-hidden';\n }\n if (hideStatusbar) {\n className += ' navbar-hidden-statusbar';\n }\n $el.transitionEnd(() => {\n $el.removeClass('navbar-transitioning');\n });\n $el.addClass(className);\n if (isDynamic) {\n $el.children('.navbar').each(subEl => {\n $(subEl).trigger('navbar:hide');\n app.emit('navbarHide', subEl);\n });\n } else {\n $el.trigger('navbar:hide');\n app.emit('navbarHide', $el[0]);\n }\n },\n show(el, animate, hideOnlyCurrent) {\n if (el === void 0) {\n el = '.navbar-hidden';\n }\n if (animate === void 0) {\n animate = true;\n }\n if (hideOnlyCurrent === void 0) {\n hideOnlyCurrent = false;\n }\n const app = this;\n let $el = $(el);\n const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;\n if (isDynamic) $el = $el.parents('.navbars');\n if (!$el.length) return;\n if (!$el.hasClass('navbar-hidden')) return;\n if (animate) {\n $el.addClass('navbar-transitioning');\n $el.transitionEnd(() => {\n $el.removeClass('navbar-transitioning');\n });\n }\n $el.removeClass('navbar-hidden navbar-large-hidden navbar-hidden-statusbar');\n if (isDynamic) {\n $el.children('.navbar').each(subEl => {\n $(subEl).trigger('navbar:show');\n app.emit('navbarShow', subEl);\n });\n } else {\n $el.trigger('navbar:show');\n app.emit('navbarShow', $el[0]);\n }\n },\n getElByPage(page) {\n let $pageEl;\n let $navbarEl;\n let pageData;\n if (page.$navbarEl || page.$el) {\n pageData = page;\n $pageEl = page.$el;\n } else {\n $pageEl = $(page);\n if ($pageEl.length > 0) pageData = $pageEl[0].f7Page;\n }\n if (pageData && pageData.$navbarEl && pageData.$navbarEl.length > 0) {\n $navbarEl = pageData.$navbarEl;\n } else if ($pageEl) {\n $navbarEl = $pageEl.children('.navbar');\n }\n if (!$navbarEl || $navbarEl && $navbarEl.length === 0) return undefined;\n return $navbarEl[0];\n },\n getPageByEl(navbarEl) {\n const $navbarEl = $(navbarEl);\n if ($navbarEl.parents('.page').length) {\n return $navbarEl.parents('.page')[0];\n }\n let pageEl;\n $navbarEl.parents('.view').find('.page').each(el => {\n if (el && el.f7Page && el.f7Page.navbarEl && $navbarEl[0] === el.f7Page.navbarEl) {\n pageEl = el;\n }\n });\n return pageEl;\n },\n collapseLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n $navbarEl.addClass('navbar-large-collapsed');\n $pageEl.eq(0).addClass('page-with-navbar-large-collapsed').trigger('page:navbarlargecollapsed');\n app.emit('pageNavbarLargeCollapsed', $pageEl[0]);\n $navbarEl.trigger('navbar:collapse');\n app.emit('navbarCollapse', $navbarEl[0]);\n },\n expandLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar-large');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n $navbarEl.removeClass('navbar-large-collapsed');\n $pageEl.eq(0).removeClass('page-with-navbar-large-collapsed').trigger('page:navbarlargeexpanded');\n app.emit('pageNavbarLargeExpanded', $pageEl[0]);\n $navbarEl.trigger('navbar:expand');\n app.emit('navbarExpand', $navbarEl[0]);\n },\n toggleLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar-large');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n if ($navbarEl.hasClass('navbar-large-collapsed')) {\n app.navbar.expandLargeTitle($navbarEl);\n } else {\n app.navbar.collapseLargeTitle($navbarEl);\n }\n },\n initNavbarOnScroll(pageEl, navbarEl, needHide, needCollapse, needTransparent) {\n const app = this;\n const support = getSupport();\n const $pageEl = $(pageEl);\n const $navbarEl = $(navbarEl);\n const $titleLargeEl = $navbarEl.find('.title-large');\n const isLarge = $titleLargeEl.length || $navbarEl.hasClass('.navbar-large');\n let navbarHideHeight = 44;\n const snapPageScrollToLargeTitle = app.params.navbar.snapPageScrollToLargeTitle;\n const snapPageScrollToTransparentNavbar = app.params.navbar.snapPageScrollToTransparentNavbar;\n let previousScrollTop;\n let currentScrollTop;\n let scrollHeight;\n let offsetHeight;\n let reachEnd;\n let action;\n let navbarHidden;\n let navbarCollapsed;\n let navbarTitleLargeHeight;\n let navbarOffsetHeight;\n if (needCollapse || needHide && isLarge) {\n navbarTitleLargeHeight = $navbarEl.css('--f7-navbar-large-title-height');\n if (navbarTitleLargeHeight && navbarTitleLargeHeight.indexOf('px') >= 0) {\n navbarTitleLargeHeight = parseInt(navbarTitleLargeHeight, 10);\n if (Number.isNaN(navbarTitleLargeHeight) && $titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else if (Number.isNaN(navbarTitleLargeHeight)) {\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;else if (app.theme === 'md') navbarTitleLargeHeight = 88;\n }\n } else if ($titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else {\n // eslint-disable-next-line\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;else if (app.theme === 'md') navbarTitleLargeHeight = 88;\n }\n }\n if (needHide && isLarge) {\n navbarHideHeight += navbarTitleLargeHeight;\n }\n let scrollChanged;\n let scrollContent;\n let scrollTimeoutId;\n let touchEndTimeoutId;\n const touchSnapTimeout = 70;\n const desktopSnapTimeout = 300;\n function calcScrollableDistance() {\n $pageEl.find('.page-content').each(pageContentEl => {\n pageContentEl.f7ScrollableDistance = pageContentEl.scrollHeight - pageContentEl.offsetHeight;\n });\n }\n function snapLargeNavbar() {\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n if (!scrollContent || currentScrollTop < 0) return;\n if (currentScrollTop >= navbarTitleLargeHeight / 2 && currentScrollTop < navbarTitleLargeHeight) {\n $(scrollContent).scrollTop(navbarTitleLargeHeight, 100);\n } else if (currentScrollTop < navbarTitleLargeHeight) {\n $(scrollContent).scrollTop(0, 200);\n }\n }\n function snapTransparentNavbar() {\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n if (!scrollContent || currentScrollTop < 0) return;\n if (currentScrollTop >= navbarOffsetHeight / 2 && currentScrollTop < navbarOffsetHeight) {\n $(scrollContent).scrollTop(navbarOffsetHeight, 100);\n } else if (currentScrollTop < navbarOffsetHeight) {\n $(scrollContent).scrollTop(0, 200);\n }\n }\n function handleNavbarTransparent() {\n const isHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded || isHidden) return;\n if (!navbarOffsetHeight) {\n navbarOffsetHeight = navbarEl.offsetHeight;\n }\n let opacity = currentScrollTop / navbarOffsetHeight;\n const notTransparent = $navbarEl.hasClass('navbar-transparent-visible');\n opacity = Math.max(Math.min(opacity, 1), 0);\n if (notTransparent && opacity === 1 || !notTransparent && opacity === 0) {\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n if (notTransparent && opacity === 0) {\n $navbarEl.trigger('navbar:transparenthide');\n app.emit('navbarTransparentHide', $navbarEl[0]);\n $navbarEl.removeClass('navbar-transparent-visible');\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n if (!notTransparent && opacity === 1) {\n $navbarEl.trigger('navbar:transparentshow');\n app.emit('navbarTransparentShow', $navbarEl[0]);\n $navbarEl.addClass('navbar-transparent-visible');\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n $navbarEl.find('.navbar-bg, .title').css('opacity', opacity);\n if (snapPageScrollToTransparentNavbar) {\n if (!support.touch) {\n clearTimeout(scrollTimeoutId);\n scrollTimeoutId = setTimeout(() => {\n snapTransparentNavbar();\n }, desktopSnapTimeout);\n } else if (touchEndTimeoutId) {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n snapTransparentNavbar();\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }, touchSnapTimeout);\n }\n }\n }\n let previousCollapseProgress = null;\n let collapseProgress = null;\n function handleLargeNavbarCollapse(pageContentEl) {\n const isHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n if (isHidden) return;\n const isLargeTransparent = $navbarEl.hasClass('navbar-large-transparent') || $navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-transparent');\n previousCollapseProgress = collapseProgress;\n const scrollableDistance = Math.min(navbarTitleLargeHeight, pageContentEl.f7ScrollableDistance || navbarTitleLargeHeight);\n collapseProgress = Math.min(Math.max(currentScrollTop / scrollableDistance, 0), 1);\n const previousCollapseWasInMiddle = previousCollapseProgress > 0 && previousCollapseProgress < 1;\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n navbarCollapsed = $navbarEl.hasClass('navbar-large-collapsed');\n const $bgEl = $navbarEl.find('.navbar-bg');\n if (collapseProgress === 0 && navbarCollapsed) {\n app.navbar.expandLargeTitle($navbarEl[0]);\n } else if (collapseProgress === 1 && !navbarCollapsed) {\n app.navbar.collapseLargeTitle($navbarEl[0]);\n }\n if (collapseProgress === 0 && navbarCollapsed || collapseProgress === 0 && previousCollapseWasInMiddle || collapseProgress === 1 && !navbarCollapsed || collapseProgress === 1 && previousCollapseWasInMiddle) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', '');\n }\n $navbarEl.find('.title').css('opacity', '');\n $navbarEl.find('.title-large-text, .subnavbar').css('transform', '');\n $navbarEl.find('.title-large-text').css('opacity', '');\n if (isLargeTransparent) {\n $bgEl.css('opacity', '');\n }\n $bgEl.css('transform', '');\n } else if (collapseProgress > 0 && collapseProgress < 1) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', 'visible');\n }\n $navbarEl.find('.title').css('opacity', -0.5 + collapseProgress * 1.5);\n $navbarEl.find('.title-large-text, .subnavbar').css('transform', `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`);\n $navbarEl.find('.title-large-text').css('opacity', 1 - collapseProgress * 2);\n if (isLargeTransparent) {\n $bgEl.css('opacity', collapseProgress);\n }\n $bgEl.css('transform', `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`);\n }\n if (snapPageScrollToLargeTitle) {\n if (!support.touch) {\n clearTimeout(scrollTimeoutId);\n scrollTimeoutId = setTimeout(() => {\n snapLargeNavbar();\n }, desktopSnapTimeout);\n } else if (touchEndTimeoutId) {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n snapLargeNavbar();\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }, touchSnapTimeout);\n }\n }\n }\n function handleTitleHideShow() {\n if ($pageEl.hasClass('page-with-card-opened')) return;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n navbarHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n if (reachEnd) {\n if (app.params.navbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.navbar.showOnPageScrollTop || currentScrollTop <= navbarHideHeight) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > navbarHideHeight) {\n action = 'hide';\n } else {\n action = 'show';\n }\n if (action === 'show' && navbarHidden) {\n app.navbar.show($navbarEl, true, true);\n navbarHidden = false;\n } else if (action === 'hide' && !navbarHidden) {\n app.navbar.hide($navbarEl, true, false, true);\n navbarHidden = true;\n }\n previousScrollTop = currentScrollTop;\n }\n function handleScroll(e) {\n scrollContent = this;\n if (e && e.target && e.target !== scrollContent) {\n return;\n }\n currentScrollTop = scrollContent.scrollTop;\n scrollChanged = currentScrollTop;\n if (needCollapse) {\n handleLargeNavbarCollapse(scrollContent);\n } else if (needTransparent) {\n handleNavbarTransparent();\n }\n if ($pageEl.hasClass('page-previous')) return;\n if (needHide) {\n handleTitleHideShow();\n }\n }\n function handeTouchStart() {\n scrollChanged = false;\n }\n function handleTouchEnd() {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n if (scrollChanged !== false) {\n if (needTransparent && !needCollapse) {\n snapTransparentNavbar();\n } else {\n snapLargeNavbar();\n }\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }\n }, touchSnapTimeout);\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n if (support.touch && (needCollapse && snapPageScrollToLargeTitle || needTransparent && snapPageScrollToTransparentNavbar)) {\n app.on('touchstart:passive', handeTouchStart);\n app.on('touchend:passive', handleTouchEnd);\n }\n calcScrollableDistance();\n if (needCollapse || needTransparent) {\n $pageEl.find('.page-content').each(pageContentEl => {\n if (pageContentEl.scrollTop > 0) handleScroll.call(pageContentEl);\n });\n }\n app.on('resize', calcScrollableDistance);\n $pageEl[0].f7DetachNavbarScrollHandlers = function f7DetachNavbarScrollHandlers() {\n app.off('resize', calcScrollableDistance);\n delete $pageEl[0].f7DetachNavbarScrollHandlers;\n $pageEl.off('scroll', '.page-content', handleScroll, true);\n if (support.touch && (needCollapse && snapPageScrollToLargeTitle || needTransparent && snapPageScrollToTransparentNavbar)) {\n app.off('touchstart:passive', handeTouchStart);\n app.off('touchend:passive', handleTouchEnd);\n }\n };\n }\n};\nexport default {\n name: 'navbar',\n create() {\n const app = this;\n bindMethods(app, {\n navbar: Navbar\n });\n },\n params: {\n navbar: {\n scrollTopOnTitleClick: true,\n iosCenterTitle: true,\n mdCenterTitle: false,\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n collapseLargeTitleOnScroll: true,\n snapPageScrollToLargeTitle: true,\n snapPageScrollToTransparentNavbar: true\n }\n },\n on: {\n 'panelBreakpoint panelCollapsedBreakpoint panelResize viewResize resize viewMasterDetailBreakpoint': function onPanelResize() {\n const app = this;\n $('.navbar').each(navbarEl => {\n app.navbar.size(navbarEl);\n });\n },\n pageBeforeRemove(page) {\n if (page.$el[0].f7DetachNavbarScrollHandlers) {\n page.$el[0].f7DetachNavbarScrollHandlers();\n }\n },\n pageBeforeIn(page) {\n const app = this;\n if (app.theme !== 'ios') return;\n let $navbarsEl;\n const view = page.$el.parents('.view')[0].f7View;\n const navbarEl = app.navbar.getElByPage(page);\n if (!navbarEl) {\n $navbarsEl = page.$el.parents('.view').children('.navbars');\n } else {\n $navbarsEl = $(navbarEl).parents('.navbars');\n }\n if (page.$el.hasClass('no-navbar') || view.router.dynamicNavbar && !navbarEl) {\n const animate = !!(page.pageFrom && page.router.history.length > 0);\n app.navbar.hide($navbarsEl, animate);\n } else {\n app.navbar.show($navbarsEl);\n }\n },\n pageReinit(page) {\n const app = this;\n const $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) return;\n app.navbar.size($navbarEl);\n },\n pageInit(page) {\n const app = this;\n const $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) return;\n\n // Size\n app.navbar.size($navbarEl);\n\n // Need Collapse On Scroll\n let needCollapseOnScrollHandler;\n if ($navbarEl.find('.title-large').length > 0) {\n $navbarEl.addClass('navbar-large');\n }\n if ($navbarEl.hasClass('navbar-large')) {\n if (app.params.navbar.collapseLargeTitleOnScroll) needCollapseOnScrollHandler = true;\n page.$el.addClass('page-with-navbar-large');\n }\n\n // Need transparent on scroll\n let needTransparentOnScroll;\n if (!needCollapseOnScrollHandler && $navbarEl.hasClass('navbar-transparent')) {\n needTransparentOnScroll = true;\n }\n\n // Need Hide On Scroll\n let needHideOnScrollHandler;\n if (app.params.navbar.hideOnPageScroll || page.$el.find('.hide-navbar-on-scroll').length || page.$el.hasClass('hide-navbar-on-scroll') || page.$el.find('.hide-bars-on-scroll').length || page.$el.hasClass('hide-bars-on-scroll')) {\n if (page.$el.find('.keep-navbar-on-scroll').length || page.$el.hasClass('keep-navbar-on-scroll') || page.$el.find('.keep-bars-on-scroll').length || page.$el.hasClass('keep-bars-on-scroll')) {\n needHideOnScrollHandler = false;\n } else {\n needHideOnScrollHandler = true;\n }\n }\n if (needCollapseOnScrollHandler || needHideOnScrollHandler || needTransparentOnScroll) {\n app.navbar.initNavbarOnScroll(page.el, $navbarEl[0], needHideOnScrollHandler, needCollapseOnScrollHandler, needTransparentOnScroll);\n }\n },\n 'panelOpen panelSwipeOpen modalOpen': function onPanelModalOpen(instance) {\n const app = this;\n instance.$el.find('.navbar:not(.navbar-previous)').each(navbarEl => {\n app.navbar.size(navbarEl);\n });\n },\n tabShow(tabEl) {\n const app = this;\n $(tabEl).find('.navbar:not(.navbar-previous)').each(navbarEl => {\n app.navbar.size(navbarEl);\n });\n }\n },\n clicks: {\n '.navbar .title': function onTitleClick($clickedEl, clickedData, e) {\n const app = this;\n if (!app.params.navbar.scrollTopOnTitleClick) return;\n if ($(e.target).closest('a, button').length > 0) {\n return;\n }\n let $pageContentEl;\n\n // Find active page\n const $navbarEl = $clickedEl.parents('.navbar');\n const $navbarsEl = $navbarEl.parents('.navbars');\n\n // Static Layout\n $pageContentEl = $navbarEl.parents('.page-content');\n if ($pageContentEl.length === 0) {\n // Fixed Layout\n if ($navbarEl.parents('.page').length > 0) {\n $pageContentEl = $navbarEl.parents('.page').find('.page-content');\n }\n // Through Layout iOS\n if ($pageContentEl.length === 0 && $navbarsEl.length) {\n if ($navbarsEl.nextAll('.page-current').length > 0) {\n $pageContentEl = $navbarsEl.nextAll('.page-current').find('.page-content');\n }\n }\n // Through Layout\n if ($pageContentEl.length === 0) {\n if ($navbarEl.nextAll('.page-current').length > 0) {\n $pageContentEl = $navbarEl.nextAll('.page-current').find('.page-content');\n }\n }\n }\n if ($pageContentEl && $pageContentEl.length > 0) {\n // Check for tab\n if ($pageContentEl.hasClass('tab')) {\n $pageContentEl = $pageContentEl.parent('.tabs').children('.page-content.tab-active');\n }\n if ($pageContentEl.length > 0) $pageContentEl.scrollTop(0, 300);\n }\n }\n },\n vnode: {\n navbar: {\n postpatch(vnode) {\n const app = this;\n app.navbar.size(vnode.elm);\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\nconst Toolbar = {\n setHighlight(tabbarEl) {\n const app = this;\n const $tabbarEl = $(tabbarEl);\n if (app.theme === 'ios' && !$tabbarEl.hasClass('tabbar-highlight')) return;\n if ($tabbarEl.length === 0 || !($tabbarEl.hasClass('tabbar') || $tabbarEl.hasClass('tabbar-icons'))) return;\n let $highlightEl = $tabbarEl.find('.tab-link-highlight');\n const tabLinksCount = $tabbarEl.find('.tab-link').length;\n if (tabLinksCount === 0) {\n $highlightEl.remove();\n return;\n }\n if ($highlightEl.length === 0) {\n $tabbarEl.children('.toolbar-inner').append('');\n $highlightEl = $tabbarEl.find('.tab-link-highlight');\n } else if ($highlightEl.next().length) {\n $tabbarEl.children('.toolbar-inner').append($highlightEl);\n }\n const $activeLink = $tabbarEl.find('.tab-link-active');\n let highlightWidth;\n let highlightTranslate;\n if ($tabbarEl.hasClass('tabbar-scrollable') && $activeLink && $activeLink[0]) {\n highlightWidth = `${$activeLink[0].offsetWidth}px`;\n highlightTranslate = `${$activeLink[0].offsetLeft}px`;\n } else {\n const activeIndex = $activeLink.index();\n highlightWidth = `${100 / tabLinksCount}%`;\n highlightTranslate = `${(app.rtl ? -activeIndex : activeIndex) * 100}%`;\n }\n nextFrame(() => {\n $highlightEl.css('width', highlightWidth).transform(`translate3d(${highlightTranslate},0,0)`);\n });\n },\n init(tabbarEl) {\n const app = this;\n app.toolbar.setHighlight(tabbarEl);\n },\n hide(el, animate) {\n if (animate === void 0) {\n animate = true;\n }\n const app = this;\n const $el = $(el);\n if ($el.hasClass('toolbar-hidden')) return;\n const className = `toolbar-hidden${animate ? ' toolbar-transitioning' : ''}`;\n $el.transitionEnd(() => {\n $el.removeClass('toolbar-transitioning');\n });\n $el.addClass(className);\n $el.trigger('toolbar:hide');\n app.emit('toolbarHide', $el[0]);\n },\n show(el, animate) {\n if (animate === void 0) {\n animate = true;\n }\n const app = this;\n const $el = $(el);\n if (!$el.hasClass('toolbar-hidden')) return;\n if (animate) {\n $el.addClass('toolbar-transitioning');\n $el.transitionEnd(() => {\n $el.removeClass('toolbar-transitioning');\n });\n }\n $el.removeClass('toolbar-hidden');\n $el.trigger('toolbar:show');\n app.emit('toolbarShow', $el[0]);\n },\n initToolbarOnScroll(pageEl) {\n const app = this;\n const $pageEl = $(pageEl);\n let $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.parents('.views').children('.tabbar, .tabbar-icons');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n let previousScrollTop;\n let currentScrollTop;\n let scrollHeight;\n let offsetHeight;\n let reachEnd;\n let action;\n let toolbarHidden;\n function handleScroll(e) {\n if ($pageEl.hasClass('page-with-card-opened')) return;\n if ($pageEl.hasClass('page-previous')) return;\n const scrollContent = this;\n if (e && e.target && e.target !== scrollContent) {\n return;\n }\n currentScrollTop = scrollContent.scrollTop;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n toolbarHidden = $toolbarEl.hasClass('toolbar-hidden');\n if (reachEnd) {\n if (app.params.toolbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.toolbar.showOnPageScrollTop || currentScrollTop <= 44) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > 44) {\n action = 'hide';\n } else {\n action = 'show';\n }\n if (action === 'show' && toolbarHidden) {\n app.toolbar.show($toolbarEl);\n toolbarHidden = false;\n } else if (action === 'hide' && !toolbarHidden) {\n app.toolbar.hide($toolbarEl);\n toolbarHidden = true;\n }\n previousScrollTop = currentScrollTop;\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n $pageEl[0].f7ScrollToolbarHandler = handleScroll;\n }\n};\nexport default {\n name: 'toolbar',\n create() {\n const app = this;\n bindMethods(app, {\n toolbar: Toolbar\n });\n },\n params: {\n toolbar: {\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true\n }\n },\n on: {\n pageBeforeRemove(page) {\n if (page.$el[0].f7ScrollToolbarHandler) {\n page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollToolbarHandler, true);\n }\n },\n pageBeforeIn(page) {\n const app = this;\n let $toolbarEl = page.$el.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.parents('.views').children('.tabbar, .tabbar-icons');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n if (page.$el.hasClass('no-toolbar')) {\n app.toolbar.hide($toolbarEl);\n } else {\n app.toolbar.show($toolbarEl);\n }\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.tabbar, .tabbar-icons').each(tabbarEl => {\n app.toolbar.init(tabbarEl);\n });\n if (app.params.toolbar.hideOnPageScroll || page.$el.find('.hide-toolbar-on-scroll').length || page.$el.hasClass('hide-toolbar-on-scroll') || page.$el.find('.hide-bars-on-scroll').length || page.$el.hasClass('hide-bars-on-scroll')) {\n if (page.$el.find('.keep-toolbar-on-scroll').length || page.$el.hasClass('keep-toolbar-on-scroll') || page.$el.find('.keep-bars-on-scroll').length || page.$el.hasClass('keep-bars-on-scroll')) {\n return;\n }\n app.toolbar.initToolbarOnScroll(page.el);\n }\n },\n init() {\n const app = this;\n app.$el.find('.tabbar, .tabbar-icons').each(tabbarEl => {\n app.toolbar.init(tabbarEl);\n });\n }\n },\n vnode: {\n tabbar: {\n insert(vnode) {\n const app = this;\n app.toolbar.init(vnode.elm);\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nexport default {\n name: 'subnavbar',\n on: {\n pageInit(page) {\n if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) {\n page.$el.addClass('page-with-subnavbar');\n }\n const $innerSubnavbars = page.$el.find('.subnavbar').filter(subnavbarEl => {\n return $(subnavbarEl).parents('.page')[0] === page.$el[0];\n });\n if ($innerSubnavbars.length) {\n page.$el.addClass('page-with-subnavbar');\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nexport default class TouchRipple {\n constructor(app, $el, x, y) {\n const ripple = this;\n if (!$el) return undefined;\n const {\n left,\n top,\n width,\n height\n } = $el[0].getBoundingClientRect();\n const center = {\n x: x - left,\n y: y - top\n };\n let diameter = Math.max((height ** 2 + width ** 2) ** 0.5, 48);\n let isInset = false;\n const insetElements = app.params.touch.touchRippleInsetElements || '';\n if (insetElements && $el.is(insetElements)) {\n isInset = true;\n }\n if (isInset) {\n diameter = Math.max(Math.min(width, height), 48);\n }\n if (!isInset && $el.css('overflow') === 'hidden') {\n const distanceFromCenter = ((center.x - width / 2) ** 2 + (center.y - height / 2) ** 2) ** 0.5;\n const scale = (diameter / 2 + distanceFromCenter) / (diameter / 2);\n ripple.rippleTransform = `translate3d(0px, 0px, 0) scale(${scale * 2})`;\n } else {\n // prettier-ignore\n ripple.rippleTransform = `translate3d(${-center.x + width / 2}px, ${-center.y + height / 2}px, 0) scale(1)`;\n }\n if (isInset) {\n $el.addClass('ripple-inset');\n }\n ripple.$rippleWaveEl = $(`
`);\n $el.prepend(ripple.$rippleWaveEl);\n ripple.$rippleWaveEl.animationEnd(() => {\n if (!ripple.$rippleWaveEl) return;\n if (ripple.$rippleWaveEl.hasClass('ripple-wave-out')) return;\n ripple.$rippleWaveEl.addClass('ripple-wave-in');\n if (ripple.shouldBeRemoved) {\n ripple.out();\n }\n });\n return ripple;\n }\n destroy() {\n let ripple = this;\n if (ripple.$rippleWaveEl) {\n ripple.$rippleWaveEl.remove();\n }\n Object.keys(ripple).forEach(key => {\n ripple[key] = null;\n delete ripple[key];\n });\n ripple = null;\n }\n out() {\n const ripple = this;\n const {\n $rippleWaveEl\n } = this;\n clearTimeout(ripple.removeTimeout);\n $rippleWaveEl.addClass('ripple-wave-out');\n ripple.removeTimeout = setTimeout(() => {\n ripple.destroy();\n }, 300);\n $rippleWaveEl.animationEnd(() => {\n clearTimeout(ripple.removeTimeout);\n ripple.destroy();\n });\n }\n remove() {\n const ripple = this;\n if (ripple.shouldBeRemoved) return;\n ripple.removeTimeout = setTimeout(() => {\n ripple.destroy();\n }, 400);\n ripple.shouldBeRemoved = true;\n if (ripple.$rippleWaveEl.hasClass('ripple-wave-in')) {\n ripple.out();\n }\n }\n}","import TouchRipple from './touch-ripple-class.js';\nexport default {\n name: 'touch-ripple',\n static: {\n TouchRipple\n },\n create() {\n const app = this;\n app.touchRipple = {\n create() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return new TouchRipple(...args);\n }\n };\n }\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nconst openedModals = [];\nconst dialogsQueue = [];\nfunction clearDialogsQueue() {\n if (dialogsQueue.length === 0) return;\n const dialog = dialogsQueue.shift();\n dialog.open();\n}\nclass Modal extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n const modal = this;\n const defaults = {};\n\n // Extend defaults with modules params\n modal.useModulesParams(defaults);\n modal.params = extend(defaults, params);\n modal.opened = false;\n let $containerEl = modal.params.containerEl ? $(modal.params.containerEl).eq(0) : app.$el;\n if (!$containerEl.length) $containerEl = app.$el;\n modal.$containerEl = $containerEl;\n modal.containerEl = $containerEl[0];\n\n // Install Modules\n modal.useModules();\n return this;\n }\n onOpen() {\n const modal = this;\n modal.opened = true;\n openedModals.push(modal);\n $('html').addClass(`with-modal-${modal.type.toLowerCase()}`);\n modal.$el.trigger(`modal:open ${modal.type.toLowerCase()}:open`);\n modal.emit(`local::open modalOpen ${modal.type}Open`, modal);\n }\n onOpened() {\n const modal = this;\n modal.$el.trigger(`modal:opened ${modal.type.toLowerCase()}:opened`);\n modal.emit(`local::opened modalOpened ${modal.type}Opened`, modal);\n }\n onClose() {\n const modal = this;\n modal.opened = false;\n if (!modal.type || !modal.$el) return;\n openedModals.splice(openedModals.indexOf(modal), 1);\n $('html').removeClass(`with-modal-${modal.type.toLowerCase()}`);\n modal.$el.trigger(`modal:close ${modal.type.toLowerCase()}:close`);\n modal.emit(`local::close modalClose ${modal.type}Close`, modal);\n }\n onClosed() {\n const modal = this;\n if (!modal.type || !modal.$el) return;\n modal.$el.removeClass('modal-out');\n modal.$el.hide();\n if (modal.params.backdrop && (modal.params.backdropUnique || modal.forceBackdropUnique) && modal.$backdropEl) {\n modal.$backdropEl.remove();\n }\n modal.$el.trigger(`modal:closed ${modal.type.toLowerCase()}:closed`);\n modal.emit(`local::closed modalClosed ${modal.type}Closed`, modal);\n }\n open(animateModal, force) {\n const modal = this;\n const document = getDocument();\n const app = modal.app;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n const type = modal.type;\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n if (!$el || $el.hasClass('modal-in')) {\n if (animateModal === false && $el[0] && type !== 'dialog') {\n $el[0].style.display = 'block';\n }\n if (!force) return modal;\n }\n if (type === 'dialog' && app.params.modal.queueDialogs) {\n let pushToQueue;\n if ($('.dialog.modal-in').length > 0) {\n pushToQueue = true;\n } else if (openedModals.length > 0) {\n openedModals.forEach(openedModal => {\n if (openedModal.type === 'dialog') pushToQueue = true;\n });\n }\n if (pushToQueue) {\n dialogsQueue.push(modal);\n return modal;\n }\n }\n const $modalParentEl = $el.parent();\n const wasInDom = $el.parents(document).length > 0;\n if (!$modalParentEl.is(modal.$containerEl)) {\n modal.$containerEl.append($el);\n modal.once(`${type}Closed`, () => {\n if (wasInDom) {\n $modalParentEl.append($el);\n } else {\n $el.remove();\n }\n });\n }\n // Show Modal\n $el.show();\n if (modal.params.backdrop && (modal.params.backdropUnique || modal.forceBackdropUnique) && modal.$backdropEl) {\n modal.$backdropEl.insertBefore($el);\n }\n\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n modal._clientLeft = $el[0].clientLeft;\n\n // Modal\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n if ($backdropEl) {\n $backdropEl.removeClass('not-animated');\n $backdropEl.addClass('backdrop-in');\n }\n $el.animationEnd(() => {\n transitionEnd();\n });\n $el.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('modal-out not-animated').addClass('modal-in');\n modal.onOpen();\n } else {\n if ($backdropEl) {\n $backdropEl.addClass('backdrop-in not-animated');\n }\n $el.removeClass('modal-out').addClass('modal-in not-animated');\n modal.onOpen();\n modal.onOpened();\n }\n return modal;\n }\n close(animateModal) {\n const modal = this;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n if (!$el || !$el.hasClass('modal-in')) {\n if (dialogsQueue.indexOf(modal) >= 0) {\n dialogsQueue.splice(dialogsQueue.indexOf(modal), 1);\n }\n return modal;\n }\n\n // backdrop\n if ($backdropEl) {\n let needToHideBackdrop = true;\n if (modal.type === 'popup') {\n modal.$el.prevAll('.popup.modal-in').add(modal.$el.nextAll('.popup.modal-in')).each(popupEl => {\n const popupInstance = popupEl.f7Modal;\n if (!popupInstance) return;\n if (popupInstance.params.closeByBackdropClick && popupInstance.params.backdrop && popupInstance.backdropEl === modal.backdropEl) {\n needToHideBackdrop = false;\n }\n });\n }\n if (needToHideBackdrop) {\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n $backdropEl.removeClass('backdrop-in');\n }\n }\n\n // Modal\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n $el.animationEnd(() => {\n transitionEnd();\n });\n $el.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('modal-in').addClass('modal-out');\n // Emit close\n modal.onClose();\n } else {\n $el.addClass('not-animated').removeClass('modal-in').addClass('modal-out');\n // Emit close\n modal.onClose();\n modal.onClosed();\n }\n if (modal.type === 'dialog') {\n clearDialogsQueue();\n }\n return modal;\n }\n destroy() {\n const modal = this;\n if (modal.destroyed) return;\n modal.emit(`local::beforeDestroy modalBeforeDestroy ${modal.type}BeforeDestroy`, modal);\n if (modal.$el) {\n modal.$el.trigger(`modal:beforedestroy ${modal.type.toLowerCase()}:beforedestroy`);\n if (modal.$el.length && modal.$el[0].f7Modal) {\n delete modal.$el[0].f7Modal;\n }\n }\n deleteProps(modal);\n modal.destroyed = true;\n }\n}\nexport default Modal;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Modal from './modal-class.js';\nclass CustomModal extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n backdrop: true,\n closeByBackdropClick: true,\n on: {}\n }, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const customModal = this;\n customModal.params = extendedParams;\n\n // Find Element\n let $el;\n if (!customModal.params.el) {\n $el = $(customModal.params.content);\n } else {\n $el = $(customModal.params.el);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return customModal.destroy();\n }\n let $backdropEl;\n if (customModal.params.backdrop) {\n $backdropEl = app.$el.children('.custom-modal-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('
');\n app.$el.append($backdropEl);\n }\n }\n function handleClick(e) {\n if (!customModal || customModal.destroyed) return;\n if ($backdropEl && e.target === $backdropEl[0]) {\n customModal.close();\n }\n }\n customModal.on('customModalOpened', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.on('click', handleClick);\n }\n });\n customModal.on('customModalClose', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.off('click', handleClick);\n }\n });\n extend(customModal, {\n app,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'customModal'\n });\n $el[0].f7Modal = customModal;\n return customModal;\n }\n}\nexport default CustomModal;","import Modal from './modal-class.js';\nimport CustomModal from './custom-modal-class.js';\nexport default {\n name: 'modal',\n static: {\n Modal,\n CustomModal\n },\n create() {\n const app = this;\n app.customModal = {\n create(params) {\n return new CustomModal(app, params);\n }\n };\n },\n params: {\n modal: {\n queueDialogs: true\n }\n }\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Dialog extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n title: app.params.dialog.title,\n text: undefined,\n content: '',\n buttons: [],\n verticalButtons: false,\n onClick: undefined,\n cssClass: undefined,\n destroyOnClose: false,\n on: {}\n }, params);\n if (typeof extendedParams.closeByBackdropClick === 'undefined') {\n extendedParams.closeByBackdropClick = app.params.dialog.closeByBackdropClick;\n }\n if (typeof extendedParams.backdrop === 'undefined') {\n extendedParams.backdrop = app.params.dialog.backdrop;\n }\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const dialog = this;\n const device = getDevice();\n const document = getDocument();\n const {\n title,\n text,\n content,\n buttons,\n verticalButtons,\n cssClass,\n backdrop\n } = extendedParams;\n dialog.params = extendedParams;\n\n // Find Element\n let $el;\n if (!dialog.params.el) {\n const dialogClasses = ['dialog'];\n if (buttons.length === 0) dialogClasses.push('dialog-no-buttons');\n if (buttons.length > 0) dialogClasses.push(`dialog-buttons-${buttons.length}`);\n if (verticalButtons) dialogClasses.push('dialog-buttons-vertical');\n if (cssClass) dialogClasses.push(cssClass);\n let buttonsHTML = '';\n if (buttons.length > 0) {\n buttonsHTML = $jsx(\"div\", {\n class: \"dialog-buttons\"\n }, buttons.map(button => $jsx(\"span\", {\n class: `dialog-button${button.strong ? ' dialog-button-strong' : ''}${button.color ? ` color-${button.color}` : ''}${button.cssClass ? ` ${button.cssClass}` : ''}`\n }, button.text)));\n }\n const dialogHtml = $jsx(\"div\", {\n class: dialogClasses.join(' ')\n }, $jsx(\"div\", {\n class: \"dialog-inner\"\n }, title && $jsx(\"div\", {\n class: \"dialog-title\"\n }, title), text && $jsx(\"div\", {\n class: \"dialog-text\"\n }, text), content), buttonsHTML);\n $el = $(dialogHtml);\n } else {\n $el = $(dialog.params.el);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return dialog.destroy();\n }\n let $backdropEl;\n if (backdrop) {\n $backdropEl = app.$el.children('.dialog-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('
');\n app.$el.append($backdropEl);\n }\n }\n\n // Assign events\n function buttonOnClick(e) {\n const buttonEl = this;\n const index = $(buttonEl).index();\n const button = buttons[index];\n if (button.onClick) button.onClick(dialog, e);\n if (dialog.params.onClick) dialog.params.onClick(dialog, index);\n if (button.close !== false) dialog.close();\n }\n let addKeyboardHander;\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n buttons.forEach((button, index) => {\n if (button.keyCodes && button.keyCodes.indexOf(keyCode) >= 0) {\n if (document.activeElement) document.activeElement.blur();\n if (button.onClick) button.onClick(dialog, e);\n if (dialog.params.onClick) dialog.params.onClick(dialog, index);\n if (button.close !== false) dialog.close();\n }\n });\n }\n if (buttons && buttons.length > 0) {\n dialog.on('open', () => {\n $el.find('.dialog-button').each((buttonEl, index) => {\n const button = buttons[index];\n if (button.keyCodes) addKeyboardHander = true;\n $(buttonEl).on('click', buttonOnClick);\n });\n if (addKeyboardHander && !device.ios && !device.android && !device.cordova && !device.capacitor) {\n $(document).on('keydown', onKeyDown);\n }\n });\n dialog.on('close', () => {\n $el.find('.dialog-button').each(buttonEl => {\n $(buttonEl).off('click', buttonOnClick);\n });\n if (addKeyboardHander && !device.ios && !device.android && !device.cordova && !device.capacitor) {\n $(document).off('keydown', onKeyDown);\n }\n addKeyboardHander = false;\n });\n }\n extend(dialog, {\n app,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'dialog',\n setProgress(progress, duration) {\n app.progressbar.set($el.find('.progressbar'), progress, duration);\n return dialog;\n },\n setText(newText) {\n let $textEl = $el.find('.dialog-text');\n if ($textEl.length === 0) {\n $textEl = $('
');\n if (typeof title !== 'undefined') {\n $textEl.insertAfter($el.find('.dialog-title'));\n } else {\n $el.find('.dialog-inner').prepend($textEl);\n }\n }\n $textEl.html(newText);\n dialog.params.text = newText;\n return dialog;\n },\n setTitle(newTitle) {\n let $titleEl = $el.find('.dialog-title');\n if ($titleEl.length === 0) {\n $titleEl = $('
');\n $el.find('.dialog-inner').prepend($titleEl);\n }\n $titleEl.html(newTitle);\n dialog.params.title = newTitle;\n return dialog;\n }\n });\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n if ($target.closest(dialog.el).length === 0) {\n if (dialog.params.closeByBackdropClick && dialog.backdropEl && dialog.backdropEl === target) {\n dialog.close();\n }\n }\n }\n dialog.on('opened', () => {\n if (dialog.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n dialog.on('close', () => {\n if (dialog.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n });\n $el[0].f7Modal = dialog;\n if (dialog.params.destroyOnClose) {\n dialog.once('closed', () => {\n setTimeout(() => {\n dialog.destroy();\n }, 0);\n });\n }\n return dialog;\n }\n}\nexport default Dialog;","import { extend, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\nimport Dialog from './dialog-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'dialog',\n params: {\n dialog: {\n title: undefined,\n buttonOk: 'OK',\n buttonCancel: 'Cancel',\n usernamePlaceholder: 'Username',\n passwordPlaceholder: 'Password',\n preloaderTitle: 'Loading... ',\n progressTitle: 'Loading... ',\n backdrop: true,\n closeByBackdropClick: false,\n destroyPredefinedDialogs: true,\n keyboardActions: true,\n autoFocus: true\n }\n },\n static: {\n Dialog\n },\n create() {\n const app = this;\n function defaultDialogTitle() {\n return app.params.dialog.title || app.name;\n }\n const destroyOnClose = app.params.dialog.destroyPredefinedDialogs;\n const keyboardActions = app.params.dialog.keyboardActions;\n const autoFocus = app.params.dialog.autoFocus;\n const autoFocusHandler = autoFocus ? {\n on: {\n opened(dialog) {\n dialog.$el.find('input').eq(0).focus();\n }\n }\n } : {};\n const isIosTheme = app.theme === 'ios';\n app.dialog = extend(ModalMethods({\n app,\n constructor: Dialog,\n defaultSelector: '.dialog.modal-in'\n }), {\n // Shortcuts\n alert() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n let [text, title, callbackOk] = args;\n if (args.length === 2 && typeof args[1] === 'function') {\n [text, callbackOk, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n buttons: [{\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n onClick: callbackOk,\n keyCodes: keyboardActions ? [13, 27] : null\n }],\n destroyOnClose\n }).open();\n },\n prompt() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n let [text, title, callbackOk, callbackCancel, defaultValue] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, defaultValue, title] = args;\n }\n defaultValue = typeof defaultValue === 'undefined' || defaultValue === null ? '' : defaultValue;\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n content: `
`,\n buttons: [{\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: null\n }, {\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n keyCodes: keyboardActions ? [13] : null\n }],\n onClick(dialog, index) {\n const inputValue = dialog.$el.find('.dialog-input').val();\n if (index === 0 && callbackCancel) callbackCancel(inputValue);\n if (index === 1 && callbackOk) callbackOk(inputValue);\n },\n destroyOnClose,\n ...autoFocusHandler\n }).open();\n },\n confirm() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n let [text, title, callbackOk, callbackCancel] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n buttons: [{\n text: app.params.dialog.buttonCancel,\n onClick: callbackCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: null\n }, {\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n onClick: callbackOk,\n keyCodes: keyboardActions ? [13] : null\n }],\n destroyOnClose\n }).open();\n },\n login() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n let [text, title, callbackOk, callbackCancel] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n // prettier-ignore\n content: `\n
\n \n
\n
\n \n
`,\n buttons: [{\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: null\n }, {\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n keyCodes: keyboardActions ? [13] : null\n }],\n onClick(dialog, index) {\n const username = dialog.$el.find('[name=\"dialog-username\"]').val();\n const password = dialog.$el.find('[name=\"dialog-password\"]').val();\n if (index === 0 && callbackCancel) callbackCancel(username, password);\n if (index === 1 && callbackOk) callbackOk(username, password);\n },\n destroyOnClose,\n ...autoFocusHandler\n }).open();\n },\n password() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n let [text, title, callbackOk, callbackCancel] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n // prettier-ignore\n content: `\n
\n \n
`,\n buttons: [{\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: null\n }, {\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n keyCodes: keyboardActions ? [13] : null\n }],\n onClick(dialog, index) {\n const password = dialog.$el.find('[name=\"dialog-password\"]').val();\n if (index === 0 && callbackCancel) callbackCancel(password);\n if (index === 1 && callbackOk) callbackOk(password);\n },\n destroyOnClose,\n ...autoFocusHandler\n }).open();\n },\n preloader(title, color) {\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';\n return new Dialog(app, {\n title: typeof title === 'undefined' || title === null ? app.params.dialog.preloaderTitle : title,\n // prettier-ignore\n content: `
${preloaderInner}
`,\n cssClass: 'dialog-preloader',\n destroyOnClose\n }).open();\n },\n progress() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n let [title, progress, color] = args;\n if (args.length === 2) {\n if (typeof args[0] === 'number') {\n [progress, color, title] = args;\n } else if (typeof args[0] === 'string' && typeof args[1] === 'string') {\n [title, color, progress] = args;\n }\n } else if (args.length === 1) {\n if (typeof args[0] === 'number') {\n [progress, title, color] = args;\n }\n }\n const infinite = typeof progress === 'undefined';\n const dialog = new Dialog(app, {\n title: typeof title === 'undefined' ? app.params.dialog.progressTitle : title,\n cssClass: 'dialog-progress',\n // prettier-ignore\n content: `\n
\n ${!infinite ? '' : ''}\n
\n `,\n destroyOnClose\n });\n if (!infinite) dialog.setProgress(progress);\n return dialog.open();\n }\n });\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, now, nextTick } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\nclass Popup extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.popup, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const popup = this;\n const window = getWindow();\n const document = getDocument();\n const support = getSupport();\n const device = getDevice();\n popup.params = extendedParams;\n\n // Find Element\n let $el;\n if (!popup.params.el) {\n $el = $(popup.params.content).filter(node => node.nodeType === 1).eq(0);\n } else {\n $el = $(popup.params.el).eq(0);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return popup.destroy();\n }\n let $backdropEl;\n if (popup.params.backdrop && popup.params.backdropEl) {\n $backdropEl = $(popup.params.backdropEl);\n } else if (popup.params.backdrop) {\n if (popup.params.backdropUnique) {\n $backdropEl = $('
');\n popup.$containerEl.append($backdropEl);\n } else {\n $backdropEl = popup.$containerEl.children('.popup-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('
');\n popup.$containerEl.append($backdropEl);\n }\n }\n extend(popup, {\n app,\n push: $el.hasClass('popup-push') || popup.params.push,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'popup',\n $htmlEl: $('html')\n });\n if (popup.params.push) {\n $el.addClass('popup-push');\n }\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);\n if (keyboardOpened) return;\n if ($target.closest(popup.el).length === 0) {\n if (popup.params && popup.params.closeByBackdropClick && popup.params.backdrop && popup.backdropEl && popup.backdropEl === target) {\n let needToClose = true;\n popup.$el.nextAll('.popup.modal-in').each(popupEl => {\n const popupInstance = popupEl.f7Modal;\n if (!popupInstance) return;\n if (popupInstance.params.closeByBackdropClick && popupInstance.params.backdrop && popupInstance.backdropEl === popup.backdropEl) {\n needToClose = false;\n }\n });\n if (needToClose) {\n popup.close();\n }\n }\n }\n }\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && popup.params.closeOnEscape) {\n popup.close();\n }\n }\n let pushOffset;\n let isPush;\n function pushViewScale(offset) {\n return (app.height - offset * 2) / app.height;\n }\n let allowSwipeToClose = true;\n let isTouched = false;\n let startTouch;\n let currentTouch;\n let isScrolling;\n let touchStartTime;\n let touchesDiff;\n let isMoved = false;\n let pageContentEl;\n let pageContentScrollTop;\n let pageContentOffsetHeight;\n let pageContentScrollHeight;\n let popupHeight;\n let $pushEl;\n function handleTouchStart(e) {\n if (isTouched || !allowSwipeToClose || !popup.params.swipeToClose || !e.isTrusted) return;\n if (popup.params.swipeHandler && $(e.target).closest(popup.params.swipeHandler).length === 0) {\n return;\n }\n if ($(e.target).closest('.sortable-handler').length > 0) return;\n isTouched = true;\n isMoved = false;\n startTouch = {\n x: e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY\n };\n touchStartTime = now();\n isScrolling = undefined;\n if (!popup.params.swipeHandler && e.type === 'touchstart') {\n pageContentEl = $(e.target).closest('.page-content')[0];\n }\n }\n function handleTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n currentTouch = {\n x: e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY\n };\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(currentTouch.x - startTouch.x) > Math.abs(currentTouch.y - startTouch.y));\n }\n if (isScrolling) {\n isTouched = false;\n isMoved = false;\n return;\n }\n touchesDiff = startTouch.y - currentTouch.y;\n if (isPush && pushOffset && touchesDiff > 0) {\n touchesDiff = 0;\n }\n const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n $el.transition(0);\n if (typeof popup.params.swipeToClose === 'string' && direction !== popup.params.swipeToClose) {\n $el.transform('');\n $el.transition('');\n return;\n }\n if (!isMoved) {\n if (isPush && pushOffset) {\n popupHeight = $el[0].offsetHeight;\n $pushEl = $el.prevAll('.popup.modal-in').eq(0);\n if ($pushEl.length === 0) {\n $pushEl = app.$el.children('.view, .views');\n }\n }\n if (pageContentEl) {\n pageContentScrollTop = pageContentEl.scrollTop;\n pageContentScrollHeight = pageContentEl.scrollHeight;\n pageContentOffsetHeight = pageContentEl.offsetHeight;\n if (!(pageContentScrollHeight === pageContentOffsetHeight) && !(direction === 'to-bottom' && pageContentScrollTop === 0) && !(direction === 'to-top' && pageContentScrollTop === pageContentScrollHeight - pageContentOffsetHeight)) {\n $el.transform('');\n $el.transition('');\n isTouched = false;\n isMoved = false;\n return;\n }\n }\n isMoved = true;\n popup.emit('local::swipeStart popupSwipeStart', popup);\n popup.$el.trigger('popup:swipestart');\n } else {\n popup.emit('local::swipeMove popupSwipeMove', popup);\n popup.$el.trigger('popup:swipemove');\n }\n e.preventDefault();\n if (isPush && pushOffset) {\n const pushProgress = 1 - Math.abs(touchesDiff / popupHeight);\n const scale = 1 - (1 - pushViewScale(pushOffset)) * pushProgress;\n if ($pushEl.hasClass('popup')) {\n if ($pushEl.hasClass('popup-push')) {\n $pushEl.transition(0).forEach(el => {\n el.style.setProperty('transform', `translate3d(0, calc(-1 * ${pushProgress} * (var(--f7-popup-push-offset) + 10px)) , 0px) scale(${scale})`, 'important');\n });\n } else {\n $pushEl.transition(0).forEach(el => {\n el.style.setProperty('transform', `translate3d(0, 0px , 0px) scale(${scale})`, 'important');\n });\n }\n } else {\n $pushEl.transition(0).forEach(el => {\n el.style.setProperty('transform', `translate3d(0,0,0) scale(${scale})`, 'important');\n });\n }\n }\n $el.transition(0).transform(`translate3d(0,${-touchesDiff}px,0)`);\n }\n function handleTouchEnd(e) {\n if (!e.isTrusted) return;\n isTouched = false;\n if (!isMoved) {\n return;\n }\n popup.emit('local::swipeEnd popupSwipeEnd', popup);\n popup.$el.trigger('popup:swipeend');\n isMoved = false;\n allowSwipeToClose = false;\n $el.transition('');\n if (isPush && pushOffset) {\n $pushEl.transition('').transform('');\n }\n const direction = touchesDiff <= 0 ? 'to-bottom' : 'to-top';\n if (typeof popup.params.swipeToClose === 'string' && direction !== popup.params.swipeToClose) {\n $el.transform('');\n allowSwipeToClose = true;\n return;\n }\n const diff = Math.abs(touchesDiff);\n const timeDiff = new Date().getTime() - touchStartTime;\n if (timeDiff < 300 && diff > 20 || timeDiff >= 300 && diff > 100) {\n nextTick(() => {\n if (direction === 'to-bottom') {\n $el.addClass('swipe-close-to-bottom');\n } else {\n $el.addClass('swipe-close-to-top');\n }\n $el.transform('');\n popup.emit('local::swipeclose popupSwipeClose', popup);\n popup.$el.trigger('popup:swipeclose');\n popup.close();\n allowSwipeToClose = true;\n });\n return;\n }\n allowSwipeToClose = true;\n $el.transform('');\n }\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n if (popup.params.swipeToClose) {\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n popup.once('popupDestroy', () => {\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n });\n }\n let hasPreviousPushPopup;\n const updatePushOffset = () => {\n const wasPush = isPush;\n if (popup.push) {\n isPush = popup.push && (app.width < 630 || app.height < 630 || $el.hasClass('popup-tablet-fullscreen'));\n }\n if (isPush && !wasPush) {\n // eslint-disable-next-line\n setPushOffset();\n } else if (isPush && wasPush) {\n popup.$htmlEl[0].style.setProperty('--f7-popup-push-scale', pushViewScale(pushOffset));\n } else if (!isPush && wasPush) {\n popup.$htmlEl.removeClass('with-modal-popup-push');\n popup.$htmlEl[0].style.removeProperty('--f7-popup-push-scale');\n }\n };\n const setPushOffset = () => {\n app.off('resize', updatePushOffset);\n if (popup.push) {\n isPush = popup.push && (app.width < 630 || app.height < 630 || $el.hasClass('popup-tablet-fullscreen'));\n }\n if (isPush) {\n pushOffset = parseInt($el.css('--f7-popup-push-offset'), 10);\n if (Number.isNaN(pushOffset)) {\n pushOffset = 0;\n }\n if (!pushOffset) pushOffset = app.theme === 'ios' ? 44 : 48;\n popup.$htmlEl[0].style.setProperty('--f7-popup-push-offset', `${pushOffset}px`);\n $el.addClass('popup-push');\n popup.$htmlEl.addClass('with-modal-popup-push');\n popup.$htmlEl[0].style.setProperty('--f7-popup-push-scale', pushViewScale(pushOffset));\n }\n app.on('resize', updatePushOffset);\n };\n popup.on('open', () => {\n hasPreviousPushPopup = false;\n if (popup.params.closeOnEscape) {\n $(document).on('keydown', onKeyDown);\n }\n $el.prevAll('.popup.modal-in').addClass('popup-behind');\n setPushOffset();\n });\n popup.on('opened', () => {\n $el.removeClass('swipe-close-to-bottom swipe-close-to-top');\n if (popup.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n popup.on('close', () => {\n hasPreviousPushPopup = popup.$el.prevAll('.popup-push.modal-in').length > 0;\n if (popup.params.closeOnEscape) {\n $(document).off('keydown', onKeyDown);\n }\n if (popup.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n $el.prevAll('.popup.modal-in').eq(0).removeClass('popup-behind');\n if (isPush && pushOffset && !hasPreviousPushPopup) {\n popup.$htmlEl.removeClass('with-modal-popup-push');\n popup.$htmlEl.addClass('with-modal-popup-push-closing');\n }\n app.off('resize', updatePushOffset);\n });\n popup.on('closed', () => {\n $el.removeClass('popup-behind');\n if (isPush && pushOffset && !hasPreviousPushPopup) {\n popup.$htmlEl.removeClass('with-modal-popup-push-closing');\n popup.$htmlEl[0].style.removeProperty('--f7-popup-push-scale');\n popup.$htmlEl[0].style.removeProperty('--f7-popup-push-offset');\n }\n });\n $el[0].f7Modal = popup;\n return popup;\n }\n}\nexport default Popup;","import Popup from './popup-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'popup',\n params: {\n popup: {\n backdrop: true,\n backdropEl: undefined,\n backdropUnique: false,\n closeByBackdropClick: true,\n closeOnEscape: false,\n swipeToClose: false,\n swipeHandler: null,\n push: false,\n containerEl: null\n }\n },\n static: {\n Popup\n },\n create() {\n const app = this;\n app.popup = ModalMethods({\n app,\n constructor: Popup,\n defaultSelector: '.popup.modal-in',\n parentSelector: '.popup'\n });\n },\n clicks: {\n '.popup-open': function openPopup($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.popup.open(data.popup, data.animate, $clickedEl);\n },\n '.popup-close': function closePopup($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.popup.close(data.popup, data.animate, $clickedEl);\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\nclass LoginScreen extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const loginScreen = this;\n loginScreen.params = extendedParams;\n\n // Find Element\n let $el;\n if (!loginScreen.params.el) {\n $el = $(loginScreen.params.content).filter(node => node.nodeType === 1).eq(0);\n } else {\n $el = $(loginScreen.params.el).eq(0);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return loginScreen.destroy();\n }\n extend(loginScreen, {\n app,\n $el,\n el: $el[0],\n type: 'loginScreen'\n });\n $el[0].f7Modal = loginScreen;\n return loginScreen;\n }\n}\nexport default LoginScreen;","import LoginScreen from './login-screen-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'loginScreen',\n static: {\n LoginScreen\n },\n create() {\n const app = this;\n app.loginScreen = ModalMethods({\n app,\n constructor: LoginScreen,\n defaultSelector: '.login-screen.modal-in'\n });\n },\n clicks: {\n '.login-screen-open': function openLoginScreen($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.loginScreen.open(data.loginScreen, data.animate, $clickedEl);\n },\n '.login-screen-close': function closeLoginScreen($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.loginScreen.close(data.loginScreen, data.animate, $clickedEl);\n }\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\nclass Popover extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.popover, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const popover = this;\n const device = getDevice();\n const window = getWindow();\n const document = getDocument();\n popover.params = extendedParams;\n\n // Find Element\n let $el;\n if (!popover.params.el) {\n $el = $(popover.params.content).filter(node => node.nodeType === 1).eq(0);\n } else {\n $el = $(popover.params.el).eq(0);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n // Find Target\n const $targetEl = $(popover.params.targetEl).eq(0);\n if ($el.length === 0) {\n return popover.destroy();\n }\n\n // Backdrop\n let $backdropEl;\n const forceBackdropUnique = popover.params.backdrop && app.$el.find('.popover.modal-in').filter(anotherPopoverEl => anotherPopoverEl !== $el[0]).length > 0;\n if (popover.params.backdrop && popover.params.backdropEl) {\n $backdropEl = $(popover.params.backdropEl);\n } else if (popover.params.backdrop) {\n if (popover.params.backdropUnique || forceBackdropUnique) {\n $backdropEl = $('
');\n $backdropEl[0].f7PopoverRef = popover;\n popover.$containerEl.append($backdropEl);\n } else {\n $backdropEl = popover.$containerEl.children('.popover-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('
');\n popover.$containerEl.append($backdropEl);\n }\n }\n\n // Find Arrow\n let $arrowEl;\n if ($el.find('.popover-arrow').length === 0 && popover.params.arrow) {\n $arrowEl = $('
');\n $el.prepend($arrowEl);\n } else {\n $arrowEl = $el.find('.popover-arrow');\n }\n\n // Open\n const originalOpen = popover.open;\n extend(popover, {\n app,\n $el,\n el: $el[0],\n $targetEl,\n targetEl: $targetEl[0],\n $arrowEl,\n arrowEl: $arrowEl[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'popover',\n forceBackdropUnique,\n open() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n let [targetEl, animate] = args;\n if (typeof args[0] === 'boolean') [animate, targetEl] = args;\n if (targetEl) {\n popover.$targetEl = $(targetEl);\n popover.targetEl = popover.$targetEl[0];\n }\n return originalOpen.call(popover, animate);\n }\n });\n function handleResize() {\n popover.resize();\n }\n popover.on('popoverOpen', () => {\n popover.resize();\n app.on('resize', handleResize);\n $(window).on('keyboardDidShow keyboardDidHide', handleResize);\n popover.on('popoverClose popoverBeforeDestroy', () => {\n app.off('resize', handleResize);\n $(window).off('keyboardDidShow keyboardDidHide', handleResize);\n });\n });\n let touchStartTarget = null;\n function handleTouchStart(e) {\n touchStartTarget = e.target;\n }\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);\n if (keyboardOpened) return;\n if ($target.closest(popover.el).length === 0) {\n if (popover.params.closeByBackdropClick && popover.params.backdrop && popover.backdropEl && popover.backdropEl === target && touchStartTarget === target) {\n popover.close();\n } else if (popover.params.closeByOutsideClick && touchStartTarget === target) {\n const isAnotherPopoverBackdrop = $target.hasClass('popover-backdrop-unique') && target.f7PopoverRef !== popover || $target.hasClass('popover-backdrop') && target !== popover.backdropEl;\n const isAnotherPopoverTarget = target.closest('.popover') && target.closest('.popover') !== popover.$el[0];\n if (!isAnotherPopoverBackdrop && !isAnotherPopoverTarget) {\n popover.close();\n }\n }\n }\n }\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && popover.params.closeOnEscape) {\n popover.close();\n }\n }\n if (popover.params.closeOnEscape) {\n popover.on('popoverOpen', () => {\n $(document).on('keydown', onKeyDown);\n });\n popover.on('popoverClose', () => {\n $(document).off('keydown', onKeyDown);\n });\n }\n popover.on('popoverOpened', () => {\n if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {\n app.on('touchstart', handleTouchStart);\n app.on('click', handleClick);\n }\n });\n popover.on('popoverClose', () => {\n if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {\n app.off('touchstart', handleTouchStart);\n app.off('click', handleClick);\n }\n });\n $el[0].f7Modal = popover;\n return popover;\n }\n resize() {\n const popover = this;\n const {\n app,\n $el,\n $targetEl,\n $arrowEl\n } = popover;\n const {\n targetX,\n targetY,\n verticalPosition\n } = popover.params;\n $el.css({\n left: '',\n top: ''\n });\n const [width, height] = [$el.width(), $el.height()];\n let arrowSize = 0;\n let arrowLeft;\n let arrowTop;\n const hasArrow = $arrowEl.length > 0;\n const arrowMin = app.theme === 'ios' ? 13 : 24;\n if (hasArrow) {\n $arrowEl.removeClass('on-left on-right on-top on-bottom').css({\n left: '',\n top: ''\n });\n arrowSize = $arrowEl.width() / 2;\n }\n $el.removeClass('popover-on-left popover-on-right popover-on-top popover-on-bottom popover-on-middle').css({\n left: '',\n top: ''\n });\n let targetWidth;\n let targetHeight;\n let targetOffsetLeft;\n let targetOffsetTop;\n let safeAreaTop = parseInt($('html').css('--f7-safe-area-top'), 10);\n let safeAreaLeft = parseInt($('html').css('--f7-safe-area-left'), 10);\n let safeAreaRight = parseInt($('html').css('--f7-safe-area-right'), 10);\n if (Number.isNaN(safeAreaTop)) safeAreaTop = 0;\n if (Number.isNaN(safeAreaLeft)) safeAreaLeft = 0;\n if (Number.isNaN(safeAreaRight)) safeAreaRight = 0;\n if ($targetEl && $targetEl.length > 0) {\n targetWidth = $targetEl.outerWidth();\n targetHeight = $targetEl.outerHeight();\n const targetOffset = $targetEl.offset();\n targetOffsetLeft = targetOffset.left - app.left;\n targetOffsetTop = targetOffset.top - app.top;\n const targetParentPage = $targetEl.parents('.page');\n if (targetParentPage.length > 0) {\n targetOffsetTop -= targetParentPage[0].scrollTop;\n }\n } else if (typeof targetX !== 'undefined' && targetY !== 'undefined') {\n targetOffsetLeft = targetX;\n targetOffsetTop = targetY;\n targetWidth = popover.params.targetWidth || 0;\n targetHeight = popover.params.targetHeight || 0;\n }\n let [left, top, diff] = [0, 0, 0];\n // Top Position\n const forcedPosition = verticalPosition === 'auto' ? false : verticalPosition;\n let position = forcedPosition || 'top';\n if (forcedPosition === 'top' || !forcedPosition && height + arrowSize < targetOffsetTop - safeAreaTop) {\n // On top\n top = targetOffsetTop - height - arrowSize;\n } else if (forcedPosition === 'bottom' || !forcedPosition && height + arrowSize < app.height - targetOffsetTop - targetHeight) {\n // On bottom\n position = 'bottom';\n top = targetOffsetTop + targetHeight + arrowSize;\n } else {\n // On middle\n position = 'middle';\n top = targetHeight / 2 + targetOffsetTop - height / 2;\n diff = top;\n top = Math.max(5, Math.min(top, app.height - height - 5));\n diff -= top;\n }\n\n // Horizontal Position\n if (position === 'top' || position === 'bottom') {\n left = targetWidth / 2 + targetOffsetLeft - width / 2;\n diff = left;\n left = Math.max(5, Math.min(left, app.width - width - 5));\n if (safeAreaLeft) {\n left = Math.max(left, safeAreaLeft);\n }\n if (safeAreaRight && left + width > app.width - 5 - safeAreaRight) {\n left = app.width - 5 - safeAreaRight - width;\n }\n diff -= left;\n if (hasArrow) {\n if (position === 'top') {\n $arrowEl.addClass('on-bottom');\n }\n if (position === 'bottom') {\n $arrowEl.addClass('on-top');\n }\n arrowLeft = width / 2 - arrowSize + diff;\n arrowLeft = Math.max(Math.min(arrowLeft, width - arrowSize * 2 - arrowMin), arrowMin);\n $arrowEl.css({\n left: `${arrowLeft}px`\n });\n }\n } else if (position === 'middle') {\n left = targetOffsetLeft - width - arrowSize;\n if (hasArrow) $arrowEl.addClass('on-right');\n if (left < 5 || left + width + safeAreaRight > app.width || left < safeAreaLeft) {\n if (left < 5) left = targetOffsetLeft + targetWidth + arrowSize;\n if (left + width + safeAreaRight > app.width) left = app.width - width - 5 - safeAreaRight;\n if (left < safeAreaLeft) left = safeAreaLeft;\n if (hasArrow) $arrowEl.removeClass('on-right').addClass('on-left');\n }\n if (hasArrow) {\n arrowTop = height / 2 - arrowSize + diff;\n arrowTop = Math.max(Math.min(arrowTop, height - arrowSize * 2 - arrowMin), arrowMin);\n $arrowEl.css({\n top: `${arrowTop}px`\n });\n }\n }\n\n // Horizontal Position\n let hPosition;\n if (targetOffsetLeft < app.width / 2) {\n hPosition = 'right';\n } else {\n hPosition = 'left';\n }\n $el.addClass(`popover-on-${position} popover-on-${hPosition}`);\n\n // Apply Styles\n $el.css({\n top: `${top}px`,\n left: `${left}px`\n });\n }\n}\nexport default Popover;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Popover from './popover-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'popover',\n params: {\n popover: {\n verticalPosition: 'auto',\n arrow: true,\n backdrop: true,\n backdropEl: undefined,\n backdropUnique: false,\n closeByBackdropClick: true,\n closeByOutsideClick: true,\n closeOnEscape: false,\n containerEl: null\n }\n },\n static: {\n Popover\n },\n create() {\n const app = this;\n app.popover = extend(ModalMethods({\n app,\n constructor: Popover,\n defaultSelector: '.popover.modal-in'\n }), {\n open(popoverEl, targetEl, animate) {\n let $popoverEl = $(popoverEl);\n if ($popoverEl.length > 1) {\n // check if same popover in other page\n const $targetPage = $(targetEl).parents('.page');\n if ($targetPage.length) {\n $popoverEl.each(el => {\n const $el = $(el);\n if ($el.parents($targetPage)[0] === $targetPage[0]) {\n $popoverEl = $el;\n }\n });\n }\n }\n if ($popoverEl.length > 1) {\n $popoverEl = $popoverEl.eq($popoverEl.length - 1);\n }\n let popover = $popoverEl[0].f7Modal;\n const data = $popoverEl.dataset();\n if (!popover) {\n popover = new Popover(app, Object.assign({\n el: $popoverEl,\n targetEl\n }, data));\n }\n return popover.open(targetEl, animate);\n }\n });\n },\n clicks: {\n '.popover-open': function openPopover($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.popover.open(data.popover, $clickedEl, data.animate);\n },\n '.popover-close': function closePopover($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.popover.close(data.popover, data.animate, $clickedEl);\n }\n }\n};","/* eslint indent: [\"off\"] */\nimport { getWindow, getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\nimport { extend, nextTick } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\nimport $ from '../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Actions extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.actions, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const actions = this;\n const device = getDevice();\n const window = getWindow();\n const document = getDocument();\n actions.params = extendedParams;\n\n // Buttons\n let groups;\n if (actions.params.buttons) {\n groups = actions.params.buttons;\n if (!Array.isArray(groups[0])) groups = [groups];\n }\n actions.groups = groups;\n\n // Find Element\n let $el;\n if (actions.params.el) {\n $el = $(actions.params.el).eq(0);\n } else if (actions.params.content) {\n $el = $(actions.params.content).filter(node => node.nodeType === 1).eq(0);\n } else if (actions.params.buttons) {\n if (actions.params.convertToPopover) {\n actions.popoverHtml = actions.renderPopover();\n }\n actions.actionsHtml = actions.render();\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el && $el.length === 0 && !(actions.actionsHtml || actions.popoverHtml)) {\n return actions.destroy();\n }\n\n // Backdrop\n let $backdropEl;\n if (actions.params.backdrop && actions.params.backdropEl) {\n $backdropEl = $(actions.params.backdropEl);\n } else if (actions.params.backdrop) {\n if (actions.params.backdropUnique) {\n $backdropEl = $('
');\n actions.$containerEl.append($backdropEl);\n } else {\n $backdropEl = actions.$containerEl.children('.actions-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('
');\n actions.$containerEl.append($backdropEl);\n }\n }\n const originalOpen = actions.open;\n const originalClose = actions.close;\n let popover;\n function buttonOnClick(e) {\n const $buttonEl = $(this);\n let buttonIndex;\n let groupIndex;\n if ($buttonEl.hasClass('list-button') || $buttonEl.hasClass('item-link')) {\n buttonIndex = $buttonEl.parents('li').index();\n groupIndex = $buttonEl.parents('.list').index();\n } else {\n buttonIndex = $buttonEl.index();\n groupIndex = $buttonEl.parents('.actions-group').index();\n }\n if (typeof groups !== 'undefined') {\n const button = groups[groupIndex][buttonIndex];\n if (button.onClick) button.onClick(actions, e);\n if (actions.params.onClick) actions.params.onClick(actions, e);\n if (button.close !== false) actions.close();\n }\n }\n actions.open = function open(animate) {\n let convertToPopover = false;\n const {\n targetEl,\n targetX,\n targetY,\n targetWidth,\n targetHeight\n } = actions.params;\n if (actions.params.convertToPopover && (targetEl || targetX !== undefined && targetY !== undefined)) {\n // Popover\n if (actions.params.forceToPopover || device.ios && device.ipad || app.width >= 768 || device.desktop) {\n convertToPopover = true;\n }\n }\n if (convertToPopover && actions.popoverHtml) {\n popover = app.popover.create({\n containerEl: actions.params.containerEl,\n content: actions.popoverHtml,\n backdrop: actions.params.backdrop,\n targetEl,\n targetX,\n targetY,\n targetWidth,\n targetHeight,\n on: {\n open() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:open ${actions.type.toLowerCase()}:open`);\n actions.emit(`local::open modalOpen ${actions.type}Open`, actions);\n },\n opened() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:opened ${actions.type.toLowerCase()}:opened`);\n actions.emit(`local::opened modalOpened ${actions.type}Opened`, actions);\n },\n close() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:close ${actions.type.toLowerCase()}:close`);\n actions.emit(`local::close modalClose ${actions.type}Close`, actions);\n },\n closed() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:closed ${actions.type.toLowerCase()}:closed`);\n actions.emit(`local::closed modalClosed ${actions.type}Closed`, actions);\n }\n }\n });\n popover.open(animate);\n popover.once('popoverOpened', () => {\n popover.$el.find('.list-button, .item-link').each(buttonEl => {\n $(buttonEl).on('click', buttonOnClick);\n });\n });\n popover.once('popoverClosed', () => {\n popover.$el.find('.list-button, .item-link').each(buttonEl => {\n $(buttonEl).off('click', buttonOnClick);\n });\n nextTick(() => {\n popover.destroy();\n popover = undefined;\n });\n });\n } else {\n actions.$el = actions.actionsHtml ? $(actions.actionsHtml) : actions.$el;\n actions.$el[0].f7Modal = actions;\n if (actions.groups) {\n actions.$el.find('.actions-button').each(buttonEl => {\n $(buttonEl).on('click', buttonOnClick);\n });\n actions.once('actionsClosed', () => {\n actions.$el.find('.actions-button').each(buttonEl => {\n $(buttonEl).off('click', buttonOnClick);\n });\n });\n }\n actions.el = actions.$el[0];\n originalOpen.call(actions, animate);\n }\n return actions;\n };\n actions.close = function close(animate) {\n if (popover) {\n popover.close(animate);\n } else {\n originalClose.call(actions, animate);\n }\n return actions;\n };\n extend(actions, {\n app,\n $el,\n el: $el ? $el[0] : undefined,\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'actions'\n });\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);\n if (keyboardOpened) return;\n if ($target.closest(actions.el).length === 0) {\n if (actions.params.closeByBackdropClick && actions.params.backdrop && actions.backdropEl && actions.backdropEl === target) {\n actions.close();\n } else if (actions.params.closeByOutsideClick) {\n actions.close();\n }\n }\n }\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && actions.params.closeOnEscape) {\n actions.close();\n }\n }\n if (actions.params.closeOnEscape) {\n actions.on('open', () => {\n $(document).on('keydown', onKeyDown);\n });\n actions.on('close', () => {\n $(document).off('keydown', onKeyDown);\n });\n }\n actions.on('opened', () => {\n if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {\n app.on('click', handleClick);\n }\n });\n actions.on('close', () => {\n if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {\n app.off('click', handleClick);\n }\n });\n if ($el) {\n $el[0].f7Modal = actions;\n }\n return actions;\n }\n render() {\n const actions = this;\n if (actions.params.render) return actions.params.render.call(actions, actions);\n const {\n groups\n } = actions;\n const cssClass = actions.params.cssClass;\n return $jsx(\"div\", {\n class: `actions-modal${actions.params.grid ? ' actions-grid' : ''} ${cssClass || ''}`\n }, groups.map(group => $jsx(\"div\", {\n class: \"actions-group\"\n }, group.map(button => {\n const buttonClasses = [`actions-${button.label ? 'label' : 'button'}`];\n const {\n color,\n bg,\n strong,\n disabled,\n label,\n text,\n icon\n } = button;\n if (color) buttonClasses.push(`color-${color}`);\n if (bg) buttonClasses.push(`bg-color-${bg}`);\n if (strong) buttonClasses.push('actions-button-strong');\n if (disabled) buttonClasses.push('disabled');\n if (label) {\n return $jsx(\"div\", {\n class: buttonClasses.join(' ')\n }, text);\n }\n return $jsx(\"div\", {\n class: buttonClasses.join(' ')\n }, icon && $jsx(\"div\", {\n class: \"actions-button-media\"\n }, icon), $jsx(\"div\", {\n class: \"actions-button-text\"\n }, text));\n }))));\n }\n renderPopover() {\n const actions = this;\n if (actions.params.renderPopover) return actions.params.renderPopover.call(actions, actions);\n const {\n groups\n } = actions;\n const cssClass = actions.params.cssClass;\n return $jsx(\"div\", {\n class: `popover popover-from-actions ${cssClass || ''}`\n }, $jsx(\"div\", {\n class: \"popover-inner\"\n }, groups.map(group => $jsx(\"div\", {\n class: \"list\"\n }, $jsx(\"ul\", null, group.map(button => {\n const itemClasses = [];\n const {\n color,\n bg,\n strong,\n disabled,\n label,\n text,\n icon\n } = button;\n if (color) itemClasses.push(`color-${color}`);\n if (bg) itemClasses.push(`bg-color-${bg}`);\n if (strong) itemClasses.push('popover-from-actions-strong');\n if (disabled) itemClasses.push('disabled');\n if (label) {\n itemClasses.push('popover-from-actions-label');\n return `
  • ${text}
  • `;\n }\n if (icon) {\n itemClasses.push('item-link item-content');\n return $jsx(\"li\", null, $jsx(\"a\", {\n class: itemClasses.join(' ')\n }, $jsx(\"div\", {\n class: \"item-media\"\n }, icon), $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: \"item-title\"\n }, text))));\n }\n itemClasses.push('list-button');\n return $jsx(\"li\", null, $jsx(\"a\", {\n class: itemClasses.join(' ')\n }, text));\n }))))));\n }\n}\nexport default Actions;","import Actions from './actions-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'actions',\n params: {\n actions: {\n convertToPopover: true,\n forceToPopover: false,\n backdrop: true,\n backdropEl: undefined,\n backdropUnique: false,\n cssClass: null,\n closeByBackdropClick: true,\n closeOnEscape: false,\n render: null,\n renderPopover: null,\n containerEl: null\n }\n },\n static: {\n Actions\n },\n create() {\n const app = this;\n app.actions = ModalMethods({\n app,\n constructor: Actions,\n defaultSelector: '.actions-modal.modal-in'\n });\n },\n clicks: {\n '.actions-open': function openActions($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.actions.open(data.actions, data.animate, $clickedEl);\n },\n '.actions-close': function closeActions($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.actions.close(data.actions, data.animate, $clickedEl);\n }\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, now, getTranslate } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\nclass Sheet extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.sheet, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const sheet = this;\n const window = getWindow();\n const document = getDocument();\n const support = getSupport();\n const device = getDevice();\n sheet.params = extendedParams;\n if (typeof sheet.params.backdrop === 'undefined') {\n sheet.params.backdrop = app.theme !== 'ios';\n }\n\n // Find Element\n let $el;\n if (!sheet.params.el) {\n $el = $(sheet.params.content).filter(node => node.nodeType === 1).eq(0);\n } else {\n $el = $(sheet.params.el).eq(0);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return sheet.destroy();\n }\n let $backdropEl;\n if (sheet.params.backdrop && sheet.params.backdropEl) {\n $backdropEl = $(sheet.params.backdropEl);\n } else if (sheet.params.backdrop) {\n if (sheet.params.backdropUnique) {\n $backdropEl = $('
    ');\n sheet.$containerEl.append($backdropEl);\n } else {\n $backdropEl = sheet.$containerEl.children('.sheet-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('
    ');\n sheet.$containerEl.append($backdropEl);\n }\n }\n extend(sheet, {\n app,\n push: $el.hasClass('sheet-modal-push') || sheet.params.push,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'sheet',\n $htmlEl: $('html')\n });\n if (sheet.params.push) {\n $el.addClass('sheet-modal-push');\n }\n let $pageContentEl;\n function scrollToElementOnOpen() {\n const $scrollEl = $(sheet.params.scrollToEl).eq(0);\n if ($scrollEl.length === 0) return;\n $pageContentEl = $scrollEl.parents('.page-content');\n if ($pageContentEl.length === 0) return;\n const paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n const pageHeight = $pageContentEl[0].offsetHeight - paddingTop - $el.height();\n const pageScrollHeight = $pageContentEl[0].scrollHeight - paddingTop - $el.height();\n const pageScroll = $pageContentEl.scrollTop();\n let newPaddingBottom;\n const scrollElTop = $scrollEl.offset().top - paddingTop + $scrollEl[0].offsetHeight;\n if (scrollElTop > pageHeight) {\n const scrollTop = pageScroll + scrollElTop - pageHeight;\n if (scrollTop + pageHeight > pageScrollHeight) {\n newPaddingBottom = scrollTop + pageHeight - pageScrollHeight + paddingBottom;\n if (pageHeight === pageScrollHeight) {\n newPaddingBottom = $el.height();\n }\n $pageContentEl.css({\n 'padding-bottom': `${newPaddingBottom}px`\n });\n }\n $pageContentEl.scrollTop(scrollTop, 300);\n }\n }\n function scrollToElementOnClose() {\n if ($pageContentEl && $pageContentEl.length > 0) {\n $pageContentEl.css({\n 'padding-bottom': ''\n });\n }\n }\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);\n if (keyboardOpened) return;\n if ($target.closest(sheet.el).length === 0) {\n if (sheet.params.closeByBackdropClick && sheet.params.backdrop && sheet.backdropEl && sheet.backdropEl === target) {\n sheet.close();\n } else if (sheet.params.closeByOutsideClick) {\n sheet.close();\n }\n }\n }\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && sheet.params.closeOnEscape) {\n sheet.close();\n }\n }\n let pushOffset;\n function pushViewScale(offset) {\n return (app.height - offset * 2) / app.height;\n }\n const useBreakpoints = sheet.params.breakpoints && sheet.params.breakpoints.length > 0;\n let isTouched = false;\n let startTouch;\n let currentTouch;\n let isScrolling;\n let touchStartTime;\n let touchesDiff;\n let isMoved = false;\n let isTopSheetModal;\n let swipeStepTranslate;\n let startTranslate;\n let currentTranslate;\n let sheetElOffsetHeight;\n let minTranslate;\n let maxTranslate;\n let $pushViewEl;\n let pushBorderRadius;\n let sheetPageContentEl;\n let sheetPageContentScrollTop;\n let sheetPageContentScrollHeight;\n let sheetPageContentOffsetHeight;\n let breakpointsTranslate = [];\n let currentBreakpointIndex;\n let backdropBreakpointSet = true;\n function handleTouchStart(e) {\n if (isTouched || !(sheet.params.swipeToClose || sheet.params.swipeToStep) || !e.isTrusted) return;\n if (sheet.params.swipeHandler && $(e.target).closest(sheet.params.swipeHandler).length === 0) {\n return;\n }\n if ($(e.target).closest('.sortable-handler').length > 0) return;\n isTouched = true;\n isMoved = false;\n startTouch = {\n x: e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY\n };\n touchStartTime = now();\n isScrolling = undefined;\n isTopSheetModal = $el.hasClass('sheet-modal-top');\n if (!sheet.params.swipeHandler && e.type === 'touchstart') {\n sheetPageContentEl = $(e.target).closest('.page-content')[0];\n }\n }\n function handleTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n currentTouch = {\n x: e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY\n };\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(currentTouch.x - startTouch.x) > Math.abs(currentTouch.y - startTouch.y));\n }\n if (isScrolling) {\n isTouched = false;\n isMoved = false;\n return;\n }\n touchesDiff = startTouch.y - currentTouch.y;\n const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n if (!isMoved) {\n if (sheetPageContentEl && !$el.hasClass('modal-in-swipe-step')) {\n sheetPageContentScrollTop = sheetPageContentEl.scrollTop;\n sheetPageContentScrollHeight = sheetPageContentEl.scrollHeight;\n sheetPageContentOffsetHeight = sheetPageContentEl.offsetHeight;\n if (!(sheetPageContentScrollHeight === sheetPageContentOffsetHeight) && !(direction === 'to-bottom' && sheetPageContentScrollTop === 0) && !(direction === 'to-top' && sheetPageContentScrollTop === sheetPageContentScrollHeight - sheetPageContentOffsetHeight)) {\n $el.transform('');\n isTouched = false;\n isMoved = false;\n return;\n }\n }\n if (sheet.push && pushOffset) {\n $pushViewEl = app.$el.children('.view, .views');\n }\n sheetElOffsetHeight = $el[0].offsetHeight;\n startTranslate = getTranslate($el[0], 'y');\n if (isTopSheetModal) {\n minTranslate = sheet.params.swipeToClose ? -sheetElOffsetHeight : -swipeStepTranslate;\n maxTranslate = 0;\n } else {\n minTranslate = 0;\n maxTranslate = sheet.params.swipeToClose ? sheetElOffsetHeight : useBreakpoints ? breakpointsTranslate[0] : swipeStepTranslate;\n }\n isMoved = true;\n }\n currentTranslate = startTranslate - touchesDiff;\n currentTranslate = Math.min(Math.max(currentTranslate, minTranslate), maxTranslate);\n e.preventDefault();\n if (useBreakpoints) {\n let progress = isTopSheetModal ? 1 + currentTranslate / sheetElOffsetHeight : 1 - currentTranslate / sheetElOffsetHeight;\n progress = Math.abs(progress);\n progress = Math.min(Math.max(progress, 0), 1);\n // eslint-disable-next-line\n setBackdropBreakpoint(progress);\n // eslint-disable-next-line\n setPushBreakpoint(progress);\n }\n if (sheet.push && pushOffset && !useBreakpoints) {\n let progress = (currentTranslate - startTranslate) / sheetElOffsetHeight;\n if (sheet.params.swipeToStep) {\n if (isTopSheetModal) {\n progress = currentTranslate / swipeStepTranslate;\n } else {\n progress = 1 - (swipeStepTranslate - currentTranslate) / swipeStepTranslate;\n }\n }\n progress = Math.abs(progress);\n progress = Math.min(Math.max(progress, 0), 1);\n const pushProgress = 1 - progress;\n const scale = 1 - (1 - pushViewScale(pushOffset)) * pushProgress;\n $pushViewEl.transition(0).forEach(el => {\n el.style.setProperty('transform', `translate3d(0,0,0) scale(${scale})`, 'important');\n });\n if (sheet.params.swipeToStep) {\n $pushViewEl.css('border-radius', `${pushBorderRadius * pushProgress}px`);\n }\n }\n $el.transition(0).transform(`translate3d(0,${currentTranslate}px,0)`);\n if (sheet.params.swipeToStep) {\n let progress;\n if (isTopSheetModal) {\n progress = 1 - currentTranslate / swipeStepTranslate;\n } else {\n progress = (swipeStepTranslate - currentTranslate) / swipeStepTranslate;\n }\n progress = Math.min(Math.max(progress, 0), 1);\n $el.trigger('sheet:stepprogress', progress);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, progress);\n }\n }\n function handleTouchEnd() {\n isTouched = false;\n if (!isMoved) {\n return;\n }\n isMoved = false;\n $el.transform('').transition('');\n if (sheet.push && pushOffset) {\n $pushViewEl.transition('');\n if (!useBreakpoints) {\n $pushViewEl.transform('');\n $pushViewEl.css('border-radius', '');\n }\n }\n const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n const diff = Math.abs(touchesDiff);\n if (diff === 0 || currentTranslate === startTranslate) return;\n const timeDiff = new Date().getTime() - touchStartTime;\n if (!sheet.params.swipeToStep && !useBreakpoints) {\n if (direction !== (isTopSheetModal ? 'to-top' : 'to-bottom')) {\n return;\n }\n if (timeDiff < 300 && diff > 20 || timeDiff >= 300 && diff > sheetElOffsetHeight / 2) {\n sheet.close();\n }\n return;\n }\n const openDirection = isTopSheetModal ? 'to-bottom' : 'to-top';\n const closeDirection = isTopSheetModal ? 'to-top' : 'to-bottom';\n const absCurrentTranslate = Math.abs(currentTranslate);\n const absSwipeStepTranslate = Math.abs(swipeStepTranslate);\n if (timeDiff < 300 && diff > 10 && useBreakpoints) {\n // SHORT SWIPES BREAKPOINTS\n if (direction === openDirection && typeof currentBreakpointIndex !== 'undefined') {\n if (currentBreakpointIndex === params.breakpoints.length - 1) {\n // open\n sheet.setBreakpoint(1);\n } else {\n // move to next breakpoint\n currentBreakpointIndex = Math.min(breakpointsTranslate.length - 1, currentBreakpointIndex + 1);\n sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n }\n }\n if (direction === closeDirection) {\n if (currentBreakpointIndex === 0) {\n // close\n sheet.close();\n } else {\n // move to prev breakpoint\n if (typeof currentBreakpointIndex === 'undefined') {\n currentBreakpointIndex = params.breakpoints.length - 1;\n } else {\n currentBreakpointIndex = Math.max(0, currentBreakpointIndex - 1);\n }\n sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n }\n }\n } else if (timeDiff < 300 && diff > 10) {\n // SHORT SWIPES SWIPE STEP\n if (direction === openDirection && absCurrentTranslate < absSwipeStepTranslate) {\n // open step\n $el.removeClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 1);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 1);\n sheet.emit('local::_swipeStep', false);\n $el.trigger('sheet:stepopen');\n sheet.emit('local::stepOpen sheetStepOpen', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n $pushViewEl.css('border-radius', '');\n }\n }\n if (direction === closeDirection && absCurrentTranslate > absSwipeStepTranslate) {\n // close sheet\n if (sheet.params.swipeToClose) {\n sheet.close();\n } else {\n // close step\n $el.addClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 0);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n sheet.emit('local::_swipeStep', true);\n $el.trigger('sheet:stepclose');\n sheet.emit('local::stepClose sheetStepClose', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n $pushViewEl.css('border-radius', '0px');\n }\n }\n }\n if (direction === closeDirection && absCurrentTranslate <= absSwipeStepTranslate) {\n // close step\n $el.addClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 0);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n sheet.emit('local::_swipeStep', true);\n $el.trigger('sheet:stepclose');\n sheet.emit('local::stepClose sheetStepClose', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n $pushViewEl.css('border-radius', '0px');\n }\n }\n return;\n }\n if (timeDiff >= 300 && useBreakpoints) {\n // LONG SWIPES BREAKPOINTS\n const allBreakpoints = [sheetElOffsetHeight, ...breakpointsTranslate, 0];\n const closestTranslate = allBreakpoints.reduce((prev, curr) => {\n return Math.abs(curr - currentTranslate) < Math.abs(prev - currentTranslate) ? curr : prev;\n });\n const closestIndex = allBreakpoints.indexOf(closestTranslate);\n if (closestTranslate === 0) {\n // open\n sheet.setBreakpoint(1);\n } else if (closestIndex === 0) {\n // close\n sheet.close();\n } else {\n // set bp\n currentBreakpointIndex = closestIndex - 1;\n sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n }\n } else if (timeDiff >= 300) {\n // LONG SWIPES SWIPE STEP\n const stepOpened = !$el.hasClass('modal-in-swipe-step');\n if (!stepOpened) {\n if (absCurrentTranslate < absSwipeStepTranslate / 2) {\n // open step\n $el.removeClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 1);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 1);\n sheet.emit('local::_swipeStep', false);\n $el.trigger('sheet:stepopen');\n sheet.emit('local::stepOpen sheetStepOpen', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n $pushViewEl.css('border-radius', '');\n }\n } else if (absCurrentTranslate - absSwipeStepTranslate > (sheetElOffsetHeight - absSwipeStepTranslate) / 2) {\n // close sheet\n if (sheet.params.swipeToClose) sheet.close();\n }\n } else if (stepOpened) {\n if (absCurrentTranslate > absSwipeStepTranslate + (sheetElOffsetHeight - absSwipeStepTranslate) / 2) {\n // close sheet\n if (sheet.params.swipeToClose) sheet.close();\n } else if (absCurrentTranslate > absSwipeStepTranslate / 2) {\n // close step\n $el.addClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 0);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n sheet.emit('local::_swipeStep', true);\n $el.trigger('sheet:stepclose');\n sheet.emit('local::stepClose sheetStepClose', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n $pushViewEl.css('border-radius', '0px');\n }\n }\n }\n }\n }\n const setPushBreakpoint = breakpoint => {\n const {\n pushBreakpoint\n } = params;\n if (pushBreakpoint === null || typeof pushBreakpoint === 'undefined' || !sheet.push || !pushOffset) return;\n if (breakpoint >= pushBreakpoint) {\n sheet.$htmlEl.addClass('with-modal-sheet-push').removeClass('with-modal-sheet-push-closing');\n $pushViewEl.transition('').forEach(el => {\n el.style.setProperty('transform', `translate3d(0,0,0) scale(${pushViewScale(pushOffset)})`, 'important');\n });\n $pushViewEl.css('border-radius', `${pushBorderRadius * 1}px`);\n } else {\n const pushBreakpoints = [0, ...params.breakpoints, 1];\n const pushTransparentBreakpoint = pushBreakpoints[pushBreakpoints.indexOf(pushBreakpoint) - 1];\n if (breakpoint <= pushTransparentBreakpoint) {\n $pushViewEl.transition('').css('transform', '');\n $pushViewEl.css('border-radius', '');\n sheet.$htmlEl.removeClass('with-modal-sheet-push');\n if (breakpoint === pushTransparentBreakpoint) {\n sheet.$htmlEl.addClass('with-modal-sheet-push-closing');\n }\n } else {\n const progress = (breakpoint - pushTransparentBreakpoint) / (pushBreakpoint - pushTransparentBreakpoint);\n sheet.$htmlEl.addClass('with-modal-sheet-push').removeClass('with-modal-sheet-push-closing');\n $pushViewEl.transition(0).forEach(el => {\n el.style.setProperty('transform', `translate3d(0,0,0) scale(${1 - (1 - pushViewScale(pushOffset)) * progress})`, 'important');\n });\n $pushViewEl.css('border-radius', `${pushBorderRadius * progress}px`);\n }\n }\n };\n const setBackdropBreakpoint = breakpoint => {\n const {\n backdrop,\n backdropBreakpoint\n } = params;\n if (!backdropBreakpoint || !backdrop || !$backdropEl.length) return;\n if (breakpoint >= backdropBreakpoint) {\n if (!backdropBreakpointSet) {\n $backdropEl.transition('').css({\n opacity: '',\n pointerEvents: ''\n });\n }\n backdropBreakpointSet = true;\n } else {\n const backdropBreakpoints = [0, ...params.breakpoints, 1];\n const backdropTransparentBreakpoint = backdropBreakpoints[backdropBreakpoints.indexOf(backdropBreakpoint) - 1];\n if (breakpoint <= backdropTransparentBreakpoint) {\n if (backdropBreakpointSet) {\n $backdropEl.transition('').css({\n opacity: 0,\n pointerEvents: 'none'\n });\n }\n backdropBreakpointSet = false;\n } else {\n const progress = (breakpoint - backdropTransparentBreakpoint) / (backdropBreakpoint - backdropTransparentBreakpoint);\n $backdropEl.transition(0).css({\n opacity: progress,\n pointerEvents: 'auto'\n });\n }\n }\n };\n sheet.calcBreakpoints = () => {\n if (!useBreakpoints) {\n return;\n }\n const fullSize = $el[0].offsetHeight;\n // eslint-disable-next-line\n const isTopSheetModal = $el.hasClass('sheet-modal-top');\n breakpointsTranslate = [];\n sheet.params.breakpoints.forEach(ratio => {\n breakpointsTranslate.push((fullSize - fullSize * ratio) * (isTopSheetModal ? -1 : 1));\n });\n };\n sheet.setBreakpoint = value => {\n if (!useBreakpoints) {\n return sheet;\n }\n if (value === 1) {\n // open\n if (!sheet.opened) {\n sheet.open();\n }\n $el.removeClass('modal-in-breakpoint');\n currentBreakpointIndex = undefined;\n setBackdropBreakpoint(value);\n setPushBreakpoint(value);\n $el.trigger('sheet:breakpoint', value);\n sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);\n } else if (value === 0) {\n // close\n $el.trigger('sheet:breakpoint', value);\n sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);\n sheet.close();\n } else {\n const index = params.breakpoints.indexOf(value);\n if (index < 0) return sheet;\n if (!sheet.opened) {\n sheet.open();\n }\n setBackdropBreakpoint(value);\n setPushBreakpoint(value);\n $el.trigger('sheet:breakpoint', value);\n sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);\n currentBreakpointIndex = index;\n $el[0].style.setProperty('--f7-sheet-breakpoint', `${breakpointsTranslate[index]}px`);\n $el.addClass('modal-in-breakpoint');\n }\n return sheet;\n };\n const setBreakpointsOnResize = () => {\n sheet.calcBreakpoints();\n if (typeof currentBreakpointIndex !== 'undefined') {\n sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n }\n };\n sheet.setSwipeStep = function setSwipeStep(byResize) {\n if (byResize === void 0) {\n byResize = true;\n }\n const $swipeStepEl = $el.find('.sheet-modal-swipe-step').eq(0);\n if (!$swipeStepEl.length) return;\n\n // eslint-disable-next-line\n if ($el.hasClass('sheet-modal-top')) {\n swipeStepTranslate = -($swipeStepEl.offset().top - $el.offset().top + $swipeStepEl[0].offsetHeight);\n } else {\n swipeStepTranslate = $el[0].offsetHeight - ($swipeStepEl.offset().top - $el.offset().top + $swipeStepEl[0].offsetHeight);\n }\n $el[0].style.setProperty('--f7-sheet-swipe-step', `${swipeStepTranslate}px`);\n if (!byResize) {\n $el.addClass('modal-in-swipe-step');\n sheet.emit('local::_swipeStep', true);\n }\n };\n function onResize() {\n if (useBreakpoints) {\n setBreakpointsOnResize();\n } else {\n sheet.setSwipeStep(true);\n }\n }\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n if (sheet.params.swipeToClose || sheet.params.swipeToStep || useBreakpoints) {\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n sheet.once('sheetDestroy', () => {\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n });\n }\n sheet.on('open', () => {\n if (sheet.params.closeOnEscape) {\n $(document).on('keydown', onKeyDown);\n }\n $el.prevAll('.popup.modal-in').addClass('popup-behind');\n app.on('resize', onResize);\n if (sheet.params.scrollToEl) {\n scrollToElementOnOpen();\n }\n if (sheet.push) {\n pushOffset = parseInt($el.css('--f7-sheet-push-offset'), 10);\n if (Number.isNaN(pushOffset)) pushOffset = 0;\n if (!pushOffset) pushOffset = app.theme === 'ios' ? 44 : 48;\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-offset', `${pushOffset}px`);\n $el.addClass('sheet-modal-push');\n if (!useBreakpoints) {\n sheet.$htmlEl.addClass('with-modal-sheet-push');\n }\n if (!sheet.params.swipeToStep && !useBreakpoints) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n } else {\n $pushViewEl = app.$el.children('.view, .views');\n pushBorderRadius = app.theme === 'ios' ? 10 : 16;\n $pushViewEl.css('border-radius', '0px');\n }\n }\n if (useBreakpoints) {\n sheet.calcBreakpoints();\n sheet.setBreakpoint(params.breakpoints[0]);\n } else if (sheet.params.swipeToStep) {\n sheet.setSwipeStep(false);\n }\n });\n sheet.on('opened', () => {\n if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n sheet.on('close', () => {\n currentBreakpointIndex = undefined;\n if (sheet.params.swipeToStep || useBreakpoints) {\n $el.removeClass('modal-in-swipe-step modal-in-breakpoint');\n sheet.emit('local::_swipeStep', false);\n }\n app.off('resize', onResize);\n if (sheet.params.closeOnEscape) {\n $(document).off('keydown', onKeyDown);\n }\n if (sheet.params.scrollToEl) {\n scrollToElementOnClose();\n }\n if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n $el.prevAll('.popup.modal-in').eq(0).removeClass('popup-behind');\n if (sheet.push && pushOffset) {\n sheet.$htmlEl.removeClass('with-modal-sheet-push');\n sheet.$htmlEl.addClass('with-modal-sheet-push-closing');\n if ($pushViewEl) {\n $pushViewEl.transform('');\n $pushViewEl.css('border-radius', '');\n }\n }\n });\n sheet.on('closed', () => {\n if (sheet.push && pushOffset) {\n sheet.$htmlEl.removeClass('with-modal-sheet-push-closing');\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-offset');\n }\n });\n sheet.stepOpen = function stepOpen() {\n $el.removeClass('modal-in-swipe-step');\n sheet.emit('local::_swipeStep', false);\n if (sheet.push) {\n if (!pushOffset) {\n pushOffset = parseInt($el.css('--f7-sheet-push-offset'), 10);\n if (Number.isNaN(pushOffset)) pushOffset = 0;\n }\n if (pushOffset) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n }\n }\n };\n sheet.stepClose = function stepClose() {\n $el.addClass('modal-in-swipe-step');\n sheet.emit('local::_swipeStep', true);\n if (sheet.push) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n }\n };\n sheet.stepToggle = function stepToggle() {\n $el.toggleClass('modal-in-swipe-step');\n sheet.emit('local::_swipeStep', $el.hasClass('modal-in-swipe-step'));\n };\n $el[0].f7Modal = sheet;\n return sheet;\n }\n}\nexport default Sheet;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Sheet from './sheet-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'sheet',\n params: {\n sheet: {\n push: false,\n backdrop: undefined,\n backdropEl: undefined,\n backdropUnique: false,\n closeByBackdropClick: true,\n closeByOutsideClick: false,\n closeOnEscape: false,\n swipeToClose: false,\n swipeToStep: false,\n breakpoints: [],\n backdropBreakpoint: 0,\n pushBreakpoint: 0,\n swipeHandler: null,\n containerEl: null\n }\n },\n static: {\n Sheet\n },\n create() {\n const app = this;\n app.sheet = extend({}, ModalMethods({\n app,\n constructor: Sheet,\n defaultSelector: '.sheet-modal.modal-in'\n }), {\n stepOpen(sheet) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.stepOpen) return sheetInstance.stepOpen();\n return undefined;\n },\n stepClose(sheet) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.stepClose) return sheetInstance.stepClose();\n return undefined;\n },\n stepToggle(sheet) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.stepToggle) return sheetInstance.stepToggle();\n return undefined;\n },\n setBreakpoint(sheet, breakpoint) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.setBreakpoint) return sheetInstance.setBreakpoint(breakpoint);\n return undefined;\n }\n });\n },\n clicks: {\n '.sheet-open': function openSheet($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n if ($('.sheet-modal.modal-in').length > 0 && data.sheet && $(data.sheet)[0] !== $('.sheet-modal.modal-in')[0]) {\n app.sheet.close('.sheet-modal.modal-in');\n }\n app.sheet.open(data.sheet, data.animate, $clickedEl);\n },\n '.sheet-close': function closeSheet($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.sheet.close(data.sheet, data.animate, $clickedEl);\n }\n }\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, nextTick } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Toast extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.toast, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const toast = this;\n const window = getWindow();\n toast.app = app;\n toast.params = extendedParams;\n const {\n closeButton,\n closeTimeout\n } = toast.params;\n let $el;\n if (!toast.params.el) {\n // Find Element\n const toastHtml = toast.render();\n $el = $(toastHtml);\n } else {\n $el = $(toast.params.el);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return toast.destroy();\n }\n extend(toast, {\n $el,\n el: $el[0],\n type: 'toast'\n });\n $el[0].f7Modal = toast;\n if (closeButton) {\n $el.find('.toast-button').on('click', () => {\n toast.emit('local::closeButtonClick toastCloseButtonClick', toast);\n toast.close();\n });\n toast.on('beforeDestroy', () => {\n $el.find('.toast-button').off('click');\n });\n }\n let timeoutId;\n toast.on('open', () => {\n $('.toast.modal-in').each(openedEl => {\n const toastInstance = app.toast.get(openedEl);\n if (openedEl !== toast.el && toastInstance) {\n toastInstance.close();\n }\n });\n if (closeTimeout) {\n timeoutId = nextTick(() => {\n toast.close();\n }, closeTimeout);\n }\n });\n toast.on('close', () => {\n window.clearTimeout(timeoutId);\n });\n if (toast.params.destroyOnClose) {\n toast.once('closed', () => {\n setTimeout(() => {\n toast.destroy();\n }, 0);\n });\n }\n return toast;\n }\n render() {\n const toast = this;\n if (toast.params.render) return toast.params.render.call(toast, toast);\n const {\n position,\n horizontalPosition,\n cssClass,\n icon,\n text,\n closeButton,\n closeButtonColor,\n closeButtonText\n } = toast.params;\n const horizontalClass = position === 'top' || position === 'bottom' ? `toast-horizontal-${horizontalPosition}` : '';\n return $jsx(\"div\", {\n class: `toast toast-${position} ${horizontalClass} ${cssClass || ''} ${icon ? 'toast-with-icon' : ''}`\n }, $jsx(\"div\", {\n class: \"toast-content\"\n }, icon && $jsx(\"div\", {\n class: \"toast-icon\"\n }, icon), $jsx(\"div\", {\n class: \"toast-text\"\n }, text), closeButton && !icon && $jsx(\"a\", {\n class: `toast-button button ${closeButtonColor ? `color-${closeButtonColor}` : ''}`\n }, closeButtonText)));\n }\n}\nexport default Toast;","import { extend } from '../../shared/utils.js';\nimport Toast from './toast-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'toast',\n static: {\n Toast\n },\n create() {\n const app = this;\n app.toast = extend({}, ModalMethods({\n app,\n constructor: Toast,\n defaultSelector: '.toast.modal-in'\n }), {\n // Shortcuts\n show(params) {\n extend(params, {\n destroyOnClose: true\n });\n return new Toast(app, params).open();\n }\n });\n },\n params: {\n toast: {\n icon: null,\n text: null,\n position: 'bottom',\n horizontalPosition: 'left',\n closeButton: false,\n closeButtonColor: null,\n closeButtonText: 'Ok',\n closeTimeout: null,\n cssClass: null,\n render: null,\n containerEl: null\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { bindMethods, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\nconst Preloader = {\n init(el) {\n const app = this;\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n const $el = $(el);\n if ($el.length === 0 || $el.children('.preloader-inner').length > 0 || $el.children('.preloader-inner-line').length > 0) return;\n $el.append(preloaders[`${app.theme}PreloaderContent`]);\n },\n // Modal\n visible: false,\n show(color) {\n if (color === void 0) {\n color = 'white';\n }\n const app = this;\n if (Preloader.visible) return;\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';\n $('html').addClass('with-modal-preloader');\n // prettier-ignore\n app.$el.append(`\n
    \n
    \n
    ${preloaderInner}
    \n
    \n `);\n Preloader.visible = true;\n },\n showIn(el, color) {\n if (color === void 0) {\n color = 'white';\n }\n const app = this;\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';\n $(el || 'html').addClass('with-modal-preloader');\n // prettier-ignore\n $(el || app.$el).append(`\n
    \n
    \n
    ${preloaderInner}
    \n
    \n `);\n },\n hide() {\n const app = this;\n if (!Preloader.visible) return;\n $('html').removeClass('with-modal-preloader');\n app.$el.find('.preloader-backdrop, .preloader-modal').remove();\n Preloader.visible = false;\n },\n hideIn(el) {\n const app = this;\n $(el || 'html').removeClass('with-modal-preloader');\n $(el || app.$el).find('.preloader-backdrop, .preloader-modal').remove();\n }\n};\nexport default {\n name: 'preloader',\n create() {\n const app = this;\n bindMethods(app, {\n preloader: Preloader\n });\n },\n on: {\n photoBrowserOpen(pb) {\n const app = this;\n pb.$el.find('.preloader').each(preloaderEl => {\n app.preloader.init(preloaderEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.preloader').each(preloaderEl => {\n app.preloader.init(preloaderEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.preloader').each(preloaderEl => {\n app.preloader.init(preloaderEl);\n });\n }\n },\n vnode: {\n preloader: {\n insert(vnode) {\n const app = this;\n const preloaderEl = vnode.elm;\n app.preloader.init(preloaderEl);\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nconst Progressbar = {\n set() {\n const app = this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n let [el, progress, duration] = args;\n if (typeof args[0] === 'number') {\n [progress, duration] = args;\n el = app.$el;\n }\n if (typeof progress === 'undefined' || progress === null) return el;\n if (!progress) progress = 0;\n const $el = $(el || app.$el);\n if ($el.length === 0) {\n return el;\n }\n const progressNormalized = Math.min(Math.max(progress, 0), 100);\n let $progressbarEl;\n if ($el.hasClass('progressbar')) $progressbarEl = $el.eq(0);else {\n $progressbarEl = $el.children('.progressbar');\n }\n if ($progressbarEl.length === 0 || $progressbarEl.hasClass('progressbar-infinite')) {\n return $progressbarEl;\n }\n let $progressbarLine = $progressbarEl.children('span');\n if ($progressbarLine.length === 0) {\n $progressbarLine = $('');\n $progressbarEl.append($progressbarLine);\n }\n $progressbarLine.transition(typeof duration !== 'undefined' ? duration : '').transform(`translate3d(${(-100 + progressNormalized) * (app.rtl ? -1 : 1)}%,0,0)`);\n return $progressbarEl[0];\n },\n show() {\n const app = this;\n\n // '.page', 50, 'multi'\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n let [el, progress, color] = args;\n let type = 'determined';\n if (args.length === 2) {\n if ((typeof args[0] === 'string' || typeof args[0] === 'object') && typeof args[1] === 'string') {\n // '.page', 'multi'\n [el, color, progress] = args;\n type = 'infinite';\n } else if (typeof args[0] === 'number' && typeof args[1] === 'string') {\n // 50, 'multi'\n [progress, color] = args;\n el = app.$el;\n }\n } else if (args.length === 1) {\n if (typeof args[0] === 'number') {\n el = app.$el;\n progress = args[0];\n } else if (typeof args[0] === 'string') {\n type = 'infinite';\n el = app.$el;\n color = args[0];\n }\n } else if (args.length === 0) {\n type = 'infinite';\n el = app.$el;\n }\n const $el = $(el);\n if ($el.length === 0) return undefined;\n let $progressbarEl;\n if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {\n $progressbarEl = $el;\n } else {\n $progressbarEl = $el.children('.progressbar:not(.progressbar-out), .progressbar-infinite:not(.progressbar-out)');\n if ($progressbarEl.length === 0) {\n $progressbarEl = $(`\n \n ${type === 'infinite' ? '' : ''}\n `);\n $el.append($progressbarEl);\n }\n }\n if (typeof progress !== 'undefined') {\n app.progressbar.set($progressbarEl, progress);\n }\n return $progressbarEl[0];\n },\n hide(el, removeAfterHide) {\n if (removeAfterHide === void 0) {\n removeAfterHide = true;\n }\n const app = this;\n const $el = $(el || app.$el);\n if ($el.length === 0) return undefined;\n let $progressbarEl;\n if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {\n $progressbarEl = $el;\n } else {\n $progressbarEl = $el.children('.progressbar, .progressbar-infinite');\n }\n if ($progressbarEl.length === 0 || !$progressbarEl.hasClass('progressbar-in') || $progressbarEl.hasClass('progressbar-out')) {\n return $progressbarEl;\n }\n $progressbarEl.removeClass('progressbar-in').addClass('progressbar-out').animationEnd(() => {\n if (removeAfterHide) {\n $progressbarEl.remove();\n }\n });\n return $progressbarEl;\n }\n};\nexport default {\n name: 'progressbar',\n create() {\n const app = this;\n bindMethods(app, {\n progressbar: Progressbar\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.progressbar').each(progressbarEl => {\n const $progressbarEl = $(progressbarEl);\n app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.progressbar').each(progressbarEl => {\n const $progressbarEl = $(progressbarEl);\n app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));\n });\n }\n },\n vnode: {\n progressbar: {\n insert(vnode) {\n const app = this;\n const el = vnode.elm;\n app.progressbar.set(el, el.getAttribute('data-progress'));\n },\n update(vnode) {\n const app = this;\n const el = vnode.elm;\n app.progressbar.set(el, el.getAttribute('data-progress'));\n }\n }\n }\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nconst Sortable = {\n init() {\n const app = this;\n const document = getDocument();\n let isTouched;\n let isMoved;\n let touchStartY;\n let touchesDiff;\n let $sortingEl;\n let $sortingItems;\n let $sortableContainer;\n let sortingElHeight;\n let minTop;\n let maxTop;\n let $insertAfterEl;\n let $insertBeforeEl;\n let indexFrom;\n let $pageEl;\n let $pageContentEl;\n let pageHeight;\n let pageOffset;\n let sortingElOffsetLocal;\n let sortingElOffsetTop;\n let initialScrollTop;\n let wasTapHold;\n function handleTouchStart(e, isTapHold) {\n isMoved = false;\n isTouched = true;\n wasTapHold = false;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n $sortingEl = $(e.target).closest('li').eq(0);\n indexFrom = $sortingEl.index();\n $sortableContainer = $sortingEl.parents('.sortable');\n const $listGroup = $sortingEl.parents('.list-group');\n if ($listGroup.length && $listGroup.parents($sortableContainer).length) {\n $sortableContainer = $listGroup;\n }\n $sortingItems = $sortableContainer.children('ul').children('li:not(.disallow-sorting):not(.no-sorting)');\n if (app.panel) app.panel.allowOpen = false;\n if (app.swipeout) app.swipeout.allow = false;\n if (isTapHold) {\n $sortingEl.addClass('sorting');\n $sortableContainer.addClass('sortable-sorting');\n wasTapHold = true;\n }\n }\n function handleTouchMove(e) {\n if (!isTouched || !$sortingEl) return;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (!isMoved) {\n $pageEl = $sortingEl.parents('.page');\n $pageContentEl = $sortingEl.parents('.page-content');\n const paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n initialScrollTop = $pageContentEl[0].scrollTop;\n pageOffset = $pageEl.offset().top + paddingTop;\n pageHeight = $pageEl.height() - paddingTop - paddingBottom;\n $sortingEl.addClass('sorting');\n $sortableContainer.addClass('sortable-sorting');\n sortingElOffsetLocal = $sortingEl[0].offsetTop;\n minTop = $sortingEl[0].offsetTop;\n maxTop = $sortingEl.parent().height() - sortingElOffsetLocal - $sortingEl.height();\n sortingElHeight = $sortingEl[0].offsetHeight;\n sortingElOffsetTop = $sortingEl.offset().top;\n }\n isMoved = true;\n e.preventDefault();\n e.f7PreventSwipePanel = true;\n touchesDiff = pageY - touchStartY;\n const translateScrollOffset = $pageContentEl[0].scrollTop - initialScrollTop;\n const translate = Math.min(Math.max(touchesDiff + translateScrollOffset, -minTop), maxTop);\n $sortingEl.transform(`translate3d(0,${translate}px,0)`);\n const scrollAddition = 44;\n let allowScroll = true;\n if (touchesDiff + translateScrollOffset + scrollAddition < -minTop) {\n allowScroll = false;\n }\n if (touchesDiff + translateScrollOffset - scrollAddition > maxTop) {\n allowScroll = false;\n }\n $insertBeforeEl = undefined;\n $insertAfterEl = undefined;\n let scrollDiff;\n if (allowScroll) {\n if (sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition > pageOffset + pageHeight) {\n // To Bottom\n scrollDiff = sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition - (pageOffset + pageHeight);\n }\n if (sortingElOffsetTop + touchesDiff < pageOffset + scrollAddition) {\n // To Top\n scrollDiff = sortingElOffsetTop + touchesDiff - pageOffset - scrollAddition;\n }\n if (scrollDiff) {\n $pageContentEl[0].scrollTop += scrollDiff;\n }\n }\n $sortingItems.each(el => {\n const $currentEl = $(el);\n if ($currentEl[0] === $sortingEl[0]) return;\n const currentElOffset = $currentEl[0].offsetTop;\n const currentElHeight = $currentEl.height();\n const sortingElOffset = sortingElOffsetLocal + translate;\n let currentTranslate;\n const prevTranslate = $currentEl[0].f7Translate;\n if (sortingElOffset >= currentElOffset - currentElHeight / 2 && $sortingEl.index() < $currentEl.index()) {\n currentTranslate = -sortingElHeight;\n $currentEl.transform(`translate3d(0, ${currentTranslate}px,0)`);\n $insertAfterEl = $currentEl;\n $insertBeforeEl = undefined;\n } else if (sortingElOffset <= currentElOffset + currentElHeight / 2 && $sortingEl.index() > $currentEl.index()) {\n currentTranslate = sortingElHeight;\n $currentEl[0].f7Translate = currentTranslate;\n $currentEl.transform(`translate3d(0, ${currentTranslate}px,0)`);\n $insertAfterEl = undefined;\n if (!$insertBeforeEl) $insertBeforeEl = $currentEl;\n } else {\n currentTranslate = undefined;\n $currentEl.transform('translate3d(0, 0%,0)');\n }\n if (prevTranslate !== currentTranslate) {\n $currentEl.trigger('sortable:move');\n app.emit('sortableMove', $currentEl[0], $sortableContainer[0]);\n }\n $currentEl[0].f7Translate = currentTranslate;\n });\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n if (isTouched && !isMoved) {\n if (app.panel) app.panel.allowOpen = true;\n if (app.swipeout) app.swipeout.allow = true;\n if (wasTapHold) {\n $sortingEl.removeClass('sorting');\n $sortableContainer.removeClass('sortable-sorting');\n }\n }\n isTouched = false;\n isMoved = false;\n return;\n }\n if (app.panel) app.panel.allowOpen = true;\n if (app.swipeout) app.swipeout.allow = true;\n $sortingItems.transform('');\n $sortingEl.removeClass('sorting');\n $sortableContainer.removeClass('sortable-sorting');\n let indexTo;\n if ($insertAfterEl) indexTo = $insertAfterEl.index();else if ($insertBeforeEl) indexTo = $insertBeforeEl.index();\n let moveElements = $sortableContainer.dataset().sortableMoveElements;\n if (typeof moveElements === 'undefined') {\n moveElements = app.params.sortable.moveElements;\n }\n if (moveElements) {\n if ($insertAfterEl) {\n $sortingEl.insertAfter($insertAfterEl);\n }\n if ($insertBeforeEl) {\n $sortingEl.insertBefore($insertBeforeEl);\n }\n }\n if (($insertAfterEl || $insertBeforeEl) && $sortableContainer.hasClass('virtual-list')) {\n indexFrom = $sortingEl[0].f7VirtualListIndex;\n if (typeof indexFrom === 'undefined') indexFrom = $sortingEl.attr('data-virtual-list-index');\n if ($insertBeforeEl) {\n indexTo = $insertBeforeEl[0].f7VirtualListIndex;\n if (typeof indexTo === 'undefined') indexTo = $insertBeforeEl.attr('data-virtual-list-index');\n } else {\n indexTo = $insertAfterEl[0].f7VirtualListIndex;\n if (typeof indexTo === 'undefined') indexTo = $insertAfterEl.attr('data-virtual-list-index');\n }\n if (indexTo !== null) indexTo = parseInt(indexTo, 10);else indexTo = undefined;\n const virtualList = $sortableContainer[0].f7VirtualList;\n if (indexFrom) indexFrom = parseInt(indexFrom, 10);\n if (indexTo) indexTo = parseInt(indexTo, 10);\n if (virtualList) virtualList.moveItem(indexFrom, indexTo);\n }\n if (typeof indexTo !== 'undefined' && !Number.isNaN(indexTo) && indexTo !== indexFrom) {\n $sortingEl.trigger('sortable:sort', {\n from: indexFrom,\n to: indexTo\n });\n app.emit('sortableSort', $sortingEl[0], {\n from: indexFrom,\n to: indexTo,\n el: $sortingEl[0]\n }, $sortableContainer[0]);\n }\n $insertBeforeEl = undefined;\n $insertAfterEl = undefined;\n isTouched = false;\n isMoved = false;\n }\n const activeListener = getSupport().passiveListener ? {\n passive: false,\n capture: false\n } : false;\n $(document).on(app.touchEvents.start, '.list.sortable .sortable-handler', handleTouchStart, activeListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n $(document).on('taphold', '.sortable-tap-hold', (e, pointerEvent) => {\n handleTouchStart(pointerEvent, true);\n });\n },\n enable(el) {\n if (el === void 0) {\n el = '.list.sortable';\n }\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n $el.addClass('sortable-enabled');\n $el.trigger('sortable:enable');\n app.emit('sortableEnable', $el[0]);\n },\n disable(el) {\n if (el === void 0) {\n el = '.list.sortable';\n }\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n $el.removeClass('sortable-enabled');\n $el.trigger('sortable:disable');\n app.emit('sortableDisable', $el[0]);\n },\n toggle(el) {\n if (el === void 0) {\n el = '.list.sortable';\n }\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n if ($el.hasClass('sortable-enabled')) {\n app.sortable.disable($el);\n } else {\n app.sortable.enable($el);\n }\n }\n};\nexport default {\n name: 'sortable',\n params: {\n sortable: {\n moveElements: true\n }\n },\n create() {\n const app = this;\n bindMethods(app, {\n sortable: Sortable\n });\n },\n on: {\n init() {\n const app = this;\n if (!app.params.sortable) return;\n app.sortable.init();\n }\n },\n clicks: {\n '.sortable-enable': function enable($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.sortable.enable(data.sortable);\n },\n '.sortable-disable': function disable($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.sortable.disable(data.sortable);\n },\n '.sortable-toggle': function toggle($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.sortable.toggle(data.sortable);\n }\n }\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nconst Swipeout = {\n init() {\n const app = this;\n const document = getDocument();\n const touchesStart = {};\n let isTouched;\n let isMoved;\n let isScrolling;\n let touchStartTime;\n let touchesDiff;\n let $swipeoutEl;\n let $swipeoutContent;\n let $actionsRight;\n let $actionsLeft;\n let actionsLeftWidth;\n let actionsRightWidth;\n let translate;\n let opened;\n let openedActionsSide;\n let $leftButtons;\n let $rightButtons;\n let direction;\n let $overswipeLeftButton;\n let $overswipeRightButton;\n let overswipeLeft;\n let overswipeRight;\n function handleTouchStart(e) {\n if (!app.swipeout.allow) return;\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = new Date().getTime();\n $swipeoutEl = $(this);\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n if (!isMoved) {\n if ($('.list.sortable-opened').length > 0) return;\n $swipeoutContent = $swipeoutEl.find('.swipeout-content');\n $actionsRight = $swipeoutEl.find('.swipeout-actions-right');\n $actionsLeft = $swipeoutEl.find('.swipeout-actions-left');\n actionsLeftWidth = null;\n actionsRightWidth = null;\n $leftButtons = null;\n $rightButtons = null;\n $overswipeRightButton = null;\n $overswipeLeftButton = null;\n if ($actionsLeft.length > 0) {\n actionsLeftWidth = $actionsLeft.outerWidth();\n $leftButtons = $actionsLeft.children('a');\n $overswipeLeftButton = $actionsLeft.find('.swipeout-overswipe');\n }\n if ($actionsRight.length > 0) {\n actionsRightWidth = $actionsRight.outerWidth();\n $rightButtons = $actionsRight.children('a');\n $overswipeRightButton = $actionsRight.find('.swipeout-overswipe');\n }\n opened = $swipeoutEl.hasClass('swipeout-opened');\n if (opened) {\n openedActionsSide = $swipeoutEl.find('.swipeout-actions-left.swipeout-actions-opened').length > 0 ? 'left' : 'right';\n }\n $swipeoutEl.removeClass('swipeout-transitioning');\n if (!app.params.swipeout.noFollow) {\n $swipeoutEl.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');\n $swipeoutEl.removeClass('swipeout-opened');\n }\n }\n isMoved = true;\n if (e.cancelable) {\n e.preventDefault();\n }\n touchesDiff = pageX - touchesStart.x;\n translate = touchesDiff;\n if (opened) {\n if (openedActionsSide === 'right') translate -= actionsRightWidth;else translate += actionsLeftWidth;\n }\n if (translate > 0 && $actionsLeft.length === 0 || translate < 0 && $actionsRight.length === 0) {\n if (!opened) {\n isTouched = false;\n isMoved = false;\n $swipeoutContent.transform('');\n if ($rightButtons && $rightButtons.length > 0) {\n $rightButtons.transform('');\n }\n if ($leftButtons && $leftButtons.length > 0) {\n $leftButtons.transform('');\n }\n return;\n }\n translate = 0;\n }\n if (translate < 0) direction = 'to-left';else if (translate > 0) direction = 'to-right';else if (!direction) direction = 'to-left';\n let buttonOffset;\n let progress;\n e.f7PreventSwipePanel = true;\n if (app.params.swipeout.noFollow) {\n if (opened) {\n if (openedActionsSide === 'right' && touchesDiff > 0) {\n app.swipeout.close($swipeoutEl);\n }\n if (openedActionsSide === 'left' && touchesDiff < 0) {\n app.swipeout.close($swipeoutEl);\n }\n } else {\n if (touchesDiff < 0 && $actionsRight.length > 0) {\n app.swipeout.open($swipeoutEl, 'right');\n }\n if (touchesDiff > 0 && $actionsLeft.length > 0) {\n app.swipeout.open($swipeoutEl, 'left');\n }\n }\n isTouched = false;\n isMoved = false;\n return;\n }\n overswipeLeft = false;\n overswipeRight = false;\n if ($actionsRight.length > 0) {\n // Show right actions\n let buttonTranslate = translate;\n progress = buttonTranslate / actionsRightWidth;\n if (buttonTranslate < -actionsRightWidth) {\n const ratio = buttonTranslate / -actionsRightWidth;\n buttonTranslate = -actionsRightWidth - (-buttonTranslate - actionsRightWidth) ** 0.8;\n translate = buttonTranslate;\n if ($overswipeRightButton.length > 0 && ratio > app.params.swipeout.overswipeRatio) {\n overswipeRight = true;\n }\n }\n if (direction !== 'to-left') {\n progress = 0;\n buttonTranslate = 0;\n }\n $rightButtons.each(buttonEl => {\n const $buttonEl = $(buttonEl);\n if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;\n }\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if ($overswipeRightButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-left') {\n $buttonEl.css({\n left: `${overswipeRight ? -buttonOffset : 0}px`\n });\n if (overswipeRight) {\n if (!$buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeenter');\n app.emit('swipeoutOverswipeEnter', $swipeoutEl[0]);\n }\n $buttonEl.addClass('swipeout-overswipe-active');\n } else {\n if ($buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeexit');\n app.emit('swipeoutOverswipeExit', $swipeoutEl[0]);\n }\n $buttonEl.removeClass('swipeout-overswipe-active');\n }\n }\n $buttonEl.transform(`translate3d(${buttonTranslate - buttonOffset * (1 + Math.max(progress, -1))}px,0,0)`);\n });\n }\n if ($actionsLeft.length > 0) {\n // Show left actions\n let buttonTranslate = translate;\n progress = buttonTranslate / actionsLeftWidth;\n if (buttonTranslate > actionsLeftWidth) {\n const ratio = buttonTranslate / actionsRightWidth;\n buttonTranslate = actionsLeftWidth + (buttonTranslate - actionsLeftWidth) ** 0.8;\n translate = buttonTranslate;\n if ($overswipeLeftButton.length > 0 && ratio > app.params.swipeout.overswipeRatio) {\n overswipeLeft = true;\n }\n }\n if (direction !== 'to-right') {\n buttonTranslate = 0;\n progress = 0;\n }\n $leftButtons.each((buttonEl, index) => {\n const $buttonEl = $(buttonEl);\n if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;\n }\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if ($overswipeLeftButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-right') {\n $buttonEl.css({\n left: `${overswipeLeft ? buttonOffset : 0}px`\n });\n if (overswipeLeft) {\n if (!$buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeenter');\n app.emit('swipeoutOverswipeEnter', $swipeoutEl[0]);\n }\n $buttonEl.addClass('swipeout-overswipe-active');\n } else {\n if ($buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeexit');\n app.emit('swipeoutOverswipeExit', $swipeoutEl[0]);\n }\n $buttonEl.removeClass('swipeout-overswipe-active');\n }\n }\n if ($leftButtons.length > 1) {\n $buttonEl.css('z-index', $leftButtons.length - index);\n }\n $buttonEl.transform(`translate3d(${buttonTranslate + buttonOffset * (1 - Math.min(progress, 1))}px,0,0)`);\n });\n }\n $swipeoutEl.trigger('swipeout', progress);\n app.emit('swipeout', $swipeoutEl[0], progress);\n $swipeoutContent.transform(`translate3d(${translate}px,0,0)`);\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n const timeDiff = new Date().getTime() - touchStartTime;\n const $actions = direction === 'to-left' ? $actionsRight : $actionsLeft;\n const actionsWidth = direction === 'to-left' ? actionsRightWidth : actionsLeftWidth;\n let action;\n let $buttons;\n let i;\n if (timeDiff < 300 && (touchesDiff < -10 && direction === 'to-left' || touchesDiff > 10 && direction === 'to-right') || timeDiff >= 300 && Math.abs(translate) > actionsWidth / 2) {\n action = 'open';\n } else {\n action = 'close';\n }\n if (timeDiff < 300) {\n if (Math.abs(translate) === 0) action = 'close';\n if (Math.abs(translate) === actionsWidth) action = 'open';\n }\n if (action === 'open') {\n Swipeout.el = $swipeoutEl[0];\n $swipeoutEl.trigger('swipeout:open');\n app.emit('swipeoutOpen', $swipeoutEl[0]);\n $swipeoutEl.addClass('swipeout-opened swipeout-transitioning');\n const newTranslate = direction === 'to-left' ? -actionsWidth : actionsWidth;\n $swipeoutContent.transform(`translate3d(${newTranslate}px,0,0)`);\n $actions.addClass('swipeout-actions-opened');\n $buttons = direction === 'to-left' ? $rightButtons : $leftButtons;\n if ($buttons) {\n for (i = 0; i < $buttons.length; i += 1) {\n $($buttons[i]).transform(`translate3d(${newTranslate}px,0,0)`);\n }\n }\n if (overswipeRight) {\n $actionsRight.find('.swipeout-overswipe').trigger('click', 'f7Overswipe');\n }\n if (overswipeLeft) {\n $actionsLeft.find('.swipeout-overswipe').trigger('click', 'f7Overswipe');\n }\n } else {\n $swipeoutEl.trigger('swipeout:close');\n app.emit('swipeoutClose', $swipeoutEl[0]);\n Swipeout.el = undefined;\n $swipeoutEl.addClass('swipeout-transitioning').removeClass('swipeout-opened');\n $swipeoutContent.transform('');\n $actions.removeClass('swipeout-actions-opened');\n }\n let buttonOffset;\n if ($leftButtons && $leftButtons.length > 0 && $leftButtons !== $buttons) {\n $leftButtons.each(buttonEl => {\n const $buttonEl = $(buttonEl);\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if (typeof buttonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;\n }\n $buttonEl.transform(`translate3d(${buttonOffset}px,0,0)`);\n });\n }\n if ($rightButtons && $rightButtons.length > 0 && $rightButtons !== $buttons) {\n $rightButtons.each(buttonEl => {\n const $buttonEl = $(buttonEl);\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if (typeof buttonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;\n }\n $buttonEl.transform(`translate3d(${-buttonOffset}px,0,0)`);\n });\n }\n $swipeoutContent.transitionEnd(() => {\n if (opened && action === 'open' || !opened && action === 'close') return;\n $swipeoutEl.trigger(action === 'open' ? 'swipeout:opened' : 'swipeout:closed');\n app.emit(action === 'open' ? 'swipeoutOpened' : 'swipeoutClosed', $swipeoutEl[0]);\n $swipeoutEl.removeClass('swipeout-transitioning');\n if (opened && action === 'close') {\n if ($actionsRight.length > 0) {\n $rightButtons.transform('');\n }\n if ($actionsLeft.length > 0) {\n $leftButtons.transform('');\n }\n }\n });\n }\n const passiveListener = getSupport().passiveListener ? {\n passive: true\n } : false;\n app.on('touchstart', e => {\n if (Swipeout.el) {\n const $targetEl = $(e.target);\n if (!($(Swipeout.el).is($targetEl[0]) || $targetEl.parents('.swipeout').is(Swipeout.el) || $targetEl.hasClass('modal-in') || ($targetEl.attr('class') || '').indexOf('-backdrop') > 0 || $targetEl.hasClass('actions-modal') || $targetEl.parents('.actions-modal.modal-in, .dialog.modal-in').length > 0)) {\n app.swipeout.close(Swipeout.el);\n }\n }\n });\n $(document).on(app.touchEvents.start, 'li.swipeout', handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n },\n allow: true,\n el: undefined,\n open() {\n const app = this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n let [el, side, callback] = args;\n if (typeof args[1] === 'function') {\n [el, callback, side] = args;\n }\n const $el = $(el).eq(0);\n if ($el.length === 0) return;\n if (!$el.hasClass('swipeout') || $el.hasClass('swipeout-opened')) return;\n if (!side) {\n if ($el.find('.swipeout-actions-right').length > 0) side = 'right';else side = 'left';\n }\n const $swipeoutActions = $el.find(`.swipeout-actions-${side}`);\n const $swipeoutContent = $el.find('.swipeout-content');\n if ($swipeoutActions.length === 0) return;\n $el.trigger('swipeout:open').addClass('swipeout-opened').removeClass('swipeout-transitioning');\n app.emit('swipeoutOpen', $el[0]);\n $swipeoutActions.addClass('swipeout-actions-opened');\n const $buttons = $swipeoutActions.children('a');\n const swipeoutActionsWidth = $swipeoutActions.outerWidth();\n const translate = side === 'right' ? -swipeoutActionsWidth : swipeoutActionsWidth;\n if ($buttons.length > 1) {\n $buttons.each((buttonEl, buttonIndex) => {\n const $buttonEl = $(buttonEl);\n if (side === 'right') {\n $buttonEl.transform(`translate3d(${-buttonEl.offsetLeft}px,0,0)`);\n } else {\n $buttonEl.css('z-index', $buttons.length - buttonIndex).transform(`translate3d(${swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft}px,0,0)`);\n }\n });\n }\n $el.addClass('swipeout-transitioning');\n $swipeoutContent.transitionEnd(() => {\n $el.trigger('swipeout:opened');\n app.emit('swipeoutOpened', $el[0]);\n if (callback) callback.call($el[0]);\n });\n nextFrame(() => {\n $buttons.transform(`translate3d(${translate}px,0,0)`);\n $swipeoutContent.transform(`translate3d(${translate}px,0,0)`);\n });\n Swipeout.el = $el[0];\n },\n close(el, callback) {\n const app = this;\n const $el = $(el).eq(0);\n if ($el.length === 0) return;\n if (!$el.hasClass('swipeout-opened')) return;\n const side = $el.find('.swipeout-actions-opened').hasClass('swipeout-actions-right') ? 'right' : 'left';\n const $swipeoutActions = $el.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');\n const $buttons = $swipeoutActions.children('a');\n const swipeoutActionsWidth = $swipeoutActions.outerWidth();\n app.swipeout.allow = false;\n $el.trigger('swipeout:close');\n app.emit('swipeoutClose', $el[0]);\n $el.removeClass('swipeout-opened').addClass('swipeout-transitioning');\n let closeTimeout;\n function onSwipeoutClose() {\n app.swipeout.allow = true;\n if ($el.hasClass('swipeout-opened')) return;\n $el.removeClass('swipeout-transitioning');\n $buttons.transform('');\n $el.trigger('swipeout:closed');\n app.emit('swipeoutClosed', $el[0]);\n if (callback) callback.call($el[0]);\n if (closeTimeout) clearTimeout(closeTimeout);\n }\n $el.find('.swipeout-content').transform('').transitionEnd(onSwipeoutClose);\n closeTimeout = setTimeout(onSwipeoutClose, 500);\n $buttons.each(buttonEl => {\n const $buttonEl = $(buttonEl);\n if (side === 'right') {\n $buttonEl.transform(`translate3d(${-buttonEl.offsetLeft}px,0,0)`);\n } else {\n $buttonEl.transform(`translate3d(${swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft}px,0,0)`);\n }\n $buttonEl.css({\n left: '0px'\n }).removeClass('swipeout-overswipe-active');\n });\n if (Swipeout.el && Swipeout.el === $el[0]) Swipeout.el = undefined;\n },\n delete(el, callback) {\n const app = this;\n const $el = $(el).eq(0);\n if ($el.length === 0) return;\n Swipeout.el = undefined;\n $el.trigger('swipeout:delete');\n app.emit('swipeoutDelete', $el[0]);\n $el.css({\n height: `${$el.outerHeight()}px`\n });\n $el.transitionEnd(() => {\n $el.trigger('swipeout:deleted');\n app.emit('swipeoutDeleted', $el[0]);\n if (callback) callback.call($el[0]);\n if ($el.parents('.virtual-list').length > 0) {\n const virtualList = $el.parents('.virtual-list')[0].f7VirtualList;\n const virtualIndex = $el[0].f7VirtualListIndex;\n if (virtualList && typeof virtualIndex !== 'undefined') virtualList.deleteItem(virtualIndex);\n } else if (app.params.swipeout.removeElements) {\n if (app.params.swipeout.removeElementsWithTimeout) {\n setTimeout(() => {\n $el.remove();\n }, app.params.swipeout.removeElementsTimeout);\n } else {\n $el.remove();\n }\n } else {\n $el.removeClass('swipeout-deleting swipeout-transitioning');\n }\n });\n // eslint-disable-next-line\n // $el[0]._clientLeft = $el[0].clientLeft;\n nextFrame(() => {\n $el.addClass('swipeout-deleting swipeout-transitioning').css({\n height: '0px'\n }).find('.swipeout-content').transform('translate3d(-100%,0,0)');\n });\n }\n};\nexport default {\n name: 'swipeout',\n params: {\n swipeout: {\n actionsNoFold: false,\n noFollow: false,\n removeElements: true,\n removeElementsWithTimeout: false,\n removeElementsTimeout: 0,\n overswipeRatio: 1.2\n }\n },\n create() {\n const app = this;\n bindMethods(app, {\n swipeout: Swipeout\n });\n },\n clicks: {\n '.swipeout-open': function openSwipeout($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.swipeout.open(data.swipeout, data.side);\n },\n '.swipeout-close': function closeSwipeout($clickedEl) {\n const app = this;\n const $swipeoutEl = $clickedEl.closest('.swipeout');\n if ($swipeoutEl.length === 0) return;\n app.swipeout.close($swipeoutEl);\n },\n '.swipeout-delete': function deleteSwipeout($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n const $swipeoutEl = $clickedEl.closest('.swipeout');\n if ($swipeoutEl.length === 0) return;\n const {\n confirm,\n confirmTitle\n } = data;\n if (data.confirm) {\n app.dialog.confirm(confirm, confirmTitle, () => {\n app.swipeout.delete($swipeoutEl);\n });\n } else {\n app.swipeout.delete($swipeoutEl);\n }\n }\n },\n on: {\n init() {\n const app = this;\n if (!app.params.swipeout) return;\n app.swipeout.init();\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\nconst Accordion = {\n toggleClicked($clickedEl) {\n const app = this;\n let $accordionItemEl = $clickedEl.closest('.accordion-item').eq(0);\n if (!$accordionItemEl.length) $accordionItemEl = $clickedEl.parents('li').eq(0);\n const $accordionContent = $clickedEl.parents('.accordion-item-content').eq(0);\n if ($accordionContent.length) {\n if ($accordionContent.parents($accordionItemEl).length) return;\n }\n if ($clickedEl.parents('li').length > 1 && $clickedEl.parents('li')[0] !== $accordionItemEl[0]) return;\n app.accordion.toggle($accordionItemEl);\n },\n open(el) {\n const app = this;\n const $el = $(el);\n let prevented = false;\n function prevent() {\n prevented = true;\n }\n $el.trigger('accordion:beforeopen', {\n prevent\n }, prevent);\n app.emit('accordionBeforeOpen', $el[0], prevent);\n if (prevented) return;\n const $list = $el.parents('.accordion-list').eq(0);\n let $contentEl = $el.children('.accordion-item-content');\n $contentEl.removeAttr('aria-hidden');\n if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');\n if ($contentEl.length === 0) return;\n const $openedItem = $list.length > 0 && $el.parent().children('.accordion-item-opened');\n if ($openedItem.length > 0) {\n app.accordion.close($openedItem);\n }\n $contentEl.transitionEnd(() => {\n if ($el.hasClass('accordion-item-opened')) {\n $contentEl.transition(0);\n $contentEl.css('height', 'auto');\n nextFrame(() => {\n $contentEl.transition('');\n $el.trigger('accordion:opened');\n app.emit('accordionOpened', $el[0]);\n });\n } else {\n $contentEl.css('height', '');\n $el.trigger('accordion:closed');\n app.emit('accordionClosed', $el[0]);\n }\n });\n $contentEl.css('height', `${$contentEl[0].scrollHeight}px`);\n $el.trigger('accordion:open');\n $el.addClass('accordion-item-opened');\n app.emit('accordionOpen', $el[0]);\n },\n close(el) {\n const app = this;\n const $el = $(el);\n let prevented = false;\n function prevent() {\n prevented = true;\n }\n $el.trigger('accordion:beforeclose', {\n prevent\n }, prevent);\n app.emit('accordionBeforeClose', $el[0], prevent);\n if (prevented) return;\n let $contentEl = $el.children('.accordion-item-content');\n if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');\n $el.removeClass('accordion-item-opened');\n $contentEl.attr('aria-hidden', true);\n $contentEl.transition(0);\n $contentEl.css('height', `${$contentEl[0].scrollHeight}px`);\n // Close\n $contentEl.transitionEnd(() => {\n if ($el.hasClass('accordion-item-opened')) {\n $contentEl.transition(0);\n $contentEl.css('height', 'auto');\n nextFrame(() => {\n $contentEl.transition('');\n $el.trigger('accordion:opened');\n app.emit('accordionOpened', $el[0]);\n });\n } else {\n $contentEl.css('height', '');\n $el.trigger('accordion:closed');\n app.emit('accordionClosed', $el[0]);\n }\n });\n nextFrame(() => {\n $contentEl.transition('');\n $contentEl.css('height', '');\n $el.trigger('accordion:close');\n app.emit('accordionClose', $el[0]);\n });\n },\n toggle(el) {\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n if ($el.hasClass('accordion-item-opened')) app.accordion.close(el);else app.accordion.open(el);\n }\n};\nexport default {\n name: 'accordion',\n create() {\n const app = this;\n bindMethods(app, {\n accordion: Accordion\n });\n },\n clicks: {\n '.accordion-item .item-link, .accordion-item-toggle, .links-list.accordion-list > ul > li > a': function open($clickedEl) {\n const app = this;\n Accordion.toggleClicked.call(app, $clickedEl);\n }\n }\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\nclass VirtualList extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const vl = this;\n const device = getDevice();\n const document = getDocument();\n let defaultHeight;\n if (app.theme === 'md') {\n defaultHeight = 48;\n } else if (app.theme === 'ios') {\n defaultHeight = 44;\n }\n const defaults = {\n cols: 1,\n height: defaultHeight,\n cache: true,\n dynamicHeightBufferSize: 1,\n showFilteredItemsOnly: false,\n renderExternal: undefined,\n setListHeight: true,\n searchByItem: undefined,\n searchAll: undefined,\n ul: null,\n createUl: true,\n scrollableParentEl: undefined,\n renderItem(item) {\n return `\n
  • \n
    \n
    \n
    ${item}
    \n
    \n
    \n
  • \n `.trim();\n },\n on: {}\n };\n\n // Extend defaults with modules params\n vl.useModulesParams(defaults);\n vl.params = extend(defaults, params);\n if (vl.params.height === undefined || !vl.params.height) {\n vl.params.height = defaultHeight;\n }\n vl.$el = $(params.el);\n vl.el = vl.$el[0];\n if (vl.$el.length === 0) return undefined;\n vl.$el[0].f7VirtualList = vl;\n vl.items = vl.params.items;\n if (vl.params.showFilteredItemsOnly) {\n vl.filteredItems = [];\n }\n if (vl.params.renderItem) {\n vl.renderItem = vl.params.renderItem;\n }\n vl.$pageContentEl = vl.$el.parents('.page-content');\n vl.pageContentEl = vl.$pageContentEl[0];\n vl.$scrollableParentEl = vl.params.scrollableParentEl ? $(vl.params.scrollableParentEl).eq(0) : vl.$pageContentEl;\n if (!vl.$scrollableParentEl.length && vl.$pageContentEl.length) {\n vl.$scrollableParentEl = vl.$pageContentEl;\n }\n vl.scrollableParentEl = vl.$scrollableParentEl[0];\n\n // Bad scroll\n if (typeof vl.params.updatableScroll !== 'undefined') {\n vl.updatableScroll = vl.params.updatableScroll;\n } else {\n vl.updatableScroll = true;\n if (device.ios && device.osVersion.split('.')[0] < 8) {\n vl.updatableScroll = false;\n }\n }\n\n // Append
      \n const ul = vl.params.ul;\n vl.$ul = ul ? $(vl.params.ul) : vl.$el.children('ul');\n if (vl.$ul.length === 0 && vl.params.createUl) {\n vl.$el.append('
        ');\n vl.$ul = vl.$el.children('ul');\n }\n vl.ul = vl.$ul[0];\n let $itemsWrapEl;\n if (!vl.ul && !vl.params.createUl) $itemsWrapEl = vl.$el;else $itemsWrapEl = vl.$ul;\n extend(vl, {\n $itemsWrapEl,\n itemsWrapEl: $itemsWrapEl[0],\n // DOM cached items\n domCache: {},\n // Temporary DOM Element\n tempDomElement: document.createElement('ul'),\n // Last repain position\n lastRepaintY: null,\n // Fragment\n fragment: document.createDocumentFragment(),\n // Props\n pageHeight: undefined,\n rowsPerScreen: undefined,\n rowsBefore: undefined,\n rowsAfter: undefined,\n rowsToRender: undefined,\n maxBufferHeight: 0,\n listHeight: undefined,\n dynamicHeight: typeof vl.params.height === 'function',\n autoHeight: vl.params.height === 'auto'\n });\n\n // Install Modules\n vl.useModules();\n\n // Attach events\n const handleScrollBound = vl.handleScroll.bind(vl);\n const handleResizeBound = vl.handleResize.bind(vl);\n let $pageEl;\n let $tabEl;\n let $panelEl;\n let $popupEl;\n vl.attachEvents = function attachEvents() {\n $pageEl = vl.$el.parents('.page').eq(0);\n $tabEl = vl.$el.parents('.tab').filter(tabEl => {\n return $(tabEl).parent('.tabs').parent('.tabs-animated-wrap, swiper-container.tabs').length === 0;\n }).eq(0);\n $panelEl = vl.$el.parents('.panel').eq(0);\n $popupEl = vl.$el.parents('.popup').eq(0);\n vl.$scrollableParentEl.on('scroll', handleScrollBound);\n if ($pageEl.length) $pageEl.on('page:reinit', handleResizeBound);\n if ($tabEl.length) $tabEl.on('tab:show', handleResizeBound);\n if ($panelEl.length) $panelEl.on('panel:open', handleResizeBound);\n if ($popupEl.length) $popupEl.on('popup:open', handleResizeBound);\n app.on('resize', handleResizeBound);\n };\n vl.detachEvents = function attachEvents() {\n vl.$scrollableParentEl.off('scroll', handleScrollBound);\n if ($pageEl.length) $pageEl.off('page:reinit', handleResizeBound);\n if ($tabEl.length) $tabEl.off('tab:show', handleResizeBound);\n if ($panelEl.length) $panelEl.off('panel:open', handleResizeBound);\n if ($popupEl.length) $popupEl.off('popup:open', handleResizeBound);\n app.off('resize', handleResizeBound);\n };\n // Init\n vl.init();\n return vl;\n }\n setListSize(autoHeightRerender) {\n const vl = this;\n const items = vl.filteredItems || vl.items;\n if (!autoHeightRerender) {\n vl.pageHeight = vl.$scrollableParentEl[0].offsetHeight;\n }\n if (vl.dynamicHeight) {\n vl.listHeight = 0;\n vl.heights = [];\n for (let i = 0; i < items.length; i += 1) {\n const itemHeight = vl.params.height(items[i]);\n vl.listHeight += itemHeight;\n vl.heights.push(itemHeight);\n }\n } else if (vl.autoHeight) {\n vl.listHeight = 0;\n if (!vl.heights) vl.heights = [];\n if (!vl.heightsCalculated) vl.heightsCalculated = [];\n const renderedItems = {};\n vl.$itemsWrapEl.find(`[data-virtual-list-index]`).forEach(el => {\n renderedItems[parseInt(el.getAttribute('data-virtual-list-index'), 10)] = el;\n });\n for (let i = 0; i < items.length; i += 1) {\n const itemIndex = vl.items.indexOf(items[i]);\n const renderedItem = renderedItems[itemIndex];\n if (renderedItem) {\n if (!vl.heightsCalculated.includes(itemIndex)) {\n vl.heights[itemIndex] = renderedItem.offsetHeight;\n vl.heightsCalculated.push(itemIndex);\n }\n }\n if (typeof vl.heights[i] === 'undefined') {\n vl.heights[itemIndex] = 40;\n }\n vl.listHeight += vl.heights[itemIndex];\n }\n } else {\n vl.listHeight = Math.ceil(items.length / vl.params.cols) * vl.params.height;\n vl.rowsPerScreen = Math.ceil(vl.pageHeight / vl.params.height);\n vl.rowsBefore = vl.params.rowsBefore || vl.rowsPerScreen * 2;\n vl.rowsAfter = vl.params.rowsAfter || vl.rowsPerScreen;\n vl.rowsToRender = vl.rowsPerScreen + vl.rowsBefore + vl.rowsAfter;\n vl.maxBufferHeight = vl.rowsBefore / 2 * vl.params.height;\n }\n if (vl.updatableScroll || vl.params.setListHeight) {\n vl.$itemsWrapEl.css({\n height: `${vl.listHeight}px`\n });\n }\n }\n render(force, forceScrollTop) {\n const vl = this;\n if (force) vl.lastRepaintY = null;\n let scrollTop = -(vl.$el[0].getBoundingClientRect().top - vl.$scrollableParentEl[0].getBoundingClientRect().top);\n if (typeof forceScrollTop !== 'undefined') scrollTop = forceScrollTop;\n if (vl.lastRepaintY === null || Math.abs(scrollTop - vl.lastRepaintY) > vl.maxBufferHeight || !vl.updatableScroll && vl.$scrollableParentEl[0].scrollTop + vl.pageHeight >= vl.$scrollableParentEl[0].scrollHeight) {\n vl.lastRepaintY = scrollTop;\n } else {\n return;\n }\n const items = vl.filteredItems || vl.items;\n let fromIndex;\n let toIndex;\n let heightBeforeFirstItem = 0;\n let heightBeforeLastItem = 0;\n if (vl.dynamicHeight || vl.autoHeight) {\n let itemTop = 0;\n let itemHeight;\n vl.maxBufferHeight = vl.pageHeight;\n for (let j = 0; j < vl.heights.length; j += 1) {\n itemHeight = vl.heights[j];\n if (typeof fromIndex === 'undefined') {\n if (itemTop + itemHeight >= scrollTop - vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize) fromIndex = j;else heightBeforeFirstItem += itemHeight;\n }\n if (typeof toIndex === 'undefined') {\n if (itemTop + itemHeight >= scrollTop + vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize || j === vl.heights.length - 1) toIndex = j + 1;\n heightBeforeLastItem += itemHeight;\n }\n itemTop += itemHeight;\n }\n toIndex = Math.min(toIndex, items.length);\n } else {\n fromIndex = (parseInt(scrollTop / vl.params.height, 10) - vl.rowsBefore) * vl.params.cols;\n if (fromIndex < 0) {\n fromIndex = 0;\n }\n toIndex = Math.min(fromIndex + vl.rowsToRender * vl.params.cols, items.length);\n }\n let topPosition;\n const renderExternalItems = [];\n vl.reachEnd = false;\n let i;\n for (i = fromIndex; i < toIndex; i += 1) {\n let itemEl;\n // Define real item index\n const index = vl.items.indexOf(items[i]);\n if (i === fromIndex) vl.currentFromIndex = index;\n if (i === toIndex - 1) vl.currentToIndex = index;\n if (vl.filteredItems) {\n if (vl.items[index] === vl.filteredItems[vl.filteredItems.length - 1]) vl.reachEnd = true;\n } else if (index === vl.items.length - 1) vl.reachEnd = true;\n\n // Find items\n if (vl.params.renderExternal) {\n renderExternalItems.push(items[i]);\n } else if (vl.domCache[index]) {\n itemEl = vl.domCache[index];\n itemEl.f7VirtualListIndex = index;\n } else {\n if (vl.renderItem) {\n vl.tempDomElement.innerHTML = vl.renderItem(items[i], index).trim();\n } else {\n vl.tempDomElement.innerHTML = items[i].toString().trim();\n }\n itemEl = vl.tempDomElement.childNodes[0];\n if (vl.params.cache) vl.domCache[index] = itemEl;\n itemEl.f7VirtualListIndex = index;\n }\n\n // Set item top position\n if (i === fromIndex) {\n if (vl.dynamicHeight || vl.autoHeight) {\n topPosition = heightBeforeFirstItem;\n } else {\n topPosition = i * vl.params.height / vl.params.cols;\n }\n }\n if (!vl.params.renderExternal) {\n itemEl.style.top = `${topPosition}px`;\n\n // Before item insert\n vl.emit('local::itemBeforeInsert vlItemBeforeInsert', vl, itemEl, items[i]);\n\n // Append item to fragment\n vl.fragment.appendChild(itemEl);\n }\n }\n\n // Update list height with not updatable scroll\n if (!vl.updatableScroll) {\n if (vl.dynamicHeight || vl.autoHeight) {\n vl.itemsWrapEl.style.height = `${heightBeforeLastItem}px`;\n } else {\n vl.itemsWrapEl.style.height = `${i * vl.params.height / vl.params.cols}px`;\n }\n }\n\n // Update list html\n if (vl.params.renderExternal) {\n if (items && items.length === 0) {\n vl.reachEnd = true;\n }\n } else {\n vl.emit('local::beforeClear vlBeforeClear', vl, vl.fragment);\n vl.itemsWrapEl.innerHTML = '';\n vl.emit('local::itemsBeforeInsert vlItemsBeforeInsert', vl, vl.fragment);\n if (items && items.length === 0) {\n vl.reachEnd = true;\n if (vl.params.emptyTemplate) vl.itemsWrapEl.innerHTML = vl.params.emptyTemplate;\n } else {\n vl.itemsWrapEl.appendChild(vl.fragment);\n }\n vl.emit('local::itemsAfterInsert vlItemsAfterInsert', vl, vl.fragment);\n }\n if (typeof forceScrollTop !== 'undefined' && force) {\n vl.$scrollableParentEl.scrollTop(forceScrollTop, 0);\n }\n if (vl.params.renderExternal) {\n vl.params.renderExternal(vl, {\n fromIndex,\n toIndex,\n listHeight: vl.listHeight,\n topPosition,\n items: renderExternalItems\n });\n }\n if (vl.autoHeight) {\n requestAnimationFrame(() => {\n vl.setListSize(true);\n });\n }\n }\n\n // Filter\n filterItems(indexes, resetScrollTop) {\n if (resetScrollTop === void 0) {\n resetScrollTop = true;\n }\n const vl = this;\n vl.filteredItems = [];\n for (let i = 0; i < indexes.length; i += 1) {\n vl.filteredItems.push(vl.items[indexes[i]]);\n }\n if (resetScrollTop) {\n vl.$scrollableParentEl[0].scrollTop = 0;\n }\n vl.update();\n }\n resetFilter() {\n const vl = this;\n if (vl.params.showFilteredItemsOnly) {\n vl.filteredItems = [];\n } else {\n vl.filteredItems = null;\n delete vl.filteredItems;\n }\n vl.update();\n }\n scrollToItem(index) {\n const vl = this;\n if (index > vl.items.length) return false;\n let itemTop = 0;\n if (vl.dynamicHeight || vl.autoHeight) {\n for (let i = 0; i < index; i += 1) {\n itemTop += vl.heights[i];\n }\n } else {\n itemTop = index * vl.params.height;\n }\n const listTop = vl.$el[0].offsetTop;\n vl.render(true, listTop + itemTop - parseInt(vl.$scrollableParentEl.css('padding-top'), 10));\n return true;\n }\n handleScroll() {\n const vl = this;\n vl.render();\n }\n\n // Handle resize event\n isVisible() {\n const vl = this;\n return !!(vl.el.offsetWidth || vl.el.offsetHeight || vl.el.getClientRects().length);\n }\n handleResize() {\n const vl = this;\n if (vl.isVisible()) {\n vl.heightsCalculated = [];\n vl.setListSize();\n vl.render(true);\n }\n }\n\n // Append\n appendItems(items) {\n const vl = this;\n for (let i = 0; i < items.length; i += 1) {\n vl.items.push(items[i]);\n }\n vl.update();\n }\n appendItem(item) {\n const vl = this;\n vl.appendItems([item]);\n }\n\n // Replace\n replaceAllItems(items) {\n const vl = this;\n vl.items = items;\n delete vl.filteredItems;\n vl.domCache = {};\n vl.update();\n }\n replaceItem(index, item) {\n const vl = this;\n vl.items[index] = item;\n if (vl.params.cache) delete vl.domCache[index];\n vl.update();\n }\n\n // Prepend\n prependItems(items) {\n const vl = this;\n for (let i = items.length - 1; i >= 0; i -= 1) {\n vl.items.unshift(items[i]);\n }\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach(cached => {\n newCache[parseInt(cached, 10) + items.length] = vl.domCache[cached];\n });\n vl.domCache = newCache;\n }\n vl.update();\n }\n prependItem(item) {\n const vl = this;\n vl.prependItems([item]);\n }\n\n // Move\n moveItem(from, to) {\n const vl = this;\n const fromIndex = from;\n let toIndex = to;\n if (fromIndex === toIndex) return;\n // remove item from array\n const item = vl.items.splice(fromIndex, 1)[0];\n if (toIndex >= vl.items.length) {\n // Add item to the end\n vl.items.push(item);\n toIndex = vl.items.length - 1;\n } else {\n // Add item to new index\n vl.items.splice(toIndex, 0, item);\n }\n // Update cache\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach(cached => {\n const cachedIndex = parseInt(cached, 10);\n const leftIndex = fromIndex < toIndex ? fromIndex : toIndex;\n const rightIndex = fromIndex < toIndex ? toIndex : fromIndex;\n const indexShift = fromIndex < toIndex ? -1 : 1;\n if (cachedIndex < leftIndex || cachedIndex > rightIndex) newCache[cachedIndex] = vl.domCache[cachedIndex];\n if (cachedIndex === leftIndex) newCache[rightIndex] = vl.domCache[cachedIndex];\n if (cachedIndex > leftIndex && cachedIndex <= rightIndex) newCache[cachedIndex + indexShift] = vl.domCache[cachedIndex];\n });\n vl.domCache = newCache;\n }\n vl.update();\n }\n\n // Insert before\n insertItemBefore(index, item) {\n const vl = this;\n if (index === 0) {\n vl.prependItem(item);\n return;\n }\n if (index >= vl.items.length) {\n vl.appendItem(item);\n return;\n }\n vl.items.splice(index, 0, item);\n // Update cache\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach(cached => {\n const cachedIndex = parseInt(cached, 10);\n if (cachedIndex >= index) {\n newCache[cachedIndex + 1] = vl.domCache[cachedIndex];\n }\n });\n vl.domCache = newCache;\n }\n vl.update();\n }\n\n // Delete\n deleteItems(indexes) {\n const vl = this;\n let prevIndex;\n let indexShift = 0;\n for (let i = 0; i < indexes.length; i += 1) {\n let index = indexes[i];\n if (typeof prevIndex !== 'undefined') {\n if (index > prevIndex) {\n indexShift = -i;\n }\n }\n index += indexShift;\n prevIndex = indexes[i];\n // Delete item\n const deletedItem = vl.items.splice(index, 1)[0];\n\n // Delete from filtered\n if (vl.filteredItems && vl.filteredItems.indexOf(deletedItem) >= 0) {\n vl.filteredItems.splice(vl.filteredItems.indexOf(deletedItem), 1);\n }\n // Update cache\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach(cached => {\n const cachedIndex = parseInt(cached, 10);\n if (cachedIndex === index) {\n delete vl.domCache[index];\n } else if (parseInt(cached, 10) > index) {\n newCache[cachedIndex - 1] = vl.domCache[cached];\n } else {\n newCache[cachedIndex] = vl.domCache[cached];\n }\n });\n vl.domCache = newCache;\n }\n }\n vl.update();\n }\n deleteAllItems() {\n const vl = this;\n vl.items = [];\n delete vl.filteredItems;\n if (vl.params.cache) vl.domCache = {};\n vl.update();\n }\n deleteItem(index) {\n const vl = this;\n vl.deleteItems([index]);\n }\n\n // Clear cache\n clearCache() {\n const vl = this;\n vl.domCache = {};\n }\n\n // Update Virtual List\n update(deleteCache) {\n const vl = this;\n if (deleteCache && vl.params.cache) {\n vl.domCache = {};\n }\n vl.heightsCalculated = [];\n vl.setListSize();\n vl.render(true);\n }\n init() {\n const vl = this;\n vl.attachEvents();\n vl.setListSize();\n vl.render();\n }\n destroy() {\n let vl = this;\n vl.detachEvents();\n vl.$el[0].f7VirtualList = null;\n delete vl.$el[0].f7VirtualList;\n deleteProps(vl);\n vl = null;\n }\n}\nexport default VirtualList;","import VirtualList from './virtual-list-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'virtualList',\n static: {\n VirtualList\n },\n create() {\n const app = this;\n app.virtualList = ConstructorMethods({\n defaultSelector: '.virtual-list',\n constructor: VirtualList,\n app,\n domProp: 'f7VirtualList'\n });\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\nclass ListIndex extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const index = this;\n const defaults = {\n el: null,\n // where to render indexes\n listEl: null,\n // list el to generate indexes\n indexes: 'auto',\n // or array of indexes\n iosItemHeight: 14,\n mdItemHeight: 14,\n scrollList: true,\n label: false,\n // eslint-disable-next-line\n renderItem(itemContent, itemIndex) {\n return `\n
      • ${itemContent}
      • \n `.trim();\n },\n renderSkipPlaceholder() {\n return '
      • ';\n },\n on: {}\n };\n\n // Extend defaults with modules params\n index.useModulesParams(defaults);\n index.params = extend(defaults, params);\n let $el;\n let $listEl;\n let $pageContentEl;\n let $ul;\n if (index.params.el) {\n $el = $(index.params.el);\n } else {\n return index;\n }\n if ($el[0].f7ListIndex) {\n return $el[0].f7ListIndex;\n }\n $ul = $el.find('ul');\n if ($ul.length === 0) {\n $ul = $('
          ');\n $el.append($ul);\n }\n if (index.params.listEl) {\n $listEl = $(index.params.listEl);\n }\n if (index.params.indexes === 'auto' && !$listEl) {\n return index;\n }\n if ($listEl) {\n $pageContentEl = $listEl.parents('.page-content').eq(0);\n } else {\n $pageContentEl = $el.siblings('.page-content').eq(0);\n if ($pageContentEl.length === 0) {\n $pageContentEl = $el.parents('.page').eq(0).find('.page-content').eq(0);\n }\n }\n $el[0].f7ListIndex = index;\n extend(index, {\n app,\n $el,\n el: $el && $el[0],\n $ul,\n ul: $ul && $ul[0],\n $listEl,\n listEl: $listEl && $listEl[0],\n $pageContentEl,\n pageContentEl: $pageContentEl && $pageContentEl[0],\n indexes: params.indexes,\n height: 0,\n skipRate: 0\n });\n\n // Install Modules\n index.useModules();\n\n // Attach events\n function handleResize() {\n const height = {\n index\n };\n index.calcSize();\n if (height !== index.height) {\n index.render();\n }\n }\n function handleClick(e) {\n const $clickedLi = $(e.target).closest('li');\n if (!$clickedLi.length) return;\n let itemIndex = $clickedLi.index();\n if (index.skipRate > 0) {\n const percentage = itemIndex / ($clickedLi.siblings('li').length - 1);\n itemIndex = Math.round((index.indexes.length - 1) * percentage);\n }\n const itemContent = index.indexes[itemIndex];\n index.$el.trigger('listindex:click', {\n content: itemContent,\n index: itemIndex\n });\n index.emit('local::click listIndexClick', index, itemContent, itemIndex);\n index.$el.trigger('listindex:select', {\n content: itemContent,\n index: itemIndex\n });\n index.emit('local::select listIndexSelect', index, itemContent, itemIndex);\n if (index.$listEl && index.params.scrollList) {\n index.scrollListToIndex(itemContent, itemIndex);\n }\n }\n const touchesStart = {};\n let isTouched;\n let isMoved;\n let topPoint;\n let bottomPoint;\n let $labelEl;\n let previousIndex = null;\n function handleTouchStart(e) {\n const $children = $ul.children();\n if (!$children.length) return;\n topPoint = $children[0].getBoundingClientRect().top;\n bottomPoint = $children[$children.length - 1].getBoundingClientRect().top + $children[0].offsetHeight;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isTouched = true;\n isMoved = false;\n previousIndex = null;\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n if (!isMoved && index.params.label) {\n $labelEl = $('');\n $el.append($labelEl);\n }\n isMoved = true;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n let percentage = (pageY - topPoint) / (bottomPoint - topPoint);\n percentage = Math.min(Math.max(percentage, 0), 1);\n const itemIndex = Math.round((index.indexes.length - 1) * percentage);\n const itemContent = index.indexes[itemIndex];\n const ulHeight = bottomPoint - topPoint;\n const bubbleBottom = (index.height - ulHeight) / 2 + (1 - percentage) * ulHeight;\n if (itemIndex !== previousIndex) {\n if (index.params.label) {\n $labelEl.html(itemContent).transform(`translateY(-${bubbleBottom}px)`);\n }\n if (index.$listEl && index.params.scrollList) {\n index.scrollListToIndex(itemContent, itemIndex);\n }\n }\n previousIndex = itemIndex;\n index.$el.trigger('listindex:select');\n index.emit('local::select listIndexSelect', index, itemContent, itemIndex);\n }\n function handleTouchEnd() {\n if (!isTouched) return;\n isTouched = false;\n isMoved = false;\n if (index.params.label) {\n if ($labelEl) $labelEl.remove();\n $labelEl = undefined;\n }\n }\n const passiveListener = getSupport().passiveListener ? {\n passive: true\n } : false;\n index.attachEvents = function attachEvents() {\n $el.parents('.tab').on('tab:show', handleResize);\n $el.parents('.page').on('page:reinit', handleResize);\n $el.parents('.panel').on('panel:open', handleResize);\n $el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast').on('modal:open', handleResize);\n app.on('resize', handleResize);\n $el.on('click', handleClick);\n $el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n };\n index.detachEvents = function attachEvents() {\n $el.parents('.tab').off('tab:show', handleResize);\n $el.parents('.page').off('page:reinit', handleResize);\n $el.parents('.panel').off('panel:open', handleResize);\n $el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast').off('modal:open', handleResize);\n app.off('resize', handleResize);\n $el.off('click', handleClick);\n $el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n };\n // Init\n index.init();\n return index;\n }\n // eslint-disable-next-line\n scrollListToIndex(itemContent, itemIndex) {\n const index = this;\n const {\n $listEl,\n $pageContentEl,\n app\n } = index;\n if (!$listEl || !$pageContentEl || $pageContentEl.length === 0) return index;\n let $scrollToEl;\n $listEl.find('.list-group-title').each(el => {\n if ($scrollToEl) return;\n const $el = $(el);\n if ($el.text() === itemContent) {\n $scrollToEl = $el;\n }\n });\n if (!$scrollToEl || $scrollToEl.length === 0) return index;\n const parentTop = $scrollToEl.parent().offset().top;\n let paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const scrollTop = $pageContentEl[0].scrollTop;\n const scrollToElTop = $scrollToEl.offset().top;\n if ($pageContentEl.parents('.page-with-navbar-large').length) {\n const navbarInnerEl = app.navbar.getElByPage($pageContentEl.parents('.page-with-navbar-large').eq(0));\n const $titleLargeEl = $(navbarInnerEl).find('.title-large');\n if ($titleLargeEl.length) {\n paddingTop -= $titleLargeEl[0].offsetHeight || 0;\n }\n }\n if (parentTop <= paddingTop) {\n $pageContentEl.scrollTop(parentTop + scrollTop - paddingTop);\n } else {\n $pageContentEl.scrollTop(scrollToElTop + scrollTop - paddingTop);\n }\n return index;\n }\n renderSkipPlaceholder() {\n const index = this;\n return index.params.renderSkipPlaceholder.call(index);\n }\n renderItem(itemContent, itemIndex) {\n const index = this;\n return index.params.renderItem.call(index, itemContent, itemIndex);\n }\n render() {\n const index = this;\n const {\n $ul,\n indexes,\n skipRate\n } = index;\n let wasSkipped;\n const html = indexes.map((itemContent, itemIndex) => {\n if (itemIndex % skipRate !== 0 && skipRate > 0) {\n wasSkipped = true;\n return '';\n }\n let itemHtml = index.renderItem(itemContent, itemIndex);\n if (wasSkipped) {\n itemHtml = index.renderSkipPlaceholder() + itemHtml;\n }\n wasSkipped = false;\n return itemHtml;\n }).join('');\n $ul.html(html);\n return index;\n }\n calcSize() {\n const index = this;\n const {\n app,\n params,\n el,\n indexes\n } = index;\n const height = el.offsetHeight;\n const itemHeight = params[`${app.theme}ItemHeight`];\n const maxItems = Math.floor(height / itemHeight);\n const items = indexes.length;\n let skipRate = 0;\n if (items > maxItems) {\n skipRate = Math.ceil((items * 2 - 1) / maxItems);\n }\n index.height = height;\n index.skipRate = skipRate;\n return index;\n }\n calcIndexes() {\n const index = this;\n if (index.params.indexes === 'auto') {\n index.indexes = [];\n index.$listEl.find('.list-group-title').each(el => {\n const elContent = $(el).text();\n if (index.indexes.indexOf(elContent) < 0) {\n index.indexes.push(elContent);\n }\n });\n } else {\n index.indexes = index.params.indexes;\n }\n return index;\n }\n update() {\n const index = this;\n index.calcIndexes();\n index.calcSize();\n index.render();\n return index;\n }\n init() {\n const index = this;\n index.calcIndexes();\n index.calcSize();\n index.render();\n index.attachEvents();\n }\n destroy() {\n let index = this;\n index.$el.trigger('listindex:beforedestroy', index);\n index.emit('local::beforeDestroy listIndexBeforeDestroy');\n index.detachEvents();\n if (index.$el[0]) {\n index.$el[0].f7ListIndex = null;\n delete index.$el[0].f7ListIndex;\n }\n deleteProps(index);\n index = null;\n }\n}\nexport default ListIndex;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport ListIndex from './list-index-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'listIndex',\n static: {\n ListIndex\n },\n create() {\n const app = this;\n app.listIndex = ConstructorMethods({\n defaultSelector: '.list-index',\n constructor: ListIndex,\n app,\n domProp: 'f7ListIndex'\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.list-index-init').each(listIndexEl => {\n const params = extend($(listIndexEl).dataset(), {\n el: listIndexEl\n });\n app.listIndex.create(params);\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.list-index-init').each(listIndexEl => {\n if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.list-index-init').each(listIndexEl => {\n const params = extend($(listIndexEl).dataset(), {\n el: listIndexEl\n });\n app.listIndex.create(params);\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.list-index-init').each(listIndexEl => {\n if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n });\n }\n },\n vnode: {\n 'list-index-init': {\n insert(vnode) {\n const app = this;\n const listIndexEl = vnode.elm;\n const params = extend($(listIndexEl).dataset(), {\n el: listIndexEl\n });\n app.listIndex.create(params);\n },\n destroy(vnode) {\n const listIndexEl = vnode.elm;\n if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nconst Tab = {\n show() {\n const app = this;\n let tabEl;\n let tabLinkEl;\n let animate;\n let tabRoute;\n let animatedInit;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0] && args[0].constructor === Object) {\n tabEl = args[0].tabEl;\n tabLinkEl = args[0].tabLinkEl;\n animate = args[0].animate;\n tabRoute = args[0].tabRoute;\n animatedInit = args[0].animatedInit;\n } else {\n [tabEl, tabLinkEl, animate, tabRoute] = args;\n if (typeof args[1] === 'boolean') {\n [tabEl, animate, tabLinkEl, tabRoute] = args;\n if (args.length > 2 && tabLinkEl.constructor === Object) {\n [tabEl, animate, tabRoute, tabLinkEl] = args;\n }\n }\n }\n if (typeof animate === 'undefined') animate = true;\n const $newTabEl = $(tabEl);\n if (tabRoute && $newTabEl[0]) {\n $newTabEl[0].f7TabRoute = tabRoute;\n }\n if (!animatedInit && ($newTabEl.length === 0 || $newTabEl.hasClass('tab-active'))) {\n return {\n $newTabEl,\n newTabEl: $newTabEl[0]\n };\n }\n let $tabLinkEl;\n if (tabLinkEl) $tabLinkEl = $(tabLinkEl);\n const $tabsEl = $newTabEl.parent('.tabs');\n if ($tabsEl.length === 0) {\n return {\n $newTabEl,\n newTabEl: $newTabEl[0]\n };\n }\n\n // Release swipeouts in hidden tabs\n if (app.swipeout) app.swipeout.allowOpen = true;\n\n // Animated tabs\n const tabsChangedCallbacks = [];\n function onTabsChanged(callback) {\n tabsChangedCallbacks.push(callback);\n }\n function tabsChanged() {\n tabsChangedCallbacks.forEach(callback => {\n callback();\n });\n }\n let animated = false;\n if ($tabsEl.parent().hasClass('tabs-animated-wrap')) {\n $tabsEl.parent()[animate ? 'removeClass' : 'addClass']('not-animated');\n const transitionDuration = parseFloat($tabsEl.css('transition-duration').replace(',', '.'));\n if (animate && transitionDuration) {\n $tabsEl.transitionEnd(tabsChanged);\n animated = true;\n }\n const tabsTranslate = (app.rtl ? $newTabEl.index() : -$newTabEl.index()) * 100;\n $tabsEl.transform(`translate3d(${tabsTranslate}%,0,0)`);\n }\n\n // Swipeable tabs\n let swiper;\n if ($tabsEl[0].nodeName.toLowerCase() === 'swiper-container' && app.swiper) {\n swiper = $tabsEl[0].swiper;\n const newTabIndex = swiper.slides.indexOf($newTabEl[0]);\n if (swiper && swiper.activeIndex !== newTabIndex) {\n animated = true;\n swiper.once('slideChangeTransitionEnd', () => {\n tabsChanged();\n }).slideTo(newTabIndex, animate ? undefined : 0);\n } else if (swiper && swiper.animating) {\n animated = true;\n swiper.once('slideChangeTransitionEnd', () => {\n tabsChanged();\n });\n }\n }\n\n // Remove active class from old tabs\n const $oldTabEl = $tabsEl.children('.tab-active');\n $oldTabEl.removeClass('tab-active');\n if (!animatedInit && (!swiper || swiper && !swiper.animating || swiper && tabRoute)) {\n if ($oldTabEl.hasClass('view') && $oldTabEl.children('.page').length) {\n $oldTabEl.children('.page').each(pageEl => {\n $(pageEl).trigger('page:tabhide');\n app.emit('pageTabHide', pageEl);\n });\n }\n $oldTabEl.trigger('tab:hide');\n app.emit('tabHide', $oldTabEl[0]);\n }\n\n // Trigger 'show' event on new tab\n $newTabEl.addClass('tab-active');\n if (!animatedInit && (!swiper || swiper && !swiper.animating || swiper && tabRoute)) {\n if ($newTabEl.hasClass('view') && $newTabEl.children('.page').length) {\n $newTabEl.children('.page').each(pageEl => {\n $(pageEl).trigger('page:tabshow');\n app.emit('pageTabShow', pageEl);\n });\n }\n $newTabEl.trigger('tab:show');\n app.emit('tabShow', $newTabEl[0]);\n }\n\n // Find related link for new tab\n if (!$tabLinkEl) {\n // Search by id\n if (typeof tabEl === 'string') $tabLinkEl = $(`.tab-link[href=\"${tabEl}\"]`);else $tabLinkEl = $(`.tab-link[href=\"#${$newTabEl.attr('id')}\"]`);\n // Search by data-tab\n if (!$tabLinkEl || $tabLinkEl && $tabLinkEl.length === 0) {\n $('[data-tab]').each(el => {\n if ($newTabEl.is($(el).attr('data-tab'))) $tabLinkEl = $(el);\n });\n }\n if (tabRoute && (!$tabLinkEl || $tabLinkEl && $tabLinkEl.length === 0)) {\n $tabLinkEl = $(`[data-route-tab-id=\"${tabRoute.route.tab.id}\"]`);\n if ($tabLinkEl.length === 0) {\n $tabLinkEl = $(`.tab-link[href=\"${tabRoute.url}\"]`);\n }\n }\n if ($tabLinkEl.length > 1 && $newTabEl.parents('.page').length) {\n // eslint-disable-next-line\n $tabLinkEl = $tabLinkEl.filter(tabLinkElement => {\n return $(tabLinkElement).parents('.page')[0] === $newTabEl.parents('.page')[0];\n });\n if (app.theme === 'ios' && $tabLinkEl.length === 0 && tabRoute) {\n const $pageEl = $newTabEl.parents('.page');\n const $navbarEl = $(app.navbar.getElByPage($pageEl));\n $tabLinkEl = $navbarEl.find(`[data-route-tab-id=\"${tabRoute.route.tab.id}\"]`);\n if ($tabLinkEl.length === 0) {\n $tabLinkEl = $navbarEl.find(`.tab-link[href=\"${tabRoute.url}\"]`);\n }\n }\n }\n }\n if ($tabLinkEl.length > 0) {\n // Find related link for old tab\n let $oldTabLinkEl;\n if ($oldTabEl && $oldTabEl.length > 0) {\n // Search by id\n const oldTabId = $oldTabEl.attr('id');\n if (oldTabId) {\n $oldTabLinkEl = $(`.tab-link[href=\"#${oldTabId}\"]`);\n // Search by data-route-tab-id\n if (!$oldTabLinkEl || $oldTabLinkEl && $oldTabLinkEl.length === 0) {\n $oldTabLinkEl = $(`.tab-link[data-route-tab-id=\"${oldTabId}\"]`);\n }\n }\n // Search by data-tab\n if (!$oldTabLinkEl || $oldTabLinkEl && $oldTabLinkEl.length === 0) {\n $('[data-tab]').each(tabLinkElement => {\n if ($oldTabEl.is($(tabLinkElement).attr('data-tab'))) $oldTabLinkEl = $(tabLinkElement);\n });\n }\n if (!$oldTabLinkEl || $oldTabLinkEl && $oldTabLinkEl.length === 0) {\n $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');\n }\n } else if (tabRoute) {\n $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');\n }\n if ($oldTabLinkEl && $oldTabLinkEl.length > 1 && $oldTabEl && $oldTabEl.parents('.page').length) {\n // eslint-disable-next-line\n $oldTabLinkEl = $oldTabLinkEl.filter(tabLinkElement => {\n return $(tabLinkElement).parents('.page')[0] === $oldTabEl.parents('.page')[0];\n });\n }\n if ($oldTabLinkEl && $oldTabLinkEl.length > 0) $oldTabLinkEl.removeClass('tab-link-active');\n\n // Update links' classes\n if ($tabLinkEl && $tabLinkEl.length > 0) {\n $tabLinkEl.addClass('tab-link-active');\n // Material Highlight\n const $tabbarEl = $tabLinkEl.parents('.tabbar, .tabbar-icons');\n const hasHighlight = app.toolbar && $tabbarEl.length > 0 && ($tabbarEl.hasClass('tabbar-highlight') || app.theme !== 'ios');\n if (hasHighlight) {\n app.toolbar.setHighlight($tabbarEl);\n }\n }\n }\n return {\n $newTabEl,\n newTabEl: $newTabEl[0],\n $oldTabEl,\n oldTabEl: $oldTabEl[0],\n onTabsChanged,\n animated\n };\n }\n};\nexport default {\n name: 'tabs',\n create() {\n const app = this;\n extend(app, {\n tab: {\n show: Tab.show.bind(app)\n }\n });\n },\n on: {\n 'pageInit tabMounted': function onInit(pageOrTabEl) {\n const $el = $(pageOrTabEl.el || pageOrTabEl);\n const animatedTabEl = $el.find('.tabs-animated-wrap > .tabs > .tab-active')[0];\n if (!animatedTabEl) return;\n const app = this;\n app.tab.show({\n tabEl: animatedTabEl,\n animatedInit: true,\n animate: false\n });\n }\n },\n clicks: {\n '.tab-link': function tabLinkClick($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n if ($clickedEl.attr('href') && $clickedEl.attr('href').indexOf('#') === 0 || $clickedEl.attr('data-tab')) {\n const app = this;\n app.tab.show({\n tabEl: data.tab || $clickedEl.attr('href'),\n tabLinkEl: $clickedEl,\n animate: data.animate\n });\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, now, nextFrame } from '../../shared/utils.js';\nfunction swipePanel(panel) {\n const app = panel.app;\n if (panel.swipeInitialized) {\n return;\n }\n extend(panel, {\n swipeable: true,\n swipeInitialized: true\n });\n const params = panel.params;\n const {\n $el,\n $backdropEl,\n side,\n effect\n } = panel;\n let otherPanel;\n let isTouched;\n let isGestureStarted;\n let isMoved;\n let isScrolling;\n let isInterrupted;\n const touchesStart = {};\n let touchStartTime;\n let touchesDiff;\n let translate;\n let backdropOpacity;\n let panelWidth;\n let direction;\n let $viewEl;\n let touchMoves = 0;\n function handleTouchStart(e) {\n if (!panel.swipeable || isGestureStarted) return;\n if (!app.panel.allowOpen || !params.swipe && !params.swipeOnlyClose || isTouched) return;\n if ($('.modal-in:not(.toast):not(.notification), .photo-browser-in').length > 0) return;\n otherPanel = app.panel.get(side === 'left' ? 'right' : 'left') || {};\n const otherPanelOpened = otherPanel.opened && otherPanel.$el && !otherPanel.$el.hasClass('panel-in-breakpoint');\n if (!panel.opened && otherPanelOpened) {\n return;\n }\n if (!params.swipeOnlyClose) {\n if (otherPanelOpened) return;\n }\n if (e.target && e.target.nodeName.toLowerCase() === 'input' && e.target.type === 'range') return;\n if ($(e.target).closest('.range-slider, swiper-container.tabs, .calendar-months, .no-swipe-panel, .card-opened').length > 0) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n if (params.swipeOnlyClose && !panel.opened) {\n return;\n }\n if (params.swipeActiveArea && !panel.opened) {\n if (side === 'left') {\n if (touchesStart.x > params.swipeActiveArea) return;\n }\n if (side === 'right') {\n if (touchesStart.x < app.width - params.swipeActiveArea) return;\n }\n }\n touchMoves = 0;\n $viewEl = $(panel.getViewEl());\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n isInterrupted = false;\n touchStartTime = now();\n direction = undefined;\n }\n function handleTouchMove(e) {\n if (!isTouched || isGestureStarted || isInterrupted) return;\n touchMoves += 1;\n if (touchMoves < 2) return;\n if (e.f7PreventSwipePanel || app.preventSwipePanelBySwipeBack || app.preventSwipePanel) {\n isTouched = false;\n return;\n }\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n if (!direction) {\n if (pageX > touchesStart.x) {\n direction = 'to-right';\n } else {\n direction = 'to-left';\n }\n if (params.swipeActiveArea > 0 && !panel.opened) {\n if (side === 'left' && touchesStart.x > params.swipeActiveArea) {\n isTouched = false;\n return;\n }\n if (side === 'right' && touchesStart.x < app.width - params.swipeActiveArea) {\n isTouched = false;\n return;\n }\n }\n if ($el.hasClass('panel-in-breakpoint')) {\n isTouched = false;\n return;\n }\n if (side === 'left' && direction === 'to-left' && !$el.hasClass('panel-in') || side === 'right' && direction === 'to-right' && !$el.hasClass('panel-in')) {\n isTouched = false;\n return;\n }\n }\n let threshold = panel.opened ? 0 : -params.swipeThreshold;\n if (side === 'right') threshold = -threshold;\n if (!isMoved) {\n if (!panel.opened) {\n panel.insertToRoot();\n $el.addClass('panel-in-swipe');\n if ($backdropEl) $backdropEl.css('visibility', 'visible');\n $el.trigger('panel:swipeopen');\n panel.emit('local::swipeOpen panelSwipeOpen', panel);\n }\n panelWidth = $el[0].offsetWidth;\n if (effect === 'reveal' && $el.hasClass('panel-in-collapsed')) {\n panelWidth -= parseFloat($viewEl.css(`margin-${side}`));\n }\n $el.transition(0);\n }\n isMoved = true;\n if (e.cancelable) {\n e.preventDefault();\n }\n touchesDiff = pageX - touchesStart.x + threshold;\n const startTranslate = effect === 'floating' ? 8 : 0;\n if (side === 'right') {\n if (effect === 'cover' || effect === 'push' || effect === 'floating') {\n translate = touchesDiff + (panel.opened ? startTranslate : panelWidth);\n if (translate < 0 - startTranslate) translate = -startTranslate;\n if (translate > panelWidth) {\n translate = panelWidth;\n }\n } else {\n translate = touchesDiff - (panel.opened ? panelWidth : 0);\n if (translate > 0) translate = 0;\n if (translate < -panelWidth) {\n translate = -panelWidth;\n }\n }\n } else {\n translate = touchesDiff + (panel.opened ? panelWidth : startTranslate);\n if (translate < 0) translate = 0;\n if (translate > panelWidth + startTranslate) {\n translate = panelWidth + startTranslate;\n }\n }\n const noFollowProgress = Math.abs(translate / panelWidth);\n if (effect === 'reveal') {\n if (!params.swipeNoFollow) {\n $viewEl.transform(`translate3d(${translate}px,0,0)`).transition(0);\n if ($backdropEl) $backdropEl.transform(`translate3d(${translate}px,0,0)`).transition(0);\n }\n $el.trigger('panel:swipe', Math.abs(translate / panelWidth));\n panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));\n } else {\n if (side === 'left') translate -= panelWidth;\n if (!params.swipeNoFollow) {\n backdropOpacity = 1 - Math.abs(translate / panelWidth);\n if ($backdropEl) {\n $backdropEl.transition(0);\n $backdropEl.css({\n opacity: backdropOpacity\n });\n }\n $el.transform(`translate3d(${translate}px,0,0)`).transition(0);\n if (effect === 'push') {\n const viewTranslate = side === 'left' ? translate + panelWidth : translate - panelWidth;\n $viewEl.transform(`translate3d(${viewTranslate}px,0,0)`).transition(0);\n if ($backdropEl) {\n $backdropEl.transform(`translate3d(${viewTranslate}px,0,0)`).transition(0);\n }\n }\n }\n $el.trigger('panel:swipe', Math.abs(translate / panelWidth));\n panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));\n }\n if (params.swipeNoFollow) {\n const stateChanged = panel.opened && noFollowProgress === 0 || !panel.opened && noFollowProgress === 1;\n if (stateChanged) {\n isInterrupted = true;\n // eslint-disable-next-line\n handleTouchEnd(e);\n }\n }\n }\n function handleTouchEnd(e) {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n const isGesture = e.type === 'gesturestart' || isGestureStarted;\n isTouched = false;\n isMoved = false;\n const timeDiff = new Date().getTime() - touchStartTime;\n let action;\n const startTranslate = effect === 'floating' ? side === 'left' ? 8 : -8 : 0;\n const edge = (translate === startTranslate || Math.abs(translate) === panelWidth) && !params.swipeNoFollow;\n const threshold = params.swipeThreshold || 0;\n if (isGesture) {\n action = 'reset';\n } else if (!panel.opened) {\n if (Math.abs(touchesDiff) < threshold) {\n action = 'reset';\n } else if (effect === 'cover' || effect === 'push' || effect === 'floating') {\n if (translate === 0 + startTranslate) {\n action = 'swap'; // open\n } else if (timeDiff < 300 && Math.abs(translate) > 0) {\n action = 'swap'; // open\n } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {\n action = 'swap'; // open\n } else {\n action = 'reset'; // close\n }\n } else if (translate === 0) {\n action = 'reset';\n } else if (timeDiff < 300 && Math.abs(translate) > 0 || timeDiff >= 300 && Math.abs(translate) >= panelWidth / 2) {\n action = 'swap';\n } else {\n action = 'reset';\n }\n } else if (effect === 'cover' || effect === 'push' || effect === 'floating') {\n if (translate === 0) {\n action = 'reset'; // open\n } else if (timeDiff < 300 && Math.abs(translate) > 0) {\n action = 'swap'; // open\n } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {\n action = 'reset'; // open\n } else {\n action = 'swap'; // close\n }\n } else if (translate === -panelWidth) {\n action = 'reset';\n } else if (timeDiff < 300 && Math.abs(translate) >= 0 || timeDiff >= 300 && Math.abs(translate) <= panelWidth / 2) {\n if (side === 'left' && translate === panelWidth) action = 'reset';else action = 'swap';\n } else {\n action = 'reset';\n }\n if (action === 'swap') {\n if (panel.opened) {\n panel.close(!edge);\n } else {\n panel.open(!edge);\n }\n }\n let removePanelInClass = true;\n if (action === 'reset') {\n if (!panel.opened) {\n if (edge) {\n // edge position\n $el.removeClass('panel-in-swipe');\n } else {\n removePanelInClass = false;\n const target = effect === 'reveal' ? $viewEl : $el;\n panel.setStateClasses('before-closing');\n target.transitionEnd(() => {\n if ($el.hasClass('panel-in')) return;\n $el.removeClass('panel-in-swipe');\n panel.setStateClasses('after-closing');\n });\n }\n }\n }\n if (effect === 'reveal' || effect === 'push') {\n nextFrame(() => {\n $viewEl.transition('');\n $viewEl.transform('');\n });\n }\n if (removePanelInClass) {\n $el.removeClass('panel-in-swipe');\n }\n $el.transition('').transform('');\n if ($backdropEl) {\n $backdropEl.transform('').transition('').css({\n opacity: '',\n visibility: ''\n });\n }\n }\n function handleGestureStart(e) {\n isGestureStarted = true;\n handleTouchEnd(e);\n }\n function handleGestureEnd() {\n isGestureStarted = false;\n }\n\n // Add Events\n app.on('touchstart:passive', handleTouchStart);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('gesturestart', handleGestureStart);\n app.on('gestureend', handleGestureEnd);\n panel.on('panelDestroy', () => {\n app.off('touchstart:passive', handleTouchStart);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('gesturestart', handleGestureStart);\n app.off('gestureend', handleGestureEnd);\n });\n}\nexport default swipePanel;","import $ from '../../shared/dom7.js';\nimport { extend, nextFrame } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nfunction resizablePanel(panel) {\n const app = panel.app;\n const support = getSupport();\n if (panel.resizableInitialized) return;\n extend(panel, {\n resizable: true,\n resizableWidth: null,\n resizableInitialized: true\n });\n const $htmlEl = $('html');\n const {\n $el,\n $backdropEl,\n side,\n effect\n } = panel;\n if (!$el) return;\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let touchesDiff;\n let panelWidth;\n let $viewEl;\n let panelMinWidth;\n let panelMaxWidth;\n let visibleByBreakpoint;\n const isPushingPanel = effect !== 'cover' && effect !== 'floating';\n function transformCSSWidth(v) {\n if (!v) return null;\n if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {\n return parseInt(v, 10) / 100 * app.width;\n }\n const newV = parseInt(v, 10);\n if (Number.isNaN(newV)) return null;\n return newV;\n }\n function isResizable() {\n return panel.resizable && $el.hasClass('panel-resizable');\n }\n function handleTouchStart(e) {\n if (!isResizable()) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isMoved = false;\n isTouched = true;\n panelMinWidth = transformCSSWidth($el.css('min-width'));\n panelMaxWidth = transformCSSWidth($el.css('max-width'));\n visibleByBreakpoint = $el.hasClass('panel-in-breakpoint');\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n if (!isMoved) {\n panelWidth = $el[0].offsetWidth;\n $el.transition(0);\n $el.addClass('panel-resizing');\n $htmlEl.css('cursor', 'col-resize');\n if (isPushingPanel || visibleByBreakpoint) {\n $viewEl = $(panel.getViewEl());\n if (panel.$containerEl && panel.$containerEl.hasClass('page')) {\n $viewEl.add(panel.$containerEl.children('.page-content, .tabs, .fab'));\n }\n }\n if (isPushingPanel && !visibleByBreakpoint) {\n $backdropEl.transition(0);\n $viewEl.transition(0);\n }\n }\n isMoved = true;\n e.preventDefault();\n touchesDiff = pageX - touchesStart.x;\n let newPanelWidth = side === 'left' ? panelWidth + touchesDiff : panelWidth - touchesDiff;\n if (panelMinWidth && !Number.isNaN(panelMinWidth)) {\n newPanelWidth = Math.max(newPanelWidth, panelMinWidth);\n }\n if (panelMaxWidth && !Number.isNaN(panelMaxWidth)) {\n newPanelWidth = Math.min(newPanelWidth, panelMaxWidth);\n }\n newPanelWidth = Math.min(Math.max(newPanelWidth, 0), app.width);\n panel.resizableWidth = newPanelWidth;\n $el[0].style.width = `${newPanelWidth}px`;\n if (isPushingPanel && !visibleByBreakpoint) {\n if ($viewEl) {\n $viewEl.transform(`translate3d(${side === 'left' ? newPanelWidth : -newPanelWidth}px, 0, 0)`);\n }\n if ($backdropEl) {\n $backdropEl.transform(`translate3d(${side === 'left' ? newPanelWidth : -newPanelWidth}px, 0, 0)`);\n }\n } else if (visibleByBreakpoint && $viewEl) {\n $viewEl.css(`margin-${side}`, `${newPanelWidth}px`);\n }\n $el.trigger('panel:resize', newPanelWidth);\n panel.emit('local::resize panelResize', panel, newPanelWidth);\n }\n function handleTouchEnd() {\n $('html').css('cursor', '');\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n $htmlEl[0].style.setProperty(`--f7-panel-${side}-width`, `${panel.resizableWidth}px`);\n $el[0].style.width = '';\n if (isPushingPanel && !visibleByBreakpoint) {\n $viewEl.transform('');\n $backdropEl.transform('');\n }\n $el.removeClass('panel-resizing');\n nextFrame(() => {\n $el.transition('');\n if (isPushingPanel) {\n $backdropEl.transition('');\n if ($viewEl) $viewEl.transition('');\n }\n });\n }\n function handleResize() {\n if (!panel.opened || !panel.resizableWidth) return;\n panelMinWidth = transformCSSWidth($el.css('min-width'));\n panelMaxWidth = transformCSSWidth($el.css('max-width'));\n if (panelMinWidth && !Number.isNaN(panelMinWidth) && panel.resizableWidth < panelMinWidth) {\n panel.resizableWidth = Math.max(panel.resizableWidth, panelMinWidth);\n }\n if (panelMaxWidth && !Number.isNaN(panelMaxWidth) && panel.resizableWidth > panelMaxWidth) {\n panel.resizableWidth = Math.min(panel.resizableWidth, panelMaxWidth);\n }\n panel.resizableWidth = Math.min(Math.max(panel.resizableWidth, 0), app.width);\n $htmlEl[0].style.setProperty(`--f7-panel-${side}-width`, `${panel.resizableWidth}px`);\n }\n if (panel.$el.find('.panel-resize-handler').length === 0) {\n panel.$el.append('
          ');\n }\n panel.$resizeHandlerEl = panel.$el.children('.panel-resize-handler');\n $el.addClass('panel-resizable');\n\n // Add Events\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n panel.$el.on(app.touchEvents.start, '.panel-resize-handler', handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n panel.on('beforeOpen', handleResize);\n panel.once('panelDestroy', () => {\n $el.removeClass('panel-resizable');\n panel.$resizeHandlerEl.remove();\n panel.$el.off(app.touchEvents.start, '.panel-resize-handler', handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n panel.off('beforeOpen', handleResize);\n });\n}\nexport default resizablePanel;","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport swipePanel from './swipe-panel.js';\nimport resizablePanel from './resizable-panel.js';\nclass Panel extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n const extendedParams = extend({\n on: {}\n }, app.params.panel, params);\n super(extendedParams, [app]);\n const panel = this;\n panel.params = extendedParams;\n panel.$containerEl = panel.params.containerEl ? $(panel.params.containerEl).eq(0) : app.$el;\n panel.containerEl = panel.$containerEl[0];\n if (!panel.containerEl) {\n panel.$containerEl = app.$el;\n panel.containerEl = app.$el[0];\n }\n let $el;\n if (panel.params.el) {\n $el = $(panel.params.el).eq(0);\n } else if (panel.params.content) {\n $el = $(panel.params.content).filter(node => node.nodeType === 1).eq(0);\n }\n if ($el.length === 0) return panel;\n if ($el[0].f7Panel) return $el[0].f7Panel;\n $el[0].f7Panel = panel;\n let {\n side,\n effect,\n resizable\n } = panel.params;\n if (typeof side === 'undefined') side = $el.hasClass('panel-left') ? 'left' : 'right';\n if (typeof effect === 'undefined')\n // eslint-disable-next-line\n effect = $el.hasClass('panel-cover') ? 'cover' : $el.hasClass('panel-push') ? 'push' : $el.hasClass('panel-floating') ? 'floating' : 'reveal';\n if (typeof resizable === 'undefined') resizable = $el.hasClass('panel-resizable');\n let $backdropEl;\n if (panel.params.backdrop && panel.params.backdropEl) {\n $backdropEl = $(panel.params.backdropEl);\n } else if (panel.params.backdrop) {\n $backdropEl = panel.$containerEl.children('.panel-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('
          ');\n panel.$containerEl.prepend($backdropEl);\n }\n }\n extend(panel, {\n app,\n side,\n effect,\n resizable,\n $el,\n el: $el[0],\n opened: false,\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0]\n });\n\n // Install Modules\n panel.useModules();\n\n // Init\n panel.init();\n return panel;\n }\n getViewEl() {\n const panel = this;\n let viewEl;\n if (panel.$containerEl.children('.views').length > 0) {\n viewEl = panel.$containerEl.children('.views')[0];\n } else {\n viewEl = panel.$containerEl.children('.view')[0];\n }\n return viewEl;\n }\n setStateClasses(state) {\n const panel = this;\n const {\n side,\n el,\n effect\n } = panel;\n const viewEl = panel.getViewEl();\n const panelInView = viewEl && viewEl.contains(el);\n const $targetEl = !viewEl || panelInView ? panel.$containerEl : $('html');\n if (state === 'open') {\n $targetEl.addClass(`with-panel with-panel-${panel.side}-${panel.effect}`);\n }\n if (state === 'before-closing') {\n $targetEl.addClass('with-panel-closing');\n }\n if (state === 'closing') {\n $targetEl.addClass('with-panel-closing');\n $targetEl.removeClass(`with-panel with-panel-${panel.side}-${panel.effect}`);\n }\n if (state === 'after-closing') {\n $targetEl.removeClass('with-panel-closing');\n }\n if (state === 'closed') {\n $targetEl.removeClass(`with-panel-${side}-${effect}`);\n }\n }\n enableVisibleBreakpoint() {\n const panel = this;\n panel.visibleBreakpointDisabled = false;\n panel.setVisibleBreakpoint();\n return panel;\n }\n disableVisibleBreakpoint() {\n const panel = this;\n panel.visibleBreakpointDisabled = true;\n panel.setVisibleBreakpoint();\n return panel;\n }\n toggleVisibleBreakpoint() {\n const panel = this;\n panel.visibleBreakpointDisabled = !panel.visibleBreakpointDisabled;\n panel.setVisibleBreakpoint();\n return panel;\n }\n setVisibleBreakpoint(emitEvents) {\n if (emitEvents === void 0) {\n emitEvents = true;\n }\n const panel = this;\n const app = panel.app;\n if (!panel.visibleBreakpointResizeHandler) {\n panel.visibleBreakpointResizeHandler = function visibleBreakpointResizeHandler() {\n panel.setVisibleBreakpoint();\n };\n app.on('resize', panel.visibleBreakpointResizeHandler);\n }\n const {\n side,\n $el,\n $containerEl,\n params,\n visibleBreakpointDisabled\n } = panel;\n const breakpoint = params.visibleBreakpoint;\n const $viewEl = $(panel.getViewEl());\n const wasVisible = $el.hasClass('panel-in-breakpoint');\n if ($containerEl && $containerEl.hasClass('page')) {\n $viewEl.add($containerEl.children('.page-content, .tabs, .fab'));\n }\n if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null && !visibleBreakpointDisabled) {\n if (!wasVisible) {\n panel.setStateClasses('closed');\n $el.addClass('panel-in-breakpoint').removeClass('panel-in panel-in-collapsed');\n panel.onOpen(false);\n panel.onOpened();\n $viewEl.css({\n [`margin-${side}`]: `${$el.width()}px`\n });\n app.allowPanelOpen = true;\n if (emitEvents) {\n panel.emit('local::breakpoint panelBreakpoint', panel);\n panel.$el.trigger('panel:breakpoint');\n }\n } else {\n $viewEl.css({\n [`margin-${side}`]: `${$el.width()}px`\n });\n }\n } else if (wasVisible) {\n $el.removeClass('panel-in-breakpoint panel-in');\n panel.onClose();\n panel.onClosed();\n $viewEl.css({\n [`margin-${side}`]: ''\n });\n if (emitEvents) {\n panel.emit('local::breakpoint panelBreakpoint', panel);\n panel.$el.trigger('panel:breakpoint');\n }\n }\n }\n enableCollapsedBreakpoint() {\n const panel = this;\n panel.collapsedBreakpointDisabled = false;\n panel.setCollapsedBreakpoint();\n return panel;\n }\n disableCollapsedBreakpoint() {\n const panel = this;\n panel.collapsedBreakpointDisabled = true;\n panel.setCollapsedBreakpoint();\n return panel;\n }\n toggleCollapsedBreakpoint() {\n const panel = this;\n panel.collapsedBreakpointDisabled = !panel.collapsedBreakpointDisabled;\n panel.setCollapsedBreakpoint();\n return panel;\n }\n setCollapsedBreakpoint(emitEvents) {\n if (emitEvents === void 0) {\n emitEvents = true;\n }\n const panel = this;\n const app = panel.app;\n if (!panel.collapsedBreakpointResizeHandler) {\n panel.collapsedBreakpointResizeHandler = function collapsedBreakpointResizeHandler() {\n panel.setCollapsedBreakpoint();\n };\n app.on('resize', panel.collapsedBreakpointResizeHandler);\n }\n const {\n $el,\n params,\n collapsedBreakpointDisabled\n } = panel;\n if ($el.hasClass('panel-in-breakpoint')) return;\n const breakpoint = params.collapsedBreakpoint;\n const wasVisible = $el.hasClass('panel-in-collapsed');\n if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null && !collapsedBreakpointDisabled) {\n if (!wasVisible) {\n panel.setStateClasses('closed');\n $el.addClass('panel-in-collapsed').removeClass('panel-in');\n panel.collapsed = true;\n app.allowPanelOpen = true;\n if (emitEvents) {\n panel.emit('local::collapsedBreakpoint panelCollapsedBreakpoint', panel);\n panel.$el.trigger('panel:collapsedbreakpoint');\n }\n }\n } else if (wasVisible) {\n $el.removeClass('panel-in-collapsed panel-in');\n panel.collapsed = false;\n if (emitEvents) {\n panel.emit('local::collapsedBreakpoint panelCollapsedBreakpoint', panel);\n panel.$el.trigger('panel:collapsedbreakpoint');\n }\n }\n }\n enableResizable() {\n const panel = this;\n if (panel.resizableInitialized) {\n panel.resizable = true;\n panel.$el.addClass('panel-resizable');\n } else {\n resizablePanel(panel);\n }\n return panel;\n }\n disableResizable() {\n const panel = this;\n panel.resizable = false;\n panel.$el.removeClass('panel-resizable');\n return panel;\n }\n enableSwipe() {\n const panel = this;\n if (panel.swipeInitialized) {\n panel.swipeable = true;\n } else {\n swipePanel(panel);\n }\n return panel;\n }\n disableSwipe() {\n const panel = this;\n panel.swipeable = false;\n return panel;\n }\n onOpen(modifyHtmlClasses) {\n if (modifyHtmlClasses === void 0) {\n modifyHtmlClasses = true;\n }\n const panel = this;\n // eslint-disable-next-line\n panel._openTransitionStarted = false;\n const app = panel.app;\n panel.opened = true;\n app.panel.allowOpen = false;\n panel.$el.trigger('panel:beforeopen');\n panel.emit('local::beforeOpen panelBeforeOpen', panel);\n if (modifyHtmlClasses) {\n panel.setStateClasses('open');\n }\n panel.$el.trigger('panel:open');\n panel.emit('local::open panelOpen', panel);\n }\n onOpened() {\n const panel = this;\n const app = panel.app;\n app.panel.allowOpen = true;\n panel.$el.trigger('panel:opened');\n panel.emit('local::opened panelOpened', panel);\n }\n onClose() {\n const panel = this;\n const app = panel.app;\n panel.opened = false;\n app.panel.allowOpen = false;\n panel.$el.trigger('panel:beforeclose');\n panel.emit('local::beforeClose panelBeforeClose', panel);\n panel.setStateClasses('closing');\n panel.$el.trigger('panel:close');\n panel.emit('local::close panelClose', panel);\n }\n onClosed() {\n const panel = this;\n const app = panel.app;\n app.panel.allowOpen = true;\n panel.setStateClasses('after-closing');\n panel.$el.removeClass('panel-out');\n if (panel.$backdropEl) {\n const otherPanel = app.panel.get('.panel-in');\n const shouldHideBackdrop = !otherPanel || otherPanel && !otherPanel.$backdropEl;\n if (shouldHideBackdrop) {\n panel.$backdropEl.removeClass('panel-backdrop-in');\n }\n }\n panel.$el.trigger('panel:closed');\n panel.emit('local::closed panelClosed', panel);\n }\n toggle(animate) {\n if (animate === void 0) {\n animate = true;\n }\n const panel = this;\n const breakpoint = panel.params.visibleBreakpoint;\n const app = panel.app;\n if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null) {\n return panel.toggleVisibleBreakpoint();\n }\n if (panel.opened) panel.close(animate);else panel.open(animate);\n return panel;\n }\n insertToRoot() {\n const panel = this;\n const document = getDocument();\n const {\n $el,\n $backdropEl,\n $containerEl\n } = panel;\n const $panelParentEl = $el.parent();\n const wasInDom = $el.parents(document).length > 0;\n if (!$panelParentEl.is($containerEl) || $el.prevAll('.views, .view').length) {\n const $insertBeforeEl = $containerEl.children('.panel, .views, .view').eq(0);\n const $insertAfterEl = $containerEl.children('.panel-backdrop').eq(0);\n if ($insertBeforeEl.length) {\n $el.insertBefore($insertBeforeEl);\n } else if ($insertAfterEl) {\n $el.insertBefore($insertAfterEl);\n } else {\n $containerEl.prepend($el);\n }\n if ($backdropEl && $backdropEl.length && (!$backdropEl.parent().is($containerEl) && $backdropEl.nextAll('.panel').length === 0 || $backdropEl.parent().is($containerEl) && $backdropEl.nextAll('.panel').length === 0)) {\n $backdropEl.insertBefore($el);\n }\n panel.once('panelClosed', () => {\n if (wasInDom) {\n $panelParentEl.append($el);\n } else {\n $el.remove();\n }\n });\n }\n }\n open(animate) {\n if (animate === void 0) {\n animate = true;\n }\n const panel = this;\n const app = panel.app;\n if (!app.panel.allowOpen) return false;\n const {\n effect,\n $el,\n $backdropEl,\n opened,\n $containerEl\n } = panel;\n if (!$el || $el.hasClass('panel-in')) {\n return panel;\n }\n panel.insertToRoot();\n\n // Ignore if opened\n if (opened || $el.hasClass('panel-in-breakpoint') || $el.hasClass('panel-in')) return false;\n\n // Close if some panel is opened\n const otherOpenedPanel = app.panel.get('.panel-in');\n if (otherOpenedPanel && otherOpenedPanel !== panel) {\n otherOpenedPanel.close(animate);\n }\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n $el.addClass('panel-in');\n if ($backdropEl) {\n $backdropEl.addClass('panel-backdrop-in');\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n }\n if (['cover', 'push', 'floating'].includes(panel.effect)) {\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n panel._clientLeft = $el[0].clientLeft;\n }\n\n // Transitionend\n const $viewEl = $(panel.getViewEl());\n if ($containerEl && $containerEl.hasClass('page')) {\n $viewEl.add($containerEl.children('.page-content, .tabs'));\n }\n const transitionEndTarget = effect === 'reveal' ? $viewEl : $el;\n function panelTransitionStart() {\n transitionEndTarget.transitionStart(() => {\n // eslint-disable-next-line\n panel._openTransitionStarted = true;\n });\n }\n function panelTransitionEnd() {\n transitionEndTarget.transitionEnd(e => {\n if ($(e.target).is(transitionEndTarget)) {\n if ($el.hasClass('panel-out')) {\n panel.onClosed();\n } else {\n panel.onOpened();\n }\n } else panelTransitionEnd();\n });\n }\n if (animate) {\n if ($backdropEl) {\n $backdropEl.removeClass('not-animated');\n }\n panelTransitionStart();\n panelTransitionEnd();\n $el.removeClass('panel-out not-animated').addClass('panel-in');\n panel.onOpen();\n } else {\n if ($backdropEl) {\n $backdropEl.addClass('not-animated');\n }\n $el.removeClass('panel-out').addClass('panel-in not-animated');\n panel.onOpen();\n panel.onOpened();\n // eslint-disable-next-line\n panel._openTransitionStarted = true;\n }\n return true;\n }\n close(animate) {\n if (animate === void 0) {\n animate = true;\n }\n const panel = this;\n const {\n effect,\n $el,\n $backdropEl,\n opened,\n $containerEl\n } = panel;\n if (!opened || $el.hasClass('panel-in-breakpoint') || !$el.hasClass('panel-in')) return panel;\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n if ($backdropEl) {\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n }\n const $viewEl = $(panel.getViewEl());\n if ($containerEl && $containerEl.hasClass('page')) {\n $viewEl.add($containerEl.children('.page-content, .tabs'));\n }\n const transitionEndTarget = effect === 'reveal' ? $viewEl : $el;\n // eslint-disable-next-line\n if (!panel._openTransitionStarted) {\n // eslint-disable-next-line\n animate = false;\n }\n function transitionEnd() {\n if ($el.hasClass('panel-out')) {\n panel.onClosed();\n } else if ($el.hasClass('panel-in')) {\n panel.onOpened();\n }\n panel.setStateClasses('after-closing');\n }\n if (animate) {\n transitionEndTarget.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('panel-in').addClass('panel-out');\n // Emit close\n panel.onClose();\n } else {\n $el.addClass('not-animated').removeClass('panel-in').addClass('panel-out');\n // Emit close\n panel.onClose();\n panel.onClosed();\n }\n return panel;\n }\n init() {\n const panel = this;\n // const app = panel.app;\n if (typeof panel.params.visibleBreakpoint !== 'undefined') {\n panel.setVisibleBreakpoint();\n }\n if (typeof panel.params.collapsedBreakpoint !== 'undefined') {\n panel.setCollapsedBreakpoint();\n }\n if (panel.params.swipe) {\n panel.enableSwipe();\n }\n if (panel.resizable) {\n panel.enableResizable();\n }\n }\n destroy() {\n let panel = this;\n const app = panel.app;\n const {\n $containerEl\n } = panel;\n if (!panel.$el) {\n // Panel already destroyed\n return;\n }\n panel.emit('local::beforeDestroy panelBeforeDestroy', panel);\n panel.$el.trigger('panel:beforedestroy');\n if (panel.visibleBreakpointResizeHandler) {\n app.off('resize', panel.visibleBreakpointResizeHandler);\n }\n if (panel.collapsedBreakpointResizeHandler) {\n app.off('resize', panel.collapsedBreakpointResizeHandler);\n }\n if (panel.$el.hasClass('panel-in-breakpoint') || panel.$el.hasClass('panel-in-collapsed')) {\n const $viewEl = $(panel.getViewEl());\n if ($containerEl && $containerEl.hasClass('page')) {\n $viewEl.add($containerEl.children('.page-content, .tabs'));\n }\n panel.$el.removeClass('panel-in-breakpoint panel-in-collapsed panel-in');\n $viewEl.css({\n [`margin-${panel.side}`]: ''\n });\n panel.emit('local::breakpoint panelBreakpoint', panel);\n panel.$el.trigger('panel:breakpoint');\n }\n panel.$el.trigger('panel:destroy');\n panel.emit('local::destroy panelDestroy', panel);\n if (panel.el) {\n panel.el.f7Panel = null;\n delete panel.el.f7Panel;\n }\n deleteProps(panel);\n panel = null;\n }\n}\nexport default Panel;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Panel from './panel-class.js';\nexport default {\n name: 'panel',\n params: {\n panel: {\n opened: undefined,\n // default based on panel-in class\n side: undefined,\n // default based on panel class\n effect: undefined,\n // default based on panel class\n resizable: undefined,\n // default based on panel-resizable class\n backdrop: true,\n backdropEl: undefined,\n visibleBreakpoint: undefined,\n collapsedBreakpoint: undefined,\n swipe: false,\n // or true\n swipeNoFollow: false,\n // or true\n swipeOnlyClose: false,\n swipeActiveArea: 0,\n swipeThreshold: 0,\n closeByBackdropClick: true,\n containerEl: undefined\n }\n },\n static: {\n Panel\n },\n create() {\n const app = this;\n extend(app, {\n panel: {\n allowOpen: true,\n create(params) {\n return new Panel(app, params);\n },\n get(el) {\n if (el === void 0) {\n el = '.panel';\n }\n if (el instanceof Panel) return el;\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n const $el = $(el);\n if ($el.length === 0 || $el.length > 1) return undefined;\n return $el[0].f7Panel;\n },\n destroy(el) {\n if (el === void 0) {\n el = '.panel';\n }\n const panel = app.panel.get(el);\n if (panel && panel.destroy) return panel.destroy();\n return undefined;\n },\n open(el, animate) {\n if (el === void 0) {\n el = '.panel';\n }\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n let panel = app.panel.get(el);\n if (panel && panel.open) return panel.open(animate);\n if (!panel) {\n panel = app.panel.create({\n el\n });\n return panel.open(animate);\n }\n return undefined;\n },\n close(el, animate) {\n if (el === void 0) {\n el = '.panel-in';\n }\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n let panel = app.panel.get(el);\n if (panel && panel.open) return panel.close(animate);\n if (!panel) {\n panel = app.panel.create({\n el\n });\n return panel.close(animate);\n }\n return undefined;\n },\n toggle(el, animate) {\n if (el === void 0) {\n el = '.panel';\n }\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n let panel = app.panel.get(el);\n if (panel && panel.toggle) return panel.toggle(animate);\n if (!panel) {\n panel = app.panel.create({\n el\n });\n return panel.toggle(animate);\n }\n return undefined;\n }\n }\n });\n },\n on: {\n init() {\n const app = this;\n $('.panel-init').each(panelEl => {\n const params = Object.assign({\n el: panelEl\n }, $(panelEl).dataset() || {});\n app.panel.create(params);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.panel-init').each(panelEl => {\n const params = Object.assign({\n el: panelEl\n }, $(panelEl).dataset() || {});\n app.panel.create(params);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.panel-init').each(panelEl => {\n const panel = app.panel.get(panelEl);\n if (panel && panel.destroy) panel.destroy();\n });\n }\n },\n vnode: {\n 'panel-init': {\n insert(vnode) {\n const app = this;\n const panelEl = vnode.elm;\n const params = Object.assign({\n el: panelEl\n }, $(panelEl).dataset() || {});\n app.panel.create(params);\n },\n destroy(vnode) {\n const app = this;\n const panelEl = vnode.elm;\n const panel = app.panel.get(panelEl);\n if (panel && panel.destroy) panel.destroy();\n }\n }\n },\n clicks: {\n '.panel-open': function open(clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.panel.open(data.panel, data.animate);\n },\n '.panel-close': function close(clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.panel.close(data.panel, data.animate);\n },\n '.panel-toggle': function close(clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.panel.toggle(data.panel, data.animate);\n },\n '.panel-backdrop': function close() {\n const app = this;\n const $panelEl = $('.panel-in:not(.panel-out)');\n if (!$panelEl.length) return;\n const instance = $panelEl[0] && $panelEl[0].f7Panel;\n $panelEl.trigger('panel:backdrop-click');\n if (instance) {\n instance.emit('backdropClick', instance);\n }\n app.emit('panelBackdropClick', instance || $panelEl[0]);\n if (instance && instance.params.closeByBackdropClick === false) return;\n if (app.params.panel.closeByBackdropClick) app.panel.close();\n }\n }\n};","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport $ from '../../shared/dom7.js';\nconst CardExpandable = {\n open(cardEl, animate) {\n if (cardEl === void 0) {\n cardEl = '.card-expandable';\n }\n if (animate === void 0) {\n animate = true;\n }\n const app = this;\n const device = getDevice();\n const document = getDocument();\n const support = getSupport();\n const $cardEl = $(cardEl).eq(0);\n if (!$cardEl || !$cardEl.length) return;\n if ($cardEl.hasClass('card-opened') || $cardEl.hasClass('card-opening') || $cardEl.hasClass('card-closing')) return;\n const $pageEl = $cardEl.parents('.page').eq(0);\n if (!$pageEl.length) return;\n if ($pageEl.find('.card-opened').length) {\n return;\n }\n let prevented;\n function prevent() {\n prevented = true;\n }\n $cardEl.trigger('card:beforeopen', {\n prevent\n });\n app.emit('cardBeforeOpen', $cardEl[0], prevent);\n if (prevented) return;\n const cardParams = Object.assign({\n animate\n }, app.params.card, $cardEl.dataset());\n const $pageContentEl = $cardEl.parents('.page-content');\n let $backdropEl;\n if ($cardEl.attr('data-backdrop-el')) {\n $backdropEl = $($cardEl.attr('data-backdrop-el'));\n }\n if (!$backdropEl && cardParams.backdrop) {\n $backdropEl = $pageContentEl.find('.card-backdrop');\n if (!$backdropEl.length) {\n $backdropEl = $('
          ');\n $pageContentEl.append($backdropEl);\n }\n }\n let $navbarEl;\n let $toolbarEl;\n if (cardParams.hideNavbarOnOpen) {\n $navbarEl = $pageEl.children('.navbar');\n if (!$navbarEl.length) {\n if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;\n }\n }\n if (cardParams.hideToolbarOnOpen) {\n $toolbarEl = $pageEl.children('.toolbar');\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n }\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.views').children('.toolbar');\n }\n }\n const currTransform = $cardEl.css('transform');\n let hasTransform;\n if (currTransform && currTransform.match(/[2-9]/)) {\n hasTransform = true;\n }\n const $cardContentEl = $cardEl.children('.card-content');\n const $cardSizeEl = $(document.createElement('div')).addClass('card-expandable-size');\n $cardEl.append($cardSizeEl);\n let cardWidth = $cardEl[0].offsetWidth;\n let cardHeight = $cardEl[0].offsetHeight;\n let pageWidth = $pageEl[0].offsetWidth;\n let pageHeight = $pageEl[0].offsetHeight;\n let maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;\n let maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;\n let statusbarHeight;\n if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {\n statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);\n if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;\n }\n if (statusbarHeight) {\n maxHeight -= statusbarHeight;\n }\n let scaleX = maxWidth / cardWidth;\n let scaleY = maxHeight / cardHeight;\n let offset = $cardEl.offset();\n let pageOffset = $pageEl.offset();\n if (statusbarHeight) {\n pageOffset.top += statusbarHeight / 2;\n }\n offset.left -= pageOffset.left;\n let cardLeftOffset;\n let cardTopOffset;\n if (hasTransform) {\n const transformValues = currTransform.replace(/matrix\\(|\\)/g, '').split(',').map(el => el.trim());\n if (transformValues && transformValues.length > 1) {\n const scale = parseFloat(transformValues[0]);\n cardLeftOffset = offset.left - cardWidth * (1 - scale) / 2;\n cardTopOffset = offset.top - pageOffset.top - cardHeight * (1 - scale) / 2;\n if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n } else {\n cardLeftOffset = $cardEl[0].offsetLeft;\n cardTopOffset = $cardEl[0].offsetTop - ($pageContentEl.length ? $pageContentEl[0].scrollTop : 0);\n }\n } else {\n cardLeftOffset = offset.left;\n cardTopOffset = offset.top - pageOffset.top;\n if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n }\n cardLeftOffset -= (pageWidth - maxWidth) / 2;\n cardTopOffset -= (pageHeight - maxHeight) / 2;\n let cardRightOffset = maxWidth - cardWidth - cardLeftOffset;\n if (app.rtl) {\n [cardLeftOffset, cardRightOffset] = [cardRightOffset, cardLeftOffset];\n }\n let cardBottomOffset = maxHeight - cardHeight - cardTopOffset;\n let translateX = (cardRightOffset - cardLeftOffset) / 2;\n let translateY = (cardBottomOffset - cardTopOffset) / 2;\n if (cardParams.hideNavbarOnOpen && $navbarEl && $navbarEl.length) {\n if ($navbarEl.closest('.navbar-hidden').length) {\n // Was hidden\n $cardEl[0].f7KeepNavbarOnClose = true;\n } else {\n delete $cardEl[0].f7KeepNavbarOnClose;\n app.navbar.hide($navbarEl, cardParams.animate, cardParams.hideStatusbarOnOpen, true);\n }\n }\n if (cardParams.hideToolbarOnOpen && $toolbarEl && $toolbarEl.length) {\n if ($toolbarEl.closest('.toolbar-hidden').length) {\n // Was hidden\n $cardEl[0].f7KeepToolbarOnClose = true;\n } else {\n delete $cardEl[0].f7KeepToolbarOnClose;\n app.toolbar.hide($toolbarEl, cardParams.animate);\n }\n }\n if ($backdropEl) {\n $backdropEl.removeClass('card-backdrop-out').addClass('card-backdrop-in');\n }\n $cardEl.removeClass('card-transitioning');\n if (cardParams.animate) {\n $cardEl.addClass('card-opening');\n }\n $cardEl.trigger('card:open');\n app.emit('cardOpen', $cardEl[0]);\n function transitionEnd() {\n $pageEl.addClass('page-with-card-opened');\n if (device.ios && $pageContentEl.length) {\n $pageContentEl.css('height', `${$pageContentEl[0].offsetHeight + 1}px`);\n setTimeout(() => {\n $pageContentEl.css('height', '');\n });\n }\n $cardEl.addClass('card-opened');\n $cardEl.removeClass('card-opening');\n $cardEl.trigger('card:opened');\n app.emit('cardOpened', $cardEl[0], $pageEl[0]);\n }\n $cardContentEl.css({\n width: `${maxWidth}px`,\n height: `${maxHeight}px`\n }).transform(`translate3d(${app.rtl ? cardLeftOffset + translateX : -cardLeftOffset - translateX}px, 0px, 0) scale(${1 / scaleX}, ${1 / scaleY})`);\n $cardEl.transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);\n if (cardParams.animate) {\n $cardEl.transitionEnd(() => {\n transitionEnd();\n });\n } else {\n transitionEnd();\n }\n function onResize() {\n $cardEl.removeClass('card-transitioning');\n cardWidth = $cardEl[0].offsetWidth;\n cardHeight = $cardEl[0].offsetHeight;\n pageWidth = $pageEl[0].offsetWidth;\n pageHeight = $pageEl[0].offsetHeight;\n maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;\n maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;\n statusbarHeight = 0;\n if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {\n statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);\n if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;\n }\n if (statusbarHeight) {\n maxHeight -= statusbarHeight;\n }\n scaleX = maxWidth / cardWidth;\n scaleY = maxHeight / cardHeight;\n $cardEl.transform('translate3d(0px, 0px, 0) scale(1)');\n offset = $cardEl.offset();\n pageOffset = $pageEl.offset();\n if (statusbarHeight) {\n pageOffset.top += statusbarHeight / 2;\n }\n offset.left -= pageOffset.left;\n offset.top -= pageOffset.top;\n cardLeftOffset = offset.left - (pageWidth - maxWidth) / 2;\n if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n cardTopOffset = offset.top - (pageHeight - maxHeight) / 2;\n cardRightOffset = maxWidth - cardWidth - cardLeftOffset;\n cardBottomOffset = maxHeight - cardHeight - cardTopOffset;\n if (app.rtl) {\n [cardLeftOffset, cardRightOffset] = [cardRightOffset, cardLeftOffset];\n }\n translateX = (cardRightOffset - cardLeftOffset) / 2;\n translateY = (cardBottomOffset - cardTopOffset) / 2;\n $cardEl.transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);\n $cardContentEl.css({\n width: `${maxWidth}px`,\n height: `${maxHeight}px`\n }).transform(`translate3d(${app.rtl ? cardLeftOffset + translateX : -cardLeftOffset - translateX}px, 0px, 0) scale(${1 / scaleX}, ${1 / scaleY})`);\n }\n let cardScrollTop;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchEndX;\n let touchEndY;\n let isScrolling;\n let progress;\n let isV;\n let isH;\n let $cardScrollableEl;\n function onTouchStart(e) {\n if (!$(e.target).closest($cardEl).length || !e.isTrusted) return;\n if (!$cardEl.hasClass('card-opened')) return;\n $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);\n if ($cardScrollableEl[0] && $cardScrollableEl[0] !== $cardContentEl[0] && !$cardScrollableEl[0].contains(e.target)) {\n cardScrollTop = 0;\n } else {\n cardScrollTop = $cardScrollableEl.scrollTop();\n }\n isTouched = true;\n touchStartX = e.targetTouches[0].pageX;\n touchStartY = e.targetTouches[0].pageY;\n isScrolling = undefined;\n isV = false;\n isH = false;\n }\n function onTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n touchEndX = e.targetTouches[0].pageX;\n touchEndY = e.targetTouches[0].pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(touchEndY - touchStartY) > Math.abs(touchEndX - touchStartX));\n }\n if (!isH && !isV) {\n if (!isScrolling && e.targetTouches[0].clientX <= 50) {\n isH = true;\n } else {\n isV = true;\n }\n }\n if (!(isH || isV) || isV && cardScrollTop !== 0) {\n isTouched = true;\n isMoved = true;\n return;\n }\n if (!isMoved) {\n $cardEl.removeClass('card-transitioning');\n }\n isMoved = true;\n progress = isV ? Math.max((touchEndY - touchStartY) / 150, 0) : Math.max((touchEndX - touchStartX) / (cardWidth / 2), 0);\n if (progress > 0 && isV || isH) {\n if (isV && device.ios && $cardScrollableEl[0] === $cardContentEl[0]) {\n $cardScrollableEl.css('-webkit-overflow-scrolling', 'auto');\n $cardScrollableEl.scrollTop(0);\n }\n e.preventDefault();\n }\n if (progress > 1) progress **= 0.3;\n if (progress > (isV ? 1.3 : 1.1)) {\n isTouched = false;\n isMoved = false;\n app.card.close($cardEl);\n } else {\n $cardEl.transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX * (1 - progress * 0.2)}, ${scaleY * (1 - progress * 0.2)})`);\n }\n }\n function onTouchEnd(e) {\n if (!isTouched || !isMoved || !e.isTrusted) return;\n isTouched = false;\n isMoved = false;\n if (device.ios) {\n $cardScrollableEl.css('-webkit-overflow-scrolling', '');\n }\n if (progress >= 0.8) {\n app.card.close($cardEl);\n } else {\n $cardEl.addClass('card-transitioning').transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);\n }\n }\n $cardEl[0].detachEventHandlers = function detachEventHandlers() {\n app.off('resize', onResize);\n if (support.touch && cardParams.swipeToClose) {\n app.off('touchstart:passive', onTouchStart);\n app.off('touchmove:active', onTouchMove);\n app.off('touchend:passive', onTouchEnd);\n }\n };\n app.on('resize', onResize);\n if (support.touch && cardParams.swipeToClose) {\n app.on('touchstart:passive', onTouchStart);\n app.on('touchmove:active', onTouchMove);\n app.on('touchend:passive', onTouchEnd);\n }\n },\n close(cardEl, animate) {\n if (cardEl === void 0) {\n cardEl = '.card-expandable.card-opened';\n }\n if (animate === void 0) {\n animate = true;\n }\n const app = this;\n const device = getDevice();\n const $cardEl = $(cardEl).eq(0);\n if (!$cardEl || !$cardEl.length) return;\n if (!$cardEl.hasClass('card-opened') || $cardEl.hasClass('card-opening') || $cardEl.hasClass('card-closing')) return;\n const $cardContentEl = $cardEl.children('.card-content');\n const $pageContentEl = $cardEl.parents('.page-content');\n const $pageEl = $cardEl.parents('.page').eq(0);\n if (!$pageEl.length) return;\n const cardParams = Object.assign({\n animate\n }, app.params.card, $cardEl.dataset());\n const $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);\n let $navbarEl;\n let $toolbarEl;\n let $backdropEl;\n if ($cardEl.attr('data-backdrop-el')) {\n $backdropEl = $($cardEl.attr('data-backdrop-el'));\n }\n if (cardParams.backdrop) {\n $backdropEl = $cardEl.parents('.page-content').find('.card-backdrop');\n }\n if (cardParams.hideNavbarOnOpen) {\n $navbarEl = $pageEl.children('.navbar');\n if (!$navbarEl.length) {\n if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;\n }\n if ($navbarEl && $navbarEl.length && !$cardEl[0].f7KeepNavbarOnClose) {\n app.navbar.show($navbarEl, cardParams.animate, true);\n }\n }\n if (cardParams.hideToolbarOnOpen) {\n $toolbarEl = $pageEl.children('.toolbar');\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n }\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.views').children('.toolbar');\n }\n if ($toolbarEl && $toolbarEl.length && !$cardEl[0].f7KeepToolbarOnClose) {\n app.toolbar.show($toolbarEl, cardParams.animate);\n }\n }\n $pageEl.removeClass('page-with-card-opened');\n if (device.ios && $pageContentEl.length) {\n $pageContentEl.css('height', `${$pageContentEl[0].offsetHeight + 1}px`);\n setTimeout(() => {\n $pageContentEl.css('height', '');\n });\n }\n if ($backdropEl && $backdropEl.length) {\n $backdropEl.removeClass('card-backdrop-in').addClass('card-backdrop-out');\n }\n $cardEl.removeClass('card-opened card-transitioning');\n if (cardParams.animate) {\n $cardEl.addClass('card-closing');\n } else {\n $cardEl.addClass('card-no-transition');\n }\n $cardEl.transform('');\n $cardEl.trigger('card:close');\n app.emit('cardClose', $cardEl[0], $pageEl[0]);\n const animateWidth = $cardEl.hasClass('card-expandable-animate-width');\n function transitionEnd() {\n if (!animateWidth) {\n $cardContentEl.css({\n width: '',\n height: ''\n });\n }\n if ($backdropEl && $backdropEl.length) {\n $backdropEl.removeClass('card-backdrop-in card-backdrop-out');\n }\n $cardEl.removeClass('card-closing card-no-transition');\n $cardEl.trigger('card:closed');\n $cardEl.find('.card-expandable-size').remove();\n app.emit('cardClosed', $cardEl[0], $pageEl[0]);\n }\n if (animateWidth) {\n $cardContentEl.css({\n width: '',\n height: ''\n });\n }\n $cardContentEl.transform('').scrollTop(0, animate ? 300 : 0);\n if ($cardScrollableEl.length && $cardScrollableEl[0] !== $cardContentEl[0]) {\n $cardScrollableEl.scrollTop(0, animate ? 300 : 0);\n }\n if (animate) {\n $cardContentEl.transitionEnd(() => {\n transitionEnd();\n });\n } else {\n transitionEnd();\n }\n if ($cardEl[0].detachEventHandlers) {\n $cardEl[0].detachEventHandlers();\n delete $cardEl[0].detachEventHandlers;\n }\n },\n toggle(cardEl, animate) {\n if (cardEl === void 0) {\n cardEl = '.card-expandable';\n }\n const app = this;\n const $cardEl = $(cardEl).eq(0);\n if (!$cardEl.length) return;\n if ($cardEl.hasClass('card-opened')) {\n app.card.close($cardEl, animate);\n } else {\n app.card.open($cardEl, animate);\n }\n }\n};\nexport default {\n name: 'card',\n params: {\n card: {\n hideNavbarOnOpen: true,\n hideStatusbarOnOpen: true,\n hideToolbarOnOpen: true,\n scrollableEl: '.card-content',\n swipeToClose: true,\n closeByBackdropClick: true,\n backdrop: true\n }\n },\n create() {\n const app = this;\n bindMethods(app, {\n card: CardExpandable\n });\n },\n on: {\n pageBeforeIn(page) {\n const app = this;\n if (app.params.card.hideNavbarOnOpen && page.navbarEl && page.$el.find('.card-opened.card-expandable').length) {\n app.navbar.hide(page.navbarEl, true, app.params.card.hideStatusbarOnOpen, true);\n }\n if (app.params.card.hideToolbarOnOpen && page.$el.find('.card-opened.card-expandable').length) {\n let $toolbarEl = page.$el.children('.toolbar');\n if (!$toolbarEl.length) {\n $toolbarEl = page.$el.parents('.view').children('.toolbar');\n }\n if (!$toolbarEl.length) {\n $toolbarEl = page.$el.parents('.views').children('.toolbar');\n }\n if ($toolbarEl && $toolbarEl.length) {\n app.toolbar.hide($toolbarEl);\n }\n }\n }\n },\n clicks: {\n '.card-close': function closeCard($clickedEl, data) {\n const app = this;\n app.card.close(data.card, data.animate);\n },\n '.card-open': function closeCard($clickedEl, data) {\n const app = this;\n app.card.open(data.card, data.animate);\n },\n '.card-expandable': function toggleExpandableCard($clickedEl, data, e) {\n const app = this;\n if ($clickedEl.hasClass('card-opened') || $clickedEl.hasClass('card-opening') || $clickedEl.hasClass('card-closing')) return;\n if ($(e.target).closest('.card-prevent-open, .card-close').length) return;\n app.card.open($clickedEl);\n },\n '.card-backdrop-in': function onBackdropClick() {\n const app = this;\n let needToClose = false;\n if (app.params.card.closeByBackdropClick) needToClose = true;\n const $openedCardEl = $('.card-opened');\n if (!$openedCardEl.length) return;\n if ($openedCardEl.attr('data-close-by-backdrop-click') === 'true') {\n needToClose = true;\n } else if ($openedCardEl.attr('data-close-by-backdrop-click') === 'false') {\n needToClose = false;\n }\n if (needToClose) app.card.close($openedCardEl);\n }\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, serializeObject } from '../../shared/utils.js';\n\n// Form Data\nconst FormData = {\n store(form, data) {\n const app = this;\n const window = getWindow();\n let formId = form;\n const $formEl = $(form);\n if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n formId = $formEl.attr('id');\n }\n // Store form data in app.formsData\n app.form.data[`form-${formId}`] = data;\n\n // Store form data in local storage also\n window.localStorage[`f7form-${formId}`] = JSON.stringify(data);\n },\n get(form) {\n const app = this;\n const window = getWindow();\n let formId = form;\n const $formEl = $(form);\n if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n formId = $formEl.attr('id');\n }\n if (window.localStorage[`f7form-${formId}`]) {\n return JSON.parse(window.localStorage[`f7form-${formId}`]);\n }\n if (app.form.data[`form-${formId}`]) {\n return app.form.data[`form-${formId}`];\n }\n return undefined;\n },\n remove(form) {\n const app = this;\n const window = getWindow();\n let formId = form;\n const $formEl = $(form);\n if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n formId = $formEl.attr('id');\n }\n\n // Delete form data from app.formsData\n if (app.form.data[`form-${formId}`]) {\n app.form.data[`form-${formId}`] = '';\n delete app.form.data[`form-${formId}`];\n }\n\n // Delete form data from local storage also\n if (window.localStorage[`f7form-${formId}`]) {\n window.localStorage[`f7form-${formId}`] = '';\n window.localStorage.removeItem(`f7form-${formId}`);\n }\n }\n};\n\n// Form Storage\nconst FormStorage = {\n init(formEl) {\n const app = this;\n const $formEl = $(formEl);\n const formId = $formEl.attr('id');\n if (!formId) return;\n const initialData = app.form.getFormData(formId);\n if (initialData) {\n app.form.fillFromData($formEl, initialData);\n }\n function store() {\n const data = app.form.convertToData($formEl);\n if (!data) return;\n app.form.storeFormData(formId, data);\n $formEl.trigger('form:storedata', data);\n app.emit('formStoreData', $formEl[0], data);\n }\n $formEl.on('change submit', store);\n },\n destroy(formEl) {\n const $formEl = $(formEl);\n $formEl.off('change submit');\n }\n};\n\n// Form To/From Data\nfunction formToData(formEl) {\n const app = this;\n const $formEl = $(formEl).eq(0);\n if ($formEl.length === 0) return undefined;\n\n // Form data\n const data = {};\n\n // Skip input types\n const skipTypes = ['submit', 'image', 'button', 'file'];\n const skipNames = [];\n $formEl.find('input, select, textarea').each(inputEl => {\n const $inputEl = $(inputEl);\n if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {\n return;\n }\n const name = $inputEl.attr('name');\n const type = $inputEl.attr('type');\n const tag = inputEl.nodeName.toLowerCase();\n if (skipTypes.indexOf(type) >= 0) return;\n if (skipNames.indexOf(name) >= 0 || !name) return;\n if (tag === 'select' && $inputEl.prop('multiple')) {\n skipNames.push(name);\n data[name] = [];\n $formEl.find(`select[name=\"${name}\"] option`).each(el => {\n if (el.selected) data[name].push(el.value);\n });\n } else {\n switch (type) {\n case 'checkbox':\n skipNames.push(name);\n data[name] = [];\n $formEl.find(`input[name=\"${name}\"]`).each(el => {\n if (el.checked) data[name].push(el.value);\n });\n break;\n case 'radio':\n skipNames.push(name);\n $formEl.find(`input[name=\"${name}\"]`).each(el => {\n if (el.checked) data[name] = el.value;\n });\n break;\n default:\n data[name] = $inputEl.val();\n break;\n }\n }\n });\n $formEl.trigger('form:todata', data);\n app.emit('formToData', $formEl[0], data);\n return data;\n}\nfunction formFromData(formEl, formData) {\n const app = this;\n const $formEl = $(formEl).eq(0);\n if (!$formEl.length) return;\n let data = formData;\n const formId = $formEl.attr('id');\n if (!data && formId) {\n data = app.form.getFormData(formId);\n }\n if (!data) return;\n\n // Skip input types\n const skipTypes = ['submit', 'image', 'button', 'file'];\n const skipNames = [];\n $formEl.find('input, select, textarea').each(inputEl => {\n const $inputEl = $(inputEl);\n if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {\n return;\n }\n const name = $inputEl.attr('name');\n const type = $inputEl.attr('type');\n const tag = inputEl.nodeName.toLowerCase();\n if (typeof data[name] === 'undefined' || data[name] === null) return;\n if (skipTypes.indexOf(type) >= 0) return;\n if (skipNames.indexOf(name) >= 0 || !name) return;\n if (tag === 'select' && $inputEl.prop('multiple')) {\n skipNames.push(name);\n $formEl.find(`select[name=\"${name}\"] option`).each(el => {\n const selectEl = el;\n if (data[name].indexOf(el.value) >= 0) selectEl.selected = true;else selectEl.selected = false;\n });\n } else {\n switch (type) {\n case 'checkbox':\n skipNames.push(name);\n $formEl.find(`input[name=\"${name}\"]`).each(el => {\n const checkboxEl = el;\n if (data[name].indexOf(el.value) >= 0) checkboxEl.checked = true;else checkboxEl.checked = false;\n });\n break;\n case 'radio':\n skipNames.push(name);\n $formEl.find(`input[name=\"${name}\"]`).each(el => {\n const radioEl = el;\n if (data[name] === el.value) radioEl.checked = true;else radioEl.checked = false;\n });\n break;\n default:\n $inputEl.val(data[name]);\n break;\n }\n }\n if (tag === 'select' || tag === 'input' || tag === 'textarea') {\n $inputEl.trigger('change', 'fromdata');\n }\n });\n $formEl.trigger('form:fromdata', data);\n app.emit('formFromData', $formEl[0], data);\n}\nfunction initAjaxForm() {\n const app = this;\n const window = getWindow();\n const document = getDocument();\n function onSubmitChange(e, fromData) {\n const $formEl = $(this);\n if (e.type === 'change' && !$formEl.hasClass('form-ajax-submit-onchange')) return;\n if (e.type === 'submit') e.preventDefault();\n if (e.type === 'change' && fromData === 'fromdata') return;\n const method = ($formEl.attr('method') || 'GET').toUpperCase();\n const contentType = $formEl.attr('enctype') || $formEl.prop('enctype');\n let url = $formEl.attr('action');\n if (!url) return;\n let data;\n if (method === 'POST') {\n if (contentType === 'application/x-www-form-urlencoded' || contentType === 'application/json') {\n data = app.form.convertToData($formEl[0]);\n if (contentType === 'application/json') {\n data = JSON.stringify(data);\n }\n } else {\n data = new window.FormData($formEl[0]);\n }\n } else {\n data = serializeObject(app.form.convertToData($formEl[0]));\n if (url.includes('?')) {\n url += `&${data}`;\n } else {\n url += `?${data}`;\n }\n }\n $formEl.trigger('formajax:beforesend', {\n data\n });\n app.emit('formAjaxBeforeSend', $formEl[0], data);\n fetch(url, {\n method,\n headers: {\n 'Content-Type': contentType || 'application/x-www-form-urlencoded'\n },\n ...(method === 'POST' || method === 'PUT' ? {\n body: data\n } : {})\n }).then(response => {\n $formEl.trigger('formajax:complete', {\n data,\n response\n });\n app.emit('formAjaxComplete', $formEl[0], data, response);\n $formEl.trigger('formajax:success', {\n data,\n response\n });\n app.emit('formAjaxSuccess', $formEl[0], data, response);\n }).catch(error => {\n $formEl.trigger('formajax:error', {\n data,\n error\n });\n app.emit('formAjaxError', $formEl[0], data, error);\n });\n }\n $(document).on('submit change', 'form.form-ajax-submit, form.form-ajax-submit-onchange', onSubmitChange);\n}\nexport default {\n name: 'form',\n create() {\n const app = this;\n extend(app, {\n form: {\n data: {},\n storeFormData: FormData.store.bind(app),\n getFormData: FormData.get.bind(app),\n removeFormData: FormData.remove.bind(app),\n convertToData: formToData.bind(app),\n fillFromData: formFromData.bind(app),\n storage: {\n init: FormStorage.init.bind(app),\n destroy: FormStorage.destroy.bind(app)\n }\n }\n });\n },\n on: {\n init() {\n const app = this;\n initAjaxForm.call(app);\n },\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.form-store-data').each(formEl => {\n app.form.storage.destroy(formEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.form-store-data').each(formEl => {\n app.form.storage.init(formEl);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.form-store-data').each(formEl => {\n app.form.storage.destroy(formEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.form-store-data').each(formEl => {\n app.form.storage.init(formEl);\n });\n }\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nconst Input = {\n ignoreTypes: ['checkbox', 'button', 'submit', 'range', 'radio', 'image'],\n createTextareaResizableShadow() {\n const document = getDocument();\n const $shadowEl = $(document.createElement('textarea'));\n $shadowEl.addClass('textarea-resizable-shadow');\n $shadowEl.prop({\n disabled: true,\n readonly: true\n });\n Input.textareaResizableShadow = $shadowEl;\n },\n textareaResizableShadow: undefined,\n resizeTextarea(textareaEl) {\n const app = this;\n const window = getWindow();\n const $textareaEl = $(textareaEl);\n if (!Input.textareaResizableShadow) {\n Input.createTextareaResizableShadow();\n }\n const $shadowEl = Input.textareaResizableShadow;\n if (!$textareaEl.length) return;\n if (!$textareaEl.hasClass('resizable')) return;\n if (Input.textareaResizableShadow.parents().length === 0) {\n app.$el.append($shadowEl);\n }\n const styles = window.getComputedStyle($textareaEl[0]);\n 'padding-top padding-bottom padding-left padding-right margin-left margin-right margin-top margin-bottom width font-size font-family font-style font-weight line-height font-variant text-transform letter-spacing border box-sizing display'.split(' ').forEach(style => {\n let styleValue = styles[style];\n if ('font-size line-height letter-spacing width'.split(' ').indexOf(style) >= 0) {\n styleValue = styleValue.replace(',', '.');\n }\n $shadowEl.css(style, styleValue);\n });\n const currentHeight = $textareaEl[0].clientHeight;\n $shadowEl.val('');\n const initialHeight = $shadowEl[0].scrollHeight;\n $shadowEl.val($textareaEl.val());\n $shadowEl.css('height', 0);\n const scrollHeight = $shadowEl[0].scrollHeight;\n if (currentHeight !== scrollHeight) {\n if (scrollHeight > initialHeight) {\n $textareaEl.css('height', `${scrollHeight}px`);\n } else if (scrollHeight < currentHeight) {\n $textareaEl.css('height', '');\n }\n if (scrollHeight > initialHeight || scrollHeight < currentHeight) {\n $textareaEl.trigger('textarea:resize', {\n initialHeight,\n currentHeight,\n scrollHeight\n });\n app.emit('textareaResize', {\n initialHeight,\n currentHeight,\n scrollHeight\n });\n }\n }\n },\n validate(inputEl) {\n const $inputEl = $(inputEl);\n if (!$inputEl.length) return true;\n const $itemInputEl = $inputEl.parents('.item-input');\n const $inputWrapEl = $inputEl.parents('.input');\n function unsetReadonly() {\n if ($inputEl[0].f7ValidateReadonly) {\n $inputEl[0].readOnly = false;\n }\n }\n function setReadonly() {\n if ($inputEl[0].f7ValidateReadonly) {\n $inputEl[0].readOnly = true;\n }\n }\n unsetReadonly();\n const validity = $inputEl[0].validity;\n const validationMessage = $inputEl.dataset().errorMessage || $inputEl[0].validationMessage || '';\n if (!validity) {\n setReadonly();\n return true;\n }\n if (!validity.valid) {\n let $errorEl = $inputEl.nextAll('.item-input-error-message, .input-error-message');\n if (validationMessage) {\n if ($errorEl.length === 0) {\n $errorEl = $(`
          `);\n $errorEl.insertAfter($inputEl);\n }\n $errorEl.text(validationMessage);\n }\n if ($errorEl.length > 0) {\n $itemInputEl.addClass('item-input-with-error-message');\n $inputWrapEl.addClass('input-with-error-message');\n }\n $itemInputEl.addClass('item-input-invalid');\n $inputWrapEl.addClass('input-invalid');\n $inputEl.addClass('input-invalid');\n setReadonly();\n return false;\n }\n $itemInputEl.removeClass('item-input-invalid item-input-with-error-message');\n $inputWrapEl.removeClass('input-invalid input-with-error-message');\n $inputEl.removeClass('input-invalid');\n setReadonly();\n return true;\n },\n validateInputs(el) {\n const app = this;\n const validates = $(el).find('input, textarea, select').map(inputEl => app.input.validate(inputEl));\n return validates.indexOf(false) < 0;\n },\n focus(inputEl) {\n const $inputEl = $(inputEl);\n const type = $inputEl.attr('type');\n if (Input.ignoreTypes.indexOf(type) >= 0) return;\n $inputEl.parents('.item-input').addClass('item-input-focused');\n $inputEl.parents('.input').addClass('input-focused');\n $inputEl.addClass('input-focused');\n },\n blur(inputEl) {\n const $inputEl = $(inputEl);\n $inputEl.parents('.item-input').removeClass('item-input-focused');\n $inputEl.parents('.input').removeClass('input-focused');\n $inputEl.removeClass('input-focused');\n },\n checkEmptyState(inputEl) {\n const app = this;\n let $inputEl = $(inputEl);\n if (!$inputEl.is('input, select, textarea, .item-input [contenteditable]')) {\n $inputEl = $inputEl.find('input, select, textarea, .item-input [contenteditable]').eq(0);\n }\n if (!$inputEl.length) return;\n const isContentEditable = $inputEl[0].hasAttribute('contenteditable');\n let value;\n if (isContentEditable) {\n if ($inputEl.find('.text-editor-placeholder').length) value = '';else value = $inputEl.html();\n } else {\n value = $inputEl.val();\n }\n const $itemInputEl = $inputEl.parents('.item-input');\n const $inputWrapEl = $inputEl.parents('.input');\n if (value && typeof value === 'string' && value.trim() !== '' || Array.isArray(value) && value.length > 0) {\n $itemInputEl.addClass('item-input-with-value');\n $inputWrapEl.addClass('input-with-value');\n $inputEl.addClass('input-with-value');\n $inputEl.trigger('input:notempty');\n app.emit('inputNotEmpty', $inputEl[0]);\n } else {\n $itemInputEl.removeClass('item-input-with-value');\n $inputWrapEl.removeClass('input-with-value');\n $inputEl.removeClass('input-with-value');\n $inputEl.trigger('input:empty');\n app.emit('inputEmpty', $inputEl[0]);\n }\n },\n scrollIntoView(inputEl, duration, centered, force) {\n if (duration === void 0) {\n duration = 0;\n }\n const $inputEl = $(inputEl);\n const $scrollableEl = $inputEl.parents('.page-content, .panel, .card-expandable .card-content').eq(0);\n if (!$scrollableEl.length) {\n return false;\n }\n const contentHeight = $scrollableEl[0].offsetHeight;\n const contentScrollTop = $scrollableEl[0].scrollTop;\n const contentPaddingTop = parseInt($scrollableEl.css('padding-top'), 10);\n const contentPaddingBottom = parseInt($scrollableEl.css('padding-bottom'), 10);\n const contentOffsetTop = $scrollableEl.offset().top - contentScrollTop;\n const inputOffsetTop = $inputEl.offset().top - contentOffsetTop;\n const inputHeight = $inputEl[0].offsetHeight;\n const min = inputOffsetTop + contentScrollTop - contentPaddingTop;\n const max = inputOffsetTop + contentScrollTop - contentHeight + contentPaddingBottom + inputHeight;\n const centeredPosition = min + (max - min) / 2;\n if (contentScrollTop > min) {\n $scrollableEl.scrollTop(centered ? centeredPosition : min, duration);\n return true;\n }\n if (contentScrollTop < max) {\n $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);\n return true;\n }\n if (force) {\n $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);\n }\n return false;\n },\n init() {\n const app = this;\n const device = getDevice();\n const window = getWindow();\n const document = getDocument();\n Input.createTextareaResizableShadow();\n function onFocus() {\n const inputEl = this;\n if (app.params.input.scrollIntoViewOnFocus) {\n if (device.android) {\n $(window).once('resize', () => {\n if (document && document.activeElement === inputEl) {\n app.input.scrollIntoView(inputEl, app.params.input.scrollIntoViewDuration, app.params.input.scrollIntoViewCentered, app.params.input.scrollIntoViewAlways);\n }\n });\n } else {\n app.input.scrollIntoView(inputEl, app.params.input.scrollIntoViewDuration, app.params.input.scrollIntoViewCentered, app.params.input.scrollIntoViewAlways);\n }\n }\n app.input.focus(inputEl);\n }\n function onBlur() {\n const $inputEl = $(this);\n const tag = $inputEl[0].nodeName.toLowerCase();\n app.input.blur($inputEl);\n if ($inputEl.dataset().validate || $inputEl.attr('validate') !== null || $inputEl.attr('data-validate-on-blur') !== null) {\n app.input.validate($inputEl);\n }\n // Resize textarea\n if (tag === 'textarea' && $inputEl.hasClass('resizable')) {\n if (Input.textareaResizableShadow) Input.textareaResizableShadow.remove();\n }\n }\n function onChange() {\n const $inputEl = $(this);\n const type = $inputEl.attr('type');\n const tag = $inputEl[0].nodeName.toLowerCase();\n const isContentEditable = $inputEl[0].hasAttribute('contenteditable');\n if (Input.ignoreTypes.indexOf(type) >= 0) return;\n\n // Check Empty State\n app.input.checkEmptyState($inputEl);\n if (isContentEditable) return;\n\n // Check validation\n if ($inputEl.attr('data-validate-on-blur') === null && ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)) {\n app.input.validate($inputEl);\n }\n\n // Resize textarea\n if (tag === 'textarea' && $inputEl.hasClass('resizable')) {\n app.input.resizeTextarea($inputEl);\n }\n }\n function onInvalid(e) {\n const $inputEl = $(this);\n if ($inputEl.attr('data-validate-on-blur') === null && ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)) {\n e.preventDefault();\n app.input.validate($inputEl);\n }\n }\n function clearInput() {\n const $clicked = $(this);\n const $inputEl = $clicked.siblings('input, textarea').eq(0);\n const previousValue = $inputEl.val();\n $inputEl.val('').trigger('input change').focus().trigger('input:clear', previousValue);\n app.emit('inputClear', previousValue);\n }\n function preventDefault(e) {\n e.preventDefault();\n }\n $(document).on('click', '.input-clear-button', clearInput);\n $(document).on('mousedown', '.input-clear-button', preventDefault);\n $(document).on('change input', 'input, textarea, select, .item-input [contenteditable]', onChange, true);\n $(document).on('focus', 'input, textarea, select, .item-input [contenteditable]', onFocus, true);\n $(document).on('blur', 'input, textarea, select, .item-input [contenteditable]', onBlur, true);\n $(document).on('invalid', 'input, textarea, select', onInvalid, true);\n }\n};\nexport default {\n name: 'input',\n params: {\n input: {\n scrollIntoViewOnFocus: undefined,\n scrollIntoViewCentered: false,\n scrollIntoViewDuration: 0,\n scrollIntoViewAlways: false\n }\n },\n create() {\n const app = this;\n if (typeof app.params.input.scrollIntoViewOnFocus === 'undefined') {\n app.params.input.scrollIntoViewOnFocus = getDevice().android;\n }\n bindMethods(app, {\n input: Input\n });\n },\n on: {\n init() {\n const app = this;\n app.input.init();\n },\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n $tabEl.find('.item-input, .input').each(itemInputEl => {\n const $itemInputEl = $(itemInputEl);\n $itemInputEl.find('input, select, textarea, [contenteditable]').each(inputEl => {\n const $inputEl = $(inputEl);\n if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;\n app.input.checkEmptyState($inputEl);\n });\n });\n $tabEl.find('textarea.resizable').each(textareaEl => {\n app.input.resizeTextarea(textareaEl);\n });\n },\n pageInit(page) {\n const app = this;\n const $pageEl = page.$el;\n $pageEl.find('.item-input, .input').each(itemInputEl => {\n const $itemInputEl = $(itemInputEl);\n $itemInputEl.find('input, select, textarea, [contenteditable]').each(inputEl => {\n const $inputEl = $(inputEl);\n if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;\n app.input.checkEmptyState($inputEl);\n });\n });\n $pageEl.find('textarea.resizable').each(textareaEl => {\n app.input.resizeTextarea(textareaEl);\n });\n },\n 'panelBreakpoint panelCollapsedBreakpoint panelResize panelOpen panelSwipeOpen resize viewMasterDetailBreakpoint': function onPanelOpen(instance) {\n const app = this;\n if (instance && instance.$el) {\n instance.$el.find('textarea.resizable').each(textareaEl => {\n app.input.resizeTextarea(textareaEl);\n });\n } else {\n $('textarea.resizable').each(textareaEl => {\n app.input.resizeTextarea(textareaEl);\n });\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, now, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\nclass Toggle extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const toggle = this;\n const support = getSupport();\n const defaults = {};\n\n // Extend defaults with modules params\n toggle.useModulesParams(defaults);\n toggle.params = extend(defaults, params);\n const el = toggle.params.el;\n if (!el) return toggle;\n const $el = $(el);\n if ($el.length === 0) return toggle;\n if ($el[0].f7Toggle) return $el[0].f7Toggle;\n const $inputEl = $el.children('input[type=\"checkbox\"]');\n extend(toggle, {\n app,\n $el,\n el: $el[0],\n $inputEl,\n inputEl: $inputEl[0],\n disabled: $el.hasClass('disabled') || $inputEl.hasClass('disabled') || $inputEl.attr('disabled') || $inputEl[0].disabled\n });\n Object.defineProperty(toggle, 'checked', {\n enumerable: true,\n configurable: true,\n set(checked) {\n if (!toggle || typeof toggle.$inputEl === 'undefined') return;\n if (toggle.checked === checked) return;\n $inputEl[0].checked = checked;\n toggle.$inputEl.trigger('change');\n },\n get() {\n return $inputEl[0].checked;\n }\n });\n $el[0].f7Toggle = toggle;\n let isTouched;\n const touchesStart = {};\n let isScrolling;\n let touchesDiff;\n let toggleWidth;\n let touchStartTime;\n let touchStartChecked;\n function handleTouchStart(e) {\n if (isTouched || toggle.disabled) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchesDiff = 0;\n isTouched = true;\n isScrolling = undefined;\n touchStartTime = now();\n touchStartChecked = toggle.checked;\n toggleWidth = $el[0].offsetWidth;\n nextTick(() => {\n if (isTouched) {\n $el.addClass('toggle-active-state');\n }\n });\n }\n function handleTouchMove(e) {\n if (!isTouched || toggle.disabled) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n const inverter = app.rtl ? -1 : 1;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n touchesDiff = pageX - touchesStart.x;\n let changed;\n if (touchesDiff * inverter < 0 && Math.abs(touchesDiff) > toggleWidth / 3 && touchStartChecked) {\n changed = true;\n }\n if (touchesDiff * inverter > 0 && Math.abs(touchesDiff) > toggleWidth / 3 && !touchStartChecked) {\n changed = true;\n }\n if (changed) {\n touchesStart.x = pageX;\n toggle.checked = !touchStartChecked;\n touchStartChecked = !touchStartChecked;\n }\n }\n function handleTouchEnd() {\n if (!isTouched || toggle.disabled) {\n if (isScrolling) $el.removeClass('toggle-active-state');\n isTouched = false;\n return;\n }\n const inverter = app.rtl ? -1 : 1;\n isTouched = false;\n $el.removeClass('toggle-active-state');\n let changed;\n if (now() - touchStartTime < 300) {\n if (touchesDiff * inverter < 0 && touchStartChecked) {\n changed = true;\n }\n if (touchesDiff * inverter > 0 && !touchStartChecked) {\n changed = true;\n }\n if (changed) {\n toggle.checked = !touchStartChecked;\n }\n }\n }\n function handleInputChange() {\n toggle.$el.trigger('toggle:change');\n toggle.emit('local::change toggleChange', toggle);\n }\n toggle.attachEvents = function attachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n toggle.$inputEl.on('change', handleInputChange);\n };\n toggle.detachEvents = function detachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n toggle.$inputEl.off('change', handleInputChange);\n };\n\n // Install Modules\n toggle.useModules();\n\n // Init\n toggle.init();\n }\n toggle() {\n const toggle = this;\n toggle.checked = !toggle.checked;\n }\n init() {\n const toggle = this;\n toggle.attachEvents();\n }\n destroy() {\n let toggle = this;\n toggle.$el.trigger('toggle:beforedestroy');\n toggle.emit('local::beforeDestroy toggleBeforeDestroy', toggle);\n delete toggle.$el[0].f7Toggle;\n toggle.detachEvents();\n deleteProps(toggle);\n toggle = null;\n }\n}\nexport default Toggle;","import $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport Toggle from './toggle-class.js';\nexport default {\n name: 'toggle',\n create() {\n const app = this;\n app.toggle = ConstructorMethods({\n defaultSelector: '.toggle',\n constructor: Toggle,\n app,\n domProp: 'f7Toggle'\n });\n },\n static: {\n Toggle\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.toggle-init').each(toggleEl => app.toggle.create({\n el: toggleEl\n }));\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.toggle-init').each(toggleEl => {\n if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.toggle-init').each(toggleEl => app.toggle.create({\n el: toggleEl\n }));\n },\n pageBeforeRemove(page) {\n page.$el.find('.toggle-init').each(toggleEl => {\n if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n });\n }\n },\n vnode: {\n 'toggle-init': {\n insert(vnode) {\n const app = this;\n const toggleEl = vnode.elm;\n app.toggle.create({\n el: toggleEl\n });\n },\n destroy(vnode) {\n const toggleEl = vnode.elm;\n if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\nclass Range extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n const range = this;\n const support = getSupport();\n const defaults = {\n el: null,\n inputEl: null,\n dual: false,\n step: 1,\n label: false,\n min: 0,\n max: 100,\n value: 0,\n draggableBar: true,\n vertical: false,\n verticalReversed: false,\n formatLabel: null,\n scale: false,\n scaleSteps: 5,\n scaleSubSteps: 0,\n formatScaleLabel: null,\n limitKnobPosition: app.theme === 'ios'\n };\n\n // Extend defaults with modules params\n range.useModulesParams(defaults);\n range.params = extend(defaults, params);\n const el = range.params.el;\n if (!el) return range;\n const $el = $(el);\n if ($el.length === 0) return range;\n if ($el[0].f7Range) return $el[0].f7Range;\n const dataset = $el.dataset();\n 'step min max value scaleSteps scaleSubSteps'.split(' ').forEach(paramName => {\n if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {\n range.params[paramName] = parseFloat(dataset[paramName]);\n }\n });\n 'dual label vertical verticalReversed scale'.split(' ').forEach(paramName => {\n if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {\n range.params[paramName] = dataset[paramName];\n }\n });\n if (!range.params.value) {\n if (typeof dataset.value !== 'undefined') range.params.value = dataset.value;\n if (typeof dataset.valueLeft !== 'undefined' && typeof dataset.valueRight !== 'undefined') {\n range.params.value = [parseFloat(dataset.valueLeft), parseFloat(dataset.valueRight)];\n }\n }\n let $inputEl;\n if (!range.params.dual) {\n if (range.params.inputEl) {\n $inputEl = $(range.params.inputEl);\n } else if ($el.find('input[type=\"range\"]').length) {\n $inputEl = $el.find('input[type=\"range\"]').eq(0);\n }\n }\n const {\n dual,\n step,\n label,\n min,\n max,\n value,\n vertical,\n verticalReversed,\n scale,\n scaleSteps,\n scaleSubSteps,\n limitKnobPosition\n } = range.params;\n extend(range, {\n app,\n $el,\n el: $el[0],\n $inputEl,\n inputEl: $inputEl ? $inputEl[0] : undefined,\n dual,\n step,\n label,\n min,\n max,\n value,\n previousValue: value,\n vertical,\n verticalReversed,\n scale,\n scaleSteps,\n scaleSubSteps,\n limitKnobPosition\n });\n if ($inputEl) {\n 'step min max'.split(' ').forEach(paramName => {\n if (!params[paramName] && $inputEl.attr(paramName)) {\n range.params[paramName] = parseFloat($inputEl.attr(paramName));\n range[paramName] = parseFloat($inputEl.attr(paramName));\n }\n });\n if (typeof $inputEl.val() !== 'undefined') {\n range.params.value = parseFloat($inputEl.val());\n range.value = parseFloat($inputEl.val());\n }\n }\n\n // Dual\n if (range.dual) {\n $el.addClass('range-slider-dual');\n }\n if (range.label) {\n $el.addClass('range-slider-label');\n }\n\n // Vertical\n if (range.vertical) {\n $el.addClass('range-slider-vertical');\n if (range.verticalReversed) {\n $el.addClass('range-slider-vertical-reversed');\n }\n } else {\n $el.addClass('range-slider-horizontal');\n }\n\n // Check for layout\n const $barEl = $('
          ');\n const $barActiveEl = $('
          ');\n $barEl.append($barActiveEl);\n\n // Create Knobs\n // prettier-ignore\n const knobHTML = `\n
          \n
          \n ${range.label ? '
          ' : ''}\n
          \n `;\n const knobs = [$(knobHTML)];\n if (range.dual) {\n knobs.push($(knobHTML));\n }\n $el.append($barEl);\n knobs.forEach($knobEl => {\n $el.append($knobEl);\n });\n\n // Labels\n const labels = [];\n if (range.label) {\n labels.push(knobs[0].find('.range-knob-label'));\n if (range.dual) {\n labels.push(knobs[1].find('.range-knob-label'));\n }\n }\n\n // Scale\n let $scaleEl;\n if (range.scale && range.scaleSteps >= 1) {\n $scaleEl = $(`\n
          \n ${range.renderScale()}\n
          \n `);\n $el.append($scaleEl);\n }\n extend(range, {\n knobs,\n labels,\n $barEl,\n $barActiveEl,\n $scaleEl\n });\n $el[0].f7Range = range;\n\n // Touch Events\n let isTouched;\n const touchesStart = {};\n let isScrolling;\n let rangeOffset;\n let rangeOffsetLeft;\n let rangeOffsetTop;\n let $touchedKnobEl;\n let dualValueIndex;\n let valueChangedByTouch;\n let targetTouchIdentifier;\n function onTouchChange() {\n valueChangedByTouch = true;\n }\n function handleTouchStart(e) {\n if (isTouched) return;\n if (!range.params.draggableBar) {\n if ($(e.target).closest('.range-knob').length === 0) {\n return;\n }\n }\n valueChangedByTouch = false;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n if (e.type === 'touchstart') {\n targetTouchIdentifier = e.targetTouches[0].identifier;\n }\n isTouched = true;\n isScrolling = undefined;\n rangeOffset = $el.offset();\n rangeOffsetLeft = rangeOffset.left;\n rangeOffsetTop = rangeOffset.top;\n let progress;\n if (range.vertical) {\n progress = (touchesStart.y - rangeOffsetTop) / range.rangeHeight;\n if (!range.verticalReversed) progress = 1 - progress;\n } else if (range.app.rtl) {\n progress = (rangeOffsetLeft + range.rangeWidth - touchesStart.x) / range.rangeWidth;\n } else {\n progress = (touchesStart.x - rangeOffsetLeft) / range.rangeWidth;\n }\n let newValue = progress * (range.max - range.min) + range.min;\n if (range.dual) {\n if (Math.abs(range.value[0] - newValue) < Math.abs(range.value[1] - newValue)) {\n dualValueIndex = 0;\n $touchedKnobEl = range.knobs[0];\n newValue = [newValue, range.value[1]];\n } else {\n dualValueIndex = 1;\n $touchedKnobEl = range.knobs[1];\n newValue = [range.value[0], newValue];\n }\n } else {\n $touchedKnobEl = range.knobs[0];\n newValue = progress * (range.max - range.min) + range.min;\n }\n nextTick(() => {\n if (isTouched) $touchedKnobEl.addClass('range-knob-active-state');\n }, 70);\n range.on('change', onTouchChange);\n range.setValue(newValue, true);\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n let pageX;\n let pageY;\n if (e.type === 'touchmove') {\n for (let i = 0; i < e.targetTouches.length; i += 1) {\n if (e.targetTouches[i].identifier === targetTouchIdentifier) {\n pageX = e.targetTouches[i].pageX;\n pageY = e.targetTouches[i].pageY;\n }\n }\n } else {\n pageX = e.pageX;\n pageY = e.pageY;\n }\n if (typeof pageX === 'undefined' && typeof pageY === 'undefined') return;\n if (typeof isScrolling === 'undefined' && !range.vertical) {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n let progress;\n if (range.vertical) {\n progress = (pageY - rangeOffsetTop) / range.rangeHeight;\n if (!range.verticalReversed) progress = 1 - progress;\n } else if (range.app.rtl) {\n progress = (rangeOffsetLeft + range.rangeWidth - pageX) / range.rangeWidth;\n } else {\n progress = (pageX - rangeOffsetLeft) / range.rangeWidth;\n }\n let newValue = progress * (range.max - range.min) + range.min;\n if (range.dual) {\n let leftValue;\n let rightValue;\n if (dualValueIndex === 0) {\n leftValue = newValue;\n rightValue = range.value[1];\n if (leftValue > rightValue) {\n rightValue = leftValue;\n }\n } else {\n leftValue = range.value[0];\n rightValue = newValue;\n if (rightValue < leftValue) {\n leftValue = rightValue;\n }\n }\n newValue = [leftValue, rightValue];\n }\n range.setValue(newValue, true);\n }\n function handleTouchEnd(e) {\n if (e.type === 'touchend') {\n let touchEnded;\n for (let i = 0; i < e.changedTouches.length; i += 1) {\n if (e.changedTouches[i].identifier === targetTouchIdentifier) touchEnded = true;\n }\n if (!touchEnded) return;\n }\n if (!isTouched) {\n if (isScrolling) $touchedKnobEl.removeClass('range-knob-active-state');\n isTouched = false;\n return;\n }\n range.off('change', onTouchChange);\n isTouched = false;\n $touchedKnobEl.removeClass('range-knob-active-state');\n if (valueChangedByTouch && range.$inputEl && !range.dual) {\n range.$inputEl.trigger('change');\n }\n valueChangedByTouch = false;\n if (typeof range.previousValue !== 'undefined') {\n if (range.dual && (range.previousValue[0] !== range.value[0] || range.previousValue[1] !== range.value[1]) || !range.dual && range.previousValue !== range.value) {\n range.$el.trigger('range:changed', range.value);\n range.emit('local::changed rangeChanged', range, range.value);\n }\n }\n }\n function handleResize() {\n range.calcSize();\n range.layout();\n }\n let parentModals;\n let parentPanel;\n let parentPage;\n range.attachEvents = function attachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n range.$el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('tabShow', handleResize);\n app.on('resize', handleResize);\n parentModals = range.$el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast');\n parentModals.on('modal:open', handleResize);\n parentPanel = range.$el.parents('.panel');\n parentPanel.on('panel:open panel:resize', handleResize);\n parentPage = range.$el.parents('.page').eq(0);\n parentPage.on('page:reinit', handleResize);\n };\n range.detachEvents = function detachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n range.$el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('tabShow', handleResize);\n app.off('resize', handleResize);\n if (parentModals) {\n parentModals.off('modal:open', handleResize);\n }\n if (parentPanel) {\n parentPanel.off('panel:open panel:resize', handleResize);\n }\n if (parentPage) {\n parentPage.off('page:reinit', handleResize);\n }\n parentModals = null;\n parentPanel = null;\n parentPage = null;\n };\n\n // Install Modules\n range.useModules();\n\n // Init\n range.init();\n return range;\n }\n calcSize() {\n const range = this;\n if (range.vertical) {\n const height = range.$el.outerHeight();\n if (height === 0) return;\n range.rangeHeight = height;\n range.knobHeight = range.knobs[0].outerHeight();\n } else {\n const width = range.$el.outerWidth();\n if (width === 0) return;\n range.rangeWidth = width;\n range.knobWidth = range.knobs[0].outerWidth();\n }\n }\n layout() {\n const range = this;\n const {\n app,\n knobWidth,\n knobHeight,\n rangeWidth,\n rangeHeight,\n min,\n max,\n knobs,\n $barActiveEl,\n value,\n label,\n labels,\n vertical,\n verticalReversed,\n limitKnobPosition\n } = range;\n const knobSize = vertical ? knobHeight : knobWidth;\n const rangeSize = vertical ? rangeHeight : rangeWidth;\n // eslint-disable-next-line\n const positionProperty = vertical ? verticalReversed ? 'top' : 'bottom' : app.rtl ? 'right' : 'left';\n if (range.dual) {\n const progress = [(value[0] - min) / (max - min), (value[1] - min) / (max - min)];\n $barActiveEl.css({\n [positionProperty]: `${progress[0] * 100}%`,\n [vertical ? 'height' : 'width']: `${(progress[1] - progress[0]) * 100}%`\n });\n knobs.forEach(($knobEl, knobIndex) => {\n let startPos = rangeSize * progress[knobIndex];\n if (limitKnobPosition) {\n const realStartPos = rangeSize * progress[knobIndex] - knobSize / 2;\n if (realStartPos < 0) startPos = knobSize / 2;\n if (realStartPos + knobSize > rangeSize) startPos = rangeSize - knobSize / 2;\n }\n $knobEl.css(positionProperty, `${startPos}px`);\n if (label) labels[knobIndex].text(range.formatLabel(value[knobIndex], labels[knobIndex][0]));\n });\n } else {\n const progress = (value - min) / (max - min);\n $barActiveEl.css(vertical ? 'height' : 'width', `${progress * 100}%`);\n let startPos = rangeSize * progress;\n if (limitKnobPosition) {\n const realStartPos = rangeSize * progress - knobSize / 2;\n if (realStartPos < 0) startPos = knobSize / 2;\n if (realStartPos + knobSize > rangeSize) startPos = rangeSize - knobSize / 2;\n }\n knobs[0].css(positionProperty, `${startPos}px`);\n if (label) labels[0].text(range.formatLabel(value, labels[0][0]));\n }\n if (range.dual && value.indexOf(min) >= 0 || !range.dual && value === min) {\n range.$el.addClass('range-slider-min');\n } else {\n range.$el.removeClass('range-slider-min');\n }\n if (range.dual && value.indexOf(max) >= 0 || !range.dual && value === max) {\n range.$el.addClass('range-slider-max');\n } else {\n range.$el.removeClass('range-slider-max');\n }\n }\n setValue(newValue, byTouchMove) {\n const range = this;\n const {\n step,\n min,\n max\n } = range;\n let valueChanged;\n let oldValue;\n if (range.dual) {\n oldValue = [range.value[0], range.value[1]];\n let newValues = newValue;\n if (!Array.isArray(newValues)) newValues = [newValue, newValue];\n if (newValue[0] > newValue[1]) {\n newValues = [newValues[0], newValues[0]];\n }\n newValues = newValues.map(value => Math.max(Math.min(Math.round(value / step) * step, max), min));\n if (newValues[0] === range.value[0] && newValues[1] === range.value[1]) {\n return range;\n }\n newValues.forEach((value, valueIndex) => {\n range.value[valueIndex] = value;\n });\n valueChanged = oldValue[0] !== newValues[0] || oldValue[1] !== newValues[1];\n range.layout();\n } else {\n oldValue = range.value;\n const value = Math.max(Math.min(Math.round(newValue / step) * step, max), min);\n range.value = value;\n range.layout();\n valueChanged = oldValue !== value;\n }\n if (valueChanged) {\n range.previousValue = oldValue;\n }\n // Events\n if (!valueChanged) return range;\n range.$el.trigger('range:change', range.value);\n if (range.$inputEl && !range.dual) {\n range.$inputEl.val(range.value);\n if (!byTouchMove) {\n range.$inputEl.trigger('input change');\n } else {\n range.$inputEl.trigger('input');\n }\n }\n if (!byTouchMove) {\n range.$el.trigger('range:changed', range.value);\n range.emit('local::changed rangeChanged', range, range.value);\n }\n range.emit('local::change rangeChange', range, range.value);\n return range;\n }\n getValue() {\n return this.value;\n }\n formatLabel(value, labelEl) {\n const range = this;\n if (range.params.formatLabel) return range.params.formatLabel.call(range, value, labelEl);\n return value;\n }\n formatScaleLabel(value) {\n const range = this;\n if (range.params.formatScaleLabel) return range.params.formatScaleLabel.call(range, value);\n return value;\n }\n renderScale() {\n const range = this;\n const {\n app,\n verticalReversed,\n vertical\n } = range;\n\n // eslint-disable-next-line\n const positionProperty = vertical ? verticalReversed ? 'top' : 'bottom' : app.rtl ? 'right' : 'left';\n let html = '';\n Array.from({\n length: range.scaleSteps + 1\n }).forEach((scaleEl, index) => {\n const scaleStepValue = (range.max - range.min) / range.scaleSteps;\n const scaleValue = range.min + scaleStepValue * index;\n const progress = (scaleValue - range.min) / (range.max - range.min);\n html += `
          ${range.formatScaleLabel(scaleValue)}
          `;\n if (range.scaleSubSteps && range.scaleSubSteps > 1 && index < range.scaleSteps) {\n Array.from({\n length: range.scaleSubSteps - 1\n }).forEach((subStepEl, subIndex) => {\n const subStep = scaleStepValue / range.scaleSubSteps;\n const scaleSubValue = scaleValue + subStep * (subIndex + 1);\n const subProgress = (scaleSubValue - range.min) / (range.max - range.min);\n html += `
          `;\n });\n }\n });\n return html;\n }\n updateScale() {\n const range = this;\n if (!range.scale || range.scaleSteps < 1) {\n if (range.$scaleEl) range.$scaleEl.remove();\n delete range.$scaleEl;\n return;\n }\n if (!range.$scaleEl) {\n range.$scaleEl = $('
          ');\n range.$el.append(range.$scaleEl);\n }\n range.$scaleEl.html(range.renderScale());\n }\n init() {\n const range = this;\n range.calcSize();\n range.layout();\n range.attachEvents();\n return range;\n }\n destroy() {\n let range = this;\n range.$el.trigger('range:beforedestroy');\n range.emit('local::beforeDestroy rangeBeforeDestroy', range);\n delete range.$el[0].f7Range;\n range.detachEvents();\n deleteProps(range);\n range = null;\n }\n}\nexport default Range;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Range from './range-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'range',\n create() {\n const app = this;\n app.range = extend(ConstructorMethods({\n defaultSelector: '.range-slider',\n constructor: Range,\n app,\n domProp: 'f7Range'\n }), {\n getValue(el) {\n if (el === void 0) {\n el = '.range-slider';\n }\n const range = app.range.get(el);\n if (range) return range.getValue();\n return undefined;\n },\n setValue(el, value) {\n if (el === void 0) {\n el = '.range-slider';\n }\n const range = app.range.get(el);\n if (range) return range.setValue(value);\n return undefined;\n }\n });\n },\n static: {\n Range\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.range-slider-init').each(rangeEl => new Range(app, {\n el: rangeEl\n }));\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.range-slider-init').each(rangeEl => {\n if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.range-slider-init').each(rangeEl => new Range(app, {\n el: rangeEl\n }));\n },\n pageBeforeRemove(page) {\n page.$el.find('.range-slider-init').each(rangeEl => {\n if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n });\n }\n },\n vnode: {\n 'range-slider-init': {\n insert(vnode) {\n const rangeEl = vnode.elm;\n const app = this;\n app.range.create({\n el: rangeEl\n });\n },\n destroy(vnode) {\n const rangeEl = vnode.elm;\n if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n }\n }\n }\n};","/* eslint no-control-regex: \"off\" */\nconst defaultDiacriticsRemovalap = [{\n base: 'A',\n letters: '\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F'\n}, {\n base: 'AA',\n letters: '\\uA732'\n}, {\n base: 'AE',\n letters: '\\u00C6\\u01FC\\u01E2'\n}, {\n base: 'AO',\n letters: '\\uA734'\n}, {\n base: 'AU',\n letters: '\\uA736'\n}, {\n base: 'AV',\n letters: '\\uA738\\uA73A'\n}, {\n base: 'AY',\n letters: '\\uA73C'\n}, {\n base: 'B',\n letters: '\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181'\n}, {\n base: 'C',\n letters: '\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E'\n}, {\n base: 'D',\n letters: '\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779'\n}, {\n base: 'DZ',\n letters: '\\u01F1\\u01C4'\n}, {\n base: 'Dz',\n letters: '\\u01F2\\u01C5'\n}, {\n base: 'E',\n letters: '\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E'\n}, {\n base: 'F',\n letters: '\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B'\n}, {\n base: 'G',\n letters: '\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E'\n}, {\n base: 'H',\n letters: '\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D'\n}, {\n base: 'I',\n letters: '\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197'\n}, {\n base: 'J',\n letters: '\\u004A\\u24BF\\uFF2A\\u0134\\u0248'\n}, {\n base: 'K',\n letters: '\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2'\n}, {\n base: 'L',\n letters: '\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780'\n}, {\n base: 'LJ',\n letters: '\\u01C7'\n}, {\n base: 'Lj',\n letters: '\\u01C8'\n}, {\n base: 'M',\n letters: '\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C'\n}, {\n base: 'N',\n letters: '\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4'\n}, {\n base: 'NJ',\n letters: '\\u01CA'\n}, {\n base: 'Nj',\n letters: '\\u01CB'\n}, {\n base: 'O',\n letters: '\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C'\n}, {\n base: 'OI',\n letters: '\\u01A2'\n}, {\n base: 'OO',\n letters: '\\uA74E'\n}, {\n base: 'OU',\n letters: '\\u0222'\n}, {\n base: 'OE',\n letters: '\\u008C\\u0152'\n}, {\n base: 'oe',\n letters: '\\u009C\\u0153'\n}, {\n base: 'P',\n letters: '\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754'\n}, {\n base: 'Q',\n letters: '\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A'\n}, {\n base: 'R',\n letters: '\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782'\n}, {\n base: 'S',\n letters: '\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784'\n}, {\n base: 'T',\n letters: '\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786'\n}, {\n base: 'TZ',\n letters: '\\uA728'\n}, {\n base: 'U',\n letters: '\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244'\n}, {\n base: 'V',\n letters: '\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245'\n}, {\n base: 'VY',\n letters: '\\uA760'\n}, {\n base: 'W',\n letters: '\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72'\n}, {\n base: 'X',\n letters: '\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C'\n}, {\n base: 'Y',\n letters: '\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE'\n}, {\n base: 'Z',\n letters: '\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762'\n}, {\n base: 'a',\n letters: '\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250'\n}, {\n base: 'aa',\n letters: '\\uA733'\n}, {\n base: 'ae',\n letters: '\\u00E6\\u01FD\\u01E3'\n}, {\n base: 'ao',\n letters: '\\uA735'\n}, {\n base: 'au',\n letters: '\\uA737'\n}, {\n base: 'av',\n letters: '\\uA739\\uA73B'\n}, {\n base: 'ay',\n letters: '\\uA73D'\n}, {\n base: 'b',\n letters: '\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253'\n}, {\n base: 'c',\n letters: '\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184'\n}, {\n base: 'd',\n letters: '\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A'\n}, {\n base: 'dz',\n letters: '\\u01F3\\u01C6'\n}, {\n base: 'e',\n letters: '\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD'\n}, {\n base: 'f',\n letters: '\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C'\n}, {\n base: 'g',\n letters: '\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F'\n}, {\n base: 'h',\n letters: '\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265'\n}, {\n base: 'hv',\n letters: '\\u0195'\n}, {\n base: 'i',\n letters: '\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131'\n}, {\n base: 'j',\n letters: '\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249'\n}, {\n base: 'k',\n letters: '\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3'\n}, {\n base: 'l',\n letters: '\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747'\n}, {\n base: 'lj',\n letters: '\\u01C9'\n}, {\n base: 'm',\n letters: '\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F'\n}, {\n base: 'n',\n letters: '\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5'\n}, {\n base: 'nj',\n letters: '\\u01CC'\n}, {\n base: 'o',\n letters: '\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275'\n}, {\n base: 'oi',\n letters: '\\u01A3'\n}, {\n base: 'ou',\n letters: '\\u0223'\n}, {\n base: 'oo',\n letters: '\\uA74F'\n}, {\n base: 'p',\n letters: '\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755'\n}, {\n base: 'q',\n letters: '\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759'\n}, {\n base: 'r',\n letters: '\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783'\n}, {\n base: 's',\n letters: '\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B'\n}, {\n base: 't',\n letters: '\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787'\n}, {\n base: 'tz',\n letters: '\\uA729'\n}, {\n base: 'u',\n letters: '\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289'\n}, {\n base: 'v',\n letters: '\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C'\n}, {\n base: 'vy',\n letters: '\\uA761'\n}, {\n base: 'w',\n letters: '\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73'\n}, {\n base: 'x',\n letters: '\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D'\n}, {\n base: 'y',\n letters: '\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF'\n}, {\n base: 'z',\n letters: '\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763'\n}];\nconst diacriticsMap = {};\nfor (let i = 0; i < defaultDiacriticsRemovalap.length; i += 1) {\n const letters = defaultDiacriticsRemovalap[i].letters;\n for (let j = 0; j < letters.length; j += 1) {\n diacriticsMap[letters[j]] = defaultDiacriticsRemovalap[i].base;\n }\n}\nfunction removeDiacritics(str) {\n return str.replace(/[^\\u0000-\\u007E]/g, a => diacriticsMap[a] || a);\n}\nexport default removeDiacritics;","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nclass Stepper extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n const stepper = this;\n const defaults = {\n el: null,\n inputEl: null,\n valueEl: null,\n value: 0,\n formatValue: null,\n step: 1,\n min: 0,\n max: 100,\n watchInput: true,\n autorepeat: false,\n autorepeatDynamic: false,\n wraps: false,\n manualInputMode: false,\n decimalPoint: 4,\n buttonsEndInputMode: true\n };\n\n // Extend defaults with modules params\n stepper.useModulesParams(defaults);\n stepper.params = extend(defaults, params);\n if (stepper.params.value < stepper.params.min) {\n stepper.params.value = stepper.params.min;\n }\n if (stepper.params.value > stepper.params.max) {\n stepper.params.value = stepper.params.max;\n }\n const el = stepper.params.el;\n if (!el) return stepper;\n const $el = $(el);\n if ($el.length === 0) return stepper;\n if ($el[0].f7Stepper) return $el[0].f7Stepper;\n let $inputEl;\n if (stepper.params.inputEl) {\n $inputEl = $(stepper.params.inputEl);\n } else if ($el.find('.stepper-input-wrap').find('input, textarea').length) {\n $inputEl = $el.find('.stepper-input-wrap').find('input, textarea').eq(0);\n }\n if ($inputEl && $inputEl.length) {\n 'step min max'.split(' ').forEach(paramName => {\n if (!params[paramName] && $inputEl.attr(paramName)) {\n stepper.params[paramName] = parseFloat($inputEl.attr(paramName));\n }\n });\n const decimalPoint = parseInt(stepper.params.decimalPoint, 10);\n if (Number.isNaN(decimalPoint)) {\n stepper.params.decimalPoint = 0;\n } else {\n stepper.params.decimalPoint = decimalPoint;\n }\n const inputValue = parseFloat($inputEl.val());\n if (typeof params.value === 'undefined' && !Number.isNaN(inputValue) && (inputValue || inputValue === 0)) {\n stepper.params.value = inputValue;\n }\n }\n let $valueEl;\n if (stepper.params.valueEl) {\n $valueEl = $(stepper.params.valueEl);\n } else if ($el.find('.stepper-value').length) {\n $valueEl = $el.find('.stepper-value').eq(0);\n }\n const $buttonPlusEl = $el.find('.stepper-button-plus');\n const $buttonMinusEl = $el.find('.stepper-button-minus');\n const {\n step,\n min,\n max,\n value,\n decimalPoint\n } = stepper.params;\n extend(stepper, {\n app,\n $el,\n el: $el[0],\n $buttonPlusEl,\n buttonPlusEl: $buttonPlusEl[0],\n $buttonMinusEl,\n buttonMinusEl: $buttonMinusEl[0],\n $inputEl,\n inputEl: $inputEl ? $inputEl[0] : undefined,\n $valueEl,\n valueEl: $valueEl ? $valueEl[0] : undefined,\n step,\n min,\n max,\n value,\n decimalPoint,\n typeModeChanged: false\n });\n $el[0].f7Stepper = stepper;\n\n // Handle Events\n const touchesStart = {};\n let isTouched;\n let isScrolling;\n let preventButtonClick;\n let intervalId;\n let timeoutId;\n let autorepeatAction = null;\n let autorepeatInAction = false;\n let manualInput = false;\n function dynamicRepeat(current, progressions, startsIn, progressionStep, repeatEvery, action) {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n if (current === 1) {\n preventButtonClick = true;\n autorepeatInAction = true;\n }\n clearInterval(intervalId);\n action();\n intervalId = setInterval(() => {\n action();\n }, repeatEvery);\n if (current < progressions) {\n dynamicRepeat(current + 1, progressions, startsIn, progressionStep, repeatEvery / 2, action);\n }\n }, current === 1 ? startsIn : progressionStep);\n }\n function onTouchStart(e) {\n if (isTouched) return;\n if (manualInput) {\n return;\n }\n if ($(e.target).closest($buttonPlusEl).length) {\n autorepeatAction = 'increment';\n } else if ($(e.target).closest($buttonMinusEl).length) {\n autorepeatAction = 'decrement';\n }\n if (!autorepeatAction) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isTouched = true;\n isScrolling = undefined;\n const progressions = stepper.params.autorepeatDynamic ? 4 : 1;\n dynamicRepeat(1, progressions, 500, 1000, 300, () => {\n stepper[autorepeatAction]();\n });\n }\n function onTouchMove(e) {\n if (!isTouched) return;\n if (manualInput) {\n return;\n }\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined' && !autorepeatInAction) {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n const distance = ((pageX - touchesStart.x) ** 2 + (pageY - touchesStart.y) ** 2) ** 0.5;\n if (isScrolling || distance > 20) {\n isTouched = false;\n clearTimeout(timeoutId);\n clearInterval(intervalId);\n }\n }\n function onTouchEnd() {\n clearTimeout(timeoutId);\n clearInterval(intervalId);\n autorepeatAction = null;\n autorepeatInAction = false;\n isTouched = false;\n }\n function onMinusClick() {\n if (manualInput) {\n if (stepper.params.buttonsEndInputMode) {\n manualInput = false;\n stepper.endTypeMode(true);\n }\n return;\n }\n if (preventButtonClick) {\n preventButtonClick = false;\n return;\n }\n stepper.decrement(true);\n }\n function onPlusClick() {\n if (manualInput) {\n if (stepper.params.buttonsEndInputMode) {\n manualInput = false;\n stepper.endTypeMode(true);\n }\n return;\n }\n if (preventButtonClick) {\n preventButtonClick = false;\n return;\n }\n stepper.increment(true);\n }\n function onInputClick(e) {\n if (!e.target.readOnly && stepper.params.manualInputMode) {\n manualInput = true;\n if (typeof e.target.selectionStart === 'number') {\n e.target.selectionStart = e.target.value.length;\n e.target.selectionEnd = e.target.value.length;\n }\n }\n }\n function onInputKey(e) {\n if (e.keyCode === 13 || e.which === 13) {\n e.preventDefault();\n manualInput = false;\n stepper.endTypeMode();\n }\n }\n function onInputBlur() {\n manualInput = false;\n stepper.endTypeMode(true);\n }\n function onInput(e) {\n if (manualInput) {\n stepper.typeValue(e.target.value);\n return;\n }\n if (e.detail && e.detail.sentByF7Stepper) return;\n stepper.setValue(e.target.value, true);\n }\n stepper.attachEvents = function attachEvents() {\n $buttonMinusEl.on('click', onMinusClick);\n $buttonPlusEl.on('click', onPlusClick);\n if (stepper.params.watchInput && $inputEl && $inputEl.length) {\n $inputEl.on('input', onInput);\n $inputEl.on('click', onInputClick);\n $inputEl.on('blur', onInputBlur);\n $inputEl.on('keyup', onInputKey);\n }\n if (stepper.params.autorepeat) {\n app.on('touchstart:passive', onTouchStart);\n app.on('touchmove:active', onTouchMove);\n app.on('touchend:passive', onTouchEnd);\n }\n };\n stepper.detachEvents = function detachEvents() {\n $buttonMinusEl.off('click', onMinusClick);\n $buttonPlusEl.off('click', onPlusClick);\n if (stepper.params.watchInput && $inputEl && $inputEl.length) {\n $inputEl.off('input', onInput);\n $inputEl.off('click', onInputClick);\n $inputEl.off('blur', onInputBlur);\n $inputEl.off('keyup', onInputKey);\n }\n };\n\n // Install Modules\n stepper.useModules();\n\n // Init\n stepper.init();\n return stepper;\n }\n minus() {\n return this.decrement();\n }\n plus() {\n return this.increment();\n }\n decrement() {\n const stepper = this;\n return stepper.setValue(stepper.value - stepper.step, false, true);\n }\n increment() {\n const stepper = this;\n return stepper.setValue(stepper.value + stepper.step, false, true);\n }\n setValue(newValue, forceUpdate, withWraps) {\n const stepper = this;\n const {\n step,\n min,\n max\n } = stepper;\n const oldValue = stepper.value;\n let value = Math.round(newValue / step) * step;\n if (stepper.params.wraps && withWraps) {\n if (value > max) value = min;\n if (value < min) value = max;\n } else {\n value = Math.max(Math.min(value, max), min);\n }\n if (Number.isNaN(value)) {\n value = oldValue;\n }\n stepper.value = value;\n const valueChanged = oldValue !== value;\n\n // Events\n if (!valueChanged && !forceUpdate) return stepper;\n stepper.$el.trigger('stepper:change', stepper.value);\n const formattedValue = stepper.formatValue(stepper.value);\n if (stepper.$inputEl && stepper.$inputEl.length) {\n stepper.$inputEl.val(formattedValue);\n stepper.$inputEl.trigger('input change', {\n sentByF7Stepper: true\n });\n }\n if (stepper.$valueEl && stepper.$valueEl.length) {\n stepper.$valueEl.html(formattedValue);\n }\n stepper.emit('local::change stepperChange', stepper, stepper.value);\n return stepper;\n }\n endTypeMode(noBlur) {\n const stepper = this;\n const {\n min,\n max\n } = stepper;\n let value = parseFloat(stepper.value);\n if (Number.isNaN(value)) value = 0;\n value = Math.max(Math.min(value, max), min);\n stepper.value = value;\n if (!stepper.typeModeChanged) {\n if (stepper.$inputEl && stepper.$inputEl.length && !noBlur) {\n stepper.$inputEl.blur();\n }\n return stepper;\n }\n stepper.typeModeChanged = false;\n stepper.$el.trigger('stepper:change', stepper.value);\n const formattedValue = stepper.formatValue(stepper.value);\n if (stepper.$inputEl && stepper.$inputEl.length) {\n stepper.$inputEl.val(formattedValue);\n stepper.$inputEl.trigger('input change', {\n sentByF7Stepper: true\n });\n if (!noBlur) stepper.$inputEl.blur();\n }\n if (stepper.$valueEl && stepper.$valueEl.length) {\n stepper.$valueEl.html(formattedValue);\n }\n stepper.emit('local::change stepperChange', stepper, stepper.value);\n return stepper;\n }\n typeValue(value) {\n const stepper = this;\n stepper.typeModeChanged = true;\n let inputTxt = String(value);\n if (inputTxt.length === 1 && inputTxt === '-') return stepper;\n if (inputTxt.lastIndexOf('.') + 1 === inputTxt.length || inputTxt.lastIndexOf(',') + 1 === inputTxt.length) {\n if (inputTxt.lastIndexOf('.') !== inputTxt.indexOf('.') || inputTxt.lastIndexOf(',') !== inputTxt.indexOf(',')) {\n inputTxt = inputTxt.slice(0, -1);\n stepper.value = inputTxt;\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n } else {\n let newValue = parseFloat(inputTxt.replace(',', '.'));\n if (newValue === 0) {\n stepper.value = inputTxt.replace(',', '.');\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n if (Number.isNaN(newValue)) {\n stepper.value = 0;\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n const powVal = 10 ** stepper.params.decimalPoint;\n newValue = Math.round(newValue * powVal).toFixed(stepper.params.decimalPoint + 1) / powVal;\n stepper.value = parseFloat(String(newValue).replace(',', '.'));\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n stepper.value = inputTxt;\n stepper.$inputEl.val(inputTxt);\n return stepper;\n }\n getValue() {\n return this.value;\n }\n formatValue(value) {\n const stepper = this;\n if (!stepper.params.formatValue) return value;\n return stepper.params.formatValue.call(stepper, value);\n }\n init() {\n const stepper = this;\n stepper.attachEvents();\n if (stepper.$valueEl && stepper.$valueEl.length) {\n const formattedValue = stepper.formatValue(stepper.value);\n stepper.$valueEl.html(formattedValue);\n }\n return stepper;\n }\n destroy() {\n let stepper = this;\n stepper.$el.trigger('stepper:beforedestroy');\n stepper.emit('local::beforeDestroy stepperBeforeDestroy', stepper);\n delete stepper.$el[0].f7Stepper;\n stepper.detachEvents();\n deleteProps(stepper);\n stepper = null;\n }\n}\nexport default Stepper;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Stepper from './stepper-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'stepper',\n create() {\n const app = this;\n app.stepper = extend(ConstructorMethods({\n defaultSelector: '.stepper',\n constructor: Stepper,\n app,\n domProp: 'f7Stepper'\n }), {\n getValue(el) {\n if (el === void 0) {\n el = '.stepper';\n }\n const stepper = app.stepper.get(el);\n if (stepper) return stepper.getValue();\n return undefined;\n },\n setValue(el, value) {\n if (el === void 0) {\n el = '.stepper';\n }\n const stepper = app.stepper.get(el);\n if (stepper) return stepper.setValue(value);\n return undefined;\n }\n });\n },\n static: {\n Stepper\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.stepper-init').each(stepperEl => {\n const dataset = $(stepperEl).dataset();\n app.stepper.create(extend({\n el: stepperEl\n }, dataset || {}));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.stepper-init').each(stepperEl => {\n if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.stepper-init').each(stepperEl => {\n const dataset = $(stepperEl).dataset();\n app.stepper.create(extend({\n el: stepperEl\n }, dataset || {}));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.stepper-init').each(stepperEl => {\n if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n });\n }\n },\n vnode: {\n 'stepper-init': {\n insert(vnode) {\n const app = this;\n const stepperEl = vnode.elm;\n const dataset = $(stepperEl).dataset();\n app.stepper.create(extend({\n el: stepperEl\n }, dataset || {}));\n },\n destroy(vnode) {\n const stepperEl = vnode.elm;\n if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps, id, nextTick } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport removeDiacritics from '../searchbar/remove-diacritics.js';\n\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass SmartSelect extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const ss = this;\n const defaults = extend({\n on: {}\n }, app.params.smartSelect);\n\n // Extend defaults with modules params\n ss.useModulesParams(defaults);\n ss.params = extend({}, defaults, params);\n ss.app = app;\n const $el = $(ss.params.el).eq(0);\n if ($el.length === 0) return ss;\n if ($el[0].f7SmartSelect) return $el[0].f7SmartSelect;\n const $selectEl = $el.find('select').eq(0);\n if ($selectEl.length === 0) return ss;\n let $valueEl;\n if (ss.params.setValueText) {\n $valueEl = $(ss.params.valueEl);\n if ($valueEl.length === 0) {\n $valueEl = $el.find('.item-after');\n }\n if ($valueEl.length === 0) {\n $valueEl = $('
          ');\n $valueEl.insertAfter($el.find('.item-title'));\n }\n }\n\n // Url\n let url = params.url;\n if (!url) {\n if ($el.attr('href') && $el.attr('href') !== '#') url = $el.attr('href');else if ($selectEl.attr('name')) url = `${$selectEl.attr('name').toLowerCase()}-select/`;\n }\n if (!url) url = ss.params.url;\n const multiple = $selectEl[0].multiple;\n const inputType = multiple ? 'checkbox' : 'radio';\n const selectId = id();\n extend(ss, {\n $el,\n el: $el[0],\n $selectEl,\n selectEl: $selectEl[0],\n $valueEl,\n valueEl: $valueEl && $valueEl[0],\n url,\n multiple,\n inputType,\n id: selectId,\n inputName: `${inputType}-${selectId}`,\n selectName: $selectEl.attr('name'),\n maxLength: $selectEl.attr('maxlength') || params.maxLength\n });\n $el[0].f7SmartSelect = ss;\n\n // Events\n function onClick() {\n ss.open();\n }\n function onChange() {\n const value = ss.$selectEl.val();\n ss.$el.trigger('smartselect:change', value);\n ss.emit('local::change smartSelectChange', ss, value);\n if (ss.vl) {\n ss.vl.clearCache();\n }\n ss.setValueText();\n }\n ss.attachEvents = function attachEvents() {\n $el.on('click', onClick);\n $el.on('change', 'select', onChange);\n };\n ss.detachEvents = function detachEvents() {\n $el.off('click', onClick);\n $el.off('change', 'select', onChange);\n };\n function handleInputChange() {\n let optionEl;\n let text;\n const inputEl = this;\n const value = inputEl.value;\n let optionText = [];\n let displayAs;\n if (inputEl.type === 'checkbox') {\n for (let i = 0; i < ss.selectEl.options.length; i += 1) {\n optionEl = ss.selectEl.options[i];\n if (optionEl.value === value) {\n optionEl.selected = inputEl.checked;\n }\n if (optionEl.selected) {\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-value-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText.push(text.trim());\n }\n }\n if (ss.maxLength) {\n ss.checkMaxLength();\n }\n } else {\n optionEl = ss.$selectEl.find(`option[value=\"${value}\"]`)[0];\n if (!optionEl) {\n optionEl = ss.$selectEl.find('option').filter(optEl => optEl.value === value)[0];\n }\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText = [text];\n ss.selectEl.value = value;\n }\n ss.$selectEl.trigger('change');\n if (ss.params.setValueText) {\n ss.formatValueTextContent(optionText);\n }\n if (ss.params.closeOnSelect && ss.inputType === 'radio') {\n ss.close();\n }\n }\n ss.attachInputsEvents = function attachInputsEvents() {\n ss.$containerEl.on('change', 'input[type=\"checkbox\"], input[type=\"radio\"]', handleInputChange);\n };\n ss.detachInputsEvents = function detachInputsEvents() {\n ss.$containerEl.off('change', 'input[type=\"checkbox\"], input[type=\"radio\"]', handleInputChange);\n };\n\n // Install Modules\n ss.useModules();\n\n // Init\n ss.init();\n return ss;\n }\n setValue(value) {\n const ss = this;\n let newValue = value;\n let optionText = [];\n let optionEl;\n let displayAs;\n let text;\n if (ss.multiple) {\n if (!Array.isArray(newValue)) newValue = [newValue];\n for (let i = 0; i < ss.selectEl.options.length; i += 1) {\n optionEl = ss.selectEl.options[i];\n if (newValue.indexOf(optionEl.value) >= 0) {\n optionEl.selected = true;\n } else {\n optionEl.selected = false;\n }\n if (optionEl.selected) {\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-value-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText.push(text.trim());\n }\n }\n } else {\n optionEl = ss.$selectEl.find(`option[value=\"${newValue}\"]`)[0];\n if (optionEl) {\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText = [text];\n }\n ss.selectEl.value = newValue;\n }\n if (ss.params.setValueText) {\n ss.formatValueTextContent(optionText);\n }\n ss.$selectEl.trigger('change');\n return ss;\n }\n unsetValue() {\n const ss = this;\n if (ss.params.setValueText) {\n ss.formatValueTextContent([]);\n }\n ss.$selectEl.find('option').each(optionEl => {\n optionEl.selected = false;\n optionEl.checked = false;\n });\n ss.$selectEl[0].value = null;\n if (ss.$containerEl) {\n ss.$containerEl.find(`input[name=\"${ss.inputName}\"][type=\"checkbox\"], input[name=\"${ss.inputName}\"][type=\"radio\"]`).prop('checked', false);\n }\n ss.$selectEl.trigger('change');\n }\n getValue() {\n const ss = this;\n return ss.$selectEl.val();\n }\n get view() {\n const {\n params,\n $el\n } = this;\n let view;\n if (params.view) {\n view = params.view;\n }\n if (!view) {\n view = $el.parents('.view').length && $el.parents('.view')[0].f7View;\n }\n if (!view && params.openIn === 'page') {\n throw Error('Smart Select requires initialized View');\n }\n return view;\n }\n checkMaxLength() {\n const ss = this;\n const $containerEl = ss.$containerEl;\n if (ss.selectEl.selectedOptions.length >= ss.maxLength) {\n $containerEl.find('input[type=\"checkbox\"]').each(inputEl => {\n if (!inputEl.checked) {\n $(inputEl).parents('li').addClass('disabled');\n } else {\n $(inputEl).parents('li').removeClass('disabled');\n }\n });\n } else {\n $containerEl.find('.disabled').removeClass('disabled');\n }\n }\n formatValueTextContent(values) {\n const ss = this;\n const valueFormatted = ss.formatValueText(values);\n if (valueFormatted.includes('<') && valueFormatted.includes('>')) {\n ss.$valueEl.html(valueFormatted);\n } else {\n ss.$valueEl.text(valueFormatted);\n }\n }\n formatValueText(values) {\n const ss = this;\n let textValue;\n if (ss.params.formatValueText) {\n textValue = ss.params.formatValueText.call(ss, values, ss);\n } else {\n textValue = values.join(', ');\n }\n return textValue;\n }\n setValueText(value) {\n const ss = this;\n let valueArray = [];\n if (typeof value !== 'undefined') {\n if (Array.isArray(value)) {\n valueArray = value;\n } else {\n valueArray = [value];\n }\n } else {\n ss.$selectEl.find('option').each(optionEl => {\n const $optionEl = $(optionEl);\n if (optionEl.selected) {\n const displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $optionEl.data('display-value-as');\n if (displayAs && typeof displayAs !== 'undefined') {\n valueArray.push(displayAs);\n } else {\n valueArray.push(optionEl.textContent.trim());\n }\n }\n });\n }\n if (ss.params.setValueText) {\n ss.formatValueTextContent(valueArray);\n }\n }\n getItemsData() {\n const ss = this;\n const theme = ss.app.theme;\n const items = [];\n let previousGroupEl;\n ss.$selectEl.find('option').each(optionEl => {\n const $optionEl = $(optionEl);\n const optionData = $optionEl.dataset();\n const optionImage = optionData.optionImage || ss.params.optionImage;\n const optionIcon = optionData.optionIcon || ss.params.optionIcon;\n const optionIconIos = theme === 'ios' && (optionData.optionIconIos || ss.params.optionIconIos);\n const optionIconMd = theme === 'md' && (optionData.optionIconMd || ss.params.optionIconMd);\n const optionInputIconPosition = optionData.inputIconPosition || ss.params.inputIconPosition || '';\n const optionHasMedia = optionImage || optionIcon || optionIconIos || optionIconMd;\n const optionColor = optionData.optionColor;\n let optionClassName = optionData.optionClass || '';\n if ($optionEl[0].disabled) optionClassName += ' disabled';\n const optionGroupEl = $optionEl.parent('optgroup')[0];\n const optionGroupLabel = optionGroupEl && optionGroupEl.label;\n let optionIsLabel = false;\n if (optionGroupEl && optionGroupEl !== previousGroupEl) {\n optionIsLabel = true;\n previousGroupEl = optionGroupEl;\n items.push({\n groupLabel: optionGroupLabel,\n isLabel: optionIsLabel\n });\n }\n items.push({\n value: $optionEl[0].value,\n text: $optionEl[0].textContent.trim(),\n selected: $optionEl[0].selected,\n groupEl: optionGroupEl,\n groupLabel: optionGroupLabel,\n image: optionImage,\n icon: optionIcon,\n iconIos: optionIconIos,\n iconMd: optionIconMd,\n inputIconPosition: optionInputIconPosition,\n color: optionColor,\n className: optionClassName,\n disabled: $optionEl[0].disabled,\n id: ss.id,\n hasMedia: optionHasMedia,\n checkbox: ss.inputType === 'checkbox',\n radio: ss.inputType === 'radio',\n inputName: ss.inputName,\n inputType: ss.inputType\n });\n });\n ss.items = items;\n return items;\n }\n renderSearchbar() {\n const ss = this;\n if (ss.params.renderSearchbar) return ss.params.renderSearchbar.call(ss);\n return $jsx(\"form\", {\n class: \"searchbar\"\n }, $jsx(\"div\", {\n class: \"searchbar-inner\"\n }, $jsx(\"div\", {\n class: \"searchbar-input-wrap\"\n }, $jsx(\"input\", {\n type: \"search\",\n spellcheck: ss.params.searchbarSpellcheck || 'false',\n placeholder: ss.params.searchbarPlaceholder\n }), $jsx(\"i\", {\n class: \"searchbar-icon\"\n }), $jsx(\"span\", {\n class: \"input-clear-button\"\n })), ss.params.searchbarDisableButton && $jsx(\"span\", {\n class: \"searchbar-disable-button\"\n }, ss.params.searchbarDisableText)));\n }\n renderItem(item, index) {\n const ss = this;\n if (ss.params.renderItem) return ss.params.renderItem.call(ss, item, index);\n function getIconContent(iconValue) {\n if (iconValue === void 0) {\n iconValue = '';\n }\n if (iconValue.indexOf(':') >= 0) {\n return iconValue.split(':')[1];\n }\n return '';\n }\n function getIconClass(iconValue) {\n if (iconValue === void 0) {\n iconValue = '';\n }\n if (iconValue.indexOf(':') >= 0) {\n let className = iconValue.split(':')[0];\n if (className === 'f7') className = 'f7-icons';\n if (className === 'material') className = 'material-icons';\n return className;\n }\n return iconValue;\n }\n let itemHtml;\n if (item.isLabel) {\n itemHtml = `
        • ${item.groupLabel}
        • `;\n } else {\n let selected = item.selected;\n let disabled;\n if (ss.params.virtualList) {\n const ssValue = ss.getValue();\n selected = ss.multiple ? ssValue.indexOf(item.value) >= 0 : ssValue === item.value;\n if (ss.multiple) {\n disabled = ss.multiple && !selected && ssValue.length === parseInt(ss.maxLength, 10);\n }\n }\n const {\n icon,\n iconIos,\n iconMd\n } = item;\n const hasIcon = icon || iconIos || iconMd;\n const iconContent = getIconContent(icon || iconIos || iconMd || '');\n const iconClass = getIconClass(icon || iconIos || iconMd || '');\n itemHtml = $jsx(\"li\", {\n class: `${item.className || ''}${disabled ? ' disabled' : ''}`\n }, $jsx(\"label\", {\n class: `item-${item.inputType} ${item.inputIconPosition ? `item-${item.inputType}-icon-${item.inputIconPosition}` : ''} item-content`\n }, $jsx(\"input\", {\n type: item.inputType,\n name: item.inputName,\n value: item.value,\n _checked: selected\n }), $jsx(\"i\", {\n class: `icon icon-${item.inputType}`\n }), item.hasMedia && $jsx(\"div\", {\n class: \"item-media\"\n }, hasIcon && $jsx(\"i\", {\n class: `icon ${iconClass}`\n }, iconContent), item.image && $jsx(\"img\", {\n src: item.image\n })), $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: `item-title${item.color ? ` text-color-${item.color}` : ''}`\n }, item.text))));\n }\n return itemHtml;\n }\n renderItems() {\n const ss = this;\n if (ss.params.renderItems) return ss.params.renderItems.call(ss, ss.items);\n const itemsHtml = `\n ${ss.items.map((item, index) => `${ss.renderItem(item, index)}`).join('')}\n `;\n return itemsHtml;\n }\n renderPage() {\n const ss = this;\n if (ss.params.renderPage) return ss.params.renderPage.call(ss, ss.items);\n let pageTitle = ss.params.pageTitle;\n if (typeof pageTitle === 'undefined') {\n const $itemTitleEl = ss.$el.find('.item-title');\n pageTitle = $itemTitleEl.length ? $itemTitleEl.text().trim() : '';\n }\n const cssClass = ss.params.cssClass;\n return $jsx(\"div\", {\n class: `page smart-select-page ${cssClass}`,\n \"data-name\": \"smart-select-page\",\n \"data-select-name\": ss.selectName\n }, $jsx(\"div\", {\n class: `navbar ${ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''}`\n }, $jsx(\"div\", {\n class: \"navbar-bg\"\n }), $jsx(\"div\", {\n class: `navbar-inner sliding ${ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''}`\n }, $jsx(\"div\", {\n class: \"left\"\n }, $jsx(\"a\", {\n class: \"link back\"\n }, $jsx(\"i\", {\n class: \"icon icon-back\"\n }), $jsx(\"span\", {\n class: \"if-not-md\"\n }, ss.params.pageBackLinkText))), pageTitle && $jsx(\"div\", {\n class: \"title\"\n }, pageTitle), ss.params.searchbar && $jsx(\"div\", {\n class: \"subnavbar\"\n }, ss.renderSearchbar()))), ss.params.searchbar && $jsx(\"div\", {\n class: \"searchbar-backdrop\"\n }), $jsx(\"div\", {\n class: \"page-content\"\n }, $jsx(\"div\", {\n class: `list list-outline-ios list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`\n }, $jsx(\"ul\", null, !ss.params.virtualList && ss.renderItems(ss.items)))));\n }\n renderPopup() {\n const ss = this;\n if (ss.params.renderPopup) return ss.params.renderPopup.call(ss, ss.items);\n let pageTitle = ss.params.pageTitle;\n if (typeof pageTitle === 'undefined') {\n const $itemTitleEl = ss.$el.find('.item-title');\n pageTitle = $itemTitleEl.length ? $itemTitleEl.text().trim() : '';\n }\n const cssClass = ss.params.cssClass || '';\n return $jsx(\"div\", {\n class: `popup smart-select-popup ${cssClass} ${ss.params.popupTabletFullscreen ? 'popup-tablet-fullscreen' : ''}`,\n \"data-select-name\": ss.selectName\n }, $jsx(\"div\", {\n class: \"view\"\n }, $jsx(\"div\", {\n class: `page smart-select-page ${ss.params.searchbar ? 'page-with-subnavbar' : ''}`,\n \"data-name\": \"smart-select-page\"\n }, $jsx(\"div\", {\n class: `navbar ${ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''}`\n }, $jsx(\"div\", {\n class: \"navbar-bg\"\n }), $jsx(\"div\", {\n class: \"navbar-inner sliding\"\n }, pageTitle && $jsx(\"div\", {\n class: \"title\"\n }, pageTitle), $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link popup-close\",\n \"data-popup\": `.smart-select-popup[data-select-name='${ss.selectName}']`\n }, ss.params.popupCloseLinkText)), ss.params.searchbar && $jsx(\"div\", {\n class: \"subnavbar\"\n }, ss.renderSearchbar()))), ss.params.searchbar && $jsx(\"div\", {\n class: \"searchbar-backdrop\"\n }), $jsx(\"div\", {\n class: \"page-content\"\n }, $jsx(\"div\", {\n class: `list list-outline-ios list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`\n }, $jsx(\"ul\", null, !ss.params.virtualList && ss.renderItems(ss.items)))))));\n }\n renderSheet() {\n const ss = this;\n if (ss.params.renderSheet) return ss.params.renderSheet.call(ss, ss.items);\n const cssClass = ss.params.cssClass;\n // prettier-ignore\n return $jsx(\"div\", {\n class: `sheet-modal smart-select-sheet ${cssClass}`,\n \"data-select-name\": ss.selectName\n }, $jsx(\"div\", {\n class: `toolbar toolbar-top ${ss.params.toolbarColorTheme ? `color-${ss.params.toolbarColorTheme}` : ''}`\n }, $jsx(\"div\", {\n class: \"toolbar-inner\"\n }, $jsx(\"div\", {\n class: \"left\"\n }), $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link sheet-close\"\n }, ss.params.sheetCloseLinkText)))), $jsx(\"div\", {\n class: \"sheet-modal-inner\"\n }, $jsx(\"div\", {\n class: \"page-content\"\n }, $jsx(\"div\", {\n class: `list list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`\n }, $jsx(\"ul\", null, !ss.params.virtualList && ss.renderItems(ss.items))))));\n }\n renderPopover() {\n const ss = this;\n if (ss.params.renderPopover) return ss.params.renderPopover.call(ss, ss.items);\n const cssClass = ss.params.cssClass;\n // prettier-ignore\n return $jsx(\"div\", {\n class: `popover smart-select-popover ${cssClass}`,\n \"data-select-name\": ss.selectName\n }, $jsx(\"div\", {\n class: \"popover-inner\"\n }, $jsx(\"div\", {\n class: `list list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`\n }, $jsx(\"ul\", null, !ss.params.virtualList && ss.renderItems(ss.items)))));\n }\n scrollToSelectedItem() {\n const ss = this;\n const {\n params,\n $containerEl\n } = ss;\n if (!ss.opened) return ss;\n if (params.virtualList) {\n let selectedIndex;\n ss.vl.items.forEach((item, index) => {\n if (typeof selectedIndex === 'undefined' && item.selected) {\n selectedIndex = index;\n }\n });\n if (typeof selectedIndex !== 'undefined') {\n ss.vl.scrollToItem(selectedIndex);\n }\n } else {\n const $selectedItemEl = $containerEl.find('input:checked').parents('li');\n if (!$selectedItemEl.length) return ss;\n const $scrollableEl = $containerEl.find('.page-content, .popover-inner');\n if (!$scrollableEl.length) return ss;\n $scrollableEl.scrollTop($selectedItemEl.offset().top - $scrollableEl.offset().top - parseInt($scrollableEl.css('padding-top'), 10));\n }\n return ss;\n }\n onOpen(type, containerEl) {\n const ss = this;\n const app = ss.app;\n const $containerEl = $(containerEl);\n ss.$containerEl = $containerEl;\n ss.openedIn = type;\n ss.opened = true;\n\n // Init VL\n if (ss.params.virtualList) {\n ss.vl = app.virtualList.create({\n el: $containerEl.find('.virtual-list'),\n items: ss.items,\n renderItem: ss.renderItem.bind(ss),\n height: ss.params.virtualListHeight,\n searchByItem(query, item) {\n if (item.text && removeDiacritics(item.text).toLowerCase().indexOf(query.trim().toLowerCase()) >= 0) return true;\n return false;\n }\n });\n }\n if (ss.params.scrollToSelectedItem) {\n ss.scrollToSelectedItem();\n }\n\n // Init SB\n if (ss.params.searchbar) {\n let $searchbarEl = $containerEl.find('.searchbar');\n if (type === 'page' && app.theme === 'ios') {\n $searchbarEl = $(app.navbar.getElByPage($containerEl)).find('.searchbar');\n }\n if (ss.params.appendSearchbarNotFound && (type === 'page' || type === 'popup')) {\n let $notFoundEl = null;\n if (typeof ss.params.appendSearchbarNotFound === 'string') {\n $notFoundEl = $(`
          ${ss.params.appendSearchbarNotFound}
          `);\n } else if (typeof ss.params.appendSearchbarNotFound === 'boolean') {\n $notFoundEl = $('
          Nothing found
          ');\n } else {\n $notFoundEl = ss.params.appendSearchbarNotFound;\n }\n if ($notFoundEl) {\n $containerEl.find('.page-content').append($notFoundEl[0]);\n }\n }\n const searchbarParams = extend({\n el: $searchbarEl,\n backdropEl: $containerEl.find('.searchbar-backdrop'),\n searchContainer: `.smart-select-list-${ss.id}`,\n searchIn: '.item-title'\n }, typeof ss.params.searchbar === 'object' ? ss.params.searchbar : {});\n ss.searchbar = app.searchbar.create(searchbarParams);\n }\n\n // Check for max length\n if (ss.maxLength) {\n ss.checkMaxLength();\n }\n\n // Close on select\n if (ss.params.closeOnSelect) {\n ss.$containerEl.find(`input[type=\"radio\"][name=\"${ss.inputName}\"]:checked`).parents('label').once('click', () => {\n ss.close();\n });\n }\n\n // Attach input events\n ss.attachInputsEvents();\n ss.$el.trigger('smartselect:open');\n ss.emit('local::open smartSelectOpen', ss);\n }\n onOpened() {\n const ss = this;\n ss.$el.trigger('smartselect:opened');\n ss.emit('local::opened smartSelectOpened', ss);\n }\n onClose() {\n const ss = this;\n if (ss.destroyed) return;\n\n // Destroy VL\n if (ss.vl && ss.vl.destroy) {\n ss.vl.destroy();\n ss.vl = null;\n delete ss.vl;\n }\n\n // Destroy SB\n if (ss.searchbar && ss.searchbar.destroy) {\n ss.searchbar.destroy();\n ss.searchbar = null;\n delete ss.searchbar;\n }\n // Detach events\n ss.detachInputsEvents();\n ss.$el.trigger('smartselect:close');\n ss.emit('local::close smartSelectClose', ss);\n }\n onClosed() {\n const ss = this;\n if (ss.destroyed) return;\n ss.opened = false;\n ss.$containerEl = null;\n delete ss.$containerEl;\n ss.$el.trigger('smartselect:closed');\n ss.emit('local::closed smartSelectClosed', ss);\n }\n openPage() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const pageHtml = ss.renderPage(ss.items);\n ss.view.router.navigate({\n url: ss.url,\n route: {\n content: pageHtml,\n path: ss.url,\n on: {\n pageBeforeIn(e, page) {\n ss.onOpen('page', page.el);\n },\n pageAfterIn(e, page) {\n ss.onOpened('page', page.el);\n },\n pageBeforeOut(e, page) {\n ss.onClose('page', page.el);\n },\n pageAfterOut(e, page) {\n ss.onClosed('page', page.el);\n }\n }\n }\n });\n return ss;\n }\n openPopup() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const popupHtml = ss.renderPopup(ss.items);\n const popupParams = {\n content: popupHtml,\n push: ss.params.popupPush,\n swipeToClose: ss.params.popupSwipeToClose,\n closeByBackdropClick: ss.params.closeByBackdropClick,\n on: {\n popupOpen(popup) {\n ss.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n ss.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n ss.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n ss.onClosed('popup', popup.el);\n }\n }\n };\n if (ss.params.routableModals && ss.view) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n popup: popupParams\n }\n });\n } else {\n ss.modal = ss.app.popup.create(popupParams).open();\n }\n return ss;\n }\n openSheet() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const sheetHtml = ss.renderSheet(ss.items);\n const sheetParams = {\n content: sheetHtml,\n backdrop: ss.params.sheetBackdrop,\n scrollToEl: ss.$el,\n closeByOutsideClick: true,\n push: ss.params.sheetPush,\n swipeToClose: ss.params.sheetSwipeToClose,\n closeByBackdropClick: ss.params.closeByBackdropClick,\n on: {\n sheetOpen(sheet) {\n ss.onOpen('sheet', sheet.el);\n },\n sheetOpened(sheet) {\n ss.onOpened('sheet', sheet.el);\n },\n sheetClose(sheet) {\n ss.onClose('sheet', sheet.el);\n },\n sheetClosed(sheet) {\n ss.onClosed('sheet', sheet.el);\n }\n }\n };\n if (ss.params.routableModals && ss.view) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n sheet: sheetParams\n }\n });\n } else {\n ss.modal = ss.app.sheet.create(sheetParams).open();\n }\n return ss;\n }\n openPopover() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const popoverHtml = ss.renderPopover(ss.items);\n const popoverParams = {\n content: popoverHtml,\n targetEl: ss.$el,\n closeByBackdropClick: ss.params.closeByBackdropClick,\n on: {\n popoverOpen(popover) {\n ss.onOpen('popover', popover.el);\n },\n popoverOpened(popover) {\n ss.onOpened('popover', popover.el);\n },\n popoverClose(popover) {\n ss.onClose('popover', popover.el);\n },\n popoverClosed(popover) {\n ss.onClosed('popover', popover.el);\n }\n }\n };\n if (ss.params.routableModals && ss.view) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n popover: popoverParams\n }\n });\n } else {\n ss.modal = ss.app.popover.create(popoverParams).open();\n }\n return ss;\n }\n open(type) {\n const ss = this;\n if (ss.opened) return ss;\n let prevented = false;\n function prevent() {\n prevented = true;\n }\n if (ss.$el) {\n ss.$el.trigger('smartselect:beforeopen', {\n prevent\n });\n }\n ss.emit('local::beforeOpen smartSelectBeforeOpen', ss, prevent);\n if (prevented) return ss;\n const openIn = type || ss.params.openIn;\n ss[`open${openIn.split('').map((el, index) => {\n if (index === 0) return el.toUpperCase();\n return el;\n }).join('')}`]();\n return ss;\n }\n close() {\n const ss = this;\n if (!ss.opened) return ss;\n if (ss.params.routableModals && ss.view || ss.openedIn === 'page') {\n ss.view.router.back();\n } else {\n ss.modal.once('modalClosed', () => {\n nextTick(() => {\n if (ss.destroyed) return;\n ss.modal.destroy();\n delete ss.modal;\n });\n });\n ss.modal.close();\n }\n return ss;\n }\n init() {\n const ss = this;\n ss.attachEvents();\n ss.setValueText();\n }\n destroy() {\n const ss = this;\n ss.emit('local::beforeDestroy smartSelectBeforeDestroy', ss);\n ss.$el.trigger('smartselect:beforedestroy');\n ss.detachEvents();\n delete ss.$el[0].f7SmartSelect;\n deleteProps(ss);\n ss.destroyed = true;\n }\n}\nexport default SmartSelect;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport SmartSelect from './smart-select-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'smartSelect',\n params: {\n smartSelect: {\n el: undefined,\n valueEl: undefined,\n setValueText: true,\n formatValueText: null,\n openIn: 'page',\n // or 'popup' or 'sheet' or 'popover'\n popupPush: false,\n popupSwipeToClose: undefined,\n // defaults to app\n sheetPush: false,\n sheetSwipeToClose: undefined,\n // defaults to app\n sheetBackdrop: false,\n pageTitle: undefined,\n pageBackLinkText: 'Back',\n popupCloseLinkText: 'Close',\n popupTabletFullscreen: false,\n closeByBackdropClick: true,\n sheetCloseLinkText: 'Done',\n searchbar: false,\n searchbarPlaceholder: 'Search',\n searchbarDisableText: 'Cancel',\n searchbarDisableButton: true,\n searchbarSpellcheck: false,\n closeOnSelect: false,\n virtualList: false,\n virtualListHeight: undefined,\n scrollToSelectedItem: false,\n formColorTheme: undefined,\n navbarColorTheme: undefined,\n routableModals: false,\n url: 'select/',\n inputIconPosition: 'start',\n cssClass: '',\n /*\n Custom render functions\n */\n renderPage: undefined,\n renderPopup: undefined,\n renderSheet: undefined,\n renderPopover: undefined,\n renderItems: undefined,\n renderItem: undefined,\n renderSearchbar: undefined\n }\n },\n static: {\n SmartSelect\n },\n create() {\n const app = this;\n app.smartSelect = extend(ConstructorMethods({\n defaultSelector: '.smart-select',\n constructor: SmartSelect,\n app,\n domProp: 'f7SmartSelect'\n }), {\n open(smartSelectEl) {\n const ss = app.smartSelect.get(smartSelectEl);\n if (ss && ss.open) return ss.open();\n return undefined;\n },\n close(smartSelectEl) {\n const ss = app.smartSelect.get(smartSelectEl);\n if (ss && ss.close) return ss.close();\n return undefined;\n }\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.smart-select-init').each(smartSelectEl => {\n app.smartSelect.create(extend({\n el: smartSelectEl\n }, $(smartSelectEl).dataset()));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.smart-select-init').each(smartSelectEl => {\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.smart-select-init').each(smartSelectEl => {\n app.smartSelect.create(extend({\n el: smartSelectEl\n }, $(smartSelectEl).dataset()));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.smart-select-init').each(smartSelectEl => {\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n });\n }\n },\n clicks: {\n '.smart-select': function open($clickedEl, data) {\n const app = this;\n if (!$clickedEl[0].f7SmartSelect) {\n const ss = app.smartSelect.create(extend({\n el: $clickedEl\n }, data));\n ss.open();\n }\n }\n },\n vnode: {\n 'smart-select-init': {\n insert(vnode) {\n const app = this;\n const smartSelectEl = vnode.elm;\n app.smartSelect.create(extend({\n el: smartSelectEl\n }, $(smartSelectEl).dataset()));\n },\n destroy(vnode) {\n const smartSelectEl = vnode.elm;\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n }\n }\n }\n};","import { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport $ from '../../shared/dom7.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { getSupport } from '../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Calendar extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const calendar = this;\n calendar.params = extend({}, app.params.calendar, params);\n let $containerEl;\n if (calendar.params.containerEl) {\n $containerEl = $(calendar.params.containerEl);\n if ($containerEl.length === 0) return calendar;\n }\n let $inputEl;\n if (calendar.params.inputEl) {\n $inputEl = $(calendar.params.inputEl);\n }\n const isHorizontal = calendar.params.direction === 'horizontal';\n let inverter = 1;\n if (isHorizontal) {\n inverter = app.rtl ? -1 : 1;\n }\n extend(calendar, {\n app,\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n initialized: false,\n opened: false,\n url: calendar.params.url,\n isHorizontal,\n inverter,\n animating: false,\n allowTouchMove: true,\n hasTimePicker: calendar.params.timePicker && !calendar.params.rangePicker && !calendar.params.multiple\n });\n calendar.dayFormatter = date => {\n const formatter = new Intl.DateTimeFormat(calendar.params.locale, {\n day: 'numeric'\n });\n return formatter.format(date).replace(/日/, '');\n };\n calendar.monthFormatter = date => {\n const formatter = new Intl.DateTimeFormat(calendar.params.locale, {\n month: 'long'\n });\n return formatter.format(date);\n };\n calendar.yearFormatter = date => {\n const formatter = new Intl.DateTimeFormat(calendar.params.locale, {\n year: 'numeric'\n });\n return formatter.format(date);\n };\n calendar.timeSelectorFormatter = date => {\n const formatter = new Intl.DateTimeFormat(calendar.params.locale, calendar.params.timePickerFormat);\n return formatter.format(date);\n };\n const timeFormatCheckDate = calendar.timeSelectorFormatter(new Date()).toLowerCase();\n calendar.is12HoursFormat = timeFormatCheckDate.indexOf('pm') >= 0 || timeFormatCheckDate.indexOf('am') >= 0;\n\n // Auto names\n let {\n monthNames,\n monthNamesShort,\n dayNames,\n dayNamesShort\n } = calendar.params;\n const {\n monthNamesIntl,\n monthNamesShortIntl,\n dayNamesIntl,\n dayNamesShortIntl\n } = calendar.getIntlNames();\n if (monthNames === 'auto') monthNames = monthNamesIntl;\n if (monthNamesShort === 'auto') monthNamesShort = monthNamesShortIntl;\n if (dayNames === 'auto') dayNames = dayNamesIntl;\n if (dayNamesShort === 'auto') dayNamesShort = dayNamesShortIntl;\n extend(calendar, {\n monthNames,\n monthNamesShort,\n dayNames,\n dayNamesShort\n });\n function onInputClick() {\n calendar.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n function onInputClear() {\n calendar.setValue([]);\n if (calendar.opened) {\n calendar.update();\n }\n }\n function onHtmlClick(e) {\n const $targetEl = $(e.target);\n if (calendar.destroyed || !calendar.params) return;\n if (calendar.isPopover()) return;\n if (!calendar.opened || calendar.closing) return;\n if ($targetEl.closest('[class*=\"backdrop\"]').length) return;\n if (calendar.monthPickerPopover || calendar.yearPickerPopover || calendar.timePickerPopover) return;\n if ($inputEl && $inputEl.length > 0) {\n if ($targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal, .calendar-modal').length === 0) {\n calendar.close();\n }\n } else if ($(e.target).closest('.sheet-modal, .calendar-modal').length === 0) {\n calendar.close();\n }\n }\n\n // Events\n extend(calendar, {\n attachInputEvents() {\n calendar.$inputEl.on('click', onInputClick);\n calendar.$inputEl.on('input:clear', onInputClear);\n if (calendar.params.inputReadOnly) {\n calendar.$inputEl.on('focus mousedown', onInputFocus);\n if (calendar.$inputEl[0]) {\n calendar.$inputEl[0].f7ValidateReadonly = true;\n }\n }\n },\n detachInputEvents() {\n calendar.$inputEl.off('click', onInputClick);\n calendar.$inputEl.off('input:clear', onInputClear);\n if (calendar.params.inputReadOnly) {\n calendar.$inputEl.off('focus mousedown', onInputFocus);\n if (calendar.$inputEl[0]) {\n delete calendar.$inputEl[0].f7ValidateReadonly;\n }\n }\n },\n attachHtmlEvents() {\n app.on('click', onHtmlClick);\n },\n detachHtmlEvents() {\n app.off('click', onHtmlClick);\n }\n });\n calendar.attachCalendarEvents = function attachCalendarEvents() {\n let allowItemClick = true;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n let touchStartTime;\n let touchEndTime;\n let currentTranslate;\n let wrapperWidth;\n let wrapperHeight;\n let percentage;\n let touchesDiff;\n let isScrolling;\n const {\n $el,\n $wrapperEl\n } = calendar;\n function handleTouchStart(e) {\n if (isMoved || isTouched || !e.isTrusted) return;\n isTouched = true;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n touchStartTime = new Date().getTime();\n percentage = 0;\n allowItemClick = true;\n isScrolling = undefined;\n currentTranslate = calendar.monthsTranslate;\n }\n function handleTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n const {\n isHorizontal: isH\n } = calendar;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX));\n }\n if (isH && isScrolling || !calendar.allowTouchMove) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n if (calendar.animating) {\n isTouched = false;\n return;\n }\n allowItemClick = false;\n if (!isMoved) {\n // First move\n isMoved = true;\n wrapperWidth = $wrapperEl[0].offsetWidth;\n wrapperHeight = $wrapperEl[0].offsetHeight;\n $wrapperEl.transition(0);\n }\n touchesDiff = isH ? touchCurrentX - touchStartX : touchCurrentY - touchStartY;\n percentage = touchesDiff / (isH ? wrapperWidth : wrapperHeight);\n currentTranslate = (calendar.monthsTranslate * calendar.inverter + percentage) * 100;\n\n // Transform wrapper\n $wrapperEl.transform(`translate3d(${isH ? currentTranslate : 0}%, ${isH ? 0 : currentTranslate}%, 0)`);\n }\n function handleTouchEnd(e) {\n if (!isTouched || !isMoved || !e.isTrusted) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n touchEndTime = new Date().getTime();\n if (touchEndTime - touchStartTime < 300) {\n if (Math.abs(touchesDiff) < 10) {\n calendar.resetMonth();\n } else if (touchesDiff >= 10) {\n if (app.rtl) calendar.nextMonth();else calendar.prevMonth();\n } else if (app.rtl) calendar.prevMonth();else calendar.nextMonth();\n } else if (percentage <= -0.5) {\n if (app.rtl) calendar.prevMonth();else calendar.nextMonth();\n } else if (percentage >= 0.5) {\n if (app.rtl) calendar.nextMonth();else calendar.prevMonth();\n } else {\n calendar.resetMonth();\n }\n\n // Allow click\n setTimeout(() => {\n allowItemClick = true;\n }, 100);\n }\n function handleDayClick(e) {\n if (!allowItemClick) return;\n let $dayEl = $(e.target).parents('.calendar-day');\n if ($dayEl.length === 0 && $(e.target).hasClass('calendar-day')) {\n $dayEl = $(e.target);\n }\n if ($dayEl.length === 0) return;\n if ($dayEl.hasClass('calendar-day-disabled')) return;\n if (!calendar.params.rangePicker) {\n if ($dayEl.hasClass('calendar-day-next')) calendar.nextMonth();\n if ($dayEl.hasClass('calendar-day-prev')) calendar.prevMonth();\n }\n const dateYear = parseInt($dayEl.attr('data-year'), 10);\n const dateMonth = parseInt($dayEl.attr('data-month'), 10);\n const dateDay = parseInt($dayEl.attr('data-day'), 10);\n calendar.emit('local::dayClick calendarDayClick', calendar, $dayEl[0], dateYear, dateMonth, dateDay);\n if (!$dayEl.hasClass('calendar-day-selected') || calendar.params.multiple || calendar.params.rangePicker) {\n const valueToAdd = new Date(dateYear, dateMonth, dateDay, 0, 0, 0);\n if (calendar.hasTimePicker) {\n if (calendar.value && calendar.value[0]) {\n valueToAdd.setHours(calendar.value[0].getHours(), calendar.value[0].getMinutes());\n } else {\n valueToAdd.setHours(new Date().getHours(), new Date().getMinutes());\n }\n }\n calendar.addValue(valueToAdd);\n }\n if (calendar.params.closeOnSelect) {\n if (calendar.params.rangePicker && calendar.value.length === 2 || !calendar.params.rangePicker) {\n calendar.close();\n }\n }\n }\n function onNextMonthClick() {\n calendar.nextMonth();\n }\n function onPrevMonthClick() {\n calendar.prevMonth();\n }\n function onNextYearClick() {\n calendar.nextYear();\n }\n function onPrevYearClick() {\n calendar.prevYear();\n }\n function onMonthSelectorClick() {\n calendar.openMonthPicker();\n }\n function onYearSelectorClick() {\n calendar.openYearPicker();\n }\n function onTimeSelectorClick() {\n calendar.openTimePicker();\n }\n const passiveListener = app.touchEvents.start === 'touchstart' && getSupport().passiveListener ? {\n passive: true,\n capture: false\n } : false;\n // Selectors clicks\n $el.find('.calendar-prev-month-button').on('click', onPrevMonthClick);\n $el.find('.calendar-next-month-button').on('click', onNextMonthClick);\n $el.find('.calendar-prev-year-button').on('click', onPrevYearClick);\n $el.find('.calendar-next-year-button').on('click', onNextYearClick);\n if (calendar.params.monthPicker) {\n $el.find('.current-month-value').on('click', onMonthSelectorClick);\n }\n if (calendar.params.yearPicker) {\n $el.find('.current-year-value').on('click', onYearSelectorClick);\n }\n if (calendar.hasTimePicker) {\n $el.find('.calendar-time-selector a').on('click', onTimeSelectorClick);\n }\n // Day clicks\n $wrapperEl.on('click', handleDayClick);\n // Touch events\n if (calendar.params.touchMove) {\n $wrapperEl.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n calendar.detachCalendarEvents = function detachCalendarEvents() {\n $el.find('.calendar-prev-month-button').off('click', onPrevMonthClick);\n $el.find('.calendar-next-month-button').off('click', onNextMonthClick);\n $el.find('.calendar-prev-year-button').off('click', onPrevYearClick);\n $el.find('.calendar-next-year-button').off('click', onNextYearClick);\n if (calendar.params.monthPicker) {\n $el.find('.current-month-value').off('click', onMonthSelectorClick);\n }\n if (calendar.params.yearPicker) {\n $el.find('.current-year-value').off('click', onYearSelectorClick);\n }\n if (calendar.hasTimePicker) {\n $el.find('.calendar-time-selector a').off('click', onTimeSelectorClick);\n }\n $wrapperEl.off('click', handleDayClick);\n if (calendar.params.touchMove) {\n $wrapperEl.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n };\n };\n calendar.init();\n return calendar;\n }\n get view() {\n const {\n $inputEl,\n app,\n params\n } = this;\n let view;\n if (params.view) {\n view = params.view;\n } else if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view) view = app.views.main;\n return view;\n }\n getIntlNames() {\n const calendar = this;\n const locale = calendar.params.locale;\n const monthNamesIntl = [];\n const monthNamesShortIntl = [];\n const dayNamesIntl = [];\n const dayNamesShortIntl = [];\n const formatterMonthNames = new Intl.DateTimeFormat(locale, {\n month: 'long'\n });\n const formatterMonthNamesShort = new Intl.DateTimeFormat(locale, {\n month: 'short'\n });\n const formatterDayNames = new Intl.DateTimeFormat(locale, {\n weekday: 'long'\n });\n const formatterDayNamesShort = new Intl.DateTimeFormat(locale, {\n weekday: 'short'\n });\n let year;\n let yearStarted;\n let yearEnded;\n for (let i = 0; i < 24; i += 1) {\n const date = new Date().setMonth(i, 1);\n const currentYear = calendar.yearFormatter(date);\n if (year && currentYear !== year) {\n if (yearStarted) yearEnded = true;\n yearStarted = true;\n year = currentYear;\n }\n if (!year) {\n year = currentYear;\n }\n if (yearStarted && year === currentYear && !yearEnded) {\n monthNamesIntl.push(formatterMonthNames.format(date));\n monthNamesShortIntl.push(formatterMonthNamesShort.format(date));\n }\n }\n const weekDay = new Date().getDay();\n for (let i = 0; i < 7; i += 1) {\n const date = new Date().getTime() + (i - weekDay) * 24 * 60 * 60 * 1000;\n dayNamesIntl.push(formatterDayNames.format(date));\n dayNamesShortIntl.push(formatterDayNamesShort.format(date));\n }\n return {\n monthNamesIntl,\n monthNamesShortIntl,\n dayNamesIntl,\n dayNamesShortIntl\n };\n }\n normalizeDate(date) {\n const calendar = this;\n const d = new Date(date);\n if (calendar.hasTimePicker) {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes());\n }\n return new Date(d.getFullYear(), d.getMonth(), d.getDate());\n }\n normalizeValues(values) {\n const calendar = this;\n let newValues = [];\n if (values && Array.isArray(values)) {\n newValues = values.map(val => calendar.normalizeDate(val));\n }\n return newValues;\n }\n initInput() {\n const calendar = this;\n if (!calendar.$inputEl) return;\n if (calendar.params.inputReadOnly) calendar.$inputEl.prop('readOnly', true);\n }\n isPopover() {\n const calendar = this;\n const {\n app,\n modal,\n params\n } = calendar;\n const device = getDevice();\n if (params.openIn === 'sheet') return false;\n if (modal && modal.type !== 'popover') return false;\n if (!calendar.inline && calendar.inputEl) {\n if (params.openIn === 'popover') return true;\n if (device.ios) {\n return !!device.ipad;\n }\n if (app.width >= 768) {\n return true;\n }\n }\n return false;\n }\n formatDate(d) {\n const calendar = this;\n const date = new Date(d);\n const year = date.getFullYear();\n const month = date.getMonth();\n const month1 = month + 1;\n const day = date.getDate();\n const weekDay = date.getDay();\n const {\n monthNames,\n monthNamesShort,\n dayNames,\n dayNamesShort\n } = calendar;\n const {\n dateFormat,\n locale\n } = calendar.params;\n function twoDigits(number) {\n return number < 10 ? `0${number}` : number;\n }\n if (typeof dateFormat === 'string') {\n const tokens = {\n yyyy: year,\n yy: String(year).substring(2),\n mm: twoDigits(month1),\n m: month1,\n MM: monthNames[month],\n M: monthNamesShort[month],\n dd: twoDigits(day),\n d: day,\n DD: dayNames[weekDay],\n D: dayNamesShort[weekDay]\n };\n if (calendar.params.timePicker) {\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n let hours12 = hours;\n if (hours > 12) hours12 = hours - 12;\n if (hours === 0) hours12 = 12;\n const a = hours >= 12 && hours !== 0 ? 'pm' : 'am';\n Object.assign(tokens, {\n HH: twoDigits(hours),\n H: hours,\n hh: twoDigits(hours12),\n h: hours12,\n ss: twoDigits(seconds),\n s: seconds,\n ':mm': twoDigits(minutes),\n ':m': minutes,\n a,\n A: a.toUpperCase()\n });\n }\n const regexp = new RegExp(Object.keys(tokens).map(t => `(${t})`).join('|'), 'g');\n return dateFormat.replace(regexp, token => {\n if (token in tokens) return tokens[token];\n return token;\n });\n }\n if (typeof dateFormat === 'function') {\n return dateFormat(date);\n }\n // Intl Object\n const formatter = new Intl.DateTimeFormat(locale, dateFormat);\n return formatter.format(date);\n }\n formatValue() {\n const calendar = this;\n const {\n value\n } = calendar;\n if (calendar.params.formatValue) {\n return calendar.params.formatValue.call(calendar, value);\n }\n return value.map(v => calendar.formatDate(v)).join(calendar.params.rangePicker ? ' - ' : ', ');\n }\n addValue(newValue) {\n const calendar = this;\n const {\n multiple,\n rangePicker,\n rangePickerMinDays,\n rangePickerMaxDays\n } = calendar.params;\n if (multiple) {\n if (!calendar.value) calendar.value = [];\n let inValuesIndex;\n for (let i = 0; i < calendar.value.length; i += 1) {\n if (new Date(newValue).getTime() === new Date(calendar.value[i]).getTime()) {\n inValuesIndex = i;\n }\n }\n if (typeof inValuesIndex === 'undefined') {\n calendar.value.push(newValue);\n } else {\n calendar.value.splice(inValuesIndex, 1);\n }\n calendar.updateValue();\n } else if (rangePicker) {\n if (!calendar.value) calendar.value = [];\n if (calendar.value.length === 2 || calendar.value.length === 0) {\n calendar.value = [];\n }\n if (calendar.value.length === 0 || Math.abs(calendar.value[0].getTime() - newValue.getTime()) >= (rangePickerMinDays - 1) * 60 * 60 * 24 * 1000 && (rangePickerMaxDays === 0 || Math.abs(calendar.value[0].getTime() - newValue.getTime()) <= (rangePickerMaxDays - 1) * 60 * 60 * 24 * 1000)) calendar.value.push(newValue);else calendar.value = [];\n calendar.value.sort((a, b) => a - b);\n calendar.updateValue();\n } else {\n calendar.value = [newValue];\n calendar.updateValue();\n }\n }\n setValue(values) {\n const calendar = this;\n const currentValue = calendar.value;\n if (Array.isArray(currentValue) && Array.isArray(values) && currentValue.length === values.length) {\n let equal = true;\n currentValue.forEach((v, index) => {\n if (v !== values[index]) equal = false;\n });\n if (equal) return;\n }\n calendar.value = values;\n calendar.updateValue();\n }\n getValue() {\n const calendar = this;\n return calendar.value;\n }\n updateValue(onlyHeader) {\n const calendar = this;\n const {\n $el,\n $wrapperEl,\n $inputEl,\n value,\n params\n } = calendar;\n let i;\n if ($el && $el.length > 0) {\n $wrapperEl.find('.calendar-day-selected').removeClass('calendar-day-selected calendar-day-selected-range calendar-day-selected-left calendar-day-selected-right');\n let valueDate;\n if (params.rangePicker && value.length === 2) {\n const leftDate = new Date(value[0]).getTime();\n const rightDate = new Date(value[1]).getTime();\n for (i = leftDate; i <= rightDate; i += 24 * 60 * 60 * 1000) {\n valueDate = new Date(i);\n let addClass = 'calendar-day-selected';\n if (leftDate !== rightDate) {\n if (i !== leftDate && i !== rightDate) {\n addClass += ' calendar-day-selected-range';\n }\n if (i === leftDate) {\n addClass += ' calendar-day-selected-left';\n }\n if (i === rightDate) {\n addClass += ' calendar-day-selected-right';\n }\n }\n $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).addClass(addClass);\n }\n valueDate = new Date(leftDate);\n $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).removeClass('calendar-day-selected-range').addClass('calendar-day-selected calendar-day-selected-left');\n valueDate = new Date(rightDate);\n $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).removeClass('calendar-day-selected-range').addClass('calendar-day-selected calendar-day-selected-right');\n } else {\n for (i = 0; i < calendar.value.length; i += 1) {\n valueDate = new Date(value[i]);\n $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).addClass('calendar-day-selected');\n }\n }\n }\n if (!onlyHeader) {\n calendar.emit('local::change calendarChange', calendar, value);\n }\n if ($el && $el.length > 0 && calendar.hasTimePicker) {\n $el.find('.calendar-time-selector a').text(value && value.length ? calendar.timeSelectorFormatter(value[0]) : calendar.params.timePickerPlaceholder);\n }\n if ($inputEl && $inputEl.length || params.header) {\n const inputValue = calendar.formatValue(value);\n if (params.header && $el && $el.length) {\n $el.find('.calendar-selected-date').text(inputValue);\n }\n if ($inputEl && $inputEl.length && !onlyHeader) {\n $inputEl.val(inputValue);\n $inputEl.trigger('change');\n }\n }\n }\n updateCurrentMonthYear(dir) {\n const calendar = this;\n const {\n $months,\n $el,\n monthNames\n } = calendar;\n let currentLocaleMonth;\n let currentLocaleYear;\n if (typeof dir === 'undefined') {\n calendar.currentMonth = parseInt($months.eq(1).attr('data-month'), 10);\n calendar.currentYear = parseInt($months.eq(1).attr('data-year'), 10);\n currentLocaleMonth = $months.eq(1).attr('data-locale-month');\n currentLocaleYear = $months.eq(1).attr('data-locale-year');\n } else {\n calendar.currentMonth = parseInt($months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-month'), 10);\n calendar.currentYear = parseInt($months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-year'), 10);\n currentLocaleMonth = $months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-locale-month');\n currentLocaleYear = $months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-locale-year');\n }\n $el.find('.current-month-value').text(monthNames[currentLocaleMonth]);\n $el.find('.current-year-value').text(currentLocaleYear);\n }\n update() {\n const calendar = this;\n const {\n currentYear,\n currentMonth,\n $wrapperEl\n } = calendar;\n const currentDate = new Date(currentYear, currentMonth);\n const prevMonthHtml = calendar.renderMonth(currentDate, 'prev');\n const currentMonthHtml = calendar.renderMonth(currentDate);\n const nextMonthHtml = calendar.renderMonth(currentDate, 'next');\n $wrapperEl.transition(0).html(`${prevMonthHtml}${currentMonthHtml}${nextMonthHtml}`).transform('translate3d(0,0,0)');\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.monthsTranslate = 0;\n calendar.setMonthsTranslate();\n calendar.$months.each(monthEl => {\n calendar.emit('local::monthAdd calendarMonthAdd', monthEl);\n });\n }\n onMonthChangeStart(dir) {\n const calendar = this;\n const {\n $months,\n currentYear,\n currentMonth\n } = calendar;\n calendar.updateCurrentMonthYear(dir);\n $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');\n const currentIndex = dir === 'next' ? $months.length - 1 : 0;\n $months.eq(currentIndex).addClass('calendar-month-current');\n $months.eq(dir === 'next' ? currentIndex - 1 : currentIndex + 1).addClass(dir === 'next' ? 'calendar-month-prev' : 'calendar-month-next');\n calendar.emit('local::monthYearChangeStart calendarMonthYearChangeStart', calendar, currentYear, currentMonth);\n }\n onMonthChangeEnd(dir, rebuildBoth) {\n const calendar = this;\n const {\n currentYear,\n currentMonth,\n $wrapperEl,\n monthsTranslate\n } = calendar;\n calendar.animating = false;\n let nextMonthHtml;\n let prevMonthHtml;\n let currentMonthHtml;\n $wrapperEl.find('.calendar-month:not(.calendar-month-prev):not(.calendar-month-current):not(.calendar-month-next)').remove();\n if (typeof dir === 'undefined') {\n dir = 'next'; // eslint-disable-line\n rebuildBoth = true; // eslint-disable-line\n }\n\n if (!rebuildBoth) {\n currentMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), dir);\n } else {\n $wrapperEl.find('.calendar-month-next, .calendar-month-prev').remove();\n prevMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'prev');\n nextMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'next');\n }\n if (dir === 'next' || rebuildBoth) {\n $wrapperEl.append(currentMonthHtml || nextMonthHtml);\n }\n if (dir === 'prev' || rebuildBoth) {\n $wrapperEl.prepend(currentMonthHtml || prevMonthHtml);\n }\n const $months = $wrapperEl.find('.calendar-month');\n calendar.$months = $months;\n calendar.setMonthsTranslate(monthsTranslate);\n calendar.emit('local::monthAdd calendarMonthAdd', calendar, dir === 'next' ? $months.eq($months.length - 1)[0] : $months.eq(0)[0]);\n calendar.emit('local::monthYearChangeEnd calendarMonthYearChangeEnd', calendar, currentYear, currentMonth);\n }\n setMonthsTranslate(translate) {\n const calendar = this;\n const {\n $months,\n isHorizontal: isH,\n inverter\n } = calendar;\n // eslint-disable-next-line\n translate = translate || calendar.monthsTranslate || 0;\n if (typeof calendar.monthsTranslate === 'undefined') {\n calendar.monthsTranslate = translate;\n }\n $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');\n const prevMonthTranslate = -(translate + 1) * 100 * inverter;\n const currentMonthTranslate = -translate * 100 * inverter;\n const nextMonthTranslate = -(translate - 1) * 100 * inverter;\n $months.eq(0).transform(`translate3d(${isH ? prevMonthTranslate : 0}%, ${isH ? 0 : prevMonthTranslate}%, 0)`).addClass('calendar-month-prev');\n $months.eq(1).transform(`translate3d(${isH ? currentMonthTranslate : 0}%, ${isH ? 0 : currentMonthTranslate}%, 0)`).addClass('calendar-month-current');\n $months.eq(2).transform(`translate3d(${isH ? nextMonthTranslate : 0}%, ${isH ? 0 : nextMonthTranslate}%, 0)`).addClass('calendar-month-next');\n }\n nextMonth(transition) {\n const calendar = this;\n const {\n params,\n $wrapperEl,\n inverter,\n isHorizontal: isH\n } = calendar;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n transition = ''; // eslint-disable-line\n if (!params.animate) transition = 0; // eslint-disable-line\n }\n\n const nextMonth = parseInt(calendar.$months.eq(calendar.$months.length - 1).attr('data-month'), 10);\n const nextYear = parseInt(calendar.$months.eq(calendar.$months.length - 1).attr('data-year'), 10);\n const nextDate = new Date(nextYear, nextMonth);\n const nextDateTime = nextDate.getTime();\n const transitionEndCallback = !calendar.animating;\n if (params.maxDate) {\n if (nextDateTime > new Date(params.maxDate).getTime()) {\n calendar.resetMonth();\n return;\n }\n }\n calendar.monthsTranslate -= 1;\n if (nextMonth === calendar.currentMonth) {\n const nextMonthTranslate = -calendar.monthsTranslate * 100 * inverter;\n const nextMonthHtml = $(calendar.renderMonth(nextDateTime, 'next')).transform(`translate3d(${isH ? nextMonthTranslate : 0}%, ${isH ? 0 : nextMonthTranslate}%, 0)`).addClass('calendar-month-next');\n $wrapperEl.append(nextMonthHtml[0]);\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.emit('local::monthAdd calendarMonthAdd', calendar.$months.eq(calendar.$months.length - 1)[0]);\n }\n calendar.animating = true;\n calendar.onMonthChangeStart('next');\n const translate = calendar.monthsTranslate * 100 * inverter;\n $wrapperEl.transition(transition).transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(() => {\n calendar.onMonthChangeEnd('next');\n });\n }\n if (!params.animate) {\n calendar.onMonthChangeEnd('next');\n }\n }\n prevMonth(transition) {\n const calendar = this;\n const {\n params,\n $wrapperEl,\n inverter,\n isHorizontal: isH\n } = calendar;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n transition = ''; // eslint-disable-line\n if (!params.animate) transition = 0; // eslint-disable-line\n }\n\n const prevMonth = parseInt(calendar.$months.eq(0).attr('data-month'), 10);\n const prevYear = parseInt(calendar.$months.eq(0).attr('data-year'), 10);\n const prevDate = new Date(prevYear, prevMonth + 1, -1);\n const prevDateTime = prevDate.getTime();\n const transitionEndCallback = !calendar.animating;\n if (params.minDate) {\n let minDate = new Date(params.minDate);\n minDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);\n if (prevDateTime < minDate.getTime()) {\n calendar.resetMonth();\n return;\n }\n }\n calendar.monthsTranslate += 1;\n if (prevMonth === calendar.currentMonth) {\n const prevMonthTranslate = -calendar.monthsTranslate * 100 * inverter;\n const prevMonthHtml = $(calendar.renderMonth(prevDateTime, 'prev')).transform(`translate3d(${isH ? prevMonthTranslate : 0}%, ${isH ? 0 : prevMonthTranslate}%, 0)`).addClass('calendar-month-prev');\n $wrapperEl.prepend(prevMonthHtml[0]);\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.emit('local::monthAdd calendarMonthAdd', calendar.$months.eq(0)[0]);\n }\n calendar.animating = true;\n calendar.onMonthChangeStart('prev');\n const translate = calendar.monthsTranslate * 100 * inverter;\n $wrapperEl.transition(transition).transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(() => {\n calendar.onMonthChangeEnd('prev');\n });\n }\n if (!params.animate) {\n calendar.onMonthChangeEnd('prev');\n }\n }\n resetMonth(transition) {\n if (transition === void 0) {\n transition = '';\n }\n const calendar = this;\n const {\n $wrapperEl,\n inverter,\n isHorizontal: isH,\n monthsTranslate\n } = calendar;\n const translate = monthsTranslate * 100 * inverter;\n $wrapperEl.transition(transition).transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n }\n // eslint-disable-next-line\n setYearMonth(year, month, transition) {\n const calendar = this;\n const {\n params,\n isHorizontal: isH,\n $wrapperEl,\n inverter\n } = calendar;\n // eslint-disable-next-line\n if (typeof year === 'undefined') year = calendar.currentYear;\n // eslint-disable-next-line\n if (typeof month === 'undefined') month = calendar.currentMonth;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n // eslint-disable-next-line\n transition = '';\n // eslint-disable-next-line\n if (!params.animate) transition = 0;\n }\n let targetDate;\n if (year < calendar.currentYear) {\n targetDate = new Date(year, month + 1, -1).getTime();\n } else {\n targetDate = new Date(year, month).getTime();\n }\n if (params.maxDate && targetDate > new Date(params.maxDate).getTime()) {\n return false;\n }\n if (params.minDate) {\n let minDate = new Date(params.minDate);\n minDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);\n if (targetDate < minDate.getTime()) {\n return false;\n }\n }\n const currentDate = new Date(calendar.currentYear, calendar.currentMonth).getTime();\n const dir = targetDate > currentDate ? 'next' : 'prev';\n const newMonthHTML = calendar.renderMonth(new Date(year, month));\n calendar.monthsTranslate = calendar.monthsTranslate || 0;\n const prevTranslate = calendar.monthsTranslate;\n let monthTranslate;\n const transitionEndCallback = !calendar.animating && transition !== 0;\n if (targetDate > currentDate) {\n // To next\n calendar.monthsTranslate -= 1;\n if (!calendar.animating) calendar.$months.eq(calendar.$months.length - 1).remove();\n $wrapperEl.append(newMonthHTML);\n calendar.$months = $wrapperEl.find('.calendar-month');\n monthTranslate = -(prevTranslate - 1) * 100 * inverter;\n calendar.$months.eq(calendar.$months.length - 1).transform(`translate3d(${isH ? monthTranslate : 0}%, ${isH ? 0 : monthTranslate}%, 0)`).addClass('calendar-month-next');\n } else {\n // To prev\n calendar.monthsTranslate += 1;\n if (!calendar.animating) calendar.$months.eq(0).remove();\n $wrapperEl.prepend(newMonthHTML);\n calendar.$months = $wrapperEl.find('.calendar-month');\n monthTranslate = -(prevTranslate + 1) * 100 * inverter;\n calendar.$months.eq(0).transform(`translate3d(${isH ? monthTranslate : 0}%, ${isH ? 0 : monthTranslate}%, 0)`).addClass('calendar-month-prev');\n }\n calendar.emit('local::monthAdd calendarMonthAdd', dir === 'next' ? calendar.$months.eq(calendar.$months.length - 1)[0] : calendar.$months.eq(0)[0]);\n calendar.animating = true;\n calendar.onMonthChangeStart(dir);\n const wrapperTranslate = calendar.monthsTranslate * 100 * inverter;\n $wrapperEl.transition(transition).transform(`translate3d(${isH ? wrapperTranslate : 0}%, ${isH ? 0 : wrapperTranslate}%, 0)`);\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(() => {\n calendar.onMonthChangeEnd(dir, true);\n });\n }\n if (!params.animate || transition === 0) {\n calendar.onMonthChangeEnd(dir, true);\n }\n }\n nextYear() {\n const calendar = this;\n calendar.setYearMonth(calendar.currentYear + 1);\n }\n prevYear() {\n const calendar = this;\n calendar.setYearMonth(calendar.currentYear - 1);\n }\n // eslint-disable-next-line\n dateInRange(dayDate, range) {\n let match = false;\n let i;\n if (!range) return false;\n if (Array.isArray(range)) {\n for (i = 0; i < range.length; i += 1) {\n if (range[i].from || range[i].to) {\n if (range[i].from && range[i].to) {\n if (dayDate <= new Date(range[i].to).getTime() && dayDate >= new Date(range[i].from).getTime()) {\n match = true;\n }\n } else if (range[i].from) {\n if (dayDate >= new Date(range[i].from).getTime()) {\n match = true;\n }\n } else if (range[i].to) {\n if (dayDate <= new Date(range[i].to).getTime()) {\n match = true;\n }\n }\n } else if (range[i].date) {\n if (dayDate === new Date(range[i].date).getTime()) {\n match = true;\n }\n } else if (dayDate === new Date(range[i]).getTime()) {\n match = true;\n }\n }\n } else if (range.from || range.to) {\n if (range.from && range.to) {\n if (dayDate <= new Date(range.to).getTime() && dayDate >= new Date(range.from).getTime()) {\n match = true;\n }\n } else if (range.from) {\n if (dayDate >= new Date(range.from).getTime()) {\n match = true;\n }\n } else if (range.to) {\n if (dayDate <= new Date(range.to).getTime()) {\n match = true;\n }\n }\n } else if (range.date) {\n match = dayDate === new Date(range.date).getTime();\n } else if (typeof range === 'function') {\n match = range(new Date(dayDate));\n }\n return match;\n }\n // eslint-disable-next-line\n daysInMonth(date) {\n const d = new Date(date);\n return new Date(d.getFullYear(), d.getMonth() + 1, 0).getDate();\n }\n renderMonths(date) {\n const calendar = this;\n if (calendar.params.renderMonths) {\n return calendar.params.renderMonths.call(calendar, date);\n }\n return $jsx(\"div\", {\n class: \"calendar-months-wrapper\"\n }, calendar.renderMonth(date, 'prev'), calendar.renderMonth(date), calendar.renderMonth(date, 'next'));\n }\n renderMonth(d, offset) {\n const calendar = this;\n const {\n params,\n value\n } = calendar;\n if (params.renderMonth) {\n return params.renderMonth.call(calendar, d, offset);\n }\n let date = new Date(d);\n let year = date.getFullYear();\n let month = date.getMonth();\n let localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter(date));\n if (localeMonth < 0) localeMonth = month;\n let localeYear = calendar.yearFormatter(date);\n if (offset === 'next') {\n if (month === 11) date = new Date(year + 1, 0);else date = new Date(year, month + 1, 1);\n }\n if (offset === 'prev') {\n if (month === 0) date = new Date(year - 1, 11);else date = new Date(year, month - 1, 1);\n }\n if (offset === 'next' || offset === 'prev') {\n month = date.getMonth();\n year = date.getFullYear();\n localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter(date));\n if (localeMonth < 0) localeMonth = month;\n localeYear = calendar.yearFormatter(date);\n }\n const currentValues = [];\n const today = new Date().setHours(0, 0, 0, 0);\n const minDate = params.minDate ? new Date(params.minDate).getTime() : null;\n const maxDate = params.maxDate ? new Date(params.maxDate).getTime() : null;\n const rows = 6;\n const cols = 7;\n const daysInPrevMonth = calendar.daysInMonth(new Date(date.getFullYear(), date.getMonth()).getTime() - 10 * 24 * 60 * 60 * 1000);\n const daysInMonth = calendar.daysInMonth(date);\n const minDayNumber = params.firstDay === 6 ? 0 : 1;\n let monthHtml = '';\n let dayIndex = 0 + (params.firstDay - 1);\n let disabled;\n let hasEvents;\n let firstDayOfMonthIndex = new Date(date.getFullYear(), date.getMonth()).getDay();\n if (firstDayOfMonthIndex === 0) firstDayOfMonthIndex = 7;\n if (value && value.length) {\n for (let i = 0; i < value.length; i += 1) {\n currentValues.push(new Date(value[i]).setHours(0, 0, 0, 0));\n }\n }\n for (let row = 1; row <= rows; row += 1) {\n let rowHtml = '';\n for (let col = 1; col <= cols; col += 1) {\n dayIndex += 1;\n let dayDate;\n let dayNumber = dayIndex - firstDayOfMonthIndex;\n let addClass = '';\n if (row === 1 && col === 1 && dayNumber > minDayNumber && params.firstDay !== 1) {\n dayIndex -= 7;\n dayNumber = dayIndex - firstDayOfMonthIndex;\n }\n const weekDayIndex = col - 1 + params.firstDay > 6 ? col - 1 - 7 + params.firstDay : col - 1 + params.firstDay;\n if (dayNumber < 0) {\n dayNumber = daysInPrevMonth + dayNumber + 1;\n addClass += ' calendar-day-prev';\n dayDate = new Date(month - 1 < 0 ? year - 1 : year, month - 1 < 0 ? 11 : month - 1, dayNumber).getTime();\n } else {\n dayNumber += 1;\n if (dayNumber > daysInMonth) {\n dayNumber -= daysInMonth;\n addClass += ' calendar-day-next';\n dayDate = new Date(month + 1 > 11 ? year + 1 : year, month + 1 > 11 ? 0 : month + 1, dayNumber).getTime();\n } else {\n dayDate = new Date(year, month, dayNumber).getTime();\n }\n }\n // Today\n if (dayDate === today) addClass += ' calendar-day-today';\n\n // Selected\n if (params.rangePicker && currentValues.length === 2) {\n if (dayDate >= currentValues[0] && dayDate <= currentValues[1]) {\n addClass += ' calendar-day-selected';\n }\n if (currentValues[0] !== currentValues[1]) {\n if (dayDate > currentValues[0] && dayDate < currentValues[1]) {\n addClass += ' calendar-day-selected-range';\n }\n if (dayDate === currentValues[0]) {\n addClass += ' calendar-day-selected-left';\n }\n if (dayDate === currentValues[1]) {\n addClass += ' calendar-day-selected-right';\n }\n }\n } else if (currentValues.indexOf(dayDate) >= 0) addClass += ' calendar-day-selected';\n // Weekend\n if (params.weekendDays.indexOf(weekDayIndex) >= 0) {\n addClass += ' calendar-day-weekend';\n }\n // Events\n let eventsHtml = '';\n hasEvents = false;\n if (params.events) {\n if (calendar.dateInRange(dayDate, params.events)) {\n hasEvents = true;\n }\n }\n if (hasEvents) {\n addClass += ' calendar-day-has-events';\n // prettier-ignore\n eventsHtml = `\n \n \n \n `;\n if (Array.isArray(params.events)) {\n const eventDots = [];\n params.events.forEach(ev => {\n const color = ev.color || '';\n if (eventDots.indexOf(color) < 0 && calendar.dateInRange(dayDate, ev)) {\n eventDots.push(color);\n }\n });\n // prettier-ignore\n eventsHtml = `\n \n ${eventDots.map(color => `\n \n `.trim()).join('')}\n \n `;\n }\n }\n // Custom Ranges\n if (params.rangesClasses) {\n for (let k = 0; k < params.rangesClasses.length; k += 1) {\n if (calendar.dateInRange(dayDate, params.rangesClasses[k].range)) {\n addClass += ` ${params.rangesClasses[k].cssClass}`;\n }\n }\n }\n // Disabled\n disabled = false;\n if (minDate && dayDate < minDate || maxDate && dayDate > maxDate) {\n disabled = true;\n }\n if (params.disabled) {\n if (calendar.dateInRange(dayDate, params.disabled)) {\n disabled = true;\n }\n }\n if (disabled) {\n addClass += ' calendar-day-disabled';\n }\n dayDate = new Date(dayDate);\n const dayYear = dayDate.getFullYear();\n const dayMonth = dayDate.getMonth();\n const dayNumberDisplay = calendar.dayFormatter(dayDate);\n // prettier-ignore\n rowHtml += `\n
          \n ${dayNumberDisplay}${eventsHtml}\n
          `.trim();\n }\n monthHtml += `
          ${rowHtml}
          `;\n }\n monthHtml = `
          ${monthHtml}
          `;\n return monthHtml;\n }\n renderWeekHeader() {\n const calendar = this;\n if (calendar.params.renderWeekHeader) {\n return calendar.params.renderWeekHeader.call(calendar);\n }\n const {\n params\n } = calendar;\n let weekDaysHtml = '';\n for (let i = 0; i < 7; i += 1) {\n const dayIndex = i + params.firstDay > 6 ? i - 7 + params.firstDay : i + params.firstDay;\n const dayName = calendar.dayNamesShort[dayIndex];\n weekDaysHtml += `
          ${dayName}
          `;\n }\n return $jsx(\"div\", {\n class: \"calendar-week-header\"\n }, weekDaysHtml);\n }\n renderMonthSelector() {\n const calendar = this;\n if (calendar.params.renderMonthSelector) {\n return calendar.params.renderMonthSelector.call(calendar);\n }\n return $jsx(\"div\", {\n class: \"calendar-month-selector\"\n }, $jsx(\"a\", {\n class: \"link icon-only calendar-prev-month-button\"\n }, $jsx(\"i\", {\n class: \"icon icon-prev\"\n })), calendar.params.monthPicker ? $jsx(\"a\", {\n class: \"current-month-value link\"\n }) : $jsx(\"span\", {\n class: \"current-month-value\"\n }), $jsx(\"a\", {\n class: \"link icon-only calendar-next-month-button\"\n }, $jsx(\"i\", {\n class: \"icon icon-next\"\n })));\n }\n renderYearSelector() {\n const calendar = this;\n if (calendar.params.renderYearSelector) {\n return calendar.params.renderYearSelector.call(calendar);\n }\n return $jsx(\"div\", {\n class: \"calendar-year-selector\"\n }, $jsx(\"a\", {\n class: \"link icon-only calendar-prev-year-button\"\n }, $jsx(\"i\", {\n class: \"icon icon-prev\"\n })), calendar.params.yearPicker ? $jsx(\"a\", {\n class: \"current-year-value link\"\n }) : $jsx(\"span\", {\n class: \"current-year-value\"\n }), $jsx(\"a\", {\n class: \"link icon-only calendar-next-year-button\"\n }, $jsx(\"i\", {\n class: \"icon icon-next\"\n })));\n }\n\n // eslint-disable-next-line\n renderTimeSelector() {\n const calendar = this;\n const value = calendar.value && calendar.value[0];\n let timeString;\n if (value) timeString = calendar.timeSelectorFormatter(value);\n return $jsx(\"div\", {\n class: \"calendar-time-selector\"\n }, $jsx(\"span\", null, calendar.params.timePickerLabel), $jsx(\"a\", {\n class: \"link\"\n }, timeString || calendar.params.timePickerPlaceholder));\n }\n renderHeader() {\n const calendar = this;\n if (calendar.params.renderHeader) {\n return calendar.params.renderHeader.call(calendar);\n }\n return $jsx(\"div\", {\n class: \"calendar-header\"\n }, $jsx(\"div\", {\n class: \"calendar-selected-date\"\n }, calendar.params.headerPlaceholder));\n }\n renderFooter() {\n const calendar = this;\n const app = calendar.app;\n if (calendar.params.renderFooter) {\n return calendar.params.renderFooter.call(calendar);\n }\n return $jsx(\"div\", {\n class: \"calendar-footer\"\n }, $jsx(\"a\", {\n class: `${app.theme === 'md' ? 'button button-round' : 'link'} calendar-close sheet-close popover-close`\n }, calendar.params.toolbarCloseText));\n }\n renderToolbar() {\n const calendar = this;\n if (calendar.params.renderToolbar) {\n return calendar.params.renderToolbar.call(calendar, calendar);\n }\n // prettier-ignore\n return $jsx(\"div\", {\n class: \"toolbar toolbar-top\"\n }, $jsx(\"div\", {\n class: \"toolbar-inner\"\n }, calendar.params.monthSelector ? calendar.renderMonthSelector() : '', calendar.params.yearSelector ? calendar.renderYearSelector() : ''));\n }\n // eslint-disable-next-line\n renderInline() {\n const calendar = this;\n const {\n cssClass,\n toolbar,\n header,\n footer,\n rangePicker,\n weekHeader\n } = calendar.params;\n const {\n value,\n hasTimePicker\n } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n return $jsx(\"div\", {\n class: `calendar calendar-inline ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`\n }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx(\"div\", {\n class: \"calendar-months\"\n }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter());\n }\n renderCustomModal() {\n const calendar = this;\n const {\n cssClass,\n toolbar,\n header,\n footer,\n rangePicker,\n weekHeader\n } = calendar.params;\n const {\n value,\n hasTimePicker\n } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n return $jsx(\"div\", {\n class: `calendar calendar-modal ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`\n }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx(\"div\", {\n class: \"calendar-months\"\n }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter());\n }\n renderSheet() {\n const calendar = this;\n const {\n cssClass,\n toolbar,\n header,\n footer,\n rangePicker,\n weekHeader\n } = calendar.params;\n const {\n value,\n hasTimePicker\n } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n return $jsx(\"div\", {\n class: `sheet-modal calendar calendar-sheet ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`\n }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx(\"div\", {\n class: \"sheet-modal-inner calendar-months\"\n }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter());\n }\n renderPopover() {\n const calendar = this;\n const {\n cssClass,\n toolbar,\n header,\n footer,\n rangePicker,\n weekHeader\n } = calendar.params;\n const {\n value,\n hasTimePicker\n } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n return $jsx(\"div\", {\n class: \"popover calendar-popover\"\n }, $jsx(\"div\", {\n class: \"popover-inner\"\n }, $jsx(\"div\", {\n class: `calendar ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`\n }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx(\"div\", {\n class: \"calendar-months\"\n }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter())));\n }\n render() {\n const calendar = this;\n const {\n params\n } = calendar;\n if (params.render) return params.render.call(calendar);\n if (!calendar.inline) {\n let modalType = params.openIn;\n if (modalType === 'auto') modalType = calendar.isPopover() ? 'popover' : 'sheet';\n if (modalType === 'popover') return calendar.renderPopover();\n if (modalType === 'sheet') return calendar.renderSheet();\n return calendar.renderCustomModal();\n }\n return calendar.renderInline();\n }\n openMonthPicker() {\n const calendar = this;\n const {\n $el,\n app\n } = calendar;\n if (!$el || !$el.length) return;\n $el.append('
          ');\n calendar.monthPickerPopover = app.popover.create({\n el: $el.find('.calendar-month-picker-popover'),\n targetEl: $el.find('.calendar-month-selector'),\n backdrop: true,\n backdropUnique: true,\n on: {\n close() {\n calendar.closeMonthPicker();\n },\n closed() {\n if (calendar.monthPickerPopover.$el) calendar.monthPickerPopover.$el.remove();\n calendar.monthPickerPopover.destroy();\n if (calendar.monthPickerInstance) {\n calendar.monthPickerInstance.close();\n calendar.monthPickerInstance.destroy();\n }\n delete calendar.monthPickerInstance;\n delete calendar.monthPickerPopover;\n }\n }\n });\n calendar.monthPickerPopover.open();\n const localeMonth = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);\n const values = [];\n const displayValues = [];\n calendar.monthNames.forEach((m, index) => {\n values.push(index);\n displayValues.push(m);\n });\n calendar.monthPickerInstance = app.picker.create({\n containerEl: calendar.monthPickerPopover.$el.find('.calendar-month-picker'),\n value: [localeMonth],\n toolbar: calendar.params.monthPickerToolbar,\n rotateEffect: false,\n toolbarCloseText: calendar.params.monthPickerCloseText,\n cols: [{\n values,\n displayValues\n }]\n });\n }\n closeMonthPicker() {\n const calendar = this;\n if (calendar.monthPickerPopover && calendar.monthPickerPopover.opened) calendar.monthPickerPopover.close();\n const index = calendar.monthPickerInstance.value[0];\n const localeMonthIndex = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);\n const monthIndex = calendar.currentMonth;\n const diff = localeMonthIndex - monthIndex;\n const diffIndex = index - diff;\n calendar.setYearMonth(calendar.currentYear, diffIndex, 0);\n }\n openYearPicker() {\n const calendar = this;\n const {\n $el,\n app\n } = calendar;\n if (!$el || !$el.length) return;\n $el.append('
          ');\n calendar.yearPickerPopover = app.popover.create({\n el: $el.find('.calendar-year-picker-popover'),\n targetEl: $el.find('.calendar-year-selector'),\n backdrop: true,\n backdropUnique: true,\n on: {\n close() {\n calendar.closeYearPicker();\n },\n closed() {\n if (calendar.yearPickerPopover.$el) calendar.yearPickerPopover.$el.remove();\n calendar.yearPickerPopover.destroy();\n if (calendar.yearPickerInstance) {\n calendar.yearPickerInstance.close();\n calendar.yearPickerInstance.destroy();\n }\n delete calendar.yearPickerInstance;\n delete calendar.yearPickerPopover;\n }\n }\n });\n calendar.yearPickerPopover.open();\n const currentYear = calendar.currentYear;\n let yearMin = calendar.params.yearPickerMin || new Date().getFullYear() - 100;\n if (calendar.params.minDate) {\n yearMin = Math.max(yearMin, new Date(calendar.params.minDate).getFullYear());\n }\n let yearMax = calendar.params.yearPickerMax || new Date().getFullYear() + 100;\n if (calendar.params.maxDate) {\n yearMax = Math.min(yearMax, new Date(calendar.params.maxDate).getFullYear());\n }\n const years = [];\n for (let i = yearMin; i <= yearMax; i += 1) {\n years.push(i);\n }\n calendar.yearPickerInstance = app.picker.create({\n containerEl: calendar.yearPickerPopover.$el.find('.calendar-year-picker'),\n value: [currentYear],\n toolbar: calendar.params.yearPickerToolbar,\n rotateEffect: false,\n toolbarCloseText: calendar.params.yearPickerCloseText,\n cols: [{\n values: years\n }]\n });\n }\n closeYearPicker() {\n const calendar = this;\n if (calendar.yearPickerPopover && calendar.yearPickerPopover.opened) calendar.yearPickerPopover.close();\n calendar.setYearMonth(calendar.yearPickerInstance.value[0], undefined, 0);\n }\n openTimePicker() {\n const calendar = this;\n const {\n $el,\n app,\n is12HoursFormat\n } = calendar;\n if (!$el || !$el.length) return;\n $el.append('
          ');\n const hoursArr = [];\n const minutesArr = [];\n const hoursMin = is12HoursFormat ? 1 : 0;\n const hoursMax = is12HoursFormat ? 12 : 23;\n for (let i = hoursMin; i <= hoursMax; i += 1) {\n hoursArr.push(i);\n }\n for (let i = 0; i <= 59; i += 1) {\n minutesArr.push(i);\n }\n let value;\n if (calendar.value && calendar.value.length) {\n value = [calendar.value[0].getHours(), calendar.value[0].getMinutes()];\n } else {\n value = [new Date().getHours(), new Date().getMinutes()];\n }\n if (is12HoursFormat) {\n value.push(value[0] < 12 ? 'AM' : 'PM');\n if (value[0] > 12) value[0] -= 12;\n if (value[0] === 0) value[0] = 12;\n }\n calendar.timePickerPopover = app.popover.create({\n el: $el.find('.calendar-time-picker-popover'),\n targetEl: $el.find('.calendar-time-selector .link'),\n backdrop: true,\n backdropUnique: true,\n on: {\n close() {\n calendar.closeTimePicker();\n },\n closed() {\n if (calendar.timePickerPopover.$el) calendar.timePickerPopover.$el.remove();\n calendar.timePickerPopover.destroy();\n if (calendar.timePickerInstance) {\n calendar.timePickerInstance.close();\n calendar.timePickerInstance.destroy();\n }\n delete calendar.timePickerInstance;\n delete calendar.timePickerPopover;\n }\n }\n });\n calendar.timePickerPopover.open();\n calendar.timePickerInstance = app.picker.create({\n containerEl: calendar.timePickerPopover.$el.find('.calendar-time-picker'),\n value,\n toolbar: calendar.params.timePickerToolbar,\n rotateEffect: false,\n toolbarCloseText: calendar.params.timePickerCloseText,\n cols: [{\n values: hoursArr\n }, {\n divider: true,\n content: ':'\n }, {\n values: minutesArr,\n displayValues: minutesArr.map(m => m < 10 ? `0${m}` : m)\n }, ...(is12HoursFormat ? [{\n values: ['AM', 'PM']\n }] : [])]\n });\n }\n closeTimePicker() {\n const calendar = this;\n const {\n is12HoursFormat\n } = calendar;\n if (calendar.timePickerInstance) {\n const timePickerValue = calendar.timePickerInstance.value;\n let hours = parseInt(timePickerValue[0], 10);\n const minutes = parseInt(timePickerValue[1], 10);\n const period = calendar.timePickerInstance.value[2];\n if (is12HoursFormat) {\n if (period === 'AM' && hours === 12) {\n hours = 0;\n } else if (period === 'PM' && hours !== 12) {\n hours += 12;\n }\n }\n let value = calendar.value && calendar.value.length && calendar.value[0];\n if (!value) {\n value = new Date();\n value.setHours(hours, minutes, 0, 0);\n } else {\n value = new Date(value);\n value.setHours(hours, minutes);\n }\n calendar.setValue([value]);\n if (calendar.timePickerPopover && calendar.timePickerPopover.opened) calendar.timePickerPopover.close();\n }\n }\n onOpen() {\n const calendar = this;\n const {\n initialized,\n $el,\n app,\n $inputEl,\n inline,\n value,\n params\n } = calendar;\n calendar.closing = false;\n calendar.opened = true;\n calendar.opening = true;\n\n // Init main events\n calendar.attachCalendarEvents();\n const updateValue = !value && params.value;\n\n // Set value\n if (!initialized) {\n if (value) calendar.setValue(value, 0);else if (params.value) {\n calendar.setValue(calendar.normalizeValues(params.value), 0);\n }\n } else if (value) {\n calendar.setValue(value, 0);\n }\n\n // Update current month and year\n calendar.updateCurrentMonthYear();\n\n // Set initial translate\n calendar.monthsTranslate = 0;\n calendar.setMonthsTranslate();\n\n // Update input value\n if (updateValue) calendar.updateValue();else if (params.header && value) {\n calendar.updateValue(true);\n }\n\n // Extra focus\n if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n calendar.initialized = true;\n calendar.$months.each(monthEl => {\n calendar.emit('local::monthAdd calendarMonthAdd', monthEl);\n });\n\n // Trigger events\n if ($el) {\n $el.trigger('calendar:open');\n }\n if ($inputEl) {\n $inputEl.trigger('calendar:open');\n }\n calendar.emit('local::open calendarOpen', calendar);\n }\n onOpened() {\n const calendar = this;\n calendar.opening = false;\n if (calendar.$el) {\n calendar.$el.trigger('calendar:opened');\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:opened');\n }\n calendar.emit('local::opened calendarOpened', calendar);\n }\n onClose() {\n const calendar = this;\n const app = calendar.app;\n calendar.opening = false;\n calendar.closing = true;\n if (calendar.$inputEl) {\n if (app.theme === 'md') {\n calendar.$inputEl.trigger('blur');\n } else {\n const validate = calendar.$inputEl.attr('validate');\n const required = calendar.$inputEl.attr('required');\n if (validate && required) {\n app.input.validate(calendar.$inputEl);\n }\n }\n }\n if (calendar.detachCalendarEvents) {\n calendar.detachCalendarEvents();\n }\n if (calendar.$el) {\n calendar.$el.trigger('calendar:close');\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:close');\n }\n calendar.emit('local::close calendarClose', calendar);\n }\n onClosed() {\n const calendar = this;\n calendar.opened = false;\n calendar.closing = false;\n if (!calendar.inline) {\n nextTick(() => {\n if (calendar.modal && calendar.modal.el && calendar.modal.destroy) {\n if (!calendar.params.routableModals) {\n calendar.modal.destroy();\n }\n }\n delete calendar.modal;\n });\n }\n if (calendar.timePickerInstance) {\n if (calendar.timePickerInstance.destroy) calendar.timePickerInstance.destroy();\n delete calendar.timePickerInstance;\n }\n if (calendar.$el) {\n calendar.$el.trigger('calendar:closed');\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:closed');\n }\n calendar.emit('local::closed calendarClosed', calendar);\n }\n open() {\n const calendar = this;\n const {\n app,\n opened,\n inline,\n $inputEl,\n params\n } = calendar;\n if (opened) return;\n if (inline) {\n calendar.$el = $(calendar.render());\n calendar.$el[0].f7Calendar = calendar;\n calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');\n calendar.$months = calendar.$wrapperEl.find('.calendar-month');\n calendar.$containerEl.append(calendar.$el);\n calendar.onOpen();\n calendar.onOpened();\n return;\n }\n let modalType = params.openIn;\n if (modalType === 'auto') {\n modalType = calendar.isPopover() ? 'popover' : 'sheet';\n }\n const modalContent = calendar.render();\n const modalParams = {\n targetEl: $inputEl,\n scrollToEl: params.scrollToInput ? $inputEl : undefined,\n content: modalContent,\n backdrop: params.backdrop === true || (modalType === 'popover' || modalType === 'customModal') && app.params.popover.backdrop !== false && params.backdrop !== false,\n closeByBackdropClick: params.closeByBackdropClick,\n on: {\n open() {\n const modal = this;\n calendar.modal = modal;\n calendar.$el = modalType === 'popover' ? modal.$el.find('.calendar') : modal.$el;\n calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');\n calendar.$months = calendar.$wrapperEl.find('.calendar-month');\n calendar.$el[0].f7Calendar = calendar;\n if (modalType === 'customModal') {\n $(calendar.$el).find('.calendar-close').once('click', () => {\n calendar.close();\n });\n }\n calendar.onOpen();\n },\n opened() {\n calendar.onOpened();\n },\n close() {\n calendar.onClose();\n },\n closed() {\n calendar.onClosed();\n }\n }\n };\n if (modalType === 'sheet') {\n modalParams.push = params.sheetPush;\n modalParams.swipeToClose = params.sheetSwipeToClose;\n }\n if (params.routableModals && calendar.view) {\n calendar.view.router.navigate({\n url: calendar.url,\n route: {\n path: calendar.url,\n [modalType]: modalParams\n }\n });\n } else {\n calendar.modal = app[modalType].create(modalParams);\n calendar.modal.open();\n }\n }\n close() {\n const calendar = this;\n const {\n opened,\n inline\n } = calendar;\n if (!opened) return;\n if (inline) {\n calendar.onClose();\n calendar.onClosed();\n return;\n }\n if (calendar.params.routableModals && calendar.view) {\n calendar.view.router.back();\n } else {\n calendar.modal.close();\n }\n }\n init() {\n const calendar = this;\n calendar.initInput();\n if (calendar.inline) {\n calendar.open();\n calendar.emit('local::init calendarInit', calendar);\n return;\n }\n if (!calendar.initialized && calendar.params.value) {\n calendar.setValue(calendar.normalizeValues(calendar.params.value));\n }\n\n // Attach input Events\n if (calendar.$inputEl) {\n calendar.attachInputEvents();\n }\n if (calendar.params.closeByOutsideClick) {\n calendar.attachHtmlEvents();\n }\n calendar.emit('local::init calendarInit', calendar);\n }\n destroy() {\n const calendar = this;\n if (calendar.destroyed) return;\n const {\n $el\n } = calendar;\n calendar.emit('local::beforeDestroy calendarBeforeDestroy', calendar);\n if ($el) $el.trigger('calendar:beforedestroy');\n calendar.close();\n\n // Detach Events\n if (calendar.$inputEl) {\n calendar.detachInputEvents();\n }\n if (calendar.params.closeByOutsideClick) {\n calendar.detachHtmlEvents();\n }\n if (calendar.timePickerInstance) {\n if (calendar.timePickerInstance.destroy) calendar.timePickerInstance.destroy();\n delete calendar.timePickerInstance;\n }\n if ($el && $el.length) delete calendar.$el[0].f7Calendar;\n deleteProps(calendar);\n calendar.destroyed = true;\n }\n}\nexport default Calendar;","import ConstructorMethods from '../../shared/constructor-methods.js';\nimport Calendar from './calendar-class.js';\nimport $ from '../../shared/dom7.js';\nexport default {\n name: 'calendar',\n static: {\n Calendar\n },\n create() {\n const app = this;\n app.calendar = ConstructorMethods({\n defaultSelector: '.calendar',\n constructor: Calendar,\n app,\n domProp: 'f7Calendar'\n });\n app.calendar.close = function close(el) {\n if (el === void 0) {\n el = '.calendar';\n }\n const $el = $(el);\n if ($el.length === 0) return;\n const calendar = $el[0].f7Calendar;\n if (!calendar || calendar && !calendar.opened) return;\n calendar.close();\n };\n },\n params: {\n calendar: {\n // Calendar settings\n dateFormat: undefined,\n monthNames: 'auto',\n monthNamesShort: 'auto',\n dayNames: 'auto',\n dayNamesShort: 'auto',\n locale: undefined,\n firstDay: 1,\n // First day of the week, Monday\n weekendDays: [0, 6],\n // Sunday and Saturday\n multiple: false,\n rangePicker: false,\n rangePickerMinDays: 1,\n // when calendar is used as rangePicker\n rangePickerMaxDays: 0,\n // when calendar is used as rangePicker, 0 means unlimited\n direction: 'horizontal',\n // or 'vertical'\n minDate: null,\n maxDate: null,\n disabled: null,\n // dates range of disabled days\n events: null,\n // dates range of days with events\n rangesClasses: null,\n // array with custom classes date ranges\n touchMove: true,\n animate: true,\n closeOnSelect: false,\n monthSelector: true,\n monthPicker: true,\n monthPickerToolbar: true,\n monthPickerCloseText: 'Done',\n yearSelector: true,\n yearPicker: true,\n yearPickerToolbar: true,\n yearPickerMin: undefined,\n yearPickerMax: undefined,\n yearPickerCloseText: 'Done',\n timePicker: false,\n timePickerToolbar: true,\n timePickerLabel: 'Time',\n timePickerFormat: {\n hour: 'numeric',\n minute: 'numeric'\n },\n timePickerPlaceholder: 'Select time',\n timePickerCloseText: 'Done',\n weekHeader: true,\n value: null,\n // Common opener settings\n containerEl: null,\n openIn: 'auto',\n // or 'popover' or 'sheet' or 'customModal'\n sheetPush: false,\n sheetSwipeToClose: undefined,\n formatValue: null,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n header: false,\n headerPlaceholder: 'Select date',\n toolbar: true,\n toolbarCloseText: 'Done',\n footer: false,\n cssClass: null,\n routableModals: false,\n view: null,\n url: 'date/',\n backdrop: null,\n closeByBackdropClick: true,\n // Render functions\n renderWeekHeader: null,\n renderMonths: null,\n renderMonth: null,\n renderMonthSelector: null,\n renderYearSelector: null,\n renderHeader: null,\n renderFooter: null,\n renderToolbar: null,\n renderInline: null,\n renderPopover: null,\n renderSheet: null,\n render: null\n }\n }\n};","import $ from '../../shared/dom7.js';\nexport default function pickerColumn(colEl, updateItems) {\n const picker = this;\n // const app = picker.app;\n const $colEl = $(colEl);\n const colIndex = $colEl.index();\n const col = picker.cols[colIndex];\n if (col.divider) return;\n col.$el = $colEl;\n col.el = $colEl[0];\n col.$itemsEl = col.$el.find('.picker-items');\n col.items = col.$itemsEl.find('.picker-item');\n let itemHeight;\n let colHeight;\n col.replaceValues = function replaceColValues(values, displayValues) {\n col.detachEvents();\n col.values = values;\n col.displayValues = displayValues;\n col.$itemsEl.html(picker.renderColumn(col, true));\n col.items = col.$itemsEl.find('.picker-item');\n col.calcSize();\n col.setValue(col.values[0], true);\n col.attachEvents();\n };\n col.calcSize = function calcColSize() {\n colHeight = col.$el[0].offsetHeight;\n itemHeight = col.items[0].offsetHeight;\n const hadPadding = col.el.style.getPropertyValue('--f7-picker-scroll-padding');\n col.el.style.setProperty('--f7-picker-scroll-padding', `${(colHeight - itemHeight) / 2}px`);\n if (!hadPadding) {\n col.$itemsEl[0].scrollTop = 0;\n }\n };\n col.setValue = function setColValue(newValue, valueCallbacks) {\n const newActiveIndex = col.$itemsEl.find(`.picker-item[data-picker-value=\"${newValue}\"]`).index();\n if (typeof newActiveIndex === 'undefined' || newActiveIndex === -1) {\n return;\n }\n const newScrollTop = newActiveIndex * itemHeight;\n col.$itemsEl[0].scrollTop = newScrollTop;\n\n // Update items\n col.updateItems(newActiveIndex, newScrollTop, valueCallbacks);\n };\n col.updateItems = function updateColItems(activeIndex, scrollTop, valueCallbacks) {\n if (typeof scrollTop === 'undefined') {\n // eslint-disable-next-line\n scrollTop = col.$itemsEl[0].scrollTop;\n }\n\n /* eslint-disable no-param-reassign */\n if (typeof activeIndex === 'undefined') {\n activeIndex = Math.round(scrollTop / itemHeight);\n }\n if (activeIndex < 0) activeIndex = 0;\n if (activeIndex >= col.items.length) activeIndex = col.items.length - 1;\n /* eslint-enable no-param-reassign */\n const previousActiveIndex = col.activeIndex;\n col.activeIndex = activeIndex;\n col.$itemsEl.find('.picker-item-selected').removeClass('picker-item-selected');\n const selectedItem = col.items.eq(activeIndex);\n selectedItem.addClass('picker-item-selected').children().transform('');\n // Set 3D rotate effect\n if (picker.params.rotateEffect) {\n col.items.each(itemEl => {\n const $itemEl = $(itemEl);\n const itemOffset = itemEl.offsetTop - (colHeight - itemHeight) / 2 - scrollTop;\n const percentage = itemOffset / itemHeight;\n const itemsFit = Math.ceil(col.height / itemHeight / 2) + 1;\n let angle = -24 * percentage;\n if (angle > 180) angle = 180;\n if (angle < -180) angle = -180;\n if (Math.abs(percentage) > itemsFit) {\n $itemEl.addClass('picker-item-far');\n } else {\n $itemEl.removeClass('picker-item-far');\n }\n $itemEl.children('span').transform(`translate3d(0, ${-percentage * itemHeight}px, -100px) rotateX(${angle}deg)`);\n });\n }\n if (valueCallbacks || typeof valueCallbacks === 'undefined') {\n // Update values\n col.value = selectedItem.attr('data-picker-value');\n col.displayValue = col.displayValues ? col.displayValues[activeIndex] : col.value;\n // On change callback\n if (previousActiveIndex !== activeIndex) {\n if (col.onChange) {\n col.onChange(picker, col.value, col.displayValue);\n }\n picker.updateValue();\n }\n }\n };\n function handleScroll() {\n col.updateItems();\n }\n function handleClick() {\n const value = $(this).attr('data-picker-value');\n col.setValue(value);\n }\n col.attachEvents = function attachColEvents() {\n col.$itemsEl.on('scroll', handleScroll);\n col.items.on('click', handleClick);\n };\n col.detachEvents = function detachColEvents() {\n col.items.off('click', handleClick);\n };\n col.init = function initCol() {\n col.calcSize();\n if (colIndex === 0) col.$el.addClass('picker-column-first');\n if (colIndex === picker.cols.length - 1) col.$el.addClass('picker-column-last');\n if (picker.params.freeMode) col.$el.addClass('picker-column-free-mode');\n // Update items on init\n if (updateItems) col.updateItems(0);\n col.attachEvents();\n };\n col.destroy = function destroyCol() {\n col.detachEvents();\n };\n col.init();\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport pickerColumn from './picker-column.js';\n\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Picker extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const picker = this;\n const device = getDevice();\n const window = getWindow();\n picker.params = extend({}, app.params.picker, params);\n let $containerEl;\n if (picker.params.containerEl) {\n $containerEl = $(picker.params.containerEl);\n if ($containerEl.length === 0) return picker;\n }\n let $inputEl;\n if (picker.params.inputEl) {\n $inputEl = $(picker.params.inputEl);\n }\n let $scrollToEl = picker.params.scrollToInput ? $inputEl : undefined;\n if (picker.params.scrollToEl) {\n const scrollToEl = $(picker.params.scrollToEl);\n if (scrollToEl.length > 0) {\n $scrollToEl = scrollToEl;\n }\n }\n extend(picker, {\n app,\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n needsOriginFix: device.ios || window.navigator.userAgent.toLowerCase().indexOf('safari') >= 0 && window.navigator.userAgent.toLowerCase().indexOf('chrome') < 0 && !device.android,\n cols: [],\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n $scrollToEl,\n initialized: false,\n opened: false,\n url: picker.params.url\n });\n function onResize() {\n picker.resizeCols();\n }\n function onInputClick() {\n picker.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n let htmlTouchStartTarget = null;\n function onHtmlTouchStart(e) {\n htmlTouchStartTarget = e.target;\n }\n function onHtmlClick(e) {\n if (picker.destroyed || !picker.params) return;\n const $targetEl = $(e.target);\n if (picker.isPopover()) return;\n if (!picker.opened || picker.closing) return;\n if ($targetEl.closest('[class*=\"backdrop\"]').length) return;\n if ($inputEl && $inputEl.length > 0) {\n if (htmlTouchStartTarget === e.target && $targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal').length === 0) {\n picker.close();\n }\n } else if ($(e.target).closest('.sheet-modal').length === 0) {\n picker.close();\n }\n }\n\n // Events\n extend(picker, {\n attachResizeEvent() {\n app.on('resize', onResize);\n },\n detachResizeEvent() {\n app.off('resize', onResize);\n },\n attachInputEvents() {\n picker.$inputEl.on('click', onInputClick);\n if (picker.params.inputReadOnly) {\n picker.$inputEl.on('focus mousedown', onInputFocus);\n if (picker.$inputEl[0]) {\n picker.$inputEl[0].f7ValidateReadonly = true;\n }\n }\n },\n detachInputEvents() {\n picker.$inputEl.off('click', onInputClick);\n if (picker.params.inputReadOnly) {\n picker.$inputEl.off('focus mousedown', onInputFocus);\n if (picker.$inputEl[0]) {\n delete picker.$inputEl[0].f7ValidateReadonly;\n }\n }\n },\n attachHtmlEvents() {\n app.on('click', onHtmlClick);\n app.on('touchstart', onHtmlTouchStart);\n },\n detachHtmlEvents() {\n app.off('click', onHtmlClick);\n app.off('touchstart', onHtmlTouchStart);\n }\n });\n picker.init();\n return picker;\n }\n get view() {\n const {\n app,\n params,\n $inputEl\n } = this;\n let view;\n if (params.view) {\n view = params.view;\n } else if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view) view = app.views.main;\n return view;\n }\n initInput() {\n const picker = this;\n if (!picker.$inputEl) return;\n if (picker.params.inputReadOnly) picker.$inputEl.prop('readOnly', true);\n }\n resizeCols() {\n const picker = this;\n if (!picker.opened) return;\n for (let i = 0; i < picker.cols.length; i += 1) {\n if (!picker.cols[i].divider) {\n picker.cols[i].calcSize();\n picker.cols[i].setValue(picker.cols[i].value, false);\n }\n }\n }\n isPopover() {\n const picker = this;\n const {\n app,\n modal,\n params\n } = picker;\n const device = getDevice();\n if (params.openIn === 'sheet') return false;\n if (modal && modal.type !== 'popover') return false;\n if (!picker.inline && picker.inputEl) {\n if (params.openIn === 'popover') return true;\n if (device.ios) {\n return !!device.ipad;\n }\n if (app.width >= 768) {\n return true;\n }\n }\n return false;\n }\n formatValue() {\n const picker = this;\n const {\n value,\n displayValue\n } = picker;\n if (picker.params.formatValue) {\n return picker.params.formatValue.call(picker, value, displayValue);\n }\n return value.join(' ');\n }\n setValue(values) {\n const picker = this;\n let valueIndex = 0;\n if (picker.cols.length === 0) {\n picker.value = values;\n picker.updateValue(values);\n return;\n }\n for (let i = 0; i < picker.cols.length; i += 1) {\n if (picker.cols[i] && !picker.cols[i].divider) {\n picker.cols[i].setValue(values[valueIndex]);\n valueIndex += 1;\n }\n }\n }\n getValue() {\n const picker = this;\n return picker.value;\n }\n updateValue(forceValues) {\n const picker = this;\n const newValue = forceValues || [];\n const newDisplayValue = [];\n let column;\n if (picker.cols.length === 0) {\n const noDividerColumns = picker.params.cols.filter(c => !c.divider);\n for (let i = 0; i < noDividerColumns.length; i += 1) {\n column = noDividerColumns[i];\n if (column.displayValues !== undefined && column.values !== undefined && column.values.indexOf(newValue[i]) !== -1) {\n newDisplayValue.push(column.displayValues[column.values.indexOf(newValue[i])]);\n } else {\n newDisplayValue.push(newValue[i]);\n }\n }\n } else {\n for (let i = 0; i < picker.cols.length; i += 1) {\n if (!picker.cols[i].divider) {\n newValue.push(picker.cols[i].value);\n newDisplayValue.push(picker.cols[i].displayValue);\n }\n }\n }\n if (newValue.indexOf(undefined) >= 0) {\n return;\n }\n picker.value = newValue;\n picker.displayValue = newDisplayValue;\n picker.emit('local::change pickerChange', picker, picker.value, picker.displayValue);\n if (picker.inputEl) {\n picker.$inputEl.val(picker.formatValue());\n picker.$inputEl.trigger('change');\n }\n }\n initColumn(colEl, updateItems) {\n const picker = this;\n pickerColumn.call(picker, colEl, updateItems);\n }\n // eslint-disable-next-line\n destroyColumn(colEl) {\n const picker = this;\n const $colEl = $(colEl);\n const index = $colEl.index();\n if (picker.cols[index] && picker.cols[index].destroy) {\n picker.cols[index].destroy();\n }\n }\n renderToolbar() {\n const picker = this;\n if (picker.params.renderToolbar) return picker.params.renderToolbar.call(picker, picker);\n return $jsx(\"div\", {\n class: \"toolbar toolbar-top\"\n }, $jsx(\"div\", {\n class: \"toolbar-inner\"\n }, $jsx(\"div\", {\n class: \"left\"\n }), $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link sheet-close popover-close\"\n }, picker.params.toolbarCloseText))));\n }\n // eslint-disable-next-line\n renderColumn(col, onlyItems) {\n const colClasses = `picker-column ${col.textAlign ? `picker-column-${col.textAlign}` : ''} ${col.cssClass || ''}`;\n let columnHtml;\n let columnItemsHtml;\n if (col.divider) {\n // prettier-ignore\n columnHtml = `\n
          ${col.content}
          \n `;\n } else {\n // prettier-ignore\n columnItemsHtml = col.values.map((value, index) => `\n
          \n ${col.displayValues ? col.displayValues[index] : value}\n
          \n `).join('');\n // prettier-ignore\n columnHtml = `\n
          \n
          ${columnItemsHtml}
          \n
          \n `;\n }\n return onlyItems ? columnItemsHtml.trim() : columnHtml.trim();\n }\n renderInline() {\n const picker = this;\n const {\n rotateEffect,\n cssClass,\n toolbar\n } = picker.params;\n const inlineHtml = $jsx(\"div\", {\n class: `picker picker-inline ${rotateEffect ? 'picker-3d' : ''} ${cssClass || ''}`\n }, toolbar && picker.renderToolbar(), $jsx(\"div\", {\n class: \"picker-columns\"\n }, picker.cols.map(col => picker.renderColumn(col)), $jsx(\"div\", {\n class: \"picker-center-highlight\"\n })));\n return inlineHtml;\n }\n renderSheet() {\n const picker = this;\n const {\n rotateEffect,\n cssClass,\n toolbar\n } = picker.params;\n const sheetHtml = $jsx(\"div\", {\n class: `sheet-modal picker picker-sheet ${rotateEffect ? 'picker-3d' : ''} ${cssClass || ''}`\n }, toolbar && picker.renderToolbar(), $jsx(\"div\", {\n class: \"sheet-modal-inner picker-columns\"\n }, picker.cols.map(col => picker.renderColumn(col)), $jsx(\"div\", {\n class: \"picker-center-highlight\"\n })));\n return sheetHtml;\n }\n renderPopover() {\n const picker = this;\n const {\n rotateEffect,\n cssClass,\n toolbar\n } = picker.params;\n const popoverHtml = $jsx(\"div\", {\n class: \"popover picker-popover\"\n }, $jsx(\"div\", {\n class: \"popover-inner\"\n }, $jsx(\"div\", {\n class: `picker ${rotateEffect ? 'picker-3d' : ''} ${cssClass || ''}`\n }, toolbar && picker.renderToolbar(), $jsx(\"div\", {\n class: \"picker-columns\"\n }, picker.cols.map(col => picker.renderColumn(col)), $jsx(\"div\", {\n class: \"picker-center-highlight\"\n })))));\n return popoverHtml;\n }\n render() {\n const picker = this;\n if (picker.params.render) return picker.params.render.call(picker);\n if (!picker.inline) {\n if (picker.isPopover()) return picker.renderPopover();\n return picker.renderSheet();\n }\n return picker.renderInline();\n }\n onOpen() {\n const picker = this;\n const {\n initialized,\n $el,\n app,\n $inputEl,\n inline,\n value,\n params\n } = picker;\n picker.opened = true;\n picker.closing = false;\n picker.opening = true;\n\n // Init main events\n picker.attachResizeEvent();\n\n // Init cols\n $el.find('.picker-column').each(colEl => {\n let updateItems = true;\n if (!initialized && params.value || initialized && value) {\n updateItems = false;\n }\n picker.initColumn(colEl, updateItems);\n });\n\n // Set value\n if (!initialized) {\n if (value) picker.setValue(value);else if (params.value) {\n picker.setValue(params.value);\n }\n } else if (value) {\n picker.setValue(value);\n }\n\n // Extra focus\n if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n picker.initialized = true;\n\n // Trigger events\n if ($el) {\n $el.trigger('picker:open');\n }\n if ($inputEl) {\n $inputEl.trigger('picker:open');\n }\n picker.emit('local::open pickerOpen', picker);\n }\n onOpened() {\n const picker = this;\n picker.opening = false;\n if (picker.$el) {\n picker.$el.trigger('picker:opened');\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:opened');\n }\n picker.emit('local::opened pickerOpened', picker);\n }\n onClose() {\n const picker = this;\n const app = picker.app;\n picker.opening = false;\n picker.closing = true;\n\n // Detach events\n picker.detachResizeEvent();\n picker.cols.forEach(col => {\n if (col.destroy) col.destroy();\n });\n if (picker.$inputEl) {\n if (app.theme === 'md') {\n picker.$inputEl.trigger('blur');\n } else {\n const validate = picker.$inputEl.attr('validate');\n const required = picker.$inputEl.attr('required');\n if (validate && required) {\n app.input.validate(picker.$inputEl);\n }\n }\n }\n if (picker.$el) {\n picker.$el.trigger('picker:close');\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:close');\n }\n picker.emit('local::close pickerClose', picker);\n }\n onClosed() {\n const picker = this;\n picker.opened = false;\n picker.closing = false;\n if (!picker.inline) {\n nextTick(() => {\n if (picker.modal && picker.modal.el && picker.modal.destroy) {\n if (!picker.params.routableModals) {\n picker.modal.destroy();\n }\n }\n delete picker.modal;\n });\n }\n if (picker.$el) {\n picker.$el.trigger('picker:closed');\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:closed');\n }\n picker.emit('local::closed pickerClosed', picker);\n }\n open() {\n const picker = this;\n const {\n app,\n opened,\n inline,\n $inputEl,\n $scrollToEl,\n params\n } = picker;\n if (opened) return;\n if (picker.cols.length === 0 && params.cols.length) {\n params.cols.forEach(col => {\n picker.cols.push(col);\n });\n }\n if (inline) {\n picker.$el = $(picker.render());\n picker.$el[0].f7Picker = picker;\n picker.$containerEl.append(picker.$el);\n picker.onOpen();\n picker.onOpened();\n return;\n }\n const isPopover = picker.isPopover();\n const modalType = isPopover ? 'popover' : 'sheet';\n const modalParams = {\n targetEl: $inputEl,\n scrollToEl: $scrollToEl,\n content: picker.render(),\n backdrop: typeof params.backdrop !== 'undefined' ? params.backdrop : isPopover,\n on: {\n open() {\n const modal = this;\n picker.modal = modal;\n picker.$el = isPopover ? modal.$el.find('.picker') : modal.$el;\n picker.$el[0].f7Picker = picker;\n picker.onOpen();\n },\n opened() {\n picker.onOpened();\n },\n close() {\n picker.onClose();\n },\n closed() {\n picker.onClosed();\n }\n }\n };\n if (modalType === 'sheet') {\n modalParams.push = params.sheetPush;\n modalParams.swipeToClose = params.sheetSwipeToClose;\n }\n if (params.routableModals && picker.view) {\n picker.view.router.navigate({\n url: picker.url,\n route: {\n path: picker.url,\n [modalType]: modalParams\n }\n });\n } else {\n picker.modal = app[modalType].create(modalParams);\n picker.modal.open();\n }\n }\n close() {\n const picker = this;\n const {\n opened,\n inline\n } = picker;\n if (!opened) return;\n if (inline) {\n picker.onClose();\n picker.onClosed();\n return;\n }\n if (picker.params.routableModals && picker.view) {\n picker.view.router.back();\n } else {\n picker.modal.close();\n }\n }\n init() {\n const picker = this;\n picker.initInput();\n if (picker.inline) {\n picker.open();\n picker.emit('local::init pickerInit', picker);\n return;\n }\n if (!picker.initialized && picker.params.value) {\n picker.setValue(picker.params.value);\n }\n\n // Attach input Events\n if (picker.$inputEl) {\n picker.attachInputEvents();\n }\n if (picker.params.closeByOutsideClick) {\n picker.attachHtmlEvents();\n }\n picker.emit('local::init pickerInit', picker);\n }\n destroy() {\n const picker = this;\n if (picker.destroyed) return;\n const {\n $el\n } = picker;\n picker.emit('local::beforeDestroy pickerBeforeDestroy', picker);\n if ($el) $el.trigger('picker:beforedestroy');\n picker.close();\n\n // Detach Events\n if (picker.$inputEl) {\n picker.detachInputEvents();\n }\n if (picker.params.closeByOutsideClick) {\n picker.detachHtmlEvents();\n }\n if ($el && $el.length) delete picker.$el[0].f7Picker;\n deleteProps(picker);\n picker.destroyed = true;\n }\n}\nexport default Picker;","import $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport Picker from './picker-class.js';\nexport default {\n name: 'picker',\n static: {\n Picker\n },\n create() {\n const app = this;\n app.picker = ConstructorMethods({\n defaultSelector: '.picker',\n constructor: Picker,\n app,\n domProp: 'f7Picker'\n });\n app.picker.close = function close(el) {\n if (el === void 0) {\n el = '.picker';\n }\n const $el = $(el);\n if ($el.length === 0) return;\n const picker = $el[0].f7Picker;\n if (!picker || picker && !picker.opened) return;\n picker.close();\n };\n },\n params: {\n picker: {\n // Picker settings\n rotateEffect: false,\n freeMode: false,\n cols: [],\n // Common opener settings\n containerEl: null,\n openIn: 'auto',\n // or 'popover' or 'sheet'\n sheetPush: false,\n sheetSwipeToClose: undefined,\n backdrop: undefined,\n // uses Popover or Sheet defaults\n formatValue: null,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n scrollToEl: undefined,\n toolbar: true,\n toolbarCloseText: 'Done',\n cssClass: null,\n routableModals: false,\n view: null,\n url: 'select/',\n // Render functions\n renderToolbar: null,\n render: null\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nconst InfiniteScroll = {\n handle(el, e) {\n const app = this;\n const $el = $(el);\n const scrollTop = $el[0].scrollTop;\n const scrollHeight = $el[0].scrollHeight;\n const height = $el[0].offsetHeight;\n let distance = $el[0].getAttribute('data-infinite-distance');\n const virtualListContainer = $el.find('.virtual-list');\n let virtualList;\n const onTop = $el.hasClass('infinite-scroll-top');\n if (!distance) distance = 50;\n if (typeof distance === 'string' && distance.indexOf('%') >= 0) {\n distance = parseInt(distance, 10) / 100 * height;\n }\n if (distance > height) distance = height;\n if (onTop) {\n if (scrollTop < distance) {\n $el.trigger('infinite', e);\n app.emit('infinite', $el[0], e);\n }\n } else if (scrollTop + height >= scrollHeight - distance) {\n if (virtualListContainer.length > 0) {\n virtualList = virtualListContainer.eq(-1)[0].f7VirtualList;\n if (virtualList && !virtualList.reachEnd && !virtualList.params.updatableScroll) {\n return;\n }\n }\n $el.trigger('infinite', e);\n app.emit('infinite', $el[0], e);\n }\n },\n create(el) {\n const $el = $(el);\n const app = this;\n function scrollHandler(e) {\n app.infiniteScroll.handle(this, e);\n }\n $el.each(element => {\n element.f7InfiniteScrollHandler = scrollHandler;\n element.addEventListener('scroll', element.f7InfiniteScrollHandler);\n });\n },\n destroy(el) {\n const $el = $(el);\n $el.each(element => {\n element.removeEventListener('scroll', element.f7InfiniteScrollHandler);\n delete element.f7InfiniteScrollHandler;\n });\n }\n};\nexport default {\n name: 'infiniteScroll',\n create() {\n const app = this;\n bindMethods(app, {\n infiniteScroll: InfiniteScroll\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n const $isEls = $tabEl.find('.infinite-scroll-content');\n if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);\n $isEls.each(el => {\n app.infiniteScroll.create(el);\n });\n },\n tabBeforeRemove(tabEl) {\n const $tabEl = $(tabEl);\n const app = this;\n const $isEls = $tabEl.find('.infinite-scroll-content');\n if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);\n $isEls.each(el => {\n app.infiniteScroll.destroy(el);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.infinite-scroll-content').each(el => {\n app.infiniteScroll.create(el);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.infinite-scroll-content').each(el => {\n app.infiniteScroll.destroy(el);\n });\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nclass PullToRefresh extends Framework7Class {\n constructor(app, el) {\n super({}, [app]);\n const ptr = this;\n const device = getDevice();\n const support = getSupport();\n const $el = $(el);\n const $preloaderEl = $el.find('.ptr-preloader');\n ptr.$el = $el;\n ptr.el = $el[0];\n ptr.app = app;\n ptr.bottom = ptr.$el.hasClass('ptr-bottom');\n\n // Extend defaults with modules params\n ptr.useModulesParams({});\n const isMaterial = app.theme === 'md';\n const isIos = app.theme === 'ios';\n\n // Done\n ptr.done = function done() {\n const $transitionTarget = isMaterial ? $preloaderEl : $el;\n const onTranstionEnd = e => {\n if ($(e.target).closest($preloaderEl).length) return;\n $el.removeClass('ptr-transitioning ptr-pull-up ptr-pull-down ptr-closing');\n $el.trigger('ptr:done');\n ptr.emit('local::done ptrDone', $el[0]);\n $transitionTarget.off('transitionend', onTranstionEnd);\n };\n $transitionTarget.on('transitionend', onTranstionEnd);\n $el.removeClass('ptr-refreshing').addClass('ptr-transitioning ptr-closing');\n return ptr;\n };\n ptr.refresh = function refresh() {\n if ($el.hasClass('ptr-refreshing')) return ptr;\n $el.addClass('ptr-transitioning ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n return ptr;\n };\n\n // Mousewheel\n ptr.mousewheel = $el.attr('data-ptr-mousewheel') === 'true';\n\n // Events handling\n let touchId;\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let isScrolling;\n let touchesDiff;\n let refresh = false;\n let useTranslate = false;\n let forceUseTranslate = false;\n let startTranslate = 0;\n let translate;\n let scrollTop;\n let wasScrolled;\n let triggerDistance;\n let dynamicTriggerDistance;\n let pullStarted;\n let hasNavbar = false;\n let scrollHeight;\n let offsetHeight;\n let maxScrollTop;\n const $pageEl = $el.parents('.page');\n if ($pageEl.find('.navbar').length > 0 || $pageEl.parents('.view').children('.navbars').length > 0) hasNavbar = true;\n if ($pageEl.hasClass('no-navbar')) hasNavbar = false;\n if (!ptr.bottom) {\n const pageNavbarEl = app.navbar.getElByPage($pageEl[0]);\n if (pageNavbarEl) {\n const $pageNavbarEl = $(pageNavbarEl);\n const isLargeTransparent = $pageNavbarEl.hasClass('navbar-large-transparent') || $pageNavbarEl.hasClass('navbar-large') && $pageNavbarEl.hasClass('navbar-transparent');\n const isTransparent = $pageNavbarEl.hasClass('navbar-transparent') && !$pageNavbarEl.hasClass('navbar-large');\n if (isLargeTransparent) {\n $el.addClass('ptr-with-navbar-large-transparent');\n } else if (isTransparent) {\n $el.addClass('ptr-with-navbar-transparent');\n }\n }\n }\n if (!hasNavbar && !ptr.bottom) $el.addClass('ptr-no-navbar');\n\n // Define trigger distance\n if ($el.attr('data-ptr-distance')) {\n dynamicTriggerDistance = true;\n } else if (isMaterial) {\n triggerDistance = 66;\n } else if (isIos) {\n triggerDistance = 44;\n }\n function setPreloaderProgress(progress) {\n if (progress === void 0) {\n progress = 0;\n }\n const $bars = $preloaderEl.find('.preloader-inner-line');\n const perBarProgress = 1 / $bars.length;\n $bars.forEach((barEl, barIndex) => {\n const barProgress = (progress - barIndex * perBarProgress) / perBarProgress;\n barEl.style.opacity = Math.max(Math.min(barProgress, 1), 0) * 0.27;\n });\n }\n function unsetPreloaderProgress() {\n $preloaderEl.find('.preloader-inner-line').css('opacity', '');\n }\n function handleTouchStart(e) {\n if (!e.isTrusted) return;\n if (isTouched) {\n if (device.os === 'android') {\n if ('targetTouches' in e && e.targetTouches.length > 1) return;\n } else return;\n }\n if ($el.hasClass('ptr-refreshing')) {\n return;\n }\n if ($(e.target).closest('.sortable-handler, .ptr-ignore, .card-expandable.card-opened').length) return;\n isMoved = false;\n pullStarted = false;\n isTouched = true;\n isScrolling = undefined;\n wasScrolled = undefined;\n if (e.type === 'touchstart') touchId = e.targetTouches[0].identifier;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function handleTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n let pageX;\n let pageY;\n let touch;\n if (e.type === 'touchmove') {\n if (touchId && e.touches) {\n for (let i = 0; i < e.touches.length; i += 1) {\n if (e.touches[i].identifier === touchId) {\n touch = e.touches[i];\n }\n }\n }\n if (!touch) touch = e.targetTouches[0];\n pageX = touch.pageX;\n pageY = touch.pageY;\n } else {\n pageX = e.pageX;\n pageY = e.pageY;\n }\n if (!pageX || !pageY) return;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (!isScrolling) {\n isTouched = false;\n return;\n }\n scrollTop = $el[0].scrollTop;\n if (!isMoved) {\n $el.removeClass('ptr-transitioning');\n if (isIos) {\n setPreloaderProgress(0);\n }\n let targetIsScrollable;\n scrollHeight = $el[0].scrollHeight;\n offsetHeight = $el[0].offsetHeight;\n if (ptr.bottom) {\n maxScrollTop = scrollHeight - offsetHeight;\n }\n if (scrollTop > scrollHeight) {\n isTouched = false;\n return;\n }\n const $ptrWatchScrollable = $(e.target).closest('.ptr-watch-scroll');\n if ($ptrWatchScrollable.length) {\n $ptrWatchScrollable.each(ptrScrollableEl => {\n if (ptrScrollableEl === el) return;\n if (ptrScrollableEl.scrollHeight > ptrScrollableEl.offsetHeight && $(ptrScrollableEl).css('overflow') === 'auto' && (!ptr.bottom && ptrScrollableEl.scrollTop > 0 || ptr.bottom && ptrScrollableEl.scrollTop < ptrScrollableEl.scrollHeight - ptrScrollableEl.offsetHeight)) {\n targetIsScrollable = true;\n }\n });\n }\n if (targetIsScrollable) {\n isTouched = false;\n return;\n }\n if (dynamicTriggerDistance) {\n triggerDistance = $el.attr('data-ptr-distance');\n if (triggerDistance.indexOf('%') >= 0) triggerDistance = scrollHeight * parseInt(triggerDistance, 10) / 100;\n }\n startTranslate = $el.hasClass('ptr-refreshing') ? triggerDistance : 0;\n if (scrollHeight === offsetHeight || device.os !== 'ios' || isMaterial) {\n useTranslate = true;\n } else {\n useTranslate = false;\n }\n forceUseTranslate = false;\n }\n isMoved = true;\n touchesDiff = pageY - touchesStart.y;\n if (typeof wasScrolled === 'undefined' && (ptr.bottom ? scrollTop !== maxScrollTop : scrollTop !== 0)) wasScrolled = true;\n const ptrStarted = ptr.bottom ? touchesDiff < 0 && scrollTop >= maxScrollTop || scrollTop > maxScrollTop : touchesDiff > 0 && scrollTop <= 0 || scrollTop < 0;\n if (ptrStarted) {\n // iOS 8 fix\n if (device.os === 'ios' && parseInt(device.osVersion.split('.')[0], 10) > 7) {\n if (!ptr.bottom && scrollTop === 0 && !wasScrolled) useTranslate = true;\n if (ptr.bottom && scrollTop === maxScrollTop && !wasScrolled) useTranslate = true;\n }\n if (!useTranslate && ptr.bottom && !isMaterial) {\n $el.css('-webkit-overflow-scrolling', 'auto');\n $el.scrollTop(maxScrollTop);\n forceUseTranslate = true;\n }\n if (useTranslate || forceUseTranslate) {\n if (e.cancelable) {\n e.preventDefault();\n }\n translate = (ptr.bottom ? -1 * Math.abs(touchesDiff) ** 0.85 : touchesDiff ** 0.85) + startTranslate;\n if (isMaterial) {\n $preloaderEl.transform(`translate3d(0,${translate}px,0)`).find('.ptr-arrow').transform(`rotate(${180 * (Math.abs(touchesDiff) / 66) + 100}deg)`);\n } else {\n // eslint-disable-next-line\n if (ptr.bottom || isIos) {\n $el.children().transform(`translate3d(0,${translate}px,0)`);\n } else {\n // eslint-disable-next-line\n $el.transform(`translate3d(0,${translate}px,0)`);\n }\n if (isIos) {\n $preloaderEl.transform(`translate3d(0,0px,0)`);\n }\n }\n } else if (isIos && !ptr.bottom) {\n $preloaderEl.transform(`translate3d(0,${scrollTop}px,0)`);\n }\n let progress;\n if (isIos && !refresh) {\n progress = useTranslate || forceUseTranslate ? Math.abs(touchesDiff) ** 0.85 / triggerDistance : Math.abs(touchesDiff) / (triggerDistance * 2);\n setPreloaderProgress(progress);\n }\n if ((useTranslate || forceUseTranslate) && Math.abs(touchesDiff) ** 0.85 > triggerDistance || !useTranslate && Math.abs(touchesDiff) >= triggerDistance * 2) {\n refresh = true;\n $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');\n unsetPreloaderProgress();\n } else {\n refresh = false;\n $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');\n }\n if (!pullStarted) {\n $el.trigger('ptr:pullstart');\n ptr.emit('local::pullStart ptrPullStart', $el[0]);\n pullStarted = true;\n }\n $el.trigger('ptr:pullmove', {\n event: e,\n scrollTop,\n translate,\n touchesDiff\n });\n ptr.emit('local::pullMove ptrPullMove', $el[0], {\n event: e,\n scrollTop,\n translate,\n touchesDiff\n });\n } else {\n pullStarted = false;\n $el.removeClass('ptr-pull-up ptr-pull-down');\n refresh = false;\n }\n }\n function handleTouchEnd(e) {\n if (!e.isTrusted) return;\n if (e.type === 'touchend' && e.changedTouches && e.changedTouches.length > 0 && touchId) {\n if (e.changedTouches[0].identifier !== touchId) {\n isTouched = false;\n isScrolling = false;\n isMoved = false;\n touchId = null;\n return;\n }\n }\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n if (translate) {\n $el.addClass('ptr-transitioning');\n translate = 0;\n }\n if (isMaterial) {\n $preloaderEl.transform('').find('.ptr-arrow').transform('');\n } else {\n $preloaderEl.transform('');\n if (ptr.bottom || isIos) {\n $el.children().transform('');\n } else {\n $el.transform('');\n }\n }\n if (!useTranslate && ptr.bottom && !isMaterial) {\n $el.css('-webkit-overflow-scrolling', '');\n }\n if (refresh) {\n $el.addClass('ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n } else {\n $el.removeClass('ptr-pull-down');\n }\n isTouched = false;\n isMoved = false;\n if (pullStarted) {\n $el.trigger('ptr:pullend');\n ptr.emit('local::pullEnd ptrPullEnd', $el[0]);\n }\n }\n let mousewheelTimeout;\n let mousewheelMoved;\n let mousewheelAllow = true;\n let mousewheelTranslate = 0;\n function handleMouseWheelRelease() {\n mousewheelAllow = true;\n mousewheelMoved = false;\n mousewheelTranslate = 0;\n if (translate) {\n $el.addClass('ptr-transitioning');\n translate = 0;\n }\n if (isMaterial) {\n $preloaderEl.transform('').find('.ptr-arrow').transform('');\n } else {\n $preloaderEl.transform('');\n if (ptr.bottom) {\n $el.children().transform('');\n } else {\n $el.transform('');\n }\n }\n if (refresh) {\n $el.addClass('ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n } else {\n $el.removeClass('ptr-pull-down');\n }\n if (pullStarted) {\n $el.trigger('ptr:pullend');\n ptr.emit('local::pullEnd ptrPullEnd', $el[0]);\n }\n }\n function handleMouseWheel(e) {\n if (!mousewheelAllow) return;\n const {\n deltaX,\n deltaY\n } = e;\n if (Math.abs(deltaX) > Math.abs(deltaY)) return;\n if ($el.hasClass('ptr-refreshing')) {\n return;\n }\n if ($(e.target).closest('.sortable-handler, .ptr-ignore, .card-expandable.card-opened').length) return;\n clearTimeout(mousewheelTimeout);\n scrollTop = $el[0].scrollTop;\n if (!mousewheelMoved) {\n $el.removeClass('ptr-transitioning');\n if (isIos) {\n setPreloaderProgress(0);\n }\n let targetIsScrollable;\n scrollHeight = $el[0].scrollHeight;\n offsetHeight = $el[0].offsetHeight;\n if (ptr.bottom) {\n maxScrollTop = scrollHeight - offsetHeight;\n }\n if (scrollTop > scrollHeight) {\n mousewheelAllow = false;\n return;\n }\n const $ptrWatchScrollable = $(e.target).closest('.ptr-watch-scroll');\n if ($ptrWatchScrollable.length) {\n $ptrWatchScrollable.each(ptrScrollableEl => {\n if (ptrScrollableEl === el) return;\n if (ptrScrollableEl.scrollHeight > ptrScrollableEl.offsetHeight && $(ptrScrollableEl).css('overflow') === 'auto' && (!ptr.bottom && ptrScrollableEl.scrollTop > 0 || ptr.bottom && ptrScrollableEl.scrollTop < ptrScrollableEl.scrollHeight - ptrScrollableEl.offsetHeight)) {\n targetIsScrollable = true;\n }\n });\n }\n if (targetIsScrollable) {\n mousewheelAllow = false;\n return;\n }\n if (dynamicTriggerDistance) {\n triggerDistance = $el.attr('data-ptr-distance');\n if (triggerDistance.indexOf('%') >= 0) triggerDistance = scrollHeight * parseInt(triggerDistance, 10) / 100;\n }\n }\n isMoved = true;\n mousewheelTranslate -= deltaY;\n touchesDiff = mousewheelTranslate; // pageY - touchesStart.y;\n\n if (typeof wasScrolled === 'undefined' && (ptr.bottom ? scrollTop !== maxScrollTop : scrollTop !== 0)) wasScrolled = true;\n const ptrStarted = ptr.bottom ? touchesDiff < 0 && scrollTop >= maxScrollTop || scrollTop > maxScrollTop : touchesDiff > 0 && scrollTop <= 0 || scrollTop < 0;\n if (ptrStarted) {\n if (e.cancelable) {\n e.preventDefault();\n }\n translate = touchesDiff;\n if (Math.abs(translate) > triggerDistance) {\n translate = triggerDistance + (Math.abs(translate) - triggerDistance) ** 0.7;\n if (ptr.bottom) translate = -translate;\n }\n if (isMaterial) {\n $preloaderEl.transform(`translate3d(0,${translate}px,0)`).find('.ptr-arrow').transform(`rotate(${180 * (Math.abs(touchesDiff) / 66) + 100}deg)`);\n } else {\n // eslint-disable-next-line\n if (ptr.bottom) {\n $el.children().transform(`translate3d(0,${translate}px,0)`);\n } else {\n $el.transform(`translate3d(0,${translate}px,0)`);\n if (isIos) {\n $preloaderEl.transform(`translate3d(0,${-translate}px,0)`);\n }\n }\n }\n let progress;\n if (isIos && !refresh) {\n progress = Math.abs(translate) / triggerDistance;\n setPreloaderProgress(progress);\n }\n if (Math.abs(translate) > triggerDistance) {\n refresh = true;\n $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');\n unsetPreloaderProgress();\n } else {\n refresh = false;\n $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');\n }\n if (!pullStarted) {\n $el.trigger('ptr:pullstart');\n ptr.emit('local::pullStart ptrPullStart', $el[0]);\n pullStarted = true;\n }\n $el.trigger('ptr:pullmove', {\n event: e,\n scrollTop,\n translate,\n touchesDiff\n });\n ptr.emit('local::pullMove ptrPullMove', $el[0], {\n event: e,\n scrollTop,\n translate,\n touchesDiff\n });\n } else {\n pullStarted = false;\n $el.removeClass('ptr-pull-up ptr-pull-down');\n refresh = false;\n }\n mousewheelTimeout = setTimeout(handleMouseWheelRelease, 300);\n }\n if (!$pageEl.length || !$el.length) return ptr;\n $el[0].f7PullToRefresh = ptr;\n\n // Events\n ptr.attachEvents = function attachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n if (ptr.mousewheel && !ptr.bottom) {\n $el.on('wheel', handleMouseWheel);\n }\n };\n ptr.detachEvents = function detachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n if (ptr.mousewheel && !ptr.bottom) {\n $el.off('wheel', handleMouseWheel);\n }\n };\n\n // Install Modules\n ptr.useModules();\n\n // Init\n ptr.init();\n return ptr;\n }\n init() {\n const ptr = this;\n ptr.attachEvents();\n }\n destroy() {\n let ptr = this;\n ptr.emit('local::beforeDestroy ptrBeforeDestroy', ptr);\n ptr.$el.trigger('ptr:beforedestroy');\n delete ptr.el.f7PullToRefresh;\n ptr.detachEvents();\n deleteProps(ptr);\n ptr = null;\n }\n}\nexport default PullToRefresh;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport PullToRefresh from './pull-to-refresh-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'pullToRefresh',\n create() {\n const app = this;\n app.ptr = extend(ConstructorMethods({\n defaultSelector: '.ptr-content',\n constructor: PullToRefresh,\n app,\n domProp: 'f7PullToRefresh'\n }), {\n done(el) {\n const ptr = app.ptr.get(el);\n if (ptr) return ptr.done();\n return undefined;\n },\n refresh(el) {\n const ptr = app.ptr.get(el);\n if (ptr) return ptr.refresh();\n return undefined;\n }\n });\n },\n static: {\n PullToRefresh\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n const $ptrEls = $tabEl.find('.ptr-content');\n if ($tabEl.is('.ptr-content')) $ptrEls.add($tabEl);\n $ptrEls.each(el => {\n app.ptr.create(el);\n });\n },\n tabBeforeRemove(tabEl) {\n const $tabEl = $(tabEl);\n const app = this;\n const $ptrEls = $tabEl.find('.ptr-content');\n if ($tabEl.is('.ptr-content')) $ptrEls.add($tabEl);\n $ptrEls.each(el => {\n app.ptr.destroy(el);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.ptr-content').each(el => {\n app.ptr.create(el);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.ptr-content').each(el => {\n app.ptr.destroy(el);\n });\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nclass DataTable extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const table = this;\n const defaults = {};\n\n // Extend defaults with modules params\n table.useModulesParams(defaults);\n table.params = extend(defaults, params);\n\n // El\n const $el = $(table.params.el);\n if ($el.length === 0) return undefined;\n table.$el = $el;\n table.el = $el[0];\n if (table.$el[0].f7DataTable) {\n const instance = table.$el[0].f7DataTable;\n table.destroy();\n return instance;\n }\n table.$el[0].f7DataTable = table;\n extend(table, {\n collapsible: $el.hasClass('data-table-collapsible'),\n // Headers\n $headerEl: $el.find('.data-table-header'),\n $headerSelectedEl: $el.find('.data-table-header-selected')\n });\n\n // Events\n function handleChange(e) {\n if (e.detail && e.detail.sentByF7DataTable) {\n // Scripted event, don't do anything\n return;\n }\n const $inputEl = $(this);\n const checked = $inputEl[0].checked;\n const columnIndex = $inputEl.parents('td,th').index();\n if ($inputEl.parents('thead').length > 0) {\n if (columnIndex === 0) {\n $el.find('tbody tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');\n }\n $el.find(`tbody tr td:nth-child(${columnIndex + 1}) input`).prop('checked', checked).trigger('change', {\n sentByF7DataTable: true\n });\n $inputEl.prop('indeterminate', false);\n } else {\n if (columnIndex === 0) {\n $inputEl.parents('tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');\n }\n const checkedRows = $el.find(`tbody .checkbox-cell:nth-child(${columnIndex + 1}) input[type=\"checkbox\"]:checked`).length;\n const totalRows = $el.find('tbody tr').length;\n const $headCheckboxEl = $el.find(`thead .checkbox-cell:nth-child(${columnIndex + 1}) input[type=\"checkbox\"]`);\n if (!checked) {\n $headCheckboxEl.prop('checked', false);\n } else if (checkedRows === totalRows) {\n $headCheckboxEl.prop('checked', true).trigger('change', {\n sentByF7DataTable: true\n });\n }\n $headCheckboxEl.prop('indeterminate', checkedRows > 0 && checkedRows < totalRows);\n }\n table.checkSelectedHeader();\n }\n function handleSortableClick() {\n const $cellEl = $(this);\n const isActive = $cellEl.hasClass('sortable-cell-active');\n const currentSort = $cellEl.hasClass('sortable-desc') ? 'desc' : 'asc';\n let newSort;\n if (isActive) {\n newSort = currentSort === 'desc' ? 'asc' : 'desc';\n $cellEl.removeClass('sortable-desc sortable-asc').addClass(`sortable-${newSort}`);\n } else {\n $el.find('thead .sortable-cell-active').removeClass('sortable-cell-active');\n $cellEl.addClass('sortable-cell-active');\n newSort = currentSort;\n }\n $cellEl.trigger('datatable:sort', newSort);\n table.emit('local::sort dataTableSort', table, newSort);\n }\n table.attachEvents = function attachEvents() {\n table.$el.on('change', '.checkbox-cell input[type=\"checkbox\"]', handleChange);\n table.$el.find('thead .sortable-cell').on('click', handleSortableClick);\n };\n table.detachEvents = function detachEvents() {\n table.$el.off('change', '.checkbox-cell input[type=\"checkbox\"]', handleChange);\n table.$el.find('thead .sortable-cell').off('click', handleSortableClick);\n };\n\n // Install Modules\n table.useModules();\n\n // Init\n table.init();\n return table;\n }\n setCollapsibleLabels() {\n const table = this;\n if (!table.collapsible) return;\n table.$el.find('tbody td:not(.checkbox-cell)').each(el => {\n const $el = $(el);\n const elIndex = $el.index();\n const collapsibleTitle = $el.attr('data-collapsible-title');\n if (!collapsibleTitle && collapsibleTitle !== '') {\n $el.attr('data-collapsible-title', table.$el.find('thead th').eq(elIndex).text());\n }\n });\n }\n checkSelectedHeader() {\n const table = this;\n if (table.$headerEl.length > 0 && table.$headerSelectedEl.length > 0) {\n const checkedItems = table.$el.find('tbody .checkbox-cell input:checked').length;\n table.$el[checkedItems > 0 ? 'addClass' : 'removeClass']('data-table-has-checked');\n table.$headerSelectedEl.find('.data-table-selected-count').text(checkedItems);\n }\n }\n init() {\n const table = this;\n table.attachEvents();\n table.setCollapsibleLabels();\n table.checkSelectedHeader();\n }\n destroy() {\n let table = this;\n table.$el.trigger('datatable:beforedestroy');\n table.emit('local::beforeDestroy dataTableBeforeDestroy', table);\n table.detachEvents();\n if (table.$el[0]) {\n table.$el[0].f7DataTable = null;\n delete table.$el[0].f7DataTable;\n }\n deleteProps(table);\n table = null;\n }\n}\nexport default DataTable;","import $ from '../../shared/dom7.js';\nimport DataTable from './data-table-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'dataTable',\n static: {\n DataTable\n },\n create() {\n const app = this;\n app.dataTable = ConstructorMethods({\n defaultSelector: '.data-table',\n constructor: DataTable,\n app,\n domProp: 'f7DataTable'\n });\n },\n on: {\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.data-table-init').each(tableEl => {\n app.dataTable.destroy(tableEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.data-table-init').each(tableEl => {\n app.dataTable.create({\n el: tableEl\n });\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.data-table-init').each(tableEl => {\n app.dataTable.destroy(tableEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.data-table-init').each(tableEl => {\n app.dataTable.create({\n el: tableEl\n });\n });\n }\n },\n vnode: {\n 'data-table-init': {\n insert(vnode) {\n const app = this;\n const tableEl = vnode.elm;\n app.dataTable.create({\n el: tableEl\n });\n },\n destroy(vnode) {\n const app = this;\n const tableEl = vnode.elm;\n app.dataTable.destroy(tableEl);\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { bindMethods, getTranslate, nextFrame } from '../../shared/utils.js';\nconst Fab = {\n morphOpen(fabEl, targetEl) {\n const app = this;\n const $fabEl = $(fabEl);\n const $targetEl = $(targetEl);\n if ($targetEl.length === 0) return;\n $targetEl.transition(0).addClass('fab-morph-target-visible');\n const target = {\n width: $targetEl[0].offsetWidth,\n height: $targetEl[0].offsetHeight,\n offset: $targetEl.offset(),\n borderRadius: $targetEl.css('border-radius'),\n zIndex: $targetEl.css('z-index')\n };\n const fab = {\n width: $fabEl[0].offsetWidth,\n height: $fabEl[0].offsetHeight,\n offset: $fabEl.offset(),\n translateX: getTranslate($fabEl[0], 'x'),\n translateY: getTranslate($fabEl[0], 'y')\n };\n $fabEl[0].f7FabMorphData = {\n $targetEl,\n target,\n fab\n };\n const diffX = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;\n const diffY = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;\n const scaleX = target.width / fab.width;\n const scaleY = target.height / fab.height;\n let borderRadius = Math.ceil(parseInt(target.borderRadius, 10) / Math.max(scaleX, scaleY));\n if (borderRadius > 0) borderRadius += 2;\n $fabEl[0].f7FabMorphResizeHandler = function resizeHandler() {\n $fabEl.transition(0).transform('');\n $targetEl.transition(0);\n target.width = $targetEl[0].offsetWidth;\n target.height = $targetEl[0].offsetHeight;\n target.offset = $targetEl.offset();\n fab.offset = $fabEl.offset();\n const diffXNew = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;\n const diffYNew = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;\n const scaleXNew = target.width / fab.width;\n const scaleYNew = target.height / fab.height;\n $fabEl.transform(`translate3d(${-diffXNew}px, ${-diffYNew}px, 0) scale(${scaleXNew}, ${scaleYNew})`);\n };\n $targetEl.css('opacity', 0).transform(`scale(${1 / scaleX}, ${1 / scaleY})`);\n $fabEl.addClass('fab-opened').css('z-index', target.zIndex - 1).transform(`translate3d(${-diffX}px, ${-diffY}px, 0)`);\n $fabEl.transitionEnd(() => {\n $targetEl.transition('');\n nextFrame(() => {\n $targetEl.css('opacity', 1).transform('scale(1,1)');\n $fabEl.transform(`translate3d(${-diffX}px, ${-diffY}px, 0) scale(${scaleX}, ${scaleY})`).css('border-radius', `${borderRadius}px`).css('box-shadow', 'none').css('opacity', '0');\n });\n app.on('resize', $fabEl[0].f7FabMorphResizeHandler);\n if ($targetEl.parents('.page-content').length > 0) {\n $targetEl.parents('.page-content').on('scroll', $fabEl[0].f7FabMorphResizeHandler);\n }\n });\n },\n morphClose(fabEl) {\n const app = this;\n const $fabEl = $(fabEl);\n const morphData = $fabEl[0].f7FabMorphData;\n if (!morphData) return;\n const {\n $targetEl,\n target,\n fab\n } = morphData;\n if ($targetEl.length === 0) return;\n const diffX = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;\n const diffY = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;\n const scaleX = target.width / fab.width;\n const scaleY = target.height / fab.height;\n app.off('resize', $fabEl[0].f7FabMorphResizeHandler);\n if ($targetEl.parents('.page-content').length > 0) {\n $targetEl.parents('.page-content').off('scroll', $fabEl[0].f7FabMorphResizeHandler);\n }\n $targetEl.css('opacity', 0).transform(`scale(${1 / scaleX}, ${1 / scaleY})`);\n $fabEl.transition('').css('box-shadow', '').css('border-radius', '').css('opacity', '1').transform(`translate3d(${-diffX}px, ${-diffY}px, 0)`);\n $fabEl.transitionEnd(() => {\n $fabEl.css('z-index', '').removeClass('fab-opened').transform('');\n nextFrame(() => {\n $fabEl.transitionEnd(() => {\n $targetEl.removeClass('fab-morph-target-visible').css('opacity', '').transform('').transition('');\n });\n });\n });\n },\n open(fabEl, targetEl) {\n const app = this;\n const $fabEl = $(fabEl).eq(0);\n const $buttonsEl = $fabEl.find('.fab-buttons');\n if (!$fabEl.length) return;\n if ($fabEl.hasClass('fab-opened')) return;\n if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;\n if (app.fab.openedEl) {\n if (app.fab.openedEl === $fabEl[0]) return;\n app.fab.close(app.fab.openedEl);\n }\n app.fab.openedEl = $fabEl[0];\n if ($fabEl.hasClass('fab-morph')) {\n app.fab.morphOpen($fabEl, targetEl || $fabEl.attr('data-morph-to'));\n } else {\n $fabEl.addClass('fab-opened');\n }\n $fabEl.siblings('.fab-backdrop').addClass('backdrop-in');\n $fabEl.trigger('fab:open');\n },\n close(fabEl) {\n if (fabEl === void 0) {\n fabEl = '.fab-opened';\n }\n const app = this;\n const $fabEl = $(fabEl).eq(0);\n const $buttonsEl = $fabEl.find('.fab-buttons');\n if (!$fabEl.length) return;\n if (!$fabEl.hasClass('fab-opened')) return;\n if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;\n app.fab.openedEl = null;\n if ($fabEl.hasClass('fab-morph')) {\n app.fab.morphClose($fabEl);\n } else {\n $fabEl.removeClass('fab-opened');\n }\n $fabEl.siblings('.fab-backdrop').removeClass('backdrop-in');\n $fabEl.trigger('fab:close');\n },\n toggle(fabEl) {\n const app = this;\n const $fabEl = $(fabEl);\n if (!$fabEl.hasClass('fab-opened')) app.fab.open(fabEl);else app.fab.close(fabEl);\n }\n};\nexport default {\n name: 'fab',\n create() {\n const app = this;\n bindMethods(app, {\n fab: {\n openedEl: null,\n ...Fab\n }\n });\n },\n clicks: {\n '.fab > a': function open($clickedEl) {\n const app = this;\n app.fab.toggle($clickedEl.parents('.fab'));\n },\n '.fab-open': function open($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.fab.open(data.fab);\n },\n '.fab-close': function close($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.fab.close(data.fab);\n },\n '.fab-backdrop': function close() {\n const app = this;\n app.fab.close();\n }\n }\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport FrameworkClass from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport removeDiacritics from './remove-diacritics.js';\nclass Searchbar extends FrameworkClass {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const sb = this;\n const defaults = {\n el: undefined,\n inputEl: undefined,\n inputEvents: 'change input compositionend',\n disableButton: true,\n disableButtonEl: undefined,\n backdropEl: undefined,\n searchContainer: undefined,\n // container to search, HTMLElement or CSS selector\n searchItem: 'li',\n // single item selector, CSS selector\n searchIn: undefined,\n // where to search in item, CSS selector\n searchGroup: '.list-group',\n searchGroupTitle: '.list-group-title',\n ignore: '.searchbar-ignore',\n foundEl: '.searchbar-found',\n notFoundEl: '.searchbar-not-found',\n hideOnEnableEl: '.searchbar-hide-on-enable',\n hideOnSearchEl: '.searchbar-hide-on-search',\n backdrop: true,\n removeDiacritics: true,\n customSearch: false,\n hideGroupTitles: true,\n hideGroups: true,\n disableOnBackdropClick: true,\n expandable: false,\n inline: false\n };\n\n // Extend defaults with modules params\n sb.useModulesParams(defaults);\n sb.params = extend(defaults, params);\n const $el = $(sb.params.el);\n if ($el.length === 0) return sb;\n if ($el[0].f7Searchbar) return $el[0].f7Searchbar;\n $el[0].f7Searchbar = sb;\n let $pageEl;\n const $navbarEl = $el.parents('.navbar');\n if ($el.parents('.page').length > 0) {\n $pageEl = $el.parents('.page');\n } else if ($navbarEl.length > 0) {\n $pageEl = $(app.navbar.getPageByEl($navbarEl[0]));\n if (!$pageEl.length) {\n const $currentPageEl = $el.parents('.view').find('.page-current');\n if ($currentPageEl[0] && $currentPageEl[0].f7Page && $currentPageEl[0].f7Page.navbarEl === $navbarEl[0]) {\n $pageEl = $currentPageEl;\n }\n }\n }\n let $foundEl;\n if (params.foundEl) {\n $foundEl = $(params.foundEl);\n } else if (typeof sb.params.foundEl === 'string' && $pageEl) {\n $foundEl = $pageEl.find(sb.params.foundEl);\n }\n let $notFoundEl;\n if (params.notFoundEl) {\n $notFoundEl = $(params.notFoundEl);\n } else if (typeof sb.params.notFoundEl === 'string' && $pageEl) {\n $notFoundEl = $pageEl.find(sb.params.notFoundEl);\n }\n let $hideOnEnableEl;\n if (params.hideOnEnableEl) {\n $hideOnEnableEl = $(params.hideOnEnableEl);\n } else if (typeof sb.params.hideOnEnableEl === 'string' && $pageEl) {\n $hideOnEnableEl = $pageEl.find(sb.params.hideOnEnableEl);\n }\n let $hideOnSearchEl;\n if (params.hideOnSearchEl) {\n $hideOnSearchEl = $(params.hideOnSearchEl);\n } else if (typeof sb.params.hideOnSearchEl === 'string' && $pageEl) {\n $hideOnSearchEl = $pageEl.find(sb.params.hideOnSearchEl);\n }\n const expandable = sb.params.expandable || $el.hasClass('searchbar-expandable');\n const inline = sb.params.inline || $el.hasClass('searchbar-inline');\n if (typeof sb.params.backdrop === 'undefined') {\n sb.params.backdrop = !inline;\n }\n let $backdropEl;\n if (sb.params.backdrop) {\n if (sb.params.backdropEl) {\n $backdropEl = $(sb.params.backdropEl);\n } else if ($pageEl && $pageEl.length > 0) {\n $backdropEl = $pageEl.find('.searchbar-backdrop');\n } else {\n $backdropEl = $el.siblings('.searchbar-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('
          ');\n if ($pageEl && $pageEl.length) {\n if ($el.parents($pageEl).length > 0 && $navbarEl && $el.parents($navbarEl).length === 0) {\n $backdropEl.insertBefore($el);\n } else {\n $backdropEl.insertBefore($pageEl.find('.page-content').eq(0));\n }\n } else {\n $backdropEl.insertBefore($el);\n }\n }\n }\n let $searchContainer;\n if (sb.params.searchContainer) {\n $searchContainer = $(sb.params.searchContainer);\n }\n let $inputEl;\n if (sb.params.inputEl) {\n $inputEl = $(sb.params.inputEl);\n } else {\n $inputEl = $el.find('input[type=\"search\"]').eq(0);\n }\n let $disableButtonEl;\n if (sb.params.disableButton) {\n if (sb.params.disableButtonEl) {\n $disableButtonEl = $(sb.params.disableButtonEl);\n } else {\n $disableButtonEl = $el.find('.searchbar-disable-button');\n }\n }\n extend(sb, {\n app,\n view: app.views.get($el.parents('.view')),\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n $searchContainer,\n searchContainer: $searchContainer && $searchContainer[0],\n $inputEl,\n inputEl: $inputEl[0],\n $disableButtonEl,\n disableButtonEl: $disableButtonEl && $disableButtonEl[0],\n disableButtonHasMargin: false,\n $pageEl,\n pageEl: $pageEl && $pageEl[0],\n $navbarEl,\n navbarEl: $navbarEl && $navbarEl[0],\n $foundEl,\n foundEl: $foundEl && $foundEl[0],\n $notFoundEl,\n notFoundEl: $notFoundEl && $notFoundEl[0],\n $hideOnEnableEl,\n hideOnEnableEl: $hideOnEnableEl && $hideOnEnableEl[0],\n $hideOnSearchEl,\n hideOnSearchEl: $hideOnSearchEl && $hideOnSearchEl[0],\n previousQuery: '',\n query: '',\n isVirtualList: $searchContainer && $searchContainer.hasClass('virtual-list'),\n virtualList: undefined,\n enabled: false,\n expandable,\n inline\n });\n\n // Events\n function preventSubmit(e) {\n e.preventDefault();\n }\n function onInputFocus(e) {\n sb.enable(e);\n sb.$el.addClass('searchbar-focused');\n }\n function onInputBlur() {\n sb.$el.removeClass('searchbar-focused');\n }\n function onInputChange() {\n const value = sb.$inputEl.val().trim();\n if (sb.$searchContainer && sb.$searchContainer.length > 0 && (sb.params.searchIn || sb.isVirtualList || sb.params.searchIn === sb.params.searchItem) || sb.params.customSearch) {\n sb.search(value, true);\n }\n }\n function onInputClear(e, previousValue) {\n sb.$el.trigger('searchbar:clear', previousValue);\n sb.emit('local::clear searchbarClear', sb, previousValue);\n }\n function disableOnClick(e) {\n sb.disable(e);\n }\n function onPageBeforeOut() {\n if (!sb || sb && !sb.$el) return;\n if (sb.enabled) {\n sb.$el.removeClass('searchbar-enabled');\n if (sb.expandable) {\n sb.$el.parents('.navbar').removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition');\n }\n }\n }\n function onPageBeforeIn() {\n if (!sb || sb && !sb.$el) return;\n if (sb.enabled) {\n sb.$el.addClass('searchbar-enabled');\n if (sb.expandable) {\n sb.$el.parents('.navbar').addClass('with-searchbar-expandable-enabled-no-transition');\n }\n }\n }\n sb.attachEvents = function attachEvents() {\n $el.on('submit', preventSubmit);\n if (sb.params.disableButton) {\n sb.$disableButtonEl.on('click', disableOnClick);\n }\n if (sb.params.disableOnBackdropClick && sb.$backdropEl) {\n sb.$backdropEl.on('click', disableOnClick);\n }\n if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {\n sb.$pageEl.on('page:beforeout', onPageBeforeOut);\n sb.$pageEl.on('page:beforein', onPageBeforeIn);\n }\n sb.$inputEl.on('focus', onInputFocus);\n sb.$inputEl.on('blur', onInputBlur);\n sb.$inputEl.on(sb.params.inputEvents, onInputChange);\n sb.$inputEl.on('input:clear', onInputClear);\n };\n sb.detachEvents = function detachEvents() {\n $el.off('submit', preventSubmit);\n if (sb.params.disableButton) {\n sb.$disableButtonEl.off('click', disableOnClick);\n }\n if (sb.params.disableOnBackdropClick && sb.$backdropEl) {\n sb.$backdropEl.off('click', disableOnClick);\n }\n if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {\n sb.$pageEl.off('page:beforeout', onPageBeforeOut);\n sb.$pageEl.off('page:beforein', onPageBeforeIn);\n }\n sb.$inputEl.off('focus', onInputFocus);\n sb.$inputEl.off('blur', onInputBlur);\n sb.$inputEl.off(sb.params.inputEvents, onInputChange);\n sb.$inputEl.off('input:clear', onInputClear);\n };\n\n // Install Modules\n sb.useModules();\n\n // Init\n sb.init();\n return sb;\n }\n clear(e) {\n const sb = this;\n if (!sb.query && e && $(e.target).hasClass('searchbar-clear')) {\n sb.disable();\n return sb;\n }\n const previousQuery = sb.value;\n sb.$inputEl.val('').trigger('change').focus();\n sb.$el.trigger('searchbar:clear', previousQuery);\n sb.emit('local::clear searchbarClear', sb, previousQuery);\n return sb;\n }\n setDisableButtonMargin() {\n const sb = this;\n if (sb.expandable) return;\n const app = sb.app;\n sb.$disableButtonEl.transition(0).show();\n sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, `${-sb.disableButtonEl.offsetWidth}px`);\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n sb._clientLeft = sb.$disableButtonEl[0].clientLeft;\n sb.$disableButtonEl.transition('');\n sb.disableButtonHasMargin = true;\n }\n enable(setFocus) {\n const sb = this;\n if (sb.enabled) return sb;\n const app = sb.app;\n const document = getDocument();\n const device = getDevice();\n sb.enabled = true;\n function enable() {\n if (sb.$backdropEl && (sb.$searchContainer && sb.$searchContainer.length || sb.params.customSearch) && !sb.$el.hasClass('searchbar-enabled') && !sb.query) {\n sb.backdropShow();\n }\n sb.$el.addClass('searchbar-enabled');\n if (!sb.$disableButtonEl || sb.$disableButtonEl && sb.$disableButtonEl.length === 0) {\n sb.$el.addClass('searchbar-enabled-no-disable-button');\n }\n if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme !== 'md') {\n if (!sb.disableButtonHasMargin) {\n sb.setDisableButtonMargin();\n }\n sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, '0px');\n }\n if (sb.expandable) {\n const $navbarEl = sb.$el.parents('.navbar');\n if ($navbarEl.hasClass('navbar-large') && sb.$pageEl) {\n const $pageContentEl = sb.$pageEl.find('.page-content');\n const $titleLargeEl = $navbarEl.find('.title-large');\n $pageContentEl.addClass('with-searchbar-expandable-enabled');\n if ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-large-collapsed') && $titleLargeEl.length && $pageContentEl.length) {\n $pageContentEl.transition(0);\n $pageContentEl[0].scrollTop -= $titleLargeEl[0].offsetHeight;\n setTimeout(() => {\n $pageContentEl.transition('');\n }, 200);\n }\n }\n if (app.theme === 'md' && $navbarEl.length) {\n $navbarEl.addClass('with-searchbar-expandable-enabled');\n } else {\n $navbarEl.addClass('with-searchbar-expandable-enabled');\n if ($navbarEl.hasClass('navbar-large')) {\n $navbarEl.addClass('navbar-large-collapsed');\n }\n }\n }\n if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.addClass('hidden-by-searchbar');\n sb.$el.trigger('searchbar:enable');\n sb.emit('local::enable searchbarEnable', sb);\n }\n let needsFocus = false;\n if (setFocus === true) {\n if (document.activeElement !== sb.inputEl) {\n needsFocus = true;\n }\n }\n const isIos = device.ios && app.theme === 'ios';\n if (isIos) {\n if (sb.expandable) {\n if (needsFocus) sb.$inputEl.focus();\n enable();\n } else {\n if (needsFocus) sb.$inputEl.focus();\n if (setFocus && (setFocus.type === 'focus' || setFocus === true)) {\n nextTick(() => {\n enable();\n }, 400);\n } else {\n enable();\n }\n }\n } else {\n if (needsFocus) sb.$inputEl.focus();\n if (app.theme === 'md' && sb.expandable) {\n sb.$el.parents('.page, .view, .navbar-inner, .navbar').scrollLeft(app.rtl ? 100 : 0);\n }\n enable();\n }\n return sb;\n }\n disable() {\n const sb = this;\n if (!sb.enabled) return sb;\n const app = sb.app;\n sb.$inputEl.val('').trigger('change');\n sb.$el.removeClass('searchbar-enabled searchbar-focused searchbar-enabled-no-disable-button');\n if (sb.expandable) {\n const $navbarEl = sb.$el.parents('.navbar');\n const $pageContentEl = sb.$pageEl && sb.$pageEl.find('.page-content');\n if ($navbarEl.hasClass('navbar-large') && $pageContentEl.length) {\n const $titleLargeEl = $navbarEl.find('.title-large');\n sb.$el.transitionEnd(() => {\n $pageContentEl.removeClass('with-searchbar-expandable-closing');\n });\n if ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-large-collapsed') && $titleLargeEl.length) {\n const scrollTop = $pageContentEl[0].scrollTop;\n const titleLargeHeight = $titleLargeEl[0].offsetHeight;\n if (scrollTop > titleLargeHeight) {\n $pageContentEl.transition(0);\n $pageContentEl[0].scrollTop = scrollTop + titleLargeHeight;\n setTimeout(() => {\n $pageContentEl.transition('');\n }, 200);\n }\n }\n $pageContentEl.removeClass('with-searchbar-expandable-enabled').addClass('with-searchbar-expandable-closing');\n }\n if (app.theme === 'md' && $navbarEl.length) {\n $navbarEl.removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition').addClass('with-searchbar-expandable-closing');\n sb.$el.transitionEnd(() => {\n $navbarEl.removeClass('with-searchbar-expandable-closing');\n });\n } else {\n $navbarEl.removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition').addClass('with-searchbar-expandable-closing');\n sb.$el.transitionEnd(() => {\n $navbarEl.removeClass('with-searchbar-expandable-closing');\n });\n if (sb.$pageEl) {\n sb.$pageEl.find('.page-content').trigger('scroll');\n }\n }\n }\n if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme !== 'md') {\n sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, `${-sb.disableButtonEl.offsetWidth}px`);\n }\n if (sb.$backdropEl && (sb.$searchContainer && sb.$searchContainer.length || sb.params.customSearch)) {\n sb.backdropHide();\n }\n sb.enabled = false;\n sb.$inputEl.blur();\n if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.removeClass('hidden-by-searchbar');\n sb.$el.trigger('searchbar:disable');\n sb.emit('local::disable searchbarDisable', sb);\n return sb;\n }\n toggle() {\n const sb = this;\n if (sb.enabled) sb.disable();else sb.enable(true);\n return sb;\n }\n backdropShow() {\n const sb = this;\n if (sb.$backdropEl) {\n sb.$backdropEl.addClass('searchbar-backdrop-in');\n }\n return sb;\n }\n backdropHide() {\n const sb = this;\n if (sb.$backdropEl) {\n sb.$backdropEl.removeClass('searchbar-backdrop-in');\n }\n return sb;\n }\n search(query, internal) {\n const sb = this;\n sb.previousQuery = sb.query || '';\n if (query === sb.previousQuery) return sb;\n if (!internal) {\n if (!sb.enabled) {\n sb.enable();\n }\n sb.$inputEl.val(query);\n sb.$inputEl.trigger('input');\n }\n sb.query = query;\n sb.value = query;\n const {\n $searchContainer,\n $el,\n $foundEl,\n $notFoundEl,\n $hideOnSearchEl,\n isVirtualList\n } = sb;\n\n // Hide on search element\n if (query.length > 0 && $hideOnSearchEl) {\n $hideOnSearchEl.addClass('hidden-by-searchbar');\n } else if ($hideOnSearchEl) {\n $hideOnSearchEl.removeClass('hidden-by-searchbar');\n }\n // Add active/inactive classes on overlay\n if ($searchContainer && $searchContainer.length && $el.hasClass('searchbar-enabled') || sb.params.customSearch && $el.hasClass('searchbar-enabled')) {\n if (query.length === 0) {\n sb.backdropShow();\n } else {\n sb.backdropHide();\n }\n }\n if (sb.params.customSearch) {\n $el.trigger('searchbar:search', {\n query,\n previousQuery: sb.previousQuery\n });\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);\n return sb;\n }\n let foundItems = [];\n let vlQuery;\n if (isVirtualList) {\n sb.virtualList = $searchContainer[0].f7VirtualList;\n if (query.trim() === '') {\n sb.virtualList.resetFilter();\n if ($notFoundEl) $notFoundEl.hide();\n if ($foundEl) $foundEl.show();\n $el.trigger('searchbar:search', {\n query,\n previousQuery: sb.previousQuery\n });\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);\n return sb;\n }\n vlQuery = sb.params.removeDiacritics ? removeDiacritics(query) : query;\n if (sb.virtualList.params.searchAll) {\n foundItems = sb.virtualList.params.searchAll(vlQuery, sb.virtualList.items) || [];\n } else if (sb.virtualList.params.searchByItem) {\n for (let i = 0; i < sb.virtualList.items.length; i += 1) {\n if (sb.virtualList.params.searchByItem(vlQuery, sb.virtualList.items[i], i)) {\n foundItems.push(i);\n }\n }\n }\n } else {\n let values;\n if (sb.params.removeDiacritics) values = removeDiacritics(query.trim().toLowerCase()).split(' ');else {\n values = query.trim().toLowerCase().split(' ');\n }\n $searchContainer.find(sb.params.searchItem).removeClass('hidden-by-searchbar').each(itemEl => {\n const $itemEl = $(itemEl);\n let compareWithText = [];\n let $searchIn = sb.params.searchIn ? $itemEl.find(sb.params.searchIn) : $itemEl;\n if (sb.params.searchIn === sb.params.searchItem) {\n $searchIn = $itemEl;\n }\n $searchIn.each(searchInEl => {\n let itemText = $(searchInEl).text().trim().toLowerCase();\n if (sb.params.removeDiacritics) itemText = removeDiacritics(itemText);\n compareWithText.push(itemText);\n });\n compareWithText = compareWithText.join(' ');\n let wordsMatch = 0;\n for (let i = 0; i < values.length; i += 1) {\n if (compareWithText.indexOf(values[i]) >= 0) wordsMatch += 1;\n }\n if (wordsMatch !== values.length && !(sb.params.ignore && $itemEl.is(sb.params.ignore))) {\n $itemEl.addClass('hidden-by-searchbar');\n } else {\n foundItems.push($itemEl[0]);\n }\n });\n if (sb.params.hideGroupTitles) {\n $searchContainer.find(sb.params.searchGroupTitle).each(titleEl => {\n const $titleEl = $(titleEl);\n const $nextElements = $titleEl.nextAll(sb.params.searchItem);\n let hide = true;\n for (let i = 0; i < $nextElements.length; i += 1) {\n const $nextEl = $nextElements.eq(i);\n if ($nextEl.is(sb.params.searchGroupTitle)) break;\n if (!$nextEl.hasClass('hidden-by-searchbar')) {\n hide = false;\n }\n }\n const ignore = sb.params.ignore && $titleEl.is(sb.params.ignore);\n if (hide && !ignore) $titleEl.addClass('hidden-by-searchbar');else $titleEl.removeClass('hidden-by-searchbar');\n });\n }\n if (sb.params.hideGroups) {\n $searchContainer.find(sb.params.searchGroup).each(groupEl => {\n const $groupEl = $(groupEl);\n const ignore = sb.params.ignore && $groupEl.is(sb.params.ignore);\n // eslint-disable-next-line\n const notHidden = $groupEl.find(sb.params.searchItem).filter(el => {\n return !$(el).hasClass('hidden-by-searchbar');\n });\n if (notHidden.length === 0 && !ignore) {\n $groupEl.addClass('hidden-by-searchbar');\n } else {\n $groupEl.removeClass('hidden-by-searchbar');\n }\n });\n }\n }\n if (foundItems.length === 0) {\n if ($notFoundEl) $notFoundEl.show();\n if ($foundEl) $foundEl.hide();\n } else {\n if ($notFoundEl) $notFoundEl.hide();\n if ($foundEl) $foundEl.show();\n }\n if (isVirtualList && sb.virtualList) {\n sb.virtualList.filterItems(foundItems);\n }\n $el.trigger('searchbar:search', {\n query,\n previousQuery: sb.previousQuery,\n foundItems\n });\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery, foundItems);\n return sb;\n }\n init() {\n const sb = this;\n if (sb.expandable && sb.$el) sb.$el.addClass('searchbar-expandable');\n if (sb.inline && sb.$el) sb.$el.addClass('searchbar-inline');\n sb.attachEvents();\n }\n destroy() {\n const sb = this;\n sb.emit('local::beforeDestroy searchbarBeforeDestroy', sb);\n sb.$el.trigger('searchbar:beforedestroy');\n sb.detachEvents();\n if (sb.$el[0]) {\n sb.$el[0].f7Searchbar = null;\n delete sb.$el[0].f7Searchbar;\n }\n deleteProps(sb);\n }\n}\nexport default Searchbar;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Searchbar from './searchbar-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'searchbar',\n static: {\n Searchbar\n },\n create() {\n const app = this;\n app.searchbar = ConstructorMethods({\n defaultSelector: '.searchbar',\n constructor: Searchbar,\n app,\n domProp: 'f7Searchbar',\n addMethods: 'clear enable disable toggle search'.split(' ')\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.searchbar-init').each(searchbarEl => {\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(extend($searchbarEl.dataset(), {\n el: searchbarEl\n }));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.searchbar-init').each(searchbarEl => {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.searchbar-init').each(searchbarEl => {\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(extend($searchbarEl.dataset(), {\n el: searchbarEl\n }));\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.searchbar-init').each(searchbarEl => {\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(extend($searchbarEl.dataset(), {\n el: searchbarEl\n }));\n });\n }\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.searchbar-init').each(searchbarEl => {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.searchbar-init').each(searchbarEl => {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n }\n }\n },\n clicks: {\n '.searchbar-clear': function clear($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.clear();\n },\n '.searchbar-enable': function enable($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.enable(true);\n },\n '.searchbar-disable': function disable($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.disable();\n },\n '.searchbar-toggle': function toggle($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.toggle();\n }\n },\n vnode: {\n 'searchbar-init': {\n insert(vnode) {\n const app = this;\n const searchbarEl = vnode.elm;\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(extend($searchbarEl.dataset(), {\n el: searchbarEl\n }));\n },\n destroy(vnode) {\n const searchbarEl = vnode.elm;\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n }\n }\n }\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Messages extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const m = this;\n const defaults = {\n autoLayout: true,\n messages: [],\n newMessagesFirst: false,\n scrollMessages: true,\n scrollMessagesOnEdge: true,\n firstMessageRule: undefined,\n lastMessageRule: undefined,\n tailMessageRule: undefined,\n sameNameMessageRule: undefined,\n sameHeaderMessageRule: undefined,\n sameFooterMessageRule: undefined,\n sameAvatarMessageRule: undefined,\n customClassMessageRule: undefined,\n renderMessage: undefined\n };\n\n // Extend defaults with modules params\n m.useModulesParams(defaults);\n m.params = extend(defaults, params);\n const $el = $(params.el).eq(0);\n if ($el.length === 0) return m;\n if ($el[0].f7Messages) return $el[0].f7Messages;\n $el[0].f7Messages = m;\n const $pageContentEl = $el.closest('.page-content').eq(0);\n extend(m, {\n messages: m.params.messages,\n $el,\n el: $el[0],\n $pageContentEl,\n pageContentEl: $pageContentEl[0]\n });\n // Install Modules\n m.useModules();\n\n // Init\n m.init();\n return m;\n }\n // eslint-disable-next-line\n getMessageData(messageEl) {\n const $messageEl = $(messageEl);\n const data = {\n name: $messageEl.find('.message-name').html(),\n header: $messageEl.find('.message-header').html(),\n textHeader: $messageEl.find('.message-text-header').html(),\n textFooter: $messageEl.find('.message-text-footer').html(),\n footer: $messageEl.find('.message-footer').html(),\n isTitle: $messageEl.hasClass('messages-title'),\n type: $messageEl.hasClass('message-sent') ? 'sent' : 'received',\n text: $messageEl.find('.message-text').html(),\n image: $messageEl.find('.message-image').html(),\n imageSrc: $messageEl.find('.message-image img').attr('src'),\n typing: $messageEl.hasClass('message-typing')\n };\n if (data.isTitle) {\n data.text = $messageEl.html();\n }\n if (data.text && data.textHeader) {\n data.text = data.text.replace(`
          ${data.textHeader}
          `, '');\n }\n if (data.text && data.textFooter) {\n data.text = data.text.replace(`
          ${data.textFooter}
          `, '');\n }\n let avatar = $messageEl.find('.message-avatar').css('background-image');\n if (avatar === 'none' || avatar === '') avatar = undefined;\n if (avatar && typeof avatar === 'string') {\n avatar = avatar.replace('url(', '').replace(')', '').replace(/\"/g, '').replace(/'/g, '');\n } else {\n avatar = undefined;\n }\n data.avatar = avatar;\n return data;\n }\n getMessagesData() {\n const m = this;\n const data = [];\n m.$el.find('.message, .messages-title').each(messageEl => {\n data.push(m.getMessageData(messageEl));\n });\n return data;\n }\n renderMessage(messageToRender) {\n const m = this;\n const message = extend({\n type: 'sent',\n attrs: {}\n }, messageToRender);\n if (m.params.renderMessage) {\n return m.params.renderMessage.call(m, message);\n }\n if (message.isTitle) {\n return `
          ${message.text}
          `;\n }\n return $jsx(\"div\", _extends({\n class: `message message-${message.type} ${message.isTyping ? 'message-typing' : ''} ${message.cssClass || ''}`\n }, message.attrs), message.avatar && $jsx(\"div\", {\n class: \"message-avatar\",\n style: `background-image:url(${message.avatar})`\n }), $jsx(\"div\", {\n class: \"message-content\"\n }, message.name && $jsx(\"div\", {\n class: \"message-name\"\n }, message.name), message.header && $jsx(\"div\", {\n class: \"message-header\"\n }, message.header), $jsx(\"div\", {\n class: \"message-bubble\"\n }, message.textHeader && $jsx(\"div\", {\n class: \"message-text-header\"\n }, message.textHeader), message.image && $jsx(\"div\", {\n class: \"message-image\"\n }, message.image), message.imageSrc && !message.image && $jsx(\"div\", {\n class: \"message-image\"\n }, $jsx(\"img\", {\n src: message.imageSrc\n })), (message.text || message.isTyping) && $jsx(\"div\", {\n class: \"message-text\"\n }, message.text || '', message.isTyping && $jsx(\"div\", {\n class: \"message-typing-indicator\"\n }, $jsx(\"div\", null), $jsx(\"div\", null), $jsx(\"div\", null))), message.textFooter && $jsx(\"div\", {\n class: \"message-text-footer\"\n }, message.textFooter)), message.footer && $jsx(\"div\", {\n class: \"message-footer\"\n }, message.footer)));\n }\n renderMessages(messagesToRender, method) {\n if (messagesToRender === void 0) {\n messagesToRender = this.messages;\n }\n if (method === void 0) {\n method = this.params.newMessagesFirst ? 'prepend' : 'append';\n }\n const m = this;\n const html = messagesToRender.map(message => m.renderMessage(message)).join('');\n m.$el[method](html);\n }\n isFirstMessage() {\n const m = this;\n if (m.params.firstMessageRule) return m.params.firstMessageRule(...arguments);\n return false;\n }\n isLastMessage() {\n const m = this;\n if (m.params.lastMessageRule) return m.params.lastMessageRule(...arguments);\n return false;\n }\n isTailMessage() {\n const m = this;\n if (m.params.tailMessageRule) return m.params.tailMessageRule(...arguments);\n return false;\n }\n isSameNameMessage() {\n const m = this;\n if (m.params.sameNameMessageRule) return m.params.sameNameMessageRule(...arguments);\n return false;\n }\n isSameHeaderMessage() {\n const m = this;\n if (m.params.sameHeaderMessageRule) return m.params.sameHeaderMessageRule(...arguments);\n return false;\n }\n isSameFooterMessage() {\n const m = this;\n if (m.params.sameFooterMessageRule) return m.params.sameFooterMessageRule(...arguments);\n return false;\n }\n isSameAvatarMessage() {\n const m = this;\n if (m.params.sameAvatarMessageRule) return m.params.sameAvatarMessageRule(...arguments);\n return false;\n }\n isCustomClassMessage() {\n const m = this;\n if (m.params.customClassMessageRule) return m.params.customClassMessageRule(...arguments);\n return undefined;\n }\n layout() {\n const m = this;\n m.$el.find('.message, .messages-title').each((messageEl, index) => {\n const $messageEl = $(messageEl);\n if (!m.messages) {\n m.messages = m.getMessagesData();\n }\n const classes = [];\n const message = m.messages[index];\n const previousMessage = m.messages[index - 1];\n const nextMessage = m.messages[index + 1];\n if (m.isFirstMessage(message, previousMessage, nextMessage)) {\n classes.push('message-first');\n }\n if (m.isLastMessage(message, previousMessage, nextMessage)) {\n classes.push('message-last');\n }\n if (m.isTailMessage(message, previousMessage, nextMessage)) {\n classes.push('message-tail');\n }\n if (m.isSameNameMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-name');\n }\n if (m.isSameHeaderMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-header');\n }\n if (m.isSameFooterMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-footer');\n }\n if (m.isSameAvatarMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-avatar');\n }\n let customMessageClasses = m.isCustomClassMessage(message, previousMessage, nextMessage);\n if (customMessageClasses && customMessageClasses.length) {\n if (typeof customMessageClasses === 'string') {\n customMessageClasses = customMessageClasses.split(' ');\n }\n customMessageClasses.forEach(customClass => {\n classes.push(customClass);\n });\n }\n $messageEl.removeClass('message-first message-last message-tail message-same-name message-same-header message-same-footer message-same-avatar');\n classes.forEach(className => {\n $messageEl.addClass(className);\n });\n });\n }\n clear() {\n const m = this;\n m.messages = [];\n m.$el.html('');\n }\n removeMessage(messageToRemove, layout) {\n if (layout === void 0) {\n layout = true;\n }\n const m = this;\n // Index or El\n let index;\n let $el;\n if (typeof messageToRemove === 'number') {\n index = messageToRemove;\n $el = m.$el.find('.message, .messages-title').eq(index);\n } else if (m.messages && m.messages.indexOf(messageToRemove) >= 0) {\n index = m.messages.indexOf(messageToRemove);\n $el = m.$el.children().eq(index);\n } else {\n $el = $(messageToRemove);\n index = $el.index();\n }\n if ($el.length === 0) {\n return m;\n }\n $el.remove();\n m.messages.splice(index, 1);\n if (m.params.autoLayout && layout) m.layout();\n return m;\n }\n removeMessages(messagesToRemove, layout) {\n if (layout === void 0) {\n layout = true;\n }\n const m = this;\n if (Array.isArray(messagesToRemove)) {\n const messagesToRemoveEls = [];\n messagesToRemove.forEach(messageToRemoveIndex => {\n messagesToRemoveEls.push(m.$el.find('.message, .messages-title').eq(messageToRemoveIndex));\n });\n messagesToRemoveEls.forEach(messageToRemove => {\n m.removeMessage(messageToRemove, false);\n });\n } else {\n $(messagesToRemove).each(messageToRemove => {\n m.removeMessage(messageToRemove, false);\n });\n }\n if (m.params.autoLayout && layout) m.layout();\n return m;\n }\n addMessage() {\n const m = this;\n let messageToAdd;\n let animate;\n let method;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[1] === 'boolean') {\n [messageToAdd, animate, method] = args;\n } else {\n [messageToAdd, method, animate] = args;\n }\n if (typeof animate === 'undefined') {\n animate = true;\n }\n if (typeof method === 'undefined') {\n method = m.params.newMessagesFirst ? 'prepend' : 'append';\n }\n return m.addMessages([messageToAdd], animate, method);\n }\n setScrollData() {\n const m = this;\n // Define scroll positions before new messages added\n const scrollHeightBefore = m.pageContentEl.scrollHeight;\n const heightBefore = m.pageContentEl.offsetHeight;\n const scrollBefore = m.pageContentEl.scrollTop;\n m.scrollData = {\n scrollHeightBefore,\n heightBefore,\n scrollBefore\n };\n return {\n scrollHeightBefore,\n heightBefore,\n scrollBefore\n };\n }\n addMessages() {\n const m = this;\n let messagesToAdd;\n let animate;\n let method;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[1] === 'boolean') {\n [messagesToAdd, animate, method] = args;\n } else {\n [messagesToAdd, method, animate] = args;\n }\n if (typeof animate === 'undefined') {\n animate = true;\n }\n if (typeof method === 'undefined') {\n method = m.params.newMessagesFirst ? 'prepend' : 'append';\n }\n const {\n scrollHeightBefore,\n scrollBefore\n } = m.setScrollData();\n\n // Add message to DOM and data\n let messagesHTML = '';\n const typingMessage = m.messages.filter(el => el.isTyping)[0];\n messagesToAdd.forEach(messageToAdd => {\n if (typingMessage) {\n if (method === 'append') {\n m.messages.splice(m.messages.indexOf(typingMessage), 0, messageToAdd);\n } else {\n m.messages.splice(m.messages.indexOf(typingMessage) + 1, 0, messageToAdd);\n }\n } else {\n m.messages[method === 'append' ? 'push' : 'unshift'](messageToAdd);\n }\n messagesHTML += m.renderMessage(messageToAdd);\n });\n const $messagesEls = $(messagesHTML);\n if (animate) {\n if (method === 'append' && !m.params.newMessagesFirst) {\n $messagesEls.addClass('message-appear-from-bottom');\n }\n if (method === 'prepend' && m.params.newMessagesFirst) {\n $messagesEls.addClass('message-appear-from-top');\n }\n }\n if (typingMessage) {\n if (method === 'append') {\n $messagesEls.insertBefore(m.$el.find('.message-typing'));\n } else {\n $messagesEls.insertAfter(m.$el.find('.message-typing'));\n }\n } else {\n m.$el[method]($messagesEls);\n }\n\n // Layout\n if (m.params.autoLayout) m.layout();\n if (method === 'prepend' && !typingMessage) {\n m.pageContentEl.scrollTop = scrollBefore + (m.pageContentEl.scrollHeight - scrollHeightBefore);\n }\n if (m.params.scrollMessages && (method === 'append' && !m.params.newMessagesFirst || method === 'prepend' && m.params.newMessagesFirst && !typingMessage)) {\n m.scrollWithEdgeCheck(animate);\n }\n return m;\n }\n showTyping(message) {\n if (message === void 0) {\n message = {};\n }\n const m = this;\n const typingMessage = m.messages.filter(el => el.isTyping)[0];\n if (typingMessage) {\n m.removeMessage(m.messages.indexOf(typingMessage));\n }\n m.addMessage(extend({\n type: 'received',\n isTyping: true\n }, message));\n return m;\n }\n hideTyping() {\n const m = this;\n let typingMessageIndex;\n let typingFound;\n m.messages.forEach((message, index) => {\n if (message.isTyping) typingMessageIndex = index;\n });\n if (typeof typingMessageIndex !== 'undefined') {\n if (m.$el.find('.message').eq(typingMessageIndex).hasClass('message-typing')) {\n typingFound = true;\n m.removeMessage(typingMessageIndex);\n }\n }\n if (!typingFound) {\n const $typingMessageEl = m.$el.find('.message-typing');\n if ($typingMessageEl.length) {\n m.removeMessage($typingMessageEl);\n }\n }\n return m;\n }\n scrollWithEdgeCheck(animate) {\n const m = this;\n const {\n scrollBefore,\n scrollHeightBefore,\n heightBefore\n } = m.scrollData;\n if (m.params.scrollMessagesOnEdge) {\n let onEdge = false;\n if (m.params.newMessagesFirst && scrollBefore === 0) {\n onEdge = true;\n }\n if (!m.params.newMessagesFirst && scrollBefore - (scrollHeightBefore - heightBefore) >= -10) {\n onEdge = true;\n }\n if (onEdge) m.scroll(animate ? undefined : 0);\n } else {\n m.scroll(animate ? undefined : 0);\n }\n }\n scroll(duration, scrollTop) {\n if (duration === void 0) {\n duration = 300;\n }\n const m = this;\n const currentScroll = m.pageContentEl.scrollTop;\n let newScrollTop;\n if (typeof scrollTop !== 'undefined') newScrollTop = scrollTop;else {\n newScrollTop = m.params.newMessagesFirst ? 0 : m.pageContentEl.scrollHeight - m.pageContentEl.offsetHeight;\n if (newScrollTop === currentScroll) return m;\n }\n m.$pageContentEl.scrollTop(newScrollTop, duration);\n return m;\n }\n init() {\n const m = this;\n if (!m.messages || m.messages.length === 0) {\n m.messages = m.getMessagesData();\n }\n if (m.params.messages && m.params.messages.length) {\n m.renderMessages();\n }\n if (m.params.autoLayout) m.layout();\n if (m.params.scrollMessages) m.scroll(0);\n }\n destroy() {\n const m = this;\n m.emit('local::beforeDestroy messagesBeforeDestroy', m);\n m.$el.trigger('messages:beforedestroy');\n if (m.$el[0]) {\n m.$el[0].f7Messages = null;\n delete m.$el[0].f7Messages;\n }\n deleteProps(m);\n }\n}\nexport default Messages;","import $ from '../../shared/dom7.js';\nimport Messages from './messages-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'messages',\n static: {\n Messages\n },\n create() {\n const app = this;\n app.messages = ConstructorMethods({\n defaultSelector: '.messages',\n constructor: Messages,\n app,\n domProp: 'f7Messages',\n addMethods: 'renderMessages layout scroll clear removeMessage removeMessages addMessage addMessages'.split(' ')\n });\n },\n on: {\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.messages-init').each(messagesEl => {\n app.messages.destroy(messagesEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.messages-init').each(messagesEl => {\n app.messages.create({\n el: messagesEl\n });\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.messages-init').each(messagesEl => {\n app.messages.destroy(messagesEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.messages-init').each(messagesEl => {\n app.messages.create({\n el: messagesEl\n });\n });\n }\n },\n vnode: {\n 'messages-init': {\n insert(vnode) {\n const app = this;\n const messagesEl = vnode.elm;\n app.messages.create({\n el: messagesEl\n });\n },\n destroy(vnode) {\n const app = this;\n const messagesEl = vnode.elm;\n app.messages.destroy(messagesEl);\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nclass Messagebar extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const messagebar = this;\n const defaults = {\n top: false,\n topOffset: 0,\n bottomOffset: 0,\n attachments: [],\n renderAttachments: undefined,\n renderAttachment: undefined,\n maxHeight: null,\n resizePage: true\n };\n\n // Extend defaults with modules params\n messagebar.useModulesParams(defaults);\n messagebar.params = extend(defaults, params);\n\n // El\n const $el = $(messagebar.params.el);\n if ($el.length === 0) return messagebar;\n if ($el[0].f7Messagebar) return $el[0].f7Messagebar;\n $el[0].f7Messagebar = messagebar;\n\n // Page and PageContent\n const $pageEl = $el.parents('.page').eq(0);\n const $pageContentEl = $pageEl.find('.page-content').eq(0);\n\n // Area\n const $areaEl = $el.find('.messagebar-area');\n\n // Textarea\n let $textareaEl;\n if (messagebar.params.textareaEl) {\n $textareaEl = $(messagebar.params.textareaEl);\n } else {\n $textareaEl = $el.find('textarea');\n }\n\n // Attachments & Library\n const $attachmentsEl = $el.find('.messagebar-attachments');\n const $sheetEl = $el.find('.messagebar-sheet');\n if (messagebar.params.top) {\n $el.addClass('messagebar-top');\n }\n extend(messagebar, {\n $el,\n el: $el[0],\n $areaEl,\n areaEl: $areaEl[0],\n $textareaEl,\n textareaEl: $textareaEl[0],\n $attachmentsEl,\n attachmentsEl: $attachmentsEl[0],\n attachmentsVisible: $attachmentsEl.hasClass('messagebar-attachments-visible'),\n $sheetEl,\n sheetEl: $sheetEl[0],\n sheetVisible: $sheetEl.hasClass('messagebar-sheet-visible'),\n $pageEl,\n pageEl: $pageEl[0],\n $pageContentEl,\n pageContentEl: $pageContentEl,\n top: $el.hasClass('messagebar-top') || messagebar.params.top,\n attachments: []\n });\n\n // Events\n function onAppResize() {\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n }\n function onSubmit(e) {\n e.preventDefault();\n }\n function onAttachmentClick(e) {\n const index = $(this).index();\n if ($(e.target).closest('.messagebar-attachment-delete').length) {\n $(this).trigger('messagebar:attachmentdelete', index);\n messagebar.emit('local::attachmentDelete messagebarAttachmentDelete', messagebar, this, index);\n } else {\n $(this).trigger('messagebar:attachmentclick', index);\n messagebar.emit('local::attachmentClick messagebarAttachmentClick', messagebar, this, index);\n }\n }\n function onTextareaChange() {\n messagebar.checkEmptyState();\n messagebar.$el.trigger('messagebar:change');\n messagebar.emit('local::change messagebarChange', messagebar);\n }\n function onTextareaFocus() {\n messagebar.sheetHide();\n messagebar.$el.addClass('messagebar-focused');\n messagebar.$el.trigger('messagebar:focus');\n messagebar.emit('local::focus messagebarFocus', messagebar);\n }\n function onTextareaBlur() {\n messagebar.$el.removeClass('messagebar-focused');\n messagebar.$el.trigger('messagebar:blur');\n messagebar.emit('local::blur messagebarBlur', messagebar);\n }\n messagebar.attachEvents = function attachEvents() {\n $el.on('textarea:resize', onAppResize);\n $el.on('submit', onSubmit);\n $el.on('click', '.messagebar-attachment', onAttachmentClick);\n $textareaEl.on('change input', onTextareaChange);\n $textareaEl.on('focus', onTextareaFocus);\n $textareaEl.on('blur', onTextareaBlur);\n app.on('resize', onAppResize);\n };\n messagebar.detachEvents = function detachEvents() {\n $el.off('textarea:resize', onAppResize);\n $el.off('submit', onSubmit);\n $el.off('click', '.messagebar-attachment', onAttachmentClick);\n $textareaEl.off('change input', onTextareaChange);\n $textareaEl.off('focus', onTextareaFocus);\n $textareaEl.off('blur', onTextareaBlur);\n app.off('resize', onAppResize);\n };\n\n // Install Modules\n messagebar.useModules();\n\n // Init\n messagebar.init();\n return messagebar;\n }\n focus() {\n const messagebar = this;\n messagebar.$textareaEl.focus();\n return messagebar;\n }\n blur() {\n const messagebar = this;\n messagebar.$textareaEl.blur();\n return messagebar;\n }\n clear() {\n const messagebar = this;\n messagebar.$textareaEl.val('').trigger('change');\n return messagebar;\n }\n getValue() {\n const messagebar = this;\n return messagebar.$textareaEl.val().trim();\n }\n setValue(value) {\n const messagebar = this;\n messagebar.$textareaEl.val(value).trigger('change');\n return messagebar;\n }\n setPlaceholder(placeholder) {\n const messagebar = this;\n messagebar.$textareaEl.attr('placeholder', placeholder);\n return messagebar;\n }\n resizePage() {\n const messagebar = this;\n const {\n params,\n $el,\n top,\n $pageEl,\n $pageContentEl,\n $areaEl,\n $textareaEl,\n $sheetEl,\n $attachmentsEl\n } = messagebar;\n const elHeight = $el[0].offsetHeight;\n let maxHeight = params.maxHeight;\n if (top) {\n /*\n Disable at the moment\n const requiredPaddingTop = elHeight + params.topOffset;\n const currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n if (requiredPaddingTop !== currentPaddingTop) {\n if (!maxHeight) {\n maxHeight = $pageEl[0].offsetHeight - currentPaddingTop - $sheetEl.outerHeight() - $attachmentsEl.outerHeight() - parseInt($areaEl.css('margin-top'), 10) - parseInt($areaEl.css('margin-bottom'), 10);\n }\n $textareaEl.css('max-height', `${maxHeight}px`);\n $pageContentEl.css('padding-top', `${requiredPaddingTop}px`);\n $el.trigger('messagebar:resizePage');\n messagebar.emit('local::resizepage messagebarResizePage');\n }\n */\n } else {\n const currentPaddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n const requiredPaddingBottom = elHeight + params.bottomOffset;\n if (requiredPaddingBottom !== currentPaddingBottom && $pageContentEl.length) {\n const currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const pageScrollHeight = $pageContentEl[0].scrollHeight;\n const pageOffsetHeight = $pageContentEl[0].offsetHeight;\n const pageScrollTop = $pageContentEl[0].scrollTop;\n const scrollOnBottom = pageScrollTop === pageScrollHeight - pageOffsetHeight;\n if (!maxHeight) {\n maxHeight = $pageEl[0].offsetHeight - currentPaddingTop - $sheetEl.outerHeight() - $attachmentsEl.outerHeight() - parseInt($areaEl.css('margin-top'), 10) - parseInt($areaEl.css('margin-bottom'), 10);\n }\n $textareaEl.css('max-height', `${maxHeight}px`);\n $pageContentEl.css('padding-bottom', `${requiredPaddingBottom}px`);\n if (scrollOnBottom) {\n $pageContentEl.scrollTop($pageContentEl[0].scrollHeight - pageOffsetHeight);\n }\n $el.trigger('messagebar:resizepage');\n messagebar.emit('local::resizePage messagebarResizePage', messagebar);\n }\n }\n }\n checkEmptyState() {\n const messagebar = this;\n const {\n $el,\n $textareaEl\n } = messagebar;\n const value = $textareaEl.val().trim();\n if (value && value.length) {\n $el.addClass('messagebar-with-value');\n } else {\n $el.removeClass('messagebar-with-value');\n }\n }\n attachmentsCreate(innerHTML) {\n if (innerHTML === void 0) {\n innerHTML = '';\n }\n const messagebar = this;\n const $attachmentsEl = $(`
          ${innerHTML}
          `);\n $attachmentsEl.insertBefore(messagebar.$textareaEl);\n extend(messagebar, {\n $attachmentsEl,\n attachmentsEl: $attachmentsEl[0]\n });\n return messagebar;\n }\n attachmentsShow(innerHTML) {\n if (innerHTML === void 0) {\n innerHTML = '';\n }\n const messagebar = this;\n messagebar.$attachmentsEl = messagebar.$el.find('.messagebar-attachments');\n if (messagebar.$attachmentsEl.length === 0) {\n messagebar.attachmentsCreate(innerHTML);\n }\n messagebar.$el.addClass('messagebar-attachments-visible');\n messagebar.attachmentsVisible = true;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n attachmentsHide() {\n const messagebar = this;\n messagebar.$el.removeClass('messagebar-attachments-visible');\n messagebar.attachmentsVisible = false;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n attachmentsToggle() {\n const messagebar = this;\n if (messagebar.attachmentsVisible) {\n messagebar.attachmentsHide();\n } else {\n messagebar.attachmentsShow();\n }\n return messagebar;\n }\n renderAttachment(attachment) {\n const messagebar = this;\n if (messagebar.params.renderAttachment) {\n return messagebar.params.renderAttachment.call(messagebar, attachment);\n }\n return `\n
          \n \n \n
          \n `;\n }\n renderAttachments() {\n const messagebar = this;\n let html;\n if (messagebar.params.renderAttachments) {\n html = messagebar.params.renderAttachments.call(messagebar, messagebar.attachments);\n } else {\n html = `${messagebar.attachments.map(attachment => messagebar.renderAttachment(attachment)).join('')}`;\n }\n if (messagebar.$attachmentsEl.length === 0) {\n messagebar.attachmentsCreate(html);\n } else {\n messagebar.$attachmentsEl.html(html);\n }\n }\n sheetCreate(innerHTML) {\n if (innerHTML === void 0) {\n innerHTML = '';\n }\n const messagebar = this;\n const $sheetEl = $(`
          ${innerHTML}
          `);\n messagebar.$el.append($sheetEl);\n extend(messagebar, {\n $sheetEl,\n sheetEl: $sheetEl[0]\n });\n return messagebar;\n }\n sheetShow(innerHTML) {\n if (innerHTML === void 0) {\n innerHTML = '';\n }\n const messagebar = this;\n messagebar.$sheetEl = messagebar.$el.find('.messagebar-sheet');\n if (messagebar.$sheetEl.length === 0) {\n messagebar.sheetCreate(innerHTML);\n }\n messagebar.$el.addClass('messagebar-sheet-visible');\n messagebar.sheetVisible = true;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n sheetHide() {\n const messagebar = this;\n messagebar.$el.removeClass('messagebar-sheet-visible');\n messagebar.sheetVisible = false;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n sheetToggle() {\n const messagebar = this;\n if (messagebar.sheetVisible) {\n messagebar.sheetHide();\n } else {\n messagebar.sheetShow();\n }\n return messagebar;\n }\n init() {\n const messagebar = this;\n messagebar.attachEvents();\n messagebar.checkEmptyState();\n return messagebar;\n }\n destroy() {\n const messagebar = this;\n messagebar.emit('local::beforeDestroy messagebarBeforeDestroy', messagebar);\n messagebar.$el.trigger('messagebar:beforedestroy');\n messagebar.detachEvents();\n if (messagebar.$el[0]) {\n messagebar.$el[0].f7Messagebar = null;\n delete messagebar.$el[0].f7Messagebar;\n }\n deleteProps(messagebar);\n }\n}\nexport default Messagebar;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Messagebar from './messagebar-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'messagebar',\n static: {\n Messagebar\n },\n create() {\n const app = this;\n app.messagebar = ConstructorMethods({\n defaultSelector: '.messagebar',\n constructor: Messagebar,\n app,\n domProp: 'f7Messagebar',\n addMethods: 'clear getValue setValue setPlaceholder resizePage focus blur attachmentsCreate attachmentsShow attachmentsHide attachmentsToggle renderAttachments sheetCreate sheetShow sheetHide sheetToggle'.split(' ')\n });\n },\n on: {\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.messagebar-init').each(messagebarEl => {\n app.messagebar.destroy(messagebarEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.messagebar-init').each(messagebarEl => {\n app.messagebar.create(extend({\n el: messagebarEl\n }, $(messagebarEl).dataset()));\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.messagebar-init').each(messagebarEl => {\n app.messagebar.destroy(messagebarEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.messagebar-init').each(messagebarEl => {\n app.messagebar.create(extend({\n el: messagebarEl\n }, $(messagebarEl).dataset()));\n });\n }\n },\n vnode: {\n 'messagebar-init': {\n insert(vnode) {\n const app = this;\n const messagebarEl = vnode.elm;\n app.messagebar.create(extend({\n el: messagebarEl\n }, $(messagebarEl).dataset()));\n },\n destroy(vnode) {\n const app = this;\n const messagebarEl = vnode.elm;\n app.messagebar.destroy(messagebarEl);\n }\n }\n }\n};","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : [classes]));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, elementIndex as g, getTranslate as h, elementTransitionEnd as i, isObject as j, getSlideTransformEl as k, elementStyle as l, elementNextAll as m, nextTick as n, elementPrevAll as o, animateCSSModeScroll as p, extend as q, deleteProps as r, setCSSProperty as s };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, l as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, m as elementNextAll, o as elementPrevAll, h as getTranslate, p as animateCSSModeScroll, n as nextTick, d as now, q as extend, g as elementIndex, c as createElement, r as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n return {\n isSafari: needPerspectiveFix || isSafari(),\n needPerspectiveFix,\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass);\n });\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides[i].classList.add(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n });\n let activeSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n activeSlide = slides[activeIndex];\n }\n if (activeSlide) {\n // Active classes\n activeSlide.classList.add(params.slideActiveClass);\n\n // Next Slide\n let nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n }\n return;\n }\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (swiper.slides[activeIndex]) {\n realIndex = parseInt(swiper.slides[activeIndex].getAttribute('data-swiper-slide-index') || activeIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled) return swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10));\n let loopedSlides = params.loopedSlides || slidesPerView;\n if (loopedSlides % params.slidesPerGroup !== 0) {\n loopedSlides += params.slidesPerGroup - loopedSlides % params.slidesPerGroup;\n }\n swiper.loopedSlides = loopedSlides;\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(swiper.slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n // prepend last slides before start\n if (activeSlideIndex < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeSlideIndex; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n prependSlidesIndexes.push(slides.length - index - 1);\n }\n } else if (activeSlideIndex /* + slidesPerView */ > swiper.slides.length - loopedSlides * 2) {\n slidesAppended = Math.max(activeSlideIndex - (swiper.slides.length - loopedSlides * 2), params.slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlidesIndexes.push(index);\n }\n }\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else {\n if (setTranslate) {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n data.evCache.push(event);\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) data.evCache[pointerIndex] = e;\n const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n prevX: swiper.touches.currentX,\n prevY: swiper.touches.currentY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled && data.evCache.length > 1) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.swipeDirection === 'next' && swiper.allowSlideNext || swiper.swipeDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n // need another loop fix\n swiper.loopFix({\n direction: swiper.swipeDirection,\n setTranslate: true\n });\n loopFixed = true;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === event.pointerId);\n if (pointerIndex >= 0) {\n data.evCache.splice(pointerIndex, 1);\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(event.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(event.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopedSlides: null,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n evCache: []\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","function appendSlide(slides) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n const appendElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.append(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.append(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) appendElement(slides[i]);\n }\n } else {\n appendElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n}\n\nfunction prependSlide(slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n const prependElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.prepend(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.prepend(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) prependElement(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n prependElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide(index, slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.recalcSlides();\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides[i];\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) slidesEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n slidesEl.append(slides);\n }\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n slidesEl.append(slidesBuffer[i]);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n\nfunction Manipulation(_ref) {\n let {\n swiper\n } = _ref;\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}\n\nexport { Manipulation as default };\n","function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n\nexport { effectInit as e };\n","import { k as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}\n\nexport { effectTarget as e };\n","import { i as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformElements,\n allSlides\n } = _ref;\n const {\n activeIndex\n } = swiper;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) {\n transitionEndTarget = transformElements;\n } else {\n transitionEndTarget = transformElements.filter(transformEl => {\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n }\n transitionEndTarget.forEach(el => {\n elementTransitionEnd(el, () => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n}\n\nexport { effectVirtualTransitionEnd as e };\n","import { k as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n const shadowContainer = getSlideTransformEl(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n if (!shadowEl) {\n shadowEl = createElement('div', shadowClass.split(' '));\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\n}\n\nexport { createShadow as c };\n","/**\n * Swiper 10.3.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: September 28, 2023\n */\n\nimport { S as Swiper } from './shared/swiper-core.mjs';\nimport Virtual from './modules/virtual.mjs';\nimport Keyboard from './modules/keyboard.mjs';\nimport Mousewheel from './modules/mousewheel.mjs';\nimport Navigation from './modules/navigation.mjs';\nimport Pagination from './modules/pagination.mjs';\nimport Scrollbar from './modules/scrollbar.mjs';\nimport Parallax from './modules/parallax.mjs';\nimport Zoom from './modules/zoom.mjs';\nimport Controller from './modules/controller.mjs';\nimport A11y from './modules/a11y.mjs';\nimport History from './modules/history.mjs';\nimport HashNavigation from './modules/hash-navigation.mjs';\nimport Autoplay from './modules/autoplay.mjs';\nimport Thumb from './modules/thumbs.mjs';\nimport freeMode from './modules/free-mode.mjs';\nimport Grid from './modules/grid.mjs';\nimport Manipulation from './modules/manipulation.mjs';\nimport EffectFade from './modules/effect-fade.mjs';\nimport EffectCube from './modules/effect-cube.mjs';\nimport EffectFlip from './modules/effect-flip.mjs';\nimport EffectCoverflow from './modules/effect-coverflow.mjs';\nimport EffectCreative from './modules/effect-creative.mjs';\nimport EffectCards from './modules/effect-cards.mjs';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n\nexport { Swiper, Swiper as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n const document = getDocument();\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n const tempDOM = document.createElement('div');\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n // eslint-disable-next-line\n let slideEl;\n if (params.renderSlide) {\n slideEl = params.renderSlide.call(swiper, slide, index);\n if (typeof slideEl === 'string') {\n tempDOM.innerHTML = slideEl;\n slideEl = tempDOM.children[0];\n }\n } else if (swiper.isElement) {\n slideEl = createElement('swiper-slide');\n } else {\n slideEl = createElement('div', swiper.params.slideClass);\n }\n slideEl.setAttribute('data-swiper-slide-index', index);\n if (!params.renderSlide) {\n slideEl.innerHTML = slide;\n }\n if (params.cache) {\n swiper.virtual.cache[index] = slideEl;\n }\n return slideEl;\n }\n function update(force) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides,\n loop: isLoop\n } = swiper.params;\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n }\n let from = activeIndex - slidesBefore;\n let to = activeIndex + slidesAfter;\n if (!isLoop) {\n from = Math.max(from, 0);\n to = Math.min(to, slides.length - 1);\n }\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n if (isLoop && activeIndex >= slidesBefore) {\n from -= slidesBefore;\n if (!centeredSlides) offset += swiper.slidesGrid[0];\n } else if (isLoop && activeIndex < slidesBefore) {\n from = -slidesBefore;\n if (centeredSlides) offset += swiper.slidesGrid[0];\n }\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n slidesBefore,\n slidesAfter\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n emit('virtualUpdate');\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n if (force) {\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\n slideEl.remove();\n });\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n const slideIndex = getSlideIndex(i);\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\n slideEl.remove();\n });\n }\n }\n }\n const loopFrom = isLoop ? -slides.length : 0;\n const loopTo = isLoop ? slides.length * 2 : slides.length;\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n const slideIndex = getSlideIndex(i);\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(slideIndex);\n } else {\n if (i > previousTo) appendIndexes.push(slideIndex);\n if (i < previousFrom) prependIndexes.push(slideIndex);\n }\n }\n }\n appendIndexes.forEach(index => {\n swiper.slidesEl.append(renderSlide(slides[index], index));\n });\n if (isLoop) {\n for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n const index = prependIndexes[i];\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n }\n } else {\n prependIndexes.sort((a, b) => b - a);\n prependIndexes.forEach(index => {\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n });\n }\n elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n onRendered();\n }\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const cachedEl = cache[cachedIndex];\n const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n if (cachedElIndex) {\n cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n let domSlidesAssigned;\n if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n if (slides && slides.length) {\n swiper.virtual.slides = [...slides];\n domSlidesAssigned = true;\n slides.forEach((slideEl, slideIndex) => {\n slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n swiper.virtual.cache[slideIndex] = slideEl;\n slideEl.remove();\n });\n }\n }\n if (!domSlidesAssigned) {\n swiper.virtual.slides = swiper.params.virtual.slides;\n }\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n update();\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}\n\nexport { Virtual as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl) swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}\n\nexport { Keyboard as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n noMousewheelClass: 'swiper-no-mousewheel'\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\n if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0) return true;\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.loop) {\n swiper.loopFix({\n direction: newEvent.direction < 0 ? 'next' : 'prev',\n byMousewheel: true\n });\n }\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n return true;\n }\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n targetEl[method]('mouseenter', handleMouseEnter);\n targetEl[method]('mouseleave', handleMouseLeave);\n targetEl[method]('wheel', handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('addEventListener');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('removeEventListener');\n swiper.mousewheel.enabled = false;\n return true;\n }\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}\n\nexport { Mousewheel as default };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { f as elementOuterSize, g as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const realIndex = swiper.realIndex;\n const newSlideIndex = swiper.getSlideIndexByData(index);\n const currentSlideIndex = swiper.getSlideIndexByData(swiper.realIndex);\n const loopFix = dir => {\n const indexBeforeLoopFix = swiper.activeIndex;\n swiper.loopFix({\n direction: dir,\n activeSlideIndex: newSlideIndex,\n slideTo: false\n });\n const indexAfterFix = swiper.activeIndex;\n if (indexBeforeLoopFix === indexAfterFix) {\n swiper.slideToLoop(realIndex, 0, false, true);\n }\n };\n if (newSlideIndex > swiper.slides.length - swiper.loopedSlides) {\n loopFix(newSlideIndex > currentSlideIndex ? 'next' : 'prev');\n } else if (swiper.params.centeredSlides) {\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (newSlideIndex < Math.floor(slidesPerView / 2)) {\n loopFix('prev');\n }\n }\n swiper.slideToLoop(index);\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\n\nfunction Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n } else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n } else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const {\n scrollbar,\n params\n } = swiper;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const {\n scrollbar,\n el: swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = document.querySelectorAll(params.el);\n } else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(`.${swiper.params.scrollbar.dragClass}`);\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n disableDraggable();\n }\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n el\n } = swiper.scrollbar;\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}\n\nexport { Scrollbar as default };\n","import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n parallax: {\n enabled: false\n }\n });\n const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const rtlFactor = rtl ? -1 : 1;\n const p = el.getAttribute('data-swiper-parallax') || '0';\n let x = el.getAttribute('data-swiper-parallax-x');\n let y = el.getAttribute('data-swiper-parallax-y');\n const scale = el.getAttribute('data-swiper-parallax-scale');\n const opacity = el.getAttribute('data-swiper-parallax-opacity');\n const rotate = el.getAttribute('data-swiper-parallax-rotate');\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n el.style.opacity = currentOpacity;\n }\n let transform = `translate3d(${x}, ${y}, 0px)`;\n if (typeof scale !== 'undefined' && scale !== null) {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n transform += ` scale(${currentScale})`;\n }\n if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n const currentRotate = rotate * progress * -1;\n transform += ` rotate(${currentRotate}deg)`;\n }\n el.style.transform = transform;\n };\n const setTranslate = () => {\n const {\n el,\n slides,\n progress,\n snapGrid,\n isElement\n } = swiper;\n const elements = elementChildren(el, elementsSelector);\n if (swiper.isElement) {\n elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n }\n elements.forEach(subEl => {\n setTransform(subEl, progress);\n });\n slides.forEach((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n setTransform(subEl, slideProgress);\n });\n });\n };\n const setTransition = function (duration) {\n if (duration === void 0) {\n duration = swiper.params.speed;\n }\n const {\n el,\n hostEl\n } = swiper;\n const elements = [...el.querySelectorAll(elementsSelector)];\n if (swiper.isElement) {\n elements.push(...hostEl.querySelectorAll(elementsSelector));\n }\n elements.forEach(parallaxEl => {\n let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n });\n };\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n\nexport { Parallax as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, h as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n originX: 0,\n originY: 0,\n slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n imageEl: undefined,\n imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2) return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) {\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n } else if (zoom.scale <= 1 && gesture.slideEl) {\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n }\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !gesture.slideEl) return;\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth;\n image.height = gesture.imageEl.offsetHeight;\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n if (touchesDiff > 5) {\n swiper.allowClick = false;\n }\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n image.isMoved = true;\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n const {\n originX,\n originY\n } = gesture;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n if (gesture.imageEl) {\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n }\n if (gesture.imageWrapEl) {\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n }\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n }\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n }\n zoom.scale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n currentScale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth;\n imageHeight = gesture.imageEl.offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd();\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}\n\nexport { Zoom as default };\n","import { n as nextTick, i as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n }\n });\n\n swiper.controller = {\n control: undefined\n };\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n }\n function getInterpolateFunction(c) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n if (c.destroyed) return;\n\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n multiplier = 1;\n }\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n if (c.destroyed) return;\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n elementTransitionEnd(c.wrapperEl, () => {\n if (!controlled) return;\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n if (typeof window !== 'undefined' && (\n // eslint-disable-line\n typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n const controlElement = document.querySelector(swiper.params.controller.control);\n if (controlElement && controlElement.swiper) {\n swiper.controller.control = controlElement.swiper;\n } else if (controlElement) {\n const onControllerSwiper = e => {\n swiper.controller.control = e.detail[0];\n swiper.update();\n controlElement.removeEventListener('init', onControllerSwiper);\n };\n controlElement.addEventListener('init', onControllerSwiper);\n }\n return;\n }\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}\n\nexport { Controller as default };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, g as elementIndex } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = () => {\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\nexport { A11y as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.slides[index];\n let value = slugify(slide.getAttribute('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key ? `${key}/` : ''}${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key ? `${key}/` : ''}${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides[i];\n const slideHistory = slugify(slide.getAttribute('data-history'));\n if (slideHistory === value) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) {\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n return;\n }\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n\nexport { History as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n on\n } = _ref;\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n getSlideIndex(_s, hash) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];\n if (!slideWithHash) return 0;\n const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n return index;\n }\n return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n }\n }\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n emit('hashSet');\n } else {\n document.location.hash = activeSlideHash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n }\n if (swiper.params.hashNavigation.watchState) {\n window.addEventListener('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n window.removeEventListener('hashchange', onHashChange);\n }\n };\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n\nexport { HashNavigation as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime;\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n autoplayStartTime = new Date().getTime();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { j as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener('init', onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener('init', onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\n\nexport { Thumb as default };\n","import { d as now, i as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n function onTouchStart() {\n if (swiper.params.cssMode) return;\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n function onTouchMove() {\n if (swiper.params.cssMode) return;\n const {\n touchEventsData: data,\n touches\n } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n if (swiper.params.cssMode) return;\n const {\n params,\n wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}\n\nexport { freeMode as default };\n","function Grid(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n let wasMultiRow;\n const getSpaceBetween = () => {\n let spaceBetween = swiper.params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n return spaceBetween;\n };\n const initSlides = slidesLength => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n slidesPerRow = slidesNumberEvenToRows / rows;\n };\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const {\n slidesPerGroup\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows,\n fill\n } = swiper.params.grid;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.style.order = newSlideOrderIndex;\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.row = row;\n slide.column = column;\n slide.style[getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n };\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const {\n centeredSlides,\n roundLengths\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n if (centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.splice(0, snapGrid.length);\n snapGrid.push(...newSlidesGrid);\n }\n };\n const onInit = () => {\n wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n };\n const onUpdate = () => {\n const {\n params,\n el\n } = swiper;\n const isMultiRow = params.grid && params.grid.rows > 1;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n numFullColumns = 1;\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n wasMultiRow = isMultiRow;\n };\n on('init', onInit);\n on('update', onUpdate);\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize\n };\n}\n\nexport { Grid as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFade as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n const createSlideShadows = (slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n slideEl.append(shadowAfter);\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.forEach(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress, isHorizontal);\n });\n };\n const setTranslate = () => {\n const {\n el,\n wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n swiper.wrapperEl.append(cubeShadowEl);\n }\n cubeShadowEl.style.height = `${swiperWidth}px`;\n } else {\n cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n el.append(cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n slideEl.style.transform = transform;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, isHorizontal);\n }\n }\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`;\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`;\n wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = duration => {\n const {\n el,\n slides\n } = swiper;\n slides.forEach(slideEl => {\n slideEl.style.transitionDuration = `${duration}ms`;\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n subEl.style.transitionDuration = `${duration}ms`;\n });\n });\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n const shadowEl = el.querySelector('.swiper-cube-shadow');\n if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n }\n };\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}\n\nexport { EffectCube as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress) => {\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (!shadowAfter) {\n shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // Set shadows\n swiper.params.flipEffect;\n swiper.slides.forEach(slideEl => {\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows(slideEl, progress);\n });\n };\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n const offset = slideEl.swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFlip as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBeforeEl) {\n shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n };\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}\n\nexport { EffectCoverflow as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n creativeEffect: {\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n const setTranslate = () => {\n const {\n slides,\n wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n }\n const offset = slideEl.swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if (custom && data.shadow || !custom) {\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl && data.shadow) {\n shadowEl = createShadow('creative', slideEl);\n }\n if (shadowEl) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n targetEl.style.opacity = opacityString;\n if (data.origin) {\n targetEl.style.transformOrigin = data.origin;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCreative as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n const setTranslate = () => {\n const {\n slides,\n activeIndex,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = slideEl.swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n if (progress < 0) {\n // next\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n /* eslint-disable */\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n scale(${scaleString})\n `;\n /* eslint-enable */\n\n if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl) {\n shadowEl = createShadow('cards', slideEl);\n }\n if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCards as default };\n","/* underscore in name -> watch for changes */\nconst paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopedSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideNextClass', 'slidePrevClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren',\n// modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control'];\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__;\n}\nfunction extend(target, src) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\nfunction needsNavigation(params) {\n if (params === void 0) {\n params = {};\n }\n return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\nfunction needsPagination(params) {\n if (params === void 0) {\n params = {};\n }\n return params.pagination && typeof params.pagination.el === 'undefined';\n}\nfunction needsScrollbar(params) {\n if (params === void 0) {\n params = {};\n }\n return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\nfunction uniqueClasses(classNames) {\n if (classNames === void 0) {\n classNames = '';\n }\n const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n const unique = [];\n classes.forEach(c => {\n if (unique.indexOf(c) < 0) unique.push(c);\n });\n return unique.join(' ');\n}\nfunction attrToProp(attrName) {\n if (attrName === void 0) {\n attrName = '';\n }\n return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', ''));\n}\nfunction wrapperClass(className) {\n if (className === void 0) {\n className = '';\n }\n if (!className) return 'swiper-wrapper';\n if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`;\n return className;\n}\n\nfunction updateSwiper(_ref) {\n let {\n swiper,\n slides,\n passedParams,\n changedParams,\n nextEl,\n prevEl,\n scrollbarEl,\n paginationEl\n } = _ref;\n const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass');\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs\n } = swiper;\n let needThumbsInit;\n let needControllerInit;\n let needPaginationInit;\n let needScrollbarInit;\n let needNavigationInit;\n let loopNeedDestroy;\n let loopNeedEnable;\n let loopNeedReloop;\n if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) {\n needThumbsInit = true;\n }\n if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n needControllerInit = true;\n }\n if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n needPaginationInit = true;\n }\n if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n needScrollbarInit = true;\n }\n if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n needNavigationInit = true;\n }\n const destroyModule = mod => {\n if (!swiper[mod]) return;\n swiper[mod].destroy();\n if (mod === 'navigation') {\n if (swiper.isElement) {\n swiper[mod].prevEl.remove();\n swiper[mod].nextEl.remove();\n }\n currentParams[mod].prevEl = undefined;\n currentParams[mod].nextEl = undefined;\n swiper[mod].prevEl = undefined;\n swiper[mod].nextEl = undefined;\n } else {\n if (swiper.isElement) {\n swiper[mod].el.remove();\n }\n currentParams[mod].el = undefined;\n swiper[mod].el = undefined;\n }\n };\n if (changedParams.includes('loop') && swiper.isElement) {\n if (currentParams.loop && !passedParams.loop) {\n loopNeedDestroy = true;\n } else if (!currentParams.loop && passedParams.loop) {\n loopNeedEnable = true;\n } else {\n loopNeedReloop = true;\n }\n }\n updateParams.forEach(key => {\n if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n extend(currentParams[key], passedParams[key]);\n if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) {\n destroyModule(key);\n }\n } else {\n const newValue = passedParams[key];\n if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n if (newValue === false) {\n destroyModule(key);\n }\n } else {\n currentParams[key] = passedParams[key];\n }\n }\n });\n if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {\n virtual.slides = slides;\n virtual.update(true);\n }\n if (changedParams.includes('children') && slides && currentParams.loop) {\n loopNeedReloop = true;\n }\n if (needThumbsInit) {\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n if (needControllerInit) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (needPaginationInit) {\n if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) {\n paginationEl = document.createElement('div');\n paginationEl.classList.add('swiper-pagination');\n paginationEl.part.add('pagination');\n swiper.el.appendChild(paginationEl);\n }\n if (paginationEl) currentParams.pagination.el = paginationEl;\n pagination.init();\n pagination.render();\n pagination.update();\n }\n if (needScrollbarInit) {\n if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) {\n scrollbarEl = document.createElement('div');\n scrollbarEl.classList.add('swiper-scrollbar');\n scrollbarEl.part.add('scrollbar');\n swiper.el.appendChild(scrollbarEl);\n }\n if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n if (needNavigationInit) {\n if (swiper.isElement) {\n if (!nextEl || typeof nextEl === 'string') {\n nextEl = document.createElement('div');\n nextEl.classList.add('swiper-button-next');\n nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg;\n nextEl.part.add('button-next');\n swiper.el.appendChild(nextEl);\n }\n if (!prevEl || typeof prevEl === 'string') {\n prevEl = document.createElement('div');\n prevEl.classList.add('swiper-button-prev');\n prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg;\n prevEl.part.add('button-prev');\n swiper.el.appendChild(prevEl);\n }\n }\n if (nextEl) currentParams.navigation.nextEl = nextEl;\n if (prevEl) currentParams.navigation.prevEl = prevEl;\n navigation.init();\n navigation.update();\n }\n if (changedParams.includes('allowSlideNext')) {\n swiper.allowSlideNext = passedParams.allowSlideNext;\n }\n if (changedParams.includes('allowSlidePrev')) {\n swiper.allowSlidePrev = passedParams.allowSlidePrev;\n }\n if (changedParams.includes('direction')) {\n swiper.changeDirection(passedParams.direction, false);\n }\n if (loopNeedDestroy || loopNeedReloop) {\n swiper.loopDestroy();\n }\n if (loopNeedEnable || loopNeedReloop) {\n swiper.loopCreate();\n }\n swiper.update();\n}\n\nexport { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w };\n","import { e as extend, i as isObject, c as attrToProp, p as paramsList } from './update-swiper.mjs';\nimport { d as defaults } from './swiper-core.mjs';\n\nconst formatValue = val => {\n if (parseFloat(val) === Number(val)) return Number(val);\n if (val === 'true') return true;\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'null') return null;\n if (val === 'undefined') return undefined;\n if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('\"')) {\n let v;\n try {\n v = JSON.parse(val);\n } catch (err) {\n v = val;\n }\n return v;\n }\n return val;\n};\nconst modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom'];\nfunction getParams(element, propName, propValue) {\n const params = {};\n const passedParams = {};\n extend(params, defaults);\n const localParamsList = [...paramsList, 'on'];\n const allowedParams = localParamsList.map(key => key.replace(/_/, ''));\n\n // First check props\n localParamsList.forEach(paramName => {\n paramName = paramName.replace('_', '');\n if (typeof element[paramName] !== 'undefined') {\n passedParams[paramName] = element[paramName];\n }\n });\n\n // Attributes\n const attrsList = [...element.attributes];\n if (typeof propName === 'string' && typeof propValue !== 'undefined') {\n attrsList.push({\n name: propName,\n value: isObject(propValue) ? {\n ...propValue\n } : propValue\n });\n }\n attrsList.forEach(attr => {\n const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0];\n if (moduleParam) {\n const parentObjName = attrToProp(moduleParam);\n const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]);\n if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {};\n if (passedParams[parentObjName] === true) {\n passedParams[parentObjName] = {\n enabled: true\n };\n }\n passedParams[parentObjName][subObjName] = formatValue(attr.value);\n } else {\n const name = attrToProp(attr.name);\n if (!allowedParams.includes(name)) return;\n const value = formatValue(attr.value);\n if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) {\n if (passedParams[name].constructor !== Object) {\n passedParams[name] = {};\n }\n passedParams[name].enabled = !!value;\n } else {\n passedParams[name] = value;\n }\n }\n });\n extend(params, passedParams);\n if (params.navigation) {\n params.navigation = {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next',\n ...(params.navigation !== true ? params.navigation : {})\n };\n } else if (params.navigation === false) {\n delete params.navigation;\n }\n if (params.scrollbar) {\n params.scrollbar = {\n el: '.swiper-scrollbar',\n ...(params.scrollbar !== true ? params.scrollbar : {})\n };\n } else if (params.scrollbar === false) {\n delete params.scrollbar;\n }\n if (params.pagination) {\n params.pagination = {\n el: '.swiper-pagination',\n ...(params.pagination !== true ? params.pagination : {})\n };\n } else if (params.pagination === false) {\n delete params.pagination;\n }\n return {\n params,\n passedParams\n };\n}\n\nexport { getParams as g };\n","/**\n * Swiper Custom Element 10.3.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: September 28, 2023\n */\n\nimport './swiper-bundle.mjs';\nimport { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs';\nimport { g as getParams } from './shared/get-element-params.mjs';\nimport { S as Swiper } from './shared/swiper-core.mjs';\n\n/* eslint-disable spaced-comment */\n\nconst SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;overflow:clip;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}`\nconst SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`\n\nclass DummyHTMLElement {}\nconst ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement;\nconst arrowSvg = `\n `;\nconst addStyle = (shadowRoot, styles) => {\n if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) {\n const styleSheet = new CSSStyleSheet();\n styleSheet.replaceSync(styles);\n shadowRoot.adoptedStyleSheets = [styleSheet];\n } else {\n const style = document.createElement('style');\n style.rel = 'stylesheet';\n style.textContent = styles;\n shadowRoot.appendChild(style);\n }\n};\nclass SwiperContainer extends ClassToExtend {\n constructor() {\n super();\n this.attachShadow({\n mode: 'open'\n });\n }\n static get nextButtonSvg() {\n return arrowSvg;\n }\n static get prevButtonSvg() {\n return arrowSvg.replace('/>', ' transform-origin=\"center\" transform=\"rotate(180)\"/>');\n }\n cssStyles() {\n return [SwiperCSS,\n // eslint-disable-line\n ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\\n');\n }\n cssLinks() {\n return this.injectStylesUrls || [];\n }\n calcSlideSlots() {\n const currentSideSlots = this.slideSlots || 0;\n // slide slots\n const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => {\n return parseInt(child.getAttribute('slot').split('slide-')[1], 10);\n });\n this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0;\n if (!this.rendered) return;\n if (this.slideSlots > currentSideSlots) {\n for (let i = currentSideSlots; i < this.slideSlots; i += 1) {\n const slideEl = document.createElement('swiper-slide');\n slideEl.setAttribute('part', `slide slide-${i + 1}`);\n const slotEl = document.createElement('slot');\n slotEl.setAttribute('name', `slide-${i + 1}`);\n slideEl.appendChild(slotEl);\n this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl);\n }\n } else if (this.slideSlots < currentSideSlots) {\n const slides = this.swiper.slides;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (i > this.slideSlots) {\n slides[i].remove();\n }\n }\n }\n }\n render() {\n if (this.rendered) return;\n this.calcSlideSlots();\n\n // local styles\n let localStyles = this.cssStyles();\n if (this.slideSlots > 0) {\n localStyles = localStyles.replace(/::slotted\\(([a-z-0-9.]*)\\)/g, '$1');\n }\n if (localStyles.length) {\n addStyle(this.shadowRoot, localStyles);\n }\n this.cssLinks().forEach(url => {\n const linkExists = this.shadowRoot.querySelector(`link[href=\"${url}\"]`);\n if (linkExists) return;\n const linkEl = document.createElement('link');\n linkEl.rel = 'stylesheet';\n linkEl.href = url;\n this.shadowRoot.appendChild(linkEl);\n });\n // prettier-ignore\n const el = document.createElement('div');\n el.classList.add('swiper');\n el.part = 'container';\n\n // prettier-ignore\n el.innerHTML = `\n \n
          \n \n ${Array.from({\n length: this.slideSlots\n }).map((_, index) => `\n \n \n \n `).join('')}\n
          \n \n ${needsNavigation(this.passedParams) ? `\n
          ${this.constructor.prevButtonSvg}
          \n
          ${this.constructor.nextButtonSvg}
          \n ` : ''}\n ${needsPagination(this.passedParams) ? `\n
          \n ` : ''}\n ${needsScrollbar(this.passedParams) ? `\n
          \n ` : ''}\n `;\n this.shadowRoot.appendChild(el);\n this.rendered = true;\n }\n initialize() {\n var _this = this;\n if (this.initialized) return;\n this.initialized = true;\n const {\n params: swiperParams,\n passedParams\n } = getParams(this);\n this.swiperParams = swiperParams;\n this.passedParams = passedParams;\n delete this.swiperParams.init;\n this.render();\n\n // eslint-disable-next-line\n this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), {\n ...(swiperParams.virtual ? {} : {\n observer: true,\n observeSlideChildren: this.slideSlots > 0\n }),\n ...swiperParams,\n touchEventsTarget: 'container',\n onAny: function (name) {\n if (name === 'observerUpdate') {\n _this.calcSlideSlots();\n }\n const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase();\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n const event = new CustomEvent(eventName, {\n detail: args,\n bubbles: name !== 'hashChange',\n cancelable: true\n });\n _this.dispatchEvent(event);\n }\n });\n }\n connectedCallback() {\n if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) {\n return;\n }\n if (this.init === false || this.getAttribute('init') === 'false') {\n return;\n }\n this.initialize();\n }\n disconnectedCallback() {\n if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) {\n return;\n }\n if (this.swiper && this.swiper.destroy) {\n this.swiper.destroy();\n }\n this.initialized = false;\n }\n updateSwiperOnPropChange(propName, propValue) {\n const {\n params: swiperParams,\n passedParams\n } = getParams(this, propName, propValue);\n this.passedParams = passedParams;\n this.swiperParams = swiperParams;\n updateSwiper({\n swiper: this.swiper,\n passedParams: this.passedParams,\n changedParams: [attrToProp(propName)],\n ...(propName === 'navigation' && passedParams[propName] ? {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next'\n } : {}),\n ...(propName === 'pagination' && passedParams[propName] ? {\n paginationEl: '.swiper-pagination'\n } : {}),\n ...(propName === 'scrollbar' && passedParams[propName] ? {\n scrollbarEl: '.swiper-scrollbar'\n } : {})\n });\n }\n attributeChangedCallback(attr, prevValue, newValue) {\n if (!this.initialized) return;\n if (prevValue === 'true' && newValue === null) {\n newValue = false;\n }\n this.updateSwiperOnPropChange(attr, newValue);\n }\n static get observedAttributes() {\n const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase());\n return attrs;\n }\n}\nparamsList.forEach(paramName => {\n if (paramName === 'init') return;\n paramName = paramName.replace('_', '');\n Object.defineProperty(SwiperContainer.prototype, paramName, {\n configurable: true,\n get() {\n return (this.passedParams || {})[paramName];\n },\n set(value) {\n if (!this.passedParams) this.passedParams = {};\n this.passedParams[paramName] = value;\n if (!this.initialized) return;\n this.updateSwiperOnPropChange(paramName, value);\n }\n });\n});\nclass SwiperSlide extends ClassToExtend {\n constructor() {\n super();\n this.attachShadow({\n mode: 'open'\n });\n }\n render() {\n const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true';\n addStyle(this.shadowRoot, SwiperSlideCSS);\n this.shadowRoot.appendChild(document.createElement('slot'));\n if (lazy) {\n const lazyDiv = document.createElement('div');\n lazyDiv.classList.add('swiper-lazy-preloader');\n lazyDiv.part.add('preloader');\n this.shadowRoot.appendChild(lazyDiv);\n }\n }\n initialize() {\n this.render();\n }\n connectedCallback() {\n this.initialize();\n }\n}\n\n// eslint-disable-next-line\nconst register = () => {\n if (typeof window === 'undefined') return;\n if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer);\n if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide);\n};\nif (typeof window !== 'undefined') {\n window.SwiperElementRegisterParams = params => {\n paramsList.push(...params);\n };\n}\n\nexport { SwiperContainer, SwiperSlide, register };\n","// eslint-disable-next-line\nimport Swiper from 'swiper/bundle';\n// eslint-disable-next-line\nimport { register } from 'swiper/element/bundle';\nimport $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nregister();\n\n\n\nfunction initSwiper(swiperEl) {\n const app = this;\n const $swiperEl = $(swiperEl);\n if ($swiperEl.length === 0) return;\n const isElement = $swiperEl[0].swiper && $swiperEl[0].swiper.isElement;\n if ($swiperEl[0].swiper && !$swiperEl[0].swiper.isElement) return;\n let initialSlide;\n let params = {};\n let isTabs;\n let isRoutableTabs;\n if ($swiperEl.hasClass('tabs')) {\n initialSlide = $swiperEl.children('swiper-slide').indexOf($swiperEl.children('.tab-active')[0]);\n isTabs = true;\n isRoutableTabs = $swiperEl.find('.tabs-routable').length > 0;\n }\n if ($swiperEl.attr('data-swiper')) {\n params = JSON.parse($swiperEl.attr('data-swiper'));\n } else if ($swiperEl[0].f7SwiperParams) {\n params = $swiperEl[0].f7SwiperParams;\n } else {\n params = $swiperEl.dataset();\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (typeof value === 'string' && value.indexOf('{') === 0 && value.indexOf('}') > 0) {\n try {\n params[key] = JSON.parse(value);\n } catch (e) {\n // not JSON\n }\n }\n });\n }\n if (typeof params.initialSlide === 'undefined' && typeof initialSlide !== 'undefined') {\n params.initialSlide = initialSlide;\n }\n const swiper = isElement ? $swiperEl[0].swiper : app.swiper.create($swiperEl[0], params);\n if (isElement) {\n swiper.slideTo(initialSlide, 0);\n }\n function updateSwiper() {\n swiper.update();\n }\n const $tabEl = $swiperEl.parents('.tab').filter(tabEl => {\n return $(tabEl).parent('.tabs').parent('.tabs-animated-wrap, swiper-container.tabs').length === 0;\n }).eq(0);\n $swiperEl.parents('.popup, .login-screen, .sheet-modal, .popover').on('modal:open', updateSwiper);\n $swiperEl.parents('.panel').on('panel:open', updateSwiper);\n if ($tabEl && $tabEl.length) {\n $tabEl.on('tab:show', updateSwiper);\n }\n swiper.on('beforeDestroy', () => {\n $swiperEl.parents('.popup, .login-screen, .sheet-modal, .popover').off('modal:open', updateSwiper);\n $swiperEl.parents('.panel').off('panel:open', updateSwiper);\n if ($tabEl && $tabEl.length) {\n $tabEl.off('tab:show', updateSwiper);\n }\n });\n if (isTabs) {\n swiper.on('slideChange', () => {\n if (isRoutableTabs) {\n let view = app.views.get($swiperEl.parents('.view'));\n if (!view) view = app.views.main;\n const router = view.router;\n const tabRouteUrl = router.findTabRouteUrl($(swiper.slides).eq(swiper.activeIndex)[0]);\n if (tabRouteUrl) {\n setTimeout(() => {\n router.navigate(tabRouteUrl);\n }, 0);\n }\n } else {\n app.tab.show({\n tabEl: $(swiper.slides).eq(swiper.activeIndex)\n });\n }\n });\n }\n}\nexport default {\n name: 'swiper',\n static: {\n Swiper\n },\n create() {\n const app = this;\n app.swiper = ConstructorMethods({\n defaultSelector: '.swiper',\n constructor: Swiper,\n domProp: 'swiper'\n });\n },\n on: {\n pageMounted(page) {\n const app = this;\n page.$el.find('swiper-container.tabs').each(swiperEl => {\n initSwiper.call(app, swiperEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('swiper-container.tabs').each(swiperEl => {\n initSwiper.call(app, swiperEl);\n });\n },\n pageReinit(page) {\n const app = this;\n page.$el.find('swiper-container.tabs').each(swiperEl => {\n const swiper = app.swiper.get(swiperEl);\n if (swiper && swiper.update) swiper.update();\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('swiper-container.tabs').each(swiperEl => {\n initSwiper.call(app, swiperEl);\n });\n },\n tabShow(tabEl) {\n const app = this;\n $(tabEl).find('swiper-container.tabs').each(swiperEl => {\n const swiper = app.swiper.get(swiperEl);\n if (swiper && swiper.update) swiper.update();\n });\n },\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('swiper-container.tabs').each(swiperEl => {\n app.swiper.destroy(swiperEl);\n });\n }\n }\n};","/* eslint indent: [\"off\"] */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, now, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass PhotoBrowser extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const pb = this;\n pb.app = app;\n const defaults = extend({\n on: {}\n }, app.params.photoBrowser);\n\n // Extend defaults with modules params\n pb.useModulesParams(defaults);\n pb.params = extend(defaults, params);\n extend(pb, {\n exposed: false,\n opened: false,\n activeIndex: pb.params.swiper.initialSlide,\n url: pb.params.url,\n swipeToClose: {\n allow: true,\n isTouched: false,\n diff: undefined,\n start: undefined,\n current: undefined,\n started: false,\n activeSlide: undefined,\n timeStart: undefined\n }\n });\n\n // Install Modules\n pb.useModules();\n\n // Init\n pb.init();\n }\n get view() {\n const {\n params,\n app\n } = this;\n return params.view || app.views.main;\n }\n onSlideChange(swiper) {\n const pb = this;\n pb.activeIndex = swiper.activeIndex;\n let current = swiper.activeIndex + 1;\n let total = pb.params.virtualSlides ? pb.params.photos.length : swiper.slides.length;\n if (swiper.params.loop) {\n total -= 2;\n current -= swiper.loopedSlides;\n if (current < 1) current = total + current;\n if (current > total) current -= total;\n }\n const $activeSlideEl = pb.params.virtualSlides ? $(swiper.wrapperEl).find(`.swiper-slide[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : $(swiper.slides).eq(swiper.activeIndex);\n const $previousSlideEl = pb.params.virtualSlides ? $(swiper.wrapperEl).find(`.swiper-slide[data-swiper-slide-index=\"${swiper.previousIndex}\"]`) : $(swiper.slides).eq(swiper.previousIndex);\n let $currentEl = pb.$el.find('.photo-browser-current');\n let $totalEl = pb.$el.find('.photo-browser-total');\n let navbarEl;\n if (pb.params.type === 'page' && pb.params.navbar && $currentEl.length === 0 && pb.app.theme === 'ios') {\n navbarEl = pb.app.navbar.getElByPage(pb.$el);\n if (navbarEl) {\n $currentEl = $(navbarEl).find('.photo-browser-current');\n $totalEl = $(navbarEl).find('.photo-browser-total');\n }\n }\n if ($currentEl.length && $totalEl.length) {\n $currentEl.text(current);\n $totalEl.text(total);\n if (!navbarEl) navbarEl = $currentEl.parents('.navbar')[0];\n if (navbarEl) {\n pb.app.navbar.size(navbarEl);\n }\n }\n\n // Update captions\n if (pb.captions.length > 0) {\n const captionIndex = swiper.params.loop ? $activeSlideEl.attr('data-swiper-slide-index') : pb.activeIndex;\n pb.$captionsContainerEl.find('.photo-browser-caption-active').removeClass('photo-browser-caption-active');\n pb.$captionsContainerEl.find(`[data-caption-index=\"${captionIndex}\"]`).addClass('photo-browser-caption-active');\n }\n\n // Stop Video\n const previousSlideVideo = $previousSlideEl.find('video');\n if (previousSlideVideo.length > 0) {\n if ('pause' in previousSlideVideo[0]) previousSlideVideo[0].pause();\n }\n }\n onTouchStart() {\n const pb = this;\n const swipeToClose = pb.swipeToClose;\n if (!swipeToClose.allow) return;\n swipeToClose.isTouched = true;\n }\n onTouchMove(e) {\n const pb = this;\n const swipeToClose = pb.swipeToClose;\n if (!swipeToClose.isTouched) return;\n if (!swipeToClose.started) {\n swipeToClose.started = true;\n swipeToClose.start = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (pb.params.virtualSlides) {\n swipeToClose.activeSlide = $(pb.swiper.wrapperEl).children('.swiper-slide-active');\n } else {\n swipeToClose.activeSlide = $(pb.swiper.slides).eq(pb.swiper.activeIndex);\n }\n swipeToClose.timeStart = now();\n }\n e.preventDefault();\n swipeToClose.current = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n swipeToClose.diff = swipeToClose.start - swipeToClose.current;\n pb.$el.transition(0).transform(`translate3d(0,${-swipeToClose.diff}px,0)`);\n }\n onTouchEnd() {\n const pb = this;\n const swipeToClose = pb.swipeToClose;\n swipeToClose.isTouched = false;\n if (!swipeToClose.started) {\n swipeToClose.started = false;\n return;\n }\n swipeToClose.started = false;\n swipeToClose.allow = false;\n const diff = Math.abs(swipeToClose.diff);\n const timeDiff = new Date().getTime() - swipeToClose.timeStart;\n if (timeDiff < 300 && diff > 20 || timeDiff >= 300 && diff > 100) {\n nextTick(() => {\n if (pb.$el) {\n if (swipeToClose.diff < 0) pb.$el.addClass('swipe-close-to-bottom');else pb.$el.addClass('swipe-close-to-top');\n }\n pb.emit('local::swipeToClose', pb);\n pb.$el.transform('').transition('');\n pb.close();\n swipeToClose.allow = true;\n });\n return;\n }\n if (diff !== 0) {\n pb.$el.addClass('photo-browser-transitioning').transitionEnd(() => {\n swipeToClose.allow = true;\n pb.$el.removeClass('photo-browser-transitioning');\n });\n } else {\n swipeToClose.allow = true;\n }\n nextTick(() => {\n pb.$el.transform('').transition('');\n });\n }\n\n // Render Functions\n renderNavbar() {\n const pb = this;\n if (pb.params.renderNavbar) return pb.params.renderNavbar.call(pb);\n const iconsColor = pb.params.iconsColor;\n const pageBackLinkText = pb.app.theme === 'ios' && pb.params.pageBackLinkText ? pb.params.pageBackLinkText : '';\n const renderNavbarCount = typeof pb.params.navbarShowCount === 'undefined' ? pb.params.photos.length > 1 : pb.params.navbarShowCount;\n const isPopup = pb.params.type !== 'page';\n return $jsx(\"div\", {\n class: `navbar navbar-photo-browser ${pb.params.theme === 'dark' ? 'navbar-photo-browser-dark' : ''}`\n }, $jsx(\"div\", {\n class: \"navbar-bg\"\n }), $jsx(\"div\", {\n class: \"navbar-inner navbar-inner-centered-title sliding\"\n }, !isPopup && $jsx(\"div\", {\n class: \"left\"\n }, $jsx(\"a\", {\n class: `link ${!pageBackLinkText ? 'icon-only' : ''} back`\n }, $jsx(\"i\", {\n class: `icon icon-back ${iconsColor ? `color-${iconsColor}` : ''}`\n }), pageBackLinkText && $jsx(\"span\", null, pageBackLinkText))), renderNavbarCount && $jsx(\"div\", {\n class: \"title\"\n }, $jsx(\"span\", {\n class: \"photo-browser-current\"\n }), $jsx(\"span\", {\n class: \"photo-browser-of\"\n }, pb.params.navbarOfText), $jsx(\"span\", {\n class: \"photo-browser-total\"\n })), isPopup && (pb.params.popupCloseLinkText || pb.params.popupCloseLinkIcon) && $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link popup-close\",\n \"data-popup\": \".photo-browser-popup\"\n }, pb.params.popupCloseLinkIcon && pb.app.theme === 'ios' && $jsx(\"i\", null, $jsx(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"56\",\n height: \"56\",\n viewBox: \"0 0 56 56\"\n }, $jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M 10.0234 43.0234 C 9.2266 43.8203 9.2031 45.1797 10.0234 45.9766 C 10.8438 46.7734 12.1797 46.7734 13.0000 45.9766 L 28.0000 30.9766 L 43.0000 45.9766 C 43.7969 46.7734 45.1563 46.7969 45.9766 45.9766 C 46.7734 45.1562 46.7734 43.8203 45.9766 43.0234 L 30.9531 28.0000 L 45.9766 13.0000 C 46.7734 12.2031 46.7969 10.8437 45.9766 10.0469 C 45.1328 9.2266 43.7969 9.2266 43.0000 10.0469 L 28.0000 25.0469 L 13.0000 10.0469 C 12.1797 9.2266 10.8203 9.2031 10.0234 10.0469 C 9.2266 10.8672 9.2266 12.2031 10.0234 13.0000 L 25.0234 28.0000 Z\"\n }))), pb.params.popupCloseLinkIcon && pb.app.theme === 'md' && $jsx(\"i\", null, $jsx(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n height: \"24px\",\n viewBox: \"0 0 24 24\",\n width: \"24px\",\n fill: \"currentColor\"\n }, $jsx(\"path\", {\n d: \"M0 0h24v24H0V0z\",\n fill: \"none\"\n }), $jsx(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z\"\n }))), pb.params.popupCloseLinkText && $jsx(\"span\", null, pb.params.popupCloseLinkText)))));\n }\n renderToolbar() {\n const pb = this;\n if (pb.params.renderToolbar) return pb.params.renderToolbar.call(pb);\n const iconsColor = pb.params.iconsColor;\n return $jsx(\"div\", {\n class: \"toolbar toolbar-bottom tabbar\"\n }, $jsx(\"div\", {\n class: \"toolbar-inner\"\n }, $jsx(\"a\", {\n class: \"link photo-browser-prev\"\n }, $jsx(\"i\", {\n class: `icon icon-back ${iconsColor ? `color-${iconsColor}` : ''}`\n })), $jsx(\"a\", {\n class: \"link photo-browser-next\"\n }, $jsx(\"i\", {\n class: `icon icon-forward ${iconsColor ? `color-${iconsColor}` : ''}`\n }))));\n }\n renderThumbs() {\n const pb = this;\n return $jsx(\"div\", {\n class: \"toolbar toolbar-bottom photo-browser-thumbs\"\n }, $jsx(\"div\", {\n class: \"swiper\"\n }, $jsx(\"div\", {\n class: \"swiper-wrapper\"\n }, pb.params.thumbs.map((thumb, index) => pb.renderThumb(thumb, index)))));\n }\n renderCaption(caption, index) {\n const pb = this;\n if (pb.params.renderCaption) return pb.params.renderCaption.call(pb, caption, index);\n return $jsx(\"div\", {\n class: \"photo-browser-caption\",\n \"data-caption-index\": index\n }, caption);\n }\n renderObject(photo, index) {\n const pb = this;\n if (pb.params.renderObject) return pb.params.renderObject.call(pb, photo, index);\n return $jsx(\"div\", {\n class: \"photo-browser-slide photo-browser-object-slide swiper-slide\",\n \"data-swiper-slide-index\": index\n }, photo.html ? photo.html : photo);\n }\n renderLazyPhoto(photo, index) {\n const pb = this;\n if (pb.params.renderLazyPhoto) return pb.params.renderLazyPhoto.call(pb, photo, index);\n return $jsx(\"div\", {\n class: \"photo-browser-slide photo-browser-slide-lazy swiper-slide\",\n \"data-swiper-slide-index\": index\n }, $jsx(\"div\", {\n class: \"swiper-lazy-preloader\"\n }), $jsx(\"span\", {\n class: \"swiper-zoom-container\"\n }, $jsx(\"img\", {\n loading: \"lazy\",\n src: photo.url ? photo.url : photo\n })));\n }\n renderPhoto(photo, index) {\n const pb = this;\n if (pb.params.renderPhoto) return pb.params.renderPhoto.call(pb, photo, index);\n return $jsx(\"div\", {\n class: \"photo-browser-slide swiper-slide\",\n \"data-swiper-slide-index\": index\n }, $jsx(\"span\", {\n class: \"swiper-zoom-container\"\n }, $jsx(\"img\", {\n src: photo.url ? photo.url : photo\n })));\n }\n renderThumb(thumb, index) {\n const pb = this;\n const url = typeof thumb === 'string' ? thumb : thumb.url;\n if (pb.params.renderThumb) return pb.params.renderThumb.call(pb, thumb, index);\n return $jsx(\"div\", {\n class: \"photo-browser-thumbs-slide swiper-slide\",\n \"data-swiper-slide-index\": index\n }, url && $jsx(\"img\", {\n src: url,\n loading: \"lazy\"\n }));\n }\n render() {\n const pb = this;\n if (pb.params.render) return pb.params.render.call(pb, pb.params);\n return $jsx(\"div\", {\n class: `photo-browser photo-browser-${pb.params.theme}`\n }, $jsx(\"div\", {\n class: \"view\"\n }, $jsx(\"div\", {\n class: `page photo-browser-page photo-browser-page-${pb.params.theme} no-toolbar ${!pb.params.navbar ? 'no-navbar' : ''}`,\n \"data-name\": \"photo-browser-page\"\n }, pb.params.navbar && pb.renderNavbar(), pb.params.toolbar && pb.renderToolbar(), pb.params.thumbs && pb.params.thumbs.length && pb.renderThumbs(), $jsx(\"div\", {\n class: `photo-browser-captions photo-browser-captions-${pb.params.captionsTheme || pb.params.theme}`\n }, pb.params.photos.map((photo, index) => {\n if (photo.caption) return pb.renderCaption(photo.caption, index);\n return '';\n })), $jsx(\"div\", {\n class: \"photo-browser-swiper-container swiper\"\n }, $jsx(\"div\", {\n class: \"photo-browser-swiper-wrapper swiper-wrapper\"\n }, !pb.params.virtualSlides && pb.params.photos.map((photo, index) => {\n if (photo.html || (typeof photo === 'string' || photo instanceof String) && photo.indexOf('<') >= 0 && photo.indexOf('>') >= 0) {\n return pb.renderObject(photo, index);\n }\n if (pb.params.lazy === true) {\n return pb.renderLazyPhoto(photo, index);\n }\n return pb.renderPhoto(photo, index);\n }))))));\n }\n renderStandalone() {\n const pb = this;\n if (pb.params.renderStandalone) return pb.params.renderStandalone.call(pb);\n const standaloneHtml = `
          ${pb.render()}
          `;\n return standaloneHtml;\n }\n renderPage() {\n const pb = this;\n if (pb.params.renderPage) return pb.params.renderPage.call(pb);\n const pageHtml = pb.render();\n return pageHtml;\n }\n renderPopup() {\n const pb = this;\n if (pb.params.renderPopup) return pb.params.renderPopup.call(pb);\n const popupHtml = `
          ${pb.render()}
          `;\n return popupHtml;\n }\n\n // Callbacks\n onOpen(type, el) {\n const pb = this;\n const app = pb.app;\n const $el = $(el);\n $el[0].f7PhotoBrowser = pb;\n pb.$el = $el;\n pb.el = $el[0];\n pb.openedIn = type;\n pb.opened = true;\n pb.$swiperContainerEl = pb.$el.find('.photo-browser-swiper-container');\n pb.$swiperWrapperEl = pb.$el.find('.photo-browser-swiper-wrapper');\n pb.slides = pb.$el.find('.photo-browser-slide');\n pb.$captionsContainerEl = pb.$el.find('.photo-browser-captions');\n pb.captions = pb.$el.find('.photo-browser-caption');\n const hasThumbs = pb.params.thumbs && pb.params.thumbs.length > 0;\n\n // Init Swiper\n let clickTimeout;\n let preventThumbsSlide;\n let preventMainSlide;\n const initialSlide = pb.activeIndex;\n const swiperParams = extend({}, pb.params.swiper, {\n initialSlide,\n // cssMode:\n // typeof pb.params.swiper.cssMode === 'undefined' && (app.device.ios || app.device.android)\n // ? true\n // : pb.params.swiper.cssMode,\n on: {\n click(e) {\n clearTimeout(clickTimeout);\n if (pb.params.exposition) {\n clickTimeout = setTimeout(() => {\n pb.expositionToggle();\n }, 350);\n }\n pb.emit('local::tap', e);\n pb.emit('local::click', e);\n },\n doubleClick(e) {\n clearTimeout(clickTimeout);\n pb.emit('local::doubleTap', e);\n pb.emit('local::doubleClick', e);\n },\n slideChange() {\n const swiper = this;\n if (hasThumbs && pb.thumbsSwiper && !preventMainSlide) {\n preventThumbsSlide = true;\n pb.thumbsSwiper.slideTo(pb.swiper.activeIndex);\n setTimeout(() => {\n preventThumbsSlide = false;\n });\n }\n pb.onSlideChange(swiper);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n pb.emit('local::slideChange', ...args);\n },\n transitionStart() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n pb.emit('local::transitionStart', ...args);\n },\n transitionEnd() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n pb.emit('local::transitionEnd', ...args);\n },\n slideChangeTransitionStart() {\n const swiper = this;\n pb.onSlideChange(swiper);\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n pb.emit('local::slideChangeTransitionStart', ...args);\n },\n slideChangeTransitionEnd() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n pb.emit('local::slideChangeTransitionEnd', ...args);\n }\n }\n });\n if (pb.params.swipeToClose && pb.params.type !== 'page') {\n extend(swiperParams.on, {\n touchStart(swiper, e) {\n pb.onTouchStart(e);\n pb.emit('local::touchStart', e);\n },\n touchMoveOpposite(swiper, e) {\n pb.onTouchMove(e);\n pb.emit('local::touchMoveOpposite', e);\n },\n touchEnd(swiper, e) {\n pb.onTouchEnd(e);\n pb.emit('local::touchEnd', e);\n }\n });\n }\n if (pb.params.virtualSlides) {\n extend(swiperParams, {\n virtual: {\n slides: pb.params.photos,\n renderSlide(photo, index) {\n if (photo.html || (typeof photo === 'string' || photo instanceof String) && photo.indexOf('<') >= 0 && photo.indexOf('>') >= 0) {\n return pb.renderObject(photo, index);\n }\n if (pb.params.lazy === true) {\n return pb.renderLazyPhoto(photo, index);\n }\n return pb.renderPhoto(photo, index);\n }\n }\n });\n }\n const window = getWindow();\n pb.swiper = app.swiper ? app.swiper.create(pb.$swiperContainerEl[0], swiperParams) : new window.Swiper(pb.$swiperContainerEl[0], swiperParams);\n if (pb.activeIndex === 0 || pb.params.virtualSlides) {\n pb.onSlideChange(pb.swiper);\n }\n if (hasThumbs) {\n const thumbsSwiperParams = {\n el: pb.$el.find('.photo-browser-thumbs .swiper')[0],\n slidesPerView: 'auto',\n centeredSlides: true,\n spaceBetween: 4,\n watchSlidesProgress: true,\n initialSlide,\n on: {\n touchMove() {\n preventMainSlide = true;\n },\n touchEnd() {\n preventMainSlide = false;\n },\n slideChange(s) {\n if (preventThumbsSlide) return;\n pb.swiper.slideTo(s.activeIndex, 0);\n },\n click(s) {\n if (!s.clickedSlide) return;\n const index = parseInt($(s.clickedSlide).attr('data-swiper-slide-index'), 10);\n s.slideTo(index, 0);\n }\n }\n };\n pb.thumbsSwiper = app.swiper ? app.swiper.create(thumbsSwiperParams) : new window.Swiper(thumbsSwiperParams);\n }\n if (pb.$el) {\n pb.$el.trigger('photobrowser:open');\n }\n pb.emit('local::open photoBrowserOpen', pb);\n }\n onOpened() {\n const pb = this;\n if (pb.$el && pb.params.type === 'standalone') {\n pb.$el.css('animation', 'none');\n }\n if (pb.$el) {\n pb.$el.trigger('photobrowser:opened');\n }\n pb.emit('local::opened photoBrowserOpened', pb);\n }\n onClose() {\n const pb = this;\n if (pb.destroyed) return;\n\n // Destroy Swiper\n if (pb.swiper && pb.swiper.destroy) {\n pb.swiper.destroy(true, false);\n pb.swiper = null;\n delete pb.swiper;\n }\n if (pb.thumbsSwiper && pb.thumbsSwiper.destroy) {\n pb.thumbsSwiper.destroy(true, false);\n pb.thumbsSwiper = null;\n delete pb.thumbsSwiper;\n }\n if (pb.$el) {\n pb.$el.trigger('photobrowser:close');\n }\n pb.emit('local::close photoBrowserClose', pb);\n }\n onClosed() {\n const pb = this;\n if (pb.destroyed) return;\n pb.opened = false;\n pb.$el = null;\n pb.el = null;\n delete pb.$el;\n delete pb.el;\n if (pb.$el) {\n pb.$el.trigger('photobrowser:closed');\n }\n pb.emit('local::closed photoBrowserClosed', pb);\n }\n\n // Open\n openPage() {\n const pb = this;\n if (pb.opened) return pb;\n const pageHtml = pb.renderPage();\n pb.view.router.navigate({\n url: pb.url,\n route: {\n content: pageHtml,\n path: pb.url,\n on: {\n pageBeforeIn(e, page) {\n pb.view.$el.addClass(`with-photo-browser-page with-photo-browser-page-${pb.params.theme}`);\n pb.onOpen('page', page.el);\n },\n pageAfterIn(e, page) {\n pb.onOpened('page', page.el);\n },\n pageBeforeOut(e, page) {\n pb.view.$el.removeClass(`with-photo-browser-page with-photo-browser-page-exposed with-photo-browser-page-${pb.params.theme}`);\n pb.onClose('page', page.el);\n },\n pageAfterOut(e, page) {\n pb.onClosed('page', page.el);\n }\n }\n }\n });\n return pb;\n }\n openStandalone() {\n const pb = this;\n if (pb.opened) return pb;\n const standaloneHtml = pb.renderStandalone();\n const popupParams = {\n backdrop: false,\n content: standaloneHtml,\n on: {\n popupOpen(popup) {\n pb.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n pb.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n pb.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n pb.onClosed('popup', popup.el);\n }\n }\n };\n if (pb.params.routableModals && pb.view) {\n pb.view.router.navigate({\n url: pb.url,\n route: {\n path: pb.url,\n popup: popupParams\n }\n });\n } else {\n pb.modal = pb.app.popup.create(popupParams).open();\n }\n return pb;\n }\n openPopup() {\n const pb = this;\n if (pb.opened) return pb;\n const popupHtml = pb.renderPopup();\n const popupParams = {\n content: popupHtml,\n push: pb.params.popupPush,\n closeByBackdropClick: pb.params.closeByBackdropClick,\n on: {\n popupOpen(popup) {\n pb.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n pb.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n pb.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n pb.onClosed('popup', popup.el);\n }\n }\n };\n if (pb.params.routableModals && pb.view) {\n pb.view.router.navigate({\n url: pb.url,\n route: {\n path: pb.url,\n popup: popupParams\n }\n });\n } else {\n pb.modal = pb.app.popup.create(popupParams).open();\n }\n return pb;\n }\n\n // Exposition\n expositionEnable() {\n const pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.addClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) pb.$el.addClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.addClass('photo-browser-captions-exposed');\n pb.exposed = true;\n return pb;\n }\n expositionDisable() {\n const pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.removeClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) pb.$el.removeClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.removeClass('photo-browser-captions-exposed');\n pb.exposed = false;\n return pb;\n }\n expositionToggle() {\n const pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.toggleClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) pb.$el.toggleClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.toggleClass('photo-browser-captions-exposed');\n pb.exposed = !pb.exposed;\n return pb;\n }\n open(index) {\n const pb = this;\n const type = pb.params.type;\n if (pb.opened) {\n if (pb.swiper && typeof index !== 'undefined') {\n pb.swiper.slideTo(parseInt(index, 10));\n }\n return pb;\n }\n if (typeof index !== 'undefined') {\n pb.activeIndex = index;\n }\n if (type === 'standalone') {\n pb.openStandalone();\n }\n if (type === 'page') {\n pb.openPage();\n }\n if (type === 'popup') {\n pb.openPopup();\n }\n return pb;\n }\n close() {\n const pb = this;\n if (!pb.opened) return pb;\n if (pb.params.routableModals && pb.view || pb.openedIn === 'page') {\n pb.view.router.back();\n } else {\n pb.modal.once('modalClosed', () => {\n nextTick(() => {\n if (pb.destroyed) return;\n pb.modal.destroy();\n delete pb.modal;\n });\n });\n pb.modal.close();\n }\n return pb;\n }\n // eslint-disable-next-line\n init() {}\n destroy() {\n let pb = this;\n pb.emit('local::beforeDestroy photoBrowserBeforeDestroy', pb);\n if (pb.$el) {\n pb.$el.trigger('photobrowser:beforedestroy');\n pb.$el[0].f7PhotoBrowser = null;\n delete pb.$el[0].f7PhotoBrowser;\n }\n deleteProps(pb);\n pb.destroyed = true;\n pb = null;\n }\n}\nexport default PhotoBrowser;","import PhotoBrowser from './photo-browser-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'photoBrowser',\n params: {\n photoBrowser: {\n photos: [],\n thumbs: [],\n exposition: true,\n expositionHideCaptions: false,\n type: 'standalone',\n navbar: true,\n toolbar: true,\n theme: 'light',\n captionsTheme: undefined,\n iconsColor: undefined,\n popupPush: false,\n swipeToClose: true,\n pageBackLinkText: 'Back',\n popupCloseLinkText: undefined,\n popupCloseLinkIcon: true,\n navbarOfText: 'of',\n navbarShowCount: undefined,\n view: undefined,\n url: 'photos/',\n routableModals: false,\n virtualSlides: true,\n lazy: true,\n closeByBackdropClick: true,\n renderNavbar: undefined,\n renderToolbar: undefined,\n renderCaption: undefined,\n renderObject: undefined,\n renderLazyPhoto: undefined,\n renderPhoto: undefined,\n renderThumb: undefined,\n renderPage: undefined,\n renderPopup: undefined,\n renderStandalone: undefined,\n swiper: {\n cssMode: false,\n initialSlide: 0,\n spaceBetween: 20,\n speed: 300,\n loop: false,\n keyboard: {\n enabled: true\n },\n navigation: {\n nextEl: '.photo-browser-next',\n prevEl: '.photo-browser-prev'\n },\n zoom: {\n enabled: true,\n maxRatio: 3,\n minRatio: 1\n }\n }\n }\n },\n create() {\n const app = this;\n app.photoBrowser = ConstructorMethods({\n defaultSelector: '.photo-browser-popup, .photo-browser-page',\n constructor: PhotoBrowser,\n app,\n domProp: 'f7PhotoBrowser'\n });\n },\n static: {\n PhotoBrowser\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, now, nextTick } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Notification extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.notification, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const notification = this;\n notification.app = app;\n notification.params = extendedParams;\n const {\n icon,\n title,\n titleRightText,\n subtitle,\n text,\n closeButton,\n closeTimeout,\n cssClass,\n closeOnClick\n } = notification.params;\n let $el;\n if (!notification.params.el) {\n // Find Element\n const notificationHtml = notification.render({\n icon,\n title,\n titleRightText,\n subtitle,\n text,\n closeButton,\n cssClass\n });\n $el = $(notificationHtml);\n } else {\n $el = $(notification.params.el);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return notification.destroy();\n }\n extend(notification, {\n $el,\n el: $el[0],\n type: 'notification'\n });\n $el[0].f7Modal = notification;\n if (closeButton) {\n $el.find('.notification-close-button').on('click', () => {\n notification.close();\n });\n }\n $el.on('click', e => {\n if (closeButton && $(e.target).closest('.notification-close-button').length) {\n return;\n }\n notification.emit('local::click notificationClick', notification);\n if (closeOnClick) notification.close();\n });\n notification.on('beforeDestroy', () => {\n $el.off('click');\n });\n\n /* Touch Events */\n let isTouched;\n let isMoved;\n let isScrolling;\n let touchesDiff;\n let touchStartTime;\n let notificationHeight;\n const touchesStart = {};\n function handleTouchStart(e) {\n if (isTouched) return;\n isTouched = true;\n isMoved = false;\n isScrolling = undefined;\n touchStartTime = now();\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) < Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n if (!isMoved) {\n notification.$el.removeClass('notification-transitioning');\n notification.$el.transition(0);\n notificationHeight = notification.$el[0].offsetHeight / 2;\n }\n isMoved = true;\n touchesDiff = pageY - touchesStart.y;\n let newTranslate = touchesDiff;\n if (touchesDiff > 0) {\n newTranslate = touchesDiff ** 0.8;\n }\n notification.$el.transform(`translate3d(0, ${newTranslate}px, 0)`);\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n if (touchesDiff === 0) {\n return;\n }\n const timeDiff = now() - touchStartTime;\n notification.$el.transition('');\n notification.$el.addClass('notification-transitioning');\n notification.$el.transform('');\n if (touchesDiff < -10 && timeDiff < 300 || -touchesDiff >= notificationHeight / 1) {\n notification.close();\n }\n }\n function attachTouchEvents() {\n notification.$el.on(app.touchEvents.start, handleTouchStart, {\n passive: true\n });\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n function detachTouchEvents() {\n notification.$el.off(app.touchEvents.start, handleTouchStart, {\n passive: true\n });\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n let timeoutId;\n function closeOnTimeout() {\n timeoutId = nextTick(() => {\n if (isTouched && isMoved) {\n closeOnTimeout();\n return;\n }\n notification.close();\n }, closeTimeout);\n }\n notification.on('open', () => {\n if (notification.params.swipeToClose) {\n attachTouchEvents();\n }\n $('.notification.modal-in').each(openedEl => {\n const notificationInstance = app.notification.get(openedEl);\n if (openedEl !== notification.el && notificationInstance) {\n notificationInstance.close();\n }\n });\n if (closeTimeout) {\n closeOnTimeout();\n }\n });\n notification.on('close beforeDestroy', () => {\n if (notification.params.swipeToClose) {\n detachTouchEvents();\n }\n clearTimeout(timeoutId);\n });\n return notification;\n }\n render() {\n const notification = this;\n if (notification.params.render) return notification.params.render.call(notification, notification);\n const {\n icon,\n title,\n titleRightText,\n subtitle,\n text,\n closeButton,\n cssClass\n } = notification.params;\n return $jsx(\"div\", {\n class: `notification ${icon ? 'notification-with-icon' : ''} ${cssClass || ''}`\n }, $jsx(\"div\", {\n class: \"notification-header\"\n }, icon && $jsx(\"div\", {\n class: \"notification-icon\"\n }, icon), title && $jsx(\"div\", {\n class: \"notification-title\"\n }, title), titleRightText && $jsx(\"div\", {\n class: \"notification-title-right-text\"\n }, titleRightText), closeButton && $jsx(\"span\", {\n class: \"notification-close-button\"\n })), $jsx(\"div\", {\n class: \"notification-content\"\n }, subtitle && $jsx(\"div\", {\n class: \"notification-subtitle\"\n }, subtitle), text && $jsx(\"div\", {\n class: \"notification-text\"\n }, text)));\n }\n}\nexport default Notification;","import { extend } from '../../shared/utils.js';\nimport Notification from './notification-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'notification',\n static: {\n Notification\n },\n create() {\n const app = this;\n app.notification = extend({}, ModalMethods({\n app,\n constructor: Notification,\n defaultSelector: '.notification.modal-in'\n }));\n },\n params: {\n notification: {\n icon: null,\n title: null,\n titleRightText: null,\n subtitle: null,\n text: null,\n closeButton: false,\n closeTimeout: null,\n closeOnClick: false,\n swipeToClose: true,\n cssClass: null,\n render: null,\n containerEl: null\n }\n }\n};","/* eslint \"no-useless-escape\": \"off\" */\nimport $ from '../../shared/dom7.js';\nimport { extend, id, nextTick, deleteProps, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Autocomplete extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const ac = this;\n ac.app = app;\n const device = getDevice();\n const defaults = extend({\n on: {}\n }, app.params.autocomplete);\n\n // Extend defaults with modules params\n ac.useModulesParams(defaults);\n ac.params = extend(defaults, params);\n let $openerEl;\n if (ac.params.openerEl) {\n $openerEl = $(ac.params.openerEl);\n if ($openerEl.length) $openerEl[0].f7Autocomplete = ac;\n }\n let $inputEl;\n if (ac.params.inputEl) {\n $inputEl = $(ac.params.inputEl);\n if ($inputEl.length) $inputEl[0].f7Autocomplete = ac;\n }\n const uniqueId = id();\n let url = params.url;\n if (!url && $openerEl && $openerEl.length) {\n if ($openerEl.attr('href')) url = $openerEl.attr('href');else if ($openerEl.find('a').length > 0) {\n url = $openerEl.find('a').attr('href');\n }\n }\n if (!url || url === '#' || url === '') url = ac.params.url;\n const inputType = ac.params.multiple ? 'checkbox' : 'radio';\n extend(ac, {\n $openerEl,\n openerEl: $openerEl && $openerEl[0],\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n id: uniqueId,\n url,\n value: ac.params.value || [],\n inputType,\n inputName: `${inputType}-${uniqueId}`,\n $modalEl: undefined,\n $dropdownEl: undefined\n });\n let previousQuery = '';\n function onInputChange() {\n let query = ac.$inputEl.val().trim();\n if (!ac.params.source) return;\n ac.params.source.call(ac, query, items => {\n let itemsHTML = '';\n const limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;\n ac.items = items;\n let regExp;\n if (ac.params.highlightMatches) {\n query = query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n regExp = new RegExp(`(${query})`, 'i');\n }\n let firstValue;\n let firstItem;\n for (let i = 0; i < limit; i += 1) {\n const itemValue = typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];\n const itemText = typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i];\n if (i === 0) {\n firstValue = itemValue;\n firstItem = ac.items[i];\n }\n itemsHTML += ac.renderItem({\n value: itemValue,\n text: ac.params.highlightMatches ? itemText.replace(regExp, '$1') : itemText\n }, i);\n }\n if (itemsHTML === '' && query === '' && ac.params.dropdownPlaceholderText) {\n itemsHTML += ac.renderItem({\n placeholder: true,\n text: ac.params.dropdownPlaceholderText\n });\n }\n ac.$dropdownEl.find('ul').html(itemsHTML);\n if (ac.params.typeahead) {\n if (!firstValue || !firstItem) {\n return;\n }\n if (firstValue.toLowerCase().indexOf(query.toLowerCase()) !== 0) {\n return;\n }\n if (previousQuery.toLowerCase() === query.toLowerCase()) {\n ac.value = [];\n return;\n }\n if (previousQuery.toLowerCase().indexOf(query.toLowerCase()) === 0) {\n previousQuery = query;\n ac.value = [];\n return;\n }\n $inputEl.val(firstValue);\n $inputEl[0].setSelectionRange(query.length, firstValue.length);\n const previousValue = typeof ac.value[0] === 'object' ? ac.value[0][ac.params.valueProperty] : ac.value[0];\n if (!previousValue || firstValue.toLowerCase() !== previousValue.toLowerCase()) {\n ac.value = [firstItem];\n ac.emit('local::change autocompleteChange', [firstItem]);\n }\n }\n previousQuery = query;\n });\n }\n function onPageInputChange() {\n const inputEl = this;\n const value = inputEl.value;\n const isValues = $(inputEl).parents('.autocomplete-values').length > 0;\n let item;\n let itemValue;\n let aValue;\n if (isValues) {\n if (ac.inputType === 'checkbox' && !inputEl.checked) {\n for (let i = 0; i < ac.value.length; i += 1) {\n aValue = typeof ac.value[i] === 'string' ? ac.value[i] : ac.value[i][ac.params.valueProperty];\n if (aValue === value || aValue * 1 === value * 1) {\n ac.value.splice(i, 1);\n }\n }\n ac.updateValues();\n ac.emit('local::change autocompleteChange', ac.value);\n }\n return;\n }\n\n // Find Related Item\n for (let i = 0; i < ac.items.length; i += 1) {\n itemValue = typeof ac.items[i] === 'object' ? ac.items[i][ac.params.valueProperty] : ac.items[i];\n if (itemValue === value || itemValue * 1 === value * 1) item = ac.items[i];\n }\n if (ac.inputType === 'radio') {\n ac.value = [item];\n } else if (inputEl.checked) {\n ac.value.push(item);\n } else {\n for (let i = 0; i < ac.value.length; i += 1) {\n aValue = typeof ac.value[i] === 'object' ? ac.value[i][ac.params.valueProperty] : ac.value[i];\n if (aValue === value || aValue * 1 === value * 1) {\n ac.value.splice(i, 1);\n }\n }\n }\n\n // Update Values Block\n ac.updateValues();\n\n // On Select Callback\n if (ac.inputType === 'radio' && inputEl.checked || ac.inputType === 'checkbox') {\n ac.emit('local::change autocompleteChange', ac.value);\n }\n }\n function onHtmlClick(e) {\n const $targetEl = $(e.target);\n if ($targetEl.is(ac.$inputEl[0]) || ac.$dropdownEl && $targetEl.closest(ac.$dropdownEl[0]).length) return;\n ac.close();\n }\n function onOpenerClick() {\n ac.open();\n }\n function onInputFocus() {\n ac.open();\n }\n function onInputBlur() {\n if (ac.$dropdownEl.find('label.active-state').length > 0) return;\n setTimeout(() => {\n ac.close();\n }, 0);\n }\n function onResize() {\n ac.positionDropdown();\n }\n function onKeyDown(e) {\n if (!ac.opened) return;\n if (e.keyCode === 27) {\n // ESC\n e.preventDefault();\n ac.$inputEl.blur();\n return;\n }\n if (e.keyCode === 13) {\n // Enter\n const $selectedItemLabel = ac.$dropdownEl.find('.autocomplete-dropdown-selected label');\n if ($selectedItemLabel.length) {\n e.preventDefault();\n $selectedItemLabel.trigger('click');\n ac.$inputEl.blur();\n return;\n }\n if (ac.params.typeahead) {\n e.preventDefault();\n ac.$inputEl.blur();\n }\n return;\n }\n if (e.keyCode !== 40 && e.keyCode !== 38) return;\n e.preventDefault();\n const $selectedItem = ac.$dropdownEl.find('.autocomplete-dropdown-selected');\n let $newItem;\n if ($selectedItem.length) {\n $newItem = $selectedItem[e.keyCode === 40 ? 'next' : 'prev']('li');\n if (!$newItem.length) {\n $newItem = ac.$dropdownEl.find('li').eq(e.keyCode === 40 ? 0 : ac.$dropdownEl.find('li').length - 1);\n }\n } else {\n $newItem = ac.$dropdownEl.find('li').eq(e.keyCode === 40 ? 0 : ac.$dropdownEl.find('li').length - 1);\n }\n if ($newItem.hasClass('autocomplete-dropdown-placeholder')) return;\n $selectedItem.removeClass('autocomplete-dropdown-selected');\n $newItem.addClass('autocomplete-dropdown-selected');\n }\n function onDropdownClick() {\n const $clickedEl = $(this);\n let clickedItem;\n for (let i = 0; i < ac.items.length; i += 1) {\n const itemValue = typeof ac.items[i] === 'object' ? ac.items[i][ac.params.valueProperty] : ac.items[i];\n const value = $clickedEl.attr('data-value');\n if (itemValue === value || itemValue * 1 === value * 1) {\n clickedItem = ac.items[i];\n }\n }\n if (ac.params.updateInputValueOnSelect) {\n ac.$inputEl.val(typeof clickedItem === 'object' ? clickedItem[ac.params.valueProperty] : clickedItem);\n ac.$inputEl.trigger('input change');\n }\n ac.value = [clickedItem];\n ac.emit('local::change autocompleteChange', [clickedItem]);\n ac.close();\n }\n ac.attachEvents = function attachEvents() {\n if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {\n ac.$openerEl.on('click', onOpenerClick);\n }\n if (ac.params.openIn === 'dropdown' && ac.$inputEl) {\n ac.$inputEl.on('focus', onInputFocus);\n ac.$inputEl.on(ac.params.inputEvents, onInputChange);\n if (device.android) {\n $('html').on('click', onHtmlClick);\n } else {\n ac.$inputEl.on('blur', onInputBlur);\n }\n ac.$inputEl.on('keydown', onKeyDown);\n }\n };\n ac.detachEvents = function attachEvents() {\n if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {\n ac.$openerEl.off('click', onOpenerClick);\n }\n if (ac.params.openIn === 'dropdown' && ac.$inputEl) {\n ac.$inputEl.off('focus', onInputFocus);\n ac.$inputEl.off(ac.params.inputEvents, onInputChange);\n if (device.android) {\n $('html').off('click', onHtmlClick);\n } else {\n ac.$inputEl.off('blur', onInputBlur);\n }\n ac.$inputEl.off('keydown', onKeyDown);\n }\n };\n ac.attachDropdownEvents = function attachDropdownEvents() {\n ac.$dropdownEl.on('click', 'label', onDropdownClick);\n app.on('resize', onResize);\n };\n ac.detachDropdownEvents = function detachDropdownEvents() {\n ac.$dropdownEl.off('click', 'label', onDropdownClick);\n app.off('resize', onResize);\n };\n ac.attachPageEvents = function attachPageEvents() {\n ac.$el.on('change', 'input[type=\"radio\"], input[type=\"checkbox\"]', onPageInputChange);\n if (ac.params.closeOnSelect && !ac.params.multiple) {\n ac.$el.once('click', '.list label', () => {\n nextTick(() => {\n ac.close();\n });\n });\n }\n };\n ac.detachPageEvents = function detachPageEvents() {\n ac.$el.off('change', 'input[type=\"radio\"], input[type=\"checkbox\"]', onPageInputChange);\n };\n\n // Install Modules\n ac.useModules();\n\n // Init\n ac.init();\n return ac;\n }\n get view() {\n const ac = this;\n const {\n $openerEl,\n $inputEl,\n app\n } = ac;\n let view;\n if (ac.params.view) {\n view = ac.params.view;\n } else if ($openerEl || $inputEl) {\n const $el = $openerEl || $inputEl;\n view = $el.closest('.view').length && $el.closest('.view')[0].f7View;\n }\n if (!view) view = app.views.main;\n return view;\n }\n positionDropdown() {\n const ac = this;\n const {\n $inputEl,\n app,\n $dropdownEl\n } = ac;\n const $pageContentEl = $inputEl.parents('.page-content');\n if ($pageContentEl.length === 0) return;\n const inputOffset = $inputEl.offset();\n const inputOffsetWidth = $inputEl[0].offsetWidth;\n const inputOffsetHeight = $inputEl[0].offsetHeight;\n const $listEl = $inputEl.parents('.list');\n let $listParent;\n $listEl.parents().each(parentEl => {\n if ($listParent) return;\n const $parentEl = $(parentEl);\n if ($parentEl.parent($pageContentEl).length) $listParent = $parentEl;\n });\n const listOffset = $listEl.offset();\n const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n const listOffsetLeft = $listEl.length > 0 ? listOffset.left - $pageContentEl.offset().left : 0;\n const inputOffsetLeft = inputOffset.left - ($listEl.length > 0 ? listOffset.left : 0) - (app.rtl ? 0 : 0);\n const inputOffsetTop = inputOffset.top - ($pageContentEl.offset().top - $pageContentEl[0].scrollTop);\n const maxHeight = $pageContentEl[0].scrollHeight - paddingBottom - (inputOffsetTop + $pageContentEl[0].scrollTop) - $inputEl[0].offsetHeight;\n const paddingProp = app.rtl ? 'padding-right' : 'padding-left';\n let paddingValue;\n if ($listEl.length) {\n paddingValue = (app.rtl ? $listEl[0].offsetWidth - inputOffsetLeft - inputOffsetWidth : inputOffsetLeft) - (app.theme === 'md' ? 16 : 15);\n }\n $dropdownEl.css({\n left: `${$listEl.length > 0 ? listOffsetLeft : inputOffsetLeft}px`,\n top: `${inputOffsetTop + $pageContentEl[0].scrollTop + inputOffsetHeight}px`,\n width: `${$listEl.length > 0 ? $listEl[0].offsetWidth : inputOffsetWidth}px`\n });\n $dropdownEl.children('.autocomplete-dropdown-inner').css({\n maxHeight: `${maxHeight}px`,\n [paddingProp]: $listEl.length > 0 ? `${paddingValue}px` : ''\n });\n }\n focus() {\n const ac = this;\n ac.$el.find('input[type=search]').focus();\n }\n source(query) {\n const ac = this;\n if (!ac.params.source) return;\n const {\n $el\n } = ac;\n ac.params.source.call(ac, query, items => {\n let itemsHTML = '';\n const limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;\n ac.items = items;\n for (let i = 0; i < limit; i += 1) {\n let selected = false;\n const itemValue = typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];\n for (let j = 0; j < ac.value.length; j += 1) {\n const aValue = typeof ac.value[j] === 'object' ? ac.value[j][ac.params.valueProperty] : ac.value[j];\n if (aValue === itemValue || aValue * 1 === itemValue * 1) selected = true;\n }\n itemsHTML += ac.renderItem({\n value: itemValue,\n text: typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i],\n inputType: ac.inputType,\n id: ac.id,\n inputName: ac.inputName,\n selected\n }, i);\n }\n $el.find('.autocomplete-found ul').html(itemsHTML);\n if (items.length === 0) {\n if (query.length !== 0) {\n $el.find('.autocomplete-not-found').show();\n $el.find('.autocomplete-found, .autocomplete-values').hide();\n } else {\n $el.find('.autocomplete-values').show();\n $el.find('.autocomplete-found, .autocomplete-not-found').hide();\n }\n } else {\n $el.find('.autocomplete-found').show();\n $el.find('.autocomplete-not-found, .autocomplete-values').hide();\n }\n });\n }\n updateValues() {\n const ac = this;\n let valuesHTML = '';\n for (let i = 0; i < ac.value.length; i += 1) {\n valuesHTML += ac.renderItem({\n value: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.valueProperty] : ac.value[i],\n text: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.textProperty] : ac.value[i],\n inputType: ac.inputType,\n id: ac.id,\n inputName: `${ac.inputName}-checked}`,\n selected: true\n }, i);\n }\n ac.$el.find('.autocomplete-values ul').html(valuesHTML);\n }\n preloaderHide() {\n const ac = this;\n if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {\n ac.$dropdownEl.find('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');\n } else {\n $('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');\n }\n }\n preloaderShow() {\n const ac = this;\n if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {\n ac.$dropdownEl.find('.autocomplete-preloader').addClass('autocomplete-preloader-visible');\n } else {\n $('.autocomplete-preloader').addClass('autocomplete-preloader-visible');\n }\n }\n renderPreloader() {\n const ac = this;\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n return $jsx(\"div\", {\n class: `autocomplete-preloader preloader ${ac.params.preloaderColor ? `color-${ac.params.preloaderColor}` : ''}`\n }, preloaders[`${ac.app.theme}PreloaderContent`] || '');\n }\n renderSearchbar() {\n const ac = this;\n if (ac.params.renderSearchbar) return ac.params.renderSearchbar.call(ac);\n return $jsx(\"form\", {\n class: \"searchbar\"\n }, $jsx(\"div\", {\n class: \"searchbar-inner\"\n }, $jsx(\"div\", {\n class: \"searchbar-input-wrap\"\n }, $jsx(\"input\", {\n type: \"search\",\n spellcheck: ac.params.searchbarSpellcheck || 'false',\n placeholder: ac.params.searchbarPlaceholder\n }), $jsx(\"i\", {\n class: \"searchbar-icon\"\n }), $jsx(\"span\", {\n class: \"input-clear-button\"\n })), ac.params.searchbarDisableButton && $jsx(\"span\", {\n class: \"searchbar-disable-button\"\n }, ac.params.searchbarDisableText)));\n }\n renderItem(item, index) {\n const ac = this;\n if (ac.params.renderItem) return ac.params.renderItem.call(ac, item, index);\n const itemValue = item.value && typeof item.value === 'string' ? item.value.replace(/\"/g, '"') : item.value;\n if (ac.params.openIn !== 'dropdown') {\n return $jsx(\"li\", null, $jsx(\"label\", {\n class: `item-${item.inputType} item-content`\n }, $jsx(\"input\", {\n type: item.inputType,\n name: item.inputName,\n value: itemValue,\n _checked: item.selected\n }), $jsx(\"i\", {\n class: `icon icon-${item.inputType}`\n }), $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: \"item-title\"\n }, item.text))));\n }\n // Dropdown\n if (!item.placeholder) {\n return $jsx(\"li\", null, $jsx(\"label\", {\n class: \"item-radio item-content\",\n \"data-value\": itemValue\n }, $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: \"item-title\"\n }, item.text))));\n }\n\n // Dropwdown placeholder\n return $jsx(\"li\", {\n class: \"autocomplete-dropdown-placeholder\"\n }, $jsx(\"label\", {\n class: \"item-content\"\n }, $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: \"item-title\"\n }, item.text))));\n }\n renderNavbar() {\n const ac = this;\n if (ac.params.renderNavbar) return ac.params.renderNavbar.call(ac);\n let pageTitle = ac.params.pageTitle;\n if (typeof pageTitle === 'undefined' && ac.$openerEl && ac.$openerEl.length) {\n pageTitle = ac.$openerEl.find('.item-title').text().trim();\n }\n const inPopup = ac.params.openIn === 'popup';\n\n // eslint-disable-next-line\n const navbarLeft = inPopup ? ac.params.preloader && $jsx(\"div\", {\n class: \"left\"\n }, ac.renderPreloader()) : $jsx(\"div\", {\n class: \"left sliding\"\n }, $jsx(\"a\", {\n class: \"link back\"\n }, $jsx(\"i\", {\n class: \"icon icon-back\"\n }), $jsx(\"span\", {\n class: \"if-not-md\"\n }, ac.params.pageBackLinkText)));\n const navbarRight = inPopup ? $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link popup-close\",\n \"data-popup\": \".autocomplete-popup\"\n }, ac.params.popupCloseLinkText)) : ac.params.preloader && $jsx(\"div\", {\n class: \"right\"\n }, ac.renderPreloader());\n return $jsx(\"div\", {\n class: `navbar ${ac.params.navbarColorTheme ? `color-${ac.params.navbarColorTheme}` : ''}`\n }, $jsx(\"div\", {\n class: \"navbar-bg\"\n }), $jsx(\"div\", {\n class: `navbar-inner ${ac.params.navbarColorTheme ? `color-${ac.params.navbarColorTheme}` : ''}`\n }, navbarLeft, pageTitle && $jsx(\"div\", {\n class: \"title sliding\"\n }, pageTitle), navbarRight, $jsx(\"div\", {\n class: \"subnavbar sliding\"\n }, ac.renderSearchbar())));\n }\n renderDropdown() {\n const ac = this;\n if (ac.params.renderDropdown) return ac.params.renderDropdown.call(ac, ac.items);\n return $jsx(\"div\", {\n class: \"autocomplete-dropdown\"\n }, $jsx(\"div\", {\n class: \"autocomplete-dropdown-inner\"\n }, $jsx(\"div\", {\n class: `list no-safe-areas`\n }, $jsx(\"ul\", null))), ac.params.preloader && ac.renderPreloader());\n }\n renderPage(inPopup) {\n const ac = this;\n if (ac.params.renderPage) return ac.params.renderPage.call(ac, ac.items);\n return $jsx(\"div\", {\n class: \"page page-with-subnavbar autocomplete-page\",\n \"data-name\": \"autocomplete-page\"\n }, ac.renderNavbar(inPopup), $jsx(\"div\", {\n class: \"searchbar-backdrop\"\n }), $jsx(\"div\", {\n class: \"page-content\"\n }, $jsx(\"div\", {\n class: `list autocomplete-list autocomplete-found autocomplete-list-${ac.id} ${ac.params.formColorTheme ? `color-${ac.params.formColorTheme}` : ''}`\n }, $jsx(\"ul\", null)), $jsx(\"div\", {\n class: \"list autocomplete-not-found\"\n }, $jsx(\"ul\", null, $jsx(\"li\", {\n class: \"item-content\"\n }, $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: \"item-title\"\n }, ac.params.notFoundText))))), $jsx(\"div\", {\n class: \"list autocomplete-values\"\n }, $jsx(\"ul\", null))));\n }\n renderPopup() {\n const ac = this;\n if (ac.params.renderPopup) return ac.params.renderPopup.call(ac, ac.items);\n return $jsx(\"div\", {\n class: \"popup autocomplete-popup\"\n }, $jsx(\"div\", {\n class: \"view\"\n }, ac.renderPage(true), \";\"));\n }\n onOpen(type, el) {\n const ac = this;\n const app = ac.app;\n const $el = $(el);\n ac.$el = $el;\n ac.el = $el[0];\n ac.openedIn = type;\n ac.opened = true;\n if (ac.params.openIn === 'dropdown') {\n ac.attachDropdownEvents();\n ac.$dropdownEl.addClass('autocomplete-dropdown-in');\n ac.$inputEl.trigger('input');\n } else {\n // Init SB\n let $searchbarEl = $el.find('.searchbar');\n if (ac.params.openIn === 'page' && app.theme === 'ios' && $searchbarEl.length === 0) {\n $searchbarEl = $(app.navbar.getElByPage($el)).find('.searchbar');\n }\n ac.searchbar = app.searchbar.create({\n el: $searchbarEl,\n backdropEl: $el.find('.searchbar-backdrop'),\n customSearch: true,\n on: {\n search(sb, query) {\n if (query.length === 0 && ac.searchbar.enabled) {\n ac.searchbar.backdropShow();\n } else {\n ac.searchbar.backdropHide();\n }\n ac.source(query);\n }\n }\n });\n\n // Attach page events\n ac.attachPageEvents();\n\n // Update Values On Page Init\n ac.updateValues();\n\n // Source on load\n if (ac.params.requestSourceOnOpen) ac.source('');\n }\n ac.emit('local::open autocompleteOpen', ac);\n }\n autoFocus() {\n const ac = this;\n if (ac.searchbar && ac.searchbar.$inputEl) {\n ac.searchbar.$inputEl.focus();\n }\n return ac;\n }\n onOpened() {\n const ac = this;\n if (ac.params.openIn !== 'dropdown' && ac.params.autoFocus) {\n ac.autoFocus();\n }\n ac.emit('local::opened autocompleteOpened', ac);\n }\n onClose() {\n const ac = this;\n if (ac.destroyed) return;\n\n // Destroy SB\n if (ac.searchbar && ac.searchbar.destroy) {\n ac.searchbar.destroy();\n ac.searchbar = null;\n delete ac.searchbar;\n }\n if (ac.params.openIn === 'dropdown') {\n ac.detachDropdownEvents();\n ac.$dropdownEl.removeClass('autocomplete-dropdown-in').remove();\n } else {\n ac.detachPageEvents();\n }\n ac.emit('local::close autocompleteClose', ac);\n }\n onClosed() {\n const ac = this;\n if (ac.destroyed) return;\n ac.opened = false;\n ac.$el = null;\n ac.el = null;\n delete ac.$el;\n delete ac.el;\n ac.emit('local::closed autocompleteClosed', ac);\n }\n openPage() {\n const ac = this;\n if (ac.opened) return ac;\n const pageHtml = ac.renderPage();\n ac.view.router.navigate({\n url: ac.url,\n route: {\n content: pageHtml,\n path: ac.url,\n on: {\n pageBeforeIn(e, page) {\n ac.onOpen('page', page.el);\n },\n pageAfterIn(e, page) {\n ac.onOpened('page', page.el);\n },\n pageBeforeOut(e, page) {\n ac.onClose('page', page.el);\n },\n pageAfterOut(e, page) {\n ac.onClosed('page', page.el);\n }\n },\n options: {\n animate: ac.params.animate\n }\n }\n });\n return ac;\n }\n openPopup() {\n const ac = this;\n if (ac.opened) return ac;\n const popupHtml = ac.renderPopup();\n const popupParams = {\n content: popupHtml,\n animate: ac.params.animate,\n push: ac.params.popupPush,\n swipeToClose: ac.params.popupSwipeToClose,\n on: {\n popupOpen(popup) {\n ac.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n ac.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n ac.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n ac.onClosed('popup', popup.el);\n }\n }\n };\n if (ac.params.routableModals && ac.view) {\n ac.view.router.navigate({\n url: ac.url,\n route: {\n path: ac.url,\n popup: popupParams\n }\n });\n } else {\n ac.modal = ac.app.popup.create(popupParams).open(ac.params.animate);\n }\n return ac;\n }\n openDropdown() {\n const ac = this;\n if (!ac.$dropdownEl) {\n ac.$dropdownEl = $(ac.renderDropdown());\n }\n const $pageContentEl = ac.$inputEl.parents('.page-content');\n if (ac.params.dropdownContainerEl) {\n $(ac.params.dropdownContainerEl).append(ac.$dropdownEl);\n } else if ($pageContentEl.length === 0) {\n ac.$dropdownEl.insertAfter(ac.$inputEl);\n } else {\n ac.positionDropdown();\n $pageContentEl.append(ac.$dropdownEl);\n }\n ac.onOpen('dropdown', ac.$dropdownEl);\n ac.onOpened('dropdown', ac.$dropdownEl);\n }\n open() {\n const ac = this;\n if (ac.opened) return ac;\n const openIn = ac.params.openIn;\n ac[`open${openIn.split('').map((el, index) => {\n if (index === 0) return el.toUpperCase();\n return el;\n }).join('')}`]();\n return ac;\n }\n close() {\n const ac = this;\n if (!ac.opened) return ac;\n if (ac.params.openIn === 'dropdown') {\n ac.onClose();\n ac.onClosed();\n } else if (ac.params.routableModals && ac.view || ac.openedIn === 'page') {\n ac.view.router.back({\n animate: ac.params.animate\n });\n } else {\n ac.modal.once('modalClosed', () => {\n nextTick(() => {\n if (ac.destroyed) return;\n ac.modal.destroy();\n delete ac.modal;\n });\n });\n ac.modal.close();\n }\n return ac;\n }\n init() {\n const ac = this;\n ac.attachEvents();\n }\n destroy() {\n const ac = this;\n ac.emit('local::beforeDestroy autocompleteBeforeDestroy', ac);\n ac.detachEvents();\n if (ac.$inputEl && ac.$inputEl[0]) {\n delete ac.$inputEl[0].f7Autocomplete;\n }\n if (ac.$openerEl && ac.$openerEl[0]) {\n delete ac.$openerEl[0].f7Autocomplete;\n }\n deleteProps(ac);\n ac.destroyed = true;\n }\n}\nexport default Autocomplete;","import { extend } from '../../shared/utils.js';\nimport Autocomplete from './autocomplete-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'autocomplete',\n params: {\n autocomplete: {\n openerEl: undefined,\n inputEl: undefined,\n view: undefined,\n // DropDown\n dropdownContainerEl: undefined,\n dropdownPlaceholderText: undefined,\n typeahead: false,\n highlightMatches: true,\n updateInputValueOnSelect: true,\n inputEvents: 'input',\n value: undefined,\n multiple: false,\n source: undefined,\n limit: undefined,\n valueProperty: 'id',\n textProperty: 'text',\n openIn: 'page',\n // or 'popup' or 'dropdown'\n pageBackLinkText: 'Back',\n popupCloseLinkText: 'Close',\n pageTitle: undefined,\n searchbarPlaceholder: 'Search...',\n searchbarDisableText: 'Cancel',\n searchbarDisableButton: true,\n searchbarSpellcheck: false,\n popupPush: false,\n popupSwipeToClose: undefined,\n animate: true,\n autoFocus: false,\n closeOnSelect: false,\n notFoundText: 'Nothing found',\n requestSourceOnOpen: false,\n // Preloader\n preloaderColor: undefined,\n preloader: false,\n // Colors\n formColorTheme: undefined,\n navbarColorTheme: undefined,\n // Routing\n routableModals: false,\n url: 'select/',\n // Custom render functions\n renderDropdown: undefined,\n renderPage: undefined,\n renderPopup: undefined,\n renderItem: undefined,\n renderSearchbar: undefined,\n renderNavbar: undefined\n }\n },\n static: {\n Autocomplete\n },\n create() {\n const app = this;\n app.autocomplete = extend(ConstructorMethods({\n defaultSelector: undefined,\n constructor: Autocomplete,\n app,\n domProp: 'f7Autocomplete'\n }), {\n open(autocompleteEl) {\n const ac = app.autocomplete.get(autocompleteEl);\n if (ac && ac.open) return ac.open();\n return undefined;\n },\n close(autocompleteEl) {\n const ac = app.autocomplete.get(autocompleteEl);\n if (ac && ac.close) return ac.close();\n return undefined;\n }\n });\n }\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport Framework7Class from '../../shared/class.js';\nclass Tooltip extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const tooltip = this;\n const support = getSupport();\n const defaults = extend({}, app.params.tooltip);\n const document = getDocument();\n\n // Extend defaults with modules params\n tooltip.useModulesParams(defaults);\n tooltip.params = extend(defaults, params);\n if (typeof params.offset === 'undefined' && support.touch && tooltip.params.trigger === 'hover') {\n tooltip.params.offset = 10;\n }\n const {\n targetEl,\n containerEl\n } = tooltip.params;\n if (!targetEl && !tooltip.params.delegated) return tooltip;\n const $targetEl = $(targetEl);\n if ($targetEl.length === 0 && !tooltip.params.delegated) return tooltip;\n if ($targetEl[0] && $targetEl[0].f7Tooltip && !tooltip.params.delegated) return $targetEl[0].f7Tooltip;\n let $containerEl = $(containerEl || app.$el).eq(0);\n if ($containerEl.length === 0) {\n $containerEl = app.$el;\n }\n const $el = $(tooltip.render()).eq(0);\n extend(tooltip, {\n app,\n $targetEl,\n targetEl: $targetEl && $targetEl[0],\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n $el,\n el: $el && $el[0],\n text: tooltip.params.text || '',\n visible: false,\n opened: false\n });\n if ($targetEl[0]) $targetEl[0].f7Tooltip = tooltip;\n const touchesStart = {};\n let isTouched;\n function handleClick() {\n if (tooltip.opened) tooltip.hide();else tooltip.show(this);\n }\n function handleClickOut(e) {\n if (tooltip.opened && ($(e.target).closest($targetEl).length || $(e.target).closest(tooltip.$el).length)) return;\n tooltip.hide();\n }\n function handleTouchStart(e) {\n if (isTouched) return;\n isTouched = true;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n tooltip.show(this);\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n const distance = ((x - touchesStart.x) ** 2 + (y - touchesStart.y) ** 2) ** 0.5;\n if (distance > 50) {\n isTouched = false;\n tooltip.hide();\n }\n }\n function handleTouchEnd() {\n if (!isTouched) return;\n isTouched = false;\n tooltip.hide();\n }\n function handleMouseEnter() {\n tooltip.show(this);\n }\n function handleMouseLeave() {\n tooltip.hide();\n }\n function handleTransitionEnd() {\n if (!$el.hasClass('tooltip-in')) {\n $el.removeClass('tooltip-out').remove();\n }\n }\n tooltip.attachEvents = function attachEvents() {\n $el.on('transitionend', handleTransitionEnd);\n if (tooltip.params.trigger === 'click') {\n if (tooltip.params.delegated) {\n $(document).on('click', tooltip.params.targetEl, handleClick);\n } else {\n tooltip.$targetEl.on('click', handleClick);\n }\n $('html').on('click', handleClickOut);\n return;\n }\n if (tooltip.params.trigger === 'manual') return;\n if (support.touch) {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n if (tooltip.params.delegated) {\n $(document).on(app.touchEvents.start, tooltip.params.targetEl, handleTouchStart, passive);\n } else {\n tooltip.$targetEl.on(app.touchEvents.start, handleTouchStart, passive);\n }\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n } else {\n // eslint-disable-next-line\n if (tooltip.params.delegated) {\n $(document).on(support.pointerEvents ? 'pointerenter' : 'mouseenter', tooltip.params.targetEl, handleMouseEnter, true);\n $(document).on(support.pointerEvents ? 'pointerleave' : 'mouseleave', tooltip.params.targetEl, handleMouseLeave, true);\n } else {\n tooltip.$targetEl.on(support.pointerEvents ? 'pointerenter' : 'mouseenter', handleMouseEnter);\n tooltip.$targetEl.on(support.pointerEvents ? 'pointerleave' : 'mouseleave', handleMouseLeave);\n }\n }\n };\n tooltip.detachEvents = function detachEvents() {\n $el.off('transitionend', handleTransitionEnd);\n if (tooltip.params.trigger === 'click') {\n if (tooltip.params.delegated) {\n $(document).on('click', tooltip.params.targetEl, handleClick);\n } else {\n tooltip.$targetEl.off('click', handleClick);\n }\n $('html').off('click', handleClickOut);\n return;\n }\n if (tooltip.params.trigger === 'manual') return;\n if (support.touch) {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n if (tooltip.params.delegated) {\n $(document).off(app.touchEvents.start, tooltip.params.targetEl, handleTouchStart, passive);\n } else {\n tooltip.$targetEl.off(app.touchEvents.start, handleTouchStart, passive);\n }\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n } else {\n // eslint-disable-next-line\n if (tooltip.params.delegated) {\n $(document).off(support.pointerEvents ? 'pointerenter' : 'mouseenter', tooltip.params.targetEl, handleMouseEnter, true);\n $(document).off(support.pointerEvents ? 'pointerleave' : 'mouseleave', tooltip.params.targetEl, handleMouseLeave, true);\n } else {\n tooltip.$targetEl.off(support.pointerEvents ? 'pointerenter' : 'mouseenter', handleMouseEnter);\n tooltip.$targetEl.off(support.pointerEvents ? 'pointerleave' : 'mouseleave', handleMouseLeave);\n }\n }\n };\n\n // Install Modules\n tooltip.useModules();\n tooltip.init();\n return tooltip;\n }\n setTargetEl(targetEl) {\n const tooltip = this;\n tooltip.detachEvents();\n tooltip.$targetEl = $(targetEl);\n tooltip.targetEl = tooltip.$targetEl[0];\n tooltip.attachEvents();\n return tooltip;\n }\n position(targetEl) {\n const tooltip = this;\n const {\n $el,\n app,\n $containerEl\n } = tooltip;\n const hasContainerEl = !!tooltip.params.containerEl;\n const tooltipOffset = tooltip.params.offset || 0;\n $el.css({\n left: '',\n top: ''\n });\n const $targetEl = $(targetEl || tooltip.targetEl);\n const [width, height] = [$el.width(), $el.height()];\n $el.css({\n left: '',\n top: ''\n });\n let targetWidth;\n let targetHeight;\n let targetOffsetLeft;\n let targetOffsetTop;\n const boundaries = hasContainerEl && $containerEl.length ? $containerEl[0].getBoundingClientRect() : app;\n if ($targetEl && $targetEl.length > 0) {\n targetWidth = $targetEl.outerWidth();\n targetHeight = $targetEl.outerHeight();\n if (typeof targetWidth === 'undefined' && typeof targetHeight === 'undefined') {\n const clientRect = $targetEl[0].getBoundingClientRect();\n targetWidth = clientRect.width;\n targetHeight = clientRect.height;\n }\n const targetOffset = $targetEl.offset();\n targetOffsetLeft = targetOffset.left - boundaries.left;\n targetOffsetTop = targetOffset.top - boundaries.top;\n const targetParentPage = $targetEl.parents('.page');\n if (targetParentPage.length > 0) {\n targetOffsetTop -= targetParentPage[0].scrollTop;\n }\n }\n let [left, top] = [0, 0, 0];\n\n // Top Position\n let position = 'top';\n if (height + tooltipOffset < targetOffsetTop) {\n // On top\n top = targetOffsetTop - height - tooltipOffset;\n } else if (height < boundaries.height - targetOffsetTop - targetHeight) {\n // On bottom\n position = 'bottom';\n top = targetOffsetTop + targetHeight + tooltipOffset;\n } else {\n // On middle\n position = 'middle';\n top = targetHeight / 2 + targetOffsetTop - height / 2;\n if (top <= 0) {\n top = 8;\n } else if (top + height >= boundaries.height) {\n top = boundaries.height - height - 8;\n }\n }\n\n // Horizontal Position\n if (position === 'top' || position === 'bottom') {\n left = targetWidth / 2 + targetOffsetLeft - width / 2;\n if (left < 8) left = 8;\n if (left + width > boundaries.width) left = boundaries.width - width - 8;\n if (left < 0) left = 0;\n } else if (position === 'middle') {\n left = targetOffsetLeft - width;\n if (left < 8 || left + width > boundaries.width) {\n if (left < 8) left = targetOffsetLeft + targetWidth;\n if (left + width > boundaries.width) left = boundaries.width - width - 8;\n }\n }\n\n // Apply Styles\n $el.css({\n top: `${top}px`,\n left: `${left}px`\n });\n }\n show(aroundEl) {\n const tooltip = this;\n const {\n $el,\n $targetEl,\n $containerEl\n } = tooltip;\n if ($containerEl[0] && $el[0] && !$containerEl[0].contains($el[0])) {\n $containerEl.append($el);\n }\n tooltip.position(aroundEl);\n const $aroundEl = $(aroundEl);\n tooltip.visible = true;\n tooltip.opened = true;\n $targetEl.trigger('tooltip:show');\n $el.trigger('tooltip:show');\n if ($aroundEl.length && $aroundEl[0] !== $targetEl[0]) {\n $aroundEl.trigger('tooltip:show');\n }\n tooltip.emit('local::show tooltipShow', tooltip);\n $el.removeClass('tooltip-out').addClass('tooltip-in');\n return tooltip;\n }\n hide() {\n const tooltip = this;\n const {\n $el,\n $targetEl\n } = tooltip;\n tooltip.visible = false;\n tooltip.opened = false;\n $targetEl.trigger('tooltip:hide');\n $el.trigger('tooltip:hide');\n tooltip.emit('local::hide tooltipHide', tooltip);\n $el.addClass('tooltip-out').removeClass('tooltip-in');\n return tooltip;\n }\n render() {\n const tooltip = this;\n if (tooltip.params.render) return tooltip.params.render.call(tooltip, tooltip);\n const {\n cssClass,\n text\n } = tooltip.params;\n return `\n
          \n
          ${text || ''}
          \n
          \n `.trim();\n }\n setText(newText) {\n const tooltip = this;\n if (typeof newText === 'undefined') {\n return tooltip;\n }\n tooltip.params.text = newText;\n tooltip.text = newText;\n if (tooltip.$el) {\n tooltip.$el.children('.tooltip-content').html(newText);\n }\n if (tooltip.opened) {\n tooltip.position();\n }\n return tooltip;\n }\n init() {\n const tooltip = this;\n tooltip.attachEvents();\n }\n destroy() {\n const tooltip = this;\n if (!tooltip.$targetEl || tooltip.destroyed) return;\n tooltip.$targetEl.trigger('tooltip:beforedestroy');\n tooltip.emit('local::beforeDestroy tooltipBeforeDestroy', tooltip);\n tooltip.$el.remove();\n if (tooltip.$targetEl[0]) delete tooltip.$targetEl[0].f7Tooltip;\n tooltip.detachEvents();\n deleteProps(tooltip);\n tooltip.destroyed = true;\n }\n}\nexport default Tooltip;","import $ from '../../shared/dom7.js';\nimport Tooltip from './tooltip-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'tooltip',\n static: {\n Tooltip\n },\n create() {\n const app = this;\n app.tooltip = ConstructorMethods({\n defaultSelector: '.tooltip',\n constructor: Tooltip,\n app,\n domProp: 'f7Tooltip'\n });\n app.tooltip.show = function show(el) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const tooltip = $el[0].f7Tooltip;\n if (!tooltip) return undefined;\n tooltip.show($el[0]);\n return tooltip;\n };\n app.tooltip.hide = function hide(el) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const tooltip = $el[0].f7Tooltip;\n if (!tooltip) return undefined;\n tooltip.hide();\n return tooltip;\n };\n app.tooltip.setText = function text(el, newText) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const tooltip = $el[0].f7Tooltip;\n if (!tooltip) return undefined;\n tooltip.setText(newText);\n return tooltip;\n };\n },\n params: {\n tooltip: {\n targetEl: null,\n delegated: false,\n text: null,\n cssClass: null,\n render: null,\n offset: 0,\n trigger: 'hover',\n containerEl: undefined\n }\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.tooltip-init').each(el => {\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({\n targetEl: el,\n text\n });\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.tooltip-init').each(el => {\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.tooltip-init').each(el => {\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({\n targetEl: el,\n text\n });\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.tooltip-init').each(el => {\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({\n targetEl: el,\n text\n });\n });\n }\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.tooltip-init').each(el => {\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.tooltip-init').each(el => {\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n });\n }\n }\n },\n vnode: {\n 'tooltip-init': {\n insert(vnode) {\n const app = this;\n const el = vnode.elm;\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({\n targetEl: el,\n text\n });\n },\n update(vnode) {\n const el = vnode.elm;\n if (!el.f7Tooltip) return;\n if (vnode && vnode.data && vnode.data.attrs && vnode.data.attrs['data-tooltip']) {\n el.f7Tooltip.setText(vnode.data.attrs['data-tooltip']);\n }\n },\n destroy(vnode) {\n const el = vnode.elm;\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n }\n }\n }\n};","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n sliderLabel,\n sliderValue,\n sliderValueEditable,\n alphaLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-alpha-slider\"\n }, $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, alphaLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-alpha\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.01\",\n min: \"0\",\n max: \"1\",\n class: \"color-picker-value-alpha\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-alpha\"\n }))));\n },\n init(self) {\n self.alphaRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-alpha'),\n min: 0,\n max: 1,\n step: 0.01,\n value: 1,\n on: {\n change(range, value) {\n const alpha = Math.floor(value * 100) / 100;\n self.setValue({\n alpha\n });\n }\n }\n });\n function handleInputChange(e) {\n const alpha = self.value.alpha;\n let value = parseFloat(e.target.value);\n if (Number.isNaN(value)) {\n e.target.value = alpha;\n return;\n }\n value = Math.max(0, Math.min(1, value));\n self.setValue({\n alpha: value\n });\n }\n self.$el.on('change', '.color-picker-module-alpha-slider input', handleInputChange);\n self.destroyAlphaSliderEvents = function destroyAlphaSliderEvents() {\n self.$el.off('change', '.color-picker-module-alpha-slider input', handleInputChange);\n };\n },\n update(self) {\n const {\n value\n } = self;\n const {\n sliderValue,\n sliderValueEditable\n } = self.params;\n const {\n alpha\n } = value;\n self.alphaRangeSlider.value = alpha;\n self.alphaRangeSlider.layout();\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-alpha').val(alpha);\n } else {\n self.$el.find('span.color-picker-value-alpha').text(alpha);\n }\n },\n destroy(self) {\n if (self.alphaRangeSlider && self.alphaRangeSlider.destroy) {\n self.alphaRangeSlider.destroy();\n }\n delete self.alphaRangeSlider;\n if (self.destroyAlphaSliderEvents) self.destroyAlphaSliderEvents();\n delete self.destroyAlphaSliderEvents;\n }\n};","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render() {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-current-color\"\n }, $jsx(\"div\", {\n class: \"color-picker-current-color\"\n }));\n },\n update(self) {\n self.$el.find('.color-picker-module-current-color .color-picker-current-color').css('background-color', self.value.hex);\n }\n};","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n hexLabel,\n hexLabelText,\n hexValueEditable\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-hex\"\n }, $jsx(\"div\", {\n class: \"color-picker-hex-wrap\"\n }, hexLabel && $jsx(\"div\", {\n class: \"color-picker-hex-label\"\n }, hexLabelText), $jsx(\"div\", {\n class: \"color-picker-hex-value\"\n }, hexValueEditable ? $jsx(\"input\", {\n type: \"text\",\n class: \"color-picker-value-hex\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-hex\"\n }))));\n },\n init(self) {\n function handleInputChange(e) {\n const hex = self.value.hex;\n let value = e.target.value.replace(/#/g, '');\n if (Number.isNaN(value) || !value || value.length !== 3 && value.length !== 6) {\n e.target.value = hex;\n return;\n }\n const min = 0;\n const current = parseInt(value, 16);\n const max = parseInt('ffffff', 16); // eslint-disable-line\n if (current > max) {\n value = 'fff';\n }\n if (current < min) {\n value = '000';\n }\n self.setValue({\n hex: value\n });\n }\n self.$el.on('change', '.color-picker-module-hex input', handleInputChange);\n self.destroyHexEvents = function destroyHexEvents() {\n self.$el.off('change', '.color-picker-module-hex input', handleInputChange);\n };\n },\n update(self) {\n const {\n value\n } = self;\n const {\n hexValueEditable\n } = self.params;\n const {\n hex\n } = value;\n if (hexValueEditable) {\n self.$el.find('input.color-picker-value-hex').val(hex);\n } else {\n self.$el.find('span.color-picker-value-hex').text(hex);\n }\n },\n destroy(self) {\n if (self.destroyHexEvents) self.destroyHexEvents();\n delete self.destroyHexEvents;\n }\n};","import $ from '../../../shared/dom7.js';\nimport { colorHsbToHsl } from '../../../shared/utils.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n sliderLabel,\n sliderValue,\n sliderValueEditable,\n hueLabelText,\n saturationLabelText,\n brightnessLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-hsb-sliders\"\n }, $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, hueLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-hue\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n max: \"360\",\n class: \"color-picker-value-hue\",\n \"data-color-index\": \"0\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-hue\"\n }))), $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, saturationLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-saturation\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n max: \"100\",\n class: \"color-picker-value-saturation\",\n \"data-color-index\": \"1\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-saturation\"\n }))), $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, brightnessLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-brightness\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n max: \"100\",\n class: \"color-picker-value-brightness\",\n \"data-color-index\": \"2\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-brightness\"\n }))));\n },\n init(self) {\n self.hueRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-hue'),\n min: 0,\n max: 360,\n step: 0.1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({\n hue: value\n });\n }\n }\n });\n self.saturationRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-saturation'),\n min: 0,\n max: 1,\n step: 0.001,\n value: 0,\n on: {\n change(range, value) {\n const s = Math.floor(value * 1000) / 1000;\n self.setValue({\n hsb: [self.value.hsb[0], s, self.value.hsb[2]]\n });\n }\n }\n });\n self.brightnessRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-brightness'),\n min: 0,\n max: 1,\n step: 0.001,\n value: 0,\n on: {\n change(range, value) {\n const b = Math.floor(value * 1000) / 1000;\n self.setValue({\n hsb: [self.value.hsb[0], self.value.hsb[1], b]\n });\n }\n }\n });\n function handleInputChange(e) {\n const hsb = [...self.value.hsb];\n const index = parseInt($(e.target).attr('data-color-index'), 10);\n let value = parseFloat(e.target.value);\n if (Number.isNaN(value)) {\n e.target.value = hsb[index];\n return;\n }\n if (index === 0) {\n value = Math.max(0, Math.min(360, value));\n } else {\n value = Math.max(0, Math.min(100, value)) / 100;\n }\n hsb[index] = value;\n self.setValue({\n hsb\n });\n }\n self.$el.on('change', '.color-picker-module-hsb-sliders input', handleInputChange);\n self.destroyHsbSlidersEvents = function destroyHsbSlidersEvents() {\n self.$el.off('change', '.color-picker-module-hsb-sliders input', handleInputChange);\n };\n },\n update(self) {\n const {\n app,\n value\n } = self;\n const {\n sliderValue,\n sliderValueEditable\n } = self.params;\n const {\n hsb,\n hue\n } = value;\n self.hueRangeSlider.value = hue;\n self.saturationRangeSlider.value = hsb[1];\n self.brightnessRangeSlider.value = hsb[2];\n self.hueRangeSlider.layout();\n self.saturationRangeSlider.layout();\n self.brightnessRangeSlider.layout();\n const hslCurrent = colorHsbToHsl(hsb[0], hsb[1], 1);\n const hslLeft = colorHsbToHsl(hsb[0], 0, 1);\n const hslRight = colorHsbToHsl(hsb[0], 1, 1);\n const brightness = hsb[2];\n self.hueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hue}, 100%, 50%)`);\n self.saturationRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hslCurrent[0]}, ${hslCurrent[1] * 100}%, ${hslCurrent[2] * 100}%)`);\n self.brightnessRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${brightness * 255}, ${brightness * 255}, ${brightness * 255})`);\n self.saturationRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${app.rtl ? 'to left' : 'to right'}, hsl(${hslLeft[0]}, ${hslLeft[1] * 100}%, ${hslLeft[2] * 100}%), hsl(${hslRight[0]}, ${hslRight[1] * 100}%, ${hslRight[2] * 100}%))`);\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-hue').val(`${hue}`);\n self.$el.find('input.color-picker-value-saturation').val(`${hsb[1] * 1000 / 10}`);\n self.$el.find('input.color-picker-value-brightness').val(`${hsb[2] * 1000 / 10}`);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-hue').text(`${hue}`);\n self.$el.find('span.color-picker-value-saturation').text(`${hsb[1] * 1000 / 10}`);\n self.$el.find('span.color-picker-value-brightness').text(`${hsb[2] * 1000 / 10}`);\n }\n },\n destroy(self) {\n if (self.hueRangeSlider && self.hueRangeSlider.destroy) {\n self.hueRangeSlider.destroy();\n }\n if (self.saturationRangeSlider && self.saturationRangeSlider.destroy) {\n self.saturationRangeSlider.destroy();\n }\n if (self.brightnessRangeSlider && self.brightnessRangeSlider.destroy) {\n self.brightnessRangeSlider.destroy();\n }\n delete self.hueRangeSlider;\n delete self.saturationRangeSlider;\n delete self.brightnessRangeSlider;\n if (self.destroyHsbSlidersEvents) self.destroyHsbSlidersEvents();\n delete self.destroyHsbSlidersEvents;\n }\n};","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n sliderLabel,\n sliderValue,\n sliderValueEditable,\n hueLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-hue-slider\"\n }, $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, hueLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-hue\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n max: \"360\",\n class: \"color-picker-value-hue\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-hue\"\n }))));\n },\n init(self) {\n self.hueRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-hue'),\n min: 0,\n max: 360,\n step: 0.1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({\n hue: value\n });\n }\n }\n });\n },\n update(self) {\n const {\n value\n } = self;\n const {\n sliderValue,\n sliderValueEditable\n } = self.params;\n const {\n hue\n } = value;\n self.hueRangeSlider.value = hue;\n self.hueRangeSlider.layout();\n self.hueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hue}, 100%, 50%)`);\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-hue').val(`${hue}`);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-hue').text(`${hue}`);\n }\n },\n destroy(self) {\n if (self.hueRangeSlider && self.hueRangeSlider.destroy) {\n self.hueRangeSlider.destroy();\n }\n delete self.hueRangeSlider;\n }\n};","import { colorHsbToHsl } from '../../../shared/utils.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n sliderLabel,\n sliderValue,\n sliderValueEditable,\n brightnessLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-brightness-slider\"\n }, $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, brightnessLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-brightness\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n max: \"100\",\n class: \"color-picker-value-brightness\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-brightness\"\n }))));\n },\n init(self) {\n self.brightnessRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-brightness'),\n min: 0,\n max: 1,\n step: 0.001,\n value: 0,\n on: {\n change(range, value) {\n const b = Math.floor(value * 1000) / 1000;\n self.setValue({\n hsb: [self.value.hsb[0], self.value.hsb[1], b]\n });\n }\n }\n });\n },\n update(self) {\n const {\n value,\n app\n } = self;\n const {\n sliderValue,\n sliderValueEditable\n } = self.params;\n const {\n hsb\n } = value;\n self.brightnessRangeSlider.value = hsb[2];\n self.brightnessRangeSlider.layout();\n const hslCurrent = colorHsbToHsl(hsb[0], hsb[1], hsb[2]);\n const hslLeft = colorHsbToHsl(hsb[0], hsb[1], 0);\n const hslRight = colorHsbToHsl(hsb[0], hsb[1], 1);\n self.brightnessRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hslCurrent[0]}, ${hslCurrent[1] * 100}%, ${hslCurrent[2] * 100}%)`);\n self.brightnessRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${app.rtl ? 'to left' : 'to right'}, hsl(${hslLeft[0]}, ${hslLeft[1] * 100}%, ${hslLeft[2] * 100}%), hsl(${hslRight[0]}, ${hslRight[1] * 100}%, ${hslRight[2] * 100}%))`);\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-brightness').val(`${hsb[2] * 1000 / 10}`);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-brightness').text(`${hsb[2] * 1000 / 10}`);\n }\n },\n destroy(self) {\n if (self.brightnessRangeSlider && self.brightnessRangeSlider.destroy) {\n self.brightnessRangeSlider.destroy();\n }\n delete self.brightnessRangeSlider;\n }\n};","/* eslint indent: [\"off\"] */\nimport $ from '../../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-palette\"\n }, $jsx(\"div\", {\n class: \"color-picker-palette\"\n }, self.params.palette.map(p => {\n if (Array.isArray(p)) {\n let row = '
          ';\n // prettier-ignore\n row += p.map(c => `\n
          \n `).join('');\n row += '
          ';\n return row;\n }\n return $jsx(\"div\", {\n class: \"color-picker-palette-value\",\n \"data-palette-color\": p,\n style: `background-color: ${p}`\n });\n })));\n },\n init(self) {\n function handlePaletteClick(e) {\n const hex = $(e.target).attr('data-palette-color');\n self.setValue({\n hex\n });\n }\n self.$el.on('click', '.color-picker-module-palette .color-picker-palette-value', handlePaletteClick);\n self.destroyPaletteEvents = function destroyPaletteEvents() {\n self.$el.off('click', '.color-picker-module-hex input', handlePaletteClick);\n };\n },\n destroy(self) {\n if (self.destroyPaletteEvents) {\n self.destroyPaletteEvents();\n }\n delete self.destroyPaletteEvents;\n }\n};","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render() {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-initial-current-colors\"\n }, $jsx(\"div\", {\n class: \"color-picker-initial-current-colors\"\n }, $jsx(\"div\", {\n class: \"color-picker-initial-color\"\n }), $jsx(\"div\", {\n class: \"color-picker-current-color\"\n })));\n },\n init(self) {\n function handleInitialColorClick() {\n if (self.initialValue) {\n const {\n hex,\n alpha\n } = self.initialValue;\n self.setValue({\n hex,\n alpha\n });\n }\n }\n self.$el.on('click', '.color-picker-initial-color', handleInitialColorClick);\n self.destroyInitialCurrentEvents = function destroyInitialCurrentEvents() {\n self.$el.off('click', '.color-picker-initial-color', handleInitialColorClick);\n };\n },\n update(self) {\n self.$el.find('.color-picker-module-initial-current-colors .color-picker-initial-color').css('background-color', self.initialValue.hex);\n self.$el.find('.color-picker-module-initial-current-colors .color-picker-current-color').css('background-color', self.value.hex);\n },\n destroy(self) {\n if (self.destroyInitialCurrentEvents) {\n self.destroyInitialCurrentEvents();\n }\n delete self.destroyInitialCurrentEvents;\n }\n};","import $ from '../../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n barLabel,\n barValue,\n barValueEditable,\n redLabelText,\n greenLabelText,\n blueLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-rgb-bars\"\n }, $jsx(\"div\", {\n class: \"color-picker-bar-wrap\"\n }, barLabel && $jsx(\"div\", {\n class: \"color-picker-bar-label\"\n }, redLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-bar color-picker-bar-red\"\n }), barValue && $jsx(\"div\", {\n class: \"color-picker-bar-value\"\n }, barValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-bar-red\",\n \"data-color-index\": \"0\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-bar-red\"\n }))), $jsx(\"div\", {\n class: \"color-picker-bar-wrap\"\n }, barLabel && $jsx(\"div\", {\n class: \"color-picker-bar-label\"\n }, greenLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-bar color-picker-bar-green\"\n }), barValue && $jsx(\"div\", {\n class: \"color-picker-bar-value\"\n }, barValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-bar-green\",\n \"data-color-index\": \"1\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-bar-green\"\n }))), $jsx(\"div\", {\n class: \"color-picker-bar-wrap\"\n }, barLabel && $jsx(\"div\", {\n class: \"color-picker-bar-label\"\n }, blueLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-bar color-picker-bar-blue\"\n }), barValue && $jsx(\"div\", {\n class: \"color-picker-bar-value\"\n }, barValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-bar-blue\",\n \"data-color-index\": \"2\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-bar-blue\"\n }))));\n },\n init(self) {\n self.redBar = self.app.range.create({\n el: self.$el.find('.color-picker-bar-red'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n vertical: true,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [value, self.value.rgb[1], self.value.rgb[2]]\n });\n }\n }\n });\n self.greenBar = self.app.range.create({\n el: self.$el.find('.color-picker-bar-green'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n vertical: true,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [self.value.rgb[0], value, self.value.rgb[2]]\n });\n }\n }\n });\n self.blueBar = self.app.range.create({\n el: self.$el.find('.color-picker-bar-blue'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n vertical: true,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [self.value.rgb[0], self.value.rgb[1], value]\n });\n }\n }\n });\n function handleInputChange(e) {\n const rgb = [...self.value.rgb];\n const index = parseInt($(e.target).attr('data-color-index'), 10);\n let value = parseInt(e.target.value, 10);\n if (Number.isNaN(value)) {\n e.target.value = rgb[index];\n return;\n }\n value = Math.max(0, Math.min(255, value));\n rgb[index] = value;\n self.setValue({\n rgb\n });\n }\n self.$el.on('change', '.color-picker-module-rgb-bars input', handleInputChange);\n self.destroyRgbBarsEvents = function destroyRgbBarsEvents() {\n self.$el.off('change', '.color-picker-module-rgb-bars input', handleInputChange);\n };\n },\n update(self) {\n const {\n value,\n redBar,\n greenBar,\n blueBar\n } = self;\n const {\n barValue,\n barValueEditable\n } = self.params;\n const {\n rgb\n } = value;\n redBar.value = rgb[0];\n greenBar.value = rgb[1];\n blueBar.value = rgb[2];\n redBar.layout();\n greenBar.layout();\n blueBar.layout();\n redBar.$el.find('.range-bar').css('background-image', `linear-gradient(to top, rgb(0, ${rgb[1]}, ${rgb[2]}), rgb(255, ${rgb[1]}, ${rgb[2]}))`);\n greenBar.$el.find('.range-bar').css('background-image', `linear-gradient(to top, rgb(${rgb[0]}, 0, ${rgb[2]}), rgb(${rgb[0]}, 255, ${rgb[2]}))`);\n blueBar.$el.find('.range-bar').css('background-image', `linear-gradient(to top, rgb(${rgb[0]}, ${rgb[1]}, 0), rgb(${rgb[0]}, ${rgb[1]}, 255))`);\n if (barValue && barValueEditable) {\n self.$el.find('input.color-picker-value-bar-red').val(rgb[0]);\n self.$el.find('input.color-picker-value-bar-green').val(rgb[1]);\n self.$el.find('input.color-picker-value-bar-blue').val(rgb[2]);\n } else if (barValue) {\n self.$el.find('span.color-picker-value-bar-red').text(rgb[0]);\n self.$el.find('span.color-picker-value-bar-green').text(rgb[1]);\n self.$el.find('span.color-picker-value-bar-blue').text(rgb[2]);\n }\n },\n destroy(self) {\n if (self.redBar && self.redBar.destroy) {\n self.redBar.destroy();\n }\n if (self.greenBar && self.greenBar.destroy) {\n self.greenBar.destroy();\n }\n if (self.blueBar && self.blueBar.destroy) {\n self.blueBar.destroy();\n }\n delete self.redBar;\n delete self.greenBar;\n delete self.blueBar;\n if (self.destroyRgbBarsEvents) self.destroyRgbBarsEvents();\n delete self.destroyRgbBarsEvents;\n }\n};","import $ from '../../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n sliderLabel,\n sliderValue,\n sliderValueEditable,\n redLabelText,\n greenLabelText,\n blueLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-rgb-sliders\"\n }, $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, redLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-red\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-red\",\n \"data-color-index\": \"0\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-red\"\n }))), $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, greenLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-green\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-green\",\n \"data-color-index\": \"1\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-green\"\n }))), $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, blueLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-blue\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-blue\",\n \"data-color-index\": \"2\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-blue\"\n }))));\n },\n init(self) {\n self.redRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-red'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [value, self.value.rgb[1], self.value.rgb[2]]\n });\n }\n }\n });\n self.greenRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-green'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [self.value.rgb[0], value, self.value.rgb[2]]\n });\n }\n }\n });\n self.blueRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-blue'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [self.value.rgb[0], self.value.rgb[1], value]\n });\n }\n }\n });\n function handleInputChange(e) {\n const rgb = [...self.value.rgb];\n const index = parseInt($(e.target).attr('data-color-index'), 10);\n let value = parseInt(e.target.value, 10);\n if (Number.isNaN(value)) {\n e.target.value = rgb[index];\n return;\n }\n value = Math.max(0, Math.min(255, value));\n rgb[index] = value;\n self.setValue({\n rgb\n });\n }\n self.$el.on('change', '.color-picker-module-rgb-sliders input', handleInputChange);\n self.destroyRgbSlidersEvents = function destroyRgbSlidersEvents() {\n self.$el.off('change', '.color-picker-module-rgb-sliders input', handleInputChange);\n };\n },\n update(self) {\n const {\n app,\n value,\n redRangeSlider,\n greenRangeSlider,\n blueRangeSlider\n } = self;\n const {\n sliderValue,\n sliderValueEditable\n } = self.params;\n const {\n rgb\n } = value;\n redRangeSlider.value = rgb[0];\n greenRangeSlider.value = rgb[1];\n blueRangeSlider.value = rgb[2];\n redRangeSlider.layout();\n greenRangeSlider.layout();\n blueRangeSlider.layout();\n redRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`);\n greenRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`);\n blueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`);\n const direction = app.rtl ? 'to left' : 'to right';\n redRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${direction}, rgb(0, ${rgb[1]}, ${rgb[2]}), rgb(255, ${rgb[1]}, ${rgb[2]}))`);\n greenRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${direction}, rgb(${rgb[0]}, 0, ${rgb[2]}), rgb(${rgb[0]}, 255, ${rgb[2]}))`);\n blueRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${direction}, rgb(${rgb[0]}, ${rgb[1]}, 0), rgb(${rgb[0]}, ${rgb[1]}, 255))`);\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-red').val(rgb[0]);\n self.$el.find('input.color-picker-value-green').val(rgb[1]);\n self.$el.find('input.color-picker-value-blue').val(rgb[2]);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-red').text(rgb[0]);\n self.$el.find('span.color-picker-value-green').text(rgb[1]);\n self.$el.find('span.color-picker-value-blue').text(rgb[2]);\n }\n },\n destroy(self) {\n if (self.redRangeSlider && self.redRangeSlider.destroy) {\n self.redRangeSlider.destroy();\n }\n if (self.greenRangeSlider && self.greenRangeSlider.destroy) {\n self.greenRangeSlider.destroy();\n }\n if (self.blueRangeSlider && self.blueRangeSlider.destroy) {\n self.blueRangeSlider.destroy();\n }\n delete self.redRangeSlider;\n delete self.greenRangeSlider;\n delete self.blueRangeSlider;\n if (self.destroyRgbSlidersEvents) self.destroyRgbSlidersEvents();\n delete self.destroyRgbSlidersEvents;\n }\n};","import $ from '../../../shared/dom7.js';\nimport { getSupport } from '../../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render() {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-sb-spectrum\"\n }, $jsx(\"div\", {\n class: \"color-picker-sb-spectrum\",\n style: \"background-color: hsl(0, 100%, 50%)\"\n }, $jsx(\"div\", {\n class: \"color-picker-sb-spectrum-handle\"\n })));\n },\n init(self) {\n const {\n app\n } = self;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n let specterRect;\n let specterIsTouched;\n let specterHandleIsTouched;\n const {\n $el\n } = self;\n function setSBFromSpecterCoords(x, y) {\n let s = (x - specterRect.left) / specterRect.width;\n let b = (y - specterRect.top) / specterRect.height;\n s = Math.max(0, Math.min(1, s));\n b = 1 - Math.max(0, Math.min(1, b));\n self.setValue({\n hsb: [self.value.hue, s, b]\n });\n }\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n const $targetEl = $(e.target);\n specterHandleIsTouched = $targetEl.closest('.color-picker-sb-spectrum-handle').length > 0;\n if (!specterHandleIsTouched) {\n specterIsTouched = $targetEl.closest('.color-picker-sb-spectrum').length > 0;\n }\n if (specterIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n setSBFromSpecterCoords(touchStartX, touchStartY);\n }\n if (specterHandleIsTouched || specterIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').addClass('color-picker-sb-spectrum-handle-pressed');\n }\n }\n function handleTouchMove(e) {\n if (!(specterIsTouched || specterHandleIsTouched)) return;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n if (!isMoved) {\n // First move\n isMoved = true;\n if (specterHandleIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n }\n }\n if (specterIsTouched || specterHandleIsTouched) {\n setSBFromSpecterCoords(touchCurrentX, touchCurrentY);\n }\n }\n function handleTouchEnd() {\n isMoved = false;\n if (specterIsTouched || specterHandleIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').removeClass('color-picker-sb-spectrum-handle-pressed');\n }\n specterIsTouched = false;\n specterHandleIsTouched = false;\n }\n function handleResize() {\n self.modules['sb-spectrum'].update(self);\n }\n const passiveListener = app.touchEvents.start === 'touchstart' && getSupport().passiveListener ? {\n passive: true,\n capture: false\n } : false;\n self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n self.destroySpectrumEvents = function destroySpectrumEvents() {\n self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n };\n },\n update(self) {\n const {\n value\n } = self;\n const {\n hsl,\n hsb\n } = value;\n const specterWidth = self.$el.find('.color-picker-sb-spectrum')[0].offsetWidth;\n const specterHeight = self.$el.find('.color-picker-sb-spectrum')[0].offsetHeight;\n self.$el.find('.color-picker-sb-spectrum').css('background-color', `hsl(${hsl[0]}, 100%, 50%)`);\n self.$el.find('.color-picker-sb-spectrum-handle').css('background-color', `hsl(${hsl[0]}, ${hsl[1] * 100}%, ${hsl[2] * 100}%)`).transform(`translate(${specterWidth * hsb[1]}px, ${specterHeight * (1 - hsb[2])}px)`);\n },\n destroy(self) {\n if (self.destroySpectrumEvents) self.destroySpectrumEvents();\n delete self.destroySpectrumEvents;\n }\n};","import $ from '../../../shared/dom7.js';\nimport { colorHsbToHsl } from '../../../shared/utils.js';\nimport { getSupport } from '../../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render() {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-hs-spectrum\"\n }, $jsx(\"div\", {\n class: \"color-picker-hs-spectrum\"\n }, $jsx(\"div\", {\n class: \"color-picker-hs-spectrum-handle\"\n })));\n },\n init(self) {\n const {\n app\n } = self;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n let specterRect;\n let specterIsTouched;\n let specterHandleIsTouched;\n const {\n $el\n } = self;\n function setHSFromSpecterCoords(x, y) {\n let h = (x - specterRect.left) / specterRect.width * 360;\n let s = (y - specterRect.top) / specterRect.height;\n h = Math.max(0, Math.min(360, h));\n s = 1 - Math.max(0, Math.min(1, s));\n self.setValue({\n hsb: [h, s, self.value.hsb[2]]\n });\n }\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n const $targetEl = $(e.target);\n specterHandleIsTouched = $targetEl.closest('.color-picker-hs-spectrum-handle').length > 0;\n if (!specterHandleIsTouched) {\n specterIsTouched = $targetEl.closest('.color-picker-hs-spectrum').length > 0;\n }\n if (specterIsTouched) {\n specterRect = $el.find('.color-picker-hs-spectrum')[0].getBoundingClientRect();\n setHSFromSpecterCoords(touchStartX, touchStartY);\n }\n if (specterHandleIsTouched || specterIsTouched) {\n $el.find('.color-picker-hs-spectrum-handle').addClass('color-picker-hs-spectrum-handle-pressed');\n }\n }\n function handleTouchMove(e) {\n if (!(specterIsTouched || specterHandleIsTouched)) return;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n if (!isMoved) {\n // First move\n isMoved = true;\n if (specterHandleIsTouched) {\n specterRect = $el.find('.color-picker-hs-spectrum')[0].getBoundingClientRect();\n }\n }\n if (specterIsTouched || specterHandleIsTouched) {\n setHSFromSpecterCoords(touchCurrentX, touchCurrentY);\n }\n }\n function handleTouchEnd() {\n isMoved = false;\n if (specterIsTouched || specterHandleIsTouched) {\n $el.find('.color-picker-hs-spectrum-handle').removeClass('color-picker-hs-spectrum-handle-pressed');\n }\n specterIsTouched = false;\n specterHandleIsTouched = false;\n }\n function handleResize() {\n self.modules['hs-spectrum'].update(self);\n }\n const passiveListener = app.touchEvents.start === 'touchstart' && getSupport().passiveListener ? {\n passive: true,\n capture: false\n } : false;\n self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n self.destroySpectrumEvents = function destroySpectrumEvents() {\n self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n };\n },\n update(self) {\n const {\n value\n } = self;\n const {\n hsb\n } = value;\n const specterWidth = self.$el.find('.color-picker-hs-spectrum')[0].offsetWidth;\n const specterHeight = self.$el.find('.color-picker-hs-spectrum')[0].offsetHeight;\n const hslBright = colorHsbToHsl(hsb[0], hsb[1], 1);\n self.$el.find('.color-picker-hs-spectrum-handle').css('background-color', `hsl(${hslBright[0]}, ${hslBright[1] * 100}%, ${hslBright[2] * 100}%)`).transform(`translate(${specterWidth * (hsb[0] / 360)}px, ${specterHeight * (1 - hsb[1])}px)`);\n },\n destroy(self) {\n if (self.destroySpectrumEvents) self.destroySpectrumEvents();\n delete self.destroySpectrumEvents;\n }\n};","import $ from '../../../shared/dom7.js';\nimport { getSupport } from '../../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nfunction svgWheelCircles() {\n const total = 256;\n let circles = '';\n for (let i = total; i > 0; i -= 1) {\n const angle = i * Math.PI / (total / 2);\n const hue = 360 / total * i;\n circles += ``;\n }\n return circles;\n}\nexport default {\n render() {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-wheel\"\n }, $jsx(\"div\", {\n class: \"color-picker-wheel\"\n }, $jsx(\"svg\", {\n viewBox: \"0 0 300 300\",\n width: \"300\",\n height: \"300\"\n }, svgWheelCircles()), $jsx(\"div\", {\n class: \"color-picker-wheel-handle\"\n }), $jsx(\"div\", {\n class: \"color-picker-sb-spectrum\",\n style: \"background-color: hsl(0, 100%, 50%)\"\n }, $jsx(\"div\", {\n class: \"color-picker-sb-spectrum-handle\"\n }))));\n },\n init(self) {\n const {\n app\n } = self;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n let wheelRect;\n let wheelIsTouched;\n let wheelHandleIsTouched;\n let specterRect;\n let specterIsTouched;\n let specterHandleIsTouched;\n const {\n $el\n } = self;\n function setHueFromWheelCoords(x, y) {\n const wheelCenterX = wheelRect.left + wheelRect.width / 2;\n const wheelCenterY = wheelRect.top + wheelRect.height / 2;\n const angleRad = Math.atan2(y - wheelCenterY, x - wheelCenterX);\n let angleDeg = angleRad * 180 / Math.PI + 90;\n if (angleDeg < 0) angleDeg += 360;\n angleDeg = 360 - angleDeg;\n self.setValue({\n hue: angleDeg\n });\n }\n function setSBFromSpecterCoords(x, y) {\n let s = (x - specterRect.left) / specterRect.width;\n let b = (y - specterRect.top) / specterRect.height;\n s = Math.max(0, Math.min(1, s));\n b = 1 - Math.max(0, Math.min(1, b));\n self.setValue({\n hsb: [self.value.hue, s, b]\n });\n }\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n const $targetEl = $(e.target);\n wheelHandleIsTouched = $targetEl.closest('.color-picker-wheel-handle').length > 0;\n wheelIsTouched = $targetEl.closest('circle').length > 0;\n specterHandleIsTouched = $targetEl.closest('.color-picker-sb-spectrum-handle').length > 0;\n if (!specterHandleIsTouched) {\n specterIsTouched = $targetEl.closest('.color-picker-sb-spectrum').length > 0;\n }\n if (wheelIsTouched) {\n wheelRect = $el.find('.color-picker-wheel')[0].getBoundingClientRect();\n setHueFromWheelCoords(touchStartX, touchStartY);\n }\n if (specterIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n setSBFromSpecterCoords(touchStartX, touchStartY);\n }\n if (specterHandleIsTouched || specterIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').addClass('color-picker-sb-spectrum-handle-pressed');\n }\n }\n function handleTouchMove(e) {\n if (!(wheelIsTouched || wheelHandleIsTouched) && !(specterIsTouched || specterHandleIsTouched)) return;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n if (!isMoved) {\n // First move\n isMoved = true;\n if (wheelHandleIsTouched) {\n wheelRect = $el.find('.color-picker-wheel')[0].getBoundingClientRect();\n }\n if (specterHandleIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n }\n }\n if (wheelIsTouched || wheelHandleIsTouched) {\n setHueFromWheelCoords(touchCurrentX, touchCurrentY);\n }\n if (specterIsTouched || specterHandleIsTouched) {\n setSBFromSpecterCoords(touchCurrentX, touchCurrentY);\n }\n }\n function handleTouchEnd() {\n isMoved = false;\n if (specterIsTouched || specterHandleIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').removeClass('color-picker-sb-spectrum-handle-pressed');\n }\n wheelIsTouched = false;\n wheelHandleIsTouched = false;\n specterIsTouched = false;\n specterHandleIsTouched = false;\n }\n function handleResize() {\n self.modules.wheel.update(self);\n }\n const passiveListener = app.touchEvents.start === 'touchstart' && getSupport().passiveListener ? {\n passive: true,\n capture: false\n } : false;\n self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n self.destroyWheelEvents = function destroyWheelEvents() {\n self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n };\n },\n update(self) {\n const {\n value\n } = self;\n const {\n hsl,\n hsb\n } = value;\n const specterWidth = self.$el.find('.color-picker-sb-spectrum')[0].offsetWidth;\n const specterHeight = self.$el.find('.color-picker-sb-spectrum')[0].offsetHeight;\n const wheelSize = self.$el.find('.color-picker-wheel')[0].offsetWidth;\n const wheelHalfSize = wheelSize / 2;\n const angleRad = value.hue * Math.PI / 180;\n const handleSize = wheelSize / 6;\n const handleHalfSize = handleSize / 2;\n const tX = wheelHalfSize - Math.sin(angleRad) * (wheelHalfSize - handleHalfSize) - handleHalfSize;\n const tY = wheelHalfSize - Math.cos(angleRad) * (wheelHalfSize - handleHalfSize) - handleHalfSize;\n self.$el.find('.color-picker-wheel-handle').css('background-color', `hsl(${hsl[0]}, 100%, 50%)`).transform(`translate(${tX}px, ${tY}px)`);\n self.$el.find('.color-picker-sb-spectrum').css('background-color', `hsl(${hsl[0]}, 100%, 50%)`);\n self.$el.find('.color-picker-sb-spectrum-handle').css('background-color', `hsl(${hsl[0]}, ${hsl[1] * 100}%, ${hsl[2] * 100}%)`).transform(`translate(${specterWidth * hsb[1]}px, ${specterHeight * (1 - hsb[2])}px)`);\n },\n destroy(self) {\n if (self.destroyWheelEvents) self.destroyWheelEvents();\n delete self.destroyWheelEvents;\n }\n};","import { extend, colorRgbToHex, colorRgbToHsl, colorHslToHsb, colorHslToRgb, colorHsbToHsl, colorHexToRgb, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport $ from '../../shared/dom7.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport moduleAlphaSlider from './modules/alpha-slider.js';\nimport moduleCurrentColor from './modules/current-color.js';\nimport moduleHex from './modules/hex.js';\nimport moduleHsbSliders from './modules/hsb-sliders.js';\nimport moduleHueSlider from './modules/hue-slider.js';\nimport moduleBrightnessSlider from './modules/brightness-slider.js';\nimport modulePalette from './modules/palette.js';\nimport moduleInitialCurrentColors from './modules/initial-current-colors.js';\nimport moduleRgbBars from './modules/rgb-bars.js';\nimport moduleRgbSliders from './modules/rgb-sliders.js';\nimport moduleSbSpectrum from './modules/sb-spectrum.js';\nimport moduleHsSpectrum from './modules/hs-spectrum.js';\nimport moduleWheel from './modules/wheel.js';\n\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass ColorPicker extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const self = this;\n self.params = extend({}, app.params.colorPicker, params);\n let $containerEl;\n if (self.params.containerEl) {\n $containerEl = $(self.params.containerEl);\n if ($containerEl.length === 0) return self;\n }\n let $inputEl;\n if (self.params.inputEl) {\n $inputEl = $(self.params.inputEl);\n }\n let $targetEl;\n if (self.params.targetEl) {\n $targetEl = $(self.params.targetEl);\n }\n extend(self, {\n app,\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n $targetEl,\n targetEl: $targetEl && $targetEl[0],\n initialized: false,\n opened: false,\n url: self.params.url,\n modules: {\n 'alpha-slider': moduleAlphaSlider,\n 'current-color': moduleCurrentColor,\n hex: moduleHex,\n // eslint-disable-line\n 'hsb-sliders': moduleHsbSliders,\n 'hue-slider': moduleHueSlider,\n 'brightness-slider': moduleBrightnessSlider,\n palette: modulePalette,\n // eslint-disable-line\n 'initial-current-colors': moduleInitialCurrentColors,\n 'rgb-bars': moduleRgbBars,\n 'rgb-sliders': moduleRgbSliders,\n 'sb-spectrum': moduleSbSpectrum,\n 'hs-spectrum': moduleHsSpectrum,\n wheel: moduleWheel // eslint-disable-line\n }\n });\n\n function onInputClick() {\n self.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n function onTargetClick() {\n self.open();\n }\n function onHtmlClick(e) {\n if (self.destroyed || !self.params) return;\n if (self.params.openIn === 'page') return;\n const $clickTargetEl = $(e.target);\n if (!self.opened || self.closing) return;\n if ($clickTargetEl.closest('[class*=\"backdrop\"]').length) return;\n if ($clickTargetEl.closest('.color-picker-popup, .color-picker-popover').length) return;\n if ($inputEl && $inputEl.length > 0) {\n if ($clickTargetEl[0] !== $inputEl[0] && $clickTargetEl.closest('.sheet-modal').length === 0) {\n self.close();\n }\n } else if ($(e.target).closest('.sheet-modal').length === 0) {\n self.close();\n }\n }\n\n // Events\n extend(self, {\n attachInputEvents() {\n self.$inputEl.on('click', onInputClick);\n if (self.params.inputReadOnly) {\n self.$inputEl.on('focus mousedown', onInputFocus);\n if (self.$inputEl[0]) {\n self.$inputEl[0].f7ValidateReadonly = true;\n }\n }\n },\n detachInputEvents() {\n self.$inputEl.off('click', onInputClick);\n if (self.params.inputReadOnly) {\n self.$inputEl.off('focus mousedown', onInputFocus);\n if (self.$inputEl[0]) {\n delete self.$inputEl[0].f7ValidateReadonly;\n }\n }\n },\n attachTargetEvents() {\n self.$targetEl.on('click', onTargetClick);\n },\n detachTargetEvents() {\n self.$targetEl.off('click', onTargetClick);\n },\n attachHtmlEvents() {\n app.on('click', onHtmlClick);\n },\n detachHtmlEvents() {\n app.off('click', onHtmlClick);\n }\n });\n self.init();\n return self;\n }\n get view() {\n const {\n $inputEl,\n $targetEl,\n app,\n params\n } = this;\n let view;\n if (params.view) {\n view = params.view;\n } else {\n if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view && $targetEl) {\n view = $targetEl.parents('.view').length && $targetEl.parents('.view')[0].f7View;\n }\n }\n if (!view) view = app.views.main;\n return view;\n }\n attachEvents() {\n const self = this;\n self.centerModules = self.centerModules.bind(self);\n if (self.params.centerModules) {\n self.app.on('resize', self.centerModules);\n }\n }\n detachEvents() {\n const self = this;\n if (self.params.centerModules) {\n self.app.off('resize', self.centerModules);\n }\n }\n centerModules() {\n const self = this;\n if (!self.opened || !self.$el || self.inline) return;\n const $pageContentEl = self.$el.find('.page-content');\n if (!$pageContentEl.length) return;\n const {\n scrollHeight,\n offsetHeight\n } = $pageContentEl[0];\n if (scrollHeight <= offsetHeight) {\n $pageContentEl.addClass('justify-content-center');\n } else {\n $pageContentEl.removeClass('justify-content-center');\n }\n }\n initInput() {\n const self = this;\n if (!self.$inputEl) return;\n if (self.params.inputReadOnly) self.$inputEl.prop('readOnly', true);\n }\n getModalType() {\n const self = this;\n const {\n app,\n modal,\n params\n } = self;\n const {\n openIn,\n openInPhone\n } = params;\n const device = getDevice();\n if (modal && modal.type) return modal.type;\n if (openIn !== 'auto') return openIn;\n if (self.inline) return null;\n if (device.ios) {\n return device.ipad ? 'popover' : openInPhone;\n }\n if (app.width >= 768) {\n return 'popover';\n }\n return openInPhone;\n }\n formatValue() {\n const self = this;\n const {\n value\n } = self;\n if (self.params.formatValue) {\n return self.params.formatValue.call(self, value);\n }\n return value.hex;\n }\n\n // eslint-disable-next-line\n normalizeHsValues(arr) {\n return [Math.floor(arr[0] * 10) / 10, Math.floor(arr[1] * 1000) / 1000, Math.floor(arr[2] * 1000) / 1000];\n }\n setValue(value, updateModules) {\n if (value === void 0) {\n value = {};\n }\n if (updateModules === void 0) {\n updateModules = true;\n }\n const self = this;\n if (typeof value === 'undefined') return;\n let {\n hex,\n rgb,\n hsl,\n hsb,\n alpha = 1,\n hue,\n rgba,\n hsla\n } = self.value || {};\n const needChangeEvent = self.value || !self.value && !self.params.value;\n let valueChanged;\n Object.keys(value).forEach(k => {\n if (!self.value || typeof self.value[k] === 'undefined') {\n valueChanged = true;\n return;\n }\n const v = value[k];\n if (Array.isArray(v)) {\n v.forEach((subV, subIndex) => {\n if (subV !== self.value[k][subIndex]) {\n valueChanged = true;\n }\n });\n } else if (v !== self.value[k]) {\n valueChanged = true;\n }\n });\n if (!valueChanged) return;\n if (value.rgb || value.rgba) {\n const [r, g, b, a = alpha] = value.rgb || value.rgba;\n rgb = [r, g, b];\n hex = colorRgbToHex(...rgb);\n hsl = colorRgbToHsl(...rgb);\n hsb = colorHslToHsb(...hsl);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n alpha = a;\n rgba = [rgb[0], rgb[1], rgb[2], a];\n hsla = [hsl[0], hsl[1], hsl[2], a];\n }\n if (value.hsl || value.hsla) {\n const [h, s, l, a = alpha] = value.hsl || value.hsla;\n hsl = [h, s, l];\n rgb = colorHslToRgb(...hsl);\n hex = colorRgbToHex(...rgb);\n hsb = colorHslToHsb(...hsl);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n alpha = a;\n rgba = [rgb[0], rgb[1], rgb[2], a];\n hsla = [hsl[0], hsl[1], hsl[2], a];\n }\n if (value.hsb) {\n const [h, s, b, a = alpha] = value.hsb;\n hsb = [h, s, b];\n hsl = colorHsbToHsl(...hsb);\n rgb = colorHslToRgb(...hsl);\n hex = colorRgbToHex(...rgb);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n alpha = a;\n rgba = [rgb[0], rgb[1], rgb[2], a];\n hsla = [hsl[0], hsl[1], hsl[2], a];\n }\n if (value.hex) {\n rgb = colorHexToRgb(value.hex);\n hex = colorRgbToHex(...rgb);\n hsl = colorRgbToHsl(...rgb);\n hsb = colorHslToHsb(...hsl);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n rgba = [rgb[0], rgb[1], rgb[2], alpha];\n hsla = [hsl[0], hsl[1], hsl[2], alpha];\n }\n if (typeof value.alpha !== 'undefined') {\n alpha = value.alpha;\n if (typeof rgb !== 'undefined') {\n rgba = [rgb[0], rgb[1], rgb[2], alpha];\n }\n if (typeof hsl !== 'undefined') {\n hsla = [hsl[0], hsl[1], hsl[2], alpha];\n }\n }\n if (typeof value.hue !== 'undefined') {\n const [h, s, l] = hsl; // eslint-disable-line\n hsl = [value.hue, s, l];\n hsb = colorHslToHsb(...hsl);\n rgb = colorHslToRgb(...hsl);\n hex = colorRgbToHex(...rgb);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n rgba = [rgb[0], rgb[1], rgb[2], alpha];\n hsla = [hsl[0], hsl[1], hsl[2], alpha];\n }\n self.value = {\n hex,\n alpha,\n hue,\n rgb,\n hsl,\n hsb,\n rgba,\n hsla\n };\n if (!self.initialValue) self.initialValue = extend({}, self.value);\n self.updateValue(needChangeEvent);\n if (self.opened && updateModules) {\n self.updateModules();\n }\n }\n getValue() {\n const self = this;\n return self.value;\n }\n updateValue(fireEvents) {\n if (fireEvents === void 0) {\n fireEvents = true;\n }\n const self = this;\n const {\n $inputEl,\n value,\n $targetEl\n } = self;\n if ($targetEl && self.params.targetElSetBackgroundColor) {\n const {\n rgba\n } = value;\n $targetEl.css('background-color', `rgba(${rgba.join(', ')})`);\n }\n if (fireEvents) {\n self.emit('local::change colorPickerChange', self, value);\n }\n if ($inputEl && $inputEl.length) {\n const inputValue = self.formatValue(value);\n if ($inputEl && $inputEl.length) {\n $inputEl.val(inputValue);\n if (fireEvents) {\n $inputEl.trigger('change');\n }\n }\n }\n }\n updateModules() {\n const self = this;\n const {\n modules\n } = self;\n self.params.modules.forEach(m => {\n if (typeof m === 'string' && modules[m] && modules[m].update) {\n modules[m].update(self);\n } else if (m && m.update) {\n m.update(self);\n }\n });\n }\n update() {\n const self = this;\n self.updateModules();\n }\n renderPicker() {\n const self = this;\n const {\n params,\n modules\n } = self;\n let html = '';\n params.modules.forEach(m => {\n if (typeof m === 'string' && modules[m] && modules[m].render) {\n html += modules[m].render(self);\n } else if (m && m.render) {\n html += m.render(self);\n }\n });\n return html;\n }\n renderNavbar() {\n const self = this;\n if (self.params.renderNavbar) {\n return self.params.renderNavbar.call(self, self);\n }\n const {\n openIn,\n navbarTitleText,\n navbarBackLinkText,\n navbarCloseText\n } = self.params;\n return $jsx(\"div\", {\n class: \"navbar\"\n }, $jsx(\"div\", {\n class: \"navbar-bg\"\n }), $jsx(\"div\", {\n class: \"navbar-inner sliding\"\n }, openIn === 'page' && $jsx(\"div\", {\n class: \"left\"\n }, $jsx(\"a\", {\n class: \"link back\"\n }, $jsx(\"i\", {\n class: \"icon icon-back\"\n }), $jsx(\"span\", {\n class: \"if-not-md\"\n }, navbarBackLinkText))), $jsx(\"div\", {\n class: \"title\"\n }, navbarTitleText), openIn !== 'page' && $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link popup-close\",\n \"data-popup\": \".color-picker-popup\"\n }, navbarCloseText))));\n }\n renderToolbar() {\n const self = this;\n if (self.params.renderToolbar) {\n return self.params.renderToolbar.call(self, self);\n }\n return $jsx(\"div\", {\n class: \"toolbar toolbar-top\"\n }, $jsx(\"div\", {\n class: \"toolbar-inner\"\n }, $jsx(\"div\", {\n class: \"left\"\n }), $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link sheet-close popover-close\",\n \"data-sheet\": \".color-picker-sheet-modal\",\n \"data-popover\": \".color-picker-popover\"\n }, self.params.toolbarCloseText))));\n }\n renderInline() {\n const self = this;\n const {\n cssClass,\n groupedModules\n } = self.params;\n return $jsx(\"div\", {\n class: `color-picker color-picker-inline ${groupedModules ? 'color-picker-grouped-modules' : ''} ${cssClass || ''}`\n }, self.renderPicker());\n }\n renderSheet() {\n const self = this;\n const {\n cssClass,\n toolbarSheet,\n groupedModules\n } = self.params;\n return $jsx(\"div\", {\n class: `sheet-modal color-picker color-picker-sheet-modal ${groupedModules ? 'color-picker-grouped-modules' : ''} ${cssClass || ''}`\n }, toolbarSheet && self.renderToolbar(), $jsx(\"div\", {\n class: \"sheet-modal-inner\"\n }, $jsx(\"div\", {\n class: \"page-content\"\n }, self.renderPicker())));\n }\n renderPopover() {\n const self = this;\n const {\n cssClass,\n toolbarPopover,\n groupedModules\n } = self.params;\n return $jsx(\"div\", {\n class: `popover color-picker-popover ${cssClass || ''}`\n }, $jsx(\"div\", {\n class: \"popover-inner\"\n }, $jsx(\"div\", {\n class: `color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}`\n }, toolbarPopover && self.renderToolbar(), $jsx(\"div\", {\n class: \"page-content\"\n }, self.renderPicker()))));\n }\n renderPopup() {\n const self = this;\n const {\n cssClass,\n navbarPopup,\n groupedModules\n } = self.params;\n return $jsx(\"div\", {\n class: `popup color-picker-popup ${cssClass || ''}`\n }, $jsx(\"div\", {\n class: \"page\"\n }, navbarPopup && self.renderNavbar(), $jsx(\"div\", {\n class: `color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}`\n }, $jsx(\"div\", {\n class: \"page-content\"\n }, self.renderPicker()))));\n }\n renderPage() {\n const self = this;\n const {\n cssClass,\n groupedModules\n } = self.params;\n return $jsx(\"div\", {\n class: `page color-picker-page ${cssClass || ''}`,\n \"data-name\": \"color-picker-page\"\n }, self.renderNavbar(), $jsx(\"div\", {\n class: `color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}`\n }, $jsx(\"div\", {\n class: \"page-content\"\n }, self.renderPicker())));\n }\n\n // eslint-disable-next-line\n render() {\n const self = this;\n const {\n params\n } = self;\n if (params.render) return params.render.call(self);\n if (self.inline) return self.renderInline();\n if (params.openIn === 'page') {\n return self.renderPage();\n }\n const modalType = self.getModalType();\n if (modalType === 'popover') return self.renderPopover();\n if (modalType === 'sheet') return self.renderSheet();\n if (modalType === 'popup') return self.renderPopup();\n }\n onOpen() {\n const self = this;\n const {\n initialized,\n $el,\n app,\n $inputEl,\n inline,\n value,\n params,\n modules\n } = self;\n self.closing = false;\n self.opened = true;\n self.opening = true;\n\n // Init main events\n self.attachEvents();\n params.modules.forEach(m => {\n if (typeof m === 'string' && modules[m] && modules[m].init) {\n modules[m].init(self);\n } else if (m && m.init) {\n m.init(self);\n }\n });\n const updateValue = !value && params.value;\n\n // Set value\n if (!initialized) {\n if (value) self.setValue(value);else if (params.value) {\n self.setValue(params.value, false);\n } else if (!params.value) {\n self.setValue({\n hex: '#ff0000'\n }, false);\n }\n } else if (value) {\n self.initialValue = extend({}, value);\n self.setValue(value, false);\n }\n\n // Update input value\n if (updateValue) self.updateValue();\n self.updateModules();\n\n // Center modules\n if (params.centerModules) {\n self.centerModules();\n }\n\n // Extra focus\n if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n self.initialized = true;\n\n // Trigger events\n if ($el) {\n $el.trigger('colorpicker:open');\n }\n if ($inputEl) {\n $inputEl.trigger('colorpicker:open');\n }\n self.emit('local::open colorPickerOpen', self);\n }\n onOpened() {\n const self = this;\n self.opening = false;\n if (self.$el) {\n self.$el.trigger('colorpicker:opened');\n }\n if (self.$inputEl) {\n self.$inputEl.trigger('colorpicker:opened');\n }\n self.emit('local::opened colorPickerOpened', self);\n }\n onClose() {\n const self = this;\n const {\n app,\n params,\n modules\n } = self;\n self.opening = false;\n self.closing = true;\n\n // Detach events\n self.detachEvents();\n if (self.$inputEl) {\n if (app.theme === 'md') {\n self.$inputEl.trigger('blur');\n } else {\n const validate = self.$inputEl.attr('validate');\n const required = self.$inputEl.attr('required');\n if (validate && required) {\n app.input.validate(self.$inputEl);\n }\n }\n }\n params.modules.forEach(m => {\n if (typeof m === 'string' && modules[m] && modules[m].destroy) {\n modules[m].destroy(self);\n } else if (m && m.destroy) {\n m.destroy(self);\n }\n });\n if (self.$el) {\n self.$el.trigger('colorpicker:close');\n }\n if (self.$inputEl) {\n self.$inputEl.trigger('colorpicker:close');\n }\n self.emit('local::close colorPickerClose', self);\n }\n onClosed() {\n const self = this;\n self.opened = false;\n self.closing = false;\n if (!self.inline) {\n nextTick(() => {\n if (self.modal && self.modal.el && self.modal.destroy) {\n if (!self.params.routableModals) {\n self.modal.destroy();\n }\n }\n delete self.modal;\n });\n }\n if (self.$el) {\n self.$el.trigger('colorpicker:closed');\n }\n if (self.$inputEl) {\n self.$inputEl.trigger('colorpicker:closed');\n }\n self.emit('local::closed colorPickerClosed', self);\n }\n open() {\n const self = this;\n const {\n app,\n opened,\n inline,\n $inputEl,\n $targetEl,\n params\n } = self;\n if (opened) return;\n if (inline) {\n self.$el = $(self.render());\n self.$el[0].f7ColorPicker = self;\n self.$containerEl.append(self.$el);\n self.onOpen();\n self.onOpened();\n return;\n }\n const colorPickerContent = self.render();\n if (params.openIn === 'page') {\n self.view.router.navigate({\n url: self.url,\n route: {\n content: colorPickerContent,\n path: self.url,\n on: {\n pageBeforeIn(e, page) {\n self.$el = page.$el.find('.color-picker');\n self.$el[0].f7ColorPicker = self;\n self.onOpen();\n },\n pageAfterIn() {\n self.onOpened();\n },\n pageBeforeOut() {\n self.onClose();\n },\n pageAfterOut() {\n self.onClosed();\n if (self.$el && self.$el[0]) {\n self.$el[0].f7ColorPicker = null;\n delete self.$el[0].f7ColorPicker;\n }\n }\n }\n }\n });\n } else {\n const modalType = self.getModalType();\n let backdrop = params.backdrop;\n if (backdrop === null || typeof backdrop === 'undefined') {\n if (modalType === 'popover' && app.params.popover.backdrop !== false) backdrop = true;\n if (modalType === 'popup') backdrop = true;\n }\n const modalParams = {\n targetEl: $targetEl || $inputEl,\n scrollToEl: params.scrollToInput ? $targetEl || $inputEl : undefined,\n content: colorPickerContent,\n backdrop,\n closeByBackdropClick: params.closeByBackdropClick,\n on: {\n open() {\n const modal = this;\n self.modal = modal;\n self.$el = modalType === 'popover' || modalType === 'popup' ? modal.$el.find('.color-picker') : modal.$el;\n self.$el[0].f7ColorPicker = self;\n self.onOpen();\n },\n opened() {\n self.onOpened();\n },\n close() {\n self.onClose();\n },\n closed() {\n self.onClosed();\n if (self.$el && self.$el[0]) {\n self.$el[0].f7ColorPicker = null;\n delete self.$el[0].f7ColorPicker;\n }\n }\n }\n };\n if (modalType === 'popup') {\n modalParams.push = params.popupPush;\n modalParams.swipeToClose = params.popupSwipeToClose;\n }\n if (modalType === 'sheet') {\n modalParams.push = params.sheetPush;\n modalParams.swipeToClose = params.sheetSwipeToClose;\n }\n if (params.routableModals && self.view) {\n self.view.router.navigate({\n url: self.url,\n route: {\n path: self.url,\n [modalType]: modalParams\n }\n });\n } else {\n self.modal = app[modalType].create(modalParams);\n self.modal.open();\n }\n }\n }\n close() {\n const self = this;\n const {\n opened,\n inline\n } = self;\n if (!opened) return;\n if (inline) {\n self.onClose();\n self.onClosed();\n return;\n }\n if (self.params.routableModals && self.view || self.params.openIn === 'page') {\n self.view.router.back();\n } else {\n self.modal.close();\n }\n }\n init() {\n const self = this;\n self.initInput();\n if (self.inline) {\n self.open();\n self.emit('local::init colorPickerInit', self);\n return;\n }\n if (!self.initialized && self.params.value) {\n self.setValue(self.params.value);\n }\n\n // Attach input Events\n if (self.$inputEl) {\n self.attachInputEvents();\n }\n if (self.$targetEl) {\n self.attachTargetEvents();\n }\n if (self.params.closeByOutsideClick) {\n self.attachHtmlEvents();\n }\n self.emit('local::init colorPickerInit', self);\n }\n destroy() {\n const self = this;\n if (self.destroyed) return;\n const {\n $el\n } = self;\n self.emit('local::beforeDestroy colorPickerBeforeDestroy', self);\n if ($el) $el.trigger('colorpicker:beforedestroy');\n self.close();\n\n // Detach Events\n self.detachEvents();\n if (self.$inputEl) {\n self.detachInputEvents();\n }\n if (self.$targetEl) {\n self.detachTargetEvents();\n }\n if (self.params.closeByOutsideClick) {\n self.detachHtmlEvents();\n }\n if ($el && $el.length) delete self.$el[0].f7ColorPicker;\n deleteProps(self);\n self.destroyed = true;\n }\n}\nexport default ColorPicker;","import $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport ColorPicker from './color-picker-class.js';\nexport default {\n name: 'colorPicker',\n static: {\n ColorPicker\n },\n create() {\n const app = this;\n app.colorPicker = ConstructorMethods({\n defaultSelector: '.color-picker',\n constructor: ColorPicker,\n app,\n domProp: 'f7ColorPicker'\n });\n app.colorPicker.close = function close(el) {\n if (el === void 0) {\n el = '.color-picker';\n }\n const $el = $(el);\n if ($el.length === 0) return;\n const colorPicker = $el[0].f7ColorPicker;\n if (!colorPicker || colorPicker && !colorPicker.opened) return;\n colorPicker.close();\n };\n },\n params: {\n colorPicker: {\n // Color picker settings\n value: null,\n modules: ['wheel'],\n palette: [['#FFEBEE', '#FFCDD2', '#EF9A9A', '#E57373', '#EF5350', '#F44336', '#E53935', '#D32F2F', '#C62828', '#B71C1C'], ['#F3E5F5', '#E1BEE7', '#CE93D8', '#BA68C8', '#AB47BC', '#9C27B0', '#8E24AA', '#7B1FA2', '#6A1B9A', '#4A148C'], ['#E8EAF6', '#C5CAE9', '#9FA8DA', '#7986CB', '#5C6BC0', '#3F51B5', '#3949AB', '#303F9F', '#283593', '#1A237E'], ['#E1F5FE', '#B3E5FC', '#81D4FA', '#4FC3F7', '#29B6F6', '#03A9F4', '#039BE5', '#0288D1', '#0277BD', '#01579B'], ['#E0F2F1', '#B2DFDB', '#80CBC4', '#4DB6AC', '#26A69A', '#009688', '#00897B', '#00796B', '#00695C', '#004D40'], ['#F1F8E9', '#DCEDC8', '#C5E1A5', '#AED581', '#9CCC65', '#8BC34A', '#7CB342', '#689F38', '#558B2F', '#33691E'], ['#FFFDE7', '#FFF9C4', '#FFF59D', '#FFF176', '#FFEE58', '#FFEB3B', '#FDD835', '#FBC02D', '#F9A825', '#F57F17'], ['#FFF3E0', '#FFE0B2', '#FFCC80', '#FFB74D', '#FFA726', '#FF9800', '#FB8C00', '#F57C00', '#EF6C00', '#E65100']],\n groupedModules: false,\n centerModules: true,\n sliderLabel: false,\n sliderValue: false,\n sliderValueEdiable: false,\n barLabel: false,\n barValue: false,\n barValueEdiable: false,\n hexLabel: false,\n hexValueEditable: false,\n redLabelText: 'R',\n greenLabelText: 'G',\n blueLabelText: 'B',\n hueLabelText: 'H',\n saturationLabelText: 'S',\n brightnessLabelText: 'B',\n hexLabelText: 'HEX',\n alphaLabelText: 'A',\n // Common opener settings\n containerEl: null,\n openIn: 'popover',\n // or 'popover' or 'sheet' or 'popup' or 'page' or 'auto'\n openInPhone: 'popup',\n // or 'popover' or 'sheet' or 'popup' or 'page'\n popupPush: false,\n popupSwipeToClose: undefined,\n sheetPush: false,\n sheetSwipeToClose: undefined,\n formatValue: null,\n targetEl: null,\n targetElSetBackgroundColor: false,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n toolbarSheet: true,\n toolbarPopover: false,\n toolbarCloseText: 'Done',\n navbarPopup: true,\n navbarCloseText: 'Done',\n navbarTitleText: 'Color',\n navbarBackLinkText: 'Back',\n cssClass: null,\n routableModals: false,\n view: null,\n url: 'color/',\n backdrop: null,\n closeByBackdropClick: true,\n // Render functions\n renderToolbar: null,\n renderNavbar: null,\n renderInline: null,\n renderPopover: null,\n renderSheet: null,\n renderPopup: null,\n render: null\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { bindMethods, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\nconst Treeview = {\n open(itemEl) {\n const app = this;\n const $itemEl = $(itemEl).eq(0);\n if (!$itemEl.length) return;\n $itemEl.addClass('treeview-item-opened');\n $itemEl.trigger('treeview:open');\n app.emit('treeviewOpen', $itemEl[0]);\n function done(cancel) {\n if (cancel) {\n $itemEl.removeClass('treeview-item-opened');\n $itemEl.trigger('treeview:close');\n app.emit('treeviewClose', $itemEl[0]);\n } else {\n $itemEl[0].f7TreeviewChildrenLoaded = true;\n }\n $itemEl.find('.treeview-toggle').removeClass('treeview-toggle-hidden');\n $itemEl.find('.treeview-preloader').remove();\n }\n if ($itemEl.hasClass('treeview-load-children') && !$itemEl[0].f7TreeviewChildrenLoaded) {\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n $itemEl.trigger('treeview:loadchildren', done);\n app.emit('treeviewLoadChildren', $itemEl[0], done);\n $itemEl.find('.treeview-toggle').addClass('treeview-toggle-hidden');\n $itemEl.find('.treeview-item-root').prepend(`
          ${preloaders[`${app.theme}PreloaderContent`]}
          `);\n }\n },\n close(itemEl) {\n const app = this;\n const $itemEl = $(itemEl).eq(0);\n if (!$itemEl.length) return;\n $itemEl.removeClass('treeview-item-opened');\n $itemEl.trigger('treeview:close');\n app.emit('treeviewClose', $itemEl[0]);\n },\n toggle(itemEl) {\n const app = this;\n const $itemEl = $(itemEl).eq(0);\n if (!$itemEl.length) return;\n const wasOpened = $itemEl.hasClass('treeview-item-opened');\n app.treeview[wasOpened ? 'close' : 'open']($itemEl);\n }\n};\nexport default {\n name: 'treeview',\n create() {\n const app = this;\n bindMethods(app, {\n treeview: Treeview\n });\n },\n clicks: {\n '.treeview-toggle': function toggle($clickedEl, clickedData, e) {\n const app = this;\n if ($clickedEl.parents('.treeview-item-toggle').length) return;\n const $treeviewItemEl = $clickedEl.parents('.treeview-item').eq(0);\n if (!$treeviewItemEl.length) return;\n e.preventF7Router = true;\n app.treeview.toggle($treeviewItemEl[0]);\n },\n '.treeview-item-toggle': function toggle($clickedEl, clickedData, e) {\n const app = this;\n const $treeviewItemEl = $clickedEl.closest('.treeview-item').eq(0);\n if (!$treeviewItemEl.length) return;\n e.preventF7Router = true;\n app.treeview.toggle($treeviewItemEl[0]);\n }\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\nconst textEditorButtonsMap = {\n // f7-icon, material-icon, command\n bold: ['bold', 'format_bold', 'bold'],\n italic: ['italic', 'format_italic', 'italic'],\n underline: ['underline', 'format_underlined', 'underline'],\n strikeThrough: ['strikethrough', 'strikethrough_s', 'strikeThrough'],\n orderedList: ['list_number', 'format_list_numbered', 'insertOrderedList'],\n unorderedList: ['list_bullet', 'format_list_bulleted', 'insertUnorderedList'],\n link: ['link', 'link', 'createLink'],\n image: ['photo', 'image', 'insertImage'],\n paragraph: ['paragraph', '', 'formatBlock.P'],\n h1: ['H1', 'H1', 'formatBlock.H1'],\n h2: ['H2', 'H2', 'formatBlock.H2'],\n h3: ['H3', 'H3', 'formatBlock.H3'],\n alignLeft: ['text_alignleft', 'format_align_left', 'justifyLeft'],\n alignCenter: ['text_aligncenter', 'format_align_center', 'justifyCenter'],\n alignRight: ['text_alignright', 'format_align_right', 'justifyRight'],\n alignJustify: ['text_justify', 'format_align_justify', 'justifyFull'],\n subscript: ['textformat_subscript', 'A1', 'subscript'],\n superscript: ['textformat_superscript', 'A1', 'superscript'],\n indent: ['increase_indent', 'format_indent_increase', 'indent'],\n outdent: ['decrease_indent', 'format_indent_decrease', 'outdent']\n};\nclass TextEditor extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n const self = this;\n const document = getDocument();\n const device = getDevice();\n const defaults = extend({}, app.params.textEditor);\n\n // Extend defaults with modules params\n self.useModulesParams(defaults);\n self.params = extend(defaults, params);\n const el = self.params.el;\n if (!el) return self;\n const $el = $(el);\n if ($el.length === 0) return self;\n if ($el[0].f7TextEditor) return $el[0].f7TextEditor;\n let $contentEl = $el.children('.text-editor-content');\n if (!$contentEl.length) {\n $el.append('
          ');\n $contentEl = $el.children('.text-editor-content');\n }\n extend(self, {\n app,\n $el,\n el: $el[0],\n $contentEl,\n contentEl: $contentEl[0]\n });\n if ('value' in params) {\n self.value = self.params.value;\n }\n if (self.params.mode === 'keyboard-toolbar') {\n if (!(device.cordova || device.capacitor) && !device.android) {\n self.params.mode = 'popover';\n }\n }\n if (typeof self.params.buttons === 'string') {\n try {\n self.params.buttons = JSON.parse(self.params.buttons);\n } catch (err) {\n throw new Error('Framework7: TextEditor: wrong \"buttons\" parameter format');\n }\n }\n $el[0].f7TextEditor = self;\n\n // Bind\n self.onButtonClick = self.onButtonClick.bind(self);\n self.onFocus = self.onFocus.bind(self);\n self.onBlur = self.onBlur.bind(self);\n self.onInput = self.onInput.bind(self);\n self.onPaste = self.onPaste.bind(self);\n self.onSelectionChange = self.onSelectionChange.bind(self);\n self.closeKeyboardToolbar = self.closeKeyboardToolbar.bind(self);\n\n // Handle Events\n self.attachEvents = function attachEvents() {\n if (self.params.mode === 'toolbar') {\n self.$el.find('.text-editor-toolbar').on('click', 'button', self.onButtonClick);\n }\n if (self.params.mode === 'keyboard-toolbar') {\n self.$keyboardToolbarEl.on('click', 'button', self.onButtonClick);\n self.$el.parents('.page').on('page:beforeout', self.closeKeyboardToolbar);\n }\n if (self.params.mode === 'popover' && self.popover) {\n self.popover.$el.on('click', 'button', self.onButtonClick);\n }\n self.$contentEl.on('paste', self.onPaste);\n self.$contentEl.on('focus', self.onFocus);\n self.$contentEl.on('blur', self.onBlur);\n self.$contentEl.on('input', self.onInput, true);\n $(document).on('selectionchange', self.onSelectionChange);\n };\n self.detachEvents = function detachEvents() {\n if (self.params.mode === 'toolbar') {\n self.$el.find('.text-editor-toolbar').off('click', 'button', self.onButtonClick);\n }\n if (self.params.mode === 'keyboard-toolbar') {\n self.$keyboardToolbarEl.off('click', 'button', self.onButtonClick);\n self.$el.parents('.page').off('page:beforeout', self.closeKeyboardToolbar);\n }\n if (self.params.mode === 'popover' && self.popover) {\n self.popover.$el.off('click', 'button', self.onButtonClick);\n }\n self.$contentEl.off('paste', self.onPaste);\n self.$contentEl.off('focus', self.onFocus);\n self.$contentEl.off('blur', self.onBlur);\n self.$contentEl.off('input', self.onInput, true);\n $(document).off('selectionchange', self.onSelectionChange);\n };\n\n // Install Modules\n self.useModules();\n\n // Init\n self.init();\n return self;\n }\n setValue(newValue) {\n const self = this;\n const currentValue = self.value;\n if (currentValue === newValue) return self;\n self.value = newValue;\n self.$contentEl.html(newValue);\n self.$el.trigger('texteditor:change', self.value);\n self.emit('local::change textEditorChange', self, self.value);\n return self;\n }\n getValue() {\n const self = this;\n return self.value;\n }\n clearValue() {\n const self = this;\n self.setValue('');\n if (self.params.placeholder && !self.$contentEl.html()) {\n self.insertPlaceholder();\n }\n return self;\n }\n createLink() {\n const self = this;\n const window = getWindow();\n const document = getDocument();\n const currentSelection = window.getSelection();\n const selectedNodes = [];\n let $selectedLinks;\n if (currentSelection && currentSelection.anchorNode && $(currentSelection.anchorNode).parents(self.$el).length) {\n let anchorNode = currentSelection.anchorNode;\n while (anchorNode) {\n selectedNodes.push(anchorNode);\n if (!anchorNode.nextSibling || anchorNode === currentSelection.focusNode) {\n anchorNode = null;\n }\n if (anchorNode) {\n anchorNode = anchorNode.nextSibling;\n }\n }\n const selectedNodesLinks = [];\n const $selectedNodes = $(selectedNodes);\n for (let i = 0; i < $selectedNodes.length; i += 1) {\n const childNodes = $selectedNodes[i].children;\n if (childNodes) {\n for (let j = 0; j < childNodes.length; j += 1) {\n if ($(childNodes[j]).is('a')) {\n selectedNodesLinks.push(childNodes[j]);\n }\n }\n }\n }\n $selectedLinks = $selectedNodes.closest('a').add($(selectedNodesLinks));\n }\n if ($selectedLinks && $selectedLinks.length) {\n $selectedLinks.each(linkNode => {\n const selection = window.getSelection();\n const range = document.createRange();\n range.selectNodeContents(linkNode);\n selection.removeAllRanges();\n selection.addRange(range);\n document.execCommand('unlink', false);\n selection.removeAllRanges();\n });\n return self;\n }\n const currentRange = self.getSelectionRange();\n if (!currentRange) return self;\n const dialog = self.app.dialog.prompt('', self.params.linkUrlText, link => {\n if (link && link.trim().length) {\n self.setSelectionRange(currentRange);\n document.execCommand('createLink', false, link.trim());\n self.$el.trigger('texteditor:insertlink', {\n url: link.trim()\n });\n self.emit('local:insertLink textEditorInsertLink', self, link.trim());\n }\n });\n dialog.$el.find('input').focus();\n return self;\n }\n insertImage() {\n const self = this;\n const document = getDocument();\n const currentRange = self.getSelectionRange();\n if (!currentRange) return self;\n const dialog = self.app.dialog.prompt('', self.params.imageUrlText, imageUrl => {\n if (imageUrl && imageUrl.trim().length) {\n self.setSelectionRange(currentRange);\n document.execCommand('insertImage', false, imageUrl.trim());\n self.$el.trigger('texteditor:insertimage', {\n url: imageUrl.trim()\n });\n self.emit('local:insertImage textEditorInsertImage', self, imageUrl.trim());\n }\n });\n dialog.$el.find('input').focus();\n return self;\n }\n removePlaceholder() {\n const self = this;\n self.$contentEl.find('.text-editor-placeholder').remove();\n }\n insertPlaceholder() {\n const self = this;\n self.$contentEl.append(`
          ${self.params.placeholder}
          `);\n }\n onSelectionChange() {\n const self = this;\n const window = getWindow();\n const document = getDocument();\n if (self.params.mode === 'toolbar') return;\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n if (self.params.mode === 'keyboard-toolbar') {\n if (!selectionIsInContent) {\n self.closeKeyboardToolbar();\n } else {\n self.openKeyboardToolbar();\n }\n return;\n }\n if (self.params.mode === 'popover') {\n const selectionIsInPopover = $(selection.anchorNode).parents(self.popover.el).length || selection.anchorNode === self.popover.el;\n if (!selectionIsInContent && !selectionIsInPopover) {\n self.closePopover();\n return;\n }\n if (!selection.isCollapsed && selection.rangeCount) {\n const range = selection.getRangeAt(0);\n const rect = range.getBoundingClientRect();\n const rootEl = self.app.$el[0] || document.body;\n self.openPopover(rect.x + (window.scrollX || 0) - rootEl.offsetLeft, rect.y + (window.scrollY || 0) - rootEl.offsetTop, rect.width, rect.height);\n } else if (selection.isCollapsed) {\n self.closePopover();\n }\n }\n }\n onPaste(e) {\n const self = this;\n const document = getDocument();\n if (self.params.clearFormattingOnPaste && e.clipboardData && e.clipboardData.getData) {\n const text = e.clipboardData.getData('text/plain');\n e.preventDefault();\n document.execCommand('insertText', false, text);\n }\n }\n onInput() {\n const self = this;\n const value = self.$contentEl.html();\n self.value = value;\n self.$el.trigger('texteditor:input');\n self.emit('local:input textEditorInput', self, self.value);\n self.$el.trigger('texteditor:change', self.value);\n self.emit('local::change textEditorChange', self, self.value);\n }\n onFocus() {\n const self = this;\n self.removePlaceholder();\n self.$contentEl.focus();\n self.$el.trigger('texteditor:focus');\n self.emit('local::focus textEditorFocus', self);\n }\n onBlur() {\n const self = this;\n const window = getWindow();\n const document = getDocument();\n if (self.params.placeholder && self.$contentEl.html() === '') {\n self.insertPlaceholder();\n }\n if (self.params.mode === 'popover') {\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n const inPopover = document.activeElement && self.popover && $(document.activeElement).closest(self.popover.$el).length;\n if (!inPopover && !selectionIsInContent) {\n self.closePopover();\n }\n }\n if (self.params.mode === 'keyboard-toolbar') {\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n if (!selectionIsInContent) {\n self.closeKeyboardToolbar();\n }\n }\n self.$el.trigger('texteditor:blur');\n self.emit('local::blur textEditorBlur', self);\n }\n onButtonClick(e) {\n const self = this;\n const window = getWindow();\n const document = getDocument();\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n if (!selectionIsInContent) return;\n const $buttonEl = $(e.target).closest('button');\n if ($buttonEl.parents('form').length) {\n e.preventDefault();\n }\n const button = $buttonEl.attr('data-button');\n const buttonData = self.params.customButtons && self.params.customButtons[button];\n if (!button || !(textEditorButtonsMap[button] || buttonData)) return;\n $buttonEl.trigger('texteditor:buttonclick', button);\n self.emit('local::buttonClick textEditorButtonClick', self, button);\n if (buttonData) {\n if (buttonData.onClick) buttonData.onClick(self, $buttonEl[0]);\n return;\n }\n const command = textEditorButtonsMap[button][2];\n if (command === 'createLink') {\n self.createLink();\n return;\n }\n if (command === 'insertImage') {\n self.insertImage();\n return;\n }\n if (command.indexOf('formatBlock') === 0) {\n const tagName = command.split('.')[1];\n const $anchorNode = $(selection.anchorNode);\n if ($anchorNode.parents(tagName.toLowerCase()).length || $anchorNode.is(tagName)) {\n document.execCommand('formatBlock', false, 'div');\n } else {\n document.execCommand('formatBlock', false, tagName);\n }\n return;\n }\n document.execCommand(command, false);\n }\n\n // eslint-disable-next-line\n getSelectionRange() {\n const window = getWindow();\n const document = getDocument();\n if (window.getSelection) {\n const sel = window.getSelection();\n if (sel.getRangeAt && sel.rangeCount) {\n return sel.getRangeAt(0);\n }\n } else if (document.selection && document.selection.createRange) {\n return document.selection.createRange();\n }\n return null;\n }\n\n // eslint-disable-next-line\n setSelectionRange(range) {\n const window = getWindow();\n const document = getDocument();\n if (range) {\n if (window.getSelection) {\n const sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (document.selection && range.select) {\n range.select();\n }\n }\n }\n renderButtons() {\n const self = this;\n let html = '';\n function renderButton(button) {\n const iconClass = self.app.theme === 'md' ? 'material-icons' : 'f7-icons';\n if (self.params.customButtons && self.params.customButtons[button]) {\n const buttonData = self.params.customButtons[button];\n return ``;\n }\n if (!textEditorButtonsMap[button]) return '';\n const iconContent = textEditorButtonsMap[button][self.app.theme === 'md' ? 1 : 0];\n return ``.trim();\n }\n self.params.buttons.forEach((button, buttonIndex) => {\n if (Array.isArray(button)) {\n button.forEach(b => {\n html += renderButton(b);\n });\n if (buttonIndex < self.params.buttons.length - 1 && self.params.dividers) {\n html += '
          ';\n }\n } else {\n html += renderButton(button);\n }\n });\n return html;\n }\n createToolbar() {\n const self = this;\n self.$el.prepend(`
          ${self.renderButtons()}
          `);\n }\n createKeyboardToolbar() {\n const self = this;\n self.$keyboardToolbarEl = $(`
          ${self.renderButtons()}
          `);\n }\n createPopover() {\n const self = this;\n self.popover = self.app.popover.create({\n content: `\n
          \n
          ${self.renderButtons()}
          \n
          \n `,\n closeByOutsideClick: false,\n backdrop: false\n });\n }\n openKeyboardToolbar() {\n const self = this;\n if (self.$keyboardToolbarEl.parent(self.app.$el).length) return;\n self.$el.trigger('texteditor:keyboardopen');\n self.emit('local::keyboardOpen textEditorKeyboardOpen', self);\n self.app.$el.append(self.$keyboardToolbarEl);\n }\n closeKeyboardToolbar() {\n const self = this;\n self.$keyboardToolbarEl.remove();\n self.$el.trigger('texteditor:keyboardclose');\n self.emit('local::keyboardClose textEditorKeyboardClose', self);\n }\n openPopover(targetX, targetY, targetWidth, targetHeight) {\n const self = this;\n if (!self.popover) return;\n Object.assign(self.popover.params, {\n targetX,\n targetY,\n targetWidth,\n targetHeight\n });\n clearTimeout(self.popoverTimeout);\n self.popoverTimeout = setTimeout(() => {\n if (!self.popover) return;\n if (self.popover.opened) {\n self.popover.resize();\n } else {\n self.$el.trigger('texteditor:popoveropen');\n self.emit('local::popoverOpen textEditorPopoverOpen', self);\n self.popover.open();\n }\n }, 400);\n }\n closePopover() {\n const self = this;\n clearTimeout(self.popoverTimeout);\n if (!self.popover || !self.popover.opened) return;\n self.popoverTimeout = setTimeout(() => {\n if (!self.popover) return;\n self.$el.trigger('texteditor:popoverclose');\n self.emit('local::popoverClose textEditorPopoverClose', self);\n self.popover.close();\n }, 400);\n }\n init() {\n const self = this;\n if (self.value) {\n self.$contentEl.html(self.value);\n } else {\n self.value = self.$contentEl.html();\n }\n if (self.params.placeholder && self.value === '') {\n self.insertPlaceholder();\n }\n if (self.params.mode === 'toolbar') {\n self.createToolbar();\n } else if (self.params.mode === 'popover') {\n self.createPopover();\n } else if (self.params.mode === 'keyboard-toolbar') {\n self.createKeyboardToolbar();\n }\n self.attachEvents();\n self.$el.trigger('texteditor:init');\n self.emit('local::init textEditorInit', self);\n return self;\n }\n destroy() {\n let self = this;\n self.$el.trigger('texteditor:beforedestroy');\n self.emit('local::beforeDestroy textEditorBeforeDestroy', self);\n self.detachEvents();\n if (self.params.mode === 'keyboard-toolbar' && self.$keyboardToolbarEl) {\n self.$keyboardToolbarEl.remove();\n }\n if (self.popover) {\n self.popover.close(false);\n self.popover.destroy();\n }\n delete self.$el[0].f7TextEditor;\n deleteProps(self);\n self = null;\n }\n}\nexport default TextEditor;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport TextEditor from './text-editor-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'textEditor',\n params: {\n textEditor: {\n el: null,\n mode: 'toolbar',\n // or 'popover'\n value: undefined,\n // will use html content\n customButtons: null,\n buttons: [['bold', 'italic', 'underline', 'strikeThrough'], ['orderedList', 'unorderedList'], ['link', 'image'], ['paragraph', 'h1', 'h2', 'h3'], ['alignLeft', 'alignCenter', 'alignRight', 'alignJustify'], ['subscript', 'superscript'], ['indent', 'outdent']],\n dividers: true,\n imageUrlText: 'Insert image URL',\n linkUrlText: 'Insert link URL',\n placeholder: null,\n clearFormattingOnPaste: true\n }\n },\n create() {\n const app = this;\n app.textEditor = extend(ConstructorMethods({\n defaultSelector: '.text-editor',\n constructor: TextEditor,\n app,\n domProp: 'f7TextEditor'\n }));\n },\n static: {\n TextEditor\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.text-editor-init').each(editorEl => {\n const dataset = $(editorEl).dataset();\n app.textEditor.create(extend({\n el: editorEl\n }, dataset || {}));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.text-editor-init').each(editorEl => {\n if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.text-editor-init').each(editorEl => {\n const dataset = $(editorEl).dataset();\n app.textEditor.create(extend({\n el: editorEl\n }, dataset || {}));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.text-editor-init').each(editorEl => {\n if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n });\n }\n },\n vnode: {\n 'text-editor-init': {\n insert(vnode) {\n const app = this;\n const editorEl = vnode.elm;\n const dataset = $(editorEl).dataset();\n app.textEditor.create(extend({\n el: editorEl\n }, dataset || {}));\n },\n destroy(vnode) {\n const editorEl = vnode.elm;\n if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n }\n }\n }\n};","import { bindMethods } from '../../shared/utils.js';\nconst Breadcrumbs = {};\nexport default {\n name: 'breadrumbs',\n create() {\n const app = this;\n bindMethods(app, {\n breadrumbs: Breadcrumbs\n });\n }\n};","/**\n * Framework7 8.3.2\n * Full featured mobile HTML framework for building iOS & Android apps\n * https://framework7.io/\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 27, 2024\n */\n\nimport $ from './shared/dom7.js';\nimport Framework7 from './components/app/app-class.js';\nimport * as utils from './shared/utils.js';\nimport { getSupport } from './shared/get-support.js';\nimport { getDevice } from './shared/get-device.js';\nimport DeviceModule from './modules/device/device.js';\nimport SupportModule from './modules/support/support.js';\nimport UtilsModule from './modules/utils/utils.js';\nimport ResizeModule from './modules/resize/resize.js';\nimport TouchModule from './modules/touch/touch.js';\nimport ClicksModule from './modules/clicks/clicks.js';\nimport RouterModule from './modules/router/router.js';\nimport HistoryModule from './modules/history/history.js';\nimport ServiceWorkerModule from './modules/service-worker/service-worker.js';\nimport StoreModule, { createStore } from './modules/store/store.js';\nimport Statusbar from './components/statusbar/statusbar.js';\nimport View from './components/view/view.js';\nimport Navbar from './components/navbar/navbar.js';\nimport Toolbar from './components/toolbar/toolbar.js';\nimport Subnavbar from './components/subnavbar/subnavbar.js';\nimport TouchRipple from './components/touch-ripple/touch-ripple.js';\nimport Modal from './components/modal/modal.js';\nimport Dialog from './components/dialog/dialog.js';\nimport Popup from './components/popup/popup.js';\nimport LoginScreen from './components/login-screen/login-screen.js';\nimport Popover from './components/popover/popover.js';\nimport Actions from './components/actions/actions.js';\nimport Sheet from './components/sheet/sheet.js';\nimport Toast from './components/toast/toast.js';\nimport Preloader from './components/preloader/preloader.js';\nimport Progressbar from './components/progressbar/progressbar.js';\nimport Sortable from './components/sortable/sortable.js';\nimport Swipeout from './components/swipeout/swipeout.js';\nimport Accordion from './components/accordion/accordion.js';\nimport ContactsList from './components/contacts-list/contacts-list.js';\nimport VirtualList from './components/virtual-list/virtual-list.js';\nimport ListIndex from './components/list-index/list-index.js';\nimport Timeline from './components/timeline/timeline.js';\nimport Tabs from './components/tabs/tabs.js';\nimport Panel from './components/panel/panel.js';\nimport Card from './components/card/card.js';\nimport Chip from './components/chip/chip.js';\nimport Form from './components/form/form.js';\nimport Input from './components/input/input.js';\nimport Checkbox from './components/checkbox/checkbox.js';\nimport Radio from './components/radio/radio.js';\nimport Toggle from './components/toggle/toggle.js';\nimport Range from './components/range/range.js';\nimport Stepper from './components/stepper/stepper.js';\nimport SmartSelect from './components/smart-select/smart-select.js';\nimport Grid from './components/grid/grid.js';\nimport Calendar from './components/calendar/calendar.js';\nimport Picker from './components/picker/picker.js';\nimport InfiniteScroll from './components/infinite-scroll/infinite-scroll.js';\nimport PullToRefresh from './components/pull-to-refresh/pull-to-refresh.js';\nimport DataTable from './components/data-table/data-table.js';\nimport Fab from './components/fab/fab.js';\nimport Searchbar from './components/searchbar/searchbar.js';\nimport Messages from './components/messages/messages.js';\nimport Messagebar from './components/messagebar/messagebar.js';\nimport Swiper from './components/swiper/swiper.js';\nimport PhotoBrowser from './components/photo-browser/photo-browser.js';\nimport Notification from './components/notification/notification.js';\nimport Autocomplete from './components/autocomplete/autocomplete.js';\nimport Tooltip from './components/tooltip/tooltip.js';\nimport Skeleton from './components/skeleton/skeleton.js';\nimport ColorPicker from './components/color-picker/color-picker.js';\nimport Treeview from './components/treeview/treeview.js';\nimport TextEditor from './components/text-editor/text-editor.js';\nimport Breadcrumbs from './components/breadcrumbs/breadcrumbs.js';\nimport Typography from './components/typography/typography.js';\nFramework7.use([DeviceModule, SupportModule, UtilsModule, ResizeModule, TouchModule, ClicksModule, RouterModule, HistoryModule, ServiceWorkerModule, StoreModule, Statusbar, View, Navbar, Toolbar, Subnavbar, TouchRipple, Modal, Dialog, Popup, LoginScreen, Popover, Actions, Sheet, Toast, Preloader, Progressbar, Sortable, Swipeout, Accordion, ContactsList, VirtualList, ListIndex, Timeline, Tabs, Panel, Card, Chip, Form, Input, Checkbox, Radio, Toggle, Range, Stepper, SmartSelect, Grid, Calendar, Picker, InfiniteScroll, PullToRefresh, DataTable, Fab, Searchbar, Messages, Messagebar, Swiper, PhotoBrowser, Notification, Autocomplete, Tooltip, Skeleton, ColorPicker, Treeview, TextEditor, Breadcrumbs, Typography]);\nexport { $ as Dom7, utils, getDevice, getSupport, createStore };\nexport default Framework7;\n","export default {\n name: 'contactsList'\n};","export default {\n name: 'timeline'\n};","export default {\n name: 'chip'\n};","export default {\n name: 'checkbox'\n};","export default {\n name: 'radio'\n};","export default {\n name: 'grid'\n};","export default {\n name: 'skeleton'\n};","export default {\n name: 'typography'\n};","/**\n * Framework7 8.3.2\n * Full featured mobile HTML framework for building iOS & Android apps\n * https://framework7.io/\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 27, 2024\n */\n\nimport $ from './shared/dom7.js';\nimport Framework7 from './components/app/app-class.js';\nimport * as utils from './shared/utils.js';\nimport { getSupport } from './shared/get-support.js';\nimport { getDevice } from './shared/get-device.js';\nimport DeviceModule from './modules/device/device.js';\nimport SupportModule from './modules/support/support.js';\nimport UtilsModule from './modules/utils/utils.js';\nimport ResizeModule from './modules/resize/resize.js';\nimport TouchModule from './modules/touch/touch.js';\nimport ClicksModule from './modules/clicks/clicks.js';\nimport RouterModule from './modules/router/router.js';\nimport HistoryModule from './modules/history/history.js';\nimport ServiceWorkerModule from './modules/service-worker/service-worker.js';\nimport StoreModule, { createStore } from './modules/store/store.js';\nimport Statusbar from './components/statusbar/statusbar.js';\nimport View from './components/view/view.js';\nimport Navbar from './components/navbar/navbar.js';\nimport Toolbar from './components/toolbar/toolbar.js';\nimport Subnavbar from './components/subnavbar/subnavbar.js';\nimport TouchRipple from './components/touch-ripple/touch-ripple.js';\nimport Modal from './components/modal/modal.js';\nFramework7.use([DeviceModule, SupportModule, UtilsModule, ResizeModule, TouchModule, ClicksModule, RouterModule, HistoryModule, ServiceWorkerModule, StoreModule, Statusbar, View, Navbar, Toolbar, Subnavbar, TouchRipple, Modal]);\nexport { $ as Dom7, utils, getDevice, getSupport, createStore };\nexport default Framework7;\n","export function noUndefinedProps(obj) {\n const o = {};\n Object.keys(obj).forEach(key => {\n if (typeof obj[key] !== 'undefined') o[key] = obj[key];\n });\n return o;\n}\nexport function isStringProp(val) {\n return typeof val === 'string' && val !== '';\n}\nexport function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n}\nexport function now() {\n return Date.now();\n}\nexport function extend() {\n let deep = true;\n let to;\n let from;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[0] === 'boolean') {\n [deep, to] = args;\n args.splice(0, 2);\n from = args;\n } else {\n [to] = args;\n args.splice(0, 1);\n from = args;\n }\n for (let i = 0; i < from.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (!deep) {\n to[nextKey] = nextSource[nextKey];\n } else if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n extend(to[nextKey], nextSource[nextKey]);\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nexport function flattenArray() {\n const arr = [];\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n args.forEach(arg => {\n if (Array.isArray(arg)) arr.push(...flattenArray(...arg));else arr.push(arg);\n });\n return arr;\n}\nexport function classNames() {\n const classes = [];\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n args.forEach(arg => {\n if (typeof arg === 'object' && arg.constructor === Object) {\n Object.keys(arg).forEach(key => {\n if (arg[key]) classes.push(key);\n });\n } else if (arg) classes.push(arg);\n });\n const uniqueClasses = [];\n classes.forEach(c => {\n if (uniqueClasses.indexOf(c) < 0) uniqueClasses.push(c);\n });\n return uniqueClasses.join(' ');\n}\nexport function getSlots(props) {\n if (props === void 0) {\n props = {};\n }\n const slots = {};\n if (!props) return slots;\n const children = props.children;\n if (!children || children.length === 0) {\n return slots;\n }\n function addChildToSlot(name, child) {\n if (!slots[name]) slots[name] = [];\n slots[name].push(child);\n }\n if (Array.isArray(children)) {\n children.forEach(child => {\n if (!child) return;\n const slotName = child.props && child.props.slot || 'default';\n addChildToSlot(slotName, child);\n });\n } else {\n let slotName = 'default';\n if (children.props && children.props.slot) slotName = children.props.slot;\n addChildToSlot(slotName, children);\n }\n return slots;\n}\nexport function emit(props, events) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {\n args[_key4 - 2] = arguments[_key4];\n }\n if (!events || !events.trim().length || typeof events !== 'string') return;\n events.trim().split(' ').forEach(event => {\n let eventName = (event || '').trim();\n if (!eventName) return;\n eventName = eventName.charAt(0).toUpperCase() + eventName.slice(1);\n const propName = `on${eventName}`;\n if (props[propName]) props[propName](...args);\n });\n}\nexport function getExtraAttrs(props) {\n if (props === void 0) {\n props = {};\n }\n const extraAttrs = {};\n Object.keys(props).forEach(key => {\n if (key.indexOf('data-') === 0 || key.indexOf('aria-') === 0 || key === 'role') {\n extraAttrs[key] = props[key];\n }\n });\n return extraAttrs;\n}\nlet routerIdCounter = 0;\nlet routerComponentIdCounter = 0;\nexport function unsetRouterIds() {\n routerIdCounter = 0;\n routerComponentIdCounter = 0;\n}\nexport function getRouterId() {\n routerIdCounter += 1;\n return `${now()}_${routerIdCounter}`;\n}\nexport function getComponentId() {\n routerComponentIdCounter += 1;\n return `${now()}_${routerComponentIdCounter}`;\n}","/* eslint-disable import/no-mutable-exports */\nimport Framework7 from 'framework7/lite';\nimport { extend, unsetRouterIds } from './utils.js';\nlet f7;\nlet f7events;\nconst theme = {};\nconst f7routers = {\n views: [],\n tabs: [],\n modals: null\n};\nconst setTheme = () => {\n if (!f7) return;\n theme.ios = f7.theme === 'ios';\n theme.md = f7.theme === 'md';\n};\nconst cleanup = () => {\n unsetRouterIds();\n delete theme.ios;\n delete theme.md;\n f7routers.views = [];\n f7routers.tabs = [];\n f7routers.modals = null;\n};\nconst f7initEvents = () => {\n f7events = new Framework7.Events();\n};\nconst f7init = function (rootEl, params, init) {\n if (params === void 0) {\n params = {};\n }\n if (init === void 0) {\n init = true;\n }\n const f7Params = extend({}, params, {\n el: rootEl,\n init\n });\n if (typeof params.store !== 'undefined') f7Params.store = params.store;\n if (!f7Params.routes) f7Params.routes = [];\n if (f7Params.userAgent && (f7Params.theme === 'auto' || !f7Params.theme)) {\n const device = Framework7.getDevice({\n userAgent: f7Params.userAgent\n }, true);\n theme.ios = !!device.ios;\n theme.md = !theme.ios;\n }\n // eslint-disable-next-line\n if (f7 && typeof window !== 'undefined') return;\n // eslint-disable-next-line\n if (typeof window === 'undefined') cleanup();\n const instance = new Framework7(f7Params);\n f7 = instance;\n setTheme();\n if (instance.initialized) {\n f7 = instance;\n f7events.emit('ready', f7);\n } else {\n instance.on('init', () => {\n f7 = instance;\n f7events.emit('ready', f7);\n });\n }\n};\nconst f7ready = callback => {\n if (!callback) return;\n if (f7 && f7.initialized) callback(f7);else {\n f7events.once('ready', callback);\n }\n};\nexport { f7, theme, f7ready, f7events, f7init, f7routers, f7initEvents, setTheme };","import { isStringProp } from './utils.js';\nexport function colorClasses(props) {\n const {\n color,\n textColor,\n bgColor,\n borderColor,\n rippleColor,\n dark\n } = props;\n return {\n dark,\n [`color-${color}`]: color,\n [`text-color-${textColor}`]: textColor,\n [`bg-color-${bgColor}`]: bgColor,\n [`border-color-${borderColor}`]: borderColor,\n [`ripple-color-${rippleColor}`]: rippleColor\n };\n}\nexport function routerAttrs(props) {\n const {\n force,\n reloadCurrent,\n reloadPrevious,\n reloadAll,\n reloadDetail,\n animate,\n ignoreCache,\n routeTabId,\n view,\n transition,\n openIn\n } = props;\n let dataAnimate;\n if ('animate' in props && typeof animate !== 'undefined') {\n dataAnimate = animate.toString();\n }\n let dataReloadDetail;\n if ('reloadDetail' in props && typeof reloadDetail !== 'undefined') {\n dataReloadDetail = reloadDetail.toString();\n }\n return {\n 'data-force': force || undefined,\n 'data-reload-current': reloadCurrent || undefined,\n 'data-reload-all': reloadAll || undefined,\n 'data-reload-previous': reloadPrevious || undefined,\n 'data-reload-detail': dataReloadDetail,\n 'data-animate': dataAnimate,\n 'data-ignore-cache': ignoreCache || undefined,\n 'data-route-tab-id': routeTabId || undefined,\n 'data-view': isStringProp(view) ? view : undefined,\n 'data-transition': isStringProp(transition) ? transition : undefined,\n 'data-open-in': isStringProp(openIn) ? openIn : undefined\n };\n}\nexport function routerClasses(props) {\n const {\n back,\n linkBack,\n external,\n preventRouter\n } = props;\n return {\n back: back || linkBack,\n external,\n 'prevent-router': preventRouter\n };\n}\nexport function actionsAttrs(props) {\n const {\n searchbarEnable,\n searchbarDisable,\n searchbarClear,\n searchbarToggle,\n panelOpen,\n panelClose,\n panelToggle,\n popupOpen,\n popupClose,\n actionsOpen,\n actionsClose,\n popoverOpen,\n popoverClose,\n loginScreenOpen,\n loginScreenClose,\n sheetOpen,\n sheetClose,\n sortableEnable,\n sortableDisable,\n sortableToggle,\n cardOpen,\n cardClose\n } = props;\n return {\n 'data-searchbar': isStringProp(searchbarEnable) && searchbarEnable || isStringProp(searchbarDisable) && searchbarDisable || isStringProp(searchbarClear) && searchbarClear || isStringProp(searchbarToggle) && searchbarToggle || undefined,\n 'data-panel': isStringProp(panelOpen) && panelOpen || isStringProp(panelClose) && panelClose || isStringProp(panelToggle) && panelToggle || undefined,\n 'data-popup': isStringProp(popupOpen) && popupOpen || isStringProp(popupClose) && popupClose || undefined,\n 'data-actions': isStringProp(actionsOpen) && actionsOpen || isStringProp(actionsClose) && actionsClose || undefined,\n 'data-popover': isStringProp(popoverOpen) && popoverOpen || isStringProp(popoverClose) && popoverClose || undefined,\n 'data-sheet': isStringProp(sheetOpen) && sheetOpen || isStringProp(sheetClose) && sheetClose || undefined,\n 'data-login-screen': isStringProp(loginScreenOpen) && loginScreenOpen || isStringProp(loginScreenClose) && loginScreenClose || undefined,\n 'data-sortable': isStringProp(sortableEnable) && sortableEnable || isStringProp(sortableDisable) && sortableDisable || isStringProp(sortableToggle) && sortableToggle || undefined,\n 'data-card': isStringProp(cardOpen) && cardOpen || isStringProp(cardClose) && cardClose || undefined\n };\n}\nexport function actionsClasses(props) {\n const {\n searchbarEnable,\n searchbarDisable,\n searchbarClear,\n searchbarToggle,\n panelOpen,\n panelClose,\n panelToggle,\n popupOpen,\n popupClose,\n actionsClose,\n actionsOpen,\n popoverOpen,\n popoverClose,\n loginScreenOpen,\n loginScreenClose,\n sheetOpen,\n sheetClose,\n sortableEnable,\n sortableDisable,\n sortableToggle,\n cardOpen,\n cardPreventOpen,\n cardClose\n } = props;\n return {\n 'searchbar-enable': searchbarEnable || searchbarEnable === '',\n 'searchbar-disable': searchbarDisable || searchbarDisable === '',\n 'searchbar-clear': searchbarClear || searchbarClear === '',\n 'searchbar-toggle': searchbarToggle || searchbarToggle === '',\n 'panel-close': panelClose || panelClose === '',\n 'panel-open': panelOpen || panelOpen === '',\n 'panel-toggle': panelToggle || panelToggle === '',\n 'popup-close': popupClose || popupClose === '',\n 'popup-open': popupOpen || popupOpen === '',\n 'actions-close': actionsClose || actionsClose === '',\n 'actions-open': actionsOpen || actionsOpen === '',\n 'popover-close': popoverClose || popoverClose === '',\n 'popover-open': popoverOpen || popoverOpen === '',\n 'sheet-close': sheetClose || sheetClose === '',\n 'sheet-open': sheetOpen || sheetOpen === '',\n 'login-screen-close': loginScreenClose || loginScreenClose === '',\n 'login-screen-open': loginScreenOpen || loginScreenOpen === '',\n 'sortable-enable': sortableEnable || sortableEnable === '',\n 'sortable-disable': sortableDisable || sortableDisable === '',\n 'sortable-toggle': sortableToggle || sortableToggle === '',\n 'card-close': cardClose || cardClose === '',\n 'card-open': cardOpen || cardOpen === '',\n 'card-prevent-open': cardPreventOpen || cardPreventOpen === ''\n };\n}","export const modalStateClasses = function (_temp) {\n let {\n isOpened,\n isClosing\n } = _temp === void 0 ? {} : _temp;\n return {\n 'modal-in': isOpened.current && !isClosing.current,\n 'modal-out': isClosing.current\n };\n};","import { useEffect, useLayoutEffect } from 'react';\nfunction useIsomorphicLayoutEffect(callback, deps) {\n // eslint-disable-next-line\n if (typeof window === 'undefined') return useEffect(callback, deps);\n return useLayoutEffect(callback, deps);\n}\nexport { useIsomorphicLayoutEffect };","import { useRef } from 'react';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js';\nexport const watchProp = (value, callback) => {\n const valueRef = useRef(value);\n useIsomorphicLayoutEffect(() => {\n if (value !== valueRef.current && callback) {\n callback(value, valueRef.current);\n }\n valueRef.current = value;\n }, [value]);\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useImperativeHandle, useRef } from 'react';\nimport { f7, f7ready } from '../shared/f7.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { modalStateClasses } from '../shared/modal-state-classes.js';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, emit, getExtraAttrs } from '../shared/utils.js';\nimport { watchProp } from '../shared/watch-prop.js';\n\n\n\nconst Popup = /*#__PURE__*/forwardRef((props, ref) => {\n const f7Popup = useRef(null);\n const {\n className,\n id,\n style,\n children,\n tabletFullscreen,\n push,\n opened,\n closeByBackdropClick,\n backdrop,\n backdropEl,\n animate,\n closeOnEscape,\n swipeToClose = false,\n swipeHandler,\n containerEl\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const isOpened = useRef(opened);\n const isClosing = useRef(false);\n const onSwipeStart = instance => {\n emit(props, 'popupSwipeStart', instance);\n };\n const onSwipeMove = instance => {\n emit(props, 'popupSwipeMove', instance);\n };\n const onSwipeEnd = instance => {\n emit(props, 'popupSwipeEnd', instance);\n };\n const onSwipeClose = instance => {\n emit(props, 'popupSwipeClose', instance);\n };\n const onOpen = instance => {\n isOpened.current = true;\n isClosing.current = false;\n emit(props, 'popupOpen', instance);\n };\n const onOpened = instance => {\n emit(props, 'popupOpened', instance);\n };\n const onClose = instance => {\n isOpened.current = false;\n isClosing.current = true;\n emit(props, 'popupClose', instance);\n };\n const onClosed = instance => {\n isClosing.current = false;\n emit(props, 'popupClosed', instance);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7Popup: () => f7Popup.current\n }));\n watchProp(opened, value => {\n if (!f7Popup.current) return;\n if (value) {\n f7Popup.current.open();\n } else {\n f7Popup.current.close();\n }\n });\n const modalEvents = method => {\n if (!f7Popup.current) return;\n f7Popup.current[method]('swipeStart', onSwipeStart);\n f7Popup.current[method]('swipeMove', onSwipeMove);\n f7Popup.current[method]('swipeEnd', onSwipeEnd);\n f7Popup.current[method]('swipeClose', onSwipeClose);\n f7Popup.current[method]('open', onOpen);\n f7Popup.current[method]('opened', onOpened);\n f7Popup.current[method]('close', onClose);\n f7Popup.current[method]('closed', onClosed);\n };\n const onMount = () => {\n if (!elRef.current) return;\n const popupParams = {\n el: elRef.current\n };\n if ('closeByBackdropClick' in props) popupParams.closeByBackdropClick = closeByBackdropClick;\n if ('closeOnEscape' in props) popupParams.closeOnEscape = closeOnEscape;\n if ('animate' in props) popupParams.animate = animate;\n if ('backdrop' in props) popupParams.backdrop = backdrop;\n if ('backdropEl' in props) popupParams.backdropEl = backdropEl;\n if ('swipeToClose' in props) popupParams.swipeToClose = swipeToClose;\n if ('swipeHandler' in props) popupParams.swipeHandler = swipeHandler;\n if ('containerEl' in props) popupParams.containerEl = containerEl;\n f7ready(() => {\n f7Popup.current = f7.popup.create(popupParams);\n modalEvents('on');\n if (opened) {\n f7Popup.current.open(false, true);\n }\n });\n };\n const onDestroy = () => {\n if (f7Popup.current) {\n f7Popup.current.destroy();\n }\n f7Popup.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n modalEvents('on');\n return () => {\n modalEvents('off');\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n const classes = classNames(className, 'popup', {\n 'popup-tablet-fullscreen': tabletFullscreen,\n 'popup-push': push\n }, modalStateClasses({\n isOpened,\n isClosing\n }), colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children);\n});\nPopup.displayName = 'f7-popup';\nexport default Popup;","import { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js';\nimport { f7, f7ready } from './f7.js';\nimport { emit } from './utils.js';\nexport const useTab = (elRef, props) => {\n const onTabShow = el => {\n if (elRef.current !== el) return;\n emit(props, 'tabShow', el);\n };\n const onTabHide = el => {\n if (elRef.current !== el) return;\n emit(props, 'tabHide', el);\n };\n const attachEvents = () => {\n if (!elRef.current) return;\n f7ready(() => {\n f7.on('tabShow', onTabShow);\n f7.on('tabHide', onTabHide);\n });\n };\n const detachEvents = () => {\n if (!f7) return;\n f7.off('tabShow', onTabShow);\n f7.off('tabHide', onTabHide);\n };\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n return detachEvents;\n });\n};","import React, { lazy, Suspense } from 'react';\nexport const useAsyncComponent = (component, props, key) => {\n const Component = /*#__PURE__*/lazy(component);\n return /*#__PURE__*/React.createElement(Suspense, {\n fallback: null,\n key: key\n }, /*#__PURE__*/React.createElement(Component, props));\n};","import { getComponentId } from './utils.js';\nexport const getRouterInitialComponent = (router, initialComponent) => {\n let initialComponentData;\n const {\n initialUrl\n } = router.getInitialUrl();\n const initialRoute = router.findMatchingRoute(initialUrl);\n let routeProps = {};\n if (initialRoute && initialRoute.route && initialRoute.route.options) {\n routeProps = initialRoute.route.options.props;\n }\n const isMasterRoute = route => {\n if (route.master === true) return true;\n if (typeof route.master === 'function') return route.master(router.app);\n return false;\n };\n if (initialRoute && initialRoute.route && (initialRoute.route.component || initialRoute.route.asyncComponent) && !isMasterRoute(initialRoute.route)) {\n initialComponentData = {\n component: initialRoute.route.component || initialRoute.route.asyncComponent,\n initialComponent,\n id: getComponentId(),\n isAsync: !!initialRoute.route.asyncComponent,\n props: {\n f7route: initialRoute,\n f7router: router,\n ...routeProps,\n ...initialRoute.params\n }\n };\n }\n return {\n initialPage: initialComponentData,\n initialRoute\n };\n};","import React from 'react';\nconst RouterContext = /*#__PURE__*/React.createContext({\n route: null,\n router: null\n});\nexport { RouterContext };","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/* eslint-disable no-nested-ternary */\nimport React, { forwardRef, useRef, useImperativeHandle, useState } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, noUndefinedProps, emit, getRouterId } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7routers, f7, f7events } from '../shared/f7.js';\nimport { useTab } from '../shared/use-tab.js';\nimport { useAsyncComponent } from '../shared/use-async-component.js';\nimport { getRouterInitialComponent } from '../shared/get-router-initial-component.js';\nimport { RouterContext } from '../shared/router-context.js';\n\nconst View = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n init = true,\n main,\n tab,\n tabActive,\n url,\n initRouterOnTabShow,\n browserHistoryInitialMatch = true\n } = props;\n const childrenArray = React.Children.toArray(children);\n const initialPageComponent = childrenArray.filter(c => c.props && c.props.initialPage)[0];\n const restChildren = childrenArray.filter(c => !c.props || !c.props.initialPage);\n const shouldInitRouter = !(initRouterOnTabShow && tab && !tabActive);\n const extraAttrs = getExtraAttrs(props);\n const f7View = useRef(null);\n const elRef = useRef(null);\n const routerData = useRef(null);\n let initialPage;\n let initialRoute;\n const onViewInit = view => {\n emit(props, 'viewInit', view);\n if (!init) {\n routerData.current.instance = view;\n f7View.current = routerData.current.instance;\n }\n };\n if (f7 && !f7View.current && init) {\n const routerId = getRouterId();\n f7View.current = f7.views.create(elRef.current, {\n routerId,\n init: false,\n ...noUndefinedProps(props),\n browserHistoryInitialMatch,\n on: {\n init: onViewInit\n }\n });\n routerData.current = {\n routerId,\n instance: f7View.current\n };\n f7routers.views.push(routerData.current);\n if (shouldInitRouter && f7View.current && f7View.current.router && (url || main)) {\n const initialData = getRouterInitialComponent(f7View.current.router, initialPageComponent);\n initialPage = initialData.initialPage;\n initialRoute = initialData.initialRoute;\n if (initialRoute && initialRoute.route && initialRoute.route.masterRoute) {\n initialPage = undefined;\n initialRoute = undefined;\n }\n }\n }\n const [pages, setPages] = useState(initialPage ? [initialPage] : []);\n const onResize = (view, width) => {\n emit(props, 'viewResize', width);\n };\n const onSwipeBackMove = data => {\n const swipeBackData = data;\n emit(props, 'swipeBackMove', swipeBackData);\n };\n const onSwipeBackBeforeChange = data => {\n const swipeBackData = data;\n emit(props, 'swipeBackBeforeChange', swipeBackData);\n };\n const onSwipeBackAfterChange = data => {\n const swipeBackData = data;\n emit(props, 'swipeBackAfterChange', swipeBackData);\n };\n const onSwipeBackBeforeReset = data => {\n const swipeBackData = data;\n emit(props, 'swipeBackBeforeReset', swipeBackData);\n };\n const onSwipeBackAfterReset = data => {\n const swipeBackData = data;\n emit(props, 'swipeBackAfterReset', swipeBackData);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7View: () => f7View.current\n }));\n const onMount = () => {\n f7ready(() => {\n if (f7View.current) {\n routerData.current.el = elRef.current;\n routerData.current.pages = pages;\n routerData.current.setPages = newPages => {\n setPages([...newPages]);\n };\n if (initialPage && initialPage.isAsync && !initialPage.initialComponent) {\n initialPage.component().then(() => {\n setTimeout(() => {\n f7View.current.init(elRef.current);\n if (initialPage) {\n initialPage.el = f7View.current.router.currentPageEl;\n if (initialRoute && initialRoute.route && initialRoute.route.keepAlive) {\n initialRoute.route.keepAliveData = {\n pageEl: initialPage.el\n };\n }\n }\n }, 100);\n });\n } else {\n f7View.current.init(elRef.current);\n if (initialPage) {\n initialPage.el = f7View.current.router.currentPageEl;\n if (initialRoute && initialRoute.route && initialRoute.route.keepAlive) {\n initialRoute.route.keepAliveData = {\n pageEl: initialPage.el\n };\n }\n }\n }\n } else {\n const routerId = getRouterId();\n routerData.current = {\n el: elRef.current,\n routerId,\n pages,\n instance: f7View.current,\n setPages(newPages) {\n setPages([...newPages]);\n }\n };\n f7routers.views.push(routerData.current);\n routerData.current.instance = f7.views.create(elRef.current, {\n routerId,\n ...noUndefinedProps(props),\n browserHistoryInitialMatch,\n on: {\n init: onViewInit\n }\n });\n f7View.current = routerData.current.instance;\n }\n if (!init) return;\n f7View.current.on('resize', onResize);\n f7View.current.on('swipebackMove', onSwipeBackMove);\n f7View.current.on('swipebackBeforeChange', onSwipeBackBeforeChange);\n f7View.current.on('swipebackAfterChange', onSwipeBackAfterChange);\n f7View.current.on('swipebackBeforeReset', onSwipeBackBeforeReset);\n f7View.current.on('swipebackAfterReset', onSwipeBackAfterReset);\n });\n };\n const onDestroy = () => {\n if (f7View.current) {\n f7View.current.off('resize', onResize);\n f7View.current.off('swipebackMove', onSwipeBackMove);\n f7View.current.off('swipebackBeforeChange', onSwipeBackBeforeChange);\n f7View.current.off('swipebackAfterChange', onSwipeBackAfterChange);\n f7View.current.off('swipebackBeforeReset', onSwipeBackBeforeReset);\n f7View.current.off('swipebackAfterReset', onSwipeBackAfterReset);\n if (f7View.current.destroy) f7View.current.destroy();\n f7View.current = null;\n }\n f7routers.views.splice(f7routers.views.indexOf(routerData.current), 1);\n routerData.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n useIsomorphicLayoutEffect(() => {\n if (routerData.current && f7) {\n f7events.emit('viewRouterDidUpdate', routerData.current);\n }\n });\n useTab(elRef, props);\n const classes = classNames(className, 'view', {\n 'view-main': main,\n 'tab-active': tabActive,\n tab\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), restChildren, pages.map(_ref => {\n let {\n component: PageComponent,\n id: pageId,\n props: pageProps,\n isAsync,\n initialComponent\n } = _ref;\n return /*#__PURE__*/React.createElement(RouterContext.Provider, {\n key: pageId,\n value: {\n router: pageProps.f7router,\n route: pageProps.f7route\n }\n }, initialComponent ? /*#__PURE__*/React.cloneElement(initialComponent, {\n ...pageProps\n }) : isAsync ? useAsyncComponent(PageComponent, pageProps) : /*#__PURE__*/React.createElement(PageComponent, pageProps));\n }));\n});\nView.displayName = 'f7-view';\nexport default View;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { watchProp } from '../shared/watch-prop.js';\nimport { modalStateClasses } from '../shared/modal-state-classes.js';\n\n\nconst LoginScreen = /*#__PURE__*/forwardRef((props, ref) => {\n const f7LoginScreen = useRef(null);\n const {\n className,\n id,\n style,\n children,\n opened,\n animate,\n containerEl\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const isOpened = useRef(opened);\n const isClosing = useRef(false);\n const elRef = useRef(null);\n const onOpen = instance => {\n isOpened.current = true;\n isClosing.current = false;\n emit(props, 'loginScreenOpen', instance);\n };\n const onOpened = instance => {\n emit(props, 'loginScreenOpened', instance);\n };\n const onClose = instance => {\n isOpened.current = false;\n isClosing.current = true;\n emit(props, 'loginScreenClose', instance);\n };\n const onClosed = instance => {\n isClosing.current = false;\n emit(props, 'loginScreenClosed', instance);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7LoginScreen: () => f7LoginScreen.current\n }));\n\n // watch opened changes\n watchProp(opened, value => {\n if (!f7LoginScreen.current) return;\n if (value) {\n f7LoginScreen.current.open();\n } else {\n f7LoginScreen.current.close();\n }\n });\n const modalEvents = method => {\n if (!f7LoginScreen.current) return;\n f7LoginScreen.current[method]('open', onOpen);\n f7LoginScreen.current[method]('opened', onOpened);\n f7LoginScreen.current[method]('close', onClose);\n f7LoginScreen.current[method]('closed', onClosed);\n };\n const onMount = () => {\n if (!elRef.current) return;\n f7ready(() => {\n const loginScreenParams = {\n el: elRef.current\n };\n if ('animate' in props) loginScreenParams.animate = animate;\n if ('containerEl' in props) loginScreenParams.containerEl = containerEl;\n f7LoginScreen.current = f7.loginScreen.create(loginScreenParams);\n modalEvents('on');\n if (opened) {\n f7LoginScreen.current.open(false);\n }\n });\n };\n const onDestroy = () => {\n if (f7LoginScreen.current) {\n f7LoginScreen.current.destroy();\n }\n f7LoginScreen.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n modalEvents('on');\n return () => {\n modalEvents('off');\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n const classes = classNames(className, 'login-screen', modalStateClasses({\n isOpened,\n isClosing\n }), colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children);\n});\nLoginScreen.displayName = 'f7-login-screen';\nexport default LoginScreen;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit, getSlots } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { watchProp } from '../shared/watch-prop.js';\nimport { modalStateClasses } from '../shared/modal-state-classes.js';\n\n\n\nconst Sheet = /*#__PURE__*/forwardRef((props, ref) => {\n const f7Sheet = useRef(null);\n const {\n className,\n id,\n style,\n top,\n bottom,\n position,\n push,\n opened,\n animate,\n backdrop,\n backdropEl,\n closeByBackdropClick,\n closeByOutsideClick,\n closeOnEscape,\n swipeToClose,\n swipeToStep,\n swipeHandler,\n containerEl,\n breakpoints,\n backdropBreakpoint,\n pushBreakpoint\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const isOpened = useRef(opened);\n const isClosing = useRef(false);\n const onBreakpoint = (instance, breakpoint) => {\n emit(props, 'sheetBreakpoint', instance, breakpoint);\n };\n const onStepProgress = (instance, progress) => {\n emit(props, 'sheetStepProgress', instance, progress);\n };\n const onStepOpen = instance => {\n emit(props, 'sheetStepOpen', instance);\n };\n const onStepClose = instance => {\n emit(props, 'sheetStepClose', instance);\n };\n const onOpen = instance => {\n isOpened.current = true;\n isClosing.current = false;\n emit(props, 'sheetOpen', instance);\n };\n const onOpened = instance => {\n emit(props, 'sheetOpened', instance);\n };\n const onClose = instance => {\n isOpened.current = false;\n isClosing.current = true;\n emit(props, 'sheetClose', instance);\n };\n const onClosed = instance => {\n isClosing.current = false;\n emit(props, 'sheetClosed', instance);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7Sheet: () => f7Sheet.current\n }));\n const modalEvents = method => {\n if (!f7Sheet.current) return;\n f7Sheet.current[method]('open', onOpen);\n f7Sheet.current[method]('opened', onOpened);\n f7Sheet.current[method]('close', onClose);\n f7Sheet.current[method]('closed', onClosed);\n f7Sheet.current[method]('stepOpen', onStepOpen);\n f7Sheet.current[method]('stepClose', onStepClose);\n f7Sheet.current[method]('stepProgress', onStepProgress);\n f7Sheet.current[method]('breakpoint', onBreakpoint);\n };\n const onMount = () => {\n if (!elRef.current) return;\n const sheetParams = {\n el: elRef.current,\n breakpoints,\n backdropBreakpoint,\n pushBreakpoint\n };\n if ('animate' in props && typeof animate !== 'undefined') sheetParams.animate = animate;\n if ('backdrop' in props && typeof backdrop !== 'undefined') sheetParams.backdrop = backdrop;\n if ('backdropEl' in props) sheetParams.backdropEl = backdropEl;\n if ('closeByBackdropClick' in props) sheetParams.closeByBackdropClick = closeByBackdropClick;\n if ('closeByOutsideClick' in props) sheetParams.closeByOutsideClick = closeByOutsideClick;\n if ('closeOnEscape' in props) sheetParams.closeOnEscape = closeOnEscape;\n if ('swipeToClose' in props) sheetParams.swipeToClose = swipeToClose;\n if ('swipeToStep' in props) sheetParams.swipeToStep = swipeToStep;\n if ('swipeHandler' in props) sheetParams.swipeHandler = swipeHandler;\n if ('containerEl' in props) sheetParams.containerEl = containerEl;\n if ('breakpoints' in props) sheetParams.breakpoints = breakpoints;\n if ('backdropBreakpoint' in props) sheetParams.backdropBreakpoint = backdropBreakpoint;\n if ('pushBreakpoint' in props) sheetParams.pushBreakpoint = pushBreakpoint;\n f7ready(() => {\n f7Sheet.current = f7.sheet.create(sheetParams);\n modalEvents('on');\n if (opened) {\n f7Sheet.current.open(false);\n }\n });\n };\n const onDestroy = () => {\n if (f7Sheet.current) {\n f7Sheet.current.destroy();\n }\n f7Sheet.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n modalEvents('on');\n return () => {\n modalEvents('off');\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n watchProp(opened, value => {\n if (!f7Sheet.current) return;\n if (value) {\n f7Sheet.current.open();\n } else {\n f7Sheet.current.close();\n }\n });\n const slots = getSlots(props);\n const fixedList = [];\n const staticList = [];\n const fixedTags = 'navbar toolbar tabbar subnavbar searchbar messagebar fab list-index panel'.split(' ').map(tagName => `f7-${tagName}`);\n const slotsDefault = slots.default;\n if (slotsDefault && slotsDefault.length) {\n slotsDefault.forEach(child => {\n if (typeof child === 'undefined') return;\n let isFixedTag = false;\n const tag = child.type && (child.type.displayName || child.type.name);\n if (!tag) {\n staticList.push(child);\n return;\n }\n if (fixedTags.indexOf(tag) >= 0) {\n isFixedTag = true;\n }\n if (isFixedTag) fixedList.push(child);else staticList.push(child);\n });\n }\n const innerEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"sheet-modal-inner\"\n }, staticList, slots.static);\n let positionComputed = 'bottom';\n if (position) positionComputed = position;else if (top) positionComputed = 'top';else if (bottom) positionComputed = 'bottom';\n const classes = classNames(className, 'sheet-modal', `sheet-modal-${positionComputed}`, {\n 'sheet-modal-push': push\n }, modalStateClasses({\n isOpened,\n isClosing\n }), colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), fixedList, slots.fixed, innerEl);\n});\nSheet.displayName = 'f7-sheet';\nexport default Sheet;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { watchProp } from '../shared/watch-prop.js';\nimport { modalStateClasses } from '../shared/modal-state-classes.js';\n\n\n\nconst Popover = /*#__PURE__*/forwardRef((props, ref) => {\n const f7Popover = useRef(null);\n const {\n className,\n id,\n style,\n children,\n opened,\n animate,\n targetEl,\n arrow,\n backdrop,\n backdropEl,\n closeByBackdropClick,\n closeByOutsideClick,\n closeOnEscape,\n containerEl,\n verticalPosition\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const isOpened = useRef(opened);\n const isClosing = useRef(false);\n const onOpen = instance => {\n isOpened.current = true;\n isClosing.current = false;\n emit(props, 'popoverOpen', instance);\n };\n const onOpened = instance => {\n emit(props, 'popoverOpened', instance);\n };\n const onClose = instance => {\n isOpened.current = false;\n isClosing.current = true;\n emit(props, 'popoverClose', instance);\n };\n const onClosed = instance => {\n isClosing.current = false;\n emit(props, 'popoverClosed', instance);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7Popover: () => f7Popover.current\n }));\n watchProp(opened, value => {\n if (!f7Popover.current) return;\n if (value) {\n f7Popover.current.open();\n } else {\n f7Popover.current.close();\n }\n });\n const modalEvents = method => {\n if (!f7Popover.current) return;\n f7Popover.current[method]('open', onOpen);\n f7Popover.current[method]('opened', onOpened);\n f7Popover.current[method]('close', onClose);\n f7Popover.current[method]('closed', onClosed);\n };\n const onMount = () => {\n if (!elRef.current) return;\n const popoverParams = {\n el: elRef.current\n };\n if (targetEl) popoverParams.targetEl = targetEl;\n if ('closeByBackdropClick' in props) popoverParams.closeByBackdropClick = closeByBackdropClick;\n if ('closeByOutsideClick' in props) popoverParams.closeByOutsideClick = closeByOutsideClick;\n if ('closeOnEscape' in props) popoverParams.closeOnEscape = closeOnEscape;\n if ('arrow' in props) popoverParams.arrow = arrow;\n if ('backdrop' in props) popoverParams.backdrop = backdrop;\n if ('backdropEl' in props) popoverParams.backdropEl = backdropEl;\n if ('animate' in props) popoverParams.animate = animate;\n if ('containerEl' in props) popoverParams.containerEl = containerEl;\n if ('verticalPosition' in props) popoverParams.verticalPosition = verticalPosition;\n f7ready(() => {\n f7Popover.current = f7.popover.create(popoverParams);\n modalEvents('on');\n if (opened && targetEl) {\n f7Popover.current.open(targetEl, false);\n }\n });\n };\n const onDestroy = () => {\n if (f7Popover.current) {\n f7Popover.current.destroy();\n }\n f7Popover.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n modalEvents('on');\n return () => {\n modalEvents('off');\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n const classes = classNames(className, 'popover', modalStateClasses({\n isOpened,\n isClosing\n }), colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), arrow !== false && /*#__PURE__*/React.createElement(\"div\", {\n className: \"popover-arrow\"\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"popover-inner\"\n }, children));\n});\nPopover.displayName = 'f7-popover';\nexport default Popover;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, noUndefinedProps, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { watchProp } from '../shared/watch-prop.js';\n\n\n\nconst Panel = /*#__PURE__*/forwardRef((props, ref) => {\n const f7Panel = useRef(null);\n const {\n className,\n id,\n style,\n children,\n side,\n effect,\n // eslint-disable-next-line\n cover,\n reveal,\n push,\n floating,\n left,\n // right,\n opened,\n resizable,\n backdrop = true,\n backdropEl,\n containerEl,\n closeByBackdropClick,\n visibleBreakpoint,\n collapsedBreakpoint,\n swipe,\n swipeNoFollow,\n swipeOnlyClose,\n swipeActiveArea = 0,\n swipeThreshold = 0\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const isOpened = useRef(false);\n const isClosing = useRef(false);\n const isCollapsed = useRef(false);\n const isBreakpoint = useRef(false);\n const onOpen = event => {\n isOpened.current = true;\n isClosing.current = false;\n emit(props, 'panelOpen', event);\n };\n const onOpened = event => {\n emit(props, 'panelOpened', event);\n };\n const onClose = event => {\n isOpened.current = false;\n isClosing.current = true;\n emit(props, 'panelClose', event);\n };\n const onClosed = event => {\n isClosing.current = false;\n emit(props, 'panelClosed', event);\n };\n const onBackdropClick = event => {\n emit(props, 'click panelBackdropClick', event);\n };\n const onSwipe = event => {\n emit(props, 'panelSwipe', event);\n };\n const onSwipeOpen = event => {\n emit(props, 'panelSwipeOpen', event);\n };\n const onBreakpoint = event => {\n isBreakpoint.current = true;\n isCollapsed.current = false;\n emit(props, 'panelBreakpoint', event);\n };\n const onCollapsedBreakpoint = event => {\n isBreakpoint.current = false;\n isCollapsed.current = true;\n emit(props, 'panelCollapsedBreakpoint', event);\n };\n const onResize = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n emit(props, 'panelResize', ...args);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7Panel: () => f7Panel.current\n }));\n watchProp(resizable, newValue => {\n if (!f7Panel.current) return;\n if (newValue) f7Panel.current.enableResizable();else f7Panel.current.disableResizable();\n });\n watchProp(opened, newValue => {\n if (!f7Panel.current) return;\n if (newValue) {\n f7Panel.current.open();\n } else {\n f7Panel.current.close();\n }\n });\n const modalEvents = method => {\n if (!f7Panel.current) return;\n f7Panel.current[method]('open', onOpen);\n f7Panel.current[method]('opened', onOpened);\n f7Panel.current[method]('close', onClose);\n f7Panel.current[method]('closed', onClosed);\n f7Panel.current[method]('backdropClick', onBackdropClick);\n f7Panel.current[method]('swipe', onSwipe);\n f7Panel.current[method]('swipeOpen', onSwipeOpen);\n f7Panel.current[method]('collapsedBreakpoint', onCollapsedBreakpoint);\n f7Panel.current[method]('breakpoint', onBreakpoint);\n f7Panel.current[method]('resize', onResize);\n };\n const onMount = () => {\n f7ready(() => {\n const $ = f7.$;\n if (!$) return;\n if ($('.panel-backdrop').length === 0) {\n $('
          ').insertBefore(elRef.current);\n }\n const params = noUndefinedProps({\n el: elRef.current,\n resizable,\n backdrop,\n backdropEl,\n containerEl,\n visibleBreakpoint,\n collapsedBreakpoint,\n swipe,\n swipeNoFollow,\n swipeOnlyClose,\n swipeActiveArea,\n swipeThreshold,\n closeByBackdropClick\n });\n f7Panel.current = f7.panel.create(params);\n modalEvents('on');\n if (opened) {\n f7Panel.current.open(false);\n }\n });\n };\n const onDestroy = () => {\n if (f7Panel.current && f7Panel.current.destroy) {\n f7Panel.current.destroy();\n }\n f7Panel.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n modalEvents('on');\n return () => {\n modalEvents('off');\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n const sideComputed = side || (left ? 'left' : 'right');\n // eslint-disable-next-line\n const effectComputed = effect || (reveal ? 'reveal' : push ? 'push' : floating ? 'floating' : 'cover');\n const classes = classNames(className, 'panel', {\n 'panel-in': isOpened.current && !isClosing.current && !isBreakpoint.current,\n 'panel-in-breakpoint': isBreakpoint.current,\n 'panel-in-collapsed': isCollapsed.current,\n 'panel-resizable': resizable,\n [`panel-${sideComputed}`]: sideComputed,\n [`panel-${effectComputed}`]: effectComputed\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children, resizable && /*#__PURE__*/React.createElement(\"div\", {\n className: \"panel-resize-handler\"\n }));\n});\nPanel.displayName = 'f7-panel';\nexport default Panel;","import React from 'react';\nimport Popup from '../components/popup.js';\nimport View from '../components/view.js';\nimport LoginScreen from '../components/login-screen.js';\nimport Sheet from '../components/sheet.js';\nimport Popover from '../components/popover.js';\nimport Panel from '../components/panel.js';\nexport const routerOpenIn = (router, url, options) => {\n const navigateOptions = {\n url,\n route: {\n path: url,\n options: {\n ...options,\n openIn: undefined\n }\n }\n };\n const params = {\n ...options\n };\n if (options.openIn === 'popup') {\n params.component = function DynamicPopup() {\n return /*#__PURE__*/React.createElement(Popup, {\n className: \"popup-router-open-in\",\n \"data-url\": url\n }, /*#__PURE__*/React.createElement(View, {\n linksView: router.view.selector,\n url: url,\n ignoreOpenIn: true\n }));\n };\n navigateOptions.route.popup = params;\n }\n if (options.openIn === 'loginScreen') {\n params.component = function DynamicPopover() {\n return /*#__PURE__*/React.createElement(LoginScreen, {\n className: \"login-screen-router-open-in\",\n \"data-url\": url\n }, /*#__PURE__*/React.createElement(View, {\n linksView: router.view.selector,\n url: url,\n ignoreOpenIn: true\n }));\n };\n navigateOptions.route.loginScreen = params;\n }\n if (options.openIn === 'sheet') {\n params.component = function DynamicSheet() {\n return /*#__PURE__*/React.createElement(Sheet, {\n className: \"sheet-modal-router-open-in\",\n \"data-url\": url\n }, /*#__PURE__*/React.createElement(View, {\n linksView: router.view.selector,\n url: url,\n ignoreOpenIn: true\n }));\n };\n navigateOptions.route.sheet = params;\n }\n if (options.openIn === 'popover') {\n params.targetEl = options.clickedEl || options.targetEl;\n params.component = function DynamicPopover() {\n return /*#__PURE__*/React.createElement(Popover, {\n className: \"popover-router-open-in\",\n targetEl: options.clickedEl || options.targetEl,\n \"data-url\": url\n }, /*#__PURE__*/React.createElement(View, {\n linksView: router.view.selector,\n url: url,\n ignoreOpenIn: true\n }));\n };\n navigateOptions.route.popover = params;\n }\n if (options.openIn.indexOf('panel') >= 0) {\n const parts = options.openIn.split(':');\n const side = parts[1] || 'left';\n const effect = parts[2] || 'cover';\n params.component = function DynamicPanel() {\n return /*#__PURE__*/React.createElement(Panel, {\n side: side,\n effect: effect,\n className: \"panel-router-open-in\",\n \"data-url\": url\n }, /*#__PURE__*/React.createElement(View, {\n linksView: router.view.selector,\n url: url,\n ignoreOpenIn: true\n }));\n };\n navigateOptions.route.panel = params;\n }\n return router.navigate(navigateOptions);\n};","/* eslint no-underscore-dangle: \"off\" */\nimport { f7events, f7routers } from './f7.js';\nimport { extend, getComponentId } from './utils.js';\nimport { routerOpenIn } from './router-open-in.js';\nconst getChildrenArray = el => {\n const arr = [];\n for (let i = 0; i < el.children.length; i += 1) {\n arr.push(el.children[i]);\n }\n return arr;\n};\nconst hasSameChildren = (childrenBefore, childrenAfter) => {\n if (childrenBefore.length !== childrenAfter.length) return false;\n const set = new Set([...childrenBefore, ...childrenAfter]);\n if (set.size === childrenBefore.length) return true;\n return false;\n};\nexport default {\n proto: {\n openIn(router, navigateUrl, options) {\n return routerOpenIn(router, navigateUrl, options);\n },\n pageComponentLoader(_ref) {\n let {\n routerEl,\n component,\n options,\n resolve,\n reject\n } = _ref;\n const router = this;\n const routerId = router.id;\n const el = routerEl;\n let viewRouter;\n f7routers.views.forEach(data => {\n if (data.el && data.el === routerEl || data.routerId && data.routerId === routerId) {\n viewRouter = data;\n }\n });\n if (!viewRouter) {\n reject();\n return;\n }\n const pageData = {\n component,\n id: getComponentId(),\n props: extend({\n f7route: options.route,\n f7router: router\n }, options.route.params, options.props || {})\n };\n let resolved;\n const childrenBefore = getChildrenArray(el);\n function onDidUpdate(componentRouterData) {\n if (componentRouterData !== viewRouter || resolved) return;\n const childrenAfter = getChildrenArray(el);\n if (hasSameChildren(childrenBefore, childrenAfter)) return;\n f7events.off('viewRouterDidUpdate', onDidUpdate);\n const pageEl = el.children[el.children.length - 1];\n pageData.el = pageEl;\n resolve(pageEl);\n resolved = true;\n }\n f7events.on('viewRouterDidUpdate', onDidUpdate);\n viewRouter.pages.push(pageData);\n viewRouter.setPages(viewRouter.pages);\n },\n removePage($pageEl) {\n if (!$pageEl) return;\n const router = this;\n let f7Page;\n if ('length' in $pageEl && $pageEl[0]) f7Page = $pageEl[0].f7Page;else f7Page = $pageEl.f7Page;\n if (f7Page && f7Page.route && f7Page.route.route && f7Page.route.route.keepAlive) {\n router.app.$($pageEl).remove();\n return;\n }\n let viewRouter;\n f7routers.views.forEach(data => {\n if (data.el && data.el === router.el) {\n viewRouter = data;\n }\n });\n let pageEl;\n if ('length' in $pageEl) {\n // Dom7\n if ($pageEl.length === 0) return;\n pageEl = $pageEl[0];\n } else {\n pageEl = $pageEl;\n }\n if (!pageEl) return;\n let pageComponentFound;\n viewRouter.pages.forEach((page, index) => {\n if (page.el === pageEl) {\n pageComponentFound = true;\n viewRouter.pages.splice(index, 1);\n viewRouter.setPages(viewRouter.pages);\n }\n });\n if (!pageComponentFound) {\n pageEl.parentNode.removeChild(pageEl);\n }\n },\n tabComponentLoader(_temp) {\n let {\n tabEl,\n component,\n options,\n resolve,\n reject\n } = _temp === void 0 ? {} : _temp;\n const router = this;\n if (!tabEl) reject();\n let tabRouter;\n f7routers.tabs.forEach(tabData => {\n if (tabData.el && tabData.el === tabEl) {\n tabRouter = tabData;\n }\n });\n if (!tabRouter) {\n reject();\n return;\n }\n const id = getComponentId();\n const tabContent = {\n id,\n component,\n props: extend({\n f7route: options.route,\n f7router: router\n }, options.route.route && options.route.route.tab && options.route.route.tab.options && options.route.route.tab.options.props || {}, options.route.params, options.props || {})\n };\n let resolved;\n function onDidUpdate(componentRouterData) {\n if (componentRouterData !== tabRouter || resolved) return;\n f7events.off('tabRouterDidUpdate', onDidUpdate);\n const tabContentEl = tabEl.children[0];\n resolve(tabContentEl);\n resolved = true;\n }\n f7events.on('tabRouterDidUpdate', onDidUpdate);\n tabRouter.setTabContent(tabContent);\n },\n removeTabContent(tabEl) {\n if (!tabEl) return;\n let tabRouter;\n f7routers.tabs.forEach(tabData => {\n if (tabData.el && tabData.el === tabEl) {\n tabRouter = tabData;\n }\n });\n if (!tabRouter) {\n tabEl.innerHTML = ''; // eslint-disable-line\n return;\n }\n tabRouter.setTabContent(null);\n },\n modalComponentLoader(_temp2) {\n let {\n component,\n options,\n resolve,\n reject\n } = _temp2 === void 0 ? {} : _temp2;\n const router = this;\n const modalsRouter = f7routers.modals;\n if (!modalsRouter) {\n reject();\n return;\n }\n const modalData = {\n component,\n id: getComponentId(),\n props: extend({\n f7route: options.route,\n f7router: router\n }, options.route.params, options.props || {})\n };\n let resolved;\n function onDidUpdate() {\n if (resolved) return;\n f7events.off('modalsRouterDidUpdate', onDidUpdate);\n const modalEl = modalsRouter.el.children[modalsRouter.el.children.length - 1];\n modalData.el = modalEl;\n resolve(modalEl);\n resolved = true;\n }\n f7events.on('modalsRouterDidUpdate', onDidUpdate);\n modalsRouter.modals.push(modalData);\n modalsRouter.setModals(modalsRouter.modals);\n },\n removeModal(modalEl) {\n const modalsRouter = f7routers.modals;\n if (!modalsRouter) return;\n let modalDataToRemove;\n modalsRouter.modals.forEach(modalData => {\n if (modalData.el === modalEl) modalDataToRemove = modalData;\n });\n modalsRouter.modals.splice(modalsRouter.modals.indexOf(modalDataToRemove), 1);\n modalsRouter.setModals(modalsRouter.modals);\n }\n }\n};","import Framework7 from 'framework7/lite';\nimport componentsRouter from './components-router.js';\nimport { f7, f7ready, theme, f7initEvents, setTheme } from './f7.js';\nconst Framework7React = {\n name: 'reactPlugin',\n installed: false,\n install(params) {\n if (params === void 0) {\n params = {};\n }\n if (Framework7React.installed) return;\n Framework7React.installed = true;\n f7initEvents();\n const {\n theme: paramsTheme,\n userAgent\n } = params;\n if (paramsTheme === 'md') theme.md = true;\n if (paramsTheme === 'ios') theme.ios = true;\n\n // eslint-disable-next-line\n const needThemeCalc = typeof window === 'undefined' ? !!userAgent : true;\n if (needThemeCalc && (!paramsTheme || paramsTheme === 'auto')) {\n const device = Framework7.getDevice({\n userAgent\n }, true);\n theme.ios = !!device.ios;\n theme.md = !theme.ios;\n }\n f7ready(() => {\n setTheme();\n });\n Framework7.Router.use(componentsRouter);\n }\n};\nexport { f7ready, f7, theme };\nexport default Framework7React;","/**\n * Framework7 React 8.3.2\n * Build full featured iOS & Android apps using Framework7 & React\n * https://framework7.io/react/\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 27, 2024\n */\nimport Framework7React from './shared/plugin.js';\nimport { f7, f7ready, theme } from './shared/f7.js';\nimport { useStore } from './shared/use-store.js';\n\nimport AccordionContent from './components/accordion-content.js';\nimport AccordionItem from './components/accordion-item.js';\nimport AccordionToggle from './components/accordion-toggle.js';\nimport Accordion from './components/accordion.js';\nimport ActionsButton from './components/actions-button.js';\nimport ActionsGroup from './components/actions-group.js';\nimport ActionsLabel from './components/actions-label.js';\nimport Actions from './components/actions.js';\nimport App from './components/app.js';\nimport AreaChart from './components/area-chart.js';\nimport Badge from './components/badge.js';\nimport BlockFooter from './components/block-footer.js';\nimport BlockHeader from './components/block-header.js';\nimport BlockTitle from './components/block-title.js';\nimport Block from './components/block.js';\nimport BreadcrumbsCollapsed from './components/breadcrumbs-collapsed.js';\nimport BreadcrumbsItem from './components/breadcrumbs-item.js';\nimport BreadcrumbsSeparator from './components/breadcrumbs-separator.js';\nimport Breadcrumbs from './components/breadcrumbs.js';\nimport Button from './components/button.js';\nimport CardContent from './components/card-content.js';\nimport CardFooter from './components/card-footer.js';\nimport CardHeader from './components/card-header.js';\nimport Card from './components/card.js';\nimport Checkbox from './components/checkbox.js';\nimport Chip from './components/chip.js';\nimport FabBackdrop from './components/fab-backdrop.js';\nimport FabButton from './components/fab-button.js';\nimport FabButtons from './components/fab-buttons.js';\nimport Fab from './components/fab.js';\nimport Gauge from './components/gauge.js';\nimport Icon from './components/icon.js';\nimport Input from './components/input.js';\nimport Link from './components/link.js';\nimport ListButton from './components/list-button.js';\nimport ListGroup from './components/list-group.js';\nimport ListIndex from './components/list-index.js';\nimport ListInput from './components/list-input.js';\nimport ListItemContent from './components/list-item-content.js';\nimport ListItem from './components/list-item.js';\nimport List from './components/list.js';\nimport LoginScreenTitle from './components/login-screen-title.js';\nimport LoginScreen from './components/login-screen.js';\nimport Message from './components/message.js';\nimport MessagebarAttachment from './components/messagebar-attachment.js';\nimport MessagebarAttachments from './components/messagebar-attachments.js';\nimport MessagebarSheetImage from './components/messagebar-sheet-image.js';\nimport MessagebarSheetItem from './components/messagebar-sheet-item.js';\nimport MessagebarSheet from './components/messagebar-sheet.js';\nimport Messagebar from './components/messagebar.js';\nimport MessagesTitle from './components/messages-title.js';\nimport Messages from './components/messages.js';\nimport NavLeft from './components/nav-left.js';\nimport NavRight from './components/nav-right.js';\nimport NavTitleLarge from './components/nav-title-large.js';\nimport NavTitle from './components/nav-title.js';\nimport Navbar from './components/navbar.js';\nimport PageContent from './components/page-content.js';\nimport Page from './components/page.js';\nimport Panel from './components/panel.js';\nimport PhotoBrowser from './components/photo-browser.js';\nimport PieChart from './components/pie-chart.js';\nimport Popover from './components/popover.js';\nimport Popup from './components/popup.js';\nimport Preloader from './components/preloader.js';\nimport Progressbar from './components/progressbar.js';\nimport Radio from './components/radio.js';\nimport Range from './components/range.js';\nimport RoutableModals from './components/routable-modals.js';\nimport Searchbar from './components/searchbar.js';\nimport Segmented from './components/segmented.js';\nimport Sheet from './components/sheet.js';\nimport SkeletonAvatar from './components/skeleton-avatar.js';\nimport SkeletonBlock from './components/skeleton-block.js';\nimport SkeletonImage from './components/skeleton-image.js';\nimport SkeletonText from './components/skeleton-text.js';\nimport Stepper from './components/stepper.js';\nimport Subnavbar from './components/subnavbar.js';\nimport SwipeoutActions from './components/swipeout-actions.js';\nimport SwipeoutButton from './components/swipeout-button.js';\nimport Tab from './components/tab.js';\nimport Tabs from './components/tabs.js';\nimport TextEditor from './components/text-editor.js';\nimport Toggle from './components/toggle.js';\nimport Toolbar from './components/toolbar.js';\nimport TreeviewItem from './components/treeview-item.js';\nimport Treeview from './components/treeview.js';\nimport View from './components/view.js';\nimport Views from './components/views.js';\n\nexport { AccordionContent, AccordionItem, AccordionToggle, Accordion, ActionsButton, ActionsGroup, ActionsLabel, Actions, App, AreaChart, Badge, BlockFooter, BlockHeader, BlockTitle, Block, BreadcrumbsCollapsed, BreadcrumbsItem, BreadcrumbsSeparator, Breadcrumbs, Button, CardContent, CardFooter, CardHeader, Card, Checkbox, Chip, FabBackdrop, FabButton, FabButtons, Fab, Gauge, Icon, Input, Link, ListButton, ListGroup, ListIndex, ListInput, ListItemContent, ListItem, List, LoginScreenTitle, LoginScreen, Message, MessagebarAttachment, MessagebarAttachments, MessagebarSheetImage, MessagebarSheetItem, MessagebarSheet, Messagebar, MessagesTitle, Messages, NavLeft, NavRight, NavTitleLarge, NavTitle, Navbar, PageContent, Page, Panel, PhotoBrowser, PieChart, Popover, Popup, Preloader, Progressbar, Radio, Range, RoutableModals, Searchbar, Segmented, Sheet, SkeletonAvatar, SkeletonBlock, SkeletonImage, SkeletonText, Stepper, Subnavbar, SwipeoutActions, SwipeoutButton, Tab, Tabs, TextEditor, Toggle, Toolbar, TreeviewItem, Treeview, View, Views }\nexport { f7, f7ready, theme, useStore };\nexport default Framework7React;\n","var __WEBPACK_NAMESPACE_OBJECT__ = jQuery;","import e from\"void-elements\";var t=/\\s([^'\"/\\s><]+?)[\\s/>]|([^\\s=]+)=\\s?(\".*?\"|'.*?')/g;function n(n){var r={type:\"tag\",name:\"\",voidElement:!1,attrs:{},children:[]},i=n.match(/<\\/?([^\\s]+?)[/\\s>]/);if(i&&(r.name=i[1],(e[i[1]]||\"/\"===n.charAt(n.length-2))&&(r.voidElement=!0),r.name.startsWith(\"!--\"))){var s=n.indexOf(\"--\\x3e\");return{type:\"comment\",comment:-1!==s?n.slice(4,s):\"\"}}for(var a=new RegExp(t),c=null;null!==(c=a.exec(n));)if(c[0].trim())if(c[1]){var o=c[1].trim(),l=[o,\"\"];o.indexOf(\"=\")>-1&&(l=o.split(\"=\")),r.attrs[l[0]]=l[1],a.lastIndex--}else c[2]&&(r.attrs[c[2]]=c[3].trim().substring(1,c[3].length-1));return r}var r=/<[a-zA-Z0-9\\-\\!\\/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g,i=/^\\s*$/,s=Object.create(null);function a(e,t){switch(t.type){case\"text\":return e+t.content;case\"tag\":return e+=\"<\"+t.name+(t.attrs?function(e){var t=[];for(var n in e)t.push(n+'=\"'+e[n]+'\"');return t.length?\" \"+t.join(\" \"):\"\"}(t.attrs):\"\")+(t.voidElement?\"/>\":\">\"),t.voidElement?e:e+t.children.reduce(a,\"\")+\"\";case\"comment\":return e+\"\\x3c!--\"+t.comment+\"--\\x3e\"}}var c={parse:function(e,t){t||(t={}),t.components||(t.components=s);var a,c=[],o=[],l=-1,m=!1;if(0!==e.indexOf(\"<\")){var u=e.indexOf(\"<\");c.push({type:\"text\",content:-1===u?e:e.substring(0,u)})}return e.replace(r,function(r,s){if(m){if(r!==\"\")return;m=!1}var u,f=\"/\"!==r.charAt(1),h=r.startsWith(\"\\x3c!--\"),p=s+r.length,d=e.charAt(p);if(h){var v=n(r);return l<0?(c.push(v),c):((u=o[l]).children.push(v),c)}if(f&&(l++,\"tag\"===(a=n(r)).type&&t.components[a.name]&&(a.type=\"component\",m=!0),a.voidElement||m||!d||\"<\"===d||a.children.push({type:\"text\",content:e.slice(p,e.indexOf(\"<\",p))}),0===l&&c.push(a),(u=o[l-1])&&u.children.push(a),o[l]=a),(!f||a.voidElement)&&(l>-1&&(a.voidElement||a.name===r.slice(2,-1))&&(l--,a=-1===l?c:o[l]),!m&&\"<\"!==d&&d)){u=-1===l?c:o[l].children;var x=e.indexOf(\"<\",p),g=e.slice(p,-1===x?void 0:x);i.test(g)&&(g=\" \"),(x>-1&&l+u.length>=0||\" \"!==g)&&u.push({type:\"text\",content:g})}}),c},stringify:function(e){return e.reduce(function(e,t){return e+a(\"\",t)},\"\")}};export default c;\n//# sourceMappingURL=html-parse-stringify.module.js.map\n","export function warn() {\n if (console && console.warn) {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[0] === 'string') args[0] = `react-i18next:: ${args[0]}`;\n console.warn(...args);\n }\n}\nconst alreadyWarned = {};\nexport function warnOnce() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n warn(...args);\n}\nconst loadedClb = (i18n, cb) => () => {\n if (i18n.isInitialized) {\n cb();\n } else {\n const initialized = () => {\n setTimeout(() => {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n i18n.on('initialized', initialized);\n }\n};\nexport function loadNamespaces(i18n, ns, cb) {\n i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n}\nexport function loadLanguages(i18n, lng, ns, cb) {\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(n => {\n if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n });\n i18n.loadLanguages(lng, loadedClb(i18n, cb));\n}\nfunction oldI18nextHasLoadedNamespace(ns, i18n) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const lng = i18n.languages[0];\n const fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n const lastLng = i18n.languages[i18n.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = i18n.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 2;\n };\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n if (i18n.hasResourceBundle(lng, ns)) return true;\n if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n}\nexport function hasLoadedNamespace(ns, i18n) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce('i18n.languages were undefined or empty', i18n.languages);\n return true;\n }\n const isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;\n if (!isNewerI18next) {\n return oldI18nextHasLoadedNamespace(ns, i18n, options);\n }\n return i18n.hasLoadedNamespace(ns, {\n lng: options.lng,\n precheck: (i18nInstance, loadNotPending) => {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n}\nexport function getDisplayName(Component) {\n return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\n}","const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"',\n ' ': ' ',\n ' ': ' ',\n '©': '©',\n '©': '©',\n '®': '®',\n '®': '®',\n '…': '…',\n '…': '…',\n '/': '/',\n '/': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);","import { unescape } from './unescape.js';\nlet defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape\n};\nexport function setDefaults() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n defaultOptions = {\n ...defaultOptions,\n ...options\n };\n}\nexport function getDefaults() {\n return defaultOptions;\n}","let i18nInstance;\nexport function setI18n(instance) {\n i18nInstance = instance;\n}\nexport function getI18n() {\n return i18nInstance;\n}","import { setDefaults } from './defaults.js';\nimport { setI18n } from './i18nInstance.js';\nexport const initReactI18next = {\n type: '3rdParty',\n init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};","import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n constructor() {\n this.usedNamespaces = {};\n }\n addUsedNamespaces(namespaces) {\n namespaces.forEach(ns => {\n if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;\n });\n }\n getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n}\nexport function composeInitialProps(ForComponent) {\n return ctx => new Promise(resolve => {\n const i18nInitialProps = getInitialProps();\n if (ForComponent.getInitialProps) {\n ForComponent.getInitialProps(ctx).then(componentsInitialProps => {\n resolve({\n ...componentsInitialProps,\n ...i18nInitialProps\n });\n });\n } else {\n resolve(i18nInitialProps);\n }\n });\n}\nexport function getInitialProps() {\n const i18n = getI18n();\n const namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n const ret = {};\n const initialI18nStore = {};\n i18n.languages.forEach(l => {\n initialI18nStore[l] = {};\n namespaces.forEach(ns => {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n}","import { useState, useEffect, useContext, useRef, useCallback } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace } from './utils.js';\nconst usePrevious = (value, ignore) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = ignore ? ref.current : value;\n }, [value, ignore]);\n return ref.current;\n};\nfunction alwaysNewT(i18n, language, namespace, keyPrefix) {\n return i18n.getFixedT(language, namespace, keyPrefix);\n}\nfunction useMemoizedT(i18n, language, namespace, keyPrefix) {\n return useCallback(alwaysNewT(i18n, language, namespace, keyPrefix), [i18n, language, namespace, keyPrefix]);\n}\nexport function useTranslation(ns) {\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n i18n: i18nFromProps\n } = props;\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n if (!i18n) {\n warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n const notReadyT = (k, optsOrDefaultValue) => {\n if (typeof optsOrDefaultValue === 'string') return optsOrDefaultValue;\n if (optsOrDefaultValue && typeof optsOrDefaultValue === 'object' && typeof optsOrDefaultValue.defaultValue === 'string') return optsOrDefaultValue.defaultValue;\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n const retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n const i18nOptions = {\n ...getDefaults(),\n ...i18n.options.react,\n ...props\n };\n const {\n useSuspense,\n keyPrefix\n } = i18nOptions;\n let namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n const memoGetT = useMemoizedT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const getT = () => memoGetT;\n const getNewT = () => alwaysNewT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const [t, setT] = useState(getT);\n let joinedNS = namespaces.join();\n if (props.lng) joinedNS = `${props.lng}${joinedNS}`;\n const previousJoinedNS = usePrevious(joinedNS);\n const isMounted = useRef(true);\n useEffect(() => {\n const {\n bindI18n,\n bindI18nStore\n } = i18nOptions;\n isMounted.current = true;\n if (!ready && !useSuspense) {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => {\n if (isMounted.current) setT(getNewT);\n });\n } else {\n loadNamespaces(i18n, namespaces, () => {\n if (isMounted.current) setT(getNewT);\n });\n }\n }\n if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n setT(getNewT);\n }\n function boundReset() {\n if (isMounted.current) setT(getNewT);\n }\n if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n return () => {\n isMounted.current = false;\n if (bindI18n && i18n) bindI18n.split(' ').forEach(e => i18n.off(e, boundReset));\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));\n };\n }, [i18n, joinedNS]);\n const isInitial = useRef(true);\n useEffect(() => {\n if (isMounted.current && !isInitial.current) {\n setT(getT);\n }\n isInitial.current = false;\n }, [i18n, keyPrefix]);\n const ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(resolve => {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => resolve());\n } else {\n loadNamespaces(i18n, namespaces, () => resolve());\n }\n });\n}","import { createElement, forwardRef as forwardRefReact } from 'react';\nimport { useTranslation } from './useTranslation.js';\nimport { getDisplayName } from './utils.js';\nexport function withTranslation(ns) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function Extend(WrappedComponent) {\n function I18nextWithTranslation(_ref) {\n let {\n forwardedRef,\n ...rest\n } = _ref;\n const [t, i18n, ready] = useTranslation(ns, {\n ...rest,\n keyPrefix: options.keyPrefix\n });\n const passDownProps = {\n ...rest,\n t,\n i18n,\n tReady: ready\n };\n if (options.withRef && forwardedRef) {\n passDownProps.ref = forwardedRef;\n } else if (!options.withRef && forwardedRef) {\n passDownProps.forwardedRef = forwardedRef;\n }\n return createElement(WrappedComponent, passDownProps);\n }\n I18nextWithTranslation.displayName = `withI18nextTranslation(${getDisplayName(WrappedComponent)})`;\n I18nextWithTranslation.WrappedComponent = WrappedComponent;\n const forwardRef = (props, ref) => createElement(I18nextWithTranslation, Object.assign({}, props, {\n forwardedRef: ref\n }));\n return options.withRef ? forwardRefReact(forwardRef) : I18nextWithTranslation;\n };\n}","import { createElement, useMemo } from 'react';\nimport { I18nContext } from './context.js';\nexport function I18nextProvider(_ref) {\n let {\n i18n,\n defaultNS,\n children\n } = _ref;\n const value = useMemo(() => ({\n i18n,\n defaultNS\n }), [i18n, defaultNS]);\n return createElement(I18nContext.Provider, {\n value\n }, children);\n}","export { Trans } from './Trans.js';\nexport { Trans as TransWithoutContext } from './TransWithoutContext.js';\nexport { useTranslation } from './useTranslation.js';\nexport { withTranslation } from './withTranslation.js';\nexport { Translation } from './Translation.js';\nexport { I18nextProvider } from './I18nextProvider.js';\nexport { withSSR } from './withSSR.js';\nexport { useSSR } from './useSSR.js';\nexport { initReactI18next } from './initReactI18next.js';\nexport { setDefaults, getDefaults } from './defaults.js';\nexport { setI18n, getI18n } from './i18nInstance.js';\nexport { I18nContext, composeInitialProps, getInitialProps } from './context.js';\nexport const date = () => '';\nexport const time = () => '';\nexport const number = () => '';\nexport const select = () => '';\nexport const plural = () => '';\nexport const selectOrdinal = () => '';","const consoleLogger = {\n type: 'logger',\n log(args) {\n this.output('log', args);\n },\n warn(args) {\n this.output('warn', args);\n },\n error(args) {\n this.output('error', args);\n },\n output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\nclass Logger {\n constructor(concreteLogger) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.init(concreteLogger, options);\n }\n init(concreteLogger) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return this.forward(args, 'log', '', true);\n }\n warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return this.forward(args, 'warn', '', true);\n }\n error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return this.forward(args, 'error', '');\n }\n deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = `${prefix}${this.prefix} ${args[0]}`;\n return this.logger[lvl](args);\n }\n create(moduleName) {\n return new Logger(this.logger, {\n ...{\n prefix: `${this.prefix}:${moduleName}:`\n },\n ...this.options\n });\n }\n clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n constructor() {\n this.observers = {};\n }\n on(events, listener) {\n events.split(' ').forEach(event => {\n if (!this.observers[event]) this.observers[event] = new Map();\n const numListeners = this.observers[event].get(listener) || 0;\n this.observers[event].set(listener, numListeners + 1);\n });\n return this;\n }\n off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event].delete(listener);\n }\n emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (this.observers[event]) {\n const cloned = Array.from(this.observers[event].entries());\n cloned.forEach(_ref => {\n let [observer, numTimesAdded] = _ref;\n for (let i = 0; i < numTimesAdded; i++) {\n observer(...args);\n }\n });\n }\n if (this.observers['*']) {\n const cloned = Array.from(this.observers['*'].entries());\n cloned.forEach(_ref2 => {\n let [observer, numTimesAdded] = _ref2;\n for (let i = 0; i < numTimesAdded; i++) {\n observer.apply(observer, [event, ...args]);\n }\n });\n }\n }\n}\n\nfunction defer() {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(m => {\n if (s[m]) t[m] = s[m];\n });\n}\nconst lastOfPathSeparatorRegExp = /###/g;\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\n }\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n const stack = typeof path !== 'string' ? path : path.split('.');\n let stackIndex = 0;\n while (stackIndex < stack.length - 1) {\n if (canNotTraverseDeeper()) return {};\n const key = cleanKey(stack[stackIndex]);\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n ++stackIndex;\n }\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack[stackIndex])\n };\n}\nfunction setPath(object, path, newValue) {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n if (obj !== undefined || path.length === 1) {\n obj[k] = newValue;\n return;\n }\n let e = path[path.length - 1];\n let p = path.slice(0, path.length - 1);\n let last = getLastOfPath(object, p, Object);\n while (last.obj === undefined && p.length) {\n e = `${p[p.length - 1]}.${e}`;\n p = p.slice(0, p.length - 1);\n last = getLastOfPath(object, p, Object);\n if (last && last.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n last.obj = undefined;\n }\n }\n last.obj[`${last.k}.${e}`] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n const {\n obj,\n k\n } = getLastOfPath(object, path);\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n const value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (const prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n }\n return data;\n}\nclass RegExpCache {\n constructor(capacity) {\n this.capacity = capacity;\n this.regExpMap = new Map();\n this.regExpQueue = [];\n }\n getRegExp(pattern) {\n const regExpFromCache = this.regExpMap.get(pattern);\n if (regExpFromCache !== undefined) {\n return regExpFromCache;\n }\n const regExpNew = new RegExp(pattern);\n if (this.regExpQueue.length === this.capacity) {\n this.regExpMap.delete(this.regExpQueue.shift());\n }\n this.regExpMap.set(pattern, regExpNew);\n this.regExpQueue.push(pattern);\n return regExpNew;\n }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n const possibleChars = chars.filter(c => nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);\n if (possibleChars.length === 0) return true;\n const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n let matched = !r.test(key);\n if (!matched) {\n const ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n}\nfunction deepFind(obj, path) {\n let keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n const tokens = path.split(keySeparator);\n let current = obj;\n for (let i = 0; i < tokens.length;) {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n let next;\n let nextPath = '';\n for (let j = i; j < tokens.length; ++j) {\n if (j !== i) {\n nextPath += keySeparator;\n }\n nextPath += tokens[j];\n next = current[nextPath];\n if (next !== undefined) {\n if (['string', 'number', 'boolean'].indexOf(typeof next) > -1 && j < tokens.length - 1) {\n continue;\n }\n i += j - i + 1;\n break;\n }\n }\n current = next;\n }\n return current;\n}\nfunction getCleanedCode(code) {\n if (code && code.indexOf('_') > 0) return code.replace('_', '-');\n return code;\n}\n\nclass ResourceStore extends EventEmitter {\n constructor(data) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n super();\n this.data = data || {};\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n if (this.options.ignoreJSONStructure === undefined) {\n this.options.ignoreJSONStructure = true;\n }\n }\n addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n removeNamespaces(ns) {\n const index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n getResource(lng, ns, key) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n let path;\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n } else {\n path = [lng, ns];\n if (key) {\n if (Array.isArray(key)) {\n path.push(...key);\n } else if (typeof key === 'string' && keySeparator) {\n path.push(...key.split(keySeparator));\n } else {\n path.push(key);\n }\n }\n }\n const result = getPath(this.data, path);\n if (!result && !ns && !key && lng.indexOf('.') > -1) {\n lng = path[0];\n ns = path[1];\n key = path.slice(2).join('.');\n }\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n addResource(lng, ns, key, value) {\n let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n addResources(lng, ns, resources) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n for (const m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n addResourceBundle(lng, ns, resources, deep, overwrite) {\n let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false,\n skipCopy: false\n };\n let path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n let pack = getPath(this.data, path) || {};\n if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = {\n ...pack,\n ...resources\n };\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return {\n ...{},\n ...this.getResource(lng, ns)\n };\n return this.getResource(lng, ns);\n }\n getDataByLanguage(lng) {\n return this.data[lng];\n }\n hasLanguageSomeTranslations(lng) {\n const data = this.getDataByLanguage(lng);\n const n = data && Object.keys(data) || [];\n return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n }\n toJSON() {\n return this.data;\n }\n}\n\nvar postProcessor = {\n processors: {},\n addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle(processors, value, key, options, translator) {\n processors.forEach(processor => {\n if (this.processors[processor]) value = this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nconst checkedLoadedFor = {};\nclass Translator extends EventEmitter {\n constructor(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super();\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n this.logger = baseLogger.create('translator');\n }\n changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n exists(key) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n if (key === undefined || key === null) {\n return false;\n }\n const resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n extractFromKey(key, options) {\n let nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let namespaces = options.ns || this.options.defaultNS || [];\n const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n const m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key,\n namespaces\n };\n }\n const parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key,\n namespaces\n };\n }\n translate(keys, options, lastKey) {\n if (typeof options !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (typeof options === 'object') options = {\n ...options\n };\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n const returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const {\n key,\n namespaces\n } = this.extractFromKey(keys[keys.length - 1], options);\n const namespace = namespaces[namespaces.length - 1];\n const lng = options.lng || this.language;\n const appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n const nsSeparator = options.nsSeparator || this.options.nsSeparator;\n if (returnDetails) {\n return {\n res: `${namespace}${nsSeparator}${key}`,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(options)\n };\n }\n return `${namespace}${nsSeparator}${key}`;\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(options)\n };\n }\n return key;\n }\n const resolved = this.resolve(keys, options);\n let res = resolved && resolved.res;\n const resUsedKey = resolved && resolved.usedKey || key;\n const resExactUsedKey = resolved && resolved.exactUsedKey || key;\n const resType = Object.prototype.toString.apply(res);\n const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n const joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n const handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, {\n ...options,\n ns: namespaces\n }) : `key '${key} (${this.language})' returned an object instead of string.`;\n if (returnDetails) {\n resolved.res = r;\n resolved.usedParams = this.getUsedParamsDetails(options);\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n const resTypeIsArray = resType === '[object Array]';\n const copy = resTypeIsArray ? [] : {};\n const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (const m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n copy[m] = this.translate(deepKey, {\n ...options,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n let usedDefault = false;\n let usedKey = false;\n const needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n const hasDefaultValue = Translator.hasDefaultValue(options);\n const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n const defaultValueSuffixOrdinalFallback = options.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, {\n ordinal: false\n }) : '';\n const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n const defaultValue = needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] || options[`defaultValue${defaultValueSuffix}`] || options[`defaultValue${defaultValueSuffixOrdinalFallback}`] || options.defaultValue;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n const missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n const fk = this.resolve(key, {\n ...options,\n keySeparator: false\n });\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n let lngs = [];\n const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (let i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n const send = (l, k, specificDefaultValue) => {\n const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (this.options.missingKeyHandler) {\n this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (this.backendConnector && this.backendConnector.saveMissing) {\n this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n this.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(language => {\n const suffixes = this.pluralResolver.getSuffixes(language, options);\n if (needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] && suffixes.indexOf(`${this.options.pluralSeparator}zero`) < 0) {\n suffixes.push(`${this.options.pluralSeparator}zero`);\n }\n suffixes.forEach(suffix => {\n send([language], key + suffix, options[`defaultValue${suffix}`] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = `${namespace}:${key}`;\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n if (this.options.compatibilityAPI !== 'v1') {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}:${key}` : key, usedDefault ? res : undefined);\n } else {\n res = this.options.parseMissingKeyHandler(res);\n }\n }\n }\n if (returnDetails) {\n resolved.res = res;\n resolved.usedParams = this.getUsedParamsDetails(options);\n return resolved;\n }\n return res;\n }\n extendTranslation(res, key, options, resolved, lastKey) {\n var _this = this;\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, {\n ...this.options.interpolation.defaultVariables,\n ...options\n }, options.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init({\n ...options,\n ...{\n interpolation: {\n ...this.options.interpolation,\n ...options.interpolation\n }\n }\n });\n const skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n let nestBef;\n if (skipOnVariables) {\n const nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n let data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n if (skipOnVariables) {\n const na = res.match(this.interpolator.nestingRegexp);\n const nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n if (!options.lng && this.options.compatibilityAPI !== 'v1' && resolved && resolved.res) options.lng = resolved.usedLng;\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n return null;\n }\n return _this.translate(...args, key);\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n const postProcess = options.postProcess || this.options.postProcess;\n const postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n i18nResolved: {\n ...resolved,\n usedParams: this.getUsedParamsDetails(options)\n },\n ...options\n } : options, this);\n }\n return res;\n }\n resolve(keys) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let found;\n let usedKey;\n let exactUsedKey;\n let usedLng;\n let usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(k => {\n if (this.isValidLookup(found)) return;\n const extracted = this.extractFromKey(k, options);\n const key = extracted.key;\n usedKey = key;\n let namespaces = extracted.namespaces;\n if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n const needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n const needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n const codes = options.lngs ? options.lngs : this.languageUtils.toResolveHierarchy(options.lng || this.language, options.fallbackLng);\n namespaces.forEach(ns => {\n if (this.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils && this.utils.hasLoadedNamespace && !this.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(code => {\n if (this.isValidLookup(found)) return;\n usedLng = code;\n const finalKeys = [key];\n if (this.i18nFormat && this.i18nFormat.addLookupKeys) {\n this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n let pluralSuffix;\n if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, options.count, options);\n const zeroSuffix = `${this.options.pluralSeparator}zero`;\n const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n const contextKey = `${key}${this.options.contextSeparator}${options.context}`;\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n let possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!this.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = this.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey,\n exactUsedKey,\n usedLng,\n usedNS\n };\n }\n isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n getResource(code, ns, key) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n getUsedParamsDetails() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n const useOptionsReplaceForData = options.replace && typeof options.replace !== 'string';\n let data = useOptionsReplaceForData ? options.replace : options;\n if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n data.count = options.count;\n }\n if (this.options.interpolation.defaultVariables) {\n data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n }\n if (!useOptionsReplaceForData) {\n data = {\n ...data\n };\n for (const key of optionsKeys) {\n delete data[key];\n }\n }\n return data;\n }\n static hasDefaultValue(options) {\n const prefix = 'defaultValue';\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n}\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nclass LanguageUtil {\n constructor(options) {\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n getScriptPartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return null;\n const p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n getLanguagePartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return code;\n const p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n const specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n let p = code.split('-');\n if (this.options.lowerCaseLng) {\n p = p.map(part => part.toLowerCase());\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n return p.join('-');\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n getBestMatchFromCodes(codes) {\n if (!codes) return null;\n let found;\n codes.forEach(code => {\n if (found) return;\n const cleanedLng = this.formatLanguageCode(code);\n if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(code => {\n if (found) return;\n const lngOnly = this.getLanguagePartFromCode(code);\n if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = this.options.supportedLngs.find(supportedLng => {\n if (supportedLng === lngOnly) return supportedLng;\n if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks.default || [];\n let found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks.default;\n return found || [];\n }\n toResolveHierarchy(code, fallbackCode) {\n const fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n const codes = [];\n const addCode = c => {\n if (!c) return;\n if (this.isSupportedCode(c)) {\n codes.push(c);\n } else {\n this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n }\n };\n if (typeof code === 'string' && (code.indexOf('-') > -1 || code.indexOf('_') > -1)) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(fc => {\n if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));\n });\n return codes;\n }\n}\n\nlet sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nlet _rulesPluralsTypes = {\n 1: function (n) {\n return Number(n > 1);\n },\n 2: function (n) {\n return Number(n != 1);\n },\n 3: function (n) {\n return 0;\n },\n 4: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function (n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function (n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function (n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function (n) {\n return Number(n >= 2);\n },\n 10: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function (n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function (n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function (n) {\n return Number(n !== 0);\n },\n 14: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function (n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function (n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function (n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function (n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function (n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nconst nonIntlVersions = ['v1', 'v2', 'v3'];\nconst intlVersions = ['v4'];\nconst suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nfunction createRules() {\n const rules = {};\n sets.forEach(set => {\n set.lngs.forEach(l => {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\nclass PluralResolver {\n constructor(languageUtils) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n if ((!this.options.compatibilityJSON || intlVersions.includes(this.options.compatibilityJSON)) && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n this.rules = createRules();\n }\n addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n getRule(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(getCleanedCode(code === 'dev' ? 'en' : code), {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch (err) {\n return;\n }\n }\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n needsPlural(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const rule = this.getRule(code, options);\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n return rule && rule.numbers.length > 1;\n }\n getPluralFormsOfKey(code, key) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n }\n getSuffixes(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const rule = this.getRule(code, options);\n if (!rule) {\n return [];\n }\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n }\n return rule.numbers.map(number => this.getSuffix(code, number, options));\n }\n getSuffix(code, count) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const rule = this.getRule(code, options);\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n }\n return this.getSuffixRetroCompatible(rule, count);\n }\n this.logger.warn(`no plural rule found for: ${code}`);\n return '';\n }\n getSuffixRetroCompatible(rule, count) {\n const idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n let suffix = rule.numbers[idx];\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n const returnSuffix = () => this.options.prepend && suffix.toString() ? this.options.prepend + suffix.toString() : suffix.toString();\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return `_plural_${suffix.toString()}`;\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n shouldUseIntlApi() {\n return !nonIntlVersions.includes(this.options.compatibilityJSON);\n }\n}\n\nfunction deepFindWithDefaults(data, defaultData, key) {\n let keySeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '.';\n let ignoreJSONStructure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n let path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && typeof key === 'string') {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n}\nclass Interpolator {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options.interpolation && options.interpolation.format || (value => value);\n this.init(options);\n }\n init() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n const iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n reset() {\n if (this.options) this.init(this.options);\n }\n resetRegExp() {\n const getOrResetRegExp = (existingRegExp, pattern) => {\n if (existingRegExp && existingRegExp.source === pattern) {\n existingRegExp.lastIndex = 0;\n return existingRegExp;\n }\n return new RegExp(pattern, 'g');\n };\n this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}(.+?)${this.nestingSuffix}`);\n }\n interpolate(str, data, lng, options) {\n let match;\n let value;\n let replaces;\n const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n const handleFormat = key => {\n if (key.indexOf(this.formatSeparator) < 0) {\n const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n return this.alwaysFormat ? this.format(path, undefined, lng, {\n ...options,\n ...data,\n interpolationkey: key\n }) : path;\n }\n const p = key.split(this.formatSeparator);\n const k = p.shift().trim();\n const f = p.join(this.formatSeparator).trim();\n return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n ...options,\n ...data,\n interpolationkey: k\n });\n };\n this.resetRegExp();\n const missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n const skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n const todos = [{\n regex: this.regexpUnescape,\n safeValue: val => regexSafe(val)\n }, {\n regex: this.regexp,\n safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n }];\n todos.forEach(todo => {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n const matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n const temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n value = '';\n }\n } else if (typeof value !== 'string' && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n const safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n nest(str, fc) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let match;\n let value;\n let clonedOptions;\n function handleHasOptions(key, inheritedOptions) {\n const sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n const c = key.split(new RegExp(`${sep}[ ]*{`));\n let optionsString = `{${c[1]}`;\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n const matchedSingleQuotes = optionsString.match(/'/g);\n const matchedDoubleQuotes = optionsString.match(/\"/g);\n if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = {\n ...inheritedOptions,\n ...clonedOptions\n };\n } catch (e) {\n this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n return `${key}${sep}${optionsString}`;\n }\n delete clonedOptions.defaultValue;\n return key;\n }\n while (match = this.nestingRegexp.exec(str)) {\n let formatters = [];\n clonedOptions = {\n ...options\n };\n clonedOptions = clonedOptions.replace && typeof clonedOptions.replace !== 'string' ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n let doReduce = false;\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n const r = match[1].split(this.formatSeparator).map(elem => elem.trim());\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n if (!value) {\n this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n value = '';\n }\n if (doReduce) {\n value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n ...options,\n interpolationkey: match[1].trim()\n }), value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n}\n\nfunction parseFormatStr(formatStr) {\n let formatName = formatStr.toLowerCase().trim();\n const formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n const p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n const optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n const opts = optStr.split(';');\n opts.forEach(opt => {\n if (!opt) return;\n const [key, ...rest] = opt.split(':');\n const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n if (val === 'false') formatOptions[key.trim()] = false;\n if (val === 'true') formatOptions[key.trim()] = true;\n if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n });\n }\n }\n return {\n formatName,\n formatOptions\n };\n}\nfunction createCachedFormatter(fn) {\n const cache = {};\n return function invokeFormatter(val, lng, options) {\n const key = lng + JSON.stringify(options);\n let formatter = cache[key];\n if (!formatter) {\n formatter = fn(getCleanedCode(lng), options);\n cache[key] = formatter;\n }\n return formatter(val);\n };\n}\nclass Formatter {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n currency: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt,\n style: 'currency'\n });\n return val => formatter.format(val);\n }),\n datetime: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.DateTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n relativetime: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.RelativeTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val, opt.range || 'day');\n }),\n list: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.ListFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n })\n };\n this.init(options);\n }\n init(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n const iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n format(value, format, lng) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const formats = format.split(this.formatSeparator);\n const result = formats.reduce((mem, f) => {\n const {\n formatName,\n formatOptions\n } = parseFormatStr(f);\n if (this.formats[formatName]) {\n let formatted = mem;\n try {\n const valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = this.formats[formatName](mem, l, {\n ...formatOptions,\n ...options,\n ...valOptions\n });\n } catch (error) {\n this.logger.warn(error);\n }\n return formatted;\n } else {\n this.logger.warn(`there was no format function for ${formatName}`);\n }\n return mem;\n }, value);\n return result;\n }\n}\n\nfunction removePending(q, name) {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n}\nclass Connector extends EventEmitter {\n constructor(backend, store, services) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n super();\n this.backend = backend;\n this.store = store;\n this.services = services;\n this.languageUtils = services.languageUtils;\n this.options = options;\n this.logger = baseLogger.create('backendConnector');\n this.waitingReads = [];\n this.maxParallelReads = options.maxParallelReads || 10;\n this.readingCalls = 0;\n this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n this.state = {};\n this.queue = [];\n if (this.backend && this.backend.init) {\n this.backend.init(services, options.backend, options);\n }\n }\n queueLoad(languages, namespaces, options, callback) {\n const toLoad = {};\n const pending = {};\n const toLoadLanguages = {};\n const toLoadNamespaces = {};\n languages.forEach(lng => {\n let hasAllNamespaces = true;\n namespaces.forEach(ns => {\n const name = `${lng}|${ns}`;\n if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n this.state[name] = 2;\n } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n this.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n loaded(name, err, data) {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (data) {\n this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n skipCopy: true\n });\n }\n this.state[name] = err ? -1 : 2;\n const loaded = {};\n this.queue.forEach(q => {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(l => {\n if (!loaded[l]) loaded[l] = {};\n const loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(n => {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(q => !q.done);\n }\n read(lng, ns, fcName) {\n let tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n let wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n let callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng,\n ns,\n fcName,\n tried,\n wait,\n callback\n });\n return;\n }\n this.readingCalls++;\n const resolver = (err, data) => {\n this.readingCalls--;\n if (this.waitingReads.length > 0) {\n const next = this.waitingReads.shift();\n this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < this.maxRetries) {\n setTimeout(() => {\n this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n const fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n const r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(data => resolver(null, data)).catch(resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n prepareLoading(languages, namespaces) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let callback = arguments.length > 3 ? arguments[3] : undefined;\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n const toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(name => {\n this.loadOne(name);\n });\n }\n load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n loadOne(name) {\n let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n this.loaded(name, err, data);\n });\n }\n saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n let clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : () => {};\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend && this.backend.create) {\n const opts = {\n ...options,\n isUpdate\n };\n const fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n let r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(data => clb(null, data)).catch(clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n}\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: false,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n let ret = {};\n if (typeof args[1] === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n const options = args[3] || args[2];\n Object.keys(options).forEach(key => {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: value => value,\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n}\n\nfunction noop() {}\nfunction bindMemberFunctions(inst) {\n const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(mem => {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\nclass I18n extends EventEmitter {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n super();\n this.options = transformOptions(options);\n this.services = {};\n this.logger = baseLogger;\n this.modules = {\n external: []\n };\n bindMemberFunctions(this);\n if (callback && !this.isInitialized && !options.isClone) {\n if (!this.options.initImmediate) {\n this.init(options, callback);\n return this;\n }\n setTimeout(() => {\n this.init(options, callback);\n }, 0);\n }\n }\n init() {\n var _this = this;\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n this.isInitializing = true;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n const defOpts = get();\n this.options = {\n ...defOpts,\n ...this.options,\n ...transformOptions(options)\n };\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation\n };\n }\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n let formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n const lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n const s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n _this.emit(event, ...args);\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _this.emit(event, ...args);\n });\n this.modules.external.forEach(m => {\n if (m.init) m.init(this);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(fcName => {\n this[fcName] = function () {\n return _this.store[fcName](...arguments);\n };\n });\n const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(fcName => {\n this[fcName] = function () {\n _this.store[fcName](...arguments);\n return _this;\n };\n });\n const deferred = defer();\n const load = () => {\n const finish = (err, t) => {\n this.isInitializing = false;\n if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n this.isInitialized = true;\n if (!this.options.isClone) this.logger.log('initialized', this.options);\n this.emit('initialized', this.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (this.languages && this.options.compatibilityAPI !== 'v1' && !this.isInitialized) return finish(null, this.t.bind(this));\n this.changeLanguage(this.options.lng, finish);\n };\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n loadResources(language) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n let usedCallback = callback;\n const usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n const toLoad = [];\n const append = lng => {\n if (!lng) return;\n if (lng === 'cimode') return;\n const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(l => {\n if (l === 'cimode') return;\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(l => append(l));\n } else {\n append(usedLng);\n }\n if (this.options.preload) {\n this.options.preload.forEach(l => append(l));\n }\n this.services.backendConnector.load(toLoad, this.options.ns, e => {\n if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n reloadResources(lngs, ns, callback) {\n const deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, err => {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (let li = 0; li < this.languages.length; li++) {\n const lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n changeLanguage(lng, callback) {\n var _this2 = this;\n this.isLanguageChangingTo = lng;\n const deferred = defer();\n this.emit('languageChanging', lng);\n const setLngProps = l => {\n this.language = l;\n this.languages = this.services.languageUtils.toResolveHierarchy(l);\n this.resolvedLanguage = undefined;\n this.setResolvedLanguage(l);\n };\n const done = (err, l) => {\n if (l) {\n setLngProps(l);\n this.translator.changeLanguage(l);\n this.isLanguageChangingTo = undefined;\n this.emit('languageChanged', l);\n this.logger.log('languageChanged', l);\n } else {\n this.isLanguageChangingTo = undefined;\n }\n deferred.resolve(function () {\n return _this2.t(...arguments);\n });\n if (callback) callback(err, function () {\n return _this2.t(...arguments);\n });\n };\n const setLng = lngs => {\n if (!lng && !lngs && this.services.languageDetector) lngs = [];\n const l = typeof lngs === 'string' ? lngs : this.services.languageUtils.getBestMatchFromCodes(lngs);\n if (l) {\n if (!this.language) {\n setLngProps(l);\n }\n if (!this.translator.language) this.translator.changeLanguage(l);\n if (this.services.languageDetector && this.services.languageDetector.cacheUserLanguage) this.services.languageDetector.cacheUserLanguage(l);\n }\n this.loadResources(l, err => {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n getFixedT(lng, ns, keyPrefix) {\n var _this3 = this;\n const fixedT = function (key, opts) {\n let options;\n if (typeof opts !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n options = _this3.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = {\n ...opts\n };\n }\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n const keySeparator = _this3.options.keySeparator || '.';\n let resultKey;\n if (options.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(k => `${options.keyPrefix}${keySeparator}${k}`);\n } else {\n resultKey = options.keyPrefix ? `${options.keyPrefix}${keySeparator}${key}` : key;\n }\n return _this3.t(resultKey, options);\n };\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n t() {\n return this.translator && this.translator.translate(...arguments);\n }\n exists() {\n return this.translator && this.translator.exists(...arguments);\n }\n setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n hasLoadedNamespace(ns) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n const lng = options.lng || this.resolvedLanguage || this.languages[0];\n const fallbackLng = this.options ? this.options.fallbackLng : false;\n const lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = this.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 2;\n };\n if (options.precheck) {\n const preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n loadNamespaces(ns, callback) {\n const deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(n => {\n if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);\n });\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n loadLanguages(lngs, callback) {\n const deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n const preloaded = this.options.preload || [];\n const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0);\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n const languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());\n return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n static createInstance() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n }\n cloneInstance() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n const forkResourceStore = options.forkResourceStore;\n if (forkResourceStore) delete options.forkResourceStore;\n const mergedOptions = {\n ...this.options,\n ...options,\n ...{\n isClone: true\n }\n };\n const clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n const membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(m => {\n clone[m] = this[m];\n });\n clone.services = {\n ...this.services\n };\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n if (forkResourceStore) {\n clone.store = new ResourceStore(this.store.data, mergedOptions);\n clone.services.resourceStore = clone.store;\n }\n clone.translator = new Translator(clone.services, mergedOptions);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n clone.emit(event, ...args);\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = mergedOptions;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n}\nconst instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","const defaults = {\n loadPath: '/locales/{{lng}}/{{ns}}.json',\n addPath: '/locales/add/{{lng}}/{{ns}}',\n multiSeparator: '+',\n allowMultiLoading: false,\n fetch: typeof fetch === 'undefined' ? undefined : fetch,\n parse: JSON.parse,\n stringify: JSON.stringify,\n requestOptions: {},\n};\n\nconst arrify = (val) => (Array.isArray(val) ? val : [val]);\nconst normalize = (funcOrVal, ...args) => (typeof funcOrVal === 'function' ? funcOrVal(...args) : funcOrVal);\n\nclass BackendError extends Error {\n retry = null;\n\n constructor(message, retry = false) {\n super(message);\n\n this.retry = retry;\n }\n}\n\nexport default class Backend {\n constructor(services, options) {\n this.init(services, options);\n }\n\n type = 'backend';\n\n static type = 'backend';\n\n init(services, options = {}) {\n this.services = services;\n\n this.options = {\n ...defaults,\n ...this.options,\n ...options,\n };\n }\n\n getLoadPath(languages, namespaces) {\n return normalize(this.options.loadPath, languages, namespaces);\n }\n\n read(language, namespace, callback) {\n const loadPath = this.getLoadPath(language, namespace);\n const url = this.services.interpolator.interpolate(loadPath, { lng: language, ns: namespace });\n\n this.loadUrl(url, callback);\n }\n\n readMulti(languages, namespaces, callback) {\n const loadPath = this.getLoadPath(languages, namespaces);\n const { multiSeparator } = this.options;\n\n const url = this.services.interpolator.interpolate(loadPath, {\n lng: languages.join(multiSeparator),\n ns: namespaces.join(multiSeparator),\n });\n\n this.loadUrl(url, callback);\n }\n\n loadUrl(url, callback) {\n const { fetch, requestOptions, parse } = this.options;\n\n fetch(url, requestOptions)\n .then((response) => {\n const { ok, status } = response;\n\n if (!ok) {\n const retry = status >= 500 && status < 600; // don't retry for 4xx codes\n\n throw new BackendError(`failed loading ${url}`, retry);\n }\n\n return response.text();\n }, () => {\n throw new BackendError(`failed loading ${url}`);\n })\n .then((data) => {\n try {\n return callback(null, parse(data, url));\n } catch {\n throw new BackendError(`failed parsing ${url} to json`, false);\n }\n })\n .catch((e) => {\n if (e instanceof BackendError) {\n callback(e.message, e.retry);\n }\n });\n }\n\n create(languages, namespace, key, fallbackValue) {\n const payload = {\n [key]: fallbackValue || '',\n };\n\n arrify(languages).forEach((lng) => {\n const {\n addPath,\n requestOptions,\n fetch,\n stringify,\n } = this.options;\n\n const url = this.services.interpolator.interpolate(addPath, { lng, ns: namespace });\n\n try {\n fetch(url, {\n method: 'POST',\n body: stringify(payload),\n ...requestOptions,\n });\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n }\n });\n }\n}\n","import i18n from 'i18next'\nimport {initReactI18next} from 'react-i18next'\nimport Fetch from 'i18next-fetch-backend'\n\ni18n.use(initReactI18next)\n .use(Fetch)\n .init({\n lng: Common.Locale.currentLang,\n fallbackLng: Common.Locale.defaultLang,\n escapeValue: false,\n backend: {\n loadPath: './locale/{{lng}}.json'\n },\n interpolation: { escapeValue: false },\n react: {\n useSuspense: false,\n },\n }).then(() => {\n console.log(\"i18next is ready\");\n })\n .catch((error) => {\n console.error(\"i18next initialization error:\", error);\n });\n\ni18n.on('failedLoading', (lng, ns, msg) => {\n console.log(msg);\n});\n\nexport default i18n;","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle, useState } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { f7events, f7routers, f7 } from '../shared/f7.js';\n\n\nconst RoutableModals = /*#__PURE__*/forwardRef((props, ref) => {\n const [modals, setModals] = useState([]);\n const elRef = useRef(null);\n const routerData = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const onMount = () => {\n routerData.current = {\n modals,\n el: elRef.current,\n setModals(newModals) {\n setModals([...newModals]);\n }\n };\n f7routers.modals = routerData.current;\n };\n const onDestroy = () => {\n if (!routerData.current) return;\n f7routers.modals = null;\n routerData.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n useIsomorphicLayoutEffect(() => {\n if (!routerData.current || !f7) return;\n f7events.emit('modalsRouterDidUpdate', routerData.current);\n });\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: elRef,\n className: \"framework7-modals\"\n }, modals.map(_ref => {\n let {\n component: ModalComponent,\n id: modalId,\n props: modalProps\n } = _ref;\n return /*#__PURE__*/React.createElement(ModalComponent, _extends({\n key: modalId\n }, modalProps));\n }));\n});\nRoutableModals.displayName = 'f7-routable-modals';\nexport default RoutableModals;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport RoutableModals from './routable-modals.js';\nimport { f7init, f7 } from '../shared/f7.js';\n\n\n\n\nconst App = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n style,\n children,\n ...rest\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const params = rest;\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const classes = classNames(className, 'framework7-root', colorClasses(props));\n\n // eslint-disable-next-line\n if (!f7 || typeof window === 'undefined') {\n f7init(elRef.current, params, false);\n }\n useIsomorphicLayoutEffect(() => {\n const parentEl = elRef.current && elRef.current.parentNode;\n /* eslint-disable no-restricted-globals */\n if (typeof document !== 'undefined' && parentEl && parentEl !== document.body && parentEl.parentNode === document.body) {\n parentEl.style.height = '100%';\n }\n /* eslint-enable no-restricted-globals */\n if (f7) {\n f7.init(elRef.current);\n return;\n }\n f7init(elRef.current, params, true);\n }, []);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: \"framework7-root\",\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children, /*#__PURE__*/React.createElement(RoutableModals, null));\n});\nApp.displayName = 'f7-app';\nexport default App;","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
          \n * I'm a fade Transition!\n *
          \n * )}\n *
          \n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
          \n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
          \n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\nimport { forceReflow } from './utils/reflow';\n\nvar _addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return addOneClass(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return removeOneClass(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
          \n * \n *
          \n * {\"I'll receive my-node-* classes\"}\n *
          \n *
          \n * \n *
          \n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n if (node) forceReflow(node);\n }\n\n if (className) {\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n }\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n /**\n * The animation classNames applied to the component as it appears, enters,\n * exits or has finished the transition. A single name can be provided, which\n * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n *\n * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n *\n * A few details to note about how these classes are applied:\n *\n * 1. They are _joined_ with the ones that are already defined on the child\n * component, so if you want to add some base styles, you can use\n * `className` without worrying that it will be overridden.\n *\n * 2. If the transition component mounts with `in={false}`, no classes are\n * applied yet. You might be expecting `*-exit-done`, but if you think\n * about it, a component cannot finish exiting if it hasn't entered yet.\n *\n * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n * allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n * an epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import { useState } from 'react';\nimport { f7, f7ready, theme } from './f7.js';\nexport const useTheme = () => {\n const [t, setTheme] = useState(f7 ? theme : null);\n if (!f7) {\n f7ready(() => {\n setTheme(theme);\n });\n }\n return t;\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs, extend } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { useTheme } from '../shared/use-theme.js';\n\n\nconst Preloader = /*#__PURE__*/forwardRef((props, ref) => {\n const theme = useTheme();\n const {\n className,\n id,\n style,\n size\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const preloaderStyle = {};\n let sizeComputed = size;\n if (sizeComputed && typeof sizeComputed === 'string' && sizeComputed.indexOf('px') >= 0) {\n sizeComputed = sizeComputed.replace('px', '');\n }\n if (sizeComputed) {\n preloaderStyle.width = `${sizeComputed}px`;\n preloaderStyle.height = `${sizeComputed}px`;\n preloaderStyle['--f7-preloader-size'] = `${sizeComputed}px`;\n }\n if (style) extend(preloaderStyle, style || {});\n let innerEl;\n if (theme && theme.md) {\n innerEl = /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner\"\n }, /*#__PURE__*/React.createElement(\"svg\", {\n viewBox: \"0 0 36 36\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"18\",\n cy: \"18\",\n r: \"16\"\n })));\n } else if (theme && theme.ios) {\n innerEl = /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner\"\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }));\n } else if (!theme) {\n innerEl = /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner\"\n });\n }\n const classes = classNames(className, {\n preloader: true\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"span\", _extends({\n id: id,\n style: preloaderStyle,\n className: classes,\n ref: elRef\n }, extraAttrs), innerEl);\n});\nPreloader.displayName = 'f7-preloader';\nexport default Preloader;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport Preloader from './preloader.js';\nimport { useTab } from '../shared/use-tab.js';\nimport { f7ready, f7 } from '../shared/f7.js';\n\n\nconst PageContent = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n tab,\n tabActive,\n ptr,\n ptrDistance,\n ptrPreloader = true,\n ptrBottom,\n ptrMousewheel,\n infinite,\n infiniteTop,\n infiniteDistance,\n infinitePreloader = true,\n hideBarsOnScroll,\n hideNavbarOnScroll,\n hideToolbarOnScroll,\n messagesContent,\n loginScreen\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const onPtrPullStart = el => {\n if (elRef.current !== el) return;\n emit(props, 'ptrPullStart');\n };\n const onPtrPullMove = el => {\n if (elRef.current !== el) return;\n emit(props, 'ptrPullMove');\n };\n const onPtrPullEnd = el => {\n if (elRef.current !== el) return;\n emit(props, 'ptrPullEnd');\n };\n const onPtrRefresh = (el, done) => {\n if (elRef.current !== el) return;\n emit(props, 'ptrRefresh', done);\n };\n const onPtrDone = el => {\n if (elRef.current !== el) return;\n emit(props, 'ptrDone');\n };\n const onInfinite = el => {\n if (elRef.current !== el) return;\n emit(props, 'infinite');\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n useTab(elRef, props);\n const attachEvents = () => {\n f7ready(() => {\n if (ptr) {\n f7.on('ptrPullStart', onPtrPullStart);\n f7.on('ptrPullMove', onPtrPullMove);\n f7.on('ptrPullEnd', onPtrPullEnd);\n f7.on('ptrRefresh', onPtrRefresh);\n f7.on('ptrDone', onPtrDone);\n }\n if (infinite) {\n f7.on('infinite', onInfinite);\n }\n });\n };\n const detachEvents = () => {\n if (!f7) return;\n f7.off('ptrPullStart', onPtrPullStart);\n f7.off('ptrPullMove', onPtrPullMove);\n f7.off('ptrPullEnd', onPtrPullEnd);\n f7.off('ptrRefresh', onPtrRefresh);\n f7.off('ptrDone', onPtrDone);\n f7.off('infinite', onInfinite);\n };\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n return detachEvents;\n });\n let ptrEl;\n let infiniteEl;\n if (ptr && ptrPreloader) {\n ptrEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"ptr-preloader\"\n }, /*#__PURE__*/React.createElement(Preloader, null), /*#__PURE__*/React.createElement(\"div\", {\n className: \"ptr-arrow\"\n }));\n }\n if (infinite && infinitePreloader) {\n infiniteEl = /*#__PURE__*/React.createElement(Preloader, {\n className: \"infinite-scroll-preloader\"\n });\n }\n const classes = classNames(className, 'page-content', {\n tab,\n 'tab-active': tabActive,\n 'ptr-content': ptr,\n 'ptr-bottom': ptrBottom,\n 'infinite-scroll-content': infinite,\n 'infinite-scroll-top': infiniteTop,\n 'hide-bars-on-scroll': hideBarsOnScroll,\n 'hide-navbar-on-scroll': hideNavbarOnScroll,\n 'hide-toolbar-on-scroll': hideToolbarOnScroll,\n 'messages-content': messagesContent,\n 'login-screen-content': loginScreen\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n \"data-ptr-distance\": ptrDistance || undefined,\n \"data-ptr-mousewheel\": ptrMousewheel || undefined,\n \"data-infinite-distance\": infiniteDistance || undefined,\n ref: elRef\n }, extraAttrs), ptrBottom ? null : ptrEl, infiniteTop ? infiniteEl : null, children, infiniteTop ? null : infiniteEl, ptrBottom ? ptrEl : null);\n});\nPageContent.displayName = 'f7-page-content';\nexport default PageContent;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, getSlots, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport PageContent from './page-content.js';\n\n\nconst Page = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n name,\n withSubnavbar,\n subnavbar,\n withNavbarLarge,\n navbarLarge,\n noNavbar,\n noToolbar,\n tabs,\n pageContent = true,\n noSwipeback,\n ptr,\n ptrDistance,\n ptrPreloader = true,\n ptrBottom,\n ptrMousewheel,\n infinite,\n infiniteTop,\n infiniteDistance,\n infinitePreloader = true,\n hideBarsOnScroll,\n hideNavbarOnScroll,\n hideToolbarOnScroll,\n messagesContent,\n loginScreen,\n onPtrPullStart,\n onPtrPullMove,\n onPtrPullEnd,\n onPtrRefresh,\n onPtrDone,\n onInfinite\n } = props;\n const hasSubnavbar = useRef(false);\n const hasNavbarLarge = useRef(false);\n const hasNavbarLargeCollapsed = useRef(false);\n const hasCardExpandableOpened = useRef(false);\n const routerPositionClass = useRef('');\n const routerPageRole = useRef(null);\n const routerPageRoleDetailRoot = useRef(false);\n const routerPageMasterStack = useRef(false);\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n\n // Main Page Events\n const onPageMounted = page => {\n if (elRef.current !== page.el) return;\n emit(props, 'pageMounted', page);\n };\n const onPageInit = page => {\n if (elRef.current !== page.el) return;\n if (typeof withSubnavbar === 'undefined' && typeof subnavbar === 'undefined') {\n if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length || page.$el.children('.navbar').find('.subnavbar').length) {\n hasSubnavbar.current = true;\n }\n }\n if (typeof withNavbarLarge === 'undefined' && typeof navbarLarge === 'undefined') {\n if (page.$navbarEl && page.$navbarEl.hasClass('navbar-large')) {\n hasNavbarLarge.current = true;\n }\n }\n emit(props, 'pageInit', page);\n };\n const onPageReinit = page => {\n if (elRef.current !== page.el) return;\n emit(props, 'pageReinit', page);\n };\n const onPageBeforeIn = page => {\n if (elRef.current !== page.el) return;\n if (!page.swipeBack) {\n if (page.from === 'next') {\n routerPositionClass.current = 'page-next';\n }\n if (page.from === 'previous') {\n routerPositionClass.current = 'page-previous';\n }\n }\n emit(props, 'pageBeforeIn', page);\n };\n const onPageBeforeOut = page => {\n if (elRef.current !== page.el) return;\n emit(props, 'pageBeforeOut', page);\n };\n const onPageAfterOut = page => {\n if (elRef.current !== page.el) return;\n if (page.to === 'next') {\n routerPositionClass.current = 'page-next';\n }\n if (page.to === 'previous') {\n routerPositionClass.current = 'page-previous';\n }\n emit(props, 'pageAfterOut', page);\n };\n const onPageAfterIn = page => {\n if (elRef.current !== page.el) return;\n routerPositionClass.current = 'page-current';\n emit(props, 'pageAfterIn', page);\n };\n const onPageBeforeRemove = page => {\n if (elRef.current !== page.el) return;\n emit(props, 'pageBeforeRemove', page);\n };\n const onPageBeforeUnmount = page => {\n if (elRef.current !== page.el) return;\n emit(props, 'pageBeforeUnmount', page);\n };\n const onPagePosition = (pageEl, position) => {\n if (elRef.current !== pageEl) return;\n routerPositionClass.current = `page-${position}`;\n };\n const onPageRole = (pageEl, rolesData) => {\n if (elRef.current !== pageEl) return;\n routerPageRole.current = rolesData.role;\n routerPageRoleDetailRoot.current = rolesData.detailRoot;\n };\n const onPageMasterStack = pageEl => {\n if (elRef.current !== pageEl) return;\n routerPageMasterStack.current = true;\n };\n const onPageMasterUnstack = pageEl => {\n if (elRef.current !== pageEl) return;\n routerPageMasterStack.current = false;\n };\n const onPageNavbarLargeCollapsed = pageEl => {\n if (elRef.current !== pageEl) return;\n hasNavbarLargeCollapsed.current = true;\n };\n const onPageNavbarLargeExpanded = pageEl => {\n if (elRef.current !== pageEl) return;\n hasNavbarLargeCollapsed.current = false;\n };\n const onCardOpened = (cardEl, pageEl) => {\n if (elRef.current !== pageEl) return;\n hasCardExpandableOpened.current = true;\n };\n const onCardClose = (cardEl, pageEl) => {\n if (elRef.current !== pageEl) return;\n hasCardExpandableOpened.current = false;\n };\n const onPageTabShow = pageEl => {\n if (elRef.current !== pageEl) return;\n emit(props, 'pageTabShow');\n };\n const onPageTabHide = pageEl => {\n if (elRef.current !== pageEl) return;\n emit(props, 'pageTabHide');\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const attachEvents = () => {\n f7ready(() => {\n f7.on('pageMounted', onPageMounted);\n f7.on('pageInit', onPageInit);\n f7.on('pageReinit', onPageReinit);\n f7.on('pageBeforeIn', onPageBeforeIn);\n f7.on('pageBeforeOut', onPageBeforeOut);\n f7.on('pageAfterOut', onPageAfterOut);\n f7.on('pageAfterIn', onPageAfterIn);\n f7.on('pageBeforeRemove', onPageBeforeRemove);\n f7.on('pageBeforeUnmount', onPageBeforeUnmount);\n f7.on('pagePosition', onPagePosition);\n f7.on('pageRole', onPageRole);\n f7.on('pageMasterStack', onPageMasterStack);\n f7.on('pageMasterUnstack', onPageMasterUnstack);\n f7.on('pageNavbarLargeCollapsed', onPageNavbarLargeCollapsed);\n f7.on('pageNavbarLargeExpanded', onPageNavbarLargeExpanded);\n f7.on('cardOpened', onCardOpened);\n f7.on('cardClose', onCardClose);\n f7.on('pageTabShow', onPageTabShow);\n f7.on('pageTabHide', onPageTabHide);\n });\n };\n const detachEvents = () => {\n if (!f7) return;\n f7.off('pageMounted', onPageMounted);\n f7.off('pageInit', onPageInit);\n f7.off('pageReinit', onPageReinit);\n f7.off('pageBeforeIn', onPageBeforeIn);\n f7.off('pageBeforeOut', onPageBeforeOut);\n f7.off('pageAfterOut', onPageAfterOut);\n f7.off('pageAfterIn', onPageAfterIn);\n f7.off('pageBeforeRemove', onPageBeforeRemove);\n f7.off('pageBeforeUnmount', onPageBeforeUnmount);\n f7.off('pagePosition', onPagePosition);\n f7.off('pageRole', onPageRole);\n f7.off('pageMasterStack', onPageMasterStack);\n f7.off('pageMasterUnstack', onPageMasterUnstack);\n f7.off('pageNavbarLargeCollapsed', onPageNavbarLargeCollapsed);\n f7.off('pageNavbarLargeExpanded', onPageNavbarLargeExpanded);\n f7.off('cardOpened', onCardOpened);\n f7.off('cardClose', onCardClose);\n f7.off('pageTabShow', onPageTabShow);\n f7.off('pageTabHide', onPageTabHide);\n };\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n return detachEvents;\n });\n const slots = getSlots(props);\n const fixedList = [];\n const staticList = [];\n const {\n static: slotsStatic,\n fixed: slotsFixed,\n default: slotsDefault\n } = slots;\n const fixedTags = 'navbar toolbar tabbar subnavbar searchbar messagebar fab list-index panel'.split(' ').map(tagName => `f7-${tagName}`);\n let hasSubnavbarComputed;\n let hasNavbarLargeComputed;\n let hasMessages = messagesContent;\n if (slotsDefault) {\n slotsDefault.forEach(child => {\n if (typeof child === 'undefined') return;\n let isFixedTag = false;\n const tag = child.type && (child.type.displayName || child.type.name);\n if (!tag) {\n if (pageContent) staticList.push(child);\n return;\n }\n if (tag === 'f7-subnavbar') hasSubnavbarComputed = true;\n if (tag === 'f7-navbar') {\n if (child.props && child.props.large) hasNavbarLargeComputed = true;\n }\n if (typeof hasMessages === 'undefined' && tag === 'f7-messages') hasMessages = true;\n if (fixedTags.indexOf(tag) >= 0) {\n isFixedTag = true;\n }\n if (pageContent) {\n if (isFixedTag) fixedList.push(child);else staticList.push(child);\n }\n });\n }\n const forceSubnavbar = typeof subnavbar === 'undefined' && typeof withSubnavbar === 'undefined' ? hasSubnavbarComputed || hasSubnavbar.current : false;\n const forceNavbarLarge = typeof navbarLarge === 'undefined' && typeof withNavbarLarge === 'undefined' ? hasNavbarLargeComputed || hasNavbarLarge.current : false;\n const classes = classNames(className, 'page', routerPositionClass.current, {\n tabs,\n 'page-with-subnavbar': subnavbar || withSubnavbar || forceSubnavbar,\n 'page-with-navbar-large': navbarLarge || withNavbarLarge || forceNavbarLarge,\n 'no-navbar': noNavbar,\n 'no-toolbar': noToolbar,\n 'no-swipeback': noSwipeback,\n 'page-master': routerPageRole.current === 'master',\n 'page-master-detail': routerPageRole.current === 'detail',\n 'page-master-detail-root': routerPageRoleDetailRoot.current === true,\n 'page-master-stacked': routerPageMasterStack.current === true,\n 'page-with-navbar-large-collapsed': hasNavbarLargeCollapsed.current === true,\n 'page-with-card-opened': hasCardExpandableOpened.current === true,\n 'login-screen-page': loginScreen\n }, colorClasses(props));\n if (!pageContent) {\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n \"data-name\": name,\n ref: elRef\n }, extraAttrs), slotsFixed, slotsStatic, slotsDefault);\n }\n const pageContentEl = /*#__PURE__*/React.createElement(PageContent, {\n ptr: ptr,\n ptrDistance: ptrDistance,\n ptrPreloader: ptrPreloader,\n ptrBottom: ptrBottom,\n ptrMousewheel: ptrMousewheel,\n infinite: infinite,\n infiniteTop: infiniteTop,\n infiniteDistance: infiniteDistance,\n infinitePreloader: infinitePreloader,\n hideBarsOnScroll: hideBarsOnScroll,\n hideNavbarOnScroll: hideNavbarOnScroll,\n hideToolbarOnScroll: hideToolbarOnScroll,\n messagesContent: messagesContent || hasMessages,\n loginScreen: loginScreen,\n onPtrPullStart: onPtrPullStart,\n onPtrPullMove: onPtrPullMove,\n onPtrPullEnd: onPtrPullEnd,\n onPtrRefresh: onPtrRefresh,\n onPtrDone: onPtrDone,\n onInfinite: onInfinite\n }, slotsStatic, staticList);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n \"data-name\": name,\n ref: elRef\n }, extraAttrs), fixedList, slotsFixed, pageContentEl);\n});\nPage.displayName = 'f7-page';\nexport default Page;","import { useEffect, useRef } from 'react';\nimport { watchProp } from './watch-prop.js';\nimport { f7, f7ready } from './f7.js';\nexport const useTooltip = (elRef, props) => {\n const f7Tooltip = useRef(null);\n const {\n tooltip,\n tooltipTrigger\n } = props;\n const onMount = () => {\n if (!elRef.current) return;\n if (!tooltip) return;\n f7ready(() => {\n f7Tooltip.current = f7.tooltip.create({\n targetEl: elRef.current,\n text: tooltip,\n trigger: tooltipTrigger\n });\n });\n };\n const onDestroy = () => {\n if (f7Tooltip.current && f7Tooltip.current.destroy) {\n f7Tooltip.current.destroy();\n f7Tooltip.current = null;\n }\n };\n useEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n watchProp(tooltip, value => {\n if (!value && f7Tooltip.current) {\n f7Tooltip.current.destroy();\n f7Tooltip.current = null;\n return;\n }\n if (value && !f7Tooltip.current && f7) {\n f7Tooltip.current = f7.tooltip.create({\n targetEl: elRef.current,\n text: value,\n trigger: tooltipTrigger\n });\n return;\n }\n if (!value || !f7Tooltip.current) return;\n f7Tooltip.current.setText(value);\n });\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs, extend } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { useTooltip } from '../shared/use-tooltip.js';\nimport { useTheme } from '../shared/use-theme.js';\n\n\nconst Icon = /*#__PURE__*/forwardRef((props, ref) => {\n const theme = useTheme();\n const {\n className,\n id,\n style,\n children,\n material,\n f7,\n icon,\n md,\n ios,\n size\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n useTooltip(elRef, props);\n const getClasses = () => {\n let classes = {\n icon: true\n };\n let themeIcon;\n if (theme && theme.ios) themeIcon = ios;else if (theme && theme.md) themeIcon = md;\n if (themeIcon) {\n const parts = themeIcon.split(':');\n const prop = parts[0];\n const value = parts[1];\n if (prop === 'material' || prop === 'f7') {\n classes['material-icons'] = prop === 'material';\n classes['f7-icons'] = prop === 'f7';\n }\n if (prop === 'icon') {\n classes[value] = true;\n }\n if (icon) classes[icon] = true;\n } else {\n classes = {\n icon: true,\n 'material-icons': material,\n 'f7-icons': f7\n };\n if (icon) classes[icon] = true;\n }\n return classNames(className, classes, colorClasses(props));\n };\n const getIconText = () => {\n let text = material || f7;\n if (md && theme && theme.md && (md.indexOf('material:') >= 0 || md.indexOf('f7:') >= 0)) {\n text = md.split(':')[1];\n } else if (ios && theme && theme.ios && (ios.indexOf('material:') >= 0 || ios.indexOf('f7:') >= 0)) {\n text = ios.split(':')[1];\n }\n return text;\n };\n let sizeComputed = size;\n if (typeof size === 'number' || parseFloat(size) === size * 1) {\n sizeComputed = `${size}px`;\n }\n return /*#__PURE__*/React.createElement(\"i\", _extends({\n id: id,\n style: extend({\n fontSize: sizeComputed,\n width: sizeComputed,\n height: sizeComputed\n }, style),\n className: getClasses(),\n ref: elRef\n }, extraAttrs), getIconText(), children);\n});\nIcon.displayName = 'f7-icon';\nexport default Icon;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { useTooltip } from '../shared/use-tooltip.js';\n\n\n/* dts-instance\nf7Tooltip: Tooltip.Tooltip\n*/\n\n\nconst Badge = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n useTooltip(elRef, props);\n const classes = classNames(className, 'badge', colorClasses(props));\n return /*#__PURE__*/React.createElement(\"span\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children);\n});\nBadge.displayName = 'f7-badge';\nexport default Badge;","import React from 'react';\nimport Icon from '../components/icon.js';\nimport Badge from '../components/badge.js';\nexport const useIcon = function (props) {\n if (props === void 0) {\n props = {};\n }\n const {\n icon,\n iconMaterial,\n iconF7,\n iconMd,\n iconIos,\n iconColor,\n iconSize,\n iconBadge,\n badgeColor,\n iconBadgeColor\n } = props;\n if (icon || iconMaterial || iconF7 || iconMd || iconIos) {\n return /*#__PURE__*/React.createElement(Icon, {\n material: iconMaterial,\n f7: iconF7,\n icon: icon,\n md: iconMd,\n ios: iconIos,\n color: iconColor,\n size: iconSize\n }, (iconBadge || iconBadge === 0) && /*#__PURE__*/React.createElement(Badge, {\n color: badgeColor || iconBadgeColor\n }, iconBadge));\n }\n return null;\n};","import { useEffect } from 'react';\nexport const useRouteProps = function (elRef, _temp) {\n let {\n routeProps\n } = _temp === void 0 ? {} : _temp;\n useEffect(() => {\n if (elRef.current) {\n elRef.current.f7RouteProps = routeProps;\n }\n return () => {\n if (elRef.current && elRef.current.f7RouteProps) {\n delete elRef.current.f7RouteProps;\n }\n };\n }, [routeProps]);\n};","import React from 'react';\nconst TabbarContext = /*#__PURE__*/React.createContext({\n tabbarHasIcons: false\n});\nexport { TabbarContext };","import { useEffect } from 'react';\nimport { f7ready, f7 } from './f7.js';\nimport { extend } from './utils.js';\nexport const useSmartSelect = (smartSelect, smartSelectParams, f7SmartSelect, getEl) => {\n const onMount = () => {\n f7ready(() => {\n if (smartSelect) {\n const ssParams = extend({\n el: getEl()\n }, smartSelectParams || {});\n f7SmartSelect.current = f7.smartSelect.create(ssParams);\n }\n });\n };\n const onDestroy = () => {\n if (f7SmartSelect.current && f7SmartSelect.current.destroy) {\n f7SmartSelect.current.destroy();\n }\n f7SmartSelect.current = null;\n };\n useEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle, useContext } from 'react';\nimport { classNames, getExtraAttrs, isStringProp, emit } from '../shared/utils.js';\nimport { colorClasses, routerAttrs, routerClasses, actionsAttrs, actionsClasses } from '../shared/mixins.js';\nimport { useIcon } from '../shared/use-icon.js';\nimport { useRouteProps } from '../shared/use-route-props.js';\nimport { useTooltip } from '../shared/use-tooltip.js';\nimport { TabbarContext } from '../shared/tabbar-context.js';\nimport Badge from './badge.js';\nimport { useSmartSelect } from '../shared/use-smart-select.js';\n\n\n\nconst Link = /*#__PURE__*/forwardRef((props, ref) => {\n const f7SmartSelect = useRef(null);\n const {\n className,\n id,\n style,\n children,\n noLinkClass,\n text,\n tabLink,\n tabLinkActive,\n tabbarLabel,\n iconOnly,\n badge,\n badgeColor,\n href = '#',\n target,\n // Smart Select\n smartSelect,\n smartSelectParams\n } = props;\n const tabbarContext = useContext(TabbarContext);\n const isTabbarIcons = tabbarLabel || tabbarContext.tabbarHasIcons;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const onClick = e => {\n emit(props, 'click', e);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7SmartSelect: () => f7SmartSelect.current\n }));\n useTooltip(elRef, props);\n useRouteProps(elRef, props);\n useSmartSelect(smartSelect, smartSelectParams, f7SmartSelect, () => {\n return elRef.current;\n });\n let textEl;\n let badgeEl;\n if (text) {\n if (badge) badgeEl = /*#__PURE__*/React.createElement(Badge, {\n color: badgeColor\n }, badge);\n textEl = /*#__PURE__*/React.createElement(\"span\", {\n className: isTabbarIcons ? 'tabbar-label' : ''\n }, text, badgeEl);\n }\n const iconEl = useIcon(props);\n let iconOnlyComputed;\n if (iconOnly || !text && children && children.length === 0 || !text && !children) {\n iconOnlyComputed = true;\n } else {\n iconOnlyComputed = false;\n }\n const classes = classNames(className, {\n link: !(noLinkClass || isTabbarIcons),\n 'icon-only': iconOnlyComputed,\n 'tab-link': tabLink || tabLink === '',\n 'tab-link-active': tabLinkActive,\n 'smart-select': smartSelect\n }, colorClasses(props), routerClasses(props), actionsClasses(props));\n let hrefComputed = href;\n if (href === true) hrefComputed = '#';\n if (href === false) hrefComputed = undefined; // no href attribute\n const attrs = {\n href: hrefComputed,\n target,\n 'data-tab': isStringProp(tabLink) && tabLink || undefined,\n ...routerAttrs(props),\n ...actionsAttrs(props)\n };\n return /*#__PURE__*/React.createElement(\"a\", _extends({\n ref: elRef,\n id: id,\n style: style,\n className: classes\n }, attrs, extraAttrs, {\n onClick: onClick\n }), iconEl, textEl, children);\n});\nLink.displayName = 'f7-link';\nexport default Link;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { useTheme } from '../shared/use-theme.js';\nimport Link from './link.js';\n\n\nconst NavLeft = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n backLink,\n backLinkUrl,\n backLinkForce,\n backLinkShowText,\n sliding\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const onBackClick = event => {\n emit(props, 'backClick clickBack', event);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const theme = useTheme();\n let linkEl;\n let needBackLinkText = backLinkShowText;\n if (typeof needBackLinkText === 'undefined') needBackLinkText = !theme.md;\n if (backLink) {\n const text = backLink !== true && needBackLinkText ? backLink : undefined;\n linkEl = /*#__PURE__*/React.createElement(Link, {\n href: backLinkUrl || '#',\n back: true,\n icon: \"icon-back\",\n force: backLinkForce || undefined,\n className: !text ? 'icon-only' : undefined,\n text: text,\n onClick: onBackClick\n });\n }\n const classes = classNames(className, 'left', {\n sliding\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), linkEl, children);\n});\nNavLeft.displayName = 'f7-nav-left';\nexport default NavLeft;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\n\n\nconst NavTitle = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n title,\n subtitle,\n sliding\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n let subtitleEl;\n if (subtitle) {\n subtitleEl = /*#__PURE__*/React.createElement(\"span\", {\n className: \"subtitle\"\n }, subtitle);\n }\n const classes = classNames(className, 'title', {\n sliding\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children, title, subtitleEl);\n});\nNavTitle.displayName = 'f7-nav-title';\nexport default NavTitle;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\n\n\nconst NavRight = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n sliding\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const classes = classNames(className, 'right', {\n sliding\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children);\n});\nNavRight.displayName = 'f7-nav-right';\nexport default NavRight;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit, getSlots } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { useTheme } from '../shared/use-theme.js';\nimport NavLeft from './nav-left.js';\nimport NavTitle from './nav-title.js';\nimport NavRight from './nav-right.js';\n\n\nconst Navbar = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n sliding = true,\n large,\n largeTransparent,\n transparent,\n hidden,\n outline = true,\n backLink,\n backLinkForce,\n backLinkUrl,\n backLinkShowText,\n title,\n subtitle,\n titleLarge,\n innerClass,\n innerClassName\n } = props;\n const routerPositionClass = useRef('');\n const largeCollapsed = useRef(false);\n const routerNavbarRole = useRef(null);\n const routerNavbarRoleDetailRoot = useRef(false);\n const routerNavbarMasterStack = useRef(false);\n const transparentVisible = useRef(false);\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const theme = useTheme();\n const onHide = navbarEl => {\n if (elRef.current !== navbarEl) return;\n emit(props, 'navbarHide');\n };\n const onShow = navbarEl => {\n if (elRef.current !== navbarEl) return;\n emit(props, 'navbarShow');\n };\n const onExpand = navbarEl => {\n if (elRef.current !== navbarEl) return;\n largeCollapsed.current = false;\n emit(props, 'navbarExpand');\n };\n const onCollapse = navbarEl => {\n if (elRef.current !== navbarEl) return;\n largeCollapsed.current = true;\n emit(props, 'navbarCollapse');\n };\n const onNavbarTransparentShow = navbarEl => {\n if (elRef.current !== navbarEl) return;\n transparentVisible.current = true;\n emit(props, 'navbarTransparentShow');\n };\n const onNavbarTransparentHide = navbarEl => {\n if (elRef.current !== navbarEl) return;\n transparentVisible.current = false;\n emit(props, 'navbarTransparentHide');\n };\n const onNavbarPosition = (navbarEl, position) => {\n if (elRef.current !== navbarEl) return;\n routerPositionClass.current = position ? `navbar-${position}` : '';\n };\n const onNavbarRole = (navbarEl, rolesData) => {\n if (elRef.current !== navbarEl) return;\n routerNavbarRole.current = rolesData.role;\n routerNavbarRoleDetailRoot.current = rolesData.detailRoot;\n };\n const onNavbarMasterStack = navbarEl => {\n if (elRef.current !== navbarEl) return;\n routerNavbarMasterStack.current = true;\n };\n const onNavbarMasterUnstack = navbarEl => {\n if (elRef.current !== navbarEl) return;\n routerNavbarMasterStack.current = false;\n };\n const hide = animate => {\n if (!f7) return;\n f7.navbar.hide(elRef.current, animate);\n };\n const show = animate => {\n if (!f7) return;\n f7.navbar.show(elRef.current, animate);\n };\n const size = () => {\n if (!f7) return;\n f7.navbar.size(elRef.current);\n };\n const onBackClick = event => {\n emit(props, 'backClick clickBack', event);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n hide,\n show,\n size\n }));\n const attachEvents = () => {\n if (!elRef.current) return;\n f7ready(() => {\n f7.navbar.size(elRef.current);\n f7.on('navbarShow', onShow);\n f7.on('navbarHide', onHide);\n f7.on('navbarCollapse', onCollapse);\n f7.on('navbarExpand', onExpand);\n f7.on('navbarPosition', onNavbarPosition);\n f7.on('navbarRole', onNavbarRole);\n f7.on('navbarMasterStack', onNavbarMasterStack);\n f7.on('navbarMasterUnstack', onNavbarMasterUnstack);\n f7.on('navbarTransparentShow', onNavbarTransparentShow);\n f7.on('navbarTransparentHide', onNavbarTransparentHide);\n });\n };\n const detachEvents = () => {\n if (!f7) return;\n f7.off('navbarShow', onShow);\n f7.off('navbarHide', onHide);\n f7.off('navbarCollapse', onCollapse);\n f7.off('navbarExpand', onExpand);\n f7.off('navbarPosition', onNavbarPosition);\n f7.off('navbarRole', onNavbarRole);\n f7.off('navbarMasterStack', onNavbarMasterStack);\n f7.off('navbarMasterUnstack', onNavbarMasterUnstack);\n f7.off('navbarTransparentShow', onNavbarTransparentShow);\n f7.off('navbarTransparentHide', onNavbarTransparentHide);\n };\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n return detachEvents;\n });\n const slots = getSlots(props);\n let leftEl;\n let titleEl;\n let rightEl;\n let titleLargeEl;\n const addLeftTitleClass = theme && theme.ios && f7 && !f7.params.navbar.iosCenterTitle;\n const addCenterTitleClass = theme && theme.md && f7 && f7.params.navbar.mdCenterTitle;\n const isLarge = large || largeTransparent;\n const isTransparent = transparent || isLarge && largeTransparent;\n const isTransparentVisible = isTransparent && transparentVisible.current;\n const classes = classNames(className, 'navbar', routerPositionClass.current, {\n 'navbar-hidden': hidden,\n 'navbar-large': isLarge,\n 'navbar-large-collapsed': isLarge && largeCollapsed.current,\n 'navbar-transparent': isTransparent,\n 'navbar-transparent-visible': isTransparentVisible,\n 'navbar-master': routerNavbarRole.current === 'master',\n 'navbar-master-detail': routerNavbarRole.current === 'detail',\n 'navbar-master-detail-root': routerNavbarRoleDetailRoot.current === true,\n 'navbar-master-stacked': routerNavbarMasterStack.current === true,\n 'no-outline': !outline\n }, colorClasses(props));\n if (backLink || slots['nav-left'] || slots.left) {\n leftEl = /*#__PURE__*/React.createElement(NavLeft, {\n backLink: backLink,\n backLinkUrl: backLinkUrl,\n backLinkForce: backLinkForce,\n backLinkShowText: backLinkShowText,\n onBackClick: onBackClick\n }, slots['nav-left'], slots.left);\n }\n if (title || subtitle || slots.title) {\n titleEl = /*#__PURE__*/React.createElement(NavTitle, {\n title: title,\n subtitle: subtitle\n }, slots.title);\n }\n if (slots['nav-right'] || slots.right) {\n rightEl = /*#__PURE__*/React.createElement(NavRight, null, slots['nav-right'], slots.right);\n }\n let largeTitle = titleLarge;\n if (!largeTitle && large && title) largeTitle = title;\n if (largeTitle || slots['title-large']) {\n titleLargeEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"title-large\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"title-large-text\"\n }, largeTitle || '', slots['title-large']));\n }\n const innerEl = /*#__PURE__*/React.createElement(\"div\", {\n className: classNames('navbar-inner', innerClass, innerClassName, {\n sliding,\n 'navbar-inner-left-title': addLeftTitleClass,\n 'navbar-inner-centered-title': addCenterTitleClass\n })\n }, leftEl, titleEl, rightEl, titleLargeEl, slots.default);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), /*#__PURE__*/React.createElement(\"div\", {\n className: \"navbar-bg\"\n }), slots['before-inner'], innerEl, slots['after-inner']);\n});\nNavbar.displayName = 'f7-navbar';\nexport default Navbar;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\n\n\nconst Subnavbar = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n inner = true,\n title,\n sliding\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const classes = classNames(className, 'subnavbar', {\n sliding\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: classes,\n id: id,\n style: style,\n ref: elRef\n }, extraAttrs), inner ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"subnavbar-inner\"\n }, title && /*#__PURE__*/React.createElement(\"div\", {\n className: \"subnavbar-title\"\n }, title), children) : children);\n});\nSubnavbar.displayName = 'f7-subnavbar';\nexport default Subnavbar;","var niceErrors = {\n 0: \"Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'\",\n 1: function _(annotationType, key) {\n return \"Cannot apply '\" + annotationType + \"' to '\" + key.toString() + \"': Field not found.\";\n },\n /*\n 2(prop) {\n return `invalid decorator for '${prop.toString()}'`\n },\n 3(prop) {\n return `Cannot decorate '${prop.toString()}': action can only be used on properties with a function value.`\n },\n 4(prop) {\n return `Cannot decorate '${prop.toString()}': computed can only be used on getter properties.`\n },\n */\n 5: \"'keys()' can only be used on observable objects, arrays, sets and maps\",\n 6: \"'values()' can only be used on observable objects, arrays, sets and maps\",\n 7: \"'entries()' can only be used on observable objects, arrays and maps\",\n 8: \"'set()' can only be used on observable objects, arrays and maps\",\n 9: \"'remove()' can only be used on observable objects, arrays and maps\",\n 10: \"'has()' can only be used on observable objects, arrays and maps\",\n 11: \"'get()' can only be used on observable objects, arrays and maps\",\n 12: \"Invalid annotation\",\n 13: \"Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)\",\n 14: \"Intercept handlers should return nothing or a change object\",\n 15: \"Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)\",\n 16: \"Modification exception: the internal structure of an observable array was changed.\",\n 17: function _(index, length) {\n return \"[mobx.array] Index out of bounds, \" + index + \" is larger than \" + length;\n },\n 18: \"mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js\",\n 19: function _(other) {\n return \"Cannot initialize from classes that inherit from Map: \" + other.constructor.name;\n },\n 20: function _(other) {\n return \"Cannot initialize map from \" + other;\n },\n 21: function _(dataStructure) {\n return \"Cannot convert to map from '\" + dataStructure + \"'\";\n },\n 22: \"mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js\",\n 23: \"It is not possible to get index atoms from arrays\",\n 24: function _(thing) {\n return \"Cannot obtain administration from \" + thing;\n },\n 25: function _(property, name) {\n return \"the entry '\" + property + \"' does not exist in the observable map '\" + name + \"'\";\n },\n 26: \"please specify a property\",\n 27: function _(property, name) {\n return \"no observable property '\" + property.toString() + \"' found on the observable object '\" + name + \"'\";\n },\n 28: function _(thing) {\n return \"Cannot obtain atom from \" + thing;\n },\n 29: \"Expecting some object\",\n 30: \"invalid action stack. did you forget to finish an action?\",\n 31: \"missing option for computed: get\",\n 32: function _(name, derivation) {\n return \"Cycle detected in computation \" + name + \": \" + derivation;\n },\n 33: function _(name) {\n return \"The setter of computed value '\" + name + \"' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?\";\n },\n 34: function _(name) {\n return \"[ComputedValue '\" + name + \"'] It is not possible to assign a new value to a computed value.\";\n },\n 35: \"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`\",\n 36: \"isolateGlobalState should be called before MobX is running any reactions\",\n 37: function _(method) {\n return \"[mobx] `observableArray.\" + method + \"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice().\" + method + \"()` instead\";\n },\n 38: \"'ownKeys()' can only be used on observable objects\",\n 39: \"'defineProperty()' can only be used on observable objects\"\n};\nvar errors = process.env.NODE_ENV !== \"production\" ? niceErrors : {};\nfunction die(error) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (process.env.NODE_ENV !== \"production\") {\n var e = typeof error === \"string\" ? error : errors[error];\n if (typeof e === \"function\") e = e.apply(null, args);\n throw new Error(\"[MobX] \" + e);\n }\n throw new Error(typeof error === \"number\" ? \"[MobX] minified error nr: \" + error + (args.length ? \" \" + args.map(String).join(\",\") : \"\") + \". Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts\" : \"[MobX] \" + error);\n}\n\nvar mockGlobal = {};\nfunction getGlobal() {\n if (typeof globalThis !== \"undefined\") {\n return globalThis;\n }\n if (typeof window !== \"undefined\") {\n return window;\n }\n if (typeof global !== \"undefined\") {\n return global;\n }\n if (typeof self !== \"undefined\") {\n return self;\n }\n return mockGlobal;\n}\n\n// We shorten anything used > 5 times\nvar assign = Object.assign;\nvar getDescriptor = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar objectPrototype = Object.prototype;\nvar EMPTY_ARRAY = [];\nObject.freeze(EMPTY_ARRAY);\nvar EMPTY_OBJECT = {};\nObject.freeze(EMPTY_OBJECT);\nvar hasProxy = typeof Proxy !== \"undefined\";\nvar plainObjectString = /*#__PURE__*/Object.toString();\nfunction assertProxies() {\n if (!hasProxy) {\n die(process.env.NODE_ENV !== \"production\" ? \"`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`\" : \"Proxy not available\");\n }\n}\nfunction warnAboutProxyRequirement(msg) {\n if (process.env.NODE_ENV !== \"production\" && globalState.verifyProxies) {\n die(\"MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to \" + msg);\n }\n}\nfunction getNextId() {\n return ++globalState.mobxGuid;\n}\n/**\n * Makes sure that the provided function is invoked at most once.\n */\nfunction once(func) {\n var invoked = false;\n return function () {\n if (invoked) {\n return;\n }\n invoked = true;\n return func.apply(this, arguments);\n };\n}\nvar noop = function noop() {};\nfunction isFunction(fn) {\n return typeof fn === \"function\";\n}\nfunction isStringish(value) {\n var t = typeof value;\n switch (t) {\n case \"string\":\n case \"symbol\":\n case \"number\":\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && typeof value === \"object\";\n}\nfunction isPlainObject(value) {\n if (!isObject(value)) {\n return false;\n }\n var proto = Object.getPrototypeOf(value);\n if (proto == null) {\n return true;\n }\n var protoConstructor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof protoConstructor === \"function\" && protoConstructor.toString() === plainObjectString;\n}\n// https://stackoverflow.com/a/37865170\nfunction isGenerator(obj) {\n var constructor = obj == null ? void 0 : obj.constructor;\n if (!constructor) {\n return false;\n }\n if (\"GeneratorFunction\" === constructor.name || \"GeneratorFunction\" === constructor.displayName) {\n return true;\n }\n return false;\n}\nfunction addHiddenProp(object, propName, value) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: true,\n configurable: true,\n value: value\n });\n}\nfunction addHiddenFinalProp(object, propName, value) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: false,\n configurable: true,\n value: value\n });\n}\nfunction createInstanceofPredicate(name, theClass) {\n var propName = \"isMobX\" + name;\n theClass.prototype[propName] = true;\n return function (x) {\n return isObject(x) && x[propName] === true;\n };\n}\nfunction isES6Map(thing) {\n return thing instanceof Map;\n}\nfunction isES6Set(thing) {\n return thing instanceof Set;\n}\nvar hasGetOwnPropertySymbols = typeof Object.getOwnPropertySymbols !== \"undefined\";\n/**\n * Returns the following: own enumerable keys and symbols.\n */\nfunction getPlainObjectKeys(object) {\n var keys = Object.keys(object);\n // Not supported in IE, so there are not going to be symbol props anyway...\n if (!hasGetOwnPropertySymbols) {\n return keys;\n }\n var symbols = Object.getOwnPropertySymbols(object);\n if (!symbols.length) {\n return keys;\n }\n return [].concat(keys, symbols.filter(function (s) {\n return objectPrototype.propertyIsEnumerable.call(object, s);\n }));\n}\n// From Immer utils\n// Returns all own keys, including non-enumerable and symbolic\nvar ownKeys = typeof Reflect !== \"undefined\" && Reflect.ownKeys ? Reflect.ownKeys : hasGetOwnPropertySymbols ? function (obj) {\n return Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj));\n} : /* istanbul ignore next */Object.getOwnPropertyNames;\nfunction stringifyKey(key) {\n if (typeof key === \"string\") {\n return key;\n }\n if (typeof key === \"symbol\") {\n return key.toString();\n }\n return new String(key).toString();\n}\nfunction toPrimitive(value) {\n return value === null ? null : typeof value === \"object\" ? \"\" + value : value;\n}\nfunction hasProp(target, prop) {\n return objectPrototype.hasOwnProperty.call(target, prop);\n}\n// From Immer utils\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || function getOwnPropertyDescriptors(target) {\n // Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n var res = {};\n // Note: without polyfill for ownKeys, symbols won't be picked up\n ownKeys(target).forEach(function (key) {\n res[key] = getDescriptor(target, key);\n });\n return res;\n};\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nvar storedAnnotationsSymbol = /*#__PURE__*/Symbol(\"mobx-stored-annotations\");\n/**\n * Creates a function that acts as\n * - decorator\n * - annotation object\n */\nfunction createDecoratorAnnotation(annotation) {\n function decorator(target, property) {\n if (is20223Decorator(property)) {\n return annotation.decorate_20223_(target, property);\n } else {\n storeAnnotation(target, property, annotation);\n }\n }\n return Object.assign(decorator, annotation);\n}\n/**\n * Stores annotation to prototype,\n * so it can be inspected later by `makeObservable` called from constructor\n */\nfunction storeAnnotation(prototype, key, annotation) {\n if (!hasProp(prototype, storedAnnotationsSymbol)) {\n addHiddenProp(prototype, storedAnnotationsSymbol, _extends({}, prototype[storedAnnotationsSymbol]));\n }\n // @override must override something\n if (process.env.NODE_ENV !== \"production\" && isOverride(annotation) && !hasProp(prototype[storedAnnotationsSymbol], key)) {\n var fieldName = prototype.constructor.name + \".prototype.\" + key.toString();\n die(\"'\" + fieldName + \"' is decorated with 'override', \" + \"but no such decorated member was found on prototype.\");\n }\n // Cannot re-decorate\n assertNotDecorated(prototype, annotation, key);\n // Ignore override\n if (!isOverride(annotation)) {\n prototype[storedAnnotationsSymbol][key] = annotation;\n }\n}\nfunction assertNotDecorated(prototype, annotation, key) {\n if (process.env.NODE_ENV !== \"production\" && !isOverride(annotation) && hasProp(prototype[storedAnnotationsSymbol], key)) {\n var fieldName = prototype.constructor.name + \".prototype.\" + key.toString();\n var currentAnnotationType = prototype[storedAnnotationsSymbol][key].annotationType_;\n var requestedAnnotationType = annotation.annotationType_;\n die(\"Cannot apply '@\" + requestedAnnotationType + \"' to '\" + fieldName + \"':\" + (\"\\nThe field is already decorated with '@\" + currentAnnotationType + \"'.\") + \"\\nRe-decorating fields is not allowed.\" + \"\\nUse '@override' decorator for methods overridden by subclass.\");\n }\n}\n/**\n * Collects annotations from prototypes and stores them on target (instance)\n */\nfunction collectStoredAnnotations(target) {\n if (!hasProp(target, storedAnnotationsSymbol)) {\n // if (__DEV__ && !target[storedAnnotationsSymbol]) {\n // die(\n // `No annotations were passed to makeObservable, but no decorated members have been found either`\n // )\n // }\n // We need a copy as we will remove annotation from the list once it's applied.\n addHiddenProp(target, storedAnnotationsSymbol, _extends({}, target[storedAnnotationsSymbol]));\n }\n return target[storedAnnotationsSymbol];\n}\nfunction is20223Decorator(context) {\n return typeof context == \"object\" && typeof context[\"kind\"] == \"string\";\n}\nfunction assert20223DecoratorType(context, types) {\n if (process.env.NODE_ENV !== \"production\" && !types.includes(context.kind)) {\n die(\"The decorator applied to '\" + String(context.name) + \"' cannot be used on a \" + context.kind + \" element\");\n }\n}\n\nvar $mobx = /*#__PURE__*/Symbol(\"mobx administration\");\nvar Atom = /*#__PURE__*/function () {\n // for effective unobserving. BaseAtom has true, for extra optimization, so its onBecomeUnobserved never gets called, because it's not needed\n\n /**\n * Create a new atom. For debugging purposes it is recommended to give it a name.\n * The onBecomeObserved and onBecomeUnobserved callbacks can be used for resource management.\n */\n function Atom(name_) {\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"Atom@\" + getNextId() : \"Atom\";\n }\n this.name_ = void 0;\n this.isPendingUnobservation_ = false;\n this.isBeingObserved_ = false;\n this.observers_ = new Set();\n this.diffValue_ = 0;\n this.lastAccessedBy_ = 0;\n this.lowestObserverState_ = IDerivationState_.NOT_TRACKING_;\n this.onBOL = void 0;\n this.onBUOL = void 0;\n this.name_ = name_;\n }\n // onBecomeObservedListeners\n var _proto = Atom.prototype;\n _proto.onBO = function onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(function (listener) {\n return listener();\n });\n }\n };\n _proto.onBUO = function onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(function (listener) {\n return listener();\n });\n }\n }\n /**\n * Invoke this method to notify mobx that your atom has been used somehow.\n * Returns true if there is currently a reactive context.\n */;\n _proto.reportObserved = function reportObserved$1() {\n return reportObserved(this);\n }\n /**\n * Invoke this method _after_ this method has changed to signal mobx that all its observers should invalidate.\n */;\n _proto.reportChanged = function reportChanged() {\n startBatch();\n propagateChanged(this);\n endBatch();\n };\n _proto.toString = function toString() {\n return this.name_;\n };\n return Atom;\n}();\nvar isAtom = /*#__PURE__*/createInstanceofPredicate(\"Atom\", Atom);\nfunction createAtom(name, onBecomeObservedHandler, onBecomeUnobservedHandler) {\n if (onBecomeObservedHandler === void 0) {\n onBecomeObservedHandler = noop;\n }\n if (onBecomeUnobservedHandler === void 0) {\n onBecomeUnobservedHandler = noop;\n }\n var atom = new Atom(name);\n // default `noop` listener will not initialize the hook Set\n if (onBecomeObservedHandler !== noop) {\n onBecomeObserved(atom, onBecomeObservedHandler);\n }\n if (onBecomeUnobservedHandler !== noop) {\n onBecomeUnobserved(atom, onBecomeUnobservedHandler);\n }\n return atom;\n}\n\nfunction identityComparer(a, b) {\n return a === b;\n}\nfunction structuralComparer(a, b) {\n return deepEqual(a, b);\n}\nfunction shallowComparer(a, b) {\n return deepEqual(a, b, 1);\n}\nfunction defaultComparer(a, b) {\n if (Object.is) {\n return Object.is(a, b);\n }\n return a === b ? a !== 0 || 1 / a === 1 / b : a !== a && b !== b;\n}\nvar comparer = {\n identity: identityComparer,\n structural: structuralComparer,\n \"default\": defaultComparer,\n shallow: shallowComparer\n};\n\nfunction deepEnhancer(v, _, name) {\n // it is an observable already, done\n if (isObservable(v)) {\n return v;\n }\n // something that can be converted and mutated?\n if (Array.isArray(v)) {\n return observable.array(v, {\n name: name\n });\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, {\n name: name\n });\n }\n if (isES6Map(v)) {\n return observable.map(v, {\n name: name\n });\n }\n if (isES6Set(v)) {\n return observable.set(v, {\n name: name\n });\n }\n if (typeof v === \"function\" && !isAction(v) && !isFlow(v)) {\n if (isGenerator(v)) {\n return flow(v);\n } else {\n return autoAction(name, v);\n }\n }\n return v;\n}\nfunction shallowEnhancer(v, _, name) {\n if (v === undefined || v === null) {\n return v;\n }\n if (isObservableObject(v) || isObservableArray(v) || isObservableMap(v) || isObservableSet(v)) {\n return v;\n }\n if (Array.isArray(v)) {\n return observable.array(v, {\n name: name,\n deep: false\n });\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, {\n name: name,\n deep: false\n });\n }\n if (isES6Map(v)) {\n return observable.map(v, {\n name: name,\n deep: false\n });\n }\n if (isES6Set(v)) {\n return observable.set(v, {\n name: name,\n deep: false\n });\n }\n if (process.env.NODE_ENV !== \"production\") {\n die(\"The shallow modifier / decorator can only used in combination with arrays, objects, maps and sets\");\n }\n}\nfunction referenceEnhancer(newValue) {\n // never turn into an observable\n return newValue;\n}\nfunction refStructEnhancer(v, oldValue) {\n if (process.env.NODE_ENV !== \"production\" && isObservable(v)) {\n die(\"observable.struct should not be used with observable values\");\n }\n if (deepEqual(v, oldValue)) {\n return oldValue;\n }\n return v;\n}\n\nvar OVERRIDE = \"override\";\nvar override = /*#__PURE__*/createDecoratorAnnotation({\n annotationType_: OVERRIDE,\n make_: make_,\n extend_: extend_,\n decorate_20223_: decorate_20223_\n});\nfunction isOverride(annotation) {\n return annotation.annotationType_ === OVERRIDE;\n}\nfunction make_(adm, key) {\n // Must not be plain object\n if (process.env.NODE_ENV !== \"production\" && adm.isPlainObject_) {\n die(\"Cannot apply '\" + this.annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + this.annotationType_ + \"' cannot be used on plain objects.\"));\n }\n // Must override something\n if (process.env.NODE_ENV !== \"production\" && !hasProp(adm.appliedAnnotations_, key)) {\n die(\"'\" + adm.name_ + \".\" + key.toString() + \"' is annotated with '\" + this.annotationType_ + \"', \" + \"but no such annotated member was found on prototype.\");\n }\n return 0 /* MakeResult.Cancel */;\n}\n\nfunction extend_(adm, key, descriptor, proxyTrap) {\n die(\"'\" + this.annotationType_ + \"' can only be used with 'makeObservable'\");\n}\nfunction decorate_20223_(desc, context) {\n console.warn(\"'\" + this.annotationType_ + \"' cannot be used with decorators - this is a no-op\");\n}\n\nfunction createActionAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$1,\n extend_: extend_$1,\n decorate_20223_: decorate_20223_$1\n };\n}\nfunction make_$1(adm, key, descriptor, source) {\n var _this$options_;\n // bound\n if ((_this$options_ = this.options_) != null && _this$options_.bound) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* MakeResult.Cancel */ : 1 /* MakeResult.Break */;\n }\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* MakeResult.Cancel */ : 2 /* MakeResult.Continue */;\n }\n // prototype\n if (isAction(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return 1 /* MakeResult.Break */;\n }\n\n var actionDescriptor = createActionDescriptor(adm, this, key, descriptor, false);\n defineProperty(source, key, actionDescriptor);\n return 2 /* MakeResult.Continue */;\n}\n\nfunction extend_$1(adm, key, descriptor, proxyTrap) {\n var actionDescriptor = createActionDescriptor(adm, this, key, descriptor);\n return adm.defineProperty_(key, actionDescriptor, proxyTrap);\n}\nfunction decorate_20223_$1(mthd, context) {\n if (process.env.NODE_ENV !== \"production\") {\n assert20223DecoratorType(context, [\"method\", \"field\"]);\n }\n var kind = context.kind,\n name = context.name,\n addInitializer = context.addInitializer;\n var ann = this;\n var _createAction = function _createAction(m) {\n var _ann$options_$name, _ann$options_, _ann$options_$autoAct, _ann$options_2;\n return createAction((_ann$options_$name = (_ann$options_ = ann.options_) == null ? void 0 : _ann$options_.name) != null ? _ann$options_$name : name.toString(), m, (_ann$options_$autoAct = (_ann$options_2 = ann.options_) == null ? void 0 : _ann$options_2.autoAction) != null ? _ann$options_$autoAct : false);\n };\n // Backwards/Legacy behavior, expects makeObservable(this)\n if (kind == \"field\") {\n addInitializer(function () {\n storeAnnotation(this, name, ann);\n });\n return;\n }\n if (kind == \"method\") {\n var _this$options_2;\n if (!isAction(mthd)) {\n mthd = _createAction(mthd);\n }\n if ((_this$options_2 = this.options_) != null && _this$options_2.bound) {\n addInitializer(function () {\n var self = this;\n var bound = self[name].bind(self);\n bound.isMobxAction = true;\n self[name] = bound;\n });\n }\n return mthd;\n }\n die(\"Cannot apply '\" + ann.annotationType_ + \"' to '\" + String(name) + \"' (kind: \" + kind + \"):\" + (\"\\n'\" + ann.annotationType_ + \"' can only be used on properties with a function value.\"));\n}\nfunction assertActionDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var value = _ref2.value;\n if (process.env.NODE_ENV !== \"production\" && !isFunction(value)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on properties with a function value.\"));\n }\n}\nfunction createActionDescriptor(adm, annotation, key, descriptor,\n// provides ability to disable safeDescriptors for prototypes\nsafeDescriptors) {\n var _annotation$options_, _annotation$options_$, _annotation$options_2, _annotation$options_$2, _annotation$options_3, _annotation$options_4, _adm$proxy_2;\n if (safeDescriptors === void 0) {\n safeDescriptors = globalState.safeDescriptors;\n }\n assertActionDescriptor(adm, annotation, key, descriptor);\n var value = descriptor.value;\n if ((_annotation$options_ = annotation.options_) != null && _annotation$options_.bound) {\n var _adm$proxy_;\n value = value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n }\n return {\n value: createAction((_annotation$options_$ = (_annotation$options_2 = annotation.options_) == null ? void 0 : _annotation$options_2.name) != null ? _annotation$options_$ : key.toString(), value, (_annotation$options_$2 = (_annotation$options_3 = annotation.options_) == null ? void 0 : _annotation$options_3.autoAction) != null ? _annotation$options_$2 : false,\n // https://github.com/mobxjs/mobx/discussions/3140\n (_annotation$options_4 = annotation.options_) != null && _annotation$options_4.bound ? (_adm$proxy_2 = adm.proxy_) != null ? _adm$proxy_2 : adm.target_ : undefined),\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n };\n}\n\nfunction createFlowAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$2,\n extend_: extend_$2,\n decorate_20223_: decorate_20223_$2\n };\n}\nfunction make_$2(adm, key, descriptor, source) {\n var _this$options_;\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* MakeResult.Cancel */ : 2 /* MakeResult.Continue */;\n }\n // prototype\n // bound - must annotate protos to support super.flow()\n if ((_this$options_ = this.options_) != null && _this$options_.bound && (!hasProp(adm.target_, key) || !isFlow(adm.target_[key]))) {\n if (this.extend_(adm, key, descriptor, false) === null) {\n return 0 /* MakeResult.Cancel */;\n }\n }\n\n if (isFlow(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return 1 /* MakeResult.Break */;\n }\n\n var flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, false, false);\n defineProperty(source, key, flowDescriptor);\n return 2 /* MakeResult.Continue */;\n}\n\nfunction extend_$2(adm, key, descriptor, proxyTrap) {\n var _this$options_2;\n var flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, (_this$options_2 = this.options_) == null ? void 0 : _this$options_2.bound);\n return adm.defineProperty_(key, flowDescriptor, proxyTrap);\n}\nfunction decorate_20223_$2(mthd, context) {\n var _this$options_3;\n if (process.env.NODE_ENV !== \"production\") {\n assert20223DecoratorType(context, [\"method\"]);\n }\n var name = context.name,\n addInitializer = context.addInitializer;\n if (!isFlow(mthd)) {\n mthd = flow(mthd);\n }\n if ((_this$options_3 = this.options_) != null && _this$options_3.bound) {\n addInitializer(function () {\n var self = this;\n var bound = self[name].bind(self);\n bound.isMobXFlow = true;\n self[name] = bound;\n });\n }\n return mthd;\n}\nfunction assertFlowDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var value = _ref2.value;\n if (process.env.NODE_ENV !== \"production\" && !isFunction(value)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on properties with a generator function value.\"));\n }\n}\nfunction createFlowDescriptor(adm, annotation, key, descriptor, bound,\n// provides ability to disable safeDescriptors for prototypes\nsafeDescriptors) {\n if (safeDescriptors === void 0) {\n safeDescriptors = globalState.safeDescriptors;\n }\n assertFlowDescriptor(adm, annotation, key, descriptor);\n var value = descriptor.value;\n // In case of flow.bound, the descriptor can be from already annotated prototype\n if (!isFlow(value)) {\n value = flow(value);\n }\n if (bound) {\n var _adm$proxy_;\n // We do not keep original function around, so we bind the existing flow\n value = value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n // This is normally set by `flow`, but `bind` returns new function...\n value.isMobXFlow = true;\n }\n return {\n value: value,\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n };\n}\n\nfunction createComputedAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$3,\n extend_: extend_$3,\n decorate_20223_: decorate_20223_$3\n };\n}\nfunction make_$3(adm, key, descriptor) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* MakeResult.Cancel */ : 1 /* MakeResult.Break */;\n}\n\nfunction extend_$3(adm, key, descriptor, proxyTrap) {\n assertComputedDescriptor(adm, this, key, descriptor);\n return adm.defineComputedProperty_(key, _extends({}, this.options_, {\n get: descriptor.get,\n set: descriptor.set\n }), proxyTrap);\n}\nfunction decorate_20223_$3(get, context) {\n if (process.env.NODE_ENV !== \"production\") {\n assert20223DecoratorType(context, [\"getter\"]);\n }\n var ann = this;\n var key = context.name,\n addInitializer = context.addInitializer;\n addInitializer(function () {\n var adm = asObservableObject(this)[$mobx];\n var options = _extends({}, ann.options_, {\n get: get,\n context: this\n });\n options.name || (options.name = process.env.NODE_ENV !== \"production\" ? adm.name_ + \".\" + key.toString() : \"ObservableObject.\" + key.toString());\n adm.values_.set(key, new ComputedValue(options));\n });\n return function () {\n return this[$mobx].getObservablePropValue_(key);\n };\n}\nfunction assertComputedDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var get = _ref2.get;\n if (process.env.NODE_ENV !== \"production\" && !get) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on getter(+setter) properties.\"));\n }\n}\n\nfunction createObservableAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$4,\n extend_: extend_$4,\n decorate_20223_: decorate_20223_$4\n };\n}\nfunction make_$4(adm, key, descriptor) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* MakeResult.Cancel */ : 1 /* MakeResult.Break */;\n}\n\nfunction extend_$4(adm, key, descriptor, proxyTrap) {\n var _this$options_$enhanc, _this$options_;\n assertObservableDescriptor(adm, this, key, descriptor);\n return adm.defineObservableProperty_(key, descriptor.value, (_this$options_$enhanc = (_this$options_ = this.options_) == null ? void 0 : _this$options_.enhancer) != null ? _this$options_$enhanc : deepEnhancer, proxyTrap);\n}\nfunction decorate_20223_$4(desc, context) {\n if (process.env.NODE_ENV !== \"production\") {\n if (context.kind === \"field\") {\n throw die(\"Please use `@observable accessor \" + String(context.name) + \"` instead of `@observable \" + String(context.name) + \"`\");\n }\n assert20223DecoratorType(context, [\"accessor\"]);\n }\n var ann = this;\n var kind = context.kind,\n name = context.name;\n // The laziness here is not ideal... It's a workaround to how 2022.3 Decorators are implemented:\n // `addInitializer` callbacks are executed _before_ any accessors are defined (instead of the ideal-for-us right after each).\n // This means that, if we were to do our stuff in an `addInitializer`, we'd attempt to read a private slot\n // before it has been initialized. The runtime doesn't like that and throws a `Cannot read private member\n // from an object whose class did not declare it` error.\n // TODO: it seems that this will not be required anymore in the final version of the spec\n // See TODO: link\n var initializedObjects = new WeakSet();\n function initializeObservable(target, value) {\n var _ann$options_$enhance, _ann$options_;\n var adm = asObservableObject(target)[$mobx];\n var observable = new ObservableValue(value, (_ann$options_$enhance = (_ann$options_ = ann.options_) == null ? void 0 : _ann$options_.enhancer) != null ? _ann$options_$enhance : deepEnhancer, process.env.NODE_ENV !== \"production\" ? adm.name_ + \".\" + name.toString() : \"ObservableObject.\" + name.toString(), false);\n adm.values_.set(name, observable);\n initializedObjects.add(target);\n }\n if (kind == \"accessor\") {\n return {\n get: function get() {\n if (!initializedObjects.has(this)) {\n initializeObservable(this, desc.get.call(this));\n }\n return this[$mobx].getObservablePropValue_(name);\n },\n set: function set(value) {\n if (!initializedObjects.has(this)) {\n initializeObservable(this, value);\n }\n return this[$mobx].setObservablePropValue_(name, value);\n },\n init: function init(value) {\n if (!initializedObjects.has(this)) {\n initializeObservable(this, value);\n }\n return value;\n }\n };\n }\n return;\n}\nfunction assertObservableDescriptor(adm, _ref, key, descriptor) {\n var annotationType_ = _ref.annotationType_;\n if (process.env.NODE_ENV !== \"production\" && !(\"value\" in descriptor)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' cannot be used on getter/setter properties\"));\n }\n}\n\nvar AUTO = \"true\";\nvar autoAnnotation = /*#__PURE__*/createAutoAnnotation();\nfunction createAutoAnnotation(options) {\n return {\n annotationType_: AUTO,\n options_: options,\n make_: make_$5,\n extend_: extend_$5,\n decorate_20223_: decorate_20223_$5\n };\n}\nfunction make_$5(adm, key, descriptor, source) {\n var _this$options_3, _this$options_4;\n // getter -> computed\n if (descriptor.get) {\n return computed.make_(adm, key, descriptor, source);\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.make_\n var set = createAction(key.toString(), descriptor.set);\n // own\n if (source === adm.target_) {\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: set\n }) === null ? 0 /* MakeResult.Cancel */ : 2 /* MakeResult.Continue */;\n }\n // proto\n defineProperty(source, key, {\n configurable: true,\n set: set\n });\n return 2 /* MakeResult.Continue */;\n }\n // function on proto -> autoAction/flow\n if (source !== adm.target_ && typeof descriptor.value === \"function\") {\n var _this$options_2;\n if (isGenerator(descriptor.value)) {\n var _this$options_;\n var flowAnnotation = (_this$options_ = this.options_) != null && _this$options_.autoBind ? flow.bound : flow;\n return flowAnnotation.make_(adm, key, descriptor, source);\n }\n var actionAnnotation = (_this$options_2 = this.options_) != null && _this$options_2.autoBind ? autoAction.bound : autoAction;\n return actionAnnotation.make_(adm, key, descriptor, source);\n }\n // other -> observable\n // Copy props from proto as well, see test:\n // \"decorate should work with Object.create\"\n var observableAnnotation = ((_this$options_3 = this.options_) == null ? void 0 : _this$options_3.deep) === false ? observable.ref : observable;\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && (_this$options_4 = this.options_) != null && _this$options_4.autoBind) {\n var _adm$proxy_;\n descriptor.value = descriptor.value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n }\n return observableAnnotation.make_(adm, key, descriptor, source);\n}\nfunction extend_$5(adm, key, descriptor, proxyTrap) {\n var _this$options_5, _this$options_6;\n // getter -> computed\n if (descriptor.get) {\n return computed.extend_(adm, key, descriptor, proxyTrap);\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.extend_\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: createAction(key.toString(), descriptor.set)\n }, proxyTrap);\n }\n // other -> observable\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && (_this$options_5 = this.options_) != null && _this$options_5.autoBind) {\n var _adm$proxy_2;\n descriptor.value = descriptor.value.bind((_adm$proxy_2 = adm.proxy_) != null ? _adm$proxy_2 : adm.target_);\n }\n var observableAnnotation = ((_this$options_6 = this.options_) == null ? void 0 : _this$options_6.deep) === false ? observable.ref : observable;\n return observableAnnotation.extend_(adm, key, descriptor, proxyTrap);\n}\nfunction decorate_20223_$5(desc, context) {\n die(\"'\" + this.annotationType_ + \"' cannot be used as a decorator\");\n}\n\nvar OBSERVABLE = \"observable\";\nvar OBSERVABLE_REF = \"observable.ref\";\nvar OBSERVABLE_SHALLOW = \"observable.shallow\";\nvar OBSERVABLE_STRUCT = \"observable.struct\";\n// Predefined bags of create observable options, to avoid allocating temporarily option objects\n// in the majority of cases\nvar defaultCreateObservableOptions = {\n deep: true,\n name: undefined,\n defaultDecorator: undefined,\n proxy: true\n};\nObject.freeze(defaultCreateObservableOptions);\nfunction asCreateObservableOptions(thing) {\n return thing || defaultCreateObservableOptions;\n}\nvar observableAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE);\nvar observableRefAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_REF, {\n enhancer: referenceEnhancer\n});\nvar observableShallowAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_SHALLOW, {\n enhancer: shallowEnhancer\n});\nvar observableStructAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_STRUCT, {\n enhancer: refStructEnhancer\n});\nvar observableDecoratorAnnotation = /*#__PURE__*/createDecoratorAnnotation(observableAnnotation);\nfunction getEnhancerFromOptions(options) {\n return options.deep === true ? deepEnhancer : options.deep === false ? referenceEnhancer : getEnhancerFromAnnotation(options.defaultDecorator);\n}\nfunction getAnnotationFromOptions(options) {\n var _options$defaultDecor;\n return options ? (_options$defaultDecor = options.defaultDecorator) != null ? _options$defaultDecor : createAutoAnnotation(options) : undefined;\n}\nfunction getEnhancerFromAnnotation(annotation) {\n var _annotation$options_$, _annotation$options_;\n return !annotation ? deepEnhancer : (_annotation$options_$ = (_annotation$options_ = annotation.options_) == null ? void 0 : _annotation$options_.enhancer) != null ? _annotation$options_$ : deepEnhancer;\n}\n/**\n * Turns an object, array or function into a reactive structure.\n * @param v the value which should become observable.\n */\nfunction createObservable(v, arg2, arg3) {\n // @observable someProp; (2022.3 Decorators)\n if (is20223Decorator(arg2)) {\n return observableAnnotation.decorate_20223_(v, arg2);\n }\n // @observable someProp;\n if (isStringish(arg2)) {\n storeAnnotation(v, arg2, observableAnnotation);\n return;\n }\n // already observable - ignore\n if (isObservable(v)) {\n return v;\n }\n // plain object\n if (isPlainObject(v)) {\n return observable.object(v, arg2, arg3);\n }\n // Array\n if (Array.isArray(v)) {\n return observable.array(v, arg2);\n }\n // Map\n if (isES6Map(v)) {\n return observable.map(v, arg2);\n }\n // Set\n if (isES6Set(v)) {\n return observable.set(v, arg2);\n }\n // other object - ignore\n if (typeof v === \"object\" && v !== null) {\n return v;\n }\n // anything else\n return observable.box(v, arg2);\n}\nassign(createObservable, observableDecoratorAnnotation);\nvar observableFactories = {\n box: function box(value, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableValue(value, getEnhancerFromOptions(o), o.name, true, o.equals);\n },\n array: function array(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return (globalState.useProxies === false || o.proxy === false ? createLegacyArray : createObservableArray)(initialValues, getEnhancerFromOptions(o), o.name);\n },\n map: function map(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableMap(initialValues, getEnhancerFromOptions(o), o.name);\n },\n set: function set(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableSet(initialValues, getEnhancerFromOptions(o), o.name);\n },\n object: function object(props, decorators, options) {\n return initObservable(function () {\n return extendObservable(globalState.useProxies === false || (options == null ? void 0 : options.proxy) === false ? asObservableObject({}, options) : asDynamicObservableObject({}, options), props, decorators);\n });\n },\n ref: /*#__PURE__*/createDecoratorAnnotation(observableRefAnnotation),\n shallow: /*#__PURE__*/createDecoratorAnnotation(observableShallowAnnotation),\n deep: observableDecoratorAnnotation,\n struct: /*#__PURE__*/createDecoratorAnnotation(observableStructAnnotation)\n};\n// eslint-disable-next-line\nvar observable = /*#__PURE__*/assign(createObservable, observableFactories);\n\nvar COMPUTED = \"computed\";\nvar COMPUTED_STRUCT = \"computed.struct\";\nvar computedAnnotation = /*#__PURE__*/createComputedAnnotation(COMPUTED);\nvar computedStructAnnotation = /*#__PURE__*/createComputedAnnotation(COMPUTED_STRUCT, {\n equals: comparer.structural\n});\n/**\n * Decorator for class properties: @computed get value() { return expr; }.\n * For legacy purposes also invokable as ES5 observable created: `computed(() => expr)`;\n */\nvar computed = function computed(arg1, arg2) {\n if (is20223Decorator(arg2)) {\n // @computed (2022.3 Decorators)\n return computedAnnotation.decorate_20223_(arg1, arg2);\n }\n if (isStringish(arg2)) {\n // @computed\n return storeAnnotation(arg1, arg2, computedAnnotation);\n }\n if (isPlainObject(arg1)) {\n // @computed({ options })\n return createDecoratorAnnotation(createComputedAnnotation(COMPUTED, arg1));\n }\n // computed(expr, options?)\n if (process.env.NODE_ENV !== \"production\") {\n if (!isFunction(arg1)) {\n die(\"First argument to `computed` should be an expression.\");\n }\n if (isFunction(arg2)) {\n die(\"A setter as second argument is no longer supported, use `{ set: fn }` option instead\");\n }\n }\n var opts = isPlainObject(arg2) ? arg2 : {};\n opts.get = arg1;\n opts.name || (opts.name = arg1.name || \"\"); /* for generated name */\n return new ComputedValue(opts);\n};\nObject.assign(computed, computedAnnotation);\ncomputed.struct = /*#__PURE__*/createDecoratorAnnotation(computedStructAnnotation);\n\nvar _getDescriptor$config, _getDescriptor;\n// we don't use globalState for these in order to avoid possible issues with multiple\n// mobx versions\nvar currentActionId = 0;\nvar nextActionId = 1;\nvar isFunctionNameConfigurable = (_getDescriptor$config = (_getDescriptor = /*#__PURE__*/getDescriptor(function () {}, \"name\")) == null ? void 0 : _getDescriptor.configurable) != null ? _getDescriptor$config : false;\n// we can safely recycle this object\nvar tmpNameDescriptor = {\n value: \"action\",\n configurable: true,\n writable: false,\n enumerable: false\n};\nfunction createAction(actionName, fn, autoAction, ref) {\n if (autoAction === void 0) {\n autoAction = false;\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!isFunction(fn)) {\n die(\"`action` can only be invoked on functions\");\n }\n if (typeof actionName !== \"string\" || !actionName) {\n die(\"actions should have valid names, got: '\" + actionName + \"'\");\n }\n }\n function res() {\n return executeAction(actionName, autoAction, fn, ref || this, arguments);\n }\n res.isMobxAction = true;\n res.toString = function () {\n return fn.toString();\n };\n if (isFunctionNameConfigurable) {\n tmpNameDescriptor.value = actionName;\n defineProperty(res, \"name\", tmpNameDescriptor);\n }\n return res;\n}\nfunction executeAction(actionName, canRunAsDerivation, fn, scope, args) {\n var runInfo = _startAction(actionName, canRunAsDerivation, scope, args);\n try {\n return fn.apply(scope, args);\n } catch (err) {\n runInfo.error_ = err;\n throw err;\n } finally {\n _endAction(runInfo);\n }\n}\nfunction _startAction(actionName, canRunAsDerivation,\n// true for autoAction\nscope, args) {\n var notifySpy_ = process.env.NODE_ENV !== \"production\" && isSpyEnabled() && !!actionName;\n var startTime_ = 0;\n if (process.env.NODE_ENV !== \"production\" && notifySpy_) {\n startTime_ = Date.now();\n var flattenedArgs = args ? Array.from(args) : EMPTY_ARRAY;\n spyReportStart({\n type: ACTION,\n name: actionName,\n object: scope,\n arguments: flattenedArgs\n });\n }\n var prevDerivation_ = globalState.trackingDerivation;\n var runAsAction = !canRunAsDerivation || !prevDerivation_;\n startBatch();\n var prevAllowStateChanges_ = globalState.allowStateChanges; // by default preserve previous allow\n if (runAsAction) {\n untrackedStart();\n prevAllowStateChanges_ = allowStateChangesStart(true);\n }\n var prevAllowStateReads_ = allowStateReadsStart(true);\n var runInfo = {\n runAsAction_: runAsAction,\n prevDerivation_: prevDerivation_,\n prevAllowStateChanges_: prevAllowStateChanges_,\n prevAllowStateReads_: prevAllowStateReads_,\n notifySpy_: notifySpy_,\n startTime_: startTime_,\n actionId_: nextActionId++,\n parentActionId_: currentActionId\n };\n currentActionId = runInfo.actionId_;\n return runInfo;\n}\nfunction _endAction(runInfo) {\n if (currentActionId !== runInfo.actionId_) {\n die(30);\n }\n currentActionId = runInfo.parentActionId_;\n if (runInfo.error_ !== undefined) {\n globalState.suppressReactionErrors = true;\n }\n allowStateChangesEnd(runInfo.prevAllowStateChanges_);\n allowStateReadsEnd(runInfo.prevAllowStateReads_);\n endBatch();\n if (runInfo.runAsAction_) {\n untrackedEnd(runInfo.prevDerivation_);\n }\n if (process.env.NODE_ENV !== \"production\" && runInfo.notifySpy_) {\n spyReportEnd({\n time: Date.now() - runInfo.startTime_\n });\n }\n globalState.suppressReactionErrors = false;\n}\nfunction allowStateChanges(allowStateChanges, func) {\n var prev = allowStateChangesStart(allowStateChanges);\n try {\n return func();\n } finally {\n allowStateChangesEnd(prev);\n }\n}\nfunction allowStateChangesStart(allowStateChanges) {\n var prev = globalState.allowStateChanges;\n globalState.allowStateChanges = allowStateChanges;\n return prev;\n}\nfunction allowStateChangesEnd(prev) {\n globalState.allowStateChanges = prev;\n}\n\nvar _Symbol$toPrimitive;\nvar CREATE = \"create\";\n_Symbol$toPrimitive = Symbol.toPrimitive;\nvar ObservableValue = /*#__PURE__*/function (_Atom) {\n _inheritsLoose(ObservableValue, _Atom);\n function ObservableValue(value, enhancer, name_, notifySpy, equals) {\n var _this;\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"ObservableValue@\" + getNextId() : \"ObservableValue\";\n }\n if (notifySpy === void 0) {\n notifySpy = true;\n }\n if (equals === void 0) {\n equals = comparer[\"default\"];\n }\n _this = _Atom.call(this, name_) || this;\n _this.enhancer = void 0;\n _this.name_ = void 0;\n _this.equals = void 0;\n _this.hasUnreportedChange_ = false;\n _this.interceptors_ = void 0;\n _this.changeListeners_ = void 0;\n _this.value_ = void 0;\n _this.dehancer = void 0;\n _this.enhancer = enhancer;\n _this.name_ = name_;\n _this.equals = equals;\n _this.value_ = enhancer(value, undefined, name_);\n if (process.env.NODE_ENV !== \"production\" && notifySpy && isSpyEnabled()) {\n // only notify spy if this is a stand-alone observable\n spyReport({\n type: CREATE,\n object: _assertThisInitialized(_this),\n observableKind: \"value\",\n debugObjectName: _this.name_,\n newValue: \"\" + _this.value_\n });\n }\n return _this;\n }\n var _proto = ObservableValue.prototype;\n _proto.dehanceValue = function dehanceValue(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.set = function set(newValue) {\n var oldValue = this.value_;\n newValue = this.prepareNewValue_(newValue);\n if (newValue !== globalState.UNCHANGED) {\n var notifySpy = isSpyEnabled();\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart({\n type: UPDATE,\n object: this,\n observableKind: \"value\",\n debugObjectName: this.name_,\n newValue: newValue,\n oldValue: oldValue\n });\n }\n this.setNewValue_(newValue);\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n };\n _proto.prepareNewValue_ = function prepareNewValue_(newValue) {\n checkIfStateModificationsAreAllowed(this);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this,\n type: UPDATE,\n newValue: newValue\n });\n if (!change) {\n return globalState.UNCHANGED;\n }\n newValue = change.newValue;\n }\n // apply modifier\n newValue = this.enhancer(newValue, this.value_, this.name_);\n return this.equals(this.value_, newValue) ? globalState.UNCHANGED : newValue;\n };\n _proto.setNewValue_ = function setNewValue_(newValue) {\n var oldValue = this.value_;\n this.value_ = newValue;\n this.reportChanged();\n if (hasListeners(this)) {\n notifyListeners(this, {\n type: UPDATE,\n object: this,\n newValue: newValue,\n oldValue: oldValue\n });\n }\n };\n _proto.get = function get() {\n this.reportObserved();\n return this.dehanceValue(this.value_);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (fireImmediately) {\n listener({\n observableKind: \"value\",\n debugObjectName: this.name_,\n object: this,\n type: UPDATE,\n newValue: this.value_,\n oldValue: undefined\n });\n }\n return registerListener(this, listener);\n };\n _proto.raw = function raw() {\n // used by MST ot get undehanced value\n return this.value_;\n };\n _proto.toJSON = function toJSON() {\n return this.get();\n };\n _proto.toString = function toString() {\n return this.name_ + \"[\" + this.value_ + \"]\";\n };\n _proto.valueOf = function valueOf() {\n return toPrimitive(this.get());\n };\n _proto[_Symbol$toPrimitive] = function () {\n return this.valueOf();\n };\n return ObservableValue;\n}(Atom);\nvar isObservableValue = /*#__PURE__*/createInstanceofPredicate(\"ObservableValue\", ObservableValue);\n\nvar _Symbol$toPrimitive$1;\n/**\n * A node in the state dependency root that observes other nodes, and can be observed itself.\n *\n * ComputedValue will remember the result of the computation for the duration of the batch, or\n * while being observed.\n *\n * During this time it will recompute only when one of its direct dependencies changed,\n * but only when it is being accessed with `ComputedValue.get()`.\n *\n * Implementation description:\n * 1. First time it's being accessed it will compute and remember result\n * give back remembered result until 2. happens\n * 2. First time any deep dependency change, propagate POSSIBLY_STALE to all observers, wait for 3.\n * 3. When it's being accessed, recompute if any shallow dependency changed.\n * if result changed: propagate STALE to all observers, that were POSSIBLY_STALE from the last step.\n * go to step 2. either way\n *\n * If at any point it's outside batch and it isn't observed: reset everything and go to 1.\n */\n_Symbol$toPrimitive$1 = Symbol.toPrimitive;\nvar ComputedValue = /*#__PURE__*/function () {\n // nodes we are looking at. Our value depends on these nodes\n // during tracking it's an array with new observed observers\n\n // to check for cycles\n\n // N.B: unminified as it is used by MST\n\n /**\n * Create a new computed value based on a function expression.\n *\n * The `name` property is for debug purposes only.\n *\n * The `equals` property specifies the comparer function to use to determine if a newly produced\n * value differs from the previous value. Two comparers are provided in the library; `defaultComparer`\n * compares based on identity comparison (===), and `structuralComparer` deeply compares the structure.\n * Structural comparison can be convenient if you always produce a new aggregated object and\n * don't want to notify observers if it is structurally the same.\n * This is useful for working with vectors, mouse coordinates etc.\n */\n function ComputedValue(options) {\n this.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n this.observing_ = [];\n this.newObserving_ = null;\n this.isBeingObserved_ = false;\n this.isPendingUnobservation_ = false;\n this.observers_ = new Set();\n this.diffValue_ = 0;\n this.runId_ = 0;\n this.lastAccessedBy_ = 0;\n this.lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n this.unboundDepsCount_ = 0;\n this.value_ = new CaughtException(null);\n this.name_ = void 0;\n this.triggeredBy_ = void 0;\n this.isComputing_ = false;\n this.isRunningSetter_ = false;\n this.derivation = void 0;\n this.setter_ = void 0;\n this.isTracing_ = TraceMode.NONE;\n this.scope_ = void 0;\n this.equals_ = void 0;\n this.requiresReaction_ = void 0;\n this.keepAlive_ = void 0;\n this.onBOL = void 0;\n this.onBUOL = void 0;\n if (!options.get) {\n die(31);\n }\n this.derivation = options.get;\n this.name_ = options.name || (process.env.NODE_ENV !== \"production\" ? \"ComputedValue@\" + getNextId() : \"ComputedValue\");\n if (options.set) {\n this.setter_ = createAction(process.env.NODE_ENV !== \"production\" ? this.name_ + \"-setter\" : \"ComputedValue-setter\", options.set);\n }\n this.equals_ = options.equals || (options.compareStructural || options.struct ? comparer.structural : comparer[\"default\"]);\n this.scope_ = options.context;\n this.requiresReaction_ = options.requiresReaction;\n this.keepAlive_ = !!options.keepAlive;\n }\n var _proto = ComputedValue.prototype;\n _proto.onBecomeStale_ = function onBecomeStale_() {\n propagateMaybeChanged(this);\n };\n _proto.onBO = function onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(function (listener) {\n return listener();\n });\n }\n };\n _proto.onBUO = function onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(function (listener) {\n return listener();\n });\n }\n }\n /**\n * Returns the current value of this computed value.\n * Will evaluate its computation first if needed.\n */;\n _proto.get = function get() {\n if (this.isComputing_) {\n die(32, this.name_, this.derivation);\n }\n if (globalState.inBatch === 0 &&\n // !globalState.trackingDerivatpion &&\n this.observers_.size === 0 && !this.keepAlive_) {\n if (shouldCompute(this)) {\n this.warnAboutUntrackedRead_();\n startBatch(); // See perf test 'computed memoization'\n this.value_ = this.computeValue_(false);\n endBatch();\n }\n } else {\n reportObserved(this);\n if (shouldCompute(this)) {\n var prevTrackingContext = globalState.trackingContext;\n if (this.keepAlive_ && !prevTrackingContext) {\n globalState.trackingContext = this;\n }\n if (this.trackAndCompute()) {\n propagateChangeConfirmed(this);\n }\n globalState.trackingContext = prevTrackingContext;\n }\n }\n var result = this.value_;\n if (isCaughtException(result)) {\n throw result.cause;\n }\n return result;\n };\n _proto.set = function set(value) {\n if (this.setter_) {\n if (this.isRunningSetter_) {\n die(33, this.name_);\n }\n this.isRunningSetter_ = true;\n try {\n this.setter_.call(this.scope_, value);\n } finally {\n this.isRunningSetter_ = false;\n }\n } else {\n die(34, this.name_);\n }\n };\n _proto.trackAndCompute = function trackAndCompute() {\n // N.B: unminified as it is used by MST\n var oldValue = this.value_;\n var wasSuspended = /* see #1208 */this.dependenciesState_ === IDerivationState_.NOT_TRACKING_;\n var newValue = this.computeValue_(true);\n var changed = wasSuspended || isCaughtException(oldValue) || isCaughtException(newValue) || !this.equals_(oldValue, newValue);\n if (changed) {\n this.value_ = newValue;\n if (process.env.NODE_ENV !== \"production\" && isSpyEnabled()) {\n spyReport({\n observableKind: \"computed\",\n debugObjectName: this.name_,\n object: this.scope_,\n type: \"update\",\n oldValue: oldValue,\n newValue: newValue\n });\n }\n }\n return changed;\n };\n _proto.computeValue_ = function computeValue_(track) {\n this.isComputing_ = true;\n // don't allow state changes during computation\n var prev = allowStateChangesStart(false);\n var res;\n if (track) {\n res = trackDerivedFunction(this, this.derivation, this.scope_);\n } else {\n if (globalState.disableErrorBoundaries === true) {\n res = this.derivation.call(this.scope_);\n } else {\n try {\n res = this.derivation.call(this.scope_);\n } catch (e) {\n res = new CaughtException(e);\n }\n }\n }\n allowStateChangesEnd(prev);\n this.isComputing_ = false;\n return res;\n };\n _proto.suspend_ = function suspend_() {\n if (!this.keepAlive_) {\n clearObserving(this);\n this.value_ = undefined; // don't hold on to computed value!\n if (process.env.NODE_ENV !== \"production\" && this.isTracing_ !== TraceMode.NONE) {\n console.log(\"[mobx.trace] Computed value '\" + this.name_ + \"' was suspended and it will recompute on the next access.\");\n }\n }\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n var _this = this;\n var firstTime = true;\n var prevValue = undefined;\n return autorun(function () {\n // TODO: why is this in a different place than the spyReport() function? in all other observables it's called in the same place\n var newValue = _this.get();\n if (!firstTime || fireImmediately) {\n var prevU = untrackedStart();\n listener({\n observableKind: \"computed\",\n debugObjectName: _this.name_,\n type: UPDATE,\n object: _this,\n newValue: newValue,\n oldValue: prevValue\n });\n untrackedEnd(prevU);\n }\n firstTime = false;\n prevValue = newValue;\n });\n };\n _proto.warnAboutUntrackedRead_ = function warnAboutUntrackedRead_() {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n if (this.isTracing_ !== TraceMode.NONE) {\n console.log(\"[mobx.trace] Computed value '\" + this.name_ + \"' is being read outside a reactive context. Doing a full recompute.\");\n }\n if (typeof this.requiresReaction_ === \"boolean\" ? this.requiresReaction_ : globalState.computedRequiresReaction) {\n console.warn(\"[mobx] Computed value '\" + this.name_ + \"' is being read outside a reactive context. Doing a full recompute.\");\n }\n };\n _proto.toString = function toString() {\n return this.name_ + \"[\" + this.derivation.toString() + \"]\";\n };\n _proto.valueOf = function valueOf() {\n return toPrimitive(this.get());\n };\n _proto[_Symbol$toPrimitive$1] = function () {\n return this.valueOf();\n };\n return ComputedValue;\n}();\nvar isComputedValue = /*#__PURE__*/createInstanceofPredicate(\"ComputedValue\", ComputedValue);\n\nvar IDerivationState_;\n(function (IDerivationState_) {\n // before being run or (outside batch and not being observed)\n // at this point derivation is not holding any data about dependency tree\n IDerivationState_[IDerivationState_[\"NOT_TRACKING_\"] = -1] = \"NOT_TRACKING_\";\n // no shallow dependency changed since last computation\n // won't recalculate derivation\n // this is what makes mobx fast\n IDerivationState_[IDerivationState_[\"UP_TO_DATE_\"] = 0] = \"UP_TO_DATE_\";\n // some deep dependency changed, but don't know if shallow dependency changed\n // will require to check first if UP_TO_DATE or POSSIBLY_STALE\n // currently only ComputedValue will propagate POSSIBLY_STALE\n //\n // having this state is second big optimization:\n // don't have to recompute on every dependency change, but only when it's needed\n IDerivationState_[IDerivationState_[\"POSSIBLY_STALE_\"] = 1] = \"POSSIBLY_STALE_\";\n // A shallow dependency has changed since last computation and the derivation\n // will need to recompute when it's needed next.\n IDerivationState_[IDerivationState_[\"STALE_\"] = 2] = \"STALE_\";\n})(IDerivationState_ || (IDerivationState_ = {}));\nvar TraceMode;\n(function (TraceMode) {\n TraceMode[TraceMode[\"NONE\"] = 0] = \"NONE\";\n TraceMode[TraceMode[\"LOG\"] = 1] = \"LOG\";\n TraceMode[TraceMode[\"BREAK\"] = 2] = \"BREAK\";\n})(TraceMode || (TraceMode = {}));\nvar CaughtException = function CaughtException(cause) {\n this.cause = void 0;\n this.cause = cause;\n // Empty\n};\n\nfunction isCaughtException(e) {\n return e instanceof CaughtException;\n}\n/**\n * Finds out whether any dependency of the derivation has actually changed.\n * If dependenciesState is 1 then it will recalculate dependencies,\n * if any dependency changed it will propagate it by changing dependenciesState to 2.\n *\n * By iterating over the dependencies in the same order that they were reported and\n * stopping on the first change, all the recalculations are only called for ComputedValues\n * that will be tracked by derivation. That is because we assume that if the first x\n * dependencies of the derivation doesn't change then the derivation should run the same way\n * up until accessing x-th dependency.\n */\nfunction shouldCompute(derivation) {\n switch (derivation.dependenciesState_) {\n case IDerivationState_.UP_TO_DATE_:\n return false;\n case IDerivationState_.NOT_TRACKING_:\n case IDerivationState_.STALE_:\n return true;\n case IDerivationState_.POSSIBLY_STALE_:\n {\n // state propagation can occur outside of action/reactive context #2195\n var prevAllowStateReads = allowStateReadsStart(true);\n var prevUntracked = untrackedStart(); // no need for those computeds to be reported, they will be picked up in trackDerivedFunction.\n var obs = derivation.observing_,\n l = obs.length;\n for (var i = 0; i < l; i++) {\n var obj = obs[i];\n if (isComputedValue(obj)) {\n if (globalState.disableErrorBoundaries) {\n obj.get();\n } else {\n try {\n obj.get();\n } catch (e) {\n // we are not interested in the value *or* exception at this moment, but if there is one, notify all\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return true;\n }\n }\n // if ComputedValue `obj` actually changed it will be computed and propagated to its observers.\n // and `derivation` is an observer of `obj`\n // invariantShouldCompute(derivation)\n if (derivation.dependenciesState_ === IDerivationState_.STALE_) {\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return true;\n }\n }\n }\n changeDependenciesStateTo0(derivation);\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return false;\n }\n }\n}\nfunction isComputingDerivation() {\n return globalState.trackingDerivation !== null; // filter out actions inside computations\n}\n\nfunction checkIfStateModificationsAreAllowed(atom) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n var hasObservers = atom.observers_.size > 0;\n // Should not be possible to change observed state outside strict mode, except during initialization, see #563\n if (!globalState.allowStateChanges && (hasObservers || globalState.enforceActions === \"always\")) {\n console.warn(\"[MobX] \" + (globalState.enforceActions ? \"Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: \" : \"Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: \") + atom.name_);\n }\n}\nfunction checkIfStateReadsAreAllowed(observable) {\n if (process.env.NODE_ENV !== \"production\" && !globalState.allowStateReads && globalState.observableRequiresReaction) {\n console.warn(\"[mobx] Observable '\" + observable.name_ + \"' being read outside a reactive context.\");\n }\n}\n/**\n * Executes the provided function `f` and tracks which observables are being accessed.\n * The tracking information is stored on the `derivation` object and the derivation is registered\n * as observer of any of the accessed observables.\n */\nfunction trackDerivedFunction(derivation, f, context) {\n var prevAllowStateReads = allowStateReadsStart(true);\n // pre allocate array allocation + room for variation in deps\n // array will be trimmed by bindDependencies\n changeDependenciesStateTo0(derivation);\n derivation.newObserving_ = new Array(derivation.observing_.length + 100);\n derivation.unboundDepsCount_ = 0;\n derivation.runId_ = ++globalState.runId;\n var prevTracking = globalState.trackingDerivation;\n globalState.trackingDerivation = derivation;\n globalState.inBatch++;\n var result;\n if (globalState.disableErrorBoundaries === true) {\n result = f.call(context);\n } else {\n try {\n result = f.call(context);\n } catch (e) {\n result = new CaughtException(e);\n }\n }\n globalState.inBatch--;\n globalState.trackingDerivation = prevTracking;\n bindDependencies(derivation);\n warnAboutDerivationWithoutDependencies(derivation);\n allowStateReadsEnd(prevAllowStateReads);\n return result;\n}\nfunction warnAboutDerivationWithoutDependencies(derivation) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n if (derivation.observing_.length !== 0) {\n return;\n }\n if (typeof derivation.requiresObservable_ === \"boolean\" ? derivation.requiresObservable_ : globalState.reactionRequiresObservable) {\n console.warn(\"[mobx] Derivation '\" + derivation.name_ + \"' is created/updated without reading any observable value.\");\n }\n}\n/**\n * diffs newObserving with observing.\n * update observing to be newObserving with unique observables\n * notify observers that become observed/unobserved\n */\nfunction bindDependencies(derivation) {\n // invariant(derivation.dependenciesState !== IDerivationState.NOT_TRACKING, \"INTERNAL ERROR bindDependencies expects derivation.dependenciesState !== -1\");\n var prevObserving = derivation.observing_;\n var observing = derivation.observing_ = derivation.newObserving_;\n var lowestNewObservingDerivationState = IDerivationState_.UP_TO_DATE_;\n // Go through all new observables and check diffValue: (this list can contain duplicates):\n // 0: first occurrence, change to 1 and keep it\n // 1: extra occurrence, drop it\n var i0 = 0,\n l = derivation.unboundDepsCount_;\n for (var i = 0; i < l; i++) {\n var dep = observing[i];\n if (dep.diffValue_ === 0) {\n dep.diffValue_ = 1;\n if (i0 !== i) {\n observing[i0] = dep;\n }\n i0++;\n }\n // Upcast is 'safe' here, because if dep is IObservable, `dependenciesState` will be undefined,\n // not hitting the condition\n if (dep.dependenciesState_ > lowestNewObservingDerivationState) {\n lowestNewObservingDerivationState = dep.dependenciesState_;\n }\n }\n observing.length = i0;\n derivation.newObserving_ = null; // newObserving shouldn't be needed outside tracking (statement moved down to work around FF bug, see #614)\n // Go through all old observables and check diffValue: (it is unique after last bindDependencies)\n // 0: it's not in new observables, unobserve it\n // 1: it keeps being observed, don't want to notify it. change to 0\n l = prevObserving.length;\n while (l--) {\n var _dep = prevObserving[l];\n if (_dep.diffValue_ === 0) {\n removeObserver(_dep, derivation);\n }\n _dep.diffValue_ = 0;\n }\n // Go through all new observables and check diffValue: (now it should be unique)\n // 0: it was set to 0 in last loop. don't need to do anything.\n // 1: it wasn't observed, let's observe it. set back to 0\n while (i0--) {\n var _dep2 = observing[i0];\n if (_dep2.diffValue_ === 1) {\n _dep2.diffValue_ = 0;\n addObserver(_dep2, derivation);\n }\n }\n // Some new observed derivations may become stale during this derivation computation\n // so they have had no chance to propagate staleness (#916)\n if (lowestNewObservingDerivationState !== IDerivationState_.UP_TO_DATE_) {\n derivation.dependenciesState_ = lowestNewObservingDerivationState;\n derivation.onBecomeStale_();\n }\n}\nfunction clearObserving(derivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR clearObserving should be called only inside batch\");\n var obs = derivation.observing_;\n derivation.observing_ = [];\n var i = obs.length;\n while (i--) {\n removeObserver(obs[i], derivation);\n }\n derivation.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n}\nfunction untracked(action) {\n var prev = untrackedStart();\n try {\n return action();\n } finally {\n untrackedEnd(prev);\n }\n}\nfunction untrackedStart() {\n var prev = globalState.trackingDerivation;\n globalState.trackingDerivation = null;\n return prev;\n}\nfunction untrackedEnd(prev) {\n globalState.trackingDerivation = prev;\n}\nfunction allowStateReadsStart(allowStateReads) {\n var prev = globalState.allowStateReads;\n globalState.allowStateReads = allowStateReads;\n return prev;\n}\nfunction allowStateReadsEnd(prev) {\n globalState.allowStateReads = prev;\n}\n/**\n * needed to keep `lowestObserverState` correct. when changing from (2 or 1) to 0\n *\n */\nfunction changeDependenciesStateTo0(derivation) {\n if (derivation.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n return;\n }\n derivation.dependenciesState_ = IDerivationState_.UP_TO_DATE_;\n var obs = derivation.observing_;\n var i = obs.length;\n while (i--) {\n obs[i].lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n }\n}\n\n/**\n * These values will persist if global state is reset\n */\nvar persistentKeys = [\"mobxGuid\", \"spyListeners\", \"enforceActions\", \"computedRequiresReaction\", \"reactionRequiresObservable\", \"observableRequiresReaction\", \"allowStateReads\", \"disableErrorBoundaries\", \"runId\", \"UNCHANGED\", \"useProxies\"];\nvar MobXGlobals = function MobXGlobals() {\n this.version = 6;\n this.UNCHANGED = {};\n this.trackingDerivation = null;\n this.trackingContext = null;\n this.runId = 0;\n this.mobxGuid = 0;\n this.inBatch = 0;\n this.pendingUnobservations = [];\n this.pendingReactions = [];\n this.isRunningReactions = false;\n this.allowStateChanges = false;\n this.allowStateReads = true;\n this.enforceActions = true;\n this.spyListeners = [];\n this.globalReactionErrorHandlers = [];\n this.computedRequiresReaction = false;\n this.reactionRequiresObservable = false;\n this.observableRequiresReaction = false;\n this.disableErrorBoundaries = false;\n this.suppressReactionErrors = false;\n this.useProxies = true;\n this.verifyProxies = false;\n this.safeDescriptors = true;\n};\nvar canMergeGlobalState = true;\nvar isolateCalled = false;\nvar globalState = /*#__PURE__*/function () {\n var global = /*#__PURE__*/getGlobal();\n if (global.__mobxInstanceCount > 0 && !global.__mobxGlobals) {\n canMergeGlobalState = false;\n }\n if (global.__mobxGlobals && global.__mobxGlobals.version !== new MobXGlobals().version) {\n canMergeGlobalState = false;\n }\n if (!canMergeGlobalState) {\n // Because this is a IIFE we need to let isolateCalled a chance to change\n // so we run it after the event loop completed at least 1 iteration\n setTimeout(function () {\n if (!isolateCalled) {\n die(35);\n }\n }, 1);\n return new MobXGlobals();\n } else if (global.__mobxGlobals) {\n global.__mobxInstanceCount += 1;\n if (!global.__mobxGlobals.UNCHANGED) {\n global.__mobxGlobals.UNCHANGED = {};\n } // make merge backward compatible\n return global.__mobxGlobals;\n } else {\n global.__mobxInstanceCount = 1;\n return global.__mobxGlobals = /*#__PURE__*/new MobXGlobals();\n }\n}();\nfunction isolateGlobalState() {\n if (globalState.pendingReactions.length || globalState.inBatch || globalState.isRunningReactions) {\n die(36);\n }\n isolateCalled = true;\n if (canMergeGlobalState) {\n var global = getGlobal();\n if (--global.__mobxInstanceCount === 0) {\n global.__mobxGlobals = undefined;\n }\n globalState = new MobXGlobals();\n }\n}\nfunction getGlobalState() {\n return globalState;\n}\n/**\n * For testing purposes only; this will break the internal state of existing observables,\n * but can be used to get back at a stable state after throwing errors\n */\nfunction resetGlobalState() {\n var defaultGlobals = new MobXGlobals();\n for (var key in defaultGlobals) {\n if (persistentKeys.indexOf(key) === -1) {\n globalState[key] = defaultGlobals[key];\n }\n }\n globalState.allowStateChanges = !globalState.enforceActions;\n}\n\nfunction hasObservers(observable) {\n return observable.observers_ && observable.observers_.size > 0;\n}\nfunction getObservers(observable) {\n return observable.observers_;\n}\n// function invariantObservers(observable: IObservable) {\n// const list = observable.observers\n// const map = observable.observersIndexes\n// const l = list.length\n// for (let i = 0; i < l; i++) {\n// const id = list[i].__mapid\n// if (i) {\n// invariant(map[id] === i, \"INTERNAL ERROR maps derivation.__mapid to index in list\") // for performance\n// } else {\n// invariant(!(id in map), \"INTERNAL ERROR observer on index 0 shouldn't be held in map.\") // for performance\n// }\n// }\n// invariant(\n// list.length === 0 || Object.keys(map).length === list.length - 1,\n// \"INTERNAL ERROR there is no junk in map\"\n// )\n// }\nfunction addObserver(observable, node) {\n // invariant(node.dependenciesState !== -1, \"INTERNAL ERROR, can add only dependenciesState !== -1\");\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR add already added node\");\n // invariantObservers(observable);\n observable.observers_.add(node);\n if (observable.lowestObserverState_ > node.dependenciesState_) {\n observable.lowestObserverState_ = node.dependenciesState_;\n }\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR didn't add node\");\n}\n\nfunction removeObserver(observable, node) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR, remove should be called only inside batch\");\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR remove already removed node\");\n // invariantObservers(observable);\n observable.observers_[\"delete\"](node);\n if (observable.observers_.size === 0) {\n // deleting last observer\n queueForUnobservation(observable);\n }\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR remove already removed node2\");\n}\n\nfunction queueForUnobservation(observable) {\n if (observable.isPendingUnobservation_ === false) {\n // invariant(observable._observers.length === 0, \"INTERNAL ERROR, should only queue for unobservation unobserved observables\");\n observable.isPendingUnobservation_ = true;\n globalState.pendingUnobservations.push(observable);\n }\n}\n/**\n * Batch starts a transaction, at least for purposes of memoizing ComputedValues when nothing else does.\n * During a batch `onBecomeUnobserved` will be called at most once per observable.\n * Avoids unnecessary recalculations.\n */\nfunction startBatch() {\n globalState.inBatch++;\n}\nfunction endBatch() {\n if (--globalState.inBatch === 0) {\n runReactions();\n // the batch is actually about to finish, all unobserving should happen here.\n var list = globalState.pendingUnobservations;\n for (var i = 0; i < list.length; i++) {\n var observable = list[i];\n observable.isPendingUnobservation_ = false;\n if (observable.observers_.size === 0) {\n if (observable.isBeingObserved_) {\n // if this observable had reactive observers, trigger the hooks\n observable.isBeingObserved_ = false;\n observable.onBUO();\n }\n if (observable instanceof ComputedValue) {\n // computed values are automatically teared down when the last observer leaves\n // this process happens recursively, this computed might be the last observabe of another, etc..\n observable.suspend_();\n }\n }\n }\n globalState.pendingUnobservations = [];\n }\n}\nfunction reportObserved(observable) {\n checkIfStateReadsAreAllowed(observable);\n var derivation = globalState.trackingDerivation;\n if (derivation !== null) {\n /**\n * Simple optimization, give each derivation run an unique id (runId)\n * Check if last time this observable was accessed the same runId is used\n * if this is the case, the relation is already known\n */\n if (derivation.runId_ !== observable.lastAccessedBy_) {\n observable.lastAccessedBy_ = derivation.runId_;\n // Tried storing newObserving, or observing, or both as Set, but performance didn't come close...\n derivation.newObserving_[derivation.unboundDepsCount_++] = observable;\n if (!observable.isBeingObserved_ && globalState.trackingContext) {\n observable.isBeingObserved_ = true;\n observable.onBO();\n }\n }\n return observable.isBeingObserved_;\n } else if (observable.observers_.size === 0 && globalState.inBatch > 0) {\n queueForUnobservation(observable);\n }\n return false;\n}\n// function invariantLOS(observable: IObservable, msg: string) {\n// // it's expensive so better not run it in produciton. but temporarily helpful for testing\n// const min = getObservers(observable).reduce((a, b) => Math.min(a, b.dependenciesState), 2)\n// if (min >= observable.lowestObserverState) return // <- the only assumption about `lowestObserverState`\n// throw new Error(\n// \"lowestObserverState is wrong for \" +\n// msg +\n// \" because \" +\n// min +\n// \" < \" +\n// observable.lowestObserverState\n// )\n// }\n/**\n * NOTE: current propagation mechanism will in case of self reruning autoruns behave unexpectedly\n * It will propagate changes to observers from previous run\n * It's hard or maybe impossible (with reasonable perf) to get it right with current approach\n * Hopefully self reruning autoruns aren't a feature people should depend on\n * Also most basic use cases should be ok\n */\n// Called by Atom when its value changes\nfunction propagateChanged(observable) {\n // invariantLOS(observable, \"changed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return;\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_;\n // Ideally we use for..of here, but the downcompiled version is really slow...\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n if (process.env.NODE_ENV !== \"production\" && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable);\n }\n d.onBecomeStale_();\n }\n d.dependenciesState_ = IDerivationState_.STALE_;\n });\n // invariantLOS(observable, \"changed end\");\n}\n// Called by ComputedValue when it recalculate and its value changed\nfunction propagateChangeConfirmed(observable) {\n // invariantLOS(observable, \"confirmed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return;\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_;\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.POSSIBLY_STALE_) {\n d.dependenciesState_ = IDerivationState_.STALE_;\n if (process.env.NODE_ENV !== \"production\" && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable);\n }\n } else if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_ // this happens during computing of `d`, just keep lowestObserverState up to date.\n ) {\n observable.lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n }\n });\n // invariantLOS(observable, \"confirmed end\");\n}\n// Used by computed when its dependency changed, but we don't wan't to immediately recompute.\nfunction propagateMaybeChanged(observable) {\n // invariantLOS(observable, \"maybe start\");\n if (observable.lowestObserverState_ !== IDerivationState_.UP_TO_DATE_) {\n return;\n }\n observable.lowestObserverState_ = IDerivationState_.POSSIBLY_STALE_;\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n d.dependenciesState_ = IDerivationState_.POSSIBLY_STALE_;\n d.onBecomeStale_();\n }\n });\n // invariantLOS(observable, \"maybe end\");\n}\n\nfunction logTraceInfo(derivation, observable) {\n console.log(\"[mobx.trace] '\" + derivation.name_ + \"' is invalidated due to a change in: '\" + observable.name_ + \"'\");\n if (derivation.isTracing_ === TraceMode.BREAK) {\n var lines = [];\n printDepTree(getDependencyTree(derivation), lines, 1);\n // prettier-ignore\n new Function(\"debugger;\\n/*\\nTracing '\" + derivation.name_ + \"'\\n\\nYou are entering this break point because derivation '\" + derivation.name_ + \"' is being traced and '\" + observable.name_ + \"' is now forcing it to update.\\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\\n\\n\" + (derivation instanceof ComputedValue ? derivation.derivation.toString().replace(/[*]\\//g, \"/\") : \"\") + \"\\n\\nThe dependencies for this derivation are:\\n\\n\" + lines.join(\"\\n\") + \"\\n*/\\n \")();\n }\n}\nfunction printDepTree(tree, lines, depth) {\n if (lines.length >= 1000) {\n lines.push(\"(and many more)\");\n return;\n }\n lines.push(\"\" + \"\\t\".repeat(depth - 1) + tree.name);\n if (tree.dependencies) {\n tree.dependencies.forEach(function (child) {\n return printDepTree(child, lines, depth + 1);\n });\n }\n}\n\nvar Reaction = /*#__PURE__*/function () {\n // nodes we are looking at. Our value depends on these nodes\n\n function Reaction(name_, onInvalidate_, errorHandler_, requiresObservable_) {\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"Reaction@\" + getNextId() : \"Reaction\";\n }\n this.name_ = void 0;\n this.onInvalidate_ = void 0;\n this.errorHandler_ = void 0;\n this.requiresObservable_ = void 0;\n this.observing_ = [];\n this.newObserving_ = [];\n this.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n this.diffValue_ = 0;\n this.runId_ = 0;\n this.unboundDepsCount_ = 0;\n this.isDisposed_ = false;\n this.isScheduled_ = false;\n this.isTrackPending_ = false;\n this.isRunning_ = false;\n this.isTracing_ = TraceMode.NONE;\n this.name_ = name_;\n this.onInvalidate_ = onInvalidate_;\n this.errorHandler_ = errorHandler_;\n this.requiresObservable_ = requiresObservable_;\n }\n var _proto = Reaction.prototype;\n _proto.onBecomeStale_ = function onBecomeStale_() {\n this.schedule_();\n };\n _proto.schedule_ = function schedule_() {\n if (!this.isScheduled_) {\n this.isScheduled_ = true;\n globalState.pendingReactions.push(this);\n runReactions();\n }\n };\n _proto.isScheduled = function isScheduled() {\n return this.isScheduled_;\n }\n /**\n * internal, use schedule() if you intend to kick off a reaction\n */;\n _proto.runReaction_ = function runReaction_() {\n if (!this.isDisposed_) {\n startBatch();\n this.isScheduled_ = false;\n var prev = globalState.trackingContext;\n globalState.trackingContext = this;\n if (shouldCompute(this)) {\n this.isTrackPending_ = true;\n try {\n this.onInvalidate_();\n if (process.env.NODE_ENV !== \"production\" && this.isTrackPending_ && isSpyEnabled()) {\n // onInvalidate didn't trigger track right away..\n spyReport({\n name: this.name_,\n type: \"scheduled-reaction\"\n });\n }\n } catch (e) {\n this.reportExceptionInDerivation_(e);\n }\n }\n globalState.trackingContext = prev;\n endBatch();\n }\n };\n _proto.track = function track(fn) {\n if (this.isDisposed_) {\n return;\n // console.warn(\"Reaction already disposed\") // Note: Not a warning / error in mobx 4 either\n }\n\n startBatch();\n var notify = isSpyEnabled();\n var startTime;\n if (process.env.NODE_ENV !== \"production\" && notify) {\n startTime = Date.now();\n spyReportStart({\n name: this.name_,\n type: \"reaction\"\n });\n }\n this.isRunning_ = true;\n var prevReaction = globalState.trackingContext; // reactions could create reactions...\n globalState.trackingContext = this;\n var result = trackDerivedFunction(this, fn, undefined);\n globalState.trackingContext = prevReaction;\n this.isRunning_ = false;\n this.isTrackPending_ = false;\n if (this.isDisposed_) {\n // disposed during last run. Clean up everything that was bound after the dispose call.\n clearObserving(this);\n }\n if (isCaughtException(result)) {\n this.reportExceptionInDerivation_(result.cause);\n }\n if (process.env.NODE_ENV !== \"production\" && notify) {\n spyReportEnd({\n time: Date.now() - startTime\n });\n }\n endBatch();\n };\n _proto.reportExceptionInDerivation_ = function reportExceptionInDerivation_(error) {\n var _this = this;\n if (this.errorHandler_) {\n this.errorHandler_(error, this);\n return;\n }\n if (globalState.disableErrorBoundaries) {\n throw error;\n }\n var message = process.env.NODE_ENV !== \"production\" ? \"[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '\" + this + \"'\" : \"[mobx] uncaught error in '\" + this + \"'\";\n if (!globalState.suppressReactionErrors) {\n console.error(message, error);\n /** If debugging brought you here, please, read the above message :-). Tnx! */\n } else if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[mobx] (error in reaction '\" + this.name_ + \"' suppressed, fix error of causing action below)\");\n } // prettier-ignore\n if (process.env.NODE_ENV !== \"production\" && isSpyEnabled()) {\n spyReport({\n type: \"error\",\n name: this.name_,\n message: message,\n error: \"\" + error\n });\n }\n globalState.globalReactionErrorHandlers.forEach(function (f) {\n return f(error, _this);\n });\n };\n _proto.dispose = function dispose() {\n if (!this.isDisposed_) {\n this.isDisposed_ = true;\n if (!this.isRunning_) {\n // if disposed while running, clean up later. Maybe not optimal, but rare case\n startBatch();\n clearObserving(this);\n endBatch();\n }\n }\n };\n _proto.getDisposer_ = function getDisposer_(abortSignal) {\n var _this2 = this;\n var dispose = function dispose() {\n _this2.dispose();\n abortSignal == null ? void 0 : abortSignal.removeEventListener == null ? void 0 : abortSignal.removeEventListener(\"abort\", dispose);\n };\n abortSignal == null ? void 0 : abortSignal.addEventListener == null ? void 0 : abortSignal.addEventListener(\"abort\", dispose);\n dispose[$mobx] = this;\n return dispose;\n };\n _proto.toString = function toString() {\n return \"Reaction[\" + this.name_ + \"]\";\n };\n _proto.trace = function trace$1(enterBreakPoint) {\n if (enterBreakPoint === void 0) {\n enterBreakPoint = false;\n }\n trace(this, enterBreakPoint);\n };\n return Reaction;\n}();\nfunction onReactionError(handler) {\n globalState.globalReactionErrorHandlers.push(handler);\n return function () {\n var idx = globalState.globalReactionErrorHandlers.indexOf(handler);\n if (idx >= 0) {\n globalState.globalReactionErrorHandlers.splice(idx, 1);\n }\n };\n}\n/**\n * Magic number alert!\n * Defines within how many times a reaction is allowed to re-trigger itself\n * until it is assumed that this is gonna be a never ending loop...\n */\nvar MAX_REACTION_ITERATIONS = 100;\nvar reactionScheduler = function reactionScheduler(f) {\n return f();\n};\nfunction runReactions() {\n // Trampolining, if runReactions are already running, new reactions will be picked up\n if (globalState.inBatch > 0 || globalState.isRunningReactions) {\n return;\n }\n reactionScheduler(runReactionsHelper);\n}\nfunction runReactionsHelper() {\n globalState.isRunningReactions = true;\n var allReactions = globalState.pendingReactions;\n var iterations = 0;\n // While running reactions, new reactions might be triggered.\n // Hence we work with two variables and check whether\n // we converge to no remaining reactions after a while.\n while (allReactions.length > 0) {\n if (++iterations === MAX_REACTION_ITERATIONS) {\n console.error(process.env.NODE_ENV !== \"production\" ? \"Reaction doesn't converge to a stable state after \" + MAX_REACTION_ITERATIONS + \" iterations.\" + (\" Probably there is a cycle in the reactive function: \" + allReactions[0]) : \"[mobx] cycle in reaction: \" + allReactions[0]);\n allReactions.splice(0); // clear reactions\n }\n\n var remainingReactions = allReactions.splice(0);\n for (var i = 0, l = remainingReactions.length; i < l; i++) {\n remainingReactions[i].runReaction_();\n }\n }\n globalState.isRunningReactions = false;\n}\nvar isReaction = /*#__PURE__*/createInstanceofPredicate(\"Reaction\", Reaction);\nfunction setReactionScheduler(fn) {\n var baseScheduler = reactionScheduler;\n reactionScheduler = function reactionScheduler(f) {\n return fn(function () {\n return baseScheduler(f);\n });\n };\n}\n\nfunction isSpyEnabled() {\n return process.env.NODE_ENV !== \"production\" && !!globalState.spyListeners.length;\n}\nfunction spyReport(event) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n } // dead code elimination can do the rest\n if (!globalState.spyListeners.length) {\n return;\n }\n var listeners = globalState.spyListeners;\n for (var i = 0, l = listeners.length; i < l; i++) {\n listeners[i](event);\n }\n}\nfunction spyReportStart(event) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n var change = _extends({}, event, {\n spyReportStart: true\n });\n spyReport(change);\n}\nvar END_EVENT = {\n type: \"report-end\",\n spyReportEnd: true\n};\nfunction spyReportEnd(change) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n if (change) {\n spyReport(_extends({}, change, {\n type: \"report-end\",\n spyReportEnd: true\n }));\n } else {\n spyReport(END_EVENT);\n }\n}\nfunction spy(listener) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n console.warn(\"[mobx.spy] Is a no-op in production builds\");\n return function () {};\n } else {\n globalState.spyListeners.push(listener);\n return once(function () {\n globalState.spyListeners = globalState.spyListeners.filter(function (l) {\n return l !== listener;\n });\n });\n }\n}\n\nvar ACTION = \"action\";\nvar ACTION_BOUND = \"action.bound\";\nvar AUTOACTION = \"autoAction\";\nvar AUTOACTION_BOUND = \"autoAction.bound\";\nvar DEFAULT_ACTION_NAME = \"\";\nvar actionAnnotation = /*#__PURE__*/createActionAnnotation(ACTION);\nvar actionBoundAnnotation = /*#__PURE__*/createActionAnnotation(ACTION_BOUND, {\n bound: true\n});\nvar autoActionAnnotation = /*#__PURE__*/createActionAnnotation(AUTOACTION, {\n autoAction: true\n});\nvar autoActionBoundAnnotation = /*#__PURE__*/createActionAnnotation(AUTOACTION_BOUND, {\n autoAction: true,\n bound: true\n});\nfunction createActionFactory(autoAction) {\n var res = function action(arg1, arg2) {\n // action(fn() {})\n if (isFunction(arg1)) {\n return createAction(arg1.name || DEFAULT_ACTION_NAME, arg1, autoAction);\n }\n // action(\"name\", fn() {})\n if (isFunction(arg2)) {\n return createAction(arg1, arg2, autoAction);\n }\n // @action (2022.3 Decorators)\n if (is20223Decorator(arg2)) {\n return (autoAction ? autoActionAnnotation : actionAnnotation).decorate_20223_(arg1, arg2);\n }\n // @action\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, autoAction ? autoActionAnnotation : actionAnnotation);\n }\n // action(\"name\") & @action(\"name\")\n if (isStringish(arg1)) {\n return createDecoratorAnnotation(createActionAnnotation(autoAction ? AUTOACTION : ACTION, {\n name: arg1,\n autoAction: autoAction\n }));\n }\n if (process.env.NODE_ENV !== \"production\") {\n die(\"Invalid arguments for `action`\");\n }\n };\n return res;\n}\nvar action = /*#__PURE__*/createActionFactory(false);\nObject.assign(action, actionAnnotation);\nvar autoAction = /*#__PURE__*/createActionFactory(true);\nObject.assign(autoAction, autoActionAnnotation);\naction.bound = /*#__PURE__*/createDecoratorAnnotation(actionBoundAnnotation);\nautoAction.bound = /*#__PURE__*/createDecoratorAnnotation(autoActionBoundAnnotation);\nfunction runInAction(fn) {\n return executeAction(fn.name || DEFAULT_ACTION_NAME, false, fn, this, undefined);\n}\nfunction isAction(thing) {\n return isFunction(thing) && thing.isMobxAction === true;\n}\n\n/**\n * Creates a named reactive view and keeps it alive, so that the view is always\n * updated if one of the dependencies changes, even when the view is not further used by something else.\n * @param view The reactive view\n * @returns disposer function, which can be used to stop the view from being updated in the future.\n */\nfunction autorun(view, opts) {\n var _opts$name, _opts, _opts2, _opts2$signal, _opts3;\n if (opts === void 0) {\n opts = EMPTY_OBJECT;\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!isFunction(view)) {\n die(\"Autorun expects a function as first argument\");\n }\n if (isAction(view)) {\n die(\"Autorun does not accept actions since actions are untrackable\");\n }\n }\n var name = (_opts$name = (_opts = opts) == null ? void 0 : _opts.name) != null ? _opts$name : process.env.NODE_ENV !== \"production\" ? view.name || \"Autorun@\" + getNextId() : \"Autorun\";\n var runSync = !opts.scheduler && !opts.delay;\n var reaction;\n if (runSync) {\n // normal autorun\n reaction = new Reaction(name, function () {\n this.track(reactionRunner);\n }, opts.onError, opts.requiresObservable);\n } else {\n var scheduler = createSchedulerFromOptions(opts);\n // debounced autorun\n var isScheduled = false;\n reaction = new Reaction(name, function () {\n if (!isScheduled) {\n isScheduled = true;\n scheduler(function () {\n isScheduled = false;\n if (!reaction.isDisposed_) {\n reaction.track(reactionRunner);\n }\n });\n }\n }, opts.onError, opts.requiresObservable);\n }\n function reactionRunner() {\n view(reaction);\n }\n if (!((_opts2 = opts) != null && (_opts2$signal = _opts2.signal) != null && _opts2$signal.aborted)) {\n reaction.schedule_();\n }\n return reaction.getDisposer_((_opts3 = opts) == null ? void 0 : _opts3.signal);\n}\nvar run = function run(f) {\n return f();\n};\nfunction createSchedulerFromOptions(opts) {\n return opts.scheduler ? opts.scheduler : opts.delay ? function (f) {\n return setTimeout(f, opts.delay);\n } : run;\n}\nfunction reaction(expression, effect, opts) {\n var _opts$name2, _opts4, _opts4$signal, _opts5;\n if (opts === void 0) {\n opts = EMPTY_OBJECT;\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!isFunction(expression) || !isFunction(effect)) {\n die(\"First and second argument to reaction should be functions\");\n }\n if (!isPlainObject(opts)) {\n die(\"Third argument of reactions should be an object\");\n }\n }\n var name = (_opts$name2 = opts.name) != null ? _opts$name2 : process.env.NODE_ENV !== \"production\" ? \"Reaction@\" + getNextId() : \"Reaction\";\n var effectAction = action(name, opts.onError ? wrapErrorHandler(opts.onError, effect) : effect);\n var runSync = !opts.scheduler && !opts.delay;\n var scheduler = createSchedulerFromOptions(opts);\n var firstTime = true;\n var isScheduled = false;\n var value;\n var oldValue;\n var equals = opts.compareStructural ? comparer.structural : opts.equals || comparer[\"default\"];\n var r = new Reaction(name, function () {\n if (firstTime || runSync) {\n reactionRunner();\n } else if (!isScheduled) {\n isScheduled = true;\n scheduler(reactionRunner);\n }\n }, opts.onError, opts.requiresObservable);\n function reactionRunner() {\n isScheduled = false;\n if (r.isDisposed_) {\n return;\n }\n var changed = false;\n r.track(function () {\n var nextValue = allowStateChanges(false, function () {\n return expression(r);\n });\n changed = firstTime || !equals(value, nextValue);\n oldValue = value;\n value = nextValue;\n });\n if (firstTime && opts.fireImmediately) {\n effectAction(value, oldValue, r);\n } else if (!firstTime && changed) {\n effectAction(value, oldValue, r);\n }\n firstTime = false;\n }\n if (!((_opts4 = opts) != null && (_opts4$signal = _opts4.signal) != null && _opts4$signal.aborted)) {\n r.schedule_();\n }\n return r.getDisposer_((_opts5 = opts) == null ? void 0 : _opts5.signal);\n}\nfunction wrapErrorHandler(errorHandler, baseFn) {\n return function () {\n try {\n return baseFn.apply(this, arguments);\n } catch (e) {\n errorHandler.call(this, e);\n }\n };\n}\n\nvar ON_BECOME_OBSERVED = \"onBO\";\nvar ON_BECOME_UNOBSERVED = \"onBUO\";\nfunction onBecomeObserved(thing, arg2, arg3) {\n return interceptHook(ON_BECOME_OBSERVED, thing, arg2, arg3);\n}\nfunction onBecomeUnobserved(thing, arg2, arg3) {\n return interceptHook(ON_BECOME_UNOBSERVED, thing, arg2, arg3);\n}\nfunction interceptHook(hook, thing, arg2, arg3) {\n var atom = typeof arg3 === \"function\" ? getAtom(thing, arg2) : getAtom(thing);\n var cb = isFunction(arg3) ? arg3 : arg2;\n var listenersKey = hook + \"L\";\n if (atom[listenersKey]) {\n atom[listenersKey].add(cb);\n } else {\n atom[listenersKey] = new Set([cb]);\n }\n return function () {\n var hookListeners = atom[listenersKey];\n if (hookListeners) {\n hookListeners[\"delete\"](cb);\n if (hookListeners.size === 0) {\n delete atom[listenersKey];\n }\n }\n };\n}\n\nvar NEVER = \"never\";\nvar ALWAYS = \"always\";\nvar OBSERVED = \"observed\";\n// const IF_AVAILABLE = \"ifavailable\"\nfunction configure(options) {\n if (options.isolateGlobalState === true) {\n isolateGlobalState();\n }\n var useProxies = options.useProxies,\n enforceActions = options.enforceActions;\n if (useProxies !== undefined) {\n globalState.useProxies = useProxies === ALWAYS ? true : useProxies === NEVER ? false : typeof Proxy !== \"undefined\";\n }\n if (useProxies === \"ifavailable\") {\n globalState.verifyProxies = true;\n }\n if (enforceActions !== undefined) {\n var ea = enforceActions === ALWAYS ? ALWAYS : enforceActions === OBSERVED;\n globalState.enforceActions = ea;\n globalState.allowStateChanges = ea === true || ea === ALWAYS ? false : true;\n }\n [\"computedRequiresReaction\", \"reactionRequiresObservable\", \"observableRequiresReaction\", \"disableErrorBoundaries\", \"safeDescriptors\"].forEach(function (key) {\n if (key in options) {\n globalState[key] = !!options[key];\n }\n });\n globalState.allowStateReads = !globalState.observableRequiresReaction;\n if (process.env.NODE_ENV !== \"production\" && globalState.disableErrorBoundaries === true) {\n console.warn(\"WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled.\");\n }\n if (options.reactionScheduler) {\n setReactionScheduler(options.reactionScheduler);\n }\n}\n\nfunction extendObservable(target, properties, annotations, options) {\n if (process.env.NODE_ENV !== \"production\") {\n if (arguments.length > 4) {\n die(\"'extendObservable' expected 2-4 arguments\");\n }\n if (typeof target !== \"object\") {\n die(\"'extendObservable' expects an object as first argument\");\n }\n if (isObservableMap(target)) {\n die(\"'extendObservable' should not be used on maps, use map.merge instead\");\n }\n if (!isPlainObject(properties)) {\n die(\"'extendObservable' only accepts plain objects as second argument\");\n }\n if (isObservable(properties) || isObservable(annotations)) {\n die(\"Extending an object with another observable (object) is not supported\");\n }\n }\n // Pull descriptors first, so we don't have to deal with props added by administration ($mobx)\n var descriptors = getOwnPropertyDescriptors(properties);\n initObservable(function () {\n var adm = asObservableObject(target, options)[$mobx];\n ownKeys(descriptors).forEach(function (key) {\n adm.extend_(key, descriptors[key],\n // must pass \"undefined\" for { key: undefined }\n !annotations ? true : key in annotations ? annotations[key] : true);\n });\n });\n return target;\n}\n\nfunction getDependencyTree(thing, property) {\n return nodeToDependencyTree(getAtom(thing, property));\n}\nfunction nodeToDependencyTree(node) {\n var result = {\n name: node.name_\n };\n if (node.observing_ && node.observing_.length > 0) {\n result.dependencies = unique(node.observing_).map(nodeToDependencyTree);\n }\n return result;\n}\nfunction getObserverTree(thing, property) {\n return nodeToObserverTree(getAtom(thing, property));\n}\nfunction nodeToObserverTree(node) {\n var result = {\n name: node.name_\n };\n if (hasObservers(node)) {\n result.observers = Array.from(getObservers(node)).map(nodeToObserverTree);\n }\n return result;\n}\nfunction unique(list) {\n return Array.from(new Set(list));\n}\n\nvar generatorId = 0;\nfunction FlowCancellationError() {\n this.message = \"FLOW_CANCELLED\";\n}\nFlowCancellationError.prototype = /*#__PURE__*/Object.create(Error.prototype);\nfunction isFlowCancellationError(error) {\n return error instanceof FlowCancellationError;\n}\nvar flowAnnotation = /*#__PURE__*/createFlowAnnotation(\"flow\");\nvar flowBoundAnnotation = /*#__PURE__*/createFlowAnnotation(\"flow.bound\", {\n bound: true\n});\nvar flow = /*#__PURE__*/Object.assign(function flow(arg1, arg2) {\n // @flow (2022.3 Decorators)\n if (is20223Decorator(arg2)) {\n return flowAnnotation.decorate_20223_(arg1, arg2);\n }\n // @flow\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, flowAnnotation);\n }\n // flow(fn)\n if (process.env.NODE_ENV !== \"production\" && arguments.length !== 1) {\n die(\"Flow expects single argument with generator function\");\n }\n var generator = arg1;\n var name = generator.name || \"\";\n // Implementation based on https://github.com/tj/co/blob/master/index.js\n var res = function res() {\n var ctx = this;\n var args = arguments;\n var runId = ++generatorId;\n var gen = action(name + \" - runid: \" + runId + \" - init\", generator).apply(ctx, args);\n var rejector;\n var pendingPromise = undefined;\n var promise = new Promise(function (resolve, reject) {\n var stepId = 0;\n rejector = reject;\n function onFulfilled(res) {\n pendingPromise = undefined;\n var ret;\n try {\n ret = action(name + \" - runid: \" + runId + \" - yield \" + stepId++, gen.next).call(gen, res);\n } catch (e) {\n return reject(e);\n }\n next(ret);\n }\n function onRejected(err) {\n pendingPromise = undefined;\n var ret;\n try {\n ret = action(name + \" - runid: \" + runId + \" - yield \" + stepId++, gen[\"throw\"]).call(gen, err);\n } catch (e) {\n return reject(e);\n }\n next(ret);\n }\n function next(ret) {\n if (isFunction(ret == null ? void 0 : ret.then)) {\n // an async iterator\n ret.then(next, reject);\n return;\n }\n if (ret.done) {\n return resolve(ret.value);\n }\n pendingPromise = Promise.resolve(ret.value);\n return pendingPromise.then(onFulfilled, onRejected);\n }\n onFulfilled(undefined); // kick off the process\n });\n\n promise.cancel = action(name + \" - runid: \" + runId + \" - cancel\", function () {\n try {\n if (pendingPromise) {\n cancelPromise(pendingPromise);\n }\n // Finally block can return (or yield) stuff..\n var _res = gen[\"return\"](undefined);\n // eat anything that promise would do, it's cancelled!\n var yieldedPromise = Promise.resolve(_res.value);\n yieldedPromise.then(noop, noop);\n cancelPromise(yieldedPromise); // maybe it can be cancelled :)\n // reject our original promise\n rejector(new FlowCancellationError());\n } catch (e) {\n rejector(e); // there could be a throwing finally block\n }\n });\n\n return promise;\n };\n res.isMobXFlow = true;\n return res;\n}, flowAnnotation);\nflow.bound = /*#__PURE__*/createDecoratorAnnotation(flowBoundAnnotation);\nfunction cancelPromise(promise) {\n if (isFunction(promise.cancel)) {\n promise.cancel();\n }\n}\nfunction flowResult(result) {\n return result; // just tricking TypeScript :)\n}\n\nfunction isFlow(fn) {\n return (fn == null ? void 0 : fn.isMobXFlow) === true;\n}\n\nfunction interceptReads(thing, propOrHandler, handler) {\n var target;\n if (isObservableMap(thing) || isObservableArray(thing) || isObservableValue(thing)) {\n target = getAdministration(thing);\n } else if (isObservableObject(thing)) {\n if (process.env.NODE_ENV !== \"production\" && !isStringish(propOrHandler)) {\n return die(\"InterceptReads can only be used with a specific property, not with an object in general\");\n }\n target = getAdministration(thing, propOrHandler);\n } else if (process.env.NODE_ENV !== \"production\") {\n return die(\"Expected observable map, object or array as first array\");\n }\n if (process.env.NODE_ENV !== \"production\" && target.dehancer !== undefined) {\n return die(\"An intercept reader was already established\");\n }\n target.dehancer = typeof propOrHandler === \"function\" ? propOrHandler : handler;\n return function () {\n target.dehancer = undefined;\n };\n}\n\nfunction intercept(thing, propOrHandler, handler) {\n if (isFunction(handler)) {\n return interceptProperty(thing, propOrHandler, handler);\n } else {\n return interceptInterceptable(thing, propOrHandler);\n }\n}\nfunction interceptInterceptable(thing, handler) {\n return getAdministration(thing).intercept_(handler);\n}\nfunction interceptProperty(thing, property, handler) {\n return getAdministration(thing, property).intercept_(handler);\n}\n\nfunction _isComputed(value, property) {\n if (property === undefined) {\n return isComputedValue(value);\n }\n if (isObservableObject(value) === false) {\n return false;\n }\n if (!value[$mobx].values_.has(property)) {\n return false;\n }\n var atom = getAtom(value, property);\n return isComputedValue(atom);\n}\nfunction isComputed(value) {\n if (process.env.NODE_ENV !== \"production\" && arguments.length > 1) {\n return die(\"isComputed expects only 1 argument. Use isComputedProp to inspect the observability of a property\");\n }\n return _isComputed(value);\n}\nfunction isComputedProp(value, propName) {\n if (process.env.NODE_ENV !== \"production\" && !isStringish(propName)) {\n return die(\"isComputed expected a property name as second argument\");\n }\n return _isComputed(value, propName);\n}\n\nfunction _isObservable(value, property) {\n if (!value) {\n return false;\n }\n if (property !== undefined) {\n if (process.env.NODE_ENV !== \"production\" && (isObservableMap(value) || isObservableArray(value))) {\n return die(\"isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead.\");\n }\n if (isObservableObject(value)) {\n return value[$mobx].values_.has(property);\n }\n return false;\n }\n // For first check, see #701\n return isObservableObject(value) || !!value[$mobx] || isAtom(value) || isReaction(value) || isComputedValue(value);\n}\nfunction isObservable(value) {\n if (process.env.NODE_ENV !== \"production\" && arguments.length !== 1) {\n die(\"isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property\");\n }\n return _isObservable(value);\n}\nfunction isObservableProp(value, propName) {\n if (process.env.NODE_ENV !== \"production\" && !isStringish(propName)) {\n return die(\"expected a property name as second argument\");\n }\n return _isObservable(value, propName);\n}\n\nfunction keys(obj) {\n if (isObservableObject(obj)) {\n return obj[$mobx].keys_();\n }\n if (isObservableMap(obj) || isObservableSet(obj)) {\n return Array.from(obj.keys());\n }\n if (isObservableArray(obj)) {\n return obj.map(function (_, index) {\n return index;\n });\n }\n die(5);\n}\nfunction values(obj) {\n if (isObservableObject(obj)) {\n return keys(obj).map(function (key) {\n return obj[key];\n });\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(function (key) {\n return obj.get(key);\n });\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.values());\n }\n if (isObservableArray(obj)) {\n return obj.slice();\n }\n die(6);\n}\nfunction entries(obj) {\n if (isObservableObject(obj)) {\n return keys(obj).map(function (key) {\n return [key, obj[key]];\n });\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(function (key) {\n return [key, obj.get(key)];\n });\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.entries());\n }\n if (isObservableArray(obj)) {\n return obj.map(function (key, index) {\n return [index, key];\n });\n }\n die(7);\n}\nfunction set(obj, key, value) {\n if (arguments.length === 2 && !isObservableSet(obj)) {\n startBatch();\n var _values = key;\n try {\n for (var _key in _values) {\n set(obj, _key, _values[_key]);\n }\n } finally {\n endBatch();\n }\n return;\n }\n if (isObservableObject(obj)) {\n obj[$mobx].set_(key, value);\n } else if (isObservableMap(obj)) {\n obj.set(key, value);\n } else if (isObservableSet(obj)) {\n obj.add(key);\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10);\n }\n if (key < 0) {\n die(\"Invalid index: '\" + key + \"'\");\n }\n startBatch();\n if (key >= obj.length) {\n obj.length = key + 1;\n }\n obj[key] = value;\n endBatch();\n } else {\n die(8);\n }\n}\nfunction remove(obj, key) {\n if (isObservableObject(obj)) {\n obj[$mobx].delete_(key);\n } else if (isObservableMap(obj)) {\n obj[\"delete\"](key);\n } else if (isObservableSet(obj)) {\n obj[\"delete\"](key);\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10);\n }\n obj.splice(key, 1);\n } else {\n die(9);\n }\n}\nfunction has(obj, key) {\n if (isObservableObject(obj)) {\n return obj[$mobx].has_(key);\n } else if (isObservableMap(obj)) {\n return obj.has(key);\n } else if (isObservableSet(obj)) {\n return obj.has(key);\n } else if (isObservableArray(obj)) {\n return key >= 0 && key < obj.length;\n }\n die(10);\n}\nfunction get(obj, key) {\n if (!has(obj, key)) {\n return undefined;\n }\n if (isObservableObject(obj)) {\n return obj[$mobx].get_(key);\n } else if (isObservableMap(obj)) {\n return obj.get(key);\n } else if (isObservableArray(obj)) {\n return obj[key];\n }\n die(11);\n}\nfunction apiDefineProperty(obj, key, descriptor) {\n if (isObservableObject(obj)) {\n return obj[$mobx].defineProperty_(key, descriptor);\n }\n die(39);\n}\nfunction apiOwnKeys(obj) {\n if (isObservableObject(obj)) {\n return obj[$mobx].ownKeys_();\n }\n die(38);\n}\n\nfunction observe(thing, propOrCb, cbOrFire, fireImmediately) {\n if (isFunction(cbOrFire)) {\n return observeObservableProperty(thing, propOrCb, cbOrFire, fireImmediately);\n } else {\n return observeObservable(thing, propOrCb, cbOrFire);\n }\n}\nfunction observeObservable(thing, listener, fireImmediately) {\n return getAdministration(thing).observe_(listener, fireImmediately);\n}\nfunction observeObservableProperty(thing, property, listener, fireImmediately) {\n return getAdministration(thing, property).observe_(listener, fireImmediately);\n}\n\nfunction cache(map, key, value) {\n map.set(key, value);\n return value;\n}\nfunction toJSHelper(source, __alreadySeen) {\n if (source == null || typeof source !== \"object\" || source instanceof Date || !isObservable(source)) {\n return source;\n }\n if (isObservableValue(source) || isComputedValue(source)) {\n return toJSHelper(source.get(), __alreadySeen);\n }\n if (__alreadySeen.has(source)) {\n return __alreadySeen.get(source);\n }\n if (isObservableArray(source)) {\n var res = cache(__alreadySeen, source, new Array(source.length));\n source.forEach(function (value, idx) {\n res[idx] = toJSHelper(value, __alreadySeen);\n });\n return res;\n }\n if (isObservableSet(source)) {\n var _res = cache(__alreadySeen, source, new Set());\n source.forEach(function (value) {\n _res.add(toJSHelper(value, __alreadySeen));\n });\n return _res;\n }\n if (isObservableMap(source)) {\n var _res2 = cache(__alreadySeen, source, new Map());\n source.forEach(function (value, key) {\n _res2.set(key, toJSHelper(value, __alreadySeen));\n });\n return _res2;\n } else {\n // must be observable object\n var _res3 = cache(__alreadySeen, source, {});\n apiOwnKeys(source).forEach(function (key) {\n if (objectPrototype.propertyIsEnumerable.call(source, key)) {\n _res3[key] = toJSHelper(source[key], __alreadySeen);\n }\n });\n return _res3;\n }\n}\n/**\n * Recursively converts an observable to it's non-observable native counterpart.\n * It does NOT recurse into non-observables, these are left as they are, even if they contain observables.\n * Computed and other non-enumerable properties are completely ignored.\n * Complex scenarios require custom solution, eg implementing `toJSON` or using `serializr` lib.\n */\nfunction toJS(source, options) {\n if (process.env.NODE_ENV !== \"production\" && options) {\n die(\"toJS no longer supports options\");\n }\n return toJSHelper(source, new Map());\n}\n\nfunction trace() {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n var enterBreakPoint = false;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[args.length - 1] === \"boolean\") {\n enterBreakPoint = args.pop();\n }\n var derivation = getAtomFromArgs(args);\n if (!derivation) {\n return die(\"'trace(break?)' can only be used inside a tracked computed value or a Reaction. Consider passing in the computed value or reaction explicitly\");\n }\n if (derivation.isTracing_ === TraceMode.NONE) {\n console.log(\"[mobx.trace] '\" + derivation.name_ + \"' tracing enabled\");\n }\n derivation.isTracing_ = enterBreakPoint ? TraceMode.BREAK : TraceMode.LOG;\n}\nfunction getAtomFromArgs(args) {\n switch (args.length) {\n case 0:\n return globalState.trackingDerivation;\n case 1:\n return getAtom(args[0]);\n case 2:\n return getAtom(args[0], args[1]);\n }\n}\n\n/**\n * During a transaction no views are updated until the end of the transaction.\n * The transaction will be run synchronously nonetheless.\n *\n * @param action a function that updates some reactive state\n * @returns any value that was returned by the 'action' parameter.\n */\nfunction transaction(action, thisArg) {\n if (thisArg === void 0) {\n thisArg = undefined;\n }\n startBatch();\n try {\n return action.apply(thisArg);\n } finally {\n endBatch();\n }\n}\n\nfunction when(predicate, arg1, arg2) {\n if (arguments.length === 1 || arg1 && typeof arg1 === \"object\") {\n return whenPromise(predicate, arg1);\n }\n return _when(predicate, arg1, arg2 || {});\n}\nfunction _when(predicate, effect, opts) {\n var timeoutHandle;\n if (typeof opts.timeout === \"number\") {\n var error = new Error(\"WHEN_TIMEOUT\");\n timeoutHandle = setTimeout(function () {\n if (!disposer[$mobx].isDisposed_) {\n disposer();\n if (opts.onError) {\n opts.onError(error);\n } else {\n throw error;\n }\n }\n }, opts.timeout);\n }\n opts.name = process.env.NODE_ENV !== \"production\" ? opts.name || \"When@\" + getNextId() : \"When\";\n var effectAction = createAction(process.env.NODE_ENV !== \"production\" ? opts.name + \"-effect\" : \"When-effect\", effect);\n // eslint-disable-next-line\n var disposer = autorun(function (r) {\n // predicate should not change state\n var cond = allowStateChanges(false, predicate);\n if (cond) {\n r.dispose();\n if (timeoutHandle) {\n clearTimeout(timeoutHandle);\n }\n effectAction();\n }\n }, opts);\n return disposer;\n}\nfunction whenPromise(predicate, opts) {\n var _opts$signal;\n if (process.env.NODE_ENV !== \"production\" && opts && opts.onError) {\n return die(\"the options 'onError' and 'promise' cannot be combined\");\n }\n if (opts != null && (_opts$signal = opts.signal) != null && _opts$signal.aborted) {\n return Object.assign(Promise.reject(new Error(\"WHEN_ABORTED\")), {\n cancel: function cancel() {\n return null;\n }\n });\n }\n var cancel;\n var abort;\n var res = new Promise(function (resolve, reject) {\n var _opts$signal2;\n var disposer = _when(predicate, resolve, _extends({}, opts, {\n onError: reject\n }));\n cancel = function cancel() {\n disposer();\n reject(new Error(\"WHEN_CANCELLED\"));\n };\n abort = function abort() {\n disposer();\n reject(new Error(\"WHEN_ABORTED\"));\n };\n opts == null ? void 0 : (_opts$signal2 = opts.signal) == null ? void 0 : _opts$signal2.addEventListener == null ? void 0 : _opts$signal2.addEventListener(\"abort\", abort);\n })[\"finally\"](function () {\n var _opts$signal3;\n return opts == null ? void 0 : (_opts$signal3 = opts.signal) == null ? void 0 : _opts$signal3.removeEventListener == null ? void 0 : _opts$signal3.removeEventListener(\"abort\", abort);\n });\n res.cancel = cancel;\n return res;\n}\n\nfunction getAdm(target) {\n return target[$mobx];\n}\n// Optimization: we don't need the intermediate objects and could have a completely custom administration for DynamicObjects,\n// and skip either the internal values map, or the base object with its property descriptors!\nvar objectProxyTraps = {\n has: function has(target, name) {\n if (process.env.NODE_ENV !== \"production\" && globalState.trackingDerivation) {\n warnAboutProxyRequirement(\"detect new properties using the 'in' operator. Use 'has' from 'mobx' instead.\");\n }\n return getAdm(target).has_(name);\n },\n get: function get(target, name) {\n return getAdm(target).get_(name);\n },\n set: function set(target, name, value) {\n var _getAdm$set_;\n if (!isStringish(name)) {\n return false;\n }\n if (process.env.NODE_ENV !== \"production\" && !getAdm(target).values_.has(name)) {\n warnAboutProxyRequirement(\"add a new observable property through direct assignment. Use 'set' from 'mobx' instead.\");\n }\n // null (intercepted) -> true (success)\n return (_getAdm$set_ = getAdm(target).set_(name, value, true)) != null ? _getAdm$set_ : true;\n },\n deleteProperty: function deleteProperty(target, name) {\n var _getAdm$delete_;\n if (process.env.NODE_ENV !== \"production\") {\n warnAboutProxyRequirement(\"delete properties from an observable object. Use 'remove' from 'mobx' instead.\");\n }\n if (!isStringish(name)) {\n return false;\n }\n // null (intercepted) -> true (success)\n return (_getAdm$delete_ = getAdm(target).delete_(name, true)) != null ? _getAdm$delete_ : true;\n },\n defineProperty: function defineProperty(target, name, descriptor) {\n var _getAdm$definePropert;\n if (process.env.NODE_ENV !== \"production\") {\n warnAboutProxyRequirement(\"define property on an observable object. Use 'defineProperty' from 'mobx' instead.\");\n }\n // null (intercepted) -> true (success)\n return (_getAdm$definePropert = getAdm(target).defineProperty_(name, descriptor)) != null ? _getAdm$definePropert : true;\n },\n ownKeys: function ownKeys(target) {\n if (process.env.NODE_ENV !== \"production\" && globalState.trackingDerivation) {\n warnAboutProxyRequirement(\"iterate keys to detect added / removed properties. Use 'keys' from 'mobx' instead.\");\n }\n return getAdm(target).ownKeys_();\n },\n preventExtensions: function preventExtensions(target) {\n die(13);\n }\n};\nfunction asDynamicObservableObject(target, options) {\n var _target$$mobx, _target$$mobx$proxy_;\n assertProxies();\n target = asObservableObject(target, options);\n return (_target$$mobx$proxy_ = (_target$$mobx = target[$mobx]).proxy_) != null ? _target$$mobx$proxy_ : _target$$mobx.proxy_ = new Proxy(target, objectProxyTraps);\n}\n\nfunction hasInterceptors(interceptable) {\n return interceptable.interceptors_ !== undefined && interceptable.interceptors_.length > 0;\n}\nfunction registerInterceptor(interceptable, handler) {\n var interceptors = interceptable.interceptors_ || (interceptable.interceptors_ = []);\n interceptors.push(handler);\n return once(function () {\n var idx = interceptors.indexOf(handler);\n if (idx !== -1) {\n interceptors.splice(idx, 1);\n }\n });\n}\nfunction interceptChange(interceptable, change) {\n var prevU = untrackedStart();\n try {\n // Interceptor can modify the array, copy it to avoid concurrent modification, see #1950\n var interceptors = [].concat(interceptable.interceptors_ || []);\n for (var i = 0, l = interceptors.length; i < l; i++) {\n change = interceptors[i](change);\n if (change && !change.type) {\n die(14);\n }\n if (!change) {\n break;\n }\n }\n return change;\n } finally {\n untrackedEnd(prevU);\n }\n}\n\nfunction hasListeners(listenable) {\n return listenable.changeListeners_ !== undefined && listenable.changeListeners_.length > 0;\n}\nfunction registerListener(listenable, handler) {\n var listeners = listenable.changeListeners_ || (listenable.changeListeners_ = []);\n listeners.push(handler);\n return once(function () {\n var idx = listeners.indexOf(handler);\n if (idx !== -1) {\n listeners.splice(idx, 1);\n }\n });\n}\nfunction notifyListeners(listenable, change) {\n var prevU = untrackedStart();\n var listeners = listenable.changeListeners_;\n if (!listeners) {\n return;\n }\n listeners = listeners.slice();\n for (var i = 0, l = listeners.length; i < l; i++) {\n listeners[i](change);\n }\n untrackedEnd(prevU);\n}\n\nfunction makeObservable(target, annotations, options) {\n initObservable(function () {\n var _annotations;\n var adm = asObservableObject(target, options)[$mobx];\n if (process.env.NODE_ENV !== \"production\" && annotations && target[storedAnnotationsSymbol]) {\n die(\"makeObservable second arg must be nullish when using decorators. Mixing @decorator syntax with annotations is not supported.\");\n }\n // Default to decorators\n (_annotations = annotations) != null ? _annotations : annotations = collectStoredAnnotations(target);\n // Annotate\n ownKeys(annotations).forEach(function (key) {\n return adm.make_(key, annotations[key]);\n });\n });\n return target;\n}\n// proto[keysSymbol] = new Set()\nvar keysSymbol = /*#__PURE__*/Symbol(\"mobx-keys\");\nfunction makeAutoObservable(target, overrides, options) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!isPlainObject(target) && !isPlainObject(Object.getPrototypeOf(target))) {\n die(\"'makeAutoObservable' can only be used for classes that don't have a superclass\");\n }\n if (isObservableObject(target)) {\n die(\"makeAutoObservable can only be used on objects not already made observable\");\n }\n }\n // Optimization: avoid visiting protos\n // Assumes that annotation.make_/.extend_ works the same for plain objects\n if (isPlainObject(target)) {\n return extendObservable(target, target, overrides, options);\n }\n initObservable(function () {\n var adm = asObservableObject(target, options)[$mobx];\n // Optimization: cache keys on proto\n // Assumes makeAutoObservable can be called only once per object and can't be used in subclass\n if (!target[keysSymbol]) {\n var proto = Object.getPrototypeOf(target);\n var keys = new Set([].concat(ownKeys(target), ownKeys(proto)));\n keys[\"delete\"](\"constructor\");\n keys[\"delete\"]($mobx);\n addHiddenProp(proto, keysSymbol, keys);\n }\n target[keysSymbol].forEach(function (key) {\n return adm.make_(key,\n // must pass \"undefined\" for { key: undefined }\n !overrides ? true : key in overrides ? overrides[key] : true);\n });\n });\n return target;\n}\n\nvar SPLICE = \"splice\";\nvar UPDATE = \"update\";\nvar MAX_SPLICE_SIZE = 10000; // See e.g. https://github.com/mobxjs/mobx/issues/859\nvar arrayTraps = {\n get: function get(target, name) {\n var adm = target[$mobx];\n if (name === $mobx) {\n return adm;\n }\n if (name === \"length\") {\n return adm.getArrayLength_();\n }\n if (typeof name === \"string\" && !isNaN(name)) {\n return adm.get_(parseInt(name));\n }\n if (hasProp(arrayExtensions, name)) {\n return arrayExtensions[name];\n }\n return target[name];\n },\n set: function set(target, name, value) {\n var adm = target[$mobx];\n if (name === \"length\") {\n adm.setArrayLength_(value);\n }\n if (typeof name === \"symbol\" || isNaN(name)) {\n target[name] = value;\n } else {\n // numeric string\n adm.set_(parseInt(name), value);\n }\n return true;\n },\n preventExtensions: function preventExtensions() {\n die(15);\n }\n};\nvar ObservableArrayAdministration = /*#__PURE__*/function () {\n // this is the prop that gets proxied, so can't replace it!\n\n function ObservableArrayAdministration(name, enhancer, owned_, legacyMode_) {\n if (name === void 0) {\n name = process.env.NODE_ENV !== \"production\" ? \"ObservableArray@\" + getNextId() : \"ObservableArray\";\n }\n this.owned_ = void 0;\n this.legacyMode_ = void 0;\n this.atom_ = void 0;\n this.values_ = [];\n this.interceptors_ = void 0;\n this.changeListeners_ = void 0;\n this.enhancer_ = void 0;\n this.dehancer = void 0;\n this.proxy_ = void 0;\n this.lastKnownLength_ = 0;\n this.owned_ = owned_;\n this.legacyMode_ = legacyMode_;\n this.atom_ = new Atom(name);\n this.enhancer_ = function (newV, oldV) {\n return enhancer(newV, oldV, process.env.NODE_ENV !== \"production\" ? name + \"[..]\" : \"ObservableArray[..]\");\n };\n }\n var _proto = ObservableArrayAdministration.prototype;\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.dehanceValues_ = function dehanceValues_(values) {\n if (this.dehancer !== undefined && values.length > 0) {\n return values.map(this.dehancer);\n }\n return values;\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (fireImmediately === void 0) {\n fireImmediately = false;\n }\n if (fireImmediately) {\n listener({\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: \"splice\",\n index: 0,\n added: this.values_.slice(),\n addedCount: this.values_.length,\n removed: [],\n removedCount: 0\n });\n }\n return registerListener(this, listener);\n };\n _proto.getArrayLength_ = function getArrayLength_() {\n this.atom_.reportObserved();\n return this.values_.length;\n };\n _proto.setArrayLength_ = function setArrayLength_(newLength) {\n if (typeof newLength !== \"number\" || isNaN(newLength) || newLength < 0) {\n die(\"Out of range: \" + newLength);\n }\n var currentLength = this.values_.length;\n if (newLength === currentLength) {\n return;\n } else if (newLength > currentLength) {\n var newItems = new Array(newLength - currentLength);\n for (var i = 0; i < newLength - currentLength; i++) {\n newItems[i] = undefined;\n } // No Array.fill everywhere...\n this.spliceWithArray_(currentLength, 0, newItems);\n } else {\n this.spliceWithArray_(newLength, currentLength - newLength);\n }\n };\n _proto.updateArrayLength_ = function updateArrayLength_(oldLength, delta) {\n if (oldLength !== this.lastKnownLength_) {\n die(16);\n }\n this.lastKnownLength_ += delta;\n if (this.legacyMode_ && delta > 0) {\n reserveArrayBuffer(oldLength + delta + 1);\n }\n };\n _proto.spliceWithArray_ = function spliceWithArray_(index, deleteCount, newItems) {\n var _this = this;\n checkIfStateModificationsAreAllowed(this.atom_);\n var length = this.values_.length;\n if (index === undefined) {\n index = 0;\n } else if (index > length) {\n index = length;\n } else if (index < 0) {\n index = Math.max(0, length + index);\n }\n if (arguments.length === 1) {\n deleteCount = length - index;\n } else if (deleteCount === undefined || deleteCount === null) {\n deleteCount = 0;\n } else {\n deleteCount = Math.max(0, Math.min(deleteCount, length - index));\n }\n if (newItems === undefined) {\n newItems = EMPTY_ARRAY;\n }\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_,\n type: SPLICE,\n index: index,\n removedCount: deleteCount,\n added: newItems\n });\n if (!change) {\n return EMPTY_ARRAY;\n }\n deleteCount = change.removedCount;\n newItems = change.added;\n }\n newItems = newItems.length === 0 ? newItems : newItems.map(function (v) {\n return _this.enhancer_(v, undefined);\n });\n if (this.legacyMode_ || process.env.NODE_ENV !== \"production\") {\n var lengthDelta = newItems.length - deleteCount;\n this.updateArrayLength_(length, lengthDelta); // checks if internal array wasn't modified\n }\n\n var res = this.spliceItemsIntoValues_(index, deleteCount, newItems);\n if (deleteCount !== 0 || newItems.length !== 0) {\n this.notifyArraySplice_(index, newItems, res);\n }\n return this.dehanceValues_(res);\n };\n _proto.spliceItemsIntoValues_ = function spliceItemsIntoValues_(index, deleteCount, newItems) {\n if (newItems.length < MAX_SPLICE_SIZE) {\n var _this$values_;\n return (_this$values_ = this.values_).splice.apply(_this$values_, [index, deleteCount].concat(newItems));\n } else {\n // The items removed by the splice\n var res = this.values_.slice(index, index + deleteCount);\n // The items that that should remain at the end of the array\n var oldItems = this.values_.slice(index + deleteCount);\n // New length is the previous length + addition count - deletion count\n this.values_.length += newItems.length - deleteCount;\n for (var i = 0; i < newItems.length; i++) {\n this.values_[index + i] = newItems[i];\n }\n for (var _i = 0; _i < oldItems.length; _i++) {\n this.values_[index + newItems.length + _i] = oldItems[_i];\n }\n return res;\n }\n };\n _proto.notifyArrayChildUpdate_ = function notifyArrayChildUpdate_(index, newValue, oldValue) {\n var notifySpy = !this.owned_ && isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"array\",\n object: this.proxy_,\n type: UPDATE,\n debugObjectName: this.atom_.name_,\n index: index,\n newValue: newValue,\n oldValue: oldValue\n } : null;\n // The reason why this is on right hand side here (and not above), is this way the uglifier will drop it, but it won't\n // cause any runtime overhead in development mode without NODE_ENV set, unless spying is enabled\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(change);\n }\n this.atom_.reportChanged();\n if (notify) {\n notifyListeners(this, change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n };\n _proto.notifyArraySplice_ = function notifyArraySplice_(index, added, removed) {\n var notifySpy = !this.owned_ && isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: SPLICE,\n index: index,\n removed: removed,\n added: added,\n removedCount: removed.length,\n addedCount: added.length\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(change);\n }\n this.atom_.reportChanged();\n // conform: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/observe\n if (notify) {\n notifyListeners(this, change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n };\n _proto.get_ = function get_(index) {\n if (this.legacyMode_ && index >= this.values_.length) {\n console.warn(process.env.NODE_ENV !== \"production\" ? \"[mobx.array] Attempt to read an array index (\" + index + \") that is out of bounds (\" + this.values_.length + \"). Please check length first. Out of bound indices will not be tracked by MobX\" : \"[mobx] Out of bounds read: \" + index);\n return undefined;\n }\n this.atom_.reportObserved();\n return this.dehanceValue_(this.values_[index]);\n };\n _proto.set_ = function set_(index, newValue) {\n var values = this.values_;\n if (this.legacyMode_ && index > values.length) {\n // out of bounds\n die(17, index, values.length);\n }\n if (index < values.length) {\n // update at index in range\n checkIfStateModificationsAreAllowed(this.atom_);\n var oldValue = values[index];\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: UPDATE,\n object: this.proxy_,\n index: index,\n newValue: newValue\n });\n if (!change) {\n return;\n }\n newValue = change.newValue;\n }\n newValue = this.enhancer_(newValue, oldValue);\n var changed = newValue !== oldValue;\n if (changed) {\n values[index] = newValue;\n this.notifyArrayChildUpdate_(index, newValue, oldValue);\n }\n } else {\n // For out of bound index, we don't create an actual sparse array,\n // but rather fill the holes with undefined (same as setArrayLength_).\n // This could be considered a bug.\n var newItems = new Array(index + 1 - values.length);\n for (var i = 0; i < newItems.length - 1; i++) {\n newItems[i] = undefined;\n } // No Array.fill everywhere...\n newItems[newItems.length - 1] = newValue;\n this.spliceWithArray_(values.length, 0, newItems);\n }\n };\n return ObservableArrayAdministration;\n}();\nfunction createObservableArray(initialValues, enhancer, name, owned) {\n if (name === void 0) {\n name = process.env.NODE_ENV !== \"production\" ? \"ObservableArray@\" + getNextId() : \"ObservableArray\";\n }\n if (owned === void 0) {\n owned = false;\n }\n assertProxies();\n return initObservable(function () {\n var adm = new ObservableArrayAdministration(name, enhancer, owned, false);\n addHiddenFinalProp(adm.values_, $mobx, adm);\n var proxy = new Proxy(adm.values_, arrayTraps);\n adm.proxy_ = proxy;\n if (initialValues && initialValues.length) {\n adm.spliceWithArray_(0, 0, initialValues);\n }\n return proxy;\n });\n}\n// eslint-disable-next-line\nvar arrayExtensions = {\n clear: function clear() {\n return this.splice(0);\n },\n replace: function replace(newItems) {\n var adm = this[$mobx];\n return adm.spliceWithArray_(0, adm.values_.length, newItems);\n },\n // Used by JSON.stringify\n toJSON: function toJSON() {\n return this.slice();\n },\n /*\n * functions that do alter the internal structure of the array, (based on lib.es6.d.ts)\n * since these functions alter the inner structure of the array, the have side effects.\n * Because the have side effects, they should not be used in computed function,\n * and for that reason the do not call dependencyState.notifyObserved\n */\n splice: function splice(index, deleteCount) {\n for (var _len = arguments.length, newItems = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n newItems[_key - 2] = arguments[_key];\n }\n var adm = this[$mobx];\n switch (arguments.length) {\n case 0:\n return [];\n case 1:\n return adm.spliceWithArray_(index);\n case 2:\n return adm.spliceWithArray_(index, deleteCount);\n }\n return adm.spliceWithArray_(index, deleteCount, newItems);\n },\n spliceWithArray: function spliceWithArray(index, deleteCount, newItems) {\n return this[$mobx].spliceWithArray_(index, deleteCount, newItems);\n },\n push: function push() {\n var adm = this[$mobx];\n for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n adm.spliceWithArray_(adm.values_.length, 0, items);\n return adm.values_.length;\n },\n pop: function pop() {\n return this.splice(Math.max(this[$mobx].values_.length - 1, 0), 1)[0];\n },\n shift: function shift() {\n return this.splice(0, 1)[0];\n },\n unshift: function unshift() {\n var adm = this[$mobx];\n for (var _len3 = arguments.length, items = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n items[_key3] = arguments[_key3];\n }\n adm.spliceWithArray_(0, 0, items);\n return adm.values_.length;\n },\n reverse: function reverse() {\n // reverse by default mutates in place before returning the result\n // which makes it both a 'derivation' and a 'mutation'.\n if (globalState.trackingDerivation) {\n die(37, \"reverse\");\n }\n this.replace(this.slice().reverse());\n return this;\n },\n sort: function sort() {\n // sort by default mutates in place before returning the result\n // which goes against all good practices. Let's not change the array in place!\n if (globalState.trackingDerivation) {\n die(37, \"sort\");\n }\n var copy = this.slice();\n copy.sort.apply(copy, arguments);\n this.replace(copy);\n return this;\n },\n remove: function remove(value) {\n var adm = this[$mobx];\n var idx = adm.dehanceValues_(adm.values_).indexOf(value);\n if (idx > -1) {\n this.splice(idx, 1);\n return true;\n }\n return false;\n }\n};\n/**\n * Wrap function from prototype\n * Without this, everything works as well, but this works\n * faster as everything works on unproxied values\n */\naddArrayExtension(\"at\", simpleFunc);\naddArrayExtension(\"concat\", simpleFunc);\naddArrayExtension(\"flat\", simpleFunc);\naddArrayExtension(\"includes\", simpleFunc);\naddArrayExtension(\"indexOf\", simpleFunc);\naddArrayExtension(\"join\", simpleFunc);\naddArrayExtension(\"lastIndexOf\", simpleFunc);\naddArrayExtension(\"slice\", simpleFunc);\naddArrayExtension(\"toString\", simpleFunc);\naddArrayExtension(\"toLocaleString\", simpleFunc);\naddArrayExtension(\"toSorted\", simpleFunc);\naddArrayExtension(\"toSpliced\", simpleFunc);\naddArrayExtension(\"with\", simpleFunc);\n// map\naddArrayExtension(\"every\", mapLikeFunc);\naddArrayExtension(\"filter\", mapLikeFunc);\naddArrayExtension(\"find\", mapLikeFunc);\naddArrayExtension(\"findIndex\", mapLikeFunc);\naddArrayExtension(\"findLast\", mapLikeFunc);\naddArrayExtension(\"findLastIndex\", mapLikeFunc);\naddArrayExtension(\"flatMap\", mapLikeFunc);\naddArrayExtension(\"forEach\", mapLikeFunc);\naddArrayExtension(\"map\", mapLikeFunc);\naddArrayExtension(\"some\", mapLikeFunc);\naddArrayExtension(\"toReversed\", mapLikeFunc);\n// reduce\naddArrayExtension(\"reduce\", reduceLikeFunc);\naddArrayExtension(\"reduceRight\", reduceLikeFunc);\nfunction addArrayExtension(funcName, funcFactory) {\n if (typeof Array.prototype[funcName] === \"function\") {\n arrayExtensions[funcName] = funcFactory(funcName);\n }\n}\n// Report and delegate to dehanced array\nfunction simpleFunc(funcName) {\n return function () {\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n return dehancedValues[funcName].apply(dehancedValues, arguments);\n };\n}\n// Make sure callbacks recieve correct array arg #2326\nfunction mapLikeFunc(funcName) {\n return function (callback, thisArg) {\n var _this2 = this;\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n return dehancedValues[funcName](function (element, index) {\n return callback.call(thisArg, element, index, _this2);\n });\n };\n}\n// Make sure callbacks recieve correct array arg #2326\nfunction reduceLikeFunc(funcName) {\n return function () {\n var _this3 = this;\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n // #2432 - reduce behavior depends on arguments.length\n var callback = arguments[0];\n arguments[0] = function (accumulator, currentValue, index) {\n return callback(accumulator, currentValue, index, _this3);\n };\n return dehancedValues[funcName].apply(dehancedValues, arguments);\n };\n}\nvar isObservableArrayAdministration = /*#__PURE__*/createInstanceofPredicate(\"ObservableArrayAdministration\", ObservableArrayAdministration);\nfunction isObservableArray(thing) {\n return isObject(thing) && isObservableArrayAdministration(thing[$mobx]);\n}\n\nvar _Symbol$iterator, _Symbol$toStringTag;\nvar ObservableMapMarker = {};\nvar ADD = \"add\";\nvar DELETE = \"delete\";\n// just extend Map? See also https://gist.github.com/nestharus/13b4d74f2ef4a2f4357dbd3fc23c1e54\n// But: https://github.com/mobxjs/mobx/issues/1556\n_Symbol$iterator = Symbol.iterator;\n_Symbol$toStringTag = Symbol.toStringTag;\nvar ObservableMap = /*#__PURE__*/function () {\n // hasMap, not hashMap >-).\n\n function ObservableMap(initialData, enhancer_, name_) {\n var _this = this;\n if (enhancer_ === void 0) {\n enhancer_ = deepEnhancer;\n }\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"ObservableMap@\" + getNextId() : \"ObservableMap\";\n }\n this.enhancer_ = void 0;\n this.name_ = void 0;\n this[$mobx] = ObservableMapMarker;\n this.data_ = void 0;\n this.hasMap_ = void 0;\n this.keysAtom_ = void 0;\n this.interceptors_ = void 0;\n this.changeListeners_ = void 0;\n this.dehancer = void 0;\n this.enhancer_ = enhancer_;\n this.name_ = name_;\n if (!isFunction(Map)) {\n die(18);\n }\n initObservable(function () {\n _this.keysAtom_ = createAtom(process.env.NODE_ENV !== \"production\" ? _this.name_ + \".keys()\" : \"ObservableMap.keys()\");\n _this.data_ = new Map();\n _this.hasMap_ = new Map();\n if (initialData) {\n _this.merge(initialData);\n }\n });\n }\n var _proto = ObservableMap.prototype;\n _proto.has_ = function has_(key) {\n return this.data_.has(key);\n };\n _proto.has = function has(key) {\n var _this2 = this;\n if (!globalState.trackingDerivation) {\n return this.has_(key);\n }\n var entry = this.hasMap_.get(key);\n if (!entry) {\n var newEntry = entry = new ObservableValue(this.has_(key), referenceEnhancer, process.env.NODE_ENV !== \"production\" ? this.name_ + \".\" + stringifyKey(key) + \"?\" : \"ObservableMap.key?\", false);\n this.hasMap_.set(key, newEntry);\n onBecomeUnobserved(newEntry, function () {\n return _this2.hasMap_[\"delete\"](key);\n });\n }\n return entry.get();\n };\n _proto.set = function set(key, value) {\n var hasKey = this.has_(key);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: hasKey ? UPDATE : ADD,\n object: this,\n newValue: value,\n name: key\n });\n if (!change) {\n return this;\n }\n value = change.newValue;\n }\n if (hasKey) {\n this.updateValue_(key, value);\n } else {\n this.addValue_(key, value);\n }\n return this;\n };\n _proto[\"delete\"] = function _delete(key) {\n var _this3 = this;\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: DELETE,\n object: this,\n name: key\n });\n if (!change) {\n return false;\n }\n }\n if (this.has_(key)) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var _change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: this.data_.get(key).value_,\n name: key\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(_change);\n } // TODO fix type\n transaction(function () {\n var _this3$hasMap_$get;\n _this3.keysAtom_.reportChanged();\n (_this3$hasMap_$get = _this3.hasMap_.get(key)) == null ? void 0 : _this3$hasMap_$get.setNewValue_(false);\n var observable = _this3.data_.get(key);\n observable.setNewValue_(undefined);\n _this3.data_[\"delete\"](key);\n });\n if (notify) {\n notifyListeners(this, _change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n return true;\n }\n return false;\n };\n _proto.updateValue_ = function updateValue_(key, newValue) {\n var observable = this.data_.get(key);\n newValue = observable.prepareNewValue_(newValue);\n if (newValue !== globalState.UNCHANGED) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n oldValue: observable.value_,\n name: key,\n newValue: newValue\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(change);\n } // TODO fix type\n observable.setNewValue_(newValue);\n if (notify) {\n notifyListeners(this, change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n };\n _proto.addValue_ = function addValue_(key, newValue) {\n var _this4 = this;\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n transaction(function () {\n var _this4$hasMap_$get;\n var observable = new ObservableValue(newValue, _this4.enhancer_, process.env.NODE_ENV !== \"production\" ? _this4.name_ + \".\" + stringifyKey(key) : \"ObservableMap.key\", false);\n _this4.data_.set(key, observable);\n newValue = observable.value_; // value might have been changed\n (_this4$hasMap_$get = _this4.hasMap_.get(key)) == null ? void 0 : _this4$hasMap_$get.setNewValue_(true);\n _this4.keysAtom_.reportChanged();\n });\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n name: key,\n newValue: newValue\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(change);\n } // TODO fix type\n if (notify) {\n notifyListeners(this, change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n };\n _proto.get = function get(key) {\n if (this.has(key)) {\n return this.dehanceValue_(this.data_.get(key).get());\n }\n return this.dehanceValue_(undefined);\n };\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.keys = function keys() {\n this.keysAtom_.reportObserved();\n return this.data_.keys();\n };\n _proto.values = function values() {\n var self = this;\n var keys = this.keys();\n return makeIterable({\n next: function next() {\n var _keys$next = keys.next(),\n done = _keys$next.done,\n value = _keys$next.value;\n return {\n done: done,\n value: done ? undefined : self.get(value)\n };\n }\n });\n };\n _proto.entries = function entries() {\n var self = this;\n var keys = this.keys();\n return makeIterable({\n next: function next() {\n var _keys$next2 = keys.next(),\n done = _keys$next2.done,\n value = _keys$next2.value;\n return {\n done: done,\n value: done ? undefined : [value, self.get(value)]\n };\n }\n });\n };\n _proto[_Symbol$iterator] = function () {\n return this.entries();\n };\n _proto.forEach = function forEach(callback, thisArg) {\n for (var _iterator = _createForOfIteratorHelperLoose(this), _step; !(_step = _iterator()).done;) {\n var _step$value = _step.value,\n key = _step$value[0],\n value = _step$value[1];\n callback.call(thisArg, value, key, this);\n }\n }\n /** Merge another object into this object, returns this. */;\n _proto.merge = function merge(other) {\n var _this5 = this;\n if (isObservableMap(other)) {\n other = new Map(other);\n }\n transaction(function () {\n if (isPlainObject(other)) {\n getPlainObjectKeys(other).forEach(function (key) {\n return _this5.set(key, other[key]);\n });\n } else if (Array.isArray(other)) {\n other.forEach(function (_ref) {\n var key = _ref[0],\n value = _ref[1];\n return _this5.set(key, value);\n });\n } else if (isES6Map(other)) {\n if (other.constructor !== Map) {\n die(19, other);\n }\n other.forEach(function (value, key) {\n return _this5.set(key, value);\n });\n } else if (other !== null && other !== undefined) {\n die(20, other);\n }\n });\n return this;\n };\n _proto.clear = function clear() {\n var _this6 = this;\n transaction(function () {\n untracked(function () {\n for (var _iterator2 = _createForOfIteratorHelperLoose(_this6.keys()), _step2; !(_step2 = _iterator2()).done;) {\n var key = _step2.value;\n _this6[\"delete\"](key);\n }\n });\n });\n };\n _proto.replace = function replace(values) {\n var _this7 = this;\n // Implementation requirements:\n // - respect ordering of replacement map\n // - allow interceptors to run and potentially prevent individual operations\n // - don't recreate observables that already exist in original map (so we don't destroy existing subscriptions)\n // - don't _keysAtom.reportChanged if the keys of resulting map are indentical (order matters!)\n // - note that result map may differ from replacement map due to the interceptors\n transaction(function () {\n // Convert to map so we can do quick key lookups\n var replacementMap = convertToMap(values);\n var orderedData = new Map();\n // Used for optimization\n var keysReportChangedCalled = false;\n // Delete keys that don't exist in replacement map\n // if the key deletion is prevented by interceptor\n // add entry at the beginning of the result map\n for (var _iterator3 = _createForOfIteratorHelperLoose(_this7.data_.keys()), _step3; !(_step3 = _iterator3()).done;) {\n var key = _step3.value;\n // Concurrently iterating/deleting keys\n // iterator should handle this correctly\n if (!replacementMap.has(key)) {\n var deleted = _this7[\"delete\"](key);\n // Was the key removed?\n if (deleted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true;\n } else {\n // Delete prevented by interceptor\n var value = _this7.data_.get(key);\n orderedData.set(key, value);\n }\n }\n }\n // Merge entries\n for (var _iterator4 = _createForOfIteratorHelperLoose(replacementMap.entries()), _step4; !(_step4 = _iterator4()).done;) {\n var _step4$value = _step4.value,\n _key = _step4$value[0],\n _value = _step4$value[1];\n // We will want to know whether a new key is added\n var keyExisted = _this7.data_.has(_key);\n // Add or update value\n _this7.set(_key, _value);\n // The addition could have been prevent by interceptor\n if (_this7.data_.has(_key)) {\n // The update could have been prevented by interceptor\n // and also we want to preserve existing values\n // so use value from _data map (instead of replacement map)\n var _value2 = _this7.data_.get(_key);\n orderedData.set(_key, _value2);\n // Was a new key added?\n if (!keyExisted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true;\n }\n }\n }\n // Check for possible key order change\n if (!keysReportChangedCalled) {\n if (_this7.data_.size !== orderedData.size) {\n // If size differs, keys are definitely modified\n _this7.keysAtom_.reportChanged();\n } else {\n var iter1 = _this7.data_.keys();\n var iter2 = orderedData.keys();\n var next1 = iter1.next();\n var next2 = iter2.next();\n while (!next1.done) {\n if (next1.value !== next2.value) {\n _this7.keysAtom_.reportChanged();\n break;\n }\n next1 = iter1.next();\n next2 = iter2.next();\n }\n }\n }\n // Use correctly ordered map\n _this7.data_ = orderedData;\n });\n return this;\n };\n _proto.toString = function toString() {\n return \"[object ObservableMap]\";\n };\n _proto.toJSON = function toJSON() {\n return Array.from(this);\n };\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (process.env.NODE_ENV !== \"production\" && fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with maps.\");\n }\n return registerListener(this, listener);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _createClass(ObservableMap, [{\n key: \"size\",\n get: function get() {\n this.keysAtom_.reportObserved();\n return this.data_.size;\n }\n }, {\n key: _Symbol$toStringTag,\n get: function get() {\n return \"Map\";\n }\n }]);\n return ObservableMap;\n}();\n// eslint-disable-next-line\nvar isObservableMap = /*#__PURE__*/createInstanceofPredicate(\"ObservableMap\", ObservableMap);\nfunction convertToMap(dataStructure) {\n if (isES6Map(dataStructure) || isObservableMap(dataStructure)) {\n return dataStructure;\n } else if (Array.isArray(dataStructure)) {\n return new Map(dataStructure);\n } else if (isPlainObject(dataStructure)) {\n var map = new Map();\n for (var key in dataStructure) {\n map.set(key, dataStructure[key]);\n }\n return map;\n } else {\n return die(21, dataStructure);\n }\n}\n\nvar _Symbol$iterator$1, _Symbol$toStringTag$1;\nvar ObservableSetMarker = {};\n_Symbol$iterator$1 = Symbol.iterator;\n_Symbol$toStringTag$1 = Symbol.toStringTag;\nvar ObservableSet = /*#__PURE__*/function () {\n function ObservableSet(initialData, enhancer, name_) {\n var _this = this;\n if (enhancer === void 0) {\n enhancer = deepEnhancer;\n }\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"ObservableSet@\" + getNextId() : \"ObservableSet\";\n }\n this.name_ = void 0;\n this[$mobx] = ObservableSetMarker;\n this.data_ = new Set();\n this.atom_ = void 0;\n this.changeListeners_ = void 0;\n this.interceptors_ = void 0;\n this.dehancer = void 0;\n this.enhancer_ = void 0;\n this.name_ = name_;\n if (!isFunction(Set)) {\n die(22);\n }\n this.enhancer_ = function (newV, oldV) {\n return enhancer(newV, oldV, name_);\n };\n initObservable(function () {\n _this.atom_ = createAtom(_this.name_);\n if (initialData) {\n _this.replace(initialData);\n }\n });\n }\n var _proto = ObservableSet.prototype;\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.clear = function clear() {\n var _this2 = this;\n transaction(function () {\n untracked(function () {\n for (var _iterator = _createForOfIteratorHelperLoose(_this2.data_.values()), _step; !(_step = _iterator()).done;) {\n var value = _step.value;\n _this2[\"delete\"](value);\n }\n });\n });\n };\n _proto.forEach = function forEach(callbackFn, thisArg) {\n for (var _iterator2 = _createForOfIteratorHelperLoose(this), _step2; !(_step2 = _iterator2()).done;) {\n var value = _step2.value;\n callbackFn.call(thisArg, value, value, this);\n }\n };\n _proto.add = function add(value) {\n var _this3 = this;\n checkIfStateModificationsAreAllowed(this.atom_);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: ADD,\n object: this,\n newValue: value\n });\n if (!change) {\n return this;\n }\n // ideally, value = change.value would be done here, so that values can be\n // changed by interceptor. Same applies for other Set and Map api's.\n }\n\n if (!this.has(value)) {\n transaction(function () {\n _this3.data_.add(_this3.enhancer_(value, undefined));\n _this3.atom_.reportChanged();\n });\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n var notify = hasListeners(this);\n var _change = notify || notifySpy ? {\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n newValue: value\n } : null;\n if (notifySpy && process.env.NODE_ENV !== \"production\") {\n spyReportStart(_change);\n }\n if (notify) {\n notifyListeners(this, _change);\n }\n if (notifySpy && process.env.NODE_ENV !== \"production\") {\n spyReportEnd();\n }\n }\n return this;\n };\n _proto[\"delete\"] = function _delete(value) {\n var _this4 = this;\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: DELETE,\n object: this,\n oldValue: value\n });\n if (!change) {\n return false;\n }\n }\n if (this.has(value)) {\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n var notify = hasListeners(this);\n var _change2 = notify || notifySpy ? {\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: value\n } : null;\n if (notifySpy && process.env.NODE_ENV !== \"production\") {\n spyReportStart(_change2);\n }\n transaction(function () {\n _this4.atom_.reportChanged();\n _this4.data_[\"delete\"](value);\n });\n if (notify) {\n notifyListeners(this, _change2);\n }\n if (notifySpy && process.env.NODE_ENV !== \"production\") {\n spyReportEnd();\n }\n return true;\n }\n return false;\n };\n _proto.has = function has(value) {\n this.atom_.reportObserved();\n return this.data_.has(this.dehanceValue_(value));\n };\n _proto.entries = function entries() {\n var nextIndex = 0;\n var keys = Array.from(this.keys());\n var values = Array.from(this.values());\n return makeIterable({\n next: function next() {\n var index = nextIndex;\n nextIndex += 1;\n return index < values.length ? {\n value: [keys[index], values[index]],\n done: false\n } : {\n done: true\n };\n }\n });\n };\n _proto.keys = function keys() {\n return this.values();\n };\n _proto.values = function values() {\n this.atom_.reportObserved();\n var self = this;\n var nextIndex = 0;\n var observableValues = Array.from(this.data_.values());\n return makeIterable({\n next: function next() {\n return nextIndex < observableValues.length ? {\n value: self.dehanceValue_(observableValues[nextIndex++]),\n done: false\n } : {\n done: true\n };\n }\n });\n };\n _proto.replace = function replace(other) {\n var _this5 = this;\n if (isObservableSet(other)) {\n other = new Set(other);\n }\n transaction(function () {\n if (Array.isArray(other)) {\n _this5.clear();\n other.forEach(function (value) {\n return _this5.add(value);\n });\n } else if (isES6Set(other)) {\n _this5.clear();\n other.forEach(function (value) {\n return _this5.add(value);\n });\n } else if (other !== null && other !== undefined) {\n die(\"Cannot initialize set from \" + other);\n }\n });\n return this;\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n // ... 'fireImmediately' could also be true?\n if (process.env.NODE_ENV !== \"production\" && fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with sets.\");\n }\n return registerListener(this, listener);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.toJSON = function toJSON() {\n return Array.from(this);\n };\n _proto.toString = function toString() {\n return \"[object ObservableSet]\";\n };\n _proto[_Symbol$iterator$1] = function () {\n return this.values();\n };\n _createClass(ObservableSet, [{\n key: \"size\",\n get: function get() {\n this.atom_.reportObserved();\n return this.data_.size;\n }\n }, {\n key: _Symbol$toStringTag$1,\n get: function get() {\n return \"Set\";\n }\n }]);\n return ObservableSet;\n}();\n// eslint-disable-next-line\nvar isObservableSet = /*#__PURE__*/createInstanceofPredicate(\"ObservableSet\", ObservableSet);\n\nvar descriptorCache = /*#__PURE__*/Object.create(null);\nvar REMOVE = \"remove\";\nvar ObservableObjectAdministration = /*#__PURE__*/function () {\n function ObservableObjectAdministration(target_, values_, name_,\n // Used anytime annotation is not explicitely provided\n defaultAnnotation_) {\n if (values_ === void 0) {\n values_ = new Map();\n }\n if (defaultAnnotation_ === void 0) {\n defaultAnnotation_ = autoAnnotation;\n }\n this.target_ = void 0;\n this.values_ = void 0;\n this.name_ = void 0;\n this.defaultAnnotation_ = void 0;\n this.keysAtom_ = void 0;\n this.changeListeners_ = void 0;\n this.interceptors_ = void 0;\n this.proxy_ = void 0;\n this.isPlainObject_ = void 0;\n this.appliedAnnotations_ = void 0;\n this.pendingKeys_ = void 0;\n this.target_ = target_;\n this.values_ = values_;\n this.name_ = name_;\n this.defaultAnnotation_ = defaultAnnotation_;\n this.keysAtom_ = new Atom(process.env.NODE_ENV !== \"production\" ? this.name_ + \".keys\" : \"ObservableObject.keys\");\n // Optimization: we use this frequently\n this.isPlainObject_ = isPlainObject(this.target_);\n if (process.env.NODE_ENV !== \"production\" && !isAnnotation(this.defaultAnnotation_)) {\n die(\"defaultAnnotation must be valid annotation\");\n }\n if (process.env.NODE_ENV !== \"production\") {\n // Prepare structure for tracking which fields were already annotated\n this.appliedAnnotations_ = {};\n }\n }\n var _proto = ObservableObjectAdministration.prototype;\n _proto.getObservablePropValue_ = function getObservablePropValue_(key) {\n return this.values_.get(key).get();\n };\n _proto.setObservablePropValue_ = function setObservablePropValue_(key, newValue) {\n var observable = this.values_.get(key);\n if (observable instanceof ComputedValue) {\n observable.set(newValue);\n return true;\n }\n // intercept\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: UPDATE,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: newValue\n });\n if (!change) {\n return null;\n }\n newValue = change.newValue;\n }\n newValue = observable.prepareNewValue_(newValue);\n // notify spy & observers\n if (newValue !== globalState.UNCHANGED) {\n var notify = hasListeners(this);\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n var _change = notify || notifySpy ? {\n type: UPDATE,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n oldValue: observable.value_,\n name: key,\n newValue: newValue\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(_change);\n }\n observable.setNewValue_(newValue);\n if (notify) {\n notifyListeners(this, _change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n return true;\n };\n _proto.get_ = function get_(key) {\n if (globalState.trackingDerivation && !hasProp(this.target_, key)) {\n // Key doesn't exist yet, subscribe for it in case it's added later\n this.has_(key);\n }\n return this.target_[key];\n }\n /**\n * @param {PropertyKey} key\n * @param {any} value\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */;\n _proto.set_ = function set_(key, value, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n // Don't use .has(key) - we care about own\n if (hasProp(this.target_, key)) {\n // Existing prop\n if (this.values_.has(key)) {\n // Observable (can be intercepted)\n return this.setObservablePropValue_(key, value);\n } else if (proxyTrap) {\n // Non-observable - proxy\n return Reflect.set(this.target_, key, value);\n } else {\n // Non-observable\n this.target_[key] = value;\n return true;\n }\n } else {\n // New prop\n return this.extend_(key, {\n value: value,\n enumerable: true,\n writable: true,\n configurable: true\n }, this.defaultAnnotation_, proxyTrap);\n }\n }\n // Trap for \"in\"\n ;\n _proto.has_ = function has_(key) {\n if (!globalState.trackingDerivation) {\n // Skip key subscription outside derivation\n return key in this.target_;\n }\n this.pendingKeys_ || (this.pendingKeys_ = new Map());\n var entry = this.pendingKeys_.get(key);\n if (!entry) {\n entry = new ObservableValue(key in this.target_, referenceEnhancer, process.env.NODE_ENV !== \"production\" ? this.name_ + \".\" + stringifyKey(key) + \"?\" : \"ObservableObject.key?\", false);\n this.pendingKeys_.set(key, entry);\n }\n return entry.get();\n }\n /**\n * @param {PropertyKey} key\n * @param {Annotation|boolean} annotation true - use default annotation, false - ignore prop\n */;\n _proto.make_ = function make_(key, annotation) {\n if (annotation === true) {\n annotation = this.defaultAnnotation_;\n }\n if (annotation === false) {\n return;\n }\n assertAnnotable(this, annotation, key);\n if (!(key in this.target_)) {\n var _this$target_$storedA;\n // Throw on missing key, except for decorators:\n // Decorator annotations are collected from whole prototype chain.\n // When called from super() some props may not exist yet.\n // However we don't have to worry about missing prop,\n // because the decorator must have been applied to something.\n if ((_this$target_$storedA = this.target_[storedAnnotationsSymbol]) != null && _this$target_$storedA[key]) {\n return; // will be annotated by subclass constructor\n } else {\n die(1, annotation.annotationType_, this.name_ + \".\" + key.toString());\n }\n }\n var source = this.target_;\n while (source && source !== objectPrototype) {\n var descriptor = getDescriptor(source, key);\n if (descriptor) {\n var outcome = annotation.make_(this, key, descriptor, source);\n if (outcome === 0 /* MakeResult.Cancel */) {\n return;\n }\n if (outcome === 1 /* MakeResult.Break */) {\n break;\n }\n }\n source = Object.getPrototypeOf(source);\n }\n recordAnnotationApplied(this, annotation, key);\n }\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */;\n _proto.extend_ = function extend_(key, descriptor, annotation, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n if (annotation === true) {\n annotation = this.defaultAnnotation_;\n }\n if (annotation === false) {\n return this.defineProperty_(key, descriptor, proxyTrap);\n }\n assertAnnotable(this, annotation, key);\n var outcome = annotation.extend_(this, key, descriptor, proxyTrap);\n if (outcome) {\n recordAnnotationApplied(this, annotation, key);\n }\n return outcome;\n }\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */;\n _proto.defineProperty_ = function defineProperty_(key, descriptor, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n try {\n startBatch();\n // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n }\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: descriptor.value\n });\n if (!change) {\n return null;\n }\n var newValue = change.newValue;\n if (descriptor.value !== newValue) {\n descriptor = _extends({}, descriptor, {\n value: newValue\n });\n }\n }\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n // Notify\n this.notifyPropertyAddition_(key, descriptor.value);\n } finally {\n endBatch();\n }\n return true;\n }\n // If original descriptor becomes relevant, move this to annotation directly\n ;\n _proto.defineObservableProperty_ = function defineObservableProperty_(key, value, enhancer, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n try {\n startBatch();\n // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n }\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: value\n });\n if (!change) {\n return null;\n }\n value = change.newValue;\n }\n var cachedDescriptor = getCachedObservablePropDescriptor(key);\n var descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: true,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n };\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n var observable = new ObservableValue(value, enhancer, process.env.NODE_ENV !== \"production\" ? this.name_ + \".\" + key.toString() : \"ObservableObject.key\", false);\n this.values_.set(key, observable);\n // Notify (value possibly changed by ObservableValue)\n this.notifyPropertyAddition_(key, observable.value_);\n } finally {\n endBatch();\n }\n return true;\n }\n // If original descriptor becomes relevant, move this to annotation directly\n ;\n _proto.defineComputedProperty_ = function defineComputedProperty_(key, options, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n try {\n startBatch();\n // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n }\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: undefined\n });\n if (!change) {\n return null;\n }\n }\n options.name || (options.name = process.env.NODE_ENV !== \"production\" ? this.name_ + \".\" + key.toString() : \"ObservableObject.key\");\n options.context = this.proxy_ || this.target_;\n var cachedDescriptor = getCachedObservablePropDescriptor(key);\n var descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: false,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n };\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n this.values_.set(key, new ComputedValue(options));\n // Notify\n this.notifyPropertyAddition_(key, undefined);\n } finally {\n endBatch();\n }\n return true;\n }\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */;\n _proto.delete_ = function delete_(key, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n // No such prop\n if (!hasProp(this.target_, key)) {\n return true;\n }\n // Intercept\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: REMOVE\n });\n // Cancelled\n if (!change) {\n return null;\n }\n }\n // Delete\n try {\n var _this$pendingKeys_, _this$pendingKeys_$ge;\n startBatch();\n var notify = hasListeners(this);\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n var observable = this.values_.get(key);\n // Value needed for spies/listeners\n var value = undefined;\n // Optimization: don't pull the value unless we will need it\n if (!observable && (notify || notifySpy)) {\n var _getDescriptor;\n value = (_getDescriptor = getDescriptor(this.target_, key)) == null ? void 0 : _getDescriptor.value;\n }\n // delete prop (do first, may fail)\n if (proxyTrap) {\n if (!Reflect.deleteProperty(this.target_, key)) {\n return false;\n }\n } else {\n delete this.target_[key];\n }\n // Allow re-annotating this field\n if (process.env.NODE_ENV !== \"production\") {\n delete this.appliedAnnotations_[key];\n }\n // Clear observable\n if (observable) {\n this.values_[\"delete\"](key);\n // for computed, value is undefined\n if (observable instanceof ObservableValue) {\n value = observable.value_;\n }\n // Notify: autorun(() => obj[key]), see #1796\n propagateChanged(observable);\n }\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged();\n // Notify \"has\" observers\n // \"in\" as it may still exist in proto\n (_this$pendingKeys_ = this.pendingKeys_) == null ? void 0 : (_this$pendingKeys_$ge = _this$pendingKeys_.get(key)) == null ? void 0 : _this$pendingKeys_$ge.set(key in this.target_);\n // Notify spies/listeners\n if (notify || notifySpy) {\n var _change2 = {\n type: REMOVE,\n observableKind: \"object\",\n object: this.proxy_ || this.target_,\n debugObjectName: this.name_,\n oldValue: value,\n name: key\n };\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(_change2);\n }\n if (notify) {\n notifyListeners(this, _change2);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n } finally {\n endBatch();\n }\n return true;\n }\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */;\n _proto.observe_ = function observe_(callback, fireImmediately) {\n if (process.env.NODE_ENV !== \"production\" && fireImmediately === true) {\n die(\"`observe` doesn't support the fire immediately property for observable objects.\");\n }\n return registerListener(this, callback);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.notifyPropertyAddition_ = function notifyPropertyAddition_(key, value) {\n var _this$pendingKeys_2, _this$pendingKeys_2$g;\n var notify = hasListeners(this);\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n if (notify || notifySpy) {\n var change = notify || notifySpy ? {\n type: ADD,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: value\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(change);\n }\n if (notify) {\n notifyListeners(this, change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n (_this$pendingKeys_2 = this.pendingKeys_) == null ? void 0 : (_this$pendingKeys_2$g = _this$pendingKeys_2.get(key)) == null ? void 0 : _this$pendingKeys_2$g.set(true);\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged();\n };\n _proto.ownKeys_ = function ownKeys_() {\n this.keysAtom_.reportObserved();\n return ownKeys(this.target_);\n };\n _proto.keys_ = function keys_() {\n // Returns enumerable && own, but unfortunately keysAtom will report on ANY key change.\n // There is no way to distinguish between Object.keys(object) and Reflect.ownKeys(object) - both are handled by ownKeys trap.\n // We can either over-report in Object.keys(object) or under-report in Reflect.ownKeys(object)\n // We choose to over-report in Object.keys(object), because:\n // - typically it's used with simple data objects\n // - when symbolic/non-enumerable keys are relevant Reflect.ownKeys works as expected\n this.keysAtom_.reportObserved();\n return Object.keys(this.target_);\n };\n return ObservableObjectAdministration;\n}();\nfunction asObservableObject(target, options) {\n var _options$name;\n if (process.env.NODE_ENV !== \"production\" && options && isObservableObject(target)) {\n die(\"Options can't be provided for already observable objects.\");\n }\n if (hasProp(target, $mobx)) {\n if (process.env.NODE_ENV !== \"production\" && !(getAdministration(target) instanceof ObservableObjectAdministration)) {\n die(\"Cannot convert '\" + getDebugName(target) + \"' into observable object:\" + \"\\nThe target is already observable of different type.\" + \"\\nExtending builtins is not supported.\");\n }\n return target;\n }\n if (process.env.NODE_ENV !== \"production\" && !Object.isExtensible(target)) {\n die(\"Cannot make the designated object observable; it is not extensible\");\n }\n var name = (_options$name = options == null ? void 0 : options.name) != null ? _options$name : process.env.NODE_ENV !== \"production\" ? (isPlainObject(target) ? \"ObservableObject\" : target.constructor.name) + \"@\" + getNextId() : \"ObservableObject\";\n var adm = new ObservableObjectAdministration(target, new Map(), String(name), getAnnotationFromOptions(options));\n addHiddenProp(target, $mobx, adm);\n return target;\n}\nvar isObservableObjectAdministration = /*#__PURE__*/createInstanceofPredicate(\"ObservableObjectAdministration\", ObservableObjectAdministration);\nfunction getCachedObservablePropDescriptor(key) {\n return descriptorCache[key] || (descriptorCache[key] = {\n get: function get() {\n return this[$mobx].getObservablePropValue_(key);\n },\n set: function set(value) {\n return this[$mobx].setObservablePropValue_(key, value);\n }\n });\n}\nfunction isObservableObject(thing) {\n if (isObject(thing)) {\n return isObservableObjectAdministration(thing[$mobx]);\n }\n return false;\n}\nfunction recordAnnotationApplied(adm, annotation, key) {\n var _adm$target_$storedAn;\n if (process.env.NODE_ENV !== \"production\") {\n adm.appliedAnnotations_[key] = annotation;\n }\n // Remove applied decorator annotation so we don't try to apply it again in subclass constructor\n (_adm$target_$storedAn = adm.target_[storedAnnotationsSymbol]) == null ? true : delete _adm$target_$storedAn[key];\n}\nfunction assertAnnotable(adm, annotation, key) {\n // Valid annotation\n if (process.env.NODE_ENV !== \"production\" && !isAnnotation(annotation)) {\n die(\"Cannot annotate '\" + adm.name_ + \".\" + key.toString() + \"': Invalid annotation.\");\n }\n /*\n // Configurable, not sealed, not frozen\n // Possibly not needed, just a little better error then the one thrown by engine.\n // Cases where this would be useful the most (subclass field initializer) are not interceptable by this.\n if (__DEV__) {\n const configurable = getDescriptor(adm.target_, key)?.configurable\n const frozen = Object.isFrozen(adm.target_)\n const sealed = Object.isSealed(adm.target_)\n if (!configurable || frozen || sealed) {\n const fieldName = `${adm.name_}.${key.toString()}`\n const requestedAnnotationType = annotation.annotationType_\n let error = `Cannot apply '${requestedAnnotationType}' to '${fieldName}':`\n if (frozen) {\n error += `\\nObject is frozen.`\n }\n if (sealed) {\n error += `\\nObject is sealed.`\n }\n if (!configurable) {\n error += `\\nproperty is not configurable.`\n // Mention only if caused by us to avoid confusion\n if (hasProp(adm.appliedAnnotations!, key)) {\n error += `\\nTo prevent accidental re-definition of a field by a subclass, `\n error += `all annotated fields of non-plain objects (classes) are not configurable.`\n }\n }\n die(error)\n }\n }\n */\n // Not annotated\n if (process.env.NODE_ENV !== \"production\" && !isOverride(annotation) && hasProp(adm.appliedAnnotations_, key)) {\n var fieldName = adm.name_ + \".\" + key.toString();\n var currentAnnotationType = adm.appliedAnnotations_[key].annotationType_;\n var requestedAnnotationType = annotation.annotationType_;\n die(\"Cannot apply '\" + requestedAnnotationType + \"' to '\" + fieldName + \"':\" + (\"\\nThe field is already annotated with '\" + currentAnnotationType + \"'.\") + \"\\nRe-annotating fields is not allowed.\" + \"\\nUse 'override' annotation for methods overridden by subclass.\");\n }\n}\n\n// Bug in safari 9.* (or iOS 9 safari mobile). See #364\nvar ENTRY_0 = /*#__PURE__*/createArrayEntryDescriptor(0);\nvar safariPrototypeSetterInheritanceBug = /*#__PURE__*/function () {\n var v = false;\n var p = {};\n Object.defineProperty(p, \"0\", {\n set: function set() {\n v = true;\n }\n });\n /*#__PURE__*/Object.create(p)[\"0\"] = 1;\n return v === false;\n}();\n/**\n * This array buffer contains two lists of properties, so that all arrays\n * can recycle their property definitions, which significantly improves performance of creating\n * properties on the fly.\n */\nvar OBSERVABLE_ARRAY_BUFFER_SIZE = 0;\n// Typescript workaround to make sure ObservableArray extends Array\nvar StubArray = function StubArray() {};\nfunction inherit(ctor, proto) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(ctor.prototype, proto);\n } else if (ctor.prototype.__proto__ !== undefined) {\n ctor.prototype.__proto__ = proto;\n } else {\n ctor.prototype = proto;\n }\n}\ninherit(StubArray, Array.prototype);\n// Weex proto freeze protection was here,\n// but it is unclear why the hack is need as MobX never changed the prototype\n// anyway, so removed it in V6\nvar LegacyObservableArray = /*#__PURE__*/function (_StubArray, _Symbol$toStringTag, _Symbol$iterator) {\n _inheritsLoose(LegacyObservableArray, _StubArray);\n function LegacyObservableArray(initialValues, enhancer, name, owned) {\n var _this;\n if (name === void 0) {\n name = process.env.NODE_ENV !== \"production\" ? \"ObservableArray@\" + getNextId() : \"ObservableArray\";\n }\n if (owned === void 0) {\n owned = false;\n }\n _this = _StubArray.call(this) || this;\n initObservable(function () {\n var adm = new ObservableArrayAdministration(name, enhancer, owned, true);\n adm.proxy_ = _assertThisInitialized(_this);\n addHiddenFinalProp(_assertThisInitialized(_this), $mobx, adm);\n if (initialValues && initialValues.length) {\n // @ts-ignore\n _this.spliceWithArray(0, 0, initialValues);\n }\n if (safariPrototypeSetterInheritanceBug) {\n // Seems that Safari won't use numeric prototype setter untill any * numeric property is\n // defined on the instance. After that it works fine, even if this property is deleted.\n Object.defineProperty(_assertThisInitialized(_this), \"0\", ENTRY_0);\n }\n });\n return _this;\n }\n var _proto = LegacyObservableArray.prototype;\n _proto.concat = function concat() {\n this[$mobx].atom_.reportObserved();\n for (var _len = arguments.length, arrays = new Array(_len), _key = 0; _key < _len; _key++) {\n arrays[_key] = arguments[_key];\n }\n return Array.prototype.concat.apply(this.slice(),\n //@ts-ignore\n arrays.map(function (a) {\n return isObservableArray(a) ? a.slice() : a;\n }));\n };\n _proto[_Symbol$iterator] = function () {\n var self = this;\n var nextIndex = 0;\n return makeIterable({\n next: function next() {\n return nextIndex < self.length ? {\n value: self[nextIndex++],\n done: false\n } : {\n done: true,\n value: undefined\n };\n }\n });\n };\n _createClass(LegacyObservableArray, [{\n key: \"length\",\n get: function get() {\n return this[$mobx].getArrayLength_();\n },\n set: function set(newLength) {\n this[$mobx].setArrayLength_(newLength);\n }\n }, {\n key: _Symbol$toStringTag,\n get: function get() {\n return \"Array\";\n }\n }]);\n return LegacyObservableArray;\n}(StubArray, Symbol.toStringTag, Symbol.iterator);\nObject.entries(arrayExtensions).forEach(function (_ref) {\n var prop = _ref[0],\n fn = _ref[1];\n if (prop !== \"concat\") {\n addHiddenProp(LegacyObservableArray.prototype, prop, fn);\n }\n});\nfunction createArrayEntryDescriptor(index) {\n return {\n enumerable: false,\n configurable: true,\n get: function get() {\n return this[$mobx].get_(index);\n },\n set: function set(value) {\n this[$mobx].set_(index, value);\n }\n };\n}\nfunction createArrayBufferItem(index) {\n defineProperty(LegacyObservableArray.prototype, \"\" + index, createArrayEntryDescriptor(index));\n}\nfunction reserveArrayBuffer(max) {\n if (max > OBSERVABLE_ARRAY_BUFFER_SIZE) {\n for (var index = OBSERVABLE_ARRAY_BUFFER_SIZE; index < max + 100; index++) {\n createArrayBufferItem(index);\n }\n OBSERVABLE_ARRAY_BUFFER_SIZE = max;\n }\n}\nreserveArrayBuffer(1000);\nfunction createLegacyArray(initialValues, enhancer, name) {\n return new LegacyObservableArray(initialValues, enhancer, name);\n}\n\nfunction getAtom(thing, property) {\n if (typeof thing === \"object\" && thing !== null) {\n if (isObservableArray(thing)) {\n if (property !== undefined) {\n die(23);\n }\n return thing[$mobx].atom_;\n }\n if (isObservableSet(thing)) {\n return thing.atom_;\n }\n if (isObservableMap(thing)) {\n if (property === undefined) {\n return thing.keysAtom_;\n }\n var observable = thing.data_.get(property) || thing.hasMap_.get(property);\n if (!observable) {\n die(25, property, getDebugName(thing));\n }\n return observable;\n }\n if (isObservableObject(thing)) {\n if (!property) {\n return die(26);\n }\n var _observable = thing[$mobx].values_.get(property);\n if (!_observable) {\n die(27, property, getDebugName(thing));\n }\n return _observable;\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing;\n }\n } else if (isFunction(thing)) {\n if (isReaction(thing[$mobx])) {\n // disposer function\n return thing[$mobx];\n }\n }\n die(28);\n}\nfunction getAdministration(thing, property) {\n if (!thing) {\n die(29);\n }\n if (property !== undefined) {\n return getAdministration(getAtom(thing, property));\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing;\n }\n if (isObservableMap(thing) || isObservableSet(thing)) {\n return thing;\n }\n if (thing[$mobx]) {\n return thing[$mobx];\n }\n die(24, thing);\n}\nfunction getDebugName(thing, property) {\n var named;\n if (property !== undefined) {\n named = getAtom(thing, property);\n } else if (isAction(thing)) {\n return thing.name;\n } else if (isObservableObject(thing) || isObservableMap(thing) || isObservableSet(thing)) {\n named = getAdministration(thing);\n } else {\n // valid for arrays as well\n named = getAtom(thing);\n }\n return named.name_;\n}\n/**\n * Helper function for initializing observable structures, it applies:\n * 1. allowStateChanges so we don't violate enforceActions.\n * 2. untracked so we don't accidentaly subscribe to anything observable accessed during init in case the observable is created inside derivation.\n * 3. batch to avoid state version updates\n */\nfunction initObservable(cb) {\n var derivation = untrackedStart();\n var allowStateChanges = allowStateChangesStart(true);\n startBatch();\n try {\n return cb();\n } finally {\n endBatch();\n allowStateChangesEnd(allowStateChanges);\n untrackedEnd(derivation);\n }\n}\n\nvar toString = objectPrototype.toString;\nfunction deepEqual(a, b, depth) {\n if (depth === void 0) {\n depth = -1;\n }\n return eq(a, b, depth);\n}\n// Copied from https://github.com/jashkenas/underscore/blob/5c237a7c682fb68fd5378203f0bf22dce1624854/underscore.js#L1186-L1289\n// Internal recursive comparison function for `isEqual`.\nfunction eq(a, b, depth, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) {\n return a !== 0 || 1 / a === 1 / b;\n }\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) {\n return false;\n }\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) {\n return b !== b;\n }\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== \"function\" && type !== \"object\" && typeof b != \"object\") {\n return false;\n }\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) {\n return false;\n }\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case \"[object RegExp]\":\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case \"[object String]\":\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return \"\" + a === \"\" + b;\n case \"[object Number]\":\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) {\n return +b !== +b;\n }\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case \"[object Date]\":\n case \"[object Boolean]\":\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case \"[object Symbol]\":\n return typeof Symbol !== \"undefined\" && Symbol.valueOf.call(a) === Symbol.valueOf.call(b);\n case \"[object Map]\":\n case \"[object Set]\":\n // Maps and Sets are unwrapped to arrays of entry-pairs, adding an incidental level.\n // Hide this extra level by increasing the depth.\n if (depth >= 0) {\n depth++;\n }\n break;\n }\n // Unwrap any wrapped objects.\n a = unwrap(a);\n b = unwrap(b);\n var areArrays = className === \"[object Array]\";\n if (!areArrays) {\n if (typeof a != \"object\" || typeof b != \"object\") {\n return false;\n }\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor,\n bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor && isFunction(bCtor) && bCtor instanceof bCtor) && \"constructor\" in a && \"constructor\" in b) {\n return false;\n }\n }\n if (depth === 0) {\n return false;\n } else if (depth < 0) {\n depth = -1;\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) {\n return bStack[length] === b;\n }\n }\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) {\n return false;\n }\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], depth - 1, aStack, bStack)) {\n return false;\n }\n }\n } else {\n // Deep compare objects.\n var keys = Object.keys(a);\n var key;\n length = keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (Object.keys(b).length !== length) {\n return false;\n }\n while (length--) {\n // Deep compare each member\n key = keys[length];\n if (!(hasProp(b, key) && eq(a[key], b[key], depth - 1, aStack, bStack))) {\n return false;\n }\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\nfunction unwrap(a) {\n if (isObservableArray(a)) {\n return a.slice();\n }\n if (isES6Map(a) || isObservableMap(a)) {\n return Array.from(a.entries());\n }\n if (isES6Set(a) || isObservableSet(a)) {\n return Array.from(a.entries());\n }\n return a;\n}\n\nfunction makeIterable(iterator) {\n iterator[Symbol.iterator] = getSelf;\n return iterator;\n}\nfunction getSelf() {\n return this;\n}\n\nfunction isAnnotation(thing) {\n return (\n // Can be function\n thing instanceof Object && typeof thing.annotationType_ === \"string\" && isFunction(thing.make_) && isFunction(thing.extend_)\n );\n}\n\n/**\n * (c) Michel Weststrate 2015 - 2020\n * MIT Licensed\n *\n * Welcome to the mobx sources! To get a global overview of how MobX internally works,\n * this is a good place to start:\n * https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n *\n * Source folders:\n * ===============\n *\n * - api/ Most of the public static methods exposed by the module can be found here.\n * - core/ Implementation of the MobX algorithm; atoms, derivations, reactions, dependency trees, optimizations. Cool stuff can be found here.\n * - types/ All the magic that is need to have observable objects, arrays and values is in this folder. Including the modifiers like `asFlat`.\n * - utils/ Utility stuff.\n *\n */\n[\"Symbol\", \"Map\", \"Set\"].forEach(function (m) {\n var g = getGlobal();\n if (typeof g[m] === \"undefined\") {\n die(\"MobX requires global '\" + m + \"' to be available or polyfilled\");\n }\n});\nif (typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === \"object\") {\n // See: https://github.com/andykog/mobx-devtools/\n __MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({\n spy: spy,\n extras: {\n getDebugName: getDebugName\n },\n $mobx: $mobx\n });\n}\n\nexport { $mobx, FlowCancellationError, ObservableMap, ObservableSet, Reaction, allowStateChanges as _allowStateChanges, runInAction as _allowStateChangesInsideComputed, allowStateReadsEnd as _allowStateReadsEnd, allowStateReadsStart as _allowStateReadsStart, autoAction as _autoAction, _endAction, getAdministration as _getAdministration, getGlobalState as _getGlobalState, interceptReads as _interceptReads, isComputingDerivation as _isComputingDerivation, resetGlobalState as _resetGlobalState, _startAction, action, autorun, comparer, computed, configure, createAtom, apiDefineProperty as defineProperty, entries, extendObservable, flow, flowResult, get, getAtom, getDebugName, getDependencyTree, getObserverTree, has, intercept, isAction, isObservableValue as isBoxedObservable, isComputed, isComputedProp, isFlow, isFlowCancellationError, isObservable, isObservableArray, isObservableMap, isObservableObject, isObservableProp, isObservableSet, keys, makeAutoObservable, makeObservable, observable, observe, onBecomeObserved, onBecomeUnobserved, onReactionError, override, apiOwnKeys as ownKeys, reaction, remove, runInAction, set, spy, toJS, trace, transaction, untracked, values, when };\n//# sourceMappingURL=mobx.esm.js.map\n","import { makeObservable } from \"mobx\";\nimport { useState } from \"react\";\nif (!useState) {\n throw new Error(\"mobx-react-lite requires React with Hooks support\");\n}\nif (!makeObservable) {\n throw new Error(\"mobx-react-lite@3 requires mobx at least version 6 to be available\");\n}\n//# sourceMappingURL=assertEnvironment.js.map","import { configure } from \"mobx\";\nexport function defaultNoopBatch(callback) {\n callback();\n}\nexport function observerBatching(reactionScheduler) {\n if (!reactionScheduler) {\n reactionScheduler = defaultNoopBatch;\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\"[MobX] Failed to get unstable_batched updates from react-dom / react-native\");\n }\n }\n configure({ reactionScheduler: reactionScheduler });\n}\nexport var isObserverBatched = function () {\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\"[MobX] Deprecated\");\n }\n return true;\n};\n//# sourceMappingURL=observerBatching.js.map","import { getDependencyTree } from \"mobx\";\nexport function printDebugValue(v) {\n return getDependencyTree(v);\n}\n//# sourceMappingURL=printDebugValue.js.map","var globalIsUsingStaticRendering = false;\nexport function enableStaticRendering(enable) {\n globalIsUsingStaticRendering = enable;\n}\nexport function isUsingStaticRendering() {\n return globalIsUsingStaticRendering;\n}\n//# sourceMappingURL=staticRendering.js.map","export var REGISTRY_FINALIZE_AFTER = 10000;\nexport var REGISTRY_SWEEP_INTERVAL = 10000;\nvar TimerBasedFinalizationRegistry = /** @class */ (function () {\n function TimerBasedFinalizationRegistry(finalize) {\n var _this = this;\n Object.defineProperty(this, \"finalize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: finalize\n });\n Object.defineProperty(this, \"registrations\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Map()\n });\n Object.defineProperty(this, \"sweepTimeout\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // Bound so it can be used directly as setTimeout callback.\n Object.defineProperty(this, \"sweep\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: function (maxAge) {\n if (maxAge === void 0) { maxAge = REGISTRY_FINALIZE_AFTER; }\n // cancel timeout so we can force sweep anytime\n clearTimeout(_this.sweepTimeout);\n _this.sweepTimeout = undefined;\n var now = Date.now();\n _this.registrations.forEach(function (registration, token) {\n if (now - registration.registeredAt >= maxAge) {\n _this.finalize(registration.value);\n _this.registrations.delete(token);\n }\n });\n if (_this.registrations.size > 0) {\n _this.scheduleSweep();\n }\n }\n });\n // Bound so it can be exported directly as clearTimers test utility.\n Object.defineProperty(this, \"finalizeAllImmediately\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: function () {\n _this.sweep(0);\n }\n });\n }\n // Token is actually required with this impl\n Object.defineProperty(TimerBasedFinalizationRegistry.prototype, \"register\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (target, value, token) {\n this.registrations.set(token, {\n value: value,\n registeredAt: Date.now()\n });\n this.scheduleSweep();\n }\n });\n Object.defineProperty(TimerBasedFinalizationRegistry.prototype, \"unregister\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (token) {\n this.registrations.delete(token);\n }\n });\n Object.defineProperty(TimerBasedFinalizationRegistry.prototype, \"scheduleSweep\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n if (this.sweepTimeout === undefined) {\n this.sweepTimeout = setTimeout(this.sweep, REGISTRY_SWEEP_INTERVAL);\n }\n }\n });\n return TimerBasedFinalizationRegistry;\n}());\nexport { TimerBasedFinalizationRegistry };\nexport var UniversalFinalizationRegistry = typeof FinalizationRegistry !== \"undefined\"\n ? FinalizationRegistry\n : TimerBasedFinalizationRegistry;\n//# sourceMappingURL=UniversalFinalizationRegistry.js.map","import { UniversalFinalizationRegistry } from \"./UniversalFinalizationRegistry\";\nexport var observerFinalizationRegistry = new UniversalFinalizationRegistry(function (adm) {\n var _a;\n (_a = adm.reaction) === null || _a === void 0 ? void 0 : _a.dispose();\n adm.reaction = null;\n});\n//# sourceMappingURL=observerFinalizationRegistry.js.map","import { Reaction } from \"mobx\";\nimport React from \"react\";\nimport { printDebugValue } from \"./utils/printDebugValue\";\nimport { isUsingStaticRendering } from \"./staticRendering\";\nimport { observerFinalizationRegistry } from \"./utils/observerFinalizationRegistry\";\nimport { useSyncExternalStore } from \"use-sync-external-store/shim\";\n// Required by SSR when hydrating #3669\nvar getServerSnapshot = function () { };\nfunction createReaction(adm) {\n adm.reaction = new Reaction(\"observer\".concat(adm.name), function () {\n var _a;\n adm.stateVersion = Symbol();\n // onStoreChange won't be available until the component \"mounts\".\n // If state changes in between initial render and mount,\n // `useSyncExternalStore` should handle that by checking the state version and issuing update.\n (_a = adm.onStoreChange) === null || _a === void 0 ? void 0 : _a.call(adm);\n });\n}\nexport function useObserver(render, baseComponentName) {\n if (baseComponentName === void 0) { baseComponentName = \"observed\"; }\n if (isUsingStaticRendering()) {\n return render();\n }\n var admRef = React.useRef(null);\n if (!admRef.current) {\n // First render\n var adm_1 = {\n reaction: null,\n onStoreChange: null,\n stateVersion: Symbol(),\n name: baseComponentName,\n subscribe: function (onStoreChange) {\n // Do NOT access admRef here!\n observerFinalizationRegistry.unregister(adm_1);\n adm_1.onStoreChange = onStoreChange;\n if (!adm_1.reaction) {\n // We've lost our reaction and therefore all subscriptions, occurs when:\n // 1. Timer based finalization registry disposed reaction before component mounted.\n // 2. React \"re-mounts\" same component without calling render in between (typically ).\n // We have to recreate reaction and schedule re-render to recreate subscriptions,\n // even if state did not change.\n createReaction(adm_1);\n // `onStoreChange` won't force update if subsequent `getSnapshot` returns same value.\n // So we make sure that is not the case\n adm_1.stateVersion = Symbol();\n }\n return function () {\n var _a;\n // Do NOT access admRef here!\n adm_1.onStoreChange = null;\n (_a = adm_1.reaction) === null || _a === void 0 ? void 0 : _a.dispose();\n adm_1.reaction = null;\n };\n },\n getSnapshot: function () {\n // Do NOT access admRef here!\n return adm_1.stateVersion;\n }\n };\n admRef.current = adm_1;\n }\n var adm = admRef.current;\n if (!adm.reaction) {\n // First render or reaction was disposed by registry before subscribe\n createReaction(adm);\n // StrictMode/ConcurrentMode/Suspense may mean that our component is\n // rendered and abandoned multiple times, so we need to track leaked\n // Reactions.\n observerFinalizationRegistry.register(admRef, adm, adm);\n }\n React.useDebugValue(adm.reaction, printDebugValue);\n useSyncExternalStore(\n // Both of these must be stable, otherwise it would keep resubscribing every render.\n adm.subscribe, adm.getSnapshot, getServerSnapshot);\n // render the original component, but have the\n // reaction track the observables, so that rendering\n // can be invalidated (see above) once a dependency changes\n var renderResult;\n var exception;\n adm.reaction.track(function () {\n try {\n renderResult = render();\n }\n catch (e) {\n exception = e;\n }\n });\n if (exception) {\n throw exception; // re-throw any exceptions caught during rendering\n }\n return renderResult;\n}\n//# sourceMappingURL=useObserver.js.map","import { forwardRef, memo } from \"react\";\nimport { isUsingStaticRendering } from \"./staticRendering\";\nimport { useObserver } from \"./useObserver\";\nvar warnObserverOptionsDeprecated = true;\nvar hasSymbol = typeof Symbol === \"function\" && Symbol.for;\n// Using react-is had some issues (and operates on elements, not on types), see #608 / #609\nvar ReactForwardRefSymbol = hasSymbol\n ? Symbol.for(\"react.forward_ref\")\n : typeof forwardRef === \"function\" && forwardRef(function (props) { return null; })[\"$$typeof\"];\nvar ReactMemoSymbol = hasSymbol\n ? Symbol.for(\"react.memo\")\n : typeof memo === \"function\" && memo(function (props) { return null; })[\"$$typeof\"];\n// n.b. base case is not used for actual typings or exported in the typing files\nexport function observer(baseComponent, \n// TODO remove in next major\noptions) {\n var _a;\n if (process.env.NODE_ENV !== \"production\" && warnObserverOptionsDeprecated && options) {\n warnObserverOptionsDeprecated = false;\n console.warn(\"[mobx-react-lite] `observer(fn, { forwardRef: true })` is deprecated, use `observer(React.forwardRef(fn))`\");\n }\n if (ReactMemoSymbol && baseComponent[\"$$typeof\"] === ReactMemoSymbol) {\n throw new Error(\"[mobx-react-lite] You are trying to use `observer` on a function component wrapped in either another `observer` or `React.memo`. The observer already applies 'React.memo' for you.\");\n }\n // The working of observer is explained step by step in this talk: https://www.youtube.com/watch?v=cPF4iBedoF0&feature=youtu.be&t=1307\n if (isUsingStaticRendering()) {\n return baseComponent;\n }\n var useForwardRef = (_a = options === null || options === void 0 ? void 0 : options.forwardRef) !== null && _a !== void 0 ? _a : false;\n var render = baseComponent;\n var baseComponentName = baseComponent.displayName || baseComponent.name;\n // If already wrapped with forwardRef, unwrap,\n // so we can patch render and apply memo\n if (ReactForwardRefSymbol && baseComponent[\"$$typeof\"] === ReactForwardRefSymbol) {\n useForwardRef = true;\n render = baseComponent[\"render\"];\n if (typeof render !== \"function\") {\n throw new Error(\"[mobx-react-lite] `render` property of ForwardRef was not a function\");\n }\n }\n var observerComponent = function (props, ref) {\n return useObserver(function () { return render(props, ref); }, baseComponentName);\n };\n observerComponent.displayName = baseComponent.displayName;\n Object.defineProperty(observerComponent, \"name\", {\n value: baseComponent.name,\n writable: true,\n configurable: true\n });\n // Support legacy context: `contextTypes` must be applied before `memo`\n if (baseComponent.contextTypes) {\n ;\n observerComponent.contextTypes = baseComponent.contextTypes;\n }\n if (useForwardRef) {\n // `forwardRef` must be applied prior `memo`\n // `forwardRef(observer(cmp))` throws:\n // \"forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))\"\n observerComponent = forwardRef(observerComponent);\n }\n // memo; we are not interested in deep updates\n // in props; we assume that if deep objects are changed,\n // this is in observables, which would have been tracked anyway\n observerComponent = memo(observerComponent);\n copyStaticProperties(baseComponent, observerComponent);\n if (\"production\" !== process.env.NODE_ENV) {\n Object.defineProperty(observerComponent, \"contextTypes\", {\n set: function () {\n var _a, _b;\n throw new Error(\"[mobx-react-lite] `\".concat(this.displayName || ((_a = this.type) === null || _a === void 0 ? void 0 : _a.displayName) || ((_b = this.type) === null || _b === void 0 ? void 0 : _b.name) || \"Component\", \".contextTypes` must be set before applying `observer`.\"));\n }\n });\n }\n return observerComponent;\n}\n// based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\nvar hoistBlackList = {\n $$typeof: true,\n render: true,\n compare: true,\n type: true,\n // Don't redefine `displayName`,\n // it's defined as getter-setter pair on `memo` (see #3192).\n displayName: true\n};\nfunction copyStaticProperties(base, target) {\n Object.keys(base).forEach(function (key) {\n if (!hoistBlackList[key]) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key));\n }\n });\n}\n//# sourceMappingURL=observer.js.map","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { useDeprecated } from \"./utils/utils\";\nimport { observable, runInAction } from \"mobx\";\nimport { useState } from \"react\";\nexport function useAsObservableSource(current) {\n if (\"production\" !== process.env.NODE_ENV)\n useDeprecated(\"[mobx-react-lite] 'useAsObservableSource' is deprecated, please store the values directly in an observable, for example by using 'useLocalObservable', and sync future updates using 'useEffect' when needed. See the README for examples.\");\n var _a = __read(useState(function () { return observable(current, {}, { deep: false }); }), 1), res = _a[0];\n runInAction(function () {\n Object.assign(res, current);\n });\n return res;\n}\n//# sourceMappingURL=useAsObservableSource.js.map","var _a;\nimport \"./utils/assertEnvironment\";\nimport { unstable_batchedUpdates as batch } from \"./utils/reactBatchedUpdates\";\nimport { observerBatching } from \"./utils/observerBatching\";\nimport { useDeprecated } from \"./utils/utils\";\nimport { useObserver as useObserverOriginal } from \"./useObserver\";\nimport { enableStaticRendering } from \"./staticRendering\";\nimport { observerFinalizationRegistry } from \"./utils/observerFinalizationRegistry\";\nobserverBatching(batch);\nexport { isUsingStaticRendering, enableStaticRendering } from \"./staticRendering\";\nexport { observer } from \"./observer\";\nexport { Observer } from \"./ObserverComponent\";\nexport { useLocalObservable } from \"./useLocalObservable\";\nexport { useLocalStore } from \"./useLocalStore\";\nexport { useAsObservableSource } from \"./useAsObservableSource\";\nexport { observerFinalizationRegistry as _observerFinalizationRegistry };\nexport var clearTimers = (_a = observerFinalizationRegistry[\"finalizeAllImmediately\"]) !== null && _a !== void 0 ? _a : (function () { });\nexport function useObserver(fn, baseComponentName) {\n if (baseComponentName === void 0) { baseComponentName = \"observed\"; }\n if (\"production\" !== process.env.NODE_ENV) {\n useDeprecated(\"[mobx-react-lite] 'useObserver(fn)' is deprecated. Use `{fn}` instead, or wrap the entire component in `observer`.\");\n }\n return useObserverOriginal(fn, baseComponentName);\n}\nexport { isObserverBatched, observerBatching } from \"./utils/observerBatching\";\nexport function useStaticRendering(enable) {\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\"[mobx-react-lite] 'useStaticRendering' is deprecated, use 'enableStaticRendering' instead\");\n }\n enableStaticRendering(enable);\n}\n//# sourceMappingURL=index.js.map","import { _getGlobalState, Reaction, _allowStateChanges, untracked, isObservableMap, isObservableObject, isObservableArray, observable } from 'mobx';\nimport React__default, { PureComponent, Component } from 'react';\nimport { isUsingStaticRendering, _observerFinalizationRegistry, observer as observer$1 } from 'mobx-react-lite';\nexport { Observer, enableStaticRendering, isUsingStaticRendering, observerBatching, useAsObservableSource, useLocalObservable, useLocalStore, useObserver, useStaticRendering } from 'mobx-react-lite';\n\nfunction shallowEqual(objA, objB) {\n //From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n if (is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) {\n return false;\n }\n for (var i = 0; i < keysA.length; i++) {\n if (!Object.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\nfunction is(x, y) {\n // From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n// based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\nvar hoistBlackList = {\n $$typeof: 1,\n render: 1,\n compare: 1,\n type: 1,\n childContextTypes: 1,\n contextType: 1,\n contextTypes: 1,\n defaultProps: 1,\n getDefaultProps: 1,\n getDerivedStateFromError: 1,\n getDerivedStateFromProps: 1,\n mixins: 1,\n displayName: 1,\n propTypes: 1\n};\nfunction copyStaticProperties(base, target) {\n var protoProps = Object.getOwnPropertyNames(Object.getPrototypeOf(base));\n Object.getOwnPropertyNames(base).forEach(function (key) {\n if (!hoistBlackList[key] && protoProps.indexOf(key) === -1) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key));\n }\n });\n}\n/**\n * Utilities for patching componentWillUnmount, to make sure @disposeOnUnmount works correctly icm with user defined hooks\n * and the handler provided by mobx-react\n */\nvar mobxMixins = /*#__PURE__*/Symbol(\"patchMixins\");\nvar mobxPatchedDefinition = /*#__PURE__*/Symbol(\"patchedDefinition\");\nfunction getMixins(target, methodName) {\n var mixins = target[mobxMixins] = target[mobxMixins] || {};\n var methodMixins = mixins[methodName] = mixins[methodName] || {};\n methodMixins.locks = methodMixins.locks || 0;\n methodMixins.methods = methodMixins.methods || [];\n return methodMixins;\n}\nfunction wrapper(realMethod, mixins) {\n var _this = this;\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n // locks are used to ensure that mixins are invoked only once per invocation, even on recursive calls\n mixins.locks++;\n try {\n var retVal;\n if (realMethod !== undefined && realMethod !== null) {\n retVal = realMethod.apply(this, args);\n }\n return retVal;\n } finally {\n mixins.locks--;\n if (mixins.locks === 0) {\n mixins.methods.forEach(function (mx) {\n mx.apply(_this, args);\n });\n }\n }\n}\nfunction wrapFunction(realMethod, mixins) {\n var fn = function fn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n wrapper.call.apply(wrapper, [this, realMethod, mixins].concat(args));\n };\n return fn;\n}\nfunction patch(target, methodName, mixinMethod) {\n var mixins = getMixins(target, methodName);\n if (mixins.methods.indexOf(mixinMethod) < 0) {\n mixins.methods.push(mixinMethod);\n }\n var oldDefinition = Object.getOwnPropertyDescriptor(target, methodName);\n if (oldDefinition && oldDefinition[mobxPatchedDefinition]) {\n // already patched definition, do not repatch\n return;\n }\n var originalMethod = target[methodName];\n var newDefinition = createDefinition(target, methodName, oldDefinition ? oldDefinition.enumerable : undefined, mixins, originalMethod);\n Object.defineProperty(target, methodName, newDefinition);\n}\nfunction createDefinition(target, methodName, enumerable, mixins, originalMethod) {\n var _ref;\n var wrappedFunc = wrapFunction(originalMethod, mixins);\n return _ref = {}, _ref[mobxPatchedDefinition] = true, _ref.get = function get() {\n return wrappedFunc;\n }, _ref.set = function set(value) {\n if (this === target) {\n wrappedFunc = wrapFunction(value, mixins);\n } else {\n // when it is an instance of the prototype/a child prototype patch that particular case again separately\n // since we need to store separate values depending on wether it is the actual instance, the prototype, etc\n // e.g. the method for super might not be the same as the method for the prototype which might be not the same\n // as the method for the instance\n var newDefinition = createDefinition(this, methodName, enumerable, mixins, value);\n Object.defineProperty(this, methodName, newDefinition);\n }\n }, _ref.configurable = true, _ref.enumerable = enumerable, _ref;\n}\n\nvar administrationSymbol = /*#__PURE__*/Symbol(\"ObserverAdministration\");\nvar isMobXReactObserverSymbol = /*#__PURE__*/Symbol(\"isMobXReactObserver\");\nvar observablePropDescriptors;\nif (process.env.NODE_ENV !== \"production\") {\n observablePropDescriptors = {\n props: /*#__PURE__*/createObservablePropDescriptor(\"props\"),\n state: /*#__PURE__*/createObservablePropDescriptor(\"state\"),\n context: /*#__PURE__*/createObservablePropDescriptor(\"context\")\n };\n}\nfunction getAdministration(component) {\n var _component$administra;\n // We create administration lazily, because we can't patch constructor\n // and the exact moment of initialization partially depends on React internals.\n // At the time of writing this, the first thing invoked is one of the observable getter/setter (state/props/context).\n return (_component$administra = component[administrationSymbol]) != null ? _component$administra : component[administrationSymbol] = {\n reaction: null,\n mounted: false,\n reactionInvalidatedBeforeMount: false,\n forceUpdate: null,\n name: getDisplayName(component.constructor),\n state: undefined,\n props: undefined,\n context: undefined\n };\n}\nfunction makeClassComponentObserver(componentClass) {\n var prototype = componentClass.prototype;\n if (componentClass[isMobXReactObserverSymbol]) {\n var displayName = getDisplayName(componentClass);\n throw new Error(\"The provided component class (\" + displayName + \") has already been declared as an observer component.\");\n } else {\n componentClass[isMobXReactObserverSymbol] = true;\n }\n if (prototype.componentWillReact) {\n throw new Error(\"The componentWillReact life-cycle event is no longer supported\");\n }\n if (componentClass[\"__proto__\"] !== PureComponent) {\n if (!prototype.shouldComponentUpdate) {\n prototype.shouldComponentUpdate = observerSCU;\n } else if (prototype.shouldComponentUpdate !== observerSCU) {\n // n.b. unequal check, instead of existence check, as @observer might be on superclass as well\n throw new Error(\"It is not allowed to use shouldComponentUpdate in observer based components.\");\n }\n }\n if (process.env.NODE_ENV !== \"production\") {\n Object.defineProperties(prototype, observablePropDescriptors);\n }\n var originalRender = prototype.render;\n if (typeof originalRender !== \"function\") {\n var _displayName = getDisplayName(componentClass);\n throw new Error(\"[mobx-react] class component (\" + _displayName + \") is missing `render` method.\" + \"\\n`observer` requires `render` being a function defined on prototype.\" + \"\\n`render = () => {}` or `render = function() {}` is not supported.\");\n }\n prototype.render = function () {\n Object.defineProperty(this, \"render\", {\n // There is no safe way to replace render, therefore it's forbidden.\n configurable: false,\n writable: false,\n value: isUsingStaticRendering() ? originalRender : createReactiveRender.call(this, originalRender)\n });\n return this.render();\n };\n var originalComponentDidMount = prototype.componentDidMount;\n prototype.componentDidMount = function () {\n var _this = this;\n if (process.env.NODE_ENV !== \"production\" && this.componentDidMount !== Object.getPrototypeOf(this).componentDidMount) {\n var _displayName2 = getDisplayName(componentClass);\n throw new Error(\"[mobx-react] `observer(\" + _displayName2 + \").componentDidMount` must be defined on prototype.\" + \"\\n`componentDidMount = () => {}` or `componentDidMount = function() {}` is not supported.\");\n }\n // `componentDidMount` may not be called at all. React can abandon the instance after `render`.\n // That's why we use finalization registry to dispose reaction created during render.\n // Happens with `` see #3492\n //\n // `componentDidMount` can be called immediately after `componentWillUnmount` without calling `render` in between.\n // Happens with ``see #3395.\n //\n // If `componentDidMount` is called, it's guaranteed to run synchronously with render (similary to `useLayoutEffect`).\n // Therefore we don't have to worry about external (observable) state being updated before mount (no state version checking).\n //\n // Things may change: \"In the future, React will provide a feature that lets components preserve state between unmounts\"\n var admin = getAdministration(this);\n admin.mounted = true;\n // Component instance committed, prevent reaction disposal.\n _observerFinalizationRegistry.unregister(this);\n // We don't set forceUpdate before mount because it requires a reference to `this`,\n // therefore `this` could NOT be garbage collected before mount,\n // preventing reaction disposal by FinalizationRegistry and leading to memory leak.\n // As an alternative we could have `admin.instanceRef = new WeakRef(this)`, but lets avoid it if possible.\n admin.forceUpdate = function () {\n return _this.forceUpdate();\n };\n if (!admin.reaction || admin.reactionInvalidatedBeforeMount) {\n // Missing reaction:\n // 1. Instance was unmounted (reaction disposed) and immediately remounted without running render #3395.\n // 2. Reaction was disposed by finalization registry before mount. Shouldn't ever happen for class components:\n // `componentDidMount` runs synchronously after render, but our registry are deferred (can't run in between).\n // In any case we lost subscriptions to observables, so we have to create new reaction and re-render to resubscribe.\n // The reaction will be created lazily by following render.\n // Reaction invalidated before mount:\n // 1. A descendant's `componenDidMount` invalidated it's parent #3730\n admin.forceUpdate();\n }\n return originalComponentDidMount == null ? void 0 : originalComponentDidMount.apply(this, arguments);\n };\n // TODO@major Overly complicated \"patch\" is only needed to support the deprecated @disposeOnUnmount\n patch(prototype, \"componentWillUnmount\", function () {\n var _admin$reaction;\n if (isUsingStaticRendering()) {\n return;\n }\n var admin = getAdministration(this);\n (_admin$reaction = admin.reaction) == null ? void 0 : _admin$reaction.dispose();\n admin.reaction = null;\n admin.forceUpdate = null;\n admin.mounted = false;\n admin.reactionInvalidatedBeforeMount = false;\n });\n return componentClass;\n}\n// Generates a friendly name for debugging\nfunction getDisplayName(componentClass) {\n return componentClass.displayName || componentClass.name || \"\";\n}\nfunction createReactiveRender(originalRender) {\n var boundOriginalRender = originalRender.bind(this);\n var admin = getAdministration(this);\n function reactiveRender() {\n if (!admin.reaction) {\n // Create reaction lazily to support re-mounting #3395\n admin.reaction = createReaction(admin);\n if (!admin.mounted) {\n // React can abandon this instance and never call `componentDidMount`/`componentWillUnmount`,\n // we have to make sure reaction will be disposed.\n _observerFinalizationRegistry.register(this, admin, this);\n }\n }\n var error = undefined;\n var renderResult = undefined;\n admin.reaction.track(function () {\n try {\n // TODO@major\n // Optimization: replace with _allowStateChangesStart/End (not available in mobx@6.0.0)\n renderResult = _allowStateChanges(false, boundOriginalRender);\n } catch (e) {\n error = e;\n }\n });\n if (error) {\n throw error;\n }\n return renderResult;\n }\n return reactiveRender;\n}\nfunction createReaction(admin) {\n return new Reaction(admin.name + \".render()\", function () {\n if (!admin.mounted) {\n // This is neccessary to avoid react warning about calling forceUpdate on component that isn't mounted yet.\n // This happens when component is abandoned after render - our reaction is already created and reacts to changes.\n // `componenDidMount` runs synchronously after `render`, so unlike functional component, there is no delay during which the reaction could be invalidated.\n // However `componentDidMount` runs AFTER it's descendants' `componentDidMount`, which CAN invalidate the reaction, see #3730. Therefore remember and forceUpdate on mount.\n admin.reactionInvalidatedBeforeMount = true;\n return;\n }\n try {\n admin.forceUpdate == null ? void 0 : admin.forceUpdate();\n } catch (error) {\n var _admin$reaction2;\n (_admin$reaction2 = admin.reaction) == null ? void 0 : _admin$reaction2.dispose();\n admin.reaction = null;\n }\n });\n}\nfunction observerSCU(nextProps, nextState) {\n if (isUsingStaticRendering()) {\n console.warn(\"[mobx-react] It seems that a re-rendering of a React component is triggered while in static (server-side) mode. Please make sure components are rendered only once server-side.\");\n }\n // update on any state changes (as is the default)\n if (this.state !== nextState) {\n return true;\n }\n // update if props are shallowly not equal, inspired by PureRenderMixin\n // we could return just 'false' here, and avoid the `skipRender` checks etc\n // however, it is nicer if lifecycle events are triggered like usually,\n // so we return true here if props are shallowly modified.\n return !shallowEqual(this.props, nextProps);\n}\nfunction createObservablePropDescriptor(key) {\n return {\n configurable: true,\n enumerable: true,\n get: function get() {\n var admin = getAdministration(this);\n var derivation = _getGlobalState().trackingDerivation;\n if (derivation && derivation !== admin.reaction) {\n throw new Error(\"[mobx-react] Cannot read \\\"\" + admin.name + \".\" + key + \"\\\" in a reactive context, as it isn't observable.\\n Please use component lifecycle method to copy the value into a local observable first.\\n See https://github.com/mobxjs/mobx/blob/main/packages/mobx-react/README.md#note-on-using-props-and-state-in-derivations\");\n }\n return admin[key];\n },\n set: function set(value) {\n getAdministration(this)[key] = value;\n }\n };\n}\n\nfunction observer(component, context) {\n if (context && context.kind !== \"class\") {\n throw new Error(\"The @observer decorator can be used on classes only\");\n }\n if (component[\"isMobxInjector\"] === true) {\n console.warn(\"Mobx observer: You are trying to use `observer` on a component that already has `inject`. Please apply `observer` before applying `inject`\");\n }\n if (Object.prototype.isPrototypeOf.call(Component, component) || Object.prototype.isPrototypeOf.call(PureComponent, component)) {\n // Class component\n return makeClassComponentObserver(component);\n } else {\n // Function component\n return observer$1(component);\n }\n}\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nvar _excluded = [\"children\"];\nvar MobXProviderContext = /*#__PURE__*/React__default.createContext({});\nfunction Provider(props) {\n var children = props.children,\n stores = _objectWithoutPropertiesLoose(props, _excluded);\n var parentValue = React__default.useContext(MobXProviderContext);\n var mutableProviderRef = React__default.useRef(_extends({}, parentValue, stores));\n var value = mutableProviderRef.current;\n if (process.env.NODE_ENV !== \"production\") {\n var newValue = _extends({}, value, stores); // spread in previous state for the context based stores\n if (!shallowEqual(value, newValue)) {\n throw new Error(\"MobX Provider: The set of provided stores has changed. See: https://github.com/mobxjs/mobx-react#the-set-of-provided-stores-has-changed-error.\");\n }\n }\n return React__default.createElement(MobXProviderContext.Provider, {\n value: value\n }, children);\n}\nProvider.displayName = \"MobXProvider\";\n\n/**\n * Store Injection\n */\nfunction createStoreInjector(grabStoresFn, component, injectNames, makeReactive) {\n // Support forward refs\n var Injector = React__default.forwardRef(function (props, ref) {\n var newProps = _extends({}, props);\n var context = React__default.useContext(MobXProviderContext);\n Object.assign(newProps, grabStoresFn(context || {}, newProps) || {});\n if (ref) {\n newProps.ref = ref;\n }\n return React__default.createElement(component, newProps);\n });\n if (makeReactive) Injector = observer(Injector);\n Injector[\"isMobxInjector\"] = true; // assigned late to suppress observer warning\n // Static fields from component should be visible on the generated Injector\n copyStaticProperties(component, Injector);\n Injector[\"wrappedComponent\"] = component;\n Injector.displayName = getInjectName(component, injectNames);\n return Injector;\n}\nfunction getInjectName(component, injectNames) {\n var displayName;\n var componentName = component.displayName || component.name || component.constructor && component.constructor.name || \"Component\";\n if (injectNames) displayName = \"inject-with-\" + injectNames + \"(\" + componentName + \")\";else displayName = \"inject(\" + componentName + \")\";\n return displayName;\n}\nfunction grabStoresByName(storeNames) {\n return function (baseStores, nextProps) {\n storeNames.forEach(function (storeName) {\n if (storeName in nextProps // prefer props over stores\n ) return;\n if (!(storeName in baseStores)) throw new Error(\"MobX injector: Store '\" + storeName + \"' is not available! Make sure it is provided by some Provider\");\n nextProps[storeName] = baseStores[storeName];\n });\n return nextProps;\n };\n}\n/**\n * higher order component that injects stores to a child.\n * takes either a varargs list of strings, which are stores read from the context,\n * or a function that manually maps the available stores from the context to props:\n * storesToProps(mobxStores, props, context) => newProps\n */\nfunction inject() {\n for (var _len = arguments.length, storeNames = new Array(_len), _key = 0; _key < _len; _key++) {\n storeNames[_key] = arguments[_key];\n }\n if (typeof arguments[0] === \"function\") {\n var grabStoresFn = arguments[0];\n return function (componentClass) {\n return createStoreInjector(grabStoresFn, componentClass, grabStoresFn.name, true);\n };\n } else {\n return function (componentClass) {\n return createStoreInjector(grabStoresByName(storeNames), componentClass, storeNames.join(\"-\"), false);\n };\n }\n}\n\nvar reactMajorVersion = /*#__PURE__*/Number.parseInt( /*#__PURE__*/React__default.version.split(\".\")[0]);\nvar warnedAboutDisposeOnUnmountDeprecated = false;\nvar protoStoreKey = /*#__PURE__*/Symbol(\"disposeOnUnmountProto\");\nvar instStoreKey = /*#__PURE__*/Symbol(\"disposeOnUnmountInst\");\nfunction runDisposersOnWillUnmount() {\n var _this = this;\n [].concat(this[protoStoreKey] || [], this[instStoreKey] || []).forEach(function (propKeyOrFunction) {\n var prop = typeof propKeyOrFunction === \"string\" ? _this[propKeyOrFunction] : propKeyOrFunction;\n if (prop !== undefined && prop !== null) {\n if (Array.isArray(prop)) prop.map(function (f) {\n return f();\n });else prop();\n }\n });\n}\n/**\n * @deprecated `disposeOnUnmount` is not compatible with React 18 and higher.\n */\nfunction disposeOnUnmount(target, propertyKeyOrFunction) {\n if (Array.isArray(propertyKeyOrFunction)) {\n return propertyKeyOrFunction.map(function (fn) {\n return disposeOnUnmount(target, fn);\n });\n }\n if (!warnedAboutDisposeOnUnmountDeprecated) {\n if (reactMajorVersion >= 18) {\n console.error(\"[mobx-react] disposeOnUnmount is not compatible with React 18 and higher. Don't use it.\");\n } else {\n console.warn(\"[mobx-react] disposeOnUnmount is deprecated. It won't work correctly with React 18 and higher.\");\n }\n warnedAboutDisposeOnUnmountDeprecated = true;\n }\n var c = Object.getPrototypeOf(target).constructor;\n var c2 = Object.getPrototypeOf(target.constructor);\n // Special case for react-hot-loader\n var c3 = Object.getPrototypeOf(Object.getPrototypeOf(target));\n if (!(c === React__default.Component || c === React__default.PureComponent || c2 === React__default.Component || c2 === React__default.PureComponent || c3 === React__default.Component || c3 === React__default.PureComponent)) {\n throw new Error(\"[mobx-react] disposeOnUnmount only supports direct subclasses of React.Component or React.PureComponent.\");\n }\n if (typeof propertyKeyOrFunction !== \"string\" && typeof propertyKeyOrFunction !== \"function\" && !Array.isArray(propertyKeyOrFunction)) {\n throw new Error(\"[mobx-react] disposeOnUnmount only works if the parameter is either a property key or a function.\");\n }\n // decorator's target is the prototype, so it doesn't have any instance properties like props\n var isDecorator = typeof propertyKeyOrFunction === \"string\";\n // add property key / function we want run (disposed) to the store\n var componentWasAlreadyModified = !!target[protoStoreKey] || !!target[instStoreKey];\n var store = isDecorator ?\n // decorators are added to the prototype store\n target[protoStoreKey] || (target[protoStoreKey] = []) :\n // functions are added to the instance store\n target[instStoreKey] || (target[instStoreKey] = []);\n store.push(propertyKeyOrFunction);\n // tweak the component class componentWillUnmount if not done already\n if (!componentWasAlreadyModified) {\n patch(target, \"componentWillUnmount\", runDisposersOnWillUnmount);\n }\n // return the disposer as is if invoked as a non decorator\n if (typeof propertyKeyOrFunction !== \"string\") {\n return propertyKeyOrFunction;\n }\n}\n\n// Copied from React.PropTypes\nfunction createChainableTypeChecker(validator) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = new Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n rest[_key - 6] = arguments[_key];\n }\n return untracked(function () {\n componentName = componentName || \"<>\";\n propFullName = propFullName || propName;\n if (props[propName] == null) {\n if (isRequired) {\n var actual = props[propName] === null ? \"null\" : \"undefined\";\n return new Error(\"The \" + location + \" `\" + propFullName + \"` is marked as required \" + \"in `\" + componentName + \"`, but its value is `\" + actual + \"`.\");\n }\n return null;\n } else {\n // @ts-ignore rest arg is necessary for some React internals - fails tests otherwise\n return validator.apply(void 0, [props, propName, componentName, location, propFullName].concat(rest));\n }\n });\n }\n var chainedCheckType = checkType.bind(null, false);\n // Add isRequired to satisfy Requirable\n chainedCheckType.isRequired = checkType.bind(null, true);\n return chainedCheckType;\n}\n// Copied from React.PropTypes\nfunction isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === \"symbol\") {\n return true;\n }\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue[\"@@toStringTag\"] === \"Symbol\") {\n return true;\n }\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === \"function\" && propValue instanceof Symbol) {\n return true;\n }\n return false;\n}\n// Copied from React.PropTypes\nfunction getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return \"array\";\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return \"object\";\n }\n if (isSymbol(propType, propValue)) {\n return \"symbol\";\n }\n return propType;\n}\n// This handles more types than `getPropType`. Only used for error messages.\n// Copied from React.PropTypes\nfunction getPreciseType(propValue) {\n var propType = getPropType(propValue);\n if (propType === \"object\") {\n if (propValue instanceof Date) {\n return \"date\";\n } else if (propValue instanceof RegExp) {\n return \"regexp\";\n }\n }\n return propType;\n}\nfunction createObservableTypeCheckerCreator(allowNativeType, mobxType) {\n return createChainableTypeChecker(function (props, propName, componentName, location, propFullName) {\n return untracked(function () {\n if (allowNativeType) {\n if (getPropType(props[propName]) === mobxType.toLowerCase()) return null;\n }\n var mobxChecker;\n switch (mobxType) {\n case \"Array\":\n mobxChecker = isObservableArray;\n break;\n case \"Object\":\n mobxChecker = isObservableObject;\n break;\n case \"Map\":\n mobxChecker = isObservableMap;\n break;\n default:\n throw new Error(\"Unexpected mobxType: \" + mobxType);\n }\n var propValue = props[propName];\n if (!mobxChecker(propValue)) {\n var preciseType = getPreciseType(propValue);\n var nativeTypeExpectationMessage = allowNativeType ? \" or javascript `\" + mobxType.toLowerCase() + \"`\" : \"\";\n return new Error(\"Invalid prop `\" + propFullName + \"` of type `\" + preciseType + \"` supplied to\" + \" `\" + componentName + \"`, expected `mobx.Observable\" + mobxType + \"`\" + nativeTypeExpectationMessage + \".\");\n }\n return null;\n });\n });\n}\nfunction createObservableArrayOfTypeChecker(allowNativeType, typeChecker) {\n return createChainableTypeChecker(function (props, propName, componentName, location, propFullName) {\n for (var _len2 = arguments.length, rest = new Array(_len2 > 5 ? _len2 - 5 : 0), _key2 = 5; _key2 < _len2; _key2++) {\n rest[_key2 - 5] = arguments[_key2];\n }\n return untracked(function () {\n if (typeof typeChecker !== \"function\") {\n return new Error(\"Property `\" + propFullName + \"` of component `\" + componentName + \"` has \" + \"invalid PropType notation.\");\n } else {\n var error = createObservableTypeCheckerCreator(allowNativeType, \"Array\")(props, propName, componentName, location, propFullName);\n if (error instanceof Error) return error;\n var propValue = props[propName];\n for (var i = 0; i < propValue.length; i++) {\n error = typeChecker.apply(void 0, [propValue, i, componentName, location, propFullName + \"[\" + i + \"]\"].concat(rest));\n if (error instanceof Error) return error;\n }\n return null;\n }\n });\n });\n}\nvar observableArray = /*#__PURE__*/createObservableTypeCheckerCreator(false, \"Array\");\nvar observableArrayOf = /*#__PURE__*/createObservableArrayOfTypeChecker.bind(null, false);\nvar observableMap = /*#__PURE__*/createObservableTypeCheckerCreator(false, \"Map\");\nvar observableObject = /*#__PURE__*/createObservableTypeCheckerCreator(false, \"Object\");\nvar arrayOrObservableArray = /*#__PURE__*/createObservableTypeCheckerCreator(true, \"Array\");\nvar arrayOrObservableArrayOf = /*#__PURE__*/createObservableArrayOfTypeChecker.bind(null, true);\nvar objectOrObservableObject = /*#__PURE__*/createObservableTypeCheckerCreator(true, \"Object\");\nvar PropTypes = {\n observableArray: observableArray,\n observableArrayOf: observableArrayOf,\n observableMap: observableMap,\n observableObject: observableObject,\n arrayOrObservableArray: arrayOrObservableArray,\n arrayOrObservableArrayOf: arrayOrObservableArrayOf,\n objectOrObservableObject: objectOrObservableObject\n};\n\nif (!Component) {\n throw new Error(\"mobx-react requires React to be available\");\n}\nif (!observable) {\n throw new Error(\"mobx-react requires mobx to be available\");\n}\n\nexport { MobXProviderContext, PropTypes, Provider, disposeOnUnmount, inject, observer };\n//# sourceMappingURL=mobxreact.esm.js.map\n","\nimport React from 'react';\nimport { f7 } from 'framework7-react';\nimport { Dom7 } from 'framework7'\n\nclass WrapDevice {\n constructor(){\n const ua = navigator.userAgent,\n isMobile = /Mobile(\\/|\\s|;)/.test(ua);\n\n this.isPhone = /(iPhone|iPod)/.test(ua) ||\n (!/(Silk)/.test(ua) && (/(Android)/.test(ua) && !/Galaxy Tab S6|SCH-I800|Lenovo YT-X705X/.test(ua) && (/(Android 2)/.test(ua) || isMobile))) ||\n (/(BlackBerry|BB)/.test(ua) && isMobile) ||\n /(Windows Phone)/.test(ua);\n\n this.isTablet = !this.isPhone && (/iPad/.test(ua) || /Android/.test(ua) || /(RIM Tablet OS)/.test(ua) ||\n (/MSIE 10/.test(ua) && /; Touch/.test(ua)));\n }\n\n initDom() {\n const $$ = Dom7;\n if ( this.sailfish ) {\n $$('html').addClass('sailfish');\n }\n\n $$('html').addClass(this.phone ? 'phone' : 'tablet');\n // $$(window).on('resize', _.bind(this.onWindowResize, this));\n }\n\n get phone() {\n return this.isPhone\n }\n\n get tablet() {\n return this.isTablet\n }\n\n get sailfish() {\n return /Sailfish/.test(navigator.userAgent) || /Jolla/.test(navigator.userAgent);\n }\n\n get android() {\n return f7.device.android;\n }\n\n get ios() {\n return f7.device.ios;\n }\n}\n\nconst device = new WrapDevice();\nexport {device as Device};\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\n\n\nconst BlockTitle = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n large,\n medium\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const classes = classNames(className, 'block-title', {\n 'block-title-large': large,\n 'block-title-medium': medium\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children);\n});\nBlockTitle.displayName = 'f7-block-title';\nexport default BlockTitle;","import React from 'react';\nconst ListContext = /*#__PURE__*/React.createContext({\n listIsMedia: false,\n listIsSimple: false,\n listIsSortable: false,\n listIsSortableOpposite: false\n});\nexport { ListContext };","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, getSlots, flattenArray, emit, extend } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7, f7ready } from '../shared/f7.js';\nimport { ListContext } from '../shared/list-context.js';\nimport { useTab } from '../shared/use-tab.js';\n\n\nconst List = /*#__PURE__*/forwardRef((props, ref) => {\n const f7VirtualList = useRef(null);\n const {\n className,\n id,\n style,\n inset,\n insetIos,\n insetMd,\n xsmallInset,\n xsmallInsetIos,\n xsmallInsetMd,\n smallInset,\n smallInsetIos,\n smallInsetMd,\n mediumInset,\n mediumInsetIos,\n mediumInsetMd,\n largeInset,\n largeInsetIos,\n largeInsetMd,\n xlargeInset,\n xlargeInsetIos,\n xlargeInsetMd,\n strong,\n strongIos,\n strongMd,\n outline,\n outlineIos,\n outlineMd,\n dividers,\n dividersIos,\n dividersMd,\n mediaList,\n sortable,\n sortableTapHold,\n sortableEnabled,\n sortableMoveElements,\n sortableOpposite,\n accordionList,\n accordionOpposite,\n contactsList,\n simpleList,\n linksList,\n menuList,\n noChevron,\n chevronCenter,\n tab,\n tabActive,\n form,\n formStoreData,\n virtualList,\n virtualListParams\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const onSubmit = event => {\n emit(props, 'submit', event);\n };\n const onSortableEnable = el => {\n if (elRef.current !== el) return;\n emit(props, 'sortableEnable');\n };\n const onSortableDisable = el => {\n if (elRef.current !== el) return;\n emit(props, 'sortableDisable');\n };\n const onSortableSort = (el, sortData, listEl) => {\n if (elRef.current !== listEl) return;\n emit(props, 'sortableSort', sortData);\n };\n const onSortableMove = (el, listEl) => {\n if (elRef.current !== listEl) return;\n emit(props, 'sortableMove', el, listEl);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7VirtualList: () => f7VirtualList.current\n }));\n useTab(elRef, props);\n const attachEvents = () => {\n f7ready(() => {\n f7.on('sortableEnable', onSortableEnable);\n f7.on('sortableDisable', onSortableDisable);\n f7.on('sortableSort', onSortableSort);\n f7.on('sortableMove', onSortableMove);\n });\n };\n const detachEvents = () => {\n if (!f7) return;\n f7.off('sortableEnable', onSortableEnable);\n f7.off('sortableDisable', onSortableDisable);\n f7.off('sortableSort', onSortableSort);\n f7.off('sortableMove', onSortableMove);\n };\n const onMount = () => {\n f7ready(() => {\n if (!virtualList) return;\n const vlParams = virtualListParams || {};\n if (!vlParams.renderItem && !vlParams.renderExternal) return;\n f7VirtualList.current = f7.virtualList.create(extend({\n el: elRef.current,\n on: {\n itemBeforeInsert(itemEl, item) {\n const vl = this;\n emit(props, 'virtualItemBeforeInsert', vl, itemEl, item);\n },\n beforeClear(fragment) {\n const vl = this;\n emit(props, 'virtualBeforeClear', vl, fragment);\n },\n itemsBeforeInsert(fragment) {\n const vl = this;\n emit(props, 'virtualItemsBeforeInsert', vl, fragment);\n },\n itemsAfterInsert(fragment) {\n const vl = this;\n emit(props, 'virtualItemsAfterInsert', vl, fragment);\n }\n }\n }, vlParams));\n });\n };\n const onDestroy = () => {\n if (!f7) return;\n if (!(virtualList && f7VirtualList.current)) return;\n if (f7VirtualList.current.destroy) f7VirtualList.current.destroy();\n f7VirtualList.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n return detachEvents;\n });\n const slots = getSlots(props);\n const {\n list: slotsList,\n default: slotsDefault\n } = slots;\n const rootChildrenBeforeList = [];\n const rootChildrenAfterList = [];\n const ulChildren = slotsList || [];\n const flattenSlots = flattenArray(slotsDefault);\n let wasUlChild = false;\n flattenSlots.forEach(child => {\n if (typeof child === 'undefined') return;\n let tag = child.type && (child.type.displayName || child.type.name);\n if (!tag && typeof child.type === 'string') {\n tag = child.type;\n }\n if (!tag || tag && !(tag === 'li' || tag.indexOf('f7-list-item') >= 0 || tag.indexOf('f7-list-button') >= 0 || tag.indexOf('f7-list-input') >= 0)) {\n if (wasUlChild) rootChildrenAfterList.push(child);else rootChildrenBeforeList.push(child);\n } else if (tag) {\n wasUlChild = true;\n ulChildren.push(child);\n }\n });\n const ListTag = form ? 'form' : 'div';\n const classes = classNames(className, 'list', {\n inset,\n 'inset-ios': insetIos,\n 'inset-md': insetMd,\n 'xsmall-inset': xsmallInset,\n 'xsmall-inset-ios': xsmallInsetIos,\n 'xsmall-inset-md': xsmallInsetMd,\n 'small-inset': smallInset,\n 'small-inset-ios': smallInsetIos,\n 'small-inset-md': smallInsetMd,\n 'medium-inset': mediumInset,\n 'medium-inset-ios': mediumInsetIos,\n 'medium-inset-md': mediumInsetMd,\n 'large-inset': largeInset,\n 'large-inset-ios': largeInsetIos,\n 'large-inset-md': largeInsetMd,\n 'xlarge-inset': xlargeInset,\n 'xlarge-inset-ios': xlargeInsetIos,\n 'xlarge-inset-md': xlargeInsetMd,\n 'list-strong': strong,\n 'list-strong-ios': strongIos,\n 'list-strong-md': strongMd,\n 'list-outline': outline,\n 'list-outline-ios': outlineIos,\n 'list-outline-md': outlineMd,\n 'list-dividers': dividers,\n 'list-dividers-ios': dividersIos,\n 'list-dividers-md': dividersMd,\n 'media-list': mediaList,\n 'simple-list': simpleList,\n 'links-list': linksList,\n 'menu-list': menuList,\n sortable,\n 'sortable-tap-hold': sortableTapHold,\n 'sortable-enabled': sortableEnabled,\n 'sortable-opposite': sortableOpposite,\n 'accordion-list': accordionList,\n 'accordion-opposite': accordionOpposite,\n 'contacts-list': contactsList,\n 'virtual-list': virtualList,\n tab,\n 'tab-active': tabActive,\n 'form-store-data': formStoreData,\n 'no-chevron': noChevron,\n 'chevron-center': chevronCenter\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(ListTag, _extends({\n id: id,\n ref: elRef,\n style: style,\n className: classes\n }, extraAttrs, {\n \"data-sortable-move-elements\": typeof sortableMoveElements !== 'undefined' ? sortableMoveElements.toString() : undefined,\n onSubmit: onSubmit\n }), /*#__PURE__*/React.createElement(ListContext.Provider, {\n value: {\n listIsMedia: mediaList,\n listIsSimple: simpleList,\n listIsSortable: sortable,\n listIsSortableOpposite: sortableOpposite\n }\n }, slots['before-list'], rootChildrenBeforeList, ulChildren.length > 0 && /*#__PURE__*/React.createElement(\"ul\", null, ulChildren), slots['after-list'], rootChildrenAfterList));\n});\nList.displayName = 'f7-list';\nexport default List;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, getSlots, noUndefinedProps, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { watchProp } from '../shared/watch-prop.js';\n\n\nconst TextEditor = /*#__PURE__*/forwardRef((props, ref) => {\n const f7TextEditor = useRef(null);\n const {\n className,\n id,\n style,\n mode,\n value,\n buttons,\n customButtons,\n dividers,\n imageUrlText,\n linkUrlText,\n placeholder,\n clearFormattingOnPaste,\n resizable = false\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const onChange = (editor, editorValue) => {\n emit(props, 'textEditorChange', editorValue);\n };\n const onInput = (editor, editorValue) => {\n emit(props, 'textEditorInput', editorValue);\n };\n const onFocus = () => {\n emit(props, 'textEditorFocus');\n };\n const onBlur = () => {\n emit(props, 'textEditorBlur');\n };\n const onButtonClick = (editor, button) => {\n emit(props, 'textEditorButtonClick', button);\n };\n const onKeyboardOpen = () => {\n emit(props, 'textEditorKeyboardOpen');\n };\n const onKeyboardClose = () => {\n emit(props, 'textEditorKeyboardClose');\n };\n const onPopoverOpen = () => {\n emit(props, 'textEditorPopoverOpen');\n };\n const onPopoverClose = () => {\n emit(props, 'textEditorPopoverClose');\n };\n const onInsertLink = (editor, url) => {\n emit(props, 'textEditorInsertLink', url);\n };\n const onInsertImage = (editor, url) => {\n emit(props, 'textEditorInsertImage', url);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7TextEditor: () => f7TextEditor.current\n }));\n watchProp(value, newValue => {\n if (f7TextEditor.current) {\n f7TextEditor.current.setValue(newValue);\n }\n });\n const onMount = () => {\n const params = noUndefinedProps({\n el: elRef.current,\n mode,\n value,\n buttons,\n customButtons,\n dividers,\n imageUrlText,\n linkUrlText,\n placeholder,\n clearFormattingOnPaste,\n on: {\n change: onChange,\n input: onInput,\n focus: onFocus,\n blur: onBlur,\n buttonClick: onButtonClick,\n keyboardOpen: onKeyboardOpen,\n keyboardClose: onKeyboardClose,\n popoverOpen: onPopoverOpen,\n popoverClose: onPopoverClose,\n insertLink: onInsertLink,\n insertImage: onInsertImage\n }\n });\n f7ready(() => {\n f7TextEditor.current = f7.textEditor.create(params);\n });\n };\n const onDestroy = () => {\n if (f7TextEditor.current && f7TextEditor.current.destroy) {\n f7TextEditor.current.destroy();\n }\n f7TextEditor.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n const slots = getSlots(props);\n const classes = classNames(className, 'text-editor', resizable && 'text-editor-resizable', colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: elRef,\n id: id,\n style: style,\n className: classes\n }, extraAttrs), slots['root-start'], /*#__PURE__*/React.createElement(\"div\", {\n className: \"text-editor-content\",\n contentEditable: true\n }, slots.default), slots['root-end'], slots.root);\n});\nTextEditor.displayName = 'f7-text-editor';\nexport default TextEditor;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle, useState, useContext } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit, getSlots, extend } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport TextEditor from './text-editor.js';\nimport { watchProp } from '../shared/watch-prop.js';\nimport { ListContext } from '../shared/list-context.js';\n\n\nconst ListInput = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n sortable,\n media,\n dropdown = 'auto',\n wrap = true,\n // Inputs\n input: renderInput = true,\n type = 'text',\n name,\n value,\n defaultValue,\n inputmode,\n readonly,\n required,\n disabled,\n placeholder,\n inputId,\n size,\n accept,\n autocomplete,\n autocorrect,\n autocapitalize,\n spellcheck,\n autofocus,\n autosave,\n max,\n min,\n step,\n maxlength,\n minlength,\n multiple,\n inputStyle,\n pattern,\n validate,\n validateOnBlur,\n onValidate,\n tabindex,\n resizable,\n clearButton,\n // Form\n noFormStoreData,\n noStoreData,\n ignoreStoreData,\n // Error, Info\n errorMessage,\n errorMessageForce,\n info,\n // Outline\n outline,\n // Label\n label,\n floatingLabel,\n // Datepicker\n calendarParams,\n // Colorpicker\n colorPickerParams,\n // Text editor\n textEditorParams\n } = props;\n const [inputInvalid, setInputInvalid] = useState(false);\n const [inputFocused, setInputFocused] = useState(false);\n const listContext = useContext(ListContext);\n const {\n listIsSortable = false\n } = listContext || {};\n const extraAttrs = getExtraAttrs(props);\n const f7Calendar = useRef(null);\n const f7ColorPicker = useRef(null);\n const elRef = useRef(null);\n const inputElRef = useRef(null);\n const itemContentElRef = useRef(null);\n const updateInputOnDidUpdate = useRef(false);\n const getDomValue = () => {\n if (!inputElRef.current) return undefined;\n return inputElRef.current.value;\n };\n const isInputHasValue = () => {\n if (type === 'datepicker' && Array.isArray(value) && value.length === 0) {\n return false;\n }\n const domValue = getDomValue();\n return typeof value === 'undefined' ? domValue || domValue === 0 : value || value === 0;\n };\n const validateInput = () => {\n if (!f7 || !inputElRef.current) return;\n const validity = inputElRef.current.validity;\n if (!validity) return;\n if (!validity.valid) {\n if (onValidate) onValidate(false);\n if (inputInvalid !== true) {\n setInputInvalid(true);\n }\n } else {\n if (onValidate) onValidate(true);\n if (inputInvalid !== false) {\n setInputInvalid(false);\n }\n }\n };\n const onTextareaResize = event => {\n emit(props, 'textareaResize', event);\n };\n const onInputNotEmpty = event => {\n emit(props, 'inputNotEmpty', event);\n };\n const onInputEmpty = event => {\n emit(props, 'inputEmpty', event);\n };\n const onInputClear = event => {\n emit(props, 'inputClear', event);\n };\n const onInput = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n emit(props, 'input', ...args);\n if (!(validateOnBlur || validateOnBlur === '') && (validate || validate === '') && inputElRef.current) {\n validateInput(inputElRef.current);\n }\n };\n const onFocus = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n emit(props, 'focus', ...args);\n setInputFocused(true);\n };\n const onBlur = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n emit(props, 'blur', ...args);\n if ((validate || validate === '' || validateOnBlur || validateOnBlur === '') && inputElRef.current) {\n validateInput(inputElRef.current);\n }\n setInputFocused(false);\n };\n const onChange = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n emit(props, 'change', ...args);\n if (type === 'texteditor') {\n emit(props, 'textEditorChange', args[0]);\n }\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const onMount = () => {\n if (!elRef.current && !itemContentElRef.current) return;\n f7ready(() => {\n if (!inputElRef.current) return;\n inputElRef.current.addEventListener('input:notempty', onInputNotEmpty, false);\n inputElRef.current.addEventListener('textarea:resize', onTextareaResize, false);\n inputElRef.current.addEventListener('input:empty', onInputEmpty, false);\n inputElRef.current.addEventListener('input:clear', onInputClear, false);\n if (type === 'datepicker') {\n f7Calendar.current = f7.calendar.create({\n inputEl: inputElRef.current,\n value,\n on: {\n change(calendar, calendarValue) {\n emit(props, 'calendarChange', calendarValue);\n }\n },\n ...(calendarParams || {})\n });\n }\n if (type === 'colorpicker') {\n f7ColorPicker.current = f7.colorPicker.create({\n inputEl: inputElRef.current,\n value,\n on: {\n change(colorPicker, colorPickerValue) {\n emit(props, 'colorpicker:change colorPickerChange', colorPickerValue);\n }\n },\n ...(colorPickerParams || {})\n });\n }\n if (!(validateOnBlur || validateOnBlur === '') && (validate || validate === '') && (typeof value !== 'undefined' && value !== null && value !== '' || typeof defaultValue !== 'undefined' && defaultValue !== null && defaultValue !== '')) {\n setTimeout(() => {\n validateInput();\n }, 0);\n }\n if (type === 'textarea' && resizable) {\n f7.input.resizeTextarea(inputElRef.current);\n }\n });\n };\n const onDestroy = () => {\n if (inputElRef.current) {\n inputElRef.current.removeEventListener('input:notempty', onInputNotEmpty, false);\n inputElRef.current.removeEventListener('textarea:resize', onTextareaResize, false);\n inputElRef.current.removeEventListener('input:empty', onInputEmpty, false);\n inputElRef.current.removeEventListener('input:clear', onInputClear, false);\n }\n if (f7Calendar.current && f7Calendar.current.destroy) {\n f7Calendar.current.destroy();\n f7Calendar.current = null;\n }\n if (f7ColorPicker.current && f7ColorPicker.current.destroy) {\n f7ColorPicker.current.destroy();\n f7ColorPicker.current = null;\n }\n };\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n useIsomorphicLayoutEffect(() => {\n if (!f7) return;\n if (updateInputOnDidUpdate.current) {\n if (!inputElRef.current) return;\n updateInputOnDidUpdate.current = false;\n if (validate && !validateOnBlur) {\n validateInput();\n }\n if (type === 'textarea' && resizable) {\n f7.input.resizeTextarea(inputElRef.current);\n }\n }\n });\n watchProp(colorPickerParams, newValue => {\n if (!f7 || !f7ColorPicker.current) return;\n extend(f7ColorPicker.current.params, newValue || {});\n });\n watchProp(calendarParams, newValue => {\n if (!f7 || !f7Calendar.current) return;\n extend(f7Calendar.current.params, newValue || {});\n });\n watchProp(value, newValue => {\n if (!f7) return;\n updateInputOnDidUpdate.current = true;\n if (f7Calendar.current) {\n f7Calendar.current.setValue(newValue);\n }\n if (f7ColorPicker.current) {\n f7ColorPicker.current.setValue(newValue);\n }\n });\n const slots = getSlots(props);\n const domValue = getDomValue();\n const inputHasValue = isInputHasValue();\n const isSortableComputed = sortable === true || sortable === false ? sortable : listIsSortable;\n let inputEl;\n const createInput = (InputTag, children) => {\n const needsValue = type !== 'file' && type !== 'datepicker' && type !== 'colorpicker';\n const needsType = InputTag === 'input';\n let inputType = type;\n if (inputType === 'datepicker' || inputType === 'colorpicker') {\n inputType = 'text';\n }\n const inputClassName = classNames({\n resizable: inputType === 'textarea' && resizable,\n 'no-store-data': noFormStoreData || noStoreData || ignoreStoreData,\n 'input-invalid': errorMessage && errorMessageForce || inputInvalid,\n 'input-with-value': inputHasValue,\n 'input-focused': inputFocused\n });\n let inputValue;\n if (needsValue) {\n if (typeof value !== 'undefined') inputValue = value;else inputValue = domValue;\n }\n const valueProps = {};\n if (type !== 'datepicker' && type !== 'colorpicker') {\n if ('value' in props) valueProps.value = inputValue;\n if ('defaultValue' in props) valueProps.defaultValue = defaultValue;\n }\n return /*#__PURE__*/React.createElement(InputTag, _extends({\n ref: inputElRef,\n style: inputStyle,\n name: name,\n type: needsType ? inputType : undefined,\n placeholder: placeholder,\n inputMode: inputmode,\n id: inputId,\n size: size,\n accept: accept,\n autoComplete: autocomplete,\n autoCorrect: autocorrect,\n autoCapitalize: autocapitalize,\n spellCheck: spellcheck,\n autoFocus: autofocus,\n autoSave: autosave,\n disabled: disabled,\n max: max,\n maxLength: maxlength,\n min: min,\n minLength: minlength,\n step: step,\n multiple: multiple,\n readOnly: readonly,\n required: required,\n pattern: pattern,\n validate: typeof validate === 'string' && validate.length ? validate : undefined,\n \"data-validate\": validate === true || validate === '' || validateOnBlur === true || validateOnBlur === '' ? true : undefined,\n \"data-validate-on-blur\": validateOnBlur === true || validateOnBlur === '' ? true : undefined,\n tabIndex: tabindex,\n \"data-error-message\": errorMessageForce ? undefined : errorMessage,\n className: inputClassName,\n onFocus: onFocus,\n onBlur: onBlur,\n onInput: onInput,\n onChange: onChange\n }, valueProps), children);\n };\n if (renderInput) {\n if (type === 'select' || type === 'textarea' || type === 'file') {\n if (type === 'select') {\n inputEl = createInput('select', slots.default);\n } else if (type === 'file') {\n inputEl = createInput('input');\n } else {\n inputEl = createInput('textarea');\n }\n } else if (type === 'texteditor') {\n inputEl = /*#__PURE__*/React.createElement(TextEditor, _extends({\n value: value,\n resizable: resizable,\n placeholder: placeholder,\n onTextEditorFocus: onFocus,\n onTextEditorBlur: onBlur,\n onTextEditorInput: onInput,\n onTextEditorChange: onChange\n }, textEditorParams || {}));\n } else {\n inputEl = createInput('input');\n }\n }\n const hasErrorMessage = !!errorMessage || slots['error-message'] && slots['error-message'].length;\n const ItemContent = /*#__PURE__*/React.createElement(\"div\", {\n ref: itemContentElRef,\n className: classNames('item-content item-input', !wrap && className, !wrap && {\n disabled\n }, !wrap && colorClasses(props), {\n 'item-input-outline': outline,\n 'item-input-focused': inputFocused,\n 'item-input-with-info': !!info || slots.info && slots.info.length,\n 'item-input-with-value': inputHasValue,\n 'item-input-with-error-message': hasErrorMessage && errorMessageForce || inputInvalid,\n 'item-input-invalid': hasErrorMessage && errorMessageForce || inputInvalid\n })\n }, slots['content-start'], (media || slots.media) && /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-media\"\n }, media && /*#__PURE__*/React.createElement(\"img\", {\n src: media\n }), slots.media), /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-inner\"\n }, slots['inner-start'], (label || slots.label) && /*#__PURE__*/React.createElement(\"div\", {\n className: classNames('item-title item-label', {\n 'item-floating-label': floatingLabel\n })\n }, label, slots.label), /*#__PURE__*/React.createElement(\"div\", {\n className: classNames('item-input-wrap', {\n 'input-dropdown': dropdown === 'auto' ? type === 'select' : dropdown\n })\n }, inputEl, slots.input, hasErrorMessage && errorMessageForce && /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-input-error-message\"\n }, errorMessage, slots['error-message']), clearButton && /*#__PURE__*/React.createElement(\"span\", {\n className: \"input-clear-button\"\n }), (info || slots.info) && /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-input-info\"\n }, info, slots.info)), slots.inner, slots['inner-end']), slots.content, slots['content-end']);\n if (!wrap) {\n return ItemContent;\n }\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n ref: elRef,\n id: id,\n style: style,\n className: classNames(className, {\n disabled\n }, colorClasses(props))\n }, extraAttrs), slots['root-start'], ItemContent, isSortableComputed && /*#__PURE__*/React.createElement(\"div\", {\n className: \"sortable-handler\"\n }), slots.root, slots['root-end']);\n});\nListInput.displayName = 'f7-list-input';\nexport default ListInput;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs, isStringProp, emit } from '../shared/utils.js';\nimport { colorClasses, actionsAttrs, actionsClasses, routerAttrs, routerClasses } from '../shared/mixins.js';\nimport { useTooltip } from '../shared/use-tooltip.js';\nimport { useRouteProps } from '../shared/use-route-props.js';\n\n\nconst ListButton = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n title,\n text,\n tabLink,\n tabLinkActive,\n link,\n href,\n target\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const linkElRef = useRef(null);\n const onClick = e => {\n emit(props, 'click', e);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n useTooltip(linkElRef, props);\n useRouteProps(linkElRef, props);\n const linkAttrs = {\n href: typeof link === 'boolean' && typeof href === 'boolean' ? '#' : link || href,\n target,\n 'data-tab': isStringProp(tabLink) && tabLink,\n ...routerAttrs(props),\n ...actionsAttrs(props)\n };\n const linkClasses = classNames({\n 'list-button': true,\n 'tab-link': tabLink || tabLink === '',\n 'tab-link-active': tabLinkActive,\n ...colorClasses(props),\n ...routerClasses(props),\n ...actionsClasses(props)\n });\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n id: id,\n style: style,\n className: className,\n ref: elRef\n }, extraAttrs), /*#__PURE__*/React.createElement(\"a\", _extends({\n className: linkClasses\n }, linkAttrs, {\n onClick: onClick,\n ref: linkElRef\n }), title, text, children));\n});\nListButton.displayName = 'f7-list-button';\nexport default ListButton;","import React, { useRef, useEffect } from 'react';\nimport { classNames } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport Badge from './badge.js';\nconst ListItemContent = props => {\n const {\n indeterminate,\n radio,\n checkbox,\n value,\n name,\n readonly,\n disabled,\n checked,\n defaultChecked,\n required,\n media,\n header,\n footer,\n title,\n subtitle,\n text,\n after,\n badge,\n badgeColor,\n checkboxIcon,\n radioIcon,\n swipeout,\n sortable,\n accordionItem,\n onChange,\n onClick,\n isMediaComputed,\n isSortableComputed,\n isSortableOppositeComputed,\n slots\n } = props;\n const inputElRef = useRef(null);\n useEffect(() => {\n if (inputElRef.current) {\n inputElRef.current.indeterminate = !!indeterminate;\n }\n }, [indeterminate]);\n let titleEl;\n let afterWrapEl;\n let afterEl;\n let badgeEl;\n let innerEl;\n let titleRowEl;\n let subtitleEl;\n let textEl;\n let mediaEl;\n let inputEl;\n let inputIconEl;\n let headerEl;\n let footerEl;\n\n // Input\n if (radio || checkbox) {\n inputEl = /*#__PURE__*/React.createElement(\"input\", {\n ref: inputElRef,\n value: value,\n name: name,\n checked: checked,\n defaultChecked: defaultChecked,\n readOnly: readonly,\n disabled: disabled,\n required: required,\n type: radio ? 'radio' : 'checkbox',\n onChange: onChange\n });\n inputIconEl = /*#__PURE__*/React.createElement(\"i\", {\n className: `icon icon-${radio ? 'radio' : 'checkbox'}`\n });\n }\n // Media\n if (media || slots.media) {\n let mediaImgEl;\n if (media) {\n mediaImgEl = /*#__PURE__*/React.createElement(\"img\", {\n src: media\n });\n }\n mediaEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-media\"\n }, mediaImgEl, slots.media);\n }\n // Inner Elements\n if (header || slots.header) {\n headerEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-header\"\n }, header, slots.header);\n }\n if (footer || slots.footer) {\n footerEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-footer\"\n }, footer, slots.footer);\n }\n if (title || slots.title || !isMediaComputed && headerEl || !isMediaComputed && footerEl) {\n titleEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-title\"\n }, !isMediaComputed && headerEl, title, slots.title, !isMediaComputed && footerEl);\n }\n if (subtitle || slots.subtitle) {\n subtitleEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-subtitle\"\n }, subtitle, slots.subtitle);\n }\n if (text || slots.text) {\n textEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-text\"\n }, text, slots.text);\n }\n if (after || badge || slots.after) {\n if (after) {\n afterEl = /*#__PURE__*/React.createElement(\"span\", null, after);\n }\n if (badge) {\n badgeEl = /*#__PURE__*/React.createElement(Badge, {\n color: badgeColor\n }, badge);\n }\n afterWrapEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-after\"\n }, slots['after-start'], afterEl, badgeEl, slots.after, slots['after-end']);\n }\n if (isMediaComputed) {\n titleRowEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-title-row\"\n }, slots['before-title'], titleEl, slots['after-title'], afterWrapEl);\n innerEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-inner\"\n }, slots['inner-start'], headerEl, titleRowEl, subtitleEl, textEl, swipeout || accordionItem ? null : slots.default, slots.inner, footerEl, slots['inner-end']);\n } else {\n innerEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-inner\"\n }, slots['inner-start'], slots['before-title'], titleEl, slots['after-title'], afterWrapEl, swipeout || accordionItem ? null : slots.default, slots.inner, slots['inner-end']);\n }\n const ItemContentTag = checkbox || radio ? 'label' : 'div';\n const classes = classNames('item-content', {\n 'item-checkbox': checkbox,\n 'item-radio': radio,\n 'item-checkbox-icon-start': checkbox && checkboxIcon === 'start',\n 'item-checkbox-icon-end': checkbox && checkboxIcon === 'end',\n 'item-radio-icon-start': radio && radioIcon === 'start',\n 'item-radio-icon-end': radio && radioIcon === 'end'\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(ItemContentTag, {\n className: classes,\n onClick: onClick\n }, isSortableComputed && sortable !== false && isSortableOppositeComputed && /*#__PURE__*/React.createElement(\"div\", {\n className: \"sortable-handler\"\n }), slots['content-start'], inputEl, inputIconEl, mediaEl, innerEl, slots.content, slots['content-end']);\n};\nListItemContent.displayName = 'f7-list-item-content';\nexport default ListItemContent;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle, useContext } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, getSlots, emit, isStringProp } from '../shared/utils.js';\nimport { colorClasses, actionsAttrs, actionsClasses, routerAttrs, routerClasses } from '../shared/mixins.js';\nimport { useRouteProps } from '../shared/use-route-props.js';\nimport { useSmartSelect } from '../shared/use-smart-select.js';\nimport { useTooltip } from '../shared/use-tooltip.js';\nimport { watchProp } from '../shared/watch-prop.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport ListItemContent from './list-item-content.js';\nimport { ListContext } from '../shared/list-context.js';\n\n\n\n/*\nconst ListItemContent = ({\n props,\n slots,\n inputElRef,\n onChange,\n onClick,\n isMediaComputed,\n isSortableComputed,\n isSortableOppositeComputed,\n} = {}) => {\n const {\n radio,\n checkbox,\n value,\n name,\n readonly,\n disabled,\n checked,\n defaultChecked,\n required,\n media,\n header,\n footer,\n title,\n subtitle,\n text,\n after,\n badge,\n badgeColor,\n checkboxIcon,\n radioIcon,\n swipeout,\n sortable,\n accordionItem,\n } = props;\n\n};\n*/\nconst ListItem = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n title,\n link,\n target,\n tabLink,\n tabLinkActive,\n selected,\n mediaItem,\n mediaList,\n groupTitle,\n swipeout,\n swipeoutOpened,\n sortable,\n sortableOpposite,\n accordionItem,\n accordionItemOpened,\n smartSelect,\n smartSelectParams,\n noChevron,\n chevronCenter,\n checkbox,\n radio,\n disabled,\n virtualListIndex,\n href\n } = props;\n const listContext = useContext(ListContext);\n const {\n listIsMedia = false,\n listIsSortable = false,\n listIsSortableOpposite = false,\n listIsSimple = false\n } = listContext || {};\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const linkElRef = useRef(null);\n const f7SmartSelect = useRef(null);\n const onClick = event => {\n if (event.target.tagName.toLowerCase() !== 'input') {\n emit(props, 'click', event);\n }\n };\n const onSwipeoutOverswipeEnter = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutOverswipeEnter');\n };\n const onSwipeoutOverswipeExit = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutOverswipeExit');\n };\n const onSwipeoutDeleted = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutDeleted');\n };\n const onSwipeoutDelete = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutDelete');\n };\n const onSwipeoutClose = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutClose');\n };\n const onSwipeoutClosed = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutClosed');\n };\n const onSwipeoutOpen = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutOpen');\n };\n const onSwipeoutOpened = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutOpened');\n };\n const onSwipeout = (el, progress) => {\n if (elRef.current !== el) return;\n emit(props, 'swipeout', progress);\n };\n const onAccBeforeClose = (el, prevent) => {\n if (elRef.current !== el) return;\n emit(props, 'accordionBeforeClose', prevent);\n };\n const onAccClose = el => {\n if (elRef.current !== el) return;\n emit(props, 'accordionClose');\n };\n const onAccClosed = el => {\n if (elRef.current !== el) return;\n emit(props, 'accordionClosed');\n };\n const onAccBeforeOpen = (el, prevent) => {\n if (elRef.current !== el) return;\n emit(props, 'accordionBeforeOpen', prevent);\n };\n const onAccOpen = el => {\n if (elRef.current !== el) return;\n emit(props, 'accordionOpen');\n };\n const onAccOpened = el => {\n if (elRef.current !== el) return;\n emit(props, 'accordionOpened');\n };\n const onChange = event => {\n emit(props, 'change', event);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7SmartSelect: () => f7SmartSelect.current\n }));\n useTooltip(elRef, props);\n useRouteProps(linkElRef, props);\n watchProp(swipeoutOpened, newValue => {\n if (!swipeout || !elRef.current || !f7) return;\n if (newValue) {\n f7.swipeout.open(elRef.current);\n } else {\n f7.swipeout.close(elRef.current);\n }\n });\n const attachEvents = () => {\n f7ready(() => {\n if (swipeout) {\n f7.on('swipeoutOpen', onSwipeoutOpen);\n f7.on('swipeoutOpened', onSwipeoutOpened);\n f7.on('swipeoutClose', onSwipeoutClose);\n f7.on('swipeoutClosed', onSwipeoutClosed);\n f7.on('swipeoutDelete', onSwipeoutDelete);\n f7.on('swipeoutDeleted', onSwipeoutDeleted);\n f7.on('swipeoutOverswipeEnter', onSwipeoutOverswipeEnter);\n f7.on('swipeoutOverswipeExit', onSwipeoutOverswipeExit);\n f7.on('swipeout', onSwipeout);\n }\n if (accordionItem) {\n f7.on('accordionBeforeOpen', onAccBeforeOpen);\n f7.on('accordionOpen', onAccOpen);\n f7.on('accordionOpened', onAccOpened);\n f7.on('accordionBeforeClose', onAccBeforeClose);\n f7.on('accordionClose', onAccClose);\n f7.on('accordionClosed', onAccClosed);\n }\n });\n };\n const detachEvents = () => {\n if (!f7) return;\n f7.off('swipeoutOpen', onSwipeoutOpen);\n f7.off('swipeoutOpened', onSwipeoutOpened);\n f7.off('swipeoutClose', onSwipeoutClose);\n f7.off('swipeoutClosed', onSwipeoutClosed);\n f7.off('swipeoutDelete', onSwipeoutDelete);\n f7.off('swipeoutDeleted', onSwipeoutDeleted);\n f7.off('swipeoutOverswipeEnter', onSwipeoutOverswipeEnter);\n f7.off('swipeoutOverswipeExit', onSwipeoutOverswipeExit);\n f7.off('swipeout', onSwipeout);\n f7.off('accordionBeforeOpen', onAccBeforeOpen);\n f7.off('accordionOpen', onAccOpen);\n f7.off('accordionOpened', onAccOpened);\n f7.off('accordionBeforeClose', onAccBeforeClose);\n f7.off('accordionClose', onAccClose);\n f7.off('accordionClosed', onAccClosed);\n };\n useSmartSelect(smartSelect, smartSelectParams, f7SmartSelect, () => elRef.current.querySelector('a.smart-select'));\n useIsomorphicLayoutEffect(() => {\n f7ready(() => {\n if (swipeout && swipeoutOpened) {\n f7.swipeout.open(elRef.current);\n }\n });\n }, []);\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n return detachEvents;\n });\n const slots = getSlots(props);\n let linkEl;\n let itemContentEl;\n const isMediaComputed = mediaItem || mediaList || listIsMedia;\n const isSortableComputed = sortable === true || sortable === false ? sortable : listIsSortable;\n const isSortableOppositeComputed = isSortableComputed && (sortableOpposite || listIsSortableOpposite);\n if (!listIsSimple) {\n // Item Content\n itemContentEl = /*#__PURE__*/React.createElement(ListItemContent, _extends({}, props, {\n slots: slots,\n onChange: onChange,\n onClick: link || href || accordionItem || smartSelect ? undefined : onClick,\n isMediaComputed: isMediaComputed,\n isSortableComputed: isSortableComputed,\n isSortableOppositeComputed: isSortableOppositeComputed\n }));\n\n // Link\n if (link || href || accordionItem || smartSelect) {\n const linkAttrs = {\n href: link === true ? '' : link || href,\n target,\n 'data-tab': isStringProp(tabLink) && tabLink || undefined,\n ...routerAttrs(props),\n ...actionsAttrs(props)\n };\n const linkClasses = classNames({\n 'item-link': true,\n 'smart-select': smartSelect,\n 'tab-link': tabLink || tabLink === '',\n 'tab-link-active': tabLinkActive,\n 'item-selected': selected\n }, routerClasses(props), actionsClasses(props));\n linkEl = /*#__PURE__*/React.createElement(\"a\", _extends({\n ref: linkElRef,\n className: linkClasses\n }, linkAttrs, {\n onClick: onClick\n }), itemContentEl);\n }\n }\n const liClasses = classNames(className, {\n 'list-group-title': groupTitle,\n 'media-item': isMediaComputed,\n swipeout,\n 'accordion-item': accordionItem,\n 'accordion-item-opened': accordionItemOpened,\n disabled: disabled && !(radio || checkbox),\n 'no-chevron': noChevron,\n 'chevron-center': chevronCenter,\n 'disallow-sorting': sortable === false\n }, colorClasses(props));\n if (groupTitle) {\n return /*#__PURE__*/React.createElement(\"li\", {\n ref: elRef,\n id: id,\n style: style,\n className: liClasses,\n \"data-virtual-list-index\": virtualListIndex,\n onClick: onClick\n }, /*#__PURE__*/React.createElement(\"span\", null, title, children));\n }\n if (listIsSimple) {\n return /*#__PURE__*/React.createElement(\"li\", {\n ref: elRef,\n id: id,\n style: style,\n className: liClasses,\n \"data-virtual-list-index\": virtualListIndex,\n onClick: onClick\n }, title, children);\n }\n const linkItemEl = link || href || smartSelect || accordionItem ? linkEl : itemContentEl;\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n ref: elRef,\n id: id,\n style: style,\n className: liClasses,\n \"data-virtual-list-index\": virtualListIndex\n }, extraAttrs), slots['root-start'], swipeout ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"swipeout-content\"\n }, linkItemEl) : linkItemEl, isSortableComputed && sortable !== false && !isSortableOppositeComputed && /*#__PURE__*/React.createElement(\"div\", {\n className: \"sortable-handler\"\n }), (swipeout || accordionItem) && slots.default, slots.root, slots['root-end']);\n});\nListItem.displayName = 'f7-list-item';\nexport default ListItem;","import React, {useState} from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport {List, ListItem, Page, Navbar, Icon, ListButton, ListInput, BlockTitle} from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\n\nconst PageLinkSettings = props => {\n const { t } = useTranslation();\n const _t = t('Add', {returnObjects: true});\n const [stateValue, setValue] = useState('');\n return (\n \n \n {_t.textAddress}\n \n {setValue(event.target.value)}}\n >\n \n \n \n {props.onInsertByUrl(stateValue)}}>\n \n \n )\n};\n\nconst AddImage = props => {\n const { t } = useTranslation();\n const _t = t('Add', {returnObjects: true});\n return (\n \n \n \n {props.onInsertByFile()}}>\n \n \n \n \n \n \n \n )\n};\n\nexport {AddImage, PageLinkSettings as PageImageLinkSettings};","import React, {Component} from 'react';\nimport { f7 } from 'framework7-react';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport { withTranslation} from 'react-i18next';\n\nimport {AddImage} from '../../view/add/AddImage';\n\nclass AddImageController extends Component {\n constructor (props) {\n super(props);\n this.onInsertByFile = this.onInsertByFile.bind(this);\n this.onInsertByUrl = this.onInsertByUrl.bind(this);\n }\n\n closeModal () {\n if ( Device.phone ) {\n f7.sheet.close('.add-popup', true);\n } else {\n f7.popover.close('#add-popover');\n }\n }\n\n onInsertByFile () {\n const api = Common.EditorApi.get();\n api.asc_addImage();\n this.closeModal();\n }\n\n onInsertByUrl (value) {\n const { t } = this.props;\n const _t = t(\"Add\", { returnObjects: true });\n\n const _value = value.replace(/ /g, '');\n\n if (_value) {\n if ((/((^https?)|(^ftp)):\\/\\/.+/i.test(_value))) {\n this.closeModal();\n const api = Common.EditorApi.get();\n api.AddImageUrl([_value]);\n } else {\n f7.dialog.alert(_t.txtNotUrl, _t.notcriticalErrorTitle);\n }\n } else {\n f7.dialog.alert(_t.textEmptyImgUrl, _t.notcriticalErrorTitle);\n }\n }\n\n render () {\n return (\n \n )\n }\n}\n\nconst AddImageWithTranslation = withTranslation()(AddImageController);\n\nexport {AddImageWithTranslation as AddImageController};","import React, {useState} from 'react';\nimport {List, Page, Navbar, Icon, ListButton, ListInput, NavRight, Link, NavLeft, f7, NavTitle} from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from \"../../../../../common/mobile/utils/device\";\n\nconst PageLink = props => {\n const { t } = useTranslation();\n const _t = t('Add', {returnObjects: true});\n\n let display = props.getDisplayLinkText();\n display = typeof display === 'string' ? display : '';\n\n const [stateLink, setLink] = useState('');\n const [stateDisplay, setDisplay] = useState(display);\n const [stateTip, setTip] = useState('');\n const [stateAutoUpdate, setAutoUpdate] = useState(!stateDisplay ? true : false);\n \n return (\n \n \n \n {\n props.isNavigate ? f7.views.current.router.back() : props.closeModal('#add-link-popup', '#add-link-popover');\n }}>\n {Device.android && }\n \n \n {t('Add.textLinkSettings')}\n \n {\n props.onInsertLink(stateLink, stateDisplay, stateTip);\n }} text={Device.ios ? t('Add.textDone') : ''}>\n {Device.android && }\n \n \n \n \n {\n setLink(event.target.value); \n if(stateAutoUpdate) setDisplay(event.target.value); \n }}\n >\n {\n setDisplay(event.target.value); \n setAutoUpdate(event.target.value == ''); \n }}\n >\n {setTip(event.target.value)}}\n >\n \n {/* \n {\n props.onInsertLink(stateLink, stateDisplay)\n }}>\n */}\n \n )\n};\n\nexport {PageLink as PageAddLink};","import React, {Component} from 'react';\nimport { f7, Popup, Popover, View } from 'framework7-react';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport { withTranslation} from 'react-i18next';\n\nimport {PageAddLink} from '../../view/add/AddLink';\n\nclass AddLinkController extends Component {\n constructor (props) {\n super(props);\n\n this.onInsertLink = this.onInsertLink.bind(this);\n this.closeModal = this.closeModal.bind(this);\n }\n\n closeModal(mobileSelector, tabletSelector) {\n if (Device.phone) {\n f7.popup.close(mobileSelector);\n } else {\n f7.popover.close(tabletSelector);\n }\n }\n\n getDisplayLinkText () {\n const api = Common.EditorApi.get();\n return api.can_AddHyperlink();\n }\n\n onInsertLink (url, display, tip) {\n const api = Common.EditorApi.get();\n const { t } = this.props;\n const _t = t(\"Add\", { returnObjects: true });\n const urltype = api.asc_getUrlType(url.trim());\n\n if (urltype===AscCommon.c_oAscUrlType.Invalid) {\n f7.dialog.create({\n title: _t.notcriticalErrorTitle,\n text: _t.txtNotUrl,\n buttons: [\n {\n text: t('Add.textOk')\n }\n ]\n }).open();\n return;\n }\n\n let _url = url.replace(/^\\s+|\\s+$/g,'');\n\n if (urltype!==AscCommon.c_oAscUrlType.Unsafe && ! /(((^https?)|(^ftp)):\\/\\/)|(^mailto:)/i.test(_url) )\n _url = (urltype===AscCommon.c_oAscUrlType.Email ? 'mailto:' : 'http://' ) + _url;\n\n _url = _url.replace(new RegExp(\"%20\",'g'),\" \");\n\n const props = new Asc.CHyperlinkProperty();\n\n props.put_Value(_url);\n props.put_Text(!display ? _url : display);\n props.put_ToolTip(tip);\n\n api.add_Hyperlink(props);\n\n if(this.props.isNavigate) {\n this.closeModal('.add-popup', '#add-popover');\n } else {\n this.closeModal('#add-link-popup', '#add-link-popover');\n }\n }\n\n componentDidMount() {\n if(!this.props.isNavigate) {\n if(Device.phone) {\n f7.popup.open('#add-link-popup', true);\n } else {\n f7.popover.open('#add-link-popover', '#btn-add');\n }\n }\n }\n\n render () {\n return (\n !this.props.isNavigate ?\n Device.phone ?\n this.props.closeOptions('add-link')}>\n \n \n :\n this.props.closeOptions('add-link')}>\n \n \n \n \n :\n \n )\n }\n}\n\nconst AddLinkWithTranslation = withTranslation()(AddLinkController);\n\nexport {AddLinkWithTranslation as AddLinkController};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\n\n\nconst Segmented = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n raised,\n raisedIos,\n raisedMd,\n round,\n roundIos,\n roundMd,\n strong,\n strongIos,\n strongMd,\n tag = 'div'\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const classes = classNames(className, {\n segmented: true,\n 'segmented-raised': raised,\n 'segmented-raised-ios': raisedIos,\n 'segmented-raised-md': raisedMd,\n 'segmented-round': round,\n 'segmented-round-ios': roundIos,\n 'segmented-round-md': roundMd,\n 'segmented-strong': strong,\n 'segmented-strong-ios': strongIos,\n 'segmented-strong-md': strongMd\n }, colorClasses(props));\n const SegmentedTag = tag;\n return /*#__PURE__*/React.createElement(SegmentedTag, _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children, (strong || strongIos || strongMd) && /*#__PURE__*/React.createElement(\"span\", {\n className: \"segmented-highlight\"\n }));\n});\nSegmented.displayName = 'f7-segmented';\nexport default Segmented;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs, extend, isStringProp, emit } from '../shared/utils.js';\nimport { colorClasses, actionsAttrs, actionsClasses, routerAttrs, routerClasses } from '../shared/mixins.js';\nimport { useTooltip } from '../shared/use-tooltip.js';\nimport { useIcon } from '../shared/use-icon.js';\nimport { useRouteProps } from '../shared/use-route-props.js';\nimport Preloader from './preloader.js';\n\n\nconst Button = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n text,\n type,\n href = '#',\n target,\n tabLink,\n tabLinkActive,\n round,\n roundIos,\n roundMd,\n fill,\n fillIos,\n fillMd,\n tonal,\n tonalIos,\n tonalMd,\n large,\n largeIos,\n largeMd,\n small,\n smallIos,\n smallMd,\n raised,\n raisedIos,\n raisedMd,\n active,\n outline,\n outlineIos,\n outlineMd,\n disabled,\n preloader,\n preloaderSize,\n preloaderColor,\n loading\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const onClick = e => {\n emit(props, 'click', e);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n useTooltip(elRef, props);\n useRouteProps(elRef, props);\n const getClasses = () => {\n return classNames(className, 'button', {\n 'tab-link': tabLink || tabLink === '',\n 'tab-link-active': tabLinkActive,\n 'button-round': round,\n 'button-round-ios': roundIos,\n 'button-round-md': roundMd,\n 'button-fill': fill,\n 'button-fill-ios': fillIos,\n 'button-fill-md': fillMd,\n 'button-tonal': tonal,\n 'button-tonal-ios': tonalIos,\n 'button-tonal-md': tonalMd,\n 'button-large': large,\n 'button-large-ios': largeIos,\n 'button-large-md': largeMd,\n 'button-small': small,\n 'button-small-ios': smallIos,\n 'button-small-md': smallMd,\n 'button-raised': raised,\n 'button-raised-ios': raisedIos,\n 'button-raised-md': raisedMd,\n 'button-active': active,\n 'button-outline': outline,\n 'button-outline-ios': outlineIos,\n 'button-outline-md': outlineMd,\n 'button-preloader': preloader,\n 'button-loading': loading,\n disabled\n }, colorClasses(props), routerClasses(props), actionsClasses(props));\n };\n const ButtonTag = type === 'submit' || type === 'reset' || type === 'button' ? 'button' : 'a';\n const getAttrs = () => {\n let hrefComputed = href;\n if (href === true) hrefComputed = '#';\n if (href === false || ButtonTag === 'button') hrefComputed = undefined; // no href attribute\n return extend({\n href: hrefComputed,\n target,\n type,\n 'data-tab': isStringProp(tabLink) && tabLink || undefined\n }, routerAttrs(props), actionsAttrs(props));\n };\n const iconEl = useIcon(props);\n let textEl;\n if (text) {\n textEl = /*#__PURE__*/React.createElement(\"span\", null, text);\n }\n if (preloader) {\n return /*#__PURE__*/React.createElement(ButtonTag, _extends({\n ref: elRef,\n id: id,\n style: style,\n className: getClasses()\n }, getAttrs(), extraAttrs, {\n onClick: onClick\n }), /*#__PURE__*/React.createElement(Preloader, {\n size: preloaderSize,\n color: preloaderColor\n }), /*#__PURE__*/React.createElement(\"span\", null, iconEl, textEl, children));\n }\n return /*#__PURE__*/React.createElement(ButtonTag, _extends({\n ref: elRef,\n id: id,\n style: style,\n className: getClasses()\n }, getAttrs(), extraAttrs, {\n onClick: onClick\n }), iconEl, textEl, children);\n});\nButton.displayName = 'f7-button';\nexport default Button;","import React, {useState} from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport {List, ListItem, Page, Navbar, Icon, ListButton, ListInput, BlockTitle, Segmented, Button} from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from \"../../../../../common/mobile/utils/device\";\n\nconst PageNumber = props => {\n const { t } = useTranslation();\n const _t = t('Add', {returnObjects: true});\n return (\n \n \n \n {props.onInsertPageNumber('lt')}}>\n {props.onInsertPageNumber('ct')}}>\n {props.onInsertPageNumber('rt')}}>\n {props.onInsertPageNumber('lb')}}>\n {props.onInsertPageNumber('cb')}}>\n {props.onInsertPageNumber('rb')}}>\n {props.onInsertPageNumber('current')}}>\n \n \n )\n};\n\nconst PageBreak = props => {\n const { t } = useTranslation();\n const _t = t('Add', {returnObjects: true});\n return (\n \n \n \n {\n props.onPageBreak()\n }}>\n \n \n {\n props.onColumnBreak();\n }}>\n \n \n \n \n \n \n \n )\n};\n\nconst PageSectionBreak = props => {\n const { t } = useTranslation();\n const _t = t('Add', {returnObjects: true});\n return (\n \n \n \n {\n props.onInsertSectionBreak('next')\n }}>\n {\n props.onInsertSectionBreak('continuous')\n }}>\n {\n props.onInsertSectionBreak('even')\n }}>\n {\n props.onInsertSectionBreak('odd')\n }}>\n \n \n )\n};\n\nconst PageFootnote = props => {\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const _t = t('Add', {returnObjects: true});\n\n const dataFormatFootnote = [\n { text: '1, 2, 3,...', value: Asc.c_oAscNumberingFormat.Decimal },\n { text: 'a, b, c,...', value: Asc.c_oAscNumberingFormat.LowerLetter },\n { text: 'A, B, C,...', value: Asc.c_oAscNumberingFormat.UpperLetter },\n { text: 'i, ii, iii,...', value: Asc.c_oAscNumberingFormat.LowerRoman },\n { text: 'I, II, III,...', value: Asc.c_oAscNumberingFormat.UpperRoman }\n ];\n const dataPosFootnote = [\n {value: Asc.c_oAscFootnotePos.PageBottom, displayValue: _t.textBottomOfPage },\n {value: Asc.c_oAscFootnotePos.BeneathText, displayValue: _t.textBelowText }\n ];\n\n const [stateStartAt, setStartAt] = useState(props.initFootnoteStartAt());\n const [stateLocation, setLocation] = useState(props.getFootnoteProps().propsPos);\n const [stateFormat, setFormat] = useState(props.getFootnoteProps().propsFormat);\n\n return (\n \n \n {_t.textFormat}\n \n {dataFormatFootnote.map((format, index)=>{\n return (\n {\n setStartAt(props.getFootnoteStartAt(format.value, stateStartAt));\n setFormat(format.value)\n }}>\n )\n })}\n \n \n \n {!isAndroid &&
          {stateStartAt}
          }\n
          \n \n \n {isAndroid && }\n \n \n
          \n
          \n
          \n {_t.textLocation}\n \n {dataPosFootnote.map((location, index)=>{\n return (\n {setLocation(location.value)}}>\n )\n })}\n \n \n {\n props.onInsertFootnote(stateFormat, stateStartAt, stateLocation);\n }}>\n \n
          \n )\n};\n\nconst AddOther = props => {\n const { t } = useTranslation();\n const _t = t('Add', {returnObjects: true});\n const storeFocusObjects = props.storeFocusObjects;\n const storeLinkSettings = props.storeLinkSettings;\n const canAddLink = storeLinkSettings.canAddLink;\n\n let isShape = storeFocusObjects.settings.indexOf('shape') > -1,\n isText = storeFocusObjects.settings.indexOf('text') > -1,\n isChart = storeFocusObjects.settings.indexOf('chart') > -1,\n isHyperLink = storeFocusObjects.settings.indexOf('hyperlink') > -1,\n isHeader = storeFocusObjects.settings.indexOf('header') > -1;\n\n let disabledAddLink = false,\n disabledAddBreak = false,\n disabledAddFootnote = false,\n disabledAddPageNumber = false,\n inFootnote = props.inFootnote,\n inControl = props.inControl, \n paragraphLocked = props.paragraphLocked, \n controlPlain = props.controlPlain,\n richDelLock = props.richDelLock,\n richEditLock = props.richEditLock,\n plainDelLock = props.plainDelLock,\n plainEditLock = props.plainEditLock;\n\n disabledAddBreak = paragraphLocked || inFootnote || inControl || richEditLock || plainEditLock || richDelLock || plainDelLock;\n disabledAddFootnote = paragraphLocked || controlPlain || richEditLock || plainEditLock;\n disabledAddLink = paragraphLocked || !canAddLink;\n disabledAddPageNumber = controlPlain;\n\n return (\n \n {isText && {\n props.closeModal();\n Common.Notifications.trigger('addcomment');\n }}>\n \n }\n \n \n \n {(isText && !disabledAddLink) && \n \n }\n {!disabledAddPageNumber &&\n \n \n \n }\n {(isShape || isChart) || (isText && disabledAddBreak) ? null :\n \n \n \n }\n {!isHeader && \n \n \n \n } \n {(isShape || isChart) || (isText && disabledAddFootnote) ? null :\n \n \n \n }\n \n )\n};\n\nconst AddOtherContainer = inject(\"storeComments\",\"storeFocusObjects\", \"storeLinkSettings\")(observer(AddOther));\n\nexport {AddOtherContainer as AddOther,\n PageNumber as PageAddNumber,\n PageBreak as PageAddBreak,\n PageSectionBreak as PageAddSectionBreak,\n PageFootnote as PageAddFootnote};","import React, { PureComponent } from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport {List, ListItem, Page, Navbar, Icon, ListButton, ListInput, BlockTitle} from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\n\nconst AddTableContents = props => {\n const { t } = useTranslation();\n const _t = t('Add', {returnObjects: true});\n\n return (\n \n \n {_t.textWithPageNumbers}\n
          props.onTableContents(0)}>
          \n {_t.textWithBlueLinks}\n
          props.onTableContents(1)}>
          \n
          \n ) \n};\n\nexport {AddTableContents}\n","import React, {Component} from 'react';\nimport { f7 } from 'framework7-react';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport {AddTableContents} from '../../view/add/AddTableContents';\n\nclass AddTableContentsController extends Component {\n constructor (props) {\n super(props);\n this.onTableContents = this.onTableContents.bind(this);\n }\n\n closeModal () {\n if ( Device.phone ) {\n f7.sheet.close('.add-popup', true);\n } else {\n f7.popover.close('#add-popover');\n }\n }\n\n componentDidMount () {\n const api = Common.EditorApi.get();\n const widthImage = !Device.phone ? 330 : window.innerWidth - 30;\n api.asc_getButtonsTOC('toc1', 'toc2', widthImage);\n }\n\n onTableContents(type, currentTOC) {\n const api = Common.EditorApi.get();\n let props = api.asc_GetTableOfContentsPr(currentTOC);\n\n switch (type) {\n case 0:\n if (!props) {\n props = new Asc.CTableOfContentsPr();\n props.put_OutlineRange(1, 9);\n }\n props.put_Hyperlink(true);\n props.put_ShowPageNumbers(true);\n props.put_RightAlignTab(true);\n props.put_TabLeader(Asc.c_oAscTabLeader.Dot);\n api.asc_AddTableOfContents(null, props);\n break;\n case 1:\n if (!props) {\n props = new Asc.CTableOfContentsPr();\n props.put_OutlineRange(1, 9);\n }\n props.put_Hyperlink(true);\n props.put_ShowPageNumbers(false);\n props.put_TabLeader(Asc.c_oAscTabLeader.None);\n props.put_StylesType(Asc.c_oAscTOCStylesType.Web);\n api.asc_AddTableOfContents(null, props);\n break;\n }\n\n this.closeModal();\n }\n\n render () {\n return (\n \n )\n }\n}\n\nexport default AddTableContentsController;","import React, {Fragment, useState} from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport {List, ListInput, ListButton, Page, f7, Link, Navbar, NavLeft, NavTitle, NavRight, Icon} from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from \"../../../../../common/mobile/utils/device\";\n\nconst EditHyperlink = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const linkObject = props.storeFocusObjects.linkObject;\n let link = '', display = '', tip = '';\n\n if(linkObject) {\n link = linkObject.get_Value() ? linkObject.get_Value().replace(new RegExp(\" \", 'g'), \"%20\") : '';\n display = !(linkObject.get_Text() === null) ? linkObject.get_Text() : '';\n tip = linkObject.get_ToolTip();\n }\n\n const [stateLink, setLink] = useState(link);\n const [stateDisplay, setDisplay] = useState(display);\n const [stateTip, setTip] = useState(tip);\n\n return (\n \n \n \n {\n props.isNavigate ? f7.views.current.router.back() : props.closeModal();\n }}>\n {Device.android && }\n \n \n {t('Add.textLinkSettings')}\n \n {\n props.onEditLink(stateLink, stateDisplay, stateTip);\n }} text={Device.ios ? t('Add.textDone') : ''}>\n {Device.android && }\n \n \n \n \n {setLink(event.target.value)}}\n >\n {setDisplay(event.target.value)}}\n >\n {setTip(event.target.value)}}\n >\n \n \n {/* {\n props.onEditLink(stateLink, stateDisplay)\n }}> */}\n {\n props.onRemoveLink();\n props.isNavigate ? f7.views.current.router.back() : props.closeModal();\n }} />\n \n \n )\n};\n\nexport default inject(\"storeFocusObjects\")(observer(EditHyperlink));","import React, {Component} from 'react';\nimport { f7, Popover, Popup, View } from 'framework7-react';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport {observer, inject} from \"mobx-react\";\nimport { withTranslation } from 'react-i18next';\n\nimport EditHyperlink from '../../view/edit/EditHyperlink';\n\nclass EditHyperlinkController extends Component {\n constructor (props) {\n super(props);\n\n this.onRemoveLink = this.onRemoveLink.bind(this);\n this.onEditLink = this.onEditLink.bind(this);\n this.closeModal = this.closeModal.bind(this);\n }\n\n closeModal () {\n if ( Device.phone ) {\n f7.popup.close('#edit-link-popup');\n } else {\n f7.popover.close('#edit-link-popover');\n }\n }\n\n onEditLink (link, display, tip) {\n const api = Common.EditorApi.get();\n\n if (api) {\n const urltype = api.asc_getUrlType(link.trim());\n if (urltype===AscCommon.c_oAscUrlType.Invalid) {\n const { t } = this.props;\n \n f7.dialog.create({\n title: t('Edit.notcriticalErrorTitle'),\n text: t('Edit.textNotUrl'),\n buttons: [\n {\n text: t('Edit.textOk')\n }\n ]\n }).open();\n \n return;\n }\n\n let url = link.replace(/^\\s+|\\s+$/g,'');\n if (urltype!==AscCommon.c_oAscUrlType.Unsafe && ! /(((^https?)|(^ftp)):\\/\\/)|(^mailto:)/i.test(url) ) {\n url = (urltype===AscCommon.c_oAscUrlType.Email ? 'mailto:' : 'http://') + url;\n }\n\n url = url.replace(new RegExp(\"%20\",'g'),\" \");\n\n const props = new Asc.CHyperlinkProperty();\n\n props.put_Value(url);\n props.put_Text(display.trim().length < 1 ? url : display);\n props.put_ToolTip(tip);\n\n const linkObject = this.props.storeFocusObjects.linkObject;\n\n if (linkObject) {\n props.put_InternalHyperlink(linkObject.get_InternalHyperlink());\n }\n\n api.change_Hyperlink(props);\n this.props.isNavigate ? f7.views.current.router.back() : this.closeModal();\n }\n }\n\n onRemoveLink () {\n const api = Common.EditorApi.get();\n if (api) {\n const linkObject = this.props.storeFocusObjects.linkObject;\n api.remove_Hyperlink(linkObject);\n }\n }\n\n componentDidMount() {\n if(!this.props.isNavigate) {\n if(Device.phone) {\n f7.popup.open('#edit-link-popup', true);\n } else {\n f7.popover.open('#edit-link-popover', '#btn-add');\n }\n }\n }\n\n render () {\n return (\n !this.props.isNavigate ?\n Device.phone ?\n this.props.closeOptions('edit-link')}>\n \n \n :\n this.props.closeOptions('edit-link')}>\n \n \n \n \n : \n \n ) \n }\n}\n\nexport default withTranslation()(inject(\"storeFocusObjects\")(observer(EditHyperlinkController)));","import React from 'react';\nconst TabsSwipeableContext = /*#__PURE__*/React.createContext(false);\nexport { TabsSwipeableContext };","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { TabsSwipeableContext } from '../shared/tabs-swipeable-context.js';\n\n\nconst Tabs = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n animated,\n swipeable,\n routable,\n swiperParams\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n useIsomorphicLayoutEffect(() => {\n if (!swipeable || !swiperParams) return;\n if (!elRef.current) return;\n Object.assign(elRef.current, swiperParams);\n elRef.current.initialize();\n }, []);\n const classes = classNames(className, colorClasses(props));\n const tabsClasses = classNames({\n tabs: true,\n 'tabs-routable': routable\n });\n if (animated) {\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classNames('tabs-animated-wrap', classes),\n ref: elRef\n }, extraAttrs), /*#__PURE__*/React.createElement(\"div\", {\n className: tabsClasses\n }, children));\n }\n if (swipeable) {\n return /*#__PURE__*/React.createElement(\"swiper-container\", _extends({\n id: id,\n style: style,\n class: classNames(tabsClasses, classes),\n ref: elRef,\n init: swiperParams ? 'false' : 'true'\n }, extraAttrs), /*#__PURE__*/React.createElement(TabsSwipeableContext.Provider, {\n value: true\n }, children));\n }\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classNames(tabsClasses, classes),\n ref: elRef\n }, extraAttrs), children);\n});\nTabs.displayName = 'f7-tabs';\nexport default Tabs;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle, useState, useContext } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, getComponentId } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7routers, f7, f7events } from '../shared/f7.js';\nimport { useTab } from '../shared/use-tab.js';\nimport { RouterContext } from '../shared/router-context.js';\nimport { useAsyncComponent } from '../shared/use-async-component.js';\nimport { TabsSwipeableContext } from '../shared/tabs-swipeable-context.js';\n\n\nconst Tab = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n tabActive\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const routerData = useRef(null);\n const routerContext = useContext(RouterContext);\n const tabsSwipeableContext = useContext(TabsSwipeableContext);\n let initialTabContent = null;\n if (!routerData.current && routerContext && routerContext.route && routerContext.route.route && routerContext.route.route.tab && routerContext.route.route.tab.id === id) {\n const {\n component,\n asyncComponent,\n options: tabRouteOptions\n } = routerContext.route.route.tab;\n if (component || asyncComponent) {\n const parentProps = routerContext.route.route.options && routerContext.route.route.options.props;\n initialTabContent = {\n id: getComponentId(),\n component: component || asyncComponent,\n isAsync: !!asyncComponent,\n props: {\n ...(parentProps || {}),\n ...(tabRouteOptions && tabRouteOptions.props || {}),\n f7router: routerContext.router,\n f7route: routerContext.route,\n ...routerContext.route.params\n }\n };\n }\n }\n const [tabContent, setTabContent] = useState(initialTabContent || null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n if (f7 && !routerData.current) {\n routerData.current = {\n setTabContent\n };\n f7routers.tabs.push(routerData.current);\n }\n const onMount = () => {\n if (elRef.current && initialTabContent) {\n elRef.current.f7RouterTabLoaded = true;\n }\n f7ready(() => {\n if (!routerData.current) {\n routerData.current = {\n el: elRef.current,\n setTabContent\n };\n f7routers.tabs.push(routerData.current);\n } else {\n routerData.current.el = elRef.current;\n }\n });\n };\n const onDestroy = () => {\n if (!routerData.current) return;\n f7routers.tabs.splice(f7routers.tabs.indexOf(routerData.current), 1);\n routerData.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n useIsomorphicLayoutEffect(() => {\n if (!routerData.current || !f7) return;\n f7events.emit('tabRouterDidUpdate', routerData.current);\n });\n useTab(elRef, props);\n const classes = classNames(className, 'tab', {\n 'tab-active': tabActive\n }, colorClasses(props));\n const renderChildren = () => {\n if (!tabContent) return children;\n if (tabContent.isAsync) {\n return useAsyncComponent(tabContent.component, tabContent.props, tabContent.id);\n }\n const TabContent = tabContent.component;\n return /*#__PURE__*/React.createElement(TabContent, _extends({\n key: tabContent.id\n }, tabContent.props));\n };\n const Component = tabsSwipeableContext ? 'swiper-slide' : 'div';\n const classAttrs = tabsSwipeableContext ? {\n class: classes\n } : {\n className: classes\n };\n return /*#__PURE__*/React.createElement(Component, _extends({\n id: id,\n style: style,\n ref: elRef\n }, extraAttrs, classAttrs), renderChildren());\n});\nTab.displayName = 'f7-tab';\nexport default Tab;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\n\nconst SkeletonBlock = ({\n tag: Tag = 'div',\n width,\n height,\n borderRadius,\n effect,\n className,\n style,\n children,\n ...other\n} = {}) => {\n const skeletonStyle = style || {};\n if (width) skeletonStyle.width = width;\n if (height) skeletonStyle.height = height;\n if (borderRadius) skeletonStyle.borderRadius = borderRadius;\n const skeletonClassName = ['skeleton-block', effect && `skeleton-effect-${effect}`, className].filter(c => !!c).join(' ');\n return /*#__PURE__*/React.createElement(Tag, _extends({\n style: skeletonStyle,\n className: skeletonClassName\n }, other), children);\n};\n\nexport default SkeletonBlock;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\nimport multiplySvgPoints from '../utils/multiply-svg-points.js';\n\nconst SkeletonAvatar = ({\n tag: Tag = 'span',\n size = 48,\n color,\n showIcon = true,\n iconColor,\n borderRadius = '50%',\n effect,\n className,\n children,\n ...other\n} = {}) => {\n const skeletonClassName = ['skeleton-avatar', effect && `skeleton-effect-${effect}`, className].filter(c => !!c).join(' ');\n\n function multiplyPoints(pointsString) {\n return multiplySvgPoints(pointsString, 56, size, size);\n }\n\n return /*#__PURE__*/React.createElement(Tag, _extends({\n className: skeletonClassName\n }, other), /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: `0 0 ${size} ${size}`,\n preserveAspectRatio: \"none\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: size,\n height: size,\n fillRule: \"evenodd\",\n style: {\n fill: color\n },\n rx: borderRadius\n }), showIcon && /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: iconColor\n },\n d: multiplyPoints('M28.22461,27.1590817 C34.9209931,27.1590817 40.6829044,21.1791004 40.6829044,13.3926332 C40.6829044,5.69958662 34.8898972,0 28.22461,0 C21.5594557,0 15.7663156,5.82423601 15.7663156,13.4549579 C15.7663156,21.1791004 21.5594557,27.1590817 28.22461,27.1590817 Z M8.66515427,56 L47.7841986,56 C52.6739629,56 54.4181241,54.5984253 54.4181241,51.8576005 C54.4181241,43.8219674 44.358068,32.7341519 28.22461,32.7341519 C12.0600561,32.7341519 2,43.8219674 2,51.8576005 C2,54.5984253 3.74402832,56 8.66515427,56 Z')\n })), children);\n};\n\nexport default SkeletonAvatar;","// eslint-disable-next-line\nimport { SkeletonBlock } from 'skeleton-elements/react';\nexport default SkeletonBlock;","import React, {Fragment, useState} from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport {Page, Navbar, List, ListItem, ListButton, Row, BlockTitle,SkeletonBlock, Range, Toggle, Icon} from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from '../../../../../common/mobile/utils/device';\n\nconst AddTable = props => {\n const storeTableSettings = props.storeTableSettings;\n const styles = storeTableSettings.arrayStylesDefault;\n\n return (\n
          \n
            \n {!styles.length ?\n Array.from({ length: 70 }).map((item,index) => (\n
          • \n \n \n \n \n \n
          • \n )) :\n styles.map((style, index) => {\n return (\n
          • {props.onStyleClick(style.templateId)}}>\n \n
          • \n )\n })\n }\n
          \n
          \n )\n};\n\nexport default inject(\"storeTableSettings\")(observer(AddTable));","import React, {Component} from 'react';\nimport { f7 } from 'framework7-react';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport {observer, inject} from \"mobx-react\";\nimport { withTranslation } from 'react-i18next';\nimport AddTable from '../../view/add/AddTable';\n\nclass AddTableController extends Component {\n constructor (props) {\n super(props);\n this.onStyleClick = this.onStyleClick.bind(this);\n }\n\n closeModal () {\n if ( Device.phone ) {\n f7.sheet.close('.add-popup', true);\n } else {\n f7.popover.close('#add-popover');\n }\n }\n\n onStyleClick (type) {\n const api = Common.EditorApi.get();\n\n this.closeModal();\n\n const { t } = this.props;\n const _t = t(\"Add\", { returnObjects: true });\n\n let picker;\n\n const dialog = f7.dialog.create({\n title: _t.textTableSize,\n text: '',\n content:\n '
          ' +\n '
          ' +\n '
          ' + _t.textColumns + '
          ' +\n '
          ' + _t.textRows + '
          ' +\n '
          ' +\n '
          ' +\n '
          ',\n buttons: [\n {\n text: _t.textCancel\n },\n {\n text: 'OK',\n bold: true,\n onClick: function () {\n const size = picker.value;\n\n api.put_Table(parseInt(size[0]), parseInt(size[1]), type.toString());\n }\n }\n ],\n on: {\n open: () => {\n picker = f7.picker.create({\n containerEl: document.getElementById('picker-table-size'),\n cols: [\n {\n textAlign: 'center',\n width: '100%',\n values: [1,2,3,4,5,6,7,8,9,10]\n },\n {\n textAlign: 'center',\n width: '100%',\n values: [1,2,3,4,5,6,7,8,9,10]\n }\n ],\n toolbar: false,\n rotateEffect: true,\n value: [3, 3]\n });\n }\n }\n }).open();\n }\n\n render () {\n return (\n \n )\n }\n}\n\nconst AddTableWithTranslation = inject('storeTableSettings')(observer(withTranslation()(AddTableController)));\n\nexport {AddTableWithTranslation as AddTableController};","import React from 'react';\nimport {observer, inject} from \"mobx-react\";\n\nconst AddShape = props => {\n const storeShapeSettings = props.storeShapeSettings;\n let shapes = storeShapeSettings.getStyleGroups();\n return (\n
          \n {shapes.map((row, indexRow) => {\n return (\n
            \n {row.map((shape, index) => {\n return (\n
          • {props.onShapeClick(shape.type)}}>\n
            \n
            \n
          • \n )\n })}\n
          \n )\n })}\n
          \n )\n};\n\nexport default inject(\"storeShapeSettings\")(observer(AddShape));","import React, {Component} from 'react';\nimport { f7 } from 'framework7-react';\nimport {Device} from '../../../../../common/mobile/utils/device';\n\nimport AddShape from '../../view/add/AddShape';\n\nclass AddShapeController extends Component {\n constructor (props) {\n super(props);\n this.onShapeClick = this.onShapeClick.bind(this);\n }\n\n closeModal () {\n if ( Device.phone ) {\n f7.sheet.close('.add-popup', true);\n } else {\n f7.popover.close('#add-popover');\n }\n }\n\n onShapeClick (type) {\n const api = Common.EditorApi.get();\n api.AddShapeOnCurrentPage(type);\n this.closeModal();\n }\n\n render () {\n return (\n \n )\n }\n}\n\nexport default AddShapeController;","import React, {Component} from 'react';\nimport { f7 } from 'framework7-react';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport { withTranslation} from 'react-i18next';\nimport {AddOther} from '../../view/add/AddOther';\n\n// footnote converting metods\nconst _10toS = (value) => {\n value = parseInt(value);\n let n = Math.ceil(value / 26),\n code = String.fromCharCode((value-1) % 26 + \"A\".charCodeAt(0)) ,\n result = '';\n for (var i=0; i {\n if ( str.length<1 || (new RegExp('[^' + str.charAt(0) + ']')).test(str) || !/[A-Z]/.test(str)) return 1;\n let n = str.length-1,\n result = str.charCodeAt(0) - \"A\".charCodeAt(0) + 1;\n result += 26*n;\n return result;\n};\nconst _10toRome = (value) => {\n value = parseInt(value);\n let result = '',\n digits = [['M', 1000], ['CM', 900], ['D', 500], ['CD', 400], ['C', 100], ['XC', 90], ['L', 50], ['XL', 40], ['X', 10], ['IX', 9], ['V', 5], ['IV', 4], ['I', 1]];\n let val = digits[0][1],\n div = Math.floor(value / val),\n n = 0;\n for (var i=0; i0) {\n val = digits[n][1];\n div = value - val;\n if (div>=0) {\n result += digits[n][0];\n value = div;\n } else\n n++;\n }\n return result;\n};\nconst _Rometo10 = (str) => {\n if ( !/[IVXLCDM]/.test(str) || str.length<1 ) return 1;\n let digits = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000};\n var n = str.length-1,\n result = digits[str.charAt(n)],\n prev = result;\n for (var i=n-1; i>=0; i-- ) {\n var val = digits[str.charAt(i)];\n if (val10) return 1;\n val *= -1;\n }\n result += val;\n prev = Math.abs(val);\n }\n return result;\n};\n\nclass AddOtherController extends Component {\n constructor (props) {\n super(props);\n this.onInsertPageNumber = this.onInsertPageNumber.bind(this);\n this.onPageBreak = this.onPageBreak.bind(this);\n this.onColumnBreak = this.onColumnBreak.bind(this);\n this.onInsertSectionBreak = this.onInsertSectionBreak.bind(this);\n this.getFootnoteStartAt = this.getFootnoteStartAt.bind(this);\n this.onFootnoteStartAt = this.onFootnoteStartAt.bind(this);\n this.onInsertFootnote = this.onInsertFootnote.bind(this);\n this.initFootnoteStartAt = this.initFootnoteStartAt.bind(this);\n this.getFootnoteProps = this.getFootnoteProps.bind(this);\n }\n\n closeModal () {\n if ( Device.phone ) {\n f7.sheet.close('.add-popup', true);\n } else {\n f7.popover.close('#add-popover');\n }\n }\n\n onInsertPageNumber (type) {\n const api = Common.EditorApi.get();\n\n let value = -1;\n\n if (2 == type.length) {\n const c_pageNumPosition = {\n PAGE_NUM_POSITION_TOP: 0x01,\n PAGE_NUM_POSITION_BOTTOM: 0x02,\n PAGE_NUM_POSITION_RIGHT: 0,\n PAGE_NUM_POSITION_LEFT: 1,\n PAGE_NUM_POSITION_CENTER: 2\n };\n value = {};\n\n if (type[0] == 'l') {\n value.subtype = c_pageNumPosition.PAGE_NUM_POSITION_LEFT;\n } else if (type[0] == 'c') {\n value.subtype = c_pageNumPosition.PAGE_NUM_POSITION_CENTER;\n } else if (type[0] == 'r') {\n value.subtype = c_pageNumPosition.PAGE_NUM_POSITION_RIGHT;\n }\n\n if (type[1] == 't') {\n value.type = c_pageNumPosition.PAGE_NUM_POSITION_TOP;\n } else if (type[1] == 'b') {\n value.type = c_pageNumPosition.PAGE_NUM_POSITION_BOTTOM;\n }\n\n api.put_PageNum(value.type, value.subtype);\n } else {\n api.put_PageNum(value);\n }\n\n this.closeModal();\n }\n\n onPageBreak () {\n const api = Common.EditorApi.get();\n api.put_AddPageBreak();\n this.closeModal();\n }\n\n onColumnBreak () {\n const api = Common.EditorApi.get();\n api.put_AddColumnBreak();\n this.closeModal();\n }\n\n onInsertSectionBreak (type) {\n const api = Common.EditorApi.get();\n let value;\n if ('next' == type) {\n value = Asc.c_oAscSectionBreakType.NextPage;\n } else if ('continuous' == type) {\n value = Asc.c_oAscSectionBreakType.Continuous;\n } else if ('even' == type) {\n value = Asc.c_oAscSectionBreakType.EvenPage;\n } else if ('odd' == type) {\n value = Asc.c_oAscSectionBreakType.OddPage;\n }\n api.add_SectionBreak(value);\n this.closeModal();\n }\n\n // Footnote\n\n getFootnoteProps () {\n if (!this.footnoteProps) {\n const api = Common.EditorApi.get();\n const props = api.asc_GetFootnoteProps();\n this.footnoteProps = {propsFormat: props.get_NumFormat(), propsPos: props.get_Pos()};\n }\n return this.footnoteProps;\n }\n\n initFootnoteStartAt () {\n if (!this.footnoteCurStart) {\n const api = Common.EditorApi.get();\n const currValue = api.asc_GetFootnoteProps().get_NumStart();\n this.toCustomFormat = value => {\n return value;\n };\n this.fromCustomFormat = value => {\n return value;\n };\n this.footnoteCurStart = this.toCustomFormat(currValue);\n }\n return this.footnoteCurStart;\n }\n\n getFootnoteStartAt (value, start) {\n const currValue = this.fromCustomFormat(start);\n\n switch (value) {\n case Asc.c_oAscNumberingFormat.UpperRoman: // I, II, III, ...\n this.toCustomFormat = _10toRome;\n this.fromCustomFormat = _Rometo10;\n break;\n case Asc.c_oAscNumberingFormat.LowerRoman: // i, ii, iii, ...\n this.toCustomFormat = value => { return _10toRome(value).toLocaleLowerCase(); };\n this.fromCustomFormat = value => { return _Rometo10(value.toLocaleUpperCase()); };\n break;\n case Asc.c_oAscNumberingFormat.UpperLetter: // A, B, C, ...\n this.toCustomFormat = _10toS;\n this.fromCustomFormat = _Sto10;\n break;\n case Asc.c_oAscNumberingFormat.LowerLetter: // a, b, c, ...\n this.toCustomFormat = value => { return _10toS(value).toLocaleLowerCase(); };\n this.fromCustomFormat = value => { return _Sto10(value.toLocaleUpperCase()); };\n break;\n default: // 1, 2, 3, ...\n this.toCustomFormat = value => { return value; };\n this.fromCustomFormat = value => { return value; };\n break;\n }\n return this.toCustomFormat(currValue);\n }\n\n onFootnoteStartAt (value, isDecrement) {\n let intValue;\n const step = 1;\n const maxValue = 16383;\n if(this.fromCustomFormat) {\n intValue = parseInt(this.fromCustomFormat(value));\n } else {\n const api = Common.EditorApi.get();\n intValue = api.asc_GetFootnoteProps().get_NumStart();\n }\n if (isDecrement) {\n intValue = Math.max(1, intValue - step);\n } else {\n intValue = Math.min(maxValue, intValue + step);\n }\n return this.toCustomFormat(intValue);\n }\n\n onInsertFootnote (format, start, location) {\n const api = Common.EditorApi.get();\n const props = new Asc.CAscFootnotePr();\n let startTo10;\n if (this.fromCustomFormat) {\n startTo10 = parseInt(this.fromCustomFormat(start));\n } else {\n startTo10 = api.asc_GetFootnoteProps().get_NumStart();\n }\n props.put_Pos(location);\n props.put_NumFormat(format);\n props.put_NumStart(startTo10);\n props.put_NumRestart(Asc.c_oAscFootnoteRestart.Continuous);\n api.asc_SetFootnoteProps(props, false);\n api.asc_AddFootnote();\n this.closeModal();\n }\n\n render () {\n return (\n \n )\n }\n}\n\nconst AddOtherWithTranslation = withTranslation()(AddOtherController);\n\nexport {AddOtherWithTranslation as AddOtherController};","import React, { useContext, useEffect } from 'react';\nimport { f7, Page, Navbar, NavRight, NavTitle, Link, Icon, Tabs, Tab } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport { observer, inject } from \"mobx-react\";\nimport { Device } from '../../../../../common/mobile/utils/device';\nimport { AddTableController } from \"../../controller/add/AddTable\";\nimport AddShapeController from \"../../controller/add/AddShape\";\nimport { AddOtherController } from \"../../controller/add/AddOther\";\nimport { MainContext } from '../../page/main';\n\nconst AddLayoutNavbar = ({ tabs, storeTableSettings }) => {\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const _t = t('Add', {returnObjects: true});\n\n const getTableStylesPreviews = () => {\n if(!storeTableSettings.arrayStylesDefault.length) {\n const api = Common.EditorApi.get();\n setTimeout(() => storeTableSettings.setStyles(api.asc_getTableStylesPreviews(true), 'default'), 1);\n }\n };\n\n return (\n \n {tabs.length > 1 ?\n
          \n {tabs.map((item, index) =>\n getTableStylesPreviews()} tabLink={\"#\" + item.id} tabLinkActive={index === 0}>\n \n )}\n {isAndroid && }\n
          :\n { tabs[0].caption }\n }\n {Device.phone && }\n
          \n )\n};\n\nconst AddLayoutContent = ({ tabs }) => {\n return (\n \n {tabs.map((item, index) =>\n \n {item.component}\n \n )}\n \n )\n};\n\nconst AddingPage = inject(\"storeFocusObjects\", \"storeTableSettings\", \"storeApplicationSettings\")(observer(props => {\n const mainContext = useContext(MainContext);\n const showPanels = mainContext.showPanels;\n const storeApplicationSettings = props.storeApplicationSettings;\n const directionMode = storeApplicationSettings.directionMode;\n const storeFocusObjects = props.storeFocusObjects;\n const storeTableSettings = props.storeTableSettings;\n const { t } = useTranslation();\n const _t = t('Add', {returnObjects: true});\n const api = Common.EditorApi.get();\n const tabs = [];\n const options = storeFocusObjects.settings;\n const paragraphObj = storeFocusObjects.paragraphObject;\n\n useEffect(() => {\n f7.tab.show('#add-other', false);\n }, []);\n\n useEffect(() => {\n if(directionMode === 'rtl') {\n tabs.reverse();\n }\n }, [directionMode])\n\n let needDisable = false,\n canAddTable = true,\n canAddImage = true,\n paragraphLocked = false,\n inFootnote = false,\n inControl = false,\n controlProps = false,\n lockType = false,\n controlPlain = false,\n contentLocked = false,\n richDelLock = false,\n richEditLock = false,\n plainDelLock = false,\n plainEditLock = false;\n\n if(paragraphObj) {\n canAddTable = paragraphObj.get_CanAddTable();\n canAddImage = paragraphObj.get_CanAddImage();\n paragraphLocked = paragraphObj.get_Locked();\n\n inFootnote = api.asc_IsCursorInFootnote() || api.asc_IsCursorInEndnote();\n inControl = api.asc_IsContentControl();\n\n controlProps = inControl ? api.asc_GetContentControlProperties() : null;\n lockType = (inControl && controlProps) ? controlProps.get_Lock() : Asc.c_oAscSdtLockType.Unlocked;\n controlPlain = (inControl && controlProps) ? (controlProps.get_ContentControlType() == Asc.c_oAscSdtLevelType.Inline) : false;\n contentLocked = lockType == Asc.c_oAscSdtLockType.SdtContentLocked || lockType == Asc.c_oAscSdtLockType.ContentLocked;\n\n richDelLock = paragraphObj ? !paragraphObj.can_DeleteBlockContentControl() : false;\n richEditLock = paragraphObj ? !paragraphObj.can_EditBlockContentControl() : false;\n plainDelLock = paragraphObj ? !paragraphObj.can_DeleteInlineContentControl() : false;\n plainEditLock = paragraphObj ? !paragraphObj.can_EditInlineContentControl() : false;\n }\n\n if (!showPanels && options.indexOf('text') > -1) {\n needDisable = !canAddTable || controlPlain || richEditLock || plainEditLock || richDelLock || plainDelLock;\n\n if(!needDisable) {\n tabs.push({\n caption: _t.textTable,\n id: 'add-table',\n icon: 'icon-add-table',\n component: \n });\n }\n }\n if(!showPanels) {\n needDisable = paragraphLocked || controlPlain || contentLocked || inFootnote;\n\n if(!needDisable) {\n tabs.push({\n caption: _t.textShape,\n id: 'add-shape',\n icon: 'icon-add-shape',\n component: \n });\n }\n }\n\n if(!showPanels) {\n tabs.push({\n caption: _t.textOther,\n id: 'add-other',\n icon: 'icon-add-other',\n component: \n \n });\n }\n\n return (\n \n \n \n \n )\n}));\n\n\nexport default AddingPage;\n\n\n","import React, { useContext, useEffect } from 'react';\nimport { View, Popup, Popover } from 'framework7-react';\nimport { f7 } from 'framework7-react';\nimport { Device } from '../../../../../common/mobile/utils/device';\nimport { AddImageController } from \"../../controller/add/AddImage\";\nimport { AddLinkController } from \"../../controller/add/AddLink\";\nimport { PageImageLinkSettings } from \"../add/AddImage\";\nimport { PageAddNumber, PageAddBreak, PageAddSectionBreak, PageAddFootnote } from \"../add/AddOther\";\nimport AddTableContentsController from '../../controller/add/AddTableContents';\nimport EditHyperlink from '../../controller/edit/EditHyperlink';\nimport AddingPage from './AddingPage';\nimport { MainContext } from '../../page/main';\n\nconst routes = [\n {\n path: '/adding-page/',\n component: AddingPage,\n },\n // Image\n {\n path: '/add-image-from-url/',\n component: PageImageLinkSettings,\n },\n // Other\n {\n path: '/add-link/',\n component: AddLinkController,\n },\n {\n path: '/edit-link/',\n component: EditHyperlink\n },\n {\n path: '/add-image/',\n component: AddImageController\n },\n {\n path: '/add-page-number/',\n component: PageAddNumber,\n },\n {\n path: '/add-break/',\n component: PageAddBreak,\n },\n {\n path: '/add-section-break/',\n component: PageAddSectionBreak,\n },\n {\n path: '/add-footnote/',\n component: PageAddFootnote,\n },\n {\n path: '/add-table-contents/',\n component: AddTableContentsController\n }\n];\n\nroutes.forEach(route => {\n route.options = {\n ...route.options,\n transition: 'f7-push'\n };\n});\n\nconst AddView = () => {\n const mainContext = useContext(MainContext);\n\n useEffect(() => {\n if(Device.phone) {\n f7.popup.open('.add-popup');\n } else {\n f7.popover.open('#add-popover', '#btn-add');\n }\n }, []);\n\n return (\n !Device.phone ?\n mainContext.closeOptions('add')}>\n \n \n \n :\n mainContext.closeOptions('add')}>\n \n \n \n \n )\n}\n\nexport default AddView;","import React, {useState} from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport {Page, Navbar, List, ListItem, BlockTitle, Segmented, Button, Icon} from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport { f7 } from 'framework7-react';\n\nconst PageDocumentFormats = props => {\n const { t } = useTranslation();\n const _t = t('Settings', {returnObjects: true});\n const storeSettings = props.storeDocumentSettings;\n const pageSizesIndex = storeSettings.pageSizesIndex;\n const pageSizes = storeSettings.getPageSizesList();\n const textMetric = Common.Utils.Metric.getCurrentMetricName();\n \n return (\n \n \n \n {pageSizes.map((item, index) => props.onFormatChange(item.value)}\n >)}\n \n \n )\n};\n\nconst PageDocumentMargins = props => {\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const _t = t('Settings', {returnObjects: true});\n const metricText = Common.Utils.Metric.getMetricName(Common.Utils.Metric.getCurrentMetric());\n const margins = props.getMargins();\n const maxMarginsW = margins.maxMarginsW;\n const maxMarginsH = margins.maxMarginsH;\n const [stateTop, setTop] = useState(margins.top);\n const [stateBottom, setBottom] = useState(margins.bottom);\n const [stateLeft, setLeft] = useState(margins.left);\n const [stateRight, setRight] = useState(margins.right);\n\n const onChangeMargins = (align, isDecrement) => {\n const step = Common.Utils.Metric.fnRecalcToMM(Common.Utils.Metric.getCurrentMetric() === Common.Utils.Metric.c_MetricUnits.pt ? 1 : 0.1);\n let marginValue, errorMsg;\n\n switch (align) {\n case 'left': marginValue = stateLeft; break;\n case 'top': marginValue = stateTop; break;\n case 'right': marginValue = stateRight; break;\n case 'bottom': marginValue = stateBottom; break;\n }\n\n if (isDecrement) {\n marginValue = Math.max(0, marginValue - step);\n } else {\n if(align == 'left' || align == 'right') {\n marginValue = Math.min(maxMarginsW, marginValue + step);\n if(stateLeft + stateRight + step > maxMarginsW) \n errorMsg = _t.textMarginsW;\n\n } else {\n marginValue = Math.min(maxMarginsH, marginValue + step);\n if(stateTop + stateBottom + step > maxMarginsH)\n errorMsg = _t.textMarginsH;\n }\n \n if(errorMsg) {\n f7.dialog.alert(errorMsg, _t.notcriticalErrorTitle);\n return;\n }\n }\n\n switch (align) {\n case 'left': setLeft(marginValue); break;\n case 'top': setTop(marginValue); break;\n case 'right': setRight(marginValue); break;\n case 'bottom': setBottom(marginValue); break;\n }\n\n props.applyMargins(align, marginValue);\n };\n\n return (\n \n \n \n \n {!isAndroid &&
          {parseFloat(Common.Utils.Metric.fnRecalcFromMM(stateTop).toFixed(2)) + ' ' + metricText}
          }\n
          \n \n \n {isAndroid && }\n \n \n
          \n
          \n \n {!isAndroid &&
          {parseFloat(Common.Utils.Metric.fnRecalcFromMM(stateBottom).toFixed(2))+ ' ' + metricText}
          }\n
          \n \n \n {isAndroid && }\n \n \n
          \n
          \n \n {!isAndroid &&
          {parseFloat(Common.Utils.Metric.fnRecalcFromMM(stateLeft).toFixed(2))+ ' ' + metricText}
          }\n
          \n \n \n {isAndroid && }\n \n \n
          \n
          \n \n {!isAndroid &&
          {parseFloat(Common.Utils.Metric.fnRecalcFromMM(stateRight).toFixed(2))+ ' ' + metricText}
          }\n
          \n \n \n {isAndroid && }\n \n \n
          \n
          \n
          \n
          \n )\n};\n\nconst PageDocumentColorSchemes = props => {\n const { t } = useTranslation();\n const curScheme = props.initPageColorSchemes();\n const [stateScheme, setScheme] = useState(curScheme);\n const storeSettings = props.storeDocumentSettings;\n const allSchemes = storeSettings.allSchemes;\n\n return (\n \n \n \n {\n allSchemes ? allSchemes.map((scheme, index) => {\n return (\n {\n setScheme(index);\n setTimeout(() => props.onColorSchemeChange(index), 10);\n }}>\n
          \n \n {\n scheme.get_colors().map((elem, index) => {\n if(index >=2 && index < 7) {\n let clr = {background: \"#\" + Common.Utils.ThemeColor.getHexColor(elem.get_r(), elem.get_g(), elem.get_b())};\n return (\n \n )\n }\n })\n }\n \n \n
          \n
          \n )\n }) : null \n }\n
          \n
          \n\n )\n};\n\nconst PageDocumentSettings = props => {\n const { t } = useTranslation();\n const _t = t('Settings', {returnObjects: true});\n\n const storeSettings = props.storeDocumentSettings;\n\n //Init Format\n const curMetricName = Common.Utils.Metric.getMetricName(Common.Utils.Metric.getCurrentMetric());\n const pageSizesIndex = storeSettings.pageSizesIndex;\n const widthDoc = storeSettings.widthDocument;\n const heightDoc = storeSettings.heightDocument;\n let textFormat;\n let sizeW;\n let sizeH;\n if (pageSizesIndex === -1) {\n textFormat = _t.textCustomSize;\n sizeW = parseFloat(Common.Utils.Metric.fnRecalcFromMM(widthDoc).toFixed(2));\n sizeH = parseFloat(Common.Utils.Metric.fnRecalcFromMM(heightDoc).toFixed(2));\n } else {\n const pageSizes = storeSettings.getPageSizesList();\n textFormat = pageSizes[pageSizesIndex]['caption'];\n sizeW = parseFloat(Common.Utils.Metric.fnRecalcFromMM(pageSizes[pageSizesIndex]['value'][0]).toFixed(2));\n sizeH = parseFloat(Common.Utils.Metric.fnRecalcFromMM(pageSizes[pageSizesIndex]['value'][1]).toFixed(2));\n }\n const pageSizeTxt = sizeW + ' ' + curMetricName + ' x ' + sizeH + ' ' + curMetricName;\n\n return (\n \n \n {_t.textOrientation}\n \n props.onPageOrientation('portrait')}>\n props.onPageOrientation('landscape')}>\n \n {_t.textFormat}\n \n \n \n \n \n \n \n \n )\n};\n\nconst DocumentFormats = inject(\"storeDocumentSettings\")(observer(PageDocumentFormats));\nconst DocumentMargins = inject(\"storeDocumentSettings\")(observer(PageDocumentMargins));\nconst DocumentSettings = inject(\"storeDocumentSettings\")(observer(PageDocumentSettings));\nconst DocumentColorSchemes = inject(\"storeDocumentSettings\")(observer(PageDocumentColorSchemes));\n\nexport {\n DocumentSettings,\n DocumentFormats,\n DocumentMargins,\n DocumentColorSchemes\n};\n","\nimport React, {Component} from 'react';\nimport {DocumentSettings} from '../../view/settings/DocumentSettings';\nimport { inject, observer } from 'mobx-react';\nimport { withTranslation } from 'react-i18next';\nimport { f7 } from 'framework7-react';\n\nclass DocumentSettingsController extends Component {\n constructor (props) {\n super (props);\n this.getMargins = this.getMargins.bind(this);\n this.applyMargins = this.applyMargins.bind(this);\n this.onFormatChange = this.onFormatChange.bind(this);\n this.onColorSchemeChange = this.onColorSchemeChange.bind(this);\n }\n\n onPageOrientation (value){\n const api = Common.EditorApi.get();\n if (api) {\n api.change_PageOrient(value == 'portrait');\n }\n }\n\n onFormatChange (value) {\n const api = Common.EditorApi.get();\n const storeDocumentSettings = this.props.storeDocumentSettings;\n\n this.widthDocument = storeDocumentSettings.widthDocument;\n this.heightDocument = storeDocumentSettings.heightDocument;\n\n if (api) {\n api.change_DocSize(value[0], value[1]);\n this.getMargins();\n }\n }\n\n getMargins() {\n const api = Common.EditorApi.get();\n const { t } = this.props;\n const _t = t('Settings', {returnObjects: true});\n\n if (api) {\n this.localSectionProps = api.asc_GetSectionProps();\n if (this.localSectionProps) {\n this.maxMarginsH = this.localSectionProps.get_H() - 2.6;\n this.maxMarginsW = this.localSectionProps.get_W() - 12.7;\n \n const top = this.localSectionProps.get_TopMargin();\n const bottom = this.localSectionProps.get_BottomMargin();\n const left = this.localSectionProps.get_LeftMargin();\n const right = this.localSectionProps.get_RightMargin();\n\n let errorMsg;\n\n if(top + bottom > this.maxMarginsH || left + right > this.maxMarginsW) {\n if(top + bottom > this.maxMarginsH) {\n errorMsg = _t.textMarginsH;\n } else {\n errorMsg = _t.textMarginsH;\n }\n\n f7.dialog.alert(errorMsg, _t.notcriticalErrorTitle);\n api.change_DocSize(this.widthDocument, this.heightDocument);\n return;\n } \n\n return {\n top,\n bottom,\n left,\n right,\n maxMarginsW: this.maxMarginsW,\n maxMarginsH: this.maxMarginsH\n }\n }\n }\n }\n\n applyMargins (align, value) {\n const api = Common.EditorApi.get();\n\n if (api) {\n switch (align) {\n case 'left':\n this.localSectionProps.put_LeftMargin(value);\n break;\n case 'top':\n this.localSectionProps.put_TopMargin(value);\n break;\n case 'right':\n this.localSectionProps.put_RightMargin(value);\n break;\n case 'bottom':\n this.localSectionProps.put_BottomMargin(value);\n break;\n }\n api.asc_SetSectionProps(this.localSectionProps);\n }\n }\n\n // Color Schemes\n\n initPageColorSchemes() {\n const api = Common.EditorApi.get();\n return api.asc_GetCurrentColorSchemeIndex();\n }\n\n onColorSchemeChange(newScheme) {\n const api = Common.EditorApi.get();\n api.asc_ChangeColorSchemeByIdx(+newScheme);\n this.props.storeTableSettings.setStyles([], 'default');\n }\n\n render () {\n return (\n \n )\n }\n}\n\nexport default inject(\"storeDocumentSettings\", 'storeTableSettings')(observer(withTranslation()(DocumentSettingsController)));","import React, { Fragment, useContext } from \"react\";\r\nimport { observer, inject } from \"mobx-react\";\r\nimport { Page, Navbar, List, ListItem, BlockTitle } from \"framework7-react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { SettingsContext } from \"../../controller/settings/Settings\";\r\n\r\nconst PageDocumentInfo = props => {\r\n const { t } = useTranslation();\r\n const _t = t(\"Settings\", { returnObjects: true });\r\n const storeInfo = props.storeDocumentInfo;\r\n const fileType = storeInfo.dataDoc.fileType;\r\n const dataApp = props.getAppProps();\r\n const settingsContext = useContext(SettingsContext);\r\n \r\n const {\r\n pageCount,\r\n paragraphCount,\r\n symbolsCount,\r\n symbolsWSCount,\r\n wordsCount,\r\n } = storeInfo.infoObj;\r\n\r\n const {\r\n pageSize,\r\n title,\r\n subject,\r\n description,\r\n dateCreated,\r\n modifyBy,\r\n modifyDate,\r\n author,\r\n producer,\r\n version,\r\n tagged,\r\n fastWebView,\r\n creators\r\n } = props.docInfoObject;\r\n\r\n const dataDoc = JSON.parse(JSON.stringify(storeInfo.dataDoc));\r\n const isLoaded = storeInfo.isLoaded;\r\n \r\n return (\r\n \r\n \r\n {dataDoc?.title ? (\r\n \r\n {_t.textDocumentTitle}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {dataDoc?.info?.author || dataDoc?.info?.owner ? (\r\n \r\n {_t.textOwner}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {dataDoc?.info?.folder ? (\r\n \r\n {_t.textLocation}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {dataDoc?.info?.uploaded || dataDoc?.info?.created ? (\r\n \r\n {_t.textUploaded}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {_t.textStatistic}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {pageSize && }\r\n \r\n {title ? (\r\n \r\n {t('Settings.textTitle')}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {subject ? (\r\n \r\n {t('Settings.textSubject')}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {description ? (\r\n \r\n {t('Settings.textComment')}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {modifyDate ? (\r\n \r\n {t('Settings.textLastModified')}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {modifyBy ? (\r\n \r\n {t('Settings.textLastModifiedBy')}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {dateCreated ? (\r\n \r\n {t('Settings.textCreated')}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {dataApp ? (\r\n \r\n {t('Settings.textApplication')}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {fileType === 'xps' && author ? (\r\n \r\n {t('Settings.textAuthor')}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {fileType === 'pdf' && author ? (\r\n \r\n {t('Settings.textAuthor')}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n { fileType === 'pdf' && producer ? (\r\n \r\n {t('Settings.textPdfProducer')}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n { fileType === 'pdf' ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : null}\r\n {creators ? (\r\n \r\n {t('Settings.textAuthor')}\r\n \r\n {\r\n creators.split(/\\s*[,;]\\s*/).map(item => {\r\n return \r\n })\r\n }\r\n \r\n \r\n ) : null}\r\n \r\n );\r\n};\r\n\r\nconst DocumentInfo = inject(\"storeDocumentInfo\")(observer(PageDocumentInfo));\r\n\r\nexport default DocumentInfo;","import React, { Component } from \"react\";\r\nimport { observer, inject } from \"mobx-react\";\r\nimport DocumentInfo from \"../../view/settings/DocumentInfo\";\r\nimport { f7 } from 'framework7-react';\r\nimport { withTranslation } from 'react-i18next';\r\nimport { Device } from \"../../../../../common/mobile/utils/device\";\r\n\r\nclass DocumentInfoController extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.docProps = this.getDocProps();\r\n this.pdfProps = this.getPdfProps();\r\n this.docInfoObject = {};\r\n\r\n this.getAppProps = this.getAppProps.bind(this);\r\n this.changeTitleHandler = this.changeTitleHandler.bind(this);\r\n\r\n if(this.docProps) {\r\n this.updateFileInfo(this.docProps);\r\n } else if (this.pdfProps) {\r\n this.updatePdfInfo(this.pdfProps);\r\n }\r\n }\r\n\r\n updateFileInfo(props) {\r\n let value;\r\n\r\n if(props) {\r\n value = props.asc_getCreated();\r\n if(value) this.docInfoObject.dateCreated = this.getModified(value);\r\n\r\n value = props.asc_getModified();\r\n if(value) this.docInfoObject.modifyDate = this.getModified(value);\r\n\r\n value = props.asc_getLastModifiedBy();\r\n if(value) this.docInfoObject.modifyBy = AscCommon.UserInfoParser.getParsedName(value);\r\n\r\n this.docInfoObject.title = props.asc_getTitle() || '';\r\n this.docInfoObject.subject = props.asc_getSubject() || '';\r\n this.docInfoObject.description = props.asc_getDescription() || '';\r\n\r\n value = props.asc_getCreator();\r\n if(value) this.docInfoObject.creators = value;\r\n }\r\n }\r\n\r\n updatePdfInfo(props) {\r\n const { t } = this.props;\r\n const _t = t(\"Settings\", { returnObjects: true });\r\n let value;\r\n\r\n if(props) {\r\n value = props.CreationDate;\r\n if (value)\r\n this.docInfoObject.dateCreated = this.getModified(new Date(value));\r\n \r\n value = props.ModDate;\r\n if (value)\r\n this.docInfoObject.modifyDate = this.getModified(new Date(value));\r\n\r\n if(props.PageWidth && props.PageHeight && (typeof props.PageWidth === 'number') && (typeof props.PageHeight === 'number')) {\r\n let width = props.PageWidth,\r\n heigth = props.PageHeight;\r\n switch(Common.Utils.Metric.getCurrentMetric()) {\r\n case Common.Utils.Metric.c_MetricUnits.cm:\r\n width = parseFloat((width* 25.4 / 72000.).toFixed(2));\r\n heigth = parseFloat((heigth* 25.4 / 72000.).toFixed(2));\r\n break;\r\n case Common.Utils.Metric.c_MetricUnits.pt:\r\n width = parseFloat((width/100.).toFixed(2));\r\n heigth = parseFloat((heigth/100.).toFixed(2));\r\n break;\r\n case Common.Utils.Metric.c_MetricUnits.inch:\r\n width = parseFloat((width/7200.).toFixed(2));\r\n heigth = parseFloat((heigth/7200.).toFixed(2));\r\n break;\r\n }\r\n\r\n this.docInfoObject.pageSize = (width + ' ' + Common.Utils.Metric.getCurrentMetricName() + ' x ' + heigth + ' ' + Common.Utils.Metric.getCurrentMetricName());\r\n } else this.docInfoObject.pageSize = null;\r\n\r\n value = props.Title;\r\n if(value) this.docInfoObject.title = value;\r\n\r\n value = props.Subject;\r\n if(value) this.docInfoObject.subject = value;\r\n\r\n value = props.Author;\r\n if(value) this.docInfoObject.author = value;\r\n\r\n value = props.Version;\r\n if(value) this.docInfoObject.version = value;\r\n\r\n value = props.Producer;\r\n if(value) this.docInfoObject.producer = value;\r\n\r\n value = props.Tagged;\r\n if (value !== undefined)\r\n this.docInfoObject.tagged = (value===true ? _t.textYes : _t.textNo);\r\n \r\n value = props.FastWebView;\r\n if (value !== undefined)\r\n this.docInfoObject.fastWebView = (value===true ? _t.textYes : _t.textNo);\r\n }\r\n }\r\n\r\n getDocProps() {\r\n const api = Common.EditorApi.get();\r\n return api.asc_getCoreProps();\r\n }\r\n\r\n getPdfProps() {\r\n const api = Common.EditorApi.get();\r\n return api.asc_getPdfProps();\r\n }\r\n\r\n getAppProps() {\r\n const api = Common.EditorApi.get();\r\n const appProps = api.asc_getAppProps();\r\n let appName;\r\n\r\n if (appProps) {\r\n appName = appProps.asc_getApplication();\r\n if ( appName && appProps.asc_getAppVersion() )\r\n appName += ` ${appProps.asc_getAppVersion()}`;\r\n \r\n return appName || '';\r\n } else if (this.pdfProps) {\r\n appName = this.pdfProps ? this.pdfProps.Creator || '' : '';\r\n return appName;\r\n }\r\n }\r\n\r\n getModified(valueModified) {\r\n const _lang = this.props.storeAppOptions.lang;\r\n\r\n if (valueModified) {\r\n return (\r\n valueModified.toLocaleString(_lang, {\r\n year: \"numeric\",\r\n month: \"2-digit\",\r\n day: \"2-digit\",\r\n }) +\r\n \" \" +\r\n valueModified.toLocaleTimeString(_lang, { timeStyle: \"short\" })\r\n );\r\n }\r\n }\r\n\r\n changeTitleHandler() {\r\n if(!this.props.storeAppOptions.canRename) return;\r\n\r\n const { t } = this.props;\r\n const storeDocumentInfo = this.props.storeDocumentInfo;\r\n const docTitle = storeDocumentInfo.dataDoc.title;\r\n const api = Common.EditorApi.get();\r\n \r\n api.asc_enableKeyEvents(true);\r\n\r\n f7.dialog.create({\r\n title: t('Toolbar.textRenameFile'),\r\n text : t('Toolbar.textEnterNewFileName'),\r\n content: Device.ios ?\r\n '
          ' : '
          ',\r\n cssClass: 'dlg-adv-options',\r\n buttons: [\r\n {\r\n text: t('Edit.textCancel')\r\n },\r\n {\r\n text: t('Edit.textOk'),\r\n cssClass: 'btn-change-title',\r\n bold: true,\r\n close: false,\r\n onClick: () => {\r\n const titleFieldValue = document.querySelector('#modal-title').value;\r\n if(titleFieldValue.trim().length) {\r\n this.changeTitle(titleFieldValue);\r\n f7.dialog.close();\r\n }\r\n }\r\n }\r\n ],\r\n on: {\r\n opened: () => {\r\n const nameDoc = docTitle.split('.')[0];\r\n const titleField = document.querySelector('#modal-title');\r\n const btnChangeTitle = document.querySelector('.btn-change-title');\r\n\r\n titleField.value = nameDoc;\r\n titleField.focus();\r\n titleField.select();\r\n\r\n titleField.addEventListener('input', () => {\r\n if(titleField.value.trim().length) {\r\n btnChangeTitle.classList.remove('disabled');\r\n } else {\r\n btnChangeTitle.classList.add('disabled');\r\n }\r\n });\r\n }\r\n }\r\n }).open();\r\n }\r\n\r\n changeTitle(name) {\r\n const api = Common.EditorApi.get();\r\n const storeDocumentInfo = this.props.storeDocumentInfo;\r\n const docInfo = storeDocumentInfo.docInfo;\r\n const docExt = storeDocumentInfo.dataDoc.fileType;\r\n const title = `${name}.${docExt}`;\r\n\r\n storeDocumentInfo.changeTitle(title);\r\n docInfo.put_Title(title);\r\n storeDocumentInfo.setDocInfo(docInfo);\r\n api.asc_setDocInfo(docInfo);\r\n }\r\n\r\n componentDidMount() {\r\n const api = Common.EditorApi.get();\r\n api.startGetDocInfo();\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\n\r\nexport default inject(\"storeAppOptions\", \"storeDocumentInfo\")(observer(withTranslation()(DocumentInfoController)));\r\n","import React from 'react';\r\nimport { observer, inject } from \"mobx-react\";\r\nimport { Page, Navbar, List, ListItem, BlockTitle, Icon } from \"framework7-react\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst Download = props => {\r\n const { t } = useTranslation();\r\n const _t = t(\"Settings\", { returnObjects: true });\r\n const storeDocumentInfo = props.storeDocumentInfo;\r\n const dataDoc = storeDocumentInfo.dataDoc;\r\n const canFeatureForms = props.storeAppOptions.canFeatureForms;\r\n const isAvailableExt = dataDoc.fileType === 'docxf' || dataDoc.fileType === 'docx' || dataDoc.fileType === 'pdf' || dataDoc.fileType === 'pdfa';\r\n const isForm = props.isForm;\r\n const canFillForms = props.canFillForms;\r\n const isEditableForms = isForm && canFillForms;\r\n\r\n return (\r\n \r\n \r\n {isEditableForms ? t('Settings.textExportAs') : _t.textDownloadAs}\r\n \r\n props.onSaveFormat(Asc.c_oAscFileType.DOCX)}>\r\n \r\n \r\n props.onSaveFormat(Asc.c_oAscFileType.PDF)}>\r\n \r\n \r\n {!isEditableForms ? [\r\n props.onSaveFormat(Asc.c_oAscFileType.PDFA)}>\r\n \r\n ,\r\n props.onSaveFormat(Asc.c_oAscFileType.TXT)}>\r\n \r\n ,\r\n props.onSaveFormat(Asc.c_oAscFileType.RTF)}>\r\n \r\n ,\r\n props.onSaveFormat(Asc.c_oAscFileType.ODT)}>\r\n \r\n ,\r\n props.onSaveFormat(Asc.c_oAscFileType.HTML)}>\r\n \r\n ,\r\n props.onSaveFormat(Asc.c_oAscFileType.DOTX)}>\r\n \r\n ,\r\n props.onSaveFormat(Asc.c_oAscFileType.OTT)}>\r\n \r\n ,\r\n props.onSaveFormat(Asc.c_oAscFileType.FB2)}>\r\n \r\n ,\r\n props.onSaveFormat(Asc.c_oAscFileType.EPUB)}>\r\n \r\n ,\r\n ]\r\n : null}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default inject('storeDocumentInfo', 'storeAppOptions')(observer(Download));","import React, { Component } from \"react\";\r\nimport Download from \"../../view/settings/Download\";\r\nimport { Device } from '../../../../../common/mobile/utils/device';\r\nimport { f7 } from 'framework7-react';\r\nimport { withTranslation } from 'react-i18next';\r\nimport { observer, inject } from \"mobx-react\";\r\n\r\nclass DownloadController extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.onSaveFormat = this.onSaveFormat.bind(this);\r\n this.appOptions = this.props.storeAppOptions;\r\n }\r\n\r\n closeModal() {\r\n if (Device.phone) {\r\n f7.sheet.close('.settings-popup', false);\r\n } else {\r\n f7.popover.close('#settings-popover');\r\n }\r\n }\r\n\r\n onSaveFormat(format) {\r\n const api = Common.EditorApi.get();\r\n const storeDocumentInfo = this.props.storeDocumentInfo;\r\n const dataDoc = storeDocumentInfo.dataDoc;\r\n const fileType = dataDoc.fileType;\r\n const options = new Asc.asc_CDownloadOptions(format);\r\n const { t } = this.props;\r\n const _t = t(\"Settings\", { returnObjects: true });\r\n\r\n if(/^pdf|xps|oxps|djvu$/.test(fileType)) {\r\n this.closeModal();\r\n\r\n if(format === Asc.c_oAscFileType.PDF || format === Asc.c_oAscFileType.PDFA || format === Asc.c_oAscFileType.JPG || format === Asc.c_oAscFileType.PNG) {\r\n api.asc_DownloadAs(options);\r\n } else if (format === Asc.c_oAscFileType.TXT || format === Asc.c_oAscFileType.RTF) {\r\n options.asc_setTextParams(new AscCommon.asc_CTextParams(Asc.c_oAscTextAssociation.PlainLine));\r\n\r\n f7.dialog.create({\r\n title: _t.notcriticalErrorTitle,\r\n text: (format === Asc.c_oAscFileType.TXT) ? _t.textDownloadTxt : _t.textDownloadRtf,\r\n buttons: [\r\n {\r\n text: _t.textCancel\r\n },\r\n {\r\n text: _t.textOk,\r\n onClick: () => {\r\n if (format === Asc.c_oAscFileType.TXT) {\r\n const advOptions = api.asc_getAdvancedOptions();\r\n Common.Notifications.trigger('openEncoding', Asc.c_oAscAdvancedOptionsID.TXT, advOptions, 2, options);\r\n } else {\r\n api.asc_DownloadAs(options);\r\n }\r\n }\r\n }\r\n ],\r\n }).open();\r\n } else {\r\n f7.dialog.create({\r\n title: _t.notcriticalErrorTitle,\r\n text: t('Main.warnDownloadAsPdf').replaceAll('{0}', fileType.toUpperCase()), \r\n buttons: [\r\n {\r\n text: _t.textCancel\r\n },\r\n {\r\n text: _t.textOk,\r\n onClick: () => {\r\n options.asc_setTextParams(new AscCommon.asc_CTextParams(Asc.c_oAscTextAssociation.PlainLine));\r\n api.asc_DownloadAs(options);\r\n }\r\n }\r\n ],\r\n }).open();\r\n }\r\n } else {\r\n api.asc_DownloadAs(options);\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nconst DownloadWithTranslation = inject(\"storeAppOptions\", \"storeDocumentInfo\")(observer(withTranslation()(DownloadController)));\r\n\r\nconst onAdvancedOptions = (type, _t, isDocReady, canRequestClose, isDRM) => {\r\n if ($$('.dlg-adv-options.modal-in').length > 0) return;\r\n\r\n const api = Common.EditorApi.get();\r\n\r\n Common.Notifications.trigger('preloader:close');\r\n Common.Notifications.trigger('preloader:endAction', Asc.c_oAscAsyncActionType['BlockInteraction'], -256, true);\r\n\r\n const buttons = [{\r\n text: 'OK',\r\n bold: true,\r\n onClick: function () {\r\n const password = document.getElementById('modal-password').value;\r\n api.asc_setAdvancedOptions(type, new Asc.asc_CDRMAdvancedOptions(password));\r\n if (!isDocReady) {\r\n Common.Notifications.trigger('preloader:beginAction', Asc.c_oAscAsyncActionType['BlockInteraction'], -256);\r\n }\r\n }\r\n }];\r\n\r\n if(isDRM) {\r\n f7.dialog.create({\r\n text: _t.txtIncorrectPwd,\r\n buttons : [{\r\n text: 'OK',\r\n bold: true,\r\n }]\r\n }).open();\r\n }\r\n\r\n if (canRequestClose) {\r\n buttons.push({\r\n text: _t.closeButtonText,\r\n onClick: function () {\r\n Common.Gateway.requestClose();\r\n }\r\n });\r\n }\r\n\r\n f7.dialog.create({\r\n title: _t.advDRMOptions,\r\n text: _t.textOpenFile,\r\n content: Device.ios ?\r\n '
          ' : '
          ',\r\n buttons: buttons,\r\n cssClass: 'dlg-adv-options',\r\n on: {\r\n opened: () => {\r\n const passwordIcon = document.querySelector('.modal-password__icon');\r\n const passwordField = document.querySelector('#modal-password');\r\n\r\n passwordIcon.addEventListener('click', () => {\r\n passwordIcon.classList.toggle('icon-show-password');\r\n passwordIcon.classList.toggle('icon-hide-password');\r\n passwordField.type = passwordField.type === 'password' ? 'text' : 'password';\r\n });\r\n },\r\n }\r\n }).open();\r\n};\r\n\r\n\r\nexport {\r\n DownloadWithTranslation as DownloadController,\r\n onAdvancedOptions\r\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { watchProp } from '../shared/watch-prop.js';\nimport { useTooltip } from '../shared/use-tooltip.js';\n\n\nconst Toggle = /*#__PURE__*/forwardRef((props, ref) => {\n const f7Toggle = useRef(null);\n const {\n className,\n id,\n style,\n init = true,\n checked,\n defaultChecked,\n disabled,\n readonly,\n name,\n value\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const inputElRef = useRef(null);\n const onChange = event => {\n emit(props, 'change', event);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7Toggle: () => f7Toggle.current\n }));\n useTooltip(elRef, props);\n watchProp(checked, newValue => {\n if (!f7Toggle.current) return;\n f7Toggle.current.checked = newValue;\n });\n const onToggleChange = toggleInstance => {\n emit(props, 'toggleChange', toggleInstance.checked);\n };\n const toggleEvents = method => {\n if (!f7Toggle.current) return;\n f7Toggle.current[method]('toggleChange', onToggleChange);\n };\n const onMount = () => {\n f7ready(() => {\n if (!init || !elRef.current) return;\n f7Toggle.current = f7.toggle.create({\n el: elRef.current\n });\n toggleEvents('on');\n });\n };\n const onDestroy = () => {\n if (f7Toggle.current && f7Toggle.current.destroy && f7Toggle.current.$el) {\n f7Toggle.current.destroy();\n }\n f7Toggle.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n toggleEvents('on');\n if (inputElRef.current) {\n inputElRef.current.addEventListener('change', onChange);\n }\n return () => {\n toggleEvents('off');\n if (inputElRef.current) {\n inputElRef.current.removeEventListener('change', onChange);\n }\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n const labelClasses = classNames('toggle', className, {\n disabled\n }, colorClasses(props));\n const inputEl = /*#__PURE__*/React.createElement(\"input\", {\n ref: inputElRef,\n type: \"checkbox\",\n name: name,\n disabled: disabled,\n readOnly: readonly,\n checked: checked,\n defaultChecked: defaultChecked,\n value: value,\n onChange: () => {}\n });\n return /*#__PURE__*/React.createElement(\"label\", _extends({\n id: id,\n style: style,\n className: labelClasses,\n ref: elRef\n }, extraAttrs), inputEl, /*#__PURE__*/React.createElement(\"span\", {\n className: \"toggle-icon\"\n }));\n});\nToggle.displayName = 'f7-toggle';\nexport default Toggle;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { useTab } from '../shared/use-tab.js';\n\n\nconst Block = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n inset,\n insetIos,\n insetMd,\n xsmallInset,\n xsmallInsetIos,\n xsmallInsetMd,\n smallInset,\n smallInsetIos,\n smallInsetMd,\n mediumInset,\n mediumInsetIos,\n mediumInsetMd,\n largeInset,\n largeInsetIos,\n largeInsetMd,\n xlargeInset,\n xlargeInsetIos,\n xlargeInsetMd,\n strong,\n strongIos,\n strongMd,\n outline,\n outlineIos,\n outlineMd,\n accordionList,\n accordionOpposite,\n tabs,\n tab,\n tabActive,\n id,\n style,\n children\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n useTab(elRef, props);\n const classes = classNames(className, 'block', {\n inset,\n 'inset-ios': insetIos,\n 'inset-md': insetMd,\n 'xsmall-inset': xsmallInset,\n 'xsmall-inset-ios': xsmallInsetIos,\n 'xsmall-inset-md': xsmallInsetMd,\n 'small-inset': smallInset,\n 'small-inset-ios': smallInsetIos,\n 'small-inset-md': smallInsetMd,\n 'medium-inset': mediumInset,\n 'medium-inset-ios': mediumInsetIos,\n 'medium-inset-md': mediumInsetMd,\n 'large-inset': largeInset,\n 'large-inset-ios': largeInsetIos,\n 'large-inset-md': largeInsetMd,\n 'xlarge-inset': xlargeInset,\n 'xlarge-inset-ios': xlargeInsetIos,\n 'xlarge-inset-md': xlargeInsetMd,\n 'block-strong': strong,\n 'block-strong-ios': strongIos,\n 'block-strong-md': strongMd,\n 'block-outline': outline,\n 'block-outline-ios': outlineIos,\n 'block-outline-md': outlineMd,\n 'accordion-list': accordionList,\n 'accordion-opposite': accordionOpposite,\n tabs,\n tab,\n 'tab-active': tabActive\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children);\n});\nBlock.displayName = 'f7-block';\nexport default Block;","import React, { Fragment } from \"react\";\r\nimport { observer, inject } from \"mobx-react\";\r\nimport { Page, Navbar, List, ListItem, BlockTitle, Toggle, Block } from \"framework7-react\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst PageApplicationSettings = props => {\r\n const { t } = useTranslation();\r\n const _t = t(\"Settings\", { returnObjects: true });\r\n const storeThemes = props.storeThemes;\r\n const displayMode = props.storeReview.displayMode;\r\n const storeApplicationSettings = props.storeApplicationSettings;\r\n const unitMeasurement = storeApplicationSettings.unitMeasurement;\r\n const isSpellChecking = storeApplicationSettings.isSpellChecking;\r\n const isNonprintingCharacters = storeApplicationSettings.isNonprintingCharacters;\r\n const isHiddenTableBorders = storeApplicationSettings.isHiddenTableBorders;\r\n const isComments = storeApplicationSettings.isComments;\r\n const isResolvedComments = storeApplicationSettings.isResolvedComments;\r\n const directionMode = storeApplicationSettings.directionMode;\r\n const newDirectionMode = directionMode !== 'ltr' ? 'ltr' : 'rtl';\r\n\r\n const changeMeasureSettings = value => {\r\n storeApplicationSettings.changeUnitMeasurement(value);\r\n props.setUnitMeasurement(value);\r\n };\r\n\r\n // set mode\r\n const appOptions = props.storeAppOptions;\r\n const colorTheme = storeThemes.colorTheme;\r\n const themes = storeThemes.themes;\r\n const typeTheme = colorTheme.type;\r\n const isConfigSelectTheme = storeThemes.isConfigSelectTheme;\r\n const isViewer = appOptions.isViewer;\r\n const _isEdit = appOptions.isEdit;\r\n const _isShowMacros = (!appOptions.isDisconnected && appOptions.customization) ? appOptions.customization.macros !== false : true;\r\n\r\n return (\r\n \r\n \r\n {_isEdit && !isViewer &&\r\n <>\r\n {_t.textUnitOfMeasurement}\r\n \r\n changeMeasureSettings(0)}>\r\n changeMeasureSettings(1)}>\r\n changeMeasureSettings(2)}>\r\n \r\n \r\n {/*ToDo: if (DisplayMode == \"final\" || DisplayMode == \"original\") {disabled} */}\r\n {\r\n storeApplicationSettings.changeNoCharacters(!isNonprintingCharacters);\r\n props.switchNoCharacters(!isNonprintingCharacters);\r\n }}\r\n />\r\n \r\n {/*ToDo: if (DisplayMode == \"final\" || DisplayMode == \"original\") {disabled} */}\r\n {\r\n storeApplicationSettings.changeShowTableEmptyLine(!isHiddenTableBorders);\r\n props.switchShowTableEmptyLine(!isHiddenTableBorders);\r\n }}\r\n />\r\n \r\n \r\n \r\n }\r\n {_isEdit &&\r\n \r\n \r\n {\r\n storeApplicationSettings.changeSpellCheck(!isSpellChecking);\r\n props.switchSpellCheck(!isSpellChecking);\r\n }}\r\n />\r\n \r\n \r\n }\r\n {_t.textCommentsDisplay}\r\n \r\n \r\n {\r\n storeApplicationSettings.changeDisplayComments(!isComments);\r\n props.switchDisplayComments(!isComments);\r\n }}\r\n />\r\n \r\n \r\n {\r\n storeApplicationSettings.changeDisplayResolved(!isResolvedComments);\r\n props.switchDisplayResolved(!isResolvedComments);\r\n }}\r\n />\r\n \r\n \r\n {!!isConfigSelectTheme &&\r\n \r\n \r\n \r\n }\r\n {_isShowMacros &&\r\n \r\n \r\n \r\n }\r\n {Common.Locale.isCurrentLangRtl &&\r\n <>\r\n \r\n \r\n
          \r\n {t(\"Settings.textRtlInterface\")}\r\n Beta\r\n
          \r\n {\r\n storeApplicationSettings.changeDirectionMode(newDirectionMode);\r\n props.changeDirectionMode(newDirectionMode);\r\n }}\r\n />\r\n
          \r\n
          \r\n \r\n

          {t('Settings.textExplanationChangeDirection')}

          \r\n
          \r\n \r\n }\r\n
          \r\n );\r\n};\r\n\r\nconst PageThemeSettings = props => {\r\n const { t } = useTranslation();\r\n const _t = t(\"Settings\", { returnObjects: true });\r\n const storeThemes = props.storeThemes;\r\n const themes = storeThemes.themes;\r\n const colorTheme = storeThemes.colorTheme;\r\n const typeTheme = colorTheme.type;\r\n\r\n return (\r\n \r\n \r\n \r\n {Object.keys(themes).map((key, index) => {\r\n return (\r\n props.changeTheme(key)} name={themes[key].id} title={themes[key].text}>\r\n )\r\n })}\r\n \r\n \r\n )\r\n}\r\n\r\nconst PageMacrosSettings = props => {\r\n const { t } = useTranslation();\r\n const _t = t(\"Settings\", { returnObjects: true });\r\n const storeApplicationSettings = props.storeApplicationSettings;\r\n const macrosMode = storeApplicationSettings.macrosMode;\r\n\r\n const changeMacros = value => {\r\n storeApplicationSettings.changeMacrosSettings(value);\r\n props.setMacrosSettings(value);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n changeMacros(2)}>\r\n changeMacros(0)}>\r\n changeMacros(1)}>\r\n \r\n \r\n );\r\n};\r\n\r\nconst ApplicationSettings = inject(\"storeApplicationSettings\", \"storeAppOptions\", \"storeReview\", \"storeThemes\")(observer(PageApplicationSettings));\r\nconst MacrosSettings = inject(\"storeApplicationSettings\")(observer(PageMacrosSettings));\r\nconst ThemeSettings = inject(\"storeThemes\")(observer(PageThemeSettings));\r\n\r\nexport {ApplicationSettings, MacrosSettings, ThemeSettings};","\nclass LocalStorage {\n constructor() {\n Common.Gateway.on('internalcommand', data => {\n if (data.type == 'localstorage') {\n this._store = data.keys;\n }\n });\n\n this._store = {};\n this._prefix = 'mobile-';\n this._common_keys = ['guest-id', 'guest-username'];\n\n try {\n this._isAllowed = !!window.localStorage;\n } catch (e) {\n this._isAllowed = false;\n }\n }\n\n get id() {\n return this._storeName;\n }\n\n set id(name) {\n this._storeName = name;\n }\n\n set keysFilter(value) {\n this._filter = value;\n }\n\n get keysFilter() {\n return this._filter;\n }\n\n get prefix() {\n return this._prefix;\n }\n\n set prefix(p) {\n this._prefix = p;\n }\n\n sync() {\n if ( !this._isAllowed )\n Common.Gateway.internalMessage('localstorage', {cmd:'get', keys:this._filter});\n }\n\n save() {\n if ( !this._isAllowed )\n Common.Gateway.internalMessage('localstorage', {cmd:'set', keys:this._store});\n }\n\n setItem(name, value, just) {\n if ( !this._common_keys.includes(value) )\n name = this._prefix + name;\n\n if ( this._isAllowed ) {\n try {\n localStorage.setItem(name, value);\n } catch (error){}\n } else {\n this._store[name] = value;\n\n if ( just===true ) {\n Common.Gateway.internalMessage('localstorage', {cmd:'set', keys: {name: value}});\n }\n }\n }\n\n getItem(name) {\n if ( !this._common_keys.includes(name) )\n name = this._prefix + name;\n\n if ( this._isAllowed )\n return localStorage.getItem(name);\n else return this._store[name]===undefined ? null : this._store[name];\n };\n\n setBool(name, value, just) {\n this.setItem(name, value ? 1 : 0, just);\n }\n\n getBool(name, defValue) {\n const value = this.getItem(name);\n return (value !== null) ? (parseInt(value) != 0) : !!defValue;\n }\n\n itemExists(name) {\n return this.getItem(name) !== null;\n }\n}\n\nconst instance = new LocalStorage();\nexport {instance as LocalStorage};","import React, { createContext, useEffect } from 'react';\nimport { LocalStorage } from \"../../utils/LocalStorage.mjs\";\nimport { inject, observer } from \"mobx-react\";\nimport { useTranslation } from 'react-i18next';\n\nexport const ThemesContext = createContext();\nexport const ThemesProvider = props => {\n const { t, ready } = useTranslation();\n const storeThemes = props.storeThemes;\n const themes = storeThemes.themes;\n const nameColors = storeThemes.nameColors;\n\n useEffect(() => {\n initTheme();\n }, []);\n\n useEffect(() => {\n if (ready) {\n const translations = getTranslationsThemes();\n storeThemes.setTranslationsThemes(translations);\n }\n }, [ready]);\n\n const getTranslationsThemes = () => {\n const translations = Object.keys(themes).reduce((acc, theme) => {\n acc[theme] = t(`Common.Themes.${theme}`);\n return acc;\n }, {});\n\n return translations;\n }\n\n const initTheme = () => {\n const clientTheme = LocalStorage.getItem(\"ui-theme\");\n const editorConfig = window.native?.editorConfig;\n\n storeThemes.setConfigSelectTheme(editorConfig?.theme?.select != false);\n setUITheme(clientTheme ? JSON.parse(clientTheme).type : editorConfig?.theme?.type);\n\n applyTheme();\n }\n\n const setUITheme = type => {\n if(type && type !== 'system') {\n const theme = themes[type];\n storeThemes.setColorTheme(theme);\n } else {\n setSystemTheme();\n }\n }\n\n const setSystemTheme = () => {\n let theme = themes.light;\n\n if(window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n theme = themes.dark;\n }\n\n storeThemes.setColorTheme(themes[\"system\"]);\n storeThemes.setSystemColorTheme(theme);\n }\n\n const getCurrentThemeColors = colors => {\n let outObject = {};\n const style = getComputedStyle(document.body);\n\n colors.forEach(item => {\n outObject[item] = style.getPropertyValue('--' + item).trim()\n });\n\n return outObject;\n }\n\n const changeTheme = key => {\n const theme = themes[key];\n const type = theme.type;\n\n LocalStorage.setItem(\"ui-theme\", JSON.stringify(theme));\n storeThemes.setColorTheme(theme);\n\n if(type !== \"system\") {\n storeThemes.resetSystemColorTheme();\n } else {\n setSystemTheme();\n }\n\n applyTheme();\n }\n\n const applyTheme = () => {\n const $body = $$('body');\n\n let theme = storeThemes.systemColorTheme;\n if(!theme) theme = storeThemes.colorTheme;\n \n $body.attr('class') && $body.attr('class', $body.attr('class').replace(/\\s?theme-type-(?:dark|light)/, ''));\n $body.addClass(`theme-type-${theme.type}`);\n\n const onEngineCreated = api => {\n let obj = getCurrentThemeColors(nameColors);\n obj.type = theme.type;\n obj.name = theme.id;\n\n api.asc_setSkin(obj);\n };\n\n const api = Common.EditorApi ? Common.EditorApi.get() : undefined;\n if(!api) Common.Notifications.on('engineCreated', onEngineCreated);\n else onEngineCreated(api);\n }\n\n return (\n \n {props.children}\n \n )\n}\n\nconst themes = inject('storeThemes')(observer(ThemesProvider));\nexport {themes as Themes}","import React, { Component } from \"react\";\r\nimport { ApplicationSettings } from \"../../view/settings/ApplicationSettings\";\r\nimport { LocalStorage } from '../../../../../common/mobile/utils/LocalStorage.mjs';\r\nimport {observer, inject} from \"mobx-react\";\r\nimport { ThemesContext } from \"../../../../../common/mobile/lib/controller/Themes\";\r\nimport { withTranslation } from 'react-i18next';\r\nimport { f7 } from \"framework7-react\";\r\n\r\nclass ApplicationSettingsController extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.switchDisplayComments = this.switchDisplayComments.bind(this);\r\n this.props.storeApplicationSettings.changeUnitMeasurement(Common.Utils.Metric.getCurrentMetric());\r\n this.changeDirectionMode = this.changeDirectionMode.bind(this);\r\n }\r\n\r\n static contextType = ThemesContext;\r\n\r\n setUnitMeasurement(value) {\r\n value = (value !== null) ? parseInt(value) : Common.Utils.Metric.getDefaultMetric();\r\n Common.Utils.Metric.setCurrentMetric(value);\r\n LocalStorage.setItem(\"de-mobile-settings-unit\", value);\r\n\r\n const api = Common.EditorApi.get();\r\n api.asc_SetDocumentUnits((value == Common.Utils.Metric.c_MetricUnits.inch) ? Asc.c_oAscDocumentUnits.Inch : ((value == Common.Utils.Metric.c_MetricUnits.pt) ? Asc.c_oAscDocumentUnits.Point : Asc.c_oAscDocumentUnits.Millimeter));\r\n }\r\n\r\n switchSpellCheck(value) {\r\n LocalStorage.setBool(\"de-mobile-spellcheck\", value);\r\n Common.EditorApi.get().asc_setSpellCheck(value);\r\n }\r\n\r\n switchNoCharacters(value) {\r\n LocalStorage.setBool(\"de-mobile-no-characters\", value);\r\n Common.EditorApi.get().put_ShowParaMarks(value);\r\n }\r\n\r\n switchShowTableEmptyLine(value) {\r\n LocalStorage.setBool(\"de-mobile-hidden-borders\", value);\r\n Common.EditorApi.get().put_ShowTableEmptyLine(value);\r\n }\r\n\r\n switchDisplayComments(value) {\r\n const api = Common.EditorApi.get();\r\n this.props.storeAppOptions.changeCanViewComments(value);\r\n\r\n if (!value) {\r\n this.switchDisplayResolved(value);\r\n api.asc_hideComments();\r\n LocalStorage.setBool(\"de-settings-resolvedcomment\", false);\r\n } else {\r\n const resolved = LocalStorage.getBool(\"de-settings-resolvedcomment\");\r\n api.asc_showComments(resolved);\r\n }\r\n\r\n LocalStorage.setBool(\"de-mobile-settings-livecomment\", value);\r\n }\r\n\r\n switchDisplayResolved(value) {\r\n const displayComments = LocalStorage.getBool(\"de-mobile-settings-livecomment\",true);\r\n if (displayComments) {\r\n Common.EditorApi.get().asc_showComments(value);\r\n LocalStorage.setBool(\"de-settings-resolvedcomment\", value);\r\n }\r\n }\r\n\r\n setMacrosSettings(value) {\r\n LocalStorage.setItem(\"de-mobile-macros-mode\", value);\r\n }\r\n\r\n changeDirectionMode(direction) {\r\n const { t } = this.props;\r\n const _t = t(\"Settings\", { returnObjects: true });\r\n\r\n this.props.storeApplicationSettings.changeDirectionMode(direction);\r\n LocalStorage.setItem('mode-direction', direction);\r\n\r\n f7.dialog.create({\r\n title: _t.notcriticalErrorTitle,\r\n text: t('Settings.textRestartApplication'),\r\n buttons: [\r\n {\r\n text: _t.textOk\r\n }\r\n ]\r\n }).open();\r\n }\r\n\r\n \r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\n\r\nexport default inject(\"storeAppOptions\", \"storeApplicationSettings\")(observer(withTranslation()(ApplicationSettingsController)));","import React, { Fragment } from 'react';\r\nimport { observer, inject } from \"mobx-react\";\r\nimport { Page, Navbar, Link } from \"framework7-react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Device } from '../../utils/device';\r\n\r\nconst PageAbout = props => {\r\n const { t } = useTranslation();\r\n const _t = t(\"About\", { returnObjects: true });\r\n const store = props.storeAppOptions;\r\n const isCanBranding = store.canBranding;\r\n const licInfo = isCanBranding ? store.customization : null;\r\n const customer = licInfo ? licInfo.customer : null;\r\n const nameCustomer = customer ? customer.name : null;\r\n const mailCustomer = customer ? customer.mail : null;\r\n const phoneCustomer = customer ? customer.phone : null;\r\n const addressCustomer = customer ? customer.address : null;\r\n const urlCustomer = customer ? customer.www : null;\r\n const infoCustomer = customer ? customer.info : null;\r\n const logoCustomer = customer ? customer.logo : null;\r\n\r\n const publisherUrl = __PUBLISHER_URL__, \r\n publisherPrintUrl = publisherUrl.replace(/https?:\\/{2}|\\/$/g,\"\");\r\n const publisherName = __PUBLISHER_NAME__.replace(/\\\\\"/g, '\"');\r\n \r\n const editors = {\r\n de: 'DOCUMENT EDITOR',\r\n pe: 'PRESENTATION EDITOR',\r\n sse: 'SPREADSHEET EDITOR'\r\n };\r\n\r\n const nameEditor = (_t.textEditor || editors[editorType]).toUpperCase();\r\n\r\n return (\r\n \r\n \r\n {licInfo && typeof licInfo == 'object' && typeof(customer) == 'object' ? (\r\n \r\n
          \r\n {logoCustomer && logoCustomer.length ? (\r\n
          \r\n \"\"\r\n
          \r\n ) : null}\r\n
          \r\n
          \r\n

          {nameEditor}

          \r\n

          {_t.textVersion} {__PRODUCT_VERSION__}

          \r\n
          \r\n {mailCustomer || phoneCustomer ? (\r\n
          \r\n {mailCustomer && mailCustomer.length ? (\r\n

          \r\n {mailCustomer}\r\n

          \r\n ) : null}\r\n {phoneCustomer && phoneCustomer.length ? (\r\n

          \r\n {phoneCustomer}\r\n

          \r\n ) : null}\r\n
          \r\n ) : null}\r\n {addressCustomer && addressCustomer.length ? (\r\n
          \r\n

          \r\n {addressCustomer}\r\n

          \r\n
          \r\n ) : null}\r\n {nameCustomer || infoCustomer || urlCustomer ? (\r\n
          \r\n {nameCustomer && nameCustomer.length ? (\r\n

          {nameCustomer}

          \r\n ) : null}\r\n {infoCustomer && infoCustomer.length ? (\r\n

          {infoCustomer}

          \r\n ) : null}\r\n {urlCustomer && urlCustomer.length ? (\r\n

          \r\n \r\n {urlCustomer}\r\n \r\n

          \r\n ) : null}\r\n
          \r\n ) : null}\r\n
          \r\n

          \r\n {__PUBLISHER_ADDRESS__}\r\n

          \r\n
          \r\n
          \r\n

          {publisherName}

          \r\n

          \r\n {publisherPrintUrl}\r\n

          \r\n
          \r\n
          \r\n ) : (\r\n \r\n
          \r\n
          \r\n

          {nameEditor}

          \r\n

          {_t.textVersion} {__PRODUCT_VERSION__}

          \r\n
          \r\n
          \r\n

          \r\n {__PUBLISHER_ADDRESS__}\r\n

          \r\n
          \r\n
          \r\n

          {publisherName}

          \r\n

          \r\n {publisherPrintUrl}\r\n

          \r\n
          \r\n
          \r\n )}\r\n
          \r\n );\r\n};\r\n\r\nconst About = inject(\"storeAppOptions\")(observer(PageAbout));\r\nAbout.appVersion = () => (__PRODUCT_VERSION__).match(/\\d+.\\d+.\\d+/)[0]; // skip build number\r\nAbout.compareVersions = () => /d$/.test(__PRODUCT_VERSION__);\r\nAbout.developVersion = () => /(?:d|debug)$/.test(__PRODUCT_VERSION__);\r\n\r\n\r\nexport default About;","import React, { useState, useEffect, useContext } from \"react\";\nimport { Device } from '../../../../../common/mobile/utils/device';\nimport {f7, List, ListItem, Icon, Page, Navbar, Sheet} from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport { inject, observer } from \"mobx-react\";\nimport { MainContext } from \"../../page/main\";\n\nconst NavigationPopover = inject('storeNavigation')(observer(props => {\n const { t } = useTranslation();\n const _t = t('Settings', {returnObjects: true});\n const api = Common.EditorApi.get();\n const storeNavigation = props.storeNavigation;\n const bookmarks = storeNavigation.bookmarks;\n const navigationObject = api.asc_ShowDocumentOutline();\n const [currentPosition, setCurrentPosition] = useState(navigationObject ? navigationObject.get_CurrentPosition() : bookmarks.length ? bookmarks[0] : null);\n let arrHeaders = [];\n\n if(navigationObject) {\n arrHeaders = props.updateNavigation();\n } else if(bookmarks.length) {\n arrHeaders = props.updateViewerNavigation(bookmarks);\n }\n\n return (\n \n \n {!arrHeaders || !arrHeaders.length \n ?\n
          \n

          {t('Settings.textEmptyScreens')}

          \n
          \n :\n \n {arrHeaders.map((header, index) => {\n return (\n {\n setCurrentPosition(header.index);\n props.onSelectItem(header.index);\n }}>\n )\n })}\n \n }\n
          \n )\n}));\n\nconst NavigationSheet = inject('storeNavigation')(observer(props => {\n const { t } = useTranslation();\n const mainContext = useContext(MainContext);\n const api = Common.EditorApi.get();\n const storeNavigation = props.storeNavigation;\n const bookmarks = storeNavigation.bookmarks;\n const navigationObject = api.asc_ShowDocumentOutline();\n const [currentPosition, setCurrentPosition] = useState(navigationObject ? navigationObject.get_CurrentPosition() : bookmarks.length ? bookmarks[0] : null);\n let arrHeaders = [];\n\n if(navigationObject) {\n arrHeaders = props.updateNavigation();\n } else if(bookmarks.length) {\n arrHeaders = props.updateViewerNavigation(bookmarks);\n }\n\n const [stateHeight, setHeight] = useState('45%');\n const [stateOpacity, setOpacity] = useState(1);\n\n const [stateStartY, setStartY] = useState();\n const [isNeedClose, setNeedClose] = useState(false);\n\n const handleTouchStart = (event) => {\n const touchObj = event.changedTouches[0];\n setStartY(parseInt(touchObj.clientY));\n };\n\n const handleTouchMove = (event) => {\n const touchObj = event.changedTouches[0];\n const dist = parseInt(touchObj.clientY) - stateStartY;\n\n if (dist < 0) { \n setHeight('90%');\n setOpacity(1);\n setNeedClose(false);\n } else if (dist < 80) {\n setHeight('45%');\n setOpacity(1);\n setNeedClose(false);\n } else {\n setNeedClose(true);\n setOpacity(0.6);\n }\n };\n\n const handleTouchEnd = (event) => {\n const touchObj = event.changedTouches[0];\n const swipeEnd = parseInt(touchObj.clientY);\n const dist = swipeEnd - stateStartY;\n\n if (isNeedClose) {\n f7.sheet.close('#view-navigation-sheet');\n } else if (stateHeight === '90%' && dist > 20) {\n setHeight('45%');\n }\n };\n\n useEffect(() => {\n f7.sheet.open('#view-navigation-sheet', true);\n }, []);\n\n return (\n mainContext.closeOptions('navigation')} style={{height: `${stateHeight}`, opacity: `${stateOpacity}`}}>\n
          \n \n
          \n
          \n

          {t('Settings.textNavigation')}

          \n
          \n {!arrHeaders || !arrHeaders.length \n ?\n
          \n

          {t('Settings.textEmptyScreens')}

          \n
          \n :\n \n {arrHeaders.map((header, index) => {\n return (\n {\n setCurrentPosition(header.index);\n props.onSelectItem(header.index);\n }}>\n )\n })}\n \n }\n
          \n )\n}));\n\nexport {\n NavigationPopover,\n NavigationSheet\n};","import React, { Component } from \"react\";\nimport { NavigationPopover, NavigationSheet } from \"../../view/settings/Navigation\";\nimport { Device } from '../../../../../common/mobile/utils/device';\nimport { withTranslation } from 'react-i18next';\n\nclass NavigationController extends Component {\n constructor(props) {\n super(props);\n this.updateNavigation = this.updateNavigation.bind(this);\n }\n\n updateViewerNavigation(bookmarks) {\n let count = bookmarks.length,\n prevLevel = -1,\n headerLevel = -1,\n firstHeader = true,\n arrHeaders = [];\n\n for (let i = 0; i < count; i++) {\n let level = bookmarks[i].level - 1,\n hasParent = true;\n\n if (level > prevLevel && i > 0)\n arrHeaders[i - 1]['hasSubItems'] = true;\n\n if (headerLevel < 0 || level <= headerLevel) {\n if (i > 0 || firstHeader)\n headerLevel = level;\n hasParent = false;\n }\n\n arrHeaders.push({\n name: bookmarks[i].description,\n level: level,\n index: i,\n hasParent: hasParent,\n isEmptyItem: !bookmarks[i].description\n });\n\n prevLevel = level;\n }\n\n if (count > 0 && !firstHeader) {\n arrHeaders[0]['hasSubItems'] = false;\n arrHeaders[0]['isNotHeader'] = true;\n arrHeaders[0]['name'] = t('Settings.textBeginningDocument');\n }\n\n return arrHeaders;\n }\n\n updateNavigation() {\n const api = Common.EditorApi.get();\n const navigationObject = api.asc_ShowDocumentOutline();\n\n if (!navigationObject) return;\n\n const count = navigationObject.get_ElementsCount();\n const { t } = this.props;\n \n let arrHeaders = [],\n prevLevel = -1,\n headerLevel = -1,\n firstHeader = !navigationObject.isFirstItemNotHeader();\n\n for (let i = 0; i < count; i++) {\n let level = navigationObject.get_Level(i),\n hasParent = true;\n if (level > prevLevel && i > 0)\n arrHeaders[i - 1]['hasSubItems'] = true;\n if (headerLevel < 0 || level <= headerLevel) {\n if (i > 0 || firstHeader)\n headerLevel = level;\n hasParent = false;\n }\n\n arrHeaders.push({\n name: navigationObject.get_Text(i),\n level,\n index: i,\n hasParent,\n isEmptyItem: navigationObject.isEmptyItem(i)\n });\n\n prevLevel = level;\n }\n\n if (count > 0 && !firstHeader) {\n arrHeaders[0]['hasSubItems'] = false;\n arrHeaders[0]['isNotHeader'] = true;\n arrHeaders[0]['name'] = t('Settings.textBeginningDocument');\n }\n\n return arrHeaders;\n }\n\n onSelectItem(index) {\n const api = Common.EditorApi.get();\n const navigationObject = api.asc_ShowDocumentOutline();\n\n if (navigationObject) {\n navigationObject.goto(index);\n } else {\n api.asc_viewerNavigateTo(index);\n }\n };\n\n componentDidMount() {\n const api = Common.EditorApi.get();\n api.asc_enableKeyEvents(false);\n }\n\n render() {\n return (\n !Device.phone ? \n \n :\n \n );\n }\n}\n\nexport default withTranslation()(NavigationController);","import React, { useEffect, useRef } from 'react';\nimport { Navbar, Page } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport { Device } from '../../utils/device';\n\nconst frameStyle = {\n width: '100%',\n height: '100%',\n minHeight: 380\n}\n\nconst ViewSharingSettings = props => {\n const { t } = useTranslation();\n const sharingSettingsUrl = props.sharingSettingsUrl;\n const _t = t('Common.Collaboration', {returnObjects: true});\n const ref = useRef(null);\n\n useEffect(() => {\n const coauthSheetElem = ref.current.closest('.coauth__sheet');\n\n if(Device.phone) {\n coauthSheetElem.style.height = '100%';\n coauthSheetElem.style.maxHeight = '100%';\n }\n\n return () => {\n if(Device.phone) {\n coauthSheetElem.style.height = null;\n coauthSheetElem.style.maxHeight = '65%';\n }\n }\n }, []);\n\n return (\n \n \n
          \n \n
          \n
          \n )\n};\n\nexport default ViewSharingSettings;","import React, { useState } from 'react';\nimport { Device } from '../../../../../common/mobile/utils/device';\n\nconst PasswordField = ({ label, placeholder, value, handlerChange, maxLength }) => {\n const [password, setPassword] = useState(value);\n const [isShowPassword, setShowPassword] = useState(false);\n const isIos = Device.ios;\n\n const handlePasswordChange = (e) => {\n setPassword(e.target.value);\n handlerChange(e.target.value);\n };\n\n const toggleShowPassword = () => {\n setShowPassword(!isShowPassword);\n };\n\n return (\n
        • \n
          \n
          \n
          {label}
          \n
          \n \n {!isIos && \n \n }\n
          \n
          \n
          \n
        • \n );\n};\n\nexport default PasswordField;","import React, { useState } from 'react';\nimport { observer, inject } from \"mobx-react\";\nimport { Device } from '../../../../../common/mobile/utils/device';\nimport { Page, Navbar, List, ListItem, BlockTitle, Toggle, NavRight, f7, Link, ListInput, Icon, Block } from \"framework7-react\";\nimport { useTranslation } from \"react-i18next\";\nimport PasswordField from '../../components/PasswordField/PasswordField';\n\nconst ProtectionDocumentView = props => {\n const { t } = useTranslation();\n const _t = t(\"Settings\", { returnObjects: true });\n const isIos = Device.ios;\n const [stateTypeProtection, setStateTypeProtection] = useState(Asc.c_oAscEDocProtect.ReadOnly);\n const [isRequirePassword, setRequirePassword] = useState(false);\n const [password, changePassword] = useState('');\n const [passwordRepeat, changeRepeationPassword] = useState('');\n const isDisabledProtection = isRequirePassword ? ((!password.length || !passwordRepeat.length) || stateTypeProtection === null) : stateTypeProtection === null;\n\n const showErrorDialog = () => {\n f7.dialog.create({\n title: t('Settings.textPasswordNotMatched'),\n buttons: [\n {\n text: t('Settings.textOk')\n }\n ]\n }).open();\n };\n\n const changeHanlder = () => {\n if(isRequirePassword && password !== passwordRepeat) {\n showErrorDialog();\n } else {\n props.onProtectDocument(stateTypeProtection, password);\n }\n }\n\n return (\n \n \n \n \n {Device.android && }\n \n \n \n \n \n {\n setRequirePassword(!isRequirePassword);\n changePassword('');\n changeRepeationPassword('');\n }} />\n \n \n {isRequirePassword &&\n <>\n
          \n
            \n \n \n
          \n
          \n \n

          {t('Settings.textPasswordWarning')}

          \n
          \n \n }\n {t('Settings.textTypeEditing')}\n \n {\n setStateTypeProtection(Asc.c_oAscEDocProtect.ReadOnly);\n }}>\n {\n setStateTypeProtection(Asc.c_oAscEDocProtect.Forms);\n }}>\n {\n setStateTypeProtection(Asc.c_oAscEDocProtect.TrackedChanges);\n }}>\n {\n setStateTypeProtection(Asc.c_oAscEDocProtect.Comments);\n }}>\n \n \n

          {t('Settings.textTypeEditingWarning')}

          \n
          \n
          \n )\n};\n\nexport default ProtectionDocumentView;","import React from 'react';\nimport { Device } from '../../../../../common/mobile/utils/device';\nimport { observer, inject } from \"mobx-react\";\nimport ProtectionDocumentView from '../../view/settings/DocumentProtection';\nimport { f7 } from \"framework7-react\";\n\nclass ProtectionDocumentController extends React.Component {\n constructor(props) {\n super(props);\n this.onProtectDocument = this.onProtectDocument.bind(this);\n }\n\n closeModal() {\n if (Device.phone) {\n f7.sheet.close('.settings-popup', false);\n } else {\n f7.popover.close('#settings-popover', false);\n }\n };\n\n onProtectDocument(typeProtection, password) {\n const api = Common.EditorApi.get();\n const appOptions = this.props.storeAppOptions;\n const isViewer = appOptions.isViewer;\n const protection = api.asc_getDocumentProtection() || new AscCommonWord.CDocProtect();\n\n appOptions.setProtection(true);\n appOptions.setTypeProtection(typeProtection);\n\n protection.asc_setEditType(typeProtection);\n protection.asc_setPassword(password);\n api.asc_setDocumentProtection(protection);\n\n if(typeProtection !== Asc.c_oAscEDocProtect.TrackedChanges) {\n appOptions.changeViewerMode(true);\n api.asc_addRestriction(Asc.c_oAscRestrictionType.View);\n } else if(!isViewer) {\n api.asc_removeRestriction(Asc.c_oAscRestrictionType.View)\n api.asc_addRestriction(Asc.c_oAscRestrictionType.None);\n }\n\n this.closeModal();\n };\n\n render() {\n return \n }\n}\n\nexport default inject('storeAppOptions')(observer(ProtectionDocumentController));","import React, { useState } from 'react';\nimport { observer, inject } from \"mobx-react\";\nimport { Page, Navbar, List, ListItem, BlockTitle, Toggle, NavRight, f7, Link, ListInput, Icon, Block } from \"framework7-react\";\nimport { useTranslation } from \"react-i18next\";\n\nconst ProtectionView = inject(\"storeAppOptions\")(observer(props => {\n const { t } = useTranslation();\n const _t = t(\"Settings\", { returnObjects: true });\n const appOptions = props.storeAppOptions;\n const isProtected = appOptions.isProtected;\n\n return (\n \n \n \n props.onProtectClick()} link=\"#\">\n \n \n \n \n \n \n \n )\n}));\n\nexport default ProtectionView;","import React from 'react';\nimport { CSSTransition } from \"react-transition-group\";\n\nconst Snackbar = ({ isShowSnackbar, message, closeCallback }) => {\n return (\n {\n if(!isAppearing) {\n closeCallback();\n }\n }}\n >\n
          \n
          \n

          {message}

          \n
          \n
          \n
          \n );\n}\n\nexport default Snackbar;","import React, { useEffect, useState } from 'react';\nimport { observer, inject } from \"mobx-react\";\nimport ProtectionView from '../../view/settings/Protection';\nimport { useTranslation } from 'react-i18next';\nimport { f7 } from \"framework7-react\";\nimport { Device } from '../../../../../common/mobile/utils/device';\nimport Snackbar from '../../components/Snackbar/Snackbar';\n\nconst ProtectionController = props => {\n const { t } = useTranslation();\n const [isSnackbarVisible, setSnackbarVisible] = useState(false);\n\n const onProtectClick = () => {\n const api = Common.EditorApi.get();\n const appOptions = props.storeAppOptions;\n const isViewer = appOptions.isViewer;\n const isProtected = appOptions.isProtected;\n let propsProtection = api.asc_getDocumentProtection();\n const isPassword = propsProtection?.asc_getIsPassword();\n\n if(isProtected) {\n if(propsProtection && isPassword) {\n f7.dialog.create({\n title: t('Settings.titleDialogUnprotect'),\n text: t('Settings.textDialogUnprotect'),\n content: Device.ios ?\n '
          ' : '
          ',\n cssClass: 'dlg-adv-options',\n on: {\n opened: () => {\n const passwordIcon = document.querySelector('.modal-password__icon');\n const passwordField = document.querySelector('#protection-password');\n const btnUnprotect = document.querySelector('.btn-unprotect');\n\n passwordField.addEventListener('input', () => {\n if(passwordField.value) {\n btnUnprotect.classList.remove('disabled');\n } else {\n btnUnprotect.classList.add('disabled');\n }\n });\n \n passwordIcon.addEventListener('click', () => {\n passwordIcon.classList.toggle('icon-show-password');\n passwordIcon.classList.toggle('icon-hide-password');\n passwordField.type = passwordField.type === 'password' ? 'text' : 'password';\n });\n },\n },\n buttons: [\n {\n text: t('Settings.textCancel')\n },\n {\n text: t('Settings.textOk'),\n cssClass: 'btn-unprotect disabled',\n onClick: () => {\n const passwordField = document.querySelector('#protection-password');\n const passwordValue = passwordField?.value;\n \n if(passwordValue) {\n propsProtection.asc_setEditType(Asc.c_oAscEDocProtect.None);\n propsProtection.asc_setPassword(passwordValue);\n const isUnprotected = api.asc_setDocumentProtection(propsProtection);\n\n if(isUnprotected && !isViewer) {\n api.asc_removeRestriction(Asc.c_oAscRestrictionType.View)\n api.asc_addRestriction(Asc.c_oAscRestrictionType.None);\n } \n }\n }\n }\n ]\n }).open();\n } else {\n if (!propsProtection) \n propsProtection = new AscCommonWord.CDocProtect();\n\n appOptions.setTypeProtection(null);\n propsProtection.asc_setEditType(Asc.c_oAscEDocProtect.None);\n const isUnprotected = api.asc_setDocumentProtection(propsProtection);\n\n if(isUnprotected) {\n if(!isViewer) {\n api.asc_removeRestriction(Asc.c_oAscRestrictionType.View)\n api.asc_addRestriction(Asc.c_oAscRestrictionType.None);\n } \n\n setSnackbarVisible(true);\n }\n }\n } else {\n f7.views.current.router.navigate('/protect');\n }\n }\n\n return (\n <>\n \n setSnackbarVisible(false)} />\n \n );\n \n}\n\nexport default inject('storeAppOptions')(observer(ProtectionController));","import React, { useState } from 'react';\nimport { observer, inject } from \"mobx-react\";\nimport { Device } from '../../../../../common/mobile/utils/device';\nimport { Page, Navbar, List, ListItem, BlockTitle, Toggle, NavRight, f7, Link, ListInput, Icon, Block } from \"framework7-react\";\nimport { useTranslation } from \"react-i18next\";\nimport PasswordField from '../../components/PasswordField/PasswordField';\n\nconst EncryptionView = inject(\"storeAppOptions\")(observer(props => {\n const { t } = useTranslation();\n const _t = t(\"Settings\", { returnObjects: true });\n const isIos = Device.ios;\n const appOptions = props.storeAppOptions;\n const isFileEncrypted = appOptions.isFileEncrypted;\n const [isRequiredPassword, setRequirePassword] = useState(isFileEncrypted);\n const [password, changePassword] = useState('');\n const [passwordRepeat, repeatPassword] = useState('');\n const isDisabledEncryption = isFileEncrypted && !isRequiredPassword ? false : !password.length || !passwordRepeat.length;\n\n const showErrorDialog = () => {\n f7.dialog.create({\n title: t('Settings.textPasswordNotMatched'),\n buttons: [\n {\n text: t('Settings.textOk')\n }\n ]\n }).open();\n };\n\n const changeHanlder = () => {\n if(isFileEncrypted && !isRequiredPassword) {\n props.deletePassword();\n } else if(password !== passwordRepeat) {\n showErrorDialog();\n } else {\n props.setPassword(password);\n }\n }\n\n return (\n \n \n \n \n {Device.android && }\n \n \n \n {isFileEncrypted &&\n <>\n \n \n {\n setRequirePassword(!isRequiredPassword);\n }} />\n \n \n \n }\n {isFileEncrypted && isRequiredPassword &&\n {t('Settings.textChangePassword')}\n }\n {(isFileEncrypted && isRequiredPassword || !isFileEncrypted) &&\n <>\n
          \n
            \n \n \n
          \n
          \n \n

          {t('Settings.textPasswordWarning')}

          \n
          \n \n }\n
          \n )\n}));\n\nexport default EncryptionView;","import React from 'react';\nimport { observer, inject } from \"mobx-react\";\nimport EncryptionView from '../../view/settings/FileEncryption';\nimport { withTranslation } from 'react-i18next';\nimport { f7 } from \"framework7-react\";\nimport { Device } from '../../../../../common/mobile/utils/device';\n\nclass FileEncryptionController extends React.Component {\n constructor(props) {\n super(props);\n\n this.deletePassword = this.deletePassword.bind(this);\n this.setPassword = this.setPassword.bind(this);\n }\n\n closeModal() {\n if (Device.phone) {\n f7.sheet.close('.settings-popup', false);\n } else {\n f7.popover.close('#settings-popover', false);\n }\n }\n\n setPassword(passwordValue) {\n const api = Common.EditorApi.get();\n\n api.asc_setCurrentPassword(passwordValue);\n this.closeModal();\n }\n\n deletePassword() {\n const api = Common.EditorApi.get();\n const appOptions = this.props.storeAppOptions;\n\n appOptions.setEncryptionFile(false);\n api.asc_resetPassword();\n this.closeModal();\n }\n\n render() {\n return (\n \n )\n }\n}\n\nexport default inject('storeAppOptions')(observer(withTranslation()(FileEncryptionController)));","import React, { Fragment, useContext } from 'react';\nimport { Page, Navbar, NavRight, Link, Icon, ListItem, List, Toggle } from 'framework7-react';\nimport { Device } from \"../../../../../common/mobile/utils/device\";\nimport { observer, inject } from \"mobx-react\";\nimport { useTranslation } from 'react-i18next';\nimport { SettingsContext } from '../../controller/settings/Settings';\nimport { MainContext } from '../../page/main';\n\nconst SettingsPage = inject(\"storeAppOptions\", \"storeReview\", \"storeDocumentInfo\")(observer(props => {\n const { t } = useTranslation();\n const _t = t('Settings', {returnObjects: true});\n const settingsContext = useContext(SettingsContext);\n const {openOptions, isBranding} = useContext(MainContext);\n const appOptions = props.storeAppOptions;\n const canProtect = appOptions.canProtect;\n const storeReview = props.storeReview;\n const displayMode = storeReview.displayMode;\n const docInfo = props.storeDocumentInfo;\n const docTitle = docInfo.dataDoc.title;\n const docExt = docInfo.dataDoc ? docInfo.dataDoc.fileType : '';\n const isForm = appOptions.isForm;\n const isHistoryDisabled = docExt && (docExt === 'xps' || docExt === 'djvu' || docExt === 'pdf');\n const navbar =\n \n
          {docTitle}
          \n {Device.phone && {_t.textDone}}\n
          ;\n\n const onOpenOptions = name => {\n openOptions(name);\n settingsContext.closeModal(); \n }\n\n // set mode\n const isViewer = appOptions.isViewer;\n const isMobileView = appOptions.isMobileView;\n const isFavorite = appOptions.isFavorite;\n const canFillForms = appOptions.canFillForms;\n const isEditableForms = isForm && canFillForms;\n const canSubmitForms = appOptions.canSubmitForms;\n const canCloseEditor = appOptions.canCloseEditor;\n const closeButtonText = canCloseEditor && appOptions.customization.close.text;\n const canUseHistory = appOptions.canUseHistory;\n\n let _isEdit = false,\n _canDownload = false,\n _canDownloadOrigin = false,\n _canAbout = true,\n _canHelp = true,\n _canPrint = false,\n _canFeedback = true,\n _canDisplayInfo = true;\n\n if (appOptions.isDisconnected) {\n _isEdit = false;\n if (!appOptions.enableDownload)\n _canPrint = _canDownload = _canDownloadOrigin = false;\n } else {\n _isEdit = appOptions.isEdit;\n _canDownload = appOptions.canDownload;\n _canDownloadOrigin = appOptions.canDownloadOrigin;\n _canPrint = appOptions.canPrint;\n\n if (appOptions.customization && appOptions.canBrandingExt) {\n _canAbout = appOptions.customization.about !== false;\n }\n\n if (appOptions.customization) {\n _canHelp = appOptions.customization.help !== false;\n _canFeedback = appOptions.customization.feedback !== false;\n _canDisplayInfo = appOptions.customization.info !== false;\n }\n }\n \n return (\n \n {navbar}\n \n {isEditableForms ? [\n (isFavorite !== undefined && isFavorite !== null ?\n \n \n \n : ''),\n (canFillForms && canSubmitForms ? \n \n \n \n : ''),\n (_canDownload && canFillForms && !canSubmitForms ? \n \n \n \n : ''),\n \n \n \n ] : null}\n {(Device.phone || isEditableForms) &&\n \n \n \n }\n {(_isEdit && canProtect) &&\n \n \n \n }\n {_isEdit && !isHistoryDisabled && canUseHistory &&\n {\n if(Device.phone) {\n onOpenOptions('history');\n }\n }}>\n \n \n }\n {!isEditableForms ? \n {\n if(Device.phone) {\n onOpenOptions('navigation');\n } \n }}>\n \n \n : null}\n {window.matchMedia(\"(max-width: 359px)\").matches ?\n {\n onOpenOptions('coauth');\n }} className='no-indicator'>\n \n \n : null}\n {Device.sailfish && _isEdit &&\n settingsContext.onOrthographyCheck()} className='no-indicator' link=\"#\">\n \n \n }\n {((!isViewer && Device.phone) || isEditableForms) &&\n \n \n {\n onOpenOptions('snackbar');\n settingsContext.onChangeMobileView();\n }} />\n \n }\n {(_isEdit && !isViewer) &&\n \n \n \n }\n \n \n \n {_canDownload &&\n \n \n \n }\n {_canDownloadOrigin &&\n \n \n \n }\n {_canPrint &&\n \n \n \n }\n {!(!_canDisplayInfo && isBranding) &&\n \n \n \n }\n {_canHelp &&\n \n \n \n }\n {_canAbout &&\n \n \n \n }\n {_canFeedback &&\n \n \n \n }\n {canCloseEditor &&\n Common.Notifications.trigger('close')}>\n }\n \n \n )\n}));\n\nexport default SettingsPage;","import React, { useCallback, useEffect, useState } from 'react';\nimport { Page, Navbar, BlockTitle, List, ListItem, Icon, NavRight, Link } from \"framework7-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { observer, inject } from \"mobx-react\";\nimport { Device } from '../../utils/device';\n\nconst VersionHistoryView = inject('storeVersionHistory', 'users')(observer(props => {\n const { t } = useTranslation();\n const usersStore = props.users;\n const historyStore = props.storeVersionHistory;\n const currentVersion = historyStore.currentVersion;\n const arrVersions = historyStore.arrVersions;\n const [filteredVersions, setFilteredVersions] = useState([]);\n const isNavigate = props.isNavigate;\n const usersVersions = historyStore.usersVersions;\n\n useEffect(() => {\n if(arrVersions.length > 0) {\n const filteredVersions = groupByVersions(arrVersions);\n setFilteredVersions(filteredVersions);\n }\n }, [arrVersions]);\n\n const handleClickRevision = useCallback(version => {\n if(version !== currentVersion) {\n props.onSelectRevision(version);\n }\n }, []);\n\n function groupByVersions(arr) {\n return arr.reduce((result, revision) => {\n const value = revision.version;\n \n const arrVersion = result.find(arr => {\n return arr[0].version === value;\n });\n \n if (arrVersion) {\n arrVersion.push(revision);\n } else {\n result.push([revision]);\n }\n \n return result;\n }, []);\n }\n\n return (\n \n \n {Device.phone ?\n \n \n \n \n \n : !isNavigate &&\n \n \n \n \n \n }\n \n {filteredVersions.length > 0 ? \n filteredVersions.map((versions, index) => {\n return (\n \n {`${versions.find(ver => ver.selected) ? t('Common.VersionHistory.textCurrent') + ' - ' : ''} ${t('Common.VersionHistory.textVersion')} ${versions[0].revision}`}\n \n {versions.map((version, index) => {\n return (\n handleClickRevision(version)}>\n
          user.id === version.userid).color}}>{usersStore.getInitials(version.username)}
          \n {(version === currentVersion && !version.selected && version.canRestore) &&\n
          \n \n
          \n }\n
          \n )\n })}\n
          \n
          \n )\n }) : null}\n
          \n )\n}));\n\nexport default VersionHistoryView;","export const getUserColor = (id, intValue) => {\n\tconst api = Common.EditorApi.get();\n\tconst color = api.asc_getUserColorById(id);\n\tconst userColors = [\"#\" + (\"000000\" + color.toString(16)).slice(-6), color];\n\n\treturn intValue ? userColors[1] : userColors[0];\n}","import React, { useEffect, useRef } from 'react';\nimport { observer, inject } from \"mobx-react\";\nimport VersionHistoryView from '../view/VersionHistory';\nimport { f7, Sheet, Popover, View } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport { Device } from '../../../../common/mobile/utils/device';\nimport { getUserColor } from '../../utils/getUserColor';\n\nconst VersionHistoryController = inject('storeAppOptions', 'storeVersionHistory')(observer(props => {\n const api = Common.EditorApi.get();\n const appOptions = props.storeAppOptions;\n const isViewer = appOptions.isViewer;\n const historyStore = props.storeVersionHistory;\n const isVersionHistoryMode = historyStore.isVersionHistoryMode;\n const arrVersionsHistory = historyStore.arrVersions;\n const fileTypes = {\n de: 'docx',\n pe: 'pptx',\n sse: 'xslx'\n };\n const fileType = fileTypes[window.editorType];\n const { t } = useTranslation();\n\n let currentChangeId = -1;\n let currentDocId = '';\n let currentDocIdPrev = '';\n let currentServerVersion = 0;\n let currentUserId = '';\n let currentUserName = '';\n let currentUserColor = '';\n let currentDateCreated = '';\n let isFromSelectRevision;\n let currentRev = 0;\n let timerId;\n\n const timeoutIdRef = useRef(null);\n const currentArrColors = useRef(null);\n\n useEffect(() => {\n api.asc_enableKeyEvents(false);\n\n if(arrVersionsHistory.length < 1) {\n Common.Gateway.requestHistory();\n Common.Gateway.on('refreshhistory', onRefreshHistory);\n Common.Gateway.on('sethistorydata', onSetHistoryData);\n\n api.asc_registerCallback('asc_onDownloadUrl', onDownloadUrl);\n api.asc_registerCallback('asc_onExpiredToken', onExpiredToken);\n }\n\n if(window.editorType === 'de') {\n if(!isViewer) {\n appOptions.changeViewerMode(true);\n api.asc_addRestriction(Asc.c_oAscRestrictionType.View);\n }\n }\n \n if(!isVersionHistoryMode) {\n historyStore.changeVersionHistoryMode(true);\n }\n \n if(!props.isNavigate) {\n if(Device.phone) {\n f7.sheet.open('#version-history-sheet', true);\n } else {\n f7.popover.open('#version-history-popover', '#btn-open-history');\n }\n }\n\n return () => {\n api.asc_enableKeyEvents(true);\n api.asc_unregisterCallback('asc_onDownloadUrl', onDownloadUrl);\n api.asc_unregisterCallback('asc_onExpiredToken', onExpiredToken);\n }\n }, []);\n\n const onExpiredToken = () => {\n setTimeout(() => {\n Common.Gateway.requestHistoryData(currentRev);\n }, 10);\n }\n\n const onDownloadUrl = (url, fileType) => {\n if (isFromSelectRevision) {\n Common.Gateway.requestRestore(isFromSelectRevision, url, fileType);\n }\n\n isFromSelectRevision = null;\n }\n\n const onRefreshHistory = opts => {\n if (!appOptions.canUseHistory) return;\n \n if (opts.data.error || !opts.data.history) {\n if (arrVersions.length) {\n const arr = arrVersions.map(version => {\n version.canRestore = false;\n return version;\n });\n\n historyStore.setVersions(arr);\n }\n\n f7.dialog.create({\n title: t('Common.VersionHistory.notcriticalErrorTitle'),\n text: (opts.data.error) ? opts.data.error : t('Common.VersionHistory.txtErrorLoadHistory'),\n buttons: [\n {\n text: t('Common.VersionHistory.textOk')\n }\n ]\n }).open();\n } else {\n api.asc_coAuthoringDisconnect();\n\n const versions = opts.data.history;\n let arrVersions = [];\n let arrColors = [];\n let ver, version, currentVersion = null, group = -1, prev_ver = -1, docIdPrev = '', user = null, usersCnt = 0;\n\n for (ver = versions.length - 1; ver >= 0; ver--) {\n version = versions[ver];\n\n if (version.versionGroup === undefined || version.versionGroup === null) {\n version.versionGroup = version.version;\n }\n\n if (version) {\n if (!version.user) version.user = {};\n\n docIdPrev = (ver > 0 && versions[ver - 1]) ? versions[ver - 1].key : version.key + '0';\n user = historyStore.findUserById(version.user.id);\n\n if (!user) {\n const color = getUserColor(version.user.id || version.user.name || t('Common.VersionHistory.textAnonymous'), true);\n\n user = {\n id: version.user.id,\n username: version.user.name || t('Common.VersionHistory.textAnonymous'),\n colorval: color,\n color: generateUserColor(color),\n \n };\n\n historyStore.addUser(user);\n }\n\n arrVersions.push({\n version: version.versionGroup,\n revision: version.version,\n userid: version.user.id,\n username: version.user.name || t('Common.VersionHistory.textAnonymous'),\n usercolor: user.color,\n created: version.created,\n docId: version.key,\n markedAsVersion: (group !== version.versionGroup),\n selected: (opts.data.currentVersion == version.version),\n canRestore: appOptions.canHistoryRestore && (ver < versions.length - 1),\n isExpanded: true,\n serverVersion: version.serverVersion,\n fileType,\n isRevision: true\n });\n\n if (opts.data.currentVersion == version.version) {\n currentVersion = arrVersions[arrVersions.length - 1];\n }\n\n group = version.versionGroup;\n\n if (prev_ver !== version.version) {\n prev_ver = version.version;\n arrColors.reverse();\n\n for (let i = 0; i < arrColors.length; i++) {\n arrVersions[arrVersions.length - i - 2].arrColors = arrColors;\n }\n\n arrColors = [];\n }\n\n arrColors.push(user.colorval);\n\n let changes = version.changes, change, i;\n\n if (changes && changes.length > 0) {\n arrVersions[arrVersions.length - 1].docIdPrev = docIdPrev;\n\n if (version.serverVersion && version.serverVersion == appOptions.buildVersion) {\n arrVersions[arrVersions.length - 1].changeid = changes.length - 1;\n arrVersions[arrVersions.length - 1].hasChanges = changes.length > 1;\n\n for (i = changes.length - 2; i >= 0; i--) {\n change = changes[i];\n user = historyStore.findUserById(change.user.id);\n\n if (!user) {\n const color = getUserColor(change.user.id || change.user.name || t('Common.VersionHistory.textAnonymous'), true);\n\n user = {\n id: change.user.id,\n username: change.user.name || t('Common.VersionHistory.textAnonymous'),\n colorval: color,\n color: generateUserColor(color),\n };\n\n historyStore.addUser(user);\n }\n\n arrVersions.push({\n version: version.versionGroup,\n revision: version.version,\n changeid: i,\n userid: change.user.id,\n username: change.user.name || t('Common.VersionHistory.textAnonymous'),\n usercolor: user.color,\n created: change.created,\n docId: version.key,\n docIdPrev: docIdPrev,\n selected: false,\n canRestore: appOptions.canHistoryRestore && appOptions.canDownload,\n isRevision: false,\n isVisible: true,\n serverVersion: version.serverVersion,\n fileType\n });\n\n arrColors.push(user.colorval);\n }\n }\n } else if (ver == 0 && versions.length == 1) {\n arrVersions[arrVersions.length - 1].docId = version.key + '1';\n }\n }\n }\n\n if (arrColors.length > 0) {\n arrColors.reverse();\n\n for (let i = 0; i < arrColors.length; i++) {\n arrVersions[arrVersions.length - i - 1].arrColors = arrColors;\n }\n\n arrColors = [];\n }\n\n historyStore.setVersions(arrVersions);\n\n if (currentVersion === null && historyStore.arrVersions.length > 0) {\n arrVersions[0].selected = true;\n currentVersion = JSON.parse(JSON.stringify(arrVersions[0]));\n \n historyStore.setVersions([...arrVersions]);\n historyStore.changeVersion(currentVersion);\n } else if(!historyStore.currentVersion) {\n onSelectRevision(currentVersion);\n }\n }\n }\n\n const generateUserColor = color => {\n return '#' + color.toString(16);\n }\n\n const onSetHistoryData = opts => {\n if (!appOptions.canUseHistory) return;\n\n if (timeoutIdRef.current) {\n clearTimeout(timeoutIdRef.current);\n timerId = 0;\n }\n\n if (opts.data.error) {\n f7.dialog.create({\n title: t('Common.VersionHistory.notcriticalErrorTitle'),\n text: opts.data.error,\n buttons: [\n {\n text: t('Common.VersionHistory.textOk')\n }\n ]\n }).open();\n } else {\n const data = opts.data;\n \n if (data !== null) {\n let rev, revisions = historyStore.findRevisions(data.version), \n urlGetTime = new Date(),\n diff = (!opts.data.previous || currentChangeId === undefined) ? null : opts.data.changesUrl,\n url = !diff && opts.data.previous ? opts.data.previous.url : opts.data.url,\n fileType = !diff && opts.data.previous ? opts.data.previous.fileType : opts.data.fileType,\n docId = opts.data.key ? opts.data.key : currentDocId,\n docIdPrev = opts.data.previous && opts.data.previous.key ? opts.data.previous.key : currentDocIdPrev,\n token = opts.data.token;\n\n if (revisions && revisions.length > 0) {\n for(let i = 0; i < revisions.length; i++) {\n rev = revisions[i];\n rev.url = url;\n rev.urlDiff = diff;\n rev.urlGetTime = urlGetTime;\n\n if (opts.data.key) {\n rev.docId = docId;\n rev.docIdPrev = docIdPrev;\n }\n\n rev.token = token;\n\n if(fileType) {\n rev.fileType = fileType;\n }\n }\n }\n\n const hist = new Asc.asc_CVersionHistory();\n \n hist.asc_setUrl(url);\n hist.asc_setUrlChanges(diff);\n hist.asc_setDocId(!diff ? docId : docIdPrev);\n hist.asc_setCurrentChangeId(currentChangeId);\n hist.asc_setArrColors(currentArrColors.current);\n hist.asc_setToken(token);\n hist.asc_setIsRequested(true);\n hist.asc_setServerVersion(currentServerVersion);\n hist.asc_SetUserId(currentUserId);\n hist.asc_SetUserName(currentUserName);\n hist.asc_SetUserColor(currentUserColor);\n hist.asc_SetDateOfRevision(currentDateCreated);\n\n api.asc_showRevision(hist);\n currentRev = data.version;\n\n const selectedRev = revisions.find(revision => revision.selected);\n \n if(selectedRev) {\n historyStore.changeVersion(selectedRev);\n } \n }\n }\n };\n\n const onRestoreRevision = revision => {\n const isRevision = revision.isRevision;\n\n if (isRevision) {\n f7.dialog.create({\n title: t('Common.VersionHistory.titleWarningRestoreVersion'),\n text: t('Common.VersionHistory.textWarningRestoreVersion'),\n buttons: [\n {\n text: t('Common.VersionHistory.textCancel'),\n bold: true\n }, \n {\n text: t('Common.VersionHistory.textRestore'),\n onClick: () => {\n Common.Gateway.requestRestore(revision.revision, undefined, revision.fileType);\n }\n }\n ]\n }).open();\n } else {\n isFromSelectRevision = revision.revision;\n\n const fileType = Asc.c_oAscFileType[(revision.fileType || '').toUpperCase()] || Asc.c_oAscFileType.DOCX;\n api.asc_DownloadAs(new Asc.asc_CDownloadOptions(fileType, true));\n }\n }\n\n const onSelectRevision = version => {\n const rev = version.revision;\n const url = version.url;\n const urlGetTime = new Date();\n\n historyStore.changeVersion(version);\n\n currentRev = rev;\n currentChangeId = version.changeid;\n currentDocId = version.docId;\n currentDocIdPrev = version.docIdPrev;\n currentArrColors.current = version.arrColors;\n currentServerVersion = version.serverVersion;\n currentUserId = version.userid;\n currentUserName = version.username;\n currentUserColor = version.usercolor;\n currentDateCreated = version.created;\n\n if (!url || (urlGetTime - version.urlGetTime > 5 * 60000)) {\n if (!timerId) {\n timeoutIdRef.current = setTimeout(() => {\n timerId = 0;\n }, 30000);\n\n setTimeout(() => {\n Common.Gateway.requestHistoryData(rev);\n }, 10);\n }\n } else {\n const urlDiff = version.urlDiff;\n const token = version.token;\n const hist = new Asc.asc_CVersionHistory();\n\n hist.asc_setDocId(!urlDiff ? currentDocId : currentDocIdPrev);\n hist.asc_setUrl(url);\n hist.asc_setUrlChanges(urlDiff);\n hist.asc_setCurrentChangeId(currentChangeId);\n hist.asc_setArrColors(currentArrColors.current);\n hist.asc_setToken(token);\n hist.asc_setIsRequested(false);\n hist.asc_setServerVersion(currentServerVersion);\n hist.asc_SetUserId(currentUserId);\n hist.asc_SetUserName(currentUserName);\n hist.asc_SetUserColor(currentUserColor);\n hist.asc_SetDateOfRevision(currentDateCreated);\n\n api.asc_showRevision(hist);\n }\n }\n\n return (\n props.isNavigate ?\n !Device.phone &&\n \n :\n !Device.phone ?\n props.onclosed()}>\n \n \n \n \n :\n props.onclosed()}>\n \n \n\n )\n}));\n\nexport default VersionHistoryController;\n","import React, { useContext, useEffect } from 'react';\nimport { f7, View, Popup, Popover } from 'framework7-react';\nimport { Device } from '../../../../../common/mobile/utils/device';\nimport DocumentSettingsController from \"../../controller/settings/DocumentSettings\";\nimport DocumentInfoController from \"../../controller/settings/DocumentInfo\";\nimport { DownloadController } from \"../../controller/settings/Download\";\nimport ApplicationSettingsController from \"../../controller/settings/ApplicationSettings\";\nimport { DocumentFormats, DocumentMargins, DocumentColorSchemes } from \"./DocumentSettings\";\nimport { MacrosSettings, ThemeSettings } from \"./ApplicationSettings\";\nimport About from '../../../../../common/mobile/lib/view/About';\nimport NavigationController from '../../controller/settings/Navigation';\nimport SharingSettings from \"../../../../../common/mobile/lib/view/SharingSettings\";\nimport ProtectionDocumentController from '../../controller/settings/DocumentProtection';\nimport ProtectionController from '../../controller/settings/Protection';\nimport FileEncryptionController from '../../controller/settings/FileEncryption';\nimport SettingsPage from './SettingsPage';\nimport { MainContext } from '../../page/main';\nimport VersionHistoryController from '../../../../../common/mobile/lib/controller/VersionHistory';\n\nconst routes = [\n {\n path: '/settings/',\n component: SettingsPage,\n keepAlive: true,\n },\n {\n path: '/document-settings/',\n component: DocumentSettingsController,\n },\n {\n path: '/margins/',\n component: DocumentMargins,\n },\n {\n path: '/document-formats/',\n component: DocumentFormats,\n },\n {\n path: \"/document-info/\",\n component: DocumentInfoController,\n },\n {\n path: '/application-settings/',\n component: ApplicationSettingsController\n },\n {\n path: '/macros-settings/',\n component: MacrosSettings\n },\n {\n path: '/download/',\n component: DownloadController\n },\n {\n path: '/color-schemes/',\n component: DocumentColorSchemes\n },\n {\n path: '/about/',\n component: About\n },\n {\n path: '/theme-settings/',\n component: ThemeSettings\n },\n // Navigation\n {\n path: '/navigation',\n component: NavigationController\n },\n // Sharing Settings\n {\n path: '/sharing-settings/',\n component: SharingSettings\n },\n // Protection\n {\n path: '/protection',\n component: ProtectionController\n },\n {\n path: '/protect',\n component: ProtectionDocumentController\n },\n // Encryption\n {\n path: '/encrypt',\n component: FileEncryptionController\n },\n // Version History \n {\n path: '/version-history',\n component: VersionHistoryController,\n options: {\n props: {\n isNavigate: true\n }\n }\n },\n];\n\nroutes.forEach(route => {\n route.options = {\n ...route.options,\n transition: 'f7-push'\n };\n});\n\nconst SettingsView = () => {\n const mainContext = useContext(MainContext);\n\n useEffect(() => {\n if(Device.phone) {\n f7.popup.open('.settings-popup');\n } else {\n f7.popover.open('#settings-popover', '#btn-settings');\n }\n }, []);\n\n return (\n !Device.phone ?\n mainContext.closeOptions('settings')}>\n \n \n \n :\n mainContext.closeOptions('settings')}>\n \n \n \n \n )\n};\n\nexport default SettingsView;\n","import React, { createContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { f7 } from 'framework7-react';\nimport { observer, inject } from \"mobx-react\";\nimport { Device } from '../../../../../common/mobile/utils/device';\nimport SettingsView from \"../../view/settings/Settings\";\nimport { LocalStorage } from \"../../../../../common/mobile/utils/LocalStorage.mjs\";\n\nexport const SettingsContext = createContext();\n\nconst SettingsController = props => {\n const storeDocumentInfo = props.storeDocumentInfo;\n const appOptions = props.storeAppOptions;\n const docExt = storeDocumentInfo.dataDoc.fileType;\n const { t } = useTranslation();\n\n const closeModal = () => {\n if(Device.phone) {\n f7.sheet.close('.settings-popup', false);\n } else {\n f7.popover.close('#settings-popover', false);\n }\n };\n\n const onPrint = () => {\n const api = Common.EditorApi.get();\n\n closeModal();\n setTimeout(() => {\n api.asc_Print();\n }, 400);\n };\n\n const showHelp = () => {\n let url = __HELP_URL__;\n\n if (url.charAt(url.length-1) !== '/') {\n url += '/';\n }\n\n if (Device.sailfish || Device.android) {\n url+='mobile-applications/documents/mobile-web-editors/android/index.aspx';\n }\n else {\n url+='mobile-applications/documents/mobile-web-editors/ios/index.aspx';\n }\n\n closeModal();\n setTimeout(() => {\n window.open(url, \"_blank\");\n }, 400);\n };\n\n const showFeedback = () => {\n let config = appOptions.config;\n\n closeModal();\n setTimeout(() => {\n if(config && !!config.feedback && !!config.feedback.url) {\n window.open(config.feedback.url, \"_blank\");\n } else window.open(__SUPPORT_URL__, \"_blank\");\n }, 400);\n }\n\n const onOrthographyCheck = () => {\n closeModal();\n setTimeout(() => {\n Common.EditorApi.get().asc_pluginRun(\"asc.{B631E142-E40B-4B4C-90B9-2D00222A286E}\", 0);\n }, 400);\n };\n\n const onDownloadOrigin = () => {\n closeModal();\n setTimeout(() => {\n Common.EditorApi.get().asc_DownloadOrigin();\n }, 0);\n };\n\n const onChangeMobileView = () => {\n const api = Common.EditorApi.get();\n const isMobileView = appOptions.isMobileView;\n\n LocalStorage.setBool('mobile-view', !isMobileView);\n appOptions.changeMobileView();\n api.ChangeReaderMode();\n };\n\n const changeTitleHandler = () => {\n if(!appOptions.canRename) return;\n\n const docTitle = storeDocumentInfo.dataDoc.title;\n const api = Common.EditorApi.get();\n api.asc_enableKeyEvents(true);\n\n f7.dialog.create({\n title: t('Toolbar.textRenameFile'),\n text : t('Toolbar.textEnterNewFileName'),\n content: Device.ios ?\n '
          ' : '
          ',\n cssClass: 'dlg-adv-options',\n buttons: [\n {\n text: t('Edit.textCancel')\n },\n {\n text: t('Edit.textOk'),\n cssClass: 'btn-change-title',\n bold: true,\n close: false,\n onClick: () => {\n const titleFieldValue = document.querySelector('#modal-title').value;\n \n if(titleFieldValue.trim().length) {\n changeTitle(titleFieldValue);\n f7.dialog.close();\n }\n }\n }\n ],\n on: {\n opened: () => {\n const nameDoc = docTitle.split('.')[0];\n const titleField = document.querySelector('#modal-title');\n const btnChangeTitle = document.querySelector('.btn-change-title');\n\n titleField.value = nameDoc;\n titleField.focus();\n titleField.select();\n\n titleField.addEventListener('input', () => {\n if(titleField.value.trim().length) {\n btnChangeTitle.classList.remove('disabled');\n } else {\n btnChangeTitle.classList.add('disabled');\n }\n });\n }\n }\n }).open();\n };\n\n const cutDocName = name => {\n if(name.length <= docExt.length) return name;\n const idx = name.length - docExt.length;\n\n return name.substring(idx) == docExt ? name.substring(0, idx) : name;\n };\n\n const changeTitle = (name) => {\n const api = Common.EditorApi.get();\n const currentTitle = `${name}.${docExt}`;\n let formatName = name.trim();\n\n if(formatName.length > 0 && cutDocName(currentTitle) !== formatName) {\n if(/[\\t*\\+:\\\"<>?|\\\\\\\\/]/gim.test(formatName)) {\n f7.dialog.create({\n title: t('Edit.notcriticalErrorTitle'),\n text: t('Edit.textInvalidName') + '*+:\\\"<>?|\\/',\n buttons: [\n {\n text: t('Edit.textOk'),\n close: true\n }\n ]\n }).open();\n } else {\n const wopi = appOptions.wopi;\n formatName = cutDocName(formatName);\n\n if(wopi) {\n api.asc_wopi_renameFile(formatName);\n } else {\n Common.Gateway.requestRename(formatName);\n }\n\n const newTitle = `${formatName}.${docExt}`;\n storeDocumentInfo.changeTitle(newTitle);\n }\n }\n }\n\n const clearAllFields = () => {\n const api = Common.EditorApi.get();\n\n api.asc_ClearAllSpecialForms();\n closeModal();\n };\n\n const toggleFavorite = () => {\n const isFavorite = appOptions.isFavorite;\n Common.Notifications.trigger('markfavorite', !isFavorite);\n };\n\n const saveAsPdf = () => {\n const api = Common.EditorApi.get();\n\n if (appOptions.isOffline) {\n api.asc_DownloadAs(new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.PDF));\n } else {\n const isFromBtnDownload = appOptions.canRequestSaveAs || !!appOptions.saveAsUrl;\n let options = new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.PDF, isFromBtnDownload);\n options.asc_setIsSaveAs(isFromBtnDownload);\n api.asc_DownloadAs(options);\n }\n }\n\n const submitForm = () => {\n const api = Common.EditorApi.get();\n api.asc_SendForm();\n }\n\n return (\n \n \n \n );\n};\n\nexport default inject(\"storeAppOptions\", \"storeDocumentInfo\")(observer(SettingsController));","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, getSlots, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { useTheme } from '../shared/use-theme.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { TabbarContext } from '../shared/tabbar-context.js';\n\n\nconst Toolbar = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n tabbar,\n icons,\n scrollable,\n hidden,\n outline = true,\n position,\n topMd,\n topIos,\n top,\n bottomMd,\n bottomIos,\n bottom,\n inner = true\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const onHide = toolbarEl => {\n if (elRef.current !== toolbarEl) return;\n emit(props, 'toolbarHide');\n };\n const onShow = toolbarEl => {\n if (elRef.current !== toolbarEl) return;\n emit(props, 'toolbarShow');\n };\n const hide = animate => {\n if (!f7) return;\n f7.toolbar.hide(elRef.current, animate);\n };\n const show = animate => {\n if (!f7) return;\n f7.toolbar.show(elRef.current, animate);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n hide,\n show\n }));\n useIsomorphicLayoutEffect(() => {\n f7ready(() => {\n if (tabbar && f7 && elRef.current) {\n f7.toolbar.setHighlight(elRef.current);\n }\n f7.on('toolbarShow', onShow);\n f7.on('toolbarHide', onHide);\n });\n return () => {\n if (!f7) return;\n f7.off('toolbarShow', onShow);\n f7.off('toolbarHide', onHide);\n };\n });\n const theme = useTheme();\n const classes = classNames(className, 'toolbar', {\n tabbar,\n 'toolbar-bottom': theme && theme.md && bottomMd || theme && theme.ios && bottomIos || bottom || position === 'bottom',\n 'toolbar-top': theme && theme.md && topMd || theme && theme.ios && topIos || top || position === 'top',\n 'tabbar-icons': icons,\n 'tabbar-scrollable': scrollable,\n 'toolbar-hidden': hidden,\n 'no-outline': !outline\n }, colorClasses(props));\n const slots = getSlots(props);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), /*#__PURE__*/React.createElement(TabbarContext.Provider, {\n value: {\n tabbarHasIcons: icons\n }\n }, slots['before-inner'], inner ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"toolbar-inner\"\n }, slots.default) : slots.default, slots['after-inner']));\n});\nToolbar.displayName = 'f7-toolbar';\nexport default Toolbar;","import React, { Component, useEffect } from 'react';\nimport { observer, inject } from \"mobx-react\";\nimport { Page, Navbar, NavRight, List, ListItem, Icon, Toggle, Toolbar, Link } from 'framework7-react';\nimport { f7 } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from \"../../../utils/device\";\n\nconst PageReview = props => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const isProtected = props.isProtected;\n const isDisableAllSettings = props.isReviewOnly || props.displayMode === \"final\" || props.displayMode === \"original\";\n const canReview = !!props.canReview;\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {canReview &&\n \n props.onTrackChanges(!props.trackChanges)} />\n \n }\n {!props.isRestrictedEdit &&\n \n }\n \n \n \n \n \n {canReview && !props.canUseReviewPermissions && !isProtected &&\n {props.onAcceptAll();}}>\n \n \n }\n {canReview && !props.canUseReviewPermissions && !isProtected &&\n {props.onRejectAll();}}>\n \n \n }\n \n \n )\n};\n\nconst DisplayMode = props => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const mode = props.storeReview.displayMode;\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {\n props.onDisplayMode('markup');\n }}\n >\n {\n props.onDisplayMode('final');\n }}\n >\n {\n props.onDisplayMode('original');\n }}\n >\n \n \n )\n};\n\nconst PageReviewChange = inject(\"storeAppOptions\")(observer(props => {\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const change = props.change;\n const displayMode = props.displayMode;\n const isLockAcceptReject = (!change || (change && !change.editable) || (displayMode === \"final\" || displayMode === \"original\") || !props.canReview);\n const isLockPrevNext = (displayMode === \"final\" || displayMode === \"original\");\n const appOptions = props.storeAppOptions;\n const isProtected = appOptions.isProtected;\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n {(!props.isReviewOnly && !isProtected) &&\n \n {props.onAcceptCurrentChange()}}\n >{_t.textAccept}\n {props.onRejectCurrentChange()}}\n >{_t.textReject}\n \n }\n {!props.isReviewOnly && change && change?.editable &&\n \n {props.onDeleteChange()}}>{_t.textDelete}\n \n }\n {props.goto && {props.onGotoNextChange()}}>}\n \n \n {props.onPrevChange()}}\n className={isLockPrevNext && 'disabled'}\n >\n {props.onNextChange()}}\n className={isLockPrevNext && 'disabled'}\n >\n \n \n {change ?\n
          \n
          \n {isAndroid &&\n
          {change.initials}
          \n }\n
          \n
          {change.userName}
          \n
          {change.date}
          \n
          \n
          \n
          {change.text}
          \n
          :\n
          {_t.textNoChanges}
          \n }\n
          \n )\n}));\n\nconst PageDisplayMode = inject(\"storeReview\")(observer(DisplayMode));\n\nexport {PageReview, PageDisplayMode, PageReviewChange};","import React, { Component } from 'react'\nimport Notifications from '../../../utils/notifications.js'\nimport {observer, inject} from \"mobx-react\"\nimport { withTranslation } from 'react-i18next';\n\nimport {PageReview, PageReviewChange} from \"../../view/collaboration/Review\";\nimport {LocalStorage} from \"../../../utils/LocalStorage.mjs\";\n\nclass InitReview extends Component {\n constructor(props){\n super(props);\n\n Common.Notifications.on('engineCreated', api => {\n api.asc_registerCallback('asc_onShowRevisionsChange', this.onChangeReview.bind(this));\n });\n\n Common.Notifications.on('document:ready', () => {\n const api = Common.EditorApi.get();\n const appOptions = props.storeAppOptions;\n const isProtected = appOptions.isProtected;\n\n let trackChanges = appOptions.customization && appOptions.customization.review ? appOptions.customization.review.trackChanges : undefined;\n (trackChanges===undefined) && (trackChanges = appOptions.customization ? appOptions.customization.trackChanges : undefined);\n trackChanges = appOptions.isReviewOnly || trackChanges === true || trackChanges !== false\n && LocalStorage.getBool(\"de-mobile-track-changes-\" + (appOptions.fileKey || ''));\n\n if(!isProtected) {\n api.asc_SetTrackRevisions(trackChanges);\n }\n \n // Init display mode\n\n const canViewReview = appOptions.canReview || appOptions.isEdit || api.asc_HaveRevisionsChanges(true);\n if (!appOptions.canReview)\n appOptions.setCanViewReview(canViewReview);\n if (canViewReview) {\n let viewReviewMode = (appOptions.isEdit || appOptions.isRestrictedEdit) ? null : LocalStorage.getItem(\"de-view-review-mode\");\n if (viewReviewMode === null) {\n viewReviewMode = appOptions.customization && appOptions.customization.review ? appOptions.customization.review.reviewDisplay : undefined;\n !viewReviewMode && (viewReviewMode = appOptions.customization ? appOptions.customization.reviewDisplay : undefined);\n viewReviewMode = /^(original|final|markup|simple)$/i.test(viewReviewMode) ? viewReviewMode.toLocaleLowerCase() : ( appOptions.isEdit || appOptions.isRestrictedEdit ? 'markup' : 'original');\n }\n let displayMode = viewReviewMode.toLocaleLowerCase();\n let type = Asc.c_oAscDisplayModeInReview.Edit;\n switch (displayMode) {\n case 'final':\n type = Asc.c_oAscDisplayModeInReview.Final;\n break;\n case 'original':\n type = Asc.c_oAscDisplayModeInReview.Original;\n break;\n }\n api.asc_SetDisplayModeInReview(type);\n props.storeReview.changeDisplayMode(displayMode);\n }\n });\n }\n\n onChangeReview (data, isShow) {\n const storeReview = this.props.storeReview;\n storeReview.changeArrReview(data);\n }\n\n render() {\n return null\n }\n}\n\nclass Review extends Component {\n constructor(props) {\n super(props);\n this.onTrackChanges = this.onTrackChanges.bind(this);\n this.onDisplayMode = this.onDisplayMode.bind(this);\n\n this.appConfig = props.storeAppOptions;\n this.editorPrefix = window.editorType || '';\n\n let trackChanges = this.appConfig.customization && this.appConfig.customization.review ? this.appConfig.customization.review.trackChanges : undefined;\n (trackChanges===undefined) && (trackChanges = this.appConfig.customization ? this.appConfig.customization.trackChanges : undefined);\n trackChanges = this.appConfig.isReviewOnly || trackChanges === true || trackChanges !== false\n && LocalStorage.getBool(`${this.editorPrefix}-mobile-track-changes-${this.appConfig.fileKey || ''}`);\n\n this.state = {\n trackChanges: trackChanges\n }\n }\n\n onTrackChanges (checked) {\n const api = Common.EditorApi.get();\n if ( this.appConfig.isReviewOnly ) {\n this.setState({trackChanges: true});\n } else {\n this.setState({trackChanges: checked});\n api.asc_SetTrackRevisions(checked);\n LocalStorage.setBool(`${this.editorPrefix}-mobile-track-changes-${this.appConfig.fileKey || ''}`, checked);\n }\n }\n\n onAcceptAll () {\n const api = Common.EditorApi.get();\n api.asc_AcceptAllChanges();\n }\n\n onRejectAll () {\n const api = Common.EditorApi.get();\n api.asc_RejectAllChanges();\n }\n\n onDisplayMode (mode) {\n const api = Common.EditorApi.get();\n let type = Asc.c_oAscDisplayModeInReview.Edit;\n switch (mode) {\n case 'final':\n type = Asc.c_oAscDisplayModeInReview.Final;\n break;\n case 'original':\n type = Asc.c_oAscDisplayModeInReview.Original;\n break;\n }\n api.asc_SetDisplayModeInReview(type);\n !this.appConfig.isEdit && !this.appConfig.isRestrictedEdit && LocalStorage.setItem(\"de-view-review-mode\", mode);\n this.props.storeReview.changeDisplayMode(mode);\n }\n\n render() {\n const displayMode = this.props.storeReview.displayMode;\n const isReviewOnly = this.appConfig.isReviewOnly;\n const isProtected = this.appConfig.isProtected;\n const canReview = this.appConfig.canReview;\n const canUseReviewPermissions = this.appConfig.canUseReviewPermissions;\n const isRestrictedEdit = this.appConfig.isRestrictedEdit;\n\n return (\n \n )\n }\n}\n\nclass ReviewChange extends Component {\n constructor (props) {\n super(props);\n this.onAcceptCurrentChange = this.onAcceptCurrentChange.bind(this);\n this.onRejectCurrentChange = this.onRejectCurrentChange.bind(this);\n this.onGotoNextChange = this.onGotoNextChange.bind(this);\n this.onDeleteChange = this.onDeleteChange.bind(this);\n\n this.appConfig = props.storeAppOptions;\n }\n \n dateToLocaleTimeString (date, lang) {\n const format = (date) => {\n let strTime,\n hours = date.getHours(),\n minutes = date.getMinutes(),\n ampm = hours >= 12 ? 'pm' : 'am';\n\n hours = hours % 12;\n hours = hours ? hours : 12; // the hour '0' should be '12'\n minutes = minutes < 10 ? '0' + minutes : minutes;\n strTime = hours + ':' + minutes + ' ' + ampm;\n\n return strTime;\n };\n\n lang = (lang || 'en').replace('_', '-').toLowerCase();\n try {\n return date.toLocaleString(lang, {dateStyle: 'short', timeStyle: 'short'});\n } catch (e) {\n lang = 'en';\n return date.toLocaleString(lang, {dateStyle: 'short', timeStyle: 'short'});\n }\n\n // MM/dd/yyyy hh:mm AM\n return (date.getMonth() + 1) + '/' + (date.getDate()) + '/' + date.getFullYear() + ' ' + format(date);\n }\n getArrChangeReview (data) {\n const api = Common.EditorApi.get();\n\n const { t } = this.props;\n const _t = t(\"Common.Collaboration\", { returnObjects: true });\n\n if (data.length === 0) return [];\n const arr = [];\n const c_paragraphLinerule = {\n LINERULE_LEAST: 0,\n LINERULE_AUTO: 1,\n LINERULE_EXACT: 2\n };\n data.forEach((item) => {\n let changeText = [], proptext = [],\n value = item.get_Value(),\n movetype = item.get_MoveType();\n switch (item.get_Type()) {\n case Asc.c_oAscRevisionsChangeType.TextAdd:\n changeText.push();\n if (typeof value == 'object') {\n value.forEach( (obj) => {\n if (typeof obj === 'string')\n changeText.push();\n else {\n switch (obj) {\n case 0:\n changeText.push();\n break;\n case 1:\n changeText.push();\n break;\n case 2:\n changeText.push();\n break;\n case 3:\n changeText.push();\n break;\n }\n }\n })\n } else if (typeof value === 'string') {\n changeText.push();\n }\n break;\n case Asc.c_oAscRevisionsChangeType.TextRem:\n changeText.push();\n if (typeof value == 'object') {\n value.forEach( (obj) => {\n if (typeof obj === 'string')\n changeText.push();\n else {\n switch (obj) {\n case 0:\n changeText.push();\n break;\n case 1:\n changeText.push();\n break;\n case 2:\n changeText.push();\n break;\n case 3:\n changeText.push();\n break;\n }\n }\n })\n } else if (typeof value === 'string') {\n changeText.push();\n }\n break;\n case Asc.c_oAscRevisionsChangeType.ParaAdd:\n changeText.push();\n break;\n case Asc.c_oAscRevisionsChangeType.ParaRem:\n changeText.push();\n break;\n case Asc.c_oAscRevisionsChangeType.TextPr:\n if (value.Get_Bold() !== undefined)\n proptext.push();\n if (value.Get_Italic() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Underline() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Strikeout() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_DStrikeout() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Caps() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_SmallCaps() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_VertAlign() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Color() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Highlight() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Shd() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_FontFamily() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_FontSize() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Spacing() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Position() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Lang() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n\n if (proptext.length > 0) {\n changeText.push();\n proptext.forEach((item) => {\n changeText.push(item);\n });\n } else {\n changeText.push();\n }\n break;\n case Asc.c_oAscRevisionsChangeType.ParaPr:\n if (value.Get_ContextualSpacing())\n proptext.push();\n if (value.Get_IndLeft() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_IndRight() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_IndFirstLine() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Jc() !== undefined) {\n switch (value.Get_Jc()) {\n case 0:\n proptext.length > 0 && proptext.push();\n proptext.push();\n break;\n case 1:\n proptext.length > 0 && proptext.push();\n proptext.push();\n break;\n case 2:\n proptext.length > 0 && proptext.push();\n proptext.push();\n break;\n case 3:\n proptext.length > 0 && proptext.push();\n proptext.push();\n break;\n }\n }\n if (value.Get_KeepLines() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_KeepNext()) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_PageBreakBefore()) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_SpacingLineRule() !== undefined && value.Get_SpacingLine() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n proptext.push();\n proptext.push();\n }\n if (value.Get_SpacingBeforeAutoSpacing()) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n else if (value.Get_SpacingBefore() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_SpacingAfterAutoSpacing()) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n else if (value.Get_SpacingAfter() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_WidowControl()) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Tabs() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_NumPr() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push()\n }\n if (value.Get_PStyle() !== undefined) {\n const style = api.asc_GetStyleNameById(value.Get_PStyle());\n if (style.length > 0) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n }\n\n if (proptext.length > 0) {\n changeText.push();\n proptext.forEach((item) => {\n changeText.push(item);\n });\n } else {\n changeText.push();\n }\n break;\n case Asc.c_oAscRevisionsChangeType.TablePr:\n changeText.push();\n break;\n case Asc.c_oAscRevisionsChangeType.RowsAdd:\n changeText.push();\n break;\n case Asc.c_oAscRevisionsChangeType.RowsRem:\n changeText.push();\n break;\n\n }\n let date = (item.get_DateTime() == '') ? new Date() : new Date(item.get_DateTime());\n const user = item.get_UserName();\n const userColor = item.get_UserColor();\n const goto = (item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveTo || item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveFrom);\n date = this.dateToLocaleTimeString(date, this.appConfig.lang);\n const editable = this.appConfig.isReviewOnly && (item.get_UserId() == this.appConfig.user.id) || !this.appConfig.isReviewOnly && (!this.appConfig.canUseReviewPermissions || AscCommon.UserInfoParser.canEditReview(item.get_UserName()));\n arr.push({date: date, user: user, userColor: userColor, changeText: changeText, goto: goto, editable: editable});\n });\n return arr;\n }\n\n onPrevChange () {\n const api = Common.EditorApi.get();\n api.asc_GetPrevRevisionsChange();\n }\n\n onNextChange () {\n const api = Common.EditorApi.get();\n api.asc_GetNextRevisionsChange();\n }\n\n onAcceptCurrentChange () {\n const api = Common.EditorApi.get();\n api.asc_AcceptChanges(this.dataChanges[0]);\n setTimeout(() => {\n api.asc_GetNextRevisionsChange();\n });\n }\n\n onRejectCurrentChange () {\n const api = Common.EditorApi.get();\n api.asc_RejectChanges(this.dataChanges[0]);\n setTimeout(() => {\n api.asc_GetNextRevisionsChange();\n });\n }\n\n onGotoNextChange () {\n const api = Common.EditorApi.get();\n api.asc_FollowRevisionMove(this.dataChanges[0]);\n }\n\n onDeleteChange () {\n const api = Common.EditorApi.get();\n api.asc_RejectChanges(this.dataChanges[0]);\n }\n\n render() {\n this.dataChanges = this.props.storeReview.dataChanges;\n const arrChangeReview = this.getArrChangeReview(this.dataChanges);\n let change;\n let goto = false;\n if (arrChangeReview.length > 0) {\n const name = AscCommon.UserInfoParser.getParsedName(arrChangeReview[0].user);\n change = {\n date: arrChangeReview[0].date,\n user: arrChangeReview[0].user,\n userName: Common.Utils.String.htmlEncode(name),\n color: arrChangeReview[0].userColor.get_hex(),\n text: arrChangeReview[0].changeText,\n initials: this.props.users.getInitials(name),\n editable: arrChangeReview[0].editable\n };\n goto = arrChangeReview[0].goto;\n }\n\n const isReviewOnly = this.appConfig.isReviewOnly;\n const canReview = this.appConfig.canReview;\n const displayMode = this.props.storeReview.displayMode;\n\n return (\n \n )\n }\n}\n\n\nconst InitReviewController = inject(\"storeAppOptions\", \"storeReview\")(observer(InitReview));\nconst ReviewController = inject(\"storeAppOptions\", \"storeReview\")(observer(Review));\nconst ReviewChangeController = withTranslation()(inject(\"storeAppOptions\", \"storeReview\", \"users\")(observer(ReviewChange)));\n\nexport {InitReviewController, ReviewController, ReviewChangeController};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7, f7ready } from '../shared/f7.js';\nimport { watchProp } from '../shared/watch-prop.js';\nimport { modalStateClasses } from '../shared/modal-state-classes.js';\n\n\n\nconst Actions = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n grid,\n opened = false,\n animate\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const isOpened = useRef(opened);\n const isClosing = useRef(false);\n const f7Actions = useRef(null);\n const onOpen = instance => {\n isOpened.current = true;\n isClosing.current = false;\n emit(props, 'actionsOpen', instance);\n };\n const onOpened = instance => {\n emit(props, 'actionsOpened', instance);\n };\n const onClose = instance => {\n isOpened.current = false;\n isClosing.current = true;\n emit(props, 'actionsClose', instance);\n };\n const onClosed = instance => {\n isClosing.current = false;\n emit(props, 'actionsClosed', instance);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7Actions: () => f7Actions.current\n }));\n\n // watch opened changes\n watchProp(opened, value => {\n if (!f7Actions.current) return;\n if (value) {\n f7Actions.current.open();\n } else {\n f7Actions.current.close();\n }\n });\n const modalEvents = method => {\n if (!f7Actions.current) return;\n f7Actions.current[method]('open', onOpen);\n f7Actions.current[method]('opened', onOpened);\n f7Actions.current[method]('close', onClose);\n f7Actions.current[method]('closed', onClosed);\n };\n const onMount = () => {\n if (!elRef.current) return;\n const {\n target,\n convertToPopover,\n forceToPopover,\n closeByBackdropClick,\n closeByOutsideClick,\n closeOnEscape,\n backdrop,\n backdropEl,\n containerEl\n } = props;\n const params = {\n el: elRef.current,\n grid\n };\n if (target) params.targetEl = target;\n if ('convertToPopover' in props) params.convertToPopover = convertToPopover;\n if ('forceToPopover' in props) params.forceToPopover = forceToPopover;\n if ('backdrop' in props) params.backdrop = backdrop;\n if ('backdropEl' in props) params.backdropEl = backdropEl;\n if ('closeByBackdropClick' in props) params.closeByBackdropClick = closeByBackdropClick;\n if ('closeByOutsideClick' in props) params.closeByOutsideClick = closeByOutsideClick;\n if ('closeOnEscape' in props) params.closeOnEscape = closeOnEscape;\n if ('animate' in props) params.animate = animate;\n if ('containerEl' in props) params.containerEl = containerEl;\n f7ready(() => {\n f7Actions.current = f7.actions.create(params);\n modalEvents('on');\n if (opened) {\n f7Actions.current.open(false);\n }\n });\n };\n const onDestroy = () => {\n if (f7Actions.current) f7Actions.current.destroy();\n f7Actions.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n modalEvents('on');\n return () => {\n modalEvents('off');\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n const classes = classNames(className, 'actions-modal', {\n 'actions-grid': grid\n }, modalStateClasses({\n isOpened,\n isClosing\n }), colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children);\n});\nActions.displayName = 'f7-actions';\nexport default Actions;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\n\n\nconst ActionsGroup = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const classes = classNames(className, 'actions-group', colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children);\n});\nActionsGroup.displayName = 'f7-actions-group';\nexport default ActionsGroup;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs, getSlots, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7 } from '../shared/f7.js';\n\n\nconst ComponentName = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n strong,\n close = true\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const classes = classNames(className, {\n 'actions-button': true,\n 'actions-button-strong': strong\n }, colorClasses(props));\n let mediaEl;\n const slots = getSlots(props);\n if (slots.media && slots.media.length) {\n mediaEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"actions-button-media\"\n }, slots.media);\n }\n const onClick = e => {\n if (elRef.current && close && f7) {\n f7.actions.close(f7.$(elRef.current).parents('.actions-modal'));\n }\n emit(props, 'click', e);\n };\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs, {\n onClick: onClick\n }), mediaEl, /*#__PURE__*/React.createElement(\"div\", {\n className: \"actions-button-text\"\n }, slots.default));\n});\nComponentName.displayName = 'f7-actions-button';\nexport default ComponentName;","import React, {useState, useEffect, Fragment, useRef} from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport { f7, Popup, Sheet, Popover, Page, Toolbar, Navbar, NavLeft, NavRight, NavTitle, Link, Input, Icon, List, ListItem, Actions, ActionsGroup, ActionsButton } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from '../../../utils/device';\n\n// Utils\nconst sliceQuote = (text) => {\n if (text) {\n let sliced = text.slice(0, 100);\n if (sliced.length < text.length) {\n sliced += '...';\n return sliced;\n }\n return text;\n }\n};\n\n// Add comment\n\nconst AddCommentPopup = inject(\"storeComments\")(observer(props => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const userInfo = props.userInfo;\n const [stateText, setText] = useState('');\n let refInputComment = useRef(null);\n\n useEffect(() => {\n f7.popup.open('.add-comment-popup', false);\n\n if(refInputComment) {\n refInputComment.focus();\n }\n }, []);\n\n return (\n \n \n \n {\n f7.popup.close('.add-comment-popup');\n setTimeout(() => {\n props.closeAddComment();\n }, 500)\n }}>{_t.textCancel}\n \n {_t.textAddComment}\n \n {\n f7.popup.close('.add-comment-popup');\n setTimeout(() => {\n props.closeAddComment();\n props.onAddNewComment(stateText, false)\n }, 500);\n }}>\n {Device.android ? : _t.textDone}\n \n \n \n
          \n
          \n {Device.android &&\n
          {userInfo.initials}
          \n }\n
          {userInfo.name}
          \n
          \n
          \n \n
          \n
          \n
          \n )\n}));\n\nconst AddCommentDialog = inject(\"storeComments\")(observer(props => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const userInfo = props.userInfo;\n const templateInitials = `
          ${userInfo.initials}
          `;\n let refContainerDialog = useRef(null);\n\n useEffect(() => {\n f7.dialog.create({\n destroyOnClose: true,\n containerEl: document.getElementById('add-comment-dialog'),\n content:\n `
          \n
          \n
          \n \n
          ${_t.textAddComment}
          \n \n
          \n
          \n
          \n
          \n ${Device.android ? templateInitials : ''}\n
          ${userInfo.name}
          \n
          \n
          \n \n
          \n
          `,\n on: {\n opened: () => {\n const cancel = document.getElementById('comment-cancel');\n if(!Device.android) $$('#comment-text').focus();\n cancel.addEventListener('click', () => {\n f7.dialog.close();\n props.closeAddComment();\n });\n const done = document.getElementById('comment-done');\n done.addEventListener('click', () => {\n const value = document.getElementById('comment-text').value;\n if (value.length > 0) {\n f7.dialog.close();\n props.closeAddComment();\n props.onAddNewComment(value, false);\n }\n });\n const area = document.getElementById('comment-text');\n area.addEventListener('input', (event) => {\n if (event.target.value.length === 0 && !done.classList.contains('disabled')) {\n done.classList.add('disabled');\n } else if (event.target.value.length > 0 && done.classList.contains('disabled')) {\n done.classList.remove('disabled');\n }\n });\n done.classList.add('disabled');\n }\n }\n }).open();\n\n if(refContainerDialog) {\n const inputComment = refContainerDialog.querySelector('#comment-text');\n inputComment.focus();\n }\n }, []);\n\n return (\n
          refContainerDialog = el} className=\"add-comment-dialog\">
          \n );\n}));\n\nconst AddComment = props => {\n return (\n Device.phone ?\n :\n \n )\n};\n\n// Actions\nconst CommentActions = ({comment, onCommentMenuClick, opened, openActionComment}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n return (\n openActionComment(false)}>\n \n {comment && \n {comment.editable && {onCommentMenuClick('editComment', comment);}}>{_t.textEdit}}\n {!comment.resolved && comment.editable ?\n {onCommentMenuClick('resolve', comment);}}>{_t.textResolve} :\n comment.editable && {onCommentMenuClick('resolve', comment);}}>{_t.textReopen}\n }\n {onCommentMenuClick('addReply', comment);}}>{_t.textAddReply}\n {comment.removable && {onCommentMenuClick('deleteComment', comment);}}>{_t.textDeleteComment}}\n \n }\n \n \n {_t.textCancel}\n \n \n )\n};\n\nconst ReplyActions = ({comment, reply, onCommentMenuClick, opened, openActionReply}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n return (\n openActionReply(false)}>\n \n {reply && \n {reply.editable && {onCommentMenuClick('editReply', comment, reply);}}>{_t.textEdit}}\n {reply.removable && {onCommentMenuClick('deleteReply', comment, reply);}}>{_t.textDeleteReply}}\n \n }\n \n \n {_t.textCancel}\n \n \n )\n};\n\n// Edit comment\nconst EditCommentPopup = inject(\"storeComments\")(observer(({storeComments, comment, onEditComment}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const [stateText, setText] = useState(comment.comment);\n let refInputEditComment = useRef(null);\n\n useEffect(() => {\n f7.popup.open('.edit-comment-popup', false);\n\n if(refInputEditComment) {\n refInputEditComment.focus();\n }\n }, []);\n \n return (\n \n \n \n {\n f7.popup.close('.edit-comment-popup');\n setTimeout(() => {\n storeComments.openEditComment(false);\n }, 500);\n }}>{_t.textCancel}\n \n {_t.textEditComment}\n \n {\n f7.popup.close('.edit-comment-popup');\n setTimeout(() => {\n storeComments.openEditComment(false);\n onEditComment(comment, stateText);\n }, 500);\n }}\n >\n {Device.android ? : _t.textDone}\n \n \n \n
          \n
          \n {Device.android &&\n
          {comment.userInitials}
          \n }\n
          \n
          {comment.parsedName}
          \n
          {comment.date}
          \n
          \n
          \n
          \n \n
          \n
          \n
          \n )\n}));\n\nconst EditCommentDialog = inject(\"storeComments\")(observer(({storeComments, comment, onEditComment}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const templateInitials = `
          ${comment.userInitials}
          `;\n let refContainerDialog = useRef(null);\n\n useEffect(() => {\n f7.dialog.create({\n destroyOnClose: true,\n containerEl: document.getElementById('edit-comment-dialog'),\n content:\n `
          \n
          \n
          \n \n
          ${_t.textEditComment}
          \n \n
          \n
          \n
          \n
          \n ${Device.android ? templateInitials : ''}\n
          \n
          ${comment.parsedName}
          \n
          ${comment.date}
          \n
          \n
          \n
          \n \n
          \n
          `,\n on: {\n opened: () => {\n const cancel = document.getElementById('comment-cancel');\n cancel.addEventListener('click', () => {\n f7.dialog.close();\n storeComments.openEditComment(false);\n });\n const done = document.getElementById('comment-done');\n done.addEventListener('click', () => {\n const value = document.getElementById('comment-text').value;\n if (value.length > 0) {\n onEditComment(comment, value);\n f7.dialog.close();\n storeComments.openEditComment(false);\n }\n });\n const area = document.getElementById('comment-text');\n area.addEventListener('input', (event) => {\n if (event.target.value.length === 0 && !done.classList.contains('disabled')) {\n done.classList.add('disabled');\n } else if (event.target.value.length > 0 && done.classList.contains('disabled')) {\n done.classList.remove('disabled');\n }\n });\n },\n open: () => {\n $$('.dialog-backdrop.backdrop-in')[0].classList.add('over-popover');\n },\n closed: () => {\n $$('.dialog-backdrop.backdrop-in')[0].classList.remove('over-popover');\n }\n }\n }).open();\n\n if(refContainerDialog) {\n const inputComment = refContainerDialog.querySelector('#comment-text');\n inputComment.focus();\n }\n }, []);\n\n return (\n
          refContainerDialog = el} className=\"edit-comment-dialog\">
          \n );\n}));\n\nconst EditComment = ({comment, onEditComment}) => {\n return (\n Device.phone ?\n :\n \n )\n};\n\nconst AddReplyPopup = inject(\"storeComments\")(observer(({storeComments, userInfo, comment, onAddReply}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const [stateText, setText] = useState('');\n let refInputReplyComment = useRef(null);\n\n useEffect(() => {\n f7.popup.open('.add-reply-popup', false);\n\n if(refInputReplyComment) {\n refInputReplyComment.focus();\n }\n }, []);\n\n return (\n \n \n \n {\n f7.popup.close('.add-reply-popup');\n setTimeout(() => {\n storeComments.openAddReply(false);\n }, 500);\n }}>{_t.textCancel}\n \n {_t.textAddReply}\n \n {\n f7.popup.close('.add-reply-popup');\n setTimeout(() => {\n storeComments.openAddReply(false);\n onAddReply(comment, stateText);\n }, 500);\n }}>\n {Device.android ? : _t.textDone}\n \n \n \n
          \n
          \n {Device.android &&\n
          {userInfo.initials}
          \n }\n
          {userInfo.name}
          \n
          \n
          \n \n
          \n
          \n
          \n )\n}));\n\nconst AddReplyDialog = inject(\"storeComments\")(observer(({storeComments, userInfo, comment, onAddReply}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const templateInitials = `
          ${userInfo.initials}
          `;\n let refContainerDialog = useRef(null);\n\n useEffect(() => {\n f7.dialog.create({\n destroyOnClose: true,\n containerEl: document.getElementById('add-reply-dialog'),\n content:\n `
          \n
          \n
          \n \n
          ${_t.textAddReply}
          \n \n
          \n
          \n
          \n
          \n ${Device.android ? templateInitials : ''}\n
          ${userInfo.name}
          \n
          \n
          \n \n
          \n
          `,\n on: {\n opened: () => {\n const cancel = document.getElementById('reply-cancel');\n cancel.addEventListener('click', () => {\n f7.dialog.close();\n storeComments.openAddReply(false);\n });\n const done = document.getElementById('reply-done');\n done.addEventListener('click', () => {\n const value = document.getElementById('reply-text').value;\n if (value.length > 0) {\n onAddReply(comment, value);\n f7.dialog.close();\n storeComments.openAddReply(false);\n }\n });\n const area = document.getElementById('reply-text');\n area.addEventListener('input', (event) => {\n if (event.target.value.length === 0 && !done.classList.contains('disabled')) {\n done.classList.add('disabled');\n } else if (event.target.value.length > 0 && done.classList.contains('disabled')) {\n done.classList.remove('disabled');\n }\n });\n done.classList.add('disabled');\n },\n open: () => {\n $$('.dialog-backdrop.backdrop-in')[0].classList.add('over-popover');\n },\n closed: () => {\n $$('.dialog-backdrop.backdrop-in')[0].classList.remove('over-popover');\n }\n }\n }).open();\n\n if(refContainerDialog) {\n const inputReplyComment = refContainerDialog.querySelector('#reply-text');\n inputReplyComment.focus();\n }\n }, []);\n\n return (\n
          refContainerDialog = el} className=\"add-reply-dialog\">
          \n );\n}));\n\nconst AddReply = ({userInfo, comment, onAddReply}) => {\n return (\n Device.phone ?\n :\n \n )\n};\n\nconst EditReplyPopup = inject(\"storeComments\")(observer(({storeComments, comment, reply, onEditReply}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const [stateText, setText] = useState(reply.reply);\n let relInputReplyComment = useRef(null);\n\n useEffect(() => {\n f7.popup.open('.edit-reply-popup', false);\n\n if(relInputReplyComment) {\n relInputReplyComment.focus();\n }\n }, []);\n\n return (\n \n \n \n {\n f7.popup.close('.edit-reply-popup');\n setTimeout(() => {\n storeComments.openEditReply(false);\n }, 500);\n }}>{_t.textCancel}\n \n {_t.textEditReply}\n \n {\n f7.popup.close('.edit-reply-popup');\n setTimeout(() => {\n storeComments.openEditReply(false);\n onEditReply(comment, reply, stateText);\n }, 500);\n }}\n >\n {Device.android ? : _t.textDone}\n \n \n \n
          \n
          \n {Device.android &&\n
          {reply.userInitials}
          \n }\n
          \n
          {reply.parsedName}
          \n
          {reply.date}
          \n
          \n
          \n
          \n \n
          \n
          \n
          \n )\n}));\n\nconst EditReplyDialog = inject(\"storeComments\")(observer(({storeComments, comment, reply, onEditReply}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const templateInitials = `
          ${reply.userInitials}
          `;\n let refContainerDialog = useRef(null);\n\n useEffect(() => {\n f7.dialog.create({\n destroyOnClose: true,\n containerEl: document.getElementById('edit-reply-dialog'),\n content:\n `
          \n
          \n
          \n \n
          ${_t.textEditReply}
          \n \n
          \n
          \n
          \n
          \n ${Device.android ? templateInitials : ''}\n
          \n
          ${reply.parsedName}
          \n
          ${reply.date}
          \n
          \n
          \n
          \n \n
          \n
          `,\n on: {\n opened: () => {\n const cancel = document.getElementById('reply-cancel');\n cancel.addEventListener('click', () => {\n f7.dialog.close();\n storeComments.openEditReply(false);\n });\n const done = document.getElementById('reply-done');\n done.addEventListener('click', () => {\n const value = document.getElementById('reply-text').value;\n if (value.length > 0) {\n onEditReply(comment, reply, value);\n f7.dialog.close();\n storeComments.openEditReply(false);\n }\n });\n const area = document.getElementById('reply-text');\n area.addEventListener('input', (event) => {\n if (event.target.value.length === 0 && !done.classList.contains('disabled')) {\n done.classList.add('disabled');\n } else if (event.target.value.length > 0 && done.classList.contains('disabled')) {\n done.classList.remove('disabled');\n }\n });\n },\n open: () => {\n $$('.dialog-backdrop.backdrop-in')[0].classList.add('over-popover');\n },\n closed: () => {\n $$('.dialog-backdrop.backdrop-in')[0].classList.remove('over-popover');\n }\n }\n }).open();\n\n if(refContainerDialog) {\n const inputReplyComment = refContainerDialog.querySelector('#reply-text');\n inputReplyComment.focus();\n }\n }, []);\n\n return (\n
          refContainerDialog = el} className=\"edit-reply-dialog\">
          \n );\n}));\n\nconst EditReply = ({comment, reply, onEditReply}) => {\n return (\n Device.phone ?\n :\n \n )\n};\n\nconst pickLink = (message) => {\n let arrayComment = [], offset, len;\n message.replace(Common.Utils.ipStrongRe, function(subStr) {\n let result = /[\\.,\\?\\+;:=!\\(\\)]+$/.exec(subStr);\n if (result)\n subStr = subStr.substring(0, result.index);\n offset = arguments[arguments.length-2];\n arrayComment.push({start: offset, end: subStr.length+offset, str: window.open(subStr)} href={subStr} target=\"_blank\" data-can-copy=\"true\">{subStr}});\n return '';\n });\n\n if (message.length<1000 || message.search(/\\S{255,}/)<0)\n message.replace(Common.Utils.hostnameStrongRe, function(subStr) {\n let result = /[\\.,\\?\\+;:=!\\(\\)]+$/.exec(subStr);\n if (result)\n subStr = subStr.substring(0, result.index);\n let ref = (! /(((^https?)|(^ftp)):\\/\\/)/i.test(subStr) ) ? ('http://' + subStr) : subStr;\n offset = arguments[arguments.length-2];\n len = subStr.length;\n let elem = arrayComment.find(function(item){\n return ( (offset>=item.start) && (offsetitem.start));\n });\n if (!elem)\n arrayComment.push({start: offset, end: len+offset, str: window.open(ref)} href={ref} target=\"_blank\" data-can-copy=\"true\">{subStr}});\n return '';\n });\n\n message.replace(Common.Utils.emailStrongRe, function(subStr) {\n let ref = (! /((^mailto:)\\/\\/)/i.test(subStr) ) ? ('mailto:' + subStr) : subStr;\n offset = arguments[arguments.length-2];\n len = subStr.length;\n let elem = arrayComment.find(function(item){\n return ( (offset>=item.start) && (offsetitem.start));\n });\n if (!elem)\n arrayComment.push({start: offset, end: len+offset, str: window.open(ref)} href={ref}>{subStr}});\n return '';\n });\n\n arrayComment = arrayComment.sort(function(item1,item2){ return item1.start - item2.start; });\n \n let str_res = (arrayComment.length>0) ? : ;\n\n for (var i=1; i{str_res}{Common.Utils.String.htmlEncode(message.substring(arrayComment[i-1].end, arrayComment[i].start))}{arrayComment[i].str};\n }\n\n if (arrayComment.length>0) {\n str_res = ;\n }\n\n return str_res; \n}\n\n// View comments\n\nconst ViewComments = inject(\"storeComments\", \"storeAppOptions\", \"storeReview\")(observer(({storeComments, storeAppOptions, onCommentMenuClick, onResolveComment, showComment, storeReview, wsProps}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const isAndroid = Device.android;\n const displayMode = storeReview.displayMode;\n const isViewer = storeAppOptions.isViewer;\n const canEditComments = storeAppOptions.canEditComments;\n const viewMode = !storeAppOptions.canComments;\n const comments = storeComments.groupCollectionFilter || storeComments.collectionComments;\n const isEdit = storeAppOptions.isEdit || storeAppOptions.isRestrictedEdit;\n const sortComments = comments.length > 0 ? [...comments].sort((a, b) => a.time > b.time ? -1 : 1) : null;\n const isProtected = storeAppOptions.isProtected;\n const typeProtection = storeAppOptions.typeProtection;\n const isAvailableCommenting = !isProtected || typeProtection === Asc.c_oAscEDocProtect.TrackedChanges || typeProtection === Asc.c_oAscEDocProtect.Comments;\n\n const [clickComment, setComment] = useState();\n const [commentActionsOpened, openActionComment] = useState(false);\n\n const [reply, setReply] = useState();\n const [replyActionsOpened, openActionReply] = useState(false);\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n {!sortComments ?\n
          {_t.textNoComments}
          :\n \n {sortComments.map((comment, indexComment) => {\n return (\n !comment.hide &&\n {\n !e.target.closest('.comment-menu') && !e.target.closest('.reply-menu') ? showComment(comment) : null}}>\n
          \n
          \n {isAndroid &&
          {comment.userInitials}
          }\n
          \n
          {comment.parsedName}
          \n
          {comment.date}
          \n
          \n
          \n {isEdit && !viewMode &&\n
          \n {(comment.editable && displayMode === 'markup' && !wsProps?.Objects && (!isViewer || canEditComments) && isAvailableCommenting) &&
          {onResolveComment(comment);}}>
          }\n {(displayMode === 'markup' && !wsProps?.Objects && (!isViewer || canEditComments) && isAvailableCommenting) &&\n
          {setComment(comment); openActionComment(true);}}>\n \n
          \n }\n
          \n }\n
          \n
          \n {comment.quote &&
          {sliceQuote(comment.quote)}
          }\n
          {pickLink(comment.comment)}
          \n {comment.replies.length > 0 &&\n
            \n {comment.replies.map((reply, indexReply) => {\n return (\n
          • \n
            \n
            \n
            \n
            \n
            \n {isAndroid &&
            {reply.userInitials}
            }\n
            \n
            {reply.parsedName}
            \n
            {reply.date}
            \n
            \n
            \n {isEdit && !viewMode && reply.editable && (!isViewer || canEditComments) && isAvailableCommenting &&\n
            \n
            {setComment(comment); setReply(reply); openActionReply(true);}}\n >\n \n
            \n
            \n }\n
            \n
            \n
            {pickLink(reply.reply)}
            \n
            \n
            \n
            \n
            \n
          • \n )\n })}\n
          \n }\n
          \n
          \n )\n })}\n
          \n }\n\n \n \n
          \n )\n}));\n\nconst CommentList = inject(\"storeComments\", \"storeAppOptions\", \"storeReview\")(observer(({storeComments, storeAppOptions, onCommentMenuClick, onResolveComment, storeReview, wsProps}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const isAndroid = Device.android;\n const displayMode = storeReview.displayMode;\n const isViewer = storeAppOptions.isViewer;\n const canEditComments = storeAppOptions.canEditComments;\n const viewMode = !storeAppOptions.canComments;\n const isEdit = storeAppOptions.isEdit || storeAppOptions.isRestrictedEdit;\n const comments = storeComments.showComments;\n const isProtected = storeAppOptions.isProtected;\n const typeProtection = storeAppOptions.typeProtection;\n const isAvailableCommenting = !isProtected || typeProtection === Asc.c_oAscEDocProtect.TrackedChanges || typeProtection === Asc.c_oAscEDocProtect.Comments;\n\n const [currentIndex, setCurrentIndex] = useState(0);\n const comment = comments[currentIndex];\n\n const [commentActionsOpened, openActionComment] = useState(false);\n\n const [reply, setReply] = useState();\n const [replyActionsOpened, openActionReply] = useState(false);\n\n const onViewPrevComment = () => {\n if (currentIndex - 1 < 0) {\n setCurrentIndex(comments.length - 1);\n } else {\n setCurrentIndex(currentIndex - 1);\n }\n };\n\n const onViewNextComment = () => {\n if (currentIndex + 1 >= comments.length) {\n setCurrentIndex(0);\n } else {\n setCurrentIndex(currentIndex + 1);\n }\n };\n\n if(!comment) {\n if (comments.length > 0) {\n onViewNextComment();\n }\n return null;\n }\n\n return (\n \n \n {isEdit && !viewMode &&\n {onCommentMenuClick('addReply', comment);}}>{_t.textAddReply}\n }\n {comments.length > 1 &&\n
          \n \n \n
          \n }\n
          \n
          \n \n \n \n
          \n
          \n {isAndroid &&
          {comment.userInitials}
          }\n
          \n
          {comment.parsedName}
          \n
          {comment.date}
          \n
          \n
          \n {isEdit && !viewMode &&\n
          \n {(comment.editable && displayMode === 'markup' && !wsProps?.Objects && (!isViewer || canEditComments) && isAvailableCommenting) &&
          {onResolveComment(comment);}}>
          }\n {(displayMode === 'markup' && !wsProps?.Objects && (!isViewer || canEditComments) && isAvailableCommenting) &&\n
          {openActionComment(true);}}>\n \n
          \n }\n
          \n }\n
          \n
          \n {comment.quote &&
          {sliceQuote(comment.quote)}
          }\n
          {pickLink(comment.comment)}
          \n {comment.replies.length > 0 &&\n
            \n {comment.replies.map((reply, indexReply) => {\n return (\n
          • \n
            \n
            \n
            \n
            \n
            \n {isAndroid &&
            {reply.userInitials}
            }\n
            \n
            {reply.parsedName}
            \n
            {reply.date}
            \n
            \n
            \n {isEdit && !viewMode && reply.editable && (!isViewer || canEditComments) && isAvailableCommenting &&\n
            \n
            {setReply(reply); openActionReply(true);}}\n >\n \n
            \n
            \n }\n
            \n
            \n
            {pickLink(reply.reply)}
            \n
            \n
            \n
            \n
            \n
          • \n )\n })}\n
          \n }\n
          \n
          \n
          \n \n \n
          \n
          \n
          \n )\n\n}));\n\nconst ViewCommentSheet = ({closeCurComments, onCommentMenuClick, onResolveComment, wsProps}) => {\n useEffect(() => {\n f7.sheet.open('#view-comment-sheet');\n });\n\n const [stateHeight, setHeight] = useState('45%');\n const [stateOpacity, setOpacity] = useState(1);\n\n const [stateStartY, setStartY] = useState();\n const [isNeedClose, setNeedClose] = useState(false);\n\n const handleTouchStart = (event) => {\n const touchObj = event.changedTouches[0];\n setStartY(parseInt(touchObj.clientY));\n };\n const handleTouchMove = (event) => {\n const touchObj = event.changedTouches[0];\n const dist = parseInt(touchObj.clientY) - stateStartY;\n if (dist < 0) { // to top\n setHeight('90%');\n setOpacity(1);\n setNeedClose(false);\n } else if (dist < 80) {\n setHeight('45%');\n setOpacity(1);\n setNeedClose(false);\n } else {\n setNeedClose(true);\n setOpacity(0.6);\n }\n };\n const handleTouchEnd = (event) => {\n const touchObj = event.changedTouches[0];\n const swipeEnd = parseInt(touchObj.clientY);\n const dist = swipeEnd - stateStartY;\n if (isNeedClose) {\n closeCurComments();\n } else if (stateHeight === '90%' && dist > 20) {\n setHeight('45%');\n }\n };\n return (\n \n
          \n \n
          \n \n
          \n )\n};\n\nconst ViewCommentPopover = ({onCommentMenuClick, onResolveComment, wsProps}) => {\n useEffect(() => {\n f7.popover.open('#view-comment-popover', '#btn-coauth');\n });\n\n return (\n \n \n \n )\n};\n\nconst ViewCurrentComments = props => {\n return (\n Device.phone ?\n :\n \n )\n};\n\nexport {\n AddComment,\n EditComment,\n AddReply,\n EditReply,\n ViewComments,\n ViewCurrentComments\n};\n","import React, {Component, Fragment} from 'react';\nimport { inject, observer } from \"mobx-react\";\nimport { f7 } from 'framework7-react';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport { withTranslation} from 'react-i18next';\nimport { LocalStorage } from '../../../utils/LocalStorage.mjs';\n\nimport {AddComment, EditComment, AddReply, EditReply, ViewComments, ViewCurrentComments} from '../../view/collaboration/Comments';\nimport { getUserColor } from '../../../utils/getUserColor';\n\n// utils\nconst timeZoneOffsetInMs = (new Date()).getTimezoneOffset() * 60000;\nconst utcDateToString = (date) => {\n if (Object.prototype.toString.call(date) === '[object Date]')\n return (date.getTime() - timeZoneOffsetInMs).toString();\n return '';\n};\nconst ooDateToString = (date) => {\n if (Object.prototype.toString.call(date) === '[object Date]')\n return (date.getTime()).toString();\n return '';\n};\nconst stringOOToLocalDate = (date) => {\n if (typeof date === 'string')\n return parseInt(date);\n return 0;\n};\nconst stringUtcToLocalDate = (date) => {\n if (typeof date === 'string')\n return parseInt(date) + timeZoneOffsetInMs;\n return 0;\n};\nconst dateToLocaleTimeString = (date, lang) => {\n const format = (date) => {\n let hours = date.getHours();\n let minutes = date.getMinutes();\n let ampm = hours >= 12 ? 'pm' : 'am';\n\n hours = hours % 12;\n hours = hours ? hours : 12; // the hour '0' should be '12'\n minutes = minutes < 10 ? '0' + minutes : minutes;\n return hours + ':' + minutes + ' ' + ampm;\n };\n lang = (lang || 'en').replace('_', '-').toLowerCase();\n try {\n return date.toLocaleString(lang, {dateStyle: 'short', timeStyle: 'short'});\n } catch (e) {\n lang = 'en';\n return date.toLocaleString(lang, {dateStyle: 'short', timeStyle: 'short'});\n }\n\n // MM/dd/yyyy hh:mm AM\n return (date.getMonth() + 1) + '/' + (date.getDate()) + '/' + date.getFullYear() + ' ' + format(date);\n};\nconst parseUserName = name => {\n return AscCommon.UserInfoParser.getParsedName(name);\n};\n//end utils\n\nclass CommentsController extends Component {\n constructor(props) {\n super(props);\n this.usersStore = this.props.users;\n this.appOptions = this.props.storeAppOptions;\n this.storeComments = this.props.storeComments;\n this.storeApplicationSettings = this.props.storeApplicationSettings;\n\n Common.Notifications.on('engineCreated', api => {\n api.asc_registerCallback('asc_onAddComment', this.addComment.bind(this));\n api.asc_registerCallback('asc_onAddComments', this.addComments.bind(this));\n api.asc_registerCallback('asc_onRemoveComment', this.removeComment.bind(this));\n api.asc_registerCallback('asc_onRemoveComments', this.removeComments.bind(this));\n api.asc_registerCallback('asc_onChangeCommentData', this.changeCommentData.bind(this));\n api.asc_registerCallback('asc_onShowComment', this.changeShowComments.bind(this));\n api.asc_registerCallback('asc_onHideComment', this.hideComments.bind(this));\n\n if (window.editorType === 'sse') {\n api.asc_registerCallback('asc_onActiveSheetChanged', this.onApiActiveSheetChanged.bind(this));\n Common.Notifications.on('comments:filterchange', this.onFilterChange.bind(this));\n Common.Notifications.on('sheet:active', this.onApiActiveSheetChanged.bind(this));\n }\n });\n\n Common.Notifications.on('document:ready', () => {\n if (window.editorType === 'de' || window.editorType === 'sse') {\n const api = Common.EditorApi.get();\n /** coauthoring begin **/\n const isLiveCommenting = LocalStorage.getBool(`${window.editorType}-mobile-settings-livecomment`, true);\n const resolved = LocalStorage.getBool(`${window.editorType}-settings-resolvedcomment`);\n this.storeApplicationSettings.changeDisplayComments(isLiveCommenting);\n this.storeApplicationSettings.changeDisplayResolved(resolved);\n isLiveCommenting ? api.asc_showComments(resolved) : api.asc_hideComments();\n /** coauthoring end **/\n }\n\n this.curUserId = this.props.users.currentUser.asc_getIdOriginal();\n });\n }\n onApiActiveSheetChanged (index) {\n this.onFilterChange(['doc', 'sheet' + Common.EditorApi.get().asc_getWorksheetId(index)]);\n }\n addComment (id, data) {\n const comment = this.readSDKComment(id, data);\n \n if (comment) {\n this.storeComments.addComment(comment);\n this.changeShowComments([comment.uid]);\n }\n }\n addComments (data) {\n for (let i = 0; i < data.length; ++i) {\n const comment = this.readSDKComment(data[i].asc_getId(), data[i]);\n this.storeComments.addComment(comment);\n }\n }\n removeComment (id) {\n this.storeComments.removeComment(id);\n if (this.storeComments.showComments.length < 1) {\n Device.phone ? f7.sheet.close('#view-comment-sheet') : f7.popover.close('#view-comment-popover');\n }\n }\n removeComments (data) {\n for (let i = 0; i < data.length; i++) {\n this.removeComment(data[i]);\n }\n }\n changeShowComments (id) {\n this.storeComments.changeShowComment(id);\n }\n hideComments () {\n //Common.Notifications.trigger('closeviewcomment');\n }\n changeCommentData (id, data) {\n const changeComment = {};\n\n const date = (data.asc_getOnlyOfficeTime()) ? new Date(stringOOToLocalDate(data.asc_getOnlyOfficeTime())) :\n ((data.asc_getTime() === '') ? new Date() : new Date(stringUtcToLocalDate(data.asc_getTime())));\n\n const userId = data.asc_getUserId()\n const user = this.usersStore.searchUserById(userId);\n const name = data.asc_getUserName();\n const parsedName = parseUserName(name);\n\n changeComment.comment = data.asc_getText();\n changeComment.userId = userId;\n changeComment.userName = name;\n changeComment.parsedName = Common.Utils.String.htmlEncode(parsedName);\n changeComment.userInitials = this.usersStore.getInitials(parsedName);\n changeComment.userColor = (user) ? user.asc_getColor() : getUserColor(userId || name);\n changeComment.resolved = data.asc_getSolved();\n changeComment.quote = data.asc_getQuoteText();\n changeComment.time = date.getTime();\n changeComment.date = dateToLocaleTimeString(date, this.appOptions.lang);\n changeComment.editable = (this.appOptions.canEditComments || (data.asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canEditComment(name);\n changeComment.removable = (this.appOptions.canDeleteComments || (data.asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canDeleteComment(name);\n changeComment.hide = !AscCommon.UserInfoParser.canViewComment(name);\n\n let dateReply = null;\n const replies = [];\n\n const repliesCount = data.asc_getRepliesCount();\n for (let i = 0; i < repliesCount; ++i) {\n\n dateReply = (data.asc_getReply(i).asc_getOnlyOfficeTime()) ? new Date(stringOOToLocalDate(data.asc_getReply(i).asc_getOnlyOfficeTime())) :\n ((data.asc_getReply(i).asc_getTime() === '') ? new Date() : new Date(stringUtcToLocalDate(data.asc_getReply(i).asc_getTime())));\n\n const userId = data.asc_getReply(i).asc_getUserId();\n const user = this.usersStore.searchUserById(userId);\n const userName = data.asc_getReply(i).asc_getUserName();\n const parsedName = parseUserName(userName);\n\n replies.push({\n ind: i,\n userId,\n userName,\n parsedName: Common.Utils.String.htmlEncode(parsedName),\n userColor: (user) ? user.asc_getColor() : getUserColor(userId || userName),\n date: dateToLocaleTimeString(dateReply, this.appOptions.lang),\n reply: data.asc_getReply(i).asc_getText(),\n time: dateReply.getTime(),\n userInitials: this.usersStore.getInitials(parsedName),\n editable: (this.appOptions.canEditComments || (data.asc_getReply(i).asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canEditComment(userName),\n removable: (this.appOptions.canDeleteComments || (data.asc_getReply(i).asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canDeleteComment(userName)\n });\n }\n changeComment.replies = replies;\n\n this.props.storeComments.changeComment(id, changeComment);\n }\n onFilterChange (filter) {\n this.storeComments.changeFilter(filter);\n }\n readSDKComment (id, data) {\n const date = (data.asc_getOnlyOfficeTime()) ? new Date(stringOOToLocalDate(data.asc_getOnlyOfficeTime())) :\n ((data.asc_getTime() === '') ? new Date() : new Date(stringUtcToLocalDate(data.asc_getTime())));\n const userId = data.asc_getUserId();\n const user = this.usersStore.searchUserById(userId);\n const groupName = id.substr(0, id.lastIndexOf('_')+1).match(/^(doc|sheet[0-9_]+)_/);\n const userName = data.asc_getUserName();\n const parsedName = parseUserName(userName);\n const comment = {\n uid : id,\n userId,\n userName,\n parsedName,\n userColor : (user) ? user.asc_getColor() : getUserColor(userId || userName),\n date : dateToLocaleTimeString(date, this.appOptions.lang),\n quote : data.asc_getQuoteText(),\n comment : data.asc_getText(),\n resolved : data.asc_getSolved(),\n unattached : !!data.asc_getDocumentFlag ? data.asc_getDocumentFlag() : false,\n time : date.getTime(),\n replies : [],\n groupName : (groupName && groupName.length>1) ? groupName[1] : null,\n userInitials : this.usersStore.getInitials(parsedName),\n editable : (this.appOptions.canEditComments || (data.asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canEditComment(userName),\n removable : (this.appOptions.canDeleteComments || (data.asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canDeleteComment(userName),\n hide : !AscCommon.UserInfoParser.canViewComment(userName),\n };\n if (comment) {\n const replies = this.readSDKReplies(data);\n if (replies.length > 0) {\n comment.replies = replies;\n }\n }\n return comment;\n }\n readSDKReplies (data) {\n const replies = [];\n const repliesCount = data.asc_getRepliesCount();\n let i = 0;\n let date = null;\n if (repliesCount) {\n for (i = 0; i < repliesCount; ++i) {\n date = (data.asc_getReply(i).asc_getOnlyOfficeTime()) ? new Date(stringOOToLocalDate(data.asc_getReply(i).asc_getOnlyOfficeTime())) :\n ((data.asc_getReply(i).asc_getTime() === '') ? new Date() : new Date(stringUtcToLocalDate(data.asc_getReply(i).asc_getTime())));\n const userId = data.asc_getReply(i).asc_getUserId();\n const user = this.usersStore.searchUserById(userId);\n const userName = data.asc_getReply(i).asc_getUserName();\n const parsedName = parseUserName(userName);\n\n replies.push({\n ind : i,\n userId,\n userName,\n parsedName : Common.Utils.String.htmlEncode(parsedName),\n userColor : (user) ? user.asc_getColor() : getUserColor(userId || userName),\n date : dateToLocaleTimeString(date, this.appOptions.lang),\n reply : data.asc_getReply(i).asc_getText(),\n time : date.getTime(),\n userInitials : this.usersStore.getInitials(parsedName),\n editable : (this.appOptions.canEditComments || (data.asc_getReply(i).asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canEditComment(userName),\n removable : (this.appOptions.canDeleteComments || (data.asc_getReply(i).asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canDeleteComment(userName)\n });\n }\n }\n return replies;\n }\n render() {\n return null;\n }\n}\n\nclass AddCommentController extends Component {\n constructor(props) {\n super(props);\n this.closeAddComment = this.closeAddComment.bind(this);\n this.getUserInfo = this.getUserInfo.bind(this);\n this.onAddNewComment = this.onAddNewComment.bind(this);\n\n this.state = {\n isOpen: false\n };\n\n Common.Notifications.on('addcomment', () => {\n f7.popover.close('#idx-context-menu-popover'); //close context menu\n this.setState({isOpen: true});\n });\n }\n closeAddComment () {\n this.setState({isOpen: false});\n }\n getUserInfo () {\n this.currentUser = this.props.users.currentUser;\n if (!this.currentUser) {\n this.currentUser = this.props.users.setCurrentUser(this.props.storeAppOptions.user.id);\n }\n const name = parseUserName(this.currentUser.asc_getUserName());\n return {\n name: Common.Utils.String.htmlEncode(name),\n initials: this.props.users.getInitials(name),\n color: this.currentUser.asc_getColor()\n };\n }\n onAddNewComment (commentText, documentFlag) {\n const api = Common.EditorApi.get();\n let comment;\n if (typeof Asc.asc_CCommentDataWord !== 'undefined') {\n comment = new Asc.asc_CCommentDataWord(null);\n } else {\n comment = new Asc.asc_CCommentData(null);\n }\n if (commentText.length > 0) {\n comment.asc_putText(commentText);\n comment.asc_putTime(utcDateToString(new Date()));\n comment.asc_putOnlyOfficeTime(ooDateToString(new Date()));\n comment.asc_putUserId(this.currentUser.asc_getIdOriginal());\n comment.asc_putUserName(this.currentUser.asc_getUserName());\n comment.asc_putSolved(false);\n\n !!comment.asc_putDocumentFlag && comment.asc_putDocumentFlag(documentFlag);\n\n api.asc_addComment(comment);\n Common.Notifications.trigger('viewcomment');\n }\n }\n render() {\n return(\n this.state.isOpen ? : null\n )\n }\n}\n\nclass EditCommentController extends Component {\n constructor (props) {\n super(props);\n this.onEditComment = this.onEditComment.bind(this);\n this.onAddReply = this.onAddReply.bind(this);\n this.onEditReply = this.onEditReply.bind(this);\n }\n getUserInfo () {\n this.currentUser = this.props.users.currentUser;\n const name = parseUserName(this.currentUser.asc_getUserName());\n return {\n name: Common.Utils.String.htmlEncode(name),\n initials: this.props.users.getInitials(name),\n color: this.currentUser.asc_getColor()\n };\n }\n onChangeComment (comment) {\n const ascComment = typeof Asc.asc_CCommentDataWord !== 'undefined' ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null);\n if (ascComment && comment) {\n ascComment.asc_putText(comment.comment);\n ascComment.asc_putQuoteText(comment.quote);\n ascComment.asc_putTime(utcDateToString(new Date(comment.time)));\n ascComment.asc_putOnlyOfficeTime(ooDateToString(new Date(comment.time)));\n ascComment.asc_putUserId(comment.userId);\n ascComment.asc_putUserName(comment.userName);\n ascComment.asc_putSolved(comment.resolved);\n ascComment.asc_putGuid(comment.guid);\n\n if (!!ascComment.asc_putDocumentFlag) {\n ascComment.asc_putDocumentFlag(comment.unattached);\n }\n\n const reply = comment.replies;\n if (reply && reply.length > 0) {\n reply.forEach((reply) => {\n const addReply = (typeof Asc.asc_CCommentDataWord !== 'undefined' ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n if (addReply) {\n addReply.asc_putText(reply.reply);\n addReply.asc_putTime(utcDateToString(new Date(reply.time)));\n addReply.asc_putOnlyOfficeTime(ooDateToString(new Date(reply.time)));\n addReply.asc_putUserId(reply.userId);\n addReply.asc_putUserName(reply.userName);\n\n ascComment.asc_addReply(addReply);\n }\n });\n }\n const api = Common.EditorApi.get();\n api.asc_changeComment(comment.uid, ascComment);\n }\n }\n onEditComment (comment, text) {\n const changeComment = {...comment};\n changeComment.comment = text.trim();\n const user = this.props.users.currentUser;\n changeComment.userid = user.asc_getIdOriginal();\n changeComment.username = user.asc_getUserName();\n this.onChangeComment(changeComment);\n }\n onAddReply (comment, replyVal) {\n let reply = null;\n let addReply = null;\n const ascComment = (typeof Asc.asc_CCommentDataWord !== 'undefined' ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n\n if (ascComment) {\n ascComment.asc_putText(comment.comment);\n ascComment.asc_putQuoteText(comment.quote);\n ascComment.asc_putTime(utcDateToString(new Date(comment.time)));\n ascComment.asc_putOnlyOfficeTime(ooDateToString(new Date(comment.time)));\n ascComment.asc_putUserId(comment.userId);\n ascComment.asc_putUserName(comment.userName);\n ascComment.asc_putSolved(comment.resolved);\n ascComment.asc_putGuid(comment.guid);\n\n if (!!ascComment.asc_putDocumentFlag) {\n ascComment.asc_putDocumentFlag(comment.unattached);\n }\n\n reply = comment.replies;\n if (reply && reply.length) {\n reply.forEach(function (reply) {\n\n addReply = (typeof Asc.asc_CCommentDataWord !== 'undefined' ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n if (addReply) {\n addReply.asc_putText(reply.reply);\n addReply.asc_putTime(utcDateToString(new Date(reply.time)));\n addReply.asc_putOnlyOfficeTime(ooDateToString(new Date(reply.time)));\n addReply.asc_putUserId(reply.userId);\n addReply.asc_putUserName(reply.userName);\n\n ascComment.asc_addReply(addReply);\n }\n });\n }\n\n addReply = (typeof Asc.asc_CCommentDataWord !== 'undefined' ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n if (addReply) {\n addReply.asc_putText(replyVal);\n addReply.asc_putTime(utcDateToString(new Date()));\n addReply.asc_putOnlyOfficeTime(ooDateToString(new Date()));\n const currentUser = this.props.users.currentUser;\n addReply.asc_putUserId(currentUser.asc_getIdOriginal());\n addReply.asc_putUserName(currentUser.asc_getUserName());\n\n ascComment.asc_addReply(addReply);\n\n const api = Common.EditorApi.get();\n api.asc_changeComment(comment.uid, ascComment);\n }\n }\n }\n onEditReply (comment, reply, textReply) {\n const currentUser = this.props.users.currentUser;\n const indReply = reply.ind;\n const changeComment = {...comment};\n changeComment.replies = [...comment.replies];\n changeComment.replies[indReply] = {...reply};\n changeComment.replies[indReply].reply = textReply;\n changeComment.replies[indReply].userid = currentUser.asc_getIdOriginal();\n changeComment.replies[indReply].username = currentUser.asc_getUserName();\n this.onChangeComment(changeComment);\n }\n render() {\n const storeComments = this.props.storeComments;\n const comment = storeComments.currentComment;\n return (\n \n {storeComments.isOpenEditComment && }\n {storeComments.isOpenAddReply && }\n {storeComments.isOpenEditReply && }\n \n )\n }\n}\n\nclass ViewCommentsController extends Component {\n constructor (props) {\n super(props);\n this.onCommentMenuClick = this.onCommentMenuClick.bind(this);\n this.onResolveComment = this.onResolveComment.bind(this);\n this.closeViewCurComments = this.closeViewCurComments.bind(this);\n\n this.state = {\n isOpenViewCurComments: false\n };\n\n Common.Notifications.on('viewcomment', () => {\n this.setState({isOpenViewCurComments: true});\n });\n Common.Notifications.on('closeviewcomment', () => {\n this.closeViewCurComments();\n });\n }\n closeViewCurComments () {\n if (Device.phone) {\n f7.sheet.close('#view-comment-sheet');\n } else {\n f7.popover.close('#view-comment-popover');\n }\n this.setState({isOpenViewCurComments: false});\n }\n onResolveComment (comment) {\n let reply = null,\n addReply = null,\n ascComment = (typeof Asc.asc_CCommentDataWord !== 'undefined' ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n\n if (ascComment && comment) {\n ascComment.asc_putText(comment.comment);\n ascComment.asc_putQuoteText(comment.quote);\n ascComment.asc_putTime(utcDateToString(new Date(comment.time)));\n ascComment.asc_putOnlyOfficeTime(ooDateToString(new Date(comment.time)));\n ascComment.asc_putUserId(comment.userId);\n ascComment.asc_putUserName(comment.userName);\n ascComment.asc_putSolved(!comment.resolved);\n ascComment.asc_putGuid(comment.guid);\n\n if (!!ascComment.asc_putDocumentFlag) {\n ascComment.asc_putDocumentFlag(comment.unattached);\n }\n\n reply = comment.replies;\n if (reply && reply.length > 0) {\n reply.forEach((reply) => {\n addReply = (typeof Asc.asc_CCommentDataWord !== 'undefined' ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n if (addReply) {\n addReply.asc_putText(reply.reply);\n addReply.asc_putTime(utcDateToString(new Date(reply.time)));\n addReply.asc_putOnlyOfficeTime(ooDateToString(new Date(reply.time)));\n addReply.asc_putUserId(reply.userId);\n addReply.asc_putUserName(reply.userName);\n\n ascComment.asc_addReply(addReply);\n }\n });\n }\n const api = Common.EditorApi.get();\n api.asc_showComments(this.props.storeApplicationSettings.isResolvedComments);\n api.asc_changeComment(comment.uid, ascComment);\n\n if(!this.props.storeApplicationSettings.isResolvedComments) {\n this.closeViewCurComments();\n }\n }\n }\n deleteComment (comment) {\n const api = Common.EditorApi.get();\n comment && api.asc_removeComment(comment.uid);\n }\n deleteReply (comment, reply) {\n let replies = null,\n addReply = null,\n ascComment = (!!Asc.asc_CCommentDataWord ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n\n const indReply = reply.ind;\n\n if (ascComment && comment) {\n ascComment.asc_putText(comment.comment);\n ascComment.asc_putQuoteText(comment.quote);\n ascComment.asc_putTime(utcDateToString(new Date(comment.time)));\n ascComment.asc_putOnlyOfficeTime(ooDateToString(new Date(comment.time)));\n ascComment.asc_putUserId(comment.userId);\n ascComment.asc_putUserName(comment.userName);\n ascComment.asc_putSolved(comment.resolved);\n ascComment.asc_putGuid(comment.guid);\n\n if (!!ascComment.asc_putDocumentFlag) {\n ascComment.asc_putDocumentFlag(comment.unattached);\n }\n\n replies = comment.replies;\n if (replies && replies.length) {\n replies.forEach((reply) => {\n if (reply.ind !== indReply) {\n addReply = (!!Asc.asc_CCommentDataWord ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n if (addReply) {\n addReply.asc_putText(reply.reply);\n addReply.asc_putTime(utcDateToString(new Date(reply.time)));\n addReply.asc_putOnlyOfficeTime(ooDateToString(new Date(reply.time)));\n addReply.asc_putUserId(reply.userId);\n addReply.asc_putUserName(reply.userName);\n\n ascComment.asc_addReply(addReply);\n }\n }\n });\n }\n const api = Common.EditorApi.get();\n api.asc_changeComment(comment.uid, ascComment);\n }\n }\n onCommentMenuClick (action, comment, reply) {\n const { t } = this.props;\n const _t = t(\"Common.Collaboration\", { returnObjects: true });\n switch (action) {\n case 'editComment':\n this.props.storeComments.openEditComment(true, comment);\n break;\n case 'resolve':\n this.onResolveComment(comment);\n break;\n case 'deleteComment':\n f7.dialog.create({\n title: _t.textDeleteComment,\n text: _t.textMessageDeleteComment,\n buttons: [\n {\n text: _t.textCancel\n },\n {\n text: _t.textOk,\n onClick: () => this.deleteComment(comment)\n }\n ]\n }).open();\n break;\n case 'editReply':\n this.props.storeComments.openEditReply(true, comment, reply);\n break;\n case 'deleteReply':\n f7.dialog.create({\n title: _t.textDeleteReply,\n text: _t.textMessageDeleteReply,\n buttons: [\n {\n text: _t.textCancel\n },\n {\n text: _t.textOk,\n onClick: () => this.deleteReply(comment, reply)\n }\n ]\n }).open();\n break;\n case 'addReply':\n this.props.storeComments.openAddReply(true, comment);\n break;\n }\n }\n\n showComment (comment) {\n const api = Common.EditorApi.get();\n\n api.asc_selectComment(comment.uid); \n api.asc_showComment(comment.uid, false);\n }\n\n\n render() {\n return(\n \n {this.props.allComments && }\n {this.state.isOpenViewCurComments && }\n \n )\n }\n}\n\nclass ViewCommentsSheetsController extends ViewCommentsController {\n constructor(props) {\n super(props);\n }\n}\n\nconst _CommentsController = inject('storeAppOptions', 'storeComments', 'users', \"storeApplicationSettings\")(observer(CommentsController));\nconst _AddCommentController = inject('storeAppOptions', 'storeComments', 'users')(observer(AddCommentController));\nconst _EditCommentController = inject('storeComments', 'users')(observer(EditCommentController));\nconst _ViewCommentsController = inject('storeComments', 'users', \"storeApplicationSettings\", \"storeReview\", \"storeAppOptions\")(observer(withTranslation()(ViewCommentsController)));\nconst _ViewCommentsSheetsController = inject('storeComments', 'users', \"storeApplicationSettings\", \"storeWorksheets\", \"storeReview\", \"storeAppOptions\")(observer(withTranslation()(ViewCommentsSheetsController)));\n\nexport {\n _CommentsController as CommentsController,\n _AddCommentController as AddCommentController,\n _EditCommentController as EditCommentController,\n _ViewCommentsController as ViewCommentsController,\n _ViewCommentsSheetsController as ViewCommentsSheetsController\n};","import React from 'react';\nimport { observer, inject } from \"mobx-react\";\nimport { List, ListItem, Navbar, NavRight, Page, Icon, Link } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport { Device } from \"../../utils/device\";\n\nconst CollaborationPage = props => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const appOptions = props.storeAppOptions;\n const isForm = appOptions.isForm;\n const sharingSettingsUrl = appOptions.sharingSettingsUrl;\n const isViewer = appOptions.isViewer;\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {(sharingSettingsUrl && !isForm) &&\n \n \n \n }\n {props.users.editUsers.length > 0 &&\n \n \n \n }\n {appOptions.canViewComments &&\n \n \n \n }\n {(window.editorType === 'de' && (appOptions.canReview || appOptions.canViewReview) && !isViewer) &&\n \n \n \n }\n \n \n )\n};\n\nlet storeInfo;\n\nswitch (window.asceditor) {\n case 'word':\n storeInfo = 'storeDocumentInfo';\n break;\n case 'slide':\n storeInfo = 'storePresentationInfo';\n break;\n case 'cell':\n storeInfo = 'storeSpreadsheetInfo';\n break;\n}\n\nconst Collaboration = inject('storeAppOptions', 'users', storeInfo)(observer(CollaborationPage));\n\nexport { Collaboration as CollaborationPage };","import React, {useEffect} from 'react';\nimport ViewSharingSettings from \"../view/SharingSettings\";\nimport {observer, inject} from \"mobx-react\";\n\nconst SharingSettingsController = props => {\n const appOptions = props.storeAppOptions;\n const canRequestSharingSettings = appOptions.canRequestSharingSettings;\n const sharingSettingsUrl = appOptions.sharingSettingsUrl;\n\n const changeAccessRights = () => {\n if (canRequestSharingSettings) {\n Common.Gateway.requestSharingSettings();\n }\n };\n\n const setSharingSettings = data => {\n if (data) {\n Common.Notifications.trigger('collaboration:sharingupdate', data.sharingSettings);\n }\n }\n\n const onMessage = msg => {\n if(msg) {\n const msgData = JSON.parse(msg.data);\n\n if (msgData && msgData?.Referer == \"onlyoffice\") {\n if (msgData?.needUpdate) {\n setSharingSettings(msgData.sharingSettings);\n }\n props.f7router.back();\n }\n }\n };\n\n const bindWindowEvents = () => {\n if (window.addEventListener) {\n window.addEventListener(\"message\", onMessage, false);\n } else if (window.attachEvent) {\n window.attachEvent(\"onmessage\", onMessage);\n }\n };\n\n const unbindWindowEvents = () => {\n if (window.removeEventListener) {\n window.removeEventListener(\"message\", onMessage);\n } else if (window.detachEvent) {\n window.detachEvent(\"onmessage\", onMessage);\n }\n };\n\n useEffect(() => {\n bindWindowEvents();\n Common.Notifications.on('collaboration:sharing', changeAccessRights);\n\n if (!!sharingSettingsUrl && sharingSettingsUrl.length || canRequestSharingSettings) {\n Common.Gateway.on('showsharingsettings', changeAccessRights);\n Common.Gateway.on('setsharingsettings', setSharingSettings);\n }\n\n return () => {\n unbindWindowEvents();\n }\n }, []);\n\n return (\n \n );\n};\n\nexport default inject('storeAppOptions')(observer(SharingSettingsController));","import React from 'react';\nimport { observer, inject } from \"mobx-react\";\nimport { List, ListItem, Navbar, NavRight, Page, Icon, Link } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport { Device } from \"../../utils/device\";\n\nconst UsersPage = inject(\"users\")(observer(props => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const storeUsers = props.users;\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {storeUsers.editUsers.map((user, i) => (\n 1 ? ` (${user.count})` : '')} key={i}>\n
          \n {user.initials}\n
          \n
          \n ))}\n
          \n
          \n )\n}));\n\nexport default UsersPage;","import React, { useEffect } from 'react';\nimport { Popover, Sheet, f7, View } from 'framework7-react';\nimport { Device } from \"../../../utils/device\";\nimport { ReviewController, ReviewChangeController } from \"../../controller/collaboration/Review\";\nimport { PageDisplayMode } from \"./Review\";\nimport { ViewCommentsController, ViewCommentsSheetsController } from \"../../controller/collaboration/Comments\";\nimport SharingSettingsController from \"../../controller/SharingSettings\";\nimport { CollaborationPage } from '../../pages/CollaborationPage';\nimport UsersPage from '../../pages/UsersPage';\n\nconst routes = [\n {\n path: '/collaboration-page/',\n component: CollaborationPage,\n keepAlive: true\n },\n {\n path: '/users/',\n component: UsersPage\n },\n {\n path: '/review/',\n component: ReviewController\n },\n {\n path: '/cm-review/',\n component: ReviewController,\n options: {\n props: {\n noBack: true\n }\n }\n },\n {\n path: '/display-mode/',\n component: PageDisplayMode\n },\n {\n path: '/review-change/',\n component: ReviewChangeController\n },\n {\n path: '/cm-review-change/',\n component: ReviewChangeController,\n options: {\n props: {\n noBack: true\n }\n }\n },\n {\n path: '/comments/',\n asyncComponent: () => window.editorType == 'sse' ? ViewCommentsSheetsController : ViewCommentsController,\n options: {\n props: {\n allComments: true\n }\n }\n },\n {\n path: '/sharing-settings/',\n component: SharingSettingsController\n }\n];\n\nroutes.forEach(route => {\n route.options = {\n ...route.options,\n transition: 'f7-push'\n };\n});\n\nconst CollaborationView = props => {\n useEffect(() => {\n if(Device.phone) {\n f7.sheet.open('.coauth__sheet');\n } else {\n f7.popover.open('#coauth-popover', '#btn-coauth');\n }\n }, []);\n\n return (\n !Device.phone ?\n props.closeOptions('coauth')} closeByOutsideClick={false}>\n \n \n \n :\n props.closeOptions('coauth')}>\n \n \n \n \n )\n}\n\nexport default CollaborationView;\n","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n };\n }\n return _get.apply(this, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}","\nimport React, { Component } from 'react';\nimport { Popover, Popup, View, f7 } from 'framework7-react';\nimport { Device } from '../../../../common/mobile/utils/device';\nimport { observable, runInAction } from \"mobx\";\nimport { observer } from \"mobx-react\";\n\nconst searchOptions = observable({\n usereplace: false,\n isReplaceAll: false\n});\n\nconst popoverStyle = {\n height: '300px'\n};\n\nconst SEARCH_BACKWARD = 'back';\nconst SEARCH_FORWARD = 'next';\n\nclass SearchSettingsView extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n useReplace: false,\n // caseSensitive: false,\n // markResults: false\n searchIn: 0,\n searchBy: 1,\n lookIn: 1,\n isMatchCase: false,\n isMatchCell: false,\n isReplaceAll: false\n };\n }\n\n onFindReplaceClick(action) {\n runInAction(() => {\n searchOptions.usereplace = action == 'replace';\n searchOptions.isReplaceAll = action == 'replace-all';\n });\n\n this.setState({\n useReplace: searchOptions.usereplace,\n isReplaceAll: searchOptions.isReplaceAll\n });\n\n if (this.onReplaceChecked) {}\n }\n\n extraSearchOptions() {}\n\n render() {\n const show_popover = !Device.phone;\n const extra = this.extraSearchOptions();\n const content =\n \n {extra}\n ;\n return (\n show_popover ?\n {content} :\n {content}\n )\n }\n}\n\n// @observer\nclass SearchView extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n searchQuery: '',\n replaceQuery: ''\n };\n\n this.refSearchbarInput = React.createRef();\n this.onSettingsClick = this.onSettingsClick.bind(this);\n this.onSearchClick = this.onSearchClick.bind(this);\n this.onReplaceClick = this.onReplaceClick.bind(this);\n }\n\n componentDidMount() {\n this.$replace = $$('#idx-replace-val');\n const $editor = $$('#editor_sdk');\n\n this.onEditorTouchStart = this.onEditorTouchStart.bind(this);\n this.onEditorTouchEnd = this.onEditorTouchEnd.bind(this);\n\n $editor.on('pointerdown', this.onEditorTouchStart);\n $editor.on('pointerup', this.onEditorTouchEnd);\n\n if(!this.searchbar) {\n this.searchbar = f7.searchbar.create({\n el: '.searchbar',\n customSearch: true,\n expandable: true,\n backdrop: false,\n on: {\n search: (sb, query, previousQuery) => {\n const api = Common.EditorApi.get();\n\n if(!query) {\n api.asc_selectSearchingResults(false);\n }\n },\n searchbarEnable: (sb) => {\n this.refSearchbarInput.focus();\n\n if(this.state.searchQuery.length > 0) {\n const searchInput = document.querySelector('.searchbar-input');\n searchInput.classList.add('input-with-value');\n }\n\n if (this.searchbar && this.searchbar.enabled && !this.props.isViewer) {\n searchOptions.usereplace || searchOptions.isReplaceAll ? this.searchbar.el.classList.add('replace') : this.searchbar.el.classList.remove('replace');\n } else {\n this.searchbar.el.classList.remove('replace');\n }\n }\n }\n });\n }\n }\n\n componentWillUnmount() {\n $$('#editor_sdk')\n .off('pointerdown', this.onEditorTouchStart)\n .off('pointerup', this.onEditorTouchEnd);\n \n if(this.searchTimer) {\n clearInterval(this.searchTimer);\n }\n }\n\n onSettingsClick(e) {\n if ( Device.phone ) {\n f7.popup.open('.search-settings-popup');\n } else f7.popover.open('#idx-search-settings', '#idx-btn-search-settings');\n }\n\n searchParams() {\n let params = {\n find: this.state.searchQuery\n };\n\n if (searchOptions.usereplace || searchOptions.isReplaceAll) {\n params.replace = this.$replace.val();\n } \n\n return params;\n }\n\n onSearchClick(action) {\n if (this.searchbar && this.state.searchQuery) {\n if (this.props.onSearchQuery) {\n let params = this.searchParams();\n\n params.find = this.state.searchQuery;\n params.forward = action != SEARCH_BACKWARD;\n\n this.props.onSearchQuery(params);\n }\n }\n }\n\n onReplaceClick() {\n if (this.searchbar) {\n if (this.props.onReplaceQuery) {\n let params = this.searchParams();\n params.find = this.state.searchQuery;\n\n this.props.onReplaceQuery(params);\n } \n }\n }\n\n onReplaceAllClick() {\n if (this.searchbar) {\n if (this.props.onReplaceAllQuery) {\n let params = this.searchParams();\n params.find = this.state.searchQuery;\n\n this.props.onReplaceAllQuery(params);\n } \n }\n }\n\n onEditorTouchStart(e) {\n this.startPoint = this.pointerPosition(e);\n }\n\n onEditorTouchEnd(e) {\n const endPoint = this.pointerPosition(e);\n\n if (this.searchbar.enabled) {\n let distance;\n\n if(this.startPoint) {\n distance = (this.startPoint.x === undefined || this.startPoint.y === undefined) ? 0 :\n Math.sqrt((endPoint.x -= this.startPoint.x) * endPoint.x + (endPoint.y -= this.startPoint.y) * endPoint.y);\n } else {\n distance = 0;\n }\n\n if (distance < 1) {\n this.searchbar.disable();\n }\n }\n }\n\n pointerPosition(e) {\n let out = {x:0, y:0};\n if ( e.type == 'pointerdown' || e.type == 'pointerup' || e.type == 'mousedown' || e.type == 'mouseup') {\n out.x = e.pageX;\n out.y = e.pageY;\n }\n return out;\n }\n\n changeSearchQuery(value) {\n this.setState({\n searchQuery: value\n });\n\n this.props.onchangeSearchQuery(value);\n }\n\n changeReplaceQuery(value) {\n this.setState({\n replaceQuery: value\n });\n }\n \n onSearchKeyDown(e) {\n if(e.keyCode === 13) {\n if (this.props.onSearchQuery(this.searchParams(), true) && this.searchTimer) {\n clearInterval(this.searchTimer);\n this.searchTimer = undefined;\n }\n }\n }\n\n onSearchInput(e) {\n const text = e.target.value;\n const api = Common.EditorApi.get();\n\n if (text && this.state.searchQuery !== text) {\n this.setState(prevState => ({\n ...prevState,\n searchQuery: text\n }));\n\n this.lastInputChange = new Date();\n\n if (this.searchTimer === undefined) {\n this.searchTimer = setInterval(() => {\n if (new Date() - this.lastInputChange < 400) return;\n\n if (!(this.state.searchQuery === '' || this.props.onSearchQuery(this.searchParams(), true))) {\n this.props.onSearchQuery(this.searchParams(), true);\n clearInterval(this.searchTimer);\n this.searchTimer = undefined;\n }\n }, 10);\n }\n } else {\n this.props.setNumberSearchResults(null);\n }\n }\n\n render() {\n const usereplace = searchOptions.usereplace;\n const isReplaceAll = searchOptions.isReplaceAll;\n const hidden = {display: \"none\"};\n const searchQuery = this.state.searchQuery;\n const replaceQuery = this.state.replaceQuery;\n const isIos = Device.ios;\n const { _t } = this.props;\n const numberSearchResults = this.props.numberSearchResults;\n const isViewer = this.props.isViewer ?? false;\n\n\n if (this.searchbar && this.searchbar.enabled && !isViewer) {\n searchOptions.usereplace || searchOptions.isReplaceAll ? this.searchbar.el.classList.add('replace') : this.searchbar.el.classList.remove('replace');\n }\n\n return (\n
          \n {isIos ?
          : null}\n
          \n
          \n \n \n \n
          \n
          \n
          \n 0 ? 'input-with-value' : ''}`} value={searchQuery} placeholder={_t.textSearch} type=\"search\" maxLength=\"255\"\n onKeyDown={e => this.onSearchKeyDown(e)}\n onInput={e => this.onSearchInput(e)}\n onChange={e => {this.changeSearchQuery(e.target.value)}} ref={el => this.refSearchbarInput = el} />\n {isIos ? : null}\n this.changeSearchQuery('')} />\n {numberSearchResults !== null ? \n {numberSearchResults} \n : null}\n
          \n
          \n {this.changeReplaceQuery(e.target.value)}} />\n {isIos ? : null}\n this.changeReplaceQuery('')} />\n
          \n
          \n \n
          \n \n )\n } \n}\n\nconst SearchViewWithObserver = observer(SearchView);\nconst SearchSettingsViewWithObserver = observer(SearchSettingsView);\n\nexport {SearchViewWithObserver as SearchView, SearchSettingsViewWithObserver as SearchSettingsView};\n","import React, { useContext, useState } from 'react';\nimport { List, ListItem, Toggle, Page, Navbar, NavRight, Link, f7 } from 'framework7-react';\nimport { SearchView, SearchSettingsView } from '../../../../common/mobile/lib/controller/Search';\nimport { withTranslation } from 'react-i18next';\nimport { Device } from '../../../../common/mobile/utils/device';\nimport { observer, inject } from \"mobx-react\";\nimport { MainContext } from '../page/main';\n\nclass SearchSettings extends SearchSettingsView {\n constructor(props) {\n super(props);\n this.onToggleMarkResults = this.onToggleMarkResults.bind(this);\n }\n\n onToggleMarkResults(checked) {\n const api = Common.EditorApi.get();\n api.asc_selectSearchingResults(checked);\n }\n\n extraSearchOptions() {\n const anc_markup = super.extraSearchOptions();\n const show_popover = !Device.phone;\n const { t } = this.props;\n const _t = t(\"Settings\", {returnObjects: true});\n const storeAppOptions = this.props.storeAppOptions;\n const storeVersionHistory = this.props.storeVersionHistory;\n const isVersionHistoryMode = storeVersionHistory.isVersionHistoryMode;\n const isEdit = storeAppOptions.isEdit;\n const isViewer = storeAppOptions.isViewer;\n const storeReview = this.props.storeReview;\n const displayMode = storeReview.displayMode;\n\n const markup = (\n \n \n {!show_popover &&\n \n {_t.textDone}\n \n }\n \n \n this.onFindReplaceClick('find')} />\n {isEdit && displayMode === 'markup' && !isViewer && !isVersionHistoryMode ? [\n this.onFindReplaceClick('replace')} />, \n this.onFindReplaceClick('replace-all')}>]\n : null}\n \n \n \n \n \n \n \n \n \n \n );\n\n return {...anc_markup, ...markup};\n }\n}\n\nclass DESearchView extends SearchView {\n constructor(props) {\n super(props);\n }\n\n searchParams() {\n let params = super.searchParams();\n\n const checkboxCaseSensitive = f7.toggle.get('.toggle-case-sensitive'),\n checkboxMarkResults = f7.toggle.get('.toggle-mark-results');\n const searchOptions = {\n caseSensitive: checkboxCaseSensitive.checked,\n highlight: checkboxMarkResults.checked\n };\n\n return {...params, ...searchOptions};\n }\n\n onSearchbarShow(isshowed, bar) {\n // super.onSearchbarShow(isshowed, bar);\n const api = Common.EditorApi.get();\n\n if ( isshowed && this.state.searchQuery.length ) {\n const checkboxMarkResults = f7.toggle.get('.toggle-mark-results');\n api.asc_selectSearchingResults(checkboxMarkResults.checked);\n } else api.asc_selectSearchingResults(false);\n }\n}\n\nconst Search = withTranslation()(props => {\n const { t } = props;\n const _t = t('Settings', {returnObjects: true});\n const [numberSearchResults, setNumberSearchResults] = useState(null);\n const { isViewer } = useContext(MainContext);\n\n const onSearchQuery = (params, isSearchByTyping) => {\n const api = Common.EditorApi.get();\n\n f7.popover.close('.document-menu.modal-in', false);\n\n const options = new AscCommon.CSearchSettings();\n\n options.put_Text(params.find);\n options.put_MatchCase(params.caseSensitive);\n\n if (params.highlight) api.asc_selectSearchingResults(true);\n\n api.asc_findText(options, params.forward, function (resultCount) {\n if(!resultCount) {\n setNumberSearchResults(0);\n api.asc_selectSearchingResults(false);\n\n if(!isSearchByTyping) {\n f7.dialog.alert(null, t('Settings.textNoMatches'));\n }\n } else {\n setNumberSearchResults(resultCount);\n }\n });\n };\n\n const onchangeSearchQuery = params => {\n const api = Common.EditorApi.get();\n \n if(params.length === 0) api.asc_selectSearchingResults(false);\n }\n\n const onReplaceQuery = params => {\n if (!params.find) return;\n\n const api = Common.EditorApi.get();\n const options = new AscCommon.CSearchSettings();\n\n options.put_Text(params.find);\n options.put_MatchCase(params.caseSensitive);\n\n api.asc_replaceText(options, params.replace || '', false);\n setNumberSearchResults(numberSearchResults > 0 ? numberSearchResults - 1 : 0);\n }\n\n const onReplaceAllQuery = params => {\n if (!params.find) return;\n\n const api = Common.EditorApi.get();\n const options = new AscCommon.CSearchSettings();\n \n options.put_Text(params.find);\n options.put_MatchCase(params.caseSensitive);\n\n api.asc_replaceText(options, params.replace || '', true);\n setNumberSearchResults(0);\n }\n\n return (\n \n )\n});\n\nconst SearchSettingsWithTranslation = inject(\"storeAppOptions\", \"storeReview\", \"storeVersionHistory\")(observer(withTranslation()(SearchSettings)));\n\nexport {Search, SearchSettingsWithTranslation as SearchSettings}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","import React, { Component } from 'react';\nimport { Popover, List, ListItem, ListButton, Link, Icon, Actions, ActionsGroup, ActionsButton } from 'framework7-react';\nimport { f7 } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\n\nconst idContextMenuElement = \"idx-context-menu-popover\";\n\nclass ContextMenuView extends Component {\n constructor(props) {\n super(props);\n }\n\n componentDidMount() {\n // f7.popover.open('#idx-context-menu-popover', '#idx-context-menu-target');\n }\n\n render() {\n const buttons = this.props.items || {};\n\n return (\n this.props.onMenuClosed()}\n >\n \n {buttons.length && buttons.map((b, index) =>\n !b.icon ?\n this.props.onMenuItemClick(b.event)} /> :\n this.props.onMenuItemClick(b.event)}>\n \n \n )}\n \n \n )\n }\n}\n\nconst ActionsWithExtraItems = ({items, onMenuItemClick, opened, onActionClosed}) => {\n const { t } = useTranslation();\n const _t = t('ContextMenu', {returnObjects: true});\n return (\n onActionClosed()}>\n \n {items.length > 0 && items.map((item, index)=>{\n return(\n {onMenuItemClick(item.event)}}>{item.caption}\n )\n })}\n \n \n {_t.menuCancel}\n \n \n )\n};\n\nconst exportedIdMenuElemen = `#${idContextMenuElement}`;\nexport {ContextMenuView as default, exportedIdMenuElemen as idContextMenuElement, ActionsWithExtraItems};","import React, { Component, Fragment } from 'react';\nimport { f7 } from 'framework7-react';\nimport {observer, inject} from \"mobx-react\";\nimport { Device } from '../../../../common/mobile/utils/device';\n\nimport ContextMenuView, { idContextMenuElement, ActionsWithExtraItems } from '../view/ContextMenu';\n\nconst idCntextMenuTargetElement = '#idx-context-menu-target';\n\nclass ContextMenuController extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n opened: false,\n items: [],\n openedMore: false,\n extraItems: []\n };\n\n this.fastCoAuthTips = [];\n this.onMenuItemClick = this.onMenuItemClick.bind(this);\n this.onMenuClosed = this.onMenuClosed.bind(this);\n this.onActionClosed = this.onActionClosed.bind(this);\n this.onDocumentReady = this.onDocumentReady.bind(this);\n this.onApiOpenContextMenu = this.onApiOpenContextMenu.bind(this);\n this.onApiHideContextMenu = this.onApiHideContextMenu.bind(this);\n this.onApiShowForeignCursorLabel = this.onApiShowForeignCursorLabel.bind(this);\n this.onApiHideForeignCursorLabel = this.onApiHideForeignCursorLabel.bind(this);\n }\n\n onDocumentReady() {\n this.$targetEl = $$(idCntextMenuTargetElement);\n if ( !this.$targetEl.length ) {\n // this.$targetEl = $$('
          ');\n this.$targetEl = $$(`
          `);\n this.$targetEl.css({left: '-10000px', top: '-10000px'});\n\n $$('#editor_sdk').append(this.$targetEl);\n }\n\n const api = Common.EditorApi.get();\n api.asc_registerCallback('asc_onShowPopMenu', this.onApiOpenContextMenu);\n api.asc_registerCallback('asc_onHidePopMenu', this.onApiHideContextMenu);\n api.asc_registerCallback('asc_onShowForeignCursorLabel', this.onApiShowForeignCursorLabel);\n api.asc_registerCallback('asc_onHideForeignCursorLabel', this.onApiHideForeignCursorLabel);\n }\n\n offsetPopoverTop(popover) {\n var app = popover.app,\n $el = popover.$el,\n $targetEl = popover.$targetEl;\n\n const width = $el.width(),\n height = $el.height();\n\n $el.removeClass('popover-on-left popover-on-right popover-on-top popover-on-bottom popover-on-middle').css({\n left: '',\n top: ''\n });\n\n let targetOffsetLeft, targetOffsetTop;\n // var safeAreaTop = parseInt($('html').css('--f7-safe-area-top'), 10);\n let safeAreaLeft = parseInt($('html').css('--f7-safe-area-left'), 10),\n safeAreaRight = parseInt($('html').css('--f7-safe-area-right'), 10);\n // if (Number.isNaN(safeAreaTop)) safeAreaTop = 0;\n if (Number.isNaN(safeAreaLeft)) safeAreaLeft = 0;\n if (Number.isNaN(safeAreaRight)) safeAreaRight = 0;\n\n if ($targetEl && $targetEl.length > 0) {\n let targetOffset = $targetEl.offset();\n targetOffsetLeft = targetOffset.left - app.left;\n targetOffsetTop = targetOffset.top - app.top;\n let targetParentPage = $targetEl.parents('.page');\n\n if (targetParentPage.length > 0) {\n targetOffsetTop -= targetParentPage[0].scrollTop;\n }\n }\n\n let position = 'top';\n\n let top = targetOffsetTop - height - 10;\n top = Math.max(8, Math.min(top, app.height - height - 8)); // Horizontal Position\n\n let hPosition;\n\n // if (targetOffsetLeft < app.width / 2) {\n // hPosition = 'right';\n // left = position === 'middle' ? targetOffsetLeft + targetWidth : targetOffsetLeft;\n // } else {\n // hPosition = 'left';\n // left = position === 'middle' ? targetOffsetLeft - width : targetOffsetLeft + targetWidth - width;\n // }\n\n hPosition = 'middle';\n let left = targetOffsetLeft - width / 2;\n\n left = Math.max(8, Math.min(left, app.width - width - 8 - safeAreaRight), safeAreaLeft);\n $el.addClass(`popover-on-${position} popover-on-${hPosition}`);\n\n $el.css({top: `${top}px`,\n left: `${left}px`});\n }\n\n onApiOpenContextMenu(x, y) {\n if ( !this.state.opened && $$('.dialog.modal-in, .popover.modal-in, .sheet-modal.modal-in, .popup.modal-in, #pe-preview, .add-comment-popup, .actions-modal.modal-in').length < 1) {\n const subNav = document.querySelector('.subnavbar');\n const rect = subNav.getBoundingClientRect();\n\n this.setState({\n items: this.initMenuItems(),\n extraItems: this.initExtraItems()\n });\n\n if ( this.state.items.length > 0 ) {\n const api = Common.EditorApi.get();\n \n this.$targetEl.css({left: `${x}px`, top: y < rect.bottom ? `${rect.bottom}px` : `${y}px`});\n const popover = f7.popover.open(idContextMenuElement, idCntextMenuTargetElement);\n\n if (Device.android)\n this.offsetPopoverTop(popover);\n\n this.setState(state => {\n return {opened: true}\n });\n\n api.asc_enableKeyEvents(true);\n }\n }\n }\n\n onApiHideContextMenu() {\n if ( this.state.opened ) {\n $$(idContextMenuElement).hide();\n f7.popover.close(idContextMenuElement, false);\n\n this.$targetEl.css({left: '-10000px', top: '-10000px'});\n this.setState({opened: false});\n }\n }\n\n onMenuClosed() {\n this.$targetEl.css({left: '-10000px', top: '-10000px'});\n this.setState({opened: false});\n\n // (async () => {\n // await 1 && this.setState(state => {\n // this.$targetEl.css({left: '-10000px', top: '-10000px'});\n // return ({opened: false});\n // });\n // })();\n }\n\n onActionClosed() {\n this.setState({openedMore: false});\n }\n\n async onMenuItemClick(action) {\n await this.onApiHideContextMenu();\n\n if (action === 'showActionSheet') {\n this.setState({openedMore: true});\n }\n }\n\n onApiShowForeignCursorLabel(UserId, X, Y, color) {\n if (!this.isUserVisible(UserId)) return;\n\n /** coauthoring begin **/\n const tipHeight = 20;\n\n let src;\n for (let i=0; i`);\n src.attr('userid', UserId);\n src.css({'background-color': '#'+Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b())});\n src.text(this.getUserName(UserId));\n this.fastCoAuthTips.push(src);\n //src.fadeIn(150);\n src[0].classList.add('active');\n\n $$(\"#editor_sdk\").append(src);\n }\n\n if ( X + src.outerWidth() > $$(window).width() ) { \n src.css({\n top: (Y - tipHeight) + 'px',\n left: X - src.outerWidth() + 'px'});\n } else {\n src.css({\n left: X + 'px',\n top: (Y - tipHeight) + 'px',\n });\n }\n \n /** coauthoring end **/\n }\n\n onApiHideForeignCursorLabel(userId) {\n /** coauthoring begin **/\n for (let i=0; i {src.remove()});\n src[0].classList.remove('active');\n src.remove();\n this.fastCoAuthTips.splice(i, 1);\n break;\n }\n }\n /** coauthoring end **/\n }\n\n componentWillUnmount() {\n Common.Notifications.off('document:ready', this.onDocumentReady);\n\n const api = Common.EditorApi.get();\n if ( api ) {\n api.asc_unregisterCallback('asc_onShowPopMenu', this.onApiOpenContextMenu);\n api.asc_unregisterCallback('asc_onHidePopMenu', this.onApiHideContextMenu);\n api.asc_unregisterCallback('asc_onShowForeignCursorLabel', this.onApiShowForeignCursorLabel);\n api.asc_unregisterCallback('asc_onHideForeignCursorLabel', this.onApiHideForeignCursorLabel);\n }\n }\n\n componentDidMount() {\n if ( !Common.EditorApi ) {\n Common.Notifications.on({\n 'document:ready': this.onDocumentReady\n });\n } else {\n this.onDocumentReady();\n }\n }\n\n initMenuItems() {\n return [];\n }\n\n initExtraItems () {\n return [];\n }\n\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport default ContextMenuController;","\nconst EditorUIController = () => {\n return null\n};\n\nEditorUIController.isSupportEditFeature = () => {\n return false\n};\n\nEditorUIController.getToolbarOptions = () => {\n return null\n};\n\nEditorUIController.initFonts = () => null;\nEditorUIController.initEditorStyles = () => null;\nEditorUIController.initFocusObjects = () => null;\nEditorUIController.initTableTemplates = () => null;\nEditorUIController.ContextMenu = {\n mapMenuItems: () => [],\n handleMenuItemClick: () => true,\n};\n\nexport default EditorUIController;\n","import React, { useContext } from 'react';\nimport { f7 } from 'framework7-react';\nimport { inject, observer } from \"mobx-react\";\nimport { withTranslation} from 'react-i18next';\nimport { LocalStorage } from '../../../../common/mobile/utils/LocalStorage.mjs';\nimport ContextMenuController from '../../../../common/mobile/lib/controller/ContextMenu';\nimport { idContextMenuElement } from '../../../../common/mobile/lib/view/ContextMenu';\nimport EditorUIController from '../lib/patch';\n\n@inject(stores => ({\n isEdit: stores.storeAppOptions.isEdit,\n canComments: stores.storeAppOptions.canComments,\n canViewComments: stores.storeAppOptions.canViewComments,\n canEditComments: stores.storeAppOptions.canEditComments,\n canCoAuthoring: stores.storeAppOptions.canCoAuthoring,\n canReview: stores.storeAppOptions.canReview,\n canFillForms: stores.storeAppOptions.canFillForms,\n users: stores.users,\n isDisconnected: stores.users.isDisconnected,\n displayMode: stores.storeReview.displayMode,\n dataDoc: stores.storeDocumentInfo.dataDoc,\n objects: stores.storeFocusObjects.settings,\n isViewer: stores.storeAppOptions.isViewer,\n isProtected: stores.storeAppOptions.isProtected,\n typeProtection: stores.storeAppOptions.typeProtection,\n isForm: stores.storeAppOptions.isForm\n}))\nclass ContextMenu extends ContextMenuController {\n constructor(props) {\n super(props);\n // console.log('context menu controller created');\n this.onApiShowComment = this.onApiShowComment.bind(this);\n this.onApiHideComment = this.onApiHideComment.bind(this);\n this.onApiShowChange = this.onApiShowChange.bind(this);\n this.getUserName = this.getUserName.bind(this);\n this.isUserVisible = this.isUserVisible.bind(this);\n this.ShowModal = this.ShowModal.bind(this);\n this.checkShapeSelection = this.checkShapeSelection.bind(this);\n }\n\n static closeContextMenu() {\n f7.popover.close(idContextMenuElement, false);\n }\n\n getUserName(id) {\n const user = this.props.users.searchUserByCurrentId(id);\n return AscCommon.UserInfoParser.getParsedName(user.asc_getUserName());\n }\n\n isUserVisible(id) {\n const user = this.props.users.searchUserByCurrentId(id);\n return user ? (user.asc_getIdOriginal()===this.props.users.currentUser.asc_getIdOriginal() || AscCommon.UserInfoParser.isUserVisible(user.asc_getUserName())) : true;\n }\n\n componentWillUnmount() {\n super.componentWillUnmount();\n\n const api = Common.EditorApi.get();\n api.asc_unregisterCallback('asc_onShowComment', this.onApiShowComment);\n api.asc_unregisterCallback('asc_onHideComment', this.onApiHideComment);\n api.asc_unregisterCallback('asc_onShowRevisionsChange', this.onApiShowChange);\n api.asc_unregisterCallback('asc_onShowPopMenu', this.checkShapeSelection);\n Common.Notifications.off('showSplitModal', this.ShowModal);\n }\n\n ShowModal() {\n this.showSplitModal()\n }\n \n onApiShowComment(comments) {\n this.isComments = comments && comments.length > 0;\n }\n\n onApiHideComment() {\n this.isComments = false;\n }\n\n onApiShowChange(sdkchange, isShow) {\n this.inRevisionChange = isShow && sdkchange && sdkchange.length>0;\n }\n\n // onMenuClosed() {\n // super.onMenuClosed();\n // }\n\n onMenuItemClick(action) {\n super.onMenuItemClick(action);\n\n if ( EditorUIController.ContextMenu && EditorUIController.ContextMenu.handleMenuItemClick(this, action) )\n return;\n\n const api = Common.EditorApi.get();\n switch (action) {\n case 'cut':\n if ( !LocalStorage.getBool(\"de-hide-copy-cut-paste-warning\") )\n this.showCopyCutPasteModal();\n break;\n case 'copy':\n if (!api.Copy() && !LocalStorage.getBool(\"de-hide-copy-cut-paste-warning\") )\n this.showCopyCutPasteModal();\n break;\n case 'paste':\n if ( !LocalStorage.getBool(\"de-hide-copy-cut-paste-warning\") )\n this.showCopyCutPasteModal();\n break;\n case 'viewcomment':\n Common.Notifications.trigger('viewcomment');\n break;\n case 'openlink':\n const stack = api.getSelectedElements();\n let value;\n\n stack.forEach((item) => {\n if (item.get_ObjectType() == Asc.c_oAscTypeSelectElement.Hyperlink) {\n value = item.get_ObjectValue().get_Value();\n }\n });\n\n value && this.openLink(value);\n break;\n case 'review':\n setTimeout(() => {\n this.props.openOptions('coauth', 'cm-review');\n }, 400);\n break;\n case 'reviewchange':\n setTimeout(() => {\n this.props.openOptions('coauth', 'cm-review-change');\n }, 400);\n break;\n case 'refreshEntireTable':\n this.onTableContentsUpdate('all');\n break;\n case 'refreshPageNumbers':\n this.onTableContentsUpdate('pages');\n break;\n }\n }\n\n checkShapeSelection() {\n const objects = this.props.objects;\n const contextMenuElem = document.querySelector('#idx-context-menu-popover');\n \n if(objects?.indexOf('shape') > -1) {\n contextMenuElem.style.top = `${+(contextMenuElem.style.top.replace(/px$/, '')) - 40}px`;\n }\n }\n\n onTableContentsUpdate(type, currentTOC) {\n const api = Common.EditorApi.get();\n let props = api.asc_GetTableOfContentsPr(currentTOC);\n\n if (currentTOC && props)\n currentTOC = props.get_InternalClass();\n api.asc_UpdateTableOfContents(type == 'pages', currentTOC);\n };\n\n showCopyCutPasteModal() {\n const { t } = this.props;\n const _t = t(\"ContextMenu\", { returnObjects: true });\n\n f7.dialog.create({\n title: _t.textCopyCutPasteActions,\n text: _t.errorCopyCutPaste,\n content: `
          \n \n ${_t.textDoNotShowAgain}\n
          `,\n buttons: [{\n text: 'OK',\n onClick: () => {\n const dontShow = $$('input[name=\"checkbox-show\"]').prop('checked');\n if (dontShow) LocalStorage.setItem(\"de-hide-copy-cut-paste-warning\", 1);\n }\n }]\n }).open();\n }\n\n showSplitModal() {\n const { t } = this.props;\n const _t = t(\"ContextMenu\", { returnObjects: true });\n let picker;\n\n const dialog = f7.dialog.create({\n title: _t.menuSplit,\n text: '',\n content: `
          \n
          \n
          ${_t.textColumns}
          \n
          ${_t.textRows}
          \n
          \n
          \n
          `,\n buttons: [\n {\n text: _t.menuCancel\n },\n {\n text: 'OK',\n bold: true,\n onClick: function () {\n const size = picker.value;\n Common.EditorApi.get().SplitCell(parseInt(size[0]), parseInt(size[1]));\n }\n }\n ],\n on: {\n open: () => {\n picker = f7.picker.create({\n containerEl: document.getElementById('picker-split-size'),\n cols: [\n {\n textAlign: 'center',\n width: '100%',\n values: [1,2,3,4,5,6,7,8,9,10]\n },\n {\n textAlign: 'center',\n width: '100%',\n values: [1,2,3,4,5,6,7,8,9,10]\n }\n ],\n toolbar: false,\n rotateEffect: true,\n value: [3, 3]\n });\n }\n }\n }).open();\n }\n\n openLink(url) {\n if (url) {\n const type = Common.EditorApi.get().asc_getUrlType(url);\n if (type===AscCommon.c_oAscUrlType.Http || type===AscCommon.c_oAscUrlType.Email) {\n const newDocumentPage = window.open(url, '_blank');\n if (newDocumentPage) {\n newDocumentPage.focus();\n }\n } else {\n const { t } = this.props;\n const _t = t(\"ContextMenu\", { returnObjects: true });\n\n f7.dialog.create({\n title: t('Settings', {returnObjects: true}).notcriticalErrorTitle,\n text : _t.txtWarnUrl,\n buttons: [{\n text: _t.textOk,\n bold: true,\n onClick: () => {\n const newDocumentPage = window.open(url, '_blank');\n if (newDocumentPage) {\n newDocumentPage.focus();\n }\n }\n },\n { text: _t.menuCancel }]\n }).open();\n }\n }\n }\n\n onDocumentReady() {\n super.onDocumentReady();\n\n const api = Common.EditorApi.get();\n api.asc_registerCallback('asc_onShowComment', this.onApiShowComment);\n api.asc_registerCallback('asc_onHideComment', this.onApiHideComment);\n api.asc_registerCallback('asc_onShowRevisionsChange', this.onApiShowChange);\n api.asc_registerCallback('asc_onShowPopMenu', this.checkShapeSelection);\n Common.Notifications.on('showSplitModal', this.ShowModal);\n }\n\n initMenuItems() {\n if ( !Common.EditorApi ) return [];\n\n const { isEdit, canFillForms, isDisconnected, isViewer, canEditComments, isProtected, typeProtection, isForm } = this.props;\n\n if (isEdit && EditorUIController.ContextMenu) {\n return EditorUIController.ContextMenu.mapMenuItems(this);\n } else {\n const { t } = this.props;\n const _t = t(\"ContextMenu\", {returnObjects: true});\n const { canViewComments, canCoAuthoring, canComments, dataDoc } = this.props;\n\n const api = Common.EditorApi.get();\n const inToc = api.asc_GetTableOfContentsPr(true);\n const stack = api.getSelectedElements();\n const canCopy = api.can_CopyCut();\n const docExt = dataDoc ? dataDoc.fileType : '';\n const isAllowedEditing = !isProtected || typeProtection === Asc.c_oAscEDocProtect.TrackedChanges;\n const isAllowedCommenting = typeProtection === Asc.c_oAscEDocProtect.Comments; \n\n let isText = false,\n isObject = false,\n isLink = false,\n locked = false;\n\n stack.forEach(item => {\n const objectType = item.get_ObjectType(),\n objectValue = item.get_ObjectValue();\n if ( objectType == Asc.c_oAscTypeSelectElement.Header ) {\n locked = objectValue.get_Locked();\n } else\n if ( objectType == Asc.c_oAscTypeSelectElement.Paragraph ) {\n locked = objectValue.get_Locked();\n isText = true;\n } else\n if ( objectType == Asc.c_oAscTypeSelectElement.Image || objectType == Asc.c_oAscTypeSelectElement.Table) {\n locked = objectValue.get_Locked();\n isObject = true;\n } else if ( objectType == Asc.c_oAscTypeSelectElement.Hyperlink ) {\n isLink = true;\n }\n });\n\n let itemsIcon = [],\n itemsText = [];\n\n if (canCopy) {\n itemsIcon.push({\n event: 'copy',\n icon: 'icon-copy'\n });\n }\n\n if (!isDisconnected) {\n if (canFillForms && canCopy && !locked && (!isViewer || isForm) && isAllowedEditing) {\n itemsIcon.push({\n event: 'cut',\n icon: 'icon-cut'\n });\n }\n\n if (canFillForms && canCopy && !locked && (!isViewer || isForm) && isAllowedEditing) {\n itemsIcon.push({\n event: 'paste',\n icon: 'icon-paste'\n });\n }\n\n if (canViewComments && this.isComments) {\n itemsText.push({\n caption: _t.menuViewComment,\n event: 'viewcomment'\n });\n }\n\n if (api.can_AddQuotedComment() !== false && canCoAuthoring && canComments && !locked && !(!isText && isObject) && (!isViewer || canEditComments) && (isAllowedEditing || isAllowedCommenting)) {\n itemsText.push({\n caption: _t.menuAddComment,\n event: 'addcomment'\n });\n }\n }\n\n if (isLink) {\n itemsText.push({\n caption: _t.menuOpenLink,\n event: 'openlink'\n });\n\n if(isAllowedEditing && !isViewer) {\n itemsText.push({\n caption: t('ContextMenu.menuEditLink'),\n event: 'editlink'\n });\n }\n }\n\n if(inToc && isEdit && !isViewer && isAllowedEditing) {\n itemsText.push({\n caption: t('ContextMenu.textRefreshEntireTable'),\n event: 'refreshEntireTable'\n });\n itemsText.push({\n caption: t('ContextMenu.textRefreshPageNumbersOnly'),\n event: 'refreshPageNumbers'\n });\n }\n\n return itemsIcon.concat(itemsText);\n }\n }\n\n initExtraItems () {\n return (this.extraItems && this.extraItems.length > 0 ? this.extraItems : []);\n }\n}\n\nconst _ContextMenu = withTranslation()(ContextMenu);\n_ContextMenu.closeContextMenu = ContextMenu.closeContextMenu;\nexport { _ContextMenu as default };","import React, { Fragment } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { NavLeft, NavRight, Link } from 'framework7-react';\nimport { Device } from '../../../../common/mobile/utils/device';\nimport EditorUIController from '../lib/patch';\n\nconst ToolbarView = props => {\n const { t } = useTranslation();\n const isVersionHistoryMode = props.isVersionHistoryMode;\n const isDisconnected = props.isDisconnected;\n const docExt = props.docExt;\n const isAvailableExt = docExt && docExt !== 'djvu' && docExt !== 'pdf' && docExt !== 'xps';\n const isForm = props.isForm;\n const canFillForms = props.canFillForms;\n const isEditableForms = isForm && canFillForms;\n const disableEditBtn = props.isObjectLocked || props.stateDisplayMode || props.disabledEditControls || isDisconnected;\n const isViewer = props.isViewer;\n const isMobileView = props.isMobileView;\n const docTitle = props.docTitle;\n const isOpenModal = props.isOpenModal;\n \n return (\n \n \n {(!isViewer && !isVersionHistoryMode) && \n props.turnOnViewerMode()}>\n }\n {isVersionHistoryMode ? \n {\n e.preventDefault();\n props.closeHistory();\n }}>\n {t(\"Toolbar.textCloseHistory\")}\n \n : null}\n {(props.isShowBack && isViewer && !isVersionHistoryMode) && \n Common.Notifications.trigger('goback')}>\n }\n {((Device.ios && props.isEdit && !isViewer && !isVersionHistoryMode) || \n (Device.ios && isEditableForms)) && \n EditorUIController.getUndoRedo && EditorUIController.getUndoRedo({\n disabledUndo: !props.isCanUndo || isDisconnected,\n disabledRedo: !props.isCanRedo || isDisconnected,\n onUndoClick: props.onUndo,\n onRedoClick: props.onRedo\n })\n }\n \n {((!Device.phone || (isViewer && !isEditableForms)) && !isVersionHistoryMode) && \n
          props.changeTitleHandler()} style={{width: '71%'}}>\n {docTitle}\n
          \n }\n \n {((Device.android && props.isEdit && !isViewer && !isVersionHistoryMode) || \n (Device.android && isEditableForms)) && \n EditorUIController.getUndoRedo && EditorUIController.getUndoRedo({\n disabledUndo: !props.isCanUndo,\n disabledRedo: !props.isCanRedo,\n onUndoClick: props.onUndo,\n onRedoClick: props.onRedo\n })\n }\n {!isEditableForms ? [\n ((isViewer || !Device.phone) && isAvailableExt && !props.disabledControls && !isVersionHistoryMode) && \n {\n props.changeMobileView();\n props.openOptions('snackbar');\n }}>,\n (props.showEditDocument && !isViewer) &&\n ,\n (props.isEdit && isAvailableExt && !isViewer && EditorUIController.getToolbarOptions && \n \n {EditorUIController.getToolbarOptions({\n disabled: disableEditBtn || props.disabledControls || isOpenModal,\n onEditClick: e => props.openOptions('edit'),\n onAddClick: e => props.openOptions('add')\n })}\n \n ),\n (Device.phone ? null : \n \n ),\n (window.matchMedia(\"(min-width: 360px)\").matches && !isForm && !isVersionHistoryMode ? \n props.openOptions('coauth')}> \n : null),\n (isVersionHistoryMode ? \n props.openOptions('history')}> \n : null)\n ] : [\n props.movePrevField()}>,\n props.moveNextField()}>,\n props.saveForm()}>,\n ]}\n props.openOptions('settings')}>\n \n
          \n )\n};\n\nexport default ToolbarView;","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { Device } from '../../../../common/mobile/utils/device';\nimport { inject, observer } from 'mobx-react';\nimport { f7 } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport ToolbarView from \"../view/Toolbar\";\nimport {LocalStorage} from \"../../../../common/mobile/utils/LocalStorage.mjs\";\n\nconst ToolbarController = inject('storeAppOptions', 'users', 'storeReview', 'storeFocusObjects', 'storeToolbarSettings','storeDocumentInfo', 'storeVersionHistory')(observer(props => {\n const {t} = useTranslation();\n const _t = t(\"Toolbar\", { returnObjects: true });\n const appOptions = props.storeAppOptions;\n const isEdit = appOptions.isEdit;\n const isForm = appOptions.isForm;\n const canFillForms = appOptions.canFillForms;\n const canSubmitForms = appOptions.canSubmitForms;\n const storeVersionHistory = props.storeVersionHistory;\n const isVersionHistoryMode = storeVersionHistory.isVersionHistoryMode;\n const isViewer = appOptions.isViewer;\n const isMobileView = appOptions.isMobileView;\n const isDisconnected = props.users.isDisconnected;\n const displayMode = props.storeReview.displayMode;\n const stateDisplayMode = displayMode == \"final\" || displayMode == \"original\" ? true : false;\n const displayCollaboration = props.users.hasEditUsers || appOptions.canViewComments || appOptions.canReview || appOptions.canViewReview;\n const readerMode = appOptions.readerMode;\n const objectLocked = props.storeFocusObjects.objectLocked;\n const storeToolbarSettings = props.storeToolbarSettings;\n const isCanUndo = storeToolbarSettings.isCanUndo;\n const isCanRedo = storeToolbarSettings.isCanRedo;\n const disabledControls = storeToolbarSettings.disabledControls;\n const disabledEditControls = storeToolbarSettings.disabledEditControls;\n const disabledSettings = storeToolbarSettings.disabledSettings;\n const showEditDocument = !isEdit && appOptions.canEdit && appOptions.canRequestEditRights;\n const storeDocumentInfo = props.storeDocumentInfo;\n const docExt = storeDocumentInfo.dataDoc ? storeDocumentInfo.dataDoc.fileType : '';\n const docTitle = storeDocumentInfo.dataDoc ? storeDocumentInfo.dataDoc.title : '';\n const scrollOffsetRef = useRef(0);\n\n const getNavbarTotalHeight = useCallback(() => {\n \tconst navbarBg = document.querySelector('.navbar-bg');\n \tconst subnavbar = document.querySelector('.subnavbar');\n \n \tif(navbarBg && subnavbar) {\n \t\treturn navbarBg.clientHeight + subnavbar.clientHeight;\n \t}\n\n \treturn 0;\n }, []);\n\n useEffect(() => {\n Common.Gateway.on('init', loadConfig);\n Common.Notifications.on('toolbar:activatecontrols', activateControls);\n Common.Notifications.on('toolbar:deactivateeditcontrols', deactivateEditControls);\n Common.Notifications.on('goback', goBack);\n Common.Notifications.on('close', onRequestClose);\n\n if (isDisconnected) {\n f7.popover.close();\n f7.sheet.close();\n f7.popup.close();\n }\n\n return () => {\n Common.Notifications.off('toolbar:activatecontrols', activateControls);\n Common.Notifications.off('toolbar:deactivateeditcontrols', deactivateEditControls);\n Common.Notifications.off('goback', goBack);\n Common.Notifications.off('close', onRequestClose);\n }\n }, []);\n\n useEffect(() => {\n const api = Common.EditorApi.get();\n const navbarHeight = getNavbarTotalHeight();\n\n const onEngineCreated = api => {\n if(api && isViewer && navbarHeight) {\n api.SetMobileTopOffset(navbarHeight, navbarHeight);\n api.asc_registerCallback('onMobileScrollDelta', scrollHandler);\n }\n };\n\n if (!api) {\n Common.Notifications.on('engineCreated', onEngineCreated);\n } else {\n onEngineCreated(api);\n }\n\n return () => {\n const api = Common.EditorApi.get();\n\n if (api && isViewer && navbarHeight) {\n api.SetMobileTopOffset(navbarHeight, navbarHeight);\n api.asc_unregisterCallback('onMobileScrollDelta', scrollHandler);\n }\n\n Common.Notifications.off('engineCreated', onEngineCreated);\n }\n }, [isViewer]);\n\n // Scroll handler\n\n const scrollHandler = offset => {\n const api = Common.EditorApi.get();\n const navbarHeight = getNavbarTotalHeight();\n const isSearchbarEnabled = document.querySelector('.subnavbar .searchbar')?.classList.contains('searchbar-enabled');\n\n if(!isSearchbarEnabled && navbarHeight) {\n if(offset > scrollOffsetRef.current) {\n props.closeOptions('fab');\n f7.navbar.hide('.main-navbar');\n api.SetMobileTopOffset(undefined, 0);\n } else if(offset <= scrollOffsetRef.current) {\n props.openOptions('fab');\n f7.navbar.show('.main-navbar');\n api.SetMobileTopOffset(undefined, navbarHeight);\n }\n\n scrollOffsetRef.current = offset;\n }\n }\n\n // Back button\n const [isShowBack, setShowBack] = useState(appOptions.canBackToFolder);\n const loadConfig = (data) => {\n if (data && data.config && data.config?.canBackToFolder !== false && data.config?.customization && data.config?.customization.goback) {\n const canback = data.config.customization.close === undefined ?\n data.config.customization.goback.url || data.config.customization.goback.requestClose && data.config.canRequestClose :\n data.config.customization.goback.url && !data.config.customization.goback.requestClose;\n canback && setShowBack(true);\n }\n };\n\n const onRequestClose = () => {\n const api = Common.EditorApi.get();\n\n if (api.isDocumentModified()) {\n api.asc_stopSaving();\n\n f7.dialog.create({\n title : _t.dlgLeaveTitleText,\n text : _t.dlgLeaveMsgText,\n verticalButtons: true,\n buttons : [\n {\n text: _t.leaveButtonText,\n onClick: () => {\n api.asc_undoAllChanges();\n api.asc_continueSaving();\n Common.Gateway.requestClose();\n }\n },\n {\n text: _t.stayButtonText,\n bold: true,\n onClick: () => {\n api.asc_continueSaving();\n }\n }\n ]\n }).open();\n } else {\n Common.Gateway.requestClose();\n }\n };\n\n const goBack = (current) => {\n if (appOptions.customization.goback.requestClose && appOptions.canRequestClose) {\n onRequestClose();\n } else {\n const href = appOptions.customization.goback.url;\n\n if (!current && appOptions.customization.goback.blank !== false) {\n window.open(href, \"_blank\");\n } else {\n parent.location.href = href;\n }\n }\n }\n\n const onUndo = () => {\n const api = Common.EditorApi.get();\n if (api) {\n api.Undo();\n }\n };\n\n const onRedo = () => {\n const api = Common.EditorApi.get();\n if (api) {\n api.Redo();\n }\n }\n\n const deactivateEditControls = (enableDownload) => {\n storeToolbarSettings.setDisabledEditControls(true);\n if (enableDownload) {\n //DE.getController('Settings').setMode({isDisconnected: true, enableDownload: enableDownload});\n } else {\n storeToolbarSettings.setDisabledSettings(true);\n }\n };\n\n const activateControls = () => {\n storeToolbarSettings.setDisabledControls(false);\n };\n\n const onEditDocument = () => {\n Common.Gateway.requestEditRights();\n };\n\n const turnOnViewerMode = () => {\n const api = Common.EditorApi.get();\n\n f7.popover.close('.document-menu.modal-in', false);\n\n appOptions.changeViewerMode(true);\n api.asc_addRestriction(Asc.c_oAscRestrictionType.View);\n }\n\n const changeMobileView = () => {\n const api = Common.EditorApi.get();\n const isMobileView = appOptions.isMobileView;\n\n LocalStorage.setBool('mobile-view', !isMobileView);\n appOptions.changeMobileView();\n api.ChangeReaderMode();\n }\n\n const changeTitleHandler = () => {\n if(!appOptions.canRename) return;\n\n const api = Common.EditorApi.get();\n api.asc_enableKeyEvents(true);\n\n f7.dialog.create({\n title: t('Toolbar.textRenameFile'),\n text : t('Toolbar.textEnterNewFileName'),\n content: Device.ios ?\n `
          \n \n
          ` : \n `
          \n
          \n
            \n
          • \n
            \n
            \n
            \n \n
            \n
            \n
            \n
          • \n
          \n
          \n
          `,\n cssClass: 'dlg-adv-options',\n buttons: [\n {\n text: t('Edit.textCancel')\n },\n {\n text: t('Edit.textOk'),\n cssClass: 'btn-change-title',\n bold: true,\n close: false,\n onClick: () => {\n const titleFieldValue = document.querySelector('#modal-title').value;\n\n if(titleFieldValue.trim().length) {\n changeTitle(titleFieldValue);\n f7.dialog.close();\n }\n }\n }\n ],\n on: {\n opened: () => {\n const nameDoc = docTitle.split('.')[0];\n const titleField = document.querySelector('#modal-title');\n const btnChangeTitle = document.querySelector('.btn-change-title');\n\n titleField.value = nameDoc;\n titleField.focus();\n titleField.select();\n\n titleField.addEventListener('input', () => {\n if(titleField.value.trim().length) {\n btnChangeTitle.classList.remove('disabled');\n } else {\n btnChangeTitle.classList.add('disabled');\n }\n });\n }\n }\n }).open();\n }\n\n const cutDocName = name => {\n if(name.length <= docExt.length) return name;\n const idx = name.length - docExt.length;\n\n return name.substring(idx) == docExt ? name.substring(0, idx) : name;\n };\n\n const changeTitle = (name) => {\n const api = Common.EditorApi.get();\n const docInfo = storeDocumentInfo.docInfo;\n const currentTitle = `${name}.${docExt}`;\n let formatName = name.trim();\n\n if(formatName.length > 0 && cutDocName(currentTitle) !== formatName) {\n if(/[\\t*\\+:\\\"<>?|\\\\\\\\/]/gim.test(formatName)) {\n f7.dialog.create({\n title: t('Edit.notcriticalErrorTitle'),\n text: t('Edit.textInvalidName') + '*+:\\\"<>?|\\/',\n buttons: [\n {\n text: t('Edit.textOk'),\n close: true\n }\n ]\n }).open();\n } else {\n const wopi = appOptions.wopi;\n formatName = cutDocName(formatName);\n\n if(wopi) {\n api.asc_wopi_renameFile(formatName);\n } else {\n Common.Gateway.requestRename(formatName);\n }\n\n const newTitle = `${formatName}.${docExt}`;\n\n storeDocumentInfo.changeTitle(newTitle);\n docInfo.put_Title(newTitle);\n storeDocumentInfo.setDocInfo(docInfo);\n }\n }\n }\n\n const closeHistory = () => {\n Common.Gateway.requestHistoryClose();\n }\n\n const moveNextField = () => {\n const api = Common.EditorApi.get();\n api.asc_MoveToFillingForm(true);\n }\n\n const movePrevField = () => {\n const api = Common.EditorApi.get();\n api.asc_MoveToFillingForm(false);\n }\n\n const saveForm = () => {\n const isSubmitForm = canFillForms && canSubmitForms;\n const isSavePdf = appOptions.canDownload && canFillForms && !canSubmitForms;\n\n if(isSubmitForm) submitForm();\n if(isSavePdf) saveAsPdf();\n }\n\n const saveAsPdf = () => {\n const api = Common.EditorApi.get();\n\n if (appOptions.isOffline) {\n api.asc_DownloadAs(new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.PDF));\n } else {\n const isFromBtnDownload = appOptions.canRequestSaveAs || !!appOptions.saveAsUrl;\n let options = new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.PDF, isFromBtnDownload);\n options.asc_setIsSaveAs(isFromBtnDownload);\n api.asc_DownloadAs(options);\n }\n }\n\n const submitForm = () => {\n const api = Common.EditorApi.get();\n api.asc_SendForm();\n }\n\n return (\n \n )\n}));\n\nexport default ToolbarController;","import React, { useState, useEffect } from 'react';\nimport { f7, ListItem, List, Icon } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport { LocalStorage } from '../../utils/LocalStorage.mjs';\n\nconst ThemeColors = ({ themeColors, onColorClick, curColor, isTypeColors, isTypeCustomColors }) => {\n return (\n
          \n {themeColors?.length && themeColors.map((row, rowIndex) => {\n return(\n
          \n {row.map((effect, index) => {\n return(\n {onColorClick(effect.color, effect.effectId, effect.effectValue)}}\n >\n )\n })}\n
          \n )\n })}\n
          \n )\n};\n\nconst StandartColors = ({ options, standartColors, onColorClick, curColor }) => {\n return (\n
          \n {standartColors?.length && standartColors.map((color, index) => {\n return (\n index === 0 && options.transparent ?\n {onColorClick('transparent')}}\n > :\n {onColorClick(color)}}\n >\n )\n })}\n
          \n )\n};\n\nconst CustomColors = ({ options, customColors, isTypeColors, onColorClick, curColor }) => {\n const colors = customColors.length > 0 ? customColors : [];\n const emptyItems = [];\n\n if (colors.length < options.customcolors) {\n for (let i = colors.length; i < options.customcolors; i++) {\n emptyItems.push( {onColorClick('empty')}}\n >)\n }\n }\n\n let indexCurColor = colors.indexOf(curColor);\n \n return (\n
          \n {colors && colors.length > 0 ? colors.map((color, index) => {\n return (\n {onColorClick(color)}}\n >\n )\n }) : null}\n {emptyItems.length > 0 && emptyItems}\n
          \n )\n};\n\nconst ThemeColorPalette = props => {\n const {t} = useTranslation();\n const _t = t('Common.ThemeColorPalette', {returnObjects: true});\n const options = {\n customcolors: props.customcolors || 10,\n standardcolors: props.standardcolors || 10,\n themecolors: props.themecolors || 10,\n effects: props.effects || 5,\n //allowReselect: props.allowReselect !== false,\n transparent: props.transparent || false,\n value: props.value || '000000',\n cls: props.cls || ''\n };\n const curColor = props.curColor;\n const themeColors = [];\n const effectColors = Common.Utils.ThemeColor.getEffectColors();\n let row = -1;\n\n if(effectColors?.length) {\n effectColors.forEach((effect, index) => {\n if (0 == index % options.themecolors) {\n themeColors.push([]);\n row++;\n }\n themeColors[row].push(effect);\n });\n }\n\n const standartColors = Common.Utils.ThemeColor.getStandartColors();\n let isTypeColors = standartColors?.length && standartColors.some( value => value === curColor );\n // custom color\n let customColors = props.customColors;\n\n if (customColors.length < 1) {\n customColors = LocalStorage.getItem('mobile-custom-colors');\n customColors = customColors ? customColors.toLowerCase().split(',') : [];\n }\n\n let isTypeCustomColors = customColors.some( value => value === curColor );\n\n return (\n
          \n \n \n
          { _t.textThemeColors }
          \n \n
          \n \n
          { _t.textStandartColors }
          \n \n
          \n \n
          { _t.textCustomColors }
          \n \n
          \n
          \n
          \n )\n};\n\nconst CustomColorPicker = props => {\n //Function to convert rgb color to hex format\n const hexDigits = new Array(\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"a\",\"b\",\"c\",\"d\",\"e\",\"f\");\n const hex = x => {\n return isNaN(x) ? \"00\" : hexDigits[(x - x % 16) / 16] + hexDigits[x % 16];\n };\n const rgb2hex = rgb => {\n rgb = rgb.match(/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/);\n return hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);\n };\n\n let currentColor = props.currentColor;\n\n if (props.autoColor) {\n currentColor = rgb2hex(props.autoColor);\n }\n\n if (currentColor === 'transparent' || !currentColor) {\n currentColor = 'ffffff';\n }\n\n const countDynamicColors = props.countdynamiccolors || 10;\n const [stateColor, setColor] = useState(`#${currentColor}`);\n\n useEffect(() => {\n if (document.getElementsByClassName('color-picker-wheel').length < 1) {\n const colorPicker = f7.colorPicker.create({\n containerEl: document.getElementsByClassName('color-picker-container')[0],\n value: {\n hex: `#${currentColor}`\n },\n on: {\n change: function (value) {\n setColor(value.getValue().hex);\n }\n }\n });\n }\n });\n\n const addNewColor = (color) => {\n let colors = LocalStorage.getItem('mobile-custom-colors');\n colors = colors ? colors.split(',') : [];\n const newColor = color.slice(1);\n if (colors.push(newColor) > countDynamicColors) colors.shift(); // 10 - dynamiccolors\n LocalStorage.setItem('mobile-custom-colors', colors.join().toLowerCase());\n props.onAddNewColor && props.onAddNewColor(colors, newColor);\n };\n\n return (\n
          \n
          \n \n
          \n )\n};\n\nexport { ThemeColorPalette, CustomColorPicker };","import React from 'react';\nimport { f7, ListItem, List, Icon, Page } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from '../../utils/device';\n\nconst HighlightColorPalette = ({changeColor, curColor}) => {\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const highlightColors = [\n ['ffff00', '00ff00', '00ffff', 'ff00ff', '0000ff', 'ff0000', '00008b', '008b8b'],\n ['006400', '800080', '8b0000', '808000', 'ffffff', 'd3d3d3', 'a9a9a9', '000000']\n ];\n\n return (\n \n \n
          \n {highlightColors.map((row, index) => (\n
          \n {row.map((effect, index) => {\n return (\n {changeColor(effect)}}>\n );\n })}\n
          \n ))}\n
          \n
          \n changeColor('transparent')} title={t('Common.HighlightColorPalette.textNoFill')}>\n {!isAndroid && }\n \n
          \n )\n};\n\nexport default HighlightColorPalette;","import React, {Fragment, useEffect, useState } from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport { f7, View, List, ListItem, Icon, Button, Page, Navbar, NavRight, Segmented, BlockTitle, Link } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport { ThemeColorPalette, CustomColorPicker } from '../../../../../common/mobile/lib/component/ThemeColorPalette.jsx';\nimport HighlightColorPalette from '../../../../../common/mobile/lib/component/HighlightColorPalette.jsx';\nimport { LocalStorage } from '../../../../../common/mobile/utils/LocalStorage.mjs';\n\nconst PageFonts = props => {\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const storeTextSettings = props.storeTextSettings;\n const size = storeTextSettings.fontSize;\n const displaySize = typeof size === 'undefined' ? t('Edit.textAuto') : size + ' ' + t('Edit.textPt');\n const curFontName = storeTextSettings.fontName;\n const fonts = storeTextSettings.fontsArray;\n const iconWidth = storeTextSettings.iconWidth;\n const iconHeight = storeTextSettings.iconHeight;\n const thumbs = storeTextSettings.thumbs;\n const thumbIdx = storeTextSettings.thumbIdx;\n const thumbCanvas = storeTextSettings.thumbCanvas;\n const thumbContext = storeTextSettings.thumbContext;\n const spriteCols = storeTextSettings.spriteCols;\n const spriteThumbs = storeTextSettings.spriteThumbs;\n const arrayRecentFonts = storeTextSettings.arrayRecentFonts;\n\n const addRecentStorage = () => {\n setRecent(getImageUri(arrayRecentFonts));\n LocalStorage.setItem('dde-settings-recent-fonts', JSON.stringify(arrayRecentFonts));\n };\n\n const getImageUri = fonts => {\n return fonts.map(font => {\n let index = Math.floor(font.imgidx/spriteCols);\n return spriteThumbs.getImage(index, thumbCanvas, thumbContext).toDataURL();\n });\n };\n\n const [stateRecent, setRecent] = useState(() => getImageUri(arrayRecentFonts));\n const [vlFonts, setVlFonts] = useState({\n vlData: {\n items: [],\n }\n });\n\n const renderExternal = (vl, vlData) => {\n setVlFonts((prevState) => {\n let fonts = [...prevState.vlData.items],\n drawFonts = [...vlData.items];\n\n let images = [],\n drawImages = getImageUri(drawFonts);\n for (let i = 0; i < drawFonts.length; i++) {\n fonts[i + vlData.fromIndex] = drawFonts[i];\n images[i + vlData.fromIndex] = drawImages[i];\n }\n return {vlData: {\n items: fonts,\n images,\n }}\n });\n };\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n {!isAndroid &&
          {displaySize}
          }\n
          \n \n \n {isAndroid && }\n \n \n
          \n
          \n
          \n {t('Edit.textFonts')}\n {!!arrayRecentFonts.length &&\n \n {arrayRecentFonts.map((item, index) => (\n {\n storeTextSettings.changeFontFamily(item.name); \n props.changeFontFamily(item.name);\n }}> \n \n \n ))}\n \n }\n \n
            \n {vlFonts.vlData.items.map((item, index) => {\n const font = item || fonts[index];\n const fontName = font.name;\n return ( {\n storeTextSettings.changeFontFamily(fontName);\n props.changeFontFamily(fontName);\n storeTextSettings.addFontToRecent(font);\n addRecentStorage();\n }}>\n {vlFonts.vlData.images[index] && }\n \n )\n })}\n
          \n
          \n
          \n )\n};\n\nconst PageAdditionalFormatting = props => {\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const storeTextSettings = props.storeTextSettings;\n const storeFocusObjects = props.storeFocusObjects;\n const paragraph = storeFocusObjects.paragraphObject;\n let isStrikeout, isDStrikeout, isSmallCaps, isAllCaps, letterSpacing;\n if (paragraph) {\n isStrikeout = paragraph.get_Strikeout();\n isDStrikeout = paragraph.get_DStrikeout();\n isSmallCaps = paragraph.get_SmallCaps();\n isAllCaps = paragraph.get_AllCaps();\n letterSpacing = Common.Utils.Metric.fnRecalcFromMM(paragraph.get_TextSpacing());\n }\n const isSuperscript = storeTextSettings.isSuperscript;\n const isSubscript = storeTextSettings.isSubscript;\n if (!paragraph && Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n return(\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {props.onAdditionalStrikethrough('strikeout', !isStrikeout)}}/>\n {props.onAdditionalStrikethrough('dbStrikeout', !isDStrikeout)}}/>\n {props.onAdditionalScript('superscript', !isSuperscript)}}/>\n {props.onAdditionalScript('subscript', !isSubscript)}}/>\n {props.onAdditionalCaps('small', !isSmallCaps)}}/>\n {props.onAdditionalCaps('all', !isAllCaps)}}/>\n \n \n \n {!isAndroid &&
          {(Number.isInteger(letterSpacing) ? letterSpacing : letterSpacing.toFixed(2)) + ' ' + Common.Utils.Metric.getCurrentMetricName()}
          }\n
          \n \n \n {isAndroid && }\n \n \n
          \n
          \n
          \n
          \n )\n};\n\nconst PageBullets = observer( props => {\n const storeTextSettings = props.storeTextSettings;\n const bulletArrays = storeTextSettings.getBulletsList();\n const typeBullets = storeTextSettings.typeBullets;\n\n useEffect(() => {\n props.updateBulletsNumbers(0);\n props.getIconsBulletsAndNumbers(bulletArrays, 0);\n }, []);\n \n return(\n \n \n {bulletArrays.map( bullet => (\n {\n props.onBullet(bullet.numberingInfo);\n }}>\n
          \n
          \n ))}\n
          \n
          \n )\n});\n\nconst PageNumbers = observer( props => {\n const storeTextSettings = props.storeTextSettings;\n const numberArrays = storeTextSettings.getNumbersList();\n const typeNumbers = storeTextSettings.typeNumbers;\n\n useEffect(() => {\n props.updateBulletsNumbers(1);\n props.getIconsBulletsAndNumbers(numberArrays, 1);\n }, []);\n \n return (\n \n \n {numberArrays.map( number => (\n {\n props.onNumber(number.numberingInfo);\n }}>\n
          \n
          \n ))}\n
          \n
          \n );\n});\n\nconst PageMultiLevel = observer( props => {\n const storeTextSettings = props.storeTextSettings;\n const arrayMultiLevel = storeTextSettings.getMultiLevelList();\n const typeMultiLevel = storeTextSettings.typeMultiLevel;\n\n useEffect(() => {\n props.updateBulletsNumbers(2);\n props.getIconsBulletsAndNumbers(arrayMultiLevel, 2);\n }, []);\n\n return(\n \n \n {arrayMultiLevel.map((item) => (\n props.onMultiLevelList(item.numberingInfo)}>\n
          \n\n
          \n \n ))}\n
          \n
          \n )\n \n});\n\nconst PageBulletsAndNumbers = props => {\n const { t } = useTranslation();\n const storeTextSettings = props.storeTextSettings;\n \n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n
          \n
          \n
          \n \n
          \n
          \n \n
          \n
          \n \n
          \n
          \n
          \n
          \n
          \n )\n};\n\nconst PageLineSpacing = props => {\n const { t } = useTranslation();\n const storeTextSettings = props.storeTextSettings;\n const lineSpacing = storeTextSettings.lineSpacing;\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {props.onLineSpacing(1.0)}}>\n {props.onLineSpacing(1.15)}}>\n {props.onLineSpacing(1.5)}}>\n {props.onLineSpacing(2.0)}}>\n {props.onLineSpacing(2.5)}}>\n {props.onLineSpacing(3.0)}}>\n \n \n )\n};\n\nconst PageCustomFontColor = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const store = props.storeTextSettings;\n let textColor = store.textColor;\n if (typeof textColor === 'object') {\n textColor = textColor.color;\n }\n const autoColor = textColor === 'auto' ? window.getComputedStyle(document.getElementById('font-color-auto')).backgroundColor : null;\n const onAddNewColor = (colors, color) => {\n props.storePalette.changeCustomColors(colors);\n props.onTextColor(color);\n props.f7router.back();\n };\n return(\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n )\n};\n\nconst PageFontColor = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const textColor = props.storeTextSettings.textColor;\n const customColors = props.storePalette.customColors;\n const changeColor = (color, effectId) => {\n if (color !== 'empty') {\n if (effectId !==undefined ) {\n props.onTextColor({color: color, effectId: effectId});\n } else {\n props.onTextColor(color);\n }\n } else {\n // open custom color menu\n props.f7router.navigate('/edit-text-custom-font-color/', {props: {onTextColor: props.onTextColor}});\n }\n };\n return(\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {\n props.onTextColorAuto();\n }}>\n
          \n
          \n
          \n
          \n
          \n \n \n \n \n
          \n )\n};\n\nconst PageCustomBackColor = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n let backgroundColor = props.storeTextSettings.backgroundColor;\n if (typeof backgroundColor === 'object') {\n backgroundColor = backgroundColor.color;\n }\n const onAddNewColor = (colors, color) => {\n props.storePalette.changeCustomColors(colors);\n props.onBackgroundColor(color);\n props.f7router.back();\n };\n return(\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n )\n};\n\nconst PageHighlightColor = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const highlightColor = props.storeTextSettings.highlightColor;\n\n const changeColor = (color, effectId) => {\n if (color !== 'empty') {\n if (effectId !== undefined ) {\n props.onHighlightColor({color: color, effectId: effectId});\n } else {\n props.onHighlightColor(color);\n }\n }\n };\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n )\n};\n\nconst PageOrientationTextShape = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const shapePr = props.shapePr;\n const [directionTextShape, setDirectionTextShape] = useState(shapePr.get_Vert());\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {\n setDirectionTextShape(Asc.c_oAscVertDrawingText.normal);\n props.setOrientationTextShape(Asc.c_oAscVertDrawingText.normal);\n }}>\n \n \n {\n setDirectionTextShape(Asc.c_oAscVertDrawingText.vert);\n props.setOrientationTextShape(Asc.c_oAscVertDrawingText.vert);\n }}>\n \n \n {\n setDirectionTextShape(Asc.c_oAscVertDrawingText.vert270);\n props.setOrientationTextShape(Asc.c_oAscVertDrawingText.vert270);\n }}>\n \n \n \n \n )\n}\n\nconst EditText = props => {\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const storeTextSettings = props.storeTextSettings;\n const storeFocusObjects = props.storeFocusObjects;\n const shapeObject = storeFocusObjects.shapeObject;\n const shapePr = shapeObject && shapeObject.get_ShapeProperties();\n const inSmartArt = shapePr && shapePr.asc_getFromSmartArt();\n const inSmartArtInternal = shapePr && shapePr.asc_getFromSmartArtInternal();\n const fontName = storeTextSettings.fontName || t('Edit.textFonts');\n const fontSize = storeTextSettings.fontSize;\n const fontColor = storeTextSettings.textColor;\n const highlightColor = storeTextSettings.highlightColor;\n const displaySize = typeof fontSize === 'undefined' ? t('Edit.textAuto') : fontSize + ' ' + t('Edit.textPt');\n const isBold = storeTextSettings.isBold;\n const isItalic = storeTextSettings.isItalic;\n const isUnderline = storeTextSettings.isUnderline;\n const isStrikethrough = storeTextSettings.isStrikethrough;\n const paragraphAlign = storeTextSettings.paragraphAlign;\n\n useEffect(() => {\n props.updateListType();\n }, [])\n \n let previewList;\n switch(storeTextSettings.listType) {\n case -1: \n previewList = '';\n break;\n case 0: \n previewList = t('Edit.textBullets');\n break;\n case 1: \n previewList = t('Edit.textNumbers');\n break;\n }\n\n const fontColorPreview = fontColor !== 'auto' ?\n :\n ;\n\n const highlightColorPreview = highlightColor !== 'transparent' ?\n :\n ;\n\n return (\n \n \n \n \n \n \n \n {!isAndroid ?\n {fontColorPreview} :\n fontColorPreview\n }\n \n \n {!isAndroid ?\n {highlightColorPreview} : highlightColorPreview\n }\n \n \n {!isAndroid && }\n \n \n \n \n \n \n {!inSmartArtInternal &&\n \n \n \n }\n {shapePr &&\n \n {!isAndroid && }\n \n }\n {!inSmartArt && !inSmartArtInternal &&\n \n
          {previewList}
          \n {!isAndroid && }\n
          \n }\n \n {!isAndroid && }\n \n
          \n
          \n )\n};\n\nconst EditTextContainer = inject(\"storeTextSettings\", \"storeFocusObjects\")(observer(EditText));\nconst PageTextFonts = inject(\"storeTextSettings\", \"storeFocusObjects\")(observer(PageFonts));\nconst PageTextAddFormatting = inject(\"storeTextSettings\", \"storeFocusObjects\")(observer(PageAdditionalFormatting));\nconst PageTextBulletsAndNumbers = inject(\"storeTextSettings\")(observer(PageBulletsAndNumbers));\nconst PageTextLineSpacing = inject(\"storeTextSettings\")(observer(PageLineSpacing));\nconst PageTextFontColor = inject(\"storeTextSettings\", \"storePalette\")(observer(PageFontColor));\nconst PageTextCustomFontColor = inject(\"storeTextSettings\", \"storePalette\")(observer(PageCustomFontColor));\nconst PageTextHighlightColor = inject(\"storeTextSettings\")(observer(PageHighlightColor));\n// const PageTextOrientation = observer(TextOrientation);\n\nexport {\n EditTextContainer as EditText,\n PageTextFonts,\n PageTextAddFormatting,\n PageTextBulletsAndNumbers,\n PageTextLineSpacing,\n PageTextFontColor,\n PageTextCustomFontColor,\n PageTextHighlightColor,\n // PageTextOrientation,\n PageOrientationTextShape\n // PageTextCustomBackColor\n};","import React, {Fragment, useState} from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport {f7, List, ListItem, Icon, Button, Page, Navbar, NavRight, Segmented, BlockTitle, Toggle, Link, NavLeft, NavTitle, ListInput} from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport { ThemeColorPalette, CustomColorPicker } from '../../../../../common/mobile/lib/component/ThemeColorPalette.jsx';\n\nconst PageAdvancedSettings = props => {\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const metricText = Common.Utils.Metric.getCurrentMetricName();\n const storeFocusObjects = props.storeFocusObjects;\n const paragraphObj = storeFocusObjects.paragraphObject;\n let firstLine, spaceBefore, spaceAfter, spaceBeforeFix, spaceAfterFix, displayBefore, displayAfter, spaceBetween, breakBefore, orphanControl, keepTogether, keepWithNext;\n if (paragraphObj) {\n if (paragraphObj.get_Ind()===null || paragraphObj.get_Ind()===undefined) {\n paragraphObj.get_Ind().put_FirstLine(0);\n }\n firstLine = parseFloat(Common.Utils.Metric.fnRecalcFromMM(paragraphObj.get_Ind().get_FirstLine()).toFixed(2));\n\n spaceBefore = paragraphObj.get_Spacing().get_Before() < 0 ? paragraphObj.get_Spacing().get_Before() : Common.Utils.Metric.fnRecalcFromMM(paragraphObj.get_Spacing().get_Before());\n spaceAfter = paragraphObj.get_Spacing().get_After() < 0 ? paragraphObj.get_Spacing().get_After() : Common.Utils.Metric.fnRecalcFromMM(paragraphObj.get_Spacing().get_After());\n spaceBeforeFix = parseFloat(spaceBefore.toFixed(2));\n spaceAfterFix = parseFloat(spaceAfter.toFixed(2));\n displayBefore = spaceBefore < 0 ? t('Edit.textAuto') : spaceBeforeFix + ' ' + metricText;\n displayAfter = spaceAfter < 0 ? t('Edit.textAuto') : spaceAfterFix + ' ' + metricText;\n\n spaceBetween = paragraphObj.get_ContextualSpacing();\n breakBefore = paragraphObj.get_PageBreakBefore();\n orphanControl = paragraphObj.get_WidowControl();\n keepTogether = paragraphObj.get_KeepLines();\n keepWithNext = paragraphObj.get_KeepNext();\n } else {\n if (Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n }\n return(\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n {t('Edit.textDistanceFromText')}\n \n \n {!isAndroid &&
          {displayBefore}
          }\n
          \n \n \n {isAndroid && }\n \n \n
          \n
          \n \n {!isAndroid &&
          {displayAfter}
          }\n
          \n \n \n {isAndroid && }\n \n \n
          \n
          \n \n {!isAndroid &&
          {firstLine + ' ' + metricText}
          }\n
          \n \n \n {isAndroid && }\n \n \n
          \n
          \n
          \n \n \n {props.onSpaceBetween(!spaceBetween)}}/>\n \n \n \n \n {props.onBreakBefore(!breakBefore)}}/>\n \n \n {props.onOrphan(!orphanControl)}}/>\n \n \n {props.onKeepTogether(!keepTogether)}}/>\n \n \n {props.onKeepNext(!keepWithNext)}}/>\n \n \n
          \n )\n};\n\nconst PageCustomBackColor = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n let backgroundColor = props.storeParagraphSettings.backColor;\n if (typeof backgroundColor === 'object') {\n backgroundColor = backgroundColor.color;\n }\n const onAddNewColor = (colors, color) => {\n props.storePalette.changeCustomColors(colors);\n props.onBackgroundColor(color);\n props.storeParagraphSettings.setBackColor(color);\n props.f7router.back();\n };\n return(\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n )\n};\n\nconst PageBackgroundColor = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const backgroundColor = props.storeParagraphSettings.backColor;\n const customColors = props.storePalette.customColors;\n const changeColor = (color, effectId, effectValue) => {\n if (color !== 'empty') {\n if (effectId !==undefined ) {\n const newColor = {color: color, effectId: effectId, effectValue: effectValue};\n props.onBackgroundColor(newColor);\n props.storeParagraphSettings.setBackColor(newColor);\n } else {\n props.onBackgroundColor(color);\n props.storeParagraphSettings.setBackColor(color);\n }\n } else {\n // open custom color menu\n props.f7router.navigate('/edit-paragraph-custom-color/', {props: {onBackgroundColor: props.onBackgroundColor}});\n }\n };\n return(\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n \n \n \n )\n};\n\nconst EditParagraph = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const storeParagraphSettings = props.storeParagraphSettings;\n const paragraphStyles = storeParagraphSettings.paragraphStyles;\n const curStyleName = storeParagraphSettings.styleName;\n const curStyle = paragraphStyles.find(style => style.name === curStyleName);\n const thumbSize = storeParagraphSettings.styleThumbSize;\n const paragraph = props.storeFocusObjects.paragraphObject;\n const curBackColor = storeParagraphSettings.backColor ? storeParagraphSettings.backColor : storeParagraphSettings.getBackgroundColor(paragraph);\n const background = curBackColor !== 'transparent' ? `#${(typeof curBackColor === \"object\" ? curBackColor.color : curBackColor)}` : '';\n \n return (\n \n {t('Edit.textParagraphStyle')}\n \n \n {curStyle && \n
          \n }\n
          \n
          \n \n \n \n \n \n \n \n \n
          \n )\n};\n\nconst EditParagraphStyle = props => {\n const { t } = useTranslation();\n const api = Common.EditorApi.get();\n const _t = t('Edit', {returnObjects: true});\n const storeParagraphSettings = props.storeParagraphSettings;\n const paragraphStyles = storeParagraphSettings.paragraphStyles;\n const curStyleName = storeParagraphSettings.styleName;\n const thumbSize = storeParagraphSettings.styleThumbSize;\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n {Device.android && }\n \n \n \n {paragraphStyles.map((style, index) => (\n {\n if(curStyleName !== style.name) {\n props.onStyleClick(style.name);\n }\n }}\n >\n
          \n {!api.asc_IsStyleDefault(style.name) && (\n
          \n {\n await storeParagraphSettings.changeParaStyleName('Normal');\n await props.onStyleMenuDelete(style.name);\n }}>\n \n \n
          \n )}\n \n ))}\n
          \n
          \n )\n}\n\nconst CreateTextStyle = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const [titleNewStyle, setTitle] = useState('');\n const [nextParagraphStyle, setParagraph] = useState('');\n\n return (\n \n \n {\n let title = titleNewStyle.trim();\n if(title) {\n props.onSaveStyle(title, nextParagraphStyle);\n props.f7router.back();\n }\n }}>{t('Edit.textDone')}\n \n \n {\n setTitle(event.target.value)\n }}\n >\n \n {t('Edit.textNextParagraphStyle')}\n \n \n \n \n )\n}\n\nconst ChangeNextParagraphStyle = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const nextParagraphStyle = props.nextParagraphStyle;\n const storeParagraphSettings = props.storeParagraphSettings;\n const paragraphStyles = storeParagraphSettings.paragraphStyles;\n const thumbSize = storeParagraphSettings.styleThumbSize;\n const [newParagraph, setParagraph] = useState(nextParagraphStyle);\n\n return (\n \n \n \n {\n if(newParagraph) {\n setParagraph('');\n props.setParagraph('');\n }\n }} title={t('Edit.textSameCreatedNewStyle')}>\n {paragraphStyles.map((style, index) => (\n {\n if(newParagraph !== style.name) {\n setParagraph(style.name);\n props.setParagraph(style.name);\n }\n }}\n >\n
          \n \n ))}\n
          \n
          \n )\n\n}\n\nconst EditParagraphContainer = inject(\"storeParagraphSettings\", \"storeFocusObjects\")(observer(EditParagraph));\nconst ParagraphAdvSettings = inject(\"storeParagraphSettings\", \"storeFocusObjects\")(observer(PageAdvancedSettings));\nconst PageParagraphBackColor = inject(\"storeParagraphSettings\", \"storePalette\")(observer(PageBackgroundColor));\nconst PageParagraphCustomColor = inject(\"storeParagraphSettings\", \"storePalette\")(observer(PageCustomBackColor));\nconst PageParagraphStyle = inject(\"storeParagraphSettings\")(observer(EditParagraphStyle));\nconst PageCreateTextStyle = inject(\"storeParagraphSettings\")(observer(CreateTextStyle));\nconst PageChangeNextParagraphStyle = inject(\"storeParagraphSettings\")(observer(ChangeNextParagraphStyle));\n\nexport {\n EditParagraphContainer as EditParagraph,\n ParagraphAdvSettings,\n PageParagraphBackColor,\n PageParagraphCustomColor,\n PageParagraphStyle,\n PageCreateTextStyle,\n PageChangeNextParagraphStyle\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, noUndefinedProps, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { watchProp } from '../shared/watch-prop.js';\n\n\n\nconst Range = /*#__PURE__*/forwardRef((props, ref) => {\n const f7Range = useRef(null);\n const {\n className,\n id,\n style,\n children,\n init = true,\n value = 0,\n min = 0,\n max = 100,\n step = 1,\n label = false,\n dual = false,\n vertical = false,\n verticalReversed = false,\n draggableBar = true,\n formatLabel,\n scale = false,\n scaleSteps = 5,\n scaleSubSteps = 0,\n formatScaleLabel,\n limitKnobPosition = undefined,\n name,\n input,\n inputId,\n disabled\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7Range: () => f7Range.current\n }));\n watchProp(value, newValue => {\n if (!f7Range.current) return;\n const rangeValue = f7Range.current.value;\n if (Array.isArray(newValue) && Array.isArray(rangeValue)) {\n if (rangeValue[0] !== newValue[0] || rangeValue[1] !== newValue[1]) {\n f7Range.current.setValue(newValue);\n }\n } else {\n f7Range.current.setValue(newValue);\n }\n });\n const onChange = (range, val) => {\n emit(props, 'rangeChange', val);\n };\n const onChanged = (range, val) => {\n emit(props, 'rangeChanged', val);\n };\n const rangeEvents = method => {\n if (!f7Range.current) return;\n f7Range.current[method]('change', onChange);\n f7Range.current[method]('changed', onChanged);\n };\n const onMount = () => {\n f7ready(() => {\n if (!init || !elRef.current) return;\n f7Range.current = f7.range.create(noUndefinedProps({\n el: elRef.current,\n value,\n min,\n max,\n step,\n label,\n dual,\n draggableBar,\n vertical,\n verticalReversed,\n formatLabel,\n scale,\n scaleSteps,\n scaleSubSteps,\n formatScaleLabel,\n limitKnobPosition\n }));\n rangeEvents('on');\n });\n };\n const onDestroy = () => {\n if (f7Range.current && f7Range.current.destroy) f7Range.current.destroy();\n f7Range.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n rangeEvents('on');\n return () => {\n rangeEvents('off');\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n const classes = classNames(className, 'range-slider', {\n 'range-slider-horizontal': !vertical,\n 'range-slider-vertical': vertical,\n 'range-slider-vertical-reversed': vertical && verticalReversed,\n disabled\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: elRef,\n id: id,\n style: style,\n className: classes\n }, extraAttrs), input && /*#__PURE__*/React.createElement(\"input\", {\n type: \"range\",\n name: name,\n id: inputId\n }), children);\n});\nRange.displayName = 'f7-range';\nexport default Range;","import React, {Fragment, useState} from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport {List, ListItem, Icon, Page, Navbar, NavRight, BlockTitle, Toggle, Range, ListButton, Link, Tabs, Tab} from 'framework7-react';\nimport { f7 } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport {CustomColorPicker, ThemeColorPalette} from \"../../../../../common/mobile/lib/component/ThemeColorPalette.jsx\";\n\nconst PageCustomFillColor = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n let fillColor = props.storeShapeSettings.fillColor;\n if (typeof fillColor === 'object') {\n fillColor = fillColor.color;\n }\n const onAddNewColor = (colors, color) => {\n props.storePalette.changeCustomColors(colors);\n props.onFillColor(color);\n props.storeShapeSettings.setFillColor(color);\n props.f7router.back();\n };\n return(\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n )\n};\n\nconst PaletteFill = inject(\"storeFocusObjects\", \"storeShapeSettings\", \"storePalette\")(observer(props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const storeShapeSettings = props.storeShapeSettings;\n const shapeObject = props.storeFocusObjects.shapeObject;\n const curFillColor = storeShapeSettings.fillColor ? storeShapeSettings.fillColor : storeShapeSettings.getFillColor(shapeObject);\n const customColors = props.storePalette.customColors;\n const changeColor = (color, effectId, effectValue) => {\n if (color !== 'empty') {\n if (effectId !==undefined ) {\n const newColor = {color: color, effectId: effectId, effectValue: effectValue};\n props.onFillColor(newColor);\n storeShapeSettings.setFillColor(newColor);\n } else {\n props.onFillColor(color);\n storeShapeSettings.setFillColor(color);\n }\n } else {\n // open custom color menu\n props.f7router.navigate('/edit-shape-custom-fill-color/', {props: {onFillColor: props.onFillColor}});\n }\n };\n return(\n \n \n \n \n \n \n )\n}));\n\nconst PageCustomBorderColor = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n let borderColor = props.storeShapeSettings.borderColorView;\n if (typeof borderColor === 'object') {\n borderColor = borderColor.color;\n }\n const onAddNewColor = (colors, color) => {\n props.storePalette.changeCustomColors(colors);\n props.onBorderColor(color);\n props.storeShapeSettings.setBorderColor(color);\n props.f7router.back();\n };\n return(\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n )\n};\n\nconst PageBorderColor = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const borderColor = props.storeShapeSettings.borderColorView;\n const customColors = props.storePalette.customColors;\n const changeColor = (color, effectId, effectValue) => {\n if (color !== 'empty') {\n if (effectId !==undefined ) {\n const newColor = {color: color, effectId: effectId, effectValue: effectValue};\n props.onBorderColor(newColor);\n props.storeShapeSettings.setBorderColor(newColor);\n } else {\n props.onBorderColor(color);\n props.storeShapeSettings.setBorderColor(color);\n }\n } else {\n // open custom color menu\n props.f7router.navigate('/edit-shape-custom-border-color/', {props: {onBorderColor: props.onBorderColor}});\n }\n };\n return(\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n \n \n \n )\n};\n\nconst PageStyle = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const storeShapeSettings = props.storeShapeSettings;\n const shapeObject = props.storeFocusObjects.shapeObject;\n const isAndroid = Device.android;\n\n let borderSize, borderType, transparent;\n if (shapeObject) {\n const stroke = shapeObject.get_ShapeProperties().get_stroke();\n borderSize = stroke.get_width() * 72.0 / 25.4;\n borderType = stroke.get_type();\n transparent = shapeObject.get_ShapeProperties().get_fill().asc_getTransparent();\n }\n\n // Init border size\n const borderSizeTransform = storeShapeSettings.borderSizeTransform();\n const displayBorderSize = (borderType == Asc.c_oAscStrokeType.STROKE_NONE || borderType === undefined) ? 0 : borderSizeTransform.indexSizeByValue(borderSize);\n const displayTextBorderSize = (borderType == Asc.c_oAscStrokeType.STROKE_NONE || borderType === undefined) ? 0 : borderSizeTransform.sizeByValue(borderSize);\n const [stateBorderSize, setBorderSize] = useState(displayBorderSize);\n const [stateTextBorderSize, setTextBorderSize] = useState(displayTextBorderSize);\n\n // Init border color\n const borderColor = !storeShapeSettings.borderColorView ? storeShapeSettings.initBorderColorView(shapeObject) : storeShapeSettings.borderColorView;\n const displayBorderColor = borderColor !== 'transparent' ? `#${(typeof borderColor === \"object\" ? borderColor.color : borderColor)}` : borderColor;\n\n // Init opacity\n const opacity = transparent !== null && transparent !== undefined ? transparent / 2.55 : 100;\n const [stateOpacity, setOpacity] = useState(Math.round(opacity));\n\n if (!shapeObject && Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n\n return (\n \n \n
          \n {_t.textFill}\n {_t.textBorder}\n {_t.textEffects}\n {isAndroid && }\n
          \n {Device.phone &&\n \n \n \n \n \n }\n
          \n \n \n \n \n \n \n \n
          {_t.textSize}
          \n
          \n {setBorderSize(value); setTextBorderSize(borderSizeTransform.sizeByIndex(value));}}\n onRangeChanged={(value) => {props.onBorderSize(borderSizeTransform.sizeByIndex(value))}}\n >\n
          \n
          \n {stateTextBorderSize + ' ' + Common.Utils.Metric.getMetricName(Common.Utils.Metric.c_MetricUnits.pt)}\n
          \n
          \n \n \n \n
          \n
          \n \n \n \n
          {_t.textOpacity}
          \n
          \n {setOpacity(value)}}\n onRangeChanged={(value) => {props.onOpacity(value)}}\n >\n
          \n
          \n {stateOpacity + ' %'}\n
          \n
          \n
          \n
          \n
          \n
          \n )\n};\n\nconst PageStyleNoFill = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const storeShapeSettings = props.storeShapeSettings;\n const shapeObject = props.storeFocusObjects.shapeObject;\n let borderSize, borderType;\n if (shapeObject) {\n const stroke = shapeObject.get_ShapeProperties().get_stroke();\n borderSize = stroke.get_width() * 72.0 / 25.4;\n borderType = stroke.get_type();\n }\n\n // Init border size\n const borderSizeTransform = storeShapeSettings.borderSizeTransform();\n const displayBorderSize = (borderType == Asc.c_oAscStrokeType.STROKE_NONE || borderType === undefined) ? 0 : borderSizeTransform.indexSizeByValue(borderSize);\n const displayTextBorderSize = (borderType == Asc.c_oAscStrokeType.STROKE_NONE || borderType === undefined) ? 0 : borderSizeTransform.sizeByValue(borderSize);\n const [stateBorderSize, setBorderSize] = useState(displayBorderSize);\n const [stateTextBorderSize, setTextBorderSize] = useState(displayTextBorderSize);\n\n // Init border color\n const borderColor = !storeShapeSettings.borderColorView ? storeShapeSettings.initBorderColorView(shapeObject) : storeShapeSettings.borderColorView;\n const displayBorderColor = borderColor !== 'transparent' ? `#${(typeof borderColor === \"object\" ? borderColor.color : borderColor)}` : borderColor;\n\n if (!shapeObject && Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n
          {_t.textSize}
          \n
          \n {setBorderSize(value); setTextBorderSize(borderSizeTransform.sizeByIndex(value));}}\n onRangeChanged={(value) => {props.onBorderSize(borderSizeTransform.sizeByIndex(value))}}\n >\n
          \n
          \n {stateTextBorderSize + ' ' + Common.Utils.Metric.getMetricName(Common.Utils.Metric.c_MetricUnits.pt)}\n
          \n
          \n \n \n \n
          \n
          \n )\n};\n\nconst PageWrap = props => {\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const storeShapeSettings = props.storeShapeSettings;\n const shapeObject = props.storeFocusObjects.shapeObject;\n let wrapType, align, moveText, overlap, distance;\n\n if (shapeObject) {\n wrapType = storeShapeSettings.getWrapType(shapeObject);\n align = storeShapeSettings.getAlign(shapeObject);\n moveText = storeShapeSettings.getMoveText(shapeObject);\n overlap = storeShapeSettings.getOverlap(shapeObject);\n distance = Common.Utils.Metric.fnRecalcFromMM(storeShapeSettings.getWrapDistance(shapeObject));\n }\n\n const metricText = Common.Utils.Metric.getCurrentMetricName();\n const [stateDistance, setDistance] = useState(distance);\n\n if (!shapeObject && Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {props.onWrapType('inline')}}>\n {!isAndroid && }\n \n {props.onWrapType('square')}}>\n {!isAndroid && }\n \n {props.onWrapType('tight')}}>\n {!isAndroid && }\n \n {props.onWrapType('through')}}>\n {!isAndroid && }\n \n {props.onWrapType('top-bottom')}}>\n {!isAndroid && }\n \n {props.onWrapType('infront')}}>\n {!isAndroid && }\n \n {props.onWrapType('behind')}}>\n {!isAndroid && }\n \n \n {('behind' !== wrapType && 'infront' !== wrapType) &&\n \n {_t.textDistanceFromText}\n \n \n
          \n {setDistance(value)}}\n onRangeChanged={(value) => {props.onWrapDistance(value)}}\n >\n
          \n
          \n {stateDistance + ' ' + metricText}\n
          \n
          \n
          \n
          \n }\n {wrapType !== 'inline' &&\n \n {_t.textAlign}\n \n \n \n \n \n \n }\n \n \n {props.onMoveText(!moveText)}}/>\n \n \n {props.onOverlap(!overlap)}}/>\n \n \n
          \n )\n};\n\nconst PageReplace = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const storeShapeSettings = props.storeShapeSettings;\n let shapes = storeShapeSettings.getStyleGroups();\n shapes.splice(0, 1); // Remove line shapes\n\n const shapeObject = props.storeFocusObjects.shapeObject;\n if (!shapeObject && Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n {shapes.map((row, indexRow) => {\n return (\n
            \n {row.map((shape, index) => {\n return (\n
          • {props.onReplace(shape.type)}}>\n
            \n
            \n
          • \n )\n })}\n
          \n )\n })}\n
          \n )\n};\n\nconst PageReorder = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n\n const shapeObject = props.storeFocusObjects.shapeObject;\n if (!shapeObject && Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {props.onReorder('all-up')}} className='no-indicator'>\n \n \n {props.onReorder('all-down')}} className='no-indicator'>\n \n \n {props.onReorder('move-up')}} className='no-indicator'>\n \n \n {props.onReorder('move-down')}} className='no-indicator'>\n \n \n \n \n )\n};\n\nconst EditShape = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const api = Common.EditorApi.get();\n const canFill = props.storeFocusObjects.shapeObject.get_ShapeProperties().get_CanFill();\n const shapeObject = props.storeFocusObjects.shapeObject;\n const wrapType = props.storeShapeSettings.getWrapType(shapeObject);\n const settings = props.storeFocusObjects.settings;\n\n const shapeType = shapeObject.get_ShapeProperties().asc_getType();\n const hideChangeType = shapeObject.get_ShapeProperties().get_FromChart() || shapeObject.get_ShapeProperties().get_FromSmartArt() \n || shapeType=='line' || shapeType=='bentConnector2' || shapeType=='bentConnector3'\n || shapeType=='bentConnector4' || shapeType=='bentConnector5' || shapeType=='curvedConnector2'\n || shapeType=='curvedConnector3' || shapeType=='curvedConnector4' || shapeType=='curvedConnector5'\n || shapeType=='straightConnector1';\n\n const isSmartArtInternal = shapeObject.get_ShapeProperties().get_FromSmartArtInternal();\n const isFromGroup = shapeObject.get_ShapeProperties().get_FromGroup();\n const inControl = api.asc_IsContentControl();\n const controlProps = (api && inControl) ? api.asc_GetContentControlProperties() : null;\n const lockType = controlProps ? controlProps.get_Lock() : Asc.c_oAscSdtLockType.Unlocked;\n\n let fixedSize = false;\n\n if (controlProps) {\n let spectype = controlProps.get_SpecificType();\n fixedSize = (spectype == Asc.c_oAscContentControlSpecificType.CheckBox || spectype == Asc. c_oAscContentControlSpecificType.ComboBox || spectype == Asc.c_oAscContentControlSpecificType.DropDownList || spectype == Asc.c_oAscContentControlSpecificType.None || spectype == Asc.c_oAscContentControlSpecificType.Picture || spectype == Asc.c_oAscContentControlSpecificType.Complex) && controlProps.get_FormPr() && controlProps.get_FormPr().get_Fixed();\n }\n\n let disableRemove = !!props.storeFocusObjects.paragraphObject || (lockType == Asc.c_oAscSdtLockType.SdtContentLocked || lockType == Asc.c_oAscSdtLockType.SdtLocked);\n\n return (\n \n \n {!fixedSize ?\n canFill ?\n :\n \n : null}\n {(!isFromGroup && settings.indexOf('image') === -1) &&\n \n }\n {(!hideChangeType && !fixedSize) &&\n \n }\n {(wrapType !== 'inline' && !isSmartArtInternal && settings.indexOf('image') === -1) && }\n \n {settings.indexOf('image') === -1 &&\n \n {props.onRemoveShape()}} className={`button-red button-fill button-raised${disableRemove ? ' disabled' : ''}`} />\n \n }\n \n )\n};\n\nconst EditShapeContainer = inject(\"storeFocusObjects\",\"storeShapeSettings\")(observer(EditShape));\nconst PageShapeStyle = inject(\"storeFocusObjects\", \"storeShapeSettings\")(observer(PageStyle));\nconst PageShapeStyleNoFill = inject(\"storeFocusObjects\", \"storeShapeSettings\")(observer(PageStyleNoFill));\nconst PageShapeCustomFillColor = inject(\"storeFocusObjects\", \"storeShapeSettings\", \"storePalette\")(observer(PageCustomFillColor));\nconst PageShapeBorderColor = inject(\"storeShapeSettings\", \"storePalette\")(observer(PageBorderColor));\nconst PageShapeCustomBorderColor = inject(\"storeShapeSettings\", \"storePalette\")(observer(PageCustomBorderColor));\nconst PageWrapContainer = inject(\"storeShapeSettings\", \"storeFocusObjects\")(observer(PageWrap));\nconst PageReplaceContainer = inject(\"storeShapeSettings\",\"storeFocusObjects\")(observer(PageReplace));\nconst PageReorderContainer = inject(\"storeFocusObjects\")(observer(PageReorder));\n\nexport {EditShapeContainer as EditShape,\n PageShapeStyle,\n PageShapeStyleNoFill,\n PageShapeCustomFillColor,\n PageShapeBorderColor,\n PageShapeCustomBorderColor,\n PageWrapContainer as PageWrap,\n PageReplaceContainer as PageReplace,\n PageReorderContainer as PageReorder}","import React, {Fragment, useState} from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport {List, ListItem, ListInput, ListButton, Icon, Page, Navbar, NavRight, BlockTitle, Toggle, Range, Link} from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {f7} from 'framework7-react';\nimport {Device} from '../../../../../common/mobile/utils/device';\n\nconst PageWrap = props => {\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const storeImageSettings = props.storeImageSettings;\n const imageObject = props.storeFocusObjects.imageObject;\n\n let wrapType, align, moveText, overlap, distance;\n\n if (imageObject) {\n wrapType = storeImageSettings.getWrapType(imageObject);\n align = storeImageSettings.getAlign(imageObject);\n moveText = storeImageSettings.getMoveText(imageObject);\n overlap = storeImageSettings.getOverlap(imageObject);\n distance = Common.Utils.Metric.fnRecalcFromMM(storeImageSettings.getWrapDistance(imageObject));\n }\n\n const metricText = Common.Utils.Metric.getCurrentMetricName();\n const [stateDistance, setDistance] = useState(distance);\n const [wrappingStyle, setWrappingStyle] = useState(wrapType);\n const typesWrapping = {\n inline: _t.textInline,\n square: _t.textSquare,\n tight: _t.textTight,\n through: _t.textThrough,\n 'top-bottom': _t.textTopAndBottom,\n infront: _t.textInFront,\n behind: _t.textBehind\n };\n\n if (!imageObject && Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n \n {('inline' !== wrappingStyle && 'behind' !== wrappingStyle && 'infront' !== wrappingStyle) &&\n \n {_t.textDistanceFromText}\n \n \n
          \n {setDistance(value)}}\n onRangeChanged={(value) => {props.onWrapDistance(value)}}\n >\n
          \n
          \n {stateDistance + ' ' + metricText}\n
          \n
          \n
          \n
          \n }\n {wrapType !== 'inline' &&\n \n {_t.textAlign}\n \n \n \n \n \n \n }\n \n \n {props.onMoveText(!moveText)}}/>\n \n \n {props.onOverlap(!overlap)}}/>\n \n \n
          \n )\n};\n\nconst PageWrappingStyle = props => {\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const imageObject = props.storeFocusObjects.imageObject;\n const [wrapType, setWrapType] = useState(props.wrappingStyle);\n\n if (!imageObject && Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {\n setWrapType('inline');\n props.setWrappingStyle('inline');\n props.onWrapType('inline');\n }}>\n {!isAndroid && }\n \n {\n setWrapType('square');\n props.setWrappingStyle('square');\n props.onWrapType('square');\n }}>\n {!isAndroid && }\n \n {\n setWrapType('tight');\n props.setWrappingStyle('tight');\n props.onWrapType('tight');\n }}>\n {!isAndroid && }\n \n {\n setWrapType('through');\n props.setWrappingStyle('through');\n props.onWrapType('through');\n }}>\n {!isAndroid && }\n \n {\n setWrapType('top-bottom');\n props.setWrappingStyle('top-bottom');\n props.onWrapType('top-bottom');\n }}>\n {!isAndroid && }\n \n {\n setWrapType('infront');\n props.setWrappingStyle('infront');\n props.onWrapType('infront');\n }}>\n {!isAndroid && }\n \n {\n setWrapType('behind');\n props.setWrappingStyle('behind');\n props.onWrapType('behind');\n }}>\n {!isAndroid && }\n \n \n \n )\n}\n\nconst PageLinkSettings = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const [stateValue, setValue] = useState('');\n const onReplace = () => {\n if (stateValue.trim().length > 0) {\n if ((/((^https?)|(^ftp)):\\/\\/.+/i.test(stateValue))) {\n props.onReplaceByUrl(stateValue.trim());\n } else {\n f7.dialog.alert(_t.textNotUrl, _t.notcriticalErrorTitle);\n }\n } else {\n f7.dialog.alert(_t.textEmptyImgUrl, _t.notcriticalErrorTitle);\n }\n };\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n {_t.textAddress}\n \n {setValue(event.target.value)}}\n >\n \n \n \n {onReplace()}}>\n \n \n )\n};\n\nconst PageReplace = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const imageObject = props.storeFocusObjects.imageObject;\n if (!imageObject && Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {props.onReplaceByFile()}}>\n \n \n \n \n \n \n \n )\n};\n\nconst PageReorder = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const imageObject = props.storeFocusObjects.imageObject;\n if (!imageObject && Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {props.onReorder('all-up')}} className='no-indicator'>\n \n \n {props.onReorder('all-down')}} className='no-indicator'>\n \n \n {props.onReorder('move-up')}} className='no-indicator'>\n \n \n {props.onReorder('move-down')}} className='no-indicator'>\n \n \n \n \n )\n};\n\nconst EditImage = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const storeFocusObjects = props.storeFocusObjects;\n const imageObject = storeFocusObjects.imageObject;\n const pluginGuid = imageObject.asc_getPluginGuid();\n const wrapType = props.storeImageSettings.getWrapType(imageObject);\n\n return (\n \n \n \n \n { wrapType !== 'inline' && }\n \n \n {props.onDefaulSize()}}/>\n {props.onRemoveImage()}}/>\n \n \n )\n};\n\nconst EditImageContainer = inject(\"storeFocusObjects\", \"storeImageSettings\")(observer(EditImage));\nconst PageWrapContainer = inject(\"storeFocusObjects\", \"storeImageSettings\")(observer(PageWrap));\nconst PageReplaceContainer = inject(\"storeFocusObjects\")(observer(PageReplace));\nconst PageReorderContainer = inject(\"storeFocusObjects\")(observer(PageReorder));\nconst PageLinkSettingsContainer = inject(\"storeFocusObjects\")(observer(PageLinkSettings));\nconst PageWrappingStyleContainer = inject(\"storeFocusObjects\")(observer(PageWrappingStyle));\n\nexport {EditImageContainer as EditImage,\n PageWrapContainer as PageImageWrap,\n PageReplaceContainer as PageImageReplace,\n PageReorderContainer as PageImageReorder,\n PageLinkSettingsContainer as PageLinkSettings,\n PageWrappingStyleContainer as PageWrappingStyle}","import React, {Fragment, useState, useEffect} from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport {Page, Navbar, NavRight, List, ListItem, ListButton, BlockTitle, SkeletonBlock, Range, Toggle, Icon, Link, Tabs, Tab} from 'framework7-react';\nimport { f7 } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport {CustomColorPicker, ThemeColorPalette} from \"../../../../../common/mobile/lib/component/ThemeColorPalette.jsx\";\n\nconst PageTableOptions = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const metricText = Common.Utils.Metric.getCurrentMetricName();\n const storeFocusObjects = props.storeFocusObjects;\n const tableObject = storeFocusObjects.tableObject;\n const storeTableSettings = props.storeTableSettings;\n\n let distance, isRepeat, isResize;\n if (tableObject) {\n distance = Common.Utils.Metric.fnRecalcFromMM(storeTableSettings.getCellMargins(tableObject));\n isRepeat = storeTableSettings.getRepeatOption(tableObject);\n isResize = storeTableSettings.getResizeOption(tableObject);\n }\n const [stateDistance, setDistance] = useState(distance);\n\n if (!tableObject && Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n {props.onOptionRepeat(!isRepeat)}}/>\n \n \n {props.onOptionResize(!isResize)}}/>\n \n \n {_t.textCellMargins}\n \n \n
          \n {setDistance(value)}}\n onRangeChanged={(value) => {props.onCellMargins(value)}}\n >\n
          \n
          \n {stateDistance + ' ' + metricText}\n
          \n
          \n
          \n
          \n )\n};\n\nconst PageWrap = props => {\n const c_tableWrap = {\n TABLE_WRAP_NONE: 0,\n TABLE_WRAP_PARALLEL: 1\n };\n const c_tableAlign = {\n TABLE_ALIGN_LEFT: 0,\n TABLE_ALIGN_CENTER: 1,\n TABLE_ALIGN_RIGHT: 2\n };\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const storeTableSettings = props.storeTableSettings;\n const tableObject = props.storeFocusObjects.tableObject;\n let wrapType, align, moveText, distance;\n if (tableObject) {\n wrapType = storeTableSettings.getWrapType(tableObject);\n align = storeTableSettings.getAlign(tableObject);\n moveText = storeTableSettings.getMoveText(tableObject);\n distance = Common.Utils.Metric.fnRecalcFromMM(storeTableSettings.getWrapDistance(tableObject));\n }\n const metricText = Common.Utils.Metric.getCurrentMetricName();\n const [stateDistance, setDistance] = useState(distance);\n\n if (!tableObject && Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {props.onWrapType(c_tableWrap.TABLE_WRAP_NONE)}}>\n {!isAndroid && }\n \n {props.onWrapType(c_tableWrap.TABLE_WRAP_PARALLEL)}}>\n {!isAndroid && }\n \n \n \n \n {props.onWrapMoveText(!moveText)}}/>\n \n \n {\n wrapType === 'inline' &&\n \n {_t.textAlign}\n \n \n \n \n \n \n }\n {\n (wrapType === 'flow') &&\n \n {_t.textDistanceFromText}\n \n \n
          \n {setDistance(value)}}\n onRangeChanged={(value) => {props.onWrapDistance(value)}}\n >\n
          \n
          \n {stateDistance + ' ' + metricText}\n
          \n
          \n
          \n
          \n }\n
          \n )\n};\n\n// Style\n\nconst StyleTemplates = inject(\"storeFocusObjects\",\"storeTableSettings\")(observer(({onStyleClick,storeTableSettings,storeFocusObjects, onGetTableStylesPreviews}) => {\n const tableObject = storeFocusObjects.tableObject;\n const styleId = tableObject && tableObject.get_TableStyle();\n const [stateId, setId] = useState(styleId);\n const styles = storeTableSettings.arrayStyles;\n\n useEffect(() => {\n if(!styles.length) onGetTableStylesPreviews();\n }, []);\n\n return (\n
          \n
            \n { !styles.length ?\n Array.from({ length: 27 }).map((item,index) => (\n
          • \n \n \n \n \n \n
          • \n )) :\n styles.map((style, index) => {\n return (\n
          • {onStyleClick(style.templateId); setId(style.templateId)}}>\n \n
          • \n )\n })\n }\n
          \n
          \n )\n}));\n\nconst PageStyleOptions = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const tableObject = props.storeFocusObjects.tableObject;\n let tableLook, isFirstRow, isLastRow, isBandHor, isFirstCol, isLastCol, isBandVer;\n if (tableObject) {\n tableLook = tableObject.get_TableLook();\n isFirstRow = tableLook.get_FirstRow();\n isLastRow = tableLook.get_LastRow();\n isBandHor = tableLook.get_BandHor();\n isFirstCol = tableLook.get_FirstCol();\n isLastCol = tableLook.get_LastCol();\n isBandVer = tableLook.get_BandVer();\n }\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n {props.onCheckTemplateChange(tableLook, 0, !isFirstRow)}}/>\n \n \n {props.onCheckTemplateChange(tableLook, 1, !isLastRow)}}/>\n \n \n {props.onCheckTemplateChange(tableLook, 2, !isBandHor)}}/>\n \n \n \n \n {props.onCheckTemplateChange(tableLook, 3, !isFirstCol)}}/>\n \n \n {props.onCheckTemplateChange(tableLook, 4, !isLastCol)}}/>\n \n \n {props.onCheckTemplateChange(tableLook, 5, !isBandVer)}}/>\n \n \n \n )\n};\n\nconst PageCustomFillColor = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const tableObject = props.storeFocusObjects.tableObject;\n let fillColor;\n if (tableObject) {\n fillColor = props.storeTableSettings.getFillColor(tableObject);\n if (typeof fillColor === 'object') {\n fillColor = fillColor.color;\n }\n }\n const onAddNewColor = (colors, color) => {\n props.storePalette.changeCustomColors(colors);\n props.onFillColor(color);\n props.f7router.back();\n };\n return(\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n )\n};\n\nconst TabFillColor = inject(\"storeFocusObjects\", \"storeTableSettings\", \"storePalette\")(observer(props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const tableObject = props.storeFocusObjects.tableObject;\n const fillColor = props.storeTableSettings.getFillColor(tableObject);\n const customColors = props.storePalette.customColors;\n const changeColor = (color, effectId, effectValue) => {\n if (color !== 'empty') {\n if (effectId !==undefined ) {\n const newColor = {color: color, effectId: effectId, effectValue: effectValue};\n props.onFillColor(newColor);\n } else {\n props.onFillColor(color);\n }\n } else {\n // open custom color menu\n props.f7router.navigate('/edit-table-custom-fill-color/', {props: {onFillColor: props.onFillColor}});\n }\n };\n return(\n \n \n \n \n \n \n )\n}));\n\nconst PageCustomBorderColor = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n let borderColor = props.storeTableSettings.cellBorderColor;\n if (typeof borderColor === 'object') {\n borderColor = borderColor.color;\n }\n const onAddNewColor = (colors, color) => {\n props.storePalette.changeCustomColors(colors);\n props.storeTableSettings.updateCellBorderColor(color);\n props.f7router.back();\n };\n const autoColor = props.storeTableSettings.colorAuto === 'auto' ? window.getComputedStyle(document.getElementById('font-color-auto')).backgroundColor : null;\n return(\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n )\n};\n\nconst PageBorderColor = props => {\n const { t } = useTranslation();\n const storeTableSettings = props.storeTableSettings;\n const borderColor = storeTableSettings.cellBorderColor;\n const customColors = props.storePalette.customColors;\n const changeColor = (color, effectId, effectValue) => {\n if (color !== 'empty') {\n storeTableSettings.setAutoColor(null);\n if (effectId !==undefined ) {\n const newColor = {color: color, effectId: effectId, effectValue: effectValue};\n storeTableSettings.updateCellBorderColor(newColor);\n } else {\n storeTableSettings.updateCellBorderColor(color);\n }\n } else {\n // open custom color menu\n props.f7router.navigate('/edit-table-custom-border-color/');\n }\n };\n return(\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {\n storeTableSettings.setAutoColor('auto');\n }}>\n
          \n
          \n
          \n
          \n
          \n \n \n \n \n
          \n )\n};\n\nconst TabBorder = inject(\"storeFocusObjects\", \"storeTableSettings\")(observer(props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n\n const storeTableSettings = props.storeTableSettings;\n const borderSizeTransform = storeTableSettings.borderSizeTransform();\n const borderSize = storeTableSettings.cellBorderWidth;\n const displayBorderSize = borderSizeTransform.indexSizeByValue(borderSize);\n const displayTextBorderSize = borderSizeTransform.sizeByValue(borderSize);\n const [stateBorderSize, setBorderSize] = useState(displayBorderSize);\n const [stateTextBorderSize, setTextBorderSize] = useState(displayTextBorderSize);\n\n const onBorderType = (type) => {\n storeTableSettings.updateBordersStyle(type);\n props.onBorderTypeClick(storeTableSettings.cellBorders);\n };\n const borderColor = storeTableSettings.cellBorderColor;\n const displayBorderColor = borderColor !== 'transparent' ? `#${(typeof borderColor === \"object\" ? borderColor.color : borderColor)}` : borderColor;\n\n return (\n \n \n
          {_t.textSize}
          \n
          \n {\n setBorderSize(value);\n setTextBorderSize(borderSizeTransform.sizeByIndex(value));\n }}\n onRangeChanged={(value) => {storeTableSettings.updateCellBorderWidth(borderSizeTransform.sizeByIndex(value));}}\n >\n
          \n
          \n {stateTextBorderSize + ' ' + Common.Utils.Metric.getMetricName(Common.Utils.Metric.c_MetricUnits.pt)}\n
          \n
          \n \n \n \n \n \n \n \n \n \n
          \n )\n}));\n\nconst PageStyle = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const storeTableSettings = props.storeTableSettings;\n const templates = storeTableSettings.styles;\n const isAndroid = Device.android;\n\n const tableObject = props.storeFocusObjects.tableObject;\n if (!tableObject && Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n\n return (\n \n \n
          \n {_t.textStyle}\n {_t.textFill}\n {_t.textBorder}\n {isAndroid && }\n
          \n {Device.phone &&\n \n \n \n \n \n }\n
          \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
          \n )\n};\n\nconst EditTable = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n return (\n \n \n \n \n \n \n \n \n \n {props.onRemoveTable()}} className='button-red button-fill button-raised'>\n \n \n \n \n \n \n \n \n )\n};\n\nconst EditTableContainer = inject(\"storeFocusObjects\")(observer(EditTable));\nconst PageTableOptionsContainer = inject(\"storeFocusObjects\",\"storeTableSettings\")(observer(PageTableOptions));\nconst PageTableWrap = inject(\"storeFocusObjects\",\"storeTableSettings\")(observer(PageWrap));\nconst PageTableStyle = inject(\"storeFocusObjects\",\"storeTableSettings\")(observer(PageStyle));\nconst PageTableStyleOptions = inject(\"storeFocusObjects\",\"storeTableSettings\")(observer(PageStyleOptions));\nconst PageTableCustomFillColor = inject(\"storeFocusObjects\",\"storeTableSettings\", \"storePalette\")(observer(PageCustomFillColor));\nconst PageTableBorderColor = inject(\"storeFocusObjects\",\"storeTableSettings\", \"storePalette\")(observer(PageBorderColor));\nconst PageTableCustomBorderColor = inject(\"storeFocusObjects\",\"storeTableSettings\", \"storePalette\")(observer(PageCustomBorderColor));\n\n\nexport {EditTableContainer as EditTable,\n PageTableOptionsContainer as PageTableOptions,\n PageTableWrap,\n PageTableStyle,\n PageTableStyleOptions,\n PageTableCustomFillColor,\n PageTableBorderColor,\n PageTableCustomBorderColor}","/**\n * Swiper React 10.3.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: September 28, 2023\n */\n\nimport React, { useEffect, useLayoutEffect, useContext, createContext, forwardRef, useState, useRef } from 'react';\nimport { S as Swiper$1 } from './shared/swiper-core.mjs';\nimport { g as getParams, m as mountSwiper, a as getChangedParams, u as updateOnVirtualData } from './shared/update-on-virtual-data.mjs';\nimport { d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination, e as extend, u as updateSwiper } from './shared/update-swiper.mjs';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction isChildSwiperSlide(child) {\n return child.type && child.type.displayName && child.type.displayName.includes('SwiperSlide');\n}\nfunction processChildren(c) {\n const slides = [];\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.children) {\n processChildren(child.props.children).forEach(slide => slides.push(slide));\n }\n });\n return slides;\n}\nfunction getChildren(c) {\n const slides = [];\n const slots = {\n 'container-start': [],\n 'container-end': [],\n 'wrapper-start': [],\n 'wrapper-end': []\n };\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.slot && slots[child.props.slot]) {\n slots[child.props.slot].push(child);\n } else if (child.props && child.props.children) {\n const foundSlides = processChildren(child.props.children);\n if (foundSlides.length > 0) {\n foundSlides.forEach(slide => slides.push(slide));\n } else {\n slots['container-end'].push(child);\n }\n } else {\n slots['container-end'].push(child);\n }\n });\n return {\n slides,\n slots\n };\n}\n\nfunction renderVirtual(swiper, slides, virtualData) {\n if (!virtualData) return null;\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n const style = swiper.isHorizontal() ? {\n [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`\n } : {\n top: `${virtualData.offset}px`\n };\n const {\n from,\n to\n } = virtualData;\n const loopFrom = swiper.params.loop ? -slides.length : 0;\n const loopTo = swiper.params.loop ? slides.length * 2 : slides.length;\n const slidesToRender = [];\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n slidesToRender.push(slides[getSlideIndex(i)]);\n }\n }\n return slidesToRender.map((child, index) => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper,\n style,\n key: `slide-${index}`\n });\n });\n}\n\nfunction useIsomorphicLayoutEffect(callback, deps) {\n // eslint-disable-next-line\n if (typeof window === 'undefined') return useEffect(callback, deps);\n return useLayoutEffect(callback, deps);\n}\n\nconst SwiperSlideContext = /*#__PURE__*/createContext(null);\nconst useSwiperSlide = () => {\n return useContext(SwiperSlideContext);\n};\nconst SwiperContext = /*#__PURE__*/createContext(null);\nconst useSwiper = () => {\n return useContext(SwiperContext);\n};\n\nconst Swiper = /*#__PURE__*/forwardRef(function (_temp, externalElRef) {\n let {\n className,\n tag: Tag = 'div',\n wrapperTag: WrapperTag = 'div',\n children,\n onSwiper,\n ...rest\n } = _temp === void 0 ? {} : _temp;\n let eventsAssigned = false;\n const [containerClasses, setContainerClasses] = useState('swiper');\n const [virtualData, setVirtualData] = useState(null);\n const [breakpointChanged, setBreakpointChanged] = useState(false);\n const initializedRef = useRef(false);\n const swiperElRef = useRef(null);\n const swiperRef = useRef(null);\n const oldPassedParamsRef = useRef(null);\n const oldSlides = useRef(null);\n const nextElRef = useRef(null);\n const prevElRef = useRef(null);\n const paginationElRef = useRef(null);\n const scrollbarElRef = useRef(null);\n const {\n params: swiperParams,\n passedParams,\n rest: restProps,\n events\n } = getParams(rest);\n const {\n slides,\n slots\n } = getChildren(children);\n const onBeforeBreakpoint = () => {\n setBreakpointChanged(!breakpointChanged);\n };\n Object.assign(swiperParams.on, {\n _containerClasses(swiper, classes) {\n setContainerClasses(classes);\n }\n });\n const initSwiper = () => {\n // init swiper\n Object.assign(swiperParams.on, events);\n eventsAssigned = true;\n const passParams = {\n ...swiperParams\n };\n delete passParams.wrapperClass;\n swiperRef.current = new Swiper$1(passParams);\n if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) {\n swiperRef.current.virtual.slides = slides;\n const extendWith = {\n cache: false,\n slides,\n renderExternal: setVirtualData,\n renderExternalUpdate: false\n };\n extend(swiperRef.current.params.virtual, extendWith);\n extend(swiperRef.current.originalParams.virtual, extendWith);\n }\n };\n if (!swiperElRef.current) {\n initSwiper();\n }\n\n // Listen for breakpoints change\n if (swiperRef.current) {\n swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint);\n }\n const attachEvents = () => {\n if (eventsAssigned || !events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.on(eventName, events[eventName]);\n });\n };\n const detachEvents = () => {\n if (!events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.off(eventName, events[eventName]);\n });\n };\n useEffect(() => {\n return () => {\n if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint);\n };\n });\n\n // set initialized flag\n useEffect(() => {\n if (!initializedRef.current && swiperRef.current) {\n swiperRef.current.emitSlidesClasses();\n initializedRef.current = true;\n }\n });\n\n // mount swiper\n useIsomorphicLayoutEffect(() => {\n if (externalElRef) {\n externalElRef.current = swiperElRef.current;\n }\n if (!swiperElRef.current) return;\n if (swiperRef.current.destroyed) {\n initSwiper();\n }\n mountSwiper({\n el: swiperElRef.current,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n paginationEl: paginationElRef.current,\n scrollbarEl: scrollbarElRef.current,\n swiper: swiperRef.current\n }, swiperParams);\n if (onSwiper) onSwiper(swiperRef.current);\n // eslint-disable-next-line\n return () => {\n if (swiperRef.current && !swiperRef.current.destroyed) {\n swiperRef.current.destroy(true, false);\n }\n };\n }, []);\n\n // watch for params change\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, c => c.key);\n oldPassedParamsRef.current = passedParams;\n oldSlides.current = slides;\n if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) {\n updateSwiper({\n swiper: swiperRef.current,\n slides,\n passedParams,\n changedParams,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n scrollbarEl: scrollbarElRef.current,\n paginationEl: paginationElRef.current\n });\n }\n return () => {\n detachEvents();\n };\n });\n\n // update on virtual update\n useIsomorphicLayoutEffect(() => {\n updateOnVirtualData(swiperRef.current);\n }, [virtualData]);\n\n // bypass swiper instance to slides\n function renderSlides() {\n if (swiperParams.virtual) {\n return renderVirtual(swiperRef.current, slides, virtualData);\n }\n return slides.map((child, index) => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper: swiperRef.current,\n swiperSlideIndex: index\n });\n });\n }\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: swiperElRef,\n className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`)\n }, restProps), /*#__PURE__*/React.createElement(SwiperContext.Provider, {\n value: swiperRef.current\n }, slots['container-start'], /*#__PURE__*/React.createElement(WrapperTag, {\n className: wrapperClass(swiperParams.wrapperClass)\n }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n ref: prevElRef,\n className: \"swiper-button-prev\"\n }), /*#__PURE__*/React.createElement(\"div\", {\n ref: nextElRef,\n className: \"swiper-button-next\"\n })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollbarElRef,\n className: \"swiper-scrollbar\"\n }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: paginationElRef,\n className: \"swiper-pagination\"\n }), slots['container-end']));\n});\nSwiper.displayName = 'Swiper';\n\nconst SwiperSlide = /*#__PURE__*/forwardRef(function (_temp, externalRef) {\n let {\n tag: Tag = 'div',\n children,\n className = '',\n swiper,\n zoom,\n lazy,\n virtualIndex,\n swiperSlideIndex,\n ...rest\n } = _temp === void 0 ? {} : _temp;\n const slideElRef = useRef(null);\n const [slideClasses, setSlideClasses] = useState('swiper-slide');\n const [lazyLoaded, setLazyLoaded] = useState(false);\n function updateClasses(_s, el, classNames) {\n if (el === slideElRef.current) {\n setSlideClasses(classNames);\n }\n }\n useIsomorphicLayoutEffect(() => {\n if (typeof swiperSlideIndex !== 'undefined') {\n slideElRef.current.swiperSlideIndex = swiperSlideIndex;\n }\n if (externalRef) {\n externalRef.current = slideElRef.current;\n }\n if (!slideElRef.current || !swiper) {\n return;\n }\n if (swiper.destroyed) {\n if (slideClasses !== 'swiper-slide') {\n setSlideClasses('swiper-slide');\n }\n return;\n }\n swiper.on('_slideClass', updateClasses);\n // eslint-disable-next-line\n return () => {\n if (!swiper) return;\n swiper.off('_slideClass', updateClasses);\n };\n });\n useIsomorphicLayoutEffect(() => {\n if (swiper && slideElRef.current && !swiper.destroyed) {\n setSlideClasses(swiper.getSlideClasses(slideElRef.current));\n }\n }, [swiper]);\n const slideData = {\n isActive: slideClasses.indexOf('swiper-slide-active') >= 0,\n isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0,\n isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0,\n isNext: slideClasses.indexOf('swiper-slide-next') >= 0\n };\n const renderChildren = () => {\n return typeof children === 'function' ? children(slideData) : children;\n };\n const onLoad = () => {\n setLazyLoaded(true);\n };\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: slideElRef,\n className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`),\n \"data-swiper-slide-index\": virtualIndex,\n onLoad: onLoad\n }, rest), zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {\n value: slideData\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-zoom-container\",\n \"data-swiper-zoom\": typeof zoom === 'number' ? zoom : undefined\n }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-lazy-preloader\"\n }))), !zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {\n value: slideData\n }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-lazy-preloader\"\n })));\n});\nSwiperSlide.displayName = 'SwiperSlide';\n\nexport { Swiper, SwiperSlide, useSwiper, useSwiperSlide };\n","import { e as extend, p as paramsList, i as isObject, n as needsNavigation, a as needsPagination, b as needsScrollbar } from './update-swiper.mjs';\nimport { d as defaults } from './swiper-core.mjs';\n\nfunction getParams(obj, splitEvents) {\n if (obj === void 0) {\n obj = {};\n }\n if (splitEvents === void 0) {\n splitEvents = true;\n }\n const params = {\n on: {}\n };\n const events = {};\n const passedParams = {};\n extend(params, defaults);\n params._emitClasses = true;\n params.init = false;\n const rest = {};\n const allowedParams = paramsList.map(key => key.replace(/_/, ''));\n const plainObj = Object.assign({}, obj);\n Object.keys(plainObj).forEach(key => {\n if (typeof obj[key] === 'undefined') return;\n if (allowedParams.indexOf(key) >= 0) {\n if (isObject(obj[key])) {\n params[key] = {};\n passedParams[key] = {};\n extend(params[key], obj[key]);\n extend(passedParams[key], obj[key]);\n } else {\n params[key] = obj[key];\n passedParams[key] = obj[key];\n }\n } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {\n if (splitEvents) {\n events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n } else {\n params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n }\n } else {\n rest[key] = obj[key];\n }\n });\n ['navigation', 'pagination', 'scrollbar'].forEach(key => {\n if (params[key] === true) params[key] = {};\n if (params[key] === false) delete params[key];\n });\n return {\n params,\n passedParams,\n rest,\n events\n };\n}\n\nfunction mountSwiper(_ref, swiperParams) {\n let {\n el,\n nextEl,\n prevEl,\n paginationEl,\n scrollbarEl,\n swiper\n } = _ref;\n if (needsNavigation(swiperParams) && nextEl && prevEl) {\n swiper.params.navigation.nextEl = nextEl;\n swiper.originalParams.navigation.nextEl = nextEl;\n swiper.params.navigation.prevEl = prevEl;\n swiper.originalParams.navigation.prevEl = prevEl;\n }\n if (needsPagination(swiperParams) && paginationEl) {\n swiper.params.pagination.el = paginationEl;\n swiper.originalParams.pagination.el = paginationEl;\n }\n if (needsScrollbar(swiperParams) && scrollbarEl) {\n swiper.params.scrollbar.el = scrollbarEl;\n swiper.originalParams.scrollbar.el = scrollbarEl;\n }\n swiper.init(el);\n}\n\nfunction getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) {\n const keys = [];\n if (!oldParams) return keys;\n const addKey = key => {\n if (keys.indexOf(key) < 0) keys.push(key);\n };\n if (children && oldChildren) {\n const oldChildrenKeys = oldChildren.map(getKey);\n const childrenKeys = children.map(getKey);\n if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children');\n if (oldChildren.length !== children.length) addKey('children');\n }\n const watchParams = paramsList.filter(key => key[0] === '_').map(key => key.replace(/_/, ''));\n watchParams.forEach(key => {\n if (key in swiperParams && key in oldParams) {\n if (isObject(swiperParams[key]) && isObject(oldParams[key])) {\n const newKeys = Object.keys(swiperParams[key]);\n const oldKeys = Object.keys(oldParams[key]);\n if (newKeys.length !== oldKeys.length) {\n addKey(key);\n } else {\n newKeys.forEach(newKey => {\n if (swiperParams[key][newKey] !== oldParams[key][newKey]) {\n addKey(key);\n }\n });\n oldKeys.forEach(oldKey => {\n if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);\n });\n }\n } else if (swiperParams[key] !== oldParams[key]) {\n addKey(key);\n }\n }\n });\n return keys;\n}\n\nconst updateOnVirtualData = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return;\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) {\n swiper.parallax.setTranslate();\n }\n};\n\nexport { getChangedParams as a, getParams as g, mountSwiper as m, updateOnVirtualData as u };\n","import React, {Fragment, useState} from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport { List, ListItem, ListButton, Icon, Page, Navbar, NavRight, BlockTitle, Toggle, Range, Link } from 'framework7-react';\nimport { Swiper, SwiperSlide } from 'swiper/react';\nimport {f7} from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport {CustomColorPicker, ThemeColorPalette} from \"../../../../../common/mobile/lib/component/ThemeColorPalette.jsx\";\n\nconst PageCustomFillColor = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n let fillColor = props.storeChartSettings.fillColor;\n if (typeof fillColor === 'object') {\n fillColor = fillColor.color;\n }\n const onAddNewColor = (colors, color) => {\n props.storePalette.changeCustomColors(colors);\n props.onFillColor(color);\n props.storeChartSettings.setFillColor(color);\n props.f7router.back();\n };\n return(\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n )\n};\n\nconst PaletteFill = inject(\"storeFocusObjects\", \"storeChartSettings\", \"storePalette\")(observer(props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const storeChartSettings = props.storeChartSettings;\n const shapeProperties = props.storeFocusObjects.shapeObject.get_ShapeProperties();\n const curFillColor = storeChartSettings.fillColor ? storeChartSettings.fillColor : storeChartSettings.getFillColor(shapeProperties);\n const customColors = props.storePalette.customColors;\n const changeColor = (color, effectId, effectValue) => {\n if (color !== 'empty') {\n if (effectId !==undefined ) {\n const newColor = {color: color, effectId: effectId, effectValue: effectValue};\n props.onFillColor(newColor);\n storeChartSettings.setFillColor(newColor);\n } else {\n props.onFillColor(color);\n storeChartSettings.setFillColor(color);\n }\n } else {\n // open custom color menu\n props.f7router.navigate('/edit-chart-custom-fill-color/', {props: {onFillColor: props.onFillColor}});\n }\n };\n return(\n \n \n \n \n \n \n )\n}));\n\nconst PageCustomBorderColor = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n let borderColor = props.storeChartSettings.borderColor;\n if (typeof borderColor === 'object') {\n borderColor = borderColor.color;\n }\n const onAddNewColor = (colors, color) => {\n props.storePalette.changeCustomColors(colors);\n props.onBorderColor(color);\n props.storeChartSettings.setBorderColor(color);\n props.f7router.back();\n };\n return(\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n )\n};\n\nconst PageBorderColor = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const borderColor = props.storeChartSettings.borderColor;\n const customColors = props.storePalette.customColors;\n const changeColor = (color, effectId, effectValue) => {\n if (color !== 'empty') {\n if (effectId !==undefined ) {\n const newColor = {color: color, effectId: effectId, effectValue: effectValue};\n props.onBorderColor(newColor);\n props.storeChartSettings.setBorderColor(newColor);\n } else {\n props.onBorderColor(color);\n props.storeChartSettings.setBorderColor(color);\n }\n } else {\n // open custom color menu\n props.f7router.navigate('/edit-chart-custom-border-color/', {props: {onBorderColor: props.onBorderColor}});\n }\n };\n return(\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n \n \n \n )\n};\n\nconst PageChartType = props => {\n const { t } = useTranslation();\n const storeChartSettings = props.storeChartSettings;\n const types = storeChartSettings.types;\n const countSlides = Math.floor(types.length / 3);\n const arraySlides = Array(countSlides).fill(countSlides);\n const storeFocusObjects = props.storeFocusObjects;\n const chartProperties = storeFocusObjects.chartObject && storeFocusObjects.chartObject.get_ChartProperties();\n const curType = chartProperties && chartProperties.getType();\n\n return (\n \n \n\n
          \n
          \n {types && types.length ? (\n \n {arraySlides.map((_, indexSlide) => {\n let typesSlide = types.slice(indexSlide * 3, (indexSlide * 3) + 3);\n\n return (\n \n {typesSlide.map((row, rowIndex) => {\n return (\n
            \n {row.map((type, index) => {\n return (\n
          • {props.onType(type.type)}}>\n
            \n
            \n
          • \n )\n })}\n
          \n )\n })}\n
          \n )\n })}\n
          \n ) : null}\n
          \n
          \n
          \n )\n}\n\nconst PageChartStyle = props => {\n const { t } = useTranslation();\n const storeChartSettings = props.storeChartSettings;\n const styles = storeChartSettings.styles;\n const chartStyles = storeChartSettings.chartStyles;\n\n return (\n \n \n\n {chartStyles ? \n
          \n
          \n
            \n {styles ? styles.map((row, rowIndex) => {\n return (\n row.map((style, index)=>{\n return(\n
          • {props.onStyle(style.asc_getName())}}>\n \n
          • \n )\n })\n ) \n }) :
            {t('Edit.textNoStyles')}
            \n }\n
          \n
          \n
          \n : null}\n
          \n )\n}\n\nconst PageChartDesignFill = props => {\n const { t } = useTranslation();\n\n return (\n \n \n
          \n \n
          \n
          \n )\n}\n\nconst PageChartBorder = props => {\n const { t } = useTranslation();\n const storeChartSettings = props.storeChartSettings;\n const shapeObject = props.storeFocusObjects.shapeObject;\n\n let borderSize, borderType, borderColor;\n if (shapeObject) {\n const shapeStroke = shapeObject.get_ShapeProperties().get_stroke();\n borderSize = shapeStroke.get_width() * 72.0 / 25.4;\n borderType = shapeStroke.get_type();\n borderColor = !storeChartSettings.borderColor ? storeChartSettings.initBorderColor(shapeStroke) : storeChartSettings.borderColor;\n }\n\n // Init border size\n const borderSizeTransform = storeChartSettings.borderSizeTransform();\n const displayBorderSize = (borderType == Asc.c_oAscStrokeType.STROKE_NONE || borderType === undefined) ? 0 : borderSizeTransform.indexSizeByValue(borderSize);\n const displayTextBorderSize = (borderType == Asc.c_oAscStrokeType.STROKE_NONE || borderType === undefined) ? 0 : borderSizeTransform.sizeByValue(borderSize);\n const [stateBorderSize, setBorderSize] = useState(displayBorderSize);\n const [stateTextBorderSize, setTextBorderSize] = useState(displayTextBorderSize);\n\n // Init border color\n const displayBorderColor = borderColor !== 'transparent' ? `#${(typeof borderColor === \"object\" ? borderColor.color : borderColor)}` : borderColor;\n \n return (\n \n \n\n
          \n \n \n
          {t('Edit.textSize')}
          \n
          \n {setBorderSize(value); setTextBorderSize(borderSizeTransform.sizeByIndex(value));}}\n onRangeChanged={(value) => {props.onBorderSize(borderSizeTransform.sizeByIndex(value))}}\n >\n
          \n
          \n {stateTextBorderSize + ' ' + Common.Utils.Metric.getMetricName(Common.Utils.Metric.c_MetricUnits.pt)}\n
          \n
          \n \n \n \n
          \n
          \n
          \n )\n}\n\nconst PageDesign = props => {\n const { t } = useTranslation();\n const chartProperties = props.storeFocusObjects.chartObject ? props.storeFocusObjects.chartObject.get_ChartProperties() : null;\n\n // console.log(chartStyles, curType);\n // console.log(Asc.c_oAscChartTypeSettings.comboBarLine, Asc.c_oAscChartTypeSettings.comboBarLineSecondary, Asc.c_oAscChartTypeSettings.comboAreaBar, Asc.c_oAscChartTypeSettings.comboCustom);\n\n if (!chartProperties && Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n \n \n \n \n \n \n \n )\n};\n\nconst PageWrap = props => {\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const storeChartSettings = props.storeChartSettings;\n const chartObject = props.storeFocusObjects.chartObject;\n let wrapType, align, moveText, overlap, distance;\n if (chartObject) {\n wrapType = storeChartSettings.getWrapType(chartObject);\n align = storeChartSettings.getAlign(chartObject);\n moveText = storeChartSettings.getMoveText(chartObject);\n overlap = storeChartSettings.getOverlap(chartObject);\n distance = Common.Utils.Metric.fnRecalcFromMM(storeChartSettings.getWrapDistance(chartObject));\n }\n const metricText = Common.Utils.Metric.getCurrentMetricName();\n const [stateDistance, setDistance] = useState(distance);\n if (!chartObject && Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {props.onWrapType('inline')}}>\n {!isAndroid && }\n \n {props.onWrapType('square')}}>\n {!isAndroid && }\n \n {props.onWrapType('tight')}}>\n {!isAndroid && }\n \n {props.onWrapType('through')}}>\n {!isAndroid && }\n \n {props.onWrapType('top-bottom')}}>\n {!isAndroid && }\n \n {props.onWrapType('infront')}}>\n {!isAndroid && }\n \n {props.onWrapType('behind')}}>\n {!isAndroid && }\n \n \n {\n wrapType !== 'inline' &&\n \n {_t.textAlign}\n \n \n \n \n \n \n }\n \n \n {props.onMoveText(!moveText)}}/>\n \n \n {props.onOverlap(!overlap)}}/>\n \n \n {\n ('behind' !== wrapType && 'infront' !== wrapType) &&\n \n {_t.textDistanceFromText}\n \n \n
          \n {setDistance(value)}}\n onRangeChanged={(value) => {props.onWrapDistance(value)}}\n >\n
          \n
          \n {stateDistance + ' ' + metricText}\n
          \n
          \n
          \n
          \n }\n
          \n )\n};\n\nconst PageReorder = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const chartObject = props.storeFocusObjects.chartObject;\n if (!chartObject && Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {props.onReorder('all-up')}} link='#' className='no-indicator'>\n \n \n {props.onReorder('all-down')}} link='#' className='no-indicator'>\n \n \n {props.onReorder('move-up')}} link='#' className='no-indicator'>\n \n \n {props.onReorder('move-down')}} link='#' className='no-indicator'>\n \n \n \n \n )\n};\n\nconst EditChart = props => {\n const { t } = useTranslation();\n\n return (\n \n \n \n \n \n \n \n {props.onRemoveChart()}} className='button-red button-fill button-raised'/>\n \n \n )\n};\n\nconst PageChartDesign = inject(\"storeChartSettings\", \"storeFocusObjects\")(observer(PageDesign));\nconst PageChartDesignType = inject(\"storeChartSettings\", \"storeFocusObjects\")(observer(PageChartType));\nconst PageChartDesignStyle = inject(\"storeChartSettings\")(observer(PageChartStyle));\nconst PageChartDesignBorder = inject(\"storeChartSettings\", \"storeFocusObjects\")(observer(PageChartBorder));\nconst PageChartWrap = inject(\"storeChartSettings\", \"storeFocusObjects\")(observer(PageWrap));\nconst PageChartReorder = inject(\"storeFocusObjects\")(observer(PageReorder));\nconst PageChartCustomFillColor = inject(\"storeChartSettings\", \"storePalette\")(observer(PageCustomFillColor));\nconst PageChartBorderColor = inject(\"storeChartSettings\", \"storePalette\")(observer(PageBorderColor));\nconst PageChartCustomBorderColor = inject(\"storeChartSettings\", \"storePalette\")(observer(PageCustomBorderColor));\n\nexport {EditChart,\n PageChartDesign,\n PageChartDesignType,\n PageChartDesignStyle,\n PageChartDesignFill,\n PageChartDesignBorder,\n PageChartCustomFillColor,\n PageChartBorderColor,\n PageChartCustomBorderColor,\n PageChartWrap,\n PageChartReorder}","import React, {Fragment, useEffect, useState } from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport {f7, View, List, ListItem, Icon, Row, Button, Page, Navbar, NavRight, Segmented, BlockTitle, Link, ListButton, Toggle, Actions, ActionsButton, ActionsGroup} from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from '../../../../../common/mobile/utils/device';\n\nconst EditTableContents = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const api = Common.EditorApi.get();\n const propsTableContents = api.asc_GetTableOfContentsPr();\n const stylesCount = propsTableContents.get_StylesCount();\n const [type, setType] = useState(0);\n const [styleValue, setStyleValue] = useState(propsTableContents.get_StylesType());\n const [pageNumbers, setPageNumbers] = useState(propsTableContents.get_ShowPageNumbers());\n const [rightAlign, setRightAlign] = useState(propsTableContents.get_RightAlignTab());\n const [leaderValue, setLeaderValue] = useState(propsTableContents.get_TabLeader() ? propsTableContents.get_TabLeader() : Asc.c_oAscTabLeader.Dot);\n\n const arrStyles = (type === 1) ? [\n { displayValue: t('Edit.textCurrent'), value: Asc.c_oAscTOFStylesType.Current },\n { displayValue: t('Edit.textSimple'), value: Asc.c_oAscTOFStylesType.Simple },\n { displayValue: t('Edit.textOnline'), value: Asc.c_oAscTOFStylesType.Web },\n { displayValue: t('Edit.textClassic'), value: Asc.c_oAscTOFStylesType.Classic },\n { displayValue: t('Edit.textDistinctive'), value: Asc.c_oAscTOFStylesType.Distinctive },\n { displayValue: t('Edit.textCentered'), value: Asc.c_oAscTOFStylesType.Centered },\n { displayValue: t('Edit.textFormal'), value: Asc.c_oAscTOFStylesType.Formal }\n ] : [\n { displayValue: t('Edit.textSimple'), value: Asc.c_oAscTOCStylesType.Simple },\n { displayValue: t('Edit.textOnline'), value: Asc.c_oAscTOCStylesType.Web },\n { displayValue: t('Edit.textStandard'), value: Asc.c_oAscTOCStylesType.Standard },\n { displayValue: t('Edit.textModern'), value: Asc.c_oAscTOCStylesType.Modern },\n { displayValue: t('Edit.textClassic'), value: Asc.c_oAscTOCStylesType.Classic }\n ];\n\n const arrLeaders = [\n { value: Asc.c_oAscTabLeader.None, displayValue: t('Edit.textNone') },\n { value: Asc.c_oAscTabLeader.Dot, displayValue: '....................' },\n { value: Asc.c_oAscTabLeader.Hyphen, displayValue: '-----------------' },\n { value: Asc.c_oAscTabLeader.Underscore,displayValue: '__________' }\n ];\n\n const activeStyle = arrStyles.find(style => style.value === styleValue);\n const activeLeader = arrLeaders.find(leader => leader.value === leaderValue);\n\n const openActionsButtonsRefresh = () => {\n f7.actions.create({\n buttons: [\n [\n {\n text: t('Edit.textRefreshEntireTable'),\n onClick: () => props.onUpdateTableContents('all')\n },\n {\n text: t('Edit.textRefreshPageNumbersOnly'),\n onClick: () => props.onUpdateTableContents('pages')\n }\n ],\n [\n {\n text: t('Edit.textCancel'),\n bold: true\n }\n ]\n ]\n }).open();\n }\n\n return (\n \n \n \n \n \n \n {t('Edit.textPageNumbers')}\n {\n setPageNumbers(!pageNumbers);\n props.onPageNumbers(!pageNumbers);\n }}>\n \n {pageNumbers && \n \n {t('Edit.textRightAlign')}\n {\n setRightAlign(!rightAlign);\n props.onRightAlign(!rightAlign);\n }}>\n \n }\n {(pageNumbers && rightAlign) &&\n \n }\n \n \n \n openActionsButtonsRefresh()} />\n props.onRemoveTableContents()} />\n \n \n )\n};\n\nconst PageEditStylesTableContents = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const [styleValue, setStyleValue] = useState(props.styleValue);\n const widthImage = !Device.phone ? '330px' : window.innerWidth - 30 + 'px';\n\n useEffect(() => {\n props.getStylesImages();\n }, []);\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {props.arrStyles.map((style, index) => {\n return (\n
          {\n setStyleValue(style.value); \n props.setStyleValue(style.value);\n props.onStyle(style.value)\n }}>\n {style.displayValue}\n
          \n \n
          \n
          \n )\n })}\n
          \n
          \n )\n}\n\nconst PageEditLeaderTableContents = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const [leaderValue, setLeaderValue] = useState(props.leaderValue);\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {props.arrLeaders.map((leader, index) => {\n return (\n {\n setLeaderValue(leader.value);\n props.setLeaderValue(leader.value);\n props.onLeader(leader.value);\n }}>\n )\n })}\n \n \n )\n}\n\nconst PageEditStructureTableContents = props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const isAndroid = Device.android;\n const api = Common.EditorApi.get();\n const propsTableContents = api.asc_GetTableOfContentsPr();\n const {styles, end, count} = props.fillTOCProps(propsTableContents);\n const chosenStyles = styles.filter(style => style.checked);\n \n const [structure, setStructure] = useState(count ? 1 : 0);\n const [amountLevels, setAmountLevels] = useState(end);\n\n const addNewStyle = (style) => {\n let indexStyle = chosenStyles.findIndex(currentStyle => currentStyle.name === style.name);\n\n if(indexStyle === -1) { \n chosenStyles.push(style); \n }\n }\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n setStructure(0)}>\n setStructure(1)}>\n \n {structure === 0 ?\n \n \n {!isAndroid &&
          {amountLevels === -1 ? '-' : amountLevels}
          }\n
          \n \n \n {isAndroid && }\n \n \n
          \n
          \n
          \n : \n \n {styles.map((style, index) => {\n return (\n = 1}>\n {!isAndroid &&
          {style.value === 0 ? '' : style.value}
          }\n
          \n \n \n {isAndroid && }\n \n \n
          \n
          \n )\n })}\n
          \n }\n
          \n )\n}\n\nexport {\n EditTableContents,\n PageEditStylesTableContents,\n PageEditLeaderTableContents,\n PageEditStructureTableContents\n};","import React, {Component} from 'react';\nimport { EditText } from '../../view/edit/EditText'\nimport { inject, observer } from 'mobx-react';\n\nclass EditTextController extends Component {\n constructor(props) {\n super(props);\n this.onApiFocusObject = this.onApiFocusObject.bind(this);\n this.updateBulletsNumbers = this.updateBulletsNumbers.bind(this);\n this.updateListType = this.updateListType.bind(this);\n }\n\n componentDidMount() {\n const api = Common.EditorApi.get();\n api && api.UpdateInterfaceState();\n api.asc_registerCallback('asc_onFocusObject', this.onApiFocusObject);\n }\n\n componentWillUnmount() {\n const api = Common.EditorApi.get();\n api.asc_unregisterCallback('asc_onFocusObject', this.onApiFocusObject);\n }\n\n changeFontSize(curSize, isDecrement) {\n const api = Common.EditorApi.get();\n if (api) {\n let size = curSize;\n if (isDecrement) {\n typeof size === 'undefined' ? api.FontSizeOut() : size = Math.max(1, --size);\n } else {\n typeof size === 'undefined' ? api.FontSizeIn() : size = Math.min(300, ++size);\n }\n if (typeof size !== 'undefined') {\n api.put_TextPrFontSize(size);\n }\n }\n }\n\n changeFontFamily(name) {\n const api = Common.EditorApi.get();\n if (api && name) {\n api.put_TextPrFontName(name);\n }\n }\n\n onTextColorAuto() {\n const api = Common.EditorApi.get();\n const color = new Asc.asc_CColor();\n color.put_auto(true);\n api.put_TextColor(color);\n }\n\n onTextColor(color) {\n const api = Common.EditorApi.get();\n api.put_TextColor(Common.Utils.ThemeColor.getRgbColor(color));\n }\n\n onHighlightColor(strColor) {\n const api = Common.EditorApi.get();\n \n if (strColor == 'transparent') {\n api.SetMarkerFormat(true, false);\n } else {\n let r = strColor[0] + strColor[1],\n g = strColor[2] + strColor[3],\n b = strColor[4] + strColor[5];\n\n api.SetMarkerFormat(true, true, parseInt(r, 16), parseInt(g, 16), parseInt(b, 16));\n }\n }\n\n toggleBold(value) {\n const api = Common.EditorApi.get();\n if (api) {\n api.put_TextPrBold(value);\n }\n }\n\n toggleItalic(value) {\n const api = Common.EditorApi.get();\n if (api) {\n api.put_TextPrItalic(value);\n }\n }\n\n toggleUnderline(value) {\n const api = Common.EditorApi.get();\n if (api) {\n api.put_TextPrUnderline(value);\n }\n }\n\n toggleStrikethrough(value) {\n const api = Common.EditorApi.get();\n if (api) {\n api.put_TextPrStrikeout(value);\n }\n }\n\n // Additional\n\n onAdditionalStrikethrough(type, value) {\n const api = Common.EditorApi.get();\n if (api) {\n if ('strikeout' === type) {\n api.put_TextPrStrikeout(value);\n } else {\n api.put_TextPrDStrikeout(value);\n }\n }\n }\n\n onAdditionalCaps(type, value) {\n const api = Common.EditorApi.get();\n if (api) {\n const paragraphProps = new Asc.asc_CParagraphProperty();\n if ('small' === type) {\n paragraphProps.put_AllCaps(false);\n paragraphProps.put_SmallCaps(value);\n } else {\n paragraphProps.put_AllCaps(value);\n paragraphProps.put_SmallCaps(false);\n }\n api.paraApply(paragraphProps);\n }\n }\n\n onAdditionalScript(type, value) {\n const api = Common.EditorApi.get();\n if (api) {\n if ('superscript' === type) {\n api.put_TextPrBaseline(value ? Asc.vertalign_SuperScript : Asc.vertalign_Baseline);\n } else {\n api.put_TextPrBaseline(value ? Asc.vertalign_SubScript : Asc.vertalign_Baseline);\n }\n }\n }\n\n changeLetterSpacing(curSpacing, isDecrement) {\n const api = Common.EditorApi.get();\n if (api) {\n let spacing = curSpacing;\n if (isDecrement) {\n spacing = Math.max(-100, --spacing);\n } else {\n spacing = Math.min(100, ++spacing);\n }\n const properties = new Asc.asc_CParagraphProperty();\n properties.put_TextSpacing(Common.Utils.Metric.fnRecalcToMM(spacing));\n api.paraApply(properties);\n }\n }\n\n onParagraphAlign(type) {\n const api = Common.EditorApi.get();\n if (api) {\n let value;\n switch (type) {\n case 'just':\n value = 3;\n break;\n case 'right':\n value = 0;\n break;\n case 'center':\n value = 2;\n break;\n default:\n value = 1;\n break;\n }\n api.put_PrAlign(value);\n }\n }\n\n onParagraphMove(isLeft) {\n const api = Common.EditorApi.get();\n if (api) {\n if (isLeft) {\n api.DecreaseIndent();\n } else {\n api.IncreaseIndent();\n }\n }\n }\n\n onLineSpacing(value) {\n const api = Common.EditorApi.get();\n if (api) {\n const LINERULE_AUTO = 1;\n api.put_PrLineSpacing(LINERULE_AUTO, value);\n }\n }\n\n onBullet(numberingInfo) {\n const api = Common.EditorApi.get();\n if (api) {\n api.put_ListTypeCustom(JSON.parse(numberingInfo));\n }\n }\n\n onNumber(numberingInfo) {\n const api = Common.EditorApi.get();\n if (api) {\n api.put_ListTypeCustom(JSON.parse(numberingInfo));\n }\n }\n\n onMultiLevelList(numberingInfo) {\n const api = Common.EditorApi.get();\n if (api) api.put_ListTypeCustom(JSON.parse(numberingInfo));\n }\n\n getIconsBulletsAndNumbers(arrayElements, type) {\n const api = Common.EditorApi.get();\n const arr = [];\n\n arrayElements.forEach( item => {\n arr.push({\n numberingInfo: JSON.parse(item.numberingInfo),\n divId: item.id\n });\n });\n\n if (api) api.SetDrawImagePreviewBulletForMenu(arr, type);\n }\n\n updateBulletsNumbers(type) {\n const api = Common.EditorApi.get();\n const storeTextSettings = this.props.storeTextSettings;\n let subtype = undefined;\n let arrayElements = (type===0) ? storeTextSettings.getBulletsList() : (type===1) ? storeTextSettings.getNumbersList() : storeTextSettings.getMultiLevelList();\n\n for (let i=0; i 0 && api.asc_IsCurrentNumberingPreset(arrayElements[i].numberingInfo, type!==2)) {\n subtype = arrayElements[i].subtype;\n break;\n }\n }\n\n switch (type) {\n case 0:\n storeTextSettings.resetBullets(subtype);\n break;\n case 1:\n storeTextSettings.resetNumbers(subtype);\n break;\n case 2:\n storeTextSettings.resetMultiLevel(subtype);\n break;\n }\n }\n\n updateListType() {\n const api = Common.EditorApi.get();\n const listId = api.asc_GetCurrentNumberingId();\n const numformat = (listId !== null) ? api.asc_GetNumberingPr(listId).get_Lvl(api.asc_GetCurrentNumberingLvl()).get_Format() : Asc.c_oAscNumberingFormat.None;\n\n this.props.storeTextSettings.resetListType(numformat===Asc.c_oAscNumberingFormat.Bullet ? 0 : (numformat===Asc.c_oAscNumberingFormat.None ? -1 : 1));\n }\n\n onApiFocusObject() {\n this.updateListType();\n this.updateBulletsNumbers(0);\n this.updateBulletsNumbers(1);\n this.updateBulletsNumbers(2);\n }\n\n setOrientationTextShape(direction) {\n const api = Common.EditorApi.get();\n const properties = new Asc.asc_CImgProperty();\n\n properties.put_Vert(direction);\n api.ImgApply(properties);\n }\n\n render() {\n return (\n \n )\n }\n}\n\nexport default inject('storeTextSettings')(observer(EditTextController));","import React, {Component} from 'react';\nimport { EditParagraph } from '../../view/edit/EditParagraph';\nimport {observer, inject} from \"mobx-react\";\n\nclass EditParagraphController extends Component {\n constructor (props) {\n super(props);\n props.storeParagraphSettings.setBackColor(undefined);\n\n this.onStyleClick = this.onStyleClick.bind(this);\n this.onSaveStyle = this.onSaveStyle.bind(this);\n this.onStyleMenuDelete = this.onStyleMenuDelete.bind(this);\n }\n\n onStyleClick (name) {\n const api = Common.EditorApi.get();\n if (api) {\n api.put_Style(name);\n this.props.storeParagraphSettings.changeParaStyleName(name);\n }\n }\n\n onSaveStyle(title, nextParagraphStyle) {\n const api = Common.EditorApi.get();\n const style = api.asc_GetStyleFromFormatting();\n\n style.put_Name(title);\n style.put_Next(nextParagraphStyle ? nextParagraphStyle : null);\n \n api.asc_AddNewStyle(style);\n this.props.storeParagraphSettings.changeParaStyleName(title);\n }\n\n onStyleMenuDelete(styleName) {\n const api = Common.EditorApi.get();\n api.asc_RemoveStyle(styleName);\n }\n\n onDistanceBefore (distance, isDecrement) {\n const api = Common.EditorApi.get();\n if (api) {\n let step;\n let newDistance;\n if (Common.Utils.Metric.getCurrentMetric() == Common.Utils.Metric.c_MetricUnits.pt) {\n step = 1;\n } else {\n step = 0.01;\n }\n const maxValue = Common.Utils.Metric.fnRecalcFromMM(558.8);\n\n if (isDecrement) {\n newDistance = Math.max(-1, distance - step);\n } else {\n newDistance = Math.min(maxValue, distance + step);\n }\n\n api.put_LineSpacingBeforeAfter(0, (isDecrement && newDistance < 0) ? -1 : (!isDecrement && newDistance > -1 && newDistance < 0) ? 0 : Common.Utils.Metric.fnRecalcToMM(newDistance));\n }\n }\n\n onDistanceAfter (distance, isDecrement) {\n const api = Common.EditorApi.get();\n if (api) {\n let step;\n let newDistance;\n if (Common.Utils.Metric.getCurrentMetric() === Common.Utils.Metric.c_MetricUnits.pt) {\n step = 1;\n } else {\n step = 0.01;\n }\n\n const maxValue = Common.Utils.Metric.fnRecalcFromMM(558.8);\n\n if (isDecrement) {\n newDistance = Math.max(-1, distance - step);\n } else {\n newDistance = Math.min(maxValue, distance + step);\n }\n\n api.put_LineSpacingBeforeAfter(1, (isDecrement && newDistance < 0) ? -1 : (!isDecrement && newDistance > -1 && newDistance < 0) ? 0 : Common.Utils.Metric.fnRecalcToMM(newDistance));\n }\n }\n\n onSpinFirstLine (paragraphProperty, isDecrement) {\n const api = Common.EditorApi.get();\n if (api) {\n let distance = paragraphProperty.get_Ind().get_FirstLine();\n let step;\n distance = Common.Utils.Metric.fnRecalcFromMM(distance);\n\n if (Common.Utils.Metric.getCurrentMetric() === Common.Utils.Metric.c_MetricUnits.pt) {\n step = 1;\n } else {\n step = 0.1;\n }\n\n const minValue = Common.Utils.Metric.fnRecalcFromMM(-558.7);\n const maxValue = Common.Utils.Metric.fnRecalcFromMM(558.7);\n\n if (isDecrement) {\n distance = Math.max(minValue, distance - step);\n } else {\n distance = Math.min(maxValue, distance + step);\n }\n\n var newParagraphProp = new Asc.asc_CParagraphProperty();\n newParagraphProp.get_Ind().put_FirstLine(Common.Utils.Metric.fnRecalcToMM(distance));\n api.paraApply(newParagraphProp);\n }\n }\n\n onSpaceBetween (checked) {\n const api = Common.EditorApi.get();\n if (api) {\n api.put_AddSpaceBetweenPrg(checked);\n }\n }\n\n onBreakBefore (checked) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.asc_CParagraphProperty();\n properties.put_PageBreakBefore(checked);\n api.paraApply(properties);\n }\n }\n\n onOrphan (checked) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.asc_CParagraphProperty();\n properties.put_WidowControl(checked);\n api.paraApply(properties);\n }\n }\n\n onKeepTogether (checked) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.asc_CParagraphProperty();\n properties.put_KeepLines(checked);\n api.paraApply(properties);\n }\n }\n\n onKeepNext (checked) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.asc_CParagraphProperty();\n properties.put_KeepNext(checked);\n api.paraApply(properties);\n }\n }\n\n onBackgroundColor (color) {\n const api = Common.EditorApi.get();\n \n if (color == 'transparent') {\n api.put_ParagraphShade(false);\n } else {\n api.put_ParagraphShade(true, Common.Utils.ThemeColor.getRgbColor(color));\n }\n \n }\n\n render () {\n return (\n \n )\n }\n}\n\nexport default inject(\"storeParagraphSettings\")(observer(EditParagraphController));","import React, {Component} from 'react';\nimport { f7 } from 'framework7-react';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport {observer, inject} from \"mobx-react\";\n\nimport { EditShape } from '../../view/edit/EditShape'\n\nclass EditShapeController extends Component {\n constructor (props) {\n super(props);\n this.onWrapType = this.onWrapType.bind(this);\n this.onBorderSize = this.onBorderSize.bind(this);\n this.onBorderColor = this.onBorderColor.bind(this);\n\n this.props.storeShapeSettings.setFillColor(undefined);\n this.props.storeShapeSettings.setBorderColor(undefined);\n }\n\n onRemoveShape () {\n const api = Common.EditorApi.get();\n if (api) {\n api.asc_Remove();\n if ( Device.phone ) {\n f7.sheet.close('#edit-sheet', true);\n } else {\n f7.popover.close('#edit-popover');\n }\n }\n }\n\n onWrapType (type) {\n const api = Common.EditorApi.get();\n if (api) {\n const sdkType = this.props.storeShapeSettings.transformToSdkWrapType(type);\n const properties = new Asc.asc_CImgProperty();\n properties.put_WrappingStyle(sdkType);\n api.ImgApply(properties);\n }\n }\n\n onShapeAlign (type) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.asc_CImgProperty();\n properties.put_PositionH(new Asc.CImagePositionH());\n properties.get_PositionH().put_UseAlign(true);\n properties.get_PositionH().put_Align(type);\n properties.get_PositionH().put_RelativeFrom(Asc.c_oAscRelativeFromH.Page);\n api.ImgApply(properties);\n }\n }\n\n onMoveText (value) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.asc_CImgProperty();\n properties.put_PositionV(new Asc.CImagePositionV());\n properties.get_PositionV().put_UseAlign(true);\n properties.get_PositionV().put_RelativeFrom(value ? Asc.c_oAscRelativeFromV.Paragraph : Asc.c_oAscRelativeFromV.Page);\n api.ImgApply(properties);\n }\n }\n\n onOverlap (value) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.asc_CImgProperty();\n properties.put_AllowOverlap(value);\n api.ImgApply(properties);\n }\n }\n\n onWrapDistance (value) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.asc_CImgProperty();\n const paddings = new Asc.asc_CPaddings();\n const distance = Common.Utils.Metric.fnRecalcToMM(parseInt(value));\n paddings.put_Top(distance);\n paddings.put_Right(distance);\n paddings.put_Bottom(distance);\n paddings.put_Left(distance);\n properties.put_Paddings(paddings);\n api.ImgApply(properties);\n }\n }\n\n onReorder (type) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.asc_CImgProperty();\n if ('all-up' == type) {\n properties.put_ChangeLevel(Asc.c_oAscChangeLevel.BringToFront);\n } else if ('all-down' == type) {\n properties.put_ChangeLevel(Asc.c_oAscChangeLevel.SendToBack);\n } else if ('move-up' == type) {\n properties.put_ChangeLevel(Asc.c_oAscChangeLevel.BringForward);\n } else if ('move-down' == type) {\n properties.put_ChangeLevel(Asc.c_oAscChangeLevel.BringBackward);\n }\n api.ImgApply(properties);\n }\n }\n\n onReplace (type) {\n const api = Common.EditorApi.get();\n if (api) {\n api.ChangeShapeType(type);\n }\n }\n\n onFillColor (color) {\n const api = Common.EditorApi.get();\n const image = new Asc.asc_CImgProperty();\n const shape = new Asc.asc_CShapeProperty();\n const fill = new Asc.asc_CShapeFill();\n if (color == 'transparent') {\n fill.put_type(Asc.c_oAscFill.FILL_TYPE_NOFILL);\n fill.put_fill(null);\n } else {\n fill.put_type(Asc.c_oAscFill.FILL_TYPE_SOLID);\n fill.put_fill(new Asc.asc_CFillSolid());\n fill.get_fill().put_color(Common.Utils.ThemeColor.getRgbColor(color));\n }\n shape.put_fill(fill);\n image.put_ShapeProperties(shape);\n api.ImgApply(image);\n }\n\n onBorderSize (value) {\n const api = Common.EditorApi.get();\n\n const image = new Asc.asc_CImgProperty();\n const shape = new Asc.asc_CShapeProperty();\n const stroke = new Asc.asc_CStroke();\n\n const _borderColor = this.props.storeShapeSettings.borderColorView;\n\n if (value < 0.01) {\n stroke.put_type(Asc.c_oAscStrokeType.STROKE_NONE);\n } else {\n stroke.put_type(Asc.c_oAscStrokeType.STROKE_COLOR);\n if (_borderColor == 'transparent')\n stroke.put_color(Common.Utils.ThemeColor.getRgbColor({color: '000000', effectId: 29}));\n else\n stroke.put_color(Common.Utils.ThemeColor.getRgbColor(Common.Utils.ThemeColor.colorValue2EffectId(_borderColor)));\n stroke.put_width(value * 25.4 / 72.0);\n }\n\n shape.put_stroke(stroke);\n image.put_ShapeProperties(shape);\n\n api.ImgApply(image);\n this.props.storeShapeSettings.initBorderColorView(this.props.storeFocusObjects.shapeObject); // when select STROKE_NONE or change from STROKE_NONE to STROKE_COLOR\n }\n\n onBorderColor (color) {\n const api = Common.EditorApi.get();\n const currentShape = this.props.storeFocusObjects.shapeObject.get_ShapeProperties();\n if (currentShape && currentShape.get_stroke().get_type() == Asc.c_oAscStrokeType.STROKE_COLOR) {\n const image = new Asc.asc_CImgProperty();\n const shape = new Asc.asc_CShapeProperty();\n const stroke = new Asc.asc_CStroke();\n if (currentShape.get_stroke().get_width() < 0.01) {\n stroke.put_type(Asc.c_oAscStrokeType.STROKE_NONE);\n } else {\n stroke.put_type(Asc.c_oAscStrokeType.STROKE_COLOR);\n stroke.put_color(Common.Utils.ThemeColor.getRgbColor(color));\n stroke.put_width(currentShape.get_stroke().get_width());\n stroke.asc_putPrstDash(currentShape.get_stroke().asc_getPrstDash());\n }\n shape.put_stroke(stroke);\n image.put_ShapeProperties(shape);\n api.ImgApply(image);\n }\n }\n\n onOpacity (value) {\n const api = Common.EditorApi.get();\n const properties = new Asc.asc_CImgProperty();\n const fill = new Asc.asc_CShapeFill();\n const shape = new Asc.asc_CShapeProperty();\n fill.put_transparent(parseInt(value * 2.55));\n shape.put_fill(fill);\n properties.put_ShapeProperties(shape);\n api.ImgApply(properties);\n }\n\n render () {\n return (\n \n )\n }\n}\n\nexport default inject(\"storeShapeSettings\", \"storeFocusObjects\")(observer(EditShapeController));","import React, {Component} from 'react';\nimport { f7 } from 'framework7-react';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport {observer, inject} from \"mobx-react\";\n\nimport { EditImage } from '../../view/edit/EditImage'\n\nclass EditImageController extends Component {\n constructor (props) {\n super(props);\n this.onWrapType = this.onWrapType.bind(this);\n this.onRemoveImage = this.onRemoveImage.bind(this);\n this.onReplaceByFile = this.onReplaceByFile.bind(this);\n this.onReplaceByUrl = this.onReplaceByUrl.bind(this);\n }\n\n closeModal () {\n if ( Device.phone ) {\n f7.sheet.close('#edit-sheet', true);\n } else {\n f7.popover.close('#edit-popover');\n }\n }\n\n onDefaulSize () {\n const api = Common.EditorApi.get();\n if (api) {\n const imgSize = api.get_OriginalSizeImage();\n const properties = new Asc.asc_CImgProperty();\n properties.put_Width(imgSize.get_ImageWidth());\n properties.put_Height(imgSize.get_ImageHeight());\n properties.put_ResetCrop(true);\n properties.put_Rot(0);\n api.ImgApply(properties);\n }\n }\n\n onRemoveImage () {\n const api = Common.EditorApi.get();\n if (api) {\n api.asc_Remove();\n this.closeModal()\n }\n }\n\n onWrapType (type) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.asc_CImgProperty();\n const sdkType = this.props.storeImageSettings.transformToSdkWrapType(type);\n properties.put_WrappingStyle(sdkType);\n api.ImgApply(properties);\n }\n }\n\n onAlign (type) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.asc_CImgProperty();\n properties.put_PositionH(new Asc.CImagePositionH());\n properties.get_PositionH().put_UseAlign(true);\n properties.get_PositionH().put_Align(type);\n properties.get_PositionH().put_RelativeFrom(Asc.c_oAscRelativeFromH.Page);\n api.ImgApply(properties);\n }\n }\n\n onMoveText (value) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.asc_CImgProperty();\n properties.put_PositionV(new Asc.CImagePositionV());\n properties.get_PositionV().put_UseAlign(true);\n properties.get_PositionV().put_RelativeFrom(value ? Asc.c_oAscRelativeFromV.Paragraph : Asc.c_oAscRelativeFromV.Page);\n api.ImgApply(properties);\n }\n }\n\n onOverlap (value) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.asc_CImgProperty();\n properties.put_AllowOverlap(value);\n api.ImgApply(properties);\n }\n }\n\n onWrapDistance (value) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.asc_CImgProperty();\n const paddings = new Asc.asc_CPaddings();\n const distance = Common.Utils.Metric.fnRecalcToMM(parseInt(value));\n paddings.put_Top(distance);\n paddings.put_Right(distance);\n paddings.put_Bottom(distance);\n paddings.put_Left(distance);\n properties.put_Paddings(paddings);\n api.ImgApply(properties);\n }\n }\n\n onReplaceByFile () {\n const api = Common.EditorApi.get();\n if (api) {\n api.ChangeImageFromFile();\n this.closeModal();\n }\n }\n\n onReplaceByUrl (value) {\n const api = Common.EditorApi.get();\n if (api) {\n const image = new Asc.asc_CImgProperty();\n image.put_ImageUrl(value);\n api.ImgApply(image);\n this.closeModal();\n }\n }\n\n onReorder (type) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.asc_CImgProperty();\n if ('all-up' == type) {\n properties.put_ChangeLevel(Asc.c_oAscChangeLevel.BringToFront);\n } else if ('all-down' == type) {\n properties.put_ChangeLevel(Asc.c_oAscChangeLevel.SendToBack);\n } else if ('move-up' == type) {\n properties.put_ChangeLevel(Asc.c_oAscChangeLevel.BringForward);\n } else if ('move-down' == type) {\n properties.put_ChangeLevel(Asc.c_oAscChangeLevel.BringBackward);\n }\n api.ImgApply(properties);\n }\n }\n\n render () {\n return (\n \n )\n }\n}\n\nexport default inject(\"storeImageSettings\")(observer(EditImageController));","import React, {Component} from 'react';\nimport { f7 } from 'framework7-react';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport {observer, inject} from \"mobx-react\";\n\nimport { EditTable } from '../../view/edit/EditTable';\n\nclass EditTableController extends Component {\n constructor (props) {\n super(props);\n this.closeIfNeed = this.closeIfNeed.bind(this);\n this.onRemoveTable = this.onRemoveTable.bind(this);\n this.onAddColumnLeft = this.onAddColumnLeft.bind(this);\n this.onAddColumnRight = this.onAddColumnRight.bind(this);\n this.onAddRowAbove = this.onAddRowAbove.bind(this);\n this.onAddRowBelow = this.onAddRowBelow.bind(this);\n this.onRemoveColumn = this.onRemoveColumn.bind(this);\n this.onRemoveRow = this.onRemoveRow.bind(this);\n this.onWrapMoveText = this.onWrapMoveText.bind(this);\n this.onGetTableStylesPreviews = this.onGetTableStylesPreviews.bind(this);\n }\n closeIfNeed () {\n if (!this.props.storeFocusObjects.isTableInStack) {\n if ( Device.phone ) {\n f7.sheet.close('#edit-sheet', true);\n } else {\n f7.popover.close('#edit-popover');\n }\n }\n }\n onRemoveTable () {\n const api = Common.EditorApi.get();\n if (api) {\n api.remTable();\n this.closeIfNeed();\n }\n }\n onAddColumnLeft () {\n const api = Common.EditorApi.get();\n if (api) {\n api.addColumnLeft();\n this.closeIfNeed();\n }\n }\n onAddColumnRight () {\n const api = Common.EditorApi.get();\n if (api) {\n api.addColumnRight();\n this.closeIfNeed();\n }\n }\n onAddRowAbove () {\n const api = Common.EditorApi.get();\n if (api) {\n api.addRowAbove();\n this.closeIfNeed();\n }\n }\n onAddRowBelow () {\n const api = Common.EditorApi.get();\n if (api) {\n api.addRowBelow();\n this.closeIfNeed();\n }\n }\n onRemoveColumn () {\n const api = Common.EditorApi.get();\n if (api) {\n api.remColumn();\n this.closeIfNeed();\n }\n }\n onRemoveRow () {\n const api = Common.EditorApi.get();\n if (api) {\n api.remRow();\n this.closeIfNeed();\n }\n }\n onCellMargins (value) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.CTableProp();\n const margins = new Asc.CMargins();\n const val = Common.Utils.Metric.fnRecalcToMM(value);\n margins.put_Top(val);\n margins.put_Right(val);\n margins.put_Bottom(val);\n margins.put_Left(val);\n margins.put_Flag(2);\n properties.put_CellMargins(margins);\n api.tblApply(properties);\n }\n }\n onOptionRepeat (value) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.CTableProp();\n properties.put_RowsInHeader(value);\n api.tblApply(properties);\n }\n }\n onOptionResize (value) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.CTableProp();\n properties.put_TableLayout(value ? Asc.c_oAscTableLayout.AutoFit : Asc.c_oAscTableLayout.Fixed);\n api.tblApply(properties);\n }\n }\n onWrapType (value) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.CTableProp();\n properties.put_TableWrap(value);\n api.tblApply(properties);\n }\n }\n onWrapAlign (type) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.CTableProp();\n properties.put_TableAlignment(type);\n api.tblApply(properties);\n }\n }\n onWrapMoveText (value) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.CTableProp();\n const position = new Asc.CTablePositionV();\n position.put_UseAlign(false);\n position.put_RelativeFrom(value ? Asc.c_oAscVAnchor.Text : Asc.c_oAscVAnchor.Page);\n const tableObject = this.props.storeFocusObjects.tableObject;\n position.put_Value(tableObject.get_Value_Y(value ? Asc.c_oAscVAnchor.Text : Asc.c_oAscVAnchor.Page));\n properties.put_PositionV(position);\n api.tblApply(properties);\n }\n }\n onWrapDistance (value) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.CTableProp();\n const paddings = new Asc.asc_CPaddings();\n const distance = Common.Utils.Metric.fnRecalcToMM(parseInt(value));\n paddings.put_Top(distance);\n paddings.put_Right(distance);\n paddings.put_Bottom(distance);\n paddings.put_Left(distance);\n properties.put_TablePaddings(paddings);\n api.tblApply(properties);\n }\n }\n onStyleClick (type) {\n const api = Common.EditorApi.get();\n const properties = new Asc.CTableProp();\n properties.put_TableStyle(type.toString());\n api.tblApply(properties);\n }\n\n onCheckTemplateChange (tableLook, type, isChecked) {\n const api = Common.EditorApi.get();\n const properties = new Asc.CTableProp();\n switch (type) {\n case 0:\n tableLook.put_FirstRow(isChecked);\n break;\n case 1:\n tableLook.put_LastRow(isChecked);\n break;\n case 2:\n tableLook.put_BandHor(isChecked);\n break;\n case 3:\n tableLook.put_FirstCol(isChecked);\n break;\n case 4:\n tableLook.put_LastCol(isChecked);\n break;\n case 5:\n tableLook.put_BandVer(isChecked);\n break;\n }\n properties.put_TableLook(tableLook);\n api.tblApply(properties);\n }\n\n onGetTableStylesPreviews() {\n const api = Common.EditorApi.get();\n setTimeout(() => this.props.storeTableSettings.setStyles(api.asc_getTableStylesPreviews()), 1);\n }\n\n onFillColor (color) {\n const api = Common.EditorApi.get();\n const properties = new Asc.CTableProp();\n const background = new Asc.CBackground();\n properties.put_CellsBackground(background);\n if ('transparent' == color) {\n background.put_Value(1);\n } else {\n background.put_Value(0);\n background.put_Color(Common.Utils.ThemeColor.getRgbColor(color));\n }\n properties.put_CellSelect(true);\n api.tblApply(properties);\n }\n\n onBorderTypeClick (cellBorders) {\n const api = Common.EditorApi.get();\n const properties = new Asc.CTableProp();\n const _cellBorders = !cellBorders ? new Asc.CBorders() : cellBorders;\n properties.put_CellBorders(_cellBorders);\n properties.put_CellSelect(true);\n api.tblApply(properties);\n }\n\n render () {\n return (\n \n )\n }\n}\n\nexport default inject(\"storeFocusObjects\", \"storeTableSettings\")(observer(EditTableController));","import React, {Component} from 'react';\nimport { f7 } from 'framework7-react';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport {observer, inject} from \"mobx-react\";\n\nimport { EditChart } from '../../view/edit/EditChart'\n\nclass EditChartController extends Component {\n constructor (props) {\n super(props);\n this.onWrapType = this.onWrapType.bind(this);\n this.onType = this.onType.bind(this);\n this.onStyle = this.onStyle.bind(this);\n this.onBorderColor = this.onBorderColor.bind(this);\n this.onBorderSize = this.onBorderSize.bind(this);\n\n const type = props.storeFocusObjects.chartObject.get_ChartProperties().getType();\n if (type==Asc.c_oAscChartTypeSettings.comboBarLine ||\n type==Asc.c_oAscChartTypeSettings.comboBarLineSecondary ||\n type==Asc.c_oAscChartTypeSettings.comboAreaBar ||\n type==Asc.c_oAscChartTypeSettings.comboCustom) {\n props.storeChartSettings.clearChartStyles();\n } else {\n const api = Common.EditorApi.get();\n props.storeChartSettings.updateChartStyles(api.asc_getChartPreviews(type));\n }\n }\n\n onRemoveChart () {\n const api = Common.EditorApi.get();\n if (api) {\n api.asc_Remove();\n if ( Device.phone ) {\n f7.sheet.close('#edit-sheet', true);\n } else {\n f7.popover.close('#edit-popover');\n }\n }\n }\n\n onWrapType (type) {\n const api = Common.EditorApi.get();\n if (api) {\n const sdkType = this.props.storeChartSettings.transformToSdkWrapType(type);\n const properties = new Asc.asc_CImgProperty();\n properties.put_WrappingStyle(sdkType);\n api.ImgApply(properties);\n }\n }\n\n onAlign (type) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.asc_CImgProperty();\n properties.put_PositionH(new Asc.CImagePositionH());\n properties.get_PositionH().put_UseAlign(true);\n properties.get_PositionH().put_Align(type);\n properties.get_PositionH().put_RelativeFrom(Asc.c_oAscRelativeFromH.Page);\n api.ImgApply(properties);\n }\n }\n\n onMoveText (value) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.asc_CImgProperty();\n properties.put_PositionV(new Asc.CImagePositionV());\n properties.get_PositionV().put_UseAlign(true);\n properties.get_PositionV().put_RelativeFrom(value ? Asc.c_oAscRelativeFromV.Paragraph : Asc.c_oAscRelativeFromV.Page);\n api.ImgApply(properties);\n }\n }\n\n onOverlap (value) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.asc_CImgProperty();\n properties.put_AllowOverlap(value);\n api.ImgApply(properties);\n }\n }\n\n onWrapDistance (value) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.asc_CImgProperty();\n const paddings = new Asc.asc_CPaddings();\n const distance = Common.Utils.Metric.fnRecalcToMM(parseInt(value));\n paddings.put_Top(distance);\n paddings.put_Right(distance);\n paddings.put_Bottom(distance);\n paddings.put_Left(distance);\n properties.put_Paddings(paddings);\n api.ImgApply(properties);\n }\n }\n\n onReorder (type) {\n const api = Common.EditorApi.get();\n if (api) {\n const properties = new Asc.asc_CImgProperty();\n if ('all-up' == type) {\n properties.put_ChangeLevel(Asc.c_oAscChangeLevel.BringToFront);\n } else if ('all-down' == type) {\n properties.put_ChangeLevel(Asc.c_oAscChangeLevel.SendToBack);\n } else if ('move-up' == type) {\n properties.put_ChangeLevel(Asc.c_oAscChangeLevel.BringForward);\n } else if ('move-down' == type) {\n properties.put_ChangeLevel(Asc.c_oAscChangeLevel.BringBackward);\n }\n api.ImgApply(properties);\n }\n }\n\n onStyle (style) {\n const api = Common.EditorApi.get();\n const image = new Asc.asc_CImgProperty();\n const chart = this.props.storeFocusObjects.chartObject.get_ChartProperties();\n chart.putStyle(style);\n image.put_ChartProperties(chart);\n api.ImgApply(image);\n }\n\n onType (type) {\n const api = Common.EditorApi.get();\n const image = new Asc.asc_CImgProperty();\n const chart = this.props.storeFocusObjects.chartObject.get_ChartProperties();\n chart.changeType(type);\n image.put_ChartProperties(chart);\n api.ImgApply(image);\n // Force update styles\n this.props.storeChartSettings.updateChartStyles(api.asc_getChartPreviews(chart.getType()));\n }\n\n onFillColor (color) {\n const api = Common.EditorApi.get();\n const image = new Asc.asc_CImgProperty();\n const shape = new Asc.asc_CShapeProperty();\n const fill = new Asc.asc_CShapeFill();\n if (color == 'transparent') {\n fill.put_type(Asc.c_oAscFill.FILL_TYPE_NOFILL);\n fill.put_fill(null);\n } else {\n fill.put_type(Asc.c_oAscFill.FILL_TYPE_SOLID);\n fill.put_fill(new Asc.asc_CFillSolid());\n fill.get_fill().put_color(Common.Utils.ThemeColor.getRgbColor(color));\n }\n shape.put_fill(fill);\n image.put_ShapeProperties(shape);\n api.ImgApply(image);\n }\n\n onBorderColor (color) {\n const api = Common.EditorApi.get();\n const currentShape = this.props.storeFocusObjects.shapeObject.get_ShapeProperties();\n const image = new Asc.asc_CImgProperty();\n const shape = new Asc.asc_CShapeProperty();\n const stroke = new Asc.asc_CStroke();\n if (currentShape.get_stroke().get_width() < 0.01) {\n stroke.put_type(Asc.c_oAscStrokeType.STROKE_NONE);\n } else {\n stroke.put_type(Asc.c_oAscStrokeType.STROKE_COLOR);\n stroke.put_color(Common.Utils.ThemeColor.getRgbColor(color));\n stroke.put_width(currentShape.get_stroke().get_width());\n stroke.asc_putPrstDash(currentShape.get_stroke().asc_getPrstDash());\n }\n shape.put_stroke(stroke);\n image.put_ShapeProperties(shape);\n api.ImgApply(image);\n }\n\n onBorderSize (value) {\n const api = Common.EditorApi.get();\n\n const image = new Asc.asc_CImgProperty();\n const shape = new Asc.asc_CShapeProperty();\n const stroke = new Asc.asc_CStroke();\n\n const _borderColor = this.props.storeChartSettings.borderColor;\n\n if (value < 0.01) {\n stroke.put_type(Asc.c_oAscStrokeType.STROKE_NONE);\n } else {\n stroke.put_type(Asc.c_oAscStrokeType.STROKE_COLOR);\n if (_borderColor == 'transparent')\n stroke.put_color(Common.Utils.ThemeColor.getRgbColor({color: '000000', effectId: 29}));\n else\n stroke.put_color(Common.Utils.ThemeColor.getRgbColor(Common.Utils.ThemeColor.colorValue2EffectId(_borderColor)));\n stroke.put_width(value * 25.4 / 72.0);\n }\n\n shape.put_stroke(stroke);\n image.put_ShapeProperties(shape);\n\n api.ImgApply(image);\n this.props.storeChartSettings.initBorderColor(this.props.storeFocusObjects.shapeObject.get_ShapeProperties().get_stroke()); // when select STROKE_NONE or change from STROKE_NONE to STROKE_COLOR\n }\n\n render () {\n return (\n \n )\n }\n}\n\nexport default inject(\"storeChartSettings\", \"storeFocusObjects\")(observer(EditChartController));","import React, { Fragment, useState } from 'react';\nimport { observer, inject } from \"mobx-react\";\nimport { List, ListItem, Segmented, Button, Toggle, BlockTitle, Icon } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from \"../../../../../common/mobile/utils/device\";\n\nconst EditHeader = props => {\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const headerObject = props.storeFocusObjects.headerObject;\n const isDiffFirst = headerObject.get_DifferentFirst();\n const isDiffOdd = headerObject.get_DifferentEvenOdd();\n const linkToPrev = headerObject.get_LinkToPrevious();\n const boolLinkToPrev = !!linkToPrev;\n const startPageNumber = headerObject.get_StartPageNumber();\n let _startAt = 1;\n if (startPageNumber >= 0) {\n _startAt = startPageNumber;\n }\n return (\n \n \n \n {props.onDiffFirst(!isDiffFirst)}}/>\n \n \n {props.onDiffOdd(!isDiffOdd)}}/>\n \n \n {props.onSameAs(!boolLinkToPrev)}}/>\n \n \n {_t.textPageNumbering}\n \n \n {props.onNumberingContinue(!(startPageNumber<0), _startAt)}}/>\n \n \n {!isAndroid &&
          {_startAt}
          }\n
          \n \n \n {isAndroid && }\n \n \n
          \n
          \n
          \n
          \n )\n};\n\nexport default inject(\"storeFocusObjects\")(observer(EditHeader));","import React, {Component} from 'react';\n\nimport EditHeader from '../../view/edit/EditHeader';\n\nclass EditHeaderController extends Component {\n constructor (props) {\n super(props);\n }\n\n onDiffFirst (value) {\n const api = Common.EditorApi.get();\n if (api) {\n api.HeadersAndFooters_DifferentFirstPage(value);\n }\n }\n\n onDiffOdd (value) {\n const api = Common.EditorApi.get();\n if (api) {\n api.HeadersAndFooters_DifferentOddandEvenPage(value);\n }\n }\n\n onSameAs (value) {\n const api = Common.EditorApi.get();\n if (api) {\n api.HeadersAndFooters_LinkToPrevious(value);\n }\n }\n\n onNumberingContinue (isChecked, value) {\n const api = Common.EditorApi.get();\n if (api) {\n api.asc_SetSectionStartPage(isChecked ? -1 : value);\n }\n }\n\n onStartAt (value, isDecrement) {\n const api = Common.EditorApi.get();\n if (api) {\n let start = value;\n if (isDecrement) {\n start = Math.max(1, --start);\n } else {\n start = Math.min(2147483646, ++start);\n }\n api.asc_SetSectionStartPage(start);\n }\n }\n\n render () {\n return (\n \n )\n }\n}\n\nexport default EditHeaderController;","import React, {Component} from 'react';\nimport { f7 } from 'framework7-react';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport {observer, inject} from \"mobx-react\";\nimport { EditTableContents } from '../../view/edit/EditTableContents';\n\nclass EditTableContentsController extends Component {\n constructor (props) {\n super(props);\n\n this.startLevel = 1;\n this.endLevel = 3;\n this.fillTOCProps = this.fillTOCProps.bind(this);\n this.onRemoveTableContents = this.onRemoveTableContents.bind(this);\n this.onUpdateTableContents = this.onUpdateTableContents.bind(this);\n }\n\n closeModal() {\n if (Device.phone) {\n f7.sheet.close('#edit-sheet', true);\n } else {\n f7.popover.close('#edit-popover');\n }\n }\n\n getStylesImages() {\n const api = Common.EditorApi.get();\n const propsTableContents = api.asc_GetTableOfContentsPr();\n const arrValuesStyles = [Asc.c_oAscTOCStylesType.Simple, Asc.c_oAscTOCStylesType.Web, Asc.c_oAscTOCStylesType.Standard, Asc.c_oAscTOCStylesType.Modern, Asc.c_oAscTOCStylesType.Classic];\n\n arrValuesStyles.forEach((value, index) => {\n let canvasElem = document.querySelector(`#image-toc-style${index}`);\n \n propsTableContents.put_StylesType(value);\n api.SetDrawImagePlaceContents(canvasElem, propsTableContents);\n });\n }\n\n onStyle(value) {\n const api = Common.EditorApi.get();\n const propsTableContents = api.asc_GetTableOfContentsPr();\n \n propsTableContents.put_StylesType(value);\n api.asc_SetTableOfContentsPr(propsTableContents);\n }\n\n onPageNumbers(value) {\n const api = Common.EditorApi.get();\n const propsTableContents = api.asc_GetTableOfContentsPr();\n\n propsTableContents.put_ShowPageNumbers(value);\n api.asc_SetTableOfContentsPr(propsTableContents);\n }\n\n onRightAlign(value) {\n const api = Common.EditorApi.get();\n const propsTableContents = api.asc_GetTableOfContentsPr();\n\n propsTableContents.put_RightAlignTab(value);\n api.asc_SetTableOfContentsPr(propsTableContents);\n }\n\n onLeader(value) {\n const api = Common.EditorApi.get();\n const propsTableContents = api.asc_GetTableOfContentsPr();\n\n propsTableContents.put_TabLeader(value);\n api.asc_SetTableOfContentsPr(propsTableContents);\n }\n\n onLevelsChange(value) {\n const api = Common.EditorApi.get();\n const propsTableContents = api.asc_GetTableOfContentsPr();\n\n propsTableContents.clear_Styles();\n propsTableContents.put_OutlineRange(1, value);\n api.asc_SetTableOfContentsPr(propsTableContents);\n }\n\n fillTOCProps(props) {\n const api = Common.EditorApi.get();\n const docStyles = api.asc_GetStylesArray();\n\n let checkStyles = false,\n disableOutlines = false,\n styles = [];\n\n docStyles.forEach(style => {\n let name = style.get_Name(),\n level = api.asc_GetHeadingLevel(name);\n\n if (style.get_QFormat() || level >= 0) { \n styles.push({\n name: name,\n displayValue: style.get_TranslatedName(),\n allowSelected: false,\n checked: false,\n value: '',\n headerLevel: (level >= 0) ? level + 1 : -1 \n })\n }\n });\n\n if(props) {\n let start = props.get_OutlineStart(),\n end = props.get_OutlineEnd(),\n count = props.get_StylesCount();\n\n this.startLevel = start;\n this.endLevel = end;\n this.count = count;\n\n if ((start < 0 || end < 0) && count < 1) {\n start = 1;\n end = 9;\n }\n\n for (let i = 0; i < count; i++) {\n let styleName = props.get_StyleName(i),\n level = props.get_StyleLevel(i),\n rec = styles.find(style => style.name == styleName);\n \n if (rec) {\n rec.checked = true;\n rec.value = level;\n if (rec.headerLevel !== level)\n disableOutlines = true;\n } else {\n styles.push({\n name: styleName,\n displayValue: styleName,\n allowSelected: false,\n checked: true,\n value: level,\n headerLevel: -1\n });\n\n disableOutlines = true;\n }\n }\n\n if (start > 0 && end > 0) {\n for (let i = start; i <= end; i++) {\n let rec = styles.find(style => style.headerLevel === i);\n \n if (rec) {\n rec.checked = true;\n rec.value = i;\n }\n }\n }\n\n let newStart = -1, \n newEnd = -1, \n emptyIndex = -1;\n\n for (let i = 0; i < 9; i++) {\n let rec = styles.find(style => style.headerLevel === i + 1);\n\n if (rec) {\n let headerLevel = rec.headerLevel,\n level = rec.value;\n\n if (headerLevel == level) {\n if (emptyIndex < 1) {\n if (newStart < 1)\n newStart = level;\n newEnd = level;\n } else {\n newStart = newEnd = -1;\n disableOutlines = true;\n break;\n }\n } else if (!rec.checked) {\n (newStart > 0) && (emptyIndex = i + 1);\n } else {\n newStart = newEnd = -1;\n disableOutlines = true;\n break;\n }\n }\n }\n\n checkStyles = (disableOutlines || newStart > 1);\n } else {\n for (let i = this.startLevel; i <= this.endLevel; i++) {\n let rec = styles.find(style => style.headerLevel === i);\n\n if (rec) {\n rec.checked = true;\n rec.value = i;\n }\n }\n }\n\n styles.sort(function(a, b) {\n let aname = a.displayValue.toLocaleLowerCase(),\n bname = b.displayValue.toLocaleLowerCase();\n if (aname < bname) return -1;\n if (aname > bname) return 1;\n return 0;\n });\n\n return {\n styles, \n // start: this.startLevel,\n end: this.endLevel,\n count: this.count,\n // disableOutlines,\n // checkStyles\n }\n }\n\n addStyles(styles, styleName, value) {\n const api = Common.EditorApi.get();\n const propsTableContents = api.asc_GetTableOfContentsPr();\n\n propsTableContents.clear_Styles();\n\n styles.forEach(style => {\n if(style.name === styleName) {\n propsTableContents.add_Style(styleName, value);\n } else {\n propsTableContents.add_Style(style.name, style.value);\n }\n });\n\n if (propsTableContents.get_StylesCount() > 0) {\n propsTableContents.put_OutlineRange(-1, -1);\n } else {\n propsTableContents.put_OutlineRange(1, 9);\n }\n\n api.asc_SetTableOfContentsPr(propsTableContents);\n }\n\n onUpdateTableContents(type, currentTOC) {\n const api = Common.EditorApi.get();\n let props = api.asc_GetTableOfContentsPr(currentTOC);\n\n if (currentTOC && props)\n currentTOC = props.get_InternalClass();\n api.asc_UpdateTableOfContents(type == 'pages', currentTOC);\n };\n\n onRemoveTableContents(currentTOC) {\n const api = Common.EditorApi.get();\n currentTOC = !!currentTOC;\n let props = api.asc_GetTableOfContentsPr(currentTOC);\n\n currentTOC = (currentTOC && props) ? props.get_InternalClass() : undefined;\n api.asc_RemoveTableOfContents(currentTOC);\n\n this.closeModal();\n }\n\n render () {\n return (\n \n )\n }\n}\n\nexport default EditTableContentsController;","import React, { useState, useEffect } from 'react';\nimport { observer, inject } from \"mobx-react\";\nimport { Page, Navbar, NavRight, NavTitle, Tabs, Tab, Link } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport { Device } from '../../../../../common/mobile/utils/device';\nimport EditTextController from \"../../controller/edit/EditText\";\nimport EditParagraphController from \"../../controller/edit/EditParagraph\";\nimport EditShapeController from \"../../controller/edit/EditShape\";\nimport EditImageController from \"../../controller/edit/EditImage\";\nimport EditTableController from \"../../controller/edit/EditTable\";\nimport EditChartController from \"../../controller/edit/EditChart\";\nimport EditHeaderController from \"../../controller/edit/EditHeader\";\nimport EditTableContentsController from \"../../controller/edit/EditTableContents\";\n\nconst EmptyEditLayout = () => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n\n return (\n \n
          \n
          \n

          {_t.textSelectObjectToEdit}

          \n
          \n
          \n
          \n )\n};\n\nconst EditLayoutNavbar = ({ editors }) => {\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n\n return (\n \n {editors.length > 1 ?\n
          \n {editors.map((item, index) => {item.caption})}\n {isAndroid && }\n
          :\n {editors[0].caption}\n }\n {Device.phone && }\n
          \n )\n};\n\nconst EditLayoutContent = ({ editors }) => {\n if (editors.length > 1) {\n return (\n \n {editors.map((item, index) =>\n \n {item.component}\n \n )}\n \n )\n } else {\n return (\n \n {editors[0].component}\n \n )\n }\n};\n\nconst EditingPage = inject('storeFocusObjects')(observer(props => {\n const { t } = useTranslation();\n const _t = t('Edit', {returnObjects: true});\n const api = Common.EditorApi.get();\n const inToc = api.asc_GetTableOfContentsPr(true);\n const settings = props.storeFocusObjects.settings;\n const headerType = props.storeFocusObjects.headerType;\n let editors = [];\n\n if (settings.length < 1) {\n editors.push({\n caption: _t.textSettings,\n component: \n });\n } else {\n if(inToc) {\n editors.push({\n caption: _t.textTableOfCont,\n id: 'edit-table-contents',\n component: \n })\n }\n if (settings.indexOf('image') > -1) {\n editors.push({\n caption: _t.textImage,\n id: 'edit-image',\n component: \n })\n }\n if (settings.indexOf('shape') > -1) {\n editors.push({\n caption: _t.textShape,\n id: 'edit-shape',\n component: \n })\n }\n if (settings.indexOf('chart') > -1) {\n editors.push({\n caption: _t.textChart,\n id: 'edit-chart',\n component: \n })\n }\n if (settings.indexOf('table') > -1) {\n editors.push({\n caption: _t.textTable,\n id: 'edit-table',\n component: \n })\n }\n if (settings.indexOf('header') > -1) {\n editors.push({\n caption: headerType === 2 ? _t.textFooter : _t.textHeader,\n id: 'edit-header',\n component: \n })\n }\n if (settings.indexOf('text') > -1) {\n editors.push({\n caption: _t.textText,\n id: 'edit-text',\n component: \n })\n }\n if (settings.indexOf('paragraph') > -1) {\n editors.push({\n caption: _t.textParagraph,\n id: 'edit-paragraph',\n component: \n })\n }\n }\n \n return (\n \n \n \n \n )\n}));\n\nexport default EditingPage;","import React, { useContext, useEffect } from 'react';\nimport { Popover, Sheet, View, f7 } from 'framework7-react';\nimport { Device } from '../../../../../common/mobile/utils/device';\nimport { PageTextFonts, PageTextAddFormatting, PageTextBulletsAndNumbers, PageTextLineSpacing, PageTextFontColor, PageTextCustomFontColor, PageTextHighlightColor, PageOrientationTextShape } from \"./EditText\";\nimport { ParagraphAdvSettings, PageParagraphBackColor, PageParagraphCustomColor, PageParagraphStyle, PageCreateTextStyle, PageChangeNextParagraphStyle } from \"./EditParagraph\";\nimport { PageShapeStyleNoFill, PageShapeStyle, PageShapeCustomFillColor, PageShapeBorderColor, PageShapeCustomBorderColor, PageWrap, PageReorder, PageReplace } from \"./EditShape\";\nimport { PageImageReorder, PageImageReplace, PageImageWrap, PageLinkSettings, PageWrappingStyle } from \"./EditImage\";\nimport { PageTableOptions, PageTableWrap, PageTableStyle, PageTableStyleOptions, PageTableCustomFillColor, PageTableBorderColor, PageTableCustomBorderColor } from \"./EditTable\";\nimport { PageChartDesign, PageChartDesignType, PageChartDesignStyle, PageChartDesignFill, PageChartDesignBorder, PageChartCustomFillColor, PageChartBorderColor, PageChartCustomBorderColor, PageChartWrap, PageChartReorder } from \"./EditChart\";\nimport { PageEditLeaderTableContents, PageEditStylesTableContents, PageEditStructureTableContents } from './EditTableContents';\nimport EditingPage from './EditingPage';\nimport { MainContext } from '../../page/main';\n\nconst routes = [\n {\n path: '/editing-page/',\n component: EditingPage,\n keepAlive: true\n },\n //Edit text\n {\n path: '/edit-text-fonts/',\n component: PageTextFonts,\n },\n {\n path: '/edit-text-add-formatting/',\n component: PageTextAddFormatting,\n },\n {\n path: '/edit-bullets-and-numbers/',\n component: PageTextBulletsAndNumbers,\n },\n {\n path: '/edit-text-line-spacing/',\n component: PageTextLineSpacing,\n },\n {\n path: '/edit-text-font-color/',\n component: PageTextFontColor,\n },\n {\n path: '/edit-text-custom-font-color/',\n component: PageTextCustomFontColor,\n },\n {\n path: '/edit-text-highlight-color/',\n component: PageTextHighlightColor,\n },\n {\n path: '/edit-text-shape-orientation/',\n component: PageOrientationTextShape\n },\n\n // Edit link\n // {\n // path: '/edit-link/',\n // component: EditHyperlinkController\n // },\n\n //Edit paragraph\n {\n path: '/edit-paragraph-adv/',\n component: ParagraphAdvSettings,\n },\n {\n path: '/edit-paragraph-back-color/',\n component: PageParagraphBackColor,\n },\n {\n path: '/edit-paragraph-custom-color/',\n component: PageParagraphCustomColor,\n },\n {\n path: '/edit-paragraph-style/',\n component: PageParagraphStyle\n },\n {\n path: '/create-text-style/',\n component: PageCreateTextStyle\n },\n {\n path: '/change-next-paragraph-style/',\n component: PageChangeNextParagraphStyle\n },\n //Edit shape\n {\n path: '/edit-shape-style/',\n component: PageShapeStyle,\n },\n {\n path: '/edit-shape-style-no-fill/',\n component: PageShapeStyleNoFill,\n },\n {\n path: '/edit-shape-custom-fill-color/',\n component: PageShapeCustomFillColor,\n },\n {\n path: '/edit-shape-border-color/',\n component: PageShapeBorderColor,\n },\n {\n path: '/edit-shape-custom-border-color/',\n component: PageShapeCustomBorderColor,\n },\n {\n path: '/edit-shape-wrap/',\n component: PageWrap,\n },\n {\n path: '/edit-shape-reorder/',\n component: PageReorder,\n },\n {\n path: '/edit-shape-replace/',\n component: PageReplace,\n },\n\n // Edit image\n {\n path: '/edit-image-wrap/',\n component: PageImageWrap,\n },\n {\n path: '/edit-image-replace/',\n component: PageImageReplace,\n },\n {\n path: '/edit-image-reorder/',\n component: PageImageReorder,\n },\n {\n path: '/edit-image-link/',\n component: PageLinkSettings,\n },\n {\n path: '/edit-image-wrapping-style/',\n component: PageWrappingStyle\n },\n\n // Edit table\n {\n path: '/edit-table-options/',\n component: PageTableOptions,\n },\n {\n path: '/edit-table-wrap/',\n component: PageTableWrap,\n },\n {\n path: '/edit-table-style/',\n component: PageTableStyle,\n },\n {\n path: '/edit-table-style-options/',\n component: PageTableStyleOptions,\n },\n {\n path: '/edit-table-custom-fill-color/',\n component: PageTableCustomFillColor,\n },\n {\n path: '/edit-table-border-color/',\n component: PageTableBorderColor,\n },\n {\n path: '/edit-table-custom-border-color/',\n component: PageTableCustomBorderColor,\n },\n //Edit chart\n {\n path: '/edit-chart-wrap/',\n component: PageChartWrap,\n },\n {\n path: '/edit-chart-reorder/',\n component: PageChartReorder,\n },\n {\n path: '/edit-chart-design/',\n component: PageChartDesign,\n },\n {\n path: '/edit-chart-type/',\n component: PageChartDesignType\n },\n {\n path: '/edit-chart-style/',\n component: PageChartDesignStyle\n },\n {\n path: '/edit-chart-fill/',\n component: PageChartDesignFill\n },\n {\n path: '/edit-chart-border/',\n component: PageChartDesignBorder\n },\n {\n path: '/edit-chart-custom-fill-color/',\n component: PageChartCustomFillColor,\n },\n {\n path: '/edit-chart-border-color/',\n component: PageChartBorderColor,\n },\n {\n path: '/edit-chart-custom-border-color/',\n component: PageChartCustomBorderColor,\n }, \n\n // Table Contents \n\n {\n path: '/edit-style-table-contents/',\n component: PageEditStylesTableContents\n },\n {\n path: '/edit-leader-table-contents/',\n component: PageEditLeaderTableContents\n },\n {\n path: '/edit-structure-table-contents/',\n component: PageEditStructureTableContents\n },\n];\n\nroutes.forEach(route => {\n route.options = {\n ...route.options,\n transition: 'f7-push'\n };\n});\n\nconst EditView = () => {\n const mainContext = useContext(MainContext);\n\n useEffect(() => {\n if(Device.phone) {\n f7.sheet.open('#edit-sheet');\n } else {\n f7.popover.open('#edit-popover', '#btn-edit');\n }\n }, []);\n\n return (\n !Device.phone ?\n mainContext.closeOptions('edit')}>\n \n \n \n :\n mainContext.closeOptions('edit')}>\n \n \n \n \n )\n};\n\nexport default EditView;\n","import React, { createContext, useEffect, useState } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { f7, Icon, Page, View, Navbar, Subnavbar } from 'framework7-react';\nimport { observer, inject } from \"mobx-react\";\nimport { useTranslation } from 'react-i18next';\nimport AddOptions from '../view/add/Add';\nimport SettingsController from '../controller/settings/Settings';\nimport CollaborationView from '../../../../common/mobile/lib/view/collaboration/Collaboration.jsx'\nimport { Device } from '../../../../common/mobile/utils/device'\nimport { Search, SearchSettings } from '../controller/Search';\nimport ContextMenu from '../controller/ContextMenu';\nimport ToolbarController from \"../controller/Toolbar\";\nimport NavigationController from '../controller/settings/Navigation';\nimport { AddLinkController } from '../controller/add/AddLink';\nimport EditHyperlink from '../controller/edit/EditHyperlink';\nimport Snackbar from '../components/Snackbar/Snackbar';\nimport { Themes } from '../../../../common/mobile/lib/controller/Themes';\nimport EditView from '../view/edit/Edit';\nimport VersionHistoryController from '../../../../common/mobile/lib/controller/VersionHistory';\n\nexport const MainContext = createContext();\n\nconst MainPage = inject('storeDocumentInfo', 'users', 'storeAppOptions', 'storeVersionHistory', 'storeToolbarSettings', 'storeThemes')(observer(props => {\n const { t } = useTranslation();\n const [state, setState] = useState({\n editOptionsVisible: false,\n addOptionsVisible: false,\n addShowOptions: null,\n settingsVisible: false,\n collaborationVisible: false,\n navigationVisible: false,\n addLinkSettingsVisible: false,\n editLinkSettingsVisible: false,\n snackbarVisible: false,\n fabVisible: true,\n isOpenModal: false\n });\n const appOptions = props.storeAppOptions;\n const storeThemes = props.storeThemes;\n const colorTheme = storeThemes.colorTheme;\n const storeVersionHistory = props.storeVersionHistory;\n const isVersionHistoryMode = storeVersionHistory.isVersionHistoryMode;\n const storeDocumentInfo = props.storeDocumentInfo;\n const dataDoc = storeDocumentInfo.dataDoc;\n const docExt = dataDoc?.fileType || '';\n const isAvailableExt = docExt && docExt !== 'djvu' && docExt !== 'pdf' && docExt !== 'xps';\n const storeToolbarSettings = props.storeToolbarSettings;\n const isDisconnected = props.users.isDisconnected;\n const isViewer = appOptions.isViewer;\n const isEdit = appOptions.isEdit;\n const isMobileView = appOptions.isMobileView;\n const disabledControls = storeToolbarSettings.disabledControls;\n const disabledSettings = storeToolbarSettings.disabledSettings;\n const isProtected = appOptions.isProtected;\n const typeProtection = appOptions.typeProtection;\n const isFabShow = isViewer && !disabledSettings && !disabledControls && !isDisconnected && isAvailableExt && isEdit && (!isProtected || typeProtection === Asc.c_oAscEDocProtect.TrackedChanges);\n const config = appOptions.config;\n const { customization = {} } = config;\n const isShowPlaceholder = !appOptions.isDocReady && (!customization || !(customization.loaderName || customization.loaderLogo));\n\n let isBranding = true,\n isHideLogo = true,\n customLogoImage = '',\n customLogoUrl = '';\n\n if(!appOptions.isDisconnected && appOptions.isDocReady) {\n const { logo } = customization;\n isBranding = appOptions.canBranding || appOptions.canBrandingExt;\n \n if(logo && isBranding) {\n isHideLogo = logo.visible === false;\n\n if(logo.image || logo.imageDark) {\n customLogoImage = colorTheme.type === 'dark' ? logo.imageDark ?? logo.image : logo.image ?? logo.imageDark;\n customLogoUrl = logo.url;\n }\n } else {\n isHideLogo = false;\n }\n }\n\n useEffect(() => {\n if($$('.skl-container').length) {\n $$('.skl-container').remove();\n }\n }, []);\n\n const handleClickToOpenOptions = (opts, showOpts) => {\n f7.popover.close('.document-menu.modal-in', false);\n\n setState(prevState => {\n if(opts === 'edit') {\n return {\n ...prevState,\n editOptionsVisible: true,\n isOpenModal: true\n }\n } else if(opts === 'add') {\n return {\n ...prevState,\n addOptionsVisible: true,\n addShowOptions: showOpts,\n isOpenModal: true\n }\n } else if(opts === 'settings') {\n return {\n ...prevState,\n settingsVisible: true,\n isOpenModal: true\n }\n } else if(opts === 'coauth') {\n return {\n ...prevState,\n collaborationVisible: true,\n isOpenModal: true\n }\n } else if(opts === 'navigation') {\n return {\n ...prevState,\n navigationVisible: true\n }\n } else if(opts === 'add-link') {\n return {\n ...prevState,\n addLinkSettingsVisible: true\n }\n } else if(opts === 'edit-link') {\n return {\n ...prevState,\n editLinkSettingsVisible: true\n }\n } else if(opts === 'snackbar') {\n return {\n ...prevState,\n snackbarVisible: true\n }\n } else if(opts === 'fab') {\n return {\n ...prevState,\n fabVisible: true\n }\n } else if(opts === 'history') {\n return {\n ...prevState,\n historyVisible: true\n }\n }\n })\n \n if((opts === 'edit' || opts === 'coauth') && Device.phone) {\n f7.navbar.hide('.main-navbar');\n }\n };\n\n const handleOptionsViewClosed = opts => {\n setState(prevState => {\n if(opts === 'edit') {\n return {\n ...prevState,\n editOptionsVisible: false, \n isOpenModal: false\n };\n } else if(opts === 'add') {\n return {\n ...prevState,\n addOptionsVisible: false, \n addShowOptions: null, \n isOpenModal: false\n };\n } else if(opts === 'settings') {\n return {\n ...prevState,\n settingsVisible: false, \n isOpenModal: false\n };\n } else if(opts === 'coauth') {\n return {\n ...prevState, \n collaborationVisible: false, \n isOpenModal: false\n };\n } else if(opts === 'navigation') {\n return {\n ...prevState,\n navigationVisible: false\n };\n } else if(opts === 'add-link') {\n return {\n ...prevState,\n addLinkSettingsVisible: false\n };\n } else if(opts === 'edit-link') {\n return {\n ...prevState,\n editLinkSettingsVisible: false\n };\n } else if(opts === 'snackbar') {\n return {\n ...prevState, \n snackbarVisible: false\n }\n } else if(opts === 'fab') {\n return {\n ...prevState, \n fabVisible: false\n }\n } else if(opts === 'history') {\n return {\n ...prevState, \n historyVisible: false\n }\n }\n });\n\n if((opts === 'edit' || opts === 'coauth') && Device.phone) {\n f7.navbar.show('.main-navbar');\n }\n };\n\n const turnOffViewerMode = () => {\n const api = Common.EditorApi.get();\n\n f7.popover.close('.document-menu.modal-in', false);\n f7.navbar.show('.main-navbar', false);\n\n appOptions.changeViewerMode(false);\n api.asc_removeRestriction(Asc.c_oAscRestrictionType.View)\n api.asc_addRestriction(Asc.c_oAscRestrictionType.None);\n };\n\n return (\n \n \n \n \n {!isHideLogo &&\n
          {\n window.open(`${customLogoImage && customLogoUrl ? customLogoUrl : __PUBLISHER_URL__}`, \"_blank\");\n }}>\n {customLogoImage ? \n \n : \n \n }\n
          \n }\n {dataDoc &&\n \n \n \n \n }\n
          \n \n {isShowPlaceholder ?\n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n
          \n : null}\n handleOptionsViewClosed('snackbar')}\n message={isMobileView ? t(\"Toolbar.textSwitchedMobileView\") : t(\"Toolbar.textSwitchedStandardView\")} \n />\n \n {!state.editOptionsVisible ? null : }\n {!state.addOptionsVisible ? null : }\n {!state.addLinkSettingsVisible ? null :\n \n }\n {!state.editLinkSettingsVisible ? null :\n \n }\n {!state.settingsVisible ? null : }\n {!state.collaborationVisible ? null : \n \n }\n {!state.navigationVisible ? null : }\n {!state.historyVisible ? null :\n handleOptionsViewClosed('history')} />\n }\n {(isFabShow && !isVersionHistoryMode) &&\n \n
          turnOffViewerMode()}>\n \n \n \n
          \n \n }\n {appOptions.isDocReady && \n \n }\n
          \n
          \n
          \n )\n}));\n\nexport default MainPage;","import MainPage from '../page/main';\n\nvar routes = [\n {\n path: '/',\n component: MainPage,\n }\n];\n\nexport default routes;\n","\nexport default class Notifications {\n constructor() {\n this._events = {};\n }\n\n on(event, callback) {\n const addevent = (e, c) => {\n !this._events[e] && (this._events[e] = []);\n this._events[e].push(c);\n };\n\n if ( typeof(event) == 'object' )\n for (const i in event)\n addevent(i, event[i])\n else addevent(event, callback);\n }\n\n off(event, callback) {\n if ( this._events[event] && this._events[event].includes(callback) ) {\n this._events[event].splice(this._events[event].indexOf(callback), 1);\n }\n }\n\n trigger(event/*, args*/) {\n if ( this._events[event] ) {\n this._events[event].forEach(callback => {\n callback.apply(this, Array.prototype.slice.call(arguments, 1));\n });\n }\n }\n}\n","import React, { Component } from 'react'\nimport { f7 } from 'framework7-react';\nimport {observer, inject} from \"mobx-react\"\nimport { LocalStorage } from '../../../utils/LocalStorage.mjs';\nimport { withTranslation } from 'react-i18next';\n\nclass CollaborationController extends Component {\n constructor(props){\n super(props);\n\n Common.Notifications.on('engineCreated', (api) => {\n api.asc_registerCallback('asc_onAuthParticipantsChanged', this.onChangeEditUsers.bind(this));\n api.asc_registerCallback('asc_onParticipantsChanged', this.onChangeEditUsers.bind(this));\n api.asc_registerCallback('asc_onConnectionStateChanged', this.onUserConnection.bind(this));\n api.asc_registerCallback('asc_onCoAuthoringDisconnect', this.onCoAuthoringDisconnect.bind(this));\n\n api.asc_registerCallback('asc_OnTryUndoInFastCollaborative', this.onTryUndoInFastCollaborative.bind(this));\n });\n\n Common.Notifications.on('api:disconnect', this.onCoAuthoringDisconnect.bind(this));\n Common.Notifications.on('document:ready', this.onDocumentReady.bind(this));\n }\n\n onDocumentReady() {\n const api = Common.EditorApi.get();\n const appOptions = this.props.storeAppOptions;\n /** coauthoring begin **/\n let isFastCoauth;\n if (appOptions.isEdit && appOptions.canLicense && !appOptions.isOffline && appOptions.canCoAuthoring) {\n // Force ON fast co-authoring mode\n isFastCoauth = true;\n api.asc_SetFastCollaborative(isFastCoauth);\n\n if (window.editorType === 'de') {\n const value = LocalStorage.getItem((isFastCoauth) ? \"de-settings-showchanges-fast\" : \"de-settings-showchanges-strict\");\n if (value !== null) {\n api.SetCollaborativeMarksShowType(\n value === 'all' ? Asc.c_oAscCollaborativeMarksShowType.All :\n value === 'none' ? Asc.c_oAscCollaborativeMarksShowType.None : Asc.c_oAscCollaborativeMarksShowType.LastChanges);\n } else {\n api.SetCollaborativeMarksShowType(isFastCoauth ? Asc.c_oAscCollaborativeMarksShowType.None : Asc.c_oAscCollaborativeMarksShowType.LastChanges);\n }\n }\n } else if (!appOptions.isEdit && appOptions.isRestrictedEdit) {\n isFastCoauth = true;\n api.asc_SetFastCollaborative(isFastCoauth);\n window.editorType === 'de' && api.SetCollaborativeMarksShowType(Asc.c_oAscCollaborativeMarksShowType.None);\n api.asc_setAutoSaveGap(1);\n } else if (appOptions.canLiveView) { // viewer\n isFastCoauth = !(appOptions.config.coEditing && appOptions.config.coEditing.mode==='strict');\n api.asc_SetFastCollaborative(isFastCoauth);\n window.editorType === 'de' && api.SetCollaborativeMarksShowType(Asc.c_oAscCollaborativeMarksShowType.None);\n api.asc_setAutoSaveGap(1);\n } else {\n isFastCoauth = false;\n api.asc_SetFastCollaborative(isFastCoauth);\n window.editorType === 'de' && api.SetCollaborativeMarksShowType(Asc.c_oAscCollaborativeMarksShowType.None);\n }\n\n if (appOptions.isEdit) {\n let value;\n if (window.editorType === 'sse') {\n value = appOptions.canAutosave ? 1 : 0; // FORCE AUTOSAVE\n } else {\n value = isFastCoauth; // Common.localStorage.getItem(\"de-settings-autosave\");\n value = (!isFastCoauth && value !== null) ? parseInt(value) : (appOptions.canCoAuthoring ? 1 : 0);\n }\n api.asc_setAutoSaveGap(value);\n }\n /** coauthoring end **/\n }\n\n onChangeEditUsers(users) {\n const storeUsers = this.props.users;\n storeUsers.reset(users);\n storeUsers.setCurrentUser(this.props.storeAppOptions.user.id);\n }\n\n onUserConnection(change) {\n this.props.users.connection(change);\n }\n\n onCoAuthoringDisconnect() {\n this.props.users.resetDisconnected(true);\n }\n\n onTryUndoInFastCollaborative() {\n const { t } = this.props;\n const _t = t(\"Common.Collaboration\", { returnObjects: true });\n f7.dialog.alert(_t.textTryUndoRedo, _t.notcriticalErrorTitle);\n }\n\n render() {\n return null\n }\n}\n\nexport default inject('users', 'storeAppOptions')(observer(withTranslation()(CollaborationController)));","import React, { useEffect } from 'react';\nimport { inject } from 'mobx-react';\nimport { f7 } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\n\nconst ErrorController = inject('storeAppOptions','storeDocumentInfo')(({storeAppOptions, storeDocumentInfo, LoadingDocument}) => {\n const { t } = useTranslation();\n const _t = t(\"Error\", { returnObjects: true });\n\n useEffect(() => {\n const on_engine_created = k => { k.asc_registerCallback('asc_onError', onError); };\n\n const api = Common.EditorApi.get();\n if ( !api ) Common.Notifications.on('engineCreated', on_engine_created);\n else on_engine_created(api);\n\n return () => {\n const api = Common.EditorApi.get();\n if ( api ) api.asc_unregisterCallback('asc_onError', onError);\n\n Common.Notifications.off('engineCreated', on_engine_created);\n }\n });\n\n const onError = (id, level, errData) => {\n if (id === Asc.c_oAscError.ID.LoadingScriptError) {\n f7.notification.create({\n title: _t.criticalErrorTitle,\n text: _t.scriptLoadError,\n closeButton: true\n }).open();\n return;\n }\n\n Common.Notifications.trigger('preloader:close');\n Common.Notifications.trigger('preloader:endAction', Asc.c_oAscAsyncActionType['BlockInteraction'], LoadingDocument,true);\n\n const api = Common.EditorApi.get();\n\n const config = {\n closable: false\n };\n\n switch (id) {\n case Asc.c_oAscError.ID.Unknown:\n config.msg = _t.unknownErrorText;\n break;\n\n case Asc.c_oAscError.ID.ConvertationTimeout:\n config.msg = _t.convertationTimeoutText;\n break;\n\n case Asc.c_oAscError.ID.ConvertationOpenError:\n config.msg = _t.openErrorText;\n break;\n\n case Asc.c_oAscError.ID.ConvertationSaveError:\n config.msg = _t.saveErrorText;\n break;\n\n case Asc.c_oAscError.ID.DownloadError:\n config.msg = _t.downloadErrorText;\n break;\n\n case Asc.c_oAscError.ID.UplImageSize:\n config.msg = _t.uploadImageSizeMessage;\n break;\n\n case Asc.c_oAscError.ID.UplImageExt:\n config.msg = _t.uploadImageExtMessage;\n break;\n\n case Asc.c_oAscError.ID.UplImageFileCount:\n config.msg = _t.uploadImageFileCountMessage;\n break;\n\n case Asc.c_oAscError.ID.UplDocumentSize:\n config.msg = t('Error.uploadDocSizeMessage');\n break;\n\n case Asc.c_oAscError.ID.UplDocumentExt:\n config.msg = t('Error.uploadDocExtMessage');\n break;\n\n case Asc.c_oAscError.ID.UplDocumentFileCount:\n config.msg = t('Error.uploadDocFileCountMessage');\n break;\n\n case Asc.c_oAscError.ID.SplitCellMaxRows:\n config.msg = _t.splitMaxRowsErrorText.replace('%1', errData.get_Value());\n break;\n\n case Asc.c_oAscError.ID.SplitCellMaxCols:\n config.msg = _t.splitMaxColsErrorText.replace('%1', errData.get_Value());\n break;\n\n case Asc.c_oAscError.ID.SplitCellRowsDivider:\n config.msg = _t.splitDividerErrorText.replace('%1', errData.get_Value());\n break;\n\n case Asc.c_oAscError.ID.VKeyEncrypt:\n config.msg = _t.errorToken;\n break;\n\n case Asc.c_oAscError.ID.KeyExpire:\n config.msg = _t.errorTokenExpire;\n break;\n\n case Asc.c_oAscError.ID.UserCountExceed:\n config.msg = _t.errorUsersExceed;\n break;\n\n case Asc.c_oAscError.ID.CoAuthoringDisconnect:\n config.msg = _t.errorViewerDisconnect;\n break;\n\n case Asc.c_oAscError.ID.ConvertationPassword:\n config.msg = _t.errorFilePassProtect;\n break;\n\n case Asc.c_oAscError.ID.PasswordIsNotCorrect:\n config.msg = t('Error.errorPasswordIsNotCorrect');\n break;\n\n case Asc.c_oAscError.ID.StockChartError:\n config.msg = _t.errorStockChart;\n break;\n\n case Asc.c_oAscError.ID.DataRangeError:\n config.msg = _t.errorDataRange;\n break;\n\n case Asc.c_oAscError.ID.Database:\n config.msg = _t.errorDatabaseConnection;\n break;\n\n case Asc.c_oAscError.ID.UserDrop:\n const lostEditingRights = storeAppOptions.lostEditingRights;\n if (lostEditingRights) {\n storeAppOptions.changeEditingRights(false);\n return;\n }\n storeAppOptions.changeEditingRights(true);\n config.msg = _t.errorUserDrop;\n break;\n\n case Asc.c_oAscError.ID.MailMergeLoadFile:\n config.msg = _t.errorMailMergeLoadFile;\n break;\n\n case Asc.c_oAscError.ID.MailMergeSaveFile:\n config.msg = _t.errorMailMergeSaveFile;\n break;\n\n case Asc.c_oAscError.ID.Warning:\n config.msg = _t.errorConnectToServer;\n break;\n\n case Asc.c_oAscError.ID.UplImageUrl:\n config.msg = _t.errorBadImageUrl;\n break;\n\n case Asc.c_oAscError.ID.SessionAbsolute:\n config.msg = _t.errorSessionAbsolute;\n break;\n\n case Asc.c_oAscError.ID.SessionIdle:\n config.msg = _t.errorSessionIdle;\n break;\n\n case Asc.c_oAscError.ID.SessionToken:\n config.msg = _t.errorSessionToken;\n break;\n\n case Asc.c_oAscError.ID.DataEncrypted:\n config.msg = _t.errorDataEncrypted;\n break;\n\n case Asc.c_oAscError.ID.AccessDeny:\n config.msg = _t.errorAccessDeny;\n break;\n \n case Asc.c_oAscError.ID.ForceSaveButton:\n case Asc.c_oAscError.ID.ForceSaveTimeout:\n config.msg = t('Error.errorForceSave');\n break;\n\n case Asc.c_oAscError.ID.EditingError:\n config.msg = _t.errorEditingDownloadas;\n break;\n\n case Asc.c_oAscError.ID.MailToClientMissing:\n config.msg = this.errorEmailClient;\n break;\n\n case Asc.c_oAscError.ID.ConvertationOpenLimitError:\n config.msg = _t.errorFileSizeExceed;\n break;\n\n case Asc.c_oAscError.ID.UpdateVersion:\n config.msg = _t.errorUpdateVersionOnDisconnect;\n break;\n\n case Asc.c_oAscError.ID.LoadingFontError:\n config.msg = _t.errorLoadingFont;\n break;\n\n case Asc.c_oAscError.ID.ComplexFieldEmptyTOC:\n config.msg = _t.errorEmptyTOC;\n break;\n\n case Asc.c_oAscError.ID.ComplexFieldNoTOC:\n config.msg = _t.errorNoTOC;\n break;\n\n case Asc.c_oAscError.ID.TextFormWrongFormat:\n config.msg = _t.errorTextFormWrongFormat;\n break;\n\n case Asc.c_oAscError.ID.DirectUrl:\n config.msg = _t.errorDirectUrl;\n break;\n\n case Asc.c_oAscError.ID.CannotCompareInCoEditing:\n config.msg = t('Error.errorCompare');\n break;\n\n case Asc.c_oAscError.ID.ComboSeriesError:\n config.msg = t('Error.errorComboSeries');\n break;\n\n case Asc.c_oAscError.ID.Password:\n config.msg = t('Error.errorSetPassword');\n break;\n\n case Asc.c_oAscError.ID.Submit:\n config.msg = t('Error.errorSubmit');\n break;\n\n case Asc.c_oAscError.ID.ConvertationOpenFormat:\n let docExt = storeDocumentInfo.dataDoc ? storeDocumentInfo.dataDoc.fileType || '' : '';\n if (errData === 'pdf')\n config.msg = _t.errorInconsistentExtPdf.replace('%1', docExt);\n else if (errData === 'docx')\n config.msg = _t.errorInconsistentExtDocx.replace('%1', docExt);\n else if (errData === 'xlsx')\n config.msg = _t.errorInconsistentExtXlsx.replace('%1', docExt);\n else if (errData === 'pptx')\n config.msg = _t.errorInconsistentExtPptx.replace('%1', docExt);\n else\n config.msg = _t.errorInconsistentExt;\n break;\n\n default:\n config.msg = _t.errorDefaultMessage.replace('%1', id);\n break;\n }\n\n if (level === Asc.c_oAscError.Level.Critical) {\n\n // report only critical errors\n Common.Gateway.reportError(id, config.msg);\n\n config.title = _t.criticalErrorTitle;\n\n if (storeAppOptions.canBackToFolder && !storeAppOptions.isDesktopApp) {\n config.msg += '

          ' + _t.criticalErrorExtText;\n config.callback = function() {\n Common.Notifications.trigger('goback', true);\n }\n }\n if (id === Asc.c_oAscError.ID.DataEncrypted) {\n api.asc_coAuthoringDisconnect();\n Common.Notifications.trigger('api:disconnect');\n }\n }\n else {\n Common.Gateway.reportWarning(id, config.msg);\n\n config.title = _t.notcriticalErrorTitle;\n \n config.callback = (btn) => {\n if (id === Asc.c_oAscError.ID.Warning && btn === 'ok' && (storeAppOptions.canDownload || storeAppOptions.canDownloadOrigin)) {\n api.asc_DownloadOrigin();\n } else if(id === Asc.c_oAscError.ID.SplitCellMaxRows ||\n id === Asc.c_oAscError.ID.SplitCellMaxCols ||\n id === Asc.c_oAscError.ID.SplitCellRowsDivider) {\n Common.Notifications.trigger('showSplitModal',true);\n }\n storeAppOptions.changeEditingRights(false);\n };\n }\n f7.dialog.create({\n cssClass: 'error-dialog',\n title : config.title,\n text : config.msg,\n buttons: [\n {\n text: 'OK',\n onClick: config.callback\n }\n ]\n }).open();\n\n Common.component.Analytics.trackEvent('Internal Error', id.toString());\n };\n\n return null\n});\n\nexport default ErrorController;","\nexport default class IrregularStack {\n constructor (config) {\n this._stack = [];\n\n const _config = config || {};\n this._strongCompare = _config.strongCompare || this._compare;\n this._weakCompare = _config.weakCompare || this._compare;\n }\n\n _compare (obj1, obj2) {\n if (typeof obj1 === 'object' && typeof obj2 === 'object' && window.JSON)\n return window.JSON.stringify(obj1) === window.JSON.stringify(obj2);\n return obj1 === obj2;\n };\n\n _indexOf (obj, compare) {\n for (let i = this._stack.length - 1; i >= 0; i--) {\n if (compare(this._stack[i], obj))\n return i;\n }\n return -1;\n }\n\n push (obj) {\n this._stack.push(obj);\n }\n\n pop (obj) {\n const index = this._indexOf(obj, this._strongCompare);\n if (index !== -1) {\n const removed = this._stack.splice(index, 1);\n return removed[0];\n }\n return undefined;\n }\n\n get (obj) {\n const index = this._indexOf(obj, this._weakCompare);\n if (index !== -1) {\n return this._stack[index];\n }\n return undefined;\n }\n\n exist (obj) {\n return !(this._indexOf(obj, this._strongCompare) < 0);\n }\n\n}","import React, { useEffect } from 'react';\nimport { f7 } from 'framework7-react';\nimport { inject } from 'mobx-react';\nimport { useTranslation } from 'react-i18next';\nimport IrregularStack from \"../../../../common/mobile/utils/IrregularStack\";\n\nconst LongActionsController = inject('storeAppOptions')(({storeAppOptions}) => {\n const {t} = useTranslation();\n const _t = t(\"LongActions\", { returnObjects: true });\n\n const ApplyEditRights = -255;\n const LoadingDocument = -256;\n\n const stackLongActions = new IrregularStack({\n strongCompare : function(obj1, obj2){return obj1.id === obj2.id && obj1.type === obj2.type;},\n weakCompare : function(obj1, obj2){return obj1.type === obj2.type;}\n });\n\n let loadMask = null;\n\n const closePreloader = () => {\n if (loadMask && loadMask.el) {\n f7.dialog.close(loadMask.el);\n }\n };\n\n useEffect( () => {\n const on_engine_created = api => { \n api.asc_registerCallback('asc_onStartAction', onLongActionBegin);\n api.asc_registerCallback('asc_onEndAction', onLongActionEnd);\n api.asc_registerCallback('asc_onOpenDocumentProgress', onOpenDocument);\n api.asc_registerCallback('asc_onConfirmAction', onConfirmAction);\n };\n\n const api = Common.EditorApi.get();\n if(!api) Common.Notifications.on('engineCreated', on_engine_created);\n else on_engine_created(api);\n\n Common.Notifications.on('preloader:endAction', onLongActionEnd);\n Common.Notifications.on('preloader:beginAction', onLongActionBegin);\n Common.Notifications.on('preloader:close', closePreloader);\n\n return ( () => {\n const api = Common.EditorApi.get();\n if ( api ) {\n api.asc_unregisterCallback('asc_onStartAction', onLongActionBegin);\n api.asc_unregisterCallback('asc_onEndAction', onLongActionEnd);\n api.asc_unregisterCallback('asc_onOpenDocumentProgress', onOpenDocument);\n api.asc_unregisterCallback('asc_onConfirmAction', onConfirmAction);\n }\n \n Common.Notifications.off('engineCreated', on_engine_created);\n Common.Notifications.off('preloader:endAction', onLongActionEnd);\n Common.Notifications.off('preloader:beginAction', onLongActionBegin);\n Common.Notifications.off('preloader:close', closePreloader);\n })\n });\n\n const onLongActionBegin = (type, id) => {\n const action = {id: id, type: type};\n stackLongActions.push(action);\n setLongActionView(action);\n };\n\n const onLongActionEnd = (type, id, forceClose) => {\n if (!stackLongActions.exist({id: id, type: type})) return;\n\n let action = {id: id, type: type};\n stackLongActions.pop(action);\n\n //this.updateWindowTitle(true);\n\n action = stackLongActions.get({type: Asc.c_oAscAsyncActionType.Information}) || stackLongActions.get({type: Asc.c_oAscAsyncActionType.BlockInteraction});\n\n if (action && !forceClose) {\n setLongActionView(action);\n } else {\n loadMask && loadMask.el && loadMask.el.classList.contains('modal-in') ?\n f7.dialog.close(loadMask.el) :\n f7.dialog.close($$('.dialog-preloader'));\n }\n };\n\n const setLongActionView = (action) => {\n let title = '';\n // let text = '';\n\n switch (action.id) {\n case Asc.c_oAscAsyncAction['Open']:\n // title = _t.openTitleText;\n // text = _t.openTextText;\n title = _t.textLoadingDocument;\n break;\n\n case Asc.c_oAscAsyncAction['Save']:\n title = _t.saveTitleText;\n // text = _t.saveTextText;\n break;\n\n case Asc.c_oAscAsyncAction['LoadDocumentFonts']:\n if ( !storeAppOptions.isDocReady ) return;\n title = _t.loadFontsTitleText;\n // text = _t.loadFontsTextText;\n break;\n\n case Asc.c_oAscAsyncAction['LoadDocumentImages']:\n title = _t.loadImagesTitleText;\n // text = _t.loadImagesTextText;\n break;\n\n case Asc.c_oAscAsyncAction['LoadFont']:\n title = _t.loadFontTitleText;\n // text = _t.loadFontTextText;\n break;\n\n case Asc.c_oAscAsyncAction['LoadImage']:\n title = _t.loadImageTitleText;\n // text = _t.loadImageTextText;\n break;\n\n case Asc.c_oAscAsyncAction['DownloadAs']:\n title = _t.downloadTitleText;\n // text = _t.downloadTextText;\n break;\n\n case Asc.c_oAscAsyncAction['Print']:\n title = _t.printTitleText;\n // text = _t.printTextText;\n break;\n\n case Asc.c_oAscAsyncAction['UploadImage']:\n title = _t.uploadImageTitleText;\n // text = _t.uploadImageTextText;\n break;\n\n case Asc.c_oAscAsyncAction['ApplyChanges']:\n title = _t.applyChangesTitleText;\n // text = _t.applyChangesTextText;\n break;\n\n case Asc.c_oAscAsyncAction['PrepareToSave']:\n title = _t.savePreparingText;\n // text = _t.savePreparingTitle;\n break;\n\n case Asc.c_oAscAsyncAction['MailMergeLoadFile']:\n title = _t.mailMergeLoadFileText;\n // text = _t.mailMergeLoadFileTitle;\n break;\n\n case Asc.c_oAscAsyncAction['DownloadMerge']:\n title = _t.downloadMergeTitle;\n // text = _t.downloadMergeText;\n break;\n\n case Asc.c_oAscAsyncAction['SendMailMerge']:\n title = _t.sendMergeTitle;\n // text = _t.sendMergeText;\n break;\n\n case Asc.c_oAscAsyncAction['Waiting']:\n title = _t.waitText;\n // text = _t.waitText;\n break;\n\n case ApplyEditRights:\n title = _t.txtEditingMode;\n // text = _t.txtEditingMode;\n break;\n\n case LoadingDocument:\n title = _t.loadingDocumentTitleText;\n // text = _t.loadingDocumentTextText;\n break;\n default:\n if (typeof action.id == 'string'){\n title = action.id;\n // text = action.id;\n }\n break;\n }\n\n if (action.type === Asc.c_oAscAsyncActionType['BlockInteraction']) {\n if (action.id === Asc.c_oAscAsyncAction['ApplyChanges']) {\n return;\n }\n\n if (loadMask && loadMask.el && loadMask.el.classList.contains('modal-in')) {\n loadMask.el.getElementsByClassName('dialog-title')[0].innerHTML = title;\n } else if ($$('.dialog-preloader').hasClass('modal-in')) {\n $$('.dialog-preloader').find('dialog-title').text(title);\n } else {\n loadMask = f7.dialog.preloader(title);\n }\n }\n\n };\n\n const onConfirmAction = (id, apiCallback, data) => {\n const api = Common.EditorApi.get();\n\n if (id === Asc.c_oAscConfirm.ConfirmMaxChangesSize) {\n f7.dialog.create({\n title: _t.notcriticalErrorTitle,\n text: _t.confirmMaxChangesSize,\n buttons: [\n {text: _t.textUndo,\n onClick: () => {\n if (apiCallback) apiCallback(true);\n }\n },\n {text: _t.textContinue,\n onClick: () => {\n if (apiCallback) apiCallback(false);\n }\n }\n ],\n }).open();\n }\n };\n\n const onOpenDocument = (progress) => {\n if (loadMask && loadMask.el) {\n const $title = loadMask.el.getElementsByClassName('dialog-title')[0];\n const proc = (progress.asc_getCurrentFont() + progress.asc_getCurrentImage())/(progress.asc_getFontsCount() + progress.asc_getImagesCount());\n\n $title.innerHTML = `${_t.textLoadingDocument}: ${Math.min(Math.round(proc * 100), 100)}%`;\n }\n }\n\n return null;\n});\n\nexport default LongActionsController;","import React, { useEffect, useState } from 'react';\r\nimport { inject, observer } from 'mobx-react';\r\nimport { f7 } from 'framework7-react';\r\nimport { Device } from '../../utils/device';\r\n\r\nconst PluginsController = inject('storeAppOptions')(observer(props => {\r\n const { storeAppOptions } = props;\r\n let configPlugins = {autostart:[]},\r\n serverPlugins = {autostart:[]},\r\n modal,\r\n iframe;\r\n\r\n useEffect(() => {\r\n Common.Notifications.on('engineCreated', api => {\r\n api.asc_registerCallback(\"asc_onPluginShow\", showPluginModal);\r\n api.asc_registerCallback(\"asc_onPluginClose\", pluginClose);\r\n api.asc_registerCallback(\"asc_onPluginResize\", pluginResize);\r\n api.asc_registerCallback('asc_onPluginsInit', onPluginsInit);\r\n\r\n if(!storeAppOptions.customization || storeAppOptions.plugins !== false) {\r\n loadPlugins();\r\n }\r\n });\r\n\r\n Common.Gateway.on('init', loadConfig);\r\n\r\n return () => {\r\n const api = Common.EditorApi.get();\r\n\r\n if ( api ) {\r\n api.asc_unregisterCallback(\"asc_onPluginShow\", showPluginModal);\r\n api.asc_unregisterCallback(\"asc_onPluginClose\", pluginClose);\r\n api.asc_unregisterCallback(\"asc_onPluginResize\", pluginResize);\r\n api.asc_unregisterCallback('asc_onPluginsInit', onPluginsInit);\r\n }\r\n };\r\n });\r\n\r\n const onDlgBtnClick = e => {\r\n const api = Common.EditorApi.get();\r\n let index = $$(e.currentTarget).index();\r\n api.asc_pluginButtonClick(index);\r\n };\r\n\r\n const showPluginModal = (plugin, variationIndex, frameId, urlAddition) => {\r\n let isAndroid = Device.android;\r\n let variation = plugin.get_Variations()[variationIndex];\r\n\r\n if (variation.get_Visual()) {\r\n let url = variation.get_Url();\r\n url = ((plugin.get_BaseUrl().length == 0) ? url : plugin.get_BaseUrl()) + url;\r\n\r\n if (urlAddition)\r\n url += urlAddition;\r\n\r\n let isCustomWindow = variation.get_CustomWindow(),\r\n arrBtns = variation.get_Buttons(),\r\n newBtns = [],\r\n size = variation.get_Size();\r\n\r\n if (arrBtns.length) {\r\n arrBtns.forEach((b, index) => {\r\n if ((storeAppOptions.isEdit || b.isViewer !== false)) {\r\n newBtns[index] = {\r\n text: b.text,\r\n attributes: {result: index},\r\n close: false\r\n };\r\n }\r\n });\r\n }\r\n\r\n f7.popover.close('.document-menu.modal-in', false);\r\n\r\n modal = f7.dialog.create({\r\n title: '',\r\n text: '',\r\n content: '
          '+'
          ',\r\n buttons : isCustomWindow ? undefined : newBtns\r\n }).open();\r\n\r\n iframe = document.createElement(\"iframe\");\r\n\r\n iframe.id = frameId;\r\n iframe.name = 'pluginFrameEditor';\r\n iframe.width = '100%';\r\n iframe.height = '100%';\r\n iframe.align = \"top\";\r\n iframe.frameBorder = 0;\r\n iframe.scrolling = \"no\";\r\n iframe.src = url;\r\n\r\n $$('#plugin-frame').append(iframe);\r\n \r\n modal.$el.find('.dialog-button').on('click', onDlgBtnClick);\r\n\r\n modal.$el.css({\r\n margin: '0',\r\n width: '90%',\r\n left: '5%',\r\n height: 'auto'\r\n });\r\n\r\n modal.$el.find('.dialog-inner').css({padding: '0'});\r\n\r\n if (Device.phone) {\r\n let height = Math.min(size[1], 240);\r\n modal.$el.find('#plugin-frame').css({height: height + 'px'});\r\n } else {\r\n let height = Math.min(size[1], 500);\r\n modal.$el.find('#plugin-frame').css({height: height + 'px'});\r\n }\r\n\r\n if (isAndroid) {\r\n $$('.view.collaboration-root-view.navbar-through').removeClass('navbar-through').addClass('navbar-fixed');\r\n $$('.view.collaboration-root-view .navbar').prependTo('.view.collaboration-root-view > .pages > .page');\r\n }\r\n }\r\n };\r\n\r\n const pluginClose = plugin => {\r\n if (plugin && modal) {\r\n modal.close();\r\n }\r\n };\r\n\r\n const pluginResize = size => {\r\n if (Device.phone) {\r\n let height = Math.min(size[1], 240);\r\n modal.$el.find('#plugin-frame').css({height: height + 'px'});\r\n } else {\r\n let height = Math.min(size[1], 500);\r\n modal.$el.find('#plugin-frame').css({height: height + 'px'});\r\n }\r\n };\r\n\r\n const getPlugins = (pluginsData, fetchFunction) => {\r\n if (!pluginsData || pluginsData.length < 1)\r\n return Promise.resolve([]);\r\n\r\n fetchFunction = fetchFunction || function (url) {\r\n return fetch(url)\r\n .then(function(response) {\r\n if (response.ok) return response.json();\r\n else return Promise.reject(url);\r\n }).then(function(json) {\r\n json.baseUrl = url.substring(0, url.lastIndexOf(\"config.json\"));\r\n return json;\r\n });\r\n };\r\n\r\n let loaded = [];\r\n\r\n return pluginsData.map(fetchFunction).reduce(function (previousPromise, currentPromise) {\r\n return previousPromise\r\n .then(function()\r\n {\r\n return currentPromise;\r\n })\r\n .then(function(item)\r\n {\r\n loaded.push(item);\r\n return Promise.resolve(item);\r\n })\r\n .catch(function(item)\r\n {\r\n return Promise.resolve(item);\r\n });\r\n\r\n }, Promise.resolve())\r\n .then(function ()\r\n {\r\n return Promise.resolve(loaded);\r\n });\r\n };\r\n\r\n const loadConfig = data => {\r\n configPlugins.config = data.config.plugins;\r\n };\r\n\r\n const onPluginsInit = pluginsdata => {\r\n !(pluginsdata instanceof Array) && (pluginsdata = pluginsdata[\"pluginsData\"]);\r\n parsePlugins(pluginsdata)\r\n };\r\n\r\n const parsePlugins = pluginsdata => {\r\n let isEdit = storeAppOptions.isEdit;\r\n \r\n if (pluginsdata instanceof Array) { \r\n let lang = storeAppOptions.lang ? storeAppOptions.lang.split(/[\\-_]/)[0] : 'en';\r\n pluginsdata.forEach((item) => {\r\n item.variations.forEach( (itemVar) => { \r\n let description = itemVar.description;\r\n if (typeof itemVar.descriptionLocale == 'object')\r\n description = itemVar.descriptionLocale[lang] || itemVar.descriptionLocale['en'] || description || '';\r\n\r\n if(itemVar.buttons !== undefined) {\r\n itemVar.buttons.forEach( (button) => {\r\n if (typeof button.textLocale == 'object')\r\n button.text = button.textLocale[lang] || button.textLocale['en'] || button.text || '';\r\n button.visible = (isEdit || button.isViewer !== false);\r\n })\r\n }\r\n })\r\n });\r\n } \r\n registerPlugins(pluginsdata);\r\n };\r\n\r\n const registerPlugins = plugins => {\r\n let arr = [];\r\n\r\n plugins.forEach(item => {\r\n let plugin = new Asc.CPlugin();\r\n plugin.deserialize(item);\r\n arr.push(plugin);\r\n });\r\n\r\n const api = Common.EditorApi.get();\r\n api.asc_pluginsRegister('', arr);\r\n };\r\n\r\n const mergePlugins = () => {\r\n if (serverPlugins.plugins !== undefined && configPlugins.plugins !== undefined) {\r\n let arr = [],\r\n plugins = configPlugins;\r\n\r\n if (plugins.plugins && plugins.plugins.length > 0) {\r\n arr = plugins.plugins;\r\n }\r\n\r\n plugins = serverPlugins;\r\n\r\n if (plugins.plugins && plugins.plugins.length > 0) {\r\n arr = arr.concat(plugins.plugins);\r\n }\r\n\r\n parsePlugins(arr);\r\n }\r\n };\r\n\r\n const loadPlugins = () => {\r\n if (configPlugins.config) {\r\n getPlugins(configPlugins.config.pluginsData)\r\n .then(function(loaded)\r\n {\r\n configPlugins.plugins = loaded;\r\n mergePlugins();\r\n });\r\n if (configPlugins.config.options) {\r\n const api = Common.EditorApi.get();\r\n api && api.setPluginsOptions(configPlugins.config.options);\r\n }\r\n } else {\r\n configPlugins.plugins = false;\r\n }\r\n\r\n let server_plugins_url = '../../../../plugins.json';\r\n\r\n Common.Utils.loadConfig(server_plugins_url, function (obj) {\r\n if (obj != 'error') {\r\n serverPlugins.config = obj;\r\n getPlugins(serverPlugins.config.pluginsData)\r\n .then(function(loaded)\r\n {\r\n serverPlugins.plugins = loaded;\r\n mergePlugins();\r\n });\r\n } else\r\n serverPlugins.plugins = false;\r\n });\r\n };\r\n\r\n return <>\r\n}));\r\n\r\nexport default PluginsController;\r\n\r\n\r\n\r\n","import React, {Component, useEffect, useState} from 'react';\r\nimport { f7, Page, Navbar, List, ListItem, BlockTitle, ListButton, Popover, Popup, View, Link } from \"framework7-react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Device } from '../../../../common/mobile/utils/device';\r\n\r\nconst PageEncoding = props => {\r\n const { t } = useTranslation();\r\n const _t = t(\"Settings\", { returnObjects: true });\r\n const encodeData = props.encodeData;\r\n const [stateEncoding, setStateEncoding] = useState(props.valueEncoding);\r\n const getIndexNameEncoding = () => encodeData.findIndex(encoding => encoding.value === stateEncoding);\r\n const nameEncoding = encodeData[getIndexNameEncoding()].displayValue;\r\n const mode = props.mode;\r\n\r\n const changeStateEncoding = value => {\r\n setStateEncoding(value);\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {_t.textEncoding}\r\n \r\n \r\n \r\n \r\n {mode === 2 ? \r\n props.closeModal()}>\r\n : null}\r\n props.onSaveFormat(stateEncoding)}>\r\n \r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst PageEncodingList = props => {\r\n const { t } = useTranslation();\r\n const _t = t(\"Settings\", { returnObjects: true });\r\n const [currentEncoding, changeCurrentEncoding] = useState(props.stateEncoding);\r\n const encodeData = props.encodeData;\r\n \r\n return (\r\n \r\n \r\n {_t.textChooseEncoding}\r\n \r\n {encodeData.map((encoding, index) => {\r\n return (\r\n {\r\n changeCurrentEncoding(encoding.value);\r\n props.changeStateEncoding(encoding.value);\r\n f7.views.current.router.back();\r\n }}>\r\n )\r\n })}\r\n \r\n \r\n )\r\n};\r\n\r\nclass EncodingView extends Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nconst routes = [\r\n {\r\n path: '/encoding-list/',\r\n component: PageEncodingList\r\n }\r\n];\r\n\r\nconst Encoding = props => {\r\n useEffect(() => {\r\n f7.popup.open('.encoding-popup');\r\n \r\n return () => {\r\n }\r\n });\r\n\r\n return (\r\n \r\n )\r\n};\r\n\r\nexport {Encoding, PageEncodingList}","import React, { Component } from 'react';\r\nimport { Device } from '../../../../common/mobile/utils/device';\r\nimport { f7 } from \"framework7-react\";\r\nimport { Encoding } from \"../view/Encoding\";\r\n\r\nclass EncodingController extends Component {\r\n constructor(props) {\r\n super(props);\r\n \r\n this.onSaveFormat = this.onSaveFormat.bind(this);\r\n this.closeModal = this.closeModal.bind(this);\r\n this.state = {\r\n isOpen: false\r\n };\r\n\r\n Common.Notifications.on('engineCreated', api => {\r\n api.asc_registerCallback('asc_onAdvancedOptions', (type, advOptions, mode, formatOptions) => {\r\n this.initEncoding(type, advOptions, mode, formatOptions);\r\n });\r\n });\r\n\r\n Common.Notifications.on('openEncoding', (type, advOptions, mode, formatOptions) => {\r\n this.initEncoding(type, advOptions, mode, formatOptions);\r\n });\r\n }\r\n\r\n initEncoding(type, advOptions, mode, formatOptions) {\r\n if(type === Asc.c_oAscAdvancedOptionsID.TXT) {\r\n Common.Notifications.trigger('preloader:close');\r\n Common.Notifications.trigger('preloader:endAction', Asc.c_oAscAsyncActionType['BlockInteraction'], -256, true);\r\n\r\n this.mode = mode;\r\n this.advOptions = advOptions;\r\n this.formatOptions = formatOptions;\r\n this.encodeData = [];\r\n \r\n const recommendedSettings = this.advOptions.asc_getRecommendedSettings();\r\n\r\n this.initEncodeData();\r\n this.valueEncoding = recommendedSettings.asc_getCodePage();\r\n \r\n this.setState({\r\n isOpen: true \r\n });\r\n }\r\n }\r\n\r\n initEncodeData() {\r\n for (let page of this.advOptions.asc_getCodePages()) {\r\n this.encodeData.push({\r\n value: page.asc_getCodePage(),\r\n displayValue: page.asc_getCodePageName(),\r\n lcid: page.asc_getLcid()\r\n });\r\n }\r\n }\r\n\r\n closeModal() {\r\n f7.sheet.close('.encoding-popup', true);\r\n this.setState({isOpen: false});\r\n }\r\n\r\n onSaveFormat(valueEncoding) {\r\n const api = Common.EditorApi.get();\r\n\r\n this.closeModal();\r\n\r\n if(this.mode === 2) {\r\n this.formatOptions && this.formatOptions.asc_setAdvancedOptions(new Asc.asc_CTextOptions(valueEncoding));\r\n api.asc_DownloadAs(this.formatOptions);\r\n } else {\r\n api.asc_setAdvancedOptions(Asc.c_oAscAdvancedOptionsID.TXT, new Asc.asc_CTextOptions(valueEncoding));\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n this.state.isOpen &&\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default EncodingController;","import React, { Component, useEffect, useState } from 'react';\nimport { f7, Page, Navbar, List, ListItem, Popover, View, Link, Sheet, Icon, NavRight, BlockTitle, NavLeft, Popup } from \"framework7-react\";\nimport { Device } from '../../../../common/mobile/utils/device';\nimport { useTranslation } from 'react-i18next';\n\nconst PageCustomOptionList = props => {\n const { t } = useTranslation();\n const [itemValue, setItemValue] = useState(props.enteredValue);\n\n return (\n \n \n \n {\n f7.views.current.router.back();\n }} />\n \n \n props.onAddItem(itemValue)} />\n \n \n
          \n
          \n \n
          \n
          \n
          \n )\n}\n\nconst PageDropdownList = props => {\n const listItems = props.listItems;\n const curValue = props.curValue;\n const enteredValue = props.enteredValue;\n const { t } = useTranslation();\n\n const openDlgCustomOption = () => {\n f7.dialog.create({\n title: t('Edit.textYourOption'),\n content: `\n
          \n
          \n
            \n
          • \n
            \n
            \n
            \n \n
            \n
            \n
            \n
          • \n
          \n
          \n
          `,\n on: {\n opened: () => {\n const optionField = document.querySelector('#custom-option-field');\n optionField.focus();\n }\n },\n buttons: [\n {\n text: t('Edit.textCancel')\n },\n {\n text: t('Edit.textSave'),\n onClick: () => {\n const itemValue = document.querySelector('#custom-option-field').value;\n props.onAddItem(itemValue);\n }\n }\n ]\n }).open();\n }\n\n const customOptionClickHandler = () => {\n if(Device.android) {\n openDlgCustomOption();\n } else {\n f7.views.current.router.navigate('/custom-option/', {\n props: {\n onAddItem: props.onAddItem,\n enteredValue\n }\n });\n }\n }\n\n return (\n \n \n \n \n \n {Device.android && }\n \n \n \n {props.isComboBox ?\n <>\n \n \n \n {t('Edit.textChooseAnItem')}\n \n : null}\n \n {listItems.length && listItems.map((item, index) => (\n props.onChangeItemList(item.value)}>\n ))}\n \n \n \n );\n};\n\nconst routes = [\n {\n path: '/custom-option/',\n component: PageCustomOptionList\n }\n]\n\nclass DropdownListView extends Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n return (\n Device.isPhone ? \n this.props.closeModal()}> \n \n \n : \n this.props.closeModal()}>\n \n \n \n );\n }\n}\n\n\nconst DropdownList = props => {\n useEffect(() => {\n if(Device.isPhone) {\n f7.popup.open('#dropdown-list-popup', true);\n } else {\n f7.popover.open('#dropdown-list-popover', '#dropdown-list-target');\n }\n \n return () => {}\n });\n\n return (\n \n );\n};\n\nexport default DropdownList;","import React, { Component } from 'react';\r\nimport { Device } from '../../../../common/mobile/utils/device';\r\nimport { f7 } from \"framework7-react\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport DropdownList from \"../view/DropdownList\";\r\n\r\nclass DropdownListController extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.onChangeItemList = this.onChangeItemList.bind(this);\r\n this.closeModal = this.closeModal.bind(this);\r\n this.onAddItem = this.onAddItem.bind(this);\r\n \r\n this.state = {\r\n isOpen: false,\r\n enteredValue: ''\r\n };\r\n\r\n Common.Notifications.on('openDropdownList', obj => {\r\n this.initDropdownList(obj);\r\n });\r\n }\r\n\r\n initDropdownList(obj) {\r\n const api = Common.EditorApi.get();\r\n\r\n this.type = obj.type;\r\n this.propsObj = obj.pr;\r\n this.internalId = this.propsObj.get_InternalId();\r\n this.isComboBox = this.type === Asc.c_oAscContentControlSpecificType.ComboBox;\r\n this.specProps = this.isComboBox ? this.propsObj.get_ComboBoxPr() : this.propsObj.get_DropDownListPr();\r\n this.isForm = !!this.propsObj.get_FormPr();\r\n this.listItems = [];\r\n this.curValue = api.asc_GetContentControlListCurrentValue(this.internalId);\r\n\r\n this.initListItems();\r\n this.setState({\r\n isOpen: true,\r\n enteredValue: api.asc_GetSelectedText()\r\n });\r\n }\r\n\r\n initListItems() {\r\n const { t } = this.props;\r\n const count = this.specProps.get_ItemsCount();\r\n\r\n if(this.isForm) {\r\n let text = this.propsObj.get_PlaceholderText();\r\n\r\n this.listItems.push({\r\n caption: text.trim() !== '' ? text : t('Edit.textEmpty'),\r\n value: ''\r\n });\r\n }\r\n\r\n for (let i = 0; i < count; i++) {\r\n if(this.specProps.get_ItemValue(i) || !this.isForm) {\r\n this.listItems.push({\r\n caption: this.specProps.get_ItemDisplayText(i), \r\n value: this.specProps.get_ItemValue(i)\r\n });\r\n }\r\n }\r\n\r\n if (!this.isForm && this.listItems.length < 1) {\r\n this.listItems.push({\r\n caption: t('Edit.textEmpty'),\r\n value: -1\r\n });\r\n }\r\n }\r\n\r\n closeModal() {\r\n if(Device.isPhone) {\r\n f7.popup.close('#dropdown-list-popup', true);\r\n } else {\r\n f7.popover.close('#dropdown-list-popover', true);\r\n }\r\n\r\n f7.views.current.router.back();\r\n this.setState({isOpen: false});\r\n }\r\n\r\n onChangeItemList(value) {\r\n const api = Common.EditorApi.get();\r\n\r\n if(value !== -1) {\r\n this.closeModal();\r\n api.asc_SelectContentControlListItem(value, this.internalId);\r\n }\r\n }\r\n\r\n onAddItem(value) {\r\n const api = Common.EditorApi.get();\r\n api.asc_SetContentControlText(value, this.internalId);\r\n\r\n this.setState(prevState => ({\r\n ...prevState,\r\n enteredValue: value\r\n }));\r\n \r\n f7.views.current.router.back();\r\n }\r\n\r\n render() {\r\n return (\r\n this.state.isOpen &&\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(DropdownListController);","\nimport React, {Component, Fragment} from 'react';\nimport {inject} from \"mobx-react\";\nimport { f7 } from \"framework7-react\";\nimport { withTranslation } from 'react-i18next';\nimport { LocalStorage } from '../../../../common/mobile/utils/LocalStorage.mjs';\nimport CollaborationController from '../../../../common/mobile/lib/controller/collaboration/Collaboration.jsx';\nimport {InitReviewController as ReviewController} from '../../../../common/mobile/lib/controller/collaboration/Review.jsx';\nimport { onAdvancedOptions } from './settings/Download.jsx';\nimport {\n CommentsController,\n ViewCommentsController\n} from \"../../../../common/mobile/lib/controller/collaboration/Comments\";\nimport About from '../../../../common/mobile/lib/view/About';\nimport EditorUIController from '../lib/patch';\nimport ErrorController from \"./Error\";\nimport LongActionsController from \"./LongActions\";\nimport PluginsController from '../../../../common/mobile/lib/controller/Plugins.jsx';\nimport EncodingController from \"./Encoding\";\nimport DropdownListController from \"./DropdownList\";\nimport { Device } from '../../../../common/mobile/utils/device';\nimport { processArrayScripts } from '../../../../common/mobile/utils/processArrayScripts.js';\n\n@inject(\n \"users\",\n \"storeAppOptions\",\n \"storeDocumentSettings\",\n \"storeFocusObjects\",\n \"storeTextSettings\",\n \"storeParagraphSettings\",\n \"storeTableSettings\",\n \"storeDocumentInfo\",\n \"storeChartSettings\",\n \"storeApplicationSettings\",\n \"storeLinkSettings\",\n \"storeToolbarSettings\",\n \"storeNavigation\",\n \"storeVersionHistory\"\n)\nclass MainController extends Component {\n constructor(props) {\n super(props);\n window.editorType = 'de';\n\n this.LoadingDocument = -256;\n this.ApplyEditRights = -255;\n this.boxSdk = $$('#editor_sdk');\n this.fallbackSdkTranslations = {\n \" -Section \": \" -Section \",\n \"above\": \"above\",\n \"below\": \"below\",\n \"Caption\": \"Caption\",\n \"Choose an item\": \"Choose an item\",\n \"Click to load image\": \"Click to load image\",\n \"Current Document\": \"Current Document\",\n \"Diagram Title\": \"Chart Title\",\n \"endnote text\": \"Endnote Text\",\n \"Enter a date\": \"Enter a date\",\n \"Error! Bookmark not defined\": \"Error! Bookmark not defined.\",\n \"Error! Main Document Only\": \"Error! Main Document Only.\",\n \"Error! No text of specified style in document\": \"Error! No text of specified style in document.\",\n \"Error! Not a valid bookmark self-reference\": \"Error! Not a valid bookmark self-reference.\",\n \"Even Page \": \"Even Page \",\n \"First Page \": \"First Page \",\n \"Footer\": \"Footer\",\n \"footnote text\": \"Footnote Text\",\n \"Header\": \"Header\",\n \"Heading 1\": \"Heading 1\",\n \"Heading 2\": \"Heading 2\",\n \"Heading 3\": \"Heading 3\",\n \"Heading 4\": \"Heading 4\",\n \"Heading 5\": \"Heading 5\",\n \"Heading 6\": \"Heading 6\",\n \"Heading 7\": \"Heading 7\",\n \"Heading 8\": \"Heading 8\",\n \"Heading 9\": \"Heading 9\",\n \"Hyperlink\": \"Hyperlink\",\n \"Index Too Large\": \"Index Too Large\",\n \"Intense Quote\": \"Intense Quote\",\n \"Is Not In Table\": \"Is Not In Table\",\n \"List Paragraph\": \"List Paragraph\",\n \"Missing Argument\": \"Missing Argument\",\n \"Missing Operator\": \"Missing Operator\",\n \"No Spacing\": \"No Spacing\",\n \"No table of contents entries found\": \"There are no headings in the document. Apply a heading style to the text so that it appears in the table of contents.\",\n \"No table of figures entries found\": \"No table of figures entries found.\",\n \"None\": \"None\",\n \"Normal\": \"Normal\",\n \"Number Too Large To Format\": \"Number Too Large To Format\",\n \"Odd Page \": \"Odd Page \",\n \"Quote\": \"Quote\",\n \"Same as Previous\": \"Same as Previous\",\n \"Series\": \"Series\",\n \"Subtitle\": \"Subtitle\",\n \"Syntax Error\": \"Syntax Error\",\n \"Table Index Cannot be Zero\": \"Table Index Cannot be Zero\",\n \"Table of Contents\": \"Table of Contents\",\n \"table of figures\": \"Table of figures\",\n \"The Formula Not In Table\": \"The Formula Not In Table\",\n \"Title\": \"Title\",\n \"TOC Heading\": \"TOC Heading\",\n \"Type equation here\": \"Type equation here\",\n \"Undefined Bookmark\": \"Undefined Bookmark\",\n \"Unexpected End of Formula\": \"Unexpected End of Formula\",\n \"X Axis\": \"X Axis XAS\",\n \"Y Axis\": \"Y Axis\",\n \"Your text here\": \"Your text here\",\n \"Zero Divide\": \"Zero Divide\",\n \"Default Paragraph Font\": \"Default Paragraph Font\",\n \"No List\": \"No list\",\n \"Intense Emphasis\": \"Intense Emphasis\",\n \"Intense Reference\": \"Intense Reference\",\n \"Subtle Emphasis\": \"Subtle Emphasis\",\n \"Emphasis\": \"Emphasis\",\n \"Strong\": \"Strong\",\n \"Subtle Reference\": \"Subtle Reference\",\n \"Book Title\":\"Book Title\",\n \"footnote reference\": \"Footnote reference\",\n \"endnote reference\": \"Endnote reference\"\n };\n let me = this;\n ['Aspect', 'Blue Green', 'Blue II', 'Blue Warm', 'Blue', 'Grayscale', 'Green Yellow', 'Green', 'Marquee', 'Median', 'Office 2007 - 2010', 'Office 2013 - 2022', 'Office',\n 'Orange Red', 'Orange', 'Paper', 'Red Orange', 'Red Violet', 'Red', 'Slipstream', 'Violet II', 'Violet', 'Yellow Orange', 'Yellow'].forEach(function(item){\n me.fallbackSdkTranslations[item] = item;\n });\n\n this._state = {\n licenseType: false,\n isFromGatewayDownloadAs: false,\n isDocModified: false,\n docProtection: false\n };\n\n this.defaultTitleText = __APP_TITLE_TEXT__;\n this.stackMacrosRequests = [];\n\n const { t } = this.props;\n this._t = t('Main', {returnObjects:true});\n }\n\n initSdk() {\n const on_script_load = () => {\n !window.sdk_scripts && (window.sdk_scripts = ['../../../../sdkjs/common/AllFonts.js',\n '../../../../sdkjs/word/sdk-all-min.js']);\n let dep_scripts = ['../../../vendor/xregexp/xregexp-all-min.js',\n '../../../vendor/socketio/socket.io.min.js'];\n dep_scripts.push(...window.sdk_scripts);\n\n const promise_get_script = (scriptpath) => {\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = scriptpath;\n script.onload = () => {\n resolve('ok');\n };\n script.onerror = () => {\n reject('error');\n };\n\n document.body.appendChild(script);\n });\n };\n\n const loadConfig = data => {\n const { t } = this.props;\n const _t = t('Main', {returnObjects:true});\n EditorUIController.isSupportEditFeature();\n\n this.editorConfig = Object.assign({}, this.editorConfig, data.config);\n\n this.props.storeAppOptions.setConfigOptions(this.editorConfig, _t);\n\n this.editorConfig.lang && this.api.asc_setLocale(this.editorConfig.lang);\n\n let value = LocalStorage.getItem(\"de-mobile-macros-mode\");\n if (value === null) {\n value = this.editorConfig.customization ? this.editorConfig.customization.macrosMode : 'warn';\n value = (value === 'enable') ? 1 : (value === 'disable' ? 2 : 0);\n } else {\n value = parseInt(value);\n }\n this.props.storeApplicationSettings.changeMacrosSettings(value);\n\n value = LocalStorage.getItem(\"de-mobile-allow-macros-request\");\n this.props.storeApplicationSettings.changeMacrosRequest((value !== null) ? parseInt(value) : 0);\n\n this.props.storeAppOptions.wopi = this.editorConfig.wopi;\n Common.Notifications.trigger('configOptionsFill');\n };\n\n const loadDocument = data => {\n this.permissions = {};\n this.document = data.doc;\n let docInfo = {};\n\n if (data.doc) {\n this.permissions = Object.assign(this.permissions, data.doc.permissions);\n\n const _options = Object.assign({}, data.doc.options, this.editorConfig.actionLink || {});\n const _userOptions = this.props.storeAppOptions.user;\n const _user = new Asc.asc_CUserInfo();\n _user.put_Id(_userOptions.id);\n _user.put_FullName(_userOptions.fullname);\n _user.put_IsAnonymousUser(_userOptions.anonymous);\n\n docInfo = new Asc.asc_CDocInfo();\n docInfo.put_Id(data.doc.key);\n docInfo.put_Url(data.doc.url);\n docInfo.put_DirectUrl(data.doc.directUrl);\n docInfo.put_Title(data.doc.title);\n docInfo.put_Format(data.doc.fileType);\n docInfo.put_VKey(data.doc.vkey);\n docInfo.put_Options(_options);\n docInfo.put_UserInfo(_user);\n docInfo.put_CallbackUrl(this.editorConfig.callbackUrl);\n docInfo.put_Token(data.doc.token);\n docInfo.put_Permissions(data.doc.permissions);\n docInfo.put_EncryptedInfo(this.editorConfig.encryptionKeys);\n docInfo.put_Lang(this.editorConfig.lang);\n docInfo.put_Mode(this.editorConfig.mode);\n\n let type = /^(?:(pdf|djvu|xps|oxps))$/.exec(data.doc.fileType);\n let coEditMode = (type && typeof type[1] === 'string') ? 'strict' : // offline viewer for pdf|djvu|xps|oxps\n !(this.editorConfig.coEditing && typeof this.editorConfig.coEditing == 'object') ? 'fast' : // fast by default\n this.editorConfig.mode === 'view' && this.editorConfig.coEditing.change!==false ? 'fast' : // if can change mode in viewer - set fast for using live viewer\n this.editorConfig.coEditing.mode || 'fast';\n docInfo.put_CoEditingMode(coEditMode);\n\n let enable = !this.editorConfig.customization || (this.editorConfig.customization.macros !== false);\n docInfo.asc_putIsEnabledMacroses(!!enable);\n enable = !this.editorConfig.customization || (this.editorConfig.customization.plugins !== false);\n docInfo.asc_putIsEnabledPlugins(!!enable);\n\n if (type && typeof type[1] === 'string') {\n this.permissions.edit = this.permissions.review = false;\n }\n }\n\n const fileType = data?.doc.fileType;\n const isFormType = /^(pdf|docxf|oform)$/.test(fileType);\n const isPDF = fileType === 'pdf';\n\n if(isFormType) {\n this.changeEditorBrandColorForPdf();\n }\n\n if(isPDF) {\n if(this.permissions.fillForms === undefined) {\n this.permissions.fillForms = this.permissions.edit !== false;\n }\n\n this.permissions.edit = this.permissions.review = this.permissions.comment = false;\n }\n\n this.api.asc_registerCallback('asc_onGetEditorPermissions', onEditorPermissions);\n this.api.asc_registerCallback('asc_onDocumentContentReady', onDocumentContentReady);\n this.api.asc_registerCallback('asc_onLicenseChanged', this.onLicenseChanged.bind(this));\n this.api.asc_registerCallback('asc_onMacrosPermissionRequest', this.onMacrosPermissionRequest.bind(this));\n this.api.asc_registerCallback('asc_onRunAutostartMacroses', this.onRunAutostartMacroses.bind(this));\n this.api.asc_setDocInfo(docInfo);\n this.api.asc_getEditorPermissions(this.editorConfig.licenseUrl, this.editorConfig.customerId);\n\n // Document Info\n\n const storeDocumentInfo = this.props.storeDocumentInfo;\n storeDocumentInfo.setDataDoc(this.document);\n storeDocumentInfo.setDocInfo(docInfo);\n\n // Common.SharedSettings.set('document', data.doc);\n\n if (data.doc) {\n Common.Notifications.trigger('setdoctitle', data.doc.title);\n if (data.doc.info) {\n data.doc.info.author && console.log(\"Obsolete: The 'author' parameter of the document 'info' section is deprecated. Please use 'owner' instead.\");\n data.doc.info.created && console.log(\"Obsolete: The 'created' parameter of the document 'info' section is deprecated. Please use 'uploaded' instead.\");\n }\n }\n };\n\n const onEditorPermissions = params => {\n const licType = params.asc_getLicenseType();\n\n const { t } = this.props;\n const _t = t('Main', {returnObjects:true});\n // check licType\n if (Asc.c_oLicenseResult.Expired === licType ||\n Asc.c_oLicenseResult.Error === licType ||\n Asc.c_oLicenseResult.ExpiredTrial === licType ||\n Asc.c_oLicenseResult.NotBefore === licType ||\n Asc.c_oLicenseResult.ExpiredLimited === licType) {\n f7.dialog.create({\n title : Asc.c_oLicenseResult.NotBefore === licType ? _t.titleLicenseNotActive : _t.titleLicenseExp,\n text : Asc.c_oLicenseResult.NotBefore === licType ? _t.warnLicenseBefore : _t.warnLicenseExp\n }).open();\n return;\n }\n\n if ( this.onServerVersion(params.asc_getBuildVersion()) ) return;\n\n this.appOptions.canLicense = (licType === Asc.c_oLicenseResult.Success || licType === Asc.c_oLicenseResult.SuccessLimit);\n\n const storeAppOptions = this.props.storeAppOptions;\n const isForm = storeAppOptions.isForm;\n const editorConfig = window.native?.editorConfig;\n const config = storeAppOptions.config;\n const customization = config.customization;\n const isMobileForceView = customization?.mobileForceView !== undefined ? customization.mobileForceView : editorConfig?.mobileForceView !== undefined ? editorConfig.mobileForceView : true;\n\n storeAppOptions.setPermissionOptions(this.document, licType, params, this.permissions, EditorUIController.isSupportEditFeature());\n\n this.applyMode(storeAppOptions);\n\n if(!isForm && isMobileForceView) {\n this.api.asc_addRestriction(Asc.c_oAscRestrictionType.View);\n } else if(!isForm && !isMobileForceView) {\n storeAppOptions.changeViewerMode(false);\n } else {\n this.api.asc_addRestriction(Asc.c_oAscRestrictionType.OnlyForms)\n }\n\n this.api.asc_LoadDocument();\n this.api.Resize();\n };\n\n const onDocumentContentReady = () => {\n if (this._isDocReady)\n return;\n\n const { t } = this.props;\n const appOptions = this.props.storeAppOptions;\n const isOForm = appOptions.isOForm;\n const appSettings = this.props.storeApplicationSettings;\n\n f7.emit('resize');\n\n this._isDocReady = true;\n\n this.api.SetDrawingFreeze(false);\n\n Common.Notifications.trigger('preloader:close');\n Common.Notifications.trigger('preloader:endAction', Asc.c_oAscAsyncActionType['BlockInteraction'], this.LoadingDocument);\n\n appOptions.isRestrictedEdit && appOptions.canFillForms && this.api.asc_SetHighlightRequiredFields(true);\n\n let value = LocalStorage.getItem(\"de-settings-zoom\");\n const zf = (value !== null) ? parseInt(value) : (appOptions.customization && appOptions.customization.zoom ? parseInt(appOptions.customization.zoom) : 100);\n (zf === -1) ? this.api.zoomFitToPage() : ((zf === -2) ? this.api.zoomFitToWidth() : this.api.zoom(zf>0 ? zf : 100));\n\n value = LocalStorage.getBool(\"de-mobile-spellcheck\", !(appOptions.customization && appOptions.customization.spellcheck === false));\n appSettings.changeSpellCheck(value);\n this.api.asc_setSpellCheck(value);\n\n this.updateWindowTitle(true);\n\n value = LocalStorage.getBool(\"de-mobile-no-characters\");\n appSettings.changeNoCharacters(value);\n this.api.put_ShowParaMarks(value);\n\n value = LocalStorage.getBool(\"de-mobile-hidden-borders\");\n appSettings.changeShowTableEmptyLine(value);\n this.api.put_ShowTableEmptyLine(value);\n\n value = LocalStorage.getBool('mobile-view', true);\n\n if(value) {\n this.api.ChangeReaderMode();\n } else {\n appOptions.changeMobileView();\n }\n\n if (appOptions.isEdit && this.needToUpdateVersion) {\n Common.Notifications.trigger('api:disconnect');\n }\n\n Common.Gateway.on('processsaveresult', this.onProcessSaveResult.bind(this));\n Common.Gateway.on('processrightschange', this.onProcessRightsChange.bind(this));\n Common.Gateway.on('downloadas', this.onDownloadAs.bind(this));\n Common.Gateway.on('requestclose', this.onRequestClose.bind(this));\n Common.Gateway.on('setfavorite', this.onSetFavorite.bind(this));\n\n Common.Gateway.sendInfo({\n mode: appOptions.isEdit ? 'edit' : 'view'\n });\n\n this.api.Resize();\n this.api.zoomFitToWidth();\n this.api.asc_GetDefaultTableStyles && setTimeout(() => {this.api.asc_GetDefaultTableStyles()}, 1);\n this.applyLicense();\n\n Common.Notifications.trigger('document:ready');\n Common.Gateway.documentReady();\n appOptions.changeDocReady(true);\n\n if(isOForm) {\n f7.dialog.create({\n title: t('Main.notcriticalErrorTitle'),\n text: t('Main.textConvertForm'),\n buttons: [\n {\n text: t('Main.textDownloadPdf'),\n onClick: () => {\n this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.PDF, false))\n }\n },\n {\n text: t('Main.textCancel')\n }\n ]\n }).open();\n }\n };\n\n processArrayScripts(dep_scripts, promise_get_script)\n .then(() => {\n window[\"flat_desine\"] = true;\n const { t } = this.props;\n let _translate = t('Main.SDK', { returnObjects: true });\n\n if (!(typeof _translate === 'object' && _translate !== null && Object.keys(_translate).length > 0)) {\n _translate = this.fallbackSdkTranslations\n }\n\n let result = /[\\?\\&]fileType=\\b(pdf)|(djvu|xps|oxps)\\b&?/i.exec(window.location.search),\n isPDF = (!!result && result.length && typeof result[2] === 'string') || (!!result && result.length && typeof result[1] === 'string') && !window.isPDFForm;\n\n const config = {\n 'id-view' : 'editor_sdk',\n 'mobile' : true,\n 'translate': _translate\n };\n this.api = isPDF ? new Asc.PDFEditorApi(config) : new Asc.asc_docs_api(config);\n\n Common.Notifications.trigger('engineCreated', this.api);\n // Common.EditorApi = {get: () => this.api};\n\n // Set font rendering mode\n let value = LocalStorage.getItem(\"de-settings-fontrender\");\n if (value === null) {\n value = window.devicePixelRatio > 1 ? '1' : '0';\n }\n switch (value) {\n case '0': this.api.SetFontRenderingMode(3); break;\n case '1': this.api.SetFontRenderingMode(1); break;\n case '2': this.api.SetFontRenderingMode(2); break;\n }\n\n Common.Utils.Metric.setCurrentMetric(1); //pt\n\n this.appOptions = {};\n this.bindEvents();\n\n Common.Gateway.on('init', loadConfig);\n Common.Gateway.on('showmessage', this.onExternalMessage.bind(this));\n Common.Gateway.on('opendocument', loadDocument);\n Common.Gateway.appReady();\n\n Common.Gateway.on('internalcommand', function(data) {\n if (data.command === 'hardBack') {\n if ($$('.modal-in').length > 0) {\n if ( !($$('.error-dialog.modal-in').length > 0) ) {\n f7.dialog.close();\n }\n Common.Gateway.internalMessage('hardBack', false);\n } else\n Common.Gateway.internalMessage('hardBack', true);\n }\n });\n Common.Gateway.internalMessage('listenHardBack');\n }, error => {\n console.log('promise failed ' + error);\n }\n );\n };\n\n if ( About.developVersion() ) {\n const script = document.createElement(\"script\");\n script.src = \"../../../../sdkjs/develop/sdkjs/word/scripts.js\";\n script.async = true;\n script.onload = on_script_load;\n script.onerror = () => {\n console.log('error on load scripts');\n };\n\n document.body.appendChild(script);\n } else {\n on_script_load();\n }\n }\n\n changeEditorBrandColorForPdf() {\n const bodyElement = document.body;\n bodyElement.classList.add('pdf-view');\n\n if(Device.android) {\n bodyElement.classList.add('pdf-view__android');\n }\n }\n\n applyMode (appOptions) {\n this.api.asc_enableKeyEvents(appOptions.isEdit);\n this.api.asc_setViewMode(!appOptions.isEdit && !appOptions.isRestrictedEdit);\n appOptions.isRestrictedEdit && appOptions.canComments && this.api.asc_setRestriction(Asc.c_oAscRestrictionType.OnlyComments);\n appOptions.isRestrictedEdit && appOptions.canFillForms && this.api.asc_setRestriction(Asc.c_oAscRestrictionType.OnlyForms);\n\n // Set units\n let value = LocalStorage.getItem('de-mobile-settings-unit');\n value = (value !== null) ? parseInt(value) : (appOptions.customization && appOptions.customization.unit ? Common.Utils.Metric.c_MetricUnits[appOptions.customization.unit.toLocaleLowerCase()] : Common.Utils.Metric.getDefaultMetric());\n (value === undefined) && (value = Common.Utils.Metric.getDefaultMetric());\n Common.Utils.Metric.setCurrentMetric(value);\n this.api.asc_SetDocumentUnits((value === Common.Utils.Metric.c_MetricUnits.inch) ? Asc.c_oAscDocumentUnits.Inch : ((value===Common.Utils.Metric.c_MetricUnits.pt) ? Asc.c_oAscDocumentUnits.Point : Asc.c_oAscDocumentUnits.Millimeter));\n\n this.api.asc_registerCallback('asc_onDocumentModifiedChanged', this.onDocumentModifiedChanged.bind(this));\n this.api.asc_registerCallback('asc_onDocumentCanSaveChanged', this.onDocumentCanSaveChanged.bind(this));\n\n Common.Notifications.trigger('preloader:close');\n Common.Notifications.trigger('preloader:endAction', Asc.c_oAscAsyncActionType['BlockInteraction'], this.ApplyEditRights);\n\n if (!this._isDocReady) {\n Common.Notifications.trigger('preloader:beginAction', Asc.c_oAscAsyncActionType['BlockInteraction'], this.LoadingDocument);\n }\n\n // Message on window close\n window.onbeforeunload = this.onBeforeUnload.bind(this);\n window.onunload = this.onUnload.bind(this);\n }\n\n onDocumentModifiedChanged () {\n const isModified = this.api.asc_isDocumentCanSave();\n if (this._state.isDocModified !== isModified) {\n this._isDocReady && Common.Gateway.setDocumentModified(this.api.isDocumentModified());\n }\n\n this.updateWindowTitle();\n }\n\n onDocumentCanSaveChanged (isCanSave) {\n //\n }\n\n onBeforeUnload () {\n LocalStorage.save();\n\n if (this.api.isDocumentModified()) {\n this.api.asc_stopSaving();\n this.continueSavingTimer = window.setTimeout(() => {\n this.api.asc_continueSaving();\n }, 500);\n\n const { t } = this.props;\n const _t = t('Main', {returnObjects:true});\n return _t.leavePageText;\n }\n }\n\n onUnload () {\n if (this.continueSavingTimer)\n clearTimeout(this.continueSavingTimer);\n }\n\n onLicenseChanged (params) {\n const appOptions = this.props.storeAppOptions;\n const licType = params.asc_getLicenseType();\n \n if (licType !== undefined && (appOptions.canEdit || appOptions.isRestrictedEdit) && appOptions.config.mode !== 'view' &&\n (licType === Asc.c_oLicenseResult.Connections || licType === Asc.c_oLicenseResult.UsersCount || licType === Asc.c_oLicenseResult.ConnectionsOS || licType === Asc.c_oLicenseResult.UsersCountOS\n || licType === Asc.c_oLicenseResult.SuccessLimit && (appOptions.trialMode & Asc.c_oLicenseMode.Limited) !== 0))\n this._state.licenseType = licType;\n\n if (licType !== undefined && appOptions.canLiveView && (licType===Asc.c_oLicenseResult.ConnectionsLive || licType===Asc.c_oLicenseResult.ConnectionsLiveOS ||\n licType===Asc.c_oLicenseResult.UsersViewCount || licType===Asc.c_oLicenseResult.UsersViewCountOS))\n this._state.licenseType = licType;\n\n if (this._isDocReady && this._state.licenseType)\n this.applyLicense();\n }\n\n applyLicense () {\n const { t } = this.props;\n const _t = t('Main', {returnObjects:true});\n\n const warnNoLicense = _t.warnNoLicense.replace(/%1/g, __COMPANY_NAME__);\n const warnNoLicenseUsers = _t.warnNoLicenseUsers.replace(/%1/g, __COMPANY_NAME__);\n const textNoLicenseTitle = _t.textNoLicenseTitle.replace(/%1/g, __COMPANY_NAME__);\n const warnLicenseExceeded = _t.warnLicenseExceeded.replace(/%1/g, __COMPANY_NAME__);\n const warnLicenseUsersExceeded = _t.warnLicenseUsersExceeded.replace(/%1/g, __COMPANY_NAME__);\n\n const appOptions = this.props.storeAppOptions;\n const isForm = appOptions.isForm;\n\n if (appOptions.config.mode !== 'view' && !EditorUIController.isSupportEditFeature()) {\n let value = LocalStorage.getItem(\"de-opensource-warning\");\n value = (value !== null) ? parseInt(value) : 0;\n const now = (new Date).getTime();\n if (now - value > 86400000) {\n LocalStorage.setItem(\"de-opensource-warning\", now);\n f7.dialog.create({\n title: _t.notcriticalErrorTitle,\n text : _t.errorOpensource,\n buttons: [{text: 'OK'}]\n }).open();\n }\n Common.Notifications.trigger('toolbar:activatecontrols');\n return;\n }\n\n if (appOptions.config.mode === 'view') {\n if (appOptions.canLiveView && (this._state.licenseType===Asc.c_oLicenseResult.ConnectionsLive || this._state.licenseType===Asc.c_oLicenseResult.ConnectionsLiveOS ||\n this._state.licenseType===Asc.c_oLicenseResult.UsersViewCount || this._state.licenseType===Asc.c_oLicenseResult.UsersViewCountOS ||\n !appOptions.isAnonymousSupport && !!appOptions.config.user.anonymous)) {\n appOptions.canLiveView = false;\n this.api.asc_SetFastCollaborative(false);\n }\n Common.Notifications.trigger('toolbar:activatecontrols');\n } else if (!appOptions.isAnonymousSupport && !!appOptions.config.user.anonymous) {\n Common.Notifications.trigger('toolbar:activatecontrols');\n Common.Notifications.trigger('toolbar:deactivateeditcontrols');\n this.api.asc_coAuthoringDisconnect();\n Common.Notifications.trigger('api:disconnect');\n f7.dialog.create({\n title: _t.notcriticalErrorTitle,\n text : _t.warnLicenseAnonymous,\n buttons: [{text: 'OK'}]\n }).open();\n } else if (this._state.licenseType) {\n let license = this._state.licenseType;\n let buttons = [{text: 'OK'}];\n if ((appOptions.trialMode & Asc.c_oLicenseMode.Limited) !== 0 &&\n (license === Asc.c_oLicenseResult.SuccessLimit ||\n appOptions.permissionsLicense === Asc.c_oLicenseResult.SuccessLimit)\n ) {\n license = _t.warnLicenseLimitedRenewed;\n } else if (license === Asc.c_oLicenseResult.Connections || license === Asc.c_oLicenseResult.UsersCount) {\n license = (license===Asc.c_oLicenseResult.Connections) ? warnLicenseExceeded : warnLicenseUsersExceeded;\n } else {\n license = (license === Asc.c_oLicenseResult.ConnectionsOS) ? warnNoLicense : warnNoLicenseUsers;\n buttons = [{\n text: _t.textBuyNow,\n bold: true,\n onClick: function() {\n window.open(`${__PUBLISHER_URL__}`, \"_blank\");\n }\n },\n {\n text: _t.textContactUs,\n onClick: function() {\n window.open(`mailto:${__SALES_EMAIL__}`, \"_blank\");\n }\n }];\n }\n if (this._state.licenseType === Asc.c_oLicenseResult.SuccessLimit) {\n Common.Notifications.trigger('toolbar:activatecontrols');\n } else {\n Common.Notifications.trigger('toolbar:activatecontrols');\n Common.Notifications.trigger('toolbar:deactivateeditcontrols');\n this.api.asc_coAuthoringDisconnect();\n Common.Notifications.trigger('api:disconnect');\n }\n\n let value = LocalStorage.getItem(\"de-license-warning\");\n value = (value !== null) ? parseInt(value) : 0;\n const now = (new Date).getTime();\n\n if (now - value > 86400000) {\n LocalStorage.setItem(\"de-license-warning\", now);\n f7.dialog.create({\n title: textNoLicenseTitle,\n text : license,\n buttons: buttons\n }).open();\n }\n } else {\n if (!appOptions.isDesktopApp && !appOptions.canBrandingExt &&\n appOptions.config && appOptions.config.customization && (appOptions.config.customization.loaderName || appOptions.config.customization.loaderLogo)) {\n f7.dialog.create({\n title: _t.textPaidFeature,\n text : _t.textCustomLoader,\n buttons: [{\n text: _t.textContactUs,\n bold: true,\n onClick: () => {\n window.open(`mailto:${__SALES_EMAIL__}`, \"_blank\");\n }\n },\n { text: _t.textClose }]\n }).open();\n }\n Common.Notifications.trigger('toolbar:activatecontrols');\n }\n }\n\n onServerVersion (buildVersion) {\n if (this.changeServerVersion) return true;\n const { t } = this.props;\n const _t = t('Main', {returnObjects:true});\n\n if (About.appVersion() !== buildVersion && !About.compareVersions()) {\n this.changeServerVersion = true;\n f7.dialog.alert(\n _t.errorServerVersion,\n _t.titleServerVersion,\n () => {\n setTimeout(() => {Common.Gateway.updateVersion()}, 0);\n });\n return true;\n }\n return false;\n }\n\n bindEvents() {\n $$(window).on('resize', () => {\n this.api.Resize();\n });\n\n $$(window).on('popover:open popup:open sheet:open actions:open dialog:open searchbar:enable', () => {\n this.api.asc_enableKeyEvents(false);\n });\n\n this.api.asc_registerCallback('asc_onDocumentUpdateVersion', this.onUpdateVersion.bind(this));\n this.api.asc_registerCallback('asc_onServerVersion', this.onServerVersion.bind(this));\n this.api.asc_registerCallback('asc_onDocumentName', this.onDocumentName.bind(this));\n this.api.asc_registerCallback('asc_onPrintUrl', this.onPrintUrl.bind(this));\n this.api.asc_registerCallback('asc_onPrint', this.onPrint.bind(this));\n\n EditorUIController.initThemeColors && EditorUIController.initThemeColors();\n\n this.api.asc_registerCallback('asc_onDownloadUrl', this.onDownloadUrl.bind(this));\n this.api.asc_registerCallback('asc_onExpiredToken', this.onExpiredToken.bind(this));\n\n const storeDocumentSettings = this.props.storeDocumentSettings;\n this.api.asc_registerCallback('asc_onPageOrient', isPortrait => {\n storeDocumentSettings.resetPortrait(isPortrait);\n });\n this.api.asc_registerCallback('asc_onDocSize', (w, h) => {\n storeDocumentSettings.changeDocSize(w, h);\n });\n\n this.api.asc_registerCallback('asc_onShowContentControlsActions', (obj, x, y) => {\n const storeAppOptions = this.props.storeAppOptions;\n const isForm = storeAppOptions.isForm;\n const isViewer = storeAppOptions.isViewer;\n\n if (!storeAppOptions.isEdit && !(storeAppOptions.isRestrictedEdit && storeAppOptions.canFillForms) || this.props.users.isDisconnected || (isViewer && !isForm)) return;\n\n switch (obj.type) {\n case Asc.c_oAscContentControlSpecificType.DateTime:\n this.onShowDateActions(obj, x, y);\n break;\n case Asc.c_oAscContentControlSpecificType.Picture:\n if (obj.pr && obj.pr.get_Lock) {\n let lock = obj.pr.get_Lock();\n if (lock == Asc.c_oAscSdtLockType.SdtContentLocked || lock == Asc.c_oAscSdtLockType.ContentLocked)\n return;\n }\n this.api.asc_addImage(obj);\n setTimeout(() => {\n this.api.asc_UncheckContentControlButtons();\n }, 500);\n break;\n case Asc.c_oAscContentControlSpecificType.DropDownList:\n case Asc.c_oAscContentControlSpecificType.ComboBox:\n this.onShowListActions(obj, x, y);\n break;\n }\n });\n\n const storeTextSettings = this.props.storeTextSettings;\n storeTextSettings.resetFontsRecent(LocalStorage.getItem('dde-settings-recent-fonts'));\n\n EditorUIController.initFonts && EditorUIController.initFonts(storeTextSettings);\n EditorUIController.initFocusObjects && EditorUIController.initFocusObjects(this.props.storeFocusObjects);\n\n this.api.asc_registerCallback('asc_onVerticalAlign', (typeBaseline) => {\n storeTextSettings.resetTypeBaseline(typeBaseline);\n });\n this.api.asc_registerCallback('asc_onPrAlign', (align) => {\n storeTextSettings.resetParagraphAlign(align);\n });\n this.api.asc_registerCallback('asc_onTextColor', (color) => {\n storeTextSettings.resetTextColor(color);\n });\n this.api.asc_registerCallback('asc_onParaSpacingLine', (vc) => {\n storeTextSettings.resetLineSpacing(vc);\n });\n\n this.api.asc_registerCallback('asc_onTextHighLight', color => {\n let textPr = this.api.get_TextProps().get_TextPr();\n\n if(textPr) {\n color = textPr.get_HighLight();\n storeTextSettings.resetHighlightColor(color);\n }\n });\n\n // link settings\n const storeLinkSettings = this.props.storeLinkSettings;\n this.api.asc_registerCallback('asc_onCanAddHyperlink', (value) => {\n storeLinkSettings.canAddHyperlink(value);\n });\n\n //paragraph settings\n EditorUIController.initEditorStyles && EditorUIController.initEditorStyles(this.props.storeParagraphSettings);\n\n //table settings\n EditorUIController.initTableTemplates && EditorUIController.initTableTemplates(this.props.storeTableSettings);\n\n //chart settings\n EditorUIController.updateChartStyles && EditorUIController.updateChartStyles(this.props.storeChartSettings, this.props.storeFocusObjects);\n\n // Document Info\n\n const storeDocumentInfo = this.props.storeDocumentInfo;\n\n this.api.asc_registerCallback(\"asc_onGetDocInfoStart\", () => {\n this.timerLoading = setTimeout(() => {\n storeDocumentInfo.switchIsLoaded(false);\n }, 2000);\n });\n\n this.api.asc_registerCallback(\"asc_onGetDocInfoStop\", () => {\n storeDocumentInfo.switchIsLoaded(true);\n });\n\n this.api.asc_registerCallback(\"asc_onDocInfo\", (obj) => {\n clearTimeout(this.timerLoading);\n\n this.objectInfo = obj;\n if(!this.timerDocInfo) {\n this.timerDocInfo = setInterval(() => {\n storeDocumentInfo.changeCount(this.objectInfo);\n }, 300);\n storeDocumentInfo.changeCount(this.objectInfo);\n }\n });\n\n this.api.asc_registerCallback('asc_onGetDocInfoEnd', () => {\n clearTimeout(this.timerLoading);\n clearInterval(this.timerDocInfo);\n storeDocumentInfo.changeCount(this.objectInfo);\n });\n\n this.api.asc_registerCallback('asc_onMeta', (meta) => {\n if(meta) {\n storeDocumentInfo.changeTitle(meta.title);\n Common.Gateway.metaChange(meta);\n }\n });\n\n // Color Schemes\n\n this.api.asc_registerCallback('asc_onSendThemeColorSchemes', (arr) => {\n storeDocumentSettings.addSchemes(arr);\n });\n\n // Downloaded Advanced Options\n \n this.api.asc_registerCallback('asc_onAdvancedOptions', (type, advOptions, mode, formatOptions) => {\n const { t } = this.props;\n const _t = t(\"Settings\", { returnObjects: true });\n const storeAppOptions = this.props.storeAppOptions;\n\n if(type == Asc.c_oAscAdvancedOptionsID.DRM) {\n storeAppOptions.setEncryptionFile(true);\n onAdvancedOptions(type, _t, this._isDocReady, this.props.storeAppOptions.canRequestClose, this.isDRM);\n this.isDRM = true;\n }\n });\n\n // Protection document\n this.api.asc_registerCallback('asc_onChangeDocumentProtection', this.onChangeProtectDocument.bind(this));\n // this.api.asc_registerCallback('asc_onLockDocumentProtection', this.onLockDocumentProtection.bind(this));\n\n // Toolbar settings\n\n const storeToolbarSettings = this.props.storeToolbarSettings;\n this.api.asc_registerCallback('asc_onCanUndo', (can) => {\n if (this.props.users.isDisconnected) return;\n storeToolbarSettings.setCanUndo(can);\n });\n this.api.asc_registerCallback('asc_onCanRedo', (can) => {\n if (this.props.users.isDisconnected) return;\n storeToolbarSettings.setCanRedo(can);\n });\n\n this.api.asc_registerCallback('asc_onReplaceAll', this.onApiTextReplaced.bind(this));\n\n const storeNavigation = this.props.storeNavigation;\n\n this.api.asc_registerCallback('asc_onViewerBookmarksUpdate', (bookmarks) => {\n storeNavigation.initBookmarks(bookmarks);\n });\n\n Common.Notifications.on('markfavorite', this.markFavorite.bind(this));\n }\n\n markFavorite(favorite) {\n Common.Gateway.metaChange({ favorite });\n }\n\n onSetFavorite(favorite) {\n const appOptions = this.props.storeAppOptions;\n appOptions.canFavorite && appOptions.setFavorite(!!favorite);\n }\n\n onExpiredToken() {\n const currentRev = this.props.storeVersionHistory.currentVersion.revision;\n \n setTimeout(() => {\n Common.Gateway.requestHistoryData(currentRev);\n }, 10);\n }\n\n onChangeProtectDocument() {\n const storeVersionHistory = this.props.storeVersionHistory;\n if (storeVersionHistory.isVersionHistoryMode) return;\n\n const { t } = this.props;\n const storeAppOptions = this.props.storeAppOptions;\n const props = this.getDocProps(true);\n const isProtected = props && (props.isReadOnly || props.isCommentsOnly || props.isFormsOnly || props.isReviewOnly || props.isTrackedChanges);\n let textWarningDialog;\n\n if(!storeAppOptions.isReviewOnly) {\n if(props.isReviewOnly) {\n this.api.asc_SetLocalTrackRevisions(true);\n } else {\n this.api.asc_SetLocalTrackRevisions(false);\n }\n }\n\n switch(props.type) {\n case Asc.c_oAscEDocProtect.ReadOnly:\n textWarningDialog = t('Main.textDialogProtectedOnlyView');\n break;\n case Asc.c_oAscEDocProtect.Comments:\n textWarningDialog = t('Main.textDialogProtectedEditComments');\n break;\n case Asc.c_oAscEDocProtect.TrackedChanges: \n textWarningDialog = t('Main.textDialogProtectedChangesTracked')\n break;\n case Asc.c_oAscEDocProtect.Forms:\n textWarningDialog = t('Main.textDialogProtectedFillForms');\n break;\n }\n\n storeAppOptions.setProtection(isProtected);\n storeAppOptions.setTypeProtection(props.type);\n props && this.applyRestrictions(props.type);\n Common.Notifications.trigger('protect:doclock', props);\n\n if(isProtected) {\n f7.dialog.create({\n title: t('Main.titleDialogProtectedDocument'),\n text: textWarningDialog,\n buttons: [\n {\n text: t('Main.textOk')\n }\n ]\n }).open();\n }\n }\n\n applyRestrictions(type) {\n const storeAppOptions = this.props.storeAppOptions;\n\n if (type === Asc.c_oAscEDocProtect.ReadOnly) {\n this.api.asc_setRestriction(Asc.c_oAscRestrictionType.View);\n } else if (type === Asc.c_oAscEDocProtect.Comments) {\n this.api.asc_setRestriction(storeAppOptions.canComments ? Asc.c_oAscRestrictionType.OnlyComments : Asc.c_oAscRestrictionType.View);\n } else if (type === Asc.c_oAscEDocProtect.Forms) {\n this.api.asc_setRestriction(storeAppOptions.canFillForms ? Asc.c_oAscRestrictionType.OnlyForms : Asc.c_oAscRestrictionType.View);\n } else { \n if (storeAppOptions?.isRestrictedEdit) {\n storeAppOptions.canComments && this.api.asc_setRestriction(Asc.c_oAscRestrictionType.OnlyComments);\n storeAppOptions.canFillForms && this.api.asc_setRestriction(Asc.c_oAscRestrictionType.OnlyForms);\n } else {\n // this.api.asc_setRestriction(Asc.c_oAscRestrictionType.None);\n this.api.asc_setRestriction(Asc.c_oAscRestrictionType.View);\n }\n }\n };\n\n getDocProps(isUpdate) {\n const storeAppOptions = this.props.storeAppOptions;\n if (!storeAppOptions || !storeAppOptions.isEdit && !storeAppOptions.isRestrictedEdit) return;\n\n if (isUpdate || !this._state.docProtection) {\n const props = this.api.asc_getDocumentProtection();\n const type = props ? props.asc_getEditType() : Asc.c_oAscEDocProtect.None;\n\n this._state.docProtection = {\n type: type,\n isReadOnly: type === Asc.c_oAscEDocProtect.ReadOnly,\n isCommentsOnly: type === Asc.c_oAscEDocProtect.Comments,\n isReviewOnly: type === Asc.c_oAscEDocProtect.TrackedChanges,\n isFormsOnly: type === Asc.c_oAscEDocProtect.Forms,\n isTrackedChanges: type === Asc.c_oAscEDocProtect.TrackedChanges\n };\n }\n\n return this._state.docProtection;\n }\n\n onApiTextReplaced(found, replaced) {\n const { t } = this.props;\n\n if (found) { \n f7.dialog.alert(null, !(found - replaced > 0) ? t('Main.textReplaceSuccess').replace(/\\{0\\}/, `${replaced}`) : t('Main.textReplaceSkipped').replace(/\\{0\\}/, `${found - replaced}`));\n } else {\n f7.dialog.alert(null, t('Main.textNoMatches'));\n }\n }\n\n onShowDateActions(obj, x, y) {\n const { t } = this.props;\n const boxSdk = $$('#editor_sdk');\n\n let props = obj.pr,\n specProps = props.get_DateTimePr(),\n isPhone = Device.isPhone,\n controlsContainer = boxSdk.find('#calendar-target-element'),\n _dateObj = props;\n\n if (controlsContainer.length < 1) {\n controlsContainer = $$('
          ');\n boxSdk.append(controlsContainer);\n }\n\n controlsContainer.css({left: `${x}px`, top: `${y}px`});\n\n const val = specProps ? specProps.get_FullDate() : undefined;\n this.cmpCalendar = f7.calendar.create({\n inputEl: '#calendar-target-element',\n dayNamesShort: [t('Edit.textSu'), t('Edit.textMo'), t('Edit.textTu'), t('Edit.textWe'), t('Edit.textTh'), t('Edit.textFr'), t('Edit.textSa')],\n monthNames: [t('Edit.textJanuary'), t('Edit.textFebruary'), t('Edit.textMarch'), t('Edit.textApril'), t('Edit.textMay'), t('Edit.textJune'), t('Edit.textJuly'), t('Edit.textAugust'), t('Edit.textSeptember'), t('Edit.textOctober'), t('Edit.textNovember'), t('Edit.textDecember')],\n backdrop: isPhone ? false : true,\n closeByBackdropClick: isPhone ? false : true,\n value: [val ? new Date(val) : new Date()],\n openIn: isPhone ? 'sheet' : 'popover',\n on: {\n change: (calendar, value) => {\n if(calendar.initialized && value[0]) {\n let specProps = _dateObj.get_DateTimePr();\n specProps.put_FullDate(new Date(value[0]));\n this.api.asc_SetContentControlDatePickerDate(specProps);\n calendar.close();\n this.api.asc_UncheckContentControlButtons();\n }\n }\n }\n });\n\n setTimeout(() => {\n this.cmpCalendar.open();\n }, 100)\n }\n\n onShowListActions(obj, x, y) {\n if(!Device.isPhone) {\n const boxSdk = $$('#editor_sdk');\n let dropdownListTarget = boxSdk.find('#dropdown-list-target');\n \n if (dropdownListTarget.length < 1) {\n dropdownListTarget = $$('
          ');\n boxSdk.append(dropdownListTarget);\n }\n \n dropdownListTarget.css({left: `${x}px`, top: `${y}px`});\n }\n\n Common.Notifications.trigger('openDropdownList', obj);\n }\n\n onProcessSaveResult (data) {\n this.api.asc_OnSaveEnd(data.result);\n\n if (data && data.result === false) {\n const { t } = this.props;\n const _t = t('Main', {returnObjects:true});\n\n f7.dialog.alert(\n (!data.message) ? _t.errorProcessSaveResult : data.message,\n _t.criticalErrorTitle\n );\n }\n }\n\n onProcessRightsChange (data) {\n if (data && data.enabled === false) {\n const appOptions = this.props.storeAppOptions;\n const old_rights = appOptions.lostEditingRights;\n appOptions.changeEditingRights(!old_rights);\n this.api.asc_coAuthoringDisconnect();\n Common.Notifications.trigger('api:disconnect');\n\n if (!old_rights) {\n const { t } = this.props;\n const _t = t('Main', {returnObjects:true});\n\n f7.dialog.alert(\n (!data.message) ? _t.warnProcessRightsChange : data.message,\n _t.notcriticalErrorTitle,\n () => { appOptions.changeEditingRights(false); }\n );\n }\n }\n }\n\n onDownloadAs(format) {\n const appOptions = this.props.storeAppOptions;\n\n if (!appOptions.canDownload && !appOptions.canDownloadOrigin) {\n const { t } = this.props;\n const _t = t('Main', {returnObjects:true});\n Common.Gateway.reportError(Asc.c_oAscError.ID.AccessDeny, _t.errorAccessDeny);\n return;\n }\n\n this._state.isFromGatewayDownloadAs = true;\n\n let _format = (format && (typeof format == 'string')) ? Asc.c_oAscFileType[format.toUpperCase()] : null,\n _defaultFormat = null,\n textParams,\n _supported = [\n Asc.c_oAscFileType.TXT,\n Asc.c_oAscFileType.RTF,\n Asc.c_oAscFileType.ODT,\n Asc.c_oAscFileType.DOCX,\n Asc.c_oAscFileType.HTML,\n Asc.c_oAscFileType.DOTX,\n Asc.c_oAscFileType.OTT,\n Asc.c_oAscFileType.FB2,\n Asc.c_oAscFileType.EPUB,\n Asc.c_oAscFileType.DOCM,\n Asc.c_oAscFileType.JPG,\n Asc.c_oAscFileType.PNG\n ];\n const type = /^(?:(pdf|djvu|xps|oxps))$/.exec(this.document.fileType);\n\n if (type && typeof type[1] === 'string' && !appOptions.isForm) {\n if (!(format && (typeof format == 'string')) || type[1] === format.toLowerCase()) {\n const options = new Asc.asc_CDownloadOptions();\n options.asc_setIsDownloadEvent(true);\n options.asc_setIsSaveAs(true);\n this.api.asc_DownloadOrigin(options);\n return;\n }\n\n if (/^xps|oxps$/.test(this.document.fileType))\n _supported = _supported.concat([Asc.c_oAscFileType.PDF, Asc.c_oAscFileType.PDFA]);\n else if (/^djvu$/.test(this.document.fileType)) {\n _supported = [Asc.c_oAscFileType.PDF];\n }\n\n textParams = new AscCommon.asc_CTextParams(Asc.c_oAscTextAssociation.PlainLine);\n } else {\n _supported = _supported.concat([Asc.c_oAscFileType.PDF, Asc.c_oAscFileType.PDFA]);\n _defaultFormat = Asc.c_oAscFileType.DOCX;\n }\n\n if (appOptions.canFeatureForms && !/^djvu$/.test(this.document.fileType)) {\n _supported = _supported.concat([Asc.c_oAscFileType.DOCXF]);\n }\n if (!_format || _supported.indexOf(_format) < 0)\n _format = _defaultFormat;\n\n const options = new Asc.asc_CDownloadOptions(_format, true);\n options.asc_setIsSaveAs(true);\n\n if(_format) {\n textParams && options.asc_setTextParams(textParams);\n this.api.asc_DownloadAs(options);\n } else {\n this.api.asc_DownloadOrigin(options);\n }\n }\n\n onDownloadUrl (url, fileType) {\n if (this._state.isFromGatewayDownloadAs) {\n Common.Gateway.downloadAs(url, fileType);\n }\n\n this._state.isFromGatewayDownloadAs = false;\n }\n\n onRequestClose () {\n const { t } = this.props;\n const _t = t(\"Toolbar\", { returnObjects: true });\n\n if (this.api.isDocumentModified()) {\n this.api.asc_stopSaving();\n\n f7.dialog.create({\n title: _t.dlgLeaveTitleText,\n text: _t.dlgLeaveMsgText,\n verticalButtons: true,\n buttons : [\n {\n text: _t.leaveButtonText,\n onClick: () => {\n this.api.asc_undoAllChanges();\n this.api.asc_continueSaving();\n Common.Gateway.requestClose();\n }\n },\n {\n text: _t.stayButtonText,\n bold: true,\n onClick: () => {\n this.api.asc_continueSaving();\n }\n }\n ]\n }).open();\n } else {\n Common.Gateway.requestClose();\n }\n }\n\n onUpdateVersion (callback) {\n const { t } = this.props;\n const _t = t('Main', {returnObjects:true});\n\n this.needToUpdateVersion = true;\n Common.Notifications.trigger('preloader:endAction', Asc.c_oAscAsyncActionType['BlockInteraction'], this.LoadingDocument);\n\n f7.dialog.alert(\n _t.errorUpdateVersion,\n _t.titleUpdateVersion,\n () => {\n Common.Gateway.updateVersion();\n if (callback) {\n callback.call(this);\n }\n Common.Notifications.trigger('preloader:beginAction', Asc.c_oAscAsyncActionType['BlockInteraction'], this.LoadingDocument);\n });\n }\n\n onDocumentName () {\n this.updateWindowTitle(true);\n }\n\n updateWindowTitle (force) {\n const isModified = this.api.isDocumentModified();\n if (this._state.isDocModified !== isModified || force) {\n const title = this.defaultTitleText;\n\n if (window.document.title != title) {\n window.document.title = title;\n }\n\n this._isDocReady && (this._state.isDocModified !== isModified) && Common.Gateway.setDocumentModified(isModified);\n this._state.isDocModified = isModified;\n }\n }\n\n onPrint () {\n if (!this.props.storeAppOptions.canPrint) return;\n\n if (this.api)\n this.api.asc_Print();\n Common.component.Analytics.trackEvent('Print');\n }\n\n onPrintUrl (url) {\n if (this.iframePrint) {\n this.iframePrint.parentNode.removeChild(this.iframePrint);\n this.iframePrint = null;\n }\n\n if (!this.iframePrint) {\n this.iframePrint = document.createElement(\"iframe\");\n this.iframePrint.id = \"id-print-frame\";\n this.iframePrint.style.display = 'none';\n this.iframePrint.style.visibility = \"hidden\";\n this.iframePrint.style.position = \"fixed\";\n this.iframePrint.style.right = \"0\";\n this.iframePrint.style.bottom = \"0\";\n document.body.appendChild(this.iframePrint);\n this.iframePrint.onload = function() {\n this.iframePrint.contentWindow.focus();\n this.iframePrint.contentWindow.print();\n this.iframePrint.contentWindow.blur();\n window.focus();\n };\n }\n\n if (url) {\n this.iframePrint.src = url;\n }\n }\n\n onExternalMessage (msg) {\n if (msg && msg.msg) {\n msg.msg = (msg.msg).toString();\n f7.notification.create({\n //title: uiApp.params.modalTitle,\n text: [msg.msg.charAt(0).toUpperCase() + msg.msg.substring(1)],\n closeButton: true\n }).open();\n\n Common.component.Analytics.trackEvent('External Error');\n }\n }\n\n onRunAutostartMacroses () {\n const config = this.props.storeAppOptions.config;\n const enable = !config.customization || (config.customization.macros !== false);\n if (enable) {\n const value = this.props.storeApplicationSettings.macrosMode;\n if (value === 1) {\n this.api.asc_runAutostartMacroses();\n } else if (value === 0) {\n const { t } = this.props;\n const _t = t('Main', {returnObjects:true});\n f7.dialog.create({\n title: _t.notcriticalErrorTitle,\n text: _t.textHasMacros,\n content: `
          \n \n ${_t.textRemember}\n
          `,\n buttons: [{\n text: _t.textYes,\n onClick: () => {\n const dontshow = $$('input[name=\"checkbox-show-macros\"]').prop('checked');\n if (dontshow) {\n this.props.storeApplicationSettings.changeMacrosSettings(1);\n LocalStorage.setItem(\"de-mobile-macros-mode\", 1);\n }\n setTimeout(() => {\n this.api.asc_runAutostartMacroses();\n }, 1);\n }},\n {\n text: _t.textNo,\n onClick: () => {\n const dontshow = $$('input[name=\"checkbox-show-macros\"]').prop('checked');\n if (dontshow) {\n this.props.storeApplicationSettings.changeMacrosSettings(2);\n LocalStorage.setItem(\"de-mobile-macros-mode\", 2);\n }\n }\n }]\n }).open();\n }\n }\n }\n\n onMacrosPermissionRequest (url, callback) {\n if (url && callback) {\n this.stackMacrosRequests.push({url: url, callback: callback});\n if (this.stackMacrosRequests.length>1) {\n return;\n }\n } else if (this.stackMacrosRequests.length>0) {\n url = this.stackMacrosRequests[0].url;\n callback = this.stackMacrosRequests[0].callback;\n } else\n return;\n\n const value = this.props.storeApplicationSettings.macrosRequest;\n if (value>0) {\n callback && callback(value === 1);\n this.stackMacrosRequests.shift();\n this.onMacrosPermissionRequest();\n } else {\n const { t } = this.props;\n const _t = t('Main', {returnObjects:true});\n f7.dialog.create({\n title: _t.notcriticalErrorTitle,\n text: _t.textRequestMacros.replace('%1', url),\n cssClass: 'dlg-macros-request',\n content: `
          \n \n ${_t.textRemember}\n
          `,\n buttons: [{\n text: _t.textYes,\n onClick: () => {\n const dontshow = $$('input[name=\"checkbox-show-macros\"]').prop('checked');\n if (dontshow) {\n this.props.storeApplicationSettings.changeMacrosRequest(1);\n LocalStorage.setItem(\"de-mobile-allow-macros-request\", 1);\n }\n setTimeout(() => {\n if (callback) callback(true);\n this.stackMacrosRequests.shift();\n this.onMacrosPermissionRequest();\n }, 1);\n }},\n {\n text: _t.textNo,\n onClick: () => {\n const dontshow = $$('input[name=\"checkbox-show-macros\"]').prop('checked');\n if (dontshow) {\n this.props.storeApplicationSettings.changeMacrosRequest(2);\n LocalStorage.setItem(\"de-mobile-allow-macros-request\", 2);\n }\n setTimeout(() => {\n if (callback) callback(false);\n this.stackMacrosRequests.shift();\n this.onMacrosPermissionRequest();\n }, 1);\n }\n }]\n }).open();\n }\n }\n\n render() {\n return (\n \n \n \n \n \n \n {EditorUIController.getEditCommentControllers && EditorUIController.getEditCommentControllers()}\n \n \n \n \n \n )\n }\n\n componentDidMount() {\n Common.EditorApi = {get: () => this.api};\n this.initSdk();\n }\n}\n\nconst translated = withTranslation()(MainController);\nexport {translated as MainController};\n","export const processArrayScripts = async (array, fn) => {\n\tconst results = [];\n\n\tfor (const item of array) {\n try {\n const data = await fn(item);\n results.push(data);\n } catch (error) {\n console.log(`Error with processing element ${item}:`, error);\n continue;\n }\n\t}\n\n\treturn results;\n};","import React from 'react';\n\nimport { App, View } from 'framework7-react';\nimport { f7ready } from 'framework7-react';\n\nimport '../../../../common/Analytics.js';\n\nimport '../../../../common/Gateway.js';\nimport '../../../../common/main/lib/util/utils.js';\n\nimport routes from '../router/routes';\n\nimport Notifications from '../../../../common/mobile/utils/notifications.js'\nimport {MainController} from '../controller/Main';\nimport {Device} from '../../../../common/mobile/utils/device'\nimport {Themes} from '../../../../common/mobile/lib/controller/Themes'\n\nconst f7params = {\n name: 'Desktop Editor', // App name\n theme: 'auto', // Automatic theme detection\n routes: routes, // App routes\n};\n\nexport default class extends React.Component {\n constructor(props) {\n super(props);\n\n Common.Notifications = new Notifications();\n // Themes.init();\n }\n\n render() {\n return (\n \n {/* Your main view, should have \"view-main\" class */}\n \n \n \n )\n }\n\n componentDidMount() {\n f7ready(f7 => {\n // Call F7 APIs here\n Device.initDom();\n });\n }\n}\n","import {action, observable, computed, makeObservable} from 'mobx';\n\nexport class storeDocumentSettings {\n constructor() {\n makeObservable(this, {\n isPortrait: observable,\n widthDocument: observable,\n heightDocument: observable,\n allSchemes: observable,\n resetPortrait: action,\n changeDocSize: action,\n pageSizesIndex: computed,\n addSchemes: action\n });\n }\n\n isPortrait = true;\n\n resetPortrait (isPortrait) {\n this.isPortrait = isPortrait === true;\n }\n\n //Document Formats\n\n widthDocument;\n heightDocument;\n\n changeDocSize (width, height) {\n let w = width;\n let h = height;\n if (!this.isPortrait) {\n const tempW = w;\n w = h;\n h = tempW;\n }\n this.widthDocument = w;\n this.heightDocument = h;\n }\n\n getPageSizesList () {\n const txtCm = Common.Utils.Metric.getMetricName(Common.Utils.Metric.c_MetricUnits.cm);\n const pageSizes = [\n { caption: 'US Letter', subtitle: '21,59 ' + txtCm + ' x 27,94 ' + txtCm, value: [215.9, 279.4] },\n { caption: 'US Legal', subtitle: '21,59 ' + txtCm + ' x 35,56 ' + txtCm, value: [215.9, 355.6] },\n { caption: 'A4', subtitle: '21 ' + txtCm + ' x 29,7 ' + txtCm, value: [210, 297] },\n { caption: 'A5', subtitle: '14,8 ' + txtCm + ' x 21 ' + txtCm, value: [148, 210] },\n { caption: 'B5', subtitle: '17,6 ' + txtCm + ' x 25 ' + txtCm, value: [176, 250] },\n { caption: 'Envelope #10', subtitle: '10,48 ' + txtCm + ' x 24,13 ' + txtCm, value: [104.8, 241.3] },\n { caption: 'Envelope DL', subtitle: '11 ' + txtCm + ' x 22 ' + txtCm, value: [110, 220] },\n { caption: 'Tabloid', subtitle: '27,94 ' + txtCm + ' x 43,18 ' + txtCm, value: [279.4, 431.8] },\n { caption: 'A3', subtitle: '29,7 ' + txtCm + ' x 42 ' + txtCm, value: [297, 420] },\n { caption: 'Tabloid Oversize', subtitle: '29,69 ' + txtCm + ' x 45,72 ' + txtCm, value: [296.9, 457.2] },\n { caption: 'ROC 16K', subtitle: '19,68 ' + txtCm + ' x 27,3 ' + txtCm, value: [196.8, 273] },\n { caption: 'Envelope Choukei 3', subtitle: '12 ' + txtCm + ' x 23,5 ' + txtCm, value: [120, 235] },\n { caption: 'Super B/A3', subtitle: '30,5 ' + txtCm + ' x 48,7 ' + txtCm, value: [305, 487] },\n { caption: 'A0', subtitle: '84,1 ' + txtCm + ' x 118,9 ' + txtCm, value: [841, 1189] },\n { caption: 'A1', subtitle: '59,4 ' + txtCm + ' x 84,1 ' + txtCm, value: [594, 841] },\n { caption: 'A2', subtitle: '42 ' + txtCm + ' x 59,4 ' + txtCm, value: [420, 594] },\n { caption: 'A6', subtitle: '10,5 ' + txtCm + ' x 14,8 ' + txtCm, value: [105, 148] }\n ];\n return pageSizes;\n }\n \n get pageSizesIndex () {\n let w = this.widthDocument;\n let h = this.heightDocument;\n let ind = -1;\n const pageSizes = this.getPageSizesList();\n pageSizes.forEach(function callback(size, index) {\n if (Math.abs(size.value[0] - w) < 0.1 && Math.abs(size.value[1] - h) < 0.1) {\n ind = index;\n }\n }, this);\n if (ind === -1) {\n ind = -1;\n }\n return ind;\n }\n\n // Color Schemes\n\n allSchemes;\n\n addSchemes(arr) {\n this.allSchemes = arr;\n }\n\n}\n","import {action, observable, computed, makeObservable} from 'mobx';\nimport EditorUIController from '../lib/patch'\n\nexport class storeFocusObjects {\n constructor() {\n makeObservable(this, {\n _focusObjects: observable,\n _headerType: observable,\n resetFocusObjects: action,\n settings: computed,\n headerType: computed,\n headerObject: computed,\n paragraphObject: computed,\n shapeObject: computed,\n imageObject: computed,\n tableObject: computed,\n isTableInStack: computed,\n chartObject: computed,\n linkObject: computed,\n objectLocked: computed\n });\n }\n\n _focusObjects = [];\n _headerType = 1;\n\n resetFocusObjects (objects) {\n this._focusObjects = objects;\n }\n\n get settings() {\n return !!this.intf ? this.intf.filterFocusObjects() : null;\n }\n\n get headerType() {\n for (let object of this._focusObjects) {\n const type = object.get_ObjectType();\n if (Asc.c_oAscTypeSelectElement.Header === type) {\n return object.get_ObjectValue().get_Type();\n }\n }\n return this._headerType;\n }\n\n get headerObject() {\n return !!this.intf ? this.intf.getHeaderObject() : null;\n }\n\n get paragraphObject() {\n return !!this.intf ? this.intf.getParagraphObject() : null;\n }\n\n get shapeObject() {\n return !!this.intf ? this.intf.getShapeObject() : null;\n }\n\n get imageObject() {\n return !!this.intf ? this.intf.getImageObject() : null;\n }\n\n get tableObject() {\n return !!this.intf ? this.intf.getTableObject() : null;\n }\n\n get isTableInStack() {\n for (let object of this._focusObjects) {\n if (object.get_ObjectType() == Asc.c_oAscTypeSelectElement.Table) {\n return true;\n }\n }\n return false;\n }\n\n get chartObject() {\n return !!this.intf ? this.intf.getChartObject() : null;\n }\n \n get linkObject() {\n return !!this.intf ? this.intf.getLinkObject() : null;\n }\n\n get objectLocked() {\n if (this._focusObjects && this._focusObjects.length > 0) {\n const getTopObject = (objects) => {\n const arrObj = objects;\n let obj;\n for (let i=arrObj.length-1; i>=0; i--) {\n if (arrObj[i].get_ObjectType() != Asc.c_oAscTypeSelectElement.SpellCheck) {\n obj = arrObj[i];\n break;\n }\n }\n return obj;\n };\n const topObject = getTopObject(this._focusObjects);\n const topObjectValue = topObject.get_ObjectValue();\n const objectLocked = (typeof topObjectValue.get_Locked === 'function') ? topObjectValue.get_Locked() : false;\n\n return objectLocked;\n }\n }\n}","\nimport {makeObservable, observable, action, computed} from 'mobx';\n\nexport class storeUsers {\n constructor() {\n makeObservable(this, {\n users: observable,\n reset: action,\n addUser: action,\n currentUser: observable,\n setCurrentUser: action,\n connection: action,\n isDisconnected: observable,\n resetDisconnected: action,\n hasEditUsers: computed,\n editUsers: computed\n })\n }\n\n users = [];\n currentUser;\n isDisconnected = false;\n\n reset (users) {\n this.users = Object.values(users)\n }\n\n addUser (user) {\n this.users.push(user);\n }\n\n setCurrentUser (id) {\n this.users.forEach((item) => {\n if (item.asc_getIdOriginal() === id) {\n this.currentUser = item;\n }\n });\n return this.currentUser;\n }\n\n connection (change) {\n let changed = false;\n for (let uid in this.users) {\n if (undefined !== uid) {\n const user = this.users[uid];\n if (user && user.asc_getId() === change.asc_getId()) {\n this.users[uid] = change;\n changed = true;\n }\n }\n }\n !changed && change && (this.users.push(change));\n }\n\n resetDisconnected (isDisconnected) {\n this.isDisconnected = isDisconnected;\n }\n\n getInitials (name) {\n const fio = name.split(' ');\n let initials = fio[0].substring(0, 1).toUpperCase();\n for (let i = fio.length-1; i>0; i--) {\n if (fio[i][0]!=='(' && fio[i][0]!==')') {\n initials += fio[i].substring(0, 1).toUpperCase();\n break;\n }\n }\n return initials;\n }\n\n searchUserById (id) {\n let user = null;\n this.users.forEach((item) => {\n if (item.asc_getIdOriginal() === id) {\n user = item;\n }\n });\n return user;\n }\n\n searchUserByCurrentId (id) {\n let user = null;\n this.users.forEach((item) => {\n if (item.asc_getId() === id) {\n user = item;\n }\n });\n return user;\n }\n\n get hasEditUsers () {\n let length = 0;\n this.users.forEach((item) => {\n if ((item.asc_getState()!==false) && !item.asc_getView()) {\n length++;\n }\n });\n return (length >= 1);\n }\n\n get editUsers () {\n const idArray = [];\n const usersArray = [];\n const curUserId = this.currentUser.asc_getIdOriginal();\n this.users.forEach((item) => {\n const name = AscCommon.UserInfoParser.getParsedName(item.asc_getUserName());\n if((item.asc_getState() !== false) && !item.asc_getView()) {\n const idOriginal = item.asc_getIdOriginal();\n const ind = idArray.indexOf(idOriginal);\n if (ind !== -1) {\n usersArray[ind].count = usersArray[ind].count + 1;\n } else {\n const userAttr = {\n color: item.asc_getColor(),\n id: item.asc_getId(),\n idOriginal: item.asc_getIdOriginal(),\n name: name,\n view: item.asc_getView(),\n initials: this.getInitials(name),\n count: 1\n };\n if(idOriginal === curUserId) {\n usersArray.unshift(userAttr);\n idArray.unshift(idOriginal);\n } else {\n usersArray.push(userAttr);\n idArray.push(idOriginal);\n }\n }\n }\n });\n return usersArray;\n }\n}\n","\nclass CThumbnailLoader {\n constructor() {\n this.image = null;\n this.binaryFormat = null;\n this.data = null;\n this.width = 0;\n this.heightOne = 0;\n this.offsets = null;\n }\n\n load(url, callback) {\n if (!callback)\n return;\n\n let xhr = new XMLHttpRequest();\n xhr.open('GET', url + \".bin\", true);\n xhr.responseType = 'arraybuffer';\n\n if (xhr.overrideMimeType)\n xhr.overrideMimeType('text/plain; charset=x-user-defined');\n else xhr.setRequestHeader('Accept-Charset', 'x-user-defined');\n\n xhr.onload = e => {\n // TODO: check errors\n this.binaryFormat = new Uint8Array(e.target.response);\n callback();\n };\n\n xhr.send(null);\n }\n\n openBinary(arrayBuffer) {\n //var t1 = performance.now();\n\n const binaryAlpha = this.binaryFormat;\n this.width = (binaryAlpha[0] << 24) | (binaryAlpha[1] << 16) | (binaryAlpha[2] << 8) | (binaryAlpha[3] << 0);\n this.heightOne = (binaryAlpha[4] << 24) | (binaryAlpha[5] << 16) | (binaryAlpha[6] << 8) | (binaryAlpha[7] << 0);\n const count = (binaryAlpha[8] << 24) | (binaryAlpha[9] << 16) | (binaryAlpha[10] << 8) | (binaryAlpha[11] << 0);\n const height = count * this.heightOne;\n\n const MAX_MEMORY_SIZE = 100000000;\n const memorySize = 4 * this.width * height;\n const isOffsets = memorySize > MAX_MEMORY_SIZE;\n\n if (!isOffsets)\n this.data = new Uint8ClampedArray(memorySize);\n else this.offsets = new Array(count);\n\n var binaryIndex = 12;\n var binaryLen = binaryAlpha.length;\n var index = 0;\n\n var len0 = 0;\n var tmpValue = 0;\n\n if (!isOffsets) {\n var imagePixels = this.data;\n while (binaryIndex < binaryLen) {\n tmpValue = binaryAlpha[binaryIndex++];\n if (0 == tmpValue) {\n len0 = binaryAlpha[binaryIndex++];\n while (len0 > 0) {\n len0--;\n imagePixels[index] = imagePixels[index + 1] = imagePixels[index + 2] = 255;\n imagePixels[index + 3] = 0; // this value is already 0.\n index += 4;\n }\n } else {\n imagePixels[index] = imagePixels[index + 1] = imagePixels[index + 2] = 255 - tmpValue;\n imagePixels[index + 3] = tmpValue;\n index += 4;\n }\n }\n } else {\n var module = this.width * this.heightOne;\n var moduleCur = module - 1;\n while (binaryIndex < binaryLen) {\n tmpValue = binaryAlpha[binaryIndex++];\n if (0 == tmpValue) {\n len0 = binaryAlpha[binaryIndex++];\n while (len0 > 0) {\n len0--;\n moduleCur++;\n if (moduleCur === module) {\n this.offsets[index++] = { pos : binaryIndex, len : len0 + 1 };\n moduleCur = 0;\n }\n }\n } else {\n moduleCur++;\n if (moduleCur === module) {\n this.offsets[index++] = { pos : binaryIndex - 1, len : -1 };\n moduleCur = 0;\n }\n }\n }\n }\n\n if ( !this.offsets )\n delete this.binaryFormat;\n\n //var t2 = performance.now();\n //console.log(t2 - t1);\n };\n\n getImage = function(index, canvas, ctx) {\n if (!canvas) {\n canvas = document.createElement(\"canvas\");\n canvas.width = this.width;\n canvas.height = this.heightOne;\n canvas.style.width = iconWidth + \"px\";\n canvas.style.height = iconHeight + \"px\";\n\n ctx = canvas.getContext(\"2d\");\n }\n\n if (!this.data && !this.offsets) {\n this.openBinary(this.binaryFormat);\n }\n\n let dataTmp = ctx.createImageData(this.width, this.heightOne);\n const sizeImage = 4 * this.width * this.heightOne;\n\n if (!this.offsets) {\n dataTmp.data.set(new Uint8ClampedArray(this.data.buffer, index * sizeImage, sizeImage));\n } else {\n const binaryAlpha = this.binaryFormat;\n var binaryIndex = this.offsets[index].pos;\n var alphaChannel = 0;\n var pixelsCount = this.width * this.heightOne;\n var tmpValue = 0, len0 = 0;\n let imagePixels = dataTmp.data;\n if (-1 != this.offsets[index].len) {\n /*\n // this values is already 0.\n for (var i = 0; i < this.offsets[index].len; i++) {\n pixels[alphaChannel] = 0;\n alphaChannel += 4;\n }\n */\n alphaChannel += 4 * this.offsets[index].len;\n }\n while (pixelsCount > 0) {\n tmpValue = binaryAlpha[binaryIndex++];\n if (0 == tmpValue) {\n len0 = binaryAlpha[binaryIndex++];\n if (len0 > pixelsCount)\n len0 = pixelsCount;\n while (len0 > 0) {\n len0--;\n imagePixels[alphaChannel] = imagePixels[alphaChannel + 1] = imagePixels[alphaChannel + 2] = 255;\n imagePixels[alphaChannel + 3] = 0; // this value is already 0.\n alphaChannel += 4;\n pixelsCount--;\n }\n } else {\n imagePixels[alphaChannel] = imagePixels[alphaChannel + 1] = imagePixels[alphaChannel + 2] = 255 - tmpValue;\n imagePixels[alphaChannel + 3] = tmpValue;\n alphaChannel += 4;\n pixelsCount--;\n }\n }\n }\n ctx.putImageData(dataTmp, 0, 0);\n\n //var t2 = performance.now();\n //console.log(t2 - t1);\n\n return canvas;\n };\n};\n\nexport default CThumbnailLoader;","import {action, observable, computed, makeObservable} from 'mobx';\nimport CThumbnailLoader from '../../../../common/mobile/utils/CThumbnailLoader';\n\nexport class storeTextSettings {\n constructor() {\n makeObservable(this, {\n fontsArray: observable,\n fontName: observable,\n arrayRecentFonts:observable,\n fontSize: observable,\n isBold: observable,\n isItalic: observable,\n isUnderline: observable,\n isStrikethrough: observable,\n typeBaseline: observable,\n listType: observable,\n typeBullets: observable,\n typeNumbers: observable,\n typeMultiLevel: observable,\n paragraphAlign: observable,\n textColor: observable,\n customTextColors: observable,\n lineSpacing: observable,\n highlightColor: observable,\n initEditorFonts: action,\n resetFontName: action,\n resetFontsRecent:action,\n resetFontSize: action,\n resetIsBold: action,\n resetIsItalic: action,\n resetIsUnderline: action,\n resetIsStrikeout: action,\n resetTypeBaseline: action,\n isSuperscript: computed,\n isSubscript: computed,\n resetListType: action,\n resetBullets: action,\n resetNumbers: action,\n resetMultiLevel: action,\n resetParagraphAlign: action,\n resetTextColor: action,\n changeCustomTextColors: action,\n resetLineSpacing: action,\n resetHighlightColor: action,\n changeFontFamily: action,\n iconWidth: observable,\n iconHeight: observable,\n thumbCanvas: observable,\n thumbContext: observable,\n thumbs: observable,\n thumbIdx: observable,\n listItemHeight: observable,\n spriteCols: observable,\n loadSprite: action,\n addFontToRecent:action\n });\n }\n\n iconWidth;\n iconHeight;\n thumbCanvas;\n thumbContext;\n thumbs;\n thumbIdx = 0;\n listItemHeight = 28;\n spriteCols = 1;\n fontsArray = [];\n arrayRecentFonts = [];\n fontName = '';\n fontSize = undefined;\n isBold = false;\n isItalic = false;\n isUnderline = false;\n isStrikethrough = false;\n typeBaseline = undefined;\n listType = undefined;\n typeBullets = undefined;\n typeNumbers = undefined;\n typeMultiLevel = undefined;\n paragraphAlign = undefined;\n textColor = undefined;\n customTextColors = [];\n lineSpacing = undefined;\n highlightColor = undefined;\n\n\n initEditorFonts (fonts, select) {\n let array = [];\n for (let font of fonts) {\n let fontId = font.asc_getFontId();\n array.push({\n id : fontId,\n name : font.asc_getFontName(),\n //displayValue: font.asc_getFontName(),\n imgidx : font.asc_getFontThumbnail(),\n type : font.asc_getFontType()\n });\n }\n this.fontsArray = array;\n this.iconWidth = 300;\n this.iconHeight = Asc.FONT_THUMBNAIL_HEIGHT || 28;\n this.thumbCanvas = document.createElement('canvas');\n this.thumbContext = this.thumbCanvas.getContext('2d');\n this.thumbs = [\n {ratio: 1, path: '../../../../../sdkjs/common/Images/fonts_thumbnail.png', width: this.iconWidth, height: this.iconHeight},\n {ratio: 1.25, path: '../../../../../sdkjs/common/Images/fonts_thumbnail@1.25x.png', width: this.iconWidth * 1.25, height: this.iconHeight * 1.25},\n {ratio: 1.5, path: '../../../../../sdkjs/common/Images/fonts_thumbnail@1.5x.png', width: this.iconWidth * 1.5, height: this.iconHeight * 1.5},\n {ratio: 1.75, path: '../../../../../sdkjs/common/Images/fonts_thumbnail@1.75x.png', width: this.iconWidth * 1.75, height: this.iconHeight * 1.75},\n {ratio: 2, path: '../../../../../sdkjs/common/Images/fonts_thumbnail@2x.png', width: this.iconWidth * 2, height: this.iconHeight * 2}\n ];\n\n const applicationPixelRatio = Common.Utils.applicationPixelRatio();\n\n let bestDistance = Math.abs(applicationPixelRatio - this.thumbs[0].ratio);\n let currentDistance = 0;\n\n for (let i = 1; i < this.thumbs.length; i++) {\n currentDistance = Math.abs(applicationPixelRatio - this.thumbs[i].ratio);\n if (currentDistance < (bestDistance - 0.0001))\n {\n bestDistance = currentDistance;\n this.thumbIdx = i;\n }\n }\n\n this.thumbCanvas.height = this.thumbs[this.thumbIdx].height;\n this.thumbCanvas.width = this.thumbs[this.thumbIdx].width;\n\n this.loadSprite();\n }\n\n loadSprite() {\n this.spriteThumbs = new CThumbnailLoader();\n this.spriteThumbs.load(this.thumbs[this.thumbIdx].path, () => {\n this.spriteCols = Math.floor(this.spriteThumbs.width / (this.thumbs[this.thumbIdx].width)) || 1;\n\n if (!this.spriteThumbs.data && !this.spriteThumbs.offsets) {\n this.spriteThumbs.openBinary(this.spriteThumbs.binaryFormat);\n }\n });\n }\n\n resetFontName (font) {\n let name = (typeof font.get_Name) === \"function\" ? font.get_Name() : font.asc_getName();\n this.fontName = name;\n }\n\n resetFontsRecent(fonts) {\n this.arrayRecentFonts = fonts;\n this.arrayRecentFonts = this.arrayRecentFonts ? JSON.parse(this.arrayRecentFonts) : [];\n }\n\n resetFontSize (size) {\n this.fontSize = size;\n }\n resetIsBold (isBold) {\n this.isBold = isBold;\n }\n resetIsItalic (isItalic) {\n this.isItalic = isItalic;\n }\n resetIsUnderline (isUnderline) {\n this.isUnderline = isUnderline;\n }\n resetIsStrikeout (isStrikethrough) {\n this.isStrikethrough = isStrikethrough;\n }\n\n // vertical align\n resetTypeBaseline (typeBaseline) {\n this.typeBaseline = typeBaseline;\n }\n get isSuperscript() {\n return (this.typeBaseline === Asc.vertalign_SuperScript);\n }\n get isSubscript() {\n return (this.typeBaseline === Asc.vertalign_SubScript);\n }\n\n // bullets\n resetListType (type) {\n this.listType = type;\n }\n resetBullets (type) {\n this.typeBullets = type;\n }\n resetNumbers (type) {\n this.typeNumbers = type;\n }\n\n resetMultiLevel(type) {\n this.typeMultiLevel = type;\n }\n\n getBulletsList () {\n return [\n {id: 'id-markers-0', type: 0, subtype: -1, numberingInfo: '{\"Type\":\"remove\"}' },\n {id: 'id-markers-1', type: 0, subtype: 1, numberingInfo: '{\"Type\":\"bullet\",\"Lvl\":[{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"bullet\"},\"lvlText\":\"·\",\"rPr\":{\"rFonts\":{\"ascii\":\"Symbol\",\"cs\":\"Symbol\",\"eastAsia\":\"Symbol\",\"hAnsi\":\"Symbol\"}}}]}' },\n {id: 'id-markers-2', type: 0, subtype: 2, numberingInfo: '{\"Type\":\"bullet\",\"Lvl\":[{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"bullet\"},\"lvlText\":\"o\",\"rPr\":{\"rFonts\":{\"ascii\":\"Courier New\",\"cs\":\"Courier New\",\"eastAsia\":\"Courier New\",\"hAnsi\":\"Courier New\"}}}]}' },\n {id: 'id-markers-3', type: 0, subtype: 3, numberingInfo: '{\"Type\":\"bullet\",\"Lvl\":[{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"bullet\"},\"lvlText\":\"§\",\"rPr\":{\"rFonts\":{\"ascii\":\"Wingdings\",\"cs\":\"Wingdings\",\"eastAsia\":\"Wingdings\",\"hAnsi\":\"Wingdings\"}}}]}' },\n {id: 'id-markers-4', type: 0, subtype: 4, numberingInfo: '{\"Type\":\"bullet\",\"Lvl\":[{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"bullet\"},\"lvlText\":\"v\",\"rPr\":{\"rFonts\":{\"ascii\":\"Wingdings\",\"cs\":\"Wingdings\",\"eastAsia\":\"Wingdings\",\"hAnsi\":\"Wingdings\"}}}]}' },\n {id: 'id-markers-5', type: 0, subtype: 5, numberingInfo: '{\"Type\":\"bullet\",\"Lvl\":[{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"bullet\"},\"lvlText\":\"Ø\",\"rPr\":{\"rFonts\":{\"ascii\":\"Wingdings\",\"cs\":\"Wingdings\",\"eastAsia\":\"Wingdings\",\"hAnsi\":\"Wingdings\"}}}]}' },\n {id: 'id-markers-6', type: 0, subtype: 6, numberingInfo: '{\"Type\":\"bullet\",\"Lvl\":[{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"bullet\"},\"lvlText\":\"ü\",\"rPr\":{\"rFonts\":{\"ascii\":\"Wingdings\",\"cs\":\"Wingdings\",\"eastAsia\":\"Wingdings\",\"hAnsi\":\"Wingdings\"}}}]}' },\n {id: 'id-markers-7', type: 0, subtype: 7, numberingInfo: '{\"Type\":\"bullet\",\"Lvl\":[{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"bullet\"},\"lvlText\":\"¨\",\"rPr\":{\"rFonts\":{\"ascii\":\"Symbol\",\"cs\":\"Symbol\",\"eastAsia\":\"Symbol\",\"hAnsi\":\"Symbol\"}}}]}' }\n ];\n }\n\n getNumbersList () {\n return [\n {id: 'id-numbers-0', type: 1, subtype: -1, numberingInfo: '{\"Type\":\"remove\"}'},\n {id: 'id-numbers-4', type: 1, subtype: 4, numberingInfo: '{\"Type\":\"number\",\"Lvl\":[{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"upperLetter\"},\"lvlText\":\"%1.\"}]}'},\n {id: 'id-numbers-5', type: 1, subtype: 5, numberingInfo: '{\"Type\":\"number\",\"Lvl\":[{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"lowerLetter\"},\"lvlText\":\"%1)\"}]}'},\n {id: 'id-numbers-6', type: 1, subtype: 6, numberingInfo: '{\"Type\":\"number\",\"Lvl\":[{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"lowerLetter\"},\"lvlText\":\"%1.\"}]}'},\n {id: 'id-numbers-1', type: 1, subtype: 1, numberingInfo: '{\"Type\":\"number\",\"Lvl\":[{\"lvlJc\":\"right\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%1.\"}]}'},\n {id: 'id-numbers-2', type: 1, subtype: 2, numberingInfo: '{\"Type\":\"number\",\"Lvl\":[{\"lvlJc\":\"right\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%1)\"}]}'},\n {id: 'id-numbers-3', type: 1, subtype: 3, numberingInfo: '{\"Type\":\"number\",\"Lvl\":[{\"lvlJc\":\"right\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"upperRoman\"},\"lvlText\":\"%1.\"}]}'},\n {id: 'id-numbers-7', type: 1, subtype: 7, numberingInfo: '{\"Type\":\"number\",\"Lvl\":[{\"lvlJc\":\"right\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"lowerRoman\"},\"lvlText\":\"%1.\"}]}'}\n ];\n }\n\n getMultiLevelList () {\n return [\n { id: 'id-multilevels-0', type: 2, subtype: -1, numberingInfo: '{\"Type\":\"remove\"}' },\n { id: 'id-multilevels-1', type: 2, subtype: 1, numberingInfo: '{\"Type\":\"number\",\"Lvl\":[{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%1)\",\"pPr\":{\"ind\":{\"left\":360,\"firstLine\":-360}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"lowerLetter\"},\"lvlText\":\"%2)\",\"pPr\":{\"ind\":{\"left\":720,\"firstLine\":-360}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"lowerRoman\"},\"lvlText\":\"%3)\",\"pPr\":{\"ind\":{\"left\":1080,\"firstLine\":-360}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%4)\",\"pPr\":{\"ind\":{\"left\":1440,\"firstLine\":-360}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"lowerLetter\"},\"lvlText\":\"%5)\",\"pPr\":{\"ind\":{\"left\":1800,\"firstLine\":-360}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"lowerRoman\"},\"lvlText\":\"%6)\",\"pPr\":{\"ind\":{\"left\":2160,\"firstLine\":-360}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%7)\",\"pPr\":{\"ind\":{\"left\":2520,\"firstLine\":-360}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"lowerLetter\"},\"lvlText\":\"%8)\",\"pPr\":{\"ind\":{\"left\":2880,\"firstLine\":-360}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"lowerRoman\"},\"lvlText\":\"%9)\",\"pPr\":{\"ind\":{\"left\":3240,\"firstLine\":-360}}}]}' },\n { id: 'id-multilevels-2', type: 2, subtype: 2, numberingInfo: '{\"Type\":\"number\",\"Lvl\":[{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%1.\",\"pPr\":{\"ind\":{\"left\":360,\"firstLine\":-360}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%1.%2.\",\"pPr\":{\"ind\":{\"left\":792,\"firstLine\":-432}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%1.%2.%3.\",\"pPr\":{\"ind\":{\"left\":1224,\"firstLine\":-504}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%1.%2.%3.%4.\",\"pPr\":{\"ind\":{\"left\":1728,\"firstLine\":-648}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%1.%2.%3.%4.%5.\",\"pPr\":{\"ind\":{\"left\":2232,\"firstLine\":-792}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%1.%2.%3.%4.%5.%6.\",\"pPr\":{\"ind\":{\"left\":2736,\"firstLine\":-936}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%1.%2.%3.%4.%5.%6.%7.\",\"pPr\":{\"ind\":{\"left\":3240,\"firstLine\":-1080}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%1.%2.%3.%4.%5.%6.%7.%8.\",\"pPr\":{\"ind\":{\"left\":3744,\"firstLine\":-1224}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%1.%2.%3.%4.%5.%6.%7.%8.%9.\",\"pPr\":{\"ind\":{\"left\":4320,\"firstLine\":-1440}}}]}' },\n { id: 'id-multilevels-3', type: 2, subtype: 3, numberingInfo: '{\"Type\":\"bullet\",\"Lvl\":[{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"bullet\"},\"lvlText\":\"v\",\"pPr\":{\"ind\":{\"left\":360,\"firstLine\":-360}},\"rPr\":{\"rFonts\":{\"ascii\":\"Wingdings\",\"cs\":\"Wingdings\",\"eastAsia\":\"Wingdings\",\"hAnsi\":\"Wingdings\"}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"bullet\"},\"lvlText\":\"Ø\",\"pPr\":{\"ind\":{\"left\":720,\"firstLine\":-360}},\"rPr\":{\"rFonts\":{\"ascii\":\"Wingdings\",\"cs\":\"Wingdings\",\"eastAsia\":\"Wingdings\",\"hAnsi\":\"Wingdings\"}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"bullet\"},\"lvlText\":\"§\",\"pPr\":{\"ind\":{\"left\":1080,\"firstLine\":-360}},\"rPr\":{\"rFonts\":{\"ascii\":\"Wingdings\",\"cs\":\"Wingdings\",\"eastAsia\":\"Wingdings\",\"hAnsi\":\"Wingdings\"}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"bullet\"},\"lvlText\":\"·\",\"pPr\":{\"ind\":{\"left\":1440,\"firstLine\":-360}},\"rPr\":{\"rFonts\":{\"ascii\":\"Symbol\",\"cs\":\"Symbol\",\"eastAsia\":\"Symbol\",\"hAnsi\":\"Symbol\"}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"bullet\"},\"lvlText\":\"¨\",\"pPr\":{\"ind\":{\"left\":1800,\"firstLine\":-360}},\"rPr\":{\"rFonts\":{\"ascii\":\"Symbol\",\"cs\":\"Symbol\",\"eastAsia\":\"Symbol\",\"hAnsi\":\"Symbol\"}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"bullet\"},\"lvlText\":\"Ø\",\"pPr\":{\"ind\":{\"left\":2160,\"firstLine\":-360}},\"rPr\":{\"rFonts\":{\"ascii\":\"Wingdings\",\"cs\":\"Wingdings\",\"eastAsia\":\"Wingdings\",\"hAnsi\":\"Wingdings\"}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"bullet\"},\"lvlText\":\"§\",\"pPr\":{\"ind\":{\"left\":2520,\"firstLine\":-360}},\"rPr\":{\"rFonts\":{\"ascii\":\"Wingdings\",\"cs\":\"Wingdings\",\"eastAsia\":\"Wingdings\",\"hAnsi\":\"Wingdings\"}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"bullet\"},\"lvlText\":\"·\",\"pPr\":{\"ind\":{\"left\":2880,\"firstLine\":-360}},\"rPr\":{\"rFonts\":{\"ascii\":\"Symbol\",\"cs\":\"Symbol\",\"eastAsia\":\"Symbol\",\"hAnsi\":\"Symbol\"}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"bullet\"},\"lvlText\":\"¨\",\"pPr\":{\"ind\":{\"left\":3240,\"firstLine\":-360}},\"rPr\":{\"rFonts\":{\"ascii\":\"Symbol\",\"cs\":\"Symbol\",\"eastAsia\":\"Symbol\",\"hAnsi\":\"Symbol\"}}}]}' },\n { id: 'id-multilevels-4', type: 2, subtype: 4, numberingInfo: '{\"Type\":\"number\",\"Headings\":\"true\",\"Lvl\":[{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"upperRoman\"},\"lvlText\":\"Article %1.\",\"pPr\":{\"ind\":{\"left\":0,\"firstLine\":0}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimalZero\"},\"lvlText\":\"Section %1.%2\",\"pPr\":{\"ind\":{\"left\":0,\"firstLine\":0}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"lowerLetter\"},\"lvlText\":\"(%3)\",\"pPr\":{\"ind\":{\"left\":720,\"firstLine\":-432}}},{\"lvlJc\":\"right\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"lowerRoman\"},\"lvlText\":\"(%4)\",\"pPr\":{\"ind\":{\"left\":864,\"firstLine\":-144}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%5)\",\"pPr\":{\"ind\":{\"left\":1008,\"firstLine\":-432}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"lowerLetter\"},\"lvlText\":\"%6)\",\"pPr\":{\"ind\":{\"left\":1152,\"firstLine\":-432}}},{\"lvlJc\":\"right\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"lowerRoman\"},\"lvlText\":\"%7)\",\"pPr\":{\"ind\":{\"left\":1296,\"firstLine\":-288}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"lowerLetter\"},\"lvlText\":\"%8.\",\"pPr\":{\"ind\":{\"left\":1440,\"firstLine\":-432}}},{\"lvlJc\":\"right\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"lowerRoman\"},\"lvlText\":\"%9.\",\"pPr\":{\"ind\":{\"left\":1584,\"firstLine\":-144}}}]}' },\n { id: 'id-multilevels-5', type: 2, subtype: 5, numberingInfo: '{\"Type\":\"number\",\"Headings\":\"true\",\"Lvl\":[{\"lvlJc\":\"left\",\"suff\":\"space\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"Chapter %1\",\"pPr\":{\"ind\":{\"left\":0,\"firstLine\":0}}},{\"lvlJc\":\"left\",\"suff\":\"nothing\",\"numFmt\":{\"val\":\"none\"},\"lvlText\":\"\",\"pPr\":{\"ind\":{\"left\":0,\"firstLine\":0}}},{\"lvlJc\":\"left\",\"suff\":\"nothing\",\"numFmt\":{\"val\":\"none\"},\"lvlText\":\"\",\"pPr\":{\"ind\":{\"left\":0,\"firstLine\":0}}},{\"lvlJc\":\"left\",\"suff\":\"nothing\",\"numFmt\":{\"val\":\"none\"},\"lvlText\":\"\",\"pPr\":{\"ind\":{\"left\":0,\"firstLine\":0}}},{\"lvlJc\":\"left\",\"suff\":\"nothing\",\"numFmt\":{\"val\":\"none\"},\"lvlText\":\"\",\"pPr\":{\"ind\":{\"left\":0,\"firstLine\":0}}},{\"lvlJc\":\"left\",\"suff\":\"nothing\",\"numFmt\":{\"val\":\"none\"},\"lvlText\":\"\",\"pPr\":{\"ind\":{\"left\":0,\"firstLine\":0}}},{\"lvlJc\":\"left\",\"suff\":\"nothing\",\"numFmt\":{\"val\":\"none\"},\"lvlText\":\"\",\"pPr\":{\"ind\":{\"left\":0,\"firstLine\":0}}},{\"lvlJc\":\"left\",\"suff\":\"nothing\",\"numFmt\":{\"val\":\"none\"},\"lvlText\":\"\",\"pPr\":{\"ind\":{\"left\":0,\"firstLine\":0}}},{\"lvlJc\":\"left\",\"suff\":\"nothing\",\"numFmt\":{\"val\":\"none\"},\"lvlText\":\"\",\"pPr\":{\"ind\":{\"left\":0,\"firstLine\":0}}}]}' },\n { id: 'id-multilevels-6', type: 2, subtype: 6, numberingInfo: '{\"Type\":\"number\",\"Headings\":\"true\",\"Lvl\":[{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"upperRoman\"},\"lvlText\":\"%1.\",\"pPr\":{\"ind\":{\"left\":0,\"firstLine\":0}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"upperLetter\"},\"lvlText\":\"%2.\",\"pPr\":{\"ind\":{\"left\":720,\"firstLine\":0}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%3.\",\"pPr\":{\"ind\":{\"left\":1440,\"firstLine\":0}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"lowerLetter\"},\"lvlText\":\"%4)\",\"pPr\":{\"ind\":{\"left\":2160,\"firstLine\":0}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"(%5)\",\"pPr\":{\"ind\":{\"left\":2880,\"firstLine\":0}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"lowerLetter\"},\"lvlText\":\"(%6)\",\"pPr\":{\"ind\":{\"left\":3600,\"firstLine\":0}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"lowerRoman\"},\"lvlText\":\"(%7)\",\"pPr\":{\"ind\":{\"left\":4320,\"firstLine\":0}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"lowerLetter\"},\"lvlText\":\"(%8)\",\"pPr\":{\"ind\":{\"left\":5040,\"firstLine\":0}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"lowerRoman\"},\"lvlText\":\"(%9)\",\"pPr\":{\"ind\":{\"left\":5760,\"firstLine\":0}}}]}' },\n { id: 'id-multilevels-7', type: 2, subtype: 7, numberingInfo: '{\"Type\":\"number\",\"Headings\":\"true\",\"Lvl\":[{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%1.\",\"pPr\":{\"ind\":{\"left\":432,\"firstLine\":-432}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%1.%2.\",\"pPr\":{\"ind\":{\"left\":576,\"firstLine\":-576}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%1.%2.%3.\",\"pPr\":{\"ind\":{\"left\":720,\"firstLine\":-720}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%1.%2.%3.%4.\",\"pPr\":{\"ind\":{\"left\":864,\"firstLine\":-864}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%1.%2.%3.%4.%5.\",\"pPr\":{\"ind\":{\"left\":1008,\"firstLine\":-1008}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%1.%2.%3.%4.%5.%6.\",\"pPr\":{\"ind\":{\"left\":1152,\"firstLine\":-1152}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%1.%2.%3.%4.%5.%6.%7.\",\"pPr\":{\"ind\":{\"left\":1296,\"firstLine\":-1296}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%1.%2.%3.%4.%5.%6.%7.%8.\",\"pPr\":{\"ind\":{\"left\":1440,\"firstLine\":-1440}}},{\"lvlJc\":\"left\",\"suff\":\"tab\",\"numFmt\":{\"val\":\"decimal\"},\"lvlText\":\"%1.%2.%3.%4.%5.%6.%7.%8.%9.\",\"pPr\":{\"ind\":{\"left\":1584,\"firstLine\":-1584}}}]}' }\n ];\n }\n\n resetParagraphAlign (align) {\n let value;\n switch (align) {\n case 0:\n value = 'right';\n break;\n case 1:\n value = 'left';\n break;\n case 2:\n value = 'center';\n break;\n case 3:\n value = 'just';\n break;\n }\n this.paragraphAlign = value;\n }\n\n resetTextColor (color) {\n let value;\n if (color) {\n if (color.get_auto()) {\n value = 'auto';\n } else {\n if (color.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) {\n value = {\n color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()),\n effectValue: color.get_value()\n }\n } else {\n value = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b());\n }\n }\n }\n this.textColor = value;\n }\n\n changeCustomTextColors (colors) {\n this.customTextColors = colors;\n }\n\n changeFontFamily(name) {\n this.fontName = name;\n }\n\n addFontToRecent (font) {\n this.arrayRecentFonts.forEach(item => {\n if (item.name === font.name) this.arrayRecentFonts.splice(this.arrayRecentFonts.indexOf(item),1);\n })\n this.arrayRecentFonts.unshift(font);\n\n if (this.arrayRecentFonts.length > 5) this.arrayRecentFonts.splice(4,1);\n }\n\n resetLineSpacing (vc) {\n let line = (vc.get_Line() === null || vc.get_LineRule() === null || vc.get_LineRule() != 1) ? -1 : vc.get_Line();\n this.lineSpacing = line;\n }\n\n resetHighlightColor (color) {\n if (color == -1) {\n this.highlightColor = 'transparent';\n } else {\n this.highlightColor = color.get_hex();\n } \n }\n}","import {action, observable, computed, makeObservable} from 'mobx';\n\nexport class storeParagraphSettings {\n constructor() {\n makeObservable(this, {\n styles: observable,\n styleThumbSize: observable,\n styleName: observable,\n backColor: observable,\n initEditorStyles: action,\n paragraphStyles: computed,\n changeParaStyleName: action,\n setBackColor: action,\n getBackgroundColor: action\n });\n }\n\n styles = [];\n styleThumbSize = null;\n styleName = undefined;\n\n initEditorStyles (styles) {\n this.styles = styles.get_MergedStyles();\n this.styleThumbSize = {\n width : styles.STYLE_THUMBNAIL_WIDTH,\n height : styles.STYLE_THUMBNAIL_HEIGHT\n };\n }\n\n get paragraphStyles () {\n let _styles = [];\n for (let style of this.styles) {\n _styles.push({\n image : style.asc_getImage(),\n name : style.get_Name()\n });\n }\n return _styles;\n }\n\n changeParaStyleName (name) {\n this.styleName = name;\n }\n\n backColor = undefined;\n\n setBackColor (color) {\n this.backColor = color;\n }\n\n getBackgroundColor (paragraphObject) {\n const shade = paragraphObject.get_Shade();\n let backColor = 'transparent';\n\n if (!!shade && shade.get_Value() === Asc.c_oAscShdClear) {\n const color = shade.get_Color();\n if (color) {\n if (color.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) {\n backColor = {\n color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()),\n effectValue: color.get_value()\n };\n } else {\n backColor = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b());\n }\n }\n }\n \n this.backColor = backColor;\n return backColor;\n }\n}","import {action, observable, computed, makeObservable} from 'mobx';\n\nexport class storeShapeSettings {\n constructor() {\n makeObservable(this, {\n fillColor: observable,\n borderColorView: observable,\n setFillColor: action,\n getFillColor: action,\n setBorderColor: action,\n initBorderColorView: action\n });\n }\n\n getStyleGroups () {\n const styles = [\n {\n title: 'Text',\n thumb: 'shape-01.svg',\n type: 'textRect'\n },\n {\n title: 'Line',\n thumb: 'shape-02.svg',\n type: 'line'\n },\n {\n title: 'Line with arrow',\n thumb: 'shape-03.svg',\n type: 'lineWithArrow'\n },\n {\n title: 'Line with two arrows',\n thumb: 'shape-04.svg',\n type: 'lineWithTwoArrows'\n },\n {\n title: 'Rect',\n thumb: 'shape-05.svg',\n type: 'rect'\n },\n {\n title: 'Hexagon',\n thumb: 'shape-06.svg',\n type: 'hexagon'\n },\n {\n title: 'Round rect',\n thumb: 'shape-07.svg',\n type: 'roundRect'\n },\n {\n title: 'Ellipse',\n thumb: 'shape-08.svg',\n type: 'ellipse'\n },\n {\n title: 'Triangle',\n thumb: 'shape-09.svg',\n type: 'triangle'\n },\n {\n title: 'Triangle',\n thumb: 'shape-10.svg',\n type: 'rtTriangle'\n },\n {\n title: 'Trapezoid',\n thumb: 'shape-11.svg',\n type: 'trapezoid'\n },\n {\n title: 'Diamond',\n thumb: 'shape-12.svg',\n type: 'diamond'\n },\n {\n title: 'Right arrow',\n thumb: 'shape-13.svg',\n type: 'rightArrow'\n },\n {\n title: 'Left-right arrow',\n thumb: 'shape-14.svg',\n type: 'leftRightArrow'\n },\n {\n title: 'Left arrow callout',\n thumb: 'shape-15.svg',\n type: 'leftArrow'\n },\n {\n title: 'Right arrow callout',\n thumb: 'shape-16.svg',\n type: 'bentUpArrow'\n },\n {\n title: 'Flow chart off page connector',\n thumb: 'shape-17.svg',\n type: 'flowChartOffpageConnector'\n },\n {\n title: 'Heart',\n thumb: 'shape-18.svg',\n type: 'heart'\n },\n {\n title: 'Math minus',\n thumb: 'shape-19.svg',\n type: 'mathMinus'\n },\n {\n title: 'Math plus',\n thumb: 'shape-20.svg',\n type: 'mathPlus'\n },\n {\n title: 'Parallelogram',\n thumb: 'shape-21.svg',\n type: 'parallelogram'\n },\n {\n title: 'Wedge rect callout',\n thumb: 'shape-22.svg',\n type: 'wedgeRectCallout'\n },\n {\n title: 'Wedge ellipse callout',\n thumb: 'shape-23.svg',\n type: 'wedgeEllipseCallout'\n },\n {\n title: 'Cloud callout',\n thumb: 'shape-24.svg',\n type: 'cloudCallout'\n }\n ];\n const groups = [];\n let i = 0;\n for (let row=0; row _sizes.length - 1) return _sizes[_sizes.length - 1];\n return _sizes[index];\n },\n\n indexSizeByValue: function (value) {\n let index = 0;\n _sizes.forEach((size, idx) => {\n if (Math.abs(size - value) < 0.25) {\n index = idx;\n }\n });\n return index;\n },\n\n sizeByValue: function (value) {\n return _sizes[this.indexSizeByValue(value)];\n }\n }\n }\n\n}","import {action, observable, computed} from 'mobx';\n\nexport class storeImageSettings {\n wrapTypesTransform () {\n const map = [\n { ui:'inline', sdk: Asc.c_oAscWrapStyle2.Inline },\n { ui:'square', sdk: Asc.c_oAscWrapStyle2.Square },\n { ui:'tight', sdk: Asc.c_oAscWrapStyle2.Tight },\n { ui:'through', sdk: Asc.c_oAscWrapStyle2.Through },\n { ui:'top-bottom', sdk: Asc.c_oAscWrapStyle2.TopAndBottom },\n { ui:'behind', sdk: Asc.c_oAscWrapStyle2.Behind },\n { ui:'infront', sdk: Asc.c_oAscWrapStyle2.InFront }\n ];\n return {\n sdkToUi: function(type) {\n let record = map.filter(function(obj) {\n return obj.sdk === type;\n })[0];\n return record ? record.ui : '';\n },\n\n uiToSdk: function(type) {\n let record = map.filter(function(obj) {\n return obj.ui === type;\n })[0];\n return record ? record.sdk : 0;\n }\n }\n }\n\n getWrapType (imageObject) {\n const wrapping = imageObject.get_WrappingStyle();\n const imageWrapType = this.wrapTypesTransform().sdkToUi(wrapping);\n return imageWrapType;\n }\n\n transformToSdkWrapType (value) {\n const sdkType = this.wrapTypesTransform().uiToSdk(value);\n return sdkType;\n }\n\n getAlign (imageObject) {\n return imageObject.get_PositionH().get_Align();\n }\n\n getMoveText (imageObject) {\n return imageObject.get_PositionV().get_RelativeFrom() === Asc.c_oAscRelativeFromV.Paragraph;\n }\n\n getOverlap (imageObject) {\n return imageObject.get_AllowOverlap();\n }\n\n getWrapDistance (imageObject) {\n return imageObject.get_Paddings().get_Top();\n }\n}","import {makeObservable, action, observable, computed} from 'mobx';\nimport {f7} from 'framework7-react';\n\nexport class storeTableSettings {\n constructor() {\n makeObservable(this, {\n cellBorders: observable,\n cellBorderWidth: observable,\n cellBorderColor: observable,\n arrayStyles: observable,\n initTableTemplates: action,\n setStyles: action,\n updateCellBorderWidth: action,\n updateCellBorderColor: action,\n setAutoColor: action,\n colorAuto: observable,\n arrayStylesDefault: observable,\n });\n }\n\n arrayStyles = [];\n arrayStylesDefault = [];\n colorAuto = 'auto';\n\n setAutoColor(value) {\n this.colorAuto = value;\n }\n\n initTableTemplates () {\n this.arrayStyles = [];\n }\n\n setStyles (arrStyles, typeStyles) {\n let styles = [];\n for (let template of arrStyles) {\n styles.push({\n imageUrl : template.asc_getImage(),\n templateId : template.asc_getId()\n });\n }\n \n if(typeStyles === 'default') {\n return this.arrayStylesDefault = styles;\n } \n return this.arrayStyles = styles;\n }\n\n getTableLook (tableObject) {\n return tableObject.get_TableLook()\n }\n getCellMargins (tableObject) {\n const margins = tableObject.get_CellMargins();\n return margins.get_Left();\n }\n getRepeatOption (tableObject) {\n if (tableObject.get_RowsInHeader() === null) {\n return null;\n }\n return !!tableObject.get_RowsInHeader();\n }\n getResizeOption (tableObject) {\n return tableObject.get_TableLayout()==Asc.c_oAscTableLayout.AutoFit;\n }\n getWrapType (tableObject) {\n return tableObject.get_TableWrap() === 0 ? 'inline' : 'flow';\n }\n getAlign (tableObject) {\n return tableObject.get_TableAlignment();\n }\n getMoveText (tableObject) {\n return (tableObject.get_PositionV() && tableObject.get_PositionV().get_RelativeFrom() === Asc.c_oAscVAnchor.Text);\n }\n getWrapDistance (tableObject) {\n return tableObject.get_TablePaddings().get_Top();\n }\n\n // Fill color\n getFillColor (tableObject) {\n const background = tableObject.get_CellsBackground();\n let fillColor = 'transparent';\n if (background) {\n if (background.get_Value()==0) {\n const color = background.get_Color();\n if (color) {\n if (color.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) {\n fillColor = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value()};\n } else {\n fillColor = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b());\n }\n }\n }\n }\n return fillColor;\n }\n\n // Border style\n\n cellBorders;\n cellBorderWidth = 0.5;\n cellBorderColor = '000000';\n\n borderSizeTransform () {\n const _sizes = [0, 0.5, 1, 1.5, 2.25, 3, 4.5, 6];\n\n return {\n sizeByIndex: function (index) {\n if (index < 1) return _sizes[0];\n if (index > _sizes.length - 1) return _sizes[_sizes.length - 1];\n return _sizes[index];\n },\n\n indexSizeByValue: function (value) {\n let index = 0;\n _sizes.forEach((size, idx) => {\n if (Math.abs(size - value) < 0.25) {\n index = idx;\n }\n });\n return index;\n },\n\n sizeByValue: function (value) {\n return _sizes[this.indexSizeByValue(value)];\n }\n }\n }\n\n updateCellBorderWidth (value) {\n this.cellBorderWidth = value;\n }\n\n updateCellBorderColor (value) {\n this.cellBorderColor = value;\n }\n\n updateBordersStyle (border) {\n this.cellBorders = new Asc.CBorders();\n const visible = (border != '');\n\n if (border.indexOf('l') > -1 || !visible) {\n if (this.cellBorders.get_Left()===null || this.cellBorders.get_Left()===undefined)\n this.cellBorders.put_Left(new Asc.asc_CTextBorder());\n this.updateBorderStyle (this.cellBorders.get_Left(), visible);\n }\n if (border.indexOf('t') > -1 || !visible) {\n if (this.cellBorders.get_Top()===null || this.cellBorders.get_Top()===undefined)\n this.cellBorders.put_Top(new Asc.asc_CTextBorder());\n this.updateBorderStyle (this.cellBorders.get_Top(), visible);\n }\n if (border.indexOf('r') > -1 || !visible) {\n if (this.cellBorders.get_Right()===null || this.cellBorders.get_Right()===undefined)\n this.cellBorders.put_Right(new Asc.asc_CTextBorder());\n this.updateBorderStyle (this.cellBorders.get_Right(), visible);\n }\n if (border.indexOf('b') > -1 || !visible) {\n if (this.cellBorders.get_Bottom()===null || this.cellBorders.get_Bottom()===undefined)\n this.cellBorders.put_Bottom(new Asc.asc_CTextBorder());\n this.updateBorderStyle (this.cellBorders.get_Bottom(), visible);\n }\n if (border.indexOf('c') > -1 || !visible) {\n if (this.cellBorders.get_InsideV()===null || this.cellBorders.get_InsideV()===undefined)\n this.cellBorders.put_InsideV(new Asc.asc_CTextBorder());\n this.updateBorderStyle (this.cellBorders.get_InsideV(), visible);\n }\n if (border.indexOf('m') > -1 || !visible) {\n if (this.cellBorders.get_InsideH()===null || this.cellBorders.get_InsideH()===undefined)\n this.cellBorders.put_InsideH(new Asc.asc_CTextBorder());\n this.updateBorderStyle (this.cellBorders.get_InsideH(), visible);\n }\n }\n\n updateBorderStyle (border, visible) {\n if (!border) {\n border = new Asc.asc_CTextBorder();\n }\n if (visible && this.cellBorderWidth > 0){\n const size = parseFloat(this.cellBorderWidth);\n border.put_Value(1);\n border.put_Size(size * 25.4 / 72.0);\n let color;\n if(this.colorAuto === 'auto') {\n color = new Asc.asc_CColor();\n color.put_auto(true);\n } else {\n color = Common.Utils.ThemeColor.getRgbColor(this.cellBorderColor);\n }\n border.put_Color(color);\n }\n else {\n border.put_Value(0);\n }\n }\n\n}","import {action, observable, computed, makeObservable} from 'mobx';\n\nexport class storeChartSettings {\n constructor() {\n makeObservable(this, {\n chartStyles: observable,\n fillColor: observable,\n borderColor: observable,\n clearChartStyles: action,\n updateChartStyles: action,\n styles: computed,\n types: computed,\n setFillColor: action,\n getFillColor: action,\n setBorderColor: action,\n initBorderColor: action\n });\n }\n\n wrapTypesTransform () {\n const map = [\n { ui:'inline', sdk: Asc.c_oAscWrapStyle2.Inline },\n { ui:'square', sdk: Asc.c_oAscWrapStyle2.Square },\n { ui:'tight', sdk: Asc.c_oAscWrapStyle2.Tight },\n { ui:'through', sdk: Asc.c_oAscWrapStyle2.Through },\n { ui:'top-bottom', sdk: Asc.c_oAscWrapStyle2.TopAndBottom },\n { ui:'behind', sdk: Asc.c_oAscWrapStyle2.Behind },\n { ui:'infront', sdk: Asc.c_oAscWrapStyle2.InFront }\n ];\n return {\n sdkToUi: function(type) {\n let record = map.filter(function(obj) {\n return obj.sdk === type;\n })[0];\n return record ? record.ui : '';\n },\n\n uiToSdk: function(type) {\n let record = map.filter(function(obj) {\n return obj.ui === type;\n })[0];\n return record ? record.sdk : 0;\n }\n }\n }\n\n getWrapType (chartObject) {\n const wrapping = chartObject.get_WrappingStyle();\n const chartWrapType = this.wrapTypesTransform().sdkToUi(wrapping);\n return chartWrapType;\n }\n\n transformToSdkWrapType (value) {\n const sdkType = this.wrapTypesTransform().uiToSdk(value);\n return sdkType;\n }\n\n getAlign (chartObject) {\n return chartObject.get_PositionH().get_Align();\n }\n\n getMoveText (chartObject) {\n return chartObject.get_PositionV().get_RelativeFrom() == Asc.c_oAscRelativeFromV.Paragraph;\n }\n\n getOverlap (chartObject) {\n return chartObject.get_AllowOverlap();\n }\n\n getWrapDistance (chartObject) {\n return chartObject.get_Paddings().get_Top();\n }\n\n // style\n\n chartStyles = null;\n\n clearChartStyles () {\n this.chartStyles = null;\n }\n\n updateChartStyles (styles) {\n this.chartStyles = styles;\n }\n\n get styles () {\n if (!this.chartStyles) return null;\n const widthContainer = document.querySelector(\".page-content\").clientWidth;\n const columns = parseInt(widthContainer / 70); // magic\n let row = -1;\n const styles = [];\n this.chartStyles.forEach((style, index) => {\n if (0 == index % columns) {\n styles.push([]);\n row++\n }\n styles[row].push(style);\n });\n return styles;\n }\n\n get types () {\n const types = [\n { type: Asc.c_oAscChartTypeSettings.barNormal, thumb: 'chart-03.png'},\n { type: Asc.c_oAscChartTypeSettings.barStacked, thumb: 'chart-02.png'},\n { type: Asc.c_oAscChartTypeSettings.barStackedPer, thumb: 'chart-01.png'},\n { type: Asc.c_oAscChartTypeSettings.barNormal3d, thumb: 'chart-17.png'},\n { type: Asc.c_oAscChartTypeSettings.barStacked3d, thumb: 'chart-18.png'},\n { type: Asc.c_oAscChartTypeSettings.barStackedPer3d, thumb: 'chart-19.png'},\n { type: Asc.c_oAscChartTypeSettings.barNormal3dPerspective, thumb: 'chart-20.png'},\n { type: Asc.c_oAscChartTypeSettings.lineNormal, thumb: 'chart-06.png'},\n { type: Asc.c_oAscChartTypeSettings.lineStacked, thumb: 'chart-05.png'},\n { type: Asc.c_oAscChartTypeSettings.lineStackedPer, thumb: 'chart-04.png'},\n { type: Asc.c_oAscChartTypeSettings.hBarNormal, thumb: 'chart-09.png'},\n { type: Asc.c_oAscChartTypeSettings.hBarStacked, thumb: 'chart-08.png'},\n { type: Asc.c_oAscChartTypeSettings.hBarStackedPer, thumb: 'chart-07.png'},\n { type: Asc.c_oAscChartTypeSettings.hBarNormal3d, thumb: 'chart-25.png'},\n { type: Asc.c_oAscChartTypeSettings.hBarStacked3d, thumb: 'chart-24.png'},\n { type: Asc.c_oAscChartTypeSettings.hBarStackedPer3d, thumb: 'chart-23.png'},\n { type: Asc.c_oAscChartTypeSettings.areaNormal, thumb: 'chart-12.png'},\n { type: Asc.c_oAscChartTypeSettings.areaStacked, thumb: 'chart-11.png'},\n { type: Asc.c_oAscChartTypeSettings.areaStackedPer, thumb: 'chart-10.png'},\n { type: Asc.c_oAscChartTypeSettings.pie, thumb: 'chart-13.png'},\n { type: Asc.c_oAscChartTypeSettings.doughnut, thumb: 'chart-14.png'},\n { type: Asc.c_oAscChartTypeSettings.pie3d, thumb: 'chart-22.png'},\n { type: Asc.c_oAscChartTypeSettings.scatter, thumb: 'chart-15.png'},\n { type: Asc.c_oAscChartTypeSettings.stock, thumb: 'chart-16.png'},\n { type: Asc.c_oAscChartTypeSettings.line3d, thumb: 'chart-21.png'},\n ];\n const columns = 3;\n const arr = [];\n let row = -1;\n types.forEach((type, index) => {\n if (0 == index % columns) {\n arr.push([]);\n row++\n }\n arr[row].push(type);\n });\n return arr;\n }\n\n // Fill Color\n\n fillColor = undefined;\n\n setFillColor (color) {\n this.fillColor = color;\n }\n\n getFillColor (shapeProperties) {\n let fill = shapeProperties.get_fill();\n const fillType = fill.get_type();\n let color = 'transparent';\n if (fillType == Asc.c_oAscFill.FILL_TYPE_SOLID) {\n fill = fill.get_fill();\n const sdkColor = fill.get_color();\n if (sdkColor) {\n if (sdkColor.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) {\n color = {color: Common.Utils.ThemeColor.getHexColor(sdkColor.get_r(), sdkColor.get_g(), sdkColor.get_b()), effectValue: sdkColor.get_value()};\n } else {\n color = Common.Utils.ThemeColor.getHexColor(sdkColor.get_r(), sdkColor.get_g(), sdkColor.get_b());\n }\n }\n }\n this.fillColor = color;\n return color;\n }\n\n // Border size and border color\n\n borderColor;\n\n setBorderColor (color) {\n this.borderColor = color;\n }\n\n initBorderColor (stroke) {\n let color = 'transparent';\n if (stroke && stroke.get_type() == Asc.c_oAscStrokeType.STROKE_COLOR) {\n const sdkColor = stroke.get_color();\n if (sdkColor) {\n if (sdkColor.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) {\n color = {color: Common.Utils.ThemeColor.getHexColor(sdkColor.get_r(), sdkColor.get_g(), sdkColor.get_b()), effectValue: sdkColor.get_value()};\n }\n else {\n color = Common.Utils.ThemeColor.getHexColor(sdkColor.get_r(), sdkColor.get_g(), sdkColor.get_b());\n }\n }\n }\n this.borderColor = color;\n return color;\n }\n\n borderSizeTransform () {\n const _sizes = [0, 0.5, 1, 1.5, 2.25, 3, 4.5, 6];\n\n return {\n sizeByIndex: function (index) {\n if (index < 1) return _sizes[0];\n if (index > _sizes.length - 1) return _sizes[_sizes.length - 1];\n return _sizes[index];\n },\n\n indexSizeByValue: function (value) {\n let index = 0;\n _sizes.forEach((size, idx) => {\n if (Math.abs(size - value) < 0.25) {\n index = idx;\n }\n });\n return index;\n },\n\n sizeByValue: function (value) {\n return _sizes[this.indexSizeByValue(value)];\n }\n }\n }\n}","import {action, observable, makeObservable} from \"mobx\";\r\n\r\nexport class storeDocumentInfo {\r\n constructor() {\r\n makeObservable(this, {\r\n infoObj: observable,\r\n isLoaded: observable,\r\n dataDoc: observable,\r\n switchIsLoaded: action,\r\n changeCount: action,\r\n setDataDoc: action,\r\n changeTitle: action,\r\n docInfo: observable,\r\n setDocInfo: action\r\n });\r\n }\r\n\r\n infoObj = {\r\n pageCount: 0,\r\n wordsCount: 0,\r\n paragraphCount: 0,\r\n symbolsCount: 0,\r\n symbolsWSCount: 0,\r\n };\r\n\r\n isLoaded = true;\r\n dataDoc;\r\n docInfo;\r\n\r\n setDocInfo(docInfo) {\r\n this.docInfo = docInfo;\r\n }\r\n\r\n switchIsLoaded(value) {\r\n this.isLoaded = value;\r\n }\r\n\r\n changeCount(obj) {\r\n if (obj) {\r\n if (obj.get_PageCount() > -1)\r\n this.infoObj.pageCount = obj.get_PageCount();\r\n if (obj.get_WordsCount() > -1)\r\n this.infoObj.wordsCount = obj.get_WordsCount();\r\n if (obj.get_ParagraphCount() > -1)\r\n this.infoObj.paragraphCount = obj.get_ParagraphCount();\r\n if (obj.get_SymbolsCount() > -1)\r\n this.infoObj.symbolsCount = obj.get_SymbolsCount();\r\n if (obj.get_SymbolsWSCount() > -1)\r\n this.infoObj.symbolsWSCount = obj.get_SymbolsWSCount();\r\n }\r\n }\r\n\r\n setDataDoc(obj) {\r\n this.dataDoc = obj;\r\n }\r\n\r\n changeTitle(title) {\r\n this.dataDoc.title = title;\r\n }\r\n}\r\n","import {action, observable, makeObservable} from 'mobx';\r\n\r\nexport class storeLinkSettings {\r\n constructor() {\r\n makeObservable(this, {\r\n canAddLink: observable,\r\n canAddHyperlink: action\r\n });\r\n }\r\n\r\n canAddLink;\r\n\r\n canAddHyperlink (value) {\r\n this.canAddLink = value;\r\n }\r\n}\r\n","import {makeObservable, action, observable} from 'mobx';\r\nimport { LocalStorage } from '../../../../common/mobile/utils/LocalStorage.mjs';\r\n\r\nexport class storeApplicationSettings {\r\n constructor() {\r\n makeObservable(this, {\r\n unitMeasurement: observable, \r\n isSpellChecking: observable, \r\n isNonprintingCharacters: observable, \r\n isHiddenTableBorders: observable, \r\n isComments: observable, \r\n isResolvedComments: observable, \r\n macrosMode: observable, \r\n macrosRequest: observable,\r\n changeSpellCheck: action,\r\n changeUnitMeasurement: action, \r\n changeNoCharacters: action, \r\n changeShowTableEmptyLine: action, \r\n changeDisplayComments: action, \r\n changeDisplayResolved: action, \r\n changeMacrosSettings: action,\r\n directionMode: observable,\r\n changeDirectionMode: action,\r\n changeMacrosRequest: action\r\n })\r\n }\r\n\r\n unitMeasurement = 1;\r\n isSpellChecking = true;\r\n isNonprintingCharacters = false;\r\n isHiddenTableBorders = false;\r\n isComments = false;\r\n isResolvedComments = false;\r\n macrosMode = 0;\r\n directionMode = (Common.Locale.isCurrentLangRtl && LocalStorage.getItem('mode-direction') || 'rtl') || 'ltr';\r\n\r\n changeDirectionMode(value) {\r\n this.directionMode = value;\r\n }\r\n\r\n macrosRequest = 0;\r\n\r\n changeUnitMeasurement(value) {\r\n this.unitMeasurement = +value;\r\n }\r\n\r\n changeSpellCheck(value) {\r\n this.isSpellChecking = value;\r\n }\r\n\r\n changeNoCharacters(value) {\r\n this.isNonprintingCharacters = value;\r\n }\r\n\r\n changeShowTableEmptyLine(value) {\r\n this.isHiddenTableBorders = value;\r\n }\r\n\r\n changeDisplayComments(value) {\r\n this.isComments = value;\r\n if (!value) this.changeDisplayResolved(value);\r\n }\r\n\r\n changeDisplayResolved(value) {\r\n this.isResolvedComments = value;\r\n }\r\n\r\n changeMacrosSettings(value) {\r\n this.macrosMode = +value;\r\n }\r\n\r\n changeMacrosRequest(value) {\r\n this.macrosRequest = value;\r\n }\r\n}","import {makeObservable, action, observable} from 'mobx';\nimport { LocalStorage } from '../../../../common/mobile/utils/LocalStorage.mjs';\n\nexport class storeAppOptions {\n constructor() {\n makeObservable(this, {\n isEdit: observable,\n canViewComments: observable,\n canReview: observable,\n setConfigOptions: action,\n setPermissionOptions: action,\n\n canViewReview: observable,\n setCanViewReview: action,\n\n lostEditingRights: observable,\n changeEditingRights: action,\n\n readerMode: observable,\n changeReaderMode: action,\n\n canBrandingExt: observable,\n canBranding: observable,\n\n isDocReady: observable,\n changeDocReady: action,\n\n isViewer: observable,\n changeViewerMode: action,\n\n isMobileView: observable,\n changeMobileView: action,\n\n isProtected: observable,\n setProtection: action,\n\n typeProtection: observable,\n setTypeProtection: action,\n\n isFileEncrypted: observable,\n setEncryptionFile: action,\n\n isFavorite: observable,\n setFavorite: action\n });\n }\n\n isFavorite;\n isEdit = false;\n\n isFileEncrypted = false;\n setEncryptionFile(value) {\n this.isFileEncrypted = value;\n }\n\n isProtected = false;\n setProtection(value) {\n this.isProtected = value;\n }\n\n typeProtection;\n setTypeProtection(type) {\n this.typeProtection = type;\n }\n\n isMobileView = true;\n changeMobileView() {\n this.isMobileView = !this.isMobileView;\n }\n\n isViewer = true;\n changeViewerMode(value) {\n this.isViewer = value;\n }\n\n canViewComments = false;\n changeCanViewComments(value) {\n this.canViewComments = value;\n }\n\n canReview = false;\n canViewReview = false;\n\n lostEditingRights = false;\n changeEditingRights (value) {\n this.lostEditingRights = value;\n }\n\n readerMode = false;\n changeReaderMode () {\n this.readerMode = !this.readerMode;\n }\n\n canBrandingExt = true;\n canBranding = true;\n\n isDocReady = false;\n changeDocReady (value) {\n this.isDocReady = value;\n }\n\n config = {};\n setConfigOptions (config, _t) {\n this.config = config;\n this.customization = config.customization;\n this.canRenameAnonymous = !((typeof (this.customization) == 'object') && (typeof (this.customization.anonymous) == 'object') && (this.customization.anonymous.request===false));\n this.guestName = (typeof (this.customization) == 'object') && (typeof (this.customization.anonymous) == 'object') &&\n (typeof (this.customization.anonymous.label) == 'string') && this.customization.anonymous.label.trim()!=='' ?\n Common.Utils.String.htmlEncode(this.customization.anonymous.label) : _t.textGuest;\n\n const value = this.canRenameAnonymous ? LocalStorage.getItem(\"guest-username\") : null;\n this.user = Common.Utils.fillUserInfo(config.user, config.lang, value ? (value + ' (' + this.guestName + ')' ) : _t.textAnonymous, LocalStorage.getItem(\"guest-id\") || ('uid-' + Date.now()));\n this.user.anonymous && LocalStorage.setItem(\"guest-id\", this.user.id);\n\n config.user = this.user;\n this.isDesktopApp = config.targetApp == 'desktop';\n this.canCreateNew = !!config.createUrl && !this.isDesktopApp;\n this.canOpenRecent = config.recent !== undefined && !this.isDesktopApp;\n this.templates = config.templates;\n this.recent = config.recent;\n this.createUrl = config.createUrl;\n this.lang = config.lang ?? 'en';\n this.location = (typeof (config.location) == 'string') ? config.location.toLowerCase() : '';\n this.sharingSettingsUrl = config.sharingSettingsUrl;\n this.canRequestSharingSettings = config.canRequestSharingSettings;\n this.fileChoiceUrl = config.fileChoiceUrl;\n this.mergeFolderUrl = config.mergeFolderUrl;\n this.saveAsUrl = config.saveAsUrl;\n this.canAnalytics = false;\n this.canRequestClose = config.canRequestClose;\n this.canCloseEditor = false;\n\n let canBack = false;\n\n if (typeof config.customization === 'object' && config.customization !== null) {\n const { goback, close } = config.customization;\n\n if (typeof goback === 'object' && config.canBackToFolder !== false) {\n const hasUrl = !!goback.url;\n const requestClose = goback.requestClose && this.canRequestClose;\n\n canBack = close === undefined ? hasUrl || requestClose : hasUrl && !goback.requestClose;\n\n if (goback.requestClose) {\n console.log(\"Obsolete: The 'requestClose' parameter of the 'customization.goback' section is deprecated. Please use 'close' parameter in the 'customization' section instead.\");\n }\n }\n\n if (typeof close === 'object' && close !== null) {\n this.canCloseEditor = (close.visible!==false) && this.canRequestClose && !this.isDesktopApp;\n }\n }\n\n this.canBack = this.canBackToFolder = canBack;\n this.canRequestSaveAs = config.canRequestSaveAs;\n this.canPlugins = false;\n this.canFeatureForms = !!Common.EditorApi.get().asc_isSupportFeature(\"forms\");\n\n AscCommon.UserInfoParser.setParser(true);\n AscCommon.UserInfoParser.setCurrentName(this.user.fullname);\n }\n setPermissionOptions (document, licType, params, permissions, isSupportEditFeature) {\n if (params.asc_getRights() !== Asc.c_oRights.Edit)\n permissions.edit = permissions.review = false;\n this.review = (permissions.review === undefined) ? (permissions.edit !== false) : permissions.review;\n this.canAnalytics = params.asc_getIsAnalyticsEnable();\n this.canLicense = (licType === Asc.c_oLicenseResult.Success || licType === Asc.c_oLicenseResult.SuccessLimit);\n this.isLightVersion = params.asc_getIsLight();\n this.buildVersion = params.asc_getBuildVersion();\n this.canCoAuthoring = !this.isLightVersion;\n this.isOffline = Common.EditorApi.get().asc_isOffline();\n this.isReviewOnly = (permissions.review === true) && (permissions.edit === false);\n this.canRequestEditRights = this.config.canRequestEditRights;\n this.canEdit = (permissions.edit !== false || permissions.review === true) && // can edit or review\n (this.config.canRequestEditRights || this.config.mode !== 'view') && // if mode==\"view\" -> canRequestEditRights must be defined\n (!this.isReviewOnly || this.canLicense) && // if isReviewOnly==true -> canLicense must be true\n isSupportEditFeature;\n this.isEdit = this.canLicense && this.canEdit && this.config.mode !== 'view';\n this.canReview = this.canLicense && this.isEdit && (permissions.review===true);\n this.canUseHistory = this.canLicense && this.config.canUseHistory && this.canCoAuthoring && !this.isDesktopApp && !this.isOffline;\n this.canRename = this.config.canRename;\n this.canHistoryClose = this.config.canHistoryClose;\n this.canHistoryRestore= this.config.canHistoryRestore;\n this.canUseMailMerge = this.canLicense && this.canEdit && !this.isDesktopApp;\n this.canSendEmailAddresses = this.canLicense && this.config.canSendEmailAddresses && this.canEdit && this.canCoAuthoring;\n this.canComments = this.canLicense && (permissions.comment === undefined ? this.isEdit : permissions.comment) && (this.config.mode !== 'view');\n this.canComments = this.canComments && !((typeof (this.customization) == 'object') && this.customization.comments===false);\n this.canViewComments = this.canComments || !((typeof (this.customization) == 'object') && this.customization.comments===false);\n this.canEditComments = this.isOffline || !permissions.editCommentAuthorOnly;\n this.canDeleteComments= this.isOffline || !permissions.deleteCommentAuthorOnly;\n if ((typeof (this.customization) == 'object') && this.customization.commentAuthorOnly===true) {\n console.log(\"Obsolete: The 'commentAuthorOnly' parameter of the 'customization' section is deprecated. Please use 'editCommentAuthorOnly' and 'deleteCommentAuthorOnly' parameters in the permissions instead.\");\n if (permissions.editCommentAuthorOnly===undefined && permissions.deleteCommentAuthorOnly===undefined)\n this.canEditComments = this.canDeleteComments = this.isOffline;\n }\n this.canChat = this.canLicense && !this.isOffline && (permissions.chat !== false);\n this.canEditStyles = this.canLicense && this.canEdit;\n this.canPrint = (permissions.print !== false);\n this.fileKey = document.key;\n this.isXpsViewer = /^(?:(djvu|xps|oxps))$/.exec(document.fileType);\n this.typeForm = document.fileType === 'pdf'; // can fill forms only in pdf format\n this.isOForm = document.fileType === 'oform';\n this.canFillForms = this.canLicense && this.typeForm && ((permissions.fillForms === undefined) ? this.isEdit : permissions.fillForms) && (this.config.mode !== 'view');\n this.isForm = !this.isXpsViewer && !!window.isPDFForm;\n this.canProtect = permissions.protect !== false;\n this.canSubmitForms = this.canLicense && (typeof (this.customization) == 'object') && !!this.customization.submitForm && !this.isOffline;\n this.isEditableForms = this.isForm && this.canSubmitForms;\n this.isRestrictedEdit = !this.isEdit && (this.canComments || this.canFillForms) && isSupportEditFeature;\n if (this.isRestrictedEdit && this.canComments && this.canFillForms) // must be one restricted mode, priority for filling forms\n this.canComments = false;\n this.trialMode = params.asc_getLicenseMode();\n\n const type = /^(?:(pdf|djvu|xps|oxps))$/.exec(document.fileType);\n \n this.canDownloadOrigin = false;\n this.canDownload = permissions.download !== false;\n this.canReader = (!type || typeof type[1] !== 'string');\n\n this.canBranding = params.asc_getCustomization();\n this.canBrandingExt = params.asc_getCanBranding() && (typeof this.customization == 'object');\n\n this.canFavorite = document.info && (document.info?.favorite !== undefined && document.info?.favorite !== null) && !this.isOffline;\n this.isFavorite = document.info?.favorite;\n\n if ( this.isLightVersion ) {\n this.canUseHistory = this.canReview = this.isReviewOnly = false;\n }\n this.canUseReviewPermissions = this.canLicense && (!!permissions.reviewGroups || this.customization \n && this.customization.reviewPermissions && (typeof (this.customization.reviewPermissions) == 'object'));\n this.canUseCommentPermissions = this.canLicense && !!permissions.commentGroups;\n this.canUseUserInfoPermissions = this.canLicense && !!permissions.userInfoGroups;\n this.canUseReviewPermissions && AscCommon.UserInfoParser.setReviewPermissions(permissions.reviewGroups, this.customization.reviewPermissions);\n this.canUseCommentPermissions && AscCommon.UserInfoParser.setCommentPermissions(permissions.commentGroups); \n this.canUseUserInfoPermissions && AscCommon.UserInfoParser.setUserInfoPermissions(permissions.userInfoGroups);\n\n this.canLiveView = !!params.asc_getLiveViewerSupport() && (this.config.mode === 'view') && !(type && typeof type[1] === 'string') && isSupportEditFeature;\n this.isAnonymousSupport = !!Common.EditorApi.get().asc_isAnonymousSupport();\n }\n\n setCanViewReview (value) {\n this.canViewReview = value;\n }\n\n setFavorite(value) {\n this.isFavorite = value;\n }\n}","import {action, observable, makeObservable} from 'mobx';\n\nexport class storePalette {\n constructor() {\n makeObservable(this, {\n customColors: observable,\n changeCustomColors: action\n });\n }\n \n customColors = [];\n\n changeCustomColors (colors) {\n this.customColors = colors;\n }\n}","import {action, observable, makeObservable} from 'mobx';\r\n\r\nexport class storeReview {\r\n constructor() {\r\n makeObservable(this, {\r\n displayMode: observable,\r\n dataChanges: observable,\r\n changeDisplayMode: action,\r\n changeArrReview: action\r\n });\r\n }\r\n\r\n displayMode = 'markup';\r\n\r\n changeDisplayMode (mode) {\r\n this.displayMode = mode;\r\n }\r\n\r\n dataChanges = [];\r\n\r\n changeArrReview (data) {\r\n this.dataChanges = data && data.length > 0 ? data : [];\r\n }\r\n}","\nimport {makeObservable, observable, action, computed} from 'mobx';\n\nexport class storeComments {\n constructor() {\n makeObservable(this, {\n collectionComments: observable,\n groupCollectionComments: observable,\n filter: observable,\n\n showComments: observable,\n changeShowComment: action,\n removeShowComment: action,\n\n addComment: action,\n removeComment: action,\n changeComment: action,\n changeFilter: action,\n\n groupCollectionFilter: computed,\n\n isOpenEditComment: observable,\n openEditComment: action,\n isOpenAddReply: observable,\n openAddReply: action,\n isOpenEditReply: observable,\n openEditReply: action\n })\n }\n collectionComments = [];\n groupCollectionComments = [];\n\n filter = undefined;\n\n showComments = [];\n changeShowComment (uid) {\n this.showComments.length = 0;\n uid.forEach((item) => {\n this.showComments.push(this.findComment(item));\n });\n }\n\n removeShowComment(id) {\n const index = this.showComments.findIndex((comment) => {\n return comment.uid === id;\n });\n\n if (index !== -1) {\n this.showComments.splice(index, 1);\n }\n }\n\n addComment (comment) {\n comment.groupName ? this.groupCollectionComments.push(comment) : this.collectionComments.push(comment);\n }\n\n removeComment (id) {\n const collection = this.collectionComments.length > 0 ? this.collectionComments : this.groupCollectionComments;\n const index = collection.findIndex((comment) => {\n return comment.uid === id;\n });\n if (index !== -1) {\n collection.splice(index, 1);\n }\n this.removeShowComment(id);\n }\n\n changeComment (id, changeComment) {\n const comment = this.findComment(id);\n if (comment) {\n comment.comment = changeComment.comment;\n comment.userId = changeComment.userId;\n comment.userName = changeComment.userName;\n comment.parsedName = changeComment.parsedName;\n comment.userInitials = changeComment.userInitials;\n comment.userColor = changeComment.userColor;\n comment.resolved = changeComment.resolved;\n comment.quote = changeComment.quote;\n comment.time = changeComment.time;\n comment.date = changeComment.date;\n comment.editable = changeComment.editable;\n comment.removable = changeComment.removable;\n comment.replies = changeComment.replies;\n comment.hide =changeComment.hide;\n }\n }\n\n changeFilter (filter) {\n this.filter = filter;\n }\n\n findComment (id) {\n const collection = this.collectionComments.length > 0 ? this.collectionComments : this.groupCollectionComments;\n let comment = collection.find((item) => {\n return item.uid === id;\n });\n return comment;\n }\n\n get groupCollectionFilter () {\n if (this.filter && this.groupCollectionComments.length > 0) {\n const arr = [];\n this.filter.forEach((groupName) => {\n this.groupCollectionComments.forEach((comment) => {\n if (comment.groupName === groupName) {\n arr.push(comment);\n }\n });\n });\n return arr;\n }\n return false;\n }\n\n // Edit comment\n currentComment = null;\n isOpenEditComment = false;\n openEditComment (open, comment) {\n if (open !== this.isOpenEditComment) {\n this.currentComment = open ? comment : null;\n this.isOpenEditComment = open;\n }\n }\n\n currentReply = null;\n isOpenAddReply = false;\n openAddReply (open, comment) {\n if (open !== this.isOpenAddReply) {\n this.currentComment = open ? comment : null;\n this.isOpenAddReply = open;\n }\n }\n\n isOpenEditReply = false;\n openEditReply (open, comment, reply) {\n if (open !== this.isOpenEditReply) {\n this.currentComment = open ? comment : null;\n this.currentReply = open ? reply : null;\n this.isOpenEditReply = open;\n }\n }\n}","import {action, observable, makeObservable} from 'mobx';\n\nexport class storeToolbarSettings {\n constructor() {\n makeObservable(this, {\n isCanUndo: observable,\n setCanUndo: action,\n isCanRedo: observable,\n setCanRedo: action,\n disabledControls: observable,\n setDisabledControls: action,\n disabledEditControls: observable,\n setDisabledEditControls: action,\n disabledSettings: observable, \n setDisabledSettings: action\n })\n }\n\n disabledControls = true;\n\n setDisabledControls(value) {\n this.disabledControls = value;\n }\n\n disabledEditControls = false;\n\n setDisabledEditControls(value) {\n this.disabledEditControls = value;\n }\n\n disabledSettings = false;\n\n setDisabledSettings(value) {\n this.disabledSettings = value;\n }\n\n isCanUndo = false;\n\n setCanUndo(can) {\n this.isCanUndo = can;\n }\n\n isCanRedo = false;\n\n setCanRedo(can) {\n this.isCanRedo = can;\n }\n}","import {action, observable, makeObservable} from 'mobx';\n\nexport class storeNavigation { \n constructor() {\n makeObservable(this, {\n bookmarks: observable,\n initBookmarks: action\n });\n }\n\n bookmarks = [];\n\n initBookmarks(bookmarks) {\n this.bookmarks = bookmarks;\n }\n}","import {action, observable, makeObservable} from 'mobx';\n\nexport class storeThemes {\n constructor() {\n makeObservable(this, {\n\t\t\tisConfigSelectTheme: observable,\n\t\t\tsetConfigSelectTheme: action,\n\t\t\tcolorTheme: observable,\n\t\t\tsetColorTheme: action,\n systemColorTheme: observable,\n setSystemColorTheme: action,\n resetSystemColorTheme: action,\n setTranslationsThemes: action\n });\n }\n\n themes = {\n\t\tdark: {\n\t\t\tid: 'theme-dark',\n\t\t\ttype: 'dark',\n\t\t},\n\t\tlight: {\n\t\t\tid: 'theme-light',\n\t\t\ttype: 'light',\n\t\t},\n\t\tsystem: {\n\t\t\tid: 'theme-system',\n\t\t\ttype: 'system',\n\t\t}\n\t}\n\n nameColors = [\n\t\t\"canvas-background\",\n\t\t\"canvas-content-background\",\n\t\t\"canvas-page-border\",\n\n\t\t\"canvas-ruler-background\",\n\t\t\"canvas-ruler-border\",\n\t\t\"canvas-ruler-margins-background\",\n\t\t\"canvas-ruler-mark\",\n\t\t\"canvas-ruler-handle-border\",\n\t\t\"canvas-ruler-handle-border-disabled\",\n\n\t\t\"canvas-high-contrast\",\n\t\t\"canvas-high-contrast-disabled\",\n\n\t\t\"canvas-cell-border\",\n\t\t\"canvas-cell-title-border\",\n\t\t\"canvas-cell-title-border-hover\",\n\t\t\"canvas-cell-title-border-selected\",\n\t\t\"canvas-cell-title-hover\",\n\t\t\"canvas-cell-title-text\",\n\t\t\"canvas-cell-title-background\",\n\t\t\"canvas-cell-title-background-selected\",\n\n\t\t\"canvas-scroll-thumb\",\n\t\t\"canvas-scroll-thumb-hover\",\n\t\t\"canvas-scroll-thumb-pressed\",\n\t\t\"canvas-scroll-thumb-border\",\n\t\t\"canvas-scroll-thumb-border-hover\",\n\t\t\"canvas-scroll-thumb-border-pressed\",\n\t\t\"canvas-scroll-arrow\",\n\t\t\"canvas-scroll-arrow-hover\",\n\t\t\"canvas-scroll-arrow-pressed\",\n\t\t\"canvas-scroll-thumb-target\",\n\t\t\"canvas-scroll-thumb-target-hover\",\n\t\t\"canvas-scroll-thumb-target-pressed\",\n\t];\n\n\tisConfigSelectTheme = true;\n setConfigSelectTheme(value) {\n this.isConfigSelectTheme = value;\n }\n\n colorTheme;\n setColorTheme(theme) {\n this.colorTheme = theme;\n }\n\n systemColorTheme;\n setSystemColorTheme(theme) {\n this.systemColorTheme = theme;\n }\n\n resetSystemColorTheme() {\n this.systemColorTheme = null;\n }\n\n setTranslationsThemes(translations) {\n for(let key in this.themes) {\n this.themes[key].text = translations[key];\n }\n }\n}","import {makeObservable, action, observable} from 'mobx';\n\nexport class storeVersionHistory {\n constructor() {\n makeObservable(this, {\n arrVersions: observable, \n setVersions: action,\n isVersionHistoryMode: observable,\n changeVersionHistoryMode: action,\n currentVersion: observable,\n changeVersion: action,\n usersVersions: observable,\n addUser: action, \n })\n }\n\n isVersionHistoryMode = false;\n currentVersion = null;\n arrVersions = [];\n usersVersions = [];\n\n addUser(user) {\n this.usersVersions.push(user);\n }\n\n findUserById(id) {\n const user = this.usersVersions.find(user => user.id === id);\n return user;\n }\n\n changeVersion(version) {\n this.currentVersion = version;\n }\n\n changeVersionHistoryMode(value) {\n this.isVersionHistoryMode = value;\n }\n\n setVersions(arr) {\n this.arrVersions = arr;\n }\n\n findRevisions(revision) {\n return this.arrVersions.filter(rev => rev.revision === revision);\n }\n\n hasChanges() {\n return this.arrVersions.filter(rev => rev.isRevision === false).length > 0\n }\n\n getCurrentVersion() {\n return this.arrVersions.find(rev => rev.selected) || null;\n }\n\n hasCollapsed() {\n return this.arrVersions.filter(rev => rev.isRevision === true && rev.hasChanges === true && rev.isExpanded === false).length > 0;\n }\n}","\nimport {storeDocumentSettings} from './documentSettings';\nimport {storeFocusObjects} from \"./focusObjects\";\nimport {storeUsers} from '../../../../common/mobile/lib/store/users';\nimport {storeTextSettings} from \"./textSettings\";\nimport {storeParagraphSettings} from \"./paragraphSettings\";\nimport {storeShapeSettings} from \"./shapeSettings\";\nimport {storeImageSettings} from \"./imageSettings\";\nimport {storeTableSettings} from \"./tableSettings\";\nimport {storeChartSettings} from \"./chartSettings\";\nimport {storeDocumentInfo} from \"./documentInfo\";\nimport {storeLinkSettings} from './linkSettings';\nimport {storeApplicationSettings} from './applicationSettings';\nimport {storeAppOptions} from \"./appOptions\";\nimport {storePalette} from \"./palette\";\nimport {storeReview} from '../../../../common/mobile/lib/store/review';\nimport {storeComments} from \"../../../../common/mobile/lib/store/comments\";\nimport {storeToolbarSettings} from \"./toolbar\";\nimport { storeNavigation } from './navigation';\nimport { storeThemes } from '../../../../common/mobile/lib/store/themes';\nimport { storeVersionHistory } from '../../../../common/mobile/lib/store/versionHistory';\n\nexport const stores = {\n storeAppOptions: new storeAppOptions(),\n storeFocusObjects: new storeFocusObjects(),\n storeDocumentSettings: new storeDocumentSettings(),\n users: new storeUsers(),\n storeTextSettings: new storeTextSettings(),\n storeLinkSettings: new storeLinkSettings(),\n storeParagraphSettings: new storeParagraphSettings(),\n storeShapeSettings: new storeShapeSettings(),\n storeChartSettings: new storeChartSettings(),\n storeImageSettings: new storeImageSettings(),\n storeTableSettings: new storeTableSettings(),\n storeDocumentInfo: new storeDocumentInfo(),\n storeApplicationSettings: new storeApplicationSettings(),\n storePalette: new storePalette(),\n storeReview: new storeReview(),\n storeComments: new storeComments(),\n storeToolbarSettings: new storeToolbarSettings(),\n storeNavigation: new storeNavigation(),\n storeThemes: new storeThemes(),\n storeVersionHistory: new storeVersionHistory()\n};\n\n","// Import React and ReactDOM\nimport React, { Suspense } from 'react';\nimport { createRoot } from 'react-dom/client';\n\n// Import Framework7\nimport Framework7 from 'framework7/lite-bundle';\nimport { Dom7 } from 'framework7/lite-bundle';\nwindow.$$ = Dom7;\n\n// Import Framework7-React Plugin\nimport Framework7React from 'framework7-react';\n\nimport jQuery from 'jquery';\nwindow.jQuery = jQuery;\nwindow.$ = jQuery;\n\n// Import Framework7 Styles\n\n// Import Icons and App Custom Styles\n// import '../css/icons.css';\nimport('./less/app.less');\n\n// Import App Component\n\nimport { I18nextProvider } from 'react-i18next';\nimport i18n from './lib/i18n.js';\nimport App from './view/app.jsx';\n\nimport { Provider } from 'mobx-react';\nimport { stores } from './store/mainStore.js';\n// import { LocalStorage } from '../../../common/mobile/utils/LocalStorage';\n\nconst container = document.getElementById('app');\n\nconst startApp = () => {\n const root = createRoot(container);\n // Init F7 React Plugin\n Framework7.use(Framework7React);\n\n// Mount React App\n root.render(\n \n \n {/**/}\n \n {/**/}\n \n \n );\n};\n\nconst params = getUrlParams(),\n isForm = params[\"isForm\"];\nif (isForm===undefined && listenApiMsg) {\n listenApiMsg(function (isform) {\n window.isPDFForm = !!isform;\n startApp();\n });\n} else {\n window.isPDFForm = isForm==='true';\n startApp();\n}\n"],"names":["undefined","window","Common","component","Analytics","_category","initialize","id","category","Object","prototype","toString","apply","$","append","trackEvent","action","label","value","isFinite","_gaq","push","Gateway","me","this","$me","commandMap","data","trigger","url","_postMessage","msg","buffer","parent","JSON","frameEditorId","postMessage","stringify","fn","e","origin","parentOrigin","location","command","handler","call","cmd","parse","_onMessage","attachEvent","addEventListener","appReady","event","requestEditRights","requestHistory","requestHistoryData","revision","requestRestore","version","fileType","requestEmailAddresses","requestStartMailMerge","requestHistoryClose","reportError","code","description","errorCode","errorDescription","reportWarning","warningCode","warningDescription","sendInfo","info","setDocumentModified","modified","internalMessage","type","updateVersion","downloadAs","requestSaveAs","title","collaborativeChanges","requestRename","metaChange","meta","documentReady","requestClose","requestMakeActionLink","config","requestUsers","c","requestSendNotify","emails","requestInsertImage","requestMailMergeRecipients","requestCompareFile","requestSharingSettings","requestCreateNew","requestReferenceData","requestOpen","requestSelectDocument","requestSelectSpreadsheet","requestReferenceSource","requestStartFilling","pluginsReady","saveDocument","submitForm","on","_extend_object","dest","source","_","extend","assign","Utils","utils","userAgent","navigator","toLowerCase","check","regex","test","isStrict","document","compatMode","is","m","exec","parseFloat","docMode","documentMode","isOpera","isOpera10_5","isIE","isIE7","isIE8","isIE9","isIE10","isIE11","isIE6","isChrome","isWebKit","isSafari","isSafari2","isSafari3","isSafari4","isSafari5_0","isSafari5","isGecko","isGecko3","isGecko4","isGecko5","isGecko10","isFF3_0","isFF3_5","isFF3_6","isWindows","isMac","isLinux","chromeVersion","firefoxVersion","ieVersion","operaVersion","safariVersion","webKitVersion","isSecure","protocol","vendor","opera","checkSize","scale","AscCommon","checkDeviceScale","correctApplicationScale","str_mq_225","matchMedia","matches","devicePixelRatio","body","classes","className","clear_list","replace","trim","zoom","correct","innerWidth","innerHeight","applicationPixelRatio","checkSizeIE","isOffsetUsedZoom","getBoundingClientRect","element","rect","koef","newRect","x","y","width","height","left","top","right","bottom","getOffsetLeft","offsetLeft","getOffsetTop","offsetTop","getOffset","$element","pos","offset","getPosition","position","addClass","isIEQuirks","isIE7m","isIE7p","isIE8m","isIE8p","isIE9m","isIE9p","isIE10m","isIE10p","isIE11m","isIE11p","isFF4","isFF5","isFF10","emailRe","ipRe","hostnameRe","localRe","emailStrongRe","emailAddStrongRe","ipStrongRe","hostnameStrongRe","documentSettingsType","Paragraph","Table","Header","TextArt","Shape","Image","Slide","Chart","MailMerge","Signature","Pivot","Cell","Slicer","Form","importTextType","DRM","CSV","TXT","Paste","Columns","Data","topOffset","croppedGeometry","InternalSettings","get","themecolor","initnames","txtBlack","txtWhite","txtRed","txtGreen","txtBlue","txtYellow","txtPurple","txtAqua","txtDarkRed","txtDarkGreen","txtDarkBlue","txtDarkYellow","txtDarkPurple","txtDarkTeal","txtLightGray","txtGray","txtLightBlue","txtPink","txtLightYellow","txtSkyBlue","txtRose","txtTurquosie","txtLightGreen","txtLavender","txtLightOrange","txtTeal","txtGold","txtOrange","txtIndigo","txtBrown","txtDarkGray","txtbackground","txttext","txtaccent","txtDarker","txtLighter","txtBrightGreen","txtViolet","ThemeValues","getTranslation","name","getEffectTranslation","parseInt","Math","abs","setColors","colors","standart_colors","i","j","item","length","standartcolors","color","getHexColor","get_r","get_g","get_b","tip","asc_getName","idx","colorName","schemeName","asc_getNameInColorScheme","effectName","asc_getEffectValue","String","textComma","effectId","effectValue","effectcolors","getEffectColors","getStandartColors","r","g","b","getRgbColor","clr","Asc","asc_CColor","put_type","c_oAscColor","COLOR_TYPE_SCHEME","COLOR_TYPE_SRGB","put_r","put_g","put_b","put_a","put_value","colorValue2EffectId","toUpperCase","ThemeColor","metrics","c_MetricUnits","cm","pt","inch","currentMetric","metricName","defaultMetric","txtCm","txtPt","txtInch","setCurrentMetric","getCurrentMetric","getCurrentMetricName","getMetricName","unit","setDefaultMetric","getDefaultMetric","fnRecalcToMM","fnRecalcFromMM","toFixed","Metric","RGBColor","colorString","charAt","substr","colorDefinitions","re","process","bits","rgb","h","round","s","v","t1","t2","t3","processor","channels","isNaN","isEqual","toRGB","toRGBA","alfa","toHex","_r","_g","_b","toHSB","hsb","min","max","delta","utilsString","textCtrl","textShift","textAlt","format","args","toArray","arguments","slice","htmlEncode","string","escape","htmlDecode","unescape","ellipsis","len","word","vs","index","lastIndexOf","platformKey","template","hookFn","isEmpty","isFunction","encodeSurrogateChar","nUnicode","fromCharCode","nLeadingChar","nTrailingChar","fixedDigits","num","digits","fill","strfill","str","isBrowserSupported","showBrowserRestriction","getElementsByClassName","editor","DE","SSE","PE","PDFE","newDiv","createElement","innerHTML","appendChild","hide","remove","applyCustomization","elmap","$el","visible","text","applyCustomizationPlugins","plugins","_createXMLHTTPObject","xmlhttp","XMLHttpRequest","ActiveXObject","E","_getPluginCode","xhrObj","open","send","status","eval","responseText","forEach","fillUserInfo","lang","defname","defid","_user","anonymous","fullname","group","UserInfoParser","getSeparator","guest","createXhr","getConfigJson","loadConfig","callback","fetch","method","headers","then","response","ok","json","catch","asyncCall","scope","Promise","resolve","reject","strongMatch","regExp","RegExp","arr","match","settings","set","lockControls","causes","lock","opts","defControls","controls","array","doLock","cmp","cause","options","contains","keepState","indexOf","splice","merge","union","each","setDisabled","clear","difference","isArray","isDisabled","injectButtons","$slots","iconCls","caption","split","menu","toggle","dataHint","dataHintDirection","dataHintOffset","dataHintTitle","btnsArr","createButtonSet","el","_cls","button","UI","Button","parentEl","eq","cls","enableToggle","disabled","add","injectComponent","$slot","rendered","render","startFullscreenForElement","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","cancelFullscreen","cancelFullScreen","webkitCancelFullScreen","mozCancelFullScreen","msExitFullscreen","warningDocumentIsLocked","disablefunc","app","warning","Locale","default","buttons","primary","btn","getController","api","asc_setLocalRestrictions","c_oAscLocalRestrictionType","None","jQuery","elementById","_el","getElementById","substring","node","querySelectorAll","findById","ModalWindow","count","show","close","isVisible","separator","setParser","getParsedName","username","getParsedGroups","groups","getUserInitials","fio","initials","getKeyByValue","obj","prop","hasOwnProperty","isRTL","isrtl","nativeprocvars","rtl","localStorage","getBool","isCurrentLanguageRtl","iconsStr2IconsObj","icons","result","scaleValue","arrParams","start","commonPart","end","param","values","iconName","tempObj","pop","join","bHasName","bHasType","arrThemes","paramName","thInd","scaleInd","themePath","stateInd","state","getSuitableIcons","theme","Themes","currentThemeId","style","isDarkTheme","defUrl","bestUrl","ratio","current","bestDistance","currentDistance","key","aa","ca","p","a","encodeURIComponent","da","Set","ea","fa","ha","ia","ja","ka","la","ma","d","f","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","z","ra","sa","ta","pa","qa","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","Symbol","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","Ma","Error","stack","Na","Oa","prepareStackTrace","defineProperty","Reflect","construct","l","k","displayName","includes","Pa","tag","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","constructor","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","Array","fb","selected","defaultSelected","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","valueOf","firstChild","removeChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","setProperty","keys","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","track","wbr","ub","vb","wb","xb","target","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","removeEventListener","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","repeat","locale","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","ce","de","ee","fe","ge","he","ie","le","date","datetime","email","month","number","password","range","search","tel","time","week","ne","oe","listeners","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","concat","nf","Ub","instance","listener","D","of","has","pf","qf","rf","random","sf","bind","capture","passive","n","t","J","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Jf","queueMicrotask","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","next","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","dh","K","eh","fh","gh","q","hh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","props","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","uh","vh","wh","xh","yh","implementation","zh","Ah","done","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","create","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Mi","console","error","Ni","WeakMap","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","compare","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","src","Wk","mk","ceil","nk","pk","Y","Z","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","fl","gl","hl","il","jl","zj","$k","ll","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","supportsFiber","inject","exports","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","err","module","setState","forceUpdate","__self","__source","_status","_result","Children","map","only","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","inst","_typeof","_regeneratorRuntime","__esModule","o","asyncIterator","toStringTag","define","writable","wrap","Generator","Context","makeInvokeMethod","tryCatch","arg","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isGeneratorFunction","mark","setPrototypeOf","__proto__","awrap","async","reverse","prev","stop","rval","handle","complete","finish","delegateYield","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","__webpack_module_cache__","inProgress","dataWebpackPrefix","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","definition","chunkId","all","reduce","promises","miniCssF","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","timeout","nc","onScriptComplete","onerror","onload","doneFns","head","loadStylesheet","fullhref","existingLinkTags","dataHref","rel","existingStyleTags","findStylesheet","oldTag","linkTag","nonce","errorType","realHref","request","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","promise","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","some","chunkLoadingGlobal","self","_arrayLikeToArray","arr2","_unsupportedIterableToArray","minLen","from","_toConsumableArray","iter","toPropertyKey","toPrimitive","Number","_defineProperties","descriptor","_createClass","Constructor","protoProps","staticProps","_classCallCheck","_assertThisInitialized","ReferenceError","_possibleConstructorReturn","_getPrototypeOf","_setPrototypeOf","_inherits","subClass","superClass","_isNativeReflectConstruct","Boolean","_construct","_wrapNativeSuper","Class","_cache","Wrapper","isObject","ssrDocument","blur","querySelector","createEvent","initEvent","childNodes","importNode","hash","host","hostname","pathname","getDocument","doc","ssrWindow","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","screen","requestAnimationFrame","cancelAnimationFrame","getWindow","win","Dom7","_Array","items","_this","proto","_callSuper","arrayFlat","res","arrayFilter","filter","selector","html","toCreate","tempParent","qsa","uniqueArray","arrayUnique","_len","_key","classNames","_el$classList","classList","removeClass","_len2","_key2","_el$classList2","toggleClass","_len3","_key3","hasClass","_len4","_key4","attr","attrs","attrName","removeAttr","propName","dom7ElementDataStorage","dataKey","removeData","attributes","val","selectedOptions","transform","duration","transitionDuration","_len5","_key5","eventType","targetSelector","handleLiveEvent","eventData","dom7EventData","parents","handleEvent","events","dom7LiveListeners","proxyListener","dom7Listeners","off","_len6","_key6","handlers","dom7proxy","once","dom","_len7","_key7","eventName","onceHandler","_len8","eventArgs","_key8","_len9","_key9","evt","dataIndex","transitionStart","fireCallBack","transitionEnd","animationEnd","css","outerWidth","includeMargins","styles","offsetWidth","outerHeight","offsetHeight","box","clientTop","clientLeft","scrollY","scrollX","compareWith","webkitMatchesSelector","msMatchesSelector","returnIndex","newChild","tempDiv","appendTo","prepend","prependTo","before","cloneNode","insertAfter","after","nextElementSibling","nextAll","nextEls","previousElementSibling","prevAll","prevEls","siblings","closest","find","foundElements","found","detach","_len10","els","_key10","toAdd","empty","scrollTo","_len11","_key11","easing","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","scrollHeight","scrollWidth","getTime","progress","easeProgress","cos","PI","_len12","_key12","_len13","_key13","animate","initialProps","initialParams","animateInstance","params","elements","animating","que","easingProgress","frameId","dom7AnimateInstance","initialFullValue","finalValue","finalFullValue","container","currentValue","elementsDone","propsDone","began","begin","_el$prop","noTrigger","shortcut","_len14","_key14","click","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","methods","methodName","_defineProperty","_slicedToArray","signum","lerp","amount","clampDouble","sanitizeDegreesDouble","degrees","matrixMultiply","row","matrix","SRGB_TO_XYZ","XYZ_TO_SRGB","WHITE_POINT_D65","argbFromRgb","red","green","blue","argbFromLinrgb","linrgb","delinearized","redFromArgb","argb","greenFromArgb","blueFromArgb","lstarFromArgb","labF","linearized","xyzFromArgb","yFromLstar","lstar","ft3","ft","lstarFromY","rgbComponent","normalized","pow","clampInt","ViewingConditions","aw","nbb","ncb","rgbD","fLRoot","whitePoint","adaptingLuminance","backgroundLstar","surround","discountingIlluminant","xyz","rW","gW","bW","exp","k4","k4F","cbrt","sqrt","rgbAFactors","rgbA","DEFAULT","make","Cam16","hue","chroma","jstar","astar","bstar","other","dJ","dA","dB","dEPrime","viewed","viewingConditions","linearR","linearG","linearB","alpha","hRad","eHue","p1","p2","hSin","sin","hCos","gamma","rA","gA","bA","rCBase","rC","gCBase","gC","bCBase","bC","rF","gF","bF","fromIntInViewingConditions","redL","greenL","blueL","rD","gD","bD","rAF","gAF","bAF","atanDegrees","atan2","hueRadians","huePrime","mstar","fromJchInViewingConditions","fromUcsInViewingConditions","HctSolver","angle","scaledDiscount","SCALED_DISCOUNT_FROM_LINRGB","chromaticAdaptation","sanitizeRadians","mid","coordinate","axis","intercept","lerpPoint","kR","Y_FROM_LINRGB","kG","kB","coordA","coordB","isBounded","targetHue","leftHue","rightHue","initialized","uncut","nthVertex","midHue","hueOf","areInCyclicOrder","segment","bisectToSegment","lPlane","rPlane","criticalPlaneBelow","trueDelinearized","criticalPlaneAbove","mPlane","midPlaneCoordinate","CRITICAL_PLANES","setCoordinate","midpoint","adapted","adaptedAbs","tInnerCoeff","iterationRound","jNormalized","inverseChromaticAdaptation","LINRGB_FROM_SCALED_DISCOUNT","fnj","hueDegrees","argbFromLstar","exactAnswer","findResultByJ","bisectToLimit","fromInt","solveToInt","Variant","Hct","cam","internalHue","internalChroma","internalTone","newHue","setInternalState","newChroma","newTone","viewedInVc","toInt","xyzInViewingConditions","recastInVc","fromXyzInViewingConditions","tone","Blend","designColor","sourceColor","fromHct","toHct","differenceDegrees$1","differenceDegrees","rotationDegrees","outputHue","to","ucs","cam16Ucs","ucsCam","fromCam","toCam","fromJ","fromA","fromB","fromUcs","Contrast","toneA","toneB","ratioOfYs","y1","y2","lighter","darkY","lightY","realContrast","lighterSafe","darkerSafe","darker","DislikeAnalyzer","hct","huePasses","chromaPasses","tonePasses","isDisliked","DynamicColor","palette","isBackground","background","secondBackground","contrastCurve","toneDeltaPair","hctCache","scheme","getHct","cachedAnswer","getTone","answer","decreasingContrast","contrastLevel","roleA","roleB","polarity","stayTogether","bgTone","aIsNearer","isDark","nearer","farther","amNearer","expansionDir","nContrast","getContrast","fContrast","nInitialTone","nTone","ratioOfTones","foregroundTone","fInitialTone","fTone","desiredRatio","_ref","bg2","_ref2","bg1","bgTone1","bgTone2","_ref3","upper","lower","lightOption","darkOption","availables","tonePrefersLightForeground","_args$name","_args$isBackground","lighterTone","lighterUnsafe","darkerTone","darkerUnsafe","lighterRatio","darkerRatio","negligibleDifference","toneAllowsLightForeground","MONOCHROME","NEUTRAL","TONAL_SPOT","VIBRANT","EXPRESSIVE","FIDELITY","CONTENT","RAINBOW","FRUIT_SALAD","ContrastCurve","low","normal","medium","high","ToneDeltaPair","isFidelity","variant","isMonochrome","performAlbers","prealbers","albersd","inViewingConditions","viewingConditionsForAlbers","enableLightForeground","MaterialDynamicColors","surfaceBright","surfaceDim","contentAccentToneDelta","primaryPaletteKeyColor","fromPalette","primaryPalette","keyColor","secondaryPaletteKeyColor","secondaryPalette","tertiaryPaletteKeyColor","tertiaryPalette","neutralPaletteKeyColor","neutralPalette","neutralVariantPaletteKeyColor","neutralVariantPalette","onBackground","surface","surfaceContainerLowest","surfaceContainerLow","surfaceContainer","surfaceContainerHigh","surfaceContainerHighest","onSurface","highestSurface","surfaceVariant","onSurfaceVariant","inverseSurface","inverseOnSurface","outline","outlineVariant","shadow","scrim","surfaceTint","primaryContainer","onPrimary","sourceColorHct","onPrimaryContainer","inversePrimary","secondary","secondaryContainer","onSecondary","initialTone","byDecreasingTone","closestToChroma","chromaPeak","potentialSolution","findDesiredChromaByTone","onSecondaryContainer","tertiary","tertiaryContainer","onTertiary","albersTone","proposedHct","fixIfDisliked","onTertiaryContainer","errorPalette","errorContainer","onErrorContainer","primaryFixed","primaryFixedDim","onPrimaryFixed","onPrimaryFixedVariant","secondaryFixed","secondaryFixedDim","onSecondaryFixed","onSecondaryFixedVariant","tertiaryFixed","tertiaryFixedDim","onTertiaryFixed","onTertiaryFixedVariant","TonalPalette","createKeyColor","smallestDeltaHct","smallestDelta","hctAdd","hctAddDelta","hctSubtract","hctSubtractDelta","CorePalette","isContent","a1","fromHueAndChroma","a2","a3","n1","n2","createPaletteFromColors","content","neutral","neutralVariant","Scheme","_objectSpread","lightFromCorePalette","darkFromCorePalette","contentOf","core","hexFromArgb","_step","outParts","_iterator","_createForOfIteratorHelper","entries","_step$value","part","argbFromHex","hex","isThree","isSix","isEight","parseIntHex","themeFromSourceColor","customColors","schemes","light","dark","palettes","blend","harmonize","tones","onColor","colorContainer","onColorContainer","customColor","rgba","materialColors","hexColor","shouldSkip","uniqueNum","uniqueNumber","mask","mdPreloaderContent","iosPreloaderContent","eventNameToColonCase","hasColon","deleteProps","object","nextTick","nextFrame","parseUrlQuery","query","urlToParse","paramsPart","decodeURIComponent","getTranslate","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","serializeObject","newParents","resultArray","varName","parentParts","varValue","toPush","nextSource","keysArray","nextIndex","nextKey","desc","deep","colorHexToRgb","colorRgbToHex","colorRgbToHsl","colorHslToRgb","rgb1","hp","colorHsbToHsl","HSL","HSB","colorHslToHsb","support","deviceCalculated","getShadeTintColors","hsl","hslShade","hslTint","shade","tint","colorThemeCSSProperties","_materialColors","shadeTintIos","shadeTintMdLight","shadeTintMdDark","ios","bindMethods","subKey","flattenArray","colorThemeCSSStyles","stringifyObject","colorVars","restVars","colorValue","rest","_restVars$colorName","whiteColorVars","blackColorVars","lightString","darkString","getSupport","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","passiveListener","supportsPassive","intersectionObserver","calcSupport","getDevice","overrides","_temp","platform","device","android","androidChrome","desktop","iphone","ipod","ipad","edge","firefox","macos","windows","cordova","electron","capacitor","Capacitor","nwjs","screenWidth","screenHeight","nw","versions","os","osVersion","webView","standalone","webview","pixelRatio","prefersColorScheme","calcDevice","EventsClass","eventsParents","eventsListeners","f7proxy","eventHandler","local","eventsArray","localEvents","parentEvents","eventsParent","emit","Framework7Class","_EventsClass","instanceParams","originalParams","paramKey","modules","moduleName","moduleParams","modulePropName","moduleProp","moduleEventName","vnode","vnodeHooks","vnodeId","hookName","modulesParams","useModule","components","use","static","install","installModule","ConstructorMethods","parameters","_parameters","defaultSelector","domProp","addMethods","ModalMethods","targetEl","$targetPage","modalEl","$modalEl","f7Modal","$parentEl","$targetEl","fetchedModules","moduleToLoad","Framework7","modulePath","moduleObj","moduleFunc","matchNamePattern","lazyModulesPath","scriptLoad","resolveScript","rejectScript","scriptContent","callbackId","callbackLoadName","scriptEl","componentLoader","styleLoad","resolveStyle","styleContent","styleEl","useModuleParams","attrsString","childrenContent","_Framework7Class","passedParams","defaults","routes","initOnDeviceReady","init","darkMode","iosTranslucentBars","iosTranslucentModals","componentUrl","pink","yellow","orange","purple","deeppurple","lightblue","teal","lime","deeporange","white","black","useModulesParams","online","onLine","store","f7","useModules","initStore","colorsStyleEl","rootEl","$rootEl","DARK","LIGHT","mq","colorSchemeListener","media","__store","createStore","enableAutoDarkMode","disableAutoDarkMode","router","componentOptions","$elComponent","f7Component","mount","setDarkMode","initAppComponent","loadModule","loadModules","hook","$jsx","metaStatusbar","getSize","orientationchange","touchClicksDistanceThreshold","disableContextMenu","tapHold","tapHoldDelay","tapHoldPreventClicks","activeState","activeStateElements","activeStateOnMouseMove","mdTouchRipple","iosTouchRipple","touchRippleElements","touchRippleInsetElements","touchEvents","move","touchStartX","touchStartY","targetElement","isMoved","tapHoldFired","tapHoldTimeout","preventClick","activableElement","activeTimeout","rippleWave","rippleTarget","rippleTimeout","isScrolling","useRipple","findActivableElement","activable","preventPropagation","newActivable","isInsideScrollableView","addActive","removeActive","createRipple","touchRipple","removeRipple","rippleTouchStart","rippleElements","rippleParent","findRippleElement","rippleTouchMove","rippleTouchEnd","handleMouseUp","isSegmentedStrong","segmentedStrongEl","touchMoveActivableIos","isTouchMoveActivable","touchmoveActivableEl","emitAppTouchEvent","appTouchStartActive","appTouchMoveActive","appTouchEndActive","appTouchStartPassive","appTouchMovePassive","appTouchEndPassive","passiveListenerCapture","activeListener","activeListenerCapture","isOverswipe","isSegmented","localPreventClick","stopImmediatePropagation","distance","shouldRemoveActive","touchCurrentX","touchCurrentY","buttonEl","elementFromPoint","$activableEl","isNative","tokens","pattern","charCodeAt","lexer","_a","prefixes","defaultPattern","escapeString","delimiter","path","tryConsume","mustConsume","nextType","consumeText","prefix","suffix","modifier","name_1","pattern_1","compile","reFlags","encode","validate","token","optional","typeOfMessage","tokensToFunction","sensitive","stringToRegexp","strict","_c","_d","_e","_f","endsWith","endsWithRe","delimiterRe","route","_i","tokens_1","mod","endToken","isEndDelimited","tokensToRegexp","pathToRegexp","groupsRegex","execResult","regexpToRegexp","paths","parts","arrayToRegexp","History","clearQueue","currentQueue","routerQueue","clearRouterQueue","stateUrl","browserHistoryAnimate","browserHistory","navigate","blockPopstate","previousState","allowChange","views","viewState","allowPageChange","initViewState","viewId","newState","readyState","viewContainerWidth","touchesDiff","touchStartTime","dynamicNavbar","$pageShadowEl","$pageOpacityEl","animatableNavEls","$navbarsEl","isTouched","touchesStart","$currentPageEl","$previousPageEl","allowViewTouchMove","$currentNavbarEl","$previousNavbarEl","paramsSwipeBackAnimateShadow","paramsSwipeBackAnimateOpacity","paramsSwipeBackActiveArea","paramsSwipeBackThreshold","transformOrigin","transformOriginTitleLarge","setAnimatableNavElements","reflow","_clientLeft","classNameSet","styleProp","handleTouchStart","swipeBackEnabled","swipeout","masterDetailBreakpoint","handleTouchMove","f7PreventSwipeBack","preventSwipeBack","cancel","activeNavBackIconText","previousNavBackIconText","inverter","currentNavIsTransparent","currentNavIsLarge","currentNavIsCollapsed","currentNavIsLargeTransparent","previousNavIsTransparent","previousNavIsLarge","previousNavIsCollapsed","previousNavIsLargeTransparent","fromLarge","toLarge","$currentNavElements","$previousNavElements","iosAnimateNavbarBackIcon","f7NavbarLeftOffset","navEl","$navEl","isSubnavbar","isLeft","isTitle","isBg","subNavEl","isSliding","transformTarget","textEl","activeNavTranslate","f7NavbarRightOffset","previousNavTranslate","animatableNavElements","sheet","f7PreventSwipePanel","preventSwipePanelBySwipeBack","percentage","callbackData","currentPageEl","previousPageEl","currentNavbarEl","previousNavbarEl","currentPageTranslate","previousPageTranslate","swipeBackActive","handleTouchEnd","$pages","timeDiff","pageChanged","setNavbarPosition","currentRoute","f7Page","currentPage","pageCallback","swipeBack","saveHistory","removePage","removeNavbar","previousRoute","preloadPreviousPage","preload","redirect","direction","initial","redirectUrl","redirectOptions","processQueue","routeQueue","processRouteQueue","enterNextRoute","routesBeforeEnter","beforeEnter","routesBeforeLeave","beforeLeave","appRouterCheck","asyncComponent","resolvePromise","componentPromise","_default","asyncComponentResult","forward","forwardOptions","masterPageEl","otherDetailPageEl","modalType","reloadCurrent","reloadPages","reloadPrevious","reloadAll","clearPreviousHistory","reloadDetail","masterDetailEnabled","isMaster","master","detailsInBetweenRemoved","currentRouteIsModal","modal","modalLoadProp","modalToClose","modalInstance","previousUrl","findMatchingRoute","modalRemove","$oldPage","$newNavbarEl","$oldNavbarEl","$viewEl","$newPage","reload","removeThemeElements","$navbarEl","keepAlive","keepAliveData","pageEl","$navbarsInView","isDetail","isDetailRoot","$pagesInView","pageInView","navbarInView","newPagePosition","role","root","detailRoot","navbar","getElByPage","navbarEl","removedPageEls","removedNavbarEls","oldNavbarEl","browserHistoryRoot","browserHistorySeparator","propsHistory","newPageInDom","componentEl","f7PageMounted","$oldPageEl","$oldNavbarElEl","tab","tabLoad","checkMasterDetailBreakpoint","setPagePosition","afterAnimation","keepOldPage","setPositionClasses","f7PageTransition","load","loadParams","loadOptions","ignorePageChange","pageName","parentPath","sameParams","allowDuplicateUrls","parseRouteUrl","getPageEl","pageComponentLoader","routerEl","newOptions","xhrAbortController","abort","xhrRequest","pageContent","backward","backwardOptions","masterPageRemoved","backIndex","initialPreload","currentIsMaster","masterRoute","force","$navbarToRemove","$pageToRemove","insertPage","$previousPages","pageToRemove","loadBack","backParams","backOptions","Router","isAppRouter","routerId","scrollHistory","iosDynamicNavbar","initialPages","initialNavbars","newRoute","tempDom","navbarsEl","newNavEls","oldNavEls","animateIcon","animatableNavEl","$navbarInner","isIconLabel","needsOpacityTransition","$iconEl","leftOffset","rightOffset","navEls","otherEls","otherNavEl","iconTextEl","$newPageEl","animateCustom","routerCustomTransitionClass","toDifferent","oldIsLarge","newIsLarge","routerTransitionClass","animateNavbars","removeEl","tabEl","tabChild","removeElements","removeElementsWithTimeout","removeElementsTimeout","findElement","stringSelector","$container","viewMainClass","flattenedRoutes","hasTabRoutes","tabs","mergedPathsRoutes","tabRoute","tRoute","flattenRoutes","detailRoutes","detailRoute","dRoute","masterRoutePath","childRoute","cRoute","findRouteByKey","constructRouteUrl","toUrl","foundTabRouteUrl","$tabEl","tabId","matchingRoute","_router$parseRouteUrl","matched","pathsToMatch","alias","aliasPath","pathToMatch","keyObj","paramValue","compiledUrl","xhrCache","xhr","requestUrl","ignoreCache","hasQuery","passRouteQueryToRequest","passRouteParamsToRequest","replaceRequestUrlParams","xhrCacheIgnoreGetParameters","xhrCacheIgnore","cachedUrl","xhrCacheDuration","fetchRes","AbortController","signal","removeFromXhrCache","ariaHidden","toRemove","pageFromEl","pageFrom","$pageEl","fromPage","$pageFromEl","page","restoreScrollTopOnBack","camelName","colonName","getPageData","_ref2$on","_ref2$once","attachEvents","$pageContent","pageContentEl","f7PageInitialized","f7RouteEventsAttached","f7RouteEventsOn","f7RouteEventsOnce","browserHistoryStoreHistory","newUrl","_router$parseRouteUrl2","initialUrl","historyRestored","URL","documentUrl","_router$params","browserHistoryOnLoad","warn","restoreHistory","_router$getInitialUrl","getInitialUrl","iosSwipeBack","mdSwipeBack","SwipeBack","_router$params2","browserHistoryAnimateOnLoad","browserHistoryInitialMatch","initUrl","loadInitialPage","modalOpen","pageAfterIn","hasTabRoute","initOptions","routerProp","navigateParams","navigateOptions","createRoute","generateUrl","navigateUrl","currentPath","viewName","anotherViewName","anotherView","openIn","ignoreOpenIn","routerLoaded","asyncResolve","resolveParams","resolveOptions","resolvedAsModal","modalRoute","modalLoad","asyncReject","pageLoadProp","preloadMaster","masterLoaded","refreshPage","parentPageEl","browserHistoryTabs","$parentPageEl","hasContentLoadProp","tabShowResult","$newTabEl","$oldTabEl","animated","onTabsChanged","tabParentPageData","f7RouterTabLoaded","loadTab","loadTabParams","loadTabOptions","contentEl","tabEventTarget","unloadTabContent","tabRemove","onTabLoaded","tabComponentLoader","tabContent","tabLoadProp","hasTabComponentChild","removeTabContent","foundLoadProp","isPanel","modalOrPanel","modalParams","routeCallback","panelOpen","modalClose","panelClose","modalClosed","panelClosed","onModalLoaded","hasEl","closeOnSwipeBack","closeByRouter","modalComponent","removeModal","loadModal","loadModalParams","loadModalOptions","modalComponentLoader","modalContent","navigateProps","_navigateOptions","prevOpenedModals","forceOtherUrl","isBrokenBrowserHistory","needHistoryBack","currentRouteWithoutBrowserHistory","skipMaster","$previousPage","$previousMaster","expectedPreviousPageUrl","expectedPreviousPageRoute","previousPageRoute","panel","clearPreviousPages","templates","resizableInitialized","resizable","resizableWidth","$htmlEl","$resizeHandlerEl","minWidth","maxWidth","handleResize","transformCSSWidth","newV","$pageMasterEl","newWidth","View","viewParams","routesAdd","main","f7View","viewProp","wasMasterDetail","isMasterDetail","masterDetailResizable","resizableView","viewEl","initMasterDetail","initRouterOnTabShow","clicks","externalLinks","$clickedEl","$clickedLinkEl","isLink","InAppBrowser","Plugins","Browser","moduleClicks","preventF7Router","clickSelector","matchingClickedElement","clickedLinkData","clickedEl","linksView","ViewClass","f7RouteProps","initClicks","SW","registrations","register","serviceWorker","reg","unregister","registration","storeParams","originalState","actions","getters","propsQueue","gettersDependencies","gettersCallbacks","getterKey","getGetterValue","addGetterCallback","__removeCallback","stateKey","callbacks","removeGetterCallback","getterValue","addCallback","dep","addGetterDependencies","onUpdated","__callback","Proxy","_gettersPlain","actionName","isCapacitor","StatusBar","Statusbar","setTextColor","styleLightContent","styleDefault","setStyle","setBackgroundColor","backgroundColorByHexString","getInfo","overlaysWebView","overlays","setOverlaysWebView","overlay","statusbar","enabled","isCordova","isCap","scrollTopOnClick","iosOverlaysWebView","iosTextColor","androidOverlaysWebView","androidTextColor","iosBackgroundColor","androidBackgroundColor","componentCache","iosSwipeBackAnimateShadow","iosSwipeBackAnimateOpacity","iosSwipeBackActiveArea","iosSwipeBackThreshold","mdSwipeBackAnimateShadow","mdSwipeBackAnimateOpacity","mdSwipeBackActiveArea","mdSwipeBackThreshold","iosPageLoadDelay","mdPageLoadDelay","$popoverView","$popupView","$panelView","$viewsEl","getCurrentView","insert","elm","Navbar","$innerEl","needCenterTitle","needLeftTitle","iosCenterTitle","currLeft","diff","subnavbar","noLeft","noRight","leftWidth","rightWidth","titleWidth","navbarStyles","navbarInnerWidth","paddingLeft","paddingRight","isPrevious","sliding","requiredLeft","titleLeftOffset","titleRightOffset","activeNavbarBackLink","titleLeft","hideStatusbar","hideOnlyCurrent","isDynamic","subEl","pageData","getPageByEl","collapseLargeTitle","expandLargeTitle","toggleLargeTitle","initNavbarOnScroll","needHide","needCollapse","needTransparent","previousScrollTop","currentScrollTop","reachEnd","navbarHidden","navbarCollapsed","navbarTitleLargeHeight","navbarOffsetHeight","scrollChanged","scrollContent","scrollTimeoutId","touchEndTimeoutId","$titleLargeEl","isLarge","navbarHideHeight","snapPageScrollToLargeTitle","snapPageScrollToTransparentNavbar","touchSnapTimeout","desktopSnapTimeout","calcScrollableDistance","f7ScrollableDistance","snapLargeNavbar","snapTransparentNavbar","previousCollapseProgress","collapseProgress","handleScroll","isLargeTransparent","scrollableDistance","previousCollapseWasInMiddle","$bgEl","handleLargeNavbarCollapse","notTransparent","handleNavbarTransparent","showOnPageScrollEnd","showOnPageScrollTop","handeTouchStart","f7DetachNavbarScrollHandlers","scrollTopOnTitleClick","mdCenterTitle","hideOnPageScroll","collapseLargeTitleOnScroll","pageBeforeRemove","pageBeforeIn","pageReinit","pageInit","needCollapseOnScrollHandler","needTransparentOnScroll","needHideOnScrollHandler","tabShow","clickedData","$pageContentEl","postpatch","Toolbar","setHighlight","tabbarEl","$tabbarEl","$highlightEl","tabLinksCount","highlightWidth","highlightTranslate","$activeLink","activeIndex","toolbar","initToolbarOnScroll","toolbarHidden","$toolbarEl","f7ScrollToolbarHandler","tabbar","subnavbarEl","TouchRipple","ripple","_$el$0$getBoundingCli","center","diameter","isInset","insetElements","rippleTransform","$rippleWaveEl","shouldBeRemoved","out","removeTimeout","openedModals","dialogsQueue","Modal","opened","$containerEl","containerEl","backdrop","backdropUnique","forceBackdropUnique","$backdropEl","animateModal","pushToQueue","queueDialogs","openedModal","$modalParentEl","wasInDom","onClosed","onOpened","onOpen","needToHideBackdrop","popupEl","popupInstance","closeByBackdropClick","backdropEl","onClose","destroyed","CustomModal","_Modal","extendedParams","customModal","handleClick","Dialog","dialog","verticalButtons","cssClass","destroyOnClose","addKeyboardHander","dialogClasses","buttonsHTML","class","strong","dialogHtml","buttonOnClick","onKeyDown","keyCodes","setProgress","progressbar","setText","newText","$textEl","setTitle","newTitle","$titleEl","buttonOk","buttonCancel","usernamePlaceholder","passwordPlaceholder","preloaderTitle","progressTitle","destroyPredefinedDialogs","keyboardActions","defaultDialogTitle","autoFocusHandler","isIosTheme","alert","callbackOk","prompt","callbackCancel","inputValue","confirm","login","preloader","preloaderInner","infinite","Popup","pushOffset","isPush","popup","$target","Keyboard","needToClose","closeOnEscape","pushViewScale","startTouch","currentTouch","pageContentScrollTop","pageContentOffsetHeight","pageContentScrollHeight","popupHeight","$pushEl","allowSwipeToClose","swipeToClose","swipeHandler","pushProgress","hasPreviousPushPopup","updatePushOffset","wasPush","setPushOffset","removeProperty","parentSelector","LoginScreen","loginScreen","Popover","popover","$arrowEl","anotherPopoverEl","f7PopoverRef","arrow","originalOpen","arrowEl","touchStartTarget","closeByOutsideClick","isAnotherPopoverBackdrop","isAnotherPopoverTarget","_popover$params","targetX","targetY","verticalPosition","arrowLeft","arrowTop","targetWidth","targetHeight","targetOffsetLeft","targetOffsetTop","arrowSize","hasArrow","arrowMin","safeAreaTop","safeAreaLeft","safeAreaRight","targetOffset","targetParentPage","hPosition","forcedPosition","popoverEl","$popoverEl","Actions","convertToPopover","popoverHtml","renderPopover","actionsHtml","originalClose","buttonIndex","groupIndex","$buttonEl","_actions$params","forceToPopover","closed","grid","buttonClasses","icon","itemClasses","Sheet","isTopSheetModal","swipeStepTranslate","startTranslate","currentTranslate","sheetElOffsetHeight","minTranslate","maxTranslate","$pushViewEl","pushBorderRadius","sheetPageContentEl","sheetPageContentScrollTop","sheetPageContentScrollHeight","sheetPageContentOffsetHeight","currentBreakpointIndex","useBreakpoints","breakpoints","breakpointsTranslate","backdropBreakpointSet","swipeToStep","setBackdropBreakpoint","setPushBreakpoint","openDirection","closeDirection","absCurrentTranslate","absSwipeStepTranslate","setBreakpoint","allBreakpoints","closestTranslate","curr","closestIndex","stepOpened","breakpoint","pushBreakpoint","pushBreakpoints","pushTransparentBreakpoint","backdropBreakpoint","backdropBreakpoints","backdropTransparentBreakpoint","calcBreakpoints","fullSize","onResize","setSwipeStep","byResize","$swipeStepEl","scrollToEl","$scrollEl","newPaddingBottom","paddingTop","paddingBottom","pageHeight","pageScrollHeight","pageScroll","scrollElTop","scrollToElementOnOpen","stepOpen","stepClose","stepToggle","sheetInstance","Toast","toast","timeoutId","_toast$params","closeButton","closeTimeout","toastHtml","openedEl","toastInstance","_toast$params2","horizontalPosition","closeButtonColor","closeButtonText","horizontalClass","Preloader","preloaders","showIn","hideIn","photoBrowserOpen","preloaderEl","tabMounted","Progressbar","$progressbarEl","progressNormalized","$progressbarLine","removeAfterHide","progressbarEl","update","Sortable","$sortingEl","$sortingItems","$sortableContainer","sortingElHeight","minTop","$insertAfterEl","$insertBeforeEl","indexFrom","pageOffset","sortingElOffsetLocal","sortingElOffsetTop","initialScrollTop","wasTapHold","isTapHold","$listGroup","allowOpen","allow","translateScrollOffset","translate","scrollDiff","scrollAddition","allowScroll","$currentEl","currentElOffset","currentElHeight","sortingElOffset","prevTranslate","f7Translate","indexTo","moveElements","sortableMoveElements","sortable","f7VirtualListIndex","virtualList","f7VirtualList","moveItem","pointerEvent","enable","disable","Swipeout","$swipeoutEl","$swipeoutContent","$actionsRight","$actionsLeft","actionsLeftWidth","actionsRightWidth","openedActionsSide","$leftButtons","$rightButtons","$overswipeLeftButton","$overswipeRightButton","overswipeLeft","overswipeRight","noFollow","buttonOffset","buttonTranslate","overswipeRatio","f7SwipeoutButtonOffset","$buttons","$actions","actionsWidth","newTranslate","side","$swipeoutActions","swipeoutActionsWidth","onSwipeoutClose","virtualIndex","deleteItem","actionsNoFold","_data","confirmTitle","Accordion","toggleClicked","$accordionItemEl","$accordionContent","accordion","prevented","prevent","$list","$contentEl","$openedItem","VirtualList","defaultHeight","cols","dynamicHeightBufferSize","showFilteredItemsOnly","renderExternal","setListHeight","searchByItem","searchAll","createUl","scrollableParentEl","renderItem","filteredItems","$scrollableParentEl","updatableScroll","$itemsWrapEl","$ul","itemsWrapEl","domCache","tempDomElement","lastRepaintY","fragment","createDocumentFragment","rowsPerScreen","rowsBefore","rowsAfter","rowsToRender","maxBufferHeight","listHeight","dynamicHeight","autoHeight","$panelEl","$popupEl","handleScrollBound","handleResizeBound","detachEvents","autoHeightRerender","heights","itemHeight","heightsCalculated","renderedItems","itemIndex","renderedItem","forceScrollTop","fromIndex","toIndex","topPosition","heightBeforeFirstItem","heightBeforeLastItem","itemTop","renderExternalItems","itemEl","currentFromIndex","currentToIndex","emptyTemplate","setListSize","indexes","resetScrollTop","listTop","getClientRects","appendItems","newCache","cached","prependItems","cachedIndex","leftIndex","rightIndex","indexShift","appendItem","prependItem","prevIndex","_loop","deletedItem","deleteItems","deleteCache","ListIndex","$listEl","listEl","iosItemHeight","mdItemHeight","scrollList","itemContent","renderSkipPlaceholder","f7ListIndex","calcSize","$clickedLi","skipRate","scrollListToIndex","topPoint","bottomPoint","$labelEl","previousIndex","$children","ulHeight","bubbleBottom","$scrollToEl","parentTop","scrollToElTop","navbarInnerEl","wasSkipped","itemHtml","maxItems","elContent","calcIndexes","listIndex","listIndexEl","tabBeforeRemove","Tab","tabLinkEl","animatedInit","$tabLinkEl","f7TabRoute","newTabEl","$tabsEl","tabsChangedCallbacks","tabsChanged","swiper","tabsTranslate","newTabIndex","slides","slideTo","tabLinkElement","$oldTabLinkEl","oldTabId","oldTabEl","pageOrTabEl","animatedTabEl","swipeInitialized","swipeable","otherPanel","isGestureStarted","isInterrupted","backdropOpacity","panelWidth","effect","touchMoves","handleGestureStart","handleGestureEnd","swipe","swipeOnlyClose","otherPanelOpened","swipeActiveArea","getViewEl","preventSwipePanel","threshold","swipeThreshold","insertToRoot","noFollowProgress","swipeNoFollow","viewTranslate","isGesture","removePanelInClass","setStateClasses","visibility","panelMinWidth","panelMaxWidth","visibleByBreakpoint","isPushingPanel","newPanelWidth","Panel","f7Panel","_panel$params","panelInView","visibleBreakpointDisabled","setVisibleBreakpoint","emitEvents","visibleBreakpointResizeHandler","visibleBreakpoint","wasVisible","allowPanelOpen","collapsedBreakpointDisabled","setCollapsedBreakpoint","collapsedBreakpointResizeHandler","collapsedBreakpoint","collapsed","resizablePanel","swipePanel","modifyHtmlClasses","_openTransitionStarted","toggleVisibleBreakpoint","$panelParentEl","otherOpenedPanel","transitionEndTarget","panelTransitionEnd","enableSwipe","enableResizable","panelEl","CardExpandable","cardEl","$cardEl","cardParams","card","hideNavbarOnOpen","hideToolbarOnOpen","hasTransform","currTransform","$cardContentEl","$cardSizeEl","statusbarHeight","cardWidth","cardHeight","pageWidth","maxHeight","hideStatusbarOnOpen","cardLeftOffset","cardTopOffset","scaleX","scaleY","transformValues","cardRightOffset","cardScrollTop","touchEndX","touchEndY","isV","isH","$cardScrollableEl","cardBottomOffset","translateX","translateY","f7KeepNavbarOnClose","f7KeepToolbarOnClose","detachEventHandlers","onTouchStart","onTouchMove","onTouchEnd","scrollableEl","animateWidth","$openedCardEl","FormData","formId","$formEl","removeItem","FormStorage","formEl","initialData","getFormData","fillFromData","convertToData","storeFormData","formToData","skipTypes","skipNames","inputEl","$inputEl","formFromData","formData","selectEl","checkboxEl","radioEl","initAjaxForm","fromData","contentType","removeFormData","storage","Input","ignoreTypes","createTextareaResizableShadow","$shadowEl","readonly","textareaResizableShadow","resizeTextarea","textareaEl","$textareaEl","styleValue","currentHeight","clientHeight","initialHeight","$itemInputEl","$inputWrapEl","setReadonly","f7ValidateReadonly","readOnly","validity","validationMessage","errorMessage","valid","$errorEl","validateInputs","checkEmptyState","hasAttribute","scrollIntoView","centered","$scrollableEl","contentHeight","contentScrollTop","contentPaddingTop","contentPaddingBottom","contentOffsetTop","inputOffsetTop","centeredPosition","previousValue","isContentEditable","scrollIntoViewOnFocus","scrollIntoViewDuration","scrollIntoViewCentered","scrollIntoViewAlways","itemInputEl","Toggle","f7Toggle","toggleWidth","touchStartChecked","changed","handleInputChange","toggleEl","Range","dual","step","draggableBar","vertical","verticalReversed","formatLabel","scaleSteps","scaleSubSteps","formatScaleLabel","limitKnobPosition","f7Range","valueLeft","valueRight","_range$params","$barEl","$barActiveEl","knobHTML","knobs","$knobEl","$scaleEl","labels","renderScale","rangeOffset","rangeOffsetLeft","rangeOffsetTop","$touchedKnobEl","dualValueIndex","valueChangedByTouch","targetTouchIdentifier","parentModals","parentPanel","parentPage","onTouchChange","identifier","rangeHeight","rangeWidth","newValue","leftValue","rightValue","touchEnded","layout","knobHeight","knobWidth","knobSize","rangeSize","positionProperty","knobIndex","startPos","realStartPos","byTouchMove","valueChanged","oldValue","newValues","valueIndex","labelEl","scaleEl","scaleStepValue","subStepEl","subIndex","subStep","subProgress","rangeEl","Stepper","stepper","valueEl","formatValue","watchInput","autorepeat","autorepeatDynamic","wraps","manualInputMode","decimalPoint","buttonsEndInputMode","$valueEl","f7Stepper","$buttonPlusEl","$buttonMinusEl","_stepper$params","buttonPlusEl","buttonMinusEl","typeModeChanged","preventButtonClick","intervalId","autorepeatAction","autorepeatInAction","manualInput","dynamicRepeat","progressions","startsIn","progressionStep","repeatEvery","clearInterval","setInterval","onMinusClick","endTypeMode","decrement","onPlusClick","increment","onInputClick","onInputKey","onInputBlur","onInput","typeValue","sentByF7Stepper","withWraps","formattedValue","noBlur","inputTxt","powVal","stepperEl","defaultDiacriticsRemovalap","letters","diacriticsMap","SmartSelect","ss","smartSelect","f7SmartSelect","$selectEl","setValueText","inputType","selectId","onChange","clearCache","optionEl","displayAs","optionText","maxLength","checkMaxLength","optEl","formatValueTextContent","closeOnSelect","inputName","selectName","attachInputsEvents","detachInputsEvents","valueFormatted","formatValueText","valueArray","$optionEl","previousGroupEl","optionData","optionImage","optionIcon","optionIconIos","optionIconMd","optionInputIconPosition","inputIconPosition","optionHasMedia","optionColor","optionClassName","optionClass","optionGroupEl","optionGroupLabel","optionIsLabel","groupLabel","isLabel","groupEl","image","iconIos","iconMd","hasMedia","checkbox","radio","renderSearchbar","spellcheck","searchbarSpellcheck","placeholder","searchbarPlaceholder","searchbarDisableButton","searchbarDisableText","iconValue","ssValue","hasIcon","iconContent","iconClass","getIconClass","_checked","renderItems","itemsHtml","renderPage","pageTitle","$itemTitleEl","navbarColorTheme","pageBackLinkText","searchbar","formColorTheme","renderPopup","popupTabletFullscreen","popupCloseLinkText","renderSheet","toolbarColorTheme","sheetCloseLinkText","selectedIndex","scrollToItem","$selectedItemEl","openedIn","virtualListHeight","removeDiacritics","scrollToSelectedItem","$searchbarEl","appendSearchbarNotFound","$notFoundEl","searchbarParams","searchContainer","searchIn","getItemsData","pageHtml","pageBeforeOut","pageAfterOut","popupParams","popupPush","popupSwipeToClose","popupOpen","popupOpened","popupClose","popupClosed","routableModals","sheetParams","sheetBackdrop","sheetPush","sheetSwipeToClose","sheetOpen","sheetOpened","sheetClose","sheetClosed","popoverParams","popoverOpen","popoverOpened","popoverClose","popoverClosed","smartSelectEl","Calendar","calendar","isHorizontal","inline","allowTouchMove","hasTimePicker","timePicker","rangePicker","dayFormatter","Intl","DateTimeFormat","day","monthFormatter","yearFormatter","year","timeSelectorFormatter","timePickerFormat","timeFormatCheckDate","is12HoursFormat","_calendar$params","monthNames","monthNamesShort","dayNames","dayNamesShort","_calendar$getIntlName","getIntlNames","monthNamesIntl","monthNamesShortIntl","dayNamesIntl","dayNamesShortIntl","onInputFocus","onInputClear","onHtmlClick","isPopover","closing","monthPickerPopover","yearPickerPopover","timePickerPopover","attachInputEvents","inputReadOnly","detachInputEvents","attachHtmlEvents","detachHtmlEvents","attachCalendarEvents","wrapperWidth","wrapperHeight","allowItemClick","$wrapperEl","monthsTranslate","resetMonth","nextMonth","prevMonth","handleDayClick","$dayEl","dateYear","dateMonth","dateDay","valueToAdd","setHours","getHours","getMinutes","addValue","onNextMonthClick","onPrevMonthClick","onNextYearClick","nextYear","onPrevYearClick","prevYear","onMonthSelectorClick","openMonthPicker","onYearSelectorClick","openYearPicker","onTimeSelectorClick","openTimePicker","monthPicker","yearPicker","touchMove","detachCalendarEvents","yearStarted","yearEnded","formatterMonthNames","formatterMonthNamesShort","formatterDayNames","weekday","formatterDayNamesShort","setMonth","currentYear","weekDay","getDay","getFullYear","getMonth","getDate","normalizeDate","month1","_calendar$params2","dateFormat","twoDigits","yyyy","yy","mm","MM","DD","hours","minutes","seconds","getSeconds","hours12","HH","regexp","formatDate","_calendar$params3","rangePickerMinDays","rangePickerMaxDays","inValuesIndex","updateValue","sort","equal","onlyHeader","valueDate","leftDate","rightDate","timePickerPlaceholder","header","dir","currentLocaleMonth","currentLocaleYear","$months","currentMonth","currentDate","prevMonthHtml","renderMonth","currentMonthHtml","nextMonthHtml","setMonthsTranslate","monthEl","updateCurrentMonthYear","currentIndex","rebuildBoth","prevMonthTranslate","currentMonthTranslate","nextMonthTranslate","nextDateTime","transitionEndCallback","maxDate","onMonthChangeStart","onMonthChangeEnd","prevDateTime","minDate","targetDate","newMonthHTML","monthTranslate","wrapperTranslate","setYearMonth","dayDate","renderMonths","localeMonth","localeYear","hasEvents","currentValues","today","daysInPrevMonth","daysInMonth","minDayNumber","firstDay","monthHtml","dayIndex","firstDayOfMonthIndex","rowHtml","dayNumber","weekDayIndex","weekendDays","eventsHtml","dateInRange","eventDots","ev","rangesClasses","dayYear","dayMonth","dayNumberDisplay","renderWeekHeader","weekDaysHtml","dayName","renderMonthSelector","renderYearSelector","timeString","timePickerLabel","renderHeader","headerPlaceholder","renderFooter","toolbarCloseText","renderToolbar","monthSelector","yearSelector","_calendar$params4","footer","weekHeader","renderTimeSelector","_calendar$params5","_calendar$params6","_calendar$params7","renderCustomModal","renderInline","closeMonthPicker","monthPickerInstance","displayValues","picker","monthPickerToolbar","rotateEffect","monthPickerCloseText","diffIndex","closeYearPicker","yearPickerInstance","yearMin","yearPickerMin","yearMax","yearPickerMax","years","yearPickerToolbar","yearPickerCloseText","hoursArr","minutesArr","hoursMax","closeTimePicker","timePickerInstance","timePickerToolbar","timePickerCloseText","divider","timePickerValue","period","opening","normalizeValues","required","f7Calendar","scrollToInput","initInput","hour","minute","pickerColumn","colEl","updateItems","colHeight","$colEl","colIndex","$itemsEl","replaceValues","renderColumn","hadPadding","valueCallbacks","newActiveIndex","newScrollTop","previousActiveIndex","selectedItem","$itemEl","itemsFit","displayValue","freeMode","Picker","resizeCols","needsOriginFix","htmlTouchStartTarget","onHtmlTouchStart","attachResizeEvent","detachResizeEvent","forceValues","column","newDisplayValue","noDividerColumns","onlyItems","columnHtml","columnItemsHtml","colClasses","textAlign","_picker$params","_picker$params2","_picker$params3","initColumn","f7Picker","InfiniteScroll","virtualListContainer","onTop","scrollHandler","infiniteScroll","f7InfiniteScrollHandler","$isEls","PullToRefresh","ptr","$preloaderEl","touchId","isMaterial","isIos","$transitionTarget","onTranstionEnd","refresh","mousewheel","wasScrolled","triggerDistance","dynamicTriggerDistance","pullStarted","maxScrollTop","mousewheelTimeout","mousewheelMoved","useTranslate","forceUseTranslate","hasNavbar","pageNavbarEl","$pageNavbarEl","isTransparent","setPreloaderProgress","$bars","perBarProgress","barEl","barIndex","barProgress","unsetPreloaderProgress","targetIsScrollable","$ptrWatchScrollable","ptrScrollableEl","mousewheelAllow","mousewheelTranslate","handleMouseWheelRelease","handleMouseWheel","f7PullToRefresh","$ptrEls","DataTable","table","f7DataTable","handleChange","sentByF7DataTable","columnIndex","checkedRows","totalRows","$headCheckboxEl","checkSelectedHeader","handleSortableClick","newSort","$cellEl","isActive","currentSort","collapsible","$headerEl","$headerSelectedEl","elIndex","collapsibleTitle","checkedItems","setCollapsibleLabels","dataTable","tableEl","Fab","morphOpen","fabEl","$fabEl","borderRadius","fab","f7FabMorphData","diffX","diffY","f7FabMorphResizeHandler","diffXNew","diffYNew","scaleXNew","scaleYNew","morphClose","morphData","$buttonsEl","Searchbar","_FrameworkClass","inputEvents","disableButton","disableButtonEl","searchItem","searchGroup","searchGroupTitle","ignore","foundEl","notFoundEl","hideOnEnableEl","hideOnSearchEl","customSearch","hideGroupTitles","hideGroups","disableOnBackdropClick","expandable","f7Searchbar","$foundEl","$hideOnEnableEl","$hideOnSearchEl","$searchContainer","$disableButtonEl","preventSubmit","onInputChange","isVirtualList","disableOnClick","onPageBeforeOut","onPageBeforeIn","disableButtonHasMargin","previousQuery","setFocus","backdropShow","setDisableButtonMargin","needsFocus","titleLargeHeight","backdropHide","internal","vlQuery","foundItems","resetFilter","compareWithText","$searchIn","searchInEl","itemText","wordsMatch","titleEl","$nextElements","$nextEl","$groupEl","filterItems","FrameworkClass","searchbarEl","_extends","Messages","autoLayout","messages","newMessagesFirst","scrollMessages","scrollMessagesOnEdge","firstMessageRule","lastMessageRule","tailMessageRule","sameNameMessageRule","sameHeaderMessageRule","sameFooterMessageRule","sameAvatarMessageRule","customClassMessageRule","renderMessage","f7Messages","messageEl","$messageEl","textHeader","textFooter","imageSrc","typing","avatar","getMessageData","messageToRender","isTyping","messagesToRender","_m$params","_m$params2","_m$params3","_m$params4","_m$params5","_m$params6","_m$params7","_m$params8","getMessagesData","previousMessage","nextMessage","isFirstMessage","isLastMessage","isTailMessage","isSameNameMessage","isSameHeaderMessage","isSameFooterMessage","isSameAvatarMessage","customMessageClasses","isCustomClassMessage","customClass","messageToRemove","messagesToRemove","messagesToRemoveEls","messageToRemoveIndex","removeMessage","messageToAdd","addMessages","scrollHeightBefore","heightBefore","scrollBefore","scrollData","messagesToAdd","_m$setScrollData","setScrollData","messagesHTML","typingMessage","$messagesEls","scrollWithEdgeCheck","addMessage","typingMessageIndex","typingFound","$typingMessageEl","_m$scrollData","onEdge","currentScroll","renderMessages","messagesEl","Messagebar","messagebar","bottomOffset","attachments","renderAttachments","renderAttachment","resizePage","f7Messagebar","$areaEl","$attachmentsEl","$sheetEl","onAppResize","onSubmit","onAttachmentClick","onTextareaChange","onTextareaFocus","sheetHide","onTextareaBlur","areaEl","attachmentsEl","attachmentsVisible","sheetEl","sheetVisible","elHeight","currentPaddingBottom","requiredPaddingBottom","currentPaddingTop","pageOffsetHeight","scrollOnBottom","attachmentsCreate","attachmentsHide","attachmentsShow","attachment","sheetCreate","sheetShow","messagebarEl","currentStyle","noExtend","HTMLElement","__swiper__","setCSSProperty","animateCSSModeScroll","targetPosition","startPosition","speed","wrapperEl","scrollSnapType","cssModeFrameID","isOutOfBound","currentPosition","getSlideTransformEl","slideEl","shadowRoot","elementChildren","elementOffset","elementStyle","elementIndex","elementParents","parentElement","elementTransitionEnd","elementOuterSize","deviceCached","browser","smoothScroll","getBrowser","needPerspectiveFix","major","minor","isWebView","calcBrowser","eventsEmitter","__emitterProxy","onAny","eventsAnyListeners","offAny","processLazyPreloader","imageEl","isElement","slideClass","lazyEl","lazyPreloaderClass","unlazy","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","rows","activeColumn","preloadColumns","slideIndexLastInView","rewind","loop","realIndex","updateSize","clientWidth","isVertical","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","slidesEl","swiperSize","rtlTranslate","wrongRTL","isVirtual","virtual","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","shouldResetSlideSize","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","boxSizing","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","minusOffset","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","updateSlidesClasses","getFilteredSlide","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","nextSlide","elementNextAll","prevSlide","elementPrevAll","emitSlidesClasses","updateActiveIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","runCallbacksOnInit","updateClickedSlide","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","setTranslate","byController","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","preventInteractionOnTransition","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","transitionDelay","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","perGroup","slidesPerGroupAuto","loopPreventsSliding","loopFix","slidePrev","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","lastIndex","slideReset","slideToClosest","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","slideRealIndex","activeSlideIndex","byMousewheel","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","swiperLoopMoveDOM","recalcSlides","currentSlideTranslate","touchEventsData","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","grabCursor","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","__preventObserver__","cursor","unsetGrabCursor","evCache","originalEvent","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","currentX","currentY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","startMoving","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","touchStartPreventDefault","touchStartForcePreventDefault","pointerIndex","findIndex","cachedEv","targetTouch","preventedByNestedSwiper","prevX","prevY","touchReleaseOnEdges","touchAngle","touchMoveStopPropagation","nested","previousX","previousY","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","allowMomentumBounce","loopFixed","disableParentSwiper","resistanceRatio","resistance","followFinger","touchEndTime","pathTree","lastClickTime","currentPos","stopIndex","rewindFirstIndex","rewindLastIndex","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","preventClicks","preventClicksPropagation","onScroll","onLoad","dummyEventAttached","dummyEventListener","domMethod","swiperMethod","updateOnWindowResize","events$1","isGridEnabled","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","points","point","minRatio","addClasses","suffixes","resultClasses","prepareClasses","removeClasses","checkOverflow$1","wasLocked","lastSlideRightEdge","resizeObserver","createElements","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","auto","prototypes","extendedDefaults","Swiper","swipers","newParams","__modules__","extendParams","swiperParams","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","getSlideClasses","updates","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mounted","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","deleteInstance","cleanStyles","extendDefaults","newDefaults","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","observer","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","eventTriggered","getSlide","createShadow","shadowClass","shadowContainer","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","renderSlide","renderExternalUpdate","addSlidesBefore","addSlidesAfter","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","cachedEl","cachedElIndex","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","HORIZONTAL_AXIS","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","sticky","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","releaseScroll","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","makeElementsArray","getEl","onPrevClick","onNextClick","initButton","destroyButton","pagination","clickable","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","newSlideIndex","currentSlideIndex","indexBeforeLoopFix","total","firstIndex","midIndex","classesToRemove","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","totalEl","progressbarDirection","progressEl","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","dragTimeout","scrollbar","dragEl","newSize","newPos","getPointerPosition","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","rotate","currentOpacity","_swiper","parallaxEl","parallaxDuration","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","minX","minY","maxX","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","x2","eventWithinSlide","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","touchAction","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","LinearSpline","binarySearch","maxIndex","minIndex","guess","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlledTranslate","setControlledTranslate","getInterpolateFunction","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","clicked","liveRegion","notify","notification","makeElFocusable","makeElNotFocusable","addElRole","addElRoleDescription","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","hasPagination","hasClickablePagination","initNavEl","wrapperId","addElControls","handlePointerDown","handlePointerUp","handleFocus","sourceCapabilities","firesTouchEvents","live","addElId","addElLive","updateNavigation","updatePagination","keepQuery","slugify","getPathValues","urlOverride","pathArray","setHistory","currentState","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","pause","onVisibilityChange","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","velocityEvent","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","newSlideOrderIndex","slideIndexInGroup","columnsInGroup","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","cubeShadowEl","wrapperRotate","slideAngle","tz","shadowAngle","scale1","scale2","zFactor","flipEffect","limitRotation","rotateY","rotateX","coverflowEffect","stretch","depth","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","paramsList","needsNavigation","needsPagination","needsScrollbar","uniqueClasses","unique","attrToProp","updateSwiper","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","nextButtonSvg","prevButtonSvg","modulesParamsList","getParams","propValue","localParamsList","allowedParams","attrsList","moduleParam","mParam","parentObjName","subObjName","SwiperCSS","ClassToExtend","arrowSvg","addStyle","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","SwiperContainer","super","attachShadow","cssStyles","injectStyles","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlotChildren","slotEl","localStyles","linkEl","eventsPrefix","connectedCallback","disconnectedCallback","updateSwiperOnPropChange","attributeChangedCallback","prevValue","observedAttributes","SwiperSlide","lazyDiv","initSwiper","$swiperEl","isTabs","isRoutableTabs","f7SwiperParams","tabRouteUrl","findTabRouteUrl","SwiperElementRegisterParams","customElements","pageMounted","PhotoBrowser","photoBrowser","exposed","started","timeStart","virtualSlides","photos","$activeSlideEl","$previousSlideEl","$totalEl","captions","captionIndex","$captionsContainerEl","previousSlideVideo","renderNavbar","iconsColor","renderNavbarCount","navbarShowCount","isPopup","navbarOfText","popupCloseLinkIcon","xmlns","viewBox","thumb","renderThumb","renderCaption","photo","renderObject","renderLazyPhoto","loading","renderPhoto","renderThumbs","captionsTheme","renderStandalone","f7PhotoBrowser","$swiperContainerEl","$swiperWrapperEl","preventThumbsSlide","preventMainSlide","hasThumbs","exposition","expositionToggle","doubleClick","slideChange","onSlideChange","slideChangeTransitionStart","slideChangeTransitionEnd","touchStart","touchMoveOpposite","touchEnd","expositionHideCaptions","openStandalone","openPage","openPopup","Notification","notificationHeight","_notification$params","titleRightText","subtitle","closeOnClick","notificationHtml","closeOnTimeout","notificationInstance","_notification$params2","Autocomplete","$openerEl","autocomplete","openerEl","f7Autocomplete","uniqueId","$dropdownEl","firstValue","firstItem","itemsHTML","limit","highlightMatches","itemValue","valueProperty","textProperty","dropdownPlaceholderText","typeahead","setSelectionRange","onPageInputChange","aValue","updateValues","onOpenerClick","positionDropdown","$selectedItemLabel","$newItem","$selectedItem","onDropdownClick","clickedItem","updateInputValueOnSelect","attachDropdownEvents","detachDropdownEvents","attachPageEvents","detachPageEvents","$listParent","inputOffset","inputOffsetWidth","inputOffsetHeight","paddingValue","listOffset","listOffsetLeft","inputOffsetLeft","paddingProp","valuesHTML","preloaderColor","inPopup","navbarLeft","renderPreloader","navbarRight","renderDropdown","notFoundText","requestSourceOnOpen","dropdownContainerEl","autocompleteEl","Tooltip","tooltip","_tooltip$params","delegated","f7Tooltip","handleClickOut","handleTransitionEnd","hasContainerEl","tooltipOffset","boundaries","clientRect","aroundEl","$aroundEl","_tooltip$params2","_self$params","sliderLabel","sliderValue","sliderValueEditable","alphaLabelText","alphaRangeSlider","destroyAlphaSliderEvents","_self$params2","hexLabel","hexLabelText","hexValueEditable","destroyHexEvents","hueLabelText","saturationLabelText","brightnessLabelText","hueRangeSlider","saturationRangeSlider","brightnessRangeSlider","destroyHsbSlidersEvents","hslCurrent","hslLeft","hslRight","brightness","handlePaletteClick","destroyPaletteEvents","handleInitialColorClick","_self$initialValue","destroyInitialCurrentEvents","barLabel","barValue","barValueEditable","redLabelText","greenLabelText","blueLabelText","redBar","greenBar","blueBar","destroyRgbBarsEvents","redRangeSlider","greenRangeSlider","blueRangeSlider","destroyRgbSlidersEvents","specterRect","specterIsTouched","specterHandleIsTouched","setSBFromSpecterCoords","destroySpectrumEvents","specterWidth","specterHeight","setHSFromSpecterCoords","hslBright","circles","svgWheelCircles","wheelRect","wheelIsTouched","wheelHandleIsTouched","setHueFromWheelCoords","wheelCenterX","wheelCenterY","angleDeg","wheel","destroyWheelEvents","wheelSize","wheelHalfSize","angleRad","handleHalfSize","ColorPicker","colorPicker","onTargetClick","$clickTargetEl","moduleAlphaSlider","moduleCurrentColor","moduleHex","moduleHsbSliders","moduleHueSlider","moduleBrightnessSlider","modulePalette","moduleInitialCurrentColors","moduleRgbBars","moduleRgbSliders","moduleSbSpectrum","moduleHsSpectrum","moduleWheel","attachTargetEvents","detachTargetEvents","centerModules","_$pageContentEl$","openInPhone","updateModules","_ref$alpha","hsla","needChangeEvent","subV","_ref3$","normalizeHsValues","_ref5","_ref5$","_value$hsb","_value$hsb$","_hsl2","fireEvents","targetElSetBackgroundColor","navbarTitleText","navbarBackLinkText","navbarCloseText","groupedModules","renderPicker","_self$params3","toolbarSheet","_self$params4","toolbarPopover","_self$params5","navbarPopup","_self$params6","getModalType","f7ColorPicker","colorPickerContent","sliderValueEdiable","barValueEdiable","Treeview","f7TreeviewChildrenLoaded","wasOpened","treeview","$treeviewItemEl","textEditorButtonsMap","bold","italic","underline","strikeThrough","orderedList","unorderedList","paragraph","h1","h2","h3","alignLeft","alignCenter","alignRight","alignJustify","subscript","superscript","indent","outdent","TextEditor","textEditor","f7TextEditor","onButtonClick","onFocus","onBlur","onPaste","onSelectionChange","closeKeyboardToolbar","$keyboardToolbarEl","insertPlaceholder","$selectedLinks","currentSelection","selectedNodes","selectedNodesLinks","$selectedNodes","linkNode","selection","selectNodeContents","execCommand","currentRange","getSelectionRange","linkUrlText","imageUrlText","imageUrl","selectionIsInContent","selectionIsInPopover","closePopover","isCollapsed","getRangeAt","openPopover","openKeyboardToolbar","clearFormattingOnPaste","getData","removePlaceholder","buttonData","customButtons","$anchorNode","insertImage","createLink","sel","select","renderButton","dividers","renderButtons","popoverTimeout","createToolbar","createPopover","createKeyboardToolbar","editorEl","Breadcrumbs","breadrumbs","DeviceModule","SupportModule","UtilsModule","ResizeModule","TouchModule","ClicksModule","RouterModule","HistoryModule","ServiceWorkerModule","StoreModule","Subnavbar","Tabs","Card","noUndefinedProps","isStringProp","getSlots","slots","addChildToSlot","slot","slotName","getExtraAttrs","extraAttrs","f7events","routerIdCounter","routerComponentIdCounter","getRouterId","getComponentId","f7routers","modals","setTheme","cleanup","f7init","f7Params","f7ready","colorClasses","textColor","bgColor","borderColor","rippleColor","routerAttrs","dataAnimate","dataReloadDetail","routeTabId","routerClasses","linkBack","external","preventRouter","actionsAttrs","searchbarEnable","searchbarDisable","searchbarClear","searchbarToggle","panelToggle","actionsOpen","actionsClose","loginScreenOpen","loginScreenClose","sortableEnable","sortableDisable","sortableToggle","cardOpen","cardClose","actionsClasses","cardPreventOpen","modalStateClasses","isOpened","isClosing","useIsomorphicLayoutEffect","watchProp","valueRef","f7Popup","tabletFullscreen","_props$swipeToClose","elRef","onSwipeStart","onSwipeMove","onSwipeEnd","onSwipeClose","modalEvents","onDestroy","onMount","React","useTab","onTabShow","onTabHide","useAsyncComponent","RouterContext","initialPage","initialRoute","_props$init","tabActive","_props$browserHistory","childrenArray","initialPageComponent","restChildren","shouldInitRouter","routerData","onViewInit","initialComponent","initialComponentData","routeProps","isAsync","f7route","f7router","getRouterInitialComponent","_useState2","pages","setPages","onSwipeBackMove","onSwipeBackBeforeChange","onSwipeBackAfterChange","onSwipeBackBeforeReset","onSwipeBackAfterReset","newPages","PageComponent","pageId","pageProps","f7LoginScreen","loginScreenParams","f7Sheet","onBreakpoint","onStepProgress","onStepOpen","onStepClose","fixedList","staticList","fixedTags","slotsDefault","isFixedTag","innerEl","positionComputed","fixed","f7Popover","reveal","cover","floating","_props$backdrop","_props$swipeActiveAre","_props$swipeThreshold","isBreakpoint","onBackdropClick","onSwipe","onSwipeOpen","onCollapsedBreakpoint","disableResizable","sideComputed","effectComputed","getChildrenArray","routerOpenIn","viewRouter","resolved","childrenBefore","onDidUpdate","componentRouterData","childrenAfter","hasSameChildren","pageComponentFound","tabRouter","tabData","tabContentEl","setTabContent","_temp2","modalsRouter","modalData","setModals","modalDataToRemove","Framework7React","installed","_params","paramsTheme","componentsRouter","alreadyWarned","loadedClb","i18n","isInitialized","loadNamespaces","ns","loadLanguages","lng","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","i18nInstance","defaultOptions","bindI18n","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","initReactI18next","setDefaults","react","setI18n","ReportNamespaces","usedNamespaces","addUsedNamespaces","namespaces","getUsedNamespaces","usePrevious","alwaysNewT","language","namespace","keyPrefix","getFixedT","i18nFromProps","i18nFromContext","defaultNS","defaultNSFromContext","reportNamespaces","notReadyT","optsOrDefaultValue","retNotReady","ready","wait","i18nOptions","initializedStoreOnce","every","languages","ignoreJSONStructure","hasLoadedNamespace","precheck","loadNotPending","services","backendConnector","backend","isLanguageChangingTo","fallbackLng","lastLng","loadState","hasResourceBundle","resources","partialBundledLanguages","oldI18nextHasLoadedNamespace","memoGetT","useMemoizedT","nsMode","getT","getNewT","setT","joinedNS","previousJoinedNS","boundReset","isInitial","ret","withTranslation","WrappedComponent","I18nextWithTranslation","forwardedRef","passDownProps","tReady","withRef","I18nextProvider","consoleLogger","output","Logger","concreteLogger","logger","debug","deprecate","lvl","debugOnly","clone","baseLogger","EventEmitter","numListeners","numTimesAdded","defer","rej","makeString","lastOfPathSeparatorRegExp","getLastOfPath","Empty","cleanKey","canNotTraverseDeeper","stackIndex","setPath","getPath","deepExtend","overwrite","regexEscape","_entityMap","chars","looksLikeObjectPathRegExpCache","capacity","regExpMap","regExpQueue","getRegExp","regExpFromCache","regExpNew","deepFind","keySeparator","nextPath","getCleanedCode","ResourceStore","addNamespaces","removeNamespaces","getResource","addResource","silent","addResources","addResourceBundle","skipCopy","pack","removeResourceBundle","getResourceBundle","compatibilityAPI","getDataByLanguage","hasLanguageSomeTranslations","toJSON","postProcessor","processors","addPostProcessor","translator","checkedLoadedFor","Translator","copy","changeLanguage","exists","interpolation","extractFromKey","nsSeparator","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","looksLikeObjectPath","interpolator","nestingRegexp","lastKey","overloadTranslationOptionHandler","returnDetails","appendNamespaceToCIMode","usedKey","exactUsedKey","usedLng","usedNS","usedParams","getUsedParamsDetails","resUsedKey","resExactUsedKey","resType","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","extendTranslation","usedDefault","needsPluralHandling","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValueSuffixOrdinalFallback","ordinal","needsZeroSuffixLookup","shouldUseIntlApi","pluralSeparator","isValidLookup","resForMissing","missingKeyNoValueFallbackToKey","updateMissing","lngs","fallbackLngs","languageUtils","getFallbackCodes","saveMissingTo","toResolveHierarchy","specificDefaultValue","defaultForMissing","missingKeyHandler","saveMissing","saveMissingPlurals","getSuffixes","appendNamespaceToMissingKey","parseMissingKeyHandler","defaultVariables","skipInterpolation","skipOnVariables","nestBef","nest","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","extracted","fallbackNS","needsContextHandling","codes","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","ordinalPrefix","contextKey","contextSeparator","possibleKey","returnNull","returnEmptyString","resourceStore","optionsKeys","useOptionsReplaceForData","option","capitalize","LanguageUtil","supportedLngs","getScriptPartFromCode","formatLanguageCode","getLanguagePartFromCode","specialCases","lowerCaseLng","cleanCode","isSupportedCode","nonExplicitSupportedLngs","getBestMatchFromCodes","cleanedLng","lngOnly","supportedLng","fallbacks","fallbackCode","fallbackCodes","addCode","sets","nr","_rulesPluralsTypes","nonIntlVersions","intlVersions","suffixesOrder","zero","one","two","few","many","PluralResolver","compatibilityJSON","PluralRules","rules","numbers","plurals","createRules","addRule","getRule","needsPlural","rule","resolvedOptions","pluralCategories","getPluralFormsOfKey","pluralCategory1","pluralCategory2","pluralCategory","getSuffixRetroCompatible","noAbs","simplifyPluralSuffix","returnSuffix","deepFindWithDefaults","defaultData","getPathWithDefaults","Interpolator","escapeValue","iOpts","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","getOrResetRegExp","existingRegExp","regexpUnescape","replaces","regexSafe","handleFormat","interpolationkey","missingInterpolationHandler","todos","safeValue","todo","matchedVar","temp","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","formatters","doReduce","elem","createCachedFormatter","formatter","Formatter","formats","opt","NumberFormat","currency","relativetime","RelativeTimeFormat","list","ListFormat","addCached","mem","formatName","formatOptions","formatStr","optStr","parseFormatStr","formatted","valOptions","formatParams","Connector","waitingReads","maxParallelReads","readingCalls","maxRetries","retryTimeout","queueLoad","toLoad","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","pendingCount","loaded","errors","pushPath","removePending","loadedKeys","read","fcName","tried","resolver","prepareLoading","loadOne","fallbackValue","isUpdate","clb","initImmediate","tDescription","transformOptions","noop","I18n","getOwnPropertyNames","isClone","isInitializing","defOpts","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","deferred","loadResources","usedCallback","resolvedLanguage","setResolvedLanguage","reloadResources","lngInLngs","_this2","setLngProps","setLng","cacheUserLanguage","detect","_this3","fixedT","resultKey","setDefaultNamespace","preResult","preloaded","newLngs","createInstance","cloneInstance","forkResourceStore","mergedOptions","loadPath","addPath","multiSeparator","allowMultiLoading","requestOptions","BackendError","retry","getLoadPath","funcOrVal","loadUrl","readMulti","arrify","currentLang","defaultLang","_objectWithoutPropertiesLoose","excluded","sourceKeys","RoutableModals","newModals","ModalComponent","modalId","modalProps","App","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_objectWithoutProperties","_excluded","_inheritsLoose","replaceClassName","origClass","classToRemove","forceReflow","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","_React$Component","initialStatus","appear","isMounting","enter","appearStatus","unmountOnExit","mountOnEnter","nextCallback","prevState","_proto","updateStatus","prevProps","nextStatus","cancelNextCallback","getTimeouts","exit","mounting","nodeRef","performEnter","performExit","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onExit","onExiting","onExited","nextState","setNextCallback","_this4","active","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","_this$props","childProps","TransitionGroupContext","propTypes","baseVal","CSSTransition","appliedClasses","_this$resolveArgument","resolveArguments","_this$resolveArgument2","_this$resolveArgument3","getClassNames","isStringClassNames","baseClassName","activeClassName","doneClassName","phase","_addClass","_this$appliedClasses$","useTheme","preloaderStyle","sizeComputed","cx","cy","PageContent","ptrDistance","_props$ptrPreloader","ptrPreloader","ptrBottom","ptrMousewheel","infiniteTop","infiniteDistance","_props$infinitePreloa","infinitePreloader","hideBarsOnScroll","hideNavbarOnScroll","hideToolbarOnScroll","messagesContent","onPtrPullStart","onPtrPullMove","onPtrPullEnd","onPtrRefresh","onPtrDone","onInfinite","ptrEl","infiniteEl","Page","withSubnavbar","withNavbarLarge","navbarLarge","noNavbar","noToolbar","_props$pageContent","noSwipeback","hasSubnavbar","hasNavbarLarge","hasNavbarLargeCollapsed","hasCardExpandableOpened","routerPositionClass","routerPageRole","routerPageRoleDetailRoot","routerPageMasterStack","onPageMounted","onPageInit","onPageReinit","onPageAfterOut","onPageAfterIn","onPageBeforeRemove","onPageBeforeUnmount","onPagePosition","onPageRole","rolesData","onPageMasterStack","onPageMasterUnstack","onPageNavbarLargeCollapsed","onPageNavbarLargeExpanded","onCardOpened","onCardClose","onPageTabShow","onPageTabHide","hasSubnavbarComputed","hasNavbarLargeComputed","slotsStatic","slotsFixed","hasMessages","large","forceSubnavbar","forceNavbarLarge","useTooltip","tooltipTrigger","Icon","material","fontSize","themeIcon","getClasses","Badge","useIcon","_props","iconMaterial","iconF7","iconColor","iconSize","iconBadge","badgeColor","iconBadgeColor","useRouteProps","TabbarContext","tabbarHasIcons","useSmartSelect","smartSelectParams","ssParams","Link","badgeEl","noLinkClass","tabLink","tabLinkActive","tabbarLabel","iconOnly","badge","_props$href","tabbarContext","isTabbarIcons","iconEl","hrefComputed","NavLeft","backLink","backLinkUrl","backLinkForce","backLinkShowText","needBackLinkText","NavTitle","subtitleEl","NavRight","_props$sliding","largeTransparent","transparent","hidden","_props$outline","titleLarge","innerClass","innerClassName","largeCollapsed","routerNavbarRole","routerNavbarRoleDetailRoot","routerNavbarMasterStack","transparentVisible","onHide","onShow","onExpand","onCollapse","onNavbarTransparentShow","onNavbarTransparentHide","onNavbarPosition","onNavbarRole","onNavbarMasterStack","onNavbarMasterUnstack","leftEl","rightEl","titleLargeEl","addLeftTitleClass","addCenterTitleClass","isTransparentVisible","onBackClick","largeTitle","_props$inner","inner","die","mockGlobal","getGlobal","getDescriptor","objectPrototype","EMPTY_ARRAY","freeze","EMPTY_OBJECT","hasProxy","plainObjectString","assertProxies","func","invoked","isStringish","isPlainObject","protoConstructor","isGenerator","addHiddenProp","addHiddenFinalProp","createInstanceofPredicate","theClass","isES6Map","thing","isES6Set","hasGetOwnPropertySymbols","ownKeys","hasProp","getOwnPropertyDescriptors","hint","prim","_toPrimitive","_createForOfIteratorHelperLoose","allowArrayLike","it","storedAnnotationsSymbol","createDecoratorAnnotation","annotation","is20223Decorator","decorate_20223_","storeAnnotation","annotationType_","OVERRIDE","isOverride","$mobx","Atom","name_","isPendingUnobservation_","isBeingObserved_","observers_","diffValue_","lastAccessedBy_","lowestObserverState_","IDerivationState_","NOT_TRACKING_","onBOL","onBUOL","onBO","onBUO","reportObserved","reportChanged","startBatch","propagateChanged","endBatch","isAtom","createAtom","onBecomeObservedHandler","onBecomeUnobservedHandler","arg3","atom","interceptHook","ON_BECOME_OBSERVED","onBecomeUnobserved","comparer","identity","structural","deepEqual","shallow","deepEnhancer","isObservable","isAction","isFlow","flow","autoAction","referenceEnhancer","createActionAnnotation","options_","make_","make_$1","extend_","extend_$1","decorate_20223_$1","adm","_this$options_","bound","target_","actionDescriptor","createActionDescriptor","proxyTrap","defineProperty_","mthd","kind","addInitializer","ann","_this$options_2","_ann$options_$name","_ann$options_","_ann$options_$autoAct","_ann$options_2","createAction","isMobxAction","safeDescriptors","_annotation$options_","_annotation$options_$","_annotation$options_2","_annotation$options_$2","_annotation$options_3","_annotation$options_4","_adm$proxy_2","globalState","_adm$proxy_","proxy_","isPlainObject_","createFlowAnnotation","make_$2","extend_$2","decorate_20223_$2","flowDescriptor","createFlowDescriptor","_this$options_3","isMobXFlow","createComputedAnnotation","make_$3","extend_$3","decorate_20223_$3","assertComputedDescriptor","defineComputedProperty_","asObservableObject","values_","ComputedValue","getObservablePropValue_","createObservableAnnotation","make_$4","extend_$4","decorate_20223_$4","_this$options_$enhanc","assertObservableDescriptor","defineObservableProperty_","enhancer","initializedObjects","initializeObservable","_ann$options_$enhance","observable","ObservableValue","setObservablePropValue_","AUTO","autoAnnotation","createAutoAnnotation","make_$5","extend_$5","decorate_20223_$5","_this$options_4","computed","autoBind","observableAnnotation","_this$options_5","_this$options_6","defaultCreateObservableOptions","defaultDecorator","proxy","asCreateObservableOptions","observableRefAnnotation","observableShallowAnnotation","isObservableObject","isObservableArray","isObservableMap","isObservableSet","observableStructAnnotation","observableDecoratorAnnotation","getEnhancerFromOptions","createObservable","arg2","_getDescriptor$config","_getDescriptor","observableFactories","equals","initialValues","useProxies","createLegacyArray","createObservableArray","ObservableMap","ObservableSet","decorators","initObservable","extendObservable","_target$$mobx","_target$$mobx$proxy_","objectProxyTraps","asDynamicObservableObject","struct","COMPUTED","computedAnnotation","computedStructAnnotation","arg1","_Symbol$toPrimitive","currentActionId","nextActionId","isFunctionNameConfigurable","tmpNameDescriptor","executeAction","canRunAsDerivation","runInfo","notifySpy_","startTime_","prevDerivation_","trackingDerivation","runAsAction","prevAllowStateChanges_","allowStateChanges","untrackedStart","allowStateChangesStart","prevAllowStateReads_","allowStateReadsStart","runAsAction_","actionId_","parentActionId_","_startAction","error_","suppressReactionErrors","allowStateChangesEnd","allowStateReadsEnd","untrackedEnd","_endAction","_Symbol$toPrimitive$1","_Atom","notifySpy","hasUnreportedChange_","interceptors_","changeListeners_","value_","dehancer","dehanceValue","prepareNewValue_","UNCHANGED","setNewValue_","checkIfStateModificationsAreAllowed","hasInterceptors","interceptChange","UPDATE","hasListeners","notifyListeners","intercept_","registerInterceptor","observe_","fireImmediately","observableKind","debugObjectName","registerListener","TraceMode","dependenciesState_","observing_","newObserving_","runId_","UP_TO_DATE_","unboundDepsCount_","CaughtException","triggeredBy_","isComputing_","isRunningSetter_","derivation","setter_","isTracing_","NONE","scope_","equals_","requiresReaction_","keepAlive_","compareStructural","requiresReaction","onBecomeStale_","POSSIBLY_STALE_","propagateMaybeChanged","inBatch","shouldCompute","prevTrackingContext","trackingContext","trackAndCompute","STALE_","propagateChangeConfirmed","warnAboutUntrackedRead_","computeValue_","isCaughtException","wasSuspended","trackDerivedFunction","disableErrorBoundaries","suspend_","clearObserving","firstTime","autorun","prevU","isComputedValue","prevAllowStateReads","prevUntracked","obs","changeDependenciesStateTo0","runId","prevTracking","prevObserving","observing","lowestNewObservingDerivationState","i0","_dep","removeObserver","_dep2","addObserver","bindDependencies","untracked","allowStateReads","MobXGlobals","mobxGuid","pendingUnobservations","pendingReactions","isRunningReactions","enforceActions","spyListeners","globalReactionErrorHandlers","computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","verifyProxies","canMergeGlobalState","isolateCalled","global","__mobxInstanceCount","__mobxGlobals","queueForUnobservation","runReactions","Reaction","onInvalidate_","errorHandler_","requiresObservable_","isDisposed_","isScheduled_","isTrackPending_","isRunning_","schedule_","isScheduled","runReaction_","reportExceptionInDerivation_","prevReaction","dispose","getDisposer_","abortSignal","trace","enterBreakPoint","MAX_REACTION_ITERATIONS","reactionScheduler","runReactionsHelper","allReactions","iterations","remainingReactions","isReaction","ACTION","AUTOACTION","DEFAULT_ACTION_NAME","actionAnnotation","actionBoundAnnotation","autoActionAnnotation","autoActionBoundAnnotation","createActionFactory","_opts$name","_opts","_opts2","_opts2$signal","_opts3","reaction","scheduler","reactionRunner","requiresObservable","createSchedulerFromOptions","aborted","ON_BECOME_UNOBSERVED","getAtom","listenersKey","hookListeners","NEVER","ALWAYS","OBSERVED","configure","isolateGlobalState","baseScheduler","properties","annotations","descriptors","getDependencyTree","nodeToDependencyTree","generatorId","FlowCancellationError","flowAnnotation","flowBoundAnnotation","generator","rejector","gen","pendingPromise","stepId","onFulfilled","onRejected","cancelPromise","_res","yieldedPromise","_isObservable","transaction","thisArg","getAdm","has_","get_","_getAdm$set_","set_","deleteProperty","_getAdm$delete_","delete_","_getAdm$definePropert","ownKeys_","preventExtensions","interceptable","interceptors","listenable","makeObservable","collectStoredAnnotations","SPLICE","arrayTraps","getArrayLength_","arrayExtensions","setArrayLength_","ObservableArrayAdministration","owned_","legacyMode_","atom_","enhancer_","lastKnownLength_","oldV","dehanceValue_","dehanceValues_","added","addedCount","removed","removedCount","newLength","currentLength","newItems","spliceWithArray_","updateArrayLength_","oldLength","reserveArrayBuffer","deleteCount","lengthDelta","spliceItemsIntoValues_","notifyArraySplice_","_this$values_","oldItems","notifyArrayChildUpdate_","owned","spliceWithArray","addArrayExtension","funcName","funcFactory","simpleFunc","dehancedValues","mapLikeFunc","reduceLikeFunc","accumulator","_Symbol$iterator","_Symbol$toStringTag","isObservableArrayAdministration","ObservableMapMarker","ADD","DELETE","_Symbol$iterator$1","_Symbol$toStringTag$1","data_","hasMap_","keysAtom_","entry","newEntry","hasKey","updateValue_","addValue_","_change","_this3$hasMap_$get","_this4$hasMap_$get","makeIterable","_keys$next","_keys$next2","_this5","symbols","getPlainObjectKeys","_this6","_step2","_iterator2","_this7","_step3","replacementMap","dataStructure","convertToMap","orderedData","keysReportChangedCalled","_iterator3","_step4","_iterator4","_step4$value","_value","keyExisted","_value2","iter1","iter2","next1","next2","ObservableSetMarker","callbackFn","_change2","observableValues","descriptorCache","REMOVE","ObservableObjectAdministration","defaultAnnotation_","appliedAnnotations_","pendingKeys_","assertAnnotable","_this$target_$storedA","outcome","recordAnnotationApplied","deleteOutcome","notifyPropertyAddition_","cachedDescriptor","getCachedObservablePropDescriptor","_this$pendingKeys_","_this$pendingKeys_$ge","_this$pendingKeys_2","_this$pendingKeys_2$g","keys_","_options$name","_options$defaultDecor","getAnnotationFromOptions","isObservableObjectAdministration","_adm$target_$storedAn","ctor","ENTRY_0","createArrayEntryDescriptor","safariPrototypeSetterInheritanceBug","OBSERVABLE_ARRAY_BUFFER_SIZE","StubArray","LegacyObservableArray","_StubArray","arrays","createArrayBufferItem","getDebugName","_observable","getAdministration","named","aStack","bStack","unwrap","areArrays","aCtor","bCtor","getSelf","__MOBX_DEVTOOLS_GLOBAL_HOOK__","injectMobx","spy","extras","defaultNoopBatch","printDebugValue","globalIsUsingStaticRendering","isUsingStaticRendering","TimerBasedFinalizationRegistry","finalize","maxAge","sweepTimeout","registeredAt","scheduleSweep","sweep","observerFinalizationRegistry","FinalizationRegistry","getServerSnapshot","createReaction","stateVersion","onStoreChange","useObserver","baseComponentName","admRef","adm_1","subscribe","renderResult","exception","hasSymbol","ReactForwardRefSymbol","ReactMemoSymbol","baseComponent","useForwardRef","observerComponent","hoistBlackList","observerBatching","getDefaultProps","mixins","mobxMixins","mobxPatchedDefinition","wrapper","realMethod","locks","retVal","mx","wrapFunction","patch","mixinMethod","methodMixins","getMixins","oldDefinition","originalMethod","newDefinition","createDefinition","wrappedFunc","administrationSymbol","isMobXReactObserverSymbol","_component$administra","reactionInvalidatedBeforeMount","componentClass","createReactiveRender","originalRender","boundOriginalRender","admin","_admin$reaction2","observerSCU","nextProps","objA","objB","keysA","keysB","shallowEqual","isPrototypeOf","componentWillReact","_displayName","originalComponentDidMount","_admin$reaction","makeClassComponentObserver","MobXProviderContext","parentValue","createStoreInjector","grabStoresFn","injectNames","makeReactive","Injector","newProps","componentName","getInjectName","storeNames","baseStores","storeName","grabStoresByName","isMobile","isPhone","isTablet","initDom","$$","sailfish","phone","tablet","BlockTitle","ListContext","listIsMedia","listIsSimple","listIsSortable","listIsSortableOpposite","List","inset","insetIos","insetMd","xsmallInset","xsmallInsetIos","xsmallInsetMd","smallInset","smallInsetIos","smallInsetMd","mediumInset","mediumInsetIos","mediumInsetMd","largeInset","largeInsetIos","largeInsetMd","xlargeInset","xlargeInsetIos","xlargeInsetMd","strongIos","strongMd","outlineIos","outlineMd","dividersIos","dividersMd","mediaList","sortableTapHold","sortableEnabled","sortableOpposite","accordionList","accordionOpposite","contactsList","simpleList","linksList","menuList","noChevron","chevronCenter","formStoreData","virtualListParams","onSortableEnable","onSortableDisable","onSortableSort","sortData","onSortableMove","vlParams","itemBeforeInsert","beforeClear","itemsBeforeInsert","itemsAfterInsert","slotsList","rootChildrenBeforeList","rootChildrenAfterList","ulChildren","flattenSlots","wasUlChild","ListTag","_props$resizable","editorValue","onKeyboardOpen","onKeyboardClose","onPopoverOpen","onPopoverClose","onInsertLink","onInsertImage","buttonClick","keyboardOpen","keyboardClose","insertLink","ListInput","_props$dropdown","dropdown","_props$wrap","_props$input","renderInput","_props$type","inputmode","inputId","accept","autocorrect","autocapitalize","autofocus","autosave","maxlength","minlength","inputStyle","validateOnBlur","onValidate","tabindex","clearButton","noFormStoreData","noStoreData","ignoreStoreData","errorMessageForce","floatingLabel","calendarParams","colorPickerParams","textEditorParams","inputInvalid","setInputInvalid","_useState4","inputFocused","setInputFocused","_ref$listIsSortable","inputElRef","itemContentElRef","updateInputOnDidUpdate","getDomValue","validateInput","onTextareaResize","onInputNotEmpty","onInputEmpty","calendarValue","colorPickerValue","domValue","inputHasValue","isInputHasValue","isSortableComputed","createInput","InputTag","needsValue","needsType","inputClassName","valueProps","inputMode","autoComplete","autoCorrect","autoCapitalize","spellCheck","autoSave","minLength","tabIndex","onTextEditorFocus","onTextEditorBlur","onTextEditorInput","onTextEditorChange","hasErrorMessage","ItemContent","ListButton","linkElRef","linkAttrs","linkClasses","ListItemContent","afterWrapEl","afterEl","titleRowEl","mediaEl","inputIconEl","headerEl","footerEl","mediaImgEl","indeterminate","checkboxIcon","radioIcon","accordionItem","isMediaComputed","isSortableOppositeComputed","ItemContentTag","ListItem","mediaItem","groupTitle","swipeoutOpened","accordionItemOpened","virtualListIndex","_ref$listIsMedia","_ref$listIsSortableOp","_ref$listIsSimple","onSwipeoutOverswipeEnter","onSwipeoutOverswipeExit","onSwipeoutDeleted","onSwipeoutDelete","onSwipeoutClosed","onSwipeoutOpen","onSwipeoutOpened","onSwipeout","onAccBeforeClose","onAccClose","onAccClosed","onAccBeforeOpen","onAccOpen","onAccOpened","itemContentEl","liClasses","linkItemEl","AddImage","useTranslation","textInsertImage","textBack","textPictureFromLibrary","onInsertByFile","textPictureFromURL","onInsertByUrl","AddImageController","_Component","Device","EditorApi","asc_addImage","closeModal","AddImageUrl","txtNotUrl","notcriticalErrorTitle","textEmptyImgUrl","AddImageWithTranslation","PageLink","getDisplayLinkText","stateLink","setLink","stateDisplay","setDisplay","_useState6","stateTip","setTip","_useState8","stateAutoUpdate","setAutoUpdate","isNavigate","inlineLabels","textLink","textDisplay","textScreenTip","AddLinkController","mobileSelector","tabletSelector","can_AddHyperlink","urltype","asc_getUrlType","c_oAscUrlType","Invalid","_url","Unsafe","Email","CHyperlinkProperty","put_Value","put_Text","put_ToolTip","add_Hyperlink","PageAddLink","onPopupClosed","closeOptions","onPopoverClosed","AddLinkWithTranslation","Segmented","raised","raisedIos","raisedMd","roundIos","roundMd","_props$tag","segmented","SegmentedTag","fillIos","fillMd","tonal","tonalIos","tonalMd","largeIos","largeMd","small","smallIos","smallMd","preloaderSize","ButtonTag","getAttrs","AddOtherContainer","disabledAddLink","disabledAddBreak","disabledAddFootnote","disabledAddPageNumber","storeFocusObjects","canAddLink","storeLinkSettings","isShape","isText","isChart","isHyperLink","isHeader","inFootnote","inControl","paragraphLocked","controlPlain","richDelLock","richEditLock","plainDelLock","plainEditLock","textComment","Notifications","textImage","textPageNumber","onInsertPageNumber","textBreak","onPageBreak","onColumnBreak","onInsertSectionBreak","textTableContents","textFootnote","getFootnoteProps","getFootnoteStartAt","onFootnoteStartAt","onInsertFootnote","initFootnoteStartAt","AddTableContents","textWithPageNumbers","onTableContents","textWithBlueLinks","AddTableContentsController","widthImage","asc_getButtonsTOC","currentTOC","asc_GetTableOfContentsPr","CTableOfContentsPr","put_OutlineRange","put_Hyperlink","put_ShowPageNumbers","put_RightAlignTab","put_TabLeader","c_oAscTabLeader","Dot","asc_AddTableOfContents","put_StylesType","c_oAscTOCStylesType","Web","linkObject","get_Value","get_Text","get_ToolTip","onEditLink","onRemoveLink","EditHyperlinkController","put_InternalHyperlink","get_InternalHyperlink","change_Hyperlink","remove_Hyperlink","EditHyperlink","TabsSwipeableContext","routable","tabsClasses","routerContext","tabsSwipeableContext","initialTabContent","_routerContext$route$","tabRouteOptions","parentProps","classAttrs","TabContent","renderChildren","Tag","skeletonStyle","skeletonClassName","storeTableSettings","arrayStylesDefault","onStyleClick","templateId","SkeletonBlock","AddTableController","textTableSize","textColumns","textRows","textCancel","put_Table","AddTable","AddTableWithTranslation","shapes","storeShapeSettings","getStyleGroups","indexRow","shape","onShapeClick","WebkitMaskImage","AddShapeController","AddShapeOnCurrentPage","AddShape","_10toS","_Sto10","_10toRome","div","_Rometo10","AddOtherController","c_pageNumPosition","PAGE_NUM_POSITION_TOP","PAGE_NUM_POSITION_BOTTOM","PAGE_NUM_POSITION_RIGHT","PAGE_NUM_POSITION_LEFT","PAGE_NUM_POSITION_CENTER","subtype","put_PageNum","put_AddPageBreak","put_AddColumnBreak","c_oAscSectionBreakType","NextPage","Continuous","EvenPage","OddPage","add_SectionBreak","footnoteProps","asc_GetFootnoteProps","propsFormat","get_NumFormat","propsPos","get_Pos","footnoteCurStart","currValue","get_NumStart","toCustomFormat","fromCustomFormat","c_oAscNumberingFormat","UpperRoman","LowerRoman","toLocaleLowerCase","toLocaleUpperCase","UpperLetter","LowerLetter","isDecrement","intValue","startTo10","CAscFootnotePr","put_Pos","put_NumFormat","put_NumStart","put_NumRestart","c_oAscFootnoteRestart","asc_SetFootnoteProps","asc_AddFootnote","AddOther","AddOtherWithTranslation","AddLayoutNavbar","isAndroid","setStyles","asc_getTableStylesPreviews","getTableStylesPreviews","lenght","AddLayoutContent","AddingPage","showPanels","MainContext","directionMode","storeApplicationSettings","paragraphObj","paragraphObject","canAddTable","controlProps","lockType","contentLocked","get_CanAddTable","get_CanAddImage","get_Locked","asc_IsCursorInFootnote","asc_IsCursorInEndnote","asc_IsContentControl","asc_GetContentControlProperties","get_Lock","c_oAscSdtLockType","Unlocked","get_ContentControlType","c_oAscSdtLevelType","Inline","SdtContentLocked","ContentLocked","can_DeleteBlockContentControl","can_EditBlockContentControl","can_DeleteInlineContentControl","can_EditInlineContentControl","textTable","textShape","textOther","stateValue","textAddress","textImageURL","textPosition","textLeftTop","textCenterTop","textRightTop","textLeftBottom","textCenterBottom","textRightBottom","textCurrentPosition","textPageBreak","textColumnBreak","textSectionBreak","textNextPage","textContinuousPage","textEvenPage","textOddPage","dataFormatFootnote","Decimal","dataPosFootnote","c_oAscFootnotePos","PageBottom","textBottomOfPage","BeneathText","textBelowText","stateStartAt","setStartAt","stateLocation","setLocation","stateFormat","setFormat","textInsertFootnote","textFormat","textStartAt","textLocation","mainContext","DocumentFormats","storeSettings","storeDocumentSettings","pageSizesIndex","pageSizes","getPageSizesList","textMetric","textDocumentSettings","onFormatChange","DocumentMargins","metricText","margins","getMargins","maxMarginsW","maxMarginsH","stateTop","setTop","stateBottom","setBottom","stateLeft","setLeft","stateRight","setRight","onChangeMargins","align","marginValue","errorMsg","textMarginsW","textMarginsH","applyMargins","textMargins","textTop","textBottom","textLeft","textRight","DocumentSettings","sizeW","sizeH","curMetricName","widthDoc","widthDocument","heightDoc","heightDocument","textCustomSize","pageSizeTxt","textOrientation","textPortrait","isPortrait","onPageOrientation","textLandscape","textColorSchemes","onColorSchemeChange","initPageColorSchemes","DocumentColorSchemes","curScheme","_useState10","stateScheme","setScheme","allSchemes","get_name","get_colors","DocumentSettingsController","change_PageOrient","change_DocSize","localSectionProps","asc_GetSectionProps","get_H","get_W","get_TopMargin","get_BottomMargin","get_LeftMargin","get_RightMargin","put_LeftMargin","put_TopMargin","put_RightMargin","put_BottomMargin","asc_SetSectionProps","asc_GetCurrentColorSchemeIndex","newScheme","asc_ChangeColorSchemeByIdx","DocumentInfo","_dataDoc$info","_dataDoc$info2","_dataDoc$info3","_dataDoc$info4","_dataDoc$info5","storeInfo","storeDocumentInfo","dataDoc","dataApp","getAppProps","settingsContext","SettingsContext","_storeInfo$infoObj","infoObj","pageCount","paragraphCount","symbolsCount","symbolsWSCount","wordsCount","_props$docInfoObject","docInfoObject","pageSize","subject","dateCreated","modifyBy","modifyDate","author","producer","tagged","fastWebView","creators","isLoaded","textDocumentInfo","textDocumentTitle","changeTitleHandler","owner","textOwner","folder","uploaded","created","textUploaded","textStatistic","textLoading","DocumentInfoController","docProps","getDocProps","pdfProps","getPdfProps","updateFileInfo","updatePdfInfo","asc_getCreated","getModified","asc_getModified","asc_getLastModifiedBy","asc_getTitle","asc_getSubject","asc_getDescription","asc_getCreator","CreationDate","ModDate","PageWidth","PageHeight","heigth","Title","Subject","Author","Version","Producer","Tagged","textYes","textNo","FastWebView","asc_getCoreProps","asc_getPdfProps","appName","appProps","asc_getAppProps","asc_getApplication","asc_getAppVersion","Creator","valueModified","_lang","storeAppOptions","toLocaleString","toLocaleTimeString","timeStyle","canRename","docTitle","asc_enableKeyEvents","titleFieldValue","changeTitle","nameDoc","titleField","btnChangeTitle","docInfo","docExt","put_Title","setDocInfo","asc_setDocInfo","startGetDocInfo","isForm","canFeatureForms","canFillForms","isEditableForms","textDownload","textDownloadAs","onSaveFormat","c_oAscFileType","DOCX","PDF","PDFA","RTF","ODT","HTML","DOTX","OTT","FB2","EPUB","DownloadController","appOptions","asc_CDownloadOptions","JPG","PNG","asc_DownloadAs","asc_setTextParams","asc_CTextParams","c_oAscTextAssociation","PlainLine","textDownloadTxt","textDownloadRtf","textOk","advOptions","asc_getAdvancedOptions","c_oAscAdvancedOptionsID","replaceAll","Download","DownloadWithTranslation","onToggleChange","toggleInstance","toggleEvents","labelClasses","Block","ApplicationSettings","storeThemes","displayMode","storeReview","unitMeasurement","isSpellChecking","isNonprintingCharacters","isHiddenTableBorders","isComments","isResolvedComments","newDirectionMode","changeMeasureSettings","changeUnitMeasurement","setUnitMeasurement","colorTheme","themes","typeTheme","isConfigSelectTheme","isViewer","_isEdit","isEdit","_isShowMacros","isDisconnected","customization","macros","textApplicationSettings","textUnitOfMeasurement","textCentimeter","textPoint","textInch","textNoCharacters","changeNoCharacters","switchNoCharacters","textHiddenTableBorders","changeShowTableEmptyLine","switchShowTableEmptyLine","textSpellcheck","changeSpellCheck","switchSpellCheck","textCommentsDisplay","textComments","changeDisplayComments","switchDisplayComments","textResolvedComments","changeDisplayResolved","switchDisplayResolved","changeTheme","textMacrosSettings","setMacrosSettings","isCurrentLangRtl","changeDirectionMode","MacrosSettings","macrosMode","changeMacros","changeMacrosSettings","textDisableAll","textDisableAllMacrosWithoutNotification","textShowNotification","textDisableAllMacrosWithNotification","textEnableAll","textEnableAllMacrosWithoutNotification","ThemeSettings","_store","_prefix","_common_keys","_isAllowed","_storeName","keysFilter","_filter","sync","save","setItem","just","getItem","setBool","defValue","itemExists","ThemesContext","_useTranslation","nameColors","initTheme","translations","getTranslationsThemes","setTranslationsThemes","acc","_window$native","_editorConfig$theme","_editorConfig$theme2","clientTheme","LocalStorage","editorConfig","native","setConfigSelectTheme","setUITheme","applyTheme","setColorTheme","setSystemTheme","setSystemColorTheme","$body","systemColorTheme","onEngineCreated","outObject","asc_setSkin","resetSystemColorTheme","ApplicationSettingsController","asc_SetDocumentUnits","c_oAscDocumentUnits","Inch","Point","Millimeter","asc_setSpellCheck","put_ShowParaMarks","put_ShowTableEmptyLine","changeCanViewComments","asc_showComments","asc_hideComments","About","licInfo","canBranding","customer","nameCustomer","mailCustomer","mail","phoneCustomer","addressCustomer","address","urlCustomer","www","infoCustomer","logoCustomer","logo","publisherUrl","__PUBLISHER_URL__","publisherPrintUrl","publisherName","__PUBLISHER_NAME__","nameEditor","sse","editorType","textAbout","alt","textVersion","__PRODUCT_VERSION__","__PUBLISHER_ADDRESS__","appVersion","compareVersions","developVersion","NavigationPopover","bookmarks","storeNavigation","navigationObject","asc_ShowDocumentOutline","get_CurrentPosition","setCurrentPosition","arrHeaders","updateViewerNavigation","isEmptyItem","level","onSelectItem","NavigationSheet","stateHeight","setHeight","stateOpacity","setOpacity","stateStartY","setStartY","_useState12","isNeedClose","setNeedClose","onSheetClosed","touchObj","dist","NavigationController","prevLevel","headerLevel","hasParent","get_ElementsCount","firstHeader","isFirstItemNotHeader","get_Level","goto","asc_viewerNavigateTo","frameStyle","minHeight","sharingSettingsUrl","coauthSheetElem","frameBorder","scrolling","handlerChange","setPassword","isShowPassword","setShowPassword","c_oAscEDocProtect","ReadOnly","stateTypeProtection","setStateTypeProtection","isRequirePassword","setRequirePassword","changePassword","passwordRepeat","changeRepeationPassword","isDisabledProtection","onProtectDocument","PasswordField","Forms","TrackedChanges","Comments","ProtectionDocumentController","typeProtection","protection","asc_getDocumentProtection","AscCommonWord","CDocProtect","setProtection","setTypeProtection","asc_setEditType","asc_setPassword","asc_setDocumentProtection","changeViewerMode","asc_addRestriction","c_oAscRestrictionType","asc_removeRestriction","ProtectionDocumentView","isProtected","onProtectClick","isShowSnackbar","closeCallback","isAppearing","isSnackbarVisible","setSnackbarVisible","ProtectionView","_propsProtection","propsProtection","isPassword","asc_getIsPassword","passwordIcon","passwordField","btnUnprotect","passwordValue","Snackbar","isFileEncrypted","isRequiredPassword","repeatPassword","isDisabledEncryption","deletePassword","FileEncryptionController","asc_setCurrentPassword","setEncryptionFile","asc_resetPassword","EncryptionView","SettingsPage","_useContext","openOptions","isBranding","canProtect","isHistoryDisabled","textDone","onOpenOptions","isMobileView","isFavorite","canSubmitForms","canCloseEditor","canUseHistory","_canDownload","_canDownloadOrigin","_canAbout","_canHelp","_canPrint","_canFeedback","_canDisplayInfo","enableDownload","canDownload","canDownloadOrigin","canPrint","canBrandingExt","about","help","feedback","toggleFavorite","saveAsPdf","clearAllFields","textFind","textFindAndReplace","textCollaboration","onOrthographyCheck","onChangeMobileView","onDownloadOrigin","textPrint","onPrint","textHelp","showHelp","showFeedback","VersionHistoryView","usersStore","users","historyStore","storeVersionHistory","currentVersion","arrVersions","filteredVersions","setFilteredVersions","usersVersions","arrVersion","handleClickRevision","onSelectRevision","ver","backgroundColor","user","userid","getInitials","canRestore","onRestoreRevision","getUserColor","asc_getUserColorById","userColors","VersionHistoryController","isFromSelectRevision","timerId","isVersionHistoryMode","arrVersionsHistory","currentChangeId","currentDocId","currentDocIdPrev","currentServerVersion","currentUserId","currentUserName","currentUserColor","currentDateCreated","currentRev","timeoutIdRef","currentArrColors","onRefreshHistory","onSetHistoryData","asc_registerCallback","onDownloadUrl","onExpiredToken","changeVersionHistoryMode","asc_unregisterCallback","setVersions","asc_coAuthoringDisconnect","arrColors","prev_ver","docIdPrev","versionGroup","findUserById","colorval","generateUserColor","addUser","usercolor","docId","markedAsVersion","canHistoryRestore","isExpanded","serverVersion","isRevision","changes","buildVersion","changeid","hasChanges","changeVersion","rev","revisions","findRevisions","urlGetTime","previous","changesUrl","urlDiff","hist","asc_CVersionHistory","asc_setUrl","asc_setUrlChanges","asc_setDocId","asc_setCurrentChangeId","asc_setArrColors","asc_setToken","asc_setIsRequested","asc_setServerVersion","asc_SetUserId","asc_SetUserName","asc_SetUserColor","asc_SetDateOfRevision","asc_showRevision","selectedRev","onclosed","SharingSettings","ProtectionController","cutDocName","currentTitle","wopi","asc_wopi_renameFile","asc_Print","__HELP_URL__","__SUPPORT_URL__","asc_pluginRun","asc_DownloadOrigin","changeMobileView","ChangeReaderMode","asc_ClearAllSpecialForms","isOffline","isFromBtnDownload","canRequestSaveAs","saveAsUrl","asc_setIsSaveAs","asc_SendForm","SettingsView","scrollable","topMd","topIos","bottomMd","bottomIos","toolbarEl","PageReview","isDisableAllSettings","isReviewOnly","canReview","textReview","noBack","textTrackChanges","trackChanges","onTrackChanges","isRestrictedEdit","textDisplayMode","onDisplayMode","textReviewChange","canUseReviewPermissions","textAcceptAllChanges","onAcceptAll","textRejectAllChanges","onRejectAll","PageReviewChange","isLockAcceptReject","editable","isLockPrevNext","onAcceptCurrentChange","textAccept","onRejectCurrentChange","textReject","onDeleteChange","textDelete","onGotoNextChange","onPrevChange","onNextChange","userName","textNoChanges","PageDisplayMode","textMarkup","textAllChangesEditing","textFinal","textAllChangesAcceptedPreview","textOriginal","textAllChangesRejectedPreview","InitReview","onChangeReview","review","fileKey","asc_SetTrackRevisions","canViewReview","asc_HaveRevisionsChanges","setCanViewReview","viewReviewMode","reviewDisplay","c_oAscDisplayModeInReview","Edit","Final","Original","asc_SetDisplayModeInReview","changeDisplayMode","isShow","changeArrReview","Review","_Component2","appConfig","editorPrefix","asc_AcceptAllChanges","asc_RejectAllChanges","ReviewChange","_Component3","dateStyle","ampm","c_paragraphLinerule","changeText","proptext","movetype","get_MoveType","get_Type","c_oAscRevisionsChangeType","TextAdd","c_oAscRevisionsMove","NoMove","textInserted","textParaMoveTo","textChart","textEquation","TextRem","textDeleted","is_MovedDown","textParaMoveFromDown","textParaMoveFromUp","ParaAdd","textParaInserted","ParaRem","textParaDeleted","TextPr","Get_Bold","textNot","textBold","Get_Italic","textItalic","Get_Underline","textUnderline","Get_Strikeout","textStrikeout","Get_DStrikeout","textDStrikeout","Get_Caps","textCaps","Get_SmallCaps","textSmallCaps","Get_VertAlign","vertalign_SuperScript","textSuperScript","vertalign_SubScript","textSubScript","textBaseline","Get_Color","Get_Highlight","textHighlight","Get_Shd","textShd","Get_FontFamily","Get_FontSize","Get_Spacing","textSpacing","Get_Position","Get_Lang","util","LanguageInfo","getLocalLanguageName","textFormatted","ParaPr","Get_ContextualSpacing","textContextual","textNoContextual","Get_IndLeft","textIndentLeft","Get_IndRight","textIndentRight","Get_IndFirstLine","textFirstLine","Get_Jc","textCenter","textJustify","Get_KeepLines","textKeepLines","textNoKeepLines","Get_KeepNext","textKeepNext","textNoKeepNext","Get_PageBreakBefore","textBreakBefore","textNoBreakBefore","Get_SpacingLineRule","Get_SpacingLine","textLineSpacing","textAtLeast","textMultiple","textExact","Get_SpacingBeforeAutoSpacing","textSpacingBefore","textAuto","Get_SpacingBefore","Get_SpacingAfterAutoSpacing","textSpacingAfter","Get_SpacingAfter","Get_WidowControl","textWidow","textNoWidow","Get_Tabs","textTabs","Get_NumPr","textNum","Get_PStyle","asc_GetStyleNameById","textParaFormatted","TablePr","textTableChanged","RowsAdd","textTableRowsAdd","RowsRem","textTableRowsDel","get_DateTime","get_UserName","userColor","get_UserColor","MoveTo","MoveFrom","dateToLocaleTimeString","get_UserId","canEditReview","asc_GetPrevRevisionsChange","asc_GetNextRevisionsChange","asc_AcceptChanges","dataChanges","asc_RejectChanges","asc_FollowRevisionMove","arrChangeReview","getArrChangeReview","get_hex","InitReviewController","ReviewController","ReviewChangeController","_props$opened","f7Actions","ActionsGroup","ComponentName","_props$close","sliceQuote","sliced","AddCommentPopup","userInfo","stateText","refInputComment","closeAddComment","textAddComment","onAddNewComment","AddCommentDialog","templateInitials","refContainerDialog","AddComment","CommentActions","comment","onCommentMenuClick","openActionComment","onActionsClosed","ActionsButton","textEdit","textResolve","textReopen","textAddReply","removable","textDeleteComment","ReplyActions","reply","openActionReply","textDeleteReply","EditCommentPopup","storeComments","onEditComment","refInputEditComment","openEditComment","textEditComment","userInitials","parsedName","EditCommentDialog","_ref4","EditComment","AddReplyPopup","_ref6","onAddReply","refInputReplyComment","openAddReply","AddReplyDialog","_ref7","AddReply","_ref8","EditReplyPopup","_ref9","onEditReply","relInputReplyComment","openEditReply","textEditReply","EditReplyDialog","_ref10","EditReply","_ref11","pickLink","arrayComment","subStr","str_res","item1","item2","ViewComments","_ref12","onResolveComment","showComment","wsProps","canEditComments","viewMode","canComments","comments","groupCollectionFilter","collectionComments","sortComments","isAvailableCommenting","clickComment","setComment","commentActionsOpened","_useState14","setReply","_useState16","replyActionsOpened","indexComment","Objects","quote","replies","indexReply","textNoComments","CommentList","_ref13","showComments","_useState18","setCurrentIndex","_useState20","_useState22","_useState24","onViewNextComment","ViewCommentSheet","_ref14","closeCurComments","_useState26","_useState28","_useState30","_useState32","ViewCommentPopover","_ref15","ViewCurrentComments","timeZoneOffsetInMs","getTimezoneOffset","utcDateToString","ooDateToString","stringOOToLocalDate","stringUtcToLocalDate","parseUserName","CommentsController","addComment","addComments","removeComment","removeComments","changeCommentData","changeShowComments","hideComments","onApiActiveSheetChanged","onFilterChange","isLiveCommenting","curUserId","currentUser","asc_getIdOriginal","asc_getWorksheetId","readSDKComment","uid","asc_getId","changeShowComment","changeComment","asc_getOnlyOfficeTime","asc_getTime","userId","asc_getUserId","searchUserById","asc_getUserName","asc_getText","asc_getColor","asc_getSolved","asc_getQuoteText","canEditComment","canDeleteComments","canDeleteComment","canViewComment","dateReply","repliesCount","asc_getRepliesCount","asc_getReply","ind","changeFilter","groupName","unattached","asc_getDocumentFlag","readSDKReplies","AddCommentController","getUserInfo","isOpen","setCurrentUser","commentText","documentFlag","asc_CCommentDataWord","asc_CCommentData","asc_putText","asc_putTime","asc_putOnlyOfficeTime","asc_putUserId","asc_putUserName","asc_putSolved","asc_putDocumentFlag","asc_addComment","EditCommentController","ascComment","asc_putQuoteText","asc_putGuid","guid","addReply","asc_addReply","asc_changeComment","onChangeComment","replyVal","textReply","indReply","currentComment","isOpenEditComment","isOpenAddReply","isOpenEditReply","currentReply","ViewCommentsController","_Component4","closeViewCurComments","isOpenViewCurComments","asc_removeComment","textMessageDeleteComment","deleteComment","textMessageDeleteReply","deleteReply","asc_selectComment","asc_showComment","_this$props2","allComments","storeWorksheets","ViewCommentsSheetsController","_ViewCommentsControll","_CommentsController","_ViewCommentsController","_ViewCommentsSheetsController","canRequestSharingSettings","changeAccessRights","setSharingSettings","sharingSettings","onMessage","msgData","Referer","ViewSharingSettings","asceditor","Collaboration","editUsers","textUsers","canViewComments","UsersPage","storeUsers","CollaborationPage","SharingSettingsController","_get","receiver","searchOptions","usereplace","isReplaceAll","popoverStyle","SEARCH_BACKWARD","SearchSettingsView","useReplace","searchBy","lookIn","isMatchCase","isMatchCell","runInAction","onReplaceChecked","show_popover","extra","extraSearchOptions","SearchView","searchQuery","replaceQuery","refSearchbarInput","onSettingsClick","onSearchClick","onReplaceClick","$replace","$editor","onEditorTouchStart","onEditorTouchEnd","asc_selectSearchingResults","searchTimer","onSearchQuery","searchParams","onReplaceQuery","onReplaceAllQuery","startPoint","pointerPosition","endPoint","onchangeSearchQuery","lastInputChange","setNumberSearchResults","_this$props$isViewer","numberSearchResults","textSearch","onSearchKeyDown","onSearchInput","changeSearchQuery","textReplace","changeReplaceQuery","onReplaceAllClick","textReplaceAll","SearchViewWithObserver","SearchSettings","_SearchSettingsView","onToggleMarkResults","anc_markup","markup","onFindReplaceClick","textFindAndReplaceAll","textCaseSensitive","textHighlightResults","DESearchView","_SearchView","checkboxCaseSensitive","checkboxMarkResults","caseSensitive","highlight","isshowed","bar","Search","isSearchByTyping","CSearchSettings","put_MatchCase","asc_findText","resultCount","asc_replaceText","SearchSettingsWithTranslation","asyncGeneratorStep","_next","_throw","_asyncToGenerator","idContextMenuElement","ContextMenuView","onMenuClosed","onMenuItemClick","ActionsWithExtraItems","onActionClosed","menuCancel","exportedIdMenuElemen","idCntextMenuTargetElement","ContextMenuController","openedMore","extraItems","fastCoAuthTips","onDocumentReady","onApiOpenContextMenu","onApiHideContextMenu","onApiShowForeignCursorLabel","onApiHideForeignCursorLabel","_onMenuItemClick","initMenuItems","initExtraItems","offsetPopoverTop","_callee","_x","UserId","isUserVisible","getUserName","EditorUIController","isSupportEditFeature","getToolbarOptions","initFonts","initEditorStyles","initFocusObjects","initTableTemplates","ContextMenu","mapMenuItems","handleMenuItemClick","_dec","canCoAuthoring","objects","_class","_ContextMenuControlle","onApiShowComment","onApiHideComment","onApiShowChange","ShowModal","checkShapeSelection","searchUserByCurrentId","showSplitModal","sdkchange","inRevisionChange","showCopyCutPasteModal","Copy","getSelectedElements","get_ObjectType","c_oAscTypeSelectElement","Hyperlink","get_ObjectValue","openLink","onTableContentsUpdate","contextMenuElem","get_InternalClass","asc_UpdateTableOfContents","textCopyCutPasteActions","errorCopyCutPaste","textDoNotShowAgain","menuSplit","SplitCell","Http","newDocumentPage","txtWarnUrl","inToc","canCopy","can_CopyCut","isAllowedEditing","isAllowedCommenting","locked","objectType","objectValue","itemsIcon","itemsText","menuViewComment","can_AddQuotedComment","menuAddComment","menuOpenLink","_ContextMenu","closeContextMenu","isAvailableExt","disableEditBtn","isObjectLocked","stateDisplayMode","disabledEditControls","isOpenModal","turnOnViewerMode","closeHistory","isShowBack","disabledControls","getUndoRedo","disabledUndo","isCanUndo","disabledRedo","isCanRedo","onUndoClick","onUndo","onRedoClick","onRedo","disabledSettings","movePrevField","moveNextField","saveForm","showEditDocument","onEditDocument","onEditClick","onAddClick","readerMode","ToolbarController","displayCollaboration","hasEditUsers","objectLocked","storeToolbarSettings","canEdit","canRequestEditRights","scrollOffsetRef","getNavbarTotalHeight","navbarBg","activateControls","deactivateEditControls","goBack","onRequestClose","navbarHeight","SetMobileTopOffset","_document$querySelect","canBackToFolder","setShowBack","_data$config","_data$config2","_data$config3","goback","canRequestClose","isDocumentModified","asc_stopSaving","dlgLeaveTitleText","dlgLeaveMsgText","leaveButtonText","asc_undoAllChanges","asc_continueSaving","stayButtonText","blank","setDisabledEditControls","setDisabledSettings","setDisabledControls","ToolbarView","Undo","Redo","asc_MoveToFillingForm","isSubmitForm","isSavePdf","ThemeColors","themeColors","onColorClick","curColor","isTypeColors","isTypeCustomColors","rowIndex","StandartColors","standartColors","CustomColors","emptyItems","customcolors","indexCurColor","ThemeColorPalette","standardcolors","themecolors","effectColors","textThemeColors","changeColor","textStandartColors","textCustomColors","CustomColorPicker","hexDigits","currentColor","autoColor","countDynamicColors","countdynamiccolors","stateColor","setColor","newColor","onAddNewColor","addNewColor","PageBullets","storeTextSettings","bulletArrays","getBulletsList","typeBullets","updateBulletsNumbers","getIconsBulletsAndNumbers","listStyle","onBullet","numberingInfo","PageNumbers","numberArrays","getNumbersList","typeNumbers","onNumber","PageMultiLevel","arrayMultiLevel","getMultiLevelList","typeMultiLevel","onMultiLevelList","EditTextContainer","previewList","shapeObject","shapePr","get_ShapeProperties","inSmartArt","asc_getFromSmartArt","inSmartArtInternal","asc_getFromSmartArtInternal","fontName","fontColor","highlightColor","displaySize","isBold","isItalic","isUnderline","isStrikethrough","paragraphAlign","updateListType","listType","fontColorPreview","highlightColorPreview","changeFontSize","changeFontFamily","toggleBold","toggleItalic","toggleUnderline","textDecoration","toggleStrikethrough","onTextColorAuto","onTextColor","onHighlightColor","onAdditionalStrikethrough","onAdditionalCaps","onAdditionalScript","changeLetterSpacing","onParagraphAlign","onParagraphMove","setOrientationTextShape","onLineSpacing","PageTextFonts","curFontName","fonts","fontsArray","iconWidth","iconHeight","thumbCanvas","thumbIdx","thumbContext","spriteCols","spriteThumbs","arrayRecentFonts","getImageUri","font","imgidx","getImage","toDataURL","stateRecent","setRecent","vlData","vlFonts","setVlFonts","drawFonts","images","drawImages","addFontToRecent","PageTextAddFormatting","isStrikeout","isDStrikeout","isSmallCaps","isAllCaps","letterSpacing","get_Strikeout","get_DStrikeout","get_SmallCaps","get_AllCaps","get_TextSpacing","isSuperscript","isSubscript","isInteger","PageTextBulletsAndNumbers","PageTextLineSpacing","lineSpacing","PageTextFontColor","storePalette","textFontColors","textAutomatic","textAddCustomColor","PageTextCustomFontColor","textCustomColor","changeCustomColors","PageTextHighlightColor","textHighlightColor","HighlightColorPalette","EditParagraphContainer","storeParagraphSettings","paragraphStyles","curStyleName","styleName","thumbSize","styleThumbSize","curBackColor","backColor","getBackgroundColor","onSaveStyle","onStyleMenuDelete","backgroundImage","backgroundSize","backgroundRepeat","textBackground","onBackgroundColor","textAdvancedSettings","onDistanceBefore","onDistanceAfter","onSpinFirstLine","onSpaceBetween","onBreakBefore","onOrphan","onKeepTogether","onKeepNext","ParagraphAdvSettings","firstLine","spaceBefore","spaceAfter","spaceBeforeFix","spaceAfterFix","displayBefore","displayAfter","breakBefore","orphanControl","keepTogether","keepWithNext","get_Ind","put_FirstLine","get_FirstLine","get_Spacing","get_Before","get_After","get_ContextualSpacing","get_PageBreakBefore","get_WidowControl","get_KeepLines","get_KeepNext","PageParagraphBackColor","setBackColor","PageParagraphCustomColor","PageParagraphStyle","asc_IsStyleDefault","changeParaStyleName","PageCreateTextStyle","titleNewStyle","nextParagraphStyle","setParagraph","textTitle","textEnterTitleNewStyle","PageChangeNextParagraphStyle","newParagraph","_props$value","_props$min","_props$max","_props$step","_props$label","_props$dual","_props$vertical","_props$verticalRevers","_props$draggableBar","_props$scale","_props$scaleSteps","_props$scaleSubSteps","_props$limitKnobPosit","rangeValue","onChanged","rangeEvents","PaletteFill","curFillColor","fillColor","getFillColor","onFillColor","setFillColor","EditShapeContainer","canFill","get_CanFill","wrapType","getWrapType","shapeType","asc_getType","hideChangeType","get_FromChart","get_FromSmartArt","isSmartArtInternal","get_FromSmartArtInternal","isFromGroup","get_FromGroup","fixedSize","spectype","get_SpecificType","c_oAscContentControlSpecificType","CheckBox","ComboBox","DropDownList","Picture","Complex","get_FormPr","get_Fixed","disableRemove","SdtLocked","textStyle","onBorderSize","onBorderColor","onOpacity","textWrap","onWrapType","onShapeAlign","onMoveText","onOverlap","onWrapDistance","onReplace","onReorder","textRemoveShape","onRemoveShape","PageShapeStyle","borderSize","borderType","stroke","get_stroke","get_width","get_type","get_fill","asc_getTransparent","borderSizeTransform","displayBorderSize","c_oAscStrokeType","STROKE_NONE","indexSizeByValue","displayTextBorderSize","sizeByValue","stateBorderSize","setBorderSize","stateTextBorderSize","setTextBorderSize","borderColorView","initBorderColorView","displayBorderColor","textFill","textBorder","textEffects","textSize","onRangeChange","sizeByIndex","onRangeChanged","textOpacity","PageShapeStyleNoFill","PageShapeCustomFillColor","PageShapeBorderColor","setBorderColor","PageShapeCustomBorderColor","PageWrapContainer","moveText","overlap","getAlign","getMoveText","getOverlap","getWrapDistance","stateDistance","setDistance","textInline","textSquare","textTight","textThrough","textTopAndBottom","textInFront","textBehind","textDistanceFromText","c_oAscAlignH","Center","textMoveWithText","textAllowOverlap","PageReplaceContainer","PageReorderContainer","textBringToForeground","textSendToBackground","textMoveForward","textMoveBackward","EditImageContainer","imageObject","pluginGuid","asc_getPluginGuid","storeImageSettings","onAlign","onReplaceByFile","onReplaceByUrl","textActualSize","onDefaulSize","onRemoveImage","wrappingStyle","setWrappingStyle","typesWrapping","square","tight","through","infront","behind","PageLinkSettingsContainer","textLinkSettings","textReplaceImage","textNotUrl","PageWrappingStyleContainer","setWrapType","StyleTemplates","onGetTableStylesPreviews","tableObject","styleId","get_TableStyle","stateId","setId","arrayStyles","TabFillColor","TabBorder","cellBorderWidth","onBorderType","updateBordersStyle","onBorderTypeClick","cellBorders","cellBorderColor","updateCellBorderWidth","colorAuto","EditTableContainer","onAddColumnLeft","onAddColumnRight","onAddRowAbove","onAddRowBelow","onRemoveColumn","onRemoveRow","textRemoveTable","onRemoveTable","textTableOptions","onCellMargins","onOptionResize","onOptionRepeat","onCheckTemplateChange","onWrapAlign","onWrapMoveText","PageTableOptionsContainer","isRepeat","isResize","getCellMargins","getRepeatOption","getResizeOption","textOptions","textRepeatAsHeaderRow","textResizeToFitContent","textCellMargins","PageTableWrap","c_tableWrap","c_tableAlign","textFlow","PageTableStyle","textStyleOptions","PageTableStyleOptions","tableLook","isFirstRow","isLastRow","isBandHor","isFirstCol","isLastCol","isBandVer","get_TableLook","get_FirstRow","get_LastRow","get_BandHor","get_FirstCol","get_LastCol","get_BandVer","textHeaderRow","textTotalRow","textBandedRow","textFirstColumn","textLastColumn","textBandedColumn","PageTableCustomFillColor","PageTableBorderColor","setAutoColor","updateCellBorderColor","PageTableCustomBorderColor","isChildSwiperSlide","processChildren","foundSlides","SwiperSlideContext","SwiperContext","externalElRef","wrapperTag","WrapperTag","onSwiper","eventsAssigned","containerClasses","setContainerClasses","virtualData","setVirtualData","breakpointChanged","setBreakpointChanged","initializedRef","swiperElRef","swiperRef","oldPassedParamsRef","oldSlides","nextElRef","prevElRef","paginationElRef","scrollbarElRef","restProps","splitEvents","plainObj","onBeforeBreakpoint","_containerClasses","passParams","extendWith","mountSwiper","oldParams","oldChildren","getKey","addKey","oldChildrenKeys","childrenKeys","newKeys","oldKeys","newKey","oldKey","getChangedParams","updateOnVirtualData","renderVirtual","externalRef","slideElRef","slideClasses","setSlideClasses","lazyLoaded","setLazyLoaded","updateClasses","slideData","storeChartSettings","shapeProperties","EditChart","onType","onStyle","onRemoveChart","PageChartDesign","chartObject","get_ChartProperties","PageChartDesignType","types","countSlides","arraySlides","chartProperties","curType","getType","indexSlide","typesSlide","PageChartDesignStyle","chartStyles","asc_getImage","PageChartDesignBorder","shapeStroke","initBorderColor","PageChartWrap","PageChartReorder","PageChartCustomFillColor","PageChartBorderColor","PageChartCustomBorderColor","EditTableContents","propsTableContents","stylesCount","get_StylesCount","get_StylesType","setStyleValue","get_ShowPageNumbers","pageNumbers","setPageNumbers","get_RightAlignTab","rightAlign","setRightAlign","get_TabLeader","leaderValue","setLeaderValue","arrStyles","c_oAscTOFStylesType","Current","Simple","Classic","Distinctive","Centered","Formal","Standard","Modern","arrLeaders","Hyphen","Underscore","activeStyle","activeLeader","leader","getStylesImages","onPageNumbers","onRightAlign","onLeader","onLevelsChange","fillTOCProps","addStyles","onUpdateTableContents","onRemoveTableContents","EditTextController","onApiFocusObject","UpdateInterfaceState","curSize","FontSizeOut","FontSizeIn","put_TextPrFontSize","put_TextPrFontName","put_auto","put_TextColor","strColor","SetMarkerFormat","put_TextPrBold","put_TextPrItalic","put_TextPrUnderline","put_TextPrStrikeout","put_TextPrDStrikeout","paragraphProps","asc_CParagraphProperty","put_AllCaps","put_SmallCaps","paraApply","put_TextPrBaseline","vertalign_Baseline","curSpacing","spacing","put_TextSpacing","put_PrAlign","DecreaseIndent","IncreaseIndent","put_PrLineSpacing","put_ListTypeCustom","arrayElements","divId","SetDrawImagePreviewBulletForMenu","asc_IsCurrentNumberingPreset","resetBullets","resetNumbers","resetMultiLevel","listId","asc_GetCurrentNumberingId","numformat","asc_GetNumberingPr","get_Lvl","asc_GetCurrentNumberingLvl","get_Format","resetListType","Bullet","asc_CImgProperty","put_Vert","ImgApply","EditText","EditParagraphController","put_Style","asc_GetStyleFromFormatting","put_Name","put_Next","asc_AddNewStyle","asc_RemoveStyle","newDistance","maxValue","put_LineSpacingBeforeAfter","paragraphProperty","minValue","newParagraphProp","put_AddSpaceBetweenPrg","put_PageBreakBefore","put_WidowControl","put_KeepLines","put_KeepNext","put_ParagraphShade","EditParagraph","EditShapeController","asc_Remove","sdkType","transformToSdkWrapType","put_WrappingStyle","put_PositionH","CImagePositionH","get_PositionH","put_UseAlign","put_Align","put_RelativeFrom","c_oAscRelativeFromH","put_PositionV","CImagePositionV","get_PositionV","c_oAscRelativeFromV","put_AllowOverlap","paddings","asc_CPaddings","put_Top","put_Right","put_Bottom","put_Left","put_Paddings","put_ChangeLevel","c_oAscChangeLevel","BringToFront","SendToBack","BringForward","BringBackward","ChangeShapeType","asc_CShapeProperty","asc_CShapeFill","c_oAscFill","FILL_TYPE_NOFILL","put_fill","FILL_TYPE_SOLID","asc_CFillSolid","put_color","put_ShapeProperties","asc_CStroke","_borderColor","STROKE_COLOR","put_width","put_stroke","currentShape","asc_putPrstDash","asc_getPrstDash","put_transparent","EditShape","EditImageController","imgSize","get_OriginalSizeImage","put_Width","get_ImageWidth","put_Height","get_ImageHeight","put_ResetCrop","put_Rot","ChangeImageFromFile","put_ImageUrl","EditImage","EditTableController","closeIfNeed","isTableInStack","remTable","addColumnLeft","addColumnRight","addRowAbove","addRowBelow","remColumn","remRow","CTableProp","CMargins","put_Flag","put_CellMargins","tblApply","put_RowsInHeader","put_TableLayout","c_oAscTableLayout","AutoFit","Fixed","put_TableWrap","put_TableAlignment","CTablePositionV","c_oAscVAnchor","Text","get_Value_Y","put_TablePaddings","put_TableStyle","isChecked","put_FirstRow","put_LastRow","put_BandHor","put_FirstCol","put_LastCol","put_BandVer","put_TableLook","CBackground","put_CellsBackground","put_Color","put_CellSelect","_cellBorders","CBorders","put_CellBorders","EditTable","EditChartController","c_oAscChartTypeSettings","comboBarLine","comboBarLineSecondary","comboAreaBar","comboCustom","clearChartStyles","updateChartStyles","asc_getChartPreviews","chart","putStyle","put_ChartProperties","changeType","headerObject","isDiffFirst","get_DifferentFirst","isDiffOdd","get_DifferentEvenOdd","linkToPrev","get_LinkToPrevious","boolLinkToPrev","startPageNumber","get_StartPageNumber","_startAt","textDifferentFirstPage","onDiffFirst","textDifferentOddAndEvenPages","onDiffOdd","textLinkToPrevious","onSameAs","textPageNumbering","textContinueFromPreviousSection","onNumberingContinue","onStartAt","EditHeaderController","HeadersAndFooters_DifferentFirstPage","HeadersAndFooters_DifferentOddandEvenPage","HeadersAndFooters_LinkToPrevious","asc_SetSectionStartPage","EditHeader","EditTableContentsController","startLevel","endLevel","canvasElem","SetDrawImagePlaceContents","asc_SetTableOfContentsPr","clear_Styles","docStyles","asc_GetStylesArray","disableOutlines","get_Name","asc_GetHeadingLevel","get_QFormat","get_TranslatedName","allowSelected","get_OutlineStart","get_OutlineEnd","get_StyleName","get_StyleLevel","rec","_loop2","newStart","emptyIndex","_loop3","_i2","_loop4","_i3","aname","bname","add_Style","asc_RemoveTableOfContents","EmptyEditLayout","textSelectObjectToEdit","EditLayoutNavbar","editors","EditLayoutContent","headerType","textSettings","textTableOfCont","textText","textParagraph","EditingPage","get_Vert","directionTextShape","setDirectionTextShape","c_oAscVertDrawingText","vert","vert270","PageWrap","PageReorder","PageReplace","PageImageWrap","PageImageReplace","PageImageReorder","PageLinkSettings","PageWrappingStyle","PageTableOptions","_props$fillTOCProps","chosenStyles","structure","setStructure","amountLevels","setAmountLevels","addNewStyle","MainPage","editOptionsVisible","addOptionsVisible","addShowOptions","settingsVisible","collaborationVisible","navigationVisible","addLinkSettingsVisible","editLinkSettingsVisible","snackbarVisible","fabVisible","isFabShow","_config$customization","isShowPlaceholder","isDocReady","loaderName","loaderLogo","isHideLogo","customLogoImage","customLogoUrl","_logo$imageDark","_logo$image","imageDark","handleClickToOpenOptions","showOpts","historyVisible","handleOptionsViewClosed","EditView","AddOptions","SettingsController","CollaborationView","_events","addevent","CollaborationController","onChangeEditUsers","onUserConnection","onCoAuthoringDisconnect","onTryUndoInFastCollaborative","isFastCoauth","canLicense","asc_SetFastCollaborative","SetCollaborativeMarksShowType","c_oAscCollaborativeMarksShowType","All","LastChanges","asc_setAutoSaveGap","canLiveView","coEditing","canAutosave","connection","resetDisconnected","textTryUndoRedo","ErrorController","LoadingDocument","on_engine_created","errData","c_oAscError","ID","LoadingScriptError","c_oAscAsyncActionType","closable","Unknown","unknownErrorText","ConvertationTimeout","convertationTimeoutText","ConvertationOpenError","openErrorText","ConvertationSaveError","saveErrorText","DownloadError","downloadErrorText","UplImageSize","uploadImageSizeMessage","UplImageExt","uploadImageExtMessage","UplImageFileCount","uploadImageFileCountMessage","UplDocumentSize","UplDocumentExt","UplDocumentFileCount","SplitCellMaxRows","splitMaxRowsErrorText","SplitCellMaxCols","splitMaxColsErrorText","SplitCellRowsDivider","splitDividerErrorText","VKeyEncrypt","errorToken","KeyExpire","errorTokenExpire","UserCountExceed","errorUsersExceed","CoAuthoringDisconnect","errorViewerDisconnect","ConvertationPassword","errorFilePassProtect","PasswordIsNotCorrect","StockChartError","errorStockChart","DataRangeError","errorDataRange","Database","errorDatabaseConnection","UserDrop","lostEditingRights","changeEditingRights","errorUserDrop","MailMergeLoadFile","errorMailMergeLoadFile","MailMergeSaveFile","errorMailMergeSaveFile","Warning","errorConnectToServer","UplImageUrl","errorBadImageUrl","SessionAbsolute","errorSessionAbsolute","SessionIdle","errorSessionIdle","SessionToken","errorSessionToken","DataEncrypted","errorDataEncrypted","AccessDeny","errorAccessDeny","ForceSaveButton","ForceSaveTimeout","EditingError","errorEditingDownloadas","MailToClientMissing","errorEmailClient","ConvertationOpenLimitError","errorFileSizeExceed","UpdateVersion","errorUpdateVersionOnDisconnect","LoadingFontError","errorLoadingFont","ComplexFieldEmptyTOC","errorEmptyTOC","ComplexFieldNoTOC","errorNoTOC","TextFormWrongFormat","errorTextFormWrongFormat","DirectUrl","errorDirectUrl","CannotCompareInCoEditing","ComboSeriesError","Password","Submit","ConvertationOpenFormat","errorInconsistentExtPdf","errorInconsistentExtDocx","errorInconsistentExtXlsx","errorInconsistentExtPptx","errorInconsistentExt","errorDefaultMessage","Level","Critical","criticalErrorTitle","isDesktopApp","criticalErrorExtText","scriptLoadError","IrregularStack","_stack","_config","_strongCompare","strongCompare","_compare","_weakCompare","weakCompare","obj1","obj2","_indexOf","exist","LongActionsController","stackLongActions","loadMask","closePreloader","onLongActionBegin","onLongActionEnd","onOpenDocument","onConfirmAction","setLongActionView","forceClose","Information","BlockInteraction","c_oAscAsyncAction","textLoadingDocument","saveTitleText","loadFontsTitleText","loadImagesTitleText","loadFontTitleText","loadImageTitleText","downloadTitleText","printTitleText","uploadImageTitleText","applyChangesTitleText","savePreparingText","mailMergeLoadFileText","downloadMergeTitle","sendMergeTitle","waitText","txtEditingMode","loadingDocumentTitleText","apiCallback","c_oAscConfirm","ConfirmMaxChangesSize","confirmMaxChangesSize","textUndo","textContinue","$title","proc","asc_getCurrentFont","asc_getCurrentImage","asc_getFontsCount","asc_getImagesCount","PluginsController","iframe","configPlugins","autostart","serverPlugins","showPluginModal","pluginClose","pluginResize","onPluginsInit","loadPlugins","onDlgBtnClick","asc_pluginButtonClick","plugin","variationIndex","urlAddition","variation","get_Variations","get_Visual","get_Url","get_BaseUrl","isCustomWindow","get_CustomWindow","arrBtns","get_Buttons","newBtns","get_Size","padding","getPlugins","pluginsData","fetchFunction","baseUrl","previousPromise","currentPromise","pluginsdata","parsePlugins","variations","itemVar","descriptionLocale","textLocale","registerPlugins","CPlugin","deserialize","asc_pluginsRegister","mergePlugins","setPluginsOptions","PageEncoding","encodeData","valueEncoding","stateEncoding","setStateEncoding","nameEncoding","encoding","textChooseTxtOptions","textEncoding","changeStateEncoding","txtOk","EncodingView","currentEncoding","changeCurrentEncoding","txtDownloadTxt","textChooseEncoding","lcid","Encoding","EncodingController","initEncoding","recommendedSettings","asc_getRecommendedSettings","initEncodeData","asc_getCodePage","asc_getCodePages","asc_getCodePageName","asc_getLcid","asc_setAdvancedOptions","asc_CTextOptions","PageDropdownList","listItems","curValue","enteredValue","isComboBox","onAddItem","onChangeItemList","setItemValue","DropdownListView","DropdownListController","initDropdownList","propsObj","pr","internalId","get_InternalId","specProps","get_ComboBoxPr","get_DropDownListPr","asc_GetContentControlListCurrentValue","initListItems","asc_GetSelectedText","get_ItemsCount","get_PlaceholderText","get_ItemValue","get_ItemDisplayText","asc_SelectContentControlListItem","asc_SetContentControlText","DropdownList","MainController","ApplyEditRights","boxSdk","fallbackSdkTranslations","_state","licenseType","isFromGatewayDownloadAs","isDocModified","docProtection","defaultTitleText","__APP_TITLE_TEXT__","stackMacrosRequests","on_script_load","sdk_scripts","dep_scripts","setConfigOptions","asc_setLocale","changeMacrosRequest","loadDocument","permissions","_options","actionLink","_userOptions","asc_CUserInfo","put_Id","put_FullName","put_IsAnonymousUser","asc_CDocInfo","put_Url","put_DirectUrl","directUrl","put_Format","put_VKey","vkey","put_Options","put_UserInfo","put_CallbackUrl","callbackUrl","put_Token","put_Permissions","put_EncryptedInfo","encryptionKeys","put_Lang","put_Mode","coEditMode","put_CoEditingMode","asc_putIsEnabledMacroses","asc_putIsEnabledPlugins","edit","isPDF","changeEditorBrandColorForPdf","fillForms","onEditorPermissions","onDocumentContentReady","onLicenseChanged","onMacrosPermissionRequest","onRunAutostartMacroses","asc_getEditorPermissions","licenseUrl","customerId","setDataDoc","licType","asc_getLicenseType","c_oLicenseResult","Expired","ExpiredTrial","NotBefore","ExpiredLimited","onServerVersion","asc_getBuildVersion","Success","SuccessLimit","isMobileForceView","mobileForceView","setPermissionOptions","applyMode","OnlyForms","asc_LoadDocument","Resize","titleLicenseNotActive","titleLicenseExp","warnLicenseBefore","warnLicenseExp","_isDocReady","isOForm","appSettings","SetDrawingFreeze","asc_SetHighlightRequiredFields","zoomFitToPage","zoomFitToWidth","updateWindowTitle","needToUpdateVersion","onProcessSaveResult","onProcessRightsChange","onDownloadAs","onSetFavorite","asc_GetDefaultTableStyles","applyLicense","changeDocReady","results","processArrayScripts","scriptpath","_translate","isPDFForm","PDFEditorApi","asc_docs_api","SetFontRenderingMode","bindEvents","onExternalMessage","bodyElement","asc_setViewMode","asc_setRestriction","OnlyComments","onDocumentModifiedChanged","onDocumentCanSaveChanged","onbeforeunload","onBeforeUnload","onunload","onUnload","isModified","asc_isDocumentCanSave","isCanSave","continueSavingTimer","leavePageText","Connections","UsersCount","ConnectionsOS","UsersCountOS","trialMode","c_oLicenseMode","Limited","ConnectionsLive","ConnectionsLiveOS","UsersViewCount","UsersViewCountOS","warnNoLicense","__COMPANY_NAME__","warnNoLicenseUsers","textNoLicenseTitle","warnLicenseExceeded","warnLicenseUsersExceeded","errorOpensource","isAnonymousSupport","warnLicenseAnonymous","license","permissionsLicense","textBuyNow","textContactUs","__SALES_EMAIL__","warnLicenseLimitedRenewed","textPaidFeature","textCustomLoader","textClose","changeServerVersion","errorServerVersion","titleServerVersion","onUpdateVersion","onDocumentName","onPrintUrl","initThemeColors","resetPortrait","changeDocSize","DateTime","onShowDateActions","asc_UncheckContentControlButtons","onShowListActions","resetFontsRecent","typeBaseline","resetTypeBaseline","resetParagraphAlign","resetTextColor","resetLineSpacing","textPr","get_TextProps","get_TextPr","get_HighLight","resetHighlightColor","canAddHyperlink","timerLoading","switchIsLoaded","objectInfo","timerDocInfo","changeCount","addSchemes","isDRM","asc_CDRMAdvancedOptions","txtIncorrectPwd","advDRMOptions","textOpenFile","advDRMPassword","onAdvancedOptions","onChangeProtectDocument","can","setCanUndo","setCanRedo","onApiTextReplaced","initBookmarks","markFavorite","favorite","canFavorite","setFavorite","textWarningDialog","isReadOnly","isCommentsOnly","isFormsOnly","isTrackedChanges","asc_SetLocalTrackRevisions","applyRestrictions","asc_getEditType","replaced","get_DateTimePr","controlsContainer","_dateObj","get_FullDate","cmpCalendar","put_FullDate","asc_SetContentControlDatePickerDate","dropdownListTarget","asc_OnSaveEnd","errorProcessSaveResult","old_rights","warnProcessRightsChange","textParams","_format","_defaultFormat","_supported","DOCM","asc_setIsDownloadEvent","DOCXF","errorUpdateVersion","titleUpdateVersion","iframePrint","print","_this8","asc_runAutostartMacroses","textHasMacros","textRemember","_this9","macrosRequest","textRequestMacros","getEditCommentControllers","_this10","initSdk","f7params","tempW","_focusObjects","_headerType","resetFocusObjects","intf","filterFocusObjects","getHeaderObject","getParagraphObject","getShapeObject","getImageObject","getTableObject","getChartObject","getLinkObject","topObject","arrObj","SpellCheck","getTopObject","topObjectValue","asc_getState","asc_getView","idArray","usersArray","idOriginal","userAttr","binaryFormat","heightOne","offsets","responseType","overrideMimeType","setRequestHeader","Uint8Array","openBinary","arrayBuffer","binaryAlpha","memorySize","isOffsets","Uint8ClampedArray","binaryIndex","binaryLen","len0","tmpValue","moduleCur","imagePixels","canvas","ctx","getContext","dataTmp","createImageData","sizeImage","alphaChannel","pixelsCount","putImageData","customTextColors","initEditorFonts","resetFontName","resetFontSize","resetIsBold","resetIsItalic","resetIsUnderline","resetIsStrikeout","changeCustomTextColors","listItemHeight","loadSprite","fontId","asc_getFontId","asc_getFontName","asc_getFontThumbnail","asc_getFontType","FONT_THUMBNAIL_HEIGHT","CThumbnailLoader","get_auto","get_value","line","get_Line","get_LineRule","get_MergedStyles","STYLE_THUMBNAIL_WIDTH","STYLE_THUMBNAIL_HEIGHT","_styles","get_Shade","c_oAscShdClear","get_Color","cell","sdk","c_oAscWrapStyle2","Square","Tight","Through","TopAndBottom","Behind","InFront","sdkToUi","record","uiToSdk","wrapping","get_WrappingStyle","wrapTypesTransform","get_Align","get_RelativeFrom","get_AllowOverlap","get_Paddings","get_Top","sdkColor","get_color","_sizes","typeStyles","get_CellMargins","get_Left","get_RowsInHeader","get_TableLayout","get_TableWrap","get_TableAlignment","get_TablePaddings","get_CellsBackground","border","asc_CTextBorder","updateBorderStyle","get_Right","get_Bottom","get_InsideV","put_InsideV","get_InsideH","put_InsideH","put_Size","widthContainer","barNormal","barStacked","barStackedPer","barNormal3d","barStacked3d","barStackedPer3d","barNormal3dPerspective","lineNormal","lineStacked","lineStackedPer","hBarNormal","hBarStacked","hBarStackedPer","hBarNormal3d","hBarStacked3d","hBarStackedPer3d","areaNormal","areaStacked","areaStackedPer","pie","doughnut","pie3d","scatter","stock","line3d","get_PageCount","get_WordsCount","get_ParagraphCount","get_SymbolsCount","get_SymbolsWSCount","changeReaderMode","_config$lang","canRenameAnonymous","guestName","textGuest","textAnonymous","targetApp","canCreateNew","createUrl","canOpenRecent","recent","fileChoiceUrl","mergeFolderUrl","canAnalytics","canBack","hasUrl","canPlugins","asc_isSupportFeature","setCurrentName","_document$info","_document$info2","_document$info3","asc_getRights","c_oRights","asc_getIsAnalyticsEnable","isLightVersion","asc_getIsLight","asc_isOffline","canHistoryClose","canUseMailMerge","canSendEmailAddresses","editCommentAuthorOnly","deleteCommentAuthorOnly","commentAuthorOnly","canChat","chat","canEditStyles","isXpsViewer","typeForm","protect","asc_getLicenseMode","download","canReader","asc_getCustomization","asc_getCanBranding","reviewGroups","reviewPermissions","canUseCommentPermissions","commentGroups","canUseUserInfoPermissions","userInfoGroups","setReviewPermissions","setCommentPermissions","setUserInfoPermissions","asc_getLiveViewerSupport","asc_isAnonymousSupport","groupCollectionComments","removeShowComment","findComment","collection","system","startApp","getUrlParams","listenApiMsg","isform"],"sourceRoot":""} \ No newline at end of file diff --git a/apps/documenteditor/mobile/index.html b/apps/documenteditor/mobile/index.html new file mode 100644 index 0000000000..73de7bd4f1 --- /dev/null +++ b/apps/documenteditor/mobile/index.html @@ -0,0 +1,433 @@ +Desktop Editor
          \ No newline at end of file diff --git a/apps/documenteditor/mobile/resources/img/bullets/bullet-01.png b/apps/documenteditor/mobile/resources/img/bullets/bullet-01.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/bullets/bullet-02.png b/apps/documenteditor/mobile/resources/img/bullets/bullet-02.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/bullets/bullet-03.png b/apps/documenteditor/mobile/resources/img/bullets/bullet-03.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/bullets/bullet-04.png b/apps/documenteditor/mobile/resources/img/bullets/bullet-04.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/bullets/bullet-05.png b/apps/documenteditor/mobile/resources/img/bullets/bullet-05.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/bullets/bullet-06.png b/apps/documenteditor/mobile/resources/img/bullets/bullet-06.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/bullets/bullet-07.png b/apps/documenteditor/mobile/resources/img/bullets/bullet-07.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-01.png b/apps/documenteditor/mobile/resources/img/charts/chart-01.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-02.png b/apps/documenteditor/mobile/resources/img/charts/chart-02.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-03.png b/apps/documenteditor/mobile/resources/img/charts/chart-03.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-04.png b/apps/documenteditor/mobile/resources/img/charts/chart-04.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-05.png b/apps/documenteditor/mobile/resources/img/charts/chart-05.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-06.png b/apps/documenteditor/mobile/resources/img/charts/chart-06.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-07.png b/apps/documenteditor/mobile/resources/img/charts/chart-07.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-08.png b/apps/documenteditor/mobile/resources/img/charts/chart-08.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-09.png b/apps/documenteditor/mobile/resources/img/charts/chart-09.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-10.png b/apps/documenteditor/mobile/resources/img/charts/chart-10.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-11.png b/apps/documenteditor/mobile/resources/img/charts/chart-11.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-12.png b/apps/documenteditor/mobile/resources/img/charts/chart-12.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-13.png b/apps/documenteditor/mobile/resources/img/charts/chart-13.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-14.png b/apps/documenteditor/mobile/resources/img/charts/chart-14.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-15.png b/apps/documenteditor/mobile/resources/img/charts/chart-15.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-16.png b/apps/documenteditor/mobile/resources/img/charts/chart-16.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-17.png b/apps/documenteditor/mobile/resources/img/charts/chart-17.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-18.png b/apps/documenteditor/mobile/resources/img/charts/chart-18.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-19.png b/apps/documenteditor/mobile/resources/img/charts/chart-19.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-20.png b/apps/documenteditor/mobile/resources/img/charts/chart-20.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-21.png b/apps/documenteditor/mobile/resources/img/charts/chart-21.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-22.png b/apps/documenteditor/mobile/resources/img/charts/chart-22.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-23.png b/apps/documenteditor/mobile/resources/img/charts/chart-23.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-24.png b/apps/documenteditor/mobile/resources/img/charts/chart-24.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/charts/chart-25.png b/apps/documenteditor/mobile/resources/img/charts/chart-25.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/numbers/number-01.png b/apps/documenteditor/mobile/resources/img/numbers/number-01.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/numbers/number-02.png b/apps/documenteditor/mobile/resources/img/numbers/number-02.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/numbers/number-03.png b/apps/documenteditor/mobile/resources/img/numbers/number-03.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/numbers/number-04.png b/apps/documenteditor/mobile/resources/img/numbers/number-04.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/numbers/number-05.png b/apps/documenteditor/mobile/resources/img/numbers/number-05.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/numbers/number-06.png b/apps/documenteditor/mobile/resources/img/numbers/number-06.png old mode 100755 new mode 100644 diff --git a/apps/documenteditor/mobile/resources/img/numbers/number-07.png b/apps/documenteditor/mobile/resources/img/numbers/number-07.png old mode 100755 new mode 100644 diff --git a/apps/pdfeditor/main/resources/img/iconshuge@2.5x.svg b/apps/pdfeditor/main/resources/img/iconshuge@2.5x.svg new file mode 100644 index 0000000000..f20b94dd37 --- /dev/null +++ b/apps/pdfeditor/main/resources/img/iconshuge@2.5x.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/presentationeditor/main/resources/img/iconshuge@2.5x.svg b/apps/presentationeditor/main/resources/img/iconshuge@2.5x.svg new file mode 100644 index 0000000000..1ccdb073b8 --- /dev/null +++ b/apps/presentationeditor/main/resources/img/iconshuge@2.5x.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/presentationeditor/mobile/css/612.css b/apps/presentationeditor/mobile/css/612.css new file mode 100644 index 0000000000..291b21f86e --- /dev/null +++ b/apps/presentationeditor/mobile/css/612.css @@ -0,0 +1,6 @@ +/*! + * + * * Version: 8.0.1 (build: 0) + * + */:root{--brand-word:#446995;--brand-cell:#40865c;--brand-slide:#be664f;--brand-form:#be664f;--brand-primary:#3880be;--brand-secondary:#ed7309;--brand-text-on-brand:#fff;--background-primary:#fff;--background-secondary:#fff;--background-tertiary:#eff0f5;--background-menu-divider:rgba(60,60,67,.15);--background-button:#eff0f5;--text-normal:#000;--text-secondary:rgba(0,0,0,.6);--text-tertiary:rgba(0,0,0,.4);--text-link:#007aff;--text-error:#ff3b30;--fill-black:#000;--fill-white:#fff;--toolbar-background:#446995;--toolbar-icons:#fff;--toolbar-segment:#446995;--toolbar-tab-normal:hsla(0,0%,100%,.5);--component-disabled-opacity:0.4;--active-opacity-word:rgba(68,105,149,.3);--active-opacity-slide:rgba(190,102,79,.3);--active-opacity-cell:rgba(64,134,92,.3);--image-border-types-filter:none;--canvas-background:#eee;--canvas-content-background:#fff;--canvas-page-border:#ccc;--canvas-ruler-background:#fff;--canvas-ruler-margins-background:#d9d9d9;--canvas-ruler-mark:#555;--canvas-ruler-handle-border:#555;--canvas-ruler-handle-border-disabled:#aaa;--canvas-high-contrast:#000;--canvas-cell-border:rgba(0,0,0,.1);--canvas-cell-title-selected:#cfcfcf;--canvas-cell-title-border:#d8d8d8;--canvas-cell-title-border-selected:#bbb;--canvas-dark-cell-title:#444;--canvas-dark-cell-title-selected:#111;--canvas-dark-cell-title-border:#3d3d3d;--canvas-dark-cell-title-border-selected:#0f0f0f;--canvas-dark-content-background:#3a3a3a;--canvas-dark-page-border:#2a2a2a}:root .theme-dark,:root .theme-type-dark{--background-primary:#232323;--background-secondary:#333;--background-tertiary:#131313;--background-menu-divider:rgba(84,84,88,.5);--background-button:#333;--text-normal:hsla(0,0%,100%,.87);--text-secondary:hsla(0,0%,100%,.6);--text-tertiary:hsla(0,0%,100%,.4);--text-link:#1976d2;--text-error:#ff453a;--fill-black:#000;--fill-white:#fff;--brand-word:#208bff;--brand-cell:#34c759;--brand-slide:#fe8c33;--brand-form:#fe8c33;--brand-primary:#3e9cf0;--brand-secondary:#ffaf49;--brand-text-on-brand:#000;--toolbar-background:#232323;--toolbar-icons:#208bff;--toolbar-segment:#fff;--toolbar-tab-normal:#757575;--component-disabled-opacity:0.4;--active-opacity-word:rgba(68,105,149,.2);--active-opacity-slide:rgba(190,102,79,.2);--active-opacity-cell:rgba(64,134,92,.2);--image-border-types-filter:invert(100%) brightness(4);--canvas-background:#000;--canvas-content-background:#fff;--canvas-page-border:#303030;--canvas-ruler-background:#636366;--canvas-ruler-margins-background:#3a3a3c;--canvas-ruler-mark:#8e8e93;--canvas-ruler-handle-border:#636366;--canvas-ruler-handle-border-disabled:#636366;--canvas-high-contrast:#000;--canvas-cell-border:rgba(0,0,0,.1);--canvas-cell-title-border:#d5d5d5;--canvas-cell-title-border-hover:#858585;--canvas-cell-title-border-selected:#afafaf;--canvas-cell-title-selected:#cfcfcf;--canvas-dark-cell-title:#444;--canvas-dark-cell-title-selected:#111;--canvas-dark-cell-title-border:#d5d5d5;--canvas-dark-cell-title-border-selected:#afafaf}[dir=rtl].device-android .app-layout .searchbar input{background-position:100%;padding-left:36px;padding-right:24px}[dir=rtl].device-android .app-layout .searchbar .number-search-results{left:26px;right:auto}[dir=rtl].device-android .comment-list .comment-header .initials,[dir=rtl].device-android .wrap-comment .comment-header .initials{margin-left:10px;margin-right:0}[dir=rtl].device-android .actions-modal .actions-button-text{text-align:right}[dir=rtl].device-android .navigation-sheet__title{padding-left:0;padding-right:16px}[dir=rtl].device-ios .app-layout .navbar .left a+a,[dir=rtl].device-ios .app-layout .navbar .right a+a,[dir=rtl].device-ios .app-layout .subnavbar{margin-right:0}[dir=rtl].device-ios .app-layout .tab-buttons .tab-link:first-child{border-radius:0 5px 5px 0}[dir=rtl].device-ios .app-layout .tab-buttons .tab-link:last-child{border-radius:5px 0 0 5px}[dir=rtl].device-ios .app-layout .searchbar .number-search-results{left:26px;right:auto}[dir=rtl].device-ios .app-layout .popover li:first-child .segmented a:first-child,[dir=rtl].device-ios .app-layout .popover li:last-child .segmented a:first-child{border-radius:0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0}[dir=rtl].device-ios .app-layout .popover li:first-child .segmented a:last-child,[dir=rtl].device-ios .app-layout .popover li:last-child .segmented a:last-child{border-radius:var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius)}[dir=rtl].device-ios .app-layout .list .item-inner .item-after .segmented{margin-left:0;margin-right:10px}[dir=rtl].device-ios .app-layout .searchbar-inner__right .buttons-row a.next{margin-left:0;margin-right:15px}[dir=rtl].device-ios .app-layout .navbar .searchbar-input-wrap,[dir=rtl].device-ios .app-layout .searchbar-inner__left{margin-left:10px;margin-right:0}[dir=rtl].device-ios .app-layout .comment-list .item-content .item-inner .comment-header{padding-left:16px}[dir=rtl] .comment-list .item-content .item-inner{padding-left:0}[dir=rtl] .comment-list .item-content .item-inner .comment-header .right{justify-content:space-between}[dir=rtl] .comment-list .item-content .item-inner .comment-header .right .comment-resolve{margin-left:10px;margin-right:0}[dir=rtl] .comment-list .item-content .item-inner .comment-header .name{text-align:right}[dir=rtl] .comment-quote{border-left:0;border-right:1px solid var(--text-secondary);padding-left:16px;padding-right:10px}[dir=rtl] .comment-text,[dir=rtl] .reply-text{padding-left:15px;padding-right:0}[dir=rtl] #add-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #add-comment-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #add-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,[dir=rtl] #add-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #add-reply-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #add-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date,[dir=rtl] #edit-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #edit-comment-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #edit-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,[dir=rtl] #edit-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #edit-reply-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #edit-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date{text-align:right}[dir=rtl] #view-comment-popover .page .page-content{padding:16px 0 60px 16px}[dir=rtl] .wrap-comment{padding:16px 16px 0 24px}[dir=rtl] .shapes .thumb{transform:scaleX(-1)}[dir=rtl] #settings-popover .link,[dir=rtl] .settings-popup .link{display:inline}[dir=rtl] #edit-table-style ul{padding-right:0}[dir=rtl] .color-schemes-menu .item-title{margin-right:20px}[dir=rtl] .list [slot=root-start]{padding:15px 15px 0 0}[dir=rtl] .bullets .item-content,[dir=rtl] .multilevels .item-content,[dir=rtl] .numbers .item-content{padding-right:0}[dir=rtl] .dataview .active:after{left:-5px;right:unset}[dir=rtl] .popover .list .range-number,[dir=rtl] .popup .list .range-number,[dir=rtl] .sheet-modal .list .range-number{text-align:left}[dir=rtl] .popover .list .inner-range-title,[dir=rtl] .popup .list .inner-range-title,[dir=rtl] .sheet-modal .list .inner-range-title{padding-left:0;padding-right:15px}[dir=rtl] #color-picker .right-block,[dir=rtl] .page-review .toolbar #btn-reject-change{margin-left:0;margin-right:20px}[dir=rtl] .list li.no-indicator .item-link .item-inner{padding-right:0}[dir=rtl] .dialog .modal-password .modal-password__icon{left:4px;right:auto}@media (max-width:550px){.device-ios[dir=rtl] .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__right{margin-left:0;margin-right:10px}.device-ios[dir=rtl] .app-layout .navbar .searchbar-input-wrap{margin-left:0}.device-android[dir=rtl] .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__left{margin-left:33px;margin-right:0}}[dir=rtl] i.icon.icon-next,[dir=rtl] i.icon.icon-numbers-3,[dir=rtl] i.icon.icon-numbers-7,[dir=rtl] i.icon.icon-prev,[dir=rtl] i.icon.icon-table-add-column-left,[dir=rtl] i.icon.icon-table-add-column-right,[dir=rtl] i.icon.icon-table-borders-left,[dir=rtl] i.icon.icon-table-borders-right,[dir=rtl] i.icon.icon-table-remove-column,[dir=rtl] i.icon.icon-text-align-left,[dir=rtl] i.icon.icon-text-align-right{transform:scaleX(-1)}[dir=rtl] i.icon.icon-numbers-1{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M55.728 18v-6.725h-.022l-2.051 1.477v-1.02l2.062-1.482h.946V18h-.935ZM52.35 30.484c0-.677.243-1.239.73-1.687.487-.45 1.096-.676 1.826-.676.691 0 1.277.206 1.757.617.48.412.72.915.72 1.51 0 .43-.119.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.775V36h-5.113v-.666l2.728-2.874c.52-.547.863-.963 1.032-1.246.172-.282.258-.585.258-.907 0-.373-.15-.69-.452-.951a1.585 1.585 0 0 0-1.085-.392c-.454 0-.834.145-1.138.435-.305.29-.457.652-.457 1.085v.005h-.934v-.005ZM53.698 49.423v-.817h.929c.444 0 .807-.127 1.09-.38.283-.259.425-.585.425-.978 0-.394-.131-.708-.393-.94-.26-.233-.632-.35-1.111-.35-.444 0-.806.119-1.085.355-.28.236-.44.559-.484.967h-.929c.054-.66.308-1.184.763-1.574.458-.39 1.05-.585 1.778-.585.698 0 1.278.188 1.74.564.462.375.693.854.693 1.434 0 .483-.143.89-.43 1.219-.286.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.402.564.347.337.52.777.52 1.322 0 .433-.121.823-.364 1.17a2.39 2.39 0 0 1-.989.806c-.415.19-.875.285-1.38.285-.802 0-1.449-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.042.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.595.5-1 0-.454-.161-.814-.483-1.079-.32-.265-.756-.397-1.311-.397h-.972ZM51 17h-1v1h1zM51 35h-1v1h1zM51 52h-1v1h1z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-2{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M52.312 18v-6.725h-.021l-2.052 1.477v-1.02L52.3 10.25h.946V18h-.935Zm2.47 1.488c.123-.208.214-.37.275-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM48.934 30.484c0-.677.243-1.239.73-1.687.487-.45 1.096-.676 1.826-.676.691 0 1.277.206 1.757.617.48.412.72.915.72 1.51 0 .43-.119.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.775V36h-5.113v-.666l2.728-2.874c.52-.547.863-.963 1.032-1.246.172-.282.258-.585.258-.907 0-.373-.15-.69-.452-.951a1.585 1.585 0 0 0-1.085-.392c-.454 0-.834.145-1.138.435-.305.29-.457.652-.457 1.085v.005h-.934v-.005Zm5.849 7.004c.121-.208.213-.37.274-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM50.282 49.423v-.817h.929c.444 0 .807-.127 1.09-.38.283-.259.425-.585.425-.978 0-.394-.131-.708-.392-.94-.262-.233-.633-.35-1.112-.35-.444 0-.806.119-1.085.355-.28.236-.44.559-.484.967h-.929c.054-.66.308-1.184.763-1.574.458-.39 1.05-.585 1.778-.585.698 0 1.278.188 1.74.564.462.375.693.854.693 1.434 0 .483-.144.89-.43 1.219-.286.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.402.564.347.337.52.777.52 1.322 0 .433-.121.823-.364 1.17a2.39 2.39 0 0 1-.989.806c-.415.19-.875.285-1.38.285-.802 0-1.448-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.043.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.595.5-1 0-.454-.161-.814-.483-1.079-.32-.265-.756-.397-1.311-.397h-.972Zm4.5 5.065c.123-.208.214-.37.275-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822Z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-4{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='m56.85 18-.778-2.218h-3.083L52.21 18h-1.015l2.857-7.75h.956L57.866 18H56.85Zm-2.336-6.574-1.24 3.534h2.513l-1.24-3.534h-.033ZM55.03 36h-3.024v-7.75h3.035c.662 0 1.197.177 1.606.531.411.355.617.822.617 1.402 0 .405-.13.772-.392 1.101-.258.326-.573.523-.945.591v.043c.526.068.945.274 1.257.618.315.343.472.773.472 1.289 0 .684-.233 1.217-.698 1.6-.462.383-1.105.575-1.928.575Zm-2.057-6.896v2.486h1.547c.572 0 1.01-.11 1.31-.333.304-.222.457-.542.457-.961 0-.383-.127-.677-.382-.881-.254-.208-.616-.311-1.085-.311h-1.847Zm0 6.042h1.912c.583 0 1.026-.116 1.326-.35.301-.232.452-.572.452-1.02 0-.902-.623-1.353-1.87-1.353h-1.82v2.723ZM54.39 53.129c-1.07 0-1.92-.36-2.55-1.08-.627-.723-.94-1.699-.94-2.927 0-1.217.316-2.188.95-2.911.634-.727 1.48-1.09 2.54-1.09.846 0 1.562.236 2.15.709.59.469.946 1.09 1.068 1.863h-.978a2.1 2.1 0 0 0-.8-1.219c-.408-.308-.888-.462-1.44-.462-.755 0-1.36.283-1.815.849-.455.566-.682 1.32-.682 2.261 0 .953.226 1.71.677 2.272.451.562 1.06.843 1.826.843.57 0 1.05-.13 1.44-.392.39-.261.655-.628.794-1.1h.978c-.18.765-.546 1.354-1.101 1.766-.555.412-1.26.618-2.116.618ZM49 17h-1v1h1zM49 35h-1v1h1zM49 52h-1v1h1z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-5{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M51.404 17.243c.473 0 .863-.136 1.171-.409.312-.275.467-.62.467-1.036v-.467l-1.514.096c-.881.054-1.322.364-1.322.93 0 .268.108.483.323.644.218.161.51.242.875.242Zm-.198.81c-.588 0-1.06-.155-1.418-.467-.358-.311-.537-.723-.537-1.235 0-.498.186-.888.558-1.17.373-.287.91-.452 1.611-.495l1.622-.097v-.483c0-.358-.114-.634-.343-.827-.23-.194-.557-.29-.983-.29-.337 0-.621.08-.854.241-.23.162-.373.378-.43.65h-.897c.015-.487.231-.895.65-1.224.419-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36V18h-.886v-1.004h-.022c-.164.322-.415.58-.752.773-.336.19-.707.285-1.111.285Zm3.577 1.435c.121-.208.213-.37.274-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM51.759 36.054a2.3 2.3 0 0 1-1.117-.264 1.979 1.979 0 0 1-.769-.767h-.02V36h-.887v-8.089h.934v3.239h.022c.183-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.322.272 1.773.817.45.54.677 1.251.677 2.132 0 .884-.228 1.597-.683 2.138-.45.54-1.047.81-1.788.81Zm-.167-5.065c-.505 0-.915.197-1.23.59-.311.39-.467.9-.467 1.526 0 .63.156 1.14.467 1.53.315.391.725.586 1.23.586.509 0 .915-.191 1.22-.574.308-.384.461-.898.461-1.542 0-.641-.154-1.153-.462-1.536-.304-.387-.71-.58-1.219-.58Zm3.19 6.499c.123-.208.214-.37.275-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM54.31 49.095h-.918a1.274 1.274 0 0 0-.484-.795c-.261-.207-.601-.311-1.02-.311-.509 0-.919.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.468 1.547.315.38.728.57 1.24.57.405 0 .736-.092.994-.275.261-.186.432-.453.51-.8h.919c-.079.57-.34 1.03-.784 1.38-.44.351-.989.527-1.644.527-.802 0-1.445-.265-1.928-.795-.484-.534-.725-1.252-.725-2.154 0-.888.241-1.6.725-2.138.483-.54 1.122-.81 1.917-.81.684 0 1.245.189 1.681.569.437.376.686.832.747 1.37Zm.473 5.393c.121-.208.213-.37.274-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822Z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-6{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M54.82 17.243c.473 0 .863-.136 1.171-.409.312-.275.468-.62.468-1.036v-.467l-1.515.096c-.881.054-1.321.364-1.321.93 0 .268.107.483.322.644.218.161.51.242.875.242Zm-.198.81c-.588 0-1.06-.155-1.418-.467-.358-.311-.538-.723-.538-1.235 0-.498.187-.888.56-1.17.371-.287.909-.452 1.61-.495l1.623-.097v-.483c0-.358-.115-.634-.344-.827-.23-.194-.557-.29-.983-.29-.337 0-.621.08-.854.241-.23.162-.373.378-.43.65h-.897c.014-.487.231-.895.65-1.224.419-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36V18h-.886v-1.004h-.022a1.86 1.86 0 0 1-.752.773c-.336.19-.707.285-1.111.285ZM55.175 36.054a2.3 2.3 0 0 1-1.117-.264 1.979 1.979 0 0 1-.768-.767h-.022V36h-.886v-8.089h.934v3.239h.022c.182-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.322.272 1.773.817.45.54.676 1.251.676 2.132 0 .884-.227 1.597-.682 2.138-.45.54-1.047.81-1.788.81Zm-.167-5.065c-.505 0-.915.197-1.23.59-.311.39-.467.9-.467 1.526 0 .63.156 1.14.467 1.53.315.391.725.586 1.23.586.509 0 .915-.191 1.22-.574.307-.384.462-.898.462-1.542 0-.641-.154-1.153-.462-1.536-.305-.387-.711-.58-1.22-.58ZM57.726 49.095h-.918a1.274 1.274 0 0 0-.484-.795c-.261-.207-.601-.311-1.02-.311-.509 0-.919.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.468 1.547.315.38.728.57 1.24.57.405 0 .736-.092.994-.275.261-.186.432-.453.51-.8h.919c-.079.57-.34 1.03-.784 1.38-.44.351-.989.527-1.644.527-.802 0-1.445-.265-1.928-.795-.483-.534-.725-1.252-.725-2.154 0-.888.242-1.6.725-2.138.483-.54 1.122-.81 1.917-.81.684 0 1.245.189 1.681.569.437.376.686.832.747 1.37ZM51 17h-1v1h1zM51 35h-1v1h1zM51 52h-1v1h1z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-align-left,[dir=rtl] i.icon.icon-align-right{transform:scaleX(-1)}[dir=rtl] i.icon.icon-text-orientation-horizontal{background-color:var(--brand-slide);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M9.514 10.75h1.755L8.069 2H6.363L3.25 10.75h1.712l.66-1.988h3.194l.698 1.988ZM7.197 4.041l1.101 3.247h-2.18l1.079-3.247ZM16 2h-3.194v8.75h2.72c1.028-.008 1.677-.028 1.946-.06.429-.051.789-.189 1.08-.412.294-.226.525-.527.692-.9.17-.379.256-.767.256-1.165 0-.505-.13-.945-.392-1.319s-.637-.638-1.123-.794c.345-.17.617-.427.817-.77.204-.342.306-.718.306-1.128 0-.378-.082-.718-.246-1.02a2.162 2.162 0 0 0-.616-.734 1.93 1.93 0 0 0-.834-.358C17.103 2.03 16.632 2 16 2Zm-1.58 3.48V3.456h.926c.76 0 1.22.01 1.38.03.268.036.47.14.604.31.138.168.208.387.208.657 0 .283-.08.511-.24.686-.157.172-.373.275-.65.31-.152.02-.542.03-1.171.03h-1.058Zm0 3.796v-2.34h1.302c.734 0 1.21.042 1.428.125.222.084.391.217.507.4.117.183.175.406.175.669 0 .31-.076.559-.23.746a.973.973 0 0 1-.582.346c-.157.036-.526.054-1.107.054h-1.494ZM6.016 13.25l-3.52 3.833-.497.542.498.542L6.018 22l.995-1.084-2.318-2.524H22v-1.534H4.695l2.318-2.524-.996-1.084Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain}[dir=rtl] i.icon.icon-text-orientation-anglecount{background-color:var(--brand-slide);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23000' d='m12.614 10.658-1.076-1.113.79-1.703-1.958-2.025-1.623.842-1.05-1.085L14.972 2l1.046 1.082-3.403 7.576Zm.301-4.079 1.316-2.756-2.653 1.374 1.337 1.382ZM18.92 6.085l1.96 2.025c.387.4.657.718.81.952.157.233.255.485.292.756a2 2 0 0 1-.073.856 1.905 1.905 0 0 1-.475.802c-.251.26-.544.434-.879.522a1.61 1.61 0 0 1-.973-.03c.203.407.27.812.202 1.215a2.032 2.032 0 0 1-.568 1.085 2.42 2.42 0 0 1-.871.575 1.928 1.928 0 0 1-.977.133c-.315-.043-.62-.185-.914-.424-.185-.15-.595-.549-1.23-1.196l-1.668-1.724 5.365-5.547Zm.097 1.946-1.24 1.283.648.67c.386.399.631.64.737.724.191.153.387.224.588.215.205-.01.395-.104.568-.283.166-.172.258-.354.275-.548.023-.194-.038-.387-.18-.58-.086-.114-.362-.412-.828-.894l-.568-.587Zm-2.133 2.206-1.435 1.483.916.947c.357.369.594.591.712.668a.822.822 0 0 0 .57.15c.208-.022.407-.131.597-.328.161-.166.262-.344.303-.534a.92.92 0 0 0-.066-.575c-.082-.191-.348-.52-.798-.985l-.8-.826Z'/%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M2 8.72h5.604v1.358H4.24L15.45 20.916 14.328 22 3.403 11.144v3.286H2V8.72Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain}[dir=rtl] i.icon.icon-text-orientation-angleclock{background-color:var(--brand-slide);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M8.72 22v-5.604h1.358v3.363L20.916 8.55 22 9.672 11.144 20.597h3.286V22H8.72Z' clip-rule='evenodd'/%3E%3Cpath fill='%23000' d='m10.658 11.386-1.113 1.076-1.703-.79-2.025 1.958.842 1.623-1.085 1.05L2 9.028l1.082-1.046 7.576 3.403Zm-4.079-.301L3.823 9.769l1.374 2.653 1.382-1.337ZM6.085 5.08 8.11 3.12c.4-.387.718-.657.952-.81.233-.157.485-.255.756-.292a2 2 0 0 1 .856.073c.295.085.562.243.802.475.26.251.434.544.522.879.09.332.08.657-.03.973.407-.203.812-.27 1.215-.202.403.07.764.259 1.085.568.252.244.444.535.575.871.131.332.175.658.133.977-.043.315-.185.62-.424.914-.15.185-.549.595-1.196 1.23l-1.724 1.668-5.547-5.365Zm1.946-.097 1.283 1.24.67-.648c.399-.385.64-.631.724-.737.153-.191.224-.387.215-.588-.01-.205-.104-.395-.283-.568-.172-.166-.354-.257-.548-.275-.194-.023-.387.038-.58.18-.114.086-.412.362-.894.828l-.587.568Zm2.206 2.133 1.483 1.435.947-.916c.369-.357.591-.594.668-.711a.822.822 0 0 0 .15-.57c-.022-.209-.131-.408-.328-.598a1.104 1.104 0 0 0-.534-.303.92.92 0 0 0-.575.066c-.191.082-.52.348-.985.798l-.826.8Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain}[dir=rtl] .slide-theme .item-theme.active:before{left:-5px;right:unset}[dir=rtl] .slide-layout .item-inner:before{left:11px;right:unset}[dir=rtl] .slide-layout .row img{transform:scaleX(-1)}.device-ios{--toolbar-background:var(--background-primary,#fff);--toolbar-segment:var(--brand-slide,#be664f);--toolbar-icons:var(--brand-slide,#be664f)}.device-android{--toolbar-background:var(--brand-slide,#be664f)}.device-android .theme-type-dark{--toolbar-icons:var(--brand-slide,#be664f)}.page.page-users .block-title{font-size:17px;font-weight:400;line-height:17px;margin-bottom:20px;margin-top:20px;text-transform:none}.page.page-users .color{border-radius:50px;color:var(--fill-white);font-size:18px;line-height:40px;min-height:40px;min-width:40px;text-align:center}.row{--f7-cols-per-row:1;align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:space-between}.row+.row{margin-top:var(--f7-grid-row-gap)}.navbar.main-navbar{height:0}.navbar.main-navbar.navbar-with-logo{height:26px}.navbar.main-navbar .navbar-inner{display:flex;justify-content:center;padding-top:8px}.navbar.main-navbar .navbar-bg:after,.navbar.main-navbar .navbar-bg:before{content:none}.navbar-hidden{transform:translate3d(0,calc((var(--f7-navbar-height) + var(--f7-subnavbar-height))*-1),0)}.navbar-hidden+.page-content,.navbar-hidden+.page>.page-content{padding-top:0}.page.editor>.page-content{transition:padding-top .3s ease-in}.subnavbar .subnavbar-inner{padding:0}.subnavbar .subnavbar-inner .title{flex-shrink:1;margin:0;overflow:hidden;padding:0;text-overflow:clip}.subnavbar .icon-back{color:var(--toolbar-icons)}.page.page-with-subnavbar .page-content{--f7-page-subnavbar-offset:0px}.page.page-with-subnavbar.page-with-logo .page-content{--f7-page-subnavbar-offset:26px}.popover .list:first-child,.popup .list:first-child,.sheet-modal .list:first-child{margin-bottom:0;margin-top:0}.popover .list .inner-range-title,.popup .list .inner-range-title,.sheet-modal .list .inner-range-title{color:var(--text-normal);padding:15px 0 0 15px}.popover .list .range-number,.popup .list .range-number,.sheet-modal .list .range-number{color:var(--text-normal);min-width:60px;text-align:right}.popover .page-content.no-padding-top,.popup .page-content.no-padding-top,.sheet-modal .page-content.no-padding-top{padding-top:0}.sheet-modal.coauth__sheet{transition:all .3s}.disabled,[disabled]{opacity:.55;pointer-events:none}.text-content{padding:14px 10px 0}.view .list{--menu-list-offset:0px;max-width:100%}.view .list ul{background:var(--f7-list-bg-color);max-width:100%}.view .list li.no-indicator .item-link .item-inner{padding-right:15px}.view .list li.no-indicator .item-link .item-inner:before{content:none}.view .list .item-text{-webkit-line-clamp:none;height:auto;max-height:none;text-overflow:clip;white-space:normal}.view .list .font-item img{filter:var(--image-border-types-filter,none)}.view .list .buttons .button.active{background-color:var(--active-opacity-slide)}.view .list .item-link .item-inner{width:100%}.view .list .item-inner{color:var(--text-normal)}.bullets,.multilevels,.numbers{min-height:160px}.bullets .row.list,.multilevels .row.list,.numbers .row.list{margin:0}.bullets .row.list ul,.multilevels .row.list ul,.numbers .row.list ul{grid-gap:10px;background:none;display:grid;grid-template-columns:repeat(4,auto);justify-content:space-around;padding:5px;width:100%}.bullets .row.list ul:after,.bullets .row.list ul:before,.multilevels .row.list ul:after,.multilevels .row.list ul:before,.numbers .row.list ul:after,.numbers .row.list ul:before{display:none}.bullets .row.list ul li,.multilevels .row.list ul li,.numbers .row.list ul li{border:1px solid #c4c4c4;height:70px;width:70px}html.pixel-ratio-2 .bullets .row.list ul li,html.pixel-ratio-2 .multilevels .row.list ul li,html.pixel-ratio-2 .numbers .row.list ul li{border:.5px solid #c4c4c4}html.pixel-ratio-3 .bullets .row.list ul li,html.pixel-ratio-3 .multilevels .row.list ul li,html.pixel-ratio-3 .numbers .row.list ul li{border:.33px solid #c4c4c4}.bullets .row.list ul li .thumb,.multilevels .row.list ul li .thumb,.numbers .row.list ul li .thumb{background-color:var(--fill-white);background-size:cover;height:100%;width:100%}.bullets .row.list ul li .thumb label,.multilevels .row.list ul li .thumb label,.numbers .row.list ul li .thumb label{color:var(--fill-black);position:absolute;text-align:center;top:34%;width:100%}.bullets .row.list ul li .item-marker,.bullets .row.list ul li .item-multilevellist,.bullets .row.list ul li .item-number,.multilevels .row.list ul li .item-marker,.multilevels .row.list ul li .item-multilevellist,.multilevels .row.list ul li .item-number,.numbers .row.list ul li .item-marker,.numbers .row.list ul li .item-multilevellist,.numbers .row.list ul li .item-number{height:68px;width:68px}.bullets .row.list .item-content,.multilevels .row.list .item-content,.numbers .row.list .item-content{min-height:68px;padding-left:0;padding-right:0}.bullets .row.list .item-content .item-inner,.multilevels .row.list .item-content .item-inner,.numbers .row.list .item-content .item-inner{padding:0}.bullets .row.list .item-content .item-inner:after,.multilevels .row.list .item-content .item-inner:after,.numbers .row.list .item-content .item-inner:after{display:none}.popover .page .list:first-child:last-child ul{background-color:var(--f7-list-bg-color);border-radius:0}.popover .list:first-child li:first-child,.popover .list:first-child li:first-child a,.popover .list:first-child li:first-child>label,.popover .list:last-child li:last-child,.popover .list:last-child li:last-child a,.popover .list:last-child li:last-child>label,.popover .page .list:first-child:last-child ul li:first-child .item-link,.popover .page .list:first-child:last-child ul li:last-child .item-link{border-radius:0}.shapes li{height:70px;margin:0 1px;width:70px}.shapes li .thumb{background-color:var(--brand-slide);height:100%;width:100%}.chart-types{width:100%}.chart-types .row{padding:0 10px}.chart-types li{height:60px;margin:6px;width:60px}.chart-types li .thumb{background-size:contain;height:100%;width:100%}.chart-styles .row li{margin:0;padding:1px}.chart-styles .row img{height:50px;width:50px}.segmented .decrement,.segmented .increment{text-overflow:clip}.content-block{box-sizing:border-box;margin:32px 0;padding:0 16px}.content-block p{color:var(--text-normal)}.color-schemes-menu{cursor:pointer;display:block}.color-schemes-menu .item-inner{justify-content:flex-start}.color-schemes-menu .color-schema-block{display:flex}.color-schemes-menu .color{box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);margin:0 2px 0 0;min-height:26px;min-width:26px}.color-schemes-menu .item-title{color:var(--text-normal);margin-left:20px}.slide-layout__list{margin:auto}.slide-layout ul{display:flex;flex-wrap:wrap;justify-content:space-around}.slide-layout ul:after,.slide-layout ul:before{display:none}.slide-layout li{margin-top:12px;position:relative;z-index:1}.slide-layout li img{box-shadow:0 0 0 1px rgba(0,0,0,.15)}.slide-layout .item-inner{padding-top:0}.slide-layout .item-inner:after{display:none}.slide-layout .item-inner:before{background-color:var(--brand-slide);background-repeat:no-repeat;bottom:0;content:"";height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='11' fill='transparent'/%3E%3Cpath d='M11 21a10 10 0 1 1 10-10 10 10 0 0 1-10 10Zm6.4-13.68L17.06 7a.48.48 0 0 0-.67 0l-7 6.84-2.44-2.6a.51.51 0 0 0-.59.08l-.36.34a.58.58 0 0 0 0 .65l3.19 3.35a.38.38 0 0 0 .39 0L17.4 8a.48.48 0 0 0 0-.67Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;opacity:0;position:absolute;right:11px;width:22px;z-index:1}.slide-layout .active .item-inner:before{opacity:1}.slide-transition .splitter{align-items:center;color:#000;display:flex}.slide-transition .splitter label{margin:0 5px}.slide-transition .buttons-row{display:flex;margin:0 0 0 10px;min-width:90px}.slide-transition .buttons-row .button{width:100%}.slide-transition .buttons-row .button:first-child{border-left-style:solid;border-left-width:1px;border-radius:5px 0 0 5px}.slide-transition .buttons-row .button:last-child{border-radius:0 5px 5px 0}.style-effect .list .item-title,.style-type .list .item-title{font-weight:400}.range-slider-delay{appearance:none;background:linear-gradient(90deg,#b7b8b7 0,#b7b8b7);background-position:50%;background-repeat:no-repeat;background-size:100% 2px;border:none;box-sizing:initial;margin:4px 0 5px;outline:0;width:100%}.range-slider-delay:disabled{opacity:.55}.range-slider-delay::-webkit-slider-thumb{appearance:none;background:#fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.3);cursor:pointer;height:28px;width:28px}.range-slider-delay::-ms-thumb{appearance:none;background:#fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.3);cursor:pointer;height:28px;width:28px}.buttons-list ul li{border:0;font-weight:400}.buttons-list ul li .item-link{height:100%}.buttons-list ul li .item-link .item-content{height:100%;min-height:auto;padding:0}.buttons-list ul li .item-link .item-inner{align-items:center;justify-content:center;min-height:auto;padding:0}.buttons-list ul li .item-link .item-inner:before{display:none}.item-color-auto .color-auto{background-color:#000;height:22px;width:22px}.item-color-auto.active .color-auto{border-radius:1px;box-shadow:0 0 0 1px #fff,0 0 0 4px var(--brand-slide)}.page .color-palettes .list ul .palette{padding:8px 0}.page .color-palettes .list ul .palette a{border-radius:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);flex-grow:1;margin:1px 1px 0 0;min-height:26px;min-width:10px;position:relative}.page .color-palettes .list ul .palette a.active:after{border-radius:1px;box-shadow:0 0 0 1px #fff,0 0 0 4px var(--brand-slide);content:" ";height:100%;position:absolute;width:100%;z-index:1}.page .color-palettes .list ul .palette a.transparent{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='0 0 22 22'%3E%3Cpath fill='none' stroke='red' stroke-linecap='undefined' stroke-linejoin='undefined' stroke-width='2' d='M0 22 22 0'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:100% 100%}.page .color-palettes .row{padding:0}.page .color-palettes .list .item-inner{color:var(--text-normal);display:block}.page .color-palettes .dynamic-colors .palette,.page .color-palettes .standart-colors .palette{display:flex}.page .color-palettes .dynamic-colors .empty-color{background-color:#fff}#color-picker{align-items:center;display:flex;justify-content:space-around;margin:4px auto 0;max-width:300px}#color-picker .color-picker-container{font-size:0;height:auto;max-width:100%;position:relative;width:calc(100% - 94px)}#color-picker .color-picker-container .color-picker-module-wheel{margin:0}#color-picker .right-block{margin-left:20px}#color-picker .right-block .color-hsb-preview{border:1px solid #c4c4c4;border-radius:100px;height:72px;overflow:hidden;width:72px}#color-picker .right-block .color-hsb-preview .current-color-hsb-preview,#color-picker .right-block .color-hsb-preview .new-color-hsb-preview{height:36px}#color-picker .right-block .color-hsb-preview .new-color-hsb-preview{border-radius:100px 100px 0 0}#color-picker .right-block .color-hsb-preview .current-color-hsb-preview{border-radius:0 0 100px 100px}#color-picker .right-block .button-round{align-items:center;background-color:var(--fill-white);border:0;border-radius:100px;box-shadow:0 4px 4px rgba(0,0,0,.25);display:flex;height:72px;justify-content:center;margin-top:20px;padding:0;width:72px}.table-styles{width:100%}.table-styles .row,.table-styles .row li{margin-bottom:12px}.table-styles .row div,.table-styles .row li{align-items:center;box-shadow:0 0 0 1px #c4c4c4;display:flex;justify-content:center}.table-styles .row div,.table-styles li{margin:0;padding:1px}.table-styles .row div img,.table-styles li img{height:50px;width:70px}#edit-table-style .list ul ul{padding-left:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.icon.lang-flag{background-image:url(../../../presentationeditor/mobile/resources/img/controls/flags@2x.png);background-size:48px auto;height:12px;width:16px}.lang-flag.ca,.lang-flag.ca-ES{background-position:0 0}.lang-flag.cs,.lang-flag.cs-CZ{background-position:-16px 0}.lang-flag.da,.lang-flag.da-DK{background-position:-32px 0}.lang-flag.de,.lang-flag.de-DE{background-position:0 -12px}.lang-flag.el,.lang-flag.el-GR{background-position:-16px -12px}.lang-flag.en,.lang-flag.en-US{background-position:-32px -12px}.lang-flag.fr,.lang-flag.fr-FR{background-position:0 -24px}.lang-flag.hu,.lang-flag.hu-HU{background-position:-16px -24px}.lang-flag.it,.lang-flag.it-IT{background-position:-32px -24px}.lang-flag.ko,.lang-flag.ko-KR{background-position:0 -36px}.lang-flag.nl,.lang-flag.nl-NL{background-position:-16px -36px}.lang-flag.nb,.lang-flag.nb-NO,.lang-flag.nn,.lang-flag.nn-NO{background-position:-32px -36px}.lang-flag.pl,.lang-flag.pl-PL{background-position:0 -48px}.lang-flag.pt,.lang-flag.pt-BR{background-position:-16px -48px}.lang-flag.ro,.lang-flag.ro-RO{background-position:-32px -48px}.lang-flag.ru,.lang-flag.ru-RU{background-position:0 -60px}.lang-flag.sv,.lang-flag.sv-SE{background-position:-32px -60px}.lang-flag.tr,.lang-flag.tr-TR{background-position:0 -72px}.lang-flag.uk,.lang-flag.uk-UA{background-position:-16px -72px}.lang-flag.lv,.lang-flag.lv-LV{background-position:-32px -72px}.lang-flag.lt,.lang-flag.lt-LT{background-position:0 -84px}.lang-flag.vi,.lang-flag.vi-VN{background-position:-16px -84px}.lang-flag.de-CH,.lang-flag.fr-CH,.lang-flag.it-CH{background-position:-32px -84px}.lang-flag.pt-PT{background-position:-16px -96px}.lang-flag.de-AT{background-position:-32px -96px}.lang-flag.es,.lang-flag.es-ES{background-position:0 -108px}.lang-flag.en-GB{background-position:-32px -108px}.lang-flag.en-AU{background-position:0 -120px}.lang-flag.az-Latn-AZ{background-position:-16px -120px}.lang-flag.en-ID,.lang-flag.id,.lang-flag.id-ID{background-position:-32px -120px}.lang-flag.bg,.lang-flag.bg-BG{background-position:0 -132px}.lang-flag.ca-ES-valencia{background-position:-16px -132px}.lang-flag.en-CA{background-position:-32px -132px}.lang-flag.en-ZA{background-position:0 -144px}.lang-flag.eu,.lang-flag.eu-ES{background-position:-16px -144px}.lang-flag.gl,.lang-flag.gl-ES{background-position:-32px -144px}.lang-flag.hr,.lang-flag.hr-HR{background-position:0 -156px}.lang-flag.lb,.lang-flag.lb-LU{background-position:-16px -156px}.lang-flag.mn,.lang-flag.mn-MN{background-position:-32px -156px}.lang-flag.sl,.lang-flag.sl-SI{background-position:0 -168px}.lang-flag.sr,.lang-flag.sr-Cyrl-RS,.lang-flag.sr-Latn-RS{background-position:-16px -168px}.lang-flag.sk,.lang-flag.sk-SK{background-position:-32px -168px}.lang-flag.kk,.lang-flag.kk-KZ{background-position:0 -180px}.lang-flag.fi,.lang-flag.fi-FI,.lang-flag.sv-FI{background-position:-16px -180px}.lang-flag.zh,.lang-flag.zh-CN{background-position:-32px -180px}.lang-flag.ja,.lang-flag.ja-JP{background-position:0 -192px}.lang-flag.es-MX{background-position:-16px -192px}.checkbox-in-modal{align-items:center;display:flex;margin-top:10px}.checkbox-in-modal .right-text{margin-left:10px}.username-tip{color:#fff;display:none;height:20px;opacity:0;padding:0 10px;pointer-events:none;position:absolute;transition:opacity .1ms ease-out;z-index:900}.username-tip.active{display:block;opacity:1}.dlg-adv-options{z-index:13700}.dlg-adv-options .content-block{padding:0}.dlg-adv-options .picker-3d .picker-item{font-size:16px;padding:0;text-align:left}.dlg-adv-options .picker-center-highlight{left:0;right:0;width:100%}.dlg-macros-request .dialog-text{word-break:break-word}@keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}@-o-keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}@-moz-keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}@-webkit-keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}.doc-placeholder-container{height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:6000}.statusbar .statusbar--box-tabs>ul>.locked a{box-shadow:inset 0 2px red}.font-item .item-inner{overflow:hidden}.font-item .item-inner:after{left:16px}.cell-editor{overflow:initial}.functions-list{background-color:var(--background-primary);max-height:200px;overflow-x:hidden;overflow-y:auto;width:360px}.functions-list__mobile{box-shadow:0 10px 10px -10px rgba(0,0,0,.3);left:0;position:absolute;right:0;width:100%}.functions-list__mobile .list{margin:0}.functions-list__mobile .list ul:before{display:none}.functions-list__mobile .list .item-content{padding-left:0}.functions-list__mobile .list .item-inner{padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left) - var(--menu-list-offset))}.functions-list__mobile .list .item-title{font-size:15px}#idx-functions-list{width:350px}#idx-functions-list .popover-inner .navbars .right .link{font-weight:600}#idx-functions-list .popover-inner .navbars .navbar-bg{background:var(--background-secondary)}#idx-functions-list .popover-inner .navbars .navbar-bg:after,#idx-functions-list .popover-inner .page-function-info .navbar .navbar-bg:after{background:var(--background-menu-divider)}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner{background:var(--background-secondary)}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner .title{color:var(--text-normal)}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner .right .link{color:var(--brand-slide);font-weight:600}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner .icon-back:after{color:var(--brand-slide)}.highlight-palette{width:100%}.highlight-color{box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);flex-grow:1;margin:1px;min-height:34px;min-width:10px;position:relative}.highlight-color_active:after{border-radius:1px;box-shadow:0 0 0 1px #fff,0 0 0 4px #446995;content:" ";height:100%;position:absolute;width:100%;z-index:1}#idx-celleditor.expanded .functions-list__mobile{top:70px}.popover__functions{box-shadow:0 10px 100px rgba(0,0,0,.3)}.popover__functions .view{transition:height .2s}.popover__functions .popover-angle.on-bottom{display:none}.target-function-list{bottom:0;height:100%;left:0;position:absolute;top:0;width:0}.dropdown-list__placeholder{opacity:.6}.dropdown-list__placeholder .item-inner{border-bottom:1px solid var(--f7-list-item-border-color)}.swiper-wrapper .swiper-slide .list ul{background-color:initial}.swiper-pagination-bullet{background:var(--background-menu-divider);opacity:1}.swiper-pagination-bullet-active{background:var(--text-secondary)}.swiper-pagination-bullets{bottom:9px;position:fixed;width:100%}.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 5.5px}.preview-cell-style{background-color:var(--fill-white);background-position:50%;background-repeat:no-repeat;background-size:cover;border:.5px solid var(--background-menu-divider);border-radius:4px;height:44px;width:104px}.sharing-placeholder{height:100%}.sheet-modal .page-current-comment{padding-bottom:60px}.picker-columns{justify-content:space-around}.row-picker .col-50{color:var(--text-secondary);text-align:center}.block{font-size:12px;font-style:normal;font-weight:400;line-height:16px;margin-top:8px}.block-title+.block,.block-title+.block-header,.block-title+.card,.block-title+.list,.block-title+.timeline{margin:0}.inputs-list{margin-bottom:0}.inputs-list ul{background:var(--f7-list-bg-color);list-style:none;margin:0;padding:0;position:relative}.list input[type=password],.list input[type=text]{background:transparent}.dialog .modal-password{position:relative}.dialog .modal-password__icon{position:absolute;right:4px;top:calc(50% - 12.5px)}.dialog .modal-password .item-input-wrap{align-items:center;display:flex;justify-content:space-between}.version-history__user{border-radius:50%;border-radius:50px;color:var(--fill-white);font-size:18px;height:40px;line-height:40px;min-height:40px;min-width:40px;text-align:center;width:40px}.accept-reject .link{margin-right:20px}.beta-badge{border-radius:4px;color:var(--fill-white);font-size:12px;font-weight:400;letter-spacing:.5px;line-height:16px;padding:2px 4px}.device-ios .app-layout{--f7-navbar-link-color:var(--brand-slide);--f7-subnavbar-link-color:var(--brand-slide);--f7-navbar-text-color:var(--text-normal);--f7-navbar-title-line-height:44px;--f7-navbar-link-line-height:44px;--f7-navbar-title-font-size:17px;--f7-list-bg-color:var(--background-primary);--f7-navbar-bg-color:var(--toolbar-background);--f7-tabbar-link-inactive-color:var(--toolbar-segment);--f7-radio-active-color:var(--brand-slide);--f7-toggle-active-color:var(--brand-slide);--f7-range-bar-active-bg-color:var(--brand-slide);--f7-list-button-text-color:var(--brand-slide);--f7-list-item-border-color:var(--background-menu-divider);--f7-page-bg-color:var(--background-tertiary);--f7-list-item-title-text-color:var(--text-normal);--f7-list-item-text-text-color:var(--text-normal);--f7-list-item-subtitle-text-color:var(--text-secondary);--f7-label-text-color:var(--text-normal);--f7-list-item-after-text-color:var(--text-normal);--f7-input-text-color:var(--text-normal);--f7-block-title-text-color:var(--text-secondary);--f7-input-placeholder-color:var(--text-secondary);--f7-list-chevron-icon-color:var(--text-tertiary);--f7-searchbar-search-icon-color:var(--text-tertiary);--f7-searchbar-input-clear-button-color:var(--text-tertiary);--f7-toggle-inactive-border-color:var(--background-menu-divider);--f7-toggle-inactive-bg-color:var(--background-menu-divider);--f7-actions-button-border-color:var(--background-menu-divider);--f7-popover-bg-color:var(--background-primary);--f7-dialog-bg-color-rgb:var(--background-secondary);--f7-dialog-title-text-color:var(--text-normal);--f7-dialog-text-color:var(--text-normal);--f7-dialog-button-text-color:var(--brand-slide);--f7-dialog-border-divider-color:var(--background-menu-divider);--f7-subnavbar-border-color:var(--background-menu-divider);--f7-list-border-color:var(--background-menu-divider);--f7-picker-item-text-color:rgba(var(--text-normal),0.45);--f7-picker-item-selected-text-color:var(--text-normal);--f7-block-text-color:var(--text-secondary);--f7-theme-color-shade:var(--background-primary);--f7-fab-pressed-bg-color:var(--background-primary);--f7-input-clear-button-color:var(--text-tertiary)}.device-ios .app-layout #editor-navbar.navbar .left a+a,.device-ios .app-layout #editor-navbar.navbar .right a+a{margin-left:0}.device-ios .app-layout .navbar,.device-ios .app-layout .navbar-bg,.device-ios .app-layout .subnavbar{background-color:var(--f7-navbar-bg-color)}.device-ios .app-layout .navbar a.btn-doc-back,.device-ios .app-layout .navbar-bg a.btn-doc-back,.device-ios .app-layout .subnavbar a.btn-doc-back{width:22px}.device-ios .app-layout .navbar .title,.device-ios .app-layout .navbar-bg .title,.device-ios .app-layout .subnavbar .title{color:var(--text-normal);font-weight:600}.device-ios .app-layout .navbar .navbar-inner,.device-ios .app-layout .navbar .subnavbar-inner,.device-ios .app-layout .navbar-bg .navbar-inner,.device-ios .app-layout .navbar-bg .subnavbar-inner,.device-ios .app-layout .subnavbar .navbar-inner,.device-ios .app-layout .subnavbar .subnavbar-inner{z-index:auto}.device-ios .app-layout .navbar .sheet-close,.device-ios .app-layout .navbar-bg .sheet-close,.device-ios .app-layout .subnavbar .sheet-close{display:flex;height:44px;justify-content:center;width:44px}.device-ios .app-layout .subnavbar .icon-back{color:var(--brand-slide)}.device-ios .app-layout .popover__titled .list:first-child li:first-child>label,.device-ios .app-layout .popover__titled .list:first-child li:last-child>label,.device-ios .app-layout .popover__titled .list:first-child ul,.device-ios .app-layout .popover__titled .list:last-child li:first-child>label,.device-ios .app-layout .popover__titled .list:last-child li:last-child>label,.device-ios .app-layout .popover__titled .list:last-child ul{border-radius:0}.device-ios .app-layout .popover__titled .popover-inner>.view{border-radius:var(--f7-popover-border-radius)}.device-ios .app-layout .popover__titled .navbar-bg{backdrop-filter:none}.device-ios .app-layout .popover__titled .navbar-bg:after{background:var(--background-menu-divider)}.device-ios .app-layout .popover__titled .list:last-child li:last-child:after{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-navbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%}.device-ios .app-layout .popover li:last-child .segmented a:first-child{border-radius:var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius)}.device-ios .app-layout .popover li:last-child .segmented a:last-child{border-radius:0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0}.device-ios .app-layout .popover-arrow:after{background:rgba(0,0,0,.9)}.device-ios .app-layout .list .item-content .color-preview{background:var(--fill-white);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);box-sizing:border-box;display:inline-block;height:8px;margin-top:21px;width:22px}.device-ios .app-layout .list .item-content .item-after .color-preview{height:30px;margin-top:-3px;width:75px}.device-ios .app-layout .list .item-inner{padding-top:7px}.device-ios .app-layout .list .item-inner .item-after .after-start{margin:0 5px}.device-ios .app-layout .list .item-inner .item-after .segmented{margin-left:10px;min-width:90px}.device-ios .app-layout .list .buttons .item-inner{align-items:stretch;padding-bottom:0;padding-top:0}.device-ios .app-layout .list .buttons .item-inner>.row{align-items:stretch;width:100%}.device-ios .app-layout .list .buttons .item-inner>.row .button{align-items:center;border:none;border-radius:0;display:flex;flex:1;font-size:17px;height:inherit;justify-content:center}.device-ios .app-layout .list .list-input-right input{text-align:right}.device-ios .app-layout .links-list a:after,.device-ios .app-layout .list .item-inner:after,.device-ios .app-layout .simple-list li:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.device-ios .app-layout .tab-buttons{align-self:center;display:flex;flex-wrap:nowrap;width:100%}.device-ios .app-layout .tab-buttons .tab-link{-webkit-box-flex:1;border:1px solid var(--toolbar-segment);color:var(--brand-slide);cursor:pointer;display:block;font-family:inherit;font-size:14px;font-weight:600;height:29px;line-height:26px;margin:0;outline:0;overflow:hidden;padding:0 1px;position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;width:100%}.device-ios .app-layout .tab-buttons .tab-link:first-child{border-left-style:solid;border-left-width:1px;border-radius:5px 0 0 5px}.device-ios .app-layout .tab-buttons .tab-link:last-child{border-radius:0 5px 5px 0}.device-ios .app-layout .tab-buttons .tab-link.tab-link-active{background:var(--toolbar-segment);color:var(--brand-text-on-brand)}.device-ios .app-layout .tab-buttons .tab-link.tab-link-active i.icon{background-color:var(--brand-text-on-brand)}.device-ios .app-layout .button{background:0 0;border:1px solid var(--brand-slide);box-sizing:border-box;color:var(--brand-slide);cursor:pointer;display:block;font-family:inherit;font-size:14px;height:29px;line-height:27px;margin:0;outline:0;overflow:hidden;padding:0 10px;position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.device-ios .app-layout .button-fill{background-color:var(--background-primary);color:var(--brand-slide)}.device-ios .app-layout .button-red{background-color:var(--background-primary);color:var(--text-error)}.device-ios .app-layout .buttons-list li{border:0;border-radius:0;box-shadow:none;font-size:17px;height:43px;min-height:43px;padding:0;text-transform:none}.device-ios .app-layout .button-red .list-button{color:var(--text-error)}.device-ios .app-layout .list-button{position:static}.device-ios .app-layout .block-title{color:#6d6d72;font-size:14px;line-height:1;margin:35px 15px 10px;overflow:hidden;position:relative;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.device-ios .app-layout .shapes .page-content{background:var(--fill-white)}.device-ios .app-layout .dialog{background-color:var(--f7-dialog-bg-color-rgb)}.device-ios .app-layout #color-picker .right-block .button-round .icon{height:30px;width:30px}.device-ios .app-layout .content-block{color:#6d6d72}.device-ios .app-layout #add-chart .page-content,.device-ios .app-layout #add-chart.page-content,.device-ios .app-layout #add-shape .page-content,.device-ios .app-layout #add-shape.page-content,.device-ios .app-layout #add-slide .page-content,.device-ios .app-layout #add-slide.page-content,.device-ios .app-layout #add-table .page-content,.device-ios .app-layout #add-table.page-content,.device-ios .app-layout .dataview .page-content,.device-ios .app-layout .dataview.page-content{background-color:var(--background-tertiary)}.device-ios .app-layout input[type=number]:-moz-placeholder,.device-ios .app-layout input[type=number]:-ms-input-placeholder,.device-ios .app-layout input[type=number]::-moz-placeholder,.device-ios .app-layout input[type=number]::-webkit-input-placeholder,.device-ios .app-layout input[type=number]::placeholder{color:#40865c}.device-ios .app-layout .regional-settings .item-title-row{align-items:center;display:flex;justify-content:flex-start}.device-ios .app-layout .regional-settings .item-title-row .item-title{margin-left:20px;white-space:normal}.device-ios .app-layout .navbar .searchbar{background:var(--f7-navbar-bg-color)}.device-ios .app-layout .navbar .searchbar-input-wrap{height:28px;margin-right:10px;position:relative}.device-ios .app-layout .navbar .buttons-row-replace a{color:var(--brand-slide)}.device-ios .app-layout .searchbar input{appearance:none;background-color:var(--background-button);border:none;border-radius:5px;box-sizing:border-box;color:var(--text-normal);display:block;font-family:inherit;font-size:14px;font-weight:400;height:100%;padding:0 36px 0 28px;width:100%}.device-ios .app-layout .searchbar input::placeholder{color:var(--text-tertiary)}.device-ios .app-layout .searchbar .number-search-results{color:var(--text-tertiary);font-size:13px;font-weight:400;line-height:18px;position:absolute;right:26px;top:4.5px;z-index:100}.device-ios .app-layout .searchbar-inner__left{justify-content:center;margin-right:10px}.device-ios .app-layout .searchbar-inner__right .buttons-row a.next{margin-left:15px}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__right{width:28%}@media (max-width:550px){.device-ios .app-layout .navbar .searchbar-input-wrap{margin-right:0}.device-ios .app-layout .searchbar-expandable.searchbar-enabled{top:0}.device-ios .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__center{flex-direction:column}.device-ios .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__right{flex-direction:column-reverse;margin-left:10px}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace{height:88px}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner{height:100%}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__center .searchbar-input-wrap{margin:8px 0}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__right{height:100%;justify-content:space-between;width:auto}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__right .buttons-row-replace{height:50%}}.device-ios .app-layout .actions-button{--f7-actions-button-border-color:var(--background-menu-divider);background:var(--background-secondary)}.device-ios .app-layout .actions-button-text{color:var(--text-normal);font-size:20px;text-overflow:ellipsis;white-space:normal}.device-ios .app-layout input.modal-text-input{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;background:var(--background-primary);border:1px solid var(--text-tertiary);border-radius:0;box-shadow:0 0 0 transparent;box-sizing:border-box;display:block;font-family:inherit;font-size:14px;height:26px;margin:15px 0 0;padding:0 5px;width:100%}.device-ios .app-layout .font-item .item-content{padding-left:0}.device-ios .app-layout .edit-comment-popup .navbar .title{line-height:normal}.device-ios .app-layout .version-history__title{color:var(--text-secondary);font-size:13px;font-style:normal;font-weight:400;line-height:18px;margin-bottom:4px;margin-top:16px}.device-ios .app-layout .version-history__btn{background:transparent;border:0;color:var(--brand-slide);font-size:15px;font-style:normal;font-weight:600;letter-spacing:-.24px;line-height:20px;margin-top:22px;outline:none;padding:0;text-transform:uppercase;width:auto}.device-ios .app-layout .version-history__list ul{background:var(--background-primary)}.device-ios .app-layout .version-history__list .item-title{color:var(--text-normal);font-size:13px;font-weight:600;letter-spacing:-.08px;line-height:18px}.device-ios .app-layout .version-history__list .item-inner,.device-ios .app-layout .version-history__list .item-media{padding-bottom:10px;padding-top:10px}.device-ios .app-layout .version-history__list .item-link .item-title-row:before{display:none}.device-ios .app-layout .version-history__list .item-subtitle{color:var(--text-secondary);font-size:11px;font-style:normal;font-weight:400;letter-spacing:.06px;line-height:13px;margin-top:3px}.device-ios .app-layout .version-history__item_active{background-color:var(--canvas-ruler-margins-background)}.device-ios .app-layout .btn-close-history{color:var(--brand-slide);font-size:17px;font-style:normal;font-weight:400;letter-spacing:-.41px;line-height:22px;margin-left:10px}.device-ios .app-layout .beta-badge{background-color:#ff9f0a;margin-left:10px}.device-android .app-layout{--f7-navbar-shadow-image:none;--f7-theme-color:var(--brand-slide);--f7-navbar-bg-color:var(--toolbar-background);--f7-navbar-link-color:var(--fill-white);--f7-navbar-text-color:var(--fill-white);--f7-navbar-height:56px;--f7-list-bg-color:var(--background-primary);--f7-subnavbar-bg-color:var(--toolbar-background);--f7-subnavbar-link-color:var(--toolbar-icons);--f7-subnavbar-text-color:var(--fill-white);--f7-subnavbar-height:56px;--f7-radio-active-color:var(--brand-slide);--f7-range-bar-active-bg-color:var(--brand-slide);--f7-range-knob-color:var(--brand-slide);--f7-range-knob-size:16px;--f7-list-item-after-text-color:var(--text-normal);--f7-link-highlight-color:transparent;--f7-link-touch-ripple-color:hsla(0,0%,100%,.1);--f7-actions-bg-color:var(--background-secondary);--f7-actions-button-border-color:var(--background-menu-divider);--f7-popover-bg-color:var(--background-secondary);--f7-dialog-bg-color:var(--background-secondary);--f7-dialog-text-color:var(--text-secondary);--f7-dialog-title-text-color:var(--text-normal);--f7-dialog-button-text-color:var(--brand-slide);--f7-picker-item-text-color:rgba(var(--text-normal),0.45);--f7-picker-item-selected-text-color:var(--text-normal);--f7-input-bg-color:var(--background-primary);--f7-input-placeholder-color:var(--text-secondary);--f7-input-text-color:var(--text-normal);--f7-block-text-color:var(--text-secondary);--f7-dialog-border-radius:0;--f7-sheet-border-radius:0;--f7-popover-border-radius:4px;--f7-actions-border-radius:0;--f7-box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);--f7-popover-box-shadow:var(--f7-box-shadow);--f7-toggle-active-bg-color:var(--brand-slide);--f7-toggle-active-border-color:var(--brand-slide);--f7-navbar-title-margin-left:20px;--f7-navbar-title-margin-right:20px;--f7-input-focused-border-color:var(--brand-slide);--f7-label-focused-text-color:var(--brand-slide)}.device-android .app-layout .button{--f7-touch-ripple-color:transparent}.device-android .app-layout .segmented .button{--f7-touch-ripple-color:var(--f7-list-link-pressed-bg-color)}.device-android .app-layout .navbar{--f7-touch-ripple-color:hsla(0,0%,100%,.1)}.device-android .app-layout .navbar .sheet-close{display:flex;height:56px;justify-content:center;width:56px}.device-android .app-layout .navbar-inner{background:var(--f7-navbar-bg-color);background-color:var(--f7-navbar-bg-color,var(--f7-bars-bg-color));background-image:var(--f7-navbar-bg-image,var(--f7-bars-bg-image))}.device-android .app-layout .page.page-with-subnavbar.page-with-logo .page-content{--f7-page-navbar-offset:var(--f7-navbar-height)}.device-android .app-layout .page{--f7-text-color:var(--text-normal);--f7-list-item-title-text-color:var(--text-normal);--f7-list-item-text-text-color:var(--text-normal);--f7-list-item-subtitle-text-color:var(--text-secondary);--f7-block-title-text-color:var(--text-secondary);--f7-label-text-color:var(--text-normal);--f7-page-bg-color:var(--background-tertiary);--f7-list-item-border-color:var(--background-menu-divider);--f7-list-chevron-icon-color:var(--text-tertiary);--f7-actions-button-text-color:var(--text-normal);--f7-subnavbar-border-color:var(--background-menu-divider);--f7-list-border-color:var(--background-menu-divider)}.device-android .app-layout .add-popup .view .add-image ul:after,.device-android .app-layout .add-popup .view .inputs-list ul:after{display:none}.device-android .app-layout .coauth__sheet{max-height:65%}.device-android .app-layout .segmented .decrement,.device-android .app-layout .segmented .increment{border:none;border-radius:0;display:flex;height:32px;margin-left:0;min-width:40px}.device-android .app-layout .segmented .decrement i.icon-expand-down,.device-android .app-layout .segmented .increment i.icon-expand-down{background:var(--brand-slide)}.device-android .app-layout .segmented label{color:var(--text-normal);line-height:32px;margin:0 5px}.device-android .app-layout .button{--f7-button-text-color:var(--brand-slide);appearance:none;background:0 0;border-radius:2px;box-sizing:border-box;color:var(--brand-slide);cursor:pointer;display:block;font-family:inherit;font-size:14px;height:36px;line-height:36px;margin:0;min-width:64px;outline:0;overflow:hidden;padding:0 8px;position:relative;text-align:center;text-overflow:ellipsis;text-transform:uppercase;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition-duration:.3s;transition-duration:.3s;white-space:nowrap}.device-android .app-layout .button-fill{background-color:initial;color:var(--brand-text-on-brand)}.device-android .app-layout .button-raised{box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)}.device-android .app-layout .button-red{background-color:var(--text-error);color:var(--brand-text-on-brand)}.device-android .app-layout .buttons-list ul{background-color:var(--background-tertiary)}.device-android .app-layout .buttons-list ul:after,.device-android .app-layout .buttons-list ul:before{display:none}.device-android .app-layout .buttons-list ul li{border-radius:2px;color:var(--fill-white);font-size:14px;height:36px;margin:20px 16px;min-height:36px;text-transform:uppercase}.device-android .app-layout .table-presets .button{min-width:0}.device-android .app-layout .button-fill .list-button{background-color:var(--brand-slide);border-radius:2px;color:var(--brand-text-on-brand);font-size:14px;font-weight:500;height:36px;line-height:36px;margin:0;text-align:center;text-transform:uppercase}.device-android .app-layout .button-raised .list-button{box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)}.device-android .app-layout .button-red .list-button{background-color:var(--text-error)}.device-android .app-layout .tab-buttons{display:flex;height:100%;justify-content:space-between;position:relative;width:100%}.device-android .app-layout .tab-buttons .tab-link{align-items:center;box-sizing:border-box;color:hsla(0,0%,100%,.7);font-size:14px;font-weight:500;height:100%;justify-content:center;padding-left:0;padding-right:0;text-transform:uppercase}.device-android .app-layout .tab-buttons .tab-link i.icon{opacity:.5}.device-android .app-layout .tab-buttons .tab-link.tab-link-active{color:var(--fill-white)}.device-android .app-layout .tab-buttons .tab-link.tab-link-active i.icon{background-color:var(--fill-white);opacity:1}.device-android .app-layout .tab-buttons .tab-link-highlight{--f7-tabbar-link-active-border-color:var(--toolbar-icons);bottom:0;height:3px;left:0;position:absolute}.device-android .app-layout .list.inputs-list{margin:0}.device-android .app-layout .list.inputs-list .item-input.item-content{padding-left:0}.device-android .app-layout .list.inputs-list .item-input .item-inner,.device-android .app-layout .list.inputs-list .item-link .item-inner{display:block}.device-android .app-layout .list.inputs-list .item-input .item-inner .item-label,.device-android .app-layout .list.inputs-list .item-input .item-inner .item-title,.device-android .app-layout .list.inputs-list .item-link .item-inner .item-label,.device-android .app-layout .list.inputs-list .item-link .item-inner .item-title{font-size:12px;width:100%}.device-android .app-layout .list.inputs-list .item-input .item-inner .item-input-wrap,.device-android .app-layout .list.inputs-list .item-link .item-inner .item-input-wrap{margin-left:0}.device-android .app-layout .list .buttons{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;min-height:48px;width:100%}.device-android .app-layout .list .buttons .item-content{width:100%}.device-android .app-layout .list .buttons .item-content .item-inner{padding-bottom:0;padding-top:0}.device-android .app-layout .list .buttons .item-content .item-inner .row{--f7-cols-per-row:1;align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.device-android .app-layout .list .buttons .item-content .item-inner .row .button{align-items:center;display:flex;flex:1;font-size:17px;justify-content:center;margin-left:5px}.device-android .app-layout .list .buttons .item-content .item-inner .row .button:first-child{margin-left:0}.device-android .app-layout .list .item-content .color-preview{background-color:var(--fill-white);border-radius:4px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);height:30px;margin-top:-3px;width:30px}.device-android .app-layout .list .item-content .color-preview.auto{background-color:#000}.device-android .app-layout .item-input:not(.item-input-outline) .item-content:before,.device-android .app-layout .item-input:not(.item-input-outline).item-content:before{background:transparent}.device-android .app-layout .links-list a:after,.device-android .app-layout .list .item-inner:after,.device-android .app-layout .simple-list li:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.device-android .app-layout .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,.device-android .app-layout .list:not(.inset):not(.inset-md):not(.menu-list) .media-item>.item-link,.device-android .app-layout .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,.device-android .app-layout .media-list:not(.inset):not(.inset-md):not(.menu-list) li>.item-link{border-radius:0}.device-android .app-layout #color-picker .right-block .button-round{background-color:var(--brand-slide)}.device-android .app-layout .regional-settings .list .item-inner{margin-left:16px}.device-android .app-layout .regional-settings .list .item-title-row{align-items:center;display:flex;flex-direction:row-reverse;justify-content:space-between;width:100%}.device-android .app-layout .regional-settings .list .item-title-row .item-title{white-space:normal}.device-android .app-layout .searchbar-inner__center{flex-wrap:wrap}.device-android .app-layout .navbar .searchbar-input-wrap{height:32px;margin:4px 0}.device-android .app-layout .navbar .navbar-inner{overflow:initial}.device-android .app-layout .navbar .left{margin:0}.device-android .app-layout .navbar .title{margin-left:var(--f7-navbar-title-margin-left);margin-right:var(--f7-navbar-title-margin-left)}.device-android .app-layout .searchbar input{appearance:none;background-color:initial;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='%23fff'%3E%3Cpath d='M15.5 14h-.79l-.28-.27A6.471 6.471 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/%3E%3Cpath fill='none' d='M0 0h24v24H0z'/%3E%3C/svg%3E");background-position:0;background-repeat:no-repeat;background-size:24px 24px;border:none;border-bottom:1px solid var(--fill-white);border-radius:0;box-sizing:border-box;color:var(--fill-white);display:block;font-family:inherit;font-size:16px;font-weight:400;height:100%;opacity:1;padding:0 40px 0 24px;transition-duration:.3s;width:100%}.device-android .app-layout .searchbar input::placeholder{color:var(--fill-white)}.device-android .app-layout .searchbar .input-clear-button{height:18px;margin:0;top:7px;width:18px}.device-android .app-layout .searchbar .input-clear-button:after{color:var(--fill-white);font-size:19px;line-height:19px}.device-android .app-layout .searchbar .number-search-results{font-size:16px;font-weight:400;line-height:24px;position:absolute;right:26px;top:4px}.device-android .app-layout .searchbar-icon:after{color:var(--fill-white);font-size:19px}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled{top:0}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled .searchbar-inner{height:100%;padding:0}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__center{flex-direction:column}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__right{flex-direction:column-reverse}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled.replace{height:96px}.device-android .app-layout .navbar a.link{padding:0 16px}.device-android .app-layout .navbar a.link.searchbar-enable i.icon-search{background-color:var(--toolbar-icons)}.device-android .app-layout .navbar a.icon-only{height:56px;width:auto}.device-android .app-layout .navbar .buttons-row-replace a{color:var(--fill-white);padding:0}.device-android .app-layout .navbar .searchbar .buttons-row{align-self:flex-start}@media (max-width:550px){.device-android .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__left{margin-right:33px}}.device-android .app-layout .actions-button-text{color:var(--text-normal);cursor:pointer;font-size:16px;line-height:48px}@media (min-width:496px){.device-android .app-layout .actions-modal{left:auto;margin-left:0;width:100%}}.device-android .app-layout input.modal-text-input{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;background:#fff;border:none;box-shadow:none;box-sizing:border-box;display:block;font-family:inherit;font-size:16px;height:36px;margin:15px 0 0;padding:0;-webkit-transition-duration:.2s;transition-duration:.2s;width:100%}.device-android .app-layout .input-field .inputs-list{margin:15px 0 0}.device-android .app-layout .input-field .inputs-list ul{background:none}.device-android .app-layout .input-field .inputs-list ul:after,.device-android .app-layout .input-field .inputs-list ul:before{display:none}.device-android .app-layout .input-field .inputs-list .item-inner,.device-android .app-layout .input-field .inputs-list .item-input{margin:0;padding:0}.device-android .app-layout .font-item .item-radio:not(.item-radio-icon-end)>.icon-radio{margin-right:0}.device-android .app-layout .navbar-dropdown-list .navbar-inner,.device-android .app-layout .navbar-link-settings .navbar-inner{background:var(--background-primary)}.device-android .app-layout .navbar-dropdown-list .navbar-inner .icon-back,.device-android .app-layout .navbar-dropdown-list .title,.device-android .app-layout .navbar-dropdown-list a,.device-android .app-layout .navbar-link-settings .navbar-inner .icon-back,.device-android .app-layout .navbar-link-settings .title,.device-android .app-layout .navbar-link-settings a{color:var(--text-normal)}.device-android .app-layout .popover{box-shadow:var(--f7-box-shadow)}.device-android .app-layout .popover.popover__titled .popover-arrow:after{background:var(--toolbar-background)}.device-android .app-layout .popover.document-menu .popover-arrow:after,.device-android .app-layout .popover.popover__functions .popover-arrow:after{background:var(--background-secondary)}.device-android .app-layout .page-version-history{--f7-page-bg-color:var(--background-primary)}.device-android .app-layout .version-history__title{color:var(--brand-slide);font-size:14px;font-style:normal;font-weight:500;line-height:20px;margin-bottom:4px;margin-top:16px}.device-android .app-layout .version-history__btn{background:var(--background-primary);border:0;border-radius:6px;box-shadow:0 .25px 1px rgba(0,0,0,.039),0 .85px 3px rgba(0,0,0,.19);color:var(--brand-slide);font-size:16px;font-style:normal;font-weight:500;letter-spacing:.25px;line-height:20px;margin-top:10px;padding:6px 20px;width:auto}.device-android .app-layout .version-history__list ul:after,.device-android .app-layout .version-history__list ul:before{display:none}.device-android .app-layout .version-history__list .item-title{color:var(--text-normal);font-size:16px;font-style:normal;font-weight:400;letter-spacing:.15px;line-height:24px}.device-android .app-layout .version-history__list .item-inner{padding-bottom:10px;padding-top:10px}.device-android .app-layout .version-history__list .item-inner:before{background-color:var(--background-menu-divider);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.device-android .app-layout .version-history__list .item-media{max-width:40px;min-width:40px;padding-bottom:12px;padding-top:12px}.device-android .app-layout .version-history__list .item-link .item-title-row:before{display:none}.device-android .app-layout .version-history__list .item-subtitle{color:var(--text-secondary);font-size:12px;font-style:normal;font-weight:400;letter-spacing:.5px;line-height:16px}.device-android .app-layout .version-history__item_active{background-color:var(--background-tertiary)}.device-android .app-layout .btn-close-history{color:var(--toolbar-icons);font-size:16px;font-style:normal;font-weight:400;letter-spacing:.15px;line-height:24px;margin-left:16px}.device-android .app-layout .beta-badge{background-color:var(--brand-secondary);margin-left:8px}.device-ios .theme-type-dark i.icon.icon-logo{background:url(../../../presentationeditor/mobile/resources/img/header/logo-android.svg) no-repeat 50%}.device-ios i.icon.icon_mask{background-color:#fff}.device-ios i.icon.icon-logo{background:url(../../../presentationeditor/mobile/resources/img/header/logo-ios.svg) no-repeat 50%;height:14px;width:100px}.device-ios i.icon.icon-prev{background-color:var(--brand-slide);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='m16 20.5-1 1L4.5 11 15 .5l1 1L6.6 11l9.4 9.5z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-prev:after{display:none}.device-ios i.icon.icon-next{background-color:var(--brand-slide);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M15.5 11 6 1.5 7.1.4 17.5 11 7.1 21.5l-1.1-1 9.5-9.5z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-next:after{display:none}.device-ios i.icon.icon-edit{background-color:var(--brand-slide);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M0 20h22v1H0v-1zM19.3 5.3 6.1 18.4l-1.5-1.5L17.8 3.8l-.7-.7L3.5 16.7 3 20l3.3-.5L19.9 5.9zM20.5 5.3 22 3.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5 2.8 2.8z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-show-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='25'%3E%3Cpath fill-rule='evenodd' d='M5.625 12.5A8.488 8.488 0 0 0 12.5 16a8.487 8.487 0 0 0 6.875-3.5A8.487 8.487 0 0 0 12.5 9a8.488 8.488 0 0 0-6.875 3.5Zm14.955 0A9.494 9.494 0 0 0 12.5 8a9.494 9.494 0 0 0-8.08 4.5A9.494 9.494 0 0 0 12.5 17a9.494 9.494 0 0 0 8.08-4.5Z' clip-rule='evenodd'/%3E%3Cpath d='M12.5 10a2.5 2.5 0 0 1 2.502 2.5 2.502 2.502 0 0 1-2.502 2.511 2.5 2.5 0 0 1-2.489-2.511 2.499 2.499 0 0 1 2.49-2.5Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-hide-password,.device-ios i.icon.icon-show-password{background-color:var(--text-secondary);height:25px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:25px}.device-ios i.icon.icon-hide-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='25'%3E%3Cpath fill-rule='evenodd' d='M11.356 15.765a8.487 8.487 0 0 0 8.019-3.424c-.751-1.03-1.209-1.584-2.339-2.19l.723-.74c1.375.787 1.987 1.587 2.82 2.93a9.494 9.494 0 0 1-8.079 4.5 9.534 9.534 0 0 1-1.99-.208l.846-.868Zm-3.228-1.133a8.546 8.546 0 0 1-2.503-2.29 8.488 8.488 0 0 1 6.875-3.5c.598 0 .719-.018 1.297.069l.924-.849c-.83-.238-1.303-.22-2.206-.22H12.5a9.494 9.494 0 0 0-8.08 4.5 9.549 9.549 0 0 0 2.962 3.004l.746-.714Z' clip-rule='evenodd'/%3E%3Cpath d='M16.031 9.671a20.396 20.396 0 0 0-1.01-.397l-5.863 5.885a8.45 8.45 0 0 0 1.033.365l5.84-5.853Z'/%3E%3Cpath d='M16.79 8.91c-.311-.146-.65-.298-.974-.434l-.794.798c.336.122.687.26 1.01.397l.758-.76Z'/%3E%3Cpath d='m18.345 7.353-.72-.692-1.809 1.815c.324.136.663.288.974.435l1.555-1.558ZM9.395 16.322a9.443 9.443 0 0 1-.99-.406l-1.728 1.733.705.69 2.013-2.017Z'/%3E%3Cpath d='M10.191 15.524a8.45 8.45 0 0 1-1.033-.365l-.754.757c.32.153.651.289.99.406l.797-.798Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-return{background-color:var(--brand-slide);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' d='m11.5 7.793 2.854 2.853-.707.708L12 9.707V16h2.5v1H11V9.707l-1.646 1.647-.708-.708L11.5 7.793Z'/%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M1 4a1 1 0 0 1 1-1h7.75l2 2H22a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4Zm1 16V4h7.25l2 2H22v14H2Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon_mask{background-color:var(--text-normal)}.device-android i.icon.icon-logo{background:url(../../../presentationeditor/mobile/resources/img/header/logo-android.svg) no-repeat 50%;height:14px;width:100px}.device-android i.icon.icon-prev{background-color:var(--brand-slide);height:20px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M5.1 10.9 13.9 2 16 4.1l-6.8 7 6.8 6.8-2.1 2.1-8.8-8.8-.1-.1z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:20px}.device-android i.icon.icon-prev:after{display:none}.device-android i.icon.icon-next{background-color:var(--brand-slide);height:20px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M16.9 10.9 8.1 2 6 4.1l6.8 7L6 17.9 8.1 20l8.8-8.8.1-.1z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:20px}.device-android i.icon.icon-next:after{display:none}.device-android i.icon.icon-show-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M9.894 9.89C10.486 9.298 11.189 9 12 9c.811 0 1.514.297 2.106.89.593.594.89 1.297.89 2.11s-.297 1.516-.89 2.11c-.592.593-1.295.89-2.106.89-.811 0-1.514-.297-2.106-.89-.593-.594-.89-1.297-.89-2.11 0-.812.297-1.516.89-2.11Zm-1.451 5.672c.998.97 2.184 1.454 3.557 1.454 1.373 0 2.543-.485 3.51-1.453 1-1 1.499-2.188 1.499-3.563s-.5-2.547-1.498-3.516c-.968-1-2.138-1.5-3.511-1.5-1.373 0-2.559.5-3.557 1.5-.968.97-1.452 2.141-1.452 3.516s.484 2.563 1.452 3.563Zm-3.137-9C7.304 5.188 9.535 4.5 12 4.5s4.697.688 6.694 2.063C20.69 7.938 22.126 9.75 23 12c-.874 2.25-2.31 4.063-4.306 5.438C16.697 18.813 14.465 19.5 12 19.5s-4.696-.687-6.694-2.062C3.31 16.063 1.874 14.25 1 12c.874-2.25 2.31-4.062 4.306-5.437Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-hide-password,.device-android i.icon.icon-show-password{background-color:var(--text-secondary);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-hide-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M11.883 9.005h.14c.813 0 1.517.297 2.111.891.595.595.892 1.298.892 2.111v.188l-3.143-3.19Zm-4.316.797c-.375.751-.563 1.486-.563 2.205 0 1.377.485 2.565 1.454 3.566 1.001.97 2.19 1.454 3.566 1.454.719 0 1.454-.187 2.204-.563l-1.548-1.548c-.25.063-.469.094-.656.094-.814 0-1.517-.297-2.111-.892-.595-.594-.892-1.297-.892-2.11 0-.188.032-.407.094-.657L7.567 9.802ZM2.032 4.267 3.299 3l17.73 17.733L19.764 22c-.156-.156-.656-.641-1.5-1.454l-1.877-1.877c-1.345.563-2.799.845-4.362.845-2.471 0-4.707-.688-6.708-2.065-2.002-1.376-3.44-3.19-4.316-5.442.782-1.939 2.033-3.596 3.753-4.972L3.158 5.44a139.128 139.128 0 0 0-1.126-1.173Zm9.992 2.72c-.626 0-1.236.126-1.83.376L8.036 5.205c1.22-.47 2.549-.704 3.988-.704 2.47 0 4.69.688 6.66 2.064 2.002 1.377 3.44 3.19 4.316 5.442a12.231 12.231 0 0 1-3.424 4.739l-2.909-2.909c.25-.594.376-1.204.376-1.83 0-1.376-.5-2.549-1.501-3.518-.97-1-2.143-1.501-3.518-1.501Z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-collaboration{background-color:var(--toolbar-icons);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill-rule='evenodd' clip-path='url(%23a)' clip-rule='evenodd'%3E%3Cpath d='M7.5 14c-2.823 0-4.989 1.407-6.099 3.257-.56.935-.4 1.305-.299 1.433.154.194.508.31.87.31H7.5v1H1.972c-.47 0-1.216-.134-1.655-.69-.49-.622-.412-1.502.227-2.567C1.834 14.593 4.324 13 7.5 13v1Zm0-1c3.177 0 5.639 1.593 6.929 3.743.639 1.065.716 1.945.226 2.567-.438.556-1.184.69-1.655.69H7.5v-1H13c.363 0 .717-.116.87-.31.101-.128.262-.498-.299-1.433C12.461 15.407 10.323 14 7.5 14v-1Z'/%3E%3Cpath d='M15 20h7c.471 0 1.217-.134 1.656-.69.49-.622.413-1.502-.226-2.567C22.14 14.593 19.677 13 16.5 13c-1.293 0-2.322.164-3.354.623.364.28.64.494.997.732A7.774 7.774 0 0 1 16.502 14c2.823 0 4.96 1.407 6.071 3.257.561.935.4 1.305.299 1.433-.153.194-.508.31-.87.31H16.5a1.466 1.466 0 0 1-.343.478c-.444.415-.738.522-1.157.522ZM7.5 11C8.76 11 10 9.786 10 8S8.76 5 7.5 5 5 6.214 5 8s1.24 3 2.5 3Zm0 1c1.933 0 3.5-1.79 3.5-4S9.433 4 7.5 4 4 5.79 4 8s1.567 4 3.5 4ZM17 11c.965 0 2-.97 2-2.5S17.965 6 17 6c-.965 0-2 .97-2 2.5s1.035 2.5 2 2.5Zm0 1c1.657 0 3-1.567 3-3.5S18.657 5 17 5s-3 1.567-3 3.5 1.343 3.5 3 3.5Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-back{color:var(--toolbar-icons)}.device-android .navbar i.icon.icon-edit{background-color:var(--toolbar-icons);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M0 20h22v1H0v-1zM17.1 3.1 3.5 16.7 3 20l3.3-.5L19.9 5.9zM20.5 5.3 22 3.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5 2.8 2.8z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-close{background-color:var(--text-normal);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M18.984 6.422 13.406 12l5.578 5.578-1.406 1.406L12 13.406l-5.578 5.578-1.406-1.406L10.594 12 5.016 6.422l1.406-1.406L12 10.594l5.578-5.578 1.406 1.406Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-done-disabled{background-color:var(--text-tertiary)}.device-android .navbar i.icon.icon-done,.device-android .navbar i.icon.icon-done-disabled{height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='m9 16.219 10.594-10.64L21 6.983l-12 12-5.578-5.578L4.782 12 9 16.219Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-done{background-color:var(--brand-slide)}.device-android .navbar i.icon.icon-search{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M16 16.708a9 9 0 1 1 .707-.707l5.647 5.645-.708.708-5.645-5.646ZM18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-search,.device-android .navbar i.icon.icon-version-history{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-version-history{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M12 6h2v6.845l4.196 2.423-1 1.732L12 14V6Z'/%3E%3Cpath d='M22 12a9 9 0 0 1-15.364 6.364l-.708.707A9.969 9.969 0 0 0 13 22c5.523 0 10-4.477 10-10S18.523 2 13 2C7.477 2 3 6.477 3 12h1a9 9 0 0 1 18 0Z'/%3E%3Cpath d='m1.5 10.5 2 2 2-2'/%3E%3C/svg%3E")}i.icon.icon-paste{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M5 2H0v18h9v4h15V7h-5V2h-5v1h4v4H9v12H1V3h4V2Zm5 6h13v15H10V8Z' clip-rule='evenodd'/%3E%3Cpath d='M5 0h9v5H5V0Z'/%3E%3Cpath fill-rule='evenodd' d='M21 12h-9v-1h9v1ZM21 16h-9v-1h9v1ZM21 20h-9v-1h9v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-copy,i.icon.icon-paste{background-color:var(--text-normal);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-copy{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M1 1h14v6h1V0H0v17h8v-1H1V1Z'/%3E%3Cpath fill-rule='evenodd' d='M23 8H9v15h14V8ZM8 7v17h16V7H8ZM13 5H3V4h10v1ZM8 9H3V8h5v1ZM8 13H3v-1h5v1Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='M21 12H11v-1h10v1ZM21 16H11v-1h10v1ZM21 20H11v-1h10v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-cut{background-color:var(--text-normal);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill-rule='evenodd' d='M3.224 22.27c1.291.857 3.303.448 4.435-1.257 1.132-1.706.727-3.719-.564-4.575-1.291-.857-3.303-.448-4.435 1.257-1.132 1.706-.727 3.719.564 4.575Zm-.553.834c1.841 1.221 4.447.532 5.821-1.538 1.375-2.071.996-4.74-.844-5.962-1.841-1.221-4.447-.533-5.821 1.538-1.375 2.071-.996 4.74.844 5.962ZM20.916 22.27c-1.291.857-3.303.448-4.435-1.257-1.132-1.706-.727-3.719.564-4.575 1.291-.857 3.303-.448 4.435 1.257 1.132 1.706.727 3.719-.564 4.575Zm.553.834c-1.841 1.221-4.447.532-5.821-1.538-1.374-2.071-.996-4.74.844-5.962 1.841-1.221 4.447-.533 5.822 1.538 1.374 2.071.995 4.74-.845 5.962Z' clip-rule='evenodd'/%3E%3Cpath d='m16.492 15.604-2.588-3.13L19.955.676a.436.436 0 0 0-.228-.595c-.285-.092-.628 0-.742.183L12.023 11.42 5.176.264c-.115-.229-.457-.32-.742-.229-.286.092-.4.366-.286.595L10.2 12.428l-2.552 3.176L9.229 18l2.794-4.52L14.911 18l1.581-2.396Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-next:after,i.icon.icon-prev:after{content:none}i.icon.icon-collaboration{background-color:var(--brand-slide);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill-rule='evenodd' clip-path='url(%23a)' clip-rule='evenodd'%3E%3Cpath d='M7.5 14c-2.823 0-4.989 1.407-6.099 3.257-.56.935-.4 1.305-.299 1.433.154.194.508.31.87.31H7.5v1H1.972c-.47 0-1.216-.134-1.655-.69-.49-.622-.412-1.502.227-2.567C1.834 14.593 4.324 13 7.5 13v1Zm0-1c3.177 0 5.639 1.593 6.929 3.743.639 1.065.716 1.945.226 2.567-.438.556-1.184.69-1.655.69H7.5v-1H13c.363 0 .717-.116.87-.31.101-.128.262-.498-.299-1.433C12.461 15.407 10.323 14 7.5 14v-1Z'/%3E%3Cpath d='M15 20h7c.471 0 1.217-.134 1.656-.69.49-.622.413-1.502-.226-2.567C22.14 14.593 19.677 13 16.5 13c-1.293 0-2.322.164-3.354.623.364.28.64.494.997.732A7.774 7.774 0 0 1 16.502 14c2.823 0 4.96 1.407 6.071 3.257.561.935.4 1.305.299 1.433-.153.194-.508.31-.87.31H16.5a1.466 1.466 0 0 1-.343.478c-.444.415-.738.522-1.157.522ZM7.5 11C8.76 11 10 9.786 10 8S8.76 5 7.5 5 5 6.214 5 8s1.24 3 2.5 3Zm0 1c1.933 0 3.5-1.79 3.5-4S9.433 4 7.5 4 4 5.79 4 8s1.567 4 3.5 4ZM17 11c.965 0 2-.97 2-2.5S17.965 6 17 6c-.965 0-2 .97-2 2.5s1.035 2.5 2 2.5Zm0 1c1.657 0 3-1.567 3-3.5S18.657 5 17 5s-3 1.567-3 3.5 1.343 3.5 3 3.5Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-cancellation{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cmask id='a' width='20' height='20' x='2' y='2' maskUnits='userSpaceOnUse' style='mask-type:alpha'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='%23c4c4c4' stroke='var(--brand-slide)'/%3E%3C/mask%3E%3Cg stroke='var(--brand-slide)' mask='url(%23a)'%3E%3Ccircle cx='12' cy='12' r='9.5' transform='rotate(-90 12 12)'/%3E%3Cpath d='M5.091 19.202 19.192 5.101'/%3E%3C/g%3E%3C/svg%3E");height:24px;width:24px}i.icon.icon-remove-style{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23FF3B30' fill-rule='evenodd' d='M9.333 2a1.06 1.06 0 0 0-1.066 1.053V4H4.533A.53.53 0 0 0 4 4.526c0 .291.239.527.533.527h.534l1 15.894A1.06 1.06 0 0 0 7.133 22h9.734a1.06 1.06 0 0 0 1.066-1.053L19 5h.467c.294 0 .533-.21.533-.5 0-.29-.239-.5-.533-.5h-3.734v-.947A1.06 1.06 0 0 0 14.667 2H9.333Zm5.334 2v-.947H9.333V4h5.334ZM18 5H6l.941 15.062A1 1 0 0 0 7.94 21h8.122a1 1 0 0 0 .998-.938L18 5Z' clip-rule='evenodd'/%3E%3Cpath fill='%23FF3B30' d='M8 7.002h1L9.5 19h-1L8 7.002ZM11.5 7h1v12h-1V7ZM15 7.002 16 7l-.5 12h-1L15 7.002Z'/%3E%3C/svg%3E");height:24px;width:24px}i.icon.icon-image{background-color:var(--brand-slide);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M9 9a2 2 0 1 1-4 0 2 2 0 0 1 4 0ZM8 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='M2 4v16h20V4H2Zm19 1H3v11.293l3.5-3.5 2 2 6-6 6.5 6.5V5ZM3 19v-1.293l3.5-3.5 2 2 6-6 6.5 6.5V19H3Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-format-pdf{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cmask id='a' width='24' height='24' x='0' y='0' maskUnits='userSpaceOnUse' style='mask-type:alpha'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H4Zm1 8v6h1.071v-2H7.68c.887 0 1.607-.672 1.607-1.5v-1c0-.828-.72-1.5-1.607-1.5H5Zm1.071 1H7.68c.295 0 .535.224.535.5v1c0 .276-.24.5-.535.5H6.07v-2Zm9.643 5h1.072v-2h2.678v-1h-2.678v-2H20V9h-4.286v6Zm-5.357-6h2.679c.887 0 1.607.672 1.607 1.5v3c0 .828-.72 1.5-1.607 1.5h-2.679V9Zm2.679 1h-1.607v4h1.607c.296 0 .535-.224.535-.5v-3c0-.276-.24-.5-.535-.5Z' clip-rule='evenodd'/%3E%3C/mask%3E%3Cg mask='url(%23a)'%3E%3Cpath fill='%23DB4437' d='M0 0h24v24H0z'/%3E%3C/g%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-pdfa{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23A8A8A8' fill-rule='evenodd' d='M18 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm.275 2.815h.326l2.618 6.37H19.82l-.524-1.417h-2.602l-.52 1.418H14.78l2.604-6.371H18.275Zm-1.23 4.003h1.902l-.954-2.582-.949 2.582Z' clip-rule='evenodd'/%3E%3Cpath fill='%23DB4437' fill-rule='evenodd' d='M1 4a3 3 0 0 1 3-3h16a3 3 0 0 1 3 3v9.101a6.981 6.981 0 0 0-4.036-2.035V11h-2.678V9H19.5V8h-4.286v3.576a6.983 6.983 0 0 0-1.071.582V9.5c0-.828-.72-1.5-1.607-1.5H9.857v6h2.398A6.968 6.968 0 0 0 11 18c0 1.959.805 3.73 2.101 5H4a3 3 0 0 1-3-3V4Zm3.5 4v6h1.071v-2H7.18c.887 0 1.607-.672 1.607-1.5v-1c0-.828-.72-1.5-1.607-1.5H4.5Zm1.071 1H7.18c.295 0 .535.224.535.5v1c0 .276-.24.5-.535.5H5.57V9Zm6.965 0h-1.607v4h1.607c.296 0 .535-.224.535-.5v-3c0-.276-.24-.5-.535-.5Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-numbers-1{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.605 18.998v-6.725h-.021l-2.052 1.478V12.73l2.062-1.482h.946v7.75h-.935ZM6.58 31.482c0-.677.244-1.239.73-1.687.488-.45 1.096-.676 1.827-.676.69 0 1.276.206 1.756.617.48.412.72.915.72 1.51 0 .43-.118.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.776v.859H6.628v-.666l2.729-2.873c.52-.548.863-.964 1.031-1.247.172-.283.258-.585.258-.907 0-.373-.15-.69-.451-.951a1.585 1.585 0 0 0-1.085-.392c-.455 0-.834.145-1.139.435-.304.29-.456.652-.456 1.085v.005H6.58v-.005ZM8.208 50.42v-.816h.929c.444 0 .807-.127 1.09-.38.283-.259.424-.584.424-.978s-.13-.708-.392-.94c-.261-.233-.632-.35-1.112-.35-.444 0-.805.119-1.085.355-.279.236-.44.559-.483.967h-.93c.055-.659.309-1.184.764-1.574.458-.39 1.05-.585 1.777-.585.699 0 1.279.188 1.74.564.463.376.694.854.694 1.434 0 .483-.144.89-.43 1.219-.287.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.401.564.348.337.521.778.521 1.322 0 .433-.121.823-.365 1.17a2.39 2.39 0 0 1-.988.806c-.415.19-.875.285-1.38.285-.802 0-1.449-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.042.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.594.5-1 0-.454-.162-.814-.484-1.079-.319-.265-.755-.397-1.31-.397h-.972ZM13 17.998h1v1h-1zM13 35.998h1v1h-1zM13 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-2{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.605 18.998v-6.725h-.021l-2.052 1.478V12.73l2.062-1.482h.946v7.75h-.935Zm2.47 1.488c.122-.208.214-.37.275-.489.064-.114.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.144-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.354 3.354 0 0 0-.408-.602h.784c.168.215.31.406.424.575.115.164.246.39.393.676.15.287.27.575.36.865a8.83 8.83 0 0 1 .328 2.412c-.001 1.923-.486 3.491-1.457 4.705h-.821ZM6.58 31.482c0-.677.244-1.239.73-1.687.488-.45 1.096-.676 1.827-.676.69 0 1.276.206 1.756.617.48.412.72.915.72 1.51 0 .43-.118.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.776v.859H6.628v-.666l2.729-2.873c.52-.548.863-.964 1.031-1.247.172-.283.258-.585.258-.907 0-.373-.15-.69-.451-.951a1.585 1.585 0 0 0-1.085-.392c-.455 0-.834.145-1.139.435-.304.29-.456.652-.456 1.085v.005H6.58v-.005Zm5.85 7.004c.12-.208.212-.37.273-.489.065-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.23-.811.083-.312.144-.647.183-1.005.04-.361.06-.74.06-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.364 3.364 0 0 0-.409-.602h.785c.168.215.31.406.424.575.114.164.245.39.392.676.15.287.27.575.36.865a8.844 8.844 0 0 1 .328 2.412c0 1.923-.486 3.491-1.456 4.705h-.822ZM8.208 50.42v-.816h.929c.444 0 .807-.127 1.09-.38.283-.259.424-.584.424-.978s-.13-.708-.392-.94c-.261-.233-.632-.35-1.112-.35-.444 0-.805.119-1.085.355-.279.236-.44.559-.483.967h-.93c.055-.659.309-1.184.764-1.574.458-.39 1.05-.585 1.777-.585.699 0 1.279.188 1.74.564.463.376.694.854.694 1.434 0 .483-.144.89-.43 1.219-.287.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.401.564.348.337.521.778.521 1.322 0 .433-.121.823-.365 1.17a2.39 2.39 0 0 1-.988.806c-.415.19-.875.285-1.38.285-.802 0-1.449-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.042.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.594.5-1 0-.454-.162-.814-.484-1.079-.319-.265-.755-.397-1.31-.397h-.972Zm4.5 5.066c.122-.208.213-.37.274-.489.065-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.231-.811.082-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.364 3.364 0 0 0-.408-.602h.784c.168.215.31.406.424.575.115.164.245.39.392.676.15.287.27.575.36.865.09.29.167.647.231 1.069.065.419.097.866.097 1.343 0 1.923-.485 3.491-1.456 4.705h-.821Z'/%3E%3C/svg%3E")}i.icon.icon-numbers-3{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M7 10.998h1v8H7zM10 17.998h1v1h-1zM7 28.998h1v8H7zM10 28.998h1v8h-1zM13 35.998h1v1h-1zM7 45.998h1v8H7zM10 45.998h1v8h-1zM13 45.998h1v8h-1zM16 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-4{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='m11.79 18.998-.779-2.218H7.928l-.779 2.218H6.134l2.858-7.75h.956l2.857 7.75H11.79Zm-2.336-6.574-1.241 3.534h2.514l-1.241-3.534h-.032ZM9.776 36.998H6.752v-7.75h3.035c.662 0 1.197.177 1.606.531.411.355.617.822.617 1.402 0 .405-.13.772-.392 1.101-.258.326-.573.523-.945.591v.043c.526.068.945.274 1.257.618.315.343.472.773.472 1.289 0 .684-.232 1.217-.698 1.6-.462.383-1.105.575-1.928.575Zm-2.057-6.896v2.486h1.547c.573 0 1.01-.11 1.31-.333.304-.222.457-.542.457-.961 0-.383-.127-.677-.382-.88-.254-.209-.615-.312-1.085-.312H7.72Zm0 6.042H9.63c.583 0 1.026-.116 1.326-.35.301-.232.452-.572.452-1.02 0-.902-.623-1.353-1.87-1.353H7.72v2.723ZM9.942 54.127c-1.07 0-1.92-.36-2.55-1.08-.628-.723-.94-1.699-.94-2.927 0-1.217.316-2.188.95-2.911.634-.727 1.48-1.09 2.54-1.09.845 0 1.562.236 2.149.709.59.469.947 1.09 1.069 1.863h-.978a2.1 2.1 0 0 0-.8-1.219c-.408-.308-.888-.462-1.44-.462-.755 0-1.36.283-1.815.849-.455.566-.682 1.32-.682 2.261 0 .953.225 1.71.677 2.272.45.562 1.06.843 1.826.843.57 0 1.049-.13 1.44-.392.39-.261.655-.628.794-1.1h.978c-.18.765-.546 1.354-1.101 1.766-.555.412-1.26.618-2.117.618ZM15 17.998h1v1h-1zM15 35.998h1v1h-1zM15 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-5{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.524 18.24c.473 0 .863-.135 1.171-.407.312-.276.468-.622.468-1.037v-.467l-1.515.096c-.88.054-1.321.364-1.321.93 0 .268.107.483.322.644.218.161.51.242.875.242Zm-.198.812c-.588 0-1.06-.156-1.418-.468-.358-.311-.537-.723-.537-1.235 0-.498.186-.888.558-1.17.373-.287.91-.452 1.612-.495l1.622-.097v-.483c0-.358-.115-.634-.344-.827-.23-.193-.557-.29-.983-.29-.337 0-.621.08-.854.242-.23.16-.372.377-.43.65h-.897c.015-.488.231-.896.65-1.225.42-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36v3.974h-.886v-1.004h-.021a1.86 1.86 0 0 1-.752.773c-.337.19-.708.285-1.112.285Zm3.577 1.434c.122-.208.213-.37.274-.489.064-.114.157-.299.28-.553.124-.254.223-.496.294-.725.076-.23.153-.5.231-.811a6.85 6.85 0 0 0 .183-1.005c.04-.361.06-.74.06-1.133 0-.576-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.36-1.343 7.911 7.911 0 0 0-.425-.918 3.36 3.36 0 0 0-.408-.602h.784c.169.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.844 8.844 0 0 1 .328 2.412c0 1.923-.486 3.491-1.456 4.705h-.822ZM9.48 37.052a2.3 2.3 0 0 1-1.117-.263 1.98 1.98 0 0 1-.768-.769h-.021v.978h-.886v-8.089h.934v3.239h.022c.182-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.321.272 1.772.817.452.54.677 1.251.677 2.132 0 .884-.227 1.597-.682 2.138-.451.54-1.047.81-1.789.81Zm-.166-5.065c-.505 0-.915.197-1.23.59-.312.39-.467.9-.467 1.526 0 .63.155 1.14.467 1.53.315.391.725.586 1.23.586.508 0 .915-.191 1.22-.575.307-.383.461-.896.461-1.541 0-.64-.154-1.153-.462-1.536-.304-.387-.71-.58-1.219-.58Zm3.19 6.499c.122-.208.213-.37.274-.489.065-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.231-.811.082-.312.143-.647.183-1.005.039-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.364 3.364 0 0 0-.408-.602h.784c.168.215.31.406.424.575.115.164.245.39.392.676.15.287.27.575.36.865.09.29.167.647.231 1.069.064.419.097.866.097 1.343 0 1.923-.486 3.491-1.456 4.705h-.822ZM11.42 50.093H10.5a1.274 1.274 0 0 0-.483-.795c-.262-.207-.602-.311-1.02-.311-.51 0-.92.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.467 1.547.315.38.729.57 1.24.57.405 0 .737-.092.995-.275.26-.186.43-.453.51-.8h.918c-.079.57-.34 1.03-.784 1.38-.44.351-.988.527-1.644.527-.802 0-1.444-.265-1.928-.795-.483-.534-.725-1.252-.725-2.154 0-.888.242-1.6.725-2.138.484-.54 1.123-.81 1.918-.81.684 0 1.244.19 1.68.569.438.376.687.832.747 1.37Zm.472 5.393c.122-.208.213-.37.274-.489.064-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.23-.811.083-.312.144-.647.183-1.005.04-.361.06-.74.06-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.359 3.359 0 0 0-.409-.602h.784c.169.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.844 8.844 0 0 1 .328 2.412c0 1.923-.486 3.491-1.456 4.705h-.822Z'/%3E%3C/svg%3E")}i.icon.icon-numbers-6{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.524 18.24c.473 0 .863-.135 1.171-.407.312-.276.468-.622.468-1.037v-.467l-1.515.096c-.88.054-1.321.364-1.321.93 0 .268.107.483.322.644.218.161.51.242.875.242Zm-.198.812c-.588 0-1.06-.156-1.418-.468-.358-.311-.537-.723-.537-1.235 0-.498.186-.888.558-1.17.373-.287.91-.452 1.612-.495l1.622-.097v-.483c0-.358-.115-.634-.344-.827-.23-.193-.557-.29-.983-.29-.337 0-.621.08-.854.242-.23.16-.372.377-.43.65h-.897c.015-.488.231-.896.65-1.225.42-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36v3.974h-.886v-1.004h-.021a1.86 1.86 0 0 1-.752.773c-.337.19-.708.285-1.112.285ZM9.48 37.052a2.3 2.3 0 0 1-1.117-.263 1.98 1.98 0 0 1-.768-.769h-.021v.978h-.886v-8.089h.934v3.239h.022c.182-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.321.272 1.772.817.452.54.677 1.251.677 2.132 0 .884-.227 1.597-.682 2.138-.451.54-1.047.81-1.789.81Zm-.166-5.065c-.505 0-.915.197-1.23.59-.312.39-.467.9-.467 1.526 0 .63.155 1.14.467 1.53.315.391.725.586 1.23.586.508 0 .915-.191 1.22-.575.307-.383.461-.896.461-1.541 0-.64-.154-1.153-.462-1.536-.304-.387-.71-.58-1.219-.58ZM11.42 50.093H10.5a1.274 1.274 0 0 0-.483-.795c-.262-.207-.602-.311-1.02-.311-.51 0-.92.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.467 1.547.315.38.729.57 1.24.57.405 0 .737-.092.995-.275.26-.186.43-.453.51-.8h.918c-.079.57-.34 1.03-.784 1.38-.44.351-.988.527-1.644.527-.802 0-1.444-.265-1.928-.795-.483-.534-.725-1.252-.725-2.154 0-.888.242-1.6.725-2.138.484-.54 1.123-.81 1.918-.81.684 0 1.244.19 1.68.569.438.376.687.832.747 1.37ZM13 17.998h1v1h-1zM13 35.998h1v1h-1zM13 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-7{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M7 12.998h1v6H7zM7 10.998h1v1H7zM10 17.998h1v1h-1zM7 30.998h1v6H7zM10 30.998h1v6h-1zM10 28.998h1v1h-1zM7 28.998h1v1H7zM13 35.998h1v1h-1zM7 47.998h1v6H7zM10 47.998h1v6h-1zM13 47.998h1v6h-1zM7 45.998h1v1H7zM10 45.998h1v1h-1zM13 45.998h1v1h-1zM16 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-sharing-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill-rule='evenodd' clip-path='url(%23a)' clip-rule='evenodd'%3E%3Cpath d='M7.5 14c-2.823 0-4.989 1.407-6.099 3.257-.56.935-.4 1.305-.299 1.433.154.194.508.31.87.31H7.5v1H1.972c-.47 0-1.216-.134-1.655-.69-.49-.622-.412-1.502.227-2.567C1.834 14.593 4.324 13 7.5 13v1Zm0-1c3.177 0 5.639 1.593 6.929 3.743.639 1.065.716 1.945.226 2.567-.438.556-1.184.69-1.655.69H7.5v-1H13c.363 0 .717-.116.87-.31.101-.128.262-.498-.299-1.433C12.461 15.407 10.323 14 7.5 14v-1Z'/%3E%3Cpath d='M15 20h7c.471 0 1.217-.134 1.656-.69.49-.622.413-1.502-.226-2.567C22.14 14.593 19.677 13 16.5 13c-1.293 0-2.322.164-3.354.623.364.28.64.494.997.732A7.774 7.774 0 0 1 16.502 14c2.823 0 4.96 1.407 6.071 3.257.561.935.4 1.305.299 1.433-.153.194-.508.31-.87.31H16.5a1.466 1.466 0 0 1-.343.478c-.444.415-.738.522-1.157.522ZM7.5 11C8.76 11 10 9.786 10 8S8.76 5 7.5 5 5 6.214 5 8s1.24 3 2.5 3Zm0 1c1.933 0 3.5-1.79 3.5-4S9.433 4 7.5 4 4 5.79 4 8s1.567 4 3.5 4ZM17 11c.965 0 2-.97 2-2.5S17.965 6 17 6c-.965 0-2 .97-2 2.5s1.035 2.5 2 2.5Zm0 1c1.657 0 3-1.567 3-3.5S18.657 5 17 5s-3 1.567-3 3.5 1.343 3.5 3 3.5Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}i.icon.icon-info,i.icon.icon-sharing-settings{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-info{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M4 8v13h6v1H3V7l6-6h11v9h-1V2h-9v6H4Zm.414-1L9 2.414V7H4.414Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M17 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm-5 6a5 5 0 1 1 10 0 5 5 0 0 1-10 0Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' d='M16.252 14.991h1.484v1.496h-1.484v-1.496ZM16.252 17.509v3.98h1.484v-3.98h-1.484Z'/%3E%3C/svg%3E")}i.icon.icon-help{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M11.26 17h1.497v-1.5h-1.496V17ZM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2Zm0 19c-5 0-9-4-9-9s4-9 9-9 9 4 9 9-4 9-9 9Zm.392-14C10.182 7 9 8.29 9 10.5h1.5c0-1.1.588-2 1.892-2 1.303 0 1.612.618 1.608 1.5-.005 1-2.74 1.5-2.74 4.442h1.497c0-2.25 2.79-1.942 2.79-4.442 0-2.21-1.547-3-3.155-3Z'/%3E%3C/svg%3E")}i.icon.icon-about,i.icon.icon-help{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-about{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Zm0 1c5.522 0 10-4.477 10-10S17.522 2 12 2C6.477 2 2 6.477 2 12s4.477 10 10 10Z' clip-rule='evenodd'/%3E%3Cpath d='M11.253 7h1.492v1.5h-1.492V7ZM12.745 10.012V17h-1.492v-6.988h1.492Z'/%3E%3C/svg%3E")}i.icon.icon-search{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M16 16.708a9 9 0 1 1 .707-.707l5.647 5.645-.708.708-5.645-5.646ZM18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-search,i.icon.icon-version-history{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-version-history{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M12 6h2v6.845l4.196 2.423-1 1.732L12 14V6Z'/%3E%3Cpath d='M22 12a9 9 0 0 1-15.364 6.364l-.708.707A9.969 9.969 0 0 0 13 22c5.523 0 10-4.477 10-10S18.523 2 13 2C7.477 2 3 6.477 3 12h1a9 9 0 0 1 18 0Z'/%3E%3Cpath d='m1.5 10.5 2 2 2-2'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-horizontal{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M9.514 10.75h1.755L8.069 2H6.363L3.25 10.75h1.712l.66-1.988h3.194l.698 1.988ZM7.197 4.041l1.101 3.247h-2.18l1.079-3.247ZM16 2h-3.194v8.75h2.72c1.028-.008 1.677-.028 1.946-.06.429-.051.789-.189 1.08-.412.294-.226.525-.527.692-.9.17-.379.256-.767.256-1.165 0-.505-.13-.945-.392-1.319s-.637-.638-1.123-.794c.345-.17.617-.427.817-.77.204-.342.306-.718.306-1.128 0-.378-.082-.718-.246-1.02a2.162 2.162 0 0 0-.616-.734 1.93 1.93 0 0 0-.834-.358C17.103 2.03 16.632 2 16 2Zm-1.58 3.48V3.456h.926c.76 0 1.22.01 1.38.03.268.036.47.14.604.31.138.168.208.387.208.657 0 .283-.08.511-.24.686-.157.172-.373.275-.65.31-.152.02-.542.03-1.171.03h-1.058Zm0 3.796v-2.34h1.302c.734 0 1.21.042 1.428.125.222.084.391.217.507.4.117.183.175.406.175.669 0 .31-.076.559-.23.746a.973.973 0 0 1-.582.346c-.157.036-.526.054-1.107.054h-1.494Zm3.563 3.974 3.52 3.833.497.542-.498.542L17.982 22l-.994-1.084 2.317-2.524H2v-1.534h17.305l-2.317-2.524.995-1.084Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-anglecount,i.icon.icon-text-orientation-horizontal{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-text-orientation-anglecount{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M22 8.72h-5.604v1.358h3.363L8.55 20.916 9.672 22l10.925-10.856v3.286H22V8.72Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' d='m10.658 11.386-1.113 1.076-1.703-.79-2.025 1.958.842 1.623-1.085 1.05L2 9.028l1.082-1.046 7.576 3.403Zm-4.079-.301L3.823 9.769l1.374 2.653 1.382-1.337ZM6.085 5.08 8.11 3.12c.4-.387.718-.657.952-.81.233-.157.485-.255.756-.292a2 2 0 0 1 .856.073c.295.085.562.243.802.475.26.251.434.544.522.879.09.332.08.657-.03.973.407-.203.812-.27 1.215-.202.403.07.764.259 1.085.568.252.244.444.535.575.871.131.332.175.658.133.977-.043.315-.185.62-.424.914-.15.185-.549.595-1.196 1.23l-1.724 1.668-5.547-5.365Zm1.946-.097 1.283 1.24.67-.648c.399-.385.64-.631.724-.737.153-.191.224-.387.215-.588-.01-.205-.104-.395-.283-.568-.172-.166-.354-.257-.548-.275-.194-.023-.387.038-.58.18-.114.086-.412.362-.894.828l-.587.568Zm2.206 2.133 1.483 1.435.947-.916c.369-.357.591-.594.668-.711a.822.822 0 0 0 .15-.57c-.022-.209-.131-.408-.328-.598a1.104 1.104 0 0 0-.534-.303.92.92 0 0 0-.575.066c-.191.082-.52.348-.985.798l-.826.8Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-angleclock{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M15.28 22v-5.604h-1.358v3.363L3.084 8.55 2 9.672l10.856 10.925H9.57V22h5.71Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' d='m12.614 10.658-1.076-1.113.79-1.703-1.958-2.025-1.623.842-1.05-1.085L14.972 2l1.046 1.082-3.403 7.576Zm.301-4.079 1.316-2.756-2.653 1.374 1.337 1.382ZM18.92 6.085l1.96 2.025c.387.4.657.718.81.952.157.233.255.485.292.756a2 2 0 0 1-.073.856 1.905 1.905 0 0 1-.475.802c-.251.26-.544.434-.879.522a1.61 1.61 0 0 1-.973-.03c.203.407.27.812.202 1.215a2.032 2.032 0 0 1-.568 1.085 2.42 2.42 0 0 1-.871.575 1.928 1.928 0 0 1-.977.133c-.315-.043-.62-.185-.914-.424-.185-.15-.595-.549-1.23-1.196l-1.668-1.724 5.365-5.547Zm.097 1.946-1.24 1.283.648.67c.386.399.631.64.737.724.191.153.387.224.588.215.205-.01.395-.104.568-.283.166-.172.258-.354.275-.548.023-.194-.038-.387-.18-.58-.086-.114-.362-.412-.828-.894l-.568-.587Zm-2.133 2.206-1.435 1.483.916.947c.357.369.594.591.712.668a.822.822 0 0 0 .57.15c.208-.022.407-.131.597-.328.161-.166.262-.344.303-.534a.92.92 0 0 0-.066-.575c-.082-.191-.348-.52-.798-.985l-.8-.826Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-angleclock,i.icon.icon-text-orientation-vertical{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-text-orientation-vertical{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='m7.104 22.065 3.978-3.52-1.125-.995-2.62 2.318V1.938H5.745v17.93l-2.62-2.318L2 18.545l3.978 3.52.563.497.563-.497Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' d='M14.513 13.188h3.316c.656 0 1.145.03 1.465.089.325.056.613.175.866.358.256.183.47.428.64.734.169.303.254.643.254 1.02 0 .41-.106.787-.317 1.129a1.96 1.96 0 0 1-.849.77c.506.155.894.42 1.166.794.272.374.407.813.407 1.319 0 .398-.088.786-.266 1.164a2.308 2.308 0 0 1-.718.901c-.302.223-.675.36-1.12.412-.28.032-.953.052-2.02.06h-2.824v-8.75Zm1.675 1.456v2.023h1.098c.652 0 1.058-.01 1.216-.03.287-.035.511-.139.673-.31.166-.175.25-.404.25-.686 0-.271-.072-.49-.216-.657-.14-.171-.349-.274-.628-.31-.166-.02-.643-.03-1.431-.03h-.962Zm0 3.48v2.34h1.55c.604 0 .987-.019 1.149-.054.249-.048.45-.164.605-.347.159-.187.238-.435.238-.746 0-.262-.06-.485-.181-.668a1.028 1.028 0 0 0-.526-.4c-.227-.084-.72-.125-1.483-.125h-1.352ZM22 10.688h-1.822L19.454 8.7h-3.316l-.685 1.988h-1.776l3.23-8.75h1.772L22 10.688Zm-3.084-3.462-1.143-3.247-1.12 3.247h2.263Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-rotateup{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M5.914 2.483 2 5.895l1.107.966 2.578-2.248V22H7.25V4.613l2.577 2.248 1.108-.966L7.02 2.483 6.468 2l-.554.483Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' d='m21.928 12.594-.029 1.656-1.931.69-.052 3.012 1.91.59-.028 1.615-8.403-2.798.028-1.609 8.505-3.156Zm-3.393 2.857-3.154 1.09 3.119.966.035-2.056ZM13.5 11.079l.051-3.013c.01-.596.047-1.04.11-1.333.058-.296.178-.56.359-.792.18-.236.42-.434.72-.593.294-.159.624-.241.99-.247.395-.007.757.083 1.084.27.327.183.57.436.73.759.158-.462.42-.819.786-1.072a2.264 2.264 0 0 1 1.28-.39c.385-.007.758.067 1.12.223.36.151.646.364.86.638.21.27.337.608.38 1.012.027.253.036.864.027 1.834v2.704h-8.498Zm1.432-1.545 1.955-.032.017-.997c.01-.593.007-.962-.01-1.105-.03-.26-.126-.462-.289-.607-.166-.148-.386-.22-.66-.215-.26.004-.473.072-.637.205-.167.13-.27.322-.31.576-.021.15-.038.585-.05 1.301l-.016.874Zm3.362-.055 2.26-.037.025-1.409c.009-.548-.002-.896-.034-1.042a.875.875 0 0 0-.325-.545c-.179-.141-.418-.21-.717-.204-.254.004-.47.062-.649.175a.99.99 0 0 0-.395.484c-.084.207-.132.657-.144 1.35l-.02 1.228Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-rotatedown,i.icon.icon-text-orientation-rotateup{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-text-orientation-rotatedown{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='m7.021 21.517 3.914-3.412-1.107-.966-2.577 2.248V2H5.685v17.387l-2.578-2.248L2 18.105l3.914 3.412.554.483.553-.483Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' d='m13.468 11.406.028-1.656 1.931-.69.052-3.012-1.91-.59.028-1.615L22 6.641l-.028 1.609-8.505 3.156Zm3.392-2.857 3.155-1.09-3.12-.966-.035 2.056ZM21.896 12.921l-.052 3.013c-.01.596-.047 1.04-.11 1.333-.058.296-.178.56-.359.792-.18.236-.42.434-.719.593a2.126 2.126 0 0 1-.99.247 2.081 2.081 0 0 1-1.085-.27 1.74 1.74 0 0 1-.73-.759c-.158.462-.42.819-.785 1.072a2.264 2.264 0 0 1-1.281.39 2.706 2.706 0 0 1-1.12-.223 2.107 2.107 0 0 1-.86-.638c-.21-.27-.337-.608-.38-1.012-.027-.253-.035-.864-.026-1.834V12.92h8.497Zm-1.433 1.545-1.955.032-.017.997c-.01.593-.007.962.01 1.105.03.26.126.462.29.607.166.148.385.22.658.215.262-.004.474-.072.638-.205.167-.13.27-.322.31-.576.021-.15.038-.585.05-1.301l.016-.874Zm-3.362.055-2.26.037-.024 1.409c-.01.548.002.896.034 1.042.042.226.15.407.324.545.179.141.418.21.718.204.253-.004.47-.062.648-.175a.99.99 0 0 0 .395-.484c.084-.207.132-.657.144-1.35l.021-1.228Z'/%3E%3C/svg%3E")}.dataview .row{justify-content:space-around}.dataview ul{list-style:none;padding:0 10px}.dataview ul li{display:inline-block}.dataview .row.list:last-child li:not(.active):last-child:after{content:none}.dataview .active,.dataview .row.list:last-child li.active:last-child{position:relative;z-index:1}.dataview .active:after,.dataview .row.list:last-child li.active:last-child:after{background-color:var(--brand-slide);bottom:-5px;content:"";height:22px;left:auto;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='11'/%3E%3Cpath fill='%23fff' d='M11 21a10 10 0 1 1 10-10 10 10 0 0 1-10 10Zm6.4-13.68L17.06 7a.48.48 0 0 0-.67 0l-7 6.84-2.44-2.6a.51.51 0 0 0-.59.08l-.36.34a.58.58 0 0 0 0 .65l3.19 3.35a.38.38 0 0 0 .39 0L17.4 8a.48.48 0 0 0 0-.67Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;position:absolute;right:-5px;transform:none;width:22px}.about .page-content{display:flex;flex-direction:column;text-align:center}.about_ios{padding-bottom:30px;padding-top:120px}.about_android{padding-bottom:16px;padding-top:60px}.about_tablet{padding-bottom:12px;padding-top:12px}.about__text{color:var(--text-normal);font-size:12px;font-style:normal;font-weight:400;line-height:16px;margin:0;text-align:center}.about a{color:var(--brand-slide)}.about .logo-block__elem{display:flex;justify-content:center}.about .logo-block__elem img{height:auto;max-width:100%}.about__logo{background:url(../../../presentationeditor/mobile/resources/img/about/logo-new.svg) no-repeat 50%;height:80px;width:100%}.about__editor{flex-grow:1;margin-top:20px}.about__contacts{padding-left:72px;padding-right:72px;text-align:center}.about__customer,.about__licensor{margin-top:12px;text-align:center}.theme-type-dark .about__logo{background:url(../../../presentationeditor/mobile/resources/img/about/logo-new-white.svg) no-repeat 50%}.navbar .searchbar{background-color:var(--f7-navbar-bg-color)}.navbar .searchbar .buttons-row{align-self:center;display:flex}.navbar .searchbar .searchbar-bg:after{background-color:#cbcbcb;bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.navbar .searchbar-inner{justify-content:space-between}.navbar .searchbar-inner__center{align-items:center;display:flex;width:81%}.navbar .searchbar-inner__right{align-items:center;display:flex}.navbar .searchbar-expandable{transition-duration:0s}.navbar .buttons-row-replace{align-items:center;display:flex;flex-direction:column;justify-content:center;width:100%}.navbar .buttons-row-replace a{display:block;font-size:15px;height:auto;line-height:normal}.navbar .buttons-row-replace a:before{display:none}@media (max-width:550px){.navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__left{max-width:22px;min-width:22px}.navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__center{flex-direction:column}.navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__right{flex-direction:column-reverse}.navbar .searchbar-expandable.searchbar-enabled.replace{top:0}.navbar .searchbar-expandable.searchbar-enabled.replace .searchbar-inner{height:100%}.navbar .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__left{align-self:flex-start}}.device-ios .document-menu{background-color:rgba(0,0,0,.9);border-radius:8px}.device-ios .document-menu .popover-angle:after{background:rgba(0,0,0,.9)}.device-ios .document-menu .list-block{font-size:14px;white-space:pre}.device-ios .document-menu .list-block:first-child ul:before{display:none!important}.device-ios .document-menu .list-block:first-child li:first-child a{border-radius:0}.device-ios .document-menu .list-block .item-link{display:inline-block}.device-ios .document-menu .list-block .item-link.active-state,html:not(.watch-active-state) .device-ios .document-menu .list-block .item-link:active{background-color:#d9d9d9}.device-ios .document-menu .list-block .item-link.active-state .item-inner:after,html:not(.watch-active-state) .device-ios .document-menu .list-block .item-link:active .item-inner:after{background-color:initial}html.phone .device-ios .document-menu .list-block .item-link{padding:0 10px}.device-ios .document-menu .list-block .list-button{color:#fff;line-height:36px}.device-ios .document-menu .list-block .list-button:after{background-color:hsla(0,0%,90%,.9);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.device-ios .document-menu .list-block li{display:inline-flex}.device-ios .document-menu .list-block li:last-child .item-inner:after,.device-ios .document-menu .list-block li:last-child .list-button:after,.device-ios .document-menu .list-block li:last-child li:last-child .item-inner:after{display:none!important}.device-ios .document-menu .list-block li li:last-child .item-inner:after,.device-ios .document-menu .list-block li:last-child li .item-inner:after{background-color:hsla(0,0%,90%,.9);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.md .document-menu .popover-inner{overflow:hidden}.md .document-menu .list-block{white-space:pre}.md .document-menu .list-block ul{height:48px}.md .document-menu .list-block li{display:inline-block}.md .document-menu .list-block .list-button{color:var(--text-normal)}.document-menu{width:auto}html.phone .document-menu .list-block .list-button{padding:0 10px}.device-ios .wrap-comment{height:calc(100% - 60px)}.device-ios .add-comment-dialog .wrap-textarea,.device-ios .add-comment-popup .wrap-textarea,.device-ios .add-reply-dialog .wrap-textarea,.device-ios .add-reply-popup .wrap-textarea{height:calc(100% - 34px)}.device-ios .edit-comment-dialog .wrap-textarea,.device-ios .edit-comment-popup .wrap-textarea,.device-ios .edit-reply-dialog .wrap-textarea,.device-ios .edit-reply-popup .wrap-textarea{height:calc(100% - 52px)}.device-ios .comment-list .reply-item .item-inner:after{content:none!important}.device-ios .comment-list .reply-item:before{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:auto;position:absolute;right:auto;top:0;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;width:100%;z-index:15}.device-android .wrap-comment{height:calc(100% - 72px)}.device-android .add-comment-dialog .wrap-textarea,.device-android .add-comment-popup .wrap-textarea,.device-android .add-reply-dialog .wrap-textarea,.device-android .add-reply-popup .wrap-textarea{height:calc(100% - 41px)}.device-android .edit-comment-dialog .wrap-textarea,.device-android .edit-comment-popup .wrap-textarea,.device-android .edit-reply-dialog .wrap-textarea,.device-android .edit-reply-popup .wrap-textarea{height:calc(100% - 56px)}.device-android .comment-list .comment-header,.device-android .comment-list .reply-header,.device-android .reply-list .comment-header,.device-android .reply-list .reply-header,.device-android .wrap-comment .comment-header,.device-android .wrap-comment .reply-header{display:flex}.device-android .comment-list .comment-header .initials,.device-android .comment-list .reply-header .initials,.device-android .reply-list .comment-header .initials,.device-android .reply-list .reply-header .initials,.device-android .wrap-comment .comment-header .initials,.device-android .wrap-comment .reply-header .initials{align-items:center;border-radius:50px;color:var(--fill-white);display:flex;font-size:14px;justify-content:center;margin-right:10px}.device-android .wrap-comment .comment-header{align-items:center}.device-android .wrap-comment .comment-header .initials{height:30px;width:30px}.device-android .wrap-comment .wrap-textarea .input:not(.input-outline):after{content:none}.device-android #add-comment-dialog .dialog,.device-android #add-reply-dialog .dialog,.device-android #edit-comment-dialog .dialog,.device-android #edit-reply-dialog .dialog{--f7-dialog-text-color:#000}.device-android #add-comment-dialog .dialog .done,.device-android #add-reply-dialog .dialog .done,.device-android #edit-comment-dialog .dialog .done,.device-android #edit-reply-dialog .dialog .done{padding-right:6px}.device-android .comment-list .item-inner:after,.device-android .comment-list li:last-child li .item-inner:after,.device-android .comment-list ul:after{content:none}.device-android .comment-list .comment-header .left{align-items:center;display:flex}.device-android .comment-list .comment-header .left .initials{font-size:18px;height:40px;width:40px}.device-android .reply-list .reply-header .left{display:flex}.device-android .reply-list .reply-header .left .initials{font-size:11px;height:24px;margin-top:5px;width:24px}.device-android #edit-comment-dialog .wrap-comment .comment-header .initials,.device-android #edit-comment-dialog .wrap-comment .reply-header .initials,.device-android #edit-reply-dialog .wrap-comment .comment-header .initials,.device-android #edit-reply-dialog .wrap-comment .reply-header .initials,.device-android .edit-comment-popup .wrap-comment .comment-header .initials,.device-android .edit-comment-popup .wrap-comment .reply-header .initials,.device-android .edit-reply-popup .wrap-comment .comment-header .initials,.device-android .edit-reply-popup .wrap-comment .reply-header .initials{height:40px;width:40px}.device-android #view-comment-popover .toolbar-bottom:after{content:none}.wrap-comment{background-color:var(--background-tertiary);padding:16px 24px 0 16px}.wrap-comment .comment-date{color:var(--text-secondary)}.wrap-comment .wrap-textarea{margin-top:6px}.wrap-comment .name{color:var(--text-normal);font-size:16px;font-weight:600}.wrap-comment .reply-date{color:var(--text-secondary)}.wrap-textarea .input{height:100%}.wrap-textarea textarea{color:var(--text-normal);font-size:14px;height:100%;margin-top:0;padding:5px 0}#add-comment-dialog .dialog,#add-reply-dialog .dialog,#edit-comment-dialog .dialog,#edit-reply-dialog .dialog{--f7-dialog-width:400px;z-index:13700}#add-comment-dialog .dialog .dialog-inner,#add-reply-dialog .dialog .dialog-inner,#edit-comment-dialog .dialog .dialog-inner,#edit-reply-dialog .dialog .dialog-inner{height:400px;padding:0}#add-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,#add-comment-dialog .dialog .dialog-inner .wrap-comment .name,#add-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,#add-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,#add-reply-dialog .dialog .dialog-inner .wrap-comment .name,#add-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .name,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .name,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date{text-align:left}#add-comment-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea,#add-reply-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea{color:var(--text-normal);width:100%}.comment-list .item-content .item-inner{padding-bottom:0;padding-right:0;padding-top:16px}.comment-list .item-content .item-inner .comment-header{display:flex;justify-content:space-between;padding-right:16px}.comment-list .item-content .item-inner .comment-header .right{display:flex;justify-content:flex-end;width:70px}.comment-list .item-content .item-inner .comment-header .right .comment-resolve{margin-right:10px}.comment-list .item-content .item-inner .reply-header{display:flex;justify-content:space-between;padding-right:16px}.comment-list .item-title{width:100%}.comment-list .user-name{color:var(--text-normal);font-size:16px;font-weight:700;line-height:22px;margin:0}.comment-list .comment-date,.comment-list .reply-date{color:var(--text-secondary);font-size:12px;line-height:18px;margin:0}.comment-list .comment-quote{border-left:1px solid var(--text-secondary);color:var(--text-secondary);font-size:14px;margin:5px 0;padding-left:10px;padding-right:16px}.comment-list .comment-text,.comment-list .reply-text{color:var(--text-normal);font-size:14px;line-height:25px;margin:0;max-width:100%;padding-right:15px;word-break:break-all}.comment-list .comment-text pre,.comment-list .reply-text pre{overflow-wrap:break-word;white-space:pre-wrap}.comment-list .reply-list{padding-left:26px}.comment-list .reply-item{padding-right:26px}.add-reply-popup,.edit-comment-popup,.edit-reply-popup{z-index:20000}#view-comment-sheet{webkit-transition:height .2s;background-color:var(--fill-white);border-top-left-radius:4px;border-top-right-radius:4px;box-shadow:0 1px 10px rgba(0,0,0,.2),0 4px 5px rgba(0,0,0,.12);height:45%;transition:height .2s}#view-comment-sheet .top{height:90%}#view-comment-sheet .swipe-container{background-color:var(--background-primary);display:flex;height:40px;justify-content:center}#view-comment-sheet .swipe-container .icon-swipe{background:var(--background-menu-divider);border-radius:2px;height:4px;margin-top:8px;width:40px}#view-comment-popover .toolbar,#view-comment-sheet .toolbar{background-color:var(--background-primary);box-shadow:0 1px 10px rgba(0,0,0,.2),0 4px 5px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.14);position:fixed}#view-comment-popover .toolbar .link,#view-comment-sheet .toolbar .link{--f7-toolbar-link-color:var(--brand-slide)}#view-comment-popover .toolbar .toolbar-inner,#view-comment-sheet .toolbar .toolbar-inner{padding:0 16px}#view-comment-popover .toolbar .btn-add-reply,#view-comment-sheet .toolbar .btn-add-reply{font-size:16px;min-width:80px;padding:0}#view-comment-popover .toolbar .comment-navigation,#view-comment-sheet .toolbar .comment-navigation{display:flex;justify-content:space-between;min-width:62px}#view-comment-popover .toolbar .comment-navigation .link,#view-comment-sheet .toolbar .comment-navigation .link{padding:0 12px}#view-comment-popover{background-color:var(--background-primary)}#view-comment-popover .pages{position:absolute}#view-comment-popover .page,#view-comment-popover .page .page-content{border-radius:var(--f7-popover-border-radius)}#view-comment-popover .page .page-content{padding:16px 16px 60px 0}#view-comment-popover .comment-list .item-content .item-inner .comment-header,#view-comment-popover .comment-list .item-content .item-inner .reply-header{padding-right:0}#view-comment-popover .toolbar{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);position:absolute}.page-current-comment{position:relative}.page-current-comment .page-content{background-color:var(--background-primary)}.page-current-comment .comment-list ul:after,.page-current-comment .comment-list ul:before{content:none}.page-current-comment .comment-list ul .item-content .item-inner{padding-top:0}.page-current-comment .comment-list ul .item-content .item-inner .reply-list .item-content .item-inner{padding-top:13px}.dialog.modal-in{max-height:100%;overflow:auto;z-index:14000}.dialog.modal-in .item-content .item-input-wrap:after{background-color:var(--brand-slide)}.dialog-backdrop.backdrop-in{z-index:13600}.no-comments{color:var(--text-normal);margin-top:35px;text-align:center}.actions-modal.modal-in{z-index:13700}.actions-modal.modal-in .actions-group:after{background-color:var(--background-menu-divider)}.actions-backdrop.backdrop-in{z-index:13600}.device-android{--f7-navbar-bg-color:var(--brand-slide);--f7-navbar-link-color:var(--text-link);--f7-navbar-text-color:var(--text-normal)}.device-android #editor-navbar.navbar .right{padding-right:4px}.device-android #editor-navbar.navbar .left a.link,.device-android #editor-navbar.navbar .right a.link{align-items:center;box-sizing:border-box;justify-content:space-between;padding:0 13px;width:auto}.device-ios .view .page-content{background:var(--background-tertiary)}.device-ios i.icon.icon-burger{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M2 17h18v1H2zM2 13h18v1H2zM2 9h18v1H2zM2 5h18v1H2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-burger,.device-ios i.icon.icon-edit-settings{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-edit-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cpath fill-rule='evenodd' d='M8 1 3 15h1.2l1.777-5h5.046l.616 1.733.88-.88L9 1zm.5 1.9L10.668 9H6.332z' clip-rule='evenodd'/%3E%3Cpath d='m18.3 11.3-9.2 9.1-1.5-1.5 9.2-9.1-.7-.7-9.6 9.6L6 22l3.3-.5 9.6-9.6zm1.2 0L21 9.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-play{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M4.046 2.988A.286.286 0 0 1 4.07 3c.59.336 12.711 7.293 13.897 8.027-.583.342-13.013 7.488-13.934 7.983l.013-16.022M3.99 2C3.443 2 3 2.453 3 3.015V19.01c0 .613.479.99.993.99.173 0 .35-.043.514-.133.89-.491 13.188-7.559 13.94-8a.99.99 0 0 0 0-1.732C17.404 9.533 5.153 2.502 4.54 2.154A1.11 1.11 0 0 0 3.99 2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-play,.device-ios i.icon.icon-undo{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-undo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M22 16v2h-1v-2c0-2.9-2.1-5-5-5H1.9L5 14c.1.1.1.2 0 .3l-.4.4c-.1.1-.2.1-.3 0L.1 10.5c-.1-.1-.1-.2 0-.3l.4-.4h.1L4.4 6c.1-.1.2-.1.3 0l.5.4c.1.1.1.2 0 .3L1.9 10H16c3.3 0 6 2.7 6 6z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-redo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M0 16c0-3.3 2.7-6 6-6h14.1l-3.3-3.3c-.1-.1-.1-.2 0-.3l.5-.4c.1-.1.2-.1.3 0l3.8 3.8h.1l.4.4c.1.1.1.2 0 .3l-4.2 4.2c-.1.1-.2.1-.3 0l-.4-.4c-.1-.1-.1-.2 0-.3l3.1-3H6c-2.9 0-5 2.1-5 5v2H0v-2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-reader,.device-ios i.icon.icon-redo{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-reader{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M17 21H1V9h6V2h10v5h1V1H6.2L0 7.6V22h18v-3h-1v2zM6 2.8V8H1.1L6 2.8zM13 8c-5.1 0-9 5-9 5s4.1 5 9 5c5 0 9-5 9-5s-4-5-9-5zm-4.3 7.5C6.8 14.4 6.4 13 6.4 13s.4-1.5 2.4-2.6C8.3 11.2 8 12 8 13c0 .9.3 1.8.7 2.5zm4.3 1.2c-2.1 0-3.7-1.7-3.7-3.7 0-2.1 1.7-3.7 3.7-3.7 2.1 0 3.7 1.7 3.7 3.7 0 2.1-1.6 3.7-3.7 3.7zm4.3-1.2c.4-.7.7-1.6.7-2.5 0-1-.3-1.8-.7-2.6 2 1.1 3.4 2.6 3.4 2.6s-1.5 1.4-3.4 2.5zM13 11.7c-.7 0-1.3.6-1.3 1.3s.6 1.3 1.3 1.3 1.3-.6 1.3-1.3-.6-1.3-1.3-1.3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-download{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M12 0h-1v14l-3.6-3.7-.7.8 4.8 4.9 4.8-4.9-.7-.8L12 14V0Z'/%3E%3Cpath d='M14 5v1h5v14H4V6h5V5H3v16h17V5h-6Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-download,.device-ios i.icon.icon-print{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-print{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath fill-rule='evenodd' d='M5 1h12v5h4v11h-4v4H5v-4H1V6h4V1Zm1 5h10V2H6v4ZM5 16v-3H2v3h3Zm-3-4h18V7H2v5Zm18 1h-3v3h3v-3Zm-4 0H6v7h10v-7Zm-2 3H8v-1h6v1Zm0 2H8v-1h6v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-spellcheck{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cg fill-rule='evenodd' clip-rule='evenodd'%3E%3Cpath d='M8 1 3 15h1.2l1.777-5h5.046l.654 1.84a6.03 6.03 0 0 1 .916-.78L9 1H8Zm.5 1.9L10.668 9H6.332L8.5 2.9ZM16 21a5 5 0 1 0 0-10 5 5 0 0 0 0 10Zm-.646-2.646 4-4-.708-.708L15 17.293l-1.646-1.647-.708.708 2 2 .354.353.354-.353Z'/%3E%3C/g%3E%3C/svg%3E")}.device-ios i.icon.icon-plus,.device-ios i.icon.icon-spellcheck{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-plus{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M22 12H12v10h-1V12H1v-1h10V1h1v10h10v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-settings{background-color:var(--brand-slide);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='m11.8 3 .4 2c.1.7.6 1.1 1.3 1.1.3 0 .5-.1.7-.2l1.9-1.2 1.1 1.1-1.1 1.8c-.3.4-.3.9-.1 1.3.2.4.5.7 1 .8l2.1.5v1.6l-2.1.4c-.5.1-.8.4-1 .8-.2.4-.1.9.1 1.2l1.2 1.9-1.1 1.1-1.8-1.1c-.2-.2-.5-.2-.8-.2-.6 0-1.2.5-1.3 1.1l-.5 2.1h-1.6l-.4-2c-.1-.7-.6-1.1-1.3-1.1-.3 0-.5.1-.7.2l-1.9 1.2-1.1-1.1 1.1-1.8c.3-.4.3-.9.1-1.3-.2-.4-.5-.7-1-.8l-2.1-.5v-1.6l2-.4c.5-.1.8-.4 1-.8.2-.4.1-.9-.1-1.2l-1-2 1.1-1.1 1.8 1.1c.3.2.5.3.8.3.6 0 1.2-.5 1.3-1.1l.5-2.1h1.5M11 15.5c2.5 0 4.5-2 4.5-4.5s-2-4.5-4.5-4.5-4.5 2-4.5 4.5 2 4.5 4.5 4.5M12.1 2H9.9c-.3 0-.5.2-.6.5l-.5 2.4c0 .2-.2.3-.3.3s-.1 0-.2-.1L6.2 3.8c-.1-.1-.2-.1-.4-.1-.1 0-.3 0-.4.1L3.8 5.4c-.1.2-.2.5 0 .8l1.3 2.1c.1.2.1.4-.2.5l-2.4.5c-.3.1-.5.3-.5.6v2.2c0 .3.2.5.5.6l2.4.5c.3.1.4.3.2.5l-1.3 2.1c-.2.2-.1.6.1.8l1.6 1.6c.1.1.3.2.4.2s.2 0 .3-.1L8.3 17c.1-.1.1-.1.2-.1s.3.1.3.3l.5 2.3c.1.3.3.5.6.5h2.2c.3 0 .5-.2.6-.5l.5-2.4c0-.2.1-.3.3-.3.1 0 .1 0 .2.1l2.1 1.3c.1.1.2.1.3.1.2 0 .3-.1.4-.2l1.6-1.6c.2-.2.2-.5.1-.8l-1.3-2.1c-.2-.2-.1-.5.2-.5l2.4-.5c.3-.1.5-.3.5-.6V9.8c0-.3-.2-.5-.5-.6l-2.4-.5c-.3-.1-.4-.3-.2-.5l1.3-2.1c.2-.2.1-.6-.1-.8l-1.6-1.6c-.1-.1-.3-.2-.4-.2-.1 0-.2 0-.3.1l-2.1 1.3c-.1.1-.1.1-.2.1s-.3-.1-.3-.3l-.5-2.2c-.1-.3-.3-.5-.6-.5zM11 14.5c-1.9 0-3.5-1.6-3.5-3.5S9.1 7.5 11 7.5s3.5 1.6 3.5 3.5-1.6 3.5-3.5 3.5z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-feedback{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill-rule='evenodd' d='M21 6H3v12h18V6ZM3 5a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H3Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m2.666 6.372.668-.744 8.666 7.7 8.666-7.7.668.744-9.334 8.3-9.334-8.3Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m9.376 11.33-6 7-.752-.66 6-7 .752.66ZM15.376 10.67l6 7-.752.66-6-7 .752-.66Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-feedback,.device-ios i.icon.icon-setup{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-setup{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M0 3v16h22V3H0zm21 14H1V5h20v12zM16.5 5.9l-7.2 7.2-.5 1.9H4v1h5c.4 0 .2 0 .2-.2l2.2-.6L18.7 8l-2.2-2.1zm-6.6 7.2 6.5-6.4L18 8l-6.5 6.4-1.6-1.3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-versions{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='-1 7 22 22'%3E%3Cpath d='M19 12c0-1.1-.9-2-2-2 0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2-1.1 0-2 .9-2 2-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V14c0-1.1-.9-2-2-2zM5 9h10c.6 0 1 .4 1 1H4c0-.6.4-1 1-1zm-2 2h14c.6 0 1 .4 1 1H2c0-.6.4-1 1-1zm17 15c0 .6-.4 1-1 1H1c-.6 0-1-.4-1-1V14c0-.6.4-1 1-1h18c.6 0 1 .4 1 1v12z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-additional,.device-ios i.icon.icon-versions{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-additional{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M18.5 15.5c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 3c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1zm0-11c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0-3c.6 0 1 .4 1 1s-.4 1-1 1-1-.4-1-1 .4-1 1-1zm0 5c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 3c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1zM6.9 3.8 1 18.9h1.5l1.8-4.7h6.9l1.7 4.7h1.5L8.6 3.8H6.9zm-2.2 9.1 3-7.9 3 7.9h-6z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-color{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='m8.9 12 2.3-6.3 2.2 6.3H8.9zm-4.2 5.8h2l1.6-4.3h5.6l1.5 4.3h2.1L12.3 3.5h-2.2L4.7 17.8z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-color,.device-ios i.icon.icon-text-selection{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-selection{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M7.6 10.3c.2.3.4.4.5.5.3.2.6.3 1 .3.7 0 1.3-.3 1.7-.8.4-.5.6-1.2.6-2.1 0-.9-.2-1.5-.6-2-.4-.4-.9-.7-1.6-.7-.3 0-.6.1-.9.2l-.7.7V3.8h-.8V11h.8v-.7zM8 6.9c.3-.3.7-.4 1.1-.4.5 0 .8.2 1 .5.2.4.4.8.4 1.4 0 .6-.1 1.1-.4 1.5-.2.4-.6.6-1.1.6-.6 0-1.1-.3-1.3-.9-.1-.4-.1-.8-.1-1.3 0-.6.1-1.1.4-1.4zm-2.3 3.5c-.1 0-.2 0-.2-.1s-.1-.1-.1-.2v-3c0-.5-.2-.9-.6-1.1-.4-.2-.8-.4-1.5-.4-.5 0-1 .1-1.4.4-.4.3-.6.7-.6 1.4h.8c0-.3.1-.5.2-.6.2-.2.5-.4 1-.4.4 0 .7.1.9.2.2.1.3.4.3.7 0 .1 0 .3-.1.3 0 .1-.1.2-.3.2L2.7 8c-.5.1-.9.2-1.2.5-.3.3-.5.6-.5 1.1 0 .4.2.8.5 1.1.3.3.7.4 1.2.4.4 0 .8-.1 1.1-.3.3-.2.6-.4.8-.6 0 .2.1.4.2.5.1.2.4.3.7.3h.3c.1 0 .2 0 .3-.1v-.6h-.2c-.1.1-.2.1-.2.1zM4.5 9.1c0 .5-.2.9-.7 1.2-.3.1-.6.2-.9.2-.3 0-.5-.1-.7-.2-.2-.2-.2-.4-.2-.7 0-.3.1-.6.4-.7.2-.1.4-.2.7-.2l.5-.1c.2 0 .3-.1.5-.1s.3-.1.4-.2v.8zm14-4.1L8.3 15.3l-.5 2c-.6.4-1.3.3-1.5.6-.3.4.9.4 1.5.3.4 0 .5 0 .5-.2l2.2-.6L20.7 7.1 18.5 5zM9 15.3l9.5-9.5L20 7.1l-9.5 9.5L9 15.3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-bullets{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M7 4v1h15V4H7zM1 6h3V3H1v3zm6 6h15v-1H7v1zm-6 1h3v-3H1v3zm6 6h15v-1H7v1zm-6 1h3v-3H1v3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-bullets,.device-ios i.icon.icon-numbers{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-numbers{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M7 3.8v1h15v-1H7zm0 8h15v-1H7v1zm0 7h15v-1H7v1zM3.1 6.9h.7V2h-.5c-.1.4-.2.6-.4.7-.2.1-.5.2-.9.2v.5h1.2v3.5zM3.3 9c-.7 0-1.2.2-1.4.7-.2.3-.2.6-.2 1h.6c0-.3.1-.5.1-.7.2-.3.5-.5.9-.5.3 0 .5.1.7.3s.3.4.3.7c0 .2-.1.5-.3.7-.1.1-.3.3-.6.4l-.7.4c-.4.3-.7.5-.9.9-.2.3-.2.7-.3 1.1h3.4v-.6H2.2c.1-.2.2-.5.4-.7.1-.1.3-.2.5-.4l.5-.3c.4-.2.7-.4.9-.6.3-.3.4-.6.4-1s-.1-.7-.4-1c-.2-.3-.6-.4-1.2-.4zm.8 9.3c.2-.1.3-.2.4-.3.2-.2.2-.4.2-.7 0-.4-.1-.7-.4-1-.3-.2-.7-.3-1.2-.3-.6 0-1.1.2-1.3.7-.1.3-.2.6-.2.9h.6c0-.3.1-.5.1-.6.2-.3.4-.4.9-.4.2 0 .4.1.6.2.2.1.3.2.3.5s-.1.6-.4.7c-.1.1-.3.1-.6.1H2.8v.5H3c.4 0 .7.1.9.2.2.1.3.4.3.7 0 .3-.1.5-.3.7-.2.2-.5.3-.8.3-.4 0-.7-.1-.9-.4-.1-.1-.2-.4-.2-.7h-.5c0 .5.1.8.4 1.2.2.2.6.4 1.2.4s1-.1 1.3-.4c.3-.3.5-.7.5-1.1 0-.3-.1-.5-.2-.7-.2-.3-.4-.5-.6-.5z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-linespacing{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M22 4V3H1v1h10v.3L8 7.4l.7.7L11 5.7v11.6l-2.3-2.4-.7.7 3 3.1v.3H1v1h21v-1H12v-.4l3-3-.7-.7-2.3 2.3V5.8l2.3 2.3.7-.7-3-3V4z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-linespacing,.device-ios i.icon.icon-text-align-center{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-align-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm3 4v1h14V7H4zm-3 5h21v-1H1v1zm3 3v1h14v-1H4zm-3 5h21v-1H1v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-just{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm0 5h21V7H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-just,.device-ios i.icon.icon-text-align-left{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-align-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm14 4H1v1h14V7zM1 12h21v-1H1v1zm14 3H1v1h14v-1zM1 20h21v-1H1v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm7 5h14V7H8v1zm14 3H1v1h21v-1zM8 16h14v-1H8v1zm14 3H1v1h21v-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-de-indent,.device-ios i.icon.icon-text-align-right{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-de-indent{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 20v-1h21v1H1zm10-5h11v1H11v-1zm0-4h11v1H11v-1zm0-4h11v1H11V7zM6.3 7l.7.7-3.8 3.8L7 15.3l-.7.7L2 11.8l-.2-.3.2-.3L6.3 7zM1 3h21v1H1V3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-in-indent{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 20v-1h21v1H1zm11-4H1v-1h11v1zm0-4H1v-1h11v1zm0-4H1V7h11v1zm9 3.2.2.3-.2.3-4.3 4.2-.7-.7 3.8-3.8L16 7.7l.7-.7 4.3 4.2zM22 4H1V3h21v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-in-indent,.device-ios i.icon.icon-table-add-column-left{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-table-add-column-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M15 19H7v-4H0V2h22v17h-7zm0-1h6v-3h-6v3zm0-4h6v-3h-6v3zm-7 4h6v-3H8v3zm0-4h6v-3H8v3zm6-4V7H8v3h6zM8 3v3h6V3H8zm13 0h-6v3h6V3zm-6 4v3h6V7h-6zM3 16h1v2h2v1H4v2H3v-2H1v-1h2v-2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-add-column-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M0 19V2h22v13h-7v4H0zm7-4H1v3h6v-3zm0-4H1v3h6v-3zm7 4H8v3h6v-3zm0-4H8v3h6v-3zm0-1V7H8v3h6zM8 3v3h6V3H8zM1 6h6V3H1v3zm0 1v3h6V7H1zm18 11h2v1h-2v2h-1v-2h-2v-1h2v-2h1v2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-add-column-right,.device-ios i.icon.icon-table-add-row-above{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-table-add-row-above{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M21 20H0V1h15v6h7v13h-1zM7 8H1v3h6V8zm0 4H1v3h6v-3zm0 4H1v3h6v-3zm1 3h6v-3H8v3zm0-4h6v-3H8v3zm0-4h6V8H8v3zm13-3h-6v3h6V8zm0 4h-6v3h6v-3zm0 4h-6v3h6v-3zM19 6h-1V4h-2V3h2V1h1v2h2v1h-2v2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-add-row-below{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M22 1v13h-7v6H0V1h22zM7 10H1v3h6v-3zm0-4H1v3h6V6zm0-4H1v3h6V2zm1 3h6V2H8v3zm0 4h6V6H8v3zm0 4h6v-3H8v3zm13-3h-6v3h6v-3zm0-4h-6v3h6V6zm0-4h-6v3h6V2zm-2 15h2v1h-2v2h-1v-2h-2v-1h2v-2h1v2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-add-row-below,.device-ios i.icon.icon-table-remove-column{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-table-remove-column{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M21 19h-8.6c-.9 1.8-2.7 3-4.9 3s-4-1.2-4.9-3H0V2h22v17h-1zM7.5 12C5 12 3 14 3 16.5S5 21 7.5 21s4.5-2 4.5-4.5S10 12 7.5 12zM14 3H8v3h6V3zm0 4H8v3h6V7zm0 4H8v.1c1.9.2 3.5 1.3 4.4 2.9H14v-3zm0 4h-1.2c.1.5.2 1 .2 1.5s-.1 1-.2 1.5H14v-3zm7-12h-6v3h6V3zm0 4h-6v3h6V7zm0 4h-6v3h6v-3zm0 4h-6v3h6v-3zM9.6 19.3l-2.1-2.1-2.1 2.1-.7-.7 2.1-2.1-2.1-2.1.7-.7 2.1 2.1 2.1-2.1.7.7-2.1 2.1 2.1 2.1-.7.7z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-remove-row{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M21 19h-8.6c-.9 1.8-2.7 3-4.9 3s-4-1.2-4.9-3H0V2h22v17h-1zM1 18h1.2c-.1-.5-.2-1-.2-1.5s.1-1 .2-1.5H1v3zM7 3H1v3h6V3zm0 4H1v3h6V7zm.5 5C5 12 3 14 3 16.5S5 21 7.5 21s4.5-2 4.5-4.5S10 12 7.5 12zM14 3H8v3h6V3zm0 4H8v3h6V7zm0 8h-1.2c.1.5.2 1 .2 1.5s-.1 1-.2 1.5H14v-3zm7-12h-6v3h6V3zm0 4h-6v3h6V7zm0 8h-6v3h6v-3zM9.6 19.3l-2.1-2.1-2.1 2.1-.7-.7 2.1-2.1-2.1-2.1.7-.7 2.1 2.1 2.1-2.1.7.7-2.1 2.1 2.1 2.1-.7.7z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-expand-down,.device-ios i.icon.icon-table-remove-row{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-expand-down{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='m20.5 6.5 1.1 1.1L11 18 .5 7.5l1.1-1.1 9.5 9.5 9.4-9.4z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-pagebreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M8 14v1h1v-1H8zm-2 0v1h1v-1H6zm12 7H3v-6H2v7h17v-7h-1v6zM4 14v1h1v-1H4zm10 0v1h1v-1h-1zm-4 0v1h1v-1h-1zM8.2 1 2 7.6V14h1V9h6V2h9v12h1V1H8.2zM8 8H3.1L8 2.8V8zm4 6v1h1v-1h-1zm4 0v1h1v-1h-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-pagebreak,.device-ios i.icon.icon-sectionbreak{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-sectionbreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M20 14V2H3v12H2V1h19v13h-1zM5 14v1H4v-1h1zm2 0v1H6v-1h1zm2 0v1H8v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm1 0h1v1h-1v-1zM3 21h17v-6h1v7H2v-7h1v6z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-stringbreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M18 12H5.1L9 15.9l-.7.7-4.5-4.5-.6-.6.6-.6 4.5-4.5.7.7L5.1 11H18V5h1v7h-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-pagenumber,.device-ios i.icon.icon-stringbreak{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-pagenumber{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M8.2 1 2 7.6V22h17V1H8.2zM8 2.8V8H3.1L8 2.8zM18 21H3V9h6V2h9v19zm-6-2h1v-4h-.7c0 .2-.1-.1-.1 0-.1.1-.2 0-.3 0-.1.1-.2.1-.4.1h-.4v.9h.9v3zm3.3-1.7c-.3.6-.2 1.1-.3 1.7h.9c0-.3 0-.6.1-.9.1-.3.1-.6.3-.9.1-.3.3-.6.4-.9.2-.3.1-.3.3-.5V15h-3v1h1.9c-.3.4-.4.7-.6 1.3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-link{background-color:var(--brand-slide);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M12.4 9.8s-2.1-.1-3.8 1.2c-2.8 2-3.3 4.3-3.3 4.3s1.6-1.7 3.5-2.5c1.7-.7 3.7-.4 3.7-.4v1.9l4.8-3.3-4.8-3.3v2.1zM11 1C5.5 1 1 5.5 1 11s4.5 10 10 10 10-4.5 10-10S16.5 1 11 1zm0 19c-5 0-9-4.1-9-9 0-5 4-9 9-9s9 4.1 9 9c0 5-4 9-9 9z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-image-library{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cdefs%3E%3ClinearGradient id='a' x1='11.08' x2='11.08' y1='10.26' y2='1.26' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23f3e916'/%3E%3Cstop offset='1' stop-color='%23f89d34'/%3E%3C/linearGradient%3E%3ClinearGradient id='b' x1='11.08' x2='11.08' y1='20.44' y2='11.88' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%235eb6e8'/%3E%3Cstop offset='1' stop-color='%23958cc3'/%3E%3C/linearGradient%3E%3ClinearGradient id='c' x1='1.46' x2='10.46' y1='11.05' y2='11.05' gradientTransform='rotate(90 5.955 11.045)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23cc8dba'/%3E%3Cstop offset='1' stop-color='%23f86867'/%3E%3C/linearGradient%3E%3ClinearGradient id='d' x1='11.73' x2='20.73' y1='11.05' y2='11.05' gradientTransform='rotate(90 16.23 11.05)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%236ac07f'/%3E%3Cstop offset='1' stop-color='%23c5da3d'/%3E%3C/linearGradient%3E%3ClinearGradient id='e' x1='11.74' x2='17.52' y1='10.42' y2='4.63' gradientTransform='rotate(135 14.625 7.528)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23c5da3d'/%3E%3Cstop offset='1' stop-color='%23f3e916'/%3E%3C/linearGradient%3E%3ClinearGradient id='f' x1='4.7' x2='10.48' y1='17.49' y2='11.71' gradientTransform='rotate(135 7.55 14.638)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%239595c3'/%3E%3Cstop offset='1' stop-color='%23cc8dba'/%3E%3C/linearGradient%3E%3ClinearGradient id='g' x1='4.69' x2='10.47' y1='4.64' y2='10.42' gradientTransform='rotate(45 7.572 7.527)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23f86867'/%3E%3Cstop offset='1' stop-color='%23f89d34'/%3E%3C/linearGradient%3E%3ClinearGradient id='h' x1='11.77' x2='17.55' y1='11.78' y2='17.56' gradientTransform='rotate(45 14.618 14.635)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%235ec0e8'/%3E%3Cstop offset='1' stop-color='%236ac07f'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg data-name='Слой 1' style='isolation:isolate'%3E%3Crect width='22' height='22' x='.09' y='.01' rx='4' ry='4' style='opacity:.2'/%3E%3Crect width='21.04' height='21.04' x='.57' y='.49' rx='3.6' ry='3.6' style='fill:%23fff'/%3E%3Crect width='5.5' height='9' x='8.33' y='1.26' rx='2.5' ry='2.5' style='fill:url(%23a);mix-blend-mode:multiply'/%3E%3Crect width='5.5' height='9' x='8.33' y='11.76' rx='2.5' ry='2.5' style='fill:url(%23b)'/%3E%3Crect width='5.5' height='9' x='3.21' y='6.55' rx='2.5' ry='2.5' style='fill:url(%23c);mix-blend-mode:multiply' transform='rotate(-90 5.955 11.045)'/%3E%3Crect width='5.5' height='9' x='13.48' y='6.55' rx='2.5' ry='2.5' style='fill:url(%23d);mix-blend-mode:multiply' transform='rotate(-90 16.23 11.05)'/%3E%3Crect width='5.5' height='9' x='11.87' y='3.03' rx='2.5' ry='2.5' style='fill:url(%23e);mix-blend-mode:multiply' transform='rotate(-135 14.623 7.527)'/%3E%3Crect width='5.5' height='9' x='4.8' y='10.14' rx='2.5' ry='2.5' style='fill:url(%23f);mix-blend-mode:multiply' transform='rotate(-135 7.552 14.639)'/%3E%3Crect width='5.5' height='9' x='4.83' y='3.03' rx='2.5' ry='2.5' style='fill:url(%23g);mix-blend-mode:multiply' transform='rotate(-45 7.576 7.522)'/%3E%3Crect width='5.5' height='9' x='11.87' y='10.14' rx='2.5' ry='2.5' style='fill:url(%23h);mix-blend-mode:multiply' transform='rotate(-45 14.625 14.642)'/%3E%3C/g%3E%3C/svg%3E");height:22px;width:22px}.device-ios i.icon.icon-text-valign-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M2 2h19v1H2zM2 4h19v1H2zM12 18h-1V7.83L8.65 9.8 8 8.94 11.5 6 15 9l-.65.8L12 7.83V18z' class='cls-1'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-valign-middle,.device-ios i.icon.icon-text-valign-top{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-valign-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M2 10h19v1H2zM2 12h19v1H2zM11 2h1v5.17l2.35-1.97.65.86L11.5 9 8 6l.65-.8L11 7.17V2zM12 21h-1v-5.17L8.65 17.8 8 16.94 11.5 14l3.5 3-.65.8L12 15.83V21z' class='cls-1'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-valign-bottom{background-color:var(--brand-slide);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M2 18h19v1H2zM2 20h19v1H2zM11 4h1v11.17l2.35-1.97.65.86L11.5 17 8 14l.65-.8L11 15.17V4z' class='cls-1'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-table-borders-all{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-all,.device-ios i.icon.icon-table-borders-none{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-none{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z' opacity='.3'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-inner{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M26 13H14V1h-1v12H1v1h12v12h1V14h12v-1z'/%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-inner,.device-ios i.icon.icon-table-borders-outer{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-outer{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h1v27H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-center,.device-ios i.icon.icon-table-borders-left{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M13 0h1v27h-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M26 0h1v27h-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-right,.device-ios i.icon.icon-table-borders-top{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h27v1H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 13h27v1H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-bottom,.device-ios i.icon.icon-table-borders-middle{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-bottom{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 26h27v1H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-backward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h17v17H1z' opacity='.3'/%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-backward,.device-ios i.icon.icon-move-forward{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-move-forward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z' opacity='.3'/%3E%3Cpath d='M1 1h17v17H1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-background{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M8 8h13v13H8z' opacity='.3'/%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-background,.device-ios i.icon.icon-move-foreground{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-move-foreground{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z' opacity='.3'/%3E%3Cpath d='M8 8h13v13H8z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-align-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M1 21h1V1H1v20zm3-8v4h16v-4H4zm8-8H4v4h8V5z' style='fill-rule:evenodd;clip-rule:evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-align-center,.device-ios i.icon.icon-align-left{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-align-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M19 13h-8V9h4V5h-4V1h-1v4H6v4h4v4H2v4h8v4h1v-4h8z' style='fill-rule:evenodd;clip-rule:evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-align-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M20 1v20h1V1h-1zM2 17h16v-4H2v4zm8-8h8V5h-8v4z' style='fill-rule:evenodd;clip-rule:evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-align-right,.device-ios i.icon.icon-align-top{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-align-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M1 1v1h20V1H1zm8 3H5v16h4V4zm8 8V4h-4v8h4z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-align-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M13 2v8H9V6H5v4H1v1h4v4h4v-4h4v8h4v-8h4v-1h-4V2z' style='fill-rule:evenodd;clip-rule:evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-align-bottom,.device-ios i.icon.icon-align-middle{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-align-bottom{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M21 20v-1H1v1h20zM9 1H5v16h4V1zm4 8v8h4V9h-4z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-align-horizontal{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M1 1v1h20V1H1zm0 18v1h20v-1H1zM9 3H5v15h4V3zm8 11V7h-4v7h4z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-align-horizontal,.device-ios i.icon.icon-align-vertical{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-align-vertical{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M1 21h1V1H1v20zm18 0h1V1h-1v20zM3 13v4h15v-4H3zm11-8H7v4h7V5z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-users{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M16 7c0 2.341-.584 4.135-1.386 5.312C13.807 13.497 12.834 14 12 14c-.834 0-1.807-.503-2.614-1.688C8.584 11.135 8 9.341 8 7c0-2.385 1.979-4 4-4s4 1.615 4 4Zm-.81 6.22C14.286 14.375 13.144 15 12 15s-2.287-.625-3.19-1.78c-1.405.564-2.597 1.129-3.54 1.702C3.553 15.967 3 16.832 3 17.5c0 .755.426 1.588 1.823 2.288C6.25 20.503 8.573 21 12 21c3.427 0 5.75-.497 7.177-1.212C20.574 19.088 21 18.255 21 17.5c0-.667-.553-1.533-2.27-2.578-.943-.573-2.135-1.138-3.54-1.702Zm.564-.85C16.514 11.028 17 9.21 17 7c0-3-2.491-5-5-5S7 4 7 7c0 2.21.486 4.028 1.246 5.37C4.39 13.94 2 15.579 2 17.5 2 19.985 5 22 12 22s10-2.015 10-4.5c0-1.921-2.39-3.56-6.246-5.13Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-app-settings,.device-ios i.icon.icon-users{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-app-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M7 14h9a4 4 0 0 1 0 8H7a4 4 0 0 1 0-8Zm9-1a5 5 0 0 1 0 10H7a5 5 0 0 1 0-10h9Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M16 20a2 2 0 1 1 0-4 2 2 0 0 1 0 4Zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6ZM16 3H7a4 4 0 1 0 0 8h9a4 4 0 0 0 0-8ZM7 2a5 5 0 0 0 0 10h9a5 5 0 0 0 0-10H7Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M7 9a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm0 1a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-menu-comment{background-color:var(--text-tertiary);height:30px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath fill='%23A3A3A3' fill-rule='evenodd' d='M10 15a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.714a1.714 1.714 0 1 0 0-3.428 1.714 1.714 0 0 0 0 3.428ZM18 15a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.714a1.714 1.714 0 1 0 0-3.428 1.714 1.714 0 0 0 0 3.428ZM26 15a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.714a1.714 1.714 0 1 0 0-3.428 1.714 1.714 0 0 0 0 3.428Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:30px}.device-ios i.icon.icon-resolve-comment{background-color:var(--brand-slide);height:30px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M11.62 20.856a.5.5 0 0 0 .738-.021L22.516 9.058a.75.75 0 1 0-1.138-.98l-9.023 10.509a.5.5 0 0 1-.736.025l-3.513-3.575a.755.755 0 0 0-1.082 1.053l4.596 4.765Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:30px}.device-ios i.icon.icon-resolve-comment.check{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath fill='%23fff' d='M0 0h30v30H0V0Z'/%3E%3Cpath fill='%234cd964' fill-rule='evenodd' d='M11.62 20.856a.5.5 0 0 0 .738-.021L22.516 9.058a.75.75 0 1 0-1.138-.98l-9.023 10.509a.5.5 0 0 1-.736.025l-3.513-3.575a.755.755 0 0 0-1.083 1.054l4.597 4.764Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:30px;width:30px}.device-ios i.icon.icon-insert-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M20.154 9.007h-8.308c-1.02 0-1.846.828-1.846 1.848v4.314c0 1.021.827 1.849 1.846 1.849h1.987c.108 0 .212.038.295.107l4.115 3.267c.3.25.757.037.757-.355V17.48c0-.255.207-.462.462-.462h.692c1.02 0 1.846-.828 1.846-1.849v-4.314c0-1.02-.827-1.848-1.846-1.848ZM20 10.008a1 1 0 0 1 1 1.002v4.005a1 1 0 0 1-1 1.002h-1.997L18 18.9v.1l-3.5-2.983H12a1 1 0 0 1-1-1.002V11.01a1 1 0 0 1 1-1h8Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' d='M14.5 3h-10C3.19 3 2 4.215 2 5.503v6.532c0 1.287 1.19 1.978 2.5 1.978h1c.328 0 .5.179.5.5v3.005c0 .494.614.817 1 .5l4-3.032V13.5l-4 3v-3.488H4.5c-.71 0-1.5-.28-1.5-.977V5.503c0-.698.79-1.502 1.5-1.502h10c.71 0 1.5.804 1.5 1.502v2.503h1V5.503C17 4.215 15.81 3 14.5 3Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-slide,.device-ios i.icon.icon-insert-comment{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-add-slide{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M4 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6Zm7 4.933V8h2v2.933h3v2h-3V16h-2v-3.067H8v-2h3Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-shape{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cellipse cx='15.333' cy='14.4' fill='var(--brand-slide)' rx='5.667' ry='5.6'/%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M5 4.8a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h4.328a6.317 6.317 0 0 1-.47-2.4c0-3.534 2.899-6.4 6.475-6.4.56 0 1.102.07 1.62.202V5.8a1 1 0 0 0-1-1H5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-image,.device-ios i.icon.icon-add-shape{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-add-image{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='m5.792 16.667 3.083-3.5 2.25 2.333L14.21 12l4 4.667H5.792Zm13.667 1.859c.361-.316.542-.68.542-1.094V6.568c0-.413-.18-.778-.542-1.094A1.842 1.842 0 0 0 18.21 5H5.792c-.472 0-.89.158-1.25.474C4.18 5.79 4 6.154 4 6.568v10.864c0 .414.18.778.542 1.094.36.316.778.474 1.25.474h12.417c.472 0 .89-.158 1.25-.474ZM8.8 11.222c.884 0 1.6-.696 1.6-1.555 0-.86-.716-1.556-1.6-1.556-.883 0-1.6.697-1.6 1.556 0 .859.717 1.555 1.6 1.555Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-other{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M7 18a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm6.5 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm5 1.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-other,.device-ios i.icon.icon-add-table{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-add-table{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M1 2h21v19H1V2Zm11 1h9v5h-9V3Zm0 6h9v5h-9V9Zm-1 5V9H2v5h9Zm-9 1v5h9v-5H2Zm10 0h9v5h-9v-5ZM11 3v5H2V3h9Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-slide{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--fill-white)' fill-rule='evenodd' d='M4 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6Zm7 4.933V8h2v2.933h3v2h-3V16h-2v-3.067H8v-2h3Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-shape,.device-ios .tab-link-active i.icon.icon-add-slide{background-color:var(--fill-white);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios .tab-link-active i.icon.icon-add-shape{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cellipse cx='15.333' cy='14.4' fill='%23fff' rx='5.667' ry='5.6'/%3E%3Cpath fill='var(--fill-white)' fill-rule='evenodd' d='M5 4.8a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h4.328a6.317 6.317 0 0 1-.47-2.4c0-3.534 2.899-6.4 6.475-6.4.56 0 1.102.07 1.62.202V5.8a1 1 0 0 0-1-1H5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-image{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--fill-white)' fill-rule='evenodd' d='m5.792 16.667 3.083-3.5 2.25 2.333L14.21 12l4 4.667H5.792Zm13.667 1.859c.361-.316.542-.68.542-1.094V6.568c0-.413-.18-.778-.542-1.094A1.842 1.842 0 0 0 18.21 5H5.792c-.472 0-.89.158-1.25.474C4.18 5.79 4 6.154 4 6.568v10.864c0 .414.18.778.542 1.094.36.316.778.474 1.25.474h12.417c.472 0 .89-.158 1.25-.474ZM8.8 11.222c.884 0 1.6-.696 1.6-1.555 0-.86-.716-1.556-1.6-1.556-.883 0-1.6.697-1.6 1.556 0 .859.717 1.555 1.6 1.555Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-image,.device-ios .tab-link-active i.icon.icon-add-other{background-color:var(--fill-white);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios .tab-link-active i.icon.icon-add-other{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--fill-white)' fill-rule='evenodd' d='M7 18a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm6.5 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm5 1.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-expand-up{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--fill-white)' viewBox='0 0 22 22'%3E%3Cpath d='M10.9 5.1 2 13.9 4.1 16l7-6.8 6.8 6.8 2.1-2.1-8.8-8.8-.1-.1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-expand-down,.device-android i.icon.icon-expand-up{background-color:var(--brand-slide);height:17px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:17px}.device-android i.icon.icon-expand-down{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M10.9 16.9 2 8.1 4.1 6l7 6.8L17.9 6 20 8.1l-8.8 8.8-.1.1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-edit{background-color:var(--brand-slide);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M0 20h22v1H0v-1zM17.1 3.1 3.5 16.7 3 20l3.3-.5L19.9 5.9zM20.5 5.3 22 3.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5 2.8 2.8z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-edit-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cpath fill-rule='evenodd' d='M2.5 15 8 1h2l4.415 11.257-1.601 1.601L12.12 12H5.87l-1.12 3zM9 3.67 6.62 10h4.76z' clip-rule='evenodd'/%3E%3Cpath d='M10 19.5V22h2.5l7.372-7.372-2.5-2.5zm11.805-6.805c.26-.26.26-.68 0-.94l-1.56-1.56a.664.664 0 0 0-.94 0l-1.22 1.22 2.5 2.5z'/%3E%3C/svg%3E")}.device-android i.icon.icon-edit-settings,.device-android i.icon.icon-play{background-color:var(--toolbar-icons);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-play{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M4.046 2.988A.286.286 0 0 1 4.07 3c.59.336 12.711 7.293 13.897 8.027-.583.342-13.013 7.488-13.934 7.983l.013-16.022M3.99 2C3.443 2 3 2.453 3 3.015V19.01c0 .613.479.99.993.99.173 0 .35-.043.514-.133.89-.491 13.188-7.559 13.94-8a.99.99 0 0 0 0-1.732C17.404 9.533 5.153 2.502 4.54 2.154A1.11 1.11 0 0 0 3.99 2z'/%3E%3C/svg%3E")}.device-android i.icon.icon-reader{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M17 21H1V9h6V2h10v5h1V1H6.2L0 7.6V22h18v-3h-1v2zM6 2.8V8H1.1L6 2.8zM13 8c-5.1 0-9 5-9 5s4.1 5 9 5c5 0 9-5 9-5s-4-5-9-5zm-4.3 7.5C6.8 14.4 6.4 13 6.4 13s.4-1.5 2.4-2.6C8.3 11.2 8 12 8 13c0 .9.3 1.8.7 2.5zm4.3 1.2c-2.1 0-3.7-1.7-3.7-3.7 0-2.1 1.7-3.7 3.7-3.7 2.1 0 3.7 1.7 3.7 3.7 0 2.1-1.6 3.7-3.7 3.7zm4.3-1.2c.4-.7.7-1.6.7-2.5 0-1-.3-1.8-.7-2.6 2 1.1 3.4 2.6 3.4 2.6s-1.5 1.4-3.4 2.5zM13 11.7c-.7 0-1.3.6-1.3 1.3s.6 1.3 1.3 1.3 1.3-.6 1.3-1.3-.6-1.3-1.3-1.3z'/%3E%3C/svg%3E")}.device-android i.icon.icon-download,.device-android i.icon.icon-reader{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-download{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M12 0h-1v14l-3.6-3.7-.7.8 4.8 4.9 4.8-4.9-.7-.8L12 14V0Z'/%3E%3Cpath d='M14 5v1h5v14H4V6h5V5H3v16h17V5h-6Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-print{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath fill-rule='evenodd' d='M5 1h12v5h4v11h-4v4H5v-4H1V6h4V1Zm1 5h10V2H6v4ZM5 16v-3H2v3h3Zm-3-4h18V7H2v5Zm18 1h-3v3h3v-3Zm-4 0H6v7h10v-7Zm-2 3H8v-1h6v1Zm0 2H8v-1h6v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-print,.device-android i.icon.icon-spellcheck{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-spellcheck{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cg fill-rule='evenodd' clip-rule='evenodd'%3E%3Cpath d='M8 1 3 15h1.2l1.777-5h5.046l.654 1.84a6.03 6.03 0 0 1 .916-.78L9 1H8Zm.5 1.9L10.668 9H6.332L8.5 2.9ZM16 21a5 5 0 1 0 0-10 5 5 0 0 0 0 10Zm-.646-2.646 4-4-.708-.708L15 17.293l-1.646-1.647-.708.708 2 2 .354.353.354-.353Z'/%3E%3C/g%3E%3C/svg%3E")}.device-android i.icon.icon-feedback{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill-rule='evenodd' d='M21 6H3v12h18V6ZM2 5v14h20V5H2Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m2.666 6.372.668-.744 8.666 7.7 8.666-7.7.668.744-9.334 8.3-9.334-8.3Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m9.376 11.33-6 7-.752-.66 6-7 .752.66ZM15.376 10.67l6 7-.752.66-6-7 .752-.66Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-feedback,.device-android i.icon.icon-setup{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-setup{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M0 3v16h22V3H0zm21 14H1V5h20v12zM16.5 5.9l-7.2 7.2-.5 1.9H4v1h5c.4 0 .2 0 .2-.2l2.2-.6L18.7 8l-2.2-2.1zm-6.6 7.2 6.5-6.4L18 8l-6.5 6.4-1.6-1.3z'/%3E%3C/svg%3E")}.device-android i.icon.icon-versions{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='-1 7 22 22'%3E%3Cpath d='M19 12c0-1.1-.9-2-2-2 0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2-1.1 0-2 .9-2 2-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V14c0-1.1-.9-2-2-2zM5 9h10c.6 0 1 .4 1 1H4c0-.6.4-1 1-1zm-2 2h14c.6 0 1 .4 1 1H2c0-.6.4-1 1-1zm17 15c0 .6-.4 1-1 1H1c-.6 0-1-.4-1-1V14c0-.6.4-1 1-1h18c.6 0 1 .4 1 1v12z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-center,.device-android i.icon.icon-versions{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-text-align-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm3 4v1h14V7H4zm-3 5h21v-1H1v1zm3 3v1h14v-1H4zm-3 5h21v-1H1v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-just{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm0 5h21V7H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-just,.device-android i.icon.icon-text-align-left{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-text-align-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm14 4H1v1h14V7zM1 12h21v-1H1v1zm14 3H1v1h14v-1zM1 20h21v-1H1v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm7 5h14V7H8v1zm14 3H1v1h21v-1zM8 16h14v-1H8v1zm14 3H1v1h21v-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-de-indent,.device-android i.icon.icon-text-align-right{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-de-indent{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 20v-1h21v1H1zm10-5h11v1H11v-1zm0-4h11v1H11v-1zm0-4h11v1H11V7zM6.3 7l.7.7-3.8 3.8L7 15.3l-.7.7L2 11.8l-.2-.3.2-.3L6.3 7zM1 3h21v1H1V3z'/%3E%3C/svg%3E")}.device-android i.icon.icon-in-indent{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 20v-1h21v1H1zm11-4H1v-1h11v1zm0-4H1v-1h11v1zm0-4H1V7h11v1zm9 3.2.2.3-.2.3-4.3 4.2-.7-.7 3.8-3.8L16 7.7l.7-.7 4.3 4.2zM22 4H1V3h21v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-in-indent,.device-android i.icon.icon-table-add-column-left{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-table-add-column-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M15 19H7v-4H0V2h22v17h-7zm0-1h6v-3h-6v3zm0-4h6v-3h-6v3zm-7 4h6v-3H8v3zm0-4h6v-3H8v3zm6-4V7H8v3h6zM8 3v3h6V3H8zm13 0h-6v3h6V3zm-6 4v3h6V7h-6zM3 16h1v2h2v1H4v2H3v-2H1v-1h2v-2z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-add-column-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M0 19V2h22v13h-7v4H0zm7-4H1v3h6v-3zm0-4H1v3h6v-3zm7 4H8v3h6v-3zm0-4H8v3h6v-3zm0-1V7H8v3h6zM8 3v3h6V3H8zM1 6h6V3H1v3zm0 1v3h6V7H1zm18 11h2v1h-2v2h-1v-2h-2v-1h2v-2h1v2z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-add-column-right,.device-android i.icon.icon-table-add-row-above{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-table-add-row-above{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M21 20H0V1h15v6h7v13h-1zM7 8H1v3h6V8zm0 4H1v3h6v-3zm0 4H1v3h6v-3zm1 3h6v-3H8v3zm0-4h6v-3H8v3zm0-4h6V8H8v3zm13-3h-6v3h6V8zm0 4h-6v3h6v-3zm0 4h-6v3h6v-3zM19 6h-1V4h-2V3h2V1h1v2h2v1h-2v2z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-add-row-below{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M22 1v13h-7v6H0V1h22zM7 10H1v3h6v-3zm0-4H1v3h6V6zm0-4H1v3h6V2zm1 3h6V2H8v3zm0 4h6V6H8v3zm0 4h6v-3H8v3zm13-3h-6v3h6v-3zm0-4h-6v3h6V6zm0-4h-6v3h6V2zm-2 15h2v1h-2v2h-1v-2h-2v-1h2v-2h1v2z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-add-row-below,.device-android i.icon.icon-table-remove-column{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-table-remove-column{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M21 19h-8.6c-.9 1.8-2.7 3-4.9 3s-4-1.2-4.9-3H0V2h22v17h-1zM7.5 12C5 12 3 14 3 16.5S5 21 7.5 21s4.5-2 4.5-4.5S10 12 7.5 12zM14 3H8v3h6V3zm0 4H8v3h6V7zm0 4H8v.1c1.9.2 3.5 1.3 4.4 2.9H14v-3zm0 4h-1.2c.1.5.2 1 .2 1.5s-.1 1-.2 1.5H14v-3zm7-12h-6v3h6V3zm0 4h-6v3h6V7zm0 4h-6v3h6v-3zm0 4h-6v3h6v-3zM9.6 19.3l-2.1-2.1-2.1 2.1-.7-.7 2.1-2.1-2.1-2.1.7-.7 2.1 2.1 2.1-2.1.7.7-2.1 2.1 2.1 2.1-.7.7z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-remove-row{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M21 19h-8.6c-.9 1.8-2.7 3-4.9 3s-4-1.2-4.9-3H0V2h22v17h-1zM1 18h1.2c-.1-.5-.2-1-.2-1.5s.1-1 .2-1.5H1v3zM7 3H1v3h6V3zm0 4H1v3h6V7zm.5 5C5 12 3 14 3 16.5S5 21 7.5 21s4.5-2 4.5-4.5S10 12 7.5 12zM14 3H8v3h6V3zm0 4H8v3h6V7zm0 8h-1.2c.1.5.2 1 .2 1.5s-.1 1-.2 1.5H14v-3zm7-12h-6v3h6V3zm0 4h-6v3h6V7zm0 8h-6v3h6v-3zM9.6 19.3l-2.1-2.1-2.1 2.1-.7-.7 2.1-2.1-2.1-2.1.7-.7 2.1 2.1 2.1-2.1.7.7-2.1 2.1 2.1 2.1-.7.7z'/%3E%3C/svg%3E")}.device-android i.icon.icon-pagebreak,.device-android i.icon.icon-table-remove-row{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-pagebreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M8 14v1h1v-1H8zm-2 0v1h1v-1H6zm12 7H3v-6H2v7h17v-7h-1v6zM4 14v1h1v-1H4zm10 0v1h1v-1h-1zm-4 0v1h1v-1h-1zM8.2 1 2 7.6V14h1V9h6V2h9v12h1V1H8.2zM8 8H3.1L8 2.8V8zm4 6v1h1v-1h-1zm4 0v1h1v-1h-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-sectionbreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M20 14V2H3v12H2V1h19v13h-1zM5 14v1H4v-1h1zm2 0v1H6v-1h1zm2 0v1H8v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm1 0h1v1h-1v-1zM3 21h17v-6h1v7H2v-7h1v6z'/%3E%3C/svg%3E")}.device-android i.icon.icon-sectionbreak,.device-android i.icon.icon-stringbreak{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-stringbreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M18 12H5.1L9 15.9l-.7.7-4.5-4.5-.6-.6.6-.6 4.5-4.5.7.7L5.1 11H18V5h1v7h-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-pagenumber{height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M8.2 1 2 7.6V22h17V1H8.2zM8 2.8V8H3.1L8 2.8zM18 21H3V9h6V2h9v19zm-6-2h1v-4h-.7c0 .2-.1-.1-.1 0-.1.1-.2 0-.3 0-.1.1-.2.1-.4.1h-.4v.9h.9v3zm3.3-1.7c-.3.6-.2 1.1-.3 1.7h.9c0-.3 0-.6.1-.9.1-.3.1-.6.3-.9.1-.3.3-.6.4-.9.2-.3.1-.3.3-.5V15h-3v1h1.9c-.3.4-.4.7-.6 1.3z'/%3E%3C/svg%3E");width:22px}.device-android i.icon.icon-image-library,.device-android i.icon.icon-pagenumber{background-color:var(--brand-slide);-webkit-mask-repeat:round;-webkit-mask-size:contain}.device-android i.icon.icon-image-library{height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M20 5.5H4a.5.5 0 0 0-.5.5v9.582l4.533-3.892a1.25 1.25 0 0 1 1.555-.06l3.985 2.928 2.389-1.88a1.25 1.25 0 0 1 1.631.073l2.907 2.745V6a.5.5 0 0 0-.5-.5Zm.5 12.03-.015.015-3.765-3.556-2.37 1.865a1.25 1.25 0 0 1-1.512.025L8.86 12.957 3.5 17.56V18a.5.5 0 0 0 .5.5h16a.5.5 0 0 0 .5-.5v-.47ZM4 4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H4Zm12.5 5.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z' clip-rule='evenodd'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='transparent' d='M0 0h24v24H0V0Z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");width:24px}.device-android i.icon.icon-text-valign-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M2 2h19v1H2zM2 4h19v1H2zM12 18h-1V7.83L8.65 9.8 8 8.94 11.5 6 15 9l-.65.8L12 7.83V18z' class='cls-1'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-valign-middle,.device-android i.icon.icon-text-valign-top{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-text-valign-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M2 10h19v1H2zM2 12h19v1H2zM11 2h1v5.17l2.35-1.97.65.86L11.5 9 8 6l.65-.8L11 7.17V2zM12 21h-1v-5.17L8.65 17.8 8 16.94 11.5 14l3.5 3-.65.8L12 15.83V21z' class='cls-1'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-valign-bottom{background-color:var(--brand-slide);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M2 18h19v1H2zM2 20h19v1H2zM11 4h1v11.17l2.35-1.97.65.86L11.5 17 8 14l.65-.8L11 15.17V4z' class='cls-1'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-table-borders-all{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-all,.device-android i.icon.icon-table-borders-none{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-none{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z' opacity='.3'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-inner{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M26 13H14V1h-1v12H1v1h12v12h1V14h12v-1z'/%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-inner,.device-android i.icon.icon-table-borders-outer{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-outer{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h1v27H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-center,.device-android i.icon.icon-table-borders-left{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M13 0h1v27h-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M26 0h1v27h-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-right,.device-android i.icon.icon-table-borders-top{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h27v1H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 13h27v1H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-bottom,.device-android i.icon.icon-table-borders-middle{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-bottom{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 26h27v1H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-move-backward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h17v17H1z' opacity='.3'/%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-move-backward,.device-android i.icon.icon-move-forward{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-move-forward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z' opacity='.3'/%3E%3Cpath d='M1 1h17v17H1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-move-background{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M8 8h13v13H8z' opacity='.3'/%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-move-background,.device-android i.icon.icon-move-foreground{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-move-foreground{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z' opacity='.3'/%3E%3Cpath d='M8 8h13v13H8z'/%3E%3C/svg%3E")}.device-android i.icon.icon-align-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M1 21h1V1H1v20zm3-8v4h16v-4H4zm8-8H4v4h8V5z' style='fill-rule:evenodd;clip-rule:evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-align-center,.device-android i.icon.icon-align-left{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-align-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M19 13h-8V9h4V5h-4V1h-1v4H6v4h4v4H2v4h8v4h1v-4h8z' style='fill-rule:evenodd;clip-rule:evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-align-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M20 1v20h1V1h-1zM2 17h16v-4H2v4zm8-8h8V5h-8v4z' style='fill-rule:evenodd;clip-rule:evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-align-right,.device-android i.icon.icon-align-top{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-align-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M1 1v1h20V1H1zm8 3H5v16h4V4zm8 8V4h-4v8h4z'/%3E%3C/svg%3E")}.device-android i.icon.icon-align-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M13 2v8H9V6H5v4H1v1h4v4h4v-4h4v8h4v-8h4v-1h-4V2z' style='fill-rule:evenodd;clip-rule:evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-align-bottom,.device-android i.icon.icon-align-middle{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-align-bottom{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M21 20v-1H1v1h20zM9 1H5v16h4V1zm4 8v8h4V9h-4z'/%3E%3C/svg%3E")}.device-android i.icon.icon-align-horizontal{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M1 1v1h20V1H1zm0 18v1h20v-1H1zM9 3H5v15h4V3zm8 11V7h-4v7h4z'/%3E%3C/svg%3E")}.device-android i.icon.icon-align-horizontal,.device-android i.icon.icon-align-vertical{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-align-vertical{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M1 21h1V1H1v20zm18 0h1V1h-1v20zM3 13v4h15v-4H3zm11-8H7v4h7V5z'/%3E%3C/svg%3E")}.device-android i.icon.icon-users{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M15.5 7c0 2.262-.564 3.952-1.299 5.03-.743 1.091-1.578 1.47-2.201 1.47s-1.458-.379-2.201-1.47C9.064 10.953 8.5 9.263 8.5 7c0-2.077 1.722-3.5 3.5-3.5s3.5 1.423 3.5 3.5Zm-.654 6.622C14.006 14.519 13.004 15 12 15s-2.006-.48-2.846-1.378c-1.457.578-2.676 1.15-3.625 1.728C3.83 16.384 3.5 17.12 3.5 17.5c0 .51.264 1.198 1.547 1.84 1.328.666 3.562 1.16 6.953 1.16 3.39 0 5.625-.494 6.953-1.16 1.283-.642 1.547-1.33 1.547-1.84 0-.38-.329-1.116-2.03-2.15-.948-.577-2.167-1.15-3.624-1.728Zm.908-1.252C16.514 11.028 17 9.21 17 7c0-3-2.491-5-5-5S7 4 7 7c0 2.21.486 4.028 1.246 5.37C4.39 13.94 2 15.579 2 17.5 2 19.985 5 22 12 22s10-2.015 10-4.5c0-1.921-2.39-3.56-6.246-5.13Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-app-settings,.device-android i.icon.icon-users{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-app-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M7 14h9a4 4 0 0 1 0 8H7a4 4 0 0 1 0-8Zm9-1a5 5 0 0 1 0 10H7a5 5 0 0 1 0-10h9Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M16 20a2 2 0 1 1 0-4 2 2 0 0 1 0 4Zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6ZM16 3H7a4 4 0 1 0 0 8h9a4 4 0 0 0 0-8ZM7 2a5 5 0 0 0 0 10h9a5 5 0 0 0 0-10H7Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M7 9a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm0 1a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-menu-comment{background-color:var(--text-tertiary);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--text-tertiary)' fill-opacity='.6' d='M16.605 16.585c.403-.406.868-.608 1.395-.608s.992.202 1.395.608c.403.405.605.873.605 1.403s-.202.998-.605 1.404c-.403.405-.868.608-1.395.608s-.992-.203-1.395-.608c-.403-.406-.605-.873-.605-1.404 0-.53.202-.998.605-1.403Zm0-5.988c.403-.406.868-.609 1.395-.609s.992.203 1.395.609c.403.405.605.873.605 1.403s-.202.998-.605 1.403c-.403.406-.868.609-1.395.609s-.992-.203-1.395-.609C16.202 12.999 16 12.53 16 12s.202-.998.605-1.403Zm2.79-3.182c-.403.406-.868.608-1.395.608s-.992-.202-1.395-.608C16.202 7.01 16 6.542 16 6.012s.202-.998.605-1.404C17.008 4.203 17.473 4 18 4s.992.203 1.395.608c.403.406.605.873.605 1.404 0 .53-.202.998-.605 1.403Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-resolve-comment{background-color:var(--brand-slide);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-resolve-comment.check{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%234cd964' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E");height:24px;width:24px}.device-android i.icon.icon-done-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='var(--brand-slide)' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-done-comment,.device-android i.icon.icon-insert-comment{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-insert-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' d='M19.5 3h-15C3.19 3 2 4.215 2 5.503v9.532c0 1.287 1.19 1.978 2.5 1.978h1c.328 0 .5.179.5.5V21l6-4h8a2 2 0 0 0 2-2V8h-1.5v6.5a1 1 0 0 1-1 1h-8l-4 2.5v-2.5h-3a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1h15a1 1 0 0 1 1 1V8H22V5.503C22 4.215 20.81 3 19.5 3Z'/%3E%3Cpath fill='var(--brand-slide)' d='M6 7.5h12V9H6V7.5ZM6 11h12v1.5H6V11Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-done-comment-white{background-color:var(--fill-white);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--fill-white)' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-add-table{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' d='M4 5.6h7.2v3.2H4V5.6ZM12.8 5.6H20v3.2h-7.2V5.6ZM4 10.4h7.2v3.2H4v-3.2ZM12.8 10.4H20v3.2h-7.2v-3.2ZM4 15.2h7.2v3.2H4v-3.2ZM12.8 15.2H20v3.2h-7.2v-3.2Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-add-table,.device-android i.icon.icon-link{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-link{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' d='M17.024 7c1.377 0 2.55.498 3.52 1.495C21.515 9.461 22 10.63 22 12c0 1.37-.485 2.555-1.455 3.552-.97.965-2.144 1.448-3.522 1.448H13v-2h4c.845 0 1.588-.212 2.183-.804.626-.623.817-1.355.817-2.196 0-.841-.19-1.558-.817-2.15-.595-.623-1.314-.85-2.16-.85H13V7h4.023Zm-9.015 5.981V11.02h7.982v1.962H8.009Zm-3.24-3.13C4.176 10.441 4 11.158 4 12s.175 1.573.77 2.196C5.396 14.788 6.155 15 7 15h4.014v2H6.977c-1.378 0-2.551-.483-3.522-1.448C2.485 14.555 2 13.37 2 12c0-1.37.485-2.539 1.455-3.505C4.425 7.498 5.6 7 6.977 7h4.037v2H6.977c-.846 0-1.581.227-2.207.85Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-plus{background-color:var(--fill-white);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--fill-white)' viewBox='0 0 22 22'%3E%3Cpath d='M21 12h-9v9h-2v-9H1v-2h9V1h2v9h9v2z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-logo{height:14px;width:100px}.device-android .navbar i.icon.icon-undo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M20 17v-2c0-1.7-1.3-3-3-3H3.7l3.4 3.4-1.4 1.4-5.2-5.2L0 11l.5-.6 5.2-5.2 1.4 1.4L3.7 10H17c2.8 0 5 2.2 5 5v2h-2z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-redo,.device-android .navbar i.icon.icon-undo{background-color:var(--toolbar-icons);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-redo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M0 17v-2c0-2.8 2.2-5 5-5h13.3l-3.4-3.4 1.4-1.4 5.2 5.2.5.6-.5.6-5.2 5.2-1.4-1.4 3.4-3.4H5c-1.7 0-3 1.3-3 3v2H0z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-burger{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='-8 1 22 22'%3E%3Cpath d='M-6 6v2h18V6H-6zm0 7h18v-2H-6v2zm0 5h18v-2H-6v2z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-burger,.device-android .navbar i.icon.icon-plus{background-color:var(--toolbar-icons);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-plus{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M21 12h-9v9h-2v-9H1v-2h9V1h2v9h9v2z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-play{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M4.046 2.988A.286.286 0 0 1 4.07 3c.59.336 12.711 7.293 13.897 8.027-.583.342-13.013 7.488-13.934 7.983l.013-16.022M3.99 2C3.443 2 3 2.453 3 3.015V19.01c0 .613.479.99.993.99.173 0 .35-.043.514-.133.89-.491 13.188-7.559 13.94-8a.99.99 0 0 0 0-1.732C17.404 9.533 5.153 2.502 4.54 2.154A1.11 1.11 0 0 0 3.99 2z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-play,.device-android .navbar i.icon.icon-settings{background-color:var(--toolbar-icons);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M12.1 2H9.9c-.3 0-.5.2-.6.5l-.5 2.4c0 .2-.2.3-.3.3s-.1 0-.2-.1L6.2 3.8c-.1-.1-.2-.1-.4-.1-.1 0-.3 0-.4.1L3.8 5.4c-.1.2-.2.5 0 .8l1.3 2.1c.1.2.1.4-.2.5l-2.4.5c-.3.1-.5.3-.5.6v2.2c0 .3.2.5.5.6l2.4.5c.3.1.4.3.2.5l-1.3 2.1c-.2.2-.1.6.1.8l1.6 1.6c.1.1.3.2.4.2s.2 0 .3-.1L8.3 17c.1-.1.1-.1.2-.1s.3.1.3.3l.5 2.3c.1.3.3.5.6.5h2.2c.3 0 .5-.2.6-.5l.5-2.4c0-.2.1-.3.3-.3.1 0 .1 0 .2.1l2.1 1.3c.1.1.2.1.3.1.2 0 .3-.1.4-.2l1.6-1.6c.2-.2.2-.5.1-.8l-1.3-2.1c-.2-.2-.1-.5.2-.5l2.4-.5c.3-.1.5-.3.5-.6V9.8c0-.3-.2-.5-.5-.6l-2.4-.5c-.3-.1-.4-.3-.2-.5l1.3-2.1c.2-.2.1-.6-.1-.8l-1.6-1.6c-.1-.1-.3-.2-.4-.2s-.2 0-.3.1l-2.1 1.3c-.1.1-.1.1-.2.1s-.3-.1-.3-.3l-.5-2.2c-.1-.3-.3-.5-.6-.5zM11 14.5c-1.9 0-3.5-1.6-3.5-3.5S9.1 7.5 11 7.5s3.5 1.6 3.5 3.5-1.6 3.5-3.5 3.5z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-prev{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M5.1 10.9 13.9 2 16 4.1l-6.8 7 6.8 6.8-2.1 2.1-8.8-8.8-.1-.1z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-next,.device-android .navbar i.icon.icon-prev{background-color:var(--toolbar-icons);height:20px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:20px}.device-android .navbar i.icon.icon-next{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M16.9 10.9 8.1 2 6 4.1l6.8 7L6 17.9 8.1 20l8.8-8.8.1-.1z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-expand-down{background-color:var(--fill-white);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--fill-white)' viewBox='0 0 22 22'%3E%3Cpath d='M10.9 16.9 2 8.1 4.1 6l7 6.8L17.9 6 20 8.1l-8.8 8.8-.1.1z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-add-slide{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='M2 4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V4Zm9 7V7h2v4h4v2h-4v4h-2v-4H7v-2h4Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-add-shape,.device-android .navbar i.icon.icon-add-slide{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-add-shape{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Ccircle cx='16' cy='15' r='7' fill='var(--toolbar-icons)'/%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='M3 3a1 1 0 0 0-1 1v13a1 1 0 0 0 1 1h5.582A8 8 0 0 1 18 7.252V4a1 1 0 0 0-1-1H3Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-add-image{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='m4.24 18 3.854-4.5 2.812 3L14.76 12l5 6H4.24Zm17.083 2.39c.451-.406.677-.874.677-1.406V5.016c0-.532-.226-1-.677-1.407A2.266 2.266 0 0 0 19.76 3H4.24c-.59 0-1.112.203-1.563.61C2.226 4.015 2 4.483 2 5.015v13.968c0 .532.226 1 .677 1.407.451.406.972.609 1.563.609h15.52c.59 0 1.111-.203 1.563-.61ZM8 11a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z' clip-rule='evenodd'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='transparent' d='M0 0h24v24H0V0Z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-add-image,.device-android .navbar i.icon.icon-add-other{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-add-other{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='M7 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm8 0a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm5 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-close-comment{background-color:var(--toolbar-icons);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' d='M18.984 6.422 13.406 12l5.578 5.578-1.406 1.406L12 13.406l-5.578 5.578-1.406-1.406L10.594 12 5.016 6.422l1.406-1.406L12 10.594l5.578-5.578 1.406 1.406Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-format-pptx{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23BE664F' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H4Zm0 5h16v12H4V6Zm1 1h14v10H5V7Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-potx{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23A8A8A8' fill-rule='evenodd' d='M18 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm.746 10v-5.27h2.506v-1.234h-6.504v1.235h2.479V22h1.519Z' clip-rule='evenodd'/%3E%3Cpath fill='%23BE664F' fill-rule='evenodd' d='M1 4a3 3 0 0 1 3-3h16a3 3 0 0 1 3 3v9.101a6.997 6.997 0 0 0-3-1.811V6H4v12h7c0 1.959.805 3.73 2.101 5H4a3 3 0 0 1-3-3V4Zm18 7.07A7.001 7.001 0 0 0 11.07 17H5V7h14v4.07Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-odp{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23DD9426' fill-rule='evenodd' d='M1 4a3 3 0 0 1 3-3h16a3 3 0 0 1 3 3v16a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3V4Zm18.952 3.749c-.026-.02-.053-.037-.08-.054l-.02-.013a4.236 4.236 0 0 0-1.763-.651c-1.114-.14-2.179.2-3.078.89a4.32 4.32 0 0 0-2.066-.86c-1.035-.13-2.028.155-2.885.751l-.01.008-.015.01a.135.135 0 0 0-.035.093c0 .066.04.12.09.12l.013-.003.007-.002a3.93 3.93 0 0 1 1.431-.084c1.376.173 2.575.737 3.416 2.002.044.06.083.057.128-.003 1.058-1.627 2.68-2.27 4.424-2.051.097.012.193.028.289.047l.029.006c.029.006.062.013.084.016.058.009.089-.053.089-.119 0-.044-.015-.082-.048-.103Zm-1.026 5.026.01.006c.038.024.064.075.064.136 0 .083-.051.151-.114.151l-.164-.016a5.975 5.975 0 0 0-.547-.026c-2.574 0-4.885 1.254-6.288 3.796l-.04.074-.026.048c-.021.035-.053.056-.088.056a.097.097 0 0 1-.075-.037l-.002-.004-.007-.008c-1.38-1.722-3.215-2.367-5.272-2.367a5.987 5.987 0 0 0-2.24.44.086.086 0 0 1-.023.003c-.063 0-.114-.068-.114-.151a.17.17 0 0 1 .044-.12l.004-.003a.155.155 0 0 1 .009-.008C5.287 13.644 6.767 13 8.363 13c1.122 0 2.188.319 3.15.89C12.773 12.701 14.315 12 15.98 12c1.042 0 2.035.276 2.943.773l.003.002Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-otp{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23A8A8A8' fill-rule='evenodd' d='M18 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm.746 10v-5.27h2.506v-1.234h-6.504v1.235h2.479V22h1.519Z' clip-rule='evenodd'/%3E%3Cpath fill='%23DD9426' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h9.101A6.979 6.979 0 0 1 11 18c0-.542.062-1.07.178-1.577-1.315-1.328-2.97-1.839-4.801-1.839a5.987 5.987 0 0 0-2.24.44.086.086 0 0 1-.023.003c-.063 0-.114-.068-.114-.151a.17.17 0 0 1 .044-.12l.004-.003a.155.155 0 0 1 .009-.008C5.287 13.644 6.767 13 8.363 13c1.122 0 2.188.319 3.15.89a7.139 7.139 0 0 1 2.244-1.459A6.97 6.97 0 0 1 18 11c1.959 0 3.73.805 5 2.101V4a3 3 0 0 0-3-3H4Zm15.952 6.749c-.026-.02-.053-.037-.08-.054l-.02-.013a4.236 4.236 0 0 0-1.763-.651c-1.114-.14-2.179.2-3.078.89a4.32 4.32 0 0 0-2.066-.86c-1.035-.13-2.028.155-2.885.751l-.01.008-.015.01a.135.135 0 0 0-.035.093c0 .066.04.12.09.12l.013-.003.007-.002a3.93 3.93 0 0 1 1.431-.084c1.376.173 2.575.737 3.416 2.002.044.06.083.057.128-.003 1.058-1.627 2.68-2.27 4.424-2.051.097.012.193.028.289.047l.029.006c.029.006.062.013.084.016.058.009.089-.053.089-.119 0-.044-.015-.082-.048-.103Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}:root{--f7-popover-width:360px}.doc-placeholder{background:var(--canvas-background);height:100%;left:0;overflow:hidden;padding-top:calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-subnavbar-offset, 0px));position:absolute;top:0;width:100%;z-index:6000}.doc-placeholder .slide-h{display:flex;flex-direction:column;flex-grow:1;height:100%;margin:0 auto;padding-top:30%;width:90%}.doc-placeholder .slide-v{display:flex;flex-direction:column;padding-bottom:56.1333%;position:relative}.doc-placeholder .slide-container{-webkit-animation:flickerAnimation 2s ease-in-out infinite;-moz-animation:flickerAnimation 2s ease-in-out infinite;-o-animation:flickerAnimation 2s ease-in-out infinite;animation:flickerAnimation 2s ease-in-out infinite;background:var(--canvas-content-background);border:1px solid var(--canvas-page-border);height:100%;position:absolute;width:100%}.doc-placeholder .slide-container>.line{background:#f5f5f5;border-radius:6px;height:20%;margin:0 120px}.doc-placeholder .slide-container>.line:first-child{height:30%;margin:10% 80px 0}.doc-placeholder .slide-container>.line.empty{background:transparent}.item-content .preview{color:#c4c4c4}.phone .swiper-container,.tablet .swiper-container{position:static}.swiper-pagination-bullet-active{background:#000}.table-styles .row div:not(:first-child){margin:2px auto 0}.table-styles .row div,.table-styles .skeleton-list li{padding:0}.table-styles .row .skeleton-list{display:block;height:50px;width:70px}.slide-theme__list{margin:auto}.slide-theme__list ul{display:flex;flex-wrap:wrap;justify-content:space-between;padding-bottom:14px;padding-left:18px;padding-right:18px;width:auto}.slide-theme .item-inner:after{display:none}.slide-theme .item-theme{background-image:url(../resources/img/themes/themes.png);background-repeat:no-repeat;background-size:cover;box-shadow:0 0 0 1px rgba(0,0,0,.15);display:block;height:40px;margin:14px 0 0;position:relative;width:88px}.slide-theme .item-theme.active:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23BE664F' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='11' fill='%23fff'/%3E%3Cpath d='M11 21a10 10 0 1 1 10-10 10 10 0 0 1-10 10Zm6.4-13.68L17.06 7a.48.48 0 0 0-.67 0l-7 6.84-2.44-2.6a.51.51 0 0 0-.59.08l-.36.34a.58.58 0 0 0 0 .65l3.19 3.35a.38.38 0 0 0 .39 0L17.4 8a.48.48 0 0 0 0-.67Z'/%3E%3C/svg%3E");bottom:-5px;content:"";height:22px;position:absolute;right:-5px;width:22px;z-index:1}.bullet-menu-image ul{padding:0}.bullet-menu-image ul li{display:inherit} +/*# sourceMappingURL=612.css.map*/ \ No newline at end of file diff --git a/apps/presentationeditor/mobile/css/612.css.map b/apps/presentationeditor/mobile/css/612.css.map new file mode 100644 index 0000000000..311f24290e --- /dev/null +++ b/apps/presentationeditor/mobile/css/612.css.map @@ -0,0 +1 @@ +{"version":3,"file":"css/612.css","mappings":";;;;GACA,MACI,oBAAqB,CACrB,oBAAqB,CACrB,qBAAsB,CACtB,oBAAqB,CACrB,uBAAwB,CACxB,yBAA0B,CAC1B,0BAA2B,CAE3B,yBAA0B,CAC1B,2BAA4B,CAC5B,6BAA8B,CAC9B,6CACA,2BAA4B,CAE5B,kBAAsB,CACtB,gCACA,+BACA,mBAAoB,CACpB,oBAAqB,CAErB,iBAAkB,CAClB,iBAAkB,CAElB,4BAA6B,CAC7B,oBAAqB,CACrB,yBAA0B,CAC1B,wCAEA,iCAEA,0CACA,2CACA,yCAEA,gCAAiC,CAIjC,wBAAyB,CACzB,gCAAiC,CACjC,yBAA0B,CAE1B,8BAA+B,CAE/B,yCAA0C,CAC1C,wBAAyB,CACzB,iCAAkC,CAClC,0CAA2C,CAE3C,2BAA4B,CAG5B,oCAEA,oCAAqC,CACrC,kCAAmC,CAEnC,wCAAyC,CAEzC,6BAA8B,CAE9B,sCAAuC,CACvC,uCAAwC,CAExC,gDAAiD,CACjD,wCAAyC,CACzC,iCCpBJ,CC/CA,yCAGQ,4BAA6B,CAC7B,2BAA4B,CAC5B,6BAA8B,CAC9B,4CACA,wBAA4B,CAE5B,kCACA,oCACA,mCACA,mBAAoB,CACpB,oBAAqB,CAErB,iBAAkB,CAClB,iBAAkB,CAElB,oBAAqB,CACrB,oBAAqB,CACrB,qBAAsB,CACtB,oBAAqB,CACrB,uBAAwB,CACxB,yBAA0B,CAC1B,0BAA2B,CAE3B,4BAA6B,CAC7B,uBAAwB,CACxB,sBAAuB,CACvB,4BAA6B,CAE7B,iCAIA,0CACA,2CACA,yCAEA,sDAAuD,CAIvD,wBAAyB,CACzB,gCAAiC,CACjC,4BAA6B,CAE7B,iCAAkC,CAElC,yCAA0C,CAC1C,2BAA4B,CAC5B,oCAAqC,CACrC,6CAA8C,CAE9C,2BAA4B,CAG5B,oCACA,kCAAmC,CACnC,wCAAyC,CACzC,2CAA4C,CAE5C,oCAAqC,CAErC,6BAA8B,CAE9B,sCAAuC,CACvC,uCAAwC,CAExC,gDD2BR,CEjGA,sDAMgB,wBAA0B,CAD1B,iBAAkB,CADlB,kBFkGhB,CEtGA,uEAWgB,SAAU,CADV,UFgGhB,CE1GA,kIAmBY,gBAAiB,CADjB,cF6FZ,CE/GA,6DAyBY,gBFyFZ,CEpFQ,kDACI,cAAe,CACf,kBFsFZ,CEjFA,mJAMQ,cFmFR,CEzFA,oEAWY,yBFiFZ,CE5FA,mEAeY,yBFgFZ,CE/FA,mEAqBQ,SAAU,CADV,UF+ER,CEnGA,mKA2BgB,+EF4EhB,CEvGA,iKA8BgB,+EF6EhB,CE3GA,0EAsCgB,aAAgB,CAChB,iBFwEhB,CE/GA,6EA6CQ,aAAc,CACd,iBFqER,CEnHA,uHAmDQ,gBAAiB,CADjB,cFyER,CE3HA,yFA4DQ,iBFkER,CE9DA,kDAEQ,cF+DR,CEjEA,yEAKgB,6BF+DhB,CEpEA,0FAQoB,gBAAiB,CADjB,cFiEpB,CExEA,wEAagB,gBF8DhB,CE3EA,yBAoBQ,aAAc,CADd,4CAA6C,CAE7C,iBAAkB,CAClB,kBF2DR,CEjFA,8CA2BQ,iBAAkB,CADlB,eF4DR,CEtFA,k5BAmCQ,gBFiER,CEpGA,oDAuCQ,wBFgER,CEvGA,wBA2CQ,wBF+DR,CE1GA,yBAgDY,oBF6DZ,CE7GA,kEAuDY,cF0DZ,CEjHA,+BA6DY,eFuDZ,CEpHA,0CAmEY,iBFoDZ,CEvHA,kCAwEQ,qBFkDR,CE1HA,uGA6EY,eFkDZ,CE/HA,kCAkFQ,SAAU,CACV,WFgDR,CEnIA,uHAuFQ,eFiDR,CExIA,sIA2FQ,cAAe,CACf,kBFkDR,CE9IA,wFAqGQ,aAAc,CACd,iBFgDR,CEtJA,uDA0GQ,eF+CR,CEzJA,wDAgHQ,QAAS,CADT,UF8CR,CEzCA,yBACI,iGAGQ,aAAc,CADd,iBF2CV,CE7CE,+DAOQ,aFyCV,CErCE,oGAGQ,gBAAiB,CADjB,cFuCV,CACF,CG5QQ,yZAGI,oBHsRZ,CGnRQ,gCCON,q8CJ+QF,CGlRQ,gCCGN,+nFJkRF,CGjRQ,gCCDN,m3CJqRF,CGhRQ,gCCLN,o+FJwRF,CG/QQ,gCCTN,yyDJ2RF,CG3QQ,mEACI,oBH8QZ,CGvQQ,kDCrCN,oCACA,unCAEA,yBAA0B,CAD1B,yBJgTF,CGzQQ,kDCzCN,oCACA,8sCAEA,yBAA0B,CAD1B,yBJsTF,CG3QQ,kDC7CN,oCACA,2sCAEA,yBAA0B,CAD1B,yBJ4TF,CK9TA,iDAEQ,SAAU,CAC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Y,yBACA,mBAAoB,CAHpB,WAAY,CACZ,eAAgB,CAFhB,UP2SZ,CO/TA,8IA0BgB,WPyShB,COnUA,qEA6BgB,6BPyShB,COtUA,yEAgCgB,6BPyShB,COzUA,yCAyCY,kBAAmB,CAEnB,mCAGA,QAAS,CAJT,mBAAoB,CAEpB,qCALA,YAAa,CAHb,WAAY,CAIZ,sBAAuB,CAOvB,eAAgB,CAThB,SAAU,CADV,UPiTZ,COhSA,cACI,UPkSJ,COhSQ,yCACI,kBPmSZ,COvSA,6CAUY,kBAAmB,CAHnB,6BACA,YAAa,CACb,sBPqSZ,CO9SA,wCAgBQ,QAAS,CACT,WPkSR,COnTA,gDAqBY,WAAY,CADZ,UPoSZ,CO9RA,8BAEQ,cP+RR,CO1RA,4FAEI,uBAAwB,CACxB,QP4RJ,COxRA,gBAEI,6FADA,yBAA0B,CAM1B,WAAY,CADZ,UPsRJ,COlRA,+BAEE,uBPwRF,COtRA,+BAEE,2BPwRF,COtRA,+BAEE,2BPwRF,COtRA,+BAEE,2BPwRF,COtRA,+BAEE,+BPwRF,COtRA,+BAEE,+BPwRF,COtRA,+BAEE,2BPwRF,COtRA,+BAEE,+BPwRF,COtRA,+BAEE,+BPwRF,COtRA,+BAEE,2BPwRF,COtRA,+BAEE,+BPwRF,COtRA,8DAIE,+BPwRF,COtRA,+BAEE,2BPwRF,COtRA,+BAEE,+BPwRF,COtRA,+BAEE,+BPwRF,COtRA,+BAEE,2BPwRF,COtRA,+BAEE,+BPwRF,COtRA,+BAEE,2BPwRF,COtRA,+BAEE,+BPwRF,COtRA,+BAEE,+BPwRF,COtRA,+BAEE,2BPwRF,COtRA,+BAEE,+BPwRF,COtRA,mDAGE,+BPwRF,COtRA,iBACE,+BPwRF,COtRA,iBACE,+BPwRF,COtRA,+BAEE,4BPwRF,COtRA,iBACE,gCPwRF,COtRA,iBACE,4BPwRF,COtRA,sBACE,gCPwRF,COtRA,gDAGE,gCPwRF,COtRA,+BAEE,4BPwRF,COtRA,0BACE,gCPwRF,COtRA,iBACE,gCPwRF,COtRA,iBACE,4BPwRF,COtRA,+BAEE,gCPwRF,COtRA,+BAEE,gCPwRF,COtRA,+BAEE,4BPwRF,COtRA,+BAEE,gCPwRF,COtR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A0B,CM8ChB,UVy/EZ,CWxiFQ,iCACI,mCX0iFZ,CWxiFQ,iCAGI,uGADA,WAAY,CADZ,WX4iFZ,CWxiFQ,iCPTN,oCOWU,WAAY,CPVtB,6OAEA,yBAA0B,CAD1B,yBAA0B,COQhB,UX+iFZ,CW5iFY,uCACE,YX8iFd,CW3iFQ,iCPjBN,oCOmBU,WAAY,CPlBtB,wOAEA,yBAA0B,CAD1B,yBAA0B,COgBhB,UXkjFZ,CW/iFY,uCACI,YXijFhB,CW9iFQ,0CPxBN,q1BJ8kFF,CWjjFQ,oFP9BN,uCO2BU,WAAY,CPxBtB,yBAA0B,CAD1B,yBAA0B,COwBhB,UX6jFZ,CWzjFQ,0CP7BN,2hCJslFF,CWjjFY,kDPtCV,sCOwCc,WAAY,CPvC1B,izCAEA,yBAA0B,CAD1B,yBAA0B,COqCZ,UXwjFhB,CWpjFY,yCACI,0BXsjFhB,CWpjFY,yCP9CV,sCOgDc,WAAY,CP/C1B,gTAEA,yBAA0B,CAD1B,yBAA0B,CO6CZ,UX2jFhB,CWvjFY,0CPnDV,oCOqDc,WAAY,CPpD1B,gTAEA,yBAA0B,CAD1B,yBAA0B,COkDZ,UX8jFhB,CW1jFY,kDPxDV,qCJ0nFF,CW7jFY,2FAHI,WAAY,CPzD1B,8NAEA,yBAA0B,CAD1B,yBAA0B,COuDZ,UXykFhB,CWrkFY,yCP7DV,mCJkoFF,CWhkFY,2CPjEV,qSJyoFF,CWnkFY,+FPvEV,sCOoEc,WAAY,CPjE1B,yBAA0B,CAD1B,yBAA0B,COiEZ,UX+kFhB,CW3kFY,oDPtEV,8XJipFF,CYjpFI,kBRAF,sYJypFF,CYppFI,mCRNF,oCQGM,WAAY,CRAlB,yBAA0B,CAD1B,yBAA0B,CQApB,UZgqFR,CY5pFI,iBRLF,oaJiqFF,CYvpFI,gBRXF,oCQaM,WAAY,CRZlB,0nCAEA,yBAA0B,CAD1B,yBAA0B,CQUpB,UZ8pFR,CY1pFI,8CACI,YZ6pFR,CY3pFI,0BRnBF,oCQqBM,WAAY,CRpBlB,izCAEA,yBAA0B,CAD1B,yBAA0B,CQkBpB,UZkqFR,CY9pFI,yBRXF,ggBQaM,WAAY,CADZ,UZkqFR,CY9pFI,yBRhBF,yqBQkBM,WAAY,CADZ,UZkqFR,CY9pFI,kBRlCF,oCQoCM,WAAY,CRnClB,6ZAEA,yBAA0B,CAD1B,yBAA0B,CQiCpB,UZqqFR,CY9pFI,uBR7BF,4zBQ+BM,WAAY,CADZ,UZkqFR,CY9pFI,wBRlCF,45BQoCM,WAAY,CADZ,UZkqFR,CY3pFI,sBR1CF,+9CJwsFF,CY1pFI,sBR9CF,0lFJ2sFF,CYzpFI,sBRlDF,gbJ8sFF,CYxpFI,sBRtDF,q5CJitFF,CYvpFI,sBR1DF,g9FJotFF,CYtpFI,sBR9DF,6zDJutFF,CYrpFI,sBRlEF,shBJ0tFF,CYppFI,6BRlFF,gzCJ8uFF,CYtpFI,8CRzFF,oCQqFM,WAAY,CRlFlB,yBAA0B,CAD1B,yBAA0B,CQkFpB,UZmqFR,CY9pFI,iBRxFF,4iBJsvFF,CYxpFI,iBR9FF,6cJ8vFF,CY1pFI,mCRrGF,oCQiGM,WAAY,CR9FlB,yBAA0B,CAD1B,yBAA0B,CQ8FpB,UZuqFR,CYlqFI,kBRpGF,sYJswFF,CY5pFI,mBR1GF,qSJ8wFF,CY9pFI,+CRjHF,oCQ6GM,WAAY,CR1GlB,yBAA0B,CAD1B,yBAA0B,CQ0GpB,UZ2qFR,CYtqFI,4BRhHF,8XJsxFF,CY9pFI,wCRxHF,unCJ8xFF,CYjqFI,gFR9HF,oCQ2HM,WAAY,CRxHlB,yBAA0B,CAD1B,yBAA0B,CQwHpB,UZ6qFR,CYzqFI,wCR7HF,stCJsyFF,CYpqFI,wCRlIF,2tCJ8yFF,CYvqFI,8ERxIF,oCQqIM,WAAY,CRlIlB,yBAA0B,CAD1B,yBAA0B,CQkIpB,UZmrFR,CY/qFI,sCRvIF,isCJszFF,CY1qFI,sCR5IF,+uCJ8zFF,CY7qFI,8ERlJF,oCQ+IM,WAAY,CR5IlB,yBAA0B,CAD1B,yBAA0B,CQ4IpB,UZyrFR,CYrrFI,wCRjJF,svCJs0FF,Cax0FA,eAEI,4Bby0FJ,Ca30FA,aAOI,eAAgB,CADhB,cby0FJ,Ca/0FA,gBAUM,oBbw0FN,Cal1FA,gEAeI,Ybs0FJ,Car1FA,sEAmBI,iBAAkB,CAClB,Sbs0FJ,Cap0FI,kFTrBF,oCS4BI,WAAY,CANZ,UAAW,CAGX,WAAY,CAEZ,SAAU,CT1Bd,4ZAEA,yBAA0B,CAD1B,yBAA0B,CSqBtB,iBAAkB,CAGlB,UAAW,CAGX,cAAe,CALf,Ubg1FN,Ccx2FA,qBAGQ,YAAa,CACb,qBAAsB,CAFtB,iBd22FR,Cct2FI,WAEI,mBAAoB,CADpB,iBdy2FR,Ccr2FI,eAEI,mBAAoB,CADpB,gBdw2FR,Ccp2FI,cAEI,mBAAoB,CADpB,gBdu2FR,Ccn2FI,aAMI,yBAHA,cAAe,CAFf,iBAAkB,CAClB,eAAgB,CAEhB,gBAAiB,CAGjB,QAAS,CAFT,iBdu2FR,Ccl4FA,SAiCQ,wBdo2FR,Cch2FQ,yBACI,YAAa,CACb,sBdk2FZ,Ccp2FQ,6BAKQ,WAAY,CADZ,cdo2FhB,Cc91FI,aAGI,kGADA,WAAY,CADZ,Udk2FR,Cc71FI,eACI,WAAY,CACZ,ed+1FR,Cc51FI,iBAEI,iBAAkB,CAClB,kBAAmB,CAFnB,iBdg2FR,Cc31FI,kCAEI,eAAgB,CADhB,iBd+1FR,Cc11FA,8BAEQ,uGd21FR,Cep6FA,mBAEQ,0Cfq6FR,Cev6FA,gCAKY,iBAAkB,CAClB,Yfq6FZ,CgB1yFE,uCA3BA,yBAKA,SAPA,UAAW,CAGX,aAAc,CA4BZ,UAAW,CAvBb,OAPA,iBAAkB,CAKlB,WADA,SA6BE,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CA5Bb,UhBk1FF,Ce17FA,yBAeQ,6Bf86FR,Ce76FQ,iCAEI,kBAAmB,CADnB,YAAa,CAEb,Sf+6FZ,Ce76FQ,gCAEI,kBAAmB,CADnB,Yfg7FZ,Cet8FA,8BA4BQ,sBf66FR,Cez8FA,6BAkCQ,kBAAmB,CAFnB,YAAa,CACb,qBAAsB,CAItB,sBAAuB,CADvB,Uf46FR,Ceh9FA,+BAyCY,aAAc,CAFd,cAAe,CACf,WAAY,CAEZ,kBf46FZ,Ce16FY,sCACI,Yf46FhB,Cev6FI,yBAIY,uEAEI,cAAe,CADf,cfu6FlB,Cep6Fc,yEACI,qBfs6FlB,Cep6Fc,wEACI,6Bfs6FlB,Cen6FU,wDACI,Kfq6Fd,Cet6FU,yEAGQ,Wfs6FlB,Cer6FkB,+EACI,qBfu6FtB,CACF,CiB/+FA,2BAMQ,gCACA,iBjB4+FR,CiBz+FY,gDACI,yBjB2+FhB,CiBt/FA,uCAgBY,cAAe,CACf,ejBy+FZ,CgBz1FE,6DACE,sBhB21FJ,CiB1+FY,oEAQQ,ejBq+FpB,CiBhgGA,kDAgDgB,oBjBm9FhB,CiBj9FgB,sJAEI,wBjBm9FpB,CgBh2FE,0LACE,wBhBm2FJ,CiBj9FgB,6DACI,cjBm9FpB,CiB9gGA,oDAgEgB,WACA,gBjBi9FhB,CgBv4FE,0DApCA,mCAKA,YAPA,UAAW,CAGX,aAAc,CAsCZ,WAAY,CAjCd,UAPA,iBAAkB,CAKlB,QADA,MAsCE,sDAAyD,CADzD,yBAA0B,CAF1B,SAAU,CApCZ,UhBw7FF,CiBjiGA,0CAwEgB,mBjB49FhB,CgBz4FE,oOACE,sBhB+4FJ,CgBh6FE,oJApCA,mCAKA,YAPA,UAAW,CAGX,aAAc,CAsCZ,WAAY,CAjCd,UAPA,iBAAkB,CAKlB,QADA,MAsCE,sDAAyD,CADzD,yBAA0B,CAF1B,SAAU,CApCZ,UhBk9FF,CkB3jGA,kCAKY,elByjGZ,CkB9jGA,+BASY,elBwjGZ,CkBjkGA,kCAYgB,WlBwjGhB,CkBpkGA,kCAgBgB,oBlBujGhB,CkBvkGA,4CAoBgB,wBlBsjGhB,CmBvkGA,eACI,UnBykGJ,CmBtkGA,mDACI,cnBwkGJ,CoBjlGA,0BAEI,wBpBklGJ,CoBplGA,sLAMM,wBpBolGN,CoB1lGA,0LAWM,wBpBqlGN,CoBhmGA,wDAiBQ,sBpBklGR,CoBhlGM,6CASE,iDAAkD,CALlD,QAAS,CAHT,UAAW,CASX,aAAc,CAHd,UAAW,CAJX,SAAU,CADV,iBAAkB,CAGlB,UAAW,CACX,KAAM,CAMN,iCAAkC,CAClC,yBAA0B,CAL1B,UAAW,CAGX,UpBolGR,CqBlnGA,8BAEI,wBrBmnGJ,CqBrnGA,sMAMM,wBrBqnGN,CqB3nGA,0MAWM,wBrBsnGN,CqBjoGA,0QAgBM,YrBynGN,CqBzoGA,sUAsBQ,kBAAmB,CAJnB,kBAAmB,CACnB,wBACA,YAAa,CAIb,cAAe,CAHf,sBAAuB,CAEvB,iBrBgoGR,CqBvpGA,8CA+BM,kBrB2nGN,CqB1pGA,wDAiCQ,WAAY,CACZ,UrB4nGR,CqB9pGA,8EAuCQ,YrB0nGR,CqBjqGA,8KA8CM,2BrBynGN,CqBvqGA,sMAgDQ,iBrB6nGR,CqB7qGA,wJAuDM,YrB2nGN,CqBlrGA,oDA4DQ,kBAAmB,CADnB,YrB2nGR,CqBtrGA,8DAgEU,cAAe,CADf,WAAY,CADZ,UrB6nGV,CqB3rGA,gDAwEQ,YrBsnGR,CqB9rGA,0DA6EU,cAAe,CADf,WAAY,CAFZ,cAAe,CACf,UrBynGV,CqBpsGA,olBAuFU,WAAY,CACZ,UrBunGV,CqB/sGA,4DAgGM,YrBknGN,CsB5sGA,cAEE,4CADA,wBtB+sGF,CsBhtGA,4BAKI,2BtB8sGJ,CsBntGA,6BAQI,ctB8sGJ,CsBttGA,oBAaI,yBADA,cAAe,CADf,etBgtGJ,CsB3tGA,0BAgBI,2BtB8sGJ,CsB1sGA,sBAEI,WtB2sGJ,CsB7sGA,wBAUI,yBAJA,cAAe,CAEf,WAAY,CADZ,YAAa,CAEb,atB2sGJ,CsBtsGA,8GAEI,uBAAwB,CACxB,atB0sGJ,CsB7sGA,sKAMM,YAAa,CADb,StB+sGN,CsBptGA,0xBASU,etBytGV,CsBluGA,8TAaY,yBACA,UtB2tGZ,CsBntGA,wCAGI,gBAAiB,CADjB,eAAgB,CAEhB,gBtBotGJ,CsBxtGA,wDAMM,YAAa,CACb,6BAA8B,CAC9B,kBtBqtGN,CsB7tGA,+DAUQ,YAAa,CACb,wBAAyB,CACzB,UtBstGR,CsBluGA,gFAcU,iBtButGV,CsBruGA,sDAmBM,YAAa,CACb,6BAA8B,CAC9B,kBtBqtGN,CsB1uGA,0BAyBI,UtBotGJ,CsB7uGA,yBA8BI,yBAFA,cAAe,CAIf,eAAgB,CAHhB,gBAAiB,CAEjB,QtBqtGJ,CsBpvGA,sDAqCI,4BAFA,cAAe,CACf,gBAAiB,CAEjB,QtBqtGJ,CsB3vGA,6BA0CI,4CADA,4BAKA,cAAe,CADf,YAAa,CAFb,iBAAkB,CAClB,kBtButGJ,CsBnwGA,sDAiDI,yBACA,cAAe,CACf,gBAAiB,CACjB,QAAS,CACT,cAAe,CACf,kBAAmB,CACnB,oBtBstGJ,CsB7wGA,8DA0DM,wBAAyB,CADzB,oBtBytGN,CsBlxGA,0BA8DI,iBtButGJ,CsBrxGA,0BAiEI,kBtButGJ,CsBntGA,uDACE,atButGF,CsBptGA,oBAME,4BAA+B,CAL/B,mCACA,0BAA2B,CAC3B,2BAA4B,CAE5B,8DAAwE,CADxE,UAAW,CAGX,qBtBstGF,CsB7tGA,yBASI,UtButGJ,CsBhuGA,qCAeI,2CAHA,YAAa,CAEb,WAAY,CADZ,sBtBytGJ,CsBtuGA,iDAoBM,0CACA,iBAAkB,CAFlB,UAAW,CAFX,cAAe,CACf,UtB2tGN,CsBntGA,4DAGI,2CACA,wFAA6G,CAF7G,ctButGJ,CsBztGA,wEAMM,0CtButGN,CsB7tGA,0FASM,ctBwtGN,CsBjuGA,0FAcM,cAAe,CADf,cAAe,CADf,StB2tGN,CsBvuGA,oGAkBM,YAAa,CACb,6BAA8B,CAF9B,ctB4tGN,CsB7uGA,gHAqBQ,ctB4tGR,CsBttGA,sBACE,0CtBwtGF,CsBztGA,6BAGI,iBtBytGJ,CsB5tGA,sEAMI,6CtB6tGJ,CsBnuGA,0CAQM,wBtB2tGN,CsBnuGA,0JAgBU,etButGV,CsBvuGA,+BAuBI,iFAAkF,CADlF,iBtBqtGJ,CsBhtGA,sBACE,iBtBktGF,CsBntGA,oCAGI,0CtBmtGJ,CsB/sGM,2FACE,YtBktGR,CsB1tGA,iEAWU,atBktGV,CsB7tGA,uGAaY,gBtBmtGZ,CsB5sGA,iBAEE,eAAgB,CAChB,aAAc,CAFd,atBgtGF,CsBjtGA,sDAMI,mCtB8sGJ,CsB1sGA,6BACI,atB4sGJ,CsBzsGA,aAGE,yBADA,eAAgB,CADhB,iBtB6sGF,CsBxsGA,wBACE,atB0sGF,CsB3sGA,6CAGI,+CtB2sGJ,CsBvsGA,8BACE,atBysGF,CuB18GA,gBACI,wCACA,wCACA,yCvB48GJ,CuB/8GA,6CAOQ,iBvB28GR,CuBl9GA,uGAcQ,kBAAmB,CADnB,qBAAsB,CADtB,6BAA8B,CAD9B,cAAe,CAIf,UvB28GR,CwBh+GA,gCAGY,qCxBg+GZ,CyBh+GI,+BrBCF,iOJu+GF,CyBl+GI,qErBNF,oCqBEI,WAAY,CrBChB,yBAA0B,CAD1B,yBAA0B,CqBDtB,UzB++GN,CyB1+GI,sCrBLF,sZJ++GF,CyBp+GI,6BrBXF,keJu/GF,CyBt+GI,0DrBlBF,oCqBcI,WAAY,CrBXhB,yBAA0B,CAD1B,yBAA0B,CqBWtB,UzBm/GN,CyB9+GI,6BrBjBF,gWJ+/GF,CyBx+GI,6BrBvBF,0WJugHF,CyB1+GI,4DrB9BF,oCqB0BI,WAAY,CrBvBhB,yBAA0B,CAD1B,yBAA0B,CqBuBtB,UzBu/GN,CyBl/GI,+BrB7BF,0nBJ+gHF,CyB5+GI,iCrBnCF,yRJuhHF,CyB9+GI,+DrB1CF,oCqBsCI,WAAY,CrBnChB,yBAA0B,CAD1B,yBAA0B,CqBmCtB,UzB2/GN,CyBt/GI,8BrBzCF,iWJ+hHF,CyBh/GI,mCrB/CF,gcJuiHF,CyBl/GI,gErBtDF,oCqBkDI,WAAY,CrB/ChB,yBAA0B,CAD1B,yBAA0B,CqB+CtB,UzB+/GN,CyB1/GI,6BrBrDF,sNJ+iHF,CyBp/GI,iCrB5DF,oCqB8DI,WAAY,CrB7DhB,y5CAEA,yBAA0B,CAD1B,yBAA0B,CqB2DtB,UzB2/GN,CyBt/GI,iCrBjEF,uhBJ+jHF,CyBx/GI,+DrBxEF,oCqBoEI,WAAY,CrBjEhB,yBAA0B,CAD1B,yBAA0B,CqBiEtB,UzBqgHN,CyBhgHI,8BrBvEF,8TJukHF,CyB1/GI,iCrB7EF,+cJ+kHF,CyB5/GI,yErBpFF,oCqBgFI,WAAY,CrB7EhB,yBAA0B,CAD1B,yBAA0B,CqB6EtB,UzBygHN,CyBpgHI,wCrBnFF,oiBJulHF,CyB9/GI,mCrBzFF,sQJ+lHF,CyBhgHI,0ErBhGF,oCqB4FI,WAAY,CrBzFhB,yBAA0B,CAD1B,yBAA0B,CqByFtB,UzB6gHN,CyBxgHI,uCrB/FF,qlCJumHF,CyBlgHI,gCrBrGF,sQJ+mHF,CyBpgHI,gErB5GF,oCqBwGI,WAAY,CrBrGhB,yBAA0B,CAD1B,yBAA0B,CqBqGtB,UzBihHN,CyB5gHI,gCrB3GF,i7BJunHF,CyBtgHI,oCrBjHF,ySJ+nHF,CyBxgHI,8ErBxHF,oCqBoHI,WAAY,CrBjHhB,yBAA0B,CAD1B,yBAA0B,CqBiHtB,UzBqhHN,CyBhhHI,0CrBvHF,0PJuoHF,CyB1gHI,wCrB7HF,wPJ+oHF,CyB5gHI,gFrBpIF,oCqBgII,WAAY,CrB7HhB,yBAA0B,CAD1B,yBAA0B,CqB6HtB,UzByhHN,CyBphHI,wCrBnIF,4PJupHF,CyB9gHI,yCrBzIF,2PJ+pHF,CyBhhHI,2ErBhJF,oCqB4II,WAAY,CrBzIhB,yBAA0B,CAD1B,yBAA0B,CqByItB,UzB6hHN,CyBxhHI,kCrB/IF,uTJuqHF,CyBlhHI,kCrBrJF,sTJ+qHF,CyBphHI,gFrB5JF,oCqBwJI,WAAY,CrBrJhB,yBAA0B,CAD1B,yBAA0B,CqBqJtB,UzBiiHN,CyB5hHI,8CrB3JF,4VJurHF,CyBthHI,+CrBjKF,qVJ+rHF,CyBxhHI,2FrBxKF,oCqBoKI,WAAY,CrBjKhB,yBAA0B,CAD1B,yBAA0B,CqBiKtB,UzBqiHN,CyBhiHI,4CrBvKF,uWJusHF,CyB1hHI,4CrB7KF,sWJ+sHF,CyB5hHI,wFrBpLF,oCqBgLI,WAAY,CrB7KhB,yBAA0B,CAD1B,yBAA0B,CqB6KtB,UzByiHN,CyBpiHI,4CrBnLF,ijBJutHF,CyB9hHI,yCrBzLF,ikBJ+tHF,CyBhiHI,6ErBhMF,oCqB4LI,WAAY,CrBzLhB,yBAA0B,CAD1B,yBAA0B,CqByLtB,UzB6iHN,CyBxiHI,oCrB/LF,sOJuuHF,CyBliHI,kCrBrMF,0WJ+uHF,CyBpiHI,uErB5MF,oCqBwMI,WAAY,CrBrMhB,yBAA0B,CAD1B,yBAA0B,CqBqMtB,UzBijHN,CyB5iHI,qCrB3MF,yVJuvHF,CyBtiHI,oCrBjNF,yPJ+vHF,CyBxiHI,uErBxNF,oCqBoNI,WAAY,CrBjNhB,yBAA0B,CAD1B,yBAA0B,CqBiNtB,UzBqjHN,CyBhjHI,mCrBvNF,kbJuwHF,CyB1iHI,6BrB9NF,oCqBgOI,WAAY,CrB/NhB,kZAEA,yBAA0B,CAD1B,yBAA0B,CqB6NtB,UzBijHN,CyB5iHI,sCrBvNF,m6GqByNI,WAAY,CADZ,UzBgjHN,CyB3iHI,wCrBzOF,kRJ4xHF,CyB7iHI,mFrBhPF,oCqB4OI,WAAY,CrBzOhB,yBAA0B,CAD1B,yBAA0B,CqByOtB,UzB0jHN,CyBrjHI,2CrB/OF,kVJoyHF,CyB/iHI,2CrBtPF,oCqBwPI,WAAY,CrBvPhB,qRAEA,yBAA0B,CAD1B,yBAA0B,CqBqPtB,UzBsjHN,CyB/iHI,0CrB7PF,2QJozHF,CyBjjHI,qFrBpQF,oCqBgQI,WAAY,CrB7PhB,yBAA0B,CAD1B,yBAA0B,CqB6PtB,UzB8jHN,CyBzjHI,2CrBnQF,wRJ4zHF,CyBnjHI,4CrBzQF,mRJo0HF,CyBrjHI,wFrBhRF,oCqB4QI,WAAY,CrBzQhB,yBAA0B,CAD1B,yBAA0B,CqByQtB,UzBkkHN,CyB7jHI,4CrB/QF,+MJ40HF,CyBvjHI,2CrBrRF,wPJo1HF,CyBzjHI,wFrB5RF,oCqBwRI,WAAY,CrBrRhB,yBAA0B,CAD1B,yBAA0B,CqBqRtB,UzBskHN,CyBjkHI,6CrB3RF,0PJ41HF,CyB3jHI,4CrBjSF,0PJo2HF,CyB7jHI,sFrBxSF,oCqBoSI,WAAY,CrBjShB,yBAA0B,CAD1B,yBAA0B,CqBiStB,UzB0kHN,CyBrkHI,0CrBvSF,wPJ42HF,CyB/jHI,6CrB7SF,yPJo3HF,CyBjkHI,0FrBpTF,oCqBgTI,WAAY,CrB7ShB,yBAA0B,CAD1B,yBAA0B,CqB6StB,UzB8kHN,CyBzkHI,6CrBnTF,yPJ43HF,CyBjkHI,sCrB3TF,+PJo4HF,CyBnkHI,2ErBlUF,oCqB8TI,WAAY,CrB3ThB,yBAA0B,CAD1B,yBAA0B,CqB2TtB,UzBglHN,CyB3kHI,qCrBjUF,+PJ44HF,CyBrkHI,wCrBvUF,+RJo5HF,CyBvkHI,gFrB9UF,oCqB0UI,WAAY,CrBvUhB,yBAA0B,CAD1B,yBAA0B,CqBuUtB,UzBolHN,CyB/kHI,wCrB7UF,+RJ45HF,CyBzkHI,mCrBnVF,mUJo6HF,CyB3kHI,wErB1VF,oCqBsVI,WAAY,CrBnVhB,yBAA0B,CAD1B,yBAA0B,CqBmVtB,UzBwlHN,CyBnlHI,qCrBzVF,yUJ46HF,CyB7kHI,oCrB/VF,sUJo7HF,CyB/kHI,sErBtWF,oCqBkWI,WAAY,CrB/VhB,yBAA0B,CAD1B,yBAA0B,CqB+VtB,UzB4lHN,CyBvlHI,kCrBrWF,sRJ47HF,CyBjlHI,qCrB3WF,wUJo8HF,CyBnlHI,0ErBlXF,oCqB8WI,WAAY,CrB3WhB,yBAA0B,CAD1B,yBAA0B,CqB2WtB,UzBgmHN,CyB3lHI,qCrBjXF,yRJ48HF,CyBrlHI,yCrBvXF,uSJo9HF,CyBvlHI,gFrB9XF,oCqB0XI,WAAY,CrBvXhB,yBAA0B,CAD1B,yBAA0B,CqBuXtB,UzBomHN,CyB/lHI,uCrB7XF,ySJ49HF,CyBvlHI,8BrBrYF,41BJo+HF,CyBzlHI,mErB5YF,oCqBwYI,WAAY,CrBrYhB,yBAA0B,CAD1B,yBAA0B,CqBqYtB,UzBsmHN,CyBjmHI,qCrB3YF,8pBJ4+HF,CyB1lHI,qCrBnZF,sCqBqZI,WAAY,CrBpZhB,qfAEA,yBAA0B,CAD1B,yBAA0B,CqBkZtB,UzBimHN,CyB5lHI,wCrBzZF,oCqB2ZI,WAAY,CrB1ZhB,wXAEA,yBAA0B,CAD1B,yBAA0B,CqBwZtB,UzBmmHN,CyB9lHI,8CrBlZF,0ZqBoZI,WAAY,CADZ,UzBkmHN,CyB7lHI,uCrBpaF,04BJygIF,CyB9lHI,yErB5aF,oCqBuaI,WAAY,CrBpahB,yBAA0B,CAD1B,yBAA0B,CqBoatB,UzB4mHN,CyBtmHI,kCrB3aF,+UJihIF,CyBhmHI,kCrBjbF,ybJyhIF,CyBlmHI,oErBxbF,oCqBobI,WAAY,CrBjbhB,yBAA0B,CAD1B,yBAA0B,CqBibtB,UzB+mHN,CyB1mHI,kCrBvbF,+nBJiiIF,CyBpmHI,kCrB7bF,0VJyiIF,CyBtmHI,oErBpcF,oCqBgcI,WAAY,CrB7bhB,yBAA0B,CAD1B,yBAA0B,CqB6btB,UzBmnHN,CyB9mHI,kCrBncF,iUJijIF,CyBrmHM,mDrB5cJ,8UJyjIF,CyBvmHM,sGrBndJ,mCqB+cM,WAAY,CrB5clB,yBAA0B,CAD1B,yBAA0B,CqB4cpB,UzBonHR,CyB/mHM,mDrBldJ,4aJikIF,CyBzmHM,mDrBxdJ,8nBJykIF,CyB3mHM,sGrB/dJ,mCqB2dM,WAAY,CrBxdlB,yBAA0B,CAD1B,yBAA0B,CqBwdpB,UzBwnHR,CyBnnHM,mDrB9dJ,yVJilIF,C0BllII,sCtBCF,0OJylIF,C0BplII,8EtBNF,oCsBEI,WAAY,CtBChB,yBAA0B,CAD1B,yBAA0B,CsBDtB,U1BimIN,C0B5lII,wCtBLF,wOJimIF,C0BtlII,iCtBZF,oCsBcI,WAAY,CtBbhB,8SAEA,yBAA0B,CAD1B,yBAA0B,CsBWtB,U1B6lIN,C0BxlII,0CtBjBF,yZJinIF,C0B1lII,2EtBxBF,sCsBoBI,WAAY,CtBjBhB,yBAA0B,CAD1B,yBAA0B,CsBiBtB,U1BumIN,C0BlmII,iCtBvBF,oeJynIF,C0B5lII,mCtB7BF,0nBJioIF,C0B9lII,wEtBpCF,oCsBgCI,WAAY,CtB7BhB,yBAA0B,CAD1B,yBAA0B,CsB6BtB,U1B2mIN,C0BtmII,qCtBnCF,yRJyoIF,C0BhmII,kCtBzCF,iWJipIF,C0BlmII,yEtBhDF,oCsB4CI,WAAY,CtBzChB,yBAA0B,CAD1B,yBAA0B,CsByCtB,U1B+mIN,C0B1mII,uCtB/CF,gcJypIF,C0BpmII,qCtBrDF,+dJiqIF,C0BtmII,uEtB5DF,oCsBwDI,WAAY,CtBrDhB,yBAA0B,CAD1B,yBAA0B,CsBqDtB,U1BmnIN,C0B9mII,kCtB3DF,8TJyqIF,C0BxmII,qCtBjEF,+cJirIF,C0B5kII,mFtBtGF,oCsBoEI,WAAY,CtBjEhB,yBAA0B,CAD1B,yBAA0B,CsBiEtB,U1BunIN,C0BplII,8CtBrGF,0PJyrIF,C0B9kII,4CtB3GF,wPJisIF,C0BhlII,wFtBlHF,oCsB8GI,WAAY,CtB3GhB,yBAA0B,CAD1B,yBAA0B,CsB2GtB,U1B6lIN,C0BxlII,4CtBjHF,4PJysIF,C0BllII,6CtBvHF,2PJitIF,C0BplII,mFtB9HF,oCsB0HI,WAAY,CtBvHhB,yBAA0B,CAD1B,yBAA0B,CsBuHtB,U1BimIN,C0B5lII,sCtB7HF,uTJytIF,C0BtlII,sCtBnIF,sTJiuIF,C0BxlII,wFtB1IF,oCsBsII,WAAY,CtBnIhB,yBAA0B,CAD1B,yBAA0B,CsBmItB,U1BqmIN,C0BhmII,kDtBzIF,4VJyuIF,C0B1lII,mDtB/IF,qVJivIF,C0B5lII,mGtBtJF,oCsBkJI,WAAY,CtB/IhB,yBAA0B,CAD1B,yBAA0B,CsB+ItB,U1BymIN,C0BpmII,gDtBrJF,uWJyvIF,C0B9lII,gDtB3JF,sWJiwIF,C0BhmII,gGtBlKF,oCsB8JI,WAAY,CtB3JhB,yBAA0B,CAD1B,yBAA0B,CsB2JtB,U1B6mIN,C0BxmII,gDtBjKF,ijBJywIF,C0BlmII,6CtBvKF,ikBJixIF,C0BpmII,mFtB9KF,oCsB0KI,WAAY,CtBvKhB,yBAA0B,CAD1B,yBAA0B,CsBuKtB,U1BinIN,C0B5mII,sCtB7KF,0WJyxIF,C0BtmII,yCtBnLF,yVJiyIF,C0BxmII,iFtB1LF,oCsBsLI,WAAY,CtBnLhB,yBAA0B,CAD1B,yBAA0B,CsBmLtB,U1BqnIN,C0BhnII,wCtBzLF,yPJyyIF,C0B1mII,uCAEE,WAAY,CtBjMhB,mbsBgMI,U1BinIN,C0B5mII,iFtBtMF,oCAGA,yBAA0B,CAD1B,yBJwzIF,C0BpnII,0CAEE,WAAY,CtBvMhB,gyBsBsMI,U1BmnIN,C0B9mII,4CtB3MF,kRJi0IF,C0BhnII,2FtBlNF,oCsB8MI,WAAY,CtB3MhB,yBAA0B,CAD1B,yBAA0B,CsB2MtB,U1B6nIN,C0BxnII,+CtBjNF,kVJy0IF,C0BlnII,+CtBxNF,oCsB0NI,WAAY,CtBzNhB,qRAEA,yBAA0B,CAD1B,yBAA0B,CsBuNtB,U1BynIN,C0BlnII,8CtB/NF,2QJy1IF,C0BpnII,6FtBtOF,oCsBkOI,WAAY,CtB/NhB,yBAA0B,CAD1B,yBAA0B,CsB+NtB,U1BioIN,C0B5nII,+CtBrOF,wRJi2IF,C0BtnII,gDtB3OF,mRJy2IF,C0BxnII,gGtBlPF,oCsB8OI,WAAY,CtB3OhB,yBAA0B,CAD1B,yBAA0B,CsB2OtB,U1BqoIN,C0BhoII,gDtBjPF,+MJi3IF,C0B1nII,+CtBvPF,wPJy3IF,C0B5nII,gGtB9PF,oCsB0PI,WAAY,CtBvPhB,yBAA0B,CAD1B,yBAA0B,CsBuPtB,U1ByoIN,C0BpoII,iDtB7PF,0PJi4IF,C0B9nII,gDtBnQF,0PJy4IF,C0BhoII,8FtB1QF,oCsBsQI,WAAY,CtBnQhB,yBAA0B,CAD1B,yBAA0B,CsBmQtB,U1B6oIN,C0BxoII,8CtBzQF,wPJi5IF,C0BloII,iDtB/QF,yPJy5IF,C0BpoII,kGtBtRF,oCsBkRI,WAAY,CtB/QhB,yBAA0B,CAD1B,yBAA0B,CsB+QtB,U1BipIN,C0B5oII,iDtBrRF,yPJi6IF,C0BpoII,0CtB7RF,+PJy6IF,C0BtoII,mFtBpSF,oCsBgSI,WAAY,CtB7RhB,yBAA0B,CAD1B,yBAA0B,CsB6RtB,U1BmpIN,C0B9oII,yCtBnSF,+PJi7IF,C0BxoII,4CtBzSF,+RJy7IF,C0B1oII,wFtBhTF,oCsB4SI,WAAY,CtBzShB,yBAA0B,CAD1B,yBAA0B,CsByStB,U1BupIN,C0BlpII,4CtB/SF,+RJi8IF,C0B5oII,uCtBrTF,mUJy8IF,C0B9oII,gFtB5TF,oCsBwTI,WAAY,CtBrThB,yBAA0B,CAD1B,yBAA0B,CsBqTtB,U1B2pIN,C0BtpII,yCtB3TF,yUJi9IF,C0BhpII,wCtBjUF,sUJy9IF,C0BlpII,8EtBxUF,oCsBoUI,WAAY,CtBjUhB,yBAA0B,CAD1B,yBAA0B,CsBiUtB,U1B+pIN,C0B1pII,sCtBvUF,sRJi+IF,C0BppII,yCtB7UF,wUJy+IF,C0BtpII,kFtBpVF,oCsBgVI,WAAY,CtB7UhB,yBAA0B,CAD1B,yBAA0B,CsB6UtB,U1BmqIN,C0B9pII,yCtBnVF,yRJi/IF,C0BxpII,6CtBzVF,uSJy/IF,C0B1pII,wFtBhWF,oCsB4VI,WAAY,CtBzVhB,yBAA0B,CAD1B,yBAA0B,CsByVtB,U1BuqIN,C0BlqII,2CtB/VF,ySJigJF,C0B1pII,kCtBvWF,g3BJygJF,C0B5pII,2EtB9WF,oCsB0WI,WAAY,CtBvWhB,yBAA0B,CAD1B,yBAA0B,CsBuWtB,U1ByqIN,C0BpqII,yCtB7WF,8pBJihJF,C0B7pII,yCtBrXF,sCsBuXI,WAAY,CtBtXhB,q0BAEA,yBAA0B,CAD1B,yBAA0B,CsBoXtB,U1BoqIN,C0B/pII,4CtB3XF,oCsB6XI,WAAY,CtB5XhB,wPAEA,yBAA0B,CAD1B,yBAA0B,CsB0XtB,U1BsqIN,C0BjqII,kDtBpXF,6OsBsXI,WAAY,CADZ,U1BqqIN,C0BhqII,yCtBtYF,mQJ8iJF,C0BlqII,oFtB7YF,oCsByYI,WAAY,CtBtYhB,yBAA0B,CAD1B,yBAA0B,CsBsYtB,U1B+qIN,C0B1qII,2CtB5YF,+eJsjJF,C0BpqII,+CtBnZF,mCsBqZI,WAAY,CtBpZhB,uPAEA,yBAA0B,CAD1B,yBAA0B,CsBkZtB,U1B2qIN,C0BtqII,sCtBxZF,uUJskJF,C0BxqII,uEtB/ZF,oCsB2ZI,WAAY,CtBxZhB,yBAA0B,CAD1B,yBAA0B,CsBwZtB,U1BqrIN,C0BhrII,iCtB9ZF,2tBJ8kJF,C0B3qII,iCtBpaF,mCsBsaI,WAAY,CtBrahB,kNAEA,yBAA0B,CAD1B,yBAA0B,CsBmatB,U1BkrIN,C0BzqIM,yCAEE,WAAY,CADZ,W1B4qIR,C0BvqIM,yCtBnbJ,iSJkmJF,C0BzqIM,kFtB1bJ,sCsBsbM,WAAY,CtBnblB,yBAA0B,CAD1B,yBAA0B,CsBmbpB,U1BsrIR,C0BjrIM,yCtBzbJ,gSJ0mJF,C0B3qIM,2CtB/bJ,kOJknJF,C0B7qIM,oFtBtcJ,sCsBkcM,WAAY,CtB/blB,yBAA0B,CAD1B,yBAA0B,CsB+bpB,U1B0rIR,C0BrrIM,yCtBrcJ,oNJ0nJF,C0B/qIM,yCtB3cJ,oeJkoJF,C0BjrIM,sFtBldJ,sCsB8cM,WAAY,CtB3clB,yBAA0B,CAD1B,yBAA0B,CsB2cpB,U1B8rIR,C0BzrIM,6CtBjdJ,q5BJ0oJF,C0BnrIM,yCtBvdJ,8OJkpJF,C0BrrIM,kFtB9dJ,sCsB0dM,WAAY,CtBvdlB,yBAA0B,CAD1B,yBAA0B,CsBudpB,U1BksIR,C0B7rIM,yCtB7dJ,yOJ0pJF,C0BvrIM,gDtBpeJ,mCsBseM,WAAY,CtBrelB,wOAEA,yBAA0B,CAD1B,yBAA0B,CsBmepB,U1B8rIR,C0BzrIM,8CtBzeJ,oUJ0qJF,C0B3rIM,4FtBhfJ,sCsB4eM,WAAY,CtBzelB,yBAA0B,CAD1B,yBAA0B,CsByepB,U1BwsIR,C0BnsIM,8CtB/eJ,0WJkrJF,C0B7rIM,8CtBrfJ,mrBJ0rJF,C0B/rIM,4FtB5fJ,sCsBwfM,WAAY,CtBrflB,yBAA0B,CAD1B,yBAA0B,CsBqfpB,U1B4sIR,C0BvsIM,8CtB3fJ,gUJksJF,C0BjsIM,kDtBlgBJ,sCsBogBM,WAAY,CtBngBlB,4UAEA,yBAA0B,CAD1B,yBAA0B,CsBigBpB,U1BwsIR,C2B7sJI,wBvBeF,iUuBbM,WAAY,CADZ,U3BitJR,C2B5sJI,wBvBSF,0iBuBPM,WAAY,CADZ,U3BgtJR,C2B3sJI,uBvBGF,ixCuBDM,WAAY,CADZ,U3B+sJR,C2B1sJI,uBvBHF,yvCuBKM,WAAY,CADZ,U3B8sJR,CAzrJA,MACI,wBA2rJJ,CAtrJA,iBACI,mCAAoC,CAEpC,WAAY,CACZ,MAAO,CAKP,eAAgB,CADhB,0FAA2F,CAD3F,iBAAkB,CAFlB,KAAM,CAHN,UAAW,CAIX,YA2rJJ,CAjsJA,0BAYQ,YAAa,CACb,qBAAsB,CACtB,WAAY,CAEZ,WAAY,CACZ,aAAc,CACd,eAAgB,CAHhB,SA2rJR,CA1sJA,0BAsBQ,YAAa,CAEb,qBAAsB,CACtB,uBAAwB,CAFxB,iBAyrJR,CAhtJA,kCAmCQ,0DAA2D,CAC3D,uDAAwD,CACxD,qDAAsD,CACtD,kDAAmD,CANnD,2CAA4C,CAC5C,0CAA2C,CAH3C,WAAY,CADZ,iBAAkB,CAElB,UA4rJR,CA3tJA,wCA4CY,kBAAmB,CADnB,iBAAkB,CAFlB,UAAW,CACX,cAurJZ,CAnrJY,oDACI,UAAW,CACX,iBAqrJhB,CAlrJY,8CACI,sBAorJhB,CA9qJA,uBAEQ,aA+qJR,CA3qJA,mDAEQ,eA6qJR,CAzqJA,iCACI,eA2qJJ,CAtqJA,yCACI,iBAwqJJ,CAtqJA,uDACI,SAyqJJ,CAvqJA,kCACI,aAAc,CAEd,WAAY,CADZ,UA0qJJ,CApqJI,mBACI,WAsqJR,CAvqJI,sBAGQ,YAAa,CAEb,cAAe,CADf,6BAA8B,CAK9B,mBAAoB,CAFpB,iBAAkB,CAClB,kBAAmB,CAFnB,UA0qJZ,CAjrJA,+BAcQ,YAsqJR,CAprJA,yBAuBQ,yDAEA,2BAA4B,CAC5B,qBAAsB,CAPtB,qCAKA,aAAc,CAHd,WAAY,CACZ,eAAgB,CALhB,iBAAkB,CAGlB,UA4qJR,CAhsJA,uCIxHE,+ZJ0JM,WAAY,CALZ,UAAW,CAGX,WAAY,CAFZ,iBAAkB,CAGlB,UAAW,CAFX,UAAW,CAIX,SAuqJR,CAlqJA,sBACI,SAoqJJ,CArqJA,yBAIQ,eAoqJR","sources":["webpack://documenteditor/../../apps/common/mobile/resources/less/colors-table.less","webpack://documenteditor/../../apps/presentationeditor/mobile/src/less/app.less","webpack://documenteditor/../../apps/common/mobile/resources/less/colors-table-dark.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common-rtl.less","webpack://documenteditor/../../apps/common/mobile/resources/less/icons.rtl.less","webpack://documenteditor/../../apps/common/mobile/resources/less/_mixins.less","webpack://documenteditor/../../apps/presentationeditor/mobile/src/less/app-rtl.less","webpack://documenteditor/../../apps/common/mobile/resources/less/collaboration.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common-ios.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common-material.less","webpack://documenteditor/../../apps/common/mobile/resources/less/ios/icons.less","webpack://documenteditor/../../apps/common/mobile/resources/less/material/icons.less","webpack://documenteditor/../../apps/common/mobile/resources/less/icons.less","webpack://documenteditor/../../apps/common/mobile/resources/less/dataview.less","webpack://documenteditor/../../apps/common/mobile/resources/less/about.less","webpack://documenteditor/../../apps/common/mobile/resources/less/search.less","webpack://documenteditor/./node_modules/framework7/less/mixins.less","webpack://documenteditor/../../apps/common/mobile/resources/less/ios/contextmenu.less","webpack://documenteditor/../../apps/common/mobile/resources/less/material/contextmenu.less","webpack://documenteditor/../../apps/common/mobile/resources/less/contextmenu.less","webpack://documenteditor/../../apps/common/mobile/resources/less/ios/comments.less","webpack://documenteditor/../../apps/common/mobile/resources/less/material/comments.less","webpack://documenteditor/../../apps/common/mobile/resources/less/comments.less","webpack://documenteditor/../../apps/presentationeditor/mobile/src/less/app-material.less","webpack://documenteditor/../../apps/presentationeditor/mobile/src/less/app-ios.less","webpack://documenteditor/../../apps/presentationeditor/mobile/src/less/icons-ios.less","webpack://documenteditor/../../apps/presentationeditor/mobile/src/less/icons-material.less","webpack://documenteditor/../../apps/presentationeditor/mobile/src/less/icons-common.less"],"sourcesContent":["\n:root {\n --brand-word: #446995;\n --brand-cell: #40865C;\n --brand-slide: #BE664F;\n --brand-form: #BE664F;\n --brand-primary: #3880BE;\n --brand-secondary: #ED7309;\n --brand-text-on-brand: #FFF;\n\n --background-primary: #FFF;\n --background-secondary: #FFF;\n --background-tertiary: #EFF0F5;\n --background-menu-divider: fade(#3C3C43, 15%);\n --background-button: #EFF0F5;\n\n --text-normal: #000000;\n --text-secondary: fade(#000, 60%);\n --text-tertiary: fade(#000, 40%);\n --text-link: #007AFF;\n --text-error: #FF3B30;\n\n --fill-black: #000;\n --fill-white: #FFF;\n\n --toolbar-background: #446995;\n --toolbar-icons: #FFF;\n --toolbar-segment: #446995;\n --toolbar-tab-normal:fade(#FFF, 50%);\n\n --component-disabled-opacity: .4;\n\n --active-opacity-word: fade(#446995, 30%);\n --active-opacity-slide: fade(#BE664F, 30%);\n --active-opacity-cell: fade(#40865C, 30%);\n\n --image-border-types-filter: none;\n\n // Canvas\n\n --canvas-background: #eee;\n --canvas-content-background: #fff;\n --canvas-page-border: #ccc;\n\n --canvas-ruler-background: #fff;\n //--canvas-ruler-border: #cbcbcb;\n --canvas-ruler-margins-background: #d9d9d9;\n --canvas-ruler-mark: #555;\n --canvas-ruler-handle-border: #555;\n --canvas-ruler-handle-border-disabled: #aaa;\n\n --canvas-high-contrast: #000;\n //--canvas-high-contrast-disabled: #666;\n\n --canvas-cell-border: fade(#000, 10%);\n //--canvas-cell-title-hover: #dfdfdf;\n --canvas-cell-title-selected: #cfcfcf;\n --canvas-cell-title-border: #d8d8d8;\n //--canvas-cell-title-border-hover: #c9c9c9;\n --canvas-cell-title-border-selected: #bbb;\n\n --canvas-dark-cell-title: #444;\n //--canvas-dark-cell-title-hover: #666 ;\n --canvas-dark-cell-title-selected: #111;\n --canvas-dark-cell-title-border: #3d3d3d;\n //--canvas-dark-cell-title-border-hover: #5c5c5c;\n --canvas-dark-cell-title-border-selected: #0f0f0f;\n --canvas-dark-content-background: #3a3a3a;\n --canvas-dark-page-border: #2a2a2a;\n\n //--canvas-scroll-thumb: #f7f7f7;\n //--canvas-scroll-thumb-hover: #c0c0c0;\n //--canvas-scroll-thumb-pressed: #adadad;\n //--canvas-scroll-thumb-border: #cbcbcb;\n //--canvas-scroll-thumb-border-hover: #cbcbcb;\n //--canvas-scroll-thumb-border-pressed: #adadad;\n //--canvas-scroll-arrow: #adadad;\n //--canvas-scroll-arrow-hover: #f7f7f7;\n //--canvas-scroll-arrow-pressed: #f7f7f7;\n //--canvas-scroll-thumb-target: #c0c0c0;\n //--canvas-scroll-thumb-target-hover: #f7f7f7;\n //--canvas-scroll-thumb-target-pressed: #f7f7f7;\n}\n\n@brand-word: var(--brand-word);\n@brand-cell: var(--brand-cell);\n@brand-slide: var(--brand-slide);\n@brand-form: var(--brand-form);\n@brand-primary: var(--brand-primary);\n@brand-secondary: var(--brand-secondary);\n@brand-text-on-brand: var(--brand-text-on-brand);\n\n@background-primary: var(--background-primary);\n@background-secondary: var(--background-secondary);\n@background-tertiary: var(--background-tertiary);\n@background-menu-divider: var(--background-menu-divider);\n@background-button: var(--background-button);\n\n@text-normal: var(--text-normal);\n@text-secondary: var(--text-secondary);\n@text-tertiary: var(--text-tertiary);\n@text-link: var(--text-link);\n@text-error: var(--text-error);\n\n@fill-black: var(--fill-black);\n@fill-white: var(--fill-white);\n\n@toolbar-icons: var(--toolbar-icons);\n@toolbar-segment: var(--toolbar-segment);\n@toolbar-tab-normal: var(--toolbar-tab-normal);\n\n@component-disabled-opacity: var(--component-disabled-opacity);\n","@import '../../../../../vendor/framework7-react/node_modules/framework7/less/mixins.less';\n@import '../../../../common/mobile/resources/less/_mixins.less';\n@import '../../../../common/mobile/resources/less/colors-table.less';\n@import '../../../../common/mobile/resources/less/colors-table-dark.less';\n@import './app-rtl.less';\n\n@brandColor: var(--brand-slide);\n\n.device-ios {\n --toolbar-background: var(--background-primary, #fff);\n --toolbar-segment: var(--brand-slide, #BE664F);\n --toolbar-icons: var(--brand-slide, #BE664F);\n}\n.device-android {\n --toolbar-background: var(--brand-slide, #BE664F);\n\n .theme-type-dark {\n --toolbar-icons: var(--brand-slide, #BE664F);\n }\n}\n\n@toolbar-background: var(--toolbar-background);\n@toolbar-segment: var(--toolbar-segment);\n@button-active-opacity: var(--active-opacity-slide);\n\n@import '../../../../common/mobile/resources/less/collaboration.less';\n@import '../../../../common/mobile/resources/less/common.less';\n@import '../../../../common/mobile/resources/less/common-ios.less';\n@import '../../../../common/mobile/resources/less/common-material.less';\n@import '../../../../common/mobile/resources/less/icons.less';\n@import '../../../../common/mobile/resources/less/dataview.less';\n@import '../../../../common/mobile/resources/less/about.less';\n@import '../../../../common/mobile/resources/less/search.less';\n@import '../../../../common/mobile/resources/less/contextmenu.less';\n@import '../../../../common/mobile/resources/less/comments.less';\n@import './app-material.less';\n@import './app-ios.less';\n@import './icons-ios.less';\n@import './icons-material.less';\n@import './icons-common.less';\n\n:root {\n --f7-popover-width: 360px;\n}\n\n// Skeleton of document\n\n.doc-placeholder {\n background: var(--canvas-background);\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n z-index: 6000;\n position: absolute;\n padding-top: calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-subnavbar-offset, 0px));\n overflow: hidden;\n\n .slide-h {\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n width: 90%;\n height: 100%;\n margin: 0 auto;\n padding-top: 30%;\n }\n\n .slide-v {\n display: flex;\n position: relative;\n flex-direction: column;\n padding-bottom: 56.1333%;\n }\n\n .slide-container {\n position: absolute;\n height: 100%;\n width: 100%;\n background: var(--canvas-content-background);\n border: 1px solid var(--canvas-page-border);\n\n -webkit-animation: flickerAnimation 2s infinite ease-in-out;\n -moz-animation: flickerAnimation 2s infinite ease-in-out;\n -o-animation: flickerAnimation 2s infinite ease-in-out;\n animation: flickerAnimation 2s infinite ease-in-out;\n\n > .line {\n height: 20%;\n margin: 0 120px;\n border-radius: 6px;\n background: #f5f5f5;\n\n &:nth-child(1) {\n height: 30%;\n margin: 10% 80px 0;\n }\n\n &.empty {\n background: transparent;\n }\n }\n }\n}\n\n.item-content {\n .preview{\n color: @gray;\n }\n}\n\n.phone, .tablet {\n .swiper-container{\n position: static;\n }\n}\n\n.swiper-pagination-bullet-active{\n background: @black;\n}\n\n// Skeleton table\n\n.table-styles .row div:not(:first-child) {\n margin: 2px auto 0px;\n}\n.table-styles .skeleton-list li, .table-styles .row div {\n padding: 0;\n}\n.table-styles .row .skeleton-list{\n display: block;\n width: 70px;\n height: 50px;\n}\n// Theme\n\n.slide-theme {\n &__list {\n margin: auto;\n ul {\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n width: auto;\n padding-left: 18px;\n padding-right: 18px;\n padding-bottom: 14px;\n }\n }\n .item-inner:after {\n display: none;\n }\n .item-theme {\n position: relative;\n margin: 0;\n box-shadow: 0 0 0 1px rgba(0,0,0,.15);\n width: 88px;\n height: 40px;\n margin-top: 14px;\n background-image: ~\"url(@{app-image-path}/themes/themes.png)\";\n display: block;\n background-repeat: no-repeat;\n background-size: cover;\n }\n .item-theme.active:before {\n content: '';\n position: absolute;\n width: 22px;\n height: 22px;\n right: -5px;\n bottom: -5px;\n z-index: 1;\n .encoded-svg-background('');\n }\n}\n\n.bullet-menu-image ul{\n padding: 0;\n \n li {\n display: inherit; \n }\n}","\n:root {\n .theme-type-dark,\n .theme-dark {\n --background-primary: #232323;\n --background-secondary: #333;\n --background-tertiary: #131313;\n --background-menu-divider: fade(#545458, 50%);\n --background-button: #333333;\n\n --text-normal: fade(#FFF, 87%);\n --text-secondary: fade(#FFF, 60%);\n --text-tertiary: fade(#FFF, 40%);\n --text-link: #1976D2;\n --text-error: #FF453A;\n\n --fill-black: #000;\n --fill-white: #FFF;\n\n --brand-word: #208BFF;\n --brand-cell: #34C759;\n --brand-slide: #FE8C33;\n --brand-form: #FE8C33;\n --brand-primary: #3E9CF0;\n --brand-secondary: #FFAF49;\n --brand-text-on-brand: #000;\n\n --toolbar-background: #232323;\n --toolbar-icons: #208BFF;\n --toolbar-segment: #FFF;\n --toolbar-tab-normal: #757575;\n\n --component-disabled-opacity: .4;\n\n --image-border-types-filter: invert(100%) brightness(4);\n\n --active-opacity-word: fade(#446995, 20%);\n --active-opacity-slide: fade(#BE664F, 20%);\n --active-opacity-cell: fade(#40865C, 20%);\n\n --image-border-types-filter: invert(100%) brightness(4);\n\n // Canvas\n\n --canvas-background: #000;\n --canvas-content-background: #fff;\n --canvas-page-border: #303030;\n\n --canvas-ruler-background: #636366;\n //--canvas-ruler-border: #2A2A2A;\n --canvas-ruler-margins-background: #3a3a3c;\n --canvas-ruler-mark: #8e8e93;\n --canvas-ruler-handle-border: #636366;\n --canvas-ruler-handle-border-disabled: #636366;\n\n --canvas-high-contrast: #000;\n //--canvas-high-contrast-disabled: #000;\n\n --canvas-cell-border: fade(#000, 10%);\n --canvas-cell-title-border: #d5d5d5;\n --canvas-cell-title-border-hover: #858585;\n --canvas-cell-title-border-selected: #afafaf;\n //--canvas-cell-title-hover: #787878;\n --canvas-cell-title-selected: #cfcfcf;\n\n --canvas-dark-cell-title: #444;\n //--canvas-dark-cell-title-hover: #000;\n --canvas-dark-cell-title-selected: #111;\n --canvas-dark-cell-title-border: #d5d5d5;\n //--canvas-dark-cell-title-border-hover: #191919;\n --canvas-dark-cell-title-border-selected: #afafaf;\n\n //--canvas-scroll-thumb: #404040;\n //--canvas-scroll-thumb-hover: #999;\n //--canvas-scroll-thumb-pressed: #adadad;\n //--canvas-scroll-thumb-border: #2a2a2a;\n //--canvas-scroll-thumb-border-hover: #999;\n //--canvas-scroll-thumb-border-pressed: #adadad;\n //--canvas-scroll-arrow: #999;\n //--canvas-scroll-arrow-hover: #404040;\n //--canvas-scroll-arrow-pressed: #404040;\n //--canvas-scroll-thumb-target: #999;\n //--canvas-scroll-thumb-target-hover: #404040;\n //--canvas-scroll-thumb-target-pressed: #404040;\n }\n}","[dir=\"rtl\"].device-android {\n .app-layout {\n .searchbar {\n input {\n padding-right: 24px;\n padding-left: 36px;\n background-position: right;\n }\n\n .number-search-results {\n right: auto;\n left: 26px;\n }\n }\n }\n\n .wrap-comment, .comment-list{\n .comment-header .initials {\n margin-right: 0;\n margin-left: 10px;\n }\n }\n\n .actions-modal {\n .actions-button-text {\n text-align: right;\n }\n }\n\n .navigation-sheet {\n &__title {\n padding-left: 0;\n padding-right: 16px;\n }\n }\n}\n\n[dir=\"rtl\"].device-ios .app-layout {\n .subnavbar,.navbar .left a + a {\n margin-right: 0;\n }\n\n .subnavbar,.navbar .right a + a {\n margin-right: 0;\n }\n\n .tab-buttons {\n .tab-link:first-child {\n border-radius: 0px 5px 5px 0px;\n }\n\n .tab-link:last-child {\n border-radius: 5px 0px 0px 5px;\n }\n }\n\n .searchbar .number-search-results {\n right: auto;\n left: 26px;\n }\n\n .popover {\n li:last-child, li:first-child {\n .segmented a:first-child {\n border-radius: 0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0;\n }\n .segmented a:last-child {\n border-radius: var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius);\n }\n } \n }\n\n .list {\n .item-inner {\n .item-after .segmented {\n margin-left: 0px;\n margin-right: 10px;\n }\n }\n }\n\n .searchbar-inner__right .buttons-row a.next {\n margin-left: 0;\n margin-right: 15px;\n }\n\n .searchbar-inner__left {\n margin-right: 0;\n margin-left: 10px;\n }\n\n .navbar .searchbar-input-wrap {\n margin-left: 10px;\n margin-right: 0;\n }\n\n .comment-list .item-content .item-inner .comment-header {\n padding-left: 16px;\n }\n}\n\n[dir=\"rtl\"] {\n .comment-list .item-content .item-inner{\n padding-left: 0;\n .comment-header {\n .right {\n justify-content: space-between;\n .comment-resolve {\n margin-right: 0px;\n margin-left: 10px;\n }\n }\n\n .name {\n text-align: right;\n }\n }\n }\n\n .comment-quote {\n border-right: 1px solid var(--text-secondary);\n border-left: 0;\n padding-left: 16px;\n padding-right: 10px;\n }\n\n .comment-text, .reply-text {\n padding-right: 0;\n padding-left: 15px;\n }\n\n // .comment-list .item-content .item-inner .comment-header {\n // padding-left: 16px;\n // }\n\n #add-comment-dialog .dialog .dialog-inner .wrap-comment .name, #edit-comment-dialog .dialog .dialog-inner .wrap-comment .name, #add-reply-dialog .dialog .dialog-inner .wrap-comment .name, #edit-reply-dialog .dialog .dialog-inner .wrap-comment .name, #add-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date, #edit-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date, #add-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date, #edit-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date, #add-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date, #edit-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date, #add-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date, #edit-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date {\n text-align: right;\n }\n\n #view-comment-popover .page .page-content {\n padding: 16px 0 60px 16px;\n }\n\n .wrap-comment {\n padding: 16px 16px 0 24px;\n }\n\n .shapes {\n .thumb {\n transform: scaleX(-1);\n }\n }\n\n .settings-popup,\n #settings-popover{\n .link {\n display: inline;\n }\n }\n\n #edit-table-style {\n ul {\n padding-right: 0;\n }\n }\n\n .color-schemes-menu {\n .item-title{\n margin-right: 20px;\n }\n }\n\n .list [slot=\"root-start\"] {\n padding: 15px 15px 0 0px;\n }\n\n .numbers, .bullets, .multilevels {\n .item-content {\n padding-right: 0;\n }\n }\n\n .dataview .active::after {\n left: -5px;\n right: unset;\n }\n\n .popup .list .range-number, .popover .list .range-number, .sheet-modal .list .range-number {\n text-align: left;\n }\n\n .popup .list .inner-range-title, .popover .list .inner-range-title, .sheet-modal .list .inner-range-title {\n padding-left: 0;\n padding-right: 15px;\n }\n\n #color-picker .right-block {\n margin-left: 0px;\n margin-right: 20px;\n }\n\n .page-review .toolbar #btn-reject-change {\n margin-left: 0;\n margin-right: 20px;\n }\n\n .list li.no-indicator .item-link .item-inner {\n padding-right: 0;\n }\n\n // Dialog with password\n .dialog .modal-password .modal-password__icon {\n right: auto;\n left: 4px;\n }\n}\n\n@media (max-width: 550px) {\n .device-ios[dir=rtl] .app-layout {\n .searchbar-expandable.searchbar-enabled .searchbar-inner__right {\n margin-right: 10px;\n margin-left: 0;\n }\n\n .navbar .searchbar-input-wrap {\n margin-left: 0;\n }\n }\n\n .device-android[dir=rtl] .app-layout {\n .searchbar-expandable.searchbar-enabled .searchbar-inner__left {\n margin-right: 0;\n margin-left: 33px;\n }\n }\n}\n","[dir=\"rtl\"] {\n // Common rtl-icons\n i.icon {\n &.icon-next, &.icon-prev, &.icon-text-align-right, &.icon-text-align-left, \n &.icon-table-add-column-left, &.icon-table-add-column-right, &.icon-table-remove-column, \n &.icon-table-borders-left, &.icon-table-borders-right, &.icon-numbers-3, &.icon-numbers-7 {\n transform: scaleX(-1);\n }\n\n &.icon-numbers-1 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-2 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-4 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-5 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-6 {\n .encoded-svg-background('');\n }\n }\n\n // [PE] rtl-icons \n i.icon {\n &.icon-align-left, &.icon-align-right {\n transform: scaleX(-1);\n }\n }\n\n // [SSE] rtl-icons\n\n i.icon {\n &.icon-text-orientation-horizontal {\n .encoded-svg-mask('');\n }\n\n &.icon-text-orientation-anglecount {\n .encoded-svg-mask('');\n }\n\n &.icon-text-orientation-angleclock {\n .encoded-svg-mask('');\n }\n }\n}","// Encoded SVG Background\n.encoded-svg-mask(@svg, @color: @brandColor) {\n @url: `encodeURIComponent(@{svg})`;\n background-color: @color;\n -webkit-mask-image: url(\"data:image/svg+xml;charset=utf-8,@{url}\");\n -webkit-mask-size: contain;\n -webkit-mask-repeat: round;\n}\n\n.encoded-svg-uncolored-mask(@svg) {\n @url: `encodeURIComponent(@{svg})`;\n -webkit-mask-image: url(\"data:image/svg+xml;charset=utf-8,@{url}\");\n}\n\n.encoded-svg-background(@svg) {\n @url: `encodeURIComponent(@{svg})`;\n background-image: url(\"data:image/svg+xml;charset=utf-8,@{url}\");\n}","@import '../../../../common/mobile/resources/less/common-rtl.less';\n@import '../../../../common/mobile/resources/less/icons.rtl.less';\n\n[dir=\"rtl\"] {\n .slide-theme .item-theme.active:before {\n left: -5px;\n right: unset;\n }\n\n .slide-layout {\n .item-inner:before {\n left: 11px;\n right: unset;\n }\n .row img {\n transform: scaleX(-1);\n }\n }\n}",".page.page-users {\n .block-title {\n text-transform: none;\n margin-top: 20px;\n margin-bottom: 20px;\n font-size: 17px;\n line-height: 17px;\n font-weight: normal;\n }\n .color {\n min-width: 40px;\n min-height: 40px;\n text-align: center;\n border-radius: 50px;\n line-height: 40px;\n color: @fill-white;\n font-size: 18px;\n }\n}","@import './about';\n\n@white: #ffffff;\n@black: #000000;\n@gray: #c4c4c4;\n@darkGray: #6d6d72;\n@green: #4cd964;\n@red: #f00;\n@autoColor: @black;\n\n.row {\n --f7-cols-per-row: 1;\n align-items: flex-start;\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n}\n\n.row + .row {\n margin-top: var(--f7-grid-row-gap);\n}\n\n.navbar.main-navbar {\n height: 0;\n &.navbar-with-logo {\n height: 26px;\n }\n .navbar-inner {\n display: flex;\n justify-content: center;\n padding-top: 8px;\n }\n .navbar-bg {\n &:before, &:after {\n content: none;\n }\n }\n}\n\n.navbar-hidden {\n transform: translate3d(0, calc(-1 * (var(--f7-navbar-height) + var(--f7-subnavbar-height))), 0);\n}\n\n.navbar-hidden+.page>.page-content, .navbar-hidden+.page-content {\n padding-top: 0;\n}\n\n.page.editor>.page-content {\n transition: padding-top .3s ease-in;\n}\n\n.subnavbar {\n .subnavbar-inner {\n padding: 0;\n .title {\n //white-space: nowrap;\n overflow: hidden;\n text-overflow: initial;\n margin: 0;\n padding: 0;\n flex-shrink: initial;\n }\n }\n .icon-back {\n color: @toolbar-icons;\n }\n}\n\n.page.page-with-subnavbar {\n .page-content {\n --f7-page-subnavbar-offset: 0px;\n }\n &.page-with-logo .page-content {\n --f7-page-subnavbar-offset: 26px;\n }\n}\n\n.popup, .popover, .sheet-modal {\n .list {\n &:first-child {\n margin-top: 0;\n margin-bottom: 0;\n }\n .inner-range-title {\n color: @text-normal;\n padding: 15px 0 0 15px;\n }\n\n .range-number {\n color: @text-normal;\n min-width: 60px;\n text-align: right;\n }\n }\n .page-content {\n &.no-padding-top {\n padding-top: 0;\n }\n }\n}\n\n.sheet-modal.coauth__sheet {\n transition: all .3s;\n}\n\n.disabled, [disabled] {\n opacity: .55;\n pointer-events: none;\n}\n\n.text-content {\n padding: 14px 10px 0 10px;\n}\n\n.view .list {\n max-width: 100%;\n --menu-list-offset: 0px;\n\n ul {\n max-width: 100%;\n background: var(--f7-list-bg-color);\n }\n\n li.no-indicator {\n .item-link {\n .item-inner{\n padding-right: 15px;\n &:before {\n content: none;\n }\n }\n }\n }\n .item-text {\n text-overflow: initial;\n white-space: normal;\n height: auto;\n max-height: initial;\n -webkit-line-clamp: initial;\n }\n .font-item img {\n filter: var(--image-border-types-filter, none)\n }\n .buttons {\n .button.active {\n background-color: @button-active-opacity;\n }\n }\n .item-link .item-inner {\n width: 100%;\n }\n .item-inner {\n color: @text-normal;\n }\n}\n\n// Bullets, numbers and multilevels\n\n.bullets,\n.numbers,\n.multilevels {\n min-height: 160px;\n .row.list {\n margin: 0;\n ul {\n background: none;\n &:before, &:after {\n display: none;\n }\n display: grid;\n grid-template-columns: repeat(4, auto);\n justify-content: space-around;\n grid-gap: 10px;\n width: 100%;\n padding: 5px;\n li {\n width: 70px;\n height: 70px;\n border: 1px solid @gray;\n html.pixel-ratio-2 & {\n border: 0.5px solid @gray;\n }\n html.pixel-ratio-3 & {\n border: 0.33px solid @gray;\n }\n \n .thumb {\n width: 100%;\n height: 100%;\n background-color: @fill-white;\n background-size: cover;\n \n label {\n width: 100%;\n text-align: center;\n position: absolute;\n top: 34%;\n color: @fill-black;\n }\n }\n\n .item-number, .item-marker, .item-multilevellist {\n width: 68px;\n height: 68px;\n }\n }\n }\n }\n \n .row.list .item-content {\n padding-left: 0;\n padding-right: 0;\n min-height: 68px;\n .item-inner{\n padding: 0;\n &:after {\n display: none;\n }\n }\n }\n}\n\n.popover {\n .page .list:first-child:last-child {\n ul {\n border-radius: 0;\n background-color: var(--f7-list-bg-color);\n li:first-child, li:last-child {\n .item-link {\n border-radius: 0;\n }\n }\n }\n }\n}\n\n// .popover .list + .list {\n// margin-top: 0;\n// }\n\n.popover .list:first-child li:first-child, .popover .list:first-child li:first-child a, .popover .list:first-child li:first-child > label, .popover .list:last-child li:last-child, .popover .list:last-child li:last-child a, .popover .list:last-child li:last-child > label {\n border-radius: 0;\n}\n\n.shapes {\n li {\n width: 70px;\n height: 70px;\n margin: 0 1px;\n\n .thumb {\n width: 100%;\n height: 100%;\n background-color: @brandColor;\n }\n }\n}\n\n.chart-types {\n width: 100%;\n .row {\n padding: 0 10px;\n }\n li {\n width: 60px;\n height: 60px;\n margin: 6px;\n\n .thumb {\n width: 100%;\n height: 100%;\n background-size: contain;\n }\n }\n}\n\n.chart-styles {\n .row {\n li {\n margin: 0;\n padding: 1px;\n }\n img {\n width: 50px;\n height: 50px;\n }\n }\n}\n\n.segmented {\n .decrement, .increment {\n text-overflow: clip;\n }\n}\n\n.content-block {\n margin: 32px 0;\n padding: 0 16px;\n box-sizing: border-box;\n p {\n color: @text-normal;\n }\n}\n\n\n// Color Schemes\n\n.color-schemes-menu {\n cursor: pointer;\n display: block;\n // background-color: @white;\n .item-inner {\n justify-content: flex-start;\n }\n .color-schema-block {\n display: flex;\n }\n .color {\n min-width: 26px;\n min-height: 26px;\n margin: 0 2px 0 0;\n box-shadow: 0 0 0 1px rgba(0,0,0,.15) inset;\n }\n .item-title {\n margin-left: 20px;\n color: @text-normal;\n }\n}\n\n\n// Layout \n\n.slide-layout {\n &__list {\n margin: auto;\n }\n ul {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n &::before, &::after {\n display: none;\n }\n }\n li {\n position: relative;\n z-index: 1;\n margin-top: 12px;\n img {\n box-shadow: 0 0 0 1px rgba(0,0,0,.15);\n }\n }\n .item-inner {\n padding-top: 0;\n }\n .item-inner:after {\n display: none;\n }\n .item-inner:before {\n opacity: 0;\n content: '';\n position: absolute;\n width: 22px;\n height: 22px;\n right: 11px;\n bottom: 0;\n z-index: 1;\n background-repeat: no-repeat;\n .encoded-svg-mask('');\n }\n .active .item-inner:before {\n opacity: 1;\n }\n}\n\n// Transition \n\n.slide-transition {\n .splitter {\n display: flex;\n align-items: center;\n color: @black;\n label {\n margin: 0 5px;\n }\n }\n .buttons-row {\n display: flex;\n margin: 0;\n min-width: 90px;\n margin-left: 10px;\n .button {\n width: 100%;\n }\n .button:first-child {\n border-radius: 5px 0 0 5px;\n border-left-width: 1px;\n border-left-style: solid;\n }\n .button:last-child {\n border-radius: 0 5px 5px 0;\n }\n }\n}\n\n.style-effect, .style-type {\n .list .item-title {\n font-weight: normal; \n }\n}\n\n.range-slider-delay {\n width: 100%;\n margin: 4px 0 5px 0;\n appearance: none;\n background: linear-gradient(to right,#b7b8b7 0,#b7b8b7 100%);\n background-position: center;\n background-size: 100% 2px;\n background-repeat: no-repeat;\n outline: 0;\n border: none;\n box-sizing: content-box;\n &:disabled {\n opacity: .55;\n }\n &::-webkit-slider-thumb {\n appearance: none;\n height: 28px;\n width: 28px;\n border-radius: 50%;\n background: @white;\n cursor: pointer;\n box-shadow: 0 2px 4px rgba(0, 0, 0, .3);\n }\n &::-ms-thumb { \n appearance: none;\n height: 28px;\n width: 28px;\n border-radius: 50%;\n background: @white;\n cursor: pointer;\n box-shadow: 0 2px 4px rgba(0, 0, 0, .3);\n }\n}\n\n.buttons-list {\n ul {\n // &::before, &::after {\n // display: none;\n // }\n li {\n border: 0;\n font-weight: normal;\n .item-link {\n height: 100%;\n .item-content {\n min-height: initial;\n height: 100%;\n padding: 0;\n }\n .item-inner {\n justify-content: center;\n align-items: center;\n padding: 0;\n min-height: initial;\n &::before {\n display: none;\n }\n }\n }\n }\n }\n}\n\n.item-color-auto {\n .color-auto {\n width: 22px;\n height: 22px;\n background-color: @autoColor;\n }\n &.active {\n .color-auto {\n box-shadow: 0 0 0 1px @white, 0 0 0 4px @brandColor;\n border-radius: 1px;\n }\n }\n}\n\n.page {\n .color-palettes {\n .list {\n ul {\n .palette {\n padding: 8px 0px;\n a {\n flex-grow: 1;\n position: relative;\n min-width: 10px;\n min-height: 26px;\n margin: 1px 1px 0 0;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset;\n border-radius: 0;\n &.active:after {\n content: ' ';\n position: absolute;\n width: 100%;\n height: 100%;\n box-shadow: 0 0 0 1px @white, 0 0 0 4px @brandColor;\n z-index: 1;\n border-radius: 1px;\n }\n &.transparent {\n background-repeat: no-repeat;\n background-size: 100% 100%;\n .encoded-svg-background(\"\");\n }\n } \n }\n }\n }\n .row {\n padding: 0;\n }\n .list .item-inner {\n display: block;\n color: var(--text-normal);\n }\n .standart-colors, .dynamic-colors {\n .palette {\n display: flex;\n }\n }\n\n .dynamic-colors {\n .empty-color {\n background-color: @white;\n }\n }\n }\n}\n\n#color-picker {\n display: flex;\n justify-content: space-around;\n align-items: center;\n max-width: 300px;\n margin: 0 auto;\n margin-top: 4px;\n .color-picker-container {\n width: calc(100% - 94px);\n position: relative;\n max-width: 100%;\n height: auto;\n font-size: 0;\n .color-picker-module-wheel {\n margin: 0;\n }\n }\n .right-block {\n margin-left: 20px;\n .color-hsb-preview {\n width: 72px;\n height: 72px;\n overflow: hidden;\n border: 1px solid @gray;\n border-radius: 100px;\n .new-color-hsb-preview, .current-color-hsb-preview {\n height: 36px;\n }\n .new-color-hsb-preview {\n border-radius: 100px 100px 0 0;\n }\n .current-color-hsb-preview {\n border-radius: 0 0 100px 100px;\n }\n }\n .button-round {\n height: 72px;\n width: 72px;\n padding: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 100px;\n background-color: @fill-white;\n box-shadow: 0 4px 4px rgba(0,0,0,.25);\n // border-color: transparent;\n border: 0;\n margin-top: 20px;\n }\n }\n}\n\n// Table styles\n\n.table-styles {\n width: 100%;\n .row {\n &, li {\n margin-bottom: 12px;\n }\n li, div {\n box-shadow: 0 0 0 1px @gray;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n }\n\n li,\n .row div {\n margin: 0;\n padding: 1px;\n\n img {\n width: 70px;\n height: 50px;\n }\n }\n}\n\n#edit-table-style {\n .list ul ul {\n padding-left: 0;\n }\n}\n\n// input[type=\"number\"]\ninput[type=\"number\"]::-webkit-outer-spin-button,\ninput[type=\"number\"]::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n// Regional Settings\n.icon.lang-flag {\n background-size: 48px auto;\n background-image: ~'url(@{common-image-path}/controls/flags@2x.png)';\n}\n\n.icon.lang-flag {\n width: 16px;\n height: 12px;\n}\n\n.lang-flag.ca,\n.lang-flag.ca-ES {\n background-position: 0 0;\n}\n.lang-flag.cs,\n.lang-flag.cs-CZ {\n background-position: -16px 0;\n}\n.lang-flag.da,\n.lang-flag.da-DK {\n background-position: -32px 0;\n}\n.lang-flag.de,\n.lang-flag.de-DE {\n background-position: 0 -12px;\n}\n.lang-flag.el,\n.lang-flag.el-GR {\n background-position: -16px -12px;\n}\n.lang-flag.en,\n.lang-flag.en-US {\n background-position: -32px -12px;\n}\n.lang-flag.fr,\n.lang-flag.fr-FR {\n background-position: 0 -24px;\n}\n.lang-flag.hu,\n.lang-flag.hu-HU {\n background-position: -16px -24px;\n}\n.lang-flag.it,\n.lang-flag.it-IT {\n background-position: -32px -24px;\n}\n.lang-flag.ko,\n.lang-flag.ko-KR {\n background-position: 0 -36px;\n}\n.lang-flag.nl,\n.lang-flag.nl-NL {\n background-position: -16px -36px;\n}\n.lang-flag.nb,\n.lang-flag.nb-NO,\n.lang-flag.nn,\n.lang-flag.nn-NO {\n background-position: -32px -36px;\n}\n.lang-flag.pl,\n.lang-flag.pl-PL {\n background-position: 0 -48px;\n}\n.lang-flag.pt,\n.lang-flag.pt-BR {\n background-position: -16px -48px;\n}\n.lang-flag.ro,\n.lang-flag.ro-RO {\n background-position: -32px -48px;\n}\n.lang-flag.ru,\n.lang-flag.ru-RU {\n background-position: 0 -60px;\n}\n.lang-flag.sv,\n.lang-flag.sv-SE {\n background-position: -32px -60px;\n}\n.lang-flag.tr,\n.lang-flag.tr-TR {\n background-position: 0 -72px;\n}\n.lang-flag.uk,\n.lang-flag.uk-UA {\n background-position: -16px -72px;\n}\n.lang-flag.lv,\n.lang-flag.lv-LV {\n background-position: -32px -72px;\n}\n.lang-flag.lt,\n.lang-flag.lt-LT {\n background-position: 0 -84px;\n}\n.lang-flag.vi,\n.lang-flag.vi-VN {\n background-position: -16px -84px;\n}\n.lang-flag.de-CH,\n.lang-flag.fr-CH,\n.lang-flag.it-CH {\n background-position: -32px -84px;\n}\n.lang-flag.pt-PT {\n background-position: -16px -96px;\n}\n.lang-flag.de-AT {\n background-position: -32px -96px;\n}\n.lang-flag.es,\n.lang-flag.es-ES {\n background-position: 0 -108px;\n}\n.lang-flag.en-GB {\n background-position: -32px -108px;\n}\n.lang-flag.en-AU {\n background-position: 0 -120px;\n}\n.lang-flag.az-Latn-AZ {\n background-position: -16px -120px;\n}\n.lang-flag.id,\n.lang-flag.id-ID,\n.lang-flag.en-ID {\n background-position: -32px -120px;\n}\n.lang-flag.bg,\n.lang-flag.bg-BG {\n background-position: 0 -132px;\n}\n.lang-flag.ca-ES-valencia {\n background-position: -16px -132px;\n}\n.lang-flag.en-CA {\n background-position: -32px -132px;\n}\n.lang-flag.en-ZA {\n background-position: 0 -144px;\n}\n.lang-flag.eu,\n.lang-flag.eu-ES {\n background-position: -16px -144px;\n}\n.lang-flag.gl,\n.lang-flag.gl-ES {\n background-position: -32px -144px;\n}\n.lang-flag.hr,\n.lang-flag.hr-HR {\n background-position: 0 -156px;\n}\n.lang-flag.lb,\n.lang-flag.lb-LU {\n background-position: -16px -156px;\n}\n.lang-flag.mn,\n.lang-flag.mn-MN {\n background-position: -32px -156px;\n}\n.lang-flag.sl,\n.lang-flag.sl-SI {\n background-position: 0 -168px;\n}\n.lang-flag.sr,\n.lang-flag.sr-Cyrl-RS,\n.lang-flag.sr-Latn-RS {\n background-position: -16px -168px;\n}\n.lang-flag.sk,\n.lang-flag.sk-SK {\n background-position: -32px -168px;\n}\n.lang-flag.kk,\n.lang-flag.kk-KZ {\n background-position: 0 -180px;\n}\n.lang-flag.fi,\n.lang-flag.fi-FI,\n.lang-flag.sv-FI {\n background-position: -16px -180px;\n}\n.lang-flag.zh,\n.lang-flag.zh-CN {\n background-position: -32px -180px;\n}\n.lang-flag.ja,\n.lang-flag.ja-JP {\n background-position: 0 -192px;\n}\n.lang-flag.es-MX {\n background-position: -16px -192px;\n}\n\n.checkbox-in-modal {\n margin-top: 10px;\n display: flex;\n align-items: center;\n .right-text {\n margin-left: 10px;\n }\n}\n\n.username-tip {\n height: 20px;\n color: @white;\n padding: 0 10px;\n position: absolute;\n z-index: 900;\n display: none;\n pointer-events: none;\n transition: opacity 0.1ms ease-out;\n opacity: 0;\n &.active {\n display: block;\n opacity: 1;\n }\n}\n\n.dlg-adv-options {\n z-index: 13700;\n .content-block {\n padding: 0;\n }\n .picker-3d { \n .picker-item {\n padding: 0;\n text-align: left;\n font-size: 16px;\n }\n }\n .picker-center-highlight {\n width: 100%;\n left: 0;\n right: 0;\n }\n}\n\n.dlg-macros-request {\n .dialog-text {\n word-break: break-word;\n }\n}\n// Skeleton of document\n\n@keyframes flickerAnimation {\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n@-o-keyframes flickerAnimation{\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n@-moz-keyframes flickerAnimation{\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n@-webkit-keyframes flickerAnimation{\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n\n.doc-placeholder-container {\n position: absolute;\n width: 100%;\n height: 100%;\n z-index: 6000;\n top: 0;\n left: 0;\n overflow: hidden;\n}\n\n// Statusbar\n\n.statusbar .statusbar--box-tabs > ul > .locked a {\n box-shadow: inset 0 2px red;\n}\n\n// Fonts List \n\n.font-item {\n .item-inner {\n overflow: hidden;\n &:after {\n left: 16px;\n }\n }\n}\n\n// Functions List \n\n.cell-editor {\n overflow: initial;\n}\n\n.functions-list {\n max-height: 200px;\n width: 360px;\n overflow-y: auto;\n overflow-x: hidden;\n background-color: @background-primary;\n &__mobile {\n position: absolute;\n right: 0;\n left: 0;\n width: 100%;\n box-shadow: 0px 10px 10px -10px rgba(0, 0, 0, 0.3);\n .list {\n margin: 0;\n ul:before {\n display: none;\n }\n .item-content {\n padding-left: 0;\n }\n .item-inner {\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left) - var(--menu-list-offset));\n }\n .item-title {\n font-size: 15px;\n }\n }\n }\n}\n\n// Function List Popover\n\n#idx-functions-list {\n width: 350px;\n .popover-inner {\n .navbars {\n .right .link {\n font-weight: 600;\n }\n .navbar-bg {\n background: @background-secondary;\n &::after {\n background: @background-menu-divider;\n }\n }\n }\n .page-function-info{\n .navbar {\n .navbar-bg::after {\n background: @background-menu-divider;\n }\n .navbar-inner{\n background: @background-secondary;\n .title {\n color: @text-normal;\n }\n .right .link {\n color: @brandColor;\n font-weight: 600;\n }\n .icon-back::after {\n color: @brandColor;\n }\n }\n }\n }\n }\n}\n\n// Highlight Colors\n\n.highlight-palette {\n width: 100%;\n}\n\n.highlight-color {\n min-width: 10px;\n min-height: 34px;\n margin: 1px;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset;\n position: relative;\n flex-grow: 1;\n &_active:after {\n content: ' ';\n position: absolute;\n width: 100%;\n height: 100%;\n box-shadow: 0 0 0 1px #ffffff, 0 0 0 4px #446995;\n z-index: 1;\n border-radius: 1px;\n }\n}\n#idx-celleditor.expanded {\n .functions-list {\n &__mobile {\n top: 70px;\n }\n }\n}\n\n.popover__functions {\n box-shadow: 0px 10px 100px rgba(0, 0, 0, 0.3);\n .view {\n transition: .2s height;\n }\n .popover-angle.on-bottom {\n display: none;\n }\n}\n\n.target-function-list {\n position: absolute; \n left: 0;\n top: 0;\n bottom: 0;\n width: 0; \n height: 100%;\n}\n\n.dropdown-list {\n &__placeholder {\n opacity: 0.6;\n .item-inner {\n border-bottom: 1px solid var(--f7-list-item-border-color);\n }\n }\n}\n\n// Swiper\n.swiper-wrapper .swiper-slide .list ul {\n background-color: transparent;\n}\n\n.swiper-pagination-bullet {\n background: @background-menu-divider;\n opacity: 1;\n &-active {\n background: @text-secondary;\n }\n}\n\n.swiper-pagination-bullets {\n position: fixed;\n width: 100%;\n bottom: 9px;\n .swiper-pagination-bullet {\n margin: 0 5.5px;\n }\n}\n\n.preview-cell-style {\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n width: 104px;\n height: 44px;\n background-color: @fill-white;\n border-radius: 4px;\n border: 0.5px solid @background-menu-divider;\n}\n\n// Sharing Settings\n.sharing-placeholder {\n height: 100%;\n}\n\n// Comment List\n.sheet-modal .page-current-comment {\n padding-bottom: 60px;\n}\n\n// Picker\n.picker-columns {\n justify-content: space-around;\n}\n\n.row-picker {\n .col-50 {\n color: @text-secondary;\n text-align: center;\n }\n}\n\n// Block \n.block {\n margin-top: 8px;\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 16px;\n}\n\n// Inputs List \n.block-title + .list, .block-title + .block, .block-title + .card, .block-title + .timeline, .block-title + .block-header {\n margin: 0;\n}\n\n.inputs-list {\n margin-bottom: 0;\n\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n position: relative;\n background: var(--f7-list-bg-color);\n }\n}\n\n.list input[type='password'], \n.list input[type='text'] {\n background: transparent;\n}\n\n// Dialog with password\n.dialog {\n .modal-password {\n position: relative;\n\n &__icon {\n position: absolute;\n right: 4px;\n top: calc(50% - 12.5px);\n }\n\n .item-input-wrap {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n }\n}\n\n// Version History \n.version-history { \n &__user {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n min-width: 40px;\n min-height: 40px;\n text-align: center;\n border-radius: 50px;\n line-height: 40px;\n color: var(--fill-white);\n font-size: 18px;\n }\n}\n\n// Review change\n.accept-reject .link {\n margin-right: 20px;\n}\n\n// Beta badge\n.beta-badge {\n font-size: 12px;\n font-weight: 400;\n line-height: 16px;\n letter-spacing: 0.5px;\n color: @fill-white;\n padding: 2px 4px;\n border-radius: 4px;\n}\n\n\n\n\n\n\n\n","\n.device-ios .app-layout {\n @blockTitleColor: #6d6d72;\n @item-border-color: #c8c7cc;\n @darkGreen: #40865c;\n @text-normal: var(--text-normal);\n @background-warning: #FF9F0A;\n\n --f7-navbar-link-color: @brandColor;\n --f7-subnavbar-link-color: @brandColor;\n --f7-navbar-text-color: @text-normal;\n --f7-navbar-title-line-height: 44px;\n --f7-navbar-link-line-height: 44px;\n --f7-navbar-title-font-size: 17px;\n\n --f7-list-bg-color: @background-primary;\n --f7-navbar-bg-color: @toolbar-background;\n\n --f7-tabbar-link-inactive-color: @toolbar-segment;\n\n --f7-radio-active-color: @brandColor;\n --f7-toggle-active-color: @brandColor;\n --f7-range-bar-active-bg-color: @brandColor;\n\n --f7-list-button-text-color: @brandColor;\n\n --f7-list-item-border-color: @background-menu-divider;\n\n --f7-page-bg-color: @background-tertiary;\n --f7-list-item-title-text-color: @text-normal;\n --f7-list-item-text-text-color: @text-normal;\n --f7-list-item-subtitle-text-color: @text-secondary;\n --f7-label-text-color: @text-normal;\n --f7-list-item-after-text-color: @text-normal;\n --f7-input-text-color: @text-normal;\n --f7-block-title-text-color: @text-secondary;\n --f7-input-placeholder-color: @text-secondary;\n\n --f7-list-chevron-icon-color: @text-tertiary;\n --f7-searchbar-search-icon-color: @text-tertiary;\n --f7-searchbar-input-clear-button-color: @text-tertiary;\n\n --f7-toggle-inactive-border-color: @background-menu-divider;\n --f7-toggle-inactive-bg-color: @background-menu-divider;\n\n --f7-actions-button-border-color: @background-menu-divider;\n --f7-popover-bg-color: @background-primary;\n --f7-dialog-bg-color-rgb: @background-secondary;\n --f7-dialog-title-text-color: @text-normal;\n --f7-dialog-text-color: @text-normal;\n --f7-dialog-button-text-color: @brandColor;\n --f7-dialog-border-divider-color: @background-menu-divider;\n\n --f7-subnavbar-border-color: @background-menu-divider;\n --f7-list-border-color: @background-menu-divider;\n\n --f7-picker-item-text-color: rgba(var(--text-normal), 0.45);\n --f7-picker-item-selected-text-color: @text-normal;\n\n --f7-block-text-color: @text-secondary;\n\n --f7-theme-color-shade: @background-primary;\n --f7-fab-pressed-bg-color: @background-primary;\n --f7-input-clear-button-color: @text-tertiary;\n\n // Main Toolbar\n #editor-navbar.navbar .right a + a,\n #editor-navbar.navbar .left a + a {\n margin-left: 0;\n }\n\n .navbar, .navbar-bg, .subnavbar {\n a.btn-doc-back {\n width: 22px;\n }\n background-color: var(--f7-navbar-bg-color);\n .title {\n font-weight: 600;\n color: @text-normal;\n //line-height: 17px;\n //max-height: 34px;\n //overflow: hidden;\n }\n .navbar-inner, .subnavbar-inner {\n z-index: auto;\n }\n .sheet-close {\n width: 44px;\n height: 44px;\n display: flex;\n justify-content: center;\n }\n }\n\n .subnavbar {\n .icon-back {\n color: @brandColor;\n }\n }\n\n .popover__titled {\n .list {\n &:first-child, &:last-child {\n ul {\n border-radius: 0;\n }\n\n li:first-child, li:last-child {\n > label {\n border-radius: 0;\n }\n }\n }\n }\n\n .popover-inner {\n //border-radius: var(--f7-popover-border-radius);\n\n > .view {\n border-radius: var(--f7-popover-border-radius);\n }\n }\n\n .navbar-bg {\n //-webkit-backdrop-filter: none;\n backdrop-filter: none;\n &::after {\n background: @background-menu-divider;\n }\n }\n\n // .list:first-child {\n // li:first-child {\n // a {\n // border-radius: 0;\n // }\n // }\n // }\n\n .list:last-child {\n li:last-child {\n &:after {\n content: '';\n position: absolute;\n background-color: var(--f7-navbar-border-color, var(--f7-bars-border-color));\n display: block;\n //z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n }\n }\n }\n }\n\n .popover {\n li:last-child {\n .segmented a {\n &:first-child {\n border-radius: var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius);\n }\n\n &:last-child {\n border-radius: 0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0;\n }\n }\n }\n\n .page-content {\n > .list {\n &:last-child {\n // margin-bottom: 30px;\n }\n }\n }\n }\n\n .popover-arrow:after {\n background: rgba(0, 0, 0, 0.9);\n }\n\n .list {\n .item-content {\n .color-preview {\n width: 22px;\n height: 8px;\n display: inline-block;\n margin-top: 21px;\n box-sizing: border-box;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset;\n background: @fill-white;\n }\n .item-after {\n .color-preview {\n width: 75px;\n height: 30px;\n margin-top: -3px;\n }\n }\n }\n .item-inner {\n padding-top: 7px;\n .item-after {\n .after-start {\n margin: 0 5px;\n }\n .segmented {\n min-width: 90px;\n margin-left: 10px;\n }\n }\n }\n .buttons {\n .item-inner {\n padding-top: 0;\n padding-bottom: 0;\n align-items: stretch;\n > .row {\n width: 100%;\n align-items: stretch;\n .button {\n flex: 1;\n border: none;\n height: inherit;\n border-radius: 0;\n font-size: 17px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n }\n }\n }\n .list-input-right input {\n text-align: right;\n }\n }\n\n .links-list a:after, .list .item-inner:after, .simple-list li:after {\n background-color: var(--f7-list-item-border-color);\n bottom: 0;\n content: \"\";\n display: block;\n height: 1px;\n left: 0;\n position: absolute;\n right: auto;\n top: auto;\n transform: scaleY(calc(1/var(--f7-device-pixel-ratio)));\n transform-origin: 50% 100%;\n width: 100%;\n z-index: 15;\n }\n\n .tab-buttons {\n width: 100%;\n display: flex;\n flex-wrap: nowrap;\n align-self: center;\n .tab-link {\n display: block;\n width: 100%;\n line-height: 26px;\n position: relative;\n overflow: hidden;\n -webkit-box-flex: 1;\n border: 1px solid @toolbar-segment;\n text-decoration: none;\n text-align: center;\n margin: 0;\n padding: 0 1px;\n height: 29px;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n font-family: inherit;\n cursor: pointer;\n outline: 0;\n font-weight: 600;\n color: @brandColor;\n &:first-child {\n border-radius: 5px 0 0 5px;\n border-left-width: 1px;\n border-left-style: solid;\n }\n &:last-child {\n border-radius: 0 5px 5px 0;\n }\n &.tab-link-active {\n // background: @brandColor;\n // color: @fill-white;\n background: @toolbar-segment;\n color: @brand-text-on-brand;\n i.icon {\n background-color: @brand-text-on-brand;\n }\n }\n }\n }\n\n .button {\n border: 1px solid @brandColor;\n color: @brandColor;\n text-decoration: none;\n text-align: center;\n display: block;\n // border-radius: 5px;\n line-height: 27px;\n box-sizing: border-box;\n background: 0 0;\n padding: 0 10px;\n margin: 0;\n height: 29px;\n white-space: nowrap;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 14px;\n font-family: inherit;\n cursor: pointer;\n outline: 0;\n }\n\n .button-fill {\n color: @brandColor;\n background-color: @background-primary;\n }\n\n .button-red {\n color: @text-error;\n background-color: @background-primary;\n }\n\n .buttons-list {\n li {\n border: 0;\n border-radius: 0;\n height: 43px;\n min-height: 43px;\n font-size: 17px;\n text-transform: initial;\n padding: 0;\n box-shadow: none;\n }\n }\n\n .button-red .list-button {\n color: @text-error;\n }\n\n .list-button {\n position: initial;\n }\n\n .block-title {\n position: relative;\n overflow: hidden;\n margin: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n text-transform: uppercase;\n line-height: 1;\n color: @blockTitleColor;\n margin: 35px 15px 10px;\n }\n\n .shapes {\n .page-content {\n background: @fill-white;\n }\n }\n\n .dialog {\n background-color: var(--f7-dialog-bg-color-rgb);\n }\n\n #color-picker {\n .right-block {\n .button-round {\n .icon {\n height: 30px;\n width: 30px;\n }\n }\n }\n }\n\n .content-block {\n color: @blockTitleColor;\n }\n\n .dataview, #add-table, #add-shape, #add-slide, #add-chart {\n &.page-content, .page-content {\n background-color: @background-tertiary;\n }\n }\n\n // input[type=\"number\"]\n\n input[type=\"number\"] {\n &::placeholder,\n &::-webkit-input-placeholder,\n &::-moz-placeholder,\n &:-moz-placeholder,\n &:-ms-input-placeholder\n {\n color: @darkGreen;\n }\n }\n\n // Regional Settings\n\n .regional-settings {\n .item-title-row {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n .item-title {\n margin-left: 20px;\n white-space: normal;\n }\n }\n }\n\n // Find and Replace \n\n .navbar {\n .searchbar {\n background: var(--f7-navbar-bg-color);\n }\n .searchbar-input-wrap {\n position: relative;\n margin-right: 10px;\n height: 28px;\n }\n .buttons-row-replace a {\n color: @brandColor;\n }\n }\n\n .searchbar {\n input {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n display: block;\n border: none;\n appearance: none;\n border-radius: 5px;\n font-family: inherit;\n color: @text-normal;\n font-size: 14px;\n font-weight: 400;\n padding: 0 8px;\n background-color: @background-button;\n padding: 0 36px 0 28px;\n\n &::placeholder {\n color: @text-tertiary;\n }\n }\n\n .number-search-results {\n position: absolute;\n font-size: 13px;\n font-weight: 400;\n line-height: 18px;\n right: 26px;\n color: @text-tertiary;\n top: 4.5px;\n z-index: 100;\n }\n }\n\n .searchbar-inner {\n &__left {\n margin-right: 10px;\n justify-content: center;\n }\n &__right {\n .buttons-row a.next {\n margin-left: 15px;\n }\n }\n }\n\n .searchbar-expandable.searchbar-enabled {\n &.replace {\n .searchbar-inner {\n &__right {\n width: 28%;\n }\n }\n }\n } \n\n @media(max-width: 550px) {\n .navbar {\n .searchbar-input-wrap {\n margin-right: 0; \n }\n }\n .searchbar-expandable.searchbar-enabled {\n top: 0;\n .searchbar-inner {\n &__center {\n flex-direction: column;\n }\n &__right {\n flex-direction: column-reverse;\n margin-left: 10px;\n }\n }\n &.replace {\n height: 88px;\n .searchbar-inner {\n height: 100%;\n &__center {\n .searchbar-input-wrap {\n margin: 8px 0;\n }\n }\n &__right {\n width: auto;\n height: 100%;\n justify-content: space-between;\n .buttons-row-replace {\n height: 50%;\n }\n }\n }\n }\n } \n }\n\n .actions-button {\n background: @background-secondary;\n --f7-actions-button-border-color: @background-menu-divider;\n }\n \n .actions-button-text {\n // height: 57px;\n // line-height: 57px;\n font-size: 20px;\n color: @text-normal;\n white-space: normal;\n text-overflow: ellipsis;\n }\n\n input.modal-text-input {\n box-sizing: border-box;\n height: 26px;\n background: @background-primary;\n margin: 0;\n margin-top: 15px;\n padding: 0 5px;\n border: 1px solid @text-tertiary;\n border-radius: 0;\n width: 100%;\n font-size: 14px;\n font-family: inherit;\n display: block;\n box-shadow: 0 0 0 transparent;\n -webkit-appearance: none;\n -moz-appearance: none;\n -ms-appearance: none;\n appearance: none;\n }\n\n // Fonts List \n\n .font-item {\n .item-content {\n padding-left: 0;\n }\n }\n\n // Toggle Icon \n\n // .toggle-icon {\n // background: transparent;\n // }\n\n // Edit Comment Popup\n\n .edit-comment-popup {\n .navbar .title {\n line-height: normal;\n }\n }\n\n // Version History\n .version-history {\n &__title {\n font-style: normal;\n font-weight: 400;\n font-size: 13px;\n line-height: 18px;\n color: @text-secondary;\n margin-top: 16px;\n margin-bottom: 4px;\n }\n\n &__btn {\n font-style: normal;\n font-weight: 600;\n font-size: 15px;\n line-height: 20px;\n letter-spacing: -0.24px;\n text-transform: uppercase;\n color: @brandColor;\n background: transparent;\n outline: none;\n border: 0;\n padding: 0;\n margin-top: 22px;\n width: auto;\n }\n\n &__list {\n ul {\n background: @background-primary;\n }\n \n .item-title {\n font-weight: 600;\n font-size: 13px;\n line-height: 18px;\n color: @text-normal;\n letter-spacing: -0.08px;\n }\n\n .item-media, .item-inner {\n padding-top: 10px;\n padding-bottom: 10px;\n }\n\n .item-link .item-title-row:before {\n display: none;\n }\n\n .item-subtitle {\n font-style: normal;\n font-weight: 400;\n font-size: 11px;\n line-height: 13px;\n color: @text-secondary;\n margin-top: 3px;\n letter-spacing: 0.06px;\n }\n }\n }\n\n .version-history__item_active {\n background-color: var(--canvas-ruler-margins-background);\n }\n\n .btn-close-history {\n font-style: normal;\n font-weight: 400;\n font-size: 17px;\n line-height: 22px;\n letter-spacing: -0.41px;\n color: @brandColor;\n margin-left: 10px;\n }\n\n .beta-badge {\n background-color: @background-warning;\n margin-left: 10px;\n }\n}\n\n\n","\n.device-android .app-layout {\n @tabLinkColor: rgba(255,255,255,.7);\n @red: #f44336;\n @white: #fff;\n @darkGreen: #40865c;\n @darkGrey: #757575;\n @text-normal: var(--text-normal);\n @brand-text-on-brand: var(--brand-text-on-brand);\n @touchColor: rgba(255,255,255,0.1);\n\n --f7-navbar-shadow-image: none;\n --f7-theme-color: @brandColor;\n\n --f7-navbar-bg-color: @toolbar-background;\n --f7-navbar-link-color: @fill-white;\n --f7-navbar-text-color: @fill-white;\n --f7-navbar-height: 56px;\n\n --f7-list-bg-color: @background-primary;\n --f7-subnavbar-bg-color: @toolbar-background;\n --f7-subnavbar-link-color: @toolbar-icons;\n --f7-subnavbar-text-color: @fill-white;\n --f7-subnavbar-height: 56px;\n\n --f7-radio-active-color: @brandColor;\n --f7-range-bar-active-bg-color: @brandColor;\n --f7-range-knob-color: @brandColor;\n --f7-range-knob-size: 16px;\n\n --f7-list-item-after-text-color: @text-normal;\n\n --f7-link-highlight-color: transparent;\n --f7-link-touch-ripple-color: @touchColor;\n\n --f7-actions-bg-color: @background-secondary;\n --f7-actions-button-border-color: @background-menu-divider;\n --f7-popover-bg-color: @background-secondary;\n\n --f7-dialog-bg-color: @background-secondary;\n --f7-dialog-text-color: @text-secondary;\n --f7-dialog-title-text-color: @text-normal;\n --f7-dialog-button-text-color: @brandColor;\n\n --f7-picker-item-text-color: rgba(var(--text-normal), 0.45);\n --f7-picker-item-selected-text-color: @text-normal;\n\n --f7-input-bg-color: @background-primary;\n --f7-input-placeholder-color: @text-secondary;\n --f7-input-text-color: @text-normal;\n \n --f7-block-text-color: @text-secondary;\n --f7-dialog-border-radius: 0;\n --f7-sheet-border-radius: 0;\n --f7-popover-border-radius: 4px;\n --f7-actions-border-radius: 0;\n --f7-box-shadow: 0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);\n --f7-popover-box-shadow: var(--f7-box-shadow);\n\n --f7-toggle-active-bg-color: @brandColor;\n --f7-toggle-active-border-color: @brandColor;\n\n --f7-navbar-title-margin-left: 20px;\n --f7-navbar-title-margin-right: 20px;\n\n .button {\n --f7-touch-ripple-color: transparent;\n }\n\n .segmented {\n .button {\n --f7-touch-ripple-color: var(--f7-list-link-pressed-bg-color);\n }\n }\n\n --f7-input-focused-border-color: @brandColor;\n --f7-label-focused-text-color: @brandColor;\n\n .navbar {\n --f7-touch-ripple-color: @touchColor;\n\n .sheet-close {\n width: 56px;\n height: 56px;\n display: flex;\n justify-content: center;\n }\n &-inner {\n background: var(--f7-navbar-bg-color);\n background-image: var(--f7-navbar-bg-image, var(--f7-bars-bg-image));\n background-color: var(--f7-navbar-bg-color, var(--f7-bars-bg-color));\n }\n }\n\n .page.page-with-subnavbar.page-with-logo {\n .page-content {\n --f7-page-navbar-offset: var(--f7-navbar-height);\n }\n }\n\n .page {\n --f7-text-color: @text-normal;\n --f7-list-item-title-text-color: @text-normal;\n --f7-list-item-text-text-color: @text-normal;\n --f7-list-item-subtitle-text-color: @text-secondary;\n --f7-block-title-text-color: @text-secondary;\n --f7-label-text-color: @text-normal;\n --f7-page-bg-color: @background-tertiary;\n --f7-list-item-border-color: @background-menu-divider;\n --f7-list-chevron-icon-color: @text-tertiary;\n --f7-actions-button-text-color: @text-normal;\n --f7-subnavbar-border-color: @background-menu-divider;\n --f7-list-border-color: @background-menu-divider;\n }\n\n .add-popup {\n .view {\n .add-image, .inputs-list {\n ul:after {\n display: none;\n }\n }\n }\n }\n\n .coauth__sheet {\n max-height: 65%;\n }\n\n // Buttons\n .segmented {\n .decrement, .increment {\n display: flex;\n border: none;\n min-width: 40px;\n margin-left: 0;\n border-radius: 0;\n height: 32px;\n i.icon-expand-down {\n background: @brandColor;\n }\n }\n label {\n color: @text-normal;\n margin: 0 5px;\n line-height: 32px;\n }\n }\n .button {\n --f7-button-text-color: @brandColor;\n color: @brandColor;\n text-align: center;\n display: block;\n border-radius: 2px;\n line-height: 36px;\n box-sizing: border-box;\n appearance: none;\n background: 0 0;\n margin: 0;\n height: 36px;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n text-transform: uppercase;\n font-family: inherit;\n cursor: pointer;\n min-width: 64px;\n padding: 0 8px;\n position: relative;\n overflow: hidden;\n outline: 0;\n -webkit-transition-duration: .3s;\n transition-duration: .3s;\n -webkit-transform: translate3d(0,0,0);\n transform: translate3d(0,0,0);\n }\n\n .button-fill {\n color: @brand-text-on-brand;\n background-color: transparent;\n }\n\n .button-raised {\n box-shadow: 0 1px 3px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.24);\n }\n\n .button-red {\n color: @brand-text-on-brand;\n background-color: @text-error;\n }\n\n .buttons-list {\n ul {\n background-color: @background-tertiary;\n &::before, &::after {\n display: none;\n }\n li {\n margin: 20px 16px;\n color: @fill-white;\n border-radius: 2px;\n text-transform: uppercase;\n height: 36px;\n min-height: 36px;\n font-size: 14px;\n }\n }\n }\n\n .table-presets {\n .button {\n min-width: 0;\n }\n }\n .button-fill .list-button {\n background-color: @brandColor;\n color: @brand-text-on-brand;\n height: 36px;\n text-align: center;\n line-height: 36px;\n text-transform: uppercase;\n font-size: 14px;\n font-weight: 500;\n border-radius: 2px;\n // margin: 20px 16px;\n margin: 0;\n }\n .button-raised .list-button {\n box-shadow: 0 1px 3px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.24);\n }\n .button-red .list-button {\n background-color: @text-error;\n }\n // Tabs\n .tab-buttons {\n position: relative;\n display: flex;\n height: 100%;\n width: 100%;\n justify-content: space-between;\n .tab-link {\n justify-content: center;\n height: 100%;\n box-sizing: border-box;\n padding-left: 0;\n padding-right: 0;\n font-size: 14px;\n font-weight: 500;\n text-transform: uppercase;\n align-items: center;\n color: @tabLinkColor;\n i.icon {\n opacity: 0.5;\n }\n &.tab-link-active {\n color: @fill-white;\n i.icon {\n opacity: 1;\n background-color: @fill-white;\n }\n }\n }\n .tab-link-highlight {\n --f7-tabbar-link-active-border-color: @toolbar-icons;\n position: absolute;\n left: 0;\n bottom: 0;\n height: 3px;\n }\n }\n\n // List\n .list {\n &.inputs-list {\n margin: 0;\n\n .item-input.item-content {\n padding-left: 0;\n }\n \n .item-input, .item-link {\n .item-inner {\n display: block;\n\n .item-title, .item-label {\n width: 100%;\n font-size: 12px;\n }\n \n .item-input-wrap {\n margin-left: 0;\n }\n }\n }\n }\n\n .buttons {\n box-sizing: border-box;\n min-height: 48px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n\n .item-content {\n width: 100%;\n\n .item-inner {\n padding-bottom: 0;\n padding-top: 0;\n\n .row {\n width: 100%;\n --f7-cols-per-row: 1;\n align-items: flex-start;\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n\n .button {\n flex: 1;\n font-size: 17px;\n margin-left: 5px;\n display: flex;\n align-items: center;\n justify-content: center;\n &:first-child {\n margin-left: 0;\n }\n }\n }\n }\n }\n }\n\n .item-content {\n .color-preview {\n width: 30px;\n height: 30px;\n border-radius: 4px;\n margin-top: -3px;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset;\n background-color: @fill-white;\n &.auto { \n background-color: @autoColor;\n }\n }\n }\n }\n\n .item-input:not(.item-input-outline) .item-content::before, .item-input:not(.item-input-outline).item-content::before {\n background: transparent;\n }\n\n .links-list a:after, .list .item-inner:after, .simple-list li:after {\n background-color: var(--f7-list-item-border-color);\n bottom: 0;\n content: \"\";\n display: block;\n height: 1px;\n left: 0;\n position: absolute;\n right: auto;\n top: auto;\n transform: scaleY(calc(1/var(--f7-device-pixel-ratio)));\n transform-origin: 50% 100%;\n width: 100%;\n z-index: 15;\n }\n\n .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content, .media-list:not(.inset):not(.inset-md):not(.menu-list) li > .item-link, .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content, .list:not(.inset):not(.inset-md):not(.menu-list) .media-item > .item-link {\n border-radius: 0;\n }\n\n // Color palette\n\n #color-picker {\n .right-block {\n .button-round {\n background-color: @brandColor;\n }\n }\n }\n\n // Regional Settings\n\n .regional-settings {\n .list {\n .item-inner {\n margin-left: 16px;\n }\n .item-title-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n flex-direction: row-reverse;\n .item-title {\n white-space: normal;\n }\n }\n }\n }\n\n // Find and Replace \n\n .searchbar-inner {\n &__center {\n flex-wrap: wrap;\n }\n // &__left {\n // padding-top: 4px;\n // }\n }\n\n .navbar {\n .searchbar-input-wrap {\n height: 32px;\n margin-right: 10px;\n margin: 4px 0;\n }\n\n .navbar-inner {\n overflow: initial;\n }\n\n .left {\n margin: 0;\n }\n\n .title {\n margin-left: var(--f7-navbar-title-margin-left);\n margin-right: var(--f7-navbar-title-margin-left);\n }\n }\n\n .searchbar {\n input {\n box-sizing: border-box;\n width: 100%;\n display: block;\n border: none;\n appearance: none;\n border-radius: 0;\n font-family: inherit;\n color: @fill-white;\n font-size: 16px;\n font-weight: 400;\n padding: 0;\n border-bottom: 1px solid @fill-white;\n height: 100%;\n padding: 0 40px 0 24px;\n background-color: transparent;\n background-repeat: no-repeat;\n background-position: 0 center;\n opacity: 1;\n background-size: 24px 24px;\n transition-duration: .3s;\n .encoded-svg-background('');\n &::placeholder {\n color: @fill-white;\n }\n }\n\n .input-clear-button {\n width: 18px;\n height: 18px;\n top: 7px;\n margin: 0;\n\n &:after {\n color: @fill-white;\n font-size: 19px;\n line-height: 19px;\n }\n }\n\n .number-search-results {\n position: absolute;\n right: 26px;\n top: 4px;\n font-size: 16px;\n font-weight: 400;\n line-height: 24px;\n }\n }\n\n .searchbar-icon {\n &:after {\n color: @fill-white;\n font-size: 19px;\n }\n }\n \n .navbar {\n .searchbar-expandable.searchbar-enabled {\n top: 0;\n // height: 100%;\n .searchbar-inner {\n height: 100%;\n padding: 0;\n\n &__center {\n flex-direction: column;\n }\n\n &__right {\n flex-direction: column-reverse;\n }\n }\n\n &.replace {\n height: 96px;\n }\n }\n a.link {\n padding: 0 16px;\n }\n a.link.searchbar-enable {\n i.icon-search {\n background-color: @toolbar-icons;\n }\n }\n a.icon-only {\n width: auto;\n height: 56px;\n }\n .buttons-row-replace a {\n color: @fill-white;\n padding: 0;\n }\n .searchbar .buttons-row {\n align-self: flex-start;\n }\n }\n\n @media(max-width: 550px) {\n .searchbar-expandable.searchbar-enabled {\n .searchbar-inner {\n &__left {\n margin-right: 33px;\n }\n }\n }\n }\n\n .actions-button-text {\n cursor: pointer;\n line-height: 48px;\n font-size: 16px;\n // color: rgba(0,0,0,.87);\n color: @text-normal;\n // color: var(--f7-actions-button-text-color, );\n }\n\n @media (min-width: 496px) {\n .actions-modal {\n width: 100%;\n left: auto;\n margin-left: 0;\n }\n }\n\n input.modal-text-input {\n box-sizing: border-box;\n height: 36px;\n background: #fff;\n margin: 0;\n margin-top: 15px;\n padding: 0;\n border: none;\n width: 100%;\n font-size: 16px;\n font-family: inherit;\n display: block;\n box-shadow: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n -ms-appearance: none;\n appearance: none;\n -webkit-transition-duration: .2s;\n transition-duration: .2s;\n }\n\n .input-field {\n .inputs-list {\n margin: 15px 0 0;\n ul {\n background: none;\n &::before, &::after {\n display: none;\n }\n }\n .item-input, .item-inner {\n padding: 0;\n margin: 0;\n }\n }\n }\n\n // Fonts List \n\n .font-item {\n .item-radio:not(.item-radio-icon-end) > .icon-radio {\n margin-right: 0;\n }\n }\n\n // Navbar link settings \n\n .navbar-link-settings, .navbar-dropdown-list {\n .navbar-inner {\n background: @background-primary;\n\n .icon-back {\n color: @text-normal;\n }\n }\n .title, a {\n color: @text-normal;\n }\n }\n\n // Popover styles\n .popover {\n box-shadow: var(--f7-box-shadow);\n\n &.popover__titled {\n .popover-arrow:after {\n background: @toolbar-background;\n }\n }\n\n &.document-menu, &.popover__functions {\n .popover-arrow:after {\n background: @background-secondary;\n }\n }\n }\n // Version History\n .page-version-history {\n --f7-page-bg-color: @background-primary;\n }\n\n .version-history {\n &__title {\n font-style: normal;\n font-weight: 500;\n font-size: 14px;\n line-height: 20px;\n color: @brandColor;\n margin-top: 16px;\n margin-bottom: 4px;\n }\n\n &__btn {\n box-shadow: 0px 0.25px 1px rgba(0, 0, 0, 0.039), 0px 0.85px 3px rgba(0, 0, 0, 0.19);\n border-radius: 6px;\n background: @background-primary;\n padding: 6px 20px;\n font-style: normal;\n font-weight: 500;\n font-size: 16px;\n line-height: 20px;\n letter-spacing: 0.25px;\n color: @brandColor;\n margin-top: 10px;\n border: 0;\n width: auto;\n }\n\n &__list {\n ul:before, ul:after {\n display: none;\n }\n\n .item-title {\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n line-height: 24px;\n color: @text-normal;\n letter-spacing: 0.15px;\n }\n\n .item-inner {\n padding-top: 10px;\n padding-bottom: 10px;\n }\n\n .item-inner::before {\n content: '';\n position: absolute;\n background-color: @background-menu-divider;\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n\n .item-media {\n padding-top: 12px;\n padding-bottom: 12px;\n min-width: 40px;\n max-width: 40px;\n }\n\n .item-link .item-title-row:before {\n display: none;\n }\n\n .item-subtitle {\n color: @text-secondary;\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 16px;\n letter-spacing: 0.5px;\n }\n }\n }\n\n .version-history__item_active {\n background-color: @background-tertiary;\n }\n\n .btn-close-history {\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n line-height: 24px;\n letter-spacing: 0.15px;\n color: @toolbar-icons;\n margin-left: 16px;\n }\n\n .beta-badge {\n background-color: @brand-secondary;\n margin-left: 8px;\n }\n}\n","// @common-image-path - defined in webpack config\n\n.device-ios {\n .theme-type-dark {\n i.icon {\n &.icon-logo {\n background: ~\"url(@{common-image-path}/header/logo-android.svg)\" no-repeat center;\n }\n }\n }\n i.icon {\n &.icon_mask {\n background-color: white;\n }\n &.icon-logo {\n width: 100px;\n height: 14px;\n background: ~\"url(@{common-image-path}/header/logo-ios.svg)\" no-repeat center;\n }\n &.icon-prev {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-next {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-edit {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-show-password {\n width: 25px;\n height: 25px;\n .encoded-svg-mask('', @text-secondary);\n }\n &.icon-hide-password {\n width: 25px;\n height: 25px;\n .encoded-svg-mask('', @text-secondary);\n }\n &.icon-return {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n }\n}\n","// @common-image-path - defined in webpack config\n\n.device-android {\n i.icon {\n &.icon_mask {\n background-color: @text-normal;\n }\n &.icon-logo {\n width: 100px;\n height: 14px;\n background: ~\"url(@{common-image-path}/header/logo-android.svg) no-repeat center\";\n }\n &.icon-prev {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-next {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-show-password {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-secondary);\n }\n &.icon-hide-password {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-secondary);\n }\n }\n .navbar {\n i.icon {\n &.icon-collaboration {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-back {\n color: @toolbar-icons;\n }\n &.icon-edit {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-close {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-done-disabled {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-tertiary);\n }\n &.icon-done {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-search {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-version-history {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n }\n }\n}\n","@import \"./ios/icons\";\n@import \"./material/icons\";\n\ni.icon {\n &.icon-paste {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-copy {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-cut {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-prev:after, &.icon-next:after {\n content: none;\n }\n &.icon-collaboration {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-cancellation {\n width: 24px;\n height: 24px;\n .encoded-svg-background('');\n }\n &.icon-remove-style {\n width: 24px;\n height: 24px;\n .encoded-svg-background('')\n }\n &.icon-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n // Formats \n \n &.icon-format-pdf {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n &.icon-format-pdfa {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n\n // Numbers\n\n &.icon-numbers-1 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-2 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-3 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-4 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-5 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-6 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-7 {\n .encoded-svg-background('');\n }\n\n &.icon-sharing-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n &.icon-info {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @brandColor);\n }\n\n &.icon-help {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-about {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n &.icon-search {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-version-history {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n // Text orientation\n\n &.icon-text-orientation-horizontal {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-anglecount {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-angleclock {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-vertical {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-rotateup {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-rotatedown {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n}\n","// Data view\n\n.dataview {\n .row {\n justify-content: space-around;\n }\n\n ul {\n padding: 0 10px;\n list-style: none;\n\n li {\n display: inline-block;\n }\n }\n\n .row.list:last-child li:not(.active):last-child::after {\n content: none;\n }\n\n .row.list:last-child li.active:last-child, .active {\n position: relative;\n z-index: 1;\n\n &::after {\n content: '';\n position: absolute;\n width: 22px;\n height: 22px;\n right: -5px;\n left: auto;\n bottom: -5px;\n transform: none;\n .encoded-svg-mask('');\n }\n }\n}","// @text-normal: #000;\n// @common-image-path - defined in webpack config\n\n.about {\n .page-content {\n text-align: center /*rtl:ignore*/;\n display: flex;\n flex-direction: column;\n }\n\n &_ios {\n padding-top: 120px;\n padding-bottom: 30px;\n }\n\n &_android {\n padding-top: 60px;\n padding-bottom: 16px;\n }\n\n &_tablet {\n padding-top: 12px;\n padding-bottom: 12px;\n } \n\n &__text {\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 16px;\n text-align: center;\n color: @text-normal;\n margin: 0;\n }\n\n a {\n color: @brandColor;\n }\n\n .logo-block {\n &__elem {\n display: flex;\n justify-content: center;\n img {\n max-width: 100%;\n height: auto;\n }\n }\n }\n\n &__logo {\n width: 100%;\n height: 80px;\n background: ~\"url(@{common-image-path}/about/logo-new.svg) no-repeat center\";\n }\n\n &__editor {\n flex-grow: 1;\n margin-top: 20px;\n }\n\n &__contacts {\n text-align: center;\n padding-left: 72px;\n padding-right: 72px;\n }\n\n &__licensor, &__customer {\n text-align: center;\n margin-top: 12px;\n }\n}\n\n.theme-type-dark {\n .about__logo {\n background: ~\"url(@{common-image-path}/about/logo-new-white.svg) no-repeat center\";\n }\n}","@statusBarBorderColor: #cbcbcb;\n\n.navbar {\n .searchbar {\n background-color: var(--f7-navbar-bg-color);\n\n .buttons-row {\n align-self: center;\n display: flex;\n }\n\n .searchbar-bg {\n .hairline(bottom, @statusBarBorderColor);\n }\n }\n\n .searchbar-inner {\n justify-content: space-between;\n &__center {\n display: flex;\n align-items: center;\n width: 81%;\n }\n &__right {\n display: flex;\n align-items: center;\n }\n }\n\n .searchbar-expandable {\n transition-duration: 0s;\n }\n\n .buttons-row-replace {\n display: flex;\n flex-direction: column;\n align-items: center;\n // width: max-content;\n width: 100%;\n justify-content: center;\n a {\n font-size: 15px;\n height: auto;\n display: block;\n line-height: normal;\n\n &:before{\n display: none;\n }\n }\n }\n\n @media(max-width: 550px)\n {\n .searchbar-expandable.searchbar-enabled {\n .searchbar-inner {\n &__left {\n min-width: 22px;\n max-width: 22px;\n }\n &__center {\n flex-direction: column;\n }\n &__right {\n flex-direction: column-reverse;\n }\n }\n &.replace {\n top: 0;\n .searchbar-inner {\n height: 100%;\n &__left {\n align-self: flex-start;\n }\n }\n }\n } \n }\n}\n","\n// RTL, LTR\n.ltr(@ruleset) {\n & when not (@rtl) {\n @ruleset();\n }\n}\n.rtl(@ruleset) {\n & when (@rtl) {\n @ruleset();\n }\n}\n.if-ios-theme(@ruleset) {\n & when (@includeIosTheme) {\n @ruleset();\n }\n}\n.if-md-theme(@ruleset) {\n & when (@includeMdTheme) {\n @ruleset();\n }\n}\n.if-dark-theme(@ruleset) {\n & when(@includeDarkTheme) {\n @ruleset();\n }\n}\n.ios-vars(@ruleset) {\n & when (@includeIosTheme) {\n .ios {\n @ruleset();\n }\n }\n}\n.md-vars(@ruleset) {\n & when (@includeMdTheme) {\n .md {\n @ruleset();\n }\n }\n}\n.md-color-vars(@ruleset) {\n & when (@includeMdTheme) {\n .md,\n .md .dark,\n .md [class*='color-'] {\n @ruleset();\n }\n }\n}\n.dark-vars(@ruleset) {\n & when (@includeDarkTheme) {\n .dark,\n &.dark {\n @ruleset();\n }\n }\n}\n.light-vars(@ruleset) {\n & when (@includeLightTheme) {\n & {\n @ruleset();\n }\n }\n}\n// Scrollable\n.scrollable() {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n}\n.not-scrollable() {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\n// Disabled\n.disabled() {\n opacity: 0.55;\n pointer-events: none;\n}\n// Modal Backdrops\n.modal-backdrop() {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.4);\n z-index: 13000;\n visibility: hidden;\n opacity: 0;\n transition-duration: 400ms;\n &.not-animated {\n transition-duration: 0ms;\n }\n &.backdrop-in {\n visibility: visible;\n opacity: 1;\n }\n}\n\n// Hairlines\n.hairline-pseudo(@color, @top, @right, @bottom, @left) {\n content: '';\n position: absolute;\n background-color: @color;\n display: block;\n z-index: 15;\n top: @top;\n right: @right;\n bottom: @bottom;\n left: @left;\n}\n.hairline(@position, @color) when (@position = top) {\n &:before {\n .hairline-pseudo(@color, 0, auto, auto, 0);\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline(@position, @color) when (@position = left) {\n &:before {\n .hairline-pseudo(@color, 0, auto, auto, 0);\n width: 1px;\n height: 100%;\n transform-origin: 0% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline(@position, @color) when (@position = bottom) {\n &:after {\n .hairline-pseudo(@color, auto, auto, 0, 0);\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline(@position, @color) when (@position = right) {\n &:after {\n .hairline-pseudo(@color, 0, 0, auto, auto);\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline-remove-top-bottom() {\n &:before,\n &:after {\n display: none !important;\n }\n}\n// For right and bottom\n.hairline-remove(@position) when not (@position = left) and not (@position = top) {\n &:after {\n display: none !important;\n }\n}\n// For left and top\n.hairline-remove(@position) when not (@position = right) and not (@position = bottom) {\n &:before {\n display: none !important;\n }\n}\n// For right and bottom\n.hairline-color(@position, @color) when not (@position = left) and not (@position = top) {\n &:after {\n background-color: @color;\n }\n}\n// For left and top\n.hairline-color(@position, @color) when not (@position = right) and not (@position = bottom) {\n &:before {\n background-color: @color;\n }\n}\n// MD Active Active Links Highlights\n.link-highlight() {\n &:before {\n content: '';\n width: 152%;\n height: 152%;\n left: -26%;\n top: -26%;\n position: absolute;\n background-image: radial-gradient(\n circle at center,\n var(--f7-link-highlight-color) 66%,\n rgba(255, 255, 255, 0) 66%\n );\n background-repeat: no-repeat;\n background-position: center;\n background-size: 100% 100%;\n opacity: 0;\n pointer-events: none;\n transition-duration: 300ms;\n transition-property: opacity;\n }\n &.icon-only:before,\n &.ripple-inset:before,\n &.searchbar-disable-button:before,\n &.input-clear-button:before,\n &.notification-close-button:before {\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n background-image: radial-gradient(\n circle at center,\n var(--f7-link-highlight-color) 71%,\n rgba(255, 255, 255, 0) 71%\n );\n }\n &.active-state:before {\n opacity: 1;\n transition-duration: 150ms;\n }\n}\n// MD Bars Shadow\n\n.core-icons-font() {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n\n.ios-translucent-bars(@color) {\n .ios-translucent-bars & {\n @supports (backdrop-filter: blur(20px)) {\n background-color: rgba(@color, var(--f7-bars-translucent-opacity));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n }\n}\n.ios-translucent-modals(@color) {\n .ios-translucent-modals & {\n @supports (backdrop-filter: blur(20px)) {\n background-color: rgba(@color, 0.8);\n backdrop-filter: saturate(180%) blur(20px);\n }\n }\n}\n\n.no-scrollbar() {\n scrollbar-width: none;\n scrollbar-color: transparent;\n &::-webkit-scrollbar {\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n }\n &::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n }\n &::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n }\n}\n","\n.device-ios {\n .document-menu {\n @contextMenuBg: rgba(0, 0, 0, 0.9);\n @modalHairlineColor: rgba(230, 230, 230, 0.9);\n @modalButtonColor: rgba(200, 200, 200, 0.9);\n\n background-color: @contextMenuBg;\n border-radius: 8px;\n\n .popover-angle {\n &:after {\n background: @contextMenuBg;\n }\n }\n\n .list-block {\n font-size: 14px;\n white-space: pre;\n\n &:first-child {\n ul {\n .hairline-remove(left);\n //border-radius: 7px 0 0 7px;\n }\n\n li:first-child a {\n //border-radius: 7px 0 0 7px;\n border-radius: 0;\n }\n }\n\n //&:last-child {\n // ul {\n // .hairline-remove(right);\n // border-radius: 0 7px 7px 0;\n // }\n // li:last-child a{\n // border-radius: 0 7px 7px 0;\n // }\n //}\n\n //&:first-child:last-child {\n // li:first-child:last-child a, ul:first-child:last-child {\n // border-radius: 7px;\n // }\n //}\n\n .item-link {\n display: inline-block;\n\n html:not(.watch-active-state) &:active, &.active-state {\n //.transition(0ms);\n background-color: #d9d9d9;\n .item-inner {\n .hairline-color(right, transparent);\n }\n }\n\n html.phone & {\n padding: 0 10px;\n }\n }\n\n .list-button {\n color: @white;\n line-height: 36px;\n\n .hairline(right, @modalHairlineColor);\n }\n\n // List items\n li {\n display: inline-flex;\n }\n\n // Last-childs\n li {\n &:last-child {\n .list-button {\n .hairline-remove(right);\n }\n }\n\n &:last-child, &:last-child li:last-child {\n .item-inner {\n .hairline-remove(right);\n }\n }\n\n li:last-child, &:last-child li {\n .item-inner {\n .hairline(right, @modalHairlineColor);\n }\n }\n }\n\n //.no-hairlines();\n //.no-hairlines-between()\n }\n }\n}","\n.md {\n .document-menu {\n //line-height: 1 !important;\n\n .popover-inner {\n overflow: hidden;\n }\n\n .list-block {\n white-space: pre;\n\n ul {\n height: 48px;\n }\n\n li {\n display: inline-block;\n }\n\n .list-button {\n color: @text-normal;\n }\n\n //.item-link {\n // html.phone & {\n //padding: 0 10px;\n //}\n //}\n }\n }\n}\n","@import './ios/contextmenu';\n@import './material/contextmenu';\n\n\n.document-menu {\n width: auto;\n}\n\nhtml.phone .document-menu .list-block .list-button {\n padding: 0 10px;\n}",".device-ios {\n .wrap-comment {\n height: calc(100% - 60px);\n }\n .add-comment-popup, .add-reply-popup, .add-comment-dialog, .add-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 34px);\n }\n }\n .edit-comment-popup, .edit-reply-popup, .edit-comment-dialog, .edit-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 52px);\n }\n }\n .comment-list {\n .reply-item {\n .item-inner:after {\n content: none !important;\n }\n &:before {\n content: '';\n position: absolute;\n left: auto;\n bottom: 0;\n right: auto;\n top: 0;\n height: 1px;\n width: 100%;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n -webkit-transform-origin: 50% 100%;\n transform-origin: 50% 100%;\n }\n }\n }\n}",".device-android {\n .wrap-comment {\n height: calc(100% - 72px);\n }\n .add-comment-popup, .add-reply-popup, .add-comment-dialog, .add-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 41px);\n }\n }\n .edit-comment-popup, .edit-reply-popup, .edit-comment-dialog, .edit-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 56px);\n }\n }\n .wrap-comment, .comment-list, .reply-list {\n .comment-header, .reply-header {\n display: flex;\n .initials {\n border-radius: 50px;\n color: @fill-white;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: 10px;\n font-size: 14px;\n }\n }\n }\n\n .wrap-comment {\n .comment-header {\n align-items: center;\n .initials {\n height: 30px;\n width: 30px;\n }\n }\n .wrap-textarea {\n .input:not(.input-outline):after {\n content: none;\n }\n }\n }\n\n #add-comment-dialog, #edit-comment-dialog, #add-reply-dialog, #edit-reply-dialog {\n .dialog {\n --f7-dialog-text-color: @black;\n .done {\n padding-right: 6px;\n }\n }\n }\n\n .comment-list {\n ul:after, .item-inner:after, li:last-child li .item-inner:after {\n content: none;\n }\n .comment-header {\n .left {\n display: flex;\n align-items: center;\n .initials {\n width: 40px;\n height: 40px;\n font-size: 18px;\n }\n }\n }\n }\n .reply-list {\n .reply-header {\n .left {\n display: flex;\n .initials {\n margin-top: 5px;\n width: 24px;\n height: 24px;\n font-size: 11px;\n }\n }\n }\n }\n\n .edit-comment-popup, .edit-reply-popup, #edit-comment-dialog, #edit-reply-dialog {\n .wrap-comment {\n .comment-header, .reply-header {\n .initials {\n height: 40px;\n width: 40px;\n }\n }\n }\n }\n\n #view-comment-popover {\n .toolbar-bottom:after {\n content: none;\n }\n }\n\n}","@comment-date: #6d6d72;\n@swipe-icon: #E5E5E5;\n\n@import './ios/comments';\n@import './material/comments';\n\n.wrap-comment {\n padding: 16px 24px 0 16px;\n background-color: @background-tertiary;\n \n .comment-date {\n color: @text-secondary;\n }\n .wrap-textarea {\n margin-top: 6px;\n }\n .name {\n font-weight: 600;\n font-size: 16px;\n color: @text-normal;\n }\n .reply-date {\n color: @text-secondary;\n }\n}\n\n.wrap-textarea {\n .input {\n height: 100%;\n }\n\n textarea {\n font-size: 14px;\n margin-top: 0;\n height: 100%;\n padding: 5px 0;\n color: @text-normal;\n }\n}\n\n#add-comment-dialog, #edit-comment-dialog, #add-reply-dialog, #edit-reply-dialog {\n .dialog {\n --f7-dialog-width: 400px;\n z-index: 13700;\n .dialog-inner {\n padding: 0;\n height: 400px;\n .wrap-comment {\n .name, .comment-date, .reply-date {\n text-align: left;\n }\n .wrap-textarea {\n textarea {\n color: @text-normal;\n width: 100%;\n }\n }\n }\n }\n }\n}\n\n.comment-list {\n .item-content .item-inner {\n padding-right: 0;\n padding-bottom: 0;\n padding-top: 16px;\n .comment-header {\n display: flex;\n justify-content: space-between;\n padding-right: 16px;\n .right {\n display: flex;\n justify-content: flex-end;\n width: 70px;\n .comment-resolve {\n margin-right: 10px;\n }\n }\n }\n .reply-header {\n display: flex;\n justify-content: space-between;\n padding-right: 16px;\n }\n }\n .item-title {\n width: 100%;\n }\n .user-name {\n font-size: 16px;\n line-height: 22px;\n color: @text-normal;\n margin: 0;\n font-weight: 700;\n }\n .comment-date, .reply-date {\n font-size: 12px;\n line-height: 18px;\n color: @text-secondary;\n margin: 0;\n }\n .comment-quote {\n color: @text-secondary;\n border-left: 1px solid @text-secondary;\n padding-left: 10px;\n padding-right: 16px;\n margin: 5px 0;\n font-size: 14px;\n }\n .comment-text, .reply-text {\n color: @text-normal;\n font-size: 14px;\n line-height: 25px;\n margin: 0;\n max-width: 100%;\n padding-right: 15px;\n word-break: break-all;\n pre {\n white-space: pre-wrap;\n overflow-wrap: break-word;\n }\n }\n .reply-list {\n padding-left: 26px;\n }\n .reply-item {\n padding-right: 26px;\n }\n}\n\n.edit-comment-popup, .add-reply-popup, .edit-reply-popup {\n z-index: 20000;\n}\n\n#view-comment-sheet {\n background-color: @fill-white;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n height: 45%;\n box-shadow: 0 1px 10px rgba(0, 0, 0, 0.2), 0 4px 5px rgba(0, 0, 0, 0.12);\n webkit-transition: height 200ms;\n transition: height 200ms;\n .top {\n height: 90%;\n }\n .swipe-container {\n display: flex;\n justify-content: center;\n height: 40px;\n background-color: @background-primary;\n .icon-swipe {\n margin-top: 8px;\n width: 40px;\n height: 4px;\n background: @background-menu-divider;\n border-radius: 2px;\n }\n }\n}\n\n#view-comment-popover, #view-comment-sheet {\n .toolbar {\n position: fixed;\n background-color: @background-primary;\n box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.2), 0px 4px 5px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14);\n .link {\n --f7-toolbar-link-color: @brandColor;\n }\n .toolbar-inner {\n padding: 0 16px;\n }\n .btn-add-reply {\n padding: 0;\n min-width: 80px;\n font-size: 16px;\n }\n .comment-navigation {\n min-width: 62px;\n display: flex;\n justify-content: space-between;\n .link {\n padding: 0 12px;\n }\n }\n }\n}\n\n#view-comment-popover {\n background-color: @background-primary;\n .pages {\n position: absolute;\n }\n .page {\n border-radius: var(--f7-popover-border-radius);\n .page-content {\n padding: 16px 16px 60px 0;\n border-radius: var(--f7-popover-border-radius);\n }\n }\n .comment-list {\n .item-content {\n .item-inner {\n .comment-header, .reply-header {\n padding-right: 0;\n }\n }\n }\n }\n .toolbar {\n position: absolute;\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n }\n}\n\n.page-current-comment {\n position: relative;\n .page-content {\n background-color: @background-primary;\n }\n .comment-list {\n ul {\n &:before, &:after {\n content: none;\n }\n .item-content .item-inner {\n padding-top: 0;\n .reply-list .item-content .item-inner {\n padding-top: 13px;\n }\n }\n }\n }\n}\n\n.dialog.modal-in {\n z-index: 14000;\n max-height: 100%;\n overflow: auto;\n\n .item-content .item-input-wrap::after {\n background-color: @brandColor;\n }\n}\n\n.dialog-backdrop.backdrop-in {\n z-index: 13600;\n}\n\n.no-comments {\n text-align: center;\n margin-top: 35px;\n color: @text-normal;\n}\n\n.actions-modal.modal-in {\n z-index: 13700;\n .actions-group::after {\n background-color: @background-menu-divider;\n }\n}\n\n.actions-backdrop.backdrop-in {\n z-index: 13600;\n}","\n// Colors\n@themeColorLight: #a2bdde;\n@navBarIconColor: #fff;\n\n\n.device-android {\n --f7-navbar-bg-color: @brandColor;\n --f7-navbar-link-color: @text-link;\n --f7-navbar-text-color: @text-normal;\n\n // Main Toolbar\n #editor-navbar.navbar .right {\n padding-right: 4px;\n }\n #editor-navbar.navbar .right a.link,\n #editor-navbar.navbar .left a.link {\n padding: 0 13px;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n width: auto;\n }\n}\n",".device-ios {\n .view {\n .page-content{\n background: @background-tertiary;\n }\n }\n}\n\n","// Icons\n.device-ios {\n i.icon {\n &.icon-burger {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-edit-settings {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-play {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-undo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-redo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-reader {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-download {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-print {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-spellcheck {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-plus {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-feedback {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-setup {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-versions {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-additional {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-color {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-selection {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-bullets {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-numbers {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-linespacing {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-align-center {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-align-just {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-align-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-align-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-de-indent {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-in-indent {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-add-column-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-add-column-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-add-row-above {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-add-row-below {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-remove-column {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-remove-row {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-expand-down {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-pagebreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-sectionbreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-stringbreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-pagenumber {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-link {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-image-library {\n width: 22px;\n height: 22px;\n .encoded-svg-background('icons_for_svg');\n }\n\n &.icon-text-valign-top {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-valign-middle {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-valign-bottom {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n // Presets of table borders\n\n &.icon-table-borders-all {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-none {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-inner {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-outer {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-left {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-center {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-right {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-top {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-middle {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-bottom {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n // Reorder\n\n &.icon-move-backward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-move-forward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-move-background {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-move-foreground {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-center {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-top {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-middle {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-bottom {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-horizontal {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-vertical {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n // Collaboration\n\n &.icon-users {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-app-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n //comments\n &.icon-menu-comment {\n width: 30px;\n height: 30px;\n .encoded-svg-mask('', @text-tertiary);\n }\n\n &.icon-resolve-comment {\n width: 30px;\n height: 30px;\n .encoded-svg-mask('');\n }\n\n &.icon-resolve-comment.check {\n width: 30px;\n height: 30px;\n .encoded-svg-background('');\n }\n\n &.icon-insert-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n //Insert\n &.icon-add-slide {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-add-shape {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-add-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-add-other {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-add-table {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n }\n\n .tab-link-active {\n i.icon {\n &.icon-add-slide {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @fill-white);\n }\n\n &.icon-add-shape {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @fill-white);\n }\n\n &.icon-add-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @fill-white);\n }\n\n &.icon-add-other {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @fill-white);\n }\n }\n }\n}","// Icons\n.device-android {\n i.icon {\n &.icon-expand-up {\n width: 17px;\n height: 17px;\n .encoded-svg-mask('');\n }\n\n &.icon-expand-down {\n width: 17px;\n height: 17px;\n .encoded-svg-mask('');\n }\n\n &.icon-edit {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-edit-settings {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-play {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-reader {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-download {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-print {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-spellcheck {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-feedback {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-setup {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-versions {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n //&.icon-text-additional {\n // width: 22px;\n // height: 22px;\n // .encoded-svg-mask('');\n //}\n //&.icon-text-color {\n // width: 22px;\n // height: 22px;\n // .encoded-svg-mask('');\n //}\n //&.icon-text-selection {\n // width: 22px;\n // height: 22px;\n // .encoded-svg-mask('');\n //}\n //&.icon-bullets {\n // width: 22px;\n // height: 22px;\n // .encoded-svg-mask('');\n //}\n //&.icon-numbers {\n // width: 22px;\n // height: 22px;\n // .encoded-svg-mask('');\n //}\n //&.icon-linespacing {\n // width: 22px;\n // height: 22px;\n // .encoded-svg-mask('');\n //}\n &.icon-text-align-center {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-align-just {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-align-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-align-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-de-indent {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-in-indent {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-add-column-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-add-column-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-add-row-above {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-add-row-below {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-remove-column {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-remove-row {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-pagebreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-sectionbreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-stringbreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-pagenumber {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-image-library {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-valign-top {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-valign-middle {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-valign-bottom {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n // Presets of table borders\n\n &.icon-table-borders-all {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-none {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-inner {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-outer {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-left {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-center {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-right {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-top {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-middle {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-bottom {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n // Reorder\n\n &.icon-move-backward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-move-forward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-move-background {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-move-foreground {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-center {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-top {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-middle {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-bottom {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-horizontal {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-vertical {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n // Collaboration\n \n &.icon-users {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-app-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n //Comments\n &.icon-menu-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-tertiary);\n }\n\n &.icon-resolve-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-resolve-comment.check {\n width: 24px;\n height: 24px;\n .encoded-svg-background('');\n }\n\n &.icon-done-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-insert-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-done-comment-white {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @fill-white);\n }\n\n &.icon-add-table {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-link {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-plus {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @fill-white);\n }\n }\n\n // Overwrite color for toolbar\n .navbar {\n i.icon {\n &.icon-logo {\n width: 100px;\n height: 14px;\n //background: url('../../../../common/mobile/resources/img/header/logo-android.svg') no-repeat center;\n }\n\n &.icon-undo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-redo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-burger {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-plus {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-play {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-settings {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-prev {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-next {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-expand-down {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @fill-white);\n }\n\n &.icon-add-slide {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-add-shape {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-add-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-add-other {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-close-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n }\n }\n}","i.icon {\n &.icon-format-pptx {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n\n &.icon-format-potx {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n\n &.icon-format-odp {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n\n &.icon-format-otp {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/apps/presentationeditor/mobile/css/923.css b/apps/presentationeditor/mobile/css/923.css new file mode 100644 index 0000000000..eae36a0cf3 --- /dev/null +++ b/apps/presentationeditor/mobile/css/923.css @@ -0,0 +1,6 @@ +/*! + * + * * Version: 8.0.1 (build: 0) + * + */:root{--brand-word:#446995;--brand-cell:#40865C;--brand-slide:#BE664F;--brand-form:#AA5252;--brand-primary:#3880BE;--brand-secondary:#ED7309;--brand-text-on-brand:#FFF;--background-primary:#FFF;--background-secondary:#FFF;--background-tertiary:#EFF0F5;--background-menu-divider:rgba(60,60,67,0.15);--background-button:#EFF0F5;--text-normal:#000000;--text-secondary:rgba(0,0,0,0.6);--text-tertiary:rgba(0,0,0,0.4);--text-link:#007AFF;--text-error:#FF3B30;--fill-black:#000;--fill-white:#FFF;--toolbar-background:#446995;--toolbar-icons:#FFF;--toolbar-segment:#446995;--toolbar-tab-normal:rgba(255,255,255,0.5);--component-disabled-opacity:0.4;--active-opacity-word:rgba(68,105,149,0.3);--active-opacity-slide:rgba(190,102,79,0.3);--active-opacity-cell:rgba(64,134,92,0.3);--image-border-types-filter:none;--canvas-background:#eee;--canvas-content-background:#fff;--canvas-page-border:#ccc;--canvas-ruler-background:#fff;--canvas-ruler-margins-background:#d9d9d9;--canvas-ruler-mark:#555;--canvas-ruler-handle-border:#555;--canvas-ruler-handle-border-disabled:#aaa;--canvas-high-contrast:#000;--canvas-cell-border:#999;--canvas-cell-title-text:rgba(0,0,0,0.8);--canvas-cell-title-background:#f7f7f7;--canvas-cell-title-background-selected:#cfcfcf;--canvas-cell-title-border:#d8d8d8;--canvas-cell-title-border-selected:#c9c9c9}:root .pdf-view{--brand-word:var(--brand-form)}:root .pdf-view__android{--toolbar-background:var(--brand-word)}:root .theme-dark,:root .theme-type-dark{--background-primary:#232323;--background-secondary:#333;--background-tertiary:#131313;--background-menu-divider:rgba(84,84,88,0.5);--background-button:#333333;--text-normal:rgba(255,255,255,0.87);--text-secondary:rgba(255,255,255,0.6);--text-tertiary:rgba(255,255,255,0.4);--text-link:#1976D2;--text-error:#FF453A;--fill-black:#000;--fill-white:#FFF;--brand-word:#208BFF;--brand-cell:#34C759;--brand-slide:#FE8C33;--brand-form:#FE8C33;--brand-primary:#3E9CF0;--brand-secondary:#FFAF49;--brand-text-on-brand:#000;--toolbar-background:#232323;--toolbar-icons:#208BFF;--toolbar-segment:#FFF;--toolbar-tab-normal:#757575;--component-disabled-opacity:0.4;--active-opacity-word:rgba(68,105,149,0.2);--active-opacity-slide:rgba(190,102,79,0.2);--active-opacity-cell:rgba(64,134,92,0.2);--image-border-types-filter:invert(100%) brightness(4);--canvas-background:#000;--canvas-content-background:#fff;--canvas-page-border:#303030;--canvas-ruler-background:#636366;--canvas-ruler-margins-background:#3a3a3c;--canvas-ruler-mark:#8e8e93;--canvas-ruler-handle-border:#636366;--canvas-ruler-handle-border-disabled:#636366;--canvas-high-contrast:#000;--canvas-cell-border:rgba(0,0,0,0.1);--canvas-cell-title-border:#757575;--canvas-cell-title-border-hover:#858585;--canvas-cell-title-border-selected:#999;--canvas-cell-title-text:rgba(255,255,255,0.8);--canvas-cell-title-background:#555;--canvas-cell-title-background-selected:#3d3d3d}:root .theme-dark.pdf-view,:root .theme-type-dark.pdf-view{--brand-word:var(--brand-form)}:root .theme-dark.pdf-view__android,:root .theme-type-dark.pdf-view__android{--toolbar-background:var(--background-primary)}[dir=rtl].device-android .app-layout .searchbar input{background-position:100%;padding-left:36px;padding-right:24px}[dir=rtl].device-android .app-layout .searchbar .number-search-results{left:26px;right:auto}[dir=rtl].device-android .comment-list .comment-header .initials,[dir=rtl].device-android .wrap-comment .comment-header .initials{margin-left:10px;margin-right:0}[dir=rtl].device-android .actions-modal .actions-button-text{text-align:right}[dir=rtl].device-android .navigation-sheet__title{padding-left:0;padding-right:16px}[dir=rtl].device-ios .app-layout .navbar .left a+a,[dir=rtl].device-ios .app-layout .navbar .right a+a,[dir=rtl].device-ios .app-layout .subnavbar{margin-right:0}[dir=rtl].device-ios .app-layout .tab-buttons .tab-link:first-child{border-radius:0 5px 5px 0}[dir=rtl].device-ios .app-layout .tab-buttons .tab-link:last-child{border-radius:5px 0 0 5px}[dir=rtl].device-ios .app-layout .searchbar .number-search-results{left:26px;right:auto}[dir=rtl].device-ios .app-layout .popover li:first-child .segmented a:first-child,[dir=rtl].device-ios .app-layout .popover li:last-child .segmented a:first-child{border-radius:0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0}[dir=rtl].device-ios .app-layout .popover li:first-child .segmented a:last-child,[dir=rtl].device-ios .app-layout .popover li:last-child .segmented a:last-child{border-radius:var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius)}[dir=rtl].device-ios .app-layout .list .item-inner .item-after .segmented{margin-left:0;margin-right:10px}[dir=rtl].device-ios .app-layout .searchbar-inner__right .buttons-row a.next{margin-left:0;margin-right:15px}[dir=rtl].device-ios .app-layout .navbar .searchbar-input-wrap,[dir=rtl].device-ios .app-layout .searchbar-inner__left{margin-left:10px;margin-right:0}[dir=rtl].device-ios .app-layout .comment-list .item-content .item-inner .comment-header{padding-left:16px}[dir=rtl] .comment-list .item-content .item-inner{padding-left:0}[dir=rtl] .comment-list .item-content .item-inner .comment-header .right{justify-content:space-between}[dir=rtl] .comment-list .item-content .item-inner .comment-header .right .comment-resolve{margin-left:10px;margin-right:0}[dir=rtl] .comment-list .item-content .item-inner .comment-header .name{text-align:right}[dir=rtl] .comment-quote{border-left:0;border-right:1px solid var(--text-secondary);padding-left:16px;padding-right:10px}[dir=rtl] .comment-text,[dir=rtl] .reply-text{padding-left:15px;padding-right:0}[dir=rtl] #add-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #add-comment-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #add-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,[dir=rtl] #add-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #add-reply-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #add-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date,[dir=rtl] #edit-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #edit-comment-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #edit-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,[dir=rtl] #edit-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #edit-reply-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #edit-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date{text-align:right}[dir=rtl] #view-comment-popover .page .page-content{padding:16px 0 60px 16px}[dir=rtl] .wrap-comment{padding:16px 16px 0 24px}[dir=rtl] .shapes .thumb{transform:scaleX(-1)}[dir=rtl] #settings-popover .link,[dir=rtl] .settings-popup .link{display:inline}[dir=rtl] #edit-table-style ul{padding-right:0}[dir=rtl] .color-schemes-menu .item-title{margin-right:20px}[dir=rtl] .list [slot=root-start]{padding:15px 15px 0 0}[dir=rtl] .bullets .item-content,[dir=rtl] .multilevels .item-content,[dir=rtl] .numbers .item-content{padding-right:0}[dir=rtl] .dataview .active:after{left:-5px;right:unset}[dir=rtl] .popover .list .range-number,[dir=rtl] .popup .list .range-number,[dir=rtl] .sheet-modal .list .range-number{text-align:left}[dir=rtl] .popover .list .inner-range-title,[dir=rtl] .popup .list .inner-range-title,[dir=rtl] .sheet-modal .list .inner-range-title{padding-left:0;padding-right:15px}[dir=rtl] #color-picker .right-block,[dir=rtl] .page-review .toolbar #btn-reject-change{margin-left:0;margin-right:20px}[dir=rtl] .view .list li.no-indicator .item-link .item-inner{padding-left:15px;padding-right:0}[dir=rtl] .dialog .modal-password .modal-password__icon{left:4px;right:auto}@media (max-width:550px){.device-ios[dir=rtl] .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__right{margin-left:0;margin-right:10px}.device-ios[dir=rtl] .app-layout .navbar .searchbar-input-wrap{margin-left:0}.device-android[dir=rtl] .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__left{margin-left:33px;margin-right:0}}[dir=rtl] i.icon.icon-next,[dir=rtl] i.icon.icon-numbers-3,[dir=rtl] i.icon.icon-numbers-7,[dir=rtl] i.icon.icon-prev,[dir=rtl] i.icon.icon-table-add-column-left,[dir=rtl] i.icon.icon-table-add-column-right,[dir=rtl] i.icon.icon-table-borders-left,[dir=rtl] i.icon.icon-table-borders-right,[dir=rtl] i.icon.icon-table-remove-column,[dir=rtl] i.icon.icon-text-align-left,[dir=rtl] i.icon.icon-text-align-right{transform:scaleX(-1)}[dir=rtl] i.icon.icon-numbers-1{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M55.728 18v-6.725h-.022l-2.051 1.477v-1.02l2.062-1.482h.946V18h-.935ZM52.35 30.484c0-.677.243-1.239.73-1.687.487-.45 1.096-.676 1.826-.676.691 0 1.277.206 1.757.617.48.412.72.915.72 1.51 0 .43-.119.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.775V36h-5.113v-.666l2.728-2.874c.52-.547.863-.963 1.032-1.246.172-.282.258-.585.258-.907 0-.373-.15-.69-.452-.951a1.585 1.585 0 0 0-1.085-.392c-.454 0-.834.145-1.138.435-.305.29-.457.652-.457 1.085v.005h-.934v-.005ZM53.698 49.423v-.817h.929c.444 0 .807-.127 1.09-.38.283-.259.425-.585.425-.978 0-.394-.131-.708-.393-.94-.26-.233-.632-.35-1.111-.35-.444 0-.806.119-1.085.355-.28.236-.44.559-.484.967h-.929c.054-.66.308-1.184.763-1.574.458-.39 1.05-.585 1.778-.585.698 0 1.278.188 1.74.564.462.375.693.854.693 1.434 0 .483-.143.89-.43 1.219-.286.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.402.564.347.337.52.777.52 1.322 0 .433-.121.823-.364 1.17a2.39 2.39 0 0 1-.989.806c-.415.19-.875.285-1.38.285-.802 0-1.449-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.042.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.595.5-1 0-.454-.161-.814-.483-1.079-.32-.265-.756-.397-1.311-.397h-.972ZM51 17h-1v1h1zM51 35h-1v1h1zM51 52h-1v1h1z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-2{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M52.312 18v-6.725h-.021l-2.052 1.477v-1.02L52.3 10.25h.946V18h-.935Zm2.47 1.488c.123-.208.214-.37.275-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM48.934 30.484c0-.677.243-1.239.73-1.687.487-.45 1.096-.676 1.826-.676.691 0 1.277.206 1.757.617.48.412.72.915.72 1.51 0 .43-.119.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.775V36h-5.113v-.666l2.728-2.874c.52-.547.863-.963 1.032-1.246.172-.282.258-.585.258-.907 0-.373-.15-.69-.452-.951a1.585 1.585 0 0 0-1.085-.392c-.454 0-.834.145-1.138.435-.305.29-.457.652-.457 1.085v.005h-.934v-.005Zm5.849 7.004c.121-.208.213-.37.274-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM50.282 49.423v-.817h.929c.444 0 .807-.127 1.09-.38.283-.259.425-.585.425-.978 0-.394-.131-.708-.392-.94-.262-.233-.633-.35-1.112-.35-.444 0-.806.119-1.085.355-.28.236-.44.559-.484.967h-.929c.054-.66.308-1.184.763-1.574.458-.39 1.05-.585 1.778-.585.698 0 1.278.188 1.74.564.462.375.693.854.693 1.434 0 .483-.144.89-.43 1.219-.286.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.402.564.347.337.52.777.52 1.322 0 .433-.121.823-.364 1.17a2.39 2.39 0 0 1-.989.806c-.415.19-.875.285-1.38.285-.802 0-1.448-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.043.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.595.5-1 0-.454-.161-.814-.483-1.079-.32-.265-.756-.397-1.311-.397h-.972Zm4.5 5.065c.123-.208.214-.37.275-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822Z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-4{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='m56.85 18-.778-2.218h-3.083L52.21 18h-1.015l2.857-7.75h.956L57.866 18H56.85Zm-2.336-6.574-1.24 3.534h2.513l-1.24-3.534h-.033ZM55.03 36h-3.024v-7.75h3.035c.662 0 1.197.177 1.606.531.411.355.617.822.617 1.402 0 .405-.13.772-.392 1.101-.258.326-.573.523-.945.591v.043c.526.068.945.274 1.257.618.315.343.472.773.472 1.289 0 .684-.233 1.217-.698 1.6-.462.383-1.105.575-1.928.575Zm-2.057-6.896v2.486h1.547c.572 0 1.01-.11 1.31-.333.304-.222.457-.542.457-.961 0-.383-.127-.677-.382-.881-.254-.208-.616-.311-1.085-.311h-1.847Zm0 6.042h1.912c.583 0 1.026-.116 1.326-.35.301-.232.452-.572.452-1.02 0-.902-.623-1.353-1.87-1.353h-1.82v2.723ZM54.39 53.129c-1.07 0-1.92-.36-2.55-1.08-.627-.723-.94-1.699-.94-2.927 0-1.217.316-2.188.95-2.911.634-.727 1.48-1.09 2.54-1.09.846 0 1.562.236 2.15.709.59.469.946 1.09 1.068 1.863h-.978a2.1 2.1 0 0 0-.8-1.219c-.408-.308-.888-.462-1.44-.462-.755 0-1.36.283-1.815.849-.455.566-.682 1.32-.682 2.261 0 .953.226 1.71.677 2.272.451.562 1.06.843 1.826.843.57 0 1.05-.13 1.44-.392.39-.261.655-.628.794-1.1h.978c-.18.765-.546 1.354-1.101 1.766-.555.412-1.26.618-2.116.618ZM49 17h-1v1h1zM49 35h-1v1h1zM49 52h-1v1h1z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-5{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M51.404 17.243c.473 0 .863-.136 1.171-.409.312-.275.467-.62.467-1.036v-.467l-1.514.096c-.881.054-1.322.364-1.322.93 0 .268.108.483.323.644.218.161.51.242.875.242Zm-.198.81c-.588 0-1.06-.155-1.418-.467-.358-.311-.537-.723-.537-1.235 0-.498.186-.888.558-1.17.373-.287.91-.452 1.611-.495l1.622-.097v-.483c0-.358-.114-.634-.343-.827-.23-.194-.557-.29-.983-.29-.337 0-.621.08-.854.241-.23.162-.373.378-.43.65h-.897c.015-.487.231-.895.65-1.224.419-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36V18h-.886v-1.004h-.022c-.164.322-.415.58-.752.773-.336.19-.707.285-1.111.285Zm3.577 1.435c.121-.208.213-.37.274-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM51.759 36.054a2.3 2.3 0 0 1-1.117-.264 1.979 1.979 0 0 1-.769-.767h-.02V36h-.887v-8.089h.934v3.239h.022c.183-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.322.272 1.773.817.45.54.677 1.251.677 2.132 0 .884-.228 1.597-.683 2.138-.45.54-1.047.81-1.788.81Zm-.167-5.065c-.505 0-.915.197-1.23.59-.311.39-.467.9-.467 1.526 0 .63.156 1.14.467 1.53.315.391.725.586 1.23.586.509 0 .915-.191 1.22-.574.308-.384.461-.898.461-1.542 0-.641-.154-1.153-.462-1.536-.304-.387-.71-.58-1.219-.58Zm3.19 6.499c.123-.208.214-.37.275-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM54.31 49.095h-.918a1.274 1.274 0 0 0-.484-.795c-.261-.207-.601-.311-1.02-.311-.509 0-.919.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.468 1.547.315.38.728.57 1.24.57.405 0 .736-.092.994-.275.261-.186.432-.453.51-.8h.919c-.079.57-.34 1.03-.784 1.38-.44.351-.989.527-1.644.527-.802 0-1.445-.265-1.928-.795-.484-.534-.725-1.252-.725-2.154 0-.888.241-1.6.725-2.138.483-.54 1.122-.81 1.917-.81.684 0 1.245.189 1.681.569.437.376.686.832.747 1.37Zm.473 5.393c.121-.208.213-.37.274-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822Z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-6{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M54.82 17.243c.473 0 .863-.136 1.171-.409.312-.275.468-.62.468-1.036v-.467l-1.515.096c-.881.054-1.321.364-1.321.93 0 .268.107.483.322.644.218.161.51.242.875.242Zm-.198.81c-.588 0-1.06-.155-1.418-.467-.358-.311-.538-.723-.538-1.235 0-.498.187-.888.56-1.17.371-.287.909-.452 1.61-.495l1.623-.097v-.483c0-.358-.115-.634-.344-.827-.23-.194-.557-.29-.983-.29-.337 0-.621.08-.854.241-.23.162-.373.378-.43.65h-.897c.014-.487.231-.895.65-1.224.419-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36V18h-.886v-1.004h-.022a1.86 1.86 0 0 1-.752.773c-.336.19-.707.285-1.111.285ZM55.175 36.054a2.3 2.3 0 0 1-1.117-.264 1.979 1.979 0 0 1-.768-.767h-.022V36h-.886v-8.089h.934v3.239h.022c.182-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.322.272 1.773.817.45.54.676 1.251.676 2.132 0 .884-.227 1.597-.682 2.138-.45.54-1.047.81-1.788.81Zm-.167-5.065c-.505 0-.915.197-1.23.59-.311.39-.467.9-.467 1.526 0 .63.156 1.14.467 1.53.315.391.725.586 1.23.586.509 0 .915-.191 1.22-.574.307-.384.462-.898.462-1.542 0-.641-.154-1.153-.462-1.536-.305-.387-.711-.58-1.22-.58ZM57.726 49.095h-.918a1.274 1.274 0 0 0-.484-.795c-.261-.207-.601-.311-1.02-.311-.509 0-.919.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.468 1.547.315.38.728.57 1.24.57.405 0 .736-.092.994-.275.261-.186.432-.453.51-.8h.919c-.079.57-.34 1.03-.784 1.38-.44.351-.989.527-1.644.527-.802 0-1.445-.265-1.928-.795-.483-.534-.725-1.252-.725-2.154 0-.888.242-1.6.725-2.138.483-.54 1.122-.81 1.917-.81.684 0 1.245.189 1.681.569.437.376.686.832.747 1.37ZM51 17h-1v1h1zM51 35h-1v1h1zM51 52h-1v1h1z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-align-left,[dir=rtl] i.icon.icon-align-right{transform:scaleX(-1)}[dir=rtl] i.icon.icon-text-orientation-horizontal{background-color:var(--brand-slide);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M9.514 10.75h1.755L8.069 2H6.363L3.25 10.75h1.712l.66-1.988h3.194l.698 1.988ZM7.197 4.041l1.101 3.247h-2.18l1.079-3.247ZM16 2h-3.194v8.75h2.72c1.028-.008 1.677-.028 1.946-.06.429-.051.789-.189 1.08-.412.294-.226.525-.527.692-.9.17-.379.256-.767.256-1.165 0-.505-.13-.945-.392-1.319s-.637-.638-1.123-.794c.345-.17.617-.427.817-.77.204-.342.306-.718.306-1.128 0-.378-.082-.718-.246-1.02a2.162 2.162 0 0 0-.616-.734 1.93 1.93 0 0 0-.834-.358C17.103 2.03 16.632 2 16 2Zm-1.58 3.48V3.456h.926c.76 0 1.22.01 1.38.03.268.036.47.14.604.31.138.168.208.387.208.657 0 .283-.08.511-.24.686-.157.172-.373.275-.65.31-.152.02-.542.03-1.171.03h-1.058Zm0 3.796v-2.34h1.302c.734 0 1.21.042 1.428.125.222.084.391.217.507.4.117.183.175.406.175.669 0 .31-.076.559-.23.746a.973.973 0 0 1-.582.346c-.157.036-.526.054-1.107.054h-1.494ZM6.016 13.25l-3.52 3.833-.497.542.498.542L6.018 22l.995-1.084-2.318-2.524H22v-1.534H4.695l2.318-2.524-.996-1.084Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain}[dir=rtl] i.icon.icon-text-orientation-anglecount{background-color:var(--brand-slide);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23000' d='m12.614 10.658-1.076-1.113.79-1.703-1.958-2.025-1.623.842-1.05-1.085L14.972 2l1.046 1.082-3.403 7.576Zm.301-4.079 1.316-2.756-2.653 1.374 1.337 1.382ZM18.92 6.085l1.96 2.025c.387.4.657.718.81.952.157.233.255.485.292.756a2 2 0 0 1-.073.856 1.905 1.905 0 0 1-.475.802c-.251.26-.544.434-.879.522a1.61 1.61 0 0 1-.973-.03c.203.407.27.812.202 1.215a2.032 2.032 0 0 1-.568 1.085 2.42 2.42 0 0 1-.871.575 1.928 1.928 0 0 1-.977.133c-.315-.043-.62-.185-.914-.424-.185-.15-.595-.549-1.23-1.196l-1.668-1.724 5.365-5.547Zm.097 1.946-1.24 1.283.648.67c.386.399.631.64.737.724.191.153.387.224.588.215.205-.01.395-.104.568-.283.166-.172.258-.354.275-.548.023-.194-.038-.387-.18-.58-.086-.114-.362-.412-.828-.894l-.568-.587Zm-2.133 2.206-1.435 1.483.916.947c.357.369.594.591.712.668a.822.822 0 0 0 .57.15c.208-.022.407-.131.597-.328.161-.166.262-.344.303-.534a.92.92 0 0 0-.066-.575c-.082-.191-.348-.52-.798-.985l-.8-.826Z'/%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M2 8.72h5.604v1.358H4.24L15.45 20.916 14.328 22 3.403 11.144v3.286H2V8.72Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain}[dir=rtl] i.icon.icon-text-orientation-angleclock{background-color:var(--brand-slide);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M8.72 22v-5.604h1.358v3.363L20.916 8.55 22 9.672 11.144 20.597h3.286V22H8.72Z' clip-rule='evenodd'/%3E%3Cpath fill='%23000' d='m10.658 11.386-1.113 1.076-1.703-.79-2.025 1.958.842 1.623-1.085 1.05L2 9.028l1.082-1.046 7.576 3.403Zm-4.079-.301L3.823 9.769l1.374 2.653 1.382-1.337ZM6.085 5.08 8.11 3.12c.4-.387.718-.657.952-.81.233-.157.485-.255.756-.292a2 2 0 0 1 .856.073c.295.085.562.243.802.475.26.251.434.544.522.879.09.332.08.657-.03.973.407-.203.812-.27 1.215-.202.403.07.764.259 1.085.568.252.244.444.535.575.871.131.332.175.658.133.977-.043.315-.185.62-.424.914-.15.185-.549.595-1.196 1.23l-1.724 1.668-5.547-5.365Zm1.946-.097 1.283 1.24.67-.648c.399-.385.64-.631.724-.737.153-.191.224-.387.215-.588-.01-.205-.104-.395-.283-.568-.172-.166-.354-.257-.548-.275-.194-.023-.387.038-.58.18-.114.086-.412.362-.894.828l-.587.568Zm2.206 2.133 1.483 1.435.947-.916c.369-.357.591-.594.668-.711a.822.822 0 0 0 .15-.57c-.022-.209-.131-.408-.328-.598a1.104 1.104 0 0 0-.534-.303.92.92 0 0 0-.575.066c-.191.082-.52.348-.985.798l-.826.8Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain}[dir=rtl] .slide-theme .item-theme.active:before{left:-5px;right:unset}[dir=rtl] .slide-layout .item-inner:before{left:11px;right:unset}[dir=rtl] .slide-layout .row img{transform:scaleX(-1)}.device-ios{--toolbar-background:var(--background-primary,#fff);--toolbar-segment:var(--brand-slide,#BE664F);--toolbar-icons:var(--brand-slide,#BE664F)}.device-android{--toolbar-background:var(--brand-slide,#BE664F)}.device-android .theme-type-dark{--toolbar-icons:var(--brand-slide,#BE664F)}.page.page-users .block-title{font-size:17px;font-weight:400;line-height:17px;margin-bottom:20px;margin-top:20px;text-transform:none}.page.page-users .color{border-radius:50px;color:var(--fill-white);font-size:18px;line-height:40px;min-height:40px;min-width:40px;text-align:center}.row{--f7-cols-per-row:1;align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:space-between}.row+.row{margin-top:var(--f7-grid-row-gap)}.navbar.main-navbar{height:0}.navbar.main-navbar.navbar-with-logo{height:26px}.navbar.main-navbar .navbar-inner{display:flex;justify-content:center;padding:0}.navbar.main-navbar .navbar-bg:after,.navbar.main-navbar .navbar-bg:before{content:none}.navbar-hidden{transform:translate3d(0,calc((var(--f7-navbar-height) + var(--f7-subnavbar-height))*-1),0)}.navbar-hidden+.page-content,.navbar-hidden+.page>.page-content{padding-top:0}.page.editor>.page-content{transition:padding-top .3s ease-in}.main-logo{align-items:center;display:flex;height:100%;justify-content:center;max-width:100%;width:100%}.main-logo .custom-logo-image{height:auto;max-height:20px;width:auto}.subnavbar .subnavbar-inner{padding:0}.subnavbar .subnavbar-inner .title{flex-shrink:1;margin:0;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap}.subnavbar .icon-back{color:var(--toolbar-icons)}.page.page-with-subnavbar .page-content{--f7-page-subnavbar-offset:0px}.page.page-with-subnavbar.page-with-logo .page-content{--f7-page-subnavbar-offset:26px}.popover .list:first-child,.popup .list:first-child,.sheet-modal .list:first-child{margin-bottom:0;margin-top:0}.popover .list .inner-range-title,.popup .list .inner-range-title,.sheet-modal .list .inner-range-title{color:var(--text-normal);padding:15px 0 0 15px}.popover .list .range-number,.popup .list .range-number,.sheet-modal .list .range-number{color:var(--text-normal);min-width:60px;text-align:right}.popover .page-content.no-padding-top,.popup .page-content.no-padding-top,.sheet-modal .page-content.no-padding-top{padding-top:0}.sheet-modal.coauth__sheet{transition:all .3s}.disabled,[disabled]{opacity:.55;pointer-events:none}.text-content{padding:14px 10px 0}.view .list{--menu-list-offset:0px;max-width:100%}.view .list ul{background:var(--f7-list-bg-color);max-width:100%}.view .list li.no-indicator .item-link .item-inner{padding-right:15px}.view .list li.no-indicator .item-link .item-inner:before{content:none}.view .list .item-text{-webkit-line-clamp:none;height:auto;max-height:none;text-overflow:clip;white-space:normal}.view .list .font-item img{filter:var(--image-border-types-filter,none)}.view .list .buttons .button.active{background-color:var(--active-opacity-slide)}.view .list .item-link .item-inner{width:100%}.view .list .item-inner{color:var(--text-normal)}.bullets,.multilevels,.numbers{min-height:160px}.bullets .row.list,.multilevels .row.list,.numbers .row.list{margin:0}.bullets .row.list ul,.multilevels .row.list ul,.numbers .row.list ul{grid-gap:10px;background:none;display:grid;grid-template-columns:repeat(4,auto);justify-content:space-around;padding:5px;width:100%}.bullets .row.list ul:after,.bullets .row.list ul:before,.multilevels .row.list ul:after,.multilevels .row.list ul:before,.numbers .row.list ul:after,.numbers .row.list ul:before{display:none}.bullets .row.list ul li,.multilevels .row.list ul li,.numbers .row.list ul li{border:1px solid #c4c4c4;height:70px;width:70px}html.pixel-ratio-2 .bullets .row.list ul li,html.pixel-ratio-2 .multilevels .row.list ul li,html.pixel-ratio-2 .numbers .row.list ul li{border:.5px solid #c4c4c4}html.pixel-ratio-3 .bullets .row.list ul li,html.pixel-ratio-3 .multilevels .row.list ul li,html.pixel-ratio-3 .numbers .row.list ul li{border:.33px solid #c4c4c4}.bullets .row.list ul li .thumb,.multilevels .row.list ul li .thumb,.numbers .row.list ul li .thumb{background-color:var(--fill-white);background-size:cover;height:100%;width:100%}.bullets .row.list ul li .thumb label,.multilevels .row.list ul li .thumb label,.numbers .row.list ul li .thumb label{color:var(--fill-black);position:absolute;text-align:center;top:34%;width:100%}.bullets .row.list ul li .item-marker,.bullets .row.list ul li .item-multilevellist,.bullets .row.list ul li .item-number,.multilevels .row.list ul li .item-marker,.multilevels .row.list ul li .item-multilevellist,.multilevels .row.list ul li .item-number,.numbers .row.list ul li .item-marker,.numbers .row.list ul li .item-multilevellist,.numbers .row.list ul li .item-number{height:68px;width:68px}.bullets .row.list .item-content,.multilevels .row.list .item-content,.numbers .row.list .item-content{min-height:68px;padding-left:0;padding-right:0}.bullets .row.list .item-content .item-inner,.multilevels .row.list .item-content .item-inner,.numbers .row.list .item-content .item-inner{padding:0}.bullets .row.list .item-content .item-inner:after,.multilevels .row.list .item-content .item-inner:after,.numbers .row.list .item-content .item-inner:after{display:none}.popover .page .list:first-child:last-child ul{background-color:var(--f7-list-bg-color);border-radius:0}.popover .list:first-child li:first-child,.popover .list:first-child li:first-child a,.popover .list:first-child li:first-child>label,.popover .list:last-child li:last-child,.popover .list:last-child li:last-child a,.popover .list:last-child li:last-child>label,.popover .page .list:first-child:last-child ul li:first-child .item-link,.popover .page .list:first-child:last-child ul li:last-child .item-link{border-radius:0}.shapes li{height:70px;margin:0 1px;width:70px}.shapes li .thumb{background-color:var(--brand-slide);height:100%;width:100%}.chart-types{width:100%}.chart-types .row{padding:0 10px}.chart-types li{height:60px;margin:6px;width:60px}.chart-types li .thumb{background-size:contain;height:100%;width:100%}.chart-styles .row li{margin:0;padding:1px}.chart-styles .row img{height:50px;width:50px}.segmented .decrement,.segmented .increment{text-overflow:clip}.content-block{box-sizing:border-box;margin:32px 0;padding:0 16px}.content-block p{color:var(--text-normal)}.color-schemes-menu{cursor:pointer;display:block}.color-schemes-menu .item-inner{justify-content:flex-start}.color-schemes-menu .color-schema-block{display:flex}.color-schemes-menu .color{box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);margin:0 2px 0 0;min-height:26px;min-width:26px}.color-schemes-menu .item-title{color:var(--text-normal);margin-left:20px}.slide-layout__list{margin:auto}.slide-layout ul{display:flex;flex-wrap:wrap;justify-content:space-around}.slide-layout ul:after,.slide-layout ul:before{display:none}.slide-layout li{margin-top:12px;position:relative;z-index:1}.slide-layout li img{box-shadow:0 0 0 1px rgba(0,0,0,.15)}.slide-layout .item-inner{padding-top:0}.slide-layout .item-inner:after{display:none}.slide-layout .item-inner:before{background-color:var(--brand-slide);background-repeat:no-repeat;bottom:0;content:"";height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='11' fill='transparent'/%3E%3Cpath d='M11 21a10 10 0 1 1 10-10 10 10 0 0 1-10 10Zm6.4-13.68L17.06 7a.48.48 0 0 0-.67 0l-7 6.84-2.44-2.6a.51.51 0 0 0-.59.08l-.36.34a.58.58 0 0 0 0 .65l3.19 3.35a.38.38 0 0 0 .39 0L17.4 8a.48.48 0 0 0 0-.67Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;opacity:0;position:absolute;right:11px;width:22px;z-index:1}.slide-layout .active .item-inner:before{opacity:1}.slide-transition .splitter{align-items:center;color:#000000;display:flex}.slide-transition .splitter label{margin:0 5px}.slide-transition .buttons-row{display:flex;margin:0 0 0 10px;min-width:90px}.slide-transition .buttons-row .button{width:100%}.slide-transition .buttons-row .button:first-child{border-left-style:solid;border-left-width:1px;border-radius:5px 0 0 5px}.slide-transition .buttons-row .button:last-child{border-radius:0 5px 5px 0}.style-effect .list .item-title,.style-type .list .item-title{font-weight:400}.range-slider-delay{appearance:none;background:linear-gradient(90deg,#b7b8b7 0,#b7b8b7);background-position:50%;background-repeat:no-repeat;background-size:100% 2px;border:none;box-sizing:initial;margin:4px 0 5px;outline:0;width:100%}.range-slider-delay:disabled{opacity:.55}.range-slider-delay::-webkit-slider-thumb{appearance:none;background:#ffffff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.3);cursor:pointer;height:28px;width:28px}.range-slider-delay::-ms-thumb{appearance:none;background:#ffffff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.3);cursor:pointer;height:28px;width:28px}.buttons-list ul li{border:0;font-weight:400}.buttons-list ul li .item-link{height:100%}.buttons-list ul li .item-link .item-content{height:100%;min-height:auto;padding:0}.buttons-list ul li .item-link .item-inner{align-items:center;justify-content:center;min-height:auto;padding:0}.buttons-list ul li .item-link .item-inner:before{display:none}.item-color-auto .color-auto{background-color:#000000;height:22px;width:22px}.item-color-auto.active .color-auto{border-radius:1px;box-shadow:0 0 0 1px #ffffff,0 0 0 4px var(--brand-slide)}.page .color-palettes .list ul .palette{padding:8px 0}.page .color-palettes .list ul .palette a{border-radius:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);flex-grow:1;margin:1px 1px 0 0;min-height:26px;min-width:10px;position:relative}.page .color-palettes .list ul .palette a.active:after{border-radius:1px;box-shadow:0 0 0 1px #ffffff,0 0 0 4px var(--brand-slide);content:" ";height:100%;position:absolute;width:100%;z-index:1}.page .color-palettes .list ul .palette a.transparent{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='0 0 22 22'%3E%3Cpath fill='none' stroke='red' stroke-linecap='undefined' stroke-linejoin='undefined' stroke-width='2' d='M0 22 22 0'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:100% 100%}.page .color-palettes .row{padding:0}.page .color-palettes .list .item-inner{color:var(--text-normal);display:block}.page .color-palettes .dynamic-colors .palette,.page .color-palettes .standart-colors .palette{display:flex}.page .color-palettes .dynamic-colors .empty-color{background-color:#ffffff}#color-picker{align-items:center;display:flex;justify-content:space-around;margin:4px auto 0;max-width:300px}#color-picker .color-picker-container{font-size:0;height:auto;max-width:100%;position:relative;width:calc(100% - 94px)}#color-picker .color-picker-container .color-picker-module-wheel{margin:0}#color-picker .right-block{margin-left:20px}#color-picker .right-block .color-hsb-preview{border:1px solid #c4c4c4;border-radius:100px;height:72px;overflow:hidden;width:72px}#color-picker .right-block .color-hsb-preview .current-color-hsb-preview,#color-picker .right-block .color-hsb-preview .new-color-hsb-preview{height:36px}#color-picker .right-block .color-hsb-preview .new-color-hsb-preview{border-radius:100px 100px 0 0}#color-picker .right-block .color-hsb-preview .current-color-hsb-preview{border-radius:0 0 100px 100px}#color-picker .right-block .button-round{align-items:center;background-color:var(--fill-white);border:0;border-radius:100px;box-shadow:0 4px 4px rgba(0,0,0,.25);display:flex;height:72px;justify-content:center;margin-top:20px;padding:0;width:72px}.table-styles{width:100%}.table-styles .row,.table-styles .row li{margin-bottom:12px}.table-styles .row div,.table-styles .row li{align-items:center;box-shadow:0 0 0 1px #c4c4c4;display:flex;justify-content:center}.table-styles .row div,.table-styles li{margin:0;padding:1px}.table-styles .row div img,.table-styles li img{height:50px;width:70px}#edit-table-style .list ul ul{padding-left:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.icon.lang-flag{background-image:url(../../../presentationeditor/mobile/resources/img/controls/flags@2x.png);background-size:48px auto;height:12px;width:16px}.lang-flag.ca,.lang-flag.ca-ES{background-position:0 0}.lang-flag.cs,.lang-flag.cs-CZ{background-position:-16px 0}.lang-flag.da,.lang-flag.da-DK{background-position:-32px 0}.lang-flag.de,.lang-flag.de-DE{background-position:0 -12px}.lang-flag.el,.lang-flag.el-GR{background-position:-16px -12px}.lang-flag.en,.lang-flag.en-US{background-position:-32px -12px}.lang-flag.fr,.lang-flag.fr-FR{background-position:0 -24px}.lang-flag.hu,.lang-flag.hu-HU{background-position:-16px -24px}.lang-flag.it,.lang-flag.it-IT{background-position:-32px -24px}.lang-flag.ko,.lang-flag.ko-KR{background-position:0 -36px}.lang-flag.nl,.lang-flag.nl-NL{background-position:-16px -36px}.lang-flag.nb,.lang-flag.nb-NO,.lang-flag.nn,.lang-flag.nn-NO{background-position:-32px -36px}.lang-flag.pl,.lang-flag.pl-PL{background-position:0 -48px}.lang-flag.pt,.lang-flag.pt-BR{background-position:-16px -48px}.lang-flag.ro,.lang-flag.ro-RO{background-position:-32px -48px}.lang-flag.ru,.lang-flag.ru-RU{background-position:0 -60px}.lang-flag.sv,.lang-flag.sv-SE{background-position:-32px -60px}.lang-flag.tr,.lang-flag.tr-TR{background-position:0 -72px}.lang-flag.uk,.lang-flag.uk-UA{background-position:-16px -72px}.lang-flag.lv,.lang-flag.lv-LV{background-position:-32px -72px}.lang-flag.lt,.lang-flag.lt-LT{background-position:0 -84px}.lang-flag.vi,.lang-flag.vi-VN{background-position:-16px -84px}.lang-flag.de-CH,.lang-flag.fr-CH,.lang-flag.it-CH{background-position:-32px -84px}.lang-flag.pt-PT{background-position:-16px -96px}.lang-flag.de-AT{background-position:-32px -96px}.lang-flag.es,.lang-flag.es-ES{background-position:0 -108px}.lang-flag.en-GB{background-position:-32px -108px}.lang-flag.en-AU{background-position:0 -120px}.lang-flag.az-Latn-AZ{background-position:-16px -120px}.lang-flag.en-ID,.lang-flag.id,.lang-flag.id-ID{background-position:-32px -120px}.lang-flag.bg,.lang-flag.bg-BG{background-position:0 -132px}.lang-flag.ca-ES-valencia{background-position:-16px -132px}.lang-flag.en-CA{background-position:-32px -132px}.lang-flag.en-ZA{background-position:0 -144px}.lang-flag.eu,.lang-flag.eu-ES{background-position:-16px -144px}.lang-flag.gl,.lang-flag.gl-ES{background-position:-32px -144px}.lang-flag.hr,.lang-flag.hr-HR{background-position:0 -156px}.lang-flag.lb,.lang-flag.lb-LU{background-position:-16px -156px}.lang-flag.mn,.lang-flag.mn-MN{background-position:-32px -156px}.lang-flag.sl,.lang-flag.sl-SI{background-position:0 -168px}.lang-flag.sr,.lang-flag.sr-Cyrl-RS,.lang-flag.sr-Latn-RS{background-position:-16px -168px}.lang-flag.sk,.lang-flag.sk-SK{background-position:-32px -168px}.lang-flag.kk,.lang-flag.kk-KZ{background-position:0 -180px}.lang-flag.fi,.lang-flag.fi-FI,.lang-flag.sv-FI{background-position:-16px -180px}.lang-flag.zh,.lang-flag.zh-CN{background-position:-32px -180px}.lang-flag.ja,.lang-flag.ja-JP{background-position:0 -192px}.lang-flag.es-MX{background-position:-16px -192px}.checkbox-in-modal{align-items:center;display:flex;margin-top:10px}.checkbox-in-modal .right-text{margin-left:10px}.username-tip{color:#ffffff;display:none;height:20px;opacity:0;padding:0 10px;pointer-events:none;position:absolute;transition:opacity .1ms ease-out;z-index:900}.username-tip.active{display:block;opacity:1}.dlg-adv-options{z-index:13700}.dlg-adv-options .content-block{padding:0}.dlg-adv-options .picker-3d .picker-item{font-size:16px;padding:0;text-align:left}.dlg-adv-options .picker-center-highlight{left:0;right:0;width:100%}.dlg-macros-request .dialog-text{word-break:break-word}@keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}@-o-keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}@-moz-keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}@-webkit-keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}.doc-placeholder-container{height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:6000}.statusbar .statusbar--box-tabs>ul>.locked a{box-shadow:inset 0 2px red}.font-item .item-inner{overflow:hidden}.font-item .item-inner:after{left:16px}.cell-editor{overflow:initial}.functions-list{background-color:var(--background-primary);max-height:200px;overflow-x:hidden;overflow-y:auto;width:360px}.functions-list__mobile{box-shadow:0 10px 10px -10px rgba(0,0,0,.3);left:0;position:absolute;right:0;width:100%}.functions-list__mobile .list{margin:0}.functions-list__mobile .list ul:before{display:none}.functions-list__mobile .list .item-content{padding-left:0}.functions-list__mobile .list .item-inner{padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left) - var(--menu-list-offset))}.functions-list__mobile .list .item-title{font-size:15px}#idx-functions-list{width:350px}#idx-functions-list .popover-inner .navbars .right .link{font-weight:600}#idx-functions-list .popover-inner .navbars .navbar-bg{background:var(--background-secondary)}#idx-functions-list .popover-inner .navbars .navbar-bg:after,#idx-functions-list .popover-inner .page-function-info .navbar .navbar-bg:after{background:var(--background-menu-divider)}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner{background:var(--background-secondary)}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner .title{color:var(--text-normal)}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner .right .link{color:var(--brand-slide);font-weight:600}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner .icon-back:after{color:var(--brand-slide)}.highlight-palette{width:100%}.highlight-color{box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);flex-grow:1;margin:1px;min-height:34px;min-width:10px;position:relative}.highlight-color_active:after{border-radius:1px;box-shadow:0 0 0 1px #ffffff,0 0 0 4px #446995;content:" ";height:100%;position:absolute;width:100%;z-index:1}#idx-celleditor.expanded .functions-list__mobile{top:70px}.popover__functions{box-shadow:0 10px 100px rgba(0,0,0,.3)}.popover__functions .view{transition:height .2s}.popover__functions .popover-angle.on-bottom{display:none}.target-function-list{bottom:0;height:100%;left:0;position:absolute;top:0;width:0}.dropdown-list-popup{bottom:0;height:260px;top:auto}.dropdown-list__placeholder{opacity:.6}.dropdown-list__placeholder .item-inner{border-bottom:1px solid var(--f7-list-item-border-color)}.swiper-wrapper .swiper-slide .list ul{background-color:initial}.swiper-pagination-bullet{background:var(--background-menu-divider);opacity:1}.swiper-pagination-bullet-active{background:var(--text-secondary)}.swiper-pagination-bullets{bottom:9px;position:fixed;width:100%}.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 5.5px}.preview-cell-style{background-color:var(--fill-white);background-position:50%;background-repeat:no-repeat;background-size:cover;border:.5px solid var(--background-menu-divider);border-radius:4px;height:44px;width:104px}.sharing-placeholder{height:100%}.sheet-modal .page-current-comment{padding-bottom:60px}.picker-columns{justify-content:space-around}.row-picker .col-50{color:var(--text-secondary);text-align:center}.block{font-size:12px;font-style:normal;font-weight:400;line-height:16px;margin-top:8px}.block-title+.block,.block-title+.block-header,.block-title+.card,.block-title+.list,.block-title+.timeline{margin:0}.inputs-list{margin-bottom:0}.inputs-list ul{background:var(--f7-list-bg-color);list-style:none;margin:0;padding:0;position:relative}.list input[type=password],.list input[type=text]{background:transparent}.dialog .modal-password{position:relative}.dialog .modal-password__icon{position:absolute;right:4px;top:calc(50% - 12.5px)}.dialog .modal-password .item-input-wrap{align-items:center;display:flex;justify-content:space-between}.version-history__user{border-radius:50%;border-radius:50px;color:var(--fill-white);font-size:18px;height:40px;line-height:40px;min-height:40px;min-width:40px;text-align:center;width:40px}.accept-reject .link{margin-right:20px}.beta-badge{border-radius:4px;color:var(--fill-white);font-size:12px;font-weight:400;letter-spacing:.5px;line-height:16px;padding:2px 4px}.close-editor-btn .item-inner{padding-left:36px}.close-editor-btn .item-title{color:var(--text-error)}.device-ios .app-layout{--f7-navbar-link-color:var(--brand-slide);--f7-subnavbar-link-color:var(--brand-slide);--f7-navbar-text-color:var(--text-normal);--f7-navbar-title-line-height:44px;--f7-navbar-link-line-height:44px;--f7-navbar-title-font-size:17px;--f7-list-bg-color:var(--background-primary);--f7-navbar-bg-color:var(--toolbar-background);--f7-tabbar-link-inactive-color:var(--toolbar-segment);--f7-radio-active-color:var(--brand-slide);--f7-toggle-active-color:var(--brand-slide);--f7-range-bar-active-bg-color:var(--brand-slide);--f7-list-button-text-color:var(--brand-slide);--f7-list-item-border-color:var(--background-menu-divider);--f7-page-bg-color:var(--background-tertiary);--f7-list-item-title-text-color:var(--text-normal);--f7-list-item-text-text-color:var(--text-normal);--f7-list-item-subtitle-text-color:var(--text-secondary);--f7-label-text-color:var(--text-normal);--f7-list-item-after-text-color:var(--text-normal);--f7-input-text-color:var(--text-normal);--f7-block-title-text-color:var(--text-secondary);--f7-input-placeholder-color:var(--text-secondary);--f7-list-chevron-icon-color:var(--text-tertiary);--f7-searchbar-search-icon-color:var(--text-tertiary);--f7-searchbar-input-clear-button-color:var(--text-tertiary);--f7-toggle-inactive-border-color:var(--background-menu-divider);--f7-toggle-inactive-bg-color:var(--background-menu-divider);--f7-actions-button-border-color:var(--background-menu-divider);--f7-popover-bg-color:var(--background-primary);--f7-dialog-bg-color-rgb:var(--background-secondary);--f7-dialog-title-text-color:var(--text-normal);--f7-dialog-text-color:var(--text-normal);--f7-dialog-button-text-color:var(--brand-slide);--f7-dialog-border-divider-color:var(--background-menu-divider);--f7-subnavbar-border-color:var(--background-menu-divider);--f7-list-border-color:var(--background-menu-divider);--f7-picker-item-text-color:rgba(var(--text-normal),0.45);--f7-picker-item-selected-text-color:var(--text-normal);--f7-block-text-color:var(--text-secondary);--f7-theme-color-shade:var(--background-primary);--f7-fab-pressed-bg-color:var(--background-primary);--f7-input-clear-button-color:var(--text-tertiary)}.device-ios .app-layout #editor-navbar.navbar .left a+a,.device-ios .app-layout #editor-navbar.navbar .right a+a{margin-left:0}.device-ios .app-layout .navbar,.device-ios .app-layout .navbar-bg,.device-ios .app-layout .subnavbar{background-color:var(--f7-navbar-bg-color)}.device-ios .app-layout .navbar a.btn-doc-back,.device-ios .app-layout .navbar-bg a.btn-doc-back,.device-ios .app-layout .subnavbar a.btn-doc-back{width:22px}.device-ios .app-layout .navbar .title,.device-ios .app-layout .navbar-bg .title,.device-ios .app-layout .subnavbar .title{color:var(--text-normal)}.device-ios .app-layout .navbar .navbar-inner,.device-ios .app-layout .navbar .subnavbar-inner,.device-ios .app-layout .navbar-bg .navbar-inner,.device-ios .app-layout .navbar-bg .subnavbar-inner,.device-ios .app-layout .subnavbar .navbar-inner,.device-ios .app-layout .subnavbar .subnavbar-inner{z-index:auto}.device-ios .app-layout .navbar .sheet-close,.device-ios .app-layout .navbar-bg .sheet-close,.device-ios .app-layout .subnavbar .sheet-close{display:flex;height:44px;justify-content:center;width:44px}.device-ios .app-layout .subnavbar .icon-back{color:var(--brand-slide)}.device-ios .app-layout .subnavbar .title{font-size:15px;font-weight:400}.device-ios .app-layout .popover__titled .list:first-child li:first-child>label,.device-ios .app-layout .popover__titled .list:first-child li:last-child>label,.device-ios .app-layout .popover__titled .list:first-child ul,.device-ios .app-layout .popover__titled .list:last-child li:first-child>label,.device-ios .app-layout .popover__titled .list:last-child li:last-child>label,.device-ios .app-layout .popover__titled .list:last-child ul{border-radius:0}.device-ios .app-layout .popover__titled .popover-inner>.view{border-radius:var(--f7-popover-border-radius)}.device-ios .app-layout .popover__titled .navbar-bg{backdrop-filter:none}.device-ios .app-layout .popover__titled .navbar-bg:after{background:var(--background-menu-divider)}.device-ios .app-layout .popover__titled .list:last-child li:last-child:after{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-navbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%}.device-ios .app-layout .popover li:last-child .segmented a:first-child{border-radius:var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius)}.device-ios .app-layout .popover li:last-child .segmented a:last-child{border-radius:0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0}.device-ios .app-layout .list .item-content .color-preview{background:var(--fill-white);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);box-sizing:border-box;display:inline-block;height:8px;margin-top:21px;width:22px}.device-ios .app-layout .list .item-content .item-after .color-preview{height:30px;margin-top:-3px;width:75px}.device-ios .app-layout .list .item-inner{padding-top:7px}.device-ios .app-layout .list .item-inner .item-after .after-start{margin:0 5px}.device-ios .app-layout .list .item-inner .item-after .segmented{margin-left:10px;min-width:90px}.device-ios .app-layout .list .buttons .item-inner{align-items:stretch;padding-bottom:0;padding-top:0}.device-ios .app-layout .list .buttons .item-inner>.row{align-items:stretch;width:100%}.device-ios .app-layout .list .buttons .item-inner>.row .button{align-items:center;border:none;border-radius:0;display:flex;flex:1;font-size:17px;height:inherit;justify-content:center}.device-ios .app-layout .list .list-input-right input{text-align:right}.device-ios .app-layout .links-list a:after,.device-ios .app-layout .list .item-inner:after,.device-ios .app-layout .simple-list li:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.device-ios .app-layout .tab-buttons{align-self:center;display:flex;flex-wrap:nowrap;width:100%}.device-ios .app-layout .tab-buttons .tab-link{-webkit-box-flex:1;border:1px solid var(--toolbar-segment);color:var(--brand-slide);cursor:pointer;display:block;font-family:inherit;font-size:14px;font-weight:600;height:29px;line-height:26px;margin:0;outline:0;overflow:hidden;padding:0 1px;position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;width:100%}.device-ios .app-layout .tab-buttons .tab-link:first-child{border-left-style:solid;border-left-width:1px;border-radius:5px 0 0 5px}.device-ios .app-layout .tab-buttons .tab-link:last-child{border-radius:0 5px 5px 0}.device-ios .app-layout .tab-buttons .tab-link.tab-link-active{background:var(--toolbar-segment);color:var(--brand-text-on-brand)}.device-ios .app-layout .tab-buttons .tab-link.tab-link-active i.icon{background-color:var(--brand-text-on-brand)}.device-ios .app-layout .button{background:0 0;border:1px solid var(--brand-slide);box-sizing:border-box;color:var(--brand-slide);cursor:pointer;display:block;font-family:inherit;font-size:14px;height:29px;line-height:27px;margin:0;outline:0;overflow:hidden;padding:0 10px;position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.device-ios .app-layout .button-fill{background-color:var(--background-primary);color:var(--brand-slide)}.device-ios .app-layout .button-red{background-color:var(--background-primary);color:var(--text-error)}.device-ios .app-layout .buttons-list li{border:0;border-radius:0;box-shadow:none;font-size:17px;height:43px;min-height:43px;padding:0;text-transform:none}.device-ios .app-layout .button-red .list-button{color:var(--text-error)}.device-ios .app-layout .list-button{position:static}.device-ios .app-layout .block-title{color:#6d6d72;font-size:14px;line-height:1;margin:35px 15px 10px;overflow:hidden;position:relative;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.device-ios .app-layout .shapes .page-content{background:var(--fill-white)}.device-ios .app-layout .dialog{background-color:var(--f7-dialog-bg-color-rgb)}.device-ios .app-layout #color-picker .right-block .button-round .icon{height:30px;width:30px}.device-ios .app-layout .content-block{color:#6d6d72}.device-ios .app-layout #add-chart .page-content,.device-ios .app-layout #add-chart.page-content,.device-ios .app-layout #add-shape .page-content,.device-ios .app-layout #add-shape.page-content,.device-ios .app-layout #add-slide .page-content,.device-ios .app-layout #add-slide.page-content,.device-ios .app-layout #add-table .page-content,.device-ios .app-layout #add-table.page-content,.device-ios .app-layout .dataview .page-content,.device-ios .app-layout .dataview.page-content{background-color:var(--background-tertiary)}.device-ios .app-layout input[type=number]:-moz-placeholder,.device-ios .app-layout input[type=number]:-ms-input-placeholder,.device-ios .app-layout input[type=number]::-moz-placeholder,.device-ios .app-layout input[type=number]::-webkit-input-placeholder,.device-ios .app-layout input[type=number]::placeholder{color:#40865c}.device-ios .app-layout .regional-settings .item-title-row{align-items:center;display:flex;justify-content:flex-start}.device-ios .app-layout .regional-settings .item-title-row .item-title{margin-left:20px;white-space:normal}.device-ios .app-layout .navbar .searchbar{background:var(--f7-navbar-bg-color)}.device-ios .app-layout .navbar .searchbar-input-wrap{height:28px;margin-right:10px;position:relative}.device-ios .app-layout .navbar .buttons-row-replace a{color:var(--brand-slide)}.device-ios .app-layout .searchbar input{appearance:none;background-color:var(--background-button);border:none;border-radius:5px;box-sizing:border-box;color:var(--text-normal);display:block;font-family:inherit;font-size:14px;font-weight:400;height:100%;padding:0 36px 0 28px;width:100%}.device-ios .app-layout .searchbar input::placeholder{color:var(--text-tertiary)}.device-ios .app-layout .searchbar .number-search-results{color:var(--text-tertiary);font-size:13px;font-weight:400;line-height:18px;position:absolute;right:26px;top:4.5px;z-index:100}.device-ios .app-layout .searchbar-inner__left{justify-content:center;margin-right:10px}.device-ios .app-layout .searchbar-inner__right .buttons-row a.next{margin-left:15px}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__right{width:28%}@media (max-width:550px){.device-ios .app-layout .navbar .searchbar-input-wrap{margin-right:0}.device-ios .app-layout .searchbar-expandable.searchbar-enabled{top:0}.device-ios .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__center{flex-direction:column}.device-ios .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__right{flex-direction:column-reverse;margin-left:10px}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace{height:88px}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner{height:100%}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__center .searchbar-input-wrap{margin:8px 0}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__right{height:100%;justify-content:space-between;width:auto}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__right .buttons-row-replace{height:50%}}.device-ios .app-layout .actions-button{--f7-actions-button-border-color:var(--background-menu-divider);background:var(--background-secondary)}.device-ios .app-layout .actions-button-text{color:var(--text-normal);font-size:20px;text-overflow:ellipsis;white-space:normal}.device-ios .app-layout input.modal-text-input{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;background:var(--background-primary);border:1px solid var(--text-tertiary);border-radius:0;box-shadow:0 0 0 transparent;box-sizing:border-box;display:block;font-family:inherit;font-size:14px;height:26px;margin:15px 0 0;padding:0 5px;width:100%}.device-ios .app-layout .font-item .item-content{padding-left:0}.device-ios .app-layout .edit-comment-popup .navbar .title{line-height:normal}.device-ios .app-layout .version-history__title{color:var(--text-secondary);font-size:13px;font-style:normal;font-weight:400;line-height:18px;margin-bottom:4px;margin-top:16px}.device-ios .app-layout .version-history__btn{background:transparent;border:0;color:var(--brand-slide);font-size:15px;font-style:normal;font-weight:600;letter-spacing:-.24px;line-height:20px;margin-top:22px;outline:none;padding:0;text-transform:uppercase;width:auto}.device-ios .app-layout .version-history__list ul{background:var(--background-primary)}.device-ios .app-layout .version-history__list .item-title{color:var(--text-normal);font-size:13px;font-weight:600;letter-spacing:-.08px;line-height:18px}.device-ios .app-layout .version-history__list .item-inner,.device-ios .app-layout .version-history__list .item-media{padding-bottom:10px;padding-top:10px}.device-ios .app-layout .version-history__list .item-link .item-title-row:before{display:none}.device-ios .app-layout .version-history__list .item-subtitle{color:var(--text-secondary);font-size:11px;font-style:normal;font-weight:400;letter-spacing:.06px;line-height:13px;margin-top:3px}.device-ios .app-layout .version-history__item_active{background-color:var(--canvas-ruler-margins-background)}.device-ios .app-layout .btn-close-history{color:var(--brand-slide);font-size:17px;font-style:normal;font-weight:400;letter-spacing:-.41px;line-height:22px;margin-left:10px}.device-ios .app-layout .beta-badge{background-color:#FF9F0A;margin-left:10px}.device-android .app-layout{--f7-navbar-shadow-image:none;--f7-theme-color:var(--brand-slide);--f7-navbar-bg-color:var(--toolbar-background);--f7-navbar-link-color:var(--fill-white);--f7-navbar-text-color:var(--fill-white);--f7-navbar-height:56px;--f7-list-bg-color:var(--background-primary);--f7-subnavbar-bg-color:var(--toolbar-background);--f7-subnavbar-link-color:var(--toolbar-icons);--f7-subnavbar-text-color:var(--fill-white);--f7-subnavbar-height:56px;--f7-radio-active-color:var(--brand-slide);--f7-range-bar-active-bg-color:var(--brand-slide);--f7-range-knob-color:var(--brand-slide);--f7-range-knob-size:16px;--f7-list-item-after-text-color:var(--text-normal);--f7-link-highlight-color:transparent;--f7-link-touch-ripple-color:rgba(255,255,255,0.1);--f7-actions-bg-color:var(--background-secondary);--f7-actions-button-border-color:var(--background-menu-divider);--f7-popover-bg-color:var(--background-secondary);--f7-dialog-bg-color:var(--background-secondary);--f7-dialog-text-color:var(--text-secondary);--f7-dialog-title-text-color:var(--text-normal);--f7-dialog-button-text-color:var(--brand-slide);--f7-picker-item-text-color:rgba(var(--text-normal),0.45);--f7-picker-item-selected-text-color:var(--text-normal);--f7-input-bg-color:var(--background-primary);--f7-input-placeholder-color:var(--text-secondary);--f7-input-text-color:var(--text-normal);--f7-block-text-color:var(--text-secondary);--f7-dialog-border-radius:0;--f7-sheet-border-radius:0;--f7-popover-border-radius:4px;--f7-actions-border-radius:0;--f7-box-shadow:0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);--f7-popover-box-shadow:var(--f7-box-shadow);--f7-toggle-active-bg-color:var(--brand-slide);--f7-toggle-active-border-color:var(--brand-slide);--f7-navbar-title-margin-left:20px;--f7-navbar-title-margin-right:20px;--f7-input-focused-border-color:var(--brand-slide);--f7-label-focused-text-color:var(--brand-slide)}.device-android .app-layout .button{--f7-touch-ripple-color:transparent}.device-android .app-layout .segmented .button{--f7-touch-ripple-color:var(--f7-list-link-pressed-bg-color)}.device-android .app-layout .navbar{--f7-touch-ripple-color:rgba(255,255,255,0.1)}.device-android .app-layout .navbar .sheet-close{display:flex;height:56px;justify-content:center;width:56px}.device-android .app-layout .navbar-inner{background:var(--f7-navbar-bg-color);background-color:var(--f7-navbar-bg-color,var(--f7-bars-bg-color));background-image:var(--f7-navbar-bg-image,var(--f7-bars-bg-image))}.device-android .app-layout .page.page-with-subnavbar.page-with-logo .page-content{--f7-page-navbar-offset:var(--f7-navbar-height)}.device-android .app-layout .page{--f7-text-color:var(--text-normal);--f7-list-item-title-text-color:var(--text-normal);--f7-list-item-text-text-color:var(--text-normal);--f7-list-item-subtitle-text-color:var(--text-secondary);--f7-block-title-text-color:var(--text-secondary);--f7-label-text-color:var(--text-normal);--f7-page-bg-color:var(--background-tertiary);--f7-list-item-border-color:var(--background-menu-divider);--f7-list-chevron-icon-color:var(--text-tertiary);--f7-actions-button-text-color:var(--text-normal);--f7-subnavbar-border-color:var(--background-menu-divider);--f7-list-border-color:var(--background-menu-divider)}.device-android .app-layout .add-popup .view .add-image ul:after,.device-android .app-layout .add-popup .view .inputs-list ul:after{display:none}.device-android .app-layout .coauth__sheet{max-height:65%}.device-android .app-layout .segmented .decrement,.device-android .app-layout .segmented .increment{border:none;border-radius:0;display:flex;height:32px;margin-left:0;min-width:40px}.device-android .app-layout .segmented .decrement i.icon-expand-down,.device-android .app-layout .segmented .increment i.icon-expand-down{background:var(--brand-slide)}.device-android .app-layout .segmented label{color:var(--text-normal);line-height:32px;margin:0 5px}.device-android .app-layout .button{--f7-button-text-color:var(--brand-slide);appearance:none;background:0 0;border-radius:2px;box-sizing:border-box;color:var(--brand-slide);cursor:pointer;display:block;font-family:inherit;font-size:14px;height:36px;line-height:36px;margin:0;min-width:64px;outline:0;overflow:hidden;padding:0 8px;position:relative;text-align:center;text-overflow:ellipsis;text-transform:uppercase;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition-duration:.3s;transition-duration:.3s;white-space:nowrap}.device-android .app-layout .button-fill{background-color:initial;color:var(--brand-text-on-brand)}.device-android .app-layout .button-raised{box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)}.device-android .app-layout .button-red{background-color:var(--text-error);color:var(--brand-text-on-brand)}.device-android .app-layout .buttons-list ul{background-color:var(--background-tertiary)}.device-android .app-layout .buttons-list ul:after,.device-android .app-layout .buttons-list ul:before{display:none}.device-android .app-layout .buttons-list ul li{border-radius:2px;color:var(--fill-white);font-size:14px;height:36px;margin:20px 16px;min-height:36px;text-transform:uppercase}.device-android .app-layout .table-presets .button{min-width:0}.device-android .app-layout .button-fill .list-button{background-color:var(--brand-slide);border-radius:2px;color:var(--brand-text-on-brand);font-size:14px;font-weight:500;height:36px;line-height:36px;margin:0;text-align:center;text-transform:uppercase}.device-android .app-layout .button-raised .list-button{box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)}.device-android .app-layout .button-red .list-button{background-color:var(--text-error)}.device-android .app-layout .tab-buttons{display:flex;height:100%;justify-content:space-between;position:relative;width:100%}.device-android .app-layout .tab-buttons .tab-link{align-items:center;box-sizing:border-box;color:rgba(255,255,255,.7);font-size:14px;font-weight:500;height:100%;justify-content:center;padding-left:0;padding-right:0;text-transform:uppercase}.device-android .app-layout .tab-buttons .tab-link i.icon{opacity:.5}.device-android .app-layout .tab-buttons .tab-link.tab-link-active{color:var(--fill-white)}.device-android .app-layout .tab-buttons .tab-link.tab-link-active i.icon{background-color:var(--fill-white);opacity:1}.device-android .app-layout .tab-buttons .tab-link-highlight{--f7-tabbar-link-active-border-color:var(--toolbar-icons);bottom:0;height:3px;left:0;position:absolute}.device-android .app-layout .list.inputs-list{margin:0}.device-android .app-layout .list.inputs-list .item-input.item-content{padding-left:0}.device-android .app-layout .list.inputs-list .item-input .item-inner,.device-android .app-layout .list.inputs-list .item-link .item-inner{display:block}.device-android .app-layout .list.inputs-list .item-input .item-inner .item-label,.device-android .app-layout .list.inputs-list .item-input .item-inner .item-title,.device-android .app-layout .list.inputs-list .item-link .item-inner .item-label,.device-android .app-layout .list.inputs-list .item-link .item-inner .item-title{font-size:12px;width:100%}.device-android .app-layout .list.inputs-list .item-input .item-inner .item-input-wrap,.device-android .app-layout .list.inputs-list .item-link .item-inner .item-input-wrap{margin-left:0}.device-android .app-layout .list .buttons{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;min-height:48px;width:100%}.device-android .app-layout .list .buttons .item-content{width:100%}.device-android .app-layout .list .buttons .item-content .item-inner{padding-bottom:0;padding-top:0}.device-android .app-layout .list .buttons .item-content .item-inner .row{--f7-cols-per-row:1;align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.device-android .app-layout .list .buttons .item-content .item-inner .row .button{align-items:center;display:flex;flex:1;font-size:17px;justify-content:center;margin-left:5px}.device-android .app-layout .list .buttons .item-content .item-inner .row .button:first-child{margin-left:0}.device-android .app-layout .list .item-content .color-preview{background-color:var(--fill-white);border-radius:4px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);height:30px;margin-top:-3px;width:30px}.device-android .app-layout .list .item-content .color-preview.auto{background-color:#000000}.device-android .app-layout .item-input:not(.item-input-outline) .item-content:before,.device-android .app-layout .item-input:not(.item-input-outline).item-content:before{background:transparent}.device-android .app-layout .links-list a:after,.device-android .app-layout .list .item-inner:after,.device-android .app-layout .simple-list li:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.device-android .app-layout .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,.device-android .app-layout .list:not(.inset):not(.inset-md):not(.menu-list) .media-item>.item-link,.device-android .app-layout .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,.device-android .app-layout .media-list:not(.inset):not(.inset-md):not(.menu-list) li>.item-link{border-radius:0}.device-android .app-layout #color-picker .right-block .button-round{background-color:var(--brand-slide)}.device-android .app-layout .regional-settings .list .item-inner{margin-left:16px}.device-android .app-layout .regional-settings .list .item-title-row{align-items:center;display:flex;flex-direction:row-reverse;justify-content:space-between;width:100%}.device-android .app-layout .regional-settings .list .item-title-row .item-title{white-space:normal}.device-android .app-layout .searchbar-inner__center{flex-wrap:wrap}.device-android .app-layout .navbar .searchbar-input-wrap{height:32px;margin:4px 0}.device-android .app-layout .navbar .navbar-inner{overflow:initial}.device-android .app-layout .navbar .left{margin:0}.device-android .app-layout .navbar .title{margin-left:var(--f7-navbar-title-margin-left);margin-right:var(--f7-navbar-title-margin-left)}.device-android .app-layout .subnavbar .title{font-size:14px;font-weight:400}.device-android .app-layout .searchbar input{appearance:none;background-color:initial;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='%23fff'%3E%3Cpath d='M15.5 14h-.79l-.28-.27A6.471 6.471 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/%3E%3Cpath fill='none' d='M0 0h24v24H0z'/%3E%3C/svg%3E");background-position:0;background-repeat:no-repeat;background-size:24px 24px;border:none;border-bottom:1px solid var(--fill-white);border-radius:0;box-sizing:border-box;color:var(--fill-white);display:block;font-family:inherit;font-size:16px;font-weight:400;height:100%;opacity:1;padding:0 40px 0 24px;transition-duration:.3s;width:100%}.device-android .app-layout .searchbar input::placeholder{color:var(--fill-white)}.device-android .app-layout .searchbar .input-clear-button{height:18px;margin:0;top:7px;width:18px}.device-android .app-layout .searchbar .input-clear-button:after{color:var(--fill-white);font-size:19px;line-height:19px}.device-android .app-layout .searchbar .number-search-results{font-size:16px;font-weight:400;line-height:24px;position:absolute;right:26px;top:4px}.device-android .app-layout .searchbar-icon:after{color:var(--fill-white);font-size:19px}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled{top:0}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled .searchbar-inner{height:100%;padding:0}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__center{flex-direction:column}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__right{flex-direction:column-reverse}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled.replace{height:96px}.device-android .app-layout .navbar a.link{padding:0 16px}.device-android .app-layout .navbar a.link.searchbar-enable i.icon-search{background-color:var(--toolbar-icons)}.device-android .app-layout .navbar a.icon-only{height:56px;width:auto}.device-android .app-layout .navbar .buttons-row-replace a{color:var(--fill-white);padding:0}.device-android .app-layout .navbar .searchbar .buttons-row{align-self:flex-start}@media (max-width:550px){.device-android .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__left{margin-right:33px}}.device-android .app-layout .actions-button-text{color:var(--text-normal);cursor:pointer;font-size:16px;line-height:48px}@media (min-width:496px){.device-android .app-layout .actions-modal{left:auto;margin-left:0;width:100%}}.device-android .app-layout input.modal-text-input{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;background:#fff;border:none;box-shadow:none;box-sizing:border-box;display:block;font-family:inherit;font-size:16px;height:36px;margin:15px 0 0;padding:0;-webkit-transition-duration:.2s;transition-duration:.2s;width:100%}.device-android .app-layout .input-field .inputs-list{margin:15px 0 0}.device-android .app-layout .input-field .inputs-list ul{background:none}.device-android .app-layout .input-field .inputs-list ul:after,.device-android .app-layout .input-field .inputs-list ul:before{display:none}.device-android .app-layout .input-field .inputs-list .item-inner,.device-android .app-layout .input-field .inputs-list .item-input{margin:0;padding:0}.device-android .app-layout .font-item .item-radio:not(.item-radio-icon-end)>.icon-radio{margin-right:0}.device-android .app-layout .navbar-dropdown-list .navbar-inner,.device-android .app-layout .navbar-link-settings .navbar-inner{background:var(--background-primary)}.device-android .app-layout .navbar-dropdown-list .navbar-inner .icon-back,.device-android .app-layout .navbar-dropdown-list .title,.device-android .app-layout .navbar-dropdown-list a,.device-android .app-layout .navbar-link-settings .navbar-inner .icon-back,.device-android .app-layout .navbar-link-settings .title,.device-android .app-layout .navbar-link-settings a{color:var(--text-normal)}.device-android .app-layout .popover{box-shadow:var(--f7-box-shadow)}.device-android .app-layout .popover.popover__titled .popover-arrow:after{background:var(--toolbar-background)}.device-android .app-layout .popover.document-menu .popover-arrow:after,.device-android .app-layout .popover.popover__functions .popover-arrow:after{background:var(--background-secondary)}.device-android .app-layout .page-version-history{--f7-page-bg-color:var(--background-primary)}.device-android .app-layout .version-history__title{color:var(--brand-slide);font-size:14px;font-style:normal;font-weight:500;line-height:20px;margin-bottom:4px;margin-top:16px}.device-android .app-layout .version-history__btn{background:var(--background-primary);border:0;border-radius:6px;box-shadow:0 .25px 1px rgba(0,0,0,.039),0 .85px 3px rgba(0,0,0,.19);color:var(--brand-slide);font-size:16px;font-style:normal;font-weight:500;letter-spacing:.25px;line-height:20px;margin-top:10px;padding:6px 20px;width:auto}.device-android .app-layout .version-history__list ul:after,.device-android .app-layout .version-history__list ul:before{display:none}.device-android .app-layout .version-history__list .item-title{color:var(--text-normal);font-size:16px;font-style:normal;font-weight:400;letter-spacing:.15px;line-height:24px}.device-android .app-layout .version-history__list .item-inner{padding-bottom:10px;padding-top:10px}.device-android .app-layout .version-history__list .item-inner:before{background-color:var(--background-menu-divider);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.device-android .app-layout .version-history__list .item-media{max-width:40px;min-width:40px;padding-bottom:12px;padding-top:12px}.device-android .app-layout .version-history__list .item-link .item-title-row:before{display:none}.device-android .app-layout .version-history__list .item-subtitle{color:var(--text-secondary);font-size:12px;font-style:normal;font-weight:400;letter-spacing:.5px;line-height:16px}.device-android .app-layout .version-history__item_active{background-color:var(--background-tertiary)}.device-android .app-layout .btn-close-history{color:var(--toolbar-icons);font-size:16px;font-style:normal;font-weight:400;letter-spacing:.15px;line-height:24px;margin-left:16px}.device-android .app-layout .beta-badge{background-color:var(--brand-secondary);margin-left:8px}.device-android .app-layout .dropdown-list .icon-radio{display:none}.device-android .app-layout .dropdown-list input[type=radio]:checked+.icon-radio{display:inline-block}.device-ios .theme-type-dark i.icon.icon-logo{background:url(../../../presentationeditor/mobile/resources/img/header/logo-android.svg) no-repeat 50%;background-size:contain}.device-ios i.icon.icon_mask{background-color:white}.device-ios i.icon.icon-logo{background:url(../../../presentationeditor/mobile/resources/img/header/logo-ios.svg) no-repeat 50%;background-size:contain;height:20px;width:100px}.device-ios i.icon.icon-prev{background-color:var(--brand-slide);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='m16 20.5-1 1L4.5 11 15 .5l1 1L6.6 11l9.4 9.5z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-prev:after{display:none}.device-ios i.icon.icon-next{background-color:var(--brand-slide);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M15.5 11 6 1.5 7.1.4 17.5 11 7.1 21.5l-1.1-1 9.5-9.5z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-next:after{display:none}.device-ios i.icon.icon-edit{background-color:var(--brand-slide);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M0 20h22v1H0v-1zM19.3 5.3 6.1 18.4l-1.5-1.5L17.8 3.8l-.7-.7L3.5 16.7 3 20l3.3-.5L19.9 5.9zM20.5 5.3 22 3.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5 2.8 2.8z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-show-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='25'%3E%3Cpath fill-rule='evenodd' d='M5.625 12.5A8.488 8.488 0 0 0 12.5 16a8.487 8.487 0 0 0 6.875-3.5A8.487 8.487 0 0 0 12.5 9a8.488 8.488 0 0 0-6.875 3.5Zm14.955 0A9.494 9.494 0 0 0 12.5 8a9.494 9.494 0 0 0-8.08 4.5A9.494 9.494 0 0 0 12.5 17a9.494 9.494 0 0 0 8.08-4.5Z' clip-rule='evenodd'/%3E%3Cpath d='M12.5 10a2.5 2.5 0 0 1 2.502 2.5 2.502 2.502 0 0 1-2.502 2.511 2.5 2.5 0 0 1-2.489-2.511 2.499 2.499 0 0 1 2.49-2.5Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-hide-password,.device-ios i.icon.icon-show-password{background-color:var(--text-secondary);height:25px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:25px}.device-ios i.icon.icon-hide-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='25'%3E%3Cpath fill-rule='evenodd' d='M11.356 15.765a8.487 8.487 0 0 0 8.019-3.424c-.751-1.03-1.209-1.584-2.339-2.19l.723-.74c1.375.787 1.987 1.587 2.82 2.93a9.494 9.494 0 0 1-8.079 4.5 9.534 9.534 0 0 1-1.99-.208l.846-.868Zm-3.228-1.133a8.546 8.546 0 0 1-2.503-2.29 8.488 8.488 0 0 1 6.875-3.5c.598 0 .719-.018 1.297.069l.924-.849c-.83-.238-1.303-.22-2.206-.22H12.5a9.494 9.494 0 0 0-8.08 4.5 9.549 9.549 0 0 0 2.962 3.004l.746-.714Z' clip-rule='evenodd'/%3E%3Cpath d='M16.031 9.671a20.396 20.396 0 0 0-1.01-.397l-5.863 5.885a8.45 8.45 0 0 0 1.033.365l5.84-5.853Z'/%3E%3Cpath d='M16.79 8.91c-.311-.146-.65-.298-.974-.434l-.794.798c.336.122.687.26 1.01.397l.758-.76Z'/%3E%3Cpath d='m18.345 7.353-.72-.692-1.809 1.815c.324.136.663.288.974.435l1.555-1.558ZM9.395 16.322a9.443 9.443 0 0 1-.99-.406l-1.728 1.733.705.69 2.013-2.017Z'/%3E%3Cpath d='M10.191 15.524a8.45 8.45 0 0 1-1.033-.365l-.754.757c.32.153.651.289.99.406l.797-.798Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-return{background-color:var(--brand-slide);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' d='m11.5 7.793 2.854 2.853-.707.708L12 9.707V16h2.5v1H11V9.707l-1.646 1.647-.708-.708L11.5 7.793Z'/%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M1 4a1 1 0 0 1 1-1h7.75l2 2H22a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4Zm1 16V4h7.25l2 2H22v14H2Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon_mask{background-color:var(--text-normal)}.device-android i.icon.icon-logo{background:url(../../../presentationeditor/mobile/resources/img/header/logo-android.svg) no-repeat 50%;background-size:contain;height:20px;width:100px}.device-android i.icon.icon-prev{background-color:var(--brand-slide);height:20px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M5.1 10.9 13.9 2 16 4.1l-6.8 7 6.8 6.8-2.1 2.1-8.8-8.8-.1-.1z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:20px}.device-android i.icon.icon-prev:after{display:none}.device-android i.icon.icon-next{background-color:var(--brand-slide);height:20px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M16.9 10.9 8.1 2 6 4.1l6.8 7L6 17.9 8.1 20l8.8-8.8.1-.1z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:20px}.device-android i.icon.icon-next:after{display:none}.device-android i.icon.icon-show-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M9.894 9.89C10.486 9.298 11.189 9 12 9c.811 0 1.514.297 2.106.89.593.594.89 1.297.89 2.11s-.297 1.516-.89 2.11c-.592.593-1.295.89-2.106.89-.811 0-1.514-.297-2.106-.89-.593-.594-.89-1.297-.89-2.11 0-.812.297-1.516.89-2.11Zm-1.451 5.672c.998.97 2.184 1.454 3.557 1.454 1.373 0 2.543-.485 3.51-1.453 1-1 1.499-2.188 1.499-3.563s-.5-2.547-1.498-3.516c-.968-1-2.138-1.5-3.511-1.5-1.373 0-2.559.5-3.557 1.5-.968.97-1.452 2.141-1.452 3.516s.484 2.563 1.452 3.563Zm-3.137-9C7.304 5.188 9.535 4.5 12 4.5s4.697.688 6.694 2.063C20.69 7.938 22.126 9.75 23 12c-.874 2.25-2.31 4.063-4.306 5.438C16.697 18.813 14.465 19.5 12 19.5s-4.696-.687-6.694-2.062C3.31 16.063 1.874 14.25 1 12c.874-2.25 2.31-4.062 4.306-5.437Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-hide-password,.device-android i.icon.icon-show-password{background-color:var(--text-secondary);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-hide-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M11.883 9.005h.14c.813 0 1.517.297 2.111.891.595.595.892 1.298.892 2.111v.188l-3.143-3.19Zm-4.316.797c-.375.751-.563 1.486-.563 2.205 0 1.377.485 2.565 1.454 3.566 1.001.97 2.19 1.454 3.566 1.454.719 0 1.454-.187 2.204-.563l-1.548-1.548c-.25.063-.469.094-.656.094-.814 0-1.517-.297-2.111-.892-.595-.594-.892-1.297-.892-2.11 0-.188.032-.407.094-.657L7.567 9.802ZM2.032 4.267 3.299 3l17.73 17.733L19.764 22c-.156-.156-.656-.641-1.5-1.454l-1.877-1.877c-1.345.563-2.799.845-4.362.845-2.471 0-4.707-.688-6.708-2.065-2.002-1.376-3.44-3.19-4.316-5.442.782-1.939 2.033-3.596 3.753-4.972L3.158 5.44a139.128 139.128 0 0 0-1.126-1.173Zm9.992 2.72c-.626 0-1.236.126-1.83.376L8.036 5.205c1.22-.47 2.549-.704 3.988-.704 2.47 0 4.69.688 6.66 2.064 2.002 1.377 3.44 3.19 4.316 5.442a12.231 12.231 0 0 1-3.424 4.739l-2.909-2.909c.25-.594.376-1.204.376-1.83 0-1.376-.5-2.549-1.501-3.518-.97-1-2.143-1.501-3.518-1.501Z'/%3E%3C/svg%3E")}.device-android .dropdown-list i.icon.icon-radio{background-color:var(--brand-slide);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='m9 16-5-5-1 1 6 6L20 7l-1-1L9 16Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-collaboration{background-color:var(--toolbar-icons);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill-rule='evenodd' clip-path='url(%23a)' clip-rule='evenodd'%3E%3Cpath d='M7.5 14c-2.823 0-4.989 1.407-6.099 3.257-.56.935-.4 1.305-.299 1.433.154.194.508.31.87.31H7.5v1H1.972c-.47 0-1.216-.134-1.655-.69-.49-.622-.412-1.502.227-2.567C1.834 14.593 4.324 13 7.5 13v1Zm0-1c3.177 0 5.639 1.593 6.929 3.743.639 1.065.716 1.945.226 2.567-.438.556-1.184.69-1.655.69H7.5v-1H13c.363 0 .717-.116.87-.31.101-.128.262-.498-.299-1.433C12.461 15.407 10.323 14 7.5 14v-1Z'/%3E%3Cpath d='M15 20h7c.471 0 1.217-.134 1.656-.69.49-.622.413-1.502-.226-2.567C22.14 14.593 19.677 13 16.5 13c-1.293 0-2.322.164-3.354.623.364.28.64.494.997.732A7.774 7.774 0 0 1 16.502 14c2.823 0 4.96 1.407 6.071 3.257.561.935.4 1.305.299 1.433-.153.194-.508.31-.87.31H16.5a1.466 1.466 0 0 1-.343.478c-.444.415-.738.522-1.157.522ZM7.5 11C8.76 11 10 9.786 10 8S8.76 5 7.5 5 5 6.214 5 8s1.24 3 2.5 3Zm0 1c1.933 0 3.5-1.79 3.5-4S9.433 4 7.5 4 4 5.79 4 8s1.567 4 3.5 4ZM17 11c.965 0 2-.97 2-2.5S17.965 6 17 6c-.965 0-2 .97-2 2.5s1.035 2.5 2 2.5Zm0 1c1.657 0 3-1.567 3-3.5S18.657 5 17 5s-3 1.567-3 3.5 1.343 3.5 3 3.5Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-back{color:var(--toolbar-icons)}.device-android .navbar i.icon.icon-edit{background-color:var(--toolbar-icons);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M0 20h22v1H0v-1zM17.1 3.1 3.5 16.7 3 20l3.3-.5L19.9 5.9zM20.5 5.3 22 3.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5 2.8 2.8z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-close{background-color:var(--text-normal);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M18.984 6.422 13.406 12l5.578 5.578-1.406 1.406L12 13.406l-5.578 5.578-1.406-1.406L10.594 12 5.016 6.422l1.406-1.406L12 10.594l5.578-5.578 1.406 1.406Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-done-disabled{background-color:var(--text-tertiary)}.device-android .navbar i.icon.icon-done,.device-android .navbar i.icon.icon-done-disabled{height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='m9 16.219 10.594-10.64L21 6.983l-12 12-5.578-5.578L4.782 12 9 16.219Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-done{background-color:var(--brand-slide)}.device-android .navbar i.icon.icon-search{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M16 16.708a9 9 0 1 1 .707-.707l5.647 5.645-.708.708-5.645-5.646ZM18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-search,.device-android .navbar i.icon.icon-version-history{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-version-history{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M12 6h2v6.845l4.196 2.423-1 1.732L12 14V6Z'/%3E%3Cpath d='M22 12a9 9 0 0 1-15.364 6.364l-.708.707A9.969 9.969 0 0 0 13 22c5.523 0 10-4.477 10-10S18.523 2 13 2C7.477 2 3 6.477 3 12h1a9 9 0 0 1 18 0Z'/%3E%3Cpath d='m1.5 10.5 2 2 2-2'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-return{background-color:var(--toolbar-icons);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='m11.5 7.793 2.854 2.853-.707.708L12 9.707V16h2.5v1H11V9.707l-1.646 1.647-.708-.708L11.5 7.793Z'/%3E%3Cpath fill-rule='evenodd' d='M1 4a1 1 0 0 1 1-1h7.75l2 2H22a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4Zm1 16V4h7.25l2 2H22v14H2Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-paste{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M5 2H0v18h9v4h15V7h-5V2h-5v1h4v4H9v12H1V3h4V2Zm5 6h13v15H10V8Z' clip-rule='evenodd'/%3E%3Cpath d='M5 0h9v5H5V0Z'/%3E%3Cpath fill-rule='evenodd' d='M21 12h-9v-1h9v1ZM21 16h-9v-1h9v1ZM21 20h-9v-1h9v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-copy,i.icon.icon-paste{background-color:var(--text-normal);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-copy{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M1 1h14v6h1V0H0v17h8v-1H1V1Z'/%3E%3Cpath fill-rule='evenodd' d='M23 8H9v15h14V8ZM8 7v17h16V7H8ZM13 5H3V4h10v1ZM8 9H3V8h5v1ZM8 13H3v-1h5v1Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='M21 12H11v-1h10v1ZM21 16H11v-1h10v1ZM21 20H11v-1h10v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-cut{background-color:var(--text-normal);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill-rule='evenodd' d='M3.224 22.27c1.291.857 3.303.448 4.435-1.257 1.132-1.706.727-3.719-.564-4.575-1.291-.857-3.303-.448-4.435 1.257-1.132 1.706-.727 3.719.564 4.575Zm-.553.834c1.841 1.221 4.447.532 5.821-1.538 1.375-2.071.996-4.74-.844-5.962-1.841-1.221-4.447-.533-5.821 1.538-1.375 2.071-.996 4.74.844 5.962ZM20.916 22.27c-1.291.857-3.303.448-4.435-1.257-1.132-1.706-.727-3.719.564-4.575 1.291-.857 3.303-.448 4.435 1.257 1.132 1.706.727 3.719-.564 4.575Zm.553.834c-1.841 1.221-4.447.532-5.821-1.538-1.374-2.071-.996-4.74.844-5.962 1.841-1.221 4.447-.533 5.822 1.538 1.374 2.071.995 4.74-.845 5.962Z' clip-rule='evenodd'/%3E%3Cpath d='m16.492 15.604-2.588-3.13L19.955.676a.436.436 0 0 0-.228-.595c-.285-.092-.628 0-.742.183L12.023 11.42 5.176.264c-.115-.229-.457-.32-.742-.229-.286.092-.4.366-.286.595L10.2 12.428l-2.552 3.176L9.229 18l2.794-4.52L14.911 18l1.581-2.396Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-next:after,i.icon.icon-prev:after{content:none}i.icon.icon-collaboration{background-color:var(--brand-slide);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill-rule='evenodd' clip-path='url(%23a)' clip-rule='evenodd'%3E%3Cpath d='M7.5 14c-2.823 0-4.989 1.407-6.099 3.257-.56.935-.4 1.305-.299 1.433.154.194.508.31.87.31H7.5v1H1.972c-.47 0-1.216-.134-1.655-.69-.49-.622-.412-1.502.227-2.567C1.834 14.593 4.324 13 7.5 13v1Zm0-1c3.177 0 5.639 1.593 6.929 3.743.639 1.065.716 1.945.226 2.567-.438.556-1.184.69-1.655.69H7.5v-1H13c.363 0 .717-.116.87-.31.101-.128.262-.498-.299-1.433C12.461 15.407 10.323 14 7.5 14v-1Z'/%3E%3Cpath d='M15 20h7c.471 0 1.217-.134 1.656-.69.49-.622.413-1.502-.226-2.567C22.14 14.593 19.677 13 16.5 13c-1.293 0-2.322.164-3.354.623.364.28.64.494.997.732A7.774 7.774 0 0 1 16.502 14c2.823 0 4.96 1.407 6.071 3.257.561.935.4 1.305.299 1.433-.153.194-.508.31-.87.31H16.5a1.466 1.466 0 0 1-.343.478c-.444.415-.738.522-1.157.522ZM7.5 11C8.76 11 10 9.786 10 8S8.76 5 7.5 5 5 6.214 5 8s1.24 3 2.5 3Zm0 1c1.933 0 3.5-1.79 3.5-4S9.433 4 7.5 4 4 5.79 4 8s1.567 4 3.5 4ZM17 11c.965 0 2-.97 2-2.5S17.965 6 17 6c-.965 0-2 .97-2 2.5s1.035 2.5 2 2.5Zm0 1c1.657 0 3-1.567 3-3.5S18.657 5 17 5s-3 1.567-3 3.5 1.343 3.5 3 3.5Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-cancellation{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cmask id='a' width='20' height='20' x='2' y='2' maskUnits='userSpaceOnUse' style='mask-type:alpha'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='%23c4c4c4' stroke='var(--brand-slide)'/%3E%3C/mask%3E%3Cg stroke='var(--brand-slide)' mask='url(%23a)'%3E%3Ccircle cx='12' cy='12' r='9.5' transform='rotate(-90 12 12)'/%3E%3Cpath d='M5.091 19.202 19.192 5.101'/%3E%3C/g%3E%3C/svg%3E");height:24px;width:24px}i.icon.icon-remove-style{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23FF3B30' fill-rule='evenodd' d='M9.333 2a1.06 1.06 0 0 0-1.066 1.053V4H4.533A.53.53 0 0 0 4 4.526c0 .291.239.527.533.527h.534l1 15.894A1.06 1.06 0 0 0 7.133 22h9.734a1.06 1.06 0 0 0 1.066-1.053L19 5h.467c.294 0 .533-.21.533-.5 0-.29-.239-.5-.533-.5h-3.734v-.947A1.06 1.06 0 0 0 14.667 2H9.333Zm5.334 2v-.947H9.333V4h5.334ZM18 5H6l.941 15.062A1 1 0 0 0 7.94 21h8.122a1 1 0 0 0 .998-.938L18 5Z' clip-rule='evenodd'/%3E%3Cpath fill='%23FF3B30' d='M8 7.002h1L9.5 19h-1L8 7.002ZM11.5 7h1v12h-1V7ZM15 7.002 16 7l-.5 12h-1L15 7.002Z'/%3E%3C/svg%3E");height:24px;width:24px}i.icon.icon-image{background-color:var(--brand-slide);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M9 9a2 2 0 1 1-4 0 2 2 0 0 1 4 0ZM8 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='M2 4v16h20V4H2Zm19 1H3v11.293l3.5-3.5 2 2 6-6 6.5 6.5V5ZM3 19v-1.293l3.5-3.5 2 2 6-6 6.5 6.5V19H3Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-format-pdf{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23DB4437' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H4Zm1 8v6h1v-2h2c.5 0 1-.672 1-1.5v-1C9 9.5 8.5 9 7.679 9H5Zm1 1h1.5c.296 0 .5.224.5.5v1c0 .276-.026.5-.321.5H6v-2Zm10 5h1v-2.5h2.5v-1H17V10h3V9h-4v6Zm-5.5-6H13c1 0 1.5.5 1.5 1.5v3c0 1-.536 1.5-1.5 1.5h-2.5V9Zm2.5 1h-1.5v4H13c.5 0 .5-.5.5-.5v-3s0-.5-.5-.5Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-pdfa{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23A8A8A8' fill-rule='evenodd' d='M18 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm.275 2.815h.326l2.618 6.37H19.82l-.524-1.417h-2.602l-.52 1.418H14.78l2.604-6.371H18.275Zm-1.23 4.003h1.902l-.954-2.582-.949 2.582Z' clip-rule='evenodd'/%3E%3Cpath fill='%23DB4437' fill-rule='evenodd' d='M1 4a3 3 0 0 1 3-3h16a3 3 0 0 1 3 3v9.101a6.981 6.981 0 0 0-4.036-2.035V11h-2.678V9H19.5V8h-4.286v3.576a6.983 6.983 0 0 0-1.071.582V9.5c0-.828-.72-1.5-1.607-1.5H9.857v6h2.398A6.968 6.968 0 0 0 11 18c0 1.959.805 3.73 2.101 5H4a3 3 0 0 1-3-3V4Zm3.5 4v6h1.071v-2H7.18c.887 0 1.607-.672 1.607-1.5v-1c0-.828-.72-1.5-1.607-1.5H4.5Zm1.071 1H7.18c.295 0 .535.224.535.5v1c0 .276-.24.5-.535.5H5.57V9Zm6.965 0h-1.607v4h1.607c.296 0 .535-.224.535-.5v-3c0-.276-.24-.5-.535-.5Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-numbers-1{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.605 18.998v-6.725h-.021l-2.052 1.478V12.73l2.062-1.482h.946v7.75h-.935ZM6.58 31.482c0-.677.244-1.239.73-1.687.488-.45 1.096-.676 1.827-.676.69 0 1.276.206 1.756.617.48.412.72.915.72 1.51 0 .43-.118.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.776v.859H6.628v-.666l2.729-2.873c.52-.548.863-.964 1.031-1.247.172-.283.258-.585.258-.907 0-.373-.15-.69-.451-.951a1.585 1.585 0 0 0-1.085-.392c-.455 0-.834.145-1.139.435-.304.29-.456.652-.456 1.085v.005H6.58v-.005ZM8.208 50.42v-.816h.929c.444 0 .807-.127 1.09-.38.283-.259.424-.584.424-.978s-.13-.708-.392-.94c-.261-.233-.632-.35-1.112-.35-.444 0-.805.119-1.085.355-.279.236-.44.559-.483.967h-.93c.055-.659.309-1.184.764-1.574.458-.39 1.05-.585 1.777-.585.699 0 1.279.188 1.74.564.463.376.694.854.694 1.434 0 .483-.144.89-.43 1.219-.287.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.401.564.348.337.521.778.521 1.322 0 .433-.121.823-.365 1.17a2.39 2.39 0 0 1-.988.806c-.415.19-.875.285-1.38.285-.802 0-1.449-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.042.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.594.5-1 0-.454-.162-.814-.484-1.079-.319-.265-.755-.397-1.31-.397h-.972ZM13 17.998h1v1h-1zM13 35.998h1v1h-1zM13 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-2{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.605 18.998v-6.725h-.021l-2.052 1.478V12.73l2.062-1.482h.946v7.75h-.935Zm2.47 1.488c.122-.208.214-.37.275-.489.064-.114.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.144-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.354 3.354 0 0 0-.408-.602h.784c.168.215.31.406.424.575.115.164.246.39.393.676.15.287.27.575.36.865a8.83 8.83 0 0 1 .328 2.412c-.001 1.923-.486 3.491-1.457 4.705h-.821ZM6.58 31.482c0-.677.244-1.239.73-1.687.488-.45 1.096-.676 1.827-.676.69 0 1.276.206 1.756.617.48.412.72.915.72 1.51 0 .43-.118.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.776v.859H6.628v-.666l2.729-2.873c.52-.548.863-.964 1.031-1.247.172-.283.258-.585.258-.907 0-.373-.15-.69-.451-.951a1.585 1.585 0 0 0-1.085-.392c-.455 0-.834.145-1.139.435-.304.29-.456.652-.456 1.085v.005H6.58v-.005Zm5.85 7.004c.12-.208.212-.37.273-.489.065-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.23-.811.083-.312.144-.647.183-1.005.04-.361.06-.74.06-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.364 3.364 0 0 0-.409-.602h.785c.168.215.31.406.424.575.114.164.245.39.392.676.15.287.27.575.36.865a8.844 8.844 0 0 1 .328 2.412c0 1.923-.486 3.491-1.456 4.705h-.822ZM8.208 50.42v-.816h.929c.444 0 .807-.127 1.09-.38.283-.259.424-.584.424-.978s-.13-.708-.392-.94c-.261-.233-.632-.35-1.112-.35-.444 0-.805.119-1.085.355-.279.236-.44.559-.483.967h-.93c.055-.659.309-1.184.764-1.574.458-.39 1.05-.585 1.777-.585.699 0 1.279.188 1.74.564.463.376.694.854.694 1.434 0 .483-.144.89-.43 1.219-.287.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.401.564.348.337.521.778.521 1.322 0 .433-.121.823-.365 1.17a2.39 2.39 0 0 1-.988.806c-.415.19-.875.285-1.38.285-.802 0-1.449-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.042.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.594.5-1 0-.454-.162-.814-.484-1.079-.319-.265-.755-.397-1.31-.397h-.972Zm4.5 5.066c.122-.208.213-.37.274-.489.065-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.231-.811.082-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.364 3.364 0 0 0-.408-.602h.784c.168.215.31.406.424.575.115.164.245.39.392.676.15.287.27.575.36.865.09.29.167.647.231 1.069.065.419.097.866.097 1.343 0 1.923-.485 3.491-1.456 4.705h-.821Z'/%3E%3C/svg%3E")}i.icon.icon-numbers-3{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M7 10.998h1v8H7zM10 17.998h1v1h-1zM7 28.998h1v8H7zM10 28.998h1v8h-1zM13 35.998h1v1h-1zM7 45.998h1v8H7zM10 45.998h1v8h-1zM13 45.998h1v8h-1zM16 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-4{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='m11.79 18.998-.779-2.218H7.928l-.779 2.218H6.134l2.858-7.75h.956l2.857 7.75H11.79Zm-2.336-6.574-1.241 3.534h2.514l-1.241-3.534h-.032ZM9.776 36.998H6.752v-7.75h3.035c.662 0 1.197.177 1.606.531.411.355.617.822.617 1.402 0 .405-.13.772-.392 1.101-.258.326-.573.523-.945.591v.043c.526.068.945.274 1.257.618.315.343.472.773.472 1.289 0 .684-.232 1.217-.698 1.6-.462.383-1.105.575-1.928.575Zm-2.057-6.896v2.486h1.547c.573 0 1.01-.11 1.31-.333.304-.222.457-.542.457-.961 0-.383-.127-.677-.382-.88-.254-.209-.615-.312-1.085-.312H7.72Zm0 6.042H9.63c.583 0 1.026-.116 1.326-.35.301-.232.452-.572.452-1.02 0-.902-.623-1.353-1.87-1.353H7.72v2.723ZM9.942 54.127c-1.07 0-1.92-.36-2.55-1.08-.628-.723-.94-1.699-.94-2.927 0-1.217.316-2.188.95-2.911.634-.727 1.48-1.09 2.54-1.09.845 0 1.562.236 2.149.709.59.469.947 1.09 1.069 1.863h-.978a2.1 2.1 0 0 0-.8-1.219c-.408-.308-.888-.462-1.44-.462-.755 0-1.36.283-1.815.849-.455.566-.682 1.32-.682 2.261 0 .953.225 1.71.677 2.272.45.562 1.06.843 1.826.843.57 0 1.049-.13 1.44-.392.39-.261.655-.628.794-1.1h.978c-.18.765-.546 1.354-1.101 1.766-.555.412-1.26.618-2.117.618ZM15 17.998h1v1h-1zM15 35.998h1v1h-1zM15 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-5{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.524 18.24c.473 0 .863-.135 1.171-.407.312-.276.468-.622.468-1.037v-.467l-1.515.096c-.88.054-1.321.364-1.321.93 0 .268.107.483.322.644.218.161.51.242.875.242Zm-.198.812c-.588 0-1.06-.156-1.418-.468-.358-.311-.537-.723-.537-1.235 0-.498.186-.888.558-1.17.373-.287.91-.452 1.612-.495l1.622-.097v-.483c0-.358-.115-.634-.344-.827-.23-.193-.557-.29-.983-.29-.337 0-.621.08-.854.242-.23.16-.372.377-.43.65h-.897c.015-.488.231-.896.65-1.225.42-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36v3.974h-.886v-1.004h-.021a1.86 1.86 0 0 1-.752.773c-.337.19-.708.285-1.112.285Zm3.577 1.434c.122-.208.213-.37.274-.489.064-.114.157-.299.28-.553.124-.254.223-.496.294-.725.076-.23.153-.5.231-.811a6.85 6.85 0 0 0 .183-1.005c.04-.361.06-.74.06-1.133 0-.576-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.36-1.343 7.911 7.911 0 0 0-.425-.918 3.36 3.36 0 0 0-.408-.602h.784c.169.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.844 8.844 0 0 1 .328 2.412c0 1.923-.486 3.491-1.456 4.705h-.822ZM9.48 37.052a2.3 2.3 0 0 1-1.117-.263 1.98 1.98 0 0 1-.768-.769h-.021v.978h-.886v-8.089h.934v3.239h.022c.182-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.321.272 1.772.817.452.54.677 1.251.677 2.132 0 .884-.227 1.597-.682 2.138-.451.54-1.047.81-1.789.81Zm-.166-5.065c-.505 0-.915.197-1.23.59-.312.39-.467.9-.467 1.526 0 .63.155 1.14.467 1.53.315.391.725.586 1.23.586.508 0 .915-.191 1.22-.575.307-.383.461-.896.461-1.541 0-.64-.154-1.153-.462-1.536-.304-.387-.71-.58-1.219-.58Zm3.19 6.499c.122-.208.213-.37.274-.489.065-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.231-.811.082-.312.143-.647.183-1.005.039-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.364 3.364 0 0 0-.408-.602h.784c.168.215.31.406.424.575.115.164.245.39.392.676.15.287.27.575.36.865.09.29.167.647.231 1.069.064.419.097.866.097 1.343 0 1.923-.486 3.491-1.456 4.705h-.822ZM11.42 50.093H10.5a1.274 1.274 0 0 0-.483-.795c-.262-.207-.602-.311-1.02-.311-.51 0-.92.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.467 1.547.315.38.729.57 1.24.57.405 0 .737-.092.995-.275.26-.186.43-.453.51-.8h.918c-.079.57-.34 1.03-.784 1.38-.44.351-.988.527-1.644.527-.802 0-1.444-.265-1.928-.795-.483-.534-.725-1.252-.725-2.154 0-.888.242-1.6.725-2.138.484-.54 1.123-.81 1.918-.81.684 0 1.244.19 1.68.569.438.376.687.832.747 1.37Zm.472 5.393c.122-.208.213-.37.274-.489.064-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.23-.811.083-.312.144-.647.183-1.005.04-.361.06-.74.06-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.359 3.359 0 0 0-.409-.602h.784c.169.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.844 8.844 0 0 1 .328 2.412c0 1.923-.486 3.491-1.456 4.705h-.822Z'/%3E%3C/svg%3E")}i.icon.icon-numbers-6{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.524 18.24c.473 0 .863-.135 1.171-.407.312-.276.468-.622.468-1.037v-.467l-1.515.096c-.88.054-1.321.364-1.321.93 0 .268.107.483.322.644.218.161.51.242.875.242Zm-.198.812c-.588 0-1.06-.156-1.418-.468-.358-.311-.537-.723-.537-1.235 0-.498.186-.888.558-1.17.373-.287.91-.452 1.612-.495l1.622-.097v-.483c0-.358-.115-.634-.344-.827-.23-.193-.557-.29-.983-.29-.337 0-.621.08-.854.242-.23.16-.372.377-.43.65h-.897c.015-.488.231-.896.65-1.225.42-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36v3.974h-.886v-1.004h-.021a1.86 1.86 0 0 1-.752.773c-.337.19-.708.285-1.112.285ZM9.48 37.052a2.3 2.3 0 0 1-1.117-.263 1.98 1.98 0 0 1-.768-.769h-.021v.978h-.886v-8.089h.934v3.239h.022c.182-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.321.272 1.772.817.452.54.677 1.251.677 2.132 0 .884-.227 1.597-.682 2.138-.451.54-1.047.81-1.789.81Zm-.166-5.065c-.505 0-.915.197-1.23.59-.312.39-.467.9-.467 1.526 0 .63.155 1.14.467 1.53.315.391.725.586 1.23.586.508 0 .915-.191 1.22-.575.307-.383.461-.896.461-1.541 0-.64-.154-1.153-.462-1.536-.304-.387-.71-.58-1.219-.58ZM11.42 50.093H10.5a1.274 1.274 0 0 0-.483-.795c-.262-.207-.602-.311-1.02-.311-.51 0-.92.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.467 1.547.315.38.729.57 1.24.57.405 0 .737-.092.995-.275.26-.186.43-.453.51-.8h.918c-.079.57-.34 1.03-.784 1.38-.44.351-.988.527-1.644.527-.802 0-1.444-.265-1.928-.795-.483-.534-.725-1.252-.725-2.154 0-.888.242-1.6.725-2.138.484-.54 1.123-.81 1.918-.81.684 0 1.244.19 1.68.569.438.376.687.832.747 1.37ZM13 17.998h1v1h-1zM13 35.998h1v1h-1zM13 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-7{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M7 12.998h1v6H7zM7 10.998h1v1H7zM10 17.998h1v1h-1zM7 30.998h1v6H7zM10 30.998h1v6h-1zM10 28.998h1v1h-1zM7 28.998h1v1H7zM13 35.998h1v1h-1zM7 47.998h1v6H7zM10 47.998h1v6h-1zM13 47.998h1v6h-1zM7 45.998h1v1H7zM10 45.998h1v1h-1zM13 45.998h1v1h-1zM16 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-sharing-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill-rule='evenodd' clip-path='url(%23a)' clip-rule='evenodd'%3E%3Cpath d='M7.5 14c-2.823 0-4.989 1.407-6.099 3.257-.56.935-.4 1.305-.299 1.433.154.194.508.31.87.31H7.5v1H1.972c-.47 0-1.216-.134-1.655-.69-.49-.622-.412-1.502.227-2.567C1.834 14.593 4.324 13 7.5 13v1Zm0-1c3.177 0 5.639 1.593 6.929 3.743.639 1.065.716 1.945.226 2.567-.438.556-1.184.69-1.655.69H7.5v-1H13c.363 0 .717-.116.87-.31.101-.128.262-.498-.299-1.433C12.461 15.407 10.323 14 7.5 14v-1Z'/%3E%3Cpath d='M15 20h7c.471 0 1.217-.134 1.656-.69.49-.622.413-1.502-.226-2.567C22.14 14.593 19.677 13 16.5 13c-1.293 0-2.322.164-3.354.623.364.28.64.494.997.732A7.774 7.774 0 0 1 16.502 14c2.823 0 4.96 1.407 6.071 3.257.561.935.4 1.305.299 1.433-.153.194-.508.31-.87.31H16.5a1.466 1.466 0 0 1-.343.478c-.444.415-.738.522-1.157.522ZM7.5 11C8.76 11 10 9.786 10 8S8.76 5 7.5 5 5 6.214 5 8s1.24 3 2.5 3Zm0 1c1.933 0 3.5-1.79 3.5-4S9.433 4 7.5 4 4 5.79 4 8s1.567 4 3.5 4ZM17 11c.965 0 2-.97 2-2.5S17.965 6 17 6c-.965 0-2 .97-2 2.5s1.035 2.5 2 2.5Zm0 1c1.657 0 3-1.567 3-3.5S18.657 5 17 5s-3 1.567-3 3.5 1.343 3.5 3 3.5Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}i.icon.icon-info,i.icon.icon-sharing-settings{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-info{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M4 8v13h6v1H3V7l6-6h11v9h-1V2h-9v6H4Zm.414-1L9 2.414V7H4.414Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M17 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm-5 6a5 5 0 1 1 10 0 5 5 0 0 1-10 0Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' d='M16.252 14.991h1.484v1.496h-1.484v-1.496ZM16.252 17.509v3.98h1.484v-3.98h-1.484Z'/%3E%3C/svg%3E")}i.icon.icon-help{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M11.26 17h1.497v-1.5h-1.496V17ZM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2Zm0 19c-5 0-9-4-9-9s4-9 9-9 9 4 9 9-4 9-9 9Zm.392-14C10.182 7 9 8.29 9 10.5h1.5c0-1.1.588-2 1.892-2 1.303 0 1.612.618 1.608 1.5-.005 1-2.74 1.5-2.74 4.442h1.497c0-2.25 2.79-1.942 2.79-4.442 0-2.21-1.547-3-3.155-3Z'/%3E%3C/svg%3E")}i.icon.icon-about,i.icon.icon-help{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-about{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Zm0 1c5.522 0 10-4.477 10-10S17.522 2 12 2C6.477 2 2 6.477 2 12s4.477 10 10 10Z' clip-rule='evenodd'/%3E%3Cpath d='M11.253 7h1.492v1.5h-1.492V7ZM12.745 10.012V17h-1.492v-6.988h1.492Z'/%3E%3C/svg%3E")}i.icon.icon-search{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M16 16.708a9 9 0 1 1 .707-.707l5.647 5.645-.708.708-5.645-5.646ZM18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-search,i.icon.icon-version-history{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-version-history{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M12 6h2v6.845l4.196 2.423-1 1.732L12 14V6Z'/%3E%3Cpath d='M22 12a9 9 0 0 1-15.364 6.364l-.708.707A9.969 9.969 0 0 0 13 22c5.523 0 10-4.477 10-10S18.523 2 13 2C7.477 2 3 6.477 3 12h1a9 9 0 0 1 18 0Z'/%3E%3Cpath d='m1.5 10.5 2 2 2-2'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-horizontal{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M9.514 10.75h1.755L8.069 2H6.363L3.25 10.75h1.712l.66-1.988h3.194l.698 1.988ZM7.197 4.041l1.101 3.247h-2.18l1.079-3.247ZM16 2h-3.194v8.75h2.72c1.028-.008 1.677-.028 1.946-.06.429-.051.789-.189 1.08-.412.294-.226.525-.527.692-.9.17-.379.256-.767.256-1.165 0-.505-.13-.945-.392-1.319s-.637-.638-1.123-.794c.345-.17.617-.427.817-.77.204-.342.306-.718.306-1.128 0-.378-.082-.718-.246-1.02a2.162 2.162 0 0 0-.616-.734 1.93 1.93 0 0 0-.834-.358C17.103 2.03 16.632 2 16 2Zm-1.58 3.48V3.456h.926c.76 0 1.22.01 1.38.03.268.036.47.14.604.31.138.168.208.387.208.657 0 .283-.08.511-.24.686-.157.172-.373.275-.65.31-.152.02-.542.03-1.171.03h-1.058Zm0 3.796v-2.34h1.302c.734 0 1.21.042 1.428.125.222.084.391.217.507.4.117.183.175.406.175.669 0 .31-.076.559-.23.746a.973.973 0 0 1-.582.346c-.157.036-.526.054-1.107.054h-1.494Zm3.563 3.974 3.52 3.833.497.542-.498.542L17.982 22l-.994-1.084 2.317-2.524H2v-1.534h17.305l-2.317-2.524.995-1.084Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-anglecount,i.icon.icon-text-orientation-horizontal{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-text-orientation-anglecount{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M22 8.72h-5.604v1.358h3.363L8.55 20.916 9.672 22l10.925-10.856v3.286H22V8.72Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' d='m10.658 11.386-1.113 1.076-1.703-.79-2.025 1.958.842 1.623-1.085 1.05L2 9.028l1.082-1.046 7.576 3.403Zm-4.079-.301L3.823 9.769l1.374 2.653 1.382-1.337ZM6.085 5.08 8.11 3.12c.4-.387.718-.657.952-.81.233-.157.485-.255.756-.292a2 2 0 0 1 .856.073c.295.085.562.243.802.475.26.251.434.544.522.879.09.332.08.657-.03.973.407-.203.812-.27 1.215-.202.403.07.764.259 1.085.568.252.244.444.535.575.871.131.332.175.658.133.977-.043.315-.185.62-.424.914-.15.185-.549.595-1.196 1.23l-1.724 1.668-5.547-5.365Zm1.946-.097 1.283 1.24.67-.648c.399-.385.64-.631.724-.737.153-.191.224-.387.215-.588-.01-.205-.104-.395-.283-.568-.172-.166-.354-.257-.548-.275-.194-.023-.387.038-.58.18-.114.086-.412.362-.894.828l-.587.568Zm2.206 2.133 1.483 1.435.947-.916c.369-.357.591-.594.668-.711a.822.822 0 0 0 .15-.57c-.022-.209-.131-.408-.328-.598a1.104 1.104 0 0 0-.534-.303.92.92 0 0 0-.575.066c-.191.082-.52.348-.985.798l-.826.8Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-angleclock{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M15.28 22v-5.604h-1.358v3.363L3.084 8.55 2 9.672l10.856 10.925H9.57V22h5.71Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' d='m12.614 10.658-1.076-1.113.79-1.703-1.958-2.025-1.623.842-1.05-1.085L14.972 2l1.046 1.082-3.403 7.576Zm.301-4.079 1.316-2.756-2.653 1.374 1.337 1.382ZM18.92 6.085l1.96 2.025c.387.4.657.718.81.952.157.233.255.485.292.756a2 2 0 0 1-.073.856 1.905 1.905 0 0 1-.475.802c-.251.26-.544.434-.879.522a1.61 1.61 0 0 1-.973-.03c.203.407.27.812.202 1.215a2.032 2.032 0 0 1-.568 1.085 2.42 2.42 0 0 1-.871.575 1.928 1.928 0 0 1-.977.133c-.315-.043-.62-.185-.914-.424-.185-.15-.595-.549-1.23-1.196l-1.668-1.724 5.365-5.547Zm.097 1.946-1.24 1.283.648.67c.386.399.631.64.737.724.191.153.387.224.588.215.205-.01.395-.104.568-.283.166-.172.258-.354.275-.548.023-.194-.038-.387-.18-.58-.086-.114-.362-.412-.828-.894l-.568-.587Zm-2.133 2.206-1.435 1.483.916.947c.357.369.594.591.712.668a.822.822 0 0 0 .57.15c.208-.022.407-.131.597-.328.161-.166.262-.344.303-.534a.92.92 0 0 0-.066-.575c-.082-.191-.348-.52-.798-.985l-.8-.826Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-angleclock,i.icon.icon-text-orientation-vertical{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-text-orientation-vertical{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='m7.104 22.065 3.978-3.52-1.125-.995-2.62 2.318V1.938H5.745v17.93l-2.62-2.318L2 18.545l3.978 3.52.563.497.563-.497Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' d='M14.513 13.188h3.316c.656 0 1.145.03 1.465.089.325.056.613.175.866.358.256.183.47.428.64.734.169.303.254.643.254 1.02 0 .41-.106.787-.317 1.129a1.96 1.96 0 0 1-.849.77c.506.155.894.42 1.166.794.272.374.407.813.407 1.319 0 .398-.088.786-.266 1.164a2.308 2.308 0 0 1-.718.901c-.302.223-.675.36-1.12.412-.28.032-.953.052-2.02.06h-2.824v-8.75Zm1.675 1.456v2.023h1.098c.652 0 1.058-.01 1.216-.03.287-.035.511-.139.673-.31.166-.175.25-.404.25-.686 0-.271-.072-.49-.216-.657-.14-.171-.349-.274-.628-.31-.166-.02-.643-.03-1.431-.03h-.962Zm0 3.48v2.34h1.55c.604 0 .987-.019 1.149-.054.249-.048.45-.164.605-.347.159-.187.238-.435.238-.746 0-.262-.06-.485-.181-.668a1.028 1.028 0 0 0-.526-.4c-.227-.084-.72-.125-1.483-.125h-1.352ZM22 10.688h-1.822L19.454 8.7h-3.316l-.685 1.988h-1.776l3.23-8.75h1.772L22 10.688Zm-3.084-3.462-1.143-3.247-1.12 3.247h2.263Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-rotateup{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M5.914 2.483 2 5.895l1.107.966 2.578-2.248V22H7.25V4.613l2.577 2.248 1.108-.966L7.02 2.483 6.468 2l-.554.483Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' d='m21.928 12.594-.029 1.656-1.931.69-.052 3.012 1.91.59-.028 1.615-8.403-2.798.028-1.609 8.505-3.156Zm-3.393 2.857-3.154 1.09 3.119.966.035-2.056ZM13.5 11.079l.051-3.013c.01-.596.047-1.04.11-1.333.058-.296.178-.56.359-.792.18-.236.42-.434.72-.593.294-.159.624-.241.99-.247.395-.007.757.083 1.084.27.327.183.57.436.73.759.158-.462.42-.819.786-1.072a2.264 2.264 0 0 1 1.28-.39c.385-.007.758.067 1.12.223.36.151.646.364.86.638.21.27.337.608.38 1.012.027.253.036.864.027 1.834v2.704h-8.498Zm1.432-1.545 1.955-.032.017-.997c.01-.593.007-.962-.01-1.105-.03-.26-.126-.462-.289-.607-.166-.148-.386-.22-.66-.215-.26.004-.473.072-.637.205-.167.13-.27.322-.31.576-.021.15-.038.585-.05 1.301l-.016.874Zm3.362-.055 2.26-.037.025-1.409c.009-.548-.002-.896-.034-1.042a.875.875 0 0 0-.325-.545c-.179-.141-.418-.21-.717-.204-.254.004-.47.062-.649.175a.99.99 0 0 0-.395.484c-.084.207-.132.657-.144 1.35l-.02 1.228Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-rotatedown,i.icon.icon-text-orientation-rotateup{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-text-orientation-rotatedown{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='m7.021 21.517 3.914-3.412-1.107-.966-2.577 2.248V2H5.685v17.387l-2.578-2.248L2 18.105l3.914 3.412.554.483.553-.483Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' d='m13.468 11.406.028-1.656 1.931-.69.052-3.012-1.91-.59.028-1.615L22 6.641l-.028 1.609-8.505 3.156Zm3.392-2.857 3.155-1.09-3.12-.966-.035 2.056ZM21.896 12.921l-.052 3.013c-.01.596-.047 1.04-.11 1.333-.058.296-.178.56-.359.792-.18.236-.42.434-.719.593a2.126 2.126 0 0 1-.99.247 2.081 2.081 0 0 1-1.085-.27 1.74 1.74 0 0 1-.73-.759c-.158.462-.42.819-.785 1.072a2.264 2.264 0 0 1-1.281.39 2.706 2.706 0 0 1-1.12-.223 2.107 2.107 0 0 1-.86-.638c-.21-.27-.337-.608-.38-1.012-.027-.253-.035-.864-.026-1.834V12.92h8.497Zm-1.433 1.545-1.955.032-.017.997c-.01.593-.007.962.01 1.105.03.26.126.462.29.607.166.148.385.22.658.215.262-.004.474-.072.638-.205.167-.13.27-.322.31-.576.021-.15.038-.585.05-1.301l.016-.874Zm-3.362.055-2.26.037-.024 1.409c-.01.548.002.896.034 1.042.042.226.15.407.324.545.179.141.418.21.718.204.253-.004.47-.062.648-.175a.99.99 0 0 0 .395-.484c.084-.207.132-.657.144-1.35l.021-1.228Z'/%3E%3C/svg%3E")}.dataview .row{justify-content:space-around}.dataview ul{list-style:none;padding:0 10px}.dataview ul li{display:inline-block}.dataview .row.list:last-child li:not(.active):last-child:after{content:none}.dataview .active,.dataview .row.list:last-child li.active:last-child{position:relative;z-index:1}.dataview .active:after,.dataview .row.list:last-child li.active:last-child:after{background-color:var(--brand-slide);bottom:-5px;content:"";height:22px;left:auto;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='11'/%3E%3Cpath fill='%23fff' d='M11 21a10 10 0 1 1 10-10 10 10 0 0 1-10 10Zm6.4-13.68L17.06 7a.48.48 0 0 0-.67 0l-7 6.84-2.44-2.6a.51.51 0 0 0-.59.08l-.36.34a.58.58 0 0 0 0 .65l3.19 3.35a.38.38 0 0 0 .39 0L17.4 8a.48.48 0 0 0 0-.67Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;position:absolute;right:-5px;transform:none;width:22px}.about .page-content{display:flex;flex-direction:column;text-align:center}.about_ios{padding-bottom:30px;padding-top:120px}.about_android{padding-bottom:16px;padding-top:60px}.about_tablet{padding-bottom:12px;padding-top:12px}.about__text{color:var(--text-normal);font-size:12px;font-style:normal;font-weight:400;line-height:16px;margin:0;text-align:center}.about a{color:var(--brand-slide)}.about .logo-block__elem{display:flex;justify-content:center}.about .logo-block__elem img{height:auto;max-width:100%}.about__logo{background:url(../../../presentationeditor/mobile/resources/img/about/logo-new.svg) no-repeat 50%;height:80px;width:100%}.about__editor{flex-grow:1;margin-top:20px}.about__contacts{padding-left:72px;padding-right:72px;text-align:center}.about__customer,.about__licensor{margin-top:12px;text-align:center}.theme-type-dark .about__logo{background:url(../../../presentationeditor/mobile/resources/img/about/logo-new-white.svg) no-repeat 50%}.navbar .searchbar{background-color:var(--f7-navbar-bg-color)}.navbar .searchbar .buttons-row{align-self:center;display:flex}.navbar .searchbar .searchbar-bg:after{background-color:#cbcbcb;bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.navbar .searchbar-inner{justify-content:space-between}.navbar .searchbar-inner__center{align-items:center;display:flex;width:81%}.navbar .searchbar-inner__right{align-items:center;display:flex}.navbar .searchbar-expandable{transition-duration:0s}.navbar .buttons-row-replace{align-items:center;display:flex;flex-direction:column;justify-content:center;width:100%}.navbar .buttons-row-replace a{display:block;font-size:15px;height:auto;line-height:normal}.navbar .buttons-row-replace a:before{display:none}@media (max-width:550px){.navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__left{max-width:22px;min-width:22px}.navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__center{flex-direction:column}.navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__right{flex-direction:column-reverse}.navbar .searchbar-expandable.searchbar-enabled.replace{top:0}.navbar .searchbar-expandable.searchbar-enabled.replace .searchbar-inner{height:100%}.navbar .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__left{align-self:flex-start}}.device-ios .document-menu{background-color:rgba(0,0,0,.9);border-radius:8px}.device-ios .document-menu .popover-angle:after{background:rgba(0,0,0,.9)}.device-ios .document-menu .list-block{font-size:14px;white-space:pre}.device-ios .document-menu .list-block:first-child ul:before{display:none!important}.device-ios .document-menu .list-block:first-child li:first-child a{border-radius:0}.device-ios .document-menu .list-block .item-link{display:inline-block}.device-ios .document-menu .list-block .item-link.active-state,html:not(.watch-active-state) .device-ios .document-menu .list-block .item-link:active{background-color:#d9d9d9}.device-ios .document-menu .list-block .item-link.active-state .item-inner:after,html:not(.watch-active-state) .device-ios .document-menu .list-block .item-link:active .item-inner:after{background-color:initial}html.phone .device-ios .document-menu .list-block .item-link{padding:0 10px}.device-ios .document-menu .list-block .list-button{color:#ffffff;line-height:36px}.device-ios .document-menu .list-block .list-button:after{background-color:rgba(230,230,230,.9);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.device-ios .document-menu .list-block li{display:inline-flex}.device-ios .document-menu .list-block li:last-child .item-inner:after,.device-ios .document-menu .list-block li:last-child .list-button:after,.device-ios .document-menu .list-block li:last-child li:last-child .item-inner:after{display:none!important}.device-ios .document-menu .list-block li li:last-child .item-inner:after,.device-ios .document-menu .list-block li:last-child li .item-inner:after{background-color:rgba(230,230,230,.9);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.md .document-menu .popover-inner{overflow:hidden}.md .document-menu .list-block{white-space:pre}.md .document-menu .list-block ul{height:48px}.md .document-menu .list-block li{display:inline-block}.md .document-menu .list-block .list-button{color:var(--text-normal)}.document-menu{width:auto}html.phone .document-menu .list-block .list-button{padding:0 10px}.device-ios .wrap-comment{height:calc(100% - 60px)}.device-ios .add-comment-dialog .wrap-textarea,.device-ios .add-comment-popup .wrap-textarea,.device-ios .add-reply-dialog .wrap-textarea,.device-ios .add-reply-popup .wrap-textarea{height:calc(100% - 34px)}.device-ios .edit-comment-dialog .wrap-textarea,.device-ios .edit-comment-popup .wrap-textarea,.device-ios .edit-reply-dialog .wrap-textarea,.device-ios .edit-reply-popup .wrap-textarea{height:calc(100% - 52px)}.device-ios .comment-list .reply-item .item-inner:after{content:none!important}.device-ios .comment-list .reply-item:before{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:auto;position:absolute;right:auto;top:0;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;width:100%;z-index:15}.device-android .wrap-comment{height:calc(100% - 72px)}.device-android .add-comment-dialog .wrap-textarea,.device-android .add-comment-popup .wrap-textarea,.device-android .add-reply-dialog .wrap-textarea,.device-android .add-reply-popup .wrap-textarea{height:calc(100% - 41px)}.device-android .edit-comment-dialog .wrap-textarea,.device-android .edit-comment-popup .wrap-textarea,.device-android .edit-reply-dialog .wrap-textarea,.device-android .edit-reply-popup .wrap-textarea{height:calc(100% - 56px)}.device-android .comment-list .comment-header,.device-android .comment-list .reply-header,.device-android .reply-list .comment-header,.device-android .reply-list .reply-header,.device-android .wrap-comment .comment-header,.device-android .wrap-comment .reply-header{display:flex}.device-android .comment-list .comment-header .initials,.device-android .comment-list .reply-header .initials,.device-android .reply-list .comment-header .initials,.device-android .reply-list .reply-header .initials,.device-android .wrap-comment .comment-header .initials,.device-android .wrap-comment .reply-header .initials{align-items:center;border-radius:50px;color:var(--fill-white);display:flex;font-size:14px;justify-content:center;margin-right:10px}.device-android .wrap-comment .comment-header{align-items:center}.device-android .wrap-comment .comment-header .initials{height:30px;width:30px}.device-android .wrap-comment .wrap-textarea .input:not(.input-outline):after{content:none}.device-android #add-comment-dialog .dialog,.device-android #add-reply-dialog .dialog,.device-android #edit-comment-dialog .dialog,.device-android #edit-reply-dialog .dialog{--f7-dialog-text-color:#000000}.device-android #add-comment-dialog .dialog .done,.device-android #add-reply-dialog .dialog .done,.device-android #edit-comment-dialog .dialog .done,.device-android #edit-reply-dialog .dialog .done{padding-right:6px}.device-android .comment-list .item-inner:after,.device-android .comment-list li:last-child li .item-inner:after,.device-android .comment-list ul:after{content:none}.device-android .comment-list .comment-header .left{align-items:center;display:flex}.device-android .comment-list .comment-header .left .initials{font-size:18px;height:40px;width:40px}.device-android .reply-list .reply-header .left{display:flex}.device-android .reply-list .reply-header .left .initials{font-size:11px;height:24px;margin-top:5px;width:24px}.device-android #edit-comment-dialog .wrap-comment .comment-header .initials,.device-android #edit-comment-dialog .wrap-comment .reply-header .initials,.device-android #edit-reply-dialog .wrap-comment .comment-header .initials,.device-android #edit-reply-dialog .wrap-comment .reply-header .initials,.device-android .edit-comment-popup .wrap-comment .comment-header .initials,.device-android .edit-comment-popup .wrap-comment .reply-header .initials,.device-android .edit-reply-popup .wrap-comment .comment-header .initials,.device-android .edit-reply-popup .wrap-comment .reply-header .initials{height:40px;width:40px}.device-android #view-comment-popover .toolbar-bottom:after{content:none}.wrap-comment{background-color:var(--background-tertiary);padding:16px 24px 0 16px}.wrap-comment .comment-date{color:var(--text-secondary)}.wrap-comment .wrap-textarea{margin-top:6px}.wrap-comment .name{color:var(--text-normal);font-size:16px;font-weight:600}.wrap-comment .reply-date{color:var(--text-secondary)}.wrap-textarea .input{height:100%}.wrap-textarea textarea{color:var(--text-normal);font-size:14px;height:100%;margin-top:0;padding:5px 0}#add-comment-dialog .dialog,#add-reply-dialog .dialog,#edit-comment-dialog .dialog,#edit-reply-dialog .dialog{--f7-dialog-width:400px;z-index:13700}#add-comment-dialog .dialog .dialog-inner,#add-reply-dialog .dialog .dialog-inner,#edit-comment-dialog .dialog .dialog-inner,#edit-reply-dialog .dialog .dialog-inner{height:400px;padding:0}#add-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,#add-comment-dialog .dialog .dialog-inner .wrap-comment .name,#add-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,#add-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,#add-reply-dialog .dialog .dialog-inner .wrap-comment .name,#add-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .name,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .name,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date{text-align:left}#add-comment-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea,#add-reply-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea{color:var(--text-normal);width:100%}.comment-list .item-content .item-inner{padding-bottom:0;padding-right:0;padding-top:16px}.comment-list .item-content .item-inner .comment-header{display:flex;justify-content:space-between;padding-right:16px}.comment-list .item-content .item-inner .comment-header .right{display:flex;justify-content:flex-end;width:70px}.comment-list .item-content .item-inner .comment-header .right .comment-resolve{margin-right:10px}.comment-list .item-content .item-inner .reply-header{display:flex;justify-content:space-between;padding-right:16px}.comment-list .item-title{width:100%}.comment-list .user-name{color:var(--text-normal);font-size:16px;font-weight:700;line-height:22px;margin:0}.comment-list .comment-date,.comment-list .reply-date{color:var(--text-secondary);font-size:12px;line-height:18px;margin:0}.comment-list .comment-quote{border-left:1px solid var(--text-secondary);color:var(--text-secondary);font-size:14px;margin:5px 0;padding-left:10px;padding-right:16px}.comment-list .comment-text,.comment-list .reply-text{color:var(--text-normal);font-size:14px;line-height:25px;margin:0;max-width:100%;padding-right:15px;word-break:break-all}.comment-list .comment-text pre,.comment-list .reply-text pre{overflow-wrap:break-word;white-space:pre-wrap}.comment-list .reply-list{padding-left:26px}.comment-list .reply-item{padding-right:26px}.add-reply-popup,.edit-comment-popup,.edit-reply-popup{z-index:20000}#view-comment-sheet{webkit-transition:height .2s;background-color:var(--fill-white);border-top-left-radius:4px;border-top-right-radius:4px;box-shadow:0 1px 10px rgba(0,0,0,.2),0 4px 5px rgba(0,0,0,.12);height:45%;transition:height .2s}#view-comment-sheet .top{height:90%}#view-comment-sheet .swipe-container{background-color:var(--background-primary);display:flex;height:40px;justify-content:center}#view-comment-sheet .swipe-container .icon-swipe{background:var(--background-menu-divider);border-radius:2px;height:4px;margin-top:8px;width:40px}#view-comment-popover .toolbar,#view-comment-sheet .toolbar{background-color:var(--background-primary);box-shadow:0 1px 10px rgba(0,0,0,.2),0 4px 5px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.14);position:fixed}#view-comment-popover .toolbar .link,#view-comment-sheet .toolbar .link{--f7-toolbar-link-color:var(--brand-slide)}#view-comment-popover .toolbar .toolbar-inner,#view-comment-sheet .toolbar .toolbar-inner{padding:0 16px}#view-comment-popover .toolbar .btn-add-reply,#view-comment-sheet .toolbar .btn-add-reply{font-size:16px;min-width:80px;padding:0}#view-comment-popover .toolbar .comment-navigation,#view-comment-sheet .toolbar .comment-navigation{display:flex;justify-content:space-between;min-width:62px}#view-comment-popover .toolbar .comment-navigation .link,#view-comment-sheet .toolbar .comment-navigation .link{padding:0 12px}#view-comment-popover{background-color:var(--background-primary)}#view-comment-popover .pages{position:absolute}#view-comment-popover .page,#view-comment-popover .page .page-content{border-radius:var(--f7-popover-border-radius)}#view-comment-popover .page .page-content{padding:16px 16px 60px 0}#view-comment-popover .comment-list .item-content .item-inner .comment-header,#view-comment-popover .comment-list .item-content .item-inner .reply-header{padding-right:0}#view-comment-popover .toolbar{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);position:absolute}.page-current-comment{position:relative}.page-current-comment .page-content{background-color:var(--background-primary)}.page-current-comment .comment-list ul:after,.page-current-comment .comment-list ul:before{content:none}.page-current-comment .comment-list ul .item-content .item-inner{padding-top:0}.page-current-comment .comment-list ul .item-content .item-inner .reply-list .item-content .item-inner{padding-top:13px}.dialog.modal-in{max-height:100%;overflow:auto;z-index:14000}.dialog.modal-in .item-content .item-input-wrap:after{background-color:var(--brand-slide)}.dialog-backdrop.backdrop-in{z-index:13600}.no-comments{color:var(--text-normal);margin-top:35px;text-align:center}.actions-modal.modal-in{z-index:13700}.actions-modal.modal-in .actions-group:after{background-color:var(--background-menu-divider)}.actions-backdrop.backdrop-in{z-index:13600}.device-android{--f7-navbar-bg-color:var(--brand-slide);--f7-navbar-link-color:var(--text-link);--f7-navbar-text-color:var(--text-normal)}.device-android #editor-navbar.navbar .right{padding-right:4px}.device-android #editor-navbar.navbar .left a.link,.device-android #editor-navbar.navbar .right a.link{align-items:center;box-sizing:border-box;justify-content:space-between;padding:0 13px;width:auto}.device-ios .view .page-content{background:var(--background-tertiary)}.device-ios i.icon.icon-burger{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M2 17h18v1H2zM2 13h18v1H2zM2 9h18v1H2zM2 5h18v1H2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-burger,.device-ios i.icon.icon-edit-settings{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-edit-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cpath fill-rule='evenodd' d='M8 1 3 15h1.2l1.777-5h5.046l.616 1.733.88-.88L9 1zm.5 1.9L10.668 9H6.332z' clip-rule='evenodd'/%3E%3Cpath d='m18.3 11.3-9.2 9.1-1.5-1.5 9.2-9.1-.7-.7-9.6 9.6L6 22l3.3-.5 9.6-9.6zm1.2 0L21 9.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-play{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M4.046 2.988A.286.286 0 0 1 4.07 3c.59.336 12.711 7.293 13.897 8.027-.583.342-13.013 7.488-13.934 7.983l.013-16.022M3.99 2C3.443 2 3 2.453 3 3.015V19.01c0 .613.479.99.993.99.173 0 .35-.043.514-.133.89-.491 13.188-7.559 13.94-8a.99.99 0 0 0 0-1.732C17.404 9.533 5.153 2.502 4.54 2.154A1.11 1.11 0 0 0 3.99 2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-play,.device-ios i.icon.icon-undo{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-undo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M22 16v2h-1v-2c0-2.9-2.1-5-5-5H1.9L5 14c.1.1.1.2 0 .3l-.4.4c-.1.1-.2.1-.3 0L.1 10.5c-.1-.1-.1-.2 0-.3l.4-.4h.1L4.4 6c.1-.1.2-.1.3 0l.5.4c.1.1.1.2 0 .3L1.9 10H16c3.3 0 6 2.7 6 6z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-redo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M0 16c0-3.3 2.7-6 6-6h14.1l-3.3-3.3c-.1-.1-.1-.2 0-.3l.5-.4c.1-.1.2-.1.3 0l3.8 3.8h.1l.4.4c.1.1.1.2 0 .3l-4.2 4.2c-.1.1-.2.1-.3 0l-.4-.4c-.1-.1-.1-.2 0-.3l3.1-3H6c-2.9 0-5 2.1-5 5v2H0v-2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-reader,.device-ios i.icon.icon-redo{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-reader{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M17 21H1V9h6V2h10v5h1V1H6.2L0 7.6V22h18v-3h-1v2zM6 2.8V8H1.1L6 2.8zM13 8c-5.1 0-9 5-9 5s4.1 5 9 5c5 0 9-5 9-5s-4-5-9-5zm-4.3 7.5C6.8 14.4 6.4 13 6.4 13s.4-1.5 2.4-2.6C8.3 11.2 8 12 8 13c0 .9.3 1.8.7 2.5zm4.3 1.2c-2.1 0-3.7-1.7-3.7-3.7 0-2.1 1.7-3.7 3.7-3.7 2.1 0 3.7 1.7 3.7 3.7 0 2.1-1.6 3.7-3.7 3.7zm4.3-1.2c.4-.7.7-1.6.7-2.5 0-1-.3-1.8-.7-2.6 2 1.1 3.4 2.6 3.4 2.6s-1.5 1.4-3.4 2.5zM13 11.7c-.7 0-1.3.6-1.3 1.3s.6 1.3 1.3 1.3 1.3-.6 1.3-1.3-.6-1.3-1.3-1.3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-download{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M12 0h-1v14l-3.6-3.7-.7.8 4.8 4.9 4.8-4.9-.7-.8L12 14V0Z'/%3E%3Cpath d='M14 5v1h5v14H4V6h5V5H3v16h17V5h-6Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-download,.device-ios i.icon.icon-print{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-print{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath fill-rule='evenodd' d='M5 1h12v5h4v11h-4v4H5v-4H1V6h4V1Zm1 5h10V2H6v4ZM5 16v-3H2v3h3Zm-3-4h18V7H2v5Zm18 1h-3v3h3v-3Zm-4 0H6v7h10v-7Zm-2 3H8v-1h6v1Zm0 2H8v-1h6v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-spellcheck{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cg fill-rule='evenodd' clip-rule='evenodd'%3E%3Cpath d='M8 1 3 15h1.2l1.777-5h5.046l.654 1.84a6.03 6.03 0 0 1 .916-.78L9 1H8Zm.5 1.9L10.668 9H6.332L8.5 2.9ZM16 21a5 5 0 1 0 0-10 5 5 0 0 0 0 10Zm-.646-2.646 4-4-.708-.708L15 17.293l-1.646-1.647-.708.708 2 2 .354.353.354-.353Z'/%3E%3C/g%3E%3C/svg%3E")}.device-ios i.icon.icon-plus,.device-ios i.icon.icon-spellcheck{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-plus{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M22 12H12v10h-1V12H1v-1h10V1h1v10h10v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-settings{background-color:var(--brand-slide);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='m11.8 3 .4 2c.1.7.6 1.1 1.3 1.1.3 0 .5-.1.7-.2l1.9-1.2 1.1 1.1-1.1 1.8c-.3.4-.3.9-.1 1.3.2.4.5.7 1 .8l2.1.5v1.6l-2.1.4c-.5.1-.8.4-1 .8-.2.4-.1.9.1 1.2l1.2 1.9-1.1 1.1-1.8-1.1c-.2-.2-.5-.2-.8-.2-.6 0-1.2.5-1.3 1.1l-.5 2.1h-1.6l-.4-2c-.1-.7-.6-1.1-1.3-1.1-.3 0-.5.1-.7.2l-1.9 1.2-1.1-1.1 1.1-1.8c.3-.4.3-.9.1-1.3-.2-.4-.5-.7-1-.8l-2.1-.5v-1.6l2-.4c.5-.1.8-.4 1-.8.2-.4.1-.9-.1-1.2l-1-2 1.1-1.1 1.8 1.1c.3.2.5.3.8.3.6 0 1.2-.5 1.3-1.1l.5-2.1h1.5M11 15.5c2.5 0 4.5-2 4.5-4.5s-2-4.5-4.5-4.5-4.5 2-4.5 4.5 2 4.5 4.5 4.5M12.1 2H9.9c-.3 0-.5.2-.6.5l-.5 2.4c0 .2-.2.3-.3.3s-.1 0-.2-.1L6.2 3.8c-.1-.1-.2-.1-.4-.1-.1 0-.3 0-.4.1L3.8 5.4c-.1.2-.2.5 0 .8l1.3 2.1c.1.2.1.4-.2.5l-2.4.5c-.3.1-.5.3-.5.6v2.2c0 .3.2.5.5.6l2.4.5c.3.1.4.3.2.5l-1.3 2.1c-.2.2-.1.6.1.8l1.6 1.6c.1.1.3.2.4.2s.2 0 .3-.1L8.3 17c.1-.1.1-.1.2-.1s.3.1.3.3l.5 2.3c.1.3.3.5.6.5h2.2c.3 0 .5-.2.6-.5l.5-2.4c0-.2.1-.3.3-.3.1 0 .1 0 .2.1l2.1 1.3c.1.1.2.1.3.1.2 0 .3-.1.4-.2l1.6-1.6c.2-.2.2-.5.1-.8l-1.3-2.1c-.2-.2-.1-.5.2-.5l2.4-.5c.3-.1.5-.3.5-.6V9.8c0-.3-.2-.5-.5-.6l-2.4-.5c-.3-.1-.4-.3-.2-.5l1.3-2.1c.2-.2.1-.6-.1-.8l-1.6-1.6c-.1-.1-.3-.2-.4-.2-.1 0-.2 0-.3.1l-2.1 1.3c-.1.1-.1.1-.2.1s-.3-.1-.3-.3l-.5-2.2c-.1-.3-.3-.5-.6-.5zM11 14.5c-1.9 0-3.5-1.6-3.5-3.5S9.1 7.5 11 7.5s3.5 1.6 3.5 3.5-1.6 3.5-3.5 3.5z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-feedback{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill-rule='evenodd' d='M21 6H3v12h18V6ZM3 5a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H3Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m2.666 6.372.668-.744 8.666 7.7 8.666-7.7.668.744-9.334 8.3-9.334-8.3Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m9.376 11.33-6 7-.752-.66 6-7 .752.66ZM15.376 10.67l6 7-.752.66-6-7 .752-.66Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-feedback,.device-ios i.icon.icon-setup{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-setup{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M0 3v16h22V3H0zm21 14H1V5h20v12zM16.5 5.9l-7.2 7.2-.5 1.9H4v1h5c.4 0 .2 0 .2-.2l2.2-.6L18.7 8l-2.2-2.1zm-6.6 7.2 6.5-6.4L18 8l-6.5 6.4-1.6-1.3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-versions{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='-1 7 22 22'%3E%3Cpath d='M19 12c0-1.1-.9-2-2-2 0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2-1.1 0-2 .9-2 2-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V14c0-1.1-.9-2-2-2zM5 9h10c.6 0 1 .4 1 1H4c0-.6.4-1 1-1zm-2 2h14c.6 0 1 .4 1 1H2c0-.6.4-1 1-1zm17 15c0 .6-.4 1-1 1H1c-.6 0-1-.4-1-1V14c0-.6.4-1 1-1h18c.6 0 1 .4 1 1v12z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-additional,.device-ios i.icon.icon-versions{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-additional{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M18.5 15.5c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 3c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1zm0-11c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0-3c.6 0 1 .4 1 1s-.4 1-1 1-1-.4-1-1 .4-1 1-1zm0 5c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 3c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1zM6.9 3.8 1 18.9h1.5l1.8-4.7h6.9l1.7 4.7h1.5L8.6 3.8H6.9zm-2.2 9.1 3-7.9 3 7.9h-6z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-color{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='m8.9 12 2.3-6.3 2.2 6.3H8.9zm-4.2 5.8h2l1.6-4.3h5.6l1.5 4.3h2.1L12.3 3.5h-2.2L4.7 17.8z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-color,.device-ios i.icon.icon-text-selection{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-selection{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M7.6 10.3c.2.3.4.4.5.5.3.2.6.3 1 .3.7 0 1.3-.3 1.7-.8.4-.5.6-1.2.6-2.1 0-.9-.2-1.5-.6-2-.4-.4-.9-.7-1.6-.7-.3 0-.6.1-.9.2l-.7.7V3.8h-.8V11h.8v-.7zM8 6.9c.3-.3.7-.4 1.1-.4.5 0 .8.2 1 .5.2.4.4.8.4 1.4 0 .6-.1 1.1-.4 1.5-.2.4-.6.6-1.1.6-.6 0-1.1-.3-1.3-.9-.1-.4-.1-.8-.1-1.3 0-.6.1-1.1.4-1.4zm-2.3 3.5c-.1 0-.2 0-.2-.1s-.1-.1-.1-.2v-3c0-.5-.2-.9-.6-1.1-.4-.2-.8-.4-1.5-.4-.5 0-1 .1-1.4.4-.4.3-.6.7-.6 1.4h.8c0-.3.1-.5.2-.6.2-.2.5-.4 1-.4.4 0 .7.1.9.2.2.1.3.4.3.7 0 .1 0 .3-.1.3 0 .1-.1.2-.3.2L2.7 8c-.5.1-.9.2-1.2.5-.3.3-.5.6-.5 1.1 0 .4.2.8.5 1.1.3.3.7.4 1.2.4.4 0 .8-.1 1.1-.3.3-.2.6-.4.8-.6 0 .2.1.4.2.5.1.2.4.3.7.3h.3c.1 0 .2 0 .3-.1v-.6h-.2c-.1.1-.2.1-.2.1zM4.5 9.1c0 .5-.2.9-.7 1.2-.3.1-.6.2-.9.2-.3 0-.5-.1-.7-.2-.2-.2-.2-.4-.2-.7 0-.3.1-.6.4-.7.2-.1.4-.2.7-.2l.5-.1c.2 0 .3-.1.5-.1s.3-.1.4-.2v.8zm14-4.1L8.3 15.3l-.5 2c-.6.4-1.3.3-1.5.6-.3.4.9.4 1.5.3.4 0 .5 0 .5-.2l2.2-.6L20.7 7.1 18.5 5zM9 15.3l9.5-9.5L20 7.1l-9.5 9.5L9 15.3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-bullets{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M7 4v1h15V4H7zM1 6h3V3H1v3zm6 6h15v-1H7v1zm-6 1h3v-3H1v3zm6 6h15v-1H7v1zm-6 1h3v-3H1v3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-bullets,.device-ios i.icon.icon-numbers{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-numbers{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M7 3.8v1h15v-1H7zm0 8h15v-1H7v1zm0 7h15v-1H7v1zM3.1 6.9h.7V2h-.5c-.1.4-.2.6-.4.7-.2.1-.5.2-.9.2v.5h1.2v3.5zM3.3 9c-.7 0-1.2.2-1.4.7-.2.3-.2.6-.2 1h.6c0-.3.1-.5.1-.7.2-.3.5-.5.9-.5.3 0 .5.1.7.3s.3.4.3.7c0 .2-.1.5-.3.7-.1.1-.3.3-.6.4l-.7.4c-.4.3-.7.5-.9.9-.2.3-.2.7-.3 1.1h3.4v-.6H2.2c.1-.2.2-.5.4-.7.1-.1.3-.2.5-.4l.5-.3c.4-.2.7-.4.9-.6.3-.3.4-.6.4-1s-.1-.7-.4-1c-.2-.3-.6-.4-1.2-.4zm.8 9.3c.2-.1.3-.2.4-.3.2-.2.2-.4.2-.7 0-.4-.1-.7-.4-1-.3-.2-.7-.3-1.2-.3-.6 0-1.1.2-1.3.7-.1.3-.2.6-.2.9h.6c0-.3.1-.5.1-.6.2-.3.4-.4.9-.4.2 0 .4.1.6.2.2.1.3.2.3.5s-.1.6-.4.7c-.1.1-.3.1-.6.1H2.8v.5H3c.4 0 .7.1.9.2.2.1.3.4.3.7 0 .3-.1.5-.3.7-.2.2-.5.3-.8.3-.4 0-.7-.1-.9-.4-.1-.1-.2-.4-.2-.7h-.5c0 .5.1.8.4 1.2.2.2.6.4 1.2.4s1-.1 1.3-.4c.3-.3.5-.7.5-1.1 0-.3-.1-.5-.2-.7-.2-.3-.4-.5-.6-.5z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-linespacing{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M22 4V3H1v1h10v.3L8 7.4l.7.7L11 5.7v11.6l-2.3-2.4-.7.7 3 3.1v.3H1v1h21v-1H12v-.4l3-3-.7-.7-2.3 2.3V5.8l2.3 2.3.7-.7-3-3V4z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-linespacing,.device-ios i.icon.icon-text-align-center{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-align-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm3 4v1h14V7H4zm-3 5h21v-1H1v1zm3 3v1h14v-1H4zm-3 5h21v-1H1v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-just{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm0 5h21V7H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-just,.device-ios i.icon.icon-text-align-left{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-align-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm14 4H1v1h14V7zM1 12h21v-1H1v1zm14 3H1v1h14v-1zM1 20h21v-1H1v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm7 5h14V7H8v1zm14 3H1v1h21v-1zM8 16h14v-1H8v1zm14 3H1v1h21v-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-de-indent,.device-ios i.icon.icon-text-align-right{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-de-indent{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 20v-1h21v1H1zm10-5h11v1H11v-1zm0-4h11v1H11v-1zm0-4h11v1H11V7zM6.3 7l.7.7-3.8 3.8L7 15.3l-.7.7L2 11.8l-.2-.3.2-.3L6.3 7zM1 3h21v1H1V3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-in-indent{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 20v-1h21v1H1zm11-4H1v-1h11v1zm0-4H1v-1h11v1zm0-4H1V7h11v1zm9 3.2.2.3-.2.3-4.3 4.2-.7-.7 3.8-3.8L16 7.7l.7-.7 4.3 4.2zM22 4H1V3h21v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-in-indent,.device-ios i.icon.icon-table-add-column-left{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-table-add-column-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M15 19H7v-4H0V2h22v17h-7zm0-1h6v-3h-6v3zm0-4h6v-3h-6v3zm-7 4h6v-3H8v3zm0-4h6v-3H8v3zm6-4V7H8v3h6zM8 3v3h6V3H8zm13 0h-6v3h6V3zm-6 4v3h6V7h-6zM3 16h1v2h2v1H4v2H3v-2H1v-1h2v-2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-add-column-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M0 19V2h22v13h-7v4H0zm7-4H1v3h6v-3zm0-4H1v3h6v-3zm7 4H8v3h6v-3zm0-4H8v3h6v-3zm0-1V7H8v3h6zM8 3v3h6V3H8zM1 6h6V3H1v3zm0 1v3h6V7H1zm18 11h2v1h-2v2h-1v-2h-2v-1h2v-2h1v2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-add-column-right,.device-ios i.icon.icon-table-add-row-above{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-table-add-row-above{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M21 20H0V1h15v6h7v13h-1zM7 8H1v3h6V8zm0 4H1v3h6v-3zm0 4H1v3h6v-3zm1 3h6v-3H8v3zm0-4h6v-3H8v3zm0-4h6V8H8v3zm13-3h-6v3h6V8zm0 4h-6v3h6v-3zm0 4h-6v3h6v-3zM19 6h-1V4h-2V3h2V1h1v2h2v1h-2v2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-add-row-below{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M22 1v13h-7v6H0V1h22zM7 10H1v3h6v-3zm0-4H1v3h6V6zm0-4H1v3h6V2zm1 3h6V2H8v3zm0 4h6V6H8v3zm0 4h6v-3H8v3zm13-3h-6v3h6v-3zm0-4h-6v3h6V6zm0-4h-6v3h6V2zm-2 15h2v1h-2v2h-1v-2h-2v-1h2v-2h1v2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-add-row-below,.device-ios i.icon.icon-table-remove-column{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-table-remove-column{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M21 19h-8.6c-.9 1.8-2.7 3-4.9 3s-4-1.2-4.9-3H0V2h22v17h-1zM7.5 12C5 12 3 14 3 16.5S5 21 7.5 21s4.5-2 4.5-4.5S10 12 7.5 12zM14 3H8v3h6V3zm0 4H8v3h6V7zm0 4H8v.1c1.9.2 3.5 1.3 4.4 2.9H14v-3zm0 4h-1.2c.1.5.2 1 .2 1.5s-.1 1-.2 1.5H14v-3zm7-12h-6v3h6V3zm0 4h-6v3h6V7zm0 4h-6v3h6v-3zm0 4h-6v3h6v-3zM9.6 19.3l-2.1-2.1-2.1 2.1-.7-.7 2.1-2.1-2.1-2.1.7-.7 2.1 2.1 2.1-2.1.7.7-2.1 2.1 2.1 2.1-.7.7z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-remove-row{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M21 19h-8.6c-.9 1.8-2.7 3-4.9 3s-4-1.2-4.9-3H0V2h22v17h-1zM1 18h1.2c-.1-.5-.2-1-.2-1.5s.1-1 .2-1.5H1v3zM7 3H1v3h6V3zm0 4H1v3h6V7zm.5 5C5 12 3 14 3 16.5S5 21 7.5 21s4.5-2 4.5-4.5S10 12 7.5 12zM14 3H8v3h6V3zm0 4H8v3h6V7zm0 8h-1.2c.1.5.2 1 .2 1.5s-.1 1-.2 1.5H14v-3zm7-12h-6v3h6V3zm0 4h-6v3h6V7zm0 8h-6v3h6v-3zM9.6 19.3l-2.1-2.1-2.1 2.1-.7-.7 2.1-2.1-2.1-2.1.7-.7 2.1 2.1 2.1-2.1.7.7-2.1 2.1 2.1 2.1-.7.7z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-expand-down,.device-ios i.icon.icon-table-remove-row{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-expand-down{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='m20.5 6.5 1.1 1.1L11 18 .5 7.5l1.1-1.1 9.5 9.5 9.4-9.4z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-pagebreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M8 14v1h1v-1H8zm-2 0v1h1v-1H6zm12 7H3v-6H2v7h17v-7h-1v6zM4 14v1h1v-1H4zm10 0v1h1v-1h-1zm-4 0v1h1v-1h-1zM8.2 1 2 7.6V14h1V9h6V2h9v12h1V1H8.2zM8 8H3.1L8 2.8V8zm4 6v1h1v-1h-1zm4 0v1h1v-1h-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-pagebreak,.device-ios i.icon.icon-sectionbreak{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-sectionbreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M20 14V2H3v12H2V1h19v13h-1zM5 14v1H4v-1h1zm2 0v1H6v-1h1zm2 0v1H8v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm1 0h1v1h-1v-1zM3 21h17v-6h1v7H2v-7h1v6z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-stringbreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M18 12H5.1L9 15.9l-.7.7-4.5-4.5-.6-.6.6-.6 4.5-4.5.7.7L5.1 11H18V5h1v7h-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-pagenumber,.device-ios i.icon.icon-stringbreak{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-pagenumber{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M8.2 1 2 7.6V22h17V1H8.2zM8 2.8V8H3.1L8 2.8zM18 21H3V9h6V2h9v19zm-6-2h1v-4h-.7c0 .2-.1-.1-.1 0-.1.1-.2 0-.3 0-.1.1-.2.1-.4.1h-.4v.9h.9v3zm3.3-1.7c-.3.6-.2 1.1-.3 1.7h.9c0-.3 0-.6.1-.9.1-.3.1-.6.3-.9.1-.3.3-.6.4-.9.2-.3.1-.3.3-.5V15h-3v1h1.9c-.3.4-.4.7-.6 1.3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-link{background-color:var(--brand-slide);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M12.4 9.8s-2.1-.1-3.8 1.2c-2.8 2-3.3 4.3-3.3 4.3s1.6-1.7 3.5-2.5c1.7-.7 3.7-.4 3.7-.4v1.9l4.8-3.3-4.8-3.3v2.1zM11 1C5.5 1 1 5.5 1 11s4.5 10 10 10 10-4.5 10-10S16.5 1 11 1zm0 19c-5 0-9-4.1-9-9 0-5 4-9 9-9s9 4.1 9 9c0 5-4 9-9 9z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-image-library{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cdefs%3E%3ClinearGradient id='a' x1='11.08' x2='11.08' y1='10.26' y2='1.26' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23f3e916'/%3E%3Cstop offset='1' stop-color='%23f89d34'/%3E%3C/linearGradient%3E%3ClinearGradient id='b' x1='11.08' x2='11.08' y1='20.44' y2='11.88' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%235eb6e8'/%3E%3Cstop offset='1' stop-color='%23958cc3'/%3E%3C/linearGradient%3E%3ClinearGradient id='c' x1='1.46' x2='10.46' y1='11.05' y2='11.05' gradientTransform='rotate(90 5.955 11.045)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23cc8dba'/%3E%3Cstop offset='1' stop-color='%23f86867'/%3E%3C/linearGradient%3E%3ClinearGradient id='d' x1='11.73' x2='20.73' y1='11.05' y2='11.05' gradientTransform='rotate(90 16.23 11.05)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%236ac07f'/%3E%3Cstop offset='1' stop-color='%23c5da3d'/%3E%3C/linearGradient%3E%3ClinearGradient id='e' x1='11.74' x2='17.52' y1='10.42' y2='4.63' gradientTransform='rotate(135 14.625 7.528)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23c5da3d'/%3E%3Cstop offset='1' stop-color='%23f3e916'/%3E%3C/linearGradient%3E%3ClinearGradient id='f' x1='4.7' x2='10.48' y1='17.49' y2='11.71' gradientTransform='rotate(135 7.55 14.638)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%239595c3'/%3E%3Cstop offset='1' stop-color='%23cc8dba'/%3E%3C/linearGradient%3E%3ClinearGradient id='g' x1='4.69' x2='10.47' y1='4.64' y2='10.42' gradientTransform='rotate(45 7.572 7.527)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23f86867'/%3E%3Cstop offset='1' stop-color='%23f89d34'/%3E%3C/linearGradient%3E%3ClinearGradient id='h' x1='11.77' x2='17.55' y1='11.78' y2='17.56' gradientTransform='rotate(45 14.618 14.635)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%235ec0e8'/%3E%3Cstop offset='1' stop-color='%236ac07f'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg data-name='Слой 1' style='isolation:isolate'%3E%3Crect width='22' height='22' x='.09' y='.01' rx='4' ry='4' style='opacity:.2'/%3E%3Crect width='21.04' height='21.04' x='.57' y='.49' rx='3.6' ry='3.6' style='fill:%23fff'/%3E%3Crect width='5.5' height='9' x='8.33' y='1.26' rx='2.5' ry='2.5' style='fill:url(%23a);mix-blend-mode:multiply'/%3E%3Crect width='5.5' height='9' x='8.33' y='11.76' rx='2.5' ry='2.5' style='fill:url(%23b)'/%3E%3Crect width='5.5' height='9' x='3.21' y='6.55' rx='2.5' ry='2.5' style='fill:url(%23c);mix-blend-mode:multiply' transform='rotate(-90 5.955 11.045)'/%3E%3Crect width='5.5' height='9' x='13.48' y='6.55' rx='2.5' ry='2.5' style='fill:url(%23d);mix-blend-mode:multiply' transform='rotate(-90 16.23 11.05)'/%3E%3Crect width='5.5' height='9' x='11.87' y='3.03' rx='2.5' ry='2.5' style='fill:url(%23e);mix-blend-mode:multiply' transform='rotate(-135 14.623 7.527)'/%3E%3Crect width='5.5' height='9' x='4.8' y='10.14' rx='2.5' ry='2.5' style='fill:url(%23f);mix-blend-mode:multiply' transform='rotate(-135 7.552 14.639)'/%3E%3Crect width='5.5' height='9' x='4.83' y='3.03' rx='2.5' ry='2.5' style='fill:url(%23g);mix-blend-mode:multiply' transform='rotate(-45 7.576 7.522)'/%3E%3Crect width='5.5' height='9' x='11.87' y='10.14' rx='2.5' ry='2.5' style='fill:url(%23h);mix-blend-mode:multiply' transform='rotate(-45 14.625 14.642)'/%3E%3C/g%3E%3C/svg%3E");height:22px;width:22px}.device-ios i.icon.icon-text-valign-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M2 2h19v1H2zM2 4h19v1H2zM12 18h-1V7.83L8.65 9.8 8 8.94 11.5 6 15 9l-.65.8L12 7.83V18z' class='cls-1'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-valign-middle,.device-ios i.icon.icon-text-valign-top{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-valign-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M2 10h19v1H2zM2 12h19v1H2zM11 2h1v5.17l2.35-1.97.65.86L11.5 9 8 6l.65-.8L11 7.17V2zM12 21h-1v-5.17L8.65 17.8 8 16.94 11.5 14l3.5 3-.65.8L12 15.83V21z' class='cls-1'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-valign-bottom{background-color:var(--brand-slide);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M2 18h19v1H2zM2 20h19v1H2zM11 4h1v11.17l2.35-1.97.65.86L11.5 17 8 14l.65-.8L11 15.17V4z' class='cls-1'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-table-borders-all{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-all,.device-ios i.icon.icon-table-borders-none{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-none{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z' opacity='.3'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-inner{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M26 13H14V1h-1v12H1v1h12v12h1V14h12v-1z'/%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-inner,.device-ios i.icon.icon-table-borders-outer{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-outer{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h1v27H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-center,.device-ios i.icon.icon-table-borders-left{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M13 0h1v27h-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M26 0h1v27h-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-right,.device-ios i.icon.icon-table-borders-top{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h27v1H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 13h27v1H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-bottom,.device-ios i.icon.icon-table-borders-middle{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-bottom{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 26h27v1H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-backward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h17v17H1z' opacity='.3'/%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-backward,.device-ios i.icon.icon-move-forward{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-move-forward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z' opacity='.3'/%3E%3Cpath d='M1 1h17v17H1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-background{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M8 8h13v13H8z' opacity='.3'/%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-background,.device-ios i.icon.icon-move-foreground{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-move-foreground{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z' opacity='.3'/%3E%3Cpath d='M8 8h13v13H8z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-align-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M1 21h1V1H1v20zm3-8v4h16v-4H4zm8-8H4v4h8V5z' style='fill-rule:evenodd;clip-rule:evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-align-center,.device-ios i.icon.icon-align-left{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-align-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M19 13h-8V9h4V5h-4V1h-1v4H6v4h4v4H2v4h8v4h1v-4h8z' style='fill-rule:evenodd;clip-rule:evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-align-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M20 1v20h1V1h-1zM2 17h16v-4H2v4zm8-8h8V5h-8v4z' style='fill-rule:evenodd;clip-rule:evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-align-right,.device-ios i.icon.icon-align-top{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-align-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M1 1v1h20V1H1zm8 3H5v16h4V4zm8 8V4h-4v8h4z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-align-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M13 2v8H9V6H5v4H1v1h4v4h4v-4h4v8h4v-8h4v-1h-4V2z' style='fill-rule:evenodd;clip-rule:evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-align-bottom,.device-ios i.icon.icon-align-middle{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-align-bottom{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M21 20v-1H1v1h20zM9 1H5v16h4V1zm4 8v8h4V9h-4z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-align-horizontal{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M1 1v1h20V1H1zm0 18v1h20v-1H1zM9 3H5v15h4V3zm8 11V7h-4v7h4z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-align-horizontal,.device-ios i.icon.icon-align-vertical{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-align-vertical{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M1 21h1V1H1v20zm18 0h1V1h-1v20zM3 13v4h15v-4H3zm11-8H7v4h7V5z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-users{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M16 7c0 2.341-.584 4.135-1.386 5.312C13.807 13.497 12.834 14 12 14c-.834 0-1.807-.503-2.614-1.688C8.584 11.135 8 9.341 8 7c0-2.385 1.979-4 4-4s4 1.615 4 4Zm-.81 6.22C14.286 14.375 13.144 15 12 15s-2.287-.625-3.19-1.78c-1.405.564-2.597 1.129-3.54 1.702C3.553 15.967 3 16.832 3 17.5c0 .755.426 1.588 1.823 2.288C6.25 20.503 8.573 21 12 21c3.427 0 5.75-.497 7.177-1.212C20.574 19.088 21 18.255 21 17.5c0-.667-.553-1.533-2.27-2.578-.943-.573-2.135-1.138-3.54-1.702Zm.564-.85C16.514 11.028 17 9.21 17 7c0-3-2.491-5-5-5S7 4 7 7c0 2.21.486 4.028 1.246 5.37C4.39 13.94 2 15.579 2 17.5 2 19.985 5 22 12 22s10-2.015 10-4.5c0-1.921-2.39-3.56-6.246-5.13Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-app-settings,.device-ios i.icon.icon-users{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-app-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M7 14h9a4 4 0 0 1 0 8H7a4 4 0 0 1 0-8Zm9-1a5 5 0 0 1 0 10H7a5 5 0 0 1 0-10h9Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M16 20a2 2 0 1 1 0-4 2 2 0 0 1 0 4Zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6ZM16 3H7a4 4 0 1 0 0 8h9a4 4 0 0 0 0-8ZM7 2a5 5 0 0 0 0 10h9a5 5 0 0 0 0-10H7Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M7 9a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm0 1a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-menu-comment{background-color:var(--text-tertiary);height:30px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath fill='%23A3A3A3' fill-rule='evenodd' d='M10 15a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.714a1.714 1.714 0 1 0 0-3.428 1.714 1.714 0 0 0 0 3.428ZM18 15a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.714a1.714 1.714 0 1 0 0-3.428 1.714 1.714 0 0 0 0 3.428ZM26 15a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.714a1.714 1.714 0 1 0 0-3.428 1.714 1.714 0 0 0 0 3.428Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:30px}.device-ios i.icon.icon-resolve-comment{background-color:var(--brand-slide);height:30px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M11.62 20.856a.5.5 0 0 0 .738-.021L22.516 9.058a.75.75 0 1 0-1.138-.98l-9.023 10.509a.5.5 0 0 1-.736.025l-3.513-3.575a.755.755 0 0 0-1.082 1.053l4.596 4.765Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:30px}.device-ios i.icon.icon-resolve-comment.check{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath fill='%23fff' d='M0 0h30v30H0V0Z'/%3E%3Cpath fill='%234cd964' fill-rule='evenodd' d='M11.62 20.856a.5.5 0 0 0 .738-.021L22.516 9.058a.75.75 0 1 0-1.138-.98l-9.023 10.509a.5.5 0 0 1-.736.025l-3.513-3.575a.755.755 0 0 0-1.083 1.054l4.597 4.764Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:30px;width:30px}.device-ios i.icon.icon-insert-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M20.154 9.007h-8.308c-1.02 0-1.846.828-1.846 1.848v4.314c0 1.021.827 1.849 1.846 1.849h1.987c.108 0 .212.038.295.107l4.115 3.267c.3.25.757.037.757-.355V17.48c0-.255.207-.462.462-.462h.692c1.02 0 1.846-.828 1.846-1.849v-4.314c0-1.02-.827-1.848-1.846-1.848ZM20 10.008a1 1 0 0 1 1 1.002v4.005a1 1 0 0 1-1 1.002h-1.997L18 18.9v.1l-3.5-2.983H12a1 1 0 0 1-1-1.002V11.01a1 1 0 0 1 1-1h8Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' d='M14.5 3h-10C3.19 3 2 4.215 2 5.503v6.532c0 1.287 1.19 1.978 2.5 1.978h1c.328 0 .5.179.5.5v3.005c0 .494.614.817 1 .5l4-3.032V13.5l-4 3v-3.488H4.5c-.71 0-1.5-.28-1.5-.977V5.503c0-.698.79-1.502 1.5-1.502h10c.71 0 1.5.804 1.5 1.502v2.503h1V5.503C17 4.215 15.81 3 14.5 3Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-slide,.device-ios i.icon.icon-insert-comment{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-add-slide{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M4 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6Zm7 4.933V8h2v2.933h3v2h-3V16h-2v-3.067H8v-2h3Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-shape{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cellipse cx='15.333' cy='14.4' fill='var(--brand-slide)' rx='5.667' ry='5.6'/%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M5 4.8a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h4.328a6.317 6.317 0 0 1-.47-2.4c0-3.534 2.899-6.4 6.475-6.4.56 0 1.102.07 1.62.202V5.8a1 1 0 0 0-1-1H5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-image,.device-ios i.icon.icon-add-shape{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-add-image{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='m5.792 16.667 3.083-3.5 2.25 2.333L14.21 12l4 4.667H5.792Zm13.667 1.859c.361-.316.542-.68.542-1.094V6.568c0-.413-.18-.778-.542-1.094A1.842 1.842 0 0 0 18.21 5H5.792c-.472 0-.89.158-1.25.474C4.18 5.79 4 6.154 4 6.568v10.864c0 .414.18.778.542 1.094.36.316.778.474 1.25.474h12.417c.472 0 .89-.158 1.25-.474ZM8.8 11.222c.884 0 1.6-.696 1.6-1.555 0-.86-.716-1.556-1.6-1.556-.883 0-1.6.697-1.6 1.556 0 .859.717 1.555 1.6 1.555Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-other{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M7 18a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm6.5 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm5 1.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-other,.device-ios i.icon.icon-add-table{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-add-table{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M1 2h21v19H1V2Zm11 1h9v5h-9V3Zm0 6h9v5h-9V9Zm-1 5V9H2v5h9Zm-9 1v5h9v-5H2Zm10 0h9v5h-9v-5ZM11 3v5H2V3h9Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-slide{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--fill-white)' fill-rule='evenodd' d='M4 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6Zm7 4.933V8h2v2.933h3v2h-3V16h-2v-3.067H8v-2h3Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-shape,.device-ios .tab-link-active i.icon.icon-add-slide{background-color:var(--fill-white);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios .tab-link-active i.icon.icon-add-shape{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cellipse cx='15.333' cy='14.4' fill='%23fff' rx='5.667' ry='5.6'/%3E%3Cpath fill='var(--fill-white)' fill-rule='evenodd' d='M5 4.8a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h4.328a6.317 6.317 0 0 1-.47-2.4c0-3.534 2.899-6.4 6.475-6.4.56 0 1.102.07 1.62.202V5.8a1 1 0 0 0-1-1H5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-image{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--fill-white)' fill-rule='evenodd' d='m5.792 16.667 3.083-3.5 2.25 2.333L14.21 12l4 4.667H5.792Zm13.667 1.859c.361-.316.542-.68.542-1.094V6.568c0-.413-.18-.778-.542-1.094A1.842 1.842 0 0 0 18.21 5H5.792c-.472 0-.89.158-1.25.474C4.18 5.79 4 6.154 4 6.568v10.864c0 .414.18.778.542 1.094.36.316.778.474 1.25.474h12.417c.472 0 .89-.158 1.25-.474ZM8.8 11.222c.884 0 1.6-.696 1.6-1.555 0-.86-.716-1.556-1.6-1.556-.883 0-1.6.697-1.6 1.556 0 .859.717 1.555 1.6 1.555Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-image,.device-ios .tab-link-active i.icon.icon-add-other{background-color:var(--fill-white);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios .tab-link-active i.icon.icon-add-other{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--fill-white)' fill-rule='evenodd' d='M7 18a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm6.5 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm5 1.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-expand-up{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--fill-white)' viewBox='0 0 22 22'%3E%3Cpath d='M10.9 5.1 2 13.9 4.1 16l7-6.8 6.8 6.8 2.1-2.1-8.8-8.8-.1-.1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-expand-down,.device-android i.icon.icon-expand-up{background-color:var(--brand-slide);height:17px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:17px}.device-android i.icon.icon-expand-down{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M10.9 16.9 2 8.1 4.1 6l7 6.8L17.9 6 20 8.1l-8.8 8.8-.1.1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-edit{background-color:var(--brand-slide);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M0 20h22v1H0v-1zM17.1 3.1 3.5 16.7 3 20l3.3-.5L19.9 5.9zM20.5 5.3 22 3.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5 2.8 2.8z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-edit-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cpath fill-rule='evenodd' d='M2.5 15 8 1h2l4.415 11.257-1.601 1.601L12.12 12H5.87l-1.12 3zM9 3.67 6.62 10h4.76z' clip-rule='evenodd'/%3E%3Cpath d='M10 19.5V22h2.5l7.372-7.372-2.5-2.5zm11.805-6.805c.26-.26.26-.68 0-.94l-1.56-1.56a.664.664 0 0 0-.94 0l-1.22 1.22 2.5 2.5z'/%3E%3C/svg%3E")}.device-android i.icon.icon-edit-settings,.device-android i.icon.icon-play{background-color:var(--toolbar-icons);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-play{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M4.046 2.988A.286.286 0 0 1 4.07 3c.59.336 12.711 7.293 13.897 8.027-.583.342-13.013 7.488-13.934 7.983l.013-16.022M3.99 2C3.443 2 3 2.453 3 3.015V19.01c0 .613.479.99.993.99.173 0 .35-.043.514-.133.89-.491 13.188-7.559 13.94-8a.99.99 0 0 0 0-1.732C17.404 9.533 5.153 2.502 4.54 2.154A1.11 1.11 0 0 0 3.99 2z'/%3E%3C/svg%3E")}.device-android i.icon.icon-reader{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M17 21H1V9h6V2h10v5h1V1H6.2L0 7.6V22h18v-3h-1v2zM6 2.8V8H1.1L6 2.8zM13 8c-5.1 0-9 5-9 5s4.1 5 9 5c5 0 9-5 9-5s-4-5-9-5zm-4.3 7.5C6.8 14.4 6.4 13 6.4 13s.4-1.5 2.4-2.6C8.3 11.2 8 12 8 13c0 .9.3 1.8.7 2.5zm4.3 1.2c-2.1 0-3.7-1.7-3.7-3.7 0-2.1 1.7-3.7 3.7-3.7 2.1 0 3.7 1.7 3.7 3.7 0 2.1-1.6 3.7-3.7 3.7zm4.3-1.2c.4-.7.7-1.6.7-2.5 0-1-.3-1.8-.7-2.6 2 1.1 3.4 2.6 3.4 2.6s-1.5 1.4-3.4 2.5zM13 11.7c-.7 0-1.3.6-1.3 1.3s.6 1.3 1.3 1.3 1.3-.6 1.3-1.3-.6-1.3-1.3-1.3z'/%3E%3C/svg%3E")}.device-android i.icon.icon-download,.device-android i.icon.icon-reader{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-download{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M12 0h-1v14l-3.6-3.7-.7.8 4.8 4.9 4.8-4.9-.7-.8L12 14V0Z'/%3E%3Cpath d='M14 5v1h5v14H4V6h5V5H3v16h17V5h-6Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-print{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath fill-rule='evenodd' d='M5 1h12v5h4v11h-4v4H5v-4H1V6h4V1Zm1 5h10V2H6v4ZM5 16v-3H2v3h3Zm-3-4h18V7H2v5Zm18 1h-3v3h3v-3Zm-4 0H6v7h10v-7Zm-2 3H8v-1h6v1Zm0 2H8v-1h6v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-print,.device-android i.icon.icon-spellcheck{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-spellcheck{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cg fill-rule='evenodd' clip-rule='evenodd'%3E%3Cpath d='M8 1 3 15h1.2l1.777-5h5.046l.654 1.84a6.03 6.03 0 0 1 .916-.78L9 1H8Zm.5 1.9L10.668 9H6.332L8.5 2.9ZM16 21a5 5 0 1 0 0-10 5 5 0 0 0 0 10Zm-.646-2.646 4-4-.708-.708L15 17.293l-1.646-1.647-.708.708 2 2 .354.353.354-.353Z'/%3E%3C/g%3E%3C/svg%3E")}.device-android i.icon.icon-feedback{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill-rule='evenodd' d='M21 6H3v12h18V6ZM2 5v14h20V5H2Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m2.666 6.372.668-.744 8.666 7.7 8.666-7.7.668.744-9.334 8.3-9.334-8.3Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m9.376 11.33-6 7-.752-.66 6-7 .752.66ZM15.376 10.67l6 7-.752.66-6-7 .752-.66Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-feedback,.device-android i.icon.icon-setup{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-setup{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M0 3v16h22V3H0zm21 14H1V5h20v12zM16.5 5.9l-7.2 7.2-.5 1.9H4v1h5c.4 0 .2 0 .2-.2l2.2-.6L18.7 8l-2.2-2.1zm-6.6 7.2 6.5-6.4L18 8l-6.5 6.4-1.6-1.3z'/%3E%3C/svg%3E")}.device-android i.icon.icon-versions{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='-1 7 22 22'%3E%3Cpath d='M19 12c0-1.1-.9-2-2-2 0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2-1.1 0-2 .9-2 2-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V14c0-1.1-.9-2-2-2zM5 9h10c.6 0 1 .4 1 1H4c0-.6.4-1 1-1zm-2 2h14c.6 0 1 .4 1 1H2c0-.6.4-1 1-1zm17 15c0 .6-.4 1-1 1H1c-.6 0-1-.4-1-1V14c0-.6.4-1 1-1h18c.6 0 1 .4 1 1v12z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-center,.device-android i.icon.icon-versions{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-text-align-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm3 4v1h14V7H4zm-3 5h21v-1H1v1zm3 3v1h14v-1H4zm-3 5h21v-1H1v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-just{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm0 5h21V7H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-just,.device-android i.icon.icon-text-align-left{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-text-align-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm14 4H1v1h14V7zM1 12h21v-1H1v1zm14 3H1v1h14v-1zM1 20h21v-1H1v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm7 5h14V7H8v1zm14 3H1v1h21v-1zM8 16h14v-1H8v1zm14 3H1v1h21v-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-de-indent,.device-android i.icon.icon-text-align-right{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-de-indent{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 20v-1h21v1H1zm10-5h11v1H11v-1zm0-4h11v1H11v-1zm0-4h11v1H11V7zM6.3 7l.7.7-3.8 3.8L7 15.3l-.7.7L2 11.8l-.2-.3.2-.3L6.3 7zM1 3h21v1H1V3z'/%3E%3C/svg%3E")}.device-android i.icon.icon-in-indent{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M1 20v-1h21v1H1zm11-4H1v-1h11v1zm0-4H1v-1h11v1zm0-4H1V7h11v1zm9 3.2.2.3-.2.3-4.3 4.2-.7-.7 3.8-3.8L16 7.7l.7-.7 4.3 4.2zM22 4H1V3h21v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-in-indent,.device-android i.icon.icon-table-add-column-left{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-table-add-column-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M15 19H7v-4H0V2h22v17h-7zm0-1h6v-3h-6v3zm0-4h6v-3h-6v3zm-7 4h6v-3H8v3zm0-4h6v-3H8v3zm6-4V7H8v3h6zM8 3v3h6V3H8zm13 0h-6v3h6V3zm-6 4v3h6V7h-6zM3 16h1v2h2v1H4v2H3v-2H1v-1h2v-2z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-add-column-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M0 19V2h22v13h-7v4H0zm7-4H1v3h6v-3zm0-4H1v3h6v-3zm7 4H8v3h6v-3zm0-4H8v3h6v-3zm0-1V7H8v3h6zM8 3v3h6V3H8zM1 6h6V3H1v3zm0 1v3h6V7H1zm18 11h2v1h-2v2h-1v-2h-2v-1h2v-2h1v2z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-add-column-right,.device-android i.icon.icon-table-add-row-above{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-table-add-row-above{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M21 20H0V1h15v6h7v13h-1zM7 8H1v3h6V8zm0 4H1v3h6v-3zm0 4H1v3h6v-3zm1 3h6v-3H8v3zm0-4h6v-3H8v3zm0-4h6V8H8v3zm13-3h-6v3h6V8zm0 4h-6v3h6v-3zm0 4h-6v3h6v-3zM19 6h-1V4h-2V3h2V1h1v2h2v1h-2v2z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-add-row-below{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M22 1v13h-7v6H0V1h22zM7 10H1v3h6v-3zm0-4H1v3h6V6zm0-4H1v3h6V2zm1 3h6V2H8v3zm0 4h6V6H8v3zm0 4h6v-3H8v3zm13-3h-6v3h6v-3zm0-4h-6v3h6V6zm0-4h-6v3h6V2zm-2 15h2v1h-2v2h-1v-2h-2v-1h2v-2h1v2z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-add-row-below,.device-android i.icon.icon-table-remove-column{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-table-remove-column{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M21 19h-8.6c-.9 1.8-2.7 3-4.9 3s-4-1.2-4.9-3H0V2h22v17h-1zM7.5 12C5 12 3 14 3 16.5S5 21 7.5 21s4.5-2 4.5-4.5S10 12 7.5 12zM14 3H8v3h6V3zm0 4H8v3h6V7zm0 4H8v.1c1.9.2 3.5 1.3 4.4 2.9H14v-3zm0 4h-1.2c.1.5.2 1 .2 1.5s-.1 1-.2 1.5H14v-3zm7-12h-6v3h6V3zm0 4h-6v3h6V7zm0 4h-6v3h6v-3zm0 4h-6v3h6v-3zM9.6 19.3l-2.1-2.1-2.1 2.1-.7-.7 2.1-2.1-2.1-2.1.7-.7 2.1 2.1 2.1-2.1.7.7-2.1 2.1 2.1 2.1-.7.7z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-remove-row{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M21 19h-8.6c-.9 1.8-2.7 3-4.9 3s-4-1.2-4.9-3H0V2h22v17h-1zM1 18h1.2c-.1-.5-.2-1-.2-1.5s.1-1 .2-1.5H1v3zM7 3H1v3h6V3zm0 4H1v3h6V7zm.5 5C5 12 3 14 3 16.5S5 21 7.5 21s4.5-2 4.5-4.5S10 12 7.5 12zM14 3H8v3h6V3zm0 4H8v3h6V7zm0 8h-1.2c.1.5.2 1 .2 1.5s-.1 1-.2 1.5H14v-3zm7-12h-6v3h6V3zm0 4h-6v3h6V7zm0 8h-6v3h6v-3zM9.6 19.3l-2.1-2.1-2.1 2.1-.7-.7 2.1-2.1-2.1-2.1.7-.7 2.1 2.1 2.1-2.1.7.7-2.1 2.1 2.1 2.1-.7.7z'/%3E%3C/svg%3E")}.device-android i.icon.icon-pagebreak,.device-android i.icon.icon-table-remove-row{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-pagebreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M8 14v1h1v-1H8zm-2 0v1h1v-1H6zm12 7H3v-6H2v7h17v-7h-1v6zM4 14v1h1v-1H4zm10 0v1h1v-1h-1zm-4 0v1h1v-1h-1zM8.2 1 2 7.6V14h1V9h6V2h9v12h1V1H8.2zM8 8H3.1L8 2.8V8zm4 6v1h1v-1h-1zm4 0v1h1v-1h-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-sectionbreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M20 14V2H3v12H2V1h19v13h-1zM5 14v1H4v-1h1zm2 0v1H6v-1h1zm2 0v1H8v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm1 0h1v1h-1v-1zM3 21h17v-6h1v7H2v-7h1v6z'/%3E%3C/svg%3E")}.device-android i.icon.icon-sectionbreak,.device-android i.icon.icon-stringbreak{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-stringbreak{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M18 12H5.1L9 15.9l-.7.7-4.5-4.5-.6-.6.6-.6 4.5-4.5.7.7L5.1 11H18V5h1v7h-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-pagenumber{height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M8.2 1 2 7.6V22h17V1H8.2zM8 2.8V8H3.1L8 2.8zM18 21H3V9h6V2h9v19zm-6-2h1v-4h-.7c0 .2-.1-.1-.1 0-.1.1-.2 0-.3 0-.1.1-.2.1-.4.1h-.4v.9h.9v3zm3.3-1.7c-.3.6-.2 1.1-.3 1.7h.9c0-.3 0-.6.1-.9.1-.3.1-.6.3-.9.1-.3.3-.6.4-.9.2-.3.1-.3.3-.5V15h-3v1h1.9c-.3.4-.4.7-.6 1.3z'/%3E%3C/svg%3E");width:22px}.device-android i.icon.icon-image-library,.device-android i.icon.icon-pagenumber{background-color:var(--brand-slide);-webkit-mask-repeat:round;-webkit-mask-size:contain}.device-android i.icon.icon-image-library{height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M20 5.5H4a.5.5 0 0 0-.5.5v9.582l4.533-3.892a1.25 1.25 0 0 1 1.555-.06l3.985 2.928 2.389-1.88a1.25 1.25 0 0 1 1.631.073l2.907 2.745V6a.5.5 0 0 0-.5-.5Zm.5 12.03-.015.015-3.765-3.556-2.37 1.865a1.25 1.25 0 0 1-1.512.025L8.86 12.957 3.5 17.56V18a.5.5 0 0 0 .5.5h16a.5.5 0 0 0 .5-.5v-.47ZM4 4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H4Zm12.5 5.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z' clip-rule='evenodd'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='transparent' d='M0 0h24v24H0V0Z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");width:24px}.device-android i.icon.icon-text-valign-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M2 2h19v1H2zM2 4h19v1H2zM12 18h-1V7.83L8.65 9.8 8 8.94 11.5 6 15 9l-.65.8L12 7.83V18z' class='cls-1'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-valign-middle,.device-android i.icon.icon-text-valign-top{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-text-valign-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M2 10h19v1H2zM2 12h19v1H2zM11 2h1v5.17l2.35-1.97.65.86L11.5 9 8 6l.65-.8L11 7.17V2zM12 21h-1v-5.17L8.65 17.8 8 16.94 11.5 14l3.5 3-.65.8L12 15.83V21z' class='cls-1'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-valign-bottom{background-color:var(--brand-slide);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 22 22'%3E%3Cpath d='M2 18h19v1H2zM2 20h19v1H2zM11 4h1v11.17l2.35-1.97.65.86L11.5 17 8 14l.65-.8L11 15.17V4z' class='cls-1'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-table-borders-all{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-all,.device-android i.icon.icon-table-borders-none{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-none{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z' opacity='.3'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-inner{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M26 13H14V1h-1v12H1v1h12v12h1V14h12v-1z'/%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-inner,.device-android i.icon.icon-table-borders-outer{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-outer{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h1v27H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-center,.device-android i.icon.icon-table-borders-left{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M13 0h1v27h-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M26 0h1v27h-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-right,.device-android i.icon.icon-table-borders-top{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h27v1H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 13h27v1H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-bottom,.device-android i.icon.icon-table-borders-middle{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-bottom{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 26h27v1H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-move-backward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h17v17H1z' opacity='.3'/%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-move-backward,.device-android i.icon.icon-move-forward{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-move-forward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z' opacity='.3'/%3E%3Cpath d='M1 1h17v17H1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-move-background{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M8 8h13v13H8z' opacity='.3'/%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-move-background,.device-android i.icon.icon-move-foreground{background-color:var(--brand-slide);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-move-foreground{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-slide)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z' opacity='.3'/%3E%3Cpath d='M8 8h13v13H8z'/%3E%3C/svg%3E")}.device-android i.icon.icon-align-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M1 21h1V1H1v20zm3-8v4h16v-4H4zm8-8H4v4h8V5z' style='fill-rule:evenodd;clip-rule:evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-align-center,.device-android i.icon.icon-align-left{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-align-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M19 13h-8V9h4V5h-4V1h-1v4H6v4h4v4H2v4h8v4h1v-4h8z' style='fill-rule:evenodd;clip-rule:evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-align-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M20 1v20h1V1h-1zM2 17h16v-4H2v4zm8-8h8V5h-8v4z' style='fill-rule:evenodd;clip-rule:evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-align-right,.device-android i.icon.icon-align-top{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-align-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M1 1v1h20V1H1zm8 3H5v16h4V4zm8 8V4h-4v8h4z'/%3E%3C/svg%3E")}.device-android i.icon.icon-align-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M13 2v8H9V6H5v4H1v1h4v4h4v-4h4v8h4v-8h4v-1h-4V2z' style='fill-rule:evenodd;clip-rule:evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-align-bottom,.device-android i.icon.icon-align-middle{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-align-bottom{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M21 20v-1H1v1h20zM9 1H5v16h4V1zm4 8v8h4V9h-4z'/%3E%3C/svg%3E")}.device-android i.icon.icon-align-horizontal{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M1 1v1h20V1H1zm0 18v1h20v-1H1zM9 3H5v15h4V3zm8 11V7h-4v7h4z'/%3E%3C/svg%3E")}.device-android i.icon.icon-align-horizontal,.device-android i.icon.icon-align-vertical{background-color:var(--brand-slide);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-align-vertical{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' fill='var(--brand-slide)' style='enable-background:new 0 0 22 22' viewBox='0 0 22 22'%3E%3Cpath d='M1 21h1V1H1v20zm18 0h1V1h-1v20zM3 13v4h15v-4H3zm11-8H7v4h7V5z'/%3E%3C/svg%3E")}.device-android i.icon.icon-users{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M15.5 7c0 2.262-.564 3.952-1.299 5.03-.743 1.091-1.578 1.47-2.201 1.47s-1.458-.379-2.201-1.47C9.064 10.953 8.5 9.263 8.5 7c0-2.077 1.722-3.5 3.5-3.5s3.5 1.423 3.5 3.5Zm-.654 6.622C14.006 14.519 13.004 15 12 15s-2.006-.48-2.846-1.378c-1.457.578-2.676 1.15-3.625 1.728C3.83 16.384 3.5 17.12 3.5 17.5c0 .51.264 1.198 1.547 1.84 1.328.666 3.562 1.16 6.953 1.16 3.39 0 5.625-.494 6.953-1.16 1.283-.642 1.547-1.33 1.547-1.84 0-.38-.329-1.116-2.03-2.15-.948-.577-2.167-1.15-3.624-1.728Zm.908-1.252C16.514 11.028 17 9.21 17 7c0-3-2.491-5-5-5S7 4 7 7c0 2.21.486 4.028 1.246 5.37C4.39 13.94 2 15.579 2 17.5 2 19.985 5 22 12 22s10-2.015 10-4.5c0-1.921-2.39-3.56-6.246-5.13Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-app-settings,.device-android i.icon.icon-users{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-app-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M7 14h9a4 4 0 0 1 0 8H7a4 4 0 0 1 0-8Zm9-1a5 5 0 0 1 0 10H7a5 5 0 0 1 0-10h9Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M16 20a2 2 0 1 1 0-4 2 2 0 0 1 0 4Zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6ZM16 3H7a4 4 0 1 0 0 8h9a4 4 0 0 0 0-8ZM7 2a5 5 0 0 0 0 10h9a5 5 0 0 0 0-10H7Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-slide)' fill-rule='evenodd' d='M7 9a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm0 1a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-menu-comment{background-color:var(--text-tertiary);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--text-tertiary)' fill-opacity='.6' d='M16.605 16.585c.403-.406.868-.608 1.395-.608s.992.202 1.395.608c.403.405.605.873.605 1.403s-.202.998-.605 1.404c-.403.405-.868.608-1.395.608s-.992-.203-1.395-.608c-.403-.406-.605-.873-.605-1.404 0-.53.202-.998.605-1.403Zm0-5.988c.403-.406.868-.609 1.395-.609s.992.203 1.395.609c.403.405.605.873.605 1.403s-.202.998-.605 1.403c-.403.406-.868.609-1.395.609s-.992-.203-1.395-.609C16.202 12.999 16 12.53 16 12s.202-.998.605-1.403Zm2.79-3.182c-.403.406-.868.608-1.395.608s-.992-.202-1.395-.608C16.202 7.01 16 6.542 16 6.012s.202-.998.605-1.404C17.008 4.203 17.473 4 18 4s.992.203 1.395.608c.403.406.605.873.605 1.404 0 .53-.202.998-.605 1.403Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-resolve-comment{background-color:var(--brand-slide);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-resolve-comment.check{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%234cd964' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E");height:24px;width:24px}.device-android i.icon.icon-done-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='var(--brand-slide)' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-done-comment,.device-android i.icon.icon-insert-comment{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-insert-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' d='M19.5 3h-15C3.19 3 2 4.215 2 5.503v9.532c0 1.287 1.19 1.978 2.5 1.978h1c.328 0 .5.179.5.5V21l6-4h8a2 2 0 0 0 2-2V8h-1.5v6.5a1 1 0 0 1-1 1h-8l-4 2.5v-2.5h-3a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1h15a1 1 0 0 1 1 1V8H22V5.503C22 4.215 20.81 3 19.5 3Z'/%3E%3Cpath fill='var(--brand-slide)' d='M6 7.5h12V9H6V7.5ZM6 11h12v1.5H6V11Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-done-comment-white{background-color:var(--fill-white);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--fill-white)' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-add-table{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' d='M4 5.6h7.2v3.2H4V5.6ZM12.8 5.6H20v3.2h-7.2V5.6ZM4 10.4h7.2v3.2H4v-3.2ZM12.8 10.4H20v3.2h-7.2v-3.2ZM4 15.2h7.2v3.2H4v-3.2ZM12.8 15.2H20v3.2h-7.2v-3.2Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-add-table,.device-android i.icon.icon-link{background-color:var(--brand-slide);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-link{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-slide)' d='M17.024 7c1.377 0 2.55.498 3.52 1.495C21.515 9.461 22 10.63 22 12c0 1.37-.485 2.555-1.455 3.552-.97.965-2.144 1.448-3.522 1.448H13v-2h4c.845 0 1.588-.212 2.183-.804.626-.623.817-1.355.817-2.196 0-.841-.19-1.558-.817-2.15-.595-.623-1.314-.85-2.16-.85H13V7h4.023Zm-9.015 5.981V11.02h7.982v1.962H8.009Zm-3.24-3.13C4.176 10.441 4 11.158 4 12s.175 1.573.77 2.196C5.396 14.788 6.155 15 7 15h4.014v2H6.977c-1.378 0-2.551-.483-3.522-1.448C2.485 14.555 2 13.37 2 12c0-1.37.485-2.539 1.455-3.505C4.425 7.498 5.6 7 6.977 7h4.037v2H6.977c-.846 0-1.581.227-2.207.85Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-plus{background-color:var(--fill-white);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--fill-white)' viewBox='0 0 22 22'%3E%3Cpath d='M21 12h-9v9h-2v-9H1v-2h9V1h2v9h9v2z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-logo{height:14px;width:100px}.device-android .navbar i.icon.icon-undo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M20 17v-2c0-1.7-1.3-3-3-3H3.7l3.4 3.4-1.4 1.4-5.2-5.2L0 11l.5-.6 5.2-5.2 1.4 1.4L3.7 10H17c2.8 0 5 2.2 5 5v2h-2z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-redo,.device-android .navbar i.icon.icon-undo{background-color:var(--toolbar-icons);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-redo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M0 17v-2c0-2.8 2.2-5 5-5h13.3l-3.4-3.4 1.4-1.4 5.2 5.2.5.6-.5.6-5.2 5.2-1.4-1.4 3.4-3.4H5c-1.7 0-3 1.3-3 3v2H0z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-burger{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='-8 1 22 22'%3E%3Cpath d='M-6 6v2h18V6H-6zm0 7h18v-2H-6v2zm0 5h18v-2H-6v2z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-burger,.device-android .navbar i.icon.icon-plus{background-color:var(--toolbar-icons);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-plus{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M21 12h-9v9h-2v-9H1v-2h9V1h2v9h9v2z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-play{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M4.046 2.988A.286.286 0 0 1 4.07 3c.59.336 12.711 7.293 13.897 8.027-.583.342-13.013 7.488-13.934 7.983l.013-16.022M3.99 2C3.443 2 3 2.453 3 3.015V19.01c0 .613.479.99.993.99.173 0 .35-.043.514-.133.89-.491 13.188-7.559 13.94-8a.99.99 0 0 0 0-1.732C17.404 9.533 5.153 2.502 4.54 2.154A1.11 1.11 0 0 0 3.99 2z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-play,.device-android .navbar i.icon.icon-settings{background-color:var(--toolbar-icons);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M12.1 2H9.9c-.3 0-.5.2-.6.5l-.5 2.4c0 .2-.2.3-.3.3s-.1 0-.2-.1L6.2 3.8c-.1-.1-.2-.1-.4-.1-.1 0-.3 0-.4.1L3.8 5.4c-.1.2-.2.5 0 .8l1.3 2.1c.1.2.1.4-.2.5l-2.4.5c-.3.1-.5.3-.5.6v2.2c0 .3.2.5.5.6l2.4.5c.3.1.4.3.2.5l-1.3 2.1c-.2.2-.1.6.1.8l1.6 1.6c.1.1.3.2.4.2s.2 0 .3-.1L8.3 17c.1-.1.1-.1.2-.1s.3.1.3.3l.5 2.3c.1.3.3.5.6.5h2.2c.3 0 .5-.2.6-.5l.5-2.4c0-.2.1-.3.3-.3.1 0 .1 0 .2.1l2.1 1.3c.1.1.2.1.3.1.2 0 .3-.1.4-.2l1.6-1.6c.2-.2.2-.5.1-.8l-1.3-2.1c-.2-.2-.1-.5.2-.5l2.4-.5c.3-.1.5-.3.5-.6V9.8c0-.3-.2-.5-.5-.6l-2.4-.5c-.3-.1-.4-.3-.2-.5l1.3-2.1c.2-.2.1-.6-.1-.8l-1.6-1.6c-.1-.1-.3-.2-.4-.2s-.2 0-.3.1l-2.1 1.3c-.1.1-.1.1-.2.1s-.3-.1-.3-.3l-.5-2.2c-.1-.3-.3-.5-.6-.5zM11 14.5c-1.9 0-3.5-1.6-3.5-3.5S9.1 7.5 11 7.5s3.5 1.6 3.5 3.5-1.6 3.5-3.5 3.5z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-prev{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M5.1 10.9 13.9 2 16 4.1l-6.8 7 6.8 6.8-2.1 2.1-8.8-8.8-.1-.1z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-next,.device-android .navbar i.icon.icon-prev{background-color:var(--toolbar-icons);height:20px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:20px}.device-android .navbar i.icon.icon-next{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M16.9 10.9 8.1 2 6 4.1l6.8 7L6 17.9 8.1 20l8.8-8.8.1-.1z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-expand-down{background-color:var(--fill-white);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--fill-white)' viewBox='0 0 22 22'%3E%3Cpath d='M10.9 16.9 2 8.1 4.1 6l7 6.8L17.9 6 20 8.1l-8.8 8.8-.1.1z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-add-slide{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='M2 4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V4Zm9 7V7h2v4h4v2h-4v4h-2v-4H7v-2h4Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-add-shape,.device-android .navbar i.icon.icon-add-slide{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-add-shape{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Ccircle cx='16' cy='15' r='7' fill='var(--toolbar-icons)'/%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='M3 3a1 1 0 0 0-1 1v13a1 1 0 0 0 1 1h5.582A8 8 0 0 1 18 7.252V4a1 1 0 0 0-1-1H3Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-add-image{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='m4.24 18 3.854-4.5 2.812 3L14.76 12l5 6H4.24Zm17.083 2.39c.451-.406.677-.874.677-1.406V5.016c0-.532-.226-1-.677-1.407A2.266 2.266 0 0 0 19.76 3H4.24c-.59 0-1.112.203-1.563.61C2.226 4.015 2 4.483 2 5.015v13.968c0 .532.226 1 .677 1.407.451.406.972.609 1.563.609h15.52c.59 0 1.111-.203 1.563-.61ZM8 11a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z' clip-rule='evenodd'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='transparent' d='M0 0h24v24H0V0Z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-add-image,.device-android .navbar i.icon.icon-add-other{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-add-other{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='M7 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm8 0a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm5 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-close-comment{background-color:var(--toolbar-icons);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' d='M18.984 6.422 13.406 12l5.578 5.578-1.406 1.406L12 13.406l-5.578 5.578-1.406-1.406L10.594 12 5.016 6.422l1.406-1.406L12 10.594l5.578-5.578 1.406 1.406Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-format-pptx{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23BE664F' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H4Zm0 5h16v12H4V6Zm1 1h14v10H5V7Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-potx{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23A8A8A8' fill-rule='evenodd' d='M18 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm.746 10v-5.27h2.506v-1.234h-6.504v1.235h2.479V22h1.519Z' clip-rule='evenodd'/%3E%3Cpath fill='%23BE664F' fill-rule='evenodd' d='M1 4a3 3 0 0 1 3-3h16a3 3 0 0 1 3 3v9.101a6.997 6.997 0 0 0-3-1.811V6H4v12h7c0 1.959.805 3.73 2.101 5H4a3 3 0 0 1-3-3V4Zm18 7.07A7.001 7.001 0 0 0 11.07 17H5V7h14v4.07Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-odp{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23DD9426' fill-rule='evenodd' d='M1 4a3 3 0 0 1 3-3h16a3 3 0 0 1 3 3v16a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3V4Zm18.952 3.749c-.026-.02-.053-.037-.08-.054l-.02-.013a4.236 4.236 0 0 0-1.763-.651c-1.114-.14-2.179.2-3.078.89a4.32 4.32 0 0 0-2.066-.86c-1.035-.13-2.028.155-2.885.751l-.01.008-.015.01a.135.135 0 0 0-.035.093c0 .066.04.12.09.12l.013-.003.007-.002a3.93 3.93 0 0 1 1.431-.084c1.376.173 2.575.737 3.416 2.002.044.06.083.057.128-.003 1.058-1.627 2.68-2.27 4.424-2.051.097.012.193.028.289.047l.029.006c.029.006.062.013.084.016.058.009.089-.053.089-.119 0-.044-.015-.082-.048-.103Zm-1.026 5.026.01.006c.038.024.064.075.064.136 0 .083-.051.151-.114.151l-.164-.016a5.975 5.975 0 0 0-.547-.026c-2.574 0-4.885 1.254-6.288 3.796l-.04.074-.026.048c-.021.035-.053.056-.088.056a.097.097 0 0 1-.075-.037l-.002-.004-.007-.008c-1.38-1.722-3.215-2.367-5.272-2.367a5.987 5.987 0 0 0-2.24.44.086.086 0 0 1-.023.003c-.063 0-.114-.068-.114-.151a.17.17 0 0 1 .044-.12l.004-.003a.155.155 0 0 1 .009-.008C5.287 13.644 6.767 13 8.363 13c1.122 0 2.188.319 3.15.89C12.773 12.701 14.315 12 15.98 12c1.042 0 2.035.276 2.943.773l.003.002Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-otp{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23A8A8A8' fill-rule='evenodd' d='M18 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm.746 10v-5.27h2.506v-1.234h-6.504v1.235h2.479V22h1.519Z' clip-rule='evenodd'/%3E%3Cpath fill='%23DD9426' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h9.101A6.979 6.979 0 0 1 11 18c0-.542.062-1.07.178-1.577-1.315-1.328-2.97-1.839-4.801-1.839a5.987 5.987 0 0 0-2.24.44.086.086 0 0 1-.023.003c-.063 0-.114-.068-.114-.151a.17.17 0 0 1 .044-.12l.004-.003a.155.155 0 0 1 .009-.008C5.287 13.644 6.767 13 8.363 13c1.122 0 2.188.319 3.15.89a7.139 7.139 0 0 1 2.244-1.459A6.97 6.97 0 0 1 18 11c1.959 0 3.73.805 5 2.101V4a3 3 0 0 0-3-3H4Zm15.952 6.749c-.026-.02-.053-.037-.08-.054l-.02-.013a4.236 4.236 0 0 0-1.763-.651c-1.114-.14-2.179.2-3.078.89a4.32 4.32 0 0 0-2.066-.86c-1.035-.13-2.028.155-2.885.751l-.01.008-.015.01a.135.135 0 0 0-.035.093c0 .066.04.12.09.12l.013-.003.007-.002a3.93 3.93 0 0 1 1.431-.084c1.376.173 2.575.737 3.416 2.002.044.06.083.057.128-.003 1.058-1.627 2.68-2.27 4.424-2.051.097.012.193.028.289.047l.029.006c.029.006.062.013.084.016.058.009.089-.053.089-.119 0-.044-.015-.082-.048-.103Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}:root{--f7-popover-width:360px}.doc-placeholder{background:var(--canvas-background);height:100%;left:0;overflow:hidden;padding-top:calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-subnavbar-offset, 0px));position:absolute;top:0;width:100%;z-index:6000}.doc-placeholder .slide-h{display:flex;flex-direction:column;flex-grow:1;height:100%;margin:0 auto;padding-top:30%;width:90%}.doc-placeholder .slide-v{display:flex;flex-direction:column;padding-bottom:56.1333%;position:relative}.doc-placeholder .slide-container{-webkit-animation:flickerAnimation 2s ease-in-out infinite;-moz-animation:flickerAnimation 2s ease-in-out infinite;-o-animation:flickerAnimation 2s ease-in-out infinite;animation:flickerAnimation 2s ease-in-out infinite;background:var(--canvas-content-background);border:1px solid var(--canvas-page-border);height:100%;position:absolute;width:100%}.doc-placeholder .slide-container>.line{background:#f5f5f5;border-radius:6px;height:20%;margin:0 120px}.doc-placeholder .slide-container>.line:first-child{height:30%;margin:10% 80px 0}.doc-placeholder .slide-container>.line.empty{background:transparent}.item-content .preview{color:#c4c4c4}.phone .swiper-container,.tablet .swiper-container{position:static}.swiper-pagination-bullet-active{background:#000000}.table-styles .row div:not(:first-child){margin:2px auto 0}.table-styles .row div,.table-styles .skeleton-list li{padding:0}.table-styles .row .skeleton-list{display:block;height:50px;width:70px}.slide-theme__list{margin:auto}.slide-theme__list ul{display:flex;flex-wrap:wrap;justify-content:space-between;padding-bottom:14px;padding-left:18px;padding-right:18px;width:auto}.slide-theme .item-inner:after{display:none}.slide-theme .item-theme{background-image:url(../resources/img/themes/themes.png);background-repeat:no-repeat;background-size:cover;box-shadow:0 0 0 1px rgba(0,0,0,.15);display:block;height:40px;margin:14px 0 0;position:relative;width:88px}.slide-theme .item-theme.active:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23BE664F' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='11' fill='%23fff'/%3E%3Cpath d='M11 21a10 10 0 1 1 10-10 10 10 0 0 1-10 10Zm6.4-13.68L17.06 7a.48.48 0 0 0-.67 0l-7 6.84-2.44-2.6a.51.51 0 0 0-.59.08l-.36.34a.58.58 0 0 0 0 .65l3.19 3.35a.38.38 0 0 0 .39 0L17.4 8a.48.48 0 0 0 0-.67Z'/%3E%3C/svg%3E");bottom:-5px;content:"";height:22px;position:absolute;right:-5px;width:22px;z-index:1}.bullet-menu-image ul{padding:0}.bullet-menu-image ul li{display:inherit} +/*# sourceMappingURL=923.css.map*/ \ No newline at end of file diff --git a/apps/presentationeditor/mobile/css/923.css.map b/apps/presentationeditor/mobile/css/923.css.map new file mode 100644 index 0000000000..90fe8d71dd --- /dev/null +++ b/apps/presentationeditor/mobile/css/923.css.map @@ -0,0 +1 @@ +{"version":3,"file":"css/923.css","mappings":";;;;GACA,MACI,oBAAqB,CACrB,oBAAqB,CACrB,qBAAsB,CACtB,oBAAqB,CACrB,uBAAwB,CACxB,yBAA0B,CAC1B,0BAA2B,CAE3B,yBAA0B,CAC1B,2BAA4B,CAC5B,6BAA8B,CAC9B,8CACA,2BAA4B,CAE5B,qBAAsB,CACtB,iCACA,gCACA,mBAAoB,CACpB,oBAAqB,CAErB,iBAAkB,CAClB,iBAAkB,CAElB,4BAA6B,CAC7B,oBAAqB,CACrB,yBAA0B,CAC1B,2CAEA,iCAEA,2CACA,4CACA,0CAEA,gCAAiC,CAIjC,wBAAyB,CACzB,gCAAiC,CACjC,yBAA0B,CAE1B,8BAA+B,CAE/B,yCAA0C,CAC1C,wBAAyB,CACzB,iCAAkC,CAClC,0CAA2C,CAE3C,2BAA4B,CAG5B,yBAA0B,CAC1B,yCACA,sCAAuC,CACvC,+CAAgD,CAChD,kCAAmC,CACnC,2CCfJ,CD3CA,gBAyEQ,8BC3BR,CD6BQ,yBACI,sCC3BZ,CCjDA,yCAGQ,4BAA6B,CAC7B,2BAA4B,CAC5B,6BAA8B,CAC9B,6CACA,2BAA4B,CAE5B,qCACA,uCACA,sCACA,mBAAoB,CACpB,oBAAqB,CAErB,iBAAkB,CAClB,iBAAkB,CAElB,oBAAqB,CACrB,oBAAqB,CACrB,qBAAsB,CACtB,oBAAqB,CACrB,uBAAwB,CACxB,yBAA0B,CAC1B,0BAA2B,CAE3B,4BAA6B,CAC7B,uBAAwB,CACxB,sBAAuB,CACvB,4BAA6B,CAE7B,iCAIA,2CACA,4CACA,0CAEA,sDAAuD,CAIvD,wBAAyB,CACzB,gCAAiC,CACjC,4BAA6B,CAE7B,iCAAkC,CAElC,yCAA0C,CAC1C,2BAA4B,CAC5B,oCAAqC,CACrC,6CAA8C,CAE9C,2BAA4B,CAG5B,qCACA,kCAAmC,CACnC,wCAAyC,CACzC,wCAAyC,CACzC,+CACA,mCAAoC,CACpC,+CDiCR,CChGA,2DAgFQ,8BDoBR,CClBQ,6EACI,8CDqBZ,CEzGA,sDAMgB,wBAA0B,CAD1B,iBAAkB,CADlB,kBF0GhB,CE9GA,uEAWgB,SAAU,CADV,UFwGhB,CElHA,kIAmBY,gBAAiB,CADjB,cFqGZ,CEvHA,6DAyBY,gBFiGZ,CE5FQ,kDACI,cAAe,CACf,kBF8FZ,CEzFA,mJAMQ,cF2FR,CEjGA,oEAWY,yBFyFZ,CEpGA,mEAeY,yBFwFZ,CEvGA,mEAqBQ,SAAU,CADV,UFuFR,CE3GA,mKA2BgB,+EFoFhB,CE/GA,iKA8BgB,+EFqFhB,CEnHA,0EAsCgB,aAAgB,CAChB,iBFgFhB,CEvHA,6EA6CQ,aAAc,CACd,iBF6ER,CE3HA,uHAmDQ,gBAAiB,CADjB,cFiFR,CEnIA,yFA4DQ,iBF0ER,CEtEA,kDAEQ,cFuER,CEzEA,yEAKgB,6BFuEhB,CE5EA,0FAQoB,gBAAiB,CADjB,cFyEpB,CEhFA,wEAagB,gBFsEhB,CEnFA,yBAoBQ,aAAc,CADd,4CAA6C,CAE7C,iBAAkB,CAClB,kBFmER,CEzFA,8CA2BQ,iBAAkB,CADlB,eFoER,CE9FA,k5BAmCQ,gBFyER,CE5GA,oDAuCQ,wBFwER,CE/GA,wBA2CQ,wBFuER,CElHA,yBAgDY,oBFqEZ,CErHA,kEAuDY,cFkEZ,CEzHA,+BA6DY,eF+DZ,CE5HA,0CAmEY,iBF4DZ,CE/HA,kCAwEQ,qBF0DR,CElIA,uGA6EY,eF0DZ,CEvIA,kCAkFQ,SAAU,CACV,WFwDR,CE3IA,uHAuFQ,eFyDR,CEhJA,sIA2FQ,cAAe,CACf,kBF0DR,CEtJA,wFAqGQ,aAAc,CACd,iBFwDR,CE9JA,6DA2GQ,iBAAkB,CADlB,eFwDR,CElKA,wDAiHQ,QAAS,CADT,UFsDR,CEjDA,yBACI,iGAGQ,aAAc,CADd,iBFmDV,CErDE,+DAOQ,aFiDV,CE7CE,oGAGQ,gBAAiB,CADjB,cF+CV,CACF,CGrRQ,yZAGI,oBH+RZ,CG5RQ,gCCON,q8CJwRF,CG3RQ,gCCGN,+nFJ2RF,CG1RQ,gCCDN,m3CJ8RF,CGzRQ,gCCLN,o+FJiSF,CGxRQ,gCCTN,yyDJoSF,CGpRQ,mEACI,oBHuRZ,CGhRQ,kDCrCN,oCACA,unCAEA,yBAA0B,CAD1B,yBJyTF,CGlRQ,kDCzCN,oCACA,8sCAEA,yBAA0B,CAD1B,yBJ+TF,CGpRQ,kDC7CN,oCACA,2sCAEA,yBAA0B,CAD1B,yBJqUF,CKvUA,iDAEQ,SAA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CN3BtB,qOAEA,yBAA0B,CAD1B,yBAA0B,CMyBhB,UVyhFZ,CUthFY,mCACI,YVwhFhB,CUrhFQ,6BNlCN,oCMoCU,WAAY,CNnCtB,gVAEA,yBAA0B,CAD1B,yBAA0B,CMiChB,UV4hFZ,CUxhFQ,sCNtCN,8iBJskFF,CU3hFQ,4EN5CN,uCMyCU,WAAY,CNtCtB,yBAA0B,CAD1B,yBAA0B,CMsChB,UVuiFZ,CUniFQ,sCN3CN,siCJ8kFF,CU9hFQ,+BNjDN,oCMmDU,WAAY,CNlDtB,4cAEA,yBAA0B,CAD1B,yBAA0B,CMgDhB,UVqiFZ,CWtlFQ,iCACI,mCXwlFZ,CWtlFQ,iCAGI,uGACA,uBAAwB,CAFxB,WAAY,CADZ,WX2lFZ,CWtlFQ,iCPVN,oCOYU,WAAY,CPXtB,6OAEA,yBAA0B,CAD1B,yBAA0B,COShB,UX6lFZ,CW1lFY,uCACE,YX4lFd,CWzlFQ,iCPlBN,oCOoBU,WAAY,CPnBtB,wOAEA,yBAA0B,CAD1B,yBAA0B,COiBhB,UXgmFZ,CW7lFY,uCACI,YX+lFhB,CW5lFQ,0CPzBN,q1BJ6nFF,CW/lFQ,oFP/BN,uCO4BU,WAAY,CPzBtB,yBAA0B,CAD1B,yBAA0B,COyBhB,UX2mFZ,CWvmFQ,0CP9BN,2hCJqoFF,CW/lFY,iDPvCV,oCOyCc,WAAY,CPxC1B,0LAEA,yBAA0B,CAD1B,yBAA0B,COsCZ,UXsmFhB,CW9lFY,kDPhDV,sCOkDc,WAAY,CPjD1B,izCAEA,yBAA0B,CAD1B,yBAA0B,CO+CZ,UXqmFhB,CWjmFY,yCACI,0BXmmFhB,CWjmFY,yCPxDV,sCO0Dc,WAAY,CPzD1B,gTAEA,yBAA0B,CAD1B,yBAA0B,COuDZ,UXwmFhB,CWpmFY,0CP7DV,oCO+Dc,WAAY,CP9D1B,gTAEA,yBAA0B,CAD1B,yBAA0B,CO4DZ,UX2mFhB,CWvmFY,kDPlEV,qCJirFF,CW1mFY,2FAHI,WAAY,CPnE1B,8NAEA,yBAA0B,CAD1B,yBAA0B,COiEZ,UXsnFhB,CWlnFY,yCPvEV,mCJyrFF,CW7mFY,2CP3EV,qSJgsFF,CWhnFY,+FPjFV,sCO8Ec,WAAY,CP3E1B,yBAA0B,CAD1B,yBAA0B,CO2EZ,UX4nFhB,CWxnFY,oDPhFV,8XJwsFF,CWnnFY,2CPtFV,sCOwFc,WAAY,CPvF1B,wZAEA,yBAA0B,CAD1B,yBAA0B,COqFZ,UX0nFhB,CYhtFI,kBRAF,sYJwtFF,CYntFI,mCRNF,oCQGM,WAAY,CRAlB,yBAA0B,CAD1B,yBAA0B,CQApB,UZ+tFR,CY3tFI,iBRLF,oaJguFF,CYttFI,gBRXF,oCQaM,WAAY,CRZlB,0nCAEA,yBAA0B,CAD1B,yBAA0B,CQUpB,UZ6tFR,CYztFI,8CACI,YZ4tFR,CY1tFI,0BRnBF,oCQqBM,WAAY,CRpBlB,izCAEA,yBAA0B,CAD1B,yBAA0B,CQkBpB,UZiuFR,CY7tFI,yBRXF,ggBQaM,WAAY,CADZ,UZiuFR,CY7tFI,yBRhBF,yqBQkBM,WAAY,CADZ,UZiuFR,CY7tFI,kBRlCF,oCQoCM,WAAY,CRnClB,6ZAEA,yBAA0B,CAD1B,yBAA0B,CQiCpB,UZouFR,CY7tFI,uBR7BF,giBQ+BM,WAAY,CADZ,UZiuFR,CY7tFI,wBRlCF,45BQoCM,WAAY,CADZ,UZiuFR,CY1tFI,sBR1CF,+9CJuwFF,CYztFI,sBR9CF,0lFJ0wFF,CYxtFI,sBRlDF,gbJ6wFF,CYvtFI,sBRtDF,q5CJgxFF,CYttFI,sBR1DF,g9FJmxFF,CYrtFI,sBR9DF,6zDJsxFF,CYptFI,sBRlEF,shBJyxFF,CYntFI,6BRlFF,gzCJ6yFF,CYrtFI,8CRzFF,oCQqFM,WAAY,CRlFlB,yBAA0B,CAD1B,yBAA0B,CQkFpB,UZkuFR,CY7tFI,iBRxFF,4iBJqzFF,CYvtFI,iBR9FF,6cJ6zFF,CYztFI,mCRrGF,oCQiGM,WAAY,CR9FlB,yBAA0B,CAD1B,yBAA0B,CQ8FpB,UZsuFR,CYjuFI,kBRpGF,sYJq0FF,CY3tFI,mBR1GF,qSJ60FF,CY7tFI,+CRjHF,oCQ6GM,WAAY,CR1GlB,yBAA0B,CAD1B,yBAA0B,CQ0GpB,UZ0uFR,CYruFI,4BRhHF,8XJq1FF,CY7tFI,wCRxHF,unCJ61FF,CYhuFI,gFR9HF,oCQ2HM,WAAY,CRxHlB,yBAA0B,CAD1B,yBAA0B,CQwHpB,UZ4uFR,CYxuFI,wCR7HF,stCJ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CI,atB2wGJ,CsBxwGA,aAGE,yBADA,eAAgB,CADhB,iBtB4wGF,CsBvwGA,wBACE,atBywGF,CsB1wGA,6CAGI,+CtB0wGJ,CsBtwGA,8BACE,atBwwGF,CuBzgHA,gBACI,wCACA,wCACA,yCvB2gHJ,CuB9gHA,6CAOQ,iBvB0gHR,CuBjhHA,uGAcQ,kBAAmB,CADnB,qBAAsB,CADtB,6BAA8B,CAD9B,cAAe,CAIf,UvB0gHR,CwB/hHA,gCAGY,qCxB+hHZ,CyB/hHI,+BrBCF,iOJsiHF,CyBjiHI,qErBNF,oCqBEI,WAAY,CrBChB,yBAA0B,CAD1B,yBAA0B,CqBDtB,UzB8iHN,CyBziHI,sCrBLF,sZJ8iHF,CyBniHI,6BrBXF,keJsjHF,CyBriHI,0DrBlBF,oCqBcI,WAAY,CrBXhB,yBAA0B,CAD1B,yBAA0B,CqBWtB,UzBkjHN,CyB7iHI,6BrBjBF,gWJ8jHF,CyBviHI,6BrBvBF,0WJskHF,CyBziHI,4DrB9BF,oCqB0BI,WAAY,CrBvBhB,yBAA0B,CAD1B,yBAA0B,CqBuBtB,UzBsjHN,CyBjjHI,+BrB7BF,0nBJ8kHF,CyB3iHI,iCrBnCF,yRJslHF,CyB7iHI,+DrB1CF,oCqBsCI,WAAY,CrBnChB,yBAA0B,CAD1B,yBAA0B,CqBmCtB,UzB0jHN,CyBrjHI,8BrBzCF,iWJ8lHF,CyB/iHI,mCrB/CF,gcJsmHF,CyBjjHI,gErBtDF,oCqBkDI,WAAY,CrB/ChB,yBAA0B,CAD1B,yBAA0B,CqB+CtB,UzB8jHN,CyBzjHI,6BrBrDF,sNJ8mHF,CyBnjHI,iCrB5DF,oCqB8DI,WAAY,CrB7DhB,y5CAEA,yBAA0B,CAD1B,yBAA0B,CqB2DtB,UzB0jHN,CyBrjHI,iCrBjEF,uhBJ8nHF,CyBvjHI,+DrBxEF,oCqBoEI,WAAY,CrBjEhB,yBAA0B,CAD1B,yBAA0B,CqBiEtB,UzBokHN,CyB/jHI,8BrBvEF,8TJsoHF,CyBzjHI,iCrB7EF,+cJ8oHF,CyB3jHI,yErBpFF,oCqBgFI,WAAY,CrB7EhB,yBAA0B,CAD1B,yBAA0B,CqB6EtB,UzBwkHN,CyBnkHI,wCrBnFF,oiBJspHF,CyB7jHI,mCrBzFF,sQJ8pHF,CyB/jHI,0ErBhGF,oCqB4FI,WAAY,CrBzFhB,yBAA0B,CAD1B,yBAA0B,CqByFtB,UzB4kHN,CyBvkHI,uCrB/FF,qlCJsqHF,CyBjkHI,gCrBrGF,sQJ8qHF,CyBnkHI,gErB5GF,oCqBwGI,WAAY,CrBrGhB,yBAA0B,CAD1B,yBAA0B,CqBqGtB,UzBglHN,CyB3kHI,gCrB3GF,i7BJsrHF,CyBrkHI,oCrBjHF,ySJ8rHF,CyBvkHI,8ErBxHF,oCqBoHI,WAAY,CrBjHhB,yBAA0B,CAD1B,yBAA0B,CqBiHtB,UzBolHN,CyB/kHI,0CrBvHF,0PJssHF,CyBzkHI,wCrB7HF,wPJ8sHF,CyB3kHI,gFrBpIF,oCqBgII,WAAY,CrB7HhB,yBAA0B,CAD1B,yBAA0B,CqB6HtB,UzBwlHN,CyBnlHI,wCrBnIF,4PJstHF,CyB7kHI,yCrBzIF,2PJ8tHF,CyB/kHI,2ErBhJF,oCqB4II,WAAY,CrBzIhB,yBAA0B,CAD1B,yBAA0B,CqByItB,UzB4lHN,CyBvlHI,kCrB/IF,uTJsuHF,CyBjlHI,kCrBrJF,sTJ8uHF,CyBnlHI,gFrB5JF,oCqBwJI,WAAY,CrBrJhB,yBAA0B,CAD1B,yBAA0B,CqBqJtB,UzBgmHN,CyB3lHI,8CrB3JF,4VJsvHF,CyBrlHI,+CrBjKF,qVJ8vHF,CyBvlHI,2FrBxKF,oCqBoKI,WAAY,CrBjKhB,yBAA0B,CAD1B,yBAA0B,CqBiKtB,UzBomHN,CyB/lHI,4CrBvKF,uWJswHF,CyBzlHI,4CrB7KF,sWJ8wHF,CyB3lHI,wFrBpLF,oCqBgLI,WAAY,CrB7KhB,yBAA0B,CAD1B,yBAA0B,CqB6KtB,UzBwmHN,CyBnmHI,4CrBnLF,ijBJsxHF,CyB7lHI,yCrBzLF,ikBJ8xHF,CyB/lHI,6ErBhMF,oCqB4LI,WAAY,CrBzLhB,yBAA0B,CAD1B,yBAA0B,CqByLtB,UzB4mHN,CyBvmHI,oCrB/LF,sOJsyHF,CyBjmHI,kCrBrMF,0WJ8yHF,CyBnmHI,uErB5MF,oCqBwMI,WAAY,CrBrMhB,yBAA0B,CAD1B,yBAA0B,CqBqMtB,UzBgnHN,CyB3mHI,qCrB3MF,yVJszHF,CyBrmHI,oCrBjNF,yPJ8zHF,CyBvmHI,uErBxNF,oCqBoNI,WAAY,CrBjNhB,yBAA0B,CAD1B,yBAA0B,CqBiNtB,UzBonHN,CyB/mHI,mCrBvNF,kbJs0HF,CyBzmHI,6BrB9NF,oCqBgOI,WAAY,CrB/NhB,kZAEA,yBAA0B,CAD1B,yBAA0B,CqB6NtB,UzBgnHN,CyB3mHI,sCrBvNF,m6GqByNI,WAAY,CADZ,UzB+mHN,CyB1mHI,wCrBzOF,kRJ21HF,CyB5mHI,mFrBhPF,oCqB4OI,WAAY,CrBzOhB,yBAA0B,CAD1B,yBAA0B,CqByOtB,UzBynHN,CyBpnHI,2CrB/OF,kVJm2HF,CyB9mHI,2CrBtPF,oCqBwPI,WAAY,CrBvPhB,qRAEA,yBAA0B,CAD1B,yBAA0B,CqBqPtB,UzBqnHN,CyB9mHI,0CrB7PF,2QJm3HF,CyBhnHI,qFrBpQF,oCqBgQI,WAAY,CrB7PhB,yBAA0B,CAD1B,yBAA0B,CqB6PtB,UzB6nHN,CyBxnHI,2CrBnQF,wRJ23HF,CyBlnHI,4CrBzQF,mRJm4HF,CyBpnHI,wFrBhRF,oCqB4QI,WAAY,CrBzQhB,yBAA0B,CAD1B,yBAA0B,CqByQtB,UzBioHN,CyB5nHI,4CrB/QF,+MJ24HF,CyBtnHI,2CrBrRF,wPJm5HF,CyBxnHI,wFrB5RF,oCqBwRI,WAAY,CrBrRhB,yBAA0B,CAD1B,yBAA0B,CqBqRtB,UzBqoHN,CyBhoHI,6CrB3RF,0PJ25HF,CyB1nHI,4CrBjSF,0PJm6HF,CyB5nHI,sFrBxSF,oCqBoSI,WAAY,CrBjShB,yBAA0B,CAD1B,yBAA0B,CqBiStB,UzByoHN,CyBpoHI,0CrBvSF,wPJ26HF,CyB9nHI,6CrB7SF,yPJm7HF,CyBhoHI,0FrBpTF,oCqBgTI,WAAY,CrB7ShB,yBAA0B,CAD1B,yBAA0B,CqB6StB,UzB6oHN,CyBxoHI,6CrBnTF,yPJ27HF,CyBhoHI,sCrB3TF,+PJm8HF,CyBloHI,2ErBlUF,oCqB8TI,WAAY,CrB3ThB,yBAA0B,CAD1B,yBAA0B,CqB2TtB,UzB+oHN,CyB1oHI,qCrBjUF,+PJ28HF,CyBpoHI,wCrBvUF,+RJm9HF,CyBtoHI,gFrB9UF,oCqB0UI,WAAY,CrBvUhB,yBAA0B,CAD1B,yBAA0B,CqBuUtB,UzBmpHN,CyB9oHI,wCrB7UF,+RJ29HF,CyBxoHI,mCrBnVF,mUJm+HF,CyB1oHI,wErB1VF,oCqBsVI,WAAY,CrBnVhB,yBAA0B,CAD1B,yBAA0B,CqBmVtB,UzBupHN,CyBlpHI,qCrBzVF,yUJ2+HF,CyB5oHI,oCrB/VF,sUJm/HF,CyB9oHI,sErBtWF,oCqBkWI,WAAY,CrB/VhB,yBAA0B,CAD1B,yBAA0B,CqB+VtB,UzB2pHN,CyBtpHI,kCrBrWF,sRJ2/HF,CyBhpHI,qCrB3WF,wUJmgIF,CyBlpHI,0ErBlXF,oCqB8WI,WAAY,CrB3WhB,yBAA0B,CAD1B,yBAA0B,CqB2WtB,UzB+pHN,CyB1pHI,qCrBjXF,yRJ2gIF,CyBppHI,yCrBvXF,uSJmhIF,CyBtpHI,gFrB9XF,oCqB0XI,WAAY,CrBvXhB,yBAA0B,CAD1B,yBAA0B,CqBuXtB,UzBmqHN,CyB9pHI,uCrB7XF,ySJ2hIF,CyBtpHI,8BrBrYF,41BJmiIF,CyBxpHI,mErB5YF,oCqBwYI,WAAY,CrBrYhB,yBAA0B,CAD1B,yBAA0B,CqBqYtB,UzBqqHN,CyBhqHI,qCrB3YF,8pBJ2iIF,CyBzpHI,qCrBnZF,sCqBqZI,WAAY,CrBpZhB,qfAEA,yBAA0B,CAD1B,yBAA0B,CqBkZtB,UzBgqHN,CyB3pHI,wCrBzZF,oCqB2ZI,WAAY,CrB1ZhB,wXAEA,yBAA0B,CAD1B,yBAA0B,CqBwZtB,UzBkqHN,CyB7pHI,8CrBlZF,0ZqBoZI,WAAY,CADZ,UzBiqHN,CyB5pHI,uCrBpaF,04BJwkIF,CyB7pHI,yErB5aF,oCqBuaI,WAAY,CrBpahB,yBAA0B,CAD1B,yBAA0B,CqBoatB,UzB2qHN,CyBrqHI,kCrB3aF,+UJglIF,CyB/pHI,kCrBjbF,ybJwlIF,CyBjqHI,oErBxbF,oCqBobI,WAAY,CrBjbhB,yBAA0B,CAD1B,yBAA0B,CqBibtB,UzB8qHN,CyBzqHI,kCrBvbF,+nBJgmIF,CyBnqHI,kCrB7bF,0VJwmIF,CyBrqHI,oErBpcF,oCqBgcI,WAAY,CrB7bhB,yBAA0B,CAD1B,yBAA0B,CqB6btB,UzBkrHN,CyB7qHI,kCrBncF,iUJgnIF,CyBpqHM,mDrB5cJ,8UJwnIF,CyBtqHM,sGrBndJ,mCqB+cM,WAAY,CrB5clB,yBAA0B,CAD1B,yBAA0B,CqB4cpB,UzBmrHR,CyB9qHM,mDrBldJ,4aJgoIF,CyBxqHM,mDrBxdJ,8nBJwoIF,CyB1qHM,sGrB/dJ,mCqB2dM,WAAY,CrBxdlB,yBAA0B,CAD1B,yBAA0B,CqBwdpB,UzBurHR,CyBlrHM,mDrB9dJ,yVJgpIF,C0BjpII,sCtBCF,0OJwpIF,C0BnpII,8EtBNF,oCsBEI,WAAY,CtBChB,yBAA0B,CAD1B,yBAA0B,CsBDtB,U1BgqIN,C0B3pII,wCtBLF,wOJgqIF,C0BrpII,iCtBZF,oCsBcI,WAAY,CtBbhB,8SAEA,yBAA0B,CAD1B,yBAA0B,CsBWtB,U1B4pIN,C0BvpII,0CtBjBF,yZJgrIF,C0BzpII,2EtBxBF,sCsBoBI,WAAY,CtBjBhB,yBAA0B,CAD1B,yBAA0B,CsBiBtB,U1BsqIN,C0BjqII,iCtBvBF,oeJwrIF,C0B3pII,mCtB7BF,0nBJgsIF,C0B7pII,wEtBpCF,oCsBgCI,WAAY,CtB7BhB,yBAA0B,CAD1B,yBAA0B,CsB6BtB,U1B0qIN,C0BrqII,qCtBnCF,yRJwsIF,C0B/pII,kCtBzCF,iWJgtIF,C0BjqII,yEtBhDF,oCsB4CI,WAAY,CtBzChB,yBAA0B,CAD1B,yBAA0B,CsByCtB,U1B8qIN,C0BzqII,uCtB/CF,gcJwtIF,C0BnqII,qCtBrDF,+dJguIF,C0BrqII,uEtB5DF,oCsBwDI,WAAY,CtBrDhB,yBAA0B,CAD1B,yBAA0B,CsBqDtB,U1BkrIN,C0B7qII,kCtB3DF,8TJwuIF,C0BvqII,qCtBjEF,+cJgvIF,C0B3oII,mFtBtGF,oCsBoEI,WAAY,CtBjEhB,yBAA0B,CAD1B,yBAA0B,CsBiEtB,U1BsrIN,C0BnpII,8CtBrGF,0PJwvIF,C0B7oII,4CtB3GF,wPJgwIF,C0B/oII,wFtBlHF,oCsB8GI,WAAY,CtB3GhB,yBAA0B,CAD1B,yBAA0B,CsB2GtB,U1B4pIN,C0BvpII,4CtBjHF,4PJwwIF,C0BjpII,6CtBvHF,2PJgxIF,C0BnpII,mFtB9HF,oCsB0HI,WAAY,CtBvHhB,yBAA0B,CAD1B,yBAA0B,CsBuHtB,U1BgqIN,C0B3pII,sCtB7HF,uTJwxIF,C0BrpII,sCtBnIF,sTJgyIF,C0BvpII,wFtB1IF,oCsBsII,WAAY,CtBnIhB,yBAA0B,CAD1B,yBAA0B,CsBmItB,U1BoqIN,C0B/pII,kDtBzIF,4VJwyIF,C0BzpII,mDtB/IF,qVJgzIF,C0B3pII,mGtBtJF,oCsBkJI,WAAY,CtB/IhB,yBAA0B,CAD1B,yBAA0B,CsB+ItB,U1BwqIN,C0BnqII,gDtBrJF,uWJwzIF,C0B7pII,gDtB3JF,sWJg0IF,C0B/pII,gGtBlKF,oCsB8JI,WAAY,CtB3JhB,yBAA0B,CAD1B,yBAA0B,CsB2JtB,U1B4qIN,C0BvqII,gDtBjKF,ijBJw0IF,C0BjqII,6CtBvKF,ikBJg1IF,C0BnqII,mFtB9KF,oCsB0KI,WAAY,CtBvKhB,yBAA0B,CAD1B,yBAA0B,CsBuKtB,U1BgrIN,C0B3qII,sCtB7KF,0WJw1IF,C0BrqII,yCtBnLF,yVJg2IF,C0BvqII,iFtB1LF,oCsBsLI,WAAY,CtBnLhB,yBAA0B,CAD1B,yBAA0B,CsBmLtB,U1BorIN,C0B/qII,wCtBzLF,yPJw2IF,C0BzqII,uCAEE,WAAY,CtBjMhB,mbsBgMI,U1BgrIN,C0B3qII,iFtBtMF,oCAGA,yBAA0B,CAD1B,yBJu3IF,C0BnrII,0CAEE,WAAY,CtBvMhB,gyBsBsMI,U1BkrIN,C0B7qII,4CtB3MF,kRJg4IF,C0B/qII,2FtBlNF,oCsB8MI,WAAY,CtB3MhB,yBAA0B,CAD1B,yBAA0B,CsB2MtB,U1B4rIN,C0BvrII,+CtBjNF,kVJw4IF,C0BjrII,+CtBxNF,oCsB0NI,WAAY,CtBzNhB,qRAEA,yBAA0B,CAD1B,yBAA0B,CsBuNtB,U1BwrIN,C0BjrII,8CtB/NF,2QJw5IF,C0BnrII,6FtBtOF,oCsBkOI,WAAY,CtB/NhB,yBAA0B,CAD1B,yBAA0B,CsB+NtB,U1BgsIN,C0B3rII,+CtBrOF,wRJg6IF,C0BrrII,gDtB3OF,mRJw6IF,C0BvrII,gGtBlPF,oCsB8OI,WAAY,CtB3OhB,yBAA0B,CAD1B,yBAA0B,CsB2OtB,U1BosIN,C0B/rII,gDtBjPF,+MJg7IF,C0BzrII,+CtBvPF,wPJw7IF,C0B3rII,gGtB9PF,oCsB0PI,WAAY,CtBvPhB,yBAA0B,CAD1B,yBAA0B,CsBuPtB,U1BwsIN,C0BnsII,iDtB7PF,0PJg8IF,C0B7rII,gDtBnQF,0PJw8IF,C0B/rII,8FtB1QF,oCsBsQI,WAAY,CtBnQhB,yBAA0B,CAD1B,yBAA0B,CsBmQtB,U1B4sIN,C0BvsII,8CtBzQF,wPJg9IF,C0BjsII,iDtB/QF,yPJw9IF,C0BnsII,kGtBtRF,oCsBkRI,WAAY,CtB/QhB,yBAA0B,CAD1B,yBAA0B,CsB+QtB,U1BgtIN,C0B3sII,iDtBrRF,yPJg+IF,C0BnsII,0CtB7RF,+PJw+IF,C0BrsII,mFtBpSF,oCsBgSI,WAAY,CtB7RhB,yBAA0B,CAD1B,yBAA0B,CsB6RtB,U1BktIN,C0B7sII,yCtBnSF,+PJg/IF,C0BvsII,4CtBzSF,+RJw/IF,C0BzsII,wFtBhTF,oCsB4SI,WAAY,CtBzShB,yBAA0B,CAD1B,yBAA0B,CsByStB,U1BstIN,C0BjtII,4CtB/SF,+RJggJF,C0B3sII,uCtBrTF,mUJwgJF,C0B7sII,gFtB5TF,oCsBwTI,WAAY,CtBrThB,yBAA0B,CAD1B,yBAA0B,CsBqTtB,U1B0tIN,C0BrtII,yCtB3TF,yUJghJF,C0B/sII,wCtBjUF,sUJwhJF,C0BjtII,8EtBxUF,oCsBoUI,WAAY,CtBjUhB,yBAA0B,CAD1B,yBAA0B,CsBiUtB,U1B8tIN,C0BztII,sCtBvUF,sRJgiJF,C0BntII,yCtB7UF,wUJwiJF,C0BrtII,kFtBpVF,oCsBgVI,WAAY,CtB7UhB,yBAA0B,CAD1B,yBAA0B,CsB6UtB,U1BkuIN,C0B7tII,yCtBnVF,yRJgjJF,C0BvtII,6CtBzVF,uSJwjJF,C0BztII,wFtBhWF,oCsB4VI,WAAY,CtBzVhB,yBAA0B,CAD1B,yBAA0B,CsByVtB,U1BsuIN,C0BjuII,2CtB/VF,ySJgkJF,C0BztII,kCtBvWF,g3BJwkJF,C0B3tII,2EtB9WF,oCsB0WI,WAAY,CtBvWhB,yBAA0B,CAD1B,yBAA0B,CsBuWtB,U1BwuIN,C0BnuII,yCtB7WF,8pBJglJF,C0B5tII,yCtBrXF,sCsBuXI,WAAY,CtBtXhB,q0BAEA,yBAA0B,CAD1B,yBAA0B,CsBoXtB,U1BmuIN,C0B9tII,4CtB3XF,oCsB6XI,WAAY,CtB5XhB,wPAEA,yBAA0B,CAD1B,yBAA0B,CsB0XtB,U1BquIN,C0BhuII,kDtBpXF,6OsBsXI,WAAY,CADZ,U1BouIN,C0B/tII,yCtBtYF,mQJ6mJF,C0BjuII,oFtB7YF,oCsByYI,WAAY,CtBtYhB,yBAA0B,CAD1B,yBAA0B,CsBsYtB,U1B8uIN,C0BzuII,2CtB5YF,+eJqnJF,C0BnuII,+CtBnZF,mCsBqZI,WAAY,CtBpZhB,uPAEA,yBAA0B,CAD1B,yBAA0B,CsBkZtB,U1B0uIN,C0BruII,sCtBxZF,uUJqoJF,C0BvuII,uEtB/ZF,oCsB2ZI,WAAY,CtBxZhB,yBAA0B,CAD1B,yBAA0B,CsBwZtB,U1BovIN,C0B/uII,iCtB9ZF,2tBJ6oJF,C0B1uII,iCtBpaF,mCsBsaI,WAAY,CtBrahB,kNAEA,yBAA0B,CAD1B,yBAA0B,CsBmatB,U1BivIN,C0BxuIM,yCAEE,WAAY,CADZ,W1B2uIR,C0BtuIM,yCtBnbJ,iSJiqJF,C0BxuIM,kFtB1bJ,sCsBsbM,WAAY,CtBnblB,yBAA0B,CAD1B,yBAA0B,CsBmbpB,U1BqvIR,C0BhvIM,yCtBzbJ,gSJyqJF,C0B1uIM,2CtB/bJ,kOJirJF,C0B5uIM,oFtBtcJ,sCsBkcM,WAAY,CtB/blB,yBAA0B,CAD1B,yBAA0B,CsB+bpB,U1ByvIR,C0BpvIM,yCtBrcJ,oNJyrJF,C0B9uIM,yCtB3cJ,oeJisJF,C0BhvIM,sFtBldJ,sCsB8cM,WAAY,CtB3clB,yBAA0B,CAD1B,yBAA0B,CsB2cpB,U1B6vIR,C0BxvIM,6CtBjdJ,q5BJysJF,C0BlvIM,yCtBvdJ,8OJitJF,C0BpvIM,kFtB9dJ,sCsB0dM,WAAY,CtBvdlB,yBAA0B,CAD1B,yBAA0B,CsBudpB,U1BiwIR,C0B5vIM,yCtB7dJ,yOJytJF,C0BtvIM,gDtBpeJ,mCsBseM,WAAY,CtBrelB,wOAEA,yBAA0B,CAD1B,yBAA0B,CsBmepB,U1B6vIR,C0BxvIM,8CtBzeJ,oUJyuJF,C0B1vIM,4FtBhfJ,sCsB4eM,WAAY,CtBzelB,yBAA0B,CAD1B,yBAA0B,CsByepB,U1BuwIR,C0BlwIM,8CtB/eJ,0WJivJF,C0B5vIM,8CtBrfJ,mrBJyvJF,C0B9vIM,4FtB5fJ,sCsBwfM,WAAY,CtBrflB,yBAA0B,CAD1B,yBAA0B,CsBqfpB,U1B2wIR,C0BtwIM,8CtB3fJ,gUJiwJF,C0BhwIM,kDtBlgBJ,sCsBogBM,WAAY,CtBngBlB,4UAEA,yBAA0B,CAD1B,yBAA0B,CsBigBpB,U1BuwIR,C2B5wJI,wBvBeF,iUuBbM,WAAY,CADZ,U3BgxJR,C2B3wJI,wBvBSF,0iBuBPM,WAAY,CADZ,U3B+wJR,C2B1wJI,uBvBGF,ixCuBDM,WAAY,CADZ,U3B8wJR,C2BzwJI,uBvBHF,yvCuBKM,WAAY,CADZ,U3B6wJR,CAxvJA,MACI,wBA0vJJ,CArvJA,iBACI,mCAAoC,CAEpC,WAAY,CACZ,MAAO,CAKP,eAAgB,CADhB,0FAA2F,CAD3F,iBAAkB,CAFlB,KAAM,CAHN,UAAW,CAIX,YA0vJJ,CAhwJA,0BAYQ,YAAa,CACb,qBAAsB,CACtB,WAAY,CAEZ,WAAY,CACZ,aAAc,CACd,eAAgB,CAHhB,SA0vJR,CAzwJA,0BAsBQ,YAAa,CAEb,qBAAsB,CACtB,uBAAwB,CAFxB,iBAwvJR,CA/wJA,kCAmCQ,0DAA2D,CAC3D,uDAAwD,CACxD,qDAAsD,CACtD,kDAAmD,CANnD,2CAA4C,CAC5C,0CAA2C,CAH3C,WAAY,CADZ,iBAAkB,CAElB,UA2vJR,CA1xJA,wCA4CY,kBAAmB,CADnB,iBAAkB,CAFlB,UAAW,CACX,cAsvJZ,CAlvJY,oDACI,UAAW,CACX,iBAovJhB,CAjvJY,8CACI,sBAmvJhB,CA7uJA,uBAEQ,aA8uJR,CA1uJA,mDAEQ,eA4uJR,CAxuJA,iCACI,kBA0uJJ,CAruJA,yCACI,iBAuuJJ,CAruJA,uDACI,SAwuJJ,CAtuJA,kCACI,aAAc,CAEd,WAAY,CADZ,UAyuJJ,CAnuJI,mBACI,WAquJR,CAtuJI,sBAGQ,YAAa,CAEb,cAAe,CADf,6BAA8B,CAK9B,mBAAoB,CAFpB,iBAAkB,CAClB,kBAAmB,CAFnB,UAyuJZ,CAhvJA,+BAcQ,YAquJR,CAnvJA,yBAuBQ,yDAEA,2BAA4B,CAC5B,qBAAsB,CAPtB,qCAKA,aAAc,CAHd,WAAY,CACZ,eAAgB,CALhB,iBAAkB,CAGlB,UA2uJR,CA/vJA,uCIxHE,+ZJ0JM,WAAY,CALZ,UAAW,CAGX,WAAY,CAFZ,iBAAkB,CAGlB,UAAW,CAFX,UAAW,CAIX,SAsuJR,CAjuJA,sBACI,SAmuJJ,CApuJA,yBAIQ,eAmuJR","sources":["webpack://documenteditor/../../apps/common/mobile/resources/less/colors-table.less","webpack://documenteditor/../../apps/presentationeditor/mobile/src/less/app.less","webpack://documenteditor/../../apps/common/mobile/resources/less/colors-table-dark.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common-rtl.less","webpack://documenteditor/../../apps/common/mobile/resources/less/icons.rtl.less","webpack://documenteditor/../../apps/common/mobile/resources/less/_mixins.less","webpack://documenteditor/../../apps/presentationeditor/mobile/src/less/app-rtl.less","webpack://documenteditor/../../apps/common/mobile/resources/less/collaboration.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common-ios.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common-material.less","webpack://documenteditor/../../apps/common/mobile/resources/less/ios/icons.less","webpack://documenteditor/../../apps/common/mobile/resources/less/material/icons.less","webpack://documenteditor/../../apps/common/mobile/resources/less/icons.less","webpack://documenteditor/../../apps/common/mobile/resources/less/dataview.less","webpack://documenteditor/../../apps/common/mobile/resources/less/about.less","webpack://documenteditor/../../apps/common/mobile/resources/less/search.less","webpack://documenteditor/./node_modules/framework7/less/mixins.less","webpack://documenteditor/../../apps/common/mobile/resources/less/ios/contextmenu.less","webpack://documenteditor/../../apps/common/mobile/resources/less/material/contextmenu.less","webpack://documenteditor/../../apps/common/mobile/resources/less/contextmenu.less","webpack://documenteditor/../../apps/common/mobile/resources/less/ios/comments.less","webpack://documenteditor/../../apps/common/mobile/resources/less/material/comments.less","webpack://documenteditor/../../apps/common/mobile/resources/less/comments.less","webpack://documenteditor/../../apps/presentationeditor/mobile/src/less/app-material.less","webpack://documenteditor/../../apps/presentationeditor/mobile/src/less/app-ios.less","webpack://documenteditor/../../apps/presentationeditor/mobile/src/less/icons-ios.less","webpack://documenteditor/../../apps/presentationeditor/mobile/src/less/icons-material.less","webpack://documenteditor/../../apps/presentationeditor/mobile/src/less/icons-common.less"],"sourcesContent":["\n:root {\n --brand-word: #446995;\n --brand-cell: #40865C;\n --brand-slide: #BE664F;\n --brand-form: #AA5252;\n --brand-primary: #3880BE;\n --brand-secondary: #ED7309;\n --brand-text-on-brand: #FFF;\n\n --background-primary: #FFF;\n --background-secondary: #FFF;\n --background-tertiary: #EFF0F5;\n --background-menu-divider: fade(#3C3C43, 15%);\n --background-button: #EFF0F5;\n\n --text-normal: #000000;\n --text-secondary: fade(#000, 60%);\n --text-tertiary: fade(#000, 40%);\n --text-link: #007AFF;\n --text-error: #FF3B30;\n\n --fill-black: #000;\n --fill-white: #FFF;\n\n --toolbar-background: #446995;\n --toolbar-icons: #FFF;\n --toolbar-segment: #446995;\n --toolbar-tab-normal:fade(#FFF, 50%);\n\n --component-disabled-opacity: .4;\n\n --active-opacity-word: fade(#446995, 30%);\n --active-opacity-slide: fade(#BE664F, 30%);\n --active-opacity-cell: fade(#40865C, 30%);\n\n --image-border-types-filter: none;\n\n // Canvas\n\n --canvas-background: #eee;\n --canvas-content-background: #fff;\n --canvas-page-border: #ccc;\n\n --canvas-ruler-background: #fff;\n //--canvas-ruler-border: #cbcbcb;\n --canvas-ruler-margins-background: #d9d9d9;\n --canvas-ruler-mark: #555;\n --canvas-ruler-handle-border: #555;\n --canvas-ruler-handle-border-disabled: #aaa;\n\n --canvas-high-contrast: #000;\n //--canvas-high-contrast-disabled: #666;\n\n --canvas-cell-border: #999;\n --canvas-cell-title-text: fade(#000, 80%);\n --canvas-cell-title-background: #f7f7f7;\n --canvas-cell-title-background-selected: #cfcfcf;\n --canvas-cell-title-border: #d8d8d8;\n --canvas-cell-title-border-selected: #c9c9c9;\n\n //--canvas-scroll-thumb: #f7f7f7;\n //--canvas-scroll-thumb-hover: #c0c0c0;\n //--canvas-scroll-thumb-pressed: #adadad;\n //--canvas-scroll-thumb-border: #cbcbcb;\n //--canvas-scroll-thumb-border-hover: #cbcbcb;\n //--canvas-scroll-thumb-border-pressed: #adadad;\n //--canvas-scroll-arrow: #adadad;\n //--canvas-scroll-arrow-hover: #f7f7f7;\n //--canvas-scroll-arrow-pressed: #f7f7f7;\n //--canvas-scroll-thumb-target: #c0c0c0;\n //--canvas-scroll-thumb-target-hover: #f7f7f7;\n //--canvas-scroll-thumb-target-pressed: #f7f7f7;\n .pdf-view {\n --brand-word: var(--brand-form);\n\n &__android {\n --toolbar-background: var(--brand-word);\n }\n }\n}\n\n@brand-word: var(--brand-word);\n@brand-cell: var(--brand-cell);\n@brand-slide: var(--brand-slide);\n@brand-form: var(--brand-form);\n@brand-primary: var(--brand-primary);\n@brand-secondary: var(--brand-secondary);\n@brand-text-on-brand: var(--brand-text-on-brand);\n\n@background-primary: var(--background-primary);\n@background-secondary: var(--background-secondary);\n@background-tertiary: var(--background-tertiary);\n@background-menu-divider: var(--background-menu-divider);\n@background-button: var(--background-button);\n\n@text-normal: var(--text-normal);\n@text-secondary: var(--text-secondary);\n@text-tertiary: var(--text-tertiary);\n@text-link: var(--text-link);\n@text-error: var(--text-error);\n\n@fill-black: var(--fill-black);\n@fill-white: var(--fill-white);\n\n@toolbar-icons: var(--toolbar-icons);\n@toolbar-segment: var(--toolbar-segment);\n@toolbar-tab-normal: var(--toolbar-tab-normal);\n\n@component-disabled-opacity: var(--component-disabled-opacity);\n","@import '../../../../../vendor/framework7-react/node_modules/framework7/less/mixins.less';\n@import '../../../../common/mobile/resources/less/_mixins.less';\n@import '../../../../common/mobile/resources/less/colors-table.less';\n@import '../../../../common/mobile/resources/less/colors-table-dark.less';\n@import './app-rtl.less';\n\n@brandColor: var(--brand-slide);\n\n.device-ios {\n --toolbar-background: var(--background-primary, #fff);\n --toolbar-segment: var(--brand-slide, #BE664F);\n --toolbar-icons: var(--brand-slide, #BE664F);\n}\n.device-android {\n --toolbar-background: var(--brand-slide, #BE664F);\n\n .theme-type-dark {\n --toolbar-icons: var(--brand-slide, #BE664F);\n }\n}\n\n@toolbar-background: var(--toolbar-background);\n@toolbar-segment: var(--toolbar-segment);\n@button-active-opacity: var(--active-opacity-slide);\n\n@import '../../../../common/mobile/resources/less/collaboration.less';\n@import '../../../../common/mobile/resources/less/common.less';\n@import '../../../../common/mobile/resources/less/common-ios.less';\n@import '../../../../common/mobile/resources/less/common-material.less';\n@import '../../../../common/mobile/resources/less/icons.less';\n@import '../../../../common/mobile/resources/less/dataview.less';\n@import '../../../../common/mobile/resources/less/about.less';\n@import '../../../../common/mobile/resources/less/search.less';\n@import '../../../../common/mobile/resources/less/contextmenu.less';\n@import '../../../../common/mobile/resources/less/comments.less';\n@import './app-material.less';\n@import './app-ios.less';\n@import './icons-ios.less';\n@import './icons-material.less';\n@import './icons-common.less';\n\n:root {\n --f7-popover-width: 360px;\n}\n\n// Skeleton of document\n\n.doc-placeholder {\n background: var(--canvas-background);\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n z-index: 6000;\n position: absolute;\n padding-top: calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-subnavbar-offset, 0px));\n overflow: hidden;\n\n .slide-h {\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n width: 90%;\n height: 100%;\n margin: 0 auto;\n padding-top: 30%;\n }\n\n .slide-v {\n display: flex;\n position: relative;\n flex-direction: column;\n padding-bottom: 56.1333%;\n }\n\n .slide-container {\n position: absolute;\n height: 100%;\n width: 100%;\n background: var(--canvas-content-background);\n border: 1px solid var(--canvas-page-border);\n\n -webkit-animation: flickerAnimation 2s infinite ease-in-out;\n -moz-animation: flickerAnimation 2s infinite ease-in-out;\n -o-animation: flickerAnimation 2s infinite ease-in-out;\n animation: flickerAnimation 2s infinite ease-in-out;\n\n > .line {\n height: 20%;\n margin: 0 120px;\n border-radius: 6px;\n background: #f5f5f5;\n\n &:nth-child(1) {\n height: 30%;\n margin: 10% 80px 0;\n }\n\n &.empty {\n background: transparent;\n }\n }\n }\n}\n\n.item-content {\n .preview{\n color: @gray;\n }\n}\n\n.phone, .tablet {\n .swiper-container{\n position: static;\n }\n}\n\n.swiper-pagination-bullet-active{\n background: @black;\n}\n\n// Skeleton table\n\n.table-styles .row div:not(:first-child) {\n margin: 2px auto 0px;\n}\n.table-styles .skeleton-list li, .table-styles .row div {\n padding: 0;\n}\n.table-styles .row .skeleton-list{\n display: block;\n width: 70px;\n height: 50px;\n}\n// Theme\n\n.slide-theme {\n &__list {\n margin: auto;\n ul {\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n width: auto;\n padding-left: 18px;\n padding-right: 18px;\n padding-bottom: 14px;\n }\n }\n .item-inner:after {\n display: none;\n }\n .item-theme {\n position: relative;\n margin: 0;\n box-shadow: 0 0 0 1px rgba(0,0,0,.15);\n width: 88px;\n height: 40px;\n margin-top: 14px;\n background-image: ~\"url(@{app-image-path}/themes/themes.png)\";\n display: block;\n background-repeat: no-repeat;\n background-size: cover;\n }\n .item-theme.active:before {\n content: '';\n position: absolute;\n width: 22px;\n height: 22px;\n right: -5px;\n bottom: -5px;\n z-index: 1;\n .encoded-svg-background('');\n }\n}\n\n.bullet-menu-image ul{\n padding: 0;\n \n li {\n display: inherit; \n }\n}","\n:root {\n .theme-type-dark,\n .theme-dark {\n --background-primary: #232323;\n --background-secondary: #333;\n --background-tertiary: #131313;\n --background-menu-divider: fade(#545458, 50%);\n --background-button: #333333;\n\n --text-normal: fade(#FFF, 87%);\n --text-secondary: fade(#FFF, 60%);\n --text-tertiary: fade(#FFF, 40%);\n --text-link: #1976D2;\n --text-error: #FF453A;\n\n --fill-black: #000;\n --fill-white: #FFF;\n\n --brand-word: #208BFF;\n --brand-cell: #34C759;\n --brand-slide: #FE8C33;\n --brand-form: #FE8C33;\n --brand-primary: #3E9CF0;\n --brand-secondary: #FFAF49;\n --brand-text-on-brand: #000;\n\n --toolbar-background: #232323;\n --toolbar-icons: #208BFF;\n --toolbar-segment: #FFF;\n --toolbar-tab-normal: #757575;\n\n --component-disabled-opacity: .4;\n\n --image-border-types-filter: invert(100%) brightness(4);\n\n --active-opacity-word: fade(#446995, 20%);\n --active-opacity-slide: fade(#BE664F, 20%);\n --active-opacity-cell: fade(#40865C, 20%);\n\n --image-border-types-filter: invert(100%) brightness(4);\n\n // Canvas\n\n --canvas-background: #000;\n --canvas-content-background: #fff;\n --canvas-page-border: #303030;\n\n --canvas-ruler-background: #636366;\n //--canvas-ruler-border: #2A2A2A;\n --canvas-ruler-margins-background: #3a3a3c;\n --canvas-ruler-mark: #8e8e93;\n --canvas-ruler-handle-border: #636366;\n --canvas-ruler-handle-border-disabled: #636366;\n\n --canvas-high-contrast: #000;\n //--canvas-high-contrast-disabled: #000;\n\n --canvas-cell-border: fade(#000, 10%);\n --canvas-cell-title-border: #757575;\n --canvas-cell-title-border-hover: #858585;\n --canvas-cell-title-border-selected: #999;\n --canvas-cell-title-text: fade(#fff, 80%);\n --canvas-cell-title-background: #555;\n --canvas-cell-title-background-selected: #3d3d3d;\n\n //--canvas-scroll-thumb: #404040;\n //--canvas-scroll-thumb-hover: #999;\n //--canvas-scroll-thumb-pressed: #adadad;\n //--canvas-scroll-thumb-border: #2a2a2a;\n //--canvas-scroll-thumb-border-hover: #999;\n //--canvas-scroll-thumb-border-pressed: #adadad;\n //--canvas-scroll-arrow: #999;\n //--canvas-scroll-arrow-hover: #404040;\n //--canvas-scroll-arrow-pressed: #404040;\n //--canvas-scroll-thumb-target: #999;\n //--canvas-scroll-thumb-target-hover: #404040;\n //--canvas-scroll-thumb-target-pressed: #404040;\n }\n\n .theme-type-dark.pdf-view, .theme-dark.pdf-view {\n --brand-word: var(--brand-form);\n\n &__android {\n --toolbar-background: var(--background-primary);\n }\n }\n}","[dir=\"rtl\"].device-android {\n .app-layout {\n .searchbar {\n input {\n padding-right: 24px;\n padding-left: 36px;\n background-position: right;\n }\n\n .number-search-results {\n right: auto;\n left: 26px;\n }\n }\n }\n\n .wrap-comment, .comment-list{\n .comment-header .initials {\n margin-right: 0;\n margin-left: 10px;\n }\n }\n\n .actions-modal {\n .actions-button-text {\n text-align: right;\n }\n }\n\n .navigation-sheet {\n &__title {\n padding-left: 0;\n padding-right: 16px;\n }\n }\n}\n\n[dir=\"rtl\"].device-ios .app-layout {\n .subnavbar,.navbar .left a + a {\n margin-right: 0;\n }\n\n .subnavbar,.navbar .right a + a {\n margin-right: 0;\n }\n\n .tab-buttons {\n .tab-link:first-child {\n border-radius: 0px 5px 5px 0px;\n }\n\n .tab-link:last-child {\n border-radius: 5px 0px 0px 5px;\n }\n }\n\n .searchbar .number-search-results {\n right: auto;\n left: 26px;\n }\n\n .popover {\n li:last-child, li:first-child {\n .segmented a:first-child {\n border-radius: 0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0;\n }\n .segmented a:last-child {\n border-radius: var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius);\n }\n } \n }\n\n .list {\n .item-inner {\n .item-after .segmented {\n margin-left: 0px;\n margin-right: 10px;\n }\n }\n }\n\n .searchbar-inner__right .buttons-row a.next {\n margin-left: 0;\n margin-right: 15px;\n }\n\n .searchbar-inner__left {\n margin-right: 0;\n margin-left: 10px;\n }\n\n .navbar .searchbar-input-wrap {\n margin-left: 10px;\n margin-right: 0;\n }\n\n .comment-list .item-content .item-inner .comment-header {\n padding-left: 16px;\n }\n}\n\n[dir=\"rtl\"] {\n .comment-list .item-content .item-inner{\n padding-left: 0;\n .comment-header {\n .right {\n justify-content: space-between;\n .comment-resolve {\n margin-right: 0px;\n margin-left: 10px;\n }\n }\n\n .name {\n text-align: right;\n }\n }\n }\n\n .comment-quote {\n border-right: 1px solid var(--text-secondary);\n border-left: 0;\n padding-left: 16px;\n padding-right: 10px;\n }\n\n .comment-text, .reply-text {\n padding-right: 0;\n padding-left: 15px;\n }\n\n // .comment-list .item-content .item-inner .comment-header {\n // padding-left: 16px;\n // }\n\n #add-comment-dialog .dialog .dialog-inner .wrap-comment .name, #edit-comment-dialog .dialog .dialog-inner .wrap-comment .name, #add-reply-dialog .dialog .dialog-inner .wrap-comment .name, #edit-reply-dialog .dialog .dialog-inner .wrap-comment .name, #add-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date, #edit-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date, #add-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date, #edit-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date, #add-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date, #edit-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date, #add-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date, #edit-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date {\n text-align: right;\n }\n\n #view-comment-popover .page .page-content {\n padding: 16px 0 60px 16px;\n }\n\n .wrap-comment {\n padding: 16px 16px 0 24px;\n }\n\n .shapes {\n .thumb {\n transform: scaleX(-1);\n }\n }\n\n .settings-popup,\n #settings-popover{\n .link {\n display: inline;\n }\n }\n\n #edit-table-style {\n ul {\n padding-right: 0;\n }\n }\n\n .color-schemes-menu {\n .item-title{\n margin-right: 20px;\n }\n }\n\n .list [slot=\"root-start\"] {\n padding: 15px 15px 0 0px;\n }\n\n .numbers, .bullets, .multilevels {\n .item-content {\n padding-right: 0;\n }\n }\n\n .dataview .active::after {\n left: -5px;\n right: unset;\n }\n\n .popup .list .range-number, .popover .list .range-number, .sheet-modal .list .range-number {\n text-align: left;\n }\n\n .popup .list .inner-range-title, .popover .list .inner-range-title, .sheet-modal .list .inner-range-title {\n padding-left: 0;\n padding-right: 15px;\n }\n\n #color-picker .right-block {\n margin-left: 0px;\n margin-right: 20px;\n }\n\n .page-review .toolbar #btn-reject-change {\n margin-left: 0;\n margin-right: 20px;\n }\n\n .view .list li.no-indicator .item-link .item-inner {\n padding-right: 0;\n padding-left: 15px;\n }\n\n // Dialog with password\n .dialog .modal-password .modal-password__icon {\n right: auto;\n left: 4px;\n }\n}\n\n@media (max-width: 550px) {\n .device-ios[dir=rtl] .app-layout {\n .searchbar-expandable.searchbar-enabled .searchbar-inner__right {\n margin-right: 10px;\n margin-left: 0;\n }\n\n .navbar .searchbar-input-wrap {\n margin-left: 0;\n }\n }\n\n .device-android[dir=rtl] .app-layout {\n .searchbar-expandable.searchbar-enabled .searchbar-inner__left {\n margin-right: 0;\n margin-left: 33px;\n }\n }\n}\n","[dir=\"rtl\"] {\n // Common rtl-icons\n i.icon {\n &.icon-next, &.icon-prev, &.icon-text-align-right, &.icon-text-align-left, \n &.icon-table-add-column-left, &.icon-table-add-column-right, &.icon-table-remove-column, \n &.icon-table-borders-left, &.icon-table-borders-right, &.icon-numbers-3, &.icon-numbers-7 {\n transform: scaleX(-1);\n }\n\n &.icon-numbers-1 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-2 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-4 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-5 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-6 {\n .encoded-svg-background('');\n }\n }\n\n // [PE] rtl-icons \n i.icon {\n &.icon-align-left, &.icon-align-right {\n transform: scaleX(-1);\n }\n }\n\n // [SSE] rtl-icons\n\n i.icon {\n &.icon-text-orientation-horizontal {\n .encoded-svg-mask('');\n }\n\n &.icon-text-orientation-anglecount {\n .encoded-svg-mask('');\n }\n\n &.icon-text-orientation-angleclock {\n .encoded-svg-mask('');\n }\n }\n}","// Encoded SVG Background\n.encoded-svg-mask(@svg, @color: @brandColor) {\n @url: `encodeURIComponent(@{svg})`;\n background-color: @color;\n -webkit-mask-image: url(\"data:image/svg+xml;charset=utf-8,@{url}\");\n -webkit-mask-size: contain;\n -webkit-mask-repeat: round;\n}\n\n.encoded-svg-uncolored-mask(@svg) {\n @url: `encodeURIComponent(@{svg})`;\n -webkit-mask-image: url(\"data:image/svg+xml;charset=utf-8,@{url}\");\n}\n\n.encoded-svg-background(@svg) {\n @url: `encodeURIComponent(@{svg})`;\n background-image: url(\"data:image/svg+xml;charset=utf-8,@{url}\");\n}","@import '../../../../common/mobile/resources/less/common-rtl.less';\n@import '../../../../common/mobile/resources/less/icons.rtl.less';\n\n[dir=\"rtl\"] {\n .slide-theme .item-theme.active:before {\n left: -5px;\n right: unset;\n }\n\n .slide-layout {\n .item-inner:before {\n left: 11px;\n right: unset;\n }\n .row img {\n transform: scaleX(-1);\n }\n }\n}",".page.page-users {\n .block-title {\n text-transform: none;\n margin-top: 20px;\n margin-bottom: 20px;\n font-size: 17px;\n line-height: 17px;\n font-weight: normal;\n }\n .color {\n min-width: 40px;\n min-height: 40px;\n text-align: center;\n border-radius: 50px;\n line-height: 40px;\n color: @fill-white;\n font-size: 18px;\n }\n}","@import './about';\n\n@white: #ffffff;\n@black: #000000;\n@gray: #c4c4c4;\n@darkGray: #6d6d72;\n@green: #4cd964;\n@red: #f00;\n@autoColor: @black;\n\n.row {\n --f7-cols-per-row: 1;\n align-items: flex-start;\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n}\n\n.row + .row {\n margin-top: var(--f7-grid-row-gap);\n}\n\n.navbar.main-navbar {\n height: 0;\n\n &.navbar-with-logo {\n height: 26px;\n }\n\n .navbar-inner {\n display: flex;\n justify-content: center;\n padding: 0;\n }\n\n .navbar-bg {\n &:before, &:after {\n content: none;\n }\n }\n}\n\n.navbar-hidden {\n transform: translate3d(0, calc(-1 * (var(--f7-navbar-height) + var(--f7-subnavbar-height))), 0);\n}\n\n.navbar-hidden+.page>.page-content, .navbar-hidden+.page-content {\n padding-top: 0;\n}\n\n.page.editor>.page-content {\n transition: padding-top .3s ease-in;\n}\n\n.main-logo {\n max-width: 100%;\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n\n .custom-logo-image {\n max-height: 20px;\n height: auto;\n width: auto;\n }\n}\n\n.subnavbar {\n .subnavbar-inner {\n padding: 0;\n \n .title {\n white-space: nowrap;\n overflow: hidden;\n margin: 0;\n padding: 0;\n flex-shrink: initial;\n text-overflow: ellipsis;\n }\n }\n .icon-back {\n color: @toolbar-icons;\n }\n}\n\n.page.page-with-subnavbar {\n .page-content {\n --f7-page-subnavbar-offset: 0px;\n }\n &.page-with-logo .page-content {\n --f7-page-subnavbar-offset: 26px;\n }\n}\n\n.popup, .popover, .sheet-modal {\n .list {\n &:first-child {\n margin-top: 0;\n margin-bottom: 0;\n }\n .inner-range-title {\n color: @text-normal;\n padding: 15px 0 0 15px;\n }\n\n .range-number {\n color: @text-normal;\n min-width: 60px;\n text-align: right;\n }\n }\n .page-content {\n &.no-padding-top {\n padding-top: 0;\n }\n }\n}\n\n.sheet-modal.coauth__sheet {\n transition: all .3s;\n}\n\n.disabled, [disabled] {\n opacity: .55;\n pointer-events: none;\n}\n\n.text-content {\n padding: 14px 10px 0 10px;\n}\n\n.view .list {\n max-width: 100%;\n --menu-list-offset: 0px;\n\n ul {\n max-width: 100%;\n background: var(--f7-list-bg-color);\n }\n\n li.no-indicator {\n .item-link {\n .item-inner{\n padding-right: 15px;\n &:before {\n content: none;\n }\n }\n }\n }\n .item-text {\n text-overflow: initial;\n white-space: normal;\n height: auto;\n max-height: initial;\n -webkit-line-clamp: initial;\n }\n .font-item img {\n filter: var(--image-border-types-filter, none)\n }\n .buttons {\n .button.active {\n background-color: @button-active-opacity;\n }\n }\n .item-link .item-inner {\n width: 100%;\n }\n .item-inner {\n color: @text-normal;\n }\n}\n\n// Bullets, numbers and multilevels\n\n.bullets,\n.numbers,\n.multilevels {\n min-height: 160px;\n .row.list {\n margin: 0;\n ul {\n background: none;\n &:before, &:after {\n display: none;\n }\n display: grid;\n grid-template-columns: repeat(4, auto);\n justify-content: space-around;\n grid-gap: 10px;\n width: 100%;\n padding: 5px;\n li {\n width: 70px;\n height: 70px;\n border: 1px solid @gray;\n html.pixel-ratio-2 & {\n border: 0.5px solid @gray;\n }\n html.pixel-ratio-3 & {\n border: 0.33px solid @gray;\n }\n \n .thumb {\n width: 100%;\n height: 100%;\n background-color: @fill-white;\n background-size: cover;\n \n label {\n width: 100%;\n text-align: center;\n position: absolute;\n top: 34%;\n color: @fill-black;\n }\n }\n\n .item-number, .item-marker, .item-multilevellist {\n width: 68px;\n height: 68px;\n }\n }\n }\n }\n \n .row.list .item-content {\n padding-left: 0;\n padding-right: 0;\n min-height: 68px;\n .item-inner{\n padding: 0;\n &:after {\n display: none;\n }\n }\n }\n}\n\n.popover {\n .page .list:first-child:last-child {\n ul {\n border-radius: 0;\n background-color: var(--f7-list-bg-color);\n li:first-child, li:last-child {\n .item-link {\n border-radius: 0;\n }\n }\n }\n }\n}\n\n// .popover .list + .list {\n// margin-top: 0;\n// }\n\n.popover .list:first-child li:first-child, .popover .list:first-child li:first-child a, .popover .list:first-child li:first-child > label, .popover .list:last-child li:last-child, .popover .list:last-child li:last-child a, .popover .list:last-child li:last-child > label {\n border-radius: 0;\n}\n\n.shapes {\n li {\n width: 70px;\n height: 70px;\n margin: 0 1px;\n\n .thumb {\n width: 100%;\n height: 100%;\n background-color: @brandColor;\n }\n }\n}\n\n.chart-types {\n width: 100%;\n .row {\n padding: 0 10px;\n }\n li {\n width: 60px;\n height: 60px;\n margin: 6px;\n\n .thumb {\n width: 100%;\n height: 100%;\n background-size: contain;\n }\n }\n}\n\n.chart-styles {\n .row {\n li {\n margin: 0;\n padding: 1px;\n }\n img {\n width: 50px;\n height: 50px;\n }\n }\n}\n\n.segmented {\n .decrement, .increment {\n text-overflow: clip;\n }\n}\n\n.content-block {\n margin: 32px 0;\n padding: 0 16px;\n box-sizing: border-box;\n p {\n color: @text-normal;\n }\n}\n\n\n// Color Schemes\n\n.color-schemes-menu {\n cursor: pointer;\n display: block;\n // background-color: @white;\n .item-inner {\n justify-content: flex-start;\n }\n .color-schema-block {\n display: flex;\n }\n .color {\n min-width: 26px;\n min-height: 26px;\n margin: 0 2px 0 0;\n box-shadow: 0 0 0 1px rgba(0,0,0,.15) inset;\n }\n .item-title {\n margin-left: 20px;\n color: @text-normal;\n }\n}\n\n\n// Layout \n\n.slide-layout {\n &__list {\n margin: auto;\n }\n ul {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n &::before, &::after {\n display: none;\n }\n }\n li {\n position: relative;\n z-index: 1;\n margin-top: 12px;\n img {\n box-shadow: 0 0 0 1px rgba(0,0,0,.15);\n }\n }\n .item-inner {\n padding-top: 0;\n }\n .item-inner:after {\n display: none;\n }\n .item-inner:before {\n opacity: 0;\n content: '';\n position: absolute;\n width: 22px;\n height: 22px;\n right: 11px;\n bottom: 0;\n z-index: 1;\n background-repeat: no-repeat;\n .encoded-svg-mask('');\n }\n .active .item-inner:before {\n opacity: 1;\n }\n}\n\n// Transition \n\n.slide-transition {\n .splitter {\n display: flex;\n align-items: center;\n color: @black;\n label {\n margin: 0 5px;\n }\n }\n .buttons-row {\n display: flex;\n margin: 0;\n min-width: 90px;\n margin-left: 10px;\n .button {\n width: 100%;\n }\n .button:first-child {\n border-radius: 5px 0 0 5px;\n border-left-width: 1px;\n border-left-style: solid;\n }\n .button:last-child {\n border-radius: 0 5px 5px 0;\n }\n }\n}\n\n.style-effect, .style-type {\n .list .item-title {\n font-weight: normal; \n }\n}\n\n.range-slider-delay {\n width: 100%;\n margin: 4px 0 5px 0;\n appearance: none;\n background: linear-gradient(to right,#b7b8b7 0,#b7b8b7 100%);\n background-position: center;\n background-size: 100% 2px;\n background-repeat: no-repeat;\n outline: 0;\n border: none;\n box-sizing: content-box;\n &:disabled {\n opacity: .55;\n }\n &::-webkit-slider-thumb {\n appearance: none;\n height: 28px;\n width: 28px;\n border-radius: 50%;\n background: @white;\n cursor: pointer;\n box-shadow: 0 2px 4px rgba(0, 0, 0, .3);\n }\n &::-ms-thumb { \n appearance: none;\n height: 28px;\n width: 28px;\n border-radius: 50%;\n background: @white;\n cursor: pointer;\n box-shadow: 0 2px 4px rgba(0, 0, 0, .3);\n }\n}\n\n.buttons-list {\n ul {\n // &::before, &::after {\n // display: none;\n // }\n li {\n border: 0;\n font-weight: normal;\n .item-link {\n height: 100%;\n .item-content {\n min-height: initial;\n height: 100%;\n padding: 0;\n }\n .item-inner {\n justify-content: center;\n align-items: center;\n padding: 0;\n min-height: initial;\n &::before {\n display: none;\n }\n }\n }\n }\n }\n}\n\n.item-color-auto {\n .color-auto {\n width: 22px;\n height: 22px;\n background-color: @autoColor;\n }\n &.active {\n .color-auto {\n box-shadow: 0 0 0 1px @white, 0 0 0 4px @brandColor;\n border-radius: 1px;\n }\n }\n}\n\n.page {\n .color-palettes {\n .list {\n ul {\n .palette {\n padding: 8px 0px;\n a {\n flex-grow: 1;\n position: relative;\n min-width: 10px;\n min-height: 26px;\n margin: 1px 1px 0 0;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset;\n border-radius: 0;\n &.active:after {\n content: ' ';\n position: absolute;\n width: 100%;\n height: 100%;\n box-shadow: 0 0 0 1px @white, 0 0 0 4px @brandColor;\n z-index: 1;\n border-radius: 1px;\n }\n &.transparent {\n background-repeat: no-repeat;\n background-size: 100% 100%;\n .encoded-svg-background(\"\");\n }\n } \n }\n }\n }\n .row {\n padding: 0;\n }\n .list .item-inner {\n display: block;\n color: var(--text-normal);\n }\n .standart-colors, .dynamic-colors {\n .palette {\n display: flex;\n }\n }\n\n .dynamic-colors {\n .empty-color {\n background-color: @white;\n }\n }\n }\n}\n\n#color-picker {\n display: flex;\n justify-content: space-around;\n align-items: center;\n max-width: 300px;\n margin: 0 auto;\n margin-top: 4px;\n .color-picker-container {\n width: calc(100% - 94px);\n position: relative;\n max-width: 100%;\n height: auto;\n font-size: 0;\n .color-picker-module-wheel {\n margin: 0;\n }\n }\n .right-block {\n margin-left: 20px;\n .color-hsb-preview {\n width: 72px;\n height: 72px;\n overflow: hidden;\n border: 1px solid @gray;\n border-radius: 100px;\n .new-color-hsb-preview, .current-color-hsb-preview {\n height: 36px;\n }\n .new-color-hsb-preview {\n border-radius: 100px 100px 0 0;\n }\n .current-color-hsb-preview {\n border-radius: 0 0 100px 100px;\n }\n }\n .button-round {\n height: 72px;\n width: 72px;\n padding: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 100px;\n background-color: @fill-white;\n box-shadow: 0 4px 4px rgba(0,0,0,.25);\n // border-color: transparent;\n border: 0;\n margin-top: 20px;\n }\n }\n}\n\n// Table styles\n\n.table-styles {\n width: 100%;\n .row {\n &, li {\n margin-bottom: 12px;\n }\n li, div {\n box-shadow: 0 0 0 1px @gray;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n }\n\n li,\n .row div {\n margin: 0;\n padding: 1px;\n\n img {\n width: 70px;\n height: 50px;\n }\n }\n}\n\n#edit-table-style {\n .list ul ul {\n padding-left: 0;\n }\n}\n\n// input[type=\"number\"]\ninput[type=\"number\"]::-webkit-outer-spin-button,\ninput[type=\"number\"]::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n// Regional Settings\n.icon.lang-flag {\n background-size: 48px auto;\n background-image: ~'url(@{common-image-path}/controls/flags@2x.png)';\n}\n\n.icon.lang-flag {\n width: 16px;\n height: 12px;\n}\n\n.lang-flag.ca,\n.lang-flag.ca-ES {\n background-position: 0 0;\n}\n.lang-flag.cs,\n.lang-flag.cs-CZ {\n background-position: -16px 0;\n}\n.lang-flag.da,\n.lang-flag.da-DK {\n background-position: -32px 0;\n}\n.lang-flag.de,\n.lang-flag.de-DE {\n background-position: 0 -12px;\n}\n.lang-flag.el,\n.lang-flag.el-GR {\n background-position: -16px -12px;\n}\n.lang-flag.en,\n.lang-flag.en-US {\n background-position: -32px -12px;\n}\n.lang-flag.fr,\n.lang-flag.fr-FR {\n background-position: 0 -24px;\n}\n.lang-flag.hu,\n.lang-flag.hu-HU {\n background-position: -16px -24px;\n}\n.lang-flag.it,\n.lang-flag.it-IT {\n background-position: -32px -24px;\n}\n.lang-flag.ko,\n.lang-flag.ko-KR {\n background-position: 0 -36px;\n}\n.lang-flag.nl,\n.lang-flag.nl-NL {\n background-position: -16px -36px;\n}\n.lang-flag.nb,\n.lang-flag.nb-NO,\n.lang-flag.nn,\n.lang-flag.nn-NO {\n background-position: -32px -36px;\n}\n.lang-flag.pl,\n.lang-flag.pl-PL {\n background-position: 0 -48px;\n}\n.lang-flag.pt,\n.lang-flag.pt-BR {\n background-position: -16px -48px;\n}\n.lang-flag.ro,\n.lang-flag.ro-RO {\n background-position: -32px -48px;\n}\n.lang-flag.ru,\n.lang-flag.ru-RU {\n background-position: 0 -60px;\n}\n.lang-flag.sv,\n.lang-flag.sv-SE {\n background-position: -32px -60px;\n}\n.lang-flag.tr,\n.lang-flag.tr-TR {\n background-position: 0 -72px;\n}\n.lang-flag.uk,\n.lang-flag.uk-UA {\n background-position: -16px -72px;\n}\n.lang-flag.lv,\n.lang-flag.lv-LV {\n background-position: -32px -72px;\n}\n.lang-flag.lt,\n.lang-flag.lt-LT {\n background-position: 0 -84px;\n}\n.lang-flag.vi,\n.lang-flag.vi-VN {\n background-position: -16px -84px;\n}\n.lang-flag.de-CH,\n.lang-flag.fr-CH,\n.lang-flag.it-CH {\n background-position: -32px -84px;\n}\n.lang-flag.pt-PT {\n background-position: -16px -96px;\n}\n.lang-flag.de-AT {\n background-position: -32px -96px;\n}\n.lang-flag.es,\n.lang-flag.es-ES {\n background-position: 0 -108px;\n}\n.lang-flag.en-GB {\n background-position: -32px -108px;\n}\n.lang-flag.en-AU {\n background-position: 0 -120px;\n}\n.lang-flag.az-Latn-AZ {\n background-position: -16px -120px;\n}\n.lang-flag.id,\n.lang-flag.id-ID,\n.lang-flag.en-ID {\n background-position: -32px -120px;\n}\n.lang-flag.bg,\n.lang-flag.bg-BG {\n background-position: 0 -132px;\n}\n.lang-flag.ca-ES-valencia {\n background-position: -16px -132px;\n}\n.lang-flag.en-CA {\n background-position: -32px -132px;\n}\n.lang-flag.en-ZA {\n background-position: 0 -144px;\n}\n.lang-flag.eu,\n.lang-flag.eu-ES {\n background-position: -16px -144px;\n}\n.lang-flag.gl,\n.lang-flag.gl-ES {\n background-position: -32px -144px;\n}\n.lang-flag.hr,\n.lang-flag.hr-HR {\n background-position: 0 -156px;\n}\n.lang-flag.lb,\n.lang-flag.lb-LU {\n background-position: -16px -156px;\n}\n.lang-flag.mn,\n.lang-flag.mn-MN {\n background-position: -32px -156px;\n}\n.lang-flag.sl,\n.lang-flag.sl-SI {\n background-position: 0 -168px;\n}\n.lang-flag.sr,\n.lang-flag.sr-Cyrl-RS,\n.lang-flag.sr-Latn-RS {\n background-position: -16px -168px;\n}\n.lang-flag.sk,\n.lang-flag.sk-SK {\n background-position: -32px -168px;\n}\n.lang-flag.kk,\n.lang-flag.kk-KZ {\n background-position: 0 -180px;\n}\n.lang-flag.fi,\n.lang-flag.fi-FI,\n.lang-flag.sv-FI {\n background-position: -16px -180px;\n}\n.lang-flag.zh,\n.lang-flag.zh-CN {\n background-position: -32px -180px;\n}\n.lang-flag.ja,\n.lang-flag.ja-JP {\n background-position: 0 -192px;\n}\n.lang-flag.es-MX {\n background-position: -16px -192px;\n}\n\n.checkbox-in-modal {\n margin-top: 10px;\n display: flex;\n align-items: center;\n .right-text {\n margin-left: 10px;\n }\n}\n\n.username-tip {\n height: 20px;\n color: @white;\n padding: 0 10px;\n position: absolute;\n z-index: 900;\n display: none;\n pointer-events: none;\n transition: opacity 0.1ms ease-out;\n opacity: 0;\n &.active {\n display: block;\n opacity: 1;\n }\n}\n\n.dlg-adv-options {\n z-index: 13700;\n .content-block {\n padding: 0;\n }\n .picker-3d { \n .picker-item {\n padding: 0;\n text-align: left;\n font-size: 16px;\n }\n }\n .picker-center-highlight {\n width: 100%;\n left: 0;\n right: 0;\n }\n}\n\n.dlg-macros-request {\n .dialog-text {\n word-break: break-word;\n }\n}\n// Skeleton of document\n\n@keyframes flickerAnimation {\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n@-o-keyframes flickerAnimation{\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n@-moz-keyframes flickerAnimation{\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n@-webkit-keyframes flickerAnimation{\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n\n.doc-placeholder-container {\n position: absolute;\n width: 100%;\n height: 100%;\n z-index: 6000;\n top: 0;\n left: 0;\n overflow: hidden;\n}\n\n// Statusbar\n\n.statusbar .statusbar--box-tabs > ul > .locked a {\n box-shadow: inset 0 2px red;\n}\n\n// Fonts List \n\n.font-item {\n .item-inner {\n overflow: hidden;\n &:after {\n left: 16px;\n }\n }\n}\n\n// Functions List \n\n.cell-editor {\n overflow: initial;\n}\n\n.functions-list {\n max-height: 200px;\n width: 360px;\n overflow-y: auto;\n overflow-x: hidden;\n background-color: @background-primary;\n &__mobile {\n position: absolute;\n right: 0;\n left: 0;\n width: 100%;\n box-shadow: 0px 10px 10px -10px rgba(0, 0, 0, 0.3);\n .list {\n margin: 0;\n ul:before {\n display: none;\n }\n .item-content {\n padding-left: 0;\n }\n .item-inner {\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left) - var(--menu-list-offset));\n }\n .item-title {\n font-size: 15px;\n }\n }\n }\n}\n\n// Function List Popover\n\n#idx-functions-list {\n width: 350px;\n .popover-inner {\n .navbars {\n .right .link {\n font-weight: 600;\n }\n .navbar-bg {\n background: @background-secondary;\n &::after {\n background: @background-menu-divider;\n }\n }\n }\n .page-function-info{\n .navbar {\n .navbar-bg::after {\n background: @background-menu-divider;\n }\n .navbar-inner{\n background: @background-secondary;\n .title {\n color: @text-normal;\n }\n .right .link {\n color: @brandColor;\n font-weight: 600;\n }\n .icon-back::after {\n color: @brandColor;\n }\n }\n }\n }\n }\n}\n\n// Highlight Colors\n\n.highlight-palette {\n width: 100%;\n}\n\n.highlight-color {\n min-width: 10px;\n min-height: 34px;\n margin: 1px;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset;\n position: relative;\n flex-grow: 1;\n &_active:after {\n content: ' ';\n position: absolute;\n width: 100%;\n height: 100%;\n box-shadow: 0 0 0 1px #ffffff, 0 0 0 4px #446995;\n z-index: 1;\n border-radius: 1px;\n }\n}\n#idx-celleditor.expanded {\n .functions-list {\n &__mobile {\n top: 70px;\n }\n }\n}\n\n.popover__functions {\n box-shadow: 0px 10px 100px rgba(0, 0, 0, 0.3);\n .view {\n transition: .2s height;\n }\n .popover-angle.on-bottom {\n display: none;\n }\n}\n\n.target-function-list {\n position: absolute; \n left: 0;\n top: 0;\n bottom: 0;\n width: 0; \n height: 100%;\n}\n\n.dropdown-list-popup {\n height: 260px;\n bottom: 0;\n top: auto;\n}\n\n.dropdown-list {\n &__placeholder {\n opacity: 0.6;\n .item-inner {\n border-bottom: 1px solid var(--f7-list-item-border-color);\n }\n }\n}\n\n// Swiper\n.swiper-wrapper .swiper-slide .list ul {\n background-color: transparent;\n}\n\n.swiper-pagination-bullet {\n background: @background-menu-divider;\n opacity: 1;\n &-active {\n background: @text-secondary;\n }\n}\n\n.swiper-pagination-bullets {\n position: fixed;\n width: 100%;\n bottom: 9px;\n .swiper-pagination-bullet {\n margin: 0 5.5px;\n }\n}\n\n.preview-cell-style {\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n width: 104px;\n height: 44px;\n background-color: @fill-white;\n border-radius: 4px;\n border: 0.5px solid @background-menu-divider;\n}\n\n// Sharing Settings\n.sharing-placeholder {\n height: 100%;\n}\n\n// Comment List\n.sheet-modal .page-current-comment {\n padding-bottom: 60px;\n}\n\n// Picker\n.picker-columns {\n justify-content: space-around;\n}\n\n.row-picker {\n .col-50 {\n color: @text-secondary;\n text-align: center;\n }\n}\n\n// Block \n.block {\n margin-top: 8px;\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 16px;\n}\n\n// Inputs List \n.block-title + .list, .block-title + .block, .block-title + .card, .block-title + .timeline, .block-title + .block-header {\n margin: 0;\n}\n\n.inputs-list {\n margin-bottom: 0;\n\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n position: relative;\n background: var(--f7-list-bg-color);\n }\n}\n\n.list input[type='password'], \n.list input[type='text'] {\n background: transparent;\n}\n\n// Dialog with password\n.dialog {\n .modal-password {\n position: relative;\n\n &__icon {\n position: absolute;\n right: 4px;\n top: calc(50% - 12.5px);\n }\n\n .item-input-wrap {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n }\n}\n\n// Version History \n.version-history { \n &__user {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n min-width: 40px;\n min-height: 40px;\n text-align: center;\n border-radius: 50px;\n line-height: 40px;\n color: var(--fill-white);\n font-size: 18px;\n }\n}\n\n// Review change\n.accept-reject .link {\n margin-right: 20px;\n}\n\n// Beta badge\n.beta-badge {\n font-size: 12px;\n font-weight: 400;\n line-height: 16px;\n letter-spacing: 0.5px;\n color: @fill-white;\n padding: 2px 4px;\n border-radius: 4px;\n}\n\n// Close editor button\n.close-editor-btn {\n .item-inner {\n padding-left: 36px;\n }\n\n .item-title {\n color: @text-error;\n }\n}\n\n\n\n\n\n\n\n","\n.device-ios .app-layout {\n @blockTitleColor: #6d6d72;\n @item-border-color: #c8c7cc;\n @darkGreen: #40865c;\n @text-normal: var(--text-normal);\n @background-warning: #FF9F0A;\n\n --f7-navbar-link-color: @brandColor;\n --f7-subnavbar-link-color: @brandColor;\n --f7-navbar-text-color: @text-normal;\n --f7-navbar-title-line-height: 44px;\n --f7-navbar-link-line-height: 44px;\n --f7-navbar-title-font-size: 17px;\n\n --f7-list-bg-color: @background-primary;\n --f7-navbar-bg-color: @toolbar-background;\n\n --f7-tabbar-link-inactive-color: @toolbar-segment;\n\n --f7-radio-active-color: @brandColor;\n --f7-toggle-active-color: @brandColor;\n --f7-range-bar-active-bg-color: @brandColor;\n\n --f7-list-button-text-color: @brandColor;\n\n --f7-list-item-border-color: @background-menu-divider;\n\n --f7-page-bg-color: @background-tertiary;\n --f7-list-item-title-text-color: @text-normal;\n --f7-list-item-text-text-color: @text-normal;\n --f7-list-item-subtitle-text-color: @text-secondary;\n --f7-label-text-color: @text-normal;\n --f7-list-item-after-text-color: @text-normal;\n --f7-input-text-color: @text-normal;\n --f7-block-title-text-color: @text-secondary;\n --f7-input-placeholder-color: @text-secondary;\n\n --f7-list-chevron-icon-color: @text-tertiary;\n --f7-searchbar-search-icon-color: @text-tertiary;\n --f7-searchbar-input-clear-button-color: @text-tertiary;\n\n --f7-toggle-inactive-border-color: @background-menu-divider;\n --f7-toggle-inactive-bg-color: @background-menu-divider;\n\n --f7-actions-button-border-color: @background-menu-divider;\n --f7-popover-bg-color: @background-primary;\n --f7-dialog-bg-color-rgb: @background-secondary;\n --f7-dialog-title-text-color: @text-normal;\n --f7-dialog-text-color: @text-normal;\n --f7-dialog-button-text-color: @brandColor;\n --f7-dialog-border-divider-color: @background-menu-divider;\n\n --f7-subnavbar-border-color: @background-menu-divider;\n --f7-list-border-color: @background-menu-divider;\n\n --f7-picker-item-text-color: rgba(var(--text-normal), 0.45);\n --f7-picker-item-selected-text-color: @text-normal;\n\n --f7-block-text-color: @text-secondary;\n\n --f7-theme-color-shade: @background-primary;\n --f7-fab-pressed-bg-color: @background-primary;\n --f7-input-clear-button-color: @text-tertiary;\n\n // Main Toolbar\n #editor-navbar.navbar .right a + a,\n #editor-navbar.navbar .left a + a {\n margin-left: 0;\n }\n\n .navbar, .navbar-bg, .subnavbar {\n background-color: var(--f7-navbar-bg-color);\n\n a.btn-doc-back {\n width: 22px;\n }\n\n .title {\n color: @text-normal;\n }\n\n .navbar-inner, .subnavbar-inner {\n z-index: auto;\n }\n \n .sheet-close {\n width: 44px;\n height: 44px;\n display: flex;\n justify-content: center;\n }\n }\n\n .subnavbar {\n .icon-back {\n color: @brandColor;\n }\n\n .title {\n font-size: 15px;\n font-weight: normal;\n }\n }\n\n .popover__titled {\n .list {\n &:first-child, &:last-child {\n ul {\n border-radius: 0;\n }\n\n li:first-child, li:last-child {\n > label {\n border-radius: 0;\n }\n }\n }\n }\n\n .popover-inner {\n //border-radius: var(--f7-popover-border-radius);\n\n > .view {\n border-radius: var(--f7-popover-border-radius);\n }\n }\n\n .navbar-bg {\n //-webkit-backdrop-filter: none;\n backdrop-filter: none;\n &::after {\n background: @background-menu-divider;\n }\n }\n\n // .list:first-child {\n // li:first-child {\n // a {\n // border-radius: 0;\n // }\n // }\n // }\n\n .list:last-child {\n li:last-child {\n &:after {\n content: '';\n position: absolute;\n background-color: var(--f7-navbar-border-color, var(--f7-bars-border-color));\n display: block;\n //z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n }\n }\n }\n }\n\n .popover {\n li:last-child {\n .segmented a {\n &:first-child {\n border-radius: var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius);\n }\n\n &:last-child {\n border-radius: 0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0;\n }\n }\n }\n\n .page-content {\n > .list {\n &:last-child {\n // margin-bottom: 30px;\n }\n }\n }\n }\n\n .list {\n .item-content {\n .color-preview {\n width: 22px;\n height: 8px;\n display: inline-block;\n margin-top: 21px;\n box-sizing: border-box;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset;\n background: @fill-white;\n }\n .item-after {\n .color-preview {\n width: 75px;\n height: 30px;\n margin-top: -3px;\n }\n }\n }\n .item-inner {\n padding-top: 7px;\n .item-after {\n .after-start {\n margin: 0 5px;\n }\n .segmented {\n min-width: 90px;\n margin-left: 10px;\n }\n }\n }\n .buttons {\n .item-inner {\n padding-top: 0;\n padding-bottom: 0;\n align-items: stretch;\n > .row {\n width: 100%;\n align-items: stretch;\n .button {\n flex: 1;\n border: none;\n height: inherit;\n border-radius: 0;\n font-size: 17px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n }\n }\n }\n .list-input-right input {\n text-align: right;\n }\n }\n\n .links-list a:after, .list .item-inner:after, .simple-list li:after {\n background-color: var(--f7-list-item-border-color);\n bottom: 0;\n content: \"\";\n display: block;\n height: 1px;\n left: 0;\n position: absolute;\n right: auto;\n top: auto;\n transform: scaleY(calc(1/var(--f7-device-pixel-ratio)));\n transform-origin: 50% 100%;\n width: 100%;\n z-index: 15;\n }\n\n .tab-buttons {\n width: 100%;\n display: flex;\n flex-wrap: nowrap;\n align-self: center;\n .tab-link {\n display: block;\n width: 100%;\n line-height: 26px;\n position: relative;\n overflow: hidden;\n -webkit-box-flex: 1;\n border: 1px solid @toolbar-segment;\n text-decoration: none;\n text-align: center;\n margin: 0;\n padding: 0 1px;\n height: 29px;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n font-family: inherit;\n cursor: pointer;\n outline: 0;\n font-weight: 600;\n color: @brandColor;\n &:first-child {\n border-radius: 5px 0 0 5px;\n border-left-width: 1px;\n border-left-style: solid;\n }\n &:last-child {\n border-radius: 0 5px 5px 0;\n }\n &.tab-link-active {\n // background: @brandColor;\n // color: @fill-white;\n background: @toolbar-segment;\n color: @brand-text-on-brand;\n i.icon {\n background-color: @brand-text-on-brand;\n }\n }\n }\n }\n\n .button {\n border: 1px solid @brandColor;\n color: @brandColor;\n text-decoration: none;\n text-align: center;\n display: block;\n // border-radius: 5px;\n line-height: 27px;\n box-sizing: border-box;\n background: 0 0;\n padding: 0 10px;\n margin: 0;\n height: 29px;\n white-space: nowrap;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 14px;\n font-family: inherit;\n cursor: pointer;\n outline: 0;\n }\n\n .button-fill {\n color: @brandColor;\n background-color: @background-primary;\n }\n\n .button-red {\n color: @text-error;\n background-color: @background-primary;\n }\n\n .buttons-list {\n li {\n border: 0;\n border-radius: 0;\n height: 43px;\n min-height: 43px;\n font-size: 17px;\n text-transform: initial;\n padding: 0;\n box-shadow: none;\n }\n }\n\n .button-red .list-button {\n color: @text-error;\n }\n\n .list-button {\n position: initial;\n }\n\n .block-title {\n position: relative;\n overflow: hidden;\n margin: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n text-transform: uppercase;\n line-height: 1;\n color: @blockTitleColor;\n margin: 35px 15px 10px;\n }\n\n .shapes {\n .page-content {\n background: @fill-white;\n }\n }\n\n .dialog {\n background-color: var(--f7-dialog-bg-color-rgb);\n }\n\n #color-picker {\n .right-block {\n .button-round {\n .icon {\n height: 30px;\n width: 30px;\n }\n }\n }\n }\n\n .content-block {\n color: @blockTitleColor;\n }\n\n .dataview, #add-table, #add-shape, #add-slide, #add-chart {\n &.page-content, .page-content {\n background-color: @background-tertiary;\n }\n }\n\n // input[type=\"number\"]\n\n input[type=\"number\"] {\n &::placeholder,\n &::-webkit-input-placeholder,\n &::-moz-placeholder,\n &:-moz-placeholder,\n &:-ms-input-placeholder\n {\n color: @darkGreen;\n }\n }\n\n // Regional Settings\n\n .regional-settings {\n .item-title-row {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n .item-title {\n margin-left: 20px;\n white-space: normal;\n }\n }\n }\n\n // Find and Replace \n\n .navbar {\n .searchbar {\n background: var(--f7-navbar-bg-color);\n }\n .searchbar-input-wrap {\n position: relative;\n margin-right: 10px;\n height: 28px;\n }\n .buttons-row-replace a {\n color: @brandColor;\n }\n }\n\n .searchbar {\n input {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n display: block;\n border: none;\n appearance: none;\n border-radius: 5px;\n font-family: inherit;\n color: @text-normal;\n font-size: 14px;\n font-weight: 400;\n padding: 0 8px;\n background-color: @background-button;\n padding: 0 36px 0 28px;\n\n &::placeholder {\n color: @text-tertiary;\n }\n }\n\n .number-search-results {\n position: absolute;\n font-size: 13px;\n font-weight: 400;\n line-height: 18px;\n right: 26px;\n color: @text-tertiary;\n top: 4.5px;\n z-index: 100;\n }\n }\n\n .searchbar-inner {\n &__left {\n margin-right: 10px;\n justify-content: center;\n }\n &__right {\n .buttons-row a.next {\n margin-left: 15px;\n }\n }\n }\n\n .searchbar-expandable.searchbar-enabled {\n &.replace {\n .searchbar-inner {\n &__right {\n width: 28%;\n }\n }\n }\n } \n\n @media(max-width: 550px) {\n .navbar {\n .searchbar-input-wrap {\n margin-right: 0; \n }\n }\n .searchbar-expandable.searchbar-enabled {\n top: 0;\n .searchbar-inner {\n &__center {\n flex-direction: column;\n }\n &__right {\n flex-direction: column-reverse;\n margin-left: 10px;\n }\n }\n &.replace {\n height: 88px;\n .searchbar-inner {\n height: 100%;\n &__center {\n .searchbar-input-wrap {\n margin: 8px 0;\n }\n }\n &__right {\n width: auto;\n height: 100%;\n justify-content: space-between;\n .buttons-row-replace {\n height: 50%;\n }\n }\n }\n }\n } \n }\n\n .actions-button {\n background: @background-secondary;\n --f7-actions-button-border-color: @background-menu-divider;\n }\n \n .actions-button-text {\n // height: 57px;\n // line-height: 57px;\n font-size: 20px;\n color: @text-normal;\n white-space: normal;\n text-overflow: ellipsis;\n }\n\n input.modal-text-input {\n box-sizing: border-box;\n height: 26px;\n background: @background-primary;\n margin: 0;\n margin-top: 15px;\n padding: 0 5px;\n border: 1px solid @text-tertiary;\n border-radius: 0;\n width: 100%;\n font-size: 14px;\n font-family: inherit;\n display: block;\n box-shadow: 0 0 0 transparent;\n -webkit-appearance: none;\n -moz-appearance: none;\n -ms-appearance: none;\n appearance: none;\n }\n\n // Fonts List \n\n .font-item {\n .item-content {\n padding-left: 0;\n }\n }\n\n // Toggle Icon \n\n // .toggle-icon {\n // background: transparent;\n // }\n\n // Edit Comment Popup\n\n .edit-comment-popup {\n .navbar .title {\n line-height: normal;\n }\n }\n\n // Version History\n .version-history {\n &__title {\n font-style: normal;\n font-weight: 400;\n font-size: 13px;\n line-height: 18px;\n color: @text-secondary;\n margin-top: 16px;\n margin-bottom: 4px;\n }\n\n &__btn {\n font-style: normal;\n font-weight: 600;\n font-size: 15px;\n line-height: 20px;\n letter-spacing: -0.24px;\n text-transform: uppercase;\n color: @brandColor;\n background: transparent;\n outline: none;\n border: 0;\n padding: 0;\n margin-top: 22px;\n width: auto;\n }\n\n &__list {\n ul {\n background: @background-primary;\n }\n \n .item-title {\n font-weight: 600;\n font-size: 13px;\n line-height: 18px;\n color: @text-normal;\n letter-spacing: -0.08px;\n }\n\n .item-media, .item-inner {\n padding-top: 10px;\n padding-bottom: 10px;\n }\n\n .item-link .item-title-row:before {\n display: none;\n }\n\n .item-subtitle {\n font-style: normal;\n font-weight: 400;\n font-size: 11px;\n line-height: 13px;\n color: @text-secondary;\n margin-top: 3px;\n letter-spacing: 0.06px;\n }\n }\n }\n\n .version-history__item_active {\n background-color: var(--canvas-ruler-margins-background);\n }\n\n .btn-close-history {\n font-style: normal;\n font-weight: 400;\n font-size: 17px;\n line-height: 22px;\n letter-spacing: -0.41px;\n color: @brandColor;\n margin-left: 10px;\n }\n\n .beta-badge {\n background-color: @background-warning;\n margin-left: 10px;\n }\n}\n\n\n","\n.device-android .app-layout {\n @tabLinkColor: rgba(255,255,255,.7);\n @red: #f44336;\n @white: #fff;\n @darkGreen: #40865c;\n @darkGrey: #757575;\n @text-normal: var(--text-normal);\n @brand-text-on-brand: var(--brand-text-on-brand);\n @touchColor: rgba(255,255,255,0.1);\n\n --f7-navbar-shadow-image: none;\n --f7-theme-color: @brandColor;\n\n --f7-navbar-bg-color: @toolbar-background;\n --f7-navbar-link-color: @fill-white;\n --f7-navbar-text-color: @fill-white;\n --f7-navbar-height: 56px;\n\n --f7-list-bg-color: @background-primary;\n --f7-subnavbar-bg-color: @toolbar-background;\n --f7-subnavbar-link-color: @toolbar-icons;\n --f7-subnavbar-text-color: @fill-white;\n --f7-subnavbar-height: 56px;\n\n --f7-radio-active-color: @brandColor;\n --f7-range-bar-active-bg-color: @brandColor;\n --f7-range-knob-color: @brandColor;\n --f7-range-knob-size: 16px;\n\n --f7-list-item-after-text-color: @text-normal;\n\n --f7-link-highlight-color: transparent;\n --f7-link-touch-ripple-color: @touchColor;\n\n --f7-actions-bg-color: @background-secondary;\n --f7-actions-button-border-color: @background-menu-divider;\n --f7-popover-bg-color: @background-secondary;\n\n --f7-dialog-bg-color: @background-secondary;\n --f7-dialog-text-color: @text-secondary;\n --f7-dialog-title-text-color: @text-normal;\n --f7-dialog-button-text-color: @brandColor;\n\n --f7-picker-item-text-color: rgba(var(--text-normal), 0.45);\n --f7-picker-item-selected-text-color: @text-normal;\n\n --f7-input-bg-color: @background-primary;\n --f7-input-placeholder-color: @text-secondary;\n --f7-input-text-color: @text-normal;\n \n --f7-block-text-color: @text-secondary;\n --f7-dialog-border-radius: 0;\n --f7-sheet-border-radius: 0;\n --f7-popover-border-radius: 4px;\n --f7-actions-border-radius: 0;\n --f7-box-shadow: 0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);\n --f7-popover-box-shadow: var(--f7-box-shadow);\n\n --f7-toggle-active-bg-color: @brandColor;\n --f7-toggle-active-border-color: @brandColor;\n\n --f7-navbar-title-margin-left: 20px;\n --f7-navbar-title-margin-right: 20px;\n\n .button {\n --f7-touch-ripple-color: transparent;\n }\n\n .segmented {\n .button {\n --f7-touch-ripple-color: var(--f7-list-link-pressed-bg-color);\n }\n }\n\n --f7-input-focused-border-color: @brandColor;\n --f7-label-focused-text-color: @brandColor;\n\n .navbar {\n --f7-touch-ripple-color: @touchColor;\n\n .sheet-close {\n width: 56px;\n height: 56px;\n display: flex;\n justify-content: center;\n }\n &-inner {\n background: var(--f7-navbar-bg-color);\n background-image: var(--f7-navbar-bg-image, var(--f7-bars-bg-image));\n background-color: var(--f7-navbar-bg-color, var(--f7-bars-bg-color));\n }\n }\n\n .page.page-with-subnavbar.page-with-logo {\n .page-content {\n --f7-page-navbar-offset: var(--f7-navbar-height);\n }\n }\n\n .page {\n --f7-text-color: @text-normal;\n --f7-list-item-title-text-color: @text-normal;\n --f7-list-item-text-text-color: @text-normal;\n --f7-list-item-subtitle-text-color: @text-secondary;\n --f7-block-title-text-color: @text-secondary;\n --f7-label-text-color: @text-normal;\n --f7-page-bg-color: @background-tertiary;\n --f7-list-item-border-color: @background-menu-divider;\n --f7-list-chevron-icon-color: @text-tertiary;\n --f7-actions-button-text-color: @text-normal;\n --f7-subnavbar-border-color: @background-menu-divider;\n --f7-list-border-color: @background-menu-divider;\n }\n\n .add-popup {\n .view {\n .add-image, .inputs-list {\n ul:after {\n display: none;\n }\n }\n }\n }\n\n .coauth__sheet {\n max-height: 65%;\n }\n\n // Buttons\n .segmented {\n .decrement, .increment {\n display: flex;\n border: none;\n min-width: 40px;\n margin-left: 0;\n border-radius: 0;\n height: 32px;\n i.icon-expand-down {\n background: @brandColor;\n }\n }\n label {\n color: @text-normal;\n margin: 0 5px;\n line-height: 32px;\n }\n }\n .button {\n --f7-button-text-color: @brandColor;\n color: @brandColor;\n text-align: center;\n display: block;\n border-radius: 2px;\n line-height: 36px;\n box-sizing: border-box;\n appearance: none;\n background: 0 0;\n margin: 0;\n height: 36px;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n text-transform: uppercase;\n font-family: inherit;\n cursor: pointer;\n min-width: 64px;\n padding: 0 8px;\n position: relative;\n overflow: hidden;\n outline: 0;\n -webkit-transition-duration: .3s;\n transition-duration: .3s;\n -webkit-transform: translate3d(0,0,0);\n transform: translate3d(0,0,0);\n }\n\n .button-fill {\n color: @brand-text-on-brand;\n background-color: transparent;\n }\n\n .button-raised {\n box-shadow: 0 1px 3px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.24);\n }\n\n .button-red {\n color: @brand-text-on-brand;\n background-color: @text-error;\n }\n\n .buttons-list {\n ul {\n background-color: @background-tertiary;\n &::before, &::after {\n display: none;\n }\n li {\n margin: 20px 16px;\n color: @fill-white;\n border-radius: 2px;\n text-transform: uppercase;\n height: 36px;\n min-height: 36px;\n font-size: 14px;\n }\n }\n }\n\n .table-presets {\n .button {\n min-width: 0;\n }\n }\n .button-fill .list-button {\n background-color: @brandColor;\n color: @brand-text-on-brand;\n height: 36px;\n text-align: center;\n line-height: 36px;\n text-transform: uppercase;\n font-size: 14px;\n font-weight: 500;\n border-radius: 2px;\n // margin: 20px 16px;\n margin: 0;\n }\n .button-raised .list-button {\n box-shadow: 0 1px 3px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.24);\n }\n .button-red .list-button {\n background-color: @text-error;\n }\n // Tabs\n .tab-buttons {\n position: relative;\n display: flex;\n height: 100%;\n width: 100%;\n justify-content: space-between;\n .tab-link {\n justify-content: center;\n height: 100%;\n box-sizing: border-box;\n padding-left: 0;\n padding-right: 0;\n font-size: 14px;\n font-weight: 500;\n text-transform: uppercase;\n align-items: center;\n color: @tabLinkColor;\n i.icon {\n opacity: 0.5;\n }\n &.tab-link-active {\n color: @fill-white;\n i.icon {\n opacity: 1;\n background-color: @fill-white;\n }\n }\n }\n .tab-link-highlight {\n --f7-tabbar-link-active-border-color: @toolbar-icons;\n position: absolute;\n left: 0;\n bottom: 0;\n height: 3px;\n }\n }\n\n // List\n .list {\n &.inputs-list {\n margin: 0;\n\n .item-input.item-content {\n padding-left: 0;\n }\n \n .item-input, .item-link {\n .item-inner {\n display: block;\n\n .item-title, .item-label {\n width: 100%;\n font-size: 12px;\n }\n \n .item-input-wrap {\n margin-left: 0;\n }\n }\n }\n }\n\n .buttons {\n box-sizing: border-box;\n min-height: 48px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n\n .item-content {\n width: 100%;\n\n .item-inner {\n padding-bottom: 0;\n padding-top: 0;\n\n .row {\n width: 100%;\n --f7-cols-per-row: 1;\n align-items: flex-start;\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n\n .button {\n flex: 1;\n font-size: 17px;\n margin-left: 5px;\n display: flex;\n align-items: center;\n justify-content: center;\n &:first-child {\n margin-left: 0;\n }\n }\n }\n }\n }\n }\n\n .item-content {\n .color-preview {\n width: 30px;\n height: 30px;\n border-radius: 4px;\n margin-top: -3px;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset;\n background-color: @fill-white;\n &.auto { \n background-color: @autoColor;\n }\n }\n }\n }\n\n .item-input:not(.item-input-outline) .item-content::before, .item-input:not(.item-input-outline).item-content::before {\n background: transparent;\n }\n\n .links-list a:after, .list .item-inner:after, .simple-list li:after {\n background-color: var(--f7-list-item-border-color);\n bottom: 0;\n content: \"\";\n display: block;\n height: 1px;\n left: 0;\n position: absolute;\n right: auto;\n top: auto;\n transform: scaleY(calc(1/var(--f7-device-pixel-ratio)));\n transform-origin: 50% 100%;\n width: 100%;\n z-index: 15;\n }\n\n .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content, .media-list:not(.inset):not(.inset-md):not(.menu-list) li > .item-link, .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content, .list:not(.inset):not(.inset-md):not(.menu-list) .media-item > .item-link {\n border-radius: 0;\n }\n\n // Color palette\n\n #color-picker {\n .right-block {\n .button-round {\n background-color: @brandColor;\n }\n }\n }\n\n // Regional Settings\n\n .regional-settings {\n .list {\n .item-inner {\n margin-left: 16px;\n }\n .item-title-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n flex-direction: row-reverse;\n .item-title {\n white-space: normal;\n }\n }\n }\n }\n\n // Find and Replace \n\n .searchbar-inner {\n &__center {\n flex-wrap: wrap;\n }\n // &__left {\n // padding-top: 4px;\n // }\n }\n\n .navbar {\n .searchbar-input-wrap {\n height: 32px;\n margin-right: 10px;\n margin: 4px 0;\n }\n\n .navbar-inner {\n overflow: initial;\n }\n\n .left {\n margin: 0;\n }\n\n .title {\n margin-left: var(--f7-navbar-title-margin-left);\n margin-right: var(--f7-navbar-title-margin-left);\n }\n }\n\n .subnavbar .title {\n font-size: 14px;\n font-weight: normal;\n }\n\n .searchbar {\n input {\n box-sizing: border-box;\n width: 100%;\n display: block;\n border: none;\n appearance: none;\n border-radius: 0;\n font-family: inherit;\n color: @fill-white;\n font-size: 16px;\n font-weight: 400;\n padding: 0;\n border-bottom: 1px solid @fill-white;\n height: 100%;\n padding: 0 40px 0 24px;\n background-color: transparent;\n background-repeat: no-repeat;\n background-position: 0 center;\n opacity: 1;\n background-size: 24px 24px;\n transition-duration: .3s;\n .encoded-svg-background('');\n &::placeholder {\n color: @fill-white;\n }\n }\n\n .input-clear-button {\n width: 18px;\n height: 18px;\n top: 7px;\n margin: 0;\n\n &:after {\n color: @fill-white;\n font-size: 19px;\n line-height: 19px;\n }\n }\n\n .number-search-results {\n position: absolute;\n right: 26px;\n top: 4px;\n font-size: 16px;\n font-weight: 400;\n line-height: 24px;\n }\n }\n\n .searchbar-icon {\n &:after {\n color: @fill-white;\n font-size: 19px;\n }\n }\n \n .navbar {\n .searchbar-expandable.searchbar-enabled {\n top: 0;\n // height: 100%;\n .searchbar-inner {\n height: 100%;\n padding: 0;\n\n &__center {\n flex-direction: column;\n }\n\n &__right {\n flex-direction: column-reverse;\n }\n }\n\n &.replace {\n height: 96px;\n }\n }\n a.link {\n padding: 0 16px;\n }\n a.link.searchbar-enable {\n i.icon-search {\n background-color: @toolbar-icons;\n }\n }\n a.icon-only {\n width: auto;\n height: 56px;\n }\n .buttons-row-replace a {\n color: @fill-white;\n padding: 0;\n }\n .searchbar .buttons-row {\n align-self: flex-start;\n }\n }\n\n @media(max-width: 550px) {\n .searchbar-expandable.searchbar-enabled {\n .searchbar-inner {\n &__left {\n margin-right: 33px;\n }\n }\n }\n }\n\n .actions-button-text {\n cursor: pointer;\n line-height: 48px;\n font-size: 16px;\n // color: rgba(0,0,0,.87);\n color: @text-normal;\n // color: var(--f7-actions-button-text-color, );\n }\n\n @media (min-width: 496px) {\n .actions-modal {\n width: 100%;\n left: auto;\n margin-left: 0;\n }\n }\n\n input.modal-text-input {\n box-sizing: border-box;\n height: 36px;\n background: #fff;\n margin: 0;\n margin-top: 15px;\n padding: 0;\n border: none;\n width: 100%;\n font-size: 16px;\n font-family: inherit;\n display: block;\n box-shadow: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n -ms-appearance: none;\n appearance: none;\n -webkit-transition-duration: .2s;\n transition-duration: .2s;\n }\n\n .input-field {\n .inputs-list {\n margin: 15px 0 0;\n ul {\n background: none;\n &::before, &::after {\n display: none;\n }\n }\n .item-input, .item-inner {\n padding: 0;\n margin: 0;\n }\n }\n }\n\n // Fonts List \n\n .font-item {\n .item-radio:not(.item-radio-icon-end) > .icon-radio {\n margin-right: 0;\n }\n }\n\n // Navbar link settings \n\n .navbar-link-settings, .navbar-dropdown-list {\n .navbar-inner {\n background: @background-primary;\n\n .icon-back {\n color: @text-normal;\n }\n }\n .title, a {\n color: @text-normal;\n }\n }\n\n // Popover styles\n .popover {\n box-shadow: var(--f7-box-shadow);\n\n &.popover__titled {\n .popover-arrow:after {\n background: @toolbar-background;\n }\n }\n\n &.document-menu, &.popover__functions {\n .popover-arrow:after {\n background: @background-secondary;\n }\n }\n }\n // Version History\n .page-version-history {\n --f7-page-bg-color: @background-primary;\n }\n\n .version-history {\n &__title {\n font-style: normal;\n font-weight: 500;\n font-size: 14px;\n line-height: 20px;\n color: @brandColor;\n margin-top: 16px;\n margin-bottom: 4px;\n }\n\n &__btn {\n box-shadow: 0px 0.25px 1px rgba(0, 0, 0, 0.039), 0px 0.85px 3px rgba(0, 0, 0, 0.19);\n border-radius: 6px;\n background: @background-primary;\n padding: 6px 20px;\n font-style: normal;\n font-weight: 500;\n font-size: 16px;\n line-height: 20px;\n letter-spacing: 0.25px;\n color: @brandColor;\n margin-top: 10px;\n border: 0;\n width: auto;\n }\n\n &__list {\n ul:before, ul:after {\n display: none;\n }\n\n .item-title {\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n line-height: 24px;\n color: @text-normal;\n letter-spacing: 0.15px;\n }\n\n .item-inner {\n padding-top: 10px;\n padding-bottom: 10px;\n }\n\n .item-inner::before {\n content: '';\n position: absolute;\n background-color: @background-menu-divider;\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n\n .item-media {\n padding-top: 12px;\n padding-bottom: 12px;\n min-width: 40px;\n max-width: 40px;\n }\n\n .item-link .item-title-row:before {\n display: none;\n }\n\n .item-subtitle {\n color: @text-secondary;\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 16px;\n letter-spacing: 0.5px;\n }\n }\n }\n\n .version-history__item_active {\n background-color: @background-tertiary;\n }\n\n .btn-close-history {\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n line-height: 24px;\n letter-spacing: 0.15px;\n color: @toolbar-icons;\n margin-left: 16px;\n }\n\n .beta-badge {\n background-color: @brand-secondary;\n margin-left: 8px;\n }\n\n .dropdown-list {\n .icon-radio {\n display: none;\n }\n\n input[type=\"radio\"]:checked + .icon-radio {\n display: inline-block;\n }\n }\n}\n","// @common-image-path - defined in webpack config\n\n.device-ios {\n .theme-type-dark {\n i.icon {\n &.icon-logo {\n background: ~\"url(@{common-image-path}/header/logo-android.svg)\" no-repeat center;\n background-size: contain;\n }\n }\n }\n i.icon {\n &.icon_mask {\n background-color: white;\n }\n &.icon-logo {\n width: 100px;\n height: 20px;\n background: ~\"url(@{common-image-path}/header/logo-ios.svg)\" no-repeat center;\n background-size: contain;\n }\n &.icon-prev {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-next {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-edit {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-show-password {\n width: 25px;\n height: 25px;\n .encoded-svg-mask('', @text-secondary);\n }\n &.icon-hide-password {\n width: 25px;\n height: 25px;\n .encoded-svg-mask('', @text-secondary);\n }\n &.icon-return {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n }\n}\n","// @common-image-path - defined in webpack config\n\n.device-android {\n i.icon {\n &.icon_mask {\n background-color: @text-normal;\n }\n &.icon-logo {\n width: 100px;\n height: 20px;\n background: ~\"url(@{common-image-path}/header/logo-android.svg) no-repeat center\";\n background-size: contain;\n }\n &.icon-prev {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-next {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-show-password {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-secondary);\n }\n &.icon-hide-password {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-secondary);\n }\n }\n .dropdown-list {\n i.icon {\n &.icon-radio {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @brandColor);\n }\n }\n }\n .navbar {\n i.icon {\n &.icon-collaboration {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-back {\n color: @toolbar-icons;\n }\n &.icon-edit {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-close {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-done-disabled {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-tertiary);\n }\n &.icon-done {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-search {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-version-history {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-return {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n }\n }\n}\n","@import \"./ios/icons\";\n@import \"./material/icons\";\n\ni.icon {\n &.icon-paste {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-copy {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-cut {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-prev:after, &.icon-next:after {\n content: none;\n }\n &.icon-collaboration {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-cancellation {\n width: 24px;\n height: 24px;\n .encoded-svg-background('');\n }\n &.icon-remove-style {\n width: 24px;\n height: 24px;\n .encoded-svg-background('')\n }\n &.icon-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n // Formats \n \n &.icon-format-pdf {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n &.icon-format-pdfa {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n\n // Numbers\n\n &.icon-numbers-1 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-2 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-3 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-4 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-5 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-6 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-7 {\n .encoded-svg-background('');\n }\n\n &.icon-sharing-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n &.icon-info {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @brandColor);\n }\n\n &.icon-help {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-about {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n &.icon-search {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-version-history {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n // Text orientation\n\n &.icon-text-orientation-horizontal {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-anglecount {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-angleclock {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-vertical {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-rotateup {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-rotatedown {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n}\n","// Data view\n\n.dataview {\n .row {\n justify-content: space-around;\n }\n\n ul {\n padding: 0 10px;\n list-style: none;\n\n li {\n display: inline-block;\n }\n }\n\n .row.list:last-child li:not(.active):last-child::after {\n content: none;\n }\n\n .row.list:last-child li.active:last-child, .active {\n position: relative;\n z-index: 1;\n\n &::after {\n content: '';\n position: absolute;\n width: 22px;\n height: 22px;\n right: -5px;\n left: auto;\n bottom: -5px;\n transform: none;\n .encoded-svg-mask('');\n }\n }\n}","// @text-normal: #000;\n// @common-image-path - defined in webpack config\n\n.about {\n .page-content {\n text-align: center /*rtl:ignore*/;\n display: flex;\n flex-direction: column;\n }\n\n &_ios {\n padding-top: 120px;\n padding-bottom: 30px;\n }\n\n &_android {\n padding-top: 60px;\n padding-bottom: 16px;\n }\n\n &_tablet {\n padding-top: 12px;\n padding-bottom: 12px;\n } \n\n &__text {\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 16px;\n text-align: center;\n color: @text-normal;\n margin: 0;\n }\n\n a {\n color: @brandColor;\n }\n\n .logo-block {\n &__elem {\n display: flex;\n justify-content: center;\n img {\n max-width: 100%;\n height: auto;\n }\n }\n }\n\n &__logo {\n width: 100%;\n height: 80px;\n background: ~\"url(@{common-image-path}/about/logo-new.svg) no-repeat center\";\n }\n\n &__editor {\n flex-grow: 1;\n margin-top: 20px;\n }\n\n &__contacts {\n text-align: center;\n padding-left: 72px;\n padding-right: 72px;\n }\n\n &__licensor, &__customer {\n text-align: center;\n margin-top: 12px;\n }\n}\n\n.theme-type-dark {\n .about__logo {\n background: ~\"url(@{common-image-path}/about/logo-new-white.svg) no-repeat center\";\n }\n}","@statusBarBorderColor: #cbcbcb;\n\n.navbar {\n .searchbar {\n background-color: var(--f7-navbar-bg-color);\n\n .buttons-row {\n align-self: center;\n display: flex;\n }\n\n .searchbar-bg {\n .hairline(bottom, @statusBarBorderColor);\n }\n }\n\n .searchbar-inner {\n justify-content: space-between;\n &__center {\n display: flex;\n align-items: center;\n width: 81%;\n }\n &__right {\n display: flex;\n align-items: center;\n }\n }\n\n .searchbar-expandable {\n transition-duration: 0s;\n }\n\n .buttons-row-replace {\n display: flex;\n flex-direction: column;\n align-items: center;\n // width: max-content;\n width: 100%;\n justify-content: center;\n a {\n font-size: 15px;\n height: auto;\n display: block;\n line-height: normal;\n\n &:before{\n display: none;\n }\n }\n }\n\n @media(max-width: 550px)\n {\n .searchbar-expandable.searchbar-enabled {\n .searchbar-inner {\n &__left {\n min-width: 22px;\n max-width: 22px;\n }\n &__center {\n flex-direction: column;\n }\n &__right {\n flex-direction: column-reverse;\n }\n }\n &.replace {\n top: 0;\n .searchbar-inner {\n height: 100%;\n &__left {\n align-self: flex-start;\n }\n }\n }\n } \n }\n}\n","\n// RTL, LTR\n.ltr(@ruleset) {\n & when not (@rtl) {\n @ruleset();\n }\n}\n.rtl(@ruleset) {\n & when (@rtl) {\n @ruleset();\n }\n}\n.if-ios-theme(@ruleset) {\n & when (@includeIosTheme) {\n @ruleset();\n }\n}\n.if-md-theme(@ruleset) {\n & when (@includeMdTheme) {\n @ruleset();\n }\n}\n.if-dark-theme(@ruleset) {\n & when(@includeDarkTheme) {\n @ruleset();\n }\n}\n.ios-vars(@ruleset) {\n & when (@includeIosTheme) {\n .ios {\n @ruleset();\n }\n }\n}\n.md-vars(@ruleset) {\n & when (@includeMdTheme) {\n .md {\n @ruleset();\n }\n }\n}\n.md-color-vars(@ruleset) {\n & when (@includeMdTheme) {\n .md,\n .md .dark,\n .md [class*='color-'] {\n @ruleset();\n }\n }\n}\n.dark-vars(@ruleset) {\n & when (@includeDarkTheme) {\n .dark,\n &.dark {\n @ruleset();\n }\n }\n}\n.light-vars(@ruleset) {\n & when (@includeLightTheme) {\n & {\n @ruleset();\n }\n }\n}\n// Scrollable\n.scrollable() {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n}\n.not-scrollable() {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\n// Disabled\n.disabled() {\n opacity: 0.55;\n pointer-events: none;\n}\n// Modal Backdrops\n.modal-backdrop() {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.4);\n z-index: 13000;\n visibility: hidden;\n opacity: 0;\n transition-duration: 400ms;\n &.not-animated {\n transition-duration: 0ms;\n }\n &.backdrop-in {\n visibility: visible;\n opacity: 1;\n }\n}\n\n// Hairlines\n.hairline-pseudo(@color, @top, @right, @bottom, @left) {\n content: '';\n position: absolute;\n background-color: @color;\n display: block;\n z-index: 15;\n top: @top;\n right: @right;\n bottom: @bottom;\n left: @left;\n}\n.hairline(@position, @color) when (@position = top) {\n &:before {\n .hairline-pseudo(@color, 0, auto, auto, 0);\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline(@position, @color) when (@position = left) {\n &:before {\n .hairline-pseudo(@color, 0, auto, auto, 0);\n width: 1px;\n height: 100%;\n transform-origin: 0% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline(@position, @color) when (@position = bottom) {\n &:after {\n .hairline-pseudo(@color, auto, auto, 0, 0);\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline(@position, @color) when (@position = right) {\n &:after {\n .hairline-pseudo(@color, 0, 0, auto, auto);\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline-remove-top-bottom() {\n &:before,\n &:after {\n display: none !important;\n }\n}\n// For right and bottom\n.hairline-remove(@position) when not (@position = left) and not (@position = top) {\n &:after {\n display: none !important;\n }\n}\n// For left and top\n.hairline-remove(@position) when not (@position = right) and not (@position = bottom) {\n &:before {\n display: none !important;\n }\n}\n// For right and bottom\n.hairline-color(@position, @color) when not (@position = left) and not (@position = top) {\n &:after {\n background-color: @color;\n }\n}\n// For left and top\n.hairline-color(@position, @color) when not (@position = right) and not (@position = bottom) {\n &:before {\n background-color: @color;\n }\n}\n// MD Active Active Links Highlights\n.link-highlight() {\n &:before {\n content: '';\n width: 152%;\n height: 152%;\n left: -26%;\n top: -26%;\n position: absolute;\n background-image: radial-gradient(\n circle at center,\n var(--f7-link-highlight-color) 66%,\n rgba(255, 255, 255, 0) 66%\n );\n background-repeat: no-repeat;\n background-position: center;\n background-size: 100% 100%;\n opacity: 0;\n pointer-events: none;\n transition-duration: 300ms;\n transition-property: opacity;\n }\n &.icon-only:before,\n &.ripple-inset:before,\n &.searchbar-disable-button:before,\n &.input-clear-button:before,\n &.notification-close-button:before {\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n background-image: radial-gradient(\n circle at center,\n var(--f7-link-highlight-color) 71%,\n rgba(255, 255, 255, 0) 71%\n );\n }\n &.active-state:before {\n opacity: 1;\n transition-duration: 150ms;\n }\n}\n// MD Bars Shadow\n\n.core-icons-font() {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n\n.ios-translucent-bars(@color) {\n .ios-translucent-bars & {\n @supports (backdrop-filter: blur(20px)) {\n background-color: rgba(@color, var(--f7-bars-translucent-opacity));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n }\n}\n.ios-translucent-modals(@color) {\n .ios-translucent-modals & {\n @supports (backdrop-filter: blur(20px)) {\n background-color: rgba(@color, 0.8);\n backdrop-filter: saturate(180%) blur(20px);\n }\n }\n}\n\n.no-scrollbar() {\n scrollbar-width: none;\n scrollbar-color: transparent;\n &::-webkit-scrollbar {\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n }\n &::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n }\n &::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n }\n}\n","\n.device-ios {\n .document-menu {\n @contextMenuBg: rgba(0, 0, 0, 0.9);\n @modalHairlineColor: rgba(230, 230, 230, 0.9);\n @modalButtonColor: rgba(200, 200, 200, 0.9);\n\n background-color: @contextMenuBg;\n border-radius: 8px;\n\n .popover-angle {\n &:after {\n background: @contextMenuBg;\n }\n }\n\n .list-block {\n font-size: 14px;\n white-space: pre;\n\n &:first-child {\n ul {\n .hairline-remove(left);\n //border-radius: 7px 0 0 7px;\n }\n\n li:first-child a {\n //border-radius: 7px 0 0 7px;\n border-radius: 0;\n }\n }\n\n //&:last-child {\n // ul {\n // .hairline-remove(right);\n // border-radius: 0 7px 7px 0;\n // }\n // li:last-child a{\n // border-radius: 0 7px 7px 0;\n // }\n //}\n\n //&:first-child:last-child {\n // li:first-child:last-child a, ul:first-child:last-child {\n // border-radius: 7px;\n // }\n //}\n\n .item-link {\n display: inline-block;\n\n html:not(.watch-active-state) &:active, &.active-state {\n //.transition(0ms);\n background-color: #d9d9d9;\n .item-inner {\n .hairline-color(right, transparent);\n }\n }\n\n html.phone & {\n padding: 0 10px;\n }\n }\n\n .list-button {\n color: @white;\n line-height: 36px;\n\n .hairline(right, @modalHairlineColor);\n }\n\n // List items\n li {\n display: inline-flex;\n }\n\n // Last-childs\n li {\n &:last-child {\n .list-button {\n .hairline-remove(right);\n }\n }\n\n &:last-child, &:last-child li:last-child {\n .item-inner {\n .hairline-remove(right);\n }\n }\n\n li:last-child, &:last-child li {\n .item-inner {\n .hairline(right, @modalHairlineColor);\n }\n }\n }\n\n //.no-hairlines();\n //.no-hairlines-between()\n }\n }\n}","\n.md {\n .document-menu {\n //line-height: 1 !important;\n\n .popover-inner {\n overflow: hidden;\n }\n\n .list-block {\n white-space: pre;\n\n ul {\n height: 48px;\n }\n\n li {\n display: inline-block;\n }\n\n .list-button {\n color: @text-normal;\n }\n\n //.item-link {\n // html.phone & {\n //padding: 0 10px;\n //}\n //}\n }\n }\n}\n","@import './ios/contextmenu';\n@import './material/contextmenu';\n\n\n.document-menu {\n width: auto;\n}\n\nhtml.phone .document-menu .list-block .list-button {\n padding: 0 10px;\n}",".device-ios {\n .wrap-comment {\n height: calc(100% - 60px);\n }\n .add-comment-popup, .add-reply-popup, .add-comment-dialog, .add-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 34px);\n }\n }\n .edit-comment-popup, .edit-reply-popup, .edit-comment-dialog, .edit-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 52px);\n }\n }\n .comment-list {\n .reply-item {\n .item-inner:after {\n content: none !important;\n }\n &:before {\n content: '';\n position: absolute;\n left: auto;\n bottom: 0;\n right: auto;\n top: 0;\n height: 1px;\n width: 100%;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n -webkit-transform-origin: 50% 100%;\n transform-origin: 50% 100%;\n }\n }\n }\n}",".device-android {\n .wrap-comment {\n height: calc(100% - 72px);\n }\n .add-comment-popup, .add-reply-popup, .add-comment-dialog, .add-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 41px);\n }\n }\n .edit-comment-popup, .edit-reply-popup, .edit-comment-dialog, .edit-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 56px);\n }\n }\n .wrap-comment, .comment-list, .reply-list {\n .comment-header, .reply-header {\n display: flex;\n .initials {\n border-radius: 50px;\n color: @fill-white;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: 10px;\n font-size: 14px;\n }\n }\n }\n\n .wrap-comment {\n .comment-header {\n align-items: center;\n .initials {\n height: 30px;\n width: 30px;\n }\n }\n .wrap-textarea {\n .input:not(.input-outline):after {\n content: none;\n }\n }\n }\n\n #add-comment-dialog, #edit-comment-dialog, #add-reply-dialog, #edit-reply-dialog {\n .dialog {\n --f7-dialog-text-color: @black;\n .done {\n padding-right: 6px;\n }\n }\n }\n\n .comment-list {\n ul:after, .item-inner:after, li:last-child li .item-inner:after {\n content: none;\n }\n .comment-header {\n .left {\n display: flex;\n align-items: center;\n .initials {\n width: 40px;\n height: 40px;\n font-size: 18px;\n }\n }\n }\n }\n .reply-list {\n .reply-header {\n .left {\n display: flex;\n .initials {\n margin-top: 5px;\n width: 24px;\n height: 24px;\n font-size: 11px;\n }\n }\n }\n }\n\n .edit-comment-popup, .edit-reply-popup, #edit-comment-dialog, #edit-reply-dialog {\n .wrap-comment {\n .comment-header, .reply-header {\n .initials {\n height: 40px;\n width: 40px;\n }\n }\n }\n }\n\n #view-comment-popover {\n .toolbar-bottom:after {\n content: none;\n }\n }\n\n}","@comment-date: #6d6d72;\n@swipe-icon: #E5E5E5;\n\n@import './ios/comments';\n@import './material/comments';\n\n.wrap-comment {\n padding: 16px 24px 0 16px;\n background-color: @background-tertiary;\n \n .comment-date {\n color: @text-secondary;\n }\n .wrap-textarea {\n margin-top: 6px;\n }\n .name {\n font-weight: 600;\n font-size: 16px;\n color: @text-normal;\n }\n .reply-date {\n color: @text-secondary;\n }\n}\n\n.wrap-textarea {\n .input {\n height: 100%;\n }\n\n textarea {\n font-size: 14px;\n margin-top: 0;\n height: 100%;\n padding: 5px 0;\n color: @text-normal;\n }\n}\n\n#add-comment-dialog, #edit-comment-dialog, #add-reply-dialog, #edit-reply-dialog {\n .dialog {\n --f7-dialog-width: 400px;\n z-index: 13700;\n .dialog-inner {\n padding: 0;\n height: 400px;\n .wrap-comment {\n .name, .comment-date, .reply-date {\n text-align: left;\n }\n .wrap-textarea {\n textarea {\n color: @text-normal;\n width: 100%;\n }\n }\n }\n }\n }\n}\n\n.comment-list {\n .item-content .item-inner {\n padding-right: 0;\n padding-bottom: 0;\n padding-top: 16px;\n .comment-header {\n display: flex;\n justify-content: space-between;\n padding-right: 16px;\n .right {\n display: flex;\n justify-content: flex-end;\n width: 70px;\n .comment-resolve {\n margin-right: 10px;\n }\n }\n }\n .reply-header {\n display: flex;\n justify-content: space-between;\n padding-right: 16px;\n }\n }\n .item-title {\n width: 100%;\n }\n .user-name {\n font-size: 16px;\n line-height: 22px;\n color: @text-normal;\n margin: 0;\n font-weight: 700;\n }\n .comment-date, .reply-date {\n font-size: 12px;\n line-height: 18px;\n color: @text-secondary;\n margin: 0;\n }\n .comment-quote {\n color: @text-secondary;\n border-left: 1px solid @text-secondary;\n padding-left: 10px;\n padding-right: 16px;\n margin: 5px 0;\n font-size: 14px;\n }\n .comment-text, .reply-text {\n color: @text-normal;\n font-size: 14px;\n line-height: 25px;\n margin: 0;\n max-width: 100%;\n padding-right: 15px;\n word-break: break-all;\n pre {\n white-space: pre-wrap;\n overflow-wrap: break-word;\n }\n }\n .reply-list {\n padding-left: 26px;\n }\n .reply-item {\n padding-right: 26px;\n }\n}\n\n.edit-comment-popup, .add-reply-popup, .edit-reply-popup {\n z-index: 20000;\n}\n\n#view-comment-sheet {\n background-color: @fill-white;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n height: 45%;\n box-shadow: 0 1px 10px rgba(0, 0, 0, 0.2), 0 4px 5px rgba(0, 0, 0, 0.12);\n webkit-transition: height 200ms;\n transition: height 200ms;\n .top {\n height: 90%;\n }\n .swipe-container {\n display: flex;\n justify-content: center;\n height: 40px;\n background-color: @background-primary;\n .icon-swipe {\n margin-top: 8px;\n width: 40px;\n height: 4px;\n background: @background-menu-divider;\n border-radius: 2px;\n }\n }\n}\n\n#view-comment-popover, #view-comment-sheet {\n .toolbar {\n position: fixed;\n background-color: @background-primary;\n box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.2), 0px 4px 5px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14);\n .link {\n --f7-toolbar-link-color: @brandColor;\n }\n .toolbar-inner {\n padding: 0 16px;\n }\n .btn-add-reply {\n padding: 0;\n min-width: 80px;\n font-size: 16px;\n }\n .comment-navigation {\n min-width: 62px;\n display: flex;\n justify-content: space-between;\n .link {\n padding: 0 12px;\n }\n }\n }\n}\n\n#view-comment-popover {\n background-color: @background-primary;\n .pages {\n position: absolute;\n }\n .page {\n border-radius: var(--f7-popover-border-radius);\n .page-content {\n padding: 16px 16px 60px 0;\n border-radius: var(--f7-popover-border-radius);\n }\n }\n .comment-list {\n .item-content {\n .item-inner {\n .comment-header, .reply-header {\n padding-right: 0;\n }\n }\n }\n }\n .toolbar {\n position: absolute;\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n }\n}\n\n.page-current-comment {\n position: relative;\n .page-content {\n background-color: @background-primary;\n }\n .comment-list {\n ul {\n &:before, &:after {\n content: none;\n }\n .item-content .item-inner {\n padding-top: 0;\n .reply-list .item-content .item-inner {\n padding-top: 13px;\n }\n }\n }\n }\n}\n\n.dialog.modal-in {\n z-index: 14000;\n max-height: 100%;\n overflow: auto;\n\n .item-content .item-input-wrap::after {\n background-color: @brandColor;\n }\n}\n\n.dialog-backdrop.backdrop-in {\n z-index: 13600;\n}\n\n.no-comments {\n text-align: center;\n margin-top: 35px;\n color: @text-normal;\n}\n\n.actions-modal.modal-in {\n z-index: 13700;\n .actions-group::after {\n background-color: @background-menu-divider;\n }\n}\n\n.actions-backdrop.backdrop-in {\n z-index: 13600;\n}","\n// Colors\n@themeColorLight: #a2bdde;\n@navBarIconColor: #fff;\n\n\n.device-android {\n --f7-navbar-bg-color: @brandColor;\n --f7-navbar-link-color: @text-link;\n --f7-navbar-text-color: @text-normal;\n\n // Main Toolbar\n #editor-navbar.navbar .right {\n padding-right: 4px;\n }\n #editor-navbar.navbar .right a.link,\n #editor-navbar.navbar .left a.link {\n padding: 0 13px;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n width: auto;\n }\n}\n",".device-ios {\n .view {\n .page-content{\n background: @background-tertiary;\n }\n }\n}\n\n","// Icons\n.device-ios {\n i.icon {\n &.icon-burger {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-edit-settings {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-play {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-undo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-redo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-reader {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-download {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-print {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-spellcheck {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-plus {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-feedback {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-setup {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-versions {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-additional {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-color {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-selection {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-bullets {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-numbers {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-linespacing {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-align-center {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-align-just {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-align-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-align-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-de-indent {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-in-indent {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-add-column-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-add-column-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-add-row-above {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-add-row-below {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-remove-column {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-remove-row {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-expand-down {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-pagebreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-sectionbreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-stringbreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-pagenumber {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-link {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-image-library {\n width: 22px;\n height: 22px;\n .encoded-svg-background('icons_for_svg');\n }\n\n &.icon-text-valign-top {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-valign-middle {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-valign-bottom {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n // Presets of table borders\n\n &.icon-table-borders-all {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-none {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-inner {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-outer {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-left {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-center {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-right {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-top {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-middle {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-bottom {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n // Reorder\n\n &.icon-move-backward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-move-forward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-move-background {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-move-foreground {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-center {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-top {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-middle {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-bottom {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-horizontal {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-vertical {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n // Collaboration\n\n &.icon-users {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-app-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n //comments\n &.icon-menu-comment {\n width: 30px;\n height: 30px;\n .encoded-svg-mask('', @text-tertiary);\n }\n\n &.icon-resolve-comment {\n width: 30px;\n height: 30px;\n .encoded-svg-mask('');\n }\n\n &.icon-resolve-comment.check {\n width: 30px;\n height: 30px;\n .encoded-svg-background('');\n }\n\n &.icon-insert-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n //Insert\n &.icon-add-slide {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-add-shape {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-add-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-add-other {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-add-table {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n }\n\n .tab-link-active {\n i.icon {\n &.icon-add-slide {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @fill-white);\n }\n\n &.icon-add-shape {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @fill-white);\n }\n\n &.icon-add-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @fill-white);\n }\n\n &.icon-add-other {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @fill-white);\n }\n }\n }\n}","// Icons\n.device-android {\n i.icon {\n &.icon-expand-up {\n width: 17px;\n height: 17px;\n .encoded-svg-mask('');\n }\n\n &.icon-expand-down {\n width: 17px;\n height: 17px;\n .encoded-svg-mask('');\n }\n\n &.icon-edit {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-edit-settings {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-play {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-reader {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-download {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-print {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-spellcheck {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-feedback {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-setup {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-versions {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n //&.icon-text-additional {\n // width: 22px;\n // height: 22px;\n // .encoded-svg-mask('');\n //}\n //&.icon-text-color {\n // width: 22px;\n // height: 22px;\n // .encoded-svg-mask('');\n //}\n //&.icon-text-selection {\n // width: 22px;\n // height: 22px;\n // .encoded-svg-mask('');\n //}\n //&.icon-bullets {\n // width: 22px;\n // height: 22px;\n // .encoded-svg-mask('');\n //}\n //&.icon-numbers {\n // width: 22px;\n // height: 22px;\n // .encoded-svg-mask('');\n //}\n //&.icon-linespacing {\n // width: 22px;\n // height: 22px;\n // .encoded-svg-mask('');\n //}\n &.icon-text-align-center {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-align-just {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-align-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-align-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-de-indent {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-in-indent {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-add-column-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-add-column-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-add-row-above {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-add-row-below {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-remove-column {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-remove-row {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-pagebreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-sectionbreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-stringbreak {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-pagenumber {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-image-library {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-valign-top {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-valign-middle {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-text-valign-bottom {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n // Presets of table borders\n\n &.icon-table-borders-all {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-none {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-inner {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-outer {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-left {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-center {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-right {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-top {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-middle {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-table-borders-bottom {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n // Reorder\n\n &.icon-move-backward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-move-forward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-move-background {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-move-foreground {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-center {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-top {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-middle {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-bottom {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-horizontal {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-align-vertical {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n // Collaboration\n \n &.icon-users {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-app-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n //Comments\n &.icon-menu-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-tertiary);\n }\n\n &.icon-resolve-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-resolve-comment.check {\n width: 24px;\n height: 24px;\n .encoded-svg-background('');\n }\n\n &.icon-done-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-insert-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-done-comment-white {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @fill-white);\n }\n\n &.icon-add-table {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-link {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-plus {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @fill-white);\n }\n }\n\n // Overwrite color for toolbar\n .navbar {\n i.icon {\n &.icon-logo {\n width: 100px;\n height: 14px;\n //background: url('../../../../common/mobile/resources/img/header/logo-android.svg') no-repeat center;\n }\n\n &.icon-undo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-redo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-burger {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-plus {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-play {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-settings {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-prev {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-next {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-expand-down {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @fill-white);\n }\n\n &.icon-add-slide {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-add-shape {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-add-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-add-other {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n\n &.icon-close-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n }\n }\n}","i.icon {\n &.icon-format-pptx {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n\n &.icon-format-potx {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n\n &.icon-format-odp {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n\n &.icon-format-otp {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/apps/presentationeditor/mobile/css/framework7-rtl.css b/apps/presentationeditor/mobile/css/framework7-rtl.css new file mode 100644 index 0000000000..7035f22221 --- /dev/null +++ b/apps/presentationeditor/mobile/css/framework7-rtl.css @@ -0,0 +1,3 @@ +:root{--f7-safe-area-left:0px;--f7-safe-area-right:0px;--f7-safe-area-top:0px;--f7-safe-area-bottom:0px;--f7-safe-area-outer-left:0px;--f7-safe-area-outer-right:0px;--f7-device-pixel-ratio:1}@supports (left:env(safe-area-inset-left)){:root{--f7-safe-area-top:env(safe-area-inset-top);--f7-safe-area-bottom:env(safe-area-inset-bottom)}:root .ios-edges,:root .ios-left-edge,:root .panel-left,:root .popup,:root .safe-area-left,:root .safe-areas,:root .sheet-modal{--f7-safe-area-left:env(safe-area-inset-left);--f7-safe-area-outer-left:env(safe-area-inset-left)}:root .ios-edges,:root .ios-right-edge,:root .panel-right,:root .popup,:root .safe-area-right,:root .safe-areas,:root .sheet-modal{--f7-safe-area-right:env(safe-area-inset-right);--f7-safe-area-outer-right:env(safe-area-inset-right)}:root .no-ios-edges,:root .no-ios-left-edge,:root .no-safe-area-left,:root .no-safe-areas{--f7-safe-area-left:0px;--f7-safe-area-outer-left:0px}:root .no-ios-edges,:root .no-ios-right-edge,:root .no-safe-area-right,:root .no-safe-areas{--f7-safe-area-right:0px;--f7-safe-area-outer-right:0px}}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){:root{--f7-device-pixel-ratio:2}}@media (-webkit-min-device-pixel-ratio:3),(min-resolution:3dppx){:root{--f7-device-pixel-ratio:3}}:root{--f7-font-size:14px;--f7-bars-translucent-opacity:0.8;--f7-bars-translucent-blur:20px}.ios{--f7-font-family:-apple-system,SF Pro Text,SF UI Text,system-ui,Helvetica Neue,Helvetica,Arial,sans-serif;--f7-line-height:1.4;--f7-bars-text-color:#000;--f7-text-color:#000;--f7-bars-bg-color:#f7f7f8;--f7-bars-bg-color-rgb:247,247,248;--f7-bars-border-color:rgba(0,0,0,0.25)}.ios .dark,.ios.dark{--f7-bars-text-color:#fff;--f7-text-color:#fff;--f7-bars-bg-color:#121212;--f7-bars-bg-color-rgb:22,22,22;--f7-bars-border-color:rgba(255,255,255,0.16)}.md{--f7-font-family:Roboto,system-ui,Noto,Helvetica,Arial,sans-serif;--f7-line-height:1.5;--f7-bars-border-color:transparent;--f7-text-color:#212121}.md .dark,.md.dark{--f7-text-color:rgba(255,255,255,0.87)}.md,.md .dark,.md [class*=color-]{--f7-bars-link-color:var(--f7-md-on-surface);--f7-bars-bg-color:var(--f7-md-surface-2);--f7-bars-bg-color-rgb:var(--f7-md-surface-2-rgb)}.text-color-primary{--f7-theme-color-text-color:var(--f7-theme-color)}.bg-color-primary{--f7-theme-color-bg-color:var(--f7-theme-color)}.border-color-primary{--f7-theme-color-border-color:var(--f7-theme-color)}.ripple-color-primary{--f7-theme-color-ripple-color:rgba(var(--f7-theme-color-rgb),0.3)}@font-face{font-family:framework7-core-icons;font-style:normal;font-weight:400;src:url("data:application/font-woff;charset=utf-8;base64, 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") format("woff")}html{direction:rtl;overscroll-behavior:none}.framework7-root,body,html{height:100%;overflow-x:hidden;position:relative;width:100%}body{-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;background:#fff;color:var(--f7-text-color);font-family:var(--f7-font-family);font-size:var(--f7-font-size);line-height:var(--f7-line-height);margin:0;overflow:hidden;overflow-y:scroll;padding:0;scrollbar-color:transparent;scrollbar-width:none;width:100%}body::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}body::-webkit-scrollbar-track{background:transparent;box-shadow:none}body::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.dark body,body.dark{background:#000}.dark{color:var(--f7-text-color)}.framework7-root{box-sizing:border-box;overflow:hidden}.framework7-initializing *,.framework7-initializing :after,.framework7-initializing :before{transition-duration:0ms!important}.device-android,.device-ios{cursor:pointer}.device-ios{touch-action:manipulation}@media (width:1024px) and (height:691px) and (orientation:landscape){.framework7-root,body,html{height:671px}}@media (width:1024px) and (height:692px) and (orientation:landscape){.framework7-root,body,html{height:672px}}*{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:none}a,input,select,textarea{outline:0}a{color:var(--f7-theme-color);text-decoration:none}.item-link,.link,a{cursor:pointer}p{margin:1em 0}.disabled{opacity:.55!important;pointer-events:none!important}html.device-full-viewport,html.device-full-viewport body{height:100vh}.ios .if-md,.ios .if-not-ios,.ios .md-only,.ios .not-ios{display:none!important}@media (width:1024px) and (height:691px) and (orientation:landscape){.ios,.ios .framework7-root,.ios body{height:671px}}@media (width:1024px) and (height:692px) and (orientation:landscape){.ios,.ios .framework7-root,.ios body{height:672px}}.md .if-ios,.md .if-not-md,.md .ios-only,.md .not-md{display:none!important}.view,.views{box-sizing:border-box;height:100%;overflow:hidden;position:relative;z-index:5000}.framework7-root>.view,.framework7-root>.views{height:100%}.view-resize-handler{cursor:col-resize;display:none;height:100%;left:var(--f7-page-master-width);margin-left:-3px;position:absolute;top:0;width:6px;z-index:1000}.view-master-detail .view-resize-handler{display:block}:root{--f7-page-master-width:320px;--f7-page-master-border-color:rgba(0,0,0,0.1);--f7-page-master-border-width:1px;--f7-page-swipeback-transition-duration:300ms;--f7-page-parallax-transition-duration:500ms;--f7-page-cover-transition-duration:450ms;--f7-page-dive-transition-duration:500ms;--f7-page-fade-transition-duration:500ms;--f7-page-flip-transition-duration:700ms;--f7-page-push-transition-duration:500ms;--f7-page-title-line-height:1.2;--f7-page-title-text-color:inherit;--f7-page-title-padding-left:16px;--f7-page-title-padding-right:16px}.ios{--f7-page-transition-duration:400ms;--f7-page-title-font-size:34px;--f7-page-title-font-weight:700;--f7-page-title-letter-spacing:-0.03em;--f7-page-title-padding-vertical:6px;--f7-page-bg-color:#efeff4}.ios .dark,.ios.dark{--f7-page-bg-color:#000}.md{--f7-page-transition-duration:400ms;--f7-page-title-font-size:34px;--f7-page-title-font-weight:500;--f7-page-title-letter-spacing:0;--f7-page-title-padding-vertical:8px}.md,.md .dark,.md [class*=color-]{--f7-page-bg-color:var(--f7-md-surface)}.dark{--f7-page-master-border-color:rgba(255,255,255,0.2)}.pages{overflow:hidden;position:relative}.page,.pages{height:100%;width:100%}.page{background-color:var(--f7-page-bg-color);box-sizing:border-box;left:0;position:absolute;top:0;transform:none;z-index:1}.page-with-navbar-large-collapsed{--f7-navbar-large-collapse-progress:1}.page-previous{pointer-events:none}.page-content{-webkit-overflow-scrolling:touch;box-sizing:border-box;height:100%;overflow:auto;padding-bottom:calc(var(--f7-page-toolbar-bottom-offset, 0px) + var(--f7-safe-area-bottom) + var(--f7-page-content-extra-padding-bottom, 0px));padding-top:calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-toolbar-top-offset, 0px) + var(--f7-page-subnavbar-offset, 0px) + var(--f7-page-searchbar-offset, 0px) + var(--f7-page-content-extra-padding-top, 0px));position:relative;z-index:1}.page-transitioning,.page-transitioning .page-opacity-effect,.page-transitioning .page-shadow-effect{transition-duration:var(--f7-page-transition-duration)}.page-transitioning-swipeback,.page-transitioning-swipeback .page-opacity-effect,.page-transitioning-swipeback .page-shadow-effect{transition-duration:var(--f7-page-swipeback-transition-duration)}.router-transition-backward .page-current,.router-transition-backward .page-next,.router-transition-forward .page-current,.router-transition-forward .page-next{pointer-events:none}.page-shadow-effect{background:linear-gradient(270deg,rgba(0,0,0,0) 0,rgba(0,0,0,0) 10%,rgba(0,0,0,.01) 50%,rgba(0,0,0,.2));left:100%;width:16px;z-index:-1}.page-opacity-effect,.page-shadow-effect{bottom:0;content:"";opacity:0;position:absolute;top:0}.page-opacity-effect{background:rgba(0,0,0,.1);left:0;width:100%;z-index:10000}.ios .page-previous{transform:translate3d(20%,0,0)}.ios .page-next{transform:translate3d(-100%,0,0)}.ios .page-current .page-shadow-effect,.ios .page-previous .page-opacity-effect,.ios .page-previous:after{opacity:1}.ios .router-transition-forward .page-next{animation:ios-page-next-to-current var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .page-next:before{animation:ios-page-element-fade-in var(--f7-page-transition-duration) forwards;background:linear-gradient(270deg,rgba(0,0,0,0) 0,rgba(0,0,0,0) 10%,rgba(0,0,0,.01) 50%,rgba(0,0,0,.2));bottom:0;content:"";left:100%;opacity:0;position:absolute;top:0;width:16px;z-index:-1}.ios .router-transition-forward .page-current{animation:ios-page-current-to-previous var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .page-current:after{animation:ios-page-element-fade-in var(--f7-page-transition-duration) forwards;background:rgba(0,0,0,.1);bottom:0;content:"";left:0;opacity:0;position:absolute;top:0;width:100%;z-index:10000}.ios .router-transition-backward .page-previous{animation:ios-page-previous-to-current var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .page-previous:after{animation:ios-page-element-fade-out var(--f7-page-transition-duration) forwards;background:rgba(0,0,0,.1);bottom:0;content:"";left:0;opacity:0;position:absolute;top:0;width:100%;z-index:10000}.ios .router-transition-backward .page-current{animation:ios-page-current-to-next var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .page-current:before{animation:ios-page-element-fade-out var(--f7-page-transition-duration) forwards;background:linear-gradient(270deg,rgba(0,0,0,0) 0,rgba(0,0,0,0) 10%,rgba(0,0,0,.01) 50%,rgba(0,0,0,.2));bottom:0;content:"";left:100%;opacity:0;position:absolute;top:0;width:16px;z-index:-1}@keyframes ios-page-next-to-current{0%{transform:translate3d(-100%,0,0)}to{transform:translateZ(0)}}@keyframes ios-page-previous-to-current{0%{transform:translate3d(20%,0,0)}to{transform:translateZ(0)}}@keyframes ios-page-current-to-previous{0%{transform:translateZ(0)}to{transform:translate3d(20%,0,0)}}@keyframes ios-page-current-to-next{0%{transform:translateZ(0)}to{transform:translate3d(-100%,0,0)}}@keyframes ios-page-element-fade-in{0%{opacity:0}to{opacity:1}}@keyframes ios-page-element-fade-out{0%{opacity:1}to{opacity:0}}.md .page-previous{transform:translate3d(0,-20px,0)}.md .page-next{opacity:0;pointer-events:none;transform:translate3d(0,128px,0)}.md .page-next.page-next-on-right{opacity:1;transform:translate3d(-100%,0,0)}.md .router-transition-forward .page-next{animation:md-page-next-to-current var(--f7-page-transition-duration) forwards cubic-bezier(0,.8,.3,1);opacity:1}.md .router-transition-forward .page-current{animation:md-page-current-to-previous var(--f7-page-transition-duration) forwards cubic-bezier(0,.8,.3,1)}.md .router-transition-backward .page-current{animation:md-page-current-to-next calc(var(--f7-page-transition-duration)/4) forwards cubic-bezier(.8,0,1,.3),md-page-current-to-next-opacity 0ms calc(var(--f7-page-transition-duration)/4) forwards}.md .router-transition-backward .page-previous{animation:md-page-previous-to-current var(--f7-page-transition-duration) forwards}@keyframes md-page-next-to-current{0%{transform:translate3d(0,128px,0)}to{transform:translateZ(0)}}@keyframes md-page-current-to-next{0%{transform:translateZ(0)}to{transform:translate3d(0,128px,0)}}@keyframes md-page-current-to-next-opacity{0%{opacity:1}to{opacity:0}}@keyframes md-page-current-to-previous{0%{transform:translateZ(0)}to{transform:translate3d(0,-20px,0)}}@keyframes md-page-previous-to-current{0%{transform:translate3d(0,-20px,0)}to{transform:translateZ(0)}}.view:not(.view-master-detail) .navbar-master-stacked,.view:not(.view-master-detail) .page-master-stacked{display:none}.view-master-detail .navbar-master,.view-master-detail .page-master{--f7-safe-area-left:0px;--f7-safe-area-outer-left:0px;border-left:var(--f7-page-master-border-width) solid var(--f7-page-master-border-color);left:auto;right:0;width:var(--f7-page-master-width)}.view-master-detail .navbar-master-detail,.view-master-detail .page-master-detail{--f7-safe-area-right:0px;--f7-safe-area-outer-right:0px;right:var(--f7-page-master-width);width:calc(100% - var(--f7-page-master-width))}.view-master-detail .page-master-detail>.navbar-master-detail{left:0;right:0;width:100%}.view-master-detail .page-master{pointer-events:auto;transform:none;z-index:2}.view-master-detail .page-master:after,.view-master-detail .page-master:before{display:none}.view-master-detail.router-transition .page-master{animation:none}.ios .router-transition-custom .page-next,.ios .router-transition-custom .page-previous,.md .router-transition-custom .page-next,.md .router-transition-custom .page-previous{opacity:1;transform:none}.ios .router-transition-custom.view-master-detail .page-master,.md .router-transition-custom.view-master-detail .page-master{animation:none}.page-title{box-sizing:border-box;color:var(--f7-page-title-text-color);font-size:var(--f7-page-title-font-size);font-weight:var(--f7-page-title-font-weight);letter-spacing:var(--f7-page-title-letter-spacing);line-height:var(--f7-page-title-line-height);overflow:hidden;padding:var(--f7-page-title-padding-vertical) calc(var(--f7-page-title-padding-right) + var(--f7-safe-area-right)) var(--f7-page-title-padding-vertical) calc(var(--f7-page-title-padding-left) + var(--f7-safe-area-left));position:relative;text-overflow:ellipsis;white-space:nowrap;width:100%;z-index:10}.router-transition-f7-circle-backward:after,.router-transition-f7-circle-forward:after{background:var(--f7-page-bg-color);content:"";height:100vmax;left:50%;margin-left:-50vmax;margin-top:-50vmax;position:absolute;top:50%;width:100vmax;z-index:100}.router-transition-f7-circle-backward .page,.router-transition-f7-circle-forward .page{pointer-events:none}.router-transition-f7-circle-forward:after{animation:f7-circle-circle-in .4s forwards;border-radius:50%;transform:scale(0)}.ios .router-transition-f7-circle-forward .page-next,.md .router-transition-f7-circle-forward .page-next{animation:f7-circle-next-to-current .3s forwards;animation-delay:.3s;opacity:0;transform:scale(.9);z-index:150}.router-transition-f7-circle-backward:after{animation:f7-circle-circle-out .3s forwards;animation-delay:.35s}.ios .router-transition-f7-circle-backward .page-current,.md .router-transition-f7-circle-backward .page-current{animation:f7-circle-current-to-next .7s forwards;z-index:150}@keyframes f7-circle-circle-in{0%{border-radius:50%;transform:scale(0)}50%{border-radius:50%}to{border-radius:0;transform:scale(1)}}@keyframes f7-circle-circle-out{0%{border-radius:0;transform:scale(1)}50%{border-radius:50%}to{border-radius:50%;transform:scale(0)}}@keyframes f7-circle-next-to-current{0%{opacity:0;transform:scale(.9)}40%{opacity:1;transform:scale(1.035)}to{opacity:1;transform:scale(1)}}@keyframes f7-circle-current-to-next{0%{opacity:1;transform:scale(1)}34%{opacity:1;transform:scale(1.035)}57%{opacity:0;transform:scale(.9)}to{opacity:0;transform:scale(.9)}}.router-transition-f7-cover-v-backward,.router-transition-f7-cover-v-forward{background:#000;perspective:1200px}.router-transition-f7-cover-v-backward .page,.router-transition-f7-cover-v-forward .page{pointer-events:none}.router-transition-f7-cover-v-forward .page-next{animation:f7-cover-v-next-to-current var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-v-forward .page-current{animation:f7-cover-v-current-to-prev var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-v-backward .page-current{animation:f7-cover-v-current-to-next var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-v-backward .page-previous{animation:f7-cover-v-prev-to-current var(--f7-page-cover-transition-duration) forwards}@keyframes f7-cover-v-next-to-current{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes f7-cover-v-current-to-next{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes f7-cover-v-current-to-prev{0%{opacity:1;transform:translateZ(0)}to{opacity:.5;transform:translateZ(-300px)}}@keyframes f7-cover-v-prev-to-current{0%{opacity:.5;transform:translateZ(-300px)}to{opacity:1;transform:translateZ(0)}}.router-transition-f7-cover-backward,.router-transition-f7-cover-forward{background:#000;perspective:1200px}.router-transition-f7-cover-backward .page,.router-transition-f7-cover-forward .page{pointer-events:none}.router-transition-f7-cover-forward .page-next{animation:f7-cover-next-to-current var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-forward .page-current{animation:f7-cover-current-to-prev var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-backward .page-current{animation:f7-cover-current-to-next var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-backward .page-previous{animation:f7-cover-prev-to-current var(--f7-page-cover-transition-duration) forwards}@keyframes f7-cover-next-to-current{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes f7-cover-current-to-next{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes f7-cover-current-to-prev{0%{opacity:1;transform:translateZ(0)}to{opacity:.5;transform:translateZ(-300px)}}@keyframes f7-cover-prev-to-current{0%{opacity:.5;transform:translateZ(-300px)}to{opacity:1;transform:translateZ(0)}}.router-transition-f7-dive-backward,.router-transition-f7-dive-forward{background:var(--f7-page-bg-color);perspective:1200px}.router-transition-f7-dive-backward .page,.router-transition-f7-dive-forward .page{pointer-events:none}.router-transition-f7-dive-forward .page-next{animation:f7-dive-next-to-current var(--f7-page-dive-transition-duration) forwards}.router-transition-f7-dive-forward .page-current{animation:f7-dive-current-to-prev var(--f7-page-dive-transition-duration) forwards}.router-transition-f7-dive-backward .page-current{animation:f7-dive-current-to-next var(--f7-page-dive-transition-duration) forwards}.router-transition-f7-dive-backward .page-previous{animation:f7-dive-prev-to-current var(--f7-page-dive-transition-duration) forwards}@keyframes f7-dive-next-to-current{0%{opacity:0;transform:translateZ(-150px)}50%{opacity:0}to{opacity:1;transform:translateZ(0)}}@keyframes f7-dive-current-to-next{0%{opacity:1;transform:translateZ(0)}50%{opacity:0}to{opacity:0;transform:translateZ(-150px)}}@keyframes f7-dive-current-to-prev{0%{opacity:1;transform:translateZ(0)}50%{opacity:0}to{opacity:0;transform:translateZ(150px)}}@keyframes f7-dive-prev-to-current{0%{opacity:0;transform:translateZ(150px)}50%{opacity:0}to{opacity:1;transform:translateZ(0)}}.router-transition-f7-fade-backward,.router-transition-f7-fade-forward{background:var(--f7-page-bg-color)}.router-transition-f7-fade-backward .page,.router-transition-f7-fade-forward .page{pointer-events:none}.ios .router-transition-f7-fade-forward .page-next,.md .router-transition-f7-fade-forward .page-next{animation:f7-fade-in var(--f7-page-fade-transition-duration) forwards;opacity:0}.ios .router-transition-f7-fade-backward .page-current,.ios .router-transition-f7-fade-forward .page-current,.md .router-transition-f7-fade-backward .page-current,.md .router-transition-f7-fade-forward .page-current{animation:f7-fade-out var(--f7-page-fade-transition-duration) forwards}.ios .router-transition-f7-fade-backward .page-previous,.md .router-transition-f7-fade-backward .page-previous{animation:f7-fade-in var(--f7-page-fade-transition-duration) forwards}@keyframes f7-fade-in{0%{opacity:0}50%{opacity:0}to{opacity:1}}@keyframes f7-fade-out{0%{opacity:1}50%{opacity:0}to{opacity:0}}.router-transition-f7-flip-backward,.router-transition-f7-flip-forward{background:#000;perspective:1200px}.router-transition-f7-flip-backward .page,.router-transition-f7-flip-forward .page{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;pointer-events:none}.router-transition-f7-flip-forward .page-next{animation:f7-flip-next-to-current var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}.router-transition-f7-flip-forward .page-current{animation:f7-flip-current-to-prev var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}.router-transition-f7-flip-backward .page-current{animation:f7-flip-current-to-next var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}.router-transition-f7-flip-backward .page-previous{animation:f7-flip-prev-to-current var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}@keyframes f7-flip-next-to-current{0%{border-radius:32px;transform:translateZ(-100vmax) rotateY(-180deg)}to{border-radius:0;transform:translateZ(0) rotateY(0deg)}}@keyframes f7-flip-current-to-next{0%{border-radius:0;transform:translateZ(0) rotateY(0deg)}to{border-radius:32px;transform:translateZ(-100vmax) rotateY(-180deg)}}@keyframes f7-flip-current-to-prev{0%{border-radius:0;transform:translateZ(0) rotateY(0deg)}to{border-radius:32px;transform:translateZ(-100vmax) rotateY(180deg)}}@keyframes f7-flip-prev-to-current{0%{border-radius:32px;transform:translateZ(-100vmax) rotateY(180deg)}to{border-radius:0;transform:translateZ(0) rotateY(0deg)}}.router-transition-f7-parallax-forward .page{pointer-events:none}.router-transition-f7-parallax-forward .page-next{animation:f7-parallax-next-to-current var(--f7-page-parallax-transition-duration) forwards}.router-transition-f7-parallax-forward .page-current{animation:f7-parallax-current-to-prev var(--f7-page-parallax-transition-duration) forwards}.router-transition-f7-parallax-backward .page{pointer-events:none}.router-transition-f7-parallax-backward .page-current{animation:f7-parallax-current-to-next var(--f7-page-parallax-transition-duration) forwards}.router-transition-f7-parallax-backward .page-previous{animation:f7-parallax-prev-to-current var(--f7-page-parallax-transition-duration) forwards}@keyframes f7-parallax-next-to-current{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes f7-parallax-current-to-next{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes f7-parallax-current-to-prev{0%{transform:translateX(0)}to{transform:translateX(20%)}}@keyframes f7-parallax-prev-to-current{0%{transform:translateX(20%)}to{transform:translateX(0)}}.router-transition-f7-push-forward .page{pointer-events:none}.router-transition-f7-push-forward .page-next{animation:f7-push-next-to-current var(--f7-page-push-transition-duration) forwards}.router-transition-f7-push-forward .page-current{animation:f7-push-current-to-prev var(--f7-page-push-transition-duration) forwards}.router-transition-f7-push-backward .page{pointer-events:none}.router-transition-f7-push-backward .page-current{animation:f7-push-current-to-next var(--f7-page-push-transition-duration) forwards}.router-transition-f7-push-backward .page-previous{animation:f7-push-prev-to-current var(--f7-page-push-transition-duration) forwards}@keyframes f7-push-next-to-current{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes f7-push-current-to-next{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes f7-push-current-to-prev{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes f7-push-prev-to-current{0%{transform:translateX(100%)}to{transform:translateX(0)}}:root{--f7-link-highlight-black:rgba(0,0,0,0.1);--f7-link-highlight-white:rgba(255,255,255,0.15);--f7-link-highlight-color:rgba(var(--f7-theme-color-rgb),0.15)}.ios{--f7-link-pressed-opacity:0.3}.link,.tab-link{--f7-touch-ripple-color:var(--f7-link-touch-ripple-color,rgba(var(--f7-theme-color-rgb),0.25));align-content:center;align-items:center;box-sizing:border-box;display:inline-flex;justify-content:center;position:relative;z-index:1}.link i+i,.link i+span,.link span+i,.link span+span{margin-right:4px}.link[class*=color-]{color:var(--f7-theme-color)}.ios .link{transition:opacity .3s}.ios .link.active-state{opacity:var(--f7-link-pressed-opacity);transition-duration:0ms}:root{--f7-navbar-hide-show-transition-duration:400ms;--f7-navbar-title-line-height:1.2;--f7-navbar-subtitle-text-align:inherit;--f7-navbar-large-title-line-height:1.2;--f7-navbar-large-title-text-color:inherit;--f7-navbar-large-title-padding-left:16px;--f7-navbar-large-title-padding-right:16px}.ios{--f7-navbar-height:44px;--f7-navbar-font-size:17px;--f7-navbar-title-font-size:inherit;--f7-navbar-inner-padding-left:8px;--f7-navbar-inner-padding-right:8px;--f7-navbar-title-font-weight:600;--f7-navbar-title-margin-left:0;--f7-navbar-title-margin-right:0;--f7-navbar-title-text-align:center;--f7-navbar-subtitle-font-size:10px;--f7-navbar-subtitle-line-height:1;--f7-navbar-large-title-height:52px;--f7-navbar-large-title-font-size:34px;--f7-navbar-large-title-font-weight:700;--f7-navbar-large-title-letter-spacing:-0.03em;--f7-navbar-large-title-padding-vertical:6px;--f7-navbar-subtitle-text-color:rgba(0,0,0,0.55)}.ios .dark,.ios.dark{--f7-navbar-subtitle-text-color:rgba(255,255,255,0.55)}.md{--f7-navbar-height:64px;--f7-navbar-font-size:16px;--f7-navbar-title-font-size:22px;--f7-navbar-inner-padding-left:0px;--f7-navbar-inner-padding-right:0px;--f7-navbar-title-font-weight:400;--f7-navbar-title-margin-left:0px;--f7-navbar-title-margin-right:16px;--f7-navbar-title-text-align:left;--f7-navbar-subtitle-font-size:14px;--f7-navbar-subtitle-line-height:1.2;--f7-navbar-large-title-font-size:28px;--f7-navbar-large-title-height:88px;--f7-navbar-large-title-font-weight:400;--f7-navbar-large-title-letter-spacing:0;--f7-navbar-large-title-padding-vertical:8px;--f7-navbar-link-height:48px;--f7-navbar-link-line-height:48px}.md,.md .dark,.md [class*=color-]{--f7-navbar-link-color:var(--f7-md-on-surface);--f7-navbar-text-color:var(--f7-md-on-surface);--f7-navbar-subtitle-text-color:var(--f7-md-on-surface-variant)}.navbar,.navbars{left:0;top:0;width:100%;z-index:500}.navbars{position:absolute}.navbars .navbar{z-index:auto}.navbars .navbar-transitioning{z-index:500}.navbar{--f7-navbar-large-collapse-progress:0;-webkit-backface-visibility:hidden;backface-visibility:hidden;box-sizing:border-box;color:var(--f7-navbar-text-color,var(--f7-bars-text-color));font-size:var(--f7-navbar-font-size);height:calc(var(--f7-navbar-height) + var(--f7-safe-area-top));margin:0;position:relative}.navbar b{font-weight:500}.navbar a{color:var(--f7-navbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.navbar a.link{display:flex;height:var(--f7-navbar-link-height,var(--f7-navbar-height));justify-content:flex-start;line-height:var(--f7-navbar-link-line-height,var(--f7-navbar-height))}.navbar .left,.navbar .right,.navbar .title{position:relative;z-index:10}.navbar .title{display:inline-block;flex-shrink:10;font-size:var(--f7-navbar-title-font-size);font-weight:var(--f7-navbar-title-font-weight);line-height:var(--f7-navbar-title-line-height);margin-left:var(--f7-navbar-title-margin-left);margin-right:var(--f7-navbar-title-margin-left);overflow:hidden;position:relative;text-align:var(--f7-navbar-title-text-align);text-overflow:ellipsis;white-space:nowrap}.navbar .subtitle{color:var(--f7-navbar-subtitle-text-color);display:block;font-size:var(--f7-navbar-subtitle-font-size);font-weight:400;line-height:var(--f7-navbar-subtitle-line-height);text-align:var(--f7-navbar-subtitle-text-align)}.navbar .left,.navbar .right{align-items:center;display:flex;flex-shrink:0;justify-content:flex-start}.navbar .right:first-child{height:100%;position:absolute}.navbar .no-outline .navbar-bg:after,.navbar .no-outline .title-large:after,.navbar.no-outline .navbar-bg:after,.navbar.no-outline .title-large:after{display:none!important}.navbar-hidden .navbar .navbar-bg:before,.navbar.navbar-hidden .navbar-bg:before{opacity:0!important}.navbar-bg{background:var(--f7-navbar-bg-color);background-color:var(--f7-navbar-bg-color,var(--f7-bars-bg-color));height:100%;left:0;pointer-events:none;position:absolute;top:0;transition-property:transform;width:100%;z-index:0}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .navbar-bg{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-navbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.navbar-bg:after,.navbar-bg:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.navbar-bg:after{background-color:var(--f7-navbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15;z-index:1}.navbar-transitioning,.navbar-transitioning .left,.navbar-transitioning .navbar-bg,.navbar-transitioning .navbar-bg:before,.navbar-transitioning .right,.navbar-transitioning .subnavbar,.navbar-transitioning .title,.navbar-transitioning .title-large-text{transition-duration:var(--f7-navbar-hide-show-transition-duration)}.navbar-page-transitioning,.navbar-page-transitioning .navbar-bg,.navbar-page-transitioning .title-large-text{transition-duration:var(--f7-page-swipeback-transition-duration)!important}.navbar-hidden{transform:translate3d(0,calc(var(--f7-navbar-height)*-1),0)}.navbar-hidden .navbar-inner{pointer-events:none}.navbar-hidden .navbar-inner>.left,.navbar-hidden .navbar-inner>.right,.navbar-hidden .navbar-inner>.title{opacity:0!important}.navbar-hidden .subnavbar{pointer-events:auto}.navbar-hidden-statusbar{transform:translate3d(0,calc(var(--f7-navbar-height)*-1 - var(--f7-safe-area-top)),0)}.navbar-large-hidden .navbar-large{--f7-navbar-large-collapse-progress:1}.navbar-inner{align-items:center;bottom:0;box-sizing:border-box;display:flex;height:100%;left:0;padding:var(--f7-safe-area-top) calc(var(--f7-navbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-navbar-inner-padding-left) + var(--f7-safe-area-left));transform:translateZ(0);width:100%;z-index:10}.navbar-inner,.navbars>.navbar,.page>.navbar,.view>.navbar,.views>.navbar{position:absolute}.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(.with-searchbar-expandable-enabled) .navbar-bg,.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(.with-searchbar-expandable-enabled) .title{opacity:0}.navbar-large .navbar-bg{height:calc(100% + var(--f7-navbar-large-title-height));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.navbar-large-transparent .navbar-bg,.navbar-large.navbar-transparent .navbar-bg{opacity:var(--f7-navbar-large-collapse-progress)}.ios .router-navbar-transition-from-large .navbar-bg,.ios .router-navbar-transition-to-large .navbar-bg,.navbar-bg.ios-swipeback-navbar-bg-large,.navbar-large-transparent .navbar-bg.ios-swipeback-navbar-bg-large,.navbar-large.navbar-transparent .navbar-bg.ios-swipeback-navbar-bg-large{height:calc(100% + var(--f7-navbar-large-title-height));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.ios .navbar:not(.navbar-large) .navbar-bg{--f7-navbar-large-collapse-progress:1}.navbar-large .title{opacity:var(--f7-navbar-large-collapse-progress)}.navbar-large-collapsed{--f7-navbar-large-collapse-progress:1}.navbar-large-collapsed .title-large{pointer-events:none}.navbar .title-large{display:flex;height:var(--f7-navbar-large-title-height);left:0;position:absolute;right:0;top:100%;z-index:5}.navbar .title-large,.navbar .title-large-text{box-sizing:border-box;overflow:hidden;white-space:nowrap}.navbar .title-large-text{color:var(--f7-navbar-large-title-text-color);font-size:var(--f7-navbar-large-title-font-size);font-weight:var(--f7-navbar-large-title-font-weight);letter-spacing:var(--f7-navbar-large-title-letter-spacing);line-height:var(--f7-navbar-large-title-line-height);padding:var(--f7-navbar-large-title-padding-vertical) calc(var(--f7-navbar-large-title-padding-right) + var(--f7-safe-area-right)) var(--f7-navbar-large-title-padding-vertical) calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left));text-overflow:ellipsis;transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0);transform-origin:calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center;width:100%}.navbar-no-title-large-transition .title-large-text{transition-duration:0ms}.navbars~*,.navbar~*{--f7-page-navbar-offset:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbars~* .page-with-navbar-large,.navbars~.page-with-navbar-large,.navbar~* .page-with-navbar-large,.navbar~.page-with-navbar-large,.page-with-navbar-large .navbar~*{--f7-page-navbar-offset:calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top))}.page.no-navbar,.page.no-navbar .navbar~*{--f7-page-navbar-offset:var(--f7-safe-area-top)}.ios{--f7-navbarLeftTextOffset:calc(16px + var(--f7-navbar-inner-padding-left));--f7-navbarTitleLargeOffset:var(--f7-navbar-large-title-padding-left);--f7-navbar-large-bg-center-top:translateX(0) translateY(calc(var(--f7-navbar-large-title-height)*-1));--f7-navbar-large-bg-center-bottom:translateX(0) translateY(0);--f7-navbar-large-bg-left-top:translateX(100%) translateY(calc(var(--f7-navbar-large-title-height)*-1));--f7-navbar-large-bg-left-bottom:translateX(100%) translateY(0);--f7-navbar-large-bg-right-top:translateX(-100%) translateY(calc(var(--f7-navbar-large-title-height)*-1));--f7-navbar-large-bg-right-bottom:translateX(-100%) translateY(0)}.ios .navbar .title-large{align-items:flex-end}.ios .navbar a.icon-only{justify-content:center;margin:0;width:44px}.ios .navbar .left a+a,.ios .navbar .right a+a{margin-right:16px}.ios .navbar b{font-weight:600}.ios .navbar .left{margin-left:10px}.ios .navbar .right{margin-right:10px}.ios .navbar .right:first-child{left:calc(8px + var(--f7-safe-area-left))}.ios .navbar-inner{justify-content:space-between}.ios .navbar-inner-left-title{justify-content:flex-start}.ios .navbar-inner-left-title .right{margin-right:auto}.ios .navbar-inner-left-title .title{margin-left:10px;text-align:left}.ios .navbar-next .fading,.ios .navbar-next .left,.ios .navbar-next .right,.ios .navbar-next .subnavbar,.ios .navbar-next .title,.ios .view-master-detail .navbar-previous:not(.navbar-master) .fading,.ios .view-master-detail .navbar-previous:not(.navbar-master) .left,.ios .view-master-detail .navbar-previous:not(.navbar-master) .right,.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar,.ios .view-master-detail .navbar-previous:not(.navbar-master) .title,.ios .view:not(.view-master-detail) .navbar-previous .fading,.ios .view:not(.view-master-detail) .navbar-previous .left,.ios .view:not(.view-master-detail) .navbar-previous .right,.ios .view:not(.view-master-detail) .navbar-previous .subnavbar,.ios .view:not(.view-master-detail) .navbar-previous .title{opacity:0}.ios .view-master-detail .navbar-previous:not(.navbar-master),.ios .view:not(.view-master-detail) .navbar-previous{pointer-events:none}.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large,.ios .view:not(.view-master-detail) .navbar-previous .title-large{opacity:0;transition-duration:0ms}.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large .title-large-text,.ios .view:not(.view-master-detail) .navbar-previous .title-large .title-large-text{transform:scale(.5);transition-duration:0ms}.ios .view-master-detail .navbar-previous:not(.navbar-master) .sliding .subnavbar,.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar.sliding,.ios .view:not(.view-master-detail) .navbar-previous .sliding .subnavbar,.ios .view:not(.view-master-detail) .navbar-previous .subnavbar.sliding{opacity:1;transform:translate3d(100%,0,0)}.ios .view-master-detail .navbar-previous:not(.navbar-master) .navbar-bg,.ios .view:not(.view-master-detail) .navbar-previous .navbar-bg{transform:translateX(-100%)}.ios .navbar-next{pointer-events:none}.ios .navbar-next .navbar-bg{transform:translateX(-100%)}.ios .navbar-next .title-large .title-large-text{transform:translateX(-100%) translateY(calc(var(--f7-navbar-large-title-height)*-1));transition-duration:0ms}.ios .navbar-next .sliding .subnavbar,.ios .navbar-next .subnavbar.sliding{opacity:1;transform:translate3d(-100%,0,0)}.ios .router-transition .navbar,.ios .router-transition .navbar-bg{transition-duration:var(--f7-page-transition-duration)}.ios .router-transition .navbar-bg{animation-duration:var(--f7-page-transition-duration);animation-fill-mode:forwards}.ios .router-transition .title-large,.ios .router-transition .title-large-text{transition-duration:0ms}.ios .router-transition .navbar-current .left,.ios .router-transition .navbar-current .right,.ios .router-transition .navbar-current .subnavbar,.ios .router-transition .navbar-current .title{animation:ios-navbar-element-fade-out var(--f7-page-transition-duration) forwards}.ios .router-transition .navbar-current .sliding .left,.ios .router-transition .navbar-current .sliding .left .icon+span,.ios .router-transition .navbar-current .sliding .right,.ios .router-transition .navbar-current .sliding .title,.ios .router-transition .navbar-current .sliding.left,.ios .router-transition .navbar-current .sliding.left .icon+span,.ios .router-transition .navbar-current .sliding.right,.ios .router-transition .navbar-current .sliding.title{animation:none;opacity:0!important;transition-duration:var(--f7-page-transition-duration)}.ios .router-transition .navbar-current .sliding .subnavbar,.ios .router-transition .navbar-current .sliding.subnavbar{animation:none;opacity:1;transition-duration:var(--f7-page-transition-duration)}.ios .router-transition-backward .navbar-previous .left,.ios .router-transition-backward .navbar-previous .right,.ios .router-transition-backward .navbar-previous .subnavbar,.ios .router-transition-backward .navbar-previous .title,.ios .router-transition-forward .navbar-next .left,.ios .router-transition-forward .navbar-next .right,.ios .router-transition-forward .navbar-next .subnavbar,.ios .router-transition-forward .navbar-next .title{animation:ios-navbar-element-fade-in var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .navbar-previous .sliding .left,.ios .router-transition-backward .navbar-previous .sliding .left .icon+span,.ios .router-transition-backward .navbar-previous .sliding .right,.ios .router-transition-backward .navbar-previous .sliding .subnavbar,.ios .router-transition-backward .navbar-previous .sliding .title,.ios .router-transition-backward .navbar-previous .sliding.left,.ios .router-transition-backward .navbar-previous .sliding.left .icon+span,.ios .router-transition-backward .navbar-previous .sliding.right,.ios .router-transition-backward .navbar-previous .sliding.title,.ios .router-transition-forward .navbar-next .sliding .left,.ios .router-transition-forward .navbar-next .sliding .left .icon+span,.ios .router-transition-forward .navbar-next .sliding .right,.ios .router-transition-forward .navbar-next .sliding .subnavbar,.ios .router-transition-forward .navbar-next .sliding .title,.ios .router-transition-forward .navbar-next .sliding.left,.ios .router-transition-forward .navbar-next .sliding.left .icon+span,.ios .router-transition-forward .navbar-next .sliding.right,.ios .router-transition-forward .navbar-next .sliding.title{animation:none;opacity:1!important;transform:translateZ(0)!important;transition-duration:var(--f7-page-transition-duration)}.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title,.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title{animation:none}.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title,.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title,.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title,.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title{opacity:0!important}.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .left,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .right,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .subnavbar,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .title,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .left,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .right,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .subnavbar,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .title{animation:none}.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large{overflow:visible}.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-up var(--f7-page-transition-duration) forwards,ios-navbar-large-title-text-fade-out var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large .left .back span{animation:ios-navbar-back-text-next-to-current var(--f7-page-transition-duration) forwards;transform-origin:right center;transition:none}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large{overflow:visible}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-forward .navbar-next.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-left var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title,.ios .router-transition-forward .navbar-next.navbar-large:not(.navbar-large-collapsed) .title{animation:none;opacity:0!important;transition-duration:0}.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large .left .back span{animation:ios-navbar-back-text-current-to-previous var(--f7-page-transition-duration) forwards;transform-origin:right center;transition:none}.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large{overflow:visible}.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-right var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large{opacity:0}.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large{opacity:1;overflow:visible}.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-down var(--f7-page-transition-duration) forwards,ios-navbar-large-title-text-fade-in var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title,.ios .router-transition-backward .navbar-previous.navbar-large:not(.navbar-large-collapsed) .title{animation:none;opacity:0!important;transition-duration:0}.ios .router-transition-forward .navbar-current .navbar-bg,.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-lb}.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-lt}.ios .router-transition-forward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-lb}.ios .router-transition-forward .navbar-current.navbar-large-collapsed:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-lt}.ios .router-transition-forward .navbar-next .navbar-bg,.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-rb-to-cb}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-rb-to-ct}.ios .router-transition-forward .navbar-next:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-rt-to-cb}.ios .router-transition-backward .navbar-current .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-rb}.ios .router-transition-backward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-rb}.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-rt}.ios .router-transition-backward .navbar-current.navbar-large-collapsed .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-rt}.ios .router-transition-backward .navbar-current.navbar-large-collapsed.router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-rb}.ios .router-transition-backward .navbar-previous .navbar-bg{animation-name:ios-navbar-bg-from-lb-to-cb}.ios .router-transition-backward .navbar-previous:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-lt-to-cb}.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-lb-to-ct}.ios .router-transition-backward .navbar-previous.navbar-large-collapsed .navbar-bg{animation-name:ios-navbar-bg-from-lt-to-ct}.view-master-detail .navbars{z-index:auto}.view-master-detail .page-master{z-index:525}.view-master-detail .navbar-master .navbar-bg,.view-master-detail .navbar-master .navbar-inner{z-index:550}.view-master-detail .navbar-master-detail .navbar-bg,.view-master-detail .navbar-master-detail .navbar-inner{z-index:500}.view-master-detail .navbar-master.navbar-previous{pointer-events:auto}.view-master-detail .navbar-master.navbar-previous .left,.view-master-detail .navbar-master.navbar-previous .right,.view-master-detail .navbar-master.navbar-previous .subnavbar,.view-master-detail .navbar-master.navbar-previous:not(.navbar-large) .title{opacity:1}.view-master-detail.router-transition .navbar-master .fading,.view-master-detail.router-transition .navbar-master .left,.view-master-detail.router-transition .navbar-master .left .icon+span,.view-master-detail.router-transition .navbar-master .right,.view-master-detail.router-transition .navbar-master .subnavbar,.view-master-detail.router-transition .navbar-master:not(.navbar-large) .title{animation:none!important;opacity:1!important;transform:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master .navbar-bg{animation:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master.navbar-large .title{animation:none!important;opacity:calc(-1 + var(--f7-navbar-large-collapse-progress)*2)!important;transform:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master.navbar-large .title-large,.view-master-detail.router-transition .navbar-master.navbar-large .title-large-text{animation:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master.navbar-large-transparent .navbar-bg,.view-master-detail.router-transition .navbar-master.navbar-large.navbar-transparent .navbar-bg{height:100%!important;opacity:var(--f7-navbar-large-collapse-progress)!important}@keyframes ios-navbar-element-fade-in{0%{opacity:0}25%{opacity:0}to{opacity:1}}@keyframes ios-navbar-element-fade-out{0%{opacity:1}75%{opacity:0}to{opacity:0}}@keyframes ios-navbar-large-title-text-slide-up{0%{transform:translateX(0) translateY(0) scale(1)}to{transform:translateX(calc((var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset))*-1)) translateY(calc(var(--f7-navbar-large-title-height)*-1 + var(--f7-navbar-large-title-padding-vertical))) scale(.5)}}@keyframes ios-navbar-large-title-text-slide-down{0%{transform:translateX(calc((var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset))*-1)) translateY(calc(var(--f7-navbar-large-title-height)*-1 + var(--f7-navbar-large-title-padding-vertical)/2)) scale(.5)}to{transform:translateX(0) translateY(0) scale(1)}}@keyframes ios-navbar-large-title-text-slide-left{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes ios-navbar-large-title-text-slide-right{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes ios-navbar-large-title-text-fade-out{0%{opacity:1}80%{opacity:0}to{opacity:0}}@keyframes ios-navbar-large-title-text-fade-in{0%{opacity:0}20%{opacity:0}to{opacity:1}}@keyframes ios-navbar-back-text-current-to-previous{0%{opacity:1;transform:translateY(0) translateX(0) scale(1)}80%{opacity:0}to{opacity:0;transform:translateX(calc((var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset))*-1)) translateY(calc(var(--f7-navbar-large-title-height)*1 - var(--f7-navbar-large-title-padding-vertical)/2)) scale(2)}}@keyframes ios-navbar-back-text-next-to-current{0%{opacity:0;transform:translateX(calc((var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset))*-1)) translateY(calc(var(--f7-navbar-large-title-height)*1 + var(--f7-navbar-large-title-padding-vertical)/2)) scale(2)}20%{opacity:0}to{opacity:1;transform:translateX(0) translateY(0) scale(1)}}@keyframes ios-navbar-bg-from-cb-to-lb{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-left-bottom)}}@keyframes ios-navbar-bg-from-cb-to-lt{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-left-top)}}@keyframes ios-navbar-bg-from-ct-to-lb{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-left-bottom)}}@keyframes ios-navbar-bg-from-ct-to-lt{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-left-top)}}@keyframes ios-navbar-bg-from-rb-to-cb{0%{transform:var(--f7-navbar-large-bg-right-bottom)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-rb-to-ct{0%{transform:var(--f7-navbar-large-bg-right-bottom)}to{transform:var(--f7-navbar-large-bg-center-top)}}@keyframes ios-navbar-bg-from-rt-to-cb{0%{transform:var(--f7-navbar-large-bg-right-top)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-cb-to-rb{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-right-bottom)}}@keyframes ios-navbar-bg-from-ct-to-rb{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-right-bottom)}}@keyframes ios-navbar-bg-from-cb-to-rt{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-right-top)}}@keyframes ios-navbar-bg-from-ct-to-rt{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-right-top)}}@keyframes ios-navbar-bg-from-lb-to-cb{0%{transform:var(--f7-navbar-large-bg-left-bottom)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-lt-to-cb{0%{transform:var(--f7-navbar-large-bg-left-top)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-lb-to-ct{0%{transform:var(--f7-navbar-large-bg-left-bottom)}to{transform:var(--f7-navbar-large-bg-center-top)}}@keyframes ios-navbar-bg-from-lt-to-ct{0%{transform:var(--f7-navbar-large-bg-left-top)}to{transform:var(--f7-navbar-large-bg-center-top)}}.md .navbar .title-large{align-items:center}.md .navbar .left{margin-left:4px;margin-right:4px}.md .navbar a.link{min-width:48px;padding:0 12px}.md .navbar a.icon-only{flex-shrink:0;min-width:0;width:48px}.md .navbar .right{margin-left:4px;margin-right:auto}.md .navbar .right:first-child{left:var(--f7-safe-area-left)}.md .navbar-inner{justify-content:flex-start;overflow:hidden}.md .navbar-large:not(.navbar-large-collapsed) .navbar-inner,.md .page.page-with-subnavbar .navbar-inner{overflow:visible}.md .navbar-inner:not(.navbar-inner-centered-title) .title:first-child{margin-left:16px}.md .navbar-inner-centered-title{justify-content:space-between}.md .navbar-inner-centered-title .right{margin-right:0}.md .navbar-inner-centered-title .title{text-align:center}:root{--f7-tabbar-link-active-bg-color:transparent;--f7-tabbar-label-text-transform:none;--f7-toolbar-hide-show-transition-duration:400ms}.ios{--f7-toolbar-height:44px;--f7-toolbar-font-size:17px;--f7-toolbar-inner-padding-left:8px;--f7-toolbar-inner-padding-right:8px;--f7-toolbar-link-font-weight:400;--f7-tabbar-icons-height:50px;--f7-tabbar-icons-tablet-height:50px;--f7-tabbar-icon-size:28px;--f7-tabbar-link-text-transform:none;--f7-tabbar-link-font-weight:400;--f7-tabbar-link-letter-spacing:0;--f7-tabbar-label-font-size:12px;--f7-tabbar-label-tablet-font-size:14px;--f7-tabbar-label-font-weight:500;--f7-tabbar-label-letter-spacing:0.01;--f7-tabbar-link-inactive-color:rgba(0,0,0,0.4)}.ios .dark,.ios.dark{--f7-tabbar-link-inactive-color:rgba(255,255,255,0.54)}.md{--f7-toolbar-height:56px;--f7-toolbar-font-size:14px;--f7-toolbar-inner-padding-left:0px;--f7-toolbar-inner-padding-right:0px;--f7-tabbar-icons-height:80px;--f7-tabbar-icons-tablet-height:80px;--f7-tabbar-icon-size:24px;--f7-tabbar-link-text-transform:none;--f7-tabbar-link-font-weight:500;--f7-tabbar-link-letter-spacing:0;--f7-toolbar-link-font-weight:500;--f7-tabbar-label-font-size:12px;--f7-tabbar-label-tablet-font-size:12px;--f7-tabbar-label-font-weight:500;--f7-tabbar-label-letter-spacing:0}.md,.md .dark,.md [class*=color-]{--f7-tabbar-link-active-color:var(--f7-md-on-secondary-container);--f7-tabbar-link-active-border-color:var(--f7-md-primary);--f7-tabbar-link-inactive-color:var(--f7-md-on-surface-variant);--f7-tabbar-link-active-icon-bg-color:var(--f7-md-secondary-container)}.toolbar{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-toolbar-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-toolbar-text-color,var(--f7-bars-text-color));font-size:var(--f7-toolbar-font-size);height:var(--f7-toolbar-height);left:0;margin:0;position:relative;transform:translateZ(0);width:100%;z-index:600}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .toolbar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-toolbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.toolbar b{font-weight:600}.toolbar a{box-sizing:border-box;color:var(--f7-toolbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)));flex-shrink:1;position:relative;text-overflow:ellipsis;white-space:nowrap}.toolbar .link{display:flex;font-weight:var(--f7-toolbar-link-font-weight);height:var(--f7-toolbar-link-height,var(--f7-toolbar-height));line-height:var(--f7-toolbar-link-line-height,var(--f7-toolbar-height))}.toolbar i.icon{display:block}.toolbar:after,.toolbar:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.page>.toolbar,.view>.toolbar,.views>.toolbar{position:absolute}.ios .toolbar-top-ios,.md .toolbar-top-md,.toolbar-top{top:0}.ios .toolbar-top-ios .tab-link-highlight,.md .toolbar-top-md .tab-link-highlight,.toolbar-top .tab-link-highlight{bottom:0}.ios .toolbar-top-ios.no-outline:after,.ios .toolbar-top-ios.toolbar-hidden:before,.md .toolbar-top-md.no-outline:after,.md .toolbar-top-md.toolbar-hidden:before,.toolbar-top.no-outline:after,.toolbar-top.toolbar-hidden:before{display:none!important}.ios .toolbar-top-ios:after,.ios .toolbar-top-ios:before,.md .toolbar-top-md:after,.md .toolbar-top-md:before,.toolbar-top:after,.toolbar-top:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.ios .toolbar-top-ios:after,.md .toolbar-top-md:after,.toolbar-top:after{background-color:var(--f7-toolbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .toolbar-bottom-ios,.md .toolbar-bottom-md,.toolbar-bottom{bottom:0;height:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.ios .toolbar-bottom-ios .tab-link-highlight,.md .toolbar-bottom-md .tab-link-highlight,.toolbar-bottom .tab-link-highlight{top:0}.ios .toolbar-bottom-ios .toolbar-inner,.md .toolbar-bottom-md .toolbar-inner,.toolbar-bottom .toolbar-inner{bottom:var(--f7-safe-area-bottom);height:auto;top:0}.ios .toolbar-bottom-ios.no-outline:before,.ios .toolbar-bottom-ios.toolbar-hidden:after,.md .toolbar-bottom-md.no-outline:before,.md .toolbar-bottom-md.toolbar-hidden:after,.toolbar-bottom.no-outline:before,.toolbar-bottom.toolbar-hidden:after{display:none!important}.ios .toolbar-bottom-ios:before,.md .toolbar-bottom-md:before,.toolbar-bottom:before{background-color:var(--f7-toolbar-border-color,var(--f7-bars-border-color));bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.toolbar-inner{align-content:center;align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:space-between;left:0;overflow:hidden;padding:0 calc(var(--f7-toolbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-toolbar-inner-padding-left) + var(--f7-safe-area-left));position:absolute;top:0;width:100%}.views>.tabbar,.views>.tabbar-icons{z-index:5001}.tabbar a,.tabbar-icons a{color:var(--f7-tabbar-link-inactive-color)}.tabbar .link,.tabbar-icons .link{line-height:1.4}.tabbar .link,.tabbar .tab-link,.tabbar-icons .link,.tabbar-icons .tab-link{align-items:center;box-sizing:border-box;display:flex;flex-direction:column;font-weight:var(--f7-tabbar-link-font-weight);height:100%;justify-content:center;letter-spacing:var(--f7-tabbar-link-letter-spacing);overflow:hidden;text-transform:var(--f7-tabbar-link-text-transform);width:100%}.tabbar .tab-link-active,.tabbar-icons .tab-link-active{background-color:var(--f7-tabbar-link-active-bg-color,transparent);color:var(--f7-tabbar-link-active-color,var(--f7-theme-color))}.tabbar i.icon,.tabbar-icons i.icon{font-size:var(--f7-tabbar-icon-size);height:var(--f7-tabbar-icon-size);line-height:var(--f7-tabbar-icon-size)}.md .tabbar-icons.tabbar-icons .tab-link-highlight,.md .tabbar.tabbar-icons .tab-link-highlight{display:none}.md .tabbar-icons:not(.tabbar-icons) .tab-link-highlight,.md .tabbar:not(.tabbar-icons) .tab-link-highlight{background:var(--f7-tabbar-link-active-border-color,var(--f7-theme-color));height:2px;left:0;position:absolute;right:0;transition-duration:.3s}.tabbar-icons{--f7-toolbar-height:var(--f7-tabbar-icons-height)}.tabbar-icons .link,.tabbar-icons .tab-link{align-items:center;height:100%;justify-content:center}.tabbar-icons .tabbar-label{display:block;font-size:var(--f7-tabbar-label-font-size);font-weight:var(--f7-tabbar-label-font-weight);letter-spacing:var(--f7-tabbar-label-letter-spacing);line-height:1;margin:0;position:relative;text-overflow:ellipsis;text-transform:var(--f7-tabbar-label-text-transform);white-space:nowrap}@media (min-width:768px) and (min-height:600px){:root{--f7-tabbar-icons-height:var(--f7-tabbar-icons-tablet-height);--f7-tabbar-label-font-size:var(--f7-tabbar-label-tablet-font-size)}}.tabbar-scrollable .toolbar-inner{-webkit-overflow-scrolling:touch;justify-content:flex-start;overflow:auto;scrollbar-color:transparent;scrollbar-width:none}.tabbar-scrollable .toolbar-inner::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-track{background:transparent;box-shadow:none}.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.tabbar-scrollable .link,.tabbar-scrollable .tab-link{flex-shrink:0;width:auto}.navbar-transitioning+.toolbar,.navbar-transitioning~* .toolbar,.toolbar-transitioning{transition-duration:var(--f7-toolbar-hide-show-transition-duration)}.ios .toolbar-bottom-ios~*,.md .toolbar-bottom-md~*,.toolbar-bottom~*{--f7-page-toolbar-bottom-offset:var(--f7-toolbar-height)}.ios .toolbar-bottom-ios.tabbar-icons~*,.md .toolbar-bottom-md.tabbar-icons~*,.toolbar-bottom.tabbar-icons~*{--f7-page-toolbar-bottom-offset:var(--f7-tabbar-icons-height)}.ios .toolbar-bottom-ios.toolbar-hidden,.md .toolbar-bottom-md.toolbar-hidden,.toolbar-bottom.toolbar-hidden{transform:translate3d(0,100%,0)}.ios .toolbar-top-ios~*,.md .toolbar-top-md~*,.toolbar-top~*{--f7-page-toolbar-top-offset:var(--f7-toolbar-height)}.ios .toolbar-top-ios.tabbar-icons~*,.md .toolbar-top-md.tabbar-icons~*,.toolbar-top.tabbar-icons~*{--f7-page-toolbar-top-offset:var(--f7-tabbar-icons-height)}.ios .toolbar-top-ios.toolbar-hidden,.md .toolbar-top-md.toolbar-hidden,.toolbar-top.toolbar-hidden{transform:translate3d(0,-100%,0)}.ios .navbars~* .toolbar-top-ios,.ios .navbars~.page:not(.no-navbar) .toolbar-top-ios,.ios .navbars~.toolbar-top-ios,.ios .navbar~* .toolbar-top-ios,.ios .navbar~.page:not(.no-navbar) .toolbar-top-ios,.ios .navbar~.toolbar-top-ios,.md .navbar~* .toolbar-top-md,.md .navbar~.page:not(.no-navbar) .toolbar-top-md,.md .navbar~.toolbar-top-md,.navbars~* .toolbar-top,.navbars~.page:not(.no-navbar) .toolbar-top,.navbars~.toolbar-top,.navbar~* .toolbar-top,.navbar~.page:not(.no-navbar) .toolbar-top,.navbar~.toolbar-top{top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars~* .toolbar-top-ios.toolbar-hidden,.ios .navbars~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,.ios .navbars~.toolbar-top-ios.toolbar-hidden,.ios .navbar~* .toolbar-top-ios.toolbar-hidden,.ios .navbar~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,.ios .navbar~.toolbar-top-ios.toolbar-hidden,.md .navbar~* .toolbar-top-md.toolbar-hidden,.md .navbar~.page:not(.no-navbar) .toolbar-top-md.toolbar-hidden,.md .navbar~.toolbar-top-md.toolbar-hidden,.navbars~* .toolbar-top.toolbar-hidden,.navbars~.page:not(.no-navbar) .toolbar-top.toolbar-hidden,.navbars~.toolbar-top.toolbar-hidden,.navbar~* .toolbar-top.toolbar-hidden,.navbar~.page:not(.no-navbar) .toolbar-top.toolbar-hidden,.navbar~.toolbar-top.toolbar-hidden{transform:translate3d(0,calc((var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top))*-1),0)}.ios .navbars~* .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbars~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbars~.toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbar~* .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbar~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbar~.toolbar-top-ios.toolbar-hidden.tabbar-icons,.md .navbar~* .toolbar-top-md.toolbar-hidden.tabbar-icons,.md .navbar~.page:not(.no-navbar) .toolbar-top-md.toolbar-hidden.tabbar-icons,.md .navbar~.toolbar-top-md.toolbar-hidden.tabbar-icons,.navbars~* .toolbar-top.toolbar-hidden.tabbar-icons,.navbars~.page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,.navbars~.toolbar-top.toolbar-hidden.tabbar-icons,.navbar~* .toolbar-top.toolbar-hidden.tabbar-icons,.navbar~.page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,.navbar~.toolbar-top.toolbar-hidden.tabbar-icons{transform:translate3d(0,calc((var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top))*-1),0)}.ios .navbar-hidden+.toolbar-top-ios:not(.toolbar-hidden),.ios .navbar-hidden~* .toolbar-top-ios:not(.toolbar-hidden),.md .navbar-hidden+.toolbar-top-md:not(.toolbar-hidden),.md .navbar-hidden~* .toolbar-top-md:not(.toolbar-hidden),.navbar-hidden+.toolbar-top:not(.toolbar-hidden),.navbar-hidden~* .toolbar-top:not(.toolbar-hidden){transform:translate3d(0,calc(0px - var(--f7-navbar-height)),0)}.ios .navbar-large-hidden+.toolbar-top-ios:not(.toolbar-hidden),.ios .navbar-large-hidden~* .toolbar-top-ios:not(.toolbar-hidden),.md .navbar-large-hidden+.toolbar-top-md:not(.toolbar-hidden),.md .navbar-large-hidden~* .toolbar-top-md:not(.toolbar-hidden),.navbar-large-hidden+.toolbar-top:not(.toolbar-hidden),.navbar-large-hidden~* .toolbar-top:not(.toolbar-hidden){transform:translate3d(0,calc(0px - var(--f7-navbar-height) - var(--f7-navbar-large-title-height)),0)}.ios .toolbar a.icon-only{align-items:center;display:flex;justify-content:center;margin:0;min-height:var(--f7-toolbar-height);min-width:44px}.ios .tabbar-icons .link,.ios .tabbar-icons .tab-link{padding-bottom:4px;padding-top:4px}.ios .tabbar-icons .link i+span,.ios .tabbar-icons .tab-link i+span{margin:4px 0 0}@media (min-width:768px) and (min-height:600px){.ios .tabbar .link,.ios .tabbar .tab-link,.ios .tabbar-icons .link,.ios .tabbar-icons .tab-link{flex-direction:row;justify-content:center}.ios .tabbar .link i+span,.ios .tabbar .tab-link i+span,.ios .tabbar-icons .link i+span,.ios .tabbar-icons .tab-link i+span{margin-left:5px}}.ios .tabbar-scrollable .toolbar-inner{justify-content:flex-start}.ios .tabbar-scrollable .link,.ios .tabbar-scrollable .tab-link{padding:0 8px}.md .toolbar .link{justify-content:center;min-width:48px;padding:0 12px}.md .toolbar a.icon-only{flex-shrink:0;min-width:0}.md .tabbar .link,.md .tabbar .tab-link,.md .tabbar-icons .link,.md .tabbar-icons .tab-link{padding-left:0;padding-right:0}.md .tabbar a.icon-only,.md .tabbar-icons a.icon-only{flex-shrink:1}.md .tabbar .tab-link,.md .tabbar-icons .tab-link{overflow:hidden;position:relative;transition-duration:.3s}.md .tabbar i.icon,.md .tabbar-icons i.icon{position:relative}.md .tabbar i.icon:before,.md .tabbar-icons i.icon:before{background:var(--f7-tabbar-link-active-icon-bg-color);border-radius:32px;content:"";height:32px;left:50%;opacity:0;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) scaleX(.5);transition-duration:.2s;width:64px;z-index:-1}.md .tabbar i.icon+.tabbar-label,.md .tabbar-icons i.icon+.tabbar-label{margin-top:8px}.md .tabbar .tab-link-active i.icon:before,.md .tabbar-icons .tab-link-active i.icon:before{opacity:1;transform:translateX(-50%) translateY(-50%) scaleX(1)}.md .tabbar-icons .link,.md .tabbar-icons .tab-link{padding-bottom:8px;padding-top:8px}.md .tabbar-label{line-height:1.2;max-width:100%;overflow:hidden}.md .tabbar-scrollable .toolbar-inner{overflow:auto}.md .tabbar-scrollable .link,.md .tabbar-scrollable .tab-link{padding:0 12px}:root{--f7-subnavbar-title-line-height:1.2}.ios{--f7-subnavbar-height:44px;--f7-subnavbar-inner-padding-left:8px;--f7-subnavbar-inner-padding-right:8px;--f7-subnavbar-title-font-size:34px;--f7-subnavbar-title-font-weight:700;--f7-subnavbar-title-letter-spacing:-0.03em;--f7-subnavbar-title-margin-left:8px}.md{--f7-subnavbar-height:64px;--f7-subnavbar-inner-padding-left:16px;--f7-subnavbar-inner-padding-right:16px;--f7-subnavbar-title-font-size:22px;--f7-subnavbar-title-font-weight:400;--f7-subnavbar-title-letter-spacing:0;--f7-subnavbar-title-margin-left:0px}.subnavbar{align-items:center;background-color:var(--f7-subnavbar-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-subnavbar-text-color,var(--f7-bars-text-color));display:flex;justify-content:space-between;left:0;position:absolute;top:0;width:100%;z-index:600}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .subnavbar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-subnavbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.subnavbar .subnavbar-title{display:inline-block;font-size:var(--f7-subnavbar-title-font-size);font-weight:var(--f7-subnavbar-title-font-weight);letter-spacing:var(--f7-subnavbar-title-letter-spacing);line-height:var(--f7-subnavbar-title-line-height);margin-right:var(--f7-subnavbar-title-margin-left);overflow:hidden;position:relative;text-align:left;text-overflow:ellpsis;white-space:nowrap}.subnavbar .left,.subnavbar .right{align-items:center;display:flex;flex-shrink:0;justify-content:flex-start}.subnavbar .right:first-child{height:100%;position:absolute}.subnavbar a{color:var(--f7-subnavbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.subnavbar a.link{height:var(--f7-subnavbar-link-height,var(--f7-subnavbar-height));line-height:var(--f7-subnavbar-link-line-height,var(--f7-subnavbar-height))}.subnavbar a.icon-only{min-width:var(--f7-subnavbar-height)}.subnavbar.navbar-hidden:before,.subnavbar.no-outline:after{display:none!important}.subnavbar:after,.subnavbar:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.subnavbar:after{background-color:var(--f7-subnavbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.subnavbar-inner{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:space-between;overflow:hidden;padding:0 calc(var(--f7-subnavbar-inner-padding-left) + var(--f7-safe-area-right)) 0 calc(var(--f7-subnavbar-inner-padding-right) + var(--f7-safe-area-left));width:100%}.navbar .subnavbar{top:100%}.page>.subnavbar,.view>.subnavbar,.views>.subnavbar{position:absolute}.navbars~* .subnavbar,.navbars~.page-with-subnavbar:not(.no-navbar) .subnavbar,.navbars~.subnavbar,.navbar~* .subnavbar,.navbar~.page-with-subnavbar:not(.no-navbar) .subnavbar,.navbar~.subnavbar,.page-with-subnavbar .navbar~* .subnavbar,.page-with-subnavbar .navbar~.subnavbar{top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbar .title-large~.subnavbar,.navbars~.page-with-navbar-large:not(.no-navbar) .subnavbar,.navbar~.page-with-navbar-large:not(.no-navbar) .subnavbar,.page-with-subnavbar.page-with-navbar-large .navbar~* .subnavbar,.page-with-subnavbar.page-with-navbar-large .navbar~.subnavbar{top:calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.page-with-subnavbar,.subnavbar~*{--f7-page-subnavbar-offset:var(--f7-subnavbar-height)}.ios .subnavbar{height:calc(var(--f7-subnavbar-height) + 1px);margin-top:-1px;padding-top:1px}.ios .subnavbar .title{align-self:flex-start;flex-shrink:10}.ios .subnavbar .left a+a,.ios .subnavbar .right a+a{margin-right:16px}.ios .subnavbar .left{margin-left:10px}.ios .subnavbar .right{margin-right:10px}.ios .subnavbar .right:first-child{left:8px}.ios .subnavbar a.link{justify-content:flex-start}.ios .subnavbar a.icon-only{justify-content:center;margin:0}.md .subnavbar{height:var(--f7-subnavbar-height)}.md .subnavbar .right{margin-right:auto}.md .subnavbar .right:first-child{left:16px}.md .subnavbar a.link{justify-content:center;padding:0 12px}.md .subnavbar a.icon-only{flex-shrink:0;padding:0 12px}.md .subnavbar-inner>a.link:first-child{margin-right:calc(var(--f7-subnavbar-inner-padding-right)*-1)}.md .subnavbar-inner>a.link:last-child{margin-left:calc(var(--f7-subnavbar-inner-padding-left)*-1)}:root{--f7-block-padding-horizontal:16px;--f7-block-padding-vertical:16px;--f7-block-font-size:inherit;--f7-block-header-margin:10px;--f7-block-footer-margin:10px;--f7-block-header-font-size:14px;--f7-block-footer-font-size:14px;--f7-block-title-text-transform:none;--f7-block-title-white-space:nowrap;--f7-block-title-medium-text-transform:none;--f7-block-title-large-text-transform:none;--f7-block-inset-side-margin:16px}:root .dark,:root.dark{--f7-block-outline-border-color:rgba(255,255,255,0.15)}.ios{--f7-block-text-color:inherit;--f7-block-margin-vertical:35px;--f7-block-outline-border-color:rgba(0,0,0,0.22);--f7-block-title-font-size:16px;--f7-block-title-font-weight:600;--f7-block-title-line-height:20px;--f7-block-title-margin-bottom:10px;--f7-block-title-medium-font-size:22px;--f7-block-title-medium-font-weight:bold;--f7-block-title-medium-line-height:1.4;--f7-block-title-large-font-size:30px;--f7-block-title-large-font-weight:bold;--f7-block-title-large-line-height:1.3;--f7-block-inset-border-radius:8px;--f7-block-title-text-color:#000;--f7-block-strong-text-color:#000;--f7-block-header-text-color:rgba(0,0,0,0.45);--f7-block-footer-text-color:rgba(0,0,0,0.45);--f7-block-strong-bg-color:#fff;--f7-block-title-medium-text-color:#000;--f7-block-title-large-text-color:#000}.ios .dark,.ios.dark{--f7-block-title-text-color:#fff;--f7-block-header-text-color:rgba(255,255,255,0.55);--f7-block-footer-text-color:rgba(255,255,255,0.55);--f7-block-strong-text-color:#fff;--f7-block-strong-bg-color:#1c1c1d;--f7-block-title-medium-text-color:#fff;--f7-block-title-large-text-color:#fff}.md{--f7-block-margin-vertical:32px;--f7-block-title-font-size:inherit;--f7-block-title-font-weight:500;--f7-block-title-line-height:16px;--f7-block-title-margin-bottom:16px;--f7-block-title-medium-font-size:16px;--f7-block-title-medium-font-weight:500;--f7-block-title-medium-line-height:1.3;--f7-block-title-large-font-size:22px;--f7-block-title-large-font-weight:500;--f7-block-title-large-line-height:1.2;--f7-block-inset-border-radius:16px}.md,.md .dark,.md [class*=color-]{--f7-block-text-color:var(--f7-md-on-surface);--f7-block-strong-text-color:var(--f7-md-on-surface);--f7-block-outline-border-color:var(--f7-md-outline);--f7-block-title-text-color:var(--f7-theme-color);--f7-block-title-medium-text-color:var(--f7-theme-color);--f7-block-title-large-text-color:var(--f7-theme-color);--f7-block-strong-bg-color:var(--f7-md-surface-1);--f7-block-header-text-color:var(--f7-md-on-surface-variant);--f7-block-footer-text-color:var(--f7-md-on-surface-variant)}.block{box-sizing:border-box;color:var(--f7-block-text-color);font-size:var(--f7-block-font-size);margin:var(--f7-block-margin-vertical) 0;padding-bottom:0;padding-left:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));padding-top:0;position:relative;z-index:1}.block>h1:first-child,.block>h2:first-child,.block>h3:first-child,.block>h4:first-child,.block>p:first-child{margin-top:0}.block>h1:last-child,.block>h2:last-child,.block>h3:last-child,.block>h4:last-child,.block>p:last-child{margin-bottom:0}.block-strong,.ios .block-strong-ios,.md .block-strong-md{background-color:var(--f7-block-strong-bg-color);color:var(--f7-block-strong-text-color);padding-bottom:var(--f7-block-padding-vertical);padding-top:var(--f7-block-padding-vertical)}.block-outline:not(.inset):before,.ios .block-outline-ios:not(.inset):not(.inset-ios):before,.md .block-outline-md:not(.inset):not(.inset-md):before{background-color:var(--f7-block-outline-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.block-outline:not(.inset):after,.ios .block-outline-ios:not(.inset):not(.inset-ios):after,.md .block-outline-md:not(.inset):not(.inset-md):after{background-color:var(--f7-block-outline-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.block-outline.inset,.ios .block-outline-ios.inset,.ios .block-outline-ios.inset-ios,.md .block-outline-md.inset,.md .block-outline-md.inset-md{border:1px solid var(--f7-block-outline-border-color)}.block-title{color:var(--f7-block-title-text-color);font-size:var(--f7-block-title-font-size,inherit);font-weight:var(--f7-block-title-font-weight);line-height:var(--f7-block-title-line-height);margin:0;margin:var(--f7-block-margin-vertical) calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right)) var(--f7-block-title-margin-bottom) calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));overflow:hidden;position:relative;text-overflow:ellipsis;text-transform:var(--f7-block-title-text-transform);white-space:var(--f7-block-title-white-space)}.block-title+.block,.block-title+.block-header,.block-title+.card,.block-title+.list,.block-title+.timeline{margin-top:0}.block-title-medium{color:var(--f7-block-title-medium-text-color);font-size:var(--f7-block-title-medium-font-size);font-weight:var(--f7-block-title-medium-font-weight);line-height:var(--f7-block-title-medium-line-height);text-transform:var(--f7-block-title-medium-text-transform)}.block-title-large{color:var(--f7-block-title-large-text-color);font-size:var(--f7-block-title-large-font-size);font-weight:var(--f7-block-title-large-font-weight);line-height:var(--f7-block-title-large-line-height);text-transform:var(--f7-block-title-large-text-transform)}.block>.block-title:first-child,.list>.block-title:first-child{margin-left:0;margin-right:0;margin-top:0}.block-header{color:var(--f7-block-header-text-color);font-size:var(--f7-block-header-font-size);margin-bottom:var(--f7-block-header-margin);margin-top:var(--f7-block-margin-vertical)}.block-header+.block,.block-header+.card,.block-header+.list,.block-header+.timeline{margin-top:var(--f7-block-header-margin)}.block-footer{color:var(--f7-block-footer-text-color);font-size:var(--f7-block-footer-font-size);margin-bottom:var(--f7-block-margin-vertical);margin-top:var(--f7-block-footer-margin)}.block-footer,.block-header{padding-bottom:0;padding-left:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));padding-top:0}.block-footer h1:first-child,.block-footer h2:first-child,.block-footer h3:first-child,.block-footer h4:first-child,.block-footer p:first-child,.block-footer ul:first-child,.block-header h1:first-child,.block-header h2:first-child,.block-header h3:first-child,.block-header h4:first-child,.block-header p:first-child,.block-header ul:first-child{margin-top:0}.block-footer h1:last-child,.block-footer h2:last-child,.block-footer h3:last-child,.block-footer h4:last-child,.block-footer p:last-child,.block-footer ul:last-child,.block-header h1:last-child,.block-header h2:last-child,.block-header h3:last-child,.block-header h4:last-child,.block-header p:last-child,.block-header ul:last-child{margin-bottom:0}.block-footer h1:first-child:last-child,.block-footer h2:first-child:last-child,.block-footer h3:first-child:last-child,.block-footer h4:first-child:last-child,.block-footer p:first-child:last-child,.block-footer ul:first-child:last-child,.block-header h1:first-child:last-child,.block-header h2:first-child:last-child,.block-header h3:first-child:last-child,.block-header h4:first-child:last-child,.block-header p:first-child:last-child,.block-header ul:first-child:last-child{margin-bottom:0;margin-top:0}.block .block-header,.card .block-header,.list .block-header,.timeline .block-header{margin-top:0}.block .block-footer,.card .block-footer,.list .block-footer,.timeline .block-footer{margin-bottom:0}.block+.block-footer,.card+.block-footer,.list+.block-footer,.timeline+.block-footer{margin-top:calc((var(--f7-block-margin-vertical) - var(--f7-block-footer-margin))*-1)}.block+.block-footer{margin-bottom:var(--f7-block-margin-vertical)}.block .block-footer,.block .block-header{padding:0}.block.inset,.ios .block.inset-ios,.md .block.inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block-strong.inset:after,.block-strong.inset:before,.ios .block-strong-ios.inset-ios:after,.ios .block-strong-ios.inset-ios:before,.ios .block-strong-ios.inset:after,.ios .block-strong-ios.inset:before,.ios .block-strong.inset-ios:after,.ios .block-strong.inset-ios:before,.md .block-strong-md.inset-md:after,.md .block-strong-md.inset-md:before,.md .block-strong-md.inset:after,.md .block-strong-md.inset:before,.md .block-strong.inset-md:after,.md .block-strong.inset-md:before{display:none!important}@media (min-width:480px){.block.xsmall-inset,.ios .block.xsmall-inset-ios,.md .block.xsmall-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.xsmall-inset:after,.block.xsmall-inset:before,.ios .block.xsmall-inset-ios:after,.ios .block.xsmall-inset-ios:before,.md .block.xsmall-inset-md:after,.md .block.xsmall-inset-md:before{display:none!important}.block.xsmall-inset.block-outline,.ios .block.xsmall-inset-ios.block-outline,.ios .block.xsmall-inset-ios.block-outline-ios,.md .block.xsmall-inset-md.block-outline,.md .block.xsmall-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:568px){.block.small-inset,.ios .block.small-inset-ios,.md .block.small-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.small-inset:after,.block.small-inset:before,.ios .block.small-inset-ios:after,.ios .block.small-inset-ios:before,.md .block.small-inset-md:after,.md .block.small-inset-md:before{display:none!important}.block.small-inset.block-outline,.ios .block.small-inset-ios.block-outline,.ios .block.small-inset-ios.block-outline-ios,.md .block.small-inset-md.block-outline,.md .block.small-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:768px){.block.medium-inset,.ios .block.medium-inset-ios,.md .block.medium-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.medium-inset:after,.block.medium-inset:before,.ios .block.medium-inset-ios:after,.ios .block.medium-inset-ios:before,.md .block.medium-inset-md:after,.md .block.medium-inset-md:before{display:none!important}.block.medium-inset.block-outline,.ios .block.medium-inset-ios.block-outline,.ios .block.medium-inset-ios.block-outline-ios,.md .block.medium-inset-md.block-outline,.md .block.medium-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:1024px){.block.large-inset,.ios .block.large-inset-ios,.md .block.large-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.large-inset:after,.block.large-inset:before,.ios .block.large-inset-ios:after,.ios .block.large-inset-ios:before,.md .block.large-inset-md:after,.md .block.large-inset-md:before{display:none!important}.block.large-inset.block-outline,.ios .block.large-inset-ios.block-outline,.ios .block.large-inset-ios.block-outline-ios,.md .block.large-inset-md.block-outline,.md .block.large-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:1200px){.block.xlarge-inset,.ios .block.xlarge-inset-ios,.md .block.xlarge-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.xlarge-inset:after,.block.xlarge-inset:before,.ios .block.xlarge-inset-ios:after,.ios .block.xlarge-inset-ios:before,.md .block.xlarge-inset-md:after,.md .block.xlarge-inset-md:before{display:none!important}.block.xlarge-inset.block-outline,.ios .block.xlarge-inset-ios.block-outline,.ios .block.xlarge-inset-ios.block-outline-ios,.md .block.xlarge-inset-md.block-outline,.md .block.xlarge-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}:root{--f7-list-inset-side-margin:16px;--f7-list-item-padding-horizontal:16px;--f7-list-item-padding-vertical:8px;--f7-list-media-item-padding-horizontal:16px;--f7-list-item-text-max-lines:2;--f7-list-chevron-icon-font-size:20px;--f7-list-item-media-margin:16px;--f7-list-item-title-font-size:inherit;--f7-list-item-title-font-weight:400;--f7-list-item-title-line-height:inherit;--f7-list-item-title-white-space:nowrap;--f7-list-item-subtitle-font-weight:400;--f7-list-item-subtitle-line-height:inherit;--f7-list-item-text-font-weight:400;--f7-list-item-after-font-weight:400;--f7-list-item-after-line-height:inherit;--f7-list-item-header-font-size:12px;--f7-list-item-header-font-weight:400;--f7-list-item-header-line-height:1.2;--f7-list-item-footer-font-size:12px;--f7-list-item-footer-font-weight:400;--f7-list-item-footer-line-height:1.2;--f7-list-button-font-size:inherit;--f7-list-button-font-weight:400;--f7-list-button-text-align:center;--f7-list-group-title-line-height:inherit;--f7-menu-list-font-size:14px;--f7-menu-list-item-title-font-size:14px;--f7-menu-list-item-title-font-weight:500;--f7-menu-list-item-subtitle-font-size:14px;--f7-menu-list-item-text-font-size:14px;--f7-menu-list-item-after-font-size:14px;--f7-list-outline-border-color:rgba(0,0,0,0.22);--f7-list-chevron-icon-color:rgba(0,0,0,0.2)}:root .dark,:root.dark{--f7-list-button-border-color:rgba(255,255,255,0.15);--f7-list-outline-border-color:rgba(255,255,255,0.15);--f7-list-group-title-border-color:rgba(255,255,255,0.15);--f7-list-chevron-icon-color:rgba(255,255,255,0.3)}.ios{--f7-list-in-list-padding-left:30px;--f7-list-inset-border-radius:8px;--f7-list-margin-vertical:35px;--f7-list-font-size:17px;--f7-list-chevron-icon-area:20px;--f7-list-item-title-text-color:inherit;--f7-list-item-subtitle-text-color:inherit;--f7-list-link-pressed-bg-color:rgba(0,0,0,0.15);--f7-list-item-subtitle-font-size:15px;--f7-list-item-text-font-size:15px;--f7-list-item-text-line-height:21px;--f7-list-item-after-font-size:inherit;--f7-list-item-after-padding:5px;--f7-list-item-min-height:44px;--f7-list-item-media-icons-margin:5px;--f7-list-media-item-padding-vertical:10px;--f7-list-media-item-title-font-weight:600;--f7-list-button-border-color:rgba(0,0,0,0.22);--f7-list-group-title-border-color:rgba(0,0,0,0.22);--f7-list-group-title-height:31px;--f7-list-group-title-font-size:inherit;--f7-list-group-title-font-weight:400;--f7-menu-list-offset:8px;--f7-menu-list-border-radius:8px;--f7-menu-list-item-bg-color:transparent;--f7-menu-list-item-text-color:inherit;--f7-menu-list-item-min-height:44px;--f7-list-item-border-color:rgba(0,0,0,0.22);--f7-list-outline-inset-border-color:rgba(0,0,0,0.22);--f7-list-strong-bg-color:#fff;--f7-list-item-after-text-color:rgba(0,0,0,0.45);--f7-list-item-header-text-color:inherit;--f7-list-item-footer-text-color:rgba(0,0,0,0.45);--f7-list-item-text-text-color:rgba(0,0,0,0.45);--f7-list-group-title-text-color:rgba(0,0,0,0.45);--f7-list-group-title-bg-color:#f7f7f7;--f7-menu-list-item-selected-text-color:var(--f7-theme-color);--f7-menu-list-item-selected-bg-color:rgba(var(--f7-theme-color-rgb),0.15)}.ios .dark,.ios.dark{--f7-list-item-border-color:rgba(255,255,255,0.15);--f7-list-outline-inset-color:rgba(255,255,255,0.15);--f7-list-strong-bg-color:#1c1c1d;--f7-list-item-after-text-color:rgba(255,255,255,0.55);--f7-list-item-header-text-color:rgba(255,255,255,0.55);--f7-list-item-footer-text-color:rgba(255,255,255,0.55);--f7-list-item-text-text-color:rgba(255,255,255,0.55);--f7-list-group-title-text-color:rgba(255,255,255,0.55);--f7-list-group-title-bg-color:#232323;--f7-list-link-pressed-bg-color:rgba(255,255,255,0.08);--f7-menu-list-item-selected-text-color:inherit;--f7-menu-list-item-selected-bg-color:var(--f7-theme-color)}.md{--f7-list-in-list-padding-left:24px;--f7-list-inset-border-radius:16px;--f7-list-margin-vertical:32px;--f7-list-font-size:16px;--f7-list-chevron-icon-area:26px;--f7-list-item-subtitle-font-size:14px;--f7-list-item-text-font-size:14px;--f7-list-item-text-line-height:20px;--f7-list-item-after-font-size:14px;--f7-list-item-after-padding:8px;--f7-list-item-min-height:48px;--f7-list-item-media-icons-margin:8px;--f7-list-media-item-padding-vertical:12px;--f7-list-media-item-title-font-weight:500;--f7-list-button-border-color:transparent;--f7-list-group-title-border-color:transparent;--f7-list-group-title-height:48px;--f7-list-group-title-font-size:16px;--f7-list-group-title-font-weight:400;--f7-menu-list-offset:16px;--f7-menu-list-border-radius:999px;--f7-menu-list-item-min-height:56px;--f7-list-link-pressed-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-list-outline-inset-border-color:var(--f7-md-outline);--f7-list-item-border-color:var(--f7-md-outline);--f7-list-item-title-text-color:var(--f7-md-on-surface);--f7-list-item-subtitle-text-color:var(--f7-md-on-surface);--f7-list-group-title-bg-color:var(--f7-md-surface-2);--f7-list-group-title-text-color:var(--f7-md-on-surface-variant);--f7-list-strong-bg-color:var(--f7-md-surface-1);--f7-list-item-after-text-color:var(--f7-md-on-surface-variant);--f7-list-item-text-text-color:var(--f7-md-on-surface-variant);--f7-list-item-header-text-color:var(--f7-md-on-surface-variant);--f7-list-item-footer-text-color:var(--f7-md-on-surface-variant);--f7-menu-list-item-text-color:var(--f7-md-on-surface-variant);--f7-menu-list-item-bg-color:var(--f7-md-surface-1);--f7-menu-list-item-selected-text-color:var(--f7-md-on-secondary-container);--f7-menu-list-item-selected-bg-color:var(--f7-md-secondary-container)}:root{--f7-list-chevron-icon-left:"chevron_left";--f7-list-chevron-icon-right:"chevron_right"}.list{font-size:var(--f7-list-font-size);margin:var(--f7-list-margin-vertical) 0;position:relative;z-index:1}.ios .list-strong-ios ul,.list-strong ul,.md .list-strong-md ul{background:var(--f7-list-strong-bg-color)}.ios .list-outline-ios ul:before,.list-outline ul:before,.md .list-outline-md ul:before{background-color:var(--f7-list-outline-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.ios .list-outline-ios ul:after,.list-outline ul:after,.md .list-outline-md ul:after{background-color:var(--f7-list-outline-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .list-outline-ios.inset,.ios .list-outline-ios.inset-ios,.list-outline.inset,.md .list-outline-md.inset,.md .list-outline-md.inset-md{border:1px solid var(--f7-list-outline-inset-border-color)}.list ul{list-style:none;margin:0;padding:0;position:relative}.list ul ul{padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-list-in-list-padding-left))}.list ul ul:after,.list ul ul:before{display:none!important}.list .item-media,.list li{box-sizing:border-box;position:relative}.list .item-media{align-items:center;display:flex;flex-shrink:0;flex-wrap:nowrap;padding-bottom:var(--f7-list-item-padding-vertical);padding-top:var(--f7-list-item-padding-vertical)}.list .item-media+.item-inner{margin-right:var(--f7-list-item-media-margin)}.list .item-media i+i,.list .item-media i+img{margin-right:var(--f7-list-item-media-icons-margin)}.list .item-after{padding-right:var(--f7-list-item-after-padding)}.list .item-inner{align-items:center;align-self:stretch;box-sizing:border-box;display:flex;justify-content:space-between;min-height:calc(var(--f7-list-item-min-height));min-width:0;padding-bottom:var(--f7-list-item-padding-vertical);padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));padding-top:var(--f7-list-item-padding-vertical);position:relative;width:100%}.list .item-title{color:var(--f7-list-item-title-text-color);flex-shrink:1;font-size:var(--f7-list-item-title-font-size);font-weight:var(--f7-list-item-title-font-weight);line-height:var(--f7-list-item-title-line-height);max-width:100%;min-width:0;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:var(--f7-list-item-title-white-space)}.list .item-after{color:var(--f7-list-item-after-text-color);display:flex;flex-shrink:0;font-size:var(--f7-list-item-after-font-size);font-weight:var(--f7-list-item-after-font-weight);line-height:var(--f7-list-item-after-line-height);margin-right:auto;white-space:nowrap}.list .item-footer,.list .item-header{white-space:normal}.list .item-header{color:var(--f7-list-item-header-text-color);font-size:var(--f7-list-item-header-font-size);font-weight:var(--f7-list-item-header-font-weight);line-height:var(--f7-list-item-header-line-height)}.list .item-footer{color:var(--f7-list-item-footer-text-color);font-size:var(--f7-list-item-footer-font-size);font-weight:var(--f7-list-item-footer-font-weight);line-height:var(--f7-list-item-footer-line-height)}.list .item-link,.list .list-button,.list label.item-content{cursor:pointer;overflow:hidden;position:relative;transition-duration:.3s;transition-property:background-color,color;z-index:0}.list .item-link,.list .list-button{display:block}.list .item-link,.list label.item-content{color:inherit}.list .item-link.active-state,.list label.item-content.active-state{background-color:var(--f7-list-link-pressed-bg-color)}.list .item-link .item-inner{padding-left:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left))}.list .item-content{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;min-height:calc(var(--f7-list-item-min-height));padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.list .item-subtitle{color:var(--f7-list-item-subtitle-text-color);font-size:var(--f7-list-item-subtitle-font-size);font-weight:var(--f7-list-item-subtitle-font-weight);line-height:var(--f7-list-item-subtitle-line-height);max-width:100%;white-space:nowrap}.list .item-subtitle,.list .item-text{overflow:hidden;position:relative;text-overflow:ellipsis}.list .item-text{-webkit-line-clamp:var(--f7-list-item-text-max-lines);-webkit-box-orient:vertical;color:var(--f7-list-item-text-text-color);display:-webkit-box;font-size:var(--f7-list-item-text-font-size);font-weight:var(--f7-list-item-text-font-weight);line-height:var(--f7-list-item-text-line-height);max-height:calc(var(--f7-list-item-text-line-height)*var(--f7-list-item-text-max-lines))}.list .item-title-row{box-sizing:border-box;display:flex;justify-content:space-between;position:relative}.list .item-title-row .item-after{align-self:center}.list li:last-child .list-button:after,.list li:last-child li:last-child>.item-content>.item-inner:after,.list li:last-child li:last-child>.item-inner:after,.list li:last-child li:last-child>.item-link>.item-content>.item-inner:after,.list li:last-child li:last-child>.swipeout-content>.item-content>.item-inner:after,.list li:last-child>.item-content>.item-inner:after,.list li:last-child>.item-inner:after,.list li:last-child>.item-link>.item-content>.item-inner:after,.list li:last-child>.swipeout-content>.item-content>.item-inner:after{display:none!important}.list li li:last-child .item-inner:after,.list li:last-child li .item-inner:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.list-button{--f7-touch-ripple-color:var(--f7-link-touch-ripple-color,rgba(var(--f7-theme-color-rgb),0.25));color:var(--f7-list-button-text-color,var(--f7-theme-color));font-size:var(--f7-list-button-font-size);font-weight:var(--f7-list-button-font-weight);line-height:var(--f7-list-item-min-height);padding:0 var(--f7-list-item-padding-horizontal);text-align:var(--f7-list-button-text-align)}.ios .list-button.active-state{background-color:var(--f7-list-button-pressed-bg-color,rgba(var(--f7-theme-color-rgb),.15))}.md .list-button.active-state{background-color:var(--f7-list-button-pressed-bg-color,transparent)}.ios .list-dividers-ios .list-button:after,.list-dividers .list-button:after,.md .list-dividers-md .list-button:after{background-color:var(--f7-list-button-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.list-button[class*=color-]{--f7-list-button-text-color:var(--f7-theme-color)}.simple-list li{align-content:center;align-items:center;box-sizing:border-box;display:flex;height:var(--f7-list-item-min-height);justify-content:space-between;line-height:var(--f7-list-item-min-height);max-width:100%;padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));position:relative;text-overflow:ellipsis;white-space:nowrap}.simple-list li:after{left:var(--f7-list-item-padding-horizontal);left:0;right:0;right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));width:auto}.simple-list li:last-child:after{display:none!important}.links-list li{z-index:1}.links-list a{align-content:center;align-items:center;box-sizing:border-box;color:inherit;display:block;display:flex;height:var(--f7-list-item-min-height);justify-content:space-between;max-width:100%;overflow:hidden;position:relative;text-overflow:ellipsis;transition-duration:.3s;transition-property:background-color;white-space:nowrap}.links-list a .ripple-wave{z-index:0}.links-list a:after{width:auto}.links-list a.active-state{background-color:var(--f7-list-link-pressed-bg-color)}.links-list a{padding-left:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.links-list a:after{left:0;right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.links-list li:last-child a:after{display:none!important}.ios .list-dividers-ios .item-inner:after,.ios .list-dividers-ios.links-list a:after,.ios .list-dividers-ios.simple-list li:after,.list-dividers .item-inner:after,.list-dividers.links-list a:after,.list-dividers.simple-list li:after,.md .list-dividers-md .item-inner:after,.md .list-dividers-md.links-list a:after,.md .list-dividers-md.simple-list li:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item>.item-link,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li>.item-link{border-radius:16px;margin-left:calc(var(--f7-list-item-padding-horizontal)/2);margin-right:calc(var(--f7-list-item-padding-horizontal)/2)}.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item>.item-link>.item-content,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li>.item-link>.item-content{margin-left:0;margin-right:0}.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content{padding-right:calc(var(--f7-list-item-padding-horizontal)/2 + var(--f7-safe-area-right))}.media-list,li.media-item{--f7-list-item-padding-vertical:var(--f7-list-media-item-padding-vertical);--f7-list-item-padding-horizontal:var(--f7-list-media-item-padding-horizontal)}.media-list .item-title,li.media-item .item-title{font-weight:var(--f7-list-media-item-title-font-weight,var(--f7-list-item-title-font-weight,inherit))}.media-list .item-inner,li.media-item .item-inner{align-self:stretch;display:block}.media-list .item-media img,li.media-item .item-media img{display:block}.media-list .item-link .item-inner,li.media-item .item-link .item-inner{padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left))}.media-list .item-link .item-title-row,li.media-item .item-link .item-title-row{padding-left:calc(var(--f7-list-chevron-icon-area))}.media-list .chevron-center .item-link .item-inner,.media-list .item-link.chevron-center .item-inner,.media-list.chevron-center .item-link .item-inner,li.media-item .chevron-center .item-link .item-inner,li.media-item .item-link.chevron-center .item-inner,li.media-item.chevron-center .item-link .item-inner{padding-left:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left))}.media-list .chevron-center .item-title-row,.media-list.chevron-center .item-title-row,li.media-item .chevron-center .item-title-row,li.media-item.chevron-center .item-title-row{padding-left:0}.links-list a:before,.list .item-link .item-inner:before,.media-list .chevron-center .item-link .item-inner:before,.media-list .item-link .item-title-row:before,.media-list .item-link.chevron-center .item-inner:before,.media-list.chevron-center .item-link .item-inner:before,li.media-item .chevron-center .item-link .item-inner:before,li.media-item .item-link .item-title-row:before,li.media-item .item-link.chevron-center .item-inner:before,li.media-item.chevron-center .item-link .item-inner:before{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-list-chevron-icon-color);content:var(--f7-list-chevron-icon-left);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-size:var(--f7-list-chevron-icon-font-size);font-style:normal;font-weight:400;height:100%;height:14px;left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));letter-spacing:normal;line-height:1;line-height:14px;margin-top:-7px;pointer-events:none;position:absolute;text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;white-space:nowrap;width:100%;width:8px}.media-list .chevron-center .item-title-row:before,.media-list .item-link .item-inner:before,.media-list.chevron-center .item-title-row:before,li.media-item .chevron-center .item-title-row:before,li.media-item .item-link .item-inner:before,li.media-item.chevron-center .item-title-row:before{display:none}.media-list .item-link .item-title-row:before,li.media-item .item-link .item-title-row:before{left:0}.list-group ul:after,.list-group ul:before{z-index:25!important}.list-group+.list-group ul:before{display:none!important}.list-group-title,li.list-group-title{align-content:center;align-items:center;background-color:var(--f7-list-group-title-bg-color);box-sizing:border-box;color:var(--f7-list-group-title-text-color);display:flex;font-size:var(--f7-list-group-title-font-size);font-weight:var(--f7-list-group-title-font-weight);height:var(--f7-list-group-title-height);line-height:var(--f7-list-group-title-line-height);margin-top:-1px;max-width:100%;overflow:hidden;padding-bottom:0;padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));padding-top:0;position:relative;text-overflow:ellipsis;white-space:nowrap;z-index:15}.list-group-title:before,li.list-group-title:before{background-color:var(--f7-list-group-title-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.list-group-title:after,li.list-group-title:after{display:none!important}.list-group>.list-group-title,.list-group>ul>.list-group-title{margin-top:0;position:sticky;top:0;z-index:20}.page-with-navbar-large .list-group>.list-group-title,.page-with-navbar-large .list-group>ul>.list-group-title{top:calc(var(--f7-navbar-large-title-height)*-1)}.ios .list.inset-ios,.list.inset,.md .list.inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.inset-ios .block-title,.list.inset .block-title,.md .list.inset-md .block-title{margin-left:0;margin-right:0}.ios .list.inset-ios ul,.list.inset ul,.md .list.inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.inset-ios ul:after,.ios .list.inset-ios ul:before,.list.inset ul:after,.list.inset ul:before,.md .list.inset-md ul:after,.md .list.inset-md ul:before{display:none!important}.ios .list.inset-ios li.swipeout:first-child,.ios .list.inset-ios li:first-child>a,.list.inset li.swipeout:first-child,.list.inset li:first-child>a,.md .list.inset-md li.swipeout:first-child,.md .list.inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.inset-ios li.swipeout:last-child,.ios .list.inset-ios li:last-child>a,.list.inset li.swipeout:last-child,.list.inset li:last-child>a,.md .list.inset-md li.swipeout:last-child,.md .list.inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.inset-ios li.swipeout:first-child:last-child,.ios .list.inset-ios li:first-child:last-child>a,.list.inset li.swipeout:first-child:last-child,.list.inset li:first-child:last-child>a,.md .list.inset-md li.swipeout:first-child:last-child,.md .list.inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}@media (min-width:480px){.ios .list.xsmall-inset-ios,.list.xsmall-inset,.md .list.xsmall-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.xsmall-inset-ios .block-title,.list.xsmall-inset .block-title,.md .list.xsmall-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.xsmall-inset-ios ul,.list.xsmall-inset ul,.md .list.xsmall-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xsmall-inset-ios ul:after,.ios .list.xsmall-inset-ios ul:before,.list.xsmall-inset ul:after,.list.xsmall-inset ul:before,.md .list.xsmall-inset-md ul:after,.md .list.xsmall-inset-md ul:before{display:none!important}.ios .list.xsmall-inset-ios li:first-child>a,.list.xsmall-inset li:first-child>a,.md .list.xsmall-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.xsmall-inset-ios li:last-child>a,.list.xsmall-inset li:last-child>a,.md .list.xsmall-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.xsmall-inset-ios li:first-child:last-child>a,.list.xsmall-inset li:first-child:last-child>a,.md .list.xsmall-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xsmall-inset-ios.list-outline ul,.ios .list.xsmall-inset-ios.list-outline-ios ul,.list.xsmall-inset.list-outline ul,.md .list.xsmall-inset-md.list-outline ul,.md .list.xsmall-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:568px){.ios .list.small-inset-ios,.list.small-inset,.md .list.small-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.small-inset-ios .block-title,.list.small-inset .block-title,.md .list.small-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.small-inset-ios ul,.list.small-inset ul,.md .list.small-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.small-inset-ios ul:after,.ios .list.small-inset-ios ul:before,.list.small-inset ul:after,.list.small-inset ul:before,.md .list.small-inset-md ul:after,.md .list.small-inset-md ul:before{display:none!important}.ios .list.small-inset-ios li:first-child>a,.list.small-inset li:first-child>a,.md .list.small-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.small-inset-ios li:last-child>a,.list.small-inset li:last-child>a,.md .list.small-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.small-inset-ios li:first-child:last-child>a,.list.small-inset li:first-child:last-child>a,.md .list.small-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.small-inset-ios.list-outline ul,.ios .list.small-inset-ios.list-outline-ios ul,.list.small-inset.list-outline ul,.md .list.small-inset-md.list-outline ul,.md .list.small-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:768px){.ios .list.medium-inset-ios,.list.medium-inset,.md .list.medium-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.medium-inset-ios .block-title,.list.medium-inset .block-title,.md .list.medium-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.medium-inset-ios ul,.list.medium-inset ul,.md .list.medium-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.medium-inset-ios ul:after,.ios .list.medium-inset-ios ul:before,.list.medium-inset ul:after,.list.medium-inset ul:before,.md .list.medium-inset-md ul:after,.md .list.medium-inset-md ul:before{display:none!important}.ios .list.medium-inset-ios li:first-child>a,.list.medium-inset li:first-child>a,.md .list.medium-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.medium-inset-ios li:last-child>a,.list.medium-inset li:last-child>a,.md .list.medium-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.medium-inset-ios li:first-child:last-child>a,.list.medium-inset li:first-child:last-child>a,.md .list.medium-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.medium-inset-ios.list-outline ul,.ios .list.medium-inset-ios.list-outline-ios ul,.list.medium-inset.list-outline ul,.md .list.medium-inset-md.list-outline ul,.md .list.medium-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:1024px){.ios .list.large-inset-ios,.list.large-inset,.md .list.large-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.large-inset-ios .block-title,.list.large-inset .block-title,.md .list.large-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.large-inset-ios ul,.list.large-inset ul,.md .list.large-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.large-inset-ios ul:after,.ios .list.large-inset-ios ul:before,.list.large-inset ul:after,.list.large-inset ul:before,.md .list.large-inset-md ul:after,.md .list.large-inset-md ul:before{display:none!important}.ios .list.large-inset-ios li:first-child>a,.list.large-inset li:first-child>a,.md .list.large-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.large-inset-ios li:last-child>a,.list.large-inset li:last-child>a,.md .list.large-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.large-inset-ios li:first-child:last-child>a,.list.large-inset li:first-child:last-child>a,.md .list.large-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.large-inset-ios.list-outline ul,.ios .list.large-inset-ios.list-outline-ios ul,.list.large-inset.list-outline ul,.md .list.large-inset-md.list-outline ul,.md .list.large-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:1200px){.ios .list.xlarge-inset-ios,.list.xlarge-inset,.md .list.xlarge-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.xlarge-inset-ios .block-title,.list.xlarge-inset .block-title,.md .list.xlarge-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.xlarge-inset-ios ul,.list.xlarge-inset ul,.md .list.xlarge-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xlarge-inset-ios ul:after,.ios .list.xlarge-inset-ios ul:before,.list.xlarge-inset ul:after,.list.xlarge-inset ul:before,.md .list.xlarge-inset-md ul:after,.md .list.xlarge-inset-md ul:before{display:none!important}.ios .list.xlarge-inset-ios li:first-child>a,.list.xlarge-inset li:first-child>a,.md .list.xlarge-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.xlarge-inset-ios li:last-child>a,.list.xlarge-inset li:last-child>a,.md .list.xlarge-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.xlarge-inset-ios li:first-child:last-child>a,.list.xlarge-inset li:first-child:last-child>a,.md .list.xlarge-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xlarge-inset-ios.list-outline ul,.ios .list.xlarge-inset-ios.list-outline-ios ul,.list.xlarge-inset.list-outline ul,.md .list.xlarge-inset-md.list-outline ul,.md .list.xlarge-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}.list .no-chevron,.list.no-chevron,.menu-list{--f7-list-chevron-icon-color:transparent;--f7-list-chevron-icon-area:0px}.menu-list{--f7-list-font-size:var(--f7-menu-list-font-size);--f7-list-item-title-font-size:var(--f7-menu-list-item-title-font-size);--f7-list-item-title-font-weight:var(--f7-menu-list-item-title-font-weight);--f7-list-item-subtitle-font-size:var(--f7-menu-list-item-subtitle-font-size);--f7-list-item-text-font-size:var(--f7-menu-list-item-text-font-size);--f7-list-item-after-font-size:var(--f7-menu-list-item-after-font-size);--f7-list-item-min-height:var(--f7-menu-list-item-min-height)}.menu-list .item-after,.menu-list .item-footer,.menu-list .item-header,.menu-list .item-subtitle,.menu-list .item-text,.menu-list .item-title{transition-duration:.3s}.menu-list li:not(.list-group-title){padding-bottom:4px;padding-top:4px}.menu-list li:not(.list-group-title):first-child{padding-top:4px}.menu-list li:not(.list-group-title):last-child{padding-bottom:4px}.menu-list .item-link{background-color:var(--f7-menu-list-item-bg-color);border-radius:var(--f7-menu-list-border-radius)!important;color:var(--f7-menu-list-item-text-color);margin-left:var(--f7-menu-list-offset);margin-right:var(--f7-menu-list-offset)}.menu-list .item-inner:after{display:none}.menu-list .item-selected .item-link,.menu-list .item-selected.item-link,.menu-list .tab-link-active .item-link,.menu-list .tab-link-active.item-link{background-color:var(--f7-menu-list-item-selected-bg-color);color:var(--f7-menu-list-item-selected-text-color)}.menu-list .item-selected .item-after,.menu-list .item-selected .item-footer,.menu-list .item-selected .item-header,.menu-list .item-selected .item-subtitle,.menu-list .item-selected .item-text,.menu-list .item-selected .item-title{color:var(--f7-menu-list-item-selected-text-color)}.ios .item-link.active-state .item-inner:after,.ios .links-list a.active-state:after,.ios .list-button.active-state:after{background-color:initial}.ios .links-list a.active-state,.ios .list .item-link.active-state,.ios .list .list-button.active-state{transition-duration:0ms}.md .menu-list .item-link.active-state{background-color:var(--f7-menu-list-item-bg-color)}:root{--f7-badge-text-color:#fff;--f7-badge-bg-color:#8e8e93;--f7-badge-in-icon-size:16px;--f7-badge-in-icon-font-size:10px;--f7-badge-font-weight:normal;--f7-badge-font-size:12px}.ios{--f7-badge-padding:0 4px;--f7-badge-size:20px;--f7-badge-font-weight:600}.md{--f7-badge-padding:2px 6px;--f7-badge-size:20px;--f7-badge-font-weight:500}.badge{align-content:center;align-items:center;background:var(--f7-badge-bg-color);border-radius:var(--f7-badge-size);box-sizing:border-box;color:var(--f7-badge-text-color);display:inline-flex;font-size:var(--f7-badge-font-size);font-weight:var(--f7-badge-font-weight);height:var(--f7-badge-size);justify-content:center;min-width:var(--f7-badge-size);padding:var(--f7-badge-padding);position:relative;text-align:center;vertical-align:middle}.f7-icons .badge,.framework7-icons .badge,.icon .badge,.material-icons .badge{--f7-badge-font-size:var(--f7-badge-in-icon-font-size);--f7-badge-size:var(--f7-badge-in-icon-size);--f7-badge-padding:0px 2px;font-family:var(--f7-font-family);left:100%;margin-left:-10px;position:absolute;top:-2px}.badge[class*=color-]{--f7-badge-bg-color:var(--f7-theme-color)}:root{--f7-button-font-size:14px;--f7-button-min-width:32px;--f7-button-bg-color:transparent;--f7-button-border-width:0px;--f7-button-raised-box-shadow:0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);--f7-button-raised-pressed-box-shadow:0 3px 6px rgba(0,0,0,0.16),0 3px 6px rgba(0,0,0,0.23);--f7-segmented-raised-divider-color:rgba(0,0,0,0.1);--f7-segmented-strong-padding:2px;--f7-segmented-strong-between-buttons:4px;--f7-segmented-strong-button-font-weight:500;--f7-segmented-strong-button-active-box-shadow:0px 2px 2px rgba(0,0,0,0.25);--f7-segmented-strong-button-text-color:#000;--f7-segmented-strong-button-hover-bg-color:rgba(0,0,0,0.04);--f7-segmented-strong-button-active-text-color:#000;--f7-segmented-strong-button-active-bg-color:#fff}:root .dark,:root.dark{--f7-segmented-strong-button-hover-bg-color:rgba(255,255,255,0.02);--f7-segmented-strong-button-active-bg-color:rgba(255,255,255,0.14);--f7-segmented-strong-button-text-color:#fff;--f7-segmented-strong-button-active-text-color:#fff}.ios{--f7-button-fill-text-color:#fff;--f7-button-text-transform:uppercase;--f7-button-height:28px;--f7-button-padding-horizontal:10px;--f7-button-border-radius:4px;--f7-button-font-weight:600;--f7-button-letter-spacing:0;--f7-button-outline-border-width:2px;--f7-button-large-text-transform:uppercase;--f7-button-large-height:44px;--f7-button-large-font-size:17px;--f7-button-large-font-weight:500;--f7-button-small-outline-border-width:2px;--f7-button-small-text-transform:uppercase;--f7-button-small-height:26px;--f7-button-small-font-size:13px;--f7-button-small-font-weight:600;--f7-segmented-strong-button-text-transform:none;--f7-segmented-strong-button-active-font-weight:600;--f7-button-tonal-bg-color:rgba(var(--f7-theme-color-rgb),0.15);--f7-button-tonal-pressed-bg-color:rgba(var(--f7-theme-color-rgb),0.25);--f7-button-tonal-text-color:var(--f7-theme-color);--f7-segmented-strong-bg-color:rgba(0,0,0,0.07);--f7-segmented-strong-button-pressed-bg-color:rgba(0,0,0,0.07)}.ios .dark,.ios.dark{--f7-segmented-strong-bg-color:rgba(255,255,255,0.1);--f7-segmented-strong-button-pressed-bg-color:rgba(255,255,255,0.04)}.md{--f7-button-text-transform:none;--f7-button-height:40px;--f7-button-padding-horizontal:16px;--f7-button-border-radius:8px;--f7-button-font-weight:500;--f7-button-letter-spacing:normal;--f7-button-outline-border-width:1px;--f7-button-large-text-transform:none;--f7-button-large-height:48px;--f7-button-large-font-size:14px;--f7-button-large-font-weight:500;--f7-button-small-text-transform:none;--f7-button-small-outline-border-width:1px;--f7-button-small-height:32px;--f7-button-small-font-size:14px;--f7-button-small-font-weight:500;--f7-segmented-strong-button-text-transform:none;--f7-segmented-strong-button-active-font-weight:500;--f7-segmented-strong-button-pressed-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-button-fill-pressed-bg-color:transparent;--f7-button-fill-text-color:var(--f7-md-on-primary);--f7-button-outline-border-color:var(--f7-md-outline);--f7-segmented-strong-bg-color:var(--f7-md-surface-variant);--f7-button-tonal-bg-color:var(--f7-md-secondary-container);--f7-button-tonal-pressed-bg-color:transparent;--f7-button-tonal-text-color:var(--f7-md-on-secondary-container)}button{width:100%}.button,button{-webkit-appearance:none;appearance:none}.button{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25);align-items:center;background:none;background-color:var(--f7-button-bg-color);border:var(--f7-button-border-width,0) solid var(--f7-button-border-color,var(--f7-theme-color));border-radius:var(--f7-button-border-radius);box-shadow:var(--f7-button-box-shadow);box-sizing:border-box;color:var(--f7-button-text-color,var(--f7-theme-color));cursor:pointer;display:flex;font-family:inherit;font-size:var(--f7-button-font-size);font-weight:var(--f7-button-font-weight);height:var(--f7-button-height);justify-content:center;letter-spacing:var(--f7-button-letter-spacing);line-height:calc(var(--f7-button-height) - var(--f7-button-border-width, 0)*2);margin:0;min-width:var(--f7-button-min-width);outline:0;overflow:hidden;padding:var(--f7-button-padding-vertical,0) var(--f7-button-padding-horizontal);position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:var(--f7-button-text-transform);vertical-align:middle;white-space:nowrap}.button.active-state{color:var(--f7-button-pressed-text-color,var(--f7-button-text-color,var(--f7-theme-color)))}input[type=button].button,input[type=reset].button,input[type=submit].button{width:100%}.button>i+span,.button>span+span,.button>span~i{margin-right:4px}.navbar .button,.searchbar .button,.subnavbar .button,.toolbar .button{color:var(--f7-button-text-color,var(--f7-theme-color))}.button-round,.ios .button-round-ios,.md .button-round-md{--f7-button-border-radius:var(--f7-button-height)}.button-active,.button-fill,.button.tab-link-active,.ios .button-fill-ios,.md .button-fill-md{--f7-button-bg-color:var(--f7-button-fill-bg-color,var(--f7-theme-color));--f7-button-text-color:var(--f7-button-fill-text-color,#fff);--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.ios .button-active.color-white,.ios .button-fill.color-white,.ios .button.tab-link-active.color-white,.ios .color-white .button-active,.ios .color-white .button-fill,.ios .color-white .button.tab-link-active,.ios .color-white .ios .button-fill-ios,.ios .color-white .md .button-fill-md,.ios .ios .button-fill-ios.color-white,.ios .md .button-fill-md.color-white{--f7-button-text-color:#000}.button-fill,.ios .button-fill-ios,.md .button-fill-md{--f7-button-pressed-bg-color:var(--f7-button-fill-pressed-bg-color)}.button-active,.button.tab-link-active{--f7-button-pressed-bg-color:var(--f7-button-bg-color)}.button-outline,.ios .button-outline-ios,.md .button-outline-md{--f7-button-border-color:var(--f7-button-outline-border-color,var(--f7-theme-color));--f7-button-border-width:var(--f7-button-outline-border-width)}.button-tonal,.ios .button-tonal-ios,.md .button-tonal-md{--f7-button-bg-color:var(--f7-button-tonal-bg-color);--f7-button-text-color:var(--f7-button-tonal-text-color);--f7-button-pressed-bg-color:var(--f7-button-tonal-pressed-bg-color)}.button-large,.ios .button-large-ios,.md .button-large-md{--f7-button-height:var(--f7-button-large-height);--f7-button-font-size:var(--f7-button-large-font-size);--f7-button-font-weight:var(--f7-button-large-font-weight);--f7-button-text-transform:var(--f7-button-large-text-transform)}.button-small,.ios .button-small-ios,.md .button-small-md{--f7-button-outline-border-width:var(--f7-button-small-outline-border-width);--f7-button-height:var(--f7-button-small-height);--f7-button-font-size:var(--f7-button-small-font-size);--f7-button-font-weight:var(--f7-button-small-font-weight);--f7-button-text-transform:var(--f7-button-small-text-transform)}.ios .button-small-ios.button-fill,.ios .button-small.button-fill,.ios .button-small.button-fill-ios{--f7-button-border-width:var(--f7-button-small-outline-border-width);--f7-button-pressed-text-color:var(--f7-theme-color);--f7-button-pressed-bg-color:transparent}.segmented{align-self:center;border-radius:var(--f7-button-border-radius);box-shadow:var(--f7-button-box-shadow);box-sizing:border-box;display:flex;flex-wrap:nowrap}.segmented .button,.segmented button{border-radius:0;flex-shrink:1;min-width:0;width:100%}.segmented .button:first-child{border-radius:0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0}.segmented .button.button-outline:nth-child(n+2),.segmented .button:not(.button-outline):first-child{border-right:none}.segmented .button:last-child{border-radius:var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius)}.segmented .button-round:first-child{border-radius:0 var(--f7-button-height) var(--f7-button-height) 0}.segmented .button-round:last-child{border-radius:var(--f7-button-height) 0 0 var(--f7-button-height)}.segmented .button:first-child:last-child{border-radius:var(--f7-button-border-radius)}.ios .segmented-raised-ios,.md .segmented-raised-md,.segmented-raised{box-shadow:var(--f7-button-raised-box-shadow)}.ios .segmented-raised-ios .button:not(.button-outline),.md .segmented-raised-md .button:not(.button-outline),.segmented-raised .button:not(.button-outline){border-right:1px solid var(--f7-segmented-raised-divider-color)}.button-raised,.ios .button-raised-ios,.md .button-raised-md{--f7-button-box-shadow:var(--f7-button-raised-box-shadow)}.button-raised.active-state,.ios .button-raised-ios.active-state,.md .button-raised-md.active-state{--f7-button-box-shadow:var(--f7-button-raised-pressed-box-shadow)}.ios .segmented-strong-ios,.md .segmented-strong-md,.segmented-strong{--f7-button-bg-color:transparent;--f7-button-hover-bg-color:var(--f7-segmented-strong-button-hover-bg-color);--f7-button-text-color:var(--f7-segmented-strong-button-text-color);--f7-button-font-weight:var(--f7-segmented-strong-button-font-weight);--f7-button-text-transform:var(--f7-segmented-strong-button-text-transform);--f7-button-pressed-bg-color:var(--f7-segmented-strong-button-pressed-bg-color);background:var(--f7-segmented-strong-bg-color);border-radius:calc(var(--f7-button-border-radius) + 2px);box-shadow:none;overflow:hidden;padding:var(--f7-segmented-strong-padding);position:relative}.ios .segmented-strong-ios .button,.md .segmented-strong-md .button,.segmented-strong .button{transform:translateZ(0);z-index:1}.ios .segmented-strong-ios .button,.ios .segmented-strong-ios .button:first-child,.ios .segmented-strong-ios .button:last-child,.md .segmented-strong-md .button,.md .segmented-strong-md .button:first-child,.md .segmented-strong-md .button:last-child,.segmented-strong .button,.segmented-strong .button:first-child,.segmented-strong .button:last-child{border-radius:var(--f7-button-border-radius)}.ios .segmented-strong-ios .button+.button,.md .segmented-strong-md .button+.button,.segmented-strong .button+.button{margin-right:var(--f7-segmented-strong-between-buttons)}.ios .segmented-strong-ios .button.button-active,.ios .segmented-strong-ios .button.tab-link-active,.md .segmented-strong-md .button.button-active,.md .segmented-strong-md .button.tab-link-active,.segmented-strong .button.button-active,.segmented-strong .button.tab-link-active{--f7-button-hover-bg-color:transparent;--f7-button-bg-color:transparent;--f7-button-text-color:var(--f7-segmented-strong-button-active-text-color);--f7-button-font-weight:var(--f7-segmented-strong-button-active-font-weight)}.ios .segmented-strong-ios .segmented-highlight,.md .segmented-strong-md .segmented-highlight,.segmented-strong .segmented-highlight{--f7-segmented-highlight-num:1;--f7-segmented-highlight-active:0;--f7-segmented-highlight-padding:calc(var(--f7-segmented-strong-padding)*2);--f7-segmented-highlight-between:var(--f7-segmented-strong-between-buttons);--f7-segmented-highlight-width:calc((100% - var(--f7-segmented-highlight-padding) - var(--f7-segmented-highlight-between)*(var(--f7-segmented-highlight-num) - 1))/var(--f7-segmented-highlight-num));background-color:var(--f7-segmented-strong-button-active-bg-color);border-radius:var(--f7-button-border-radius);box-shadow:var(--f7-segmented-strong-button-active-box-shadow);height:calc(100% - var(--f7-segmented-strong-padding)*2);left:var(--f7-segmented-strong-padding);position:absolute;top:var(--f7-segmented-strong-padding);transform:translateX(calc(var(--f7-segmented-highlight-active)*100% + var(--f7-segmented-highlight-active)*var(--f7-segmented-highlight-between)));transition:.2s;width:var(--f7-segmented-highlight-width);z-index:0}.button:nth-child(2)~.segmented-highlight{--f7-segmented-highlight-num:2}.button:nth-child(3)~.segmented-highlight{--f7-segmented-highlight-num:3}.button:nth-child(4)~.segmented-highlight{--f7-segmented-highlight-num:4}.button:nth-child(5)~.segmented-highlight{--f7-segmented-highlight-num:5}.button:nth-child(6)~.segmented-highlight{--f7-segmented-highlight-num:6}.button:nth-child(7)~.segmented-highlight{--f7-segmented-highlight-num:7}.button:nth-child(8)~.segmented-highlight{--f7-segmented-highlight-num:8}.button:nth-child(9)~.segmented-highlight{--f7-segmented-highlight-num:9}.button:nth-child(10)~.segmented-highlight{--f7-segmented-highlight-num:10}.button-active:nth-child(2)~.segmented-highlight,.tab-link-active:nth-child(2)~.segmented-highlight{--f7-segmented-highlight-active:1}.button-active:nth-child(3)~.segmented-highlight,.tab-link-active:nth-child(3)~.segmented-highlight{--f7-segmented-highlight-active:2}.button-active:nth-child(4)~.segmented-highlight,.tab-link-active:nth-child(4)~.segmented-highlight{--f7-segmented-highlight-active:3}.button-active:nth-child(5)~.segmented-highlight,.tab-link-active:nth-child(5)~.segmented-highlight{--f7-segmented-highlight-active:4}.button-active:nth-child(6)~.segmented-highlight,.tab-link-active:nth-child(6)~.segmented-highlight{--f7-segmented-highlight-active:5}.button-active:nth-child(7)~.segmented-highlight,.tab-link-active:nth-child(7)~.segmented-highlight{--f7-segmented-highlight-active:6}.button-active:nth-child(8)~.segmented-highlight,.tab-link-active:nth-child(8)~.segmented-highlight{--f7-segmented-highlight-active:7}.button-active:nth-child(9)~.segmented-highlight,.tab-link-active:nth-child(9)~.segmented-highlight{--f7-segmented-highlight-active:8}.button-active:nth-child(10)~.segmented-highlight,.tab-link-active:nth-child(10)~.segmented-highlight{--f7-segmented-highlight-active:9}.ios .segmented-round-ios,.ios .segmented-round-ios .segmented-highlight,.md .segmented-round-md,.md .segmented-round-md .segmented-highlight,.segmented-round,.segmented-round .segmented-highlight{border-radius:var(--f7-button-height)}.subnavbar .segmented{width:100%}.button-preloader{--f7-preloader-color:var(--f7-button-text-color,var(--f7-theme-color));position:relative}.button-preloader:not(.button-large){--f7-preloader-size:calc(var(--f7-button-height) - 6px)}.button-preloader.button-fill{--f7-preloader-color:#fff}.button-preloader>span:not(.preloader){align-content:center;align-items:center;display:inline-flex;justify-content:center;transform:scale(1);transition:.2s}.button-preloader>.preloader{left:50%;margin-left:calc(var(--f7-preloader-size)*-1/2);margin-top:calc(var(--f7-preloader-size)*-1/2);opacity:0;position:absolute;top:50%;transition:.2s;transition-property:opacity;visibility:hidden}.button-preloader.button-loading>span:not(.preloader){opacity:0;transform:scale(0)}.button-preloader.button-loading>.preloader{opacity:1;visibility:visible}.ios .button{transition-duration:.1s}.ios .button.active-state{background-color:var(--f7-button-pressed-bg-color,rgba(var(--f7-theme-color-rgb),.15))}.ios .button-fill,.ios .button-fill-ios{--f7-button-pressed-bg-color:var(--f7-button-fill-pressed-bg-color,var(--f7-theme-color-tint))}.ios .button-small,.ios .button-small-ios{transition-duration:.2s}.md .button{transform:translateZ(0);transition-duration:.3s}.md .button-fill,.md .button-fill-md{--f7-button-pressed-bg-color:var(--f7-button-fill-pressed-bg-color,transparent)}:root{--f7-touch-ripple-black:rgba(0,0,0,0.1);--f7-touch-ripple-white:rgba(255,255,255,0.15);--f7-touch-ripple-color:var(--f7-touch-ripple-black)}.dark{--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.actions-button,.button,.checkbox,.dialog-button,.fab a,.item-link,.link,.list-button,.radio,.ripple,.speed-dial-buttons a,.tab-link{-webkit-user-select:none;user-select:none}.ripple-wave{animation:touch-ripple-in .2s forwards;border-radius:50%;font-size:0;left:0;margin:0;padding:0;pointer-events:none;position:absolute!important;top:0;transform:translateZ(0) scale(0);z-index:-1}.ripple-wave,.ripple-wave.ripple-wave-inset{background-color:var(--f7-touch-ripple-color)}.ripple-wave.ripple-wave-inset{background-image:none}.ripple-wave.ripple-wave-out{animation:touch-ripple-out .25s forwards!important;transform:var(--f7-ripple-transform)}.actions-button .ripple-wave,.button .ripple-wave,.dialog-button .ripple-wave,.fab a .ripple-wave,.item-checkbox .ripple-wave,.item-link .ripple-wave,.item-radio .ripple-wave,.links-list a .ripple-wave,.list label.item-content .ripple-wave,.list-button .ripple-wave,.list.accordion-list .accordion-item-toggle .ripple-wave,.photo-browser .toolbar .link .ripple-wave,.ripple-blur .ripple-wave,.stepper-button .ripple-wave,.stepper-button-minus .ripple-wave,.stepper-button-plus .ripple-wave,.tab-link .ripple-wave,button .ripple-wave{animation:touch-ripple-in-blurred .25s forwards;background-color:initial;background-image:radial-gradient(closest-side circle at 50% 50%,var(--f7-touch-ripple-color) 50%,rgba(255,255,255,0))}.checkbox .ripple-wave,.data-table .sortable-cell .ripple-wave,.radio .ripple-wave{z-index:0}[class*=ripple-color-]{--f7-touch-ripple-color:var(--f7-theme-color-ripple-color)}@keyframes touch-ripple-in-blurred{0%{transform:translateZ(0) scale(.5)}to{transform:var(--f7-ripple-transform)}}@keyframes touch-ripple-in{0%{transform:translateZ(0) scale(0)}to{transform:var(--f7-ripple-transform)}}@keyframes touch-ripple-out{0%{opacity:1}to{opacity:0}}.f7-icons,.material-icons{height:1em;width:1em}i.icon{background-position:50%;background-repeat:no-repeat;background-size:100% auto;display:inline-block;font-style:normal;position:relative;vertical-align:middle}.icon-back:after,.icon-forward:after,.icon-next:after,.icon-prev:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.icon[class*=color-]{color:var(--f7-theme-color)}.ios .icon-back,.ios .icon-forward,.ios .icon-next,.ios .icon-prev{height:20px;line-height:20px;width:12px}.ios .icon-back:after,.ios .icon-forward:after,.ios .icon-next:after,.ios .icon-prev:after{line-height:inherit}.ios .icon-next:after,.ios .icon-prev:after{font-size:16px}.ios .icon-back:after,.ios .icon-prev:after{content:"chevron_right_ios"}.ios .icon-forward:after,.ios .icon-next:after{content:"chevron_left_ios"}.md .icon-back,.md .icon-forward,.md .icon-next,.md .icon-prev{height:24px;width:24px}.md .icon-back:after,.md .icon-forward:after,.md .icon-next:after,.md .icon-prev:after{line-height:1.2}.md .icon-back:after{content:"arrow_right_md"}.md .icon-forward:after{content:"arrow_left_md"}.md .icon-next:after{content:"chevron_left_md"}.md .icon-prev:after{content:"chevron_right_md"}.custom-modal-backdrop{z-index:10500}.actions-backdrop,.custom-modal-backdrop,.dialog-backdrop,.fab-backdrop,.popover-backdrop,.popup-backdrop,.preloader-backdrop,.sheet-backdrop{background:rgba(0,0,0,.4);height:100%;left:0;opacity:0;position:absolute;top:0;transition-duration:.4s;visibility:hidden;width:100%;z-index:13000}.actions-backdrop.not-animated,.custom-modal-backdrop.not-animated,.dialog-backdrop.not-animated,.fab-backdrop.not-animated,.popover-backdrop.not-animated,.popup-backdrop.not-animated,.preloader-backdrop.not-animated,.sheet-backdrop.not-animated{transition-duration:0ms}.actions-backdrop.backdrop-in,.custom-modal-backdrop.backdrop-in,.dialog-backdrop.backdrop-in,.fab-backdrop.backdrop-in,.popover-backdrop.backdrop-in,.popup-backdrop.backdrop-in,.preloader-backdrop.backdrop-in,.sheet-backdrop.backdrop-in{opacity:1;visibility:visible}:root{--f7-dialog-button-text-color:var(--f7-theme-color);--f7-dialog-button-text-align:center}.ios{--f7-dialog-width:270px;--f7-dialog-inner-padding:16px;--f7-dialog-border-radius:13px;--f7-dialog-text-align:center;--f7-dialog-font-size:14px;--f7-dialog-title-text-color:inherit;--f7-dialog-title-font-size:18px;--f7-dialog-title-font-weight:600;--f7-dialog-title-line-height:inherit;--f7-dialog-button-font-size:17px;--f7-dialog-button-height:44px;--f7-dialog-button-letter-spacing:0;--f7-dialog-button-font-weight:400;--f7-dialog-button-text-transform:none;--f7-dialog-button-strong-bg-color:transparent;--f7-dialog-button-strong-text-color:var(--f7-theme-color);--f7-dialog-button-strong-font-weight:500;--f7-dialog-input-border-radius:4px;--f7-dialog-input-font-size:14px;--f7-dialog-input-height:32px;--f7-dialog-input-border-width:1px;--f7-dialog-input-placeholder-color:#a9a9a9;--f7-dialog-preloader-size:34px;--f7-dialog-input-bg-color:#fff;--f7-dialog-bg-color:rgba(255,255,255,0.95);--f7-dialog-bg-color-rgb:255,255,255;--f7-dialog-text-color:#000;--f7-dialog-button-pressed-bg-color:rgba(0,0,0,0.1);--f7-dialog-button-strong-pressed-bg-color:rgba(0,0,0,0.1);--f7-dialog-input-border-color:rgba(0,0,0,0.3);--f7-dialog-border-divider-color:rgba(0,0,0,0.2)}.ios .dark,.ios.dark{--f7-dialog-text-color:#fff;--f7-dialog-bg-color:rgba(45,45,45,0.95);--f7-dialog-bg-color-rgb:45,45,45;--f7-dialog-button-pressed-bg-color:rgba(0,0,0,0.2);--f7-dialog-button-strong-pressed-bg-color:rgba(0,0,0,0.2);--f7-dialog-border-divider-color:rgba(255,255,255,0.15);--f7-dialog-input-border-color:rgba(255,255,255,0.15);--f7-dialog-input-bg-color:rgba(0,0,0,0.5)}.md{--f7-dialog-width:280px;--f7-dialog-inner-padding:24px;--f7-dialog-border-radius:28px;--f7-dialog-text-align:right;--f7-dialog-font-size:14px;--f7-dialog-title-font-size:24px;--f7-dialog-title-font-weight:400;--f7-dialog-title-line-height:1.3;--f7-dialog-button-font-size:14px;--f7-dialog-button-height:40px;--f7-dialog-button-letter-spacing:normal;--f7-dialog-button-font-weight:500;--f7-dialog-button-text-transform:none;--f7-dialog-button-strong-font-weight:500;--f7-dialog-input-border-radius:0px;--f7-dialog-input-font-size:16px;--f7-dialog-input-height:36px;--f7-dialog-input-border-color:transparent;--f7-dialog-input-border-width:0px;--f7-dialog-preloader-size:32px;--f7-dialog-input-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-dialog-button-pressed-bg-color:transparent;--f7-dialog-button-strong-bg-color:var(--f7-theme-color);--f7-dialog-button-strong-text-color:var(--f7-md-on-primary);--f7-dialog-button-strong-pressed-bg-color:transparent;--f7-dialog-bg-color:var(--f7-md-surface-3);--f7-dialog-input-placeholder-color:var(--f7-md-on-surface-variant);--f7-dialog-text-color:var(--f7-md-on-surface-variant);--f7-dialog-title-text-color:var(--f7-md-on-surface)}.dialog{background:var(--f7-dialog-bg-color);border-radius:var(--f7-dialog-border-radius);color:var(--f7-dialog-text-color);display:none;font-size:var(--f7-dialog-font-size);left:50%;margin-left:calc(var(--f7-dialog-width)*-1/2);margin-top:0;opacity:0;overflow:hidden;position:absolute;text-align:var(--f7-dialog-text-align);top:50%;transform:translate3d(0,-50%,0) scale(1.185);transition-duration:.4s;transition-property:transform,opacity;width:var(--f7-dialog-width);will-change:transform,opacity;z-index:13500}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .dialog{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-dialog-bg-color-rgb),.8)}}.dialog.modal-in{opacity:1;transform:translate3d(0,-50%,0) scale(1)}.dialog.modal-out{opacity:0;z-index:13499}.dialog.not-animated{transition-duration:0ms}.dialog-inner{padding:var(--f7-dialog-inner-padding);position:relative}.dialog-title{color:var(--f7-dialog-title-text-color);font-size:var(--f7-dialog-title-font-size);font-weight:var(--f7-dialog-title-font-weight);line-height:var(--f7-dialog-title-line-height)}.dialog-buttons{display:flex;flex-direction:row-reverse;position:relative}.dialog-buttons-vertical .dialog-buttons{display:block;height:auto!important}.dialog-button{box-sizing:border-box;color:var(--f7-dialog-button-text-color);cursor:pointer;display:block;font-size:var(--f7-dialog-button-font-size);font-weight:var(--f7-dialog-button-font-weight);height:var(--f7-dialog-button-height);letter-spacing:var(--f7-dialog-button-letter-spacing);line-height:var(--f7-dialog-button-height);overflow:hidden;position:relative;text-align:var(--f7-dialog-button-text-align);text-overflow:ellipsis;text-transform:var(--f7-dialog-button-text-transform);white-space:nowrap}.dialog-button.active-state{background-color:var(--f7-dialog-button-pressed-bg-color)}.dialog-button-strong{background-color:var(--f7-dialog-button-strong-bg-color);color:var(--f7-dialog-button-strong-text-color);font-weight:var(--f7-dialog-button-strong-font-weight)}.dialog-button-strong.active-state{background-color:var(--f7-dialog-button-strong-pressed-bg-color)}.dialog-no-buttons .dialog-buttons{display:none}.dialog-input-field{position:relative}input.dialog-input[type]{-webkit-appearance:none;appearance:none;background-color:var(--f7-dialog-input-bg-color);border:var(--f7-dialog-input-border-width) solid var(--f7-dialog-input-border-color);border-radius:var(--f7-dialog-input-border-radius);box-shadow:none;box-sizing:border-box;display:block;font-family:inherit;font-size:var(--f7-dialog-input-font-size);height:var(--f7-dialog-input-height);margin:15px 0 0;width:100%}input.dialog-input[type]::placeholder{color:var(--f7-dialog-input-placeholder-color)}.dialog-input-double input.dialog-input{border-radius:var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius) 0 0}.dialog-input-double+.dialog-input-double input.dialog-input{border-radius:0 0 var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius)}.dialog-preloader .preloader{--f7-preloader-size:var(--f7-dialog-preloader-size)}html.with-modal-dialog .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}.ios .dialog.modal-out{transform:translate3d(0,-50%,0) scale(1)}.ios .dialog-inner{border-radius:var(--f7-dialog-border-radius) var(--f7-dialog-border-radius) 0 0}.ios .dialog-inner:after{background-color:var(--f7-dialog-border-divider-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .dialog-title+.dialog-text{margin-top:5px}.ios .dialog-buttons{height:44px;justify-content:center}.ios .dialog-button{-webkit-box-flex:1;-ms-flex:1;padding:0 5px;width:100%}.ios .dialog-button:after{background-color:var(--f7-dialog-border-divider-color);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.ios .dialog-button:first-child{border-radius:0 0 0 var(--f7-dialog-border-radius)}.ios .dialog-button:last-child{border-radius:0 0 var(--f7-dialog-border-radius) 0}.ios .dialog-button:last-child:after{display:none!important}.ios .dialog-button:first-child:last-child{border-radius:0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius)}.ios .dialog-button[class*=color-]{--f7-dialog-button-text-color:var(--f7-theme-color)}.ios .dialog-buttons-vertical .dialog-buttons{height:auto}.ios .dialog-buttons-vertical .dialog-button{border-radius:0}.ios .dialog-buttons-vertical .dialog-button:after{background-color:var(--f7-dialog-border-divider-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .dialog-buttons-vertical .dialog-button:last-child{border-radius:0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius)}.ios .dialog-buttons-vertical .dialog-button:last-child:after{display:none!important}.ios .dialog-no-buttons .dialog-inner{border-radius:var(--f7-dialog-border-radius)}.ios .dialog-no-buttons .dialog-inner:after{display:none!important}.ios .dialog-input-field{margin-top:15px}.ios .dialog-input{padding:0 5px}.ios .dialog-input+.dialog-input{margin-top:5px}.ios .dialog-input-double+.dialog-input-double{margin-top:0}.ios .dialog-input-double+.dialog-input-double .dialog-input{border-top:0;margin-top:0}.ios .dialog-preloader .dialog-text~.preloader,.ios .dialog-preloader .dialog-title~.preloader,.ios .dialog-progress .dialog-text~.progressbar,.ios .dialog-progress .dialog-text~.progressbar-infinite,.ios .dialog-progress .dialog-title~.progressbar,.ios .dialog-progress .dialog-title~.progressbar-infinite{margin-top:15px}.md .dialog.modal-out{transform:translate3d(0,-50%,0) scale(.815)}.md .dialog-title+.dialog-text{margin-top:20px}.md .dialog-text{line-height:1.5}.md .dialog-buttons{box-sizing:border-box;height:64px;justify-content:flex-end;overflow:hidden;padding:0 24px 24px}.md .dialog-button{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25);border:none;border-radius:99px;min-width:64px;padding:0 16px;transform:translateZ(0);transition-duration:.3s}.md .dialog-button+.dialog-button{margin-left:8px}.md .dialog-button-strong{--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.md .dialog-button[class*=color-]{--f7-dialog-button-text-color:var(--f7-theme-color)}.md .dialog-buttons-vertical .dialog-buttons{align-items:flex-end;display:flex;flex-direction:column}.md .dialog-buttons-vertical .dialog-button+.dialog-button{margin-left:0;margin-top:8px}.md .dialog-input{padding:0;position:relative;transition-duration:.2s}.md .dialog-input+.dialog-input{margin-top:16px}.md .dialog-preloader .dialog-inner,.md .dialog-preloader .dialog-title,.md .dialog-progress .dialog-inner,.md .dialog-progress .dialog-title{text-align:center}.md .dialog-preloader .dialog-text~.preloader,.md .dialog-preloader .dialog-title~.preloader{margin-top:20px}.md .dialog-progress .dialog-text~.progressbar,.md .dialog-progress .dialog-text~.progressbar-infinite,.md .dialog-progress .dialog-title~.progressbar,.md .dialog-progress .dialog-title~.progressbar-infinite{margin-top:16px}:root{--f7-popup-border-radius:0px;--f7-popup-tablet-width:630px;--f7-popup-tablet-height:630px;--f7-popup-push-offset:var(--f7-safe-area-top)}.ios{--f7-popup-tablet-border-radius:5px;--f7-popup-transition-duration:400ms;--f7-popup-transition-timing-function:initial;--f7-popup-push-border-radius:10px}.md{--f7-popup-tablet-border-radius:28px;--f7-popup-transition-duration:600ms;--f7-popup-transition-timing-function:cubic-bezier(0,1,0.2,1);--f7-popup-push-border-radius:28px}.popup-backdrop{z-index:10500}.popup,.popup-backdrop-unique{z-index:11000}.popup{background:#fff;border-radius:var(--f7-popup-border-radius);box-sizing:border-box;display:none;height:100%;left:0;overflow:hidden;position:absolute;top:0;transform:translate3d(0,100vh,0);transition-property:transform;transition-timing-function:var(--f7-popup-transition-timing-function);width:100%}.dark .popup,.popup.dark{background:#000}.popup.modal-in,.popup.modal-out{transition-duration:var(--f7-popup-transition-duration)}.popup.not-animated{transition-duration:0ms}.popup.modal-in{display:block;transform:translateZ(0)}.popup.modal-out{transform:translate3d(0,100vh,0)}.popup.swipe-close-to-top.modal-out{transform:translate3d(0,-100vh,0)}@media (min-width:630px) and (min-height:630px){.popup:not(.popup-tablet-fullscreen){--f7-safe-area-top:0px;--f7-safe-area-bottom:0px;border-radius:var(--f7-popup-tablet-border-radius,var(--f7-popup-border-radius));height:var(--f7-popup-tablet-height);left:50%;margin-left:calc(var(--f7-popup-tablet-width)*-1/2);margin-top:calc(var(--f7-popup-tablet-height)*-1/2);top:50%;transform:translate3d(0,100vh,0);width:var(--f7-popup-tablet-width)}.popup:not(.popup-tablet-fullscreen).modal-in{transform:translateZ(0)}.popup:not(.popup-tablet-fullscreen).modal-out{transform:translate3d(0,100vh,0)}.popup:not(.popup-tablet-fullscreen).swipe-close-to-top.modal-out{transform:translate3d(0,-100vh,0)}.popup:not(.popup-tablet-fullscreen).popup-behind{pointer-events:none;transform:translateZ(0) scale(.9)}.popup:not(.popup-tablet-fullscreen).popup-behind.modal-out{transform:translate3d(0,100vh,0) scale(.9)}html.with-modal-popup-push .popup-push:not(.popup-tablet-fullscreen){margin-top:0}}html.with-modal-popup .framework7-root>.panel .page-content,html.with-modal-popup .framework7-root>.view .page-content,html.with-modal-popup .framework7-root>.views .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}html.with-modal-popup-push .popup-push,html.with-modal-popup-push-closing .popup-push{--f7-safe-area-top:0px;border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;height:calc(100% - var(--f7-popup-push-offset) - 10px);top:calc(var(--f7-popup-push-offset) + 10px)}html.with-modal-popup-push .popup-push .page,html.with-modal-popup-push .popup-push .view,html.with-modal-popup-push-closing .popup-push .page,html.with-modal-popup-push-closing .popup-push .view{--f7-safe-area-top:0px}html.with-modal-popup-push .framework7-root,html.with-modal-popup-push-closing .framework7-root{background:#000}html.with-modal-popup-push .framework7-root>.view,html.with-modal-popup-push .framework7-root>.views,html.with-modal-popup-push-closing .framework7-root>.view,html.with-modal-popup-push-closing .framework7-root>.views{transition-duration:var(--f7-popup-transition-duration);transition-timing-function:var(--f7-popup-transition-timing-function)}html.with-modal-popup-push .dark .framework7-root>.view:after,html.with-modal-popup-push .dark .framework7-root>.views:after,html.with-modal-popup-push .dark.framework7-root>.view:after,html.with-modal-popup-push .dark.framework7-root>.views:after,html.with-modal-popup-push .framework7-root>.view.dark:after,html.with-modal-popup-push .framework7-root>.views.dark:after,html.with-modal-popup-push-closing .dark .framework7-root>.view:after,html.with-modal-popup-push-closing .dark .framework7-root>.views:after,html.with-modal-popup-push-closing .dark.framework7-root>.view:after,html.with-modal-popup-push-closing .dark.framework7-root>.views:after,html.with-modal-popup-push-closing .framework7-root>.view.dark:after,html.with-modal-popup-push-closing .framework7-root>.views.dark:after,html.with-modal-popup-push-closing.dark .framework7-root>.view:after,html.with-modal-popup-push-closing.dark .framework7-root>.views:after,html.with-modal-popup-push.dark .framework7-root>.view:after,html.with-modal-popup-push.dark .framework7-root>.views:after{animation:popup-dark-push-overlay-fade-in var(--f7-popup-transition-duration) forwards;background:rgba(255,255,255,.1);border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;content:"";height:100%;left:0;opacity:1;pointer-events:none;position:absolute;top:0;width:100%;z-index:13000}html.with-modal-popup-push .framework7-root>.view,html.with-modal-popup-push .framework7-root>.views{border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;transform:translateZ(0) scale(var(--f7-popup-push-scale,1))!important}html.with-modal-popup-push .popup:after{background:rgba(0,0,0,.4);border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;content:"";height:100%;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transition-duration:var(--f7-popup-transition-duration);transition-timing-function:var(--f7-popup-transition-timing-function);width:100%;z-index:13000}html.with-modal-popup-push .dark .popup:after,html.with-modal-popup-push .dark.popup:after,html.with-modal-popup-push.dark .popup:after{background:rgba(255,255,255,.05)}html.with-modal-popup-push .popup-behind{transform:translateZ(0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind.modal-out{transform:translate3d(0,100vh,0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind:not(.popup-push){border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0}html.with-modal-popup-push .popup-behind.popup-push{transform:translate3d(0,calc(-10px - var(--f7-popup-push-offset)),0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind.popup-push.modal-out{transform:translate3d(0,calc(-10px - var(--f7-popup-push-offset) + 100vh),0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind:after{opacity:1;pointer-events:auto}html.with-modal-popup-push-closing .dark .framework7-root>.view:after,html.with-modal-popup-push-closing .dark .framework7-root>.views:after,html.with-modal-popup-push-closing .dark.framework7-root>.view:after,html.with-modal-popup-push-closing .dark.framework7-root>.views:after,html.with-modal-popup-push-closing .framework7-root>.view.dark:after,html.with-modal-popup-push-closing .framework7-root>.views.dark:after,html.with-modal-popup-push-closing.dark .framework7-root>.view:after,html.with-modal-popup-push-closing.dark .framework7-root>.views:after{animation:popup-dark-push-overlay-fade-out var(--f7-popup-transition-duration) forwards;animation-timing-function:var(--f7-popup-transition-timing-function)}@keyframes popup-dark-push-overlay-fade-in{0%{opacity:0}to{opacity:1}}@keyframes popup-dark-push-overlay-fade-out{0%{opacity:1}to{opacity:0}}:root{--f7-login-screen-blocks-max-width:480px;--f7-login-screen-title-text-align:center;--f7-login-screen-title-text-color:inherit;--f7-login-screen-title-letter-spacing:0}.ios{--f7-login-screen-blocks-margin-vertical:25px;--f7-login-screen-transition-timing-function:initial;--f7-login-screen-transition-duration:400ms;--f7-login-screen-title-font-weight:600;--f7-login-screen-title-font-size:28px;--f7-login-screen-content-bg-color:#fff;--f7-login-screen-bg-color:#fff}.ios .dark,.ios.dark{--f7-login-screen-bg-color:#000;--f7-login-screen-content-bg-color:#000}.md{--f7-login-screen-transition-duration:600ms;--f7-login-screen-transition-timing-function:cubic-bezier(0,1,0.2,1);--f7-login-screen-blocks-margin-vertical:24px;--f7-login-screen-title-font-weight:400;--f7-login-screen-title-font-size:28px}.md,.md .dark,.md [class*=color-]{--f7-login-screen-content-bg-color:var(--f7-md-surface);--f7-login-screen-bg-color:var(--f7-md-surface)}.login-screen{background:var(--f7-login-screen-bg-color);box-sizing:border-box;display:none;height:100%;left:0;position:absolute;top:0;transform:translate3d(0,100vh,0);transition-property:transform;transition-timing-function:var(--f7-login-screen-transition-timing-function);width:100%;z-index:11000}.login-screen.modal-in,.login-screen.modal-out{transition-duration:var(--f7-login-screen-transition-duration)}.login-screen.not-animated{transition-duration:0ms}.login-screen.modal-in{display:block;transform:translateZ(0)}.login-screen.modal-out{transform:translate3d(0,100%,0)}.login-screen .page,.login-screen-content,.login-screen-page{background:var(--f7-login-screen-content-bg-color)}.login-screen-content .block,.login-screen-content .list,.login-screen-content .login-screen-title,.login-screen-page .block,.login-screen-page .list,.login-screen-page .login-screen-title{margin:var(--f7-login-screen-blocks-margin-vertical) auto}.login-screen-content .block,.login-screen-content .block-footer,.login-screen-content .block-header,.login-screen-content .list,.login-screen-content .login-screen-title,.login-screen-page .block,.login-screen-page .block-footer,.login-screen-page .block-header,.login-screen-page .list,.login-screen-page .login-screen-title{max-width:var(--f7-login-screen-blocks-max-width)}.login-screen-content .list ul,.login-screen-page .list ul{background:none}.login-screen-content .list ul:after,.login-screen-content .list ul:before,.login-screen-page .list ul:after,.login-screen-page .list ul:before{display:none!important}.login-screen-content .block-footer,.login-screen-content .block-header,.login-screen-page .block-footer,.login-screen-page .block-header{margin-left:auto;margin-right:auto;text-align:center}.login-screen-title{color:var(--f7-login-screen-title-text-color);font-size:var(--f7-login-screen-title-font-size);font-weight:var(--f7-login-screen-title-font-weight);letter-spacing:var(--f7-login-screen-title-letter-spacing);text-align:var(--f7-login-screen-title-text-align)}.login-screen-page,.login-screen>.page,.login-screen>.view>.page{display:flex;flex-direction:column}.login-screen-page .login-screen-content,.login-screen-page .page-content,.login-screen>.page .login-screen-content,.login-screen>.page .page-content,.login-screen>.view>.page .login-screen-content,.login-screen>.view>.page .page-content{height:auto;margin-bottom:auto;margin-top:auto;max-height:100%;width:100%}.dark .login-screen-content .block-strong,.dark .login-screen-content .list ul,.dark .login-screen-page .block-strong,.dark .login-screen-page .list ul,.dark.login-screen-page .block-strong,.dark.login-screen-page .list ul{background-color:initial}:root{--f7-popover-width:260px}.ios{--f7-popover-border-radius:13px;--f7-popover-actions-icon-size:28px;--f7-popover-transition-timing-function:initial;--f7-popover-bg-color:rgba(255,255,255,0.95);--f7-popover-actions-label-text-color:rgba(0,0,0,0.45)}.ios .dark,.ios.dark{--f7-popover-bg-color:rgba(30,30,30,0.95);--f7-popover-actions-label-text-color:rgba(255,255,255,0.55)}.md{--f7-popover-transition-timing-function:cubic-bezier(0,0.8,0.34,1);--f7-popover-border-radius:28px;--f7-popover-actions-icon-size:24px}.md,.md .dark,.md [class*=color-]{--f7-popover-bg-color:var(--f7-md-surface-3);--f7-popover-actions-label-text-color:var(--f7-md-on-surface-variant)}.popover,.popover-backdrop-unique{z-index:13500}.popover{--f7-safe-area-top:0px;--f7-safe-area-left:0px;--f7-safe-area-right:0px;--f7-safe-area-bottom:0px;background-color:var(--f7-popover-bg-color);border-radius:var(--f7-popover-border-radius);display:none;left:0;margin:0;opacity:0;position:absolute;top:0;transition-duration:.3s;width:var(--f7-popover-width);will-change:transform,opacity}.popover .list{margin:0}.popover .list ul{background:none}.popover .list:first-child ul:before,.popover .list:last-child ul:after{display:none!important}.popover .list:first-child li:first-child,.popover .list:first-child li:first-child a,.popover .list:first-child li:first-child>label,.popover .list:first-child ul{border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0}.popover .list:last-child li:last-child,.popover .list:last-child li:last-child a,.popover .list:last-child li:last-child>label,.popover .list:last-child ul{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.popover .list:first-child:last-child li:first-child:last-child,.popover .list:first-child:last-child li:first-child:last-child a,.popover .list:first-child:last-child li:first-child:last-child>label,.popover .list:first-child:last-child ul{border-radius:var(--f7-popover-border-radius)}.popover .list+.list{margin-top:var(--f7-list-margin-vertical)}.popover.modal-in{opacity:1}.popover.not-animated{transition-duration:0ms}.popover,.popover-backdrop{transition-timing-function:var(--f7-popover-transition-timing-function)}.popover-inner{-webkit-overflow-scrolling:touch;overflow:auto}.popover-from-actions .item-link i.icon{font-size:var(--f7-popover-actions-icon-size);height:var(--f7-popover-actions-icon-size);width:var(--f7-popover-actions-icon-size)}.ios .popover-from-actions-strong{font-weight:600}.md .popover-from-actions-strong{font-weight:500}.popover-from-actions-label{align-items:center;color:var(--f7-popover-actions-label-text-color);display:flex;font-size:var(--f7-actions-label-font-size);justify-content:var(--f7-actions-label-justify-content);line-height:1.3;padding:var(--f7-actions-label-padding);position:relative}.popover-from-actions-label:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.popover-from-actions-label:last-child:after{display:none!important}.md .popover-from-actions-label{justify-content:center}.popover-arrow{left:-26px;overflow:hidden;z-index:100}.popover-arrow,.popover-arrow:after{height:26px;position:absolute;top:0;width:26px}.popover-arrow:after{background:var(--f7-popover-bg-color);border-radius:3px;content:"";left:0;transform:rotate(45deg)}.popover-arrow.on-left{left:-26px}.popover-arrow.on-left:after{left:19px;top:0}.popover-arrow.on-right{left:100%}.popover-arrow.on-right:after{left:-19px;top:0}.popover-arrow.on-top{left:0;top:-26px}.popover-arrow.on-top:after{left:0;top:19px}.popover-arrow.on-bottom{left:0;top:100%}.popover-arrow.on-bottom:after{left:0;top:-19px}.ios .popover{transform:none;transition-property:opacity}.md .popover{transform:scale(.85,.6);transition-property:opacity,transform}.md .popover.modal-in{opacity:1;transform:scale(1)}.md .popover.modal-out{opacity:0;transform:scale(1)}.md .popover-on-top{transform-origin:center bottom}.md .popover-on-top.popover-on-right{transform-origin:left bottom}.md .popover-on-top.popover-on-left{transform-origin:right bottom}.md .popover-on-middle{transform-origin:center center}.md .popover-on-middle.popover-on-right{transform-origin:left center}.md .popover-on-middle.popover-on-left{transform-origin:right center}.md .popover-on-bottom{transform-origin:center top}.md .popover-on-bottom.popover-on-right{transform-origin:left top}.md .popover-on-bottom.popover-on-left{transform-origin:right top}:root{--f7-actions-grid-button-font-size:12px;--f7-actions-grid-button-icon-size:48px}.ios{--f7-actions-transition-timing-function:initial;--f7-actions-border-radius:13px;--f7-actions-grid-button-text-color:#757575;--f7-actions-button-padding:0px;--f7-actions-button-text-align:center;--f7-actions-button-height:57px;--f7-actions-button-height-landscape:44px;--f7-actions-button-font-size:20px;--f7-actions-button-icon-size:28px;--f7-actions-button-justify-content:center;--f7-actions-label-padding:8px 10px;--f7-actions-label-font-weight:400;--f7-actions-label-font-size:13px;--f7-actions-label-justify-content:center;--f7-actions-group-border-color:transparent;--f7-actions-group-margin:8px;--f7-actions-bg-color:rgba(255,255,255,0.95);--f7-actions-bg-color-rgb:255,255,255;--f7-actions-button-border-color:rgba(0,0,0,0.2);--f7-actions-button-pressed-bg-color:rgba(230,230,230,0.9);--f7-actions-button-pressed-bg-color-rgb:230,230,230;--f7-actions-label-text-color:#8a8a8a}.ios .dark,.ios.dark{--f7-actions-bg-color:rgba(45,45,45,0.95);--f7-actions-bg-color-rgb:45,45,45;--f7-actions-button-border-color:rgba(255,255,255,0.15);--f7-actions-button-pressed-bg-color:rgba(50,50,50,0.9);--f7-actions-button-pressed-bg-color-rgb:50,50,50;--f7-actions-label-text-color:rgba(255,255,255,0.55)}.md{--f7-actions-transition-timing-function:cubic-bezier(0,0.8,0.34,1);--f7-actions-border-radius:16px;--f7-actions-button-border-color:transparent;--f7-actions-button-padding:0 16px;--f7-actions-button-text-align:left;--f7-actions-button-height:48px;--f7-actions-button-height-landscape:48px;--f7-actions-button-font-size:16px;--f7-actions-button-icon-size:24px;--f7-actions-button-justify-content:space-between;--f7-actions-label-padding:12px 16px;--f7-actions-label-font-size:14px;--f7-actions-label-font-weight:500;--f7-actions-label-justify-content:flex-start;--f7-actions-group-margin:0px;--f7-actions-button-pressed-bg-color:#e5e5e5}.md .dark,.md.dark{--f7-actions-button-pressed-bg-color:#2e2e2e}.md,.md .dark,.md [class*=color-]{--f7-actions-button-text-color:var(--f7-md-on-surface);--f7-actions-bg-color:var(--f7-md-surface-3);--f7-actions-group-border-color:var(--f7-md-outline);--f7-actions-label-text-color:var(--f7-theme-color);--f7-actions-grid-button-text-color:var(--f7-md-on-surface)}.actions-backdrop-unique{z-index:13500}.actions-modal{-webkit-overflow-scrolling:touch;bottom:0;display:none;left:0;max-height:100%;overflow:auto;position:absolute;transform:translate3d(0,100%,0);transition-property:transform;width:100%;will-change:transform;z-index:13500}.actions-modal.modal-in,.actions-modal.modal-out{transition-duration:.3s}.actions-modal.not-animated{transition-duration:0ms}.ios .actions-modal.modal-in{transform:translate3d(0,calc(var(--f7-safe-area-bottom)*-1),0)}.md .actions-modal.modal-in{transform:translateZ(0)}.actions-modal.modal-out{transform:translate3d(0,100%,0);z-index:13499}@media (min-width:496px){.actions-modal{left:50%;margin-left:-240px;width:480px}}@media (orientation:landscape){.actions-modal{--f7-actions-button-height:var(--f7-actions-button-height-landscape)}}.actions-backdrop,.actions-modal{transition-timing-function:var(--f7-actions-transition-timing-function)}.actions-group{margin:var(--f7-actions-group-margin);overflow:hidden;position:relative;transform:translateZ(0)}.actions-group:after{background-color:var(--f7-actions-group-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.actions-group:last-child:after{display:none!important}.actions-button,.actions-label{box-sizing:border-box;display:block;font-weight:400;margin:0;overflow:hidden;position:relative;text-align:var(--f7-actions-button-text-align);width:100%}.actions-button:after,.actions-label:after{background-color:var(--f7-actions-button-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.actions-button a,.actions-label a{color:inherit;display:block;text-decoration:none}.actions-button{color:var(--f7-actions-button-text-color,var(--f7-theme-color));cursor:pointer;display:flex;font-size:var(--f7-actions-button-font-size);height:var(--f7-actions-button-height);justify-content:var(--f7-actions-button-justify-content);line-height:var(--f7-actions-button-height);padding:var(--f7-actions-button-padding);z-index:10}.actions-button.active-state{background-color:var(--f7-actions-button-pressed-bg-color)!important}.actions-button[class*=color-]{color:var(--f7-theme-color)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .actions-button.active-state{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-actions-button-pressed-bg-color-rgb),.8)}}.actions-button-media{align-items:center;display:flex;flex-shrink:0}.actions-button-media i.icon{font-size:var(--f7-actions-button-icon-size);height:var(--f7-actions-button-icon-size);width:var(--f7-actions-button-icon-size)}.actions-button a,.actions-button-text{overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}.actions-button-text{flex-shrink:1;text-align:var(--f7-actions-button-text-align);width:100%}.actions-label{align-items:center;color:var(--f7-actions-label-text-color);display:flex;font-size:var(--f7-actions-label-font-size);font-weight:var(--f7-actions-label-font-weight);justify-content:var(--f7-actions-label-justify-content);line-height:1.3;min-height:var(--f7-actions-label-min-height,var(--f7-actions-button-height));padding:var(--f7-actions-label-padding)}.actions-label[class*=" color-"]{--f7-actions-label-text-color:var(--f7-theme-color)}.actions-grid .actions-group{display:flex;flex-wrap:wrap;justify-content:flex-start;margin-top:0}.actions-grid .actions-group:not(:last-child){margin-bottom:0}.actions-grid .actions-button,.actions-grid .actions-label{background:none}.actions-grid .actions-button{color:var(--f7-actions-grid-button-text-color);display:block;height:auto;line-height:1;padding:16px;width:33.33333333%}.actions-grid .actions-button:after{display:none!important}.actions-grid .actions-button-media{margin-left:auto!important;margin-right:auto!important}.actions-grid .actions-button-media,.actions-grid .actions-button-media i.icon{height:var(--f7-actions-grid-button-icon-size);width:var(--f7-actions-grid-button-icon-size)}.actions-grid .actions-button-media i.icon{font-size:var(--f7-actions-grid-button-icon-size)}.actions-grid .actions-button-text{font-size:var(--f7-actions-grid-button-font-size);height:1.33em;line-height:1.33em;margin-left:0!important;margin-top:8px;text-align:center!important}.ios .actions-group{border-radius:var(--f7-actions-border-radius)}.ios .actions-button,.ios .actions-label{background:var(--f7-actions-bg-color)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .ios .actions-button,.ios-translucent-modals .ios .actions-label{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-actions-bg-color-rgb),.8)}}.ios .actions-button:first-child,.ios .actions-label:first-child{border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0}.ios .actions-button:last-child,.ios .actions-label:last-child{border-radius:0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius)}.ios .actions-button:last-child:after,.ios .actions-label:last-child:after{display:none!important}.ios .actions-button:first-child:last-child,.ios .actions-label:first-child:last-child{border-radius:var(--f7-actions-border-radius)}.ios .actions-button b,.ios .actions-button.actions-button-strong,.ios .actions-label b,.ios .actions-label.actions-button-strong{font-weight:600}.ios .actions-grid .actions-group{background:var(--f7-actions-bg-color);border-radius:0}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .ios .actions-grid .actions-group{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-actions-bg-color-rgb),.8)}}.ios .actions-grid .actions-group:first-child{border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0}.ios .actions-grid .actions-group:last-child{border-radius:0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius)}.ios .actions-grid .actions-group:first-child:last-child{border-radius:var(--f7-actions-border-radius)}.ios .actions-grid .actions-button,.ios .actions-grid .actions-label{border-radius:0!important}.ios .actions-button-media{margin-left:16px}.ios .actions-button-media+.actions-button-text{margin-left:16px;text-align:left}.md .actions-modal{background-color:var(--f7-actions-bg-color);border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;padding-bottom:var(--f7-safe-area-bottom)}.md .actions-button{transition-duration:.3s}.md .actions-button b,.md .actions-button.actions-button-strong,.md .actions-label b,.md .actions-label.actions-button-strong{font-weight:500}.md .actions-button-media{min-width:40px}.md .actions-button-media+.actions-button-text{margin-left:16px}:root{--f7-sheet-height:260px;--f7-sheet-push-offset:var(--f7-safe-area-top)}.ios{--f7-sheet-border-radius:0px;--f7-sheet-border-color:var(--f7-bars-border-color);--f7-sheet-transition-timing-function:initial;--f7-sheet-push-border-radius:10px;--f7-sheet-transition-duration:300ms;--f7-sheet-bg-color:#fff}.ios .dark,.ios.dark{--f7-sheet-bg-color:#202020}.md{--f7-sheet-border-radius:16px;--f7-sheet-push-border-radius:16px;--f7-sheet-border-color:transparent;--f7-sheet-transition-timing-function:cubic-bezier(0,0.8,0.34,1);--f7-sheet-transition-duration:400ms}.md,.md .dark,.md [class*=color-]{--f7-sheet-bg-color:var(--f7-md-surface)}.sheet-backdrop{z-index:11000}.sheet-backdrop-unique,.sheet-modal{z-index:12500}.sheet-modal{background:var(--f7-sheet-bg-color);bottom:0;box-sizing:border-box;display:none;height:var(--f7-sheet-height);left:0;overflow:hidden;position:absolute;transform:translate3d(0,100%,0);transition-property:transform;width:100%;will-change:transform,opacity}.sheet-modal.modal-in,.sheet-modal.modal-out{transition-duration:var(--f7-sheet-transition-duration)}.sheet-modal.not-animated{transition-duration:0ms}.sheet-modal.modal-in{display:block;transform:translateZ(0)}.sheet-modal.modal-in-breakpoint,.sheet-modal.modal-in-swipe-step{display:block;transform:translate3d(0,var(--f7-sheet-breakpoint,var(--f7-sheet-swipe-step,0)),0)}.sheet-modal.modal-out{transform:translate3d(0,100%,0)}.sheet-modal .sheet-modal-inner{height:100%;overflow:hidden;position:relative}.sheet-modal .toolbar{--f7-safe-area-bottom:0px;position:relative;width:100%}.sheet-modal .toolbar:after,.sheet-modal .toolbar:before{display:none}.sheet-modal .toolbar+.sheet-modal-inner{height:calc(100% - var(--f7-toolbar-height))}.sheet-modal .toolbar+.sheet-modal-inner .page-content{--f7-page-toolbar-top-offset:0px;--f7-page-toolbar-bottom-offset:0px}.sheet-backdrop,.sheet-modal{transition-timing-function:var(--f7-sheet-transition-timing-function)}.sheet-modal-top{border-radius:0 0 var(--f7-sheet-border-radius) var(--f7-sheet-border-radius)}.sheet-modal-top:after{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-sheet-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;transform-style:preserve-3d;width:100%;z-index:15;z-index:700}.sheet-modal-bottom,.sheet-modal:not(.sheet-modal-top){--f7-safe-area-top:0px;border-radius:var(--f7-sheet-border-radius) var(--f7-sheet-border-radius) 0 0}.sheet-modal-bottom:before,.sheet-modal:not(.sheet-modal-top):before{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-sheet-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;transform-style:preserve-3d;width:100%;z-index:15;z-index:700}.sheet-modal-top{--f7-safe-area-bottom:0px;bottom:auto;top:0}.sheet-modal-top,.sheet-modal-top.modal-out{transform:translate3d(0,-100%,0)}.sheet-modal-top .toolbar-bottom{position:absolute}.sheet-modal-top .page-content{padding-top:var(--f7-safe-area-top)}html.with-modal-sheet-push .sheet-modal-push,html.with-modal-sheet-push-closing .sheet-modal-push{--f7-sheet-border-color:transparent;border-radius:var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius) 0 0;overflow:hidden}html.with-modal-sheet-push .sheet-modal-push .page,html.with-modal-sheet-push .sheet-modal-push .view,html.with-modal-sheet-push-closing .sheet-modal-push .page,html.with-modal-sheet-push-closing .sheet-modal-push .view{--f7-safe-area-top:0px}html.with-modal-sheet-push .sheet-modal-push.sheet-modal-top,html.with-modal-sheet-push-closing .sheet-modal-push.sheet-modal-top{border-radius:0 0 var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius)}html.with-modal-sheet-push .framework7-root,html.with-modal-sheet-push-closing .framework7-root{background:#000}html.with-modal-sheet-push .framework7-root>.view,html.with-modal-sheet-push .framework7-root>.views,html.with-modal-sheet-push-closing .framework7-root>.view,html.with-modal-sheet-push-closing .framework7-root>.views{transition-duration:var(--f7-sheet-transition-duration);transition-timing-function:var(--f7-sheet-transition-timing-function)}html.with-modal-sheet-push .dark .framework7-root>.view:after,html.with-modal-sheet-push .dark .framework7-root>.views:after,html.with-modal-sheet-push .dark.framework7-root>.view:after,html.with-modal-sheet-push .dark.framework7-root>.views:after,html.with-modal-sheet-push .framework7-root>.view.dark:after,html.with-modal-sheet-push .framework7-root>.views.dark:after,html.with-modal-sheet-push-closing .dark .framework7-root>.view:after,html.with-modal-sheet-push-closing .dark .framework7-root>.views:after,html.with-modal-sheet-push-closing .dark.framework7-root>.view:after,html.with-modal-sheet-push-closing .dark.framework7-root>.views:after,html.with-modal-sheet-push-closing .framework7-root>.view.dark:after,html.with-modal-sheet-push-closing .framework7-root>.views.dark:after,html.with-modal-sheet-push-closing.dark .framework7-root>.view:after,html.with-modal-sheet-push-closing.dark .framework7-root>.views:after,html.with-modal-sheet-push.dark .framework7-root>.view:after,html.with-modal-sheet-push.dark .framework7-root>.views:after{animation:sheet-dark-push-overlay-fade-in var(--f7-sheet-transition-duration);animation-timing-function:var(--f7-sheet-transition-timing-function);background:rgba(255,255,255,.1);content:"";height:100%;left:0;opacity:1;pointer-events:none;position:absolute;top:0;transition-duration:var(--f7-sheet-transition-duration);transition-timing-function:var(--f7-sheet-transition-timing-function);width:100%;z-index:13000}html.with-modal-sheet-push .framework7-root>.view,html.with-modal-sheet-push .framework7-root>.views{border-radius:var(--f7-sheet-push-border-radius);transform:translateZ(0) scale(var(--f7-sheet-push-scale,1))!important}html.with-modal-sheet-push-closing .dark .framework7-root>.view:after,html.with-modal-sheet-push-closing .dark .framework7-root>.views:after,html.with-modal-sheet-push-closing .dark.framework7-root>.view:after,html.with-modal-sheet-push-closing .dark.framework7-root>.views:after,html.with-modal-sheet-push-closing .framework7-root>.view.dark:after,html.with-modal-sheet-push-closing .framework7-root>.views.dark:after,html.with-modal-sheet-push-closing.dark .framework7-root>.view:after,html.with-modal-sheet-push-closing.dark .framework7-root>.views:after{animation:none;opacity:0}@keyframes sheet-dark-push-overlay-fade-in{0%{opacity:0}to{opacity:1}}.md .sheet-modal .toolbar a.link:not(.tab-link){flex-shrink:0}:root{--f7-toast-font-size:14px;--f7-toast-icon-size:48px;--f7-toast-max-width:568px}.ios{--f7-toast-text-color:#fff;--f7-toast-bg-color:rgba(0,0,0,0.75);--f7-toast-bg-color-rgb:0,0,0;--f7-toast-padding-horizontal:16px;--f7-toast-padding-vertical:12px;--f7-toast-border-radius:8px;--f7-toast-button-min-width:64px}.md{--f7-toast-padding-horizontal:24px;--f7-toast-padding-vertical:14px;--f7-toast-border-radius:16px;--f7-toast-button-min-width:64px}.md,.md .dark,.md [class*=color-]{--f7-toast-text-color:var(--f7-md-on-surface);--f7-toast-bg-color:var(--f7-md-surface-5)}.toast{background-color:var(--f7-toast-bg-color);box-sizing:border-box;color:var(--f7-toast-text-color);font-size:var(--f7-toast-font-size);max-width:var(--f7-toast-max-width);opacity:0;position:absolute;transition-property:transform,opacity;z-index:20000}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .toast{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-toast-bg-color-rgb),.8)}}.toast.modal-in{opacity:1}.toast .toast-content{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;padding:var(--f7-toast-padding-vertical) var(--f7-toast-padding-horizontal)}.toast .toast-text{flex-shrink:1;line-height:20px;min-width:0}.toast .toast-button{flex-shrink:0;margin-bottom:-8px;margin-top:-8px;min-width:var(--f7-toast-button-min-width)}.toast.toast-with-icon .toast-content{display:block;text-align:center}.toast.toast-with-icon .toast-text{text-align:center}.toast.toast-with-icon .toast-icon .f7-icons,.toast.toast-with-icon .toast-icon .material-icons{font-size:var(--f7-toast-icon-size)}.toast.toast-center{top:50%}.toast.toast-top{margin-top:var(--f7-safe-area-top)}.ios .toast{left:0;transition-duration:.3s;width:100%}.ios .toast.toast-top{top:0;transform:translate3d(0,-100%,0)}.ios .toast.toast-top.modal-in{transform:translateZ(0)}.ios .toast.toast-center{border-radius:var(--f7-toast-border-radius);left:50%;width:auto}.ios .toast.toast-center,.ios .toast.toast-center.modal-in{transform:translate3d(-50%,-50%,0)}.ios .toast.toast-bottom{bottom:0;transform:translate3d(0,100%,0)}.ios .toast.toast-bottom.modal-in{transform:translateZ(0)}@media (max-width:568px){.ios .toast.toast-top{margin-top:0}.ios .toast.toast-top .toast-content{padding-top:calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-top))}.ios .toast.toast-bottom .toast-content{padding-bottom:calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-bottom))}}@media (min-width:569px){.ios .toast{border-radius:var(--f7-toast-border-radius);left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2)}.ios .toast.toast-top{top:16px}.ios .toast.toast-center{margin-left:0}.ios .toast.toast-bottom{margin-bottom:calc(16px + var(--f7-safe-area-bottom))}}@media (min-width:1024px){.ios .toast{margin-left:0;width:auto}.ios .toast.toast-horizontal-left{left:16px}.ios .toast.toast-horizontal-right{left:auto;right:16px}.ios .toast.toast-horizontal-center{left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2);width:var(--f7-toast-max-width)}}.ios .toast-button{margin-left:calc(var(--f7-button-padding-horizontal)*-1);margin-right:16px}.md .toast{border-radius:var(--f7-toast-border-radius);left:8px;transform:scale(.9);transition-duration:.2s;width:calc(100% - 16px)}.md .toast.modal-in,.md .toast.modal-out{transform:scale(1)}.md .toast.toast-top{top:8px}.md .toast.toast-center{left:50%;transform:scale(.9) translate3d(-55%,-55%,0);width:auto}.md .toast.toast-center.modal-in,.md .toast.toast-center.modal-out{transform:scale(1) translate3d(-50%,-50%,0)}.md .toast.toast-bottom{bottom:calc(8px + var(--f7-safe-area-bottom))}@media (min-width:584px){.md .toast{left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2)}.md .toast.toast-center{margin-left:0}}@media (min-width:1024px){.md .toast{margin-left:0;width:auto}.md .toast.toast-horizontal-left{left:24px}.md .toast.toast-horizontal-right{left:auto;right:24px}.md .toast.toast-horizontal-center{left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2);width:var(--f7-toast-max-width)}.md .toast.toast-bottom{bottom:calc(24px + var(--f7-safe-area-bottom))}.md .toast.toast-top{top:24px}}.md .toast-button{margin-left:-8px;margin-right:16px}:root{--f7-preloader-modal-padding:8px;--f7-preloader-modal-bg-color:rgba(0,0,0,0.8)}.ios{--f7-preloader-color:#6c6c6c;--f7-preloader-size:20px;--f7-preloader-modal-preloader-size:34px;--f7-preloader-modal-border-radius:5px}.md{--f7-preloader-color:#757575;--f7-preloader-size:32px;--f7-preloader-modal-preloader-size:32px;--f7-preloader-modal-border-radius:4px}.preloader{display:inline-block;font-size:0;height:var(--f7-preloader-size);position:relative;vertical-align:middle;width:var(--f7-preloader-size)}.preloader .preloader-inner{display:block;height:100%;position:relative;width:100%}.preloader-backdrop{background:none;opacity:0;visibility:visible;z-index:14000}.preloader-modal{background:var(--f7-preloader-modal-bg-color);border-radius:var(--f7-preloader-modal-border-radius);left:50%;padding:var(--f7-preloader-modal-padding);position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);z-index:14500}.preloader-modal .preloader{--f7-preloader-size:var(--f7-preloader-modal-preloader-size);display:block!important}.with-modal-preloader .page-content,.with-modal-preloader.page-content,html.with-modal-preloader .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}.preloader[class*=color-]{--f7-preloader-color:var(--f7-theme-color)}.preloader.color-white{--f7-preloader-color:#fff}.preloader.color-black{--f7-preloader-color:#000}.ios .preloader{color:var(--f7-preloader-color)}.ios .preloader-inner{animation:ios-preloader-spin 1s steps(8) infinite}.ios .preloader-inner-line{background:currentColor;border-radius:100px;display:block;height:33.33%;left:50%;position:absolute;top:50%;transform-origin:center 150%;width:11.6%}.ios .preloader-multi-color .preloader-inner-line,.ios .preloader.color-multi .preloader-inner-line{animation:ios-preloader-multicolor 3s linear infinite}.ios .preloader-inner-line:first-child{opacity:.27;transform:translate(-50%,-150%) rotate(0deg)}.ios .preloader-inner-line:nth-child(2){opacity:.35285714;transform:translate(-50%,-150%) rotate(45deg)}.ios .preloader-inner-line:nth-child(3){opacity:.43571429;transform:translate(-50%,-150%) rotate(90deg)}.ios .preloader-inner-line:nth-child(4){opacity:.51857143;transform:translate(-50%,-150%) rotate(135deg)}.ios .preloader-inner-line:nth-child(5){opacity:.60142857;transform:translate(-50%,-150%) rotate(180deg)}.ios .preloader-inner-line:nth-child(6){opacity:.68428571;transform:translate(-50%,-150%) rotate(225deg)}.ios .preloader-inner-line:nth-child(7){opacity:.76714286;transform:translate(-50%,-150%) rotate(270deg)}.ios .preloader-inner-line:nth-child(8){opacity:.85;transform:translate(-50%,-150%) rotate(315deg)}@keyframes ios-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes ios-preloader-multicolor{0%,to{background-color:#2196f3}25%{background-color:#ff3b30}50%{background-color:#4cd964}75%{background-color:#ff9500}}.md .preloader{color:var(--f7-preloader-color)}.md .preloader-inner{animation:md-preloader-rotate 1.4s linear infinite}.md .preloader-inner circle{fill:none;stroke:currentColor;stroke-dasharray:100px;stroke-dashoffset:80px;stroke-width:4;animation:md-preloader-circle-rotate 5.6s ease-in-out infinite;transform:rotate(-90deg);transform-origin:18px 18px}.md .preloader-multi-color circle,.md .preloader.color-multi circle{animation:md-preloader-circle-rotate 5.6s ease-in-out infinite,md-preloader-multicolor 5.6s ease-in-out infinite}@keyframes md-preloader-multicolor{0%,to{stroke:#4285f4}75%{stroke:#1b9a59}50%{stroke:#f7c223}25%{stroke:#de3e35}}@keyframes md-preloader-rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes md-preloader-circle-rotate{0%{stroke-dashoffset:100px;transform:rotate(-90deg)}12.5%{stroke-dashoffset:25px;transform:rotate(-90deg)}25%{stroke-dashoffset:100px;transform:rotate(180deg)}25.1%{stroke-dashoffset:100px;transform:rotate(-180deg)}37.5%{stroke-dashoffset:25px;transform:rotate(-180deg)}50%{stroke-dashoffset:100px;transform:rotate(90deg)}50.1%{stroke-dashoffset:100px;transform:rotate(90deg)}62.5%{stroke-dashoffset:25px;transform:rotate(90deg)}75%{stroke-dashoffset:100px;transform:rotate(1turn)}75.1%{stroke-dashoffset:100px;transform:rotate(0deg)}87.5%{stroke-dashoffset:25px;transform:rotate(0deg)}to{stroke-dashoffset:100px;transform:rotate(270deg)}}.ios{--f7-progressbar-height:4px;--f7-progressbar-border-radius:4px;--f7-progressbar-bg-color:rgba(0,0,0,0.3)}.ios .dark,.ios.dark{--f7-progressbar-bg-color:rgba(255,255,255,0.3)}.md{--f7-progressbar-height:4px;--f7-progressbar-border-radius:0px}.md,.md .dark,.md [class*=color-]{--f7-progressbar-bg-color:rgba(var(--f7-theme-color-rgb),0.5)}.progressbar,.progressbar-infinite{background:var(--f7-progressbar-bg-color,rgba(var(--f7-theme-color-rgb),.5));border-radius:var(--f7-progressbar-border-radius);display:block;height:var(--f7-progressbar-height);overflow:hidden;position:relative;transform-origin:center top;transform-style:preserve-3d;width:100%}.progressbar{vertical-align:middle}.progressbar span{background-color:var(--f7-progressbar-progress-color,var(--f7-theme-color));height:100%;position:absolute;right:0;top:0;transform:translate3d(100%,0,0);transition-duration:.15s;width:100%}.progressbar-infinite{z-index:15000}.progressbar-infinite:after,.progressbar-infinite:before{background-color:var(--f7-progressbar-progress-color,var(--f7-theme-color));content:"";display:block;height:100%;position:absolute;right:0;top:0;transform:translateZ(0);transform-origin:right center;width:100%}.progressbar-infinite.color-multi{background:none!important}.progressbar-in{animation:progressbar-in .15s forwards}.progressbar-out{animation:progressbar-out .15s forwards}.framework7-root>.progressbar,.framework7-root>.progressbar-infinite,.page>.progressbar,.page>.progressbar-infinite,.panel>.progressbar,.panel>.progressbar-infinite,.popup>.progressbar,.popup>.progressbar-infinite,.view>.progressbar,.view>.progressbar-infinite,.views>.progressbar,.views>.progressbar-infinite,body>.progressbar,body>.progressbar-infinite{border-radius:0!important;left:0;position:absolute;top:0;transform-origin:center top!important;z-index:15000}@keyframes progressbar-in{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes progressbar-out{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}.ios .progressbar-infinite:before{animation:ios-progressbar-infinite 1s linear infinite}.ios .progressbar-infinite:after{display:none}.ios .progressbar-infinite.color-multi:before{animation:ios-progressbar-infinite-multicolor 3s linear infinite;background-image:linear-gradient(90deg,#4cd964,#5ac8fa,#007aff,#34aadc,#5856d6,#ff2d55,#5856d6,#34aadc,#007aff,#5ac8fa,#4cd964);background-repeat:repeat-x;background-size:25% 100%;width:400%}@keyframes ios-progressbar-infinite{0%{transform:translate3d(100%,0,0)}to{transform:translate3d(-100%,0,0)}}@keyframes ios-progressbar-infinite-multicolor{0%{transform:translateZ(0)}to{transform:translate3d(-50%,0,0)}}.md .progressbar-infinite:before{animation:md-progressbar-infinite-1 2s linear infinite}.md .progressbar-infinite:after{animation:md-progressbar-infinite-2 2s linear infinite}.md .progressbar-infinite.color-multi:before{animation:md-progressbar-infinite-multicolor-bg 3s step-end infinite;background:none}.md .progressbar-infinite.color-multi:after{animation:md-progressbar-infinite-multicolor-fill 3s linear infinite;background:none;transform-origin:center center}@keyframes md-progressbar-infinite-1{0%{transform:translateX(10%) scaleX(.1)}25%{transform:translateX(-30%) scaleX(.6)}50%{transform:translateX(-100%) scaleX(1)}to{transform:translateX(-100%) scaleX(1)}}@keyframes md-progressbar-infinite-2{0%{transform:translateX(100%) scaleX(1)}40%{transform:translateX(100%) scaleX(1)}75%{transform:translateX(-60%) scaleX(.35)}90%{transform:translateX(-100%) scaleX(.1)}to{transform:translateX(-100%) scaleX(.1)}}@keyframes md-progressbar-infinite-multicolor-bg{0%{background-color:#4caf50}25%{background-color:#f44336}50%{background-color:#2196f3}75%{background-color:#ffeb3b}}@keyframes md-progressbar-infinite-multicolor-fill{0%{background-color:#f44336;transform:scaleX(0)}24.9%{background-color:#f44336;transform:scaleX(1)}25%{background-color:#2196f3;transform:scaleX(0)}49.9%{background-color:#2196f3;transform:scaleX(1)}50%{background-color:#ffeb3b;transform:scaleX(0)}74.9%{background-color:#ffeb3b;transform:scaleX(1)}75%{background-color:#4caf50;transform:scaleX(0)}to{background-color:#4caf50;transform:scaleX(1)}}.ios{--f7-sortable-handler-width:36px;--f7-sortable-sorting-item-box-shadow:0px 2px 8px rgba(0,0,0,0.6);--f7-sortable-handler-color:rgba(0,0,0,0.22);--f7-sortable-sorting-item-bg-color:rgba(255,255,255,0.8)}.ios .dark,.ios.dark{--f7-sortable-sorting-item-bg-color:rgba(50,50,50,0.8);--f7-sortable-handler-color:rgba(255,255,255,0.55)}.md{--f7-sortable-handler-width:42px;--f7-sortable-sorting-item-box-shadow:none}.md,.md .dark,.md [class*=color-]{--f7-sortable-handler-color:var(--f7-md-on-surface-variant);--f7-sortable-sorting-item-bg-color:var(--f7-md-surface-3)}.sortable .sortable-handler{align-items:center;cursor:move;display:flex;height:100%;justify-content:center;left:var(--f7-safe-area-left);opacity:0;overflow:hidden;pointer-events:none;position:absolute;top:0;transition-duration:.3s;width:var(--f7-sortable-handler-width);z-index:10}.sortable .sortable-handler:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-sortable-handler-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;height:20px;letter-spacing:normal;line-height:1;overflow:hidden;text-align:center;text-rendering:optimizeLegibility;text-transform:none;transform:translateX(10px);transition-duration:.3s;white-space:nowrap;width:100%;width:18px}.sortable li.sorting{background:var(--f7-sortable-sorting-item-bg-color);box-shadow:var(--f7-sortable-sorting-item-box-shadow);transition-duration:0ms;z-index:50}.sortable li.sorting .item-inner:after{display:none!important}.sortable-opposite .sortable-handler{left:auto;right:var(--f7-safe-area-left)}.sortable-opposite .sortable-handler:after{transform:translateX(-10px)}.sortable-opposite .item-content,.sortable-opposite.links-list li a,.sortable.simple-list li,.sortable:not(.sortable-opposite) .item-inner{transition-duration:.3s;transition-property:all}.sortable-sorting li{transition-duration:.3s}.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler{opacity:1;pointer-events:auto;touch-action:none}.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler:after{transform:translateX(0)}.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner:before,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-title-row:before,.sortable-enabled:not(.sortable-opposite).links-list li:not(.no-sorting):not(.disallow-sorting)>a:before{display:none}.links-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) a,.no-chevron .sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,.simple-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting),.sortable-enabled :not(.sortable-opposite).no-chevron .item-link .item-inner,.sortable-enabled.no-chevron:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-inner,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link.no-chevron .item-inner{padding-left:calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right))}.links-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) a,.simple-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting),.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .item-content{padding-right:calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right))}.ios .sortable-handler:after{content:"sort_ios"}.md .sortable-handler:after{content:"sort_md"}:root{--f7-swipeout-delete-button-bg-color:#ff3b30;--f7-swipeout-button-text-color:#fff;--f7-swipeout-button-padding-vertical:0px;--f7-swipeout-button-bg-color:rgba(0,0,0,0.22)}:root .dark,:root.dark{--f7-swipeout-button-bg-color:rgba(255,255,255,0.55)}.ios{--f7-swipeout-button-padding-horizontal:30px;--f7-swipeout-button-font-size:inherit;--f7-swipeout-button-font-weight:inherit}.md{--f7-swipeout-button-padding-horizontal:24px;--f7-swipeout-button-font-size:14px;--f7-swipeout-button-font-weight:500}.md .dark,.md.dark{--f7-swipeout-button-text-color:#000}.swipeout{overflow:hidden;transform-style:preserve-3d}.swipeout-deleting{transition-duration:.3s}.swipeout-deleting .swipeout-content{transform:translateX(-100%)}.swipeout-transitioning .swipeout-actions-left a,.swipeout-transitioning .swipeout-actions-right a,.swipeout-transitioning .swipeout-content,.swipeout-transitioning .swipeout-overswipe{transition-duration:.3s;transition-property:transform,left}.swipeout-content{position:relative;z-index:10}.swipeout-overswipe{transition-duration:.2s;transition-property:left}.swipeout-actions-left,.swipeout-actions-right{direction:ltr;display:flex;height:100%;position:absolute;top:0}.swipeout-actions-left>a,.swipeout-actions-left>button,.swipeout-actions-left>div,.swipeout-actions-left>span,.swipeout-actions-right>a,.swipeout-actions-right>button,.swipeout-actions-right>div,.swipeout-actions-right>span{align-items:center;background:var(--f7-swipeout-button-bg-color);color:var(--f7-swipeout-button-text-color);display:flex;font-size:var(--f7-swipeout-button-font-size);font-weight:var(--f7-swipeout-button-font-weight);left:0;padding:var(--f7-swipeout-button-padding-vertical) var(--f7-swipeout-button-padding-horizontal);position:relative}.swipeout-actions-left>a:after,.swipeout-actions-left>button:after,.swipeout-actions-left>div:after,.swipeout-actions-left>span:after,.swipeout-actions-right>a:after,.swipeout-actions-right>button:after,.swipeout-actions-right>div:after,.swipeout-actions-right>span:after{background:inherit;content:"";height:100%;pointer-events:none;position:absolute;top:0;transform:translateZ(0);width:600%;z-index:-1}.swipeout-actions-left .swipeout-delete,.swipeout-actions-right .swipeout-delete{background:var(--f7-swipeout-delete-button-bg-color)}.swipeout-actions-right{right:0;transform:translateX(calc(100% + 1px))}.swipeout-actions-right>a:after,.swipeout-actions-right>button:after,.swipeout-actions-right>div:after,.swipeout-actions-right>span:after{left:100%}.swipeout-actions-right>a:last-child,.swipeout-actions-right>button:last-child,.swipeout-actions-right>div:last-child,.swipeout-actions-right>span:last-child{padding-right:calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-right))}.swipeout-actions-left{left:0;transform:translateX(calc(-100% - 1px))}.swipeout-actions-left>a:after,.swipeout-actions-left>button:after,.swipeout-actions-left>div:after,.swipeout-actions-left>span:after{right:100%}.swipeout-actions-left>a:first-child,.swipeout-actions-left>button:first-child,.swipeout-actions-left>div:first-child,.swipeout-actions-left>span:first-child{padding-left:calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-left))}.swipeout-actions-left [class*=color-],.swipeout-actions-right [class*=color-]{--f7-swipeout-button-bg-color:var(--f7-theme-color)}:root{--f7-accordion-chevron-icon-down:"chevron_down";--f7-accordion-chevron-icon-up:"chevron_up"}.accordion-item-toggle{cursor:pointer}.list.accordion-list .accordion-item-toggle{overflow:hidden;position:relative;transition-duration:.3s}.list.accordion-list .accordion-item-toggle.active-state{background-color:var(--f7-list-link-pressed-bg-color);transition-duration:.3s}.list.accordion-list .accordion-item-toggle.active-state>.item-inner:after{background-color:initial}.list.accordion-list .accordion-item-toggle .item-inner{transition-duration:.3s;transition-property:background-color}.list.accordion-list .accordion-item-toggle .item-inner:after{transition-duration:.3s}.list.accordion-list .accordion-item-toggle .ripple-wave{z-index:0}.accordion-item .item-link .item-inner:after{transition-duration:.3s}.accordion-item .block,.accordion-item .list{margin-bottom:0;margin-top:0}.accordion-item .block>h1:first-child,.accordion-item .block>h2:first-child,.accordion-item .block>h3:first-child,.accordion-item .block>h4:first-child,.accordion-item .block>p:first-child{margin-top:10px}.accordion-item .block>h1:last-child,.accordion-item .block>h2:last-child,.accordion-item .block>h3:last-child,.accordion-item .block>h4:last-child,.accordion-item .block>p:last-child{margin-bottom:10px}.accordion-item-opened .accordion-item-toggle .item-inner:after,.accordion-item-opened>.item-link .item-inner:after{background-color:initial}.list li.accordion-item ul{padding-right:0}.accordion-item-content{font-size:14px;height:0;overflow:hidden;position:relative;transition-duration:.3s}.accordion-item-opened>.accordion-item-content{height:auto}html.device-android-4 .accordion-item-content{transform:none}.list .accordion-item-toggle .item-inner:before{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-list-chevron-icon-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-size:var(--f7-list-chevron-icon-font-size);font-style:normal;font-weight:400;height:100%;left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));letter-spacing:normal;line-height:1;pointer-events:none;position:absolute;text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;white-space:nowrap;width:100%}.list:not(.accordion-opposite) .accordion-item-toggle .item-inner{padding-left:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left))}.accordion-opposite .accordion-item-toggle .item-inner,.accordion-opposite .accordion-item-toggle.item-link .item-inner,.accordion-opposite .accordion-item>.item-link>.item-content>.item-inner,.accordion-opposite .accordion-item>.item-link>.item-inner{padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left))}.accordion-opposite .accordion-item>.item-link>.item-title-row{padding-right:0}.accordion-opposite .accordion-item-toggle .item-inner:before,.accordion-opposite .accordion-item-toggle.item-link .item-inner:before,.accordion-opposite .accordion-item>.item-link .item-title-row:before,.accordion-opposite .accordion-item>.item-link>.item-content>.item-inner:before,.accordion-opposite .accordion-item>.item-link>.item-inner:before{display:none}.accordion-opposite .accordion-item-toggle.item-content,.accordion-opposite .accordion-item-toggle>.item-content,.accordion-opposite .accordion-item>.item-content,.accordion-opposite .accordion-item>.item-link>.item-content,.accordion-opposite.links-list .accordion-item>a{padding-right:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));position:relative}.accordion-opposite .accordion-item-toggle.item-content:before,.accordion-opposite .accordion-item-toggle>.item-content:before,.accordion-opposite .accordion-item>.item-content:before,.accordion-opposite .accordion-item>.item-link>.item-content:before,.accordion-opposite.links-list .accordion-item>a:before{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-list-chevron-icon-color);content:var(--f7-accordion-chevron-icon-down);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-size:var(--f7-list-chevron-icon-font-size);font-style:normal;font-weight:400;height:100%;height:8px;letter-spacing:normal;line-height:1;line-height:8px;margin-top:-4px;pointer-events:none;position:absolute;right:calc((var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal))/2 + var(--f7-safe-area-right));text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;transform:translateX(-50%);white-space:nowrap;width:100%;width:14px}.list .accordion-item-toggle.active-state{background-color:var(--f7-list-link-pressed-bg-color)}.accordion-item.media-item .accordion-item-toggle .item-title-row:before,.accordion-item.media-item>.item-link .item-title-row:before,.links-list .accordion-item>a:before,.list .accordion-item-toggle .item-inner:before,.list:not(.media-list) .accordion-item:not(.media-item) .accordion-item-toggle .item-inner:before,.list:not(.media-list) .accordion-item:not(.media-item)>.item-link .item-inner:before,.media-list .accordion-item .accordion-item-toggle .item-title-row:before,.media-list .accordion-item>.item-link .item-title-row:before{content:var(--f7-accordion-chevron-icon-down);height:8px;line-height:8px;margin-top:-4px;width:14px}.accordion-item-opened.media-item .accordion-item-toggle .item-title-row:before,.accordion-item-opened.media-item>.item-link .item-title-row:before,.accordion-opposite .accordion-item-opened .accordion-item-toggle.item-content:before,.accordion-opposite .accordion-item-opened .accordion-item-toggle>.item-content:before,.accordion-opposite .accordion-item-opened>.item-content:before,.accordion-opposite .accordion-item-opened>.item-link>.item-content:before,.accordion-opposite .links-list .accordion-item-opened>a:before,.links-list .accordion-item-opened>a:before,.list .accordion-item-toggle.accordion-item-opened .item-inner:before,.list:not(.media-list) .accordion-item-opened:not(.media-item) .accordion-item-toggle .item-inner:before,.list:not(.media-list) .accordion-item-opened:not(.media-item)>.item-link .item-inner:before,.media-list .accordion-item-opened .accordion-item-toggle .item-title-row:before,.media-list .accordion-item-opened>.item-link .item-title-row:before{content:var(--f7-accordion-chevron-icon-up);height:8px;line-height:8px;margin-top:-4px;width:14px}.ios{--f7-contacts-list-title-font-size:inherit;--f7-contacts-list-title-font-weight:600;--f7-contacts-list-title-height:22px;--f7-contacts-list-title-text-color:#000;--f7-contacts-list-title-bg-color:#f7f7f7}.ios .dark,.ios.dark{--f7-contacts-list-title-text-color:#fff;--f7-contacts-list-title-bg-color:#323234}.md{--f7-contacts-list-title-font-size:20px;--f7-contacts-list-title-font-weight:500;--f7-contacts-list-title-height:48px;--f7-contacts-list-title-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-contacts-list-title-text-color:var(--f7-theme-color)}.contacts-list{--f7-list-margin-vertical:0px}.contacts-list .list-group-title,.contacts-list li.list-group-title{background-color:var(--f7-contacts-list-title-bg-color,var(--f7-list-group-title-bg-color));color:var(--f7-contacts-list-title-text-color,var(--f7-theme-color));font-size:var(--f7-contacts-list-title-font-size,var(--f7-list-group-title-font-size));font-weight:var(--f7-contacts-list-title-font-weight,var(--f7-list-group-title-font-weight));height:var(--f7-contacts-list-title-height,var(--f7-list-group-title-height));line-height:var(--f7-contacts-list-title-height,var(--f7-list-group-title-height))}.contacts-list .list-group:first-child ul:before,.contacts-list .list-group:last-child ul:after{display:none!important}.md .contacts-list .list-group-title{overflow:visible;pointer-events:none;width:40px}.md .contacts-list .list-group-title+li{margin-top:calc(var(--f7-contacts-list-title-height)*-1)}.md .contacts-list .list-group-title:before{display:none!important}.md .contacts-list li:not(.list-group-title){padding-right:40px}:root{--f7-list-index-width:16px;--f7-list-index-font-size:11px;--f7-list-index-font-weight:600;--f7-list-index-item-height:14px;--f7-list-index-label-font-weight:500}.ios{--f7-list-index-label-text-color:#fff;--f7-list-index-label-size:44px;--f7-list-index-label-font-size:17px;--f7-list-index-skip-dot-size:6px}.md{--f7-list-index-label-size:56px;--f7-list-index-label-font-size:20px;--f7-list-index-skip-dot-size:4px}.md,.md .dark,.md [class*=color-]{--f7-list-index-label-bg-color:var(--f7-md-primary);--f7-list-index-label-text-color:var(--f7-md-on-primary)}.list-index{bottom:0;cursor:pointer;left:var(--f7-safe-area-left);position:absolute;text-align:center;top:0;-webkit-user-select:none;user-select:none;width:var(--f7-list-index-width);z-index:10}.list-index:before{content:"";height:100%;position:absolute;right:100%;top:0;width:20px}.list-index ul{align-items:center;color:var(--f7-list-index-text-color,var(--f7-theme-color));display:flex;flex-direction:column;font-size:var(--f7-list-index-font-size);font-weight:var(--f7-list-index-font-weight);height:100%;justify-content:center}.list-index li,.list-index ul{flex-shrink:0;list-style:none;margin:0;padding:0;position:relative;width:100%}.list-index li{display:block;height:var(--f7-list-index-item-height);line-height:var(--f7-list-index-item-height)}.list-index .list-index-skip-placeholder:after{background:var(--f7-list-index-text-color,var(--f7-theme-color));border-radius:50%;content:"";height:var(--f7-list-index-skip-dot-size);left:50%;margin-left:calc(var(--f7-list-index-skip-dot-size)*-1/2);margin-top:calc(var(--f7-list-index-skip-dot-size)*-1/2);position:absolute;top:50%;width:var(--f7-list-index-skip-dot-size)}.list-index .list-index-label{background-color:var(--f7-list-index-label-bg-color,var(--f7-theme-color));bottom:0;color:var(--f7-list-index-label-text-color);font-size:var(--f7-list-index-label-font-size);font-weight:var(--f7-list-index-label-font-weight);height:var(--f7-list-index-label-size);line-height:var(--f7-list-index-label-size);position:absolute;right:100%;text-align:center;width:var(--f7-list-index-label-size)}.navbars~.page>.list-index,.navbar~.list-index,.navbar~.page>.list-index{top:var(--f7-navbar-height)}.ios .navbars~.toolbar-top-ios .md .navbar~.toolbar-top-md~.list-index,.ios .navbar~.toolbar-top-ios~.list-index,.navbars~.toolbar-top~.list-index,.navbar~.toolbar-top~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-toolbar-height))}.ios .navbars~.toolbar-top-ios .md .navbar~.toolbar-top-md.tabbar-icons~.list-index,.ios .navbar~.toolbar-top-ios.tabbar-icons~.list-index,.navbars~.toolbar-top.tabbar-icons~.list-index,.navbar~.toolbar-top.tabbar-icons~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height))}.navbars~.subnavbar~.list-index,.navbar~.subnavbar~.list-index,.page-with-subnavbar .navbar~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-subnavbar-height))}.ios .toolbar-bottom-ios~* .page>.list-index,.ios .toolbar-bottom-ios~.list-index,.ios .toolbar-bottom-ios~.page>.list-index,.md .toolbar-bottom-md~* .page>.list-index,.md .toolbar-bottom-md~.list-index,.md .toolbar-bottom-md~.page>.list-index,.toolbar-bottom~* .page>.list-index,.toolbar-bottom~.list-index,.toolbar-bottom~.page>.list-index{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.ios .toolbar-bottom-ios.tabbar-icons~* .page>.list-index,.ios .toolbar-bottom-ios.tabbar-icons~.list-index,.ios .toolbar-bottom-ios.tabbar-icons~.page>.list-index,.md .toolbar-bottom-md.tabbar-icons~* .page>.list-index,.md .toolbar-bottom-md.tabbar-icons~.list-index,.md .toolbar-bottom-md.tabbar-icons~.page>.list-index,.toolbar-bottom.tabbar-icons~* .page>.list-index,.toolbar-bottom.tabbar-icons~.list-index,.toolbar-bottom.tabbar-icons~.page>.list-index{bottom:calc(var(--f7-tabbar-icons-height) + var(--f7-safe-area-bottom))}.ios .list-index .list-index-label{border-radius:50%;margin-bottom:calc(var(--f7-list-index-label-size)*-1/2);margin-right:calc(var(--f7-list-index-width) - 1px)}.ios .list-index .list-index-label:before{background-color:inherit;border-radius:50% 0 50% 50%;content:"";height:100%;left:0;position:absolute;top:0;transform:rotate(45deg);width:100%;z-index:-1}.md .list-index .list-index-label{border-radius:50% 50% 0 50%}:root{--f7-timeline-inner-block-margin-vertical:16px;--f7-timeline-divider-margin-horizontal:16px;--f7-timeline-horizontal-date-height:34px;--f7-timeline-year-height:24px;--f7-timeline-year-font-weight:inherit;--f7-timeline-month-height:24px;--f7-timeline-month-font-size:inherit;--f7-timeline-month-font-weight:inherit;--f7-timeline-item-text-font-weight:inherit;--f7-timeline-item-subtitle-font-weight:inherit}.ios{--f7-timeline-divider-color:#bbb;--f7-timeline-padding-horizontal:16px;--f7-timeline-margin-vertical:35px;--f7-timeline-item-inner-border-radius:7px;--f7-timeline-item-time-font-size:13px;--f7-timeline-item-title-font-size:17px;--f7-timeline-item-title-line-height:inherit;--f7-timeline-item-title-font-weight:600;--f7-timeline-item-subtitle-font-size:15px;--f7-timeline-item-subtitle-line-height:inherit;--f7-timeline-item-text-font-size:inherit;--f7-timeline-item-text-color:inherit;--f7-timeline-item-text-line-height:inherit;--f7-timeline-year-font-size:16px;--f7-timeline-horizontal-item-padding:10px;--f7-timeline-item-inner-bg-color:#fff;--f7-timeline-item-time-text-color:rgba(0,0,0,0.45);--f7-timeline-horizontal-item-border-color:rgba(0,0,0,0.22);--f7-timeline-horizontal-item-date-border-color:rgba(0,0,0,0.22)}.ios .dark,.ios.dark{--f7-timeline-horizontal-item-border-color:rgba(255,255,255,0.15);--f7-timeline-horizontal-item-date-border-color:rgba(255,255,255,0.15);--f7-timeline-item-inner-bg-color:#1c1c1d;--f7-timeline-item-time-text-color:rgba(255,255,255,0.55)}.md{--f7-timeline-padding-horizontal:16px;--f7-timeline-margin-vertical:32px;--f7-timeline-item-inner-border-radius:16px;--f7-timeline-item-time-font-size:13px;--f7-timeline-item-title-font-size:16px;--f7-timeline-item-title-line-height:inherit;--f7-timeline-item-title-font-weight:400;--f7-timeline-item-subtitle-font-size:inherit;--f7-timeline-item-subtitle-line-height:inherit;--f7-timeline-item-text-font-size:inherit;--f7-timeline-item-text-line-height:inherit;--f7-timeline-year-font-size:16px;--f7-timeline-horizontal-item-padding:12px;--f7-timeline-horizontal-item-date-border-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-timeline-divider-color:var(--f7-md-outline);--f7-timeline-item-text-color:var(--f7-md-on-surface);--f7-timeline-horizontal-item-border-color:var(--f7-md-outline);--f7-timeline-item-inner-bg-color:var(--f7-md-surface-1);--f7-timeline-item-time-text-color:var(--f7-md-on-surface-variant)}.timeline{box-sizing:border-box;margin:var(--f7-timeline-margin-vertical) 0;padding:0 var(--f7-timeline-padding-horizontal);padding-bottom:0;padding-left:calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-right));padding-top:0}.block-strong .timeline{margin:0;padding:0}.timeline-item{box-sizing:border-box;display:flex;justify-content:flex-start;overflow:hidden;padding:2px 0 var(--f7-timeline-padding-horizontal);position:relative}.timeline-item:last-child{padding-bottom:2px}.timeline-item-date{box-sizing:border-box;flex-shrink:0;text-align:right;width:50px}.timeline-item-date small{font-size:10px}.timeline-item-content{flex-shrink:10;margin:2px;min-width:0;position:relative}.timeline-item-content .block,.timeline-item-content .card,.timeline-item-content .list,.timeline-item-content.block,.timeline-item-content.card,.timeline-item-content.list{margin:0;width:100%}.timeline-item-content .block+.block,.timeline-item-content .block+.card,.timeline-item-content .block+.list,.timeline-item-content .card+.block,.timeline-item-content .card+.card,.timeline-item-content .card+.list,.timeline-item-content .list+.block,.timeline-item-content .list+.card,.timeline-item-content .list+.list{margin:var(--f7-timeline-inner-block-margin-vertical) 0 0}.timeline-item-content h1:first-child,.timeline-item-content h2:first-child,.timeline-item-content h3:first-child,.timeline-item-content h4:first-child,.timeline-item-content ol:first-child,.timeline-item-content p:first-child,.timeline-item-content ul:first-child{margin-top:0}.timeline-item-content h1:last-child,.timeline-item-content h2:last-child,.timeline-item-content h3:last-child,.timeline-item-content h4:last-child,.timeline-item-content ol:last-child,.timeline-item-content p:last-child,.timeline-item-content ul:last-child{margin-bottom:0}.timeline-item-inner{background:var(--f7-timeline-item-inner-bg-color);border-radius:var(--f7-timeline-item-inner-border-radius);box-sizing:border-box;padding:8px var(--f7-timeline-padding-horizontal)}.timeline-item-inner+.timeline-item-inner{margin-top:var(--f7-timeline-inner-block-margin-vertical)}.timeline-item-inner .block{color:inherit;padding:0}.timeline-item-inner .block-strong{margin:0;padding-left:0;padding-right:0}.timeline-item-inner .block-strong:after,.timeline-item-inner .block-strong:before,.timeline-item-inner .list ul:after,.timeline-item-inner .list ul:before{display:none!important}.timeline-item-divider{background:var(--f7-timeline-divider-color);border-radius:50%;flex-shrink:0;height:10px;margin:3px var(--f7-timeline-divider-margin-horizontal) 0;position:relative;width:1px;width:10px}.timeline-item-divider:after,.timeline-item-divider:before{background:inherit;content:" ";height:100vh;left:50%;position:absolute;transform:translate3d(-50%,0,0);width:1px}.timeline-item-divider:after{top:100%}.timeline-item-divider:before{bottom:100%}.timeline-item:first-child .timeline-item-divider:before,.timeline-item:last-child .timeline-item-divider:after{display:none}.timeline-item-time{color:var(--f7-timeline-item-time-text-color);font-size:var(--f7-timeline-item-time-font-size);margin-top:var(--f7-timeline-inner-block-margin-vertical)}.timeline-item-time:first-child,.timeline-item-time:last-child,.timeline-item-title+.timeline-item-time{margin-top:0}.timeline-item-title{font-size:var(--f7-timeline-item-title-font-size);font-weight:var(--f7-timeline-item-title-font-weight);line-height:var(--f7-timeline-item-title-line-height)}.timeline-item-subtitle{font-size:var(--f7-timeline-item-subtitle-font-size);font-weight:var(--f7-timeline-item-subtitle-font-weight);line-height:var(--f7-timeline-item-subtitle-line-height)}.timeline-item-text{color:var(--f7-timeline-item-text-color);font-size:var(--f7-timeline-item-text-font-size);font-weight:var(--f7-timeline-item-text-font-weight);line-height:var(--f7-timeline-item-text-line-height)}.timeline-sides .timeline-item,.timeline-sides .timeline-item-right{margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.timeline-sides .timeline-item .timeline-item-date,.timeline-sides .timeline-item-right .timeline-item-date{text-align:left}.timeline-sides .timeline-item-left,.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.timeline-sides .timeline-item-left .timeline-item-date,.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:right}@media (min-width:480px){.xsmall-sides .timeline-item,.xsmall-sides .timeline-item-right{margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.xsmall-sides .timeline-item .timeline-item-date,.xsmall-sides .timeline-item-right .timeline-item-date{text-align:left}.xsmall-sides .timeline-item-left,.xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.xsmall-sides .timeline-item-left .timeline-item-date,.xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:right}}@media (min-width:568px){.small-sides .timeline-item,.small-sides .timeline-item-right{margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.small-sides .timeline-item .timeline-item-date,.small-sides .timeline-item-right .timeline-item-date{text-align:left}.small-sides .timeline-item-left,.small-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.small-sides .timeline-item-left .timeline-item-date,.small-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:right}}@media (min-width:768px){.medium-sides .timeline-item,.medium-sides .timeline-item-right{margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.medium-sides .timeline-item .timeline-item-date,.medium-sides .timeline-item-right .timeline-item-date{text-align:left}.medium-sides .timeline-item-left,.medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.medium-sides .timeline-item-left .timeline-item-date,.medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:right}}@media (min-width:1024px){.large-sides .timeline-item,.large-sides .timeline-item-right{margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.large-sides .timeline-item .timeline-item-date,.large-sides .timeline-item-right .timeline-item-date{text-align:left}.large-sides .timeline-item-left,.large-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.large-sides .timeline-item-left .timeline-item-date,.large-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:right}}@media (min-width:1200px){.xlarge-sides .timeline-item,.xlarge-sides .timeline-item-right{margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.xlarge-sides .timeline-item .timeline-item-date,.xlarge-sides .timeline-item-right .timeline-item-date{text-align:left}.xlarge-sides .timeline-item-left,.xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.xlarge-sides .timeline-item-left .timeline-item-date,.xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:right}}.timeline-horizontal{display:flex;height:100%;margin:0;padding:0;padding-left:var(--f7-safe-area-left);padding-right:0;position:relative}.timeline-horizontal .timeline-item{display:block;flex-shrink:0;height:100%;margin:0;padding:0;padding-bottom:var(--f7-timeline-horizontal-item-padding);padding-top:var(--f7-timeline-horizontal-date-height)!important;position:relative;width:100/3vw}.timeline-horizontal .timeline-item:after{background-color:var(--f7-timeline-horizontal-item-border-color);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.timeline-horizontal .timeline-item-date{background-color:var(--f7-bars-bg-color);color:var(--f7-bars-text-color);height:var(--f7-timeline-horizontal-date-height);left:0;line-height:var(--f7-timeline-horizontal-date-height);padding:0 var(--f7-timeline-horizontal-item-padding);position:absolute;text-align:left;text-align:right;top:0;width:auto;width:100%}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .timeline-horizontal .timeline-item-date{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-bars-bg-color-rgb),var(--f7-bars-translucent-opacity))}}.timeline-horizontal .timeline-item-date:after{background-color:var(--f7-timeline-horizontal-item-date-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.timeline-horizontal .timeline-item-content{-webkit-overflow-scrolling:touch;height:calc(100vw - var(--f7-timeline-horizontal-item-padding));margin:0;overflow:auto;padding:var(--f7-timeline-horizontal-item-padding)}.timeline-horizontal .timeline-item-divider{display:none}.timeline-horizontal .timeline-month:last-child .timeline-item:last-child:after,.timeline-horizontal>.timeline-item:last-child:after{display:none!important}.timeline-horizontal.timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.timeline-cols-20 .timeline-item{width:5vw}@media (min-width:480px){.timeline-horizontal.xsmall-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.xsmall-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.xsmall-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.xsmall-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.xsmall-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.xsmall-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.xsmall-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.xsmall-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.xsmall-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.xsmall-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.xsmall-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.xsmall-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.xsmall-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.xsmall-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.xsmall-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.xsmall-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.xsmall-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.xsmall-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.xsmall-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.xsmall-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:568px){.timeline-horizontal.small-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.small-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.small-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.small-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.small-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.small-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.small-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.small-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.small-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.small-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.small-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.small-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.small-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.small-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.small-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.small-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.small-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.small-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.small-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.small-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:768px){.timeline-horizontal.medium-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.medium-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.medium-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.medium-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.medium-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.medium-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.medium-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.medium-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.medium-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.medium-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.medium-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.medium-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.medium-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.medium-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.medium-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.medium-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.medium-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.medium-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.medium-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.medium-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:1024px){.timeline-horizontal.large-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.large-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.large-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.large-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.large-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.large-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.large-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.large-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.large-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.large-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.large-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.large-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.large-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.large-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.large-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.large-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.large-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.large-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.large-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.large-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:1200px){.timeline-horizontal.xlarge-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.xlarge-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.xlarge-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.xlarge-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.xlarge-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.xlarge-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.xlarge-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.xlarge-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.xlarge-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.xlarge-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.xlarge-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.xlarge-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.xlarge-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.xlarge-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.xlarge-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.xlarge-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.xlarge-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.xlarge-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.xlarge-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.xlarge-timeline-cols-20 .timeline-item{width:5vw}}.timeline-year{padding-top:var(--f7-timeline-year-height)}.timeline-year:after{background-color:var(--f7-timeline-horizontal-item-border-color);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.timeline-year:last-child:after{display:none!important}.timeline-month{padding-top:var(--f7-timeline-month-height)}.timeline-month .timeline-item:before{background-color:var(--f7-timeline-horizontal-item-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.timeline-month,.timeline-year{box-sizing:border-box;display:flex;flex-shrink:0;height:100%;position:relative}.timeline-year-title{font-size:var(--f7-timeline-year-font-size);font-weight:var(--f7-timeline-year-font-weight);height:var(--f7-timeline-year-height);line-height:var(--f7-timeline-year-height)}.timeline-month-title{font-size:var(--f7-timeline-month-font-size);font-weight:var(--f7-timeline-month-font-weight);height:var(--f7-timeline-month-height);line-height:var(--f7-timeline-month-height)}.timeline-month-title,.timeline-year-title{background-color:var(--f7-bars-bg-color);box-sizing:border-box;color:var(--f7-bars-text-color);left:0;padding:0 var(--f7-timeline-horizontal-item-padding);position:absolute;top:0;width:100%}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .timeline-month-title,.ios-translucent-bars .timeline-year-title{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-bars-bg-color-rgb),var(--f7-bars-translucent-opacity))}}.timeline-month-title span,.timeline-year-title span{display:inline-block;position:sticky;right:calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-right))}.timeline-month-title span{margin-top:-2px}.timeline-year:first-child .timeline-month:first-child .timeline-month-title,.timeline-year:first-child .timeline-year-title,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-month-title{left:calc(var(--f7-safe-area-left)*-1);right:0;width:auto}.timeline-horizontal .timeline-item:first-child,.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-item:first-child,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-month-title+.timeline-item{overflow:visible}.timeline-horizontal .timeline-item:first-child .timeline-item-date,.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child .timeline-item-date,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-item:first-child .timeline-item-date,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-month-title+.timeline-item .timeline-item-date{left:calc(0px - var(--f7-safe-area-left));padding-left:calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-left));right:0;width:auto}.timeline-year:last-child .timeline-month:last-child .timeline-month-title,.timeline-year:last-child .timeline-year-title{right:calc(0px - var(--f7-safe-area-right));width:auto}.timeline-horizontal .timeline-item:last-child,.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child{overflow:visible}.timeline-horizontal .timeline-item:last-child .timeline-item-date,.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child .timeline-item-date{left:0;right:calc(0px - var(--f7-safe-area-right));width:auto}.ios .block-strong .timeline-item-inner{border:1px solid rgba(0,0,0,.1);border-radius:3px}.ios .timeline-year-title span{margin-top:3px}.md .timeline-year-title span{margin-top:2px}.tabs .tab{display:none}.tabs .tab-active{display:block}.tabs-animated-wrap{height:100%;overflow:hidden;position:relative;width:100%}.tabs-animated-wrap>.tabs{display:flex;height:100%;transition-duration:.3s}.tabs-animated-wrap>.tabs>.tab{display:block;flex-shrink:0;width:100%}.tabs-animated-wrap.not-animated>.tabs{transition-duration:0ms}swiper-container.tabs{height:100%}swiper-container.tabs>.tab{display:block;touch-action:pan-y}.page>.tabs{height:100%}:root{--f7-panel-width:260px;--f7-panel-backdrop-bg-color:rgba(0,0,0,0.3);--f7-panel-bg-color:#fff}:root .dark,:root.dark{--f7-panel-bg-color:#000}.ios{--f7-panel-collapsed-width:58px;--f7-panel-transition-duration:400ms;--f7-panel-transition-timing-function:initial}.md{--f7-panel-collapsed-width:60px;--f7-panel-transition-duration:400ms;--f7-panel-transition-timing-function:cubic-bezier(0,0.8,0.34,1)}.panel-backdrop{background-color:var(--f7-panel-backdrop-bg-color);height:100%;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transform:translateZ(0);transition-duration:var(--f7-panel-transition-duration);transition-property:transform,opacity;visibility:hidden;width:100%;z-index:5999}.panel-backdrop .with-panel,.panel-backdrop .with-panel-closing{visibility:visible}.panel-backdrop.not-animated{transition-duration:0ms!important}.panel{background-color:var(--f7-panel-bg-color);box-sizing:border-box;height:100%;overflow:visible;position:absolute;top:0;transform:translateZ(0);transition-duration:var(--f7-panel-transition-duration);transition-property:transform;width:var(--f7-panel-width);z-index:1000}.panel:not(.panel-in):not(.panel-out):not(.panel-in-breakpoint):not(.panel-in-collapsed):not(.panel-in-swipe){display:none}.panel:after{content:"";height:100%;opacity:0;pointer-events:none;position:absolute;top:0;transition-duration:var(--f7-panel-transition-duration);transition-property:transform,opacity;width:20px;z-index:5999}.panel.not-animated,.panel.not-animated:after,.panel.panel-reveal.not-animated~.view,.panel.panel-reveal.not-animated~.views{transition-duration:0ms!important}.panel.panel-resizing{-webkit-user-select:none;user-select:none}.panel.panel-resizing,.panel.panel-resizing:after,.panel.panel-resizing~.view,.panel.panel-resizing~.views{transition-duration:0ms!important}.panel-cover,.panel-floating{z-index:6000}.panel-floating{border-radius:16px;bottom:calc(8px + var(--f7-safe-area-bottom, 0px));height:auto;overflow:hidden;top:calc(8px + var(--f7-safe-area-top, 0px))}.panel-floating .view,.panel-floating .views{--f7-safe-area-top:0px;--f7-safe-area-bottom:0px}.page .panel-floating{bottom:calc(8px + var(--f7-safe-area-bottom, 0px));top:calc(8px + var(--f7-page-navbar-offset, 0px))}.page .panel-floating .page{--f7-page-navbar-offset:0px}.page .panel-floating .navbars~*,.page .panel-floating .navbar~*{--f7-page-navbar-offset:calc(var(--f7-navbar-height))}.panel-left{left:0;width:var(--f7-panel-left-width,var(--f7-panel-width))}.panel-left.panel-cover,.panel-left.panel-floating,.panel-left.panel-push{transform:translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width))*-1),0,0)}.panel-right{right:0;width:var(--f7-panel-right-width,var(--f7-panel-width))}.panel-right.panel-cover,.panel-right.panel-floating,.panel-right.panel-push{transform:translate3d(var(--f7-panel-right-width,var(--f7-panel-width)),0,0)}.panel-in-breakpoint{transform:translateZ(0)!important;transition-duration:0ms}.panel-in-breakpoint:after{display:none}.panel-in-breakpoint.panel-cover,.panel-in-breakpoint.panel-floating{z-index:5900}.panel,.panel-backdrop{transition-timing-function:var(--f7-panel-transition-timing-function)}html.with-panel-closing .framework7-root>.view,html.with-panel-closing .views,html.with-panel-left-push .framework7-root>.view,html.with-panel-left-push .views,html.with-panel-left-reveal .framework7-root>.view,html.with-panel-left-reveal .views,html.with-panel-right-push .framework7-root>.view,html.with-panel-right-push .views,html.with-panel-right-reveal .framework7-root>.view,html.with-panel-right-reveal .views{transition-duration:var(--f7-panel-transition-duration);transition-property:transform;transition-timing-function:var(--f7-panel-transition-timing-function)}html.with-panel .framework7-root>.view .page-content,html.with-panel .framework7-root>.views .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}html.with-panel-left-push .framework7-root>.view,html.with-panel-left-push .views,html.with-panel-left-reveal .framework7-root>.view,html.with-panel-left-reveal .views{transform:translate3d(var(--f7-panel-left-width,var(--f7-panel-width)),0,0)}html.with-panel-right-push .framework7-root>.view,html.with-panel-right-push .views,html.with-panel-right-reveal .framework7-root>.view,html.with-panel-right-reveal .views{transform:translate3d(calc(var(--f7-panel-right-width, var(--f7-panel-width))*-1),0,0)}.page>.panel-backdrop{z-index:290}.page .panel-push,.page>.panel-reveal{z-index:1}.page>.panel-cover,.page>.panel-floating{z-index:300}.page.with-panel-closing>.page-content,.page.with-panel-closing>.tabs,.page.with-panel-left-push>.page-content,.page.with-panel-left-push>.tabs,.page.with-panel-left-reveal>.page-content,.page.with-panel-left-reveal>.tabs,.page.with-panel-right-push>.page-content,.page.with-panel-right-push>.tabs,.page.with-panel-right-reveal>.page-content,.page.with-panel-right-reveal>.tabs{transition-duration:var(--f7-panel-transition-duration);transition-property:transform;transition-timing-function:var(--f7-panel-transition-timing-function)}.page.with-panel-left-push>.page-content,.page.with-panel-left-push>.tabs,.page.with-panel-left-reveal>.page-content,.page.with-panel-left-reveal>.tabs{transform:translate3d(var(--f7-panel-left-width,var(--f7-panel-width)),0,0)}.page.with-panel-right-push>.page-content,.page.with-panel-right-push>.tabs,.page.with-panel-right-reveal>.page-content,.page.with-panel-right-reveal>.tabs{transform:translate3d(calc(var(--f7-panel-right-width, var(--f7-panel-width))*-1),0,0)}.with-panel-closing .panel-backdrop-in{opacity:0;pointer-events:auto;visibility:visible}.with-panel-left-cover .panel-backdrop-in,.with-panel-left-floating .panel-backdrop-in,.with-panel-left-push .panel-backdrop-in,.with-panel-left-reveal .panel-backdrop-in,.with-panel-right-cover .panel-backdrop-in,.with-panel-right-floating .panel-backdrop-in,.with-panel-right-push .panel-backdrop-in,.with-panel-right-reveal .panel-backdrop-in{opacity:1;pointer-events:auto;visibility:visible}.with-panel-left-push .panel-backdrop-in,.with-panel-left-reveal .panel-backdrop-in{transform:translate3d(var(--f7-panel-left-width,var(--f7-panel-width)),0,0)}.with-panel-right-push .panel-backdrop-in,.with-panel-right-reveal .panel-backdrop-in{transform:translate3d(calc(var(--f7-panel-right-width, var(--f7-panel-width))*-1),0,0)}.with-panel-left-cover .panel-left,.with-panel-left-push .panel-left{transform:translateZ(0)}.with-panel-left-floating .panel-left{transform:translate3d(8px,0,0)}.with-panel-right-cover .panel-right,.with-panel-right-push .panel-right{transform:translateZ(0)}.with-panel-right-floating .panel-right{transform:translate3d(-8px,0,0)}.panel-resizable{max-width:100%}.panel-resize-handler{cursor:col-resize;display:none;height:100%;position:absolute;top:0;width:6px;z-index:6000}.panel-resizable .panel-resize-handler{display:block}.panel-left.panel-cover .panel-resize-handler,.panel-left.panel-floating .panel-resize-handler{right:-3px}.panel-left.panel-push .panel-resize-handler,.panel-left.panel-reveal .panel-resize-handler{right:0}.panel-right.panel-cover .panel-resize-handler,.panel-right.panel-floating .panel-resize-handler{left:-3px}.panel-right.panel-push .panel-resize-handler,.panel-right.panel-reveal .panel-resize-handler{left:0}.panel-left.panel-in-collapsed~.page-content,.panel-left.panel-in-collapsed~.tabs,.panel-left.panel-in-collapsed~.view,.panel-left.panel-in-collapsed~.views{margin-left:var(--f7-panel-left-collapsed-width,var(--f7-panel-collapsed-width))}.page.with-panel-left-reveal .panel-left.panel-in-collapsed~.page-content,.page.with-panel-left-reveal .panel-left.panel-in-collapsed~.tabs,html.with-panel-left-reveal .panel-left.panel-in-collapsed~.view,html.with-panel-left-reveal .panel-left.panel-in-collapsed~.views{transform:translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width)) - var(--f7-panel-left-collapsed-width, var(--f7-panel-collapsed-width))),0,0)}.panel-right.panel-in-collapsed~.page-content,.panel-right.panel-in-collapsed~.tabs,.panel-right.panel-in-collapsed~.view,.panel-right.panel-in-collapsed~.views{margin-right:var(--f7-panel-right-collapsed-width,var(--f7-panel-collapsed-width))}.page.with-panel-right-reveal .panel-right.panel-in-collapsed~.page-content,.page.with-panel-right-reveal .panel-right.panel-in-collapsed~.tabs,html.with-panel-right-reveal .panel-right.panel-in-collapsed~.view,html.with-panel-right-reveal .panel-right.panel-in-collapsed~.views{transform:translate3d(calc(var(--f7-panel-right-collapsed-width, var(--f7-panel-collapsed-width)) - var(--f7-panel-right-width, var(--f7-panel-width))),0,0)}html.with-modal-popup-push .framework7-root,html.with-modal-popup-push-closing .framework7-root{--f7-panelPushScale:var(--f7-popup-push-scale);--f7-panelPushTransitionDuration:var(--f7-popup-transition-duration);--f7-panelPushTransitionTimingFunction:var(--f7-popup-transition-timing-function);--f7-panelPushBorderRadius:var(--f7-popup-push-border-radius)}html.with-modal-sheet-push .framework7-root,html.with-modal-sheet-push-closing .framework7-root{--f7-panelPushScale:var(--f7-sheet-push-scale);--f7-panelPushTransitionDuration:var(--f7-sheet-transition-duration);--f7-panelPushTransitionTimingFunction:var(--f7-sheet-transition-timing-function);--f7-panelPushBorderRadius:var(--f7-sheet-push-border-radius)}html.with-modal-popup-push .framework7-root>.panel-in,html.with-modal-popup-push .framework7-root>.panel-out,html.with-modal-sheet-push .framework7-root>.panel-in,html.with-modal-sheet-push .framework7-root>.panel-out{transition-duration:var(--f7-panelPushTransitionDuration);transition-timing-function:var(--f7-panelPushTransitionTimingFunction)}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-left,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-left,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-left,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-left,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-left,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-left{border-top-left-radius:var(--f7-panelPushBorderRadius);transform:scale(var(--f7-panelPushScale,1));transform-origin:50vw center}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-left .view,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-left .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-left .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-left .view{border-top-left-radius:var(--f7-panelPushBorderRadius)}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-right,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-right,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-right,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-right,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-right,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-right{border-top-right-radius:var(--f7-panelPushBorderRadius);transform:scale(var(--f7-panelPushScale,1));transform-origin:calc(var(--f7-panel-left-width, var(--f7-panel-width)) - 50vw) center}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-right .view,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-right .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-right .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-right .view{border-top-right-radius:var(--f7-panelPushBorderRadius)}html.with-modal-popup-push .framework7-root>.panel-in.panel-cover.panel-left,html.with-modal-popup-push .framework7-root>.panel-out.panel-cover.panel-left,html.with-modal-sheet-push .framework7-root>.panel-in.panel-cover.panel-left,html.with-modal-sheet-push .framework7-root>.panel-out.panel-cover.panel-left{transform:translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width))*-1),0,0)}html.with-modal-popup-push .framework7-root>.panel-in.panel-cover.panel-right,html.with-modal-popup-push .framework7-root>.panel-out.panel-cover.panel-right,html.with-modal-sheet-push .framework7-root>.panel-in.panel-cover.panel-right,html.with-modal-sheet-push .framework7-root>.panel-out.panel-cover.panel-right{transform:translate3d(var(--f7-panel-right-width,var(--f7-panel-width)),0,0)}html.with-modal-popup-push-closing .framework7-root>.panel-in,html.with-modal-sheet-push-closing .framework7-root>.panel-in{transition-duration:var(--f7-panelPushTransitionDuration);transition-timing-function:var(--f7-panelPushTransitionTimingFunction)}html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-reveal.panel-left,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-reveal.panel-left{transform-origin:50vw center}html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-reveal.panel-right,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-reveal.panel-right{transform-origin:calc(var(--f7-panel-right-width, var(--f7-panel-width)) - 50vw) center}.md .panel-cover{overflow:hidden}.md .panel-cover.panel-left{border-radius:0 16px 16px 0}.md .panel-cover.panel-right{border-radius:16px 0 0 16px}:root{--f7-card-margin-horizontal:16px;--f7-card-margin-vertical:16px;--f7-card-content-padding-horizontal:16px;--f7-card-content-padding-vertical:16px;--f7-card-font-size:inherit;--f7-card-header-text-color:inherit;--f7-card-header-font-weight:400;--f7-card-header-padding-horizontal:16px;--f7-card-footer-font-weight:400;--f7-card-footer-font-size:inherit;--f7-card-footer-padding-horizontal:16px;--f7-card-expandable-font-size:16px;--f7-card-expandable-tablet-width:670px;--f7-card-expandable-tablet-height:670px}.ios{--f7-card-border-radius:8px;--f7-card-box-shadow:0px 1px 2px rgba(0,0,0,0.2);--f7-card-header-font-size:17px;--f7-card-header-padding-vertical:10px;--f7-card-header-min-height:44px;--f7-card-footer-text-color:rgba(0,0,0,0.45);--f7-card-footer-padding-vertical:10px;--f7-card-footer-min-height:44px;--f7-card-expandable-margin-horizontal:20px;--f7-card-expandable-margin-vertical:30px;--f7-card-expandable-box-shadow:0px 20px 40px rgba(0,0,0,0.3);--f7-card-expandable-border-radius:16px;--f7-card-expandable-tablet-border-radius:16px;--f7-card-expandable-header-font-size:27px;--f7-card-expandable-header-font-weight:bold;--f7-card-text-color:inherit;--f7-card-bg-color:#fff;--f7-card-expandable-bg-color:#fff;--f7-card-outline-border-color:rgba(0,0,0,0.12);--f7-card-header-border-color:rgba(0,0,0,0.1);--f7-card-footer-border-color:rgba(0,0,0,0.1)}.ios .dark,.ios.dark{--f7-card-bg-color:#1c1c1d;--f7-card-expandable-bg-color:#1c1c1d;--f7-card-outline-border-color:rgba(255,255,255,0.15);--f7-card-header-border-color:rgba(255,255,255,0.15);--f7-card-footer-border-color:rgba(255,255,255,0.15);--f7-card-footer-text-color:rgba(255,255,255,0.55)}.md{--f7-card-border-radius:16px;--f7-card-box-shadow:0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);--f7-card-header-font-size:22px;--f7-card-header-padding-vertical:16px;--f7-card-header-min-height:48px;--f7-card-footer-padding-vertical:16px;--f7-card-footer-min-height:48px;--f7-card-expandable-margin-horizontal:12px;--f7-card-expandable-margin-vertical:24px;--f7-card-expandable-box-shadow:0px 6px 6px -3px rgba(0,0,0,0.2),0px 10px 14px 1px rgba(0,0,0,0.14),0px 4px 18px 3px rgba(0,0,0,0.12);--f7-card-expandable-border-radius:16px;--f7-card-expandable-tablet-border-radius:16px;--f7-card-expandable-header-font-size:22px;--f7-card-expandable-header-font-weight:500}.md,.md .dark,.md [class*=color-]{--f7-card-bg-color:var(--f7-md-surface-1);--f7-card-expandable-bg-color:var(--f7-md-surface-1);--f7-card-outline-border-color:var(--f7-md-outline);--f7-card-header-border-color:var(--f7-md-outline);--f7-card-footer-border-color:var(--f7-md-outline);--f7-card-text-color:var(--f7-md-on-surface);--f7-card-footer-text-color:var(--f7-md-on-surface-variant)}.card .list>ul:after,.card .list>ul:before,.cards-list>ul:after,.cards-list>ul:before{display:none!important}.card .list ul,.cards-list ul{background:none}.card{background:var(--f7-card-bg-color);border-radius:var(--f7-card-border-radius);color:var(--f7-card-text-color);font-size:var(--f7-card-font-size);margin:var(--f7-card-margin-vertical) calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-right)) var(--f7-card-margin-vertical) calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-left));position:relative}.card .block,.card .list{margin:0}.row:not(.no-gap) .col>.card{margin-left:0;margin-right:0}.card-raised{box-shadow:var(--f7-card-box-shadow)}.card-outline,.ios .card-outline-ios,.md .card-outline-md{border:1px solid var(--f7-card-outline-border-color)}.card-content{position:relative}.card-content-padding{padding:var(--f7-card-content-padding-vertical) var(--f7-card-content-padding-horizontal);position:relative}.card-content-padding>.block,.card-content-padding>.list{margin:calc(var(--f7-card-content-padding-vertical)*-1) calc(var(--f7-card-content-padding-horizontal)*-1)}.card-content-padding>p:first-child{margin-top:0}.card-content-padding>p:last-child{margin-bottom:0}.card-header{color:var(--f7-card-header-text-color);font-size:var(--f7-card-header-font-size);font-weight:var(--f7-card-header-font-weight);min-height:var(--f7-card-header-min-height);padding:var(--f7-card-header-padding-vertical) var(--f7-card-header-padding-horizontal)}.card-dividers .card-header,.card-header-divider .card-header,.card-header.card-header-divider{border-bottom:1px solid var(--f7-card-header-border-color)}.card-footer{color:var(--f7-card-footer-text-color);font-size:var(--f7-card-footer-font-size);font-weight:var(--f7-card-footer-font-weight);min-height:var(--f7-card-footer-min-height);padding:var(--f7-card-footer-padding-vertical) var(--f7-card-footer-padding-horizontal)}.card-dividers .card-footer,.card-footer-divider .card-footer,.card-footer.card-footer-divider{border-top:1px solid var(--f7-card-header-border-color)}.card-footer a.link{overflow:hidden}.card-footer,.card-header{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;position:relative}.card-footer[valign=top],.card-header[valign=top]{align-items:flex-start}.card-footer[valign=bottom],.card-header[valign=bottom]{align-items:flex-end}.card-footer a.link,.card-header a.link{position:relative}.card-footer a.link i.icon,.card-header a.link i.icon{display:block}.card-footer a.icon-only,.card-header a.icon-only{align-items:center;display:flex;justify-content:center;margin:0}.card-header{border-radius:var(--f7-card-border-radius) var(--f7-card-border-radius) 0 0}.card-footer{border-radius:0 0 var(--f7-card-border-radius) var(--f7-card-border-radius)}.card-expandable{background:var(--f7-card-expandable-bg-color);border-radius:var(--f7-card-expandable-border-radius);font-size:var(--f7-card-expandable-font-size);height:300px;margin:var(--f7-card-expandable-margin-vertical) calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-right)) var(--f7-card-expandable-margin-vertical) calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-left));overflow:hidden;position:relative;transform-origin:center center;transition-duration:.2s;transition-property:transform,border-radius;z-index:2}.card-expandable.card-raised{box-shadow:var(--f7-card-expandable-box-shadow)}.card-expandable:not(.card-opened){-webkit-user-select:none;user-select:none}.card-expandable.card-no-transition{transition-duration:0ms}.card-expandable.card-expandable-animate-width .card-content{transition-property:width,transform;width:100%}.card-expandable.active-state{transform:scale(.97) translateZ(0)}.card-expandable .card-opened-fade-in,.card-expandable .card-opened-fade-out{transition-duration:.4s}.card-expandable .card-opened-fade-in{opacity:0;pointer-events:none}.card-expandable .card-content{box-sizing:border-box;height:100vh;overflow:hidden;pointer-events:none;position:absolute;right:0;top:0;transform-origin:center top;transition-property:transform;width:100vw}.card-expandable .card-content .card-content-padding{padding-left:calc(var(--f7-safe-area-left) + var(--f7-card-content-padding-horizontal));padding-right:calc(var(--f7-safe-area-right) + var(--f7-card-content-padding-horizontal))}.card-expandable.card-opened{transition-duration:0ms}.card-expandable.card-closing,.card-expandable.card-opening,.card-expandable.card-transitioning{transition-duration:.4s}.card-expandable.card-opening .card-content{transition-duration:.3s}.card-expandable.card-closing .card-content{transition-duration:.5s}.card-expandable.card-closing,.card-expandable.card-opened,.card-expandable.card-opening{z-index:300}.card-expandable.card-opened,.card-expandable.card-opening{border-radius:0}.card-expandable.card-opened .card-opened-fade-in,.card-expandable.card-opening .card-opened-fade-in{opacity:1;pointer-events:auto}.card-expandable.card-opened .card-opened-fade-out,.card-expandable.card-opening .card-opened-fade-out{opacity:0;pointer-events:none}.card-expandable.card-opened .card-content{-webkit-overflow-scrolling:touch;overflow:auto;pointer-events:auto}.card-expandable .card-header{font-size:var(--f7-card-expandable-header-font-size);font-weight:var(--f7-card-expandable-header-font-weight)}.card-prevent-open{pointer-events:auto}.card-expandable-size{height:0;left:0;opacity:0;pointer-events:none;position:absolute;top:0;visibility:hidden;width:0}@media (min-width:768px) and (min-height:670px){.card-expandable:not(.card-tablet-fullscreen){max-width:var(--f7-card-expandable-tablet-width)}.card-expandable:not(.card-tablet-fullscreen).card-opened,.card-expandable:not(.card-tablet-fullscreen).card-opening{border-radius:var(--f7-card-expandable-tablet-border-radius)}.card-expandable:not(.card-tablet-fullscreen):not(.card-expandable-animate-width) .card-content{width:var(--f7-card-expandable-tablet-width)}.card-expandable:not(.card-tablet-fullscreen) .card-expandable-size{height:var(--f7-card-expandable-tablet-height);width:var(--f7-card-expandable-tablet-width)}}.page.page-with-card-opened .page-content{overflow:hidden}.card-backdrop{background:rgba(0,0,0,.2);height:100%;left:0;opacity:0;pointer-events:none;position:fixed;top:0;width:100%;z-index:299}.card-backdrop-in{animation:card-backdrop-fade-in .4s forwards;pointer-events:auto}.card-backdrop-out{animation:card-backdrop-fade-out .4s forwards}@supports ((-webkit-backdrop-filter:blur(15px)) or (backdrop-filter:blur(15px))){.card-backdrop{-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background:transparent}}@keyframes card-backdrop-fade-in{0%{opacity:0}to{opacity:1}}@keyframes card-backdrop-fade-out{0%{opacity:1}to{opacity:0}}:root{--f7-chip-font-size:14px;--f7-chip-media-font-size:16px;--f7-chip-delete-button-color:#000}:root .dark,:root.dark{--f7-chip-delete-button-color:#fff}.ios{--f7-chip-height:28px;--f7-chip-media-size:28px;--f7-chip-padding-horizontal:10px;--f7-chip-border-radius:28px;--f7-chip-font-weight:normal;--f7-chip-outline-border-color:rgba(0,0,0,0.12);--f7-chip-bg-color:rgba(0,0,0,0.12);--f7-chip-text-color:#000;--f7-chip-outline-text-color:#000}.ios .dark,.ios.dark{--f7-chip-bg-color:#333;--f7-chip-text-color:#fff;--f7-chip-outline-text-color:#fff;--f7-chip-outline-border-color:rgba(255,255,255,0.12)}.md{--f7-chip-font-weight:500;--f7-chip-media-size:24px;--f7-chip-height:32px;--f7-chip-padding-horizontal:12px;--f7-chip-border-radius:8px}.md,.md .dark,.md [class*=color-]{--f7-chip-bg-color:var(--f7-md-secondary-container);--f7-chip-text-color:var(--f7-md-on-secondary-container);--f7-chip-outline-text-color:var(--f7-md-on-surface);--f7-chip-outline-border-color:var(--f7-md-outline)}.chip{background-color:var(--f7-chip-bg-color);border-radius:var(--f7-chip-border-radius);color:var(--f7-chip-text-color);display:inline-flex;font-size:var(--f7-chip-font-size);font-weight:var(--f7-chip-font-weight);height:var(--f7-chip-height);line-height:var(--f7-chip-height);margin:2px 0;padding-left:var(--f7-chip-padding-horizontal);padding-right:var(--f7-chip-padding-horizontal);position:relative}.chip,.chip-media{align-items:center;box-sizing:border-box;vertical-align:middle}.chip-media{border-radius:50%;border-radius:var(--f7-chip-media-size);color:#fff;display:flex;flex-shrink:0;font-size:var(--f7-chip-media-font-size);height:var(--f7-chip-media-size);justify-content:center;line-height:var(--f7-chip-media-size);text-align:center;width:var(--f7-chip-media-size)}.chip-media i.icon{font-size:calc(var(--f7-chip-media-size) - 8px);height:calc(var(--f7-chip-media-size) - 8px)}.chip-media img{border-radius:50%;display:block;height:auto;max-height:100%;max-width:100%;width:auto}.chip-media+.chip-label{margin-right:4px}.chip-label{flex-shrink:1;min-width:0;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}.chip-delete{background-repeat:no-repeat;color:var(--f7-chip-delete-button-color);cursor:pointer;flex-shrink:0;height:24px;opacity:.54;position:relative;text-align:center;width:24px}.chip-delete:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;line-height:24px;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.chip .chip-delete.active-state{opacity:1}.chip-outline,.ios .chip-outline-ios,.md .chip-outline-md{background:none;border:1px solid var(--f7-chip-outline-border-color);color:var(--f7-chip-outline-text-color)}.ios .chip[class*=color-]{--f7-chip-bg-color:var(--f7-theme-color);--f7-chip-text-color:#fff}.ios .chip-outline-ios[class*=color-],.ios .chip-outline[class*=color-]{--f7-chip-outline-border-color:var(--f7-theme-color);--f7-chip-outline-text-color:var(--f7-theme-color)}.ios .chip-media{margin-right:calc(var(--f7-chip-padding-horizontal)*-1)}.ios .chip-delete{margin-left:calc(var(--f7-chip-padding-horizontal)*-1)}.ios .chip-delete:after{content:"delete_round_ios";font-size:10px}.md .chip-media{margin-right:calc(var(--f7-chip-padding-horizontal)*-1 + 4px)}.md .chip-label+.chip-delete{margin-right:4px}.md .chip-delete{margin-left:calc(var(--f7-chip-padding-horizontal)*-1 + 4px)}.md .chip-delete:after{content:"delete_round_md";font-size:16px}:root{--f7-input-bg-color:transparent;--f7-label-font-weight:400;--f7-label-height:16px;--f7-label-font-size:12px;--f7-floating-label-scale:1.33333;--f7-input-padding-left:0px;--f7-input-padding-right:0px;--f7-input-error-text-color:#ff3b30;--f7-input-error-font-size:12px;--f7-input-error-line-height:1.4;--f7-input-error-font-weight:400;--f7-input-info-font-size:12px;--f7-input-info-line-height:1.4;--f7-textarea-height:100px}.ios{--f7-input-item-bg-color:transparent;--f7-input-item-border-radius:0px;--f7-input-height:40px;--f7-input-font-size:16px;--f7-input-placeholder-color:#a9a9a9;--f7-textarea-padding-vertical:8px;--f7-label-text-color:inherit;--f7-input-clear-button-size:14px;--f7-input-outline-border-radius:8px;--f7-input-text-color:#000000;--f7-input-info-text-color:rgba(0,0,0,0.45);--f7-input-clear-button-color:rgba(0,0,0,0.45);--f7-input-outline-border-color:#bbb}.ios .dark,.ios.dark{--f7-input-text-color:#fff;--f7-input-info-text-color:rgba(255,255,255,0.55);--f7-input-clear-button-color:rgba(255,255,255,0.5);--f7-input-outline-border-color:#444}.md{--f7-input-item-border-radius:4px 4px 0 0;--f7-input-height:24px;--f7-input-font-size:16px;--f7-textarea-padding-vertical:0px;--f7-input-outline-border-radius:4px;--f7-floating-label-scale:1.33333;--f7-input-clear-button-size:24px;--f7-input-info-text-color:rgba(0,0,0,0.45)}.md .dark,.md.dark{--f7-input-info-text-color:rgba(255,255,255,0.45)}.md,.md .dark,.md [class*=color-]{--f7-input-placeholder-color:var(--f7-md-on-surface-variant);--f7-input-item-bg-color:var(--f7-md-surface-variant);--f7-input-border-color:var(--f7-md-outline);--f7-input-clear-button-color:var(--f7-md-on-surface-variant);--f7-input-outline-border-color:var(--f7-md-outline);--f7-input-text-color:var(--f7-md-on-surface);--f7-label-text-color:var(--f7-md-on-surface-variant)}input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],select,textarea{-webkit-appearance:none;appearance:none;background:none;border:none;border-radius:0;box-shadow:none;box-sizing:border-box;color:inherit;display:block;font-family:inherit;font-size:inherit;margin:0;outline:0;padding:0;resize:none}input[type=date]:-internal-autofill-selected,input[type=datetime-local]:-internal-autofill-selected,input[type=email]:-internal-autofill-selected,input[type=month]:-internal-autofill-selected,input[type=number]:-internal-autofill-selected,input[type=password]:-internal-autofill-selected,input[type=search]:-internal-autofill-selected,input[type=tel]:-internal-autofill-selected,input[type=text]:-internal-autofill-selected,input[type=time]:-internal-autofill-selected,input[type=url]:-internal-autofill-selected,select:-internal-autofill-selected,textarea:-internal-autofill-selected{background-color:initial!important;transition:background-color 5000s ease-in-out 0s!important}input[type=date]:-webkit-autofill,input[type=datetime-local]:-webkit-autofill,input[type=email]:-webkit-autofill,input[type=month]:-webkit-autofill,input[type=number]:-webkit-autofill,input[type=password]:-webkit-autofill,input[type=search]:-webkit-autofill,input[type=tel]:-webkit-autofill,input[type=text]:-webkit-autofill,input[type=time]:-webkit-autofill,input[type=url]:-webkit-autofill,select:-webkit-autofill,textarea:-webkit-autofill{background-color:initial!important;-webkit-transition:background-color 5000s ease-in-out 0s!important;transition:background-color 5000s ease-in-out 0s!important}input[type=date]:-webkit-autofill-and-obscured,input[type=date]:autofill,input[type=datetime-local]:-webkit-autofill-and-obscured,input[type=datetime-local]:autofill,input[type=email]:-webkit-autofill-and-obscured,input[type=email]:autofill,input[type=month]:-webkit-autofill-and-obscured,input[type=month]:autofill,input[type=number]:-webkit-autofill-and-obscured,input[type=number]:autofill,input[type=password]:-webkit-autofill-and-obscured,input[type=password]:autofill,input[type=search]:-webkit-autofill-and-obscured,input[type=search]:autofill,input[type=tel]:-webkit-autofill-and-obscured,input[type=tel]:autofill,input[type=text]:-webkit-autofill-and-obscured,input[type=text]:autofill,input[type=time]:-webkit-autofill-and-obscured,input[type=time]:autofill,input[type=url]:-webkit-autofill-and-obscured,input[type=url]:autofill,select:-webkit-autofill-and-obscured,select:autofill,textarea:-webkit-autofill-and-obscured,textarea:autofill{background-color:initial!important;-webkit-transition:background-color 5000s ease-in-out 0s!important;transition:background-color 5000s ease-in-out 0s!important}.textarea-resizable-shadow{left:-1000px;opacity:0;pointer-events:none;position:absolute;top:-1000px;visibility:hidden;z-index:-1000}.list input[type=date],.list input[type=datetime-local],.list input[type=email],.list input[type=month],.list input[type=number],.list input[type=password],.list input[type=search],.list input[type=tel],.list input[type=text],.list input[type=time],.list input[type=url],.list select{background-color:var(--f7-input-bg-color,transparent);color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);height:var(--f7-input-height);padding-left:var(--f7-input-padding-left);padding-right:var(--f7-input-padding-right);width:100%}.list input[type=date]::placeholder,.list input[type=datetime-local]::placeholder,.list input[type=email]::placeholder,.list input[type=month]::placeholder,.list input[type=number]::placeholder,.list input[type=password]::placeholder,.list input[type=search]::placeholder,.list input[type=tel]::placeholder,.list input[type=text]::placeholder,.list input[type=time]::placeholder,.list input[type=url]::placeholder,.list select::placeholder{color:var(--f7-input-placeholder-color)}.list textarea{background-color:var(--f7-input-bg-color,transparent);color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);height:var(--f7-textarea-height);line-height:1.4;padding:var(--f7-textarea-padding-vertical) var(--f7-input-padding-right) var(--f7-textarea-padding-vertical) var(--f7-input-padding-left);resize:none;width:100%}.list textarea::placeholder{color:var(--f7-input-placeholder-color)}.list textarea.resizable{height:calc(var(--f7-input-height) + var(--f7-textarea-padding-vertical)*2)}.list input[type=date],.list input[type=datetime-local],.list input[type=month],.list input[type=time]{line-height:var(--f7-input-height)}.list input[type=date],.list input[type=datetime-local],.list input[type=month]{flex-direction:row-reverse;text-align:right;width:auto}.list .item-floating-label,.list .item-label{color:var(--f7-label-text-color);flex-shrink:0;font-size:var(--f7-label-font-size);font-weight:var(--f7-label-font-weight);line-height:var(--f7-label-height);transition-duration:.2s;transition-property:transform,color;vertical-align:top;width:auto}.list .item-floating-label{color:var(--f7-input-placeholder-color);max-width:calc(100%/var(--f7-floating-label-scale));pointer-events:none;right:var(--f7-input-padding-right);transform-origin:right center}.list .item-floating-label~.item-input-wrap input::placeholder,.list .item-floating-label~.item-input-wrap textarea::placeholder{opacity:0;transition-duration:.1s}.list .item-floating-label~.item-input-wrap input.input-focused::placeholder,.list .item-floating-label~.item-input-wrap textarea.input-focused::placeholder{opacity:1;transition-duration:.3s}.list .item-input-with-value .item-floating-label{color:var(--f7-label-text-color)}.list .item-input-focused .item-floating-label,.list .item-input-with-value .item-floating-label{transform:scale(1) translateY(0)!important}.list .item-input-wrap{flex-shrink:1;position:relative;width:100%}.input,.item-input{position:relative}.item-input .item-inner{align-items:flex-start;display:flex;flex-direction:column;justify-content:center}.input-error-message,.item-input-error-message{box-sizing:border-box;color:var(--f7-input-error-text-color);display:none;font-size:var(--f7-input-error-font-size);font-weight:var(--f7-input-error-font-weight);line-height:var(--f7-input-error-line-height)}.input-info,.item-input-info{color:var(--f7-input-info-text-color);font-size:var(--f7-input-info-font-size);line-height:var(--f7-input-info-line-height)}.input-invalid .input-error-message,.input-invalid .item-input-error-message,.item-input-invalid .input-error-message,.item-input-invalid .item-input-error-message{display:block}.input-invalid .input-info,.input-invalid .item-input-info,.item-input-invalid .input-info,.item-input-invalid .item-input-info{display:none}.input{position:relative}.input input,.input select,.input textarea{width:100%}.input-clear-button{background:none;border:none;color:var(--f7-input-clear-button-color);cursor:pointer;height:var(--f7-input-clear-button-size);left:0;margin:0;margin-top:calc(var(--f7-input-clear-button-size)*-1/2);opacity:0;outline:0;padding:0;pointer-events:none;position:absolute;top:50%;transition-duration:.1s;visibility:hidden;width:var(--f7-input-clear-button-size);z-index:1}.input-clear-button:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.input-clear-button:before{content:"";left:50%;position:absolute;top:50%}.item-input-wrap .input-clear-button{top:calc(var(--f7-input-height)/2)}.input-clear-button.active-state{opacity:.75!important}.input-with-value .input-clear-button,.input-with-value~.input-clear-button,.item-input-with-value .input-clear-button{opacity:1;pointer-events:auto;visibility:visible}.input-dropdown,.input-dropdown-wrap{position:relative}.input-dropdown-wrap:before,.input-dropdown:before{border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #727272;content:"";height:0;left:6px;margin-top:-2px;pointer-events:none;position:absolute;top:50%;width:0}.input-dropdown input,.input-dropdown select,.input-dropdown textarea,.input-dropdown-wrap input,.input-dropdown-wrap select,.input-dropdown-wrap textarea{padding-left:calc(20px + var(--f7-input-padding-left))}.input-outline:after,.item-input-outline .item-content:after,.item-input-outline.item-content:after{border:1px solid var(--f7-input-outline-border-color);border-radius:var(--f7-input-outline-border-radius);bottom:8px;box-sizing:border-box;content:"";left:0;pointer-events:none;position:absolute;right:0;top:8px;transition-duration:.2s}.input-outline .item-floating-label,.input-outline .item-label,.item-input-outline .item-content .item-floating-label,.item-input-outline .item-content .item-label,.item-input-outline.item-content .item-floating-label,.item-input-outline.item-content .item-label{background:var(--f7-page-bg-color);padding:4px;pointer-events:none;z-index:1}.input-outline.input-focused:after,.input-outline.item-input-focused:after,.item-input-outline .item-content.input-focused:after,.item-input-outline .item-content.item-input-focused:after,.item-input-outline.item-content.input-focused:after,.item-input-outline.item-content.item-input-focused:after{border-color:var(--f7-input-outline-invalid-border-color,var(--f7-theme-color));border-width:2px}.input-outline.input-invalid:after,.input-outline.item-input-invalid:after,.item-input-outline .item-content.input-invalid:after,.item-input-outline .item-content.item-input-invalid:after,.item-input-outline.item-content.input-invalid:after,.item-input-outline.item-content.item-input-invalid:after{border-color:var(--f7-input-outline-invalid-border-color,var(--f7-input-error-text-color));border-width:2px}.block-strong .item-input-outline .item-floating-label,.block-strong .item-input-outline .item-label,.ios .block-strong-ios .item-input-outline .item-floating-label,.ios .block-strong-ios .item-input-outline .item-label,.md .block-strong-md .item-input-outline .item-floating-label,.md .block-strong-md .item-input-outline .item-label{background:var(--f7-block-strong-bg-color)!important}.ios .list-strong-ios .item-input-outline .item-floating-label,.ios .list-strong-ios .item-input-outline .item-label,.list-strong .item-input-outline .item-floating-label,.list-strong .item-input-outline .item-label,.md .list-strong-md .item-input-outline .item-floating-label,.md .list-strong-md .item-input-outline .item-label{background:var(--f7-list-strong-bg-color)!important}.dark option{background-color:var(--f7-page-bg-color)}.ios .item-floating-label+.item-input-wrap,.ios .item-label+.item-input-wrap{margin-top:0}.ios .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height) + 25%))}.ios .item-input-focused .item-floating-label{color:var(--f7-label-text-color)}.ios .item-input .item-media{align-self:flex-start}.ios .item-input-wrap{margin-bottom:calc(var(--f7-list-item-padding-vertical)*-1);margin-top:calc(var(--f7-list-item-padding-vertical)*-1)}.ios .item-input:not(.item-input-outline) .item-content,.ios .item-input:not(.item-input-outline).item-content{background:var(--f7-input-item-bg-color)}.ios .input-error-message,.ios .input-info,.ios .item-input-error-message,.ios .item-input-info{margin-bottom:6px;margin-top:-8px;position:relative}.ios .item-input-focused .item-floating-label,.ios .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-label-text-color))}.ios .item-input-focused .item-inner:after{background:var(--f7-input-focused-border-color,var(--f7-list-item-border-color))}.ios .item-input-invalid .item-floating-label,.ios .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-label-text-color))}.ios .item-input-invalid .item-inner:after{background:var(--f7-input-invalid-border-color,var(--f7-list-item-border-color))}.ios .input-invalid input,.ios .input-invalid select,.ios .input-invalid textarea,.ios .item-input-invalid input,.ios .item-input-invalid select,.ios .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-error-text-color))}.ios .input-clear-button:after{content:"delete_round_ios";font-size:calc(var(--f7-input-clear-button-size)/1.4);line-height:1.4}.ios .input-clear-button:before{height:44px;margin-left:-22px;margin-top:-22px;width:44px}.ios .item-input-outline .item-content,.ios .item-input-outline.item-content{margin-left:16px;margin-right:16px;padding-bottom:8px;padding-top:8px}.ios li.item-input-outline:first-child,.ios li:first-child>.item-input-outline{padding-top:16px}.ios li.item-input-outline:first-child:after,.ios li:first-child>.item-input-outline:after{top:16px}.ios li.item-input-outline:last-child,.ios li:last-child>.item-input-outline{padding-bottom:16px}.ios li.item-input-outline:last-child:after,.ios li:last-child>.item-input-outline:after{bottom:16px}.ios .input-outline .item-inner,.ios .item-input-outline .item-content .item-inner,.ios .item-input-outline.item-content .item-inner{display:block;padding-bottom:0;padding-top:0}.ios .input-outline .item-input-wrap,.ios .item-input-outline .item-content .item-input-wrap,.ios .item-input-outline.item-content .item-input-wrap{margin-top:2px}.ios .input-outline .item-title+.item-input-wrap,.ios .item-input-outline .item-content .item-title+.item-input-wrap,.ios .item-input-outline.item-content .item-title+.item-input-wrap{margin-top:-22px}.ios .input-outline .item-floating-label,.ios .input-outline .item-label,.ios .item-input-outline .item-content .item-floating-label,.ios .item-input-outline .item-content .item-label,.ios .item-input-outline.item-content .item-floating-label,.ios .item-input-outline.item-content .item-label{display:inline-flex;margin:-8px -4px -4px;top:-4px}.ios .input-outline .item-floating-label,.ios .item-input-outline .item-content .item-floating-label,.ios .item-input-outline.item-content .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height)))}.md .item-input-wrap{min-height:var(--f7-input-height)}.md .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc((var(--f7-input-height)/2)/var(--f7-floating-label-scale)))}.md .item-input .item-inner:after{display:none!important}.md .item-input .item-content,.md .item-input.item-content{margin-left:16px;margin-right:16px;padding-bottom:8px;padding-top:8px}.md .input:after{background-color:var(--f7-input-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform:scaleY(1)!important;transform-origin:50% 100%;transition-duration:.2s;width:100%;z-index:15}.md .input.input-focused:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color));transform:scaleY(2)!important}.md .input.input-invalid:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color));transform:scaleY(2)!important}.md .item-input:not(.item-input-outline) .item-content:after,.md .item-input:not(.item-input-outline).item-content:after{background-color:var(--f7-input-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.md .item-input:not(.item-input-outline) .item-content:before,.md .item-input:not(.item-input-outline).item-content:before{background:var(--f7-input-item-bg-color);border-radius:var(--f7-input-item-border-radius);bottom:8px;content:"";left:0;pointer-events:none;position:absolute;right:0;top:8px}.md .item-input:not(.item-input-outline) .item-content:after,.md .item-input:not(.item-input-outline).item-content:after{bottom:8px;transform:scaleY(1)!important;transition-duration:.2s}.md .item-input:not(.item-input-outline) .item-content.item-input-focused:after,.md .item-input:not(.item-input-outline).item-content.item-input-focused:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color));transform:scaleY(2)!important}.md .item-input:not(.item-input-outline) .item-content.input-invalid:after,.md .item-input:not(.item-input-outline) .item-content.item-input-invalid:after,.md .item-input:not(.item-input-outline).item-content.input-invalid:after,.md .item-input:not(.item-input-outline).item-content.item-input-invalid:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color));transform:scaleY(2)!important}.md .input-outline .item-inner,.md .item-input-outline .item-content .item-inner,.md .item-input-outline.item-content .item-inner{padding-bottom:16px;padding-top:16px}.md .input-outline .item-floating-label,.md .input-outline .item-label,.md .item-input-outline .item-content .item-floating-label,.md .item-input-outline .item-content .item-label,.md .item-input-outline.item-content .item-floating-label,.md .item-input-outline.item-content .item-label{--label-height:calc(var(--f7-label-height) + 8px);margin:calc(-16px - var(--label-height)/2) -4px 4px}.md .input-outline .item-floating-label,.md .item-input-outline .item-content .item-floating-label,.md .item-input-outline.item-content .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-input-height)/2 + 8px))}.md .input-with-error-message,.md .input-with-info,.md .item-input-with-error-message,.md .item-input-with-info{padding-bottom:24px!important}.md .input-error-message,.md .input-info,.md .item-input-error-message,.md .item-input-info{overflow:hidden;position:absolute;right:0;text-overflow:ellipsis;top:100%;white-space:nowrap;width:100%}.md .item-input-focused .item-floating-label,.md .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-theme-color))}.md .input-focused:not(.input-outline):after,.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color))}.md .input-focused:not(.input-outline):after,.md .input-invalid:not(.input-outline):after,.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after,.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after{transform:scaleY(2)!important}.md .input-invalid:not(.input-outline):after,.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color))}.md .item-input-invalid .item-floating-label,.md .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-input-error-text-color))}.md .input-invalid input,.md .input-invalid select,.md .input-invalid textarea,.md .item-input-invalid input,.md .item-input-invalid select,.md .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-text-color))}.md .input-clear-button:after{content:"delete_round_md";font-size:var(--f7-input-clear-button-size);line-height:1}.md .input-clear-button:before{height:48px;margin-left:-24px;margin-top:-24px;width:48px}:root{--f7-checkbox-icon-color:#fff;--f7-checkbox-extra-margin:0px}:root .dark,:root.dark{--f7-checkbox-inactive-color:rgba(255,255,255,0.3);--f7-checkbox-icon-color:#000}.ios{--f7-checkbox-size:22px;--f7-checkbox-border-radius:50%;--f7-checkbox-border-width:1px;--f7-checkbox-inactive-color:#c7c7cc}.md{--f7-checkbox-size:18px;--f7-checkbox-border-radius:2px;--f7-checkbox-border-width:2px;--f7-checkbox-inactive-color:#6d6d6d}.checkbox{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.5);background-color:initial;display:inline-block;position:relative;vertical-align:middle;z-index:1}.checkbox i,.icon-checkbox{border:var(--f7-checkbox-border-width) solid var(--f7-checkbox-inactive-color);border-radius:var(--f7-checkbox-border-radius);box-sizing:border-box;display:block;flex-shrink:0;height:var(--f7-checkbox-size);position:relative;width:var(--f7-checkbox-size)}.checkbox i:after,.icon-checkbox:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-checkbox-icon-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;height:var(--f7-checkbox-size);letter-spacing:normal;line-height:1;line-height:var(--f7-checkbox-size);opacity:0;position:relative;right:calc(0px - var(--f7-checkbox-border-width));text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:calc(0px - var(--f7-checkbox-border-width));transition-property:opacity;white-space:nowrap;width:100%;width:var(--f7-checkbox-size)}.checkbox i.color-white,.color-white .checkbox i,.color-white .icon-checkbox,.icon-checkbox.color-white{--f7-theme-color:#fff;--f7-checkbox-icon-color:#000}.checkbox i.color-black,.color-black .checkbox i,.color-black .icon-checkbox,.icon-checkbox.color-black{--f7-theme-color:#000;--f7-checkbox-icon-color:#fff}.checkbox input[type=checkbox]:not(:checked)~i:after,label.item-checkbox input[type=checkbox]:not(:checked)~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:not(:checked)~.icon-checkbox:after{font-size:0}.checkbox input[type=checkbox]:checked~i,.checkbox input[type=checkbox]:indeterminate~i,label.item-checkbox input[type=checkbox]:checked~* .icon-checkbox,label.item-checkbox input[type=checkbox]:checked~.icon-checkbox,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox{background-color:var(--f7-checkbox-active-color,var(--f7-theme-color));border-color:var(--f7-checkbox-active-color,var(--f7-theme-color))}.checkbox input[type=checkbox]:checked~i:after,.checkbox input[type=checkbox]:indeterminate~i:after,label.item-checkbox input[type=checkbox]:checked~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:checked~.icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{opacity:1}.checkbox input[type=checkbox]:indeterminate~i:after,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{background:var(--f7-checkbox-icon-color);border-radius:2px;content:"";font-size:0;height:2px;margin-top:-1px;position:absolute;right:15%;top:50%;transition:0ms;width:70%}.checkbox,label.item-checkbox{cursor:pointer}.checkbox input[type=checkbox],.checkbox input[type=radio],label.item-checkbox input[type=checkbox],label.item-checkbox input[type=radio]{display:none}label.item-checkbox{transition-duration:.3s}label.item-checkbox .item-content .item-media,label.item-checkbox.item-content .item-media{align-self:center}label.item-checkbox>.icon-checkbox{margin-left:calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin))}label.item-checkbox.active-state{background-color:var(--f7-list-link-pressed-bg-color)}label.item-checkbox.active-state:after{background-color:initial}.disabled label.item-checkbox,label.item-checkbox.disabled{opacity:.55;opacity:.55!important;pointer-events:none;pointer-events:none!important}label.item-checkbox.item-checkbox-icon-end .item-inner{padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right) + var(--f7-checkbox-size) + 16px)}label.item-checkbox.item-checkbox-icon-end input[type=checkbox]~.icon-checkbox{left:calc(var(--f7-safe-area-left) + 16px);margin-left:0;position:absolute}.ios .checkbox i:after,.ios .icon-checkbox:after{content:"checkbox_ios";font-size:21px}.ios label.item-checkbox.active-state{transition-duration:0ms}.ios .checkbox input[type=checkbox]:indeterminate~i:after,.ios label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,.ios label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{height:2px;margin-top:-1px}.md .checkbox i,.md .icon-checkbox{transition-duration:.2s}.md .checkbox i:after,.md .icon-checkbox:after{content:"checkbox_md";font-size:15px;transition-duration:.2s}.md label.item-checkbox{overflow:hidden;position:relative;z-index:0}:root{--f7-radio-border-radius:50%;--f7-radio-extra-margin:0px}:root .dark,:root.dark{--f7-radio-inactive-color:rgba(255,255,255,0.3)}.ios{--f7-radio-size:22px;--f7-radio-border-width:1px;--f7-radio-inactive-color:#c7c7cc}.md{--f7-radio-size:20px;--f7-radio-border-width:2px;--f7-radio-inactive-color:#6d6d6d}.radio{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.5);display:inline-block;position:relative;vertical-align:middle;z-index:1}.icon-radio{border-radius:var(--f7-radio-border-radius);box-sizing:border-box;display:block;flex-shrink:0;height:var(--f7-radio-size);position:relative;width:var(--f7-radio-size)}.color-white .icon-radio,.color-white .radio,.icon-radio.color-white,.radio.color-white{--f7-theme-color:#fff}.color-black .icon-radio,.color-black .radio,.icon-radio.color-black,.radio.color-black{--f7-theme-color:#000}.md .icon-radio,.radio .icon-radio{border:var(--f7-radio-border-width) solid var(--f7-radio-inactive-color)}.radio,label.item-radio{cursor:pointer}.radio input[type=checkbox],.radio input[type=radio],label.item-radio input[type=checkbox],label.item-radio input[type=radio]{display:none}label.item-radio{transition-duration:.3s}label.item-radio .item-content .item-media,label.item-radio.item-content .item-media{align-self:center}label.item-radio.active-state{background-color:var(--f7-list-link-pressed-bg-color)}label.item-radio.active-state:after{background-color:initial}.disabled label.item-radio,label.item-radio.disabled{opacity:.55;opacity:.55!important;pointer-events:none;pointer-events:none!important}.ios .icon-radio:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-radio-active-color,var(--f7-theme-color));content:"radio_ios";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;height:calc(var(--f7-radio-size) - var(--f7-radio-border-width)*2);letter-spacing:normal;line-height:1;line-height:calc(var(--f7-radio-size) - var(--f7-radio-border-width)*2 + 1px);opacity:0;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%;width:calc(var(--f7-radio-size) - var(--f7-radio-border-width)*2)}.ios .radio input[type=radio]:checked~.icon-radio:after,.ios label.item-radio input[type=radio]:checked~* .icon-radio:after,.ios label.item-radio input[type=radio]:checked~.icon-radio:after{opacity:1}.ios .radio input[type=radio]:checked~.icon-radio{border-color:var(--f7-radio-active-color,var(--f7-theme-color))}.ios label.item-radio:not(.item-radio-icon-start) input[type=radio]~.icon-radio{left:calc(var(--f7-safe-area-left) + 10px);margin-top:-11px;position:absolute;top:50%}.ios label.item-radio:not(.item-radio-icon-start) .item-inner{padding-left:calc(var(--f7-safe-area-left) + 36px)}.ios label.item-radio-icon-start>.icon-radio{margin-left:calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin))}.ios label.item-radio.active-state{transition-duration:0ms}.md .icon-radio,.md .icon-radio:after{transition-duration:.2s}.md .icon-radio:after{background-color:var(--f7-radio-active-color,var(--f7-theme-color));border-radius:50%;content:"";height:10px;left:50%;margin-left:-5px;margin-top:-5px;position:absolute;top:50%;transform:scale(0);width:10px}.md .radio input[type=radio]:checked~.icon-radio,.md label.item-radio input[type=radio]:checked~* .icon-radio,.md label.item-radio input[type=radio]:checked~.icon-radio{border-color:var(--f7-radio-active-color,var(--f7-theme-color))}.md .radio input[type=radio]:checked~.icon-radio:after,.md label.item-radio input[type=radio]:checked~* .icon-radio:after,.md label.item-radio input[type=radio]:checked~.icon-radio:after{background-color:var(--f7-radio-active-color,var(--f7-theme-color));transform:scale(1)}.md label.item-radio{overflow:hidden;position:relative;z-index:0}.md label.item-radio:not(.item-radio-icon-end)>.icon-radio{margin-left:calc(var(--f7-list-item-media-margin) + var(--f7-radio-extra-margin))}.md label.item-radio-icon-end input[type=radio]~.icon-radio{left:calc(var(--f7-safe-area-left) + 16px);margin-top:-10px;position:absolute;top:50%}.md label.item-radio-icon-end .item-inner{padding-left:calc(var(--f7-safe-area-left) + 52px)}.ios{--f7-toggle-width:52px;--f7-toggle-height:32px;--f7-toggle-inactive-knob-bg-color:#fff;--f7-toggle-active-knob-bg-color:#fff;--f7-toggle-inactive-border-color:#e5e5e5;--f7-toggle-inactive-bg-color:#fff}.ios .dark,.ios.dark{--f7-toggle-inactive-border-color:#555;--f7-toggle-inactive-bg-color:#555}.md{--f7-toggle-width:52px;--f7-toggle-height:32px}.md,.md .dark,.md [class*=color-]{--f7-toggle-inactive-bg-color:var(--f7-md-surface-variant);--f7-toggle-active-bg-color:var(--f7-theme-color);--f7-toggle-inactive-knob-bg-color:var(--f7-md-outline);--f7-toggle-active-knob-bg-color:var(--f7-md-on-primary);--f7-toggle-inactive-border-color:var(--f7-md-outline);--f7-toggle-active-border-color:var(--f7-theme-color)}.toggle,.toggle-icon{border-radius:var(--f7-toggle-height);height:var(--f7-toggle-height);width:var(--f7-toggle-width)}.toggle{align-self:center;box-sizing:border-box;display:inline-block;position:relative;-webkit-user-select:none;user-select:none;vertical-align:middle}.toggle input[type=checkbox]{display:none}.toggle input[disabled]~.toggle-icon{pointer-events:none}.toggle-icon{-webkit-appearance:none;appearance:none;border:none;box-sizing:border-box;cursor:pointer;display:block;margin:0;padding:0;position:relative;transition:.3s;z-index:0}.toggle-icon:after,.toggle-icon:before{content:""}.toggle-icon:after{position:absolute;transform:translateX(0);transition-duration:.3s;z-index:2}.ios .toggle{background:var(--f7-toggle-inactive-border-color)}.ios .toggle input[type=checkbox]:checked+.toggle-icon{background:var(--f7-toggle-active-color,var(--f7-theme-color))}.ios .toggle input[type=checkbox]:checked+.toggle-icon:before{background:var(--f7-toggle-active-bg-color,var(--f7-theme-color));transform:scale(0)}.ios .toggle input[type=checkbox]:checked+.toggle-icon:after{background:var(--f7-toggle-active-knob-bg-color);transform:translateX(calc((var(--f7-toggle-width) - var(--f7-toggle-height))*-1))}.ios .toggle-icon{background:var(--f7-toggle-border-color)}.ios .toggle-icon:before{background:var(--f7-toggle-inactive-bg-color);border-radius:var(--f7-toggle-height);box-sizing:border-box;position:absolute;transform:scale(1);transition-duration:.3s;width:calc(var(--f7-toggle-width) - 4px);z-index:1}.ios .toggle-icon:after,.ios .toggle-icon:before{height:calc(var(--f7-toggle-height) - 4px);right:2px;top:2px}.ios .toggle-icon:after{background:var(--f7-toggle-inactive-knob-bg-color);border-radius:calc(var(--f7-toggle-height) - 4px);box-shadow:0 2px 4px rgba(0,0,0,.3);width:calc(var(--f7-toggle-height) - 4px)}.ios .toggle-active-state input[type=checkbox]:not(:checked)+.toggle-icon:before{transform:scale(0)}.ios .toggle-active-state input[type=checkbox]+.toggle-icon:after{width:calc(var(--f7-toggle-height) + 4px)}.ios .toggle-active-state input[type=checkbox]:checked+.toggle-icon:after{transform:translateX(calc(var(--f7-toggle-width)*-1 - var(--f7-toggle-height)*-1 - -8px))}.md .toggle input[type=checkbox]:checked+.toggle-icon{background:var(--f7-toggle-active-bg-color);border-color:var(--f7-toggle-active-border-color)}.md .toggle input[type=checkbox]:checked+.toggle-icon:after{background:var(--f7-toggle-active-knob-bg-color);transform:translateX(calc((var(--f7-toggle-width) - var(--f7-toggle-height))*-1)) scale(1)}.md .toggle.active-state input[type=checkbox]:checked+.toggle-icon:after{transform:translateX(calc((var(--f7-toggle-width) - var(--f7-toggle-height))*-1)) scale(1.1)}.md .toggle-icon{background:var(--f7-toggle-inactive-bg-color);border:2px solid var(--f7-toggle-inactive-border-color)}.md .toggle-icon:after{background:var(--f7-toggle-inactive-knob-bg-color);border-radius:var(--f7-toggle-height);height:calc(var(--f7-toggle-height) - 8px);right:2px;top:2px;transform:scale(.666);width:calc(var(--f7-toggle-height) - 8px)}.md .toggle-icon.active-state:after{transform:scale(1.1)}:root{--f7-range-scale-step-height:5px;--f7-range-scale-substep-width:1px;--f7-range-scale-substep-height:4px;--f7-range-bar-bg-color:rgba(0,0,0,0.2)}:root .dark,:root.dark{--f7-range-bar-bg-color:rgba(255,255,255,0.2)}.ios{--f7-range-size:28px;--f7-range-bar-size:4px;--f7-range-bar-border-radius:2px;--f7-range-knob-size:28px;--f7-range-knob-color:#fff;--f7-range-knob-box-shadow:0 2px 4px rgba(0,0,0,0.3);--f7-range-label-size:24px;--f7-range-label-text-color:#000;--f7-range-label-bg-color:#fff;--f7-range-label-font-size:12px;--f7-range-label-font-weight:500;--f7-range-label-border-radius:5px;--f7-range-label-padding:0px 2px;--f7-range-scale-text-color:#666;--f7-range-scale-step-width:1px;--f7-range-scale-font-size:12px;--f7-range-scale-font-weight:400;--f7-range-scale-label-offset:4px}.md{--f7-range-size:20px;--f7-range-bar-size:2px;--f7-range-bar-border-radius:0px;--f7-range-knob-size:12px;--f7-range-knob-box-shadow:none;--f7-range-label-size:26px;--f7-range-label-font-weight:normal;--f7-range-label-font-size:10px;--f7-range-label-border-radius:50%;--f7-range-label-padding:0px;--f7-range-scale-step-width:2px;--f7-range-scale-font-size:12px;--f7-range-scale-font-weight:400;--f7-range-scale-label-offset:4px}.md,.md .dark,.md [class*=color-]{--f7-range-knob-color:var(--f7-theme-color);--f7-range-label-text-color:var(--f7-md-on-primary);--f7-range-label-bg-color:var(--f7-theme-color);--f7-range-scale-text-color:var(--f7-md-on-surface-variant)}.range-slider{align-self:center;cursor:pointer;display:block;position:relative;-webkit-user-select:none;user-select:none}.range-slider input[type=range]{display:none}.range-slider.range-slider-horizontal{height:var(--f7-range-size);touch-action:pan-y;width:100%}.range-slider.range-slider-vertical{height:100%;touch-action:pan-x;width:var(--f7-range-size)}.range-bar{background:var(--f7-range-bar-bg-color);border-radius:var(--f7-range-bar-border-radius);overflow:hidden;position:absolute}.range-slider-vertical .range-bar{height:100%;left:50%;margin-left:calc(var(--f7-range-bar-size)*-1/2);top:0;width:var(--f7-range-bar-size)}.range-slider-horizontal .range-bar{height:var(--f7-range-bar-size);left:0;margin-top:calc(var(--f7-range-bar-size)*-1/2);top:50%;width:100%}.range-bar-active{background:var(--f7-range-bar-active-bg-color,var(--f7-theme-color));position:absolute}.range-slider-horizontal .range-bar-active{height:100%;right:0;top:0}.range-slider-vertical .range-bar-active{bottom:0;left:0;width:100%}.range-slider-vertical-reversed .range-bar-active{bottom:auto;top:0}.range-knob-wrap{height:var(--f7-range-knob-size);position:absolute;width:var(--f7-range-knob-size);z-index:20}.range-slider-horizontal .range-knob-wrap{margin-right:calc(var(--f7-range-knob-size)*-1/2);margin-top:calc(var(--f7-range-knob-size)*-1/2);right:0;top:50%}.range-slider-vertical .range-knob-wrap{bottom:0;left:50%;margin-bottom:calc(var(--f7-range-knob-size)*-1/2);margin-left:calc(var(--f7-range-knob-size)*-1/2)}.range-slider-vertical-reversed .range-knob-wrap{bottom:auto;margin-bottom:0;margin-top:calc(var(--f7-range-knob-size)*-1/2);top:0}.range-knob{background:var(--f7-range-knob-color,var(--f7-range-knob-bg-color,var(--f7-theme-color)));border-radius:50%;box-shadow:var(--f7-range-knob-box-shadow);box-sizing:border-box;height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}.range-knob:after{content:"";height:44px;left:50%;margin-left:-22px;margin-top:-22px;position:absolute;top:50%;width:44px}.range-knob-label{background-color:var(--f7-range-label-bg-color,var(--f7-theme-color));border-radius:var(--f7-range-label-border-radius);bottom:100%;box-sizing:border-box;color:var(--f7-range-label-text-color);font-size:var(--f7-range-label-font-size);font-weight:var(--f7-range-label-font-weight);height:var(--f7-range-label-size);left:50%;line-height:var(--f7-range-label-size);min-width:var(--f7-range-label-size);padding:var(--f7-range-label-padding);position:absolute;text-align:center;transform:translateY(100%) scale(0);transition-duration:.12s;transition-property:transform}.range-knob-active-state .range-knob-label{transform:translateY(0) scale(1)}.range-scale{position:absolute}.range-slider-horizontal .range-scale{left:0;margin-top:calc(var(--f7-range-bar-size)/2);top:50%;width:100%}.range-slider-vertical .range-scale{height:100%;margin-right:calc(var(--f7-range-bar-size)/2);right:50%;top:0}.range-scale-step{box-sizing:border-box;color:var(--f7-range-scale-text-color,var(--f7-range-bar-bg-color));display:flex;font-size:var(--f7-range-scale-font-size);font-weight:var(--f7-range-scale-font-weight);line-height:1;position:absolute}.range-scale-step:before{background:var(--f7-range-scale-step-bg-color,var(--f7-range-bar-bg-color));content:"";position:absolute}.range-slider-horizontal .range-scale-step{align-items:flex-start;height:var(--f7-range-scale-step-height);justify-content:center;margin-right:calc(var(--f7-range-scale-step-width)*-1/2);padding-top:calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));top:0;width:var(--f7-range-scale-step-width)}.range-slider-horizontal .range-scale-step:before{height:var(--f7-range-scale-step-height);left:0;top:0;width:100%}.range-slider-horizontal .range-scale-step:first-child{margin-right:0}.range-slider-horizontal .range-scale-step:last-child{margin-right:calc(var(--f7-range-scale-step-width)*-1)}.range-slider-vertical .range-scale-step{align-items:center;height:var(--f7-range-scale-step-width);justify-content:flex-end;line-height:1;margin-bottom:calc(var(--f7-range-scale-step-width)*-1/2);padding-right:calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));right:0;width:var(--f7-range-scale-step-height)}.range-slider-vertical .range-scale-step:first-child{margin-bottom:0}.range-slider-vertical .range-scale-step:last-child{margin-bottom:calc(var(--f7-range-scale-step-width)*-1)}.range-slider-vertical .range-scale-step:before{height:100%;right:0;top:0;width:var(--f7-range-scale-step-height)}.range-scale-substep{--f7-range-scale-step-bg-color:var(--f7-range-scale-substep-bg-color,var(--f7-range-bar-bg-color));--f7-range-scale-step-width:var(--f7-range-scale-substep-width);--f7-range-scale-step-height:var(--f7-range-scale-substep-height)}.ios .range-knob-label{margin-bottom:6px;transform:translateX(-50%) translateY(100%) scale(0)}.ios .range-knob-active-state .range-knob-label{transform:translateX(-50%) translateY(0) scale(1)}.md .range-knob{transition-duration:.2s;transition-property:transform,background-color}.md .range-knob-active-state .range-knob{transform:scale(1.5)}.md .range-slider-min:not(.range-slider-dual) .range-knob{background:#fff!important;border:2px solid var(--f7-range-bar-bg-color)}.md .range-knob-label{margin-bottom:8px}.md .range-knob-label,.md .range-knob-label:before{margin-left:calc(var(--f7-range-label-size)*-1/2);width:var(--f7-range-label-size)}.md .range-knob-label:before{background:var(--f7-range-label-bg-color,var(--f7-theme-color));border-radius:50% 50% 50% 0;content:"";height:var(--f7-range-label-size);left:50%;position:absolute;top:0;transform:rotate(-45deg);z-index:-1}.md .range-knob-active-state .range-knob-label{transform:translateY(0) scale(1)}.md .range-slider-label .range-knob-active-state .range-knob{transform:scale(0)}:root{--f7-stepper-raised-box-shadow:0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);--f7-stepper-value-font-weight:500}.ios{--f7-stepper-height:28px;--f7-stepper-border-radius:5px;--f7-stepper-fill-button-text-color:#fff;--f7-stepper-large-height:44px;--f7-stepper-small-height:26px;--f7-stepper-value-font-size:17px;--f7-stepper-border-width:2px;--f7-stepper-border-color:var(--f7-theme-color);--f7-stepper-small-border-width:2px}.md{--f7-stepper-height:40px;--f7-stepper-border-radius:8px;--f7-stepper-large-height:48px;--f7-stepper-small-height:32px;--f7-stepper-value-font-size:14px;--f7-stepper-border-width:1px;--f7-stepper-small-border-width:1px;--f7-stepper-button-pressed-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-stepper-fill-button-text-color:var(--f7-md-on-primary);--f7-stepper-fill-button-pressed-bg-color:var(--f7-theme-color);--f7-stepper-border-color:var(--f7-md-outline)}.stepper{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25);align-items:stretch;border-radius:var(--f7-stepper-border-radius);display:inline-flex;flex-direction:row-reverse;height:var(--f7-stepper-height)}.stepper-button,.stepper-button-minus,.stepper-button-plus{align-content:center;align-items:center;background-color:var(--f7-stepper-button-bg-color);border:var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);border-radius:var(--f7-stepper-border-radius);box-sizing:border-box;color:var(--f7-stepper-button-text-color,var(--f7-theme-color));cursor:pointer;display:flex;flex-shrink:0;justify-content:center;line-height:calc(var(--f7-stepper-height) - var(--f7-stepper-border-width, 0px));position:relative;text-align:center;width:40px}.stepper-button-minus.active-state,.stepper-button-plus.active-state,.stepper-button.active-state{background-color:var(--f7-stepper-button-pressed-bg-color,rgba(var(--f7-theme-color-rgb),.15));color:var(--f7-stepper-button-pressed-text-color,var(--f7-stepper-button-text-color,var(--f7-theme-color)))}.stepper-button-minus:first-child,.stepper-button-plus:first-child,.stepper-button:first-child{border-radius:var(--f7-stepper-border-radius) 0 0 var(--f7-stepper-border-radius)}.stepper-button-minus:last-child,.stepper-button-plus:last-child,.stepper-button:last-child{border-radius:0 var(--f7-stepper-border-radius) var(--f7-stepper-border-radius) 0}.stepper-button .icon,.stepper-button-minus .icon,.stepper-button-plus .icon{pointer-events:none}.stepper-button+.stepper-button,.stepper-button+.stepper-button-minus,.stepper-button+.stepper-button-plus,.stepper-button-minus+.stepper-button,.stepper-button-minus+.stepper-button-minus,.stepper-button-minus+.stepper-button-plus,.stepper-button-plus+.stepper-button,.stepper-button-plus+.stepper-button-minus,.stepper-button-plus+.stepper-button-plus{border-left:none}.stepper-button-minus,.stepper-button-plus{-webkit-user-select:none;user-select:none}.stepper-button-minus:after,.stepper-button-minus:before,.stepper-button-plus:after,.stepper-button-plus:before{background-color:var(--f7-stepper-button-text-color,var(--f7-theme-color));border-radius:2px;content:"";left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.stepper-button-minus:after,.stepper-button-plus:after{height:2px;width:15px}.stepper-button-plus:before{height:15px;width:2px}.stepper-value{align-content:center;align-items:center;display:flex;justify-content:center}.stepper-input-wrap,.stepper-value{border-bottom:var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);border-top:var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);flex-shrink:1;text-align:center}.stepper .stepper-input-wrap input,.stepper-value{color:var(--f7-stepper-value-text-color,var(--f7-theme-color));font-size:var(--f7-stepper-value-font-size);font-weight:var(--f7-stepper-value-font-weight);text-align:center;width:45px}.stepper .stepper-input-wrap input{height:100%}.ios .stepper-round-ios,.md .stepper-round-md,.stepper-round{--f7-stepper-border-radius:var(--f7-stepper-height)}.ios .stepper-fill-ios,.md .stepper-fill-md,.stepper-fill{--f7-stepper-border-color:var(--f7-stepper-fill-button-bg-color,var(--f7-theme-color));--f7-stepper-button-bg-color:var(--f7-stepper-fill-button-bg-color,var(--f7-theme-color));--f7-stepper-button-text-color:var(--f7-stepper-fill-button-text-color);--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.ios .stepper-fill-ios .stepper-button+.stepper-button,.ios .stepper-fill-ios .stepper-button-minus+.stepper-button-plus,.ios .stepper-raised-ios .stepper-button+.stepper-button,.ios .stepper-raised-ios .stepper-button-minus+.stepper-button-plus,.md .stepper-fill-md .stepper-button+.stepper-button,.md .stepper-fill-md .stepper-button-minus+.stepper-button-plus,.md .stepper-raised-md .stepper-button+.stepper-button,.md .stepper-raised-md .stepper-button-minus+.stepper-button-plus,.stepper-fill .stepper-button+.stepper-button,.stepper-fill .stepper-button-minus+.stepper-button-plus,.stepper-raised .stepper-button+.stepper-button,.stepper-raised .stepper-button-minus+.stepper-button-plus{border-left:1px solid rgba(0,0,0,.1)}.ios .stepper-fill-ios .stepper-button+.stepper-button.active-state,.ios .stepper-fill-ios .stepper-button-minus+.stepper-button-plus.active-state,.md .stepper-fill-md .stepper-button+.stepper-button.active-state,.md .stepper-fill-md .stepper-button-minus+.stepper-button-plus.active-state,.stepper-fill .stepper-button+.stepper-button.active-state,.stepper-fill .stepper-button-minus+.stepper-button-plus.active-state{border-left-color:var(--f7-stepper-button-pressed-bg-color)}.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-input-wrap,.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-value,.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-input-wrap,.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-value,.stepper-raised:not(.stepper-fill) .stepper-input-wrap,.stepper-raised:not(.stepper-fill) .stepper-value{border-left:1px solid rgba(0,0,0,.1);border-right:1px solid rgba(0,0,0,.1)}.ios .stepper-large-ios,.md .stepper-large-md,.stepper-large{--f7-stepper-height:var(--f7-stepper-large-height)}.ios .stepper-small-ios,.md .stepper-small-md,.stepper-small{--f7-stepper-border-width:var(--f7-stepper-small-border-width);--f7-stepper-height:var(--f7-stepper-small-height)}.ios .stepper-fill.stepper-small,.ios .stepper-fill.stepper-small-ios{--f7-stepper-button-pressed-bg-color:transparent;--f7-stepper-button-pressed-text-color:var(--f7-theme-color)}.ios .stepper-raised-ios,.md .stepper-raised-md,.stepper-raised{--f7-stepper-border-width:0;box-shadow:var(--f7-stepper-raised-box-shadow)}.ios .stepper-button .f7-icons,.ios .stepper-button-minus .f7-icons,.ios .stepper-button-plus .f7-icons{font-size:22px}.ios .stepper-fill,.ios .stepper-fill-ios{--f7-stepper-button-pressed-bg-color:var(--f7-stepper-fill-button-pressed-bg-color,var(--f7-theme-color-tint))}.ios .stepper-small-ios.stepper-raised,.ios .stepper-small-ios.stepper-raised-ios,.ios .stepper-small.stepper-raised,.ios .stepper-small.stepper-raised-ios{--f7-stepper-border-width:0px}.ios .stepper-small .stepper-button,.ios .stepper-small .stepper-button-minus,.ios .stepper-small .stepper-button-plus,.ios .stepper-small-ios .stepper-button,.ios .stepper-small-ios .stepper-button-minus,.ios .stepper-small-ios .stepper-button-plus{transition-duration:.2s}.ios .stepper-small .stepper-button-minus.active-state:after,.ios .stepper-small .stepper-button-minus.active-state:before,.ios .stepper-small .stepper-button-plus.active-state:after,.ios .stepper-small .stepper-button-plus.active-state:before,.ios .stepper-small .stepper-button.active-state:after,.ios .stepper-small .stepper-button.active-state:before,.ios .stepper-small-ios .stepper-button-minus.active-state:after,.ios .stepper-small-ios .stepper-button-minus.active-state:before,.ios .stepper-small-ios .stepper-button-plus.active-state:after,.ios .stepper-small-ios .stepper-button-plus.active-state:before,.ios .stepper-small-ios .stepper-button.active-state:after,.ios .stepper-small-ios .stepper-button.active-state:before{background-color:var(--f7-theme-color);transition-duration:.2s}.md .stepper-button,.md .stepper-button-minus,.md .stepper-button-plus{overflow:hidden;transform:translateZ(0);transition-duration:.3s}.md .stepper-fill,.md .stepper-fill-md{--f7-stepper-button-pressed-bg-color:var(--f7-stepper-fill-button-bg-color,var(--f7-theme-color))}.smart-select select{display:none}.smart-select .item-after{display:block;max-width:70%;overflow:hidden;position:relative;text-overflow:ellipsis}.smart-select-sheet .list ul,.smart-select-sheet .page,.smart-select-sheet .sheet-modal-inner{background:var(--f7-smart-select-sheet-bg,var(--f7-list-bg-color))}.smart-select-sheet .toolbar:after{background-color:var(--f7-smart-select-sheet-toolbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.smart-select-sheet .list{margin:0}.smart-select-sheet .list ul:after,.smart-select-sheet .list ul:before{display:none!important}.smart-select-popover .popover-inner{max-height:40vh}:root{--f7-grid-gap:16px}.grid{display:grid}.grid.grid-gap{gap:var(--f7-grid-gap)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}@media (min-width:480px){.xsmall-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xsmall-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.xsmall-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xsmall-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.xsmall-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xsmall-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.xsmall-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xsmall-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.xsmall-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xsmall-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.xsmall-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xsmall-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.xsmall-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xsmall-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.xsmall-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xsmall-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.xsmall-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xsmall-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.xsmall-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xsmall-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.xsmall-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xsmall-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.xsmall-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xsmall-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.xsmall-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.xsmall-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.xsmall-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.xsmall-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.xsmall-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.xsmall-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.xsmall-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.xsmall-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.xsmall-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.xsmall-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.xsmall-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.xsmall-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.xsmall-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.xsmall-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.xsmall-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.xsmall-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:568px){.small-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.small-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.small-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.small-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.small-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.small-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.small-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.small-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.small-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.small-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.small-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.small-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.small-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.small-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.small-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.small-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.small-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.small-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.small-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.small-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.small-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.small-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.small-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.small-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.small-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.small-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.small-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.small-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.small-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.small-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.small-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.small-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.small-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.small-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.small-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.small-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.small-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.small-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.small-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.small-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:768px){.medium-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.medium-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.medium-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.medium-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.medium-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.medium-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.medium-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.medium-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.medium-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.medium-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.medium-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.medium-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.medium-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.medium-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.medium-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.medium-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.medium-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.medium-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.medium-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.medium-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.medium-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.medium-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.medium-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.medium-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.medium-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.medium-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.medium-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.medium-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.medium-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.medium-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.medium-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.medium-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.medium-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.medium-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.medium-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.medium-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.medium-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.medium-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.medium-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.medium-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:1024px){.large-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.large-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.large-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.large-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.large-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.large-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.large-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.large-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.large-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.large-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.large-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.large-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.large-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.large-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.large-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.large-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.large-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.large-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.large-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.large-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.large-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.large-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.large-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.large-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.large-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.large-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.large-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.large-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.large-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.large-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.large-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.large-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.large-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.large-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.large-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.large-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.large-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.large-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.large-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.large-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:1200px){.xlarge-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xlarge-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.xlarge-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xlarge-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.xlarge-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xlarge-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.xlarge-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xlarge-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.xlarge-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xlarge-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.xlarge-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xlarge-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.xlarge-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xlarge-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.xlarge-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xlarge-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.xlarge-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xlarge-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.xlarge-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xlarge-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.xlarge-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xlarge-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.xlarge-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xlarge-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.xlarge-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.xlarge-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.xlarge-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.xlarge-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.xlarge-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.xlarge-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.xlarge-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.xlarge-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.xlarge-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.xlarge-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.xlarge-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.xlarge-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.xlarge-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.xlarge-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.xlarge-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.xlarge-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}:root{--f7-calendar-height:340px;--f7-calendar-sheet-landscape-height:220px;--f7-calendar-popover-width:320px;--f7-calendar-popover-height:320px;--f7-calendar-modal-height:420px;--f7-calendar-modal-max-width:380px;--f7-calendar-week-header-bg-color:transparent;--f7-calendar-footer-padding:0 8px;--f7-calendar-week-header-font-size:11px;--f7-calendar-disabled-text-color:#d4d4d4;--f7-calendar-event-dot-size:4px;--f7-calendar-time-selector-height:28px;--f7-calendar-picker-pressed-bg-color:rgba(0,0,0,0.1);--f7-calendar-picker-hover-bg-color:rgba(0,0,0,0.03);--f7-calendar-time-selector-bg-color:rgba(0,0,0,0.05)}:root .dark,:root.dark{--f7-calendar-picker-pressed-bg-color:rgba(255,255,255,0.08);--f7-calendar-picker-hover-bg-color:rgba(255,255,255,0.03);--f7-calendar-time-selector-bg-color:rgba(255,255,255,0.1)}.ios{--f7-calendar-selected-text-color:#fff;--f7-calendar-header-height:44px;--f7-calendar-header-font-size:17px;--f7-calendar-header-font-weight:600;--f7-calendar-header-padding:0 8px;--f7-calendar-footer-height:44px;--f7-calendar-footer-font-size:17px;--f7-calendar-week-header-height:18px;--f7-calendar-day-font-size:15px;--f7-calendar-day-size:30px;--f7-calendar-picker-font-size:17px;--f7-calendar-time-selector-font-size:17px;--f7-calendar-modal-border-radius:4px;--f7-calendar-modal-box-shadow:0px 11px 15px -7px rgba(0,0,0,0.2),0px 24px 38px 3px rgba(0,0,0,0.14),0px 9px 46px 8px rgba(0,0,0,0.12);--f7-calendar-prev-next-text-color:#c8c8c8;--f7-calendar-sheet-border-color:#929499;--f7-calendar-sheet-bg-color:#fff;--f7-calendar-week-header-text-color:#5e5e5e;--f7-calendar-modal-bg-color:#fff;--f7-calendar-day-text-color:#000;--f7-calendar-today-text-color:#000;--f7-calendar-today-bg-color:#e3e3e3}.ios .dark,.ios.dark{--f7-calendar-prev-next-text-color:#5e5e5e;--f7-calendar-sheet-border-color:var(--f7-bars-border-color);--f7-calendar-sheet-bg-color:#121212;--f7-calendar-week-header-text-color:#aaa;--f7-calendar-modal-bg-color:#121212;--f7-calendar-day-text-color:#fff;--f7-calendar-today-text-color:#fff;--f7-calendar-today-bg-color:#333}.md{--f7-calendar-sheet-border-color:transparent;--f7-calendar-header-height:64px;--f7-calendar-header-font-size:24px;--f7-calendar-header-font-weight:400;--f7-calendar-header-padding:0 24px;--f7-calendar-footer-height:56px;--f7-calendar-footer-font-size:14px;--f7-calendar-week-header-height:24px;--f7-calendar-day-font-size:14px;--f7-calendar-today-bg-color:none;--f7-calendar-day-size:32px;--f7-calendar-picker-font-size:14px;--f7-calendar-time-selector-font-size:14px;--f7-calendar-modal-border-radius:28px;--f7-calendar-modal-box-shadow:none}.md,.md .dark,.md [class*=color-]{--f7-calendar-sheet-bg-color:var(--f7-md-surface-1);--f7-calendar-selected-text-color:var(--f7-md-on-primary);--f7-calendar-week-header-text-color:var(--f7-md-on-surface-variant);--f7-calendar-day-text-color:var(--f7-md-on-surface);--f7-calendar-prev-next-text-color:rgba(var(--f7-md-on-surface-variant-rgb),0.55);--f7-calendar-today-text-color:var(--f7-theme-color);--f7-calendar-modal-bg-color:var(--f7-md-surface-1)}.calendar{flex-direction:column;height:var(--f7-calendar-height);overflow:hidden;width:100%}.calendar,.calendar.modal-in{display:flex}@media (orientation:landscape) and (max-height:415px){.calendar.calendar-sheet{height:var(--f7-calendar-sheet-landscape-height)}.calendar.calendar-modal{height:calc(100vh - var(--f7-navbar-height))}}.calendar.calendar-inline,.calendar.calendar-popover .calendar{position:relative}.calendar-sheet{--f7-sheet-border-color:var(--f7-calendar-sheet-border-color);background:var(--f7-calendar-sheet-bg-color);height:calc(var(--f7-calendar-height) + var(--f7-safe-area-bottom));padding-bottom:var(--f7-safe-area-bottom)}.calendar-sheet:before{z-index:600}.calendar-modal .toolbar:before,.calendar-popover .toolbar:before,.calendar-sheet .toolbar:before{display:none}.calendar-popover{width:var(--f7-calendar-popover-width)}.calendar-popover .calendar-header,.calendar-popover .toolbar-top{border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;overflow:hidden}.calendar-popover .calendar-header+.toolbar-top{border-radius:0}.calendar-popover .calendar-footer,.calendar-popover .toolbar-bottom{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.calendar-popover .calendar{height:var(--f7-calendar-popover-height);position:relative;z-index:1}.calendar-popover .calendar-month-picker,.calendar-popover .calendar-time-picker,.calendar-popover .calendar-year-picker{border-radius:var(--f7-popover-border-radius)}.calendar-popover .calendar-month-picker .picker,.calendar-popover .calendar-time-picker .picker,.calendar-popover .calendar-year-picker .picker{display:flex;flex-direction:column;height:100%}.calendar-header{background-color:var(--f7-calendar-header-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-calendar-header-text-color,var(--f7-bars-text-color));flex-shrink:0;font-size:var(--f7-calendar-header-font-size);font-weight:var(--f7-calendar-header-font-weight);height:var(--f7-calendar-header-height);line-height:var(--f7-calendar-header-height);overflow:hidden;padding:var(--f7-calendar-header-padding);position:relative;text-overflow:ellipsis;white-space:nowrap;width:100%}.calendar-header a{color:var(--f7-calendar-header-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer{align-items:center;background-color:var(--f7-calendar-footer-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-calendar-footer-text-color,var(--f7-bars-text-color));display:flex;flex-shrink:0;font-size:var(--f7-calendar-header-font-size);height:var(--f7-calendar-footer-height);justify-content:flex-end;padding:var(--f7-calendar-footer-padding);position:relative;width:100%}.calendar-footer a{color:var(--f7-calendar-footer-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer:before{background-color:var(--f7-calendar-footer-border-color,var(--f7-bars-border-color));bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.calendar-modal{background:var(--f7-calendar-modal-bg-color);border-radius:var(--f7-calendar-modal-border-radius);box-shadow:var(--f7-calendar-modal-box-shadow);display:flex;height:var(--f7-calendar-modal-height);left:50%;max-width:var(--f7-calendar-modal-max-width);min-width:300px;overflow:hidden;position:absolute;top:50%;transform:translate3d(-50%,100vh,0);transition-property:transform;transition-timing-function:cubic-bezier(0,1,.2,1);width:90%;z-index:13500}.calendar-modal.modal-in,.calendar-modal.modal-out{transition-duration:.4s}.calendar-modal.modal-in{transform:translate3d(-50%,-50%,0)}.calendar-modal.modal-out{transform:translate3d(-50%,100vh,0)}.calendar-week-header{background-color:var(--f7-calendar-week-header-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-calendar-week-header-text-color,var(--f7-bars-text-color));display:flex;font-size:var(--f7-calendar-week-header-font-size);height:var(--f7-calendar-week-header-height);padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right);position:relative}.calendar-week-header .calendar-week-day{flex-shrink:1;line-height:var(--f7-calendar-week-header-height);text-align:center;width:14.28571%}.calendar-months{flex-shrink:10;height:100%;overflow:hidden;position:relative;width:100%}.calendar-months-wrapper{height:100%;position:relative;transition:.3s;width:100%}.calendar-month{display:flex;flex-direction:column;height:100%;left:0;position:absolute;top:0;width:100%}.calendar-row{box-sizing:border-box;display:flex;flex-shrink:1;height:16.66666667%;padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right);position:relative;width:100%}.calendar-modal .calendar-months:first-child .calendar-row:first-child:before,.calendar-popover .calendar-months:first-child .calendar-row:first-child:before{display:none!important}.calendar-day{align-items:center;box-sizing:border-box;color:var(--f7-calendar-day-text-color);cursor:pointer;display:flex;flex-shrink:1;font-size:var(--f7-calendar-day-font-size);height:100%;justify-content:center;text-align:center;width:14.28571429%;z-index:20}.calendar-day-today .calendar-day-number{background-color:var(--f7-calendar-today-bg-color);color:var(--f7-calendar-today-text-color,var(--f7-theme-color))}.calendar-day-next,.calendar-day-prev{color:var(--f7-calendar-prev-next-text-color)}.calendar-day-disabled{color:var(--f7-calendar-disabled-text-color);cursor:auto}.calendar-day-selected .calendar-day-number{background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color));color:var(--f7-calendar-selected-text-color)}.calendar-day-number{border-radius:50%;display:inline-block;height:var(--f7-calendar-day-size);line-height:var(--f7-calendar-day-size);position:relative;width:var(--f7-calendar-day-size)}.calendar-day-events{align-items:center;display:flex;justify-content:center;left:0;margin-top:1px;position:absolute;top:100%;width:100%}.calendar-day-event{background-color:var(--f7-calendar-event-bg-color);border-radius:calc(var(--f7-calendar-event-dot-size)/2);height:var(--f7-calendar-event-dot-size);width:var(--f7-calendar-event-dot-size)}.calendar-day-event+.calendar-day-event{margin-left:2px}.calendar-day-selected-left,.calendar-day-selected-range,.calendar-day-selected-right{position:relative}.calendar-day-selected-left:before,.calendar-day-selected-range:before,.calendar-day-selected-right:before{background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color));content:"";height:var(--f7-calendar-day-size);left:0;opacity:.2;position:absolute;top:50%;transform:translateY(-50%);width:100%;z-index:-1}.calendar-day-selected-left:before,.calendar-day-selected-range:first-child:before{border-radius:var(--f7-calendar-day-size) 0 0 var(--f7-calendar-day-size);left:auto;right:0;width:calc(50% + var(--f7-calendar-day-size)/2)}.calendar-day-selected-range:last-child:before,.calendar-day-selected-right:before{border-radius:0 var(--f7-calendar-day-size) var(--f7-calendar-day-size) 0;width:calc(50% + var(--f7-calendar-day-size)/2)}.calendar-day-selected-left:last-child:before,.calendar-day-selected-right:first-child:before{display:none}.calendar-day-selected-left.calendar-day-selected-right:before{content:none;display:none}.calendar-day-selected-range .calendar-day-number{background-color:initial;color:inherit}.calendar-month-selector,.calendar-year-selector{align-items:center;display:flex;flex-shrink:10;justify-content:space-between;margin-left:auto;margin-right:auto;max-width:200px;width:50%}.calendar-month-selector .calendar-day-number,.calendar-year-selector .calendar-day-number{flex-shrink:1;overflow:hidden;position:relative;text-overflow:ellipsis}.calendar-month-selector a.icon-only,.calendar-year-selector a.icon-only{min-width:36px}.calendar-month-picker,.calendar-time-picker,.calendar-year-picker{background:transparent;height:100%;position:relative;-webkit-user-select:none;user-select:none;width:100%}.calendar-month-picker .picker-columns,.calendar-year-picker .picker-columns{text-align:center}.calendar-month-picker-item,.calendar-year-picker-item{align-items:center;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;overflow:hidden;position:relative;transition-duration:.1s}.calendar-month-picker-item span,.calendar-year-picker-item span{box-sizing:border-box;overflow:hidden;pointer-events:none;position:relative;text-overflow:ellipsis;white-space:nowrap}.calendar-month-picker-item.active-state,.calendar-year-picker-item.active-state{background:var(--f7-calendar-picker-pressed-bg-color)}.calendar-month-picker-item{padding:5px}.sheet-modal .calendar-month-picker-item{height:33.33333333%;width:25%}.sheet-modal .calendar-month-picker-item:nth-child(4n+1):before,.sheet-modal .calendar-month-picker-item:nth-child(n+9):after{display:none!important}.calendar-modal .calendar-month-picker-item,.popover .calendar-month-picker-item{height:25%;width:33.33333333%}.calendar-modal .calendar-month-picker-item:nth-child(3n+1):before,.calendar-modal .calendar-month-picker-item:nth-child(n+10):after,.popover .calendar-month-picker-item:nth-child(3n+1):before,.popover .calendar-month-picker-item:nth-child(n+10):after{display:none!important}.calendar-month-picker-item-current,.calendar-year-picker-item-current{color:var(--f7-calendar-picker-selected-text-color,var(--f7-theme-color))}.calendar-year-picker{--webkit-overflow-scrolling:touch;overflow:auto}.calendar-year-picker-item{height:34px;line-height:34px;width:100%}.calendar-time-selector{align-items:center;display:flex;flex-shrink:0;font-size:var(--f7-calendar-time-selector-font-size);justify-content:space-between;padding:12px 16px;position:relative}.calendar-time-selector a{align-items:center;background-color:var(--f7-calendar-time-selector-bg-color);border-radius:8px;box-sizing:border-box;display:flex;height:var(--f7-calendar-time-selector-height);justify-content:center;overflow:hidden;padding:0 16px;position:relative}.calendar-time-selector>span{font-weight:500}.calendar-time-selector .segmented{margin-left:8px}.calendar-month-picker-popover,.calendar-time-picker-popover,.calendar-year-picker-popover{height:240px;width:240px}.calendar-month-picker-popover .popover-inner,.calendar-time-picker-popover .popover-inner,.calendar-year-picker-popover .popover-inner{height:100%;overflow:hidden}.calendar-time-picker{--f7-picker-popover-height:100%;--f7-picker-inline-height:100%}.calendar-time-picker .toolbar{flex-shrink:0;top:0!important}.calendar-time-picker .picker{display:flex;flex-direction:column;height:100%}:root{--f7-picker-height:260px;--f7-picker-inline-height:200px;--f7-picker-popover-height:260px;--f7-picker-popover-width:280px;--f7-picker-landscape-height:200px;--f7-picker-item-height:36px}.ios{--f7-picker-column-font-size:20px;--f7-picker-item-selected-text-color:#000;--f7-picker-item-selected-bg-color:rgba(0,0,0,0.12);--f7-picker-divider-text-color:#000;--f7-picker-item-text-color:rgba(0,0,0,0.45)}.ios .dark,.ios.dark{--f7-picker-item-selected-text-color:#fff;--f7-picker-item-selected-bg-color:rgba(255,255,255,0.1);--f7-picker-divider-text-color:#fff;--f7-picker-item-text-color:rgba(255,255,255,0.55)}.md{--f7-picker-column-font-size:20px}.md,.md .dark,.md [class*=color-]{--f7-picker-item-selected-text-color:var(--f7-md-on-surface);--f7-picker-item-text-color:var(--f7-md-on-surface-variant);--f7-picker-divider-text-color:var(--f7-md-on-surface);--f7-picker-item-selected-border-color:var(--f7-md-outline)}.picker{height:var(--f7-picker-height);width:100%}.picker.picker-inline{height:var(--f7-picker-inline-height)}.popover .picker{height:var(--f7-picker-popover-height)}@media (orientation:landscape) and (max-height:415px){.picker:not(.picker-inline){height:var(--f7-picker-landscape-height)}}.picker.sheet-modal{background:var(--f7-picker-sheet-bg-color,var(--f7-sheet-bg-color))}.picker-popover{width:var(--f7-picker-popover-width)}.picker-popover .toolbar{background:none;border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0}.picker-popover .toolbar:before{display:none!important}.picker-popover .toolbar+.picker-columns{height:calc(100% - var(--f7-toolbar-height))}.picker-columns{--f7-picker-mask-bg-color:transparent;display:flex;font-size:var(--f7-picker-column-font-size);height:100%;justify-content:center;overflow:hidden;padding:0;position:relative;text-align:right}.popover .picker-columns{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.picker-columns:after,.picker-columns:before{content:"";height:20%;left:0;pointer-events:none;position:absolute;width:100%;z-index:100}.page .picker-columns{--f7-picker-mask-bg-color:var(--f7-page-bg-color)}.block-strong .picker-columns{--f7-picker-mask-bg-color:var(--f7-block-strong-bg-color)}.picker-sheet .picker-columns{--f7-picker-mask-bg-color:var(--f7-picker-sheet-bg-color,var(--f7-sheet-bg-color))}.picker-popover .picker-columns{--f7-picker-mask-bg-color:var(--f7-popover-bg-color)}.picker-columns:before{background-image:linear-gradient(to bottom,var(--f7-picker-mask-bg-color),transparent);top:0}.picker-columns:after{background-image:linear-gradient(to top,var(--f7-picker-mask-bg-color),transparent);bottom:0}.picker-column{max-height:100%;position:relative;z-index:10}.picker-column.picker-column-first.picker-column-last{width:100%}.picker-column.picker-column-left{text-align:left}.picker-column.picker-column-center{text-align:center}.picker-column.picker-column-right{text-align:right}.picker-column.picker-column-divider{align-items:center;color:var(--f7-picker-divider-text-color);display:flex}.picker-items{box-sizing:border-box;height:100%;overflow:auto;padding:var(--f7-picker-scroll-padding,0) 0;scroll-snap-type:y mandatory;scrollbar-color:transparent;scrollbar-width:none}.picker-items::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.picker-items::-webkit-scrollbar-track{background:transparent;box-shadow:none}.picker-items::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.picker-item{box-sizing:border-box;color:var(--f7-picker-item-text-color);cursor:pointer;height:var(--f7-picker-item-height);left:0;line-height:var(--f7-picker-item-height);overflow:hidden;position:relative;scroll-snap-align:center;text-overflow:ellipsis;top:0;white-space:nowrap;width:100%}.picker-item span{padding:0 10px}.picker-item.picker-item-far{pointer-events:none}.picker-item.picker-item-selected{color:var(--f7-picker-item-selected-text-color);transform:translateZ(0) rotateX(0deg)}.picker-column-free-mode .picker-item{scroll-snap-align:none}.picker-center-highlight{box-sizing:border-box;height:var(--f7-picker-item-height);margin-top:calc(var(--f7-picker-item-height)*-1/2);pointer-events:none;position:absolute;top:50%}.picker-3d .picker-columns{overflow:hidden}.picker-3d .picker-column,.picker-3d .picker-item,.picker-3d .picker-items{transform-style:preserve-3d}.picker-3d .picker-column{overflow:visible}.picker-3d .picker-item{overflow:visible;perspective:1200px}.picker-3d .picker-item>span{-webkit-backface-visibility:hidden;backface-visibility:hidden;box-sizing:border-box;display:block;max-width:100%;overflow:hidden;position:relative;text-overflow:ellipsis;transform-origin:center center -100px;transform-style:preserve-3d}.ios .picker-center-highlight{background-color:var(--f7-picker-item-selected-bg-color);border-radius:8px;left:16px;right:16px}.popover .ios .picker-center-highlight{left:8px;right:8px}.md .picker-center-highlight{border-bottom:1px solid var(--f7-md-outline);border-top:1px solid var(--f7-md-outline);left:0;right:0}.infinite-scroll-preloader{margin-left:auto;margin-right:auto;text-align:center}.infinite-scroll-preloader.preloader{display:block}.ios .infinite-scroll-preloader{margin-bottom:35px;margin-top:35px}.ios .infinite-scroll-preloader .preloader,.ios .infinite-scroll-preloader.preloader{height:27px;width:27px}.md .infinite-scroll-preloader{margin-bottom:32px;margin-top:32px}.ios{--f7-ptr-preloader-size:28px;--f7-ptr-size:44px}.md{--f7-ptr-preloader-size:22px;--f7-ptr-size:40px}.md,.md .dark,.md [class*=color-]{--f7-ptr-preloader-bg-color:var(--f7-md-surface-1);--f7-ptr-preloader-color:var(--f7-md-primary)}.ptr-preloader{height:var(--f7-ptr-size);pointer-events:none;position:relative;top:var(--f7-ptr-top,0)}.ptr-preloader .preloader{height:var(--f7-ptr-preloader-size);left:50%;margin-left:calc(var(--f7-ptr-preloader-size)*-1/2);margin-top:calc(var(--f7-ptr-preloader-size)*-1/2);position:absolute;top:50%;visibility:hidden;width:var(--f7-ptr-preloader-size)}.ptr-bottom .ptr-preloader{bottom:0;position:fixed;top:auto}.ptr-with-navbar-large-transparent .ptr-preloader,.ptr-with-navbar-transparent .ptr-preloader{top:calc(var(--f7-page-navbar-offset, 0px)*-1 + var(--f7-safe-area-top))}.ios .ptr-preloader{left:0;margin-bottom:calc(var(--f7-ptr-size)*-1);position:relative;top:0;width:100%}.ios .ptr-preloader .preloader{visibility:visible}.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner{animation:none}.ios .ptr-content.ptr-closing .ptr-preloader .preloader-inner-line,.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up):not(.ptr-pull-down) .ptr-preloader .preloader-inner-line{opacity:0!important}.ios .ptr-refreshing>*,.ios .ptr-transitioning>*{transition-duration:.2s;transition-property:transform}.ios .ptr-transitioning .ptr-preloader .preloader-inner-line{transition-duration:.2s}.ios .ptr-pull-up .ptr-preloader .preloader{animation:ios-ptr-preloader-spin 1s ease-out forwards}.ios .ptr-refreshing:not(.ptr-bottom){transform:none}.ios .ptr-refreshing:not(.ptr-bottom)>*{transform:translate3d(0,var(--f7-ptr-size),0)}.ios .ptr-refreshing:not(.ptr-bottom)>.ptr-preloader{transform:translateZ(0)}.ios .ptr-bottom .ptr-preloader{margin-bottom:0;margin-top:calc(var(--f7-ptr-size)*-1);position:relative}.ios .ptr-bottom.ptr-refreshing>*,.ios .ptr-bottom.ptr-transitioning>*{transition-duration:.3s;transition-property:transform}.ios .ptr-bottom.ptr-refreshing{transform:none}.ios .ptr-bottom.ptr-refreshing>*{transform:translate3d(0,calc(var(--f7-ptr-size)*-1),0)}.ios .ptr-bottom.ptr-refreshing>.ptr-preloader{transform:translateZ(0)}@keyframes ios-ptr-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(135deg)}}.md{--f7-ptr-top:-4px}.md .ptr-preloader{--f7-preloader-color:var(--f7-ptr-preloader-color);background:var(--f7-ptr-preloader-bg-color);border-radius:50%;box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);margin-right:calc(var(--f7-ptr-size)*-1/2);margin-top:calc(var(--f7-ptr-size)*-1);right:50%;width:var(--f7-ptr-size);z-index:100}.md .ptr-preloader .preloader circle{stroke-width:4}.md .ptr-arrow{border:3px solid var(--f7-preloader-color);border-left:3px solid transparent;border-radius:50%;box-sizing:border-box;height:22px;left:50%;margin-left:-11px;margin-top:-11px;opacity:1;position:absolute;top:50%;transform:rotate(150deg);width:22px}.md .ptr-arrow:after{border-bottom-color:inherit;border-bottom-style:solid;border-bottom-width:6px;border-left:5px solid transparent;border-right:5px solid transparent;bottom:0;content:"";height:0;left:-5px;position:absolute;transform:rotate(-40deg);width:0}.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner,.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader circle{animation:none}.md .ptr-pull-up .ptr-preloader .preloader,.md .ptr-refreshing .ptr-preloader .preloader{visibility:visible}.md .ptr-pull-up .ptr-arrow,.md .ptr-refreshing .ptr-arrow{visibility:hidden}.md .ptr-refreshing .ptr-preloader{transform:translate3d(0,66px,0)}.md .ptr-transitioning .ptr-arrow{transition:.3s}.md .ptr-pull-up .ptr-arrow{opacity:0;transform:rotate(620deg)!important;transition:.4s}.md .ptr-refreshing .ptr-preloader,.md .ptr-transitioning .ptr-preloader{transition-duration:.3s;transition-property:transform,opacity}.md .ptr-bottom .ptr-preloader{margin-bottom:calc(var(--f7-ptr-size)*-1 - 4px);margin-top:0}.md .ptr-bottom.ptr-refreshing .ptr-preloader{transform:translate3d(0,-66px,0)}.md .ptr-with-navbar-large-transparent .ptr-preloader,.md .ptr-with-navbar-transparent .ptr-preloader{opacity:0}.md .ptr-with-navbar-large-transparent.ptr-pull-down .ptr-preloader,.md .ptr-with-navbar-large-transparent.ptr-pull-up .ptr-preloader,.md .ptr-with-navbar-large-transparent.ptr-refreshing .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-pull-down .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-pull-up .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-refreshing .ptr-preloader{opacity:1}.md .ptr-with-navbar-large-transparent.ptr-closing .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-closing .ptr-preloader{opacity:0;transition-duration:.3s}:root{--f7-table-head-font-size:12px;--f7-table-body-font-size:14px;--f7-table-footer-font-size:12px;--f7-table-input-height:24px;--f7-table-input-font-size:14px;--f7-table-collapsible-cell-padding:16px;--f7-table-link-icon-only-icon-size:20px;--f7-table-head-bg-color:transparent;--f7-table-card-header-bg-color:transparent;--f7-table-card-header-height:64px;--f7-table-cell-padding-vertical:0px;--f7-table-sortable-icon-color:#000}:root .dark,:root.dark{--f7-table-sortable-icon-color:#fff;--f7-table-input-text-color:#fff}.ios{--f7-table-head-font-weight:600;--f7-table-head-cell-height:44px;--f7-table-head-icon-size:18px;--f7-table-body-cell-height:44px;--f7-table-cell-padding-horizontal:16px;--f7-table-edge-cell-padding-horizontal:16px;--f7-table-label-cell-padding-horizontal:16px;--f7-table-checkbox-cell-width:22px;--f7-table-title-font-size:17px;--f7-table-title-font-weight:600;--f7-table-footer-height:44px;--f7-table-head-text-color:rgba(0,0,0,0.45);--f7-table-cell-border-color:rgba(0,0,0,0.22);--f7-table-selected-row-bg-color:rgba(0,0,0,0.03);--f7-table-footer-text-color:rgba(0,0,0,0.45);--f7-table-input-text-color:#000}.ios .dark,.ios.dark{--f7-table-head-text-color:rgba(255,255,255,0.55);--f7-table-cell-border-color:rgba(255,255,255,0.15);--f7-table-footer-text-color:rgba(255,255,255,0.55);--f7-table-selected-row-bg-color:rgba(255,255,255,0.08)}.md{--f7-table-head-font-weight:500;--f7-table-head-cell-height:56px;--f7-table-head-icon-size:16px;--f7-table-body-cell-height:48px;--f7-table-cell-padding-horizontal:28px;--f7-table-edge-cell-padding-horizontal:24px;--f7-table-label-cell-padding-horizontal:24px;--f7-table-checkbox-cell-width:18px;--f7-table-title-font-size:20px;--f7-table-title-font-weight:400;--f7-table-footer-height:56px;--f7-table-actions-cell-link-color:rgba(0,0,0,0.54);--f7-table-actions-link-color:rgba(0,0,0,0.54);--f7-table-input-text-color:#212121}.md .dark,.md.dark{--f7-table-actions-cell-link-color:rgba(255,255,255,0.54);--f7-table-actions-link-color:rgba(255,255,255,0.54)}.md,.md .dark,.md [class*=color-]{--f7-table-head-text-color:var(--f7-md-on-surface-variant);--f7-table-footer-text-color:var(--f7-md-on-surface-variant);--f7-table-selected-row-bg-color:var(--f7-md-secondary-container);--f7-table-cell-border-color:var(--f7-md-outline)}.data-table{overflow-x:auto}.data-table table,table.data-table{border:none;border-collapse:collapse;margin:0;padding:0;text-align:right;width:100%}.data-table thead td,.data-table thead th{background-color:var(--f7-table-head-bg-color);font-size:var(--f7-table-head-font-size);font-weight:var(--f7-table-head-font-weight);height:var(--f7-table-head-cell-height);line-height:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table thead td:not(.sortable-cell-active),.data-table thead th:not(.sortable-cell-active){color:var(--f7-table-head-text-color)}.data-table thead i.f7-icons,.data-table thead i.icon,.data-table thead i.material-icons{font-size:var(--f7-table-head-icon-size);vertical-align:top}.data-table tbody{font-size:var(--f7-table-body-font-size)}.data-table tbody td,.data-table tbody th{height:var(--f7-table-body-cell-height)}.data-table tbody tr.data-table-row-selected,.device-desktop .data-table tbody tr:hover{background:var(--f7-table-selected-row-bg-color)}.data-table tbody td:before,.data-table tbody th:before{background-color:var(--f7-table-cell-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.data-table td,.data-table th{--f7-table-cell-padding-left:var(--f7-table-cell-padding-horizontal);--f7-table-cell-padding-right:var(--f7-table-cell-padding-horizontal);box-sizing:border-box;padding:var(--f7-table-cell-padding-vertical) var(--f7-table-cell-padding-right) var(--f7-table-cell-padding-vertical) var(--f7-table-cell-padding-left);position:relative}.data-table td:first-child,.data-table th:first-child{--f7-table-cell-padding-right:var(--f7-table-edge-cell-padding-horizontal)}.data-table td:last-child,.data-table th:last-child{--f7-table-cell-padding-left:var(--f7-table-edge-cell-padding-horizontal)}.data-table td.label-cell,.data-table th.label-cell{--f7-table-cell-padding-left:var(--f7-table-label-cell-padding-horizontal);--f7-table-cell-padding-right:var(--f7-table-label-cell-padding-horizontal)}.data-table td.numeric-cell,.data-table th.numeric-cell{text-align:left}.data-table td.checkbox-cell,.data-table th.checkbox-cell{overflow:visible;width:var(--f7-table-checkbox-cell-width)}.data-table td.checkbox-cell label+span,.data-table th.checkbox-cell label+span{margin-right:8px}.data-table td.checkbox-cell:first-child,.data-table th.checkbox-cell:first-child{padding-left:calc(var(--f7-table-cell-padding-left)/2)}.data-table td.checkbox-cell:first-child+td,.data-table td.checkbox-cell:first-child+th,.data-table td.checkbox-cell:last-child,.data-table th.checkbox-cell:first-child+td,.data-table th.checkbox-cell:first-child+th,.data-table th.checkbox-cell:last-child{padding-right:calc(var(--f7-table-cell-padding-right)/2)}.data-table td.actions-cell,.data-table th.actions-cell{text-align:left;white-space:nowrap}.data-table td.actions-cell a.link,.data-table th.actions-cell a.link{color:var(--f7-table-actions-cell-link-color,var(--f7-theme-color))}.card .data-table td a.icon-only,.card .data-table th a.icon-only,.card.data-table td a.icon-only,.card.data-table th a.icon-only,.data-table td a.icon-only,.data-table th a.icon-only{display:inline-block;font-size:0;min-width:0;text-align:center;vertical-align:middle}.card .data-table td a.icon-only i,.card .data-table th a.icon-only i,.card.data-table td a.icon-only i,.card.data-table th a.icon-only i,.data-table td a.icon-only i,.data-table th a.icon-only i{font-size:var(--f7-table-link-icon-only-icon-size);vertical-align:middle}.data-table .sortable-cell.input-cell .table-head-label,.data-table .sortable-cell:not(.input-cell){cursor:pointer;position:relative}.data-table .sortable-cell.numeric-cell.input-cell>.table-head-label:before,.data-table .sortable-cell.numeric-cell:not(.input-cell):before,.data-table .sortable-cell:not(.numeric-cell).input-cell>.table-head-label:after,.data-table .sortable-cell:not(.numeric-cell):not(.input-cell):after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-table-sortable-icon-color);content:"arrow_bottom_md";direction:ltr;display:block;display:inline-block;font-family:framework7-core-icons;font-size:20px;font-size:13px;font-style:normal;font-weight:400;height:100%;height:16px;letter-spacing:normal;line-height:1;line-height:16px;opacity:0;text-align:center;text-rendering:optimizeLegibility;text-transform:none;transform:rotate(0);transition-duration:.3s;vertical-align:top;white-space:nowrap;width:100%;width:16px}.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:after,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:before,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:after,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:before{opacity:.54}.data-table .sortable-cell.sortable-cell-active .table-head-label:after,.data-table .sortable-cell.sortable-cell-active .table-head-label:before,.data-table .sortable-cell.sortable-cell-active:after,.data-table .sortable-cell.sortable-cell-active:before{opacity:.87!important}.data-table .sortable-cell.sortable-desc:after,.data-table .sortable-cell.sortable-desc:before,.data-table .table-head-label:after,.data-table .table-head-label:before{transform:rotate(180deg)!important}.card .data-table .card-footer,.card .data-table .card-header,.data-table.card .card-footer,.data-table.card .card-header{padding-left:var(--f7-table-edge-cell-padding-horizontal);padding-right:var(--f7-table-edge-cell-padding-horizontal)}.card .data-table .card-header,.data-table.card .card-header{background-color:var(--f7-table-card-header-bg-color);min-height:var(--f7-table-card-header-height)}.card .data-table .card-content,.data-table.card .card-content{overflow-x:auto}.card .data-table .card-footer,.data-table.card .card-footer{min-height:var(--f7-table-footer-height)}.data-table .data-table-title{font-size:var(--f7-table-title-font-size);font-weight:var(--f7-table-title-font-weight)}.data-table .data-table-actions,.data-table .data-table-links{display:flex}.data-table .data-table-links .button{min-width:64px}.data-table .data-table-actions{align-items:center;margin-right:auto}.data-table .data-table-actions a.link{color:var(--f7-table-actions-link-color,var(--f7-theme-color));min-width:0}.data-table .data-table-actions a.link.icon-only{justify-content:center;line-height:1;padding:0}.data-table .data-table-header,.data-table .data-table-header-selected{align-items:center;display:flex;justify-content:space-between;width:100%}.data-table .card-header>.data-table-header,.data-table .card-header>.data-table-header-selected{height:100%;margin:calc(var(--f7-card-header-padding-vertical)*-1) calc(var(--f7-table-edge-cell-padding-horizontal)*-1);min-height:var(--f7-table-card-header-height);padding:var(--f7-card-header-padding-vertical) var(--f7-table-edge-cell-padding-horizontal)}.data-table .data-table-header-selected{background:rgba(var(--f7-theme-color-rgb),.1);display:none}.data-table.data-table-has-checked .data-table-header{display:none}.data-table.data-table-has-checked .data-table-header-selected{display:flex}.data-table .data-table-title-selected{color:var(--f7-theme-color);font-size:14px}.data-table .data-table-footer{align-items:center;box-sizing:border-box;color:var(--f7-table-footer-text-color);display:flex;font-size:var(--f7-table-footer-font-size);justify-content:flex-start;min-height:var(--f7-table-footer-height);overflow:hidden;position:relative}.data-table .data-table-footer:before{background-color:var(--f7-table-cell-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.data-table .data-table-pagination,.data-table .data-table-rows-select{align-items:center;display:flex}.data-table .input-cell{height:auto;padding-bottom:8px;padding-top:8px;vertical-align:top}.data-table .input-cell .table-head-label+.input{margin-top:4px}.data-table .input-cell .input{height:var(--f7-table-input-height)}.data-table .input-cell .input input,.data-table .input-cell .input select,.data-table .input-cell .input textarea{color:var(--f7-table-input-text-color);font-size:var(--f7-table-input-font-size);height:var(--f7-table-input-height)}@media (max-width:480px) and (orientation:portrait){.data-table.data-table-collapsible thead{display:none}.data-table.data-table-collapsible tbody,.data-table.data-table-collapsible td,.data-table.data-table-collapsible tr{display:block}.data-table.data-table-collapsible tr{position:relative}.data-table.data-table-collapsible tr:before{background-color:var(--f7-table-cell-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.data-table.data-table-collapsible tr:hover{background-color:inherit}.data-table.data-table-collapsible td{--f7-table-cell-padding-left:var(--f7-table-collapsible-cell-padding);--f7-table-cell-padding-right:var(--f7-table-collapsible-cell-padding);align-content:center;align-items:center;display:flex;height:auto;justify-content:flex-start;min-height:var(--f7-table-body-cell-height);text-align:right}.data-table.data-table-collapsible td:before{display:none!important}.data-table.data-table-collapsible td:not(.checkbox-cell):before{background:none!important;color:var(--f7-table-head-text-color);content:attr(data-collapsible-title);display:block!important;flex-shrink:0;font-size:var(--f7-table-head-font-size);font-weight:var(--f7-table-head-font-weight);height:auto;margin-left:16px;position:relative;transform:none!important;width:40%}.data-table.data-table-collapsible td.checkbox-cell{position:absolute;right:0;top:0}.data-table.data-table-collapsible td.checkbox-cell+td{padding-right:16px}.data-table.data-table-collapsible td.checkbox-cell~td{margin-right:32px}}.data-table .xsmall-landscape-only,.data-table .xsmall-only{display:none}@media (min-width:480px){.data-table .xsmall-only{display:table-cell}}@media (min-width:480px) and (orientation:landscape){.data-table .xsmall-landscape-only{display:table-cell}}.data-table .small-landscape-only,.data-table .small-only{display:none}@media (min-width:568px){.data-table .small-only{display:table-cell}}@media (min-width:568px) and (orientation:landscape){.data-table .small-landscape-only{display:table-cell}}.data-table .medium-landscape-only,.data-table .medium-only{display:none}@media (min-width:768px){.data-table .medium-only{display:table-cell}}@media (min-width:768px) and (orientation:landscape){.data-table .medium-landscape-only{display:table-cell}}.data-table .large-landscape-only,.data-table .large-only{display:none}@media (min-width:1024px){.data-table .large-only{display:table-cell}}@media (min-width:1024px) and (orientation:landscape){.data-table .large-landscape-only{display:table-cell}}.data-table .xlarge-landscape-only,.data-table .xlarge-only{display:none}@media (min-width:1200px){.data-table .xlarge-only{display:table-cell}}@media (min-width:1200px) and (orientation:landscape){.data-table .xlarge-landscape-only{display:table-cell}}.ios .data-table td.actions-cell a.link+a.link,.ios .data-table th.actions-cell a.link+a.link{margin-right:16px}.ios .sortable-cell:not(.numeric-cell):after{margin-right:5px}.ios .sortable-cell.numeric-cell:before{margin-left:5px}.ios .data-table-actions .button+.button,.ios .data-table-actions a.link+a.link,.ios .data-table-links .button+.button,.ios .data-table-links a.link+a.link{margin-right:16px}.ios .data-table-actions a.link.icon-only,.ios .data-table-pagination a.link,.ios .data-table-rows-select a.link{height:44px;width:44px}.ios .data-table-rows-select+.data-table-pagination{margin-right:30px}.ios .data-table-rows-select .input{margin-right:20px}.ios .data-table-pagination-label{margin-left:16px}.md .data-table td.actions-cell a.link+a.link,.md .data-table th.actions-cell a.link+a.link{margin-right:24px}.md .data-table td.actions-cell a.icon-only,.md .data-table th.actions-cell a.icon-only{height:24px;line-height:24px;width:24px}.md .sortable-cell:not(.numeric-cell):after{margin-right:8px}.md .sortable-cell.numeric-cell:before{margin-left:8px}.md .data-table-actions .button+.button,.md .data-table-actions a.link+a.link,.md .data-table-links .button+.button,.md .data-table-links a.link+a.link{margin-right:24px}.md .data-table-actions a.link.icon-only{height:24px;overflow:visible;width:24px}.md .data-table-actions a.link.icon-only.active-state{background:none}.md .data-table-pagination a.link,.md .data-table-rows-select a.link{height:48px;width:48px}.md .data-table-rows-select+.data-table-pagination{margin-right:32px}.md .data-table-rows-select .input{margin-right:24px}.md .data-table-pagination-label{margin-left:20px}.md .input-cell .input-clear-button{transform:scale(.8)}:root{--f7-fab-margin:16px;--f7-fab-extended-text-font-size:14px;--f7-fab-label-padding:4px 12px;--f7-fab-label-font-size:inherit;--f7-fab-button-size:40px}.ios{--f7-fab-text-color:#fff;--f7-fab-border-radius:50px;--f7-fab-size:50px;--f7-fab-box-shadow:0px 2px 4px rgba(0,0,0,0.4);--f7-fab-extended-text-transform:uppercase;--f7-fab-extended-size:50px;--f7-fab-extended-text-padding:0 20px;--f7-fab-extended-text-font-weight:600;--f7-fab-extended-text-letter-spacing:0;--f7-fab-label-border-radius:4px;--f7-fab-label-box-shadow:0px 1px 2px rgba(0,0,0,0.4);--f7-fab-label-text-color:#333;--f7-fab-label-bg-color:#fff}.md{--f7-fab-border-radius:16px;--f7-fab-size:56px;--f7-fab-box-shadow:0px 1px 2px rgba(0,0,0,0.25);--f7-fab-extended-size:56px;--f7-fab-extended-text-padding:0 16px;--f7-fab-extended-text-font-weight:500;--f7-fab-extended-text-letter-spacing:0;--f7-fab-extended-text-transform:none;--f7-fab-label-border-radius:8px;--f7-fab-label-box-shadow:0px 1px 2px rgba(0,0,0,0.25)}.md,.md .dark,.md [class*=color-]{--f7-fab-bg-color:var(--f7-md-primary-container);--f7-fab-text-color:var(--f7-md-on-primary-container);--f7-fab-label-text-color:var(--f7-md-on-surface);--f7-fab-label-bg-color:var(--f7-md-surface-5)}.fab-backdrop{z-index:1400}.fab{position:absolute;z-index:1500}.fab a{--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.fab-left-bottom,.fab-left-center,.fab-left-top{left:calc(var(--f7-fab-margin) + var(--f7-safe-area-left))}.fab-right-bottom,.fab-right-center,.fab-right-top{right:calc(var(--f7-fab-margin) + var(--f7-safe-area-right))}.fab-center-top,.fab-left-top,.fab-right-top{top:var(--f7-fab-margin)}.fab-center-bottom,.fab-left-bottom,.fab-right-bottom{bottom:calc(var(--f7-fab-margin) + var(--f7-safe-area-bottom))}.fab-center-bottom,.fab-center-center,.fab-center-top{left:50%;transform:translateX(-50%)}.fab-center-center,.fab-left-center,.fab-right-center{top:50%;transform:translateY(-50%)}.fab-center-center{left:50%;top:50%;transform:translateX(-50%) translateY(-50%)}.fab-buttons a,.fab>a{align-items:center;background-color:var(--f7-fab-bg-color,var(--f7-theme-color));border-radius:var(--f7-fab-border-radius);box-shadow:var(--f7-fab-box-shadow);color:var(--f7-fab-text-color);display:flex;height:var(--f7-fab-size);justify-content:center;overflow:hidden;position:relative;transition-duration:.3s;width:var(--f7-fab-size);z-index:1}.fab>a i{left:50%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0) rotate(0deg) scale(1);transition:.3s}.fab>a i+i{opacity:0;transform:translate3d(-50%,-50%,0) rotate(-90deg) scale(.5)}.fab-buttons a{border-radius:var(--f7-fab-border-radius);height:var(--f7-fab-button-size);width:var(--f7-fab-button-size)}.fab-buttons{display:flex;pointer-events:none;position:absolute;visibility:hidden}.fab-buttons a{opacity:0}.fab-opened:not(.fab-morph)>a i{opacity:0;transform:translate3d(-50%,-50%,0) rotate(90deg) scale(.5)}.fab-opened:not(.fab-morph)>a i+i{opacity:1;transform:translate3d(-50%,-50%,0) rotate(0deg) scale(1)}.fab-opened .fab-buttons{pointer-events:auto;visibility:visible}.fab-opened .fab-buttons a{opacity:1;transform:translateZ(0) scale(1)!important}.fab-opened .fab-buttons a:nth-child(2){transition-delay:50ms}.fab-opened .fab-buttons a:nth-child(3){transition-delay:.1s}.fab-opened .fab-buttons a:nth-child(4){transition-delay:.15s}.fab-opened .fab-buttons a:nth-child(5){transition-delay:.2s}.fab-opened .fab-buttons a:nth-child(6){transition-delay:.25s}.fab-buttons-bottom,.fab-buttons-top{left:50%;margin-left:calc(var(--f7-fab-button-size)*-1/2);width:var(--f7-fab-button-size)}.fab-buttons-top{bottom:100%;flex-direction:column-reverse;margin-bottom:16px}.fab-buttons-top a{transform:translate3d(0,8px,0) scale(.3);transform-origin:center bottom}.fab-buttons-top a+a{margin-bottom:16px}.fab-buttons-bottom{flex-direction:column;margin-top:16px;top:100%}.fab-buttons-bottom a{transform:translate3d(0,-8px,0) scale(.3);transform-origin:center top}.fab-buttons-bottom a+a{margin-top:16px}.fab-buttons-left,.fab-buttons-right{height:var(--f7-fab-button-size);margin-top:calc(var(--f7-fab-button-size)*-1/2);top:50%}.fab-buttons-left{margin-right:16px;right:100%}.fab-buttons-left a{transform:translate3d(8px,0,0) scale(.3);transform-origin:right center}.fab-buttons-left a+a{margin-right:16px}.fab-buttons-right{flex-direction:row-reverse;left:100%;margin-left:16px}.fab-buttons-right a{transform:translate3d(-8px,0,0) scale(.3);transform-origin:left center}.fab-buttons-right a+a{margin-left:16px}.fab-buttons-center{height:100%;left:0;top:0;width:100%}.fab-buttons-center a{position:absolute}.fab-buttons-center a:first-child{bottom:100%;left:50%;margin-bottom:16px;margin-left:calc(var(--f7-fab-button-size)*-1/2);transform:translateY(-8px) scale(.3);transform-origin:center bottom}.fab-buttons-center a:nth-child(2){left:100%;margin-left:16px;margin-top:calc(var(--f7-fab-button-size)*-1/2);top:50%;transform:translateX(-8px) scale(.3);transform-origin:left center}.fab-buttons-center a:nth-child(3){left:50%;margin-left:calc(var(--f7-fab-button-size)*-1/2);margin-top:16px;top:100%;transform:translateY(8px) scale(.3);transform-origin:center top}.fab-buttons-center a:nth-child(4){margin-right:16px;margin-top:calc(var(--f7-fab-button-size)*-1/2);right:100%;top:50%;transform:translateX(8px) scale(.3);transform-origin:right center}.fab-morph{background:var(--f7-fab-bg-color,var(--f7-theme-color));border-radius:var(--f7-fab-border-radius);box-shadow:var(--f7-fab-box-shadow)}.fab-morph>a{background:none!important;box-shadow:none}.fab-opened.fab-morph>a i{opacity:0}.fab-morph,.fab-morph-target,.fab-morph>a{transition-duration:.25s}.fab-morph-target:not(.fab-morph-target-visible){display:none}.fab-extended{min-width:var(--f7-fab-extended-size);width:auto}.fab-extended>a{height:var(--f7-fab-extended-size);width:100%}.fab-extended>a i{left:calc(var(--f7-fab-extended-size)/2)}.fab-extended i~.fab-text{padding-left:var(--f7-fab-extended-size)}.fab-extended>a{width:100%!important}.fab-text{box-sizing:border-box;font-size:var(--f7-fab-extended-text-font-size);font-weight:var(--f7-fab-extended-text-font-weight);letter-spacing:var(--f7-fab-extended-text-letter-spacing);padding:var(--f7-fab-extended-text-padding);text-transform:var(--f7-fab-extended-text-transform)}.fab-label-button{overflow:visible!important}.fab-label{background:var(--f7-fab-label-bg-color);border-radius:var(--f7-fab-label-border-radius);box-shadow:var(--f7-fab-label-box-shadow);color:var(--f7-fab-label-text-color);font-size:var(--f7-fab-label-font-size);padding:var(--f7-fab-label-padding);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);white-space:nowrap}.fab-right-bottom .fab-label,.fab-right-center .fab-label,.fab-right-top .fab-label{margin-right:8px;right:100%}.fab-left-bottom .fab-label,.fab-left-center .fab-label,.fab-left-top .fab-label{left:100%;margin-left:8px}.navbars~* .fab-center-top,.navbars~* .fab-left-top,.navbars~* .fab-right-top,.navbars~.fab-center-top,.navbars~.fab-left-top,.navbars~.fab-right-top,.navbar~* .fab-center-top,.navbar~* .fab-left-top,.navbar~* .fab-right-top,.navbar~.fab-center-top,.navbar~.fab-left-top,.navbar~.fab-right-top{margin-top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .toolbar-top-ios~* .fab-center-top,.ios .toolbar-top-ios~* .fab-left-top,.ios .toolbar-top-ios~* .fab-right-top,.ios .toolbar-top-ios~.fab-center-top,.ios .toolbar-top-ios~.fab-left-top,.ios .toolbar-top-ios~.fab-right-top,.md .toolbar-top-md~* .fab-center-top,.md .toolbar-top-md~* .fab-left-top,.md .toolbar-top-md~* .fab-right-top,.md .toolbar-top-md~.fab-center-top,.md .toolbar-top-md~.fab-left-top,.md .toolbar-top-md~.fab-right-top,.toolbar-top~* .fab-center-top,.toolbar-top~* .fab-left-top,.toolbar-top~* .fab-right-top,.toolbar-top~.fab-center-top,.toolbar-top~.fab-left-top,.toolbar-top~.fab-right-top{margin-top:var(--f7-toolbar-height)}.ios .toolbar-bottom-ios~* .fab-center-bottom,.ios .toolbar-bottom-ios~* .fab-left-bottom,.ios .toolbar-bottom-ios~* .fab-right-bottom,.ios .toolbar-bottom-ios~.fab-center-bottom,.ios .toolbar-bottom-ios~.fab-left-bottom,.ios .toolbar-bottom-ios~.fab-right-bottom,.md .toolbar-bottom-md~* .fab-center-bottom,.md .toolbar-bottom-md~* .fab-left-bottom,.md .toolbar-bottom-md~* .fab-right-bottom,.md .toolbar-bottom-md~.fab-center-bottom,.md .toolbar-bottom-md~.fab-left-bottom,.md .toolbar-bottom-md~.fab-right-bottom,.toolbar-bottom~* .fab-center-bottom,.toolbar-bottom~* .fab-left-bottom,.toolbar-bottom~* .fab-right-bottom,.toolbar-bottom~.fab-center-bottom,.toolbar-bottom~.fab-left-bottom,.toolbar-bottom~.fab-right-bottom{margin-bottom:var(--f7-toolbar-height)}.ios .tabbar-icons.toolbar-bottom-ios~* .fab-center-bottom,.ios .tabbar-icons.toolbar-bottom-ios~* .fab-left-bottom,.ios .tabbar-icons.toolbar-bottom-ios~* .fab-right-bottom,.ios .tabbar-icons.toolbar-bottom-ios~.fab-center-bottom,.ios .tabbar-icons.toolbar-bottom-ios~.fab-left-bottom,.ios .tabbar-icons.toolbar-bottom-ios~.fab-right-bottom,.md .tabbar-icons.toolbar-bottom-md~* .fab-center-bottom,.md .tabbar-icons.toolbar-bottom-md~* .fab-left-bottom,.md .tabbar-icons.toolbar-bottom-md~* .fab-right-bottom,.md .tabbar-icons.toolbar-bottom-md~.fab-center-bottom,.md .tabbar-icons.toolbar-bottom-md~.fab-left-bottom,.md .tabbar-icons.toolbar-bottom-md~.fab-right-bottom,.tabbar-icons.toolbar-bottom~* .fab-center-bottom,.tabbar-icons.toolbar-bottom~* .fab-left-bottom,.tabbar-icons.toolbar-bottom~* .fab-right-bottom,.tabbar-icons.toolbar-bottom~.fab-center-bottom,.tabbar-icons.toolbar-bottom~.fab-left-bottom,.tabbar-icons.toolbar-bottom~.fab-right-bottom{margin-bottom:var(--f7-tabbar-icons-height)}.ios .tabbar-icons.toolbar-top-ios~* .fab-center-bottom,.ios .tabbar-icons.toolbar-top-ios~* .fab-left-bottom,.ios .tabbar-icons.toolbar-top-ios~* .fab-right-bottom,.ios .tabbar-icons.toolbar-top-ios~.fab-center-bottom,.ios .tabbar-icons.toolbar-top-ios~.fab-left-bottom,.ios .tabbar-icons.toolbar-top-ios~.fab-right-bottom,.md .tabbar-icons.toolbar-top-md~* .fab-center-bottom,.md .tabbar-icons.toolbar-top-md~* .fab-left-bottom,.md .tabbar-icons.toolbar-top-md~* .fab-right-bottom,.md .tabbar-icons.toolbar-top-md~.fab-center-bottom,.md .tabbar-icons.toolbar-top-md~.fab-left-bottom,.md .tabbar-icons.toolbar-top-md~.fab-right-bottom,.tabbar-icons.toolbar-top~* .fab-center-bottom,.tabbar-icons.toolbar-top~* .fab-left-bottom,.tabbar-icons.toolbar-top~* .fab-right-bottom,.tabbar-icons.toolbar-top~.fab-center-bottom,.tabbar-icons.toolbar-top~.fab-left-bottom,.tabbar-icons.toolbar-top~.fab-right-bottom{margin-top:var(--f7-tabbar-icons-height)}.messagebar~* .fab-center-bottom,.messagebar~* .fab-left-bottom,.messagebar~* .fab-right-bottom,.messagebar~.fab-center-bottom,.messagebar~.fab-left-bottom,.messagebar~.fab-right-bottom{margin-bottom:var(--f7-messagebar-height)}.ios .navbar+.toolbar-top-ios~* .fab-center-top,.ios .navbar+.toolbar-top-ios~* .fab-left-top,.ios .navbar+.toolbar-top-ios~* .fab-right-top,.ios .navbar+.toolbar-top-ios~.fab-center-top,.ios .navbar+.toolbar-top-ios~.fab-left-top,.ios .navbar+.toolbar-top-ios~.fab-right-top,.md .navbar+.toolbar-top-ios~* .fab-center-top,.md .navbar+.toolbar-top-ios~* .fab-left-top,.md .navbar+.toolbar-top-ios~* .fab-right-top,.md .navbar+.toolbar-top-ios~.fab-center-top,.md .navbar+.toolbar-top-ios~.fab-left-top,.md .navbar+.toolbar-top-ios~.fab-right-top,.navbar+.toolbar-top~* .fab-center-top,.navbar+.toolbar-top~* .fab-left-top,.navbar+.toolbar-top~* .fab-right-top,.navbar+.toolbar-top~.fab-center-top,.navbar+.toolbar-top~.fab-left-top,.navbar+.toolbar-top~.fab-right-top{margin-top:calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbar+.toolbar-top-ios.tabbar-icons~* .fab-center-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~* .fab-left-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~* .fab-right-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~.fab-center-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~.fab-left-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~.fab-right-top,.md .navbar+.toolbar-top-ios.tabbar-icons~* .fab-center-top,.md .navbar+.toolbar-top-ios.tabbar-icons~* .fab-left-top,.md .navbar+.toolbar-top-ios.tabbar-icons~* .fab-right-top,.md .navbar+.toolbar-top-ios.tabbar-icons~.fab-center-top,.md .navbar+.toolbar-top-ios.tabbar-icons~.fab-left-top,.md .navbar+.toolbar-top-ios.tabbar-icons~.fab-right-top,.navbar+.toolbar-top.tabbar-icons~* .fab-center-top,.navbar+.toolbar-top.tabbar-icons~* .fab-left-top,.navbar+.toolbar-top.tabbar-icons~* .fab-right-top,.navbar+.toolbar-top.tabbar-icons~.fab-center-top,.navbar+.toolbar-top.tabbar-icons~.fab-left-top,.navbar+.toolbar-top.tabbar-icons~.fab-right-top{margin-top:calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars+.toolbar-top-ios~* .fab-center-top,.ios .navbars+.toolbar-top-ios~* .fab-left-top,.ios .navbars+.toolbar-top-ios~* .fab-right-top,.ios .navbars+.toolbar-top-ios~.fab-center-top,.ios .navbars+.toolbar-top-ios~.fab-left-top,.ios .navbars+.toolbar-top-ios~.fab-right-top,.navbars+.toolbar-top~* .fab-center-top,.navbars+.toolbar-top~* .fab-left-top,.navbars+.toolbar-top~* .fab-right-top,.navbars+.toolbar-top~.fab-center-top,.navbars+.toolbar-top~.fab-left-top,.navbars+.toolbar-top~.fab-right-top{margin-top:calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars+.toolbar-top-ios.tabbar-icons~* .fab-center-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~* .fab-left-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~* .fab-right-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~.fab-center-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~.fab-left-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~.fab-right-top,.navbars+.toolbar-top.tabbar-icons~* .fab-center-top,.navbars+.toolbar-top.tabbar-icons~* .fab-left-top,.navbars+.toolbar-top.tabbar-icons~* .fab-right-top,.navbars+.toolbar-top.tabbar-icons~.fab-center-top,.navbars+.toolbar-top.tabbar-icons~.fab-left-top,.navbars+.toolbar-top.tabbar-icons~.fab-right-top{margin-top:calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .fab-buttons a.active-state,.ios .fab>a.active-state{background-color:var(--f7-fab-pressed-bg-color,var(--f7-theme-color-shade));transition-duration:0ms}.md .fab-buttons a.active-state,.md .fab>a.active-state{background-color:var(--f7-fab-pressed-bg-color,var(--f7-fab-bg-color,var(--f7-theme-color)))}:root{--f7-searchbar-input-border-width:0px;--f7-searchbar-input-border-color:transparent}.ios{--f7-searchbar-height:44px;--f7-searchbar-inner-padding-left:8px;--f7-searchbar-inner-padding-right:8px;--f7-searchbar-input-font-size:17px;--f7-searchbar-input-border-radius:8px;--f7-searchbar-input-height:32px;--f7-searchbar-inline-input-height:32px;--f7-searchbar-input-padding-horizontal:28px;--f7-searchbar-backdrop-bg-color:rgba(0,0,0,0.4);--f7-searchbar-in-page-content-margin:0px;--f7-searchbar-in-page-content-box-shadow:none;--f7-searchbar-in-page-content-border-radius:0;--f7-searchbar-in-page-content-input-border-radius:0;--f7-searchbar-placeholder-color:rgba(0,0,0,0.4);--f7-searchbar-input-text-color:#000;--f7-searchbar-search-icon-color:rgba(0,0,0,0.4);--f7-searchbar-input-bg-color:#e4e4e4}.ios .dark,.ios.dark{--f7-searchbar-placeholder-color:rgba(255,255,255,0.4);--f7-searchbar-input-text-color:#fff;--f7-searchbar-search-icon-color:rgba(255,255,255,0.4);--f7-searchbar-input-bg-color:#2a2a2a}.md{--f7-searchbar-border-color:transparent;--f7-searchbar-height:48px;--f7-searchbar-inner-padding-left:8px;--f7-searchbar-inner-padding-right:8px;--f7-searchbar-input-font-size:16px;--f7-searchbar-input-border-radius:24px;--f7-searchbar-input-height:48px;--f7-searchbar-inline-input-height:48px;--f7-searchbar-inline-input-border-radius:24px;--f7-searchbar-input-padding-horizontal:16px;--f7-searchbar-inline-input-padding-horizontal:16px;--f7-searchbar-backdrop-bg-color:rgba(0,0,0,0.25);--f7-searchbar-in-page-content-margin:16px 0;--f7-searchbar-in-page-content-box-shadow:none;--f7-searchbar-in-page-content-border-radius:24px;--f7-searchbar-in-page-content-input-border-radius:24px;--f7-searchbar-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-searchbar-link-color:var(--f7-md-on-surface);--f7-searchbar-search-icon-color:var(--f7-md-on-surface);--f7-searchbar-input-clear-button-color:var(--f7-md-on-surface);--f7-searchbar-placeholder-color:var(--f7-md-on-surface-variant);--f7-searchbar-input-bg-color:var(--f7-md-secondary-container);--f7-searchbar-input-text-color:var(--f7-md-on-surface)}.searchbar{--f7-link-highlight-color:var(--f7-link-highlight-black);background-color:var(--f7-searchbar-bg-color,var(--f7-bars-bg-color));height:var(--f7-searchbar-height);position:relative;width:100%;z-index:200}.dark .searchbar{--f7-link-highlight-color:var(--f7-link-highlight-white)}.searchbar input[type=search]::-webkit-search-decoration{display:none}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .searchbar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-searchbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.ios .subnavbar .searchbar{-webkit-backdrop-filter:none;backdrop-filter:none;background-color:initial}.ios .subnavbar .searchbar:after,.searchbar.no-outline:after{display:none!important}.searchbar:after{background-color:var(--f7-searchbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.page>.searchbar:not(.searchbar-inline){z-index:600}.searchbar input[type=search],.searchbar input[type=text]{-webkit-appearance:none;appearance:none;background-color:var(--f7-searchbar-input-bg-color);border:var(--f7-searchbar-input-border-width) solid var(--f7-searchbar-input-border-color);border-radius:var(--f7-searchbar-input-border-radius);box-sizing:border-box;color:var(--f7-searchbar-input-text-color);display:block;font-family:inherit;font-size:var(--f7-searchbar-input-font-size);font-weight:400;height:100%;padding:0;padding-left:calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-right, 0px));padding-right:calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px));position:relative;width:100%}.searchbar input[type=search]::placeholder,.searchbar input[type=text]::placeholder{color:var(--f7-searchbar-placeholder-color);opacity:1}.searchbar input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}.searchbar .searchbar-input-wrap{flex-shrink:1;height:var(--f7-searchbar-input-height);position:relative;width:100%}.searchbar a{color:var(--f7-searchbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.page>.searchbar:not(.searchbar-inline){left:0;position:absolute;top:0}.page-content .searchbar:not(.searchbar-inline){border-radius:var(--f7-searchbar-in-page-content-border-radius);box-shadow:var(--f7-searchbar-in-page-content-box-shadow);margin:var(--f7-searchbar-in-page-content-margin);width:auto}.page-content .searchbar:not(.searchbar-inline) .searchbar-inner,.page-content .searchbar:not(.searchbar-inline) input[type=search],.page-content .searchbar:not(.searchbar-inline) input[type=text]{border-radius:var(--f7-searchbar-in-page-content-input-border-radius,var(--f7-searchbar-input-border-radius))}.searchbar .input-clear-button{color:var(--f7-searchbar-input-clear-button-color,var(--f7-input-clear-button-color))}.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-searchbar-height);pointer-events:none;position:absolute;transition-duration:.3s}.navbar .searchbar-expandable{background:transparent}.navbar .searchbar-expandable:after{display:none!important}.navbar .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbar .searchbar.searchbar-expandable .searchbar-inner{height:calc(100% - var(--f7-safe-area-top));top:var(--f7-safe-area-top)}.toolbar .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-toolbar-height)}.subnavbar .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-subnavbar-height)}.tabbar-icons .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-tabbar-icons-height)}.searchbar-inner{align-items:center;box-sizing:border-box;display:flex;height:100%;left:0;padding:0 calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left));position:absolute;top:0;width:100%}.searchbar-disable-button{-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;margin:0;opacity:0;outline:0;padding:0;pointer-events:none;width:auto}.searchbar-icon{background-position:50%;background-repeat:no-repeat;pointer-events:none}.searchbar-icon:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-searchbar-search-icon-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.searchbar-backdrop{background:var(--f7-searchbar-backdrop-bg-color);height:100%;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transform:translateZ(0);transition-duration:.3s;width:100%;z-index:100}.searchbar-backdrop.searchbar-backdrop-in{opacity:1;pointer-events:auto}.page-content>.searchbar-backdrop{position:fixed}.searchbar-not-found{display:none}.hidden-by-searchbar,.list .hidden-by-searchbar,.list li.hidden-by-searchbar,.list.li.hidden-by-searchbar{display:none!important}.navbar.with-searchbar-expandable-enabled,.navbar.with-searchbar-expandable-enabled-no-transition{--f7-navbar-large-collapse-progress:1}.navbar.with-searchbar-expandable-closing .navbar-bg,.navbar.with-searchbar-expandable-closing .title-large,.navbar.with-searchbar-expandable-closing .title-large-text,.navbar.with-searchbar-expandable-enabled .navbar-bg,.navbar.with-searchbar-expandable-enabled .title-large,.navbar.with-searchbar-expandable-enabled .title-large-text{transition-duration:.3s}.page-content.with-searchbar-expandable-enabled{height:calc(100% + var(--f7-navbar-large-title-height));transform:translateY(calc(var(--f7-navbar-large-title-height)*-1));transition-duration:.3s;transition-property:transform}.page-content.with-searchbar-expandable-closing{transition-duration:.3s}.navbars~.page:not(.no-navbar)>.searchbar,.navbar~.page:not(.no-navbar)>.searchbar,.page>.navbar~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbars~.page-with-navbar-large:not(.no-navbar) .searchbar,.navbar~.page-with-navbar-large:not(.no-navbar) .searchbar,.page-with-navbar-large .navbar~* .searchbar,.page-with-navbar-large .navbar~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.navbars~.page-with-navbar-large:not(.no-navbar) .page-content .searchbar,.page-with-navbar-large .page-content .searchbar{top:0;transform:none}.searchbar~*{--f7-page-searchbar-offset:var(--f7-searchbar-height)}.ios .page>.toolbar-top-ios~.searchbar,.md .page>.toolbar-top-md~.searchbar,.page>.toolbar-top~.searchbar{top:var(--f7-toolbar-height)}.ios .page>.tabbar-icons.toolbar-top-ios~.searchbar,.md .page>.tabbar-icons.toolbar-top-md~.searchbar,.page>.tabbar-icons.toolbar-top~.searchbar{top:var(--f7-tabbar-icons-height)}.ios .page>.navbar~.toolbar-top-ios~.searchbar,.md .page>.navbar~.toolbar-top-md~.searchbar,.page>.navbar~.toolbar-top~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top))}.ios .page>.navbar~.tabbar-icons.toolbar-top-ios~.searchbar,.md .page>.navbar~.tabbar-icons.toolbar-top-md~.searchbar,.page>.navbar~.tabbar-icons.toolbar-top~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top))}.searchbar.searchbar-inline{background-color:initial;background-image:none;height:auto;width:auto}.searchbar.searchbar-inline:after,.searchbar.searchbar-inline:before{display:none!important}.searchbar.searchbar-inline .searchbar-input-wrap{height:var(--f7-searchbar-inline-input-height,var(--f7-searchbar-input-height))}.searchbar.searchbar-inline .searchbar-inner{height:auto;padding:0;position:static;width:auto}.searchbar.searchbar-inline input[type=search],.searchbar.searchbar-inline input[type=text]{border-radius:var(--f7-searchbar-inline-input-border-radius,var(--f7-searchbar-input-border-radius));font-size:var(--f7-searchbar-inline-input-font-size,var(--f7-searchbar-input-font-size));padding-left:calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-right, 0px));padding-right:calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-left, 0px))}.ios .searchbar input[type=search],.ios .searchbar input[type=text]{z-index:30}.ios .searchbar .input-clear-button{left:7px;z-index:40}.ios .searchbar-icon{height:13px;margin-top:-6px;position:absolute;right:8px;top:50%;width:13px;z-index:40}.ios .searchbar-icon:after{content:"search_ios";line-height:13px}.ios .searchbar-disable-button{color:var(--f7-searchbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)));display:none;flex-shrink:0;font-size:17px;transform:translateZ(0);transition-duration:.3s}.ios .searchbar-disable-button.active-state{opacity:.3!important;transition-duration:0ms}.ios .searchbar-enabled .searchbar-disable-button{margin-right:8px;opacity:1;pointer-events:auto}.ios .searchbar:not(.searchbar-enabled) .searchbar-disable-button{transition-duration:.3s!important}.ios .searchbar-expandable{bottom:0;height:0;opacity:1;overflow:hidden;right:0;transform:translateZ(0);width:100%}.ios .searchbar-expandable .searchbar-disable-button{display:block;margin-right:8px;opacity:1}.ios .searchbar-expandable .searchbar-inner{height:var(--f7-searchbar-expandable-size)}.ios .navbar.with-searchbar-expandable-closing .navbar-bg,.ios .navbar.with-searchbar-expandable-enabled .navbar-bg{transition-property:transform,opacity}.ios .navbar.with-searchbar-expandable-closing .left,.ios .navbar.with-searchbar-expandable-closing .navbar-bg,.ios .navbar.with-searchbar-expandable-closing .right,.ios .navbar.with-searchbar-expandable-closing .title,.ios .navbar.with-searchbar-expandable-enabled .left,.ios .navbar.with-searchbar-expandable-enabled .navbar-bg,.ios .navbar.with-searchbar-expandable-enabled .right,.ios .navbar.with-searchbar-expandable-enabled .title{transition-duration:.3s}.ios .navbar.with-searchbar-expandable-enabled .left,.ios .navbar.with-searchbar-expandable-enabled .right,.ios .navbar.with-searchbar-expandable-enabled .title,.ios .navbar.with-searchbar-expandable-enabled-no-transition .left,.ios .navbar.with-searchbar-expandable-enabled-no-transition .right,.ios .navbar.with-searchbar-expandable-enabled-no-transition .title{opacity:0!important;transform:translateY(calc(var(--f7-navbar-height)*-1))}.ios .searchbar-expandable.searchbar-enabled{height:var(--f7-searchbar-expandable-size);opacity:1;pointer-events:auto}.md .searchbar-disable-button,.md .searchbar-icon{position:absolute;top:50%;transition-duration:.3s}.md .searchbar-icon{align-items:center;display:flex;height:48px;justify-content:center;left:0;right:var(--f7-safe-area-right);top:0;width:48px}.md .searchbar-icon:after{content:"search_md";height:auto;line-height:1.2;width:auto}.md .searchbar-disable-button{color:var(--f7-searchbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)));display:block;font-size:0!important;height:48px;margin-top:-24px;right:calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right));transform:rotate(-90deg) scale(.5);width:48px}.md .searchbar-disable-button:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";content:"arrow_right_md";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;line-height:48px;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-disable-button{opacity:1;pointer-events:auto;transform:rotate(0deg) scale(1)}.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-icon{opacity:0;transform:rotate(90deg) scale(.5)}.md .searchbar{--f7-searchbar-input-extra-padding-left:34px}.md .searchbar .input-clear-button{height:48px;left:0;margin-top:-24px;width:48px}.md .searchbar .input-clear-button:after{content:"delete_round_md";line-height:48px;opacity:1}.md .searchbar .input-clear-button:before{display:none}.md .searchbar-inline{--f7-searchbar-input-extra-padding-left:32px}.md .page>.searchbar,.md .searchbar-expandable,.md .subnavbar .searchbar{--f7-searchbar-input-extra-padding-left:34px}.md .page>.searchbar .searchbar-disable-button,.md .searchbar-expandable .searchbar-disable-button,.md .subnavbar .searchbar .searchbar-disable-button{right:calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right))}.md .page>.searchbar .searchbar-icon,.md .searchbar-expandable .searchbar-icon,.md .subnavbar .searchbar .searchbar-icon{right:var(--f7-safe-area-right)}.md .searchbar-expandable{--f7-searchbar-inner-padding-left:4px;--f7-searchbar-inner-padding-right:4px;background-color:var(--f7-searchbar-input-bg-color);border-radius:calc(var(--f7-searchbar-expandable-size));bottom:0;height:var(--f7-searchbar-expandable-size);margin-right:calc(var(--f7-searchbar-expandable-size)*-1);margin-top:calc(var(--f7-searchbar-expandable-size)*-1/2);opacity:0;right:100%;transform:translateZ(0);width:calc(var(--f7-searchbar-expandable-size))}.md .searchbar-expandable.searchbar-enabled{border-radius:0;margin-right:0;margin-top:0;opacity:1;pointer-events:auto;right:0;width:100%}:root{--f7-message-text-header-opacity:0.65;--f7-message-text-header-font-size:12px;--f7-message-text-footer-opacity:0.65;--f7-message-text-footer-font-size:12px;--f7-message-bubble-line-height:1.2;--f7-message-header-font-size:12px;--f7-message-footer-font-size:11px;--f7-message-name-font-size:12px;--f7-message-name-font-weight:inherit;--f7-message-avatar-border-radius:50%;--f7-messages-title-font-weight:inherit;--f7-message-typing-indicator-bg-color:#000}:root .dark,:root.dark{--f7-message-typing-indicator-bg-color:#fff}.ios{--f7-message-text-header-text-color:inherit;--f7-message-text-footer-text-color:inherit;--f7-messages-title-font-size:11px;--f7-message-avatar-size:29px;--f7-message-margin:10px;--f7-message-bubble-min-height:32px;--f7-message-bubble-font-size:17px;--f7-message-bubble-border-radius:16px;--f7-message-bubble-padding-vertical:6px;--f7-message-bubble-padding-horizontal:16px;--f7-message-typing-indicator-opacity:0.35;--f7-message-sent-text-color:#fff;--f7-messages-content-bg-color:#fff;--f7-message-received-text-color:#000;--f7-message-received-bg-color:#e5e5ea;--f7-messages-title-text-color:rgba(0,0,0,0.45);--f7-message-header-text-color:rgba(0,0,0,0.45);--f7-message-footer-text-color:rgba(0,0,0,0.45);--f7-message-name-text-color:rgba(0,0,0,0.45)}.ios .dark,.ios.dark{--f7-message-received-bg-color:#252525;--f7-message-received-text-color:#fff;--f7-messages-content-bg-color:transparent;--f7-messages-title-text-color:rgba(255,255,255,0.54);--f7-message-header-text-color:rgba(255,255,255,0.54);--f7-message-name-text-color:rgba(255,255,255,0.54);--f7-message-footer-text-color:rgba(255,255,255,0.54)}.md{--f7-messages-content-bg-color:transparent;--f7-messages-title-font-size:12px;--f7-message-avatar-size:32px;--f7-message-margin:16px;--f7-message-bubble-min-height:40px;--f7-message-bubble-font-size:16px;--f7-message-bubble-border-radius:20px;--f7-message-bubble-padding-vertical:10px;--f7-message-bubble-padding-horizontal:16px;--f7-message-typing-indicator-opacity:0.6}.md,.md .dark,.md [class*=color-]{--f7-message-sent-bg-color:var(--f7-md-primary);--f7-message-sent-text-color:var(--f7-md-on-primary);--f7-message-received-bg-color:var(--f7-md-surface-variant);--f7-message-received-text-color:var(--f7-md-on-surface);--f7-message-text-header-text-color:var(--f7-md-on-surface-variant);--f7-message-text-footer-text-color:var(--f7-md-on-surface-variant);--f7-messages-title-text-color:var(--f7-md-on-surface-variant);--f7-message-header-text-color:var(--f7-md-on-surface-variant);--f7-message-footer-text-color:var(--f7-md-on-surface-variant);--f7-message-name-text-color:var(--f7-md-on-surface-variant)}.messages,.messages-content{background:var(--f7-messages-content-bg-color)}.messages{display:flex;flex-direction:column;min-height:100%;position:relative;z-index:1}.message,.messages-title{margin-top:var(--f7-message-margin)}.message:last-child,.messages-title:last-child{margin-bottom:var(--f7-message-margin)}.messages-title{color:var(--f7-messages-title-text-color);font-size:var(--f7-messages-title-font-size);font-weight:var(--f7-messages-title-font-weight);line-height:1;text-align:center;width:100%}.message{align-items:flex-end;box-sizing:border-box;display:flex;max-width:70%;position:relative;transform:translateZ(0);z-index:1}.message-avatar{align-self:flex-end;background-size:cover;border-radius:var(--f7-message-avatar-border-radius);flex-shrink:0;height:var(--f7-message-avatar-size);position:relative;width:var(--f7-message-avatar-size)}.message-content{display:flex;flex-direction:column;position:relative}.message-footer,.message-header,.message-name{line-height:1}.message-header{color:var(--f7-message-header-text-color);font-size:var(--f7-message-header-font-size)}.message-footer{color:var(--f7-message-footer-text-color);font-size:var(--f7-message-footer-font-size);margin-bottom:-1em}.message-name{color:var(--f7-message-name-text-color);font-size:var(--f7-message-name-font-size);font-weight:var(--f7-message-name-font-weight)}.message-bubble{border-radius:var(--f7-message-bubble-border-radius);box-sizing:border-box;display:flex;flex-direction:column;font-size:var(--f7-message-bubble-font-size);line-height:var(--f7-message-bubble-line-height);min-height:var(--f7-message-bubble-min-height);padding:var(--f7-message-bubble-padding-vertical) var(--f7-message-bubble-padding-horizontal);position:relative;word-break:break-word}.message-image img{display:block;height:auto;max-width:100%;width:auto}.message-text-footer,.message-text-header{line-height:1}.message-text-header{color:var(--f7-message-text-header-text-color);font-size:var(--f7-message-text-header-font-size);opacity:var(--f7-message-text-header-opacity)}.message-text-footer{color:var(--f7-message-text-footer-text-color);font-size:var(--f7-message-text-footer-font-size);opacity:var(--f7-message-text-footer-opacity)}.message-text{text-align:left}.message-sent{align-self:flex-start;flex-direction:row;text-align:right}.message-sent .message-bubble{background:var(--f7-message-sent-bg-color,var(--f7-theme-color));color:var(--f7-message-sent-text-color)}.message-sent .message-content{align-items:flex-start}.message-received{align-self:flex-end;flex-direction:row-reverse}.message-received .message-bubble{background:var(--f7-message-received-bg-color);color:var(--f7-message-received-text-color)}.message-received .message-content{align-items:flex-end}.message:not(.message-last) .message-avatar{opacity:0}.message.message-same-footer .message-footer,.message.message-same-header .message-header,.message.message-same-name .message-name,.message:not(.message-first) .message-name{display:none}.message-appear-from-bottom{animation:message-appear-from-bottom .3s}.message-appear-from-top{animation:message-appear-from-top .3s}.message-typing-indicator{display:inline-block;font-size:0;vertical-align:middle}.message-typing-indicator>div{background:var(--f7-message-typing-indicator-bg-color);border-radius:50%;display:inline-block;opacity:var(--f7-message-typing-indicator-opacity);position:relative;vertical-align:middle}@keyframes message-appear-from-bottom{0%{transform:translate3d(0,100%,0)}to{transform:translateZ(0)}}@keyframes message-appear-from-top{0%{transform:translate3d(0,-100%,0)}to{transform:translateZ(0)}}.ios .message-footer b,.ios .message-header b,.ios .message-name b,.ios .messages-title b{font-weight:600}.ios .message-header,.ios .message-name{margin-bottom:3px}.ios .message-footer{margin-top:3px}.ios .message-bubble{min-width:48px}.ios .message-image{margin:var(--f7-message-bubble-padding-vertical) calc(var(--f7-message-bubble-padding-horizontal)*-1)}.ios .message-image:first-child{margin-top:calc(var(--f7-message-bubble-padding-vertical)*-1)}.ios .message-image:first-child img{border-top-left-radius:var(--f7-message-bubble-border-radius);border-top-right-radius:var(--f7-message-bubble-border-radius)}.ios .message-image:last-child{margin-bottom:calc(var(--f7-message-bubble-padding-vertical)*-1)}.ios .message-image:last-child img{border-bottom-left-radius:var(--f7-message-bubble-border-radius);border-bottom-right-radius:var(--f7-message-bubble-border-radius)}.ios .message-text-header{margin-bottom:3px}.ios .message-text-footer{margin-top:3px}.ios .message-received{margin-left:calc(10px + var(--f7-safe-area-left))}.ios .message-received .message-footer,.ios .message-received .message-header,.ios .message-received .message-name{margin-left:var(--f7-message-bubble-padding-horizontal)}.ios .message-received .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 42% 46% 56%;padding-left:calc(var(--f7-message-bubble-padding-horizontal) + 6px)}.ios .message-received .message-image{margin-left:calc((var(--f7-message-bubble-padding-horizontal) + 6px)*-1)}.ios .message-received.message-tail .message-bubble{border-radius:var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0}.ios .message-received.message-tail:not(.message-typing) .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 42% 46% 56%}.ios .message-received.message-tail:not(.message-typing) .message-bubble .message-image:last-child img{border-bottom-left-radius:0}.ios .message-sent{margin-right:calc(10px + var(--f7-safe-area-right))}.ios .message-sent .message-footer,.ios .message-sent .message-header,.ios .message-sent .message-name{margin-right:var(--f7-message-bubble-padding-horizontal)}.ios .message-sent .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 56% 46% 42%;padding-right:calc(var(--f7-message-bubble-padding-horizontal) + 6px)}.ios .message-sent .message-image{margin-right:calc((var(--f7-message-bubble-padding-horizontal) + 6px)*-1)}.ios .message-sent.message-tail .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 56% 46% 42%;border-radius:var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0 var(--f7-message-bubble-border-radius)}.ios .message-sent.message-tail .message-bubble .message-image:last-child img{border-bottom-right-radius:0}.ios .message+.message:not(.message-first){margin-top:1px}.ios .message-received.message-typing .message-content:after,.ios .message-received.message-typing .message-content:before{background:var(--f7-message-received-bg-color);border-radius:50%;content:"";position:absolute}.ios .message-received.message-typing .message-content:after{bottom:0;height:11px;left:4px;width:11px}.ios .message-received.message-typing .message-content:before{bottom:-4px;height:6px;left:-1px;width:6px}.ios .message-typing-indicator>div{height:9px;width:9px}.ios .message-typing-indicator>div+div{margin-right:4px}.ios .message-typing-indicator>div:first-child{animation:ios-message-typing-indicator .9s infinite}.ios .message-typing-indicator>div:nth-child(2){animation:ios-message-typing-indicator .9s .15s infinite}.ios .message-typing-indicator>div:nth-child(3){animation:ios-message-typing-indicator .9s .3s infinite}@keyframes ios-message-typing-indicator{0%{opacity:.35}25%{opacity:.2}50%{opacity:.2}}.md .message-footer b,.md .message-header b,.md .message-name b,.md .messages-title b{font-weight:500}.md .message-header,.md .message-name{margin-bottom:2px}.md .message-footer{margin-top:2px}.md .message-text-header{margin-bottom:4px}.md .message-text-footer{margin-top:4px}.md .message-image{margin:calc(var(--f7-message-bubble-padding-vertical)*-1) calc(var(--f7-message-bubble-padding-horizontal)*-1)}.md .message-image,.md .message-image img{border-radius:var(--f7-message-bubble-border-radius)}.md .message-received{margin-left:calc(8px + var(--f7-safe-area-left))}.md .message-received .message-footer,.md .message-received .message-header,.md .message-received .message-name{margin-left:16px}.md .message-received.message-first:not(.message-last) .message-bubble,.md .message-received.message-first:not(.message-last) .message-image,.md .message-received.message-first:not(.message-last) .message-image img{border-bottom-left-radius:4px}.md .message-received.message-last:not(.message-first) .message-bubble,.md .message-received.message-last:not(.message-first) .message-image,.md .message-received.message-last:not(.message-first) .message-image img{border-top-left-radius:4px}.md .message-received:not(.message-last):not(.message-first) .message-bubble,.md .message-received:not(.message-last):not(.message-first) .message-image,.md .message-received:not(.message-last):not(.message-first) .message-image img{border-bottom-left-radius:4px;border-top-left-radius:4px}.md .message-received .message-avatar+.message-content{margin-left:8px}.md .message-sent{margin-right:calc(8px + var(--f7-safe-area-right))}.md .message-sent .message-footer,.md .message-sent .message-header,.md .message-sent .message-name{margin-right:16px}.md .message-sent.message-first:not(.message-last) .message-bubble,.md .message-sent.message-first:not(.message-last) .message-image,.md .message-sent.message-first:not(.message-last) .message-image img{border-bottom-right-radius:4px}.md .message-sent.message-last:not(.message-first) .message-bubble,.md .message-sent.message-last:not(.message-first) .message-image,.md .message-sent.message-last:not(.message-first) .message-image img{border-top-right-radius:4px}.md .message-sent:not(.message-last):not(.message-first) .message-bubble,.md .message-sent:not(.message-last):not(.message-first) .message-image,.md .message-sent:not(.message-last):not(.message-first) .message-image img{border-bottom-right-radius:4px;border-top-right-radius:4px}.md .message-sent .message-avatar+.message-content{margin-right:var(--f7-message-bubble-padding-horizontal)}.md .message+.message:not(.message-first){margin-top:2px}.md .message-typing-indicator>div{height:6px;width:6px}.md .message-typing-indicator>div+div{margin-right:6px}.md .message-typing-indicator>div:first-child{animation:md-message-typing-indicator .9s infinite}.md .message-typing-indicator>div:nth-child(2){animation:md-message-typing-indicator .9s .15s infinite}.md .message-typing-indicator>div:nth-child(3){animation:md-message-typing-indicator .9s .3s infinite}@keyframes md-message-typing-indicator{0%{transform:translateY(0)}25%{transform:translateY(-5px)}50%{transform:translateY(0)}}:root{--f7-messagebar-attachments-height:155px;--f7-messagebar-sheet-height:252px;--f7-messagebar-sheet-landscape-height:192px}.ios{--f7-messagebar-height:44px;--f7-messagebar-font-size:17px;--f7-messagebar-textarea-bg-color:transparent;--f7-messagebar-border-color:transparent;--f7-messagebar-textarea-border-radius:17px;--f7-messagebar-textarea-padding:6px 16px;--f7-messagebar-textarea-height:34px;--f7-messagebar-textarea-font-size:17px;--f7-messagebar-textarea-line-height:20px;--f7-messagebar-sheet-bg-color:#d1d5da;--f7-messagebar-sheet-border-color:transparent;--f7-messagebar-attachment-border-radius:12px;--f7-messagebar-attachment-height:155px;--f7-messagebar-attachment-landscape-height:120px;--f7-messagebar-textarea-placeholder-color:rgba(0,0,0,0.4);--f7-messagebar-textarea-text-color:#000;--f7-messagebar-textarea-border:1px solid #c8c8cd;--f7-messagebar-attachments-border-color:#c8c8cd;--f7-messagebar-bg-color:#fff;--f7-messagebar-bg-color-rgb:255,255,255}.ios .dark,.ios.dark{--f7-messagebar-textarea-placeholder-color:rgba(255,255,255,0.4);--f7-messagebar-textarea-text-color:#fff;--f7-messagebar-textarea-border:1px solid var(--f7-bars-border-color);--f7-messagebar-attachments-border-color:var(--f7-bars-border-color);--f7-messagebar-bg-color:var(--f7-bars-bg-color);--f7-messagebar-bg-color-rgb:var(--f7-bars-bg-color-rgb)}.md{--f7-messagebar-height:64px;--f7-messagebar-font-size:16px;--f7-messagebar-textarea-border-radius:24px;--f7-messagebar-textarea-padding:12px 16px;--f7-messagebar-textarea-height:48px;--f7-messagebar-textarea-font-size:16px;--f7-messagebar-textarea-line-height:22px;--f7-messagebar-textarea-border:1px solid transparent;--f7-messagebar-attachment-border-radius:12px;--f7-messagebar-attachment-height:72px;--f7-messagebar-attachment-landscape-height:72px;--f7-messagebar-border-color:transparent;--f7-messagebar-attachments-border-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-messagebar-textarea-placeholder-color:var(--f7-md-on-surface-variant);--f7-messagebar-textarea-bg-color:var(--f7-md-surface-variant);--f7-messagebar-bg-color:var(--f7-md-surface);--f7-messagebar-textarea-text-color:var(--f7-md-on-surface);--f7-messagebar-sheet-bg-color:var(--f7-md-surface);--f7-messagebar-sheet-border-color:var(--f7-md-outline-variant);--f7-messagebar-link-color:var(--f7-md-on-surface)}.messagebar{background:var(--f7-messagebar-bg-color);bottom:0;font-size:var(--f7-messagebar-font-size);height:auto;min-height:var(--f7-messagebar-height);padding-bottom:var(--f7-safe-area-bottom);transform:translateZ(0)}.messagebar:before{background-color:var(--f7-messagebar-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .messagebar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-messagebar-bg-color-rgb),var(--f7-bars-translucent-opacity))}}.messagebar.no-outline:before,.messagebar.toolbar-hidden:after{display:none!important}.messagebar .toolbar-inner{bottom:auto;flex-direction:row-reverse;height:auto;padding-left:calc(var(--f7-messagebar-inner-padding-left, var(--f7-toolbar-inner-padding-left)) + var(--f7-safe-area-left));padding-right:calc(var(--f7-messagebar-inner-padding-right, var(--f7-toolbar-inner-padding-right)) + var(--f7-safe-area-right));position:relative;top:auto}.messagebar.messagebar-sheet-visible>.toolbar-inner{bottom:0}.messagebar .messagebar-area{flex-shrink:1;overflow:hidden;position:relative;width:100%}.messagebar textarea{background-color:var(--f7-messagebar-textarea-bg-color);border:var(--f7-messagebar-textarea-border);border-radius:var(--f7-messagebar-textarea-border-radius);color:var(--f7-messagebar-textarea-text-color);flex-shrink:1;font-size:var(--f7-messagebar-textarea-font-size);height:var(--f7-messagebar-textarea-height);line-height:var(--f7-messagebar-textarea-line-height);padding:var(--f7-messagebar-textarea-padding);width:100%}.messagebar textarea::placeholder{color:var(--f7-messagebar-textarea-placeholder-color)}.messagebar a.link{align-self:flex-end;color:var(--f7-messagebar-link-color,var(--f7-theme-color));flex-shrink:0}.messagebar-attachments{-webkit-overflow-scrolling:touch;box-sizing:border-box;font-size:0;overflow:auto;position:relative;white-space:nowrap;width:100%}.messagebar:not(.messagebar-attachments-visible) .messagebar-attachments{display:none}.messagebar-attachment{background-position:50%;background-repeat:no-repeat;background-size:cover;border-radius:var(--f7-messagebar-attachment-border-radius);display:inline-block;height:var(--f7-messagebar-attachment-height);position:relative;vertical-align:middle;white-space:normal}@media (orientation:landscape){.messagebar-attachment{height:var(--f7-messagebar-attachment-landscape-height)}}.messagebar-attachment img{border-radius:var(--f7-messagebar-attachment-border-radius);display:block;height:100%;width:auto}.messagebar-sheet{-webkit-overflow-scrolling:touch;align-content:flex-start;background-color:var(--f7-messagebar-sheet-bg-color);border-top:1px solid var(--f7-messagebar-sheet-border-color);display:flex;flex-direction:column;flex-wrap:wrap;height:var(--f7-messagebar-sheet-height);overflow:auto;padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right)}@media (orientation:landscape){.messagebar-sheet{height:var(--f7-messagebar-sheet-landscape-height)}}.messagebar-sheet-image{background-position:50%;background-repeat:no-repeat;background-size:cover}.messagebar-sheet-image>img{border-radius:inherit;height:100%;object-fit:cover;object-position:center;transition-duration:.2s;width:100%}.messagebar-attachment-delete{border-radius:50%;box-sizing:border-box;cursor:pointer;display:block;position:absolute}.messagebar-attachment-delete:after,.messagebar-attachment-delete:before{content:"";left:50%;position:absolute;top:50%}.messagebar-attachment-delete:after{transform:rotate(45deg)}.messagebar-attachment-delete:before{transform:rotate(-45deg)}.messagebar:not(.messagebar-sheet-visible) .messagebar-sheet{display:none}.messagebar~*{--f7-page-toolbar-bottom-offset:var(--f7-messagebar-height)}.ios .messagebar a.link.icon-only:first-child{margin-left:-8px}.ios .messagebar a.link.icon-only:last-child{margin-right:-8px}.ios .messagebar .messagebar-area+a.link:not(.icon-only),.ios .messagebar a.link:not(.icon-only)+.messagebar-area{margin-left:8px}.ios .messagebar-area{margin-bottom:5px;margin-top:5px}.ios .messagebar-attachments{border:1px solid var(--f7-messagebar-attachments-border-color);border-bottom:none;border-radius:var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;padding:5px}.ios .messagebar-attachments-visible .messagebar-attachments+textarea{border-radius:0 0 var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius)}.ios .messagebar-attachment{font-size:14px}.ios .messagebar-attachment+.messagebar-attachment{margin-right:8px}.ios .messagebar-attachment-delete{background:#7d7e80;border:2px solid #fff;box-shadow:0 0 2px rgba(0,0,0,.2);height:20px;right:5px;top:5px;width:20px}.ios .messagebar-attachment-delete:after,.ios .messagebar-attachment-delete:before{background:#fff;height:2px;margin-left:-5px;margin-top:-1px;width:10px}.ios .messagebar-sheet-image,.ios .messagebar-sheet-item{box-sizing:border-box;flex-shrink:0;height:calc((var(--f7-messagebar-sheet-height) - 2px)/2);margin-right:1px;margin-top:1px;overflow:hidden;position:relative;width:calc((var(--f7-messagebar-sheet-height) - 2px)/2)}@media (orientation:landscape){.ios .messagebar-sheet-image,.ios .messagebar-sheet-item{height:calc((var(--f7-messagebar-sheet-landscape-height) - 2px)/2);width:calc((var(--f7-messagebar-sheet-landscape-height) - 2px)/2)}}.ios .messagebar-sheet-image .icon-checkbox,.ios .messagebar-sheet-image .icon-radio,.ios .messagebar-sheet-item .icon-checkbox,.ios .messagebar-sheet-item .icon-radio{bottom:8px;position:absolute;right:8px;z-index:1}.md .messagebar{--f7-toolbar-link-height:var(--f7-messagebar-height)}.md .messagebar-attachments{border-bottom:1px solid var(--f7-messagebar-attachments-border-color);padding:16px 16px 0}.md .messagebar-attachment img{height:var(--f7-messagebar-attachment-height);object-fit:cover;object-position:center;width:var(--f7-messagebar-attachment-height)}.md .messagebar-attachment+.messagebar-attachment{margin-right:16px}.md .messagebar-attachments-visible .messagebar-attachments{background:var(--f7-messagebar-textarea-bg-color);border-radius:var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0}.md .messagebar-attachments-visible textarea{border-top-left-radius:0;border-top-right-radius:0}.md .messagebar-area{margin-bottom:8px;margin-top:8px}.md .messagebar-attachment-delete{background-color:var(--f7-md-inverse-surface);border:2px solid var(--f7-messagebar-textarea-bg-color);border-radius:24px;height:24px;right:-6px;top:-6px;width:24px}.md .messagebar-attachment-delete:after,.md .messagebar-attachment-delete:before{background:var(--f7-messagebar-textarea-bg-color);height:2px;margin-left:-6px;margin-top:-1px;width:12px}.md .messagebar-sheet-image,.md .messagebar-sheet-item{--f7-touch-ripple-color:transparent;border-radius:4px;box-sizing:border-box;flex-shrink:0;height:calc((var(--f7-messagebar-sheet-height) - 24px)/2);margin-right:8px;margin-top:8px;overflow:hidden;position:relative;width:calc((var(--f7-messagebar-sheet-height) - 24px)/2)}@media (orientation:landscape){.md .messagebar-sheet-image,.md .messagebar-sheet-item{height:calc((var(--f7-messagebar-sheet-landscape-height) - 24px)/2);width:calc((var(--f7-messagebar-sheet-landscape-height) - 8px)/2)}}.md .messagebar-sheet-image input:checked~img,.md .messagebar-sheet-item input:checked~img{transform:scale(.85)}.md .messagebar-sheet-image input:checked~.icon-checkbox,.md .messagebar-sheet-image input:checked~.icon-radio,.md .messagebar-sheet-item input:checked~.icon-checkbox,.md .messagebar-sheet-item input:checked~.icon-radio{transform:translate(-50%,-50%) scale(1)}.md .messagebar-sheet-image .icon-checkbox,.md .messagebar-sheet-image .icon-radio,.md .messagebar-sheet-item .icon-checkbox,.md .messagebar-sheet-item .icon-radio{--f7-checkbox-inactive-color:var(--f7-md-surface);--f7-checkbox-active-color:var(--f7-md-surface);align-items:center;border:none;border-radius:50%;display:flex;height:32px;justify-content:center;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(.85);width:32px;z-index:1}.md .messagebar-sheet-image .icon-checkbox:after,.md .messagebar-sheet-image .icon-radio:after,.md .messagebar-sheet-item .icon-checkbox:after,.md .messagebar-sheet-item .icon-radio:after{color:var(--f7-md-on-surface);font-size:18px;height:100%;left:0;line-height:32px;position:static;width:auto}@font-face{font-family:swiper-icons;font-style:normal;font-weight:400;src:url("data:application/font-woff;charset=utf-8;base64, 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")}:root{--swiper-theme-color:#007aff}:host{display:block;margin-left:auto;margin-right:auto;position:relative;z-index:1}.swiper{display:block;list-style:none;margin-left:auto;margin-right:auto;overflow:hidden;overflow:clip;padding:0;position:relative;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{box-sizing:initial;display:flex;height:100%;position:relative;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);width:100%;z-index:1}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{display:block;flex-shrink:0;height:100%;position:relative;transition-property:transform;width:100%}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{-ms-overflow-style:none;overflow:auto;scrollbar-width:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);min-width:1px;width:100%}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(270deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(90deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(0deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(180deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top:4px solid transparent;box-sizing:border-box;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;transform-origin:50%;width:42px;z-index:10}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s linear infinite}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper:after{content:"";left:0;pointer-events:none;position:absolute;top:0}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper:after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper:after{height:var(--swiper-virtual-size);width:1px}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{align-items:center;color:var(--swiper-navigation-color,var(--swiper-theme-color));cursor:pointer;display:flex;height:var(--swiper-navigation-size);justify-content:center;margin-top:calc(0px - var(--swiper-navigation-size)/2);position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/44*27);z-index:10}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{cursor:auto;opacity:.35;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{cursor:auto;opacity:0;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{height:100%;object-fit:contain;transform-origin:center;width:100%}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);font-variant:normal;letter-spacing:0;line-height:1;text-transform:none!important}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:"prev"}.swiper-button-next,.swiper-rtl .swiper-button-prev{left:auto;right:var(--swiper-navigation-sides-offset,10px)}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:"next"}.swiper-pagination{position:absolute;text-align:center;transform:translateZ(0);transition:opacity .3s;z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);left:0;top:var(--swiper-pagination-top,auto);width:100%}.swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{position:relative;transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{background:var(--swiper-pagination-bullet-inactive-color,#000);border-radius:var(--swiper-pagination-bullet-border-radius,50%);display:inline-block;height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px))}button.swiper-pagination-bullet{-webkit-appearance:none;appearance:none;border:none;box-shadow:none;margin:0;padding:0}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{background:var(--swiper-pagination-color,var(--swiper-theme-color));opacity:var(--swiper-pagination-bullet-opacity,1)}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{left:var(--swiper-pagination-left,auto);right:var(--swiper-pagination-right,8px);top:50%;transform:translate3d(0,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{display:block;margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:transform .2s,top .2s}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,left .2s}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));height:100%;left:0;position:absolute;top:0;transform:scale(0);transform-origin:left top;width:100%}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0;width:100%}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{height:100%;left:0;top:0;width:var(--swiper-pagination-progressbar-size,4px)}.swiper-pagination-lock{display:none}.swiper-scrollbar{background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1));border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;-ms-touch-action:none}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{bottom:var(--swiper-scrollbar-bottom,4px);height:var(--swiper-scrollbar-size,4px);left:var(--swiper-scrollbar-sides-offset,1%);position:absolute;top:var(--swiper-scrollbar-top,auto);width:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);z-index:50}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{height:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);left:var(--swiper-scrollbar-left,auto);position:absolute;right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);width:var(--swiper-scrollbar-size,4px);z-index:50}.swiper-scrollbar-drag{background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);height:100%;left:0;position:relative;top:0;width:100%}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{align-items:center;display:flex;height:100%;justify-content:center;text-align:center;width:100%}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-height:100%;max-width:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none}.swiper .swiper-notification{left:0;opacity:0;pointer-events:none;position:absolute;top:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{margin:0 auto;transition-timing-function:ease-out}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-direction:column;flex-wrap:wrap}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;height:100%;pointer-events:none;transform-origin:0 0;visibility:hidden;width:100%;z-index:1}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{bottom:0;height:100%;left:0;opacity:.6;position:absolute;width:100%;z-index:0}.swiper-cube .swiper-cube-shadow:before{background:#000;bottom:0;content:"";filter:blur(50px);left:0;position:absolute;right:0;top:0}.swiper-cube .swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top{-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:0}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:none;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top{-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:0}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transform-origin:center bottom}:root{--f7-photobrowser-bg-color:#fff;--f7-photobrowser-bars-bg-color:rgba(var(--f7-bars-bg-color-rgb),0.95);--f7-photobrowser-bars-text-color:var(--f7-bars-text-color);--f7-photobrowser-bars-link-color:var(--f7-bars-link-color);--f7-photobrowser-caption-font-size:13px;--f7-photobrowser-caption-font-weight:500;--f7-photobrowser-caption-light-text-color:#000;--f7-photobrowser-caption-dark-text-color:#fff;--f7-photobrowser-exposed-bg-color:#000;--f7-photobrowser-dark-bg-color:#000;--f7-photobrowser-dark-bars-bg-color:rgba(27,27,27,0.8);--f7-photobrowser-dark-bars-text-color:#fff;--f7-photobrowser-dark-bars-link-color:#fff}.photo-browser{height:100%;left:0;position:absolute;top:0;width:100%;z-index:400}.photo-browser-standalone.modal-in{animation:photo-browser-in .4s;transition-duration:0ms}.photo-browser-standalone.modal-out{animation:photo-browser-out .4s!important;transition-duration:0ms}.photo-browser-standalone.modal-out.swipe-close-to-bottom,.photo-browser-standalone.modal-out.swipe-close-to-top{animation:none!important}.photo-browser-standalone.photo-browser-transitioning{animation:none!important;transition:.4s}.photo-browser-popup.modal-out.swipe-close-to-bottom,.photo-browser-popup.modal-out.swipe-close-to-top{transition-duration:.3s}.photo-browser-popup.modal-out.swipe-close-to-bottom{transform:translate3d(0,100vh,0)}.photo-browser-popup.modal-out.swipe-close-to-top{transform:translate3d(0,-100vh,0)}.photo-browser-page{background:none}.photo-browser-page .toolbar{transform:none}.photo-browser-popup{background:none}.photo-browser-of{margin:0 5px}.photo-browser-captions{bottom:var(--f7-safe-area-bottom);left:0;opacity:1;pointer-events:none;position:absolute;transition-duration:.4s;width:100%;z-index:10}.photo-browser-captions.photo-browser-captions-exposed{opacity:0}.toolbar~.toolbar.photo-browser-thumbs{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.page~.photo-browser-page:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs,.photo-browser-popup:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs,.photo-browser-standalone:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs{height:var(--f7-toolbar-height)}.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs{transform:translate3d(0,calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom, 0)),0)}.navbar+.toolbar.photo-browser-thumbs .swiper,.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs .swiper{height:calc(100% - var(--f7-safe-area-bottom, 0))}.toolbar~.photo-browser-captions{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));transform:translateZ(0)}.toolbar~.photo-browser-captions.photo-browser-captions-exposed{transform:translateZ(0)}.toolbar~.toolbar~.photo-browser-captions{bottom:calc(var(--f7-toolbar-height)*2 + var(--f7-safe-area-bottom))}.toolbar~.toolbar~.photo-browser-captions.photo-browser-captions-exposed{transform:translate3d(0,var(--f7-toolbar-height),0)}.photo-browser-thumbs{transition-property:transform,background-color,color}.photo-browser-thumbs .swiper{height:100%;width:100%}.photo-browser-thumbs .swiper-slide{align-items:center;display:flex;justify-content:center;width:auto}.photo-browser-thumbs img{border-radius:2px;display:block;height:75%;min-width:4px;width:auto}.photo-browser-thumbs .swiper-slide img{transform:translateX(-4px);transition-duration:.15s}.photo-browser-thumbs .swiper-slide-active img{transform:scale(1.2)}.photo-browser-thumbs .swiper-slide-active~.swiper-slide img{transform:translateX(4px)}.photo-browser-caption{bottom:0;box-sizing:border-box;font-size:var(--f7-photobrowser-caption-font-size);font-weight:var(--f7-photobrowser-caption-font-weight);left:0;opacity:0;padding:4px 5px;position:absolute;text-align:center;transition-duration:.4s;width:100%}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .photo-browser-caption{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur))}}.photo-browser-caption:empty{display:none}.photo-browser-caption.photo-browser-caption-active{opacity:1}.photo-browser-captions-light .photo-browser-caption{color:var(--f7-photobrowser-caption-light-text-color)}.dark .photo-browser-caption,.photo-browser-captions-dark .photo-browser-caption{color:var(--f7-photobrowser-caption-dark-text-color)}.photo-browser-swiper-container{background:var(--f7-photobrowser-bg-color);height:100%;left:0;overflow:hidden;position:absolute;top:0;touch-action:none;transition:.4s;transition-property:background-color;width:100%}.photo-browser-next.swiper-button-disabled,.photo-browser-prev.swiper-button-disabled{opacity:.3;pointer-events:none}.photo-browser-slide{align-items:center;box-sizing:border-box;display:flex;flex-shrink:0;height:100%;justify-content:center;overflow:hidden;position:relative;width:100%}.photo-browser-slide span.swiper-zoom-container{display:none}.photo-browser-slide img{display:none;height:auto;max-height:100%;max-width:100%;width:auto}.photo-browser-slide.swiper-slide-active span.swiper-zoom-container,.photo-browser-slide.swiper-slide-next span.swiper-zoom-container,.photo-browser-slide.swiper-slide-prev span.swiper-zoom-container{display:flex}.photo-browser-slide.swiper-slide-active img,.photo-browser-slide.swiper-slide-next img,.photo-browser-slide.swiper-slide-prev img{display:inline}.photo-browser-slide.swiper-slide-active.photo-browser-slide-lazy .preloader,.photo-browser-slide.swiper-slide-next.photo-browser-slide-lazy .preloader,.photo-browser-slide.swiper-slide-prev.photo-browser-slide-lazy .preloader{display:block}.photo-browser-slide iframe{height:100%;width:100%}.photo-browser-slide .preloader{display:none;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;width:42px}.navbar-photo-browser .right .link i,.navbar-photo-browser .right .link svg{display:block;height:24px;width:24px}.navbar-photo-browser .navbar-bg,.photo-browser-caption,.photo-browser-page .navbar-bg,.photo-browser-page .toolbar{background-color:var(--f7-photobrowser-bars-bg-color,rgba(var(--f7-bars-bg-color-rgb),.95))}.photo-browser-page{touch-action:none}.photo-browser-page .navbar,.photo-browser-page .toolbar{color:var(--f7-photobrowser-bars-text-color,var(--f7-bars-text-color));transform:translateZ(0);transition-duration:.4s}.photo-browser-page .navbar a,.photo-browser-page .toolbar a{color:var(--f7-photobrowser-bars-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.photo-browser-exposed .navbar,.photo-browser-exposed .toolbar:not(.photo-browser-thumbs){opacity:0;pointer-events:none;visibility:hidden}.photo-browser-exposed .toolbar:not(.photo-browser-thumbs)~.photo-browser-captions,.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs~.photo-browser-captions{transform:translate3d(0,var(--f7-toolbar-height),0)}.photo-browser-exposed .photo-browser-swiper-container{background:var(--f7-photobrowser-exposed-bg-color)}.photo-browser-dark .photo-browser-thumbs,.photo-browser-dark .toolbar,.photo-browser-exposed .photo-browser-thumbs,.photo-browser-exposed .toolbar{background-color:var(--f7-photobrowser-dark-bars-bg-color)}.photo-browser-dark .photo-browser-caption,.photo-browser-exposed .photo-browser-caption{background-color:var(--f7-photobrowser-dark-bars-bg-color);color:var(--f7-photobrowser-caption-dark-text-color)}.view.with-photo-browser-page-exposed .navbar{opacity:0;pointer-events:none}.photo-browser-page .toolbar:after,.photo-browser-page .toolbar:before{display:none!important}.navbar-photo-browser-dark .navbar-bg,.photo-browser-page-dark .navbar-bg{background:var(--f7-photobrowser-dark-bars-bg-color)}.navbar-photo-browser-dark .navbar-bg:after,.navbar-photo-browser-dark .navbar-bg:before,.photo-browser-page-dark .navbar-bg:after,.photo-browser-page-dark .navbar-bg:before{display:none!important}.navbar-photo-browser-dark,.photo-browser-dark .navbar,.photo-browser-dark .toolbar,.photo-browser-page-dark .navbar,.photo-browser-page-dark .toolbar{color:var(--f7-photobrowser-dark-bars-text-color)}.navbar-photo-browser-dark a,.photo-browser-dark .navbar a,.photo-browser-dark .toolbar a,.photo-browser-page-dark .navbar a,.photo-browser-page-dark .toolbar a{color:var(--f7-photobrowser-dark-bars-link-color)}.photo-browser-dark .photo-browser-swiper-container,.photo-browser-page-dark .photo-browser-swiper-container{background:var(--f7-photobrowser-dark-bg-color)}@keyframes photo-browser-in{0%{opacity:0;transform:translateZ(0) scale(.5)}50%{opacity:1;transform:translateZ(0) scale(1.05)}to{opacity:1;transform:translateZ(0) scale(1)}}@keyframes photo-browser-out{0%{opacity:1;transform:translateZ(0) scale(1)}50%{opacity:1;transform:translateZ(0) scale(1.05)}to{opacity:0;transform:translateZ(0) scale(.5)}}:root{--f7-notification-max-width:568px;--f7-notification-subtitle-text-transform:none;--f7-notification-subtitle-line-height:1.35;--f7-notification-text-text-transform:none;--f7-notification-text-font-weight:400}.ios{--f7-notification-margin:8px;--f7-notification-padding-horizontal:10px;--f7-notification-padding-vertical:10px;--f7-notification-border-radius:12px;--f7-notification-box-shadow:0px 5px 25px -10px rgba(0,0,0,0.7);--f7-notification-icon-size:20px;--f7-notification-title-font-size:13px;--f7-notification-title-text-transform:uppercase;--f7-notification-title-line-height:1.4;--f7-notification-title-font-weight:400;--f7-notification-title-letter-spacing:0.02em;--f7-notification-title-right-font-size:13px;--f7-notification-subtitle-font-size:15px;--f7-notification-subtitle-font-weight:600;--f7-notification-text-font-size:15px;--f7-notification-text-line-height:1.2;--f7-notification-bg-color:rgba(250,250,250,0.95);--f7-notification-bg-color-rgb:255,255,255;--f7-notification-title-color:#000;--f7-notification-title-right-color:rgba(0,0,0,0.45);--f7-notification-subtitle-color:#000;--f7-notification-text-color:#000}.ios .dark,.ios.dark{--f7-notification-bg-color:rgba(30,30,30,0.95);--f7-notification-bg-color-rgb:30,30,30;--f7-notification-title-color:#fff;--f7-notification-text-color:#fff;--f7-notification-subtitle-color:#fff;--f7-notification-title-right-color:rgba(255,255,255,0.55)}.md{--f7-notification-margin:16px;--f7-notification-padding-vertical:20px;--f7-notification-padding-horizontal:16px;--f7-notification-border-radius:16px;--f7-notification-box-shadow:none;--f7-notification-icon-size:24px;--f7-notification-title-font-size:16px;--f7-notification-title-text-transform:none;--f7-notification-title-line-height:1.35;--f7-notification-title-font-weight:500;--f7-notification-title-right-font-size:12px;--f7-notification-subtitle-font-size:14px;--f7-notification-subtitle-font-weight:400;--f7-notification-text-font-size:14px;--f7-notification-text-line-height:1.35}.md,.md .dark,.md [class*=color-]{--f7-notification-title-color:var(--f7-md-on-surface);--f7-notification-bg-color:var(--f7-md-surface-5);--f7-notification-text-color:var(--f7-md-on-surface-variant);--f7-notification-title-right-color:var(--f7-md-on-surface-variant);--f7-notification-subtitle-color:var(--f7-md-on-surface)}.notification{background:var(--f7-notification-bg-color);border:none;border-radius:var(--f7-notification-border-radius);box-shadow:var(--f7-notification-box-shadow);box-sizing:border-box;direction:ltr;display:none;font-size:14px;left:var(--f7-notification-margin);margin:0;margin-top:var(--f7-safe-area-top);max-width:var(--f7-notification-max-width);padding:var(--f7-notification-padding-vertical) var(--f7-notification-padding-horizontal);position:absolute;top:var(--f7-notification-margin);transition-property:transform;width:calc(100% - var(--f7-notification-margin)*2);z-index:20000}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .notification{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-notification-bg-color-rgb),.8)}}@media (min-width:568px){.notification{left:50%;margin-left:calc(var(--f7-notification-max-width)*-1/2);width:var(--f7-notification-max-width)}}.notification-title{color:var(--f7-notification-title-color,var(--f7-theme-color));font-size:var(--f7-notification-title-font-size);font-weight:var(--f7-notification-title-font-weight);letter-spacing:var(--f7-notification-title-letter-spacing);line-height:var(--f7-notification-title-line-height);text-transform:var(--f7-notification-title-text-transform)}.notification-subtitle{color:var(--f7-notification-subtitle-color);font-size:var(--f7-notification-subtitle-font-size);font-weight:var(--f7-notification-subtitle-font-weight);line-height:var(--f7-notification-subtitle-line-height);text-transform:var(--f7-notification-subtitle-text-transform)}.notification-text{color:var(--f7-notification-text-color);font-size:var(--f7-notification-text-font-size);font-weight:var(--f7-notification-text-font-weight);line-height:var(--f7-notification-text-line-height);text-transform:var(--f7-notification-text-text-transform)}.notification-title-right-text{color:var(--f7-notification-title-right-color);font-size:var(--f7-notification-title-right-font-size)}.notification-icon{font-size:0;line-height:var(--f7-notification-icon-size)}.notification-icon,.notification-icon i{height:var(--f7-notification-icon-size)!important;width:var(--f7-notification-icon-size)!important}.notification-icon i{font-size:var(--f7-notification-icon-size)}.notification-icon img{height:var(--f7-notification-icon-size)}.notification-header{align-items:center;display:flex;justify-content:flex-start}.notification-close-button{cursor:pointer;margin-left:auto;position:relative}.notification-close-button:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;left:50%;letter-spacing:normal;line-height:1;position:absolute;text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;white-space:nowrap;width:100%}.ios .notification{transform:translate3d(0,-200%,0);transition-duration:.45s}.ios .notification.modal-in{opacity:1;transform:translateZ(0)}.ios .notification.modal-out{transform:translate3d(0,-200%,0)}.ios .notification-icon{margin-right:8px}.ios .notification-header+.notification-content{margin-top:10px}.ios .notification-title-right-text{margin-left:auto;margin-right:6px}.ios .notification-title-right-text+.notification-close-button{margin-left:10px}.ios .notification-close-button{font-size:14px;height:20px;opacity:.3;transition-duration:.3s;width:20px}.ios .notification-close-button.active-state{opacity:.1;transition-duration:0ms}.ios .notification-close-button:after{color:#000;content:"notification_close_ios";font-size:.65em;height:44px;line-height:44px;margin-left:-22px;margin-top:-22px;width:44px}.ios .dark .notification-close-button:after,.ios.dark .notification-close-button:after{color:#fff}.md .notification{transform:translate3d(0,-150%,0)}.md .notification.modal-in{transform:translateZ(0);transition-duration:.5s;transition-timing-function:cubic-bezier(0,.8,.34,1)}.md .notification.modal-in.notification-transitioning{transition-duration:.2s}.md .notification.modal-out{animation:none;transform:translate3d(0,-150%,0);transition-duration:.2s;transition-timing-function:ease-in}.md .notification-with-icon .notification-icon{left:var(--f7-notification-padding-horizontal);position:absolute;top:var(--f7-notification-padding-vertical)}.md .notification-with-icon .notification-content,.md .notification-with-icon .notification-header{margin-left:calc(var(--f7-notification-icon-size) + 16px)}.md .notification-icon{margin-right:8px}.md .notification-subtitle+.notification-text{margin-top:4px}.md .notification-header+.notification-content{margin-top:8px}.md .notification-title-right-text{margin-left:4px}.md .notification-title-right-text:before{background:var(--f7-notification-title-right-color);border-radius:50%;content:"";display:inline-block;height:3px;margin-right:4px;vertical-align:middle;width:3px}.md .notification-close-button{height:16px;transition-duration:.3s;width:16px}.md .notification-close-button:after,.md .notification-close-button:before{height:48px;left:50%;margin-left:-24px;margin-top:-24px;top:50%;width:48px}.md .notification-close-button:after{color:var(--f7-md-on-surface-variant);content:"delete_round_md";font-size:24px;line-height:48px}@keyframes notification-md-in{0%{transform:translate3d(0,-150%,0)}50%{transform:translate3d(0,10%,0)}to{transform:translateZ(0)}}:root{--f7-autocomplete-dropdown-placeholder-color:#a9a9a9;--f7-autocomplete-dropdown-preloader-size:20px;--f7-autocomplete-dropdown-font-size:var(--f7-list-font-size)}.ios{--f7-autocomplete-dropdown-box-shadow:0px 3px 3px rgba(0,0,0,0.2);--f7-autocomplete-dropdown-text-matching-font-weight:600;--f7-autocomplete-dropdown-bg-color:#fff;--f7-autocomplete-dropdown-text-color:#000;--f7-autocomplete-dropdown-text-matching-color:#000}.ios .dark,.ios.dark{--f7-autocomplete-dropdown-bg-color:#1c1c1d;--f7-autocomplete-dropdown-text-color:#fff;--f7-autocomplete-dropdown-text-matching-color:#fff}.md{--f7-autocomplete-dropdown-box-shadow:none;--f7-autocomplete-dropdown-text-matching-font-weight:500;--f7-autocomplete-dropdown-text-matching-color:#000}.md .dark,.md.dark{--f7-autocomplete-dropdown-text-matching-color:#fff}.md,.md .dark,.md [class*=color-]{--f7-autocomplete-dropdown-bg-color:var(--f7-md-surface-2);--f7-autocomplete-dropdown-text-color:var(--f7-md-on-surface)}.autocomplete-page .autocomplete-found{display:block}.autocomplete-page .autocomplete-not-found{display:none}.autocomplete-page .autocomplete-values{display:block}.autocomplete-page .list ul:empty{display:none}.autocomplete-preloader:not(.autocomplete-preloader-visible){visibility:hidden}.autocomplete-preloader:not(.autocomplete-preloader-visible),.autocomplete-preloader:not(.autocomplete-preloader-visible) *{animation:none}.autocomplete-dropdown{background:var(--f7-autocomplete-dropdown-bg-color);box-shadow:var(--f7-autocomplete-dropdown-box-shadow);box-sizing:border-box;position:absolute;right:0;width:100%;z-index:500}.autocomplete-dropdown .autocomplete-dropdown-inner{-webkit-overflow-scrolling:touch;height:100%;overflow:auto;position:relative;z-index:1}.autocomplete-dropdown .autocomplete-preloader{bottom:100%;display:none;height:var(--f7-autocomplete-dropdown-preloader-size);position:absolute;width:var(--f7-autocomplete-dropdown-preloader-size)}.autocomplete-dropdown .autocomplete-preloader-visible{display:block}.autocomplete-dropdown .autocomplete-dropdown-placeholder{color:var(--f7-autocomplete-dropdown-placeholder-color)}.autocomplete-dropdown .list{color:var(--f7-autocomplete-dropdown-text-color);font-size:var(--f7-autocomplete-dropdown-font-size);margin:0}.autocomplete-dropdown .list b{color:var(--f7-autocomplete-dropdown-text-matching-color);font-weight:var(--f7-autocomplete-dropdown-text-matching-font-weight)}.autocomplete-dropdown .list ul{background:none!important}.autocomplete-dropdown .list ul:after,.autocomplete-dropdown .list ul:before{display:none!important}.autocomplete-dropdown .autocomplete-dropdown-selected{background:var(--f7-autocomplete-dropdown-selected-bg-color,rgba(var(--f7-theme-color-rgb),.2))}.searchbar-input-wrap .autocomplete-dropdown{background-color:var(--f7-searchbar-input-bg-color,var(--f7-searchbar-bg-color));border-radius:var(--f7-searchbar-input-border-radius);margin-top:calc(var(--f7-searchbar-input-height)*-1);top:100%;z-index:-1}.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-inner{padding-top:var(--f7-searchbar-input-height)}.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-placeholder{color:var(--f7-searchbar-placeholder-color)}.searchbar-input-wrap .autocomplete-dropdown li:last-child{border-radius:0 0 var(--f7-searchbar-input-border-radius) var(--f7-searchbar-input-border-radius);overflow:hidden;position:relative}.searchbar-input-wrap .autocomplete-dropdown .item-content{padding-right:calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px))}.ios .autocomplete-dropdown .autocomplete-preloader{left:16px;margin-bottom:12px}.md .autocomplete-page .navbar .autocomplete-preloader{margin-left:8px}.md .autocomplete-popup .navbar .autocomplete-preloader{margin-left:16px;margin-right:8px}.md .autocomplete-dropdown .autocomplete-preloader{left:16px;margin-bottom:8px}.md .autocomplete-dropdown .autocomplete-preloader circle{stroke-width:3}:root{--f7-tooltip-padding:8px 16px;--f7-tooltip-font-size:14px;--f7-tooltip-font-weight:500;--f7-tooltip-desktop-padding:6px 8px;--f7-tooltip-desktop-font-size:12px}.ios{--f7-tooltip-border-radius:4px;--f7-tooltip-bg-color:rgba(0,0,0,0.87);--f7-tooltip-text-color:#fff}.md{--f7-tooltip-border-radius:8px}.md,.md .dark,.md [class*=color-]{--f7-tooltip-bg-color:var(--f7-md-secondary);--f7-tooltip-text-color:var(--f7-md-on-secondary)}.tooltip{background:var(--f7-tooltip-bg-color);border-radius:var(--f7-tooltip-border-radius);box-sizing:border-box;color:var(--f7-tooltip-text-color);font-size:var(--f7-tooltip-font-size);font-weight:var(--f7-tooltip-font-weight);line-height:1.2;opacity:0;padding:var(--f7-tooltip-padding);position:absolute;transform:scale(.9);transition-duration:.15s;transition-property:opacity,transform;z-index:20000;z-index:99000}.tooltip.tooltip-in{opacity:1;transform:scale(1)}.tooltip.tooltip-out{opacity:0;transform:scale(1)}.device-desktop .tooltip{font-size:var(--f7-tooltip-desktop-font-size);padding:var(--f7-tooltip-desktop-padding)}.gauge{display:inline-block;margin-left:auto;margin-right:auto;position:relative;text-align:center}.gauge svg,.gauge-svg{height:auto;max-width:100%}.gauge svg circle,.gauge svg path,.gauge-svg circle,.gauge-svg path{transition-duration:.4s}.skeleton-block{background:var(--skeleton-color)!important;display:block;height:1em;width:100%}@font-face{font-display:block;font-family:skeleton;font-style:normal,italic;font-weight:100,200,300,400,500,600,700,800,900;src:url("data:application/font-woff;charset=utf-8;base64,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") format("woff")}.skeleton-text{font-family:skeleton!important;-webkit-user-select:none;user-select:none}.skeleton-text,.skeleton-text *{color:var(--skeleton-color)!important;letter-spacing:-.03em!important}.skeleton-image{display:inline-block}.skeleton-image svg{height:auto;max-width:100%}.skeleton-image polygon{fill:var(--skeleton-color)}.skeleton-image path{fill:var(--skeleton-icon-color)}.skeleton-avatar{display:inline-block}.skeleton-avatar svg{height:auto;max-width:100%}.skeleton-avatar rect{fill:var(--skeleton-color)}.skeleton-avatar path{fill:var(--skeleton-icon-color)}.skeleton-effect-blink,.skeleton-effect-wave{animation:skeleton-effect-wave 1s infinite;-webkit-mask-image:linear-gradient(90deg,transparent 0,black 25%,black 75%,transparent);mask-image:linear-gradient(90deg,transparent 0,black 25%,black 75%,transparent);-webkit-mask-position:50% top;mask-position:50% top;-webkit-mask-repeat:repeat;mask-repeat:repeat;-webkit-mask-size:200% 100%;mask-size:200% 100%}.skeleton-effect-fade{animation:skeleton-effect-fade 1s infinite}.skeleton-effect-pulse{animation:skeleton-effect-pulse 1s infinite}@keyframes skeleton-effect-fade{0%{opacity:1}50%{opacity:.2}to{opacity:1}}@keyframes skeleton-effect-wave{0%{-webkit-mask-position:50% top;mask-position:50% top}to{-webkit-mask-position:-150% top;mask-position:-150% top}}@keyframes skeleton-effect-pulse{0%{transform:scale(1)}40%{transform:scale(1)}50%{transform:scale(.975)}to{transform:scale(1)}}:root{--skeleton-color:#ccc;--skeleton-icon-color:rgba(0,0,0,0.25)}.dark{--skeleton-color:#515151;--skeleton-icon-color:rgba(255,255,255,0.25)}:root{--f7-color-picker-popover-width:350px;--f7-color-picker-slider-size:6px;--f7-color-picker-slider-knob-size:16px;--f7-color-picker-bar-size:50px;--f7-color-picker-bar-min-height:260px;--f7-color-picker-value-width:64px;--f7-color-picker-value-height:32px;--f7-color-picker-value-font-size:16px;--f7-color-picker-value-border-radius:4px;--f7-color-picker-hex-value-width:84px;--f7-color-picker-label-font-size:14px;--f7-color-picker-label-width:10px;--f7-color-picker-label-height:14px;--f7-color-picker-sb-spectrum-height:260px;--f7-color-picker-sb-spectrum-handle-size:16px;--f7-color-picker-wheel-width:330px;--f7-color-picker-palette-value-width:36px;--f7-color-picker-palette-value-height:36px;--f7-color-picker-initial-current-color-height:40px;--f7-color-picker-initial-current-color-border-radius:4px;--f7-color-picker-sheet-bg-color:#fff;--f7-color-picker-popup-bg-color:#fff;--f7-color-picker-value-bg-color:rgba(0,0,0,0.05);--f7-color-picker-group-bg-color:rgba(0,0,0,0.05);--f7-color-picker-group-value-bg-color:#fff}:root .dark,:root.dark{--f7-color-picker-sheet-bg-color:#121212;--f7-color-picker-popup-bg-color:#121212;--f7-color-picker-value-bg-color:rgba(255,255,255,0.1);--f7-color-picker-group-bg-color:#000;--f7-color-picker-group-value-bg-color:rgba(255,255,255,0.12)}.color-picker{display:flex;flex-direction:column;overflow:hidden;width:100%}.color-picker-popover .color-picker,.color-picker-popup .color-picker,.color-picker.color-picker-inline{position:relative}.color-picker-sheet-modal{background:var(--f7-color-picker-sheet-bg-color)}.color-picker-sheet-modal:before{z-index:600}.color-picker-sheet-modal .sheet-modal-inner{margin-bottom:var(--f7-safe-area-bottom)}.color-picker-popup .page{background:var(--f7-color-picker-popup-bg-color)}.color-picker-popup .page-content{padding-bottom:var(--f7-safe-area-bottom)}.color-picker-page .color-picker,.color-picker-popover .color-picker,.color-picker-popup .color-picker{height:100%}.color-picker-page .color-picker .toolbar,.color-picker-popover .color-picker .toolbar,.color-picker-popup .color-picker .toolbar{position:absolute}.color-picker-popover{max-height:80vh;max-width:90vw;width:var(--f7-color-picker-popover-width)}.md .color-picker-popover .popover-inner{padding:8px}.color-picker-popover .color-picker{max-height:80vh}.color-picker-popover .toolbar-top{border-top-left-radius:var(--f7-popover-border-radius);border-top-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette{flex-shrink:0;overflow:hidden}.color-picker-popover .color-picker-module-palette:first-child{border-top-left-radius:var(--f7-popover-border-radius);border-top-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette:last-child{border-bottom-left-radius:var(--f7-popover-border-radius);border-bottom-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette:first-child:last-child{border-radius:var(--f7-popover-border-radius)}.color-picker-popover .toolbar~.page-content .color-picker-module-palette:first-child{border-top-left-radius:0;border-top-right-radius:0}.color-picker-page .page-content,.color-picker-popover .page-content,.color-picker-popup .page-content,.color-picker-sheet-modal .page-content{align-items:stretch;display:flex;flex-direction:column;justify-content:flex-start;overflow-x:hidden}.color-picker-module{margin-top:5px}.color-picker-module:last-child{margin-bottom:5px}.color-picker-module-hs-spectrum,.color-picker-module-sb-spectrum{margin-left:10px;margin-right:10px}.color-picker-module-hs-spectrum:first-child,.color-picker-module-sb-spectrum:first-child{margin-top:10px}.color-picker-module-hs-spectrum .color-picker-hs-spectrum,.color-picker-module-hs-spectrum .color-picker-sb-spectrum,.color-picker-module-sb-spectrum .color-picker-hs-spectrum,.color-picker-module-sb-spectrum .color-picker-sb-spectrum{height:var(--f7-color-picker-sb-spectrum-height)}.ios .color-picker-module-hs-spectrum .color-picker-hs-spectrum,.ios .color-picker-module-hs-spectrum .color-picker-sb-spectrum,.ios .color-picker-module-sb-spectrum .color-picker-hs-spectrum,.ios .color-picker-module-sb-spectrum .color-picker-sb-spectrum{border-radius:4px}.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum,.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum,.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum,.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum{border-radius:12px}.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum:after,.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum:after,.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum:after,.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum:after{border-radius:inherit}.color-picker-sb-spectrum{background-color:#000;background-image:linear-gradient(180deg,rgba(0,0,0,0) 0,#000),linear-gradient(270deg,rgba(255,255,255,0) 0,#fff);position:relative}.color-picker-hs-spectrum{background-image:linear-gradient(90deg,hsl(0,100%,50%),hsl(60,100%,50%),hsl(120,100%,50%),hsl(180,100%,50%),hsl(240,100%,50%),hsl(300,100%,50%),hsl(0,100%,50%));position:relative}.color-picker-hs-spectrum:after{background-image:linear-gradient(180deg,rgba(255,255,255,0),#ffffff);content:"";height:100%;left:0;position:absolute;top:0;width:100%}.color-picker-hs-spectrum-handle,.color-picker-sb-spectrum-handle{height:4px;left:-2px;position:absolute;top:-2px;width:4px;z-index:1}.color-picker-hs-spectrum-handle:after,.color-picker-sb-spectrum-handle:after{background-color:inherit;border:1px solid #fff;border-radius:50%;box-shadow:0 0 2px rgba(0,0,0,.5);box-sizing:border-box;content:"";height:var(--f7-color-picker-sb-spectrum-handle-size);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);transform-origin:center;transition:.15s;transition-property:transform;width:var(--f7-color-picker-sb-spectrum-handle-size)}.color-picker-hs-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,.color-picker-hs-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after,.color-picker-sb-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,.color-picker-sb-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after{transform:scale(1.5) translate(-33.333%,-33.333%)}.color-picker-module-wheel{margin-left:10px;margin-right:10px}.color-picker-wheel{font-size:0;height:auto;margin-left:auto;margin-right:auto;max-width:100%;position:relative;width:var(--f7-color-picker-wheel-width)}.color-picker-wheel svg{height:auto;width:100%}.color-picker-wheel .color-picker-wheel-handle{background:red;border:2px solid #fff;border-radius:50%;box-shadow:0 0 5px rgba(0,0,0,.5);box-sizing:border-box;height:16.66666667%;left:0;position:absolute;top:0;width:16.66666667%}.color-picker-wheel .color-picker-sb-spectrum{height:45%;left:50%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0);width:45%}.color-picker-slider-wrap{align-items:center;display:flex;margin-bottom:2px}.color-picker-slider-wrap+.color-picker-slider-wrap{margin-top:5px}.color-picker-hex-wrap{align-items:center;display:flex;justify-content:space-between}.color-picker-hex-label,.color-picker-slider-label{flex-shrink:0;font-size:var(--f7-color-picker-label-font-size);margin-left:12px;width:var(--f7-color-picker-label-size)}.color-picker-hex-label{width:auto}.color-picker-bar-value,.color-picker-hex-value,.color-picker-slider-value{align-items:center;background:var(--f7-color-picker-value-bg-color);border-radius:var(--f7-color-picker-value-border-radius);display:flex;flex-shrink:0;font-size:var(--f7-color-picker-value-font-size);height:var(--f7-color-picker-value-height);justify-content:center;margin-right:10px;text-align:center;width:var(--f7-color-picker-value-width)}.color-picker-bar-value input,.color-picker-hex-value input,.color-picker-slider-value input{-webkit-appearance:none;appearance:none;background:transparent;border:none;border-radius:4px;color:inherit;display:block;font-family:inherit;font-size:inherit;height:100%;outline:0;text-align:center;width:100%}.color-picker-bar-value input::-webkit-inner-spin-button,.color-picker-bar-value input::-webkit-outer-spin-button,.color-picker-hex-value input::-webkit-inner-spin-button,.color-picker-hex-value input::-webkit-outer-spin-button,.color-picker-slider-value input::-webkit-inner-spin-button,.color-picker-slider-value input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;display:none;margin:0}.color-picker-hex-value{width:var(--f7-color-picker-hex-value-width)}.color-picker-hex-value:first-child{margin-right:auto}.color-picker-slider{--f7-range-bar-active-bg-color:transparent;--f7-range-bar-size:var(--f7-color-picker-slider-size);--f7-range-bar-border-radius:var(--f7-color-picker-slider-size);--f7-range-knob-size:var(--f7-color-picker-slider-knob-size);--f7-range-knob-box-shadow:0 1px 2px rgba(0,0,0,0.3)}.color-picker-slider .range-knob{transition-duration:.2s;transition-property:transform}.color-picker-slider .range-knob:after{height:30px;margin-left:-16px;margin-top:-16px;width:30px}.color-picker-slider .range-knob-active-state .range-knob{transform:scale(1.5)}.md .color-picker-slider.range-slider-min:not(.range-slider-dual) .range-knob{background:var(--f7-range-knob-color)!important;border:none}.color-picker-module-rgb-bars{align-items:stretch;box-sizing:border-box;display:flex;height:100%;justify-content:space-around;justify-content:space-evenly;min-height:var(--f7-color-picker-bar-min-height);padding-bottom:10px;padding-top:10px}.color-picker-bar-wrap{align-items:center;display:flex;flex-direction:column-reverse}.color-picker-bar{--f7-range-bar-active-bg-color:transparent;--f7-range-bar-size:var(--f7-color-picker-bar-size);--f7-range-bar-border-radius:2px;--f7-range-knob-size:6px;--f7-range-knob-box-shadow:0 0px 3px rgba(0,0,0,0.3);--f7-range-knob-color:#fff}.color-picker-bar .range-knob{border-radius:3px;transition-duration:0ms;transition-property:transform}.color-picker-bar .range-knob-wrap{height:6px;margin-left:calc((var(--f7-color-picker-bar-size) - 4px)*-.5);width:calc(var(--f7-color-picker-bar-size) - 4px)}.color-picker-bar .range-knob-active-state .range-knob{transform:scale(1)}.md .color-picker-bar.range-slider-min:not(.range-slider-dual) .range-knob{background:var(--f7-range-knob-color)!important;border:none}.color-picker-bar-label{flex-shrink:0;font-size:var(--f7-color-picker-label-size);height:var(--f7-color-picker-label-height);line-height:1;margin-top:12px}.color-picker-bar-value{margin-bottom:10px;margin-left:0}.color-picker-slider-alpha{--f7-range-knob-color:#fff}.color-picker-slider-alpha .range-bar{background-image:linear-gradient(270deg,rgba(0,0,0,0),#000),linear-gradient(90deg,rgba(255,255,255,.2) 50%,rgba(0,0,0,.2) 0),linear-gradient(270deg,rgba(255,255,255,.2) 50%,rgba(0,0,0,.2) 0);background-position:0 0,0 3px,0 0;background-repeat:repeat-y,repeat-x,repeat-x;background-size:100% 100%,6px 3px,6px 3px}.color-picker-slider-hue .range-bar{background-image:linear-gradient(270deg,hsl(0,100%,50%),hsl(60,100%,50%),hsl(120,100%,50%),hsl(180,100%,50%),hsl(240,100%,50%),hsl(300,100%,50%),hsl(0,100%,50%))}.color-picker-slider-brightness .range-bar{background-image:linear-gradient(270deg,#000,#fff)}.color-picker-module-palette{margin-top:16px}.color-picker-module-palette:first-child{margin-top:0}.color-picker-module-palette:last-child{margin-bottom:0}.color-picker-module-palette:first-child:last-child{margin:0}.color-picker-palette{display:flex;flex-wrap:wrap}.color-picker-palette-row{display:flex;flex-wrap:nowrap;width:100%}.color-picker-palette-row .color-picker-palette-value{width:100%}.color-picker-palette-value{cursor:pointer;height:var(--f7-color-picker-palette-value-height);width:var(--f7-color-picker-palette-value-width)}.color-picker-module-current-color,.color-picker-module-initial-current-colors{border-radius:var(--f7-color-picker-initial-current-color-border-radius);flex-shrink:0;margin-left:10px;margin-right:10px;overflow:hidden}.color-picker-current-color,.color-picker-initial-color{height:var(--f7-color-picker-initial-current-color-height)}.color-picker-initial-current-colors{display:flex}.color-picker-initial-current-colors .color-picker-current-color,.color-picker-initial-current-colors .color-picker-initial-color{width:50%}.color-picker-module-alpha-slider,.color-picker-module-brightness-slider,.color-picker-module-hex,.color-picker-module-hsb-sliders,.color-picker-module-hue-slider,.color-picker-module-rgb-sliders{margin-left:10px;margin-right:10px}.color-picker-grouped-modules .color-picker-module-alpha-slider,.color-picker-grouped-modules .color-picker-module-brightness-slider,.color-picker-grouped-modules .color-picker-module-hex,.color-picker-grouped-modules .color-picker-module-hsb-sliders,.color-picker-grouped-modules .color-picker-module-hue-slider,.color-picker-grouped-modules .color-picker-module-rgb-sliders{background:var(--f7-color-picker-group-bg-color);border-radius:8px;margin-left:8px;margin-right:8px;margin-top:16px;padding:8px}.color-picker-grouped-modules .color-picker-module-alpha-slider:last-child,.color-picker-grouped-modules .color-picker-module-brightness-slider:last-child,.color-picker-grouped-modules .color-picker-module-hex:last-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders:last-child,.color-picker-grouped-modules .color-picker-module-hue-slider:last-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders:last-child{margin-bottom:16px}.color-picker-grouped-modules .color-picker-hex-value,.color-picker-grouped-modules .color-picker-slider-value{background:var(--f7-color-picker-group-value-bg-color)}.color-picker-grouped-modules .color-picker-hex-label,.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:first-child,.color-picker-grouped-modules .color-picker-slider-label{margin-right:5px}.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:last-child{margin-left:5px}:root{--f7-treeview-item-height:34px;--f7-treeview-item-padding-left:16px;--f7-treeview-item-padding-right:16px;--f7-treeview-toggle-size:24px;--f7-treeview-children-offset:29px;--f7-treeview-label-font-weight:400;--f7-treeview-label-text-color:inherit;--f7-treeview-icon-size:24px;--f7-treeview-toggle-color:rgba(0,0,0,0.5);--f7-treeview-toggle-hover-bg-color:rgba(0,0,0,0.1);--f7-treeview-toggle-pressed-bg-color:rgba(0,0,0,0.15);--f7-treeview-icon-color:rgba(0,0,0,0.5);--f7-treeview-selectable-hover-bg-color:rgba(0,0,0,0.1);--f7-treeview-link-hover-bg-color:rgba(0,0,0,0.1);--f7-treeview-link-pressed-bg-color:rgba(0,0,0,0.15)}:root .dark,:root.dark{--f7-treeview-toggle-color:rgba(255,255,255,0.5);--f7-treeview-toggle-hover-bg-color:rgba(255,255,255,0.03);--f7-treeview-toggle-pressed-bg-color:rgba(255,255,255,0.1);--f7-treeview-icon-color:rgba(255,255,255,0.75);--f7-treeview-selectable-hover-bg-color:rgba(255,255,255,0.03);--f7-treeview-link-hover-bg-color:rgba(255,255,255,0.03);--f7-treeview-link-pressed-bg-color:rgba(255,255,255,0.11)}.ios{--f7-treeview-label-font-size:17px}.md{--f7-treeview-label-font-size:16px}.treeview-item-root{min-height:var(--f7-treeview-item-height);padding-left:var(--f7-treeview-item-padding-right);padding-right:var(--f7-treeview-item-padding-left)}.treeview-item-content,.treeview-item-root{align-items:center;display:flex;justify-content:flex-start}.treeview-item-content>.f7-icons,.treeview-item-content>.material-icons,.treeview-item-content>i{color:var(--f7-treeview-icon-color);font-size:var(--f7-treeview-icon-size)}.treeview-item-content:first-child{margin-right:calc(var(--f7-treeview-toggle-size) + 5px)}.treeview-item-content>*+*{margin-right:5px}.treeview-item-label{color:var(--f7-treeview-label-text-color);font-size:var(--f7-treeview-label-font-size);font-weight:var(--f7-treeview-label-font-weight)}.treeview-toggle{background-color:rgba(0,0,0,0);border-radius:4px;cursor:pointer;height:var(--f7-treeview-toggle-size);margin-left:5px;position:relative;transition-duration:.2s;width:var(--f7-treeview-toggle-size)}.treeview-toggle.active-state{background-color:var(--f7-treeview-toggle-pressed-bg-color)}.treeview-toggle:after{border-bottom:5px solid transparent;border-right:6px solid var(--f7-treeview-toggle-color);border-top:5px solid transparent;content:"";height:0;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);transition-duration:.2s;width:0}.treeview-toggle-hidden{opacity:0;pointer-events:none;visibility:hidden}.treeview-preloader{--f7-preloader-size:var(--f7-treeview-toggle-size);margin-left:calc(var(--f7-treeview-toggle-size)*-1)}.treeview-item-children{display:none}.treeview-item-opened>.treeview-item-children{display:block}.treeview-item-opened>.treeview-item-root .treeview-toggle:after{transform:translate(-50%,-50%) rotate(-90deg)}a.treeview-item-root{color:var(--f7-treeview-label-text-color)}.treeview-item-selectable.treeview-item-root,.treeview-item-selectable>.treeview-item-root{cursor:pointer;transition-duration:.15s}a.treeview-item-root{transition-duration:.15s}a.treeview-item-root.active-state{background:var(--f7-treeview-link-pressed-bg-color)}.treeview-item-toggle.treeview-item-root,.treeview-item-toggle>.treeview-item-root{cursor:pointer}.treeview-item-selected.treeview-item-root,.treeview-item-selected>.treeview-item-root{background:var(--f7-treeview-selectable-selected-bg-color,rgba(var(--f7-theme-color-rgb),.2))}.treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*1)}.treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*2)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*3)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*4)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*5)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*6)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*7)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*8)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*9)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*10)}:root{--f7-text-editor-font-size:inherit;--f7-text-editor-font-weight:inherit;--f7-text-editor-border-width:1px;--f7-text-editor-height:250px;--f7-text-editor-margin:16px;--f7-text-editor-padding:8px;--f7-text-editor-button-bg-color:transparent;--f7-text-editor-button-size:28px;--f7-text-editor-button-icon-size:20px;--f7-text-editor-button-margin:2px;--f7-text-editor-text-color:#000;--f7-text-editor-bg-color:#fff;--f7-text-editor-button-divider-color:rgba(0,0,0,0.15)}:root .dark,:root.dark{--f7-text-editor-bg-color:#121212;--f7-text-editor-text-color:#fff;--f7-text-editor-button-divider-color:rgba(255,255,255,0.15)}.ios{--f7-text-editor-toolbar-padding:6px;--f7-text-editor-button-border-radius:2px;--f7-text-editor-placeholder-color:rgba(0,0,0,0.35);--f7-text-editor-toolbar-border-color:rgba(0,0,0,0.25);--f7-text-editor-toolbar-bg-color:#fff;--f7-text-editor-border-color:rgba(0,0,0,0.1);--f7-text-editor-button-text-color:#333}.ios .dark,.ios.dark{--f7-text-editor-placeholder-color:rgba(255,255,255,0.35);--f7-text-editor-toolbar-bg-color:#121212;--f7-text-editor-toolbar-border-color:rgba(255,255,255,0.1);--f7-text-editor-toolbar-bg-color:#202020;--f7-text-editor-border-color:rgba(255,255,255,0.1);--f7-text-editor-button-text-color:#fff}.md{--f7-text-editor-button-border-radius:8px;--f7-text-editor-toolbar-padding:8px}.md,.md .dark,.md [class*=color-]{--f7-text-editor-placeholder-color:var(--f7-md-on-surface-variant);--f7-text-editor-toolbar-bg-color:var(--f7-md-surface-1);--f7-text-editor-border-color:var(--f7-md-outline);--f7-text-editor-button-text-color:var(--f7-md-on-surface)}.text-editor{align-items:stretch;background-color:var(--f7-text-editor-bg-color);border:var(--f7-text-editor-border-width) solid var(--f7-text-editor-border-color);box-sizing:border-box;display:block;display:flex;flex-direction:column;height:var(--f7-text-editor-height);margin:var(--f7-text-editor-margin);position:relative}.text-editor.text-editor-resizable{height:auto}.text-editor-toolbar{background:var(--f7-text-editor-toolbar-bg-color);box-sizing:border-box;display:flex;flex-shrink:0;flex-wrap:wrap;left:0;padding:var(--f7-text-editor-toolbar-padding);position:relative;position:sticky;top:0;z-index:100}.text-editor-toolbar:after{background-color:var(--f7-text-editor-toolbar-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}button.text-editor-button{align-items:center;-webkit-appearance:none;appearance:none;background:transparent;background-color:var(--f7-text-editor-button-bg-color);border:none;border-radius:var(--f7-text-editor-button-border-radius);box-shadow:none;box-sizing:border-box;color:var(--f7-text-editor-button-text-color);cursor:pointer;display:flex;flex-shrink:0;font-family:inherit;height:var(--f7-text-editor-button-size);justify-content:center;margin:0;margin:var(--f7-text-editor-button-margin);outline:0;overflow:hidden;padding:0;position:relative;width:auto;width:var(--f7-text-editor-button-size);z-index:1}button.text-editor-button .f7-icons,button.text-editor-button .material-icons,button.text-editor-button i{font-size:var(--f7-text-editor-button-icon-size);font-style:normal}button.text-editor-button .f7-icons sub,button.text-editor-button .f7-icons sup,button.text-editor-button .material-icons sub,button.text-editor-button .material-icons sup,button.text-editor-button i sub,button.text-editor-button i sup{font-size:60%}.text-editor-button-divider{background:var(--f7-text-editor-button-divider-color);flex-shrink:0;margin:0 2px;width:1px}.text-editor-content{-webkit-user-modify:read-write;-webkit-appearance:none;appearance:none;border:none;box-sizing:border-box;color:var(--f7-text-editor-text-color);flex-shrink:10;font-size:var(--f7-text-editor-font-size);font-weight:var(--f7-text-editor-font-weight);height:100%;outline:0;overflow:auto;padding:var(--f7-text-editor-padding);-webkit-user-select:text;user-select:text}.text-editor-content .text-editor-placeholder{color:var(--f7-text-editor-placeholder-color);pointer-events:none}.text-editor-content img{max-width:100%}.text-editor-content a{pointer-events:none}.text-editor-popover{max-width:80vw;width:auto;z-index:12500}.text-editor-popover .popover-inner{display:flex;flex-wrap:wrap;padding:3px}.text-editor-keyboard-toolbar{--f7-safe-area-bottom:0px;position:absolute;z-index:6000}.text-editor-keyboard-toolbar .toolbar-inner{-webkit-overflow-scrolling:touch;justify-content:flex-start!important;overflow:auto;scrollbar-color:transparent;scrollbar-width:none}.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-track{background:transparent;box-shadow:none}.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.text-editor-keyboard-toolbar .toolbar-inner .text-editor-button-divider{height:100%}.item-input .text-editor{background-color:var(--f7-input-bg-color,transparent);border:none;margin:0}.item-input .text-editor-content{color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);padding:var(--f7-textarea-padding-vertical) var(--f7-input-padding-right) var(--f7-textarea-padding-vertical) var(--f7-input-padding-left)}.item-input .text-editor-toolbar{box-shadow:none}.item-input .text-editor-toolbar:after{display:none!important}.item-input-outline .text-editor-content{border-radius:var(--f7-input-outline-border-radius)}.ios button.text-editor-button{transition:opacity .3s}.ios button.text-editor-button.active-state{opacity:.3;transition-duration:0ms}.md button.text-editor-button{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25)}.md .text-editor-keyboard-toolbar .toolbar-inner{padding-left:8px;padding-right:8px}.pie-chart{position:relative}.pie-chart svg{display:block;font-size:0;height:auto;margin:0 auto;width:100%}.pie-chart path{transition-duration:.15s}.pie-chart-hidden{opacity:.4}.pie-chart-tooltip{font-size:12px;line-height:1.4;max-width:none;pointer-events:none;text-align:left;white-space:nowrap;width:auto}.pie-chart-tooltip-label{align-items:center;display:flex}.pie-chart-tooltip-color{border-radius:50%;display:inline-block;height:10px;margin-right:4px;width:10px}:root{--f7-area-chart-current-line-stroke-width:2px;--f7-area-chart-current-line-stroke:rgba(0,0,0,0.15);--f7-area-chart-axis-text-color:inherit;--f7-area-chart-axis-height:1px;--f7-area-chart-axis-font-size:10px;--f7-area-chart-axis-font-weight:500;--f7-area-chart-tooltip-font-size:12px;--f7-area-chart-tooltip-total-font-size:16px;--f7-area-chart-tooltip-total-font-weight:bold;--f7-area-chart-tooltip-color-size:10px;--f7-area-chart-legend-font-size:14px;--f7-area-chart-legend-font-weight:500;--f7-area-chart-legend-text-color:inherit;--f7-area-chart-legend-padding:4px 8px;--f7-area-chart-legend-border-radius:4px;--f7-area-chart-legend-color-size:14px;--f7-area-chart-line-stroke-width:2px;--f7-area-chart-axis-bg-color:rgba(0,0,0,0.15);--f7-area-chart-legend-disabled-text-color:rgba(0,0,0,0.22)}:root .dark,:root.dark{--f7-area-chart-axis-bg-color:rgba(255,255,255,0.15);--f7-area-chart-legend-disabled-text-color:rgba(255,255,255,0.22)}.ios{--f7-area-chart-tooltip-total-label-text-color:rgba(255,255,255,0.75)}.md{--f7-area-chart-tooltip-total-label-text-color:inherit}.area-chart{position:relative}.area-chart svg{display:block;font-size:0;height:auto;margin:0 auto;width:100%}.area-chart path{fill:none;stroke-width:var(--f7-area-chart-line-stroke-width)}.area-chart-current-line{stroke:var(--f7-area-chart-current-line-stroke);stroke-width:var(--f7-area-chart-current-line-stroke-width)}.area-chart-axis{background:var(--f7-area-chart-axis-bg-color);color:var(--f7-area-chart-axis-text-color);display:flex;font-size:var(--f7-area-chart-axis-font-size);font-weight:var(--f7-area-chart-axis-font-weight);height:var(--f7-area-chart-axis-height);justify-content:space-between;line-height:1;margin-bottom:2em}.area-chart-axis>span{align-items:flex-start;display:flex;justify-content:center;padding-top:10px;white-space:nowrap;width:0}.area-chart-axis>span:first-child{justify-content:flex-start}.area-chart-axis>span:last-child{justify-content:flex-end}.area-chart-tooltip{font-size:var(--f7-area-chart-tooltip-font-size);line-height:1.4;pointer-events:none;text-align:left}.area-chart-tooltip-label{color:var(--f7-area-chart-tooltip-total-label-text-color)}.area-chart-tooltip-total{font-size:var(--f7-area-chart-tooltip-total-font-size);font-weight:var(--f7-area-chart-tooltip-total-font-weight)}.area-chart-tooltip-list{list-style:none;margin:0;padding:0}.area-chart-tooltip-list li{white-space:nowrap}.area-chart-tooltip-list span{border-radius:50%;display:inline-block;height:var(--f7-area-chart-tooltip-color-size);margin-right:4px;width:var(--f7-area-chart-tooltip-color-size)}.area-chart-axis~.area-chart-legend{margin-top:2em}.area-chart-legend{align-items:center;display:flex;flex-wrap:wrap;font-size:var(--f7-area-chart-legend-font-size);justify-content:center;margin-top:1em;width:100%}.area-chart-legend-button{-webkit-appearance:none!important;appearance:none!important;background-color:initial;border:none;border-radius:0;box-shadow:none!important;cursor:pointer;font-family:inherit;font-size:inherit;outline:0!important}.area-chart-legend-item{align-items:center;border-radius:var(--f7-area-chart-legend-border-radius);color:var(--f7-area-chart-legend-text-color);display:flex;font-weight:var(--f7-area-chart-legend-font-weight);overflow:hidden;padding:var(--f7-area-chart-legend-padding);position:relative;transition-duration:.2s;width:auto}.area-chart-legend-item span{border-radius:50%;height:var(--f7-area-chart-legend-color-size);margin-right:4px;transition-duration:.2s;width:var(--f7-area-chart-legend-color-size)}.area-chart-legend-item-hidden{color:var(--f7-area-chart-legend-disabled-text-color)}.area-chart-legend-item-hidden span{background-color:var(--f7-area-chart-legend-disabled-text-color)!important}:root{--f7-breadcrumbs-spacing:12px;--f7-breadcrumbs-padding:2px 0;--f7-breadcrumbs-icon-size:24px;--f7-breadcrumbs-separator-color:rgba(0,0,0,0.35)}:root .dark,:root.dark{--f7-breadcrumbs-separator-color:rgba(255,255,255,0.35)}.ios{--f7-breadcrumbs-item-bg-color:transparent;--f7-breadcrumbs-collapsed-border-radius:4px;--f7-breadcrumbs-collapsed-padding:0px 6px;--f7-breadcrumbs-separator-icon:"chevron_right_ios";--f7-breadcrumbs-font-size:17px;--f7-breadcrumbs-item-border-radius:0px;--f7-breadcrumbs-item-padding:0px;--f7-breadcrumbs-item-font-weight:normal;--f7-breadcrumbs-item-active-font-weight:600;--f7-breadcrumbs-item-color:rgba(0,0,0,0.55);--f7-breadcrumbs-item-active-color:#000;--f7-breadcrumbs-collapsed-bg-color:rgba(0,0,0,0.15);--f7-breadcrumbs-collapsed-color:rgba(0,0,0,0.75)}.ios .dark,.ios.dark{--f7-breadcrumbs-item-color:rgba(255,255,255,0.75);--f7-breadcrumbs-item-active-color:#fff;--f7-breadcrumbs-collapsed-bg-color:rgba(255,255,255,0.15);--f7-breadcrumbs-collapsed-color:rgba(255,255,255,0.75)}.md{--f7-breadcrumbs-collapsed-border-radius:8px;--f7-breadcrumbs-collapsed-padding:12px 8px;--f7-breadcrumbs-separator-icon:"chevron_right_md";--f7-breadcrumbs-font-size:14px;--f7-breadcrumbs-item-border-radius:8px;--f7-breadcrumbs-item-padding:4px 8px;--f7-breadcrumbs-item-font-weight:500;--f7-breadcrumbs-item-active-font-weight:500}.md,.md .dark,.md [class*=color-]{--f7-breadcrumbs-item-color:var(--f7-theme-color);--f7-breadcrumbs-item-bg-color:var(--f7-md-secondary-container);--f7-breadcrumbs-item-active-color:var(--f7-md-on-secondary-container);--f7-breadcrumbs-collapsed-color:var(--f7-theme-color);--f7-breadcrumbs-collapsed-bg-color:var(--f7-md-secondary-container)}.breadcrumbs{align-items:center;display:flex;font-size:var(--f7-breadcrumbs-font-size);justify-content:flex-start;overflow:auto;padding:var(--f7-breadcrumbs-padding);scrollbar-color:transparent;scrollbar-width:none;white-space:nowrap}.breadcrumbs::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.breadcrumbs::-webkit-scrollbar-track{background:transparent;box-shadow:none}.breadcrumbs::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.breadcrumbs-collapsed,.breadcrumbs-item,.breadcrumbs-separator{--f7-touch-ripple-color:transparent!important;flex-shrink:0}.breadcrumbs-collapsed+.breadcrumbs-collapsed,.breadcrumbs-collapsed+.breadcrumbs-item,.breadcrumbs-collapsed+.breadcrumbs-separator,.breadcrumbs-item+.breadcrumbs-collapsed,.breadcrumbs-item+.breadcrumbs-item,.breadcrumbs-item+.breadcrumbs-separator,.breadcrumbs-separator+.breadcrumbs-collapsed,.breadcrumbs-separator+.breadcrumbs-item,.breadcrumbs-separator+.breadcrumbs-separator{margin-left:var(--f7-breadcrumbs-spacing)}.breadcrumbs-item{align-items:center;background-color:var(--f7-breadcrumbs-item-bg-color);border-radius:var(--f7-breadcrumbs-item-border-radius);color:var(--f7-breadcrumbs-item-color);display:flex;font-weight:var(--f7-breadcrumbs-item-font-weight);padding:var(--f7-breadcrumbs-item-padding)}.breadcrumbs-item .icon{font-size:var(--f7-breadcrumbs-icon-size);height:var(--f7-breadcrumbs-icon-size);width:var(--f7-breadcrumbs-icon-size)}.breadcrumbs-item a{--f7-touch-ripple-color:transparent!important;color:inherit}.breadcrumbs-item-active{color:var(--f7-breadcrumbs-item-active-color,var(--f7-breadcrumbs-item-color));font-weight:var(--f7-breadcrumbs-item-active-font-weight)}.breadcrumbs-separator{align-items:center;color:var(--f7-breadcrumbs-separator-color);display:flex;height:24px;overflow:hidden}.breadcrumbs-separator:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";content:var(--f7-breadcrumbs-separator-icon);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%;width:12px}.ios .breadcrumbs-separator:after{font-size:12px;height:11px}.md .breadcrumbs-separator:after{font-size:18px;height:18px}.breadcrumbs-collapsed{align-items:center;background:var(--f7-breadcrumbs-collapsed-bg-color);border-radius:var(--f7-breadcrumbs-collapsed-border-radius);cursor:pointer;display:flex;min-height:1em;padding:var(--f7-breadcrumbs-collapsed-padding)}.breadcrumbs-collapsed span,.breadcrumbs-collapsed:after,.breadcrumbs-collapsed:before{background:var(--f7-breadcrumbs-collapsed-color);border-radius:50%;content:"";height:4px;width:4px}.breadcrumbs-collapsed span{margin:0 3px}:root{--f7-typography-padding:16px;--f7-typography-margin:16px}.display-flex{display:flex!important}.display-block{display:block!important}.display-inline-flex{display:inline-flex!important}.display-inline-block{display:inline-block!important}.display-inline{display:inline!important}.display-none{display:none!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-shrink-2{flex-shrink:2!important}.flex-shrink-3{flex-shrink:3!important}.flex-shrink-4{flex-shrink:4!important}.flex-shrink-5{flex-shrink:5!important}.flex-shrink-6{flex-shrink:6!important}.flex-shrink-7{flex-shrink:7!important}.flex-shrink-8{flex-shrink:8!important}.flex-shrink-9{flex-shrink:9!important}.flex-shrink-10{flex-shrink:10!important}.flex-direction-row{flex-direction:row!important}.flex-direction-row-reverse{flex-direction:row-reverse!important}.flex-direction-column{flex-direction:column!important}.flex-direction-column-reverse{flex-direction:column-reverse!important}.justify-content-flex-start{justify-content:flex-start!important}.justify-content-center{justify-content:center!important}.justify-content-flex-end{justify-content:flex-end!important}.justify-content-space-between{justify-content:space-between!important}.justify-content-space-around{justify-content:space-around!important}.justify-content-space-evenly{justify-content:space-evenly!important}.justify-content-stretch{justify-content:stretch!important}.justify-content-start{justify-content:start!important}.justify-content-end{justify-content:end!important}.justify-content-left{justify-content:left!important}.justify-content-right{justify-content:right!important}.align-content-flex-start{align-content:flex-start!important}.align-content-flex-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-space-between{align-content:space-between!important}.align-content-space-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-items-baseline{align-items:baseline!important}.align-items-flex-start{align-items:flex-start!important}.align-items-flex-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-stretch{align-items:stretch!important}.align-self-flex-start{align-self:flex-start!important}.align-self-flex-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-stretch{align-self:stretch!important}.text-align-left{text-align:left!important}.text-align-center{text-align:center!important}.text-align-right{text-align:right!important}.text-align-justify{text-align:justify!important}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}.vertical-align-bottom{vertical-align:bottom!important}.vertical-align-middle{vertical-align:middle!important}.vertical-align-top{vertical-align:top!important}.no-padding{padding:0!important}.no-padding-left{padding-left:0!important}.no-padding-horizontal,.no-padding-right{padding-right:0!important}.no-padding-horizontal{padding-left:0!important}.no-padding-top{padding-top:0!important}.no-padding-bottom,.no-padding-vertical{padding-bottom:0!important}.no-padding-vertical{padding-top:0!important}.no-margin{margin:0!important}.no-margin-left{margin-left:0!important}.no-margin-horizontal,.no-margin-right{margin-right:0!important}.no-margin-horizontal{margin-left:0!important}.no-margin-top{margin-top:0!important}.no-margin-bottom,.no-margin-vertical{margin-bottom:0!important}.no-margin-vertical{margin-top:0!important}.width-auto{width:auto!important}.width-100{width:100%!important}.padding{padding:var(--f7-typography-padding)!important}.padding-half{padding:calc(var(--f7-typography-padding)/2)!important}.padding-top{padding-top:var(--f7-typography-padding)!important}.padding-top-half{padding-top:calc(var(--f7-typography-padding)/2)!important}.padding-bottom{padding-bottom:var(--f7-typography-padding)!important}.padding-bottom-half{padding-bottom:calc(var(--f7-typography-padding)/2)!important}.padding-left{padding-left:var(--f7-typography-padding)!important}.padding-left-half{padding-left:calc(var(--f7-typography-padding)/2)!important}.padding-right{padding-right:var(--f7-typography-padding)!important}.padding-right-half{padding-right:calc(var(--f7-typography-padding)/2)!important}.padding-vertical{padding-bottom:var(--f7-typography-padding)!important;padding-top:var(--f7-typography-padding)!important}.padding-vertical-half{padding-bottom:calc(var(--f7-typography-padding)/2)!important;padding-top:calc(var(--f7-typography-padding)/2)!important}.padding-horizontal{padding-left:var(--f7-typography-padding)!important;padding-right:var(--f7-typography-padding)!important}.padding-horizontal-half{padding-left:calc(var(--f7-typography-padding)/2)!important;padding-right:calc(var(--f7-typography-padding)/2)!important}.margin{margin:var(--f7-typography-margin)!important}.margin-half{margin:calc(var(--f7-typography-margin)/2)!important}.margin-top{margin-top:var(--f7-typography-margin)!important}.margin-top-half{margin-top:calc(var(--f7-typography-margin)/2)!important}.margin-bottom{margin-bottom:var(--f7-typography-margin)!important}.margin-bottom-half{margin-bottom:calc(var(--f7-typography-margin)/2)!important}.margin-left{margin-left:var(--f7-typography-margin)!important}.margin-left-half{margin-left:calc(var(--f7-typography-margin)/2)!important}.margin-right{margin-right:var(--f7-typography-margin)!important}.margin-right-half{margin-right:calc(var(--f7-typography-margin)/2)!important}.margin-vertical{margin-bottom:var(--f7-typography-margin)!important;margin-top:var(--f7-typography-margin)!important}.margin-vertical-half{margin-bottom:calc(var(--f7-typography-margin)/2)!important;margin-top:calc(var(--f7-typography-margin)/2)!important}.margin-horizontal{margin-left:var(--f7-typography-margin)!important;margin-right:var(--f7-typography-margin)!important}.margin-horizontal-half{margin-left:calc(var(--f7-typography-margin)/2)!important;margin-right:calc(var(--f7-typography-margin)/2)!important}[class*=text-color-]{color:var(--f7-theme-color-text-color)!important}[class*=bg-color-]{background-color:var(--f7-theme-color-bg-color)!important}[class*=border-color-]{border-color:var(--f7-theme-color-border-color)!important} +/*# sourceMappingURL=../../presentationeditor/mobile/css/framework7-rtl.css.map */ +/*# sourceMappingURL=framework7-rtl.css.map*/ \ No newline at end of file diff --git a/apps/presentationeditor/mobile/css/framework7-rtl.css.map b/apps/presentationeditor/mobile/css/framework7-rtl.css.map new file mode 100644 index 0000000000..c0f1ce36bd --- /dev/null +++ b/apps/presentationeditor/mobile/css/framework7-rtl.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://documenteditor/../../presentationeditor/mobile/css/framework7-rtl.css"],"names":[],"mappings":"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N,iBAAkB,CAClB,SAGF,CACA,qGAGE,sDACF,CACA,mIAGE,gEACF,CACA,gKAIE,mBACF,CACA,oBASE,uGAAiI,CADjI,SAAU,CALV,UAAW,CAEX,UAKF,CACA,yCAPE,QAAS,CAET,UAAW,CACX,SAAU,CANV,iBAAkB,CAClB,KAmBF,CAVA,qBAIE,yBAA8B,CAF9B,MAAO,CAGP,UAAW,CAIX,aACF,CACA,oBACE,8BACF,CACA,gBACE,gCACF,CAOA,0GACE,SACF,CACA,2CACE,8EACF,CACA,kDAUE,8EAA+E,CAD/E,uGAAiI,CALjI,QAAS,CAET,UAAW,CAEX,SAAU,CADV,SAAU,CANV,iBAAkB,CAClB,KAAM,CACN,UAAW,CAEX,UAMF,CACA,8CACE,kFACF,CACA,oDAUE,8EAA+E,CAN/E,yBAA8B,CAE9B,QAAS,CACT,UAAW,CALX,MAAO,CAMP,SAAU,CAPV,iBAAkB,CAElB,KAAM,CAEN,UAAW,CAIX,aAEF,CACA,gDACE,kFACF,CACA,sDAUE,+EAAgF,CANhF,yBAA8B,CAE9B,QAAS,CACT,UAAW,CALX,MAAO,CAMP,SAAU,CAPV,iBAAkB,CAElB,KAAM,CAEN,UAAW,CAIX,aAEF,CACA,+CACE,8EACF,CACA,sDAUE,+EAAgF,CADhF,uGAAiI,CALjI,QAAS,CAET,UAAW,CAEX,SAAU,CADV,SAAU,CANV,iBAAkB,CAClB,KAAM,CACN,UAAW,CAEX,UAMF,CACA,oCACE,GACE,gCACF,CACA,GACE,uBACF,CACF,CACA,wCACE,GACE,8BACF,CACA,GACE,uBACF,CACF,CACA,wCACE,GACE,uBACF,CACA,GACE,8BACF,CACF,CACA,oCACE,GACE,uBACF,CACA,GACE,gCACF,CACF,CACA,oCACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,qCACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,mBACE,gCACF,CACA,eAGE,SAAU,CAFV,mBAAoB,CACpB,gCAEF,CACA,kCAEE,SAAU,CADV,gCAEF,CACA,0CAEE,qGAA2G,CAD3G,SAEF,CACA,6CACE,yGACF,CACA,8CACE,qMACF,CACA,+CACE,iFACF,CACA,mCACE,GACE,gCACF,CACA,GACE,uBACF,CACF,CACA,mCACE,GACE,uBACF,CACA,GACE,gCACF,CACF,CACA,2CACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,uCACE,GACE,uBACF,CACA,GACE,gCACF,CACF,CACA,uCACE,GACE,gCACF,CACA,GACE,uBACF,CACF,CAIA,0GACE,YACF,CACA,oEAKE,uBAAwB,CACxB,6BAA8B,CAC9B,uFAAwF,CAJxF,SAAU,CACV,OAAQ,CAFR,iCAMF,CACA,kFAGE,wBAAyB,CACzB,8BAA+B,CAC/B,iCAAkC,CAHlC,8CAIF,CACA,8DACE,MAAO,CACP,OAAQ,CACR,UACF,CACA,iCAGE,mBAAoB,CADpB,cAAe,CADf,SAGF,CACA,+EAEE,YACF,CACA,mDACE,cACF,CACA,8KAIE,SAAU,CACV,cACF,CACA,6HAEE,cACF,CACA,YAcE,qBAAsB,CATtB,qCAAsC,CAEtC,wCAAyC,CACzC,4CAA6C,CAF7C,kDAAmD,CAGnD,4CAA6C,CAM7C,eAAgB,CAFhB,2NAAqD,CAZrD,iBAAkB,CAElB,sBAAuB,CACvB,kBAAmB,CAYnB,UAAW,CAdX,UAeF,CACA,uFAUE,kCAAmC,CARnC,UAAW,CAKX,cAAe,CAHf,QAAS,CAIT,mBAAoB,CACpB,kBAAmB,CANnB,iBAAkB,CAElB,OAAQ,CACR,aAAc,CAKd,WACF,CACA,uFAEE,mBACF,CACA,2CAGE,0CAA6C,CAD7C,iBAAkB,CADlB,kBAGF,CACA,yGAIE,gDAAmD,CACnD,mBAAsB,CAHtB,SAAU,CACV,mBAAqB,CAGrB,WACF,CACA,4CACE,2CAA8C,CAC9C,oBACF,CACA,iHAEE,gDAAmD,CACnD,WACF,CACA,+BACE,GAEE,iBAAkB,CADlB,kBAEF,CACA,IACE,iBACF,CACA,GAEE,eAAiB,CADjB,kBAEF,CACF,CACA,gCACE,GAEE,eAAiB,CADjB,kBAEF,CACA,IACE,iBACF,CACA,GAEE,iBAAkB,CADlB,kBAEF,CACF,CACA,qCACE,GAEE,SAAU,CADV,mBAEF,CACA,IAEE,SAAU,CADV,sBAEF,CACA,GAEE,SAAU,CADV,kBAEF,CACF,CACA,qCACE,GAEE,SAAU,CADV,kBAEF,CACA,IAEE,SAAU,CADV,sBAEF,CACA,IAEE,SAAU,CADV,mBAEF,CACA,GAEE,SAAU,CADV,mBAEF,CACF,CACA,6EAEE,eAAgB,CAChB,kBACF,CACA,yFAEE,mBACF,CACA,iDACE,sFACF,CACA,oDACE,sFACF,CACA,qDACE,sFACF,CACA,sDACE,sFACF,CACA,sCACE,GACE,0BACF,CACA,GACE,uBACF,CACF,CACA,sCACE,GACE,uBACF,CACA,GACE,0BACF,CACF,CACA,sCACE,GAEE,SAAU,CADV,uBAEF,CACA,GAEE,UAAY,CADZ,4BAEF,CACF,CACA,sCACE,GAEE,UAAY,CADZ,4BAEF,CACA,GAEE,SAAU,CADV,uBAEF,CACF,CACA,yEAEE,eAAgB,CAChB,kBACF,CACA,qFAEE,mBACF,CACA,+CACE,oFACF,CACA,kDACE,oFACF,CACA,mDACE,oFACF,CACA,oDACE,oFACF,CACA,oCACE,GACE,2BACF,CACA,GACE,uBACF,CACF,CACA,oCACE,GACE,uBACF,CACA,GACE,2BACF,CACF,CACA,oCACE,GAEE,SAAU,CADV,uBAEF,CACA,GAEE,UAAY,CADZ,4BAEF,CACF,CACA,oCACE,GAEE,UAAY,CADZ,4BAEF,CACA,GAEE,SAAU,CADV,uBAEF,CACF,CACA,uEAEE,kCAAmC,CACnC,kBACF,CACA,mFAEE,mBACF,CACA,8CACE,kFACF,CACA,iDACE,kFACF,CACA,kDACE,kFACF,CACA,mDACE,kFACF,CACA,mCACE,GACE,SAAU,CACV,4BACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,uBACF,CACF,CACA,mCACE,GACE,SAAU,CACV,uBACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,4BACF,CACF,CACA,mCACE,GAEE,SAAU,CADV,uBAEF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,2BACF,CACF,CACA,mCACE,GACE,SAAU,CACV,2BACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,uBACF,CACF,CACA,uEAEE,kCACF,CACA,mFAEE,mBACF,CACA,qGAGE,qEAAsE,CADtE,SAEF,CAKA,wNAEE,sEACF,CACA,+GAEE,qEACF,CACA,sBACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,uBACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,uEAEE,eAAgB,CAChB,kBACF,CACA,mFAEE,kCAAmC,CAC3B,0BAA2B,CACnC,eAAgB,CAChB,mBACF,CACA,8CAEE,kFAAmF,CADnF,2BAEF,CACA,iDAEE,kFAAmF,CADnF,2BAEF,CACA,kDAEE,kFAAmF,CADnF,2BAEF,CACA,mDAEE,kFAAmF,CADnF,2BAEF,CACA,mCACE,GACE,kBAAmB,CACnB,+CACF,CACA,GACE,eAAgB,CAChB,qCACF,CACF,CACA,mCACE,GACE,eAAkB,CAClB,qCACF,CACA,GACE,kBAAmB,CACnB,+CACF,CACF,CACA,mCACE,GACE,eAAkB,CAClB,qCACF,CACA,GACE,kBAAmB,CACnB,8CACF,CACF,CACA,mCACE,GACE,kBAAmB,CACnB,8CACF,CACA,GACE,eAAkB,CAClB,qCACF,CACF,CACA,6CACE,mBACF,CACA,kDACE,0FACF,CACA,qDACE,0FACF,CACA,8CACE,mBACF,CACA,sDACE,0FACF,CACA,uDACE,0FACF,CACA,uCACE,GACE,2BACF,CACA,GACE,uBACF,CACF,CACA,uCACE,GACE,uBACF,CACA,GACE,2BACF,CACF,CACA,uCACE,GACE,uBACF,CACA,GACE,yBACF,CACF,CACA,uCACE,GACE,yBACF,CACA,GACE,uBACF,CACF,CACA,yCACE,mBACF,CACA,8CACE,kFACF,CACA,iDACE,kFACF,CACA,0CACE,mBACF,CACA,kDACE,kFACF,CACA,mDACE,kFACF,CACA,mCACE,GACE,2BACF,CACA,GACE,uBACF,CACF,CACA,mCACE,GACE,uBACF,CACA,GACE,2BACF,CACF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,mBACF,CACA,qBAME,YAAa,CAGb,0CAA2C,CAN3C,MAAO,CADP,iBAAkB,CAElB,OAAQ,CACR,QAAS,CAKT,SACF,CACA,+CAXE,qBAAsB,CAOtB,eAAgB,CADhB,kBAsBF,CAjBA,0BAGE,6CAA8C,CAE9C,gDAAiD,CACjD,oDAAqD,CAFrD,0DAA2D,CAG3D,oDAAqD,CAIrD,2PAA6D,CAV7D,sBAAuB,CAcvB,gHAAyH,CACzH,yGAA0G,CAF1G,UAGF,CACA,oDACE,uBACF,CACA,qBAEE,+EACF,CACA,wKAKE,qHACF,CACA,0CAEE,+CACF,CACA,KACE,0EAAiF,CACjF,qEAAsE,CACtE,sGAAyG,CACzG,8DAA+D,CAC/D,uGAA0G,CAC1G,+DAAgE,CAChE,yGAA4G,CAC5G,iEACF,CACA,0BACE,oBACF,CACA,yBAGE,sBAAuB,CADvB,QAAS,CADT,UAGF,CACA,+CAEE,iBACF,CACA,eACE,eACF,CACA,mBACE,gBACF,CACA,oBACE,iBACF,CACA,gCACE,yCACF,CACA,mBACE,6BACF,CACA,8BACE,0BACF,CACA,qCACE,iBACF,CACA,qCAEE,gBAAiB,CADjB,eAEF,CACA,8wBAeE,SACF,CACA,mHAEE,mBACF,CACA,6IAEE,SAAU,CACV,uBACF,CACA,iLAEE,mBAAqB,CACrB,uBACF,CACA,oTAIE,SAAU,CACV,+BACF,CACA,yIAEE,2BACF,CACA,kBACE,mBACF,CACA,6BACE,2BACF,CACA,iDAEE,oFAAuF,CADvF,uBAEF,CACA,2EAEE,SAAU,CACV,gCACF,CACA,mEAEE,sDACF,CACA,mCACE,qDAAsD,CACtD,4BACF,CACA,+EAEE,uBACF,CACA,+LAIE,iFACF,CACA,8cAUE,cAAe,CADf,mBAAqB,CADrB,sDAGF,CACA,uHAGE,cAAe,CACf,SAAU,CAFV,sDAGF,CACA,0bAQE,gFACF,CACA,2pCAmBE,cAAe,CAEf,mBAAqB,CADrB,iCAA0C,CAF1C,sDAIF,CACA,2PAEE,cACF,CACA,whBAIE,mBACF,CACA,sxBAQE,cACF,CACA,4QAEE,gBACF,CACA,gTAEE,2KACF,CACA,kGACE,0FAA2F,CAE3F,6BAA8B,CAD9B,eAEF,CACA,gIACE,gBACF,CAIA,0SACE,4FACF,CACA,+LAEE,cAAe,CACf,mBAAqB,CACrB,qBACF,CACA,oGACE,8FAA+F,CAE/F,6BAA8B,CAD9B,eAEF,CACA,oIACE,gBACF,CAIA,kTACE,6FACF,CACA,0IACE,SACF,CACA,gRAGE,SAAU,CADV,gBAEF,CACA,oTAEE,4KACF,CACA,qMAEE,cAAe,CACf,mBAAqB,CACrB,qBACF,CAIA,4LACE,0CACF,CACA,uIACE,0CACF,CACA,uIACE,0CACF,CACA,0HACE,0CACF,CAIA,sLACE,0CACF,CACA,oIACE,0CACF,CACA,oIACE,0CACF,CACA,4DACE,0CACF,CACA,wIACE,0CACF,CACA,wIACE,0CACF,CACA,mFACE,0CACF,CACA,qHACE,0CACF,CACA,6DACE,0CACF,CACA,yIACE,0CACF,CACA,yIACE,0CACF,CACA,oFACE,0CACF,CACA,6BACE,YACF,CACA,iCACE,WACF,CACA,+FAEE,WACF,CACA,6GAEE,WACF,CACA,mDACE,mBACF,CACA,8PAIE,SACF,CACA,yYASE,wBAA0B,CAH1B,mBAAqB,CAErB,wBAA0B,CAD1B,uBAGF,CACA,gEAEE,wBAA0B,CAD1B,uBAEF,CACA,yEAIE,wBAA0B,CAH1B,uEAA2E,CAE3E,wBAA0B,CAD1B,uBAGF,CACA,mKAGE,wBAA0B,CAD1B,uBAEF,CACA,yLAEE,qBAAuB,CACvB,0DACF,CACA,sCACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,uCACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,gDACE,GACE,8CACF,CACA,GACE,qNACF,CACF,CACA,kDACE,GACE,uNACF,CACA,GACE,8CACF,CACF,CACA,kDACE,GACE,2BACF,CACA,GACE,uBACF,CACF,CACA,mDACE,GACE,uBACF,CACA,GACE,2BACF,CACF,CACA,gDACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,+CACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,oDACE,GACE,SAAU,CACV,8CACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,qNACF,CACF,CACA,gDACE,GACE,SAAU,CACV,qNACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,8CACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,+CACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,4CACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,+CACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,4CACF,CACF,CACA,uCACE,GACE,gDACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,gDACF,CACA,GACE,8CACF,CACF,CACA,uCACE,GACE,6CACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,gDACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,gDACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,6CACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,6CACF,CACF,CACA,uCACE,GACE,+CACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,4CACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,+CACF,CACA,GACE,8CACF,CACF,CACA,uCACE,GACE,4CACF,CACA,GACE,8CACF,CACF,CACA,yBACE,kBACF,CACA,kBACE,eAAgB,CAChB,gBACF,CACA,mBAEE,cAAe,CADf,cAEF,CACA,wBAEE,aAAc,CADd,WAAY,CAEZ,UACF,CACA,mBACE,eAAgB,CAChB,iBACF,CACA,+BACE,6BACF,CACA,kBACE,0BAA2B,CAC3B,eACF,CAIA,yGACE,gBACF,CACA,uEACE,gBACF,CACA,iCACE,6BACF,CACA,wCACE,cACF,CACA,wCACE,iBACF,CAEA,MAQE,4CAA6C,CAC7C,qCAAsC,CACtC,gDACF,CACA,KACE,wBAAyB,CACzB,2BAA4B,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aAAc,CACd,cACF,CACA,kFAGE,gDACF,CACA,2MAME,sBACF,CACA,4HAGE,uFACF,CACA,yHAGE,uFACF,CACA,6JAGE,gDACF,CACA,sNAKE,0DACF,CACF,CACA,yBACE,sEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,6GAGE,aAAc,CACd,cACF,CACA,+EAGE,gDACF,CACA,qMAME,sBACF,CACA,yHAGE,uFACF,CACA,sHAGE,uFACF,CACA,0JAGE,gDACF,CACA,iNAKE,0DACF,CACF,CACA,yBACE,yEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,gHAGE,aAAc,CACd,cACF,CACA,kFAGE,gDACF,CACA,2MAME,sBACF,CACA,4HAGE,uFACF,CACA,yHAGE,uFACF,CACA,6JAGE,gDACF,CACA,sNAKE,0DACF,CACF,CACA,0BACE,sEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,6GAGE,aAAc,CACd,cACF,CACA,+EAGE,gDACF,CACA,qMAME,sBACF,CACA,yHAGE,uFACF,CACA,sHAGE,uFACF,CACA,0JAGE,gDACF,CACA,iNAKE,0DACF,CACF,CACA,0BACE,yEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,gHAGE,aAAc,CACd,cACF,CACA,kFAGE,gDACF,CACA,2MAME,sBACF,CACA,4HAGE,uFACF,CACA,yHAGE,uFACF,CACA,6JAGE,gDACF,CACA,sNAKE,0DACF,CACF,CACA,8CAGE,wCAAyC,CACzC,+BACF,CACA,WACE,iDAAkD,CAClD,uEAAwE,CACxE,2EAA4E,CAC5E,6EAA8E,CAC9E,qEAAsE,CACtE,uEAAwE,CACxE,6DACF,CACA,8IAME,uBACF,CACA,qCAEE,kBAAmB,CADnB,eAEF,CACA,iDACE,eACF,CACA,gDACE,kBACF,CACA,sBAKE,kDAAmD,CAFnD,yDAA2D,CAC3D,yCAA0C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AAO,CASP,SAAU,CAXV,mBAAoB,CACpB,iBAAkB,CAElB,KAAM,CAKN,uDAAwD,CACxD,qEAAsE,CALtE,UAAW,CAGX,aAKF,CACA,wIAGE,gCACF,CACA,yCACE,2DACF,CACA,mDACE,oEACF,CACA,0DACE,uFACF,CACA,oDACE,wGACF,CACA,8DACE,gHACF,CACA,+CACE,SAAU,CACV,mBACF,CACA,8iBAQE,uFAAwF,CACxF,oEACF,CACA,2CACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,4CACE,GACE,SACF,CACA,GACE,SACF,CACF,CAEA,MACE,wCAAyC,CACzC,yCAA0C,CAC1C,0CAA2C,CAC3C,wCACF,CACA,KACE,6CAA8C,CAC9C,oDAAqD,CACrD,2CAA4C,CAC5C,uCAAwC,CACxC,sCAAuC,CACvC,uCAAwC,CACxC,+BACF,CACA,qBAEE,+BAAgC,CAChC,uCACF,CACA,IACE,2CAA4C,CAC5C,oEAAwE,CACxE,6CAA8C,CAC9C,uCAAwC,CACxC,sCACF,CACA,kCAGE,uDAAwD,CACxD,+CACF,CACA,cAUE,0CAA2C,CAH3C,qBAAsB,CADtB,YAAa,CADb,WAAY,CAHZ,MAAO,CADP,iBAAkB,CAElB,KAAM,CAMN,gCAAmC,CADnC,6BAA8B,CAG9B,4EAA6E,CAP7E,UAAW,CAQX,aACF,CACA,+CAEE,8DACF,CACA,2BACE,uBACF,CACA,uBACE,aAAc,CACd,uBACF,CACA,wBACE,+BACF,CACA,6DAGE,kDACF,CACA,6LAME,yDACF,CACA,uUAUE,iDACF,CACA,2DAEE,eACF,CACA,gJAIE,sBACF,CACA,0IAKE,gBAAiB,CACjB,iBAAkB,CAFlB,iBAGF,CACA,oBAIE,6CAA8C,CAF9C,gDAAiD,CACjD,oDAAqD,CAErD,0DAA2D,CAJ3D,kDAKF,CACA,iEAGE,YAAa,CACb,qBACF,CACA,8OAQE,WAAY,CADZ,kBAAmB,CADnB,eAAgB,CAGhB,eAAgB,CAChB,UACF,CACA,+NAME,wBACF,CAEA,MACE,wBACF,CACA,KACE,+BAAgC,CAChC,mCAAoC,CACpC,+CAAgD,CA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oCAAwC,CACxC,6BAAgC,CAChC,kCAAmC,CACnC,gCAAiC,CACjC,4BAA6B,CAC7B,gCACF,CACA,IACE,kCAAmC,CACnC,gCAAiC,CACjC,6BAA8B,CAC9B,gCACF,CACA,kCAGE,6CAA8C,CAC9C,0CACF,CACA,OAQE,yCAA0C,CAD1C,qBAAsB,CAFtB,gCAAiC,CACjC,mCAAoC,CAHpC,mCAAoC,CAMpC,SAAU,CAPV,iBAAkB,CADlB,qCAAuC,CAGvC,aAMF,CACA,iFACE,+BAEE,iDAAkD,CAC1C,yCAA0C,CAFlD,sDAGF,CACF,CACA,gBACE,SACF,CACA,sBAGE,kBAAmB,CACnB,qBAAsB,CAHtB,YAAa,CACb,6BAA8B,CAG9B,2EACF,CACA,mBAEE,aAAc,CADd,gBAAiB,CAEjB,WACF,CACA,qBACE,aAAc,CAGd,kBAAmB,CADnB,eAAgB,CADhB,0CAGF,CACA,sCACE,aAAc,CACd,iBACF,CACA,mCACE,iBACF,CACA,gGAEE,mCACF,CACA,oBACE,OACF,CACA,iBACE,kCACF,CACA,YAGE,MAAO,CAFP,uBAA0B,CAC1B,UAEF,CACA,sBACE,KAAM,CACN,gCACF,CACA,+BACE,uBACF,CACA,yBAGE,2CAA4C,CAD5C,QAAS,CADT,UAIF,CACA,2DAFE,kCAIF,CACA,yBACE,QAAS,CACT,+BACF,CACA,kCACE,uBACF,CACA,yBACE,sBACE,YACF,CACA,qCACE,4EACF,CACA,wCACE,kFACF,CACF,CACA,yBACE,YAGE,2CAA4C,CAF5C,QAAS,CACT,gDAEF,CACA,sBACE,QACF,CACA,yBACE,aACF,CACA,yBACE,qDACF,CACF,CACA,0BACE,YACE,aAAc,CACd,UACF,CACA,kCACE,SACF,CACA,mCACE,SAAU,CACV,UACF,CACA,oCACE,QAAS,CAET,gDAAqD,CADrD,+BAEF,CACF,CACA,mBAEE,wDAA2D,CAD3D,iBAEF,CACA,WAEE,2CAA4C,CAG5C,QAAS,CADT,mBAAqB,CAHrB,uBAA0B,CAE1B,uBAGF,CAIA,yCACE,kBACF,CACA,qBACE,OACF,CACA,wBACE,QAAS,CAET,4CAAgD,CADhD,UAEF,CAIA,mEACE,2CACF,CACA,wBACE,6CACF,CACA,yBACE,WACE,QAAS,CACT,gDACF,CACA,wBACE,aACF,CACF,CACA,0BACE,WACE,aAAc,CACd,UACF,CACA,iCACE,SACF,CACA,kCACE,SAAU,CACV,UACF,CACA,mCACE,QAAS,CAET,gDAAqD,CADrD,+BAEF,CACA,wBACE,8CACF,CACA,qBACE,QACF,CACF,CACA,kBAEE,gBAAiB,CADjB,iBAEF,CAEA,MACE,gCAAiC,CACjC,6CACF,CACA,KACE,4BAA6B,CAC7B,wBAAyB,CACzB,wCAAyC,CACzC,sCACF,CACA,IACE,4BAA6B,CAC7B,wBAAyB,CACzB,wCAAyC,CACzC,sCACF,CACA,WACE,oBAAqB,CAIrB,WAAY,CADZ,+BAAgC,CAEhC,iBAAkB,CAJlB,qBAAsB,CACtB,8BAIF,CACA,4BAGE,aAAc,CADd,WAAY,CAEZ,iBAAkB,CAHlB,UAIF,CAEA,oBAGE,eAAgB,CADhB,SAAU,CADV,kBAAmB,CAGnB,aACF,CACA,iBAKE,6CAA8C,CAG9C,qDAAsD,CANtD,QAAS,CAET,yCAA0C,CAH1C,iBAAkB,CAElB,OAAQ,CAIR,2CAA4C,CAD5C,aAGF,CACA,4BACE,4DAA6D,CAC7D,uBACF,CACA,+GAIE,+BAAgC,CADhC,eAEF,CACA,0BACE,0CACF,CACA,uBACE,yBACF,CACA,uBACE,yBACF,CACA,gBACE,+BACF,CACA,sBACE,iDACF,CACA,2BAKE,uBAAwB,CADxB,mBAAoB,CAHpB,aAAc,CAEd,aAAc,CAId,QAAS,CADT,iBAAkB,CAElB,OAAQ,CACR,4BAA6B,CAP7B,WAQF,CACA,oGAEE,qDACF,CACA,uCAEE,WAAa,CADb,4CAEF,CACA,wCAEE,iBAAmB,CADnB,6CAEF,CACA,wCAEE,iBAAmB,CADnB,6CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,WAAa,CADb,8CAEF,CACA,8BACE,GACE,sBACF,CACA,GACE,uBACF,CACF,CACA,oCACE,MAEE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACF,CACA,eACE,+BACF,CACA,qBACE,kDACF,CACA,4BACE,SAAU,CACV,mBAAoB,CAEpB,sBAAuB,CACvB,sBAAuB,CACvB,cAAe,CAHf,8DAA+D,CAI/D,wBAAyB,CACzB,0BACF,CACA,oEAEE,gHACF,CACA,mCACE,MAEE,cACF,CACA,IACE,cACF,CACA,IACE,cACF,CACA,IACE,cACF,CACF,CACA,+BACE,GACE,sBACF,CACA,GACE,uBACF,CACF,CACA,sCACE,GAEE,uBAAwB,CADxB,wBAEF,CACA,MAEE,sBAAuB,CADvB,wBAEF,CACA,IACE,uBAAwB,CACxB,wBACF,CACA,MAEE,uBAAwB,CADxB,yBAEF,CACA,MAEE,sBAAuB,CADvB,yBAEF,CACA,IACE,uBAAwB,CACxB,uBACF,CACA,MAEE,uBAAwB,CADxB,uBAEF,CACA,MAEE,sBAAuB,CADvB,uBAEF,CACA,IACE,uBAAwB,CACxB,uBACF,CACA,MAEE,uBAAwB,CADxB,sBAEF,CACA,MAEE,sBAAuB,CADvB,sBAEF,CACA,GACE,uBAAwB,CACxB,wBACF,CACF,CAOA,KACE,2BAA4B,CAC5B,kCAAmC,CACnC,yCACF,CACA,qBAEE,+CACF,CACA,IACE,2BAA4B,CAC5B,kCACF,CACA,kCAGE,6DACF,CACA,mCAOE,4EAAgF,CAGhF,iDAAkD,CALlD,aAAc,CAId,mCAAoC,CANpC,eAAgB,CAChB,iBAAkB,CAIlB,2BAA4B,CAF5B,2BAA4B,CAJ5B,UASF,CACA,aACE,qBACF,CACA,kBACE,2EAA6E,CAE7E,WAAY,CACZ,iBAAkB,CAGlB,OAAQ,CAFR,KAAM,CAGN,+BAAkC,CAFlC,wBAA0B,CAJ1B,UAOF,CACA,sBACE,aACF,CACA,yDASE,2EAA6E,CAP7E,UAAW,CAMX,aAAc,CAFd,WAAY,CAHZ,iBAAkB,CAOlB,OAAQ,CANR,KAAM,CAGN,uBAA+B,CAI/B,6BAA8B,CAN9B,UAOF,CACA,kCACE,yBACF,CACA,gBACE,sCACF,CACA,iBACE,uCACF,CACA,mWAkBE,yBAA2B,CAH3B,MAAO,CADP,iBAAkB,CAElB,KAAM,CAGN,qCAAuC,CAFvC,aAGF,CACA,0BACE,GACE,SAAU,CACV,mBACF,CACA,GACE,SAAU,CACV,mBACF,CACF,CACA,2BACE,GACE,SAAU,CACV,mBACF,CACA,GACE,SAAU,CACV,mBACF,CACF,CACA,kCACE,qDACF,CACA,iCACE,YACF,CACA,8CAKE,gEAAiE,CAHjE,+HAA8I,CAE9I,0BAA2B,CAD3B,wBAAyB,CAFzB,UAKF,CACA,oCACE,GACE,+BACF,CACA,GACE,gCACF,CACF,CACA,+CACE,GACE,uBACF,CACA,GACE,+BACF,CACF,CACA,iCACE,sDACF,CACA,gCACE,sDACF,CACA,6CAEE,oEAAqE,CADrE,eAEF,CACA,4CAEE,oEAAqE,CADrE,eAAgB,CAEhB,8BACF,CACA,qCACE,GACE,oCACF,CACA,IACE,qCACF,CACA,IACE,qCACF,CACA,GACE,qCACF,CACF,CACA,qCACE,GACE,oCACF,CACA,IACE,oCACF,CACA,IACE,sCACF,CACA,IACE,sCACF,CACA,GACE,sCACF,CACF,CACA,iDACE,GACE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACF,CACA,mDACE,GAEE,wBAAyB,CADzB,mBAEF,CACA,MAEE,wBAAyB,CADzB,mBAEF,CACA,IAEE,wBAAyB,CADzB,mBAEF,CACA,MAEE,wBAAyB,CADzB,mBAEF,CACA,IAEE,wBAAyB,CADzB,mBAEF,CACA,MAEE,wBAAyB,CADzB,mBAEF,CACA,IAEE,wBAAyB,CADzB,mBAEF,CACA,GAEE,wBAAyB,CADzB,mBAEF,CACF,CAEA,KACE,gCAAiC,CACjC,iEAAqE,CACrE,4CAAgD,CAChD,yDACF,CACA,qBAEE,sDAA0D,CAC1D,kDACF,CACA,IACE,gCAAiC,CACjC,0CACF,CACA,kCAGE,2DAA4D,CAC5D,0DACF,CACA,4BAWE,kBAAmB,CAHnB,WAAY,CAEZ,YAAa,CARb,WAAY,CAUZ,sBAAuB,CAEvB,6BAA8B,CAR9B,SAAU,CAOV,eAAgB,CANhB,mBAAoB,CAJpB,iBAAkB,CAClB,KAAM,CAKN,uBAA0B,CAR1B,sCAAuC,CAIvC,UAUF,CACA,kCAQE,gBAAiB,CAEjB,kCAAmC,CAEnC,iCAAkC,CAClC,4BAA6B,CAQ7B,sCAAuC,CAZvC,aAAc,CAMd,aAAc,CAdd,iCAAoC,CAiBpC,cAAe,CAff,iBAAkB,CADlB,eAAmB,CAenB,WAAY,CAMZ,WAAY,CAlBZ,qBAAsB,CADtB,aAAc,CAkBd,eAAgB,CARhB,iBAAkB,CAHlB,iCAAkC,CALlC,mBAAoB,CAcpB,0BAA2B,CAD3B,uBAA0B,CAZ1B,kBAAmB,CASnB,UAAW,CAQX,UACF,CACA,qBAEE,mDAAoD,CAEpD,qDAAsD,CADtD,uBAAwB,CAFxB,UAIF,CACA,uCACE,sBACF,CACA,qCAEE,SAAU,CADV,8BAEF,CACA,2CACE,2BACF,CACA,2IAIE,uBAA0B,CAC1B,uBACF,CACA,qBACE,uBACF,CACA,+EAGE,SAAU,CAFV,mBAAoB,CACpB,iBAEF,CACA,qFACE,uBACF,CACA,mVAGE,YACF,CACA,m0BAQE,+EACF,CACA,oRAGE,gFACF,CACA,6BACE,kBACF,CACA,4BACE,iBACF,CAEA,MACE,4CAA6C,CAC7C,oCAAqC,CACrC,yCAA0C,CAC1C,8CACF,CACA,uBAEE,oDACF,CACA,KACE,4CAA6C,CAC7C,sCAAuC,CACvC,wCACF,CACA,IACE,4CAA6C,CAC7C,mCAAoC,CACpC,oCACF,CACA,mBAEE,oCACF,CACA,UACE,eAAgB,CAChB,2BACF,CACA,mBACE,uBACF,CACA,qCACE,2BACF,CACA,yLAIE,uBAA0B,CAC1B,kCACF,CACA,kBACE,iBAAkB,CAClB,UACF,CACA,oBACE,uBAA0B,CAC1B,wBACF,CACA,+CAME,aAAc,CADd,YAAa,CADb,WAAY,CAFZ,iBAAkB,CAClB,KAIF,CACA,gOAYE,kBAAmB,CAHnB,6CAA8C,CAD9C,0CAA2C,CAG3C,YAAa,CAIb,6CAA8C,CAC9C,iDAAkD,CAFlD,MAAO,CAJP,+FAAgG,CAGhG,iBAIF,CACA,gRAaE,kBAAmB,CALnB,UAAW,CAIX,WAAY,CAIZ,mBAAoB,CAPpB,iBAAkB,CAClB,KAAM,CAKN,uBAA+B,CAJ/B,UAAW,CAGX,UAGF,CACA,iFAEE,oDACF,CACA,wBACE,OAAS,CACT,sCACF,CACA,0IAIE,SACF,CACA,8JAIE,4FACF,CACA,uBACE,MAAQ,CACR,uCACF,CACA,sIAIE,UACF,CACA,8JAIE,0FACF,CACA,+EAEE,mDACF,CAEA,MACE,+CAAgD,CAChD,2CACF,CACA,uBACE,cACF,CACA,4CAGE,eAAgB,CADhB,iBAAkB,CADlB,uBAGF,CACA,yDAEE,qDAAsD,CADtD,uBAEF,CACA,2EACE,wBACF,CACA,wDACE,uBAA0B,CAC1B,oCACF,CACA,8DACE,uBACF,CACA,yDACE,SACF,CACA,6CACE,uBACF,CACA,6CAGE,eAAgB,CADhB,YAEF,CACA,6LAKE,eACF,CACA,wLAKE,kBACF,CACA,oHAEE,wBACF,CACA,2BACE,eACF,CACA,wBAIE,cAAe,CADf,QAAS,CADT,eAAgB,CADhB,iBAAkB,CAIlB,uBACF,CACA,+CACE,WACF,CACA,8CACE,cACF,CACA,gDAQE,gBAAiB,CAEjB,kCAAmC,CAEnC,iCAAkC,CAClC,4BAA6B,CAS7B,uCAAwC,CAbxC,aAAc,CAMd,aAAc,CAdd,iCAAoC,CAiBpC,cAAe,CAGf,+CAAgD,CAlBhD,iBAAkB,CADlB,eAAmB,CAenB,WAAY,CAOZ,4EAA6E,CAnB7E,qBAAsB,CADtB,aAAc,CAmBd,mBAAoB,CAJpB,iBAAkB,CALlB,iBAAkB,CAHlB,iCAAkC,CALlC,mBAAoB,CAcpB,OAAQ,CAbR,kBAAmB,CASnB,UASF,CACA,kEACE,uHACF,CACA,4PAIE,oFACF,CACA,+DACE,eACF,CACA,8VAKE,YACF,CACA,iRAME,wHAAyH,CADzH,iBAEF,CACA,oTAYE,gBAAiB,CAEjB,kCAAmC,CAEnC,iCAAkC,CAClC,4BAA6B,CAS7B,uCAAwC,CAExC,6CAA8C,CAf9C,aAAc,CAMd,aAAc,CAdd,iCAAoC,CAiBpC,cAAe,CAGf,+CAAgD,CAlBhD,iBAAkB,CADlB,eAAmB,CAenB,WAAY,CASZ,UAAW,CArBX,qBAAsB,CADtB,aAAc,CAwBd,eAAgB,CADhB,eAAgB,CAJhB,mBAAoB,CAJpB,iBAAkB,CAWlB,qHAAwH,CAhBxH,iBAAkB,CAHlB,iCAAkC,CALlC,mBAAoB,CAcpB,OAAQ,CASR,0BAA2B,CAtB3B,kBAAmB,CASnB,UAAW,CASX,UAMF,CACA,0CACE,qDACF,CACA,2hBAQE,6CAA8C,CAE9C,UAAW,CAEX,eAAgB,CADhB,eAAgB,CAFhB,UAIF,CACA,09BAaE,2CAA4C,CAE5C,UAAW,CAEX,eAAgB,CADhB,eAAgB,CAFhB,UAIF,CAEA,KACE,0CAA2C,CAC3C,wCAAyC,CACzC,oCAAqC,CACrC,wCAAyC,CACzC,yCACF,CACA,qBAEE,wCAAyC,CACzC,yCACF,CACA,IACE,uCAAwC,CACxC,wCAAyC,CACzC,oCAAqC,CACrC,6CACF,CACA,kCAGE,yDACF,CACA,eACE,6BACF,CACA,oEAEE,2FAA6F,CAG7F,oEAAsE,CADtE,sFAAwF,CADxF,4FAA8F,CAI9F,6EAA+E,CAD/E,kFAEF,CAIA,gGACE,sBACF,CACA,qCAEE,gBAAiB,CADjB,mBAAoB,CAEpB,UACF,CACA,wCACE,wDACF,CACA,4CACE,sBACF,CACA,6CACE,kBACF,CAGA,MACE,0BAA2B,CAC3B,8BAA+B,CAC/B,+BAAgC,CAEhC,gCAAiC,CACjC,qCACF,CACA,KACE,qCAAsC,CAEtC,+BAAgC,CAChC,oCAAqC,CACrC,iCACF,CACA,IACE,+BAAgC,CAChC,oCAAqC,CACrC,iCACF,CACA,kCAGE,mDAAoD,CACpD,wDACF,CACA,YAGE,QAAS,CAIT,cAAe,CAGf,6BAA8B,CAT9B,iBAAkB,CAGlB,iBAAkB,CAFlB,KAAM,CAMN,wBAAyB,CACjB,gBAAiB,CAHzB,gCAAiC,CADjC,UAMF,CACA,mBACE,UAAW,CAKX,WAAY,CAJZ,iBAAkB,CAGlB,UAAW,CADX,KAAM,CADN,UAIF,CACA,eAUE,kBAAmB,CATnB,2DAA6D,CAM7D,YAAa,CACb,qBAAsB,CANtB,wCAAyC,CACzC,4CAA6C,CAS7C,WAAY,CAHZ,sBAMF,CACA,8BALE,aAAc,CAPd,eAAgB,CAChB,QAAS,CACT,SAAU,CAQV,iBAAkB,CADlB,UAaF,CAVA,eAQE,aAAc,CAHd,uCAAwC,CACxC,4CAIF,CACA,+CAUE,gEAAkE,CALlE,iBAAkB,CAJlB,UAAW,CAMX,yCAA0C,CAJ1C,QAAS,CAKT,yDAA8D,CAC9D,wDAA6D,CAP7D,iBAAkB,CAElB,OAAQ,CAER,wCAKF,CACA,8BAKE,0EAA4E,CAH5E,QAAS,CAIT,2CAA4C,CAI5C,8CAA+C,CAC/C,kDAAmD,CAHnD,sCAAuC,CACvC,2CAA4C,CAR5C,iBAAkB,CAElB,UAAW,CACX,iBAAkB,CAGlB,qCAKF,CACA,yEAGE,2BACF,CACA,oLAIE,4DACF,CACA,wOAIE,iEACF,CACA,wGAGE,8DACF,CACA,sVASE,kEACF,CACA,2cASE,uEACF,CACA,mCAGE,iBAAkB,CAFlB,wDAA6D,CAC7D,mDAEF,CACA,0CAME,wBAAyB,CAFzB,2BAA6B,CAC7B,UAAW,CAFX,WAAY,CAIZ,MAAO,CANP,iBAAkB,CAOlB,KAAM,CACN,uBAAwB,CAPxB,UAAW,CAQX,UACF,CACA,kCACE,2BACF,CAEA,MACE,8CAA+C,CAC/C,4CAA6C,CAC7C,yCAA0C,CAC1C,8BAA+B,CAC/B,sCAAuC,CACvC,+BAAgC,CAChC,qCAAsC,CACtC,uCAAwC,CACxC,2CAA4C,CAC5C,+CACF,CACA,KACE,gCAAiC,CACjC,qCAAsC,CACtC,kCAAmC,CACnC,0CAA2C,CAC3C,sCAAuC,CACvC,uCAAwC,CACxC,4CAA6C,CAC7C,wCAAyC,CACzC,0CAA2C,CAC3C,+CAAgD,CAChD,yCAA0C,CAC1C,qCAAsC,CACtC,2CAA4C,CAC5C,iCAAkC,CAClC,0CAA2C,CAC3C,sCAAuC,CACvC,mDAAuD,CACvD,2DAA+D,CAC/D,gEACF,CACA,qBAEE,iEAAqE,CACrE,sEAA0E,CAC1E,yCAA0C,CAC1C,yDACF,CACA,IACE,qCAAsC,CACtC,kCAAmC,CACnC,2CAA4C,CAC5C,sCAAuC,CACvC,uCAAwC,CACxC,4CAA6C,CAC7C,wCAAyC,CACzC,6CAA8C,CAC9C,+CAAgD,CAChD,yCAA0C,CAC1C,2CAA4C,CAC5C,iCAAkC,CAClC,0CAA2C,CAC3C,2DACF,CACA,kCAGE,gDAAiD,CACjD,qDAAsD,CACtD,+DAAgE,CAChE,wDAAyD,CACzD,kEACF,CACA,UACE,qBAAsB,CACtB,2CAA4C,CAC5C,+CAAgD,CAEhD,gBAAiB,CACjB,mFAAoF,CACpF,qFAAsF,CAHtF,aAIF,CACA,wBAEE,QAAS,CADT,SAEF,CACA,eAIE,qBAAsB,CAHtB,YAAa,CACb,0BAA2B,CAC3B,eAAgB,CAGhB,mDAAsD,CADtD,iBAEF,CACA,0BACE,kBACF,CACA,oBAIE,qBAAsB,CAHtB,aAAc,CAEd,gBAAiB,CADjB,UAGF,CACA,0BACE,cACF,CACA,uBAIE,cAAe,CAHf,UAAW,CACX,WAAY,CACZ,iBAEF,CACA,6KAME,QAAS,CACT,UACF,CACA,iUASE,yDACF,CACA,yQAOE,YACF,CACA,kQAOE,eACF,CACA,qBACE,iDAAkD,CAElD,yDAA0D,CAD1D,qBAAsB,CAEtB,iDACF,CACA,0CACE,yDACF,CACA,4BAEE,aAAc,CADd,SAEF,CACA,mCAGE,QAAS,CAFT,cAAe,CACf,eAEF,CAKA,4JAEE,sBACF,CACA,uBAKE,2CAA4C,CAC5C,iBAAkB,CAClB,aAAc,CAHd,WAAY,CAIZ,yDAA0D,CAN1D,iBAAkB,CADlB,SAAU,CAEV,UAMF,CACA,2DAOE,kBAAmB,CALnB,WAAY,CAEZ,YAAa,CAEb,QAAS,CADT,iBAAkB,CAGlB,+BAAkC,CALlC,SAMF,CACA,6BACE,QACF,CACA,8BACE,WACF,CAIA,gHACE,YACF,CACA,oBAGE,6CAA8C,CAF9C,gDAAiD,CACjD,yDAEF,CAKA,wGACE,YACF,CACA,qBACE,iDAAkD,CAClD,qDAAsD,CACtD,qDACF,CACA,wBACE,oDAAqD,CACrD,wDAAyD,CACzD,wDACF,CACA,oBACE,wCAAyC,CACzC,gDAAiD,CACjD,oDAAqD,CACrD,oDACF,CACA,oEAGE,aAAc,CADd,gFAEF,CACA,4GAEE,eACF,CACA,2GAEE,0BAA2B,CAC3B,+EAA6F,CAC7F,cACF,CACA,mJAEE,gBACF,CACA,yBACE,gEAGE,aAAc,CADd,gFAEF,CACA,wGAEE,eACF,CACA,uGAEE,0BAA2B,CAC3B,+EAA6F,CAC7F,cACF,CACA,+IAEE,gBACF,CACF,CACA,yBACE,8DAGE,aAAc,CADd,gFAEF,CACA,sGAEE,eACF,CACA,qGAEE,0BAA2B,CAC3B,+EAA6F,CAC7F,cACF,CACA,6IAEE,gBACF,CACF,CACA,yBACE,gEAGE,aAAc,CADd,gFAEF,CACA,wGAEE,eACF,CACA,uGAEE,0BAA2B,CAC3B,+EAA6F,CAC7F,cACF,CACA,+IAEE,gBACF,CACF,CACA,0BACE,8DAGE,aAAc,CADd,gFAEF,CACA,sGAEE,eACF,CACA,qGAEE,0BAA2B,CAC3B,+EAA6F,CAC7F,cACF,CACA,6IAEE,gBACF,CACF,CACA,0BACE,gEAGE,aAAc,CADd,gFAEF,CACA,wGAEE,eACF,CACA,uGAEE,0BAA2B,CAC3B,+EAA6F,CAC7F,cACF,CACA,+IAEE,gBACF,CACF,CACA,qBAEE,YAAa,CADb,WAAY,CAGZ,QAAS,CADT,SAAU,CAGV,qCAAsC,CACtC,eAAgB,CAFhB,iBAGF,CACA,oCACE,aAAc,CAId,aAAc,CAEd,WAAY,CAJZ,QAAS,CACT,SAAU,CAKV,yDAA0D,CAD1D,+DAAiE,CAFjE,iBAAkB,CAJlB,aAQF,CACA,0CAGE,gEAAiE,CAKjE,WAAY,CAPZ,UAAW,CAGX,aAAc,CAOd,WAAY,CAFZ,SAAU,CAPV,iBAAkB,CAKlB,OAAQ,CADR,KAAM,CAON,sDAAyD,CADzD,yBAA0B,CAF1B,SAAU,CALV,UASF,CACA,yCAUE,wCAAyC,CACzC,+BAAgC,CAFhC,gDAAiD,CAHjD,MAAO,CAFP,qDAAsD,CAHtD,oDAAuD,CAIvD,iBAAkB,CAFlB,eAAgB,CAShB,gBAAiB,CALjB,KAAM,CALN,UAAW,CAMX,UAKF,CACA,iFACE,+DAEE,4EAA6E,CACrE,oEAAqE,CAF7E,qFAGF,CACF,CACA,+CAGE,qEAAsE,CAKtE,QAAS,CAPT,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,QAAS,CAOT,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CANX,UASF,CACA,4CAIE,gCAAiC,CAFjC,+DAAgE,CAGhE,QAAS,CAFT,aAAc,CAFd,kDAKF,CACA,4CACE,YACF,CACA,qIAEE,sBACF,CACA,oDACE,WACF,CACA,oDACE,UACF,CACA,oDACE,gBACF,CACA,oDACE,UACF,CACA,oDACE,UACF,CACA,oDACE,gBACF,CACA,oDACE,gBACF,CACA,oDACE,YACF,CACA,oDACE,gBACF,CACA,qDACE,UACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,YACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,SACF,CACA,yBACE,2DACE,WACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,gBACF,CACA,2DACE,YACF,CACA,2DACE,gBACF,CACA,4DACE,UACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,YACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,SACF,CACF,CACA,yBACE,0DACE,WACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,UACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,gBACF,CACA,0DACE,YACF,CACA,0DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,YACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,SACF,CACF,CACA,yBACE,2DACE,WACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,gBACF,CACA,2DACE,YACF,CACA,2DACE,gBACF,CACA,4DACE,UACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,YACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,SACF,CACF,CACA,0BACE,0DACE,WACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,UACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,gBACF,CACA,0DACE,YACF,CACA,0DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,YACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,SACF,CACF,CACA,0BACE,2DACE,WACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,gBACF,CACA,2DACE,YACF,CACA,2DACE,gBACF,CACA,4DACE,UACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,YACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,SACF,CACF,CACA,eACE,0CACF,CACA,qBAGE,gEAAiE,CAKjE,WAAY,CAPZ,UAAW,CAGX,aAAc,CAOd,WAAY,CAFZ,SAAU,CAPV,iBAAkB,CAKlB,OAAQ,CADR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B,CAI/B,uBAA0B,CAH1B,2CAA6C,CAE7C,SAOF,CACA,6BACE,+CACF,CACA,mCACE,wBAAyB,CACjB,gBACV,CACA,oCACE,uBACF,CACA,6DACE,mCAAqC,CACrC,UACF,CACA,8BACE,kCACF,CACA,6EAEE,uBACF,CACA,sCACE,SAAU,CACV,mBACF,CACA,+BAQE,qBAAsB,CAJtB,YAAa,CAEb,eAAgB,CAGhB,mBAAoB,CARpB,iBAAkB,CASlB,OAAQ,CARR,KAAM,CAGN,2BAA4B,CAE5B,6BAA8B,CAJ9B,WAQF,CACA,qDACE,uFAAwF,CACxF,yFACF,CACA,6BACE,uBACF,CACA,gGAGE,uBACF,CACA,4CACE,uBACF,CACA,4CACE,uBACF,CACA,yFAGE,WACF,CACA,2DAEE,eACF,CACA,qGAEE,SAAU,CACV,mBACF,CACA,uGAEE,SAAU,CACV,mBACF,CACA,2CAEE,gCAAiC,CADjC,aAAc,CAEd,mBACF,CACA,8BACE,oDAAqD,CACrD,wDACF,CACA,mBACE,mBACF,CACA,sBAEE,QAAS,CAET,MAAO,CAEP,SAAU,CACV,mBAAoB,CAJpB,iBAAkB,CAElB,KAAM,CAGN,iBAAkB,CAPlB,OAQF,CACA,gDACE,8CACE,gDACF,CACA,qHAEE,4DACF,CACA,gGACE,4CACF,CACA,oEAEE,8CAA+C,CAD/C,4CAEF,CACF,CACA,0CACE,eACF,CACA,eAQE,yBAA8B,CAH9B,WAAY,CAHZ,MAAO,CAOP,SAAU,CAFV,mBAAoB,CANpB,cAAe,CAEf,KAAM,CACN,UAAW,CAEX,WAIF,CACA,kBACE,4CAA+C,CAC/C,mBACF,CACA,mBACE,6CACF,CACA,iFACE,eAEE,kCAAmC,CAC3B,0BAA2B,CAFnC,sBAGF,CACF,CACA,iCACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,kCACE,GACE,SACF,CACA,GACE,SACF,CACF,CAEA,MACE,wBAAyB,CACzB,8BAA+B,CAC/B,kCACF,CACA,uBAEE,kCACF,CACA,KACE,qBAAsB,CACtB,yBAA0B,CAC1B,iCAAkC,CAClC,4BAA6B,CAC7B,4BAA6B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B,YAAa,CAGb,sBACF,CACA,mCAKE,iFAAkF,CADlF,8EAA+E,CAF/E,aAAc,CACd,iBAGF,CACA,kDAGE,8DAAgE,CAChE,2CAA4C,CAC5C,+CAAgD,CAChD,iBAAkB,CAJlB,UAKF,CACA,mCACE,WACF,CACA,6DAGE,mDACF,CACA,0DAGE,sFAAwF,CACxF,yFAA2F,CAC3F,uEAAwE,CACxE,oDACF,CACA,srBAYE,oCACF,CACA,maAME,2DACF,CACA,qbAME,oCAAyC,CACzC,qCACF,CACA,6DAGE,kDACF,CACA,6DAGE,8DAA+D,CAC/D,kDACF,CACA,sEAEE,gDAAiD,CACjD,4DACF,CACA,gEAGE,2BAA4B,CAC5B,8CACF,CACA,wGAGE,cACF,CACA,0CAEE,8GACF,CACA,4JAIE,6BACF,CACA,0PAME,uBACF,CACA,8tBAaE,sCAAuC,CADvC,uBAEF,CACA,uEAKE,eAAgB,CADhB,uBAA+B,CAD/B,uBAGF,CACA,uCAEE,iGACF,CAQA,qBACE,YACF,CACA,0BAKE,aAAc,CAJd,aAAc,CACd,eAAgB,CAEhB,iBAAkB,CADlB,sBAGF,CACA,8FAGE,kEACF,CACA,mCAGE,8FAAgG,CAKhG,QAAS,CAPT,UAAW,CAeX,aAAc,CANd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,QAAS,CAOT,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CANX,UASF,CAIA,0BACE,QACF,CACA,uEAEE,sBACF,CACA,qCACE,eACF,CAEA,MACE,kBACF,CACA,MACE,YACF,CACA,eACE,sBACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,yBACE,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACF,CACA,yBACE,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACF,CACA,yBACE,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACF,CACA,0BACE,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACF,CACA,0BACE,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,C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IE,sCAAuC,CACvC,yCAA0C,CAF1C,mCAGF,CACA,oDACE,yCACE,YACF,CACA,qHAGE,aACF,CACA,sCACE,iBACF,CACA,6CAGE,kDAAmD,CAKnD,WAAY,CAPZ,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,KAAM,CAON,sDAAyD,CADzD,sBAAwB,CADxB,UAAW,CANX,UASF,CACA,4CACE,wBACF,CACA,sCACE,qEAAsE,CACtE,sEAAuE,CAIvE,oBAAqB,CACrB,kBAAmB,CAFnB,YAAa,CAFb,WAAY,CAKZ,0BAA2B,CAJ3B,2CAA4C,CAK5C,gBACF,CACA,6CACE,sBACF,CACA,iEAME,yBAA2B,CAI3B,qCAAsC,CAPtC,oCAAqC,CADrC,uBAAyB,CAUzB,aAAc,CAJd,wCAAyC,CACzC,4CAA6C,CAJ7C,WAAY,CAMZ,gBAAiB,CAPjB,iBAAkB,CAGlB,wBAA0B,CAN1B,SAYF,CACA,oDACE,iBAAkB,CAElB,OAAQ,CADR,KAEF,CACA,uDACE,kBACF,CACA,uDACE,iBACF,CACF,CACA,4DAEE,YACF,CACA,yBACE,yBACE,kBACF,CACF,CACA,qDACE,mCACE,kBACF,CACF,CACA,0DAEE,YACF,CACA,yBACE,wBACE,kBACF,CACF,CACA,qDACE,kCACE,kBACF,CACF,CACA,4DAEE,YACF,CACA,yBACE,yBACE,kBACF,CACF,CACA,qDACE,mCACE,kBACF,CACF,CACA,0DAEE,YACF,CACA,0BACE,wBACE,kBACF,CACF,CACA,sDACE,kCACE,kBACF,CACF,CACA,4DAEE,YACF,CACA,0BACE,yBACE,kBACF,CACF,CACA,sDACE,mCACE,kBACF,CACF,CACA,8FAEE,iBACF,CACA,6CACE,gBACF,CACA,wCACE,eACF,CACA,4JAIE,iBACF,CAKA,iHAGE,WAAY,CADZ,UAEF,CACA,oDACE,iBACF,CACA,oCACE,iBACF,CACA,kCACE,gBACF,CACA,4FAEE,iBACF,CACA,wFAGE,WAAY,CACZ,gBAAiB,CAFjB,UAGF,CACA,4CACE,gBACF,CACA,uCACE,eACF,CACA,wJAIE,iBACF,CACA,yCAEE,WAAY,CACZ,gBAAiB,CAFjB,UAGF,CACA,sDACE,eACF,CACA,qEAGE,WAAY,CADZ,UAEF,CACA,mDACE,iBACF,CACA,mCACE,iBACF,CACA,iCACE,gBACF,CACA,oCACE,mBACF,CAEA,MACE,oBAAqB,CACrB,qCAAsC,CACtC,+BAAgC,CAChC,gCAAiC,CACjC,yBACF,CACA,KAGE,wBAAyB,CACzB,2BAA4B,CAC5B,kBAAmB,CACnB,+CAAmD,CACnD,0CAA2C,CAC3C,2BAA4B,CAC5B,qCAAsC,CACtC,sCAAuC,CACvC,uCAAwC,CACxC,gCAAiC,CACjC,qDAAyD,CACzD,8BAA+B,CAC/B,4BACF,CACA,IAIE,2BAA4B,CAC5B,kBAAmB,CACnB,gDAAoD,CACpD,2BAA4B,CAC5B,qCAAsC,CACtC,sCAAuC,CACvC,uCAAwC,CACxC,qCAAsC,CACtC,gCAAiC,CACjC,sDACF,CACA,kCAGE,gDAAiD,CACjD,qDAAsD,CACtD,iDAAkD,CAClD,8CACF,CACA,cACE,YACF,CACA,KACE,iBAAkB,CAClB,YACF,CACA,OACE,oDACF,CACA,gDAGE,0DACF,CACA,mDAGE,4DACF,CACA,6CAGE,wBACF,CACA,sDAGE,8DACF,CACA,sDAGE,QAAS,CACT,0BACF,CACA,sDAGE,OAAQ,CACR,0BACF,CACA,mBAEE,QAAS,CADT,OAAQ,CAER,2CACF,CACA,sBAUE,kBAAmB,CARnB,6DAA+D,CAI/D,yCAA0C,CAD1C,mCAAoC,CASpC,8BAA+B,CAL/B,YAAa,CALb,yBAA0B,CAO1B,sBAAuB,CACvB,eAAgB,CALhB,iBAAkB,CAClB,uBAA0B,CAL1B,wBAAyB,CAUzB,SAEF,CACA,SAEE,QAAS,CADT,iBAAkB,CAElB,OAAQ,CACR,wDAA2D,CAC3D,cACF,CACA,WAEE,SAAU,CADV,2DAEF,CACA,eACE,yCAA0C,CAE1C,gCAAiC,CADjC,+BAEF,CACA,aACE,YAAa,CAEb,mBAAoB,CACpB,iBAAkB,CAFlB,iBAGF,CACA,eACE,SACF,CACA,gCAEE,SAAU,CADV,0DAEF,CACA,kCAEE,SAAU,CADV,wDAEF,CACA,yBAEE,mBAAoB,CADpB,kBAEF,CACA,2BACE,SAAU,CACV,0CACF,CACA,wCACE,qBACF,CACA,wCACE,oBACF,CACA,wCACE,qBACF,CACA,wCACE,oBACF,CACA,wCACE,qBACF,CACA,qCAEE,QAAS,CAET,gDAAqD,CADrD,+BAEF,CACA,iBACE,WAAY,CAEZ,6BAA8B,CAD9B,kBAEF,CACA,mBACE,wCAA4C,CAC5C,8BACF,CACA,qBACE,kBACF,CACA,oBAGE,qBAAsB,CADtB,eAAgB,CADhB,QAGF,CACA,sBACE,yCAA6C,CAC7C,2BACF,CACA,wBACE,eACF,CACA,qCAGE,gCAAiC,CACjC,+CAAoD,CAFpD,OAGF,CACA,kBAEE,iBAAkB,CADlB,UAEF,CACA,oBACE,wCAA8C,CAC9C,6BACF,CACA,sBACE,iBACF,CACA,mBAGE,0BAA2B,CAF3B,SAAU,CACV,gBAEF,CACA,qBACE,yCAA6C,CAC7C,4BACF,CACA,uBACE,gBACF,CACA,oBAIE,WAAY,CAHZ,MAAQ,CACR,KAAO,CACP,UAEF,CACA,sBACE,iBACF,CACA,kCAGE,WAAY,CAFZ,QAAS,CAGT,kBAAmB,CAFnB,gDAAqD,CAGrD,oCAAsC,CACtC,8BACF,CACA,mCACE,SAAU,CAGV,gBAAiB,CAFjB,+CAAoD,CACpD,OAAQ,CAER,oCAAsC,CACtC,4BACF,CACA,mCACE,QAAS,CACT,gDAAqD,CAErD,eAAgB,CADhB,QAAS,CAET,mCAAqC,CACrC,2BACF,CACA,mCAIE,iBAAkB,CAFlB,+CAAoD,CADpD,UAAW,CAEX,OAAQ,CAER,mCAAqC,CACrC,6BACF,CACA,WAEE,uDAAyD,CADzD,yCAA0C,CAE1C,mCACF,CACA,aAEE,yBAA2B,CAD3B,eAEF,CACA,0BACE,SACF,CACA,0CAGE,wBACF,CACA,iDACE,YACF,CACA,cAEE,qCAAsC,CADtC,UAEF,CACA,gBAEE,kCAAmC,CADnC,UAEF,CACA,kBACE,wCACF,CACA,0BACE,wCACF,CACA,gBACE,oBACF,CACA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CACA,gBAIE,mBAAoB,CADpB,qBAAsB,CAFtB,oDAAqD,CAIrD,aAAc,CAEd,oCAAqC,CALrC,iBAAkB,CAIlB,mCAEF,CACA,iBAEE,YAAa,CACb,qBAAsB,CAFtB,iBAGF,CACA,8CAGE,aACF,CACA,gBACE,yCAA0C,CAC1C,4CACF,CACA,gBACE,yCAA0C,CAC1C,4CAA6C,CAC7C,kBACF,CACA,cACE,uCAAwC,CACxC,0CAA2C,CAC3C,8CACF,CACA,gBAQE,oDAAqD,CAPrD,qBAAsB,CAEtB,YAAa,CACb,qBAAsB,CAGtB,4CAA6C,CAD7C,gDAAiD,CAIjD,8CAA+C,CAD/C,6FAA8F,CAJ9F,iBAAkB,CAHlB,qBASF,CACA,mBACE,aAAc,CAEd,WAAY,CADZ,cAAe,CAEf,UACF,CACA,0CAEE,aACF,CACA,qBACE,8CAA+C,CAE/C,iDAAkD,CADlD,6CAEF,CACA,qBACE,8CAA+C,CAE/C,iDAAkD,CADlD,6CAEF,CACA,cACE,eACF,CACA,cAGE,qBAAsB,CADtB,kBAAmB,CADnB,gBAGF,CACA,8BAEE,gEAAkE,CADlE,uCAEF,CACA,+BACE,sBACF,CACA,kBAEE,mBAAoB,CADpB,0BAEF,CACA,kCAEE,8CAA+C,CAD/C,2CAEF,CACA,mCACE,oBACF,CACA,4CACE,SACF,CAUA,8KACE,YACF,CACA,4BACE,wCACF,CACA,yBACE,qCACF,CACA,0BACE,oBAAqB,CACrB,WAAY,CACZ,qBACF,CACA,8BAGE,sDAAuD,CAGvD,iBAAkB,CALlB,oBAAqB,CAGrB,kDAAmD,CAFnD,iBAAkB,CAGlB,qBAEF,CACA,sCACE,GACE,+BACF,CACA,GACE,uBACF,CACF,CACA,mCACE,GACE,gCACF,CACA,GACE,uBACF,CACF,CACA,0FAIE,eACF,CACA,wCAEE,iBACF,CACA,qBACE,cACF,CACA,qBACE,cACF,CACA,oBACE,qGACF,CACA,gCACE,6DACF,CACA,oCACE,6DAA8D,CAC9D,8DACF,CACA,+BACE,gEACF,CACA,mCACE,gEAAiE,CACjE,iEACF,CACA,0BACE,iBACF,CACA,0BACE,cACF,CACA,uBACE,iDACF,CACA,mHAGE,uDACF,CACA,uCAEE,2PAA4P,CAD5P,oEAEF,CACA,sCACE,wEACF,CACA,oDACE,oIACF,CACA,yEACE,gTACF,CACA,uGACE,2BACF,CACA,mBACE,mDACF,CACA,uGAGE,wDACF,CACA,mCAEE,wPAA4P,CAD5P,qEAEF,CACA,kCACE,yEACF,CACA,gDAIE,8SAAoT,CAHpT,oIACF,CAIA,8EACE,4BACF,CACA,2CACE,cACF,CACA,2HAIE,8CAA+C,CAC/C,iBAAkB,CAHlB,UAAW,CACX,iBAGF,CACA,6DAIE,QAAW,CAFX,WAAY,CACZ,QAAS,CAFT,UAIF,CACA,8DAIE,WAAY,CAFZ,UAAW,CACX,SAAU,CAFV,SAIF,CACA,mCAEE,UAAW,CADX,SAEF,CACA,uCACE,gBACF,CACA,+CACE,mDACF,CACA,gDACE,wDACF,CACA,gDACE,uDACF,CACA,wCACE,GACE,WACF,CACA,IACE,UACF,CACA,IACE,UACF,CACF,CACA,sFAIE,eACF,CACA,sCAEE,iBACF,CACA,oBACE,cACF,CACA,yBACE,iBACF,CACA,yBACE,cACF,CACA,mBACE,8GACF,CACA,0CAEE,oDACF,CACA,sBACE,gDACF,CACA,gHAGE,gBACF,CACA,uNAGE,6BACF,CACA,uNAGE,0BACF,CACA,yOAGE,6BAA8B,CAC9B,0BACF,CACA,uDACE,eACF,CACA,kBACE,kDACF,CACA,oGAGE,iBACF,CACA,2MAGE,8BACF,CACA,2MAGE,2BACF,CACA,6NAGE,8BAA+B,CAC/B,2BACF,CACA,mDACE,wDACF,CACA,0CACE,cACF,CACA,kCAEE,UAAW,CADX,SAEF,CACA,sCACE,gBACF,CACA,8CACE,kDACF,CACA,+CACE,uDACF,CACA,+CACE,sDACF,CACA,uCACE,GACE,uBACF,CACA,IACE,0BACF,CACA,IACE,uBACF,CACF,CAEA,MACE,wCAAyC,CACzC,kCAAmC,CACnC,4CAKF,CACA,KACE,2BAA4B,CAC5B,8BAA+B,CAC/B,6CAA8C,CAI9C,wCAAyC,CACzC,2CAA4C,CAC5C,yCAA0C,CAC1C,oCAAqC,CACrC,uCAAwC,CACxC,yCAA0C,CAC1C,sCAAuC,CACvC,8CAA+C,CAC/C,6CAA8C,CAC9C,uCAAwC,CACxC,iDAAkD,CAClD,0DAA8D,CAC9D,wCAAyC,CACzC,iDAAkD,CAClD,gDAAiD,CACjD,6BAA8B,CAC9B,wCACF,CACA,qBAEE,gEAAoE,CACpE,wCAAyC,CACzC,qEAAsE,CACtE,oEAAqE,CACrE,gDAAiD,CACjD,wDACF,CACA,IACE,2BAA4B,CAC5B,8BAA+B,CAC/B,2CAA4C,CAC5C,0CAA2C,CAC3C,oCAAqC,CACrC,uCAAwC,CACxC,yCAA0C,CAC1C,qDAAsD,CACtD,6CAA8C,CAC9C,sCAAuC,CACvC,gDAAiD,CACjD,wCAAyC,CACzC,oDACF,CACA,kCAGE,0EAA2E,CAC3E,8DAA+D,CAC/D,6CAA8C,CAC9C,2DAA4D,CAC5D,mDAAoD,CACpD,+DAAgE,CAChE,kDACF,CACA,YAEE,wCAAyC,CAKzC,QAAS,CAFT,wCAAyC,CAFzC,WAAY,CACZ,sCAAuC,CAEvC,yCAA0C,CAL1C,uBAOF,CACA,mBAGE,kDAAmD,CAKnD,WAAY,CAPZ,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,KAAM,CAON,sDAAyD,CADzD,sBAAwB,CADxB,UAAW,CANX,UASF,CACA,iFACE,kCAEE,4EAA6E,CACrE,oEAAqE,CAF7E,2FAGF,CACF,CAIA,+DACE,sBACF,CACA,2BAIE,WAAY,CAGZ,0BAA2B,CAJ3B,WAAY,CAEZ,2HAA4H,CAC5H,+HAAgI,CAJhI,iBAAkB,CADlB,QAOF,CACA,oDACE,QACF,CACA,6BAEE,aAAc,CACd,eAAgB,CAChB,iBAAkB,CAHlB,UAIF,CACA,qBAGE,uDAAwD,CAOxD,2CAA4C,CAN5C,yDAA0D,CAG1D,8CAA+C,CAL/C,aAAc,CAMd,iDAAkD,CAFlD,2CAA4C,CAG5C,qDAAsD,CAJtD,6CAA8C,CAJ9C,UAUF,CACA,kCACE,qDACF,CACA,mBACE,mBAAoB,CAEpB,2DAA6D,CAD7D,aAEF,CACA,wBAGE,gCAAiC,CAGjC,qBAAsB,CAFtB,WAAY,CAFZ,aAAc,CAKd,iBAAkB,CAFlB,kBAAmB,CAJnB,UAOF,CACA,yEACE,YACF,CACA,uBAEE,uBAA2B,CAC3B,2BAA4B,CAF5B,qBAAsB,CAQtB,2DAA4D,CAL5D,oBAAqB,CAGrB,6CAA8C,CAC9C,iBAAkB,CAHlB,qBAAsB,CACtB,kBAIF,CACA,+BACE,uBACE,uDACF,CACF,CACA,2BAIE,2DAA4D,CAH5D,aAAc,CAEd,WAAY,CADZ,UAGF,CACA,kBAEE,gCAAiC,CAIjC,wBAAyB,CAEzB,oDAAqD,CACrD,4DAA6D,CAN7D,YAAa,CAEb,qBAAsB,CADtB,cAAe,CAGf,wCAAyC,CANzC,aAAc,CASd,qCAAsC,CACtC,uCACF,CACA,+BACE,kBACE,kDACF,CACF,CACA,wBAEE,uBAA2B,CAC3B,2BAA4B,CAF5B,qBAGF,CACA,4BAKE,qBAAsB,CAHtB,WAAY,CACZ,gBAAiB,CACjB,sBAAuB,CAEvB,uBAA0B,CAL1B,UAMF,CACA,8BAGE,iBAAkB,CAClB,qBAAsB,CACtB,cAAe,CAJf,aAAc,CACd,iBAIF,CACA,yEAGE,UAAW,CACX,QAAS,CAFT,iBAAkB,CAGlB,OACF,CACA,oCACE,uBACF,CACA,qCACE,wBACF,CACA,6DACE,YACF,CACA,cACE,2DACF,CACA,8CACE,gBACF,CACA,6CACE,iBACF,CAIA,kHACE,eACF,CACA,sBAEE,iBAAkB,CADlB,cAEF,CACA,6BAIE,8DAAmB,CAAnB,kBAAmB,CAFnB,yGAA0G,CAD1G,WAIF,CACA,sEACE,yGACF,CACA,4BACE,cACF,CACA,mDACE,gBACF,CACA,mCAKE,kBAAmB,CACnB,qBAAsB,CACtB,iCAA0C,CAH1C,WAAY,CAHZ,SAAU,CACV,OAAQ,CACR,UAKF,CACA,mFAIE,eAAgB,CADhB,UAAW,CAEX,gBAAiB,CACjB,eAAgB,CAJhB,UAKF,CACA,yDAEE,qBAAsB,CACtB,aAAc,CAId,wDAA2D,CAE3D,gBAAiB,CALjB,cAAe,CAEf,eAAgB,CADhB,iBAAkB,CAGlB,uDAEF,CACA,+BACE,yDAGE,kEAAqE,CADrE,iEAEF,CACF,CACA,wKAME,UAAW,CAFX,iBAAkB,CAClB,SAAU,CAEV,SACF,CACA,gBACE,oDACF,CACA,4BAEE,qEAAsE,CADtE,mBAEF,CACA,+BAEE,6CAA8C,CAC9C,gBAAiB,CACjB,sBAAuB,CAHvB,4CAIF,CACA,kDACE,iBACF,CACA,4DACE,iDAAkD,CAClD,yGACF,CACA,6CACE,wBAAyB,CACzB,yBACF,CACA,qBAEE,iBAAkB,CADlB,cAEF,CACA,kCAKE,6CAA8C,CAE9C,uDAAwD,CADxD,kBAAmB,CAFnB,WAAY,CAHZ,UAAW,CACX,QAAS,CACT,UAKF,CACA,iFAIE,iDAAkD,CADlD,UAAW,CAEX,gBAAiB,CACjB,eAAgB,CAJhB,UAKF,CACA,uDAEE,mCAAoC,CAQpC,iBAAkB,CAPlB,qBAAsB,CACtB,aAAc,CAId,yDAA4D,CAG5D,gBAAiB,CANjB,cAAe,CAEf,eAAgB,CADhB,iBAAkB,CAGlB,wDAGF,CACA,+BACE,uDAGE,mEAAsE,CADtE,iEAEF,CACF,CACA,2FAEE,oBACF,CACA,4NAIE,uCACF,CACA,oKAgBE,iDAAkD,CAClD,+CAAgD,CAThD,kBAAmB,CAMnB,WAAY,CARZ,iBAAkB,CAClB,YAAa,CAFb,WAAY,CAIZ,sBAAuB,CAEvB,QAAS,CADT,iBAAkB,CAElB,OAAQ,CACR,yCAA4C,CAT5C,UAAW,CAWX,SAGF,CACA,4LAIE,6BAA8B,CAC9B,cAAe,CAEf,WAAY,CAEZ,MAAO,CADP,gBAAiB,CAEjB,eAAgB,CAJhB,UAKF,CAeA,WACE,wBAA2B,CAG3B,iBAAkB,CADlB,eAAgB,CADhB,4rEAGF,CAEA,MACE,4BAKF,CACA,MAEE,aAAc,CACd,gBAAiB,CACjB,iBAAkB,CAHlB,iBAAkB,CAIlB,SACF,CACA,QAUE,aAAc,CAJd,eAAgB,CALhB,gBAAiB,CACjB,iBAAkB,CAElB,eAAgB,CAChB,aAAc,CAEd,SAAU,CAJV,iBAAkB,CAMlB,SAEF,CACA,iCACE,qBACF,CACA,gBAQE,kBAAuB,CAHvB,YAAa,CAFb,WAAY,CAFZ,iBAAkB,CAKlB,6BAA8B,CAC9B,mFAAqF,CALrF,UAAW,CAEX,SAKF,CACA,wEAGE,uBACF,CACA,mBACE,kBACF,CACA,iBACE,kBACF,CACA,cAME,aAAc,CALd,aAAc,CAEd,WAAY,CACZ,iBAAkB,CAClB,6BAA8B,CAH9B,UAKF,CACA,8BACE,iBACF,CAEA,oDAEE,WACF,CACA,mCACE,sBAAuB,CACvB,oCACF,CACA,sCAEE,kCAAmC,CAC3B,0BAA2B,CAFnC,uBAGF,CAEA,2CACE,kBACF,CACA,2BACE,2BACF,CACA,WACE,kBACF,CACA,wDAEE,2BACF,CAEA,iCAIE,uBAAwB,CAHxB,aAAc,CACd,oBAIF,CACA,oDACE,YACF,CACA,+CACE,6BACF,CACA,mDACE,4BACF,CACA,iDACE,4BACF,CACA,kDACE,qBACF,CACA,gEACE,sBACF,CACA,wDACE,UAAW,CACX,aAAc,CACd,UACF,CACA,+DACE,+BAAgC,CAChC,uBACF,CACA,6FACE,wDACF,CACA,0EACE,WAAY,CACZ,cAAe,CACf,yCACF,CACA,2FACE,uDACF,CACA,wEAGE,0CAA2C,CAD3C,aAAc,CADd,UAGF,CAGA,sLAcE,WAAY,CAHZ,MAAO,CAIP,mBAAoB,CALpB,iBAAkB,CAElB,KAAM,CACN,UAAW,CAGX,UACF,CACA,gCACE,0BACF,CACA,qCACE,qEACF,CACA,sCACE,oEACF,CACA,oCACE,mEACF,CACA,uCACE,qEACF,CACA,uBAaE,wEAA6B,CAD7B,iBAAkB,CAClB,gCAA6B,CAH7B,qBAAsB,CARtB,WAAY,CAEZ,QAAS,CAET,iBAAkB,CAClB,gBAAiB,CAJjB,iBAAkB,CAElB,OAAQ,CAIR,oBAAqB,CARrB,UAAW,CAOX,UAMF,CACA,+HAEE,kDACF,CACA,6BACE,6BACF,CACA,6BACE,6BACF,CACA,iCACE,GACE,sBACF,CACA,GACE,uBACF,CACF,CAEA,8BACE,kCAAmC,CACnC,uBACF,CACA,sDACE,UAAW,CAEX,MAAO,CAEP,mBAAoB,CAHpB,iBAAkB,CAElB,KAEF,CACA,wEACE,UAAW,CAC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CACE,qCAAuC,CACvC,+BACF,CAEA,gBACE,oBACF,CACA,oBAEE,WAAY,CADZ,cAEF,CACA,wBACE,0BACF,CACA,qBACE,+BACF,CAEA,iBACE,oBACF,CACA,qBAEE,WAAY,CADZ,cAEF,CACA,sBACE,0BACF,CACA,sBACE,+BACF,CAEA,6CASE,0CAA2C,CAR3C,uFAAqG,CACrG,+EAA6F,CAK7F,6BAA8B,CAC9B,qBAAsB,CAHtB,0BAA2B,CAC3B,kBAAmB,CAHnB,2BAA4B,CAC5B,mBAMF,CACA,sBACE,0CACF,CACA,uBACE,2CACF,CAEA,gCACE,GACE,SACF,CACA,IACE,UACF,CACA,GACE,SACF,CACF,CACA,gCACE,GACE,6BAA8B,CAC9B,qBACF,CACA,GACE,+BAAgC,CAChC,uBACF,CACF,CACA,iCACE,GACE,kBACF,CACA,IACE,kBACF,CACA,IACE,qBACF,CACA,GACE,kBACF,CACF,CACA,MACE,qBAAsB,CACtB,sCACF,CACA,MACE,wBAAyB,CACzB,4CACF,CAEA,MACE,qCAAsC,CACtC,iCAAkC,CAClC,uCAAwC,CACxC,+BAAgC,CAChC,sCAAuC,CACvC,kCAAmC,CACnC,mCAAoC,CACpC,sCAAuC,CACvC,yCAA0C,CAC1C,sCAAuC,CACvC,sCAAuC,CACvC,kCAAmC,CACnC,mCAAoC,CACpC,0CAA2C,CAC3C,8CAA+C,CAC/C,mCAAoC,CACpC,0CAA2C,CAC3C,2CAA4C,CAC5C,mDAAoD,CACpD,yDAA0D,CAC1D,qCAAsC,CACtC,qCAAsC,CACtC,iDAAqD,CACrD,iDAAqD,CACrD,2CACF,CACA,uBAEE,wCAAyC,CACzC,wCAAyC,CACzC,sDAA0D,CAC1D,qCAAsC,CACtC,6DACF,CACA,cAGE,YAAa,CACb,qBAAsB,CAHtB,eAAgB,CAChB,UAGF,CACA,wGAGE,iBACF,CACA,0BACE,gDACF,CACA,iCACE,WACF,CACA,6CACE,wCACF,CACA,0BACE,gDACF,CACA,kCACE,yCACF,CACA,uGAGE,WACF,CACA,kIAGE,iBACF,CACA,sBAGE,eAAgB,CADhB,cAAe,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CA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,gBACE,wBACF,CACA,oBACE,4BACF,CACA,4BACE,oCACF,CACA,uBACE,+BACF,CACA,+BACE,uCACF,CACA,4BACE,oCACF,CACA,wBACE,gCACF,CACA,0BACE,kCACF,CACA,+BACE,uCACF,CACA,8BACE,sCACF,CACA,8BACE,sCACF,CACA,yBACE,iCACF,CACA,uBACE,+BACF,CACA,qBACE,6BACF,CACA,sBACE,8BACF,CACA,uBACE,+BACF,CACA,0BACE,kCACF,CACA,wBACE,gCACF,CACA,sBACE,8BACF,CACA,6BACE,qCACF,CACA,4BACE,oCACF,CACA,uBACE,+BACF,CACA,sBACE,8BACF,CACA,wBACE,gCACF,CACA,sBACE,8BACF,CACA,oBACE,4BACF,CACA,qBACE,6BACF,CACA,uBACE,+BACF,CACA,qBACE,6BACF,CACA,mBACE,2BACF,CACA,oBACE,4BACF,CACA,iBACE,yBACF,CACA,mBACE,2BACF,CACA,kBACE,0BACF,CACA,oBACE,4BACF,CACA,YACE,oBACF,CACA,aACE,qBACF,CACA,YACE,oBACF,CACA,uBACE,+BACF,CACA,uBACE,+BACF,CACA,oBACE,4BACF,CACA,YACE,mBACF,CACA,iBACE,wBACF,CAIA,yCAFE,yBAKF,CAHA,uBACE,wBAEF,CACA,gBACE,uBACF,CAIA,wCAFE,0BAKF,CAHA,qBACE,uBAEF,CACA,WACE,kBACF,CACA,gBACE,uBACF,CAIA,uCAFE,wBAKF,CAHA,sBACE,uBAEF,CACA,eACE,sBACF,CAIA,sCAFE,yBAKF,CAHA,oBACE,sBAEF,CACA,YACE,oBACF,CACA,WACE,oBACF,CACA,SACE,8CACF,CACA,cACE,sDACF,CACA,aACE,kDACF,CACA,kBACE,0DACF,CACA,gBACE,qDACF,CACA,qBACE,6DACF,CACA,cACE,mDACF,CACA,mBACE,2DACF,CACA,eACE,oDACF,CACA,oBACE,4DACF,CACA,kBAEE,qDAAuD,CADvD,kDAEF,CACA,uBAEE,6DAAiE,CADjE,0DAEF,CACA,oBACE,mDAAqD,CACrD,oDACF,CACA,yBACE,2DAA+D,CAC/D,4DACF,CACA,QACE,4CACF,CACA,aACE,oDACF,CACA,YACE,gDACF,CACA,iBACE,wDACF,CACA,eACE,mDACF,CACA,oBACE,2DACF,CACA,aACE,iDACF,CACA,kBACE,yDACF,CACA,cACE,kDACF,CACA,mBACE,0DACF,CACA,iBAEE,mDAAqD,CADrD,gDAEF,CACA,sBAEE,2DAA+D,CAD/D,wDAEF,CACA,mBACE,iDAAmD,CACnD,kDACF,CACA,wBACE,yDAA6D,CAC7D,0DACF,CACA,qBACE,gDACF,CACA,mBACE,yDACF,CACA,uBACE,yDACF","file":"../../presentationeditor/mobile/css/framework7-rtl.css","sourcesContent":["/**\n * Framework7 8.3.2\n * Full featured mobile HTML framework for building iOS & Android apps\n * https://framework7.io/\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 27, 2024\n */\n\n/*====================\n Core\n ==================== */\n:root {\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n --f7-safe-area-top: 0px;\n --f7-safe-area-bottom: 0px;\n --f7-safe-area-outer-left: 0px;\n --f7-safe-area-outer-right: 0px;\n --f7-device-pixel-ratio: 1;\n}\n@supports (left: env(safe-area-inset-left)) {\n :root {\n --f7-safe-area-top: env(safe-area-inset-top);\n --f7-safe-area-bottom: env(safe-area-inset-bottom);\n }\n :root .ios-left-edge,\n :root .ios-edges,\n :root .safe-area-left,\n :root .safe-areas,\n :root .popup,\n :root .sheet-modal,\n :root .panel-left {\n --f7-safe-area-left: env(safe-area-inset-left);\n --f7-safe-area-outer-left: env(safe-area-inset-left);\n }\n :root .ios-right-edge,\n :root .ios-edges,\n :root .safe-area-right,\n :root .safe-areas,\n :root .popup,\n :root .sheet-modal,\n :root .panel-right {\n --f7-safe-area-right: env(safe-area-inset-right);\n --f7-safe-area-outer-right: env(safe-area-inset-right);\n }\n :root .no-safe-areas,\n :root .no-safe-area-left,\n :root .no-ios-edges,\n :root .no-ios-left-edge {\n --f7-safe-area-left: 0px;\n --f7-safe-area-outer-left: 0px;\n }\n :root .no-safe-areas,\n :root .no-safe-area-right,\n :root .no-ios-edges,\n :root .no-ios-right-edge {\n --f7-safe-area-right: 0px;\n --f7-safe-area-outer-right: 0px;\n }\n}\n@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 2dppx) {\n :root {\n --f7-device-pixel-ratio: 2;\n }\n}\n@media (-webkit-min-device-pixel-ratio: 3), (min-resolution: 3dppx) {\n :root {\n --f7-device-pixel-ratio: 3;\n }\n}\n/*====================\n Fonts & Bars\n ==================== */\n:root {\n --f7-font-size: 14px;\n --f7-bars-translucent-opacity: 0.8;\n --f7-bars-translucent-blur: 20px;\n}\n.ios {\n --f7-font-family: -apple-system, SF Pro Text, SF UI Text, system-ui, Helvetica Neue, Helvetica, Arial, sans-serif;\n --f7-line-height: 1.4;\n /*\n --f7-bars-link-color: var(--f7-theme-color);\n */\n --f7-bars-text-color: #000;\n --f7-text-color: #000;\n --f7-bars-bg-color: #f7f7f8;\n --f7-bars-bg-color-rgb: 247, 247, 248;\n --f7-bars-border-color: rgba(0, 0, 0, 0.25);\n}\n.ios .dark,\n.ios.dark {\n --f7-bars-text-color: #fff;\n --f7-text-color: #fff;\n --f7-bars-bg-color: #121212;\n --f7-bars-bg-color-rgb: 22, 22, 22;\n --f7-bars-border-color: rgba(255, 255, 255, 0.16);\n}\n.md {\n --f7-font-family: Roboto, system-ui, Noto, Helvetica, Arial, sans-serif;\n --f7-line-height: 1.5;\n --f7-bars-border-color: transparent;\n --f7-text-color: #212121;\n}\n.md .dark,\n.md.dark {\n --f7-text-color: rgba(255, 255, 255, 0.87);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-bars-link-color: var(--f7-md-on-surface);\n --f7-bars-bg-color: var(--f7-md-surface-2);\n --f7-bars-bg-color-rgb: var(--f7-md-surface-2-rgb);\n}\n/*====================\n Color Themes\n ==================== */\n.text-color-primary {\n --f7-theme-color-text-color: var(--f7-theme-color);\n}\n.bg-color-primary {\n --f7-theme-color-bg-color: var(--f7-theme-color);\n}\n.border-color-primary {\n --f7-theme-color-border-color: var(--f7-theme-color);\n}\n.ripple-color-primary {\n --f7-theme-color-ripple-color: rgba(var(--f7-theme-color-rgb), 0.3);\n}\n@font-face {\n font-family: 'framework7-core-icons';\n src: url('data:application/font-woff;charset=utf-8;base64, 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') format('woff');\n font-weight: 400;\n font-style: normal;\n}\nhtml {\n overscroll-behavior: none;\n}\nhtml {\n direction: rtl;\n}\nhtml,\nbody,\n.framework7-root {\n position: relative;\n height: 100%;\n width: 100%;\n overflow-x: hidden;\n}\nbody {\n margin: 0;\n padding: 0;\n width: 100%;\n background: #fff;\n overflow: hidden;\n overflow-y: scroll;\n -webkit-text-size-adjust: 100%;\n -webkit-font-smoothing: antialiased;\n font-family: var(--f7-font-family);\n font-size: var(--f7-font-size);\n line-height: var(--f7-line-height);\n color: var(--f7-text-color);\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\nbody::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\nbody::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\nbody::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.dark body,\nbody.dark {\n background: #000;\n}\n.dark {\n color: var(--f7-text-color);\n}\n.framework7-root {\n overflow: hidden;\n box-sizing: border-box;\n}\n.framework7-initializing *,\n.framework7-initializing *:before,\n.framework7-initializing *:after {\n transition-duration: 0ms !important;\n}\n.device-ios,\n.device-android {\n cursor: pointer;\n}\n.device-ios {\n touch-action: manipulation;\n}\n@media (width: 1024px) and (height: 691px) and (orientation: landscape) {\n html,\n body,\n .framework7-root {\n height: 671px;\n }\n}\n@media (width: 1024px) and (height: 692px) and (orientation: landscape) {\n html,\n body,\n .framework7-root {\n height: 672px;\n }\n}\n* {\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n -webkit-touch-callout: none;\n}\na,\ninput,\ntextarea,\nselect {\n outline: 0;\n}\na {\n cursor: pointer;\n text-decoration: none;\n color: var(--f7-theme-color);\n}\n.link,\n.item-link {\n cursor: pointer;\n}\np {\n margin: 1em 0;\n}\n.disabled {\n opacity: 0.55 !important;\n pointer-events: none !important;\n}\nhtml.device-full-viewport,\nhtml.device-full-viewport body {\n height: 100vh;\n}\n.ios .md-only,\n.ios .if-md,\n.ios .if-not-ios,\n.ios .not-ios {\n display: none !important;\n}\n@media (width: 1024px) and (height: 691px) and (orientation: landscape) {\n .ios,\n .ios body,\n .ios .framework7-root {\n height: 671px;\n }\n}\n@media (width: 1024px) and (height: 692px) and (orientation: landscape) {\n .ios,\n .ios body,\n .ios .framework7-root {\n height: 672px;\n }\n}\n.md .ios-only,\n.md .if-ios,\n.md .if-not-md,\n.md .not-md {\n display: none !important;\n}\n/* === Statusbar === */\n/* === Views === */\n.views,\n.view {\n position: relative;\n height: 100%;\n z-index: 5000;\n overflow: hidden;\n box-sizing: border-box;\n}\n.framework7-root > .view,\n.framework7-root > .views {\n height: 100%;\n}\n.view-resize-handler {\n width: 6px;\n height: 100%;\n position: absolute;\n left: var(--f7-page-master-width);\n margin-left: -3px;\n top: 0;\n cursor: col-resize;\n z-index: 1000;\n display: none;\n}\n.view-master-detail .view-resize-handler {\n display: block;\n}\n/* === Pages === */\n:root {\n --f7-page-master-width: 320px;\n --f7-page-master-border-color: rgba(0, 0, 0, 0.1);\n --f7-page-master-border-width: 1px;\n --f7-page-swipeback-transition-duration: 300ms;\n --f7-page-parallax-transition-duration: 500ms;\n --f7-page-cover-transition-duration: 450ms;\n --f7-page-dive-transition-duration: 500ms;\n --f7-page-fade-transition-duration: 500ms;\n --f7-page-flip-transition-duration: 700ms;\n --f7-page-push-transition-duration: 500ms;\n /*\n --f7-page-content-extra-padding-top: 0px;\n --f7-page-content-extra-padding-bottom: 0px;\n */\n --f7-page-title-line-height: 1.2;\n --f7-page-title-text-color: inherit;\n --f7-page-title-padding-left: 16px;\n --f7-page-title-padding-right: 16px;\n}\n.ios {\n --f7-page-transition-duration: 400ms;\n --f7-page-title-font-size: 34px;\n --f7-page-title-font-weight: 700;\n --f7-page-title-letter-spacing: -0.03em;\n --f7-page-title-padding-vertical: 6px;\n --f7-page-bg-color: #efeff4;\n}\n.ios .dark,\n.ios.dark {\n --f7-page-bg-color: #000;\n}\n.md {\n --f7-page-transition-duration: 400ms;\n --f7-page-title-font-size: 34px;\n --f7-page-title-font-weight: 500;\n --f7-page-title-letter-spacing: 0;\n --f7-page-title-padding-vertical: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-page-bg-color: var(--f7-md-surface);\n}\n.dark {\n --f7-page-master-border-color: rgba(255, 255, 255, 0.2);\n}\n.pages {\n position: relative;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n.page {\n box-sizing: border-box;\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n transform: none;\n background-color: var(--f7-page-bg-color);\n z-index: 1;\n}\n.page-with-navbar-large-collapsed {\n --f7-navbar-large-collapse-progress: 1;\n}\n.page-previous {\n pointer-events: none;\n}\n.page-content {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n box-sizing: border-box;\n height: 100%;\n position: relative;\n z-index: 1;\n padding-top: calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-toolbar-top-offset, 0px) + var(--f7-page-subnavbar-offset, 0px) + var(--f7-page-searchbar-offset, 0px) + var(--f7-page-content-extra-padding-top, 0px));\n padding-bottom: calc(var(--f7-page-toolbar-bottom-offset, 0px) + var(--f7-safe-area-bottom) + var(--f7-page-content-extra-padding-bottom, 0px));\n}\n.page-transitioning,\n.page-transitioning .page-shadow-effect,\n.page-transitioning .page-opacity-effect {\n transition-duration: var(--f7-page-transition-duration);\n}\n.page-transitioning-swipeback,\n.page-transitioning-swipeback .page-shadow-effect,\n.page-transitioning-swipeback .page-opacity-effect {\n transition-duration: var(--f7-page-swipeback-transition-duration);\n}\n.router-transition-forward .page-next,\n.router-transition-backward .page-next,\n.router-transition-forward .page-current,\n.router-transition-backward .page-current {\n pointer-events: none;\n}\n.page-shadow-effect {\n position: absolute;\n top: 0;\n width: 16px;\n bottom: 0;\n z-index: -1;\n content: '';\n opacity: 0;\n left: 100%;\n background: linear-gradient(to left, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);\n}\n.page-opacity-effect {\n position: absolute;\n left: 0;\n top: 0;\n background: rgba(0, 0, 0, 0.1);\n width: 100%;\n bottom: 0;\n content: '';\n opacity: 0;\n z-index: 10000;\n}\n.ios .page-previous {\n transform: translate3d(20%, 0, 0);\n}\n.ios .page-next {\n transform: translate3d(-100%, 0, 0);\n}\n.ios .page-previous .page-opacity-effect {\n opacity: 1;\n}\n.ios .page-previous:after {\n opacity: 1;\n}\n.ios .page-current .page-shadow-effect {\n opacity: 1;\n}\n.ios .router-transition-forward .page-next {\n animation: ios-page-next-to-current var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .page-next:before {\n position: absolute;\n top: 0;\n width: 16px;\n bottom: 0;\n z-index: -1;\n content: '';\n opacity: 0;\n left: 100%;\n background: linear-gradient(to left, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);\n animation: ios-page-element-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .page-current {\n animation: ios-page-current-to-previous var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .page-current:after {\n position: absolute;\n left: 0;\n top: 0;\n background: rgba(0, 0, 0, 0.1);\n width: 100%;\n bottom: 0;\n content: '';\n opacity: 0;\n z-index: 10000;\n animation: ios-page-element-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-previous {\n animation: ios-page-previous-to-current var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-previous:after {\n position: absolute;\n left: 0;\n top: 0;\n background: rgba(0, 0, 0, 0.1);\n width: 100%;\n bottom: 0;\n content: '';\n opacity: 0;\n z-index: 10000;\n animation: ios-page-element-fade-out var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-current {\n animation: ios-page-current-to-next var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-current:before {\n position: absolute;\n top: 0;\n width: 16px;\n bottom: 0;\n z-index: -1;\n content: '';\n opacity: 0;\n left: 100%;\n background: linear-gradient(to left, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);\n animation: ios-page-element-fade-out var(--f7-page-transition-duration) forwards;\n}\n@keyframes ios-page-next-to-current {\n from {\n transform: translate3d(-100%, 0, 0);\n }\n to {\n transform: translate3d(0%, 0, 0);\n }\n}\n@keyframes ios-page-previous-to-current {\n from {\n transform: translate3d(20%, 0, 0);\n }\n to {\n transform: translate3d(0%, 0, 0);\n }\n}\n@keyframes ios-page-current-to-previous {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(20%, 0, 0);\n }\n}\n@keyframes ios-page-current-to-next {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(-100%, 0, 0);\n }\n}\n@keyframes ios-page-element-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes ios-page-element-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n.md .page-previous {\n transform: translate3d(0, -20px, 0);\n}\n.md .page-next {\n pointer-events: none;\n transform: translate3d(0, 128px, 0);\n opacity: 0;\n}\n.md .page-next.page-next-on-right {\n transform: translate3d(-100%, 0, 0);\n opacity: 1;\n}\n.md .router-transition-forward .page-next {\n opacity: 1;\n animation: md-page-next-to-current var(--f7-page-transition-duration) forwards cubic-bezier(0, 0.8, 0.3, 1);\n}\n.md .router-transition-forward .page-current {\n animation: md-page-current-to-previous var(--f7-page-transition-duration) forwards cubic-bezier(0, 0.8, 0.3, 1);\n}\n.md .router-transition-backward .page-current {\n animation: md-page-current-to-next calc(var(--f7-page-transition-duration) / 4) forwards cubic-bezier(0.8, 0, 1, 0.3), md-page-current-to-next-opacity 0ms calc(var(--f7-page-transition-duration) / 4) forwards;\n}\n.md .router-transition-backward .page-previous {\n animation: md-page-previous-to-current var(--f7-page-transition-duration) forwards;\n}\n@keyframes md-page-next-to-current {\n from {\n transform: translate3d(0, 128px, 0);\n }\n to {\n transform: translate3d(0, 0px, 0);\n }\n}\n@keyframes md-page-current-to-next {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(0, 128px, 0);\n }\n}\n@keyframes md-page-current-to-next-opacity {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes md-page-current-to-previous {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(0, -20px, 0);\n }\n}\n@keyframes md-page-previous-to-current {\n from {\n transform: translate3d(0, -20px, 0);\n }\n to {\n transform: translate3d(0, 0px, 0);\n }\n}\n.view:not(.view-master-detail) .page-master-stacked {\n display: none;\n}\n.view:not(.view-master-detail) .navbar-master-stacked {\n display: none;\n}\n.view-master-detail .page-master,\n.view-master-detail .navbar-master {\n width: var(--f7-page-master-width);\n left: auto;\n right: 0;\n --f7-safe-area-left: 0px;\n --f7-safe-area-outer-left: 0px;\n border-left: var(--f7-page-master-border-width) solid var(--f7-page-master-border-color);\n}\n.view-master-detail .page-master-detail,\n.view-master-detail .navbar-master-detail {\n width: calc(100% - var(--f7-page-master-width));\n --f7-safe-area-right: 0px;\n --f7-safe-area-outer-right: 0px;\n right: var(--f7-page-master-width);\n}\n.view-master-detail .page-master-detail > .navbar-master-detail {\n left: 0;\n right: 0;\n width: 100%;\n}\n.view-master-detail .page-master {\n z-index: 2;\n transform: none;\n pointer-events: auto;\n}\n.view-master-detail .page-master:before,\n.view-master-detail .page-master:after {\n display: none;\n}\n.view-master-detail.router-transition .page-master {\n animation: none;\n}\n.md .router-transition-custom .page-previous,\n.ios .router-transition-custom .page-previous,\n.md .router-transition-custom .page-next,\n.ios .router-transition-custom .page-next {\n opacity: 1;\n transform: none;\n}\n.md .router-transition-custom.view-master-detail .page-master,\n.ios .router-transition-custom.view-master-detail .page-master {\n animation: none;\n}\n.page-title {\n position: relative;\n z-index: 10;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--f7-page-title-text-color);\n letter-spacing: var(--f7-page-title-letter-spacing);\n font-size: var(--f7-page-title-font-size);\n font-weight: var(--f7-page-title-font-weight);\n line-height: var(--f7-page-title-line-height);\n padding-left: calc(var(--f7-page-title-padding-left) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-page-title-padding-right) + var(--f7-safe-area-right));\n padding-top: var(--f7-page-title-padding-vertical);\n padding-bottom: var(--f7-page-title-padding-vertical);\n box-sizing: border-box;\n overflow: hidden;\n width: 100%;\n}\n.router-transition-f7-circle-forward:after,\n.router-transition-f7-circle-backward:after {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n width: 100vmax;\n height: 100vmax;\n margin-left: -50vmax;\n margin-top: -50vmax;\n background: var(--f7-page-bg-color);\n z-index: 100;\n}\n.router-transition-f7-circle-forward .page,\n.router-transition-f7-circle-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-circle-forward:after {\n transform: scale(0);\n border-radius: 50%;\n animation: f7-circle-circle-in 400ms forwards;\n}\n.ios .router-transition-f7-circle-forward .page-next,\n.md .router-transition-f7-circle-forward .page-next {\n opacity: 0;\n transform: scale(0.9);\n animation: f7-circle-next-to-current 300ms forwards;\n animation-delay: 300ms;\n z-index: 150;\n}\n.router-transition-f7-circle-backward:after {\n animation: f7-circle-circle-out 300ms forwards;\n animation-delay: 350ms;\n}\n.ios .router-transition-f7-circle-backward .page-current,\n.md .router-transition-f7-circle-backward .page-current {\n animation: f7-circle-current-to-next 700ms forwards;\n z-index: 150;\n}\n@keyframes f7-circle-circle-in {\n from {\n transform: scale(0);\n border-radius: 50%;\n }\n 50% {\n border-radius: 50%;\n }\n to {\n transform: scale(1);\n border-radius: 0%;\n }\n}\n@keyframes f7-circle-circle-out {\n from {\n transform: scale(1);\n border-radius: 0%;\n }\n 50% {\n border-radius: 50%;\n }\n to {\n transform: scale(0);\n border-radius: 50%;\n }\n}\n@keyframes f7-circle-next-to-current {\n from {\n transform: scale(0.9);\n opacity: 0;\n }\n 40% {\n transform: scale(1.035);\n opacity: 1;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n@keyframes f7-circle-current-to-next {\n from {\n transform: scale(1);\n opacity: 1;\n }\n 34% {\n transform: scale(1.035);\n opacity: 1;\n }\n 57% {\n transform: scale(0.9);\n opacity: 0;\n }\n to {\n transform: scale(0.9);\n opacity: 0;\n }\n}\n.router-transition-f7-cover-v-forward,\n.router-transition-f7-cover-v-backward {\n background: #000;\n perspective: 1200px;\n}\n.router-transition-f7-cover-v-forward .page,\n.router-transition-f7-cover-v-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-cover-v-forward .page-next {\n animation: f7-cover-v-next-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-v-forward .page-current {\n animation: f7-cover-v-current-to-prev var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-v-backward .page-current {\n animation: f7-cover-v-current-to-next var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-v-backward .page-previous {\n animation: f7-cover-v-prev-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n@keyframes f7-cover-v-next-to-current {\n from {\n transform: translateY(100%);\n }\n to {\n transform: translateY(0%);\n }\n}\n@keyframes f7-cover-v-current-to-next {\n from {\n transform: translateY(0%);\n }\n to {\n transform: translateY(100%);\n }\n}\n@keyframes f7-cover-v-current-to-prev {\n from {\n transform: translateZ(0);\n opacity: 1;\n }\n to {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n}\n@keyframes f7-cover-v-prev-to-current {\n from {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n to {\n transform: translateZ(0);\n opacity: 1;\n }\n}\n.router-transition-f7-cover-forward,\n.router-transition-f7-cover-backward {\n background: #000;\n perspective: 1200px;\n}\n.router-transition-f7-cover-forward .page,\n.router-transition-f7-cover-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-cover-forward .page-next {\n animation: f7-cover-next-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-forward .page-current {\n animation: f7-cover-current-to-prev var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-backward .page-current {\n animation: f7-cover-current-to-next var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-backward .page-previous {\n animation: f7-cover-prev-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n@keyframes f7-cover-next-to-current {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n@keyframes f7-cover-current-to-next {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(-100%);\n }\n}\n@keyframes f7-cover-current-to-prev {\n from {\n transform: translateZ(0);\n opacity: 1;\n }\n to {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n}\n@keyframes f7-cover-prev-to-current {\n from {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n to {\n transform: translateZ(0);\n opacity: 1;\n }\n}\n.router-transition-f7-dive-forward,\n.router-transition-f7-dive-backward {\n background: var(--f7-page-bg-color);\n perspective: 1200px;\n}\n.router-transition-f7-dive-forward .page,\n.router-transition-f7-dive-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-dive-forward .page-next {\n animation: f7-dive-next-to-current var(--f7-page-dive-transition-duration) forwards;\n}\n.router-transition-f7-dive-forward .page-current {\n animation: f7-dive-current-to-prev var(--f7-page-dive-transition-duration) forwards;\n}\n.router-transition-f7-dive-backward .page-current {\n animation: f7-dive-current-to-next var(--f7-page-dive-transition-duration) forwards;\n}\n.router-transition-f7-dive-backward .page-previous {\n animation: f7-dive-prev-to-current var(--f7-page-dive-transition-duration) forwards;\n}\n@keyframes f7-dive-next-to-current {\n from {\n opacity: 0;\n transform: translateZ(-150px);\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 1;\n transform: translateZ(0px);\n }\n}\n@keyframes f7-dive-current-to-next {\n from {\n opacity: 1;\n transform: translateZ(0px);\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 0;\n transform: translateZ(-150px);\n }\n}\n@keyframes f7-dive-current-to-prev {\n from {\n transform: translateZ(0px);\n opacity: 1;\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 0;\n transform: translateZ(150px);\n }\n}\n@keyframes f7-dive-prev-to-current {\n from {\n opacity: 0;\n transform: translateZ(150px);\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 1;\n transform: translateZ(0px);\n }\n}\n.router-transition-f7-fade-forward,\n.router-transition-f7-fade-backward {\n background: var(--f7-page-bg-color);\n}\n.router-transition-f7-fade-forward .page,\n.router-transition-f7-fade-backward .page {\n pointer-events: none;\n}\n.ios .router-transition-f7-fade-forward .page-next,\n.md .router-transition-f7-fade-forward .page-next {\n opacity: 0;\n animation: f7-fade-in var(--f7-page-fade-transition-duration) forwards;\n}\n.ios .router-transition-f7-fade-forward .page-current,\n.md .router-transition-f7-fade-forward .page-current {\n animation: f7-fade-out var(--f7-page-fade-transition-duration) forwards;\n}\n.ios .router-transition-f7-fade-backward .page-current,\n.md .router-transition-f7-fade-backward .page-current {\n animation: f7-fade-out var(--f7-page-fade-transition-duration) forwards;\n}\n.ios .router-transition-f7-fade-backward .page-previous,\n.md .router-transition-f7-fade-backward .page-previous {\n animation: f7-fade-in var(--f7-page-fade-transition-duration) forwards;\n}\n@keyframes f7-fade-in {\n from {\n opacity: 0;\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes f7-fade-out {\n from {\n opacity: 1;\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 0;\n }\n}\n.router-transition-f7-flip-forward,\n.router-transition-f7-flip-backward {\n background: #000;\n perspective: 1200px;\n}\n.router-transition-f7-flip-forward .page,\n.router-transition-f7-flip-backward .page {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n overflow: hidden;\n pointer-events: none;\n}\n.router-transition-f7-flip-forward .page-next {\n transform-style: preserve-3d;\n animation: f7-flip-next-to-current var(--f7-page-flip-transition-duration) forwards;\n}\n.router-transition-f7-flip-forward .page-current {\n transform-style: preserve-3d;\n animation: f7-flip-current-to-prev var(--f7-page-flip-transition-duration) forwards;\n}\n.router-transition-f7-flip-backward .page-current {\n transform-style: preserve-3d;\n animation: f7-flip-current-to-next var(--f7-page-flip-transition-duration) forwards;\n}\n.router-transition-f7-flip-backward .page-previous {\n transform-style: preserve-3d;\n animation: f7-flip-prev-to-current var(--f7-page-flip-transition-duration) forwards;\n}\n@keyframes f7-flip-next-to-current {\n from {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(-180deg);\n }\n to {\n border-radius: 0;\n transform: translateZ(0px) rotateY(0deg);\n }\n}\n@keyframes f7-flip-current-to-next {\n from {\n border-radius: 0px;\n transform: translateZ(0px) rotateY(0deg);\n }\n to {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(-180deg);\n }\n}\n@keyframes f7-flip-current-to-prev {\n from {\n border-radius: 0px;\n transform: translateZ(0px) rotateY(0deg);\n }\n to {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(180deg);\n }\n}\n@keyframes f7-flip-prev-to-current {\n from {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(180deg);\n }\n to {\n border-radius: 0px;\n transform: translateZ(0px) rotateY(0deg);\n }\n}\n.router-transition-f7-parallax-forward .page {\n pointer-events: none;\n}\n.router-transition-f7-parallax-forward .page-next {\n animation: f7-parallax-next-to-current var(--f7-page-parallax-transition-duration) forwards;\n}\n.router-transition-f7-parallax-forward .page-current {\n animation: f7-parallax-current-to-prev var(--f7-page-parallax-transition-duration) forwards;\n}\n.router-transition-f7-parallax-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-parallax-backward .page-current {\n animation: f7-parallax-current-to-next var(--f7-page-parallax-transition-duration) forwards;\n}\n.router-transition-f7-parallax-backward .page-previous {\n animation: f7-parallax-prev-to-current var(--f7-page-parallax-transition-duration) forwards;\n}\n@keyframes f7-parallax-next-to-current {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n@keyframes f7-parallax-current-to-next {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(-100%);\n }\n}\n@keyframes f7-parallax-current-to-prev {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(20%);\n }\n}\n@keyframes f7-parallax-prev-to-current {\n from {\n transform: translateX(20%);\n }\n to {\n transform: translateX(0%);\n }\n}\n.router-transition-f7-push-forward .page {\n pointer-events: none;\n}\n.router-transition-f7-push-forward .page-next {\n animation: f7-push-next-to-current var(--f7-page-push-transition-duration) forwards;\n}\n.router-transition-f7-push-forward .page-current {\n animation: f7-push-current-to-prev var(--f7-page-push-transition-duration) forwards;\n}\n.router-transition-f7-push-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-push-backward .page-current {\n animation: f7-push-current-to-next var(--f7-page-push-transition-duration) forwards;\n}\n.router-transition-f7-push-backward .page-previous {\n animation: f7-push-prev-to-current var(--f7-page-push-transition-duration) forwards;\n}\n@keyframes f7-push-next-to-current {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n@keyframes f7-push-current-to-next {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(-100%);\n }\n}\n@keyframes f7-push-current-to-prev {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(100%);\n }\n}\n@keyframes f7-push-prev-to-current {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n/* === Link === */\n:root {\n --f7-link-highlight-black: rgba(0, 0, 0, 0.1);\n --f7-link-highlight-white: rgba(255, 255, 255, 0.15);\n --f7-link-highlight-color: rgba(var(--f7-theme-color-rgb), 0.15);\n}\n.ios {\n --f7-link-pressed-opacity: 0.3;\n}\n.link,\n.tab-link {\n display: inline-flex;\n align-items: center;\n align-content: center;\n justify-content: center;\n position: relative;\n box-sizing: border-box;\n z-index: 1;\n --f7-touch-ripple-color: var(--f7-link-touch-ripple-color, rgba(var(--f7-theme-color-rgb), 0.25));\n}\n.link i + span,\n.link i + i,\n.link span + i,\n.link span + span {\n margin-right: 4px;\n}\n.link[class*='color-'] {\n color: var(--f7-theme-color);\n}\n.ios .link {\n transition: opacity 300ms;\n}\n.ios .link.active-state {\n opacity: var(--f7-link-pressed-opacity);\n transition-duration: 0ms;\n}\n/* === Navbar === */\n:root {\n /*\n --f7-navbar-bg-color: var(--f7-bars-bg-color);\n --f7-navbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-navbar-border-color: var(--f7-bars-border-color);\n */\n --f7-navbar-hide-show-transition-duration: 400ms;\n --f7-navbar-title-line-height: 1.2;\n --f7-navbar-subtitle-text-align: inherit;\n --f7-navbar-large-title-line-height: 1.2;\n --f7-navbar-large-title-text-color: inherit;\n --f7-navbar-large-title-padding-left: 16px;\n --f7-navbar-large-title-padding-right: 16px;\n}\n.ios {\n /*\n --f7-navbar-link-color: var(--f7-bars-link-color);\n --f7-navbar-text-color: var(--f7-bars-text-color);\n */\n --f7-navbar-height: 44px;\n --f7-navbar-font-size: 17px;\n --f7-navbar-title-font-size: inherit;\n --f7-navbar-inner-padding-left: 8px;\n --f7-navbar-inner-padding-right: 8px;\n --f7-navbar-title-font-weight: 600;\n --f7-navbar-title-margin-left: 0;\n --f7-navbar-title-margin-right: 0;\n --f7-navbar-title-text-align: center;\n --f7-navbar-subtitle-font-size: 10px;\n --f7-navbar-subtitle-line-height: 1;\n --f7-navbar-large-title-height: 52px;\n --f7-navbar-large-title-font-size: 34px;\n --f7-navbar-large-title-font-weight: 700;\n --f7-navbar-large-title-letter-spacing: -0.03em;\n --f7-navbar-large-title-padding-vertical: 6px;\n /*\n --f7-navbar-link-height: var(--f7-navbar-height);\n --f7-navbar-link-line-height: var(--f7-navbar-height);\n */\n --f7-navbar-subtitle-text-color: rgba(0, 0, 0, 0.55);\n}\n.ios .dark,\n.ios.dark {\n --f7-navbar-subtitle-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-navbar-height: 64px;\n --f7-navbar-font-size: 16px;\n --f7-navbar-title-font-size: 22px;\n --f7-navbar-inner-padding-left: 0px;\n --f7-navbar-inner-padding-right: 0px;\n --f7-navbar-title-font-weight: 400;\n --f7-navbar-title-margin-left: 0px;\n --f7-navbar-title-margin-right: 16px;\n --f7-navbar-title-text-align: left;\n --f7-navbar-subtitle-font-size: 14px;\n --f7-navbar-subtitle-line-height: 1.2;\n --f7-navbar-large-title-font-size: 28px;\n --f7-navbar-large-title-height: 88px;\n --f7-navbar-large-title-font-weight: 400;\n --f7-navbar-large-title-letter-spacing: 0;\n --f7-navbar-large-title-padding-vertical: 8px;\n --f7-navbar-link-height: 48px;\n --f7-navbar-link-line-height: 48px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-navbar-link-color: var(--f7-md-on-surface);\n --f7-navbar-text-color: var(--f7-md-on-surface);\n --f7-navbar-subtitle-text-color: var(--f7-md-on-surface-variant);\n}\n.navbars,\n.navbar {\n z-index: 500;\n left: 0;\n top: 0;\n width: 100%;\n}\n.navbars {\n position: absolute;\n}\n.navbars .navbar {\n z-index: auto;\n}\n.navbars .navbar-transitioning {\n z-index: 500;\n}\n.navbar {\n --f7-navbar-large-collapse-progress: 0;\n position: relative;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n box-sizing: border-box;\n margin: 0;\n height: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n color: var(--f7-navbar-text-color, var(--f7-bars-text-color));\n font-size: var(--f7-navbar-font-size);\n}\n.navbar b {\n font-weight: 500;\n}\n.navbar a {\n color: var(--f7-navbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.navbar a.link {\n display: flex;\n justify-content: flex-start;\n line-height: var(--f7-navbar-link-line-height, var(--f7-navbar-height));\n height: var(--f7-navbar-link-height, var(--f7-navbar-height));\n}\n.navbar .title,\n.navbar .left,\n.navbar .right {\n position: relative;\n z-index: 10;\n}\n.navbar .title {\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex-shrink: 10;\n font-weight: var(--f7-navbar-title-font-weight);\n display: inline-block;\n line-height: var(--f7-navbar-title-line-height);\n text-align: var(--f7-navbar-title-text-align);\n font-size: var(--f7-navbar-title-font-size);\n margin-right: var(--f7-navbar-title-margin-left);\n margin-left: var(--f7-navbar-title-margin-left);\n}\n.navbar .subtitle {\n display: block;\n color: var(--f7-navbar-subtitle-text-color);\n font-weight: normal;\n font-size: var(--f7-navbar-subtitle-font-size);\n line-height: var(--f7-navbar-subtitle-line-height);\n text-align: var(--f7-navbar-subtitle-text-align);\n}\n.navbar .left,\n.navbar .right {\n flex-shrink: 0;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.navbar .right:first-child {\n position: absolute;\n height: 100%;\n}\n.navbar.no-outline .navbar-bg:after,\n.navbar .no-outline .navbar-bg:after {\n display: none !important;\n}\n.navbar.no-outline .title-large:after,\n.navbar .no-outline .title-large:after {\n display: none !important;\n}\n.navbar.navbar-hidden .navbar-bg:before,\n.navbar-hidden .navbar .navbar-bg:before {\n opacity: 0 !important;\n}\n.navbar-bg {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 0;\n background: var(--f7-navbar-bg-color);\n background-color: var(--f7-navbar-bg-color, var(--f7-bars-bg-color));\n transition-property: transform;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .navbar-bg {\n background-color: rgba(var(--f7-navbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.navbar-bg:after,\n.navbar-bg:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.navbar-bg:after {\n content: '';\n position: absolute;\n background-color: var(--f7-navbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.navbar-bg:after {\n z-index: 1;\n}\n.navbar-transitioning,\n.navbar-transitioning .left,\n.navbar-transitioning .title,\n.navbar-transitioning .right,\n.navbar-transitioning .title-large-text,\n.navbar-transitioning .navbar-bg,\n.navbar-transitioning .subnavbar,\n.navbar-transitioning .navbar-bg:before {\n transition-duration: var(--f7-navbar-hide-show-transition-duration);\n}\n.navbar-page-transitioning {\n transition-duration: var(--f7-page-swipeback-transition-duration) !important;\n}\n.navbar-page-transitioning .title-large-text,\n.navbar-page-transitioning .navbar-bg {\n transition-duration: var(--f7-page-swipeback-transition-duration) !important;\n}\n.navbar-hidden {\n transform: translate3d(0, calc(-1 * var(--f7-navbar-height)), 0);\n}\n.navbar-hidden .navbar-inner {\n pointer-events: none;\n}\n.navbar-hidden .navbar-inner > .left,\n.navbar-hidden .navbar-inner > .title,\n.navbar-hidden .navbar-inner > .right {\n opacity: 0 !important;\n}\n.navbar-hidden .subnavbar {\n pointer-events: auto;\n}\n.navbar-hidden-statusbar {\n transform: translate3d(0, calc(-1 * var(--f7-navbar-height) - var(--f7-safe-area-top)), 0);\n}\n.navbar-large-hidden .navbar-large {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar-inner {\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n padding: var(--f7-safe-area-top) calc(var(--f7-navbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-navbar-inner-padding-left) + var(--f7-safe-area-left));\n transform: translate3d(0, 0, 0);\n z-index: 10;\n}\n.views > .navbar,\n.view > .navbar,\n.page > .navbar,\n.navbars > .navbar {\n position: absolute;\n}\n.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(\n .with-searchbar-expandable-enabled\n ) .navbar-bg,\n.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(\n .with-searchbar-expandable-enabled\n ) .title {\n opacity: 0;\n}\n.navbar-large .navbar-bg {\n height: calc(100% + var(--f7-navbar-large-title-height));\n transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.navbar-large-transparent .navbar-bg,\n.navbar-large.navbar-transparent .navbar-bg {\n opacity: var(--f7-navbar-large-collapse-progress);\n}\n.ios .router-navbar-transition-to-large .navbar-bg,\n.ios .router-navbar-transition-from-large .navbar-bg,\n.navbar-bg.ios-swipeback-navbar-bg-large,\n.navbar-large-transparent .navbar-bg.ios-swipeback-navbar-bg-large,\n.navbar-large.navbar-transparent .navbar-bg.ios-swipeback-navbar-bg-large {\n height: calc(100% + var(--f7-navbar-large-title-height));\n transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.ios .navbar:not(.navbar-large) .navbar-bg {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar-large .title {\n opacity: var(--f7-navbar-large-collapse-progress);\n}\n.navbar-large-collapsed {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar-large-collapsed .title-large {\n pointer-events: none;\n}\n.navbar .title-large {\n box-sizing: border-box;\n position: absolute;\n left: 0;\n right: 0;\n top: 100%;\n display: flex;\n white-space: nowrap;\n overflow: hidden;\n height: var(--f7-navbar-large-title-height);\n z-index: 5;\n}\n.navbar .title-large-text {\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--f7-navbar-large-title-text-color);\n letter-spacing: var(--f7-navbar-large-title-letter-spacing);\n font-size: var(--f7-navbar-large-title-font-size);\n font-weight: var(--f7-navbar-large-title-font-weight);\n line-height: var(--f7-navbar-large-title-line-height);\n padding-left: calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-navbar-large-title-padding-right) + var(--f7-safe-area-right));\n padding-top: var(--f7-navbar-large-title-padding-vertical);\n padding-bottom: var(--f7-navbar-large-title-padding-vertical);\n box-sizing: border-box;\n overflow: hidden;\n width: 100%;\n transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n transform-origin: calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center;\n}\n.navbar-no-title-large-transition .title-large-text {\n transition-duration: 0ms;\n}\n.navbar ~ *,\n.navbars ~ * {\n --f7-page-navbar-offset: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ * .page-with-navbar-large,\n.navbar ~ .page-with-navbar-large,\n.navbars ~ * .page-with-navbar-large,\n.navbars ~ .page-with-navbar-large,\n.page-with-navbar-large .navbar ~ * {\n --f7-page-navbar-offset: calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));\n}\n.page.no-navbar,\n.page.no-navbar .navbar ~ * {\n --f7-page-navbar-offset: var(--f7-safe-area-top);\n}\n.ios {\n --f7-navbarLeftTextOffset: calc(4px + 12px + var(--f7-navbar-inner-padding-left));\n --f7-navbarTitleLargeOffset: var(--f7-navbar-large-title-padding-left);\n --f7-navbar-large-bg-center-top: translateX(0) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n --f7-navbar-large-bg-center-bottom: translateX(0) translateY(0);\n --f7-navbar-large-bg-left-top: translateX(100%) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n --f7-navbar-large-bg-left-bottom: translateX(100%) translateY(0);\n --f7-navbar-large-bg-right-top: translateX(-100%) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n --f7-navbar-large-bg-right-bottom: translateX(-100%) translateY(0);\n}\n.ios .navbar .title-large {\n align-items: flex-end;\n}\n.ios .navbar a.icon-only {\n width: 44px;\n margin: 0;\n justify-content: center;\n}\n.ios .navbar .left a + a,\n.ios .navbar .right a + a {\n margin-right: 16px;\n}\n.ios .navbar b {\n font-weight: 600;\n}\n.ios .navbar .left {\n margin-left: 10px;\n}\n.ios .navbar .right {\n margin-right: 10px;\n}\n.ios .navbar .right:first-child {\n left: calc(8px + var(--f7-safe-area-left));\n}\n.ios .navbar-inner {\n justify-content: space-between;\n}\n.ios .navbar-inner-left-title {\n justify-content: flex-start;\n}\n.ios .navbar-inner-left-title .right {\n margin-right: auto;\n}\n.ios .navbar-inner-left-title .title {\n text-align: left;\n margin-left: 10px;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .left,\n.ios .view:not(.view-master-detail) .navbar-previous .left,\n.ios .navbar-next .left,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .title,\n.ios .view:not(.view-master-detail) .navbar-previous .title,\n.ios .navbar-next .title,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .right,\n.ios .view:not(.view-master-detail) .navbar-previous .right,\n.ios .navbar-next .right,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar,\n.ios .view:not(.view-master-detail) .navbar-previous .subnavbar,\n.ios .navbar-next .subnavbar,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .fading,\n.ios .view:not(.view-master-detail) .navbar-previous .fading,\n.ios .navbar-next .fading {\n opacity: 0;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master),\n.ios .view:not(.view-master-detail) .navbar-previous {\n pointer-events: none;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large,\n.ios .view:not(.view-master-detail) .navbar-previous .title-large {\n opacity: 0;\n transition-duration: 0ms;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large .title-large-text,\n.ios .view:not(.view-master-detail) .navbar-previous .title-large .title-large-text {\n transform: scale(0.5);\n transition-duration: 0ms;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar.sliding,\n.ios .view:not(.view-master-detail) .navbar-previous .subnavbar.sliding,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .sliding .subnavbar,\n.ios .view:not(.view-master-detail) .navbar-previous .sliding .subnavbar {\n opacity: 1;\n transform: translate3d(100%, 0, 0);\n}\n.ios .view:not(.view-master-detail) .navbar-previous .navbar-bg,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .navbar-bg {\n transform: translateX(-100%);\n}\n.ios .navbar-next {\n pointer-events: none;\n}\n.ios .navbar-next .navbar-bg {\n transform: translateX(-100%);\n}\n.ios .navbar-next .title-large .title-large-text {\n transition-duration: 0ms;\n transform: translateX(-100%) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n}\n.ios .navbar-next .subnavbar.sliding,\n.ios .navbar-next .sliding .subnavbar {\n opacity: 1;\n transform: translate3d(-100%, 0, 0);\n}\n.ios .router-transition .navbar,\n.ios .router-transition .navbar-bg {\n transition-duration: var(--f7-page-transition-duration);\n}\n.ios .router-transition .navbar-bg {\n animation-duration: var(--f7-page-transition-duration);\n animation-fill-mode: forwards;\n}\n.ios .router-transition .title-large,\n.ios .router-transition .title-large-text {\n transition-duration: 0ms;\n}\n.ios .router-transition .navbar-current .left,\n.ios .router-transition .navbar-current .title,\n.ios .router-transition .navbar-current .right,\n.ios .router-transition .navbar-current .subnavbar {\n animation: ios-navbar-element-fade-out var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition .navbar-current .sliding.left,\n.ios .router-transition .navbar-current .sliding.left .icon + span,\n.ios .router-transition .navbar-current .sliding.title,\n.ios .router-transition .navbar-current .sliding.right,\n.ios .router-transition .navbar-current .sliding .left,\n.ios .router-transition .navbar-current .sliding .left .icon + span,\n.ios .router-transition .navbar-current .sliding .title,\n.ios .router-transition .navbar-current .sliding .right {\n transition-duration: var(--f7-page-transition-duration);\n opacity: 0 !important;\n animation: none;\n}\n.ios .router-transition .navbar-current .sliding .subnavbar,\n.ios .router-transition .navbar-current .sliding.subnavbar {\n transition-duration: var(--f7-page-transition-duration);\n animation: none;\n opacity: 1;\n}\n.ios .router-transition-forward .navbar-next .left,\n.ios .router-transition-backward .navbar-previous .left,\n.ios .router-transition-forward .navbar-next .title,\n.ios .router-transition-backward .navbar-previous .title,\n.ios .router-transition-forward .navbar-next .right,\n.ios .router-transition-backward .navbar-previous .right,\n.ios .router-transition-forward .navbar-next .subnavbar,\n.ios .router-transition-backward .navbar-previous .subnavbar {\n animation: ios-navbar-element-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next .sliding.left,\n.ios .router-transition-backward .navbar-previous .sliding.left,\n.ios .router-transition-forward .navbar-next .sliding.left .icon + span,\n.ios .router-transition-backward .navbar-previous .sliding.left .icon + span,\n.ios .router-transition-forward .navbar-next .sliding.title,\n.ios .router-transition-backward .navbar-previous .sliding.title,\n.ios .router-transition-forward .navbar-next .sliding.right,\n.ios .router-transition-backward .navbar-previous .sliding.right,\n.ios .router-transition-forward .navbar-next .sliding .left,\n.ios .router-transition-backward .navbar-previous .sliding .left,\n.ios .router-transition-forward .navbar-next .sliding .left .icon + span,\n.ios .router-transition-backward .navbar-previous .sliding .left .icon + span,\n.ios .router-transition-forward .navbar-next .sliding .title,\n.ios .router-transition-backward .navbar-previous .sliding .title,\n.ios .router-transition-forward .navbar-next .sliding .right,\n.ios .router-transition-backward .navbar-previous .sliding .right,\n.ios .router-transition-forward .navbar-next .sliding .subnavbar,\n.ios .router-transition-backward .navbar-previous .sliding .subnavbar {\n transition-duration: var(--f7-page-transition-duration);\n animation: none;\n transform: translate3d(0, 0, 0) !important;\n opacity: 1 !important;\n}\n.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title,\n.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title {\n animation: none;\n}\n.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title,\n.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title,\n.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title,\n.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title {\n opacity: 0 !important;\n}\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .left,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .left,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .title,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .title,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .right,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .right,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .subnavbar,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .subnavbar {\n animation: none;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large {\n overflow: visible;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-up var(--f7-page-transition-duration) forwards, ios-navbar-large-title-text-fade-out var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large .left .back span {\n animation: ios-navbar-back-text-next-to-current var(--f7-page-transition-duration) forwards;\n transition: none;\n transform-origin: right center;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large {\n overflow: visible;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-left var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-left var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next.navbar-large:not(.navbar-large-collapsed) .title,\n.ios .router-transition-forward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title {\n animation: none;\n opacity: 0 !important;\n transition-duration: 0;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large .left .back span {\n animation: ios-navbar-back-text-current-to-previous var(--f7-page-transition-duration) forwards;\n transition: none;\n transform-origin: right center;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large {\n overflow: visible;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-right var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-right var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large {\n opacity: 0;\n}\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large {\n overflow: visible;\n opacity: 1;\n}\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-down var(--f7-page-transition-duration) forwards, ios-navbar-large-title-text-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title,\n.ios .router-transition-backward .navbar-previous.navbar-large:not(.navbar-large-collapsed) .title {\n animation: none;\n opacity: 0 !important;\n transition-duration: 0;\n}\n.ios .router-transition-forward .navbar-current .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-lb;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-lb;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-lt;\n}\n.ios .router-transition-forward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-lb;\n}\n.ios .router-transition-forward .navbar-current.navbar-large-collapsed:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-lt;\n}\n.ios .router-transition-forward .navbar-next .navbar-bg {\n animation-name: ios-navbar-bg-from-rb-to-cb;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-rb-to-cb;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-rb-to-ct;\n}\n.ios .router-transition-forward .navbar-next:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-rt-to-cb;\n}\n.ios .router-transition-backward .navbar-current .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-rb;\n}\n.ios .router-transition-backward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-rb;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-rt;\n}\n.ios .router-transition-backward .navbar-current.navbar-large-collapsed .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-rt;\n}\n.ios .router-transition-backward .navbar-current.navbar-large-collapsed.router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-rb;\n}\n.ios .router-transition-backward .navbar-previous .navbar-bg {\n animation-name: ios-navbar-bg-from-lb-to-cb;\n}\n.ios .router-transition-backward .navbar-previous:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-lt-to-cb;\n}\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-lb-to-ct;\n}\n.ios .router-transition-backward .navbar-previous.navbar-large-collapsed .navbar-bg {\n animation-name: ios-navbar-bg-from-lt-to-ct;\n}\n.view-master-detail .navbars {\n z-index: auto;\n}\n.view-master-detail .page-master {\n z-index: 525;\n}\n.view-master-detail .navbar-master .navbar-inner,\n.view-master-detail .navbar-master .navbar-bg {\n z-index: 550;\n}\n.view-master-detail .navbar-master-detail .navbar-inner,\n.view-master-detail .navbar-master-detail .navbar-bg {\n z-index: 500;\n}\n.view-master-detail .navbar-master.navbar-previous {\n pointer-events: auto;\n}\n.view-master-detail .navbar-master.navbar-previous .left,\n.view-master-detail .navbar-master.navbar-previous:not(.navbar-large) .title,\n.view-master-detail .navbar-master.navbar-previous .right,\n.view-master-detail .navbar-master.navbar-previous .subnavbar {\n opacity: 1;\n}\n.view-master-detail.router-transition .navbar-master .left,\n.view-master-detail.router-transition .navbar-master .left .icon + span,\n.view-master-detail.router-transition .navbar-master:not(.navbar-large) .title,\n.view-master-detail.router-transition .navbar-master .right,\n.view-master-detail.router-transition .navbar-master .subnavbar,\n.view-master-detail.router-transition .navbar-master .fading {\n opacity: 1 !important;\n transition-duration: 0ms;\n transform: none !important;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master .navbar-bg {\n transition-duration: 0ms;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master.navbar-large .title {\n opacity: calc(-1 + 2 * var(--f7-navbar-large-collapse-progress)) !important;\n transition-duration: 0ms;\n transform: none !important;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master.navbar-large .title-large,\n.view-master-detail.router-transition .navbar-master.navbar-large .title-large-text {\n transition-duration: 0ms;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master.navbar-large-transparent .navbar-bg,\n.view-master-detail.router-transition .navbar-master.navbar-large.navbar-transparent .navbar-bg {\n height: 100% !important;\n opacity: var(--f7-navbar-large-collapse-progress) !important;\n}\n@keyframes ios-navbar-element-fade-in {\n 0% {\n opacity: 0;\n }\n 25% {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes ios-navbar-element-fade-out {\n from {\n opacity: 1;\n }\n 75% {\n opacity: 0;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes ios-navbar-large-title-text-slide-up {\n 0% {\n transform: translateX(0px) translateY(0%) scale(1);\n }\n 100% {\n transform: translateX(calc(-1 * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(-1 * var(--f7-navbar-large-title-height) + var(--f7-navbar-large-title-padding-vertical))) scale(0.5);\n }\n}\n@keyframes ios-navbar-large-title-text-slide-down {\n 0% {\n transform: translateX(calc(-1 * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(-1 * var(--f7-navbar-large-title-height) + var(--f7-navbar-large-title-padding-vertical) / 2)) scale(0.5);\n }\n 100% {\n transform: translateX(0px) translateY(0%) scale(1);\n }\n}\n@keyframes ios-navbar-large-title-text-slide-left {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(0%);\n }\n}\n@keyframes ios-navbar-large-title-text-slide-right {\n 0% {\n transform: translateX(0%);\n }\n 100% {\n transform: translateX(-100%);\n }\n}\n@keyframes ios-navbar-large-title-text-fade-out {\n 0% {\n opacity: 1;\n }\n 80% {\n opacity: 0;\n }\n 100% {\n opacity: 0;\n }\n}\n@keyframes ios-navbar-large-title-text-fade-in {\n 0% {\n opacity: 0;\n }\n 20% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes ios-navbar-back-text-current-to-previous {\n 0% {\n opacity: 1;\n transform: translateY(0px) translateX(0px) scale(1);\n }\n 80% {\n opacity: 0;\n }\n 100% {\n opacity: 0;\n transform: translateX(calc(-1 * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(1 * var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2)) scale(2);\n }\n}\n@keyframes ios-navbar-back-text-next-to-current {\n 0% {\n opacity: 0;\n transform: translateX(calc(-1 * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(1 * var(--f7-navbar-large-title-height) + var(--f7-navbar-large-title-padding-vertical) / 2)) scale(2);\n }\n 20% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n transform: translateX(0px) translateY(0px) scale(1);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-lb {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-lt {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-lb {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-lt {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n}\n@keyframes ios-navbar-bg-from-rb-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-rb-to-ct {\n from {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n}\n@keyframes ios-navbar-bg-from-rt-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-right-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-rb {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-rb {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-rt {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-top);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-rt {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-top);\n }\n}\n@keyframes ios-navbar-bg-from-lb-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-lt-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-lb-to-ct {\n from {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n}\n@keyframes ios-navbar-bg-from-lt-to-ct {\n from {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n}\n.md .navbar .title-large {\n align-items: center;\n}\n.md .navbar .left {\n margin-left: 4px;\n margin-right: 4px;\n}\n.md .navbar a.link {\n padding: 0 12px;\n min-width: 48px;\n}\n.md .navbar a.icon-only {\n min-width: 0;\n flex-shrink: 0;\n width: 48px;\n}\n.md .navbar .right {\n margin-left: 4px;\n margin-right: auto;\n}\n.md .navbar .right:first-child {\n left: var(--f7-safe-area-left);\n}\n.md .navbar-inner {\n justify-content: flex-start;\n overflow: hidden;\n}\n.md .navbar-large:not(.navbar-large-collapsed) .navbar-inner {\n overflow: visible;\n}\n.md .page.page-with-subnavbar .navbar-inner {\n overflow: visible;\n}\n.md .navbar-inner:not(.navbar-inner-centered-title) .title:first-child {\n margin-left: 16px;\n}\n.md .navbar-inner-centered-title {\n justify-content: space-between;\n}\n.md .navbar-inner-centered-title .right {\n margin-right: 0;\n}\n.md .navbar-inner-centered-title .title {\n text-align: center;\n}\n/* === Toolbar === */\n:root {\n /*\n --f7-toolbar-bg-color: var(--f7-bars-bg-color);\n --f7-toolbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-toolbar-border-color: var(--f7-bars-border-color);\n --f7-toolbar-link-color: var(--f7-bars-link-color);\n --f7-toolbar-text-color: var(--f7-bars-text-color);\n */\n --f7-tabbar-link-active-bg-color: transparent;\n --f7-tabbar-label-text-transform: none;\n --f7-toolbar-hide-show-transition-duration: 400ms;\n}\n.ios {\n --f7-toolbar-height: 44px;\n --f7-toolbar-font-size: 17px;\n --f7-toolbar-inner-padding-left: 8px;\n --f7-toolbar-inner-padding-right: 8px;\n --f7-toolbar-link-font-weight: 400;\n /*\n --f7-toolbar-link-height: var(--f7-toolbar-height);\n --f7-toolbar-link-line-height: var(--f7-toolbar-height);\n --f7-tabbar-link-active-color: var(--f7-theme-color);\n */\n --f7-tabbar-icons-height: 50px;\n --f7-tabbar-icons-tablet-height: 50px;\n --f7-tabbar-icon-size: 28px;\n --f7-tabbar-link-text-transform: none;\n --f7-tabbar-link-font-weight: 400;\n --f7-tabbar-link-letter-spacing: 0;\n --f7-tabbar-label-font-size: 12px;\n --f7-tabbar-label-tablet-font-size: 14px;\n --f7-tabbar-label-font-weight: 500;\n --f7-tabbar-label-letter-spacing: 0.01;\n --f7-tabbar-link-inactive-color: rgba(0, 0, 0, 0.4);\n}\n.ios .dark,\n.ios.dark {\n --f7-tabbar-link-inactive-color: rgba(255, 255, 255, 0.54);\n}\n.md {\n --f7-toolbar-height: 56px;\n --f7-toolbar-font-size: 14px;\n --f7-toolbar-inner-padding-left: 0px;\n --f7-toolbar-inner-padding-right: 0px;\n /*\n --f7-toolbar-link-height: var(--f7-toolbar-height);\n --f7-toolbar-link-line-height: var(--f7-toolbar-height);\n */\n --f7-tabbar-icons-height: 80px;\n --f7-tabbar-icons-tablet-height: 80px;\n --f7-tabbar-icon-size: 24px;\n --f7-tabbar-link-text-transform: none;\n --f7-tabbar-link-font-weight: 500;\n --f7-tabbar-link-letter-spacing: 0;\n --f7-toolbar-link-font-weight: 500;\n --f7-tabbar-label-font-size: 12px;\n --f7-tabbar-label-tablet-font-size: 12px;\n --f7-tabbar-label-font-weight: 500;\n --f7-tabbar-label-letter-spacing: 0;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-tabbar-link-active-color: var(--f7-md-on-secondary-container);\n --f7-tabbar-link-active-border-color: var(--f7-md-primary);\n --f7-tabbar-link-inactive-color: var(--f7-md-on-surface-variant);\n --f7-tabbar-link-active-icon-bg-color: var(--f7-md-secondary-container);\n}\n.toolbar {\n width: 100%;\n position: relative;\n margin: 0;\n transform: translate3d(0, 0, 0);\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n z-index: 600;\n box-sizing: border-box;\n left: 0;\n height: var(--f7-toolbar-height);\n background-color: var(--f7-toolbar-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-toolbar-text-color, var(--f7-bars-text-color));\n font-size: var(--f7-toolbar-font-size);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .toolbar {\n background-color: rgba(var(--f7-toolbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.toolbar b {\n font-weight: 600;\n}\n.toolbar a {\n color: var(--f7-toolbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n box-sizing: border-box;\n flex-shrink: 1;\n position: relative;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.toolbar .link {\n display: flex;\n line-height: var(--f7-toolbar-link-line-height, var(--f7-toolbar-height));\n height: var(--f7-toolbar-link-height, var(--f7-toolbar-height));\n font-weight: var(--f7-toolbar-link-font-weight);\n}\n.toolbar i.icon {\n display: block;\n}\n.toolbar:after,\n.toolbar:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.views > .toolbar,\n.view > .toolbar,\n.page > .toolbar {\n position: absolute;\n}\n.toolbar-top,\n.ios .toolbar-top-ios,\n.md .toolbar-top-md {\n top: 0;\n}\n.toolbar-top .tab-link-highlight,\n.ios .toolbar-top-ios .tab-link-highlight,\n.md .toolbar-top-md .tab-link-highlight {\n bottom: 0;\n}\n.toolbar-top.no-outline:after,\n.ios .toolbar-top-ios.no-outline:after,\n.md .toolbar-top-md.no-outline:after {\n display: none !important;\n}\n.toolbar-top.toolbar-hidden:before,\n.ios .toolbar-top-ios.toolbar-hidden:before,\n.md .toolbar-top-md.toolbar-hidden:before {\n display: none !important;\n}\n.toolbar-top:after,\n.ios .toolbar-top-ios:after,\n.md .toolbar-top-md:after,\n.toolbar-top:before,\n.ios .toolbar-top-ios:before,\n.md .toolbar-top-md:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.toolbar-top:after,\n.ios .toolbar-top-ios:after,\n.md .toolbar-top-md:after {\n content: '';\n position: absolute;\n background-color: var(--f7-toolbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.toolbar-bottom,\n.ios .toolbar-bottom-ios,\n.md .toolbar-bottom-md {\n bottom: 0;\n height: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n}\n.toolbar-bottom .tab-link-highlight,\n.ios .toolbar-bottom-ios .tab-link-highlight,\n.md .toolbar-bottom-md .tab-link-highlight {\n top: 0;\n}\n.toolbar-bottom .toolbar-inner,\n.ios .toolbar-bottom-ios .toolbar-inner,\n.md .toolbar-bottom-md .toolbar-inner {\n height: auto;\n top: 0;\n bottom: var(--f7-safe-area-bottom);\n}\n.toolbar-bottom.no-outline:before,\n.ios .toolbar-bottom-ios.no-outline:before,\n.md .toolbar-bottom-md.no-outline:before {\n display: none !important;\n}\n.toolbar-bottom.toolbar-hidden:after,\n.ios .toolbar-bottom-ios.toolbar-hidden:after,\n.md .toolbar-bottom-md.toolbar-hidden:after {\n display: none !important;\n}\n.toolbar-bottom:before,\n.ios .toolbar-bottom-ios:before,\n.md .toolbar-bottom-md:before {\n content: '';\n position: absolute;\n background-color: var(--f7-toolbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.toolbar-inner {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n align-content: center;\n overflow: hidden;\n padding: 0 calc(var(--f7-toolbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-toolbar-inner-padding-left) + var(--f7-safe-area-left));\n}\n.views > .tabbar,\n.views > .tabbar-icons {\n z-index: 5001;\n}\n.tabbar a,\n.tabbar-icons a {\n color: var(--f7-tabbar-link-inactive-color);\n}\n.tabbar .link,\n.tabbar-icons .link {\n line-height: 1.4;\n}\n.tabbar .tab-link,\n.tabbar-icons .tab-link,\n.tabbar .link,\n.tabbar-icons .link {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n text-transform: var(--f7-tabbar-link-text-transform);\n font-weight: var(--f7-tabbar-link-font-weight);\n letter-spacing: var(--f7-tabbar-link-letter-spacing);\n overflow: hidden;\n}\n.tabbar .tab-link-active,\n.tabbar-icons .tab-link-active {\n color: var(--f7-tabbar-link-active-color, var(--f7-theme-color));\n background-color: var(--f7-tabbar-link-active-bg-color, transparent);\n}\n.tabbar i.icon,\n.tabbar-icons i.icon {\n font-size: var(--f7-tabbar-icon-size);\n height: var(--f7-tabbar-icon-size);\n line-height: var(--f7-tabbar-icon-size);\n}\n.md .tabbar.tabbar-icons .tab-link-highlight,\n.md .tabbar-icons.tabbar-icons .tab-link-highlight {\n display: none;\n}\n.md .tabbar:not(.tabbar-icons) .tab-link-highlight,\n.md .tabbar-icons:not(.tabbar-icons) .tab-link-highlight {\n position: absolute;\n left: 0;\n height: 2px;\n background: var(--f7-tabbar-link-active-border-color, var(--f7-theme-color));\n transition-duration: 300ms;\n right: 0;\n}\n.tabbar-icons {\n --f7-toolbar-height: var(--f7-tabbar-icons-height);\n}\n.tabbar-icons .tab-link,\n.tabbar-icons .link {\n height: 100%;\n justify-content: center;\n align-items: center;\n}\n.tabbar-icons .tabbar-label {\n display: block;\n line-height: 1;\n margin: 0;\n position: relative;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--f7-tabbar-label-font-size);\n text-transform: var(--f7-tabbar-label-text-transform);\n font-weight: var(--f7-tabbar-label-font-weight);\n letter-spacing: var(--f7-tabbar-label-letter-spacing);\n}\n@media (min-width: 768px) and (min-height: 600px) {\n :root {\n --f7-tabbar-icons-height: var(--f7-tabbar-icons-tablet-height);\n --f7-tabbar-label-font-size: var(--f7-tabbar-label-tablet-font-size);\n }\n}\n.tabbar-scrollable .toolbar-inner {\n justify-content: flex-start;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.tabbar-scrollable .toolbar-inner::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.tabbar-scrollable .tab-link,\n.tabbar-scrollable .link {\n width: auto;\n flex-shrink: 0;\n}\n.toolbar-transitioning,\n.navbar-transitioning + .toolbar,\n.navbar-transitioning ~ * .toolbar {\n transition-duration: var(--f7-toolbar-hide-show-transition-duration);\n}\n.toolbar-bottom ~ *,\n.ios .toolbar-bottom-ios ~ *,\n.md .toolbar-bottom-md ~ * {\n --f7-page-toolbar-bottom-offset: var(--f7-toolbar-height);\n}\n.toolbar-bottom.tabbar-icons ~ *,\n.ios .toolbar-bottom-ios.tabbar-icons ~ *,\n.md .toolbar-bottom-md.tabbar-icons ~ * {\n --f7-page-toolbar-bottom-offset: var(--f7-tabbar-icons-height);\n}\n.toolbar-bottom.toolbar-hidden,\n.ios .toolbar-bottom-ios.toolbar-hidden,\n.md .toolbar-bottom-md.toolbar-hidden {\n transform: translate3d(0, 100%, 0);\n}\n.toolbar-top ~ *,\n.ios .toolbar-top-ios ~ *,\n.md .toolbar-top-md ~ * {\n --f7-page-toolbar-top-offset: var(--f7-toolbar-height);\n}\n.toolbar-top.tabbar-icons ~ *,\n.ios .toolbar-top-ios.tabbar-icons ~ *,\n.md .toolbar-top-md.tabbar-icons ~ * {\n --f7-page-toolbar-top-offset: var(--f7-tabbar-icons-height);\n}\n.toolbar-top.toolbar-hidden,\n.ios .toolbar-top-ios.toolbar-hidden,\n.md .toolbar-top-md.toolbar-hidden {\n transform: translate3d(0, -100%, 0);\n}\n.navbar ~ .toolbar-top,\n.navbars ~ .toolbar-top,\n.ios .navbar ~ .toolbar-top-ios,\n.ios .navbars ~ .toolbar-top-ios,\n.md .navbar ~ .toolbar-top-md,\n.navbar ~ * .toolbar-top,\n.navbars ~ * .toolbar-top,\n.ios .navbar ~ * .toolbar-top-ios,\n.ios .navbars ~ * .toolbar-top-ios,\n.md .navbar ~ * .toolbar-top-md,\n.navbar ~ .page:not(.no-navbar) .toolbar-top,\n.navbars ~ .page:not(.no-navbar) .toolbar-top,\n.ios .navbar ~ .page:not(.no-navbar) .toolbar-top-ios,\n.ios .navbars ~ .page:not(.no-navbar) .toolbar-top-ios,\n.md .navbar ~ .page:not(.no-navbar) .toolbar-top-md {\n top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ .toolbar-top.toolbar-hidden,\n.navbars ~ .toolbar-top.toolbar-hidden,\n.ios .navbar ~ .toolbar-top-ios.toolbar-hidden,\n.ios .navbars ~ .toolbar-top-ios.toolbar-hidden,\n.md .navbar ~ .toolbar-top-md.toolbar-hidden,\n.navbar ~ * .toolbar-top.toolbar-hidden,\n.navbars ~ * .toolbar-top.toolbar-hidden,\n.ios .navbar ~ * .toolbar-top-ios.toolbar-hidden,\n.ios .navbars ~ * .toolbar-top-ios.toolbar-hidden,\n.md .navbar ~ * .toolbar-top-md.toolbar-hidden,\n.navbar ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden,\n.navbars ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden,\n.ios .navbar ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,\n.ios .navbars ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,\n.md .navbar ~ .page:not(.no-navbar) .toolbar-top-md.toolbar-hidden {\n transform: translate3d(0, calc(-1 * (var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top))), 0);\n}\n.navbar ~ .toolbar-top.toolbar-hidden.tabbar-icons,\n.navbars ~ .toolbar-top.toolbar-hidden.tabbar-icons,\n.ios .navbar ~ .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.ios .navbars ~ .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.md .navbar ~ .toolbar-top-md.toolbar-hidden.tabbar-icons,\n.navbar ~ * .toolbar-top.toolbar-hidden.tabbar-icons,\n.navbars ~ * .toolbar-top.toolbar-hidden.tabbar-icons,\n.ios .navbar ~ * .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.ios .navbars ~ * .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.md .navbar ~ * .toolbar-top-md.toolbar-hidden.tabbar-icons,\n.navbar ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,\n.navbars ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,\n.ios .navbar ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.ios .navbars ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.md .navbar ~ .page:not(.no-navbar) .toolbar-top-md.toolbar-hidden.tabbar-icons {\n transform: translate3d(0, calc(-1 * (var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top))), 0);\n}\n.navbar-hidden + .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-hidden + .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-hidden + .toolbar-top-md:not(.toolbar-hidden),\n.navbar-hidden ~ * .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-hidden ~ * .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-hidden ~ * .toolbar-top-md:not(.toolbar-hidden) {\n transform: translate3d(0, calc(0px - var(--f7-navbar-height)), 0);\n}\n.navbar-large-hidden + .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-large-hidden + .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-large-hidden + .toolbar-top-md:not(.toolbar-hidden),\n.navbar-large-hidden ~ * .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-large-hidden ~ * .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-large-hidden ~ * .toolbar-top-md:not(.toolbar-hidden) {\n transform: translate3d(0, calc(0px - var(--f7-navbar-height) - var(--f7-navbar-large-title-height)), 0);\n}\n.ios .toolbar a.icon-only {\n min-height: var(--f7-toolbar-height);\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 0;\n min-width: 44px;\n}\n.ios .tabbar-icons .tab-link,\n.ios .tabbar-icons .link {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n.ios .tabbar-icons .tab-link i + span,\n.ios .tabbar-icons .link i + span {\n margin: 0;\n margin-top: 4px;\n}\n@media (min-width: 768px) and (min-height: 600px) {\n .ios .tabbar .tab-link,\n .ios .tabbar-icons .tab-link,\n .ios .tabbar .link,\n .ios .tabbar-icons .link {\n justify-content: center;\n flex-direction: row;\n }\n .ios .tabbar .tab-link i + span,\n .ios .tabbar-icons .tab-link i + span,\n .ios .tabbar .link i + span,\n .ios .tabbar-icons .link i + span {\n margin-left: 5px;\n }\n}\n.ios .tabbar-scrollable .toolbar-inner {\n justify-content: flex-start;\n}\n.ios .tabbar-scrollable .tab-link,\n.ios .tabbar-scrollable .link {\n padding: 0 8px;\n}\n.md .toolbar .link {\n justify-content: center;\n padding: 0 12px;\n min-width: 48px;\n}\n.md .toolbar a.icon-only {\n min-width: 0;\n flex-shrink: 0;\n}\n.md .tabbar .tab-link,\n.md .tabbar-icons .tab-link,\n.md .tabbar .link,\n.md .tabbar-icons .link {\n padding-left: 0;\n padding-right: 0;\n}\n.md .tabbar a.icon-only,\n.md .tabbar-icons a.icon-only {\n flex-shrink: initial;\n}\n.md .tabbar .tab-link,\n.md .tabbar-icons .tab-link {\n transition-duration: 300ms;\n overflow: hidden;\n position: relative;\n}\n.md .tabbar i.icon,\n.md .tabbar-icons i.icon {\n position: relative;\n}\n.md .tabbar i.icon::before,\n.md .tabbar-icons i.icon::before {\n content: '';\n width: 64px;\n height: 32px;\n border-radius: 32px;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translateX(-50%) translateY(-50%) scaleX(0.5);\n background: var(--f7-tabbar-link-active-icon-bg-color);\n opacity: 0;\n transition-duration: 200ms;\n z-index: -1;\n}\n.md .tabbar i.icon + .tabbar-label,\n.md .tabbar-icons i.icon + .tabbar-label {\n margin-top: 8px;\n}\n.md .tabbar .tab-link-active i.icon::before,\n.md .tabbar-icons .tab-link-active i.icon::before {\n opacity: 1;\n transform: translateX(-50%) translateY(-50%) scaleX(1);\n}\n.md .tabbar-icons .tab-link,\n.md .tabbar-icons .link {\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.md .tabbar-label {\n max-width: 100%;\n overflow: hidden;\n line-height: 1.2;\n}\n.md .tabbar-scrollable .toolbar-inner {\n overflow: auto;\n}\n.md .tabbar-scrollable .tab-link,\n.md .tabbar-scrollable .link {\n padding: 0 12px;\n}\n/* === Subnavbar === */\n:root {\n /*\n --f7-subnavbar-bg-color: var(--f7-bars-bg-color);\n --f7-subnavbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-subnavbar-border-color: var(--f7-bars-border-color);\n --f7-subnavbar-link-color: var(--f7-bars-link-color);\n --f7-subnavbar-text-color: var(--f7-bars-text-color);\n */\n --f7-subnavbar-title-line-height: 1.2;\n}\n.ios {\n --f7-subnavbar-height: 44px;\n --f7-subnavbar-inner-padding-left: 8px;\n --f7-subnavbar-inner-padding-right: 8px;\n --f7-subnavbar-title-font-size: 34px;\n --f7-subnavbar-title-font-weight: 700;\n --f7-subnavbar-title-letter-spacing: -0.03em;\n --f7-subnavbar-title-margin-left: 8px;\n /*\n --f7-subnavbar-link-height: var(--f7-subnavbar-height);\n --f7-subnavbar-link-line-height: var(--f7-subnavbar-height);\n */\n}\n.md {\n --f7-subnavbar-height: 64px;\n --f7-subnavbar-inner-padding-left: 16px;\n --f7-subnavbar-inner-padding-right: 16px;\n --f7-subnavbar-title-font-size: 22px;\n --f7-subnavbar-title-font-weight: 400;\n --f7-subnavbar-title-letter-spacing: 0;\n --f7-subnavbar-title-margin-left: 0px;\n /*\n --f7-subnavbar-link-height: var(--f7-subnavbar-height);\n --f7-subnavbar-link-line-height: var(--f7-subnavbar-height);\n */\n}\n.subnavbar {\n width: 100%;\n position: absolute;\n left: 0;\n top: 0;\n z-index: 600;\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background-color: var(--f7-subnavbar-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-subnavbar-text-color, var(--f7-bars-text-color));\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .subnavbar {\n background-color: rgba(var(--f7-subnavbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.subnavbar .subnavbar-title {\n position: relative;\n overflow: hidden;\n text-overflow: ellpsis;\n white-space: nowrap;\n font-size: var(--f7-subnavbar-title-font-size);\n font-weight: var(--f7-subnavbar-title-font-weight);\n text-align: left;\n display: inline-block;\n line-height: var(--f7-subnavbar-title-line-height);\n letter-spacing: var(--f7-subnavbar-title-letter-spacing);\n margin-right: var(--f7-subnavbar-title-margin-left);\n}\n.subnavbar .left,\n.subnavbar .right {\n flex-shrink: 0;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.subnavbar .right:first-child {\n position: absolute;\n height: 100%;\n}\n.subnavbar a {\n color: var(--f7-subnavbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.subnavbar a.link {\n line-height: var(--f7-subnavbar-link-line-height, var(--f7-subnavbar-height));\n height: var(--f7-subnavbar-link-height, var(--f7-subnavbar-height));\n}\n.subnavbar a.icon-only {\n min-width: var(--f7-subnavbar-height);\n}\n.subnavbar.no-outline:after {\n display: none !important;\n}\n.subnavbar.navbar-hidden:before {\n display: none !important;\n}\n.subnavbar:after,\n.subnavbar:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.subnavbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-subnavbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.subnavbar-inner {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n justify-content: space-between;\n overflow: hidden;\n padding: 0 calc(var(--f7-subnavbar-inner-padding-left) + var(--f7-safe-area-right)) 0 calc(var(--f7-subnavbar-inner-padding-right) + var(--f7-safe-area-left));\n}\n.navbar .subnavbar {\n top: 100%;\n}\n.views > .subnavbar,\n.view > .subnavbar,\n.page > .subnavbar {\n position: absolute;\n}\n.navbar ~ * .subnavbar,\n.navbars ~ * .subnavbar,\n.page-with-subnavbar .navbar ~ .subnavbar,\n.page-with-subnavbar .navbar ~ * .subnavbar,\n.navbar ~ .page-with-subnavbar:not(.no-navbar) .subnavbar,\n.navbar ~ .subnavbar,\n.navbars ~ .page-with-subnavbar:not(.no-navbar) .subnavbar,\n.navbars ~ .subnavbar {\n top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ .page-with-navbar-large:not(.no-navbar) .subnavbar,\n.navbars ~ .page-with-navbar-large:not(.no-navbar) .subnavbar,\n.page-with-subnavbar.page-with-navbar-large .navbar ~ .subnavbar,\n.page-with-subnavbar.page-with-navbar-large .navbar ~ * .subnavbar,\n.navbar .title-large ~ .subnavbar {\n top: calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));\n transform: translate3d(0, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.page-with-subnavbar,\n.subnavbar ~ * {\n --f7-page-subnavbar-offset: var(--f7-subnavbar-height);\n}\n.ios .subnavbar {\n height: calc(var(--f7-subnavbar-height) + 1px);\n margin-top: -1px;\n padding-top: 1px;\n}\n.ios .subnavbar .title {\n align-self: flex-start;\n flex-shrink: 10;\n}\n.ios .subnavbar .left a + a,\n.ios .subnavbar .right a + a {\n margin-right: 16px;\n}\n.ios .subnavbar .left {\n margin-left: 10px;\n}\n.ios .subnavbar .right {\n margin-right: 10px;\n}\n.ios .subnavbar .right:first-child {\n left: 8px;\n}\n.ios .subnavbar a.link {\n justify-content: flex-start;\n}\n.ios .subnavbar a.icon-only {\n justify-content: center;\n margin: 0;\n}\n.md .subnavbar {\n height: var(--f7-subnavbar-height);\n}\n.md .subnavbar .right {\n margin-right: auto;\n}\n.md .subnavbar .right:first-child {\n left: 16px;\n}\n.md .subnavbar a.link {\n justify-content: center;\n padding: 0 12px;\n}\n.md .subnavbar a.icon-only {\n flex-shrink: 0;\n padding: 0 12px;\n}\n.md .subnavbar-inner > a.link:first-child {\n margin-right: calc(-1 * var(--f7-subnavbar-inner-padding-right));\n}\n.md .subnavbar-inner > a.link:last-child {\n margin-left: calc(-1 * var(--f7-subnavbar-inner-padding-left));\n}\n/* === Content Block === */\n:root {\n --f7-block-padding-horizontal: 16px;\n --f7-block-padding-vertical: 16px;\n --f7-block-font-size: inherit;\n --f7-block-header-margin: 10px;\n --f7-block-footer-margin: 10px;\n --f7-block-header-font-size: 14px;\n --f7-block-footer-font-size: 14px;\n --f7-block-title-text-transform: none;\n --f7-block-title-white-space: nowrap;\n --f7-block-title-medium-text-transform: none;\n --f7-block-title-large-text-transform: none;\n --f7-block-inset-side-margin: 16px;\n}\n:root .dark,\n:root.dark {\n --f7-block-outline-border-color: rgba(255, 255, 255, 0.15);\n}\n.ios {\n --f7-block-text-color: inherit;\n --f7-block-margin-vertical: 35px;\n --f7-block-outline-border-color: rgba(0, 0, 0, 0.22);\n --f7-block-title-font-size: 16px;\n --f7-block-title-font-weight: 600;\n --f7-block-title-line-height: 20px;\n --f7-block-title-margin-bottom: 10px;\n --f7-block-title-medium-font-size: 22px;\n --f7-block-title-medium-font-weight: bold;\n --f7-block-title-medium-line-height: 1.4;\n --f7-block-title-large-font-size: 30px;\n --f7-block-title-large-font-weight: bold;\n --f7-block-title-large-line-height: 1.3;\n --f7-block-inset-border-radius: 8px;\n --f7-block-title-text-color: #000;\n --f7-block-strong-text-color: #000;\n --f7-block-header-text-color: rgba(0, 0, 0, 0.45);\n --f7-block-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-block-strong-bg-color: #fff;\n --f7-block-title-medium-text-color: #000;\n --f7-block-title-large-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-block-title-text-color: #fff;\n --f7-block-header-text-color: rgba(255, 255, 255, 0.55);\n --f7-block-footer-text-color: rgba(255, 255, 255, 0.55);\n --f7-block-strong-text-color: #fff;\n --f7-block-strong-bg-color: #1c1c1d;\n --f7-block-title-medium-text-color: #fff;\n --f7-block-title-large-text-color: #fff;\n}\n.md {\n --f7-block-margin-vertical: 32px;\n --f7-block-title-font-size: inherit;\n --f7-block-title-font-weight: 500;\n --f7-block-title-line-height: 16px;\n --f7-block-title-margin-bottom: 16px;\n --f7-block-title-medium-font-size: 16px;\n --f7-block-title-medium-font-weight: 500;\n --f7-block-title-medium-line-height: 1.3;\n --f7-block-title-large-font-size: 22px;\n --f7-block-title-large-font-weight: 500;\n --f7-block-title-large-line-height: 1.2;\n --f7-block-inset-border-radius: 16px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-block-text-color: var(--f7-md-on-surface);\n --f7-block-strong-text-color: var(--f7-md-on-surface);\n --f7-block-outline-border-color: var(--f7-md-outline);\n --f7-block-title-text-color: var(--f7-theme-color);\n --f7-block-title-medium-text-color: var(--f7-theme-color);\n --f7-block-title-large-text-color: var(--f7-theme-color);\n --f7-block-strong-bg-color: var(--f7-md-surface-1);\n --f7-block-header-text-color: var(--f7-md-on-surface-variant);\n --f7-block-footer-text-color: var(--f7-md-on-surface-variant);\n}\n.block {\n box-sizing: border-box;\n position: relative;\n z-index: 1;\n color: var(--f7-block-text-color);\n margin: var(--f7-block-margin-vertical) 0;\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));\n font-size: var(--f7-block-font-size);\n}\n.block > h1:first-child,\n.block > h2:first-child,\n.block > h3:first-child,\n.block > h4:first-child,\n.block > p:first-child {\n margin-top: 0;\n}\n.block > h1:last-child,\n.block > h2:last-child,\n.block > h3:last-child,\n.block > h4:last-child,\n.block > p:last-child {\n margin-bottom: 0;\n}\n.block-strong,\n.ios .block-strong-ios,\n.md .block-strong-md {\n color: var(--f7-block-strong-text-color);\n padding-top: var(--f7-block-padding-vertical);\n padding-bottom: var(--f7-block-padding-vertical);\n background-color: var(--f7-block-strong-bg-color);\n}\n.block-outline:not(.inset):before,\n.ios .block-outline-ios:not(.inset):not(.inset-ios):before,\n.md .block-outline-md:not(.inset):not(.inset-md):before {\n content: '';\n position: absolute;\n background-color: var(--f7-block-outline-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.block-outline:not(.inset):after,\n.ios .block-outline-ios:not(.inset):not(.inset-ios):after,\n.md .block-outline-md:not(.inset):not(.inset-md):after {\n content: '';\n position: absolute;\n background-color: var(--f7-block-outline-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.block-outline.inset,\n.ios .block-outline-ios.inset,\n.ios .block-outline-ios.inset-ios,\n.md .block-outline-md.inset,\n.md .block-outline-md.inset-md {\n border: 1px solid var(--f7-block-outline-border-color);\n}\n.block-title {\n position: relative;\n overflow: hidden;\n margin: 0;\n white-space: var(--f7-block-title-white-space);\n text-overflow: ellipsis;\n text-transform: var(--f7-block-title-text-transform);\n color: var(--f7-block-title-text-color);\n font-size: var(--f7-block-title-font-size, inherit);\n font-weight: var(--f7-block-title-font-weight);\n line-height: var(--f7-block-title-line-height);\n margin-top: var(--f7-block-margin-vertical);\n margin-bottom: var(--f7-block-title-margin-bottom);\n margin-left: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));\n margin-right: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));\n}\n.block-title + .list,\n.block-title + .block,\n.block-title + .card,\n.block-title + .timeline,\n.block-title + .block-header {\n margin-top: 0px;\n}\n.block-title-medium {\n font-size: var(--f7-block-title-medium-font-size);\n text-transform: var(--f7-block-title-medium-text-transform);\n color: var(--f7-block-title-medium-text-color);\n font-weight: var(--f7-block-title-medium-font-weight);\n line-height: var(--f7-block-title-medium-line-height);\n}\n.block-title-large {\n font-size: var(--f7-block-title-large-font-size);\n text-transform: var(--f7-block-title-large-text-transform);\n color: var(--f7-block-title-large-text-color);\n font-weight: var(--f7-block-title-large-font-weight);\n line-height: var(--f7-block-title-large-line-height);\n}\n.block > .block-title:first-child,\n.list > .block-title:first-child {\n margin-top: 0;\n margin-left: 0;\n margin-right: 0;\n}\n.block-header {\n color: var(--f7-block-header-text-color);\n font-size: var(--f7-block-header-font-size);\n margin-bottom: var(--f7-block-header-margin);\n margin-top: var(--f7-block-margin-vertical);\n}\n.block-header + .list,\n.block-header + .block,\n.block-header + .card,\n.block-header + .timeline {\n margin-top: var(--f7-block-header-margin);\n}\n.block-footer {\n color: var(--f7-block-footer-text-color);\n font-size: var(--f7-block-footer-font-size);\n margin-top: var(--f7-block-footer-margin);\n margin-bottom: var(--f7-block-margin-vertical);\n}\n.block-footer,\n.block-header {\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));\n}\n.block-footer ul:first-child,\n.block-header ul:first-child,\n.block-footer p:first-child,\n.block-header p:first-child,\n.block-footer h1:first-child,\n.block-header h1:first-child,\n.block-footer h2:first-child,\n.block-header h2:first-child,\n.block-footer h3:first-child,\n.block-header h3:first-child,\n.block-footer h4:first-child,\n.block-header h4:first-child {\n margin-top: 0;\n}\n.block-footer ul:last-child,\n.block-header ul:last-child,\n.block-footer p:last-child,\n.block-header p:last-child,\n.block-footer h1:last-child,\n.block-header h1:last-child,\n.block-footer h2:last-child,\n.block-header h2:last-child,\n.block-footer h3:last-child,\n.block-header h3:last-child,\n.block-footer h4:last-child,\n.block-header h4:last-child {\n margin-bottom: 0;\n}\n.block-footer ul:first-child:last-child,\n.block-header ul:first-child:last-child,\n.block-footer p:first-child:last-child,\n.block-header p:first-child:last-child,\n.block-footer h1:first-child:last-child,\n.block-header h1:first-child:last-child,\n.block-footer h2:first-child:last-child,\n.block-header h2:first-child:last-child,\n.block-footer h3:first-child:last-child,\n.block-header h3:first-child:last-child,\n.block-footer h4:first-child:last-child,\n.block-header h4:first-child:last-child {\n margin-top: 0;\n margin-bottom: 0;\n}\n.list .block-header,\n.block .block-header,\n.card .block-header,\n.timeline .block-header {\n margin-top: 0;\n}\n.list .block-footer,\n.block .block-footer,\n.card .block-footer,\n.timeline .block-footer {\n margin-bottom: 0;\n}\n.list + .block-footer,\n.block + .block-footer,\n.card + .block-footer,\n.timeline + .block-footer {\n margin-top: calc(-1 * (var(--f7-block-margin-vertical) - var(--f7-block-footer-margin)));\n}\n.block + .block-footer {\n margin-top: calc(-1 * (var(--f7-block-margin-vertical) - var(--f7-block-footer-margin)));\n margin-bottom: var(--f7-block-margin-vertical);\n}\n.block .block-header,\n.block .block-footer {\n padding: 0;\n}\n.block.inset,\n.ios .block.inset-ios,\n.md .block.inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n}\n.block-strong.inset:before,\n.ios .block-strong-ios.inset:before,\n.md .block-strong-md.inset:before,\n.ios .block-strong.inset-ios:before,\n.md .block-strong.inset-md:before,\n.ios .block-strong-ios.inset-ios:before,\n.md .block-strong-md.inset-md:before,\n.block-strong.inset:after,\n.ios .block-strong-ios.inset:after,\n.md .block-strong-md.inset:after,\n.ios .block-strong.inset-ios:after,\n.md .block-strong.inset-md:after,\n.ios .block-strong-ios.inset-ios:after,\n.md .block-strong-md.inset-md:after {\n display: none !important;\n}\n@media (min-width: 480px) {\n .block.xsmall-inset,\n .ios .block.xsmall-inset-ios,\n .md .block.xsmall-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.xsmall-inset:before,\n .ios .block.xsmall-inset-ios:before,\n .md .block.xsmall-inset-md:before,\n .block.xsmall-inset:after,\n .ios .block.xsmall-inset-ios:after,\n .md .block.xsmall-inset-md:after {\n display: none !important;\n }\n .block.xsmall-inset.block-outline,\n .ios .block.xsmall-inset-ios.block-outline,\n .ios .block.xsmall-inset-ios.block-outline-ios,\n .md .block.xsmall-inset-md.block-outline,\n .md .block.xsmall-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 568px) {\n .block.small-inset,\n .ios .block.small-inset-ios,\n .md .block.small-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.small-inset:before,\n .ios .block.small-inset-ios:before,\n .md .block.small-inset-md:before,\n .block.small-inset:after,\n .ios .block.small-inset-ios:after,\n .md .block.small-inset-md:after {\n display: none !important;\n }\n .block.small-inset.block-outline,\n .ios .block.small-inset-ios.block-outline,\n .ios .block.small-inset-ios.block-outline-ios,\n .md .block.small-inset-md.block-outline,\n .md .block.small-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 768px) {\n .block.medium-inset,\n .ios .block.medium-inset-ios,\n .md .block.medium-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.medium-inset:before,\n .ios .block.medium-inset-ios:before,\n .md .block.medium-inset-md:before,\n .block.medium-inset:after,\n .ios .block.medium-inset-ios:after,\n .md .block.medium-inset-md:after {\n display: none !important;\n }\n .block.medium-inset.block-outline,\n .ios .block.medium-inset-ios.block-outline,\n .ios .block.medium-inset-ios.block-outline-ios,\n .md .block.medium-inset-md.block-outline,\n .md .block.medium-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 1024px) {\n .block.large-inset,\n .ios .block.large-inset-ios,\n .md .block.large-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.large-inset:before,\n .ios .block.large-inset-ios:before,\n .md .block.large-inset-md:before,\n .block.large-inset:after,\n .ios .block.large-inset-ios:after,\n .md .block.large-inset-md:after {\n display: none !important;\n }\n .block.large-inset.block-outline,\n .ios .block.large-inset-ios.block-outline,\n .ios .block.large-inset-ios.block-outline-ios,\n .md .block.large-inset-md.block-outline,\n .md .block.large-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 1200px) {\n .block.xlarge-inset,\n .ios .block.xlarge-inset-ios,\n .md .block.xlarge-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.xlarge-inset:before,\n .ios .block.xlarge-inset-ios:before,\n .md .block.xlarge-inset-md:before,\n .block.xlarge-inset:after,\n .ios .block.xlarge-inset-ios:after,\n .md .block.xlarge-inset-md:after {\n display: none !important;\n }\n .block.xlarge-inset.block-outline,\n .ios .block.xlarge-inset-ios.block-outline,\n .ios .block.xlarge-inset-ios.block-outline-ios,\n .md .block.xlarge-inset-md.block-outline,\n .md .block.xlarge-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n/* === List View === */\n:root {\n --f7-list-inset-side-margin: 16px;\n --f7-list-item-padding-horizontal: 16px;\n --f7-list-item-padding-vertical: 8px;\n --f7-list-media-item-padding-horizontal: 16px;\n --f7-list-item-text-max-lines: 2;\n --f7-list-chevron-icon-font-size: 20px;\n --f7-list-item-media-margin: 16px;\n --f7-list-item-title-font-size: inherit;\n --f7-list-item-title-font-weight: 400;\n --f7-list-item-title-line-height: inherit;\n --f7-list-item-title-white-space: nowrap;\n --f7-list-item-subtitle-font-weight: 400;\n --f7-list-item-subtitle-line-height: inherit;\n --f7-list-item-text-font-weight: 400;\n --f7-list-item-after-font-weight: 400;\n --f7-list-item-after-line-height: inherit;\n --f7-list-item-header-font-size: 12px;\n --f7-list-item-header-font-weight: 400;\n --f7-list-item-header-line-height: 1.2;\n --f7-list-item-footer-font-size: 12px;\n --f7-list-item-footer-font-weight: 400;\n --f7-list-item-footer-line-height: 1.2;\n /*\n --f7-list-button-text-color: var(--f7-theme-color);\n */\n --f7-list-button-font-size: inherit;\n --f7-list-button-font-weight: 400;\n --f7-list-button-text-align: center;\n --f7-list-group-title-line-height: inherit;\n --f7-menu-list-font-size: 14px;\n --f7-menu-list-item-title-font-size: 14px;\n --f7-menu-list-item-title-font-weight: 500;\n --f7-menu-list-item-subtitle-font-size: 14px;\n --f7-menu-list-item-text-font-size: 14px;\n --f7-menu-list-item-after-font-size: 14px;\n --f7-list-outline-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-chevron-icon-color: rgba(0, 0, 0, 0.2);\n}\n:root .dark,\n:root.dark {\n --f7-list-button-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-outline-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-group-title-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-chevron-icon-color: rgba(255, 255, 255, 0.3);\n}\n.ios {\n --f7-list-in-list-padding-left: 30px;\n --f7-list-inset-border-radius: 8px;\n --f7-list-margin-vertical: 35px;\n --f7-list-font-size: 17px;\n --f7-list-chevron-icon-area: 20px;\n --f7-list-item-title-text-color: inherit;\n --f7-list-item-subtitle-text-color: inherit;\n --f7-list-link-pressed-bg-color: rgba(0, 0, 0, 0.15);\n --f7-list-item-subtitle-font-size: 15px;\n --f7-list-item-text-font-size: 15px;\n --f7-list-item-text-line-height: 21px;\n --f7-list-item-after-font-size: inherit;\n --f7-list-item-after-padding: 5px;\n --f7-list-item-min-height: 44px;\n --f7-list-item-media-icons-margin: 5px;\n --f7-list-media-item-padding-vertical: 10px;\n --f7-list-media-item-title-font-weight: 600;\n --f7-list-button-border-color: rgba(0, 0, 0, 0.22);\n /*\n --f7-list-button-pressed-bg-color: rgba(var(--f7-theme-color-rgb), .15);\n */\n --f7-list-group-title-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-group-title-height: 31px;\n --f7-list-group-title-font-size: inherit;\n --f7-list-group-title-font-weight: 400;\n --f7-menu-list-offset: 8px;\n --f7-menu-list-border-radius: 8px;\n --f7-menu-list-item-bg-color: transparent;\n --f7-menu-list-item-text-color: inherit;\n --f7-menu-list-item-min-height: 44px;\n --f7-list-item-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-outline-inset-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-strong-bg-color: #fff;\n --f7-list-item-after-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-item-header-text-color: inherit;\n --f7-list-item-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-item-text-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-group-title-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-group-title-bg-color: #f7f7f7;\n --f7-menu-list-item-selected-text-color: var(--f7-theme-color);\n --f7-menu-list-item-selected-bg-color: rgba(var(--f7-theme-color-rgb), 0.15);\n}\n.ios .dark,\n.ios.dark {\n --f7-list-item-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-outline-inset-color: rgba(255, 255, 255, 0.15);\n --f7-list-strong-bg-color: #1c1c1d;\n --f7-list-item-after-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-item-header-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-item-footer-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-item-text-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-group-title-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-group-title-bg-color: #232323;\n --f7-list-link-pressed-bg-color: rgba(255, 255, 255, 0.08);\n --f7-menu-list-item-selected-text-color: inherit;\n --f7-menu-list-item-selected-bg-color: var(--f7-theme-color);\n}\n.md {\n --f7-list-in-list-padding-left: 24px;\n --f7-list-inset-border-radius: 16px;\n --f7-list-margin-vertical: 32px;\n --f7-list-font-size: 16px;\n --f7-list-chevron-icon-area: 26px;\n --f7-list-item-subtitle-font-size: 14px;\n --f7-list-item-text-font-size: 14px;\n --f7-list-item-text-line-height: 20px;\n --f7-list-item-after-font-size: 14px;\n --f7-list-item-after-padding: 8px;\n --f7-list-item-min-height: 48px;\n --f7-list-item-media-icons-margin: 8px;\n --f7-list-media-item-padding-vertical: 12px;\n --f7-list-media-item-title-font-weight: 500;\n --f7-list-button-border-color: transparent;\n /*\n --f7-list-button-pressed-bg-color: transparent;\n */\n --f7-list-group-title-border-color: transparent;\n --f7-list-group-title-height: 48px;\n --f7-list-group-title-font-size: 16px;\n --f7-list-group-title-font-weight: 400;\n --f7-menu-list-offset: 16px;\n --f7-menu-list-border-radius: 999px;\n --f7-menu-list-item-min-height: 56px;\n --f7-list-link-pressed-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-list-outline-inset-border-color: var(--f7-md-outline);\n --f7-list-item-border-color: var(--f7-md-outline);\n --f7-list-item-title-text-color: var(--f7-md-on-surface);\n --f7-list-item-subtitle-text-color: var(--f7-md-on-surface);\n --f7-list-group-title-bg-color: var(--f7-md-surface-2);\n --f7-list-group-title-text-color: var(--f7-md-on-surface-variant);\n --f7-list-strong-bg-color: var(--f7-md-surface-1);\n --f7-list-item-after-text-color: var(--f7-md-on-surface-variant);\n --f7-list-item-text-text-color: var(--f7-md-on-surface-variant);\n --f7-list-item-header-text-color: var(--f7-md-on-surface-variant);\n --f7-list-item-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-menu-list-item-text-color: var(--f7-md-on-surface-variant);\n --f7-menu-list-item-bg-color: var(--f7-md-surface-1);\n --f7-menu-list-item-selected-text-color: var(--f7-md-on-secondary-container);\n --f7-menu-list-item-selected-bg-color: var(--f7-md-secondary-container);\n}\n:root {\n --f7-list-chevron-icon-left: 'chevron_left';\n --f7-list-chevron-icon-right: 'chevron_right';\n}\n.list {\n position: relative;\n z-index: 1;\n font-size: var(--f7-list-font-size);\n margin: var(--f7-list-margin-vertical) 0;\n}\n.list-strong ul,\n.ios .list-strong-ios ul,\n.md .list-strong-md ul {\n background: var(--f7-list-strong-bg-color);\n}\n.list-outline ul:before,\n.ios .list-outline-ios ul:before,\n.md .list-outline-md ul:before {\n content: '';\n position: absolute;\n background-color: var(--f7-list-outline-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-outline ul:after,\n.ios .list-outline-ios ul:after,\n.md .list-outline-md ul:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-outline-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-outline.inset,\n.ios .list-outline-ios.inset,\n.ios .list-outline-ios.inset-ios,\n.md .list-outline-md.inset,\n.md .list-outline-md.inset-md {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n}\n.list ul {\n list-style: none;\n margin: 0;\n padding: 0;\n position: relative;\n}\n.list ul ul {\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-list-in-list-padding-left));\n}\n.list ul ul:before,\n.list ul ul:after {\n display: none !important;\n}\n.list li {\n position: relative;\n box-sizing: border-box;\n}\n.list .item-media {\n display: flex;\n flex-shrink: 0;\n flex-wrap: nowrap;\n align-items: center;\n box-sizing: border-box;\n padding-bottom: var(--f7-list-item-padding-vertical);\n padding-top: var(--f7-list-item-padding-vertical);\n position: relative;\n}\n.list .item-media + .item-inner {\n margin-right: var(--f7-list-item-media-margin);\n}\n.list .item-media i + i,\n.list .item-media i + img {\n margin-right: var(--f7-list-item-media-icons-margin);\n}\n.list .item-after {\n padding-right: var(--f7-list-item-after-padding);\n}\n.list .item-inner {\n position: relative;\n width: 100%;\n min-width: 0;\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n align-self: stretch;\n padding-top: var(--f7-list-item-padding-vertical);\n padding-bottom: var(--f7-list-item-padding-vertical);\n min-height: calc(var(--f7-list-item-min-height));\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.list .item-title {\n min-width: 0;\n flex-shrink: 1;\n white-space: var(--f7-list-item-title-white-space);\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n font-size: var(--f7-list-item-title-font-size);\n font-weight: var(--f7-list-item-title-font-weight);\n color: var(--f7-list-item-title-text-color);\n line-height: var(--f7-list-item-title-line-height);\n}\n.list .item-after {\n white-space: nowrap;\n flex-shrink: 0;\n display: flex;\n font-size: var(--f7-list-item-after-font-size);\n font-weight: var(--f7-list-item-after-font-weight);\n color: var(--f7-list-item-after-text-color);\n line-height: var(--f7-list-item-after-line-height);\n margin-right: auto;\n}\n.list .item-header,\n.list .item-footer {\n white-space: normal;\n}\n.list .item-header {\n color: var(--f7-list-item-header-text-color);\n font-size: var(--f7-list-item-header-font-size);\n font-weight: var(--f7-list-item-header-font-weight);\n line-height: var(--f7-list-item-header-line-height);\n}\n.list .item-footer {\n color: var(--f7-list-item-footer-text-color);\n font-size: var(--f7-list-item-footer-font-size);\n font-weight: var(--f7-list-item-footer-font-weight);\n line-height: var(--f7-list-item-footer-line-height);\n}\n.list .item-link,\n.list label.item-content,\n.list .list-button {\n transition-duration: 300ms;\n transition-property: background-color, color;\n position: relative;\n overflow: hidden;\n z-index: 0;\n cursor: pointer;\n}\n.list .item-link,\n.list .list-button {\n display: block;\n}\n.list .item-link,\n.list label.item-content {\n color: inherit;\n}\n.list .item-link.active-state,\n.list label.item-content.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.list .item-link .item-inner {\n padding-left: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.list .item-content {\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n min-height: calc(var(--f7-list-item-min-height));\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.list .item-subtitle {\n position: relative;\n overflow: hidden;\n white-space: nowrap;\n max-width: 100%;\n text-overflow: ellipsis;\n font-size: var(--f7-list-item-subtitle-font-size);\n font-weight: var(--f7-list-item-subtitle-font-weight);\n color: var(--f7-list-item-subtitle-text-color);\n line-height: var(--f7-list-item-subtitle-line-height);\n}\n.list .item-text {\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n /* autoprefixer: ignore next */\n -webkit-line-clamp: var(--f7-list-item-text-max-lines);\n /* autoprefixer: ignore next */\n -webkit-box-orient: vertical;\n display: -webkit-box;\n font-size: var(--f7-list-item-text-font-size);\n font-weight: var(--f7-list-item-text-font-weight);\n color: var(--f7-list-item-text-text-color);\n line-height: var(--f7-list-item-text-line-height);\n max-height: calc(var(--f7-list-item-text-line-height) * var(--f7-list-item-text-max-lines));\n}\n.list .item-title-row {\n position: relative;\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n}\n.list .item-title-row .item-after {\n align-self: center;\n}\n.list li:last-child .list-button:after {\n display: none !important;\n}\n.list li:last-child > .item-inner:after,\n.list li:last-child li:last-child > .item-inner:after,\n.list li:last-child > .item-content > .item-inner:after,\n.list li:last-child li:last-child > .item-content > .item-inner:after,\n.list li:last-child > .swipeout-content > .item-content > .item-inner:after,\n.list li:last-child li:last-child > .swipeout-content > .item-content > .item-inner:after,\n.list li:last-child > .item-link > .item-content > .item-inner:after,\n.list li:last-child li:last-child > .item-link > .item-content > .item-inner:after {\n display: none !important;\n}\n.list li li:last-child .item-inner:after,\n.list li:last-child li .item-inner:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-button {\n --f7-touch-ripple-color: var(--f7-link-touch-ripple-color, rgba(var(--f7-theme-color-rgb), 0.25));\n padding: 0 var(--f7-list-item-padding-horizontal);\n line-height: var(--f7-list-item-min-height);\n color: var(--f7-list-button-text-color, var(--f7-theme-color));\n font-size: var(--f7-list-button-font-size);\n font-weight: var(--f7-list-button-font-weight);\n text-align: var(--f7-list-button-text-align);\n}\n.ios .list-button.active-state {\n background-color: var(--f7-list-button-pressed-bg-color, rgba(var(--f7-theme-color-rgb), 0.15));\n}\n.md .list-button.active-state {\n background-color: var(--f7-list-button-pressed-bg-color, transparent);\n}\n.list-dividers .list-button:after,\n.ios .list-dividers-ios .list-button:after,\n.md .list-dividers-md .list-button:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-button-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-button[class*='color-'] {\n --f7-list-button-text-color: var(--f7-theme-color);\n}\n.simple-list li {\n position: relative;\n white-space: nowrap;\n text-overflow: ellipsis;\n max-width: 100%;\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n align-items: center;\n align-content: center;\n line-height: var(--f7-list-item-min-height);\n height: var(--f7-list-item-min-height);\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.simple-list li:after {\n left: var(--f7-list-item-padding-horizontal);\n right: 0;\n width: auto;\n right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n left: 0;\n}\n.simple-list li:last-child:after {\n display: none !important;\n}\n.links-list li {\n z-index: 1;\n}\n.links-list a {\n transition-duration: 300ms;\n transition-property: background-color;\n display: block;\n position: relative;\n overflow: hidden;\n display: flex;\n align-items: center;\n align-content: center;\n justify-content: space-between;\n box-sizing: border-box;\n white-space: nowrap;\n text-overflow: ellipsis;\n max-width: 100%;\n height: var(--f7-list-item-min-height);\n color: inherit;\n}\n.links-list a .ripple-wave {\n z-index: 0;\n}\n.links-list a:after {\n width: auto;\n}\n.links-list a.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.links-list a {\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n padding-left: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.links-list a:after {\n right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n left: 0;\n}\n.links-list li:last-child a:after {\n display: none !important;\n}\n.list-dividers.simple-list li:after,\n.ios .list-dividers-ios.simple-list li:after,\n.md .list-dividers-md.simple-list li:after,\n.list-dividers.links-list a:after,\n.ios .list-dividers-ios.links-list a:after,\n.md .list-dividers-md.links-list a:after,\n.list-dividers .item-inner:after,\n.ios .list-dividers-ios .item-inner:after,\n.md .list-dividers-md .item-inner:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li > .item-link,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item > .item-link {\n margin-left: calc(var(--f7-list-item-padding-horizontal) / 2);\n margin-right: calc(var(--f7-list-item-padding-horizontal) / 2);\n border-radius: 16px;\n}\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li > .item-link > .item-content,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item > .item-link > .item-content {\n margin-left: 0;\n margin-right: 0;\n}\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content {\n padding-right: calc(var(--f7-list-item-padding-horizontal) / 2 + var(--f7-safe-area-right));\n}\n.media-list,\nli.media-item {\n --f7-list-item-padding-vertical: var(--f7-list-media-item-padding-vertical);\n --f7-list-item-padding-horizontal: var(--f7-list-media-item-padding-horizontal);\n}\n.media-list .item-title,\nli.media-item .item-title {\n font-weight: var(--f7-list-media-item-title-font-weight, var(--f7-list-item-title-font-weight, inherit));\n}\n.media-list .item-inner,\nli.media-item .item-inner {\n display: block;\n align-self: stretch;\n}\n.media-list .item-media img,\nli.media-item .item-media img {\n display: block;\n}\n.media-list .item-link .item-inner,\nli.media-item .item-link .item-inner {\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.media-list .item-link .item-title-row,\nli.media-item .item-link .item-title-row {\n padding-left: calc(var(--f7-list-chevron-icon-area));\n}\n.media-list.chevron-center .item-link .item-inner,\n.media-list .chevron-center .item-link .item-inner,\n.media-list .item-link.chevron-center .item-inner,\nli.media-item.chevron-center .item-link .item-inner,\nli.media-item .item-link.chevron-center .item-inner,\nli.media-item .chevron-center .item-link .item-inner {\n padding-left: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.media-list.chevron-center .item-title-row,\n.media-list .chevron-center .item-title-row,\nli.media-item.chevron-center .item-title-row,\nli.media-item .chevron-center .item-title-row {\n padding-left: 0;\n}\n.list .item-link .item-inner:before,\n.links-list a:before,\n.media-list .item-link .item-title-row:before,\nli.media-item .item-link .item-title-row:before,\n.media-list.chevron-center .item-link .item-inner:before,\n.media-list .chevron-center .item-link .item-inner:before,\n.media-list .item-link.chevron-center .item-inner:before,\nli.media-item.chevron-center .item-link .item-inner:before,\nli.media-item .chevron-center .item-link .item-inner:before,\nli.media-item .item-link.chevron-center .item-inner:before {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n top: 50%;\n width: 8px;\n height: 14px;\n margin-top: -7px;\n font-size: var(--f7-list-chevron-icon-font-size);\n line-height: 14px;\n color: var(--f7-list-chevron-icon-color);\n pointer-events: none;\n left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n content: var(--f7-list-chevron-icon-left);\n}\n.media-list.chevron-center .item-title-row:before,\n.media-list .chevron-center .item-title-row:before,\nli.media-item.chevron-center .item-title-row:before,\nli.media-item .chevron-center .item-title-row:before {\n display: none;\n}\n.media-list .item-link .item-inner:before,\nli.media-item .item-link .item-inner:before {\n display: none;\n}\n.media-list .item-link .item-title-row:before,\nli.media-item .item-link .item-title-row:before {\n left: 0;\n}\n.list-group ul:after,\n.list-group ul:before {\n z-index: 25 !important;\n}\n.list-group + .list-group ul:before {\n display: none !important;\n}\nli.list-group-title,\n.list-group-title {\n margin-top: -1px;\n white-space: nowrap;\n position: relative;\n max-width: 100%;\n text-overflow: ellipsis;\n overflow: hidden;\n z-index: 15;\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n box-sizing: border-box;\n display: flex;\n align-items: center;\n align-content: center;\n height: var(--f7-list-group-title-height);\n color: var(--f7-list-group-title-text-color);\n font-size: var(--f7-list-group-title-font-size);\n font-weight: var(--f7-list-group-title-font-weight);\n background-color: var(--f7-list-group-title-bg-color);\n line-height: var(--f7-list-group-title-line-height);\n}\nli.list-group-title:before,\n.list-group-title:before {\n content: '';\n position: absolute;\n background-color: var(--f7-list-group-title-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\nli.list-group-title:after,\n.list-group-title:after {\n display: none !important;\n}\n.list-group > .list-group-title,\n.list-group > ul > .list-group-title {\n top: 0;\n margin-top: 0;\n position: sticky;\n z-index: 20;\n}\n.page-with-navbar-large .list-group > .list-group-title,\n.page-with-navbar-large .list-group > ul > .list-group-title {\n top: calc(-1 * var(--f7-navbar-large-title-height));\n}\n.list.inset,\n.ios .list.inset-ios,\n.md .list.inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n}\n.list.inset .block-title,\n.ios .list.inset-ios .block-title,\n.md .list.inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n}\n.list.inset ul,\n.ios .list.inset-ios ul,\n.md .list.inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n}\n.list.inset ul:before,\n.ios .list.inset-ios ul:before,\n.md .list.inset-md ul:before,\n.list.inset ul:after,\n.ios .list.inset-ios ul:after,\n.md .list.inset-md ul:after {\n display: none !important;\n}\n.list.inset li.swipeout:first-child,\n.ios .list.inset-ios li.swipeout:first-child,\n.md .list.inset-md li.swipeout:first-child,\n.list.inset li:first-child > a,\n.ios .list.inset-ios li:first-child > a,\n.md .list.inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n}\n.list.inset li.swipeout:last-child,\n.ios .list.inset-ios li.swipeout:last-child,\n.md .list.inset-md li.swipeout:last-child,\n.list.inset li:last-child > a,\n.ios .list.inset-ios li:last-child > a,\n.md .list.inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n}\n.list.inset li.swipeout:first-child:last-child,\n.ios .list.inset-ios li.swipeout:first-child:last-child,\n.md .list.inset-md li.swipeout:first-child:last-child,\n.list.inset li:first-child:last-child > a,\n.ios .list.inset-ios li:first-child:last-child > a,\n.md .list.inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n}\n@media (min-width: 480px) {\n .list.xsmall-inset,\n .ios .list.xsmall-inset-ios,\n .md .list.xsmall-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.xsmall-inset .block-title,\n .ios .list.xsmall-inset-ios .block-title,\n .md .list.xsmall-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.xsmall-inset ul,\n .ios .list.xsmall-inset-ios ul,\n .md .list.xsmall-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xsmall-inset ul:before,\n .ios .list.xsmall-inset-ios ul:before,\n .md .list.xsmall-inset-md ul:before,\n .list.xsmall-inset ul:after,\n .ios .list.xsmall-inset-ios ul:after,\n .md .list.xsmall-inset-md ul:after {\n display: none !important;\n }\n .list.xsmall-inset li:first-child > a,\n .ios .list.xsmall-inset-ios li:first-child > a,\n .md .list.xsmall-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.xsmall-inset li:last-child > a,\n .ios .list.xsmall-inset-ios li:last-child > a,\n .md .list.xsmall-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.xsmall-inset li:first-child:last-child > a,\n .ios .list.xsmall-inset-ios li:first-child:last-child > a,\n .md .list.xsmall-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xsmall-inset.list-outline ul,\n .ios .list.xsmall-inset-ios.list-outline ul,\n .ios .list.xsmall-inset-ios.list-outline-ios ul,\n .md .list.xsmall-inset-md.list-outline ul,\n .md .list.xsmall-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 568px) {\n .list.small-inset,\n .ios .list.small-inset-ios,\n .md .list.small-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.small-inset .block-title,\n .ios .list.small-inset-ios .block-title,\n .md .list.small-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.small-inset ul,\n .ios .list.small-inset-ios ul,\n .md .list.small-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.small-inset ul:before,\n .ios .list.small-inset-ios ul:before,\n .md .list.small-inset-md ul:before,\n .list.small-inset ul:after,\n .ios .list.small-inset-ios ul:after,\n .md .list.small-inset-md ul:after {\n display: none !important;\n }\n .list.small-inset li:first-child > a,\n .ios .list.small-inset-ios li:first-child > a,\n .md .list.small-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.small-inset li:last-child > a,\n .ios .list.small-inset-ios li:last-child > a,\n .md .list.small-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.small-inset li:first-child:last-child > a,\n .ios .list.small-inset-ios li:first-child:last-child > a,\n .md .list.small-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.small-inset.list-outline ul,\n .ios .list.small-inset-ios.list-outline ul,\n .ios .list.small-inset-ios.list-outline-ios ul,\n .md .list.small-inset-md.list-outline ul,\n .md .list.small-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 768px) {\n .list.medium-inset,\n .ios .list.medium-inset-ios,\n .md .list.medium-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.medium-inset .block-title,\n .ios .list.medium-inset-ios .block-title,\n .md .list.medium-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.medium-inset ul,\n .ios .list.medium-inset-ios ul,\n .md .list.medium-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.medium-inset ul:before,\n .ios .list.medium-inset-ios ul:before,\n .md .list.medium-inset-md ul:before,\n .list.medium-inset ul:after,\n .ios .list.medium-inset-ios ul:after,\n .md .list.medium-inset-md ul:after {\n display: none !important;\n }\n .list.medium-inset li:first-child > a,\n .ios .list.medium-inset-ios li:first-child > a,\n .md .list.medium-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.medium-inset li:last-child > a,\n .ios .list.medium-inset-ios li:last-child > a,\n .md .list.medium-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.medium-inset li:first-child:last-child > a,\n .ios .list.medium-inset-ios li:first-child:last-child > a,\n .md .list.medium-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.medium-inset.list-outline ul,\n .ios .list.medium-inset-ios.list-outline ul,\n .ios .list.medium-inset-ios.list-outline-ios ul,\n .md .list.medium-inset-md.list-outline ul,\n .md .list.medium-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 1024px) {\n .list.large-inset,\n .ios .list.large-inset-ios,\n .md .list.large-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.large-inset .block-title,\n .ios .list.large-inset-ios .block-title,\n .md .list.large-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.large-inset ul,\n .ios .list.large-inset-ios ul,\n .md .list.large-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.large-inset ul:before,\n .ios .list.large-inset-ios ul:before,\n .md .list.large-inset-md ul:before,\n .list.large-inset ul:after,\n .ios .list.large-inset-ios ul:after,\n .md .list.large-inset-md ul:after {\n display: none !important;\n }\n .list.large-inset li:first-child > a,\n .ios .list.large-inset-ios li:first-child > a,\n .md .list.large-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.large-inset li:last-child > a,\n .ios .list.large-inset-ios li:last-child > a,\n .md .list.large-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.large-inset li:first-child:last-child > a,\n .ios .list.large-inset-ios li:first-child:last-child > a,\n .md .list.large-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.large-inset.list-outline ul,\n .ios .list.large-inset-ios.list-outline ul,\n .ios .list.large-inset-ios.list-outline-ios ul,\n .md .list.large-inset-md.list-outline ul,\n .md .list.large-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 1200px) {\n .list.xlarge-inset,\n .ios .list.xlarge-inset-ios,\n .md .list.xlarge-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.xlarge-inset .block-title,\n .ios .list.xlarge-inset-ios .block-title,\n .md .list.xlarge-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.xlarge-inset ul,\n .ios .list.xlarge-inset-ios ul,\n .md .list.xlarge-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xlarge-inset ul:before,\n .ios .list.xlarge-inset-ios ul:before,\n .md .list.xlarge-inset-md ul:before,\n .list.xlarge-inset ul:after,\n .ios .list.xlarge-inset-ios ul:after,\n .md .list.xlarge-inset-md ul:after {\n display: none !important;\n }\n .list.xlarge-inset li:first-child > a,\n .ios .list.xlarge-inset-ios li:first-child > a,\n .md .list.xlarge-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.xlarge-inset li:last-child > a,\n .ios .list.xlarge-inset-ios li:last-child > a,\n .md .list.xlarge-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.xlarge-inset li:first-child:last-child > a,\n .ios .list.xlarge-inset-ios li:first-child:last-child > a,\n .md .list.xlarge-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xlarge-inset.list-outline ul,\n .ios .list.xlarge-inset-ios.list-outline ul,\n .ios .list.xlarge-inset-ios.list-outline-ios ul,\n .md .list.xlarge-inset-md.list-outline ul,\n .md .list.xlarge-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n.list.no-chevron,\n.list .no-chevron,\n.menu-list {\n --f7-list-chevron-icon-color: transparent;\n --f7-list-chevron-icon-area: 0px;\n}\n.menu-list {\n --f7-list-font-size: var(--f7-menu-list-font-size);\n --f7-list-item-title-font-size: var(--f7-menu-list-item-title-font-size);\n --f7-list-item-title-font-weight: var(--f7-menu-list-item-title-font-weight);\n --f7-list-item-subtitle-font-size: var(--f7-menu-list-item-subtitle-font-size);\n --f7-list-item-text-font-size: var(--f7-menu-list-item-text-font-size);\n --f7-list-item-after-font-size: var(--f7-menu-list-item-after-font-size);\n --f7-list-item-min-height: var(--f7-menu-list-item-min-height);\n}\n.menu-list .item-header,\n.menu-list .item-footer,\n.menu-list .item-title,\n.menu-list .item-after,\n.menu-list .item-text,\n.menu-list .item-subtitle {\n transition-duration: 300ms;\n}\n.menu-list li:not(.list-group-title) {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n.menu-list li:not(.list-group-title):first-child {\n padding-top: 4px;\n}\n.menu-list li:not(.list-group-title):last-child {\n padding-bottom: 4px;\n}\n.menu-list .item-link {\n margin-left: var(--f7-menu-list-offset);\n margin-right: var(--f7-menu-list-offset);\n border-radius: var(--f7-menu-list-border-radius) !important;\n color: var(--f7-menu-list-item-text-color);\n background-color: var(--f7-menu-list-item-bg-color);\n}\n.menu-list .item-inner:after {\n display: none;\n}\n.menu-list .item-selected .item-link,\n.menu-list .item-selected.item-link,\n.menu-list .tab-link-active .item-link,\n.menu-list .tab-link-active.item-link {\n color: var(--f7-menu-list-item-selected-text-color);\n background-color: var(--f7-menu-list-item-selected-bg-color);\n}\n.menu-list .item-selected .item-header,\n.menu-list .item-selected .item-footer,\n.menu-list .item-selected .item-title,\n.menu-list .item-selected .item-after,\n.menu-list .item-selected .item-text,\n.menu-list .item-selected .item-subtitle {\n color: var(--f7-menu-list-item-selected-text-color);\n}\n.ios .item-link.active-state .item-inner:after,\n.ios .list-button.active-state:after,\n.ios .links-list a.active-state:after {\n background-color: transparent;\n}\n.ios .links-list a.active-state,\n.ios .list .item-link.active-state,\n.ios .list .list-button.active-state {\n transition-duration: 0ms;\n}\n.md .menu-list .item-link.active-state {\n background-color: var(--f7-menu-list-item-bg-color);\n}\n/* === Badge === */\n:root {\n --f7-badge-text-color: #fff;\n --f7-badge-bg-color: #8e8e93;\n --f7-badge-in-icon-size: 16px;\n --f7-badge-in-icon-font-size: 10px;\n --f7-badge-font-weight: normal;\n --f7-badge-font-size: 12px;\n}\n.ios {\n --f7-badge-padding: 0 4px;\n --f7-badge-size: 20px;\n --f7-badge-font-weight: 600;\n}\n.md {\n --f7-badge-padding: 2px 6px;\n --f7-badge-size: 20px;\n --f7-badge-font-weight: 500;\n}\n.badge {\n display: inline-flex;\n align-items: center;\n align-content: center;\n justify-content: center;\n color: var(--f7-badge-text-color);\n background: var(--f7-badge-bg-color);\n position: relative;\n box-sizing: border-box;\n text-align: center;\n vertical-align: middle;\n font-weight: var(--f7-badge-font-weight);\n font-size: var(--f7-badge-font-size);\n border-radius: var(--f7-badge-size);\n padding: var(--f7-badge-padding);\n height: var(--f7-badge-size);\n min-width: var(--f7-badge-size);\n}\n.icon .badge,\n.f7-icons .badge,\n.framework7-icons .badge,\n.material-icons .badge {\n position: absolute;\n left: 100%;\n margin-left: -10px;\n top: -2px;\n font-family: var(--f7-font-family);\n --f7-badge-font-size: var(--f7-badge-in-icon-font-size);\n --f7-badge-size: var(--f7-badge-in-icon-size);\n --f7-badge-padding: 0px 2px;\n}\n.badge[class*='color-'] {\n --f7-badge-bg-color: var(--f7-theme-color);\n}\n:root {\n --f7-button-font-size: 14px;\n --f7-button-min-width: 32px;\n --f7-button-bg-color: transparent;\n --f7-button-border-width: 0px;\n /*\n --f7-button-text-color: var(--f7-theme-color);\n --f7-button-pressed-text-color: var(--f7-button-text-color, var(--f7-theme-color));\n --f7-button-border-color: var(--f7-theme-color);\n --f7-button-fill-bg-color: var(--f7-theme-color);\n --f7-button-padding-vertical: 0px;\n */\n --f7-button-raised-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);\n --f7-button-raised-pressed-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16),\n 0 3px 6px rgba(0, 0, 0, 0.23);\n --f7-segmented-raised-divider-color: rgba(0, 0, 0, 0.1);\n --f7-segmented-strong-padding: 2px;\n --f7-segmented-strong-between-buttons: 4px;\n --f7-segmented-strong-button-font-weight: 500;\n --f7-segmented-strong-button-active-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.25);\n --f7-segmented-strong-button-text-color: #000;\n --f7-segmented-strong-button-hover-bg-color: rgba(0, 0, 0, 0.04);\n --f7-segmented-strong-button-active-text-color: #000;\n --f7-segmented-strong-button-active-bg-color: #fff;\n}\n:root .dark,\n:root.dark {\n --f7-segmented-strong-button-hover-bg-color: rgba(255, 255, 255, 0.02);\n --f7-segmented-strong-button-active-bg-color: rgba(255, 255, 255, 0.14);\n --f7-segmented-strong-button-text-color: #fff;\n --f7-segmented-strong-button-active-text-color: #fff;\n}\n.ios {\n --f7-button-fill-text-color: #fff;\n --f7-button-text-transform: uppercase;\n --f7-button-height: 28px;\n --f7-button-padding-horizontal: 10px;\n --f7-button-border-radius: 4px;\n --f7-button-font-weight: 600;\n --f7-button-letter-spacing: 0;\n /*\n --f7-button-outline-border-color: var(--f7-theme-color);\n */\n --f7-button-outline-border-width: 2px;\n /*\n --f7-button-pressed-bg-color: rgba(var(--f7-theme-color-rgb), .15);\n --f7-button-fill-pressed-bg-color: var(--f7-theme-color-tint);\n */\n --f7-button-large-text-transform: uppercase;\n --f7-button-large-height: 44px;\n --f7-button-large-font-size: 17px;\n --f7-button-large-font-weight: 500;\n --f7-button-small-outline-border-width: 2px;\n --f7-button-small-text-transform: uppercase;\n --f7-button-small-height: 26px;\n --f7-button-small-font-size: 13px;\n --f7-button-small-font-weight: 600;\n --f7-segmented-strong-button-text-transform: none;\n --f7-segmented-strong-button-active-font-weight: 600;\n --f7-button-tonal-bg-color: rgba(var(--f7-theme-color-rgb), 0.15);\n --f7-button-tonal-pressed-bg-color: rgba(var(--f7-theme-color-rgb), 0.25);\n --f7-button-tonal-text-color: var(--f7-theme-color);\n --f7-segmented-strong-bg-color: rgba(0, 0, 0, 0.07);\n --f7-segmented-strong-button-pressed-bg-color: rgba(0, 0, 0, 0.07);\n}\n.ios .dark,\n.ios.dark {\n --f7-segmented-strong-bg-color: rgba(255, 255, 255, 0.1);\n --f7-segmented-strong-button-pressed-bg-color: rgba(255, 255, 255, 0.04);\n}\n.md {\n /*\n --f7-button-pressed-bg-color: transparent;\n */\n --f7-button-text-transform: none;\n --f7-button-height: 40px;\n --f7-button-padding-horizontal: 16px;\n --f7-button-border-radius: 8px;\n --f7-button-font-weight: 500;\n --f7-button-letter-spacing: normal;\n --f7-button-outline-border-width: 1px;\n --f7-button-large-text-transform: none;\n --f7-button-large-height: 48px;\n --f7-button-large-font-size: 14px;\n --f7-button-large-font-weight: 500;\n --f7-button-small-text-transform: none;\n --f7-button-small-outline-border-width: 1px;\n --f7-button-small-height: 32px;\n --f7-button-small-font-size: 14px;\n --f7-button-small-font-weight: 500;\n --f7-segmented-strong-button-text-transform: none;\n --f7-segmented-strong-button-active-font-weight: 500;\n --f7-segmented-strong-button-pressed-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-button-fill-pressed-bg-color: transparent;\n --f7-button-fill-text-color: var(--f7-md-on-primary);\n --f7-button-outline-border-color: var(--f7-md-outline);\n --f7-segmented-strong-bg-color: var(--f7-md-surface-variant);\n --f7-button-tonal-bg-color: var(--f7-md-secondary-container);\n --f7-button-tonal-pressed-bg-color: transparent;\n --f7-button-tonal-text-color: var(--f7-md-on-secondary-container);\n}\nbutton {\n -webkit-appearance: none;\n appearance: none;\n width: 100%;\n}\n.button {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n text-decoration: none;\n text-align: center;\n display: flex;\n -webkit-appearance: none;\n appearance: none;\n background: none;\n margin: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n position: relative;\n overflow: hidden;\n font-family: inherit;\n cursor: pointer;\n outline: 0;\n box-sizing: border-box;\n vertical-align: middle;\n justify-content: center;\n align-items: center;\n border: var(--f7-button-border-width, 0px) solid var(--f7-button-border-color, var(--f7-theme-color));\n font-size: var(--f7-button-font-size);\n color: var(--f7-button-text-color, var(--f7-theme-color));\n height: var(--f7-button-height);\n line-height: calc(var(--f7-button-height) - var(--f7-button-border-width, 0) * 2);\n padding: var(--f7-button-padding-vertical, 0px) var(--f7-button-padding-horizontal);\n border-radius: var(--f7-button-border-radius);\n min-width: var(--f7-button-min-width);\n font-weight: var(--f7-button-font-weight);\n letter-spacing: var(--f7-button-letter-spacing);\n text-transform: var(--f7-button-text-transform);\n background-color: var(--f7-button-bg-color);\n box-shadow: var(--f7-button-box-shadow);\n}\n.button.active-state {\n color: var(--f7-button-pressed-text-color, var(--f7-button-text-color, var(--f7-theme-color)));\n}\ninput[type='submit'].button,\ninput[type='button'].button,\ninput[type='reset'].button {\n width: 100%;\n}\n.button > i + span,\n.button > span + span,\n.button > span ~ i {\n margin-right: 4px;\n}\n.subnavbar .button,\n.navbar .button,\n.toolbar .button,\n.searchbar .button {\n color: var(--f7-button-text-color, var(--f7-theme-color));\n}\n.button-round,\n.ios .button-round-ios,\n.md .button-round-md {\n --f7-button-border-radius: var(--f7-button-height);\n}\n.button-fill,\n.ios .button-fill-ios,\n.md .button-fill-md,\n.button-active,\n.button.tab-link-active {\n --f7-button-bg-color: var(--f7-button-fill-bg-color, var(--f7-theme-color));\n --f7-button-text-color: var(--f7-button-fill-text-color, #fff);\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.ios .color-white .button-fill,\n.ios .color-white .ios .button-fill-ios,\n.ios .color-white .md .button-fill-md,\n.ios .color-white .button-active,\n.ios .color-white .button.tab-link-active,\n.ios .button-fill.color-white,\n.ios .ios .button-fill-ios.color-white,\n.ios .md .button-fill-md.color-white,\n.ios .button-active.color-white,\n.ios .button.tab-link-active.color-white {\n --f7-button-text-color: #000;\n}\n.button-fill,\n.ios .button-fill-ios,\n.md .button-fill-md {\n --f7-button-pressed-bg-color: var(--f7-button-fill-pressed-bg-color);\n}\n.button-active,\n.button.tab-link-active {\n --f7-button-pressed-bg-color: var(--f7-button-bg-color);\n}\n.button-outline,\n.ios .button-outline-ios,\n.md .button-outline-md {\n --f7-button-border-color: var(--f7-button-outline-border-color, var(--f7-theme-color));\n --f7-button-border-width: var(--f7-button-outline-border-width);\n}\n.button-tonal,\n.ios .button-tonal-ios,\n.md .button-tonal-md {\n --f7-button-bg-color: var(--f7-button-tonal-bg-color);\n --f7-button-text-color: var(--f7-button-tonal-text-color);\n --f7-button-pressed-bg-color: var(--f7-button-tonal-pressed-bg-color);\n}\n.button-large,\n.ios .button-large-ios,\n.md .button-large-md {\n --f7-button-height: var(--f7-button-large-height);\n --f7-button-font-size: var(--f7-button-large-font-size);\n --f7-button-font-weight: var(--f7-button-large-font-weight);\n --f7-button-text-transform: var(--f7-button-large-text-transform);\n}\n.button-small,\n.ios .button-small-ios,\n.md .button-small-md {\n --f7-button-outline-border-width: var(--f7-button-small-outline-border-width);\n --f7-button-height: var(--f7-button-small-height);\n --f7-button-font-size: var(--f7-button-small-font-size);\n --f7-button-font-weight: var(--f7-button-small-font-weight);\n --f7-button-text-transform: var(--f7-button-small-text-transform);\n}\n.ios .button-small.button-fill,\n.ios .button-small-ios.button-fill,\n.ios .button-small.button-fill-ios {\n --f7-button-border-width: var(--f7-button-small-outline-border-width);\n --f7-button-pressed-text-color: var(--f7-theme-color);\n --f7-button-pressed-bg-color: transparent;\n}\n.segmented {\n align-self: center;\n display: flex;\n flex-wrap: nowrap;\n border-radius: var(--f7-button-border-radius);\n box-shadow: var(--f7-button-box-shadow);\n box-sizing: border-box;\n}\n.segmented .button,\n.segmented button {\n width: 100%;\n flex-shrink: 1;\n min-width: 0;\n border-radius: 0;\n}\n.segmented .button:first-child {\n border-radius: 0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0;\n}\n.segmented .button:not(.button-outline):first-child {\n border-right: none;\n}\n.segmented .button.button-outline:nth-child(n + 2) {\n border-right: none;\n}\n.segmented .button:last-child {\n border-radius: var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius);\n}\n.segmented .button-round:first-child {\n border-radius: 0 var(--f7-button-height) var(--f7-button-height) 0;\n}\n.segmented .button-round:last-child {\n border-radius: var(--f7-button-height) 0 0 var(--f7-button-height);\n}\n.segmented .button:first-child:last-child {\n border-radius: var(--f7-button-border-radius);\n}\n.segmented-raised,\n.ios .segmented-raised-ios,\n.md .segmented-raised-md {\n box-shadow: var(--f7-button-raised-box-shadow);\n}\n.segmented-raised .button:not(.button-outline),\n.ios .segmented-raised-ios .button:not(.button-outline),\n.md .segmented-raised-md .button:not(.button-outline) {\n border-right: 1px solid var(--f7-segmented-raised-divider-color);\n}\n.button-raised,\n.ios .button-raised-ios,\n.md .button-raised-md {\n --f7-button-box-shadow: var(--f7-button-raised-box-shadow);\n}\n.button-raised.active-state,\n.ios .button-raised-ios.active-state,\n.md .button-raised-md.active-state {\n --f7-button-box-shadow: var(--f7-button-raised-pressed-box-shadow);\n}\n.segmented-strong,\n.ios .segmented-strong-ios,\n.md .segmented-strong-md {\n --f7-button-bg-color: transparent;\n --f7-button-hover-bg-color: var(--f7-segmented-strong-button-hover-bg-color);\n --f7-button-text-color: var(--f7-segmented-strong-button-text-color);\n --f7-button-font-weight: var(--f7-segmented-strong-button-font-weight);\n --f7-button-text-transform: var(--f7-segmented-strong-button-text-transform);\n --f7-button-pressed-bg-color: var(--f7-segmented-strong-button-pressed-bg-color);\n position: relative;\n background: var(--f7-segmented-strong-bg-color);\n border-radius: calc(var(--f7-button-border-radius) + 2px);\n box-shadow: none;\n padding: var(--f7-segmented-strong-padding);\n overflow: hidden;\n}\n.segmented-strong .button,\n.ios .segmented-strong-ios .button,\n.md .segmented-strong-md .button {\n z-index: 1;\n transform: translate3d(0, 0, 0);\n}\n.segmented-strong .button,\n.ios .segmented-strong-ios .button,\n.md .segmented-strong-md .button,\n.segmented-strong .button:first-child,\n.ios .segmented-strong-ios .button:first-child,\n.md .segmented-strong-md .button:first-child,\n.segmented-strong .button:last-child,\n.ios .segmented-strong-ios .button:last-child,\n.md .segmented-strong-md .button:last-child {\n border-radius: var(--f7-button-border-radius);\n}\n.segmented-strong .button + .button,\n.ios .segmented-strong-ios .button + .button,\n.md .segmented-strong-md .button + .button {\n margin-right: var(--f7-segmented-strong-between-buttons);\n}\n.segmented-strong .button.button-active,\n.ios .segmented-strong-ios .button.button-active,\n.md .segmented-strong-md .button.button-active,\n.segmented-strong .button.tab-link-active,\n.ios .segmented-strong-ios .button.tab-link-active,\n.md .segmented-strong-md .button.tab-link-active {\n --f7-button-hover-bg-color: transparent;\n --f7-button-bg-color: transparent;\n --f7-button-text-color: var(--f7-segmented-strong-button-active-text-color);\n --f7-button-font-weight: var(--f7-segmented-strong-button-active-font-weight);\n}\n.segmented-strong .segmented-highlight,\n.ios .segmented-strong-ios .segmented-highlight,\n.md .segmented-strong-md .segmented-highlight {\n --f7-segmented-highlight-num: 1;\n --f7-segmented-highlight-active: 0;\n --f7-segmented-highlight-padding: calc(var(--f7-segmented-strong-padding) * 2);\n --f7-segmented-highlight-between: var(--f7-segmented-strong-between-buttons);\n --f7-segmented-highlight-width: calc((100% - var(--f7-segmented-highlight-padding) - var(--f7-segmented-highlight-between) * (var(--f7-segmented-highlight-num) - 1)) / var(--f7-segmented-highlight-num));\n position: absolute;\n background-color: var(--f7-segmented-strong-button-active-bg-color);\n border-radius: var(--f7-button-border-radius);\n box-shadow: var(--f7-segmented-strong-button-active-box-shadow);\n left: var(--f7-segmented-strong-padding);\n top: var(--f7-segmented-strong-padding);\n height: calc(100% - var(--f7-segmented-strong-padding) * 2);\n width: var(--f7-segmented-highlight-width);\n z-index: 0;\n transform: translateX(calc(var(--f7-segmented-highlight-active) * 100% + var(--f7-segmented-highlight-active) * var(--f7-segmented-highlight-between)));\n transition: 200ms;\n}\n.button:nth-child(2) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 2;\n}\n.button:nth-child(3) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 3;\n}\n.button:nth-child(4) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 4;\n}\n.button:nth-child(5) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 5;\n}\n.button:nth-child(6) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 6;\n}\n.button:nth-child(7) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 7;\n}\n.button:nth-child(8) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 8;\n}\n.button:nth-child(9) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 9;\n}\n.button:nth-child(10) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 10;\n}\n.button-active:nth-child(2) ~ .segmented-highlight,\n.tab-link-active:nth-child(2) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 1;\n}\n.button-active:nth-child(3) ~ .segmented-highlight,\n.tab-link-active:nth-child(3) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 2;\n}\n.button-active:nth-child(4) ~ .segmented-highlight,\n.tab-link-active:nth-child(4) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 3;\n}\n.button-active:nth-child(5) ~ .segmented-highlight,\n.tab-link-active:nth-child(5) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 4;\n}\n.button-active:nth-child(6) ~ .segmented-highlight,\n.tab-link-active:nth-child(6) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 5;\n}\n.button-active:nth-child(7) ~ .segmented-highlight,\n.tab-link-active:nth-child(7) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 6;\n}\n.button-active:nth-child(8) ~ .segmented-highlight,\n.tab-link-active:nth-child(8) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 7;\n}\n.button-active:nth-child(9) ~ .segmented-highlight,\n.tab-link-active:nth-child(9) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 8;\n}\n.button-active:nth-child(10) ~ .segmented-highlight,\n.tab-link-active:nth-child(10) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 9;\n}\n.segmented-round,\n.ios .segmented-round-ios,\n.md .segmented-round-md {\n border-radius: var(--f7-button-height);\n}\n.segmented-round .segmented-highlight,\n.ios .segmented-round-ios .segmented-highlight,\n.md .segmented-round-md .segmented-highlight {\n border-radius: var(--f7-button-height);\n}\n.subnavbar .segmented {\n width: 100%;\n}\n.button-preloader {\n position: relative;\n --f7-preloader-color: var(--f7-button-text-color, var(--f7-theme-color));\n}\n.button-preloader:not(.button-large) {\n --f7-preloader-size: calc(var(--f7-button-height) - 6px);\n}\n.button-preloader.button-fill {\n --f7-preloader-color: #fff;\n}\n.button-preloader > span:not(.preloader) {\n transition: 0.2s;\n display: inline-flex;\n align-items: center;\n align-content: center;\n justify-content: center;\n transform: scale(1);\n}\n.button-preloader > .preloader {\n position: absolute;\n left: 50%;\n top: 50%;\n transition: 0.2s;\n transition-property: opacity;\n opacity: 0;\n visibility: hidden;\n margin-left: calc(-1 * var(--f7-preloader-size) / 2);\n margin-top: calc(-1 * var(--f7-preloader-size) / 2);\n}\n.button-preloader.button-loading > span:not(.preloader) {\n opacity: 0;\n transform: scale(0);\n}\n.button-preloader.button-loading > .preloader {\n opacity: 1;\n visibility: visible;\n}\n.ios .button {\n transition-duration: 100ms;\n}\n.ios .button.active-state {\n background-color: var(--f7-button-pressed-bg-color, rgba(var(--f7-theme-color-rgb), 0.15));\n}\n.ios .button-fill,\n.ios .button-fill-ios {\n --f7-button-pressed-bg-color: var(--f7-button-fill-pressed-bg-color, var(--f7-theme-color-tint));\n}\n.ios .button-small,\n.ios .button-small-ios {\n transition-duration: 200ms;\n}\n.md .button {\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n}\n.md .button-fill,\n.md .button-fill-md {\n --f7-button-pressed-bg-color: var(--f7-button-fill-pressed-bg-color, transparent);\n}\n/* === Touch Ripple === */\n:root {\n --f7-touch-ripple-black: rgba(0, 0, 0, 0.1);\n --f7-touch-ripple-white: rgba(255, 255, 255, 0.15);\n --f7-touch-ripple-color: var(--f7-touch-ripple-black);\n}\n.dark {\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.ripple,\n.fab a,\n.link,\n.item-link,\n.list-button,\n.button,\n.dialog-button,\n.tab-link,\n.radio,\n.checkbox,\n.actions-button,\n.speed-dial-buttons a {\n -webkit-user-select: none;\n user-select: none;\n}\n.ripple-wave {\n left: 0;\n top: 0;\n position: absolute !important;\n border-radius: 50%;\n pointer-events: none;\n z-index: -1;\n padding: 0;\n margin: 0;\n font-size: 0;\n transform: translate3d(0px, 0px, 0) scale(0);\n background-color: var(--f7-touch-ripple-color);\n animation: touch-ripple-in 200ms forwards;\n}\n.ripple-wave.ripple-wave-inset {\n background-image: none;\n background-color: var(--f7-touch-ripple-color);\n}\n.ripple-wave.ripple-wave-out {\n transform: var(--f7-ripple-transform);\n animation: touch-ripple-out 250ms forwards !important;\n}\n.item-link .ripple-wave,\n.list label.item-content .ripple-wave,\n.list-button .ripple-wave,\n.links-list a .ripple-wave,\n.button .ripple-wave,\nbutton .ripple-wave,\n.dialog-button .ripple-wave,\n.tab-link .ripple-wave,\n.item-radio .ripple-wave,\n.item-checkbox .ripple-wave,\n.actions-button .ripple-wave,\n.fab a .ripple-wave,\n.stepper-button .ripple-wave,\n.stepper-button-minus .ripple-wave,\n.stepper-button-plus .ripple-wave,\n.list.accordion-list .accordion-item-toggle .ripple-wave,\n.photo-browser .toolbar .link .ripple-wave,\n.ripple-blur .ripple-wave {\n animation: touch-ripple-in-blurred 250ms forwards;\n background-image: radial-gradient(closest-side circle at 50% 50%, var(--f7-touch-ripple-color) 50%, rgba(255, 255, 255, 0));\n background-color: transparent;\n}\n.checkbox .ripple-wave,\n.radio .ripple-wave,\n.data-table .sortable-cell .ripple-wave {\n z-index: 0;\n}\n[class*='ripple-color-'] {\n --f7-touch-ripple-color: var(--f7-theme-color-ripple-color);\n}\n@keyframes touch-ripple-in-blurred {\n from {\n transform: translate3d(0px, 0px, 0) scale(0.5);\n }\n to {\n transform: var(--f7-ripple-transform);\n }\n}\n@keyframes touch-ripple-in {\n from {\n transform: translate3d(0px, 0px, 0) scale(0);\n }\n to {\n transform: var(--f7-ripple-transform);\n }\n}\n@keyframes touch-ripple-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n/* === Icon === */\n.f7-icons,\n.material-icons {\n width: 1em;\n height: 1em;\n}\ni.icon {\n display: inline-block;\n vertical-align: middle;\n background-size: 100% auto;\n background-position: center;\n background-repeat: no-repeat;\n font-style: normal;\n position: relative;\n}\n.icon-back:after,\n.icon-prev:after,\n.icon-forward:after,\n.icon-next:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n.icon[class*='color-'] {\n color: var(--f7-theme-color);\n}\n.ios .icon-back,\n.ios .icon-prev,\n.ios .icon-forward,\n.ios .icon-next {\n width: 12px;\n height: 20px;\n line-height: 20px;\n}\n.ios .icon-back:after,\n.ios .icon-prev:after,\n.ios .icon-forward:after,\n.ios .icon-next:after {\n line-height: inherit;\n}\n.ios .icon-prev:after,\n.ios .icon-next:after {\n font-size: 16px;\n}\n.ios .icon-back:after,\n.ios .icon-prev:after {\n content: 'chevron_right_ios';\n}\n.ios .icon-forward:after,\n.ios .icon-next:after {\n content: 'chevron_left_ios';\n}\n.md .icon-back,\n.md .icon-forward,\n.md .icon-next,\n.md .icon-prev {\n width: 24px;\n height: 24px;\n}\n.md .icon-back:after,\n.md .icon-forward:after,\n.md .icon-next:after,\n.md .icon-prev:after {\n line-height: 1.2;\n}\n.md .icon-back:after {\n content: 'arrow_right_md';\n}\n.md .icon-forward:after {\n content: 'arrow_left_md';\n}\n.md .icon-next:after {\n content: 'chevron_left_md';\n}\n.md .icon-prev:after {\n content: 'chevron_right_md';\n}\n.custom-modal-backdrop {\n z-index: 10500;\n}\n.custom-modal-backdrop,\n.actions-backdrop,\n.dialog-backdrop,\n.popover-backdrop,\n.popup-backdrop,\n.preloader-backdrop,\n.sheet-backdrop,\n.fab-backdrop {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.4);\n z-index: 13000;\n visibility: hidden;\n opacity: 0;\n transition-duration: 400ms;\n}\n.custom-modal-backdrop.not-animated,\n.actions-backdrop.not-animated,\n.dialog-backdrop.not-animated,\n.popover-backdrop.not-animated,\n.popup-backdrop.not-animated,\n.preloader-backdrop.not-animated,\n.sheet-backdrop.not-animated,\n.fab-backdrop.not-animated {\n transition-duration: 0ms;\n}\n.custom-modal-backdrop.backdrop-in,\n.actions-backdrop.backdrop-in,\n.dialog-backdrop.backdrop-in,\n.popover-backdrop.backdrop-in,\n.popup-backdrop.backdrop-in,\n.preloader-backdrop.backdrop-in,\n.sheet-backdrop.backdrop-in,\n.fab-backdrop.backdrop-in {\n visibility: visible;\n opacity: 1;\n}\n/* === Dialog === */\n:root {\n --f7-dialog-button-text-color: var(--f7-theme-color);\n --f7-dialog-button-text-align: center;\n}\n.ios {\n --f7-dialog-width: 270px;\n --f7-dialog-inner-padding: 16px;\n --f7-dialog-border-radius: 13px;\n --f7-dialog-text-align: center;\n --f7-dialog-font-size: 14px;\n --f7-dialog-title-text-color: inherit;\n --f7-dialog-title-font-size: 18px;\n --f7-dialog-title-font-weight: 600;\n --f7-dialog-title-line-height: inherit;\n --f7-dialog-button-font-size: 17px;\n --f7-dialog-button-height: 44px;\n --f7-dialog-button-letter-spacing: 0;\n --f7-dialog-button-font-weight: 400;\n --f7-dialog-button-text-transform: none;\n --f7-dialog-button-strong-bg-color: transparent;\n --f7-dialog-button-strong-text-color: var(--f7-theme-color);\n --f7-dialog-button-strong-font-weight: 500;\n --f7-dialog-input-border-radius: 4px;\n --f7-dialog-input-font-size: 14px;\n --f7-dialog-input-height: 32px;\n --f7-dialog-input-border-width: 1px;\n --f7-dialog-input-placeholder-color: #a9a9a9;\n --f7-dialog-preloader-size: 34px;\n --f7-dialog-input-bg-color: #fff;\n --f7-dialog-bg-color: rgba(255, 255, 255, 0.95);\n --f7-dialog-bg-color-rgb: 255, 255, 255;\n --f7-dialog-text-color: #000;\n --f7-dialog-button-pressed-bg-color: rgba(0, 0, 0, 0.1);\n --f7-dialog-button-strong-pressed-bg-color: rgba(0, 0, 0, 0.1);\n --f7-dialog-input-border-color: rgba(0, 0, 0, 0.3);\n --f7-dialog-border-divider-color: rgba(0, 0, 0, 0.2);\n}\n.ios .dark,\n.ios.dark {\n --f7-dialog-text-color: #fff;\n --f7-dialog-bg-color: rgba(45, 45, 45, 0.95);\n --f7-dialog-bg-color-rgb: 45, 45, 45;\n --f7-dialog-button-pressed-bg-color: rgba(0, 0, 0, 0.2);\n --f7-dialog-button-strong-pressed-bg-color: rgba(0, 0, 0, 0.2);\n --f7-dialog-border-divider-color: rgba(255, 255, 255, 0.15);\n --f7-dialog-input-border-color: rgba(255, 255, 255, 0.15);\n --f7-dialog-input-bg-color: rgba(0, 0, 0, 0.5);\n}\n.md {\n --f7-dialog-width: 280px;\n --f7-dialog-inner-padding: 24px;\n --f7-dialog-border-radius: 28px;\n --f7-dialog-text-align: right;\n --f7-dialog-font-size: 14px;\n --f7-dialog-title-font-size: 24px;\n --f7-dialog-title-font-weight: 400;\n --f7-dialog-title-line-height: 1.3;\n --f7-dialog-button-font-size: 14px;\n --f7-dialog-button-height: 40px;\n --f7-dialog-button-letter-spacing: normal;\n --f7-dialog-button-font-weight: 500;\n --f7-dialog-button-text-transform: none;\n --f7-dialog-button-strong-font-weight: 500;\n --f7-dialog-input-border-radius: 0px;\n --f7-dialog-input-font-size: 16px;\n --f7-dialog-input-height: 36px;\n --f7-dialog-input-border-color: transparent;\n --f7-dialog-input-border-width: 0px;\n --f7-dialog-preloader-size: 32px;\n --f7-dialog-input-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-dialog-button-pressed-bg-color: transparent;\n --f7-dialog-button-strong-bg-color: var(--f7-theme-color);\n --f7-dialog-button-strong-text-color: var(--f7-md-on-primary);\n --f7-dialog-button-strong-pressed-bg-color: transparent;\n --f7-dialog-bg-color: var(--f7-md-surface-3);\n --f7-dialog-input-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-dialog-text-color: var(--f7-md-on-surface-variant);\n --f7-dialog-title-text-color: var(--f7-md-on-surface);\n}\n.dialog {\n position: absolute;\n z-index: 13500;\n left: 50%;\n margin-top: 0;\n top: 50%;\n overflow: hidden;\n opacity: 0;\n transform: translate3d(0, -50%, 0) scale(1.185);\n transition-property: transform, opacity;\n display: none;\n transition-duration: 400ms;\n width: var(--f7-dialog-width);\n margin-left: calc(-1 * var(--f7-dialog-width) / 2);\n border-radius: var(--f7-dialog-border-radius);\n text-align: var(--f7-dialog-text-align);\n color: var(--f7-dialog-text-color);\n font-size: var(--f7-dialog-font-size);\n background: var(--f7-dialog-bg-color);\n will-change: transform, opacity;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .dialog {\n background-color: rgba(var(--f7-dialog-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.dialog.modal-in {\n opacity: 1;\n transform: translate3d(0, -50%, 0) scale(1);\n}\n.dialog.modal-out {\n opacity: 0;\n z-index: 13499;\n}\n.dialog.not-animated {\n transition-duration: 0ms;\n}\n.dialog-inner {\n position: relative;\n padding: var(--f7-dialog-inner-padding);\n}\n.dialog-title {\n color: var(--f7-dialog-title-text-color);\n font-size: var(--f7-dialog-title-font-size);\n font-weight: var(--f7-dialog-title-font-weight);\n line-height: var(--f7-dialog-title-line-height);\n}\n.dialog-buttons {\n position: relative;\n display: flex;\n flex-direction: row-reverse;\n}\n.dialog-buttons-vertical .dialog-buttons {\n display: block;\n height: auto !important;\n}\n.dialog-button {\n box-sizing: border-box;\n overflow: hidden;\n position: relative;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: var(--f7-dialog-button-text-color);\n font-size: var(--f7-dialog-button-font-size);\n height: var(--f7-dialog-button-height);\n line-height: var(--f7-dialog-button-height);\n letter-spacing: var(--f7-dialog-button-letter-spacing);\n text-align: var(--f7-dialog-button-text-align);\n font-weight: var(--f7-dialog-button-font-weight);\n text-transform: var(--f7-dialog-button-text-transform);\n display: block;\n cursor: pointer;\n}\n.dialog-button.active-state {\n background-color: var(--f7-dialog-button-pressed-bg-color);\n}\n.dialog-button-strong {\n background-color: var(--f7-dialog-button-strong-bg-color);\n color: var(--f7-dialog-button-strong-text-color);\n font-weight: var(--f7-dialog-button-strong-font-weight);\n}\n.dialog-button-strong.active-state {\n background-color: var(--f7-dialog-button-strong-pressed-bg-color);\n}\n.dialog-no-buttons .dialog-buttons {\n display: none;\n}\n.dialog-input-field {\n position: relative;\n}\ninput.dialog-input[type] {\n box-sizing: border-box;\n margin: 0;\n margin-top: 15px;\n border-radius: var(--f7-dialog-input-border-radius);\n -webkit-appearance: none;\n appearance: none;\n width: 100%;\n display: block;\n font-family: inherit;\n box-shadow: none;\n font-size: var(--f7-dialog-input-font-size);\n height: var(--f7-dialog-input-height);\n background-color: var(--f7-dialog-input-bg-color);\n border: var(--f7-dialog-input-border-width) solid var(--f7-dialog-input-border-color);\n}\ninput.dialog-input[type]::placeholder {\n color: var(--f7-dialog-input-placeholder-color);\n}\n.dialog-input-double input.dialog-input {\n border-radius: var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius) 0 0;\n}\n.dialog-input-double + .dialog-input-double input.dialog-input {\n border-radius: 0 0 var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius);\n}\n.dialog-preloader .preloader {\n --f7-preloader-size: var(--f7-dialog-preloader-size);\n}\nhtml.with-modal-dialog .page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\n.ios .dialog.modal-out {\n transform: translate3d(0, -50%, 0) scale(1);\n}\n.ios .dialog-inner {\n border-radius: var(--f7-dialog-border-radius) var(--f7-dialog-border-radius) 0 0;\n}\n.ios .dialog-inner:after {\n content: '';\n position: absolute;\n background-color: var(--f7-dialog-border-divider-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.ios .dialog-title + .dialog-text {\n margin-top: 5px;\n}\n.ios .dialog-buttons {\n height: 44px;\n justify-content: center;\n}\n.ios .dialog-button {\n width: 100%;\n padding: 0 5px;\n -webkit-box-flex: 1;\n -ms-flex: 1;\n}\n.ios .dialog-button:after {\n content: '';\n position: absolute;\n background-color: var(--f7-dialog-border-divider-color);\n display: block;\n z-index: 15;\n top: 0;\n right: 0;\n bottom: auto;\n left: auto;\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.ios .dialog-button:first-child {\n border-radius: 0 0 0 var(--f7-dialog-border-radius);\n}\n.ios .dialog-button:last-child {\n border-radius: 0 0 var(--f7-dialog-border-radius) 0;\n}\n.ios .dialog-button:last-child:after {\n display: none !important;\n}\n.ios .dialog-button:first-child:last-child {\n border-radius: 0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius);\n}\n.ios .dialog-button[class*='color-'] {\n --f7-dialog-button-text-color: var(--f7-theme-color);\n}\n.ios .dialog-buttons-vertical .dialog-buttons {\n height: auto;\n}\n.ios .dialog-buttons-vertical .dialog-button {\n border-radius: 0;\n}\n.ios .dialog-buttons-vertical .dialog-button:after {\n content: '';\n position: absolute;\n background-color: var(--f7-dialog-border-divider-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.ios .dialog-buttons-vertical .dialog-button:last-child {\n border-radius: 0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius);\n}\n.ios .dialog-buttons-vertical .dialog-button:last-child:after {\n display: none !important;\n}\n.ios .dialog-no-buttons .dialog-inner {\n border-radius: var(--f7-dialog-border-radius);\n}\n.ios .dialog-no-buttons .dialog-inner:after {\n display: none !important;\n}\n.ios .dialog-input-field {\n margin-top: 15px;\n}\n.ios .dialog-input {\n padding: 0 5px;\n}\n.ios .dialog-input + .dialog-input {\n margin-top: 5px;\n}\n.ios .dialog-input-double + .dialog-input-double {\n margin-top: 0;\n}\n.ios .dialog-input-double + .dialog-input-double .dialog-input {\n border-top: 0;\n margin-top: 0;\n}\n.ios .dialog-preloader .dialog-title ~ .preloader,\n.ios .dialog-preloader .dialog-text ~ .preloader {\n margin-top: 15px;\n}\n.ios .dialog-progress .dialog-title ~ .progressbar,\n.ios .dialog-progress .dialog-text ~ .progressbar,\n.ios .dialog-progress .dialog-title ~ .progressbar-infinite,\n.ios .dialog-progress .dialog-text ~ .progressbar-infinite {\n margin-top: 15px;\n}\n.md .dialog.modal-out {\n transform: translate3d(0, -50%, 0) scale(0.815);\n}\n.md .dialog-title + .dialog-text {\n margin-top: 20px;\n}\n.md .dialog-text {\n line-height: 1.5;\n}\n.md .dialog-buttons {\n height: 64px;\n padding: 0px 24px 24px;\n overflow: hidden;\n box-sizing: border-box;\n justify-content: flex-end;\n}\n.md .dialog-button {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n border-radius: 99px;\n min-width: 64px;\n padding: 0px 16px;\n border: none;\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n}\n.md .dialog-button + .dialog-button {\n margin-left: 8px;\n}\n.md .dialog-button-strong {\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.md .dialog-button[class*='color-'] {\n --f7-dialog-button-text-color: var(--f7-theme-color);\n}\n.md .dialog-buttons-vertical .dialog-buttons {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n}\n.md .dialog-buttons-vertical .dialog-button + .dialog-button {\n margin-top: 8px;\n margin-left: 0;\n}\n.md .dialog-input {\n padding: 0;\n transition-duration: 200ms;\n position: relative;\n}\n.md .dialog-input + .dialog-input {\n margin-top: 16px;\n}\n.md .dialog-preloader .dialog-title,\n.md .dialog-progress .dialog-title,\n.md .dialog-preloader .dialog-inner,\n.md .dialog-progress .dialog-inner {\n text-align: center;\n}\n.md .dialog-preloader .dialog-title ~ .preloader,\n.md .dialog-preloader .dialog-text ~ .preloader {\n margin-top: 20px;\n}\n.md .dialog-progress .dialog-title ~ .progressbar,\n.md .dialog-progress .dialog-text ~ .progressbar,\n.md .dialog-progress .dialog-title ~ .progressbar-infinite,\n.md .dialog-progress .dialog-text ~ .progressbar-infinite {\n margin-top: 16px;\n}\n/* === Popup === */\n:root {\n --f7-popup-border-radius: 0px;\n --f7-popup-tablet-width: 630px;\n --f7-popup-tablet-height: 630px;\n --f7-popup-push-offset: var(--f7-safe-area-top);\n /*\n --f7-popup-tablet-border-radius: var(--f7-popup-border-radius);\n */\n}\n.ios {\n --f7-popup-tablet-border-radius: 5px;\n --f7-popup-transition-duration: 400ms;\n --f7-popup-transition-timing-function: initial;\n --f7-popup-push-border-radius: 10px;\n}\n.md {\n --f7-popup-tablet-border-radius: 28px;\n --f7-popup-transition-duration: 600ms;\n --f7-popup-transition-timing-function: cubic-bezier(0, 1, 0.2, 1);\n --f7-popup-push-border-radius: 28px;\n}\n.popup-backdrop {\n z-index: 10500;\n}\n.popup-backdrop-unique {\n z-index: 11000;\n}\n.popup {\n position: absolute;\n left: 0;\n top: 0px;\n width: 100%;\n height: 100%;\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n transition-timing-function: var(--f7-popup-transition-timing-function);\n transform: translate3d(0, 100vh, 0);\n background: #fff;\n z-index: 11000;\n overflow: hidden;\n border-radius: var(--f7-popup-border-radius);\n}\n.dark .popup,\n.popup.dark {\n background: #000;\n}\n.popup.modal-in,\n.popup.modal-out {\n transition-duration: var(--f7-popup-transition-duration);\n}\n.popup.not-animated {\n transition-duration: 0ms;\n}\n.popup.modal-in {\n display: block;\n transform: translate3d(0, 0, 0);\n}\n.popup.modal-out {\n transform: translate3d(0, 100vh, 0);\n}\n.popup.swipe-close-to-top.modal-out {\n transform: translate3d(0, -100vh, 0);\n}\n@media (min-width: 630px) and (min-height: 630px) {\n .popup:not(.popup-tablet-fullscreen) {\n --f7-safe-area-top: 0px;\n --f7-safe-area-bottom: 0px;\n width: var(--f7-popup-tablet-width);\n height: var(--f7-popup-tablet-height);\n left: 50%;\n top: 50%;\n margin-left: calc(-1 * var(--f7-popup-tablet-width) / 2);\n margin-top: calc(-1 * var(--f7-popup-tablet-height) / 2);\n transform: translate3d(0, 100vh, 0);\n border-radius: var(--f7-popup-tablet-border-radius, var(--f7-popup-border-radius));\n }\n .popup:not(.popup-tablet-fullscreen).modal-in {\n transform: translate3d(0, 0, 0);\n }\n .popup:not(.popup-tablet-fullscreen).modal-out {\n transform: translate3d(0, 100vh, 0);\n }\n .popup:not(.popup-tablet-fullscreen).swipe-close-to-top.modal-out {\n transform: translate3d(0, -100vh, 0);\n }\n .popup:not(.popup-tablet-fullscreen).popup-behind {\n transform: translate3d(0, 0, 0) scale(0.9);\n pointer-events: none;\n }\n .popup:not(.popup-tablet-fullscreen).popup-behind.modal-out {\n transform: translate3d(0, 100vh, 0) scale(0.9);\n }\n html.with-modal-popup-push .popup-push:not(.popup-tablet-fullscreen) {\n margin-top: 0;\n }\n}\nhtml.with-modal-popup .framework7-root > .views .page-content,\nhtml.with-modal-popup .framework7-root > .view .page-content,\nhtml.with-modal-popup .framework7-root > .panel .page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\nhtml.with-modal-popup-push .popup-push,\nhtml.with-modal-popup-push-closing .popup-push {\n top: calc(var(--f7-popup-push-offset) + 10px);\n height: calc(100% - var(--f7-popup-push-offset) - 10px);\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n --f7-safe-area-top: 0px;\n}\nhtml.with-modal-popup-push .popup-push .view,\nhtml.with-modal-popup-push-closing .popup-push .view,\nhtml.with-modal-popup-push .popup-push .page,\nhtml.with-modal-popup-push-closing .popup-push .page {\n --f7-safe-area-top: 0px;\n}\nhtml.with-modal-popup-push .framework7-root,\nhtml.with-modal-popup-push-closing .framework7-root {\n background: #000;\n}\nhtml.with-modal-popup-push .framework7-root > .views,\nhtml.with-modal-popup-push-closing .framework7-root > .views,\nhtml.with-modal-popup-push .framework7-root > .view,\nhtml.with-modal-popup-push-closing .framework7-root > .view {\n transition-duration: var(--f7-popup-transition-duration);\n transition-timing-function: var(--f7-popup-transition-timing-function);\n}\nhtml.with-modal-popup-push.dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-popup-push.dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-popup-push .dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-popup-push .dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-popup-push .dark.framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-popup-push .dark.framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-popup-push .framework7-root > .views.dark:after,\nhtml.with-modal-popup-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-popup-push .framework7-root > .view.dark:after,\nhtml.with-modal-popup-push-closing .framework7-root > .view.dark:after {\n content: '';\n position: absolute;\n pointer-events: none;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(255, 255, 255, 0.1);\n z-index: 13000;\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n opacity: 1;\n animation: popup-dark-push-overlay-fade-in var(--f7-popup-transition-duration) forwards;\n}\nhtml.with-modal-popup-push .framework7-root > .views,\nhtml.with-modal-popup-push .framework7-root > .view {\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n transform: translate3d(0, 0, 0px) scale(var(--f7-popup-push-scale, 1)) !important;\n}\nhtml.with-modal-popup-push .popup:after {\n content: '';\n pointer-events: none;\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.4);\n z-index: 13000;\n transition-duration: var(--f7-popup-transition-duration);\n transition-timing-function: var(--f7-popup-transition-timing-function);\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n opacity: 0;\n}\nhtml.with-modal-popup-push.dark .popup:after,\nhtml.with-modal-popup-push .dark .popup:after,\nhtml.with-modal-popup-push .dark.popup:after {\n background: rgba(255, 255, 255, 0.05);\n}\nhtml.with-modal-popup-push .popup-behind {\n transform: translate3d(0, 0px, 0px) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind.modal-out {\n transform: translate3d(0, 100vh, 0) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind:not(.popup-push) {\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n}\nhtml.with-modal-popup-push .popup-behind.popup-push {\n transform: translate3d(0, calc(0px - var(--f7-popup-push-offset) - 10px), 0px) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind.popup-push.modal-out {\n transform: translate3d(0, calc(0px - var(--f7-popup-push-offset) - 10px + 100vh), 0px) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind:after {\n opacity: 1;\n pointer-events: auto;\n}\nhtml.with-modal-popup-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-popup-push-closing .framework7-root > .view.dark:after {\n animation: popup-dark-push-overlay-fade-out var(--f7-popup-transition-duration) forwards;\n animation-timing-function: var(--f7-popup-transition-timing-function);\n}\n@keyframes popup-dark-push-overlay-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes popup-dark-push-overlay-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n/* === Login Screen === */\n:root {\n --f7-login-screen-blocks-max-width: 480px;\n --f7-login-screen-title-text-align: center;\n --f7-login-screen-title-text-color: inherit;\n --f7-login-screen-title-letter-spacing: 0;\n}\n.ios {\n --f7-login-screen-blocks-margin-vertical: 25px;\n --f7-login-screen-transition-timing-function: initial;\n --f7-login-screen-transition-duration: 400ms;\n --f7-login-screen-title-font-weight: 600;\n --f7-login-screen-title-font-size: 28px;\n --f7-login-screen-content-bg-color: #fff;\n --f7-login-screen-bg-color: #fff;\n}\n.ios .dark,\n.ios.dark {\n --f7-login-screen-bg-color: #000;\n --f7-login-screen-content-bg-color: #000;\n}\n.md {\n --f7-login-screen-transition-duration: 600ms;\n --f7-login-screen-transition-timing-function: cubic-bezier(0, 1, 0.2, 1);\n --f7-login-screen-blocks-margin-vertical: 24px;\n --f7-login-screen-title-font-weight: 400;\n --f7-login-screen-title-font-size: 28px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-login-screen-content-bg-color: var(--f7-md-surface);\n --f7-login-screen-bg-color: var(--f7-md-surface);\n}\n.login-screen {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n transform: translate3d(0, 100vh, 0);\n background: var(--f7-login-screen-bg-color);\n transition-timing-function: var(--f7-login-screen-transition-timing-function);\n z-index: 11000;\n}\n.login-screen.modal-in,\n.login-screen.modal-out {\n transition-duration: var(--f7-login-screen-transition-duration);\n}\n.login-screen.not-animated {\n transition-duration: 0ms;\n}\n.login-screen.modal-in {\n display: block;\n transform: translate3d(0, 0, 0);\n}\n.login-screen.modal-out {\n transform: translate3d(0, 100%, 0);\n}\n.login-screen-content,\n.login-screen-page,\n.login-screen .page {\n background: var(--f7-login-screen-content-bg-color);\n}\n.login-screen-content .login-screen-title,\n.login-screen-page .login-screen-title,\n.login-screen-content .list,\n.login-screen-page .list,\n.login-screen-content .block,\n.login-screen-page .block {\n margin: var(--f7-login-screen-blocks-margin-vertical) auto;\n}\n.login-screen-content .login-screen-title,\n.login-screen-page .login-screen-title,\n.login-screen-content .list,\n.login-screen-page .list,\n.login-screen-content .block,\n.login-screen-page .block,\n.login-screen-content .block-footer,\n.login-screen-page .block-footer,\n.login-screen-content .block-header,\n.login-screen-page .block-header {\n max-width: var(--f7-login-screen-blocks-max-width);\n}\n.login-screen-content .list ul,\n.login-screen-page .list ul {\n background: none;\n}\n.login-screen-content .list ul:before,\n.login-screen-page .list ul:before,\n.login-screen-content .list ul:after,\n.login-screen-page .list ul:after {\n display: none !important;\n}\n.login-screen-content .block-footer,\n.login-screen-page .block-footer,\n.login-screen-content .block-header,\n.login-screen-page .block-header {\n text-align: center;\n margin-left: auto;\n margin-right: auto;\n}\n.login-screen-title {\n text-align: var(--f7-login-screen-title-text-align);\n font-size: var(--f7-login-screen-title-font-size);\n font-weight: var(--f7-login-screen-title-font-weight);\n color: var(--f7-login-screen-title-text-color);\n letter-spacing: var(--f7-login-screen-title-letter-spacing);\n}\n.login-screen-page,\n.login-screen > .view > .page,\n.login-screen > .page {\n display: flex;\n flex-direction: column;\n}\n.login-screen-page .page-content,\n.login-screen > .view > .page .page-content,\n.login-screen > .page .page-content,\n.login-screen-page .login-screen-content,\n.login-screen > .view > .page .login-screen-content,\n.login-screen > .page .login-screen-content {\n margin-top: auto;\n margin-bottom: auto;\n height: auto;\n max-height: 100%;\n width: 100%;\n}\n.dark .login-screen-content .list ul,\n.dark .login-screen-content .block-strong,\n.dark .login-screen-page .list ul,\n.dark .login-screen-page .block-strong,\n.dark.login-screen-page .list ul,\n.dark.login-screen-page .block-strong {\n background-color: transparent;\n}\n/* === Popover === */\n:root {\n --f7-popover-width: 260px;\n}\n.ios {\n --f7-popover-border-radius: 13px;\n --f7-popover-actions-icon-size: 28px;\n --f7-popover-transition-timing-function: initial;\n --f7-popover-bg-color: rgba(255, 255, 255, 0.95);\n --f7-popover-actions-label-text-color: rgba(0, 0, 0, 0.45);\n}\n.ios .dark,\n.ios.dark {\n --f7-popover-bg-color: rgba(30, 30, 30, 0.95);\n --f7-popover-actions-label-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-popover-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n --f7-popover-border-radius: 28px;\n --f7-popover-actions-icon-size: 24px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-popover-bg-color: var(--f7-md-surface-3);\n --f7-popover-actions-label-text-color: var(--f7-md-on-surface-variant);\n}\n.popover-backdrop-unique {\n z-index: 13500;\n}\n.popover {\n width: var(--f7-popover-width);\n z-index: 13500;\n margin: 0;\n top: 0;\n opacity: 0;\n left: 0;\n position: absolute;\n display: none;\n transition-duration: 300ms;\n background-color: var(--f7-popover-bg-color);\n border-radius: var(--f7-popover-border-radius);\n will-change: transform, opacity;\n --f7-safe-area-top: 0px;\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n --f7-safe-area-bottom: 0px;\n}\n.popover .list {\n margin: 0;\n}\n.popover .list ul {\n background: none;\n}\n.popover .list:first-child ul:before {\n display: none !important;\n}\n.popover .list:last-child ul:after {\n display: none !important;\n}\n.popover .list:first-child ul {\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n}\n.popover .list:first-child li:first-child,\n.popover .list:first-child li:first-child a,\n.popover .list:first-child li:first-child > label {\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n}\n.popover .list:last-child ul {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.popover .list:last-child li:last-child,\n.popover .list:last-child li:last-child a,\n.popover .list:last-child li:last-child > label {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.popover .list:first-child:last-child li:first-child:last-child,\n.popover .list:first-child:last-child li:first-child:last-child a,\n.popover .list:first-child:last-child li:first-child:last-child > label,\n.popover .list:first-child:last-child ul {\n border-radius: var(--f7-popover-border-radius);\n}\n.popover .list + .list {\n margin-top: var(--f7-list-margin-vertical);\n}\n.popover.modal-in {\n opacity: 1;\n}\n.popover.not-animated {\n transition-duration: 0ms;\n}\n.popover,\n.popover-backdrop {\n transition-timing-function: var(--f7-popover-transition-timing-function);\n}\n.popover-inner {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n}\n.popover-from-actions .item-link i.icon {\n width: var(--f7-popover-actions-icon-size);\n height: var(--f7-popover-actions-icon-size);\n font-size: var(--f7-popover-actions-icon-size);\n}\n.ios .popover-from-actions-strong {\n font-weight: 600;\n}\n.md .popover-from-actions-strong {\n font-weight: 500;\n}\n.popover-from-actions-label {\n line-height: 1.3;\n position: relative;\n display: flex;\n align-items: center;\n padding: var(--f7-actions-label-padding);\n color: var(--f7-popover-actions-label-text-color);\n font-size: var(--f7-actions-label-font-size);\n justify-content: var(--f7-actions-label-justify-content);\n}\n.popover-from-actions-label:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.popover-from-actions-label:last-child:after {\n display: none !important;\n}\n.md .popover-from-actions-label {\n justify-content: center;\n}\n.popover-arrow {\n width: 26px;\n height: 26px;\n position: absolute;\n left: -26px;\n top: 0;\n z-index: 100;\n overflow: hidden;\n}\n.popover-arrow:after {\n content: '';\n background: var(--f7-popover-bg-color);\n width: 26px;\n height: 26px;\n position: absolute;\n left: 0;\n top: 0;\n border-radius: 3px;\n transform: rotate(45deg);\n}\n.popover-arrow.on-left {\n left: -26px;\n}\n.popover-arrow.on-left:after {\n left: 19px;\n top: 0;\n}\n.popover-arrow.on-right {\n left: 100%;\n}\n.popover-arrow.on-right:after {\n left: -19px;\n top: 0;\n}\n.popover-arrow.on-top {\n left: 0;\n top: -26px;\n}\n.popover-arrow.on-top:after {\n left: 0;\n top: 19px;\n}\n.popover-arrow.on-bottom {\n left: 0;\n top: 100%;\n}\n.popover-arrow.on-bottom:after {\n left: 0;\n top: -19px;\n}\n.ios .popover {\n transform: none;\n transition-property: opacity;\n}\n.md .popover {\n transform: scale(0.85, 0.6);\n transition-property: opacity, transform;\n}\n.md .popover.modal-in {\n opacity: 1;\n transform: scale(1);\n}\n.md .popover.modal-out {\n opacity: 0;\n transform: scale(1);\n}\n.md .popover-on-top {\n transform-origin: center bottom;\n}\n.md .popover-on-top.popover-on-right {\n transform-origin: left bottom;\n}\n.md .popover-on-top.popover-on-left {\n transform-origin: right bottom;\n}\n.md .popover-on-middle {\n transform-origin: center center;\n}\n.md .popover-on-middle.popover-on-right {\n transform-origin: left center;\n}\n.md .popover-on-middle.popover-on-left {\n transform-origin: right center;\n}\n.md .popover-on-bottom {\n transform-origin: center top;\n}\n.md .popover-on-bottom.popover-on-right {\n transform-origin: left top;\n}\n.md .popover-on-bottom.popover-on-left {\n transform-origin: right top;\n}\n/* === Actions === */\n:root {\n --f7-actions-grid-button-font-size: 12px;\n --f7-actions-grid-button-icon-size: 48px;\n}\n.ios {\n --f7-actions-transition-timing-function: initial;\n --f7-actions-border-radius: 13px;\n /*\n --f7-actions-button-text-color: var(--f7-theme-color);\n */\n --f7-actions-grid-button-text-color: #757575;\n --f7-actions-button-padding: 0px;\n --f7-actions-button-text-align: center;\n --f7-actions-button-height: 57px;\n --f7-actions-button-height-landscape: 44px;\n --f7-actions-button-font-size: 20px;\n --f7-actions-button-icon-size: 28px;\n --f7-actions-button-justify-content: center;\n --f7-actions-label-padding: 8px 10px;\n --f7-actions-label-font-weight: 400;\n --f7-actions-label-font-size: 13px;\n --f7-actions-label-justify-content: center;\n --f7-actions-group-border-color: transparent;\n --f7-actions-group-margin: 8px;\n --f7-actions-bg-color: rgba(255, 255, 255, 0.95);\n --f7-actions-bg-color-rgb: 255, 255, 255;\n --f7-actions-button-border-color: rgba(0, 0, 0, 0.2);\n --f7-actions-button-pressed-bg-color: rgba(230, 230, 230, 0.9);\n --f7-actions-button-pressed-bg-color-rgb: 230, 230, 230;\n --f7-actions-label-text-color: #8a8a8a;\n}\n.ios .dark,\n.ios.dark {\n --f7-actions-bg-color: rgba(45, 45, 45, 0.95);\n --f7-actions-bg-color-rgb: 45, 45, 45;\n --f7-actions-button-border-color: rgba(255, 255, 255, 0.15);\n --f7-actions-button-pressed-bg-color: rgba(50, 50, 50, 0.9);\n --f7-actions-button-pressed-bg-color-rgb: 50, 50, 50;\n --f7-actions-label-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-actions-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n --f7-actions-border-radius: 16px;\n --f7-actions-button-border-color: transparent;\n --f7-actions-button-padding: 0 16px;\n --f7-actions-button-text-align: left;\n --f7-actions-button-height: 48px;\n --f7-actions-button-height-landscape: 48px;\n --f7-actions-button-font-size: 16px;\n --f7-actions-button-icon-size: 24px;\n --f7-actions-button-justify-content: space-between;\n --f7-actions-label-padding: 12px 16px;\n --f7-actions-label-font-size: 14px;\n --f7-actions-label-font-weight: 500;\n --f7-actions-label-justify-content: flex-start;\n --f7-actions-group-margin: 0px;\n --f7-actions-button-pressed-bg-color: #e5e5e5;\n}\n.md .dark,\n.md.dark {\n --f7-actions-button-pressed-bg-color: #2e2e2e;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-actions-button-text-color: var(--f7-md-on-surface);\n --f7-actions-bg-color: var(--f7-md-surface-3);\n --f7-actions-group-border-color: var(--f7-md-outline);\n --f7-actions-label-text-color: var(--f7-theme-color);\n --f7-actions-grid-button-text-color: var(--f7-md-on-surface);\n}\n.actions-backdrop-unique {\n z-index: 13500;\n}\n.actions-modal {\n position: absolute;\n left: 0;\n bottom: 0;\n z-index: 13500;\n width: 100%;\n transform: translate3d(0, 100%, 0);\n display: none;\n max-height: 100%;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n transition-property: transform;\n will-change: transform;\n}\n.actions-modal.modal-in,\n.actions-modal.modal-out {\n transition-duration: 300ms;\n}\n.actions-modal.not-animated {\n transition-duration: 0ms;\n}\n.ios .actions-modal.modal-in {\n transform: translate3d(0, calc(-1 * var(--f7-safe-area-bottom)), 0);\n}\n.md .actions-modal.modal-in {\n transform: translate3d(0, 0, 0);\n}\n.actions-modal.modal-out {\n z-index: 13499;\n transform: translate3d(0, 100%, 0);\n}\n@media (min-width: 496px) {\n .actions-modal {\n width: 480px;\n left: 50%;\n margin-left: -240px;\n }\n}\n@media (orientation: landscape) {\n .actions-modal {\n --f7-actions-button-height: var(--f7-actions-button-height-landscape);\n }\n}\n.actions-backdrop,\n.actions-modal {\n transition-timing-function: var(--f7-actions-transition-timing-function);\n}\n.actions-group {\n overflow: hidden;\n position: relative;\n margin: var(--f7-actions-group-margin);\n transform: translate3d(0, 0, 0);\n}\n.actions-group:after {\n content: '';\n position: absolute;\n background-color: var(--f7-actions-group-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.actions-group:last-child:after {\n display: none !important;\n}\n.actions-button,\n.actions-label {\n width: 100%;\n font-weight: normal;\n margin: 0;\n box-sizing: border-box;\n display: block;\n position: relative;\n overflow: hidden;\n text-align: var(--f7-actions-button-text-align);\n}\n.actions-button:after,\n.actions-label:after {\n content: '';\n position: absolute;\n background-color: var(--f7-actions-button-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.actions-button a,\n.actions-label a {\n text-decoration: none;\n color: inherit;\n display: block;\n}\n.actions-button {\n cursor: pointer;\n display: flex;\n color: var(--f7-actions-button-text-color, var(--f7-theme-color));\n font-size: var(--f7-actions-button-font-size);\n height: var(--f7-actions-button-height);\n line-height: var(--f7-actions-button-height);\n padding: var(--f7-actions-button-padding);\n justify-content: var(--f7-actions-button-justify-content);\n z-index: 10;\n}\n.actions-button.active-state {\n background-color: var(--f7-actions-button-pressed-bg-color) !important;\n}\n.actions-button[class*='color-'] {\n color: var(--f7-theme-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .actions-button.active-state {\n background-color: rgba(var(--f7-actions-button-pressed-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.actions-button-media {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n}\n.actions-button-media i.icon {\n width: var(--f7-actions-button-icon-size);\n height: var(--f7-actions-button-icon-size);\n font-size: var(--f7-actions-button-icon-size);\n}\n.actions-button a,\n.actions-button-text {\n position: relative;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.actions-button-text {\n width: 100%;\n flex-shrink: 1;\n text-align: var(--f7-actions-button-text-align);\n}\n.actions-label {\n line-height: 1.3;\n display: flex;\n align-items: center;\n font-size: var(--f7-actions-label-font-size);\n font-weight: var(--f7-actions-label-font-weight);\n color: var(--f7-actions-label-text-color);\n padding: var(--f7-actions-label-padding);\n justify-content: var(--f7-actions-label-justify-content);\n min-height: var(--f7-actions-label-min-height, var(--f7-actions-button-height));\n}\n.actions-label[class*=' color-'] {\n --f7-actions-label-text-color: var(--f7-theme-color);\n}\n.actions-grid .actions-group {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n margin-top: 0;\n}\n.actions-grid .actions-group:not(:last-child) {\n margin-bottom: 0;\n}\n.actions-grid .actions-button,\n.actions-grid .actions-label {\n background: none;\n}\n.actions-grid .actions-button {\n width: 33.33333333%;\n display: block;\n color: var(--f7-actions-grid-button-text-color);\n height: auto;\n line-height: 1;\n padding: 16px;\n}\n.actions-grid .actions-button:after {\n display: none !important;\n}\n.actions-grid .actions-button-media {\n margin-left: auto !important;\n margin-right: auto !important;\n width: var(--f7-actions-grid-button-icon-size);\n height: var(--f7-actions-grid-button-icon-size);\n}\n.actions-grid .actions-button-media i.icon {\n width: var(--f7-actions-grid-button-icon-size);\n height: var(--f7-actions-grid-button-icon-size);\n font-size: var(--f7-actions-grid-button-icon-size);\n}\n.actions-grid .actions-button-text {\n margin-left: 0 !important;\n text-align: center !important;\n margin-top: 8px;\n line-height: 1.33em;\n height: 1.33em;\n font-size: var(--f7-actions-grid-button-font-size);\n}\n.ios .actions-group {\n border-radius: var(--f7-actions-border-radius);\n}\n.ios .actions-button,\n.ios .actions-label {\n background: var(--f7-actions-bg-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .ios .actions-button,\n .ios-translucent-modals .ios .actions-label {\n background-color: rgba(var(--f7-actions-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.ios .actions-button:first-child,\n.ios .actions-label:first-child {\n border-radius: var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;\n}\n.ios .actions-button:last-child,\n.ios .actions-label:last-child {\n border-radius: 0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius);\n}\n.ios .actions-button:last-child:after,\n.ios .actions-label:last-child:after {\n display: none !important;\n}\n.ios .actions-button:first-child:last-child,\n.ios .actions-label:first-child:last-child {\n border-radius: var(--f7-actions-border-radius);\n}\n.ios .actions-button b,\n.ios .actions-label b,\n.ios .actions-button.actions-button-strong,\n.ios .actions-label.actions-button-strong {\n font-weight: 600;\n}\n.ios .actions-grid .actions-group {\n border-radius: 0;\n background: var(--f7-actions-bg-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .ios .actions-grid .actions-group {\n background-color: rgba(var(--f7-actions-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.ios .actions-grid .actions-group:first-child {\n border-radius: var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;\n}\n.ios .actions-grid .actions-group:last-child {\n border-radius: 0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius);\n}\n.ios .actions-grid .actions-group:first-child:last-child {\n border-radius: var(--f7-actions-border-radius);\n}\n.ios .actions-grid .actions-button,\n.ios .actions-grid .actions-label {\n border-radius: 0 !important;\n}\n.ios .actions-button-media {\n margin-left: 16px;\n}\n.ios .actions-button-media + .actions-button-text {\n text-align: left;\n margin-left: 16px;\n}\n.md .actions-modal {\n background-color: var(--f7-actions-bg-color);\n border-radius: var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;\n padding-bottom: var(--f7-safe-area-bottom);\n}\n.md .actions-button {\n transition-duration: 300ms;\n}\n.md .actions-button b,\n.md .actions-label b,\n.md .actions-button.actions-button-strong,\n.md .actions-label.actions-button-strong {\n font-weight: 500;\n}\n.md .actions-button-media {\n min-width: 40px;\n}\n.md .actions-button-media + .actions-button-text {\n margin-left: 16px;\n}\n/* === Sheet Modal === */\n:root {\n --f7-sheet-height: 260px;\n --f7-sheet-push-offset: var(--f7-safe-area-top);\n}\n.ios {\n --f7-sheet-border-radius: 0px;\n --f7-sheet-border-color: var(--f7-bars-border-color);\n --f7-sheet-transition-timing-function: initial;\n --f7-sheet-push-border-radius: 10px;\n --f7-sheet-transition-duration: 300ms;\n --f7-sheet-bg-color: #fff;\n}\n.ios .dark,\n.ios.dark {\n --f7-sheet-bg-color: #202020;\n}\n.md {\n --f7-sheet-border-radius: 16px;\n --f7-sheet-push-border-radius: 16px;\n --f7-sheet-border-color: transparent;\n --f7-sheet-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n --f7-sheet-transition-duration: 400ms;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-sheet-bg-color: var(--f7-md-surface);\n}\n.sheet-backdrop {\n z-index: 11000;\n}\n.sheet-backdrop-unique {\n z-index: 12500;\n}\n.sheet-modal {\n overflow: hidden;\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n height: var(--f7-sheet-height);\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n transform: translate3d(0, 100%, 0);\n background: var(--f7-sheet-bg-color);\n z-index: 12500;\n will-change: transform, opacity;\n}\n.sheet-modal.modal-in,\n.sheet-modal.modal-out {\n transition-duration: var(--f7-sheet-transition-duration);\n}\n.sheet-modal.not-animated {\n transition-duration: 0ms;\n}\n.sheet-modal.modal-in {\n display: block;\n transform: translate3d(0, 0, 0);\n}\n.sheet-modal.modal-in-swipe-step,\n.sheet-modal.modal-in-breakpoint {\n display: block;\n transform: translate3d(0, var(--f7-sheet-breakpoint, var(--f7-sheet-swipe-step, 0)), 0);\n}\n.sheet-modal.modal-out {\n transform: translate3d(0, 100%, 0);\n}\n.sheet-modal .sheet-modal-inner {\n height: 100%;\n position: relative;\n overflow: hidden;\n}\n.sheet-modal .toolbar {\n --f7-safe-area-bottom: 0px;\n position: relative;\n width: 100%;\n}\n.sheet-modal .toolbar:after,\n.sheet-modal .toolbar:before {\n display: none;\n}\n.sheet-modal .toolbar + .sheet-modal-inner {\n height: calc(100% - var(--f7-toolbar-height));\n}\n.sheet-modal .toolbar + .sheet-modal-inner .page-content {\n --f7-page-toolbar-top-offset: 0px;\n --f7-page-toolbar-bottom-offset: 0px;\n}\n.sheet-backdrop,\n.sheet-modal {\n transition-timing-function: var(--f7-sheet-transition-timing-function);\n}\n.sheet-modal-top {\n border-radius: 0 0 var(--f7-sheet-border-radius) var(--f7-sheet-border-radius);\n}\n.sheet-modal-top:after {\n content: '';\n position: absolute;\n background-color: var(--f7-sheet-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.sheet-modal-top:after {\n z-index: 700;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n transform-style: preserve-3d;\n}\n.sheet-modal-bottom,\n.sheet-modal:not(.sheet-modal-top) {\n --f7-safe-area-top: 0px;\n border-radius: var(--f7-sheet-border-radius) var(--f7-sheet-border-radius) 0 0;\n}\n.sheet-modal-bottom:before,\n.sheet-modal:not(.sheet-modal-top):before {\n content: '';\n position: absolute;\n background-color: var(--f7-sheet-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.sheet-modal-bottom:before,\n.sheet-modal:not(.sheet-modal-top):before {\n z-index: 700;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n transform-style: preserve-3d;\n}\n.sheet-modal-top {\n --f7-safe-area-bottom: 0px;\n bottom: auto;\n top: 0;\n transform: translate3d(0, -100%, 0);\n}\n.sheet-modal-top.modal-out {\n transform: translate3d(0, -100%, 0);\n}\n.sheet-modal-top .toolbar-bottom {\n position: absolute;\n}\n.sheet-modal-top .page-content {\n padding-top: var(--f7-safe-area-top);\n}\nhtml.with-modal-sheet-push .sheet-modal-push,\nhtml.with-modal-sheet-push-closing .sheet-modal-push {\n --f7-sheet-border-color: transparent;\n border-radius: var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius) 0 0;\n overflow: hidden;\n}\nhtml.with-modal-sheet-push .sheet-modal-push .view,\nhtml.with-modal-sheet-push-closing .sheet-modal-push .view,\nhtml.with-modal-sheet-push .sheet-modal-push .page,\nhtml.with-modal-sheet-push-closing .sheet-modal-push .page {\n --f7-safe-area-top: 0px;\n}\nhtml.with-modal-sheet-push .sheet-modal-push.sheet-modal-top,\nhtml.with-modal-sheet-push-closing .sheet-modal-push.sheet-modal-top {\n border-radius: 0 0 var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius);\n}\nhtml.with-modal-sheet-push .framework7-root,\nhtml.with-modal-sheet-push-closing .framework7-root {\n background: #000;\n}\nhtml.with-modal-sheet-push .framework7-root > .views,\nhtml.with-modal-sheet-push-closing .framework7-root > .views,\nhtml.with-modal-sheet-push .framework7-root > .view,\nhtml.with-modal-sheet-push-closing .framework7-root > .view {\n transition-duration: var(--f7-sheet-transition-duration);\n transition-timing-function: var(--f7-sheet-transition-timing-function);\n}\nhtml.with-modal-sheet-push.dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push.dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push .dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push .dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push .dark.framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-sheet-push .dark.framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-sheet-push .framework7-root > .views.dark:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-sheet-push .framework7-root > .view.dark:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .view.dark:after {\n content: '';\n position: absolute;\n pointer-events: none;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(255, 255, 255, 0.1);\n z-index: 13000;\n opacity: 1;\n transition-duration: var(--f7-sheet-transition-duration);\n transition-timing-function: var(--f7-sheet-transition-timing-function);\n animation: sheet-dark-push-overlay-fade-in var(--f7-sheet-transition-duration);\n animation-timing-function: var(--f7-sheet-transition-timing-function);\n}\nhtml.with-modal-sheet-push .framework7-root > .views,\nhtml.with-modal-sheet-push .framework7-root > .view {\n border-radius: var(--f7-sheet-push-border-radius);\n transform: translate3d(0, 0, 0px) scale(var(--f7-sheet-push-scale, 1)) !important;\n}\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .view.dark:after {\n opacity: 0;\n animation: none;\n}\n@keyframes sheet-dark-push-overlay-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n.md .sheet-modal .toolbar a.link:not(.tab-link) {\n flex-shrink: 0;\n}\n/* === Toast === */\n:root {\n --f7-toast-font-size: 14px;\n --f7-toast-icon-size: 48px;\n --f7-toast-max-width: 568px;\n}\n.ios {\n --f7-toast-text-color: #fff;\n --f7-toast-bg-color: rgba(0, 0, 0, 0.75);\n --f7-toast-bg-color-rgb: 0, 0, 0;\n --f7-toast-padding-horizontal: 16px;\n --f7-toast-padding-vertical: 12px;\n --f7-toast-border-radius: 8px;\n --f7-toast-button-min-width: 64px;\n}\n.md {\n --f7-toast-padding-horizontal: 24px;\n --f7-toast-padding-vertical: 14px;\n --f7-toast-border-radius: 16px;\n --f7-toast-button-min-width: 64px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-toast-text-color: var(--f7-md-on-surface);\n --f7-toast-bg-color: var(--f7-md-surface-5);\n}\n.toast {\n transition-property: transform, opacity;\n position: absolute;\n max-width: var(--f7-toast-max-width);\n z-index: 20000;\n color: var(--f7-toast-text-color);\n font-size: var(--f7-toast-font-size);\n box-sizing: border-box;\n background-color: var(--f7-toast-bg-color);\n opacity: 0;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .toast {\n background-color: rgba(var(--f7-toast-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.toast.modal-in {\n opacity: 1;\n}\n.toast .toast-content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-sizing: border-box;\n padding: var(--f7-toast-padding-vertical) var(--f7-toast-padding-horizontal);\n}\n.toast .toast-text {\n line-height: 20px;\n flex-shrink: 1;\n min-width: 0;\n}\n.toast .toast-button {\n flex-shrink: 0;\n min-width: var(--f7-toast-button-min-width);\n margin-top: -8px;\n margin-bottom: -8px;\n}\n.toast.toast-with-icon .toast-content {\n display: block;\n text-align: center;\n}\n.toast.toast-with-icon .toast-text {\n text-align: center;\n}\n.toast.toast-with-icon .toast-icon .f7-icons,\n.toast.toast-with-icon .toast-icon .material-icons {\n font-size: var(--f7-toast-icon-size);\n}\n.toast.toast-center {\n top: 50%;\n}\n.toast.toast-top {\n margin-top: var(--f7-safe-area-top);\n}\n.ios .toast {\n transition-duration: 300ms;\n width: 100%;\n left: 0;\n}\n.ios .toast.toast-top {\n top: 0;\n transform: translate3d(0, -100%, 0);\n}\n.ios .toast.toast-top.modal-in {\n transform: translate3d(0, 0%, 0);\n}\n.ios .toast.toast-center {\n width: auto;\n left: 50%;\n border-radius: var(--f7-toast-border-radius);\n transform: translate3d(-50%, -50%, 0);\n}\n.ios .toast.toast-center.modal-in {\n transform: translate3d(-50%, -50%, 0);\n}\n.ios .toast.toast-bottom {\n bottom: 0;\n transform: translate3d(0, 100%, 0);\n}\n.ios .toast.toast-bottom.modal-in {\n transform: translate3d(0, 0%, 0);\n}\n@media (max-width: 568px) {\n .ios .toast.toast-top {\n margin-top: 0;\n }\n .ios .toast.toast-top .toast-content {\n padding-top: calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-top));\n }\n .ios .toast.toast-bottom .toast-content {\n padding-bottom: calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-bottom));\n }\n}\n@media (min-width: 569px) {\n .ios .toast {\n left: 50%;\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n border-radius: var(--f7-toast-border-radius);\n }\n .ios .toast.toast-top {\n top: 16px;\n }\n .ios .toast.toast-center {\n margin-left: 0;\n }\n .ios .toast.toast-bottom {\n margin-bottom: calc(16px + var(--f7-safe-area-bottom));\n }\n}\n@media (min-width: 1024px) {\n .ios .toast {\n margin-left: 0;\n width: auto;\n }\n .ios .toast.toast-horizontal-left {\n left: 16px;\n }\n .ios .toast.toast-horizontal-right {\n left: auto;\n right: 16px;\n }\n .ios .toast.toast-horizontal-center {\n left: 50%;\n width: var(--f7-toast-max-width);\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n }\n}\n.ios .toast-button {\n margin-right: 16px;\n margin-left: calc(-1 * var(--f7-button-padding-horizontal));\n}\n.md .toast {\n transition-duration: 200ms;\n border-radius: var(--f7-toast-border-radius);\n width: calc(100% - 16px);\n transform: scale(0.9);\n left: 8px;\n}\n.md .toast.modal-in {\n transform: scale(1);\n}\n.md .toast.modal-out {\n transform: scale(1);\n}\n.md .toast.toast-top {\n top: 8px;\n}\n.md .toast.toast-center {\n left: 50%;\n width: auto;\n transform: scale(0.9) translate3d(-55%, -55%, 0);\n}\n.md .toast.toast-center.modal-in {\n transform: scale(1) translate3d(-50%, -50%, 0);\n}\n.md .toast.toast-center.modal-out {\n transform: scale(1) translate3d(-50%, -50%, 0);\n}\n.md .toast.toast-bottom {\n bottom: calc(8px + var(--f7-safe-area-bottom));\n}\n@media (min-width: 584px) {\n .md .toast {\n left: 50%;\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n }\n .md .toast.toast-center {\n margin-left: 0;\n }\n}\n@media (min-width: 1024px) {\n .md .toast {\n margin-left: 0;\n width: auto;\n }\n .md .toast.toast-horizontal-left {\n left: 24px;\n }\n .md .toast.toast-horizontal-right {\n left: auto;\n right: 24px;\n }\n .md .toast.toast-horizontal-center {\n left: 50%;\n width: var(--f7-toast-max-width);\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n }\n .md .toast.toast-bottom {\n bottom: calc(24px + var(--f7-safe-area-bottom));\n }\n .md .toast.toast-top {\n top: 24px;\n }\n}\n.md .toast-button {\n margin-right: 16px;\n margin-left: -8px;\n}\n/* === Preloader === */\n:root {\n --f7-preloader-modal-padding: 8px;\n --f7-preloader-modal-bg-color: rgba(0, 0, 0, 0.8);\n}\n.ios {\n --f7-preloader-color: #6c6c6c;\n --f7-preloader-size: 20px;\n --f7-preloader-modal-preloader-size: 34px;\n --f7-preloader-modal-border-radius: 5px;\n}\n.md {\n --f7-preloader-color: #757575;\n --f7-preloader-size: 32px;\n --f7-preloader-modal-preloader-size: 32px;\n --f7-preloader-modal-border-radius: 4px;\n}\n.preloader {\n display: inline-block;\n vertical-align: middle;\n width: var(--f7-preloader-size);\n height: var(--f7-preloader-size);\n font-size: 0;\n position: relative;\n}\n.preloader .preloader-inner {\n width: 100%;\n height: 100%;\n display: block;\n position: relative;\n}\n/* === Preloader Modal === */\n.preloader-backdrop {\n visibility: visible;\n opacity: 0;\n background: none;\n z-index: 14000;\n}\n.preloader-modal {\n position: absolute;\n left: 50%;\n top: 50%;\n padding: var(--f7-preloader-modal-padding);\n background: var(--f7-preloader-modal-bg-color);\n z-index: 14500;\n transform: translateX(-50%) translateY(-50%);\n border-radius: var(--f7-preloader-modal-border-radius);\n}\n.preloader-modal .preloader {\n --f7-preloader-size: var(--f7-preloader-modal-preloader-size);\n display: block !important;\n}\nhtml.with-modal-preloader .page-content,\n.with-modal-preloader .page-content,\n.with-modal-preloader.page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\n.preloader[class*='color-'] {\n --f7-preloader-color: var(--f7-theme-color);\n}\n.preloader.color-white {\n --f7-preloader-color: #fff;\n}\n.preloader.color-black {\n --f7-preloader-color: #000;\n}\n.ios .preloader {\n color: var(--f7-preloader-color);\n}\n.ios .preloader-inner {\n animation: ios-preloader-spin 1s steps(8, end) infinite;\n}\n.ios .preloader-inner-line {\n display: block;\n width: 11.6%;\n height: 33.33%;\n border-radius: 100px;\n background: currentColor;\n position: absolute;\n left: 50%;\n top: 50%;\n transform-origin: center 150%;\n}\n.ios .preloader-multi-color .preloader-inner-line,\n.ios .preloader.color-multi .preloader-inner-line {\n animation: ios-preloader-multicolor 3s linear infinite;\n}\n.ios .preloader-inner-line:nth-child(1) {\n transform: translate(-50%, -150%) rotate(0deg);\n opacity: 0.27;\n}\n.ios .preloader-inner-line:nth-child(2) {\n transform: translate(-50%, -150%) rotate(45deg);\n opacity: 0.35285714;\n}\n.ios .preloader-inner-line:nth-child(3) {\n transform: translate(-50%, -150%) rotate(90deg);\n opacity: 0.43571429;\n}\n.ios .preloader-inner-line:nth-child(4) {\n transform: translate(-50%, -150%) rotate(135deg);\n opacity: 0.51857143;\n}\n.ios .preloader-inner-line:nth-child(5) {\n transform: translate(-50%, -150%) rotate(180deg);\n opacity: 0.60142857;\n}\n.ios .preloader-inner-line:nth-child(6) {\n transform: translate(-50%, -150%) rotate(225deg);\n opacity: 0.68428571;\n}\n.ios .preloader-inner-line:nth-child(7) {\n transform: translate(-50%, -150%) rotate(270deg);\n opacity: 0.76714286;\n}\n.ios .preloader-inner-line:nth-child(8) {\n transform: translate(-50%, -150%) rotate(315deg);\n opacity: 0.85;\n}\n@keyframes ios-preloader-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n@keyframes ios-preloader-multicolor {\n 0%,\n 100% {\n background-color: #2196f3;\n }\n 25% {\n background-color: #ff3b30;\n }\n 50% {\n background-color: #4cd964;\n }\n 75% {\n background-color: #ff9500;\n }\n}\n.md .preloader {\n color: var(--f7-preloader-color);\n}\n.md .preloader-inner {\n animation: md-preloader-rotate 1.4s linear infinite;\n}\n.md .preloader-inner circle {\n fill: none;\n stroke: currentColor;\n animation: md-preloader-circle-rotate 5.6s ease-in-out infinite;\n stroke-dasharray: 100px;\n stroke-dashoffset: 80px;\n stroke-width: 4;\n transform: rotate(-90deg);\n transform-origin: 18px 18px;\n}\n.md .preloader-multi-color circle,\n.md .preloader.color-multi circle {\n animation: md-preloader-circle-rotate 5.6s ease-in-out infinite, md-preloader-multicolor 5.6s ease-in-out infinite;\n}\n@keyframes md-preloader-multicolor {\n 0%,\n 100% {\n stroke: #4285f4;\n }\n 75% {\n stroke: #1b9a59;\n }\n 50% {\n stroke: #f7c223;\n }\n 25% {\n stroke: #de3e35;\n }\n}\n@keyframes md-preloader-rotate {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n@keyframes md-preloader-circle-rotate {\n 0% {\n transform: rotate(-90deg);\n stroke-dashoffset: 100px;\n }\n 12.5% {\n transform: rotate(-90deg);\n stroke-dashoffset: 25px;\n }\n 25% {\n stroke-dashoffset: 100px;\n transform: rotate(180deg);\n }\n 25.1% {\n transform: rotate(-180deg);\n stroke-dashoffset: 100px;\n }\n 37.5% {\n transform: rotate(-180deg);\n stroke-dashoffset: 25px;\n }\n 50% {\n stroke-dashoffset: 100px;\n transform: rotate(90deg);\n }\n 50.1% {\n transform: rotate(90deg);\n stroke-dashoffset: 100px;\n }\n 62.5% {\n transform: rotate(90deg);\n stroke-dashoffset: 25px;\n }\n 75% {\n stroke-dashoffset: 100px;\n transform: rotate(360deg);\n }\n 75.1% {\n transform: rotate(0deg);\n stroke-dashoffset: 100px;\n }\n 87.5% {\n transform: rotate(0deg);\n stroke-dashoffset: 25px;\n }\n 100% {\n stroke-dashoffset: 100px;\n transform: rotate(270deg);\n }\n}\n/* === Progressbar === */\n:root {\n /*\n --f7-progressbar-progress-color: var(--f7-theme-color);\n */\n}\n.ios {\n --f7-progressbar-height: 4px;\n --f7-progressbar-border-radius: 4px;\n --f7-progressbar-bg-color: rgba(0, 0, 0, 0.3);\n}\n.ios .dark,\n.ios.dark {\n --f7-progressbar-bg-color: rgba(255, 255, 255, 0.3);\n}\n.md {\n --f7-progressbar-height: 4px;\n --f7-progressbar-border-radius: 0px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-progressbar-bg-color: rgba(var(--f7-theme-color-rgb), 0.5);\n}\n.progressbar,\n.progressbar-infinite {\n width: 100%;\n overflow: hidden;\n position: relative;\n display: block;\n transform-style: preserve-3d;\n background: var(--f7-progressbar-bg-color, rgba(var(--f7-theme-color-rgb), 0.5));\n transform-origin: center top;\n height: var(--f7-progressbar-height);\n border-radius: var(--f7-progressbar-border-radius);\n}\n.progressbar {\n vertical-align: middle;\n}\n.progressbar span {\n background-color: var(--f7-progressbar-progress-color, var(--f7-theme-color));\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n transition-duration: 150ms;\n right: 0;\n transform: translate3d(100%, 0, 0);\n}\n.progressbar-infinite {\n z-index: 15000;\n}\n.progressbar-infinite:before,\n.progressbar-infinite:after {\n content: '';\n position: absolute;\n top: 0;\n width: 100%;\n height: 100%;\n transform: translate3d(0, 0, 0);\n display: block;\n background-color: var(--f7-progressbar-progress-color, var(--f7-theme-color));\n right: 0;\n transform-origin: right center;\n}\n.progressbar-infinite.color-multi {\n background: none !important;\n}\n.progressbar-in {\n animation: progressbar-in 150ms forwards;\n}\n.progressbar-out {\n animation: progressbar-out 150ms forwards;\n}\nbody > .progressbar,\n.view > .progressbar,\n.views > .progressbar,\n.page > .progressbar,\n.panel > .progressbar,\n.popup > .progressbar,\n.framework7-root > .progressbar,\nbody > .progressbar-infinite,\n.view > .progressbar-infinite,\n.views > .progressbar-infinite,\n.page > .progressbar-infinite,\n.panel > .progressbar-infinite,\n.popup > .progressbar-infinite,\n.framework7-root > .progressbar-infinite {\n position: absolute;\n left: 0;\n top: 0;\n z-index: 15000;\n border-radius: 0 !important;\n transform-origin: center top !important;\n}\n@keyframes progressbar-in {\n from {\n opacity: 0;\n transform: scaleY(0);\n }\n to {\n opacity: 1;\n transform: scaleY(1);\n }\n}\n@keyframes progressbar-out {\n from {\n opacity: 1;\n transform: scaleY(1);\n }\n to {\n opacity: 0;\n transform: scaleY(0);\n }\n}\n.ios .progressbar-infinite:before {\n animation: ios-progressbar-infinite 1s linear infinite;\n}\n.ios .progressbar-infinite:after {\n display: none;\n}\n.ios .progressbar-infinite.color-multi:before {\n width: 400%;\n background-image: linear-gradient(to right, #4cd964, #5ac8fa, #007aff, #34aadc, #5856d6, #ff2d55, #5856d6, #34aadc, #007aff, #5ac8fa, #4cd964);\n background-size: 25% 100%;\n background-repeat: repeat-x;\n animation: ios-progressbar-infinite-multicolor 3s linear infinite;\n}\n@keyframes ios-progressbar-infinite {\n 0% {\n transform: translate3d(100%, 0, 0);\n }\n 100% {\n transform: translate3d(-100%, 0, 0);\n }\n}\n@keyframes ios-progressbar-infinite-multicolor {\n 0% {\n transform: translate3d(0%, 0, 0);\n }\n 100% {\n transform: translate3d(-50%, 0, 0);\n }\n}\n.md .progressbar-infinite:before {\n animation: md-progressbar-infinite-1 2s linear infinite;\n}\n.md .progressbar-infinite:after {\n animation: md-progressbar-infinite-2 2s linear infinite;\n}\n.md .progressbar-infinite.color-multi:before {\n background: none;\n animation: md-progressbar-infinite-multicolor-bg 3s step-end infinite;\n}\n.md .progressbar-infinite.color-multi:after {\n background: none;\n animation: md-progressbar-infinite-multicolor-fill 3s linear infinite;\n transform-origin: center center;\n}\n@keyframes md-progressbar-infinite-1 {\n 0% {\n transform: translateX(10%) scaleX(0.1);\n }\n 25% {\n transform: translateX(-30%) scaleX(0.6);\n }\n 50% {\n transform: translateX(-100%) scaleX(1);\n }\n 100% {\n transform: translateX(-100%) scaleX(1);\n }\n}\n@keyframes md-progressbar-infinite-2 {\n 0% {\n transform: translateX(100%) scaleX(1);\n }\n 40% {\n transform: translateX(100%) scaleX(1);\n }\n 75% {\n transform: translateX(-60%) scaleX(0.35);\n }\n 90% {\n transform: translateX(-100%) scaleX(0.1);\n }\n 100% {\n transform: translateX(-100%) scaleX(0.1);\n }\n}\n@keyframes md-progressbar-infinite-multicolor-bg {\n 0% {\n background-color: #4caf50;\n }\n 25% {\n background-color: #f44336;\n }\n 50% {\n background-color: #2196f3;\n }\n 75% {\n background-color: #ffeb3b;\n }\n}\n@keyframes md-progressbar-infinite-multicolor-fill {\n 0% {\n transform: scaleX(0);\n background-color: #f44336;\n }\n 24.9% {\n transform: scaleX(1);\n background-color: #f44336;\n }\n 25% {\n transform: scaleX(0);\n background-color: #2196f3;\n }\n 49.9% {\n transform: scaleX(1);\n background-color: #2196f3;\n }\n 50% {\n transform: scaleX(0);\n background-color: #ffeb3b;\n }\n 74.9% {\n transform: scaleX(1);\n background-color: #ffeb3b;\n }\n 75% {\n transform: scaleX(0);\n background-color: #4caf50;\n }\n 100% {\n transform: scaleX(1);\n background-color: #4caf50;\n }\n}\n/* === Sortable === */\n.ios {\n --f7-sortable-handler-width: 36px;\n --f7-sortable-sorting-item-box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.6);\n --f7-sortable-handler-color: rgba(0, 0, 0, 0.22);\n --f7-sortable-sorting-item-bg-color: rgba(255, 255, 255, 0.8);\n}\n.ios .dark,\n.ios.dark {\n --f7-sortable-sorting-item-bg-color: rgba(50, 50, 50, 0.8);\n --f7-sortable-handler-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-sortable-handler-width: 42px;\n --f7-sortable-sorting-item-box-shadow: none;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-sortable-handler-color: var(--f7-md-on-surface-variant);\n --f7-sortable-sorting-item-bg-color: var(--f7-md-surface-3);\n}\n.sortable .sortable-handler {\n width: var(--f7-sortable-handler-width);\n height: 100%;\n position: absolute;\n top: 0;\n z-index: 10;\n opacity: 0;\n pointer-events: none;\n cursor: move;\n transition-duration: 300ms;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n left: var(--f7-safe-area-left);\n}\n.sortable .sortable-handler:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n transition-duration: 300ms;\n transform: translateX(10px);\n color: var(--f7-sortable-handler-color);\n overflow: hidden;\n height: 20px;\n width: 18px;\n}\n.sortable li.sorting {\n z-index: 50;\n background: var(--f7-sortable-sorting-item-bg-color);\n transition-duration: 0ms;\n box-shadow: var(--f7-sortable-sorting-item-box-shadow);\n}\n.sortable li.sorting .item-inner:after {\n display: none !important;\n}\n.sortable-opposite .sortable-handler {\n right: var(--f7-safe-area-left);\n left: auto;\n}\n.sortable-opposite .sortable-handler:after {\n transform: translateX(-10px);\n}\n.sortable:not(.sortable-opposite) .item-inner,\n.sortable-opposite .item-content,\n.sortable.simple-list li,\n.sortable-opposite.links-list li a {\n transition-duration: 300ms;\n transition-property: all;\n}\n.sortable-sorting li {\n transition-duration: 300ms;\n}\n.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler {\n pointer-events: auto;\n touch-action: none;\n opacity: 1;\n}\n.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler:after {\n transform: translateX(0px);\n}\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner:before,\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-title-row:before,\n.sortable-enabled:not(.sortable-opposite).links-list li:not(.no-sorting):not(.disallow-sorting) > a:before {\n display: none;\n}\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-inner,\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link.no-chevron .item-inner,\n.sortable-enabled.no-chevron:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,\n.sortable-enabled :not(.sortable-opposite).no-chevron .item-link .item-inner,\n.no-chevron .sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,\n.simple-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting),\n.links-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) a {\n padding-left: calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right));\n}\n.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .item-content,\n.simple-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting),\n.links-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) a {\n padding-right: calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right));\n}\n.ios .sortable-handler:after {\n content: 'sort_ios';\n}\n.md .sortable-handler:after {\n content: 'sort_md';\n}\n/* === Swipeout === */\n:root {\n --f7-swipeout-delete-button-bg-color: #ff3b30;\n --f7-swipeout-button-text-color: #fff;\n --f7-swipeout-button-padding-vertical: 0px;\n --f7-swipeout-button-bg-color: rgba(0, 0, 0, 0.22);\n}\n:root .dark,\n:root.dark {\n --f7-swipeout-button-bg-color: rgba(255, 255, 255, 0.55);\n}\n.ios {\n --f7-swipeout-button-padding-horizontal: 30px;\n --f7-swipeout-button-font-size: inherit;\n --f7-swipeout-button-font-weight: inherit;\n}\n.md {\n --f7-swipeout-button-padding-horizontal: 24px;\n --f7-swipeout-button-font-size: 14px;\n --f7-swipeout-button-font-weight: 500;\n}\n.md .dark,\n.md.dark {\n --f7-swipeout-button-text-color: #000;\n}\n.swipeout {\n overflow: hidden;\n transform-style: preserve-3d;\n}\n.swipeout-deleting {\n transition-duration: 300ms;\n}\n.swipeout-deleting .swipeout-content {\n transform: translateX(-100%);\n}\n.swipeout-transitioning .swipeout-content,\n.swipeout-transitioning .swipeout-actions-right a,\n.swipeout-transitioning .swipeout-actions-left a,\n.swipeout-transitioning .swipeout-overswipe {\n transition-duration: 300ms;\n transition-property: transform, left;\n}\n.swipeout-content {\n position: relative;\n z-index: 10;\n}\n.swipeout-overswipe {\n transition-duration: 200ms;\n transition-property: left;\n}\n.swipeout-actions-left,\n.swipeout-actions-right {\n position: absolute;\n top: 0;\n height: 100%;\n display: flex;\n direction: ltr;\n}\n.swipeout-actions-left > a,\n.swipeout-actions-right > a,\n.swipeout-actions-left > button,\n.swipeout-actions-right > button,\n.swipeout-actions-left > span,\n.swipeout-actions-right > span,\n.swipeout-actions-left > div,\n.swipeout-actions-right > div {\n color: var(--f7-swipeout-button-text-color);\n background: var(--f7-swipeout-button-bg-color);\n padding: var(--f7-swipeout-button-padding-vertical) var(--f7-swipeout-button-padding-horizontal);\n display: flex;\n align-items: center;\n position: relative;\n left: 0;\n font-size: var(--f7-swipeout-button-font-size);\n font-weight: var(--f7-swipeout-button-font-weight);\n}\n.swipeout-actions-left > a:after,\n.swipeout-actions-right > a:after,\n.swipeout-actions-left > button:after,\n.swipeout-actions-right > button:after,\n.swipeout-actions-left > span:after,\n.swipeout-actions-right > span:after,\n.swipeout-actions-left > div:after,\n.swipeout-actions-right > div:after {\n content: '';\n position: absolute;\n top: 0;\n width: 600%;\n height: 100%;\n background: inherit;\n z-index: -1;\n transform: translate3d(0, 0, 0);\n pointer-events: none;\n}\n.swipeout-actions-left .swipeout-delete,\n.swipeout-actions-right .swipeout-delete {\n background: var(--f7-swipeout-delete-button-bg-color);\n}\n.swipeout-actions-right {\n right: 0%;\n transform: translateX(calc(100% + 1px));\n}\n.swipeout-actions-right > a:after,\n.swipeout-actions-right > button:after,\n.swipeout-actions-right > span:after,\n.swipeout-actions-right > div:after {\n left: 100%;\n}\n.swipeout-actions-right > a:last-child,\n.swipeout-actions-right > button:last-child,\n.swipeout-actions-right > span:last-child,\n.swipeout-actions-right > div:last-child {\n padding-right: calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-right));\n}\n.swipeout-actions-left {\n left: 0%;\n transform: translateX(calc(-100% - 1px));\n}\n.swipeout-actions-left > a:after,\n.swipeout-actions-left > button:after,\n.swipeout-actions-left > span:after,\n.swipeout-actions-left > div:after {\n right: 100%;\n}\n.swipeout-actions-left > a:first-child,\n.swipeout-actions-left > button:first-child,\n.swipeout-actions-left > span:first-child,\n.swipeout-actions-left > div:first-child {\n padding-left: calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-left));\n}\n.swipeout-actions-left [class*='color-'],\n.swipeout-actions-right [class*='color-'] {\n --f7-swipeout-button-bg-color: var(--f7-theme-color);\n}\n/* === Accordion === */\n:root {\n --f7-accordion-chevron-icon-down: 'chevron_down';\n --f7-accordion-chevron-icon-up: 'chevron_up';\n}\n.accordion-item-toggle {\n cursor: pointer;\n}\n.list.accordion-list .accordion-item-toggle {\n transition-duration: 300ms;\n position: relative;\n overflow: hidden;\n}\n.list.accordion-list .accordion-item-toggle.active-state {\n transition-duration: 300ms;\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.list.accordion-list .accordion-item-toggle.active-state > .item-inner:after {\n background-color: transparent;\n}\n.list.accordion-list .accordion-item-toggle .item-inner {\n transition-duration: 300ms;\n transition-property: background-color;\n}\n.list.accordion-list .accordion-item-toggle .item-inner:after {\n transition-duration: 300ms;\n}\n.list.accordion-list .accordion-item-toggle .ripple-wave {\n z-index: 0;\n}\n.accordion-item .item-link .item-inner:after {\n transition-duration: 300ms;\n}\n.accordion-item .list,\n.accordion-item .block {\n margin-top: 0;\n margin-bottom: 0;\n}\n.accordion-item .block > h1:first-child,\n.accordion-item .block > h2:first-child,\n.accordion-item .block > h3:first-child,\n.accordion-item .block > h4:first-child,\n.accordion-item .block > p:first-child {\n margin-top: 10px;\n}\n.accordion-item .block > h1:last-child,\n.accordion-item .block > h2:last-child,\n.accordion-item .block > h3:last-child,\n.accordion-item .block > h4:last-child,\n.accordion-item .block > p:last-child {\n margin-bottom: 10px;\n}\n.accordion-item-opened .accordion-item-toggle .item-inner:after,\n.accordion-item-opened > .item-link .item-inner:after {\n background-color: transparent;\n}\n.list li.accordion-item ul {\n padding-right: 0;\n}\n.accordion-item-content {\n position: relative;\n overflow: hidden;\n height: 0;\n font-size: 14px;\n transition-duration: 300ms;\n}\n.accordion-item-opened > .accordion-item-content {\n height: auto;\n}\nhtml.device-android-4 .accordion-item-content {\n transform: none;\n}\n.list .accordion-item-toggle .item-inner:before {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n top: 50%;\n font-size: var(--f7-list-chevron-icon-font-size);\n color: var(--f7-list-chevron-icon-color);\n pointer-events: none;\n left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.list:not(.accordion-opposite) .accordion-item-toggle .item-inner {\n padding-left: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.accordion-opposite .accordion-item-toggle.item-link .item-inner,\n.accordion-opposite .accordion-item-toggle .item-inner,\n.accordion-opposite .accordion-item > .item-link > .item-inner,\n.accordion-opposite .accordion-item > .item-link > .item-content > .item-inner {\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.accordion-opposite .accordion-item > .item-link > .item-title-row {\n padding-right: 0;\n}\n.accordion-opposite .accordion-item-toggle.item-link .item-inner:before,\n.accordion-opposite .accordion-item-toggle .item-inner:before,\n.accordion-opposite .accordion-item > .item-link > .item-inner:before,\n.accordion-opposite .accordion-item > .item-link > .item-content > .item-inner:before,\n.accordion-opposite .accordion-item > .item-link .item-title-row:before {\n display: none;\n}\n.accordion-opposite .accordion-item-toggle > .item-content,\n.accordion-opposite .accordion-item-toggle.item-content,\n.accordion-opposite .accordion-item > .item-content,\n.accordion-opposite .accordion-item > .item-link > .item-content,\n.accordion-opposite.links-list .accordion-item > a {\n position: relative;\n padding-right: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.accordion-opposite .accordion-item-toggle > .item-content:before,\n.accordion-opposite .accordion-item-toggle.item-content:before,\n.accordion-opposite .accordion-item > .item-content:before,\n.accordion-opposite .accordion-item > .item-link > .item-content:before,\n.accordion-opposite.links-list .accordion-item > a:before {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n top: 50%;\n font-size: var(--f7-list-chevron-icon-font-size);\n color: var(--f7-list-chevron-icon-color);\n pointer-events: none;\n content: var(--f7-accordion-chevron-icon-down);\n width: 14px;\n height: 8px;\n margin-top: -4px;\n line-height: 8px;\n transform: translateX(-50%);\n right: calc((var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal)) / 2 + var(--f7-safe-area-right));\n}\n.list .accordion-item-toggle.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.list .accordion-item-toggle .item-inner:before,\n.list:not(.media-list) .accordion-item:not(.media-item) .accordion-item-toggle .item-inner:before,\n.list:not(.media-list) .accordion-item:not(.media-item) > .item-link .item-inner:before,\n.media-list .accordion-item .accordion-item-toggle .item-title-row:before,\n.media-list .accordion-item > .item-link .item-title-row:before,\n.accordion-item.media-item .accordion-item-toggle .item-title-row:before,\n.accordion-item.media-item > .item-link .item-title-row:before,\n.links-list .accordion-item > a:before {\n content: var(--f7-accordion-chevron-icon-down);\n width: 14px;\n height: 8px;\n margin-top: -4px;\n line-height: 8px;\n}\n.list .accordion-item-toggle.accordion-item-opened .item-inner:before,\n.list:not(.media-list) .accordion-item-opened:not(.media-item) .accordion-item-toggle .item-inner:before,\n.list:not(.media-list) .accordion-item-opened:not(.media-item) > .item-link .item-inner:before,\n.media-list .accordion-item-opened .accordion-item-toggle .item-title-row:before,\n.media-list .accordion-item-opened > .item-link .item-title-row:before,\n.accordion-item-opened.media-item .accordion-item-toggle .item-title-row:before,\n.accordion-item-opened.media-item > .item-link .item-title-row:before,\n.links-list .accordion-item-opened > a:before,\n.accordion-opposite .accordion-item-opened .accordion-item-toggle > .item-content:before,\n.accordion-opposite .accordion-item-opened .accordion-item-toggle.item-content:before,\n.accordion-opposite .accordion-item-opened > .item-content:before,\n.accordion-opposite .accordion-item-opened > .item-link > .item-content:before,\n.accordion-opposite .links-list .accordion-item-opened > a:before {\n content: var(--f7-accordion-chevron-icon-up);\n width: 14px;\n height: 8px;\n margin-top: -4px;\n line-height: 8px;\n}\n/* === Contacts === */\n.ios {\n --f7-contacts-list-title-font-size: inherit;\n --f7-contacts-list-title-font-weight: 600;\n --f7-contacts-list-title-height: 22px;\n --f7-contacts-list-title-text-color: #000;\n --f7-contacts-list-title-bg-color: #f7f7f7;\n}\n.ios .dark,\n.ios.dark {\n --f7-contacts-list-title-text-color: #fff;\n --f7-contacts-list-title-bg-color: #323234;\n}\n.md {\n --f7-contacts-list-title-font-size: 20px;\n --f7-contacts-list-title-font-weight: 500;\n --f7-contacts-list-title-height: 48px;\n --f7-contacts-list-title-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-contacts-list-title-text-color: var(--f7-theme-color);\n}\n.contacts-list {\n --f7-list-margin-vertical: 0px;\n}\n.contacts-list .list-group-title,\n.contacts-list li.list-group-title {\n background-color: var(--f7-contacts-list-title-bg-color, var(--f7-list-group-title-bg-color));\n font-weight: var(--f7-contacts-list-title-font-weight, var(--f7-list-group-title-font-weight));\n font-size: var(--f7-contacts-list-title-font-size, var(--f7-list-group-title-font-size));\n color: var(--f7-contacts-list-title-text-color, var(--f7-theme-color));\n line-height: var(--f7-contacts-list-title-height, var(--f7-list-group-title-height));\n height: var(--f7-contacts-list-title-height, var(--f7-list-group-title-height));\n}\n.contacts-list .list-group:first-child ul:before {\n display: none !important;\n}\n.contacts-list .list-group:last-child ul:after {\n display: none !important;\n}\n.md .contacts-list .list-group-title {\n pointer-events: none;\n overflow: visible;\n width: 40px;\n}\n.md .contacts-list .list-group-title + li {\n margin-top: calc(var(--f7-contacts-list-title-height) * -1);\n}\n.md .contacts-list .list-group-title:before {\n display: none !important;\n}\n.md .contacts-list li:not(.list-group-title) {\n padding-right: 40px;\n}\n/* === Virtual List === */\n/* === Indexed List === */\n:root {\n --f7-list-index-width: 16px;\n --f7-list-index-font-size: 11px;\n --f7-list-index-font-weight: 600;\n /* --f7-list-index-text-color: var(--f7-theme-color); */\n --f7-list-index-item-height: 14px;\n --f7-list-index-label-font-weight: 500;\n}\n.ios {\n --f7-list-index-label-text-color: #fff;\n /* --f7-list-index-label-bg-color: var(--f7-theme-color); */\n --f7-list-index-label-size: 44px;\n --f7-list-index-label-font-size: 17px;\n --f7-list-index-skip-dot-size: 6px;\n}\n.md {\n --f7-list-index-label-size: 56px;\n --f7-list-index-label-font-size: 20px;\n --f7-list-index-skip-dot-size: 4px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-list-index-label-bg-color: var(--f7-md-primary);\n --f7-list-index-label-text-color: var(--f7-md-on-primary);\n}\n.list-index {\n position: absolute;\n top: 0;\n bottom: 0;\n text-align: center;\n z-index: 10;\n width: var(--f7-list-index-width);\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n left: var(--f7-safe-area-left);\n}\n.list-index:before {\n content: '';\n position: absolute;\n width: 20px;\n top: 0;\n right: 100%;\n height: 100%;\n}\n.list-index ul {\n color: var(--f7-list-index-text-color, var(--f7-theme-color));\n font-size: var(--f7-list-index-font-size);\n font-weight: var(--f7-list-index-font-weight);\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n height: 100%;\n width: 100%;\n position: relative;\n}\n.list-index li {\n margin: 0;\n padding: 0;\n list-style: none;\n position: relative;\n height: var(--f7-list-index-item-height);\n line-height: var(--f7-list-index-item-height);\n flex-shrink: 0;\n display: block;\n width: 100%;\n}\n.list-index .list-index-skip-placeholder:after {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n border-radius: 50%;\n width: var(--f7-list-index-skip-dot-size);\n height: var(--f7-list-index-skip-dot-size);\n margin-left: calc(-1 * var(--f7-list-index-skip-dot-size) / 2);\n margin-top: calc(-1 * var(--f7-list-index-skip-dot-size) / 2);\n background: var(--f7-list-index-text-color, var(--f7-theme-color));\n}\n.list-index .list-index-label {\n position: absolute;\n bottom: 0;\n right: 100%;\n text-align: center;\n background-color: var(--f7-list-index-label-bg-color, var(--f7-theme-color));\n color: var(--f7-list-index-label-text-color);\n width: var(--f7-list-index-label-size);\n height: var(--f7-list-index-label-size);\n line-height: var(--f7-list-index-label-size);\n font-size: var(--f7-list-index-label-font-size);\n font-weight: var(--f7-list-index-label-font-weight);\n}\n.navbar ~ .page > .list-index,\n.navbars ~ .page > .list-index,\n.navbar ~ .list-index {\n top: var(--f7-navbar-height);\n}\n.navbar ~ .toolbar-top ~ .list-index,\n.navbars ~ .toolbar-top ~ .list-index,\n.ios .navbar ~ .toolbar-top-ios ~ .list-index,\n.ios .navbars ~ .toolbar-top-ios .md .navbar ~ .toolbar-top-md ~ .list-index {\n top: calc(var(--f7-navbar-height) + var(--f7-toolbar-height));\n}\n.navbar ~ .toolbar-top.tabbar-icons ~ .list-index,\n.navbars ~ .toolbar-top.tabbar-icons ~ .list-index,\n.ios .navbar ~ .toolbar-top-ios.tabbar-icons ~ .list-index,\n.ios .navbars ~ .toolbar-top-ios .md .navbar ~ .toolbar-top-md.tabbar-icons ~ .list-index {\n top: calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height));\n}\n.navbar ~ .subnavbar ~ .list-index,\n.navbars ~ .subnavbar ~ .list-index,\n.page-with-subnavbar .navbar ~ .list-index {\n top: calc(var(--f7-navbar-height) + var(--f7-subnavbar-height));\n}\n.toolbar-bottom ~ .page > .list-index,\n.ios .toolbar-bottom-ios ~ .page > .list-index,\n.md .toolbar-bottom-md ~ .page > .list-index,\n.toolbar-bottom ~ * .page > .list-index,\n.ios .toolbar-bottom-ios ~ * .page > .list-index,\n.md .toolbar-bottom-md ~ * .page > .list-index,\n.toolbar-bottom ~ .list-index,\n.ios .toolbar-bottom-ios ~ .list-index,\n.md .toolbar-bottom-md ~ .list-index {\n bottom: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n}\n.toolbar-bottom.tabbar-icons ~ .page > .list-index,\n.ios .toolbar-bottom-ios.tabbar-icons ~ .page > .list-index,\n.md .toolbar-bottom-md.tabbar-icons ~ .page > .list-index,\n.toolbar-bottom.tabbar-icons ~ * .page > .list-index,\n.ios .toolbar-bottom-ios.tabbar-icons ~ * .page > .list-index,\n.md .toolbar-bottom-md.tabbar-icons ~ * .page > .list-index,\n.toolbar-bottom.tabbar-icons ~ .list-index,\n.ios .toolbar-bottom-ios.tabbar-icons ~ .list-index,\n.md .toolbar-bottom-md.tabbar-icons ~ .list-index {\n bottom: calc(var(--f7-tabbar-icons-height) + var(--f7-safe-area-bottom));\n}\n.ios .list-index .list-index-label {\n margin-bottom: calc(-1 * var(--f7-list-index-label-size) / 2);\n margin-right: calc(var(--f7-list-index-width) - 1px);\n border-radius: 50%;\n}\n.ios .list-index .list-index-label:before {\n position: absolute;\n width: 100%;\n height: 100%;\n border-radius: 50% 0% 50% 50%;\n content: '';\n background-color: inherit;\n left: 0;\n top: 0;\n transform: rotate(45deg);\n z-index: -1;\n}\n.md .list-index .list-index-label {\n border-radius: 50% 50% 0 50%;\n}\n/* === Timeline === */\n:root {\n --f7-timeline-inner-block-margin-vertical: 16px;\n --f7-timeline-divider-margin-horizontal: 16px;\n --f7-timeline-horizontal-date-height: 34px;\n --f7-timeline-year-height: 24px;\n --f7-timeline-year-font-weight: inherit;\n --f7-timeline-month-height: 24px;\n --f7-timeline-month-font-size: inherit;\n --f7-timeline-month-font-weight: inherit;\n --f7-timeline-item-text-font-weight: inherit;\n --f7-timeline-item-subtitle-font-weight: inherit;\n}\n.ios {\n --f7-timeline-divider-color: #bbb;\n --f7-timeline-padding-horizontal: 16px;\n --f7-timeline-margin-vertical: 35px;\n --f7-timeline-item-inner-border-radius: 7px;\n --f7-timeline-item-time-font-size: 13px;\n --f7-timeline-item-title-font-size: 17px;\n --f7-timeline-item-title-line-height: inherit;\n --f7-timeline-item-title-font-weight: 600;\n --f7-timeline-item-subtitle-font-size: 15px;\n --f7-timeline-item-subtitle-line-height: inherit;\n --f7-timeline-item-text-font-size: inherit;\n --f7-timeline-item-text-color: inherit;\n --f7-timeline-item-text-line-height: inherit;\n --f7-timeline-year-font-size: 16px;\n --f7-timeline-horizontal-item-padding: 10px;\n --f7-timeline-item-inner-bg-color: #fff;\n --f7-timeline-item-time-text-color: rgba(0, 0, 0, 0.45);\n --f7-timeline-horizontal-item-border-color: rgba(0, 0, 0, 0.22);\n --f7-timeline-horizontal-item-date-border-color: rgba(0, 0, 0, 0.22);\n}\n.ios .dark,\n.ios.dark {\n --f7-timeline-horizontal-item-border-color: rgba(255, 255, 255, 0.15);\n --f7-timeline-horizontal-item-date-border-color: rgba(255, 255, 255, 0.15);\n --f7-timeline-item-inner-bg-color: #1c1c1d;\n --f7-timeline-item-time-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-timeline-padding-horizontal: 16px;\n --f7-timeline-margin-vertical: 32px;\n --f7-timeline-item-inner-border-radius: 16px;\n --f7-timeline-item-time-font-size: 13px;\n --f7-timeline-item-title-font-size: 16px;\n --f7-timeline-item-title-line-height: inherit;\n --f7-timeline-item-title-font-weight: 400;\n --f7-timeline-item-subtitle-font-size: inherit;\n --f7-timeline-item-subtitle-line-height: inherit;\n --f7-timeline-item-text-font-size: inherit;\n --f7-timeline-item-text-line-height: inherit;\n --f7-timeline-year-font-size: 16px;\n --f7-timeline-horizontal-item-padding: 12px;\n --f7-timeline-horizontal-item-date-border-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-timeline-divider-color: var(--f7-md-outline);\n --f7-timeline-item-text-color: var(--f7-md-on-surface);\n --f7-timeline-horizontal-item-border-color: var(--f7-md-outline);\n --f7-timeline-item-inner-bg-color: var(--f7-md-surface-1);\n --f7-timeline-item-time-text-color: var(--f7-md-on-surface-variant);\n}\n.timeline {\n box-sizing: border-box;\n margin: var(--f7-timeline-margin-vertical) 0;\n padding: 0 var(--f7-timeline-padding-horizontal);\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-right));\n}\n.block-strong .timeline {\n padding: 0;\n margin: 0;\n}\n.timeline-item {\n display: flex;\n justify-content: flex-start;\n overflow: hidden;\n box-sizing: border-box;\n position: relative;\n padding: 2px 0px var(--f7-timeline-padding-horizontal);\n}\n.timeline-item:last-child {\n padding-bottom: 2px;\n}\n.timeline-item-date {\n flex-shrink: 0;\n width: 50px;\n text-align: right;\n box-sizing: border-box;\n}\n.timeline-item-date small {\n font-size: 10px;\n}\n.timeline-item-content {\n margin: 2px;\n min-width: 0;\n position: relative;\n flex-shrink: 10;\n}\n.timeline-item-content .card,\n.timeline-item-content.card,\n.timeline-item-content .list,\n.timeline-item-content.list,\n.timeline-item-content .block,\n.timeline-item-content.block {\n margin: 0;\n width: 100%;\n}\n.timeline-item-content .card + .card,\n.timeline-item-content .list + .card,\n.timeline-item-content .block + .card,\n.timeline-item-content .card + .list,\n.timeline-item-content .list + .list,\n.timeline-item-content .block + .list,\n.timeline-item-content .card + .block,\n.timeline-item-content .list + .block,\n.timeline-item-content .block + .block {\n margin: var(--f7-timeline-inner-block-margin-vertical) 0 0;\n}\n.timeline-item-content p:first-child,\n.timeline-item-content ul:first-child,\n.timeline-item-content ol:first-child,\n.timeline-item-content h1:first-child,\n.timeline-item-content h2:first-child,\n.timeline-item-content h3:first-child,\n.timeline-item-content h4:first-child {\n margin-top: 0;\n}\n.timeline-item-content p:last-child,\n.timeline-item-content ul:last-child,\n.timeline-item-content ol:last-child,\n.timeline-item-content h1:last-child,\n.timeline-item-content h2:last-child,\n.timeline-item-content h3:last-child,\n.timeline-item-content h4:last-child {\n margin-bottom: 0;\n}\n.timeline-item-inner {\n background: var(--f7-timeline-item-inner-bg-color);\n box-sizing: border-box;\n border-radius: var(--f7-timeline-item-inner-border-radius);\n padding: 8px var(--f7-timeline-padding-horizontal);\n}\n.timeline-item-inner + .timeline-item-inner {\n margin-top: var(--f7-timeline-inner-block-margin-vertical);\n}\n.timeline-item-inner .block {\n padding: 0;\n color: inherit;\n}\n.timeline-item-inner .block-strong {\n padding-left: 0;\n padding-right: 0;\n margin: 0;\n}\n.timeline-item-inner .block-strong:before,\n.timeline-item-inner .block-strong:after {\n display: none !important;\n}\n.timeline-item-inner .list ul:before,\n.timeline-item-inner .list ul:after {\n display: none !important;\n}\n.timeline-item-divider {\n width: 1px;\n position: relative;\n width: 10px;\n height: 10px;\n background: var(--f7-timeline-divider-color);\n border-radius: 50%;\n flex-shrink: 0;\n margin: 3px var(--f7-timeline-divider-margin-horizontal) 0;\n}\n.timeline-item-divider:after,\n.timeline-item-divider:before {\n content: ' ';\n width: 1px;\n height: 100vh;\n position: absolute;\n left: 50%;\n background: inherit;\n transform: translate3d(-50%, 0, 0);\n}\n.timeline-item-divider:after {\n top: 100%;\n}\n.timeline-item-divider:before {\n bottom: 100%;\n}\n.timeline-item:last-child .timeline-item-divider:after {\n display: none;\n}\n.timeline-item:first-child .timeline-item-divider:before {\n display: none;\n}\n.timeline-item-time {\n font-size: var(--f7-timeline-item-time-font-size);\n margin-top: var(--f7-timeline-inner-block-margin-vertical);\n color: var(--f7-timeline-item-time-text-color);\n}\n.timeline-item-time:first-child,\n.timeline-item-time:last-child {\n margin-top: 0;\n}\n.timeline-item-title + .timeline-item-time {\n margin-top: 0;\n}\n.timeline-item-title {\n font-size: var(--f7-timeline-item-title-font-size);\n font-weight: var(--f7-timeline-item-title-font-weight);\n line-height: var(--f7-timeline-item-title-line-height);\n}\n.timeline-item-subtitle {\n font-size: var(--f7-timeline-item-subtitle-font-size);\n font-weight: var(--f7-timeline-item-subtitle-font-weight);\n line-height: var(--f7-timeline-item-subtitle-line-height);\n}\n.timeline-item-text {\n color: var(--f7-timeline-item-text-color);\n font-size: var(--f7-timeline-item-text-font-size);\n font-weight: var(--f7-timeline-item-text-font-weight);\n line-height: var(--f7-timeline-item-text-line-height);\n}\n.timeline-sides .timeline-item-right,\n.timeline-sides .timeline-item {\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n}\n.timeline-sides .timeline-item-right .timeline-item-date,\n.timeline-sides .timeline-item .timeline-item-date {\n text-align: left;\n}\n.timeline-sides .timeline-item-left,\n.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n}\n.timeline-sides .timeline-item-left .timeline-item-date,\n.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: right;\n}\n@media (min-width: 480px) {\n .xsmall-sides .timeline-item-right,\n .xsmall-sides .timeline-item {\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .xsmall-sides .timeline-item-right .timeline-item-date,\n .xsmall-sides .timeline-item .timeline-item-date {\n text-align: left;\n }\n .xsmall-sides .timeline-item-left,\n .xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .xsmall-sides .timeline-item-left .timeline-item-date,\n .xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: right;\n }\n}\n@media (min-width: 568px) {\n .small-sides .timeline-item-right,\n .small-sides .timeline-item {\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .small-sides .timeline-item-right .timeline-item-date,\n .small-sides .timeline-item .timeline-item-date {\n text-align: left;\n }\n .small-sides .timeline-item-left,\n .small-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .small-sides .timeline-item-left .timeline-item-date,\n .small-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: right;\n }\n}\n@media (min-width: 768px) {\n .medium-sides .timeline-item-right,\n .medium-sides .timeline-item {\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .medium-sides .timeline-item-right .timeline-item-date,\n .medium-sides .timeline-item .timeline-item-date {\n text-align: left;\n }\n .medium-sides .timeline-item-left,\n .medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .medium-sides .timeline-item-left .timeline-item-date,\n .medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: right;\n }\n}\n@media (min-width: 1024px) {\n .large-sides .timeline-item-right,\n .large-sides .timeline-item {\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .large-sides .timeline-item-right .timeline-item-date,\n .large-sides .timeline-item .timeline-item-date {\n text-align: left;\n }\n .large-sides .timeline-item-left,\n .large-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .large-sides .timeline-item-left .timeline-item-date,\n .large-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: right;\n }\n}\n@media (min-width: 1200px) {\n .xlarge-sides .timeline-item-right,\n .xlarge-sides .timeline-item {\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .xlarge-sides .timeline-item-right .timeline-item-date,\n .xlarge-sides .timeline-item .timeline-item-date {\n text-align: left;\n }\n .xlarge-sides .timeline-item-left,\n .xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .xlarge-sides .timeline-item-left .timeline-item-date,\n .xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: right;\n }\n}\n.timeline-horizontal {\n height: 100%;\n display: flex;\n padding: 0;\n margin: 0;\n position: relative;\n padding-left: var(--f7-safe-area-left);\n padding-right: 0;\n}\n.timeline-horizontal .timeline-item {\n display: block;\n width: 100/3vw;\n margin: 0;\n padding: 0;\n flex-shrink: 0;\n position: relative;\n height: 100%;\n padding-top: var(--f7-timeline-horizontal-date-height) !important;\n padding-bottom: var(--f7-timeline-horizontal-item-padding);\n}\n.timeline-horizontal .timeline-item:after {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: 0;\n bottom: auto;\n left: auto;\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-horizontal .timeline-item-date {\n padding: 0px var(--f7-timeline-horizontal-item-padding);\n width: auto;\n text-align: left;\n line-height: var(--f7-timeline-horizontal-date-height);\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: var(--f7-timeline-horizontal-date-height);\n background-color: var(--f7-bars-bg-color);\n color: var(--f7-bars-text-color);\n text-align: right;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .timeline-horizontal .timeline-item-date {\n background-color: rgba(var(--f7-bars-bg-color-rgb), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.timeline-horizontal .timeline-item-date:after {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-date-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-horizontal .timeline-item-content {\n padding: var(--f7-timeline-horizontal-item-padding);\n height: calc(100vw - var(--f7-timeline-horizontal-item-padding));\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n margin: 0;\n}\n.timeline-horizontal .timeline-item-divider {\n display: none;\n}\n.timeline-horizontal > .timeline-item:last-child:after,\n.timeline-horizontal .timeline-month:last-child .timeline-item:last-child:after {\n display: none !important;\n}\n.timeline-horizontal.timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n}\n.timeline-horizontal.timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n}\n.timeline-horizontal.timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n}\n.timeline-horizontal.timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n}\n.timeline-horizontal.timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n}\n.timeline-horizontal.timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n}\n.timeline-horizontal.timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n}\n.timeline-horizontal.timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n}\n.timeline-horizontal.timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n}\n.timeline-horizontal.timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n}\n.timeline-horizontal.timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n}\n.timeline-horizontal.timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n}\n.timeline-horizontal.timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n}\n.timeline-horizontal.timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n}\n.timeline-horizontal.timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n}\n.timeline-horizontal.timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n}\n.timeline-horizontal.timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n}\n.timeline-horizontal.timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n}\n.timeline-horizontal.timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n}\n.timeline-horizontal.timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n}\n@media (min-width: 480px) {\n .timeline-horizontal.xsmall-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.xsmall-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.xsmall-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.xsmall-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.xsmall-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.xsmall-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.xsmall-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.xsmall-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.xsmall-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.xsmall-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.xsmall-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.xsmall-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.xsmall-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.xsmall-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.xsmall-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.xsmall-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.xsmall-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.xsmall-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.xsmall-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.xsmall-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 568px) {\n .timeline-horizontal.small-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.small-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.small-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.small-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.small-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.small-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.small-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.small-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.small-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.small-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.small-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.small-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.small-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.small-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.small-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.small-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.small-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.small-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.small-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.small-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 768px) {\n .timeline-horizontal.medium-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.medium-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.medium-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.medium-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.medium-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.medium-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.medium-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.medium-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.medium-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.medium-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.medium-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.medium-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.medium-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.medium-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.medium-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.medium-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.medium-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.medium-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.medium-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.medium-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 1024px) {\n .timeline-horizontal.large-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.large-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.large-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.large-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.large-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.large-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.large-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.large-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.large-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.large-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.large-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.large-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.large-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.large-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.large-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.large-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.large-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.large-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.large-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.large-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 1200px) {\n .timeline-horizontal.xlarge-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.xlarge-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.xlarge-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.xlarge-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.xlarge-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.xlarge-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.xlarge-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.xlarge-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.xlarge-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.xlarge-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.xlarge-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.xlarge-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.xlarge-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.xlarge-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.xlarge-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.xlarge-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.xlarge-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.xlarge-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.xlarge-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.xlarge-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n.timeline-year {\n padding-top: var(--f7-timeline-year-height);\n}\n.timeline-year:after {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: 0;\n bottom: auto;\n left: auto;\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-year:last-child:after {\n display: none !important;\n}\n.timeline-month {\n padding-top: var(--f7-timeline-month-height);\n}\n.timeline-month .timeline-item:before {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-year,\n.timeline-month {\n display: flex;\n flex-shrink: 0;\n position: relative;\n box-sizing: border-box;\n height: 100%;\n}\n.timeline-year-title {\n line-height: var(--f7-timeline-year-height);\n height: var(--f7-timeline-year-height);\n font-size: var(--f7-timeline-year-font-size);\n font-weight: var(--f7-timeline-year-font-weight);\n}\n.timeline-month-title {\n line-height: var(--f7-timeline-month-height);\n height: var(--f7-timeline-month-height);\n font-size: var(--f7-timeline-month-font-size);\n font-weight: var(--f7-timeline-month-font-weight);\n}\n.timeline-year-title,\n.timeline-month-title {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n box-sizing: border-box;\n padding: 0 var(--f7-timeline-horizontal-item-padding);\n background-color: var(--f7-bars-bg-color);\n color: var(--f7-bars-text-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .timeline-year-title,\n .ios-translucent-bars .timeline-month-title {\n background-color: rgba(var(--f7-bars-bg-color-rgb), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.timeline-year-title span,\n.timeline-month-title span {\n display: inline-block;\n position: sticky;\n right: calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-right));\n}\n.timeline-month-title span {\n margin-top: -2px;\n}\n.timeline-year:first-child .timeline-year-title,\n.timeline-year:first-child .timeline-month:first-child .timeline-month-title,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-month-title {\n left: calc(var(--f7-safe-area-left) * -1);\n right: 0;\n width: auto;\n}\n.timeline-horizontal .timeline-item:first-child,\n.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-item:first-child,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-month-title + .timeline-item {\n overflow: visible;\n}\n.timeline-horizontal .timeline-item:first-child .timeline-item-date,\n.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child .timeline-item-date,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-item:first-child .timeline-item-date,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-month-title + .timeline-item .timeline-item-date {\n width: auto;\n padding-left: calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-left));\n left: calc(0px - var(--f7-safe-area-left));\n right: 0;\n}\n.timeline-year:last-child .timeline-year-title,\n.timeline-year:last-child .timeline-month:last-child .timeline-month-title {\n width: auto;\n right: calc(0px - var(--f7-safe-area-right));\n}\n.timeline-horizontal .timeline-item:last-child,\n.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child {\n overflow: visible;\n}\n.timeline-horizontal .timeline-item:last-child .timeline-item-date,\n.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child .timeline-item-date {\n width: auto;\n right: calc(0px - var(--f7-safe-area-right));\n left: 0;\n}\n.ios .block-strong .timeline-item-inner {\n border-radius: 3px;\n border: 1px solid rgba(0, 0, 0, 0.1);\n}\n.ios .timeline-year-title span {\n margin-top: 3px;\n}\n.md .timeline-year-title span {\n margin-top: 2px;\n}\n/* === Tabs === */\n.tabs .tab {\n display: none;\n}\n.tabs .tab-active {\n display: block;\n}\n.tabs-animated-wrap {\n position: relative;\n width: 100%;\n overflow: hidden;\n height: 100%;\n}\n.tabs-animated-wrap > .tabs {\n display: flex;\n height: 100%;\n transition-duration: 300ms;\n}\n.tabs-animated-wrap > .tabs > .tab {\n width: 100%;\n display: block;\n flex-shrink: 0;\n}\n.tabs-animated-wrap.not-animated > .tabs {\n transition-duration: 0ms;\n}\nswiper-container.tabs {\n height: 100%;\n}\nswiper-container.tabs > .tab {\n display: block;\n touch-action: pan-y;\n}\n.page > .tabs {\n height: 100%;\n}\n/* === Panels === */\n:root {\n --f7-panel-width: 260px;\n --f7-panel-backdrop-bg-color: rgba(0, 0, 0, 0.3);\n /*\n --f7-panel-left-width: var(--f7-panel-width);\n --f7-panel-right-width: var(--f7-panel-width);\n --f7-panel-left-collapsed-width: var(--f7-panel-collapsed-width);\n --f7-panel-right-collapsed-width: var(--f7-panel-collapsed-width);\n */\n --f7-panel-bg-color: #fff;\n}\n:root .dark,\n:root.dark {\n --f7-panel-bg-color: #000;\n}\n.ios {\n --f7-panel-collapsed-width: 58px;\n --f7-panel-transition-duration: 400ms;\n --f7-panel-transition-timing-function: initial;\n}\n.md {\n --f7-panel-collapsed-width: 60px;\n --f7-panel-transition-duration: 400ms;\n --f7-panel-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n}\n.panel-backdrop {\n position: absolute;\n left: 0;\n top: 0px;\n width: 100%;\n height: 100%;\n opacity: 0;\n z-index: 5999;\n visibility: hidden;\n pointer-events: none;\n transform: translate3d(0, 0, 0);\n background-color: var(--f7-panel-backdrop-bg-color);\n transition-property: transform, opacity;\n transition-duration: var(--f7-panel-transition-duration);\n}\n.panel-backdrop .with-panel,\n.panel-backdrop .with-panel-closing {\n visibility: visible;\n}\n.panel-backdrop.not-animated {\n transition-duration: 0ms !important;\n}\n.panel {\n z-index: 1000;\n box-sizing: border-box;\n position: absolute;\n top: 0px;\n height: 100%;\n transform: translate3d(0, 0, 0);\n width: var(--f7-panel-width);\n background-color: var(--f7-panel-bg-color);\n overflow: visible;\n transition-property: transform;\n transition-duration: var(--f7-panel-transition-duration);\n}\n.panel:not(.panel-in):not(.panel-out):not(.panel-in-breakpoint):not(.panel-in-collapsed):not(\n .panel-in-swipe\n ) {\n display: none;\n}\n.panel:after {\n pointer-events: none;\n opacity: 0;\n z-index: 5999;\n position: absolute;\n content: '';\n top: 0;\n width: 20px;\n height: 100%;\n transition-property: transform, opacity;\n transition-duration: var(--f7-panel-transition-duration);\n}\n.panel.not-animated,\n.panel.not-animated:after {\n transition-duration: 0ms !important;\n}\n.panel.panel-reveal.not-animated ~ .views,\n.panel.panel-reveal.not-animated ~ .view {\n transition-duration: 0ms !important;\n}\n.panel.panel-resizing {\n -webkit-user-select: none;\n user-select: none;\n}\n.panel.panel-resizing,\n.panel.panel-resizing:after,\n.panel.panel-resizing ~ .views,\n.panel.panel-resizing ~ .view {\n transition-duration: 0ms !important;\n}\n.panel-cover,\n.panel-floating {\n z-index: 6000;\n}\n.panel-floating {\n overflow: hidden;\n border-radius: 16px;\n height: auto;\n top: calc(8px + var(--f7-safe-area-top, 0px));\n bottom: calc(8px + var(--f7-safe-area-bottom, 0px));\n}\n.panel-floating .views,\n.panel-floating .view {\n --f7-safe-area-top: 0px;\n --f7-safe-area-bottom: 0px;\n}\n.page .panel-floating {\n top: calc(8px + var(--f7-page-navbar-offset, 0px));\n bottom: calc(8px + var(--f7-safe-area-bottom, 0px));\n}\n.page .panel-floating .page {\n --f7-page-navbar-offset: 0px;\n}\n.page .panel-floating .navbar ~ *,\n.page .panel-floating .navbars ~ * {\n --f7-page-navbar-offset: calc(var(--f7-navbar-height));\n}\n.panel-left {\n left: 0;\n width: var(--f7-panel-left-width, var(--f7-panel-width));\n}\n.panel-left.panel-cover,\n.panel-left.panel-floating,\n.panel-left.panel-push {\n transform: translate3d(calc(-1 * var(--f7-panel-left-width, var(--f7-panel-width))), 0, 0);\n}\n.panel-right {\n right: 0;\n width: var(--f7-panel-right-width, var(--f7-panel-width));\n}\n.panel-right.panel-cover,\n.panel-right.panel-floating,\n.panel-right.panel-push {\n transform: translate3d(var(--f7-panel-right-width, var(--f7-panel-width)), 0, 0);\n}\n.panel-in-breakpoint {\n transform: translate3d(0, 0, 0) !important;\n transition-duration: 0ms;\n}\n.panel-in-breakpoint:after {\n display: none;\n}\n.panel-in-breakpoint.panel-cover,\n.panel-in-breakpoint.panel-floating {\n z-index: 5900;\n}\n.panel,\n.panel-backdrop {\n transition-timing-function: var(--f7-panel-transition-timing-function);\n}\nhtml.with-panel-left-reveal .views,\nhtml.with-panel-right-reveal .views,\nhtml.with-panel-left-push .views,\nhtml.with-panel-right-push .views,\nhtml.with-panel-closing .views,\nhtml.with-panel-left-reveal .framework7-root > .view,\nhtml.with-panel-right-reveal .framework7-root > .view,\nhtml.with-panel-left-push .framework7-root > .view,\nhtml.with-panel-right-push .framework7-root > .view,\nhtml.with-panel-closing .framework7-root > .view {\n transition-duration: var(--f7-panel-transition-duration);\n transition-property: transform;\n transition-timing-function: var(--f7-panel-transition-timing-function);\n}\nhtml.with-panel .framework7-root > .views .page-content,\nhtml.with-panel .framework7-root > .view .page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\nhtml.with-panel-left-reveal .views,\nhtml.with-panel-left-push .views,\nhtml.with-panel-left-reveal .framework7-root > .view,\nhtml.with-panel-left-push .framework7-root > .view {\n transform: translate3d(var(--f7-panel-left-width, var(--f7-panel-width)), 0, 0);\n}\nhtml.with-panel-right-reveal .views,\nhtml.with-panel-right-push .views,\nhtml.with-panel-right-reveal .framework7-root > .view,\nhtml.with-panel-right-push .framework7-root > .view {\n transform: translate3d(calc(-1 * var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\n.page > .panel-backdrop {\n z-index: 290;\n}\n.page > .panel-reveal,\n.page .panel-push {\n z-index: 1;\n}\n.page > .panel-cover,\n.page > .panel-floating {\n z-index: 300;\n}\n.page.with-panel-left-reveal > .page-content,\n.page.with-panel-right-reveal > .page-content,\n.page.with-panel-left-push > .page-content,\n.page.with-panel-right-push > .page-content,\n.page.with-panel-closing > .page-content,\n.page.with-panel-left-reveal > .tabs,\n.page.with-panel-right-reveal > .tabs,\n.page.with-panel-left-push > .tabs,\n.page.with-panel-right-push > .tabs,\n.page.with-panel-closing > .tabs {\n transition-duration: var(--f7-panel-transition-duration);\n transition-property: transform;\n transition-timing-function: var(--f7-panel-transition-timing-function);\n}\n.page.with-panel-left-reveal > .page-content,\n.page.with-panel-left-push > .page-content,\n.page.with-panel-left-reveal > .tabs,\n.page.with-panel-left-push > .tabs {\n transform: translate3d(var(--f7-panel-left-width, var(--f7-panel-width)), 0, 0);\n}\n.page.with-panel-right-reveal > .page-content,\n.page.with-panel-right-push > .page-content,\n.page.with-panel-right-reveal > .tabs,\n.page.with-panel-right-push > .tabs {\n transform: translate3d(calc(-1 * var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\n.with-panel-closing .panel-backdrop-in {\n visibility: visible;\n pointer-events: auto;\n opacity: 0;\n}\n.with-panel-left-reveal .panel-backdrop-in,\n.with-panel-right-reveal .panel-backdrop-in,\n.with-panel-left-cover .panel-backdrop-in,\n.with-panel-right-cover .panel-backdrop-in,\n.with-panel-left-floating .panel-backdrop-in,\n.with-panel-right-floating .panel-backdrop-in,\n.with-panel-left-push .panel-backdrop-in,\n.with-panel-right-push .panel-backdrop-in {\n visibility: visible;\n pointer-events: auto;\n opacity: 1;\n}\n.with-panel-left-reveal .panel-backdrop-in,\n.with-panel-left-push .panel-backdrop-in {\n transform: translate3d(var(--f7-panel-left-width, var(--f7-panel-width)), 0, 0);\n}\n.with-panel-right-reveal .panel-backdrop-in,\n.with-panel-right-push .panel-backdrop-in {\n transform: translate3d(calc(-1 * var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\n.with-panel-left-cover .panel-left,\n.with-panel-left-push .panel-left {\n transform: translate3d(0px, 0, 0);\n}\n.with-panel-left-floating .panel-left {\n transform: translate3d(8px, 0, 0);\n}\n.with-panel-right-cover .panel-right,\n.with-panel-right-push .panel-right {\n transform: translate3d(0px, 0, 0);\n}\n.with-panel-right-floating .panel-right {\n transform: translate3d(-8px, 0, 0);\n}\n.panel-resizable {\n max-width: 100%;\n}\n.panel-resize-handler {\n position: absolute;\n top: 0;\n height: 100%;\n width: 6px;\n cursor: col-resize;\n z-index: 6000;\n display: none;\n}\n.panel-resizable .panel-resize-handler {\n display: block;\n}\n.panel-left.panel-cover .panel-resize-handler,\n.panel-left.panel-floating .panel-resize-handler {\n right: -3px;\n}\n.panel-left.panel-reveal .panel-resize-handler,\n.panel-left.panel-push .panel-resize-handler {\n right: 0;\n}\n.panel-right.panel-cover .panel-resize-handler,\n.panel-right.panel-floating .panel-resize-handler {\n left: -3px;\n}\n.panel-right.panel-reveal .panel-resize-handler,\n.panel-right.panel-push .panel-resize-handler {\n left: 0;\n}\n.panel-left.panel-in-collapsed ~ .views,\n.panel-left.panel-in-collapsed ~ .view,\n.panel-left.panel-in-collapsed ~ .page-content,\n.panel-left.panel-in-collapsed ~ .tabs {\n margin-left: var(--f7-panel-left-collapsed-width, var(--f7-panel-collapsed-width));\n}\n.page.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .page-content,\n.page.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .tabs,\nhtml.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .views,\nhtml.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .view {\n transform: translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width)) - var(--f7-panel-left-collapsed-width, var(--f7-panel-collapsed-width))), 0, 0);\n}\n.panel-right.panel-in-collapsed ~ .views,\n.panel-right.panel-in-collapsed ~ .view,\n.panel-right.panel-in-collapsed ~ .page-content,\n.panel-right.panel-in-collapsed ~ .tabs {\n margin-right: var(--f7-panel-right-collapsed-width, var(--f7-panel-collapsed-width));\n}\n.page.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .page-content,\n.page.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .tabs,\nhtml.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .views,\nhtml.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .view {\n transform: translate3d(calc(var(--f7-panel-right-collapsed-width, var(--f7-panel-collapsed-width)) - var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\nhtml.with-modal-popup-push .framework7-root,\nhtml.with-modal-popup-push-closing .framework7-root {\n --f7-panelPushScale: var(--f7-popup-push-scale);\n --f7-panelPushTransitionDuration: var(--f7-popup-transition-duration);\n --f7-panelPushTransitionTimingFunction: var(--f7-popup-transition-timing-function);\n --f7-panelPushBorderRadius: var(--f7-popup-push-border-radius);\n}\nhtml.with-modal-sheet-push .framework7-root,\nhtml.with-modal-sheet-push-closing .framework7-root {\n --f7-panelPushScale: var(--f7-sheet-push-scale);\n --f7-panelPushTransitionDuration: var(--f7-sheet-transition-duration);\n --f7-panelPushTransitionTimingFunction: var(--f7-sheet-transition-timing-function);\n --f7-panelPushBorderRadius: var(--f7-sheet-push-border-radius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in,\nhtml.with-modal-sheet-push .framework7-root > .panel-in,\nhtml.with-modal-popup-push .framework7-root > .panel-out,\nhtml.with-modal-sheet-push .framework7-root > .panel-out {\n transition-duration: var(--f7-panelPushTransitionDuration);\n transition-timing-function: var(--f7-panelPushTransitionTimingFunction);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-left {\n transform: scale(var(--f7-panelPushScale, 1));\n transform-origin: 50vw center;\n border-top-left-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-left .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-left .view,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-left .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-left .view {\n border-top-left-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-right {\n transform: scale(var(--f7-panelPushScale, 1));\n transform-origin: calc(var(--f7-panel-left-width, var(--f7-panel-width)) - 50vw) center;\n border-top-right-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-right .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-right .view,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-right .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-right .view {\n border-top-right-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-cover.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-cover.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-cover.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-cover.panel-left {\n transform: translate3d(calc(-1 * var(--f7-panel-left-width, var(--f7-panel-width))), 0, 0px);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-cover.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-cover.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-cover.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-cover.panel-right {\n transform: translate3d(var(--f7-panel-right-width, var(--f7-panel-width)), 0, 0px);\n}\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in {\n transition-duration: var(--f7-panelPushTransitionDuration);\n transition-timing-function: var(--f7-panelPushTransitionTimingFunction);\n}\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-push.panel-left,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-push.panel-left {\n transform-origin: 50vw center;\n}\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-push.panel-right,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-push.panel-right {\n transform-origin: calc(var(--f7-panel-right-width, var(--f7-panel-width)) - 50vw) center;\n}\n.md .panel-cover {\n overflow: hidden;\n}\n.md .panel-cover.panel-left {\n border-radius: 0 16px 16px 0;\n}\n.md .panel-cover.panel-right {\n border-radius: 16px 0 0 16px;\n}\n/* === Card === */\n:root {\n --f7-card-margin-horizontal: 16px;\n --f7-card-margin-vertical: 16px;\n --f7-card-content-padding-horizontal: 16px;\n --f7-card-content-padding-vertical: 16px;\n --f7-card-font-size: inherit;\n --f7-card-header-text-color: inherit;\n --f7-card-header-font-weight: 400;\n --f7-card-header-padding-horizontal: 16px;\n --f7-card-footer-font-weight: 400;\n --f7-card-footer-font-size: inherit;\n --f7-card-footer-padding-horizontal: 16px;\n --f7-card-expandable-font-size: 16px;\n --f7-card-expandable-tablet-width: 670px;\n --f7-card-expandable-tablet-height: 670px;\n}\n.ios {\n --f7-card-border-radius: 8px;\n --f7-card-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.2);\n --f7-card-header-font-size: 17px;\n --f7-card-header-padding-vertical: 10px;\n --f7-card-header-min-height: 44px;\n --f7-card-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-card-footer-padding-vertical: 10px;\n --f7-card-footer-min-height: 44px;\n --f7-card-expandable-margin-horizontal: 20px;\n --f7-card-expandable-margin-vertical: 30px;\n --f7-card-expandable-box-shadow: 0px 20px 40px rgba(0, 0, 0, 0.3);\n --f7-card-expandable-border-radius: 16px;\n --f7-card-expandable-tablet-border-radius: 16px;\n --f7-card-expandable-header-font-size: 27px;\n --f7-card-expandable-header-font-weight: bold;\n --f7-card-text-color: inherit;\n --f7-card-bg-color: #fff;\n --f7-card-expandable-bg-color: #fff;\n --f7-card-outline-border-color: rgba(0, 0, 0, 0.12);\n --f7-card-header-border-color: rgba(0, 0, 0, 0.1);\n --f7-card-footer-border-color: rgba(0, 0, 0, 0.1);\n}\n.ios .dark,\n.ios.dark {\n --f7-card-bg-color: #1c1c1d;\n --f7-card-expandable-bg-color: #1c1c1d;\n --f7-card-outline-border-color: rgba(255, 255, 255, 0.15);\n --f7-card-header-border-color: rgba(255, 255, 255, 0.15);\n --f7-card-footer-border-color: rgba(255, 255, 255, 0.15);\n --f7-card-footer-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-card-border-radius: 16px;\n --f7-card-box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2),\n 0px 1px 1px 0px rgba(0, 0, 0, 0.14),\n 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\n --f7-card-header-font-size: 22px;\n --f7-card-header-padding-vertical: 16px;\n --f7-card-header-min-height: 48px;\n --f7-card-footer-padding-vertical: 16px;\n --f7-card-footer-min-height: 48px;\n --f7-card-expandable-margin-horizontal: 12px;\n --f7-card-expandable-margin-vertical: 24px;\n --f7-card-expandable-box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2),\n 0px 10px 14px 1px rgba(0, 0, 0, 0.14),\n 0px 4px 18px 3px rgba(0, 0, 0, 0.12);\n --f7-card-expandable-border-radius: 16px;\n --f7-card-expandable-tablet-border-radius: 16px;\n --f7-card-expandable-header-font-size: 22px;\n --f7-card-expandable-header-font-weight: 500;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-card-bg-color: var(--f7-md-surface-1);\n --f7-card-expandable-bg-color: var(--f7-md-surface-1);\n --f7-card-outline-border-color: var(--f7-md-outline);\n --f7-card-header-border-color: var(--f7-md-outline);\n --f7-card-footer-border-color: var(--f7-md-outline);\n --f7-card-text-color: var(--f7-md-on-surface);\n --f7-card-footer-text-color: var(--f7-md-on-surface-variant);\n}\n.cards-list > ul:before,\n.card .list > ul:before,\n.cards-list > ul:after,\n.card .list > ul:after {\n display: none !important;\n}\n.cards-list ul,\n.card .list ul {\n background: none;\n}\n.card {\n background: var(--f7-card-bg-color);\n position: relative;\n border-radius: var(--f7-card-border-radius);\n font-size: var(--f7-card-font-size);\n margin-top: var(--f7-card-margin-vertical);\n margin-bottom: var(--f7-card-margin-vertical);\n margin-left: calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-left));\n margin-right: calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-right));\n color: var(--f7-card-text-color);\n}\n.card .list,\n.card .block {\n margin: 0;\n}\n.row:not(.no-gap) .col > .card {\n margin-left: 0;\n margin-right: 0;\n}\n.card-raised {\n box-shadow: var(--f7-card-box-shadow);\n}\n.card-outline,\n.ios .card-outline-ios,\n.md .card-outline-md {\n border: 1px solid var(--f7-card-outline-border-color);\n}\n.card-content {\n position: relative;\n}\n.card-content-padding {\n position: relative;\n padding: var(--f7-card-content-padding-vertical) var(--f7-card-content-padding-horizontal);\n}\n.card-content-padding > .list,\n.card-content-padding > .block {\n margin: calc(-1 * var(--f7-card-content-padding-vertical)) calc(-1 * var(--f7-card-content-padding-horizontal));\n}\n.card-content-padding > p:first-child {\n margin-top: 0;\n}\n.card-content-padding > p:last-child {\n margin-bottom: 0;\n}\n.card-header {\n min-height: var(--f7-card-header-min-height);\n color: var(--f7-card-header-text-color);\n font-size: var(--f7-card-header-font-size);\n font-weight: var(--f7-card-header-font-weight);\n padding: var(--f7-card-header-padding-vertical) var(--f7-card-header-padding-horizontal);\n}\n.card-header.card-header-divider,\n.card-header-divider .card-header,\n.card-dividers .card-header {\n border-bottom: 1px solid var(--f7-card-header-border-color);\n}\n.card-footer {\n min-height: var(--f7-card-footer-min-height);\n color: var(--f7-card-footer-text-color);\n font-size: var(--f7-card-footer-font-size);\n font-weight: var(--f7-card-footer-font-weight);\n padding: var(--f7-card-footer-padding-vertical) var(--f7-card-footer-padding-horizontal);\n}\n.card-footer.card-footer-divider,\n.card-footer-divider .card-footer,\n.card-dividers .card-footer {\n border-top: 1px solid var(--f7-card-header-border-color);\n}\n.card-footer a.link {\n overflow: hidden;\n}\n.card-header,\n.card-footer {\n position: relative;\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.card-header[valign='top'],\n.card-footer[valign='top'] {\n align-items: flex-start;\n}\n.card-header[valign='bottom'],\n.card-footer[valign='bottom'] {\n align-items: flex-end;\n}\n.card-header a.link,\n.card-footer a.link {\n position: relative;\n}\n.card-header a.link i.icon,\n.card-footer a.link i.icon {\n display: block;\n}\n.card-header a.icon-only,\n.card-footer a.icon-only {\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 0;\n}\n.card-header {\n border-radius: var(--f7-card-border-radius) var(--f7-card-border-radius) 0 0;\n}\n.card-footer {\n border-radius: 0 0 var(--f7-card-border-radius) var(--f7-card-border-radius);\n}\n.card-expandable {\n overflow: hidden;\n height: 300px;\n background: var(--f7-card-expandable-bg-color);\n position: relative;\n transform-origin: center center;\n transition-property: transform, border-radius;\n border-radius: var(--f7-card-expandable-border-radius);\n z-index: 2;\n transition-duration: 200ms;\n margin-left: calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-left));\n margin-right: calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-right));\n margin-top: var(--f7-card-expandable-margin-vertical);\n margin-bottom: var(--f7-card-expandable-margin-vertical);\n font-size: var(--f7-card-expandable-font-size);\n}\n.card-expandable.card-raised {\n box-shadow: var(--f7-card-expandable-box-shadow);\n}\n.card-expandable:not(.card-opened) {\n -webkit-user-select: none;\n user-select: none;\n}\n.card-expandable.card-no-transition {\n transition-duration: 0ms;\n}\n.card-expandable.card-expandable-animate-width .card-content {\n transition-property: width, transform;\n width: 100%;\n}\n.card-expandable.active-state {\n transform: scale(0.97) translate3d(0, 0, 0);\n}\n.card-expandable .card-opened-fade-in,\n.card-expandable .card-opened-fade-out {\n transition-duration: 400ms;\n}\n.card-expandable .card-opened-fade-in {\n opacity: 0;\n pointer-events: none;\n}\n.card-expandable .card-content {\n position: absolute;\n top: 0;\n width: 100vw;\n height: 100vh;\n transform-origin: center top;\n overflow: hidden;\n transition-property: transform;\n box-sizing: border-box;\n pointer-events: none;\n right: 0;\n}\n.card-expandable .card-content .card-content-padding {\n padding-left: calc(var(--f7-safe-area-left) + var(--f7-card-content-padding-horizontal));\n padding-right: calc(var(--f7-safe-area-right) + var(--f7-card-content-padding-horizontal));\n}\n.card-expandable.card-opened {\n transition-duration: 0ms;\n}\n.card-expandable.card-opening,\n.card-expandable.card-closing,\n.card-expandable.card-transitioning {\n transition-duration: 400ms;\n}\n.card-expandable.card-opening .card-content {\n transition-duration: 300ms;\n}\n.card-expandable.card-closing .card-content {\n transition-duration: 500ms;\n}\n.card-expandable.card-opening,\n.card-expandable.card-opened,\n.card-expandable.card-closing {\n z-index: 300;\n}\n.card-expandable.card-opening,\n.card-expandable.card-opened {\n border-radius: 0;\n}\n.card-expandable.card-opening .card-opened-fade-in,\n.card-expandable.card-opened .card-opened-fade-in {\n opacity: 1;\n pointer-events: auto;\n}\n.card-expandable.card-opening .card-opened-fade-out,\n.card-expandable.card-opened .card-opened-fade-out {\n opacity: 0;\n pointer-events: none;\n}\n.card-expandable.card-opened .card-content {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n pointer-events: auto;\n}\n.card-expandable .card-header {\n font-size: var(--f7-card-expandable-header-font-size);\n font-weight: var(--f7-card-expandable-header-font-weight);\n}\n.card-prevent-open {\n pointer-events: auto;\n}\n.card-expandable-size {\n width: 0;\n height: 0;\n position: absolute;\n left: 0;\n top: 0;\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n}\n@media (min-width: 768px) and (min-height: 670px) {\n .card-expandable:not(.card-tablet-fullscreen) {\n max-width: var(--f7-card-expandable-tablet-width);\n }\n .card-expandable:not(.card-tablet-fullscreen).card-opened,\n .card-expandable:not(.card-tablet-fullscreen).card-opening {\n border-radius: var(--f7-card-expandable-tablet-border-radius);\n }\n .card-expandable:not(.card-tablet-fullscreen):not(.card-expandable-animate-width) .card-content {\n width: var(--f7-card-expandable-tablet-width);\n }\n .card-expandable:not(.card-tablet-fullscreen) .card-expandable-size {\n width: var(--f7-card-expandable-tablet-width);\n height: var(--f7-card-expandable-tablet-height);\n }\n}\n.page.page-with-card-opened .page-content {\n overflow: hidden;\n}\n.card-backdrop {\n position: fixed;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 299;\n pointer-events: none;\n background: rgba(0, 0, 0, 0.2);\n opacity: 0;\n}\n.card-backdrop-in {\n animation: card-backdrop-fade-in 400ms forwards;\n pointer-events: auto;\n}\n.card-backdrop-out {\n animation: card-backdrop-fade-out 400ms forwards;\n}\n@supports ((-webkit-backdrop-filter: blur(15px)) or (backdrop-filter: blur(15px))) {\n .card-backdrop {\n background: transparent;\n -webkit-backdrop-filter: blur(15px);\n backdrop-filter: blur(15px);\n }\n}\n@keyframes card-backdrop-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes card-backdrop-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n/* === Chips === */\n:root {\n --f7-chip-font-size: 14px;\n --f7-chip-media-font-size: 16px;\n --f7-chip-delete-button-color: #000;\n}\n:root .dark,\n:root.dark {\n --f7-chip-delete-button-color: #fff;\n}\n.ios {\n --f7-chip-height: 28px;\n --f7-chip-media-size: 28px;\n --f7-chip-padding-horizontal: 10px;\n --f7-chip-border-radius: 28px;\n --f7-chip-font-weight: normal;\n --f7-chip-outline-border-color: rgba(0, 0, 0, 0.12);\n --f7-chip-bg-color: rgba(0, 0, 0, 0.12);\n --f7-chip-text-color: #000;\n --f7-chip-outline-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-chip-bg-color: #333;\n --f7-chip-text-color: #fff;\n --f7-chip-outline-text-color: #fff;\n --f7-chip-outline-border-color: rgba(255, 255, 255, 0.12);\n}\n.md {\n --f7-chip-font-weight: 500;\n --f7-chip-media-size: 24px;\n --f7-chip-height: 32px;\n --f7-chip-padding-horizontal: 12px;\n --f7-chip-border-radius: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-chip-bg-color: var(--f7-md-secondary-container);\n --f7-chip-text-color: var(--f7-md-on-secondary-container);\n --f7-chip-outline-text-color: var(--f7-md-on-surface);\n --f7-chip-outline-border-color: var(--f7-md-outline);\n}\n.chip {\n padding-left: var(--f7-chip-padding-horizontal);\n padding-right: var(--f7-chip-padding-horizontal);\n font-weight: var(--f7-chip-font-weight);\n display: inline-flex;\n box-sizing: border-box;\n vertical-align: middle;\n align-items: center;\n margin: 2px 0;\n background-color: var(--f7-chip-bg-color);\n font-size: var(--f7-chip-font-size);\n color: var(--f7-chip-text-color);\n height: var(--f7-chip-height);\n line-height: var(--f7-chip-height);\n border-radius: var(--f7-chip-border-radius);\n position: relative;\n}\n.chip-media {\n border-radius: 50%;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--f7-chip-media-size);\n width: var(--f7-chip-media-size);\n border-radius: var(--f7-chip-media-size);\n text-align: center;\n line-height: var(--f7-chip-media-size);\n box-sizing: border-box;\n color: #fff;\n font-size: var(--f7-chip-media-font-size);\n vertical-align: middle;\n}\n.chip-media i.icon {\n font-size: calc(var(--f7-chip-media-size) - 8px);\n height: calc(var(--f7-chip-media-size) - 8px);\n}\n.chip-media img {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n border-radius: 50%;\n display: block;\n}\n.chip-media + .chip-label {\n margin-right: 4px;\n}\n.chip-label {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n position: relative;\n flex-shrink: 1;\n min-width: 0;\n}\n.chip-delete {\n text-align: center;\n cursor: pointer;\n flex-shrink: 0;\n background-repeat: no-repeat;\n width: 24px;\n height: 24px;\n color: var(--f7-chip-delete-button-color);\n opacity: 0.54;\n position: relative;\n}\n.chip-delete:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n line-height: 24px;\n}\n.chip .chip-delete.active-state {\n opacity: 1;\n}\n.chip-outline,\n.ios .chip-outline-ios,\n.md .chip-outline-md {\n border: 1px solid var(--f7-chip-outline-border-color);\n color: var(--f7-chip-outline-text-color);\n background: none;\n}\n.ios .chip[class*='color-'] {\n --f7-chip-bg-color: var(--f7-theme-color);\n --f7-chip-text-color: #fff;\n}\n.ios .chip-outline[class*='color-'],\n.ios .chip-outline-ios[class*='color-'] {\n --f7-chip-outline-border-color: var(--f7-theme-color);\n --f7-chip-outline-text-color: var(--f7-theme-color);\n}\n.ios .chip-media {\n margin-right: calc(-1 * var(--f7-chip-padding-horizontal));\n}\n.ios .chip-delete {\n margin-left: calc(-1 * var(--f7-chip-padding-horizontal));\n}\n.ios .chip-delete::after {\n content: 'delete_round_ios';\n}\n.ios .chip-delete:after {\n font-size: 10px;\n}\n.md .chip-media {\n margin-right: calc(-1 * var(--f7-chip-padding-horizontal) + 4px);\n}\n.md .chip-label + .chip-delete {\n margin-right: 4px;\n}\n.md .chip-delete {\n margin-left: calc(-1 * var(--f7-chip-padding-horizontal) + 4px);\n}\n.md .chip-delete::after {\n content: 'delete_round_md';\n font-size: 16px;\n}\n/* === Form === */\n/* === Input === */\n:root {\n --f7-input-bg-color: transparent;\n --f7-label-font-weight: 400;\n --f7-label-height: 16px;\n --f7-label-font-size: 12px;\n --f7-floating-label-scale: calc(16 / 12);\n --f7-input-padding-left: 0px;\n --f7-input-padding-right: 0px;\n --f7-input-error-text-color: #ff3b30;\n --f7-input-error-font-size: 12px;\n --f7-input-error-line-height: 1.4;\n --f7-input-error-font-weight: 400;\n --f7-input-info-font-size: 12px;\n --f7-input-info-line-height: 1.4;\n --f7-textarea-height: 100px;\n /*\n --f7-input-outline-focused-border-color: var(--f7-theme-color);\n --f7-input-outline-invalid-border-color: var(--f7-input-error-text-color);\n */\n}\n.ios {\n --f7-input-item-bg-color: transparent;\n --f7-input-item-border-radius: 0px;\n --f7-input-height: 40px;\n --f7-input-font-size: 16px;\n --f7-input-placeholder-color: #a9a9a9;\n --f7-textarea-padding-vertical: 8px;\n /*\n --f7-input-focused-border-color: var(--f7-list-item-border-color);\n --f7-input-invalid-border-color: var(--f7-list-item-border-color);\n --f7-input-invalid-text-color: var(--f7-input-error-text-color);\n */\n --f7-label-text-color: inherit;\n /*\n --f7-label-focused-text-color: var(--f7-label-text-color);\n --f7-label-invalid-text-color: var(--f7-label-text-color);\n */\n --f7-input-clear-button-size: 14px;\n --f7-input-outline-border-radius: 8px;\n --f7-input-text-color: #000000;\n --f7-input-info-text-color: rgba(0, 0, 0, 0.45);\n --f7-input-clear-button-color: rgba(0, 0, 0, 0.45);\n --f7-input-outline-border-color: #bbb;\n}\n.ios .dark,\n.ios.dark {\n --f7-input-text-color: #fff;\n --f7-input-info-text-color: rgba(255, 255, 255, 0.55);\n --f7-input-clear-button-color: rgba(255, 255, 255, 0.5);\n --f7-input-outline-border-color: #444;\n}\n.md {\n --f7-input-item-border-radius: 4px 4px 0 0;\n --f7-input-height: 24px;\n --f7-input-font-size: 16px;\n --f7-textarea-padding-vertical: 0px;\n --f7-input-outline-border-radius: 4px;\n /*\n --f7-input-focused-border-color: var(--f7-theme-color);\n --f7-input-invalid-border-color: var(--f7-input-error-text-color);\n --f7-input-invalid-text-color: var(--f7-input-text-color);\n */\n /*\n --f7-label-focused-text-color: var(--f7-theme-color);\n --f7-label-invalid-text-color: var(--f7-input-error-text-color );\n */\n --f7-floating-label-scale: calc(16 / 12);\n --f7-input-clear-button-size: 24px;\n --f7-input-info-text-color: rgba(0, 0, 0, 0.45);\n}\n.md .dark,\n.md.dark {\n --f7-input-info-text-color: rgba(255, 255, 255, 0.45);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-input-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-input-item-bg-color: var(--f7-md-surface-variant);\n --f7-input-border-color: var(--f7-md-outline);\n --f7-input-clear-button-color: var(--f7-md-on-surface-variant);\n --f7-input-outline-border-color: var(--f7-md-outline);\n --f7-input-text-color: var(--f7-md-on-surface);\n --f7-label-text-color: var(--f7-md-on-surface-variant);\n}\ninput[type='text'],\ninput[type='password'],\ninput[type='search'],\ninput[type='email'],\ninput[type='tel'],\ninput[type='url'],\ninput[type='date'],\ninput[type='month'],\ninput[type='datetime-local'],\ninput[type='time'],\ninput[type='number'],\nselect,\ntextarea {\n box-sizing: border-box;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n box-shadow: none;\n border-radius: 0;\n outline: 0;\n display: block;\n padding: 0;\n margin: 0;\n font-family: inherit;\n background: none;\n resize: none;\n font-size: inherit;\n color: inherit;\n}\ninput[type='text']:-internal-autofill-selected,\ninput[type='password']:-internal-autofill-selected,\ninput[type='search']:-internal-autofill-selected,\ninput[type='email']:-internal-autofill-selected,\ninput[type='tel']:-internal-autofill-selected,\ninput[type='url']:-internal-autofill-selected,\ninput[type='date']:-internal-autofill-selected,\ninput[type='month']:-internal-autofill-selected,\ninput[type='datetime-local']:-internal-autofill-selected,\ninput[type='time']:-internal-autofill-selected,\ninput[type='number']:-internal-autofill-selected,\nselect:-internal-autofill-selected,\ntextarea:-internal-autofill-selected {\n background-color: transparent !important;\n transition: background-color 5000s ease-in-out 0s !important;\n}\ninput[type='text']:-webkit-autofill, input[type='password']:-webkit-autofill, input[type='search']:-webkit-autofill, input[type='email']:-webkit-autofill, input[type='tel']:-webkit-autofill, input[type='url']:-webkit-autofill, input[type='date']:-webkit-autofill, input[type='month']:-webkit-autofill, input[type='datetime-local']:-webkit-autofill, input[type='time']:-webkit-autofill, input[type='number']:-webkit-autofill, select:-webkit-autofill, textarea:-webkit-autofill {\n background-color: transparent !important;\n -webkit-transition: background-color 5000s ease-in-out 0s !important;\n transition: background-color 5000s ease-in-out 0s !important;\n}\ninput[type='text']:autofill,\ninput[type='password']:autofill,\ninput[type='search']:autofill,\ninput[type='email']:autofill,\ninput[type='tel']:autofill,\ninput[type='url']:autofill,\ninput[type='date']:autofill,\ninput[type='month']:autofill,\ninput[type='datetime-local']:autofill,\ninput[type='time']:autofill,\ninput[type='number']:autofill,\nselect:autofill,\ntextarea:autofill,\ninput[type='text']:-webkit-autofill-and-obscured,\ninput[type='password']:-webkit-autofill-and-obscured,\ninput[type='search']:-webkit-autofill-and-obscured,\ninput[type='email']:-webkit-autofill-and-obscured,\ninput[type='tel']:-webkit-autofill-and-obscured,\ninput[type='url']:-webkit-autofill-and-obscured,\ninput[type='date']:-webkit-autofill-and-obscured,\ninput[type='month']:-webkit-autofill-and-obscured,\ninput[type='datetime-local']:-webkit-autofill-and-obscured,\ninput[type='time']:-webkit-autofill-and-obscured,\ninput[type='number']:-webkit-autofill-and-obscured,\nselect:-webkit-autofill-and-obscured,\ntextarea:-webkit-autofill-and-obscured {\n background-color: transparent !important;\n -webkit-transition: background-color 5000s ease-in-out 0s !important;\n transition: background-color 5000s ease-in-out 0s !important;\n}\n.textarea-resizable-shadow {\n opacity: 0;\n position: absolute;\n z-index: -1000;\n pointer-events: none;\n left: -1000px;\n top: -1000px;\n visibility: hidden;\n}\n.list input[type='text'],\n.list input[type='password'],\n.list input[type='search'],\n.list input[type='email'],\n.list input[type='tel'],\n.list input[type='url'],\n.list input[type='date'],\n.list input[type='month'],\n.list input[type='datetime-local'],\n.list input[type='time'],\n.list input[type='number'],\n.list select {\n width: 100%;\n height: var(--f7-input-height);\n color: var(--f7-input-text-color);\n font-size: var(--f7-input-font-size);\n background-color: var(--f7-input-bg-color, transparent);\n padding-left: var(--f7-input-padding-left);\n padding-right: var(--f7-input-padding-right);\n}\n.list input[type='text']::placeholder,\n.list input[type='password']::placeholder,\n.list input[type='search']::placeholder,\n.list input[type='email']::placeholder,\n.list input[type='tel']::placeholder,\n.list input[type='url']::placeholder,\n.list input[type='date']::placeholder,\n.list input[type='month']::placeholder,\n.list input[type='datetime-local']::placeholder,\n.list input[type='time']::placeholder,\n.list input[type='number']::placeholder,\n.list select::placeholder {\n color: var(--f7-input-placeholder-color);\n}\n.list textarea {\n width: 100%;\n color: var(--f7-input-text-color);\n font-size: var(--f7-input-font-size);\n resize: none;\n line-height: 1.4;\n height: var(--f7-textarea-height);\n background-color: var(--f7-input-bg-color, transparent);\n padding-top: var(--f7-textarea-padding-vertical);\n padding-bottom: var(--f7-textarea-padding-vertical);\n padding-left: var(--f7-input-padding-left);\n padding-right: var(--f7-input-padding-right);\n}\n.list textarea::placeholder {\n color: var(--f7-input-placeholder-color);\n}\n.list textarea.resizable {\n height: calc(var(--f7-input-height) + var(--f7-textarea-padding-vertical) * 2);\n}\n.list input[type='time'],\n.list input[type='date'],\n.list input[type='month'],\n.list input[type='datetime-local'] {\n line-height: var(--f7-input-height);\n}\n.list input[type='date'],\n.list input[type='month'],\n.list input[type='datetime-local'] {\n text-align: right;\n flex-direction: row-reverse;\n width: auto;\n}\n.list .item-label,\n.list .item-floating-label {\n width: auto;\n vertical-align: top;\n flex-shrink: 0;\n font-size: var(--f7-label-font-size);\n font-weight: var(--f7-label-font-weight);\n line-height: var(--f7-label-height);\n color: var(--f7-label-text-color);\n transition-duration: 200ms;\n transition-property: transform, color;\n}\n.list .item-floating-label {\n color: var(--f7-input-placeholder-color);\n max-width: calc(100% / var(--f7-floating-label-scale));\n pointer-events: none;\n right: var(--f7-input-padding-right);\n transform-origin: right center;\n}\n.list .item-floating-label ~ .item-input-wrap input::placeholder,\n.list .item-floating-label ~ .item-input-wrap textarea::placeholder {\n opacity: 0;\n transition-duration: 100ms;\n}\n.list .item-floating-label ~ .item-input-wrap input.input-focused::placeholder,\n.list .item-floating-label ~ .item-input-wrap textarea.input-focused::placeholder {\n opacity: 1;\n transition-duration: 300ms;\n}\n.list .item-input-with-value .item-floating-label {\n color: var(--f7-label-text-color);\n}\n.list .item-input-with-value .item-floating-label,\n.list .item-input-focused .item-floating-label {\n transform: scale(1) translateY(0) !important;\n}\n.list .item-input-wrap {\n width: 100%;\n flex-shrink: 1;\n position: relative;\n}\n.item-input,\n.input {\n position: relative;\n}\n.item-input .item-inner {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n.item-input-error-message,\n.input-error-message {\n font-size: var(--f7-input-error-font-size);\n line-height: var(--f7-input-error-line-height);\n color: var(--f7-input-error-text-color);\n font-weight: var(--f7-input-error-font-weight);\n display: none;\n box-sizing: border-box;\n}\n.item-input-info,\n.input-info {\n font-size: var(--f7-input-info-font-size);\n line-height: var(--f7-input-info-line-height);\n color: var(--f7-input-info-text-color);\n}\n.item-input-invalid .item-input-error-message,\n.input-invalid .item-input-error-message,\n.item-input-invalid .input-error-message,\n.input-invalid .input-error-message {\n display: block;\n}\n.item-input-invalid .item-input-info,\n.input-invalid .item-input-info,\n.item-input-invalid .input-info,\n.input-invalid .input-info {\n display: none;\n}\n.input {\n position: relative;\n}\n.input input,\n.input select,\n.input textarea {\n width: 100%;\n}\n.input-clear-button {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n transition-duration: 100ms;\n position: absolute;\n top: 50%;\n border: none;\n padding: 0;\n margin: 0;\n outline: 0;\n z-index: 1;\n cursor: pointer;\n background: none;\n width: var(--f7-input-clear-button-size);\n height: var(--f7-input-clear-button-size);\n margin-top: calc(-1 * var(--f7-input-clear-button-size) / 2);\n color: var(--f7-input-clear-button-color);\n left: 0;\n}\n.input-clear-button:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n.input-clear-button:before {\n position: absolute;\n content: '';\n left: 50%;\n top: 50%;\n}\n.item-input-wrap .input-clear-button {\n top: calc(var(--f7-input-height) / 2);\n}\n.input-clear-button.active-state {\n opacity: 0.75 !important;\n}\n.input-with-value ~ .input-clear-button,\n.item-input-with-value .input-clear-button,\n.input-with-value .input-clear-button {\n opacity: 1;\n pointer-events: auto;\n visibility: visible;\n}\n.input-dropdown-wrap,\n.input-dropdown {\n position: relative;\n}\n.input-dropdown-wrap:before,\n.input-dropdown:before {\n content: '';\n pointer-events: none;\n position: absolute;\n top: 50%;\n margin-top: -2px;\n width: 0;\n height: 0;\n border-left: 4px solid transparent;\n border-right: 4px solid transparent;\n border-top: 5px solid #727272;\n left: 6px;\n}\n.input-dropdown-wrap select,\n.input-dropdown select,\n.input-dropdown-wrap input,\n.input-dropdown input,\n.input-dropdown-wrap textarea,\n.input-dropdown textarea {\n padding-left: calc(20px + var(--f7-input-padding-left));\n}\n.item-input-outline .item-content::after,\n.item-input-outline.item-content::after,\n.input-outline::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n top: 8px;\n bottom: 8px;\n border: 1px solid var(--f7-input-outline-border-color);\n border-radius: var(--f7-input-outline-border-radius);\n pointer-events: none;\n box-sizing: border-box;\n transition-duration: 200ms;\n}\n.item-input-outline .item-content .item-label,\n.item-input-outline.item-content .item-label,\n.input-outline .item-label,\n.item-input-outline .item-content .item-floating-label,\n.item-input-outline.item-content .item-floating-label,\n.input-outline .item-floating-label {\n pointer-events: none;\n background: var(--f7-page-bg-color);\n z-index: 1;\n padding: 4px;\n}\n.item-input-outline .item-content.item-input-focused::after,\n.item-input-outline.item-content.item-input-focused::after,\n.input-outline.item-input-focused::after,\n.item-input-outline .item-content.input-focused::after,\n.item-input-outline.item-content.input-focused::after,\n.input-outline.input-focused::after {\n border-width: 2px;\n border-color: var(--f7-input-outline-invalid-border-color, var(--f7-theme-color));\n}\n.item-input-outline .item-content.item-input-invalid::after,\n.item-input-outline.item-content.item-input-invalid::after,\n.input-outline.item-input-invalid::after,\n.item-input-outline .item-content.input-invalid::after,\n.item-input-outline.item-content.input-invalid::after,\n.input-outline.input-invalid::after {\n border-width: 2px;\n border-color: var(--f7-input-outline-invalid-border-color, var(--f7-input-error-text-color));\n}\n.block-strong .item-input-outline .item-label,\n.block-strong .item-input-outline .item-floating-label,\n.ios .block-strong-ios .item-input-outline .item-label,\n.ios .block-strong-ios .item-input-outline .item-floating-label,\n.md .block-strong-md .item-input-outline .item-label,\n.md .block-strong-md .item-input-outline .item-floating-label {\n background: var(--f7-block-strong-bg-color) !important;\n}\n.list-strong .item-input-outline .item-floating-label,\n.list-strong .item-input-outline .item-label,\n.ios .list-strong-ios .item-input-outline .item-floating-label,\n.ios .list-strong-ios .item-input-outline .item-label,\n.md .list-strong-md .item-input-outline .item-floating-label,\n.md .list-strong-md .item-input-outline .item-label {\n background: var(--f7-list-strong-bg-color) !important;\n}\n.dark option {\n background-color: var(--f7-page-bg-color);\n}\n.ios .item-label + .item-input-wrap,\n.ios .item-floating-label + .item-input-wrap {\n margin-top: 0;\n}\n.ios .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height) + 25%));\n}\n.ios .item-input-focused .item-floating-label {\n color: var(--f7-label-text-color);\n}\n.ios .item-input .item-media {\n align-self: flex-start;\n}\n.ios .item-input-wrap {\n margin-top: calc(-1 * var(--f7-list-item-padding-vertical));\n margin-bottom: calc(-1 * var(--f7-list-item-padding-vertical));\n}\n.ios .item-input:not(.item-input-outline) .item-content,\n.ios .item-input:not(.item-input-outline).item-content {\n background: var(--f7-input-item-bg-color);\n}\n.ios .item-input-error-message,\n.ios .item-input-info,\n.ios .input-error-message,\n.ios .input-info {\n position: relative;\n margin-bottom: 6px;\n margin-top: -8px;\n}\n.ios .item-input-focused .item-label,\n.ios .item-input-focused .item-floating-label {\n color: var(--f7-label-focused-text-color, var(--f7-label-text-color));\n}\n.ios .item-input-focused .item-inner:after {\n background: var(--f7-input-focused-border-color, var(--f7-list-item-border-color));\n}\n.ios .item-input-invalid .item-label,\n.ios .item-input-invalid .item-floating-label {\n color: var(--f7-label-invalid-text-color, var(--f7-label-text-color));\n}\n.ios .item-input-invalid .item-inner:after {\n background: var(--f7-input-invalid-border-color, var(--f7-list-item-border-color));\n}\n.ios .item-input-invalid input,\n.ios .input-invalid input,\n.ios .item-input-invalid select,\n.ios .input-invalid select,\n.ios .item-input-invalid textarea,\n.ios .input-invalid textarea {\n color: var(--f7-input-invalid-text-color, var(--f7-input-error-text-color));\n}\n.ios .input-clear-button:after {\n content: 'delete_round_ios';\n font-size: calc(var(--f7-input-clear-button-size) / (14 / 10));\n line-height: 1.4;\n}\n.ios .input-clear-button:before {\n width: 44px;\n height: 44px;\n margin-left: -22px;\n margin-top: -22px;\n}\n.ios .item-input-outline .item-content,\n.ios .item-input-outline.item-content {\n padding-top: 8px;\n padding-bottom: 8px;\n margin-left: 16px;\n margin-right: 16px;\n}\n.ios li.item-input-outline:first-child,\n.ios li:first-child > .item-input-outline {\n padding-top: 16px;\n}\n.ios li.item-input-outline:first-child::after,\n.ios li:first-child > .item-input-outline::after {\n top: 16px;\n}\n.ios li.item-input-outline:last-child,\n.ios li:last-child > .item-input-outline {\n padding-bottom: 16px;\n}\n.ios li.item-input-outline:last-child::after,\n.ios li:last-child > .item-input-outline::after {\n bottom: 16px;\n}\n.ios .item-input-outline .item-content .item-inner,\n.ios .item-input-outline.item-content .item-inner,\n.ios .input-outline .item-inner {\n display: block;\n padding-top: 0px;\n padding-bottom: 0px;\n}\n.ios .item-input-outline .item-content .item-input-wrap,\n.ios .item-input-outline.item-content .item-input-wrap,\n.ios .input-outline .item-input-wrap {\n margin-top: 2px;\n}\n.ios .item-input-outline .item-content .item-title + .item-input-wrap,\n.ios .item-input-outline.item-content .item-title + .item-input-wrap,\n.ios .input-outline .item-title + .item-input-wrap {\n margin-top: -22px;\n}\n.ios .item-input-outline .item-content .item-label,\n.ios .item-input-outline.item-content .item-label,\n.ios .input-outline .item-label,\n.ios .item-input-outline .item-content .item-floating-label,\n.ios .item-input-outline.item-content .item-floating-label,\n.ios .input-outline .item-floating-label {\n display: inline-flex;\n margin: -8px -4px -4px;\n top: -4px;\n}\n.ios .item-input-outline .item-content .item-floating-label,\n.ios .item-input-outline.item-content .item-floating-label,\n.ios .input-outline .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height)));\n}\n.md .item-input-wrap {\n min-height: var(--f7-input-height);\n}\n.md .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc((var(--f7-input-height) / 2) / var(--f7-floating-label-scale)));\n}\n.md .item-input .item-inner:after {\n display: none !important;\n}\n.md .item-input .item-content,\n.md .item-input.item-content {\n margin-left: 16px;\n margin-right: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.md .input:after {\n content: '';\n position: absolute;\n background-color: var(--f7-input-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.md .input::after {\n transform: scaleY(1) !important;\n transition-duration: 200ms;\n bottom: 0px;\n}\n.md .input.input-focused::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-focused-border-color, var(--f7-theme-color));\n}\n.md .input.input-invalid::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-invalid-border-color, var(--f7-input-error-text-color));\n}\n.md .item-input:not(.item-input-outline) .item-content:after,\n.md .item-input:not(.item-input-outline).item-content:after {\n content: '';\n position: absolute;\n background-color: var(--f7-input-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.md .item-input:not(.item-input-outline) .item-content::before,\n.md .item-input:not(.item-input-outline).item-content::before {\n content: '';\n position: absolute;\n left: 0;\n top: 8px;\n bottom: 8px;\n right: 0;\n border-radius: var(--f7-input-item-border-radius);\n background: var(--f7-input-item-bg-color);\n pointer-events: none;\n}\n.md .item-input:not(.item-input-outline) .item-content::after,\n.md .item-input:not(.item-input-outline).item-content::after {\n transform: scaleY(1) !important;\n transition-duration: 200ms;\n bottom: 8px;\n}\n.md .item-input:not(.item-input-outline) .item-content.item-input-focused::after,\n.md .item-input:not(.item-input-outline).item-content.item-input-focused::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-focused-border-color, var(--f7-theme-color));\n}\n.md .item-input:not(.item-input-outline) .item-content.item-input-invalid::after,\n.md .item-input:not(.item-input-outline).item-content.item-input-invalid::after,\n.md .item-input:not(.item-input-outline) .item-content.input-invalid::after,\n.md .item-input:not(.item-input-outline).item-content.input-invalid::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-invalid-border-color, var(--f7-input-error-text-color));\n}\n.md .item-input-outline .item-content .item-inner,\n.md .item-input-outline.item-content .item-inner,\n.md .input-outline .item-inner {\n padding-top: 16px;\n padding-bottom: 16px;\n}\n.md .item-input-outline .item-content .item-label,\n.md .item-input-outline.item-content .item-label,\n.md .input-outline .item-label,\n.md .item-input-outline .item-content .item-floating-label,\n.md .item-input-outline.item-content .item-floating-label,\n.md .input-outline .item-floating-label {\n --label-height: calc(var(--f7-label-height) + 8px);\n margin: calc(0px - 16px - var(--label-height) / 2) -4px 4px;\n}\n.md .item-input-outline .item-content .item-floating-label,\n.md .item-input-outline.item-content .item-floating-label,\n.md .input-outline .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc((var(--f7-input-height) / 2) + 8px));\n}\n.md .item-input-with-error-message,\n.md .item-input-with-info,\n.md .input-with-error-message,\n.md .input-with-info {\n padding-bottom: 24px !important;\n}\n.md .item-input-error-message,\n.md .item-input-info,\n.md .input-error-message,\n.md .input-info {\n position: absolute;\n top: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n width: 100%;\n right: 0;\n}\n.md .item-input-focused .item-label,\n.md .item-input-focused .item-floating-label {\n color: var(--f7-label-focused-text-color, var(--f7-theme-color));\n}\n.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after,\n.md .input-focused:not(.input-outline):after {\n background: var(--f7-input-focused-border-color, var(--f7-theme-color));\n}\n.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after,\n.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after,\n.md .input-invalid:not(.input-outline):after,\n.md .input-focused:not(.input-outline):after {\n transform: scaleY(2) !important;\n}\n.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after,\n.md .input-invalid:not(.input-outline):after {\n background: var(--f7-input-invalid-border-color, var(--f7-input-error-text-color));\n}\n.md .item-input-invalid .item-label,\n.md .item-input-invalid .item-floating-label {\n color: var(--f7-label-invalid-text-color, var(--f7-input-error-text-color));\n}\n.md .item-input-invalid input,\n.md .input-invalid input,\n.md .item-input-invalid select,\n.md .input-invalid select,\n.md .item-input-invalid textarea,\n.md .input-invalid textarea {\n color: var(--f7-input-invalid-text-color, var(--f7-input-text-color));\n}\n.md .input-clear-button:after {\n font-size: var(--f7-input-clear-button-size);\n content: 'delete_round_md';\n line-height: 1;\n}\n.md .input-clear-button:before {\n width: 48px;\n height: 48px;\n margin-left: -24px;\n margin-top: -24px;\n}\n/* === Checkbox === */\n:root {\n /* --f7-checkbox-active-color: var(--f7-theme-color); */\n --f7-checkbox-icon-color: #fff;\n --f7-checkbox-extra-margin: 0px;\n}\n:root .dark,\n:root.dark {\n --f7-checkbox-inactive-color: rgba(255, 255, 255, 0.3);\n --f7-checkbox-icon-color: #000;\n}\n.ios {\n --f7-checkbox-size: 22px;\n --f7-checkbox-border-radius: 50%;\n --f7-checkbox-border-width: 1px;\n --f7-checkbox-inactive-color: #c7c7cc;\n}\n.md {\n --f7-checkbox-size: 18px;\n --f7-checkbox-border-radius: 2px;\n --f7-checkbox-border-width: 2px;\n --f7-checkbox-inactive-color: #6d6d6d;\n}\n.checkbox {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n z-index: 1;\n background-color: transparent;\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.5);\n}\n.icon-checkbox,\n.checkbox i {\n flex-shrink: 0;\n border: var(--f7-checkbox-border-width) solid var(--f7-checkbox-inactive-color);\n width: var(--f7-checkbox-size);\n height: var(--f7-checkbox-size);\n border-radius: var(--f7-checkbox-border-radius);\n box-sizing: border-box;\n position: relative;\n display: block;\n}\n.icon-checkbox:after,\n.checkbox i:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n width: var(--f7-checkbox-size);\n height: var(--f7-checkbox-size);\n line-height: var(--f7-checkbox-size);\n top: calc(0px - var(--f7-checkbox-border-width));\n opacity: 0;\n color: var(--f7-checkbox-icon-color);\n position: relative;\n transition-property: opacity;\n right: calc(0px - var(--f7-checkbox-border-width));\n}\n.icon-checkbox.color-white,\n.checkbox i.color-white,\n.color-white .icon-checkbox,\n.color-white .checkbox i {\n --f7-theme-color: #fff;\n --f7-checkbox-icon-color: #000;\n}\n.icon-checkbox.color-black,\n.checkbox i.color-black,\n.color-black .icon-checkbox,\n.color-black .checkbox i {\n --f7-theme-color: #000;\n --f7-checkbox-icon-color: #fff;\n}\nlabel.item-checkbox input[type='checkbox']:not(:checked) ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:not(:checked) ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:not(:checked) ~ i:after {\n font-size: 0;\n}\nlabel.item-checkbox input[type='checkbox']:checked ~ .icon-checkbox,\nlabel.item-checkbox input[type='checkbox']:checked ~ * .icon-checkbox,\n.checkbox input[type='checkbox']:checked ~ i,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox,\n.checkbox input[type='checkbox']:indeterminate ~ i {\n border-color: var(--f7-checkbox-active-color, var(--f7-theme-color));\n background-color: var(--f7-checkbox-active-color, var(--f7-theme-color));\n}\nlabel.item-checkbox input[type='checkbox']:checked ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:checked ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:checked ~ i:after,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:indeterminate ~ i:after {\n opacity: 1;\n}\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:indeterminate ~ i:after {\n font-size: 0;\n content: '';\n position: absolute;\n top: 50%;\n width: 70%;\n background: var(--f7-checkbox-icon-color);\n height: 2px;\n border-radius: 2px;\n margin-top: -1px;\n transition: 0ms;\n right: 15%;\n}\nlabel.item-checkbox,\n.checkbox {\n cursor: pointer;\n}\nlabel.item-checkbox input[type='checkbox'],\n.checkbox input[type='checkbox'],\nlabel.item-checkbox input[type='radio'],\n.checkbox input[type='radio'] {\n display: none;\n}\nlabel.item-checkbox {\n transition-duration: 300ms;\n}\nlabel.item-checkbox .item-content .item-media,\nlabel.item-checkbox.item-content .item-media {\n align-self: center;\n}\nlabel.item-checkbox > .icon-checkbox {\n margin-left: calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin));\n}\nlabel.item-checkbox.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\nlabel.item-checkbox.active-state:after {\n background-color: transparent;\n}\nlabel.item-checkbox.disabled,\n.disabled label.item-checkbox {\n opacity: 0.55;\n pointer-events: none;\n opacity: 0.55 !important;\n pointer-events: none !important;\n}\nlabel.item-checkbox.item-checkbox-icon-end .item-inner {\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right) + var(--f7-checkbox-size) + 16px);\n}\nlabel.item-checkbox.item-checkbox-icon-end input[type='checkbox'] ~ .icon-checkbox {\n position: absolute;\n left: calc(var(--f7-safe-area-left) + 16px);\n margin-left: 0;\n}\n.ios .icon-checkbox:after,\n.ios .checkbox i:after {\n content: 'checkbox_ios';\n font-size: 21px;\n}\n.ios label.item-checkbox.active-state {\n transition-duration: 0ms;\n}\n.ios label.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox:after,\n.ios label.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox:after,\n.ios .checkbox input[type='checkbox']:indeterminate ~ i:after {\n height: 2px;\n margin-top: -1px;\n}\n.md .icon-checkbox,\n.md .checkbox i {\n transition-duration: 200ms;\n}\n.md .icon-checkbox:after,\n.md .checkbox i:after {\n content: 'checkbox_md';\n transition-duration: 200ms;\n font-size: 15px;\n}\n.md label.item-checkbox {\n position: relative;\n overflow: hidden;\n z-index: 0;\n}\n/* === Radio === */\n:root {\n /*\n --f7-radio-active-color: var(--f7-theme-color);\n */\n --f7-radio-border-radius: 50%;\n --f7-radio-extra-margin: 0px;\n}\n:root .dark,\n:root.dark {\n --f7-radio-inactive-color: rgba(255, 255, 255, 0.3);\n}\n.ios {\n --f7-radio-size: 22px;\n --f7-radio-border-width: 1px;\n --f7-radio-inactive-color: #c7c7cc;\n}\n.md {\n --f7-radio-size: 20px;\n --f7-radio-border-width: 2px;\n --f7-radio-inactive-color: #6d6d6d;\n}\n.radio {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n z-index: 1;\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.5);\n}\n.icon-radio {\n width: var(--f7-radio-size);\n height: var(--f7-radio-size);\n border-radius: var(--f7-radio-border-radius);\n position: relative;\n box-sizing: border-box;\n display: block;\n flex-shrink: 0;\n}\n.radio.color-white,\n.icon-radio.color-white,\n.color-white .radio,\n.color-white .icon-radio {\n --f7-theme-color: #fff;\n}\n.radio.color-black,\n.icon-radio.color-black,\n.color-black .radio,\n.color-black .icon-radio {\n --f7-theme-color: #000;\n}\n.radio .icon-radio,\n.md .icon-radio {\n border: var(--f7-radio-border-width) solid var(--f7-radio-inactive-color);\n}\nlabel.item-radio,\n.radio {\n cursor: pointer;\n}\nlabel.item-radio input[type='checkbox'],\n.radio input[type='checkbox'],\nlabel.item-radio input[type='radio'],\n.radio input[type='radio'] {\n display: none;\n}\nlabel.item-radio {\n transition-duration: 300ms;\n}\nlabel.item-radio .item-content .item-media,\nlabel.item-radio.item-content .item-media {\n align-self: center;\n}\nlabel.item-radio.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\nlabel.item-radio.active-state:after {\n background-color: transparent;\n}\nlabel.item-radio.disabled,\n.disabled label.item-radio {\n opacity: 0.55;\n pointer-events: none;\n opacity: 0.55 !important;\n pointer-events: none !important;\n}\n.ios .icon-radio:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n width: calc(var(--f7-radio-size) - var(--f7-radio-border-width) * 2);\n height: calc(var(--f7-radio-size) - var(--f7-radio-border-width) * 2);\n line-height: calc(var(--f7-radio-size) - var(--f7-radio-border-width) * 2 + 1px);\n font-size: 20px;\n content: 'radio_ios';\n color: var(--f7-radio-active-color, var(--f7-theme-color));\n opacity: 0;\n}\n.ios label.item-radio input[type='radio']:checked ~ .icon-radio:after,\n.ios label.item-radio input[type='radio']:checked ~ * .icon-radio:after,\n.ios .radio input[type='radio']:checked ~ .icon-radio:after {\n opacity: 1;\n}\n.ios .radio input[type='radio']:checked ~ .icon-radio {\n border-color: var(--f7-radio-active-color, var(--f7-theme-color));\n}\n.ios label.item-radio:not(.item-radio-icon-start) input[type='radio'] ~ .icon-radio {\n position: absolute;\n top: 50%;\n margin-top: -11px;\n left: calc(var(--f7-safe-area-left) + 10px);\n}\n.ios label.item-radio:not(.item-radio-icon-start) .item-inner {\n padding-left: calc(var(--f7-safe-area-left) + 36px);\n}\n.ios label.item-radio-icon-start > .icon-radio {\n margin-left: calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin));\n}\n.ios label.item-radio.active-state {\n transition-duration: 0ms;\n}\n.md .icon-radio {\n transition-duration: 200ms;\n}\n.md .icon-radio:after {\n content: '';\n position: absolute;\n width: 10px;\n height: 10px;\n left: 50%;\n top: 50%;\n margin-left: -5px;\n margin-top: -5px;\n background-color: var(--f7-radio-active-color, var(--f7-theme-color));\n border-radius: 50%;\n transform: scale(0);\n transition-duration: 200ms;\n}\n.md label.item-radio input[type='radio']:checked ~ .icon-radio,\n.md label.item-radio input[type='radio']:checked ~ * .icon-radio,\n.md .radio input[type='radio']:checked ~ .icon-radio {\n border-color: var(--f7-radio-active-color, var(--f7-theme-color));\n}\n.md label.item-radio input[type='radio']:checked ~ .icon-radio:after,\n.md label.item-radio input[type='radio']:checked ~ * .icon-radio:after,\n.md .radio input[type='radio']:checked ~ .icon-radio:after {\n background-color: var(--f7-radio-active-color, var(--f7-theme-color));\n transform: scale(1);\n}\n.md label.item-radio {\n position: relative;\n overflow: hidden;\n z-index: 0;\n}\n.md label.item-radio:not(.item-radio-icon-end) > .icon-radio {\n margin-left: calc(var(--f7-list-item-media-margin) + var(--f7-radio-extra-margin));\n}\n.md label.item-radio-icon-end input[type='radio'] ~ .icon-radio {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n left: calc(var(--f7-safe-area-left) + 16px);\n}\n.md label.item-radio-icon-end .item-inner {\n padding-left: calc(var(--f7-safe-area-left) + 52px);\n}\n/* === Toggle === */\n.ios {\n --f7-toggle-width: 52px;\n --f7-toggle-height: 32px;\n /*\n --f7-toggle-active-bg-color: var(--f7-theme-color);\n */\n --f7-toggle-inactive-knob-bg-color: #fff;\n --f7-toggle-active-knob-bg-color: #fff;\n --f7-toggle-inactive-border-color: #e5e5e5;\n --f7-toggle-inactive-bg-color: #fff;\n}\n.ios .dark,\n.ios.dark {\n --f7-toggle-inactive-border-color: #555;\n --f7-toggle-inactive-bg-color: #555;\n}\n.md {\n --f7-toggle-width: 52px;\n --f7-toggle-height: 32px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-toggle-inactive-bg-color: var(--f7-md-surface-variant);\n --f7-toggle-active-bg-color: var(--f7-theme-color);\n --f7-toggle-inactive-knob-bg-color: var(--f7-md-outline);\n --f7-toggle-active-knob-bg-color: var(--f7-md-on-primary);\n --f7-toggle-inactive-border-color: var(--f7-md-outline);\n --f7-toggle-active-border-color: var(--f7-theme-color);\n}\n.toggle,\n.toggle-icon {\n width: var(--f7-toggle-width);\n height: var(--f7-toggle-height);\n border-radius: var(--f7-toggle-height);\n}\n.toggle {\n display: inline-block;\n vertical-align: middle;\n position: relative;\n box-sizing: border-box;\n align-self: center;\n -webkit-user-select: none;\n user-select: none;\n}\n.toggle input[type='checkbox'] {\n display: none;\n}\n.toggle input[disabled] ~ .toggle-icon {\n pointer-events: none;\n}\n.toggle-icon {\n z-index: 0;\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n position: relative;\n transition: 300ms;\n box-sizing: border-box;\n display: block;\n cursor: pointer;\n}\n.toggle-icon:before,\n.toggle-icon:after {\n content: '';\n}\n.toggle-icon:after {\n position: absolute;\n z-index: 2;\n transform: translateX(0px);\n transition-duration: 300ms;\n}\n.ios .toggle {\n background: var(--f7-toggle-inactive-border-color);\n}\n.ios .toggle input[type='checkbox']:checked + .toggle-icon {\n background: var(--f7-toggle-active-color, var(--f7-theme-color));\n}\n.ios .toggle input[type='checkbox']:checked + .toggle-icon:before {\n background: var(--f7-toggle-active-bg-color, var(--f7-theme-color));\n transform: scale(0);\n}\n.ios .toggle input[type='checkbox']:checked + .toggle-icon:after {\n background: var(--f7-toggle-active-knob-bg-color);\n transform: translateX(calc(-1 * (var(--f7-toggle-width) - var(--f7-toggle-height))));\n}\n.ios .toggle-icon {\n background: var(--f7-toggle-border-color);\n}\n.ios .toggle-icon:before {\n position: absolute;\n right: 2px;\n top: 2px;\n width: calc(var(--f7-toggle-width) - 4px);\n height: calc(var(--f7-toggle-height) - 4px);\n border-radius: var(--f7-toggle-height);\n box-sizing: border-box;\n background: var(--f7-toggle-inactive-bg-color);\n z-index: 1;\n transition-duration: 300ms;\n transform: scale(1);\n}\n.ios .toggle-icon:after {\n background: var(--f7-toggle-inactive-knob-bg-color);\n height: calc(var(--f7-toggle-height) - 4px);\n width: calc(var(--f7-toggle-height) - 4px);\n top: 2px;\n right: 2px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n border-radius: calc(var(--f7-toggle-height) - 4px);\n}\n.ios .toggle-active-state input[type='checkbox']:not(:checked) + .toggle-icon:before {\n transform: scale(0);\n}\n.ios .toggle-active-state input[type='checkbox'] + .toggle-icon:after {\n width: calc(var(--f7-toggle-height) + 4px);\n}\n.ios .toggle-active-state input[type='checkbox']:checked + .toggle-icon:after {\n transform: translateX(calc(-1 * (var(--f7-toggle-width) - var(--f7-toggle-height) - 8px)));\n}\n.md .toggle input[type='checkbox']:checked + .toggle-icon {\n background: var(--f7-toggle-active-bg-color);\n border-color: var(--f7-toggle-active-border-color);\n}\n.md .toggle input[type='checkbox']:checked + .toggle-icon:after {\n transform: translateX(calc(-1 * (var(--f7-toggle-width) - var(--f7-toggle-height)))) scale(1);\n background: var(--f7-toggle-active-knob-bg-color);\n}\n.md .toggle.active-state input[type='checkbox']:checked + .toggle-icon:after {\n transform: translateX(calc(-1 * (var(--f7-toggle-width) - var(--f7-toggle-height)))) scale(1.1);\n}\n.md .toggle-icon {\n background: var(--f7-toggle-inactive-bg-color);\n border: 2px solid var(--f7-toggle-inactive-border-color);\n}\n.md .toggle-icon:after {\n background: var(--f7-toggle-inactive-knob-bg-color);\n height: calc(var(--f7-toggle-height) - 8px);\n width: calc(var(--f7-toggle-height) - 8px);\n top: 2px;\n border-radius: var(--f7-toggle-height);\n transform: scale(0.666);\n right: 2px;\n}\n.md .toggle-icon.active-state:after {\n transform: scale(1.1);\n}\n/* === Range Slider === */\n:root {\n /*\n --f7-range-bar-active-bg-color: var(--f7-theme-color);\n --f7-range-scale-bg-color: var(--f7-range-bar-bg-color);\n --f7-range-scale-substep-bg-color: var(--f7-range-bar-bg-color);\n */\n --f7-range-scale-step-height: 5px;\n --f7-range-scale-substep-width: 1px;\n --f7-range-scale-substep-height: 4px;\n --f7-range-bar-bg-color: rgba(0, 0, 0, 0.2);\n}\n:root .dark,\n:root.dark {\n --f7-range-bar-bg-color: rgba(255, 255, 255, 0.2);\n}\n.ios {\n --f7-range-size: 28px;\n --f7-range-bar-size: 4px;\n --f7-range-bar-border-radius: 2px;\n --f7-range-knob-size: 28px;\n --f7-range-knob-color: #fff;\n --f7-range-knob-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n --f7-range-label-size: 24px;\n --f7-range-label-text-color: #000;\n --f7-range-label-bg-color: #fff;\n --f7-range-label-font-size: 12px;\n --f7-range-label-font-weight: 500;\n --f7-range-label-border-radius: 5px;\n --f7-range-label-padding: 0px 2px;\n --f7-range-scale-text-color: #666;\n --f7-range-scale-step-width: 1px;\n --f7-range-scale-font-size: 12px;\n --f7-range-scale-font-weight: 400;\n --f7-range-scale-label-offset: 4px;\n}\n.md {\n --f7-range-size: 20px;\n --f7-range-bar-size: 2px;\n --f7-range-bar-border-radius: 0px;\n --f7-range-knob-size: 12px;\n --f7-range-knob-box-shadow: none;\n --f7-range-label-size: 26px;\n --f7-range-label-font-weight: normal;\n --f7-range-label-font-size: 10px;\n --f7-range-label-border-radius: 50%;\n --f7-range-label-padding: 0px;\n --f7-range-scale-step-width: 2px;\n --f7-range-scale-font-size: 12px;\n --f7-range-scale-font-weight: 400;\n --f7-range-scale-label-offset: 4px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-range-knob-color: var(--f7-theme-color);\n --f7-range-label-text-color: var(--f7-md-on-primary);\n --f7-range-label-bg-color: var(--f7-theme-color);\n --f7-range-scale-text-color: var(--f7-md-on-surface-variant);\n}\n.range-slider {\n display: block;\n position: relative;\n align-self: center;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n}\n.range-slider input[type='range'] {\n display: none;\n}\n.range-slider.range-slider-horizontal {\n width: 100%;\n height: var(--f7-range-size);\n touch-action: pan-y;\n}\n.range-slider.range-slider-vertical {\n height: 100%;\n width: var(--f7-range-size);\n touch-action: pan-x;\n}\n.range-bar {\n position: absolute;\n overflow: hidden;\n background: var(--f7-range-bar-bg-color);\n border-radius: var(--f7-range-bar-border-radius);\n}\n.range-slider-vertical .range-bar {\n left: 50%;\n top: 0;\n height: 100%;\n width: var(--f7-range-bar-size);\n margin-left: calc(-1 * var(--f7-range-bar-size) / 2);\n}\n.range-slider-horizontal .range-bar {\n left: 0;\n top: 50%;\n width: 100%;\n height: var(--f7-range-bar-size);\n margin-top: calc(-1 * var(--f7-range-bar-size) / 2);\n}\n.range-bar-active {\n position: absolute;\n background: var(--f7-range-bar-active-bg-color, var(--f7-theme-color));\n}\n.range-slider-horizontal .range-bar-active {\n right: 0;\n top: 0;\n height: 100%;\n}\n.range-slider-vertical .range-bar-active {\n left: 0;\n bottom: 0;\n width: 100%;\n}\n.range-slider-vertical-reversed .range-bar-active {\n top: 0;\n bottom: auto;\n}\n.range-knob-wrap {\n z-index: 20;\n position: absolute;\n height: var(--f7-range-knob-size);\n width: var(--f7-range-knob-size);\n}\n.range-slider-horizontal .range-knob-wrap {\n top: 50%;\n margin-top: calc(-1 * var(--f7-range-knob-size) / 2);\n margin-right: calc(-1 * var(--f7-range-knob-size) / 2);\n right: 0;\n}\n.range-slider-vertical .range-knob-wrap {\n left: 50%;\n margin-left: calc(-1 * var(--f7-range-knob-size) / 2);\n bottom: 0;\n margin-bottom: calc(-1 * var(--f7-range-knob-size) / 2);\n}\n.range-slider-vertical-reversed .range-knob-wrap {\n bottom: auto;\n top: 0;\n margin-bottom: 0;\n margin-top: calc(-1 * var(--f7-range-knob-size) / 2);\n}\n.range-knob {\n box-sizing: border-box;\n border-radius: 50%;\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 1;\n background: var(--f7-range-knob-color, var(--f7-range-knob-bg-color, var(--f7-theme-color)));\n box-shadow: var(--f7-range-knob-box-shadow);\n}\n.range-knob:after {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n width: 44px;\n height: 44px;\n margin-left: -22px;\n margin-top: -22px;\n}\n.range-knob-label {\n position: absolute;\n left: 50%;\n bottom: 100%;\n text-align: center;\n transition-duration: 120ms;\n transition-property: transform;\n box-sizing: border-box;\n transform: translateY(100%) scale(0);\n height: var(--f7-range-label-size);\n line-height: var(--f7-range-label-size);\n min-width: var(--f7-range-label-size);\n color: var(--f7-range-label-text-color);\n background-color: var(--f7-range-label-bg-color, var(--f7-theme-color));\n font-size: var(--f7-range-label-font-size);\n font-weight: var(--f7-range-label-font-weight);\n border-radius: var(--f7-range-label-border-radius);\n padding: var(--f7-range-label-padding);\n}\n.range-knob-active-state .range-knob-label {\n transform: translateY(0%) scale(1);\n}\n.range-scale {\n position: absolute;\n}\n.range-slider-horizontal .range-scale {\n top: 50%;\n left: 0;\n width: 100%;\n margin-top: calc(var(--f7-range-bar-size) / 2);\n}\n.range-slider-vertical .range-scale {\n right: 50%;\n top: 0;\n height: 100%;\n margin-right: calc(var(--f7-range-bar-size) / 2);\n}\n.range-scale-step {\n position: absolute;\n box-sizing: border-box;\n display: flex;\n font-size: var(--f7-range-scale-font-size);\n font-weight: var(--f7-range-scale-font-weight);\n color: var(--f7-range-scale-text-color, var(--f7-range-bar-bg-color));\n line-height: 1;\n}\n.range-scale-step:before {\n content: '';\n position: absolute;\n background: var(--f7-range-scale-step-bg-color, var(--f7-range-bar-bg-color));\n}\n.range-slider-horizontal .range-scale-step {\n justify-content: center;\n align-items: flex-start;\n width: var(--f7-range-scale-step-width);\n height: var(--f7-range-scale-step-height);\n padding-top: calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));\n top: 0;\n margin-right: calc(-1 * var(--f7-range-scale-step-width) / 2);\n}\n.range-slider-horizontal .range-scale-step:before {\n left: 0;\n top: 0;\n width: 100%;\n height: var(--f7-range-scale-step-height);\n}\n.range-slider-horizontal .range-scale-step:first-child {\n margin-right: 0;\n}\n.range-slider-horizontal .range-scale-step:last-child {\n margin-right: calc(-1 * var(--f7-range-scale-step-width));\n}\n.range-slider-vertical .range-scale-step {\n line-height: 1;\n justify-content: flex-end;\n align-items: center;\n height: var(--f7-range-scale-step-width);\n width: var(--f7-range-scale-step-height);\n padding-right: calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));\n right: 0;\n margin-bottom: calc(-1 * var(--f7-range-scale-step-width) / 2);\n}\n.range-slider-vertical .range-scale-step:first-child {\n margin-bottom: 0;\n}\n.range-slider-vertical .range-scale-step:last-child {\n margin-bottom: calc(-1 * var(--f7-range-scale-step-width));\n}\n.range-slider-vertical .range-scale-step:before {\n right: 0;\n top: 0;\n height: 100%;\n width: var(--f7-range-scale-step-height);\n}\n.range-scale-substep {\n --f7-range-scale-step-bg-color: var(--f7-range-scale-substep-bg-color, var(--f7-range-bar-bg-color));\n --f7-range-scale-step-width: var(--f7-range-scale-substep-width);\n --f7-range-scale-step-height: var(--f7-range-scale-substep-height);\n}\n.ios .range-knob-label {\n margin-bottom: 6px;\n transform: translateX(-50%) translateY(100%) scale(0);\n}\n.ios .range-knob-active-state .range-knob-label {\n transform: translateX(-50%) translateY(0%) scale(1);\n}\n.md .range-knob {\n transition-duration: 200ms;\n transition-property: transform, background-color;\n}\n.md .range-knob-active-state .range-knob {\n transform: scale(1.5);\n}\n.md .range-slider-min:not(.range-slider-dual) .range-knob {\n background: #fff !important;\n border: 2px solid var(--f7-range-bar-bg-color);\n}\n.md .range-knob-label {\n width: var(--f7-range-label-size);\n margin-left: calc(-1 * var(--f7-range-label-size) / 2);\n margin-bottom: 8px;\n}\n.md .range-knob-label:before {\n content: '';\n left: 50%;\n top: 0px;\n margin-left: calc(-1 * var(--f7-range-label-size) / 2);\n position: absolute;\n z-index: -1;\n width: var(--f7-range-label-size);\n height: var(--f7-range-label-size);\n background: var(--f7-range-label-bg-color, var(--f7-theme-color));\n transform: rotate(-45deg);\n border-radius: 50% 50% 50% 0;\n}\n.md .range-knob-active-state .range-knob-label {\n transform: translateY(0%) scale(1);\n}\n.md .range-slider-label .range-knob-active-state .range-knob {\n transform: scale(0);\n}\n/* === Stepper === */\n:root {\n /*\n --f7-stepper-button-text-color: var(--f7-theme-color);\n --f7-stepper-button-pressed-text-color: var(--f7-button-text-color, var(--f7-theme-color));\n --f7-stepper-value-text-color: var(--f7-theme-color);\n --f7-stepper-fill-button-bg-color: var(--f7-theme-color);\n */\n --f7-stepper-raised-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);\n --f7-stepper-value-font-weight: 500;\n}\n.ios {\n --f7-stepper-height: 28px;\n --f7-stepper-border-radius: 5px;\n --f7-stepper-fill-button-text-color: #fff;\n /*\n --f7-stepper-button-pressed-bg-color: rgba(var(--f7-theme-color-rgb), .15);\n --f7-stepper-fill-button-pressed-bg-color: var(--f7-theme-color-tint);\n */\n --f7-stepper-large-height: 44px;\n --f7-stepper-small-height: 26px;\n --f7-stepper-value-font-size: 17px;\n --f7-stepper-border-width: 2px;\n --f7-stepper-border-color: var(--f7-theme-color);\n --f7-stepper-small-border-width: 2px;\n}\n.md {\n --f7-stepper-height: 40px;\n --f7-stepper-border-radius: 8px;\n --f7-stepper-large-height: 48px;\n --f7-stepper-small-height: 32px;\n --f7-stepper-value-font-size: 14px;\n --f7-stepper-border-width: 1px;\n --f7-stepper-small-border-width: 1px;\n --f7-stepper-button-pressed-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-stepper-fill-button-text-color: var(--f7-md-on-primary);\n --f7-stepper-fill-button-pressed-bg-color: var(--f7-theme-color);\n --f7-stepper-border-color: var(--f7-md-outline);\n}\n.stepper {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n display: inline-flex;\n align-items: stretch;\n height: var(--f7-stepper-height);\n border-radius: var(--f7-stepper-border-radius);\n flex-direction: row-reverse;\n}\n.stepper-button,\n.stepper-button-minus,\n.stepper-button-plus {\n background-color: var(--f7-stepper-button-bg-color);\n width: 40px;\n border-radius: var(--f7-stepper-border-radius);\n border: var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);\n color: var(--f7-stepper-button-text-color, var(--f7-theme-color));\n line-height: calc(var(--f7-stepper-height) - var(--f7-stepper-border-width, 0px));\n text-align: center;\n display: flex;\n justify-content: center;\n align-content: center;\n align-items: center;\n flex-shrink: 0;\n box-sizing: border-box;\n position: relative;\n cursor: pointer;\n}\n.stepper-button.active-state,\n.stepper-button-minus.active-state,\n.stepper-button-plus.active-state {\n background-color: var(--f7-stepper-button-pressed-bg-color, rgba(var(--f7-theme-color-rgb), 0.15));\n color: var(--f7-stepper-button-pressed-text-color, var(--f7-stepper-button-text-color, var(--f7-theme-color)));\n}\n.stepper-button:first-child,\n.stepper-button-minus:first-child,\n.stepper-button-plus:first-child {\n border-radius: var(--f7-stepper-border-radius) 0 0 var(--f7-stepper-border-radius);\n}\n.stepper-button:last-child,\n.stepper-button-minus:last-child,\n.stepper-button-plus:last-child {\n border-radius: 0 var(--f7-stepper-border-radius) var(--f7-stepper-border-radius) 0;\n}\n.stepper-button .icon,\n.stepper-button-minus .icon,\n.stepper-button-plus .icon {\n pointer-events: none;\n}\n.stepper-button + .stepper-button,\n.stepper-button-minus + .stepper-button,\n.stepper-button-plus + .stepper-button,\n.stepper-button + .stepper-button-minus,\n.stepper-button-minus + .stepper-button-minus,\n.stepper-button-plus + .stepper-button-minus,\n.stepper-button + .stepper-button-plus,\n.stepper-button-minus + .stepper-button-plus,\n.stepper-button-plus + .stepper-button-plus {\n border-left: none;\n}\n.stepper-button-plus,\n.stepper-button-minus {\n -webkit-user-select: none;\n user-select: none;\n}\n.stepper-button-plus:after,\n.stepper-button-minus:after,\n.stepper-button-plus:before,\n.stepper-button-minus:before {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--f7-stepper-button-text-color, var(--f7-theme-color));\n border-radius: 2px;\n}\n.stepper-button-plus:after,\n.stepper-button-minus:after {\n width: 15px;\n height: 2px;\n}\n.stepper-button-plus:before {\n height: 15px;\n width: 2px;\n}\n.stepper-value {\n display: flex;\n align-content: center;\n align-items: center;\n justify-content: center;\n}\n.stepper-input-wrap,\n.stepper-value {\n flex-shrink: 1;\n text-align: center;\n border-top: var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);\n border-bottom: var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);\n}\n.stepper .stepper-input-wrap input,\n.stepper-value {\n width: 45px;\n color: var(--f7-stepper-value-text-color, var(--f7-theme-color));\n font-size: var(--f7-stepper-value-font-size);\n font-weight: var(--f7-stepper-value-font-weight);\n text-align: center;\n}\n.stepper .stepper-input-wrap input {\n height: 100%;\n}\n.stepper-round,\n.ios .stepper-round-ios,\n.md .stepper-round-md {\n --f7-stepper-border-radius: var(--f7-stepper-height);\n}\n.stepper-fill,\n.ios .stepper-fill-ios,\n.md .stepper-fill-md {\n --f7-stepper-border-color: var(--f7-stepper-fill-button-bg-color, var(--f7-theme-color));\n --f7-stepper-button-bg-color: var(--f7-stepper-fill-button-bg-color, var(--f7-theme-color));\n --f7-stepper-button-text-color: var(--f7-stepper-fill-button-text-color);\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.stepper-fill .stepper-button + .stepper-button,\n.ios .stepper-fill-ios .stepper-button + .stepper-button,\n.md .stepper-fill-md .stepper-button + .stepper-button,\n.stepper-raised .stepper-button + .stepper-button,\n.ios .stepper-raised-ios .stepper-button + .stepper-button,\n.md .stepper-raised-md .stepper-button + .stepper-button,\n.stepper-fill .stepper-button-minus + .stepper-button-plus,\n.ios .stepper-fill-ios .stepper-button-minus + .stepper-button-plus,\n.md .stepper-fill-md .stepper-button-minus + .stepper-button-plus,\n.stepper-raised .stepper-button-minus + .stepper-button-plus,\n.ios .stepper-raised-ios .stepper-button-minus + .stepper-button-plus,\n.md .stepper-raised-md .stepper-button-minus + .stepper-button-plus {\n border-left: 1px solid rgba(0, 0, 0, 0.1);\n}\n.stepper-fill .stepper-button + .stepper-button.active-state,\n.ios .stepper-fill-ios .stepper-button + .stepper-button.active-state,\n.md .stepper-fill-md .stepper-button + .stepper-button.active-state,\n.stepper-fill .stepper-button-minus + .stepper-button-plus.active-state,\n.ios .stepper-fill-ios .stepper-button-minus + .stepper-button-plus.active-state,\n.md .stepper-fill-md .stepper-button-minus + .stepper-button-plus.active-state {\n border-left-color: var(--f7-stepper-button-pressed-bg-color);\n}\n.stepper-raised:not(.stepper-fill) .stepper-input-wrap,\n.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-input-wrap,\n.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-input-wrap,\n.stepper-raised:not(.stepper-fill) .stepper-value,\n.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-value,\n.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-value {\n border-left: 1px solid rgba(0, 0, 0, 0.1);\n border-right: 1px solid rgba(0, 0, 0, 0.1);\n}\n.stepper-large,\n.ios .stepper-large-ios,\n.md .stepper-large-md {\n --f7-stepper-height: var(--f7-stepper-large-height);\n}\n.stepper-small,\n.ios .stepper-small-ios,\n.md .stepper-small-md {\n --f7-stepper-border-width: var(--f7-stepper-small-border-width);\n --f7-stepper-height: var(--f7-stepper-small-height);\n}\n.ios .stepper-fill.stepper-small-ios,\n.ios .stepper-fill.stepper-small {\n --f7-stepper-button-pressed-bg-color: transparent;\n --f7-stepper-button-pressed-text-color: var(--f7-theme-color);\n}\n.stepper-raised,\n.ios .stepper-raised-ios,\n.md .stepper-raised-md {\n --f7-stepper-border-width: 0;\n box-shadow: var(--f7-stepper-raised-box-shadow);\n}\n.ios .stepper-button .f7-icons,\n.ios .stepper-button-minus .f7-icons,\n.ios .stepper-button-plus .f7-icons {\n font-size: 22px;\n}\n.ios .stepper-fill,\n.ios .stepper-fill-ios {\n --f7-stepper-button-pressed-bg-color: var(--f7-stepper-fill-button-pressed-bg-color, var(--f7-theme-color-tint));\n}\n.ios .stepper-small.stepper-raised,\n.ios .stepper-small-ios.stepper-raised,\n.ios .stepper-small.stepper-raised-ios,\n.ios .stepper-small-ios.stepper-raised-ios {\n --f7-stepper-border-width: 0px;\n}\n.ios .stepper-small .stepper-button,\n.ios .stepper-small-ios .stepper-button,\n.ios .stepper-small .stepper-button-minus,\n.ios .stepper-small-ios .stepper-button-minus,\n.ios .stepper-small .stepper-button-plus,\n.ios .stepper-small-ios .stepper-button-plus {\n transition-duration: 200ms;\n}\n.ios .stepper-small .stepper-button.active-state:after,\n.ios .stepper-small-ios .stepper-button.active-state:after,\n.ios .stepper-small .stepper-button-minus.active-state:after,\n.ios .stepper-small-ios .stepper-button-minus.active-state:after,\n.ios .stepper-small .stepper-button-plus.active-state:after,\n.ios .stepper-small-ios .stepper-button-plus.active-state:after,\n.ios .stepper-small .stepper-button.active-state:before,\n.ios .stepper-small-ios .stepper-button.active-state:before,\n.ios .stepper-small .stepper-button-minus.active-state:before,\n.ios .stepper-small-ios .stepper-button-minus.active-state:before,\n.ios .stepper-small .stepper-button-plus.active-state:before,\n.ios .stepper-small-ios .stepper-button-plus.active-state:before {\n transition-duration: 200ms;\n background-color: var(--f7-theme-color);\n}\n.md .stepper-button,\n.md .stepper-button-minus,\n.md .stepper-button-plus {\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n overflow: hidden;\n}\n.md .stepper-fill,\n.md .stepper-fill-md {\n --f7-stepper-button-pressed-bg-color: var(--f7-stepper-fill-button-bg-color, var(--f7-theme-color));\n}\n/* === Smart Select === */\n.smart-select :root {\n /*\n --f7-smart-select-sheet-bg: var(--f7-list-bg-color);\n --f7-smart-select-sheet-toolbar-border-color: var(--f7-bars-border-color);\n */\n}\n.smart-select select {\n display: none;\n}\n.smart-select .item-after {\n max-width: 70%;\n overflow: hidden;\n text-overflow: ellipsis;\n position: relative;\n display: block;\n}\n.smart-select-sheet .page,\n.smart-select-sheet .sheet-modal-inner,\n.smart-select-sheet .list ul {\n background: var(--f7-smart-select-sheet-bg, var(--f7-list-bg-color));\n}\n.smart-select-sheet .toolbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-smart-select-sheet-toolbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.smart-select-sheet .toolbar:after {\n display: block;\n}\n.smart-select-sheet .list {\n margin: 0;\n}\n.smart-select-sheet .list ul:before,\n.smart-select-sheet .list ul:after {\n display: none !important;\n}\n.smart-select-popover .popover-inner {\n max-height: 40vh;\n}\n/* === Grid === */\n:root {\n --f7-grid-gap: 16px;\n}\n.grid {\n display: grid;\n}\n.grid.grid-gap {\n gap: var(--f7-grid-gap);\n}\n.grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n}\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n}\n.grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n}\n.grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n}\n.grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n}\n.grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n}\n.grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n}\n.grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n}\n.grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n}\n.grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n}\n.grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n}\n.grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n}\n.grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n}\n.grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n}\n.grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n}\n.grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n}\n.grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n}\n.grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n}\n.grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n}\n.grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n}\n.grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n}\n.grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n}\n.grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n}\n.grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n}\n.grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n}\n.grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n}\n.grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n}\n.grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n}\n.grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n}\n.grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n}\n.grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n}\n.grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n}\n.grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n}\n.grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n}\n.grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n}\n.grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n}\n.grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n}\n.grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n}\n.grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n}\n@media (min-width: 480px) {\n .xsmall-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .xsmall-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .xsmall-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .xsmall-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .xsmall-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .xsmall-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .xsmall-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .xsmall-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .xsmall-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .xsmall-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .xsmall-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .xsmall-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .xsmall-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .xsmall-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .xsmall-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .xsmall-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .xsmall-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .xsmall-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .xsmall-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .xsmall-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .xsmall-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .xsmall-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .xsmall-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .xsmall-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .xsmall-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .xsmall-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .xsmall-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .xsmall-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .xsmall-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .xsmall-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .xsmall-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .xsmall-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .xsmall-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .xsmall-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .xsmall-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .xsmall-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .xsmall-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .xsmall-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .xsmall-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .xsmall-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 568px) {\n .small-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .small-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .small-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .small-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .small-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .small-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .small-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .small-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .small-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .small-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .small-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .small-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .small-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .small-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .small-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .small-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .small-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .small-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .small-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .small-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .small-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .small-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .small-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .small-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .small-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .small-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .small-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .small-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .small-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .small-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .small-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .small-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .small-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .small-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .small-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .small-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .small-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .small-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .small-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .small-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 768px) {\n .medium-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .medium-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .medium-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .medium-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .medium-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .medium-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .medium-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .medium-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .medium-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .medium-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .medium-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .medium-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .medium-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .medium-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .medium-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .medium-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .medium-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .medium-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .medium-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .medium-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .medium-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .medium-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .medium-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .medium-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .medium-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .medium-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .medium-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .medium-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .medium-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .medium-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .medium-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .medium-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .medium-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .medium-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .medium-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .medium-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .medium-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .medium-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .medium-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .medium-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 1024px) {\n .large-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .large-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .large-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .large-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .large-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .large-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .large-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .large-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .large-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .large-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .large-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .large-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .large-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .large-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .large-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .large-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .large-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .large-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .large-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .large-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .large-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .large-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .large-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .large-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .large-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .large-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .large-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .large-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .large-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .large-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .large-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .large-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .large-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .large-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .large-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .large-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .large-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .large-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .large-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .large-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 1200px) {\n .xlarge-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .xlarge-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .xlarge-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .xlarge-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .xlarge-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .xlarge-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .xlarge-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .xlarge-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .xlarge-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .xlarge-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .xlarge-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .xlarge-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .xlarge-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .xlarge-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .xlarge-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .xlarge-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .xlarge-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .xlarge-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .xlarge-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .xlarge-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .xlarge-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .xlarge-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .xlarge-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .xlarge-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .xlarge-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .xlarge-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .xlarge-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .xlarge-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .xlarge-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .xlarge-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .xlarge-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .xlarge-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .xlarge-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .xlarge-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .xlarge-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .xlarge-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .xlarge-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .xlarge-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .xlarge-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .xlarge-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n/* === Calendar/Datepicker === */\n:root {\n --f7-calendar-height: 340px;\n --f7-calendar-sheet-landscape-height: 220px;\n --f7-calendar-popover-width: 320px;\n --f7-calendar-popover-height: 320px;\n --f7-calendar-modal-height: 420px;\n --f7-calendar-modal-max-width: 380px;\n /*\n --f7-calendar-header-bg-color: var(--f7-bars-bg-color);\n --f7-calendar-header-link-color: var(--f7-bars-link-color);\n --f7-calendar-header-text-color: var(--f7-bars-text-color);\n --f7-calendar-footer-bg-color: var(--f7-bars-bg-color);\n --f7-calendar-footer-border-color: var(--f7-bars-border-color);\n --f7-calendar-footer-link-color: var(--f7-bars-link-color);\n --f7-calendar-footer-text-color: var(--f7-bars-text-color);\n */\n --f7-calendar-week-header-bg-color: transparent;\n --f7-calendar-footer-padding: 0 8px;\n --f7-calendar-week-header-font-size: 11px;\n /*\n --f7-calendar-selected-bg-color: var(--f7-theme-color);\n */\n --f7-calendar-disabled-text-color: #d4d4d4;\n --f7-calendar-event-dot-size: 4px;\n /*\n --f7-calendar-event-bg-color: var(--f7-theme-color);\n */\n /*\n --f7-calendar-picker-selected-text-color: var(--f7-theme-color);\n */\n --f7-calendar-time-selector-height: 28px;\n --f7-calendar-picker-pressed-bg-color: rgba(0, 0, 0, 0.1);\n --f7-calendar-picker-hover-bg-color: rgba(0, 0, 0, 0.03);\n --f7-calendar-time-selector-bg-color: rgba(0, 0, 0, 0.05);\n}\n:root .dark,\n:root.dark {\n --f7-calendar-picker-pressed-bg-color: rgba(255, 255, 255, 0.08);\n --f7-calendar-picker-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-calendar-time-selector-bg-color: rgba(255, 255, 255, 0.1);\n}\n.ios {\n --f7-calendar-selected-text-color: #fff;\n --f7-calendar-header-height: 44px;\n --f7-calendar-header-font-size: 17px;\n --f7-calendar-header-font-weight: 600;\n --f7-calendar-header-padding: 0 8px;\n --f7-calendar-footer-height: 44px;\n --f7-calendar-footer-font-size: 17px;\n --f7-calendar-week-header-height: 18px;\n --f7-calendar-day-font-size: 15px;\n --f7-calendar-day-size: 30px;\n --f7-calendar-picker-font-size: 17px;\n --f7-calendar-time-selector-font-size: 17px;\n --f7-calendar-modal-border-radius: 4px;\n --f7-calendar-modal-box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2),\n 0px 24px 38px 3px rgba(0, 0, 0, 0.14),\n 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\n --f7-calendar-prev-next-text-color: #c8c8c8;\n --f7-calendar-sheet-border-color: #929499;\n --f7-calendar-sheet-bg-color: #fff;\n --f7-calendar-week-header-text-color: #5e5e5e;\n --f7-calendar-modal-bg-color: #fff;\n --f7-calendar-day-text-color: #000;\n --f7-calendar-today-text-color: #000;\n --f7-calendar-today-bg-color: #e3e3e3;\n}\n.ios .dark,\n.ios.dark {\n --f7-calendar-prev-next-text-color: #5e5e5e;\n --f7-calendar-sheet-border-color: var(--f7-bars-border-color);\n --f7-calendar-sheet-bg-color: #121212;\n --f7-calendar-week-header-text-color: #aaa;\n --f7-calendar-modal-bg-color: #121212;\n --f7-calendar-day-text-color: #fff;\n --f7-calendar-today-text-color: #fff;\n --f7-calendar-today-bg-color: #333;\n}\n.md {\n --f7-calendar-sheet-border-color: transparent;\n --f7-calendar-header-height: 64px;\n --f7-calendar-header-font-size: 24px;\n --f7-calendar-header-font-weight: 400;\n --f7-calendar-header-padding: 0 24px;\n --f7-calendar-footer-height: 56px;\n --f7-calendar-footer-font-size: 14px;\n --f7-calendar-week-header-height: 24px;\n --f7-calendar-day-font-size: 14px;\n --f7-calendar-today-bg-color: none;\n --f7-calendar-day-size: 32px;\n --f7-calendar-picker-font-size: 14px;\n --f7-calendar-time-selector-font-size: 14px;\n --f7-calendar-modal-border-radius: 28px;\n --f7-calendar-modal-box-shadow: none;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-calendar-sheet-bg-color: var(--f7-md-surface-1);\n --f7-calendar-selected-text-color: var(--f7-md-on-primary);\n --f7-calendar-week-header-text-color: var(--f7-md-on-surface-variant);\n --f7-calendar-day-text-color: var(--f7-md-on-surface);\n --f7-calendar-prev-next-text-color: rgba(var(--f7-md-on-surface-variant-rgb), 0.55);\n --f7-calendar-today-text-color: var(--f7-theme-color);\n --f7-calendar-modal-bg-color: var(--f7-md-surface-1);\n}\n.calendar {\n overflow: hidden;\n height: var(--f7-calendar-height);\n width: 100%;\n display: flex;\n flex-direction: column;\n}\n.calendar.modal-in {\n display: flex;\n}\n@media (orientation: landscape) and (max-height: 415px) {\n .calendar.calendar-sheet {\n height: var(--f7-calendar-sheet-landscape-height);\n }\n .calendar.calendar-modal {\n height: calc(100vh - var(--f7-navbar-height));\n }\n}\n.calendar.calendar-inline,\n.calendar.calendar-popover .calendar {\n position: relative;\n}\n.calendar-sheet {\n --f7-sheet-border-color: var(--f7-calendar-sheet-border-color);\n background: var(--f7-calendar-sheet-bg-color);\n padding-bottom: var(--f7-safe-area-bottom);\n height: calc(var(--f7-calendar-height) + var(--f7-safe-area-bottom));\n}\n.calendar-sheet:before {\n z-index: 600;\n}\n.calendar-sheet .toolbar:before,\n.calendar-modal .toolbar:before,\n.calendar-popover .toolbar:before {\n display: none;\n}\n.calendar-popover {\n width: var(--f7-calendar-popover-width);\n}\n.calendar-popover .toolbar-top,\n.calendar-popover .calendar-header {\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n overflow: hidden;\n}\n.calendar-popover .calendar-header + .toolbar-top {\n border-radius: 0;\n}\n.calendar-popover .toolbar-bottom,\n.calendar-popover .calendar-footer {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.calendar-popover .calendar {\n height: var(--f7-calendar-popover-height);\n position: relative;\n z-index: 1;\n}\n.calendar-popover .calendar-month-picker,\n.calendar-popover .calendar-year-picker,\n.calendar-popover .calendar-time-picker {\n border-radius: var(--f7-popover-border-radius);\n}\n.calendar-popover .calendar-month-picker .picker,\n.calendar-popover .calendar-year-picker .picker,\n.calendar-popover .calendar-time-picker .picker {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n.calendar-header {\n width: 100%;\n position: relative;\n overflow: hidden;\n flex-shrink: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n box-sizing: border-box;\n padding: var(--f7-calendar-header-padding);\n background-color: var(--f7-calendar-header-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-calendar-header-text-color, var(--f7-bars-text-color));\n height: var(--f7-calendar-header-height);\n line-height: var(--f7-calendar-header-height);\n font-size: var(--f7-calendar-header-font-size);\n font-weight: var(--f7-calendar-header-font-weight);\n}\n.calendar-header a {\n color: var(--f7-calendar-header-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.calendar-footer {\n width: 100%;\n flex-shrink: 0;\n padding: var(--f7-calendar-footer-padding);\n background-color: var(--f7-calendar-footer-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-calendar-footer-text-color, var(--f7-bars-text-color));\n height: var(--f7-calendar-footer-height);\n font-size: var(--f7-calendar-header-font-size);\n display: flex;\n justify-content: flex-end;\n box-sizing: border-box;\n align-items: center;\n position: relative;\n}\n.calendar-footer a {\n color: var(--f7-calendar-footer-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.calendar-footer:before {\n content: '';\n position: absolute;\n background-color: var(--f7-calendar-footer-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.calendar-modal {\n position: absolute;\n height: var(--f7-calendar-modal-height);\n overflow: hidden;\n top: 50%;\n left: 50%;\n min-width: 300px;\n max-width: var(--f7-calendar-modal-max-width);\n transform: translate3d(-50%, 100vh, 0);\n transition-property: transform;\n display: flex;\n z-index: 13500;\n background: var(--f7-calendar-modal-bg-color);\n width: 90%;\n border-radius: var(--f7-calendar-modal-border-radius);\n box-shadow: var(--f7-calendar-modal-box-shadow);\n transition-timing-function: cubic-bezier(0, 1, 0.2, 1);\n}\n.calendar-modal.modal-in,\n.calendar-modal.modal-out {\n transition-duration: 400ms;\n}\n.calendar-modal.modal-in {\n transform: translate3d(-50%, -50%, 0);\n}\n.calendar-modal.modal-out {\n transform: translate3d(-50%, 100vh, 0);\n}\n.calendar-week-header {\n display: flex;\n box-sizing: border-box;\n position: relative;\n font-size: var(--f7-calendar-week-header-font-size);\n background-color: var(--f7-calendar-week-header-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-calendar-week-header-text-color, var(--f7-bars-text-color));\n height: var(--f7-calendar-week-header-height);\n padding-left: var(--f7-safe-area-left);\n padding-right: var(--f7-safe-area-right);\n}\n.calendar-week-header .calendar-week-day {\n flex-shrink: 1;\n width: calc(100% / 7);\n text-align: center;\n line-height: var(--f7-calendar-week-header-height);\n}\n.calendar-months {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: relative;\n flex-shrink: 10;\n}\n.calendar-months-wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n transition: 300ms;\n}\n.calendar-month {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n}\n.calendar-row {\n height: 16.66666667%;\n display: flex;\n flex-shrink: 1;\n width: 100%;\n position: relative;\n box-sizing: border-box;\n padding-left: var(--f7-safe-area-left);\n padding-right: var(--f7-safe-area-right);\n}\n.calendar-modal .calendar-months:first-child .calendar-row:first-child:before,\n.calendar-popover .calendar-months:first-child .calendar-row:first-child:before {\n display: none !important;\n}\n.calendar-day {\n flex-shrink: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n box-sizing: border-box;\n width: 14.28571429%;\n text-align: center;\n cursor: pointer;\n z-index: 20;\n color: var(--f7-calendar-day-text-color);\n height: 100%;\n font-size: var(--f7-calendar-day-font-size);\n}\n.calendar-day-today .calendar-day-number {\n color: var(--f7-calendar-today-text-color, var(--f7-theme-color));\n background-color: var(--f7-calendar-today-bg-color);\n}\n.calendar-day-prev,\n.calendar-day-next {\n color: var(--f7-calendar-prev-next-text-color);\n}\n.calendar-day-disabled {\n color: var(--f7-calendar-disabled-text-color);\n cursor: auto;\n}\n.calendar-day-selected .calendar-day-number {\n color: var(--f7-calendar-selected-text-color);\n background-color: var(--f7-calendar-selected-bg-color, var(--f7-theme-color));\n}\n.calendar-day-number {\n display: inline-block;\n border-radius: 50%;\n position: relative;\n width: var(--f7-calendar-day-size);\n height: var(--f7-calendar-day-size);\n line-height: var(--f7-calendar-day-size);\n}\n.calendar-day-events {\n position: absolute;\n display: flex;\n left: 0;\n width: 100%;\n top: 100%;\n align-items: center;\n justify-content: center;\n margin-top: 1px;\n}\n.calendar-day-event {\n width: var(--f7-calendar-event-dot-size);\n height: var(--f7-calendar-event-dot-size);\n border-radius: calc(var(--f7-calendar-event-dot-size) / 2);\n background-color: var(--f7-calendar-event-bg-color);\n}\n.calendar-day-event + .calendar-day-event {\n margin-left: 2px;\n}\n.calendar-day-selected-range,\n.calendar-day-selected-left,\n.calendar-day-selected-right {\n position: relative;\n}\n.calendar-day-selected-range:before,\n.calendar-day-selected-left:before,\n.calendar-day-selected-right:before {\n width: 100%;\n height: var(--f7-calendar-day-size);\n content: '';\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n z-index: -1;\n background-color: var(--f7-calendar-selected-bg-color, var(--f7-theme-color));\n opacity: 0.2;\n}\n.calendar-day-selected-range:first-child:before,\n.calendar-day-selected-left:before {\n left: auto;\n right: 0;\n width: calc(50% + var(--f7-calendar-day-size) / 2);\n border-radius: var(--f7-calendar-day-size) 0 0 var(--f7-calendar-day-size);\n}\n.calendar-day-selected-range:last-child:before,\n.calendar-day-selected-right:before {\n width: calc(50% + var(--f7-calendar-day-size) / 2);\n border-radius: 0 var(--f7-calendar-day-size) var(--f7-calendar-day-size) 0;\n}\n.calendar-day-selected-left:last-child:before,\n.calendar-day-selected-right:first-child:before {\n display: none;\n}\n.calendar-day-selected-left.calendar-day-selected-right:before {\n content: none;\n display: none;\n}\n.calendar-day-selected-range .calendar-day-number {\n background-color: transparent;\n color: inherit;\n}\n.calendar-month-selector,\n.calendar-year-selector {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 50%;\n max-width: 200px;\n flex-shrink: 10;\n margin-left: auto;\n margin-right: auto;\n}\n.calendar-month-selector .calendar-day-number,\n.calendar-year-selector .calendar-day-number {\n flex-shrink: 1;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.calendar-month-selector a.icon-only,\n.calendar-year-selector a.icon-only {\n min-width: 36px;\n}\n.calendar-month-picker,\n.calendar-year-picker,\n.calendar-time-picker {\n position: relative;\n width: 100%;\n height: 100%;\n -webkit-user-select: none;\n user-select: none;\n background: transparent;\n}\n.calendar-month-picker .picker-columns,\n.calendar-year-picker .picker-columns {\n text-align: center;\n}\n.calendar-month-picker-item,\n.calendar-year-picker-item {\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n overflow: hidden;\n cursor: pointer;\n transition-duration: 100ms;\n box-sizing: border-box;\n}\n.calendar-month-picker-item span,\n.calendar-year-picker-item span {\n white-space: nowrap;\n text-overflow: ellipsis;\n box-sizing: border-box;\n position: relative;\n overflow: hidden;\n pointer-events: none;\n}\n.calendar-month-picker-item.active-state,\n.calendar-year-picker-item.active-state {\n background: var(--f7-calendar-picker-pressed-bg-color);\n}\n.calendar-month-picker-item {\n padding: 5px;\n}\n.sheet-modal .calendar-month-picker-item {\n width: 25%;\n height: 33.33333333%;\n}\n.sheet-modal .calendar-month-picker-item:nth-child(4n + 1):before {\n display: none !important;\n}\n.sheet-modal .calendar-month-picker-item:nth-child(n + 9):after {\n display: none !important;\n}\n.popover .calendar-month-picker-item,\n.calendar-modal .calendar-month-picker-item {\n width: 33.33333333%;\n height: 25%;\n}\n.popover .calendar-month-picker-item:nth-child(3n + 1):before,\n.calendar-modal .calendar-month-picker-item:nth-child(3n + 1):before {\n display: none !important;\n}\n.popover .calendar-month-picker-item:nth-child(n + 10):after,\n.calendar-modal .calendar-month-picker-item:nth-child(n + 10):after {\n display: none !important;\n}\n.calendar-month-picker-item-current,\n.calendar-year-picker-item-current {\n color: var(--f7-calendar-picker-selected-text-color, var(--f7-theme-color));\n}\n.calendar-year-picker {\n overflow: auto;\n --webkit-overflow-scrolling: touch;\n}\n.calendar-year-picker-item {\n height: 34px;\n line-height: 34px;\n width: 100%;\n}\n.calendar-time-selector {\n flex-shrink: 0;\n font-size: var(--f7-calendar-time-selector-font-size);\n position: relative;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n}\n.calendar-time-selector a {\n overflow: hidden;\n position: relative;\n justify-content: center;\n align-items: center;\n display: flex;\n box-sizing: border-box;\n height: var(--f7-calendar-time-selector-height);\n background-color: var(--f7-calendar-time-selector-bg-color);\n padding: 0 16px;\n border-radius: 8px;\n}\n.calendar-time-selector > span {\n font-weight: 500;\n}\n.calendar-time-selector .segmented {\n margin-left: 8px;\n}\n.calendar-time-picker-popover,\n.calendar-year-picker-popover,\n.calendar-month-picker-popover {\n height: 240px;\n width: 240px;\n}\n.calendar-time-picker-popover .popover-inner,\n.calendar-year-picker-popover .popover-inner,\n.calendar-month-picker-popover .popover-inner {\n height: 100%;\n overflow: hidden;\n}\n.calendar-time-picker {\n --f7-picker-popover-height: 100%;\n --f7-picker-inline-height: 100%;\n}\n.calendar-time-picker .toolbar {\n flex-shrink: 0;\n top: 0 !important;\n}\n.calendar-time-picker .picker {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n/* === Picker === */\n:root {\n --f7-picker-height: 260px;\n --f7-picker-inline-height: 200px;\n --f7-picker-popover-height: 260px;\n --f7-picker-popover-width: 280px;\n --f7-picker-landscape-height: 200px;\n --f7-picker-item-height: 36px;\n /*\n --f7-picker-sheet-bg-color: var(--f7-sheet-bg-color);\n */\n}\n.ios {\n --f7-picker-column-font-size: 20px;\n --f7-picker-item-selected-text-color: #000;\n --f7-picker-item-selected-bg-color: rgba(0, 0, 0, 0.12);\n --f7-picker-divider-text-color: #000;\n --f7-picker-item-text-color: rgba(0, 0, 0, 0.45);\n}\n.ios .dark,\n.ios.dark {\n --f7-picker-item-selected-text-color: #fff;\n --f7-picker-item-selected-bg-color: rgba(255, 255, 255, 0.1);\n --f7-picker-divider-text-color: #fff;\n --f7-picker-item-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-picker-column-font-size: 20px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-picker-item-selected-text-color: var(--f7-md-on-surface);\n --f7-picker-item-text-color: var(--f7-md-on-surface-variant);\n --f7-picker-divider-text-color: var(--f7-md-on-surface);\n --f7-picker-item-selected-border-color: var(--f7-md-outline);\n}\n.picker {\n width: 100%;\n height: var(--f7-picker-height);\n}\n.picker.picker-inline {\n height: var(--f7-picker-inline-height);\n}\n.popover .picker {\n height: var(--f7-picker-popover-height);\n}\n@media (orientation: landscape) and (max-height: 415px) {\n .picker:not(.picker-inline) {\n height: var(--f7-picker-landscape-height);\n }\n}\n.picker.sheet-modal {\n background: var(--f7-picker-sheet-bg-color, var(--f7-sheet-bg-color));\n}\n.picker-popover {\n width: var(--f7-picker-popover-width);\n}\n.picker-popover .toolbar {\n background: none;\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n}\n.picker-popover .toolbar:before {\n display: none !important;\n}\n.picker-popover .toolbar + .picker-columns {\n height: calc(100% - var(--f7-toolbar-height));\n}\n.picker-columns {\n display: flex;\n overflow: hidden;\n justify-content: center;\n padding: 0;\n text-align: right;\n height: 100%;\n position: relative;\n font-size: var(--f7-picker-column-font-size);\n --f7-picker-mask-bg-color: transparent;\n}\n.popover .picker-columns {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.picker-columns::before,\n.picker-columns::after {\n content: '';\n position: absolute;\n left: 0;\n width: 100%;\n height: 20%;\n z-index: 100;\n pointer-events: none;\n}\n.page .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-page-bg-color);\n}\n.block-strong .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-block-strong-bg-color);\n}\n.picker-sheet .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-picker-sheet-bg-color, var(--f7-sheet-bg-color));\n}\n.picker-popover .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-popover-bg-color);\n}\n.picker-columns::before {\n top: 0;\n background-image: linear-gradient(to bottom, var(--f7-picker-mask-bg-color), transparent);\n}\n.picker-columns::after {\n bottom: 0;\n background-image: linear-gradient(to top, var(--f7-picker-mask-bg-color), transparent);\n}\n.picker-column {\n position: relative;\n max-height: 100%;\n z-index: 10;\n}\n.picker-column.picker-column-first.picker-column-last {\n width: 100%;\n}\n.picker-column.picker-column-left {\n text-align: left;\n}\n.picker-column.picker-column-center {\n text-align: center;\n}\n.picker-column.picker-column-right {\n text-align: right;\n}\n.picker-column.picker-column-divider {\n display: flex;\n align-items: center;\n color: var(--f7-picker-divider-text-color);\n}\n.picker-items {\n overflow: auto;\n scroll-snap-type: y mandatory;\n height: 100%;\n box-sizing: border-box;\n padding: var(--f7-picker-scroll-padding, 0px) 0px;\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.picker-items::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.picker-items::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.picker-items::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.picker-item {\n height: var(--f7-picker-item-height);\n line-height: var(--f7-picker-item-height);\n white-space: nowrap;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n left: 0;\n top: 0;\n width: 100%;\n box-sizing: border-box;\n color: var(--f7-picker-item-text-color);\n cursor: pointer;\n scroll-snap-align: center;\n}\n.picker-item span {\n padding: 0 10px;\n}\n.picker-item.picker-item-far {\n pointer-events: none;\n}\n.picker-item.picker-item-selected {\n color: var(--f7-picker-item-selected-text-color);\n transform: translate3d(0, 0, 0) rotateX(0deg);\n}\n.picker-column-free-mode .picker-item {\n scroll-snap-align: none;\n}\n.picker-center-highlight {\n height: var(--f7-picker-item-height);\n box-sizing: border-box;\n position: absolute;\n top: 50%;\n margin-top: calc(-1 * var(--f7-picker-item-height) / 2);\n pointer-events: none;\n}\n.picker-3d .picker-columns {\n overflow: hidden;\n}\n.picker-3d .picker-column,\n.picker-3d .picker-items,\n.picker-3d .picker-item {\n transform-style: preserve-3d;\n}\n.picker-3d .picker-column {\n overflow: visible;\n}\n.picker-3d .picker-item {\n perspective: 1200px;\n overflow: visible;\n}\n.picker-3d .picker-item > span {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n display: block;\n transform-style: preserve-3d;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n box-sizing: border-box;\n max-width: 100%;\n transform-origin: center center -100px;\n}\n.ios .picker-center-highlight {\n left: 16px;\n right: 16px;\n background-color: var(--f7-picker-item-selected-bg-color);\n border-radius: 8px;\n}\n.popover .ios .picker-center-highlight {\n left: 8px;\n right: 8px;\n}\n.md .picker-center-highlight {\n left: 0;\n right: 0;\n border-top: 1px solid var(--f7-md-outline);\n border-bottom: 1px solid var(--f7-md-outline);\n}\n/* === Infinite === */\n.infinite-scroll-preloader {\n margin-left: auto;\n margin-right: auto;\n text-align: center;\n}\n.infinite-scroll-preloader.preloader {\n display: block;\n}\n.ios .infinite-scroll-preloader {\n margin-top: 35px;\n margin-bottom: 35px;\n}\n.ios .infinite-scroll-preloader .preloader,\n.ios .infinite-scroll-preloader.preloader {\n width: 27px;\n height: 27px;\n}\n.md .infinite-scroll-preloader {\n margin-top: 32px;\n margin-bottom: 32px;\n}\n/* === PTR === */\n.ios {\n --f7-ptr-preloader-size: 28px;\n --f7-ptr-size: 44px;\n}\n.md {\n --f7-ptr-preloader-size: 22px;\n --f7-ptr-size: 40px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-ptr-preloader-bg-color: var(--f7-md-surface-1);\n --f7-ptr-preloader-color: var(--f7-md-primary);\n}\n.ptr-preloader {\n position: relative;\n top: var(--f7-ptr-top, 0);\n height: var(--f7-ptr-size);\n pointer-events: none;\n}\n.ptr-preloader .preloader {\n position: absolute;\n left: 50%;\n width: var(--f7-ptr-preloader-size);\n height: var(--f7-ptr-preloader-size);\n margin-left: calc(-1 * var(--f7-ptr-preloader-size) / 2);\n margin-top: calc(-1 * var(--f7-ptr-preloader-size) / 2);\n top: 50%;\n visibility: hidden;\n}\n.ptr-bottom .ptr-preloader {\n top: auto;\n bottom: 0;\n position: fixed;\n}\n.ptr-with-navbar-large-transparent .ptr-preloader,\n.ptr-with-navbar-transparent .ptr-preloader {\n top: calc(-1 * var(--f7-page-navbar-offset, 0px) + var(--f7-safe-area-top));\n}\n.ios .ptr-preloader {\n margin-bottom: calc(-1 * var(--f7-ptr-size));\n width: 100%;\n left: 0;\n top: 0;\n position: relative;\n}\n.ios .ptr-preloader .preloader {\n visibility: visible;\n}\n.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,\n.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner {\n animation: none;\n}\n.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up):not(.ptr-pull-down) .ptr-preloader .preloader-inner-line,\n.ios .ptr-content.ptr-closing .ptr-preloader .preloader-inner-line {\n opacity: 0 !important;\n}\n.ios .ptr-transitioning > *,\n.ios .ptr-refreshing > * {\n transition-duration: 200ms;\n transition-property: transform;\n}\n.ios .ptr-transitioning .ptr-preloader .preloader-inner-line {\n transition-duration: 200ms;\n}\n.ios .ptr-pull-up .ptr-preloader .preloader {\n animation: ios-ptr-preloader-spin 1s ease-out forwards;\n}\n.ios .ptr-refreshing:not(.ptr-bottom) {\n transform: none;\n}\n.ios .ptr-refreshing:not(.ptr-bottom) > * {\n transform: translate3d(0, var(--f7-ptr-size), 0);\n}\n.ios .ptr-refreshing:not(.ptr-bottom) > .ptr-preloader {\n transform: translate3d(0, 0, 0);\n}\n.ios .ptr-bottom .ptr-preloader {\n margin-bottom: 0;\n margin-top: calc(-1 * var(--f7-ptr-size));\n position: relative;\n}\n.ios .ptr-bottom.ptr-transitioning > *,\n.ios .ptr-bottom.ptr-refreshing > * {\n transition-duration: 300ms;\n transition-property: transform;\n}\n.ios .ptr-bottom.ptr-refreshing {\n transform: none;\n}\n.ios .ptr-bottom.ptr-refreshing > * {\n transform: translate3d(0, calc(-1 * var(--f7-ptr-size)), 0);\n}\n.ios .ptr-bottom.ptr-refreshing > .ptr-preloader {\n transform: translate3d(0, 0, 0);\n}\n@keyframes ios-ptr-preloader-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(135deg);\n }\n}\n.md {\n --f7-ptr-top: -4px;\n}\n.md .ptr-preloader {\n width: var(--f7-ptr-size);\n border-radius: 50%;\n background: var(--f7-ptr-preloader-bg-color);\n --f7-preloader-color: var(--f7-ptr-preloader-color);\n margin-top: calc(-1 * var(--f7-ptr-size));\n z-index: 100;\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\n right: 50%;\n margin-right: calc(-1 * var(--f7-ptr-size) / 2);\n}\n.md .ptr-preloader .preloader circle {\n stroke-width: 4;\n}\n.md .ptr-arrow {\n width: 22px;\n height: 22px;\n box-sizing: border-box;\n border: 3px solid var(--f7-preloader-color);\n position: absolute;\n left: 50%;\n top: 50%;\n margin-left: -11px;\n margin-top: -11px;\n border-left-color: transparent;\n border-radius: 50%;\n opacity: 1;\n transform: rotate(150deg);\n}\n.md .ptr-arrow:after {\n content: '';\n width: 0px;\n height: 0px;\n position: absolute;\n left: -5px;\n bottom: 0px;\n border-bottom-width: 6px;\n border-bottom-style: solid;\n border-bottom-color: inherit;\n border-left: 5px solid transparent;\n border-right: 5px solid transparent;\n transform: rotate(-40deg);\n}\n.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,\n.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner,\n.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader circle {\n animation: none;\n}\n.md .ptr-refreshing .ptr-preloader .preloader,\n.md .ptr-pull-up .ptr-preloader .preloader {\n visibility: visible;\n}\n.md .ptr-refreshing .ptr-arrow,\n.md .ptr-pull-up .ptr-arrow {\n visibility: hidden;\n}\n.md .ptr-refreshing .ptr-preloader {\n transform: translate3d(0, 66px, 0);\n}\n.md .ptr-transitioning .ptr-arrow {\n transition: 300ms;\n}\n.md .ptr-pull-up .ptr-arrow {\n transition: 400ms;\n transform: rotate(620deg) !important;\n opacity: 0;\n}\n.md .ptr-transitioning .ptr-preloader,\n.md .ptr-refreshing .ptr-preloader {\n transition-duration: 300ms;\n transition-property: transform, opacity;\n}\n.md .ptr-bottom .ptr-preloader {\n margin-top: 0;\n margin-bottom: calc(-1 * var(--f7-ptr-size) - 4px);\n}\n.md .ptr-bottom.ptr-refreshing .ptr-preloader {\n transform: translate3d(0, -66px, 0);\n}\n.md .ptr-with-navbar-large-transparent .ptr-preloader,\n.md .ptr-with-navbar-transparent .ptr-preloader {\n opacity: 0;\n}\n.md .ptr-with-navbar-large-transparent.ptr-pull-down .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-pull-down .ptr-preloader,\n.md .ptr-with-navbar-large-transparent.ptr-pull-up .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-pull-up .ptr-preloader,\n.md .ptr-with-navbar-large-transparent.ptr-refreshing .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-refreshing .ptr-preloader {\n opacity: 1;\n}\n.md .ptr-with-navbar-large-transparent.ptr-closing .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-closing .ptr-preloader {\n opacity: 0;\n transition-duration: 300ms;\n}\n/* === Data Table === */\n:root {\n --f7-table-head-font-size: 12px;\n --f7-table-body-font-size: 14px;\n --f7-table-footer-font-size: 12px;\n --f7-table-input-height: 24px;\n --f7-table-input-font-size: 14px;\n --f7-table-collapsible-cell-padding: 16px;\n --f7-table-link-icon-only-icon-size: 20px;\n --f7-table-head-bg-color: transparent;\n --f7-table-card-header-bg-color: transparent;\n --f7-table-card-header-height: 64px;\n --f7-table-cell-padding-vertical: 0px;\n --f7-table-sortable-icon-color: #000;\n}\n:root .dark,\n:root.dark {\n --f7-table-sortable-icon-color: #fff;\n --f7-table-input-text-color: #fff;\n}\n.ios {\n --f7-table-head-font-weight: 600;\n --f7-table-head-cell-height: 44px;\n --f7-table-head-icon-size: 18px;\n --f7-table-body-cell-height: 44px;\n --f7-table-cell-padding-horizontal: 16px;\n --f7-table-edge-cell-padding-horizontal: 16px;\n --f7-table-label-cell-padding-horizontal: 16px;\n --f7-table-checkbox-cell-width: 22px;\n /* --f7-table-actions-cell-link-color: var(--f7-theme-color); */\n /* --f7-table-actions-link-color: var(--f7-theme-color); */\n --f7-table-title-font-size: 17px;\n --f7-table-title-font-weight: 600;\n --f7-table-footer-height: 44px;\n --f7-table-head-text-color: rgba(0, 0, 0, 0.45);\n --f7-table-cell-border-color: rgba(0, 0, 0, 0.22);\n --f7-table-selected-row-bg-color: rgba(0, 0, 0, 0.03);\n --f7-table-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-table-input-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-table-head-text-color: rgba(255, 255, 255, 0.55);\n --f7-table-cell-border-color: rgba(255, 255, 255, 0.15);\n --f7-table-footer-text-color: rgba(255, 255, 255, 0.55);\n --f7-table-selected-row-bg-color: rgba(255, 255, 255, 0.08);\n}\n.md {\n --f7-table-head-font-weight: 500;\n --f7-table-head-cell-height: 56px;\n --f7-table-head-icon-size: 16px;\n --f7-table-body-cell-height: 48px;\n --f7-table-cell-padding-horizontal: 28px;\n --f7-table-edge-cell-padding-horizontal: 24px;\n --f7-table-label-cell-padding-horizontal: 24px;\n --f7-table-checkbox-cell-width: 18px;\n --f7-table-title-font-size: 20px;\n --f7-table-title-font-weight: 400;\n --f7-table-footer-height: 56px;\n --f7-table-actions-cell-link-color: rgba(0, 0, 0, 0.54);\n --f7-table-actions-link-color: rgba(0, 0, 0, 0.54);\n --f7-table-input-text-color: #212121;\n}\n.md .dark,\n.md.dark {\n --f7-table-actions-cell-link-color: rgba(255, 255, 255, 0.54);\n --f7-table-actions-link-color: rgba(255, 255, 255, 0.54);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-table-head-text-color: var(--f7-md-on-surface-variant);\n --f7-table-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-table-selected-row-bg-color: var(--f7-md-secondary-container);\n --f7-table-cell-border-color: var(--f7-md-outline);\n}\n.data-table {\n overflow-x: auto;\n}\n.data-table table,\ntable.data-table {\n width: 100%;\n border: none;\n padding: 0;\n margin: 0;\n border-collapse: collapse;\n text-align: right;\n}\n.data-table thead th,\n.data-table thead td {\n font-size: var(--f7-table-head-font-size);\n font-weight: var(--f7-table-head-font-weight);\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n line-height: 16px;\n height: var(--f7-table-head-cell-height);\n background-color: var(--f7-table-head-bg-color);\n}\n.data-table thead th:not(.sortable-cell-active),\n.data-table thead td:not(.sortable-cell-active) {\n color: var(--f7-table-head-text-color);\n}\n.data-table thead i.icon,\n.data-table thead i.f7-icons,\n.data-table thead i.material-icons {\n vertical-align: top;\n font-size: var(--f7-table-head-icon-size);\n}\n.data-table tbody {\n font-size: var(--f7-table-body-font-size);\n}\n.data-table tbody th,\n.data-table tbody td {\n height: var(--f7-table-body-cell-height);\n}\n.data-table tbody tr.data-table-row-selected,\n.device-desktop .data-table tbody tr:hover {\n background: var(--f7-table-selected-row-bg-color);\n}\n.data-table tbody td:before,\n.data-table tbody th:before {\n content: '';\n position: absolute;\n background-color: var(--f7-table-cell-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.data-table th,\n.data-table td {\n --f7-table-cell-padding-left: var(--f7-table-cell-padding-horizontal);\n --f7-table-cell-padding-right: var(--f7-table-cell-padding-horizontal);\n padding-top: var(--f7-table-cell-padding-vertical);\n padding-bottom: var(--f7-table-cell-padding-vertical);\n padding-left: var(--f7-table-cell-padding-left);\n padding-right: var(--f7-table-cell-padding-right);\n position: relative;\n box-sizing: border-box;\n}\n.data-table th:first-child,\n.data-table td:first-child {\n --f7-table-cell-padding-right: var(--f7-table-edge-cell-padding-horizontal);\n}\n.data-table th:last-child,\n.data-table td:last-child {\n --f7-table-cell-padding-left: var(--f7-table-edge-cell-padding-horizontal);\n}\n.data-table th.label-cell,\n.data-table td.label-cell {\n --f7-table-cell-padding-left: var(--f7-table-label-cell-padding-horizontal);\n --f7-table-cell-padding-right: var(--f7-table-label-cell-padding-horizontal);\n}\n.data-table th.numeric-cell,\n.data-table td.numeric-cell {\n text-align: left;\n}\n.data-table th.checkbox-cell,\n.data-table td.checkbox-cell {\n overflow: visible;\n width: var(--f7-table-checkbox-cell-width);\n}\n.data-table th.checkbox-cell label + span,\n.data-table td.checkbox-cell label + span {\n margin-right: 8px;\n}\n.data-table th.checkbox-cell:first-child,\n.data-table td.checkbox-cell:first-child {\n padding-left: calc(var(--f7-table-cell-padding-left) / 2);\n}\n.data-table th.checkbox-cell:first-child + td,\n.data-table td.checkbox-cell:first-child + td,\n.data-table th.checkbox-cell:first-child + th,\n.data-table td.checkbox-cell:first-child + th {\n padding-right: calc(var(--f7-table-cell-padding-right) / 2);\n}\n.data-table th.checkbox-cell:last-child,\n.data-table td.checkbox-cell:last-child {\n padding-right: calc(var(--f7-table-cell-padding-right) / 2);\n}\n.data-table th.actions-cell,\n.data-table td.actions-cell {\n text-align: left;\n white-space: nowrap;\n}\n.data-table th.actions-cell a.link,\n.data-table td.actions-cell a.link {\n color: var(--f7-table-actions-cell-link-color, var(--f7-theme-color));\n}\n.data-table th a.icon-only,\n.data-table td a.icon-only,\n.card .data-table th a.icon-only,\n.card .data-table td a.icon-only,\n.card.data-table th a.icon-only,\n.card.data-table td a.icon-only {\n display: inline-block;\n vertical-align: middle;\n text-align: center;\n font-size: 0;\n min-width: 0;\n}\n.data-table th a.icon-only i,\n.data-table td a.icon-only i,\n.card .data-table th a.icon-only i,\n.card .data-table td a.icon-only i,\n.card.data-table th a.icon-only i,\n.card.data-table td a.icon-only i {\n font-size: var(--f7-table-link-icon-only-icon-size);\n vertical-align: middle;\n}\n.data-table .sortable-cell:not(.input-cell) {\n cursor: pointer;\n position: relative;\n}\n.data-table .sortable-cell.input-cell .table-head-label {\n cursor: pointer;\n position: relative;\n}\n.data-table .sortable-cell:not(.numeric-cell):not(.input-cell):after,\n.data-table .sortable-cell.numeric-cell:not(.input-cell):before,\n.data-table .sortable-cell:not(.numeric-cell).input-cell > .table-head-label:after,\n.data-table .sortable-cell.numeric-cell.input-cell > .table-head-label:before {\n content: 'arrow_bottom_md';\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n display: inline-block;\n vertical-align: top;\n width: 16px;\n height: 16px;\n color: var(--f7-table-sortable-icon-color);\n font-size: 13px;\n line-height: 16px;\n transition-duration: 300ms;\n transform: rotate(0);\n opacity: 0;\n}\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:after,\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:after,\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:before,\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:before {\n opacity: 0.54;\n}\n.data-table .sortable-cell.sortable-cell-active:after,\n.data-table .sortable-cell.sortable-cell-active .table-head-label:after,\n.data-table .sortable-cell.sortable-cell-active:before,\n.data-table .sortable-cell.sortable-cell-active .table-head-label:before {\n opacity: 0.87 !important;\n}\n.data-table .sortable-cell.sortable-desc:after,\n.data-table .sortable-cell.sortable-desc:after,\n.data-table .table-head-label:after,\n.data-table .sortable-cell.sortable-desc:before,\n.data-table .sortable-cell.sortable-desc:before,\n.data-table .table-head-label:before {\n transform: rotate(180deg) !important;\n}\n.data-table.card .card-header,\n.card .data-table .card-header,\n.data-table.card .card-footer,\n.card .data-table .card-footer {\n padding-left: var(--f7-table-edge-cell-padding-horizontal);\n padding-right: var(--f7-table-edge-cell-padding-horizontal);\n}\n.data-table.card .card-header,\n.card .data-table .card-header {\n min-height: var(--f7-table-card-header-height);\n background-color: var(--f7-table-card-header-bg-color);\n}\n.data-table.card .card-content,\n.card .data-table .card-content {\n overflow-x: auto;\n}\n.data-table.card .card-footer,\n.card .data-table .card-footer {\n min-height: var(--f7-table-footer-height);\n}\n.data-table .data-table-title {\n font-size: var(--f7-table-title-font-size);\n font-weight: var(--f7-table-title-font-weight);\n}\n.data-table .data-table-links,\n.data-table .data-table-actions {\n display: flex;\n}\n.data-table .data-table-links .button {\n min-width: 64px;\n}\n.data-table .data-table-actions {\n margin-right: auto;\n align-items: center;\n}\n.data-table .data-table-actions a.link {\n color: var(--f7-table-actions-link-color, var(--f7-theme-color));\n min-width: 0;\n}\n.data-table .data-table-actions a.link.icon-only {\n line-height: 1;\n justify-content: center;\n padding: 0;\n}\n.data-table .data-table-header,\n.data-table .data-table-header-selected {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n}\n.data-table .card-header > .data-table-header,\n.data-table .card-header > .data-table-header-selected {\n padding-top: var(--f7-card-header-padding-vertical);\n padding-bottom: var(--f7-card-header-padding-vertical);\n height: 100%;\n margin-top: calc(-1 * var(--f7-card-header-padding-vertical));\n margin-bottom: calc(-1 * var(--f7-card-header-padding-vertical));\n min-height: var(--f7-table-card-header-height);\n padding-right: var(--f7-table-edge-cell-padding-horizontal);\n padding-left: var(--f7-table-edge-cell-padding-horizontal);\n margin-right: calc(-1 * var(--f7-table-edge-cell-padding-horizontal));\n margin-left: calc(-1 * var(--f7-table-edge-cell-padding-horizontal));\n}\n.data-table .data-table-header-selected {\n background: rgba(var(--f7-theme-color-rgb), 0.1);\n display: none;\n}\n.data-table.data-table-has-checked .data-table-header {\n display: none;\n}\n.data-table.data-table-has-checked .data-table-header-selected {\n display: flex;\n}\n.data-table .data-table-title-selected {\n font-size: 14px;\n color: var(--f7-theme-color);\n}\n.data-table .data-table-footer {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n position: relative;\n font-size: var(--f7-table-footer-font-size);\n overflow: hidden;\n min-height: var(--f7-table-footer-height);\n color: var(--f7-table-footer-text-color);\n justify-content: flex-start;\n}\n.data-table .data-table-footer:before {\n content: '';\n position: absolute;\n background-color: var(--f7-table-cell-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.data-table .data-table-rows-select,\n.data-table .data-table-pagination {\n display: flex;\n align-items: center;\n}\n.data-table .input-cell {\n padding-top: 8px;\n padding-bottom: 8px;\n height: auto;\n vertical-align: top;\n}\n.data-table .input-cell .table-head-label + .input {\n margin-top: 4px;\n}\n.data-table .input-cell .input {\n height: var(--f7-table-input-height);\n}\n.data-table .input-cell .input input,\n.data-table .input-cell .input textarea,\n.data-table .input-cell .input select {\n height: var(--f7-table-input-height);\n color: var(--f7-table-input-text-color);\n font-size: var(--f7-table-input-font-size);\n}\n@media (max-width: 480px) and (orientation: portrait) {\n .data-table.data-table-collapsible thead {\n display: none;\n }\n .data-table.data-table-collapsible tbody,\n .data-table.data-table-collapsible tr,\n .data-table.data-table-collapsible td {\n display: block;\n }\n .data-table.data-table-collapsible tr {\n position: relative;\n }\n .data-table.data-table-collapsible tr:before {\n content: '';\n position: absolute;\n background-color: var(--f7-table-cell-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n .data-table.data-table-collapsible tr:hover {\n background-color: inherit;\n }\n .data-table.data-table-collapsible td {\n --f7-table-cell-padding-left: var(--f7-table-collapsible-cell-padding);\n --f7-table-cell-padding-right: var(--f7-table-collapsible-cell-padding);\n height: auto;\n min-height: var(--f7-table-body-cell-height);\n display: flex;\n align-content: center;\n align-items: center;\n justify-content: flex-start;\n text-align: right;\n }\n .data-table.data-table-collapsible td:before {\n display: none !important;\n }\n .data-table.data-table-collapsible td:not(.checkbox-cell):before {\n width: 40%;\n display: block !important;\n content: attr(data-collapsible-title);\n position: relative;\n height: auto;\n background: none !important;\n transform: none !important;\n font-size: var(--f7-table-head-font-size);\n font-weight: var(--f7-table-head-font-weight);\n color: var(--f7-table-head-text-color);\n margin-left: 16px;\n flex-shrink: 0;\n }\n .data-table.data-table-collapsible td.checkbox-cell {\n position: absolute;\n top: 0;\n right: 0;\n }\n .data-table.data-table-collapsible td.checkbox-cell + td {\n padding-right: 16px;\n }\n .data-table.data-table-collapsible td.checkbox-cell ~ td {\n margin-right: 32px;\n }\n}\n.data-table .xsmall-only,\n.data-table .xsmall-landscape-only {\n display: none;\n}\n@media (min-width: 480px) {\n .data-table .xsmall-only {\n display: table-cell;\n }\n}\n@media (min-width: 480px) and (orientation: landscape) {\n .data-table .xsmall-landscape-only {\n display: table-cell;\n }\n}\n.data-table .small-only,\n.data-table .small-landscape-only {\n display: none;\n}\n@media (min-width: 568px) {\n .data-table .small-only {\n display: table-cell;\n }\n}\n@media (min-width: 568px) and (orientation: landscape) {\n .data-table .small-landscape-only {\n display: table-cell;\n }\n}\n.data-table .medium-only,\n.data-table .medium-landscape-only {\n display: none;\n}\n@media (min-width: 768px) {\n .data-table .medium-only {\n display: table-cell;\n }\n}\n@media (min-width: 768px) and (orientation: landscape) {\n .data-table .medium-landscape-only {\n display: table-cell;\n }\n}\n.data-table .large-only,\n.data-table .large-landscape-only {\n display: none;\n}\n@media (min-width: 1024px) {\n .data-table .large-only {\n display: table-cell;\n }\n}\n@media (min-width: 1024px) and (orientation: landscape) {\n .data-table .large-landscape-only {\n display: table-cell;\n }\n}\n.data-table .xlarge-only,\n.data-table .xlarge-landscape-only {\n display: none;\n}\n@media (min-width: 1200px) {\n .data-table .xlarge-only {\n display: table-cell;\n }\n}\n@media (min-width: 1200px) and (orientation: landscape) {\n .data-table .xlarge-landscape-only {\n display: table-cell;\n }\n}\n.ios .data-table th.actions-cell a.link + a.link,\n.ios .data-table td.actions-cell a.link + a.link {\n margin-right: 16px;\n}\n.ios .sortable-cell:not(.numeric-cell):after {\n margin-right: 5px;\n}\n.ios .sortable-cell.numeric-cell:before {\n margin-left: 5px;\n}\n.ios .data-table-links a.link + a.link,\n.ios .data-table-actions a.link + a.link,\n.ios .data-table-links .button + .button,\n.ios .data-table-actions .button + .button {\n margin-right: 16px;\n}\n.ios .data-table-actions a.link.icon-only {\n width: 44px;\n height: 44px;\n}\n.ios .data-table-rows-select a.link,\n.ios .data-table-pagination a.link {\n width: 44px;\n height: 44px;\n}\n.ios .data-table-rows-select + .data-table-pagination {\n margin-right: 30px;\n}\n.ios .data-table-rows-select .input {\n margin-right: 20px;\n}\n.ios .data-table-pagination-label {\n margin-left: 16px;\n}\n.md .data-table th.actions-cell a.link + a.link,\n.md .data-table td.actions-cell a.link + a.link {\n margin-right: 24px;\n}\n.md .data-table th.actions-cell a.icon-only,\n.md .data-table td.actions-cell a.icon-only {\n width: 24px;\n height: 24px;\n line-height: 24px;\n}\n.md .sortable-cell:not(.numeric-cell):after {\n margin-right: 8px;\n}\n.md .sortable-cell.numeric-cell:before {\n margin-left: 8px;\n}\n.md .data-table-links a.link + a.link,\n.md .data-table-actions a.link + a.link,\n.md .data-table-links .button + .button,\n.md .data-table-actions .button + .button {\n margin-right: 24px;\n}\n.md .data-table-actions a.link.icon-only {\n width: 24px;\n height: 24px;\n overflow: visible;\n}\n.md .data-table-actions a.link.icon-only.active-state {\n background: none;\n}\n.md .data-table-rows-select a.link,\n.md .data-table-pagination a.link {\n width: 48px;\n height: 48px;\n}\n.md .data-table-rows-select + .data-table-pagination {\n margin-right: 32px;\n}\n.md .data-table-rows-select .input {\n margin-right: 24px;\n}\n.md .data-table-pagination-label {\n margin-left: 20px;\n}\n.md .input-cell .input-clear-button {\n transform: scale(0.8);\n}\n/* === FAB === */\n:root {\n --f7-fab-margin: 16px;\n --f7-fab-extended-text-font-size: 14px;\n --f7-fab-label-padding: 4px 12px;\n --f7-fab-label-font-size: inherit;\n --f7-fab-button-size: 40px;\n}\n.ios {\n /* --f7-fab-pressed-bg-color: var(--f7-theme-color-shade); */\n /* --f7-fab-bg-color: var(--f7-theme-color)); */\n --f7-fab-text-color: #fff;\n --f7-fab-border-radius: 50px;\n --f7-fab-size: 50px;\n --f7-fab-box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.4);\n --f7-fab-extended-text-transform: uppercase;\n --f7-fab-extended-size: 50px;\n --f7-fab-extended-text-padding: 0 20px;\n --f7-fab-extended-text-font-weight: 600;\n --f7-fab-extended-text-letter-spacing: 0;\n --f7-fab-label-border-radius: 4px;\n --f7-fab-label-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.4);\n --f7-fab-label-text-color: #333;\n --f7-fab-label-bg-color: #fff;\n}\n.md {\n /*\n --f7-fab-pressed-bg-color: var(--f7-fab-bg-color, var(--f7-theme-color));\n */\n --f7-fab-border-radius: 16px;\n --f7-fab-size: 56px;\n --f7-fab-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.25);\n --f7-fab-extended-size: 56px;\n --f7-fab-extended-text-padding: 0 16px;\n --f7-fab-extended-text-font-weight: 500;\n --f7-fab-extended-text-letter-spacing: 0;\n --f7-fab-extended-text-transform: none;\n --f7-fab-label-border-radius: 8px;\n --f7-fab-label-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.25);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-fab-bg-color: var(--f7-md-primary-container);\n --f7-fab-text-color: var(--f7-md-on-primary-container);\n --f7-fab-label-text-color: var(--f7-md-on-surface);\n --f7-fab-label-bg-color: var(--f7-md-surface-5);\n}\n.fab-backdrop {\n z-index: 1400;\n}\n.fab {\n position: absolute;\n z-index: 1500;\n}\n.fab a {\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.fab-left-top,\n.fab-left-center,\n.fab-left-bottom {\n left: calc(var(--f7-fab-margin) + var(--f7-safe-area-left));\n}\n.fab-right-top,\n.fab-right-center,\n.fab-right-bottom {\n right: calc(var(--f7-fab-margin) + var(--f7-safe-area-right));\n}\n.fab-left-top,\n.fab-center-top,\n.fab-right-top {\n top: var(--f7-fab-margin);\n}\n.fab-left-bottom,\n.fab-center-bottom,\n.fab-right-bottom {\n bottom: calc(var(--f7-fab-margin) + var(--f7-safe-area-bottom));\n}\n.fab-center-top,\n.fab-center-center,\n.fab-center-bottom {\n left: 50%;\n transform: translateX(-50%);\n}\n.fab-left-center,\n.fab-center-center,\n.fab-right-center {\n top: 50%;\n transform: translateY(-50%);\n}\n.fab-center-center {\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n}\n.fab > a,\n.fab-buttons a {\n background-color: var(--f7-fab-bg-color, var(--f7-theme-color));\n width: var(--f7-fab-size);\n height: var(--f7-fab-size);\n box-shadow: var(--f7-fab-box-shadow);\n border-radius: var(--f7-fab-border-radius);\n position: relative;\n transition-duration: 300ms;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n z-index: 1;\n color: var(--f7-fab-text-color);\n}\n.fab > a i {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate3d(-50%, -50%, 0) rotate(0deg) scale(1);\n transition: 300ms;\n}\n.fab > a i + i {\n transform: translate3d(-50%, -50%, 0) rotate(-90deg) scale(0.5);\n opacity: 0;\n}\n.fab-buttons a {\n border-radius: var(--f7-fab-border-radius);\n width: var(--f7-fab-button-size);\n height: var(--f7-fab-button-size);\n}\n.fab-buttons {\n display: flex;\n visibility: hidden;\n pointer-events: none;\n position: absolute;\n}\n.fab-buttons a {\n opacity: 0;\n}\n.fab-opened:not(.fab-morph) > a i {\n transform: translate3d(-50%, -50%, 0) rotate(90deg) scale(0.5);\n opacity: 0;\n}\n.fab-opened:not(.fab-morph) > a i + i {\n transform: translate3d(-50%, -50%, 0) rotate(0deg) scale(1);\n opacity: 1;\n}\n.fab-opened .fab-buttons {\n visibility: visible;\n pointer-events: auto;\n}\n.fab-opened .fab-buttons a {\n opacity: 1;\n transform: translate3d(0, 0px, 0) scale(1) !important;\n}\n.fab-opened .fab-buttons a:nth-child(2) {\n transition-delay: 50ms;\n}\n.fab-opened .fab-buttons a:nth-child(3) {\n transition-delay: 100ms;\n}\n.fab-opened .fab-buttons a:nth-child(4) {\n transition-delay: 150ms;\n}\n.fab-opened .fab-buttons a:nth-child(5) {\n transition-delay: 200ms;\n}\n.fab-opened .fab-buttons a:nth-child(6) {\n transition-delay: 250ms;\n}\n.fab-buttons-top,\n.fab-buttons-bottom {\n left: 50%;\n width: var(--f7-fab-button-size);\n margin-left: calc(-1 * var(--f7-fab-button-size) / 2);\n}\n.fab-buttons-top {\n bottom: 100%;\n margin-bottom: 16px;\n flex-direction: column-reverse;\n}\n.fab-buttons-top a {\n transform: translate3d(0, 8px, 0) scale(0.3);\n transform-origin: center bottom;\n}\n.fab-buttons-top a + a {\n margin-bottom: 16px;\n}\n.fab-buttons-bottom {\n top: 100%;\n margin-top: 16px;\n flex-direction: column;\n}\n.fab-buttons-bottom a {\n transform: translate3d(0, -8px, 0) scale(0.3);\n transform-origin: center top;\n}\n.fab-buttons-bottom a + a {\n margin-top: 16px;\n}\n.fab-buttons-left,\n.fab-buttons-right {\n top: 50%;\n height: var(--f7-fab-button-size);\n margin-top: calc(-1 * var(--f7-fab-button-size) / 2);\n}\n.fab-buttons-left {\n right: 100%;\n margin-right: 16px;\n}\n.fab-buttons-left a {\n transform: translate3d(8px, 0px, 0) scale(0.3);\n transform-origin: right center;\n}\n.fab-buttons-left a + a {\n margin-right: 16px;\n}\n.fab-buttons-right {\n left: 100%;\n margin-left: 16px;\n flex-direction: row-reverse;\n}\n.fab-buttons-right a {\n transform: translate3d(-8px, 0, 0) scale(0.3);\n transform-origin: left center;\n}\n.fab-buttons-right a + a {\n margin-left: 16px;\n}\n.fab-buttons-center {\n left: 0%;\n top: 0%;\n width: 100%;\n height: 100%;\n}\n.fab-buttons-center a {\n position: absolute;\n}\n.fab-buttons-center a:nth-child(1) {\n left: 50%;\n margin-left: calc(-1 * var(--f7-fab-button-size) / 2);\n bottom: 100%;\n margin-bottom: 16px;\n transform: translateY(-8px) scale(0.3);\n transform-origin: center bottom;\n}\n.fab-buttons-center a:nth-child(2) {\n left: 100%;\n margin-top: calc(-1 * var(--f7-fab-button-size) / 2);\n top: 50%;\n margin-left: 16px;\n transform: translateX(-8px) scale(0.3);\n transform-origin: left center;\n}\n.fab-buttons-center a:nth-child(3) {\n left: 50%;\n margin-left: calc(-1 * var(--f7-fab-button-size) / 2);\n top: 100%;\n margin-top: 16px;\n transform: translateY(8px) scale(0.3);\n transform-origin: center top;\n}\n.fab-buttons-center a:nth-child(4) {\n right: 100%;\n margin-top: calc(-1 * var(--f7-fab-button-size) / 2);\n top: 50%;\n margin-right: 16px;\n transform: translateX(8px) scale(0.3);\n transform-origin: right center;\n}\n.fab-morph {\n border-radius: var(--f7-fab-border-radius);\n background: var(--f7-fab-bg-color, var(--f7-theme-color));\n box-shadow: var(--f7-fab-box-shadow);\n}\n.fab-morph > a {\n box-shadow: none;\n background: none !important;\n}\n.fab-opened.fab-morph > a i {\n opacity: 0;\n}\n.fab-morph,\n.fab-morph > a,\n.fab-morph-target {\n transition-duration: 250ms;\n}\n.fab-morph-target:not(.fab-morph-target-visible) {\n display: none;\n}\n.fab-extended {\n width: auto;\n min-width: var(--f7-fab-extended-size);\n}\n.fab-extended > a {\n width: 100%;\n height: var(--f7-fab-extended-size);\n}\n.fab-extended > a i {\n left: calc(var(--f7-fab-extended-size) / 2);\n}\n.fab-extended i ~ .fab-text {\n padding-left: var(--f7-fab-extended-size);\n}\n.fab-extended > a {\n width: 100% !important;\n}\n.fab-text {\n box-sizing: border-box;\n font-size: var(--f7-fab-extended-text-font-size);\n padding: var(--f7-fab-extended-text-padding);\n font-weight: var(--f7-fab-extended-text-font-weight);\n letter-spacing: var(--f7-fab-extended-text-letter-spacing);\n text-transform: var(--f7-fab-extended-text-transform);\n}\n.fab-label-button {\n overflow: visible !important;\n}\n.fab-label {\n position: absolute;\n top: 50%;\n padding: var(--f7-fab-label-padding);\n border-radius: var(--f7-fab-label-border-radius);\n background: var(--f7-fab-label-bg-color);\n color: var(--f7-fab-label-text-color);\n box-shadow: var(--f7-fab-label-box-shadow);\n white-space: nowrap;\n transform: translateY(-50%);\n pointer-events: none;\n font-size: var(--f7-fab-label-font-size);\n}\n.fab-right-top .fab-label,\n.fab-right-center .fab-label,\n.fab-right-bottom .fab-label {\n right: 100%;\n margin-right: 8px;\n}\n.fab-left-top .fab-label,\n.fab-left-center .fab-label,\n.fab-left-bottom .fab-label {\n left: 100%;\n margin-left: 8px;\n}\n.navbar ~ * .fab-left-top,\n.navbar ~ * .fab-center-top,\n.navbar ~ * .fab-right-top,\n.navbar ~ .fab-left-top,\n.navbar ~ .fab-center-top,\n.navbar ~ .fab-right-top,\n.navbars ~ * .fab-left-top,\n.navbars ~ * .fab-center-top,\n.navbars ~ * .fab-right-top,\n.navbars ~ .fab-left-top,\n.navbars ~ .fab-center-top,\n.navbars ~ .fab-right-top {\n margin-top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.toolbar-top ~ * .fab-left-top,\n.toolbar-top ~ * .fab-center-top,\n.toolbar-top ~ * .fab-right-top,\n.toolbar-top ~ .fab-left-top,\n.toolbar-top ~ .fab-center-top,\n.toolbar-top ~ .fab-right-top,\n.ios .toolbar-top-ios ~ * .fab-left-top,\n.ios .toolbar-top-ios ~ * .fab-center-top,\n.ios .toolbar-top-ios ~ * .fab-right-top,\n.ios .toolbar-top-ios ~ .fab-left-top,\n.ios .toolbar-top-ios ~ .fab-center-top,\n.ios .toolbar-top-ios ~ .fab-right-top,\n.md .toolbar-top-md ~ * .fab-left-top,\n.md .toolbar-top-md ~ * .fab-center-top,\n.md .toolbar-top-md ~ * .fab-right-top,\n.md .toolbar-top-md ~ .fab-left-top,\n.md .toolbar-top-md ~ .fab-center-top,\n.md .toolbar-top-md ~ .fab-right-top {\n margin-top: var(--f7-toolbar-height);\n}\n.toolbar-bottom ~ * .fab-left-bottom,\n.toolbar-bottom ~ * .fab-center-bottom,\n.toolbar-bottom ~ * .fab-right-bottom,\n.toolbar-bottom ~ .fab-left-bottom,\n.toolbar-bottom ~ .fab-center-bottom,\n.toolbar-bottom ~ .fab-right-bottom,\n.ios .toolbar-bottom-ios ~ * .fab-left-bottom,\n.ios .toolbar-bottom-ios ~ * .fab-center-bottom,\n.ios .toolbar-bottom-ios ~ * .fab-right-bottom,\n.ios .toolbar-bottom-ios ~ .fab-left-bottom,\n.ios .toolbar-bottom-ios ~ .fab-center-bottom,\n.ios .toolbar-bottom-ios ~ .fab-right-bottom,\n.md .toolbar-bottom-md ~ * .fab-left-bottom,\n.md .toolbar-bottom-md ~ * .fab-center-bottom,\n.md .toolbar-bottom-md ~ * .fab-right-bottom,\n.md .toolbar-bottom-md ~ .fab-left-bottom,\n.md .toolbar-bottom-md ~ .fab-center-bottom,\n.md .toolbar-bottom-md ~ .fab-right-bottom {\n margin-bottom: var(--f7-toolbar-height);\n}\n.tabbar-icons.toolbar-bottom ~ * .fab-left-bottom,\n.tabbar-icons.toolbar-bottom ~ * .fab-center-bottom,\n.tabbar-icons.toolbar-bottom ~ * .fab-right-bottom,\n.tabbar-icons.toolbar-bottom ~ .fab-left-bottom,\n.tabbar-icons.toolbar-bottom ~ .fab-center-bottom,\n.tabbar-icons.toolbar-bottom ~ .fab-right-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ * .fab-left-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ * .fab-center-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ * .fab-right-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ .fab-left-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ .fab-center-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ .fab-right-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ * .fab-left-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ * .fab-center-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ * .fab-right-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ .fab-left-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ .fab-center-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ .fab-right-bottom {\n margin-bottom: var(--f7-tabbar-icons-height);\n}\n.tabbar-icons.toolbar-top ~ * .fab-left-bottom,\n.tabbar-icons.toolbar-top ~ * .fab-center-bottom,\n.tabbar-icons.toolbar-top ~ * .fab-right-bottom,\n.tabbar-icons.toolbar-top ~ .fab-left-bottom,\n.tabbar-icons.toolbar-top ~ .fab-center-bottom,\n.tabbar-icons.toolbar-top ~ .fab-right-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ * .fab-left-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ * .fab-center-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ * .fab-right-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ .fab-left-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ .fab-center-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ .fab-right-bottom,\n.md .tabbar-icons.toolbar-top-md ~ * .fab-left-bottom,\n.md .tabbar-icons.toolbar-top-md ~ * .fab-center-bottom,\n.md .tabbar-icons.toolbar-top-md ~ * .fab-right-bottom,\n.md .tabbar-icons.toolbar-top-md ~ .fab-left-bottom,\n.md .tabbar-icons.toolbar-top-md ~ .fab-center-bottom,\n.md .tabbar-icons.toolbar-top-md ~ .fab-right-bottom {\n margin-top: var(--f7-tabbar-icons-height);\n}\n.messagebar ~ * .fab-left-bottom,\n.messagebar ~ * .fab-center-bottom,\n.messagebar ~ * .fab-right-bottom,\n.messagebar ~ .fab-left-bottom,\n.messagebar ~ .fab-center-bottom,\n.messagebar ~ .fab-right-bottom {\n margin-bottom: var(--f7-messagebar-height);\n}\n.navbar + .toolbar-top ~ * .fab-left-top,\n.ios .navbar + .toolbar-top-ios ~ * .fab-left-top,\n.md .navbar + .toolbar-top-ios ~ * .fab-left-top,\n.navbar + .toolbar-top ~ * .fab-center-top,\n.ios .navbar + .toolbar-top-ios ~ * .fab-center-top,\n.md .navbar + .toolbar-top-ios ~ * .fab-center-top,\n.navbar + .toolbar-top ~ * .fab-right-top,\n.ios .navbar + .toolbar-top-ios ~ * .fab-right-top,\n.md .navbar + .toolbar-top-ios ~ * .fab-right-top,\n.navbar + .toolbar-top ~ .fab-left-top,\n.ios .navbar + .toolbar-top-ios ~ .fab-left-top,\n.md .navbar + .toolbar-top-ios ~ .fab-left-top,\n.navbar + .toolbar-top ~ .fab-center-top,\n.ios .navbar + .toolbar-top-ios ~ .fab-center-top,\n.md .navbar + .toolbar-top-ios ~ .fab-center-top,\n.navbar + .toolbar-top ~ .fab-right-top,\n.ios .navbar + .toolbar-top-ios ~ .fab-right-top,\n.md .navbar + .toolbar-top-ios ~ .fab-right-top {\n margin-top: calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar + .toolbar-top.tabbar-icons ~ * .fab-left-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-left-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-left-top,\n.navbar + .toolbar-top.tabbar-icons ~ * .fab-center-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-center-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-center-top,\n.navbar + .toolbar-top.tabbar-icons ~ * .fab-right-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-right-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-right-top,\n.navbar + .toolbar-top.tabbar-icons ~ .fab-left-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-left-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-left-top,\n.navbar + .toolbar-top.tabbar-icons ~ .fab-center-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-center-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-center-top,\n.navbar + .toolbar-top.tabbar-icons ~ .fab-right-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-right-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-right-top {\n margin-top: calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbars + .toolbar-top ~ * .fab-left-top,\n.ios .navbars + .toolbar-top-ios ~ * .fab-left-top,\n.navbars + .toolbar-top ~ * .fab-center-top,\n.ios .navbars + .toolbar-top-ios ~ * .fab-center-top,\n.navbars + .toolbar-top ~ * .fab-right-top,\n.ios .navbars + .toolbar-top-ios ~ * .fab-right-top,\n.navbars + .toolbar-top ~ .fab-left-top,\n.ios .navbars + .toolbar-top-ios ~ .fab-left-top,\n.navbars + .toolbar-top ~ .fab-center-top,\n.ios .navbars + .toolbar-top-ios ~ .fab-center-top,\n.navbars + .toolbar-top ~ .fab-right-top,\n.ios .navbars + .toolbar-top-ios ~ .fab-right-top {\n margin-top: calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbars + .toolbar-top.tabbar-icons ~ * .fab-left-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ * .fab-left-top,\n.navbars + .toolbar-top.tabbar-icons ~ * .fab-center-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ * .fab-center-top,\n.navbars + .toolbar-top.tabbar-icons ~ * .fab-right-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ * .fab-right-top,\n.navbars + .toolbar-top.tabbar-icons ~ .fab-left-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ .fab-left-top,\n.navbars + .toolbar-top.tabbar-icons ~ .fab-center-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ .fab-center-top,\n.navbars + .toolbar-top.tabbar-icons ~ .fab-right-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ .fab-right-top {\n margin-top: calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.ios .fab > a.active-state,\n.ios .fab-buttons a.active-state {\n transition-duration: 0ms;\n background-color: var(--f7-fab-pressed-bg-color, var(--f7-theme-color-shade));\n}\n.md .fab > a.active-state,\n.md .fab-buttons a.active-state {\n background-color: var(--f7-fab-pressed-bg-color, var(--f7-fab-bg-color, var(--f7-theme-color)));\n}\n/* === Searchbar === */\n:root {\n /*\n --f7-searchbar-link-color: var(--f7-bars-link-color);\n --f7-searchbar-inline-input-font-size: var(--f7-searchbar-input-font-size);\n */\n --f7-searchbar-input-border-width: 0px;\n --f7-searchbar-input-border-color: transparent;\n}\n.ios {\n /*\n --f7-searchbar-bg-color: var(--f7-bars-bg-color);\n --f7-searchbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-searchbar-border-color: var(--f7-bars-border-color);\n */\n --f7-searchbar-height: 44px;\n --f7-searchbar-inner-padding-left: 8px;\n --f7-searchbar-inner-padding-right: 8px;\n /*\n --f7-searchbar-link-color: var(--f7-bars-link-color, var(--f7-theme-color));\n */\n --f7-searchbar-input-font-size: 17px;\n --f7-searchbar-input-border-radius: 8px;\n --f7-searchbar-input-height: 32px;\n --f7-searchbar-inline-input-height: 32px;\n /*\n --f7-searchbar-inline-input-border-radius: var(--f7-searchbar-input-border-radius);\n */\n --f7-searchbar-input-padding-horizontal: 28px;\n /*\n --f7-searchbar-inline-input-padding-horizontal: var(--f7-searchbar-input-padding-horizontal);\n --f7-searchbar-input-clear-button-color: var(--f7-input-clear-button-color);\n */\n --f7-searchbar-backdrop-bg-color: rgba(0, 0, 0, 0.4);\n --f7-searchbar-in-page-content-margin: 0px;\n --f7-searchbar-in-page-content-box-shadow: none;\n --f7-searchbar-in-page-content-border-radius: 0;\n --f7-searchbar-in-page-content-input-border-radius: 0;\n --f7-searchbar-placeholder-color: rgba(0, 0, 0, 0.4);\n --f7-searchbar-input-text-color: #000;\n --f7-searchbar-search-icon-color: rgba(0, 0, 0, 0.4);\n --f7-searchbar-input-bg-color: #e4e4e4;\n}\n.ios .dark,\n.ios.dark {\n --f7-searchbar-placeholder-color: rgba(255, 255, 255, 0.4);\n --f7-searchbar-input-text-color: #fff;\n --f7-searchbar-search-icon-color: rgba(255, 255, 255, 0.4);\n --f7-searchbar-input-bg-color: #2a2a2a;\n}\n.md {\n --f7-searchbar-border-color: transparent;\n --f7-searchbar-height: 48px;\n --f7-searchbar-inner-padding-left: 8px;\n --f7-searchbar-inner-padding-right: 8px;\n --f7-searchbar-input-font-size: 16px;\n --f7-searchbar-input-border-radius: 24px;\n --f7-searchbar-input-height: 48px;\n --f7-searchbar-inline-input-height: 48px;\n --f7-searchbar-inline-input-border-radius: 24px;\n --f7-searchbar-input-padding-horizontal: 16px;\n --f7-searchbar-inline-input-padding-horizontal: 16px;\n --f7-searchbar-backdrop-bg-color: rgba(0, 0, 0, 0.25);\n --f7-searchbar-in-page-content-margin: 16px 0;\n --f7-searchbar-in-page-content-box-shadow: none;\n --f7-searchbar-in-page-content-border-radius: 24px;\n --f7-searchbar-in-page-content-input-border-radius: 24px;\n --f7-searchbar-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-searchbar-link-color: var(--f7-md-on-surface);\n --f7-searchbar-search-icon-color: var(--f7-md-on-surface);\n --f7-searchbar-input-clear-button-color: var(--f7-md-on-surface);\n --f7-searchbar-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-searchbar-input-bg-color: var(--f7-md-secondary-container);\n --f7-searchbar-input-text-color: var(--f7-md-on-surface);\n}\n.searchbar {\n --f7-link-highlight-color: var(--f7-link-highlight-black);\n width: 100%;\n position: relative;\n z-index: 200;\n height: var(--f7-searchbar-height);\n background-color: var(--f7-searchbar-bg-color, var(--f7-bars-bg-color));\n}\n.dark .searchbar {\n --f7-link-highlight-color: var(--f7-link-highlight-white);\n}\n.searchbar input[type='search']::-webkit-search-decoration {\n display: none;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .searchbar {\n background-color: rgba(var(--f7-searchbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.ios .subnavbar .searchbar {\n background-color: transparent;\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n}\n.ios .subnavbar .searchbar:after {\n display: none !important;\n}\n.searchbar.no-outline:after {\n display: none !important;\n}\n.searchbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-searchbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.page > .searchbar:not(.searchbar-inline) {\n z-index: 600;\n}\n.searchbar input[type='text'],\n.searchbar input[type='search'] {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n display: block;\n border: var(--f7-searchbar-input-border-width) solid var(--f7-searchbar-input-border-color);\n -webkit-appearance: none;\n appearance: none;\n font-family: inherit;\n font-weight: normal;\n color: var(--f7-searchbar-input-text-color);\n font-size: var(--f7-searchbar-input-font-size);\n background-color: var(--f7-searchbar-input-bg-color);\n border-radius: var(--f7-searchbar-input-border-radius);\n position: relative;\n padding: 0;\n padding-left: calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-right, 0px));\n padding-right: calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px));\n}\n.searchbar input[type='text']::placeholder,\n.searchbar input[type='search']::placeholder {\n color: var(--f7-searchbar-placeholder-color);\n opacity: 1;\n}\n.searchbar input::-webkit-search-cancel-button {\n -webkit-appearance: none;\n appearance: none;\n}\n.searchbar .searchbar-input-wrap {\n flex-shrink: 1;\n width: 100%;\n height: var(--f7-searchbar-input-height);\n position: relative;\n}\n.searchbar a {\n color: var(--f7-searchbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.page > .searchbar:not(.searchbar-inline) {\n position: absolute;\n left: 0;\n top: 0;\n}\n.page-content .searchbar:not(.searchbar-inline) {\n border-radius: var(--f7-searchbar-in-page-content-border-radius);\n margin: var(--f7-searchbar-in-page-content-margin);\n width: auto;\n box-shadow: var(--f7-searchbar-in-page-content-box-shadow);\n}\n.page-content .searchbar:not(.searchbar-inline) .searchbar-inner,\n.page-content .searchbar:not(.searchbar-inline) input[type='text'],\n.page-content .searchbar:not(.searchbar-inline) input[type='search'] {\n border-radius: var(--f7-searchbar-in-page-content-input-border-radius, var(--f7-searchbar-input-border-radius));\n}\n.searchbar .input-clear-button {\n color: var(--f7-searchbar-input-clear-button-color, var(--f7-input-clear-button-color));\n}\n.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-searchbar-height);\n position: absolute;\n transition-duration: 300ms;\n pointer-events: none;\n}\n.navbar .searchbar-expandable {\n background: transparent;\n}\n.navbar .searchbar-expandable:after {\n display: none !important;\n}\n.navbar .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar .searchbar.searchbar-expandable .searchbar-inner {\n top: var(--f7-safe-area-top);\n height: calc(100% - var(--f7-safe-area-top));\n}\n.toolbar .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-toolbar-height);\n}\n.subnavbar .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-subnavbar-height);\n}\n.tabbar-icons .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-tabbar-icons-height);\n}\n.searchbar-inner {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n padding: 0 calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left));\n}\n.searchbar-disable-button {\n cursor: pointer;\n pointer-events: none;\n -webkit-appearance: none;\n appearance: none;\n background: none;\n border: none;\n outline: 0;\n padding: 0;\n margin: 0;\n width: auto;\n opacity: 0;\n}\n.searchbar-icon {\n pointer-events: none;\n background-position: center;\n background-repeat: no-repeat;\n}\n.searchbar-icon:after {\n color: var(--f7-searchbar-search-icon-color);\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n.searchbar-backdrop {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 100;\n opacity: 0;\n pointer-events: none;\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n background: var(--f7-searchbar-backdrop-bg-color);\n}\n.searchbar-backdrop.searchbar-backdrop-in {\n opacity: 1;\n pointer-events: auto;\n}\n.page-content > .searchbar-backdrop {\n position: fixed;\n}\n.searchbar-not-found {\n display: none;\n}\n.hidden-by-searchbar,\n.list .hidden-by-searchbar,\n.list.li.hidden-by-searchbar,\n.list li.hidden-by-searchbar {\n display: none !important;\n}\n.navbar.with-searchbar-expandable-enabled-no-transition,\n.navbar.with-searchbar-expandable-enabled-no-transition {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar.with-searchbar-expandable-enabled,\n.navbar.with-searchbar-expandable-enabled {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar.with-searchbar-expandable-enabled .navbar-bg,\n.navbar.with-searchbar-expandable-enabled .navbar-bg,\n.navbar.with-searchbar-expandable-enabled .title-large,\n.navbar.with-searchbar-expandable-enabled .title-large,\n.navbar.with-searchbar-expandable-enabled .title-large-text,\n.navbar.with-searchbar-expandable-enabled .title-large-text {\n transition-duration: 300ms;\n}\n.navbar.with-searchbar-expandable-closing .navbar-bg,\n.navbar.with-searchbar-expandable-closing .navbar-bg,\n.navbar.with-searchbar-expandable-closing .title-large,\n.navbar.with-searchbar-expandable-closing .title-large,\n.navbar.with-searchbar-expandable-closing .title-large-text,\n.navbar.with-searchbar-expandable-closing .title-large-text {\n transition-duration: 300ms;\n}\n.page-content.with-searchbar-expandable-enabled {\n height: calc(100% + var(--f7-navbar-large-title-height));\n transform: translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n transition-duration: 300ms;\n transition-property: transform;\n}\n.page-content.with-searchbar-expandable-closing {\n transition-duration: 300ms;\n}\n.navbar ~ .page:not(.no-navbar) > .searchbar,\n.navbars ~ .page:not(.no-navbar) > .searchbar,\n.page > .navbar ~ .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ .page-with-navbar-large:not(.no-navbar) .searchbar,\n.navbars ~ .page-with-navbar-large:not(.no-navbar) .searchbar,\n.page-with-navbar-large .navbar ~ .searchbar,\n.page-with-navbar-large .navbar ~ * .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));\n transform: translate3d(0, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.navbars ~ .page-with-navbar-large:not(.no-navbar) .page-content .searchbar,\n.page-with-navbar-large .page-content .searchbar {\n top: 0;\n transform: none;\n}\n.searchbar ~ * {\n --f7-page-searchbar-offset: var(--f7-searchbar-height);\n}\n.page > .toolbar-top ~ .searchbar,\n.ios .page > .toolbar-top-ios ~ .searchbar,\n.md .page > .toolbar-top-md ~ .searchbar {\n top: var(--f7-toolbar-height);\n}\n.page > .tabbar-icons.toolbar-top ~ .searchbar,\n.ios .page > .tabbar-icons.toolbar-top-ios ~ .searchbar,\n.md .page > .tabbar-icons.toolbar-top-md ~ .searchbar {\n top: var(--f7-tabbar-icons-height);\n}\n.page > .navbar ~ .toolbar-top ~ .searchbar,\n.ios .page > .navbar ~ .toolbar-top-ios ~ .searchbar,\n.md .page > .navbar ~ .toolbar-top-md ~ .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top));\n}\n.page > .navbar ~ .tabbar-icons.toolbar-top ~ .searchbar,\n.ios .page > .navbar ~ .tabbar-icons.toolbar-top-ios ~ .searchbar,\n.md .page > .navbar ~ .tabbar-icons.toolbar-top-md ~ .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top));\n}\n.searchbar.searchbar-inline {\n width: auto;\n height: auto;\n background-color: transparent;\n background-image: none;\n}\n.searchbar.searchbar-inline:after,\n.searchbar.searchbar-inline:before {\n display: none !important;\n}\n.searchbar.searchbar-inline .searchbar-input-wrap {\n height: var(--f7-searchbar-inline-input-height, var(--f7-searchbar-input-height));\n}\n.searchbar.searchbar-inline .searchbar-inner {\n padding: 0;\n position: static;\n width: auto;\n height: auto;\n}\n.searchbar.searchbar-inline input[type='text'],\n.searchbar.searchbar-inline input[type='search'] {\n font-size: var(--f7-searchbar-inline-input-font-size, var(--f7-searchbar-input-font-size));\n border-radius: var(--f7-searchbar-inline-input-border-radius, var(--f7-searchbar-input-border-radius));\n padding-left: calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-right, 0px));\n padding-right: calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-left, 0px));\n}\n.ios .searchbar input[type='search'],\n.ios .searchbar input[type='text'] {\n z-index: 30;\n}\n.ios .searchbar .input-clear-button {\n z-index: 40;\n left: 7px;\n}\n.ios .searchbar-icon {\n width: 13px;\n height: 13px;\n position: absolute;\n top: 50%;\n margin-top: -6px;\n z-index: 40;\n right: 8px;\n}\n.ios .searchbar-icon:after {\n content: 'search_ios';\n line-height: 13px;\n}\n.ios .searchbar-disable-button {\n font-size: 17px;\n flex-shrink: 0;\n transform: translate3d(0, 0, 0);\n transition-duration: 300ms;\n color: var(--f7-searchbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n display: none;\n}\n.ios .searchbar-disable-button.active-state {\n transition-duration: 0ms;\n opacity: 0.3 !important;\n}\n.ios .searchbar-enabled .searchbar-disable-button {\n pointer-events: auto;\n opacity: 1;\n margin-right: 8px;\n}\n.ios .searchbar:not(.searchbar-enabled) .searchbar-disable-button {\n transition-duration: 300ms !important;\n}\n.ios .searchbar-expandable {\n right: 0;\n bottom: 0;\n opacity: 1;\n width: 100%;\n height: 0%;\n transform: translate3d(0, 0, 0);\n overflow: hidden;\n}\n.ios .searchbar-expandable .searchbar-disable-button {\n margin-right: 8px;\n opacity: 1;\n display: block;\n}\n.ios .searchbar-expandable .searchbar-inner {\n height: var(--f7-searchbar-expandable-size);\n}\n.ios .navbar.with-searchbar-expandable-enabled .navbar-bg,\n.ios .navbar.with-searchbar-expandable-closing .navbar-bg {\n transition-property: transform, opacity;\n}\n.ios .navbar.with-searchbar-expandable-enabled .navbar-bg,\n.ios .navbar.with-searchbar-expandable-closing .navbar-bg,\n.ios .navbar.with-searchbar-expandable-enabled .left,\n.ios .navbar.with-searchbar-expandable-closing .left,\n.ios .navbar.with-searchbar-expandable-enabled .title,\n.ios .navbar.with-searchbar-expandable-closing .title,\n.ios .navbar.with-searchbar-expandable-enabled .right,\n.ios .navbar.with-searchbar-expandable-closing .right {\n transition-duration: 300ms;\n}\n.ios .navbar.with-searchbar-expandable-enabled .left,\n.ios .navbar.with-searchbar-expandable-enabled-no-transition .left,\n.ios .navbar.with-searchbar-expandable-enabled .title,\n.ios .navbar.with-searchbar-expandable-enabled-no-transition .title,\n.ios .navbar.with-searchbar-expandable-enabled .right,\n.ios .navbar.with-searchbar-expandable-enabled-no-transition .right {\n transform: translateY(calc(-1 * var(--f7-navbar-height)));\n opacity: 0 !important;\n}\n.ios .searchbar-expandable.searchbar-enabled {\n opacity: 1;\n height: var(--f7-searchbar-expandable-size);\n pointer-events: auto;\n}\n.md .searchbar-icon,\n.md .searchbar-disable-button {\n position: absolute;\n top: 50%;\n transition-duration: 300ms;\n}\n.md .searchbar-icon {\n width: 48px;\n height: 48px;\n left: 0;\n top: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n right: var(--f7-safe-area-right);\n}\n.md .searchbar-icon:after {\n width: auto;\n height: auto;\n content: 'search_md';\n line-height: 1.2;\n}\n.md .searchbar-disable-button {\n width: 48px;\n height: 48px;\n transform: rotate(-90deg) scale(0.5);\n font-size: 0 !important;\n display: block;\n margin-top: -24px;\n color: var(--f7-searchbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n right: calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right));\n}\n.md .searchbar-disable-button:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n line-height: 48px;\n content: 'arrow_right_md';\n}\n.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-disable-button {\n transform: rotate(0deg) scale(1);\n pointer-events: auto;\n opacity: 1;\n}\n.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-icon {\n opacity: 0;\n transform: rotate(90deg) scale(0.5);\n}\n.md .searchbar {\n --f7-searchbar-input-extra-padding-left: 34px;\n}\n.md .searchbar .input-clear-button {\n width: 48px;\n height: 48px;\n margin-top: -24px;\n left: 0;\n}\n.md .searchbar .input-clear-button:after {\n line-height: 48px;\n content: 'delete_round_md';\n opacity: 1;\n}\n.md .searchbar .input-clear-button:before {\n display: none;\n}\n.md .searchbar-inline {\n --f7-searchbar-input-extra-padding-left: 32px;\n}\n.md .page > .searchbar,\n.md .subnavbar .searchbar,\n.md .searchbar-expandable {\n --f7-searchbar-input-extra-padding-left: 34px;\n}\n.md .page > .searchbar .searchbar-disable-button,\n.md .subnavbar .searchbar .searchbar-disable-button,\n.md .searchbar-expandable .searchbar-disable-button {\n right: calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right));\n}\n.md .page > .searchbar .searchbar-icon,\n.md .subnavbar .searchbar .searchbar-icon,\n.md .searchbar-expandable .searchbar-icon {\n right: var(--f7-safe-area-right);\n}\n.md .searchbar-expandable {\n --f7-searchbar-inner-padding-left: 4px;\n --f7-searchbar-inner-padding-right: 4px;\n height: var(--f7-searchbar-expandable-size);\n opacity: 0;\n bottom: 0;\n border-radius: calc(var(--f7-searchbar-expandable-size));\n width: calc(var(--f7-searchbar-expandable-size));\n margin-top: calc(var(--f7-searchbar-expandable-size) * -1 / 2);\n transform: translate3d(0px, 0px, 0px);\n background-color: var(--f7-searchbar-input-bg-color);\n right: 100%;\n margin-right: calc(var(--f7-searchbar-expandable-size) * -1);\n}\n.md .searchbar-expandable.searchbar-enabled {\n width: 100%;\n border-radius: 0;\n opacity: 1;\n pointer-events: auto;\n margin-top: 0;\n right: 0;\n margin-right: 0;\n}\n/* === Messages === */\n:root {\n --f7-message-text-header-opacity: 0.65;\n --f7-message-text-header-font-size: 12px;\n --f7-message-text-footer-opacity: 0.65;\n --f7-message-text-footer-font-size: 12px;\n --f7-message-bubble-line-height: 1.2;\n --f7-message-header-font-size: 12px;\n --f7-message-footer-font-size: 11px;\n --f7-message-name-font-size: 12px;\n --f7-message-name-font-weight: inherit;\n --f7-message-avatar-border-radius: 50%;\n --f7-messages-title-font-weight: inherit;\n --f7-message-typing-indicator-bg-color: #000;\n}\n:root .dark,\n:root.dark {\n --f7-message-typing-indicator-bg-color: #fff;\n}\n.ios {\n --f7-message-text-header-text-color: inherit;\n --f7-message-text-footer-text-color: inherit;\n --f7-messages-title-font-size: 11px;\n --f7-message-avatar-size: 29px;\n --f7-message-margin: 10px;\n --f7-message-bubble-min-height: 32px;\n --f7-message-bubble-font-size: 17px;\n --f7-message-bubble-border-radius: 16px;\n --f7-message-bubble-padding-vertical: 6px;\n --f7-message-bubble-padding-horizontal: 16px;\n --f7-message-typing-indicator-opacity: 0.35;\n /*\n --f7-message-sent-bg-color: var(--f7-theme-color);\n */\n --f7-message-sent-text-color: #fff;\n --f7-messages-content-bg-color: #fff;\n --f7-message-received-text-color: #000;\n --f7-message-received-bg-color: #e5e5ea;\n --f7-messages-title-text-color: rgba(0, 0, 0, 0.45);\n --f7-message-header-text-color: rgba(0, 0, 0, 0.45);\n --f7-message-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-message-name-text-color: rgba(0, 0, 0, 0.45);\n}\n.ios .dark,\n.ios.dark {\n --f7-message-received-bg-color: #252525;\n --f7-message-received-text-color: #fff;\n --f7-messages-content-bg-color: transparent;\n --f7-messages-title-text-color: rgba(255, 255, 255, 0.54);\n --f7-message-header-text-color: rgba(255, 255, 255, 0.54);\n --f7-message-name-text-color: rgba(255, 255, 255, 0.54);\n --f7-message-footer-text-color: rgba(255, 255, 255, 0.54);\n}\n.md {\n --f7-messages-content-bg-color: transparent;\n --f7-messages-title-font-size: 12px;\n --f7-message-avatar-size: 32px;\n --f7-message-margin: 16px;\n --f7-message-bubble-min-height: 40px;\n --f7-message-bubble-font-size: 16px;\n --f7-message-bubble-border-radius: 20px;\n --f7-message-bubble-padding-vertical: 10px;\n --f7-message-bubble-padding-horizontal: 16px;\n --f7-message-typing-indicator-opacity: 0.6;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-message-sent-bg-color: var(--f7-md-primary);\n --f7-message-sent-text-color: var(--f7-md-on-primary);\n --f7-message-received-bg-color: var(--f7-md-surface-variant);\n --f7-message-received-text-color: var(--f7-md-on-surface);\n --f7-message-text-header-text-color: var(--f7-md-on-surface-variant);\n --f7-message-text-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-messages-title-text-color: var(--f7-md-on-surface-variant);\n --f7-message-header-text-color: var(--f7-md-on-surface-variant);\n --f7-message-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-message-name-text-color: var(--f7-md-on-surface-variant);\n}\n.messages-content,\n.messages {\n background: var(--f7-messages-content-bg-color);\n}\n.messages {\n display: flex;\n flex-direction: column;\n min-height: 100%;\n position: relative;\n z-index: 1;\n}\n.messages-title,\n.message {\n margin-top: var(--f7-message-margin);\n}\n.messages-title:last-child,\n.message:last-child {\n margin-bottom: var(--f7-message-margin);\n}\n.messages-title {\n text-align: center;\n width: 100%;\n line-height: 1;\n color: var(--f7-messages-title-text-color);\n font-size: var(--f7-messages-title-font-size);\n font-weight: var(--f7-messages-title-font-weight);\n}\n.message {\n max-width: 70%;\n box-sizing: border-box;\n display: flex;\n align-items: flex-end;\n position: relative;\n z-index: 1;\n transform: translate3d(0, 0, 0);\n}\n.message-avatar {\n border-radius: var(--f7-message-avatar-border-radius);\n position: relative;\n background-size: cover;\n align-self: flex-end;\n flex-shrink: 0;\n width: var(--f7-message-avatar-size);\n height: var(--f7-message-avatar-size);\n}\n.message-content {\n position: relative;\n display: flex;\n flex-direction: column;\n}\n.message-header,\n.message-footer,\n.message-name {\n line-height: 1;\n}\n.message-header {\n color: var(--f7-message-header-text-color);\n font-size: var(--f7-message-header-font-size);\n}\n.message-footer {\n color: var(--f7-message-footer-text-color);\n font-size: var(--f7-message-footer-font-size);\n margin-bottom: -1em;\n}\n.message-name {\n color: var(--f7-message-name-text-color);\n font-size: var(--f7-message-name-font-size);\n font-weight: var(--f7-message-name-font-weight);\n}\n.message-bubble {\n box-sizing: border-box;\n word-break: break-word;\n display: flex;\n flex-direction: column;\n position: relative;\n line-height: var(--f7-message-bubble-line-height);\n font-size: var(--f7-message-bubble-font-size);\n border-radius: var(--f7-message-bubble-border-radius);\n padding: var(--f7-message-bubble-padding-vertical) var(--f7-message-bubble-padding-horizontal);\n min-height: var(--f7-message-bubble-min-height);\n}\n.message-image img {\n display: block;\n max-width: 100%;\n height: auto;\n width: auto;\n}\n.message-text-header,\n.message-text-footer {\n line-height: 1;\n}\n.message-text-header {\n color: var(--f7-message-text-header-text-color);\n opacity: var(--f7-message-text-header-opacity);\n font-size: var(--f7-message-text-header-font-size);\n}\n.message-text-footer {\n color: var(--f7-message-text-footer-text-color);\n opacity: var(--f7-message-text-footer-opacity);\n font-size: var(--f7-message-text-footer-font-size);\n}\n.message-text {\n text-align: left;\n}\n.message-sent {\n text-align: right;\n flex-direction: row;\n align-self: flex-start;\n}\n.message-sent .message-bubble {\n color: var(--f7-message-sent-text-color);\n background: var(--f7-message-sent-bg-color, var(--f7-theme-color));\n}\n.message-sent .message-content {\n align-items: flex-start;\n}\n.message-received {\n flex-direction: row-reverse;\n align-self: flex-end;\n}\n.message-received .message-bubble {\n color: var(--f7-message-received-text-color);\n background: var(--f7-message-received-bg-color);\n}\n.message-received .message-content {\n align-items: flex-end;\n}\n.message:not(.message-last) .message-avatar {\n opacity: 0;\n}\n.message:not(.message-first) .message-name {\n display: none;\n}\n.message.message-same-name .message-name {\n display: none;\n}\n.message.message-same-header .message-header {\n display: none;\n}\n.message.message-same-footer .message-footer {\n display: none;\n}\n.message-appear-from-bottom {\n animation: message-appear-from-bottom 300ms;\n}\n.message-appear-from-top {\n animation: message-appear-from-top 300ms;\n}\n.message-typing-indicator {\n display: inline-block;\n font-size: 0;\n vertical-align: middle;\n}\n.message-typing-indicator > div {\n display: inline-block;\n position: relative;\n background: var(--f7-message-typing-indicator-bg-color);\n opacity: var(--f7-message-typing-indicator-opacity);\n vertical-align: middle;\n border-radius: 50%;\n}\n@keyframes message-appear-from-bottom {\n from {\n transform: translate3d(0, 100%, 0);\n }\n to {\n transform: translate3d(0, 0, 0);\n }\n}\n@keyframes message-appear-from-top {\n from {\n transform: translate3d(0, -100%, 0);\n }\n to {\n transform: translate3d(0, 0, 0);\n }\n}\n.ios .messages-title b,\n.ios .message-header b,\n.ios .message-footer b,\n.ios .message-name b {\n font-weight: 600;\n}\n.ios .message-header,\n.ios .message-name {\n margin-bottom: 3px;\n}\n.ios .message-footer {\n margin-top: 3px;\n}\n.ios .message-bubble {\n min-width: 48px;\n}\n.ios .message-image {\n margin: var(--f7-message-bubble-padding-vertical) calc(-1 * var(--f7-message-bubble-padding-horizontal));\n}\n.ios .message-image:first-child {\n margin-top: calc(-1 * var(--f7-message-bubble-padding-vertical));\n}\n.ios .message-image:first-child img {\n border-top-left-radius: var(--f7-message-bubble-border-radius);\n border-top-right-radius: var(--f7-message-bubble-border-radius);\n}\n.ios .message-image:last-child {\n margin-bottom: calc(-1 * var(--f7-message-bubble-padding-vertical));\n}\n.ios .message-image:last-child img {\n border-bottom-left-radius: var(--f7-message-bubble-border-radius);\n border-bottom-right-radius: var(--f7-message-bubble-border-radius);\n}\n.ios .message-text-header {\n margin-bottom: 3px;\n}\n.ios .message-text-footer {\n margin-top: 3px;\n}\n.ios .message-received {\n margin-left: calc(10px + var(--f7-safe-area-left));\n}\n.ios .message-received .message-header,\n.ios .message-received .message-footer,\n.ios .message-received .message-name {\n margin-left: var(--f7-message-bubble-padding-horizontal);\n}\n.ios .message-received .message-bubble {\n padding-left: calc(var(--f7-message-bubble-padding-horizontal) + 6px);\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 42% 46% 56%;\n}\n.ios .message-received .message-image {\n margin-left: calc(-1 * (var(--f7-message-bubble-padding-horizontal) + 6px));\n}\n.ios .message-received.message-tail .message-bubble {\n border-radius: var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0;\n}\n.ios .message-received.message-tail:not(.message-typing) .message-bubble {\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 42% 46% 56%;\n}\n.ios .message-received.message-tail:not(.message-typing) .message-bubble .message-image:last-child img {\n border-bottom-left-radius: 0px;\n}\n.ios .message-sent {\n margin-right: calc(10px + var(--f7-safe-area-right));\n}\n.ios .message-sent .message-header,\n.ios .message-sent .message-footer,\n.ios .message-sent .message-name {\n margin-right: var(--f7-message-bubble-padding-horizontal);\n}\n.ios .message-sent .message-bubble {\n padding-right: calc(var(--f7-message-bubble-padding-horizontal) + 6px);\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 56% 46% 42%;\n}\n.ios .message-sent .message-image {\n margin-right: calc(-1 * (var(--f7-message-bubble-padding-horizontal) + 6px));\n}\n.ios .message-sent.message-tail .message-bubble {\n border-radius: var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0 var(--f7-message-bubble-border-radius);\n}\n.ios .message-sent.message-tail .message-bubble {\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 56% 46% 42%;\n}\n.ios .message-sent.message-tail .message-bubble .message-image:last-child img {\n border-bottom-right-radius: 0px;\n}\n.ios .message + .message:not(.message-first) {\n margin-top: 1px;\n}\n.ios .message-received.message-typing .message-content:after,\n.ios .message-received.message-typing .message-content:before {\n content: '';\n position: absolute;\n background: var(--f7-message-received-bg-color);\n border-radius: 50%;\n}\n.ios .message-received.message-typing .message-content:after {\n width: 11px;\n height: 11px;\n left: 4px;\n bottom: 0px;\n}\n.ios .message-received.message-typing .message-content:before {\n width: 6px;\n height: 6px;\n left: -1px;\n bottom: -4px;\n}\n.ios .message-typing-indicator > div {\n width: 9px;\n height: 9px;\n}\n.ios .message-typing-indicator > div + div {\n margin-right: 4px;\n}\n.ios .message-typing-indicator > div:nth-child(1) {\n animation: ios-message-typing-indicator 900ms infinite;\n}\n.ios .message-typing-indicator > div:nth-child(2) {\n animation: ios-message-typing-indicator 900ms 150ms infinite;\n}\n.ios .message-typing-indicator > div:nth-child(3) {\n animation: ios-message-typing-indicator 900ms 300ms infinite;\n}\n@keyframes ios-message-typing-indicator {\n 0% {\n opacity: 0.35;\n }\n 25% {\n opacity: 0.2;\n }\n 50% {\n opacity: 0.2;\n }\n}\n.md .messages-title b,\n.md .message-header b,\n.md .message-footer b,\n.md .message-name b {\n font-weight: 500;\n}\n.md .message-header,\n.md .message-name {\n margin-bottom: 2px;\n}\n.md .message-footer {\n margin-top: 2px;\n}\n.md .message-text-header {\n margin-bottom: 4px;\n}\n.md .message-text-footer {\n margin-top: 4px;\n}\n.md .message-image {\n margin: calc(-1 * var(--f7-message-bubble-padding-vertical)) calc(-1 * var(--f7-message-bubble-padding-horizontal));\n}\n.md .message-image,\n.md .message-image img {\n border-radius: var(--f7-message-bubble-border-radius);\n}\n.md .message-received {\n margin-left: calc(8px + var(--f7-safe-area-left));\n}\n.md .message-received .message-name,\n.md .message-received .message-header,\n.md .message-received .message-footer {\n margin-left: 16px;\n}\n.md .message-received.message-first:not(.message-last) .message-bubble,\n.md .message-received.message-first:not(.message-last) .message-image,\n.md .message-received.message-first:not(.message-last) .message-image img {\n border-bottom-left-radius: 4px;\n}\n.md .message-received.message-last:not(.message-first) .message-bubble,\n.md .message-received.message-last:not(.message-first) .message-image,\n.md .message-received.message-last:not(.message-first) .message-image img {\n border-top-left-radius: 4px;\n}\n.md .message-received:not(.message-last):not(.message-first) .message-bubble,\n.md .message-received:not(.message-last):not(.message-first) .message-image,\n.md .message-received:not(.message-last):not(.message-first) .message-image img {\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.md .message-received .message-avatar + .message-content {\n margin-left: 8px;\n}\n.md .message-sent {\n margin-right: calc(8px + var(--f7-safe-area-right));\n}\n.md .message-sent .message-name,\n.md .message-sent .message-header,\n.md .message-sent .message-footer {\n margin-right: 16px;\n}\n.md .message-sent.message-first:not(.message-last) .message-bubble,\n.md .message-sent.message-first:not(.message-last) .message-image,\n.md .message-sent.message-first:not(.message-last) .message-image img {\n border-bottom-right-radius: 4px;\n}\n.md .message-sent.message-last:not(.message-first) .message-bubble,\n.md .message-sent.message-last:not(.message-first) .message-image,\n.md .message-sent.message-last:not(.message-first) .message-image img {\n border-top-right-radius: 4px;\n}\n.md .message-sent:not(.message-last):not(.message-first) .message-bubble,\n.md .message-sent:not(.message-last):not(.message-first) .message-image,\n.md .message-sent:not(.message-last):not(.message-first) .message-image img {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.md .message-sent .message-avatar + .message-content {\n margin-right: var(--f7-message-bubble-padding-horizontal);\n}\n.md .message + .message:not(.message-first) {\n margin-top: 2px;\n}\n.md .message-typing-indicator > div {\n width: 6px;\n height: 6px;\n}\n.md .message-typing-indicator > div + div {\n margin-right: 6px;\n}\n.md .message-typing-indicator > div:nth-child(1) {\n animation: md-message-typing-indicator 900ms infinite;\n}\n.md .message-typing-indicator > div:nth-child(2) {\n animation: md-message-typing-indicator 900ms 150ms infinite;\n}\n.md .message-typing-indicator > div:nth-child(3) {\n animation: md-message-typing-indicator 900ms 300ms infinite;\n}\n@keyframes md-message-typing-indicator {\n 0% {\n transform: translateY(0%);\n }\n 25% {\n transform: translateY(-5px);\n }\n 50% {\n transform: translateY(0%);\n }\n}\n/* === Messagebar === */\n:root {\n --f7-messagebar-attachments-height: 155px;\n --f7-messagebar-sheet-height: 252px;\n --f7-messagebar-sheet-landscape-height: 192px;\n /*\n --f7-messagebar-inner-padding-left: var(--f7-toolbar-inner-padding-left);\n --f7-messagebar-inner-padding-right: var(--f7-toolbar-inner-padding-right);\n */\n}\n.ios {\n --f7-messagebar-height: 44px;\n --f7-messagebar-font-size: 17px;\n --f7-messagebar-textarea-bg-color: transparent;\n /*\n --f7-messagebar-link-color: var(--f7-theme-color);\n */\n --f7-messagebar-border-color: transparent;\n --f7-messagebar-textarea-border-radius: 17px;\n --f7-messagebar-textarea-padding: 6px 16px;\n --f7-messagebar-textarea-height: 34px;\n --f7-messagebar-textarea-font-size: 17px;\n --f7-messagebar-textarea-line-height: 20px;\n --f7-messagebar-sheet-bg-color: #d1d5da;\n --f7-messagebar-sheet-border-color: transparent;\n --f7-messagebar-attachment-border-radius: 12px;\n --f7-messagebar-attachment-height: 155px;\n --f7-messagebar-attachment-landscape-height: 120px;\n --f7-messagebar-textarea-placeholder-color: rgba(0, 0, 0, 0.4);\n --f7-messagebar-textarea-text-color: #000;\n --f7-messagebar-textarea-border: 1px solid #c8c8cd;\n --f7-messagebar-attachments-border-color: #c8c8cd;\n --f7-messagebar-bg-color: #fff;\n --f7-messagebar-bg-color-rgb: 255, 255, 255;\n}\n.ios .dark,\n.ios.dark {\n --f7-messagebar-textarea-placeholder-color: rgba(255, 255, 255, 0.4);\n --f7-messagebar-textarea-text-color: #fff;\n --f7-messagebar-textarea-border: 1px solid var(--f7-bars-border-color);\n --f7-messagebar-attachments-border-color: var(--f7-bars-border-color);\n --f7-messagebar-bg-color: var(--f7-bars-bg-color);\n --f7-messagebar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n}\n.md {\n --f7-messagebar-height: 64px;\n --f7-messagebar-font-size: 16px;\n --f7-messagebar-textarea-border-radius: 24px;\n --f7-messagebar-textarea-padding: 12px 16px;\n --f7-messagebar-textarea-height: 48px;\n --f7-messagebar-textarea-font-size: 16px;\n --f7-messagebar-textarea-line-height: 22px;\n --f7-messagebar-textarea-border: 1px solid transparent;\n --f7-messagebar-attachment-border-radius: 12px;\n --f7-messagebar-attachment-height: 72px;\n --f7-messagebar-attachment-landscape-height: 72px;\n --f7-messagebar-border-color: transparent;\n --f7-messagebar-attachments-border-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-messagebar-textarea-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-messagebar-textarea-bg-color: var(--f7-md-surface-variant);\n --f7-messagebar-bg-color: var(--f7-md-surface);\n --f7-messagebar-textarea-text-color: var(--f7-md-on-surface);\n --f7-messagebar-sheet-bg-color: var(--f7-md-surface);\n --f7-messagebar-sheet-border-color: var(--f7-md-outline-variant);\n --f7-messagebar-link-color: var(--f7-md-on-surface);\n}\n.messagebar {\n transform: translate3d(0, 0, 0);\n background: var(--f7-messagebar-bg-color);\n height: auto;\n min-height: var(--f7-messagebar-height);\n font-size: var(--f7-messagebar-font-size);\n padding-bottom: var(--f7-safe-area-bottom);\n bottom: 0;\n}\n.messagebar:before {\n content: '';\n position: absolute;\n background-color: var(--f7-messagebar-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .messagebar {\n background-color: rgba(var(--f7-messagebar-bg-color-rgb), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.messagebar.no-outline:before {\n display: none !important;\n}\n.messagebar.toolbar-hidden:after {\n display: none !important;\n}\n.messagebar .toolbar-inner {\n top: auto;\n position: relative;\n height: auto;\n bottom: auto;\n padding-left: calc(var(--f7-messagebar-inner-padding-left, var(--f7-toolbar-inner-padding-left)) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-messagebar-inner-padding-right, var(--f7-toolbar-inner-padding-right)) + var(--f7-safe-area-right));\n flex-direction: row-reverse;\n}\n.messagebar.messagebar-sheet-visible > .toolbar-inner {\n bottom: 0;\n}\n.messagebar .messagebar-area {\n width: 100%;\n flex-shrink: 1;\n overflow: hidden;\n position: relative;\n}\n.messagebar textarea {\n width: 100%;\n flex-shrink: 1;\n background-color: var(--f7-messagebar-textarea-bg-color);\n border-radius: var(--f7-messagebar-textarea-border-radius);\n padding: var(--f7-messagebar-textarea-padding);\n height: var(--f7-messagebar-textarea-height);\n color: var(--f7-messagebar-textarea-text-color);\n font-size: var(--f7-messagebar-textarea-font-size);\n line-height: var(--f7-messagebar-textarea-line-height);\n border: var(--f7-messagebar-textarea-border);\n}\n.messagebar textarea::placeholder {\n color: var(--f7-messagebar-textarea-placeholder-color);\n}\n.messagebar a.link {\n align-self: flex-end;\n flex-shrink: 0;\n color: var(--f7-messagebar-link-color, var(--f7-theme-color));\n}\n.messagebar-attachments {\n width: 100%;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n font-size: 0;\n white-space: nowrap;\n box-sizing: border-box;\n position: relative;\n}\n.messagebar:not(.messagebar-attachments-visible) .messagebar-attachments {\n display: none;\n}\n.messagebar-attachment {\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n display: inline-block;\n vertical-align: middle;\n white-space: normal;\n height: var(--f7-messagebar-attachment-height);\n position: relative;\n border-radius: var(--f7-messagebar-attachment-border-radius);\n}\n@media (orientation: landscape) {\n .messagebar-attachment {\n height: var(--f7-messagebar-attachment-landscape-height);\n }\n}\n.messagebar-attachment img {\n display: block;\n width: auto;\n height: 100%;\n border-radius: var(--f7-messagebar-attachment-border-radius);\n}\n.messagebar-sheet {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n display: flex;\n flex-wrap: wrap;\n flex-direction: column;\n align-content: flex-start;\n height: var(--f7-messagebar-sheet-height);\n background-color: var(--f7-messagebar-sheet-bg-color);\n border-top: 1px solid var(--f7-messagebar-sheet-border-color);\n padding-left: var(--f7-safe-area-left);\n padding-right: var(--f7-safe-area-right);\n}\n@media (orientation: landscape) {\n .messagebar-sheet {\n height: var(--f7-messagebar-sheet-landscape-height);\n }\n}\n.messagebar-sheet-image {\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n}\n.messagebar-sheet-image > img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n border-radius: inherit;\n transition-duration: 200ms;\n}\n.messagebar-attachment-delete {\n display: block;\n position: absolute;\n border-radius: 50%;\n box-sizing: border-box;\n cursor: pointer;\n}\n.messagebar-attachment-delete:after,\n.messagebar-attachment-delete:before {\n position: absolute;\n content: '';\n left: 50%;\n top: 50%;\n}\n.messagebar-attachment-delete:after {\n transform: rotate(45deg);\n}\n.messagebar-attachment-delete:before {\n transform: rotate(-45deg);\n}\n.messagebar:not(.messagebar-sheet-visible) .messagebar-sheet {\n display: none;\n}\n.messagebar ~ * {\n --f7-page-toolbar-bottom-offset: var(--f7-messagebar-height);\n}\n.ios .messagebar a.link.icon-only:first-child {\n margin-left: -8px;\n}\n.ios .messagebar a.link.icon-only:last-child {\n margin-right: -8px;\n}\n.ios .messagebar a.link:not(.icon-only) + .messagebar-area {\n margin-left: 8px;\n}\n.ios .messagebar .messagebar-area + a.link:not(.icon-only) {\n margin-left: 8px;\n}\n.ios .messagebar-area {\n margin-top: 5px;\n margin-bottom: 5px;\n}\n.ios .messagebar-attachments {\n padding: 5px;\n border-radius: var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;\n border: 1px solid var(--f7-messagebar-attachments-border-color);\n border-bottom: none;\n}\n.ios .messagebar-attachments-visible .messagebar-attachments + textarea {\n border-radius: 0 0 var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius);\n}\n.ios .messagebar-attachment {\n font-size: 14px;\n}\n.ios .messagebar-attachment + .messagebar-attachment {\n margin-right: 8px;\n}\n.ios .messagebar-attachment-delete {\n right: 5px;\n top: 5px;\n width: 20px;\n height: 20px;\n background: #7d7e80;\n border: 2px solid #fff;\n box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);\n}\n.ios .messagebar-attachment-delete:after,\n.ios .messagebar-attachment-delete:before {\n width: 10px;\n height: 2px;\n background: #fff;\n margin-left: -5px;\n margin-top: -1px;\n}\n.ios .messagebar-sheet-image,\n.ios .messagebar-sheet-item {\n box-sizing: border-box;\n flex-shrink: 0;\n margin-top: 1px;\n position: relative;\n overflow: hidden;\n height: calc((var(--f7-messagebar-sheet-height) - 2px) / 2);\n width: calc((var(--f7-messagebar-sheet-height) - 2px) / 2);\n margin-right: 1px;\n}\n@media (orientation: landscape) {\n .ios .messagebar-sheet-image,\n .ios .messagebar-sheet-item {\n width: calc((var(--f7-messagebar-sheet-landscape-height) - 2px) / 2);\n height: calc((var(--f7-messagebar-sheet-landscape-height) - 2px) / 2);\n }\n}\n.ios .messagebar-sheet-image .icon-checkbox,\n.ios .messagebar-sheet-item .icon-checkbox,\n.ios .messagebar-sheet-image .icon-radio,\n.ios .messagebar-sheet-item .icon-radio {\n position: absolute;\n right: 8px;\n bottom: 8px;\n z-index: 1;\n}\n.md .messagebar {\n --f7-toolbar-link-height: var(--f7-messagebar-height);\n}\n.md .messagebar-attachments {\n padding: 16px 16px 0;\n border-bottom: 1px solid var(--f7-messagebar-attachments-border-color);\n}\n.md .messagebar-attachment img {\n width: var(--f7-messagebar-attachment-height);\n height: var(--f7-messagebar-attachment-height);\n object-fit: cover;\n object-position: center;\n}\n.md .messagebar-attachment + .messagebar-attachment {\n margin-right: 16px;\n}\n.md .messagebar-attachments-visible .messagebar-attachments {\n background: var(--f7-messagebar-textarea-bg-color);\n border-radius: var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;\n}\n.md .messagebar-attachments-visible textarea {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.md .messagebar-area {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.md .messagebar-attachment-delete {\n right: -6px;\n top: -6px;\n width: 24px;\n height: 24px;\n background-color: var(--f7-md-inverse-surface);\n border-radius: 24px;\n border: 2px solid var(--f7-messagebar-textarea-bg-color);\n}\n.md .messagebar-attachment-delete:after,\n.md .messagebar-attachment-delete:before {\n width: 12px;\n height: 2px;\n background: var(--f7-messagebar-textarea-bg-color);\n margin-left: -6px;\n margin-top: -1px;\n}\n.md .messagebar-sheet-image,\n.md .messagebar-sheet-item {\n --f7-touch-ripple-color: transparent;\n box-sizing: border-box;\n flex-shrink: 0;\n margin-top: 8px;\n position: relative;\n overflow: hidden;\n height: calc((var(--f7-messagebar-sheet-height) - 24px) / 2);\n width: calc((var(--f7-messagebar-sheet-height) - 24px) / 2);\n border-radius: 4px;\n margin-right: 8px;\n}\n@media (orientation: landscape) {\n .md .messagebar-sheet-image,\n .md .messagebar-sheet-item {\n width: calc((var(--f7-messagebar-sheet-landscape-height) - 8px) / 2);\n height: calc((var(--f7-messagebar-sheet-landscape-height) - 24px) / 2);\n }\n}\n.md .messagebar-sheet-image input:checked ~ img,\n.md .messagebar-sheet-item input:checked ~ img {\n transform: scale(0.85);\n}\n.md .messagebar-sheet-image input:checked ~ .icon-checkbox,\n.md .messagebar-sheet-item input:checked ~ .icon-checkbox,\n.md .messagebar-sheet-image input:checked ~ .icon-radio,\n.md .messagebar-sheet-item input:checked ~ .icon-radio {\n transform: translate(-50%, -50%) scale(1);\n}\n.md .messagebar-sheet-image .icon-checkbox,\n.md .messagebar-sheet-item .icon-checkbox,\n.md .messagebar-sheet-image .icon-radio,\n.md .messagebar-sheet-item .icon-radio {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%) scale(0.85);\n border: none;\n z-index: 1;\n --f7-checkbox-inactive-color: var(--f7-md-surface);\n --f7-checkbox-active-color: var(--f7-md-surface);\n}\n.md .messagebar-sheet-image .icon-checkbox::after,\n.md .messagebar-sheet-item .icon-checkbox::after,\n.md .messagebar-sheet-image .icon-radio::after,\n.md .messagebar-sheet-item .icon-radio::after {\n color: var(--f7-md-on-surface);\n font-size: 18px;\n width: auto;\n height: 100%;\n line-height: 32px;\n left: 0;\n position: static;\n}\n/* === Swiper === */\n/**\n * Swiper 10.2.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: August 17, 2023\n */\n\n/* FONT_START */\n@font-face {\n font-family: 'swiper-icons';\n src: url('data:application/font-woff;charset=utf-8;base64, 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');\n font-weight: 400;\n font-style: normal;\n}\n/* FONT_END */\n:root {\n --swiper-theme-color: #007aff;\n /*\n --swiper-preloader-color: var(--swiper-theme-color);\n --swiper-wrapper-transition-timing-function: initial;\n */\n}\n:host {\n position: relative;\n display: block;\n margin-left: auto;\n margin-right: auto;\n z-index: 1;\n}\n.swiper {\n margin-left: auto;\n margin-right: auto;\n position: relative;\n overflow: hidden;\n overflow: clip;\n list-style: none;\n padding: 0;\n /* Fix of Webkit flickering */\n z-index: 1;\n display: block;\n}\n.swiper-vertical > .swiper-wrapper {\n flex-direction: column;\n}\n.swiper-wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n z-index: 1;\n display: flex;\n transition-property: transform;\n transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial);\n box-sizing: content-box;\n}\n.swiper-android .swiper-slide,\n.swiper-ios .swiper-slide,\n.swiper-wrapper {\n transform: translate3d(0px, 0, 0);\n}\n.swiper-horizontal {\n touch-action: pan-y;\n}\n.swiper-vertical {\n touch-action: pan-x;\n}\n.swiper-slide {\n flex-shrink: 0;\n width: 100%;\n height: 100%;\n position: relative;\n transition-property: transform;\n display: block;\n}\n.swiper-slide-invisible-blank {\n visibility: hidden;\n}\n/* Auto Height */\n.swiper-autoheight,\n.swiper-autoheight .swiper-slide {\n height: auto;\n}\n.swiper-autoheight .swiper-wrapper {\n align-items: flex-start;\n transition-property: transform, height;\n}\n.swiper-backface-hidden .swiper-slide {\n transform: translateZ(0);\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n/* 3D Effects */\n.swiper-3d.swiper-css-mode .swiper-wrapper {\n perspective: 1200px;\n}\n.swiper-3d .swiper-wrapper {\n transform-style: preserve-3d;\n}\n.swiper-3d {\n perspective: 1200px;\n}\n.swiper-3d .swiper-slide,\n.swiper-3d .swiper-cube-shadow {\n transform-style: preserve-3d;\n}\n/* CSS Mode */\n.swiper-css-mode > .swiper-wrapper {\n overflow: auto;\n scrollbar-width: none;\n /* For Firefox */\n -ms-overflow-style: none;\n /* For Internet Explorer and Edge */\n}\n.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar {\n display: none;\n}\n.swiper-css-mode > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: start start;\n}\n.swiper-css-mode.swiper-horizontal > .swiper-wrapper {\n scroll-snap-type: x mandatory;\n}\n.swiper-css-mode.swiper-vertical > .swiper-wrapper {\n scroll-snap-type: y mandatory;\n}\n.swiper-css-mode.swiper-free-mode > .swiper-wrapper {\n scroll-snap-type: none;\n}\n.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: none;\n}\n.swiper-css-mode.swiper-centered > .swiper-wrapper::before {\n content: '';\n flex-shrink: 0;\n order: 9999;\n}\n.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: center center;\n scroll-snap-stop: always;\n}\n.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child {\n margin-inline-start: var(--swiper-centered-offset-before);\n}\n.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before {\n height: 100%;\n min-height: 1px;\n width: var(--swiper-centered-offset-after);\n}\n.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child {\n margin-block-start: var(--swiper-centered-offset-before);\n}\n.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before {\n width: 100%;\n min-width: 1px;\n height: var(--swiper-centered-offset-after);\n}\n/* Slide styles start */\n/* 3D Shadows */\n.swiper-3d .swiper-slide-shadow,\n.swiper-3d .swiper-slide-shadow-left,\n.swiper-3d .swiper-slide-shadow-right,\n.swiper-3d .swiper-slide-shadow-top,\n.swiper-3d .swiper-slide-shadow-bottom,\n.swiper-3d .swiper-slide-shadow,\n.swiper-3d .swiper-slide-shadow-left,\n.swiper-3d .swiper-slide-shadow-right,\n.swiper-3d .swiper-slide-shadow-top,\n.swiper-3d .swiper-slide-shadow-bottom {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 10;\n}\n.swiper-3d .swiper-slide-shadow {\n background: rgba(0, 0, 0, 0.15);\n}\n.swiper-3d .swiper-slide-shadow-left {\n background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-right {\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-top {\n background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-bottom {\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-lazy-preloader {\n width: 42px;\n height: 42px;\n position: absolute;\n left: 50%;\n top: 50%;\n margin-left: -21px;\n margin-top: -21px;\n z-index: 10;\n transform-origin: 50%;\n box-sizing: border-box;\n border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));\n border-radius: 50%;\n border-top-color: transparent;\n}\n.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader,\n.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader {\n animation: swiper-preloader-spin 1s infinite linear;\n}\n.swiper-lazy-preloader-white {\n --swiper-preloader-color: #fff;\n}\n.swiper-lazy-preloader-black {\n --swiper-preloader-color: #000;\n}\n@keyframes swiper-preloader-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n/* Slide styles end */\n.swiper-virtual .swiper-slide {\n -webkit-backface-visibility: hidden;\n transform: translateZ(0);\n}\n.swiper-virtual.swiper-css-mode .swiper-wrapper::after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n pointer-events: none;\n}\n.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after {\n height: 1px;\n width: var(--swiper-virtual-size);\n}\n.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after {\n width: 1px;\n height: var(--swiper-virtual-size);\n}\n:root {\n --swiper-navigation-size: 44px;\n /*\n --swiper-navigation-top-offset: 50%;\n --swiper-navigation-sides-offset: 10px;\n --swiper-navigation-color: var(--swiper-theme-color);\n */\n}\n.swiper-button-prev,\n.swiper-button-next {\n position: absolute;\n top: var(--swiper-navigation-top-offset, 50%);\n width: calc(var(--swiper-navigation-size) / 44 * 27);\n height: var(--swiper-navigation-size);\n margin-top: calc(0px - (var(--swiper-navigation-size) / 2));\n z-index: 10;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--swiper-navigation-color, var(--swiper-theme-color));\n}\n.swiper-button-prev.swiper-button-disabled,\n.swiper-button-next.swiper-button-disabled {\n opacity: 0.35;\n cursor: auto;\n pointer-events: none;\n}\n.swiper-button-prev.swiper-button-hidden,\n.swiper-button-next.swiper-button-hidden {\n opacity: 0;\n cursor: auto;\n pointer-events: none;\n}\n.swiper-navigation-disabled .swiper-button-prev,\n.swiper-navigation-disabled .swiper-button-next {\n display: none !important;\n}\n.swiper-button-prev svg,\n.swiper-button-next svg {\n width: 100%;\n height: 100%;\n object-fit: contain;\n transform-origin: center;\n}\n.swiper-rtl .swiper-button-prev svg,\n.swiper-rtl .swiper-button-next svg {\n transform: rotate(180deg);\n}\n.swiper-button-prev,\n.swiper-rtl .swiper-button-next {\n left: var(--swiper-navigation-sides-offset, 10px);\n right: auto;\n}\n.swiper-button-next,\n.swiper-rtl .swiper-button-prev {\n right: var(--swiper-navigation-sides-offset, 10px);\n left: auto;\n}\n.swiper-button-lock {\n display: none;\n}\n/* Navigation font start */\n.swiper-button-prev:after,\n.swiper-button-next:after {\n font-family: swiper-icons;\n font-size: var(--swiper-navigation-size);\n text-transform: none !important;\n letter-spacing: 0;\n font-variant: initial;\n line-height: 1;\n}\n.swiper-button-prev:after,\n.swiper-rtl .swiper-button-next:after {\n content: 'prev';\n}\n.swiper-button-next,\n.swiper-rtl .swiper-button-prev {\n right: var(--swiper-navigation-sides-offset, 10px);\n left: auto;\n}\n.swiper-button-next:after,\n.swiper-rtl .swiper-button-prev:after {\n content: 'next';\n}\n/* Navigation font end */\n:root {\n /*\n --swiper-pagination-color: var(--swiper-theme-color);\n --swiper-pagination-left: auto;\n --swiper-pagination-right: 8px;\n --swiper-pagination-bottom: 8px;\n --swiper-pagination-top: auto;\n --swiper-pagination-fraction-color: inherit;\n --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25);\n --swiper-pagination-progressbar-size: 4px;\n --swiper-pagination-bullet-size: 8px;\n --swiper-pagination-bullet-width: 8px;\n --swiper-pagination-bullet-height: 8px;\n --swiper-pagination-bullet-border-radius: 50%;\n --swiper-pagination-bullet-inactive-color: #000;\n --swiper-pagination-bullet-inactive-opacity: 0.2;\n --swiper-pagination-bullet-opacity: 1;\n --swiper-pagination-bullet-horizontal-gap: 4px;\n --swiper-pagination-bullet-vertical-gap: 6px;\n */\n}\n.swiper-pagination {\n position: absolute;\n text-align: center;\n transition: 300ms opacity;\n transform: translate3d(0, 0, 0);\n z-index: 10;\n}\n.swiper-pagination.swiper-pagination-hidden {\n opacity: 0;\n}\n.swiper-pagination-disabled > .swiper-pagination,\n.swiper-pagination.swiper-pagination-disabled {\n display: none !important;\n}\n/* Common Styles */\n.swiper-pagination-fraction,\n.swiper-pagination-custom,\n.swiper-horizontal > .swiper-pagination-bullets,\n.swiper-pagination-bullets.swiper-pagination-horizontal {\n bottom: var(--swiper-pagination-bottom, 8px);\n top: var(--swiper-pagination-top, auto);\n left: 0;\n width: 100%;\n}\n/* Bullets */\n.swiper-pagination-bullets-dynamic {\n overflow: hidden;\n font-size: 0;\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transform: scale(0.33);\n position: relative;\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {\n transform: scale(1);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {\n transform: scale(1);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {\n transform: scale(0.66);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {\n transform: scale(0.33);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {\n transform: scale(0.66);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {\n transform: scale(0.33);\n}\n.swiper-pagination-bullet {\n width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px));\n height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px));\n display: inline-block;\n border-radius: var(--swiper-pagination-bullet-border-radius, 50%);\n background: var(--swiper-pagination-bullet-inactive-color, #000);\n opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2);\n}\nbutton.swiper-pagination-bullet {\n border: none;\n margin: 0;\n padding: 0;\n box-shadow: none;\n -webkit-appearance: none;\n appearance: none;\n}\n.swiper-pagination-clickable .swiper-pagination-bullet {\n cursor: pointer;\n}\n.swiper-pagination-bullet:only-child {\n display: none !important;\n}\n.swiper-pagination-bullet-active {\n opacity: var(--swiper-pagination-bullet-opacity, 1);\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\n}\n.swiper-vertical > .swiper-pagination-bullets,\n.swiper-pagination-vertical.swiper-pagination-bullets {\n right: var(--swiper-pagination-right, 8px);\n left: var(--swiper-pagination-left, auto);\n top: 50%;\n transform: translate3d(0px, -50%, 0);\n}\n.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet,\n.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet {\n margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0;\n display: block;\n}\n.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,\n.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\n top: 50%;\n transform: translateY(-50%);\n width: 8px;\n}\n.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,\n.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n display: inline-block;\n transition: 200ms transform, 200ms top;\n}\n.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet,\n.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet {\n margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px);\n}\n.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,\n.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\n left: 50%;\n transform: translateX(-50%);\n white-space: nowrap;\n}\n.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,\n.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transition: 200ms transform, 200ms left;\n}\n.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transition: 200ms transform, 200ms right;\n}\n/* Fraction */\n.swiper-pagination-fraction {\n color: var(--swiper-pagination-fraction-color, inherit);\n}\n/* Progress */\n.swiper-pagination-progressbar {\n background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25));\n position: absolute;\n}\n.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n transform: scale(0);\n transform-origin: left top;\n}\n.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n transform-origin: right top;\n}\n.swiper-horizontal > .swiper-pagination-progressbar,\n.swiper-pagination-progressbar.swiper-pagination-horizontal,\n.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,\n.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite {\n width: 100%;\n height: var(--swiper-pagination-progressbar-size, 4px);\n left: 0;\n top: 0;\n}\n.swiper-vertical > .swiper-pagination-progressbar,\n.swiper-pagination-progressbar.swiper-pagination-vertical,\n.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,\n.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite {\n width: var(--swiper-pagination-progressbar-size, 4px);\n height: 100%;\n left: 0;\n top: 0;\n}\n.swiper-pagination-lock {\n display: none;\n}\n:root {\n /*\n --swiper-scrollbar-border-radius: 10px;\n --swiper-scrollbar-top: auto;\n --swiper-scrollbar-bottom: 4px;\n --swiper-scrollbar-left: auto;\n --swiper-scrollbar-right: 4px;\n --swiper-scrollbar-sides-offset: 1%;\n --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1);\n --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5);\n --swiper-scrollbar-size: 4px;\n */\n}\n.swiper-scrollbar {\n border-radius: var(--swiper-scrollbar-border-radius, 10px);\n position: relative;\n -ms-touch-action: none;\n background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1));\n}\n.swiper-scrollbar-disabled > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-disabled {\n display: none !important;\n}\n.swiper-horizontal > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-horizontal {\n position: absolute;\n left: var(--swiper-scrollbar-sides-offset, 1%);\n bottom: var(--swiper-scrollbar-bottom, 4px);\n top: var(--swiper-scrollbar-top, auto);\n z-index: 50;\n height: var(--swiper-scrollbar-size, 4px);\n width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%));\n}\n.swiper-vertical > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-vertical {\n position: absolute;\n left: var(--swiper-scrollbar-left, auto);\n right: var(--swiper-scrollbar-right, 4px);\n top: var(--swiper-scrollbar-sides-offset, 1%);\n z-index: 50;\n width: var(--swiper-scrollbar-size, 4px);\n height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%));\n}\n.swiper-scrollbar-drag {\n height: 100%;\n width: 100%;\n position: relative;\n background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5));\n border-radius: var(--swiper-scrollbar-border-radius, 10px);\n left: 0;\n top: 0;\n}\n.swiper-scrollbar-cursor-drag {\n cursor: move;\n}\n.swiper-scrollbar-lock {\n display: none;\n}\n/* Zoom container styles start */\n.swiper-zoom-container {\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n}\n.swiper-zoom-container > img,\n.swiper-zoom-container > svg,\n.swiper-zoom-container > canvas {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n}\n/* Zoom container styles end */\n.swiper-slide-zoomed {\n cursor: move;\n touch-action: none;\n}\n/* a11y */\n.swiper .swiper-notification {\n position: absolute;\n left: 0;\n top: 0;\n pointer-events: none;\n opacity: 0;\n z-index: -1000;\n}\n.swiper-free-mode > .swiper-wrapper {\n transition-timing-function: ease-out;\n margin: 0 auto;\n}\n.swiper-grid > .swiper-wrapper {\n flex-wrap: wrap;\n}\n.swiper-grid-column > .swiper-wrapper {\n flex-wrap: wrap;\n flex-direction: column;\n}\n.swiper-fade.swiper-free-mode .swiper-slide {\n transition-timing-function: ease-out;\n}\n.swiper-fade .swiper-slide {\n pointer-events: none;\n transition-property: opacity;\n}\n.swiper-fade .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-fade .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-fade .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-cube {\n overflow: visible;\n}\n.swiper-cube .swiper-slide {\n pointer-events: none;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n z-index: 1;\n visibility: hidden;\n transform-origin: 0 0;\n width: 100%;\n height: 100%;\n}\n.swiper-cube .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-cube.swiper-rtl .swiper-slide {\n transform-origin: 100% 0;\n}\n.swiper-cube .swiper-slide-active,\n.swiper-cube .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-cube .swiper-slide-active,\n.swiper-cube .swiper-slide-next,\n.swiper-cube .swiper-slide-prev {\n pointer-events: auto;\n visibility: visible;\n}\n.swiper-cube .swiper-cube-shadow {\n position: absolute;\n left: 0;\n bottom: 0px;\n width: 100%;\n height: 100%;\n opacity: 0.6;\n z-index: 0;\n}\n.swiper-cube .swiper-cube-shadow:before {\n content: '';\n background: #000;\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n filter: blur(50px);\n}\n.swiper-cube .swiper-slide-next + .swiper-slide {\n pointer-events: auto;\n visibility: visible;\n}\n/* Cube slide shadows start */\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top,\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right {\n z-index: 0;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n/* Cube slide shadows end */\n.swiper-flip {\n overflow: visible;\n}\n.swiper-flip .swiper-slide {\n pointer-events: none;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n z-index: 1;\n}\n.swiper-flip .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-flip .swiper-slide-active,\n.swiper-flip .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n/* Flip slide shadows start */\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top,\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right {\n z-index: 0;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n/* Flip slide shadows end */\n.swiper-creative .swiper-slide {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n overflow: hidden;\n transition-property: transform, opacity, height;\n}\n.swiper-cards {\n overflow: visible;\n}\n.swiper-cards .swiper-slide {\n transform-origin: center bottom;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n overflow: hidden;\n}\n\n/* === Photo Browser === */\n:root {\n --f7-photobrowser-bg-color: #fff;\n --f7-photobrowser-bars-bg-color: rgba(var(--f7-bars-bg-color-rgb), 0.95);\n --f7-photobrowser-bars-text-color: var(--f7-bars-text-color);\n --f7-photobrowser-bars-link-color: var(--f7-bars-link-color);\n --f7-photobrowser-caption-font-size: 13px;\n --f7-photobrowser-caption-font-weight: 500;\n --f7-photobrowser-caption-light-text-color: #000;\n --f7-photobrowser-caption-dark-text-color: #fff;\n --f7-photobrowser-exposed-bg-color: #000;\n --f7-photobrowser-dark-bg-color: #000;\n --f7-photobrowser-dark-bars-bg-color: rgba(27, 27, 27, 0.8);\n --f7-photobrowser-dark-bars-text-color: #fff;\n --f7-photobrowser-dark-bars-link-color: #fff;\n}\n.photo-browser {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 400;\n}\n.photo-browser-standalone.modal-in {\n transition-duration: 0ms;\n animation: photo-browser-in 400ms;\n}\n.photo-browser-standalone.modal-out {\n transition-duration: 0ms;\n animation: photo-browser-out 400ms !important;\n}\n.photo-browser-standalone.modal-out.swipe-close-to-bottom,\n.photo-browser-standalone.modal-out.swipe-close-to-top {\n animation: none !important;\n}\n.photo-browser-standalone.photo-browser-transitioning {\n transition: 400ms;\n animation: none !important;\n}\n.photo-browser-popup.modal-out.swipe-close-to-bottom,\n.photo-browser-popup.modal-out.swipe-close-to-top {\n transition-duration: 300ms;\n}\n.photo-browser-popup.modal-out.swipe-close-to-bottom {\n transform: translate3d(0, 100vh, 0);\n}\n.photo-browser-popup.modal-out.swipe-close-to-top {\n transform: translate3d(0, -100vh, 0);\n}\n.photo-browser-page {\n background: none;\n}\n.photo-browser-page .toolbar {\n transform: none;\n}\n.photo-browser-popup {\n background: none;\n}\n.photo-browser-of {\n margin: 0 5px;\n}\n.photo-browser-captions {\n pointer-events: none;\n position: absolute;\n left: 0;\n width: 100%;\n bottom: var(--f7-safe-area-bottom);\n z-index: 10;\n opacity: 1;\n transition-duration: 400ms;\n}\n.photo-browser-captions.photo-browser-captions-exposed {\n opacity: 0;\n}\n.toolbar ~ .toolbar.photo-browser-thumbs {\n bottom: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n}\n.page ~ .photo-browser-page:not(.photo-browser-exposed) .toolbar ~ .toolbar.photo-browser-thumbs,\n.photo-browser-popup:not(.photo-browser-exposed) .toolbar ~ .toolbar.photo-browser-thumbs,\n.photo-browser-standalone:not(.photo-browser-exposed) .toolbar ~ .toolbar.photo-browser-thumbs {\n height: var(--f7-toolbar-height);\n}\n.photo-browser-exposed .toolbar ~ .toolbar.photo-browser-thumbs {\n transform: translate3d(0, calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom, 0)), 0);\n}\n.photo-browser-exposed .toolbar ~ .toolbar.photo-browser-thumbs .swiper {\n height: calc(100% - var(--f7-safe-area-bottom, 0));\n}\n.navbar + .toolbar.photo-browser-thumbs .swiper {\n height: calc(100% - var(--f7-safe-area-bottom, 0));\n}\n.toolbar ~ .photo-browser-captions {\n bottom: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n transform: translate3d(0, 0px, 0);\n}\n.toolbar ~ .photo-browser-captions.photo-browser-captions-exposed {\n transform: translate3d(0, 0px, 0);\n}\n.toolbar ~ .toolbar ~ .photo-browser-captions {\n bottom: calc(var(--f7-toolbar-height) * 2 + var(--f7-safe-area-bottom));\n}\n.toolbar ~ .toolbar ~ .photo-browser-captions.photo-browser-captions-exposed {\n transform: translate3d(0, var(--f7-toolbar-height), 0);\n}\n.photo-browser-thumbs {\n transition-property: transform, background-color, color;\n}\n.photo-browser-thumbs .swiper {\n width: 100%;\n height: 100%;\n}\n.photo-browser-thumbs .swiper-slide {\n width: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.photo-browser-thumbs img {\n width: auto;\n height: 75%;\n display: block;\n border-radius: 2px;\n min-width: 4px;\n}\n.photo-browser-thumbs .swiper-slide img {\n transform: translateX(-4px);\n transition-duration: 150ms;\n}\n.photo-browser-thumbs .swiper-slide-active img {\n transform: scale(1.2);\n}\n.photo-browser-thumbs .swiper-slide-active ~ .swiper-slide img {\n transform: translateX(4px);\n}\n.photo-browser-caption {\n box-sizing: border-box;\n transition-duration: 400ms;\n position: absolute;\n bottom: 0;\n left: 0;\n opacity: 0;\n padding: 4px 5px;\n width: 100%;\n text-align: center;\n font-size: var(--f7-photobrowser-caption-font-size);\n font-weight: var(--f7-photobrowser-caption-font-weight);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .photo-browser-caption {\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.photo-browser-caption:empty {\n display: none;\n}\n.photo-browser-caption.photo-browser-caption-active {\n opacity: 1;\n}\n.photo-browser-captions-light .photo-browser-caption {\n color: var(--f7-photobrowser-caption-light-text-color);\n}\n.photo-browser-captions-dark .photo-browser-caption,\n.dark .photo-browser-caption {\n color: var(--f7-photobrowser-caption-dark-text-color);\n}\n.photo-browser-swiper-container {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n background: var(--f7-photobrowser-bg-color);\n transition: 400ms;\n transition-property: background-color;\n touch-action: none;\n}\n.photo-browser-prev.swiper-button-disabled,\n.photo-browser-next.swiper-button-disabled {\n opacity: 0.3;\n pointer-events: none;\n}\n.photo-browser-slide {\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n box-sizing: border-box;\n}\n.photo-browser-slide span.swiper-zoom-container {\n display: none;\n}\n.photo-browser-slide img {\n width: auto;\n height: auto;\n max-width: 100%;\n max-height: 100%;\n display: none;\n}\n.photo-browser-slide.swiper-slide-active span.swiper-zoom-container,\n.photo-browser-slide.swiper-slide-next span.swiper-zoom-container,\n.photo-browser-slide.swiper-slide-prev span.swiper-zoom-container {\n display: flex;\n}\n.photo-browser-slide.swiper-slide-active img,\n.photo-browser-slide.swiper-slide-next img,\n.photo-browser-slide.swiper-slide-prev img {\n display: inline;\n}\n.photo-browser-slide.swiper-slide-active.photo-browser-slide-lazy .preloader,\n.photo-browser-slide.swiper-slide-next.photo-browser-slide-lazy .preloader,\n.photo-browser-slide.swiper-slide-prev.photo-browser-slide-lazy .preloader {\n display: block;\n}\n.photo-browser-slide iframe {\n width: 100%;\n height: 100%;\n}\n.photo-browser-slide .preloader {\n display: none;\n position: absolute;\n width: 42px;\n height: 42px;\n margin-left: -21px;\n margin-top: -21px;\n left: 50%;\n top: 50%;\n}\n.navbar-photo-browser .right .link svg,\n.navbar-photo-browser .right .link i {\n width: 24px;\n height: 24px;\n display: block;\n}\n.photo-browser-page .navbar-bg,\n.navbar-photo-browser .navbar-bg,\n.photo-browser-page .toolbar,\n.photo-browser-caption {\n background-color: var(--f7-photobrowser-bars-bg-color, rgba(var(--f7-bars-bg-color-rgb), 0.95));\n}\n.photo-browser-page {\n touch-action: none;\n}\n.photo-browser-page .navbar,\n.photo-browser-page .toolbar {\n transform: translate3d(0, 0, 0);\n transition-duration: 400ms;\n color: var(--f7-photobrowser-bars-text-color, var(--f7-bars-text-color));\n}\n.photo-browser-page .navbar a,\n.photo-browser-page .toolbar a {\n color: var(--f7-photobrowser-bars-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.photo-browser-exposed .navbar,\n.photo-browser-exposed .toolbar:not(.photo-browser-thumbs) {\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n}\n.photo-browser-exposed .toolbar:not(.photo-browser-thumbs) ~ .photo-browser-captions,\n.photo-browser-exposed .toolbar ~ .toolbar.photo-browser-thumbs ~ .photo-browser-captions {\n transform: translate3d(0, var(--f7-toolbar-height), 0);\n}\n.photo-browser-exposed .photo-browser-swiper-container {\n background: var(--f7-photobrowser-exposed-bg-color);\n}\n.photo-browser-exposed .photo-browser-thumbs,\n.photo-browser-dark .photo-browser-thumbs,\n.photo-browser-exposed .toolbar,\n.photo-browser-dark .toolbar {\n background-color: var(--f7-photobrowser-dark-bars-bg-color);\n}\n.photo-browser-exposed .photo-browser-caption,\n.photo-browser-dark .photo-browser-caption {\n color: var(--f7-photobrowser-caption-dark-text-color);\n background-color: var(--f7-photobrowser-dark-bars-bg-color);\n}\n.view.with-photo-browser-page-exposed .navbar {\n opacity: 0;\n pointer-events: none;\n}\n.photo-browser-page .toolbar:before,\n.photo-browser-page .toolbar:after {\n display: none !important;\n}\n.photo-browser-page-dark .navbar-bg,\n.navbar-photo-browser-dark .navbar-bg {\n background: var(--f7-photobrowser-dark-bars-bg-color);\n}\n.photo-browser-page-dark .navbar-bg:before,\n.navbar-photo-browser-dark .navbar-bg:before,\n.photo-browser-page-dark .navbar-bg:after,\n.navbar-photo-browser-dark .navbar-bg:after {\n display: none !important;\n}\n.navbar-photo-browser-dark,\n.photo-browser-dark .navbar,\n.photo-browser-dark .toolbar,\n.photo-browser-page-dark .navbar,\n.photo-browser-page-dark .toolbar {\n color: var(--f7-photobrowser-dark-bars-text-color);\n}\n.navbar-photo-browser-dark a,\n.photo-browser-dark .navbar a,\n.photo-browser-dark .toolbar a,\n.photo-browser-page-dark .navbar a,\n.photo-browser-page-dark .toolbar a {\n color: var(--f7-photobrowser-dark-bars-link-color);\n}\n.photo-browser-dark .photo-browser-swiper-container,\n.photo-browser-page-dark .photo-browser-swiper-container {\n background: var(--f7-photobrowser-dark-bg-color);\n}\n@keyframes photo-browser-in {\n 0% {\n transform: translate3d(0, 0, 0) scale(0.5);\n opacity: 0;\n }\n 50% {\n transform: translate3d(0, 0, 0) scale(1.05);\n opacity: 1;\n }\n 100% {\n transform: translate3d(0, 0, 0) scale(1);\n opacity: 1;\n }\n}\n@keyframes photo-browser-out {\n 0% {\n transform: translate3d(0, 0, 0) scale(1);\n opacity: 1;\n }\n 50% {\n transform: translate3d(0, 0, 0) scale(1.05);\n opacity: 1;\n }\n 100% {\n transform: translate3d(0, 0, 0) scale(0.5);\n opacity: 0;\n }\n}\n/* === Notifications === */\n:root {\n --f7-notification-max-width: 568px;\n --f7-notification-subtitle-text-transform: none;\n --f7-notification-subtitle-line-height: 1.35;\n --f7-notification-text-text-transform: none;\n --f7-notification-text-font-weight: 400;\n}\n.ios {\n --f7-notification-margin: 8px;\n --f7-notification-padding-horizontal: 10px;\n --f7-notification-padding-vertical: 10px;\n --f7-notification-border-radius: 12px;\n --f7-notification-box-shadow: 0px 5px 25px -10px rgba(0, 0, 0, 0.7);\n --f7-notification-icon-size: 20px;\n --f7-notification-title-font-size: 13px;\n --f7-notification-title-text-transform: uppercase;\n --f7-notification-title-line-height: 1.4;\n --f7-notification-title-font-weight: 400;\n --f7-notification-title-letter-spacing: 0.02em;\n --f7-notification-title-right-font-size: 13px;\n --f7-notification-subtitle-font-size: 15px;\n --f7-notification-subtitle-font-weight: 600;\n --f7-notification-text-font-size: 15px;\n --f7-notification-text-line-height: 1.2;\n --f7-notification-bg-color: rgba(250, 250, 250, 0.95);\n --f7-notification-bg-color-rgb: 255, 255, 255;\n --f7-notification-title-color: #000;\n --f7-notification-title-right-color: rgba(0, 0, 0, 0.45);\n --f7-notification-subtitle-color: #000;\n --f7-notification-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-notification-bg-color: rgba(30, 30, 30, 0.95);\n --f7-notification-bg-color-rgb: 30, 30, 30;\n --f7-notification-title-color: #fff;\n --f7-notification-text-color: #fff;\n --f7-notification-subtitle-color: #fff;\n --f7-notification-title-right-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-notification-margin: 16px;\n --f7-notification-padding-vertical: 20px;\n --f7-notification-padding-horizontal: 16px;\n --f7-notification-border-radius: 16px;\n --f7-notification-box-shadow: none;\n --f7-notification-icon-size: 24px;\n --f7-notification-title-font-size: 16px;\n --f7-notification-title-text-transform: none;\n --f7-notification-title-line-height: 1.35;\n --f7-notification-title-font-weight: 500;\n --f7-notification-title-right-font-size: 12px;\n --f7-notification-subtitle-font-size: 14px;\n --f7-notification-subtitle-font-weight: 400;\n --f7-notification-text-font-size: 14px;\n --f7-notification-text-line-height: 1.35;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-notification-title-color: var(--f7-md-on-surface);\n --f7-notification-bg-color: var(--f7-md-surface-5);\n --f7-notification-text-color: var(--f7-md-on-surface-variant);\n --f7-notification-title-right-color: var(--f7-md-on-surface-variant);\n --f7-notification-subtitle-color: var(--f7-md-on-surface);\n}\n.notification {\n position: absolute;\n left: var(--f7-notification-margin);\n top: var(--f7-notification-margin);\n width: calc(100% - var(--f7-notification-margin) * 2);\n z-index: 20000;\n font-size: 14px;\n margin: 0;\n border: none;\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n direction: ltr;\n max-width: var(--f7-notification-max-width);\n padding: var(--f7-notification-padding-vertical) var(--f7-notification-padding-horizontal);\n border-radius: var(--f7-notification-border-radius);\n box-shadow: var(--f7-notification-box-shadow);\n background: var(--f7-notification-bg-color);\n margin-top: var(--f7-safe-area-top);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .notification {\n background-color: rgba(var(--f7-notification-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n@media (min-width: 568px) {\n .notification {\n left: 50%;\n width: var(--f7-notification-max-width);\n margin-left: calc(-1 * var(--f7-notification-max-width) / 2);\n }\n}\n.notification-title {\n color: var(--f7-notification-title-color, var(--f7-theme-color));\n font-size: var(--f7-notification-title-font-size);\n text-transform: var(--f7-notification-title-text-transform);\n line-height: var(--f7-notification-title-line-height);\n font-weight: var(--f7-notification-title-font-weight);\n letter-spacing: var(--f7-notification-title-letter-spacing);\n}\n.notification-subtitle {\n color: var(--f7-notification-subtitle-color);\n font-size: var(--f7-notification-subtitle-font-size);\n text-transform: var(--f7-notification-subtitle-text-transform);\n line-height: var(--f7-notification-subtitle-line-height);\n font-weight: var(--f7-notification-subtitle-font-weight);\n}\n.notification-text {\n color: var(--f7-notification-text-color);\n font-size: var(--f7-notification-text-font-size);\n text-transform: var(--f7-notification-text-text-transform);\n line-height: var(--f7-notification-text-line-height);\n font-weight: var(--f7-notification-text-font-weight);\n}\n.notification-title-right-text {\n color: var(--f7-notification-title-right-color);\n font-size: var(--f7-notification-title-right-font-size);\n}\n.notification-icon {\n font-size: 0;\n line-height: var(--f7-notification-icon-size);\n}\n.notification-icon i,\n.notification-icon {\n width: var(--f7-notification-icon-size) !important;\n height: var(--f7-notification-icon-size) !important;\n}\n.notification-icon i {\n font-size: var(--f7-notification-icon-size);\n}\n.notification-icon img {\n height: var(--f7-notification-icon-size);\n}\n.notification-header {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.notification-close-button {\n margin-left: auto;\n cursor: pointer;\n position: relative;\n}\n.notification-close-button:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n left: 50%;\n top: 50%;\n text-align: center;\n}\n.ios .notification {\n transition-duration: 450ms;\n transform: translate3d(0%, -200%, 0);\n}\n.ios .notification.modal-in {\n transform: translate3d(0%, 0%, 0);\n opacity: 1;\n}\n.ios .notification.modal-out {\n transform: translate3d(0%, -200%, 0);\n}\n.ios .notification-icon {\n margin-right: 8px;\n}\n.ios .notification-header + .notification-content {\n margin-top: 10px;\n}\n.ios .notification-title-right-text {\n margin-right: 6px;\n margin-left: auto;\n}\n.ios .notification-title-right-text + .notification-close-button {\n margin-left: 10px;\n}\n.ios .notification-close-button {\n font-size: 14px;\n width: 20px;\n height: 20px;\n opacity: 0.3;\n transition-duration: 300ms;\n}\n.ios .notification-close-button.active-state {\n transition-duration: 0ms;\n opacity: 0.1;\n}\n.ios .notification-close-button:after {\n color: #000;\n content: 'notification_close_ios';\n font-size: 0.65em;\n line-height: 44px;\n width: 44px;\n height: 44px;\n margin-left: -22px;\n margin-top: -22px;\n}\n.ios .dark .notification-close-button:after,\n.ios.dark .notification-close-button:after {\n color: #fff;\n}\n.md .notification {\n transform: translate3d(0, -150%, 0);\n}\n.md .notification.modal-in {\n transition-duration: 500ms;\n transform: translate3d(0, 0%, 0);\n transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n}\n.md .notification.modal-in.notification-transitioning {\n transition-duration: 200ms;\n}\n.md .notification.modal-out {\n animation: none;\n transition-duration: 200ms;\n transition-timing-function: ease-in;\n transform: translate3d(0, -150%, 0);\n}\n.md .notification-with-icon .notification-icon {\n position: absolute;\n left: var(--f7-notification-padding-horizontal);\n top: var(--f7-notification-padding-vertical);\n}\n.md .notification-with-icon .notification-content,\n.md .notification-with-icon .notification-header {\n margin-left: calc(var(--f7-notification-icon-size) + 16px);\n}\n.md .notification-icon {\n margin-right: 8px;\n}\n.md .notification-subtitle + .notification-text {\n margin-top: 4px;\n}\n.md .notification-header + .notification-content {\n margin-top: 8px;\n}\n.md .notification-title-right-text {\n margin-left: 4px;\n}\n.md .notification-title-right-text:before {\n content: '';\n width: 3px;\n height: 3px;\n border-radius: 50%;\n display: inline-block;\n vertical-align: middle;\n margin-right: 4px;\n background: var(--f7-notification-title-right-color);\n}\n.md .notification-close-button {\n width: 16px;\n height: 16px;\n transition-duration: 300ms;\n}\n.md .notification-close-button:before,\n.md .notification-close-button:after {\n width: 48px;\n height: 48px;\n left: 50%;\n top: 50%;\n margin-left: -24px;\n margin-top: -24px;\n}\n.md .notification-close-button:after {\n color: var(--f7-md-on-surface-variant);\n content: 'delete_round_md';\n line-height: 48px;\n font-size: 24px;\n}\n@keyframes notification-md-in {\n 0% {\n transform: translate3d(0, -150%, 0);\n }\n 50% {\n transform: translate3d(0, 10%, 0);\n }\n 100% {\n transform: translate3d(0, 0%, 0);\n }\n}\n/* === Autocomplete === */\n:root {\n --f7-autocomplete-dropdown-placeholder-color: #a9a9a9;\n --f7-autocomplete-dropdown-preloader-size: 20px;\n --f7-autocomplete-dropdown-font-size: var(--f7-list-font-size);\n /*\n --f7-autocomplete-dropdown-selected-bg-color: rgba(var(--f7-theme-color-rgb), 0.2);\n */\n}\n.ios {\n --f7-autocomplete-dropdown-box-shadow: 0px 3px 3px rgba(0, 0, 0, 0.2);\n --f7-autocomplete-dropdown-text-matching-font-weight: 600;\n --f7-autocomplete-dropdown-bg-color: #fff;\n --f7-autocomplete-dropdown-text-color: #000;\n --f7-autocomplete-dropdown-text-matching-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-autocomplete-dropdown-bg-color: #1c1c1d;\n --f7-autocomplete-dropdown-text-color: #fff;\n --f7-autocomplete-dropdown-text-matching-color: #fff;\n}\n.md {\n --f7-autocomplete-dropdown-box-shadow: none;\n --f7-autocomplete-dropdown-text-matching-font-weight: 500;\n --f7-autocomplete-dropdown-text-matching-color: #000;\n}\n.md .dark,\n.md.dark {\n --f7-autocomplete-dropdown-text-matching-color: #fff;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-autocomplete-dropdown-bg-color: var(--f7-md-surface-2);\n --f7-autocomplete-dropdown-text-color: var(--f7-md-on-surface);\n}\n.autocomplete-page .autocomplete-found {\n display: block;\n}\n.autocomplete-page .autocomplete-not-found {\n display: none;\n}\n.autocomplete-page .autocomplete-values {\n display: block;\n}\n.autocomplete-page .list ul:empty {\n display: none;\n}\n.autocomplete-preloader:not(.autocomplete-preloader-visible) {\n visibility: hidden;\n}\n.autocomplete-preloader:not(.autocomplete-preloader-visible),\n.autocomplete-preloader:not(.autocomplete-preloader-visible) * {\n animation: none;\n}\n.autocomplete-dropdown {\n background: var(--f7-autocomplete-dropdown-bg-color);\n box-shadow: var(--f7-autocomplete-dropdown-box-shadow);\n box-sizing: border-box;\n position: absolute;\n z-index: 500;\n width: 100%;\n right: 0;\n}\n.autocomplete-dropdown .autocomplete-dropdown-inner {\n position: relative;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n height: 100%;\n z-index: 1;\n}\n.autocomplete-dropdown .autocomplete-preloader {\n display: none;\n position: absolute;\n bottom: 100%;\n width: var(--f7-autocomplete-dropdown-preloader-size);\n height: var(--f7-autocomplete-dropdown-preloader-size);\n}\n.autocomplete-dropdown .autocomplete-preloader-visible {\n display: block;\n}\n.autocomplete-dropdown .autocomplete-dropdown-placeholder {\n color: var(--f7-autocomplete-dropdown-placeholder-color);\n}\n.autocomplete-dropdown .list {\n margin: 0;\n color: var(--f7-autocomplete-dropdown-text-color);\n font-size: var(--f7-autocomplete-dropdown-font-size);\n}\n.autocomplete-dropdown .list b {\n color: var(--f7-autocomplete-dropdown-text-matching-color);\n font-weight: var(--f7-autocomplete-dropdown-text-matching-font-weight);\n}\n.autocomplete-dropdown .list ul {\n background: none !important;\n}\n.autocomplete-dropdown .list ul:before,\n.autocomplete-dropdown .list ul:after {\n display: none !important;\n}\n.autocomplete-dropdown .autocomplete-dropdown-selected {\n background: var(--f7-autocomplete-dropdown-selected-bg-color, rgba(var(--f7-theme-color-rgb), 0.2));\n}\n.searchbar-input-wrap .autocomplete-dropdown {\n background-color: var(--f7-searchbar-input-bg-color, var(--f7-searchbar-bg-color));\n border-radius: var(--f7-searchbar-input-border-radius);\n margin-top: calc(-1 * var(--f7-searchbar-input-height));\n top: 100%;\n z-index: -1;\n}\n.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-inner {\n padding-top: var(--f7-searchbar-input-height);\n}\n.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-placeholder {\n color: var(--f7-searchbar-placeholder-color);\n}\n.searchbar-input-wrap .autocomplete-dropdown li:last-child {\n border-radius: 0 0 var(--f7-searchbar-input-border-radius) var(--f7-searchbar-input-border-radius);\n position: relative;\n overflow: hidden;\n}\n.searchbar-input-wrap .autocomplete-dropdown .item-content {\n padding-right: calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px));\n}\n.ios .autocomplete-dropdown .autocomplete-preloader {\n left: 16px;\n margin-bottom: 12px;\n}\n.md .autocomplete-page .navbar .autocomplete-preloader {\n margin-left: 8px;\n}\n.md .autocomplete-popup .navbar .autocomplete-preloader {\n margin-right: 8px;\n margin-left: 16px;\n}\n.md .autocomplete-dropdown .autocomplete-preloader {\n left: 16px;\n margin-bottom: 8px;\n}\n.md .autocomplete-dropdown .autocomplete-preloader circle {\n stroke-width: 3;\n}\n/* === Tooltip === */\n:root {\n --f7-tooltip-padding: 8px 16px;\n --f7-tooltip-font-size: 14px;\n --f7-tooltip-font-weight: 500;\n --f7-tooltip-desktop-padding: 6px 8px;\n --f7-tooltip-desktop-font-size: 12px;\n}\n.ios {\n --f7-tooltip-border-radius: 4px;\n --f7-tooltip-bg-color: rgba(0, 0, 0, 0.87);\n --f7-tooltip-text-color: #fff;\n}\n.md {\n --f7-tooltip-border-radius: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-tooltip-bg-color: var(--f7-md-secondary);\n --f7-tooltip-text-color: var(--f7-md-on-secondary);\n}\n.tooltip {\n position: absolute;\n z-index: 20000;\n background: var(--f7-tooltip-bg-color);\n border-radius: var(--f7-tooltip-border-radius);\n padding: var(--f7-tooltip-padding);\n color: var(--f7-tooltip-text-color);\n font-size: var(--f7-tooltip-font-size);\n font-weight: var(--f7-tooltip-font-weight);\n box-sizing: border-box;\n line-height: 1.2;\n opacity: 0;\n transform: scale(0.9);\n transition-duration: 150ms;\n transition-property: opacity, transform;\n z-index: 99000;\n}\n.tooltip.tooltip-in {\n transform: scale(1);\n opacity: 1;\n}\n.tooltip.tooltip-out {\n opacity: 0;\n transform: scale(1);\n}\n.device-desktop .tooltip {\n font-size: var(--f7-tooltip-desktop-font-size);\n padding: var(--f7-tooltip-desktop-padding);\n}\n/* === Gauge === */\n.gauge {\n position: relative;\n text-align: center;\n margin-left: auto;\n margin-right: auto;\n display: inline-block;\n}\n.gauge-svg,\n.gauge svg {\n max-width: 100%;\n height: auto;\n}\n.gauge-svg circle,\n.gauge svg circle,\n.gauge-svg path,\n.gauge svg path {\n transition-duration: 400ms;\n}\n/* === Skeleton === */\n:root {\n --skeleton-color: #ccc;\n --skeleton-icon-color: rgba(0, 0, 0, 0.25);\n}\n\n.skeleton-block {\n height: 1em;\n background: var(--skeleton-color) !important;\n width: 100%;\n display: block;\n}\n\n@font-face {\n font-family: \"skeleton\";\n src: url(\"data:application/font-woff;charset=utf-8;base64,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\") format(\"woff\");\n font-weight: 100, 200, 300, 400, 500, 600, 700, 800, 900;\n font-style: normal, italic;\n font-display: block;\n}\n.skeleton-text {\n font-family: \"skeleton\" !important;\n -webkit-user-select: none;\n user-select: none;\n}\n.skeleton-text, .skeleton-text * {\n color: var(--skeleton-color) !important;\n letter-spacing: -0.03em !important;\n}\n\n.skeleton-image {\n display: inline-block;\n}\n.skeleton-image svg {\n max-width: 100%;\n height: auto;\n}\n.skeleton-image polygon {\n fill: var(--skeleton-color);\n}\n.skeleton-image path {\n fill: var(--skeleton-icon-color);\n}\n\n.skeleton-avatar {\n display: inline-block;\n}\n.skeleton-avatar svg {\n max-width: 100%;\n height: auto;\n}\n.skeleton-avatar rect {\n fill: var(--skeleton-color);\n}\n.skeleton-avatar path {\n fill: var(--skeleton-icon-color);\n}\n\n.skeleton-effect-blink, .skeleton-effect-wave {\n -webkit-mask-image: linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%);\n mask-image: linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%);\n -webkit-mask-size: 200% 100%;\n mask-size: 200% 100%;\n -webkit-mask-repeat: repeat;\n mask-repeat: repeat;\n -webkit-mask-position: 50% top;\n mask-position: 50% top;\n animation: skeleton-effect-wave 1s infinite;\n}\n.skeleton-effect-fade {\n animation: skeleton-effect-fade 1s infinite;\n}\n.skeleton-effect-pulse {\n animation: skeleton-effect-pulse 1s infinite;\n}\n\n@keyframes skeleton-effect-fade {\n 0% {\n opacity: 1;\n }\n 50% {\n opacity: 0.2;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes skeleton-effect-wave {\n 0% {\n -webkit-mask-position: 50% top;\n mask-position: 50% top;\n }\n 100% {\n -webkit-mask-position: -150% top;\n mask-position: -150% top;\n }\n}\n@keyframes skeleton-effect-pulse {\n 0% {\n transform: scale(1);\n }\n 40% {\n transform: scale(1);\n }\n 50% {\n transform: scale(0.975);\n }\n 100% {\n transform: scale(1);\n }\n}\n:root {\n --skeleton-color: #ccc;\n --skeleton-icon-color: rgba(0, 0, 0, 0.25);\n}\n.dark {\n --skeleton-color: #515151;\n --skeleton-icon-color: rgba(255, 255, 255, 0.25);\n}\n/* === Color Picker === */\n:root {\n --f7-color-picker-popover-width: 350px;\n --f7-color-picker-slider-size: 6px;\n --f7-color-picker-slider-knob-size: 16px;\n --f7-color-picker-bar-size: 50px;\n --f7-color-picker-bar-min-height: 260px;\n --f7-color-picker-value-width: 64px;\n --f7-color-picker-value-height: 32px;\n --f7-color-picker-value-font-size: 16px;\n --f7-color-picker-value-border-radius: 4px;\n --f7-color-picker-hex-value-width: 84px;\n --f7-color-picker-label-font-size: 14px;\n --f7-color-picker-label-width: 10px;\n --f7-color-picker-label-height: 14px;\n --f7-color-picker-sb-spectrum-height: 260px;\n --f7-color-picker-sb-spectrum-handle-size: 16px;\n --f7-color-picker-wheel-width: 330px;\n --f7-color-picker-palette-value-width: 36px;\n --f7-color-picker-palette-value-height: 36px;\n --f7-color-picker-initial-current-color-height: 40px;\n --f7-color-picker-initial-current-color-border-radius: 4px;\n --f7-color-picker-sheet-bg-color: #fff;\n --f7-color-picker-popup-bg-color: #fff;\n --f7-color-picker-value-bg-color: rgba(0, 0, 0, 0.05);\n --f7-color-picker-group-bg-color: rgba(0, 0, 0, 0.05);\n --f7-color-picker-group-value-bg-color: #fff;\n}\n:root .dark,\n:root.dark {\n --f7-color-picker-sheet-bg-color: #121212;\n --f7-color-picker-popup-bg-color: #121212;\n --f7-color-picker-value-bg-color: rgba(255, 255, 255, 0.1);\n --f7-color-picker-group-bg-color: #000;\n --f7-color-picker-group-value-bg-color: rgba(255, 255, 255, 0.12);\n}\n.color-picker {\n overflow: hidden;\n width: 100%;\n display: flex;\n flex-direction: column;\n}\n.color-picker.color-picker-inline,\n.color-picker-popover .color-picker,\n.color-picker-popup .color-picker {\n position: relative;\n}\n.color-picker-sheet-modal {\n background: var(--f7-color-picker-sheet-bg-color);\n}\n.color-picker-sheet-modal:before {\n z-index: 600;\n}\n.color-picker-sheet-modal .sheet-modal-inner {\n margin-bottom: var(--f7-safe-area-bottom);\n}\n.color-picker-popup .page {\n background: var(--f7-color-picker-popup-bg-color);\n}\n.color-picker-popup .page-content {\n padding-bottom: var(--f7-safe-area-bottom);\n}\n.color-picker-popover .color-picker,\n.color-picker-popup .color-picker,\n.color-picker-page .color-picker {\n height: 100%;\n}\n.color-picker-popover .color-picker .toolbar,\n.color-picker-popup .color-picker .toolbar,\n.color-picker-page .color-picker .toolbar {\n position: absolute;\n}\n.color-picker-popover {\n width: var(--f7-color-picker-popover-width);\n max-width: 90vw;\n max-height: 80vh;\n}\n.md .color-picker-popover .popover-inner {\n padding: 8px;\n}\n.color-picker-popover .color-picker {\n max-height: 80vh;\n}\n.color-picker-popover .toolbar-top {\n border-top-left-radius: var(--f7-popover-border-radius);\n border-top-right-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .color-picker-module-palette {\n overflow: hidden;\n flex-shrink: 0;\n}\n.color-picker-popover .color-picker-module-palette:first-child {\n border-top-left-radius: var(--f7-popover-border-radius);\n border-top-right-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .color-picker-module-palette:last-child {\n border-bottom-left-radius: var(--f7-popover-border-radius);\n border-bottom-right-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .color-picker-module-palette:first-child:last-child {\n border-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .toolbar ~ .page-content .color-picker-module-palette:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.color-picker-popup .page-content,\n.color-picker-popover .page-content,\n.color-picker-sheet-modal .page-content,\n.color-picker-page .page-content {\n display: flex;\n justify-content: flex-start;\n align-items: stretch;\n flex-direction: column;\n overflow-x: hidden;\n}\n.color-picker-module {\n margin-top: 5px;\n}\n.color-picker-module:last-child {\n margin-bottom: 5px;\n}\n.color-picker-module-sb-spectrum,\n.color-picker-module-hs-spectrum {\n margin-left: 10px;\n margin-right: 10px;\n}\n.color-picker-module-sb-spectrum:first-child,\n.color-picker-module-hs-spectrum:first-child {\n margin-top: 10px;\n}\n.color-picker-module-sb-spectrum .color-picker-sb-spectrum,\n.color-picker-module-hs-spectrum .color-picker-sb-spectrum,\n.color-picker-module-sb-spectrum .color-picker-hs-spectrum,\n.color-picker-module-hs-spectrum .color-picker-hs-spectrum {\n height: var(--f7-color-picker-sb-spectrum-height);\n}\n.ios .color-picker-module-sb-spectrum .color-picker-sb-spectrum,\n.ios .color-picker-module-hs-spectrum .color-picker-sb-spectrum,\n.ios .color-picker-module-sb-spectrum .color-picker-hs-spectrum,\n.ios .color-picker-module-hs-spectrum .color-picker-hs-spectrum {\n border-radius: 4px;\n}\n.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum,\n.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum,\n.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum,\n.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum {\n border-radius: 12px;\n}\n.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum::after,\n.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum::after,\n.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum::after,\n.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum::after {\n border-radius: inherit;\n}\n.color-picker-sb-spectrum {\n background-color: #000;\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, #000 100%), linear-gradient(to left, rgba(255, 255, 255, 0) 0%, #fff 100%);\n position: relative;\n}\n.color-picker-hs-spectrum {\n position: relative;\n background-image: linear-gradient(to right, hsl(0, 100%, 50%), hsl(60, 100%, 50%), hsl(120, 100%, 50%), hsl(180, 100%, 50%), hsl(240, 100%, 50%), hsl(300, 100%, 50%), hsl(0, 100%, 50%));\n}\n.color-picker-hs-spectrum:after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), #ffffff);\n}\n.color-picker-sb-spectrum-handle,\n.color-picker-hs-spectrum-handle {\n width: 4px;\n height: 4px;\n position: absolute;\n left: -2px;\n top: -2px;\n z-index: 1;\n}\n.color-picker-sb-spectrum-handle:after,\n.color-picker-hs-spectrum-handle:after {\n background-color: inherit;\n content: '';\n position: absolute;\n width: var(--f7-color-picker-sb-spectrum-handle-size);\n height: var(--f7-color-picker-sb-spectrum-handle-size);\n border: 1px solid #fff;\n border-radius: 50%;\n box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.5);\n box-sizing: border-box;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n transition: 150ms;\n transition-property: transform;\n transform-origin: center;\n}\n.color-picker-sb-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after,\n.color-picker-hs-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after,\n.color-picker-sb-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,\n.color-picker-hs-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after {\n transform: scale(1.5) translate(-33.333%, -33.333%);\n}\n.color-picker-module-wheel {\n margin-left: 10px;\n margin-right: 10px;\n}\n.color-picker-wheel {\n position: relative;\n width: var(--f7-color-picker-wheel-width);\n max-width: 100%;\n height: auto;\n font-size: 0;\n margin-left: auto;\n margin-right: auto;\n}\n.color-picker-wheel svg {\n width: 100%;\n height: auto;\n}\n.color-picker-wheel .color-picker-wheel-handle {\n width: 16.66666667%;\n height: 16.66666667%;\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #fff;\n box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5);\n background: red;\n border-radius: 50%;\n left: 0;\n top: 0;\n}\n.color-picker-wheel .color-picker-sb-spectrum {\n width: 45%;\n height: 45%;\n left: 50%;\n top: 50%;\n transform: translate3d(-50%, -50%, 0);\n position: absolute;\n}\n.color-picker-slider-wrap {\n display: flex;\n align-items: center;\n margin-bottom: 2px;\n}\n.color-picker-slider-wrap + .color-picker-slider-wrap {\n margin-top: 5px;\n}\n.color-picker-hex-wrap {\n justify-content: space-between;\n display: flex;\n align-items: center;\n}\n.color-picker-slider-label,\n.color-picker-hex-label {\n font-size: var(--f7-color-picker-label-font-size);\n width: var(--f7-color-picker-label-size);\n flex-shrink: 0;\n margin-left: 12px;\n}\n.color-picker-hex-label {\n width: auto;\n}\n.color-picker-bar-value,\n.color-picker-slider-value,\n.color-picker-hex-value {\n width: var(--f7-color-picker-value-width);\n height: var(--f7-color-picker-value-height);\n background: var(--f7-color-picker-value-bg-color);\n border-radius: var(--f7-color-picker-value-border-radius);\n text-align: center;\n font-size: var(--f7-color-picker-value-font-size);\n display: flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n margin-right: 10px;\n}\n.color-picker-bar-value input,\n.color-picker-slider-value input,\n.color-picker-hex-value input {\n width: 100%;\n height: 100%;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n outline: 0;\n background: transparent;\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n text-align: center;\n display: block;\n border-radius: 4px;\n}\n.color-picker-bar-value input::-webkit-inner-spin-button,\n.color-picker-slider-value input::-webkit-inner-spin-button,\n.color-picker-hex-value input::-webkit-inner-spin-button,\n.color-picker-bar-value input::-webkit-outer-spin-button,\n.color-picker-slider-value input::-webkit-outer-spin-button,\n.color-picker-hex-value input::-webkit-outer-spin-button {\n -webkit-appearance: none;\n appearance: none;\n margin: 0;\n display: none;\n}\n.color-picker-hex-value {\n width: var(--f7-color-picker-hex-value-width);\n}\n.color-picker-hex-value:first-child {\n margin-right: auto;\n}\n.color-picker-slider {\n --f7-range-bar-active-bg-color: transparent;\n --f7-range-bar-size: var(--f7-color-picker-slider-size);\n --f7-range-bar-border-radius: var(--f7-color-picker-slider-size);\n --f7-range-knob-size: var(--f7-color-picker-slider-knob-size);\n --f7-range-knob-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n}\n.color-picker-slider .range-knob {\n transition-duration: 200ms;\n transition-property: transform;\n}\n.color-picker-slider .range-knob:after {\n width: 30px;\n height: 30px;\n margin-left: -16px;\n margin-top: -16px;\n}\n.color-picker-slider .range-knob-active-state .range-knob {\n transform: scale(1.5);\n}\n.md .color-picker-slider.range-slider-min:not(.range-slider-dual) .range-knob {\n background: var(--f7-range-knob-color) !important;\n border: none;\n}\n.color-picker-module-rgb-bars {\n display: flex;\n justify-content: space-around;\n justify-content: space-evenly;\n align-items: stretch;\n height: 100%;\n min-height: var(--f7-color-picker-bar-min-height);\n padding-bottom: 10px;\n padding-top: 10px;\n box-sizing: border-box;\n}\n.color-picker-bar-wrap {\n display: flex;\n align-items: center;\n flex-direction: column-reverse;\n}\n.color-picker-bar {\n --f7-range-bar-active-bg-color: transparent;\n --f7-range-bar-size: var(--f7-color-picker-bar-size);\n --f7-range-bar-border-radius: 2px;\n --f7-range-knob-size: 6px;\n --f7-range-knob-box-shadow: 0 0px 3px rgba(0, 0, 0, 0.3);\n --f7-range-knob-color: #fff;\n}\n.color-picker-bar .range-knob {\n transition-duration: 0ms;\n transition-property: transform;\n border-radius: 3px;\n}\n.color-picker-bar .range-knob-wrap {\n height: 6px;\n width: calc(var(--f7-color-picker-bar-size) - 4px);\n margin-left: calc(-0.5 * (var(--f7-color-picker-bar-size) - 4px));\n}\n.color-picker-bar .range-knob-active-state .range-knob {\n transform: scale(1);\n}\n.md .color-picker-bar.range-slider-min:not(.range-slider-dual) .range-knob {\n background: var(--f7-range-knob-color) !important;\n border: none;\n}\n.color-picker-bar-label {\n font-size: var(--f7-color-picker-label-size);\n margin-top: 12px;\n line-height: 1;\n height: var(--f7-color-picker-label-height);\n flex-shrink: 0;\n}\n.color-picker-bar-value {\n margin-left: 0;\n margin-bottom: 10px;\n}\n.color-picker-slider-alpha {\n --f7-range-knob-color: #fff;\n}\n.color-picker-slider-alpha .range-bar {\n background-image: linear-gradient(to left, rgba(0, 0, 0, 0), #000), linear-gradient(to right, rgba(255, 255, 255, 0.2) 50%, rgba(0, 0, 0, 0.2) 50%), linear-gradient(to left, rgba(255, 255, 255, 0.2) 50%, rgba(0, 0, 0, 0.2) 50%);\n background-size: 100% 100%,\n 6px 3px,\n 6px 3px;\n background-position: 0 0,\n 0px 3px,\n 0 0;\n background-repeat: repeat-y, repeat-x, repeat-x;\n}\n.color-picker-slider-hue .range-bar {\n background-image: linear-gradient(to left, hsl(0, 100%, 50%), hsl(60, 100%, 50%), hsl(120, 100%, 50%), hsl(180, 100%, 50%), hsl(240, 100%, 50%), hsl(300, 100%, 50%), hsl(0, 100%, 50%));\n}\n.color-picker-slider-brightness .range-bar {\n background-image: linear-gradient(to left, #000, #fff);\n}\n.color-picker-module-palette {\n margin-top: 16px;\n}\n.color-picker-module-palette:first-child {\n margin-top: 0;\n}\n.color-picker-module-palette:last-child {\n margin-bottom: 0;\n}\n.color-picker-module-palette:first-child:last-child {\n margin: 0;\n}\n.color-picker-palette {\n display: flex;\n flex-wrap: wrap;\n}\n.color-picker-palette-row {\n width: 100%;\n display: flex;\n flex-wrap: nowrap;\n}\n.color-picker-palette-row .color-picker-palette-value {\n width: 100%;\n}\n.color-picker-palette-value {\n width: var(--f7-color-picker-palette-value-width);\n height: var(--f7-color-picker-palette-value-height);\n cursor: pointer;\n}\n.color-picker-module-initial-current-colors,\n.color-picker-module-current-color {\n margin-left: 10px;\n margin-right: 10px;\n border-radius: var(--f7-color-picker-initial-current-color-border-radius);\n overflow: hidden;\n flex-shrink: 0;\n}\n.color-picker-initial-color,\n.color-picker-current-color {\n height: var(--f7-color-picker-initial-current-color-height);\n}\n.color-picker-initial-current-colors {\n display: flex;\n}\n.color-picker-initial-current-colors .color-picker-initial-color,\n.color-picker-initial-current-colors .color-picker-current-color {\n width: 50%;\n}\n.color-picker-module-rgb-sliders,\n.color-picker-module-hsb-sliders,\n.color-picker-module-alpha-slider,\n.color-picker-module-hue-slider,\n.color-picker-module-brightness-slider,\n.color-picker-module-hex {\n margin-left: 10px;\n margin-right: 10px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders,\n.color-picker-grouped-modules .color-picker-module-alpha-slider,\n.color-picker-grouped-modules .color-picker-module-hue-slider,\n.color-picker-grouped-modules .color-picker-module-brightness-slider,\n.color-picker-grouped-modules .color-picker-module-hex {\n background: var(--f7-color-picker-group-bg-color);\n padding: 8px;\n border-radius: 8px;\n margin-top: 16px;\n margin-left: 8px;\n margin-right: 8px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders:last-child,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders:last-child,\n.color-picker-grouped-modules .color-picker-module-alpha-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hue-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-brightness-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hex:last-child {\n margin-bottom: 16px;\n}\n.color-picker-grouped-modules .color-picker-slider-value,\n.color-picker-grouped-modules .color-picker-hex-value {\n background: var(--f7-color-picker-group-value-bg-color);\n}\n.color-picker-grouped-modules .color-picker-slider-label,\n.color-picker-grouped-modules .color-picker-hex-label {\n margin-right: 5px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:first-child {\n margin-right: 5px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:last-child {\n margin-left: 5px;\n}\n/* === Treeview === */\n:root {\n --f7-treeview-item-height: 34px;\n --f7-treeview-item-padding-left: 16px;\n --f7-treeview-item-padding-right: 16px;\n --f7-treeview-toggle-size: 24px;\n --f7-treeview-children-offset: 29px;\n --f7-treeview-label-font-weight: 400;\n --f7-treeview-label-text-color: inherit;\n --f7-treeview-icon-size: 24px;\n /*\n --f7-treeview-selectable-selected-bg-color: rgba(var(--f7-theme-color-rgb), 0.2);\n */\n --f7-treeview-toggle-color: rgba(0, 0, 0, 0.5);\n --f7-treeview-toggle-hover-bg-color: rgba(0, 0, 0, 0.1);\n --f7-treeview-toggle-pressed-bg-color: rgba(0, 0, 0, 0.15);\n --f7-treeview-icon-color: rgba(0, 0, 0, 0.5);\n --f7-treeview-selectable-hover-bg-color: rgba(0, 0, 0, 0.1);\n --f7-treeview-link-hover-bg-color: rgba(0, 0, 0, 0.1);\n --f7-treeview-link-pressed-bg-color: rgba(0, 0, 0, 0.15);\n}\n:root .dark,\n:root.dark {\n --f7-treeview-toggle-color: rgba(255, 255, 255, 0.5);\n --f7-treeview-toggle-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-treeview-toggle-pressed-bg-color: rgba(255, 255, 255, 0.1);\n --f7-treeview-icon-color: rgba(255, 255, 255, 0.75);\n --f7-treeview-selectable-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-treeview-link-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-treeview-link-pressed-bg-color: rgba(255, 255, 255, 0.11);\n}\n.ios {\n --f7-treeview-label-font-size: 17px;\n}\n.md {\n --f7-treeview-label-font-size: 16px;\n}\n.treeview-item-root {\n padding-right: var(--f7-treeview-item-padding-left);\n padding-left: var(--f7-treeview-item-padding-right);\n min-height: var(--f7-treeview-item-height);\n display: flex;\n align-items: center;\n justify-content: flex-start;\n}\n.treeview-item-content {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.treeview-item-content > i,\n.treeview-item-content > .f7-icons,\n.treeview-item-content > .material-icons {\n font-size: var(--f7-treeview-icon-size);\n color: var(--f7-treeview-icon-color);\n}\n.treeview-item-content:first-child {\n margin-right: calc(var(--f7-treeview-toggle-size) + 5px);\n}\n.treeview-item-content > * + * {\n margin-right: 5px;\n}\n.treeview-item-label {\n font-size: var(--f7-treeview-label-font-size);\n font-weight: var(--f7-treeview-label-font-weight);\n color: var(--f7-treeview-label-text-color);\n}\n.treeview-toggle {\n width: var(--f7-treeview-toggle-size);\n height: var(--f7-treeview-toggle-size);\n cursor: pointer;\n border-radius: 4px;\n background-color: rgba(0, 0, 0, 0);\n transition-duration: 200ms;\n position: relative;\n margin-left: 5px;\n}\n.treeview-toggle.active-state {\n background-color: var(--f7-treeview-toggle-pressed-bg-color);\n}\n.treeview-toggle:after {\n transition-duration: 200ms;\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n width: 0;\n height: 0;\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n transform: translate(-50%, -50%);\n border-right: 6px solid var(--f7-treeview-toggle-color);\n}\n.treeview-toggle-hidden {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n}\n.treeview-preloader {\n --f7-preloader-size: var(--f7-treeview-toggle-size);\n margin-left: calc(-1 * var(--f7-treeview-toggle-size));\n}\n.treeview-item-children {\n display: none;\n}\n.treeview-item-opened > .treeview-item-children {\n display: block;\n}\n.treeview-item-opened > .treeview-item-root .treeview-toggle:after {\n transform: translate(-50%, -50%) rotate(-90deg);\n}\na.treeview-item-root {\n color: var(--f7-treeview-label-text-color);\n}\n.treeview-item-selectable > .treeview-item-root,\n.treeview-item-selectable.treeview-item-root {\n cursor: pointer;\n transition-duration: 150ms;\n}\na.treeview-item-root {\n transition-duration: 150ms;\n}\na.treeview-item-root.active-state {\n background: var(--f7-treeview-link-pressed-bg-color);\n}\n.treeview-item-toggle > .treeview-item-root,\n.treeview-item-toggle.treeview-item-root {\n cursor: pointer;\n}\n.treeview-item-selected > .treeview-item-root,\n.treeview-item-selected.treeview-item-root {\n background: var(--f7-treeview-selectable-selected-bg-color, rgba(var(--f7-theme-color-rgb), 0.2));\n}\n.treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 1);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 2);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 3);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 4);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 5);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 6);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 7);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 8);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 9);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 10);\n}\n/* === Stepper === */\n:root {\n --f7-text-editor-font-size: inherit;\n --f7-text-editor-font-weight: inherit;\n --f7-text-editor-border-width: 1px;\n --f7-text-editor-height: 250px;\n --f7-text-editor-margin: 16px;\n --f7-text-editor-padding: 8px;\n --f7-text-editor-button-bg-color: transparent;\n --f7-text-editor-button-size: 28px;\n --f7-text-editor-button-icon-size: 20px;\n --f7-text-editor-button-margin: 2px;\n --f7-text-editor-text-color: #000;\n --f7-text-editor-bg-color: #fff;\n --f7-text-editor-button-divider-color: rgba(0, 0, 0, 0.15);\n}\n:root .dark,\n:root.dark {\n --f7-text-editor-bg-color: #121212;\n --f7-text-editor-text-color: #fff;\n --f7-text-editor-button-divider-color: rgba(255, 255, 255, 0.15);\n}\n.ios {\n --f7-text-editor-toolbar-padding: 6px;\n --f7-text-editor-button-border-radius: 2px;\n --f7-text-editor-placeholder-color: rgba(0, 0, 0, 0.35);\n --f7-text-editor-toolbar-border-color: rgba(0, 0, 0, 0.25);\n --f7-text-editor-toolbar-bg-color: #fff;\n --f7-text-editor-border-color: rgba(0, 0, 0, 0.1);\n --f7-text-editor-button-text-color: #333;\n}\n.ios .dark,\n.ios.dark {\n --f7-text-editor-placeholder-color: rgba(255, 255, 255, 0.35);\n --f7-text-editor-toolbar-bg-color: #121212;\n --f7-text-editor-toolbar-border-color: rgba(255, 255, 255, 0.1);\n --f7-text-editor-toolbar-bg-color: #202020;\n --f7-text-editor-border-color: rgba(255, 255, 255, 0.1);\n --f7-text-editor-button-text-color: #fff;\n}\n.md {\n --f7-text-editor-button-border-radius: 8px;\n --f7-text-editor-toolbar-padding: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-text-editor-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-text-editor-toolbar-bg-color: var(--f7-md-surface-1);\n --f7-text-editor-border-color: var(--f7-md-outline);\n --f7-text-editor-button-text-color: var(--f7-md-on-surface);\n}\n.text-editor {\n margin: var(--f7-text-editor-margin);\n background-color: var(--f7-text-editor-bg-color);\n display: block;\n position: relative;\n border: var(--f7-text-editor-border-width) solid var(--f7-text-editor-border-color);\n display: flex;\n flex-direction: column;\n align-items: stretch;\n height: var(--f7-text-editor-height);\n box-sizing: border-box;\n}\n.text-editor.text-editor-resizable {\n height: auto;\n}\n.text-editor-toolbar {\n display: flex;\n flex-wrap: wrap;\n background: var(--f7-text-editor-toolbar-bg-color);\n z-index: 100;\n position: relative;\n position: sticky;\n left: 0;\n top: 0;\n padding: var(--f7-text-editor-toolbar-padding);\n flex-shrink: 0;\n box-sizing: border-box;\n}\n.text-editor-toolbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-text-editor-toolbar-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\nbutton.text-editor-button {\n -webkit-appearance: none;\n appearance: none;\n border: none;\n padding: 0;\n margin: 0;\n outline: 0;\n font-family: inherit;\n background: transparent;\n cursor: pointer;\n box-shadow: none;\n border-radius: var(--f7-text-editor-button-border-radius);\n position: relative;\n z-index: 1;\n display: flex;\n width: auto;\n overflow: hidden;\n width: var(--f7-text-editor-button-size);\n height: var(--f7-text-editor-button-size);\n align-items: center;\n justify-content: center;\n margin: var(--f7-text-editor-button-margin);\n box-sizing: border-box;\n color: var(--f7-text-editor-button-text-color);\n background-color: var(--f7-text-editor-button-bg-color);\n flex-shrink: 0;\n}\nbutton.text-editor-button i,\nbutton.text-editor-button .f7-icons,\nbutton.text-editor-button .material-icons {\n font-size: var(--f7-text-editor-button-icon-size);\n font-style: normal;\n}\nbutton.text-editor-button i sup,\nbutton.text-editor-button .f7-icons sup,\nbutton.text-editor-button .material-icons sup,\nbutton.text-editor-button i sub,\nbutton.text-editor-button .f7-icons sub,\nbutton.text-editor-button .material-icons sub {\n font-size: 60%;\n}\n.text-editor-button-divider {\n width: 1px;\n background: var(--f7-text-editor-button-divider-color);\n margin: 0 2px;\n flex-shrink: 0;\n}\n.text-editor-content {\n -webkit-user-modify: read-write;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n outline: 0;\n height: 100%;\n -webkit-user-select: text;\n user-select: text;\n padding: var(--f7-text-editor-padding);\n overflow: auto;\n flex-shrink: 10;\n box-sizing: border-box;\n color: var(--f7-text-editor-text-color);\n font-size: var(--f7-text-editor-font-size);\n font-weight: var(--f7-text-editor-font-weight);\n}\n.text-editor-content .text-editor-placeholder {\n pointer-events: none;\n color: var(--f7-text-editor-placeholder-color);\n}\n.text-editor-content img {\n max-width: 100%;\n}\n.text-editor-content a {\n pointer-events: none;\n}\n.text-editor-popover {\n z-index: 12500;\n width: auto;\n max-width: 80vw;\n}\n.text-editor-popover .popover-inner {\n display: flex;\n flex-wrap: wrap;\n padding: 3px;\n}\n.text-editor-keyboard-toolbar {\n position: absolute;\n z-index: 6000;\n --f7-safe-area-bottom: 0px;\n}\n.text-editor-keyboard-toolbar .toolbar-inner {\n justify-content: flex-start !important;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.text-editor-keyboard-toolbar .toolbar-inner .text-editor-button-divider {\n height: 100%;\n}\n.item-input .text-editor {\n border: none;\n margin: 0;\n background-color: var(--f7-input-bg-color, transparent);\n}\n.item-input .text-editor-content {\n padding-top: var(--f7-textarea-padding-vertical);\n padding-bottom: var(--f7-textarea-padding-vertical);\n padding-left: var(--f7-input-padding-left);\n padding-right: var(--f7-input-padding-right);\n color: var(--f7-input-text-color);\n font-size: var(--f7-input-font-size);\n}\n.item-input .text-editor-toolbar {\n box-shadow: none;\n}\n.item-input .text-editor-toolbar:after {\n display: none !important;\n}\n.item-input-outline .text-editor-content {\n border-radius: var(--f7-input-outline-border-radius);\n}\n.ios button.text-editor-button {\n transition: opacity 300ms;\n}\n.ios button.text-editor-button.active-state {\n opacity: 0.3;\n transition-duration: 0ms;\n}\n.md button.text-editor-button {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n}\n.md .text-editor-keyboard-toolbar .toolbar-inner {\n padding-left: 8px;\n padding-right: 8px;\n}\n.pie-chart {\n position: relative;\n}\n.pie-chart svg {\n display: block;\n width: 100%;\n font-size: 0;\n height: auto;\n margin: 0 auto;\n}\n.pie-chart path {\n transition-duration: 150ms;\n}\n.pie-chart-hidden {\n opacity: 0.4;\n}\n.pie-chart-tooltip {\n pointer-events: none;\n text-align: left;\n font-size: 12px;\n line-height: 1.4;\n white-space: nowrap;\n width: auto;\n max-width: none;\n}\n.pie-chart-tooltip-label {\n display: flex;\n align-items: center;\n}\n.pie-chart-tooltip-color {\n display: inline-block;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n margin-right: 4px;\n}\n:root {\n --f7-area-chart-current-line-stroke-width: 2px;\n --f7-area-chart-current-line-stroke: rgba(0, 0, 0, 0.15);\n --f7-area-chart-axis-text-color: inherit;\n --f7-area-chart-axis-height: 1px;\n --f7-area-chart-axis-font-size: 10px;\n --f7-area-chart-axis-font-weight: 500;\n --f7-area-chart-tooltip-font-size: 12px;\n --f7-area-chart-tooltip-total-font-size: 16px;\n --f7-area-chart-tooltip-total-font-weight: bold;\n --f7-area-chart-tooltip-color-size: 10px;\n --f7-area-chart-legend-font-size: 14px;\n --f7-area-chart-legend-font-weight: 500;\n --f7-area-chart-legend-text-color: inherit;\n --f7-area-chart-legend-padding: 4px 8px;\n --f7-area-chart-legend-border-radius: 4px;\n --f7-area-chart-legend-color-size: 14px;\n --f7-area-chart-line-stroke-width: 2px;\n --f7-area-chart-axis-bg-color: rgba(0, 0, 0, 0.15);\n --f7-area-chart-legend-disabled-text-color: rgba(0, 0, 0, 0.22);\n}\n:root .dark,\n:root.dark {\n --f7-area-chart-axis-bg-color: rgba(255, 255, 255, 0.15);\n --f7-area-chart-legend-disabled-text-color: rgba(255, 255, 255, 0.22);\n}\n.ios {\n --f7-area-chart-tooltip-total-label-text-color: rgba(255, 255, 255, 0.75);\n}\n.md {\n --f7-area-chart-tooltip-total-label-text-color: inherit;\n}\n.area-chart {\n position: relative;\n}\n.area-chart svg {\n display: block;\n width: 100%;\n font-size: 0;\n height: auto;\n margin: 0 auto;\n}\n.area-chart path {\n fill: none;\n stroke-width: var(--f7-area-chart-line-stroke-width);\n}\n.area-chart-current-line {\n stroke: var(--f7-area-chart-current-line-stroke);\n stroke-width: var(--f7-area-chart-current-line-stroke-width);\n}\n.area-chart-axis {\n height: var(--f7-area-chart-axis-height);\n background: var(--f7-area-chart-axis-bg-color);\n color: var(--f7-area-chart-axis-text-color);\n display: flex;\n font-size: var(--f7-area-chart-axis-font-size);\n font-weight: var(--f7-area-chart-axis-font-weight);\n justify-content: space-between;\n line-height: 1;\n margin-bottom: 2em;\n}\n.area-chart-axis > span {\n padding-top: 10px;\n width: 0;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n white-space: nowrap;\n}\n.area-chart-axis > span:first-child {\n justify-content: flex-start;\n}\n.area-chart-axis > span:last-child {\n justify-content: flex-end;\n}\n.area-chart-tooltip {\n pointer-events: none;\n text-align: left;\n font-size: var(--f7-area-chart-tooltip-font-size);\n line-height: 1.4;\n}\n.area-chart-tooltip-label {\n color: var(--f7-area-chart-tooltip-total-label-text-color);\n}\n.area-chart-tooltip-total {\n font-size: var(--f7-area-chart-tooltip-total-font-size);\n font-weight: var(--f7-area-chart-tooltip-total-font-weight);\n}\n.area-chart-tooltip-list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n.area-chart-tooltip-list li {\n white-space: nowrap;\n}\n.area-chart-tooltip-list span {\n display: inline-block;\n width: var(--f7-area-chart-tooltip-color-size);\n height: var(--f7-area-chart-tooltip-color-size);\n border-radius: 50%;\n margin-right: 4px;\n}\n.area-chart-axis ~ .area-chart-legend {\n margin-top: 2em;\n}\n.area-chart-legend {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n font-size: var(--f7-area-chart-legend-font-size);\n width: 100%;\n margin-top: 1em;\n}\n.area-chart-legend-button {\n -webkit-appearance: none !important;\n appearance: none !important;\n background-color: transparent;\n border-radius: 0;\n border: none;\n outline: 0 !important;\n cursor: pointer;\n font-family: inherit;\n font-size: inherit;\n box-shadow: none !important;\n}\n.area-chart-legend-item {\n position: relative;\n color: var(--f7-area-chart-legend-text-color);\n width: auto;\n display: flex;\n align-items: center;\n font-weight: var(--f7-area-chart-legend-font-weight);\n transition-duration: 200ms;\n padding: var(--f7-area-chart-legend-padding);\n border-radius: var(--f7-area-chart-legend-border-radius);\n overflow: hidden;\n}\n.area-chart-legend-item span {\n width: var(--f7-area-chart-legend-color-size);\n height: var(--f7-area-chart-legend-color-size);\n margin-right: 4px;\n border-radius: 50%;\n transition-duration: 200ms;\n}\n.area-chart-legend-item-hidden {\n color: var(--f7-area-chart-legend-disabled-text-color);\n}\n.area-chart-legend-item-hidden span {\n background-color: var(--f7-area-chart-legend-disabled-text-color) !important;\n}\n/* === Breadcrumbs === */\n:root {\n --f7-breadcrumbs-spacing: 12px;\n --f7-breadcrumbs-padding: 2px 0;\n --f7-breadcrumbs-icon-size: 24px;\n --f7-breadcrumbs-separator-color: rgba(0, 0, 0, 0.35);\n}\n:root .dark,\n:root.dark {\n --f7-breadcrumbs-separator-color: rgba(255, 255, 255, 0.35);\n}\n.ios {\n --f7-breadcrumbs-item-bg-color: transparent;\n --f7-breadcrumbs-collapsed-border-radius: 4px;\n --f7-breadcrumbs-collapsed-padding: 0px 6px;\n --f7-breadcrumbs-separator-icon: 'chevron_right_ios';\n --f7-breadcrumbs-font-size: 17px;\n --f7-breadcrumbs-item-border-radius: 0px;\n --f7-breadcrumbs-item-padding: 0px;\n --f7-breadcrumbs-item-font-weight: normal;\n --f7-breadcrumbs-item-active-font-weight: 600;\n --f7-breadcrumbs-item-color: rgba(0, 0, 0, 0.55);\n --f7-breadcrumbs-item-active-color: #000;\n --f7-breadcrumbs-collapsed-bg-color: rgba(0, 0, 0, 0.15);\n --f7-breadcrumbs-collapsed-color: rgba(0, 0, 0, 0.75);\n}\n.ios .dark,\n.ios.dark {\n --f7-breadcrumbs-item-color: rgba(255, 255, 255, 0.75);\n --f7-breadcrumbs-item-active-color: #fff;\n --f7-breadcrumbs-collapsed-bg-color: rgba(255, 255, 255, 0.15);\n --f7-breadcrumbs-collapsed-color: rgba(255, 255, 255, 0.75);\n}\n.md {\n --f7-breadcrumbs-collapsed-border-radius: 8px;\n --f7-breadcrumbs-collapsed-padding: 12px 8px;\n --f7-breadcrumbs-separator-icon: 'chevron_right_md';\n --f7-breadcrumbs-font-size: 14px;\n --f7-breadcrumbs-item-border-radius: 8px;\n --f7-breadcrumbs-item-padding: 4px 8px;\n --f7-breadcrumbs-item-font-weight: 500;\n --f7-breadcrumbs-item-active-font-weight: 500;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-breadcrumbs-item-color: var(--f7-theme-color);\n --f7-breadcrumbs-item-bg-color: var(--f7-md-secondary-container);\n --f7-breadcrumbs-item-active-color: var(--f7-md-on-secondary-container);\n --f7-breadcrumbs-collapsed-color: var(--f7-theme-color);\n --f7-breadcrumbs-collapsed-bg-color: var(--f7-md-secondary-container);\n}\n.breadcrumbs {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n font-size: var(--f7-breadcrumbs-font-size);\n overflow: auto;\n white-space: nowrap;\n padding: var(--f7-breadcrumbs-padding);\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.breadcrumbs::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.breadcrumbs::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.breadcrumbs::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.breadcrumbs-separator,\n.breadcrumbs-item,\n.breadcrumbs-collapsed {\n flex-shrink: 0;\n --f7-touch-ripple-color: transparent !important;\n}\n.breadcrumbs-separator + .breadcrumbs-separator,\n.breadcrumbs-separator + .breadcrumbs-item,\n.breadcrumbs-separator + .breadcrumbs-collapsed,\n.breadcrumbs-item + .breadcrumbs-separator,\n.breadcrumbs-item + .breadcrumbs-item,\n.breadcrumbs-item + .breadcrumbs-collapsed,\n.breadcrumbs-collapsed + .breadcrumbs-separator,\n.breadcrumbs-collapsed + .breadcrumbs-item,\n.breadcrumbs-collapsed + .breadcrumbs-collapsed {\n margin-left: var(--f7-breadcrumbs-spacing);\n}\n.breadcrumbs-item {\n color: var(--f7-breadcrumbs-item-color);\n font-weight: var(--f7-breadcrumbs-item-font-weight);\n padding: var(--f7-breadcrumbs-item-padding);\n background-color: var(--f7-breadcrumbs-item-bg-color);\n display: flex;\n align-items: center;\n border-radius: var(--f7-breadcrumbs-item-border-radius);\n}\n.breadcrumbs-item .icon {\n font-size: var(--f7-breadcrumbs-icon-size);\n width: var(--f7-breadcrumbs-icon-size);\n height: var(--f7-breadcrumbs-icon-size);\n}\n.breadcrumbs-item a {\n color: inherit;\n --f7-touch-ripple-color: transparent !important;\n}\n.breadcrumbs-item-active {\n color: var(--f7-breadcrumbs-item-active-color, var(--f7-breadcrumbs-item-color));\n font-weight: var(--f7-breadcrumbs-item-active-font-weight);\n}\n.breadcrumbs-separator {\n color: var(--f7-breadcrumbs-separator-color);\n height: 24px;\n overflow: hidden;\n display: flex;\n align-items: center;\n}\n.breadcrumbs-separator::after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n content: var(--f7-breadcrumbs-separator-icon);\n width: 12px;\n}\n.ios .breadcrumbs-separator::after {\n font-size: 12px;\n height: 11px;\n}\n.md .breadcrumbs-separator::after {\n font-size: 18px;\n height: 18px;\n}\n.breadcrumbs-collapsed {\n display: flex;\n align-items: center;\n padding: var(--f7-breadcrumbs-collapsed-padding);\n background: var(--f7-breadcrumbs-collapsed-bg-color);\n min-height: 1em;\n border-radius: var(--f7-breadcrumbs-collapsed-border-radius);\n cursor: pointer;\n}\n.breadcrumbs-collapsed::before,\n.breadcrumbs-collapsed::after,\n.breadcrumbs-collapsed span {\n content: '';\n width: 4px;\n height: 4px;\n background: var(--f7-breadcrumbs-collapsed-color);\n border-radius: 50%;\n}\n.breadcrumbs-collapsed span {\n margin: 0 3px;\n}\n/* === Typography === */\n:root {\n --f7-typography-padding: 16px;\n --f7-typography-margin: 16px;\n}\n.display-flex {\n display: flex !important;\n}\n.display-block {\n display: block !important;\n}\n.display-inline-flex {\n display: inline-flex !important;\n}\n.display-inline-block {\n display: inline-block !important;\n}\n.display-inline {\n display: inline !important;\n}\n.display-none {\n display: none !important;\n}\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n.flex-shrink-2 {\n flex-shrink: 2 !important;\n}\n.flex-shrink-3 {\n flex-shrink: 3 !important;\n}\n.flex-shrink-4 {\n flex-shrink: 4 !important;\n}\n.flex-shrink-5 {\n flex-shrink: 5 !important;\n}\n.flex-shrink-6 {\n flex-shrink: 6 !important;\n}\n.flex-shrink-7 {\n flex-shrink: 7 !important;\n}\n.flex-shrink-8 {\n flex-shrink: 8 !important;\n}\n.flex-shrink-9 {\n flex-shrink: 9 !important;\n}\n.flex-shrink-10 {\n flex-shrink: 10 !important;\n}\n.flex-direction-row {\n flex-direction: row !important;\n}\n.flex-direction-row-reverse {\n flex-direction: row-reverse !important;\n}\n.flex-direction-column {\n flex-direction: column !important;\n}\n.flex-direction-column-reverse {\n flex-direction: column-reverse !important;\n}\n.justify-content-flex-start {\n justify-content: flex-start !important;\n}\n.justify-content-center {\n justify-content: center !important;\n}\n.justify-content-flex-end {\n justify-content: flex-end !important;\n}\n.justify-content-space-between {\n justify-content: space-between !important;\n}\n.justify-content-space-around {\n justify-content: space-around !important;\n}\n.justify-content-space-evenly {\n justify-content: space-evenly !important;\n}\n.justify-content-stretch {\n justify-content: stretch !important;\n}\n.justify-content-start {\n justify-content: start !important;\n}\n.justify-content-end {\n justify-content: end !important;\n}\n.justify-content-left {\n justify-content: left !important;\n}\n.justify-content-right {\n justify-content: right !important;\n}\n.align-content-flex-start {\n align-content: flex-start !important;\n}\n.align-content-flex-end {\n align-content: flex-end !important;\n}\n.align-content-center {\n align-content: center !important;\n}\n.align-content-space-between {\n align-content: space-between !important;\n}\n.align-content-space-around {\n align-content: space-around !important;\n}\n.align-content-stretch {\n align-content: stretch !important;\n}\n.align-items-baseline {\n align-items: baseline !important;\n}\n.align-items-flex-start {\n align-items: flex-start !important;\n}\n.align-items-flex-end {\n align-items: flex-end !important;\n}\n.align-items-center {\n align-items: center !important;\n}\n.align-items-stretch {\n align-items: stretch !important;\n}\n.align-self-flex-start {\n align-self: flex-start !important;\n}\n.align-self-flex-end {\n align-self: flex-end !important;\n}\n.align-self-center {\n align-self: center !important;\n}\n.align-self-stretch {\n align-self: stretch !important;\n}\n.text-align-left {\n text-align: left !important;\n}\n.text-align-center {\n text-align: center !important;\n}\n.text-align-right {\n text-align: right !important;\n}\n.text-align-justify {\n text-align: justify !important;\n}\n.float-left {\n float: left !important;\n}\n.float-right {\n float: right !important;\n}\n.float-none {\n float: none !important;\n}\n.vertical-align-bottom {\n vertical-align: bottom !important;\n}\n.vertical-align-middle {\n vertical-align: middle !important;\n}\n.vertical-align-top {\n vertical-align: top !important;\n}\n.no-padding {\n padding: 0 !important;\n}\n.no-padding-left {\n padding-left: 0 !important;\n}\n.no-padding-right {\n padding-right: 0 !important;\n}\n.no-padding-horizontal {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n.no-padding-top {\n padding-top: 0 !important;\n}\n.no-padding-bottom {\n padding-bottom: 0 !important;\n}\n.no-padding-vertical {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n.no-margin {\n margin: 0 !important;\n}\n.no-margin-left {\n margin-left: 0 !important;\n}\n.no-margin-right {\n margin-right: 0 !important;\n}\n.no-margin-horizontal {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n.no-margin-top {\n margin-top: 0 !important;\n}\n.no-margin-bottom {\n margin-bottom: 0 !important;\n}\n.no-margin-vertical {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n.width-auto {\n width: auto !important;\n}\n.width-100 {\n width: 100% !important;\n}\n.padding {\n padding: var(--f7-typography-padding) !important;\n}\n.padding-half {\n padding: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-top {\n padding-top: var(--f7-typography-padding) !important;\n}\n.padding-top-half {\n padding-top: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-bottom {\n padding-bottom: var(--f7-typography-padding) !important;\n}\n.padding-bottom-half {\n padding-bottom: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-left {\n padding-left: var(--f7-typography-padding) !important;\n}\n.padding-left-half {\n padding-left: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-right {\n padding-right: var(--f7-typography-padding) !important;\n}\n.padding-right-half {\n padding-right: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-vertical {\n padding-top: var(--f7-typography-padding) !important;\n padding-bottom: var(--f7-typography-padding) !important;\n}\n.padding-vertical-half {\n padding-top: calc(var(--f7-typography-padding) / 2) !important;\n padding-bottom: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-horizontal {\n padding-left: var(--f7-typography-padding) !important;\n padding-right: var(--f7-typography-padding) !important;\n}\n.padding-horizontal-half {\n padding-left: calc(var(--f7-typography-padding) / 2) !important;\n padding-right: calc(var(--f7-typography-padding) / 2) !important;\n}\n.margin {\n margin: var(--f7-typography-margin) !important;\n}\n.margin-half {\n margin: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-top {\n margin-top: var(--f7-typography-margin) !important;\n}\n.margin-top-half {\n margin-top: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-bottom {\n margin-bottom: var(--f7-typography-margin) !important;\n}\n.margin-bottom-half {\n margin-bottom: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-left {\n margin-left: var(--f7-typography-margin) !important;\n}\n.margin-left-half {\n margin-left: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-right {\n margin-right: var(--f7-typography-margin) !important;\n}\n.margin-right-half {\n margin-right: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-vertical {\n margin-top: var(--f7-typography-margin) !important;\n margin-bottom: var(--f7-typography-margin) !important;\n}\n.margin-vertical-half {\n margin-top: calc(var(--f7-typography-margin) / 2) !important;\n margin-bottom: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-horizontal {\n margin-left: var(--f7-typography-margin) !important;\n margin-right: var(--f7-typography-margin) !important;\n}\n.margin-horizontal-half {\n margin-left: calc(var(--f7-typography-margin) / 2) !important;\n margin-right: calc(var(--f7-typography-margin) / 2) !important;\n}\n[class*='text-color-'] {\n color: var(--f7-theme-color-text-color) !important;\n}\n[class*='bg-color-'] {\n background-color: var(--f7-theme-color-bg-color) !important;\n}\n[class*='border-color-'] {\n border-color: var(--f7-theme-color-border-color) !important;\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/apps/presentationeditor/mobile/css/framework7.css b/apps/presentationeditor/mobile/css/framework7.css new file mode 100644 index 0000000000..3924f2e558 --- /dev/null +++ b/apps/presentationeditor/mobile/css/framework7.css @@ -0,0 +1,3 @@ +:root{--f7-safe-area-left:0px;--f7-safe-area-right:0px;--f7-safe-area-top:0px;--f7-safe-area-bottom:0px;--f7-safe-area-outer-left:0px;--f7-safe-area-outer-right:0px;--f7-device-pixel-ratio:1}@supports (left:env(safe-area-inset-left)){:root{--f7-safe-area-top:env(safe-area-inset-top);--f7-safe-area-bottom:env(safe-area-inset-bottom)}:root .ios-edges,:root .ios-left-edge,:root .panel-left,:root .popup,:root .safe-area-left,:root .safe-areas,:root .sheet-modal{--f7-safe-area-left:env(safe-area-inset-left);--f7-safe-area-outer-left:env(safe-area-inset-left)}:root .ios-edges,:root .ios-right-edge,:root .panel-right,:root .popup,:root .safe-area-right,:root .safe-areas,:root .sheet-modal{--f7-safe-area-right:env(safe-area-inset-right);--f7-safe-area-outer-right:env(safe-area-inset-right)}:root .no-ios-edges,:root .no-ios-left-edge,:root .no-safe-area-left,:root .no-safe-areas{--f7-safe-area-left:0px;--f7-safe-area-outer-left:0px}:root .no-ios-edges,:root .no-ios-right-edge,:root .no-safe-area-right,:root .no-safe-areas{--f7-safe-area-right:0px;--f7-safe-area-outer-right:0px}}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){:root{--f7-device-pixel-ratio:2}}@media (-webkit-min-device-pixel-ratio:3),(min-resolution:3dppx){:root{--f7-device-pixel-ratio:3}}:root{--f7-font-size:14px;--f7-bars-translucent-opacity:0.8;--f7-bars-translucent-blur:20px}.ios{--f7-font-family:-apple-system,SF Pro Text,SF UI Text,system-ui,Helvetica Neue,Helvetica,Arial,sans-serif;--f7-line-height:1.4;--f7-bars-text-color:#000;--f7-text-color:#000;--f7-bars-bg-color:#f7f7f8;--f7-bars-bg-color-rgb:247,247,248;--f7-bars-border-color:rgba(0,0,0,0.25)}.ios .dark,.ios.dark{--f7-bars-text-color:#fff;--f7-text-color:#fff;--f7-bars-bg-color:#121212;--f7-bars-bg-color-rgb:22,22,22;--f7-bars-border-color:rgba(255,255,255,0.16)}.md{--f7-font-family:Roboto,system-ui,Noto,Helvetica,Arial,sans-serif;--f7-line-height:1.5;--f7-bars-border-color:transparent;--f7-text-color:#212121}.md .dark,.md.dark{--f7-text-color:rgba(255,255,255,0.87)}.md,.md .dark,.md [class*=color-]{--f7-bars-link-color:var(--f7-md-on-surface);--f7-bars-bg-color:var(--f7-md-surface-2);--f7-bars-bg-color-rgb:var(--f7-md-surface-2-rgb)}.text-color-primary{--f7-theme-color-text-color:var(--f7-theme-color)}.bg-color-primary{--f7-theme-color-bg-color:var(--f7-theme-color)}.border-color-primary{--f7-theme-color-border-color:var(--f7-theme-color)}.ripple-color-primary{--f7-theme-color-ripple-color:rgba(var(--f7-theme-color-rgb),0.3)}@font-face{font-family:framework7-core-icons;font-style:normal;font-weight:400;src:url("data:application/font-woff;charset=utf-8;base64, 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") format("woff")}html{overscroll-behavior:none}.framework7-root,body,html{height:100%;overflow-x:hidden;position:relative;width:100%}body{-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;background:#fff;color:var(--f7-text-color);font-family:var(--f7-font-family);font-size:var(--f7-font-size);line-height:var(--f7-line-height);margin:0;overflow:hidden;overflow-y:scroll;padding:0;scrollbar-color:transparent;scrollbar-width:none;width:100%}body::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}body::-webkit-scrollbar-track{background:transparent;box-shadow:none}body::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.dark body,body.dark{background:#000}.dark{color:var(--f7-text-color)}.framework7-root{box-sizing:border-box;overflow:hidden}.framework7-initializing *,.framework7-initializing :after,.framework7-initializing :before{transition-duration:0ms!important}.device-android,.device-ios{cursor:pointer}.device-ios{touch-action:manipulation}@media (width:1024px) and (height:691px) and (orientation:landscape){.framework7-root,body,html{height:671px}}@media (width:1024px) and (height:692px) and (orientation:landscape){.framework7-root,body,html{height:672px}}*{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:none}a,input,select,textarea{outline:0}a{color:var(--f7-theme-color);text-decoration:none}.item-link,.link,a{cursor:pointer}p{margin:1em 0}.disabled{opacity:.55!important;pointer-events:none!important}html.device-full-viewport,html.device-full-viewport body{height:100vh}.ios .if-md,.ios .if-not-ios,.ios .md-only,.ios .not-ios{display:none!important}@media (width:1024px) and (height:691px) and (orientation:landscape){.ios,.ios .framework7-root,.ios body{height:671px}}@media (width:1024px) and (height:692px) and (orientation:landscape){.ios,.ios .framework7-root,.ios body{height:672px}}.md .if-ios,.md .if-not-md,.md .ios-only,.md .not-md{display:none!important}.view,.views{box-sizing:border-box;height:100%;overflow:hidden;position:relative;z-index:5000}.framework7-root>.view,.framework7-root>.views{height:100%}.view-resize-handler{cursor:col-resize;display:none;height:100%;left:var(--f7-page-master-width);margin-left:-3px;position:absolute;top:0;width:6px;z-index:1000}.view-master-detail .view-resize-handler{display:block}:root{--f7-page-master-width:320px;--f7-page-master-border-color:rgba(0,0,0,0.1);--f7-page-master-border-width:1px;--f7-page-swipeback-transition-duration:300ms;--f7-page-parallax-transition-duration:500ms;--f7-page-cover-transition-duration:450ms;--f7-page-dive-transition-duration:500ms;--f7-page-fade-transition-duration:500ms;--f7-page-flip-transition-duration:700ms;--f7-page-push-transition-duration:500ms;--f7-page-title-line-height:1.2;--f7-page-title-text-color:inherit;--f7-page-title-padding-left:16px;--f7-page-title-padding-right:16px}.ios{--f7-page-transition-duration:400ms;--f7-page-title-font-size:34px;--f7-page-title-font-weight:700;--f7-page-title-letter-spacing:-0.03em;--f7-page-title-padding-vertical:6px;--f7-page-bg-color:#efeff4}.ios .dark,.ios.dark{--f7-page-bg-color:#000}.md{--f7-page-transition-duration:400ms;--f7-page-title-font-size:34px;--f7-page-title-font-weight:500;--f7-page-title-letter-spacing:0;--f7-page-title-padding-vertical:8px}.md,.md .dark,.md [class*=color-]{--f7-page-bg-color:var(--f7-md-surface)}.dark{--f7-page-master-border-color:rgba(255,255,255,0.2)}.pages{overflow:hidden;position:relative}.page,.pages{height:100%;width:100%}.page{background-color:var(--f7-page-bg-color);box-sizing:border-box;left:0;position:absolute;top:0;transform:none;z-index:1}.page-with-navbar-large-collapsed{--f7-navbar-large-collapse-progress:1}.page-previous{pointer-events:none}.page-content{-webkit-overflow-scrolling:touch;box-sizing:border-box;height:100%;overflow:auto;padding-bottom:calc(var(--f7-page-toolbar-bottom-offset, 0px) + var(--f7-safe-area-bottom) + var(--f7-page-content-extra-padding-bottom, 0px));padding-top:calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-toolbar-top-offset, 0px) + var(--f7-page-subnavbar-offset, 0px) + var(--f7-page-searchbar-offset, 0px) + var(--f7-page-content-extra-padding-top, 0px));position:relative;z-index:1}.page-transitioning,.page-transitioning .page-opacity-effect,.page-transitioning .page-shadow-effect{transition-duration:var(--f7-page-transition-duration)}.page-transitioning-swipeback,.page-transitioning-swipeback .page-opacity-effect,.page-transitioning-swipeback .page-shadow-effect{transition-duration:var(--f7-page-swipeback-transition-duration)}.router-transition-backward .page-current,.router-transition-backward .page-next,.router-transition-forward .page-current,.router-transition-forward .page-next{pointer-events:none}.page-shadow-effect{background:linear-gradient(90deg,rgba(0,0,0,0) 0,rgba(0,0,0,0) 10%,rgba(0,0,0,.01) 50%,rgba(0,0,0,.2));right:100%;width:16px;z-index:-1}.page-opacity-effect,.page-shadow-effect{bottom:0;content:"";opacity:0;position:absolute;top:0}.page-opacity-effect{background:rgba(0,0,0,.1);left:0;width:100%;z-index:10000}.ios .page-previous{transform:translate3d(-20%,0,0)}.ios .page-next{transform:translate3d(100%,0,0)}.ios .page-current .page-shadow-effect,.ios .page-previous .page-opacity-effect,.ios .page-previous:after{opacity:1}.ios .router-transition-forward .page-next{animation:ios-page-next-to-current var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .page-next:before{animation:ios-page-element-fade-in var(--f7-page-transition-duration) forwards;background:linear-gradient(90deg,rgba(0,0,0,0) 0,rgba(0,0,0,0) 10%,rgba(0,0,0,.01) 50%,rgba(0,0,0,.2));bottom:0;content:"";opacity:0;position:absolute;right:100%;top:0;width:16px;z-index:-1}.ios .router-transition-forward .page-current{animation:ios-page-current-to-previous var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .page-current:after{animation:ios-page-element-fade-in var(--f7-page-transition-duration) forwards;background:rgba(0,0,0,.1);bottom:0;content:"";left:0;opacity:0;position:absolute;top:0;width:100%;z-index:10000}.ios .router-transition-backward .page-previous{animation:ios-page-previous-to-current var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .page-previous:after{animation:ios-page-element-fade-out var(--f7-page-transition-duration) forwards;background:rgba(0,0,0,.1);bottom:0;content:"";left:0;opacity:0;position:absolute;top:0;width:100%;z-index:10000}.ios .router-transition-backward .page-current{animation:ios-page-current-to-next var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .page-current:before{animation:ios-page-element-fade-out var(--f7-page-transition-duration) forwards;background:linear-gradient(90deg,rgba(0,0,0,0) 0,rgba(0,0,0,0) 10%,rgba(0,0,0,.01) 50%,rgba(0,0,0,.2));bottom:0;content:"";opacity:0;position:absolute;right:100%;top:0;width:16px;z-index:-1}@keyframes ios-page-next-to-current{0%{transform:translate3d(100%,0,0)}to{transform:translateZ(0)}}@keyframes ios-page-previous-to-current{0%{transform:translate3d(-20%,0,0)}to{transform:translateZ(0)}}@keyframes ios-page-current-to-previous{0%{transform:translateZ(0)}to{transform:translate3d(-20%,0,0)}}@keyframes ios-page-current-to-next{0%{transform:translateZ(0)}to{transform:translate3d(100%,0,0)}}@keyframes ios-page-element-fade-in{0%{opacity:0}to{opacity:1}}@keyframes ios-page-element-fade-out{0%{opacity:1}to{opacity:0}}.md .page-previous{transform:translate3d(0,-20px,0)}.md .page-next{opacity:0;pointer-events:none;transform:translate3d(0,128px,0)}.md .page-next.page-next-on-right{opacity:1;transform:translate3d(100%,0,0)}.md .router-transition-forward .page-next{animation:md-page-next-to-current var(--f7-page-transition-duration) forwards cubic-bezier(0,.8,.3,1);opacity:1}.md .router-transition-forward .page-current{animation:md-page-current-to-previous var(--f7-page-transition-duration) forwards cubic-bezier(0,.8,.3,1)}.md .router-transition-backward .page-current{animation:md-page-current-to-next calc(var(--f7-page-transition-duration)/4) forwards cubic-bezier(.8,0,1,.3),md-page-current-to-next-opacity 0ms calc(var(--f7-page-transition-duration)/4) forwards}.md .router-transition-backward .page-previous{animation:md-page-previous-to-current var(--f7-page-transition-duration) forwards}@keyframes md-page-next-to-current{0%{transform:translate3d(0,128px,0)}to{transform:translateZ(0)}}@keyframes md-page-current-to-next{0%{transform:translateZ(0)}to{transform:translate3d(0,128px,0)}}@keyframes md-page-current-to-next-opacity{0%{opacity:1}to{opacity:0}}@keyframes md-page-current-to-previous{0%{transform:translateZ(0)}to{transform:translate3d(0,-20px,0)}}@keyframes md-page-previous-to-current{0%{transform:translate3d(0,-20px,0)}to{transform:translateZ(0)}}.view:not(.view-master-detail) .navbar-master-stacked,.view:not(.view-master-detail) .page-master-stacked{display:none}.view-master-detail .navbar-master,.view-master-detail .page-master{--f7-safe-area-right:0px;--f7-safe-area-outer-right:0px;border-right:var(--f7-page-master-border-width) solid var(--f7-page-master-border-color);width:var(--f7-page-master-width)}.view-master-detail .navbar-master-detail,.view-master-detail .page-master-detail{--f7-safe-area-left:0px;--f7-safe-area-outer-left:0px;left:var(--f7-page-master-width);width:calc(100% - var(--f7-page-master-width))}.view-master-detail .page-master-detail>.navbar-master-detail{left:0;right:0;width:100%}.view-master-detail .page-master{pointer-events:auto;transform:none;z-index:2}.view-master-detail .page-master:after,.view-master-detail .page-master:before{display:none}.view-master-detail.router-transition .page-master{animation:none}.ios .router-transition-custom .page-next,.ios .router-transition-custom .page-previous,.md .router-transition-custom .page-next,.md .router-transition-custom .page-previous{opacity:1;transform:none}.ios .router-transition-custom.view-master-detail .page-master,.md .router-transition-custom.view-master-detail .page-master{animation:none}.page-title{box-sizing:border-box;color:var(--f7-page-title-text-color);font-size:var(--f7-page-title-font-size);font-weight:var(--f7-page-title-font-weight);letter-spacing:var(--f7-page-title-letter-spacing);line-height:var(--f7-page-title-line-height);overflow:hidden;padding:var(--f7-page-title-padding-vertical) calc(var(--f7-page-title-padding-right) + var(--f7-safe-area-right)) var(--f7-page-title-padding-vertical) calc(var(--f7-page-title-padding-left) + var(--f7-safe-area-left));position:relative;text-overflow:ellipsis;white-space:nowrap;width:100%;z-index:10}.router-transition-f7-circle-backward:after,.router-transition-f7-circle-forward:after{background:var(--f7-page-bg-color);content:"";height:100vmax;left:50%;margin-left:-50vmax;margin-top:-50vmax;position:absolute;top:50%;width:100vmax;z-index:100}.router-transition-f7-circle-backward .page,.router-transition-f7-circle-forward .page{pointer-events:none}.router-transition-f7-circle-forward:after{animation:f7-circle-circle-in .4s forwards;border-radius:50%;transform:scale(0)}.ios .router-transition-f7-circle-forward .page-next,.md .router-transition-f7-circle-forward .page-next{animation:f7-circle-next-to-current .3s forwards;animation-delay:.3s;opacity:0;transform:scale(.9);z-index:150}.router-transition-f7-circle-backward:after{animation:f7-circle-circle-out .3s forwards;animation-delay:.35s}.ios .router-transition-f7-circle-backward .page-current,.md .router-transition-f7-circle-backward .page-current{animation:f7-circle-current-to-next .7s forwards;z-index:150}@keyframes f7-circle-circle-in{0%{border-radius:50%;transform:scale(0)}50%{border-radius:50%}to{border-radius:0;transform:scale(1)}}@keyframes f7-circle-circle-out{0%{border-radius:0;transform:scale(1)}50%{border-radius:50%}to{border-radius:50%;transform:scale(0)}}@keyframes f7-circle-next-to-current{0%{opacity:0;transform:scale(.9)}40%{opacity:1;transform:scale(1.035)}to{opacity:1;transform:scale(1)}}@keyframes f7-circle-current-to-next{0%{opacity:1;transform:scale(1)}34%{opacity:1;transform:scale(1.035)}57%{opacity:0;transform:scale(.9)}to{opacity:0;transform:scale(.9)}}.router-transition-f7-cover-v-backward,.router-transition-f7-cover-v-forward{background:#000;perspective:1200px}.router-transition-f7-cover-v-backward .page,.router-transition-f7-cover-v-forward .page{pointer-events:none}.router-transition-f7-cover-v-forward .page-next{animation:f7-cover-v-next-to-current var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-v-forward .page-current{animation:f7-cover-v-current-to-prev var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-v-backward .page-current{animation:f7-cover-v-current-to-next var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-v-backward .page-previous{animation:f7-cover-v-prev-to-current var(--f7-page-cover-transition-duration) forwards}@keyframes f7-cover-v-next-to-current{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes f7-cover-v-current-to-next{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes f7-cover-v-current-to-prev{0%{opacity:1;transform:translateZ(0)}to{opacity:.5;transform:translateZ(-300px)}}@keyframes f7-cover-v-prev-to-current{0%{opacity:.5;transform:translateZ(-300px)}to{opacity:1;transform:translateZ(0)}}.router-transition-f7-cover-backward,.router-transition-f7-cover-forward{background:#000;perspective:1200px}.router-transition-f7-cover-backward .page,.router-transition-f7-cover-forward .page{pointer-events:none}.router-transition-f7-cover-forward .page-next{animation:f7-cover-next-to-current var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-forward .page-current{animation:f7-cover-current-to-prev var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-backward .page-current{animation:f7-cover-current-to-next var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-backward .page-previous{animation:f7-cover-prev-to-current var(--f7-page-cover-transition-duration) forwards}@keyframes f7-cover-next-to-current{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes f7-cover-current-to-next{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes f7-cover-current-to-prev{0%{opacity:1;transform:translateZ(0)}to{opacity:.5;transform:translateZ(-300px)}}@keyframes f7-cover-prev-to-current{0%{opacity:.5;transform:translateZ(-300px)}to{opacity:1;transform:translateZ(0)}}.router-transition-f7-dive-backward,.router-transition-f7-dive-forward{background:var(--f7-page-bg-color);perspective:1200px}.router-transition-f7-dive-backward .page,.router-transition-f7-dive-forward .page{pointer-events:none}.router-transition-f7-dive-forward .page-next{animation:f7-dive-next-to-current var(--f7-page-dive-transition-duration) forwards}.router-transition-f7-dive-forward .page-current{animation:f7-dive-current-to-prev var(--f7-page-dive-transition-duration) forwards}.router-transition-f7-dive-backward .page-current{animation:f7-dive-current-to-next var(--f7-page-dive-transition-duration) forwards}.router-transition-f7-dive-backward .page-previous{animation:f7-dive-prev-to-current var(--f7-page-dive-transition-duration) forwards}@keyframes f7-dive-next-to-current{0%{opacity:0;transform:translateZ(-150px)}50%{opacity:0}to{opacity:1;transform:translateZ(0)}}@keyframes f7-dive-current-to-next{0%{opacity:1;transform:translateZ(0)}50%{opacity:0}to{opacity:0;transform:translateZ(-150px)}}@keyframes f7-dive-current-to-prev{0%{opacity:1;transform:translateZ(0)}50%{opacity:0}to{opacity:0;transform:translateZ(150px)}}@keyframes f7-dive-prev-to-current{0%{opacity:0;transform:translateZ(150px)}50%{opacity:0}to{opacity:1;transform:translateZ(0)}}.router-transition-f7-fade-backward,.router-transition-f7-fade-forward{background:var(--f7-page-bg-color)}.router-transition-f7-fade-backward .page,.router-transition-f7-fade-forward .page{pointer-events:none}.ios .router-transition-f7-fade-forward .page-next,.md .router-transition-f7-fade-forward .page-next{animation:f7-fade-in var(--f7-page-fade-transition-duration) forwards;opacity:0}.ios .router-transition-f7-fade-backward .page-current,.ios .router-transition-f7-fade-forward .page-current,.md .router-transition-f7-fade-backward .page-current,.md .router-transition-f7-fade-forward .page-current{animation:f7-fade-out var(--f7-page-fade-transition-duration) forwards}.ios .router-transition-f7-fade-backward .page-previous,.md .router-transition-f7-fade-backward .page-previous{animation:f7-fade-in var(--f7-page-fade-transition-duration) forwards}@keyframes f7-fade-in{0%{opacity:0}50%{opacity:0}to{opacity:1}}@keyframes f7-fade-out{0%{opacity:1}50%{opacity:0}to{opacity:0}}.router-transition-f7-flip-backward,.router-transition-f7-flip-forward{background:#000;perspective:1200px}.router-transition-f7-flip-backward .page,.router-transition-f7-flip-forward .page{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;pointer-events:none}.router-transition-f7-flip-forward .page-next{animation:f7-flip-next-to-current var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}.router-transition-f7-flip-forward .page-current{animation:f7-flip-current-to-prev var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}.router-transition-f7-flip-backward .page-current{animation:f7-flip-current-to-next var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}.router-transition-f7-flip-backward .page-previous{animation:f7-flip-prev-to-current var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}@keyframes f7-flip-next-to-current{0%{border-radius:32px;transform:translateZ(-100vmax) rotateY(180deg)}to{border-radius:0;transform:translateZ(0) rotateY(0deg)}}@keyframes f7-flip-current-to-next{0%{border-radius:0;transform:translateZ(0) rotateY(0deg)}to{border-radius:32px;transform:translateZ(-100vmax) rotateY(180deg)}}@keyframes f7-flip-current-to-prev{0%{border-radius:0;transform:translateZ(0) rotateY(0deg)}to{border-radius:32px;transform:translateZ(-100vmax) rotateY(-180deg)}}@keyframes f7-flip-prev-to-current{0%{border-radius:32px;transform:translateZ(-100vmax) rotateY(-180deg)}to{border-radius:0;transform:translateZ(0) rotateY(0deg)}}.router-transition-f7-parallax-forward .page{pointer-events:none}.router-transition-f7-parallax-forward .page-next{animation:f7-parallax-next-to-current var(--f7-page-parallax-transition-duration) forwards}.router-transition-f7-parallax-forward .page-current{animation:f7-parallax-current-to-prev var(--f7-page-parallax-transition-duration) forwards}.router-transition-f7-parallax-backward .page{pointer-events:none}.router-transition-f7-parallax-backward .page-current{animation:f7-parallax-current-to-next var(--f7-page-parallax-transition-duration) forwards}.router-transition-f7-parallax-backward .page-previous{animation:f7-parallax-prev-to-current var(--f7-page-parallax-transition-duration) forwards}@keyframes f7-parallax-next-to-current{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes f7-parallax-current-to-next{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes f7-parallax-current-to-prev{0%{transform:translateX(0)}to{transform:translateX(-20%)}}@keyframes f7-parallax-prev-to-current{0%{transform:translateX(-20%)}to{transform:translateX(0)}}.router-transition-f7-push-forward .page{pointer-events:none}.router-transition-f7-push-forward .page-next{animation:f7-push-next-to-current var(--f7-page-push-transition-duration) forwards}.router-transition-f7-push-forward .page-current{animation:f7-push-current-to-prev var(--f7-page-push-transition-duration) forwards}.router-transition-f7-push-backward .page{pointer-events:none}.router-transition-f7-push-backward .page-current{animation:f7-push-current-to-next var(--f7-page-push-transition-duration) forwards}.router-transition-f7-push-backward .page-previous{animation:f7-push-prev-to-current var(--f7-page-push-transition-duration) forwards}@keyframes f7-push-next-to-current{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes f7-push-current-to-next{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes f7-push-current-to-prev{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes f7-push-prev-to-current{0%{transform:translateX(-100%)}to{transform:translateX(0)}}:root{--f7-link-highlight-black:rgba(0,0,0,0.1);--f7-link-highlight-white:rgba(255,255,255,0.15);--f7-link-highlight-color:rgba(var(--f7-theme-color-rgb),0.15)}.ios{--f7-link-pressed-opacity:0.3}.link,.tab-link{--f7-touch-ripple-color:var(--f7-link-touch-ripple-color,rgba(var(--f7-theme-color-rgb),0.25));align-content:center;align-items:center;box-sizing:border-box;display:inline-flex;justify-content:center;position:relative;z-index:1}.link i+i,.link i+span,.link span+i,.link span+span{margin-left:4px}.link[class*=color-]{color:var(--f7-theme-color)}.ios .link{transition:opacity .3s}.ios .link.active-state{opacity:var(--f7-link-pressed-opacity);transition-duration:0ms}:root{--f7-navbar-hide-show-transition-duration:400ms;--f7-navbar-title-line-height:1.2;--f7-navbar-subtitle-text-align:inherit;--f7-navbar-large-title-line-height:1.2;--f7-navbar-large-title-text-color:inherit;--f7-navbar-large-title-padding-left:16px;--f7-navbar-large-title-padding-right:16px}.ios{--f7-navbar-height:44px;--f7-navbar-font-size:17px;--f7-navbar-title-font-size:inherit;--f7-navbar-inner-padding-left:8px;--f7-navbar-inner-padding-right:8px;--f7-navbar-title-font-weight:600;--f7-navbar-title-margin-left:0;--f7-navbar-title-margin-right:0;--f7-navbar-title-text-align:center;--f7-navbar-subtitle-font-size:10px;--f7-navbar-subtitle-line-height:1;--f7-navbar-large-title-height:52px;--f7-navbar-large-title-font-size:34px;--f7-navbar-large-title-font-weight:700;--f7-navbar-large-title-letter-spacing:-0.03em;--f7-navbar-large-title-padding-vertical:6px;--f7-navbar-subtitle-text-color:rgba(0,0,0,0.55)}.ios .dark,.ios.dark{--f7-navbar-subtitle-text-color:rgba(255,255,255,0.55)}.md{--f7-navbar-height:64px;--f7-navbar-font-size:16px;--f7-navbar-title-font-size:22px;--f7-navbar-inner-padding-left:0px;--f7-navbar-inner-padding-right:0px;--f7-navbar-title-font-weight:400;--f7-navbar-title-margin-left:0px;--f7-navbar-title-margin-right:16px;--f7-navbar-title-text-align:left;--f7-navbar-subtitle-font-size:14px;--f7-navbar-subtitle-line-height:1.2;--f7-navbar-large-title-font-size:28px;--f7-navbar-large-title-height:88px;--f7-navbar-large-title-font-weight:400;--f7-navbar-large-title-letter-spacing:0;--f7-navbar-large-title-padding-vertical:8px;--f7-navbar-link-height:48px;--f7-navbar-link-line-height:48px}.md,.md .dark,.md [class*=color-]{--f7-navbar-link-color:var(--f7-md-on-surface);--f7-navbar-text-color:var(--f7-md-on-surface);--f7-navbar-subtitle-text-color:var(--f7-md-on-surface-variant)}.navbar,.navbars{left:0;top:0;width:100%;z-index:500}.navbars{position:absolute}.navbars .navbar{z-index:auto}.navbars .navbar-transitioning{z-index:500}.navbar{--f7-navbar-large-collapse-progress:0;-webkit-backface-visibility:hidden;backface-visibility:hidden;box-sizing:border-box;color:var(--f7-navbar-text-color,var(--f7-bars-text-color));font-size:var(--f7-navbar-font-size);height:calc(var(--f7-navbar-height) + var(--f7-safe-area-top));margin:0;position:relative}.navbar b{font-weight:500}.navbar a{color:var(--f7-navbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.navbar a.link{display:flex;height:var(--f7-navbar-link-height,var(--f7-navbar-height));justify-content:flex-start;line-height:var(--f7-navbar-link-line-height,var(--f7-navbar-height))}.navbar .left,.navbar .right,.navbar .title{position:relative;z-index:10}.navbar .title{display:inline-block;flex-shrink:10;font-size:var(--f7-navbar-title-font-size);font-weight:var(--f7-navbar-title-font-weight);line-height:var(--f7-navbar-title-line-height);margin-left:var(--f7-navbar-title-margin-left);margin-right:var(--f7-navbar-title-margin-left);overflow:hidden;position:relative;text-align:var(--f7-navbar-title-text-align);text-overflow:ellipsis;white-space:nowrap}.navbar .subtitle{color:var(--f7-navbar-subtitle-text-color);display:block;font-size:var(--f7-navbar-subtitle-font-size);font-weight:400;line-height:var(--f7-navbar-subtitle-line-height);text-align:var(--f7-navbar-subtitle-text-align)}.navbar .left,.navbar .right{align-items:center;display:flex;flex-shrink:0;justify-content:flex-start}.navbar .right:first-child{height:100%;position:absolute}.navbar .no-outline .navbar-bg:after,.navbar .no-outline .title-large:after,.navbar.no-outline .navbar-bg:after,.navbar.no-outline .title-large:after{display:none!important}.navbar-hidden .navbar .navbar-bg:before,.navbar.navbar-hidden .navbar-bg:before{opacity:0!important}.navbar-bg{background:var(--f7-navbar-bg-color);background-color:var(--f7-navbar-bg-color,var(--f7-bars-bg-color));height:100%;left:0;pointer-events:none;position:absolute;top:0;transition-property:transform;width:100%;z-index:0}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .navbar-bg{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-navbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.navbar-bg:after,.navbar-bg:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.navbar-bg:after{background-color:var(--f7-navbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15;z-index:1}.navbar-transitioning,.navbar-transitioning .left,.navbar-transitioning .navbar-bg,.navbar-transitioning .navbar-bg:before,.navbar-transitioning .right,.navbar-transitioning .subnavbar,.navbar-transitioning .title,.navbar-transitioning .title-large-text{transition-duration:var(--f7-navbar-hide-show-transition-duration)}.navbar-page-transitioning,.navbar-page-transitioning .navbar-bg,.navbar-page-transitioning .title-large-text{transition-duration:var(--f7-page-swipeback-transition-duration)!important}.navbar-hidden{transform:translate3d(0,calc(var(--f7-navbar-height)*-1),0)}.navbar-hidden .navbar-inner{pointer-events:none}.navbar-hidden .navbar-inner>.left,.navbar-hidden .navbar-inner>.right,.navbar-hidden .navbar-inner>.title{opacity:0!important}.navbar-hidden .subnavbar{pointer-events:auto}.navbar-hidden-statusbar{transform:translate3d(0,calc(var(--f7-navbar-height)*-1 - var(--f7-safe-area-top)),0)}.navbar-large-hidden .navbar-large{--f7-navbar-large-collapse-progress:1}.navbar-inner{align-items:center;bottom:0;box-sizing:border-box;display:flex;height:100%;left:0;padding:var(--f7-safe-area-top) calc(var(--f7-navbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-navbar-inner-padding-left) + var(--f7-safe-area-left));transform:translateZ(0);width:100%;z-index:10}.navbar-inner,.navbars>.navbar,.page>.navbar,.view>.navbar,.views>.navbar{position:absolute}.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(.with-searchbar-expandable-enabled) .navbar-bg,.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(.with-searchbar-expandable-enabled) .title{opacity:0}.navbar-large .navbar-bg{height:calc(100% + var(--f7-navbar-large-title-height));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.navbar-large-transparent .navbar-bg,.navbar-large.navbar-transparent .navbar-bg{opacity:var(--f7-navbar-large-collapse-progress)}.ios .router-navbar-transition-from-large .navbar-bg,.ios .router-navbar-transition-to-large .navbar-bg,.navbar-bg.ios-swipeback-navbar-bg-large,.navbar-large-transparent .navbar-bg.ios-swipeback-navbar-bg-large,.navbar-large.navbar-transparent .navbar-bg.ios-swipeback-navbar-bg-large{height:calc(100% + var(--f7-navbar-large-title-height));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.ios .navbar:not(.navbar-large) .navbar-bg{--f7-navbar-large-collapse-progress:1}.navbar-large .title{opacity:var(--f7-navbar-large-collapse-progress)}.navbar-large-collapsed{--f7-navbar-large-collapse-progress:1}.navbar-large-collapsed .title-large{pointer-events:none}.navbar .title-large{display:flex;height:var(--f7-navbar-large-title-height);left:0;position:absolute;right:0;top:100%;z-index:5}.navbar .title-large,.navbar .title-large-text{box-sizing:border-box;overflow:hidden;white-space:nowrap}.navbar .title-large-text{color:var(--f7-navbar-large-title-text-color);font-size:var(--f7-navbar-large-title-font-size);font-weight:var(--f7-navbar-large-title-font-weight);letter-spacing:var(--f7-navbar-large-title-letter-spacing);line-height:var(--f7-navbar-large-title-line-height);padding:var(--f7-navbar-large-title-padding-vertical) calc(var(--f7-navbar-large-title-padding-right) + var(--f7-safe-area-right)) var(--f7-navbar-large-title-padding-vertical) calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left));text-overflow:ellipsis;transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0);transform-origin:calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center;width:100%}.navbar-no-title-large-transition .title-large-text{transition-duration:0ms}.navbars~*,.navbar~*{--f7-page-navbar-offset:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbars~* .page-with-navbar-large,.navbars~.page-with-navbar-large,.navbar~* .page-with-navbar-large,.navbar~.page-with-navbar-large,.page-with-navbar-large .navbar~*{--f7-page-navbar-offset:calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top))}.page.no-navbar,.page.no-navbar .navbar~*{--f7-page-navbar-offset:var(--f7-safe-area-top)}.ios{--f7-navbarLeftTextOffset:calc(16px + var(--f7-navbar-inner-padding-left));--f7-navbarTitleLargeOffset:var(--f7-navbar-large-title-padding-left);--f7-navbar-large-bg-center-top:translateX(0) translateY(calc(var(--f7-navbar-large-title-height)*-1));--f7-navbar-large-bg-center-bottom:translateX(0) translateY(0);--f7-navbar-large-bg-left-top:translateX(-100%) translateY(calc(var(--f7-navbar-large-title-height)*-1));--f7-navbar-large-bg-left-bottom:translateX(-100%) translateY(0);--f7-navbar-large-bg-right-top:translateX(100%) translateY(calc(var(--f7-navbar-large-title-height)*-1));--f7-navbar-large-bg-right-bottom:translateX(100%) translateY(0)}.ios .navbar .title-large{align-items:flex-end}.ios .navbar a.icon-only{justify-content:center;margin:0;width:44px}.ios .navbar .left a+a,.ios .navbar .right a+a{margin-left:16px}.ios .navbar b{font-weight:600}.ios .navbar .left{margin-right:10px}.ios .navbar .right{margin-left:10px}.ios .navbar .right:first-child{right:calc(8px + var(--f7-safe-area-right))}.ios .navbar-inner{justify-content:space-between}.ios .navbar-inner-left-title{justify-content:flex-start}.ios .navbar-inner-left-title .right{margin-left:auto}.ios .navbar-inner-left-title .title{margin-right:10px;text-align:left}.ios .navbar-next .fading,.ios .navbar-next .left,.ios .navbar-next .right,.ios .navbar-next .subnavbar,.ios .navbar-next .title,.ios .view-master-detail .navbar-previous:not(.navbar-master) .fading,.ios .view-master-detail .navbar-previous:not(.navbar-master) .left,.ios .view-master-detail .navbar-previous:not(.navbar-master) .right,.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar,.ios .view-master-detail .navbar-previous:not(.navbar-master) .title,.ios .view:not(.view-master-detail) .navbar-previous .fading,.ios .view:not(.view-master-detail) .navbar-previous .left,.ios .view:not(.view-master-detail) .navbar-previous .right,.ios .view:not(.view-master-detail) .navbar-previous .subnavbar,.ios .view:not(.view-master-detail) .navbar-previous .title{opacity:0}.ios .view-master-detail .navbar-previous:not(.navbar-master),.ios .view:not(.view-master-detail) .navbar-previous{pointer-events:none}.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large,.ios .view:not(.view-master-detail) .navbar-previous .title-large{opacity:0;transition-duration:0ms}.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large .title-large-text,.ios .view:not(.view-master-detail) .navbar-previous .title-large .title-large-text{transform:scale(.5);transition-duration:0ms}.ios .view-master-detail .navbar-previous:not(.navbar-master) .sliding .subnavbar,.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar.sliding,.ios .view:not(.view-master-detail) .navbar-previous .sliding .subnavbar,.ios .view:not(.view-master-detail) .navbar-previous .subnavbar.sliding{opacity:1;transform:translate3d(-100%,0,0)}.ios .view-master-detail .navbar-previous:not(.navbar-master) .navbar-bg,.ios .view:not(.view-master-detail) .navbar-previous .navbar-bg{transform:translateX(-100%)}.ios .navbar-next{pointer-events:none}.ios .navbar-next .navbar-bg{transform:translateX(100%)}.ios .navbar-next .title-large .title-large-text{transform:translateX(100%) translateY(calc(var(--f7-navbar-large-title-height)*-1));transition-duration:0ms}.ios .navbar-next .sliding .subnavbar,.ios .navbar-next .subnavbar.sliding{opacity:1;transform:translate3d(100%,0,0)}.ios .router-transition .navbar,.ios .router-transition .navbar-bg{transition-duration:var(--f7-page-transition-duration)}.ios .router-transition .navbar-bg{animation-duration:var(--f7-page-transition-duration);animation-fill-mode:forwards}.ios .router-transition .title-large,.ios .router-transition .title-large-text{transition-duration:0ms}.ios .router-transition .navbar-current .left,.ios .router-transition .navbar-current .right,.ios .router-transition .navbar-current .subnavbar,.ios .router-transition .navbar-current .title{animation:ios-navbar-element-fade-out var(--f7-page-transition-duration) forwards}.ios .router-transition .navbar-current .sliding .left,.ios .router-transition .navbar-current .sliding .left .icon+span,.ios .router-transition .navbar-current .sliding .right,.ios .router-transition .navbar-current .sliding .title,.ios .router-transition .navbar-current .sliding.left,.ios .router-transition .navbar-current .sliding.left .icon+span,.ios .router-transition .navbar-current .sliding.right,.ios .router-transition .navbar-current .sliding.title{animation:none;opacity:0!important;transition-duration:var(--f7-page-transition-duration)}.ios .router-transition .navbar-current .sliding .subnavbar,.ios .router-transition .navbar-current .sliding.subnavbar{animation:none;opacity:1;transition-duration:var(--f7-page-transition-duration)}.ios .router-transition-backward .navbar-previous .left,.ios .router-transition-backward .navbar-previous .right,.ios .router-transition-backward .navbar-previous .subnavbar,.ios .router-transition-backward .navbar-previous .title,.ios .router-transition-forward .navbar-next .left,.ios .router-transition-forward .navbar-next .right,.ios .router-transition-forward .navbar-next .subnavbar,.ios .router-transition-forward .navbar-next .title{animation:ios-navbar-element-fade-in var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .navbar-previous .sliding .left,.ios .router-transition-backward .navbar-previous .sliding .left .icon+span,.ios .router-transition-backward .navbar-previous .sliding .right,.ios .router-transition-backward .navbar-previous .sliding .subnavbar,.ios .router-transition-backward .navbar-previous .sliding .title,.ios .router-transition-backward .navbar-previous .sliding.left,.ios .router-transition-backward .navbar-previous .sliding.left .icon+span,.ios .router-transition-backward .navbar-previous .sliding.right,.ios .router-transition-backward .navbar-previous .sliding.title,.ios .router-transition-forward .navbar-next .sliding .left,.ios .router-transition-forward .navbar-next .sliding .left .icon+span,.ios .router-transition-forward .navbar-next .sliding .right,.ios .router-transition-forward .navbar-next .sliding .subnavbar,.ios .router-transition-forward .navbar-next .sliding .title,.ios .router-transition-forward .navbar-next .sliding.left,.ios .router-transition-forward .navbar-next .sliding.left .icon+span,.ios .router-transition-forward .navbar-next .sliding.right,.ios .router-transition-forward .navbar-next .sliding.title{animation:none;opacity:1!important;transform:translateZ(0)!important;transition-duration:var(--f7-page-transition-duration)}.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title,.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title{animation:none}.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title,.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title,.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title,.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title{opacity:0!important}.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .left,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .right,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .subnavbar,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .title,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .left,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .right,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .subnavbar,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .title{animation:none}.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large{overflow:visible}.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-up var(--f7-page-transition-duration) forwards,ios-navbar-large-title-text-fade-out var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large .left .back span{animation:ios-navbar-back-text-next-to-current var(--f7-page-transition-duration) forwards;transform-origin:left center;transition:none}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large{overflow:visible}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-forward .navbar-next.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-left var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title,.ios .router-transition-forward .navbar-next.navbar-large:not(.navbar-large-collapsed) .title{animation:none;opacity:0!important;transition-duration:0}.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large .left .back span{animation:ios-navbar-back-text-current-to-previous var(--f7-page-transition-duration) forwards;transform-origin:left center;transition:none}.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large{overflow:visible}.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-right var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large{opacity:0}.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large{opacity:1;overflow:visible}.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-down var(--f7-page-transition-duration) forwards,ios-navbar-large-title-text-fade-in var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title,.ios .router-transition-backward .navbar-previous.navbar-large:not(.navbar-large-collapsed) .title{animation:none;opacity:0!important;transition-duration:0}.ios .router-transition-forward .navbar-current .navbar-bg,.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-lb}.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-lt}.ios .router-transition-forward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-lb}.ios .router-transition-forward .navbar-current.navbar-large-collapsed:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-lt}.ios .router-transition-forward .navbar-next .navbar-bg,.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-rb-to-cb}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-rb-to-ct}.ios .router-transition-forward .navbar-next:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-rt-to-cb}.ios .router-transition-backward .navbar-current .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-rb}.ios .router-transition-backward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-rb}.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-rt}.ios .router-transition-backward .navbar-current.navbar-large-collapsed .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-rt}.ios .router-transition-backward .navbar-current.navbar-large-collapsed.router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-rb}.ios .router-transition-backward .navbar-previous .navbar-bg{animation-name:ios-navbar-bg-from-lb-to-cb}.ios .router-transition-backward .navbar-previous:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-lt-to-cb}.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-lb-to-ct}.ios .router-transition-backward .navbar-previous.navbar-large-collapsed .navbar-bg{animation-name:ios-navbar-bg-from-lt-to-ct}.view-master-detail .navbars{z-index:auto}.view-master-detail .page-master{z-index:525}.view-master-detail .navbar-master .navbar-bg,.view-master-detail .navbar-master .navbar-inner{z-index:550}.view-master-detail .navbar-master-detail .navbar-bg,.view-master-detail .navbar-master-detail .navbar-inner{z-index:500}.view-master-detail .navbar-master.navbar-previous{pointer-events:auto}.view-master-detail .navbar-master.navbar-previous .left,.view-master-detail .navbar-master.navbar-previous .right,.view-master-detail .navbar-master.navbar-previous .subnavbar,.view-master-detail .navbar-master.navbar-previous:not(.navbar-large) .title{opacity:1}.view-master-detail.router-transition .navbar-master .fading,.view-master-detail.router-transition .navbar-master .left,.view-master-detail.router-transition .navbar-master .left .icon+span,.view-master-detail.router-transition .navbar-master .right,.view-master-detail.router-transition .navbar-master .subnavbar,.view-master-detail.router-transition .navbar-master:not(.navbar-large) .title{animation:none!important;opacity:1!important;transform:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master .navbar-bg{animation:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master.navbar-large .title{animation:none!important;opacity:calc(-1 + var(--f7-navbar-large-collapse-progress)*2)!important;transform:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master.navbar-large .title-large,.view-master-detail.router-transition .navbar-master.navbar-large .title-large-text{animation:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master.navbar-large-transparent .navbar-bg,.view-master-detail.router-transition .navbar-master.navbar-large.navbar-transparent .navbar-bg{height:100%!important;opacity:var(--f7-navbar-large-collapse-progress)!important}@keyframes ios-navbar-element-fade-in{0%{opacity:0}25%{opacity:0}to{opacity:1}}@keyframes ios-navbar-element-fade-out{0%{opacity:1}75%{opacity:0}to{opacity:0}}@keyframes ios-navbar-large-title-text-slide-up{0%{transform:translateX(0) translateY(0) scale(1)}to{transform:translateX(calc(var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset))) translateY(calc(var(--f7-navbar-large-title-height)*-1 + var(--f7-navbar-large-title-padding-vertical))) scale(.5)}}@keyframes ios-navbar-large-title-text-slide-down{0%{transform:translateX(calc(var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset))) translateY(calc(var(--f7-navbar-large-title-height)*-1 + var(--f7-navbar-large-title-padding-vertical)/2)) scale(.5)}to{transform:translateX(0) translateY(0) scale(1)}}@keyframes ios-navbar-large-title-text-slide-left{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes ios-navbar-large-title-text-slide-right{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes ios-navbar-large-title-text-fade-out{0%{opacity:1}80%{opacity:0}to{opacity:0}}@keyframes ios-navbar-large-title-text-fade-in{0%{opacity:0}20%{opacity:0}to{opacity:1}}@keyframes ios-navbar-back-text-current-to-previous{0%{opacity:1;transform:translateY(0) translateX(0) scale(1)}80%{opacity:0}to{opacity:0;transform:translateX(calc(var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset))) translateY(calc(var(--f7-navbar-large-title-height)*1 - var(--f7-navbar-large-title-padding-vertical)/2)) scale(2)}}@keyframes ios-navbar-back-text-next-to-current{0%{opacity:0;transform:translateX(calc(var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset))) translateY(calc(var(--f7-navbar-large-title-height)*1 + var(--f7-navbar-large-title-padding-vertical)/2)) scale(2)}20%{opacity:0}to{opacity:1;transform:translateX(0) translateY(0) scale(1)}}@keyframes ios-navbar-bg-from-cb-to-lb{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-left-bottom)}}@keyframes ios-navbar-bg-from-cb-to-lt{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-left-top)}}@keyframes ios-navbar-bg-from-ct-to-lb{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-left-bottom)}}@keyframes ios-navbar-bg-from-ct-to-lt{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-left-top)}}@keyframes ios-navbar-bg-from-rb-to-cb{0%{transform:var(--f7-navbar-large-bg-right-bottom)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-rb-to-ct{0%{transform:var(--f7-navbar-large-bg-right-bottom)}to{transform:var(--f7-navbar-large-bg-center-top)}}@keyframes ios-navbar-bg-from-rt-to-cb{0%{transform:var(--f7-navbar-large-bg-right-top)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-cb-to-rb{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-right-bottom)}}@keyframes ios-navbar-bg-from-ct-to-rb{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-right-bottom)}}@keyframes ios-navbar-bg-from-cb-to-rt{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-right-top)}}@keyframes ios-navbar-bg-from-ct-to-rt{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-right-top)}}@keyframes ios-navbar-bg-from-lb-to-cb{0%{transform:var(--f7-navbar-large-bg-left-bottom)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-lt-to-cb{0%{transform:var(--f7-navbar-large-bg-left-top)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-lb-to-ct{0%{transform:var(--f7-navbar-large-bg-left-bottom)}to{transform:var(--f7-navbar-large-bg-center-top)}}@keyframes ios-navbar-bg-from-lt-to-ct{0%{transform:var(--f7-navbar-large-bg-left-top)}to{transform:var(--f7-navbar-large-bg-center-top)}}.md .navbar .title-large{align-items:center}.md .navbar .left{margin-left:4px;margin-right:4px}.md .navbar a.link{min-width:48px;padding:0 12px}.md .navbar a.icon-only{flex-shrink:0;min-width:0;width:48px}.md .navbar .right{margin-left:auto;margin-right:4px}.md .navbar .right:first-child{right:var(--f7-safe-area-right)}.md .navbar-inner{justify-content:flex-start;overflow:hidden}.md .navbar-large:not(.navbar-large-collapsed) .navbar-inner,.md .page.page-with-subnavbar .navbar-inner{overflow:visible}.md .navbar-inner:not(.navbar-inner-centered-title) .title:first-child{margin-left:16px}.md .navbar-inner-centered-title{justify-content:space-between}.md .navbar-inner-centered-title .right{margin-left:0}.md .navbar-inner-centered-title .title{text-align:center}:root{--f7-tabbar-link-active-bg-color:transparent;--f7-tabbar-label-text-transform:none;--f7-toolbar-hide-show-transition-duration:400ms}.ios{--f7-toolbar-height:44px;--f7-toolbar-font-size:17px;--f7-toolbar-inner-padding-left:8px;--f7-toolbar-inner-padding-right:8px;--f7-toolbar-link-font-weight:400;--f7-tabbar-icons-height:50px;--f7-tabbar-icons-tablet-height:50px;--f7-tabbar-icon-size:28px;--f7-tabbar-link-text-transform:none;--f7-tabbar-link-font-weight:400;--f7-tabbar-link-letter-spacing:0;--f7-tabbar-label-font-size:12px;--f7-tabbar-label-tablet-font-size:14px;--f7-tabbar-label-font-weight:500;--f7-tabbar-label-letter-spacing:0.01;--f7-tabbar-link-inactive-color:rgba(0,0,0,0.4)}.ios .dark,.ios.dark{--f7-tabbar-link-inactive-color:rgba(255,255,255,0.54)}.md{--f7-toolbar-height:56px;--f7-toolbar-font-size:14px;--f7-toolbar-inner-padding-left:0px;--f7-toolbar-inner-padding-right:0px;--f7-tabbar-icons-height:80px;--f7-tabbar-icons-tablet-height:80px;--f7-tabbar-icon-size:24px;--f7-tabbar-link-text-transform:none;--f7-tabbar-link-font-weight:500;--f7-tabbar-link-letter-spacing:0;--f7-toolbar-link-font-weight:500;--f7-tabbar-label-font-size:12px;--f7-tabbar-label-tablet-font-size:12px;--f7-tabbar-label-font-weight:500;--f7-tabbar-label-letter-spacing:0}.md,.md .dark,.md [class*=color-]{--f7-tabbar-link-active-color:var(--f7-md-on-secondary-container);--f7-tabbar-link-active-border-color:var(--f7-md-primary);--f7-tabbar-link-inactive-color:var(--f7-md-on-surface-variant);--f7-tabbar-link-active-icon-bg-color:var(--f7-md-secondary-container)}.toolbar{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-toolbar-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-toolbar-text-color,var(--f7-bars-text-color));font-size:var(--f7-toolbar-font-size);height:var(--f7-toolbar-height);left:0;margin:0;position:relative;transform:translateZ(0);width:100%;z-index:600}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .toolbar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-toolbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.toolbar b{font-weight:600}.toolbar a{box-sizing:border-box;color:var(--f7-toolbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)));flex-shrink:1;position:relative;text-overflow:ellipsis;white-space:nowrap}.toolbar .link{display:flex;font-weight:var(--f7-toolbar-link-font-weight);height:var(--f7-toolbar-link-height,var(--f7-toolbar-height));line-height:var(--f7-toolbar-link-line-height,var(--f7-toolbar-height))}.toolbar i.icon{display:block}.toolbar:after,.toolbar:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.page>.toolbar,.view>.toolbar,.views>.toolbar{position:absolute}.ios .toolbar-top-ios,.md .toolbar-top-md,.toolbar-top{top:0}.ios .toolbar-top-ios .tab-link-highlight,.md .toolbar-top-md .tab-link-highlight,.toolbar-top .tab-link-highlight{bottom:0}.ios .toolbar-top-ios.no-outline:after,.ios .toolbar-top-ios.toolbar-hidden:before,.md .toolbar-top-md.no-outline:after,.md .toolbar-top-md.toolbar-hidden:before,.toolbar-top.no-outline:after,.toolbar-top.toolbar-hidden:before{display:none!important}.ios .toolbar-top-ios:after,.ios .toolbar-top-ios:before,.md .toolbar-top-md:after,.md .toolbar-top-md:before,.toolbar-top:after,.toolbar-top:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.ios .toolbar-top-ios:after,.md .toolbar-top-md:after,.toolbar-top:after{background-color:var(--f7-toolbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .toolbar-bottom-ios,.md .toolbar-bottom-md,.toolbar-bottom{bottom:0;height:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.ios .toolbar-bottom-ios .tab-link-highlight,.md .toolbar-bottom-md .tab-link-highlight,.toolbar-bottom .tab-link-highlight{top:0}.ios .toolbar-bottom-ios .toolbar-inner,.md .toolbar-bottom-md .toolbar-inner,.toolbar-bottom .toolbar-inner{bottom:var(--f7-safe-area-bottom);height:auto;top:0}.ios .toolbar-bottom-ios.no-outline:before,.ios .toolbar-bottom-ios.toolbar-hidden:after,.md .toolbar-bottom-md.no-outline:before,.md .toolbar-bottom-md.toolbar-hidden:after,.toolbar-bottom.no-outline:before,.toolbar-bottom.toolbar-hidden:after{display:none!important}.ios .toolbar-bottom-ios:before,.md .toolbar-bottom-md:before,.toolbar-bottom:before{background-color:var(--f7-toolbar-border-color,var(--f7-bars-border-color));bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.toolbar-inner{align-content:center;align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:space-between;left:0;overflow:hidden;padding:0 calc(var(--f7-toolbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-toolbar-inner-padding-left) + var(--f7-safe-area-left));position:absolute;top:0;width:100%}.views>.tabbar,.views>.tabbar-icons{z-index:5001}.tabbar a,.tabbar-icons a{color:var(--f7-tabbar-link-inactive-color)}.tabbar .link,.tabbar-icons .link{line-height:1.4}.tabbar .link,.tabbar .tab-link,.tabbar-icons .link,.tabbar-icons .tab-link{align-items:center;box-sizing:border-box;display:flex;flex-direction:column;font-weight:var(--f7-tabbar-link-font-weight);height:100%;justify-content:center;letter-spacing:var(--f7-tabbar-link-letter-spacing);overflow:hidden;text-transform:var(--f7-tabbar-link-text-transform);width:100%}.tabbar .tab-link-active,.tabbar-icons .tab-link-active{background-color:var(--f7-tabbar-link-active-bg-color,transparent);color:var(--f7-tabbar-link-active-color,var(--f7-theme-color))}.tabbar i.icon,.tabbar-icons i.icon{font-size:var(--f7-tabbar-icon-size);height:var(--f7-tabbar-icon-size);line-height:var(--f7-tabbar-icon-size)}.md .tabbar-icons.tabbar-icons .tab-link-highlight,.md .tabbar.tabbar-icons .tab-link-highlight{display:none}.md .tabbar-icons:not(.tabbar-icons) .tab-link-highlight,.md .tabbar:not(.tabbar-icons) .tab-link-highlight{background:var(--f7-tabbar-link-active-border-color,var(--f7-theme-color));height:2px;left:0;position:absolute;transition-duration:.3s}.tabbar-icons{--f7-toolbar-height:var(--f7-tabbar-icons-height)}.tabbar-icons .link,.tabbar-icons .tab-link{align-items:center;height:100%;justify-content:center}.tabbar-icons .tabbar-label{display:block;font-size:var(--f7-tabbar-label-font-size);font-weight:var(--f7-tabbar-label-font-weight);letter-spacing:var(--f7-tabbar-label-letter-spacing);line-height:1;margin:0;position:relative;text-overflow:ellipsis;text-transform:var(--f7-tabbar-label-text-transform);white-space:nowrap}@media (min-width:768px) and (min-height:600px){:root{--f7-tabbar-icons-height:var(--f7-tabbar-icons-tablet-height);--f7-tabbar-label-font-size:var(--f7-tabbar-label-tablet-font-size)}}.tabbar-scrollable .toolbar-inner{-webkit-overflow-scrolling:touch;justify-content:flex-start;overflow:auto;scrollbar-color:transparent;scrollbar-width:none}.tabbar-scrollable .toolbar-inner::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-track{background:transparent;box-shadow:none}.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.tabbar-scrollable .link,.tabbar-scrollable .tab-link{flex-shrink:0;width:auto}.navbar-transitioning+.toolbar,.navbar-transitioning~* .toolbar,.toolbar-transitioning{transition-duration:var(--f7-toolbar-hide-show-transition-duration)}.ios .toolbar-bottom-ios~*,.md .toolbar-bottom-md~*,.toolbar-bottom~*{--f7-page-toolbar-bottom-offset:var(--f7-toolbar-height)}.ios .toolbar-bottom-ios.tabbar-icons~*,.md .toolbar-bottom-md.tabbar-icons~*,.toolbar-bottom.tabbar-icons~*{--f7-page-toolbar-bottom-offset:var(--f7-tabbar-icons-height)}.ios .toolbar-bottom-ios.toolbar-hidden,.md .toolbar-bottom-md.toolbar-hidden,.toolbar-bottom.toolbar-hidden{transform:translate3d(0,100%,0)}.ios .toolbar-top-ios~*,.md .toolbar-top-md~*,.toolbar-top~*{--f7-page-toolbar-top-offset:var(--f7-toolbar-height)}.ios .toolbar-top-ios.tabbar-icons~*,.md .toolbar-top-md.tabbar-icons~*,.toolbar-top.tabbar-icons~*{--f7-page-toolbar-top-offset:var(--f7-tabbar-icons-height)}.ios .toolbar-top-ios.toolbar-hidden,.md .toolbar-top-md.toolbar-hidden,.toolbar-top.toolbar-hidden{transform:translate3d(0,-100%,0)}.ios .navbars~* .toolbar-top-ios,.ios .navbars~.page:not(.no-navbar) .toolbar-top-ios,.ios .navbars~.toolbar-top-ios,.ios .navbar~* .toolbar-top-ios,.ios .navbar~.page:not(.no-navbar) .toolbar-top-ios,.ios .navbar~.toolbar-top-ios,.md .navbar~* .toolbar-top-md,.md .navbar~.page:not(.no-navbar) .toolbar-top-md,.md .navbar~.toolbar-top-md,.navbars~* .toolbar-top,.navbars~.page:not(.no-navbar) .toolbar-top,.navbars~.toolbar-top,.navbar~* .toolbar-top,.navbar~.page:not(.no-navbar) .toolbar-top,.navbar~.toolbar-top{top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars~* .toolbar-top-ios.toolbar-hidden,.ios .navbars~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,.ios .navbars~.toolbar-top-ios.toolbar-hidden,.ios .navbar~* .toolbar-top-ios.toolbar-hidden,.ios .navbar~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,.ios .navbar~.toolbar-top-ios.toolbar-hidden,.md .navbar~* .toolbar-top-md.toolbar-hidden,.md .navbar~.page:not(.no-navbar) .toolbar-top-md.toolbar-hidden,.md .navbar~.toolbar-top-md.toolbar-hidden,.navbars~* .toolbar-top.toolbar-hidden,.navbars~.page:not(.no-navbar) .toolbar-top.toolbar-hidden,.navbars~.toolbar-top.toolbar-hidden,.navbar~* .toolbar-top.toolbar-hidden,.navbar~.page:not(.no-navbar) .toolbar-top.toolbar-hidden,.navbar~.toolbar-top.toolbar-hidden{transform:translate3d(0,calc((var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top))*-1),0)}.ios .navbars~* .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbars~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbars~.toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbar~* .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbar~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbar~.toolbar-top-ios.toolbar-hidden.tabbar-icons,.md .navbar~* .toolbar-top-md.toolbar-hidden.tabbar-icons,.md .navbar~.page:not(.no-navbar) .toolbar-top-md.toolbar-hidden.tabbar-icons,.md .navbar~.toolbar-top-md.toolbar-hidden.tabbar-icons,.navbars~* .toolbar-top.toolbar-hidden.tabbar-icons,.navbars~.page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,.navbars~.toolbar-top.toolbar-hidden.tabbar-icons,.navbar~* .toolbar-top.toolbar-hidden.tabbar-icons,.navbar~.page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,.navbar~.toolbar-top.toolbar-hidden.tabbar-icons{transform:translate3d(0,calc((var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top))*-1),0)}.ios .navbar-hidden+.toolbar-top-ios:not(.toolbar-hidden),.ios .navbar-hidden~* .toolbar-top-ios:not(.toolbar-hidden),.md .navbar-hidden+.toolbar-top-md:not(.toolbar-hidden),.md .navbar-hidden~* .toolbar-top-md:not(.toolbar-hidden),.navbar-hidden+.toolbar-top:not(.toolbar-hidden),.navbar-hidden~* .toolbar-top:not(.toolbar-hidden){transform:translate3d(0,calc(0px - var(--f7-navbar-height)),0)}.ios .navbar-large-hidden+.toolbar-top-ios:not(.toolbar-hidden),.ios .navbar-large-hidden~* .toolbar-top-ios:not(.toolbar-hidden),.md .navbar-large-hidden+.toolbar-top-md:not(.toolbar-hidden),.md .navbar-large-hidden~* .toolbar-top-md:not(.toolbar-hidden),.navbar-large-hidden+.toolbar-top:not(.toolbar-hidden),.navbar-large-hidden~* .toolbar-top:not(.toolbar-hidden){transform:translate3d(0,calc(0px - var(--f7-navbar-height) - var(--f7-navbar-large-title-height)),0)}.ios .toolbar a.icon-only{align-items:center;display:flex;justify-content:center;margin:0;min-height:var(--f7-toolbar-height);min-width:44px}.ios .tabbar-icons .link,.ios .tabbar-icons .tab-link{padding-bottom:4px;padding-top:4px}.ios .tabbar-icons .link i+span,.ios .tabbar-icons .tab-link i+span{margin:4px 0 0}@media (min-width:768px) and (min-height:600px){.ios .tabbar .link,.ios .tabbar .tab-link,.ios .tabbar-icons .link,.ios .tabbar-icons .tab-link{flex-direction:row;justify-content:center}.ios .tabbar .link i+span,.ios .tabbar .tab-link i+span,.ios .tabbar-icons .link i+span,.ios .tabbar-icons .tab-link i+span{margin-left:5px}}.ios .tabbar-scrollable .toolbar-inner{justify-content:flex-start}.ios .tabbar-scrollable .link,.ios .tabbar-scrollable .tab-link{padding:0 8px}.md .toolbar .link{justify-content:center;min-width:48px;padding:0 12px}.md .toolbar a.icon-only{flex-shrink:0;min-width:0}.md .tabbar .link,.md .tabbar .tab-link,.md .tabbar-icons .link,.md .tabbar-icons .tab-link{padding-left:0;padding-right:0}.md .tabbar a.icon-only,.md .tabbar-icons a.icon-only{flex-shrink:1}.md .tabbar .tab-link,.md .tabbar-icons .tab-link{overflow:hidden;position:relative;transition-duration:.3s}.md .tabbar i.icon,.md .tabbar-icons i.icon{position:relative}.md .tabbar i.icon:before,.md .tabbar-icons i.icon:before{background:var(--f7-tabbar-link-active-icon-bg-color);border-radius:32px;content:"";height:32px;left:50%;opacity:0;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) scaleX(.5);transition-duration:.2s;width:64px;z-index:-1}.md .tabbar i.icon+.tabbar-label,.md .tabbar-icons i.icon+.tabbar-label{margin-top:8px}.md .tabbar .tab-link-active i.icon:before,.md .tabbar-icons .tab-link-active i.icon:before{opacity:1;transform:translateX(-50%) translateY(-50%) scaleX(1)}.md .tabbar-icons .link,.md .tabbar-icons .tab-link{padding-bottom:8px;padding-top:8px}.md .tabbar-label{line-height:1.2;max-width:100%;overflow:hidden}.md .tabbar-scrollable .toolbar-inner{overflow:auto}.md .tabbar-scrollable .link,.md .tabbar-scrollable .tab-link{padding:0 12px}:root{--f7-subnavbar-title-line-height:1.2}.ios{--f7-subnavbar-height:44px;--f7-subnavbar-inner-padding-left:8px;--f7-subnavbar-inner-padding-right:8px;--f7-subnavbar-title-font-size:34px;--f7-subnavbar-title-font-weight:700;--f7-subnavbar-title-letter-spacing:-0.03em;--f7-subnavbar-title-margin-left:8px}.md{--f7-subnavbar-height:64px;--f7-subnavbar-inner-padding-left:16px;--f7-subnavbar-inner-padding-right:16px;--f7-subnavbar-title-font-size:22px;--f7-subnavbar-title-font-weight:400;--f7-subnavbar-title-letter-spacing:0;--f7-subnavbar-title-margin-left:0px}.subnavbar{align-items:center;background-color:var(--f7-subnavbar-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-subnavbar-text-color,var(--f7-bars-text-color));display:flex;justify-content:space-between;left:0;position:absolute;top:0;width:100%;z-index:600}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .subnavbar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-subnavbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.subnavbar .subnavbar-title{display:inline-block;font-size:var(--f7-subnavbar-title-font-size);font-weight:var(--f7-subnavbar-title-font-weight);letter-spacing:var(--f7-subnavbar-title-letter-spacing);line-height:var(--f7-subnavbar-title-line-height);margin-left:var(--f7-subnavbar-title-margin-left);overflow:hidden;position:relative;text-align:left;text-overflow:ellpsis;white-space:nowrap}.subnavbar .left,.subnavbar .right{align-items:center;display:flex;flex-shrink:0;justify-content:flex-start}.subnavbar .right:first-child{height:100%;position:absolute}.subnavbar a{color:var(--f7-subnavbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.subnavbar a.link{height:var(--f7-subnavbar-link-height,var(--f7-subnavbar-height));line-height:var(--f7-subnavbar-link-line-height,var(--f7-subnavbar-height))}.subnavbar a.icon-only{min-width:var(--f7-subnavbar-height)}.subnavbar.navbar-hidden:before,.subnavbar.no-outline:after{display:none!important}.subnavbar:after,.subnavbar:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.subnavbar:after{background-color:var(--f7-subnavbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.subnavbar-inner{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:space-between;overflow:hidden;padding:0 calc(var(--f7-subnavbar-inner-padding-left) + var(--f7-safe-area-right)) 0 calc(var(--f7-subnavbar-inner-padding-right) + var(--f7-safe-area-left));width:100%}.navbar .subnavbar{top:100%}.page>.subnavbar,.view>.subnavbar,.views>.subnavbar{position:absolute}.navbars~* .subnavbar,.navbars~.page-with-subnavbar:not(.no-navbar) .subnavbar,.navbars~.subnavbar,.navbar~* .subnavbar,.navbar~.page-with-subnavbar:not(.no-navbar) .subnavbar,.navbar~.subnavbar,.page-with-subnavbar .navbar~* .subnavbar,.page-with-subnavbar .navbar~.subnavbar{top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbar .title-large~.subnavbar,.navbars~.page-with-navbar-large:not(.no-navbar) .subnavbar,.navbar~.page-with-navbar-large:not(.no-navbar) .subnavbar,.page-with-subnavbar.page-with-navbar-large .navbar~* .subnavbar,.page-with-subnavbar.page-with-navbar-large .navbar~.subnavbar{top:calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.page-with-subnavbar,.subnavbar~*{--f7-page-subnavbar-offset:var(--f7-subnavbar-height)}.ios .subnavbar{height:calc(var(--f7-subnavbar-height) + 1px);margin-top:-1px;padding-top:1px}.ios .subnavbar .title{align-self:flex-start;flex-shrink:10}.ios .subnavbar .left a+a,.ios .subnavbar .right a+a{margin-left:16px}.ios .subnavbar .left{margin-right:10px}.ios .subnavbar .right{margin-left:10px}.ios .subnavbar .right:first-child{right:8px}.ios .subnavbar a.link{justify-content:flex-start}.ios .subnavbar a.icon-only{justify-content:center;margin:0}.md .subnavbar{height:var(--f7-subnavbar-height)}.md .subnavbar .right{margin-left:auto}.md .subnavbar .right:first-child{right:16px}.md .subnavbar a.link{justify-content:center;padding:0 12px}.md .subnavbar a.icon-only{flex-shrink:0;padding:0 12px}.md .subnavbar-inner>a.link:first-child{margin-left:calc(var(--f7-subnavbar-inner-padding-left)*-1)}.md .subnavbar-inner>a.link:last-child{margin-right:calc(var(--f7-subnavbar-inner-padding-right)*-1)}:root{--f7-block-padding-horizontal:16px;--f7-block-padding-vertical:16px;--f7-block-font-size:inherit;--f7-block-header-margin:10px;--f7-block-footer-margin:10px;--f7-block-header-font-size:14px;--f7-block-footer-font-size:14px;--f7-block-title-text-transform:none;--f7-block-title-white-space:nowrap;--f7-block-title-medium-text-transform:none;--f7-block-title-large-text-transform:none;--f7-block-inset-side-margin:16px}:root .dark,:root.dark{--f7-block-outline-border-color:rgba(255,255,255,0.15)}.ios{--f7-block-text-color:inherit;--f7-block-margin-vertical:35px;--f7-block-outline-border-color:rgba(0,0,0,0.22);--f7-block-title-font-size:16px;--f7-block-title-font-weight:600;--f7-block-title-line-height:20px;--f7-block-title-margin-bottom:10px;--f7-block-title-medium-font-size:22px;--f7-block-title-medium-font-weight:bold;--f7-block-title-medium-line-height:1.4;--f7-block-title-large-font-size:30px;--f7-block-title-large-font-weight:bold;--f7-block-title-large-line-height:1.3;--f7-block-inset-border-radius:8px;--f7-block-title-text-color:#000;--f7-block-strong-text-color:#000;--f7-block-header-text-color:rgba(0,0,0,0.45);--f7-block-footer-text-color:rgba(0,0,0,0.45);--f7-block-strong-bg-color:#fff;--f7-block-title-medium-text-color:#000;--f7-block-title-large-text-color:#000}.ios .dark,.ios.dark{--f7-block-title-text-color:#fff;--f7-block-header-text-color:rgba(255,255,255,0.55);--f7-block-footer-text-color:rgba(255,255,255,0.55);--f7-block-strong-text-color:#fff;--f7-block-strong-bg-color:#1c1c1d;--f7-block-title-medium-text-color:#fff;--f7-block-title-large-text-color:#fff}.md{--f7-block-margin-vertical:32px;--f7-block-title-font-size:inherit;--f7-block-title-font-weight:500;--f7-block-title-line-height:16px;--f7-block-title-margin-bottom:16px;--f7-block-title-medium-font-size:16px;--f7-block-title-medium-font-weight:500;--f7-block-title-medium-line-height:1.3;--f7-block-title-large-font-size:22px;--f7-block-title-large-font-weight:500;--f7-block-title-large-line-height:1.2;--f7-block-inset-border-radius:16px}.md,.md .dark,.md [class*=color-]{--f7-block-text-color:var(--f7-md-on-surface);--f7-block-strong-text-color:var(--f7-md-on-surface);--f7-block-outline-border-color:var(--f7-md-outline);--f7-block-title-text-color:var(--f7-theme-color);--f7-block-title-medium-text-color:var(--f7-theme-color);--f7-block-title-large-text-color:var(--f7-theme-color);--f7-block-strong-bg-color:var(--f7-md-surface-1);--f7-block-header-text-color:var(--f7-md-on-surface-variant);--f7-block-footer-text-color:var(--f7-md-on-surface-variant)}.block{box-sizing:border-box;color:var(--f7-block-text-color);font-size:var(--f7-block-font-size);margin:var(--f7-block-margin-vertical) 0;padding-bottom:0;padding-left:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));padding-top:0;position:relative;z-index:1}.block>h1:first-child,.block>h2:first-child,.block>h3:first-child,.block>h4:first-child,.block>p:first-child{margin-top:0}.block>h1:last-child,.block>h2:last-child,.block>h3:last-child,.block>h4:last-child,.block>p:last-child{margin-bottom:0}.block-strong,.ios .block-strong-ios,.md .block-strong-md{background-color:var(--f7-block-strong-bg-color);color:var(--f7-block-strong-text-color);padding-bottom:var(--f7-block-padding-vertical);padding-top:var(--f7-block-padding-vertical)}.block-outline:not(.inset):before,.ios .block-outline-ios:not(.inset):not(.inset-ios):before,.md .block-outline-md:not(.inset):not(.inset-md):before{background-color:var(--f7-block-outline-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.block-outline:not(.inset):after,.ios .block-outline-ios:not(.inset):not(.inset-ios):after,.md .block-outline-md:not(.inset):not(.inset-md):after{background-color:var(--f7-block-outline-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.block-outline.inset,.ios .block-outline-ios.inset,.ios .block-outline-ios.inset-ios,.md .block-outline-md.inset,.md .block-outline-md.inset-md{border:1px solid var(--f7-block-outline-border-color)}.block-title{color:var(--f7-block-title-text-color);font-size:var(--f7-block-title-font-size,inherit);font-weight:var(--f7-block-title-font-weight);line-height:var(--f7-block-title-line-height);margin:0;margin:var(--f7-block-margin-vertical) calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right)) var(--f7-block-title-margin-bottom) calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));overflow:hidden;position:relative;text-overflow:ellipsis;text-transform:var(--f7-block-title-text-transform);white-space:var(--f7-block-title-white-space)}.block-title+.block,.block-title+.block-header,.block-title+.card,.block-title+.list,.block-title+.timeline{margin-top:0}.block-title-medium{color:var(--f7-block-title-medium-text-color);font-size:var(--f7-block-title-medium-font-size);font-weight:var(--f7-block-title-medium-font-weight);line-height:var(--f7-block-title-medium-line-height);text-transform:var(--f7-block-title-medium-text-transform)}.block-title-large{color:var(--f7-block-title-large-text-color);font-size:var(--f7-block-title-large-font-size);font-weight:var(--f7-block-title-large-font-weight);line-height:var(--f7-block-title-large-line-height);text-transform:var(--f7-block-title-large-text-transform)}.block>.block-title:first-child,.list>.block-title:first-child{margin-left:0;margin-right:0;margin-top:0}.block-header{color:var(--f7-block-header-text-color);font-size:var(--f7-block-header-font-size);margin-bottom:var(--f7-block-header-margin);margin-top:var(--f7-block-margin-vertical)}.block-header+.block,.block-header+.card,.block-header+.list,.block-header+.timeline{margin-top:var(--f7-block-header-margin)}.block-footer{color:var(--f7-block-footer-text-color);font-size:var(--f7-block-footer-font-size);margin-bottom:var(--f7-block-margin-vertical);margin-top:var(--f7-block-footer-margin)}.block-footer,.block-header{padding-bottom:0;padding-left:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));padding-top:0}.block-footer h1:first-child,.block-footer h2:first-child,.block-footer h3:first-child,.block-footer h4:first-child,.block-footer p:first-child,.block-footer ul:first-child,.block-header h1:first-child,.block-header h2:first-child,.block-header h3:first-child,.block-header h4:first-child,.block-header p:first-child,.block-header ul:first-child{margin-top:0}.block-footer h1:last-child,.block-footer h2:last-child,.block-footer h3:last-child,.block-footer h4:last-child,.block-footer p:last-child,.block-footer ul:last-child,.block-header h1:last-child,.block-header h2:last-child,.block-header h3:last-child,.block-header h4:last-child,.block-header p:last-child,.block-header ul:last-child{margin-bottom:0}.block-footer h1:first-child:last-child,.block-footer h2:first-child:last-child,.block-footer h3:first-child:last-child,.block-footer h4:first-child:last-child,.block-footer p:first-child:last-child,.block-footer ul:first-child:last-child,.block-header h1:first-child:last-child,.block-header h2:first-child:last-child,.block-header h3:first-child:last-child,.block-header h4:first-child:last-child,.block-header p:first-child:last-child,.block-header ul:first-child:last-child{margin-bottom:0;margin-top:0}.block .block-header,.card .block-header,.list .block-header,.timeline .block-header{margin-top:0}.block .block-footer,.card .block-footer,.list .block-footer,.timeline .block-footer{margin-bottom:0}.block+.block-footer,.card+.block-footer,.list+.block-footer,.timeline+.block-footer{margin-top:calc((var(--f7-block-margin-vertical) - var(--f7-block-footer-margin))*-1)}.block+.block-footer{margin-bottom:var(--f7-block-margin-vertical)}.block .block-footer,.block .block-header{padding:0}.block.inset,.ios .block.inset-ios,.md .block.inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block-strong.inset:after,.block-strong.inset:before,.ios .block-strong-ios.inset-ios:after,.ios .block-strong-ios.inset-ios:before,.ios .block-strong-ios.inset:after,.ios .block-strong-ios.inset:before,.ios .block-strong.inset-ios:after,.ios .block-strong.inset-ios:before,.md .block-strong-md.inset-md:after,.md .block-strong-md.inset-md:before,.md .block-strong-md.inset:after,.md .block-strong-md.inset:before,.md .block-strong.inset-md:after,.md .block-strong.inset-md:before{display:none!important}@media (min-width:480px){.block.xsmall-inset,.ios .block.xsmall-inset-ios,.md .block.xsmall-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.xsmall-inset:after,.block.xsmall-inset:before,.ios .block.xsmall-inset-ios:after,.ios .block.xsmall-inset-ios:before,.md .block.xsmall-inset-md:after,.md .block.xsmall-inset-md:before{display:none!important}.block.xsmall-inset.block-outline,.ios .block.xsmall-inset-ios.block-outline,.ios .block.xsmall-inset-ios.block-outline-ios,.md .block.xsmall-inset-md.block-outline,.md .block.xsmall-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:568px){.block.small-inset,.ios .block.small-inset-ios,.md .block.small-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.small-inset:after,.block.small-inset:before,.ios .block.small-inset-ios:after,.ios .block.small-inset-ios:before,.md .block.small-inset-md:after,.md .block.small-inset-md:before{display:none!important}.block.small-inset.block-outline,.ios .block.small-inset-ios.block-outline,.ios .block.small-inset-ios.block-outline-ios,.md .block.small-inset-md.block-outline,.md .block.small-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:768px){.block.medium-inset,.ios .block.medium-inset-ios,.md .block.medium-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.medium-inset:after,.block.medium-inset:before,.ios .block.medium-inset-ios:after,.ios .block.medium-inset-ios:before,.md .block.medium-inset-md:after,.md .block.medium-inset-md:before{display:none!important}.block.medium-inset.block-outline,.ios .block.medium-inset-ios.block-outline,.ios .block.medium-inset-ios.block-outline-ios,.md .block.medium-inset-md.block-outline,.md .block.medium-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:1024px){.block.large-inset,.ios .block.large-inset-ios,.md .block.large-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.large-inset:after,.block.large-inset:before,.ios .block.large-inset-ios:after,.ios .block.large-inset-ios:before,.md .block.large-inset-md:after,.md .block.large-inset-md:before{display:none!important}.block.large-inset.block-outline,.ios .block.large-inset-ios.block-outline,.ios .block.large-inset-ios.block-outline-ios,.md .block.large-inset-md.block-outline,.md .block.large-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:1200px){.block.xlarge-inset,.ios .block.xlarge-inset-ios,.md .block.xlarge-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.xlarge-inset:after,.block.xlarge-inset:before,.ios .block.xlarge-inset-ios:after,.ios .block.xlarge-inset-ios:before,.md .block.xlarge-inset-md:after,.md .block.xlarge-inset-md:before{display:none!important}.block.xlarge-inset.block-outline,.ios .block.xlarge-inset-ios.block-outline,.ios .block.xlarge-inset-ios.block-outline-ios,.md .block.xlarge-inset-md.block-outline,.md .block.xlarge-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}:root{--f7-list-inset-side-margin:16px;--f7-list-item-padding-horizontal:16px;--f7-list-item-padding-vertical:8px;--f7-list-media-item-padding-horizontal:16px;--f7-list-item-text-max-lines:2;--f7-list-chevron-icon-font-size:20px;--f7-list-item-media-margin:16px;--f7-list-item-title-font-size:inherit;--f7-list-item-title-font-weight:400;--f7-list-item-title-line-height:inherit;--f7-list-item-title-white-space:nowrap;--f7-list-item-subtitle-font-weight:400;--f7-list-item-subtitle-line-height:inherit;--f7-list-item-text-font-weight:400;--f7-list-item-after-font-weight:400;--f7-list-item-after-line-height:inherit;--f7-list-item-header-font-size:12px;--f7-list-item-header-font-weight:400;--f7-list-item-header-line-height:1.2;--f7-list-item-footer-font-size:12px;--f7-list-item-footer-font-weight:400;--f7-list-item-footer-line-height:1.2;--f7-list-button-font-size:inherit;--f7-list-button-font-weight:400;--f7-list-button-text-align:center;--f7-list-group-title-line-height:inherit;--f7-menu-list-font-size:14px;--f7-menu-list-item-title-font-size:14px;--f7-menu-list-item-title-font-weight:500;--f7-menu-list-item-subtitle-font-size:14px;--f7-menu-list-item-text-font-size:14px;--f7-menu-list-item-after-font-size:14px;--f7-list-outline-border-color:rgba(0,0,0,0.22);--f7-list-chevron-icon-color:rgba(0,0,0,0.2)}:root .dark,:root.dark{--f7-list-button-border-color:rgba(255,255,255,0.15);--f7-list-outline-border-color:rgba(255,255,255,0.15);--f7-list-group-title-border-color:rgba(255,255,255,0.15);--f7-list-chevron-icon-color:rgba(255,255,255,0.3)}.ios{--f7-list-in-list-padding-left:30px;--f7-list-inset-border-radius:8px;--f7-list-margin-vertical:35px;--f7-list-font-size:17px;--f7-list-chevron-icon-area:20px;--f7-list-item-title-text-color:inherit;--f7-list-item-subtitle-text-color:inherit;--f7-list-link-pressed-bg-color:rgba(0,0,0,0.15);--f7-list-item-subtitle-font-size:15px;--f7-list-item-text-font-size:15px;--f7-list-item-text-line-height:21px;--f7-list-item-after-font-size:inherit;--f7-list-item-after-padding:5px;--f7-list-item-min-height:44px;--f7-list-item-media-icons-margin:5px;--f7-list-media-item-padding-vertical:10px;--f7-list-media-item-title-font-weight:600;--f7-list-button-border-color:rgba(0,0,0,0.22);--f7-list-group-title-border-color:rgba(0,0,0,0.22);--f7-list-group-title-height:31px;--f7-list-group-title-font-size:inherit;--f7-list-group-title-font-weight:400;--f7-menu-list-offset:8px;--f7-menu-list-border-radius:8px;--f7-menu-list-item-bg-color:transparent;--f7-menu-list-item-text-color:inherit;--f7-menu-list-item-min-height:44px;--f7-list-item-border-color:rgba(0,0,0,0.22);--f7-list-outline-inset-border-color:rgba(0,0,0,0.22);--f7-list-strong-bg-color:#fff;--f7-list-item-after-text-color:rgba(0,0,0,0.45);--f7-list-item-header-text-color:inherit;--f7-list-item-footer-text-color:rgba(0,0,0,0.45);--f7-list-item-text-text-color:rgba(0,0,0,0.45);--f7-list-group-title-text-color:rgba(0,0,0,0.45);--f7-list-group-title-bg-color:#f7f7f7;--f7-menu-list-item-selected-text-color:var(--f7-theme-color);--f7-menu-list-item-selected-bg-color:rgba(var(--f7-theme-color-rgb),0.15)}.ios .dark,.ios.dark{--f7-list-item-border-color:rgba(255,255,255,0.15);--f7-list-outline-inset-color:rgba(255,255,255,0.15);--f7-list-strong-bg-color:#1c1c1d;--f7-list-item-after-text-color:rgba(255,255,255,0.55);--f7-list-item-header-text-color:rgba(255,255,255,0.55);--f7-list-item-footer-text-color:rgba(255,255,255,0.55);--f7-list-item-text-text-color:rgba(255,255,255,0.55);--f7-list-group-title-text-color:rgba(255,255,255,0.55);--f7-list-group-title-bg-color:#232323;--f7-list-link-pressed-bg-color:rgba(255,255,255,0.08);--f7-menu-list-item-selected-text-color:inherit;--f7-menu-list-item-selected-bg-color:var(--f7-theme-color)}.md{--f7-list-in-list-padding-left:24px;--f7-list-inset-border-radius:16px;--f7-list-margin-vertical:32px;--f7-list-font-size:16px;--f7-list-chevron-icon-area:26px;--f7-list-item-subtitle-font-size:14px;--f7-list-item-text-font-size:14px;--f7-list-item-text-line-height:20px;--f7-list-item-after-font-size:14px;--f7-list-item-after-padding:8px;--f7-list-item-min-height:48px;--f7-list-item-media-icons-margin:8px;--f7-list-media-item-padding-vertical:12px;--f7-list-media-item-title-font-weight:500;--f7-list-button-border-color:transparent;--f7-list-group-title-border-color:transparent;--f7-list-group-title-height:48px;--f7-list-group-title-font-size:16px;--f7-list-group-title-font-weight:400;--f7-menu-list-offset:16px;--f7-menu-list-border-radius:999px;--f7-menu-list-item-min-height:56px;--f7-list-link-pressed-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-list-outline-inset-border-color:var(--f7-md-outline);--f7-list-item-border-color:var(--f7-md-outline);--f7-list-item-title-text-color:var(--f7-md-on-surface);--f7-list-item-subtitle-text-color:var(--f7-md-on-surface);--f7-list-group-title-bg-color:var(--f7-md-surface-2);--f7-list-group-title-text-color:var(--f7-md-on-surface-variant);--f7-list-strong-bg-color:var(--f7-md-surface-1);--f7-list-item-after-text-color:var(--f7-md-on-surface-variant);--f7-list-item-text-text-color:var(--f7-md-on-surface-variant);--f7-list-item-header-text-color:var(--f7-md-on-surface-variant);--f7-list-item-footer-text-color:var(--f7-md-on-surface-variant);--f7-menu-list-item-text-color:var(--f7-md-on-surface-variant);--f7-menu-list-item-bg-color:var(--f7-md-surface-1);--f7-menu-list-item-selected-text-color:var(--f7-md-on-secondary-container);--f7-menu-list-item-selected-bg-color:var(--f7-md-secondary-container)}:root{--f7-list-chevron-icon-left:"chevron_left";--f7-list-chevron-icon-right:"chevron_right"}.list{font-size:var(--f7-list-font-size);margin:var(--f7-list-margin-vertical) 0;position:relative;z-index:1}.ios .list-strong-ios ul,.list-strong ul,.md .list-strong-md ul{background:var(--f7-list-strong-bg-color)}.ios .list-outline-ios ul:before,.list-outline ul:before,.md .list-outline-md ul:before{background-color:var(--f7-list-outline-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.ios .list-outline-ios ul:after,.list-outline ul:after,.md .list-outline-md ul:after{background-color:var(--f7-list-outline-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .list-outline-ios.inset,.ios .list-outline-ios.inset-ios,.list-outline.inset,.md .list-outline-md.inset,.md .list-outline-md.inset-md{border:1px solid var(--f7-list-outline-inset-border-color)}.list ul{list-style:none;margin:0;padding:0;position:relative}.list ul ul{padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-list-in-list-padding-left))}.list ul ul:after,.list ul ul:before{display:none!important}.list .item-media,.list li{box-sizing:border-box;position:relative}.list .item-media{align-items:center;display:flex;flex-shrink:0;flex-wrap:nowrap;padding-bottom:var(--f7-list-item-padding-vertical);padding-top:var(--f7-list-item-padding-vertical)}.list .item-media+.item-inner{margin-left:var(--f7-list-item-media-margin)}.list .item-media i+i,.list .item-media i+img{margin-left:var(--f7-list-item-media-icons-margin)}.list .item-after{padding-left:var(--f7-list-item-after-padding)}.list .item-inner{align-items:center;align-self:stretch;box-sizing:border-box;display:flex;justify-content:space-between;min-height:calc(var(--f7-list-item-min-height));min-width:0;padding-bottom:var(--f7-list-item-padding-vertical);padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));padding-top:var(--f7-list-item-padding-vertical);position:relative;width:100%}.list .item-title{color:var(--f7-list-item-title-text-color);flex-shrink:1;font-size:var(--f7-list-item-title-font-size);font-weight:var(--f7-list-item-title-font-weight);line-height:var(--f7-list-item-title-line-height);max-width:100%;min-width:0;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:var(--f7-list-item-title-white-space)}.list .item-after{color:var(--f7-list-item-after-text-color);display:flex;flex-shrink:0;font-size:var(--f7-list-item-after-font-size);font-weight:var(--f7-list-item-after-font-weight);line-height:var(--f7-list-item-after-line-height);margin-left:auto;white-space:nowrap}.list .item-footer,.list .item-header{white-space:normal}.list .item-header{color:var(--f7-list-item-header-text-color);font-size:var(--f7-list-item-header-font-size);font-weight:var(--f7-list-item-header-font-weight);line-height:var(--f7-list-item-header-line-height)}.list .item-footer{color:var(--f7-list-item-footer-text-color);font-size:var(--f7-list-item-footer-font-size);font-weight:var(--f7-list-item-footer-font-weight);line-height:var(--f7-list-item-footer-line-height)}.list .item-link,.list .list-button,.list label.item-content{cursor:pointer;overflow:hidden;position:relative;transition-duration:.3s;transition-property:background-color,color;z-index:0}.list .item-link,.list .list-button{display:block}.list .item-link,.list label.item-content{color:inherit}.list .item-link.active-state,.list label.item-content.active-state{background-color:var(--f7-list-link-pressed-bg-color)}.list .item-link .item-inner{padding-right:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.list .item-content{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;min-height:calc(var(--f7-list-item-min-height));padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left))}.list .item-subtitle{color:var(--f7-list-item-subtitle-text-color);font-size:var(--f7-list-item-subtitle-font-size);font-weight:var(--f7-list-item-subtitle-font-weight);line-height:var(--f7-list-item-subtitle-line-height);max-width:100%;white-space:nowrap}.list .item-subtitle,.list .item-text{overflow:hidden;position:relative;text-overflow:ellipsis}.list .item-text{-webkit-line-clamp:var(--f7-list-item-text-max-lines);-webkit-box-orient:vertical;color:var(--f7-list-item-text-text-color);display:-webkit-box;font-size:var(--f7-list-item-text-font-size);font-weight:var(--f7-list-item-text-font-weight);line-height:var(--f7-list-item-text-line-height);max-height:calc(var(--f7-list-item-text-line-height)*var(--f7-list-item-text-max-lines))}.list .item-title-row{box-sizing:border-box;display:flex;justify-content:space-between;position:relative}.list .item-title-row .item-after{align-self:center}.list li:last-child .list-button:after,.list li:last-child li:last-child>.item-content>.item-inner:after,.list li:last-child li:last-child>.item-inner:after,.list li:last-child li:last-child>.item-link>.item-content>.item-inner:after,.list li:last-child li:last-child>.swipeout-content>.item-content>.item-inner:after,.list li:last-child>.item-content>.item-inner:after,.list li:last-child>.item-inner:after,.list li:last-child>.item-link>.item-content>.item-inner:after,.list li:last-child>.swipeout-content>.item-content>.item-inner:after{display:none!important}.list li li:last-child .item-inner:after,.list li:last-child li .item-inner:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.list-button{--f7-touch-ripple-color:var(--f7-link-touch-ripple-color,rgba(var(--f7-theme-color-rgb),0.25));color:var(--f7-list-button-text-color,var(--f7-theme-color));font-size:var(--f7-list-button-font-size);font-weight:var(--f7-list-button-font-weight);line-height:var(--f7-list-item-min-height);padding:0 var(--f7-list-item-padding-horizontal);text-align:var(--f7-list-button-text-align)}.ios .list-button.active-state{background-color:var(--f7-list-button-pressed-bg-color,rgba(var(--f7-theme-color-rgb),.15))}.md .list-button.active-state{background-color:var(--f7-list-button-pressed-bg-color,transparent)}.ios .list-dividers-ios .list-button:after,.list-dividers .list-button:after,.md .list-dividers-md .list-button:after{background-color:var(--f7-list-button-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.list-button[class*=color-]{--f7-list-button-text-color:var(--f7-theme-color)}.simple-list li{align-content:center;align-items:center;box-sizing:border-box;display:flex;height:var(--f7-list-item-min-height);justify-content:space-between;line-height:var(--f7-list-item-min-height);max-width:100%;padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));position:relative;text-overflow:ellipsis;white-space:nowrap}.simple-list li:after{left:var(--f7-list-item-padding-horizontal);left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));right:0;width:auto}.simple-list li:last-child:after{display:none!important}.links-list li{z-index:1}.links-list a{align-content:center;align-items:center;box-sizing:border-box;color:inherit;display:block;display:flex;height:var(--f7-list-item-min-height);justify-content:space-between;max-width:100%;overflow:hidden;position:relative;text-overflow:ellipsis;transition-duration:.3s;transition-property:background-color;white-space:nowrap}.links-list a .ripple-wave{z-index:0}.links-list a:after{width:auto}.links-list a.active-state{background-color:var(--f7-list-link-pressed-bg-color)}.links-list a{padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.links-list a:after{left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));right:0}.links-list li:last-child a:after{display:none!important}.ios .list-dividers-ios .item-inner:after,.ios .list-dividers-ios.links-list a:after,.ios .list-dividers-ios.simple-list li:after,.list-dividers .item-inner:after,.list-dividers.links-list a:after,.list-dividers.simple-list li:after,.md .list-dividers-md .item-inner:after,.md .list-dividers-md.links-list a:after,.md .list-dividers-md.simple-list li:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item>.item-link,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li>.item-link{border-radius:16px;margin-left:calc(var(--f7-list-item-padding-horizontal)/2);margin-right:calc(var(--f7-list-item-padding-horizontal)/2)}.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item>.item-link>.item-content,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li>.item-link>.item-content{margin-left:0;margin-right:0}.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content{padding-left:calc(var(--f7-list-item-padding-horizontal)/2 + var(--f7-safe-area-left))}.media-list,li.media-item{--f7-list-item-padding-vertical:var(--f7-list-media-item-padding-vertical);--f7-list-item-padding-horizontal:var(--f7-list-media-item-padding-horizontal)}.media-list .item-title,li.media-item .item-title{font-weight:var(--f7-list-media-item-title-font-weight,var(--f7-list-item-title-font-weight,inherit))}.media-list .item-inner,li.media-item .item-inner{align-self:stretch;display:block}.media-list .item-media img,li.media-item .item-media img{display:block}.media-list .item-link .item-inner,li.media-item .item-link .item-inner{padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.media-list .item-link .item-title-row,li.media-item .item-link .item-title-row{padding-right:calc(var(--f7-list-chevron-icon-area))}.media-list .chevron-center .item-link .item-inner,.media-list .item-link.chevron-center .item-inner,.media-list.chevron-center .item-link .item-inner,li.media-item .chevron-center .item-link .item-inner,li.media-item .item-link.chevron-center .item-inner,li.media-item.chevron-center .item-link .item-inner{padding-right:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.media-list .chevron-center .item-title-row,.media-list.chevron-center .item-title-row,li.media-item .chevron-center .item-title-row,li.media-item.chevron-center .item-title-row{padding-right:0}.links-list a:before,.list .item-link .item-inner:before,.media-list .chevron-center .item-link .item-inner:before,.media-list .item-link .item-title-row:before,.media-list .item-link.chevron-center .item-inner:before,.media-list.chevron-center .item-link .item-inner:before,li.media-item .chevron-center .item-link .item-inner:before,li.media-item .item-link .item-title-row:before,li.media-item .item-link.chevron-center .item-inner:before,li.media-item.chevron-center .item-link .item-inner:before{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-list-chevron-icon-color);content:var(--f7-list-chevron-icon-right);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-size:var(--f7-list-chevron-icon-font-size);font-style:normal;font-weight:400;height:100%;height:14px;letter-spacing:normal;line-height:1;line-height:14px;margin-top:-7px;pointer-events:none;position:absolute;right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;white-space:nowrap;width:100%;width:8px}.media-list .chevron-center .item-title-row:before,.media-list .item-link .item-inner:before,.media-list.chevron-center .item-title-row:before,li.media-item .chevron-center .item-title-row:before,li.media-item .item-link .item-inner:before,li.media-item.chevron-center .item-title-row:before{display:none}.media-list .item-link .item-title-row:before,li.media-item .item-link .item-title-row:before{right:0}.list-group ul:after,.list-group ul:before{z-index:25!important}.list-group+.list-group ul:before{display:none!important}.list-group-title,li.list-group-title{align-content:center;align-items:center;background-color:var(--f7-list-group-title-bg-color);box-sizing:border-box;color:var(--f7-list-group-title-text-color);display:flex;font-size:var(--f7-list-group-title-font-size);font-weight:var(--f7-list-group-title-font-weight);height:var(--f7-list-group-title-height);line-height:var(--f7-list-group-title-line-height);margin-top:-1px;max-width:100%;overflow:hidden;padding-bottom:0;padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));padding-top:0;position:relative;text-overflow:ellipsis;white-space:nowrap;z-index:15}.list-group-title:before,li.list-group-title:before{background-color:var(--f7-list-group-title-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.list-group-title:after,li.list-group-title:after{display:none!important}.list-group>.list-group-title,.list-group>ul>.list-group-title{margin-top:0;position:sticky;top:0;z-index:20}.page-with-navbar-large .list-group>.list-group-title,.page-with-navbar-large .list-group>ul>.list-group-title{top:calc(var(--f7-navbar-large-title-height)*-1)}.ios .list.inset-ios,.list.inset,.md .list.inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.inset-ios .block-title,.list.inset .block-title,.md .list.inset-md .block-title{margin-left:0;margin-right:0}.ios .list.inset-ios ul,.list.inset ul,.md .list.inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.inset-ios ul:after,.ios .list.inset-ios ul:before,.list.inset ul:after,.list.inset ul:before,.md .list.inset-md ul:after,.md .list.inset-md ul:before{display:none!important}.ios .list.inset-ios li.swipeout:first-child,.ios .list.inset-ios li:first-child>a,.list.inset li.swipeout:first-child,.list.inset li:first-child>a,.md .list.inset-md li.swipeout:first-child,.md .list.inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.inset-ios li.swipeout:last-child,.ios .list.inset-ios li:last-child>a,.list.inset li.swipeout:last-child,.list.inset li:last-child>a,.md .list.inset-md li.swipeout:last-child,.md .list.inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.inset-ios li.swipeout:first-child:last-child,.ios .list.inset-ios li:first-child:last-child>a,.list.inset li.swipeout:first-child:last-child,.list.inset li:first-child:last-child>a,.md .list.inset-md li.swipeout:first-child:last-child,.md .list.inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}@media (min-width:480px){.ios .list.xsmall-inset-ios,.list.xsmall-inset,.md .list.xsmall-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.xsmall-inset-ios .block-title,.list.xsmall-inset .block-title,.md .list.xsmall-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.xsmall-inset-ios ul,.list.xsmall-inset ul,.md .list.xsmall-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xsmall-inset-ios ul:after,.ios .list.xsmall-inset-ios ul:before,.list.xsmall-inset ul:after,.list.xsmall-inset ul:before,.md .list.xsmall-inset-md ul:after,.md .list.xsmall-inset-md ul:before{display:none!important}.ios .list.xsmall-inset-ios li:first-child>a,.list.xsmall-inset li:first-child>a,.md .list.xsmall-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.xsmall-inset-ios li:last-child>a,.list.xsmall-inset li:last-child>a,.md .list.xsmall-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.xsmall-inset-ios li:first-child:last-child>a,.list.xsmall-inset li:first-child:last-child>a,.md .list.xsmall-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xsmall-inset-ios.list-outline ul,.ios .list.xsmall-inset-ios.list-outline-ios ul,.list.xsmall-inset.list-outline ul,.md .list.xsmall-inset-md.list-outline ul,.md .list.xsmall-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:568px){.ios .list.small-inset-ios,.list.small-inset,.md .list.small-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.small-inset-ios .block-title,.list.small-inset .block-title,.md .list.small-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.small-inset-ios ul,.list.small-inset ul,.md .list.small-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.small-inset-ios ul:after,.ios .list.small-inset-ios ul:before,.list.small-inset ul:after,.list.small-inset ul:before,.md .list.small-inset-md ul:after,.md .list.small-inset-md ul:before{display:none!important}.ios .list.small-inset-ios li:first-child>a,.list.small-inset li:first-child>a,.md .list.small-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.small-inset-ios li:last-child>a,.list.small-inset li:last-child>a,.md .list.small-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.small-inset-ios li:first-child:last-child>a,.list.small-inset li:first-child:last-child>a,.md .list.small-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.small-inset-ios.list-outline ul,.ios .list.small-inset-ios.list-outline-ios ul,.list.small-inset.list-outline ul,.md .list.small-inset-md.list-outline ul,.md .list.small-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:768px){.ios .list.medium-inset-ios,.list.medium-inset,.md .list.medium-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.medium-inset-ios .block-title,.list.medium-inset .block-title,.md .list.medium-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.medium-inset-ios ul,.list.medium-inset ul,.md .list.medium-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.medium-inset-ios ul:after,.ios .list.medium-inset-ios ul:before,.list.medium-inset ul:after,.list.medium-inset ul:before,.md .list.medium-inset-md ul:after,.md .list.medium-inset-md ul:before{display:none!important}.ios .list.medium-inset-ios li:first-child>a,.list.medium-inset li:first-child>a,.md .list.medium-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.medium-inset-ios li:last-child>a,.list.medium-inset li:last-child>a,.md .list.medium-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.medium-inset-ios li:first-child:last-child>a,.list.medium-inset li:first-child:last-child>a,.md .list.medium-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.medium-inset-ios.list-outline ul,.ios .list.medium-inset-ios.list-outline-ios ul,.list.medium-inset.list-outline ul,.md .list.medium-inset-md.list-outline ul,.md .list.medium-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:1024px){.ios .list.large-inset-ios,.list.large-inset,.md .list.large-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.large-inset-ios .block-title,.list.large-inset .block-title,.md .list.large-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.large-inset-ios ul,.list.large-inset ul,.md .list.large-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.large-inset-ios ul:after,.ios .list.large-inset-ios ul:before,.list.large-inset ul:after,.list.large-inset ul:before,.md .list.large-inset-md ul:after,.md .list.large-inset-md ul:before{display:none!important}.ios .list.large-inset-ios li:first-child>a,.list.large-inset li:first-child>a,.md .list.large-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.large-inset-ios li:last-child>a,.list.large-inset li:last-child>a,.md .list.large-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.large-inset-ios li:first-child:last-child>a,.list.large-inset li:first-child:last-child>a,.md .list.large-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.large-inset-ios.list-outline ul,.ios .list.large-inset-ios.list-outline-ios ul,.list.large-inset.list-outline ul,.md .list.large-inset-md.list-outline ul,.md .list.large-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:1200px){.ios .list.xlarge-inset-ios,.list.xlarge-inset,.md .list.xlarge-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.xlarge-inset-ios .block-title,.list.xlarge-inset .block-title,.md .list.xlarge-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.xlarge-inset-ios ul,.list.xlarge-inset ul,.md .list.xlarge-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xlarge-inset-ios ul:after,.ios .list.xlarge-inset-ios ul:before,.list.xlarge-inset ul:after,.list.xlarge-inset ul:before,.md .list.xlarge-inset-md ul:after,.md .list.xlarge-inset-md ul:before{display:none!important}.ios .list.xlarge-inset-ios li:first-child>a,.list.xlarge-inset li:first-child>a,.md .list.xlarge-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.xlarge-inset-ios li:last-child>a,.list.xlarge-inset li:last-child>a,.md .list.xlarge-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.xlarge-inset-ios li:first-child:last-child>a,.list.xlarge-inset li:first-child:last-child>a,.md .list.xlarge-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xlarge-inset-ios.list-outline ul,.ios .list.xlarge-inset-ios.list-outline-ios ul,.list.xlarge-inset.list-outline ul,.md .list.xlarge-inset-md.list-outline ul,.md .list.xlarge-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}.list .no-chevron,.list.no-chevron,.menu-list{--f7-list-chevron-icon-color:transparent;--f7-list-chevron-icon-area:0px}.menu-list{--f7-list-font-size:var(--f7-menu-list-font-size);--f7-list-item-title-font-size:var(--f7-menu-list-item-title-font-size);--f7-list-item-title-font-weight:var(--f7-menu-list-item-title-font-weight);--f7-list-item-subtitle-font-size:var(--f7-menu-list-item-subtitle-font-size);--f7-list-item-text-font-size:var(--f7-menu-list-item-text-font-size);--f7-list-item-after-font-size:var(--f7-menu-list-item-after-font-size);--f7-list-item-min-height:var(--f7-menu-list-item-min-height)}.menu-list .item-after,.menu-list .item-footer,.menu-list .item-header,.menu-list .item-subtitle,.menu-list .item-text,.menu-list .item-title{transition-duration:.3s}.menu-list li:not(.list-group-title){padding-bottom:4px;padding-top:4px}.menu-list li:not(.list-group-title):first-child{padding-top:4px}.menu-list li:not(.list-group-title):last-child{padding-bottom:4px}.menu-list .item-link{background-color:var(--f7-menu-list-item-bg-color);border-radius:var(--f7-menu-list-border-radius)!important;color:var(--f7-menu-list-item-text-color);margin-left:var(--f7-menu-list-offset);margin-right:var(--f7-menu-list-offset)}.menu-list .item-inner:after{display:none}.menu-list .item-selected .item-link,.menu-list .item-selected.item-link,.menu-list .tab-link-active .item-link,.menu-list .tab-link-active.item-link{background-color:var(--f7-menu-list-item-selected-bg-color);color:var(--f7-menu-list-item-selected-text-color)}.menu-list .item-selected .item-after,.menu-list .item-selected .item-footer,.menu-list .item-selected .item-header,.menu-list .item-selected .item-subtitle,.menu-list .item-selected .item-text,.menu-list .item-selected .item-title{color:var(--f7-menu-list-item-selected-text-color)}.ios .item-link.active-state .item-inner:after,.ios .links-list a.active-state:after,.ios .list-button.active-state:after{background-color:initial}.ios .links-list a.active-state,.ios .list .item-link.active-state,.ios .list .list-button.active-state{transition-duration:0ms}.md .menu-list .item-link.active-state{background-color:var(--f7-menu-list-item-bg-color)}:root{--f7-badge-text-color:#fff;--f7-badge-bg-color:#8e8e93;--f7-badge-in-icon-size:16px;--f7-badge-in-icon-font-size:10px;--f7-badge-font-weight:normal;--f7-badge-font-size:12px}.ios{--f7-badge-padding:0 4px;--f7-badge-size:20px;--f7-badge-font-weight:600}.md{--f7-badge-padding:2px 6px;--f7-badge-size:20px;--f7-badge-font-weight:500}.badge{align-content:center;align-items:center;background:var(--f7-badge-bg-color);border-radius:var(--f7-badge-size);box-sizing:border-box;color:var(--f7-badge-text-color);display:inline-flex;font-size:var(--f7-badge-font-size);font-weight:var(--f7-badge-font-weight);height:var(--f7-badge-size);justify-content:center;min-width:var(--f7-badge-size);padding:var(--f7-badge-padding);position:relative;text-align:center;vertical-align:middle}.f7-icons .badge,.framework7-icons .badge,.icon .badge,.material-icons .badge{--f7-badge-font-size:var(--f7-badge-in-icon-font-size);--f7-badge-size:var(--f7-badge-in-icon-size);--f7-badge-padding:0px 2px;font-family:var(--f7-font-family);left:100%;margin-left:-10px;position:absolute;top:-2px}.badge[class*=color-]{--f7-badge-bg-color:var(--f7-theme-color)}:root{--f7-button-font-size:14px;--f7-button-min-width:32px;--f7-button-bg-color:transparent;--f7-button-border-width:0px;--f7-button-raised-box-shadow:0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);--f7-button-raised-pressed-box-shadow:0 3px 6px rgba(0,0,0,0.16),0 3px 6px rgba(0,0,0,0.23);--f7-segmented-raised-divider-color:rgba(0,0,0,0.1);--f7-segmented-strong-padding:2px;--f7-segmented-strong-between-buttons:4px;--f7-segmented-strong-button-font-weight:500;--f7-segmented-strong-button-active-box-shadow:0px 2px 2px rgba(0,0,0,0.25);--f7-segmented-strong-button-text-color:#000;--f7-segmented-strong-button-hover-bg-color:rgba(0,0,0,0.04);--f7-segmented-strong-button-active-text-color:#000;--f7-segmented-strong-button-active-bg-color:#fff}:root .dark,:root.dark{--f7-segmented-strong-button-hover-bg-color:rgba(255,255,255,0.02);--f7-segmented-strong-button-active-bg-color:rgba(255,255,255,0.14);--f7-segmented-strong-button-text-color:#fff;--f7-segmented-strong-button-active-text-color:#fff}.ios{--f7-button-fill-text-color:#fff;--f7-button-text-transform:uppercase;--f7-button-height:28px;--f7-button-padding-horizontal:10px;--f7-button-border-radius:4px;--f7-button-font-weight:600;--f7-button-letter-spacing:0;--f7-button-outline-border-width:2px;--f7-button-large-text-transform:uppercase;--f7-button-large-height:44px;--f7-button-large-font-size:17px;--f7-button-large-font-weight:500;--f7-button-small-outline-border-width:2px;--f7-button-small-text-transform:uppercase;--f7-button-small-height:26px;--f7-button-small-font-size:13px;--f7-button-small-font-weight:600;--f7-segmented-strong-button-text-transform:none;--f7-segmented-strong-button-active-font-weight:600;--f7-button-tonal-bg-color:rgba(var(--f7-theme-color-rgb),0.15);--f7-button-tonal-pressed-bg-color:rgba(var(--f7-theme-color-rgb),0.25);--f7-button-tonal-text-color:var(--f7-theme-color);--f7-segmented-strong-bg-color:rgba(0,0,0,0.07);--f7-segmented-strong-button-pressed-bg-color:rgba(0,0,0,0.07)}.ios .dark,.ios.dark{--f7-segmented-strong-bg-color:rgba(255,255,255,0.1);--f7-segmented-strong-button-pressed-bg-color:rgba(255,255,255,0.04)}.md{--f7-button-text-transform:none;--f7-button-height:40px;--f7-button-padding-horizontal:16px;--f7-button-border-radius:8px;--f7-button-font-weight:500;--f7-button-letter-spacing:normal;--f7-button-outline-border-width:1px;--f7-button-large-text-transform:none;--f7-button-large-height:48px;--f7-button-large-font-size:14px;--f7-button-large-font-weight:500;--f7-button-small-text-transform:none;--f7-button-small-outline-border-width:1px;--f7-button-small-height:32px;--f7-button-small-font-size:14px;--f7-button-small-font-weight:500;--f7-segmented-strong-button-text-transform:none;--f7-segmented-strong-button-active-font-weight:500;--f7-segmented-strong-button-pressed-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-button-fill-pressed-bg-color:transparent;--f7-button-fill-text-color:var(--f7-md-on-primary);--f7-button-outline-border-color:var(--f7-md-outline);--f7-segmented-strong-bg-color:var(--f7-md-surface-variant);--f7-button-tonal-bg-color:var(--f7-md-secondary-container);--f7-button-tonal-pressed-bg-color:transparent;--f7-button-tonal-text-color:var(--f7-md-on-secondary-container)}button{width:100%}.button,button{-webkit-appearance:none;appearance:none}.button{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25);align-items:center;background:none;background-color:var(--f7-button-bg-color);border:var(--f7-button-border-width,0) solid var(--f7-button-border-color,var(--f7-theme-color));border-radius:var(--f7-button-border-radius);box-shadow:var(--f7-button-box-shadow);box-sizing:border-box;color:var(--f7-button-text-color,var(--f7-theme-color));cursor:pointer;display:flex;font-family:inherit;font-size:var(--f7-button-font-size);font-weight:var(--f7-button-font-weight);height:var(--f7-button-height);justify-content:center;letter-spacing:var(--f7-button-letter-spacing);line-height:calc(var(--f7-button-height) - var(--f7-button-border-width, 0)*2);margin:0;min-width:var(--f7-button-min-width);outline:0;overflow:hidden;padding:var(--f7-button-padding-vertical,0) var(--f7-button-padding-horizontal);position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:var(--f7-button-text-transform);vertical-align:middle;white-space:nowrap}.button.active-state{color:var(--f7-button-pressed-text-color,var(--f7-button-text-color,var(--f7-theme-color)))}input[type=button].button,input[type=reset].button,input[type=submit].button{width:100%}.button>i+span,.button>span+span,.button>span~i{margin-left:4px}.navbar .button,.searchbar .button,.subnavbar .button,.toolbar .button{color:var(--f7-button-text-color,var(--f7-theme-color))}.button-round,.ios .button-round-ios,.md .button-round-md{--f7-button-border-radius:var(--f7-button-height)}.button-active,.button-fill,.button.tab-link-active,.ios .button-fill-ios,.md .button-fill-md{--f7-button-bg-color:var(--f7-button-fill-bg-color,var(--f7-theme-color));--f7-button-text-color:var(--f7-button-fill-text-color,#fff);--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.ios .button-active.color-white,.ios .button-fill.color-white,.ios .button.tab-link-active.color-white,.ios .color-white .button-active,.ios .color-white .button-fill,.ios .color-white .button.tab-link-active,.ios .color-white .ios .button-fill-ios,.ios .color-white .md .button-fill-md,.ios .ios .button-fill-ios.color-white,.ios .md .button-fill-md.color-white{--f7-button-text-color:#000}.button-fill,.ios .button-fill-ios,.md .button-fill-md{--f7-button-pressed-bg-color:var(--f7-button-fill-pressed-bg-color)}.button-active,.button.tab-link-active{--f7-button-pressed-bg-color:var(--f7-button-bg-color)}.button-outline,.ios .button-outline-ios,.md .button-outline-md{--f7-button-border-color:var(--f7-button-outline-border-color,var(--f7-theme-color));--f7-button-border-width:var(--f7-button-outline-border-width)}.button-tonal,.ios .button-tonal-ios,.md .button-tonal-md{--f7-button-bg-color:var(--f7-button-tonal-bg-color);--f7-button-text-color:var(--f7-button-tonal-text-color);--f7-button-pressed-bg-color:var(--f7-button-tonal-pressed-bg-color)}.button-large,.ios .button-large-ios,.md .button-large-md{--f7-button-height:var(--f7-button-large-height);--f7-button-font-size:var(--f7-button-large-font-size);--f7-button-font-weight:var(--f7-button-large-font-weight);--f7-button-text-transform:var(--f7-button-large-text-transform)}.button-small,.ios .button-small-ios,.md .button-small-md{--f7-button-outline-border-width:var(--f7-button-small-outline-border-width);--f7-button-height:var(--f7-button-small-height);--f7-button-font-size:var(--f7-button-small-font-size);--f7-button-font-weight:var(--f7-button-small-font-weight);--f7-button-text-transform:var(--f7-button-small-text-transform)}.ios .button-small-ios.button-fill,.ios .button-small.button-fill,.ios .button-small.button-fill-ios{--f7-button-border-width:var(--f7-button-small-outline-border-width);--f7-button-pressed-text-color:var(--f7-theme-color);--f7-button-pressed-bg-color:transparent}.segmented{align-self:center;border-radius:var(--f7-button-border-radius);box-shadow:var(--f7-button-box-shadow);box-sizing:border-box;display:flex;flex-wrap:nowrap}.segmented .button,.segmented button{border-radius:0;flex-shrink:1;min-width:0;width:100%}.segmented .button:first-child{border-radius:var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius)}.segmented .button.button-outline:nth-child(n+2),.segmented .button:not(.button-outline):first-child{border-left:none}.segmented .button:last-child{border-radius:0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0}.segmented .button-round:first-child{border-radius:var(--f7-button-height) 0 0 var(--f7-button-height)}.segmented .button-round:last-child{border-radius:0 var(--f7-button-height) var(--f7-button-height) 0}.segmented .button:first-child:last-child{border-radius:var(--f7-button-border-radius)}.ios .segmented-raised-ios,.md .segmented-raised-md,.segmented-raised{box-shadow:var(--f7-button-raised-box-shadow)}.ios .segmented-raised-ios .button:not(.button-outline),.md .segmented-raised-md .button:not(.button-outline),.segmented-raised .button:not(.button-outline){border-left:1px solid var(--f7-segmented-raised-divider-color)}.button-raised,.ios .button-raised-ios,.md .button-raised-md{--f7-button-box-shadow:var(--f7-button-raised-box-shadow)}.button-raised.active-state,.ios .button-raised-ios.active-state,.md .button-raised-md.active-state{--f7-button-box-shadow:var(--f7-button-raised-pressed-box-shadow)}.ios .segmented-strong-ios,.md .segmented-strong-md,.segmented-strong{--f7-button-bg-color:transparent;--f7-button-hover-bg-color:var(--f7-segmented-strong-button-hover-bg-color);--f7-button-text-color:var(--f7-segmented-strong-button-text-color);--f7-button-font-weight:var(--f7-segmented-strong-button-font-weight);--f7-button-text-transform:var(--f7-segmented-strong-button-text-transform);--f7-button-pressed-bg-color:var(--f7-segmented-strong-button-pressed-bg-color);background:var(--f7-segmented-strong-bg-color);border-radius:calc(var(--f7-button-border-radius) + 2px);box-shadow:none;overflow:hidden;padding:var(--f7-segmented-strong-padding);position:relative}.ios .segmented-strong-ios .button,.md .segmented-strong-md .button,.segmented-strong .button{transform:translateZ(0);z-index:1}.ios .segmented-strong-ios .button,.ios .segmented-strong-ios .button:first-child,.ios .segmented-strong-ios .button:last-child,.md .segmented-strong-md .button,.md .segmented-strong-md .button:first-child,.md .segmented-strong-md .button:last-child,.segmented-strong .button,.segmented-strong .button:first-child,.segmented-strong .button:last-child{border-radius:var(--f7-button-border-radius)}.ios .segmented-strong-ios .button+.button,.md .segmented-strong-md .button+.button,.segmented-strong .button+.button{margin-left:var(--f7-segmented-strong-between-buttons)}.ios .segmented-strong-ios .button.button-active,.ios .segmented-strong-ios .button.tab-link-active,.md .segmented-strong-md .button.button-active,.md .segmented-strong-md .button.tab-link-active,.segmented-strong .button.button-active,.segmented-strong .button.tab-link-active{--f7-button-hover-bg-color:transparent;--f7-button-bg-color:transparent;--f7-button-text-color:var(--f7-segmented-strong-button-active-text-color);--f7-button-font-weight:var(--f7-segmented-strong-button-active-font-weight)}.ios .segmented-strong-ios .segmented-highlight,.md .segmented-strong-md .segmented-highlight,.segmented-strong .segmented-highlight{--f7-segmented-highlight-num:1;--f7-segmented-highlight-active:0;--f7-segmented-highlight-padding:calc(var(--f7-segmented-strong-padding)*2);--f7-segmented-highlight-between:var(--f7-segmented-strong-between-buttons);--f7-segmented-highlight-width:calc((100% - var(--f7-segmented-highlight-padding) - var(--f7-segmented-highlight-between)*(var(--f7-segmented-highlight-num) - 1))/var(--f7-segmented-highlight-num));background-color:var(--f7-segmented-strong-button-active-bg-color);border-radius:var(--f7-button-border-radius);box-shadow:var(--f7-segmented-strong-button-active-box-shadow);height:calc(100% - var(--f7-segmented-strong-padding)*2);left:var(--f7-segmented-strong-padding);position:absolute;top:var(--f7-segmented-strong-padding);transform:translateX(calc(var(--f7-segmented-highlight-active)*100% + var(--f7-segmented-highlight-active)*var(--f7-segmented-highlight-between)));transition:.2s;width:var(--f7-segmented-highlight-width);z-index:0}.button:nth-child(2)~.segmented-highlight{--f7-segmented-highlight-num:2}.button:nth-child(3)~.segmented-highlight{--f7-segmented-highlight-num:3}.button:nth-child(4)~.segmented-highlight{--f7-segmented-highlight-num:4}.button:nth-child(5)~.segmented-highlight{--f7-segmented-highlight-num:5}.button:nth-child(6)~.segmented-highlight{--f7-segmented-highlight-num:6}.button:nth-child(7)~.segmented-highlight{--f7-segmented-highlight-num:7}.button:nth-child(8)~.segmented-highlight{--f7-segmented-highlight-num:8}.button:nth-child(9)~.segmented-highlight{--f7-segmented-highlight-num:9}.button:nth-child(10)~.segmented-highlight{--f7-segmented-highlight-num:10}.button-active:nth-child(2)~.segmented-highlight,.tab-link-active:nth-child(2)~.segmented-highlight{--f7-segmented-highlight-active:1}.button-active:nth-child(3)~.segmented-highlight,.tab-link-active:nth-child(3)~.segmented-highlight{--f7-segmented-highlight-active:2}.button-active:nth-child(4)~.segmented-highlight,.tab-link-active:nth-child(4)~.segmented-highlight{--f7-segmented-highlight-active:3}.button-active:nth-child(5)~.segmented-highlight,.tab-link-active:nth-child(5)~.segmented-highlight{--f7-segmented-highlight-active:4}.button-active:nth-child(6)~.segmented-highlight,.tab-link-active:nth-child(6)~.segmented-highlight{--f7-segmented-highlight-active:5}.button-active:nth-child(7)~.segmented-highlight,.tab-link-active:nth-child(7)~.segmented-highlight{--f7-segmented-highlight-active:6}.button-active:nth-child(8)~.segmented-highlight,.tab-link-active:nth-child(8)~.segmented-highlight{--f7-segmented-highlight-active:7}.button-active:nth-child(9)~.segmented-highlight,.tab-link-active:nth-child(9)~.segmented-highlight{--f7-segmented-highlight-active:8}.button-active:nth-child(10)~.segmented-highlight,.tab-link-active:nth-child(10)~.segmented-highlight{--f7-segmented-highlight-active:9}.ios .segmented-round-ios,.ios .segmented-round-ios .segmented-highlight,.md .segmented-round-md,.md .segmented-round-md .segmented-highlight,.segmented-round,.segmented-round .segmented-highlight{border-radius:var(--f7-button-height)}.subnavbar .segmented{width:100%}.button-preloader{--f7-preloader-color:var(--f7-button-text-color,var(--f7-theme-color));position:relative}.button-preloader:not(.button-large){--f7-preloader-size:calc(var(--f7-button-height) - 6px)}.button-preloader.button-fill{--f7-preloader-color:#fff}.button-preloader>span:not(.preloader){align-content:center;align-items:center;display:inline-flex;justify-content:center;transform:scale(1);transition:.2s}.button-preloader>.preloader{left:50%;margin-left:calc(var(--f7-preloader-size)*-1/2);margin-top:calc(var(--f7-preloader-size)*-1/2);opacity:0;position:absolute;top:50%;transition:.2s;transition-property:opacity;visibility:hidden}.button-preloader.button-loading>span:not(.preloader){opacity:0;transform:scale(0)}.button-preloader.button-loading>.preloader{opacity:1;visibility:visible}.ios .button{transition-duration:.1s}.ios .button.active-state{background-color:var(--f7-button-pressed-bg-color,rgba(var(--f7-theme-color-rgb),.15))}.ios .button-fill,.ios .button-fill-ios{--f7-button-pressed-bg-color:var(--f7-button-fill-pressed-bg-color,var(--f7-theme-color-tint))}.ios .button-small,.ios .button-small-ios{transition-duration:.2s}.md .button{transform:translateZ(0);transition-duration:.3s}.md .button-fill,.md .button-fill-md{--f7-button-pressed-bg-color:var(--f7-button-fill-pressed-bg-color,transparent)}:root{--f7-touch-ripple-black:rgba(0,0,0,0.1);--f7-touch-ripple-white:rgba(255,255,255,0.15);--f7-touch-ripple-color:var(--f7-touch-ripple-black)}.dark{--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.actions-button,.button,.checkbox,.dialog-button,.fab a,.item-link,.link,.list-button,.radio,.ripple,.speed-dial-buttons a,.tab-link{-webkit-user-select:none;user-select:none}.ripple-wave{animation:touch-ripple-in .2s forwards;border-radius:50%;font-size:0;left:0;margin:0;padding:0;pointer-events:none;position:absolute!important;top:0;transform:translateZ(0) scale(0);z-index:-1}.ripple-wave,.ripple-wave.ripple-wave-inset{background-color:var(--f7-touch-ripple-color)}.ripple-wave.ripple-wave-inset{background-image:none}.ripple-wave.ripple-wave-out{animation:touch-ripple-out .25s forwards!important;transform:var(--f7-ripple-transform)}.actions-button .ripple-wave,.button .ripple-wave,.dialog-button .ripple-wave,.fab a .ripple-wave,.item-checkbox .ripple-wave,.item-link .ripple-wave,.item-radio .ripple-wave,.links-list a .ripple-wave,.list label.item-content .ripple-wave,.list-button .ripple-wave,.list.accordion-list .accordion-item-toggle .ripple-wave,.photo-browser .toolbar .link .ripple-wave,.ripple-blur .ripple-wave,.stepper-button .ripple-wave,.stepper-button-minus .ripple-wave,.stepper-button-plus .ripple-wave,.tab-link .ripple-wave,button .ripple-wave{animation:touch-ripple-in-blurred .25s forwards;background-color:initial;background-image:radial-gradient(closest-side circle at 50% 50%,var(--f7-touch-ripple-color) 50%,rgba(255,255,255,0))}.checkbox .ripple-wave,.data-table .sortable-cell .ripple-wave,.radio .ripple-wave{z-index:0}[class*=ripple-color-]{--f7-touch-ripple-color:var(--f7-theme-color-ripple-color)}@keyframes touch-ripple-in-blurred{0%{transform:translateZ(0) scale(.5)}to{transform:var(--f7-ripple-transform)}}@keyframes touch-ripple-in{0%{transform:translateZ(0) scale(0)}to{transform:var(--f7-ripple-transform)}}@keyframes touch-ripple-out{0%{opacity:1}to{opacity:0}}.f7-icons,.material-icons{height:1em;width:1em}i.icon{background-position:50%;background-repeat:no-repeat;background-size:100% auto;display:inline-block;font-style:normal;position:relative;vertical-align:middle}.icon-back:after,.icon-forward:after,.icon-next:after,.icon-prev:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.icon[class*=color-]{color:var(--f7-theme-color)}.ios .icon-back,.ios .icon-forward,.ios .icon-next,.ios .icon-prev{height:20px;line-height:20px;width:12px}.ios .icon-back:after,.ios .icon-forward:after,.ios .icon-next:after,.ios .icon-prev:after{line-height:inherit}.ios .icon-next:after,.ios .icon-prev:after{font-size:16px}.ios .icon-back:after,.ios .icon-prev:after{content:"chevron_left_ios"}.ios .icon-forward:after,.ios .icon-next:after{content:"chevron_right_ios"}.md .icon-back,.md .icon-forward,.md .icon-next,.md .icon-prev{height:24px;width:24px}.md .icon-back:after,.md .icon-forward:after,.md .icon-next:after,.md .icon-prev:after{line-height:1.2}.md .icon-back:after{content:"arrow_left_md"}.md .icon-forward:after{content:"arrow_right_md"}.md .icon-next:after{content:"chevron_right_md"}.md .icon-prev:after{content:"chevron_left_md"}.custom-modal-backdrop{z-index:10500}.actions-backdrop,.custom-modal-backdrop,.dialog-backdrop,.fab-backdrop,.popover-backdrop,.popup-backdrop,.preloader-backdrop,.sheet-backdrop{background:rgba(0,0,0,.4);height:100%;left:0;opacity:0;position:absolute;top:0;transition-duration:.4s;visibility:hidden;width:100%;z-index:13000}.actions-backdrop.not-animated,.custom-modal-backdrop.not-animated,.dialog-backdrop.not-animated,.fab-backdrop.not-animated,.popover-backdrop.not-animated,.popup-backdrop.not-animated,.preloader-backdrop.not-animated,.sheet-backdrop.not-animated{transition-duration:0ms}.actions-backdrop.backdrop-in,.custom-modal-backdrop.backdrop-in,.dialog-backdrop.backdrop-in,.fab-backdrop.backdrop-in,.popover-backdrop.backdrop-in,.popup-backdrop.backdrop-in,.preloader-backdrop.backdrop-in,.sheet-backdrop.backdrop-in{opacity:1;visibility:visible}:root{--f7-dialog-button-text-color:var(--f7-theme-color);--f7-dialog-button-text-align:center}.ios{--f7-dialog-width:270px;--f7-dialog-inner-padding:16px;--f7-dialog-border-radius:13px;--f7-dialog-text-align:center;--f7-dialog-font-size:14px;--f7-dialog-title-text-color:inherit;--f7-dialog-title-font-size:18px;--f7-dialog-title-font-weight:600;--f7-dialog-title-line-height:inherit;--f7-dialog-button-font-size:17px;--f7-dialog-button-height:44px;--f7-dialog-button-letter-spacing:0;--f7-dialog-button-font-weight:400;--f7-dialog-button-text-transform:none;--f7-dialog-button-strong-bg-color:transparent;--f7-dialog-button-strong-text-color:var(--f7-theme-color);--f7-dialog-button-strong-font-weight:500;--f7-dialog-input-border-radius:4px;--f7-dialog-input-font-size:14px;--f7-dialog-input-height:32px;--f7-dialog-input-border-width:1px;--f7-dialog-input-placeholder-color:#a9a9a9;--f7-dialog-preloader-size:34px;--f7-dialog-input-bg-color:#fff;--f7-dialog-bg-color:rgba(255,255,255,0.95);--f7-dialog-bg-color-rgb:255,255,255;--f7-dialog-text-color:#000;--f7-dialog-button-pressed-bg-color:rgba(0,0,0,0.1);--f7-dialog-button-strong-pressed-bg-color:rgba(0,0,0,0.1);--f7-dialog-input-border-color:rgba(0,0,0,0.3);--f7-dialog-border-divider-color:rgba(0,0,0,0.2)}.ios .dark,.ios.dark{--f7-dialog-text-color:#fff;--f7-dialog-bg-color:rgba(45,45,45,0.95);--f7-dialog-bg-color-rgb:45,45,45;--f7-dialog-button-pressed-bg-color:rgba(0,0,0,0.2);--f7-dialog-button-strong-pressed-bg-color:rgba(0,0,0,0.2);--f7-dialog-border-divider-color:rgba(255,255,255,0.15);--f7-dialog-input-border-color:rgba(255,255,255,0.15);--f7-dialog-input-bg-color:rgba(0,0,0,0.5)}.md{--f7-dialog-width:280px;--f7-dialog-inner-padding:24px;--f7-dialog-border-radius:28px;--f7-dialog-text-align:left;--f7-dialog-font-size:14px;--f7-dialog-title-font-size:24px;--f7-dialog-title-font-weight:400;--f7-dialog-title-line-height:1.3;--f7-dialog-button-font-size:14px;--f7-dialog-button-height:40px;--f7-dialog-button-letter-spacing:normal;--f7-dialog-button-font-weight:500;--f7-dialog-button-text-transform:none;--f7-dialog-button-strong-font-weight:500;--f7-dialog-input-border-radius:0px;--f7-dialog-input-font-size:16px;--f7-dialog-input-height:36px;--f7-dialog-input-border-color:transparent;--f7-dialog-input-border-width:0px;--f7-dialog-preloader-size:32px;--f7-dialog-input-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-dialog-button-pressed-bg-color:transparent;--f7-dialog-button-strong-bg-color:var(--f7-theme-color);--f7-dialog-button-strong-text-color:var(--f7-md-on-primary);--f7-dialog-button-strong-pressed-bg-color:transparent;--f7-dialog-bg-color:var(--f7-md-surface-3);--f7-dialog-input-placeholder-color:var(--f7-md-on-surface-variant);--f7-dialog-text-color:var(--f7-md-on-surface-variant);--f7-dialog-title-text-color:var(--f7-md-on-surface)}.dialog{background:var(--f7-dialog-bg-color);border-radius:var(--f7-dialog-border-radius);color:var(--f7-dialog-text-color);display:none;font-size:var(--f7-dialog-font-size);left:50%;margin-left:calc(var(--f7-dialog-width)*-1/2);margin-top:0;opacity:0;overflow:hidden;position:absolute;text-align:var(--f7-dialog-text-align);top:50%;transform:translate3d(0,-50%,0) scale(1.185);transition-duration:.4s;transition-property:transform,opacity;width:var(--f7-dialog-width);will-change:transform,opacity;z-index:13500}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .dialog{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-dialog-bg-color-rgb),.8)}}.dialog.modal-in{opacity:1;transform:translate3d(0,-50%,0) scale(1)}.dialog.modal-out{opacity:0;z-index:13499}.dialog.not-animated{transition-duration:0ms}.dialog-inner{padding:var(--f7-dialog-inner-padding);position:relative}.dialog-title{color:var(--f7-dialog-title-text-color);font-size:var(--f7-dialog-title-font-size);font-weight:var(--f7-dialog-title-font-weight);line-height:var(--f7-dialog-title-line-height)}.dialog-buttons{display:flex;position:relative}.dialog-buttons-vertical .dialog-buttons{display:block;height:auto!important}.dialog-button{box-sizing:border-box;color:var(--f7-dialog-button-text-color);cursor:pointer;display:block;font-size:var(--f7-dialog-button-font-size);font-weight:var(--f7-dialog-button-font-weight);height:var(--f7-dialog-button-height);letter-spacing:var(--f7-dialog-button-letter-spacing);line-height:var(--f7-dialog-button-height);overflow:hidden;position:relative;text-align:var(--f7-dialog-button-text-align);text-overflow:ellipsis;text-transform:var(--f7-dialog-button-text-transform);white-space:nowrap}.dialog-button.active-state{background-color:var(--f7-dialog-button-pressed-bg-color)}.dialog-button-strong{background-color:var(--f7-dialog-button-strong-bg-color);color:var(--f7-dialog-button-strong-text-color);font-weight:var(--f7-dialog-button-strong-font-weight)}.dialog-button-strong.active-state{background-color:var(--f7-dialog-button-strong-pressed-bg-color)}.dialog-no-buttons .dialog-buttons{display:none}.dialog-input-field{position:relative}input.dialog-input[type]{-webkit-appearance:none;appearance:none;background-color:var(--f7-dialog-input-bg-color);border:var(--f7-dialog-input-border-width) solid var(--f7-dialog-input-border-color);border-radius:var(--f7-dialog-input-border-radius);box-shadow:none;box-sizing:border-box;display:block;font-family:inherit;font-size:var(--f7-dialog-input-font-size);height:var(--f7-dialog-input-height);margin:15px 0 0;width:100%}input.dialog-input[type]::placeholder{color:var(--f7-dialog-input-placeholder-color)}.dialog-input-double input.dialog-input{border-radius:var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius) 0 0}.dialog-input-double+.dialog-input-double input.dialog-input{border-radius:0 0 var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius)}.dialog-preloader .preloader{--f7-preloader-size:var(--f7-dialog-preloader-size)}html.with-modal-dialog .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}.ios .dialog.modal-out{transform:translate3d(0,-50%,0) scale(1)}.ios .dialog-inner{border-radius:var(--f7-dialog-border-radius) var(--f7-dialog-border-radius) 0 0}.ios .dialog-inner:after{background-color:var(--f7-dialog-border-divider-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .dialog-title+.dialog-text{margin-top:5px}.ios .dialog-buttons{height:44px;justify-content:center}.ios .dialog-button{-webkit-box-flex:1;-ms-flex:1;padding:0 5px;width:100%}.ios .dialog-button:after{background-color:var(--f7-dialog-border-divider-color);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.ios .dialog-button:first-child{border-radius:0 0 0 var(--f7-dialog-border-radius)}.ios .dialog-button:last-child{border-radius:0 0 var(--f7-dialog-border-radius) 0}.ios .dialog-button:last-child:after{display:none!important}.ios .dialog-button:first-child:last-child{border-radius:0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius)}.ios .dialog-button[class*=color-]{--f7-dialog-button-text-color:var(--f7-theme-color)}.ios .dialog-buttons-vertical .dialog-buttons{height:auto}.ios .dialog-buttons-vertical .dialog-button{border-radius:0}.ios .dialog-buttons-vertical .dialog-button:after{background-color:var(--f7-dialog-border-divider-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .dialog-buttons-vertical .dialog-button:last-child{border-radius:0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius)}.ios .dialog-buttons-vertical .dialog-button:last-child:after{display:none!important}.ios .dialog-no-buttons .dialog-inner{border-radius:var(--f7-dialog-border-radius)}.ios .dialog-no-buttons .dialog-inner:after{display:none!important}.ios .dialog-input-field{margin-top:15px}.ios .dialog-input{padding:0 5px}.ios .dialog-input+.dialog-input{margin-top:5px}.ios .dialog-input-double+.dialog-input-double{margin-top:0}.ios .dialog-input-double+.dialog-input-double .dialog-input{border-top:0;margin-top:0}.ios .dialog-preloader .dialog-text~.preloader,.ios .dialog-preloader .dialog-title~.preloader,.ios .dialog-progress .dialog-text~.progressbar,.ios .dialog-progress .dialog-text~.progressbar-infinite,.ios .dialog-progress .dialog-title~.progressbar,.ios .dialog-progress .dialog-title~.progressbar-infinite{margin-top:15px}.md .dialog.modal-out{transform:translate3d(0,-50%,0) scale(.815)}.md .dialog-title+.dialog-text{margin-top:20px}.md .dialog-text{line-height:1.5}.md .dialog-buttons{box-sizing:border-box;height:64px;justify-content:flex-end;overflow:hidden;padding:0 24px 24px}.md .dialog-button{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25);border:none;border-radius:99px;min-width:64px;padding:0 16px;transform:translateZ(0);transition-duration:.3s}.md .dialog-button+.dialog-button{margin-left:8px}.md .dialog-button-strong{--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.md .dialog-button[class*=color-]{--f7-dialog-button-text-color:var(--f7-theme-color)}.md .dialog-buttons-vertical .dialog-buttons{align-items:flex-end;display:flex;flex-direction:column}.md .dialog-buttons-vertical .dialog-button+.dialog-button{margin-left:0;margin-top:8px}.md .dialog-input{padding:0;position:relative;transition-duration:.2s}.md .dialog-input+.dialog-input{margin-top:16px}.md .dialog-preloader .dialog-inner,.md .dialog-preloader .dialog-title,.md .dialog-progress .dialog-inner,.md .dialog-progress .dialog-title{text-align:center}.md .dialog-preloader .dialog-text~.preloader,.md .dialog-preloader .dialog-title~.preloader{margin-top:20px}.md .dialog-progress .dialog-text~.progressbar,.md .dialog-progress .dialog-text~.progressbar-infinite,.md .dialog-progress .dialog-title~.progressbar,.md .dialog-progress .dialog-title~.progressbar-infinite{margin-top:16px}:root{--f7-popup-border-radius:0px;--f7-popup-tablet-width:630px;--f7-popup-tablet-height:630px;--f7-popup-push-offset:var(--f7-safe-area-top)}.ios{--f7-popup-tablet-border-radius:5px;--f7-popup-transition-duration:400ms;--f7-popup-transition-timing-function:initial;--f7-popup-push-border-radius:10px}.md{--f7-popup-tablet-border-radius:28px;--f7-popup-transition-duration:600ms;--f7-popup-transition-timing-function:cubic-bezier(0,1,0.2,1);--f7-popup-push-border-radius:28px}.popup-backdrop{z-index:10500}.popup,.popup-backdrop-unique{z-index:11000}.popup{background:#fff;border-radius:var(--f7-popup-border-radius);box-sizing:border-box;display:none;height:100%;left:0;overflow:hidden;position:absolute;top:0;transform:translate3d(0,100vh,0);transition-property:transform;transition-timing-function:var(--f7-popup-transition-timing-function);width:100%}.dark .popup,.popup.dark{background:#000}.popup.modal-in,.popup.modal-out{transition-duration:var(--f7-popup-transition-duration)}.popup.not-animated{transition-duration:0ms}.popup.modal-in{display:block;transform:translateZ(0)}.popup.modal-out{transform:translate3d(0,100vh,0)}.popup.swipe-close-to-top.modal-out{transform:translate3d(0,-100vh,0)}@media (min-width:630px) and (min-height:630px){.popup:not(.popup-tablet-fullscreen){--f7-safe-area-top:0px;--f7-safe-area-bottom:0px;border-radius:var(--f7-popup-tablet-border-radius,var(--f7-popup-border-radius));height:var(--f7-popup-tablet-height);left:50%;margin-left:calc(var(--f7-popup-tablet-width)*-1/2);margin-top:calc(var(--f7-popup-tablet-height)*-1/2);top:50%;transform:translate3d(0,100vh,0);width:var(--f7-popup-tablet-width)}.popup:not(.popup-tablet-fullscreen).modal-in{transform:translateZ(0)}.popup:not(.popup-tablet-fullscreen).modal-out{transform:translate3d(0,100vh,0)}.popup:not(.popup-tablet-fullscreen).swipe-close-to-top.modal-out{transform:translate3d(0,-100vh,0)}.popup:not(.popup-tablet-fullscreen).popup-behind{pointer-events:none;transform:translateZ(0) scale(.9)}.popup:not(.popup-tablet-fullscreen).popup-behind.modal-out{transform:translate3d(0,100vh,0) scale(.9)}html.with-modal-popup-push .popup-push:not(.popup-tablet-fullscreen){margin-top:0}}html.with-modal-popup .framework7-root>.panel .page-content,html.with-modal-popup .framework7-root>.view .page-content,html.with-modal-popup .framework7-root>.views .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}html.with-modal-popup-push .popup-push,html.with-modal-popup-push-closing .popup-push{--f7-safe-area-top:0px;border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;height:calc(100% - var(--f7-popup-push-offset) - 10px);top:calc(var(--f7-popup-push-offset) + 10px)}html.with-modal-popup-push .popup-push .page,html.with-modal-popup-push .popup-push .view,html.with-modal-popup-push-closing .popup-push .page,html.with-modal-popup-push-closing .popup-push .view{--f7-safe-area-top:0px}html.with-modal-popup-push .framework7-root,html.with-modal-popup-push-closing .framework7-root{background:#000}html.with-modal-popup-push .framework7-root>.view,html.with-modal-popup-push .framework7-root>.views,html.with-modal-popup-push-closing .framework7-root>.view,html.with-modal-popup-push-closing .framework7-root>.views{transition-duration:var(--f7-popup-transition-duration);transition-timing-function:var(--f7-popup-transition-timing-function)}html.with-modal-popup-push .dark .framework7-root>.view:after,html.with-modal-popup-push .dark .framework7-root>.views:after,html.with-modal-popup-push .dark.framework7-root>.view:after,html.with-modal-popup-push .dark.framework7-root>.views:after,html.with-modal-popup-push .framework7-root>.view.dark:after,html.with-modal-popup-push .framework7-root>.views.dark:after,html.with-modal-popup-push-closing .dark .framework7-root>.view:after,html.with-modal-popup-push-closing .dark .framework7-root>.views:after,html.with-modal-popup-push-closing .dark.framework7-root>.view:after,html.with-modal-popup-push-closing .dark.framework7-root>.views:after,html.with-modal-popup-push-closing .framework7-root>.view.dark:after,html.with-modal-popup-push-closing .framework7-root>.views.dark:after,html.with-modal-popup-push-closing.dark .framework7-root>.view:after,html.with-modal-popup-push-closing.dark .framework7-root>.views:after,html.with-modal-popup-push.dark .framework7-root>.view:after,html.with-modal-popup-push.dark .framework7-root>.views:after{animation:popup-dark-push-overlay-fade-in var(--f7-popup-transition-duration) forwards;background:rgba(255,255,255,.1);border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;content:"";height:100%;left:0;opacity:1;pointer-events:none;position:absolute;top:0;width:100%;z-index:13000}html.with-modal-popup-push .framework7-root>.view,html.with-modal-popup-push .framework7-root>.views{border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;transform:translateZ(0) scale(var(--f7-popup-push-scale,1))!important}html.with-modal-popup-push .popup:after{background:rgba(0,0,0,.4);border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;content:"";height:100%;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transition-duration:var(--f7-popup-transition-duration);transition-timing-function:var(--f7-popup-transition-timing-function);width:100%;z-index:13000}html.with-modal-popup-push .dark .popup:after,html.with-modal-popup-push .dark.popup:after,html.with-modal-popup-push.dark .popup:after{background:rgba(255,255,255,.05)}html.with-modal-popup-push .popup-behind{transform:translateZ(0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind.modal-out{transform:translate3d(0,100vh,0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind:not(.popup-push){border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0}html.with-modal-popup-push .popup-behind.popup-push{transform:translate3d(0,calc(-10px - var(--f7-popup-push-offset)),0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind.popup-push.modal-out{transform:translate3d(0,calc(-10px - var(--f7-popup-push-offset) + 100vh),0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind:after{opacity:1;pointer-events:auto}html.with-modal-popup-push-closing .dark .framework7-root>.view:after,html.with-modal-popup-push-closing .dark .framework7-root>.views:after,html.with-modal-popup-push-closing .dark.framework7-root>.view:after,html.with-modal-popup-push-closing .dark.framework7-root>.views:after,html.with-modal-popup-push-closing .framework7-root>.view.dark:after,html.with-modal-popup-push-closing .framework7-root>.views.dark:after,html.with-modal-popup-push-closing.dark .framework7-root>.view:after,html.with-modal-popup-push-closing.dark .framework7-root>.views:after{animation:popup-dark-push-overlay-fade-out var(--f7-popup-transition-duration) forwards;animation-timing-function:var(--f7-popup-transition-timing-function)}@keyframes popup-dark-push-overlay-fade-in{0%{opacity:0}to{opacity:1}}@keyframes popup-dark-push-overlay-fade-out{0%{opacity:1}to{opacity:0}}:root{--f7-login-screen-blocks-max-width:480px;--f7-login-screen-title-text-align:center;--f7-login-screen-title-text-color:inherit;--f7-login-screen-title-letter-spacing:0}.ios{--f7-login-screen-blocks-margin-vertical:25px;--f7-login-screen-transition-timing-function:initial;--f7-login-screen-transition-duration:400ms;--f7-login-screen-title-font-weight:600;--f7-login-screen-title-font-size:28px;--f7-login-screen-content-bg-color:#fff;--f7-login-screen-bg-color:#fff}.ios .dark,.ios.dark{--f7-login-screen-bg-color:#000;--f7-login-screen-content-bg-color:#000}.md{--f7-login-screen-transition-duration:600ms;--f7-login-screen-transition-timing-function:cubic-bezier(0,1,0.2,1);--f7-login-screen-blocks-margin-vertical:24px;--f7-login-screen-title-font-weight:400;--f7-login-screen-title-font-size:28px}.md,.md .dark,.md [class*=color-]{--f7-login-screen-content-bg-color:var(--f7-md-surface);--f7-login-screen-bg-color:var(--f7-md-surface)}.login-screen{background:var(--f7-login-screen-bg-color);box-sizing:border-box;display:none;height:100%;left:0;position:absolute;top:0;transform:translate3d(0,100vh,0);transition-property:transform;transition-timing-function:var(--f7-login-screen-transition-timing-function);width:100%;z-index:11000}.login-screen.modal-in,.login-screen.modal-out{transition-duration:var(--f7-login-screen-transition-duration)}.login-screen.not-animated{transition-duration:0ms}.login-screen.modal-in{display:block;transform:translateZ(0)}.login-screen.modal-out{transform:translate3d(0,100%,0)}.login-screen .page,.login-screen-content,.login-screen-page{background:var(--f7-login-screen-content-bg-color)}.login-screen-content .block,.login-screen-content .list,.login-screen-content .login-screen-title,.login-screen-page .block,.login-screen-page .list,.login-screen-page .login-screen-title{margin:var(--f7-login-screen-blocks-margin-vertical) auto}.login-screen-content .block,.login-screen-content .block-footer,.login-screen-content .block-header,.login-screen-content .list,.login-screen-content .login-screen-title,.login-screen-page .block,.login-screen-page .block-footer,.login-screen-page .block-header,.login-screen-page .list,.login-screen-page .login-screen-title{max-width:var(--f7-login-screen-blocks-max-width)}.login-screen-content .list ul,.login-screen-page .list ul{background:none}.login-screen-content .list ul:after,.login-screen-content .list ul:before,.login-screen-page .list ul:after,.login-screen-page .list ul:before{display:none!important}.login-screen-content .block-footer,.login-screen-content .block-header,.login-screen-page .block-footer,.login-screen-page .block-header{margin-left:auto;margin-right:auto;text-align:center}.login-screen-title{color:var(--f7-login-screen-title-text-color);font-size:var(--f7-login-screen-title-font-size);font-weight:var(--f7-login-screen-title-font-weight);letter-spacing:var(--f7-login-screen-title-letter-spacing);text-align:var(--f7-login-screen-title-text-align)}.login-screen-page,.login-screen>.page,.login-screen>.view>.page{display:flex;flex-direction:column}.login-screen-page .login-screen-content,.login-screen-page .page-content,.login-screen>.page .login-screen-content,.login-screen>.page .page-content,.login-screen>.view>.page .login-screen-content,.login-screen>.view>.page .page-content{height:auto;margin-bottom:auto;margin-top:auto;max-height:100%;width:100%}.dark .login-screen-content .block-strong,.dark .login-screen-content .list ul,.dark .login-screen-page .block-strong,.dark .login-screen-page .list ul,.dark.login-screen-page .block-strong,.dark.login-screen-page .list ul{background-color:initial}:root{--f7-popover-width:260px}.ios{--f7-popover-border-radius:13px;--f7-popover-actions-icon-size:28px;--f7-popover-transition-timing-function:initial;--f7-popover-bg-color:rgba(255,255,255,0.95);--f7-popover-actions-label-text-color:rgba(0,0,0,0.45)}.ios .dark,.ios.dark{--f7-popover-bg-color:rgba(30,30,30,0.95);--f7-popover-actions-label-text-color:rgba(255,255,255,0.55)}.md{--f7-popover-transition-timing-function:cubic-bezier(0,0.8,0.34,1);--f7-popover-border-radius:28px;--f7-popover-actions-icon-size:24px}.md,.md .dark,.md [class*=color-]{--f7-popover-bg-color:var(--f7-md-surface-3);--f7-popover-actions-label-text-color:var(--f7-md-on-surface-variant)}.popover,.popover-backdrop-unique{z-index:13500}.popover{--f7-safe-area-top:0px;--f7-safe-area-left:0px;--f7-safe-area-right:0px;--f7-safe-area-bottom:0px;background-color:var(--f7-popover-bg-color);border-radius:var(--f7-popover-border-radius);display:none;left:0;margin:0;opacity:0;position:absolute;top:0;transition-duration:.3s;width:var(--f7-popover-width);will-change:transform,opacity}.popover .list{margin:0}.popover .list ul{background:none}.popover .list:first-child ul:before,.popover .list:last-child ul:after{display:none!important}.popover .list:first-child li:first-child,.popover .list:first-child li:first-child a,.popover .list:first-child li:first-child>label,.popover .list:first-child ul{border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0}.popover .list:last-child li:last-child,.popover .list:last-child li:last-child a,.popover .list:last-child li:last-child>label,.popover .list:last-child ul{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.popover .list:first-child:last-child li:first-child:last-child,.popover .list:first-child:last-child li:first-child:last-child a,.popover .list:first-child:last-child li:first-child:last-child>label,.popover .list:first-child:last-child ul{border-radius:var(--f7-popover-border-radius)}.popover .list+.list{margin-top:var(--f7-list-margin-vertical)}.popover.modal-in{opacity:1}.popover.not-animated{transition-duration:0ms}.popover,.popover-backdrop{transition-timing-function:var(--f7-popover-transition-timing-function)}.popover-inner{-webkit-overflow-scrolling:touch;overflow:auto}.popover-from-actions .item-link i.icon{font-size:var(--f7-popover-actions-icon-size);height:var(--f7-popover-actions-icon-size);width:var(--f7-popover-actions-icon-size)}.ios .popover-from-actions-strong{font-weight:600}.md .popover-from-actions-strong{font-weight:500}.popover-from-actions-label{align-items:center;color:var(--f7-popover-actions-label-text-color);display:flex;font-size:var(--f7-actions-label-font-size);justify-content:var(--f7-actions-label-justify-content);line-height:1.3;padding:var(--f7-actions-label-padding);position:relative}.popover-from-actions-label:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.popover-from-actions-label:last-child:after{display:none!important}.md .popover-from-actions-label{justify-content:center}.popover-arrow{left:-26px;overflow:hidden;z-index:100}.popover-arrow,.popover-arrow:after{height:26px;position:absolute;top:0;width:26px}.popover-arrow:after{background:var(--f7-popover-bg-color);border-radius:3px;content:"";left:0;transform:rotate(45deg)}.popover-arrow.on-left{left:-26px}.popover-arrow.on-left:after{left:19px;top:0}.popover-arrow.on-right{left:100%}.popover-arrow.on-right:after{left:-19px;top:0}.popover-arrow.on-top{left:0;top:-26px}.popover-arrow.on-top:after{left:0;top:19px}.popover-arrow.on-bottom{left:0;top:100%}.popover-arrow.on-bottom:after{left:0;top:-19px}.ios .popover{transform:none;transition-property:opacity}.md .popover{transform:scale(.85,.6);transition-property:opacity,transform}.md .popover.modal-in{opacity:1;transform:scale(1)}.md .popover.modal-out{opacity:0;transform:scale(1)}.md .popover-on-top{transform-origin:center bottom}.md .popover-on-top.popover-on-right{transform-origin:left bottom}.md .popover-on-top.popover-on-left{transform-origin:right bottom}.md .popover-on-middle{transform-origin:center center}.md .popover-on-middle.popover-on-right{transform-origin:left center}.md .popover-on-middle.popover-on-left{transform-origin:right center}.md .popover-on-bottom{transform-origin:center top}.md .popover-on-bottom.popover-on-right{transform-origin:left top}.md .popover-on-bottom.popover-on-left{transform-origin:right top}:root{--f7-actions-grid-button-font-size:12px;--f7-actions-grid-button-icon-size:48px}.ios{--f7-actions-transition-timing-function:initial;--f7-actions-border-radius:13px;--f7-actions-grid-button-text-color:#757575;--f7-actions-button-padding:0px;--f7-actions-button-text-align:center;--f7-actions-button-height:57px;--f7-actions-button-height-landscape:44px;--f7-actions-button-font-size:20px;--f7-actions-button-icon-size:28px;--f7-actions-button-justify-content:center;--f7-actions-label-padding:8px 10px;--f7-actions-label-font-weight:400;--f7-actions-label-font-size:13px;--f7-actions-label-justify-content:center;--f7-actions-group-border-color:transparent;--f7-actions-group-margin:8px;--f7-actions-bg-color:rgba(255,255,255,0.95);--f7-actions-bg-color-rgb:255,255,255;--f7-actions-button-border-color:rgba(0,0,0,0.2);--f7-actions-button-pressed-bg-color:rgba(230,230,230,0.9);--f7-actions-button-pressed-bg-color-rgb:230,230,230;--f7-actions-label-text-color:#8a8a8a}.ios .dark,.ios.dark{--f7-actions-bg-color:rgba(45,45,45,0.95);--f7-actions-bg-color-rgb:45,45,45;--f7-actions-button-border-color:rgba(255,255,255,0.15);--f7-actions-button-pressed-bg-color:rgba(50,50,50,0.9);--f7-actions-button-pressed-bg-color-rgb:50,50,50;--f7-actions-label-text-color:rgba(255,255,255,0.55)}.md{--f7-actions-transition-timing-function:cubic-bezier(0,0.8,0.34,1);--f7-actions-border-radius:16px;--f7-actions-button-border-color:transparent;--f7-actions-button-padding:0 16px;--f7-actions-button-text-align:left;--f7-actions-button-height:48px;--f7-actions-button-height-landscape:48px;--f7-actions-button-font-size:16px;--f7-actions-button-icon-size:24px;--f7-actions-button-justify-content:space-between;--f7-actions-label-padding:12px 16px;--f7-actions-label-font-size:14px;--f7-actions-label-font-weight:500;--f7-actions-label-justify-content:flex-start;--f7-actions-group-margin:0px;--f7-actions-button-pressed-bg-color:#e5e5e5}.md .dark,.md.dark{--f7-actions-button-pressed-bg-color:#2e2e2e}.md,.md .dark,.md [class*=color-]{--f7-actions-button-text-color:var(--f7-md-on-surface);--f7-actions-bg-color:var(--f7-md-surface-3);--f7-actions-group-border-color:var(--f7-md-outline);--f7-actions-label-text-color:var(--f7-theme-color);--f7-actions-grid-button-text-color:var(--f7-md-on-surface)}.actions-backdrop-unique{z-index:13500}.actions-modal{-webkit-overflow-scrolling:touch;bottom:0;display:none;left:0;max-height:100%;overflow:auto;position:absolute;transform:translate3d(0,100%,0);transition-property:transform;width:100%;will-change:transform;z-index:13500}.actions-modal.modal-in,.actions-modal.modal-out{transition-duration:.3s}.actions-modal.not-animated{transition-duration:0ms}.ios .actions-modal.modal-in{transform:translate3d(0,calc(var(--f7-safe-area-bottom)*-1),0)}.md .actions-modal.modal-in{transform:translateZ(0)}.actions-modal.modal-out{transform:translate3d(0,100%,0);z-index:13499}@media (min-width:496px){.actions-modal{left:50%;margin-left:-240px;width:480px}}@media (orientation:landscape){.actions-modal{--f7-actions-button-height:var(--f7-actions-button-height-landscape)}}.actions-backdrop,.actions-modal{transition-timing-function:var(--f7-actions-transition-timing-function)}.actions-group{margin:var(--f7-actions-group-margin);overflow:hidden;position:relative;transform:translateZ(0)}.actions-group:after{background-color:var(--f7-actions-group-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.actions-group:last-child:after{display:none!important}.actions-button,.actions-label{box-sizing:border-box;display:block;font-weight:400;margin:0;overflow:hidden;position:relative;text-align:var(--f7-actions-button-text-align);width:100%}.actions-button:after,.actions-label:after{background-color:var(--f7-actions-button-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.actions-button a,.actions-label a{color:inherit;display:block;text-decoration:none}.actions-button{color:var(--f7-actions-button-text-color,var(--f7-theme-color));cursor:pointer;display:flex;font-size:var(--f7-actions-button-font-size);height:var(--f7-actions-button-height);justify-content:var(--f7-actions-button-justify-content);line-height:var(--f7-actions-button-height);padding:var(--f7-actions-button-padding);z-index:10}.actions-button.active-state{background-color:var(--f7-actions-button-pressed-bg-color)!important}.actions-button[class*=color-]{color:var(--f7-theme-color)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .actions-button.active-state{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-actions-button-pressed-bg-color-rgb),.8)}}.actions-button-media{align-items:center;display:flex;flex-shrink:0}.actions-button-media i.icon{font-size:var(--f7-actions-button-icon-size);height:var(--f7-actions-button-icon-size);width:var(--f7-actions-button-icon-size)}.actions-button a,.actions-button-text{overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}.actions-button-text{flex-shrink:1;text-align:var(--f7-actions-button-text-align);width:100%}.actions-label{align-items:center;color:var(--f7-actions-label-text-color);display:flex;font-size:var(--f7-actions-label-font-size);font-weight:var(--f7-actions-label-font-weight);justify-content:var(--f7-actions-label-justify-content);line-height:1.3;min-height:var(--f7-actions-label-min-height,var(--f7-actions-button-height));padding:var(--f7-actions-label-padding)}.actions-label[class*=" color-"]{--f7-actions-label-text-color:var(--f7-theme-color)}.actions-grid .actions-group{display:flex;flex-wrap:wrap;justify-content:flex-start;margin-top:0}.actions-grid .actions-group:not(:last-child){margin-bottom:0}.actions-grid .actions-button,.actions-grid .actions-label{background:none}.actions-grid .actions-button{color:var(--f7-actions-grid-button-text-color);display:block;height:auto;line-height:1;padding:16px;width:33.33333333%}.actions-grid .actions-button:after{display:none!important}.actions-grid .actions-button-media{margin-left:auto!important;margin-right:auto!important}.actions-grid .actions-button-media,.actions-grid .actions-button-media i.icon{height:var(--f7-actions-grid-button-icon-size);width:var(--f7-actions-grid-button-icon-size)}.actions-grid .actions-button-media i.icon{font-size:var(--f7-actions-grid-button-icon-size)}.actions-grid .actions-button-text{font-size:var(--f7-actions-grid-button-font-size);height:1.33em;line-height:1.33em;margin-left:0!important;margin-top:8px;text-align:center!important}.ios .actions-group{border-radius:var(--f7-actions-border-radius)}.ios .actions-button,.ios .actions-label{background:var(--f7-actions-bg-color)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .ios .actions-button,.ios-translucent-modals .ios .actions-label{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-actions-bg-color-rgb),.8)}}.ios .actions-button:first-child,.ios .actions-label:first-child{border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0}.ios .actions-button:last-child,.ios .actions-label:last-child{border-radius:0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius)}.ios .actions-button:last-child:after,.ios .actions-label:last-child:after{display:none!important}.ios .actions-button:first-child:last-child,.ios .actions-label:first-child:last-child{border-radius:var(--f7-actions-border-radius)}.ios .actions-button b,.ios .actions-button.actions-button-strong,.ios .actions-label b,.ios .actions-label.actions-button-strong{font-weight:600}.ios .actions-grid .actions-group{background:var(--f7-actions-bg-color);border-radius:0}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .ios .actions-grid .actions-group{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-actions-bg-color-rgb),.8)}}.ios .actions-grid .actions-group:first-child{border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0}.ios .actions-grid .actions-group:last-child{border-radius:0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius)}.ios .actions-grid .actions-group:first-child:last-child{border-radius:var(--f7-actions-border-radius)}.ios .actions-grid .actions-button,.ios .actions-grid .actions-label{border-radius:0!important}.ios .actions-button-media{margin-left:16px}.ios .actions-button-media+.actions-button-text{margin-left:16px;text-align:left}.md .actions-modal{background-color:var(--f7-actions-bg-color);border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;padding-bottom:var(--f7-safe-area-bottom)}.md .actions-button{transition-duration:.3s}.md .actions-button b,.md .actions-button.actions-button-strong,.md .actions-label b,.md .actions-label.actions-button-strong{font-weight:500}.md .actions-button-media{min-width:40px}.md .actions-button-media+.actions-button-text{margin-left:16px}:root{--f7-sheet-height:260px;--f7-sheet-push-offset:var(--f7-safe-area-top)}.ios{--f7-sheet-border-radius:0px;--f7-sheet-border-color:var(--f7-bars-border-color);--f7-sheet-transition-timing-function:initial;--f7-sheet-push-border-radius:10px;--f7-sheet-transition-duration:300ms;--f7-sheet-bg-color:#fff}.ios .dark,.ios.dark{--f7-sheet-bg-color:#202020}.md{--f7-sheet-border-radius:16px;--f7-sheet-push-border-radius:16px;--f7-sheet-border-color:transparent;--f7-sheet-transition-timing-function:cubic-bezier(0,0.8,0.34,1);--f7-sheet-transition-duration:400ms}.md,.md .dark,.md [class*=color-]{--f7-sheet-bg-color:var(--f7-md-surface)}.sheet-backdrop{z-index:11000}.sheet-backdrop-unique,.sheet-modal{z-index:12500}.sheet-modal{background:var(--f7-sheet-bg-color);bottom:0;box-sizing:border-box;display:none;height:var(--f7-sheet-height);left:0;overflow:hidden;position:absolute;transform:translate3d(0,100%,0);transition-property:transform;width:100%;will-change:transform,opacity}.sheet-modal.modal-in,.sheet-modal.modal-out{transition-duration:var(--f7-sheet-transition-duration)}.sheet-modal.not-animated{transition-duration:0ms}.sheet-modal.modal-in{display:block;transform:translateZ(0)}.sheet-modal.modal-in-breakpoint,.sheet-modal.modal-in-swipe-step{display:block;transform:translate3d(0,var(--f7-sheet-breakpoint,var(--f7-sheet-swipe-step,0)),0)}.sheet-modal.modal-out{transform:translate3d(0,100%,0)}.sheet-modal .sheet-modal-inner{height:100%;overflow:hidden;position:relative}.sheet-modal .toolbar{--f7-safe-area-bottom:0px;position:relative;width:100%}.sheet-modal .toolbar:after,.sheet-modal .toolbar:before{display:none}.sheet-modal .toolbar+.sheet-modal-inner{height:calc(100% - var(--f7-toolbar-height))}.sheet-modal .toolbar+.sheet-modal-inner .page-content{--f7-page-toolbar-top-offset:0px;--f7-page-toolbar-bottom-offset:0px}.sheet-backdrop,.sheet-modal{transition-timing-function:var(--f7-sheet-transition-timing-function)}.sheet-modal-top{border-radius:0 0 var(--f7-sheet-border-radius) var(--f7-sheet-border-radius)}.sheet-modal-top:after{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-sheet-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;transform-style:preserve-3d;width:100%;z-index:15;z-index:700}.sheet-modal-bottom,.sheet-modal:not(.sheet-modal-top){--f7-safe-area-top:0px;border-radius:var(--f7-sheet-border-radius) var(--f7-sheet-border-radius) 0 0}.sheet-modal-bottom:before,.sheet-modal:not(.sheet-modal-top):before{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-sheet-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;transform-style:preserve-3d;width:100%;z-index:15;z-index:700}.sheet-modal-top{--f7-safe-area-bottom:0px;bottom:auto;top:0}.sheet-modal-top,.sheet-modal-top.modal-out{transform:translate3d(0,-100%,0)}.sheet-modal-top .toolbar-bottom{position:absolute}.sheet-modal-top .page-content{padding-top:var(--f7-safe-area-top)}html.with-modal-sheet-push .sheet-modal-push,html.with-modal-sheet-push-closing .sheet-modal-push{--f7-sheet-border-color:transparent;border-radius:var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius) 0 0;overflow:hidden}html.with-modal-sheet-push .sheet-modal-push .page,html.with-modal-sheet-push .sheet-modal-push .view,html.with-modal-sheet-push-closing .sheet-modal-push .page,html.with-modal-sheet-push-closing .sheet-modal-push .view{--f7-safe-area-top:0px}html.with-modal-sheet-push .sheet-modal-push.sheet-modal-top,html.with-modal-sheet-push-closing .sheet-modal-push.sheet-modal-top{border-radius:0 0 var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius)}html.with-modal-sheet-push .framework7-root,html.with-modal-sheet-push-closing .framework7-root{background:#000}html.with-modal-sheet-push .framework7-root>.view,html.with-modal-sheet-push .framework7-root>.views,html.with-modal-sheet-push-closing .framework7-root>.view,html.with-modal-sheet-push-closing .framework7-root>.views{transition-duration:var(--f7-sheet-transition-duration);transition-timing-function:var(--f7-sheet-transition-timing-function)}html.with-modal-sheet-push .dark .framework7-root>.view:after,html.with-modal-sheet-push .dark .framework7-root>.views:after,html.with-modal-sheet-push .dark.framework7-root>.view:after,html.with-modal-sheet-push .dark.framework7-root>.views:after,html.with-modal-sheet-push .framework7-root>.view.dark:after,html.with-modal-sheet-push .framework7-root>.views.dark:after,html.with-modal-sheet-push-closing .dark .framework7-root>.view:after,html.with-modal-sheet-push-closing .dark .framework7-root>.views:after,html.with-modal-sheet-push-closing .dark.framework7-root>.view:after,html.with-modal-sheet-push-closing .dark.framework7-root>.views:after,html.with-modal-sheet-push-closing .framework7-root>.view.dark:after,html.with-modal-sheet-push-closing .framework7-root>.views.dark:after,html.with-modal-sheet-push-closing.dark .framework7-root>.view:after,html.with-modal-sheet-push-closing.dark .framework7-root>.views:after,html.with-modal-sheet-push.dark .framework7-root>.view:after,html.with-modal-sheet-push.dark .framework7-root>.views:after{animation:sheet-dark-push-overlay-fade-in var(--f7-sheet-transition-duration);animation-timing-function:var(--f7-sheet-transition-timing-function);background:rgba(255,255,255,.1);content:"";height:100%;left:0;opacity:1;pointer-events:none;position:absolute;top:0;transition-duration:var(--f7-sheet-transition-duration);transition-timing-function:var(--f7-sheet-transition-timing-function);width:100%;z-index:13000}html.with-modal-sheet-push .framework7-root>.view,html.with-modal-sheet-push .framework7-root>.views{border-radius:var(--f7-sheet-push-border-radius);transform:translateZ(0) scale(var(--f7-sheet-push-scale,1))!important}html.with-modal-sheet-push-closing .dark .framework7-root>.view:after,html.with-modal-sheet-push-closing .dark .framework7-root>.views:after,html.with-modal-sheet-push-closing .dark.framework7-root>.view:after,html.with-modal-sheet-push-closing .dark.framework7-root>.views:after,html.with-modal-sheet-push-closing .framework7-root>.view.dark:after,html.with-modal-sheet-push-closing .framework7-root>.views.dark:after,html.with-modal-sheet-push-closing.dark .framework7-root>.view:after,html.with-modal-sheet-push-closing.dark .framework7-root>.views:after{animation:none;opacity:0}@keyframes sheet-dark-push-overlay-fade-in{0%{opacity:0}to{opacity:1}}.md .sheet-modal .toolbar a.link:not(.tab-link){flex-shrink:0}:root{--f7-toast-font-size:14px;--f7-toast-icon-size:48px;--f7-toast-max-width:568px}.ios{--f7-toast-text-color:#fff;--f7-toast-bg-color:rgba(0,0,0,0.75);--f7-toast-bg-color-rgb:0,0,0;--f7-toast-padding-horizontal:16px;--f7-toast-padding-vertical:12px;--f7-toast-border-radius:8px;--f7-toast-button-min-width:64px}.md{--f7-toast-padding-horizontal:24px;--f7-toast-padding-vertical:14px;--f7-toast-border-radius:16px;--f7-toast-button-min-width:64px}.md,.md .dark,.md [class*=color-]{--f7-toast-text-color:var(--f7-md-on-surface);--f7-toast-bg-color:var(--f7-md-surface-5)}.toast{background-color:var(--f7-toast-bg-color);box-sizing:border-box;color:var(--f7-toast-text-color);font-size:var(--f7-toast-font-size);max-width:var(--f7-toast-max-width);opacity:0;position:absolute;transition-property:transform,opacity;z-index:20000}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .toast{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-toast-bg-color-rgb),.8)}}.toast.modal-in{opacity:1}.toast .toast-content{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;padding:var(--f7-toast-padding-vertical) var(--f7-toast-padding-horizontal)}.toast .toast-text{flex-shrink:1;line-height:20px;min-width:0}.toast .toast-button{flex-shrink:0;margin-bottom:-8px;margin-top:-8px;min-width:var(--f7-toast-button-min-width)}.toast.toast-with-icon .toast-content{display:block;text-align:center}.toast.toast-with-icon .toast-text{text-align:center}.toast.toast-with-icon .toast-icon .f7-icons,.toast.toast-with-icon .toast-icon .material-icons{font-size:var(--f7-toast-icon-size)}.toast.toast-center{top:50%}.toast.toast-top{margin-top:var(--f7-safe-area-top)}.ios .toast{left:0;transition-duration:.3s;width:100%}.ios .toast.toast-top{top:0;transform:translate3d(0,-100%,0)}.ios .toast.toast-top.modal-in{transform:translateZ(0)}.ios .toast.toast-center{border-radius:var(--f7-toast-border-radius);left:50%;width:auto}.ios .toast.toast-center,.ios .toast.toast-center.modal-in{transform:translate3d(-50%,-50%,0)}.ios .toast.toast-bottom{bottom:0;transform:translate3d(0,100%,0)}.ios .toast.toast-bottom.modal-in{transform:translateZ(0)}@media (max-width:568px){.ios .toast.toast-top{margin-top:0}.ios .toast.toast-top .toast-content{padding-top:calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-top))}.ios .toast.toast-bottom .toast-content{padding-bottom:calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-bottom))}}@media (min-width:569px){.ios .toast{border-radius:var(--f7-toast-border-radius);left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2)}.ios .toast.toast-top{top:16px}.ios .toast.toast-center{margin-left:0}.ios .toast.toast-bottom{margin-bottom:calc(16px + var(--f7-safe-area-bottom))}}@media (min-width:1024px){.ios .toast{margin-left:0;width:auto}.ios .toast.toast-horizontal-left{left:16px}.ios .toast.toast-horizontal-right{left:auto;right:16px}.ios .toast.toast-horizontal-center{left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2);width:var(--f7-toast-max-width)}}.ios .toast-button{margin-left:16px;margin-right:calc(var(--f7-button-padding-horizontal)*-1)}.md .toast{border-radius:var(--f7-toast-border-radius);left:8px;transform:scale(.9);transition-duration:.2s;width:calc(100% - 16px)}.md .toast.modal-in,.md .toast.modal-out{transform:scale(1)}.md .toast.toast-top{top:8px}.md .toast.toast-center{left:50%;transform:scale(.9) translate3d(-55%,-55%,0);width:auto}.md .toast.toast-center.modal-in,.md .toast.toast-center.modal-out{transform:scale(1) translate3d(-50%,-50%,0)}.md .toast.toast-bottom{bottom:calc(8px + var(--f7-safe-area-bottom))}@media (min-width:584px){.md .toast{left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2)}.md .toast.toast-center{margin-left:0}}@media (min-width:1024px){.md .toast{margin-left:0;width:auto}.md .toast.toast-horizontal-left{left:24px}.md .toast.toast-horizontal-right{left:auto;right:24px}.md .toast.toast-horizontal-center{left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2);width:var(--f7-toast-max-width)}.md .toast.toast-bottom{bottom:calc(24px + var(--f7-safe-area-bottom))}.md .toast.toast-top{top:24px}}.md .toast-button{margin-left:16px;margin-right:-8px}:root{--f7-preloader-modal-padding:8px;--f7-preloader-modal-bg-color:rgba(0,0,0,0.8)}.ios{--f7-preloader-color:#6c6c6c;--f7-preloader-size:20px;--f7-preloader-modal-preloader-size:34px;--f7-preloader-modal-border-radius:5px}.md{--f7-preloader-color:#757575;--f7-preloader-size:32px;--f7-preloader-modal-preloader-size:32px;--f7-preloader-modal-border-radius:4px}.preloader{display:inline-block;font-size:0;height:var(--f7-preloader-size);position:relative;vertical-align:middle;width:var(--f7-preloader-size)}.preloader .preloader-inner{display:block;height:100%;position:relative;width:100%}.preloader-backdrop{background:none;opacity:0;visibility:visible;z-index:14000}.preloader-modal{background:var(--f7-preloader-modal-bg-color);border-radius:var(--f7-preloader-modal-border-radius);left:50%;padding:var(--f7-preloader-modal-padding);position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);z-index:14500}.preloader-modal .preloader{--f7-preloader-size:var(--f7-preloader-modal-preloader-size);display:block!important}.with-modal-preloader .page-content,.with-modal-preloader.page-content,html.with-modal-preloader .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}.preloader[class*=color-]{--f7-preloader-color:var(--f7-theme-color)}.preloader.color-white{--f7-preloader-color:#fff}.preloader.color-black{--f7-preloader-color:#000}.ios .preloader{color:var(--f7-preloader-color)}.ios .preloader-inner{animation:ios-preloader-spin 1s steps(8) infinite}.ios .preloader-inner-line{background:currentColor;border-radius:100px;display:block;height:33.33%;left:50%;position:absolute;top:50%;transform-origin:center 150%;width:11.6%}.ios .preloader-multi-color .preloader-inner-line,.ios .preloader.color-multi .preloader-inner-line{animation:ios-preloader-multicolor 3s linear infinite}.ios .preloader-inner-line:first-child{opacity:.27;transform:translate(-50%,-150%) rotate(0deg)}.ios .preloader-inner-line:nth-child(2){opacity:.35285714;transform:translate(-50%,-150%) rotate(45deg)}.ios .preloader-inner-line:nth-child(3){opacity:.43571429;transform:translate(-50%,-150%) rotate(90deg)}.ios .preloader-inner-line:nth-child(4){opacity:.51857143;transform:translate(-50%,-150%) rotate(135deg)}.ios .preloader-inner-line:nth-child(5){opacity:.60142857;transform:translate(-50%,-150%) rotate(180deg)}.ios .preloader-inner-line:nth-child(6){opacity:.68428571;transform:translate(-50%,-150%) rotate(225deg)}.ios .preloader-inner-line:nth-child(7){opacity:.76714286;transform:translate(-50%,-150%) rotate(270deg)}.ios .preloader-inner-line:nth-child(8){opacity:.85;transform:translate(-50%,-150%) rotate(315deg)}@keyframes ios-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes ios-preloader-multicolor{0%,to{background-color:#2196f3}25%{background-color:#ff3b30}50%{background-color:#4cd964}75%{background-color:#ff9500}}.md .preloader{color:var(--f7-preloader-color)}.md .preloader-inner{animation:md-preloader-rotate 1.4s linear infinite}.md .preloader-inner circle{fill:none;stroke:currentColor;stroke-dasharray:100px;stroke-dashoffset:80px;stroke-width:4;animation:md-preloader-circle-rotate 5.6s ease-in-out infinite;transform:rotate(-90deg);transform-origin:18px 18px}.md .preloader-multi-color circle,.md .preloader.color-multi circle{animation:md-preloader-circle-rotate 5.6s ease-in-out infinite,md-preloader-multicolor 5.6s ease-in-out infinite}@keyframes md-preloader-multicolor{0%,to{stroke:#4285f4}75%{stroke:#1b9a59}50%{stroke:#f7c223}25%{stroke:#de3e35}}@keyframes md-preloader-rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes md-preloader-circle-rotate{0%{stroke-dashoffset:100px;transform:rotate(-90deg)}12.5%{stroke-dashoffset:25px;transform:rotate(-90deg)}25%{stroke-dashoffset:100px;transform:rotate(180deg)}25.1%{stroke-dashoffset:100px;transform:rotate(-180deg)}37.5%{stroke-dashoffset:25px;transform:rotate(-180deg)}50%{stroke-dashoffset:100px;transform:rotate(90deg)}50.1%{stroke-dashoffset:100px;transform:rotate(90deg)}62.5%{stroke-dashoffset:25px;transform:rotate(90deg)}75%{stroke-dashoffset:100px;transform:rotate(1turn)}75.1%{stroke-dashoffset:100px;transform:rotate(0deg)}87.5%{stroke-dashoffset:25px;transform:rotate(0deg)}to{stroke-dashoffset:100px;transform:rotate(270deg)}}.ios{--f7-progressbar-height:4px;--f7-progressbar-border-radius:4px;--f7-progressbar-bg-color:rgba(0,0,0,0.3)}.ios .dark,.ios.dark{--f7-progressbar-bg-color:rgba(255,255,255,0.3)}.md{--f7-progressbar-height:4px;--f7-progressbar-border-radius:0px}.md,.md .dark,.md [class*=color-]{--f7-progressbar-bg-color:rgba(var(--f7-theme-color-rgb),0.5)}.progressbar,.progressbar-infinite{background:var(--f7-progressbar-bg-color,rgba(var(--f7-theme-color-rgb),.5));border-radius:var(--f7-progressbar-border-radius);display:block;height:var(--f7-progressbar-height);overflow:hidden;position:relative;transform-origin:center top;transform-style:preserve-3d;width:100%}.progressbar{vertical-align:middle}.progressbar span{background-color:var(--f7-progressbar-progress-color,var(--f7-theme-color));height:100%;left:0;position:absolute;top:0;transform:translate3d(-100%,0,0);transition-duration:.15s;width:100%}.progressbar-infinite{z-index:15000}.progressbar-infinite:after,.progressbar-infinite:before{background-color:var(--f7-progressbar-progress-color,var(--f7-theme-color));content:"";display:block;height:100%;left:0;position:absolute;top:0;transform:translateZ(0);transform-origin:left center;width:100%}.progressbar-infinite.color-multi{background:none!important}.progressbar-in{animation:progressbar-in .15s forwards}.progressbar-out{animation:progressbar-out .15s forwards}.framework7-root>.progressbar,.framework7-root>.progressbar-infinite,.page>.progressbar,.page>.progressbar-infinite,.panel>.progressbar,.panel>.progressbar-infinite,.popup>.progressbar,.popup>.progressbar-infinite,.view>.progressbar,.view>.progressbar-infinite,.views>.progressbar,.views>.progressbar-infinite,body>.progressbar,body>.progressbar-infinite{border-radius:0!important;left:0;position:absolute;top:0;transform-origin:center top!important;z-index:15000}@keyframes progressbar-in{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes progressbar-out{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}.ios .progressbar-infinite:before{animation:ios-progressbar-infinite 1s linear infinite}.ios .progressbar-infinite:after{display:none}.ios .progressbar-infinite.color-multi:before{animation:ios-progressbar-infinite-multicolor 3s linear infinite;background-image:linear-gradient(90deg,#4cd964,#5ac8fa,#007aff,#34aadc,#5856d6,#ff2d55,#5856d6,#34aadc,#007aff,#5ac8fa,#4cd964);background-repeat:repeat-x;background-size:25% 100%;width:400%}@keyframes ios-progressbar-infinite{0%{transform:translate3d(-100%,0,0)}to{transform:translate3d(100%,0,0)}}@keyframes ios-progressbar-infinite-multicolor{0%{transform:translateZ(0)}to{transform:translate3d(-50%,0,0)}}.md .progressbar-infinite:before{animation:md-progressbar-infinite-1 2s linear infinite}.md .progressbar-infinite:after{animation:md-progressbar-infinite-2 2s linear infinite}.md .progressbar-infinite.color-multi:before{animation:md-progressbar-infinite-multicolor-bg 3s step-end infinite;background:none}.md .progressbar-infinite.color-multi:after{animation:md-progressbar-infinite-multicolor-fill 3s linear infinite;background:none;transform-origin:center center}@keyframes md-progressbar-infinite-1{0%{transform:translateX(-10%) scaleX(.1)}25%{transform:translateX(30%) scaleX(.6)}50%{transform:translateX(100%) scaleX(1)}to{transform:translateX(100%) scaleX(1)}}@keyframes md-progressbar-infinite-2{0%{transform:translateX(-100%) scaleX(1)}40%{transform:translateX(-100%) scaleX(1)}75%{transform:translateX(60%) scaleX(.35)}90%{transform:translateX(100%) scaleX(.1)}to{transform:translateX(100%) scaleX(.1)}}@keyframes md-progressbar-infinite-multicolor-bg{0%{background-color:#4caf50}25%{background-color:#f44336}50%{background-color:#2196f3}75%{background-color:#ffeb3b}}@keyframes md-progressbar-infinite-multicolor-fill{0%{background-color:#f44336;transform:scaleX(0)}24.9%{background-color:#f44336;transform:scaleX(1)}25%{background-color:#2196f3;transform:scaleX(0)}49.9%{background-color:#2196f3;transform:scaleX(1)}50%{background-color:#ffeb3b;transform:scaleX(0)}74.9%{background-color:#ffeb3b;transform:scaleX(1)}75%{background-color:#4caf50;transform:scaleX(0)}to{background-color:#4caf50;transform:scaleX(1)}}.ios{--f7-sortable-handler-width:36px;--f7-sortable-sorting-item-box-shadow:0px 2px 8px rgba(0,0,0,0.6);--f7-sortable-handler-color:rgba(0,0,0,0.22);--f7-sortable-sorting-item-bg-color:rgba(255,255,255,0.8)}.ios .dark,.ios.dark{--f7-sortable-sorting-item-bg-color:rgba(50,50,50,0.8);--f7-sortable-handler-color:rgba(255,255,255,0.55)}.md{--f7-sortable-handler-width:42px;--f7-sortable-sorting-item-box-shadow:none}.md,.md .dark,.md [class*=color-]{--f7-sortable-handler-color:var(--f7-md-on-surface-variant);--f7-sortable-sorting-item-bg-color:var(--f7-md-surface-3)}.sortable .sortable-handler{align-items:center;cursor:move;display:flex;height:100%;justify-content:center;opacity:0;overflow:hidden;pointer-events:none;position:absolute;right:var(--f7-safe-area-right);top:0;transition-duration:.3s;width:var(--f7-sortable-handler-width);z-index:10}.sortable .sortable-handler:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-sortable-handler-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;height:20px;letter-spacing:normal;line-height:1;overflow:hidden;text-align:center;text-rendering:optimizeLegibility;text-transform:none;transform:translateX(10px);transition-duration:.3s;white-space:nowrap;width:100%;width:18px}.sortable li.sorting{background:var(--f7-sortable-sorting-item-bg-color);box-shadow:var(--f7-sortable-sorting-item-box-shadow);transition-duration:0ms;z-index:50}.sortable li.sorting .item-inner:after{display:none!important}.sortable-opposite .sortable-handler{left:var(--f7-safe-area-right);right:auto}.sortable-opposite .sortable-handler:after{transform:translateX(-10px)}.sortable-opposite .item-content,.sortable-opposite.links-list li a,.sortable.simple-list li,.sortable:not(.sortable-opposite) .item-inner{transition-duration:.3s;transition-property:all}.sortable-sorting li{transition-duration:.3s}.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler{opacity:1;pointer-events:auto;touch-action:none}.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler:after{transform:translateX(0)}.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner:before,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-title-row:before,.sortable-enabled:not(.sortable-opposite).links-list li:not(.no-sorting):not(.disallow-sorting)>a:before{display:none}.links-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) a,.no-chevron .sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,.simple-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting),.sortable-enabled :not(.sortable-opposite).no-chevron .item-link .item-inner,.sortable-enabled.no-chevron:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-inner,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link.no-chevron .item-inner{padding-right:calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right))}.links-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) a,.simple-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting),.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .item-content{padding-left:calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right))}.ios .sortable-handler:after{content:"sort_ios"}.md .sortable-handler:after{content:"sort_md"}:root{--f7-swipeout-delete-button-bg-color:#ff3b30;--f7-swipeout-button-text-color:#fff;--f7-swipeout-button-padding-vertical:0px;--f7-swipeout-button-bg-color:rgba(0,0,0,0.22)}:root .dark,:root.dark{--f7-swipeout-button-bg-color:rgba(255,255,255,0.55)}.ios{--f7-swipeout-button-padding-horizontal:30px;--f7-swipeout-button-font-size:inherit;--f7-swipeout-button-font-weight:inherit}.md{--f7-swipeout-button-padding-horizontal:24px;--f7-swipeout-button-font-size:14px;--f7-swipeout-button-font-weight:500}.md .dark,.md.dark{--f7-swipeout-button-text-color:#000}.swipeout{overflow:hidden;transform-style:preserve-3d}.swipeout-deleting{transition-duration:.3s}.swipeout-deleting .swipeout-content{transform:translateX(-100%)}.swipeout-transitioning .swipeout-actions-left a,.swipeout-transitioning .swipeout-actions-right a,.swipeout-transitioning .swipeout-content,.swipeout-transitioning .swipeout-overswipe{transition-duration:.3s;transition-property:transform,left}.swipeout-content{position:relative;z-index:10}.swipeout-overswipe{transition-duration:.2s;transition-property:left}.swipeout-actions-left,.swipeout-actions-right{direction:ltr;display:flex;height:100%;position:absolute;top:0}.swipeout-actions-left>a,.swipeout-actions-left>button,.swipeout-actions-left>div,.swipeout-actions-left>span,.swipeout-actions-right>a,.swipeout-actions-right>button,.swipeout-actions-right>div,.swipeout-actions-right>span{align-items:center;background:var(--f7-swipeout-button-bg-color);color:var(--f7-swipeout-button-text-color);display:flex;font-size:var(--f7-swipeout-button-font-size);font-weight:var(--f7-swipeout-button-font-weight);left:0;padding:var(--f7-swipeout-button-padding-vertical) var(--f7-swipeout-button-padding-horizontal);position:relative}.swipeout-actions-left>a:after,.swipeout-actions-left>button:after,.swipeout-actions-left>div:after,.swipeout-actions-left>span:after,.swipeout-actions-right>a:after,.swipeout-actions-right>button:after,.swipeout-actions-right>div:after,.swipeout-actions-right>span:after{background:inherit;content:"";height:100%;pointer-events:none;position:absolute;top:0;transform:translateZ(0);width:600%;z-index:-1}.swipeout-actions-left .swipeout-delete,.swipeout-actions-right .swipeout-delete{background:var(--f7-swipeout-delete-button-bg-color)}.swipeout-actions-right{right:0;transform:translateX(calc(100% + 1px))}.swipeout-actions-right>a:after,.swipeout-actions-right>button:after,.swipeout-actions-right>div:after,.swipeout-actions-right>span:after{left:100%}.swipeout-actions-right>a:last-child,.swipeout-actions-right>button:last-child,.swipeout-actions-right>div:last-child,.swipeout-actions-right>span:last-child{padding-right:calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-right))}.swipeout-actions-left{left:0;transform:translateX(calc(-100% - 1px))}.swipeout-actions-left>a:after,.swipeout-actions-left>button:after,.swipeout-actions-left>div:after,.swipeout-actions-left>span:after{right:100%}.swipeout-actions-left>a:first-child,.swipeout-actions-left>button:first-child,.swipeout-actions-left>div:first-child,.swipeout-actions-left>span:first-child{padding-left:calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-left))}.swipeout-actions-left [class*=color-],.swipeout-actions-right [class*=color-]{--f7-swipeout-button-bg-color:var(--f7-theme-color)}:root{--f7-accordion-chevron-icon-down:"chevron_down";--f7-accordion-chevron-icon-up:"chevron_up"}.accordion-item-toggle{cursor:pointer}.list.accordion-list .accordion-item-toggle{overflow:hidden;position:relative;transition-duration:.3s}.list.accordion-list .accordion-item-toggle.active-state{background-color:var(--f7-list-link-pressed-bg-color);transition-duration:.3s}.list.accordion-list .accordion-item-toggle.active-state>.item-inner:after{background-color:initial}.list.accordion-list .accordion-item-toggle .item-inner{transition-duration:.3s;transition-property:background-color}.list.accordion-list .accordion-item-toggle .item-inner:after{transition-duration:.3s}.list.accordion-list .accordion-item-toggle .ripple-wave{z-index:0}.accordion-item .item-link .item-inner:after{transition-duration:.3s}.accordion-item .block,.accordion-item .list{margin-bottom:0;margin-top:0}.accordion-item .block>h1:first-child,.accordion-item .block>h2:first-child,.accordion-item .block>h3:first-child,.accordion-item .block>h4:first-child,.accordion-item .block>p:first-child{margin-top:10px}.accordion-item .block>h1:last-child,.accordion-item .block>h2:last-child,.accordion-item .block>h3:last-child,.accordion-item .block>h4:last-child,.accordion-item .block>p:last-child{margin-bottom:10px}.accordion-item-opened .accordion-item-toggle .item-inner:after,.accordion-item-opened>.item-link .item-inner:after{background-color:initial}.list li.accordion-item ul{padding-left:0}.accordion-item-content{font-size:14px;height:0;overflow:hidden;position:relative;transition-duration:.3s}.accordion-item-opened>.accordion-item-content{height:auto}html.device-android-4 .accordion-item-content{transform:none}.list .accordion-item-toggle .item-inner:before{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-list-chevron-icon-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-size:var(--f7-list-chevron-icon-font-size);font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;pointer-events:none;position:absolute;right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;white-space:nowrap;width:100%}.list:not(.accordion-opposite) .accordion-item-toggle .item-inner{padding-right:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.accordion-opposite .accordion-item-toggle .item-inner,.accordion-opposite .accordion-item-toggle.item-link .item-inner,.accordion-opposite .accordion-item>.item-link>.item-content>.item-inner,.accordion-opposite .accordion-item>.item-link>.item-inner{padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.accordion-opposite .accordion-item>.item-link>.item-title-row{padding-right:0}.accordion-opposite .accordion-item-toggle .item-inner:before,.accordion-opposite .accordion-item-toggle.item-link .item-inner:before,.accordion-opposite .accordion-item>.item-link .item-title-row:before,.accordion-opposite .accordion-item>.item-link>.item-content>.item-inner:before,.accordion-opposite .accordion-item>.item-link>.item-inner:before{display:none}.accordion-opposite .accordion-item-toggle.item-content,.accordion-opposite .accordion-item-toggle>.item-content,.accordion-opposite .accordion-item>.item-content,.accordion-opposite .accordion-item>.item-link>.item-content,.accordion-opposite.links-list .accordion-item>a{padding-left:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));position:relative}.accordion-opposite .accordion-item-toggle.item-content:before,.accordion-opposite .accordion-item-toggle>.item-content:before,.accordion-opposite .accordion-item>.item-content:before,.accordion-opposite .accordion-item>.item-link>.item-content:before,.accordion-opposite.links-list .accordion-item>a:before{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-list-chevron-icon-color);content:var(--f7-accordion-chevron-icon-down);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-size:var(--f7-list-chevron-icon-font-size);font-style:normal;font-weight:400;height:100%;height:8px;left:calc((var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal))/2 + var(--f7-safe-area-left));letter-spacing:normal;line-height:1;line-height:8px;margin-top:-4px;pointer-events:none;position:absolute;text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;transform:translateX(-50%);white-space:nowrap;width:100%;width:14px}.list .accordion-item-toggle.active-state{background-color:var(--f7-list-link-pressed-bg-color)}.accordion-item.media-item .accordion-item-toggle .item-title-row:before,.accordion-item.media-item>.item-link .item-title-row:before,.links-list .accordion-item>a:before,.list .accordion-item-toggle .item-inner:before,.list:not(.media-list) .accordion-item:not(.media-item) .accordion-item-toggle .item-inner:before,.list:not(.media-list) .accordion-item:not(.media-item)>.item-link .item-inner:before,.media-list .accordion-item .accordion-item-toggle .item-title-row:before,.media-list .accordion-item>.item-link .item-title-row:before{content:var(--f7-accordion-chevron-icon-down);height:8px;line-height:8px;margin-top:-4px;width:14px}.accordion-item-opened.media-item .accordion-item-toggle .item-title-row:before,.accordion-item-opened.media-item>.item-link .item-title-row:before,.accordion-opposite .accordion-item-opened .accordion-item-toggle.item-content:before,.accordion-opposite .accordion-item-opened .accordion-item-toggle>.item-content:before,.accordion-opposite .accordion-item-opened>.item-content:before,.accordion-opposite .accordion-item-opened>.item-link>.item-content:before,.accordion-opposite .links-list .accordion-item-opened>a:before,.links-list .accordion-item-opened>a:before,.list .accordion-item-toggle.accordion-item-opened .item-inner:before,.list:not(.media-list) .accordion-item-opened:not(.media-item) .accordion-item-toggle .item-inner:before,.list:not(.media-list) .accordion-item-opened:not(.media-item)>.item-link .item-inner:before,.media-list .accordion-item-opened .accordion-item-toggle .item-title-row:before,.media-list .accordion-item-opened>.item-link .item-title-row:before{content:var(--f7-accordion-chevron-icon-up);height:8px;line-height:8px;margin-top:-4px;width:14px}.ios{--f7-contacts-list-title-font-size:inherit;--f7-contacts-list-title-font-weight:600;--f7-contacts-list-title-height:22px;--f7-contacts-list-title-text-color:#000;--f7-contacts-list-title-bg-color:#f7f7f7}.ios .dark,.ios.dark{--f7-contacts-list-title-text-color:#fff;--f7-contacts-list-title-bg-color:#323234}.md{--f7-contacts-list-title-font-size:20px;--f7-contacts-list-title-font-weight:500;--f7-contacts-list-title-height:48px;--f7-contacts-list-title-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-contacts-list-title-text-color:var(--f7-theme-color)}.contacts-list{--f7-list-margin-vertical:0px}.contacts-list .list-group-title,.contacts-list li.list-group-title{background-color:var(--f7-contacts-list-title-bg-color,var(--f7-list-group-title-bg-color));color:var(--f7-contacts-list-title-text-color,var(--f7-theme-color));font-size:var(--f7-contacts-list-title-font-size,var(--f7-list-group-title-font-size));font-weight:var(--f7-contacts-list-title-font-weight,var(--f7-list-group-title-font-weight));height:var(--f7-contacts-list-title-height,var(--f7-list-group-title-height));line-height:var(--f7-contacts-list-title-height,var(--f7-list-group-title-height))}.contacts-list .list-group:first-child ul:before,.contacts-list .list-group:last-child ul:after{display:none!important}.md .contacts-list .list-group-title{overflow:visible;pointer-events:none;width:40px}.md .contacts-list .list-group-title+li{margin-top:calc(var(--f7-contacts-list-title-height)*-1)}.md .contacts-list .list-group-title:before{display:none!important}.md .contacts-list li:not(.list-group-title){padding-left:40px}:root{--f7-list-index-width:16px;--f7-list-index-font-size:11px;--f7-list-index-font-weight:600;--f7-list-index-item-height:14px;--f7-list-index-label-font-weight:500}.ios{--f7-list-index-label-text-color:#fff;--f7-list-index-label-size:44px;--f7-list-index-label-font-size:17px;--f7-list-index-skip-dot-size:6px}.md{--f7-list-index-label-size:56px;--f7-list-index-label-font-size:20px;--f7-list-index-skip-dot-size:4px}.md,.md .dark,.md [class*=color-]{--f7-list-index-label-bg-color:var(--f7-md-primary);--f7-list-index-label-text-color:var(--f7-md-on-primary)}.list-index{bottom:0;cursor:pointer;position:absolute;right:var(--f7-safe-area-right);text-align:center;top:0;-webkit-user-select:none;user-select:none;width:var(--f7-list-index-width);z-index:10}.list-index:before{content:"";height:100%;position:absolute;right:100%;top:0;width:20px}.list-index ul{align-items:center;color:var(--f7-list-index-text-color,var(--f7-theme-color));display:flex;flex-direction:column;font-size:var(--f7-list-index-font-size);font-weight:var(--f7-list-index-font-weight);height:100%;justify-content:center}.list-index li,.list-index ul{flex-shrink:0;list-style:none;margin:0;padding:0;position:relative;width:100%}.list-index li{display:block;height:var(--f7-list-index-item-height);line-height:var(--f7-list-index-item-height)}.list-index .list-index-skip-placeholder:after{background:var(--f7-list-index-text-color,var(--f7-theme-color));border-radius:50%;content:"";height:var(--f7-list-index-skip-dot-size);left:50%;margin-left:calc(var(--f7-list-index-skip-dot-size)*-1/2);margin-top:calc(var(--f7-list-index-skip-dot-size)*-1/2);position:absolute;top:50%;width:var(--f7-list-index-skip-dot-size)}.list-index .list-index-label{background-color:var(--f7-list-index-label-bg-color,var(--f7-theme-color));bottom:0;color:var(--f7-list-index-label-text-color);font-size:var(--f7-list-index-label-font-size);font-weight:var(--f7-list-index-label-font-weight);height:var(--f7-list-index-label-size);line-height:var(--f7-list-index-label-size);position:absolute;right:100%;text-align:center;width:var(--f7-list-index-label-size)}.navbars~.page>.list-index,.navbar~.list-index,.navbar~.page>.list-index{top:var(--f7-navbar-height)}.ios .navbars~.toolbar-top-ios .md .navbar~.toolbar-top-md~.list-index,.ios .navbar~.toolbar-top-ios~.list-index,.navbars~.toolbar-top~.list-index,.navbar~.toolbar-top~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-toolbar-height))}.ios .navbars~.toolbar-top-ios .md .navbar~.toolbar-top-md.tabbar-icons~.list-index,.ios .navbar~.toolbar-top-ios.tabbar-icons~.list-index,.navbars~.toolbar-top.tabbar-icons~.list-index,.navbar~.toolbar-top.tabbar-icons~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height))}.navbars~.subnavbar~.list-index,.navbar~.subnavbar~.list-index,.page-with-subnavbar .navbar~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-subnavbar-height))}.ios .toolbar-bottom-ios~* .page>.list-index,.ios .toolbar-bottom-ios~.list-index,.ios .toolbar-bottom-ios~.page>.list-index,.md .toolbar-bottom-md~* .page>.list-index,.md .toolbar-bottom-md~.list-index,.md .toolbar-bottom-md~.page>.list-index,.toolbar-bottom~* .page>.list-index,.toolbar-bottom~.list-index,.toolbar-bottom~.page>.list-index{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.ios .toolbar-bottom-ios.tabbar-icons~* .page>.list-index,.ios .toolbar-bottom-ios.tabbar-icons~.list-index,.ios .toolbar-bottom-ios.tabbar-icons~.page>.list-index,.md .toolbar-bottom-md.tabbar-icons~* .page>.list-index,.md .toolbar-bottom-md.tabbar-icons~.list-index,.md .toolbar-bottom-md.tabbar-icons~.page>.list-index,.toolbar-bottom.tabbar-icons~* .page>.list-index,.toolbar-bottom.tabbar-icons~.list-index,.toolbar-bottom.tabbar-icons~.page>.list-index{bottom:calc(var(--f7-tabbar-icons-height) + var(--f7-safe-area-bottom))}.ios .list-index .list-index-label{border-radius:50%;margin-bottom:calc(var(--f7-list-index-label-size)*-1/2);margin-right:calc(var(--f7-list-index-width) - 1px)}.ios .list-index .list-index-label:before{background-color:inherit;border-radius:50% 0 50% 50%;content:"";height:100%;left:0;position:absolute;top:0;transform:rotate(45deg);width:100%;z-index:-1}.md .list-index .list-index-label{border-radius:50% 50% 0 50%}:root{--f7-timeline-inner-block-margin-vertical:16px;--f7-timeline-divider-margin-horizontal:16px;--f7-timeline-horizontal-date-height:34px;--f7-timeline-year-height:24px;--f7-timeline-year-font-weight:inherit;--f7-timeline-month-height:24px;--f7-timeline-month-font-size:inherit;--f7-timeline-month-font-weight:inherit;--f7-timeline-item-text-font-weight:inherit;--f7-timeline-item-subtitle-font-weight:inherit}.ios{--f7-timeline-divider-color:#bbb;--f7-timeline-padding-horizontal:16px;--f7-timeline-margin-vertical:35px;--f7-timeline-item-inner-border-radius:7px;--f7-timeline-item-time-font-size:13px;--f7-timeline-item-title-font-size:17px;--f7-timeline-item-title-line-height:inherit;--f7-timeline-item-title-font-weight:600;--f7-timeline-item-subtitle-font-size:15px;--f7-timeline-item-subtitle-line-height:inherit;--f7-timeline-item-text-font-size:inherit;--f7-timeline-item-text-color:inherit;--f7-timeline-item-text-line-height:inherit;--f7-timeline-year-font-size:16px;--f7-timeline-horizontal-item-padding:10px;--f7-timeline-item-inner-bg-color:#fff;--f7-timeline-item-time-text-color:rgba(0,0,0,0.45);--f7-timeline-horizontal-item-border-color:rgba(0,0,0,0.22);--f7-timeline-horizontal-item-date-border-color:rgba(0,0,0,0.22)}.ios .dark,.ios.dark{--f7-timeline-horizontal-item-border-color:rgba(255,255,255,0.15);--f7-timeline-horizontal-item-date-border-color:rgba(255,255,255,0.15);--f7-timeline-item-inner-bg-color:#1c1c1d;--f7-timeline-item-time-text-color:rgba(255,255,255,0.55)}.md{--f7-timeline-padding-horizontal:16px;--f7-timeline-margin-vertical:32px;--f7-timeline-item-inner-border-radius:16px;--f7-timeline-item-time-font-size:13px;--f7-timeline-item-title-font-size:16px;--f7-timeline-item-title-line-height:inherit;--f7-timeline-item-title-font-weight:400;--f7-timeline-item-subtitle-font-size:inherit;--f7-timeline-item-subtitle-line-height:inherit;--f7-timeline-item-text-font-size:inherit;--f7-timeline-item-text-line-height:inherit;--f7-timeline-year-font-size:16px;--f7-timeline-horizontal-item-padding:12px;--f7-timeline-horizontal-item-date-border-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-timeline-divider-color:var(--f7-md-outline);--f7-timeline-item-text-color:var(--f7-md-on-surface);--f7-timeline-horizontal-item-border-color:var(--f7-md-outline);--f7-timeline-item-inner-bg-color:var(--f7-md-surface-1);--f7-timeline-item-time-text-color:var(--f7-md-on-surface-variant)}.timeline{box-sizing:border-box;margin:var(--f7-timeline-margin-vertical) 0;padding:0 var(--f7-timeline-padding-horizontal);padding-bottom:0;padding-left:calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-right));padding-top:0}.block-strong .timeline{margin:0;padding:0}.timeline-item{box-sizing:border-box;display:flex;justify-content:flex-start;overflow:hidden;padding:2px 0 var(--f7-timeline-padding-horizontal);position:relative}.timeline-item:last-child{padding-bottom:2px}.timeline-item-date{box-sizing:border-box;flex-shrink:0;text-align:right;width:50px}.timeline-item-date small{font-size:10px}.timeline-item-content{flex-shrink:10;margin:2px;min-width:0;position:relative}.timeline-item-content .block,.timeline-item-content .card,.timeline-item-content .list,.timeline-item-content.block,.timeline-item-content.card,.timeline-item-content.list{margin:0;width:100%}.timeline-item-content .block+.block,.timeline-item-content .block+.card,.timeline-item-content .block+.list,.timeline-item-content .card+.block,.timeline-item-content .card+.card,.timeline-item-content .card+.list,.timeline-item-content .list+.block,.timeline-item-content .list+.card,.timeline-item-content .list+.list{margin:var(--f7-timeline-inner-block-margin-vertical) 0 0}.timeline-item-content h1:first-child,.timeline-item-content h2:first-child,.timeline-item-content h3:first-child,.timeline-item-content h4:first-child,.timeline-item-content ol:first-child,.timeline-item-content p:first-child,.timeline-item-content ul:first-child{margin-top:0}.timeline-item-content h1:last-child,.timeline-item-content h2:last-child,.timeline-item-content h3:last-child,.timeline-item-content h4:last-child,.timeline-item-content ol:last-child,.timeline-item-content p:last-child,.timeline-item-content ul:last-child{margin-bottom:0}.timeline-item-inner{background:var(--f7-timeline-item-inner-bg-color);border-radius:var(--f7-timeline-item-inner-border-radius);box-sizing:border-box;padding:8px var(--f7-timeline-padding-horizontal)}.timeline-item-inner+.timeline-item-inner{margin-top:var(--f7-timeline-inner-block-margin-vertical)}.timeline-item-inner .block{color:inherit;padding:0}.timeline-item-inner .block-strong{margin:0;padding-left:0;padding-right:0}.timeline-item-inner .block-strong:after,.timeline-item-inner .block-strong:before,.timeline-item-inner .list ul:after,.timeline-item-inner .list ul:before{display:none!important}.timeline-item-divider{background:var(--f7-timeline-divider-color);border-radius:50%;flex-shrink:0;height:10px;margin:3px var(--f7-timeline-divider-margin-horizontal) 0;position:relative;width:1px;width:10px}.timeline-item-divider:after,.timeline-item-divider:before{background:inherit;content:" ";height:100vh;left:50%;position:absolute;transform:translate3d(-50%,0,0);width:1px}.timeline-item-divider:after{top:100%}.timeline-item-divider:before{bottom:100%}.timeline-item:first-child .timeline-item-divider:before,.timeline-item:last-child .timeline-item-divider:after{display:none}.timeline-item-time{color:var(--f7-timeline-item-time-text-color);font-size:var(--f7-timeline-item-time-font-size);margin-top:var(--f7-timeline-inner-block-margin-vertical)}.timeline-item-time:first-child,.timeline-item-time:last-child,.timeline-item-title+.timeline-item-time{margin-top:0}.timeline-item-title{font-size:var(--f7-timeline-item-title-font-size);font-weight:var(--f7-timeline-item-title-font-weight);line-height:var(--f7-timeline-item-title-line-height)}.timeline-item-subtitle{font-size:var(--f7-timeline-item-subtitle-font-size);font-weight:var(--f7-timeline-item-subtitle-font-weight);line-height:var(--f7-timeline-item-subtitle-line-height)}.timeline-item-text{color:var(--f7-timeline-item-text-color);font-size:var(--f7-timeline-item-text-font-size);font-weight:var(--f7-timeline-item-text-font-weight);line-height:var(--f7-timeline-item-text-line-height)}.timeline-sides .timeline-item,.timeline-sides .timeline-item-right{margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.timeline-sides .timeline-item .timeline-item-date,.timeline-sides .timeline-item-right .timeline-item-date{text-align:right}.timeline-sides .timeline-item-left,.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.timeline-sides .timeline-item-left .timeline-item-date,.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:left}@media (min-width:480px){.xsmall-sides .timeline-item,.xsmall-sides .timeline-item-right{margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.xsmall-sides .timeline-item .timeline-item-date,.xsmall-sides .timeline-item-right .timeline-item-date{text-align:right}.xsmall-sides .timeline-item-left,.xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.xsmall-sides .timeline-item-left .timeline-item-date,.xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:left}}@media (min-width:568px){.small-sides .timeline-item,.small-sides .timeline-item-right{margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.small-sides .timeline-item .timeline-item-date,.small-sides .timeline-item-right .timeline-item-date{text-align:right}.small-sides .timeline-item-left,.small-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.small-sides .timeline-item-left .timeline-item-date,.small-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:left}}@media (min-width:768px){.medium-sides .timeline-item,.medium-sides .timeline-item-right{margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.medium-sides .timeline-item .timeline-item-date,.medium-sides .timeline-item-right .timeline-item-date{text-align:right}.medium-sides .timeline-item-left,.medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.medium-sides .timeline-item-left .timeline-item-date,.medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:left}}@media (min-width:1024px){.large-sides .timeline-item,.large-sides .timeline-item-right{margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.large-sides .timeline-item .timeline-item-date,.large-sides .timeline-item-right .timeline-item-date{text-align:right}.large-sides .timeline-item-left,.large-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.large-sides .timeline-item-left .timeline-item-date,.large-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:left}}@media (min-width:1200px){.xlarge-sides .timeline-item,.xlarge-sides .timeline-item-right{margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.xlarge-sides .timeline-item .timeline-item-date,.xlarge-sides .timeline-item-right .timeline-item-date{text-align:right}.xlarge-sides .timeline-item-left,.xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.xlarge-sides .timeline-item-left .timeline-item-date,.xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:left}}.timeline-horizontal{display:flex;height:100%;margin:0;padding:0;padding-left:var(--f7-safe-area-left);padding-right:0;position:relative}.timeline-horizontal .timeline-item{display:block;flex-shrink:0;height:100%;margin:0;padding:0;padding-bottom:var(--f7-timeline-horizontal-item-padding);padding-top:var(--f7-timeline-horizontal-date-height)!important;position:relative;width:100/3vw}.timeline-horizontal .timeline-item:after{background-color:var(--f7-timeline-horizontal-item-border-color);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.timeline-horizontal .timeline-item-date{background-color:var(--f7-bars-bg-color);color:var(--f7-bars-text-color);height:var(--f7-timeline-horizontal-date-height);left:0;line-height:var(--f7-timeline-horizontal-date-height);padding:0 var(--f7-timeline-horizontal-item-padding);position:absolute;text-align:left;top:0;width:auto;width:100%}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .timeline-horizontal .timeline-item-date{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-bars-bg-color-rgb),var(--f7-bars-translucent-opacity))}}.timeline-horizontal .timeline-item-date:after{background-color:var(--f7-timeline-horizontal-item-date-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.timeline-horizontal .timeline-item-content{-webkit-overflow-scrolling:touch;height:calc(100vw - var(--f7-timeline-horizontal-item-padding));margin:0;overflow:auto;padding:var(--f7-timeline-horizontal-item-padding)}.timeline-horizontal .timeline-item-divider{display:none}.timeline-horizontal .timeline-month:last-child .timeline-item:last-child:after,.timeline-horizontal>.timeline-item:last-child:after{display:none!important}.timeline-horizontal.timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.timeline-cols-20 .timeline-item{width:5vw}@media (min-width:480px){.timeline-horizontal.xsmall-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.xsmall-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.xsmall-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.xsmall-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.xsmall-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.xsmall-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.xsmall-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.xsmall-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.xsmall-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.xsmall-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.xsmall-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.xsmall-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.xsmall-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.xsmall-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.xsmall-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.xsmall-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.xsmall-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.xsmall-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.xsmall-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.xsmall-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:568px){.timeline-horizontal.small-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.small-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.small-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.small-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.small-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.small-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.small-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.small-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.small-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.small-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.small-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.small-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.small-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.small-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.small-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.small-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.small-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.small-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.small-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.small-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:768px){.timeline-horizontal.medium-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.medium-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.medium-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.medium-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.medium-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.medium-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.medium-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.medium-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.medium-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.medium-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.medium-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.medium-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.medium-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.medium-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.medium-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.medium-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.medium-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.medium-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.medium-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.medium-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:1024px){.timeline-horizontal.large-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.large-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.large-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.large-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.large-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.large-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.large-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.large-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.large-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.large-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.large-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.large-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.large-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.large-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.large-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.large-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.large-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.large-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.large-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.large-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:1200px){.timeline-horizontal.xlarge-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.xlarge-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.xlarge-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.xlarge-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.xlarge-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.xlarge-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.xlarge-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.xlarge-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.xlarge-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.xlarge-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.xlarge-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.xlarge-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.xlarge-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.xlarge-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.xlarge-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.xlarge-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.xlarge-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.xlarge-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.xlarge-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.xlarge-timeline-cols-20 .timeline-item{width:5vw}}.timeline-year{padding-top:var(--f7-timeline-year-height)}.timeline-year:after{background-color:var(--f7-timeline-horizontal-item-border-color);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.timeline-year:last-child:after{display:none!important}.timeline-month{padding-top:var(--f7-timeline-month-height)}.timeline-month .timeline-item:before{background-color:var(--f7-timeline-horizontal-item-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.timeline-month,.timeline-year{box-sizing:border-box;display:flex;flex-shrink:0;height:100%;position:relative}.timeline-year-title{font-size:var(--f7-timeline-year-font-size);font-weight:var(--f7-timeline-year-font-weight);height:var(--f7-timeline-year-height);line-height:var(--f7-timeline-year-height)}.timeline-month-title{font-size:var(--f7-timeline-month-font-size);font-weight:var(--f7-timeline-month-font-weight);height:var(--f7-timeline-month-height);line-height:var(--f7-timeline-month-height)}.timeline-month-title,.timeline-year-title{background-color:var(--f7-bars-bg-color);box-sizing:border-box;color:var(--f7-bars-text-color);left:0;padding:0 var(--f7-timeline-horizontal-item-padding);position:absolute;top:0;width:100%}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .timeline-month-title,.ios-translucent-bars .timeline-year-title{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-bars-bg-color-rgb),var(--f7-bars-translucent-opacity))}}.timeline-month-title span,.timeline-year-title span{display:inline-block;left:calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-left));position:sticky}.timeline-month-title span{margin-top:-2px}.timeline-year:first-child .timeline-month:first-child .timeline-month-title,.timeline-year:first-child .timeline-year-title,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-month-title{left:calc(var(--f7-safe-area-left)*-1);right:0;width:auto}.timeline-horizontal .timeline-item:first-child,.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-item:first-child,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-month-title+.timeline-item{overflow:visible}.timeline-horizontal .timeline-item:first-child .timeline-item-date,.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child .timeline-item-date,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-item:first-child .timeline-item-date,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-month-title+.timeline-item .timeline-item-date{left:calc(0px - var(--f7-safe-area-left));padding-left:calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-left));right:0;width:auto}.timeline-year:last-child .timeline-month:last-child .timeline-month-title,.timeline-year:last-child .timeline-year-title{right:calc(0px - var(--f7-safe-area-right));width:auto}.timeline-horizontal .timeline-item:last-child,.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child{overflow:visible}.timeline-horizontal .timeline-item:last-child .timeline-item-date,.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child .timeline-item-date{left:0;right:calc(0px - var(--f7-safe-area-right));width:auto}.ios .block-strong .timeline-item-inner{border:1px solid rgba(0,0,0,.1);border-radius:3px}.ios .timeline-year-title span{margin-top:3px}.md .timeline-year-title span{margin-top:2px}.tabs .tab{display:none}.tabs .tab-active{display:block}.tabs-animated-wrap{height:100%;overflow:hidden;position:relative;width:100%}.tabs-animated-wrap>.tabs{display:flex;height:100%;transition-duration:.3s}.tabs-animated-wrap>.tabs>.tab{display:block;flex-shrink:0;width:100%}.tabs-animated-wrap.not-animated>.tabs{transition-duration:0ms}swiper-container.tabs{height:100%}swiper-container.tabs>.tab{display:block;touch-action:pan-y}.page>.tabs{height:100%}:root{--f7-panel-width:260px;--f7-panel-backdrop-bg-color:rgba(0,0,0,0.3);--f7-panel-bg-color:#fff}:root .dark,:root.dark{--f7-panel-bg-color:#000}.ios{--f7-panel-collapsed-width:58px;--f7-panel-transition-duration:400ms;--f7-panel-transition-timing-function:initial}.md{--f7-panel-collapsed-width:60px;--f7-panel-transition-duration:400ms;--f7-panel-transition-timing-function:cubic-bezier(0,0.8,0.34,1)}.panel-backdrop{background-color:var(--f7-panel-backdrop-bg-color);height:100%;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transform:translateZ(0);transition-duration:var(--f7-panel-transition-duration);transition-property:transform,opacity;visibility:hidden;width:100%;z-index:5999}.panel-backdrop .with-panel,.panel-backdrop .with-panel-closing{visibility:visible}.panel-backdrop.not-animated{transition-duration:0ms!important}.panel{background-color:var(--f7-panel-bg-color);box-sizing:border-box;height:100%;overflow:visible;position:absolute;top:0;transform:translateZ(0);transition-duration:var(--f7-panel-transition-duration);transition-property:transform;width:var(--f7-panel-width);z-index:1000}.panel:not(.panel-in):not(.panel-out):not(.panel-in-breakpoint):not(.panel-in-collapsed):not(.panel-in-swipe){display:none}.panel:after{content:"";height:100%;opacity:0;pointer-events:none;position:absolute;top:0;transition-duration:var(--f7-panel-transition-duration);transition-property:transform,opacity;width:20px;z-index:5999}.panel.not-animated,.panel.not-animated:after,.panel.panel-reveal.not-animated~.view,.panel.panel-reveal.not-animated~.views{transition-duration:0ms!important}.panel.panel-resizing{-webkit-user-select:none;user-select:none}.panel.panel-resizing,.panel.panel-resizing:after,.panel.panel-resizing~.view,.panel.panel-resizing~.views{transition-duration:0ms!important}.panel-cover,.panel-floating{z-index:6000}.panel-floating{border-radius:16px;bottom:calc(8px + var(--f7-safe-area-bottom, 0px));height:auto;overflow:hidden;top:calc(8px + var(--f7-safe-area-top, 0px))}.panel-floating .view,.panel-floating .views{--f7-safe-area-top:0px;--f7-safe-area-bottom:0px}.page .panel-floating{bottom:calc(8px + var(--f7-safe-area-bottom, 0px));top:calc(8px + var(--f7-page-navbar-offset, 0px))}.page .panel-floating .page{--f7-page-navbar-offset:0px}.page .panel-floating .navbars~*,.page .panel-floating .navbar~*{--f7-page-navbar-offset:calc(var(--f7-navbar-height))}.panel-left{left:0;width:var(--f7-panel-left-width,var(--f7-panel-width))}.panel-left.panel-cover,.panel-left.panel-floating,.panel-left.panel-push{transform:translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width))*-1),0,0)}.panel-right{right:0;width:var(--f7-panel-right-width,var(--f7-panel-width))}.panel-right.panel-cover,.panel-right.panel-floating,.panel-right.panel-push{transform:translate3d(var(--f7-panel-right-width,var(--f7-panel-width)),0,0)}.panel-in-breakpoint{transform:translateZ(0)!important;transition-duration:0ms}.panel-in-breakpoint:after{display:none}.panel-in-breakpoint.panel-cover,.panel-in-breakpoint.panel-floating{z-index:5900}.panel,.panel-backdrop{transition-timing-function:var(--f7-panel-transition-timing-function)}html.with-panel-closing .framework7-root>.view,html.with-panel-closing .views,html.with-panel-left-push .framework7-root>.view,html.with-panel-left-push .views,html.with-panel-left-reveal .framework7-root>.view,html.with-panel-left-reveal .views,html.with-panel-right-push .framework7-root>.view,html.with-panel-right-push .views,html.with-panel-right-reveal .framework7-root>.view,html.with-panel-right-reveal .views{transition-duration:var(--f7-panel-transition-duration);transition-property:transform;transition-timing-function:var(--f7-panel-transition-timing-function)}html.with-panel .framework7-root>.view .page-content,html.with-panel .framework7-root>.views .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}html.with-panel-left-push .framework7-root>.view,html.with-panel-left-push .views,html.with-panel-left-reveal .framework7-root>.view,html.with-panel-left-reveal .views{transform:translate3d(var(--f7-panel-left-width,var(--f7-panel-width)),0,0)}html.with-panel-right-push .framework7-root>.view,html.with-panel-right-push .views,html.with-panel-right-reveal .framework7-root>.view,html.with-panel-right-reveal .views{transform:translate3d(calc(var(--f7-panel-right-width, var(--f7-panel-width))*-1),0,0)}.page>.panel-backdrop{z-index:290}.page .panel-push,.page>.panel-reveal{z-index:1}.page>.panel-cover,.page>.panel-floating{z-index:300}.page.with-panel-closing>.page-content,.page.with-panel-closing>.tabs,.page.with-panel-left-push>.page-content,.page.with-panel-left-push>.tabs,.page.with-panel-left-reveal>.page-content,.page.with-panel-left-reveal>.tabs,.page.with-panel-right-push>.page-content,.page.with-panel-right-push>.tabs,.page.with-panel-right-reveal>.page-content,.page.with-panel-right-reveal>.tabs{transition-duration:var(--f7-panel-transition-duration);transition-property:transform;transition-timing-function:var(--f7-panel-transition-timing-function)}.page.with-panel-left-push>.page-content,.page.with-panel-left-push>.tabs,.page.with-panel-left-reveal>.page-content,.page.with-panel-left-reveal>.tabs{transform:translate3d(var(--f7-panel-left-width,var(--f7-panel-width)),0,0)}.page.with-panel-right-push>.page-content,.page.with-panel-right-push>.tabs,.page.with-panel-right-reveal>.page-content,.page.with-panel-right-reveal>.tabs{transform:translate3d(calc(var(--f7-panel-right-width, var(--f7-panel-width))*-1),0,0)}.with-panel-closing .panel-backdrop-in{opacity:0;pointer-events:auto;visibility:visible}.with-panel-left-cover .panel-backdrop-in,.with-panel-left-floating .panel-backdrop-in,.with-panel-left-push .panel-backdrop-in,.with-panel-left-reveal .panel-backdrop-in,.with-panel-right-cover .panel-backdrop-in,.with-panel-right-floating .panel-backdrop-in,.with-panel-right-push .panel-backdrop-in,.with-panel-right-reveal .panel-backdrop-in{opacity:1;pointer-events:auto;visibility:visible}.with-panel-left-push .panel-backdrop-in,.with-panel-left-reveal .panel-backdrop-in{transform:translate3d(var(--f7-panel-left-width,var(--f7-panel-width)),0,0)}.with-panel-right-push .panel-backdrop-in,.with-panel-right-reveal .panel-backdrop-in{transform:translate3d(calc(var(--f7-panel-right-width, var(--f7-panel-width))*-1),0,0)}.with-panel-left-cover .panel-left,.with-panel-left-push .panel-left{transform:translateZ(0)}.with-panel-left-floating .panel-left{transform:translate3d(8px,0,0)}.with-panel-right-cover .panel-right,.with-panel-right-push .panel-right{transform:translateZ(0)}.with-panel-right-floating .panel-right{transform:translate3d(-8px,0,0)}.panel-resizable{max-width:100%}.panel-resize-handler{cursor:col-resize;display:none;height:100%;position:absolute;top:0;width:6px;z-index:6000}.panel-resizable .panel-resize-handler{display:block}.panel-left.panel-cover .panel-resize-handler,.panel-left.panel-floating .panel-resize-handler{right:-3px}.panel-left.panel-push .panel-resize-handler,.panel-left.panel-reveal .panel-resize-handler{right:0}.panel-right.panel-cover .panel-resize-handler,.panel-right.panel-floating .panel-resize-handler{left:-3px}.panel-right.panel-push .panel-resize-handler,.panel-right.panel-reveal .panel-resize-handler{left:0}.panel-left.panel-in-collapsed~.page-content,.panel-left.panel-in-collapsed~.tabs,.panel-left.panel-in-collapsed~.view,.panel-left.panel-in-collapsed~.views{margin-left:var(--f7-panel-left-collapsed-width,var(--f7-panel-collapsed-width))}.page.with-panel-left-reveal .panel-left.panel-in-collapsed~.page-content,.page.with-panel-left-reveal .panel-left.panel-in-collapsed~.tabs,html.with-panel-left-reveal .panel-left.panel-in-collapsed~.view,html.with-panel-left-reveal .panel-left.panel-in-collapsed~.views{transform:translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width)) - var(--f7-panel-left-collapsed-width, var(--f7-panel-collapsed-width))),0,0)}.panel-right.panel-in-collapsed~.page-content,.panel-right.panel-in-collapsed~.tabs,.panel-right.panel-in-collapsed~.view,.panel-right.panel-in-collapsed~.views{margin-right:var(--f7-panel-right-collapsed-width,var(--f7-panel-collapsed-width))}.page.with-panel-right-reveal .panel-right.panel-in-collapsed~.page-content,.page.with-panel-right-reveal .panel-right.panel-in-collapsed~.tabs,html.with-panel-right-reveal .panel-right.panel-in-collapsed~.view,html.with-panel-right-reveal .panel-right.panel-in-collapsed~.views{transform:translate3d(calc(var(--f7-panel-right-collapsed-width, var(--f7-panel-collapsed-width)) - var(--f7-panel-right-width, var(--f7-panel-width))),0,0)}html.with-modal-popup-push .framework7-root,html.with-modal-popup-push-closing .framework7-root{--f7-panelPushScale:var(--f7-popup-push-scale);--f7-panelPushTransitionDuration:var(--f7-popup-transition-duration);--f7-panelPushTransitionTimingFunction:var(--f7-popup-transition-timing-function);--f7-panelPushBorderRadius:var(--f7-popup-push-border-radius)}html.with-modal-sheet-push .framework7-root,html.with-modal-sheet-push-closing .framework7-root{--f7-panelPushScale:var(--f7-sheet-push-scale);--f7-panelPushTransitionDuration:var(--f7-sheet-transition-duration);--f7-panelPushTransitionTimingFunction:var(--f7-sheet-transition-timing-function);--f7-panelPushBorderRadius:var(--f7-sheet-push-border-radius)}html.with-modal-popup-push .framework7-root>.panel-in,html.with-modal-popup-push .framework7-root>.panel-out,html.with-modal-sheet-push .framework7-root>.panel-in,html.with-modal-sheet-push .framework7-root>.panel-out{transition-duration:var(--f7-panelPushTransitionDuration);transition-timing-function:var(--f7-panelPushTransitionTimingFunction)}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-left,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-left,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-left,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-left,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-left,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-left{border-top-left-radius:var(--f7-panelPushBorderRadius);transform:scale(var(--f7-panelPushScale,1));transform-origin:50vw center}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-left .view,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-left .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-left .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-left .view{border-top-left-radius:var(--f7-panelPushBorderRadius)}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-right,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-right,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-right,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-right,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-right,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-right{border-top-right-radius:var(--f7-panelPushBorderRadius);transform:scale(var(--f7-panelPushScale,1));transform-origin:calc(var(--f7-panel-left-width, var(--f7-panel-width)) - 50vw) center}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-right .view,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-right .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-right .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-right .view{border-top-right-radius:var(--f7-panelPushBorderRadius)}html.with-modal-popup-push .framework7-root>.panel-in.panel-cover.panel-left,html.with-modal-popup-push .framework7-root>.panel-out.panel-cover.panel-left,html.with-modal-sheet-push .framework7-root>.panel-in.panel-cover.panel-left,html.with-modal-sheet-push .framework7-root>.panel-out.panel-cover.panel-left{transform:translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width))*-1),0,0)}html.with-modal-popup-push .framework7-root>.panel-in.panel-cover.panel-right,html.with-modal-popup-push .framework7-root>.panel-out.panel-cover.panel-right,html.with-modal-sheet-push .framework7-root>.panel-in.panel-cover.panel-right,html.with-modal-sheet-push .framework7-root>.panel-out.panel-cover.panel-right{transform:translate3d(var(--f7-panel-right-width,var(--f7-panel-width)),0,0)}html.with-modal-popup-push-closing .framework7-root>.panel-in,html.with-modal-sheet-push-closing .framework7-root>.panel-in{transition-duration:var(--f7-panelPushTransitionDuration);transition-timing-function:var(--f7-panelPushTransitionTimingFunction)}html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-reveal.panel-left,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-reveal.panel-left{transform-origin:50vw center}html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-reveal.panel-right,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-reveal.panel-right{transform-origin:calc(var(--f7-panel-right-width, var(--f7-panel-width)) - 50vw) center}.md .panel-cover{overflow:hidden}.md .panel-cover.panel-left{border-radius:0 16px 16px 0}.md .panel-cover.panel-right{border-radius:16px 0 0 16px}:root{--f7-card-margin-horizontal:16px;--f7-card-margin-vertical:16px;--f7-card-content-padding-horizontal:16px;--f7-card-content-padding-vertical:16px;--f7-card-font-size:inherit;--f7-card-header-text-color:inherit;--f7-card-header-font-weight:400;--f7-card-header-padding-horizontal:16px;--f7-card-footer-font-weight:400;--f7-card-footer-font-size:inherit;--f7-card-footer-padding-horizontal:16px;--f7-card-expandable-font-size:16px;--f7-card-expandable-tablet-width:670px;--f7-card-expandable-tablet-height:670px}.ios{--f7-card-border-radius:8px;--f7-card-box-shadow:0px 1px 2px rgba(0,0,0,0.2);--f7-card-header-font-size:17px;--f7-card-header-padding-vertical:10px;--f7-card-header-min-height:44px;--f7-card-footer-text-color:rgba(0,0,0,0.45);--f7-card-footer-padding-vertical:10px;--f7-card-footer-min-height:44px;--f7-card-expandable-margin-horizontal:20px;--f7-card-expandable-margin-vertical:30px;--f7-card-expandable-box-shadow:0px 20px 40px rgba(0,0,0,0.3);--f7-card-expandable-border-radius:16px;--f7-card-expandable-tablet-border-radius:16px;--f7-card-expandable-header-font-size:27px;--f7-card-expandable-header-font-weight:bold;--f7-card-text-color:inherit;--f7-card-bg-color:#fff;--f7-card-expandable-bg-color:#fff;--f7-card-outline-border-color:rgba(0,0,0,0.12);--f7-card-header-border-color:rgba(0,0,0,0.1);--f7-card-footer-border-color:rgba(0,0,0,0.1)}.ios .dark,.ios.dark{--f7-card-bg-color:#1c1c1d;--f7-card-expandable-bg-color:#1c1c1d;--f7-card-outline-border-color:rgba(255,255,255,0.15);--f7-card-header-border-color:rgba(255,255,255,0.15);--f7-card-footer-border-color:rgba(255,255,255,0.15);--f7-card-footer-text-color:rgba(255,255,255,0.55)}.md{--f7-card-border-radius:16px;--f7-card-box-shadow:0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);--f7-card-header-font-size:22px;--f7-card-header-padding-vertical:16px;--f7-card-header-min-height:48px;--f7-card-footer-padding-vertical:16px;--f7-card-footer-min-height:48px;--f7-card-expandable-margin-horizontal:12px;--f7-card-expandable-margin-vertical:24px;--f7-card-expandable-box-shadow:0px 6px 6px -3px rgba(0,0,0,0.2),0px 10px 14px 1px rgba(0,0,0,0.14),0px 4px 18px 3px rgba(0,0,0,0.12);--f7-card-expandable-border-radius:16px;--f7-card-expandable-tablet-border-radius:16px;--f7-card-expandable-header-font-size:22px;--f7-card-expandable-header-font-weight:500}.md,.md .dark,.md [class*=color-]{--f7-card-bg-color:var(--f7-md-surface-1);--f7-card-expandable-bg-color:var(--f7-md-surface-1);--f7-card-outline-border-color:var(--f7-md-outline);--f7-card-header-border-color:var(--f7-md-outline);--f7-card-footer-border-color:var(--f7-md-outline);--f7-card-text-color:var(--f7-md-on-surface);--f7-card-footer-text-color:var(--f7-md-on-surface-variant)}.card .list>ul:after,.card .list>ul:before,.cards-list>ul:after,.cards-list>ul:before{display:none!important}.card .list ul,.cards-list ul{background:none}.card{background:var(--f7-card-bg-color);border-radius:var(--f7-card-border-radius);color:var(--f7-card-text-color);font-size:var(--f7-card-font-size);margin:var(--f7-card-margin-vertical) calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-right)) var(--f7-card-margin-vertical) calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-left));position:relative}.card .block,.card .list{margin:0}.row:not(.no-gap) .col>.card{margin-left:0;margin-right:0}.card-raised{box-shadow:var(--f7-card-box-shadow)}.card-outline,.ios .card-outline-ios,.md .card-outline-md{border:1px solid var(--f7-card-outline-border-color)}.card-content{position:relative}.card-content-padding{padding:var(--f7-card-content-padding-vertical) var(--f7-card-content-padding-horizontal);position:relative}.card-content-padding>.block,.card-content-padding>.list{margin:calc(var(--f7-card-content-padding-vertical)*-1) calc(var(--f7-card-content-padding-horizontal)*-1)}.card-content-padding>p:first-child{margin-top:0}.card-content-padding>p:last-child{margin-bottom:0}.card-header{color:var(--f7-card-header-text-color);font-size:var(--f7-card-header-font-size);font-weight:var(--f7-card-header-font-weight);min-height:var(--f7-card-header-min-height);padding:var(--f7-card-header-padding-vertical) var(--f7-card-header-padding-horizontal)}.card-dividers .card-header,.card-header-divider .card-header,.card-header.card-header-divider{border-bottom:1px solid var(--f7-card-header-border-color)}.card-footer{color:var(--f7-card-footer-text-color);font-size:var(--f7-card-footer-font-size);font-weight:var(--f7-card-footer-font-weight);min-height:var(--f7-card-footer-min-height);padding:var(--f7-card-footer-padding-vertical) var(--f7-card-footer-padding-horizontal)}.card-dividers .card-footer,.card-footer-divider .card-footer,.card-footer.card-footer-divider{border-top:1px solid var(--f7-card-header-border-color)}.card-footer a.link{overflow:hidden}.card-footer,.card-header{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;position:relative}.card-footer[valign=top],.card-header[valign=top]{align-items:flex-start}.card-footer[valign=bottom],.card-header[valign=bottom]{align-items:flex-end}.card-footer a.link,.card-header a.link{position:relative}.card-footer a.link i.icon,.card-header a.link i.icon{display:block}.card-footer a.icon-only,.card-header a.icon-only{align-items:center;display:flex;justify-content:center;margin:0}.card-header{border-radius:var(--f7-card-border-radius) var(--f7-card-border-radius) 0 0}.card-footer{border-radius:0 0 var(--f7-card-border-radius) var(--f7-card-border-radius)}.card-expandable{background:var(--f7-card-expandable-bg-color);border-radius:var(--f7-card-expandable-border-radius);font-size:var(--f7-card-expandable-font-size);height:300px;margin:var(--f7-card-expandable-margin-vertical) calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-right)) var(--f7-card-expandable-margin-vertical) calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-left));overflow:hidden;position:relative;transform-origin:center center;transition-duration:.2s;transition-property:transform,border-radius;z-index:2}.card-expandable.card-raised{box-shadow:var(--f7-card-expandable-box-shadow)}.card-expandable:not(.card-opened){-webkit-user-select:none;user-select:none}.card-expandable.card-no-transition{transition-duration:0ms}.card-expandable.card-expandable-animate-width .card-content{transition-property:width,transform;width:100%}.card-expandable.active-state{transform:scale(.97) translateZ(0)}.card-expandable .card-opened-fade-in,.card-expandable .card-opened-fade-out{transition-duration:.4s}.card-expandable .card-opened-fade-in{opacity:0;pointer-events:none}.card-expandable .card-content{box-sizing:border-box;height:100vh;left:0;overflow:hidden;pointer-events:none;position:absolute;top:0;transform-origin:center top;transition-property:transform;width:100vw}.card-expandable .card-content .card-content-padding{padding-left:calc(var(--f7-safe-area-left) + var(--f7-card-content-padding-horizontal));padding-right:calc(var(--f7-safe-area-right) + var(--f7-card-content-padding-horizontal))}.card-expandable.card-opened{transition-duration:0ms}.card-expandable.card-closing,.card-expandable.card-opening,.card-expandable.card-transitioning{transition-duration:.4s}.card-expandable.card-opening .card-content{transition-duration:.3s}.card-expandable.card-closing .card-content{transition-duration:.5s}.card-expandable.card-closing,.card-expandable.card-opened,.card-expandable.card-opening{z-index:300}.card-expandable.card-opened,.card-expandable.card-opening{border-radius:0}.card-expandable.card-opened .card-opened-fade-in,.card-expandable.card-opening .card-opened-fade-in{opacity:1;pointer-events:auto}.card-expandable.card-opened .card-opened-fade-out,.card-expandable.card-opening .card-opened-fade-out{opacity:0;pointer-events:none}.card-expandable.card-opened .card-content{-webkit-overflow-scrolling:touch;overflow:auto;pointer-events:auto}.card-expandable .card-header{font-size:var(--f7-card-expandable-header-font-size);font-weight:var(--f7-card-expandable-header-font-weight)}.card-prevent-open{pointer-events:auto}.card-expandable-size{height:0;left:0;opacity:0;pointer-events:none;position:absolute;top:0;visibility:hidden;width:0}@media (min-width:768px) and (min-height:670px){.card-expandable:not(.card-tablet-fullscreen){max-width:var(--f7-card-expandable-tablet-width)}.card-expandable:not(.card-tablet-fullscreen).card-opened,.card-expandable:not(.card-tablet-fullscreen).card-opening{border-radius:var(--f7-card-expandable-tablet-border-radius)}.card-expandable:not(.card-tablet-fullscreen):not(.card-expandable-animate-width) .card-content{width:var(--f7-card-expandable-tablet-width)}.card-expandable:not(.card-tablet-fullscreen) .card-expandable-size{height:var(--f7-card-expandable-tablet-height);width:var(--f7-card-expandable-tablet-width)}}.page.page-with-card-opened .page-content{overflow:hidden}.card-backdrop{background:rgba(0,0,0,.2);height:100%;left:0;opacity:0;pointer-events:none;position:fixed;top:0;width:100%;z-index:299}.card-backdrop-in{animation:card-backdrop-fade-in .4s forwards;pointer-events:auto}.card-backdrop-out{animation:card-backdrop-fade-out .4s forwards}@supports ((-webkit-backdrop-filter:blur(15px)) or (backdrop-filter:blur(15px))){.card-backdrop{-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background:transparent}}@keyframes card-backdrop-fade-in{0%{opacity:0}to{opacity:1}}@keyframes card-backdrop-fade-out{0%{opacity:1}to{opacity:0}}:root{--f7-chip-font-size:14px;--f7-chip-media-font-size:16px;--f7-chip-delete-button-color:#000}:root .dark,:root.dark{--f7-chip-delete-button-color:#fff}.ios{--f7-chip-height:28px;--f7-chip-media-size:28px;--f7-chip-padding-horizontal:10px;--f7-chip-border-radius:28px;--f7-chip-font-weight:normal;--f7-chip-outline-border-color:rgba(0,0,0,0.12);--f7-chip-bg-color:rgba(0,0,0,0.12);--f7-chip-text-color:#000;--f7-chip-outline-text-color:#000}.ios .dark,.ios.dark{--f7-chip-bg-color:#333;--f7-chip-text-color:#fff;--f7-chip-outline-text-color:#fff;--f7-chip-outline-border-color:rgba(255,255,255,0.12)}.md{--f7-chip-font-weight:500;--f7-chip-media-size:24px;--f7-chip-height:32px;--f7-chip-padding-horizontal:12px;--f7-chip-border-radius:8px}.md,.md .dark,.md [class*=color-]{--f7-chip-bg-color:var(--f7-md-secondary-container);--f7-chip-text-color:var(--f7-md-on-secondary-container);--f7-chip-outline-text-color:var(--f7-md-on-surface);--f7-chip-outline-border-color:var(--f7-md-outline)}.chip{background-color:var(--f7-chip-bg-color);border-radius:var(--f7-chip-border-radius);color:var(--f7-chip-text-color);display:inline-flex;font-size:var(--f7-chip-font-size);font-weight:var(--f7-chip-font-weight);height:var(--f7-chip-height);line-height:var(--f7-chip-height);margin:2px 0;padding-left:var(--f7-chip-padding-horizontal);padding-right:var(--f7-chip-padding-horizontal);position:relative}.chip,.chip-media{align-items:center;box-sizing:border-box;vertical-align:middle}.chip-media{border-radius:50%;border-radius:var(--f7-chip-media-size);color:#fff;display:flex;flex-shrink:0;font-size:var(--f7-chip-media-font-size);height:var(--f7-chip-media-size);justify-content:center;line-height:var(--f7-chip-media-size);text-align:center;width:var(--f7-chip-media-size)}.chip-media i.icon{font-size:calc(var(--f7-chip-media-size) - 8px);height:calc(var(--f7-chip-media-size) - 8px)}.chip-media img{border-radius:50%;display:block;height:auto;max-height:100%;max-width:100%;width:auto}.chip-media+.chip-label{margin-left:4px}.chip-label{flex-shrink:1;min-width:0;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}.chip-delete{background-repeat:no-repeat;color:var(--f7-chip-delete-button-color);cursor:pointer;flex-shrink:0;height:24px;opacity:.54;position:relative;text-align:center;width:24px}.chip-delete:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;line-height:24px;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.chip .chip-delete.active-state{opacity:1}.chip-outline,.ios .chip-outline-ios,.md .chip-outline-md{background:none;border:1px solid var(--f7-chip-outline-border-color);color:var(--f7-chip-outline-text-color)}.ios .chip[class*=color-]{--f7-chip-bg-color:var(--f7-theme-color);--f7-chip-text-color:#fff}.ios .chip-outline-ios[class*=color-],.ios .chip-outline[class*=color-]{--f7-chip-outline-border-color:var(--f7-theme-color);--f7-chip-outline-text-color:var(--f7-theme-color)}.ios .chip-media{margin-left:calc(var(--f7-chip-padding-horizontal)*-1)}.ios .chip-delete{margin-right:calc(var(--f7-chip-padding-horizontal)*-1)}.ios .chip-delete:after{content:"delete_round_ios";font-size:10px}.md .chip-media{margin-left:calc(var(--f7-chip-padding-horizontal)*-1 + 4px)}.md .chip-label+.chip-delete{margin-left:4px}.md .chip-delete{margin-right:calc(var(--f7-chip-padding-horizontal)*-1 + 4px)}.md .chip-delete:after{content:"delete_round_md";font-size:16px}:root{--f7-input-bg-color:transparent;--f7-label-font-weight:400;--f7-label-height:16px;--f7-label-font-size:12px;--f7-floating-label-scale:1.33333;--f7-input-padding-left:0px;--f7-input-padding-right:0px;--f7-input-error-text-color:#ff3b30;--f7-input-error-font-size:12px;--f7-input-error-line-height:1.4;--f7-input-error-font-weight:400;--f7-input-info-font-size:12px;--f7-input-info-line-height:1.4;--f7-textarea-height:100px}.ios{--f7-input-item-bg-color:transparent;--f7-input-item-border-radius:0px;--f7-input-height:40px;--f7-input-font-size:16px;--f7-input-placeholder-color:#a9a9a9;--f7-textarea-padding-vertical:8px;--f7-label-text-color:inherit;--f7-input-clear-button-size:14px;--f7-input-outline-border-radius:8px;--f7-input-text-color:#000000;--f7-input-info-text-color:rgba(0,0,0,0.45);--f7-input-clear-button-color:rgba(0,0,0,0.45);--f7-input-outline-border-color:#bbb}.ios .dark,.ios.dark{--f7-input-text-color:#fff;--f7-input-info-text-color:rgba(255,255,255,0.55);--f7-input-clear-button-color:rgba(255,255,255,0.5);--f7-input-outline-border-color:#444}.md{--f7-input-item-border-radius:4px 4px 0 0;--f7-input-height:24px;--f7-input-font-size:16px;--f7-textarea-padding-vertical:0px;--f7-input-outline-border-radius:4px;--f7-floating-label-scale:1.33333;--f7-input-clear-button-size:24px;--f7-input-info-text-color:rgba(0,0,0,0.45)}.md .dark,.md.dark{--f7-input-info-text-color:rgba(255,255,255,0.45)}.md,.md .dark,.md [class*=color-]{--f7-input-placeholder-color:var(--f7-md-on-surface-variant);--f7-input-item-bg-color:var(--f7-md-surface-variant);--f7-input-border-color:var(--f7-md-outline);--f7-input-clear-button-color:var(--f7-md-on-surface-variant);--f7-input-outline-border-color:var(--f7-md-outline);--f7-input-text-color:var(--f7-md-on-surface);--f7-label-text-color:var(--f7-md-on-surface-variant)}input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],select,textarea{-webkit-appearance:none;appearance:none;background:none;border:none;border-radius:0;box-shadow:none;box-sizing:border-box;color:inherit;display:block;font-family:inherit;font-size:inherit;margin:0;outline:0;padding:0;resize:none}input[type=date]:-internal-autofill-selected,input[type=datetime-local]:-internal-autofill-selected,input[type=email]:-internal-autofill-selected,input[type=month]:-internal-autofill-selected,input[type=number]:-internal-autofill-selected,input[type=password]:-internal-autofill-selected,input[type=search]:-internal-autofill-selected,input[type=tel]:-internal-autofill-selected,input[type=text]:-internal-autofill-selected,input[type=time]:-internal-autofill-selected,input[type=url]:-internal-autofill-selected,select:-internal-autofill-selected,textarea:-internal-autofill-selected{background-color:initial!important;transition:background-color 5000s ease-in-out 0s!important}input[type=date]:-webkit-autofill,input[type=datetime-local]:-webkit-autofill,input[type=email]:-webkit-autofill,input[type=month]:-webkit-autofill,input[type=number]:-webkit-autofill,input[type=password]:-webkit-autofill,input[type=search]:-webkit-autofill,input[type=tel]:-webkit-autofill,input[type=text]:-webkit-autofill,input[type=time]:-webkit-autofill,input[type=url]:-webkit-autofill,select:-webkit-autofill,textarea:-webkit-autofill{background-color:initial!important;-webkit-transition:background-color 5000s ease-in-out 0s!important;transition:background-color 5000s ease-in-out 0s!important}input[type=date]:-webkit-autofill-and-obscured,input[type=date]:autofill,input[type=datetime-local]:-webkit-autofill-and-obscured,input[type=datetime-local]:autofill,input[type=email]:-webkit-autofill-and-obscured,input[type=email]:autofill,input[type=month]:-webkit-autofill-and-obscured,input[type=month]:autofill,input[type=number]:-webkit-autofill-and-obscured,input[type=number]:autofill,input[type=password]:-webkit-autofill-and-obscured,input[type=password]:autofill,input[type=search]:-webkit-autofill-and-obscured,input[type=search]:autofill,input[type=tel]:-webkit-autofill-and-obscured,input[type=tel]:autofill,input[type=text]:-webkit-autofill-and-obscured,input[type=text]:autofill,input[type=time]:-webkit-autofill-and-obscured,input[type=time]:autofill,input[type=url]:-webkit-autofill-and-obscured,input[type=url]:autofill,select:-webkit-autofill-and-obscured,select:autofill,textarea:-webkit-autofill-and-obscured,textarea:autofill{background-color:initial!important;-webkit-transition:background-color 5000s ease-in-out 0s!important;transition:background-color 5000s ease-in-out 0s!important}.textarea-resizable-shadow{left:-1000px;opacity:0;pointer-events:none;position:absolute;top:-1000px;visibility:hidden;z-index:-1000}.list input[type=date],.list input[type=datetime-local],.list input[type=email],.list input[type=month],.list input[type=number],.list input[type=password],.list input[type=search],.list input[type=tel],.list input[type=text],.list input[type=time],.list input[type=url],.list select{background-color:var(--f7-input-bg-color,transparent);color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);height:var(--f7-input-height);padding-left:var(--f7-input-padding-left);padding-right:var(--f7-input-padding-right);width:100%}.list input[type=date]::placeholder,.list input[type=datetime-local]::placeholder,.list input[type=email]::placeholder,.list input[type=month]::placeholder,.list input[type=number]::placeholder,.list input[type=password]::placeholder,.list input[type=search]::placeholder,.list input[type=tel]::placeholder,.list input[type=text]::placeholder,.list input[type=time]::placeholder,.list input[type=url]::placeholder,.list select::placeholder{color:var(--f7-input-placeholder-color)}.list textarea{background-color:var(--f7-input-bg-color,transparent);color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);height:var(--f7-textarea-height);line-height:1.4;padding:var(--f7-textarea-padding-vertical) var(--f7-input-padding-right) var(--f7-textarea-padding-vertical) var(--f7-input-padding-left);resize:none;width:100%}.list textarea::placeholder{color:var(--f7-input-placeholder-color)}.list textarea.resizable{height:calc(var(--f7-input-height) + var(--f7-textarea-padding-vertical)*2)}.list input[type=date],.list input[type=datetime-local],.list input[type=month],.list input[type=time]{line-height:var(--f7-input-height)}.list .item-floating-label,.list .item-label{color:var(--f7-label-text-color);flex-shrink:0;font-size:var(--f7-label-font-size);font-weight:var(--f7-label-font-weight);line-height:var(--f7-label-height);transition-duration:.2s;transition-property:transform,color;vertical-align:top;width:auto}.list .item-floating-label{color:var(--f7-input-placeholder-color);left:var(--f7-input-padding-left);max-width:calc(100%/var(--f7-floating-label-scale));pointer-events:none;transform-origin:left center}.list .item-floating-label~.item-input-wrap input::placeholder,.list .item-floating-label~.item-input-wrap textarea::placeholder{opacity:0;transition-duration:.1s}.list .item-floating-label~.item-input-wrap input.input-focused::placeholder,.list .item-floating-label~.item-input-wrap textarea.input-focused::placeholder{opacity:1;transition-duration:.3s}.list .item-input-with-value .item-floating-label{color:var(--f7-label-text-color)}.list .item-input-focused .item-floating-label,.list .item-input-with-value .item-floating-label{transform:scale(1) translateY(0)!important}.list .item-input-wrap{flex-shrink:1;position:relative;width:100%}.input,.item-input{position:relative}.item-input .item-inner{align-items:flex-start;display:flex;flex-direction:column;justify-content:center}.input-error-message,.item-input-error-message{box-sizing:border-box;color:var(--f7-input-error-text-color);display:none;font-size:var(--f7-input-error-font-size);font-weight:var(--f7-input-error-font-weight);line-height:var(--f7-input-error-line-height)}.input-info,.item-input-info{color:var(--f7-input-info-text-color);font-size:var(--f7-input-info-font-size);line-height:var(--f7-input-info-line-height)}.input-invalid .input-error-message,.input-invalid .item-input-error-message,.item-input-invalid .input-error-message,.item-input-invalid .item-input-error-message{display:block}.input-invalid .input-info,.input-invalid .item-input-info,.item-input-invalid .input-info,.item-input-invalid .item-input-info{display:none}.input{position:relative}.input input,.input select,.input textarea{width:100%}.input-clear-button{background:none;border:none;color:var(--f7-input-clear-button-color);cursor:pointer;height:var(--f7-input-clear-button-size);margin:0;margin-top:calc(var(--f7-input-clear-button-size)*-1/2);opacity:0;outline:0;padding:0;pointer-events:none;position:absolute;right:0;top:50%;transition-duration:.1s;visibility:hidden;width:var(--f7-input-clear-button-size);z-index:1}.input-clear-button:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.input-clear-button:before{content:"";left:50%;position:absolute;top:50%}.item-input-wrap .input-clear-button{top:calc(var(--f7-input-height)/2)}.input-clear-button.active-state{opacity:.75!important}.input-with-value .input-clear-button,.input-with-value~.input-clear-button,.item-input-with-value .input-clear-button{opacity:1;pointer-events:auto;visibility:visible}.input-dropdown,.input-dropdown-wrap{position:relative}.input-dropdown-wrap:before,.input-dropdown:before{border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #727272;content:"";height:0;margin-top:-2px;pointer-events:none;position:absolute;right:6px;top:50%;width:0}.input-dropdown input,.input-dropdown select,.input-dropdown textarea,.input-dropdown-wrap input,.input-dropdown-wrap select,.input-dropdown-wrap textarea{padding-right:calc(20px + var(--f7-input-padding-right))}.input-outline:after,.item-input-outline .item-content:after,.item-input-outline.item-content:after{border:1px solid var(--f7-input-outline-border-color);border-radius:var(--f7-input-outline-border-radius);bottom:8px;box-sizing:border-box;content:"";left:0;pointer-events:none;position:absolute;right:0;top:8px;transition-duration:.2s}.input-outline .item-floating-label,.input-outline .item-label,.item-input-outline .item-content .item-floating-label,.item-input-outline .item-content .item-label,.item-input-outline.item-content .item-floating-label,.item-input-outline.item-content .item-label{background:var(--f7-page-bg-color);padding:4px;pointer-events:none;z-index:1}.input-outline.input-focused:after,.input-outline.item-input-focused:after,.item-input-outline .item-content.input-focused:after,.item-input-outline .item-content.item-input-focused:after,.item-input-outline.item-content.input-focused:after,.item-input-outline.item-content.item-input-focused:after{border-color:var(--f7-input-outline-invalid-border-color,var(--f7-theme-color));border-width:2px}.input-outline.input-invalid:after,.input-outline.item-input-invalid:after,.item-input-outline .item-content.input-invalid:after,.item-input-outline .item-content.item-input-invalid:after,.item-input-outline.item-content.input-invalid:after,.item-input-outline.item-content.item-input-invalid:after{border-color:var(--f7-input-outline-invalid-border-color,var(--f7-input-error-text-color));border-width:2px}.block-strong .item-input-outline .item-floating-label,.block-strong .item-input-outline .item-label,.ios .block-strong-ios .item-input-outline .item-floating-label,.ios .block-strong-ios .item-input-outline .item-label,.md .block-strong-md .item-input-outline .item-floating-label,.md .block-strong-md .item-input-outline .item-label{background:var(--f7-block-strong-bg-color)!important}.ios .list-strong-ios .item-input-outline .item-floating-label,.ios .list-strong-ios .item-input-outline .item-label,.list-strong .item-input-outline .item-floating-label,.list-strong .item-input-outline .item-label,.md .list-strong-md .item-input-outline .item-floating-label,.md .list-strong-md .item-input-outline .item-label{background:var(--f7-list-strong-bg-color)!important}.dark option{background-color:var(--f7-page-bg-color)}.ios .item-floating-label+.item-input-wrap,.ios .item-label+.item-input-wrap{margin-top:0}.ios .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height) + 25%))}.ios .item-input-focused .item-floating-label{color:var(--f7-label-text-color)}.ios .item-input .item-media{align-self:flex-start}.ios .item-input-wrap{margin-bottom:calc(var(--f7-list-item-padding-vertical)*-1);margin-top:calc(var(--f7-list-item-padding-vertical)*-1)}.ios .item-input:not(.item-input-outline) .item-content,.ios .item-input:not(.item-input-outline).item-content{background:var(--f7-input-item-bg-color)}.ios .input-error-message,.ios .input-info,.ios .item-input-error-message,.ios .item-input-info{margin-bottom:6px;margin-top:-8px;position:relative}.ios .item-input-focused .item-floating-label,.ios .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-label-text-color))}.ios .item-input-focused .item-inner:after{background:var(--f7-input-focused-border-color,var(--f7-list-item-border-color))}.ios .item-input-invalid .item-floating-label,.ios .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-label-text-color))}.ios .item-input-invalid .item-inner:after{background:var(--f7-input-invalid-border-color,var(--f7-list-item-border-color))}.ios .input-invalid input,.ios .input-invalid select,.ios .input-invalid textarea,.ios .item-input-invalid input,.ios .item-input-invalid select,.ios .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-error-text-color))}.ios .input-clear-button:after{content:"delete_round_ios";font-size:calc(var(--f7-input-clear-button-size)/1.4);line-height:1.4}.ios .input-clear-button:before{height:44px;margin-left:-22px;margin-top:-22px;width:44px}.ios .item-input-outline .item-content,.ios .item-input-outline.item-content{margin-left:16px;margin-right:16px;padding-bottom:8px;padding-top:8px}.ios li.item-input-outline:first-child,.ios li:first-child>.item-input-outline{padding-top:16px}.ios li.item-input-outline:first-child:after,.ios li:first-child>.item-input-outline:after{top:16px}.ios li.item-input-outline:last-child,.ios li:last-child>.item-input-outline{padding-bottom:16px}.ios li.item-input-outline:last-child:after,.ios li:last-child>.item-input-outline:after{bottom:16px}.ios .input-outline .item-inner,.ios .item-input-outline .item-content .item-inner,.ios .item-input-outline.item-content .item-inner{display:block;padding-bottom:0;padding-top:0}.ios .input-outline .item-input-wrap,.ios .item-input-outline .item-content .item-input-wrap,.ios .item-input-outline.item-content .item-input-wrap{margin-top:2px}.ios .input-outline .item-title+.item-input-wrap,.ios .item-input-outline .item-content .item-title+.item-input-wrap,.ios .item-input-outline.item-content .item-title+.item-input-wrap{margin-top:-22px}.ios .input-outline .item-floating-label,.ios .input-outline .item-label,.ios .item-input-outline .item-content .item-floating-label,.ios .item-input-outline .item-content .item-label,.ios .item-input-outline.item-content .item-floating-label,.ios .item-input-outline.item-content .item-label{display:inline-flex;margin:-8px -4px -4px;top:-4px}.ios .input-outline .item-floating-label,.ios .item-input-outline .item-content .item-floating-label,.ios .item-input-outline.item-content .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height)))}.md .item-input-wrap{min-height:var(--f7-input-height)}.md .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc((var(--f7-input-height)/2)/var(--f7-floating-label-scale)))}.md .item-input .item-inner:after{display:none!important}.md .item-input .item-content,.md .item-input.item-content{margin-left:16px;margin-right:16px;padding-bottom:8px;padding-top:8px}.md .input:after{background-color:var(--f7-input-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform:scaleY(1)!important;transform-origin:50% 100%;transition-duration:.2s;width:100%;z-index:15}.md .input.input-focused:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color));transform:scaleY(2)!important}.md .input.input-invalid:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color));transform:scaleY(2)!important}.md .item-input:not(.item-input-outline) .item-content:after,.md .item-input:not(.item-input-outline).item-content:after{background-color:var(--f7-input-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.md .item-input:not(.item-input-outline) .item-content:before,.md .item-input:not(.item-input-outline).item-content:before{background:var(--f7-input-item-bg-color);border-radius:var(--f7-input-item-border-radius);bottom:8px;content:"";left:0;pointer-events:none;position:absolute;right:0;top:8px}.md .item-input:not(.item-input-outline) .item-content:after,.md .item-input:not(.item-input-outline).item-content:after{bottom:8px;transform:scaleY(1)!important;transition-duration:.2s}.md .item-input:not(.item-input-outline) .item-content.item-input-focused:after,.md .item-input:not(.item-input-outline).item-content.item-input-focused:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color));transform:scaleY(2)!important}.md .item-input:not(.item-input-outline) .item-content.input-invalid:after,.md .item-input:not(.item-input-outline) .item-content.item-input-invalid:after,.md .item-input:not(.item-input-outline).item-content.input-invalid:after,.md .item-input:not(.item-input-outline).item-content.item-input-invalid:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color));transform:scaleY(2)!important}.md .input-outline .item-inner,.md .item-input-outline .item-content .item-inner,.md .item-input-outline.item-content .item-inner{padding-bottom:16px;padding-top:16px}.md .input-outline .item-floating-label,.md .input-outline .item-label,.md .item-input-outline .item-content .item-floating-label,.md .item-input-outline .item-content .item-label,.md .item-input-outline.item-content .item-floating-label,.md .item-input-outline.item-content .item-label{--label-height:calc(var(--f7-label-height) + 8px);margin:calc(-16px - var(--label-height)/2) -4px 4px}.md .input-outline .item-floating-label,.md .item-input-outline .item-content .item-floating-label,.md .item-input-outline.item-content .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-input-height)/2 + 8px))}.md .input-with-error-message,.md .input-with-info,.md .item-input-with-error-message,.md .item-input-with-info{padding-bottom:24px!important}.md .input-error-message,.md .input-info,.md .item-input-error-message,.md .item-input-info{left:0;overflow:hidden;position:absolute;text-overflow:ellipsis;top:100%;white-space:nowrap;width:100%}.md .item-input-focused .item-floating-label,.md .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-theme-color))}.md .input-focused:not(.input-outline):after,.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color))}.md .input-focused:not(.input-outline):after,.md .input-invalid:not(.input-outline):after,.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after,.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after{transform:scaleY(2)!important}.md .input-invalid:not(.input-outline):after,.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color))}.md .item-input-invalid .item-floating-label,.md .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-input-error-text-color))}.md .input-invalid input,.md .input-invalid select,.md .input-invalid textarea,.md .item-input-invalid input,.md .item-input-invalid select,.md .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-text-color))}.md .input-clear-button:after{content:"delete_round_md";font-size:var(--f7-input-clear-button-size);line-height:1}.md .input-clear-button:before{height:48px;margin-left:-24px;margin-top:-24px;width:48px}:root{--f7-checkbox-icon-color:#fff;--f7-checkbox-extra-margin:0px}:root .dark,:root.dark{--f7-checkbox-inactive-color:rgba(255,255,255,0.3);--f7-checkbox-icon-color:#000}.ios{--f7-checkbox-size:22px;--f7-checkbox-border-radius:50%;--f7-checkbox-border-width:1px;--f7-checkbox-inactive-color:#c7c7cc}.md{--f7-checkbox-size:18px;--f7-checkbox-border-radius:2px;--f7-checkbox-border-width:2px;--f7-checkbox-inactive-color:#6d6d6d}.checkbox{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.5);background-color:initial;display:inline-block;position:relative;vertical-align:middle;z-index:1}.checkbox i,.icon-checkbox{border:var(--f7-checkbox-border-width) solid var(--f7-checkbox-inactive-color);border-radius:var(--f7-checkbox-border-radius);box-sizing:border-box;display:block;flex-shrink:0;height:var(--f7-checkbox-size);position:relative;width:var(--f7-checkbox-size)}.checkbox i:after,.icon-checkbox:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-checkbox-icon-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;height:var(--f7-checkbox-size);left:calc(0px - var(--f7-checkbox-border-width));letter-spacing:normal;line-height:1;line-height:var(--f7-checkbox-size);opacity:0;position:relative;text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:calc(0px - var(--f7-checkbox-border-width));transition-property:opacity;white-space:nowrap;width:100%;width:var(--f7-checkbox-size)}.checkbox i.color-white,.color-white .checkbox i,.color-white .icon-checkbox,.icon-checkbox.color-white{--f7-theme-color:#fff;--f7-checkbox-icon-color:#000}.checkbox i.color-black,.color-black .checkbox i,.color-black .icon-checkbox,.icon-checkbox.color-black{--f7-theme-color:#000;--f7-checkbox-icon-color:#fff}.checkbox input[type=checkbox]:not(:checked)~i:after,label.item-checkbox input[type=checkbox]:not(:checked)~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:not(:checked)~.icon-checkbox:after{font-size:0}.checkbox input[type=checkbox]:checked~i,.checkbox input[type=checkbox]:indeterminate~i,label.item-checkbox input[type=checkbox]:checked~* .icon-checkbox,label.item-checkbox input[type=checkbox]:checked~.icon-checkbox,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox{background-color:var(--f7-checkbox-active-color,var(--f7-theme-color));border-color:var(--f7-checkbox-active-color,var(--f7-theme-color))}.checkbox input[type=checkbox]:checked~i:after,.checkbox input[type=checkbox]:indeterminate~i:after,label.item-checkbox input[type=checkbox]:checked~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:checked~.icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{opacity:1}.checkbox input[type=checkbox]:indeterminate~i:after,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{background:var(--f7-checkbox-icon-color);border-radius:2px;content:"";font-size:0;height:2px;left:15%;margin-top:-1px;position:absolute;top:50%;transition:0ms;width:70%}.checkbox,label.item-checkbox{cursor:pointer}.checkbox input[type=checkbox],.checkbox input[type=radio],label.item-checkbox input[type=checkbox],label.item-checkbox input[type=radio]{display:none}label.item-checkbox{transition-duration:.3s}label.item-checkbox .item-content .item-media,label.item-checkbox.item-content .item-media{align-self:center}label.item-checkbox>.icon-checkbox{margin-right:calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin))}label.item-checkbox.active-state{background-color:var(--f7-list-link-pressed-bg-color)}label.item-checkbox.active-state:after{background-color:initial}.disabled label.item-checkbox,label.item-checkbox.disabled{opacity:.55;opacity:.55!important;pointer-events:none;pointer-events:none!important}label.item-checkbox.item-checkbox-icon-end .item-inner{padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right) + var(--f7-checkbox-size) + 16px)}label.item-checkbox.item-checkbox-icon-end input[type=checkbox]~.icon-checkbox{margin-right:0;position:absolute;right:calc(var(--f7-safe-area-right) + 16px)}.ios .checkbox i:after,.ios .icon-checkbox:after{content:"checkbox_ios";font-size:21px}.ios label.item-checkbox.active-state{transition-duration:0ms}.ios .checkbox input[type=checkbox]:indeterminate~i:after,.ios label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,.ios label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{height:2px;margin-top:-1px}.md .checkbox i,.md .icon-checkbox{transition-duration:.2s}.md .checkbox i:after,.md .icon-checkbox:after{content:"checkbox_md";font-size:15px;transition-duration:.2s}.md label.item-checkbox{overflow:hidden;position:relative;z-index:0}:root{--f7-radio-border-radius:50%;--f7-radio-extra-margin:0px}:root .dark,:root.dark{--f7-radio-inactive-color:rgba(255,255,255,0.3)}.ios{--f7-radio-size:22px;--f7-radio-border-width:1px;--f7-radio-inactive-color:#c7c7cc}.md{--f7-radio-size:20px;--f7-radio-border-width:2px;--f7-radio-inactive-color:#6d6d6d}.radio{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.5);display:inline-block;position:relative;vertical-align:middle;z-index:1}.icon-radio{border-radius:var(--f7-radio-border-radius);box-sizing:border-box;display:block;flex-shrink:0;height:var(--f7-radio-size);position:relative;width:var(--f7-radio-size)}.color-white .icon-radio,.color-white .radio,.icon-radio.color-white,.radio.color-white{--f7-theme-color:#fff}.color-black .icon-radio,.color-black .radio,.icon-radio.color-black,.radio.color-black{--f7-theme-color:#000}.md .icon-radio,.radio .icon-radio{border:var(--f7-radio-border-width) solid var(--f7-radio-inactive-color)}.radio,label.item-radio{cursor:pointer}.radio input[type=checkbox],.radio input[type=radio],label.item-radio input[type=checkbox],label.item-radio input[type=radio]{display:none}label.item-radio{transition-duration:.3s}label.item-radio .item-content .item-media,label.item-radio.item-content .item-media{align-self:center}label.item-radio.active-state{background-color:var(--f7-list-link-pressed-bg-color)}label.item-radio.active-state:after{background-color:initial}.disabled label.item-radio,label.item-radio.disabled{opacity:.55;opacity:.55!important;pointer-events:none;pointer-events:none!important}.ios .icon-radio:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-radio-active-color,var(--f7-theme-color));content:"radio_ios";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;height:calc(var(--f7-radio-size) - var(--f7-radio-border-width)*2);letter-spacing:normal;line-height:1;line-height:calc(var(--f7-radio-size) - var(--f7-radio-border-width)*2 + 1px);opacity:0;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%;width:calc(var(--f7-radio-size) - var(--f7-radio-border-width)*2)}.ios .radio input[type=radio]:checked~.icon-radio:after,.ios label.item-radio input[type=radio]:checked~* .icon-radio:after,.ios label.item-radio input[type=radio]:checked~.icon-radio:after{opacity:1}.ios .radio input[type=radio]:checked~.icon-radio{border-color:var(--f7-radio-active-color,var(--f7-theme-color))}.ios label.item-radio:not(.item-radio-icon-start) input[type=radio]~.icon-radio{margin-top:-11px;position:absolute;right:calc(var(--f7-safe-area-right) + 10px);top:50%}.ios label.item-radio:not(.item-radio-icon-start) .item-inner{padding-right:calc(var(--f7-safe-area-right) + 36px)}.ios label.item-radio-icon-start>.icon-radio{margin-right:calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin))}.ios label.item-radio.active-state{transition-duration:0ms}.md .icon-radio,.md .icon-radio:after{transition-duration:.2s}.md .icon-radio:after{background-color:var(--f7-radio-active-color,var(--f7-theme-color));border-radius:50%;content:"";height:10px;left:50%;margin-left:-5px;margin-top:-5px;position:absolute;top:50%;transform:scale(0);width:10px}.md .radio input[type=radio]:checked~.icon-radio,.md label.item-radio input[type=radio]:checked~* .icon-radio,.md label.item-radio input[type=radio]:checked~.icon-radio{border-color:var(--f7-radio-active-color,var(--f7-theme-color))}.md .radio input[type=radio]:checked~.icon-radio:after,.md label.item-radio input[type=radio]:checked~* .icon-radio:after,.md label.item-radio input[type=radio]:checked~.icon-radio:after{background-color:var(--f7-radio-active-color,var(--f7-theme-color));transform:scale(1)}.md label.item-radio{overflow:hidden;position:relative;z-index:0}.md label.item-radio:not(.item-radio-icon-end)>.icon-radio{margin-right:calc(var(--f7-list-item-media-margin) + var(--f7-radio-extra-margin))}.md label.item-radio-icon-end input[type=radio]~.icon-radio{margin-top:-10px;position:absolute;right:calc(var(--f7-safe-area-right) + 16px);top:50%}.md label.item-radio-icon-end .item-inner{padding-right:calc(var(--f7-safe-area-right) + 52px)}.ios{--f7-toggle-width:52px;--f7-toggle-height:32px;--f7-toggle-inactive-knob-bg-color:#fff;--f7-toggle-active-knob-bg-color:#fff;--f7-toggle-inactive-border-color:#e5e5e5;--f7-toggle-inactive-bg-color:#fff}.ios .dark,.ios.dark{--f7-toggle-inactive-border-color:#555;--f7-toggle-inactive-bg-color:#555}.md{--f7-toggle-width:52px;--f7-toggle-height:32px}.md,.md .dark,.md [class*=color-]{--f7-toggle-inactive-bg-color:var(--f7-md-surface-variant);--f7-toggle-active-bg-color:var(--f7-theme-color);--f7-toggle-inactive-knob-bg-color:var(--f7-md-outline);--f7-toggle-active-knob-bg-color:var(--f7-md-on-primary);--f7-toggle-inactive-border-color:var(--f7-md-outline);--f7-toggle-active-border-color:var(--f7-theme-color)}.toggle,.toggle-icon{border-radius:var(--f7-toggle-height);height:var(--f7-toggle-height);width:var(--f7-toggle-width)}.toggle{align-self:center;box-sizing:border-box;display:inline-block;position:relative;-webkit-user-select:none;user-select:none;vertical-align:middle}.toggle input[type=checkbox]{display:none}.toggle input[disabled]~.toggle-icon{pointer-events:none}.toggle-icon{-webkit-appearance:none;appearance:none;border:none;box-sizing:border-box;cursor:pointer;display:block;margin:0;padding:0;position:relative;transition:.3s;z-index:0}.toggle-icon:after,.toggle-icon:before{content:""}.toggle-icon:after{position:absolute;transform:translateX(0);transition-duration:.3s;z-index:2}.ios .toggle{background:var(--f7-toggle-inactive-border-color)}.ios .toggle input[type=checkbox]:checked+.toggle-icon{background:var(--f7-toggle-active-color,var(--f7-theme-color))}.ios .toggle input[type=checkbox]:checked+.toggle-icon:before{background:var(--f7-toggle-active-bg-color,var(--f7-theme-color));transform:scale(0)}.ios .toggle input[type=checkbox]:checked+.toggle-icon:after{background:var(--f7-toggle-active-knob-bg-color);transform:translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height)))}.ios .toggle-icon{background:var(--f7-toggle-border-color)}.ios .toggle-icon:before{background:var(--f7-toggle-inactive-bg-color);border-radius:var(--f7-toggle-height);box-sizing:border-box;position:absolute;transform:scale(1);transition-duration:.3s;width:calc(var(--f7-toggle-width) - 4px);z-index:1}.ios .toggle-icon:after,.ios .toggle-icon:before{height:calc(var(--f7-toggle-height) - 4px);left:2px;top:2px}.ios .toggle-icon:after{background:var(--f7-toggle-inactive-knob-bg-color);border-radius:calc(var(--f7-toggle-height) - 4px);box-shadow:0 2px 4px rgba(0,0,0,.3);width:calc(var(--f7-toggle-height) - 4px)}.ios .toggle-active-state input[type=checkbox]:not(:checked)+.toggle-icon:before{transform:scale(0)}.ios .toggle-active-state input[type=checkbox]+.toggle-icon:after{width:calc(var(--f7-toggle-height) + 4px)}.ios .toggle-active-state input[type=checkbox]:checked+.toggle-icon:after{transform:translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height) - 8px))}.md .toggle input[type=checkbox]:checked+.toggle-icon{background:var(--f7-toggle-active-bg-color);border-color:var(--f7-toggle-active-border-color)}.md .toggle input[type=checkbox]:checked+.toggle-icon:after{background:var(--f7-toggle-active-knob-bg-color);transform:translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height))) scale(1)}.md .toggle.active-state input[type=checkbox]:checked+.toggle-icon:after{transform:translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height))) scale(1.1)}.md .toggle-icon{background:var(--f7-toggle-inactive-bg-color);border:2px solid var(--f7-toggle-inactive-border-color)}.md .toggle-icon:after{background:var(--f7-toggle-inactive-knob-bg-color);border-radius:var(--f7-toggle-height);height:calc(var(--f7-toggle-height) - 8px);left:2px;top:2px;transform:scale(.666);width:calc(var(--f7-toggle-height) - 8px)}.md .toggle-icon.active-state:after{transform:scale(1.1)}:root{--f7-range-scale-step-height:5px;--f7-range-scale-substep-width:1px;--f7-range-scale-substep-height:4px;--f7-range-bar-bg-color:rgba(0,0,0,0.2)}:root .dark,:root.dark{--f7-range-bar-bg-color:rgba(255,255,255,0.2)}.ios{--f7-range-size:28px;--f7-range-bar-size:4px;--f7-range-bar-border-radius:2px;--f7-range-knob-size:28px;--f7-range-knob-color:#fff;--f7-range-knob-box-shadow:0 2px 4px rgba(0,0,0,0.3);--f7-range-label-size:24px;--f7-range-label-text-color:#000;--f7-range-label-bg-color:#fff;--f7-range-label-font-size:12px;--f7-range-label-font-weight:500;--f7-range-label-border-radius:5px;--f7-range-label-padding:0px 2px;--f7-range-scale-text-color:#666;--f7-range-scale-step-width:1px;--f7-range-scale-font-size:12px;--f7-range-scale-font-weight:400;--f7-range-scale-label-offset:4px}.md{--f7-range-size:20px;--f7-range-bar-size:2px;--f7-range-bar-border-radius:0px;--f7-range-knob-size:12px;--f7-range-knob-box-shadow:none;--f7-range-label-size:26px;--f7-range-label-font-weight:normal;--f7-range-label-font-size:10px;--f7-range-label-border-radius:50%;--f7-range-label-padding:0px;--f7-range-scale-step-width:2px;--f7-range-scale-font-size:12px;--f7-range-scale-font-weight:400;--f7-range-scale-label-offset:4px}.md,.md .dark,.md [class*=color-]{--f7-range-knob-color:var(--f7-theme-color);--f7-range-label-text-color:var(--f7-md-on-primary);--f7-range-label-bg-color:var(--f7-theme-color);--f7-range-scale-text-color:var(--f7-md-on-surface-variant)}.range-slider{align-self:center;cursor:pointer;display:block;position:relative;-webkit-user-select:none;user-select:none}.range-slider input[type=range]{display:none}.range-slider.range-slider-horizontal{height:var(--f7-range-size);touch-action:pan-y;width:100%}.range-slider.range-slider-vertical{height:100%;touch-action:pan-x;width:var(--f7-range-size)}.range-bar{background:var(--f7-range-bar-bg-color);border-radius:var(--f7-range-bar-border-radius);overflow:hidden;position:absolute}.range-slider-vertical .range-bar{height:100%;left:50%;margin-left:calc(var(--f7-range-bar-size)*-1/2);top:0;width:var(--f7-range-bar-size)}.range-slider-horizontal .range-bar{height:var(--f7-range-bar-size);left:0;margin-top:calc(var(--f7-range-bar-size)*-1/2);top:50%;width:100%}.range-bar-active{background:var(--f7-range-bar-active-bg-color,var(--f7-theme-color));position:absolute}.range-slider-horizontal .range-bar-active{height:100%;left:0;top:0}.range-slider-vertical .range-bar-active{bottom:0;left:0;width:100%}.range-slider-vertical-reversed .range-bar-active{bottom:auto;top:0}.range-knob-wrap{height:var(--f7-range-knob-size);position:absolute;width:var(--f7-range-knob-size);z-index:20}.range-slider-horizontal .range-knob-wrap{left:0;margin-left:calc(var(--f7-range-knob-size)*-1/2);margin-top:calc(var(--f7-range-knob-size)*-1/2);top:50%}.range-slider-vertical .range-knob-wrap{bottom:0;left:50%;margin-bottom:calc(var(--f7-range-knob-size)*-1/2);margin-left:calc(var(--f7-range-knob-size)*-1/2)}.range-slider-vertical-reversed .range-knob-wrap{bottom:auto;margin-bottom:0;margin-top:calc(var(--f7-range-knob-size)*-1/2);top:0}.range-knob{background:var(--f7-range-knob-color,var(--f7-range-knob-bg-color,var(--f7-theme-color)));border-radius:50%;box-shadow:var(--f7-range-knob-box-shadow);box-sizing:border-box;height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}.range-knob:after{content:"";height:44px;left:50%;margin-left:-22px;margin-top:-22px;position:absolute;top:50%;width:44px}.range-knob-label{background-color:var(--f7-range-label-bg-color,var(--f7-theme-color));border-radius:var(--f7-range-label-border-radius);bottom:100%;box-sizing:border-box;color:var(--f7-range-label-text-color);font-size:var(--f7-range-label-font-size);font-weight:var(--f7-range-label-font-weight);height:var(--f7-range-label-size);left:50%;line-height:var(--f7-range-label-size);min-width:var(--f7-range-label-size);padding:var(--f7-range-label-padding);position:absolute;text-align:center;transform:translateY(100%) scale(0);transition-duration:.12s;transition-property:transform}.range-knob-active-state .range-knob-label{transform:translateY(0) scale(1)}.range-scale{position:absolute}.range-slider-horizontal .range-scale{left:0;margin-top:calc(var(--f7-range-bar-size)/2);top:50%;width:100%}.range-slider-vertical .range-scale{height:100%;margin-right:calc(var(--f7-range-bar-size)/2);right:50%;top:0}.range-scale-step{box-sizing:border-box;color:var(--f7-range-scale-text-color,var(--f7-range-bar-bg-color));display:flex;font-size:var(--f7-range-scale-font-size);font-weight:var(--f7-range-scale-font-weight);line-height:1;position:absolute}.range-scale-step:before{background:var(--f7-range-scale-step-bg-color,var(--f7-range-bar-bg-color));content:"";position:absolute}.range-slider-horizontal .range-scale-step{align-items:flex-start;height:var(--f7-range-scale-step-height);justify-content:center;margin-left:calc(var(--f7-range-scale-step-width)*-1/2);padding-top:calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));top:0;width:var(--f7-range-scale-step-width)}.range-slider-horizontal .range-scale-step:before{height:var(--f7-range-scale-step-height);left:0;top:0;width:100%}.range-slider-horizontal .range-scale-step:first-child{margin-left:0}.range-slider-horizontal .range-scale-step:last-child{margin-left:calc(var(--f7-range-scale-step-width)*-1)}.range-slider-vertical .range-scale-step{align-items:center;height:var(--f7-range-scale-step-width);justify-content:flex-end;line-height:1;margin-bottom:calc(var(--f7-range-scale-step-width)*-1/2);padding-right:calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));right:0;width:var(--f7-range-scale-step-height)}.range-slider-vertical .range-scale-step:first-child{margin-bottom:0}.range-slider-vertical .range-scale-step:last-child{margin-bottom:calc(var(--f7-range-scale-step-width)*-1)}.range-slider-vertical .range-scale-step:before{height:100%;right:0;top:0;width:var(--f7-range-scale-step-height)}.range-scale-substep{--f7-range-scale-step-bg-color:var(--f7-range-scale-substep-bg-color,var(--f7-range-bar-bg-color));--f7-range-scale-step-width:var(--f7-range-scale-substep-width);--f7-range-scale-step-height:var(--f7-range-scale-substep-height)}.ios .range-knob-label{margin-bottom:6px;transform:translateX(-50%) translateY(100%) scale(0)}.ios .range-knob-active-state .range-knob-label{transform:translateX(-50%) translateY(0) scale(1)}.md .range-knob{transition-duration:.2s;transition-property:transform,background-color}.md .range-knob-active-state .range-knob{transform:scale(1.5)}.md .range-slider-min:not(.range-slider-dual) .range-knob{background:#fff!important;border:2px solid var(--f7-range-bar-bg-color)}.md .range-knob-label{margin-bottom:8px}.md .range-knob-label,.md .range-knob-label:before{margin-left:calc(var(--f7-range-label-size)*-1/2);width:var(--f7-range-label-size)}.md .range-knob-label:before{background:var(--f7-range-label-bg-color,var(--f7-theme-color));border-radius:50% 50% 50% 0;content:"";height:var(--f7-range-label-size);left:50%;position:absolute;top:0;transform:rotate(-45deg);z-index:-1}.md .range-knob-active-state .range-knob-label{transform:translateY(0) scale(1)}.md .range-slider-label .range-knob-active-state .range-knob{transform:scale(0)}:root{--f7-stepper-raised-box-shadow:0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);--f7-stepper-value-font-weight:500}.ios{--f7-stepper-height:28px;--f7-stepper-border-radius:5px;--f7-stepper-fill-button-text-color:#fff;--f7-stepper-large-height:44px;--f7-stepper-small-height:26px;--f7-stepper-value-font-size:17px;--f7-stepper-border-width:2px;--f7-stepper-border-color:var(--f7-theme-color);--f7-stepper-small-border-width:2px}.md{--f7-stepper-height:40px;--f7-stepper-border-radius:8px;--f7-stepper-large-height:48px;--f7-stepper-small-height:32px;--f7-stepper-value-font-size:14px;--f7-stepper-border-width:1px;--f7-stepper-small-border-width:1px;--f7-stepper-button-pressed-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-stepper-fill-button-text-color:var(--f7-md-on-primary);--f7-stepper-fill-button-pressed-bg-color:var(--f7-theme-color);--f7-stepper-border-color:var(--f7-md-outline)}.stepper{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25);align-items:stretch;border-radius:var(--f7-stepper-border-radius);display:inline-flex;height:var(--f7-stepper-height)}.stepper-button,.stepper-button-minus,.stepper-button-plus{align-content:center;align-items:center;background-color:var(--f7-stepper-button-bg-color);border:var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);border-radius:var(--f7-stepper-border-radius);box-sizing:border-box;color:var(--f7-stepper-button-text-color,var(--f7-theme-color));cursor:pointer;display:flex;flex-shrink:0;justify-content:center;line-height:calc(var(--f7-stepper-height) - var(--f7-stepper-border-width, 0px));position:relative;text-align:center;width:40px}.stepper-button-minus.active-state,.stepper-button-plus.active-state,.stepper-button.active-state{background-color:var(--f7-stepper-button-pressed-bg-color,rgba(var(--f7-theme-color-rgb),.15));color:var(--f7-stepper-button-pressed-text-color,var(--f7-stepper-button-text-color,var(--f7-theme-color)))}.stepper-button-minus:first-child,.stepper-button-plus:first-child,.stepper-button:first-child{border-radius:var(--f7-stepper-border-radius) 0 0 var(--f7-stepper-border-radius)}.stepper-button-minus:last-child,.stepper-button-plus:last-child,.stepper-button:last-child{border-radius:0 var(--f7-stepper-border-radius) var(--f7-stepper-border-radius) 0}.stepper-button .icon,.stepper-button-minus .icon,.stepper-button-plus .icon{pointer-events:none}.stepper-button+.stepper-button,.stepper-button+.stepper-button-minus,.stepper-button+.stepper-button-plus,.stepper-button-minus+.stepper-button,.stepper-button-minus+.stepper-button-minus,.stepper-button-minus+.stepper-button-plus,.stepper-button-plus+.stepper-button,.stepper-button-plus+.stepper-button-minus,.stepper-button-plus+.stepper-button-plus{border-left:none}.stepper-button-minus,.stepper-button-plus{-webkit-user-select:none;user-select:none}.stepper-button-minus:after,.stepper-button-minus:before,.stepper-button-plus:after,.stepper-button-plus:before{background-color:var(--f7-stepper-button-text-color,var(--f7-theme-color));border-radius:2px;content:"";left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.stepper-button-minus:after,.stepper-button-plus:after{height:2px;width:15px}.stepper-button-plus:before{height:15px;width:2px}.stepper-value{align-content:center;align-items:center;display:flex;justify-content:center}.stepper-input-wrap,.stepper-value{border-bottom:var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);border-top:var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);flex-shrink:1;text-align:center}.stepper .stepper-input-wrap input,.stepper-value{color:var(--f7-stepper-value-text-color,var(--f7-theme-color));font-size:var(--f7-stepper-value-font-size);font-weight:var(--f7-stepper-value-font-weight);text-align:center;width:45px}.stepper .stepper-input-wrap input{height:100%}.ios .stepper-round-ios,.md .stepper-round-md,.stepper-round{--f7-stepper-border-radius:var(--f7-stepper-height)}.ios .stepper-fill-ios,.md .stepper-fill-md,.stepper-fill{--f7-stepper-border-color:var(--f7-stepper-fill-button-bg-color,var(--f7-theme-color));--f7-stepper-button-bg-color:var(--f7-stepper-fill-button-bg-color,var(--f7-theme-color));--f7-stepper-button-text-color:var(--f7-stepper-fill-button-text-color);--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.ios .stepper-fill-ios .stepper-button+.stepper-button,.ios .stepper-fill-ios .stepper-button-minus+.stepper-button-plus,.ios .stepper-raised-ios .stepper-button+.stepper-button,.ios .stepper-raised-ios .stepper-button-minus+.stepper-button-plus,.md .stepper-fill-md .stepper-button+.stepper-button,.md .stepper-fill-md .stepper-button-minus+.stepper-button-plus,.md .stepper-raised-md .stepper-button+.stepper-button,.md .stepper-raised-md .stepper-button-minus+.stepper-button-plus,.stepper-fill .stepper-button+.stepper-button,.stepper-fill .stepper-button-minus+.stepper-button-plus,.stepper-raised .stepper-button+.stepper-button,.stepper-raised .stepper-button-minus+.stepper-button-plus{border-left:1px solid rgba(0,0,0,.1)}.ios .stepper-fill-ios .stepper-button+.stepper-button.active-state,.ios .stepper-fill-ios .stepper-button-minus+.stepper-button-plus.active-state,.md .stepper-fill-md .stepper-button+.stepper-button.active-state,.md .stepper-fill-md .stepper-button-minus+.stepper-button-plus.active-state,.stepper-fill .stepper-button+.stepper-button.active-state,.stepper-fill .stepper-button-minus+.stepper-button-plus.active-state{border-left-color:var(--f7-stepper-button-pressed-bg-color)}.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-input-wrap,.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-value,.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-input-wrap,.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-value,.stepper-raised:not(.stepper-fill) .stepper-input-wrap,.stepper-raised:not(.stepper-fill) .stepper-value{border-left:1px solid rgba(0,0,0,.1);border-right:1px solid rgba(0,0,0,.1)}.ios .stepper-large-ios,.md .stepper-large-md,.stepper-large{--f7-stepper-height:var(--f7-stepper-large-height)}.ios .stepper-small-ios,.md .stepper-small-md,.stepper-small{--f7-stepper-border-width:var(--f7-stepper-small-border-width);--f7-stepper-height:var(--f7-stepper-small-height)}.ios .stepper-fill.stepper-small,.ios .stepper-fill.stepper-small-ios{--f7-stepper-button-pressed-bg-color:transparent;--f7-stepper-button-pressed-text-color:var(--f7-theme-color)}.ios .stepper-raised-ios,.md .stepper-raised-md,.stepper-raised{--f7-stepper-border-width:0;box-shadow:var(--f7-stepper-raised-box-shadow)}.ios .stepper-button .f7-icons,.ios .stepper-button-minus .f7-icons,.ios .stepper-button-plus .f7-icons{font-size:22px}.ios .stepper-fill,.ios .stepper-fill-ios{--f7-stepper-button-pressed-bg-color:var(--f7-stepper-fill-button-pressed-bg-color,var(--f7-theme-color-tint))}.ios .stepper-small-ios.stepper-raised,.ios .stepper-small-ios.stepper-raised-ios,.ios .stepper-small.stepper-raised,.ios .stepper-small.stepper-raised-ios{--f7-stepper-border-width:0px}.ios .stepper-small .stepper-button,.ios .stepper-small .stepper-button-minus,.ios .stepper-small .stepper-button-plus,.ios .stepper-small-ios .stepper-button,.ios .stepper-small-ios .stepper-button-minus,.ios .stepper-small-ios .stepper-button-plus{transition-duration:.2s}.ios .stepper-small .stepper-button-minus.active-state:after,.ios .stepper-small .stepper-button-minus.active-state:before,.ios .stepper-small .stepper-button-plus.active-state:after,.ios .stepper-small .stepper-button-plus.active-state:before,.ios .stepper-small .stepper-button.active-state:after,.ios .stepper-small .stepper-button.active-state:before,.ios .stepper-small-ios .stepper-button-minus.active-state:after,.ios .stepper-small-ios .stepper-button-minus.active-state:before,.ios .stepper-small-ios .stepper-button-plus.active-state:after,.ios .stepper-small-ios .stepper-button-plus.active-state:before,.ios .stepper-small-ios .stepper-button.active-state:after,.ios .stepper-small-ios .stepper-button.active-state:before{background-color:var(--f7-theme-color);transition-duration:.2s}.md .stepper-button,.md .stepper-button-minus,.md .stepper-button-plus{overflow:hidden;transform:translateZ(0);transition-duration:.3s}.md .stepper-fill,.md .stepper-fill-md{--f7-stepper-button-pressed-bg-color:var(--f7-stepper-fill-button-bg-color,var(--f7-theme-color))}.smart-select select{display:none}.smart-select .item-after{display:block;max-width:70%;overflow:hidden;position:relative;text-overflow:ellipsis}.smart-select-sheet .list ul,.smart-select-sheet .page,.smart-select-sheet .sheet-modal-inner{background:var(--f7-smart-select-sheet-bg,var(--f7-list-bg-color))}.smart-select-sheet .toolbar:after{background-color:var(--f7-smart-select-sheet-toolbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.smart-select-sheet .list{margin:0}.smart-select-sheet .list ul:after,.smart-select-sheet .list ul:before{display:none!important}.smart-select-popover .popover-inner{max-height:40vh}:root{--f7-grid-gap:16px}.grid{display:grid}.grid.grid-gap{gap:var(--f7-grid-gap)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}@media (min-width:480px){.xsmall-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xsmall-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.xsmall-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xsmall-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.xsmall-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xsmall-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.xsmall-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xsmall-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.xsmall-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xsmall-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.xsmall-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xsmall-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.xsmall-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xsmall-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.xsmall-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xsmall-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.xsmall-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xsmall-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.xsmall-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xsmall-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.xsmall-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xsmall-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.xsmall-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xsmall-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.xsmall-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.xsmall-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.xsmall-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.xsmall-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.xsmall-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.xsmall-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.xsmall-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.xsmall-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.xsmall-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.xsmall-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.xsmall-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.xsmall-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.xsmall-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.xsmall-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.xsmall-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.xsmall-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:568px){.small-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.small-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.small-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.small-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.small-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.small-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.small-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.small-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.small-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.small-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.small-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.small-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.small-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.small-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.small-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.small-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.small-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.small-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.small-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.small-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.small-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.small-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.small-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.small-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.small-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.small-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.small-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.small-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.small-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.small-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.small-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.small-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.small-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.small-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.small-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.small-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.small-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.small-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.small-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.small-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:768px){.medium-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.medium-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.medium-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.medium-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.medium-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.medium-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.medium-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.medium-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.medium-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.medium-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.medium-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.medium-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.medium-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.medium-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.medium-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.medium-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.medium-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.medium-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.medium-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.medium-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.medium-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.medium-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.medium-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.medium-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.medium-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.medium-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.medium-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.medium-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.medium-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.medium-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.medium-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.medium-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.medium-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.medium-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.medium-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.medium-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.medium-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.medium-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.medium-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.medium-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:1024px){.large-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.large-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.large-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.large-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.large-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.large-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.large-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.large-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.large-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.large-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.large-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.large-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.large-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.large-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.large-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.large-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.large-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.large-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.large-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.large-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.large-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.large-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.large-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.large-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.large-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.large-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.large-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.large-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.large-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.large-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.large-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.large-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.large-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.large-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.large-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.large-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.large-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.large-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.large-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.large-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:1200px){.xlarge-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xlarge-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.xlarge-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xlarge-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.xlarge-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xlarge-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.xlarge-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xlarge-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.xlarge-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xlarge-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.xlarge-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xlarge-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.xlarge-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xlarge-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.xlarge-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xlarge-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.xlarge-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xlarge-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.xlarge-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xlarge-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.xlarge-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xlarge-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.xlarge-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xlarge-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.xlarge-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.xlarge-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.xlarge-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.xlarge-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.xlarge-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.xlarge-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.xlarge-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.xlarge-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.xlarge-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.xlarge-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.xlarge-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.xlarge-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.xlarge-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.xlarge-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.xlarge-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.xlarge-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}:root{--f7-calendar-height:340px;--f7-calendar-sheet-landscape-height:220px;--f7-calendar-popover-width:320px;--f7-calendar-popover-height:320px;--f7-calendar-modal-height:420px;--f7-calendar-modal-max-width:380px;--f7-calendar-week-header-bg-color:transparent;--f7-calendar-footer-padding:0 8px;--f7-calendar-week-header-font-size:11px;--f7-calendar-disabled-text-color:#d4d4d4;--f7-calendar-event-dot-size:4px;--f7-calendar-time-selector-height:28px;--f7-calendar-picker-pressed-bg-color:rgba(0,0,0,0.1);--f7-calendar-picker-hover-bg-color:rgba(0,0,0,0.03);--f7-calendar-time-selector-bg-color:rgba(0,0,0,0.05)}:root .dark,:root.dark{--f7-calendar-picker-pressed-bg-color:rgba(255,255,255,0.08);--f7-calendar-picker-hover-bg-color:rgba(255,255,255,0.03);--f7-calendar-time-selector-bg-color:rgba(255,255,255,0.1)}.ios{--f7-calendar-selected-text-color:#fff;--f7-calendar-header-height:44px;--f7-calendar-header-font-size:17px;--f7-calendar-header-font-weight:600;--f7-calendar-header-padding:0 8px;--f7-calendar-footer-height:44px;--f7-calendar-footer-font-size:17px;--f7-calendar-week-header-height:18px;--f7-calendar-day-font-size:15px;--f7-calendar-day-size:30px;--f7-calendar-picker-font-size:17px;--f7-calendar-time-selector-font-size:17px;--f7-calendar-modal-border-radius:4px;--f7-calendar-modal-box-shadow:0px 11px 15px -7px rgba(0,0,0,0.2),0px 24px 38px 3px rgba(0,0,0,0.14),0px 9px 46px 8px rgba(0,0,0,0.12);--f7-calendar-prev-next-text-color:#c8c8c8;--f7-calendar-sheet-border-color:#929499;--f7-calendar-sheet-bg-color:#fff;--f7-calendar-week-header-text-color:#5e5e5e;--f7-calendar-modal-bg-color:#fff;--f7-calendar-day-text-color:#000;--f7-calendar-today-text-color:#000;--f7-calendar-today-bg-color:#e3e3e3}.ios .dark,.ios.dark{--f7-calendar-prev-next-text-color:#5e5e5e;--f7-calendar-sheet-border-color:var(--f7-bars-border-color);--f7-calendar-sheet-bg-color:#121212;--f7-calendar-week-header-text-color:#aaa;--f7-calendar-modal-bg-color:#121212;--f7-calendar-day-text-color:#fff;--f7-calendar-today-text-color:#fff;--f7-calendar-today-bg-color:#333}.md{--f7-calendar-sheet-border-color:transparent;--f7-calendar-header-height:64px;--f7-calendar-header-font-size:24px;--f7-calendar-header-font-weight:400;--f7-calendar-header-padding:0 24px;--f7-calendar-footer-height:56px;--f7-calendar-footer-font-size:14px;--f7-calendar-week-header-height:24px;--f7-calendar-day-font-size:14px;--f7-calendar-today-bg-color:none;--f7-calendar-day-size:32px;--f7-calendar-picker-font-size:14px;--f7-calendar-time-selector-font-size:14px;--f7-calendar-modal-border-radius:28px;--f7-calendar-modal-box-shadow:none}.md,.md .dark,.md [class*=color-]{--f7-calendar-sheet-bg-color:var(--f7-md-surface-1);--f7-calendar-selected-text-color:var(--f7-md-on-primary);--f7-calendar-week-header-text-color:var(--f7-md-on-surface-variant);--f7-calendar-day-text-color:var(--f7-md-on-surface);--f7-calendar-prev-next-text-color:rgba(var(--f7-md-on-surface-variant-rgb),0.55);--f7-calendar-today-text-color:var(--f7-theme-color);--f7-calendar-modal-bg-color:var(--f7-md-surface-1)}.calendar{flex-direction:column;height:var(--f7-calendar-height);overflow:hidden;width:100%}.calendar,.calendar.modal-in{display:flex}@media (orientation:landscape) and (max-height:415px){.calendar.calendar-sheet{height:var(--f7-calendar-sheet-landscape-height)}.calendar.calendar-modal{height:calc(100vh - var(--f7-navbar-height))}}.calendar.calendar-inline,.calendar.calendar-popover .calendar{position:relative}.calendar-sheet{--f7-sheet-border-color:var(--f7-calendar-sheet-border-color);background:var(--f7-calendar-sheet-bg-color);height:calc(var(--f7-calendar-height) + var(--f7-safe-area-bottom));padding-bottom:var(--f7-safe-area-bottom)}.calendar-sheet:before{z-index:600}.calendar-modal .toolbar:before,.calendar-popover .toolbar:before,.calendar-sheet .toolbar:before{display:none}.calendar-popover{width:var(--f7-calendar-popover-width)}.calendar-popover .calendar-header,.calendar-popover .toolbar-top{border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;overflow:hidden}.calendar-popover .calendar-header+.toolbar-top{border-radius:0}.calendar-popover .calendar-footer,.calendar-popover .toolbar-bottom{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.calendar-popover .calendar{height:var(--f7-calendar-popover-height);position:relative;z-index:1}.calendar-popover .calendar-month-picker,.calendar-popover .calendar-time-picker,.calendar-popover .calendar-year-picker{border-radius:var(--f7-popover-border-radius)}.calendar-popover .calendar-month-picker .picker,.calendar-popover .calendar-time-picker .picker,.calendar-popover .calendar-year-picker .picker{display:flex;flex-direction:column;height:100%}.calendar-header{background-color:var(--f7-calendar-header-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-calendar-header-text-color,var(--f7-bars-text-color));flex-shrink:0;font-size:var(--f7-calendar-header-font-size);font-weight:var(--f7-calendar-header-font-weight);height:var(--f7-calendar-header-height);line-height:var(--f7-calendar-header-height);overflow:hidden;padding:var(--f7-calendar-header-padding);position:relative;text-overflow:ellipsis;white-space:nowrap;width:100%}.calendar-header a{color:var(--f7-calendar-header-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer{align-items:center;background-color:var(--f7-calendar-footer-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-calendar-footer-text-color,var(--f7-bars-text-color));display:flex;flex-shrink:0;font-size:var(--f7-calendar-header-font-size);height:var(--f7-calendar-footer-height);justify-content:flex-end;padding:var(--f7-calendar-footer-padding);position:relative;width:100%}.calendar-footer a{color:var(--f7-calendar-footer-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer:before{background-color:var(--f7-calendar-footer-border-color,var(--f7-bars-border-color));bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.calendar-modal{background:var(--f7-calendar-modal-bg-color);border-radius:var(--f7-calendar-modal-border-radius);box-shadow:var(--f7-calendar-modal-box-shadow);display:flex;height:var(--f7-calendar-modal-height);left:50%;max-width:var(--f7-calendar-modal-max-width);min-width:300px;overflow:hidden;position:absolute;top:50%;transform:translate3d(-50%,100vh,0);transition-property:transform;transition-timing-function:cubic-bezier(0,1,.2,1);width:90%;z-index:13500}.calendar-modal.modal-in,.calendar-modal.modal-out{transition-duration:.4s}.calendar-modal.modal-in{transform:translate3d(-50%,-50%,0)}.calendar-modal.modal-out{transform:translate3d(-50%,100vh,0)}.calendar-week-header{background-color:var(--f7-calendar-week-header-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-calendar-week-header-text-color,var(--f7-bars-text-color));display:flex;font-size:var(--f7-calendar-week-header-font-size);height:var(--f7-calendar-week-header-height);padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right);position:relative}.calendar-week-header .calendar-week-day{flex-shrink:1;line-height:var(--f7-calendar-week-header-height);text-align:center;width:14.28571%}.calendar-months{flex-shrink:10;height:100%;overflow:hidden;position:relative;width:100%}.calendar-months-wrapper{height:100%;position:relative;transition:.3s;width:100%}.calendar-month{display:flex;flex-direction:column;height:100%;left:0;position:absolute;top:0;width:100%}.calendar-row{box-sizing:border-box;display:flex;flex-shrink:1;height:16.66666667%;padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right);position:relative;width:100%}.calendar-modal .calendar-months:first-child .calendar-row:first-child:before,.calendar-popover .calendar-months:first-child .calendar-row:first-child:before{display:none!important}.calendar-day{align-items:center;box-sizing:border-box;color:var(--f7-calendar-day-text-color);cursor:pointer;display:flex;flex-shrink:1;font-size:var(--f7-calendar-day-font-size);height:100%;justify-content:center;text-align:center;width:14.28571429%;z-index:20}.calendar-day-today .calendar-day-number{background-color:var(--f7-calendar-today-bg-color);color:var(--f7-calendar-today-text-color,var(--f7-theme-color))}.calendar-day-next,.calendar-day-prev{color:var(--f7-calendar-prev-next-text-color)}.calendar-day-disabled{color:var(--f7-calendar-disabled-text-color);cursor:auto}.calendar-day-selected .calendar-day-number{background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color));color:var(--f7-calendar-selected-text-color)}.calendar-day-number{border-radius:50%;display:inline-block;height:var(--f7-calendar-day-size);line-height:var(--f7-calendar-day-size);position:relative;width:var(--f7-calendar-day-size)}.calendar-day-events{align-items:center;display:flex;justify-content:center;left:0;margin-top:1px;position:absolute;top:100%;width:100%}.calendar-day-event{background-color:var(--f7-calendar-event-bg-color);border-radius:calc(var(--f7-calendar-event-dot-size)/2);height:var(--f7-calendar-event-dot-size);width:var(--f7-calendar-event-dot-size)}.calendar-day-event+.calendar-day-event{margin-left:2px}.calendar-day-selected-left,.calendar-day-selected-range,.calendar-day-selected-right{position:relative}.calendar-day-selected-left:before,.calendar-day-selected-range:before,.calendar-day-selected-right:before{background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color));content:"";height:var(--f7-calendar-day-size);left:0;opacity:.2;position:absolute;top:50%;transform:translateY(-50%);width:100%;z-index:-1}.calendar-day-selected-left:before,.calendar-day-selected-range:first-child:before{border-radius:var(--f7-calendar-day-size) 0 0 var(--f7-calendar-day-size);left:auto;right:0;width:calc(50% + var(--f7-calendar-day-size)/2)}.calendar-day-selected-range:last-child:before,.calendar-day-selected-right:before{border-radius:0 var(--f7-calendar-day-size) var(--f7-calendar-day-size) 0;width:calc(50% + var(--f7-calendar-day-size)/2)}.calendar-day-selected-left:last-child:before,.calendar-day-selected-right:first-child:before{display:none}.calendar-day-selected-left.calendar-day-selected-right:before{content:none;display:none}.calendar-day-selected-range .calendar-day-number{background-color:initial;color:inherit}.calendar-month-selector,.calendar-year-selector{align-items:center;display:flex;flex-shrink:10;justify-content:space-between;margin-left:auto;margin-right:auto;max-width:200px;width:50%}.calendar-month-selector .calendar-day-number,.calendar-year-selector .calendar-day-number{flex-shrink:1;overflow:hidden;position:relative;text-overflow:ellipsis}.calendar-month-selector a.icon-only,.calendar-year-selector a.icon-only{min-width:36px}.calendar-month-picker,.calendar-time-picker,.calendar-year-picker{background:transparent;height:100%;position:relative;-webkit-user-select:none;user-select:none;width:100%}.calendar-month-picker .picker-columns,.calendar-year-picker .picker-columns{text-align:center}.calendar-month-picker-item,.calendar-year-picker-item{align-items:center;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;overflow:hidden;position:relative;transition-duration:.1s}.calendar-month-picker-item span,.calendar-year-picker-item span{box-sizing:border-box;overflow:hidden;pointer-events:none;position:relative;text-overflow:ellipsis;white-space:nowrap}.calendar-month-picker-item.active-state,.calendar-year-picker-item.active-state{background:var(--f7-calendar-picker-pressed-bg-color)}.calendar-month-picker-item{padding:5px}.sheet-modal .calendar-month-picker-item{height:33.33333333%;width:25%}.sheet-modal .calendar-month-picker-item:nth-child(4n+1):before,.sheet-modal .calendar-month-picker-item:nth-child(n+9):after{display:none!important}.calendar-modal .calendar-month-picker-item,.popover .calendar-month-picker-item{height:25%;width:33.33333333%}.calendar-modal .calendar-month-picker-item:nth-child(3n+1):before,.calendar-modal .calendar-month-picker-item:nth-child(n+10):after,.popover .calendar-month-picker-item:nth-child(3n+1):before,.popover .calendar-month-picker-item:nth-child(n+10):after{display:none!important}.calendar-month-picker-item-current,.calendar-year-picker-item-current{color:var(--f7-calendar-picker-selected-text-color,var(--f7-theme-color))}.calendar-year-picker{--webkit-overflow-scrolling:touch;overflow:auto}.calendar-year-picker-item{height:34px;line-height:34px;width:100%}.calendar-time-selector{align-items:center;display:flex;flex-shrink:0;font-size:var(--f7-calendar-time-selector-font-size);justify-content:space-between;padding:12px 16px;position:relative}.calendar-time-selector a{align-items:center;background-color:var(--f7-calendar-time-selector-bg-color);border-radius:8px;box-sizing:border-box;display:flex;height:var(--f7-calendar-time-selector-height);justify-content:center;overflow:hidden;padding:0 16px;position:relative}.calendar-time-selector>span{font-weight:500}.calendar-time-selector .segmented{margin-left:8px}.calendar-month-picker-popover,.calendar-time-picker-popover,.calendar-year-picker-popover{height:240px;width:240px}.calendar-month-picker-popover .popover-inner,.calendar-time-picker-popover .popover-inner,.calendar-year-picker-popover .popover-inner{height:100%;overflow:hidden}.calendar-time-picker{--f7-picker-popover-height:100%;--f7-picker-inline-height:100%}.calendar-time-picker .toolbar{flex-shrink:0;top:0!important}.calendar-time-picker .picker{display:flex;flex-direction:column;height:100%}:root{--f7-picker-height:260px;--f7-picker-inline-height:200px;--f7-picker-popover-height:260px;--f7-picker-popover-width:280px;--f7-picker-landscape-height:200px;--f7-picker-item-height:36px}.ios{--f7-picker-column-font-size:20px;--f7-picker-item-selected-text-color:#000;--f7-picker-item-selected-bg-color:rgba(0,0,0,0.12);--f7-picker-divider-text-color:#000;--f7-picker-item-text-color:rgba(0,0,0,0.45)}.ios .dark,.ios.dark{--f7-picker-item-selected-text-color:#fff;--f7-picker-item-selected-bg-color:rgba(255,255,255,0.1);--f7-picker-divider-text-color:#fff;--f7-picker-item-text-color:rgba(255,255,255,0.55)}.md{--f7-picker-column-font-size:20px}.md,.md .dark,.md [class*=color-]{--f7-picker-item-selected-text-color:var(--f7-md-on-surface);--f7-picker-item-text-color:var(--f7-md-on-surface-variant);--f7-picker-divider-text-color:var(--f7-md-on-surface);--f7-picker-item-selected-border-color:var(--f7-md-outline)}.picker{height:var(--f7-picker-height);width:100%}.picker.picker-inline{height:var(--f7-picker-inline-height)}.popover .picker{height:var(--f7-picker-popover-height)}@media (orientation:landscape) and (max-height:415px){.picker:not(.picker-inline){height:var(--f7-picker-landscape-height)}}.picker.sheet-modal{background:var(--f7-picker-sheet-bg-color,var(--f7-sheet-bg-color))}.picker-popover{width:var(--f7-picker-popover-width)}.picker-popover .toolbar{background:none;border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0}.picker-popover .toolbar:before{display:none!important}.picker-popover .toolbar+.picker-columns{height:calc(100% - var(--f7-toolbar-height))}.picker-columns{--f7-picker-mask-bg-color:transparent;display:flex;font-size:var(--f7-picker-column-font-size);height:100%;justify-content:center;overflow:hidden;padding:0;position:relative;text-align:right}.popover .picker-columns{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.picker-columns:after,.picker-columns:before{content:"";height:20%;left:0;pointer-events:none;position:absolute;width:100%;z-index:100}.page .picker-columns{--f7-picker-mask-bg-color:var(--f7-page-bg-color)}.block-strong .picker-columns{--f7-picker-mask-bg-color:var(--f7-block-strong-bg-color)}.picker-sheet .picker-columns{--f7-picker-mask-bg-color:var(--f7-picker-sheet-bg-color,var(--f7-sheet-bg-color))}.picker-popover .picker-columns{--f7-picker-mask-bg-color:var(--f7-popover-bg-color)}.picker-columns:before{background-image:linear-gradient(to bottom,var(--f7-picker-mask-bg-color),transparent);top:0}.picker-columns:after{background-image:linear-gradient(to top,var(--f7-picker-mask-bg-color),transparent);bottom:0}.picker-column{max-height:100%;position:relative;z-index:10}.picker-column.picker-column-first.picker-column-last{width:100%}.picker-column.picker-column-left{text-align:left}.picker-column.picker-column-center{text-align:center}.picker-column.picker-column-right{text-align:right}.picker-column.picker-column-divider{align-items:center;color:var(--f7-picker-divider-text-color);display:flex}.picker-items{box-sizing:border-box;height:100%;overflow:auto;padding:var(--f7-picker-scroll-padding,0) 0;scroll-snap-type:y mandatory;scrollbar-color:transparent;scrollbar-width:none}.picker-items::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.picker-items::-webkit-scrollbar-track{background:transparent;box-shadow:none}.picker-items::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.picker-item{box-sizing:border-box;color:var(--f7-picker-item-text-color);cursor:pointer;height:var(--f7-picker-item-height);left:0;line-height:var(--f7-picker-item-height);overflow:hidden;position:relative;scroll-snap-align:center;text-overflow:ellipsis;top:0;white-space:nowrap;width:100%}.picker-item span{padding:0 10px}.picker-item.picker-item-far{pointer-events:none}.picker-item.picker-item-selected{color:var(--f7-picker-item-selected-text-color);transform:translateZ(0) rotateX(0deg)}.picker-column-free-mode .picker-item{scroll-snap-align:none}.picker-center-highlight{box-sizing:border-box;height:var(--f7-picker-item-height);margin-top:calc(var(--f7-picker-item-height)*-1/2);pointer-events:none;position:absolute;top:50%}.picker-3d .picker-columns{overflow:hidden}.picker-3d .picker-column,.picker-3d .picker-item,.picker-3d .picker-items{transform-style:preserve-3d}.picker-3d .picker-column{overflow:visible}.picker-3d .picker-item{overflow:visible;perspective:1200px}.picker-3d .picker-item>span{-webkit-backface-visibility:hidden;backface-visibility:hidden;box-sizing:border-box;display:block;max-width:100%;overflow:hidden;position:relative;text-overflow:ellipsis;transform-origin:center center -100px;transform-style:preserve-3d}.ios .picker-center-highlight{background-color:var(--f7-picker-item-selected-bg-color);border-radius:8px;left:16px;right:16px}.popover .ios .picker-center-highlight{left:8px;right:8px}.md .picker-center-highlight{border-bottom:1px solid var(--f7-md-outline);border-top:1px solid var(--f7-md-outline);left:0;right:0}.infinite-scroll-preloader{margin-left:auto;margin-right:auto;text-align:center}.infinite-scroll-preloader.preloader{display:block}.ios .infinite-scroll-preloader{margin-bottom:35px;margin-top:35px}.ios .infinite-scroll-preloader .preloader,.ios .infinite-scroll-preloader.preloader{height:27px;width:27px}.md .infinite-scroll-preloader{margin-bottom:32px;margin-top:32px}.ios{--f7-ptr-preloader-size:28px;--f7-ptr-size:44px}.md{--f7-ptr-preloader-size:22px;--f7-ptr-size:40px}.md,.md .dark,.md [class*=color-]{--f7-ptr-preloader-bg-color:var(--f7-md-surface-1);--f7-ptr-preloader-color:var(--f7-md-primary)}.ptr-preloader{height:var(--f7-ptr-size);pointer-events:none;position:relative;top:var(--f7-ptr-top,0)}.ptr-preloader .preloader{height:var(--f7-ptr-preloader-size);left:50%;margin-left:calc(var(--f7-ptr-preloader-size)*-1/2);margin-top:calc(var(--f7-ptr-preloader-size)*-1/2);position:absolute;top:50%;visibility:hidden;width:var(--f7-ptr-preloader-size)}.ptr-bottom .ptr-preloader{bottom:0;position:fixed;top:auto}.ptr-with-navbar-large-transparent .ptr-preloader,.ptr-with-navbar-transparent .ptr-preloader{top:calc(var(--f7-page-navbar-offset, 0px)*-1 + var(--f7-safe-area-top))}.ios .ptr-preloader{left:0;margin-bottom:calc(var(--f7-ptr-size)*-1);position:relative;top:0;width:100%}.ios .ptr-preloader .preloader{visibility:visible}.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner{animation:none}.ios .ptr-content.ptr-closing .ptr-preloader .preloader-inner-line,.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up):not(.ptr-pull-down) .ptr-preloader .preloader-inner-line{opacity:0!important}.ios .ptr-refreshing>*,.ios .ptr-transitioning>*{transition-duration:.2s;transition-property:transform}.ios .ptr-transitioning .ptr-preloader .preloader-inner-line{transition-duration:.2s}.ios .ptr-pull-up .ptr-preloader .preloader{animation:ios-ptr-preloader-spin 1s ease-out forwards}.ios .ptr-refreshing:not(.ptr-bottom){transform:none}.ios .ptr-refreshing:not(.ptr-bottom)>*{transform:translate3d(0,var(--f7-ptr-size),0)}.ios .ptr-refreshing:not(.ptr-bottom)>.ptr-preloader{transform:translateZ(0)}.ios .ptr-bottom .ptr-preloader{margin-bottom:0;margin-top:calc(var(--f7-ptr-size)*-1);position:relative}.ios .ptr-bottom.ptr-refreshing>*,.ios .ptr-bottom.ptr-transitioning>*{transition-duration:.3s;transition-property:transform}.ios .ptr-bottom.ptr-refreshing{transform:none}.ios .ptr-bottom.ptr-refreshing>*{transform:translate3d(0,calc(var(--f7-ptr-size)*-1),0)}.ios .ptr-bottom.ptr-refreshing>.ptr-preloader{transform:translateZ(0)}@keyframes ios-ptr-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(135deg)}}.md{--f7-ptr-top:-4px}.md .ptr-preloader{--f7-preloader-color:var(--f7-ptr-preloader-color);background:var(--f7-ptr-preloader-bg-color);border-radius:50%;box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);left:50%;margin-left:calc(var(--f7-ptr-size)*-1/2);margin-top:calc(var(--f7-ptr-size)*-1);width:var(--f7-ptr-size);z-index:100}.md .ptr-preloader .preloader circle{stroke-width:4}.md .ptr-arrow{border:3px solid var(--f7-preloader-color);border-left:3px solid transparent;border-radius:50%;box-sizing:border-box;height:22px;left:50%;margin-left:-11px;margin-top:-11px;opacity:1;position:absolute;top:50%;transform:rotate(150deg);width:22px}.md .ptr-arrow:after{border-bottom-color:inherit;border-bottom-style:solid;border-bottom-width:6px;border-left:5px solid transparent;border-right:5px solid transparent;bottom:0;content:"";height:0;left:-5px;position:absolute;transform:rotate(-40deg);width:0}.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner,.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader circle{animation:none}.md .ptr-pull-up .ptr-preloader .preloader,.md .ptr-refreshing .ptr-preloader .preloader{visibility:visible}.md .ptr-pull-up .ptr-arrow,.md .ptr-refreshing .ptr-arrow{visibility:hidden}.md .ptr-refreshing .ptr-preloader{transform:translate3d(0,66px,0)}.md .ptr-transitioning .ptr-arrow{transition:.3s}.md .ptr-pull-up .ptr-arrow{opacity:0;transform:rotate(620deg)!important;transition:.4s}.md .ptr-refreshing .ptr-preloader,.md .ptr-transitioning .ptr-preloader{transition-duration:.3s;transition-property:transform,opacity}.md .ptr-bottom .ptr-preloader{margin-bottom:calc(var(--f7-ptr-size)*-1 - 4px);margin-top:0}.md .ptr-bottom.ptr-refreshing .ptr-preloader{transform:translate3d(0,-66px,0)}.md .ptr-with-navbar-large-transparent .ptr-preloader,.md .ptr-with-navbar-transparent .ptr-preloader{opacity:0}.md .ptr-with-navbar-large-transparent.ptr-pull-down .ptr-preloader,.md .ptr-with-navbar-large-transparent.ptr-pull-up .ptr-preloader,.md .ptr-with-navbar-large-transparent.ptr-refreshing .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-pull-down .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-pull-up .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-refreshing .ptr-preloader{opacity:1}.md .ptr-with-navbar-large-transparent.ptr-closing .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-closing .ptr-preloader{opacity:0;transition-duration:.3s}:root{--f7-table-head-font-size:12px;--f7-table-body-font-size:14px;--f7-table-footer-font-size:12px;--f7-table-input-height:24px;--f7-table-input-font-size:14px;--f7-table-collapsible-cell-padding:16px;--f7-table-link-icon-only-icon-size:20px;--f7-table-head-bg-color:transparent;--f7-table-card-header-bg-color:transparent;--f7-table-card-header-height:64px;--f7-table-cell-padding-vertical:0px;--f7-table-sortable-icon-color:#000}:root .dark,:root.dark{--f7-table-sortable-icon-color:#fff;--f7-table-input-text-color:#fff}.ios{--f7-table-head-font-weight:600;--f7-table-head-cell-height:44px;--f7-table-head-icon-size:18px;--f7-table-body-cell-height:44px;--f7-table-cell-padding-horizontal:16px;--f7-table-edge-cell-padding-horizontal:16px;--f7-table-label-cell-padding-horizontal:16px;--f7-table-checkbox-cell-width:22px;--f7-table-title-font-size:17px;--f7-table-title-font-weight:600;--f7-table-footer-height:44px;--f7-table-head-text-color:rgba(0,0,0,0.45);--f7-table-cell-border-color:rgba(0,0,0,0.22);--f7-table-selected-row-bg-color:rgba(0,0,0,0.03);--f7-table-footer-text-color:rgba(0,0,0,0.45);--f7-table-input-text-color:#000}.ios .dark,.ios.dark{--f7-table-head-text-color:rgba(255,255,255,0.55);--f7-table-cell-border-color:rgba(255,255,255,0.15);--f7-table-footer-text-color:rgba(255,255,255,0.55);--f7-table-selected-row-bg-color:rgba(255,255,255,0.08)}.md{--f7-table-head-font-weight:500;--f7-table-head-cell-height:56px;--f7-table-head-icon-size:16px;--f7-table-body-cell-height:48px;--f7-table-cell-padding-horizontal:28px;--f7-table-edge-cell-padding-horizontal:24px;--f7-table-label-cell-padding-horizontal:24px;--f7-table-checkbox-cell-width:18px;--f7-table-title-font-size:20px;--f7-table-title-font-weight:400;--f7-table-footer-height:56px;--f7-table-actions-cell-link-color:rgba(0,0,0,0.54);--f7-table-actions-link-color:rgba(0,0,0,0.54);--f7-table-input-text-color:#212121}.md .dark,.md.dark{--f7-table-actions-cell-link-color:rgba(255,255,255,0.54);--f7-table-actions-link-color:rgba(255,255,255,0.54)}.md,.md .dark,.md [class*=color-]{--f7-table-head-text-color:var(--f7-md-on-surface-variant);--f7-table-footer-text-color:var(--f7-md-on-surface-variant);--f7-table-selected-row-bg-color:var(--f7-md-secondary-container);--f7-table-cell-border-color:var(--f7-md-outline)}.data-table{overflow-x:auto}.data-table table,table.data-table{border:none;border-collapse:collapse;margin:0;padding:0;text-align:left;width:100%}.data-table thead td,.data-table thead th{background-color:var(--f7-table-head-bg-color);font-size:var(--f7-table-head-font-size);font-weight:var(--f7-table-head-font-weight);height:var(--f7-table-head-cell-height);line-height:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table thead td:not(.sortable-cell-active),.data-table thead th:not(.sortable-cell-active){color:var(--f7-table-head-text-color)}.data-table thead i.f7-icons,.data-table thead i.icon,.data-table thead i.material-icons{font-size:var(--f7-table-head-icon-size);vertical-align:top}.data-table tbody{font-size:var(--f7-table-body-font-size)}.data-table tbody td,.data-table tbody th{height:var(--f7-table-body-cell-height)}.data-table tbody tr.data-table-row-selected,.device-desktop .data-table tbody tr:hover{background:var(--f7-table-selected-row-bg-color)}.data-table tbody td:before,.data-table tbody th:before{background-color:var(--f7-table-cell-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.data-table td,.data-table th{--f7-table-cell-padding-left:var(--f7-table-cell-padding-horizontal);--f7-table-cell-padding-right:var(--f7-table-cell-padding-horizontal);box-sizing:border-box;padding:var(--f7-table-cell-padding-vertical) var(--f7-table-cell-padding-right) var(--f7-table-cell-padding-vertical) var(--f7-table-cell-padding-left);position:relative}.data-table td:first-child,.data-table th:first-child{--f7-table-cell-padding-left:var(--f7-table-edge-cell-padding-horizontal)}.data-table td:last-child,.data-table th:last-child{--f7-table-cell-padding-right:var(--f7-table-edge-cell-padding-horizontal)}.data-table td.label-cell,.data-table th.label-cell{--f7-table-cell-padding-left:var(--f7-table-label-cell-padding-horizontal);--f7-table-cell-padding-right:var(--f7-table-label-cell-padding-horizontal)}.data-table td.numeric-cell,.data-table th.numeric-cell{text-align:right}.data-table td.checkbox-cell,.data-table th.checkbox-cell{overflow:visible;width:var(--f7-table-checkbox-cell-width)}.data-table td.checkbox-cell label+span,.data-table th.checkbox-cell label+span{margin-left:8px}.data-table td.checkbox-cell:first-child,.data-table th.checkbox-cell:first-child{padding-right:calc(var(--f7-table-cell-padding-right)/2)}.data-table td.checkbox-cell:first-child+td,.data-table td.checkbox-cell:first-child+th,.data-table td.checkbox-cell:last-child,.data-table th.checkbox-cell:first-child+td,.data-table th.checkbox-cell:first-child+th,.data-table th.checkbox-cell:last-child{padding-left:calc(var(--f7-table-cell-padding-left)/2)}.data-table td.actions-cell,.data-table th.actions-cell{text-align:right;white-space:nowrap}.data-table td.actions-cell a.link,.data-table th.actions-cell a.link{color:var(--f7-table-actions-cell-link-color,var(--f7-theme-color))}.card .data-table td a.icon-only,.card .data-table th a.icon-only,.card.data-table td a.icon-only,.card.data-table th a.icon-only,.data-table td a.icon-only,.data-table th a.icon-only{display:inline-block;font-size:0;min-width:0;text-align:center;vertical-align:middle}.card .data-table td a.icon-only i,.card .data-table th a.icon-only i,.card.data-table td a.icon-only i,.card.data-table th a.icon-only i,.data-table td a.icon-only i,.data-table th a.icon-only i{font-size:var(--f7-table-link-icon-only-icon-size);vertical-align:middle}.data-table .sortable-cell.input-cell .table-head-label,.data-table .sortable-cell:not(.input-cell){cursor:pointer;position:relative}.data-table .sortable-cell.numeric-cell.input-cell>.table-head-label:before,.data-table .sortable-cell.numeric-cell:not(.input-cell):before,.data-table .sortable-cell:not(.numeric-cell).input-cell>.table-head-label:after,.data-table .sortable-cell:not(.numeric-cell):not(.input-cell):after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-table-sortable-icon-color);content:"arrow_bottom_md";direction:ltr;display:block;display:inline-block;font-family:framework7-core-icons;font-size:20px;font-size:13px;font-style:normal;font-weight:400;height:100%;height:16px;letter-spacing:normal;line-height:1;line-height:16px;opacity:0;text-align:center;text-rendering:optimizeLegibility;text-transform:none;transform:rotate(0);transition-duration:.3s;vertical-align:top;white-space:nowrap;width:100%;width:16px}.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:after,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:before,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:after,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:before{opacity:.54}.data-table .sortable-cell.sortable-cell-active .table-head-label:after,.data-table .sortable-cell.sortable-cell-active .table-head-label:before,.data-table .sortable-cell.sortable-cell-active:after,.data-table .sortable-cell.sortable-cell-active:before{opacity:.87!important}.data-table .sortable-cell.sortable-desc:after,.data-table .sortable-cell.sortable-desc:before,.data-table .table-head-label:after,.data-table .table-head-label:before{transform:rotate(180deg)!important}.card .data-table .card-footer,.card .data-table .card-header,.data-table.card .card-footer,.data-table.card .card-header{padding-left:var(--f7-table-edge-cell-padding-horizontal);padding-right:var(--f7-table-edge-cell-padding-horizontal)}.card .data-table .card-header,.data-table.card .card-header{background-color:var(--f7-table-card-header-bg-color);min-height:var(--f7-table-card-header-height)}.card .data-table .card-content,.data-table.card .card-content{overflow-x:auto}.card .data-table .card-footer,.data-table.card .card-footer{min-height:var(--f7-table-footer-height)}.data-table .data-table-title{font-size:var(--f7-table-title-font-size);font-weight:var(--f7-table-title-font-weight)}.data-table .data-table-actions,.data-table .data-table-links{display:flex}.data-table .data-table-links .button{min-width:64px}.data-table .data-table-actions{align-items:center;margin-left:auto}.data-table .data-table-actions a.link{color:var(--f7-table-actions-link-color,var(--f7-theme-color));min-width:0}.data-table .data-table-actions a.link.icon-only{justify-content:center;line-height:1;padding:0}.data-table .data-table-header,.data-table .data-table-header-selected{align-items:center;display:flex;justify-content:space-between;width:100%}.data-table .card-header>.data-table-header,.data-table .card-header>.data-table-header-selected{height:100%;margin:calc(var(--f7-card-header-padding-vertical)*-1) calc(var(--f7-table-edge-cell-padding-horizontal)*-1);min-height:var(--f7-table-card-header-height);padding:var(--f7-card-header-padding-vertical) var(--f7-table-edge-cell-padding-horizontal)}.data-table .data-table-header-selected{background:rgba(var(--f7-theme-color-rgb),.1);display:none}.data-table.data-table-has-checked .data-table-header{display:none}.data-table.data-table-has-checked .data-table-header-selected{display:flex}.data-table .data-table-title-selected{color:var(--f7-theme-color);font-size:14px}.data-table .data-table-footer{align-items:center;box-sizing:border-box;color:var(--f7-table-footer-text-color);display:flex;font-size:var(--f7-table-footer-font-size);justify-content:flex-end;min-height:var(--f7-table-footer-height);overflow:hidden;position:relative}.data-table .data-table-footer:before{background-color:var(--f7-table-cell-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.data-table .data-table-pagination,.data-table .data-table-rows-select{align-items:center;display:flex}.data-table .input-cell{height:auto;padding-bottom:8px;padding-top:8px;vertical-align:top}.data-table .input-cell .table-head-label+.input{margin-top:4px}.data-table .input-cell .input{height:var(--f7-table-input-height)}.data-table .input-cell .input input,.data-table .input-cell .input select,.data-table .input-cell .input textarea{color:var(--f7-table-input-text-color);font-size:var(--f7-table-input-font-size);height:var(--f7-table-input-height)}@media (max-width:480px) and (orientation:portrait){.data-table.data-table-collapsible thead{display:none}.data-table.data-table-collapsible tbody,.data-table.data-table-collapsible td,.data-table.data-table-collapsible tr{display:block}.data-table.data-table-collapsible tr{position:relative}.data-table.data-table-collapsible tr:before{background-color:var(--f7-table-cell-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.data-table.data-table-collapsible tr:hover{background-color:inherit}.data-table.data-table-collapsible td{--f7-table-cell-padding-left:var(--f7-table-collapsible-cell-padding);--f7-table-cell-padding-right:var(--f7-table-collapsible-cell-padding);align-content:center;align-items:center;display:flex;height:auto;justify-content:flex-start;min-height:var(--f7-table-body-cell-height);text-align:left}.data-table.data-table-collapsible td:before{display:none!important}.data-table.data-table-collapsible td:not(.checkbox-cell):before{background:none!important;color:var(--f7-table-head-text-color);content:attr(data-collapsible-title);display:block!important;flex-shrink:0;font-size:var(--f7-table-head-font-size);font-weight:var(--f7-table-head-font-weight);height:auto;margin-right:16px;position:relative;transform:none!important;width:40%}.data-table.data-table-collapsible td.checkbox-cell{left:0;position:absolute;top:0}.data-table.data-table-collapsible td.checkbox-cell+td{padding-left:16px}.data-table.data-table-collapsible td.checkbox-cell~td{margin-left:32px}}.data-table .xsmall-landscape-only,.data-table .xsmall-only{display:none}@media (min-width:480px){.data-table .xsmall-only{display:table-cell}}@media (min-width:480px) and (orientation:landscape){.data-table .xsmall-landscape-only{display:table-cell}}.data-table .small-landscape-only,.data-table .small-only{display:none}@media (min-width:568px){.data-table .small-only{display:table-cell}}@media (min-width:568px) and (orientation:landscape){.data-table .small-landscape-only{display:table-cell}}.data-table .medium-landscape-only,.data-table .medium-only{display:none}@media (min-width:768px){.data-table .medium-only{display:table-cell}}@media (min-width:768px) and (orientation:landscape){.data-table .medium-landscape-only{display:table-cell}}.data-table .large-landscape-only,.data-table .large-only{display:none}@media (min-width:1024px){.data-table .large-only{display:table-cell}}@media (min-width:1024px) and (orientation:landscape){.data-table .large-landscape-only{display:table-cell}}.data-table .xlarge-landscape-only,.data-table .xlarge-only{display:none}@media (min-width:1200px){.data-table .xlarge-only{display:table-cell}}@media (min-width:1200px) and (orientation:landscape){.data-table .xlarge-landscape-only{display:table-cell}}.ios .data-table td.actions-cell a.link+a.link,.ios .data-table th.actions-cell a.link+a.link{margin-left:16px}.ios .sortable-cell:not(.numeric-cell):after{margin-left:5px}.ios .sortable-cell.numeric-cell:before{margin-right:5px}.ios .data-table-actions .button+.button,.ios .data-table-actions a.link+a.link,.ios .data-table-links .button+.button,.ios .data-table-links a.link+a.link{margin-left:16px}.ios .data-table-actions a.link.icon-only,.ios .data-table-pagination a.link,.ios .data-table-rows-select a.link{height:44px;width:44px}.ios .data-table-rows-select+.data-table-pagination{margin-left:30px}.ios .data-table-rows-select .input{margin-left:20px}.ios .data-table-pagination-label{margin-right:16px}.md .data-table td.actions-cell a.link+a.link,.md .data-table th.actions-cell a.link+a.link{margin-left:24px}.md .data-table td.actions-cell a.icon-only,.md .data-table th.actions-cell a.icon-only{height:24px;line-height:24px;width:24px}.md .sortable-cell:not(.numeric-cell):after{margin-left:8px}.md .sortable-cell.numeric-cell:before{margin-right:8px}.md .data-table-actions .button+.button,.md .data-table-actions a.link+a.link,.md .data-table-links .button+.button,.md .data-table-links a.link+a.link{margin-left:24px}.md .data-table-actions a.link.icon-only{height:24px;overflow:visible;width:24px}.md .data-table-actions a.link.icon-only.active-state{background:none}.md .data-table-pagination a.link,.md .data-table-rows-select a.link{height:48px;width:48px}.md .data-table-rows-select+.data-table-pagination{margin-left:32px}.md .data-table-rows-select .input{margin-left:24px}.md .data-table-pagination-label{margin-right:20px}.md .input-cell .input-clear-button{transform:scale(.8)}:root{--f7-fab-margin:16px;--f7-fab-extended-text-font-size:14px;--f7-fab-label-padding:4px 12px;--f7-fab-label-font-size:inherit;--f7-fab-button-size:40px}.ios{--f7-fab-text-color:#fff;--f7-fab-border-radius:50px;--f7-fab-size:50px;--f7-fab-box-shadow:0px 2px 4px rgba(0,0,0,0.4);--f7-fab-extended-text-transform:uppercase;--f7-fab-extended-size:50px;--f7-fab-extended-text-padding:0 20px;--f7-fab-extended-text-font-weight:600;--f7-fab-extended-text-letter-spacing:0;--f7-fab-label-border-radius:4px;--f7-fab-label-box-shadow:0px 1px 2px rgba(0,0,0,0.4);--f7-fab-label-text-color:#333;--f7-fab-label-bg-color:#fff}.md{--f7-fab-border-radius:16px;--f7-fab-size:56px;--f7-fab-box-shadow:0px 1px 2px rgba(0,0,0,0.25);--f7-fab-extended-size:56px;--f7-fab-extended-text-padding:0 16px;--f7-fab-extended-text-font-weight:500;--f7-fab-extended-text-letter-spacing:0;--f7-fab-extended-text-transform:none;--f7-fab-label-border-radius:8px;--f7-fab-label-box-shadow:0px 1px 2px rgba(0,0,0,0.25)}.md,.md .dark,.md [class*=color-]{--f7-fab-bg-color:var(--f7-md-primary-container);--f7-fab-text-color:var(--f7-md-on-primary-container);--f7-fab-label-text-color:var(--f7-md-on-surface);--f7-fab-label-bg-color:var(--f7-md-surface-5)}.fab-backdrop{z-index:1400}.fab{position:absolute;z-index:1500}.fab a{--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.fab-left-bottom,.fab-left-center,.fab-left-top{left:calc(var(--f7-fab-margin) + var(--f7-safe-area-left))}.fab-right-bottom,.fab-right-center,.fab-right-top{right:calc(var(--f7-fab-margin) + var(--f7-safe-area-right))}.fab-center-top,.fab-left-top,.fab-right-top{top:var(--f7-fab-margin)}.fab-center-bottom,.fab-left-bottom,.fab-right-bottom{bottom:calc(var(--f7-fab-margin) + var(--f7-safe-area-bottom))}.fab-center-bottom,.fab-center-center,.fab-center-top{left:50%;transform:translateX(-50%)}.fab-center-center,.fab-left-center,.fab-right-center{top:50%;transform:translateY(-50%)}.fab-center-center{left:50%;top:50%;transform:translateX(-50%) translateY(-50%)}.fab-buttons a,.fab>a{align-items:center;background-color:var(--f7-fab-bg-color,var(--f7-theme-color));border-radius:var(--f7-fab-border-radius);box-shadow:var(--f7-fab-box-shadow);color:var(--f7-fab-text-color);display:flex;height:var(--f7-fab-size);justify-content:center;overflow:hidden;position:relative;transition-duration:.3s;width:var(--f7-fab-size);z-index:1}.fab>a i{left:50%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0) rotate(0deg) scale(1);transition:.3s}.fab>a i+i{opacity:0;transform:translate3d(-50%,-50%,0) rotate(-90deg) scale(.5)}.fab-buttons a{border-radius:var(--f7-fab-border-radius);height:var(--f7-fab-button-size);width:var(--f7-fab-button-size)}.fab-buttons{display:flex;pointer-events:none;position:absolute;visibility:hidden}.fab-buttons a{opacity:0}.fab-opened:not(.fab-morph)>a i{opacity:0;transform:translate3d(-50%,-50%,0) rotate(90deg) scale(.5)}.fab-opened:not(.fab-morph)>a i+i{opacity:1;transform:translate3d(-50%,-50%,0) rotate(0deg) scale(1)}.fab-opened .fab-buttons{pointer-events:auto;visibility:visible}.fab-opened .fab-buttons a{opacity:1;transform:translateZ(0) scale(1)!important}.fab-opened .fab-buttons a:nth-child(2){transition-delay:50ms}.fab-opened .fab-buttons a:nth-child(3){transition-delay:.1s}.fab-opened .fab-buttons a:nth-child(4){transition-delay:.15s}.fab-opened .fab-buttons a:nth-child(5){transition-delay:.2s}.fab-opened .fab-buttons a:nth-child(6){transition-delay:.25s}.fab-buttons-bottom,.fab-buttons-top{left:50%;margin-left:calc(var(--f7-fab-button-size)*-1/2);width:var(--f7-fab-button-size)}.fab-buttons-top{bottom:100%;flex-direction:column-reverse;margin-bottom:16px}.fab-buttons-top a{transform:translate3d(0,8px,0) scale(.3);transform-origin:center bottom}.fab-buttons-top a+a{margin-bottom:16px}.fab-buttons-bottom{flex-direction:column;margin-top:16px;top:100%}.fab-buttons-bottom a{transform:translate3d(0,-8px,0) scale(.3);transform-origin:center top}.fab-buttons-bottom a+a{margin-top:16px}.fab-buttons-left,.fab-buttons-right{height:var(--f7-fab-button-size);margin-top:calc(var(--f7-fab-button-size)*-1/2);top:50%}.fab-buttons-left{flex-direction:row-reverse;margin-right:16px;right:100%}.fab-buttons-left a{transform:translate3d(8px,0,0) scale(.3);transform-origin:right center}.fab-buttons-left a+a{margin-right:16px}.fab-buttons-right{left:100%;margin-left:16px}.fab-buttons-right a{transform:translate3d(-8px,0,0) scale(.3);transform-origin:left center}.fab-buttons-right a+a{margin-left:16px}.fab-buttons-center{height:100%;left:0;top:0;width:100%}.fab-buttons-center a{position:absolute}.fab-buttons-center a:first-child{bottom:100%;left:50%;margin-bottom:16px;margin-left:calc(var(--f7-fab-button-size)*-1/2);transform:translateY(-8px) scale(.3);transform-origin:center bottom}.fab-buttons-center a:nth-child(2){left:100%;margin-left:16px;margin-top:calc(var(--f7-fab-button-size)*-1/2);top:50%;transform:translateX(-8px) scale(.3);transform-origin:left center}.fab-buttons-center a:nth-child(3){left:50%;margin-left:calc(var(--f7-fab-button-size)*-1/2);margin-top:16px;top:100%;transform:translateY(8px) scale(.3);transform-origin:center top}.fab-buttons-center a:nth-child(4){margin-right:16px;margin-top:calc(var(--f7-fab-button-size)*-1/2);right:100%;top:50%;transform:translateX(8px) scale(.3);transform-origin:right center}.fab-morph{background:var(--f7-fab-bg-color,var(--f7-theme-color));border-radius:var(--f7-fab-border-radius);box-shadow:var(--f7-fab-box-shadow)}.fab-morph>a{background:none!important;box-shadow:none}.fab-opened.fab-morph>a i{opacity:0}.fab-morph,.fab-morph-target,.fab-morph>a{transition-duration:.25s}.fab-morph-target:not(.fab-morph-target-visible){display:none}.fab-extended{min-width:var(--f7-fab-extended-size);width:auto}.fab-extended>a{height:var(--f7-fab-extended-size);width:100%}.fab-extended>a i{left:calc(var(--f7-fab-extended-size)/2)}.fab-extended i~.fab-text{padding-left:var(--f7-fab-extended-size)}.fab-extended>a{width:100%!important}.fab-text{box-sizing:border-box;font-size:var(--f7-fab-extended-text-font-size);font-weight:var(--f7-fab-extended-text-font-weight);letter-spacing:var(--f7-fab-extended-text-letter-spacing);padding:var(--f7-fab-extended-text-padding);text-transform:var(--f7-fab-extended-text-transform)}.fab-label-button{overflow:visible!important}.fab-label{background:var(--f7-fab-label-bg-color);border-radius:var(--f7-fab-label-border-radius);box-shadow:var(--f7-fab-label-box-shadow);color:var(--f7-fab-label-text-color);font-size:var(--f7-fab-label-font-size);padding:var(--f7-fab-label-padding);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);white-space:nowrap}.fab-right-bottom .fab-label,.fab-right-center .fab-label,.fab-right-top .fab-label{margin-right:8px;right:100%}.fab-left-bottom .fab-label,.fab-left-center .fab-label,.fab-left-top .fab-label{left:100%;margin-left:8px}.navbars~* .fab-center-top,.navbars~* .fab-left-top,.navbars~* .fab-right-top,.navbars~.fab-center-top,.navbars~.fab-left-top,.navbars~.fab-right-top,.navbar~* .fab-center-top,.navbar~* .fab-left-top,.navbar~* .fab-right-top,.navbar~.fab-center-top,.navbar~.fab-left-top,.navbar~.fab-right-top{margin-top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .toolbar-top-ios~* .fab-center-top,.ios .toolbar-top-ios~* .fab-left-top,.ios .toolbar-top-ios~* .fab-right-top,.ios .toolbar-top-ios~.fab-center-top,.ios .toolbar-top-ios~.fab-left-top,.ios .toolbar-top-ios~.fab-right-top,.md .toolbar-top-md~* .fab-center-top,.md .toolbar-top-md~* .fab-left-top,.md .toolbar-top-md~* .fab-right-top,.md .toolbar-top-md~.fab-center-top,.md .toolbar-top-md~.fab-left-top,.md .toolbar-top-md~.fab-right-top,.toolbar-top~* .fab-center-top,.toolbar-top~* .fab-left-top,.toolbar-top~* .fab-right-top,.toolbar-top~.fab-center-top,.toolbar-top~.fab-left-top,.toolbar-top~.fab-right-top{margin-top:var(--f7-toolbar-height)}.ios .toolbar-bottom-ios~* .fab-center-bottom,.ios .toolbar-bottom-ios~* .fab-left-bottom,.ios .toolbar-bottom-ios~* .fab-right-bottom,.ios .toolbar-bottom-ios~.fab-center-bottom,.ios .toolbar-bottom-ios~.fab-left-bottom,.ios .toolbar-bottom-ios~.fab-right-bottom,.md .toolbar-bottom-md~* .fab-center-bottom,.md .toolbar-bottom-md~* .fab-left-bottom,.md .toolbar-bottom-md~* .fab-right-bottom,.md .toolbar-bottom-md~.fab-center-bottom,.md .toolbar-bottom-md~.fab-left-bottom,.md .toolbar-bottom-md~.fab-right-bottom,.toolbar-bottom~* .fab-center-bottom,.toolbar-bottom~* .fab-left-bottom,.toolbar-bottom~* .fab-right-bottom,.toolbar-bottom~.fab-center-bottom,.toolbar-bottom~.fab-left-bottom,.toolbar-bottom~.fab-right-bottom{margin-bottom:var(--f7-toolbar-height)}.ios .tabbar-icons.toolbar-bottom-ios~* .fab-center-bottom,.ios .tabbar-icons.toolbar-bottom-ios~* .fab-left-bottom,.ios .tabbar-icons.toolbar-bottom-ios~* .fab-right-bottom,.ios .tabbar-icons.toolbar-bottom-ios~.fab-center-bottom,.ios .tabbar-icons.toolbar-bottom-ios~.fab-left-bottom,.ios .tabbar-icons.toolbar-bottom-ios~.fab-right-bottom,.md .tabbar-icons.toolbar-bottom-md~* .fab-center-bottom,.md .tabbar-icons.toolbar-bottom-md~* .fab-left-bottom,.md .tabbar-icons.toolbar-bottom-md~* .fab-right-bottom,.md .tabbar-icons.toolbar-bottom-md~.fab-center-bottom,.md .tabbar-icons.toolbar-bottom-md~.fab-left-bottom,.md .tabbar-icons.toolbar-bottom-md~.fab-right-bottom,.tabbar-icons.toolbar-bottom~* .fab-center-bottom,.tabbar-icons.toolbar-bottom~* .fab-left-bottom,.tabbar-icons.toolbar-bottom~* .fab-right-bottom,.tabbar-icons.toolbar-bottom~.fab-center-bottom,.tabbar-icons.toolbar-bottom~.fab-left-bottom,.tabbar-icons.toolbar-bottom~.fab-right-bottom{margin-bottom:var(--f7-tabbar-icons-height)}.ios .tabbar-icons.toolbar-top-ios~* .fab-center-bottom,.ios .tabbar-icons.toolbar-top-ios~* .fab-left-bottom,.ios .tabbar-icons.toolbar-top-ios~* .fab-right-bottom,.ios .tabbar-icons.toolbar-top-ios~.fab-center-bottom,.ios .tabbar-icons.toolbar-top-ios~.fab-left-bottom,.ios .tabbar-icons.toolbar-top-ios~.fab-right-bottom,.md .tabbar-icons.toolbar-top-md~* .fab-center-bottom,.md .tabbar-icons.toolbar-top-md~* .fab-left-bottom,.md .tabbar-icons.toolbar-top-md~* .fab-right-bottom,.md .tabbar-icons.toolbar-top-md~.fab-center-bottom,.md .tabbar-icons.toolbar-top-md~.fab-left-bottom,.md .tabbar-icons.toolbar-top-md~.fab-right-bottom,.tabbar-icons.toolbar-top~* .fab-center-bottom,.tabbar-icons.toolbar-top~* .fab-left-bottom,.tabbar-icons.toolbar-top~* .fab-right-bottom,.tabbar-icons.toolbar-top~.fab-center-bottom,.tabbar-icons.toolbar-top~.fab-left-bottom,.tabbar-icons.toolbar-top~.fab-right-bottom{margin-top:var(--f7-tabbar-icons-height)}.messagebar~* .fab-center-bottom,.messagebar~* .fab-left-bottom,.messagebar~* .fab-right-bottom,.messagebar~.fab-center-bottom,.messagebar~.fab-left-bottom,.messagebar~.fab-right-bottom{margin-bottom:var(--f7-messagebar-height)}.ios .navbar+.toolbar-top-ios~* .fab-center-top,.ios .navbar+.toolbar-top-ios~* .fab-left-top,.ios .navbar+.toolbar-top-ios~* .fab-right-top,.ios .navbar+.toolbar-top-ios~.fab-center-top,.ios .navbar+.toolbar-top-ios~.fab-left-top,.ios .navbar+.toolbar-top-ios~.fab-right-top,.md .navbar+.toolbar-top-ios~* .fab-center-top,.md .navbar+.toolbar-top-ios~* .fab-left-top,.md .navbar+.toolbar-top-ios~* .fab-right-top,.md .navbar+.toolbar-top-ios~.fab-center-top,.md .navbar+.toolbar-top-ios~.fab-left-top,.md .navbar+.toolbar-top-ios~.fab-right-top,.navbar+.toolbar-top~* .fab-center-top,.navbar+.toolbar-top~* .fab-left-top,.navbar+.toolbar-top~* .fab-right-top,.navbar+.toolbar-top~.fab-center-top,.navbar+.toolbar-top~.fab-left-top,.navbar+.toolbar-top~.fab-right-top{margin-top:calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbar+.toolbar-top-ios.tabbar-icons~* .fab-center-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~* .fab-left-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~* .fab-right-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~.fab-center-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~.fab-left-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~.fab-right-top,.md .navbar+.toolbar-top-ios.tabbar-icons~* .fab-center-top,.md .navbar+.toolbar-top-ios.tabbar-icons~* .fab-left-top,.md .navbar+.toolbar-top-ios.tabbar-icons~* .fab-right-top,.md .navbar+.toolbar-top-ios.tabbar-icons~.fab-center-top,.md .navbar+.toolbar-top-ios.tabbar-icons~.fab-left-top,.md .navbar+.toolbar-top-ios.tabbar-icons~.fab-right-top,.navbar+.toolbar-top.tabbar-icons~* .fab-center-top,.navbar+.toolbar-top.tabbar-icons~* .fab-left-top,.navbar+.toolbar-top.tabbar-icons~* .fab-right-top,.navbar+.toolbar-top.tabbar-icons~.fab-center-top,.navbar+.toolbar-top.tabbar-icons~.fab-left-top,.navbar+.toolbar-top.tabbar-icons~.fab-right-top{margin-top:calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars+.toolbar-top-ios~* .fab-center-top,.ios .navbars+.toolbar-top-ios~* .fab-left-top,.ios .navbars+.toolbar-top-ios~* .fab-right-top,.ios .navbars+.toolbar-top-ios~.fab-center-top,.ios .navbars+.toolbar-top-ios~.fab-left-top,.ios .navbars+.toolbar-top-ios~.fab-right-top,.navbars+.toolbar-top~* .fab-center-top,.navbars+.toolbar-top~* .fab-left-top,.navbars+.toolbar-top~* .fab-right-top,.navbars+.toolbar-top~.fab-center-top,.navbars+.toolbar-top~.fab-left-top,.navbars+.toolbar-top~.fab-right-top{margin-top:calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars+.toolbar-top-ios.tabbar-icons~* .fab-center-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~* .fab-left-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~* .fab-right-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~.fab-center-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~.fab-left-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~.fab-right-top,.navbars+.toolbar-top.tabbar-icons~* .fab-center-top,.navbars+.toolbar-top.tabbar-icons~* .fab-left-top,.navbars+.toolbar-top.tabbar-icons~* .fab-right-top,.navbars+.toolbar-top.tabbar-icons~.fab-center-top,.navbars+.toolbar-top.tabbar-icons~.fab-left-top,.navbars+.toolbar-top.tabbar-icons~.fab-right-top{margin-top:calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .fab-buttons a.active-state,.ios .fab>a.active-state{background-color:var(--f7-fab-pressed-bg-color,var(--f7-theme-color-shade));transition-duration:0ms}.md .fab-buttons a.active-state,.md .fab>a.active-state{background-color:var(--f7-fab-pressed-bg-color,var(--f7-fab-bg-color,var(--f7-theme-color)))}:root{--f7-searchbar-input-border-width:0px;--f7-searchbar-input-border-color:transparent}.ios{--f7-searchbar-height:44px;--f7-searchbar-inner-padding-left:8px;--f7-searchbar-inner-padding-right:8px;--f7-searchbar-input-font-size:17px;--f7-searchbar-input-border-radius:8px;--f7-searchbar-input-height:32px;--f7-searchbar-inline-input-height:32px;--f7-searchbar-input-padding-horizontal:28px;--f7-searchbar-backdrop-bg-color:rgba(0,0,0,0.4);--f7-searchbar-in-page-content-margin:0px;--f7-searchbar-in-page-content-box-shadow:none;--f7-searchbar-in-page-content-border-radius:0;--f7-searchbar-in-page-content-input-border-radius:0;--f7-searchbar-placeholder-color:rgba(0,0,0,0.4);--f7-searchbar-input-text-color:#000;--f7-searchbar-search-icon-color:rgba(0,0,0,0.4);--f7-searchbar-input-bg-color:#e4e4e4}.ios .dark,.ios.dark{--f7-searchbar-placeholder-color:rgba(255,255,255,0.4);--f7-searchbar-input-text-color:#fff;--f7-searchbar-search-icon-color:rgba(255,255,255,0.4);--f7-searchbar-input-bg-color:#2a2a2a}.md{--f7-searchbar-border-color:transparent;--f7-searchbar-height:48px;--f7-searchbar-inner-padding-left:8px;--f7-searchbar-inner-padding-right:8px;--f7-searchbar-input-font-size:16px;--f7-searchbar-input-border-radius:24px;--f7-searchbar-input-height:48px;--f7-searchbar-inline-input-height:48px;--f7-searchbar-inline-input-border-radius:24px;--f7-searchbar-input-padding-horizontal:16px;--f7-searchbar-inline-input-padding-horizontal:16px;--f7-searchbar-backdrop-bg-color:rgba(0,0,0,0.25);--f7-searchbar-in-page-content-margin:16px 0;--f7-searchbar-in-page-content-box-shadow:none;--f7-searchbar-in-page-content-border-radius:24px;--f7-searchbar-in-page-content-input-border-radius:24px;--f7-searchbar-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-searchbar-link-color:var(--f7-md-on-surface);--f7-searchbar-search-icon-color:var(--f7-md-on-surface);--f7-searchbar-input-clear-button-color:var(--f7-md-on-surface);--f7-searchbar-placeholder-color:var(--f7-md-on-surface-variant);--f7-searchbar-input-bg-color:var(--f7-md-secondary-container);--f7-searchbar-input-text-color:var(--f7-md-on-surface)}.searchbar{--f7-link-highlight-color:var(--f7-link-highlight-black);background-color:var(--f7-searchbar-bg-color,var(--f7-bars-bg-color));height:var(--f7-searchbar-height);position:relative;width:100%;z-index:200}.dark .searchbar{--f7-link-highlight-color:var(--f7-link-highlight-white)}.searchbar input[type=search]::-webkit-search-decoration{display:none}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .searchbar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-searchbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.ios .subnavbar .searchbar{-webkit-backdrop-filter:none;backdrop-filter:none;background-color:initial}.ios .subnavbar .searchbar:after,.searchbar.no-outline:after{display:none!important}.searchbar:after{background-color:var(--f7-searchbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.page>.searchbar:not(.searchbar-inline){z-index:600}.searchbar input[type=search],.searchbar input[type=text]{-webkit-appearance:none;appearance:none;background-color:var(--f7-searchbar-input-bg-color);border:var(--f7-searchbar-input-border-width) solid var(--f7-searchbar-input-border-color);border-radius:var(--f7-searchbar-input-border-radius);box-sizing:border-box;color:var(--f7-searchbar-input-text-color);display:block;font-family:inherit;font-size:var(--f7-searchbar-input-font-size);font-weight:400;height:100%;padding:0;padding-left:calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px));padding-right:calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-right, 0px));position:relative;width:100%}.searchbar input[type=search]::placeholder,.searchbar input[type=text]::placeholder{color:var(--f7-searchbar-placeholder-color);opacity:1}.searchbar input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}.searchbar .searchbar-input-wrap{flex-shrink:1;height:var(--f7-searchbar-input-height);position:relative;width:100%}.searchbar a{color:var(--f7-searchbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.page>.searchbar:not(.searchbar-inline){left:0;position:absolute;top:0}.page-content .searchbar:not(.searchbar-inline){border-radius:var(--f7-searchbar-in-page-content-border-radius);box-shadow:var(--f7-searchbar-in-page-content-box-shadow);margin:var(--f7-searchbar-in-page-content-margin);width:auto}.page-content .searchbar:not(.searchbar-inline) .searchbar-inner,.page-content .searchbar:not(.searchbar-inline) input[type=search],.page-content .searchbar:not(.searchbar-inline) input[type=text]{border-radius:var(--f7-searchbar-in-page-content-input-border-radius,var(--f7-searchbar-input-border-radius))}.searchbar .input-clear-button{color:var(--f7-searchbar-input-clear-button-color,var(--f7-input-clear-button-color))}.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-searchbar-height);pointer-events:none;position:absolute;transition-duration:.3s}.navbar .searchbar-expandable{background:transparent}.navbar .searchbar-expandable:after{display:none!important}.navbar .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbar .searchbar.searchbar-expandable .searchbar-inner{height:calc(100% - var(--f7-safe-area-top));top:var(--f7-safe-area-top)}.toolbar .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-toolbar-height)}.subnavbar .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-subnavbar-height)}.tabbar-icons .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-tabbar-icons-height)}.searchbar-inner{align-items:center;box-sizing:border-box;display:flex;height:100%;left:0;padding:0 calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left));position:absolute;top:0;width:100%}.searchbar-disable-button{-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;margin:0;opacity:0;outline:0;padding:0;pointer-events:none;width:auto}.searchbar-icon{background-position:50%;background-repeat:no-repeat;pointer-events:none}.searchbar-icon:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-searchbar-search-icon-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.searchbar-backdrop{background:var(--f7-searchbar-backdrop-bg-color);height:100%;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transform:translateZ(0);transition-duration:.3s;width:100%;z-index:100}.searchbar-backdrop.searchbar-backdrop-in{opacity:1;pointer-events:auto}.page-content>.searchbar-backdrop{position:fixed}.searchbar-not-found{display:none}.hidden-by-searchbar,.list .hidden-by-searchbar,.list li.hidden-by-searchbar,.list.li.hidden-by-searchbar{display:none!important}.navbar.with-searchbar-expandable-enabled,.navbar.with-searchbar-expandable-enabled-no-transition{--f7-navbar-large-collapse-progress:1}.navbar.with-searchbar-expandable-closing .navbar-bg,.navbar.with-searchbar-expandable-closing .title-large,.navbar.with-searchbar-expandable-closing .title-large-text,.navbar.with-searchbar-expandable-enabled .navbar-bg,.navbar.with-searchbar-expandable-enabled .title-large,.navbar.with-searchbar-expandable-enabled .title-large-text{transition-duration:.3s}.page-content.with-searchbar-expandable-enabled{height:calc(100% + var(--f7-navbar-large-title-height));transform:translateY(calc(var(--f7-navbar-large-title-height)*-1));transition-duration:.3s;transition-property:transform}.page-content.with-searchbar-expandable-closing{transition-duration:.3s}.navbars~.page:not(.no-navbar)>.searchbar,.navbar~.page:not(.no-navbar)>.searchbar,.page>.navbar~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbars~.page-with-navbar-large:not(.no-navbar) .searchbar,.navbar~.page-with-navbar-large:not(.no-navbar) .searchbar,.page-with-navbar-large .navbar~* .searchbar,.page-with-navbar-large .navbar~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.navbars~.page-with-navbar-large:not(.no-navbar) .page-content .searchbar,.page-with-navbar-large .page-content .searchbar{top:0;transform:none}.searchbar~*{--f7-page-searchbar-offset:var(--f7-searchbar-height)}.ios .page>.toolbar-top-ios~.searchbar,.md .page>.toolbar-top-md~.searchbar,.page>.toolbar-top~.searchbar{top:var(--f7-toolbar-height)}.ios .page>.tabbar-icons.toolbar-top-ios~.searchbar,.md .page>.tabbar-icons.toolbar-top-md~.searchbar,.page>.tabbar-icons.toolbar-top~.searchbar{top:var(--f7-tabbar-icons-height)}.ios .page>.navbar~.toolbar-top-ios~.searchbar,.md .page>.navbar~.toolbar-top-md~.searchbar,.page>.navbar~.toolbar-top~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top))}.ios .page>.navbar~.tabbar-icons.toolbar-top-ios~.searchbar,.md .page>.navbar~.tabbar-icons.toolbar-top-md~.searchbar,.page>.navbar~.tabbar-icons.toolbar-top~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top))}.searchbar.searchbar-inline{background-color:initial;background-image:none;height:auto;width:auto}.searchbar.searchbar-inline:after,.searchbar.searchbar-inline:before{display:none!important}.searchbar.searchbar-inline .searchbar-input-wrap{height:var(--f7-searchbar-inline-input-height,var(--f7-searchbar-input-height))}.searchbar.searchbar-inline .searchbar-inner{height:auto;padding:0;position:static;width:auto}.searchbar.searchbar-inline input[type=search],.searchbar.searchbar-inline input[type=text]{border-radius:var(--f7-searchbar-inline-input-border-radius,var(--f7-searchbar-input-border-radius));font-size:var(--f7-searchbar-inline-input-font-size,var(--f7-searchbar-input-font-size));padding-left:calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-left, 0px));padding-right:calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-right, 0px))}.ios .searchbar input[type=search],.ios .searchbar input[type=text]{z-index:30}.ios .searchbar .input-clear-button{right:7px;z-index:40}.ios .searchbar-icon{height:13px;left:8px;margin-top:-6px;position:absolute;top:50%;width:13px;z-index:40}.ios .searchbar-icon:after{content:"search_ios";line-height:13px}.ios .searchbar-disable-button{color:var(--f7-searchbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)));display:none;flex-shrink:0;font-size:17px;transform:translateZ(0);transition-duration:.3s}.ios .searchbar-disable-button.active-state{opacity:.3!important;transition-duration:0ms}.ios .searchbar-enabled .searchbar-disable-button{margin-left:8px;opacity:1;pointer-events:auto}.ios .searchbar:not(.searchbar-enabled) .searchbar-disable-button{transition-duration:.3s!important}.ios .searchbar-expandable{bottom:0;height:0;left:0;opacity:1;overflow:hidden;transform:translateZ(0);width:100%}.ios .searchbar-expandable .searchbar-disable-button{display:block;margin-left:8px;opacity:1}.ios .searchbar-expandable .searchbar-inner{height:var(--f7-searchbar-expandable-size)}.ios .navbar.with-searchbar-expandable-closing .navbar-bg,.ios .navbar.with-searchbar-expandable-enabled .navbar-bg{transition-property:transform,opacity}.ios .navbar.with-searchbar-expandable-closing .left,.ios .navbar.with-searchbar-expandable-closing .navbar-bg,.ios .navbar.with-searchbar-expandable-closing .right,.ios .navbar.with-searchbar-expandable-closing .title,.ios .navbar.with-searchbar-expandable-enabled .left,.ios .navbar.with-searchbar-expandable-enabled .navbar-bg,.ios .navbar.with-searchbar-expandable-enabled .right,.ios .navbar.with-searchbar-expandable-enabled .title{transition-duration:.3s}.ios .navbar.with-searchbar-expandable-enabled .left,.ios .navbar.with-searchbar-expandable-enabled .right,.ios .navbar.with-searchbar-expandable-enabled .title,.ios .navbar.with-searchbar-expandable-enabled-no-transition .left,.ios .navbar.with-searchbar-expandable-enabled-no-transition .right,.ios .navbar.with-searchbar-expandable-enabled-no-transition .title{opacity:0!important;transform:translateY(calc(var(--f7-navbar-height)*-1))}.ios .searchbar-expandable.searchbar-enabled{height:var(--f7-searchbar-expandable-size);opacity:1;pointer-events:auto}.md .searchbar-disable-button,.md .searchbar-icon{position:absolute;top:50%;transition-duration:.3s}.md .searchbar-icon{align-items:center;display:flex;height:48px;justify-content:center;left:0;left:var(--f7-safe-area-left);top:0;width:48px}.md .searchbar-icon:after{content:"search_md";height:auto;line-height:1.2;width:auto}.md .searchbar-disable-button{color:var(--f7-searchbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)));display:block;font-size:0!important;height:48px;left:calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left));margin-top:-24px;transform:rotate(-90deg) scale(.5);width:48px}.md .searchbar-disable-button:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";content:"arrow_left_md";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;line-height:48px;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-disable-button{opacity:1;pointer-events:auto;transform:rotate(0deg) scale(1)}.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-icon{opacity:0;transform:rotate(90deg) scale(.5)}.md .searchbar{--f7-searchbar-input-extra-padding-left:34px}.md .searchbar .input-clear-button{height:48px;margin-top:-24px;right:0;width:48px}.md .searchbar .input-clear-button:after{content:"delete_round_md";line-height:48px;opacity:1}.md .searchbar .input-clear-button:before{display:none}.md .searchbar-inline{--f7-searchbar-input-extra-padding-left:32px}.md .page>.searchbar,.md .searchbar-expandable,.md .subnavbar .searchbar{--f7-searchbar-input-extra-padding-left:34px}.md .page>.searchbar .searchbar-disable-button,.md .searchbar-expandable .searchbar-disable-button,.md .subnavbar .searchbar .searchbar-disable-button{left:calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left))}.md .page>.searchbar .searchbar-icon,.md .searchbar-expandable .searchbar-icon,.md .subnavbar .searchbar .searchbar-icon{left:var(--f7-safe-area-left)}.md .searchbar-expandable{--f7-searchbar-inner-padding-left:4px;--f7-searchbar-inner-padding-right:4px;background-color:var(--f7-searchbar-input-bg-color);border-radius:calc(var(--f7-searchbar-expandable-size));bottom:0;height:var(--f7-searchbar-expandable-size);left:100%;margin-left:calc(var(--f7-searchbar-expandable-size)*-1);margin-top:calc(var(--f7-searchbar-expandable-size)*-1/2);opacity:0;transform:translateZ(0);width:calc(var(--f7-searchbar-expandable-size))}.md .searchbar-expandable.searchbar-enabled{border-radius:0;left:0;margin-left:0;margin-top:0;opacity:1;pointer-events:auto;width:100%}:root{--f7-message-text-header-opacity:0.65;--f7-message-text-header-font-size:12px;--f7-message-text-footer-opacity:0.65;--f7-message-text-footer-font-size:12px;--f7-message-bubble-line-height:1.2;--f7-message-header-font-size:12px;--f7-message-footer-font-size:11px;--f7-message-name-font-size:12px;--f7-message-name-font-weight:inherit;--f7-message-avatar-border-radius:50%;--f7-messages-title-font-weight:inherit;--f7-message-typing-indicator-bg-color:#000}:root .dark,:root.dark{--f7-message-typing-indicator-bg-color:#fff}.ios{--f7-message-text-header-text-color:inherit;--f7-message-text-footer-text-color:inherit;--f7-messages-title-font-size:11px;--f7-message-avatar-size:29px;--f7-message-margin:10px;--f7-message-bubble-min-height:32px;--f7-message-bubble-font-size:17px;--f7-message-bubble-border-radius:16px;--f7-message-bubble-padding-vertical:6px;--f7-message-bubble-padding-horizontal:16px;--f7-message-typing-indicator-opacity:0.35;--f7-message-sent-text-color:#fff;--f7-messages-content-bg-color:#fff;--f7-message-received-text-color:#000;--f7-message-received-bg-color:#e5e5ea;--f7-messages-title-text-color:rgba(0,0,0,0.45);--f7-message-header-text-color:rgba(0,0,0,0.45);--f7-message-footer-text-color:rgba(0,0,0,0.45);--f7-message-name-text-color:rgba(0,0,0,0.45)}.ios .dark,.ios.dark{--f7-message-received-bg-color:#252525;--f7-message-received-text-color:#fff;--f7-messages-content-bg-color:transparent;--f7-messages-title-text-color:rgba(255,255,255,0.54);--f7-message-header-text-color:rgba(255,255,255,0.54);--f7-message-name-text-color:rgba(255,255,255,0.54);--f7-message-footer-text-color:rgba(255,255,255,0.54)}.md{--f7-messages-content-bg-color:transparent;--f7-messages-title-font-size:12px;--f7-message-avatar-size:32px;--f7-message-margin:16px;--f7-message-bubble-min-height:40px;--f7-message-bubble-font-size:16px;--f7-message-bubble-border-radius:20px;--f7-message-bubble-padding-vertical:10px;--f7-message-bubble-padding-horizontal:16px;--f7-message-typing-indicator-opacity:0.6}.md,.md .dark,.md [class*=color-]{--f7-message-sent-bg-color:var(--f7-md-primary);--f7-message-sent-text-color:var(--f7-md-on-primary);--f7-message-received-bg-color:var(--f7-md-surface-variant);--f7-message-received-text-color:var(--f7-md-on-surface);--f7-message-text-header-text-color:var(--f7-md-on-surface-variant);--f7-message-text-footer-text-color:var(--f7-md-on-surface-variant);--f7-messages-title-text-color:var(--f7-md-on-surface-variant);--f7-message-header-text-color:var(--f7-md-on-surface-variant);--f7-message-footer-text-color:var(--f7-md-on-surface-variant);--f7-message-name-text-color:var(--f7-md-on-surface-variant)}.messages,.messages-content{background:var(--f7-messages-content-bg-color)}.messages{display:flex;flex-direction:column;min-height:100%;position:relative;z-index:1}.message,.messages-title{margin-top:var(--f7-message-margin)}.message:last-child,.messages-title:last-child{margin-bottom:var(--f7-message-margin)}.messages-title{color:var(--f7-messages-title-text-color);font-size:var(--f7-messages-title-font-size);font-weight:var(--f7-messages-title-font-weight);line-height:1;text-align:center;width:100%}.message{align-items:flex-end;box-sizing:border-box;display:flex;max-width:70%;position:relative;transform:translateZ(0);z-index:1}.message-avatar{align-self:flex-end;background-size:cover;border-radius:var(--f7-message-avatar-border-radius);flex-shrink:0;height:var(--f7-message-avatar-size);position:relative;width:var(--f7-message-avatar-size)}.message-content{display:flex;flex-direction:column;position:relative}.message-footer,.message-header,.message-name{line-height:1}.message-header{color:var(--f7-message-header-text-color);font-size:var(--f7-message-header-font-size)}.message-footer{color:var(--f7-message-footer-text-color);font-size:var(--f7-message-footer-font-size);margin-bottom:-1em}.message-name{color:var(--f7-message-name-text-color);font-size:var(--f7-message-name-font-size);font-weight:var(--f7-message-name-font-weight)}.message-bubble{border-radius:var(--f7-message-bubble-border-radius);box-sizing:border-box;display:flex;flex-direction:column;font-size:var(--f7-message-bubble-font-size);line-height:var(--f7-message-bubble-line-height);min-height:var(--f7-message-bubble-min-height);padding:var(--f7-message-bubble-padding-vertical) var(--f7-message-bubble-padding-horizontal);position:relative;word-break:break-word}.message-image img{display:block;height:auto;max-width:100%;width:auto}.message-text-footer,.message-text-header{line-height:1}.message-text-header{color:var(--f7-message-text-header-text-color);font-size:var(--f7-message-text-header-font-size);opacity:var(--f7-message-text-header-opacity)}.message-text-footer{color:var(--f7-message-text-footer-text-color);font-size:var(--f7-message-text-footer-font-size);opacity:var(--f7-message-text-footer-opacity)}.message-text{text-align:left}.message-sent{align-self:flex-end;flex-direction:row-reverse;text-align:right}.message-sent .message-bubble{background:var(--f7-message-sent-bg-color,var(--f7-theme-color));color:var(--f7-message-sent-text-color)}.message-sent .message-content{align-items:flex-end}.message-received{flex-direction:row}.message-received .message-bubble{background:var(--f7-message-received-bg-color);color:var(--f7-message-received-text-color)}.message-received .message-content{align-items:flex-start}.message:not(.message-last) .message-avatar{opacity:0}.message.message-same-footer .message-footer,.message.message-same-header .message-header,.message.message-same-name .message-name,.message:not(.message-first) .message-name{display:none}.message-appear-from-bottom{animation:message-appear-from-bottom .3s}.message-appear-from-top{animation:message-appear-from-top .3s}.message-typing-indicator{display:inline-block;font-size:0;vertical-align:middle}.message-typing-indicator>div{background:var(--f7-message-typing-indicator-bg-color);border-radius:50%;display:inline-block;opacity:var(--f7-message-typing-indicator-opacity);position:relative;vertical-align:middle}@keyframes message-appear-from-bottom{0%{transform:translate3d(0,100%,0)}to{transform:translateZ(0)}}@keyframes message-appear-from-top{0%{transform:translate3d(0,-100%,0)}to{transform:translateZ(0)}}.ios .message-footer b,.ios .message-header b,.ios .message-name b,.ios .messages-title b{font-weight:600}.ios .message-header,.ios .message-name{margin-bottom:3px}.ios .message-footer{margin-top:3px}.ios .message-bubble{min-width:48px}.ios .message-image{margin:var(--f7-message-bubble-padding-vertical) calc(var(--f7-message-bubble-padding-horizontal)*-1)}.ios .message-image:first-child{margin-top:calc(var(--f7-message-bubble-padding-vertical)*-1)}.ios .message-image:first-child img{border-top-left-radius:var(--f7-message-bubble-border-radius);border-top-right-radius:var(--f7-message-bubble-border-radius)}.ios .message-image:last-child{margin-bottom:calc(var(--f7-message-bubble-padding-vertical)*-1)}.ios .message-image:last-child img{border-bottom-left-radius:var(--f7-message-bubble-border-radius);border-bottom-right-radius:var(--f7-message-bubble-border-radius)}.ios .message-text-header{margin-bottom:3px}.ios .message-text-footer{margin-top:3px}.ios .message-received{margin-left:calc(10px + var(--f7-safe-area-left))}.ios .message-received .message-footer,.ios .message-received .message-header,.ios .message-received .message-name{margin-left:var(--f7-message-bubble-padding-horizontal)}.ios .message-received .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 42% 46% 56%;padding-left:calc(var(--f7-message-bubble-padding-horizontal) + 6px)}.ios .message-received .message-image{margin-left:calc((var(--f7-message-bubble-padding-horizontal) + 6px)*-1)}.ios .message-received.message-tail .message-bubble{border-radius:var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0}.ios .message-received.message-tail:not(.message-typing) .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 42% 46% 56%}.ios .message-received.message-tail:not(.message-typing) .message-bubble .message-image:last-child img{border-bottom-left-radius:0}.ios .message-sent{margin-right:calc(10px + var(--f7-safe-area-right))}.ios .message-sent .message-footer,.ios .message-sent .message-header,.ios .message-sent .message-name{margin-right:var(--f7-message-bubble-padding-horizontal)}.ios .message-sent .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 56% 46% 42%;padding-right:calc(var(--f7-message-bubble-padding-horizontal) + 6px)}.ios .message-sent .message-image{margin-right:calc((var(--f7-message-bubble-padding-horizontal) + 6px)*-1)}.ios .message-sent.message-tail .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 56% 46% 42%;border-radius:var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0 var(--f7-message-bubble-border-radius)}.ios .message-sent.message-tail .message-bubble .message-image:last-child img{border-bottom-right-radius:0}.ios .message+.message:not(.message-first){margin-top:1px}.ios .message-received.message-typing .message-content:after,.ios .message-received.message-typing .message-content:before{background:var(--f7-message-received-bg-color);border-radius:50%;content:"";position:absolute}.ios .message-received.message-typing .message-content:after{bottom:0;height:11px;left:4px;width:11px}.ios .message-received.message-typing .message-content:before{bottom:-4px;height:6px;left:-1px;width:6px}.ios .message-typing-indicator>div{height:9px;width:9px}.ios .message-typing-indicator>div+div{margin-left:4px}.ios .message-typing-indicator>div:first-child{animation:ios-message-typing-indicator .9s infinite}.ios .message-typing-indicator>div:nth-child(2){animation:ios-message-typing-indicator .9s .15s infinite}.ios .message-typing-indicator>div:nth-child(3){animation:ios-message-typing-indicator .9s .3s infinite}@keyframes ios-message-typing-indicator{0%{opacity:.35}25%{opacity:.2}50%{opacity:.2}}.md .message-footer b,.md .message-header b,.md .message-name b,.md .messages-title b{font-weight:500}.md .message-header,.md .message-name{margin-bottom:2px}.md .message-footer{margin-top:2px}.md .message-text-header{margin-bottom:4px}.md .message-text-footer{margin-top:4px}.md .message-image{margin:calc(var(--f7-message-bubble-padding-vertical)*-1) calc(var(--f7-message-bubble-padding-horizontal)*-1)}.md .message-image,.md .message-image img{border-radius:var(--f7-message-bubble-border-radius)}.md .message-received{margin-left:calc(8px + var(--f7-safe-area-left))}.md .message-received .message-footer,.md .message-received .message-header,.md .message-received .message-name{margin-left:16px}.md .message-received.message-first:not(.message-last) .message-bubble,.md .message-received.message-first:not(.message-last) .message-image,.md .message-received.message-first:not(.message-last) .message-image img{border-bottom-left-radius:4px}.md .message-received.message-last:not(.message-first) .message-bubble,.md .message-received.message-last:not(.message-first) .message-image,.md .message-received.message-last:not(.message-first) .message-image img{border-top-left-radius:4px}.md .message-received:not(.message-last):not(.message-first) .message-bubble,.md .message-received:not(.message-last):not(.message-first) .message-image,.md .message-received:not(.message-last):not(.message-first) .message-image img{border-bottom-left-radius:4px;border-top-left-radius:4px}.md .message-received .message-avatar+.message-content{margin-left:8px}.md .message-sent{margin-right:calc(8px + var(--f7-safe-area-right))}.md .message-sent .message-footer,.md .message-sent .message-header,.md .message-sent .message-name{margin-right:16px}.md .message-sent.message-first:not(.message-last) .message-bubble,.md .message-sent.message-first:not(.message-last) .message-image,.md .message-sent.message-first:not(.message-last) .message-image img{border-bottom-right-radius:4px}.md .message-sent.message-last:not(.message-first) .message-bubble,.md .message-sent.message-last:not(.message-first) .message-image,.md .message-sent.message-last:not(.message-first) .message-image img{border-top-right-radius:4px}.md .message-sent:not(.message-last):not(.message-first) .message-bubble,.md .message-sent:not(.message-last):not(.message-first) .message-image,.md .message-sent:not(.message-last):not(.message-first) .message-image img{border-bottom-right-radius:4px;border-top-right-radius:4px}.md .message-sent .message-avatar+.message-content{margin-right:var(--f7-message-bubble-padding-horizontal)}.md .message+.message:not(.message-first){margin-top:2px}.md .message-typing-indicator>div{height:6px;width:6px}.md .message-typing-indicator>div+div{margin-left:6px}.md .message-typing-indicator>div:first-child{animation:md-message-typing-indicator .9s infinite}.md .message-typing-indicator>div:nth-child(2){animation:md-message-typing-indicator .9s .15s infinite}.md .message-typing-indicator>div:nth-child(3){animation:md-message-typing-indicator .9s .3s infinite}@keyframes md-message-typing-indicator{0%{transform:translateY(0)}25%{transform:translateY(-5px)}50%{transform:translateY(0)}}:root{--f7-messagebar-attachments-height:155px;--f7-messagebar-sheet-height:252px;--f7-messagebar-sheet-landscape-height:192px}.ios{--f7-messagebar-height:44px;--f7-messagebar-font-size:17px;--f7-messagebar-textarea-bg-color:transparent;--f7-messagebar-border-color:transparent;--f7-messagebar-textarea-border-radius:17px;--f7-messagebar-textarea-padding:6px 16px;--f7-messagebar-textarea-height:34px;--f7-messagebar-textarea-font-size:17px;--f7-messagebar-textarea-line-height:20px;--f7-messagebar-sheet-bg-color:#d1d5da;--f7-messagebar-sheet-border-color:transparent;--f7-messagebar-attachment-border-radius:12px;--f7-messagebar-attachment-height:155px;--f7-messagebar-attachment-landscape-height:120px;--f7-messagebar-textarea-placeholder-color:rgba(0,0,0,0.4);--f7-messagebar-textarea-text-color:#000;--f7-messagebar-textarea-border:1px solid #c8c8cd;--f7-messagebar-attachments-border-color:#c8c8cd;--f7-messagebar-bg-color:#fff;--f7-messagebar-bg-color-rgb:255,255,255}.ios .dark,.ios.dark{--f7-messagebar-textarea-placeholder-color:rgba(255,255,255,0.4);--f7-messagebar-textarea-text-color:#fff;--f7-messagebar-textarea-border:1px solid var(--f7-bars-border-color);--f7-messagebar-attachments-border-color:var(--f7-bars-border-color);--f7-messagebar-bg-color:var(--f7-bars-bg-color);--f7-messagebar-bg-color-rgb:var(--f7-bars-bg-color-rgb)}.md{--f7-messagebar-height:64px;--f7-messagebar-font-size:16px;--f7-messagebar-textarea-border-radius:24px;--f7-messagebar-textarea-padding:12px 16px;--f7-messagebar-textarea-height:48px;--f7-messagebar-textarea-font-size:16px;--f7-messagebar-textarea-line-height:22px;--f7-messagebar-textarea-border:1px solid transparent;--f7-messagebar-attachment-border-radius:12px;--f7-messagebar-attachment-height:72px;--f7-messagebar-attachment-landscape-height:72px;--f7-messagebar-border-color:transparent;--f7-messagebar-attachments-border-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-messagebar-textarea-placeholder-color:var(--f7-md-on-surface-variant);--f7-messagebar-textarea-bg-color:var(--f7-md-surface-variant);--f7-messagebar-bg-color:var(--f7-md-surface);--f7-messagebar-textarea-text-color:var(--f7-md-on-surface);--f7-messagebar-sheet-bg-color:var(--f7-md-surface);--f7-messagebar-sheet-border-color:var(--f7-md-outline-variant);--f7-messagebar-link-color:var(--f7-md-on-surface)}.messagebar{background:var(--f7-messagebar-bg-color);bottom:0;font-size:var(--f7-messagebar-font-size);height:auto;min-height:var(--f7-messagebar-height);padding-bottom:var(--f7-safe-area-bottom);transform:translateZ(0)}.messagebar:before{background-color:var(--f7-messagebar-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .messagebar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-messagebar-bg-color-rgb),var(--f7-bars-translucent-opacity))}}.messagebar.no-outline:before,.messagebar.toolbar-hidden:after{display:none!important}.messagebar .toolbar-inner{bottom:auto;height:auto;padding-left:calc(var(--f7-messagebar-inner-padding-left, var(--f7-toolbar-inner-padding-left)) + var(--f7-safe-area-left));padding-right:calc(var(--f7-messagebar-inner-padding-right, var(--f7-toolbar-inner-padding-right)) + var(--f7-safe-area-right));position:relative;top:auto}.messagebar.messagebar-sheet-visible>.toolbar-inner{bottom:0}.messagebar .messagebar-area{flex-shrink:1;overflow:hidden;position:relative;width:100%}.messagebar textarea{background-color:var(--f7-messagebar-textarea-bg-color);border:var(--f7-messagebar-textarea-border);border-radius:var(--f7-messagebar-textarea-border-radius);color:var(--f7-messagebar-textarea-text-color);flex-shrink:1;font-size:var(--f7-messagebar-textarea-font-size);height:var(--f7-messagebar-textarea-height);line-height:var(--f7-messagebar-textarea-line-height);padding:var(--f7-messagebar-textarea-padding);width:100%}.messagebar textarea::placeholder{color:var(--f7-messagebar-textarea-placeholder-color)}.messagebar a.link{align-self:flex-end;color:var(--f7-messagebar-link-color,var(--f7-theme-color));flex-shrink:0}.messagebar-attachments{-webkit-overflow-scrolling:touch;box-sizing:border-box;font-size:0;overflow:auto;position:relative;white-space:nowrap;width:100%}.messagebar:not(.messagebar-attachments-visible) .messagebar-attachments{display:none}.messagebar-attachment{background-position:50%;background-repeat:no-repeat;background-size:cover;border-radius:var(--f7-messagebar-attachment-border-radius);display:inline-block;height:var(--f7-messagebar-attachment-height);position:relative;vertical-align:middle;white-space:normal}@media (orientation:landscape){.messagebar-attachment{height:var(--f7-messagebar-attachment-landscape-height)}}.messagebar-attachment img{border-radius:var(--f7-messagebar-attachment-border-radius);display:block;height:100%;width:auto}.messagebar-sheet{-webkit-overflow-scrolling:touch;align-content:flex-start;background-color:var(--f7-messagebar-sheet-bg-color);border-top:1px solid var(--f7-messagebar-sheet-border-color);display:flex;flex-direction:column;flex-wrap:wrap;height:var(--f7-messagebar-sheet-height);overflow:auto;padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right)}@media (orientation:landscape){.messagebar-sheet{height:var(--f7-messagebar-sheet-landscape-height)}}.messagebar-sheet-image{background-position:50%;background-repeat:no-repeat;background-size:cover}.messagebar-sheet-image>img{border-radius:inherit;height:100%;object-fit:cover;object-position:center;transition-duration:.2s;width:100%}.messagebar-attachment-delete{border-radius:50%;box-sizing:border-box;cursor:pointer;display:block;position:absolute}.messagebar-attachment-delete:after,.messagebar-attachment-delete:before{content:"";left:50%;position:absolute;top:50%}.messagebar-attachment-delete:after{transform:rotate(45deg)}.messagebar-attachment-delete:before{transform:rotate(-45deg)}.messagebar:not(.messagebar-sheet-visible) .messagebar-sheet{display:none}.messagebar~*{--f7-page-toolbar-bottom-offset:var(--f7-messagebar-height)}.ios .messagebar a.link.icon-only:first-child{margin-left:-8px}.ios .messagebar a.link.icon-only:last-child{margin-right:-8px}.ios .messagebar .messagebar-area+a.link:not(.icon-only),.ios .messagebar a.link:not(.icon-only)+.messagebar-area{margin-left:8px}.ios .messagebar-area{margin-bottom:5px;margin-top:5px}.ios .messagebar-attachments{border:1px solid var(--f7-messagebar-attachments-border-color);border-bottom:none;border-radius:var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;padding:5px}.ios .messagebar-attachments-visible .messagebar-attachments+textarea{border-radius:0 0 var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius)}.ios .messagebar-attachment{font-size:14px}.ios .messagebar-attachment+.messagebar-attachment{margin-left:8px}.ios .messagebar-attachment-delete{background:#7d7e80;border:2px solid #fff;box-shadow:0 0 2px rgba(0,0,0,.2);height:20px;right:5px;top:5px;width:20px}.ios .messagebar-attachment-delete:after,.ios .messagebar-attachment-delete:before{background:#fff;height:2px;margin-left:-5px;margin-top:-1px;width:10px}.ios .messagebar-sheet-image,.ios .messagebar-sheet-item{box-sizing:border-box;flex-shrink:0;height:calc((var(--f7-messagebar-sheet-height) - 2px)/2);margin-left:1px;margin-top:1px;overflow:hidden;position:relative;width:calc((var(--f7-messagebar-sheet-height) - 2px)/2)}@media (orientation:landscape){.ios .messagebar-sheet-image,.ios .messagebar-sheet-item{height:calc((var(--f7-messagebar-sheet-landscape-height) - 2px)/2);width:calc((var(--f7-messagebar-sheet-landscape-height) - 2px)/2)}}.ios .messagebar-sheet-image .icon-checkbox,.ios .messagebar-sheet-image .icon-radio,.ios .messagebar-sheet-item .icon-checkbox,.ios .messagebar-sheet-item .icon-radio{bottom:8px;position:absolute;right:8px;z-index:1}.md .messagebar{--f7-toolbar-link-height:var(--f7-messagebar-height)}.md .messagebar-attachments{border-bottom:1px solid var(--f7-messagebar-attachments-border-color);padding:16px 16px 0}.md .messagebar-attachment img{height:var(--f7-messagebar-attachment-height);object-fit:cover;object-position:center;width:var(--f7-messagebar-attachment-height)}.md .messagebar-attachment+.messagebar-attachment{margin-left:16px}.md .messagebar-attachments-visible .messagebar-attachments{background:var(--f7-messagebar-textarea-bg-color);border-radius:var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0}.md .messagebar-attachments-visible textarea{border-top-left-radius:0;border-top-right-radius:0}.md .messagebar-area{margin-bottom:8px;margin-top:8px}.md .messagebar-attachment-delete{background-color:var(--f7-md-inverse-surface);border:2px solid var(--f7-messagebar-textarea-bg-color);border-radius:24px;height:24px;right:-6px;top:-6px;width:24px}.md .messagebar-attachment-delete:after,.md .messagebar-attachment-delete:before{background:var(--f7-messagebar-textarea-bg-color);height:2px;margin-left:-6px;margin-top:-1px;width:12px}.md .messagebar-sheet-image,.md .messagebar-sheet-item{--f7-touch-ripple-color:transparent;border-radius:4px;box-sizing:border-box;flex-shrink:0;height:calc((var(--f7-messagebar-sheet-height) - 24px)/2);margin-left:8px;margin-top:8px;overflow:hidden;position:relative;width:calc((var(--f7-messagebar-sheet-height) - 24px)/2)}@media (orientation:landscape){.md .messagebar-sheet-image,.md .messagebar-sheet-item{height:calc((var(--f7-messagebar-sheet-landscape-height) - 24px)/2);width:calc((var(--f7-messagebar-sheet-landscape-height) - 8px)/2)}}.md .messagebar-sheet-image input:checked~img,.md .messagebar-sheet-item input:checked~img{transform:scale(.85)}.md .messagebar-sheet-image input:checked~.icon-checkbox,.md .messagebar-sheet-image input:checked~.icon-radio,.md .messagebar-sheet-item input:checked~.icon-checkbox,.md .messagebar-sheet-item input:checked~.icon-radio{transform:translate(-50%,-50%) scale(1)}.md .messagebar-sheet-image .icon-checkbox,.md .messagebar-sheet-image .icon-radio,.md .messagebar-sheet-item .icon-checkbox,.md .messagebar-sheet-item .icon-radio{--f7-checkbox-inactive-color:var(--f7-md-surface);--f7-checkbox-active-color:var(--f7-md-surface);align-items:center;border:none;border-radius:50%;display:flex;height:32px;justify-content:center;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(.85);width:32px;z-index:1}.md .messagebar-sheet-image .icon-checkbox:after,.md .messagebar-sheet-image .icon-radio:after,.md .messagebar-sheet-item .icon-checkbox:after,.md .messagebar-sheet-item .icon-radio:after{color:var(--f7-md-on-surface);font-size:18px;height:100%;left:0;line-height:32px;position:static;width:auto}@font-face{font-family:swiper-icons;font-style:normal;font-weight:400;src:url("data:application/font-woff;charset=utf-8;base64, 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")}:root{--swiper-theme-color:#007aff}:host{display:block;margin-left:auto;margin-right:auto;position:relative;z-index:1}.swiper{display:block;list-style:none;margin-left:auto;margin-right:auto;overflow:hidden;overflow:clip;padding:0;position:relative;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{box-sizing:initial;display:flex;height:100%;position:relative;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);width:100%;z-index:1}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{display:block;flex-shrink:0;height:100%;position:relative;transition-property:transform;width:100%}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{-ms-overflow-style:none;overflow:auto;scrollbar-width:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);min-width:1px;width:100%}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(270deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(90deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(0deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(180deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top:4px solid transparent;box-sizing:border-box;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;transform-origin:50%;width:42px;z-index:10}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s linear infinite}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper:after{content:"";left:0;pointer-events:none;position:absolute;top:0}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper:after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper:after{height:var(--swiper-virtual-size);width:1px}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{align-items:center;color:var(--swiper-navigation-color,var(--swiper-theme-color));cursor:pointer;display:flex;height:var(--swiper-navigation-size);justify-content:center;margin-top:calc(0px - var(--swiper-navigation-size)/2);position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/44*27);z-index:10}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{cursor:auto;opacity:.35;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{cursor:auto;opacity:0;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{height:100%;object-fit:contain;transform-origin:center;width:100%}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);font-variant:normal;letter-spacing:0;line-height:1;text-transform:none!important}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:"prev"}.swiper-button-next,.swiper-rtl .swiper-button-prev{left:auto;right:var(--swiper-navigation-sides-offset,10px)}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:"next"}.swiper-pagination{position:absolute;text-align:center;transform:translateZ(0);transition:opacity .3s;z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);left:0;top:var(--swiper-pagination-top,auto);width:100%}.swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{position:relative;transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{background:var(--swiper-pagination-bullet-inactive-color,#000);border-radius:var(--swiper-pagination-bullet-border-radius,50%);display:inline-block;height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px))}button.swiper-pagination-bullet{-webkit-appearance:none;appearance:none;border:none;box-shadow:none;margin:0;padding:0}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{background:var(--swiper-pagination-color,var(--swiper-theme-color));opacity:var(--swiper-pagination-bullet-opacity,1)}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{left:var(--swiper-pagination-left,auto);right:var(--swiper-pagination-right,8px);top:50%;transform:translate3d(0,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{display:block;margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:transform .2s,top .2s}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,left .2s}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));height:100%;left:0;position:absolute;top:0;transform:scale(0);transform-origin:left top;width:100%}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0;width:100%}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{height:100%;left:0;top:0;width:var(--swiper-pagination-progressbar-size,4px)}.swiper-pagination-lock{display:none}.swiper-scrollbar{background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1));border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;-ms-touch-action:none}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{bottom:var(--swiper-scrollbar-bottom,4px);height:var(--swiper-scrollbar-size,4px);left:var(--swiper-scrollbar-sides-offset,1%);position:absolute;top:var(--swiper-scrollbar-top,auto);width:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);z-index:50}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{height:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);left:var(--swiper-scrollbar-left,auto);position:absolute;right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);width:var(--swiper-scrollbar-size,4px);z-index:50}.swiper-scrollbar-drag{background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);height:100%;left:0;position:relative;top:0;width:100%}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{align-items:center;display:flex;height:100%;justify-content:center;text-align:center;width:100%}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-height:100%;max-width:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none}.swiper .swiper-notification{left:0;opacity:0;pointer-events:none;position:absolute;top:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{margin:0 auto;transition-timing-function:ease-out}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-direction:column;flex-wrap:wrap}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;height:100%;pointer-events:none;transform-origin:0 0;visibility:hidden;width:100%;z-index:1}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{bottom:0;height:100%;left:0;opacity:.6;position:absolute;width:100%;z-index:0}.swiper-cube .swiper-cube-shadow:before{background:#000;bottom:0;content:"";filter:blur(50px);left:0;position:absolute;right:0;top:0}.swiper-cube .swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top{-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:0}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:none;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top{-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:0}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transform-origin:center bottom}:root{--f7-photobrowser-bg-color:#fff;--f7-photobrowser-bars-bg-color:rgba(var(--f7-bars-bg-color-rgb),0.95);--f7-photobrowser-bars-text-color:var(--f7-bars-text-color);--f7-photobrowser-bars-link-color:var(--f7-bars-link-color);--f7-photobrowser-caption-font-size:13px;--f7-photobrowser-caption-font-weight:500;--f7-photobrowser-caption-light-text-color:#000;--f7-photobrowser-caption-dark-text-color:#fff;--f7-photobrowser-exposed-bg-color:#000;--f7-photobrowser-dark-bg-color:#000;--f7-photobrowser-dark-bars-bg-color:rgba(27,27,27,0.8);--f7-photobrowser-dark-bars-text-color:#fff;--f7-photobrowser-dark-bars-link-color:#fff}.photo-browser{height:100%;left:0;position:absolute;top:0;width:100%;z-index:400}.photo-browser-standalone.modal-in{animation:photo-browser-in .4s;transition-duration:0ms}.photo-browser-standalone.modal-out{animation:photo-browser-out .4s!important;transition-duration:0ms}.photo-browser-standalone.modal-out.swipe-close-to-bottom,.photo-browser-standalone.modal-out.swipe-close-to-top{animation:none!important}.photo-browser-standalone.photo-browser-transitioning{animation:none!important;transition:.4s}.photo-browser-popup.modal-out.swipe-close-to-bottom,.photo-browser-popup.modal-out.swipe-close-to-top{transition-duration:.3s}.photo-browser-popup.modal-out.swipe-close-to-bottom{transform:translate3d(0,100vh,0)}.photo-browser-popup.modal-out.swipe-close-to-top{transform:translate3d(0,-100vh,0)}.photo-browser-page{background:none}.photo-browser-page .toolbar{transform:none}.photo-browser-popup{background:none}.photo-browser-of{margin:0 5px}.photo-browser-captions{bottom:var(--f7-safe-area-bottom);left:0;opacity:1;pointer-events:none;position:absolute;transition-duration:.4s;width:100%;z-index:10}.photo-browser-captions.photo-browser-captions-exposed{opacity:0}.toolbar~.toolbar.photo-browser-thumbs{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.page~.photo-browser-page:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs,.photo-browser-popup:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs,.photo-browser-standalone:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs{height:var(--f7-toolbar-height)}.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs{transform:translate3d(0,calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom, 0)),0)}.navbar+.toolbar.photo-browser-thumbs .swiper,.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs .swiper{height:calc(100% - var(--f7-safe-area-bottom, 0))}.toolbar~.photo-browser-captions{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));transform:translateZ(0)}.toolbar~.photo-browser-captions.photo-browser-captions-exposed{transform:translateZ(0)}.toolbar~.toolbar~.photo-browser-captions{bottom:calc(var(--f7-toolbar-height)*2 + var(--f7-safe-area-bottom))}.toolbar~.toolbar~.photo-browser-captions.photo-browser-captions-exposed{transform:translate3d(0,var(--f7-toolbar-height),0)}.photo-browser-thumbs{transition-property:transform,background-color,color}.photo-browser-thumbs .swiper{height:100%;width:100%}.photo-browser-thumbs .swiper-slide{align-items:center;display:flex;justify-content:center;width:auto}.photo-browser-thumbs img{border-radius:2px;display:block;height:75%;min-width:4px;width:auto}.photo-browser-thumbs .swiper-slide img{transform:translateX(-4px);transition-duration:.15s}.photo-browser-thumbs .swiper-slide-active img{transform:scale(1.2)}.photo-browser-thumbs .swiper-slide-active~.swiper-slide img{transform:translateX(4px)}.photo-browser-caption{bottom:0;box-sizing:border-box;font-size:var(--f7-photobrowser-caption-font-size);font-weight:var(--f7-photobrowser-caption-font-weight);left:0;opacity:0;padding:4px 5px;position:absolute;text-align:center;transition-duration:.4s;width:100%}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .photo-browser-caption{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur))}}.photo-browser-caption:empty{display:none}.photo-browser-caption.photo-browser-caption-active{opacity:1}.photo-browser-captions-light .photo-browser-caption{color:var(--f7-photobrowser-caption-light-text-color)}.dark .photo-browser-caption,.photo-browser-captions-dark .photo-browser-caption{color:var(--f7-photobrowser-caption-dark-text-color)}.photo-browser-swiper-container{background:var(--f7-photobrowser-bg-color);height:100%;left:0;overflow:hidden;position:absolute;top:0;touch-action:none;transition:.4s;transition-property:background-color;width:100%}.photo-browser-next.swiper-button-disabled,.photo-browser-prev.swiper-button-disabled{opacity:.3;pointer-events:none}.photo-browser-slide{align-items:center;box-sizing:border-box;display:flex;flex-shrink:0;height:100%;justify-content:center;overflow:hidden;position:relative;width:100%}.photo-browser-slide span.swiper-zoom-container{display:none}.photo-browser-slide img{display:none;height:auto;max-height:100%;max-width:100%;width:auto}.photo-browser-slide.swiper-slide-active span.swiper-zoom-container,.photo-browser-slide.swiper-slide-next span.swiper-zoom-container,.photo-browser-slide.swiper-slide-prev span.swiper-zoom-container{display:flex}.photo-browser-slide.swiper-slide-active img,.photo-browser-slide.swiper-slide-next img,.photo-browser-slide.swiper-slide-prev img{display:inline}.photo-browser-slide.swiper-slide-active.photo-browser-slide-lazy .preloader,.photo-browser-slide.swiper-slide-next.photo-browser-slide-lazy .preloader,.photo-browser-slide.swiper-slide-prev.photo-browser-slide-lazy .preloader{display:block}.photo-browser-slide iframe{height:100%;width:100%}.photo-browser-slide .preloader{display:none;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;width:42px}.navbar-photo-browser .right .link i,.navbar-photo-browser .right .link svg{display:block;height:24px;width:24px}.navbar-photo-browser .navbar-bg,.photo-browser-caption,.photo-browser-page .navbar-bg,.photo-browser-page .toolbar{background-color:var(--f7-photobrowser-bars-bg-color,rgba(var(--f7-bars-bg-color-rgb),.95))}.photo-browser-page{touch-action:none}.photo-browser-page .navbar,.photo-browser-page .toolbar{color:var(--f7-photobrowser-bars-text-color,var(--f7-bars-text-color));transform:translateZ(0);transition-duration:.4s}.photo-browser-page .navbar a,.photo-browser-page .toolbar a{color:var(--f7-photobrowser-bars-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.photo-browser-exposed .navbar,.photo-browser-exposed .toolbar:not(.photo-browser-thumbs){opacity:0;pointer-events:none;visibility:hidden}.photo-browser-exposed .toolbar:not(.photo-browser-thumbs)~.photo-browser-captions,.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs~.photo-browser-captions{transform:translate3d(0,var(--f7-toolbar-height),0)}.photo-browser-exposed .photo-browser-swiper-container{background:var(--f7-photobrowser-exposed-bg-color)}.photo-browser-dark .photo-browser-thumbs,.photo-browser-dark .toolbar,.photo-browser-exposed .photo-browser-thumbs,.photo-browser-exposed .toolbar{background-color:var(--f7-photobrowser-dark-bars-bg-color)}.photo-browser-dark .photo-browser-caption,.photo-browser-exposed .photo-browser-caption{background-color:var(--f7-photobrowser-dark-bars-bg-color);color:var(--f7-photobrowser-caption-dark-text-color)}.view.with-photo-browser-page-exposed .navbar{opacity:0;pointer-events:none}.photo-browser-page .toolbar:after,.photo-browser-page .toolbar:before{display:none!important}.navbar-photo-browser-dark .navbar-bg,.photo-browser-page-dark .navbar-bg{background:var(--f7-photobrowser-dark-bars-bg-color)}.navbar-photo-browser-dark .navbar-bg:after,.navbar-photo-browser-dark .navbar-bg:before,.photo-browser-page-dark .navbar-bg:after,.photo-browser-page-dark .navbar-bg:before{display:none!important}.navbar-photo-browser-dark,.photo-browser-dark .navbar,.photo-browser-dark .toolbar,.photo-browser-page-dark .navbar,.photo-browser-page-dark .toolbar{color:var(--f7-photobrowser-dark-bars-text-color)}.navbar-photo-browser-dark a,.photo-browser-dark .navbar a,.photo-browser-dark .toolbar a,.photo-browser-page-dark .navbar a,.photo-browser-page-dark .toolbar a{color:var(--f7-photobrowser-dark-bars-link-color)}.photo-browser-dark .photo-browser-swiper-container,.photo-browser-page-dark .photo-browser-swiper-container{background:var(--f7-photobrowser-dark-bg-color)}@keyframes photo-browser-in{0%{opacity:0;transform:translateZ(0) scale(.5)}50%{opacity:1;transform:translateZ(0) scale(1.05)}to{opacity:1;transform:translateZ(0) scale(1)}}@keyframes photo-browser-out{0%{opacity:1;transform:translateZ(0) scale(1)}50%{opacity:1;transform:translateZ(0) scale(1.05)}to{opacity:0;transform:translateZ(0) scale(.5)}}:root{--f7-notification-max-width:568px;--f7-notification-subtitle-text-transform:none;--f7-notification-subtitle-line-height:1.35;--f7-notification-text-text-transform:none;--f7-notification-text-font-weight:400}.ios{--f7-notification-margin:8px;--f7-notification-padding-horizontal:10px;--f7-notification-padding-vertical:10px;--f7-notification-border-radius:12px;--f7-notification-box-shadow:0px 5px 25px -10px rgba(0,0,0,0.7);--f7-notification-icon-size:20px;--f7-notification-title-font-size:13px;--f7-notification-title-text-transform:uppercase;--f7-notification-title-line-height:1.4;--f7-notification-title-font-weight:400;--f7-notification-title-letter-spacing:0.02em;--f7-notification-title-right-font-size:13px;--f7-notification-subtitle-font-size:15px;--f7-notification-subtitle-font-weight:600;--f7-notification-text-font-size:15px;--f7-notification-text-line-height:1.2;--f7-notification-bg-color:rgba(250,250,250,0.95);--f7-notification-bg-color-rgb:255,255,255;--f7-notification-title-color:#000;--f7-notification-title-right-color:rgba(0,0,0,0.45);--f7-notification-subtitle-color:#000;--f7-notification-text-color:#000}.ios .dark,.ios.dark{--f7-notification-bg-color:rgba(30,30,30,0.95);--f7-notification-bg-color-rgb:30,30,30;--f7-notification-title-color:#fff;--f7-notification-text-color:#fff;--f7-notification-subtitle-color:#fff;--f7-notification-title-right-color:rgba(255,255,255,0.55)}.md{--f7-notification-margin:16px;--f7-notification-padding-vertical:20px;--f7-notification-padding-horizontal:16px;--f7-notification-border-radius:16px;--f7-notification-box-shadow:none;--f7-notification-icon-size:24px;--f7-notification-title-font-size:16px;--f7-notification-title-text-transform:none;--f7-notification-title-line-height:1.35;--f7-notification-title-font-weight:500;--f7-notification-title-right-font-size:12px;--f7-notification-subtitle-font-size:14px;--f7-notification-subtitle-font-weight:400;--f7-notification-text-font-size:14px;--f7-notification-text-line-height:1.35}.md,.md .dark,.md [class*=color-]{--f7-notification-title-color:var(--f7-md-on-surface);--f7-notification-bg-color:var(--f7-md-surface-5);--f7-notification-text-color:var(--f7-md-on-surface-variant);--f7-notification-title-right-color:var(--f7-md-on-surface-variant);--f7-notification-subtitle-color:var(--f7-md-on-surface)}.notification{background:var(--f7-notification-bg-color);border:none;border-radius:var(--f7-notification-border-radius);box-shadow:var(--f7-notification-box-shadow);box-sizing:border-box;direction:ltr;display:none;font-size:14px;left:var(--f7-notification-margin);margin:0;margin-top:var(--f7-safe-area-top);max-width:var(--f7-notification-max-width);padding:var(--f7-notification-padding-vertical) var(--f7-notification-padding-horizontal);position:absolute;top:var(--f7-notification-margin);transition-property:transform;width:calc(100% - var(--f7-notification-margin)*2);z-index:20000}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .notification{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-notification-bg-color-rgb),.8)}}@media (min-width:568px){.notification{left:50%;margin-left:calc(var(--f7-notification-max-width)*-1/2);width:var(--f7-notification-max-width)}}.notification-title{color:var(--f7-notification-title-color,var(--f7-theme-color));font-size:var(--f7-notification-title-font-size);font-weight:var(--f7-notification-title-font-weight);letter-spacing:var(--f7-notification-title-letter-spacing);line-height:var(--f7-notification-title-line-height);text-transform:var(--f7-notification-title-text-transform)}.notification-subtitle{color:var(--f7-notification-subtitle-color);font-size:var(--f7-notification-subtitle-font-size);font-weight:var(--f7-notification-subtitle-font-weight);line-height:var(--f7-notification-subtitle-line-height);text-transform:var(--f7-notification-subtitle-text-transform)}.notification-text{color:var(--f7-notification-text-color);font-size:var(--f7-notification-text-font-size);font-weight:var(--f7-notification-text-font-weight);line-height:var(--f7-notification-text-line-height);text-transform:var(--f7-notification-text-text-transform)}.notification-title-right-text{color:var(--f7-notification-title-right-color);font-size:var(--f7-notification-title-right-font-size)}.notification-icon{font-size:0;line-height:var(--f7-notification-icon-size)}.notification-icon,.notification-icon i{height:var(--f7-notification-icon-size)!important;width:var(--f7-notification-icon-size)!important}.notification-icon i{font-size:var(--f7-notification-icon-size)}.notification-icon img{height:var(--f7-notification-icon-size)}.notification-header{align-items:center;display:flex;justify-content:flex-start}.notification-close-button{cursor:pointer;margin-left:auto;position:relative}.notification-close-button:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;left:50%;letter-spacing:normal;line-height:1;position:absolute;text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;white-space:nowrap;width:100%}.ios .notification{transform:translate3d(0,-200%,0);transition-duration:.45s}.ios .notification.modal-in{opacity:1;transform:translateZ(0)}.ios .notification.modal-out{transform:translate3d(0,-200%,0)}.ios .notification-icon{margin-right:8px}.ios .notification-header+.notification-content{margin-top:10px}.ios .notification-title-right-text{margin-left:auto;margin-right:6px}.ios .notification-title-right-text+.notification-close-button{margin-left:10px}.ios .notification-close-button{font-size:14px;height:20px;opacity:.3;transition-duration:.3s;width:20px}.ios .notification-close-button.active-state{opacity:.1;transition-duration:0ms}.ios .notification-close-button:after{color:#000;content:"notification_close_ios";font-size:.65em;height:44px;line-height:44px;margin-left:-22px;margin-top:-22px;width:44px}.ios .dark .notification-close-button:after,.ios.dark .notification-close-button:after{color:#fff}.md .notification{transform:translate3d(0,-150%,0)}.md .notification.modal-in{transform:translateZ(0);transition-duration:.5s;transition-timing-function:cubic-bezier(0,.8,.34,1)}.md .notification.modal-in.notification-transitioning{transition-duration:.2s}.md .notification.modal-out{animation:none;transform:translate3d(0,-150%,0);transition-duration:.2s;transition-timing-function:ease-in}.md .notification-with-icon .notification-icon{left:var(--f7-notification-padding-horizontal);position:absolute;top:var(--f7-notification-padding-vertical)}.md .notification-with-icon .notification-content,.md .notification-with-icon .notification-header{margin-left:calc(var(--f7-notification-icon-size) + 16px)}.md .notification-icon{margin-right:8px}.md .notification-subtitle+.notification-text{margin-top:4px}.md .notification-header+.notification-content{margin-top:8px}.md .notification-title-right-text{margin-left:4px}.md .notification-title-right-text:before{background:var(--f7-notification-title-right-color);border-radius:50%;content:"";display:inline-block;height:3px;margin-right:4px;vertical-align:middle;width:3px}.md .notification-close-button{height:16px;transition-duration:.3s;width:16px}.md .notification-close-button:after,.md .notification-close-button:before{height:48px;left:50%;margin-left:-24px;margin-top:-24px;top:50%;width:48px}.md .notification-close-button:after{color:var(--f7-md-on-surface-variant);content:"delete_round_md";font-size:24px;line-height:48px}@keyframes notification-md-in{0%{transform:translate3d(0,-150%,0)}50%{transform:translate3d(0,10%,0)}to{transform:translateZ(0)}}:root{--f7-autocomplete-dropdown-placeholder-color:#a9a9a9;--f7-autocomplete-dropdown-preloader-size:20px;--f7-autocomplete-dropdown-font-size:var(--f7-list-font-size)}.ios{--f7-autocomplete-dropdown-box-shadow:0px 3px 3px rgba(0,0,0,0.2);--f7-autocomplete-dropdown-text-matching-font-weight:600;--f7-autocomplete-dropdown-bg-color:#fff;--f7-autocomplete-dropdown-text-color:#000;--f7-autocomplete-dropdown-text-matching-color:#000}.ios .dark,.ios.dark{--f7-autocomplete-dropdown-bg-color:#1c1c1d;--f7-autocomplete-dropdown-text-color:#fff;--f7-autocomplete-dropdown-text-matching-color:#fff}.md{--f7-autocomplete-dropdown-box-shadow:none;--f7-autocomplete-dropdown-text-matching-font-weight:500;--f7-autocomplete-dropdown-text-matching-color:#000}.md .dark,.md.dark{--f7-autocomplete-dropdown-text-matching-color:#fff}.md,.md .dark,.md [class*=color-]{--f7-autocomplete-dropdown-bg-color:var(--f7-md-surface-2);--f7-autocomplete-dropdown-text-color:var(--f7-md-on-surface)}.autocomplete-page .autocomplete-found{display:block}.autocomplete-page .autocomplete-not-found{display:none}.autocomplete-page .autocomplete-values{display:block}.autocomplete-page .list ul:empty{display:none}.autocomplete-preloader:not(.autocomplete-preloader-visible){visibility:hidden}.autocomplete-preloader:not(.autocomplete-preloader-visible),.autocomplete-preloader:not(.autocomplete-preloader-visible) *{animation:none}.autocomplete-dropdown{background:var(--f7-autocomplete-dropdown-bg-color);box-shadow:var(--f7-autocomplete-dropdown-box-shadow);box-sizing:border-box;left:0;position:absolute;width:100%;z-index:500}.autocomplete-dropdown .autocomplete-dropdown-inner{-webkit-overflow-scrolling:touch;height:100%;overflow:auto;position:relative;z-index:1}.autocomplete-dropdown .autocomplete-preloader{bottom:100%;display:none;height:var(--f7-autocomplete-dropdown-preloader-size);position:absolute;width:var(--f7-autocomplete-dropdown-preloader-size)}.autocomplete-dropdown .autocomplete-preloader-visible{display:block}.autocomplete-dropdown .autocomplete-dropdown-placeholder{color:var(--f7-autocomplete-dropdown-placeholder-color)}.autocomplete-dropdown .list{color:var(--f7-autocomplete-dropdown-text-color);font-size:var(--f7-autocomplete-dropdown-font-size);margin:0}.autocomplete-dropdown .list b{color:var(--f7-autocomplete-dropdown-text-matching-color);font-weight:var(--f7-autocomplete-dropdown-text-matching-font-weight)}.autocomplete-dropdown .list ul{background:none!important}.autocomplete-dropdown .list ul:after,.autocomplete-dropdown .list ul:before{display:none!important}.autocomplete-dropdown .autocomplete-dropdown-selected{background:var(--f7-autocomplete-dropdown-selected-bg-color,rgba(var(--f7-theme-color-rgb),.2))}.searchbar-input-wrap .autocomplete-dropdown{background-color:var(--f7-searchbar-input-bg-color,var(--f7-searchbar-bg-color));border-radius:var(--f7-searchbar-input-border-radius);margin-top:calc(var(--f7-searchbar-input-height)*-1);top:100%;z-index:-1}.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-inner{padding-top:var(--f7-searchbar-input-height)}.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-placeholder{color:var(--f7-searchbar-placeholder-color)}.searchbar-input-wrap .autocomplete-dropdown li:last-child{border-radius:0 0 var(--f7-searchbar-input-border-radius) var(--f7-searchbar-input-border-radius);overflow:hidden;position:relative}.searchbar-input-wrap .autocomplete-dropdown .item-content{padding-left:calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px))}.ios .autocomplete-dropdown .autocomplete-preloader{margin-bottom:12px;right:16px}.md .autocomplete-page .navbar .autocomplete-preloader{margin-right:8px}.md .autocomplete-popup .navbar .autocomplete-preloader{margin-left:8px;margin-right:16px}.md .autocomplete-dropdown .autocomplete-preloader{margin-bottom:8px;right:16px}.md .autocomplete-dropdown .autocomplete-preloader circle{stroke-width:3}:root{--f7-tooltip-padding:8px 16px;--f7-tooltip-font-size:14px;--f7-tooltip-font-weight:500;--f7-tooltip-desktop-padding:6px 8px;--f7-tooltip-desktop-font-size:12px}.ios{--f7-tooltip-border-radius:4px;--f7-tooltip-bg-color:rgba(0,0,0,0.87);--f7-tooltip-text-color:#fff}.md{--f7-tooltip-border-radius:8px}.md,.md .dark,.md [class*=color-]{--f7-tooltip-bg-color:var(--f7-md-secondary);--f7-tooltip-text-color:var(--f7-md-on-secondary)}.tooltip{background:var(--f7-tooltip-bg-color);border-radius:var(--f7-tooltip-border-radius);box-sizing:border-box;color:var(--f7-tooltip-text-color);font-size:var(--f7-tooltip-font-size);font-weight:var(--f7-tooltip-font-weight);line-height:1.2;opacity:0;padding:var(--f7-tooltip-padding);position:absolute;transform:scale(.9);transition-duration:.15s;transition-property:opacity,transform;z-index:20000;z-index:99000}.tooltip.tooltip-in{opacity:1;transform:scale(1)}.tooltip.tooltip-out{opacity:0;transform:scale(1)}.device-desktop .tooltip{font-size:var(--f7-tooltip-desktop-font-size);padding:var(--f7-tooltip-desktop-padding)}.gauge{display:inline-block;margin-left:auto;margin-right:auto;position:relative;text-align:center}.gauge svg,.gauge-svg{height:auto;max-width:100%}.gauge svg circle,.gauge svg path,.gauge-svg circle,.gauge-svg path{transition-duration:.4s}.skeleton-block{background:var(--skeleton-color)!important;display:block;height:1em;width:100%}@font-face{font-display:block;font-family:skeleton;font-style:normal,italic;font-weight:100,200,300,400,500,600,700,800,900;src:url("data:application/font-woff;charset=utf-8;base64,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") format("woff")}.skeleton-text{font-family:skeleton!important;-webkit-user-select:none;user-select:none}.skeleton-text,.skeleton-text *{color:var(--skeleton-color)!important;letter-spacing:-.03em!important}.skeleton-image{display:inline-block}.skeleton-image svg{height:auto;max-width:100%}.skeleton-image polygon{fill:var(--skeleton-color)}.skeleton-image path{fill:var(--skeleton-icon-color)}.skeleton-avatar{display:inline-block}.skeleton-avatar svg{height:auto;max-width:100%}.skeleton-avatar rect{fill:var(--skeleton-color)}.skeleton-avatar path{fill:var(--skeleton-icon-color)}.skeleton-effect-blink,.skeleton-effect-wave{animation:skeleton-effect-wave 1s infinite;-webkit-mask-image:linear-gradient(90deg,transparent 0,black 25%,black 75%,transparent);mask-image:linear-gradient(90deg,transparent 0,black 25%,black 75%,transparent);-webkit-mask-position:50% top;mask-position:50% top;-webkit-mask-repeat:repeat;mask-repeat:repeat;-webkit-mask-size:200% 100%;mask-size:200% 100%}.skeleton-effect-fade{animation:skeleton-effect-fade 1s infinite}.skeleton-effect-pulse{animation:skeleton-effect-pulse 1s infinite}@keyframes skeleton-effect-fade{0%{opacity:1}50%{opacity:.2}to{opacity:1}}@keyframes skeleton-effect-wave{0%{-webkit-mask-position:50% top;mask-position:50% top}to{-webkit-mask-position:-150% top;mask-position:-150% top}}@keyframes skeleton-effect-pulse{0%{transform:scale(1)}40%{transform:scale(1)}50%{transform:scale(.975)}to{transform:scale(1)}}:root{--skeleton-color:#ccc;--skeleton-icon-color:rgba(0,0,0,0.25)}.dark{--skeleton-color:#515151;--skeleton-icon-color:rgba(255,255,255,0.25)}:root{--f7-color-picker-popover-width:350px;--f7-color-picker-slider-size:6px;--f7-color-picker-slider-knob-size:16px;--f7-color-picker-bar-size:50px;--f7-color-picker-bar-min-height:260px;--f7-color-picker-value-width:64px;--f7-color-picker-value-height:32px;--f7-color-picker-value-font-size:16px;--f7-color-picker-value-border-radius:4px;--f7-color-picker-hex-value-width:84px;--f7-color-picker-label-font-size:14px;--f7-color-picker-label-width:10px;--f7-color-picker-label-height:14px;--f7-color-picker-sb-spectrum-height:260px;--f7-color-picker-sb-spectrum-handle-size:16px;--f7-color-picker-wheel-width:330px;--f7-color-picker-palette-value-width:36px;--f7-color-picker-palette-value-height:36px;--f7-color-picker-initial-current-color-height:40px;--f7-color-picker-initial-current-color-border-radius:4px;--f7-color-picker-sheet-bg-color:#fff;--f7-color-picker-popup-bg-color:#fff;--f7-color-picker-value-bg-color:rgba(0,0,0,0.05);--f7-color-picker-group-bg-color:rgba(0,0,0,0.05);--f7-color-picker-group-value-bg-color:#fff}:root .dark,:root.dark{--f7-color-picker-sheet-bg-color:#121212;--f7-color-picker-popup-bg-color:#121212;--f7-color-picker-value-bg-color:rgba(255,255,255,0.1);--f7-color-picker-group-bg-color:#000;--f7-color-picker-group-value-bg-color:rgba(255,255,255,0.12)}.color-picker{display:flex;flex-direction:column;overflow:hidden;width:100%}.color-picker-popover .color-picker,.color-picker-popup .color-picker,.color-picker.color-picker-inline{position:relative}.color-picker-sheet-modal{background:var(--f7-color-picker-sheet-bg-color)}.color-picker-sheet-modal:before{z-index:600}.color-picker-sheet-modal .sheet-modal-inner{margin-bottom:var(--f7-safe-area-bottom)}.color-picker-popup .page{background:var(--f7-color-picker-popup-bg-color)}.color-picker-popup .page-content{padding-bottom:var(--f7-safe-area-bottom)}.color-picker-page .color-picker,.color-picker-popover .color-picker,.color-picker-popup .color-picker{height:100%}.color-picker-page .color-picker .toolbar,.color-picker-popover .color-picker .toolbar,.color-picker-popup .color-picker .toolbar{position:absolute}.color-picker-popover{max-height:80vh;max-width:90vw;width:var(--f7-color-picker-popover-width)}.md .color-picker-popover .popover-inner{padding:8px}.color-picker-popover .color-picker{max-height:80vh}.color-picker-popover .toolbar-top{border-top-left-radius:var(--f7-popover-border-radius);border-top-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette{flex-shrink:0;overflow:hidden}.color-picker-popover .color-picker-module-palette:first-child{border-top-left-radius:var(--f7-popover-border-radius);border-top-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette:last-child{border-bottom-left-radius:var(--f7-popover-border-radius);border-bottom-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette:first-child:last-child{border-radius:var(--f7-popover-border-radius)}.color-picker-popover .toolbar~.page-content .color-picker-module-palette:first-child{border-top-left-radius:0;border-top-right-radius:0}.color-picker-page .page-content,.color-picker-popover .page-content,.color-picker-popup .page-content,.color-picker-sheet-modal .page-content{align-items:stretch;display:flex;flex-direction:column;justify-content:flex-start;overflow-x:hidden}.color-picker-module{margin-top:5px}.color-picker-module:last-child{margin-bottom:5px}.color-picker-module-hs-spectrum,.color-picker-module-sb-spectrum{margin-left:10px;margin-right:10px}.color-picker-module-hs-spectrum:first-child,.color-picker-module-sb-spectrum:first-child{margin-top:10px}.color-picker-module-hs-spectrum .color-picker-hs-spectrum,.color-picker-module-hs-spectrum .color-picker-sb-spectrum,.color-picker-module-sb-spectrum .color-picker-hs-spectrum,.color-picker-module-sb-spectrum .color-picker-sb-spectrum{height:var(--f7-color-picker-sb-spectrum-height)}.ios .color-picker-module-hs-spectrum .color-picker-hs-spectrum,.ios .color-picker-module-hs-spectrum .color-picker-sb-spectrum,.ios .color-picker-module-sb-spectrum .color-picker-hs-spectrum,.ios .color-picker-module-sb-spectrum .color-picker-sb-spectrum{border-radius:4px}.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum,.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum,.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum,.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum{border-radius:12px}.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum:after,.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum:after,.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum:after,.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum:after{border-radius:inherit}.color-picker-sb-spectrum{background-color:#000;background-image:linear-gradient(180deg,rgba(0,0,0,0) 0,#000),linear-gradient(270deg,rgba(255,255,255,0) 0,#fff);position:relative}.color-picker-hs-spectrum{background-image:linear-gradient(90deg,hsl(0,100%,50%),hsl(60,100%,50%),hsl(120,100%,50%),hsl(180,100%,50%),hsl(240,100%,50%),hsl(300,100%,50%),hsl(0,100%,50%));position:relative}.color-picker-hs-spectrum:after{background-image:linear-gradient(180deg,rgba(255,255,255,0),#ffffff);content:"";height:100%;left:0;position:absolute;top:0;width:100%}.color-picker-hs-spectrum-handle,.color-picker-sb-spectrum-handle{height:4px;left:-2px;position:absolute;top:-2px;width:4px;z-index:1}.color-picker-hs-spectrum-handle:after,.color-picker-sb-spectrum-handle:after{background-color:inherit;border:1px solid #fff;border-radius:50%;box-shadow:0 0 2px rgba(0,0,0,.5);box-sizing:border-box;content:"";height:var(--f7-color-picker-sb-spectrum-handle-size);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);transform-origin:center;transition:.15s;transition-property:transform;width:var(--f7-color-picker-sb-spectrum-handle-size)}.color-picker-hs-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,.color-picker-hs-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after,.color-picker-sb-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,.color-picker-sb-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after{transform:scale(1.5) translate(-33.333%,-33.333%)}.color-picker-module-wheel{margin-left:10px;margin-right:10px}.color-picker-wheel{font-size:0;height:auto;margin-left:auto;margin-right:auto;max-width:100%;position:relative;width:var(--f7-color-picker-wheel-width)}.color-picker-wheel svg{height:auto;width:100%}.color-picker-wheel .color-picker-wheel-handle{background:red;border:2px solid #fff;border-radius:50%;box-shadow:0 0 5px rgba(0,0,0,.5);box-sizing:border-box;height:16.66666667%;left:0;position:absolute;top:0;width:16.66666667%}.color-picker-wheel .color-picker-sb-spectrum{height:45%;left:50%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0);width:45%}.color-picker-slider-wrap{align-items:center;display:flex;margin-bottom:2px}.color-picker-slider-wrap+.color-picker-slider-wrap{margin-top:5px}.color-picker-hex-wrap{align-items:center;display:flex;justify-content:space-between}.color-picker-hex-label,.color-picker-slider-label{flex-shrink:0;font-size:var(--f7-color-picker-label-font-size);margin-right:12px;width:var(--f7-color-picker-label-size)}.color-picker-hex-label{width:auto}.color-picker-bar-value,.color-picker-hex-value,.color-picker-slider-value{align-items:center;background:var(--f7-color-picker-value-bg-color);border-radius:var(--f7-color-picker-value-border-radius);display:flex;flex-shrink:0;font-size:var(--f7-color-picker-value-font-size);height:var(--f7-color-picker-value-height);justify-content:center;margin-left:10px;text-align:center;width:var(--f7-color-picker-value-width)}.color-picker-bar-value input,.color-picker-hex-value input,.color-picker-slider-value input{-webkit-appearance:none;appearance:none;background:transparent;border:none;border-radius:4px;color:inherit;display:block;font-family:inherit;font-size:inherit;height:100%;outline:0;text-align:center;width:100%}.color-picker-bar-value input::-webkit-inner-spin-button,.color-picker-bar-value input::-webkit-outer-spin-button,.color-picker-hex-value input::-webkit-inner-spin-button,.color-picker-hex-value input::-webkit-outer-spin-button,.color-picker-slider-value input::-webkit-inner-spin-button,.color-picker-slider-value input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;display:none;margin:0}.color-picker-hex-value{width:var(--f7-color-picker-hex-value-width)}.color-picker-hex-value:first-child{margin-left:auto}.color-picker-slider{--f7-range-bar-active-bg-color:transparent;--f7-range-bar-size:var(--f7-color-picker-slider-size);--f7-range-bar-border-radius:var(--f7-color-picker-slider-size);--f7-range-knob-size:var(--f7-color-picker-slider-knob-size);--f7-range-knob-box-shadow:0 1px 2px rgba(0,0,0,0.3)}.color-picker-slider .range-knob{transition-duration:.2s;transition-property:transform}.color-picker-slider .range-knob:after{height:30px;margin-left:-16px;margin-top:-16px;width:30px}.color-picker-slider .range-knob-active-state .range-knob{transform:scale(1.5)}.md .color-picker-slider.range-slider-min:not(.range-slider-dual) .range-knob{background:var(--f7-range-knob-color)!important;border:none}.color-picker-module-rgb-bars{align-items:stretch;box-sizing:border-box;display:flex;height:100%;justify-content:space-around;justify-content:space-evenly;min-height:var(--f7-color-picker-bar-min-height);padding-bottom:10px;padding-top:10px}.color-picker-bar-wrap{align-items:center;display:flex;flex-direction:column-reverse}.color-picker-bar{--f7-range-bar-active-bg-color:transparent;--f7-range-bar-size:var(--f7-color-picker-bar-size);--f7-range-bar-border-radius:2px;--f7-range-knob-size:6px;--f7-range-knob-box-shadow:0 0px 3px rgba(0,0,0,0.3);--f7-range-knob-color:#fff}.color-picker-bar .range-knob{border-radius:3px;transition-duration:0ms;transition-property:transform}.color-picker-bar .range-knob-wrap{height:6px;margin-left:calc((var(--f7-color-picker-bar-size) - 4px)*-.5);width:calc(var(--f7-color-picker-bar-size) - 4px)}.color-picker-bar .range-knob-active-state .range-knob{transform:scale(1)}.md .color-picker-bar.range-slider-min:not(.range-slider-dual) .range-knob{background:var(--f7-range-knob-color)!important;border:none}.color-picker-bar-label{flex-shrink:0;font-size:var(--f7-color-picker-label-size);height:var(--f7-color-picker-label-height);line-height:1;margin-top:12px}.color-picker-bar-value{margin-bottom:10px;margin-left:0}.color-picker-slider-alpha{--f7-range-knob-color:#fff}.color-picker-slider-alpha .range-bar{background-image:linear-gradient(90deg,rgba(0,0,0,0),#000),linear-gradient(90deg,rgba(255,255,255,.2) 50%,rgba(0,0,0,.2) 0),linear-gradient(270deg,rgba(255,255,255,.2) 50%,rgba(0,0,0,.2) 0);background-position:0 0,0 3px,0 0;background-repeat:repeat-y,repeat-x,repeat-x;background-size:100% 100%,6px 3px,6px 3px}.color-picker-slider-hue .range-bar{background-image:linear-gradient(90deg,hsl(0,100%,50%),hsl(60,100%,50%),hsl(120,100%,50%),hsl(180,100%,50%),hsl(240,100%,50%),hsl(300,100%,50%),hsl(0,100%,50%))}.color-picker-slider-brightness .range-bar{background-image:linear-gradient(90deg,#000,#fff)}.color-picker-module-palette{margin-top:16px}.color-picker-module-palette:first-child{margin-top:0}.color-picker-module-palette:last-child{margin-bottom:0}.color-picker-module-palette:first-child:last-child{margin:0}.color-picker-palette{display:flex;flex-wrap:wrap}.color-picker-palette-row{display:flex;flex-wrap:nowrap;width:100%}.color-picker-palette-row .color-picker-palette-value{width:100%}.color-picker-palette-value{cursor:pointer;height:var(--f7-color-picker-palette-value-height);width:var(--f7-color-picker-palette-value-width)}.color-picker-module-current-color,.color-picker-module-initial-current-colors{border-radius:var(--f7-color-picker-initial-current-color-border-radius);flex-shrink:0;margin-left:10px;margin-right:10px;overflow:hidden}.color-picker-current-color,.color-picker-initial-color{height:var(--f7-color-picker-initial-current-color-height)}.color-picker-initial-current-colors{display:flex}.color-picker-initial-current-colors .color-picker-current-color,.color-picker-initial-current-colors .color-picker-initial-color{width:50%}.color-picker-module-alpha-slider,.color-picker-module-brightness-slider,.color-picker-module-hex,.color-picker-module-hsb-sliders,.color-picker-module-hue-slider,.color-picker-module-rgb-sliders{margin-left:10px;margin-right:10px}.color-picker-grouped-modules .color-picker-module-alpha-slider,.color-picker-grouped-modules .color-picker-module-brightness-slider,.color-picker-grouped-modules .color-picker-module-hex,.color-picker-grouped-modules .color-picker-module-hsb-sliders,.color-picker-grouped-modules .color-picker-module-hue-slider,.color-picker-grouped-modules .color-picker-module-rgb-sliders{background:var(--f7-color-picker-group-bg-color);border-radius:8px;margin-left:8px;margin-right:8px;margin-top:16px;padding:8px}.color-picker-grouped-modules .color-picker-module-alpha-slider:last-child,.color-picker-grouped-modules .color-picker-module-brightness-slider:last-child,.color-picker-grouped-modules .color-picker-module-hex:last-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders:last-child,.color-picker-grouped-modules .color-picker-module-hue-slider:last-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders:last-child{margin-bottom:16px}.color-picker-grouped-modules .color-picker-hex-value,.color-picker-grouped-modules .color-picker-slider-value{background:var(--f7-color-picker-group-value-bg-color)}.color-picker-grouped-modules .color-picker-hex-label,.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:first-child,.color-picker-grouped-modules .color-picker-slider-label{margin-left:5px}.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:last-child{margin-right:5px}:root{--f7-treeview-item-height:34px;--f7-treeview-item-padding-left:16px;--f7-treeview-item-padding-right:16px;--f7-treeview-toggle-size:24px;--f7-treeview-children-offset:29px;--f7-treeview-label-font-weight:400;--f7-treeview-label-text-color:inherit;--f7-treeview-icon-size:24px;--f7-treeview-toggle-color:rgba(0,0,0,0.5);--f7-treeview-toggle-hover-bg-color:rgba(0,0,0,0.1);--f7-treeview-toggle-pressed-bg-color:rgba(0,0,0,0.15);--f7-treeview-icon-color:rgba(0,0,0,0.5);--f7-treeview-selectable-hover-bg-color:rgba(0,0,0,0.1);--f7-treeview-link-hover-bg-color:rgba(0,0,0,0.1);--f7-treeview-link-pressed-bg-color:rgba(0,0,0,0.15)}:root .dark,:root.dark{--f7-treeview-toggle-color:rgba(255,255,255,0.5);--f7-treeview-toggle-hover-bg-color:rgba(255,255,255,0.03);--f7-treeview-toggle-pressed-bg-color:rgba(255,255,255,0.1);--f7-treeview-icon-color:rgba(255,255,255,0.75);--f7-treeview-selectable-hover-bg-color:rgba(255,255,255,0.03);--f7-treeview-link-hover-bg-color:rgba(255,255,255,0.03);--f7-treeview-link-pressed-bg-color:rgba(255,255,255,0.11)}.ios{--f7-treeview-label-font-size:17px}.md{--f7-treeview-label-font-size:16px}.treeview-item-root{min-height:var(--f7-treeview-item-height);padding-left:var(--f7-treeview-item-padding-left);padding-right:var(--f7-treeview-item-padding-right)}.treeview-item-content,.treeview-item-root{align-items:center;display:flex;justify-content:flex-start}.treeview-item-content>.f7-icons,.treeview-item-content>.material-icons,.treeview-item-content>i{color:var(--f7-treeview-icon-color);font-size:var(--f7-treeview-icon-size)}.treeview-item-content:first-child{margin-left:calc(var(--f7-treeview-toggle-size) + 5px)}.treeview-item-content>*+*{margin-left:5px}.treeview-item-label{color:var(--f7-treeview-label-text-color);font-size:var(--f7-treeview-label-font-size);font-weight:var(--f7-treeview-label-font-weight)}.treeview-toggle{background-color:rgba(0,0,0,0);border-radius:4px;cursor:pointer;height:var(--f7-treeview-toggle-size);margin-right:5px;position:relative;transition-duration:.2s;width:var(--f7-treeview-toggle-size)}.treeview-toggle.active-state{background-color:var(--f7-treeview-toggle-pressed-bg-color)}.treeview-toggle:after{border-bottom:5px solid transparent;border-left:6px solid var(--f7-treeview-toggle-color);border-top:5px solid transparent;content:"";height:0;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);transition-duration:.2s;width:0}.treeview-toggle-hidden{opacity:0;pointer-events:none;visibility:hidden}.treeview-preloader{--f7-preloader-size:var(--f7-treeview-toggle-size);margin-right:calc(var(--f7-treeview-toggle-size)*-1)}.treeview-item-children{display:none}.treeview-item-opened>.treeview-item-children{display:block}.treeview-item-opened>.treeview-item-root .treeview-toggle:after{transform:translate(-50%,-50%) rotate(90deg)}a.treeview-item-root{color:var(--f7-treeview-label-text-color)}.treeview-item-selectable.treeview-item-root,.treeview-item-selectable>.treeview-item-root{cursor:pointer;transition-duration:.15s}a.treeview-item-root{transition-duration:.15s}a.treeview-item-root.active-state{background:var(--f7-treeview-link-pressed-bg-color)}.treeview-item-toggle.treeview-item-root,.treeview-item-toggle>.treeview-item-root{cursor:pointer}.treeview-item-selected.treeview-item-root,.treeview-item-selected>.treeview-item-root{background:var(--f7-treeview-selectable-selected-bg-color,rgba(var(--f7-theme-color-rgb),.2))}.treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*1)}.treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*2)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*3)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*4)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*5)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*6)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*7)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*8)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*9)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*10)}:root{--f7-text-editor-font-size:inherit;--f7-text-editor-font-weight:inherit;--f7-text-editor-border-width:1px;--f7-text-editor-height:250px;--f7-text-editor-margin:16px;--f7-text-editor-padding:8px;--f7-text-editor-button-bg-color:transparent;--f7-text-editor-button-size:28px;--f7-text-editor-button-icon-size:20px;--f7-text-editor-button-margin:2px;--f7-text-editor-text-color:#000;--f7-text-editor-bg-color:#fff;--f7-text-editor-button-divider-color:rgba(0,0,0,0.15)}:root .dark,:root.dark{--f7-text-editor-bg-color:#121212;--f7-text-editor-text-color:#fff;--f7-text-editor-button-divider-color:rgba(255,255,255,0.15)}.ios{--f7-text-editor-toolbar-padding:6px;--f7-text-editor-button-border-radius:2px;--f7-text-editor-placeholder-color:rgba(0,0,0,0.35);--f7-text-editor-toolbar-border-color:rgba(0,0,0,0.25);--f7-text-editor-toolbar-bg-color:#fff;--f7-text-editor-border-color:rgba(0,0,0,0.1);--f7-text-editor-button-text-color:#333}.ios .dark,.ios.dark{--f7-text-editor-placeholder-color:rgba(255,255,255,0.35);--f7-text-editor-toolbar-bg-color:#121212;--f7-text-editor-toolbar-border-color:rgba(255,255,255,0.1);--f7-text-editor-toolbar-bg-color:#202020;--f7-text-editor-border-color:rgba(255,255,255,0.1);--f7-text-editor-button-text-color:#fff}.md{--f7-text-editor-button-border-radius:8px;--f7-text-editor-toolbar-padding:8px}.md,.md .dark,.md [class*=color-]{--f7-text-editor-placeholder-color:var(--f7-md-on-surface-variant);--f7-text-editor-toolbar-bg-color:var(--f7-md-surface-1);--f7-text-editor-border-color:var(--f7-md-outline);--f7-text-editor-button-text-color:var(--f7-md-on-surface)}.text-editor{align-items:stretch;background-color:var(--f7-text-editor-bg-color);border:var(--f7-text-editor-border-width) solid var(--f7-text-editor-border-color);box-sizing:border-box;display:block;display:flex;flex-direction:column;height:var(--f7-text-editor-height);margin:var(--f7-text-editor-margin);position:relative}.text-editor.text-editor-resizable{height:auto}.text-editor-toolbar{background:var(--f7-text-editor-toolbar-bg-color);box-sizing:border-box;display:flex;flex-shrink:0;flex-wrap:wrap;left:0;padding:var(--f7-text-editor-toolbar-padding);position:relative;position:sticky;top:0;z-index:100}.text-editor-toolbar:after{background-color:var(--f7-text-editor-toolbar-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}button.text-editor-button{align-items:center;-webkit-appearance:none;appearance:none;background:transparent;background-color:var(--f7-text-editor-button-bg-color);border:none;border-radius:var(--f7-text-editor-button-border-radius);box-shadow:none;box-sizing:border-box;color:var(--f7-text-editor-button-text-color);cursor:pointer;display:flex;flex-shrink:0;font-family:inherit;height:var(--f7-text-editor-button-size);justify-content:center;margin:0;margin:var(--f7-text-editor-button-margin);outline:0;overflow:hidden;padding:0;position:relative;width:auto;width:var(--f7-text-editor-button-size);z-index:1}button.text-editor-button .f7-icons,button.text-editor-button .material-icons,button.text-editor-button i{font-size:var(--f7-text-editor-button-icon-size);font-style:normal}button.text-editor-button .f7-icons sub,button.text-editor-button .f7-icons sup,button.text-editor-button .material-icons sub,button.text-editor-button .material-icons sup,button.text-editor-button i sub,button.text-editor-button i sup{font-size:60%}.text-editor-button-divider{background:var(--f7-text-editor-button-divider-color);flex-shrink:0;margin:0 2px;width:1px}.text-editor-content{-webkit-user-modify:read-write;-webkit-appearance:none;appearance:none;border:none;box-sizing:border-box;color:var(--f7-text-editor-text-color);flex-shrink:10;font-size:var(--f7-text-editor-font-size);font-weight:var(--f7-text-editor-font-weight);height:100%;outline:0;overflow:auto;padding:var(--f7-text-editor-padding);-webkit-user-select:text;user-select:text}.text-editor-content .text-editor-placeholder{color:var(--f7-text-editor-placeholder-color);pointer-events:none}.text-editor-content img{max-width:100%}.text-editor-content a{pointer-events:none}.text-editor-popover{max-width:80vw;width:auto;z-index:12500}.text-editor-popover .popover-inner{display:flex;flex-wrap:wrap;padding:3px}.text-editor-keyboard-toolbar{--f7-safe-area-bottom:0px;position:absolute;z-index:6000}.text-editor-keyboard-toolbar .toolbar-inner{-webkit-overflow-scrolling:touch;justify-content:flex-start!important;overflow:auto;scrollbar-color:transparent;scrollbar-width:none}.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-track{background:transparent;box-shadow:none}.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.text-editor-keyboard-toolbar .toolbar-inner .text-editor-button-divider{height:100%}.item-input .text-editor{background-color:var(--f7-input-bg-color,transparent);border:none;margin:0}.item-input .text-editor-content{color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);padding:var(--f7-textarea-padding-vertical) var(--f7-input-padding-right) var(--f7-textarea-padding-vertical) var(--f7-input-padding-left)}.item-input .text-editor-toolbar{box-shadow:none}.item-input .text-editor-toolbar:after{display:none!important}.item-input-outline .text-editor-content{border-radius:var(--f7-input-outline-border-radius)}.ios button.text-editor-button{transition:opacity .3s}.ios button.text-editor-button.active-state{opacity:.3;transition-duration:0ms}.md button.text-editor-button{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25)}.md .text-editor-keyboard-toolbar .toolbar-inner{padding-left:8px;padding-right:8px}.pie-chart{position:relative}.pie-chart svg{display:block;font-size:0;height:auto;margin:0 auto;width:100%}.pie-chart path{transition-duration:.15s}.pie-chart-hidden{opacity:.4}.pie-chart-tooltip{font-size:12px;line-height:1.4;max-width:none;pointer-events:none;text-align:left;white-space:nowrap;width:auto}.pie-chart-tooltip-label{align-items:center;display:flex}.pie-chart-tooltip-color{border-radius:50%;display:inline-block;height:10px;margin-right:4px;width:10px}:root{--f7-area-chart-current-line-stroke-width:2px;--f7-area-chart-current-line-stroke:rgba(0,0,0,0.15);--f7-area-chart-axis-text-color:inherit;--f7-area-chart-axis-height:1px;--f7-area-chart-axis-font-size:10px;--f7-area-chart-axis-font-weight:500;--f7-area-chart-tooltip-font-size:12px;--f7-area-chart-tooltip-total-font-size:16px;--f7-area-chart-tooltip-total-font-weight:bold;--f7-area-chart-tooltip-color-size:10px;--f7-area-chart-legend-font-size:14px;--f7-area-chart-legend-font-weight:500;--f7-area-chart-legend-text-color:inherit;--f7-area-chart-legend-padding:4px 8px;--f7-area-chart-legend-border-radius:4px;--f7-area-chart-legend-color-size:14px;--f7-area-chart-line-stroke-width:2px;--f7-area-chart-axis-bg-color:rgba(0,0,0,0.15);--f7-area-chart-legend-disabled-text-color:rgba(0,0,0,0.22)}:root .dark,:root.dark{--f7-area-chart-axis-bg-color:rgba(255,255,255,0.15);--f7-area-chart-legend-disabled-text-color:rgba(255,255,255,0.22)}.ios{--f7-area-chart-tooltip-total-label-text-color:rgba(255,255,255,0.75)}.md{--f7-area-chart-tooltip-total-label-text-color:inherit}.area-chart{position:relative}.area-chart svg{display:block;font-size:0;height:auto;margin:0 auto;width:100%}.area-chart path{fill:none;stroke-width:var(--f7-area-chart-line-stroke-width)}.area-chart-current-line{stroke:var(--f7-area-chart-current-line-stroke);stroke-width:var(--f7-area-chart-current-line-stroke-width)}.area-chart-axis{background:var(--f7-area-chart-axis-bg-color);color:var(--f7-area-chart-axis-text-color);display:flex;font-size:var(--f7-area-chart-axis-font-size);font-weight:var(--f7-area-chart-axis-font-weight);height:var(--f7-area-chart-axis-height);justify-content:space-between;line-height:1;margin-bottom:2em}.area-chart-axis>span{align-items:flex-start;display:flex;justify-content:center;padding-top:10px;white-space:nowrap;width:0}.area-chart-axis>span:first-child{justify-content:flex-start}.area-chart-axis>span:last-child{justify-content:flex-end}.area-chart-tooltip{font-size:var(--f7-area-chart-tooltip-font-size);line-height:1.4;pointer-events:none;text-align:left}.area-chart-tooltip-label{color:var(--f7-area-chart-tooltip-total-label-text-color)}.area-chart-tooltip-total{font-size:var(--f7-area-chart-tooltip-total-font-size);font-weight:var(--f7-area-chart-tooltip-total-font-weight)}.area-chart-tooltip-list{list-style:none;margin:0;padding:0}.area-chart-tooltip-list li{white-space:nowrap}.area-chart-tooltip-list span{border-radius:50%;display:inline-block;height:var(--f7-area-chart-tooltip-color-size);margin-right:4px;width:var(--f7-area-chart-tooltip-color-size)}.area-chart-axis~.area-chart-legend{margin-top:2em}.area-chart-legend{align-items:center;display:flex;flex-wrap:wrap;font-size:var(--f7-area-chart-legend-font-size);justify-content:center;margin-top:1em;width:100%}.area-chart-legend-button{-webkit-appearance:none!important;appearance:none!important;background-color:initial;border:none;border-radius:0;box-shadow:none!important;cursor:pointer;font-family:inherit;font-size:inherit;outline:0!important}.area-chart-legend-item{align-items:center;border-radius:var(--f7-area-chart-legend-border-radius);color:var(--f7-area-chart-legend-text-color);display:flex;font-weight:var(--f7-area-chart-legend-font-weight);overflow:hidden;padding:var(--f7-area-chart-legend-padding);position:relative;transition-duration:.2s;width:auto}.area-chart-legend-item span{border-radius:50%;height:var(--f7-area-chart-legend-color-size);margin-right:4px;transition-duration:.2s;width:var(--f7-area-chart-legend-color-size)}.area-chart-legend-item-hidden{color:var(--f7-area-chart-legend-disabled-text-color)}.area-chart-legend-item-hidden span{background-color:var(--f7-area-chart-legend-disabled-text-color)!important}:root{--f7-breadcrumbs-spacing:12px;--f7-breadcrumbs-padding:2px 0;--f7-breadcrumbs-icon-size:24px;--f7-breadcrumbs-separator-color:rgba(0,0,0,0.35)}:root .dark,:root.dark{--f7-breadcrumbs-separator-color:rgba(255,255,255,0.35)}.ios{--f7-breadcrumbs-item-bg-color:transparent;--f7-breadcrumbs-collapsed-border-radius:4px;--f7-breadcrumbs-collapsed-padding:0px 6px;--f7-breadcrumbs-separator-icon:"chevron_right_ios";--f7-breadcrumbs-font-size:17px;--f7-breadcrumbs-item-border-radius:0px;--f7-breadcrumbs-item-padding:0px;--f7-breadcrumbs-item-font-weight:normal;--f7-breadcrumbs-item-active-font-weight:600;--f7-breadcrumbs-item-color:rgba(0,0,0,0.55);--f7-breadcrumbs-item-active-color:#000;--f7-breadcrumbs-collapsed-bg-color:rgba(0,0,0,0.15);--f7-breadcrumbs-collapsed-color:rgba(0,0,0,0.75)}.ios .dark,.ios.dark{--f7-breadcrumbs-item-color:rgba(255,255,255,0.75);--f7-breadcrumbs-item-active-color:#fff;--f7-breadcrumbs-collapsed-bg-color:rgba(255,255,255,0.15);--f7-breadcrumbs-collapsed-color:rgba(255,255,255,0.75)}.md{--f7-breadcrumbs-collapsed-border-radius:8px;--f7-breadcrumbs-collapsed-padding:12px 8px;--f7-breadcrumbs-separator-icon:"chevron_right_md";--f7-breadcrumbs-font-size:14px;--f7-breadcrumbs-item-border-radius:8px;--f7-breadcrumbs-item-padding:4px 8px;--f7-breadcrumbs-item-font-weight:500;--f7-breadcrumbs-item-active-font-weight:500}.md,.md .dark,.md [class*=color-]{--f7-breadcrumbs-item-color:var(--f7-theme-color);--f7-breadcrumbs-item-bg-color:var(--f7-md-secondary-container);--f7-breadcrumbs-item-active-color:var(--f7-md-on-secondary-container);--f7-breadcrumbs-collapsed-color:var(--f7-theme-color);--f7-breadcrumbs-collapsed-bg-color:var(--f7-md-secondary-container)}.breadcrumbs{align-items:center;display:flex;font-size:var(--f7-breadcrumbs-font-size);justify-content:flex-start;overflow:auto;padding:var(--f7-breadcrumbs-padding);scrollbar-color:transparent;scrollbar-width:none;white-space:nowrap}.breadcrumbs::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.breadcrumbs::-webkit-scrollbar-track{background:transparent;box-shadow:none}.breadcrumbs::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.breadcrumbs-collapsed,.breadcrumbs-item,.breadcrumbs-separator{--f7-touch-ripple-color:transparent!important;flex-shrink:0}.breadcrumbs-collapsed+.breadcrumbs-collapsed,.breadcrumbs-collapsed+.breadcrumbs-item,.breadcrumbs-collapsed+.breadcrumbs-separator,.breadcrumbs-item+.breadcrumbs-collapsed,.breadcrumbs-item+.breadcrumbs-item,.breadcrumbs-item+.breadcrumbs-separator,.breadcrumbs-separator+.breadcrumbs-collapsed,.breadcrumbs-separator+.breadcrumbs-item,.breadcrumbs-separator+.breadcrumbs-separator{margin-left:var(--f7-breadcrumbs-spacing)}.breadcrumbs-item{align-items:center;background-color:var(--f7-breadcrumbs-item-bg-color);border-radius:var(--f7-breadcrumbs-item-border-radius);color:var(--f7-breadcrumbs-item-color);display:flex;font-weight:var(--f7-breadcrumbs-item-font-weight);padding:var(--f7-breadcrumbs-item-padding)}.breadcrumbs-item .icon{font-size:var(--f7-breadcrumbs-icon-size);height:var(--f7-breadcrumbs-icon-size);width:var(--f7-breadcrumbs-icon-size)}.breadcrumbs-item a{--f7-touch-ripple-color:transparent!important;color:inherit}.breadcrumbs-item-active{color:var(--f7-breadcrumbs-item-active-color,var(--f7-breadcrumbs-item-color));font-weight:var(--f7-breadcrumbs-item-active-font-weight)}.breadcrumbs-separator{align-items:center;color:var(--f7-breadcrumbs-separator-color);display:flex;height:24px;overflow:hidden}.breadcrumbs-separator:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";content:var(--f7-breadcrumbs-separator-icon);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%;width:12px}.ios .breadcrumbs-separator:after{font-size:12px;height:11px}.md .breadcrumbs-separator:after{font-size:18px;height:18px}.breadcrumbs-collapsed{align-items:center;background:var(--f7-breadcrumbs-collapsed-bg-color);border-radius:var(--f7-breadcrumbs-collapsed-border-radius);cursor:pointer;display:flex;min-height:1em;padding:var(--f7-breadcrumbs-collapsed-padding)}.breadcrumbs-collapsed span,.breadcrumbs-collapsed:after,.breadcrumbs-collapsed:before{background:var(--f7-breadcrumbs-collapsed-color);border-radius:50%;content:"";height:4px;width:4px}.breadcrumbs-collapsed span{margin:0 3px}:root{--f7-typography-padding:16px;--f7-typography-margin:16px}.display-flex{display:flex!important}.display-block{display:block!important}.display-inline-flex{display:inline-flex!important}.display-inline-block{display:inline-block!important}.display-inline{display:inline!important}.display-none{display:none!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-shrink-2{flex-shrink:2!important}.flex-shrink-3{flex-shrink:3!important}.flex-shrink-4{flex-shrink:4!important}.flex-shrink-5{flex-shrink:5!important}.flex-shrink-6{flex-shrink:6!important}.flex-shrink-7{flex-shrink:7!important}.flex-shrink-8{flex-shrink:8!important}.flex-shrink-9{flex-shrink:9!important}.flex-shrink-10{flex-shrink:10!important}.flex-direction-row{flex-direction:row!important}.flex-direction-row-reverse{flex-direction:row-reverse!important}.flex-direction-column{flex-direction:column!important}.flex-direction-column-reverse{flex-direction:column-reverse!important}.justify-content-flex-start{justify-content:flex-start!important}.justify-content-center{justify-content:center!important}.justify-content-flex-end{justify-content:flex-end!important}.justify-content-space-between{justify-content:space-between!important}.justify-content-space-around{justify-content:space-around!important}.justify-content-space-evenly{justify-content:space-evenly!important}.justify-content-stretch{justify-content:stretch!important}.justify-content-start{justify-content:start!important}.justify-content-end{justify-content:end!important}.justify-content-left{justify-content:left!important}.justify-content-right{justify-content:right!important}.align-content-flex-start{align-content:flex-start!important}.align-content-flex-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-space-between{align-content:space-between!important}.align-content-space-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-items-baseline{align-items:baseline!important}.align-items-flex-start{align-items:flex-start!important}.align-items-flex-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-stretch{align-items:stretch!important}.align-self-flex-start{align-self:flex-start!important}.align-self-flex-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-stretch{align-self:stretch!important}.text-align-left{text-align:left!important}.text-align-center{text-align:center!important}.text-align-right{text-align:right!important}.text-align-justify{text-align:justify!important}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}.vertical-align-bottom{vertical-align:bottom!important}.vertical-align-middle{vertical-align:middle!important}.vertical-align-top{vertical-align:top!important}.no-padding{padding:0!important}.no-padding-left{padding-left:0!important}.no-padding-horizontal,.no-padding-right{padding-right:0!important}.no-padding-horizontal{padding-left:0!important}.no-padding-top{padding-top:0!important}.no-padding-bottom,.no-padding-vertical{padding-bottom:0!important}.no-padding-vertical{padding-top:0!important}.no-margin{margin:0!important}.no-margin-left{margin-left:0!important}.no-margin-horizontal,.no-margin-right{margin-right:0!important}.no-margin-horizontal{margin-left:0!important}.no-margin-top{margin-top:0!important}.no-margin-bottom,.no-margin-vertical{margin-bottom:0!important}.no-margin-vertical{margin-top:0!important}.width-auto{width:auto!important}.width-100{width:100%!important}.padding{padding:var(--f7-typography-padding)!important}.padding-half{padding:calc(var(--f7-typography-padding)/2)!important}.padding-top{padding-top:var(--f7-typography-padding)!important}.padding-top-half{padding-top:calc(var(--f7-typography-padding)/2)!important}.padding-bottom{padding-bottom:var(--f7-typography-padding)!important}.padding-bottom-half{padding-bottom:calc(var(--f7-typography-padding)/2)!important}.padding-left{padding-left:var(--f7-typography-padding)!important}.padding-left-half{padding-left:calc(var(--f7-typography-padding)/2)!important}.padding-right{padding-right:var(--f7-typography-padding)!important}.padding-right-half{padding-right:calc(var(--f7-typography-padding)/2)!important}.padding-vertical{padding-bottom:var(--f7-typography-padding)!important;padding-top:var(--f7-typography-padding)!important}.padding-vertical-half{padding-bottom:calc(var(--f7-typography-padding)/2)!important;padding-top:calc(var(--f7-typography-padding)/2)!important}.padding-horizontal{padding-left:var(--f7-typography-padding)!important;padding-right:var(--f7-typography-padding)!important}.padding-horizontal-half{padding-left:calc(var(--f7-typography-padding)/2)!important;padding-right:calc(var(--f7-typography-padding)/2)!important}.margin{margin:var(--f7-typography-margin)!important}.margin-half{margin:calc(var(--f7-typography-margin)/2)!important}.margin-top{margin-top:var(--f7-typography-margin)!important}.margin-top-half{margin-top:calc(var(--f7-typography-margin)/2)!important}.margin-bottom{margin-bottom:var(--f7-typography-margin)!important}.margin-bottom-half{margin-bottom:calc(var(--f7-typography-margin)/2)!important}.margin-left{margin-left:var(--f7-typography-margin)!important}.margin-left-half{margin-left:calc(var(--f7-typography-margin)/2)!important}.margin-right{margin-right:var(--f7-typography-margin)!important}.margin-right-half{margin-right:calc(var(--f7-typography-margin)/2)!important}.margin-vertical{margin-bottom:var(--f7-typography-margin)!important;margin-top:var(--f7-typography-margin)!important}.margin-vertical-half{margin-bottom:calc(var(--f7-typography-margin)/2)!important;margin-top:calc(var(--f7-typography-margin)/2)!important}.margin-horizontal{margin-left:var(--f7-typography-margin)!important;margin-right:var(--f7-typography-margin)!important}.margin-horizontal-half{margin-left:calc(var(--f7-typography-margin)/2)!important;margin-right:calc(var(--f7-typography-margin)/2)!important}[class*=text-color-]{color:var(--f7-theme-color-text-color)!important}[class*=bg-color-]{background-color:var(--f7-theme-color-bg-color)!important}[class*=border-color-]{border-color:var(--f7-theme-color-border-color)!important} +/*# sourceMappingURL=../../presentationeditor/mobile/css/framework7.css.map */ +/*# sourceMappingURL=framework7.css.map*/ \ No newline at end of file diff --git a/apps/presentationeditor/mobile/css/framework7.css.map b/apps/presentationeditor/mobile/css/framework7.css.map new file mode 100644 index 0000000000..b2114bbc95 --- /dev/null +++ b/apps/presentationeditor/mobile/css/framework7.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://documenteditor/../../presentationeditor/mobile/css/framework7.css"],"names":[],"mappings":"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AClB,SAGF,CACA,qGAGE,sDACF,CACA,mIAGE,gEACF,CACA,gKAIE,mBACF,CACA,oBASE,sGAAkI,CADlI,UAAW,CALX,UAAW,CAEX,UAKF,CACA,yCAPE,QAAS,CAET,UAAW,CACX,SAAU,CANV,iBAAkB,CAClB,KAmBF,CAVA,qBAIE,yBAA8B,CAF9B,MAAO,CAGP,UAAW,CAIX,aACF,CACA,oBACE,+BACF,CACA,gBACE,+BACF,CAOA,0GACE,SACF,CACA,2CACE,8EACF,CACA,kDAUE,8EAA+E,CAD/E,sGAAkI,CALlI,QAAS,CAET,UAAW,CACX,SAAU,CANV,iBAAkB,CAOlB,UAAW,CANX,KAAM,CACN,UAAW,CAEX,UAMF,CACA,8CACE,kFACF,CACA,oDAUE,8EAA+E,CAN/E,yBAA8B,CAE9B,QAAS,CACT,UAAW,CALX,MAAO,CAMP,SAAU,CAPV,iBAAkB,CAElB,KAAM,CAEN,UAAW,CAIX,aAEF,CACA,gDACE,kFACF,CACA,sDAUE,+EAAgF,CANhF,yBAA8B,CAE9B,QAAS,CACT,UAAW,CALX,MAAO,CAMP,SAAU,CAPV,iBAAkB,CAElB,KAAM,CAEN,UAAW,CAIX,aAEF,CACA,+CACE,8EACF,CACA,sDAUE,+EAAgF,CADhF,sGAAkI,CALlI,QAAS,CAET,UAAW,CACX,SAAU,CANV,iBAAkB,CAOlB,UAAW,CANX,KAAM,CACN,UAAW,CAEX,UAMF,CACA,oCACE,GACE,+BACF,CACA,GACE,uBACF,CACF,CACA,wCACE,GACE,+BACF,CACA,GACE,uBACF,CACF,CACA,wCACE,GACE,uBACF,CACA,GACE,+BACF,CACF,CACA,oCACE,GACE,uBACF,CACA,GACE,+BACF,CACF,CACA,oCACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,qCACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,mBACE,gCACF,CACA,eAGE,SAAU,CAFV,mBAAoB,CACpB,gCAEF,CACA,kCAEE,SAAU,CADV,+BAEF,CACA,0CAEE,qGAA2G,CAD3G,SAEF,CACA,6CACE,yGACF,CACA,8CACE,qMACF,CACA,+CACE,iFACF,CACA,mCACE,GACE,gCACF,CACA,GACE,uBACF,CACF,CACA,mCACE,GACE,uBACF,CACA,GACE,gCACF,CACF,CACA,2CACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,uCACE,GACE,uBACF,CACA,GACE,gCACF,CACF,CACA,uCACE,GACE,gCACF,CACA,GACE,uBACF,CACF,CAIA,0GACE,YACF,CACA,oEAGE,wBAAyB,CACzB,8BAA+B,CAC/B,wFAAyF,CAHzF,iCAIF,CACA,kFAGE,uBAAwB,CACxB,6BAA8B,CAC9B,gCAAiC,CAHjC,8CAIF,CACA,8DACE,MAAO,CACP,OAAQ,CACR,UACF,CACA,iCAGE,mBAAoB,CADpB,cAAe,CADf,SAGF,CACA,+EAEE,YACF,CACA,mDACE,cACF,CACA,8KAIE,SAAU,CACV,cACF,CACA,6HAEE,cACF,CACA,YAcE,qBAAsB,CATtB,qCAAsC,CAEtC,wCAAyC,CACzC,4CAA6C,CAF7C,kDAAmD,CAGnD,4CAA6C,CAM7C,eAAgB,CAFhB,2NAAqD,CAZrD,iBAAkB,CAElB,sBAAuB,CACvB,kBAAmB,CAYnB,UAAW,CAdX,UAeF,CACA,uFAUE,kCAAmC,CARnC,UAAW,CAKX,cAAe,CAHf,QAAS,CAIT,mBAAoB,CACpB,kBAAmB,CANnB,iBAAkB,CAElB,OAAQ,CACR,aAAc,CAKd,WACF,CACA,uFAEE,mBACF,CACA,2CAGE,0CAA6C,CAD7C,iBAAkB,CADlB,kBAGF,CACA,yGAIE,gDAAmD,CACnD,mBAAsB,CAHtB,SAAU,CACV,mBAAqB,CAGrB,WACF,CACA,4CACE,2CAA8C,CAC9C,oBACF,CACA,iHAEE,gDAAmD,CACnD,WACF,CACA,+BACE,GAEE,iBAAkB,CADlB,kBAEF,CACA,IACE,iBACF,CACA,GAEE,eAAiB,CADjB,kBAEF,CACF,CACA,gCACE,GAEE,eAAiB,CADjB,kBAEF,CACA,IACE,iBACF,CACA,GAEE,iBAAkB,CADlB,kBAEF,CACF,CACA,qCACE,GAEE,SAAU,CADV,mBAEF,CACA,IAEE,SAAU,CADV,sBAEF,CACA,GAEE,SAAU,CADV,kBAEF,CACF,CACA,qCACE,GAEE,SAAU,CADV,kBAEF,CACA,IAEE,SAAU,CADV,sBAEF,CACA,IAEE,SAAU,CADV,mBAEF,CACA,GAEE,SAAU,CADV,mBAEF,CACF,CACA,6EAEE,eAAgB,CAChB,kBACF,CACA,yFAEE,mBACF,CACA,iDACE,sFACF,CACA,oDACE,sFACF,CACA,qDACE,sFACF,CACA,sDACE,sFACF,CACA,sCACE,GACE,0BACF,CACA,GACE,uBACF,CACF,CACA,sCACE,GACE,uBACF,CACA,GACE,0BACF,CACF,CACA,sCACE,GAEE,SAAU,CADV,uBAEF,CACA,GAEE,UAAY,CADZ,4BAEF,CACF,CACA,sCACE,GAEE,UAAY,CADZ,4BAEF,CACA,GAEE,SAAU,CADV,uBAEF,CACF,CACA,yEAEE,eAAgB,CAChB,kBACF,CACA,qFAEE,mBACF,CACA,+CACE,oFACF,CACA,kDACE,oFACF,CACA,mDACE,oFACF,CACA,oDACE,oFACF,CACA,oCACE,GACE,0BACF,CACA,GACE,uBACF,CACF,CACA,oCACE,GACE,uBACF,CACA,GACE,0BACF,CACF,CACA,oCACE,GAEE,SAAU,CADV,uBAEF,CACA,GAEE,UAAY,CADZ,4BAEF,CACF,CACA,oCACE,GAEE,UAAY,CADZ,4BAEF,CACA,GAEE,SAAU,CADV,uBAEF,CACF,CACA,uEAEE,kCAAmC,CACnC,kBACF,CACA,mFAEE,mBACF,CACA,8CACE,kFACF,CACA,iDACE,kFACF,CACA,kDACE,kFACF,CACA,mDACE,kFACF,CACA,mCACE,GACE,SAAU,CACV,4BACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,uBACF,CACF,CACA,mCACE,GACE,SAAU,CACV,uBACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,4BACF,CACF,CACA,mCACE,GAEE,SAAU,CADV,uBAEF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,2BACF,CACF,CACA,mCACE,GACE,SAAU,CACV,2BACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,uBACF,CACF,CACA,uEAEE,kCACF,CACA,mFAEE,mBACF,CACA,qGAGE,qEAAsE,CADtE,SAEF,CAKA,wNAEE,sEACF,CACA,+GAEE,qEACF,CACA,sBACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,uBACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,uEAEE,eAAgB,CAChB,kBACF,CACA,mFAEE,kCAAmC,CAC3B,0BAA2B,CACnC,eAAgB,CAChB,mBACF,CACA,8CAEE,kFAAmF,CADnF,2BAEF,CACA,iDAEE,kFAAmF,CADnF,2BAEF,CACA,kDAEE,kFAAmF,CADnF,2BAEF,CACA,mDAEE,kFAAmF,CADnF,2BAEF,CACA,mCACE,GACE,kBAAmB,CACnB,8CACF,CACA,GACE,eAAgB,CAChB,qCACF,CACF,CACA,mCACE,GACE,eAAkB,CAClB,qCACF,CACA,GACE,kBAAmB,CACnB,8CACF,CACF,CACA,mCACE,GACE,eAAkB,CAClB,qCACF,CACA,GACE,kBAAmB,CACnB,+CACF,CACF,CACA,mCACE,GACE,kBAAmB,CACnB,+CACF,CACA,GACE,eAAkB,CAClB,qCACF,CACF,CACA,6CACE,mBACF,CACA,kDACE,0FACF,CACA,qDACE,0FACF,CACA,8CACE,mBACF,CACA,sDACE,0FACF,CACA,uDACE,0FACF,CACA,uCACE,GACE,0BACF,CACA,GACE,uBACF,CACF,CACA,uCACE,GACE,uBACF,CACA,GACE,0BACF,CACF,CACA,uCACE,GACE,uBACF,CACA,GACE,0BACF,CACF,CACA,uCACE,GACE,0BACF,CACA,GACE,uBACF,CACF,CACA,yCACE,mBACF,CACA,8CACE,kFACF,CACA,iDACE,kFACF,CACA,0CACE,mBACF,CACA,kDACE,kFACF,CACA,mDACE,kFACF,CACA,mCACE,GACE,0BACF,CACA,GACE,uBACF,CACF,CACA,mCACE,GACE,uBACF,CACA,GACE,0BACF,CACF,CACA,mCACE,GACE,uBACF,CACA,GACE,2BACF,CACF,CACA,mCACE,GACE,2BACF,CACA,GACE,uBACF,CACF,CAEA,MACE,yCAA6C,CAC7C,gDAAoD,CACpD,8DACF,CACA,KACE,6BACF,CACA,gBASE,8FAAiG,CALjG,oBAAqB,CADrB,kBAAmB,CAInB,qBAAsB,CALtB,mBAAoB,CAGpB,sBAAuB,CACvB,iBAAkB,CAElB,SAEF,CACA,oDAIE,eACF,CACA,qBACE,2BACF,CACA,WACE,sBACF,CACA,wBACE,sCAAuC,CACvC,uBACF,CAEA,MAME,+CAAgD,CAChD,iCAAkC,CAClC,uCAAwC,CACxC,uCAAwC,CACxC,0CAA2C,CAC3C,yCAA0C,CAC1C,0CACF,CACA,KAKE,uBAAwB,CACxB,0BAA2B,CAC3B,mCAAoC,CACpC,kCAAmC,CACnC,mCAAoC,CACpC,iCAAkC,CAClC,+BAAgC,CAChC,gCAAiC,CACjC,mCAAoC,CACpC,mCAAoC,CACpC,kCAAmC,CACnC,mCAAoC,CACpC,sCAAuC,CACvC,uCAAwC,CACxC,8CAA+C,CAC/C,4CAA6C,CAK7C,gDACF,CACA,qBAEE,sDACF,CACA,IACE,uBAAwB,CACxB,0BAA2B,CAC3B,gCAAiC,CACjC,kCAAmC,CACnC,mCAAoC,CACpC,iCAAkC,CAClC,iCAAkC,CAClC,mCAAoC,CACpC,iCAAkC,CAClC,mCAAoC,CACpC,oCAAqC,CACrC,sCAAuC,CACvC,mCAAoC,CACpC,uCAAwC,CACxC,wCAAyC,CACzC,4CAA6C,CAC7C,4BAA6B,CAC7B,iCACF,CACA,kCAGE,8CAA+C,CAC/C,8CAA+C,CAC/C,+DACF,CACA,iBAGE,MAAO,CACP,KAAM,CACN,UAAW,CAHX,WAIF,CACA,SACE,iBACF,CACA,iBACE,YACF,CACA,+BACE,WACF,CACA,QACE,qCAAsC,CAEtC,kCAAmC,CAC3B,0BAA2B,CACnC,qBAAsB,CAGtB,2DAA6D,CAC7D,oCAAqC,CAFrC,8DAA+D,CAD/D,QAAS,CAJT,iBAQF,CACA,UACE,eACF,CACA,UACE,iFACF,CACA,eACE,YAAa,CAGb,2DAA6D,CAF7D,0BAA2B,CAC3B,qEAEF,CACA,4CAGE,iBAAkB,CAClB,UACF,CACA,eAOE,oBAAqB,CAFrB,cAAe,CAKf,0CAA2C,CAJ3C,8CAA+C,CAE/C,8CAA+C,CAG/C,8CAA+C,CAC/C,+CAAgD,CAVhD,eAAgB,CADhB,iBAAkB,CAQlB,4CAA6C,CAN7C,sBAAuB,CACvB,kBASF,CACA,kBAEE,0CAA2C,CAD3C,aAAc,CAGd,6CAA8C,CAD9C,eAAmB,CAEnB,iDAAkD,CAClD,+CACF,CACA,6BAKE,kBAAmB,CAFnB,YAAa,CADb,aAAc,CAEd,0BAEF,CACA,2BAEE,WAAY,CADZ,iBAEF,CAKA,sJAEE,sBACF,CACA,iFAEE,mBACF,CACA,WAQE,oCAAqC,CACrC,kEAAoE,CAJpE,WAAY,CAHZ,MAAO,CAIP,mBAAoB,CALpB,iBAAkB,CAElB,KAAM,CAON,6BAA8B,CAN9B,UAAW,CAGX,SAIF,CACA,iFACE,iCAEE,4EAA6E,CACrE,oEAAqE,CAF7E,mHAGF,CACF,CACA,mCAEE,kCAAmC,CAC3B,0BACV,CACA,iBAGE,0EAA4E,CAK5E,QAAS,CAPT,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,QAAS,CAOT,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CANX,UAAW,CAWX,SAFF,CAIA,8PAQE,kEACF,CAIA,8GAEE,0EACF,CACA,eACE,2DACF,CACA,6BACE,mBACF,CACA,2GAGE,mBACF,CACA,0BACE,mBACF,CACA,yBACE,qFACF,CACA,mCACE,qCACF,CACA,cAOE,kBAAmB,CAJnB,QAAS,CAKT,qBAAsB,CAFtB,YAAa,CADb,WAAY,CAHZ,MAAO,CAOP,6KAA8K,CAC9K,uBAA+B,CAN/B,UAAW,CAOX,UACF,CACA,0EAZE,iBAiBF,CACA,kPAME,SACF,CACA,yBACE,uDAAwD,CACxD,gHACF,CACA,iFAEE,gDACF,CACA,8RAKE,uDAAwD,CACxD,gHACF,CACA,2CACE,qCACF,CACA,qBACE,gDACF,CACA,wBACE,qCACF,CACA,qCACE,mBACF,CACA,qBAME,YAAa,CAGb,0CAA2C,CAN3C,MAAO,CADP,iBAAkB,CAElB,OAAQ,CACR,QAAS,CAKT,SACF,CACA,+CAXE,qBAAsB,CAOtB,eAAgB,CADhB,kBAsBF,CAjBA,0BAGE,6CAA8C,CAE9C,gDAAiD,CACjD,oDAAqD,CAFrD,0DAA2D,CAG3D,oDAAqD,CAIrD,2PAA6D,CAV7D,sBAAuB,CAcvB,gHAAyH,CACzH,kGAAmG,CAFnG,UAGF,CACA,oDACE,uBACF,CACA,qBAEE,+EACF,CACA,wKAKE,qHACF,CACA,0CAEE,+CACF,CACA,KACE,0EAAiF,CACjF,qEAAsE,CACtE,sGAAyG,CACzG,8DAA+D,CAC/D,wGAA2G,CAC3G,gEAAiE,CACjE,wGAA2G,CAC3G,gEACF,CACA,0BACE,oBACF,CACA,yBAGE,sBAAuB,CADvB,QAAS,CADT,UAGF,CACA,+CAEE,gBACF,CACA,eACE,eACF,CACA,mBACE,iBACF,CACA,oBACE,gBACF,CACA,gCACE,2CACF,CACA,mBACE,6BACF,CACA,8BACE,0BACF,CACA,qCACE,gBACF,CACA,qCAEE,iBAAkB,CADlB,eAEF,CACA,8wBAeE,SACF,CACA,mHAEE,mBACF,CACA,6IAEE,SAAU,CACV,uBACF,CACA,iLAEE,mBAAqB,CACrB,uBACF,CACA,oTAIE,SAAU,CACV,gCACF,CACA,yIAEE,2BACF,CACA,kBACE,mBACF,CACA,6BACE,0BACF,CACA,iDAEE,mFAAsF,CADtF,uBAEF,CACA,2EAEE,SAAU,CACV,+BACF,CACA,mEAEE,sDACF,CACA,mCACE,qDAAsD,CACtD,4BACF,CACA,+EAEE,uBACF,CACA,+LAIE,iFACF,CACA,8cAUE,cAAe,CADf,mBAAqB,CADrB,sDAGF,CACA,uHAGE,cAAe,CACf,SAAU,CAFV,sDAGF,CACA,0bAQE,gFACF,CACA,2pCAmBE,cAAe,CAEf,mBAAqB,CADrB,iCAA0C,CAF1C,sDAIF,CACA,2PAEE,cACF,CACA,whBAIE,mBACF,CACA,sxBAQE,cACF,CACA,4QAEE,gBACF,CACA,gTAEE,2KACF,CACA,kGACE,0FAA2F,CAE3F,4BAA6B,CAD7B,eAEF,CACA,gIACE,gBACF,CAIA,0SACE,4FACF,CACA,+LAEE,cAAe,CACf,mBAAqB,CACrB,qBACF,CACA,oGACE,8FAA+F,CAE/F,4BAA6B,CAD7B,eAEF,CACA,oIACE,gBACF,CAIA,kTACE,6FACF,CACA,0IACE,SACF,CACA,gRAGE,SAAU,CADV,gBAEF,CACA,oTAEE,4KACF,CACA,qMAEE,cAAe,CACf,mBAAqB,CACrB,qBACF,CAIA,4LACE,0CACF,CACA,uIACE,0CACF,CACA,uIACE,0CACF,CACA,0HACE,0CACF,CAIA,sLACE,0CACF,CACA,oIACE,0CACF,CACA,oIACE,0CACF,CACA,4DACE,0CACF,CACA,wIACE,0CACF,CACA,wIACE,0CACF,CACA,mFACE,0CACF,CACA,qHACE,0CACF,CACA,6DACE,0CACF,CACA,yIACE,0CACF,CACA,yIACE,0CACF,CACA,oFACE,0CACF,CACA,6BACE,YACF,CACA,iCACE,WACF,CACA,+FAEE,WACF,CACA,6GAEE,WACF,CACA,mDACE,mBACF,CACA,8PAIE,SACF,CACA,yYASE,wBAA0B,CAH1B,mBAAqB,CAErB,wBAA0B,CAD1B,uBAGF,CACA,gEAEE,wBAA0B,CAD1B,uBAEF,CACA,yEAIE,wBAA0B,CAH1B,uEAA2E,CAE3E,wBAA0B,CAD1B,uBAGF,CACA,mKAGE,wBAA0B,CAD1B,uBAEF,CACA,yLAEE,qBAAuB,CACvB,0DACF,CACA,sCACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,uCACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,gDACE,GACE,8CACF,CACA,GACE,gNACF,CACF,CACA,kDACE,GACE,kNACF,CACA,GACE,8CACF,CACF,CACA,kDACE,GACE,0BACF,CACA,GACE,uBACF,CACF,CACA,mDACE,GACE,uBACF,CACA,GACE,0BACF,CACF,CACA,gDACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,+CACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,oDACE,GACE,SAAU,CACV,8CACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,gNACF,CACF,CACA,gDACE,GACE,SAAU,CACV,gNACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,8CACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,+CACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,4CACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,+CACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,4CACF,CACF,CACA,uCACE,GACE,gDACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,gDACF,CACA,GACE,8CACF,CACF,CACA,uCACE,GACE,6CACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,gDACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,gDACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,6CACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,6CACF,CACF,CACA,uCACE,GACE,+CACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,4CACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,+CACF,CACA,GACE,8CACF,CACF,CACA,uCACE,GACE,4CACF,CACA,GACE,8CACF,CACF,CACA,yBACE,kBACF,CACA,kBACE,eAAgB,CAChB,gBACF,CACA,mBAEE,cAAe,CADf,cAEF,CACA,wBAEE,aAAc,CADd,WAAY,CAEZ,UACF,CACA,mBACE,gBAAiB,CACjB,gBACF,CACA,+BACE,+BACF,CACA,kBACE,0BAA2B,CAC3B,eACF,CAIA,yGACE,gBACF,CACA,uEACE,gBACF,CACA,iCACE,6BACF,CACA,wCACE,aACF,CACA,wCACE,iBACF,CAEA,MAQE,4CAA6C,CAC7C,qCAAsC,CACtC,gDACF,CACA,KACE,wBAAyB,CACzB,2BAA4B,CAC5B,mCAAoC,CACpC,oCAAqC,CACr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,CACA,4HAGE,uFACF,CACA,yHAGE,uFACF,CACA,6JAGE,gDACF,CACA,sNAKE,0DACF,CACF,CACA,yBACE,sEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,6GAGE,aAAc,CACd,cACF,CACA,+EAGE,gDACF,CACA,qMAME,sBACF,CACA,yHAGE,uFACF,CACA,sHAGE,uFACF,CACA,0JAGE,gDACF,CACA,iNAKE,0DACF,CACF,CACA,yBACE,yEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,gHAGE,aAAc,CACd,cACF,CACA,kFAGE,gDACF,CACA,2MAME,sBACF,CACA,4HAGE,uFACF,CACA,yHAGE,uFACF,CACA,6JAGE,gDACF,CACA,sNAKE,0DACF,CACF,CACA,0BACE,sEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,6GAGE,aAAc,CACd,cACF,CACA,+EAGE,gDACF,CACA,qMAME,sBACF,CACA,yHAGE,uFACF,CACA,sHAGE,uFACF,CACA,0JAGE,gDACF,CACA,iNAKE,0DACF,CACF,CACA,0BACE,yEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,gHAGE,aAAc,CACd,cACF,CACA,kFAGE,gDACF,CACA,2MAME,sBACF,CACA,4HAGE,uFACF,CACA,yHAGE,uFACF,CACA,6JAGE,gDACF,CACA,sNAKE,0DACF,CACF,CACA,8CAGE,wCAAyC,CACzC,+BACF,CACA,WACE,iDAAkD,CAClD,uEAAwE,CACxE,2EAA4E,CAC5E,6EAA8E,CAC9E,qEAAsE,CACtE,uEAAwE,CACxE,6DACF,CACA,8IAME,uBACF,CACA,qCAEE,kBAAmB,CADnB,eAEF,CACA,iDACE,eACF,CACA,gDACE,kBACF,CACA,sBAKE,kDAAmD,CAFnD,yDAA2D,CAC3D,yCAA0C,CAH1C,sCAAuC,CACvC,uCAIF,CACA,6BACE,YACF,CACA,s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CACxD,qEAAsE,CALtE,UAAW,CAGX,aAKF,CACA,wIAGE,gCACF,CACA,yCACE,2DACF,CACA,mDACE,oEACF,CACA,0DACE,uFACF,CACA,oDACE,wGACF,CACA,8DACE,gHACF,CACA,+CACE,SAAU,CACV,mBACF,CACA,8iBAQE,uFAAwF,CACxF,oEACF,CACA,2CACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,4CACE,GACE,SACF,CACA,GACE,SACF,CACF,CAEA,MACE,wCAAyC,CACzC,yCAA0C,CAC1C,0CAA2C,CAC3C,wCACF,CACA,KACE,6CAA8C,CAC9C,oDAAqD,CACrD,2CAA4C,CAC5C,uCAAwC,CACxC,sCAAuC,CACvC,uCAAwC,CACxC,+BACF,CACA,qBAEE,+BAAgC,CAChC,uCACF,CACA,IACE,2CAA4C,CAC5C,oEAAwE,CACxE,6CAA8C,CAC9C,uCAAwC,CACxC,sCACF,CACA,kCAGE,uDAAwD,CACxD,+CACF,CACA,cAUE,0CAA2C,CAH3C,qBAAsB,CADtB,YAAa,CADb,WAAY,CAHZ,MAAO,CADP,iBAAkB,CAElB,KAAM,CAMN,gCAAmC,CADnC,6BAA8B,CAG9B,4EAA6E,CAP7E,UAAW,CAQX,aACF,CACA,+CAEE,8DACF,CACA,2BACE,uBACF,CACA,uBACE,aAAc,CACd,uBACF,CACA,wBACE,+BACF,CACA,6DAGE,kDACF,CACA,6LAME,yDACF,CACA,uUAUE,iDACF,CACA,2DAEE,eACF,CACA,gJAIE,sBACF,CACA,0IAKE,gBAAiB,CACjB,iBAAkB,CAFlB,iBAGF,CACA,oBAIE,6CAA8C,CAF9C,gDAAiD,CACjD,oDAAqD,CAErD,0DAA2D,CAJ3D,kDAKF,CACA,iEAGE,YAAa,CACb,qBACF,CACA,8OAQE,WAAY,CADZ,kBAAmB,CADnB,eAAgB,CAGhB,eAAgB,CAChB,UACF,CACA,+NAME,wBACF,CAEA,MACE,wBACF,CACA,KACE,+BAAgC,CAChC,mCAAoC,CACpC,+CAAgD,CAChD,4CAAgD,CAChD,sDACF,CACA,qBAEE,yCAA6C,CAC7C,4DACF,CACA,IACE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7B,gCACF,CACA,IACE,kCAAmC,CACnC,gCAAiC,CACjC,6BAA8B,CAC9B,gCACF,CACA,kCAGE,6CAA8C,CAC9C,0CACF,CACA,OAQE,yCAA0C,CAD1C,qBAAsB,CAFtB,gCAAiC,CACjC,mCAAoC,CAHpC,mCAAoC,CAMpC,SAAU,CAPV,iBAAkB,CADlB,qCAAuC,CAGvC,aAMF,CACA,iFACE,+BAEE,iDAAkD,CAC1C,yCAA0C,CAFlD,sDAGF,CACF,CACA,gBACE,SACF,CACA,sBAGE,kBAAmB,CACnB,qBAAsB,CAHtB,YAAa,CACb,6BAA8B,CAG9B,2EACF,CACA,mBAEE,aAAc,CADd,gBAAiB,CAEjB,WACF,CACA,qBACE,aAAc,CAGd,kBAAmB,CADnB,eAAgB,CADhB,0CAGF,CACA,sCACE,aAAc,CACd,iBACF,CACA,mCACE,iBACF,CACA,gGAEE,mCACF,CACA,oBACE,OACF,CACA,iBACE,kCACF,CACA,YAGE,MAAO,CAFP,uBAA0B,CAC1B,UAEF,CACA,sBACE,KAAM,CACN,gCACF,CACA,+BACE,uBACF,CACA,yBAGE,2CAA4C,CAD5C,QAAS,CADT,UAIF,CACA,2DAFE,kCAIF,CACA,yBACE,QAAS,CACT,+BACF,CACA,kCACE,uBACF,CACA,yBACE,sBACE,YACF,CACA,qCACE,4EACF,CACA,wCACE,kFACF,CACF,CACA,yBACE,YAGE,2CAA4C,CAF5C,QAAS,CACT,gDAEF,CACA,sBACE,QACF,CACA,yBACE,aACF,CACA,yBACE,qDACF,CACF,CACA,0BACE,YACE,aAAc,CACd,UACF,CACA,kCACE,SACF,CACA,mCACE,SAAU,CACV,UACF,CACA,oCACE,QAAS,CAET,gDAAqD,CADrD,+BAEF,CACF,CACA,mBACE,gBAAiB,CACjB,yDACF,CACA,WAEE,2CAA4C,CAG5C,QAAS,CADT,mBAAqB,CAHrB,uBAA0B,CAE1B,uBAGF,CAIA,yCACE,kBACF,CACA,qBACE,OACF,CACA,wBACE,QAAS,CAET,4CAAgD,CADhD,UAEF,CAIA,mEACE,2CACF,CACA,wBACE,6CACF,CACA,yBACE,WACE,QAAS,CACT,gDACF,CACA,wBACE,aACF,CACF,CACA,0BACE,WACE,aAAc,CACd,UACF,CACA,iCACE,SACF,CACA,kCACE,SAAU,CACV,UACF,CACA,mCACE,QAAS,CAET,gDAAqD,CADrD,+BAEF,CACA,wBACE,8CACF,CACA,qBACE,QACF,CACF,CACA,kBACE,gBAAiB,CACjB,iBACF,CAEA,MACE,gCAAiC,CACjC,6CACF,CACA,KACE,4BAA6B,CAC7B,wBAAyB,CACzB,wCAAyC,CACzC,sCACF,CACA,IACE,4BAA6B,CAC7B,wBAAyB,CACzB,wCAAyC,CACzC,sCACF,CACA,WACE,oBAAqB,CAIrB,WAAY,CADZ,+BAAgC,CAEhC,iBAAkB,CAJlB,qBAAsB,CACtB,8BAIF,CACA,4BAGE,aAAc,CADd,WAAY,CAEZ,iBAAkB,CAHlB,UAIF,CAEA,oBAGE,eAAgB,CADhB,SAAU,CADV,kBAAmB,CAGnB,aACF,CACA,iBAKE,6CAA8C,CAG9C,qDAAsD,CANtD,QAAS,CAET,yCAA0C,CAH1C,iBAAkB,CAElB,OAAQ,CAIR,2CAA4C,CAD5C,aAGF,CACA,4BACE,4DAA6D,CAC7D,uBACF,CACA,+GAIE,+BAAgC,CADhC,eAEF,CACA,0BACE,0CACF,CACA,uBACE,yBACF,CACA,uBACE,yBACF,CACA,gBACE,+BACF,CACA,sBACE,iDACF,CACA,2BAKE,uBAAwB,CADxB,mBAAoB,CAHpB,aAAc,CAEd,aAAc,CAId,QAAS,CADT,iBAAkB,CAElB,OAAQ,CACR,4BAA6B,CAP7B,WAQF,CACA,oGAEE,qDACF,CACA,uCAEE,WAAa,CADb,4CAEF,CACA,wCAEE,iBAAmB,CADnB,6CAEF,CACA,wCAEE,iBAAmB,CADnB,6CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,WAAa,CADb,8CAEF,CACA,8BACE,GACE,sBACF,CACA,GACE,uBACF,CACF,CACA,oCACE,MAEE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACF,CACA,eACE,+BACF,CACA,qBACE,kDACF,CACA,4BACE,SAAU,CACV,mBAAoB,CAEpB,sBAAuB,CACvB,sBAAuB,CACvB,cAAe,CAHf,8DAA+D,CAI/D,wBAAyB,CACzB,0BACF,CACA,oEAEE,gHACF,CACA,mCACE,MAEE,cACF,CACA,IACE,cACF,CACA,IACE,cACF,CACA,IACE,cACF,CACF,CACA,+BACE,GACE,sBACF,CACA,GACE,uBACF,CACF,CACA,sCACE,GAEE,uBAAwB,CADxB,wBAEF,CACA,MAEE,sBAAuB,CADvB,wBAEF,CACA,IACE,uBAAwB,CACxB,wBACF,CACA,MAEE,uBAAwB,CADxB,yBAEF,CACA,MAEE,sBAAuB,CADvB,yBAEF,CACA,IACE,uBAAwB,CACxB,uBACF,CACA,MAEE,uBAAwB,CADxB,uBAEF,CACA,MAEE,sBAAuB,CADvB,uBAEF,CACA,IACE,uBAAwB,CACxB,uBACF,CACA,MAEE,uBAAwB,CADxB,sBAEF,CACA,MAEE,sBAAuB,CADvB,sBAEF,CACA,GACE,uBAAwB,CACxB,wBACF,CACF,CAOA,KACE,2BAA4B,CAC5B,kCAAmC,CACnC,yCACF,CACA,qBAEE,+CACF,CACA,IACE,2BAA4B,CAC5B,kCACF,CACA,kCAGE,6DACF,CACA,mCAOE,4EAAgF,CAGhF,iDAAkD,CALlD,aAAc,CAId,mCAAoC,CANpC,eAAgB,CAChB,iBAAkB,CAIlB,2BAA4B,CAF5B,2BAA4B,CAJ5B,UASF,CACA,aACE,qBACF,CACA,kBACE,2EAA6E,CAE7E,WAAY,CAIZ,MAAO,CAHP,iBAAkB,CAClB,KAAM,CAGN,gCAAmC,CAFnC,wBAA0B,CAJ1B,UAOF,CACA,sBACE,aACF,CACA,yDASE,2EAA6E,CAP7E,UAAW,CAMX,aAAc,CAFd,WAAY,CAIZ,MAAO,CAPP,iBAAkB,CAClB,KAAM,CAGN,uBAA+B,CAI/B,4BAA6B,CAN7B,UAOF,CACA,kCACE,yBACF,CACA,gBACE,sCACF,CACA,iBACE,uCACF,CACA,mWAkBE,yBAA2B,CAH3B,MAAO,CADP,iBAAkB,CAElB,KAAM,CAGN,qCAAuC,CAFvC,aAGF,CACA,0BACE,GACE,SAAU,CACV,mBACF,CACA,GACE,SAAU,CACV,mBACF,CACF,CACA,2BACE,GACE,SAAU,CACV,mBACF,CACA,GACE,SAAU,CACV,mBACF,CACF,CACA,kCACE,qDACF,CACA,iCACE,YACF,CACA,8CAKE,gEAAiE,CAHjE,+HAA8I,CAE9I,0BAA2B,CAD3B,wBAAyB,CAFzB,UAKF,CACA,oCACE,GACE,gCACF,CACA,GACE,+BACF,CACF,CACA,+CACE,GACE,uBACF,CACA,GACE,+BACF,CACF,CACA,iCACE,sDACF,CACA,gCACE,sDACF,CACA,6CAEE,oEAAqE,CADrE,eAEF,CACA,4CAEE,oEAAqE,CADrE,eAAgB,CAEhB,8BACF,CACA,qCACE,GACE,qCACF,CACA,IACE,oCACF,CACA,IACE,oCACF,CACA,GACE,oCACF,CACF,CACA,qCACE,GACE,qCACF,CACA,IACE,qCACF,CACA,IACE,qCACF,CACA,IACE,qCACF,CACA,GACE,qCACF,CACF,CACA,iDACE,GACE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACF,CACA,mDACE,GAEE,wBAAyB,CADzB,mBAEF,CACA,MAEE,wBAAyB,CADzB,mBAEF,CACA,IAEE,wBAAyB,CADzB,mBAEF,CACA,MAEE,wBAAyB,CADzB,mBAEF,CACA,IAEE,wBAAyB,CADzB,mBAEF,CACA,MAEE,wBAAyB,CADzB,mBAEF,CACA,IAEE,wBAAyB,CADzB,mBAEF,CACA,GAEE,wBAAyB,CADzB,mBAEF,CACF,CAEA,KACE,gCAAiC,CACjC,iEAAqE,CACrE,4CAAgD,CAChD,yDACF,CACA,qBAEE,sDAA0D,CAC1D,kDACF,CACA,IACE,gCAAiC,CACjC,0CACF,CACA,kCAGE,2DAA4D,CAC5D,0DACF,CACA,4BAWE,kBAAmB,CAHnB,WAAY,CAEZ,YAAa,CARb,WAAY,CAUZ,sBAAuB,CANvB,S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APT,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,QAAS,CAOT,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CANX,UASF,CACA,4CAIE,gCAAiC,CAFjC,+DAAgE,CAGhE,QAAS,CAFT,aAAc,CAFd,kDAKF,CACA,4CACE,YACF,CACA,qIAEE,sBACF,CACA,oDACE,WACF,CACA,oDACE,UACF,CACA,oDACE,gBACF,CACA,oDACE,UACF,CACA,oDACE,UACF,CACA,oDACE,gBACF,CACA,oDACE,gBACF,CACA,oDACE,YACF,CACA,oDACE,gBACF,CACA,qDACE,UACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,YACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,SACF,CACA,yBACE,2DACE,WACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,gBACF,CACA,2DACE,YACF,CACA,2DACE,gBACF,CACA,4DACE,UACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,YACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,SACF,CACF,CACA,yBACE,0DACE,WACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,UACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,gBACF,CACA,0DACE,YACF,CACA,0DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,YACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,SACF,CACF,CACA,yBACE,2DACE,WACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,gBACF,CACA,2DACE,YACF,CACA,2DACE,gBACF,CACA,4DACE,UACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,YACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,SACF,CACF,CACA,0BACE,0DACE,WACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,UACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,gBACF,CACA,0DACE,YACF,CACA,0DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,YACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,SACF,CACF,CACA,0BACE,2DACE,WACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,gBACF,CACA,2DACE,YACF,CACA,2DACE,gBACF,CACA,4DACE,UACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,YACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,SACF,CACF,CACA,eACE,0CACF,CACA,qBAGE,gEAAiE,CAKjE,WAAY,CAPZ,UAAW,CAGX,aAAc,CAOd,WAAY,CAFZ,SAAU,CAPV,iBAAkB,CAKlB,OAAQ,CADR,KAAM,CAON,sDAAyD,CADzD,yBAA0B,CAF1B,SAAU,CALV,UASF,CACA,gCACE,sBACF,CACA,g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ACjB,gBACV,CACA,oCACE,uBACF,CACA,6DACE,mCAAqC,CACrC,UACF,CACA,8BACE,kCACF,CACA,6EAEE,uBACF,CACA,sCACE,SAAU,CACV,mBACF,CACA,+BAQE,qBAAsB,CAJtB,YAAa,CAMb,MAAO,CAJP,eAAgB,CAGhB,mBAAoB,CARpB,iBAAkB,CAClB,KAAM,CAGN,2BAA4B,CAE5B,6BAA8B,CAJ9B,WAQF,CACA,qDACE,uFAAwF,CACxF,yFACF,CACA,6BACE,uBACF,CACA,gGAGE,uBACF,CACA,4CACE,uBACF,CACA,4CACE,uBACF,CACA,yFAGE,WACF,CACA,2DAEE,eACF,CACA,qGAEE,SAAU,CACV,mBACF,CACA,uGAEE,SAAU,CACV,mBACF,CACA,2CAEE,gCAAiC,CADjC,aAAc,CAEd,mBACF,CACA,8BACE,oDAAqD,CACrD,wDACF,CACA,mBACE,mBACF,CACA,sBAEE,QAAS,CAET,MAAO,CAEP,SAAU,CACV,mBAAoB,CAJpB,iBAAkB,CAElB,KAAM,CAGN,iBAAkB,CAPlB,OAQF,CACA,gDACE,8CACE,gDACF,CACA,qHAEE,4DACF,CACA,gGACE,4CACF,CACA,oEAEE,8CAA+C,CAD/C,4CAEF,CACF,CACA,0CACE,eACF,CACA,eAQE,yBAA8B,CAH9B,WAAY,CAHZ,MAAO,CAOP,SAAU,CAFV,mBAAoB,CANpB,cAAe,CAEf,KAAM,CACN,UAAW,CAEX,WAIF,CACA,kBACE,4CAA+C,CAC/C,mBACF,CACA,mBACE,6CACF,CACA,iFACE,eAEE,kCAAmC,CAC3B,0BAA2B,CAFnC,sBAGF,CACF,CACA,iCACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,kCACE,GACE,SACF,CACA,GACE,SACF,CACF,CAEA,MACE,wBAAyB,CACzB,8BAA+B,CAC/B,kCACF,CACA,uBAEE,kCACF,CACA,KACE,qBAAsB,CACtB,yBAA0B,CAC1B,iCAAkC,CAClC,4BAA6B,CAC7B,4BAA6B,CAC7B,+CAAmD,CACnD,mCAAuC,CACvC,yBAA0B,CAC1B,iCACF,CACA,qBAEE,uBAAwB,CACxB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lB,UAKF,CACA,mCACE,WACF,CACA,6DAGE,mDACF,CACA,0DAGE,sFAAwF,CACxF,yFAA2F,CAC3F,uEAAwE,CACxE,oDACF,CACA,srBAYE,oCACF,CACA,maAME,2DACF,CACA,qbAME,oCAAyC,CACzC,qCACF,CACA,6DAGE,kDACF,CACA,6DAGE,8DAA+D,CAC/D,kDACF,CACA,sEAEE,gDAAiD,CACjD,4DACF,CACA,gEAGE,2BAA4B,CAC5B,8CACF,CACA,wGAGE,cACF,CACA,0CAEE,8GACF,CACA,4JAIE,6BACF,CACA,0PAME,uBACF,CACA,8tBAaE,sCAAuC,CADvC,uBAEF,CACA,uEAKE,eAAgB,CADhB,uBAA+B,CAD/B,uBAGF,CACA,uCAEE,iGACF,CAQA,qBACE,YACF,CACA,0BAKE,aAAc,CAJd,aAAc,CACd,eAAgB,CAEhB,iBAAkB,CADlB,sBAGF,CACA,8FAGE,kEACF,CACA,mCAGE,8FAAgG,CAKhG,QAAS,CAPT,UAAW,CAeX,aAAc,CANd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,QAAS,CAOT,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CANX,UASF,CAIA,0BACE,QACF,CACA,uEAEE,sBACF,CACA,qCACE,eACF,CAEA,MACE,kBACF,CACA,MACE,YACF,CACA,eACE,sBACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,yBACE,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACF,CACA,yBACE,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACF,CACA,yBACE,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACF,CACA,0BACE,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACF,CACA,0BACE,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8C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GX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,KAAM,CAON,sDAAyD,CADzD,sBAAwB,CADxB,UAAW,CANX,UASF,CACA,4CACE,wBACF,CACA,sCACE,qEAAsE,CACtE,sEAAuE,CAIvE,oBAAqB,CACrB,kBAAmB,CAFnB,YAAa,CAFb,WAAY,CAKZ,0BAA2B,CAJ3B,2CAA4C,CAK5C,eACF,CACA,6CACE,sBACF,CACA,iEAME,yBAA2B,CAI3B,qCAAsC,CAPtC,oCAAqC,CADrC,uBAAyB,CAUzB,aAAc,CAJd,wCAAyC,CACzC,4CAA6C,CAJ7C,WAAY,CAMZ,iBAAkB,CAPlB,iBAAkB,CAGlB,wBAA0B,CAN1B,SAYF,CACA,oDAGE,MAAO,CAFP,iBAAkB,CAClB,KAEF,CACA,uDACE,iBACF,CACA,uDACE,gBACF,CACF,CACA,4DAEE,YACF,CACA,yBACE,yBACE,kBACF,CACF,CACA,qDACE,mCACE,kBACF,CACF,CACA,0DAEE,YACF,CACA,yBACE,wBACE,kBACF,CACF,CACA,qDACE,kCACE,kBACF,CACF,CACA,4DAEE,YACF,CACA,yBACE,yBACE,kBACF,CACF,CACA,qDACE,mCACE,kBACF,CACF,CACA,0DAEE,YACF,CACA,0BACE,wBACE,kBACF,CACF,CACA,sDACE,kCACE,kBACF,CACF,CACA,4DAEE,YACF,CACA,0BACE,yBACE,kBACF,CACF,CACA,sDACE,mCACE,kBACF,CACF,CACA,8FAEE,gBACF,CACA,6CACE,eACF,CACA,wCACE,gBACF,CACA,4JAIE,gBACF,CAKA,iHAGE,WAAY,CADZ,UAEF,CACA,oDACE,gBACF,CACA,oCACE,gBACF,CACA,kCACE,iBACF,CACA,4FAEE,gBACF,CACA,wFAGE,WAAY,CACZ,gBAAiB,CAFjB,UAGF,CACA,4CACE,eACF,CACA,uCACE,gBACF,CACA,wJAIE,gBACF,CACA,yCAEE,WAAY,CACZ,gBAAiB,CAFjB,UAGF,CACA,sDACE,eACF,CACA,qEAGE,WAAY,CADZ,UAEF,CACA,mDACE,gBACF,CACA,m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CA,8CAGE,aACF,CACA,gBACE,yCAA0C,CAC1C,4CACF,CACA,gBACE,yCAA0C,CAC1C,4CAA6C,CAC7C,kBACF,CACA,cACE,uCAAwC,CACxC,0CAA2C,CAC3C,8CACF,CACA,gBAQE,oDAAqD,CAPrD,qBAAsB,CAEtB,YAAa,CACb,qBAAsB,CAGtB,4CAA6C,CAD7C,gDAAiD,CAIjD,8CAA+C,CAD/C,6FAA8F,CAJ9F,iBAAkB,CAHlB,qBASF,CACA,mBACE,aAAc,CAEd,WAAY,CADZ,cAAe,CAEf,UACF,CACA,0CAEE,aACF,CACA,qBACE,8CAA+C,CAE/C,iDAAkD,CADlD,6CAEF,CACA,qBACE,8CAA+C,CAE/C,iDAAkD,CADlD,6CAEF,CACA,cACE,eACF,CACA,cAGE,mBAAoB,CADpB,0BAA2B,CAD3B,gBAGF,CACA,8BAEE,gEAAkE,CADlE,uCAEF,CACA,+BACE,oBACF,CACA,kBACE,kBACF,CACA,kCAEE,8CAA+C,CAD/C,2CAEF,CACA,mCACE,sBACF,CACA,4CACE,SACF,CAUA,8KACE,YACF,CACA,4BACE,wCACF,CACA,yBACE,qCACF,CACA,0BACE,oBAAqB,CACrB,WAAY,CACZ,qBACF,CACA,8BAGE,sDAAuD,CAGvD,iBAAkB,CALlB,oBAAqB,CAGrB,kDAAmD,CAFnD,iBAAkB,CAGlB,qBAEF,CACA,sCACE,GACE,+BACF,CACA,GACE,uBACF,CACF,CACA,mCACE,GACE,gCACF,CACA,GACE,uBACF,CACF,CACA,0FAIE,eACF,CACA,wCAEE,iBACF,CACA,qBACE,cACF,CACA,qBACE,cACF,CACA,oBACE,qGACF,CACA,gCACE,6DACF,CACA,oCACE,6DAA8D,CAC9D,8DACF,CACA,+BACE,gEACF,CACA,mCACE,gEAAiE,CACjE,iEACF,CACA,0BACE,iBACF,CACA,0BACE,cACF,CACA,uBACE,iDACF,CACA,mHAGE,uDACF,CACA,uCAEE,2PAA4P,CAD5P,oEAEF,CACA,sCACE,wEACF,CACA,oDACE,oIACF,CACA,yEACE,gTACF,CACA,uGACE,2BACF,CACA,mBACE,mDACF,CACA,uGAGE,wDACF,CACA,mCAEE,wPAA4P,CAD5P,qEAEF,CACA,kCACE,yEACF,CACA,gDAIE,8SAAoT,CAHpT,oIACF,CAIA,8EACE,4BACF,CACA,2CACE,cACF,CACA,2HAIE,8CAA+C,CAC/C,iBAAkB,CAHlB,UAAW,CACX,iBAGF,CACA,6DAIE,QAAW,CAFX,WAAY,CACZ,QAAS,CAFT,UAIF,CACA,8DAIE,WAAY,CAFZ,UAAW,CACX,SAAU,CAFV,SAIF,CACA,mCAEE,UAAW,CADX,SAEF,CACA,uCACE,eACF,CACA,+CACE,mDACF,CACA,gDACE,wDACF,CACA,gDACE,uDACF,CACA,wCACE,GACE,WACF,CACA,IACE,UACF,CACA,IACE,UACF,CACF,CACA,sFAIE,eACF,CACA,sCAEE,iBACF,CACA,oBACE,cACF,CACA,yBACE,iBACF,CACA,yBACE,cACF,CACA,mBACE,8GACF,CACA,0CAEE,oDACF,CACA,sBACE,gDACF,CACA,gHAGE,gBACF,CACA,uNAGE,6BACF,CACA,uNAGE,0BACF,CACA,yOAGE,6BAA8B,CAC9B,0BACF,CACA,uDACE,eACF,CACA,kBACE,kDACF,CACA,oGAGE,iBACF,CACA,2MAGE,8BACF,CACA,2MAGE,2BACF,CACA,6NAGE,8BAA+B,CAC/B,2BACF,CACA,mDACE,wDACF,CACA,0CACE,cACF,CACA,kCAEE,UAAW,CADX,SAEF,CACA,sCACE,eACF,CACA,8CACE,kDACF,CACA,+CACE,uDACF,CACA,+CACE,sDACF,CACA,uCACE,GACE,uBACF,CACA,IACE,0BACF,CACA,IACE,uBACF,CACF,CAEA,MACE,wCAAyC,CACzC,kCAAmC,CACnC,4CAKF,CACA,KACE,2BAA4B,CAC5B,8BAA+B,CAC/B,6CAA8C,CAI9C,wCAAyC,CACzC,2CAA4C,CAC5C,yCAA0C,CAC1C,oCAAqC,CACrC,uCAAwC,CACxC,yCAA0C,CAC1C,sCAAuC,CACvC,8CAA+C,CAC/C,6CAA8C,CAC9C,uCAAwC,CACxC,iDAAkD,CAClD,0DAA8D,CAC9D,wCAAyC,CACz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B,CAH9B,UAKF,CACA,8BACE,iBACF,CAEA,oDAEE,WACF,CACA,mCACE,sBAAuB,CACvB,oCACF,CACA,sCAEE,kCAAmC,CAC3B,0BAA2B,CAFnC,uBAGF,CAEA,2CACE,kBACF,CACA,2BACE,2BACF,CACA,WACE,kBACF,CACA,wDAEE,2BACF,CAEA,iCAIE,uBAAwB,CAHxB,aAAc,CACd,oBAIF,CACA,oDACE,YACF,CACA,+CACE,6BACF,CACA,mDACE,4BACF,CACA,iDACE,4BACF,CACA,kDACE,qBACF,CACA,gEACE,sBACF,CACA,wDACE,UAAW,CACX,aAAc,CACd,UACF,CACA,+DACE,+BAAgC,CAChC,uBACF,CACA,6FACE,wDACF,CACA,0EACE,WAAY,CACZ,cAAe,CACf,yCACF,CACA,2FACE,uDACF,CACA,wEAGE,0CAA2C,CAD3C,aAAc,CADd,UAGF,CAGA,sLAcE,WAAY,CAHZ,MAAO,CAIP,mBAAoB,CALpB,iBAAkB,CAElB,KAAM,CACN,UAAW,CAGX,UACF,CACA,gCACE,0BACF,CACA,qCACE,qEACF,CACA,sCACE,oEACF,CACA,oCACE,mEACF,CACA,uCACE,qEACF,CACA,uBAaE,wEAA6B,CAD7B,iBAAkB,CAClB,gCAA6B,CAH7B,qBAAsB,CARtB,WAAY,CAEZ,QAAS,CAET,iBAAkB,CAClB,gBAAiB,CAJjB,iBAAkB,CAElB,OAAQ,CAIR,oBAAqB,CARrB,UAAW,CAOX,UAMF,CACA,+HAEE,kDACF,CACA,6BACE,6BACF,CACA,6BACE,6BACF,CACA,iCACE,GACE,sBACF,CACA,GACE,uBACF,CACF,CAEA,8BACE,kCAAmC,CACnC,uBACF,CACA,sDACE,UAAW,CAEX,MAAO,CAEP,mBAAoB,CAHpB,iBAAkB,CAElB,KAEF,CACA,wEACE,UAAW,CACX,gCACF,CACA,sEAEE,iCAAkC,CADlC,SAEF,CACA,MACE,6BAMF,CACA,wCAUE,kBAAmB,CAEnB,8DAAgE,CAJhE,cAAe,CACf,YAAa,CAJb,oCAAqC,CAMrC,sBAAuB,CALvB,sDAA2D,CAJ3D,iBAAkB,CAClB,2CA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CACA,sBACE,+BACF,CAEA,6CASE,0CAA2C,CAR3C,uFAAqG,CACrG,+EAA6F,CAK7F,6BAA8B,CAC9B,qBAAsB,CAHtB,0BAA2B,CAC3B,kBAAmB,CAHnB,2BAA4B,CAC5B,mBAMF,CACA,sBACE,0CACF,CACA,uBACE,2CACF,CAEA,gCACE,GACE,SACF,CACA,IACE,UACF,CACA,GACE,SACF,CACF,CACA,gCACE,GACE,6BAA8B,CAC9B,qBACF,CACA,GACE,+BAAgC,CAChC,uBACF,CACF,CACA,iCACE,GACE,kBACF,CACA,IACE,kBACF,CACA,IACE,qBACF,CACA,GACE,kBACF,CACF,CACA,MACE,qBAAsB,CACtB,sCACF,CACA,MACE,wBAAyB,CACzB,4CACF,CAEA,MACE,qCAAsC,CACtC,iCAAkC,CAClC,uCAAwC,CACxC,+BAAgC,CAChC,sCAAuC,CACvC,kCAAmC,CACnC,mCAAoC,CACpC,sCAAuC,CACvC,yCAA0C,CAC1C,sCAAuC,CACvC,sCAAuC,CACvC,kCAAmC,CACnC,mCAAoC,CACpC,0CAA2C,CAC3C,8CAA+C,CAC/C,mCAAoC,CACpC,0CAA2C,CAC3C,2CAA4C,CAC5C,mDAAoD,CACpD,yDAA0D,CAC1D,qCAAsC,CACtC,qCAAsC,CACtC,iDAAqD,CACrD,iDAAqD,CACrD,2CACF,CACA,uBAEE,wCAAyC,CACzC,wCAAyC,CACzC,sDAA0D,CAC1D,qCAAsC,CACtC,6DACF,CACA,cAGE,YAAa,CACb,qBAAsB,CAHtB,eAAgB,CAChB,UAGF,CACA,wGAGE,iBACF,CACA,0BACE,gDACF,CACA,iCACE,WACF,CACA,6CACE,wCACF,CACA,0BACE,gDACF,CACA,kCACE,yCACF,CACA,uGAGE,WACF,CACA,kIAGE,iBACF,CACA,sBAGE,eAAgB,CADhB,cAAe,CADf,0CAGF,CACA,yCACE,WACF,CACA,oCACE,eACF,CACA,mCACE,sDAAuD,CACvD,uDACF,CACA,mDAEE,aAAc,CADd,eAEF,CACA,+DACE,sDAAuD,CACvD,uDACF,CACA,8DACE,yDAA0D,CAC1D,0DACF,CA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CACA,sCAEE,sBAAuB,CADvB,eAEF,CACA,sCACE,wBAA6B,CAE7B,oBAAqB,CADrB,YAAa,CAEb,iBACF,CACA,gEAIE,6CAA+C,CAD/C,aAEF,CACA,gYASE,yCACF,CACA,kBAME,kBAAmB,CAFnB,oDAAqD,CAGrD,sDAAuD,CANvD,sCAAuC,CAIvC,YAAa,CAHb,kDAAmD,CACnD,0CAKF,CACA,wBACE,yCAA0C,CAE1C,sCAAuC,CADvC,qCAEF,CACA,oBAEE,6CAA+C,CAD/C,aAEF,CACA,yBACE,8EAAgF,CAChF,yDACF,CACA,uBAKE,kBAAmB,CAJnB,2CAA4C,CAG5C,YAAa,CAFb,WAAY,CACZ,eAGF,CACA,6BAQE,gBAAiB,CAEjB,kCAAmC,CAEnC,iCAAkC,CAClC,4BAA6B,CAM7B,4CAA6C,CAV7C,aAAc,CAMd,aAAc,CAdd,iCAAoC,CAiBpC,cAAe,CAff,iBAAkB,CADlB,eAAmB,CAenB,WAAY,CAZZ,qBAAsB,CADtB,aAAc,CAUd,iBAAkB,CAHlB,iCAAkC,CALlC,mBAAoB,CACpB,kBAAmB,CASnB,UAAW,CAIX,UACF,CACA,kCACE,cAAe,CACf,WACF,CACA,iCACE,cAAe,CACf,WACF,CACA,uBAEE,kBAAmB,CAEnB,mDAAoD,CAEpD,2DAA4D,CAC5D,cAAe,CANf,YAAa,CAIb,cAAe,CAFf,+CAKF,CACA,uFAME,gDAAiD,CACjD,iBAAkB,CAJlB,UAAW,CAEX,UAAW,CADX,SAIF,CACA,4BACE,YACF,CAEA,MACE,4BAA6B,CAC7B,2BACF,CACA,cACE,sBACF,CACA,eACE,uBACF,CACA,qBACE,6BACF,CACA,sBACE,8BACF,CACA,gBACE,wBACF,CACA,cACE,sBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,gBACE,wBACF,CACA,oBACE,4BACF,CACA,4BACE,oCACF,CACA,uBACE,+BACF,CACA,+BACE,uCACF,CACA,4BACE,oCACF,CACA,wBACE,gCACF,CACA,0BACE,kCACF,CACA,+BACE,uCACF,CACA,8BACE,sCACF,CACA,8BACE,sCACF,CACA,yBACE,iCACF,CACA,uBACE,+BACF,CACA,qBACE,6BACF,CACA,sBACE,8BACF,CACA,uBACE,+BACF,CACA,0BACE,kCACF,CACA,wBACE,gCACF,CACA,sBACE,8BACF,CACA,6BACE,qCACF,CACA,4BACE,oCACF,CACA,uBACE,+BACF,CACA,sBACE,8BACF,CACA,wBACE,gCACF,CACA,sBACE,8BACF,CACA,oBACE,4BACF,CACA,qBACE,6BACF,CACA,uBACE,+BACF,CACA,qBACE,6BACF,CACA,mBACE,2BACF,CACA,oBACE,4BACF,CACA,iBACE,yBACF,CACA,mBACE,2BACF,CACA,kBACE,0BACF,CACA,oBACE,4BACF,CACA,YACE,oBACF,CACA,aACE,qBACF,CACA,YACE,oBACF,CACA,uBACE,+BACF,CACA,uBACE,+BACF,CACA,oBACE,4BACF,CACA,YACE,mBACF,CACA,iBACE,wBACF,CAIA,yCAFE,yBAKF,CAHA,uBACE,wBAEF,CACA,gBACE,uBACF,CAIA,wCAFE,0BAKF,CAHA,qBACE,uBAEF,CACA,WACE,kBACF,CACA,gBACE,uBACF,CAIA,uCAFE,wBAKF,CAHA,sBACE,uBAEF,CACA,eACE,sBACF,CAIA,sCAFE,yBAKF,CAHA,oBACE,sBAEF,CACA,YACE,oBACF,CACA,WACE,oBACF,CACA,SACE,8CACF,CACA,cACE,sDACF,CACA,aACE,kDACF,CACA,kBACE,0DACF,CACA,gBACE,qDACF,CACA,qBACE,6DACF,CACA,cACE,mDACF,CACA,mBACE,2DACF,CACA,eACE,oDACF,CACA,oBACE,4DACF,CACA,kBAEE,qDAAuD,CADvD,kDAEF,CACA,uBAEE,6DAAiE,CADjE,0DAEF,CACA,oBACE,mDAAqD,CACrD,oDACF,CACA,yBACE,2DAA+D,CAC/D,4DACF,CACA,QACE,4CACF,CACA,aACE,oDACF,CACA,YACE,gDACF,CACA,iBACE,wDACF,CACA,eACE,mDACF,CACA,oBACE,2DACF,CACA,aACE,iDACF,CACA,kBACE,yDACF,CACA,cACE,kDACF,CACA,mBACE,0DACF,CACA,iBAEE,mDAAqD,CADrD,gDAEF,CACA,sBAEE,2DAA+D,CAD/D,wDAEF,CACA,mBACE,iDAAmD,CACnD,kDACF,CACA,wBACE,yDAA6D,CAC7D,0DACF,CACA,qBACE,gDACF,CACA,mBACE,yDACF,CACA,uBACE,yDACF","file":"../../presentationeditor/mobile/css/framework7.css","sourcesContent":["/**\n * Framework7 8.3.2\n * Full featured mobile HTML framework for building iOS & Android apps\n * https://framework7.io/\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 27, 2024\n */\n\n/*====================\n Core\n ==================== */\n:root {\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n --f7-safe-area-top: 0px;\n --f7-safe-area-bottom: 0px;\n --f7-safe-area-outer-left: 0px;\n --f7-safe-area-outer-right: 0px;\n --f7-device-pixel-ratio: 1;\n}\n@supports (left: env(safe-area-inset-left)) {\n :root {\n --f7-safe-area-top: env(safe-area-inset-top);\n --f7-safe-area-bottom: env(safe-area-inset-bottom);\n }\n :root .ios-left-edge,\n :root .ios-edges,\n :root .safe-area-left,\n :root .safe-areas,\n :root .popup,\n :root .sheet-modal,\n :root .panel-left {\n --f7-safe-area-left: env(safe-area-inset-left);\n --f7-safe-area-outer-left: env(safe-area-inset-left);\n }\n :root .ios-right-edge,\n :root .ios-edges,\n :root .safe-area-right,\n :root .safe-areas,\n :root .popup,\n :root .sheet-modal,\n :root .panel-right {\n --f7-safe-area-right: env(safe-area-inset-right);\n --f7-safe-area-outer-right: env(safe-area-inset-right);\n }\n :root .no-safe-areas,\n :root .no-safe-area-left,\n :root .no-ios-edges,\n :root .no-ios-left-edge {\n --f7-safe-area-left: 0px;\n --f7-safe-area-outer-left: 0px;\n }\n :root .no-safe-areas,\n :root .no-safe-area-right,\n :root .no-ios-edges,\n :root .no-ios-right-edge {\n --f7-safe-area-right: 0px;\n --f7-safe-area-outer-right: 0px;\n }\n}\n@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 2dppx) {\n :root {\n --f7-device-pixel-ratio: 2;\n }\n}\n@media (-webkit-min-device-pixel-ratio: 3), (min-resolution: 3dppx) {\n :root {\n --f7-device-pixel-ratio: 3;\n }\n}\n/*====================\n Fonts & Bars\n ==================== */\n:root {\n --f7-font-size: 14px;\n --f7-bars-translucent-opacity: 0.8;\n --f7-bars-translucent-blur: 20px;\n}\n.ios {\n --f7-font-family: -apple-system, SF Pro Text, SF UI Text, system-ui, Helvetica Neue, Helvetica, Arial, sans-serif;\n --f7-line-height: 1.4;\n /*\n --f7-bars-link-color: var(--f7-theme-color);\n */\n --f7-bars-text-color: #000;\n --f7-text-color: #000;\n --f7-bars-bg-color: #f7f7f8;\n --f7-bars-bg-color-rgb: 247, 247, 248;\n --f7-bars-border-color: rgba(0, 0, 0, 0.25);\n}\n.ios .dark,\n.ios.dark {\n --f7-bars-text-color: #fff;\n --f7-text-color: #fff;\n --f7-bars-bg-color: #121212;\n --f7-bars-bg-color-rgb: 22, 22, 22;\n --f7-bars-border-color: rgba(255, 255, 255, 0.16);\n}\n.md {\n --f7-font-family: Roboto, system-ui, Noto, Helvetica, Arial, sans-serif;\n --f7-line-height: 1.5;\n --f7-bars-border-color: transparent;\n --f7-text-color: #212121;\n}\n.md .dark,\n.md.dark {\n --f7-text-color: rgba(255, 255, 255, 0.87);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-bars-link-color: var(--f7-md-on-surface);\n --f7-bars-bg-color: var(--f7-md-surface-2);\n --f7-bars-bg-color-rgb: var(--f7-md-surface-2-rgb);\n}\n/*====================\n Color Themes\n ==================== */\n.text-color-primary {\n --f7-theme-color-text-color: var(--f7-theme-color);\n}\n.bg-color-primary {\n --f7-theme-color-bg-color: var(--f7-theme-color);\n}\n.border-color-primary {\n --f7-theme-color-border-color: var(--f7-theme-color);\n}\n.ripple-color-primary {\n --f7-theme-color-ripple-color: rgba(var(--f7-theme-color-rgb), 0.3);\n}\n@font-face {\n font-family: 'framework7-core-icons';\n src: url('data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAA0sABAAAAAAGLwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABbAAAABoAAAAcmrEdT0dERUYAAAGIAAAAIwAAACQAewBXR1BPUwAAAawAAAAuAAAANuAY7+xHU1VCAAAB3AAAAZ4AAAP6ALYH7k9TLzIAAAN8AAAASgAAAGBRKF+WY21hcAAAA8gAAACJAAABYt6F0cBjdnQgAAAEVAAAAAQAAAAEABEBRGdhc3AAAARYAAAACAAAAAj//wADZ2x5ZgAABGAAAATOAAAKDJkUuoRoZWFkAAAJMAAAADAAAAA2IlX292hoZWEAAAlgAAAAIAAAACQHgQM7aG10eAAACYAAAABgAAABHCxp//lsb2NhAAAJ4AAAAJAAAACQQrpFRm1heHAAAApwAAAAHwAAACAAjQBPbmFtZQAACpAAAAFVAAAC3EU7ispwb3N0AAAL6AAAAUIAAAJaVPgZiHicY2BgYGQAgts30q6A6Ps50bYwGgBRFwa1AAB4nGNgZGBg4AFiGSBmAkJmBk0GRgYtBjcgmwUsxgAADWAA0wB4nGNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB4nHVTW07CQBQ9Q2vAJwhVGwW0UJEgvt+Kb+XDT3dAYjQmxA9DXIDLMC7CLz9dg3EJfrkLPDMF+pg0TTPTe84998ydWwgAIyiiDtFudZ6QgskIul1IRLQfH1qMwfsiZqo1BWF8IAkLL4lO4scwDddowGC8iia2kYbDp4gKd5Ncy3yKyPMrjxyuMBHAHdiYxgwZHrqK8QA6xxpTAyyNBdzgGW/4wq8wRUU0xb14Fe/iU3yLP9a2qGRhUeUXIuoZuCrucHdGtTDTrxTk7Wq8nHJWiPCOeM4wz8V8hLOscYLubMZKWCcvzpfHuNAY0Q6ucI3TkPh+D89iVt3OUsTnBm8grsI5xrRcz9dmD9GrNjSk38M1jGpq0uEBZ1LvppyvGu//kh4tpV7mm1Ycl6zcwMsxd3EMqX+C4RAuY3K6t3hKOa02fdt0lVF7z0GWfKltDarIjFP2qkx92UF/an18h5UyVJeRfnyI/ajSwy3ucMh8S+VmeeLwPdTYhSDmZdeVdz8qvV+zMzLHn5I9/p39iHe6JHOy3BXYSQelf3GmQG8AAHicY2Bh/MI4gYGVgYHRhzGNgYHBHUp/ZZBkaGFgYGJgZWaAAUYGJBCQ5prC0MCgwFDFeOD/AQY9ps+MxTA1jAfAShQYxABDtQxkAAB4nGNgYGBmgGAZBkYGEIgB8hjBfBYGByDNw8DBwARkKzDoMlgyxDNU/f8PFAXxDIC8xP///z/+f/3/1f8b/q+HmgAHjGwMcCFGJiDBxICmAGI1HLAwMLCysXNwcnHz8PIxEAP4GQQEhYRFRMXEJSSlpGVk5eQVFJWUVVTV1DU0iTKA1gAAxH4T6AAAAAARAUQAAAAB//8AAnic7VXPTxtHFJ63xh6DY++uf+yq0FJs1l6ktk7x2l4aDEaFEMkCUlXQUi5A6nAprYoqu1IVbG6gKNRVBUJBuUVqpeYSfGirHID2QhrVrWQ1UlXlRA+VWnri0EYK677ZtRMg/0EVaWZn3puZN2++9723hCMiIeQ6TBAboSS6BeRsqkybyN+xLYf9Qaps43BKtmxMbWfqMnXAo1QZmF4TNVHVxE5x5eO5OZgwbomgoTXAtmt2nIndbP5M90z3v9dxx3Q21L7GmWrShL0Z3oApzDCe+EiAEG/I4ZdiyXgkJvkdoUgcdJXK6lfjqdR46sZ8JjOfgUTbQltxAQZS4319429lmNJ4+PyHbe8uEOv+2neg4QVeQsIhnmNW0qBG4snYiyCBCgC/uzok186OSwq69vkyx+27pA7X9g7T7vOWv7U/YBe+wBrwHFqRqZpQHZ0hZkMK+KkcYh6ipzCwFFmi0fT52dmrl7ro1zNDQzODq0uRYoB2zV6dnT3fH6WDM4ODM6ZfJEK28a12QnwUTerb+byyuQlJc2j4fgibsEqceGsgyDbJFDaNuyWlUlFKv8Wtsb6XuOF7yDJ7Osig6iXgFaNSUibqI4HaQ8TiJcQCa5meTAO67+dBZtCehYgd8OX45u1t9v59/mew7TNMULaQYHf4yZ7ls47OqPreTaVYVL7BbyF8cj2Brsq0vhwuFBUTR2O1aY47JC4i44swlFTWZTSjch0KJ3iVjiavwHEDe8m9Rus1fjKONjbABjGwbWz8uac3lvRHDx6rjSO27WnMGGBYe3XYZDhpn+2yAXoQwAZmGeiBJBFQsMAwkTC5AW7qF5zfOv3OUeqRaC9EnYIfZRQlD+2tn5+H1yHCzpOTp/UkxD10hUrYPZIzl3NCxMMEpvPQXI6aeJApqOB59k8hfRAM2BPBAFQMDSqHmnZd0zBm/5J3yC/wCvEQghGTJR48gLfoSTkz0yIILe/bfY5zbg9/5trnfIuL/9IJdIA/4/ZY/k3DMNpnHEP2UPWmGRCImAOxuE0kGMKYuVm+YdCOMdtR5/XBpG9SeVUfG/tgbGuyv3+yf+lt32Q7SmN697k005zEgjELk8ukFWUJdwIIybPRgCGfR91JP5ENyAnLz+mbSqGgsBpR+wtuwTqiJJIXsCrUq4GP+dfJSkQaGNtUk5NXyouL5Sv3L2SzF4az2eHR9lFsI+0jI+2wvnh7cfG2cXT52uXsp9kfrCWzPcmhOfgI+UngsT1Zh7lSSWk0uHhMwPjUjB3ugNslrYTYRRM3Ue9nSUXBoYZUiCIXYjL0KPHwj964z+s17gVaW33GPS/4vAnve9xBazjceuSvMDnOVjkfJL0a7qz71E7uwCWGa9Li15PEvXOSUlHBuYJ8XXEKksUwYvKnB5yQYud9SB6MrskeiXH0H9G17HC10Itu3iHa05+4oNsl3G+m07zbzjlGdsVTdYpVIBWrk5LLwRQO+XydQ7UprsJFSDPjUFxIajFJwIt8xzK8urZera6vrRWSBWxF9n0ZuqpV49cq3CjqhYJeNL+nc9i8M5gIqhWWu8Zd6CnBKpvGzRy2Mf84Df1jOYRxExNWFrHOaUcVqyNq8SWzncZUsKjKctf6MSBJlylddlr0hDefwvQ/M6nleQAAeJxjYGRgYADis2XfmeP5bb4ycDMxgMD9nGhbGP3/x79eljSmz0AuBwNYGgBQ5wydeJxjYGRgYPr8r5dBjyXt/w8GBpY0BqAICnAHAJFTBcN4nGPYzSDIAAKrGAY1YAwAYh0gPgDk7APSs4D4EEjs/0+G40AxIGZJg4pbALETEJ8Fip/9/4PRDch2gYqB2KuBGKiW6c3//wy7gWyG/z9AZjKdhehnMgbqA4oDAJFZGHgAAAAqACoAKgA0AD4ASABSAFwAZgBwAHoAhACOAJgAogCsALYAwADKANQA3gDoAPIA/AEGARABGgEkAS4BOAFCAUwBVgFgAWoBdAF+AYgBkgGcAaYBsgHcAf4CKAI6AlACYgKCApICogLUAuoDCgMqAzwDWgNsA5ADrgO+A/IEDAQ8BFwEfASOBLYEzATmBQZ4nGNgZGBgcGeQY2BhAAEmIGZkAIk5MOiBBAAN5gDdAHicrZC9asMwFIWP8gftUDo00FFjEmIjawlkTcmSpXTwbhw3EYmtoARC6ON06Na9Q5+iY6FP0IfosaJChwwdYri6n6/Olc4VgCu8QuD49fAQWKCLl8ANXOIjcBNa3AVuoSueA7dxLT4Dd9Bt3FIpWhf8u/ddNQsM8BS4gRu8B25ijq/ALQzEPnAbUrwF7rD+jQksNjjAwWCBJXaQ9Jyjz6yhGBpDcoo1Mp5qUDIcKzOqM1JdL3mG8buY2M3BmcVyJ3t5X2ql9VCm62xuSuPkbJm5dVZuzJzKRzbXrQX2NOGwwggRr665IBnPFbaUuqws9tatRlFuXRGZ3FYsn9T+FUx9ceez43yFnyrmXBJjxv8tHPUJuyOuiuvv62Bqq93UukUhdazkWJ40y3qio0RF9YucY/aUOsd943WSZhSNxT7X4yEt3NbYSiqVxEopeYZLfwCb64ZqAAAAeJxtUIlOwkAUnAGVW4rch36M8b7v2zSlLdIIXbJdxL/HhbaBJm6yyb6ZebPzHlJYnvkcxH/nWF8ihTQMVFFDHQ000UIbHXTRwz4OcIgjrTvBKc5wjgtc4grXuMEt7nCPBzziCc94wSve8I4PfDLFNDe4yS1mmGWOeRZYZInbLNNghTusssY6G2yyxTY77LLHXe7lA9eS9tD0RFCxh+6PFL4pva+hWiC5iBw75ZgbuQOl65IlpZjFVUGz9ndf/Oq3kVBqk1LCtrhON3yhvIFnW8rTiD0SgbvoKIfmfaGUGGvLnLQcTyyYatztiJlvWlMppJUJhFRRxDBEiOdj7XRSiuYIicqKiJDium3ZcUeuck0ppr6z+D2q9dATJc0w23qW5aArozCDFhjJferVJJy1Yjs0i/nschKN15Kdofcf+xC0ZgAA') format('woff');\n font-weight: 400;\n font-style: normal;\n}\nhtml {\n overscroll-behavior: none;\n}\nhtml,\nbody,\n.framework7-root {\n position: relative;\n height: 100%;\n width: 100%;\n overflow-x: hidden;\n}\nbody {\n margin: 0;\n padding: 0;\n width: 100%;\n background: #fff;\n overflow: hidden;\n overflow-y: scroll;\n -webkit-text-size-adjust: 100%;\n -webkit-font-smoothing: antialiased;\n font-family: var(--f7-font-family);\n font-size: var(--f7-font-size);\n line-height: var(--f7-line-height);\n color: var(--f7-text-color);\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\nbody::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\nbody::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\nbody::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.dark body,\nbody.dark {\n background: #000;\n}\n.dark {\n color: var(--f7-text-color);\n}\n.framework7-root {\n overflow: hidden;\n box-sizing: border-box;\n}\n.framework7-initializing *,\n.framework7-initializing *:before,\n.framework7-initializing *:after {\n transition-duration: 0ms !important;\n}\n.device-ios,\n.device-android {\n cursor: pointer;\n}\n.device-ios {\n touch-action: manipulation;\n}\n@media (width: 1024px) and (height: 691px) and (orientation: landscape) {\n html,\n body,\n .framework7-root {\n height: 671px;\n }\n}\n@media (width: 1024px) and (height: 692px) and (orientation: landscape) {\n html,\n body,\n .framework7-root {\n height: 672px;\n }\n}\n* {\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n -webkit-touch-callout: none;\n}\na,\ninput,\ntextarea,\nselect {\n outline: 0;\n}\na {\n cursor: pointer;\n text-decoration: none;\n color: var(--f7-theme-color);\n}\n.link,\n.item-link {\n cursor: pointer;\n}\np {\n margin: 1em 0;\n}\n.disabled {\n opacity: 0.55 !important;\n pointer-events: none !important;\n}\nhtml.device-full-viewport,\nhtml.device-full-viewport body {\n height: 100vh;\n}\n.ios .md-only,\n.ios .if-md,\n.ios .if-not-ios,\n.ios .not-ios {\n display: none !important;\n}\n@media (width: 1024px) and (height: 691px) and (orientation: landscape) {\n .ios,\n .ios body,\n .ios .framework7-root {\n height: 671px;\n }\n}\n@media (width: 1024px) and (height: 692px) and (orientation: landscape) {\n .ios,\n .ios body,\n .ios .framework7-root {\n height: 672px;\n }\n}\n.md .ios-only,\n.md .if-ios,\n.md .if-not-md,\n.md .not-md {\n display: none !important;\n}\n/* === Statusbar === */\n/* === Views === */\n.views,\n.view {\n position: relative;\n height: 100%;\n z-index: 5000;\n overflow: hidden;\n box-sizing: border-box;\n}\n.framework7-root > .view,\n.framework7-root > .views {\n height: 100%;\n}\n.view-resize-handler {\n width: 6px;\n height: 100%;\n position: absolute;\n left: var(--f7-page-master-width);\n margin-left: -3px;\n top: 0;\n cursor: col-resize;\n z-index: 1000;\n display: none;\n}\n.view-master-detail .view-resize-handler {\n display: block;\n}\n/* === Pages === */\n:root {\n --f7-page-master-width: 320px;\n --f7-page-master-border-color: rgba(0, 0, 0, 0.1);\n --f7-page-master-border-width: 1px;\n --f7-page-swipeback-transition-duration: 300ms;\n --f7-page-parallax-transition-duration: 500ms;\n --f7-page-cover-transition-duration: 450ms;\n --f7-page-dive-transition-duration: 500ms;\n --f7-page-fade-transition-duration: 500ms;\n --f7-page-flip-transition-duration: 700ms;\n --f7-page-push-transition-duration: 500ms;\n /*\n --f7-page-content-extra-padding-top: 0px;\n --f7-page-content-extra-padding-bottom: 0px;\n */\n --f7-page-title-line-height: 1.2;\n --f7-page-title-text-color: inherit;\n --f7-page-title-padding-left: 16px;\n --f7-page-title-padding-right: 16px;\n}\n.ios {\n --f7-page-transition-duration: 400ms;\n --f7-page-title-font-size: 34px;\n --f7-page-title-font-weight: 700;\n --f7-page-title-letter-spacing: -0.03em;\n --f7-page-title-padding-vertical: 6px;\n --f7-page-bg-color: #efeff4;\n}\n.ios .dark,\n.ios.dark {\n --f7-page-bg-color: #000;\n}\n.md {\n --f7-page-transition-duration: 400ms;\n --f7-page-title-font-size: 34px;\n --f7-page-title-font-weight: 500;\n --f7-page-title-letter-spacing: 0;\n --f7-page-title-padding-vertical: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-page-bg-color: var(--f7-md-surface);\n}\n.dark {\n --f7-page-master-border-color: rgba(255, 255, 255, 0.2);\n}\n.pages {\n position: relative;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n.page {\n box-sizing: border-box;\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n transform: none;\n background-color: var(--f7-page-bg-color);\n z-index: 1;\n}\n.page-with-navbar-large-collapsed {\n --f7-navbar-large-collapse-progress: 1;\n}\n.page-previous {\n pointer-events: none;\n}\n.page-content {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n box-sizing: border-box;\n height: 100%;\n position: relative;\n z-index: 1;\n padding-top: calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-toolbar-top-offset, 0px) + var(--f7-page-subnavbar-offset, 0px) + var(--f7-page-searchbar-offset, 0px) + var(--f7-page-content-extra-padding-top, 0px));\n padding-bottom: calc(var(--f7-page-toolbar-bottom-offset, 0px) + var(--f7-safe-area-bottom) + var(--f7-page-content-extra-padding-bottom, 0px));\n}\n.page-transitioning,\n.page-transitioning .page-shadow-effect,\n.page-transitioning .page-opacity-effect {\n transition-duration: var(--f7-page-transition-duration);\n}\n.page-transitioning-swipeback,\n.page-transitioning-swipeback .page-shadow-effect,\n.page-transitioning-swipeback .page-opacity-effect {\n transition-duration: var(--f7-page-swipeback-transition-duration);\n}\n.router-transition-forward .page-next,\n.router-transition-backward .page-next,\n.router-transition-forward .page-current,\n.router-transition-backward .page-current {\n pointer-events: none;\n}\n.page-shadow-effect {\n position: absolute;\n top: 0;\n width: 16px;\n bottom: 0;\n z-index: -1;\n content: '';\n opacity: 0;\n right: 100%;\n background: linear-gradient(to right, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);\n}\n.page-opacity-effect {\n position: absolute;\n left: 0;\n top: 0;\n background: rgba(0, 0, 0, 0.1);\n width: 100%;\n bottom: 0;\n content: '';\n opacity: 0;\n z-index: 10000;\n}\n.ios .page-previous {\n transform: translate3d(-20%, 0, 0);\n}\n.ios .page-next {\n transform: translate3d(100%, 0, 0);\n}\n.ios .page-previous .page-opacity-effect {\n opacity: 1;\n}\n.ios .page-previous:after {\n opacity: 1;\n}\n.ios .page-current .page-shadow-effect {\n opacity: 1;\n}\n.ios .router-transition-forward .page-next {\n animation: ios-page-next-to-current var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .page-next:before {\n position: absolute;\n top: 0;\n width: 16px;\n bottom: 0;\n z-index: -1;\n content: '';\n opacity: 0;\n right: 100%;\n background: linear-gradient(to right, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);\n animation: ios-page-element-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .page-current {\n animation: ios-page-current-to-previous var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .page-current:after {\n position: absolute;\n left: 0;\n top: 0;\n background: rgba(0, 0, 0, 0.1);\n width: 100%;\n bottom: 0;\n content: '';\n opacity: 0;\n z-index: 10000;\n animation: ios-page-element-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-previous {\n animation: ios-page-previous-to-current var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-previous:after {\n position: absolute;\n left: 0;\n top: 0;\n background: rgba(0, 0, 0, 0.1);\n width: 100%;\n bottom: 0;\n content: '';\n opacity: 0;\n z-index: 10000;\n animation: ios-page-element-fade-out var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-current {\n animation: ios-page-current-to-next var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-current:before {\n position: absolute;\n top: 0;\n width: 16px;\n bottom: 0;\n z-index: -1;\n content: '';\n opacity: 0;\n right: 100%;\n background: linear-gradient(to right, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);\n animation: ios-page-element-fade-out var(--f7-page-transition-duration) forwards;\n}\n@keyframes ios-page-next-to-current {\n from {\n transform: translate3d(100%, 0, 0);\n }\n to {\n transform: translate3d(0%, 0, 0);\n }\n}\n@keyframes ios-page-previous-to-current {\n from {\n transform: translate3d(-20%, 0, 0);\n }\n to {\n transform: translate3d(0%, 0, 0);\n }\n}\n@keyframes ios-page-current-to-previous {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(-20%, 0, 0);\n }\n}\n@keyframes ios-page-current-to-next {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(100%, 0, 0);\n }\n}\n@keyframes ios-page-element-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes ios-page-element-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n.md .page-previous {\n transform: translate3d(0, -20px, 0);\n}\n.md .page-next {\n pointer-events: none;\n transform: translate3d(0, 128px, 0);\n opacity: 0;\n}\n.md .page-next.page-next-on-right {\n transform: translate3d(100%, 0, 0);\n opacity: 1;\n}\n.md .router-transition-forward .page-next {\n opacity: 1;\n animation: md-page-next-to-current var(--f7-page-transition-duration) forwards cubic-bezier(0, 0.8, 0.3, 1);\n}\n.md .router-transition-forward .page-current {\n animation: md-page-current-to-previous var(--f7-page-transition-duration) forwards cubic-bezier(0, 0.8, 0.3, 1);\n}\n.md .router-transition-backward .page-current {\n animation: md-page-current-to-next calc(var(--f7-page-transition-duration) / 4) forwards cubic-bezier(0.8, 0, 1, 0.3), md-page-current-to-next-opacity 0ms calc(var(--f7-page-transition-duration) / 4) forwards;\n}\n.md .router-transition-backward .page-previous {\n animation: md-page-previous-to-current var(--f7-page-transition-duration) forwards;\n}\n@keyframes md-page-next-to-current {\n from {\n transform: translate3d(0, 128px, 0);\n }\n to {\n transform: translate3d(0, 0px, 0);\n }\n}\n@keyframes md-page-current-to-next {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(0, 128px, 0);\n }\n}\n@keyframes md-page-current-to-next-opacity {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes md-page-current-to-previous {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(0, -20px, 0);\n }\n}\n@keyframes md-page-previous-to-current {\n from {\n transform: translate3d(0, -20px, 0);\n }\n to {\n transform: translate3d(0, 0px, 0);\n }\n}\n.view:not(.view-master-detail) .page-master-stacked {\n display: none;\n}\n.view:not(.view-master-detail) .navbar-master-stacked {\n display: none;\n}\n.view-master-detail .page-master,\n.view-master-detail .navbar-master {\n width: var(--f7-page-master-width);\n --f7-safe-area-right: 0px;\n --f7-safe-area-outer-right: 0px;\n border-right: var(--f7-page-master-border-width) solid var(--f7-page-master-border-color);\n}\n.view-master-detail .page-master-detail,\n.view-master-detail .navbar-master-detail {\n width: calc(100% - var(--f7-page-master-width));\n --f7-safe-area-left: 0px;\n --f7-safe-area-outer-left: 0px;\n left: var(--f7-page-master-width);\n}\n.view-master-detail .page-master-detail > .navbar-master-detail {\n left: 0;\n right: 0;\n width: 100%;\n}\n.view-master-detail .page-master {\n z-index: 2;\n transform: none;\n pointer-events: auto;\n}\n.view-master-detail .page-master:before,\n.view-master-detail .page-master:after {\n display: none;\n}\n.view-master-detail.router-transition .page-master {\n animation: none;\n}\n.md .router-transition-custom .page-previous,\n.ios .router-transition-custom .page-previous,\n.md .router-transition-custom .page-next,\n.ios .router-transition-custom .page-next {\n opacity: 1;\n transform: none;\n}\n.md .router-transition-custom.view-master-detail .page-master,\n.ios .router-transition-custom.view-master-detail .page-master {\n animation: none;\n}\n.page-title {\n position: relative;\n z-index: 10;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--f7-page-title-text-color);\n letter-spacing: var(--f7-page-title-letter-spacing);\n font-size: var(--f7-page-title-font-size);\n font-weight: var(--f7-page-title-font-weight);\n line-height: var(--f7-page-title-line-height);\n padding-left: calc(var(--f7-page-title-padding-left) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-page-title-padding-right) + var(--f7-safe-area-right));\n padding-top: var(--f7-page-title-padding-vertical);\n padding-bottom: var(--f7-page-title-padding-vertical);\n box-sizing: border-box;\n overflow: hidden;\n width: 100%;\n}\n.router-transition-f7-circle-forward:after,\n.router-transition-f7-circle-backward:after {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n width: 100vmax;\n height: 100vmax;\n margin-left: -50vmax;\n margin-top: -50vmax;\n background: var(--f7-page-bg-color);\n z-index: 100;\n}\n.router-transition-f7-circle-forward .page,\n.router-transition-f7-circle-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-circle-forward:after {\n transform: scale(0);\n border-radius: 50%;\n animation: f7-circle-circle-in 400ms forwards;\n}\n.ios .router-transition-f7-circle-forward .page-next,\n.md .router-transition-f7-circle-forward .page-next {\n opacity: 0;\n transform: scale(0.9);\n animation: f7-circle-next-to-current 300ms forwards;\n animation-delay: 300ms;\n z-index: 150;\n}\n.router-transition-f7-circle-backward:after {\n animation: f7-circle-circle-out 300ms forwards;\n animation-delay: 350ms;\n}\n.ios .router-transition-f7-circle-backward .page-current,\n.md .router-transition-f7-circle-backward .page-current {\n animation: f7-circle-current-to-next 700ms forwards;\n z-index: 150;\n}\n@keyframes f7-circle-circle-in {\n from {\n transform: scale(0);\n border-radius: 50%;\n }\n 50% {\n border-radius: 50%;\n }\n to {\n transform: scale(1);\n border-radius: 0%;\n }\n}\n@keyframes f7-circle-circle-out {\n from {\n transform: scale(1);\n border-radius: 0%;\n }\n 50% {\n border-radius: 50%;\n }\n to {\n transform: scale(0);\n border-radius: 50%;\n }\n}\n@keyframes f7-circle-next-to-current {\n from {\n transform: scale(0.9);\n opacity: 0;\n }\n 40% {\n transform: scale(1.035);\n opacity: 1;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n@keyframes f7-circle-current-to-next {\n from {\n transform: scale(1);\n opacity: 1;\n }\n 34% {\n transform: scale(1.035);\n opacity: 1;\n }\n 57% {\n transform: scale(0.9);\n opacity: 0;\n }\n to {\n transform: scale(0.9);\n opacity: 0;\n }\n}\n.router-transition-f7-cover-v-forward,\n.router-transition-f7-cover-v-backward {\n background: #000;\n perspective: 1200px;\n}\n.router-transition-f7-cover-v-forward .page,\n.router-transition-f7-cover-v-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-cover-v-forward .page-next {\n animation: f7-cover-v-next-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-v-forward .page-current {\n animation: f7-cover-v-current-to-prev var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-v-backward .page-current {\n animation: f7-cover-v-current-to-next var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-v-backward .page-previous {\n animation: f7-cover-v-prev-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n@keyframes f7-cover-v-next-to-current {\n from {\n transform: translateY(100%);\n }\n to {\n transform: translateY(0%);\n }\n}\n@keyframes f7-cover-v-current-to-next {\n from {\n transform: translateY(0%);\n }\n to {\n transform: translateY(100%);\n }\n}\n@keyframes f7-cover-v-current-to-prev {\n from {\n transform: translateZ(0);\n opacity: 1;\n }\n to {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n}\n@keyframes f7-cover-v-prev-to-current {\n from {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n to {\n transform: translateZ(0);\n opacity: 1;\n }\n}\n.router-transition-f7-cover-forward,\n.router-transition-f7-cover-backward {\n background: #000;\n perspective: 1200px;\n}\n.router-transition-f7-cover-forward .page,\n.router-transition-f7-cover-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-cover-forward .page-next {\n animation: f7-cover-next-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-forward .page-current {\n animation: f7-cover-current-to-prev var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-backward .page-current {\n animation: f7-cover-current-to-next var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-backward .page-previous {\n animation: f7-cover-prev-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n@keyframes f7-cover-next-to-current {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n@keyframes f7-cover-current-to-next {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(100%);\n }\n}\n@keyframes f7-cover-current-to-prev {\n from {\n transform: translateZ(0);\n opacity: 1;\n }\n to {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n}\n@keyframes f7-cover-prev-to-current {\n from {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n to {\n transform: translateZ(0);\n opacity: 1;\n }\n}\n.router-transition-f7-dive-forward,\n.router-transition-f7-dive-backward {\n background: var(--f7-page-bg-color);\n perspective: 1200px;\n}\n.router-transition-f7-dive-forward .page,\n.router-transition-f7-dive-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-dive-forward .page-next {\n animation: f7-dive-next-to-current var(--f7-page-dive-transition-duration) forwards;\n}\n.router-transition-f7-dive-forward .page-current {\n animation: f7-dive-current-to-prev var(--f7-page-dive-transition-duration) forwards;\n}\n.router-transition-f7-dive-backward .page-current {\n animation: f7-dive-current-to-next var(--f7-page-dive-transition-duration) forwards;\n}\n.router-transition-f7-dive-backward .page-previous {\n animation: f7-dive-prev-to-current var(--f7-page-dive-transition-duration) forwards;\n}\n@keyframes f7-dive-next-to-current {\n from {\n opacity: 0;\n transform: translateZ(-150px);\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 1;\n transform: translateZ(0px);\n }\n}\n@keyframes f7-dive-current-to-next {\n from {\n opacity: 1;\n transform: translateZ(0px);\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 0;\n transform: translateZ(-150px);\n }\n}\n@keyframes f7-dive-current-to-prev {\n from {\n transform: translateZ(0px);\n opacity: 1;\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 0;\n transform: translateZ(150px);\n }\n}\n@keyframes f7-dive-prev-to-current {\n from {\n opacity: 0;\n transform: translateZ(150px);\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 1;\n transform: translateZ(0px);\n }\n}\n.router-transition-f7-fade-forward,\n.router-transition-f7-fade-backward {\n background: var(--f7-page-bg-color);\n}\n.router-transition-f7-fade-forward .page,\n.router-transition-f7-fade-backward .page {\n pointer-events: none;\n}\n.ios .router-transition-f7-fade-forward .page-next,\n.md .router-transition-f7-fade-forward .page-next {\n opacity: 0;\n animation: f7-fade-in var(--f7-page-fade-transition-duration) forwards;\n}\n.ios .router-transition-f7-fade-forward .page-current,\n.md .router-transition-f7-fade-forward .page-current {\n animation: f7-fade-out var(--f7-page-fade-transition-duration) forwards;\n}\n.ios .router-transition-f7-fade-backward .page-current,\n.md .router-transition-f7-fade-backward .page-current {\n animation: f7-fade-out var(--f7-page-fade-transition-duration) forwards;\n}\n.ios .router-transition-f7-fade-backward .page-previous,\n.md .router-transition-f7-fade-backward .page-previous {\n animation: f7-fade-in var(--f7-page-fade-transition-duration) forwards;\n}\n@keyframes f7-fade-in {\n from {\n opacity: 0;\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes f7-fade-out {\n from {\n opacity: 1;\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 0;\n }\n}\n.router-transition-f7-flip-forward,\n.router-transition-f7-flip-backward {\n background: #000;\n perspective: 1200px;\n}\n.router-transition-f7-flip-forward .page,\n.router-transition-f7-flip-backward .page {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n overflow: hidden;\n pointer-events: none;\n}\n.router-transition-f7-flip-forward .page-next {\n transform-style: preserve-3d;\n animation: f7-flip-next-to-current var(--f7-page-flip-transition-duration) forwards;\n}\n.router-transition-f7-flip-forward .page-current {\n transform-style: preserve-3d;\n animation: f7-flip-current-to-prev var(--f7-page-flip-transition-duration) forwards;\n}\n.router-transition-f7-flip-backward .page-current {\n transform-style: preserve-3d;\n animation: f7-flip-current-to-next var(--f7-page-flip-transition-duration) forwards;\n}\n.router-transition-f7-flip-backward .page-previous {\n transform-style: preserve-3d;\n animation: f7-flip-prev-to-current var(--f7-page-flip-transition-duration) forwards;\n}\n@keyframes f7-flip-next-to-current {\n from {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(180deg);\n }\n to {\n border-radius: 0;\n transform: translateZ(0px) rotateY(0deg);\n }\n}\n@keyframes f7-flip-current-to-next {\n from {\n border-radius: 0px;\n transform: translateZ(0px) rotateY(0deg);\n }\n to {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(180deg);\n }\n}\n@keyframes f7-flip-current-to-prev {\n from {\n border-radius: 0px;\n transform: translateZ(0px) rotateY(0deg);\n }\n to {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(-180deg);\n }\n}\n@keyframes f7-flip-prev-to-current {\n from {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(-180deg);\n }\n to {\n border-radius: 0px;\n transform: translateZ(0px) rotateY(0deg);\n }\n}\n.router-transition-f7-parallax-forward .page {\n pointer-events: none;\n}\n.router-transition-f7-parallax-forward .page-next {\n animation: f7-parallax-next-to-current var(--f7-page-parallax-transition-duration) forwards;\n}\n.router-transition-f7-parallax-forward .page-current {\n animation: f7-parallax-current-to-prev var(--f7-page-parallax-transition-duration) forwards;\n}\n.router-transition-f7-parallax-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-parallax-backward .page-current {\n animation: f7-parallax-current-to-next var(--f7-page-parallax-transition-duration) forwards;\n}\n.router-transition-f7-parallax-backward .page-previous {\n animation: f7-parallax-prev-to-current var(--f7-page-parallax-transition-duration) forwards;\n}\n@keyframes f7-parallax-next-to-current {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n@keyframes f7-parallax-current-to-next {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(100%);\n }\n}\n@keyframes f7-parallax-current-to-prev {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(-20%);\n }\n}\n@keyframes f7-parallax-prev-to-current {\n from {\n transform: translateX(-20%);\n }\n to {\n transform: translateX(0%);\n }\n}\n.router-transition-f7-push-forward .page {\n pointer-events: none;\n}\n.router-transition-f7-push-forward .page-next {\n animation: f7-push-next-to-current var(--f7-page-push-transition-duration) forwards;\n}\n.router-transition-f7-push-forward .page-current {\n animation: f7-push-current-to-prev var(--f7-page-push-transition-duration) forwards;\n}\n.router-transition-f7-push-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-push-backward .page-current {\n animation: f7-push-current-to-next var(--f7-page-push-transition-duration) forwards;\n}\n.router-transition-f7-push-backward .page-previous {\n animation: f7-push-prev-to-current var(--f7-page-push-transition-duration) forwards;\n}\n@keyframes f7-push-next-to-current {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n@keyframes f7-push-current-to-next {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(100%);\n }\n}\n@keyframes f7-push-current-to-prev {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(-100%);\n }\n}\n@keyframes f7-push-prev-to-current {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n/* === Link === */\n:root {\n --f7-link-highlight-black: rgba(0, 0, 0, 0.1);\n --f7-link-highlight-white: rgba(255, 255, 255, 0.15);\n --f7-link-highlight-color: rgba(var(--f7-theme-color-rgb), 0.15);\n}\n.ios {\n --f7-link-pressed-opacity: 0.3;\n}\n.link,\n.tab-link {\n display: inline-flex;\n align-items: center;\n align-content: center;\n justify-content: center;\n position: relative;\n box-sizing: border-box;\n z-index: 1;\n --f7-touch-ripple-color: var(--f7-link-touch-ripple-color, rgba(var(--f7-theme-color-rgb), 0.25));\n}\n.link i + span,\n.link i + i,\n.link span + i,\n.link span + span {\n margin-left: 4px;\n}\n.link[class*='color-'] {\n color: var(--f7-theme-color);\n}\n.ios .link {\n transition: opacity 300ms;\n}\n.ios .link.active-state {\n opacity: var(--f7-link-pressed-opacity);\n transition-duration: 0ms;\n}\n/* === Navbar === */\n:root {\n /*\n --f7-navbar-bg-color: var(--f7-bars-bg-color);\n --f7-navbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-navbar-border-color: var(--f7-bars-border-color);\n */\n --f7-navbar-hide-show-transition-duration: 400ms;\n --f7-navbar-title-line-height: 1.2;\n --f7-navbar-subtitle-text-align: inherit;\n --f7-navbar-large-title-line-height: 1.2;\n --f7-navbar-large-title-text-color: inherit;\n --f7-navbar-large-title-padding-left: 16px;\n --f7-navbar-large-title-padding-right: 16px;\n}\n.ios {\n /*\n --f7-navbar-link-color: var(--f7-bars-link-color);\n --f7-navbar-text-color: var(--f7-bars-text-color);\n */\n --f7-navbar-height: 44px;\n --f7-navbar-font-size: 17px;\n --f7-navbar-title-font-size: inherit;\n --f7-navbar-inner-padding-left: 8px;\n --f7-navbar-inner-padding-right: 8px;\n --f7-navbar-title-font-weight: 600;\n --f7-navbar-title-margin-left: 0;\n --f7-navbar-title-margin-right: 0;\n --f7-navbar-title-text-align: center;\n --f7-navbar-subtitle-font-size: 10px;\n --f7-navbar-subtitle-line-height: 1;\n --f7-navbar-large-title-height: 52px;\n --f7-navbar-large-title-font-size: 34px;\n --f7-navbar-large-title-font-weight: 700;\n --f7-navbar-large-title-letter-spacing: -0.03em;\n --f7-navbar-large-title-padding-vertical: 6px;\n /*\n --f7-navbar-link-height: var(--f7-navbar-height);\n --f7-navbar-link-line-height: var(--f7-navbar-height);\n */\n --f7-navbar-subtitle-text-color: rgba(0, 0, 0, 0.55);\n}\n.ios .dark,\n.ios.dark {\n --f7-navbar-subtitle-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-navbar-height: 64px;\n --f7-navbar-font-size: 16px;\n --f7-navbar-title-font-size: 22px;\n --f7-navbar-inner-padding-left: 0px;\n --f7-navbar-inner-padding-right: 0px;\n --f7-navbar-title-font-weight: 400;\n --f7-navbar-title-margin-left: 0px;\n --f7-navbar-title-margin-right: 16px;\n --f7-navbar-title-text-align: left;\n --f7-navbar-subtitle-font-size: 14px;\n --f7-navbar-subtitle-line-height: 1.2;\n --f7-navbar-large-title-font-size: 28px;\n --f7-navbar-large-title-height: 88px;\n --f7-navbar-large-title-font-weight: 400;\n --f7-navbar-large-title-letter-spacing: 0;\n --f7-navbar-large-title-padding-vertical: 8px;\n --f7-navbar-link-height: 48px;\n --f7-navbar-link-line-height: 48px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-navbar-link-color: var(--f7-md-on-surface);\n --f7-navbar-text-color: var(--f7-md-on-surface);\n --f7-navbar-subtitle-text-color: var(--f7-md-on-surface-variant);\n}\n.navbars,\n.navbar {\n z-index: 500;\n left: 0;\n top: 0;\n width: 100%;\n}\n.navbars {\n position: absolute;\n}\n.navbars .navbar {\n z-index: auto;\n}\n.navbars .navbar-transitioning {\n z-index: 500;\n}\n.navbar {\n --f7-navbar-large-collapse-progress: 0;\n position: relative;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n box-sizing: border-box;\n margin: 0;\n height: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n color: var(--f7-navbar-text-color, var(--f7-bars-text-color));\n font-size: var(--f7-navbar-font-size);\n}\n.navbar b {\n font-weight: 500;\n}\n.navbar a {\n color: var(--f7-navbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.navbar a.link {\n display: flex;\n justify-content: flex-start;\n line-height: var(--f7-navbar-link-line-height, var(--f7-navbar-height));\n height: var(--f7-navbar-link-height, var(--f7-navbar-height));\n}\n.navbar .title,\n.navbar .left,\n.navbar .right {\n position: relative;\n z-index: 10;\n}\n.navbar .title {\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex-shrink: 10;\n font-weight: var(--f7-navbar-title-font-weight);\n display: inline-block;\n line-height: var(--f7-navbar-title-line-height);\n text-align: var(--f7-navbar-title-text-align);\n font-size: var(--f7-navbar-title-font-size);\n margin-left: var(--f7-navbar-title-margin-left);\n margin-right: var(--f7-navbar-title-margin-left);\n}\n.navbar .subtitle {\n display: block;\n color: var(--f7-navbar-subtitle-text-color);\n font-weight: normal;\n font-size: var(--f7-navbar-subtitle-font-size);\n line-height: var(--f7-navbar-subtitle-line-height);\n text-align: var(--f7-navbar-subtitle-text-align);\n}\n.navbar .left,\n.navbar .right {\n flex-shrink: 0;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.navbar .right:first-child {\n position: absolute;\n height: 100%;\n}\n.navbar.no-outline .navbar-bg:after,\n.navbar .no-outline .navbar-bg:after {\n display: none !important;\n}\n.navbar.no-outline .title-large:after,\n.navbar .no-outline .title-large:after {\n display: none !important;\n}\n.navbar.navbar-hidden .navbar-bg:before,\n.navbar-hidden .navbar .navbar-bg:before {\n opacity: 0 !important;\n}\n.navbar-bg {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 0;\n background: var(--f7-navbar-bg-color);\n background-color: var(--f7-navbar-bg-color, var(--f7-bars-bg-color));\n transition-property: transform;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .navbar-bg {\n background-color: rgba(var(--f7-navbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.navbar-bg:after,\n.navbar-bg:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.navbar-bg:after {\n content: '';\n position: absolute;\n background-color: var(--f7-navbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.navbar-bg:after {\n z-index: 1;\n}\n.navbar-transitioning,\n.navbar-transitioning .left,\n.navbar-transitioning .title,\n.navbar-transitioning .right,\n.navbar-transitioning .title-large-text,\n.navbar-transitioning .navbar-bg,\n.navbar-transitioning .subnavbar,\n.navbar-transitioning .navbar-bg:before {\n transition-duration: var(--f7-navbar-hide-show-transition-duration);\n}\n.navbar-page-transitioning {\n transition-duration: var(--f7-page-swipeback-transition-duration) !important;\n}\n.navbar-page-transitioning .title-large-text,\n.navbar-page-transitioning .navbar-bg {\n transition-duration: var(--f7-page-swipeback-transition-duration) !important;\n}\n.navbar-hidden {\n transform: translate3d(0, calc(-1 * var(--f7-navbar-height)), 0);\n}\n.navbar-hidden .navbar-inner {\n pointer-events: none;\n}\n.navbar-hidden .navbar-inner > .left,\n.navbar-hidden .navbar-inner > .title,\n.navbar-hidden .navbar-inner > .right {\n opacity: 0 !important;\n}\n.navbar-hidden .subnavbar {\n pointer-events: auto;\n}\n.navbar-hidden-statusbar {\n transform: translate3d(0, calc(-1 * var(--f7-navbar-height) - var(--f7-safe-area-top)), 0);\n}\n.navbar-large-hidden .navbar-large {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar-inner {\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n padding: var(--f7-safe-area-top) calc(var(--f7-navbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-navbar-inner-padding-left) + var(--f7-safe-area-left));\n transform: translate3d(0, 0, 0);\n z-index: 10;\n}\n.views > .navbar,\n.view > .navbar,\n.page > .navbar,\n.navbars > .navbar {\n position: absolute;\n}\n.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(\n .with-searchbar-expandable-enabled\n ) .navbar-bg,\n.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(\n .with-searchbar-expandable-enabled\n ) .title {\n opacity: 0;\n}\n.navbar-large .navbar-bg {\n height: calc(100% + var(--f7-navbar-large-title-height));\n transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.navbar-large-transparent .navbar-bg,\n.navbar-large.navbar-transparent .navbar-bg {\n opacity: var(--f7-navbar-large-collapse-progress);\n}\n.ios .router-navbar-transition-to-large .navbar-bg,\n.ios .router-navbar-transition-from-large .navbar-bg,\n.navbar-bg.ios-swipeback-navbar-bg-large,\n.navbar-large-transparent .navbar-bg.ios-swipeback-navbar-bg-large,\n.navbar-large.navbar-transparent .navbar-bg.ios-swipeback-navbar-bg-large {\n height: calc(100% + var(--f7-navbar-large-title-height));\n transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.ios .navbar:not(.navbar-large) .navbar-bg {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar-large .title {\n opacity: var(--f7-navbar-large-collapse-progress);\n}\n.navbar-large-collapsed {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar-large-collapsed .title-large {\n pointer-events: none;\n}\n.navbar .title-large {\n box-sizing: border-box;\n position: absolute;\n left: 0;\n right: 0;\n top: 100%;\n display: flex;\n white-space: nowrap;\n overflow: hidden;\n height: var(--f7-navbar-large-title-height);\n z-index: 5;\n}\n.navbar .title-large-text {\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--f7-navbar-large-title-text-color);\n letter-spacing: var(--f7-navbar-large-title-letter-spacing);\n font-size: var(--f7-navbar-large-title-font-size);\n font-weight: var(--f7-navbar-large-title-font-weight);\n line-height: var(--f7-navbar-large-title-line-height);\n padding-left: calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-navbar-large-title-padding-right) + var(--f7-safe-area-right));\n padding-top: var(--f7-navbar-large-title-padding-vertical);\n padding-bottom: var(--f7-navbar-large-title-padding-vertical);\n box-sizing: border-box;\n overflow: hidden;\n width: 100%;\n transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n transform-origin: calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center;\n}\n.navbar-no-title-large-transition .title-large-text {\n transition-duration: 0ms;\n}\n.navbar ~ *,\n.navbars ~ * {\n --f7-page-navbar-offset: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ * .page-with-navbar-large,\n.navbar ~ .page-with-navbar-large,\n.navbars ~ * .page-with-navbar-large,\n.navbars ~ .page-with-navbar-large,\n.page-with-navbar-large .navbar ~ * {\n --f7-page-navbar-offset: calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));\n}\n.page.no-navbar,\n.page.no-navbar .navbar ~ * {\n --f7-page-navbar-offset: var(--f7-safe-area-top);\n}\n.ios {\n --f7-navbarLeftTextOffset: calc(4px + 12px + var(--f7-navbar-inner-padding-left));\n --f7-navbarTitleLargeOffset: var(--f7-navbar-large-title-padding-left);\n --f7-navbar-large-bg-center-top: translateX(0) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n --f7-navbar-large-bg-center-bottom: translateX(0) translateY(0);\n --f7-navbar-large-bg-left-top: translateX(-100%) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n --f7-navbar-large-bg-left-bottom: translateX(-100%) translateY(0);\n --f7-navbar-large-bg-right-top: translateX(100%) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n --f7-navbar-large-bg-right-bottom: translateX(100%) translateY(0);\n}\n.ios .navbar .title-large {\n align-items: flex-end;\n}\n.ios .navbar a.icon-only {\n width: 44px;\n margin: 0;\n justify-content: center;\n}\n.ios .navbar .left a + a,\n.ios .navbar .right a + a {\n margin-left: 16px;\n}\n.ios .navbar b {\n font-weight: 600;\n}\n.ios .navbar .left {\n margin-right: 10px;\n}\n.ios .navbar .right {\n margin-left: 10px;\n}\n.ios .navbar .right:first-child {\n right: calc(8px + var(--f7-safe-area-right));\n}\n.ios .navbar-inner {\n justify-content: space-between;\n}\n.ios .navbar-inner-left-title {\n justify-content: flex-start;\n}\n.ios .navbar-inner-left-title .right {\n margin-left: auto;\n}\n.ios .navbar-inner-left-title .title {\n text-align: left;\n margin-right: 10px;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .left,\n.ios .view:not(.view-master-detail) .navbar-previous .left,\n.ios .navbar-next .left,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .title,\n.ios .view:not(.view-master-detail) .navbar-previous .title,\n.ios .navbar-next .title,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .right,\n.ios .view:not(.view-master-detail) .navbar-previous .right,\n.ios .navbar-next .right,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar,\n.ios .view:not(.view-master-detail) .navbar-previous .subnavbar,\n.ios .navbar-next .subnavbar,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .fading,\n.ios .view:not(.view-master-detail) .navbar-previous .fading,\n.ios .navbar-next .fading {\n opacity: 0;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master),\n.ios .view:not(.view-master-detail) .navbar-previous {\n pointer-events: none;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large,\n.ios .view:not(.view-master-detail) .navbar-previous .title-large {\n opacity: 0;\n transition-duration: 0ms;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large .title-large-text,\n.ios .view:not(.view-master-detail) .navbar-previous .title-large .title-large-text {\n transform: scale(0.5);\n transition-duration: 0ms;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar.sliding,\n.ios .view:not(.view-master-detail) .navbar-previous .subnavbar.sliding,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .sliding .subnavbar,\n.ios .view:not(.view-master-detail) .navbar-previous .sliding .subnavbar {\n opacity: 1;\n transform: translate3d(-100%, 0, 0);\n}\n.ios .view:not(.view-master-detail) .navbar-previous .navbar-bg,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .navbar-bg {\n transform: translateX(-100%);\n}\n.ios .navbar-next {\n pointer-events: none;\n}\n.ios .navbar-next .navbar-bg {\n transform: translateX(100%);\n}\n.ios .navbar-next .title-large .title-large-text {\n transition-duration: 0ms;\n transform: translateX(100%) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n}\n.ios .navbar-next .subnavbar.sliding,\n.ios .navbar-next .sliding .subnavbar {\n opacity: 1;\n transform: translate3d(100%, 0, 0);\n}\n.ios .router-transition .navbar,\n.ios .router-transition .navbar-bg {\n transition-duration: var(--f7-page-transition-duration);\n}\n.ios .router-transition .navbar-bg {\n animation-duration: var(--f7-page-transition-duration);\n animation-fill-mode: forwards;\n}\n.ios .router-transition .title-large,\n.ios .router-transition .title-large-text {\n transition-duration: 0ms;\n}\n.ios .router-transition .navbar-current .left,\n.ios .router-transition .navbar-current .title,\n.ios .router-transition .navbar-current .right,\n.ios .router-transition .navbar-current .subnavbar {\n animation: ios-navbar-element-fade-out var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition .navbar-current .sliding.left,\n.ios .router-transition .navbar-current .sliding.left .icon + span,\n.ios .router-transition .navbar-current .sliding.title,\n.ios .router-transition .navbar-current .sliding.right,\n.ios .router-transition .navbar-current .sliding .left,\n.ios .router-transition .navbar-current .sliding .left .icon + span,\n.ios .router-transition .navbar-current .sliding .title,\n.ios .router-transition .navbar-current .sliding .right {\n transition-duration: var(--f7-page-transition-duration);\n opacity: 0 !important;\n animation: none;\n}\n.ios .router-transition .navbar-current .sliding .subnavbar,\n.ios .router-transition .navbar-current .sliding.subnavbar {\n transition-duration: var(--f7-page-transition-duration);\n animation: none;\n opacity: 1;\n}\n.ios .router-transition-forward .navbar-next .left,\n.ios .router-transition-backward .navbar-previous .left,\n.ios .router-transition-forward .navbar-next .title,\n.ios .router-transition-backward .navbar-previous .title,\n.ios .router-transition-forward .navbar-next .right,\n.ios .router-transition-backward .navbar-previous .right,\n.ios .router-transition-forward .navbar-next .subnavbar,\n.ios .router-transition-backward .navbar-previous .subnavbar {\n animation: ios-navbar-element-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next .sliding.left,\n.ios .router-transition-backward .navbar-previous .sliding.left,\n.ios .router-transition-forward .navbar-next .sliding.left .icon + span,\n.ios .router-transition-backward .navbar-previous .sliding.left .icon + span,\n.ios .router-transition-forward .navbar-next .sliding.title,\n.ios .router-transition-backward .navbar-previous .sliding.title,\n.ios .router-transition-forward .navbar-next .sliding.right,\n.ios .router-transition-backward .navbar-previous .sliding.right,\n.ios .router-transition-forward .navbar-next .sliding .left,\n.ios .router-transition-backward .navbar-previous .sliding .left,\n.ios .router-transition-forward .navbar-next .sliding .left .icon + span,\n.ios .router-transition-backward .navbar-previous .sliding .left .icon + span,\n.ios .router-transition-forward .navbar-next .sliding .title,\n.ios .router-transition-backward .navbar-previous .sliding .title,\n.ios .router-transition-forward .navbar-next .sliding .right,\n.ios .router-transition-backward .navbar-previous .sliding .right,\n.ios .router-transition-forward .navbar-next .sliding .subnavbar,\n.ios .router-transition-backward .navbar-previous .sliding .subnavbar {\n transition-duration: var(--f7-page-transition-duration);\n animation: none;\n transform: translate3d(0, 0, 0) !important;\n opacity: 1 !important;\n}\n.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title,\n.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title {\n animation: none;\n}\n.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title,\n.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title,\n.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title,\n.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title {\n opacity: 0 !important;\n}\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .left,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .left,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .title,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .title,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .right,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .right,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .subnavbar,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .subnavbar {\n animation: none;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large {\n overflow: visible;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-up var(--f7-page-transition-duration) forwards, ios-navbar-large-title-text-fade-out var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large .left .back span {\n animation: ios-navbar-back-text-next-to-current var(--f7-page-transition-duration) forwards;\n transition: none;\n transform-origin: left center;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large {\n overflow: visible;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-left var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-left var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next.navbar-large:not(.navbar-large-collapsed) .title,\n.ios .router-transition-forward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title {\n animation: none;\n opacity: 0 !important;\n transition-duration: 0;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large .left .back span {\n animation: ios-navbar-back-text-current-to-previous var(--f7-page-transition-duration) forwards;\n transition: none;\n transform-origin: left center;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large {\n overflow: visible;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-right var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-right var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large {\n opacity: 0;\n}\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large {\n overflow: visible;\n opacity: 1;\n}\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-down var(--f7-page-transition-duration) forwards, ios-navbar-large-title-text-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title,\n.ios .router-transition-backward .navbar-previous.navbar-large:not(.navbar-large-collapsed) .title {\n animation: none;\n opacity: 0 !important;\n transition-duration: 0;\n}\n.ios .router-transition-forward .navbar-current .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-lb;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-lb;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-lt;\n}\n.ios .router-transition-forward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-lb;\n}\n.ios .router-transition-forward .navbar-current.navbar-large-collapsed:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-lt;\n}\n.ios .router-transition-forward .navbar-next .navbar-bg {\n animation-name: ios-navbar-bg-from-rb-to-cb;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-rb-to-cb;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-rb-to-ct;\n}\n.ios .router-transition-forward .navbar-next:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-rt-to-cb;\n}\n.ios .router-transition-backward .navbar-current .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-rb;\n}\n.ios .router-transition-backward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-rb;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-rt;\n}\n.ios .router-transition-backward .navbar-current.navbar-large-collapsed .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-rt;\n}\n.ios .router-transition-backward .navbar-current.navbar-large-collapsed.router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-rb;\n}\n.ios .router-transition-backward .navbar-previous .navbar-bg {\n animation-name: ios-navbar-bg-from-lb-to-cb;\n}\n.ios .router-transition-backward .navbar-previous:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-lt-to-cb;\n}\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-lb-to-ct;\n}\n.ios .router-transition-backward .navbar-previous.navbar-large-collapsed .navbar-bg {\n animation-name: ios-navbar-bg-from-lt-to-ct;\n}\n.view-master-detail .navbars {\n z-index: auto;\n}\n.view-master-detail .page-master {\n z-index: 525;\n}\n.view-master-detail .navbar-master .navbar-inner,\n.view-master-detail .navbar-master .navbar-bg {\n z-index: 550;\n}\n.view-master-detail .navbar-master-detail .navbar-inner,\n.view-master-detail .navbar-master-detail .navbar-bg {\n z-index: 500;\n}\n.view-master-detail .navbar-master.navbar-previous {\n pointer-events: auto;\n}\n.view-master-detail .navbar-master.navbar-previous .left,\n.view-master-detail .navbar-master.navbar-previous:not(.navbar-large) .title,\n.view-master-detail .navbar-master.navbar-previous .right,\n.view-master-detail .navbar-master.navbar-previous .subnavbar {\n opacity: 1;\n}\n.view-master-detail.router-transition .navbar-master .left,\n.view-master-detail.router-transition .navbar-master .left .icon + span,\n.view-master-detail.router-transition .navbar-master:not(.navbar-large) .title,\n.view-master-detail.router-transition .navbar-master .right,\n.view-master-detail.router-transition .navbar-master .subnavbar,\n.view-master-detail.router-transition .navbar-master .fading {\n opacity: 1 !important;\n transition-duration: 0ms;\n transform: none !important;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master .navbar-bg {\n transition-duration: 0ms;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master.navbar-large .title {\n opacity: calc(-1 + 2 * var(--f7-navbar-large-collapse-progress)) !important;\n transition-duration: 0ms;\n transform: none !important;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master.navbar-large .title-large,\n.view-master-detail.router-transition .navbar-master.navbar-large .title-large-text {\n transition-duration: 0ms;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master.navbar-large-transparent .navbar-bg,\n.view-master-detail.router-transition .navbar-master.navbar-large.navbar-transparent .navbar-bg {\n height: 100% !important;\n opacity: var(--f7-navbar-large-collapse-progress) !important;\n}\n@keyframes ios-navbar-element-fade-in {\n 0% {\n opacity: 0;\n }\n 25% {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes ios-navbar-element-fade-out {\n from {\n opacity: 1;\n }\n 75% {\n opacity: 0;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes ios-navbar-large-title-text-slide-up {\n 0% {\n transform: translateX(0px) translateY(0%) scale(1);\n }\n 100% {\n transform: translateX(calc(var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset))) translateY(calc(-1 * var(--f7-navbar-large-title-height) + var(--f7-navbar-large-title-padding-vertical))) scale(0.5);\n }\n}\n@keyframes ios-navbar-large-title-text-slide-down {\n 0% {\n transform: translateX(calc(var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset))) translateY(calc(-1 * var(--f7-navbar-large-title-height) + var(--f7-navbar-large-title-padding-vertical) / 2)) scale(0.5);\n }\n 100% {\n transform: translateX(0px) translateY(0%) scale(1);\n }\n}\n@keyframes ios-navbar-large-title-text-slide-left {\n 0% {\n transform: translateX(100%);\n }\n 100% {\n transform: translateX(0%);\n }\n}\n@keyframes ios-navbar-large-title-text-slide-right {\n 0% {\n transform: translateX(0%);\n }\n 100% {\n transform: translateX(100%);\n }\n}\n@keyframes ios-navbar-large-title-text-fade-out {\n 0% {\n opacity: 1;\n }\n 80% {\n opacity: 0;\n }\n 100% {\n opacity: 0;\n }\n}\n@keyframes ios-navbar-large-title-text-fade-in {\n 0% {\n opacity: 0;\n }\n 20% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes ios-navbar-back-text-current-to-previous {\n 0% {\n opacity: 1;\n transform: translateY(0px) translateX(0px) scale(1);\n }\n 80% {\n opacity: 0;\n }\n 100% {\n opacity: 0;\n transform: translateX(calc(var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset))) translateY(calc(1 * var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2)) scale(2);\n }\n}\n@keyframes ios-navbar-back-text-next-to-current {\n 0% {\n opacity: 0;\n transform: translateX(calc(var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset))) translateY(calc(1 * var(--f7-navbar-large-title-height) + var(--f7-navbar-large-title-padding-vertical) / 2)) scale(2);\n }\n 20% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n transform: translateX(0px) translateY(0px) scale(1);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-lb {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-lt {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-lb {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-lt {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n}\n@keyframes ios-navbar-bg-from-rb-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-rb-to-ct {\n from {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n}\n@keyframes ios-navbar-bg-from-rt-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-right-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-rb {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-rb {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-rt {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-top);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-rt {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-top);\n }\n}\n@keyframes ios-navbar-bg-from-lb-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-lt-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-lb-to-ct {\n from {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n}\n@keyframes ios-navbar-bg-from-lt-to-ct {\n from {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n}\n.md .navbar .title-large {\n align-items: center;\n}\n.md .navbar .left {\n margin-left: 4px;\n margin-right: 4px;\n}\n.md .navbar a.link {\n padding: 0 12px;\n min-width: 48px;\n}\n.md .navbar a.icon-only {\n min-width: 0;\n flex-shrink: 0;\n width: 48px;\n}\n.md .navbar .right {\n margin-left: auto;\n margin-right: 4px;\n}\n.md .navbar .right:first-child {\n right: var(--f7-safe-area-right);\n}\n.md .navbar-inner {\n justify-content: flex-start;\n overflow: hidden;\n}\n.md .navbar-large:not(.navbar-large-collapsed) .navbar-inner {\n overflow: visible;\n}\n.md .page.page-with-subnavbar .navbar-inner {\n overflow: visible;\n}\n.md .navbar-inner:not(.navbar-inner-centered-title) .title:first-child {\n margin-left: 16px;\n}\n.md .navbar-inner-centered-title {\n justify-content: space-between;\n}\n.md .navbar-inner-centered-title .right {\n margin-left: 0;\n}\n.md .navbar-inner-centered-title .title {\n text-align: center;\n}\n/* === Toolbar === */\n:root {\n /*\n --f7-toolbar-bg-color: var(--f7-bars-bg-color);\n --f7-toolbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-toolbar-border-color: var(--f7-bars-border-color);\n --f7-toolbar-link-color: var(--f7-bars-link-color);\n --f7-toolbar-text-color: var(--f7-bars-text-color);\n */\n --f7-tabbar-link-active-bg-color: transparent;\n --f7-tabbar-label-text-transform: none;\n --f7-toolbar-hide-show-transition-duration: 400ms;\n}\n.ios {\n --f7-toolbar-height: 44px;\n --f7-toolbar-font-size: 17px;\n --f7-toolbar-inner-padding-left: 8px;\n --f7-toolbar-inner-padding-right: 8px;\n --f7-toolbar-link-font-weight: 400;\n /*\n --f7-toolbar-link-height: var(--f7-toolbar-height);\n --f7-toolbar-link-line-height: var(--f7-toolbar-height);\n --f7-tabbar-link-active-color: var(--f7-theme-color);\n */\n --f7-tabbar-icons-height: 50px;\n --f7-tabbar-icons-tablet-height: 50px;\n --f7-tabbar-icon-size: 28px;\n --f7-tabbar-link-text-transform: none;\n --f7-tabbar-link-font-weight: 400;\n --f7-tabbar-link-letter-spacing: 0;\n --f7-tabbar-label-font-size: 12px;\n --f7-tabbar-label-tablet-font-size: 14px;\n --f7-tabbar-label-font-weight: 500;\n --f7-tabbar-label-letter-spacing: 0.01;\n --f7-tabbar-link-inactive-color: rgba(0, 0, 0, 0.4);\n}\n.ios .dark,\n.ios.dark {\n --f7-tabbar-link-inactive-color: rgba(255, 255, 255, 0.54);\n}\n.md {\n --f7-toolbar-height: 56px;\n --f7-toolbar-font-size: 14px;\n --f7-toolbar-inner-padding-left: 0px;\n --f7-toolbar-inner-padding-right: 0px;\n /*\n --f7-toolbar-link-height: var(--f7-toolbar-height);\n --f7-toolbar-link-line-height: var(--f7-toolbar-height);\n */\n --f7-tabbar-icons-height: 80px;\n --f7-tabbar-icons-tablet-height: 80px;\n --f7-tabbar-icon-size: 24px;\n --f7-tabbar-link-text-transform: none;\n --f7-tabbar-link-font-weight: 500;\n --f7-tabbar-link-letter-spacing: 0;\n --f7-toolbar-link-font-weight: 500;\n --f7-tabbar-label-font-size: 12px;\n --f7-tabbar-label-tablet-font-size: 12px;\n --f7-tabbar-label-font-weight: 500;\n --f7-tabbar-label-letter-spacing: 0;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-tabbar-link-active-color: var(--f7-md-on-secondary-container);\n --f7-tabbar-link-active-border-color: var(--f7-md-primary);\n --f7-tabbar-link-inactive-color: var(--f7-md-on-surface-variant);\n --f7-tabbar-link-active-icon-bg-color: var(--f7-md-secondary-container);\n}\n.toolbar {\n width: 100%;\n position: relative;\n margin: 0;\n transform: translate3d(0, 0, 0);\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n z-index: 600;\n box-sizing: border-box;\n left: 0;\n height: var(--f7-toolbar-height);\n background-color: var(--f7-toolbar-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-toolbar-text-color, var(--f7-bars-text-color));\n font-size: var(--f7-toolbar-font-size);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .toolbar {\n background-color: rgba(var(--f7-toolbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.toolbar b {\n font-weight: 600;\n}\n.toolbar a {\n color: var(--f7-toolbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n box-sizing: border-box;\n flex-shrink: 1;\n position: relative;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.toolbar .link {\n display: flex;\n line-height: var(--f7-toolbar-link-line-height, var(--f7-toolbar-height));\n height: var(--f7-toolbar-link-height, var(--f7-toolbar-height));\n font-weight: var(--f7-toolbar-link-font-weight);\n}\n.toolbar i.icon {\n display: block;\n}\n.toolbar:after,\n.toolbar:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.views > .toolbar,\n.view > .toolbar,\n.page > .toolbar {\n position: absolute;\n}\n.toolbar-top,\n.ios .toolbar-top-ios,\n.md .toolbar-top-md {\n top: 0;\n}\n.toolbar-top .tab-link-highlight,\n.ios .toolbar-top-ios .tab-link-highlight,\n.md .toolbar-top-md .tab-link-highlight {\n bottom: 0;\n}\n.toolbar-top.no-outline:after,\n.ios .toolbar-top-ios.no-outline:after,\n.md .toolbar-top-md.no-outline:after {\n display: none !important;\n}\n.toolbar-top.toolbar-hidden:before,\n.ios .toolbar-top-ios.toolbar-hidden:before,\n.md .toolbar-top-md.toolbar-hidden:before {\n display: none !important;\n}\n.toolbar-top:after,\n.ios .toolbar-top-ios:after,\n.md .toolbar-top-md:after,\n.toolbar-top:before,\n.ios .toolbar-top-ios:before,\n.md .toolbar-top-md:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.toolbar-top:after,\n.ios .toolbar-top-ios:after,\n.md .toolbar-top-md:after {\n content: '';\n position: absolute;\n background-color: var(--f7-toolbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.toolbar-bottom,\n.ios .toolbar-bottom-ios,\n.md .toolbar-bottom-md {\n bottom: 0;\n height: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n}\n.toolbar-bottom .tab-link-highlight,\n.ios .toolbar-bottom-ios .tab-link-highlight,\n.md .toolbar-bottom-md .tab-link-highlight {\n top: 0;\n}\n.toolbar-bottom .toolbar-inner,\n.ios .toolbar-bottom-ios .toolbar-inner,\n.md .toolbar-bottom-md .toolbar-inner {\n height: auto;\n top: 0;\n bottom: var(--f7-safe-area-bottom);\n}\n.toolbar-bottom.no-outline:before,\n.ios .toolbar-bottom-ios.no-outline:before,\n.md .toolbar-bottom-md.no-outline:before {\n display: none !important;\n}\n.toolbar-bottom.toolbar-hidden:after,\n.ios .toolbar-bottom-ios.toolbar-hidden:after,\n.md .toolbar-bottom-md.toolbar-hidden:after {\n display: none !important;\n}\n.toolbar-bottom:before,\n.ios .toolbar-bottom-ios:before,\n.md .toolbar-bottom-md:before {\n content: '';\n position: absolute;\n background-color: var(--f7-toolbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.toolbar-inner {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n align-content: center;\n overflow: hidden;\n padding: 0 calc(var(--f7-toolbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-toolbar-inner-padding-left) + var(--f7-safe-area-left));\n}\n.views > .tabbar,\n.views > .tabbar-icons {\n z-index: 5001;\n}\n.tabbar a,\n.tabbar-icons a {\n color: var(--f7-tabbar-link-inactive-color);\n}\n.tabbar .link,\n.tabbar-icons .link {\n line-height: 1.4;\n}\n.tabbar .tab-link,\n.tabbar-icons .tab-link,\n.tabbar .link,\n.tabbar-icons .link {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n text-transform: var(--f7-tabbar-link-text-transform);\n font-weight: var(--f7-tabbar-link-font-weight);\n letter-spacing: var(--f7-tabbar-link-letter-spacing);\n overflow: hidden;\n}\n.tabbar .tab-link-active,\n.tabbar-icons .tab-link-active {\n color: var(--f7-tabbar-link-active-color, var(--f7-theme-color));\n background-color: var(--f7-tabbar-link-active-bg-color, transparent);\n}\n.tabbar i.icon,\n.tabbar-icons i.icon {\n font-size: var(--f7-tabbar-icon-size);\n height: var(--f7-tabbar-icon-size);\n line-height: var(--f7-tabbar-icon-size);\n}\n.md .tabbar.tabbar-icons .tab-link-highlight,\n.md .tabbar-icons.tabbar-icons .tab-link-highlight {\n display: none;\n}\n.md .tabbar:not(.tabbar-icons) .tab-link-highlight,\n.md .tabbar-icons:not(.tabbar-icons) .tab-link-highlight {\n position: absolute;\n height: 2px;\n background: var(--f7-tabbar-link-active-border-color, var(--f7-theme-color));\n transition-duration: 300ms;\n left: 0;\n}\n.tabbar-icons {\n --f7-toolbar-height: var(--f7-tabbar-icons-height);\n}\n.tabbar-icons .tab-link,\n.tabbar-icons .link {\n height: 100%;\n justify-content: center;\n align-items: center;\n}\n.tabbar-icons .tabbar-label {\n display: block;\n line-height: 1;\n margin: 0;\n position: relative;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--f7-tabbar-label-font-size);\n text-transform: var(--f7-tabbar-label-text-transform);\n font-weight: var(--f7-tabbar-label-font-weight);\n letter-spacing: var(--f7-tabbar-label-letter-spacing);\n}\n@media (min-width: 768px) and (min-height: 600px) {\n :root {\n --f7-tabbar-icons-height: var(--f7-tabbar-icons-tablet-height);\n --f7-tabbar-label-font-size: var(--f7-tabbar-label-tablet-font-size);\n }\n}\n.tabbar-scrollable .toolbar-inner {\n justify-content: flex-start;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.tabbar-scrollable .toolbar-inner::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.tabbar-scrollable .tab-link,\n.tabbar-scrollable .link {\n width: auto;\n flex-shrink: 0;\n}\n.toolbar-transitioning,\n.navbar-transitioning + .toolbar,\n.navbar-transitioning ~ * .toolbar {\n transition-duration: var(--f7-toolbar-hide-show-transition-duration);\n}\n.toolbar-bottom ~ *,\n.ios .toolbar-bottom-ios ~ *,\n.md .toolbar-bottom-md ~ * {\n --f7-page-toolbar-bottom-offset: var(--f7-toolbar-height);\n}\n.toolbar-bottom.tabbar-icons ~ *,\n.ios .toolbar-bottom-ios.tabbar-icons ~ *,\n.md .toolbar-bottom-md.tabbar-icons ~ * {\n --f7-page-toolbar-bottom-offset: var(--f7-tabbar-icons-height);\n}\n.toolbar-bottom.toolbar-hidden,\n.ios .toolbar-bottom-ios.toolbar-hidden,\n.md .toolbar-bottom-md.toolbar-hidden {\n transform: translate3d(0, 100%, 0);\n}\n.toolbar-top ~ *,\n.ios .toolbar-top-ios ~ *,\n.md .toolbar-top-md ~ * {\n --f7-page-toolbar-top-offset: var(--f7-toolbar-height);\n}\n.toolbar-top.tabbar-icons ~ *,\n.ios .toolbar-top-ios.tabbar-icons ~ *,\n.md .toolbar-top-md.tabbar-icons ~ * {\n --f7-page-toolbar-top-offset: var(--f7-tabbar-icons-height);\n}\n.toolbar-top.toolbar-hidden,\n.ios .toolbar-top-ios.toolbar-hidden,\n.md .toolbar-top-md.toolbar-hidden {\n transform: translate3d(0, -100%, 0);\n}\n.navbar ~ .toolbar-top,\n.navbars ~ .toolbar-top,\n.ios .navbar ~ .toolbar-top-ios,\n.ios .navbars ~ .toolbar-top-ios,\n.md .navbar ~ .toolbar-top-md,\n.navbar ~ * .toolbar-top,\n.navbars ~ * .toolbar-top,\n.ios .navbar ~ * .toolbar-top-ios,\n.ios .navbars ~ * .toolbar-top-ios,\n.md .navbar ~ * .toolbar-top-md,\n.navbar ~ .page:not(.no-navbar) .toolbar-top,\n.navbars ~ .page:not(.no-navbar) .toolbar-top,\n.ios .navbar ~ .page:not(.no-navbar) .toolbar-top-ios,\n.ios .navbars ~ .page:not(.no-navbar) .toolbar-top-ios,\n.md .navbar ~ .page:not(.no-navbar) .toolbar-top-md {\n top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ .toolbar-top.toolbar-hidden,\n.navbars ~ .toolbar-top.toolbar-hidden,\n.ios .navbar ~ .toolbar-top-ios.toolbar-hidden,\n.ios .navbars ~ .toolbar-top-ios.toolbar-hidden,\n.md .navbar ~ .toolbar-top-md.toolbar-hidden,\n.navbar ~ * .toolbar-top.toolbar-hidden,\n.navbars ~ * .toolbar-top.toolbar-hidden,\n.ios .navbar ~ * .toolbar-top-ios.toolbar-hidden,\n.ios .navbars ~ * .toolbar-top-ios.toolbar-hidden,\n.md .navbar ~ * .toolbar-top-md.toolbar-hidden,\n.navbar ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden,\n.navbars ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden,\n.ios .navbar ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,\n.ios .navbars ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,\n.md .navbar ~ .page:not(.no-navbar) .toolbar-top-md.toolbar-hidden {\n transform: translate3d(0, calc(-1 * (var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top))), 0);\n}\n.navbar ~ .toolbar-top.toolbar-hidden.tabbar-icons,\n.navbars ~ .toolbar-top.toolbar-hidden.tabbar-icons,\n.ios .navbar ~ .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.ios .navbars ~ .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.md .navbar ~ .toolbar-top-md.toolbar-hidden.tabbar-icons,\n.navbar ~ * .toolbar-top.toolbar-hidden.tabbar-icons,\n.navbars ~ * .toolbar-top.toolbar-hidden.tabbar-icons,\n.ios .navbar ~ * .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.ios .navbars ~ * .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.md .navbar ~ * .toolbar-top-md.toolbar-hidden.tabbar-icons,\n.navbar ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,\n.navbars ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,\n.ios .navbar ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.ios .navbars ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.md .navbar ~ .page:not(.no-navbar) .toolbar-top-md.toolbar-hidden.tabbar-icons {\n transform: translate3d(0, calc(-1 * (var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top))), 0);\n}\n.navbar-hidden + .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-hidden + .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-hidden + .toolbar-top-md:not(.toolbar-hidden),\n.navbar-hidden ~ * .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-hidden ~ * .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-hidden ~ * .toolbar-top-md:not(.toolbar-hidden) {\n transform: translate3d(0, calc(0px - var(--f7-navbar-height)), 0);\n}\n.navbar-large-hidden + .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-large-hidden + .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-large-hidden + .toolbar-top-md:not(.toolbar-hidden),\n.navbar-large-hidden ~ * .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-large-hidden ~ * .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-large-hidden ~ * .toolbar-top-md:not(.toolbar-hidden) {\n transform: translate3d(0, calc(0px - var(--f7-navbar-height) - var(--f7-navbar-large-title-height)), 0);\n}\n.ios .toolbar a.icon-only {\n min-height: var(--f7-toolbar-height);\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 0;\n min-width: 44px;\n}\n.ios .tabbar-icons .tab-link,\n.ios .tabbar-icons .link {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n.ios .tabbar-icons .tab-link i + span,\n.ios .tabbar-icons .link i + span {\n margin: 0;\n margin-top: 4px;\n}\n@media (min-width: 768px) and (min-height: 600px) {\n .ios .tabbar .tab-link,\n .ios .tabbar-icons .tab-link,\n .ios .tabbar .link,\n .ios .tabbar-icons .link {\n justify-content: center;\n flex-direction: row;\n }\n .ios .tabbar .tab-link i + span,\n .ios .tabbar-icons .tab-link i + span,\n .ios .tabbar .link i + span,\n .ios .tabbar-icons .link i + span {\n margin-left: 5px;\n }\n}\n.ios .tabbar-scrollable .toolbar-inner {\n justify-content: flex-start;\n}\n.ios .tabbar-scrollable .tab-link,\n.ios .tabbar-scrollable .link {\n padding: 0 8px;\n}\n.md .toolbar .link {\n justify-content: center;\n padding: 0 12px;\n min-width: 48px;\n}\n.md .toolbar a.icon-only {\n min-width: 0;\n flex-shrink: 0;\n}\n.md .tabbar .tab-link,\n.md .tabbar-icons .tab-link,\n.md .tabbar .link,\n.md .tabbar-icons .link {\n padding-left: 0;\n padding-right: 0;\n}\n.md .tabbar a.icon-only,\n.md .tabbar-icons a.icon-only {\n flex-shrink: initial;\n}\n.md .tabbar .tab-link,\n.md .tabbar-icons .tab-link {\n transition-duration: 300ms;\n overflow: hidden;\n position: relative;\n}\n.md .tabbar i.icon,\n.md .tabbar-icons i.icon {\n position: relative;\n}\n.md .tabbar i.icon::before,\n.md .tabbar-icons i.icon::before {\n content: '';\n width: 64px;\n height: 32px;\n border-radius: 32px;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translateX(-50%) translateY(-50%) scaleX(0.5);\n background: var(--f7-tabbar-link-active-icon-bg-color);\n opacity: 0;\n transition-duration: 200ms;\n z-index: -1;\n}\n.md .tabbar i.icon + .tabbar-label,\n.md .tabbar-icons i.icon + .tabbar-label {\n margin-top: 8px;\n}\n.md .tabbar .tab-link-active i.icon::before,\n.md .tabbar-icons .tab-link-active i.icon::before {\n opacity: 1;\n transform: translateX(-50%) translateY(-50%) scaleX(1);\n}\n.md .tabbar-icons .tab-link,\n.md .tabbar-icons .link {\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.md .tabbar-label {\n max-width: 100%;\n overflow: hidden;\n line-height: 1.2;\n}\n.md .tabbar-scrollable .toolbar-inner {\n overflow: auto;\n}\n.md .tabbar-scrollable .tab-link,\n.md .tabbar-scrollable .link {\n padding: 0 12px;\n}\n/* === Subnavbar === */\n:root {\n /*\n --f7-subnavbar-bg-color: var(--f7-bars-bg-color);\n --f7-subnavbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-subnavbar-border-color: var(--f7-bars-border-color);\n --f7-subnavbar-link-color: var(--f7-bars-link-color);\n --f7-subnavbar-text-color: var(--f7-bars-text-color);\n */\n --f7-subnavbar-title-line-height: 1.2;\n}\n.ios {\n --f7-subnavbar-height: 44px;\n --f7-subnavbar-inner-padding-left: 8px;\n --f7-subnavbar-inner-padding-right: 8px;\n --f7-subnavbar-title-font-size: 34px;\n --f7-subnavbar-title-font-weight: 700;\n --f7-subnavbar-title-letter-spacing: -0.03em;\n --f7-subnavbar-title-margin-left: 8px;\n /*\n --f7-subnavbar-link-height: var(--f7-subnavbar-height);\n --f7-subnavbar-link-line-height: var(--f7-subnavbar-height);\n */\n}\n.md {\n --f7-subnavbar-height: 64px;\n --f7-subnavbar-inner-padding-left: 16px;\n --f7-subnavbar-inner-padding-right: 16px;\n --f7-subnavbar-title-font-size: 22px;\n --f7-subnavbar-title-font-weight: 400;\n --f7-subnavbar-title-letter-spacing: 0;\n --f7-subnavbar-title-margin-left: 0px;\n /*\n --f7-subnavbar-link-height: var(--f7-subnavbar-height);\n --f7-subnavbar-link-line-height: var(--f7-subnavbar-height);\n */\n}\n.subnavbar {\n width: 100%;\n position: absolute;\n left: 0;\n top: 0;\n z-index: 600;\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background-color: var(--f7-subnavbar-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-subnavbar-text-color, var(--f7-bars-text-color));\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .subnavbar {\n background-color: rgba(var(--f7-subnavbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.subnavbar .subnavbar-title {\n position: relative;\n overflow: hidden;\n text-overflow: ellpsis;\n white-space: nowrap;\n font-size: var(--f7-subnavbar-title-font-size);\n font-weight: var(--f7-subnavbar-title-font-weight);\n text-align: left;\n display: inline-block;\n line-height: var(--f7-subnavbar-title-line-height);\n letter-spacing: var(--f7-subnavbar-title-letter-spacing);\n margin-left: var(--f7-subnavbar-title-margin-left);\n}\n.subnavbar .left,\n.subnavbar .right {\n flex-shrink: 0;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.subnavbar .right:first-child {\n position: absolute;\n height: 100%;\n}\n.subnavbar a {\n color: var(--f7-subnavbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.subnavbar a.link {\n line-height: var(--f7-subnavbar-link-line-height, var(--f7-subnavbar-height));\n height: var(--f7-subnavbar-link-height, var(--f7-subnavbar-height));\n}\n.subnavbar a.icon-only {\n min-width: var(--f7-subnavbar-height);\n}\n.subnavbar.no-outline:after {\n display: none !important;\n}\n.subnavbar.navbar-hidden:before {\n display: none !important;\n}\n.subnavbar:after,\n.subnavbar:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.subnavbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-subnavbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.subnavbar-inner {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n justify-content: space-between;\n overflow: hidden;\n padding: 0 calc(var(--f7-subnavbar-inner-padding-left) + var(--f7-safe-area-right)) 0 calc(var(--f7-subnavbar-inner-padding-right) + var(--f7-safe-area-left));\n}\n.navbar .subnavbar {\n top: 100%;\n}\n.views > .subnavbar,\n.view > .subnavbar,\n.page > .subnavbar {\n position: absolute;\n}\n.navbar ~ * .subnavbar,\n.navbars ~ * .subnavbar,\n.page-with-subnavbar .navbar ~ .subnavbar,\n.page-with-subnavbar .navbar ~ * .subnavbar,\n.navbar ~ .page-with-subnavbar:not(.no-navbar) .subnavbar,\n.navbar ~ .subnavbar,\n.navbars ~ .page-with-subnavbar:not(.no-navbar) .subnavbar,\n.navbars ~ .subnavbar {\n top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ .page-with-navbar-large:not(.no-navbar) .subnavbar,\n.navbars ~ .page-with-navbar-large:not(.no-navbar) .subnavbar,\n.page-with-subnavbar.page-with-navbar-large .navbar ~ .subnavbar,\n.page-with-subnavbar.page-with-navbar-large .navbar ~ * .subnavbar,\n.navbar .title-large ~ .subnavbar {\n top: calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));\n transform: translate3d(0, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.page-with-subnavbar,\n.subnavbar ~ * {\n --f7-page-subnavbar-offset: var(--f7-subnavbar-height);\n}\n.ios .subnavbar {\n height: calc(var(--f7-subnavbar-height) + 1px);\n margin-top: -1px;\n padding-top: 1px;\n}\n.ios .subnavbar .title {\n align-self: flex-start;\n flex-shrink: 10;\n}\n.ios .subnavbar .left a + a,\n.ios .subnavbar .right a + a {\n margin-left: 16px;\n}\n.ios .subnavbar .left {\n margin-right: 10px;\n}\n.ios .subnavbar .right {\n margin-left: 10px;\n}\n.ios .subnavbar .right:first-child {\n right: 8px;\n}\n.ios .subnavbar a.link {\n justify-content: flex-start;\n}\n.ios .subnavbar a.icon-only {\n justify-content: center;\n margin: 0;\n}\n.md .subnavbar {\n height: var(--f7-subnavbar-height);\n}\n.md .subnavbar .right {\n margin-left: auto;\n}\n.md .subnavbar .right:first-child {\n right: 16px;\n}\n.md .subnavbar a.link {\n justify-content: center;\n padding: 0 12px;\n}\n.md .subnavbar a.icon-only {\n flex-shrink: 0;\n padding: 0 12px;\n}\n.md .subnavbar-inner > a.link:first-child {\n margin-left: calc(-1 * var(--f7-subnavbar-inner-padding-left));\n}\n.md .subnavbar-inner > a.link:last-child {\n margin-right: calc(-1 * var(--f7-subnavbar-inner-padding-right));\n}\n/* === Content Block === */\n:root {\n --f7-block-padding-horizontal: 16px;\n --f7-block-padding-vertical: 16px;\n --f7-block-font-size: inherit;\n --f7-block-header-margin: 10px;\n --f7-block-footer-margin: 10px;\n --f7-block-header-font-size: 14px;\n --f7-block-footer-font-size: 14px;\n --f7-block-title-text-transform: none;\n --f7-block-title-white-space: nowrap;\n --f7-block-title-medium-text-transform: none;\n --f7-block-title-large-text-transform: none;\n --f7-block-inset-side-margin: 16px;\n}\n:root .dark,\n:root.dark {\n --f7-block-outline-border-color: rgba(255, 255, 255, 0.15);\n}\n.ios {\n --f7-block-text-color: inherit;\n --f7-block-margin-vertical: 35px;\n --f7-block-outline-border-color: rgba(0, 0, 0, 0.22);\n --f7-block-title-font-size: 16px;\n --f7-block-title-font-weight: 600;\n --f7-block-title-line-height: 20px;\n --f7-block-title-margin-bottom: 10px;\n --f7-block-title-medium-font-size: 22px;\n --f7-block-title-medium-font-weight: bold;\n --f7-block-title-medium-line-height: 1.4;\n --f7-block-title-large-font-size: 30px;\n --f7-block-title-large-font-weight: bold;\n --f7-block-title-large-line-height: 1.3;\n --f7-block-inset-border-radius: 8px;\n --f7-block-title-text-color: #000;\n --f7-block-strong-text-color: #000;\n --f7-block-header-text-color: rgba(0, 0, 0, 0.45);\n --f7-block-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-block-strong-bg-color: #fff;\n --f7-block-title-medium-text-color: #000;\n --f7-block-title-large-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-block-title-text-color: #fff;\n --f7-block-header-text-color: rgba(255, 255, 255, 0.55);\n --f7-block-footer-text-color: rgba(255, 255, 255, 0.55);\n --f7-block-strong-text-color: #fff;\n --f7-block-strong-bg-color: #1c1c1d;\n --f7-block-title-medium-text-color: #fff;\n --f7-block-title-large-text-color: #fff;\n}\n.md {\n --f7-block-margin-vertical: 32px;\n --f7-block-title-font-size: inherit;\n --f7-block-title-font-weight: 500;\n --f7-block-title-line-height: 16px;\n --f7-block-title-margin-bottom: 16px;\n --f7-block-title-medium-font-size: 16px;\n --f7-block-title-medium-font-weight: 500;\n --f7-block-title-medium-line-height: 1.3;\n --f7-block-title-large-font-size: 22px;\n --f7-block-title-large-font-weight: 500;\n --f7-block-title-large-line-height: 1.2;\n --f7-block-inset-border-radius: 16px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-block-text-color: var(--f7-md-on-surface);\n --f7-block-strong-text-color: var(--f7-md-on-surface);\n --f7-block-outline-border-color: var(--f7-md-outline);\n --f7-block-title-text-color: var(--f7-theme-color);\n --f7-block-title-medium-text-color: var(--f7-theme-color);\n --f7-block-title-large-text-color: var(--f7-theme-color);\n --f7-block-strong-bg-color: var(--f7-md-surface-1);\n --f7-block-header-text-color: var(--f7-md-on-surface-variant);\n --f7-block-footer-text-color: var(--f7-md-on-surface-variant);\n}\n.block {\n box-sizing: border-box;\n position: relative;\n z-index: 1;\n color: var(--f7-block-text-color);\n margin: var(--f7-block-margin-vertical) 0;\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));\n font-size: var(--f7-block-font-size);\n}\n.block > h1:first-child,\n.block > h2:first-child,\n.block > h3:first-child,\n.block > h4:first-child,\n.block > p:first-child {\n margin-top: 0;\n}\n.block > h1:last-child,\n.block > h2:last-child,\n.block > h3:last-child,\n.block > h4:last-child,\n.block > p:last-child {\n margin-bottom: 0;\n}\n.block-strong,\n.ios .block-strong-ios,\n.md .block-strong-md {\n color: var(--f7-block-strong-text-color);\n padding-top: var(--f7-block-padding-vertical);\n padding-bottom: var(--f7-block-padding-vertical);\n background-color: var(--f7-block-strong-bg-color);\n}\n.block-outline:not(.inset):before,\n.ios .block-outline-ios:not(.inset):not(.inset-ios):before,\n.md .block-outline-md:not(.inset):not(.inset-md):before {\n content: '';\n position: absolute;\n background-color: var(--f7-block-outline-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.block-outline:not(.inset):after,\n.ios .block-outline-ios:not(.inset):not(.inset-ios):after,\n.md .block-outline-md:not(.inset):not(.inset-md):after {\n content: '';\n position: absolute;\n background-color: var(--f7-block-outline-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.block-outline.inset,\n.ios .block-outline-ios.inset,\n.ios .block-outline-ios.inset-ios,\n.md .block-outline-md.inset,\n.md .block-outline-md.inset-md {\n border: 1px solid var(--f7-block-outline-border-color);\n}\n.block-title {\n position: relative;\n overflow: hidden;\n margin: 0;\n white-space: var(--f7-block-title-white-space);\n text-overflow: ellipsis;\n text-transform: var(--f7-block-title-text-transform);\n color: var(--f7-block-title-text-color);\n font-size: var(--f7-block-title-font-size, inherit);\n font-weight: var(--f7-block-title-font-weight);\n line-height: var(--f7-block-title-line-height);\n margin-top: var(--f7-block-margin-vertical);\n margin-bottom: var(--f7-block-title-margin-bottom);\n margin-left: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));\n margin-right: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));\n}\n.block-title + .list,\n.block-title + .block,\n.block-title + .card,\n.block-title + .timeline,\n.block-title + .block-header {\n margin-top: 0px;\n}\n.block-title-medium {\n font-size: var(--f7-block-title-medium-font-size);\n text-transform: var(--f7-block-title-medium-text-transform);\n color: var(--f7-block-title-medium-text-color);\n font-weight: var(--f7-block-title-medium-font-weight);\n line-height: var(--f7-block-title-medium-line-height);\n}\n.block-title-large {\n font-size: var(--f7-block-title-large-font-size);\n text-transform: var(--f7-block-title-large-text-transform);\n color: var(--f7-block-title-large-text-color);\n font-weight: var(--f7-block-title-large-font-weight);\n line-height: var(--f7-block-title-large-line-height);\n}\n.block > .block-title:first-child,\n.list > .block-title:first-child {\n margin-top: 0;\n margin-left: 0;\n margin-right: 0;\n}\n.block-header {\n color: var(--f7-block-header-text-color);\n font-size: var(--f7-block-header-font-size);\n margin-bottom: var(--f7-block-header-margin);\n margin-top: var(--f7-block-margin-vertical);\n}\n.block-header + .list,\n.block-header + .block,\n.block-header + .card,\n.block-header + .timeline {\n margin-top: var(--f7-block-header-margin);\n}\n.block-footer {\n color: var(--f7-block-footer-text-color);\n font-size: var(--f7-block-footer-font-size);\n margin-top: var(--f7-block-footer-margin);\n margin-bottom: var(--f7-block-margin-vertical);\n}\n.block-footer,\n.block-header {\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));\n}\n.block-footer ul:first-child,\n.block-header ul:first-child,\n.block-footer p:first-child,\n.block-header p:first-child,\n.block-footer h1:first-child,\n.block-header h1:first-child,\n.block-footer h2:first-child,\n.block-header h2:first-child,\n.block-footer h3:first-child,\n.block-header h3:first-child,\n.block-footer h4:first-child,\n.block-header h4:first-child {\n margin-top: 0;\n}\n.block-footer ul:last-child,\n.block-header ul:last-child,\n.block-footer p:last-child,\n.block-header p:last-child,\n.block-footer h1:last-child,\n.block-header h1:last-child,\n.block-footer h2:last-child,\n.block-header h2:last-child,\n.block-footer h3:last-child,\n.block-header h3:last-child,\n.block-footer h4:last-child,\n.block-header h4:last-child {\n margin-bottom: 0;\n}\n.block-footer ul:first-child:last-child,\n.block-header ul:first-child:last-child,\n.block-footer p:first-child:last-child,\n.block-header p:first-child:last-child,\n.block-footer h1:first-child:last-child,\n.block-header h1:first-child:last-child,\n.block-footer h2:first-child:last-child,\n.block-header h2:first-child:last-child,\n.block-footer h3:first-child:last-child,\n.block-header h3:first-child:last-child,\n.block-footer h4:first-child:last-child,\n.block-header h4:first-child:last-child {\n margin-top: 0;\n margin-bottom: 0;\n}\n.list .block-header,\n.block .block-header,\n.card .block-header,\n.timeline .block-header {\n margin-top: 0;\n}\n.list .block-footer,\n.block .block-footer,\n.card .block-footer,\n.timeline .block-footer {\n margin-bottom: 0;\n}\n.list + .block-footer,\n.block + .block-footer,\n.card + .block-footer,\n.timeline + .block-footer {\n margin-top: calc(-1 * (var(--f7-block-margin-vertical) - var(--f7-block-footer-margin)));\n}\n.block + .block-footer {\n margin-top: calc(-1 * (var(--f7-block-margin-vertical) - var(--f7-block-footer-margin)));\n margin-bottom: var(--f7-block-margin-vertical);\n}\n.block .block-header,\n.block .block-footer {\n padding: 0;\n}\n.block.inset,\n.ios .block.inset-ios,\n.md .block.inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n}\n.block-strong.inset:before,\n.ios .block-strong-ios.inset:before,\n.md .block-strong-md.inset:before,\n.ios .block-strong.inset-ios:before,\n.md .block-strong.inset-md:before,\n.ios .block-strong-ios.inset-ios:before,\n.md .block-strong-md.inset-md:before,\n.block-strong.inset:after,\n.ios .block-strong-ios.inset:after,\n.md .block-strong-md.inset:after,\n.ios .block-strong.inset-ios:after,\n.md .block-strong.inset-md:after,\n.ios .block-strong-ios.inset-ios:after,\n.md .block-strong-md.inset-md:after {\n display: none !important;\n}\n@media (min-width: 480px) {\n .block.xsmall-inset,\n .ios .block.xsmall-inset-ios,\n .md .block.xsmall-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.xsmall-inset:before,\n .ios .block.xsmall-inset-ios:before,\n .md .block.xsmall-inset-md:before,\n .block.xsmall-inset:after,\n .ios .block.xsmall-inset-ios:after,\n .md .block.xsmall-inset-md:after {\n display: none !important;\n }\n .block.xsmall-inset.block-outline,\n .ios .block.xsmall-inset-ios.block-outline,\n .ios .block.xsmall-inset-ios.block-outline-ios,\n .md .block.xsmall-inset-md.block-outline,\n .md .block.xsmall-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 568px) {\n .block.small-inset,\n .ios .block.small-inset-ios,\n .md .block.small-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.small-inset:before,\n .ios .block.small-inset-ios:before,\n .md .block.small-inset-md:before,\n .block.small-inset:after,\n .ios .block.small-inset-ios:after,\n .md .block.small-inset-md:after {\n display: none !important;\n }\n .block.small-inset.block-outline,\n .ios .block.small-inset-ios.block-outline,\n .ios .block.small-inset-ios.block-outline-ios,\n .md .block.small-inset-md.block-outline,\n .md .block.small-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 768px) {\n .block.medium-inset,\n .ios .block.medium-inset-ios,\n .md .block.medium-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.medium-inset:before,\n .ios .block.medium-inset-ios:before,\n .md .block.medium-inset-md:before,\n .block.medium-inset:after,\n .ios .block.medium-inset-ios:after,\n .md .block.medium-inset-md:after {\n display: none !important;\n }\n .block.medium-inset.block-outline,\n .ios .block.medium-inset-ios.block-outline,\n .ios .block.medium-inset-ios.block-outline-ios,\n .md .block.medium-inset-md.block-outline,\n .md .block.medium-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 1024px) {\n .block.large-inset,\n .ios .block.large-inset-ios,\n .md .block.large-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.large-inset:before,\n .ios .block.large-inset-ios:before,\n .md .block.large-inset-md:before,\n .block.large-inset:after,\n .ios .block.large-inset-ios:after,\n .md .block.large-inset-md:after {\n display: none !important;\n }\n .block.large-inset.block-outline,\n .ios .block.large-inset-ios.block-outline,\n .ios .block.large-inset-ios.block-outline-ios,\n .md .block.large-inset-md.block-outline,\n .md .block.large-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 1200px) {\n .block.xlarge-inset,\n .ios .block.xlarge-inset-ios,\n .md .block.xlarge-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.xlarge-inset:before,\n .ios .block.xlarge-inset-ios:before,\n .md .block.xlarge-inset-md:before,\n .block.xlarge-inset:after,\n .ios .block.xlarge-inset-ios:after,\n .md .block.xlarge-inset-md:after {\n display: none !important;\n }\n .block.xlarge-inset.block-outline,\n .ios .block.xlarge-inset-ios.block-outline,\n .ios .block.xlarge-inset-ios.block-outline-ios,\n .md .block.xlarge-inset-md.block-outline,\n .md .block.xlarge-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n/* === List View === */\n:root {\n --f7-list-inset-side-margin: 16px;\n --f7-list-item-padding-horizontal: 16px;\n --f7-list-item-padding-vertical: 8px;\n --f7-list-media-item-padding-horizontal: 16px;\n --f7-list-item-text-max-lines: 2;\n --f7-list-chevron-icon-font-size: 20px;\n --f7-list-item-media-margin: 16px;\n --f7-list-item-title-font-size: inherit;\n --f7-list-item-title-font-weight: 400;\n --f7-list-item-title-line-height: inherit;\n --f7-list-item-title-white-space: nowrap;\n --f7-list-item-subtitle-font-weight: 400;\n --f7-list-item-subtitle-line-height: inherit;\n --f7-list-item-text-font-weight: 400;\n --f7-list-item-after-font-weight: 400;\n --f7-list-item-after-line-height: inherit;\n --f7-list-item-header-font-size: 12px;\n --f7-list-item-header-font-weight: 400;\n --f7-list-item-header-line-height: 1.2;\n --f7-list-item-footer-font-size: 12px;\n --f7-list-item-footer-font-weight: 400;\n --f7-list-item-footer-line-height: 1.2;\n /*\n --f7-list-button-text-color: var(--f7-theme-color);\n */\n --f7-list-button-font-size: inherit;\n --f7-list-button-font-weight: 400;\n --f7-list-button-text-align: center;\n --f7-list-group-title-line-height: inherit;\n --f7-menu-list-font-size: 14px;\n --f7-menu-list-item-title-font-size: 14px;\n --f7-menu-list-item-title-font-weight: 500;\n --f7-menu-list-item-subtitle-font-size: 14px;\n --f7-menu-list-item-text-font-size: 14px;\n --f7-menu-list-item-after-font-size: 14px;\n --f7-list-outline-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-chevron-icon-color: rgba(0, 0, 0, 0.2);\n}\n:root .dark,\n:root.dark {\n --f7-list-button-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-outline-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-group-title-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-chevron-icon-color: rgba(255, 255, 255, 0.3);\n}\n.ios {\n --f7-list-in-list-padding-left: 30px;\n --f7-list-inset-border-radius: 8px;\n --f7-list-margin-vertical: 35px;\n --f7-list-font-size: 17px;\n --f7-list-chevron-icon-area: 20px;\n --f7-list-item-title-text-color: inherit;\n --f7-list-item-subtitle-text-color: inherit;\n --f7-list-link-pressed-bg-color: rgba(0, 0, 0, 0.15);\n --f7-list-item-subtitle-font-size: 15px;\n --f7-list-item-text-font-size: 15px;\n --f7-list-item-text-line-height: 21px;\n --f7-list-item-after-font-size: inherit;\n --f7-list-item-after-padding: 5px;\n --f7-list-item-min-height: 44px;\n --f7-list-item-media-icons-margin: 5px;\n --f7-list-media-item-padding-vertical: 10px;\n --f7-list-media-item-title-font-weight: 600;\n --f7-list-button-border-color: rgba(0, 0, 0, 0.22);\n /*\n --f7-list-button-pressed-bg-color: rgba(var(--f7-theme-color-rgb), .15);\n */\n --f7-list-group-title-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-group-title-height: 31px;\n --f7-list-group-title-font-size: inherit;\n --f7-list-group-title-font-weight: 400;\n --f7-menu-list-offset: 8px;\n --f7-menu-list-border-radius: 8px;\n --f7-menu-list-item-bg-color: transparent;\n --f7-menu-list-item-text-color: inherit;\n --f7-menu-list-item-min-height: 44px;\n --f7-list-item-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-outline-inset-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-strong-bg-color: #fff;\n --f7-list-item-after-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-item-header-text-color: inherit;\n --f7-list-item-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-item-text-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-group-title-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-group-title-bg-color: #f7f7f7;\n --f7-menu-list-item-selected-text-color: var(--f7-theme-color);\n --f7-menu-list-item-selected-bg-color: rgba(var(--f7-theme-color-rgb), 0.15);\n}\n.ios .dark,\n.ios.dark {\n --f7-list-item-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-outline-inset-color: rgba(255, 255, 255, 0.15);\n --f7-list-strong-bg-color: #1c1c1d;\n --f7-list-item-after-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-item-header-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-item-footer-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-item-text-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-group-title-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-group-title-bg-color: #232323;\n --f7-list-link-pressed-bg-color: rgba(255, 255, 255, 0.08);\n --f7-menu-list-item-selected-text-color: inherit;\n --f7-menu-list-item-selected-bg-color: var(--f7-theme-color);\n}\n.md {\n --f7-list-in-list-padding-left: 24px;\n --f7-list-inset-border-radius: 16px;\n --f7-list-margin-vertical: 32px;\n --f7-list-font-size: 16px;\n --f7-list-chevron-icon-area: 26px;\n --f7-list-item-subtitle-font-size: 14px;\n --f7-list-item-text-font-size: 14px;\n --f7-list-item-text-line-height: 20px;\n --f7-list-item-after-font-size: 14px;\n --f7-list-item-after-padding: 8px;\n --f7-list-item-min-height: 48px;\n --f7-list-item-media-icons-margin: 8px;\n --f7-list-media-item-padding-vertical: 12px;\n --f7-list-media-item-title-font-weight: 500;\n --f7-list-button-border-color: transparent;\n /*\n --f7-list-button-pressed-bg-color: transparent;\n */\n --f7-list-group-title-border-color: transparent;\n --f7-list-group-title-height: 48px;\n --f7-list-group-title-font-size: 16px;\n --f7-list-group-title-font-weight: 400;\n --f7-menu-list-offset: 16px;\n --f7-menu-list-border-radius: 999px;\n --f7-menu-list-item-min-height: 56px;\n --f7-list-link-pressed-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-list-outline-inset-border-color: var(--f7-md-outline);\n --f7-list-item-border-color: var(--f7-md-outline);\n --f7-list-item-title-text-color: var(--f7-md-on-surface);\n --f7-list-item-subtitle-text-color: var(--f7-md-on-surface);\n --f7-list-group-title-bg-color: var(--f7-md-surface-2);\n --f7-list-group-title-text-color: var(--f7-md-on-surface-variant);\n --f7-list-strong-bg-color: var(--f7-md-surface-1);\n --f7-list-item-after-text-color: var(--f7-md-on-surface-variant);\n --f7-list-item-text-text-color: var(--f7-md-on-surface-variant);\n --f7-list-item-header-text-color: var(--f7-md-on-surface-variant);\n --f7-list-item-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-menu-list-item-text-color: var(--f7-md-on-surface-variant);\n --f7-menu-list-item-bg-color: var(--f7-md-surface-1);\n --f7-menu-list-item-selected-text-color: var(--f7-md-on-secondary-container);\n --f7-menu-list-item-selected-bg-color: var(--f7-md-secondary-container);\n}\n:root {\n --f7-list-chevron-icon-left: 'chevron_left';\n --f7-list-chevron-icon-right: 'chevron_right';\n}\n.list {\n position: relative;\n z-index: 1;\n font-size: var(--f7-list-font-size);\n margin: var(--f7-list-margin-vertical) 0;\n}\n.list-strong ul,\n.ios .list-strong-ios ul,\n.md .list-strong-md ul {\n background: var(--f7-list-strong-bg-color);\n}\n.list-outline ul:before,\n.ios .list-outline-ios ul:before,\n.md .list-outline-md ul:before {\n content: '';\n position: absolute;\n background-color: var(--f7-list-outline-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-outline ul:after,\n.ios .list-outline-ios ul:after,\n.md .list-outline-md ul:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-outline-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-outline.inset,\n.ios .list-outline-ios.inset,\n.ios .list-outline-ios.inset-ios,\n.md .list-outline-md.inset,\n.md .list-outline-md.inset-md {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n}\n.list ul {\n list-style: none;\n margin: 0;\n padding: 0;\n position: relative;\n}\n.list ul ul {\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-list-in-list-padding-left));\n}\n.list ul ul:before,\n.list ul ul:after {\n display: none !important;\n}\n.list li {\n position: relative;\n box-sizing: border-box;\n}\n.list .item-media {\n display: flex;\n flex-shrink: 0;\n flex-wrap: nowrap;\n align-items: center;\n box-sizing: border-box;\n padding-bottom: var(--f7-list-item-padding-vertical);\n padding-top: var(--f7-list-item-padding-vertical);\n position: relative;\n}\n.list .item-media + .item-inner {\n margin-left: var(--f7-list-item-media-margin);\n}\n.list .item-media i + i,\n.list .item-media i + img {\n margin-left: var(--f7-list-item-media-icons-margin);\n}\n.list .item-after {\n padding-left: var(--f7-list-item-after-padding);\n}\n.list .item-inner {\n position: relative;\n width: 100%;\n min-width: 0;\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n align-self: stretch;\n padding-top: var(--f7-list-item-padding-vertical);\n padding-bottom: var(--f7-list-item-padding-vertical);\n min-height: calc(var(--f7-list-item-min-height));\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.list .item-title {\n min-width: 0;\n flex-shrink: 1;\n white-space: var(--f7-list-item-title-white-space);\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n font-size: var(--f7-list-item-title-font-size);\n font-weight: var(--f7-list-item-title-font-weight);\n color: var(--f7-list-item-title-text-color);\n line-height: var(--f7-list-item-title-line-height);\n}\n.list .item-after {\n white-space: nowrap;\n flex-shrink: 0;\n display: flex;\n font-size: var(--f7-list-item-after-font-size);\n font-weight: var(--f7-list-item-after-font-weight);\n color: var(--f7-list-item-after-text-color);\n line-height: var(--f7-list-item-after-line-height);\n margin-left: auto;\n}\n.list .item-header,\n.list .item-footer {\n white-space: normal;\n}\n.list .item-header {\n color: var(--f7-list-item-header-text-color);\n font-size: var(--f7-list-item-header-font-size);\n font-weight: var(--f7-list-item-header-font-weight);\n line-height: var(--f7-list-item-header-line-height);\n}\n.list .item-footer {\n color: var(--f7-list-item-footer-text-color);\n font-size: var(--f7-list-item-footer-font-size);\n font-weight: var(--f7-list-item-footer-font-weight);\n line-height: var(--f7-list-item-footer-line-height);\n}\n.list .item-link,\n.list label.item-content,\n.list .list-button {\n transition-duration: 300ms;\n transition-property: background-color, color;\n position: relative;\n overflow: hidden;\n z-index: 0;\n cursor: pointer;\n}\n.list .item-link,\n.list .list-button {\n display: block;\n}\n.list .item-link,\n.list label.item-content {\n color: inherit;\n}\n.list .item-link.active-state,\n.list label.item-content.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.list .item-link .item-inner {\n padding-right: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.list .item-content {\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n min-height: calc(var(--f7-list-item-min-height));\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.list .item-subtitle {\n position: relative;\n overflow: hidden;\n white-space: nowrap;\n max-width: 100%;\n text-overflow: ellipsis;\n font-size: var(--f7-list-item-subtitle-font-size);\n font-weight: var(--f7-list-item-subtitle-font-weight);\n color: var(--f7-list-item-subtitle-text-color);\n line-height: var(--f7-list-item-subtitle-line-height);\n}\n.list .item-text {\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n /* autoprefixer: ignore next */\n -webkit-line-clamp: var(--f7-list-item-text-max-lines);\n /* autoprefixer: ignore next */\n -webkit-box-orient: vertical;\n display: -webkit-box;\n font-size: var(--f7-list-item-text-font-size);\n font-weight: var(--f7-list-item-text-font-weight);\n color: var(--f7-list-item-text-text-color);\n line-height: var(--f7-list-item-text-line-height);\n max-height: calc(var(--f7-list-item-text-line-height) * var(--f7-list-item-text-max-lines));\n}\n.list .item-title-row {\n position: relative;\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n}\n.list .item-title-row .item-after {\n align-self: center;\n}\n.list li:last-child .list-button:after {\n display: none !important;\n}\n.list li:last-child > .item-inner:after,\n.list li:last-child li:last-child > .item-inner:after,\n.list li:last-child > .item-content > .item-inner:after,\n.list li:last-child li:last-child > .item-content > .item-inner:after,\n.list li:last-child > .swipeout-content > .item-content > .item-inner:after,\n.list li:last-child li:last-child > .swipeout-content > .item-content > .item-inner:after,\n.list li:last-child > .item-link > .item-content > .item-inner:after,\n.list li:last-child li:last-child > .item-link > .item-content > .item-inner:after {\n display: none !important;\n}\n.list li li:last-child .item-inner:after,\n.list li:last-child li .item-inner:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-button {\n --f7-touch-ripple-color: var(--f7-link-touch-ripple-color, rgba(var(--f7-theme-color-rgb), 0.25));\n padding: 0 var(--f7-list-item-padding-horizontal);\n line-height: var(--f7-list-item-min-height);\n color: var(--f7-list-button-text-color, var(--f7-theme-color));\n font-size: var(--f7-list-button-font-size);\n font-weight: var(--f7-list-button-font-weight);\n text-align: var(--f7-list-button-text-align);\n}\n.ios .list-button.active-state {\n background-color: var(--f7-list-button-pressed-bg-color, rgba(var(--f7-theme-color-rgb), 0.15));\n}\n.md .list-button.active-state {\n background-color: var(--f7-list-button-pressed-bg-color, transparent);\n}\n.list-dividers .list-button:after,\n.ios .list-dividers-ios .list-button:after,\n.md .list-dividers-md .list-button:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-button-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-button[class*='color-'] {\n --f7-list-button-text-color: var(--f7-theme-color);\n}\n.simple-list li {\n position: relative;\n white-space: nowrap;\n text-overflow: ellipsis;\n max-width: 100%;\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n align-items: center;\n align-content: center;\n line-height: var(--f7-list-item-min-height);\n height: var(--f7-list-item-min-height);\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.simple-list li:after {\n left: var(--f7-list-item-padding-horizontal);\n width: auto;\n left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n right: 0;\n}\n.simple-list li:last-child:after {\n display: none !important;\n}\n.links-list li {\n z-index: 1;\n}\n.links-list a {\n transition-duration: 300ms;\n transition-property: background-color;\n display: block;\n position: relative;\n overflow: hidden;\n display: flex;\n align-items: center;\n align-content: center;\n justify-content: space-between;\n box-sizing: border-box;\n white-space: nowrap;\n text-overflow: ellipsis;\n max-width: 100%;\n height: var(--f7-list-item-min-height);\n color: inherit;\n}\n.links-list a .ripple-wave {\n z-index: 0;\n}\n.links-list a:after {\n width: auto;\n}\n.links-list a.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.links-list a {\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.links-list a:after {\n left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n right: 0;\n}\n.links-list li:last-child a:after {\n display: none !important;\n}\n.list-dividers.simple-list li:after,\n.ios .list-dividers-ios.simple-list li:after,\n.md .list-dividers-md.simple-list li:after,\n.list-dividers.links-list a:after,\n.ios .list-dividers-ios.links-list a:after,\n.md .list-dividers-md.links-list a:after,\n.list-dividers .item-inner:after,\n.ios .list-dividers-ios .item-inner:after,\n.md .list-dividers-md .item-inner:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li > .item-link,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item > .item-link {\n margin-left: calc(var(--f7-list-item-padding-horizontal) / 2);\n margin-right: calc(var(--f7-list-item-padding-horizontal) / 2);\n border-radius: 16px;\n}\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li > .item-link > .item-content,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item > .item-link > .item-content {\n margin-left: 0;\n margin-right: 0;\n}\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content {\n padding-left: calc(var(--f7-list-item-padding-horizontal) / 2 + var(--f7-safe-area-left));\n}\n.media-list,\nli.media-item {\n --f7-list-item-padding-vertical: var(--f7-list-media-item-padding-vertical);\n --f7-list-item-padding-horizontal: var(--f7-list-media-item-padding-horizontal);\n}\n.media-list .item-title,\nli.media-item .item-title {\n font-weight: var(--f7-list-media-item-title-font-weight, var(--f7-list-item-title-font-weight, inherit));\n}\n.media-list .item-inner,\nli.media-item .item-inner {\n display: block;\n align-self: stretch;\n}\n.media-list .item-media img,\nli.media-item .item-media img {\n display: block;\n}\n.media-list .item-link .item-inner,\nli.media-item .item-link .item-inner {\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.media-list .item-link .item-title-row,\nli.media-item .item-link .item-title-row {\n padding-right: calc(var(--f7-list-chevron-icon-area));\n}\n.media-list.chevron-center .item-link .item-inner,\n.media-list .chevron-center .item-link .item-inner,\n.media-list .item-link.chevron-center .item-inner,\nli.media-item.chevron-center .item-link .item-inner,\nli.media-item .item-link.chevron-center .item-inner,\nli.media-item .chevron-center .item-link .item-inner {\n padding-right: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.media-list.chevron-center .item-title-row,\n.media-list .chevron-center .item-title-row,\nli.media-item.chevron-center .item-title-row,\nli.media-item .chevron-center .item-title-row {\n padding-right: 0;\n}\n.list .item-link .item-inner:before,\n.links-list a:before,\n.media-list .item-link .item-title-row:before,\nli.media-item .item-link .item-title-row:before,\n.media-list.chevron-center .item-link .item-inner:before,\n.media-list .chevron-center .item-link .item-inner:before,\n.media-list .item-link.chevron-center .item-inner:before,\nli.media-item.chevron-center .item-link .item-inner:before,\nli.media-item .chevron-center .item-link .item-inner:before,\nli.media-item .item-link.chevron-center .item-inner:before {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n top: 50%;\n width: 8px;\n height: 14px;\n margin-top: -7px;\n font-size: var(--f7-list-chevron-icon-font-size);\n line-height: 14px;\n color: var(--f7-list-chevron-icon-color);\n pointer-events: none;\n right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n content: var(--f7-list-chevron-icon-right);\n}\n.media-list.chevron-center .item-title-row:before,\n.media-list .chevron-center .item-title-row:before,\nli.media-item.chevron-center .item-title-row:before,\nli.media-item .chevron-center .item-title-row:before {\n display: none;\n}\n.media-list .item-link .item-inner:before,\nli.media-item .item-link .item-inner:before {\n display: none;\n}\n.media-list .item-link .item-title-row:before,\nli.media-item .item-link .item-title-row:before {\n right: 0;\n}\n.list-group ul:after,\n.list-group ul:before {\n z-index: 25 !important;\n}\n.list-group + .list-group ul:before {\n display: none !important;\n}\nli.list-group-title,\n.list-group-title {\n margin-top: -1px;\n white-space: nowrap;\n position: relative;\n max-width: 100%;\n text-overflow: ellipsis;\n overflow: hidden;\n z-index: 15;\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n box-sizing: border-box;\n display: flex;\n align-items: center;\n align-content: center;\n height: var(--f7-list-group-title-height);\n color: var(--f7-list-group-title-text-color);\n font-size: var(--f7-list-group-title-font-size);\n font-weight: var(--f7-list-group-title-font-weight);\n background-color: var(--f7-list-group-title-bg-color);\n line-height: var(--f7-list-group-title-line-height);\n}\nli.list-group-title:before,\n.list-group-title:before {\n content: '';\n position: absolute;\n background-color: var(--f7-list-group-title-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\nli.list-group-title:after,\n.list-group-title:after {\n display: none !important;\n}\n.list-group > .list-group-title,\n.list-group > ul > .list-group-title {\n top: 0;\n margin-top: 0;\n position: sticky;\n z-index: 20;\n}\n.page-with-navbar-large .list-group > .list-group-title,\n.page-with-navbar-large .list-group > ul > .list-group-title {\n top: calc(-1 * var(--f7-navbar-large-title-height));\n}\n.list.inset,\n.ios .list.inset-ios,\n.md .list.inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n}\n.list.inset .block-title,\n.ios .list.inset-ios .block-title,\n.md .list.inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n}\n.list.inset ul,\n.ios .list.inset-ios ul,\n.md .list.inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n}\n.list.inset ul:before,\n.ios .list.inset-ios ul:before,\n.md .list.inset-md ul:before,\n.list.inset ul:after,\n.ios .list.inset-ios ul:after,\n.md .list.inset-md ul:after {\n display: none !important;\n}\n.list.inset li.swipeout:first-child,\n.ios .list.inset-ios li.swipeout:first-child,\n.md .list.inset-md li.swipeout:first-child,\n.list.inset li:first-child > a,\n.ios .list.inset-ios li:first-child > a,\n.md .list.inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n}\n.list.inset li.swipeout:last-child,\n.ios .list.inset-ios li.swipeout:last-child,\n.md .list.inset-md li.swipeout:last-child,\n.list.inset li:last-child > a,\n.ios .list.inset-ios li:last-child > a,\n.md .list.inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n}\n.list.inset li.swipeout:first-child:last-child,\n.ios .list.inset-ios li.swipeout:first-child:last-child,\n.md .list.inset-md li.swipeout:first-child:last-child,\n.list.inset li:first-child:last-child > a,\n.ios .list.inset-ios li:first-child:last-child > a,\n.md .list.inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n}\n@media (min-width: 480px) {\n .list.xsmall-inset,\n .ios .list.xsmall-inset-ios,\n .md .list.xsmall-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.xsmall-inset .block-title,\n .ios .list.xsmall-inset-ios .block-title,\n .md .list.xsmall-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.xsmall-inset ul,\n .ios .list.xsmall-inset-ios ul,\n .md .list.xsmall-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xsmall-inset ul:before,\n .ios .list.xsmall-inset-ios ul:before,\n .md .list.xsmall-inset-md ul:before,\n .list.xsmall-inset ul:after,\n .ios .list.xsmall-inset-ios ul:after,\n .md .list.xsmall-inset-md ul:after {\n display: none !important;\n }\n .list.xsmall-inset li:first-child > a,\n .ios .list.xsmall-inset-ios li:first-child > a,\n .md .list.xsmall-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.xsmall-inset li:last-child > a,\n .ios .list.xsmall-inset-ios li:last-child > a,\n .md .list.xsmall-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.xsmall-inset li:first-child:last-child > a,\n .ios .list.xsmall-inset-ios li:first-child:last-child > a,\n .md .list.xsmall-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xsmall-inset.list-outline ul,\n .ios .list.xsmall-inset-ios.list-outline ul,\n .ios .list.xsmall-inset-ios.list-outline-ios ul,\n .md .list.xsmall-inset-md.list-outline ul,\n .md .list.xsmall-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 568px) {\n .list.small-inset,\n .ios .list.small-inset-ios,\n .md .list.small-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.small-inset .block-title,\n .ios .list.small-inset-ios .block-title,\n .md .list.small-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.small-inset ul,\n .ios .list.small-inset-ios ul,\n .md .list.small-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.small-inset ul:before,\n .ios .list.small-inset-ios ul:before,\n .md .list.small-inset-md ul:before,\n .list.small-inset ul:after,\n .ios .list.small-inset-ios ul:after,\n .md .list.small-inset-md ul:after {\n display: none !important;\n }\n .list.small-inset li:first-child > a,\n .ios .list.small-inset-ios li:first-child > a,\n .md .list.small-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.small-inset li:last-child > a,\n .ios .list.small-inset-ios li:last-child > a,\n .md .list.small-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.small-inset li:first-child:last-child > a,\n .ios .list.small-inset-ios li:first-child:last-child > a,\n .md .list.small-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.small-inset.list-outline ul,\n .ios .list.small-inset-ios.list-outline ul,\n .ios .list.small-inset-ios.list-outline-ios ul,\n .md .list.small-inset-md.list-outline ul,\n .md .list.small-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 768px) {\n .list.medium-inset,\n .ios .list.medium-inset-ios,\n .md .list.medium-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.medium-inset .block-title,\n .ios .list.medium-inset-ios .block-title,\n .md .list.medium-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.medium-inset ul,\n .ios .list.medium-inset-ios ul,\n .md .list.medium-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.medium-inset ul:before,\n .ios .list.medium-inset-ios ul:before,\n .md .list.medium-inset-md ul:before,\n .list.medium-inset ul:after,\n .ios .list.medium-inset-ios ul:after,\n .md .list.medium-inset-md ul:after {\n display: none !important;\n }\n .list.medium-inset li:first-child > a,\n .ios .list.medium-inset-ios li:first-child > a,\n .md .list.medium-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.medium-inset li:last-child > a,\n .ios .list.medium-inset-ios li:last-child > a,\n .md .list.medium-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.medium-inset li:first-child:last-child > a,\n .ios .list.medium-inset-ios li:first-child:last-child > a,\n .md .list.medium-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.medium-inset.list-outline ul,\n .ios .list.medium-inset-ios.list-outline ul,\n .ios .list.medium-inset-ios.list-outline-ios ul,\n .md .list.medium-inset-md.list-outline ul,\n .md .list.medium-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 1024px) {\n .list.large-inset,\n .ios .list.large-inset-ios,\n .md .list.large-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.large-inset .block-title,\n .ios .list.large-inset-ios .block-title,\n .md .list.large-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.large-inset ul,\n .ios .list.large-inset-ios ul,\n .md .list.large-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.large-inset ul:before,\n .ios .list.large-inset-ios ul:before,\n .md .list.large-inset-md ul:before,\n .list.large-inset ul:after,\n .ios .list.large-inset-ios ul:after,\n .md .list.large-inset-md ul:after {\n display: none !important;\n }\n .list.large-inset li:first-child > a,\n .ios .list.large-inset-ios li:first-child > a,\n .md .list.large-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.large-inset li:last-child > a,\n .ios .list.large-inset-ios li:last-child > a,\n .md .list.large-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.large-inset li:first-child:last-child > a,\n .ios .list.large-inset-ios li:first-child:last-child > a,\n .md .list.large-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.large-inset.list-outline ul,\n .ios .list.large-inset-ios.list-outline ul,\n .ios .list.large-inset-ios.list-outline-ios ul,\n .md .list.large-inset-md.list-outline ul,\n .md .list.large-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 1200px) {\n .list.xlarge-inset,\n .ios .list.xlarge-inset-ios,\n .md .list.xlarge-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.xlarge-inset .block-title,\n .ios .list.xlarge-inset-ios .block-title,\n .md .list.xlarge-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.xlarge-inset ul,\n .ios .list.xlarge-inset-ios ul,\n .md .list.xlarge-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xlarge-inset ul:before,\n .ios .list.xlarge-inset-ios ul:before,\n .md .list.xlarge-inset-md ul:before,\n .list.xlarge-inset ul:after,\n .ios .list.xlarge-inset-ios ul:after,\n .md .list.xlarge-inset-md ul:after {\n display: none !important;\n }\n .list.xlarge-inset li:first-child > a,\n .ios .list.xlarge-inset-ios li:first-child > a,\n .md .list.xlarge-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.xlarge-inset li:last-child > a,\n .ios .list.xlarge-inset-ios li:last-child > a,\n .md .list.xlarge-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.xlarge-inset li:first-child:last-child > a,\n .ios .list.xlarge-inset-ios li:first-child:last-child > a,\n .md .list.xlarge-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xlarge-inset.list-outline ul,\n .ios .list.xlarge-inset-ios.list-outline ul,\n .ios .list.xlarge-inset-ios.list-outline-ios ul,\n .md .list.xlarge-inset-md.list-outline ul,\n .md .list.xlarge-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n.list.no-chevron,\n.list .no-chevron,\n.menu-list {\n --f7-list-chevron-icon-color: transparent;\n --f7-list-chevron-icon-area: 0px;\n}\n.menu-list {\n --f7-list-font-size: var(--f7-menu-list-font-size);\n --f7-list-item-title-font-size: var(--f7-menu-list-item-title-font-size);\n --f7-list-item-title-font-weight: var(--f7-menu-list-item-title-font-weight);\n --f7-list-item-subtitle-font-size: var(--f7-menu-list-item-subtitle-font-size);\n --f7-list-item-text-font-size: var(--f7-menu-list-item-text-font-size);\n --f7-list-item-after-font-size: var(--f7-menu-list-item-after-font-size);\n --f7-list-item-min-height: var(--f7-menu-list-item-min-height);\n}\n.menu-list .item-header,\n.menu-list .item-footer,\n.menu-list .item-title,\n.menu-list .item-after,\n.menu-list .item-text,\n.menu-list .item-subtitle {\n transition-duration: 300ms;\n}\n.menu-list li:not(.list-group-title) {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n.menu-list li:not(.list-group-title):first-child {\n padding-top: 4px;\n}\n.menu-list li:not(.list-group-title):last-child {\n padding-bottom: 4px;\n}\n.menu-list .item-link {\n margin-left: var(--f7-menu-list-offset);\n margin-right: var(--f7-menu-list-offset);\n border-radius: var(--f7-menu-list-border-radius) !important;\n color: var(--f7-menu-list-item-text-color);\n background-color: var(--f7-menu-list-item-bg-color);\n}\n.menu-list .item-inner:after {\n display: none;\n}\n.menu-list .item-selected .item-link,\n.menu-list .item-selected.item-link,\n.menu-list .tab-link-active .item-link,\n.menu-list .tab-link-active.item-link {\n color: var(--f7-menu-list-item-selected-text-color);\n background-color: var(--f7-menu-list-item-selected-bg-color);\n}\n.menu-list .item-selected .item-header,\n.menu-list .item-selected .item-footer,\n.menu-list .item-selected .item-title,\n.menu-list .item-selected .item-after,\n.menu-list .item-selected .item-text,\n.menu-list .item-selected .item-subtitle {\n color: var(--f7-menu-list-item-selected-text-color);\n}\n.ios .item-link.active-state .item-inner:after,\n.ios .list-button.active-state:after,\n.ios .links-list a.active-state:after {\n background-color: transparent;\n}\n.ios .links-list a.active-state,\n.ios .list .item-link.active-state,\n.ios .list .list-button.active-state {\n transition-duration: 0ms;\n}\n.md .menu-list .item-link.active-state {\n background-color: var(--f7-menu-list-item-bg-color);\n}\n/* === Badge === */\n:root {\n --f7-badge-text-color: #fff;\n --f7-badge-bg-color: #8e8e93;\n --f7-badge-in-icon-size: 16px;\n --f7-badge-in-icon-font-size: 10px;\n --f7-badge-font-weight: normal;\n --f7-badge-font-size: 12px;\n}\n.ios {\n --f7-badge-padding: 0 4px;\n --f7-badge-size: 20px;\n --f7-badge-font-weight: 600;\n}\n.md {\n --f7-badge-padding: 2px 6px;\n --f7-badge-size: 20px;\n --f7-badge-font-weight: 500;\n}\n.badge {\n display: inline-flex;\n align-items: center;\n align-content: center;\n justify-content: center;\n color: var(--f7-badge-text-color);\n background: var(--f7-badge-bg-color);\n position: relative;\n box-sizing: border-box;\n text-align: center;\n vertical-align: middle;\n font-weight: var(--f7-badge-font-weight);\n font-size: var(--f7-badge-font-size);\n border-radius: var(--f7-badge-size);\n padding: var(--f7-badge-padding);\n height: var(--f7-badge-size);\n min-width: var(--f7-badge-size);\n}\n.icon .badge,\n.f7-icons .badge,\n.framework7-icons .badge,\n.material-icons .badge {\n position: absolute;\n left: 100%;\n margin-left: -10px;\n top: -2px;\n font-family: var(--f7-font-family);\n --f7-badge-font-size: var(--f7-badge-in-icon-font-size);\n --f7-badge-size: var(--f7-badge-in-icon-size);\n --f7-badge-padding: 0px 2px;\n}\n.badge[class*='color-'] {\n --f7-badge-bg-color: var(--f7-theme-color);\n}\n:root {\n --f7-button-font-size: 14px;\n --f7-button-min-width: 32px;\n --f7-button-bg-color: transparent;\n --f7-button-border-width: 0px;\n /*\n --f7-button-text-color: var(--f7-theme-color);\n --f7-button-pressed-text-color: var(--f7-button-text-color, var(--f7-theme-color));\n --f7-button-border-color: var(--f7-theme-color);\n --f7-button-fill-bg-color: var(--f7-theme-color);\n --f7-button-padding-vertical: 0px;\n */\n --f7-button-raised-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);\n --f7-button-raised-pressed-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16),\n 0 3px 6px rgba(0, 0, 0, 0.23);\n --f7-segmented-raised-divider-color: rgba(0, 0, 0, 0.1);\n --f7-segmented-strong-padding: 2px;\n --f7-segmented-strong-between-buttons: 4px;\n --f7-segmented-strong-button-font-weight: 500;\n --f7-segmented-strong-button-active-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.25);\n --f7-segmented-strong-button-text-color: #000;\n --f7-segmented-strong-button-hover-bg-color: rgba(0, 0, 0, 0.04);\n --f7-segmented-strong-button-active-text-color: #000;\n --f7-segmented-strong-button-active-bg-color: #fff;\n}\n:root .dark,\n:root.dark {\n --f7-segmented-strong-button-hover-bg-color: rgba(255, 255, 255, 0.02);\n --f7-segmented-strong-button-active-bg-color: rgba(255, 255, 255, 0.14);\n --f7-segmented-strong-button-text-color: #fff;\n --f7-segmented-strong-button-active-text-color: #fff;\n}\n.ios {\n --f7-button-fill-text-color: #fff;\n --f7-button-text-transform: uppercase;\n --f7-button-height: 28px;\n --f7-button-padding-horizontal: 10px;\n --f7-button-border-radius: 4px;\n --f7-button-font-weight: 600;\n --f7-button-letter-spacing: 0;\n /*\n --f7-button-outline-border-color: var(--f7-theme-color);\n */\n --f7-button-outline-border-width: 2px;\n /*\n --f7-button-pressed-bg-color: rgba(var(--f7-theme-color-rgb), .15);\n --f7-button-fill-pressed-bg-color: var(--f7-theme-color-tint);\n */\n --f7-button-large-text-transform: uppercase;\n --f7-button-large-height: 44px;\n --f7-button-large-font-size: 17px;\n --f7-button-large-font-weight: 500;\n --f7-button-small-outline-border-width: 2px;\n --f7-button-small-text-transform: uppercase;\n --f7-button-small-height: 26px;\n --f7-button-small-font-size: 13px;\n --f7-button-small-font-weight: 600;\n --f7-segmented-strong-button-text-transform: none;\n --f7-segmented-strong-button-active-font-weight: 600;\n --f7-button-tonal-bg-color: rgba(var(--f7-theme-color-rgb), 0.15);\n --f7-button-tonal-pressed-bg-color: rgba(var(--f7-theme-color-rgb), 0.25);\n --f7-button-tonal-text-color: var(--f7-theme-color);\n --f7-segmented-strong-bg-color: rgba(0, 0, 0, 0.07);\n --f7-segmented-strong-button-pressed-bg-color: rgba(0, 0, 0, 0.07);\n}\n.ios .dark,\n.ios.dark {\n --f7-segmented-strong-bg-color: rgba(255, 255, 255, 0.1);\n --f7-segmented-strong-button-pressed-bg-color: rgba(255, 255, 255, 0.04);\n}\n.md {\n /*\n --f7-button-pressed-bg-color: transparent;\n */\n --f7-button-text-transform: none;\n --f7-button-height: 40px;\n --f7-button-padding-horizontal: 16px;\n --f7-button-border-radius: 8px;\n --f7-button-font-weight: 500;\n --f7-button-letter-spacing: normal;\n --f7-button-outline-border-width: 1px;\n --f7-button-large-text-transform: none;\n --f7-button-large-height: 48px;\n --f7-button-large-font-size: 14px;\n --f7-button-large-font-weight: 500;\n --f7-button-small-text-transform: none;\n --f7-button-small-outline-border-width: 1px;\n --f7-button-small-height: 32px;\n --f7-button-small-font-size: 14px;\n --f7-button-small-font-weight: 500;\n --f7-segmented-strong-button-text-transform: none;\n --f7-segmented-strong-button-active-font-weight: 500;\n --f7-segmented-strong-button-pressed-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-button-fill-pressed-bg-color: transparent;\n --f7-button-fill-text-color: var(--f7-md-on-primary);\n --f7-button-outline-border-color: var(--f7-md-outline);\n --f7-segmented-strong-bg-color: var(--f7-md-surface-variant);\n --f7-button-tonal-bg-color: var(--f7-md-secondary-container);\n --f7-button-tonal-pressed-bg-color: transparent;\n --f7-button-tonal-text-color: var(--f7-md-on-secondary-container);\n}\nbutton {\n -webkit-appearance: none;\n appearance: none;\n width: 100%;\n}\n.button {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n text-decoration: none;\n text-align: center;\n display: flex;\n -webkit-appearance: none;\n appearance: none;\n background: none;\n margin: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n position: relative;\n overflow: hidden;\n font-family: inherit;\n cursor: pointer;\n outline: 0;\n box-sizing: border-box;\n vertical-align: middle;\n justify-content: center;\n align-items: center;\n border: var(--f7-button-border-width, 0px) solid var(--f7-button-border-color, var(--f7-theme-color));\n font-size: var(--f7-button-font-size);\n color: var(--f7-button-text-color, var(--f7-theme-color));\n height: var(--f7-button-height);\n line-height: calc(var(--f7-button-height) - var(--f7-button-border-width, 0) * 2);\n padding: var(--f7-button-padding-vertical, 0px) var(--f7-button-padding-horizontal);\n border-radius: var(--f7-button-border-radius);\n min-width: var(--f7-button-min-width);\n font-weight: var(--f7-button-font-weight);\n letter-spacing: var(--f7-button-letter-spacing);\n text-transform: var(--f7-button-text-transform);\n background-color: var(--f7-button-bg-color);\n box-shadow: var(--f7-button-box-shadow);\n}\n.button.active-state {\n color: var(--f7-button-pressed-text-color, var(--f7-button-text-color, var(--f7-theme-color)));\n}\ninput[type='submit'].button,\ninput[type='button'].button,\ninput[type='reset'].button {\n width: 100%;\n}\n.button > i + span,\n.button > span + span,\n.button > span ~ i {\n margin-left: 4px;\n}\n.subnavbar .button,\n.navbar .button,\n.toolbar .button,\n.searchbar .button {\n color: var(--f7-button-text-color, var(--f7-theme-color));\n}\n.button-round,\n.ios .button-round-ios,\n.md .button-round-md {\n --f7-button-border-radius: var(--f7-button-height);\n}\n.button-fill,\n.ios .button-fill-ios,\n.md .button-fill-md,\n.button-active,\n.button.tab-link-active {\n --f7-button-bg-color: var(--f7-button-fill-bg-color, var(--f7-theme-color));\n --f7-button-text-color: var(--f7-button-fill-text-color, #fff);\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.ios .color-white .button-fill,\n.ios .color-white .ios .button-fill-ios,\n.ios .color-white .md .button-fill-md,\n.ios .color-white .button-active,\n.ios .color-white .button.tab-link-active,\n.ios .button-fill.color-white,\n.ios .ios .button-fill-ios.color-white,\n.ios .md .button-fill-md.color-white,\n.ios .button-active.color-white,\n.ios .button.tab-link-active.color-white {\n --f7-button-text-color: #000;\n}\n.button-fill,\n.ios .button-fill-ios,\n.md .button-fill-md {\n --f7-button-pressed-bg-color: var(--f7-button-fill-pressed-bg-color);\n}\n.button-active,\n.button.tab-link-active {\n --f7-button-pressed-bg-color: var(--f7-button-bg-color);\n}\n.button-outline,\n.ios .button-outline-ios,\n.md .button-outline-md {\n --f7-button-border-color: var(--f7-button-outline-border-color, var(--f7-theme-color));\n --f7-button-border-width: var(--f7-button-outline-border-width);\n}\n.button-tonal,\n.ios .button-tonal-ios,\n.md .button-tonal-md {\n --f7-button-bg-color: var(--f7-button-tonal-bg-color);\n --f7-button-text-color: var(--f7-button-tonal-text-color);\n --f7-button-pressed-bg-color: var(--f7-button-tonal-pressed-bg-color);\n}\n.button-large,\n.ios .button-large-ios,\n.md .button-large-md {\n --f7-button-height: var(--f7-button-large-height);\n --f7-button-font-size: var(--f7-button-large-font-size);\n --f7-button-font-weight: var(--f7-button-large-font-weight);\n --f7-button-text-transform: var(--f7-button-large-text-transform);\n}\n.button-small,\n.ios .button-small-ios,\n.md .button-small-md {\n --f7-button-outline-border-width: var(--f7-button-small-outline-border-width);\n --f7-button-height: var(--f7-button-small-height);\n --f7-button-font-size: var(--f7-button-small-font-size);\n --f7-button-font-weight: var(--f7-button-small-font-weight);\n --f7-button-text-transform: var(--f7-button-small-text-transform);\n}\n.ios .button-small.button-fill,\n.ios .button-small-ios.button-fill,\n.ios .button-small.button-fill-ios {\n --f7-button-border-width: var(--f7-button-small-outline-border-width);\n --f7-button-pressed-text-color: var(--f7-theme-color);\n --f7-button-pressed-bg-color: transparent;\n}\n.segmented {\n align-self: center;\n display: flex;\n flex-wrap: nowrap;\n border-radius: var(--f7-button-border-radius);\n box-shadow: var(--f7-button-box-shadow);\n box-sizing: border-box;\n}\n.segmented .button,\n.segmented button {\n width: 100%;\n flex-shrink: 1;\n min-width: 0;\n border-radius: 0;\n}\n.segmented .button:first-child {\n border-radius: var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius);\n}\n.segmented .button:not(.button-outline):first-child {\n border-left: none;\n}\n.segmented .button.button-outline:nth-child(n + 2) {\n border-left: none;\n}\n.segmented .button:last-child {\n border-radius: 0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0;\n}\n.segmented .button-round:first-child {\n border-radius: var(--f7-button-height) 0 0 var(--f7-button-height);\n}\n.segmented .button-round:last-child {\n border-radius: 0 var(--f7-button-height) var(--f7-button-height) 0;\n}\n.segmented .button:first-child:last-child {\n border-radius: var(--f7-button-border-radius);\n}\n.segmented-raised,\n.ios .segmented-raised-ios,\n.md .segmented-raised-md {\n box-shadow: var(--f7-button-raised-box-shadow);\n}\n.segmented-raised .button:not(.button-outline),\n.ios .segmented-raised-ios .button:not(.button-outline),\n.md .segmented-raised-md .button:not(.button-outline) {\n border-left: 1px solid var(--f7-segmented-raised-divider-color);\n}\n.button-raised,\n.ios .button-raised-ios,\n.md .button-raised-md {\n --f7-button-box-shadow: var(--f7-button-raised-box-shadow);\n}\n.button-raised.active-state,\n.ios .button-raised-ios.active-state,\n.md .button-raised-md.active-state {\n --f7-button-box-shadow: var(--f7-button-raised-pressed-box-shadow);\n}\n.segmented-strong,\n.ios .segmented-strong-ios,\n.md .segmented-strong-md {\n --f7-button-bg-color: transparent;\n --f7-button-hover-bg-color: var(--f7-segmented-strong-button-hover-bg-color);\n --f7-button-text-color: var(--f7-segmented-strong-button-text-color);\n --f7-button-font-weight: var(--f7-segmented-strong-button-font-weight);\n --f7-button-text-transform: var(--f7-segmented-strong-button-text-transform);\n --f7-button-pressed-bg-color: var(--f7-segmented-strong-button-pressed-bg-color);\n position: relative;\n background: var(--f7-segmented-strong-bg-color);\n border-radius: calc(var(--f7-button-border-radius) + 2px);\n box-shadow: none;\n padding: var(--f7-segmented-strong-padding);\n overflow: hidden;\n}\n.segmented-strong .button,\n.ios .segmented-strong-ios .button,\n.md .segmented-strong-md .button {\n z-index: 1;\n transform: translate3d(0, 0, 0);\n}\n.segmented-strong .button,\n.ios .segmented-strong-ios .button,\n.md .segmented-strong-md .button,\n.segmented-strong .button:first-child,\n.ios .segmented-strong-ios .button:first-child,\n.md .segmented-strong-md .button:first-child,\n.segmented-strong .button:last-child,\n.ios .segmented-strong-ios .button:last-child,\n.md .segmented-strong-md .button:last-child {\n border-radius: var(--f7-button-border-radius);\n}\n.segmented-strong .button + .button,\n.ios .segmented-strong-ios .button + .button,\n.md .segmented-strong-md .button + .button {\n margin-left: var(--f7-segmented-strong-between-buttons);\n}\n.segmented-strong .button.button-active,\n.ios .segmented-strong-ios .button.button-active,\n.md .segmented-strong-md .button.button-active,\n.segmented-strong .button.tab-link-active,\n.ios .segmented-strong-ios .button.tab-link-active,\n.md .segmented-strong-md .button.tab-link-active {\n --f7-button-hover-bg-color: transparent;\n --f7-button-bg-color: transparent;\n --f7-button-text-color: var(--f7-segmented-strong-button-active-text-color);\n --f7-button-font-weight: var(--f7-segmented-strong-button-active-font-weight);\n}\n.segmented-strong .segmented-highlight,\n.ios .segmented-strong-ios .segmented-highlight,\n.md .segmented-strong-md .segmented-highlight {\n --f7-segmented-highlight-num: 1;\n --f7-segmented-highlight-active: 0;\n --f7-segmented-highlight-padding: calc(var(--f7-segmented-strong-padding) * 2);\n --f7-segmented-highlight-between: var(--f7-segmented-strong-between-buttons);\n --f7-segmented-highlight-width: calc((100% - var(--f7-segmented-highlight-padding) - var(--f7-segmented-highlight-between) * (var(--f7-segmented-highlight-num) - 1)) / var(--f7-segmented-highlight-num));\n position: absolute;\n background-color: var(--f7-segmented-strong-button-active-bg-color);\n border-radius: var(--f7-button-border-radius);\n box-shadow: var(--f7-segmented-strong-button-active-box-shadow);\n left: var(--f7-segmented-strong-padding);\n top: var(--f7-segmented-strong-padding);\n height: calc(100% - var(--f7-segmented-strong-padding) * 2);\n width: var(--f7-segmented-highlight-width);\n z-index: 0;\n transform: translateX(calc(var(--f7-segmented-highlight-active) * 100% + var(--f7-segmented-highlight-active) * var(--f7-segmented-highlight-between)));\n transition: 200ms;\n}\n.button:nth-child(2) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 2;\n}\n.button:nth-child(3) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 3;\n}\n.button:nth-child(4) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 4;\n}\n.button:nth-child(5) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 5;\n}\n.button:nth-child(6) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 6;\n}\n.button:nth-child(7) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 7;\n}\n.button:nth-child(8) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 8;\n}\n.button:nth-child(9) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 9;\n}\n.button:nth-child(10) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 10;\n}\n.button-active:nth-child(2) ~ .segmented-highlight,\n.tab-link-active:nth-child(2) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 1;\n}\n.button-active:nth-child(3) ~ .segmented-highlight,\n.tab-link-active:nth-child(3) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 2;\n}\n.button-active:nth-child(4) ~ .segmented-highlight,\n.tab-link-active:nth-child(4) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 3;\n}\n.button-active:nth-child(5) ~ .segmented-highlight,\n.tab-link-active:nth-child(5) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 4;\n}\n.button-active:nth-child(6) ~ .segmented-highlight,\n.tab-link-active:nth-child(6) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 5;\n}\n.button-active:nth-child(7) ~ .segmented-highlight,\n.tab-link-active:nth-child(7) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 6;\n}\n.button-active:nth-child(8) ~ .segmented-highlight,\n.tab-link-active:nth-child(8) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 7;\n}\n.button-active:nth-child(9) ~ .segmented-highlight,\n.tab-link-active:nth-child(9) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 8;\n}\n.button-active:nth-child(10) ~ .segmented-highlight,\n.tab-link-active:nth-child(10) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 9;\n}\n.segmented-round,\n.ios .segmented-round-ios,\n.md .segmented-round-md {\n border-radius: var(--f7-button-height);\n}\n.segmented-round .segmented-highlight,\n.ios .segmented-round-ios .segmented-highlight,\n.md .segmented-round-md .segmented-highlight {\n border-radius: var(--f7-button-height);\n}\n.subnavbar .segmented {\n width: 100%;\n}\n.button-preloader {\n position: relative;\n --f7-preloader-color: var(--f7-button-text-color, var(--f7-theme-color));\n}\n.button-preloader:not(.button-large) {\n --f7-preloader-size: calc(var(--f7-button-height) - 6px);\n}\n.button-preloader.button-fill {\n --f7-preloader-color: #fff;\n}\n.button-preloader > span:not(.preloader) {\n transition: 0.2s;\n display: inline-flex;\n align-items: center;\n align-content: center;\n justify-content: center;\n transform: scale(1);\n}\n.button-preloader > .preloader {\n position: absolute;\n left: 50%;\n top: 50%;\n transition: 0.2s;\n transition-property: opacity;\n opacity: 0;\n visibility: hidden;\n margin-left: calc(-1 * var(--f7-preloader-size) / 2);\n margin-top: calc(-1 * var(--f7-preloader-size) / 2);\n}\n.button-preloader.button-loading > span:not(.preloader) {\n opacity: 0;\n transform: scale(0);\n}\n.button-preloader.button-loading > .preloader {\n opacity: 1;\n visibility: visible;\n}\n.ios .button {\n transition-duration: 100ms;\n}\n.ios .button.active-state {\n background-color: var(--f7-button-pressed-bg-color, rgba(var(--f7-theme-color-rgb), 0.15));\n}\n.ios .button-fill,\n.ios .button-fill-ios {\n --f7-button-pressed-bg-color: var(--f7-button-fill-pressed-bg-color, var(--f7-theme-color-tint));\n}\n.ios .button-small,\n.ios .button-small-ios {\n transition-duration: 200ms;\n}\n.md .button {\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n}\n.md .button-fill,\n.md .button-fill-md {\n --f7-button-pressed-bg-color: var(--f7-button-fill-pressed-bg-color, transparent);\n}\n/* === Touch Ripple === */\n:root {\n --f7-touch-ripple-black: rgba(0, 0, 0, 0.1);\n --f7-touch-ripple-white: rgba(255, 255, 255, 0.15);\n --f7-touch-ripple-color: var(--f7-touch-ripple-black);\n}\n.dark {\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.ripple,\n.fab a,\n.link,\n.item-link,\n.list-button,\n.button,\n.dialog-button,\n.tab-link,\n.radio,\n.checkbox,\n.actions-button,\n.speed-dial-buttons a {\n -webkit-user-select: none;\n user-select: none;\n}\n.ripple-wave {\n left: 0;\n top: 0;\n position: absolute !important;\n border-radius: 50%;\n pointer-events: none;\n z-index: -1;\n padding: 0;\n margin: 0;\n font-size: 0;\n transform: translate3d(0px, 0px, 0) scale(0);\n background-color: var(--f7-touch-ripple-color);\n animation: touch-ripple-in 200ms forwards;\n}\n.ripple-wave.ripple-wave-inset {\n background-image: none;\n background-color: var(--f7-touch-ripple-color);\n}\n.ripple-wave.ripple-wave-out {\n transform: var(--f7-ripple-transform);\n animation: touch-ripple-out 250ms forwards !important;\n}\n.item-link .ripple-wave,\n.list label.item-content .ripple-wave,\n.list-button .ripple-wave,\n.links-list a .ripple-wave,\n.button .ripple-wave,\nbutton .ripple-wave,\n.dialog-button .ripple-wave,\n.tab-link .ripple-wave,\n.item-radio .ripple-wave,\n.item-checkbox .ripple-wave,\n.actions-button .ripple-wave,\n.fab a .ripple-wave,\n.stepper-button .ripple-wave,\n.stepper-button-minus .ripple-wave,\n.stepper-button-plus .ripple-wave,\n.list.accordion-list .accordion-item-toggle .ripple-wave,\n.photo-browser .toolbar .link .ripple-wave,\n.ripple-blur .ripple-wave {\n animation: touch-ripple-in-blurred 250ms forwards;\n background-image: radial-gradient(closest-side circle at 50% 50%, var(--f7-touch-ripple-color) 50%, rgba(255, 255, 255, 0));\n background-color: transparent;\n}\n.checkbox .ripple-wave,\n.radio .ripple-wave,\n.data-table .sortable-cell .ripple-wave {\n z-index: 0;\n}\n[class*='ripple-color-'] {\n --f7-touch-ripple-color: var(--f7-theme-color-ripple-color);\n}\n@keyframes touch-ripple-in-blurred {\n from {\n transform: translate3d(0px, 0px, 0) scale(0.5);\n }\n to {\n transform: var(--f7-ripple-transform);\n }\n}\n@keyframes touch-ripple-in {\n from {\n transform: translate3d(0px, 0px, 0) scale(0);\n }\n to {\n transform: var(--f7-ripple-transform);\n }\n}\n@keyframes touch-ripple-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n/* === Icon === */\n.f7-icons,\n.material-icons {\n width: 1em;\n height: 1em;\n}\ni.icon {\n display: inline-block;\n vertical-align: middle;\n background-size: 100% auto;\n background-position: center;\n background-repeat: no-repeat;\n font-style: normal;\n position: relative;\n}\n.icon-back:after,\n.icon-prev:after,\n.icon-forward:after,\n.icon-next:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n.icon[class*='color-'] {\n color: var(--f7-theme-color);\n}\n.ios .icon-back,\n.ios .icon-prev,\n.ios .icon-forward,\n.ios .icon-next {\n width: 12px;\n height: 20px;\n line-height: 20px;\n}\n.ios .icon-back:after,\n.ios .icon-prev:after,\n.ios .icon-forward:after,\n.ios .icon-next:after {\n line-height: inherit;\n}\n.ios .icon-prev:after,\n.ios .icon-next:after {\n font-size: 16px;\n}\n.ios .icon-back:after,\n.ios .icon-prev:after {\n content: 'chevron_left_ios';\n}\n.ios .icon-forward:after,\n.ios .icon-next:after {\n content: 'chevron_right_ios';\n}\n.md .icon-back,\n.md .icon-forward,\n.md .icon-next,\n.md .icon-prev {\n width: 24px;\n height: 24px;\n}\n.md .icon-back:after,\n.md .icon-forward:after,\n.md .icon-next:after,\n.md .icon-prev:after {\n line-height: 1.2;\n}\n.md .icon-back:after {\n content: 'arrow_left_md';\n}\n.md .icon-forward:after {\n content: 'arrow_right_md';\n}\n.md .icon-next:after {\n content: 'chevron_right_md';\n}\n.md .icon-prev:after {\n content: 'chevron_left_md';\n}\n.custom-modal-backdrop {\n z-index: 10500;\n}\n.custom-modal-backdrop,\n.actions-backdrop,\n.dialog-backdrop,\n.popover-backdrop,\n.popup-backdrop,\n.preloader-backdrop,\n.sheet-backdrop,\n.fab-backdrop {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.4);\n z-index: 13000;\n visibility: hidden;\n opacity: 0;\n transition-duration: 400ms;\n}\n.custom-modal-backdrop.not-animated,\n.actions-backdrop.not-animated,\n.dialog-backdrop.not-animated,\n.popover-backdrop.not-animated,\n.popup-backdrop.not-animated,\n.preloader-backdrop.not-animated,\n.sheet-backdrop.not-animated,\n.fab-backdrop.not-animated {\n transition-duration: 0ms;\n}\n.custom-modal-backdrop.backdrop-in,\n.actions-backdrop.backdrop-in,\n.dialog-backdrop.backdrop-in,\n.popover-backdrop.backdrop-in,\n.popup-backdrop.backdrop-in,\n.preloader-backdrop.backdrop-in,\n.sheet-backdrop.backdrop-in,\n.fab-backdrop.backdrop-in {\n visibility: visible;\n opacity: 1;\n}\n/* === Dialog === */\n:root {\n --f7-dialog-button-text-color: var(--f7-theme-color);\n --f7-dialog-button-text-align: center;\n}\n.ios {\n --f7-dialog-width: 270px;\n --f7-dialog-inner-padding: 16px;\n --f7-dialog-border-radius: 13px;\n --f7-dialog-text-align: center;\n --f7-dialog-font-size: 14px;\n --f7-dialog-title-text-color: inherit;\n --f7-dialog-title-font-size: 18px;\n --f7-dialog-title-font-weight: 600;\n --f7-dialog-title-line-height: inherit;\n --f7-dialog-button-font-size: 17px;\n --f7-dialog-button-height: 44px;\n --f7-dialog-button-letter-spacing: 0;\n --f7-dialog-button-font-weight: 400;\n --f7-dialog-button-text-transform: none;\n --f7-dialog-button-strong-bg-color: transparent;\n --f7-dialog-button-strong-text-color: var(--f7-theme-color);\n --f7-dialog-button-strong-font-weight: 500;\n --f7-dialog-input-border-radius: 4px;\n --f7-dialog-input-font-size: 14px;\n --f7-dialog-input-height: 32px;\n --f7-dialog-input-border-width: 1px;\n --f7-dialog-input-placeholder-color: #a9a9a9;\n --f7-dialog-preloader-size: 34px;\n --f7-dialog-input-bg-color: #fff;\n --f7-dialog-bg-color: rgba(255, 255, 255, 0.95);\n --f7-dialog-bg-color-rgb: 255, 255, 255;\n --f7-dialog-text-color: #000;\n --f7-dialog-button-pressed-bg-color: rgba(0, 0, 0, 0.1);\n --f7-dialog-button-strong-pressed-bg-color: rgba(0, 0, 0, 0.1);\n --f7-dialog-input-border-color: rgba(0, 0, 0, 0.3);\n --f7-dialog-border-divider-color: rgba(0, 0, 0, 0.2);\n}\n.ios .dark,\n.ios.dark {\n --f7-dialog-text-color: #fff;\n --f7-dialog-bg-color: rgba(45, 45, 45, 0.95);\n --f7-dialog-bg-color-rgb: 45, 45, 45;\n --f7-dialog-button-pressed-bg-color: rgba(0, 0, 0, 0.2);\n --f7-dialog-button-strong-pressed-bg-color: rgba(0, 0, 0, 0.2);\n --f7-dialog-border-divider-color: rgba(255, 255, 255, 0.15);\n --f7-dialog-input-border-color: rgba(255, 255, 255, 0.15);\n --f7-dialog-input-bg-color: rgba(0, 0, 0, 0.5);\n}\n.md {\n --f7-dialog-width: 280px;\n --f7-dialog-inner-padding: 24px;\n --f7-dialog-border-radius: 28px;\n --f7-dialog-text-align: left;\n --f7-dialog-font-size: 14px;\n --f7-dialog-title-font-size: 24px;\n --f7-dialog-title-font-weight: 400;\n --f7-dialog-title-line-height: 1.3;\n --f7-dialog-button-font-size: 14px;\n --f7-dialog-button-height: 40px;\n --f7-dialog-button-letter-spacing: normal;\n --f7-dialog-button-font-weight: 500;\n --f7-dialog-button-text-transform: none;\n --f7-dialog-button-strong-font-weight: 500;\n --f7-dialog-input-border-radius: 0px;\n --f7-dialog-input-font-size: 16px;\n --f7-dialog-input-height: 36px;\n --f7-dialog-input-border-color: transparent;\n --f7-dialog-input-border-width: 0px;\n --f7-dialog-preloader-size: 32px;\n --f7-dialog-input-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-dialog-button-pressed-bg-color: transparent;\n --f7-dialog-button-strong-bg-color: var(--f7-theme-color);\n --f7-dialog-button-strong-text-color: var(--f7-md-on-primary);\n --f7-dialog-button-strong-pressed-bg-color: transparent;\n --f7-dialog-bg-color: var(--f7-md-surface-3);\n --f7-dialog-input-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-dialog-text-color: var(--f7-md-on-surface-variant);\n --f7-dialog-title-text-color: var(--f7-md-on-surface);\n}\n.dialog {\n position: absolute;\n z-index: 13500;\n left: 50%;\n margin-top: 0;\n top: 50%;\n overflow: hidden;\n opacity: 0;\n transform: translate3d(0, -50%, 0) scale(1.185);\n transition-property: transform, opacity;\n display: none;\n transition-duration: 400ms;\n width: var(--f7-dialog-width);\n margin-left: calc(-1 * var(--f7-dialog-width) / 2);\n border-radius: var(--f7-dialog-border-radius);\n text-align: var(--f7-dialog-text-align);\n color: var(--f7-dialog-text-color);\n font-size: var(--f7-dialog-font-size);\n background: var(--f7-dialog-bg-color);\n will-change: transform, opacity;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .dialog {\n background-color: rgba(var(--f7-dialog-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.dialog.modal-in {\n opacity: 1;\n transform: translate3d(0, -50%, 0) scale(1);\n}\n.dialog.modal-out {\n opacity: 0;\n z-index: 13499;\n}\n.dialog.not-animated {\n transition-duration: 0ms;\n}\n.dialog-inner {\n position: relative;\n padding: var(--f7-dialog-inner-padding);\n}\n.dialog-title {\n color: var(--f7-dialog-title-text-color);\n font-size: var(--f7-dialog-title-font-size);\n font-weight: var(--f7-dialog-title-font-weight);\n line-height: var(--f7-dialog-title-line-height);\n}\n.dialog-buttons {\n position: relative;\n display: flex;\n}\n.dialog-buttons-vertical .dialog-buttons {\n display: block;\n height: auto !important;\n}\n.dialog-button {\n box-sizing: border-box;\n overflow: hidden;\n position: relative;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: var(--f7-dialog-button-text-color);\n font-size: var(--f7-dialog-button-font-size);\n height: var(--f7-dialog-button-height);\n line-height: var(--f7-dialog-button-height);\n letter-spacing: var(--f7-dialog-button-letter-spacing);\n text-align: var(--f7-dialog-button-text-align);\n font-weight: var(--f7-dialog-button-font-weight);\n text-transform: var(--f7-dialog-button-text-transform);\n display: block;\n cursor: pointer;\n}\n.dialog-button.active-state {\n background-color: var(--f7-dialog-button-pressed-bg-color);\n}\n.dialog-button-strong {\n background-color: var(--f7-dialog-button-strong-bg-color);\n color: var(--f7-dialog-button-strong-text-color);\n font-weight: var(--f7-dialog-button-strong-font-weight);\n}\n.dialog-button-strong.active-state {\n background-color: var(--f7-dialog-button-strong-pressed-bg-color);\n}\n.dialog-no-buttons .dialog-buttons {\n display: none;\n}\n.dialog-input-field {\n position: relative;\n}\ninput.dialog-input[type] {\n box-sizing: border-box;\n margin: 0;\n margin-top: 15px;\n border-radius: var(--f7-dialog-input-border-radius);\n -webkit-appearance: none;\n appearance: none;\n width: 100%;\n display: block;\n font-family: inherit;\n box-shadow: none;\n font-size: var(--f7-dialog-input-font-size);\n height: var(--f7-dialog-input-height);\n background-color: var(--f7-dialog-input-bg-color);\n border: var(--f7-dialog-input-border-width) solid var(--f7-dialog-input-border-color);\n}\ninput.dialog-input[type]::placeholder {\n color: var(--f7-dialog-input-placeholder-color);\n}\n.dialog-input-double input.dialog-input {\n border-radius: var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius) 0 0;\n}\n.dialog-input-double + .dialog-input-double input.dialog-input {\n border-radius: 0 0 var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius);\n}\n.dialog-preloader .preloader {\n --f7-preloader-size: var(--f7-dialog-preloader-size);\n}\nhtml.with-modal-dialog .page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\n.ios .dialog.modal-out {\n transform: translate3d(0, -50%, 0) scale(1);\n}\n.ios .dialog-inner {\n border-radius: var(--f7-dialog-border-radius) var(--f7-dialog-border-radius) 0 0;\n}\n.ios .dialog-inner:after {\n content: '';\n position: absolute;\n background-color: var(--f7-dialog-border-divider-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.ios .dialog-title + .dialog-text {\n margin-top: 5px;\n}\n.ios .dialog-buttons {\n height: 44px;\n justify-content: center;\n}\n.ios .dialog-button {\n width: 100%;\n padding: 0 5px;\n -webkit-box-flex: 1;\n -ms-flex: 1;\n}\n.ios .dialog-button:after {\n content: '';\n position: absolute;\n background-color: var(--f7-dialog-border-divider-color);\n display: block;\n z-index: 15;\n top: 0;\n right: 0;\n bottom: auto;\n left: auto;\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.ios .dialog-button:first-child {\n border-radius: 0 0 0 var(--f7-dialog-border-radius);\n}\n.ios .dialog-button:last-child {\n border-radius: 0 0 var(--f7-dialog-border-radius) 0;\n}\n.ios .dialog-button:last-child:after {\n display: none !important;\n}\n.ios .dialog-button:first-child:last-child {\n border-radius: 0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius);\n}\n.ios .dialog-button[class*='color-'] {\n --f7-dialog-button-text-color: var(--f7-theme-color);\n}\n.ios .dialog-buttons-vertical .dialog-buttons {\n height: auto;\n}\n.ios .dialog-buttons-vertical .dialog-button {\n border-radius: 0;\n}\n.ios .dialog-buttons-vertical .dialog-button:after {\n content: '';\n position: absolute;\n background-color: var(--f7-dialog-border-divider-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.ios .dialog-buttons-vertical .dialog-button:last-child {\n border-radius: 0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius);\n}\n.ios .dialog-buttons-vertical .dialog-button:last-child:after {\n display: none !important;\n}\n.ios .dialog-no-buttons .dialog-inner {\n border-radius: var(--f7-dialog-border-radius);\n}\n.ios .dialog-no-buttons .dialog-inner:after {\n display: none !important;\n}\n.ios .dialog-input-field {\n margin-top: 15px;\n}\n.ios .dialog-input {\n padding: 0 5px;\n}\n.ios .dialog-input + .dialog-input {\n margin-top: 5px;\n}\n.ios .dialog-input-double + .dialog-input-double {\n margin-top: 0;\n}\n.ios .dialog-input-double + .dialog-input-double .dialog-input {\n border-top: 0;\n margin-top: 0;\n}\n.ios .dialog-preloader .dialog-title ~ .preloader,\n.ios .dialog-preloader .dialog-text ~ .preloader {\n margin-top: 15px;\n}\n.ios .dialog-progress .dialog-title ~ .progressbar,\n.ios .dialog-progress .dialog-text ~ .progressbar,\n.ios .dialog-progress .dialog-title ~ .progressbar-infinite,\n.ios .dialog-progress .dialog-text ~ .progressbar-infinite {\n margin-top: 15px;\n}\n.md .dialog.modal-out {\n transform: translate3d(0, -50%, 0) scale(0.815);\n}\n.md .dialog-title + .dialog-text {\n margin-top: 20px;\n}\n.md .dialog-text {\n line-height: 1.5;\n}\n.md .dialog-buttons {\n height: 64px;\n padding: 0px 24px 24px;\n overflow: hidden;\n box-sizing: border-box;\n justify-content: flex-end;\n}\n.md .dialog-button {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n border-radius: 99px;\n min-width: 64px;\n padding: 0px 16px;\n border: none;\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n}\n.md .dialog-button + .dialog-button {\n margin-left: 8px;\n}\n.md .dialog-button-strong {\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.md .dialog-button[class*='color-'] {\n --f7-dialog-button-text-color: var(--f7-theme-color);\n}\n.md .dialog-buttons-vertical .dialog-buttons {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n}\n.md .dialog-buttons-vertical .dialog-button + .dialog-button {\n margin-top: 8px;\n margin-left: 0;\n}\n.md .dialog-input {\n padding: 0;\n transition-duration: 200ms;\n position: relative;\n}\n.md .dialog-input + .dialog-input {\n margin-top: 16px;\n}\n.md .dialog-preloader .dialog-title,\n.md .dialog-progress .dialog-title,\n.md .dialog-preloader .dialog-inner,\n.md .dialog-progress .dialog-inner {\n text-align: center;\n}\n.md .dialog-preloader .dialog-title ~ .preloader,\n.md .dialog-preloader .dialog-text ~ .preloader {\n margin-top: 20px;\n}\n.md .dialog-progress .dialog-title ~ .progressbar,\n.md .dialog-progress .dialog-text ~ .progressbar,\n.md .dialog-progress .dialog-title ~ .progressbar-infinite,\n.md .dialog-progress .dialog-text ~ .progressbar-infinite {\n margin-top: 16px;\n}\n/* === Popup === */\n:root {\n --f7-popup-border-radius: 0px;\n --f7-popup-tablet-width: 630px;\n --f7-popup-tablet-height: 630px;\n --f7-popup-push-offset: var(--f7-safe-area-top);\n /*\n --f7-popup-tablet-border-radius: var(--f7-popup-border-radius);\n */\n}\n.ios {\n --f7-popup-tablet-border-radius: 5px;\n --f7-popup-transition-duration: 400ms;\n --f7-popup-transition-timing-function: initial;\n --f7-popup-push-border-radius: 10px;\n}\n.md {\n --f7-popup-tablet-border-radius: 28px;\n --f7-popup-transition-duration: 600ms;\n --f7-popup-transition-timing-function: cubic-bezier(0, 1, 0.2, 1);\n --f7-popup-push-border-radius: 28px;\n}\n.popup-backdrop {\n z-index: 10500;\n}\n.popup-backdrop-unique {\n z-index: 11000;\n}\n.popup {\n position: absolute;\n left: 0;\n top: 0px;\n width: 100%;\n height: 100%;\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n transition-timing-function: var(--f7-popup-transition-timing-function);\n transform: translate3d(0, 100vh, 0);\n background: #fff;\n z-index: 11000;\n overflow: hidden;\n border-radius: var(--f7-popup-border-radius);\n}\n.dark .popup,\n.popup.dark {\n background: #000;\n}\n.popup.modal-in,\n.popup.modal-out {\n transition-duration: var(--f7-popup-transition-duration);\n}\n.popup.not-animated {\n transition-duration: 0ms;\n}\n.popup.modal-in {\n display: block;\n transform: translate3d(0, 0, 0);\n}\n.popup.modal-out {\n transform: translate3d(0, 100vh, 0);\n}\n.popup.swipe-close-to-top.modal-out {\n transform: translate3d(0, -100vh, 0);\n}\n@media (min-width: 630px) and (min-height: 630px) {\n .popup:not(.popup-tablet-fullscreen) {\n --f7-safe-area-top: 0px;\n --f7-safe-area-bottom: 0px;\n width: var(--f7-popup-tablet-width);\n height: var(--f7-popup-tablet-height);\n left: 50%;\n top: 50%;\n margin-left: calc(-1 * var(--f7-popup-tablet-width) / 2);\n margin-top: calc(-1 * var(--f7-popup-tablet-height) / 2);\n transform: translate3d(0, 100vh, 0);\n border-radius: var(--f7-popup-tablet-border-radius, var(--f7-popup-border-radius));\n }\n .popup:not(.popup-tablet-fullscreen).modal-in {\n transform: translate3d(0, 0, 0);\n }\n .popup:not(.popup-tablet-fullscreen).modal-out {\n transform: translate3d(0, 100vh, 0);\n }\n .popup:not(.popup-tablet-fullscreen).swipe-close-to-top.modal-out {\n transform: translate3d(0, -100vh, 0);\n }\n .popup:not(.popup-tablet-fullscreen).popup-behind {\n transform: translate3d(0, 0, 0) scale(0.9);\n pointer-events: none;\n }\n .popup:not(.popup-tablet-fullscreen).popup-behind.modal-out {\n transform: translate3d(0, 100vh, 0) scale(0.9);\n }\n html.with-modal-popup-push .popup-push:not(.popup-tablet-fullscreen) {\n margin-top: 0;\n }\n}\nhtml.with-modal-popup .framework7-root > .views .page-content,\nhtml.with-modal-popup .framework7-root > .view .page-content,\nhtml.with-modal-popup .framework7-root > .panel .page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\nhtml.with-modal-popup-push .popup-push,\nhtml.with-modal-popup-push-closing .popup-push {\n top: calc(var(--f7-popup-push-offset) + 10px);\n height: calc(100% - var(--f7-popup-push-offset) - 10px);\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n --f7-safe-area-top: 0px;\n}\nhtml.with-modal-popup-push .popup-push .view,\nhtml.with-modal-popup-push-closing .popup-push .view,\nhtml.with-modal-popup-push .popup-push .page,\nhtml.with-modal-popup-push-closing .popup-push .page {\n --f7-safe-area-top: 0px;\n}\nhtml.with-modal-popup-push .framework7-root,\nhtml.with-modal-popup-push-closing .framework7-root {\n background: #000;\n}\nhtml.with-modal-popup-push .framework7-root > .views,\nhtml.with-modal-popup-push-closing .framework7-root > .views,\nhtml.with-modal-popup-push .framework7-root > .view,\nhtml.with-modal-popup-push-closing .framework7-root > .view {\n transition-duration: var(--f7-popup-transition-duration);\n transition-timing-function: var(--f7-popup-transition-timing-function);\n}\nhtml.with-modal-popup-push.dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-popup-push.dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-popup-push .dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-popup-push .dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-popup-push .dark.framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-popup-push .dark.framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-popup-push .framework7-root > .views.dark:after,\nhtml.with-modal-popup-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-popup-push .framework7-root > .view.dark:after,\nhtml.with-modal-popup-push-closing .framework7-root > .view.dark:after {\n content: '';\n position: absolute;\n pointer-events: none;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(255, 255, 255, 0.1);\n z-index: 13000;\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n opacity: 1;\n animation: popup-dark-push-overlay-fade-in var(--f7-popup-transition-duration) forwards;\n}\nhtml.with-modal-popup-push .framework7-root > .views,\nhtml.with-modal-popup-push .framework7-root > .view {\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n transform: translate3d(0, 0, 0px) scale(var(--f7-popup-push-scale, 1)) !important;\n}\nhtml.with-modal-popup-push .popup:after {\n content: '';\n pointer-events: none;\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.4);\n z-index: 13000;\n transition-duration: var(--f7-popup-transition-duration);\n transition-timing-function: var(--f7-popup-transition-timing-function);\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n opacity: 0;\n}\nhtml.with-modal-popup-push.dark .popup:after,\nhtml.with-modal-popup-push .dark .popup:after,\nhtml.with-modal-popup-push .dark.popup:after {\n background: rgba(255, 255, 255, 0.05);\n}\nhtml.with-modal-popup-push .popup-behind {\n transform: translate3d(0, 0px, 0px) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind.modal-out {\n transform: translate3d(0, 100vh, 0) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind:not(.popup-push) {\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n}\nhtml.with-modal-popup-push .popup-behind.popup-push {\n transform: translate3d(0, calc(0px - var(--f7-popup-push-offset) - 10px), 0px) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind.popup-push.modal-out {\n transform: translate3d(0, calc(0px - var(--f7-popup-push-offset) - 10px + 100vh), 0px) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind:after {\n opacity: 1;\n pointer-events: auto;\n}\nhtml.with-modal-popup-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-popup-push-closing .framework7-root > .view.dark:after {\n animation: popup-dark-push-overlay-fade-out var(--f7-popup-transition-duration) forwards;\n animation-timing-function: var(--f7-popup-transition-timing-function);\n}\n@keyframes popup-dark-push-overlay-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes popup-dark-push-overlay-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n/* === Login Screen === */\n:root {\n --f7-login-screen-blocks-max-width: 480px;\n --f7-login-screen-title-text-align: center;\n --f7-login-screen-title-text-color: inherit;\n --f7-login-screen-title-letter-spacing: 0;\n}\n.ios {\n --f7-login-screen-blocks-margin-vertical: 25px;\n --f7-login-screen-transition-timing-function: initial;\n --f7-login-screen-transition-duration: 400ms;\n --f7-login-screen-title-font-weight: 600;\n --f7-login-screen-title-font-size: 28px;\n --f7-login-screen-content-bg-color: #fff;\n --f7-login-screen-bg-color: #fff;\n}\n.ios .dark,\n.ios.dark {\n --f7-login-screen-bg-color: #000;\n --f7-login-screen-content-bg-color: #000;\n}\n.md {\n --f7-login-screen-transition-duration: 600ms;\n --f7-login-screen-transition-timing-function: cubic-bezier(0, 1, 0.2, 1);\n --f7-login-screen-blocks-margin-vertical: 24px;\n --f7-login-screen-title-font-weight: 400;\n --f7-login-screen-title-font-size: 28px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-login-screen-content-bg-color: var(--f7-md-surface);\n --f7-login-screen-bg-color: var(--f7-md-surface);\n}\n.login-screen {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n transform: translate3d(0, 100vh, 0);\n background: var(--f7-login-screen-bg-color);\n transition-timing-function: var(--f7-login-screen-transition-timing-function);\n z-index: 11000;\n}\n.login-screen.modal-in,\n.login-screen.modal-out {\n transition-duration: var(--f7-login-screen-transition-duration);\n}\n.login-screen.not-animated {\n transition-duration: 0ms;\n}\n.login-screen.modal-in {\n display: block;\n transform: translate3d(0, 0, 0);\n}\n.login-screen.modal-out {\n transform: translate3d(0, 100%, 0);\n}\n.login-screen-content,\n.login-screen-page,\n.login-screen .page {\n background: var(--f7-login-screen-content-bg-color);\n}\n.login-screen-content .login-screen-title,\n.login-screen-page .login-screen-title,\n.login-screen-content .list,\n.login-screen-page .list,\n.login-screen-content .block,\n.login-screen-page .block {\n margin: var(--f7-login-screen-blocks-margin-vertical) auto;\n}\n.login-screen-content .login-screen-title,\n.login-screen-page .login-screen-title,\n.login-screen-content .list,\n.login-screen-page .list,\n.login-screen-content .block,\n.login-screen-page .block,\n.login-screen-content .block-footer,\n.login-screen-page .block-footer,\n.login-screen-content .block-header,\n.login-screen-page .block-header {\n max-width: var(--f7-login-screen-blocks-max-width);\n}\n.login-screen-content .list ul,\n.login-screen-page .list ul {\n background: none;\n}\n.login-screen-content .list ul:before,\n.login-screen-page .list ul:before,\n.login-screen-content .list ul:after,\n.login-screen-page .list ul:after {\n display: none !important;\n}\n.login-screen-content .block-footer,\n.login-screen-page .block-footer,\n.login-screen-content .block-header,\n.login-screen-page .block-header {\n text-align: center;\n margin-left: auto;\n margin-right: auto;\n}\n.login-screen-title {\n text-align: var(--f7-login-screen-title-text-align);\n font-size: var(--f7-login-screen-title-font-size);\n font-weight: var(--f7-login-screen-title-font-weight);\n color: var(--f7-login-screen-title-text-color);\n letter-spacing: var(--f7-login-screen-title-letter-spacing);\n}\n.login-screen-page,\n.login-screen > .view > .page,\n.login-screen > .page {\n display: flex;\n flex-direction: column;\n}\n.login-screen-page .page-content,\n.login-screen > .view > .page .page-content,\n.login-screen > .page .page-content,\n.login-screen-page .login-screen-content,\n.login-screen > .view > .page .login-screen-content,\n.login-screen > .page .login-screen-content {\n margin-top: auto;\n margin-bottom: auto;\n height: auto;\n max-height: 100%;\n width: 100%;\n}\n.dark .login-screen-content .list ul,\n.dark .login-screen-content .block-strong,\n.dark .login-screen-page .list ul,\n.dark .login-screen-page .block-strong,\n.dark.login-screen-page .list ul,\n.dark.login-screen-page .block-strong {\n background-color: transparent;\n}\n/* === Popover === */\n:root {\n --f7-popover-width: 260px;\n}\n.ios {\n --f7-popover-border-radius: 13px;\n --f7-popover-actions-icon-size: 28px;\n --f7-popover-transition-timing-function: initial;\n --f7-popover-bg-color: rgba(255, 255, 255, 0.95);\n --f7-popover-actions-label-text-color: rgba(0, 0, 0, 0.45);\n}\n.ios .dark,\n.ios.dark {\n --f7-popover-bg-color: rgba(30, 30, 30, 0.95);\n --f7-popover-actions-label-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-popover-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n --f7-popover-border-radius: 28px;\n --f7-popover-actions-icon-size: 24px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-popover-bg-color: var(--f7-md-surface-3);\n --f7-popover-actions-label-text-color: var(--f7-md-on-surface-variant);\n}\n.popover-backdrop-unique {\n z-index: 13500;\n}\n.popover {\n width: var(--f7-popover-width);\n z-index: 13500;\n margin: 0;\n top: 0;\n opacity: 0;\n left: 0;\n position: absolute;\n display: none;\n transition-duration: 300ms;\n background-color: var(--f7-popover-bg-color);\n border-radius: var(--f7-popover-border-radius);\n will-change: transform, opacity;\n --f7-safe-area-top: 0px;\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n --f7-safe-area-bottom: 0px;\n}\n.popover .list {\n margin: 0;\n}\n.popover .list ul {\n background: none;\n}\n.popover .list:first-child ul:before {\n display: none !important;\n}\n.popover .list:last-child ul:after {\n display: none !important;\n}\n.popover .list:first-child ul {\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n}\n.popover .list:first-child li:first-child,\n.popover .list:first-child li:first-child a,\n.popover .list:first-child li:first-child > label {\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n}\n.popover .list:last-child ul {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.popover .list:last-child li:last-child,\n.popover .list:last-child li:last-child a,\n.popover .list:last-child li:last-child > label {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.popover .list:first-child:last-child li:first-child:last-child,\n.popover .list:first-child:last-child li:first-child:last-child a,\n.popover .list:first-child:last-child li:first-child:last-child > label,\n.popover .list:first-child:last-child ul {\n border-radius: var(--f7-popover-border-radius);\n}\n.popover .list + .list {\n margin-top: var(--f7-list-margin-vertical);\n}\n.popover.modal-in {\n opacity: 1;\n}\n.popover.not-animated {\n transition-duration: 0ms;\n}\n.popover,\n.popover-backdrop {\n transition-timing-function: var(--f7-popover-transition-timing-function);\n}\n.popover-inner {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n}\n.popover-from-actions .item-link i.icon {\n width: var(--f7-popover-actions-icon-size);\n height: var(--f7-popover-actions-icon-size);\n font-size: var(--f7-popover-actions-icon-size);\n}\n.ios .popover-from-actions-strong {\n font-weight: 600;\n}\n.md .popover-from-actions-strong {\n font-weight: 500;\n}\n.popover-from-actions-label {\n line-height: 1.3;\n position: relative;\n display: flex;\n align-items: center;\n padding: var(--f7-actions-label-padding);\n color: var(--f7-popover-actions-label-text-color);\n font-size: var(--f7-actions-label-font-size);\n justify-content: var(--f7-actions-label-justify-content);\n}\n.popover-from-actions-label:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.popover-from-actions-label:last-child:after {\n display: none !important;\n}\n.md .popover-from-actions-label {\n justify-content: center;\n}\n.popover-arrow {\n width: 26px;\n height: 26px;\n position: absolute;\n left: -26px;\n top: 0;\n z-index: 100;\n overflow: hidden;\n}\n.popover-arrow:after {\n content: '';\n background: var(--f7-popover-bg-color);\n width: 26px;\n height: 26px;\n position: absolute;\n left: 0;\n top: 0;\n border-radius: 3px;\n transform: rotate(45deg);\n}\n.popover-arrow.on-left {\n left: -26px;\n}\n.popover-arrow.on-left:after {\n left: 19px;\n top: 0;\n}\n.popover-arrow.on-right {\n left: 100%;\n}\n.popover-arrow.on-right:after {\n left: -19px;\n top: 0;\n}\n.popover-arrow.on-top {\n left: 0;\n top: -26px;\n}\n.popover-arrow.on-top:after {\n left: 0;\n top: 19px;\n}\n.popover-arrow.on-bottom {\n left: 0;\n top: 100%;\n}\n.popover-arrow.on-bottom:after {\n left: 0;\n top: -19px;\n}\n.ios .popover {\n transform: none;\n transition-property: opacity;\n}\n.md .popover {\n transform: scale(0.85, 0.6);\n transition-property: opacity, transform;\n}\n.md .popover.modal-in {\n opacity: 1;\n transform: scale(1);\n}\n.md .popover.modal-out {\n opacity: 0;\n transform: scale(1);\n}\n.md .popover-on-top {\n transform-origin: center bottom;\n}\n.md .popover-on-top.popover-on-right {\n transform-origin: left bottom;\n}\n.md .popover-on-top.popover-on-left {\n transform-origin: right bottom;\n}\n.md .popover-on-middle {\n transform-origin: center center;\n}\n.md .popover-on-middle.popover-on-right {\n transform-origin: left center;\n}\n.md .popover-on-middle.popover-on-left {\n transform-origin: right center;\n}\n.md .popover-on-bottom {\n transform-origin: center top;\n}\n.md .popover-on-bottom.popover-on-right {\n transform-origin: left top;\n}\n.md .popover-on-bottom.popover-on-left {\n transform-origin: right top;\n}\n/* === Actions === */\n:root {\n --f7-actions-grid-button-font-size: 12px;\n --f7-actions-grid-button-icon-size: 48px;\n}\n.ios {\n --f7-actions-transition-timing-function: initial;\n --f7-actions-border-radius: 13px;\n /*\n --f7-actions-button-text-color: var(--f7-theme-color);\n */\n --f7-actions-grid-button-text-color: #757575;\n --f7-actions-button-padding: 0px;\n --f7-actions-button-text-align: center;\n --f7-actions-button-height: 57px;\n --f7-actions-button-height-landscape: 44px;\n --f7-actions-button-font-size: 20px;\n --f7-actions-button-icon-size: 28px;\n --f7-actions-button-justify-content: center;\n --f7-actions-label-padding: 8px 10px;\n --f7-actions-label-font-weight: 400;\n --f7-actions-label-font-size: 13px;\n --f7-actions-label-justify-content: center;\n --f7-actions-group-border-color: transparent;\n --f7-actions-group-margin: 8px;\n --f7-actions-bg-color: rgba(255, 255, 255, 0.95);\n --f7-actions-bg-color-rgb: 255, 255, 255;\n --f7-actions-button-border-color: rgba(0, 0, 0, 0.2);\n --f7-actions-button-pressed-bg-color: rgba(230, 230, 230, 0.9);\n --f7-actions-button-pressed-bg-color-rgb: 230, 230, 230;\n --f7-actions-label-text-color: #8a8a8a;\n}\n.ios .dark,\n.ios.dark {\n --f7-actions-bg-color: rgba(45, 45, 45, 0.95);\n --f7-actions-bg-color-rgb: 45, 45, 45;\n --f7-actions-button-border-color: rgba(255, 255, 255, 0.15);\n --f7-actions-button-pressed-bg-color: rgba(50, 50, 50, 0.9);\n --f7-actions-button-pressed-bg-color-rgb: 50, 50, 50;\n --f7-actions-label-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-actions-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n --f7-actions-border-radius: 16px;\n --f7-actions-button-border-color: transparent;\n --f7-actions-button-padding: 0 16px;\n --f7-actions-button-text-align: left;\n --f7-actions-button-height: 48px;\n --f7-actions-button-height-landscape: 48px;\n --f7-actions-button-font-size: 16px;\n --f7-actions-button-icon-size: 24px;\n --f7-actions-button-justify-content: space-between;\n --f7-actions-label-padding: 12px 16px;\n --f7-actions-label-font-size: 14px;\n --f7-actions-label-font-weight: 500;\n --f7-actions-label-justify-content: flex-start;\n --f7-actions-group-margin: 0px;\n --f7-actions-button-pressed-bg-color: #e5e5e5;\n}\n.md .dark,\n.md.dark {\n --f7-actions-button-pressed-bg-color: #2e2e2e;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-actions-button-text-color: var(--f7-md-on-surface);\n --f7-actions-bg-color: var(--f7-md-surface-3);\n --f7-actions-group-border-color: var(--f7-md-outline);\n --f7-actions-label-text-color: var(--f7-theme-color);\n --f7-actions-grid-button-text-color: var(--f7-md-on-surface);\n}\n.actions-backdrop-unique {\n z-index: 13500;\n}\n.actions-modal {\n position: absolute;\n left: 0;\n bottom: 0;\n z-index: 13500;\n width: 100%;\n transform: translate3d(0, 100%, 0);\n display: none;\n max-height: 100%;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n transition-property: transform;\n will-change: transform;\n}\n.actions-modal.modal-in,\n.actions-modal.modal-out {\n transition-duration: 300ms;\n}\n.actions-modal.not-animated {\n transition-duration: 0ms;\n}\n.ios .actions-modal.modal-in {\n transform: translate3d(0, calc(-1 * var(--f7-safe-area-bottom)), 0);\n}\n.md .actions-modal.modal-in {\n transform: translate3d(0, 0, 0);\n}\n.actions-modal.modal-out {\n z-index: 13499;\n transform: translate3d(0, 100%, 0);\n}\n@media (min-width: 496px) {\n .actions-modal {\n width: 480px;\n left: 50%;\n margin-left: -240px;\n }\n}\n@media (orientation: landscape) {\n .actions-modal {\n --f7-actions-button-height: var(--f7-actions-button-height-landscape);\n }\n}\n.actions-backdrop,\n.actions-modal {\n transition-timing-function: var(--f7-actions-transition-timing-function);\n}\n.actions-group {\n overflow: hidden;\n position: relative;\n margin: var(--f7-actions-group-margin);\n transform: translate3d(0, 0, 0);\n}\n.actions-group:after {\n content: '';\n position: absolute;\n background-color: var(--f7-actions-group-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.actions-group:last-child:after {\n display: none !important;\n}\n.actions-button,\n.actions-label {\n width: 100%;\n font-weight: normal;\n margin: 0;\n box-sizing: border-box;\n display: block;\n position: relative;\n overflow: hidden;\n text-align: var(--f7-actions-button-text-align);\n}\n.actions-button:after,\n.actions-label:after {\n content: '';\n position: absolute;\n background-color: var(--f7-actions-button-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.actions-button a,\n.actions-label a {\n text-decoration: none;\n color: inherit;\n display: block;\n}\n.actions-button {\n cursor: pointer;\n display: flex;\n color: var(--f7-actions-button-text-color, var(--f7-theme-color));\n font-size: var(--f7-actions-button-font-size);\n height: var(--f7-actions-button-height);\n line-height: var(--f7-actions-button-height);\n padding: var(--f7-actions-button-padding);\n justify-content: var(--f7-actions-button-justify-content);\n z-index: 10;\n}\n.actions-button.active-state {\n background-color: var(--f7-actions-button-pressed-bg-color) !important;\n}\n.actions-button[class*='color-'] {\n color: var(--f7-theme-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .actions-button.active-state {\n background-color: rgba(var(--f7-actions-button-pressed-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.actions-button-media {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n}\n.actions-button-media i.icon {\n width: var(--f7-actions-button-icon-size);\n height: var(--f7-actions-button-icon-size);\n font-size: var(--f7-actions-button-icon-size);\n}\n.actions-button a,\n.actions-button-text {\n position: relative;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.actions-button-text {\n width: 100%;\n flex-shrink: 1;\n text-align: var(--f7-actions-button-text-align);\n}\n.actions-label {\n line-height: 1.3;\n display: flex;\n align-items: center;\n font-size: var(--f7-actions-label-font-size);\n font-weight: var(--f7-actions-label-font-weight);\n color: var(--f7-actions-label-text-color);\n padding: var(--f7-actions-label-padding);\n justify-content: var(--f7-actions-label-justify-content);\n min-height: var(--f7-actions-label-min-height, var(--f7-actions-button-height));\n}\n.actions-label[class*=' color-'] {\n --f7-actions-label-text-color: var(--f7-theme-color);\n}\n.actions-grid .actions-group {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n margin-top: 0;\n}\n.actions-grid .actions-group:not(:last-child) {\n margin-bottom: 0;\n}\n.actions-grid .actions-button,\n.actions-grid .actions-label {\n background: none;\n}\n.actions-grid .actions-button {\n width: 33.33333333%;\n display: block;\n color: var(--f7-actions-grid-button-text-color);\n height: auto;\n line-height: 1;\n padding: 16px;\n}\n.actions-grid .actions-button:after {\n display: none !important;\n}\n.actions-grid .actions-button-media {\n margin-left: auto !important;\n margin-right: auto !important;\n width: var(--f7-actions-grid-button-icon-size);\n height: var(--f7-actions-grid-button-icon-size);\n}\n.actions-grid .actions-button-media i.icon {\n width: var(--f7-actions-grid-button-icon-size);\n height: var(--f7-actions-grid-button-icon-size);\n font-size: var(--f7-actions-grid-button-icon-size);\n}\n.actions-grid .actions-button-text {\n margin-left: 0 !important;\n text-align: center !important;\n margin-top: 8px;\n line-height: 1.33em;\n height: 1.33em;\n font-size: var(--f7-actions-grid-button-font-size);\n}\n.ios .actions-group {\n border-radius: var(--f7-actions-border-radius);\n}\n.ios .actions-button,\n.ios .actions-label {\n background: var(--f7-actions-bg-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .ios .actions-button,\n .ios-translucent-modals .ios .actions-label {\n background-color: rgba(var(--f7-actions-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.ios .actions-button:first-child,\n.ios .actions-label:first-child {\n border-radius: var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;\n}\n.ios .actions-button:last-child,\n.ios .actions-label:last-child {\n border-radius: 0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius);\n}\n.ios .actions-button:last-child:after,\n.ios .actions-label:last-child:after {\n display: none !important;\n}\n.ios .actions-button:first-child:last-child,\n.ios .actions-label:first-child:last-child {\n border-radius: var(--f7-actions-border-radius);\n}\n.ios .actions-button b,\n.ios .actions-label b,\n.ios .actions-button.actions-button-strong,\n.ios .actions-label.actions-button-strong {\n font-weight: 600;\n}\n.ios .actions-grid .actions-group {\n border-radius: 0;\n background: var(--f7-actions-bg-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .ios .actions-grid .actions-group {\n background-color: rgba(var(--f7-actions-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.ios .actions-grid .actions-group:first-child {\n border-radius: var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;\n}\n.ios .actions-grid .actions-group:last-child {\n border-radius: 0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius);\n}\n.ios .actions-grid .actions-group:first-child:last-child {\n border-radius: var(--f7-actions-border-radius);\n}\n.ios .actions-grid .actions-button,\n.ios .actions-grid .actions-label {\n border-radius: 0 !important;\n}\n.ios .actions-button-media {\n margin-left: 16px;\n}\n.ios .actions-button-media + .actions-button-text {\n text-align: left;\n margin-left: 16px;\n}\n.md .actions-modal {\n background-color: var(--f7-actions-bg-color);\n border-radius: var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;\n padding-bottom: var(--f7-safe-area-bottom);\n}\n.md .actions-button {\n transition-duration: 300ms;\n}\n.md .actions-button b,\n.md .actions-label b,\n.md .actions-button.actions-button-strong,\n.md .actions-label.actions-button-strong {\n font-weight: 500;\n}\n.md .actions-button-media {\n min-width: 40px;\n}\n.md .actions-button-media + .actions-button-text {\n margin-left: 16px;\n}\n/* === Sheet Modal === */\n:root {\n --f7-sheet-height: 260px;\n --f7-sheet-push-offset: var(--f7-safe-area-top);\n}\n.ios {\n --f7-sheet-border-radius: 0px;\n --f7-sheet-border-color: var(--f7-bars-border-color);\n --f7-sheet-transition-timing-function: initial;\n --f7-sheet-push-border-radius: 10px;\n --f7-sheet-transition-duration: 300ms;\n --f7-sheet-bg-color: #fff;\n}\n.ios .dark,\n.ios.dark {\n --f7-sheet-bg-color: #202020;\n}\n.md {\n --f7-sheet-border-radius: 16px;\n --f7-sheet-push-border-radius: 16px;\n --f7-sheet-border-color: transparent;\n --f7-sheet-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n --f7-sheet-transition-duration: 400ms;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-sheet-bg-color: var(--f7-md-surface);\n}\n.sheet-backdrop {\n z-index: 11000;\n}\n.sheet-backdrop-unique {\n z-index: 12500;\n}\n.sheet-modal {\n overflow: hidden;\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n height: var(--f7-sheet-height);\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n transform: translate3d(0, 100%, 0);\n background: var(--f7-sheet-bg-color);\n z-index: 12500;\n will-change: transform, opacity;\n}\n.sheet-modal.modal-in,\n.sheet-modal.modal-out {\n transition-duration: var(--f7-sheet-transition-duration);\n}\n.sheet-modal.not-animated {\n transition-duration: 0ms;\n}\n.sheet-modal.modal-in {\n display: block;\n transform: translate3d(0, 0, 0);\n}\n.sheet-modal.modal-in-swipe-step,\n.sheet-modal.modal-in-breakpoint {\n display: block;\n transform: translate3d(0, var(--f7-sheet-breakpoint, var(--f7-sheet-swipe-step, 0)), 0);\n}\n.sheet-modal.modal-out {\n transform: translate3d(0, 100%, 0);\n}\n.sheet-modal .sheet-modal-inner {\n height: 100%;\n position: relative;\n overflow: hidden;\n}\n.sheet-modal .toolbar {\n --f7-safe-area-bottom: 0px;\n position: relative;\n width: 100%;\n}\n.sheet-modal .toolbar:after,\n.sheet-modal .toolbar:before {\n display: none;\n}\n.sheet-modal .toolbar + .sheet-modal-inner {\n height: calc(100% - var(--f7-toolbar-height));\n}\n.sheet-modal .toolbar + .sheet-modal-inner .page-content {\n --f7-page-toolbar-top-offset: 0px;\n --f7-page-toolbar-bottom-offset: 0px;\n}\n.sheet-backdrop,\n.sheet-modal {\n transition-timing-function: var(--f7-sheet-transition-timing-function);\n}\n.sheet-modal-top {\n border-radius: 0 0 var(--f7-sheet-border-radius) var(--f7-sheet-border-radius);\n}\n.sheet-modal-top:after {\n content: '';\n position: absolute;\n background-color: var(--f7-sheet-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.sheet-modal-top:after {\n z-index: 700;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n transform-style: preserve-3d;\n}\n.sheet-modal-bottom,\n.sheet-modal:not(.sheet-modal-top) {\n --f7-safe-area-top: 0px;\n border-radius: var(--f7-sheet-border-radius) var(--f7-sheet-border-radius) 0 0;\n}\n.sheet-modal-bottom:before,\n.sheet-modal:not(.sheet-modal-top):before {\n content: '';\n position: absolute;\n background-color: var(--f7-sheet-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.sheet-modal-bottom:before,\n.sheet-modal:not(.sheet-modal-top):before {\n z-index: 700;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n transform-style: preserve-3d;\n}\n.sheet-modal-top {\n --f7-safe-area-bottom: 0px;\n bottom: auto;\n top: 0;\n transform: translate3d(0, -100%, 0);\n}\n.sheet-modal-top.modal-out {\n transform: translate3d(0, -100%, 0);\n}\n.sheet-modal-top .toolbar-bottom {\n position: absolute;\n}\n.sheet-modal-top .page-content {\n padding-top: var(--f7-safe-area-top);\n}\nhtml.with-modal-sheet-push .sheet-modal-push,\nhtml.with-modal-sheet-push-closing .sheet-modal-push {\n --f7-sheet-border-color: transparent;\n border-radius: var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius) 0 0;\n overflow: hidden;\n}\nhtml.with-modal-sheet-push .sheet-modal-push .view,\nhtml.with-modal-sheet-push-closing .sheet-modal-push .view,\nhtml.with-modal-sheet-push .sheet-modal-push .page,\nhtml.with-modal-sheet-push-closing .sheet-modal-push .page {\n --f7-safe-area-top: 0px;\n}\nhtml.with-modal-sheet-push .sheet-modal-push.sheet-modal-top,\nhtml.with-modal-sheet-push-closing .sheet-modal-push.sheet-modal-top {\n border-radius: 0 0 var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius);\n}\nhtml.with-modal-sheet-push .framework7-root,\nhtml.with-modal-sheet-push-closing .framework7-root {\n background: #000;\n}\nhtml.with-modal-sheet-push .framework7-root > .views,\nhtml.with-modal-sheet-push-closing .framework7-root > .views,\nhtml.with-modal-sheet-push .framework7-root > .view,\nhtml.with-modal-sheet-push-closing .framework7-root > .view {\n transition-duration: var(--f7-sheet-transition-duration);\n transition-timing-function: var(--f7-sheet-transition-timing-function);\n}\nhtml.with-modal-sheet-push.dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push.dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push .dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push .dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push .dark.framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-sheet-push .dark.framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-sheet-push .framework7-root > .views.dark:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-sheet-push .framework7-root > .view.dark:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .view.dark:after {\n content: '';\n position: absolute;\n pointer-events: none;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(255, 255, 255, 0.1);\n z-index: 13000;\n opacity: 1;\n transition-duration: var(--f7-sheet-transition-duration);\n transition-timing-function: var(--f7-sheet-transition-timing-function);\n animation: sheet-dark-push-overlay-fade-in var(--f7-sheet-transition-duration);\n animation-timing-function: var(--f7-sheet-transition-timing-function);\n}\nhtml.with-modal-sheet-push .framework7-root > .views,\nhtml.with-modal-sheet-push .framework7-root > .view {\n border-radius: var(--f7-sheet-push-border-radius);\n transform: translate3d(0, 0, 0px) scale(var(--f7-sheet-push-scale, 1)) !important;\n}\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .view.dark:after {\n opacity: 0;\n animation: none;\n}\n@keyframes sheet-dark-push-overlay-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n.md .sheet-modal .toolbar a.link:not(.tab-link) {\n flex-shrink: 0;\n}\n/* === Toast === */\n:root {\n --f7-toast-font-size: 14px;\n --f7-toast-icon-size: 48px;\n --f7-toast-max-width: 568px;\n}\n.ios {\n --f7-toast-text-color: #fff;\n --f7-toast-bg-color: rgba(0, 0, 0, 0.75);\n --f7-toast-bg-color-rgb: 0, 0, 0;\n --f7-toast-padding-horizontal: 16px;\n --f7-toast-padding-vertical: 12px;\n --f7-toast-border-radius: 8px;\n --f7-toast-button-min-width: 64px;\n}\n.md {\n --f7-toast-padding-horizontal: 24px;\n --f7-toast-padding-vertical: 14px;\n --f7-toast-border-radius: 16px;\n --f7-toast-button-min-width: 64px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-toast-text-color: var(--f7-md-on-surface);\n --f7-toast-bg-color: var(--f7-md-surface-5);\n}\n.toast {\n transition-property: transform, opacity;\n position: absolute;\n max-width: var(--f7-toast-max-width);\n z-index: 20000;\n color: var(--f7-toast-text-color);\n font-size: var(--f7-toast-font-size);\n box-sizing: border-box;\n background-color: var(--f7-toast-bg-color);\n opacity: 0;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .toast {\n background-color: rgba(var(--f7-toast-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.toast.modal-in {\n opacity: 1;\n}\n.toast .toast-content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-sizing: border-box;\n padding: var(--f7-toast-padding-vertical) var(--f7-toast-padding-horizontal);\n}\n.toast .toast-text {\n line-height: 20px;\n flex-shrink: 1;\n min-width: 0;\n}\n.toast .toast-button {\n flex-shrink: 0;\n min-width: var(--f7-toast-button-min-width);\n margin-top: -8px;\n margin-bottom: -8px;\n}\n.toast.toast-with-icon .toast-content {\n display: block;\n text-align: center;\n}\n.toast.toast-with-icon .toast-text {\n text-align: center;\n}\n.toast.toast-with-icon .toast-icon .f7-icons,\n.toast.toast-with-icon .toast-icon .material-icons {\n font-size: var(--f7-toast-icon-size);\n}\n.toast.toast-center {\n top: 50%;\n}\n.toast.toast-top {\n margin-top: var(--f7-safe-area-top);\n}\n.ios .toast {\n transition-duration: 300ms;\n width: 100%;\n left: 0;\n}\n.ios .toast.toast-top {\n top: 0;\n transform: translate3d(0, -100%, 0);\n}\n.ios .toast.toast-top.modal-in {\n transform: translate3d(0, 0%, 0);\n}\n.ios .toast.toast-center {\n width: auto;\n left: 50%;\n border-radius: var(--f7-toast-border-radius);\n transform: translate3d(-50%, -50%, 0);\n}\n.ios .toast.toast-center.modal-in {\n transform: translate3d(-50%, -50%, 0);\n}\n.ios .toast.toast-bottom {\n bottom: 0;\n transform: translate3d(0, 100%, 0);\n}\n.ios .toast.toast-bottom.modal-in {\n transform: translate3d(0, 0%, 0);\n}\n@media (max-width: 568px) {\n .ios .toast.toast-top {\n margin-top: 0;\n }\n .ios .toast.toast-top .toast-content {\n padding-top: calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-top));\n }\n .ios .toast.toast-bottom .toast-content {\n padding-bottom: calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-bottom));\n }\n}\n@media (min-width: 569px) {\n .ios .toast {\n left: 50%;\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n border-radius: var(--f7-toast-border-radius);\n }\n .ios .toast.toast-top {\n top: 16px;\n }\n .ios .toast.toast-center {\n margin-left: 0;\n }\n .ios .toast.toast-bottom {\n margin-bottom: calc(16px + var(--f7-safe-area-bottom));\n }\n}\n@media (min-width: 1024px) {\n .ios .toast {\n margin-left: 0;\n width: auto;\n }\n .ios .toast.toast-horizontal-left {\n left: 16px;\n }\n .ios .toast.toast-horizontal-right {\n left: auto;\n right: 16px;\n }\n .ios .toast.toast-horizontal-center {\n left: 50%;\n width: var(--f7-toast-max-width);\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n }\n}\n.ios .toast-button {\n margin-left: 16px;\n margin-right: calc(-1 * var(--f7-button-padding-horizontal));\n}\n.md .toast {\n transition-duration: 200ms;\n border-radius: var(--f7-toast-border-radius);\n width: calc(100% - 16px);\n transform: scale(0.9);\n left: 8px;\n}\n.md .toast.modal-in {\n transform: scale(1);\n}\n.md .toast.modal-out {\n transform: scale(1);\n}\n.md .toast.toast-top {\n top: 8px;\n}\n.md .toast.toast-center {\n left: 50%;\n width: auto;\n transform: scale(0.9) translate3d(-55%, -55%, 0);\n}\n.md .toast.toast-center.modal-in {\n transform: scale(1) translate3d(-50%, -50%, 0);\n}\n.md .toast.toast-center.modal-out {\n transform: scale(1) translate3d(-50%, -50%, 0);\n}\n.md .toast.toast-bottom {\n bottom: calc(8px + var(--f7-safe-area-bottom));\n}\n@media (min-width: 584px) {\n .md .toast {\n left: 50%;\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n }\n .md .toast.toast-center {\n margin-left: 0;\n }\n}\n@media (min-width: 1024px) {\n .md .toast {\n margin-left: 0;\n width: auto;\n }\n .md .toast.toast-horizontal-left {\n left: 24px;\n }\n .md .toast.toast-horizontal-right {\n left: auto;\n right: 24px;\n }\n .md .toast.toast-horizontal-center {\n left: 50%;\n width: var(--f7-toast-max-width);\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n }\n .md .toast.toast-bottom {\n bottom: calc(24px + var(--f7-safe-area-bottom));\n }\n .md .toast.toast-top {\n top: 24px;\n }\n}\n.md .toast-button {\n margin-left: 16px;\n margin-right: -8px;\n}\n/* === Preloader === */\n:root {\n --f7-preloader-modal-padding: 8px;\n --f7-preloader-modal-bg-color: rgba(0, 0, 0, 0.8);\n}\n.ios {\n --f7-preloader-color: #6c6c6c;\n --f7-preloader-size: 20px;\n --f7-preloader-modal-preloader-size: 34px;\n --f7-preloader-modal-border-radius: 5px;\n}\n.md {\n --f7-preloader-color: #757575;\n --f7-preloader-size: 32px;\n --f7-preloader-modal-preloader-size: 32px;\n --f7-preloader-modal-border-radius: 4px;\n}\n.preloader {\n display: inline-block;\n vertical-align: middle;\n width: var(--f7-preloader-size);\n height: var(--f7-preloader-size);\n font-size: 0;\n position: relative;\n}\n.preloader .preloader-inner {\n width: 100%;\n height: 100%;\n display: block;\n position: relative;\n}\n/* === Preloader Modal === */\n.preloader-backdrop {\n visibility: visible;\n opacity: 0;\n background: none;\n z-index: 14000;\n}\n.preloader-modal {\n position: absolute;\n left: 50%;\n top: 50%;\n padding: var(--f7-preloader-modal-padding);\n background: var(--f7-preloader-modal-bg-color);\n z-index: 14500;\n transform: translateX(-50%) translateY(-50%);\n border-radius: var(--f7-preloader-modal-border-radius);\n}\n.preloader-modal .preloader {\n --f7-preloader-size: var(--f7-preloader-modal-preloader-size);\n display: block !important;\n}\nhtml.with-modal-preloader .page-content,\n.with-modal-preloader .page-content,\n.with-modal-preloader.page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\n.preloader[class*='color-'] {\n --f7-preloader-color: var(--f7-theme-color);\n}\n.preloader.color-white {\n --f7-preloader-color: #fff;\n}\n.preloader.color-black {\n --f7-preloader-color: #000;\n}\n.ios .preloader {\n color: var(--f7-preloader-color);\n}\n.ios .preloader-inner {\n animation: ios-preloader-spin 1s steps(8, end) infinite;\n}\n.ios .preloader-inner-line {\n display: block;\n width: 11.6%;\n height: 33.33%;\n border-radius: 100px;\n background: currentColor;\n position: absolute;\n left: 50%;\n top: 50%;\n transform-origin: center 150%;\n}\n.ios .preloader-multi-color .preloader-inner-line,\n.ios .preloader.color-multi .preloader-inner-line {\n animation: ios-preloader-multicolor 3s linear infinite;\n}\n.ios .preloader-inner-line:nth-child(1) {\n transform: translate(-50%, -150%) rotate(0deg);\n opacity: 0.27;\n}\n.ios .preloader-inner-line:nth-child(2) {\n transform: translate(-50%, -150%) rotate(45deg);\n opacity: 0.35285714;\n}\n.ios .preloader-inner-line:nth-child(3) {\n transform: translate(-50%, -150%) rotate(90deg);\n opacity: 0.43571429;\n}\n.ios .preloader-inner-line:nth-child(4) {\n transform: translate(-50%, -150%) rotate(135deg);\n opacity: 0.51857143;\n}\n.ios .preloader-inner-line:nth-child(5) {\n transform: translate(-50%, -150%) rotate(180deg);\n opacity: 0.60142857;\n}\n.ios .preloader-inner-line:nth-child(6) {\n transform: translate(-50%, -150%) rotate(225deg);\n opacity: 0.68428571;\n}\n.ios .preloader-inner-line:nth-child(7) {\n transform: translate(-50%, -150%) rotate(270deg);\n opacity: 0.76714286;\n}\n.ios .preloader-inner-line:nth-child(8) {\n transform: translate(-50%, -150%) rotate(315deg);\n opacity: 0.85;\n}\n@keyframes ios-preloader-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n@keyframes ios-preloader-multicolor {\n 0%,\n 100% {\n background-color: #2196f3;\n }\n 25% {\n background-color: #ff3b30;\n }\n 50% {\n background-color: #4cd964;\n }\n 75% {\n background-color: #ff9500;\n }\n}\n.md .preloader {\n color: var(--f7-preloader-color);\n}\n.md .preloader-inner {\n animation: md-preloader-rotate 1.4s linear infinite;\n}\n.md .preloader-inner circle {\n fill: none;\n stroke: currentColor;\n animation: md-preloader-circle-rotate 5.6s ease-in-out infinite;\n stroke-dasharray: 100px;\n stroke-dashoffset: 80px;\n stroke-width: 4;\n transform: rotate(-90deg);\n transform-origin: 18px 18px;\n}\n.md .preloader-multi-color circle,\n.md .preloader.color-multi circle {\n animation: md-preloader-circle-rotate 5.6s ease-in-out infinite, md-preloader-multicolor 5.6s ease-in-out infinite;\n}\n@keyframes md-preloader-multicolor {\n 0%,\n 100% {\n stroke: #4285f4;\n }\n 75% {\n stroke: #1b9a59;\n }\n 50% {\n stroke: #f7c223;\n }\n 25% {\n stroke: #de3e35;\n }\n}\n@keyframes md-preloader-rotate {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n@keyframes md-preloader-circle-rotate {\n 0% {\n transform: rotate(-90deg);\n stroke-dashoffset: 100px;\n }\n 12.5% {\n transform: rotate(-90deg);\n stroke-dashoffset: 25px;\n }\n 25% {\n stroke-dashoffset: 100px;\n transform: rotate(180deg);\n }\n 25.1% {\n transform: rotate(-180deg);\n stroke-dashoffset: 100px;\n }\n 37.5% {\n transform: rotate(-180deg);\n stroke-dashoffset: 25px;\n }\n 50% {\n stroke-dashoffset: 100px;\n transform: rotate(90deg);\n }\n 50.1% {\n transform: rotate(90deg);\n stroke-dashoffset: 100px;\n }\n 62.5% {\n transform: rotate(90deg);\n stroke-dashoffset: 25px;\n }\n 75% {\n stroke-dashoffset: 100px;\n transform: rotate(360deg);\n }\n 75.1% {\n transform: rotate(0deg);\n stroke-dashoffset: 100px;\n }\n 87.5% {\n transform: rotate(0deg);\n stroke-dashoffset: 25px;\n }\n 100% {\n stroke-dashoffset: 100px;\n transform: rotate(270deg);\n }\n}\n/* === Progressbar === */\n:root {\n /*\n --f7-progressbar-progress-color: var(--f7-theme-color);\n */\n}\n.ios {\n --f7-progressbar-height: 4px;\n --f7-progressbar-border-radius: 4px;\n --f7-progressbar-bg-color: rgba(0, 0, 0, 0.3);\n}\n.ios .dark,\n.ios.dark {\n --f7-progressbar-bg-color: rgba(255, 255, 255, 0.3);\n}\n.md {\n --f7-progressbar-height: 4px;\n --f7-progressbar-border-radius: 0px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-progressbar-bg-color: rgba(var(--f7-theme-color-rgb), 0.5);\n}\n.progressbar,\n.progressbar-infinite {\n width: 100%;\n overflow: hidden;\n position: relative;\n display: block;\n transform-style: preserve-3d;\n background: var(--f7-progressbar-bg-color, rgba(var(--f7-theme-color-rgb), 0.5));\n transform-origin: center top;\n height: var(--f7-progressbar-height);\n border-radius: var(--f7-progressbar-border-radius);\n}\n.progressbar {\n vertical-align: middle;\n}\n.progressbar span {\n background-color: var(--f7-progressbar-progress-color, var(--f7-theme-color));\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n transition-duration: 150ms;\n left: 0;\n transform: translate3d(-100%, 0, 0);\n}\n.progressbar-infinite {\n z-index: 15000;\n}\n.progressbar-infinite:before,\n.progressbar-infinite:after {\n content: '';\n position: absolute;\n top: 0;\n width: 100%;\n height: 100%;\n transform: translate3d(0, 0, 0);\n display: block;\n background-color: var(--f7-progressbar-progress-color, var(--f7-theme-color));\n left: 0;\n transform-origin: left center;\n}\n.progressbar-infinite.color-multi {\n background: none !important;\n}\n.progressbar-in {\n animation: progressbar-in 150ms forwards;\n}\n.progressbar-out {\n animation: progressbar-out 150ms forwards;\n}\nbody > .progressbar,\n.view > .progressbar,\n.views > .progressbar,\n.page > .progressbar,\n.panel > .progressbar,\n.popup > .progressbar,\n.framework7-root > .progressbar,\nbody > .progressbar-infinite,\n.view > .progressbar-infinite,\n.views > .progressbar-infinite,\n.page > .progressbar-infinite,\n.panel > .progressbar-infinite,\n.popup > .progressbar-infinite,\n.framework7-root > .progressbar-infinite {\n position: absolute;\n left: 0;\n top: 0;\n z-index: 15000;\n border-radius: 0 !important;\n transform-origin: center top !important;\n}\n@keyframes progressbar-in {\n from {\n opacity: 0;\n transform: scaleY(0);\n }\n to {\n opacity: 1;\n transform: scaleY(1);\n }\n}\n@keyframes progressbar-out {\n from {\n opacity: 1;\n transform: scaleY(1);\n }\n to {\n opacity: 0;\n transform: scaleY(0);\n }\n}\n.ios .progressbar-infinite:before {\n animation: ios-progressbar-infinite 1s linear infinite;\n}\n.ios .progressbar-infinite:after {\n display: none;\n}\n.ios .progressbar-infinite.color-multi:before {\n width: 400%;\n background-image: linear-gradient(to right, #4cd964, #5ac8fa, #007aff, #34aadc, #5856d6, #ff2d55, #5856d6, #34aadc, #007aff, #5ac8fa, #4cd964);\n background-size: 25% 100%;\n background-repeat: repeat-x;\n animation: ios-progressbar-infinite-multicolor 3s linear infinite;\n}\n@keyframes ios-progressbar-infinite {\n 0% {\n transform: translate3d(-100%, 0, 0);\n }\n 100% {\n transform: translate3d(100%, 0, 0);\n }\n}\n@keyframes ios-progressbar-infinite-multicolor {\n 0% {\n transform: translate3d(0%, 0, 0);\n }\n 100% {\n transform: translate3d(-50%, 0, 0);\n }\n}\n.md .progressbar-infinite:before {\n animation: md-progressbar-infinite-1 2s linear infinite;\n}\n.md .progressbar-infinite:after {\n animation: md-progressbar-infinite-2 2s linear infinite;\n}\n.md .progressbar-infinite.color-multi:before {\n background: none;\n animation: md-progressbar-infinite-multicolor-bg 3s step-end infinite;\n}\n.md .progressbar-infinite.color-multi:after {\n background: none;\n animation: md-progressbar-infinite-multicolor-fill 3s linear infinite;\n transform-origin: center center;\n}\n@keyframes md-progressbar-infinite-1 {\n 0% {\n transform: translateX(-10%) scaleX(0.1);\n }\n 25% {\n transform: translateX(30%) scaleX(0.6);\n }\n 50% {\n transform: translateX(100%) scaleX(1);\n }\n 100% {\n transform: translateX(100%) scaleX(1);\n }\n}\n@keyframes md-progressbar-infinite-2 {\n 0% {\n transform: translateX(-100%) scaleX(1);\n }\n 40% {\n transform: translateX(-100%) scaleX(1);\n }\n 75% {\n transform: translateX(60%) scaleX(0.35);\n }\n 90% {\n transform: translateX(100%) scaleX(0.1);\n }\n 100% {\n transform: translateX(100%) scaleX(0.1);\n }\n}\n@keyframes md-progressbar-infinite-multicolor-bg {\n 0% {\n background-color: #4caf50;\n }\n 25% {\n background-color: #f44336;\n }\n 50% {\n background-color: #2196f3;\n }\n 75% {\n background-color: #ffeb3b;\n }\n}\n@keyframes md-progressbar-infinite-multicolor-fill {\n 0% {\n transform: scaleX(0);\n background-color: #f44336;\n }\n 24.9% {\n transform: scaleX(1);\n background-color: #f44336;\n }\n 25% {\n transform: scaleX(0);\n background-color: #2196f3;\n }\n 49.9% {\n transform: scaleX(1);\n background-color: #2196f3;\n }\n 50% {\n transform: scaleX(0);\n background-color: #ffeb3b;\n }\n 74.9% {\n transform: scaleX(1);\n background-color: #ffeb3b;\n }\n 75% {\n transform: scaleX(0);\n background-color: #4caf50;\n }\n 100% {\n transform: scaleX(1);\n background-color: #4caf50;\n }\n}\n/* === Sortable === */\n.ios {\n --f7-sortable-handler-width: 36px;\n --f7-sortable-sorting-item-box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.6);\n --f7-sortable-handler-color: rgba(0, 0, 0, 0.22);\n --f7-sortable-sorting-item-bg-color: rgba(255, 255, 255, 0.8);\n}\n.ios .dark,\n.ios.dark {\n --f7-sortable-sorting-item-bg-color: rgba(50, 50, 50, 0.8);\n --f7-sortable-handler-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-sortable-handler-width: 42px;\n --f7-sortable-sorting-item-box-shadow: none;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-sortable-handler-color: var(--f7-md-on-surface-variant);\n --f7-sortable-sorting-item-bg-color: var(--f7-md-surface-3);\n}\n.sortable .sortable-handler {\n width: var(--f7-sortable-handler-width);\n height: 100%;\n position: absolute;\n top: 0;\n z-index: 10;\n opacity: 0;\n pointer-events: none;\n cursor: move;\n transition-duration: 300ms;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n right: var(--f7-safe-area-right);\n}\n.sortable .sortable-handler:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n transition-duration: 300ms;\n transform: translateX(10px);\n color: var(--f7-sortable-handler-color);\n overflow: hidden;\n height: 20px;\n width: 18px;\n}\n.sortable li.sorting {\n z-index: 50;\n background: var(--f7-sortable-sorting-item-bg-color);\n transition-duration: 0ms;\n box-shadow: var(--f7-sortable-sorting-item-box-shadow);\n}\n.sortable li.sorting .item-inner:after {\n display: none !important;\n}\n.sortable-opposite .sortable-handler {\n left: var(--f7-safe-area-right);\n right: auto;\n}\n.sortable-opposite .sortable-handler:after {\n transform: translateX(-10px);\n}\n.sortable:not(.sortable-opposite) .item-inner,\n.sortable-opposite .item-content,\n.sortable.simple-list li,\n.sortable-opposite.links-list li a {\n transition-duration: 300ms;\n transition-property: all;\n}\n.sortable-sorting li {\n transition-duration: 300ms;\n}\n.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler {\n pointer-events: auto;\n touch-action: none;\n opacity: 1;\n}\n.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler:after {\n transform: translateX(0px);\n}\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner:before,\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-title-row:before,\n.sortable-enabled:not(.sortable-opposite).links-list li:not(.no-sorting):not(.disallow-sorting) > a:before {\n display: none;\n}\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-inner,\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link.no-chevron .item-inner,\n.sortable-enabled.no-chevron:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,\n.sortable-enabled :not(.sortable-opposite).no-chevron .item-link .item-inner,\n.no-chevron .sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,\n.simple-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting),\n.links-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) a {\n padding-right: calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right));\n}\n.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .item-content,\n.simple-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting),\n.links-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) a {\n padding-left: calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right));\n}\n.ios .sortable-handler:after {\n content: 'sort_ios';\n}\n.md .sortable-handler:after {\n content: 'sort_md';\n}\n/* === Swipeout === */\n:root {\n --f7-swipeout-delete-button-bg-color: #ff3b30;\n --f7-swipeout-button-text-color: #fff;\n --f7-swipeout-button-padding-vertical: 0px;\n --f7-swipeout-button-bg-color: rgba(0, 0, 0, 0.22);\n}\n:root .dark,\n:root.dark {\n --f7-swipeout-button-bg-color: rgba(255, 255, 255, 0.55);\n}\n.ios {\n --f7-swipeout-button-padding-horizontal: 30px;\n --f7-swipeout-button-font-size: inherit;\n --f7-swipeout-button-font-weight: inherit;\n}\n.md {\n --f7-swipeout-button-padding-horizontal: 24px;\n --f7-swipeout-button-font-size: 14px;\n --f7-swipeout-button-font-weight: 500;\n}\n.md .dark,\n.md.dark {\n --f7-swipeout-button-text-color: #000;\n}\n.swipeout {\n overflow: hidden;\n transform-style: preserve-3d;\n}\n.swipeout-deleting {\n transition-duration: 300ms;\n}\n.swipeout-deleting .swipeout-content {\n transform: translateX(-100%);\n}\n.swipeout-transitioning .swipeout-content,\n.swipeout-transitioning .swipeout-actions-right a,\n.swipeout-transitioning .swipeout-actions-left a,\n.swipeout-transitioning .swipeout-overswipe {\n transition-duration: 300ms;\n transition-property: transform, left;\n}\n.swipeout-content {\n position: relative;\n z-index: 10;\n}\n.swipeout-overswipe {\n transition-duration: 200ms;\n transition-property: left;\n}\n.swipeout-actions-left,\n.swipeout-actions-right {\n position: absolute;\n top: 0;\n height: 100%;\n display: flex;\n direction: ltr;\n}\n.swipeout-actions-left > a,\n.swipeout-actions-right > a,\n.swipeout-actions-left > button,\n.swipeout-actions-right > button,\n.swipeout-actions-left > span,\n.swipeout-actions-right > span,\n.swipeout-actions-left > div,\n.swipeout-actions-right > div {\n color: var(--f7-swipeout-button-text-color);\n background: var(--f7-swipeout-button-bg-color);\n padding: var(--f7-swipeout-button-padding-vertical) var(--f7-swipeout-button-padding-horizontal);\n display: flex;\n align-items: center;\n position: relative;\n left: 0;\n font-size: var(--f7-swipeout-button-font-size);\n font-weight: var(--f7-swipeout-button-font-weight);\n}\n.swipeout-actions-left > a:after,\n.swipeout-actions-right > a:after,\n.swipeout-actions-left > button:after,\n.swipeout-actions-right > button:after,\n.swipeout-actions-left > span:after,\n.swipeout-actions-right > span:after,\n.swipeout-actions-left > div:after,\n.swipeout-actions-right > div:after {\n content: '';\n position: absolute;\n top: 0;\n width: 600%;\n height: 100%;\n background: inherit;\n z-index: -1;\n transform: translate3d(0, 0, 0);\n pointer-events: none;\n}\n.swipeout-actions-left .swipeout-delete,\n.swipeout-actions-right .swipeout-delete {\n background: var(--f7-swipeout-delete-button-bg-color);\n}\n.swipeout-actions-right {\n right: 0%;\n transform: translateX(calc(100% + 1px));\n}\n.swipeout-actions-right > a:after,\n.swipeout-actions-right > button:after,\n.swipeout-actions-right > span:after,\n.swipeout-actions-right > div:after {\n left: 100%;\n}\n.swipeout-actions-right > a:last-child,\n.swipeout-actions-right > button:last-child,\n.swipeout-actions-right > span:last-child,\n.swipeout-actions-right > div:last-child {\n padding-right: calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-right));\n}\n.swipeout-actions-left {\n left: 0%;\n transform: translateX(calc(-100% - 1px));\n}\n.swipeout-actions-left > a:after,\n.swipeout-actions-left > button:after,\n.swipeout-actions-left > span:after,\n.swipeout-actions-left > div:after {\n right: 100%;\n}\n.swipeout-actions-left > a:first-child,\n.swipeout-actions-left > button:first-child,\n.swipeout-actions-left > span:first-child,\n.swipeout-actions-left > div:first-child {\n padding-left: calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-left));\n}\n.swipeout-actions-left [class*='color-'],\n.swipeout-actions-right [class*='color-'] {\n --f7-swipeout-button-bg-color: var(--f7-theme-color);\n}\n/* === Accordion === */\n:root {\n --f7-accordion-chevron-icon-down: 'chevron_down';\n --f7-accordion-chevron-icon-up: 'chevron_up';\n}\n.accordion-item-toggle {\n cursor: pointer;\n}\n.list.accordion-list .accordion-item-toggle {\n transition-duration: 300ms;\n position: relative;\n overflow: hidden;\n}\n.list.accordion-list .accordion-item-toggle.active-state {\n transition-duration: 300ms;\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.list.accordion-list .accordion-item-toggle.active-state > .item-inner:after {\n background-color: transparent;\n}\n.list.accordion-list .accordion-item-toggle .item-inner {\n transition-duration: 300ms;\n transition-property: background-color;\n}\n.list.accordion-list .accordion-item-toggle .item-inner:after {\n transition-duration: 300ms;\n}\n.list.accordion-list .accordion-item-toggle .ripple-wave {\n z-index: 0;\n}\n.accordion-item .item-link .item-inner:after {\n transition-duration: 300ms;\n}\n.accordion-item .list,\n.accordion-item .block {\n margin-top: 0;\n margin-bottom: 0;\n}\n.accordion-item .block > h1:first-child,\n.accordion-item .block > h2:first-child,\n.accordion-item .block > h3:first-child,\n.accordion-item .block > h4:first-child,\n.accordion-item .block > p:first-child {\n margin-top: 10px;\n}\n.accordion-item .block > h1:last-child,\n.accordion-item .block > h2:last-child,\n.accordion-item .block > h3:last-child,\n.accordion-item .block > h4:last-child,\n.accordion-item .block > p:last-child {\n margin-bottom: 10px;\n}\n.accordion-item-opened .accordion-item-toggle .item-inner:after,\n.accordion-item-opened > .item-link .item-inner:after {\n background-color: transparent;\n}\n.list li.accordion-item ul {\n padding-left: 0;\n}\n.accordion-item-content {\n position: relative;\n overflow: hidden;\n height: 0;\n font-size: 14px;\n transition-duration: 300ms;\n}\n.accordion-item-opened > .accordion-item-content {\n height: auto;\n}\nhtml.device-android-4 .accordion-item-content {\n transform: none;\n}\n.list .accordion-item-toggle .item-inner:before {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n top: 50%;\n font-size: var(--f7-list-chevron-icon-font-size);\n color: var(--f7-list-chevron-icon-color);\n pointer-events: none;\n right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.list:not(.accordion-opposite) .accordion-item-toggle .item-inner {\n padding-right: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.accordion-opposite .accordion-item-toggle.item-link .item-inner,\n.accordion-opposite .accordion-item-toggle .item-inner,\n.accordion-opposite .accordion-item > .item-link > .item-inner,\n.accordion-opposite .accordion-item > .item-link > .item-content > .item-inner {\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.accordion-opposite .accordion-item > .item-link > .item-title-row {\n padding-right: 0;\n}\n.accordion-opposite .accordion-item-toggle.item-link .item-inner:before,\n.accordion-opposite .accordion-item-toggle .item-inner:before,\n.accordion-opposite .accordion-item > .item-link > .item-inner:before,\n.accordion-opposite .accordion-item > .item-link > .item-content > .item-inner:before,\n.accordion-opposite .accordion-item > .item-link .item-title-row:before {\n display: none;\n}\n.accordion-opposite .accordion-item-toggle > .item-content,\n.accordion-opposite .accordion-item-toggle.item-content,\n.accordion-opposite .accordion-item > .item-content,\n.accordion-opposite .accordion-item > .item-link > .item-content,\n.accordion-opposite.links-list .accordion-item > a {\n position: relative;\n padding-left: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.accordion-opposite .accordion-item-toggle > .item-content:before,\n.accordion-opposite .accordion-item-toggle.item-content:before,\n.accordion-opposite .accordion-item > .item-content:before,\n.accordion-opposite .accordion-item > .item-link > .item-content:before,\n.accordion-opposite.links-list .accordion-item > a:before {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n top: 50%;\n font-size: var(--f7-list-chevron-icon-font-size);\n color: var(--f7-list-chevron-icon-color);\n pointer-events: none;\n content: var(--f7-accordion-chevron-icon-down);\n width: 14px;\n height: 8px;\n margin-top: -4px;\n line-height: 8px;\n transform: translateX(-50%);\n left: calc((var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal)) / 2 + var(--f7-safe-area-left));\n}\n.list .accordion-item-toggle.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.list .accordion-item-toggle .item-inner:before,\n.list:not(.media-list) .accordion-item:not(.media-item) .accordion-item-toggle .item-inner:before,\n.list:not(.media-list) .accordion-item:not(.media-item) > .item-link .item-inner:before,\n.media-list .accordion-item .accordion-item-toggle .item-title-row:before,\n.media-list .accordion-item > .item-link .item-title-row:before,\n.accordion-item.media-item .accordion-item-toggle .item-title-row:before,\n.accordion-item.media-item > .item-link .item-title-row:before,\n.links-list .accordion-item > a:before {\n content: var(--f7-accordion-chevron-icon-down);\n width: 14px;\n height: 8px;\n margin-top: -4px;\n line-height: 8px;\n}\n.list .accordion-item-toggle.accordion-item-opened .item-inner:before,\n.list:not(.media-list) .accordion-item-opened:not(.media-item) .accordion-item-toggle .item-inner:before,\n.list:not(.media-list) .accordion-item-opened:not(.media-item) > .item-link .item-inner:before,\n.media-list .accordion-item-opened .accordion-item-toggle .item-title-row:before,\n.media-list .accordion-item-opened > .item-link .item-title-row:before,\n.accordion-item-opened.media-item .accordion-item-toggle .item-title-row:before,\n.accordion-item-opened.media-item > .item-link .item-title-row:before,\n.links-list .accordion-item-opened > a:before,\n.accordion-opposite .accordion-item-opened .accordion-item-toggle > .item-content:before,\n.accordion-opposite .accordion-item-opened .accordion-item-toggle.item-content:before,\n.accordion-opposite .accordion-item-opened > .item-content:before,\n.accordion-opposite .accordion-item-opened > .item-link > .item-content:before,\n.accordion-opposite .links-list .accordion-item-opened > a:before {\n content: var(--f7-accordion-chevron-icon-up);\n width: 14px;\n height: 8px;\n margin-top: -4px;\n line-height: 8px;\n}\n/* === Contacts === */\n.ios {\n --f7-contacts-list-title-font-size: inherit;\n --f7-contacts-list-title-font-weight: 600;\n --f7-contacts-list-title-height: 22px;\n --f7-contacts-list-title-text-color: #000;\n --f7-contacts-list-title-bg-color: #f7f7f7;\n}\n.ios .dark,\n.ios.dark {\n --f7-contacts-list-title-text-color: #fff;\n --f7-contacts-list-title-bg-color: #323234;\n}\n.md {\n --f7-contacts-list-title-font-size: 20px;\n --f7-contacts-list-title-font-weight: 500;\n --f7-contacts-list-title-height: 48px;\n --f7-contacts-list-title-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-contacts-list-title-text-color: var(--f7-theme-color);\n}\n.contacts-list {\n --f7-list-margin-vertical: 0px;\n}\n.contacts-list .list-group-title,\n.contacts-list li.list-group-title {\n background-color: var(--f7-contacts-list-title-bg-color, var(--f7-list-group-title-bg-color));\n font-weight: var(--f7-contacts-list-title-font-weight, var(--f7-list-group-title-font-weight));\n font-size: var(--f7-contacts-list-title-font-size, var(--f7-list-group-title-font-size));\n color: var(--f7-contacts-list-title-text-color, var(--f7-theme-color));\n line-height: var(--f7-contacts-list-title-height, var(--f7-list-group-title-height));\n height: var(--f7-contacts-list-title-height, var(--f7-list-group-title-height));\n}\n.contacts-list .list-group:first-child ul:before {\n display: none !important;\n}\n.contacts-list .list-group:last-child ul:after {\n display: none !important;\n}\n.md .contacts-list .list-group-title {\n pointer-events: none;\n overflow: visible;\n width: 40px;\n}\n.md .contacts-list .list-group-title + li {\n margin-top: calc(var(--f7-contacts-list-title-height) * -1);\n}\n.md .contacts-list .list-group-title:before {\n display: none !important;\n}\n.md .contacts-list li:not(.list-group-title) {\n padding-left: 40px;\n}\n/* === Virtual List === */\n/* === Indexed List === */\n:root {\n --f7-list-index-width: 16px;\n --f7-list-index-font-size: 11px;\n --f7-list-index-font-weight: 600;\n /* --f7-list-index-text-color: var(--f7-theme-color); */\n --f7-list-index-item-height: 14px;\n --f7-list-index-label-font-weight: 500;\n}\n.ios {\n --f7-list-index-label-text-color: #fff;\n /* --f7-list-index-label-bg-color: var(--f7-theme-color); */\n --f7-list-index-label-size: 44px;\n --f7-list-index-label-font-size: 17px;\n --f7-list-index-skip-dot-size: 6px;\n}\n.md {\n --f7-list-index-label-size: 56px;\n --f7-list-index-label-font-size: 20px;\n --f7-list-index-skip-dot-size: 4px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-list-index-label-bg-color: var(--f7-md-primary);\n --f7-list-index-label-text-color: var(--f7-md-on-primary);\n}\n.list-index {\n position: absolute;\n top: 0;\n bottom: 0;\n text-align: center;\n z-index: 10;\n width: var(--f7-list-index-width);\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n right: var(--f7-safe-area-right);\n}\n.list-index:before {\n content: '';\n position: absolute;\n width: 20px;\n top: 0;\n right: 100%;\n height: 100%;\n}\n.list-index ul {\n color: var(--f7-list-index-text-color, var(--f7-theme-color));\n font-size: var(--f7-list-index-font-size);\n font-weight: var(--f7-list-index-font-weight);\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n height: 100%;\n width: 100%;\n position: relative;\n}\n.list-index li {\n margin: 0;\n padding: 0;\n list-style: none;\n position: relative;\n height: var(--f7-list-index-item-height);\n line-height: var(--f7-list-index-item-height);\n flex-shrink: 0;\n display: block;\n width: 100%;\n}\n.list-index .list-index-skip-placeholder:after {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n border-radius: 50%;\n width: var(--f7-list-index-skip-dot-size);\n height: var(--f7-list-index-skip-dot-size);\n margin-left: calc(-1 * var(--f7-list-index-skip-dot-size) / 2);\n margin-top: calc(-1 * var(--f7-list-index-skip-dot-size) / 2);\n background: var(--f7-list-index-text-color, var(--f7-theme-color));\n}\n.list-index .list-index-label {\n position: absolute;\n bottom: 0;\n right: 100%;\n text-align: center;\n background-color: var(--f7-list-index-label-bg-color, var(--f7-theme-color));\n color: var(--f7-list-index-label-text-color);\n width: var(--f7-list-index-label-size);\n height: var(--f7-list-index-label-size);\n line-height: var(--f7-list-index-label-size);\n font-size: var(--f7-list-index-label-font-size);\n font-weight: var(--f7-list-index-label-font-weight);\n}\n.navbar ~ .page > .list-index,\n.navbars ~ .page > .list-index,\n.navbar ~ .list-index {\n top: var(--f7-navbar-height);\n}\n.navbar ~ .toolbar-top ~ .list-index,\n.navbars ~ .toolbar-top ~ .list-index,\n.ios .navbar ~ .toolbar-top-ios ~ .list-index,\n.ios .navbars ~ .toolbar-top-ios .md .navbar ~ .toolbar-top-md ~ .list-index {\n top: calc(var(--f7-navbar-height) + var(--f7-toolbar-height));\n}\n.navbar ~ .toolbar-top.tabbar-icons ~ .list-index,\n.navbars ~ .toolbar-top.tabbar-icons ~ .list-index,\n.ios .navbar ~ .toolbar-top-ios.tabbar-icons ~ .list-index,\n.ios .navbars ~ .toolbar-top-ios .md .navbar ~ .toolbar-top-md.tabbar-icons ~ .list-index {\n top: calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height));\n}\n.navbar ~ .subnavbar ~ .list-index,\n.navbars ~ .subnavbar ~ .list-index,\n.page-with-subnavbar .navbar ~ .list-index {\n top: calc(var(--f7-navbar-height) + var(--f7-subnavbar-height));\n}\n.toolbar-bottom ~ .page > .list-index,\n.ios .toolbar-bottom-ios ~ .page > .list-index,\n.md .toolbar-bottom-md ~ .page > .list-index,\n.toolbar-bottom ~ * .page > .list-index,\n.ios .toolbar-bottom-ios ~ * .page > .list-index,\n.md .toolbar-bottom-md ~ * .page > .list-index,\n.toolbar-bottom ~ .list-index,\n.ios .toolbar-bottom-ios ~ .list-index,\n.md .toolbar-bottom-md ~ .list-index {\n bottom: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n}\n.toolbar-bottom.tabbar-icons ~ .page > .list-index,\n.ios .toolbar-bottom-ios.tabbar-icons ~ .page > .list-index,\n.md .toolbar-bottom-md.tabbar-icons ~ .page > .list-index,\n.toolbar-bottom.tabbar-icons ~ * .page > .list-index,\n.ios .toolbar-bottom-ios.tabbar-icons ~ * .page > .list-index,\n.md .toolbar-bottom-md.tabbar-icons ~ * .page > .list-index,\n.toolbar-bottom.tabbar-icons ~ .list-index,\n.ios .toolbar-bottom-ios.tabbar-icons ~ .list-index,\n.md .toolbar-bottom-md.tabbar-icons ~ .list-index {\n bottom: calc(var(--f7-tabbar-icons-height) + var(--f7-safe-area-bottom));\n}\n.ios .list-index .list-index-label {\n margin-bottom: calc(-1 * var(--f7-list-index-label-size) / 2);\n margin-right: calc(var(--f7-list-index-width) - 1px);\n border-radius: 50%;\n}\n.ios .list-index .list-index-label:before {\n position: absolute;\n width: 100%;\n height: 100%;\n border-radius: 50% 0% 50% 50%;\n content: '';\n background-color: inherit;\n left: 0;\n top: 0;\n transform: rotate(45deg);\n z-index: -1;\n}\n.md .list-index .list-index-label {\n border-radius: 50% 50% 0 50%;\n}\n/* === Timeline === */\n:root {\n --f7-timeline-inner-block-margin-vertical: 16px;\n --f7-timeline-divider-margin-horizontal: 16px;\n --f7-timeline-horizontal-date-height: 34px;\n --f7-timeline-year-height: 24px;\n --f7-timeline-year-font-weight: inherit;\n --f7-timeline-month-height: 24px;\n --f7-timeline-month-font-size: inherit;\n --f7-timeline-month-font-weight: inherit;\n --f7-timeline-item-text-font-weight: inherit;\n --f7-timeline-item-subtitle-font-weight: inherit;\n}\n.ios {\n --f7-timeline-divider-color: #bbb;\n --f7-timeline-padding-horizontal: 16px;\n --f7-timeline-margin-vertical: 35px;\n --f7-timeline-item-inner-border-radius: 7px;\n --f7-timeline-item-time-font-size: 13px;\n --f7-timeline-item-title-font-size: 17px;\n --f7-timeline-item-title-line-height: inherit;\n --f7-timeline-item-title-font-weight: 600;\n --f7-timeline-item-subtitle-font-size: 15px;\n --f7-timeline-item-subtitle-line-height: inherit;\n --f7-timeline-item-text-font-size: inherit;\n --f7-timeline-item-text-color: inherit;\n --f7-timeline-item-text-line-height: inherit;\n --f7-timeline-year-font-size: 16px;\n --f7-timeline-horizontal-item-padding: 10px;\n --f7-timeline-item-inner-bg-color: #fff;\n --f7-timeline-item-time-text-color: rgba(0, 0, 0, 0.45);\n --f7-timeline-horizontal-item-border-color: rgba(0, 0, 0, 0.22);\n --f7-timeline-horizontal-item-date-border-color: rgba(0, 0, 0, 0.22);\n}\n.ios .dark,\n.ios.dark {\n --f7-timeline-horizontal-item-border-color: rgba(255, 255, 255, 0.15);\n --f7-timeline-horizontal-item-date-border-color: rgba(255, 255, 255, 0.15);\n --f7-timeline-item-inner-bg-color: #1c1c1d;\n --f7-timeline-item-time-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-timeline-padding-horizontal: 16px;\n --f7-timeline-margin-vertical: 32px;\n --f7-timeline-item-inner-border-radius: 16px;\n --f7-timeline-item-time-font-size: 13px;\n --f7-timeline-item-title-font-size: 16px;\n --f7-timeline-item-title-line-height: inherit;\n --f7-timeline-item-title-font-weight: 400;\n --f7-timeline-item-subtitle-font-size: inherit;\n --f7-timeline-item-subtitle-line-height: inherit;\n --f7-timeline-item-text-font-size: inherit;\n --f7-timeline-item-text-line-height: inherit;\n --f7-timeline-year-font-size: 16px;\n --f7-timeline-horizontal-item-padding: 12px;\n --f7-timeline-horizontal-item-date-border-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-timeline-divider-color: var(--f7-md-outline);\n --f7-timeline-item-text-color: var(--f7-md-on-surface);\n --f7-timeline-horizontal-item-border-color: var(--f7-md-outline);\n --f7-timeline-item-inner-bg-color: var(--f7-md-surface-1);\n --f7-timeline-item-time-text-color: var(--f7-md-on-surface-variant);\n}\n.timeline {\n box-sizing: border-box;\n margin: var(--f7-timeline-margin-vertical) 0;\n padding: 0 var(--f7-timeline-padding-horizontal);\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-right));\n}\n.block-strong .timeline {\n padding: 0;\n margin: 0;\n}\n.timeline-item {\n display: flex;\n justify-content: flex-start;\n overflow: hidden;\n box-sizing: border-box;\n position: relative;\n padding: 2px 0px var(--f7-timeline-padding-horizontal);\n}\n.timeline-item:last-child {\n padding-bottom: 2px;\n}\n.timeline-item-date {\n flex-shrink: 0;\n width: 50px;\n text-align: right;\n box-sizing: border-box;\n}\n.timeline-item-date small {\n font-size: 10px;\n}\n.timeline-item-content {\n margin: 2px;\n min-width: 0;\n position: relative;\n flex-shrink: 10;\n}\n.timeline-item-content .card,\n.timeline-item-content.card,\n.timeline-item-content .list,\n.timeline-item-content.list,\n.timeline-item-content .block,\n.timeline-item-content.block {\n margin: 0;\n width: 100%;\n}\n.timeline-item-content .card + .card,\n.timeline-item-content .list + .card,\n.timeline-item-content .block + .card,\n.timeline-item-content .card + .list,\n.timeline-item-content .list + .list,\n.timeline-item-content .block + .list,\n.timeline-item-content .card + .block,\n.timeline-item-content .list + .block,\n.timeline-item-content .block + .block {\n margin: var(--f7-timeline-inner-block-margin-vertical) 0 0;\n}\n.timeline-item-content p:first-child,\n.timeline-item-content ul:first-child,\n.timeline-item-content ol:first-child,\n.timeline-item-content h1:first-child,\n.timeline-item-content h2:first-child,\n.timeline-item-content h3:first-child,\n.timeline-item-content h4:first-child {\n margin-top: 0;\n}\n.timeline-item-content p:last-child,\n.timeline-item-content ul:last-child,\n.timeline-item-content ol:last-child,\n.timeline-item-content h1:last-child,\n.timeline-item-content h2:last-child,\n.timeline-item-content h3:last-child,\n.timeline-item-content h4:last-child {\n margin-bottom: 0;\n}\n.timeline-item-inner {\n background: var(--f7-timeline-item-inner-bg-color);\n box-sizing: border-box;\n border-radius: var(--f7-timeline-item-inner-border-radius);\n padding: 8px var(--f7-timeline-padding-horizontal);\n}\n.timeline-item-inner + .timeline-item-inner {\n margin-top: var(--f7-timeline-inner-block-margin-vertical);\n}\n.timeline-item-inner .block {\n padding: 0;\n color: inherit;\n}\n.timeline-item-inner .block-strong {\n padding-left: 0;\n padding-right: 0;\n margin: 0;\n}\n.timeline-item-inner .block-strong:before,\n.timeline-item-inner .block-strong:after {\n display: none !important;\n}\n.timeline-item-inner .list ul:before,\n.timeline-item-inner .list ul:after {\n display: none !important;\n}\n.timeline-item-divider {\n width: 1px;\n position: relative;\n width: 10px;\n height: 10px;\n background: var(--f7-timeline-divider-color);\n border-radius: 50%;\n flex-shrink: 0;\n margin: 3px var(--f7-timeline-divider-margin-horizontal) 0;\n}\n.timeline-item-divider:after,\n.timeline-item-divider:before {\n content: ' ';\n width: 1px;\n height: 100vh;\n position: absolute;\n left: 50%;\n background: inherit;\n transform: translate3d(-50%, 0, 0);\n}\n.timeline-item-divider:after {\n top: 100%;\n}\n.timeline-item-divider:before {\n bottom: 100%;\n}\n.timeline-item:last-child .timeline-item-divider:after {\n display: none;\n}\n.timeline-item:first-child .timeline-item-divider:before {\n display: none;\n}\n.timeline-item-time {\n font-size: var(--f7-timeline-item-time-font-size);\n margin-top: var(--f7-timeline-inner-block-margin-vertical);\n color: var(--f7-timeline-item-time-text-color);\n}\n.timeline-item-time:first-child,\n.timeline-item-time:last-child {\n margin-top: 0;\n}\n.timeline-item-title + .timeline-item-time {\n margin-top: 0;\n}\n.timeline-item-title {\n font-size: var(--f7-timeline-item-title-font-size);\n font-weight: var(--f7-timeline-item-title-font-weight);\n line-height: var(--f7-timeline-item-title-line-height);\n}\n.timeline-item-subtitle {\n font-size: var(--f7-timeline-item-subtitle-font-size);\n font-weight: var(--f7-timeline-item-subtitle-font-weight);\n line-height: var(--f7-timeline-item-subtitle-line-height);\n}\n.timeline-item-text {\n color: var(--f7-timeline-item-text-color);\n font-size: var(--f7-timeline-item-text-font-size);\n font-weight: var(--f7-timeline-item-text-font-weight);\n line-height: var(--f7-timeline-item-text-line-height);\n}\n.timeline-sides .timeline-item-right,\n.timeline-sides .timeline-item {\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n}\n.timeline-sides .timeline-item-right .timeline-item-date,\n.timeline-sides .timeline-item .timeline-item-date {\n text-align: right;\n}\n.timeline-sides .timeline-item-left,\n.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n}\n.timeline-sides .timeline-item-left .timeline-item-date,\n.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: left;\n}\n@media (min-width: 480px) {\n .xsmall-sides .timeline-item-right,\n .xsmall-sides .timeline-item {\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .xsmall-sides .timeline-item-right .timeline-item-date,\n .xsmall-sides .timeline-item .timeline-item-date {\n text-align: right;\n }\n .xsmall-sides .timeline-item-left,\n .xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .xsmall-sides .timeline-item-left .timeline-item-date,\n .xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: left;\n }\n}\n@media (min-width: 568px) {\n .small-sides .timeline-item-right,\n .small-sides .timeline-item {\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .small-sides .timeline-item-right .timeline-item-date,\n .small-sides .timeline-item .timeline-item-date {\n text-align: right;\n }\n .small-sides .timeline-item-left,\n .small-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .small-sides .timeline-item-left .timeline-item-date,\n .small-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: left;\n }\n}\n@media (min-width: 768px) {\n .medium-sides .timeline-item-right,\n .medium-sides .timeline-item {\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .medium-sides .timeline-item-right .timeline-item-date,\n .medium-sides .timeline-item .timeline-item-date {\n text-align: right;\n }\n .medium-sides .timeline-item-left,\n .medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .medium-sides .timeline-item-left .timeline-item-date,\n .medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: left;\n }\n}\n@media (min-width: 1024px) {\n .large-sides .timeline-item-right,\n .large-sides .timeline-item {\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .large-sides .timeline-item-right .timeline-item-date,\n .large-sides .timeline-item .timeline-item-date {\n text-align: right;\n }\n .large-sides .timeline-item-left,\n .large-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .large-sides .timeline-item-left .timeline-item-date,\n .large-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: left;\n }\n}\n@media (min-width: 1200px) {\n .xlarge-sides .timeline-item-right,\n .xlarge-sides .timeline-item {\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .xlarge-sides .timeline-item-right .timeline-item-date,\n .xlarge-sides .timeline-item .timeline-item-date {\n text-align: right;\n }\n .xlarge-sides .timeline-item-left,\n .xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .xlarge-sides .timeline-item-left .timeline-item-date,\n .xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: left;\n }\n}\n.timeline-horizontal {\n height: 100%;\n display: flex;\n padding: 0;\n margin: 0;\n position: relative;\n padding-left: var(--f7-safe-area-left);\n padding-right: 0;\n}\n.timeline-horizontal .timeline-item {\n display: block;\n width: 100/3vw;\n margin: 0;\n padding: 0;\n flex-shrink: 0;\n position: relative;\n height: 100%;\n padding-top: var(--f7-timeline-horizontal-date-height) !important;\n padding-bottom: var(--f7-timeline-horizontal-item-padding);\n}\n.timeline-horizontal .timeline-item:after {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: 0;\n bottom: auto;\n left: auto;\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-horizontal .timeline-item-date {\n padding: 0px var(--f7-timeline-horizontal-item-padding);\n width: auto;\n line-height: var(--f7-timeline-horizontal-date-height);\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: var(--f7-timeline-horizontal-date-height);\n background-color: var(--f7-bars-bg-color);\n color: var(--f7-bars-text-color);\n text-align: left;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .timeline-horizontal .timeline-item-date {\n background-color: rgba(var(--f7-bars-bg-color-rgb), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.timeline-horizontal .timeline-item-date:after {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-date-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-horizontal .timeline-item-content {\n padding: var(--f7-timeline-horizontal-item-padding);\n height: calc(100vw - var(--f7-timeline-horizontal-item-padding));\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n margin: 0;\n}\n.timeline-horizontal .timeline-item-divider {\n display: none;\n}\n.timeline-horizontal > .timeline-item:last-child:after,\n.timeline-horizontal .timeline-month:last-child .timeline-item:last-child:after {\n display: none !important;\n}\n.timeline-horizontal.timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n}\n.timeline-horizontal.timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n}\n.timeline-horizontal.timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n}\n.timeline-horizontal.timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n}\n.timeline-horizontal.timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n}\n.timeline-horizontal.timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n}\n.timeline-horizontal.timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n}\n.timeline-horizontal.timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n}\n.timeline-horizontal.timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n}\n.timeline-horizontal.timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n}\n.timeline-horizontal.timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n}\n.timeline-horizontal.timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n}\n.timeline-horizontal.timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n}\n.timeline-horizontal.timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n}\n.timeline-horizontal.timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n}\n.timeline-horizontal.timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n}\n.timeline-horizontal.timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n}\n.timeline-horizontal.timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n}\n.timeline-horizontal.timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n}\n.timeline-horizontal.timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n}\n@media (min-width: 480px) {\n .timeline-horizontal.xsmall-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.xsmall-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.xsmall-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.xsmall-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.xsmall-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.xsmall-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.xsmall-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.xsmall-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.xsmall-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.xsmall-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.xsmall-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.xsmall-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.xsmall-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.xsmall-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.xsmall-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.xsmall-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.xsmall-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.xsmall-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.xsmall-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.xsmall-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 568px) {\n .timeline-horizontal.small-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.small-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.small-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.small-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.small-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.small-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.small-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.small-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.small-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.small-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.small-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.small-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.small-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.small-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.small-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.small-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.small-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.small-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.small-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.small-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 768px) {\n .timeline-horizontal.medium-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.medium-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.medium-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.medium-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.medium-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.medium-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.medium-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.medium-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.medium-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.medium-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.medium-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.medium-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.medium-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.medium-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.medium-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.medium-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.medium-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.medium-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.medium-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.medium-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 1024px) {\n .timeline-horizontal.large-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.large-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.large-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.large-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.large-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.large-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.large-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.large-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.large-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.large-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.large-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.large-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.large-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.large-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.large-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.large-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.large-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.large-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.large-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.large-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 1200px) {\n .timeline-horizontal.xlarge-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.xlarge-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.xlarge-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.xlarge-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.xlarge-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.xlarge-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.xlarge-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.xlarge-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.xlarge-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.xlarge-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.xlarge-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.xlarge-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.xlarge-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.xlarge-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.xlarge-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.xlarge-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.xlarge-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.xlarge-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.xlarge-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.xlarge-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n.timeline-year {\n padding-top: var(--f7-timeline-year-height);\n}\n.timeline-year:after {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: 0;\n bottom: auto;\n left: auto;\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-year:last-child:after {\n display: none !important;\n}\n.timeline-month {\n padding-top: var(--f7-timeline-month-height);\n}\n.timeline-month .timeline-item:before {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-year,\n.timeline-month {\n display: flex;\n flex-shrink: 0;\n position: relative;\n box-sizing: border-box;\n height: 100%;\n}\n.timeline-year-title {\n line-height: var(--f7-timeline-year-height);\n height: var(--f7-timeline-year-height);\n font-size: var(--f7-timeline-year-font-size);\n font-weight: var(--f7-timeline-year-font-weight);\n}\n.timeline-month-title {\n line-height: var(--f7-timeline-month-height);\n height: var(--f7-timeline-month-height);\n font-size: var(--f7-timeline-month-font-size);\n font-weight: var(--f7-timeline-month-font-weight);\n}\n.timeline-year-title,\n.timeline-month-title {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n box-sizing: border-box;\n padding: 0 var(--f7-timeline-horizontal-item-padding);\n background-color: var(--f7-bars-bg-color);\n color: var(--f7-bars-text-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .timeline-year-title,\n .ios-translucent-bars .timeline-month-title {\n background-color: rgba(var(--f7-bars-bg-color-rgb), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.timeline-year-title span,\n.timeline-month-title span {\n display: inline-block;\n position: sticky;\n left: calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-left));\n}\n.timeline-month-title span {\n margin-top: -2px;\n}\n.timeline-year:first-child .timeline-year-title,\n.timeline-year:first-child .timeline-month:first-child .timeline-month-title,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-month-title {\n left: calc(var(--f7-safe-area-left) * -1);\n right: 0;\n width: auto;\n}\n.timeline-horizontal .timeline-item:first-child,\n.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-item:first-child,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-month-title + .timeline-item {\n overflow: visible;\n}\n.timeline-horizontal .timeline-item:first-child .timeline-item-date,\n.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child .timeline-item-date,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-item:first-child .timeline-item-date,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-month-title + .timeline-item .timeline-item-date {\n width: auto;\n padding-left: calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-left));\n left: calc(0px - var(--f7-safe-area-left));\n right: 0;\n}\n.timeline-year:last-child .timeline-year-title,\n.timeline-year:last-child .timeline-month:last-child .timeline-month-title {\n width: auto;\n right: calc(0px - var(--f7-safe-area-right));\n}\n.timeline-horizontal .timeline-item:last-child,\n.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child {\n overflow: visible;\n}\n.timeline-horizontal .timeline-item:last-child .timeline-item-date,\n.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child .timeline-item-date {\n width: auto;\n right: calc(0px - var(--f7-safe-area-right));\n left: 0;\n}\n.ios .block-strong .timeline-item-inner {\n border-radius: 3px;\n border: 1px solid rgba(0, 0, 0, 0.1);\n}\n.ios .timeline-year-title span {\n margin-top: 3px;\n}\n.md .timeline-year-title span {\n margin-top: 2px;\n}\n/* === Tabs === */\n.tabs .tab {\n display: none;\n}\n.tabs .tab-active {\n display: block;\n}\n.tabs-animated-wrap {\n position: relative;\n width: 100%;\n overflow: hidden;\n height: 100%;\n}\n.tabs-animated-wrap > .tabs {\n display: flex;\n height: 100%;\n transition-duration: 300ms;\n}\n.tabs-animated-wrap > .tabs > .tab {\n width: 100%;\n display: block;\n flex-shrink: 0;\n}\n.tabs-animated-wrap.not-animated > .tabs {\n transition-duration: 0ms;\n}\nswiper-container.tabs {\n height: 100%;\n}\nswiper-container.tabs > .tab {\n display: block;\n touch-action: pan-y;\n}\n.page > .tabs {\n height: 100%;\n}\n/* === Panels === */\n:root {\n --f7-panel-width: 260px;\n --f7-panel-backdrop-bg-color: rgba(0, 0, 0, 0.3);\n /*\n --f7-panel-left-width: var(--f7-panel-width);\n --f7-panel-right-width: var(--f7-panel-width);\n --f7-panel-left-collapsed-width: var(--f7-panel-collapsed-width);\n --f7-panel-right-collapsed-width: var(--f7-panel-collapsed-width);\n */\n --f7-panel-bg-color: #fff;\n}\n:root .dark,\n:root.dark {\n --f7-panel-bg-color: #000;\n}\n.ios {\n --f7-panel-collapsed-width: 58px;\n --f7-panel-transition-duration: 400ms;\n --f7-panel-transition-timing-function: initial;\n}\n.md {\n --f7-panel-collapsed-width: 60px;\n --f7-panel-transition-duration: 400ms;\n --f7-panel-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n}\n.panel-backdrop {\n position: absolute;\n left: 0;\n top: 0px;\n width: 100%;\n height: 100%;\n opacity: 0;\n z-index: 5999;\n visibility: hidden;\n pointer-events: none;\n transform: translate3d(0, 0, 0);\n background-color: var(--f7-panel-backdrop-bg-color);\n transition-property: transform, opacity;\n transition-duration: var(--f7-panel-transition-duration);\n}\n.panel-backdrop .with-panel,\n.panel-backdrop .with-panel-closing {\n visibility: visible;\n}\n.panel-backdrop.not-animated {\n transition-duration: 0ms !important;\n}\n.panel {\n z-index: 1000;\n box-sizing: border-box;\n position: absolute;\n top: 0px;\n height: 100%;\n transform: translate3d(0, 0, 0);\n width: var(--f7-panel-width);\n background-color: var(--f7-panel-bg-color);\n overflow: visible;\n transition-property: transform;\n transition-duration: var(--f7-panel-transition-duration);\n}\n.panel:not(.panel-in):not(.panel-out):not(.panel-in-breakpoint):not(.panel-in-collapsed):not(\n .panel-in-swipe\n ) {\n display: none;\n}\n.panel:after {\n pointer-events: none;\n opacity: 0;\n z-index: 5999;\n position: absolute;\n content: '';\n top: 0;\n width: 20px;\n height: 100%;\n transition-property: transform, opacity;\n transition-duration: var(--f7-panel-transition-duration);\n}\n.panel.not-animated,\n.panel.not-animated:after {\n transition-duration: 0ms !important;\n}\n.panel.panel-reveal.not-animated ~ .views,\n.panel.panel-reveal.not-animated ~ .view {\n transition-duration: 0ms !important;\n}\n.panel.panel-resizing {\n -webkit-user-select: none;\n user-select: none;\n}\n.panel.panel-resizing,\n.panel.panel-resizing:after,\n.panel.panel-resizing ~ .views,\n.panel.panel-resizing ~ .view {\n transition-duration: 0ms !important;\n}\n.panel-cover,\n.panel-floating {\n z-index: 6000;\n}\n.panel-floating {\n overflow: hidden;\n border-radius: 16px;\n height: auto;\n top: calc(8px + var(--f7-safe-area-top, 0px));\n bottom: calc(8px + var(--f7-safe-area-bottom, 0px));\n}\n.panel-floating .views,\n.panel-floating .view {\n --f7-safe-area-top: 0px;\n --f7-safe-area-bottom: 0px;\n}\n.page .panel-floating {\n top: calc(8px + var(--f7-page-navbar-offset, 0px));\n bottom: calc(8px + var(--f7-safe-area-bottom, 0px));\n}\n.page .panel-floating .page {\n --f7-page-navbar-offset: 0px;\n}\n.page .panel-floating .navbar ~ *,\n.page .panel-floating .navbars ~ * {\n --f7-page-navbar-offset: calc(var(--f7-navbar-height));\n}\n.panel-left {\n left: 0;\n width: var(--f7-panel-left-width, var(--f7-panel-width));\n}\n.panel-left.panel-cover,\n.panel-left.panel-floating,\n.panel-left.panel-push {\n transform: translate3d(calc(-1 * var(--f7-panel-left-width, var(--f7-panel-width))), 0, 0);\n}\n.panel-right {\n right: 0;\n width: var(--f7-panel-right-width, var(--f7-panel-width));\n}\n.panel-right.panel-cover,\n.panel-right.panel-floating,\n.panel-right.panel-push {\n transform: translate3d(var(--f7-panel-right-width, var(--f7-panel-width)), 0, 0);\n}\n.panel-in-breakpoint {\n transform: translate3d(0, 0, 0) !important;\n transition-duration: 0ms;\n}\n.panel-in-breakpoint:after {\n display: none;\n}\n.panel-in-breakpoint.panel-cover,\n.panel-in-breakpoint.panel-floating {\n z-index: 5900;\n}\n.panel,\n.panel-backdrop {\n transition-timing-function: var(--f7-panel-transition-timing-function);\n}\nhtml.with-panel-left-reveal .views,\nhtml.with-panel-right-reveal .views,\nhtml.with-panel-left-push .views,\nhtml.with-panel-right-push .views,\nhtml.with-panel-closing .views,\nhtml.with-panel-left-reveal .framework7-root > .view,\nhtml.with-panel-right-reveal .framework7-root > .view,\nhtml.with-panel-left-push .framework7-root > .view,\nhtml.with-panel-right-push .framework7-root > .view,\nhtml.with-panel-closing .framework7-root > .view {\n transition-duration: var(--f7-panel-transition-duration);\n transition-property: transform;\n transition-timing-function: var(--f7-panel-transition-timing-function);\n}\nhtml.with-panel .framework7-root > .views .page-content,\nhtml.with-panel .framework7-root > .view .page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\nhtml.with-panel-left-reveal .views,\nhtml.with-panel-left-push .views,\nhtml.with-panel-left-reveal .framework7-root > .view,\nhtml.with-panel-left-push .framework7-root > .view {\n transform: translate3d(var(--f7-panel-left-width, var(--f7-panel-width)), 0, 0);\n}\nhtml.with-panel-right-reveal .views,\nhtml.with-panel-right-push .views,\nhtml.with-panel-right-reveal .framework7-root > .view,\nhtml.with-panel-right-push .framework7-root > .view {\n transform: translate3d(calc(-1 * var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\n.page > .panel-backdrop {\n z-index: 290;\n}\n.page > .panel-reveal,\n.page .panel-push {\n z-index: 1;\n}\n.page > .panel-cover,\n.page > .panel-floating {\n z-index: 300;\n}\n.page.with-panel-left-reveal > .page-content,\n.page.with-panel-right-reveal > .page-content,\n.page.with-panel-left-push > .page-content,\n.page.with-panel-right-push > .page-content,\n.page.with-panel-closing > .page-content,\n.page.with-panel-left-reveal > .tabs,\n.page.with-panel-right-reveal > .tabs,\n.page.with-panel-left-push > .tabs,\n.page.with-panel-right-push > .tabs,\n.page.with-panel-closing > .tabs {\n transition-duration: var(--f7-panel-transition-duration);\n transition-property: transform;\n transition-timing-function: var(--f7-panel-transition-timing-function);\n}\n.page.with-panel-left-reveal > .page-content,\n.page.with-panel-left-push > .page-content,\n.page.with-panel-left-reveal > .tabs,\n.page.with-panel-left-push > .tabs {\n transform: translate3d(var(--f7-panel-left-width, var(--f7-panel-width)), 0, 0);\n}\n.page.with-panel-right-reveal > .page-content,\n.page.with-panel-right-push > .page-content,\n.page.with-panel-right-reveal > .tabs,\n.page.with-panel-right-push > .tabs {\n transform: translate3d(calc(-1 * var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\n.with-panel-closing .panel-backdrop-in {\n visibility: visible;\n pointer-events: auto;\n opacity: 0;\n}\n.with-panel-left-reveal .panel-backdrop-in,\n.with-panel-right-reveal .panel-backdrop-in,\n.with-panel-left-cover .panel-backdrop-in,\n.with-panel-right-cover .panel-backdrop-in,\n.with-panel-left-floating .panel-backdrop-in,\n.with-panel-right-floating .panel-backdrop-in,\n.with-panel-left-push .panel-backdrop-in,\n.with-panel-right-push .panel-backdrop-in {\n visibility: visible;\n pointer-events: auto;\n opacity: 1;\n}\n.with-panel-left-reveal .panel-backdrop-in,\n.with-panel-left-push .panel-backdrop-in {\n transform: translate3d(var(--f7-panel-left-width, var(--f7-panel-width)), 0, 0);\n}\n.with-panel-right-reveal .panel-backdrop-in,\n.with-panel-right-push .panel-backdrop-in {\n transform: translate3d(calc(-1 * var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\n.with-panel-left-cover .panel-left,\n.with-panel-left-push .panel-left {\n transform: translate3d(0px, 0, 0);\n}\n.with-panel-left-floating .panel-left {\n transform: translate3d(8px, 0, 0);\n}\n.with-panel-right-cover .panel-right,\n.with-panel-right-push .panel-right {\n transform: translate3d(0px, 0, 0);\n}\n.with-panel-right-floating .panel-right {\n transform: translate3d(-8px, 0, 0);\n}\n.panel-resizable {\n max-width: 100%;\n}\n.panel-resize-handler {\n position: absolute;\n top: 0;\n height: 100%;\n width: 6px;\n cursor: col-resize;\n z-index: 6000;\n display: none;\n}\n.panel-resizable .panel-resize-handler {\n display: block;\n}\n.panel-left.panel-cover .panel-resize-handler,\n.panel-left.panel-floating .panel-resize-handler {\n right: -3px;\n}\n.panel-left.panel-reveal .panel-resize-handler,\n.panel-left.panel-push .panel-resize-handler {\n right: 0;\n}\n.panel-right.panel-cover .panel-resize-handler,\n.panel-right.panel-floating .panel-resize-handler {\n left: -3px;\n}\n.panel-right.panel-reveal .panel-resize-handler,\n.panel-right.panel-push .panel-resize-handler {\n left: 0;\n}\n.panel-left.panel-in-collapsed ~ .views,\n.panel-left.panel-in-collapsed ~ .view,\n.panel-left.panel-in-collapsed ~ .page-content,\n.panel-left.panel-in-collapsed ~ .tabs {\n margin-left: var(--f7-panel-left-collapsed-width, var(--f7-panel-collapsed-width));\n}\n.page.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .page-content,\n.page.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .tabs,\nhtml.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .views,\nhtml.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .view {\n transform: translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width)) - var(--f7-panel-left-collapsed-width, var(--f7-panel-collapsed-width))), 0, 0);\n}\n.panel-right.panel-in-collapsed ~ .views,\n.panel-right.panel-in-collapsed ~ .view,\n.panel-right.panel-in-collapsed ~ .page-content,\n.panel-right.panel-in-collapsed ~ .tabs {\n margin-right: var(--f7-panel-right-collapsed-width, var(--f7-panel-collapsed-width));\n}\n.page.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .page-content,\n.page.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .tabs,\nhtml.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .views,\nhtml.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .view {\n transform: translate3d(calc(var(--f7-panel-right-collapsed-width, var(--f7-panel-collapsed-width)) - var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\nhtml.with-modal-popup-push .framework7-root,\nhtml.with-modal-popup-push-closing .framework7-root {\n --f7-panelPushScale: var(--f7-popup-push-scale);\n --f7-panelPushTransitionDuration: var(--f7-popup-transition-duration);\n --f7-panelPushTransitionTimingFunction: var(--f7-popup-transition-timing-function);\n --f7-panelPushBorderRadius: var(--f7-popup-push-border-radius);\n}\nhtml.with-modal-sheet-push .framework7-root,\nhtml.with-modal-sheet-push-closing .framework7-root {\n --f7-panelPushScale: var(--f7-sheet-push-scale);\n --f7-panelPushTransitionDuration: var(--f7-sheet-transition-duration);\n --f7-panelPushTransitionTimingFunction: var(--f7-sheet-transition-timing-function);\n --f7-panelPushBorderRadius: var(--f7-sheet-push-border-radius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in,\nhtml.with-modal-sheet-push .framework7-root > .panel-in,\nhtml.with-modal-popup-push .framework7-root > .panel-out,\nhtml.with-modal-sheet-push .framework7-root > .panel-out {\n transition-duration: var(--f7-panelPushTransitionDuration);\n transition-timing-function: var(--f7-panelPushTransitionTimingFunction);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-left {\n transform: scale(var(--f7-panelPushScale, 1));\n transform-origin: 50vw center;\n border-top-left-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-left .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-left .view,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-left .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-left .view {\n border-top-left-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-right {\n transform: scale(var(--f7-panelPushScale, 1));\n transform-origin: calc(var(--f7-panel-left-width, var(--f7-panel-width)) - 50vw) center;\n border-top-right-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-right .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-right .view,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-right .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-right .view {\n border-top-right-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-cover.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-cover.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-cover.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-cover.panel-left {\n transform: translate3d(calc(-1 * var(--f7-panel-left-width, var(--f7-panel-width))), 0, 0px);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-cover.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-cover.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-cover.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-cover.panel-right {\n transform: translate3d(var(--f7-panel-right-width, var(--f7-panel-width)), 0, 0px);\n}\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in {\n transition-duration: var(--f7-panelPushTransitionDuration);\n transition-timing-function: var(--f7-panelPushTransitionTimingFunction);\n}\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-push.panel-left,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-push.panel-left {\n transform-origin: 50vw center;\n}\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-push.panel-right,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-push.panel-right {\n transform-origin: calc(var(--f7-panel-right-width, var(--f7-panel-width)) - 50vw) center;\n}\n.md .panel-cover {\n overflow: hidden;\n}\n.md .panel-cover.panel-left {\n border-radius: 0 16px 16px 0;\n}\n.md .panel-cover.panel-right {\n border-radius: 16px 0 0 16px;\n}\n/* === Card === */\n:root {\n --f7-card-margin-horizontal: 16px;\n --f7-card-margin-vertical: 16px;\n --f7-card-content-padding-horizontal: 16px;\n --f7-card-content-padding-vertical: 16px;\n --f7-card-font-size: inherit;\n --f7-card-header-text-color: inherit;\n --f7-card-header-font-weight: 400;\n --f7-card-header-padding-horizontal: 16px;\n --f7-card-footer-font-weight: 400;\n --f7-card-footer-font-size: inherit;\n --f7-card-footer-padding-horizontal: 16px;\n --f7-card-expandable-font-size: 16px;\n --f7-card-expandable-tablet-width: 670px;\n --f7-card-expandable-tablet-height: 670px;\n}\n.ios {\n --f7-card-border-radius: 8px;\n --f7-card-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.2);\n --f7-card-header-font-size: 17px;\n --f7-card-header-padding-vertical: 10px;\n --f7-card-header-min-height: 44px;\n --f7-card-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-card-footer-padding-vertical: 10px;\n --f7-card-footer-min-height: 44px;\n --f7-card-expandable-margin-horizontal: 20px;\n --f7-card-expandable-margin-vertical: 30px;\n --f7-card-expandable-box-shadow: 0px 20px 40px rgba(0, 0, 0, 0.3);\n --f7-card-expandable-border-radius: 16px;\n --f7-card-expandable-tablet-border-radius: 16px;\n --f7-card-expandable-header-font-size: 27px;\n --f7-card-expandable-header-font-weight: bold;\n --f7-card-text-color: inherit;\n --f7-card-bg-color: #fff;\n --f7-card-expandable-bg-color: #fff;\n --f7-card-outline-border-color: rgba(0, 0, 0, 0.12);\n --f7-card-header-border-color: rgba(0, 0, 0, 0.1);\n --f7-card-footer-border-color: rgba(0, 0, 0, 0.1);\n}\n.ios .dark,\n.ios.dark {\n --f7-card-bg-color: #1c1c1d;\n --f7-card-expandable-bg-color: #1c1c1d;\n --f7-card-outline-border-color: rgba(255, 255, 255, 0.15);\n --f7-card-header-border-color: rgba(255, 255, 255, 0.15);\n --f7-card-footer-border-color: rgba(255, 255, 255, 0.15);\n --f7-card-footer-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-card-border-radius: 16px;\n --f7-card-box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2),\n 0px 1px 1px 0px rgba(0, 0, 0, 0.14),\n 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\n --f7-card-header-font-size: 22px;\n --f7-card-header-padding-vertical: 16px;\n --f7-card-header-min-height: 48px;\n --f7-card-footer-padding-vertical: 16px;\n --f7-card-footer-min-height: 48px;\n --f7-card-expandable-margin-horizontal: 12px;\n --f7-card-expandable-margin-vertical: 24px;\n --f7-card-expandable-box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2),\n 0px 10px 14px 1px rgba(0, 0, 0, 0.14),\n 0px 4px 18px 3px rgba(0, 0, 0, 0.12);\n --f7-card-expandable-border-radius: 16px;\n --f7-card-expandable-tablet-border-radius: 16px;\n --f7-card-expandable-header-font-size: 22px;\n --f7-card-expandable-header-font-weight: 500;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-card-bg-color: var(--f7-md-surface-1);\n --f7-card-expandable-bg-color: var(--f7-md-surface-1);\n --f7-card-outline-border-color: var(--f7-md-outline);\n --f7-card-header-border-color: var(--f7-md-outline);\n --f7-card-footer-border-color: var(--f7-md-outline);\n --f7-card-text-color: var(--f7-md-on-surface);\n --f7-card-footer-text-color: var(--f7-md-on-surface-variant);\n}\n.cards-list > ul:before,\n.card .list > ul:before,\n.cards-list > ul:after,\n.card .list > ul:after {\n display: none !important;\n}\n.cards-list ul,\n.card .list ul {\n background: none;\n}\n.card {\n background: var(--f7-card-bg-color);\n position: relative;\n border-radius: var(--f7-card-border-radius);\n font-size: var(--f7-card-font-size);\n margin-top: var(--f7-card-margin-vertical);\n margin-bottom: var(--f7-card-margin-vertical);\n margin-left: calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-left));\n margin-right: calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-right));\n color: var(--f7-card-text-color);\n}\n.card .list,\n.card .block {\n margin: 0;\n}\n.row:not(.no-gap) .col > .card {\n margin-left: 0;\n margin-right: 0;\n}\n.card-raised {\n box-shadow: var(--f7-card-box-shadow);\n}\n.card-outline,\n.ios .card-outline-ios,\n.md .card-outline-md {\n border: 1px solid var(--f7-card-outline-border-color);\n}\n.card-content {\n position: relative;\n}\n.card-content-padding {\n position: relative;\n padding: var(--f7-card-content-padding-vertical) var(--f7-card-content-padding-horizontal);\n}\n.card-content-padding > .list,\n.card-content-padding > .block {\n margin: calc(-1 * var(--f7-card-content-padding-vertical)) calc(-1 * var(--f7-card-content-padding-horizontal));\n}\n.card-content-padding > p:first-child {\n margin-top: 0;\n}\n.card-content-padding > p:last-child {\n margin-bottom: 0;\n}\n.card-header {\n min-height: var(--f7-card-header-min-height);\n color: var(--f7-card-header-text-color);\n font-size: var(--f7-card-header-font-size);\n font-weight: var(--f7-card-header-font-weight);\n padding: var(--f7-card-header-padding-vertical) var(--f7-card-header-padding-horizontal);\n}\n.card-header.card-header-divider,\n.card-header-divider .card-header,\n.card-dividers .card-header {\n border-bottom: 1px solid var(--f7-card-header-border-color);\n}\n.card-footer {\n min-height: var(--f7-card-footer-min-height);\n color: var(--f7-card-footer-text-color);\n font-size: var(--f7-card-footer-font-size);\n font-weight: var(--f7-card-footer-font-weight);\n padding: var(--f7-card-footer-padding-vertical) var(--f7-card-footer-padding-horizontal);\n}\n.card-footer.card-footer-divider,\n.card-footer-divider .card-footer,\n.card-dividers .card-footer {\n border-top: 1px solid var(--f7-card-header-border-color);\n}\n.card-footer a.link {\n overflow: hidden;\n}\n.card-header,\n.card-footer {\n position: relative;\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.card-header[valign='top'],\n.card-footer[valign='top'] {\n align-items: flex-start;\n}\n.card-header[valign='bottom'],\n.card-footer[valign='bottom'] {\n align-items: flex-end;\n}\n.card-header a.link,\n.card-footer a.link {\n position: relative;\n}\n.card-header a.link i.icon,\n.card-footer a.link i.icon {\n display: block;\n}\n.card-header a.icon-only,\n.card-footer a.icon-only {\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 0;\n}\n.card-header {\n border-radius: var(--f7-card-border-radius) var(--f7-card-border-radius) 0 0;\n}\n.card-footer {\n border-radius: 0 0 var(--f7-card-border-radius) var(--f7-card-border-radius);\n}\n.card-expandable {\n overflow: hidden;\n height: 300px;\n background: var(--f7-card-expandable-bg-color);\n position: relative;\n transform-origin: center center;\n transition-property: transform, border-radius;\n border-radius: var(--f7-card-expandable-border-radius);\n z-index: 2;\n transition-duration: 200ms;\n margin-left: calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-left));\n margin-right: calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-right));\n margin-top: var(--f7-card-expandable-margin-vertical);\n margin-bottom: var(--f7-card-expandable-margin-vertical);\n font-size: var(--f7-card-expandable-font-size);\n}\n.card-expandable.card-raised {\n box-shadow: var(--f7-card-expandable-box-shadow);\n}\n.card-expandable:not(.card-opened) {\n -webkit-user-select: none;\n user-select: none;\n}\n.card-expandable.card-no-transition {\n transition-duration: 0ms;\n}\n.card-expandable.card-expandable-animate-width .card-content {\n transition-property: width, transform;\n width: 100%;\n}\n.card-expandable.active-state {\n transform: scale(0.97) translate3d(0, 0, 0);\n}\n.card-expandable .card-opened-fade-in,\n.card-expandable .card-opened-fade-out {\n transition-duration: 400ms;\n}\n.card-expandable .card-opened-fade-in {\n opacity: 0;\n pointer-events: none;\n}\n.card-expandable .card-content {\n position: absolute;\n top: 0;\n width: 100vw;\n height: 100vh;\n transform-origin: center top;\n overflow: hidden;\n transition-property: transform;\n box-sizing: border-box;\n pointer-events: none;\n left: 0;\n}\n.card-expandable .card-content .card-content-padding {\n padding-left: calc(var(--f7-safe-area-left) + var(--f7-card-content-padding-horizontal));\n padding-right: calc(var(--f7-safe-area-right) + var(--f7-card-content-padding-horizontal));\n}\n.card-expandable.card-opened {\n transition-duration: 0ms;\n}\n.card-expandable.card-opening,\n.card-expandable.card-closing,\n.card-expandable.card-transitioning {\n transition-duration: 400ms;\n}\n.card-expandable.card-opening .card-content {\n transition-duration: 300ms;\n}\n.card-expandable.card-closing .card-content {\n transition-duration: 500ms;\n}\n.card-expandable.card-opening,\n.card-expandable.card-opened,\n.card-expandable.card-closing {\n z-index: 300;\n}\n.card-expandable.card-opening,\n.card-expandable.card-opened {\n border-radius: 0;\n}\n.card-expandable.card-opening .card-opened-fade-in,\n.card-expandable.card-opened .card-opened-fade-in {\n opacity: 1;\n pointer-events: auto;\n}\n.card-expandable.card-opening .card-opened-fade-out,\n.card-expandable.card-opened .card-opened-fade-out {\n opacity: 0;\n pointer-events: none;\n}\n.card-expandable.card-opened .card-content {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n pointer-events: auto;\n}\n.card-expandable .card-header {\n font-size: var(--f7-card-expandable-header-font-size);\n font-weight: var(--f7-card-expandable-header-font-weight);\n}\n.card-prevent-open {\n pointer-events: auto;\n}\n.card-expandable-size {\n width: 0;\n height: 0;\n position: absolute;\n left: 0;\n top: 0;\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n}\n@media (min-width: 768px) and (min-height: 670px) {\n .card-expandable:not(.card-tablet-fullscreen) {\n max-width: var(--f7-card-expandable-tablet-width);\n }\n .card-expandable:not(.card-tablet-fullscreen).card-opened,\n .card-expandable:not(.card-tablet-fullscreen).card-opening {\n border-radius: var(--f7-card-expandable-tablet-border-radius);\n }\n .card-expandable:not(.card-tablet-fullscreen):not(.card-expandable-animate-width) .card-content {\n width: var(--f7-card-expandable-tablet-width);\n }\n .card-expandable:not(.card-tablet-fullscreen) .card-expandable-size {\n width: var(--f7-card-expandable-tablet-width);\n height: var(--f7-card-expandable-tablet-height);\n }\n}\n.page.page-with-card-opened .page-content {\n overflow: hidden;\n}\n.card-backdrop {\n position: fixed;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 299;\n pointer-events: none;\n background: rgba(0, 0, 0, 0.2);\n opacity: 0;\n}\n.card-backdrop-in {\n animation: card-backdrop-fade-in 400ms forwards;\n pointer-events: auto;\n}\n.card-backdrop-out {\n animation: card-backdrop-fade-out 400ms forwards;\n}\n@supports ((-webkit-backdrop-filter: blur(15px)) or (backdrop-filter: blur(15px))) {\n .card-backdrop {\n background: transparent;\n -webkit-backdrop-filter: blur(15px);\n backdrop-filter: blur(15px);\n }\n}\n@keyframes card-backdrop-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes card-backdrop-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n/* === Chips === */\n:root {\n --f7-chip-font-size: 14px;\n --f7-chip-media-font-size: 16px;\n --f7-chip-delete-button-color: #000;\n}\n:root .dark,\n:root.dark {\n --f7-chip-delete-button-color: #fff;\n}\n.ios {\n --f7-chip-height: 28px;\n --f7-chip-media-size: 28px;\n --f7-chip-padding-horizontal: 10px;\n --f7-chip-border-radius: 28px;\n --f7-chip-font-weight: normal;\n --f7-chip-outline-border-color: rgba(0, 0, 0, 0.12);\n --f7-chip-bg-color: rgba(0, 0, 0, 0.12);\n --f7-chip-text-color: #000;\n --f7-chip-outline-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-chip-bg-color: #333;\n --f7-chip-text-color: #fff;\n --f7-chip-outline-text-color: #fff;\n --f7-chip-outline-border-color: rgba(255, 255, 255, 0.12);\n}\n.md {\n --f7-chip-font-weight: 500;\n --f7-chip-media-size: 24px;\n --f7-chip-height: 32px;\n --f7-chip-padding-horizontal: 12px;\n --f7-chip-border-radius: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-chip-bg-color: var(--f7-md-secondary-container);\n --f7-chip-text-color: var(--f7-md-on-secondary-container);\n --f7-chip-outline-text-color: var(--f7-md-on-surface);\n --f7-chip-outline-border-color: var(--f7-md-outline);\n}\n.chip {\n padding-left: var(--f7-chip-padding-horizontal);\n padding-right: var(--f7-chip-padding-horizontal);\n font-weight: var(--f7-chip-font-weight);\n display: inline-flex;\n box-sizing: border-box;\n vertical-align: middle;\n align-items: center;\n margin: 2px 0;\n background-color: var(--f7-chip-bg-color);\n font-size: var(--f7-chip-font-size);\n color: var(--f7-chip-text-color);\n height: var(--f7-chip-height);\n line-height: var(--f7-chip-height);\n border-radius: var(--f7-chip-border-radius);\n position: relative;\n}\n.chip-media {\n border-radius: 50%;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--f7-chip-media-size);\n width: var(--f7-chip-media-size);\n border-radius: var(--f7-chip-media-size);\n text-align: center;\n line-height: var(--f7-chip-media-size);\n box-sizing: border-box;\n color: #fff;\n font-size: var(--f7-chip-media-font-size);\n vertical-align: middle;\n}\n.chip-media i.icon {\n font-size: calc(var(--f7-chip-media-size) - 8px);\n height: calc(var(--f7-chip-media-size) - 8px);\n}\n.chip-media img {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n border-radius: 50%;\n display: block;\n}\n.chip-media + .chip-label {\n margin-left: 4px;\n}\n.chip-label {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n position: relative;\n flex-shrink: 1;\n min-width: 0;\n}\n.chip-delete {\n text-align: center;\n cursor: pointer;\n flex-shrink: 0;\n background-repeat: no-repeat;\n width: 24px;\n height: 24px;\n color: var(--f7-chip-delete-button-color);\n opacity: 0.54;\n position: relative;\n}\n.chip-delete:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n line-height: 24px;\n}\n.chip .chip-delete.active-state {\n opacity: 1;\n}\n.chip-outline,\n.ios .chip-outline-ios,\n.md .chip-outline-md {\n border: 1px solid var(--f7-chip-outline-border-color);\n color: var(--f7-chip-outline-text-color);\n background: none;\n}\n.ios .chip[class*='color-'] {\n --f7-chip-bg-color: var(--f7-theme-color);\n --f7-chip-text-color: #fff;\n}\n.ios .chip-outline[class*='color-'],\n.ios .chip-outline-ios[class*='color-'] {\n --f7-chip-outline-border-color: var(--f7-theme-color);\n --f7-chip-outline-text-color: var(--f7-theme-color);\n}\n.ios .chip-media {\n margin-left: calc(-1 * var(--f7-chip-padding-horizontal));\n}\n.ios .chip-delete {\n margin-right: calc(-1 * var(--f7-chip-padding-horizontal));\n}\n.ios .chip-delete::after {\n content: 'delete_round_ios';\n}\n.ios .chip-delete:after {\n font-size: 10px;\n}\n.md .chip-media {\n margin-left: calc(-1 * var(--f7-chip-padding-horizontal) + 4px);\n}\n.md .chip-label + .chip-delete {\n margin-left: 4px;\n}\n.md .chip-delete {\n margin-right: calc(-1 * var(--f7-chip-padding-horizontal) + 4px);\n}\n.md .chip-delete::after {\n content: 'delete_round_md';\n font-size: 16px;\n}\n/* === Form === */\n/* === Input === */\n:root {\n --f7-input-bg-color: transparent;\n --f7-label-font-weight: 400;\n --f7-label-height: 16px;\n --f7-label-font-size: 12px;\n --f7-floating-label-scale: calc(16 / 12);\n --f7-input-padding-left: 0px;\n --f7-input-padding-right: 0px;\n --f7-input-error-text-color: #ff3b30;\n --f7-input-error-font-size: 12px;\n --f7-input-error-line-height: 1.4;\n --f7-input-error-font-weight: 400;\n --f7-input-info-font-size: 12px;\n --f7-input-info-line-height: 1.4;\n --f7-textarea-height: 100px;\n /*\n --f7-input-outline-focused-border-color: var(--f7-theme-color);\n --f7-input-outline-invalid-border-color: var(--f7-input-error-text-color);\n */\n}\n.ios {\n --f7-input-item-bg-color: transparent;\n --f7-input-item-border-radius: 0px;\n --f7-input-height: 40px;\n --f7-input-font-size: 16px;\n --f7-input-placeholder-color: #a9a9a9;\n --f7-textarea-padding-vertical: 8px;\n /*\n --f7-input-focused-border-color: var(--f7-list-item-border-color);\n --f7-input-invalid-border-color: var(--f7-list-item-border-color);\n --f7-input-invalid-text-color: var(--f7-input-error-text-color);\n */\n --f7-label-text-color: inherit;\n /*\n --f7-label-focused-text-color: var(--f7-label-text-color);\n --f7-label-invalid-text-color: var(--f7-label-text-color);\n */\n --f7-input-clear-button-size: 14px;\n --f7-input-outline-border-radius: 8px;\n --f7-input-text-color: #000000;\n --f7-input-info-text-color: rgba(0, 0, 0, 0.45);\n --f7-input-clear-button-color: rgba(0, 0, 0, 0.45);\n --f7-input-outline-border-color: #bbb;\n}\n.ios .dark,\n.ios.dark {\n --f7-input-text-color: #fff;\n --f7-input-info-text-color: rgba(255, 255, 255, 0.55);\n --f7-input-clear-button-color: rgba(255, 255, 255, 0.5);\n --f7-input-outline-border-color: #444;\n}\n.md {\n --f7-input-item-border-radius: 4px 4px 0 0;\n --f7-input-height: 24px;\n --f7-input-font-size: 16px;\n --f7-textarea-padding-vertical: 0px;\n --f7-input-outline-border-radius: 4px;\n /*\n --f7-input-focused-border-color: var(--f7-theme-color);\n --f7-input-invalid-border-color: var(--f7-input-error-text-color);\n --f7-input-invalid-text-color: var(--f7-input-text-color);\n */\n /*\n --f7-label-focused-text-color: var(--f7-theme-color);\n --f7-label-invalid-text-color: var(--f7-input-error-text-color );\n */\n --f7-floating-label-scale: calc(16 / 12);\n --f7-input-clear-button-size: 24px;\n --f7-input-info-text-color: rgba(0, 0, 0, 0.45);\n}\n.md .dark,\n.md.dark {\n --f7-input-info-text-color: rgba(255, 255, 255, 0.45);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-input-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-input-item-bg-color: var(--f7-md-surface-variant);\n --f7-input-border-color: var(--f7-md-outline);\n --f7-input-clear-button-color: var(--f7-md-on-surface-variant);\n --f7-input-outline-border-color: var(--f7-md-outline);\n --f7-input-text-color: var(--f7-md-on-surface);\n --f7-label-text-color: var(--f7-md-on-surface-variant);\n}\ninput[type='text'],\ninput[type='password'],\ninput[type='search'],\ninput[type='email'],\ninput[type='tel'],\ninput[type='url'],\ninput[type='date'],\ninput[type='month'],\ninput[type='datetime-local'],\ninput[type='time'],\ninput[type='number'],\nselect,\ntextarea {\n box-sizing: border-box;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n box-shadow: none;\n border-radius: 0;\n outline: 0;\n display: block;\n padding: 0;\n margin: 0;\n font-family: inherit;\n background: none;\n resize: none;\n font-size: inherit;\n color: inherit;\n}\ninput[type='text']:-internal-autofill-selected,\ninput[type='password']:-internal-autofill-selected,\ninput[type='search']:-internal-autofill-selected,\ninput[type='email']:-internal-autofill-selected,\ninput[type='tel']:-internal-autofill-selected,\ninput[type='url']:-internal-autofill-selected,\ninput[type='date']:-internal-autofill-selected,\ninput[type='month']:-internal-autofill-selected,\ninput[type='datetime-local']:-internal-autofill-selected,\ninput[type='time']:-internal-autofill-selected,\ninput[type='number']:-internal-autofill-selected,\nselect:-internal-autofill-selected,\ntextarea:-internal-autofill-selected {\n background-color: transparent !important;\n transition: background-color 5000s ease-in-out 0s !important;\n}\ninput[type='text']:-webkit-autofill, input[type='password']:-webkit-autofill, input[type='search']:-webkit-autofill, input[type='email']:-webkit-autofill, input[type='tel']:-webkit-autofill, input[type='url']:-webkit-autofill, input[type='date']:-webkit-autofill, input[type='month']:-webkit-autofill, input[type='datetime-local']:-webkit-autofill, input[type='time']:-webkit-autofill, input[type='number']:-webkit-autofill, select:-webkit-autofill, textarea:-webkit-autofill {\n background-color: transparent !important;\n -webkit-transition: background-color 5000s ease-in-out 0s !important;\n transition: background-color 5000s ease-in-out 0s !important;\n}\ninput[type='text']:autofill,\ninput[type='password']:autofill,\ninput[type='search']:autofill,\ninput[type='email']:autofill,\ninput[type='tel']:autofill,\ninput[type='url']:autofill,\ninput[type='date']:autofill,\ninput[type='month']:autofill,\ninput[type='datetime-local']:autofill,\ninput[type='time']:autofill,\ninput[type='number']:autofill,\nselect:autofill,\ntextarea:autofill,\ninput[type='text']:-webkit-autofill-and-obscured,\ninput[type='password']:-webkit-autofill-and-obscured,\ninput[type='search']:-webkit-autofill-and-obscured,\ninput[type='email']:-webkit-autofill-and-obscured,\ninput[type='tel']:-webkit-autofill-and-obscured,\ninput[type='url']:-webkit-autofill-and-obscured,\ninput[type='date']:-webkit-autofill-and-obscured,\ninput[type='month']:-webkit-autofill-and-obscured,\ninput[type='datetime-local']:-webkit-autofill-and-obscured,\ninput[type='time']:-webkit-autofill-and-obscured,\ninput[type='number']:-webkit-autofill-and-obscured,\nselect:-webkit-autofill-and-obscured,\ntextarea:-webkit-autofill-and-obscured {\n background-color: transparent !important;\n -webkit-transition: background-color 5000s ease-in-out 0s !important;\n transition: background-color 5000s ease-in-out 0s !important;\n}\n.textarea-resizable-shadow {\n opacity: 0;\n position: absolute;\n z-index: -1000;\n pointer-events: none;\n left: -1000px;\n top: -1000px;\n visibility: hidden;\n}\n.list input[type='text'],\n.list input[type='password'],\n.list input[type='search'],\n.list input[type='email'],\n.list input[type='tel'],\n.list input[type='url'],\n.list input[type='date'],\n.list input[type='month'],\n.list input[type='datetime-local'],\n.list input[type='time'],\n.list input[type='number'],\n.list select {\n width: 100%;\n height: var(--f7-input-height);\n color: var(--f7-input-text-color);\n font-size: var(--f7-input-font-size);\n background-color: var(--f7-input-bg-color, transparent);\n padding-left: var(--f7-input-padding-left);\n padding-right: var(--f7-input-padding-right);\n}\n.list input[type='text']::placeholder,\n.list input[type='password']::placeholder,\n.list input[type='search']::placeholder,\n.list input[type='email']::placeholder,\n.list input[type='tel']::placeholder,\n.list input[type='url']::placeholder,\n.list input[type='date']::placeholder,\n.list input[type='month']::placeholder,\n.list input[type='datetime-local']::placeholder,\n.list input[type='time']::placeholder,\n.list input[type='number']::placeholder,\n.list select::placeholder {\n color: var(--f7-input-placeholder-color);\n}\n.list textarea {\n width: 100%;\n color: var(--f7-input-text-color);\n font-size: var(--f7-input-font-size);\n resize: none;\n line-height: 1.4;\n height: var(--f7-textarea-height);\n background-color: var(--f7-input-bg-color, transparent);\n padding-top: var(--f7-textarea-padding-vertical);\n padding-bottom: var(--f7-textarea-padding-vertical);\n padding-left: var(--f7-input-padding-left);\n padding-right: var(--f7-input-padding-right);\n}\n.list textarea::placeholder {\n color: var(--f7-input-placeholder-color);\n}\n.list textarea.resizable {\n height: calc(var(--f7-input-height) + var(--f7-textarea-padding-vertical) * 2);\n}\n.list input[type='time'],\n.list input[type='date'],\n.list input[type='month'],\n.list input[type='datetime-local'] {\n line-height: var(--f7-input-height);\n}\n.list .item-label,\n.list .item-floating-label {\n width: auto;\n vertical-align: top;\n flex-shrink: 0;\n font-size: var(--f7-label-font-size);\n font-weight: var(--f7-label-font-weight);\n line-height: var(--f7-label-height);\n color: var(--f7-label-text-color);\n transition-duration: 200ms;\n transition-property: transform, color;\n}\n.list .item-floating-label {\n color: var(--f7-input-placeholder-color);\n max-width: calc(100% / var(--f7-floating-label-scale));\n pointer-events: none;\n left: var(--f7-input-padding-left);\n transform-origin: left center;\n}\n.list .item-floating-label ~ .item-input-wrap input::placeholder,\n.list .item-floating-label ~ .item-input-wrap textarea::placeholder {\n opacity: 0;\n transition-duration: 100ms;\n}\n.list .item-floating-label ~ .item-input-wrap input.input-focused::placeholder,\n.list .item-floating-label ~ .item-input-wrap textarea.input-focused::placeholder {\n opacity: 1;\n transition-duration: 300ms;\n}\n.list .item-input-with-value .item-floating-label {\n color: var(--f7-label-text-color);\n}\n.list .item-input-with-value .item-floating-label,\n.list .item-input-focused .item-floating-label {\n transform: scale(1) translateY(0) !important;\n}\n.list .item-input-wrap {\n width: 100%;\n flex-shrink: 1;\n position: relative;\n}\n.item-input,\n.input {\n position: relative;\n}\n.item-input .item-inner {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n.item-input-error-message,\n.input-error-message {\n font-size: var(--f7-input-error-font-size);\n line-height: var(--f7-input-error-line-height);\n color: var(--f7-input-error-text-color);\n font-weight: var(--f7-input-error-font-weight);\n display: none;\n box-sizing: border-box;\n}\n.item-input-info,\n.input-info {\n font-size: var(--f7-input-info-font-size);\n line-height: var(--f7-input-info-line-height);\n color: var(--f7-input-info-text-color);\n}\n.item-input-invalid .item-input-error-message,\n.input-invalid .item-input-error-message,\n.item-input-invalid .input-error-message,\n.input-invalid .input-error-message {\n display: block;\n}\n.item-input-invalid .item-input-info,\n.input-invalid .item-input-info,\n.item-input-invalid .input-info,\n.input-invalid .input-info {\n display: none;\n}\n.input {\n position: relative;\n}\n.input input,\n.input select,\n.input textarea {\n width: 100%;\n}\n.input-clear-button {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n transition-duration: 100ms;\n position: absolute;\n top: 50%;\n border: none;\n padding: 0;\n margin: 0;\n outline: 0;\n z-index: 1;\n cursor: pointer;\n background: none;\n width: var(--f7-input-clear-button-size);\n height: var(--f7-input-clear-button-size);\n margin-top: calc(-1 * var(--f7-input-clear-button-size) / 2);\n color: var(--f7-input-clear-button-color);\n right: 0;\n}\n.input-clear-button:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n.input-clear-button:before {\n position: absolute;\n content: '';\n left: 50%;\n top: 50%;\n}\n.item-input-wrap .input-clear-button {\n top: calc(var(--f7-input-height) / 2);\n}\n.input-clear-button.active-state {\n opacity: 0.75 !important;\n}\n.input-with-value ~ .input-clear-button,\n.item-input-with-value .input-clear-button,\n.input-with-value .input-clear-button {\n opacity: 1;\n pointer-events: auto;\n visibility: visible;\n}\n.input-dropdown-wrap,\n.input-dropdown {\n position: relative;\n}\n.input-dropdown-wrap:before,\n.input-dropdown:before {\n content: '';\n pointer-events: none;\n position: absolute;\n top: 50%;\n margin-top: -2px;\n width: 0;\n height: 0;\n border-left: 4px solid transparent;\n border-right: 4px solid transparent;\n border-top: 5px solid #727272;\n right: 6px;\n}\n.input-dropdown-wrap select,\n.input-dropdown select,\n.input-dropdown-wrap input,\n.input-dropdown input,\n.input-dropdown-wrap textarea,\n.input-dropdown textarea {\n padding-right: calc(20px + var(--f7-input-padding-right));\n}\n.item-input-outline .item-content::after,\n.item-input-outline.item-content::after,\n.input-outline::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n top: 8px;\n bottom: 8px;\n border: 1px solid var(--f7-input-outline-border-color);\n border-radius: var(--f7-input-outline-border-radius);\n pointer-events: none;\n box-sizing: border-box;\n transition-duration: 200ms;\n}\n.item-input-outline .item-content .item-label,\n.item-input-outline.item-content .item-label,\n.input-outline .item-label,\n.item-input-outline .item-content .item-floating-label,\n.item-input-outline.item-content .item-floating-label,\n.input-outline .item-floating-label {\n pointer-events: none;\n background: var(--f7-page-bg-color);\n z-index: 1;\n padding: 4px;\n}\n.item-input-outline .item-content.item-input-focused::after,\n.item-input-outline.item-content.item-input-focused::after,\n.input-outline.item-input-focused::after,\n.item-input-outline .item-content.input-focused::after,\n.item-input-outline.item-content.input-focused::after,\n.input-outline.input-focused::after {\n border-width: 2px;\n border-color: var(--f7-input-outline-invalid-border-color, var(--f7-theme-color));\n}\n.item-input-outline .item-content.item-input-invalid::after,\n.item-input-outline.item-content.item-input-invalid::after,\n.input-outline.item-input-invalid::after,\n.item-input-outline .item-content.input-invalid::after,\n.item-input-outline.item-content.input-invalid::after,\n.input-outline.input-invalid::after {\n border-width: 2px;\n border-color: var(--f7-input-outline-invalid-border-color, var(--f7-input-error-text-color));\n}\n.block-strong .item-input-outline .item-label,\n.block-strong .item-input-outline .item-floating-label,\n.ios .block-strong-ios .item-input-outline .item-label,\n.ios .block-strong-ios .item-input-outline .item-floating-label,\n.md .block-strong-md .item-input-outline .item-label,\n.md .block-strong-md .item-input-outline .item-floating-label {\n background: var(--f7-block-strong-bg-color) !important;\n}\n.list-strong .item-input-outline .item-floating-label,\n.list-strong .item-input-outline .item-label,\n.ios .list-strong-ios .item-input-outline .item-floating-label,\n.ios .list-strong-ios .item-input-outline .item-label,\n.md .list-strong-md .item-input-outline .item-floating-label,\n.md .list-strong-md .item-input-outline .item-label {\n background: var(--f7-list-strong-bg-color) !important;\n}\n.dark option {\n background-color: var(--f7-page-bg-color);\n}\n.ios .item-label + .item-input-wrap,\n.ios .item-floating-label + .item-input-wrap {\n margin-top: 0;\n}\n.ios .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height) + 25%));\n}\n.ios .item-input-focused .item-floating-label {\n color: var(--f7-label-text-color);\n}\n.ios .item-input .item-media {\n align-self: flex-start;\n}\n.ios .item-input-wrap {\n margin-top: calc(-1 * var(--f7-list-item-padding-vertical));\n margin-bottom: calc(-1 * var(--f7-list-item-padding-vertical));\n}\n.ios .item-input:not(.item-input-outline) .item-content,\n.ios .item-input:not(.item-input-outline).item-content {\n background: var(--f7-input-item-bg-color);\n}\n.ios .item-input-error-message,\n.ios .item-input-info,\n.ios .input-error-message,\n.ios .input-info {\n position: relative;\n margin-bottom: 6px;\n margin-top: -8px;\n}\n.ios .item-input-focused .item-label,\n.ios .item-input-focused .item-floating-label {\n color: var(--f7-label-focused-text-color, var(--f7-label-text-color));\n}\n.ios .item-input-focused .item-inner:after {\n background: var(--f7-input-focused-border-color, var(--f7-list-item-border-color));\n}\n.ios .item-input-invalid .item-label,\n.ios .item-input-invalid .item-floating-label {\n color: var(--f7-label-invalid-text-color, var(--f7-label-text-color));\n}\n.ios .item-input-invalid .item-inner:after {\n background: var(--f7-input-invalid-border-color, var(--f7-list-item-border-color));\n}\n.ios .item-input-invalid input,\n.ios .input-invalid input,\n.ios .item-input-invalid select,\n.ios .input-invalid select,\n.ios .item-input-invalid textarea,\n.ios .input-invalid textarea {\n color: var(--f7-input-invalid-text-color, var(--f7-input-error-text-color));\n}\n.ios .input-clear-button:after {\n content: 'delete_round_ios';\n font-size: calc(var(--f7-input-clear-button-size) / (14 / 10));\n line-height: 1.4;\n}\n.ios .input-clear-button:before {\n width: 44px;\n height: 44px;\n margin-left: -22px;\n margin-top: -22px;\n}\n.ios .item-input-outline .item-content,\n.ios .item-input-outline.item-content {\n padding-top: 8px;\n padding-bottom: 8px;\n margin-left: 16px;\n margin-right: 16px;\n}\n.ios li.item-input-outline:first-child,\n.ios li:first-child > .item-input-outline {\n padding-top: 16px;\n}\n.ios li.item-input-outline:first-child::after,\n.ios li:first-child > .item-input-outline::after {\n top: 16px;\n}\n.ios li.item-input-outline:last-child,\n.ios li:last-child > .item-input-outline {\n padding-bottom: 16px;\n}\n.ios li.item-input-outline:last-child::after,\n.ios li:last-child > .item-input-outline::after {\n bottom: 16px;\n}\n.ios .item-input-outline .item-content .item-inner,\n.ios .item-input-outline.item-content .item-inner,\n.ios .input-outline .item-inner {\n display: block;\n padding-top: 0px;\n padding-bottom: 0px;\n}\n.ios .item-input-outline .item-content .item-input-wrap,\n.ios .item-input-outline.item-content .item-input-wrap,\n.ios .input-outline .item-input-wrap {\n margin-top: 2px;\n}\n.ios .item-input-outline .item-content .item-title + .item-input-wrap,\n.ios .item-input-outline.item-content .item-title + .item-input-wrap,\n.ios .input-outline .item-title + .item-input-wrap {\n margin-top: -22px;\n}\n.ios .item-input-outline .item-content .item-label,\n.ios .item-input-outline.item-content .item-label,\n.ios .input-outline .item-label,\n.ios .item-input-outline .item-content .item-floating-label,\n.ios .item-input-outline.item-content .item-floating-label,\n.ios .input-outline .item-floating-label {\n display: inline-flex;\n margin: -8px -4px -4px;\n top: -4px;\n}\n.ios .item-input-outline .item-content .item-floating-label,\n.ios .item-input-outline.item-content .item-floating-label,\n.ios .input-outline .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height)));\n}\n.md .item-input-wrap {\n min-height: var(--f7-input-height);\n}\n.md .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc((var(--f7-input-height) / 2) / var(--f7-floating-label-scale)));\n}\n.md .item-input .item-inner:after {\n display: none !important;\n}\n.md .item-input .item-content,\n.md .item-input.item-content {\n margin-left: 16px;\n margin-right: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.md .input:after {\n content: '';\n position: absolute;\n background-color: var(--f7-input-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.md .input::after {\n transform: scaleY(1) !important;\n transition-duration: 200ms;\n bottom: 0px;\n}\n.md .input.input-focused::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-focused-border-color, var(--f7-theme-color));\n}\n.md .input.input-invalid::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-invalid-border-color, var(--f7-input-error-text-color));\n}\n.md .item-input:not(.item-input-outline) .item-content:after,\n.md .item-input:not(.item-input-outline).item-content:after {\n content: '';\n position: absolute;\n background-color: var(--f7-input-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.md .item-input:not(.item-input-outline) .item-content::before,\n.md .item-input:not(.item-input-outline).item-content::before {\n content: '';\n position: absolute;\n left: 0;\n top: 8px;\n bottom: 8px;\n right: 0;\n border-radius: var(--f7-input-item-border-radius);\n background: var(--f7-input-item-bg-color);\n pointer-events: none;\n}\n.md .item-input:not(.item-input-outline) .item-content::after,\n.md .item-input:not(.item-input-outline).item-content::after {\n transform: scaleY(1) !important;\n transition-duration: 200ms;\n bottom: 8px;\n}\n.md .item-input:not(.item-input-outline) .item-content.item-input-focused::after,\n.md .item-input:not(.item-input-outline).item-content.item-input-focused::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-focused-border-color, var(--f7-theme-color));\n}\n.md .item-input:not(.item-input-outline) .item-content.item-input-invalid::after,\n.md .item-input:not(.item-input-outline).item-content.item-input-invalid::after,\n.md .item-input:not(.item-input-outline) .item-content.input-invalid::after,\n.md .item-input:not(.item-input-outline).item-content.input-invalid::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-invalid-border-color, var(--f7-input-error-text-color));\n}\n.md .item-input-outline .item-content .item-inner,\n.md .item-input-outline.item-content .item-inner,\n.md .input-outline .item-inner {\n padding-top: 16px;\n padding-bottom: 16px;\n}\n.md .item-input-outline .item-content .item-label,\n.md .item-input-outline.item-content .item-label,\n.md .input-outline .item-label,\n.md .item-input-outline .item-content .item-floating-label,\n.md .item-input-outline.item-content .item-floating-label,\n.md .input-outline .item-floating-label {\n --label-height: calc(var(--f7-label-height) + 8px);\n margin: calc(0px - 16px - var(--label-height) / 2) -4px 4px;\n}\n.md .item-input-outline .item-content .item-floating-label,\n.md .item-input-outline.item-content .item-floating-label,\n.md .input-outline .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc((var(--f7-input-height) / 2) + 8px));\n}\n.md .item-input-with-error-message,\n.md .item-input-with-info,\n.md .input-with-error-message,\n.md .input-with-info {\n padding-bottom: 24px !important;\n}\n.md .item-input-error-message,\n.md .item-input-info,\n.md .input-error-message,\n.md .input-info {\n position: absolute;\n top: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n width: 100%;\n left: 0;\n}\n.md .item-input-focused .item-label,\n.md .item-input-focused .item-floating-label {\n color: var(--f7-label-focused-text-color, var(--f7-theme-color));\n}\n.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after,\n.md .input-focused:not(.input-outline):after {\n background: var(--f7-input-focused-border-color, var(--f7-theme-color));\n}\n.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after,\n.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after,\n.md .input-invalid:not(.input-outline):after,\n.md .input-focused:not(.input-outline):after {\n transform: scaleY(2) !important;\n}\n.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after,\n.md .input-invalid:not(.input-outline):after {\n background: var(--f7-input-invalid-border-color, var(--f7-input-error-text-color));\n}\n.md .item-input-invalid .item-label,\n.md .item-input-invalid .item-floating-label {\n color: var(--f7-label-invalid-text-color, var(--f7-input-error-text-color));\n}\n.md .item-input-invalid input,\n.md .input-invalid input,\n.md .item-input-invalid select,\n.md .input-invalid select,\n.md .item-input-invalid textarea,\n.md .input-invalid textarea {\n color: var(--f7-input-invalid-text-color, var(--f7-input-text-color));\n}\n.md .input-clear-button:after {\n font-size: var(--f7-input-clear-button-size);\n content: 'delete_round_md';\n line-height: 1;\n}\n.md .input-clear-button:before {\n width: 48px;\n height: 48px;\n margin-left: -24px;\n margin-top: -24px;\n}\n/* === Checkbox === */\n:root {\n /* --f7-checkbox-active-color: var(--f7-theme-color); */\n --f7-checkbox-icon-color: #fff;\n --f7-checkbox-extra-margin: 0px;\n}\n:root .dark,\n:root.dark {\n --f7-checkbox-inactive-color: rgba(255, 255, 255, 0.3);\n --f7-checkbox-icon-color: #000;\n}\n.ios {\n --f7-checkbox-size: 22px;\n --f7-checkbox-border-radius: 50%;\n --f7-checkbox-border-width: 1px;\n --f7-checkbox-inactive-color: #c7c7cc;\n}\n.md {\n --f7-checkbox-size: 18px;\n --f7-checkbox-border-radius: 2px;\n --f7-checkbox-border-width: 2px;\n --f7-checkbox-inactive-color: #6d6d6d;\n}\n.checkbox {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n z-index: 1;\n background-color: transparent;\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.5);\n}\n.icon-checkbox,\n.checkbox i {\n flex-shrink: 0;\n border: var(--f7-checkbox-border-width) solid var(--f7-checkbox-inactive-color);\n width: var(--f7-checkbox-size);\n height: var(--f7-checkbox-size);\n border-radius: var(--f7-checkbox-border-radius);\n box-sizing: border-box;\n position: relative;\n display: block;\n}\n.icon-checkbox:after,\n.checkbox i:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n width: var(--f7-checkbox-size);\n height: var(--f7-checkbox-size);\n line-height: var(--f7-checkbox-size);\n top: calc(0px - var(--f7-checkbox-border-width));\n opacity: 0;\n color: var(--f7-checkbox-icon-color);\n position: relative;\n transition-property: opacity;\n left: calc(0px - var(--f7-checkbox-border-width));\n}\n.icon-checkbox.color-white,\n.checkbox i.color-white,\n.color-white .icon-checkbox,\n.color-white .checkbox i {\n --f7-theme-color: #fff;\n --f7-checkbox-icon-color: #000;\n}\n.icon-checkbox.color-black,\n.checkbox i.color-black,\n.color-black .icon-checkbox,\n.color-black .checkbox i {\n --f7-theme-color: #000;\n --f7-checkbox-icon-color: #fff;\n}\nlabel.item-checkbox input[type='checkbox']:not(:checked) ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:not(:checked) ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:not(:checked) ~ i:after {\n font-size: 0;\n}\nlabel.item-checkbox input[type='checkbox']:checked ~ .icon-checkbox,\nlabel.item-checkbox input[type='checkbox']:checked ~ * .icon-checkbox,\n.checkbox input[type='checkbox']:checked ~ i,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox,\n.checkbox input[type='checkbox']:indeterminate ~ i {\n border-color: var(--f7-checkbox-active-color, var(--f7-theme-color));\n background-color: var(--f7-checkbox-active-color, var(--f7-theme-color));\n}\nlabel.item-checkbox input[type='checkbox']:checked ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:checked ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:checked ~ i:after,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:indeterminate ~ i:after {\n opacity: 1;\n}\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:indeterminate ~ i:after {\n font-size: 0;\n content: '';\n position: absolute;\n top: 50%;\n width: 70%;\n background: var(--f7-checkbox-icon-color);\n height: 2px;\n border-radius: 2px;\n margin-top: -1px;\n transition: 0ms;\n left: 15%;\n}\nlabel.item-checkbox,\n.checkbox {\n cursor: pointer;\n}\nlabel.item-checkbox input[type='checkbox'],\n.checkbox input[type='checkbox'],\nlabel.item-checkbox input[type='radio'],\n.checkbox input[type='radio'] {\n display: none;\n}\nlabel.item-checkbox {\n transition-duration: 300ms;\n}\nlabel.item-checkbox .item-content .item-media,\nlabel.item-checkbox.item-content .item-media {\n align-self: center;\n}\nlabel.item-checkbox > .icon-checkbox {\n margin-right: calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin));\n}\nlabel.item-checkbox.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\nlabel.item-checkbox.active-state:after {\n background-color: transparent;\n}\nlabel.item-checkbox.disabled,\n.disabled label.item-checkbox {\n opacity: 0.55;\n pointer-events: none;\n opacity: 0.55 !important;\n pointer-events: none !important;\n}\nlabel.item-checkbox.item-checkbox-icon-end .item-inner {\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right) + var(--f7-checkbox-size) + 16px);\n}\nlabel.item-checkbox.item-checkbox-icon-end input[type='checkbox'] ~ .icon-checkbox {\n position: absolute;\n right: calc(var(--f7-safe-area-right) + 16px);\n margin-right: 0;\n}\n.ios .icon-checkbox:after,\n.ios .checkbox i:after {\n content: 'checkbox_ios';\n font-size: 21px;\n}\n.ios label.item-checkbox.active-state {\n transition-duration: 0ms;\n}\n.ios label.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox:after,\n.ios label.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox:after,\n.ios .checkbox input[type='checkbox']:indeterminate ~ i:after {\n height: 2px;\n margin-top: -1px;\n}\n.md .icon-checkbox,\n.md .checkbox i {\n transition-duration: 200ms;\n}\n.md .icon-checkbox:after,\n.md .checkbox i:after {\n content: 'checkbox_md';\n transition-duration: 200ms;\n font-size: 15px;\n}\n.md label.item-checkbox {\n position: relative;\n overflow: hidden;\n z-index: 0;\n}\n/* === Radio === */\n:root {\n /*\n --f7-radio-active-color: var(--f7-theme-color);\n */\n --f7-radio-border-radius: 50%;\n --f7-radio-extra-margin: 0px;\n}\n:root .dark,\n:root.dark {\n --f7-radio-inactive-color: rgba(255, 255, 255, 0.3);\n}\n.ios {\n --f7-radio-size: 22px;\n --f7-radio-border-width: 1px;\n --f7-radio-inactive-color: #c7c7cc;\n}\n.md {\n --f7-radio-size: 20px;\n --f7-radio-border-width: 2px;\n --f7-radio-inactive-color: #6d6d6d;\n}\n.radio {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n z-index: 1;\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.5);\n}\n.icon-radio {\n width: var(--f7-radio-size);\n height: var(--f7-radio-size);\n border-radius: var(--f7-radio-border-radius);\n position: relative;\n box-sizing: border-box;\n display: block;\n flex-shrink: 0;\n}\n.radio.color-white,\n.icon-radio.color-white,\n.color-white .radio,\n.color-white .icon-radio {\n --f7-theme-color: #fff;\n}\n.radio.color-black,\n.icon-radio.color-black,\n.color-black .radio,\n.color-black .icon-radio {\n --f7-theme-color: #000;\n}\n.radio .icon-radio,\n.md .icon-radio {\n border: var(--f7-radio-border-width) solid var(--f7-radio-inactive-color);\n}\nlabel.item-radio,\n.radio {\n cursor: pointer;\n}\nlabel.item-radio input[type='checkbox'],\n.radio input[type='checkbox'],\nlabel.item-radio input[type='radio'],\n.radio input[type='radio'] {\n display: none;\n}\nlabel.item-radio {\n transition-duration: 300ms;\n}\nlabel.item-radio .item-content .item-media,\nlabel.item-radio.item-content .item-media {\n align-self: center;\n}\nlabel.item-radio.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\nlabel.item-radio.active-state:after {\n background-color: transparent;\n}\nlabel.item-radio.disabled,\n.disabled label.item-radio {\n opacity: 0.55;\n pointer-events: none;\n opacity: 0.55 !important;\n pointer-events: none !important;\n}\n.ios .icon-radio:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n width: calc(var(--f7-radio-size) - var(--f7-radio-border-width) * 2);\n height: calc(var(--f7-radio-size) - var(--f7-radio-border-width) * 2);\n line-height: calc(var(--f7-radio-size) - var(--f7-radio-border-width) * 2 + 1px);\n font-size: 20px;\n content: 'radio_ios';\n color: var(--f7-radio-active-color, var(--f7-theme-color));\n opacity: 0;\n}\n.ios label.item-radio input[type='radio']:checked ~ .icon-radio:after,\n.ios label.item-radio input[type='radio']:checked ~ * .icon-radio:after,\n.ios .radio input[type='radio']:checked ~ .icon-radio:after {\n opacity: 1;\n}\n.ios .radio input[type='radio']:checked ~ .icon-radio {\n border-color: var(--f7-radio-active-color, var(--f7-theme-color));\n}\n.ios label.item-radio:not(.item-radio-icon-start) input[type='radio'] ~ .icon-radio {\n position: absolute;\n top: 50%;\n margin-top: -11px;\n right: calc(var(--f7-safe-area-right) + 10px);\n}\n.ios label.item-radio:not(.item-radio-icon-start) .item-inner {\n padding-right: calc(var(--f7-safe-area-right) + 36px);\n}\n.ios label.item-radio-icon-start > .icon-radio {\n margin-right: calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin));\n}\n.ios label.item-radio.active-state {\n transition-duration: 0ms;\n}\n.md .icon-radio {\n transition-duration: 200ms;\n}\n.md .icon-radio:after {\n content: '';\n position: absolute;\n width: 10px;\n height: 10px;\n left: 50%;\n top: 50%;\n margin-left: -5px;\n margin-top: -5px;\n background-color: var(--f7-radio-active-color, var(--f7-theme-color));\n border-radius: 50%;\n transform: scale(0);\n transition-duration: 200ms;\n}\n.md label.item-radio input[type='radio']:checked ~ .icon-radio,\n.md label.item-radio input[type='radio']:checked ~ * .icon-radio,\n.md .radio input[type='radio']:checked ~ .icon-radio {\n border-color: var(--f7-radio-active-color, var(--f7-theme-color));\n}\n.md label.item-radio input[type='radio']:checked ~ .icon-radio:after,\n.md label.item-radio input[type='radio']:checked ~ * .icon-radio:after,\n.md .radio input[type='radio']:checked ~ .icon-radio:after {\n background-color: var(--f7-radio-active-color, var(--f7-theme-color));\n transform: scale(1);\n}\n.md label.item-radio {\n position: relative;\n overflow: hidden;\n z-index: 0;\n}\n.md label.item-radio:not(.item-radio-icon-end) > .icon-radio {\n margin-right: calc(var(--f7-list-item-media-margin) + var(--f7-radio-extra-margin));\n}\n.md label.item-radio-icon-end input[type='radio'] ~ .icon-radio {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n right: calc(var(--f7-safe-area-right) + 16px);\n}\n.md label.item-radio-icon-end .item-inner {\n padding-right: calc(var(--f7-safe-area-right) + 52px);\n}\n/* === Toggle === */\n.ios {\n --f7-toggle-width: 52px;\n --f7-toggle-height: 32px;\n /*\n --f7-toggle-active-bg-color: var(--f7-theme-color);\n */\n --f7-toggle-inactive-knob-bg-color: #fff;\n --f7-toggle-active-knob-bg-color: #fff;\n --f7-toggle-inactive-border-color: #e5e5e5;\n --f7-toggle-inactive-bg-color: #fff;\n}\n.ios .dark,\n.ios.dark {\n --f7-toggle-inactive-border-color: #555;\n --f7-toggle-inactive-bg-color: #555;\n}\n.md {\n --f7-toggle-width: 52px;\n --f7-toggle-height: 32px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-toggle-inactive-bg-color: var(--f7-md-surface-variant);\n --f7-toggle-active-bg-color: var(--f7-theme-color);\n --f7-toggle-inactive-knob-bg-color: var(--f7-md-outline);\n --f7-toggle-active-knob-bg-color: var(--f7-md-on-primary);\n --f7-toggle-inactive-border-color: var(--f7-md-outline);\n --f7-toggle-active-border-color: var(--f7-theme-color);\n}\n.toggle,\n.toggle-icon {\n width: var(--f7-toggle-width);\n height: var(--f7-toggle-height);\n border-radius: var(--f7-toggle-height);\n}\n.toggle {\n display: inline-block;\n vertical-align: middle;\n position: relative;\n box-sizing: border-box;\n align-self: center;\n -webkit-user-select: none;\n user-select: none;\n}\n.toggle input[type='checkbox'] {\n display: none;\n}\n.toggle input[disabled] ~ .toggle-icon {\n pointer-events: none;\n}\n.toggle-icon {\n z-index: 0;\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n position: relative;\n transition: 300ms;\n box-sizing: border-box;\n display: block;\n cursor: pointer;\n}\n.toggle-icon:before,\n.toggle-icon:after {\n content: '';\n}\n.toggle-icon:after {\n position: absolute;\n z-index: 2;\n transform: translateX(0px);\n transition-duration: 300ms;\n}\n.ios .toggle {\n background: var(--f7-toggle-inactive-border-color);\n}\n.ios .toggle input[type='checkbox']:checked + .toggle-icon {\n background: var(--f7-toggle-active-color, var(--f7-theme-color));\n}\n.ios .toggle input[type='checkbox']:checked + .toggle-icon:before {\n background: var(--f7-toggle-active-bg-color, var(--f7-theme-color));\n transform: scale(0);\n}\n.ios .toggle input[type='checkbox']:checked + .toggle-icon:after {\n background: var(--f7-toggle-active-knob-bg-color);\n transform: translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height)));\n}\n.ios .toggle-icon {\n background: var(--f7-toggle-border-color);\n}\n.ios .toggle-icon:before {\n position: absolute;\n left: 2px;\n top: 2px;\n width: calc(var(--f7-toggle-width) - 4px);\n height: calc(var(--f7-toggle-height) - 4px);\n border-radius: var(--f7-toggle-height);\n box-sizing: border-box;\n background: var(--f7-toggle-inactive-bg-color);\n z-index: 1;\n transition-duration: 300ms;\n transform: scale(1);\n}\n.ios .toggle-icon:after {\n background: var(--f7-toggle-inactive-knob-bg-color);\n height: calc(var(--f7-toggle-height) - 4px);\n width: calc(var(--f7-toggle-height) - 4px);\n top: 2px;\n left: 2px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n border-radius: calc(var(--f7-toggle-height) - 4px);\n}\n.ios .toggle-active-state input[type='checkbox']:not(:checked) + .toggle-icon:before {\n transform: scale(0);\n}\n.ios .toggle-active-state input[type='checkbox'] + .toggle-icon:after {\n width: calc(var(--f7-toggle-height) + 4px);\n}\n.ios .toggle-active-state input[type='checkbox']:checked + .toggle-icon:after {\n transform: translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height) - 8px));\n}\n.md .toggle input[type='checkbox']:checked + .toggle-icon {\n background: var(--f7-toggle-active-bg-color);\n border-color: var(--f7-toggle-active-border-color);\n}\n.md .toggle input[type='checkbox']:checked + .toggle-icon:after {\n transform: translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height))) scale(1);\n background: var(--f7-toggle-active-knob-bg-color);\n}\n.md .toggle.active-state input[type='checkbox']:checked + .toggle-icon:after {\n transform: translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height))) scale(1.1);\n}\n.md .toggle-icon {\n background: var(--f7-toggle-inactive-bg-color);\n border: 2px solid var(--f7-toggle-inactive-border-color);\n}\n.md .toggle-icon:after {\n background: var(--f7-toggle-inactive-knob-bg-color);\n height: calc(var(--f7-toggle-height) - 8px);\n width: calc(var(--f7-toggle-height) - 8px);\n top: 2px;\n border-radius: var(--f7-toggle-height);\n transform: scale(0.666);\n left: 2px;\n}\n.md .toggle-icon.active-state:after {\n transform: scale(1.1);\n}\n/* === Range Slider === */\n:root {\n /*\n --f7-range-bar-active-bg-color: var(--f7-theme-color);\n --f7-range-scale-bg-color: var(--f7-range-bar-bg-color);\n --f7-range-scale-substep-bg-color: var(--f7-range-bar-bg-color);\n */\n --f7-range-scale-step-height: 5px;\n --f7-range-scale-substep-width: 1px;\n --f7-range-scale-substep-height: 4px;\n --f7-range-bar-bg-color: rgba(0, 0, 0, 0.2);\n}\n:root .dark,\n:root.dark {\n --f7-range-bar-bg-color: rgba(255, 255, 255, 0.2);\n}\n.ios {\n --f7-range-size: 28px;\n --f7-range-bar-size: 4px;\n --f7-range-bar-border-radius: 2px;\n --f7-range-knob-size: 28px;\n --f7-range-knob-color: #fff;\n --f7-range-knob-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n --f7-range-label-size: 24px;\n --f7-range-label-text-color: #000;\n --f7-range-label-bg-color: #fff;\n --f7-range-label-font-size: 12px;\n --f7-range-label-font-weight: 500;\n --f7-range-label-border-radius: 5px;\n --f7-range-label-padding: 0px 2px;\n --f7-range-scale-text-color: #666;\n --f7-range-scale-step-width: 1px;\n --f7-range-scale-font-size: 12px;\n --f7-range-scale-font-weight: 400;\n --f7-range-scale-label-offset: 4px;\n}\n.md {\n --f7-range-size: 20px;\n --f7-range-bar-size: 2px;\n --f7-range-bar-border-radius: 0px;\n --f7-range-knob-size: 12px;\n --f7-range-knob-box-shadow: none;\n --f7-range-label-size: 26px;\n --f7-range-label-font-weight: normal;\n --f7-range-label-font-size: 10px;\n --f7-range-label-border-radius: 50%;\n --f7-range-label-padding: 0px;\n --f7-range-scale-step-width: 2px;\n --f7-range-scale-font-size: 12px;\n --f7-range-scale-font-weight: 400;\n --f7-range-scale-label-offset: 4px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-range-knob-color: var(--f7-theme-color);\n --f7-range-label-text-color: var(--f7-md-on-primary);\n --f7-range-label-bg-color: var(--f7-theme-color);\n --f7-range-scale-text-color: var(--f7-md-on-surface-variant);\n}\n.range-slider {\n display: block;\n position: relative;\n align-self: center;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n}\n.range-slider input[type='range'] {\n display: none;\n}\n.range-slider.range-slider-horizontal {\n width: 100%;\n height: var(--f7-range-size);\n touch-action: pan-y;\n}\n.range-slider.range-slider-vertical {\n height: 100%;\n width: var(--f7-range-size);\n touch-action: pan-x;\n}\n.range-bar {\n position: absolute;\n overflow: hidden;\n background: var(--f7-range-bar-bg-color);\n border-radius: var(--f7-range-bar-border-radius);\n}\n.range-slider-vertical .range-bar {\n left: 50%;\n top: 0;\n height: 100%;\n width: var(--f7-range-bar-size);\n margin-left: calc(-1 * var(--f7-range-bar-size) / 2);\n}\n.range-slider-horizontal .range-bar {\n left: 0;\n top: 50%;\n width: 100%;\n height: var(--f7-range-bar-size);\n margin-top: calc(-1 * var(--f7-range-bar-size) / 2);\n}\n.range-bar-active {\n position: absolute;\n background: var(--f7-range-bar-active-bg-color, var(--f7-theme-color));\n}\n.range-slider-horizontal .range-bar-active {\n left: 0;\n top: 0;\n height: 100%;\n}\n.range-slider-vertical .range-bar-active {\n left: 0;\n bottom: 0;\n width: 100%;\n}\n.range-slider-vertical-reversed .range-bar-active {\n top: 0;\n bottom: auto;\n}\n.range-knob-wrap {\n z-index: 20;\n position: absolute;\n height: var(--f7-range-knob-size);\n width: var(--f7-range-knob-size);\n}\n.range-slider-horizontal .range-knob-wrap {\n top: 50%;\n margin-top: calc(-1 * var(--f7-range-knob-size) / 2);\n margin-left: calc(-1 * var(--f7-range-knob-size) / 2);\n left: 0;\n}\n.range-slider-vertical .range-knob-wrap {\n left: 50%;\n margin-left: calc(-1 * var(--f7-range-knob-size) / 2);\n bottom: 0;\n margin-bottom: calc(-1 * var(--f7-range-knob-size) / 2);\n}\n.range-slider-vertical-reversed .range-knob-wrap {\n bottom: auto;\n top: 0;\n margin-bottom: 0;\n margin-top: calc(-1 * var(--f7-range-knob-size) / 2);\n}\n.range-knob {\n box-sizing: border-box;\n border-radius: 50%;\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 1;\n background: var(--f7-range-knob-color, var(--f7-range-knob-bg-color, var(--f7-theme-color)));\n box-shadow: var(--f7-range-knob-box-shadow);\n}\n.range-knob:after {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n width: 44px;\n height: 44px;\n margin-left: -22px;\n margin-top: -22px;\n}\n.range-knob-label {\n position: absolute;\n left: 50%;\n bottom: 100%;\n text-align: center;\n transition-duration: 120ms;\n transition-property: transform;\n box-sizing: border-box;\n transform: translateY(100%) scale(0);\n height: var(--f7-range-label-size);\n line-height: var(--f7-range-label-size);\n min-width: var(--f7-range-label-size);\n color: var(--f7-range-label-text-color);\n background-color: var(--f7-range-label-bg-color, var(--f7-theme-color));\n font-size: var(--f7-range-label-font-size);\n font-weight: var(--f7-range-label-font-weight);\n border-radius: var(--f7-range-label-border-radius);\n padding: var(--f7-range-label-padding);\n}\n.range-knob-active-state .range-knob-label {\n transform: translateY(0%) scale(1);\n}\n.range-scale {\n position: absolute;\n}\n.range-slider-horizontal .range-scale {\n top: 50%;\n left: 0;\n width: 100%;\n margin-top: calc(var(--f7-range-bar-size) / 2);\n}\n.range-slider-vertical .range-scale {\n right: 50%;\n top: 0;\n height: 100%;\n margin-right: calc(var(--f7-range-bar-size) / 2);\n}\n.range-scale-step {\n position: absolute;\n box-sizing: border-box;\n display: flex;\n font-size: var(--f7-range-scale-font-size);\n font-weight: var(--f7-range-scale-font-weight);\n color: var(--f7-range-scale-text-color, var(--f7-range-bar-bg-color));\n line-height: 1;\n}\n.range-scale-step:before {\n content: '';\n position: absolute;\n background: var(--f7-range-scale-step-bg-color, var(--f7-range-bar-bg-color));\n}\n.range-slider-horizontal .range-scale-step {\n justify-content: center;\n align-items: flex-start;\n width: var(--f7-range-scale-step-width);\n height: var(--f7-range-scale-step-height);\n padding-top: calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));\n top: 0;\n margin-left: calc(-1 * var(--f7-range-scale-step-width) / 2);\n}\n.range-slider-horizontal .range-scale-step:before {\n left: 0;\n top: 0;\n width: 100%;\n height: var(--f7-range-scale-step-height);\n}\n.range-slider-horizontal .range-scale-step:first-child {\n margin-left: 0;\n}\n.range-slider-horizontal .range-scale-step:last-child {\n margin-left: calc(-1 * var(--f7-range-scale-step-width));\n}\n.range-slider-vertical .range-scale-step {\n line-height: 1;\n justify-content: flex-end;\n align-items: center;\n height: var(--f7-range-scale-step-width);\n width: var(--f7-range-scale-step-height);\n padding-right: calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));\n right: 0;\n margin-bottom: calc(-1 * var(--f7-range-scale-step-width) / 2);\n}\n.range-slider-vertical .range-scale-step:first-child {\n margin-bottom: 0;\n}\n.range-slider-vertical .range-scale-step:last-child {\n margin-bottom: calc(-1 * var(--f7-range-scale-step-width));\n}\n.range-slider-vertical .range-scale-step:before {\n right: 0;\n top: 0;\n height: 100%;\n width: var(--f7-range-scale-step-height);\n}\n.range-scale-substep {\n --f7-range-scale-step-bg-color: var(--f7-range-scale-substep-bg-color, var(--f7-range-bar-bg-color));\n --f7-range-scale-step-width: var(--f7-range-scale-substep-width);\n --f7-range-scale-step-height: var(--f7-range-scale-substep-height);\n}\n.ios .range-knob-label {\n margin-bottom: 6px;\n transform: translateX(-50%) translateY(100%) scale(0);\n}\n.ios .range-knob-active-state .range-knob-label {\n transform: translateX(-50%) translateY(0%) scale(1);\n}\n.md .range-knob {\n transition-duration: 200ms;\n transition-property: transform, background-color;\n}\n.md .range-knob-active-state .range-knob {\n transform: scale(1.5);\n}\n.md .range-slider-min:not(.range-slider-dual) .range-knob {\n background: #fff !important;\n border: 2px solid var(--f7-range-bar-bg-color);\n}\n.md .range-knob-label {\n width: var(--f7-range-label-size);\n margin-left: calc(-1 * var(--f7-range-label-size) / 2);\n margin-bottom: 8px;\n}\n.md .range-knob-label:before {\n content: '';\n left: 50%;\n top: 0px;\n margin-left: calc(-1 * var(--f7-range-label-size) / 2);\n position: absolute;\n z-index: -1;\n width: var(--f7-range-label-size);\n height: var(--f7-range-label-size);\n background: var(--f7-range-label-bg-color, var(--f7-theme-color));\n transform: rotate(-45deg);\n border-radius: 50% 50% 50% 0;\n}\n.md .range-knob-active-state .range-knob-label {\n transform: translateY(0%) scale(1);\n}\n.md .range-slider-label .range-knob-active-state .range-knob {\n transform: scale(0);\n}\n/* === Stepper === */\n:root {\n /*\n --f7-stepper-button-text-color: var(--f7-theme-color);\n --f7-stepper-button-pressed-text-color: var(--f7-button-text-color, var(--f7-theme-color));\n --f7-stepper-value-text-color: var(--f7-theme-color);\n --f7-stepper-fill-button-bg-color: var(--f7-theme-color);\n */\n --f7-stepper-raised-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);\n --f7-stepper-value-font-weight: 500;\n}\n.ios {\n --f7-stepper-height: 28px;\n --f7-stepper-border-radius: 5px;\n --f7-stepper-fill-button-text-color: #fff;\n /*\n --f7-stepper-button-pressed-bg-color: rgba(var(--f7-theme-color-rgb), .15);\n --f7-stepper-fill-button-pressed-bg-color: var(--f7-theme-color-tint);\n */\n --f7-stepper-large-height: 44px;\n --f7-stepper-small-height: 26px;\n --f7-stepper-value-font-size: 17px;\n --f7-stepper-border-width: 2px;\n --f7-stepper-border-color: var(--f7-theme-color);\n --f7-stepper-small-border-width: 2px;\n}\n.md {\n --f7-stepper-height: 40px;\n --f7-stepper-border-radius: 8px;\n --f7-stepper-large-height: 48px;\n --f7-stepper-small-height: 32px;\n --f7-stepper-value-font-size: 14px;\n --f7-stepper-border-width: 1px;\n --f7-stepper-small-border-width: 1px;\n --f7-stepper-button-pressed-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-stepper-fill-button-text-color: var(--f7-md-on-primary);\n --f7-stepper-fill-button-pressed-bg-color: var(--f7-theme-color);\n --f7-stepper-border-color: var(--f7-md-outline);\n}\n.stepper {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n display: inline-flex;\n align-items: stretch;\n height: var(--f7-stepper-height);\n border-radius: var(--f7-stepper-border-radius);\n}\n.stepper-button,\n.stepper-button-minus,\n.stepper-button-plus {\n background-color: var(--f7-stepper-button-bg-color);\n width: 40px;\n border-radius: var(--f7-stepper-border-radius);\n border: var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);\n color: var(--f7-stepper-button-text-color, var(--f7-theme-color));\n line-height: calc(var(--f7-stepper-height) - var(--f7-stepper-border-width, 0px));\n text-align: center;\n display: flex;\n justify-content: center;\n align-content: center;\n align-items: center;\n flex-shrink: 0;\n box-sizing: border-box;\n position: relative;\n cursor: pointer;\n}\n.stepper-button.active-state,\n.stepper-button-minus.active-state,\n.stepper-button-plus.active-state {\n background-color: var(--f7-stepper-button-pressed-bg-color, rgba(var(--f7-theme-color-rgb), 0.15));\n color: var(--f7-stepper-button-pressed-text-color, var(--f7-stepper-button-text-color, var(--f7-theme-color)));\n}\n.stepper-button:first-child,\n.stepper-button-minus:first-child,\n.stepper-button-plus:first-child {\n border-radius: var(--f7-stepper-border-radius) 0 0 var(--f7-stepper-border-radius);\n}\n.stepper-button:last-child,\n.stepper-button-minus:last-child,\n.stepper-button-plus:last-child {\n border-radius: 0 var(--f7-stepper-border-radius) var(--f7-stepper-border-radius) 0;\n}\n.stepper-button .icon,\n.stepper-button-minus .icon,\n.stepper-button-plus .icon {\n pointer-events: none;\n}\n.stepper-button + .stepper-button,\n.stepper-button-minus + .stepper-button,\n.stepper-button-plus + .stepper-button,\n.stepper-button + .stepper-button-minus,\n.stepper-button-minus + .stepper-button-minus,\n.stepper-button-plus + .stepper-button-minus,\n.stepper-button + .stepper-button-plus,\n.stepper-button-minus + .stepper-button-plus,\n.stepper-button-plus + .stepper-button-plus {\n border-left: none;\n}\n.stepper-button-plus,\n.stepper-button-minus {\n -webkit-user-select: none;\n user-select: none;\n}\n.stepper-button-plus:after,\n.stepper-button-minus:after,\n.stepper-button-plus:before,\n.stepper-button-minus:before {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--f7-stepper-button-text-color, var(--f7-theme-color));\n border-radius: 2px;\n}\n.stepper-button-plus:after,\n.stepper-button-minus:after {\n width: 15px;\n height: 2px;\n}\n.stepper-button-plus:before {\n height: 15px;\n width: 2px;\n}\n.stepper-value {\n display: flex;\n align-content: center;\n align-items: center;\n justify-content: center;\n}\n.stepper-input-wrap,\n.stepper-value {\n flex-shrink: 1;\n text-align: center;\n border-top: var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);\n border-bottom: var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);\n}\n.stepper .stepper-input-wrap input,\n.stepper-value {\n width: 45px;\n color: var(--f7-stepper-value-text-color, var(--f7-theme-color));\n font-size: var(--f7-stepper-value-font-size);\n font-weight: var(--f7-stepper-value-font-weight);\n text-align: center;\n}\n.stepper .stepper-input-wrap input {\n height: 100%;\n}\n.stepper-round,\n.ios .stepper-round-ios,\n.md .stepper-round-md {\n --f7-stepper-border-radius: var(--f7-stepper-height);\n}\n.stepper-fill,\n.ios .stepper-fill-ios,\n.md .stepper-fill-md {\n --f7-stepper-border-color: var(--f7-stepper-fill-button-bg-color, var(--f7-theme-color));\n --f7-stepper-button-bg-color: var(--f7-stepper-fill-button-bg-color, var(--f7-theme-color));\n --f7-stepper-button-text-color: var(--f7-stepper-fill-button-text-color);\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.stepper-fill .stepper-button + .stepper-button,\n.ios .stepper-fill-ios .stepper-button + .stepper-button,\n.md .stepper-fill-md .stepper-button + .stepper-button,\n.stepper-raised .stepper-button + .stepper-button,\n.ios .stepper-raised-ios .stepper-button + .stepper-button,\n.md .stepper-raised-md .stepper-button + .stepper-button,\n.stepper-fill .stepper-button-minus + .stepper-button-plus,\n.ios .stepper-fill-ios .stepper-button-minus + .stepper-button-plus,\n.md .stepper-fill-md .stepper-button-minus + .stepper-button-plus,\n.stepper-raised .stepper-button-minus + .stepper-button-plus,\n.ios .stepper-raised-ios .stepper-button-minus + .stepper-button-plus,\n.md .stepper-raised-md .stepper-button-minus + .stepper-button-plus {\n border-left: 1px solid rgba(0, 0, 0, 0.1);\n}\n.stepper-fill .stepper-button + .stepper-button.active-state,\n.ios .stepper-fill-ios .stepper-button + .stepper-button.active-state,\n.md .stepper-fill-md .stepper-button + .stepper-button.active-state,\n.stepper-fill .stepper-button-minus + .stepper-button-plus.active-state,\n.ios .stepper-fill-ios .stepper-button-minus + .stepper-button-plus.active-state,\n.md .stepper-fill-md .stepper-button-minus + .stepper-button-plus.active-state {\n border-left-color: var(--f7-stepper-button-pressed-bg-color);\n}\n.stepper-raised:not(.stepper-fill) .stepper-input-wrap,\n.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-input-wrap,\n.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-input-wrap,\n.stepper-raised:not(.stepper-fill) .stepper-value,\n.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-value,\n.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-value {\n border-left: 1px solid rgba(0, 0, 0, 0.1);\n border-right: 1px solid rgba(0, 0, 0, 0.1);\n}\n.stepper-large,\n.ios .stepper-large-ios,\n.md .stepper-large-md {\n --f7-stepper-height: var(--f7-stepper-large-height);\n}\n.stepper-small,\n.ios .stepper-small-ios,\n.md .stepper-small-md {\n --f7-stepper-border-width: var(--f7-stepper-small-border-width);\n --f7-stepper-height: var(--f7-stepper-small-height);\n}\n.ios .stepper-fill.stepper-small-ios,\n.ios .stepper-fill.stepper-small {\n --f7-stepper-button-pressed-bg-color: transparent;\n --f7-stepper-button-pressed-text-color: var(--f7-theme-color);\n}\n.stepper-raised,\n.ios .stepper-raised-ios,\n.md .stepper-raised-md {\n --f7-stepper-border-width: 0;\n box-shadow: var(--f7-stepper-raised-box-shadow);\n}\n.ios .stepper-button .f7-icons,\n.ios .stepper-button-minus .f7-icons,\n.ios .stepper-button-plus .f7-icons {\n font-size: 22px;\n}\n.ios .stepper-fill,\n.ios .stepper-fill-ios {\n --f7-stepper-button-pressed-bg-color: var(--f7-stepper-fill-button-pressed-bg-color, var(--f7-theme-color-tint));\n}\n.ios .stepper-small.stepper-raised,\n.ios .stepper-small-ios.stepper-raised,\n.ios .stepper-small.stepper-raised-ios,\n.ios .stepper-small-ios.stepper-raised-ios {\n --f7-stepper-border-width: 0px;\n}\n.ios .stepper-small .stepper-button,\n.ios .stepper-small-ios .stepper-button,\n.ios .stepper-small .stepper-button-minus,\n.ios .stepper-small-ios .stepper-button-minus,\n.ios .stepper-small .stepper-button-plus,\n.ios .stepper-small-ios .stepper-button-plus {\n transition-duration: 200ms;\n}\n.ios .stepper-small .stepper-button.active-state:after,\n.ios .stepper-small-ios .stepper-button.active-state:after,\n.ios .stepper-small .stepper-button-minus.active-state:after,\n.ios .stepper-small-ios .stepper-button-minus.active-state:after,\n.ios .stepper-small .stepper-button-plus.active-state:after,\n.ios .stepper-small-ios .stepper-button-plus.active-state:after,\n.ios .stepper-small .stepper-button.active-state:before,\n.ios .stepper-small-ios .stepper-button.active-state:before,\n.ios .stepper-small .stepper-button-minus.active-state:before,\n.ios .stepper-small-ios .stepper-button-minus.active-state:before,\n.ios .stepper-small .stepper-button-plus.active-state:before,\n.ios .stepper-small-ios .stepper-button-plus.active-state:before {\n transition-duration: 200ms;\n background-color: var(--f7-theme-color);\n}\n.md .stepper-button,\n.md .stepper-button-minus,\n.md .stepper-button-plus {\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n overflow: hidden;\n}\n.md .stepper-fill,\n.md .stepper-fill-md {\n --f7-stepper-button-pressed-bg-color: var(--f7-stepper-fill-button-bg-color, var(--f7-theme-color));\n}\n/* === Smart Select === */\n.smart-select :root {\n /*\n --f7-smart-select-sheet-bg: var(--f7-list-bg-color);\n --f7-smart-select-sheet-toolbar-border-color: var(--f7-bars-border-color);\n */\n}\n.smart-select select {\n display: none;\n}\n.smart-select .item-after {\n max-width: 70%;\n overflow: hidden;\n text-overflow: ellipsis;\n position: relative;\n display: block;\n}\n.smart-select-sheet .page,\n.smart-select-sheet .sheet-modal-inner,\n.smart-select-sheet .list ul {\n background: var(--f7-smart-select-sheet-bg, var(--f7-list-bg-color));\n}\n.smart-select-sheet .toolbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-smart-select-sheet-toolbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.smart-select-sheet .toolbar:after {\n display: block;\n}\n.smart-select-sheet .list {\n margin: 0;\n}\n.smart-select-sheet .list ul:before,\n.smart-select-sheet .list ul:after {\n display: none !important;\n}\n.smart-select-popover .popover-inner {\n max-height: 40vh;\n}\n/* === Grid === */\n:root {\n --f7-grid-gap: 16px;\n}\n.grid {\n display: grid;\n}\n.grid.grid-gap {\n gap: var(--f7-grid-gap);\n}\n.grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n}\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n}\n.grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n}\n.grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n}\n.grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n}\n.grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n}\n.grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n}\n.grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n}\n.grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n}\n.grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n}\n.grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n}\n.grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n}\n.grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n}\n.grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n}\n.grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n}\n.grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n}\n.grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n}\n.grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n}\n.grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n}\n.grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n}\n.grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n}\n.grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n}\n.grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n}\n.grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n}\n.grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n}\n.grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n}\n.grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n}\n.grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n}\n.grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n}\n.grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n}\n.grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n}\n.grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n}\n.grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n}\n.grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n}\n.grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n}\n.grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n}\n.grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n}\n.grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n}\n.grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n}\n@media (min-width: 480px) {\n .xsmall-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .xsmall-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .xsmall-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .xsmall-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .xsmall-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .xsmall-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .xsmall-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .xsmall-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .xsmall-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .xsmall-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .xsmall-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .xsmall-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .xsmall-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .xsmall-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .xsmall-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .xsmall-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .xsmall-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .xsmall-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .xsmall-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .xsmall-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .xsmall-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .xsmall-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .xsmall-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .xsmall-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .xsmall-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .xsmall-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .xsmall-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .xsmall-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .xsmall-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .xsmall-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .xsmall-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .xsmall-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .xsmall-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .xsmall-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .xsmall-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .xsmall-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .xsmall-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .xsmall-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .xsmall-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .xsmall-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 568px) {\n .small-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .small-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .small-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .small-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .small-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .small-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .small-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .small-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .small-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .small-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .small-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .small-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .small-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .small-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .small-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .small-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .small-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .small-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .small-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .small-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .small-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .small-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .small-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .small-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .small-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .small-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .small-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .small-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .small-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .small-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .small-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .small-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .small-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .small-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .small-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .small-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .small-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .small-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .small-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .small-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 768px) {\n .medium-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .medium-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .medium-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .medium-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .medium-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .medium-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .medium-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .medium-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .medium-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .medium-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .medium-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .medium-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .medium-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .medium-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .medium-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .medium-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .medium-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .medium-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .medium-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .medium-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .medium-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .medium-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .medium-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .medium-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .medium-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .medium-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .medium-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .medium-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .medium-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .medium-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .medium-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .medium-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .medium-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .medium-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .medium-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .medium-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .medium-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .medium-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .medium-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .medium-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 1024px) {\n .large-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .large-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .large-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .large-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .large-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .large-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .large-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .large-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .large-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .large-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .large-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .large-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .large-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .large-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .large-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .large-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .large-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .large-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .large-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .large-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .large-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .large-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .large-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .large-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .large-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .large-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .large-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .large-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .large-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .large-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .large-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .large-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .large-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .large-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .large-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .large-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .large-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .large-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .large-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .large-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 1200px) {\n .xlarge-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .xlarge-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .xlarge-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .xlarge-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .xlarge-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .xlarge-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .xlarge-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .xlarge-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .xlarge-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .xlarge-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .xlarge-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .xlarge-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .xlarge-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .xlarge-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .xlarge-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .xlarge-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .xlarge-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .xlarge-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .xlarge-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .xlarge-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .xlarge-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .xlarge-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .xlarge-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .xlarge-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .xlarge-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .xlarge-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .xlarge-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .xlarge-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .xlarge-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .xlarge-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .xlarge-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .xlarge-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .xlarge-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .xlarge-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .xlarge-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .xlarge-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .xlarge-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .xlarge-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .xlarge-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .xlarge-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n/* === Calendar/Datepicker === */\n:root {\n --f7-calendar-height: 340px;\n --f7-calendar-sheet-landscape-height: 220px;\n --f7-calendar-popover-width: 320px;\n --f7-calendar-popover-height: 320px;\n --f7-calendar-modal-height: 420px;\n --f7-calendar-modal-max-width: 380px;\n /*\n --f7-calendar-header-bg-color: var(--f7-bars-bg-color);\n --f7-calendar-header-link-color: var(--f7-bars-link-color);\n --f7-calendar-header-text-color: var(--f7-bars-text-color);\n --f7-calendar-footer-bg-color: var(--f7-bars-bg-color);\n --f7-calendar-footer-border-color: var(--f7-bars-border-color);\n --f7-calendar-footer-link-color: var(--f7-bars-link-color);\n --f7-calendar-footer-text-color: var(--f7-bars-text-color);\n */\n --f7-calendar-week-header-bg-color: transparent;\n --f7-calendar-footer-padding: 0 8px;\n --f7-calendar-week-header-font-size: 11px;\n /*\n --f7-calendar-selected-bg-color: var(--f7-theme-color);\n */\n --f7-calendar-disabled-text-color: #d4d4d4;\n --f7-calendar-event-dot-size: 4px;\n /*\n --f7-calendar-event-bg-color: var(--f7-theme-color);\n */\n /*\n --f7-calendar-picker-selected-text-color: var(--f7-theme-color);\n */\n --f7-calendar-time-selector-height: 28px;\n --f7-calendar-picker-pressed-bg-color: rgba(0, 0, 0, 0.1);\n --f7-calendar-picker-hover-bg-color: rgba(0, 0, 0, 0.03);\n --f7-calendar-time-selector-bg-color: rgba(0, 0, 0, 0.05);\n}\n:root .dark,\n:root.dark {\n --f7-calendar-picker-pressed-bg-color: rgba(255, 255, 255, 0.08);\n --f7-calendar-picker-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-calendar-time-selector-bg-color: rgba(255, 255, 255, 0.1);\n}\n.ios {\n --f7-calendar-selected-text-color: #fff;\n --f7-calendar-header-height: 44px;\n --f7-calendar-header-font-size: 17px;\n --f7-calendar-header-font-weight: 600;\n --f7-calendar-header-padding: 0 8px;\n --f7-calendar-footer-height: 44px;\n --f7-calendar-footer-font-size: 17px;\n --f7-calendar-week-header-height: 18px;\n --f7-calendar-day-font-size: 15px;\n --f7-calendar-day-size: 30px;\n --f7-calendar-picker-font-size: 17px;\n --f7-calendar-time-selector-font-size: 17px;\n --f7-calendar-modal-border-radius: 4px;\n --f7-calendar-modal-box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2),\n 0px 24px 38px 3px rgba(0, 0, 0, 0.14),\n 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\n --f7-calendar-prev-next-text-color: #c8c8c8;\n --f7-calendar-sheet-border-color: #929499;\n --f7-calendar-sheet-bg-color: #fff;\n --f7-calendar-week-header-text-color: #5e5e5e;\n --f7-calendar-modal-bg-color: #fff;\n --f7-calendar-day-text-color: #000;\n --f7-calendar-today-text-color: #000;\n --f7-calendar-today-bg-color: #e3e3e3;\n}\n.ios .dark,\n.ios.dark {\n --f7-calendar-prev-next-text-color: #5e5e5e;\n --f7-calendar-sheet-border-color: var(--f7-bars-border-color);\n --f7-calendar-sheet-bg-color: #121212;\n --f7-calendar-week-header-text-color: #aaa;\n --f7-calendar-modal-bg-color: #121212;\n --f7-calendar-day-text-color: #fff;\n --f7-calendar-today-text-color: #fff;\n --f7-calendar-today-bg-color: #333;\n}\n.md {\n --f7-calendar-sheet-border-color: transparent;\n --f7-calendar-header-height: 64px;\n --f7-calendar-header-font-size: 24px;\n --f7-calendar-header-font-weight: 400;\n --f7-calendar-header-padding: 0 24px;\n --f7-calendar-footer-height: 56px;\n --f7-calendar-footer-font-size: 14px;\n --f7-calendar-week-header-height: 24px;\n --f7-calendar-day-font-size: 14px;\n --f7-calendar-today-bg-color: none;\n --f7-calendar-day-size: 32px;\n --f7-calendar-picker-font-size: 14px;\n --f7-calendar-time-selector-font-size: 14px;\n --f7-calendar-modal-border-radius: 28px;\n --f7-calendar-modal-box-shadow: none;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-calendar-sheet-bg-color: var(--f7-md-surface-1);\n --f7-calendar-selected-text-color: var(--f7-md-on-primary);\n --f7-calendar-week-header-text-color: var(--f7-md-on-surface-variant);\n --f7-calendar-day-text-color: var(--f7-md-on-surface);\n --f7-calendar-prev-next-text-color: rgba(var(--f7-md-on-surface-variant-rgb), 0.55);\n --f7-calendar-today-text-color: var(--f7-theme-color);\n --f7-calendar-modal-bg-color: var(--f7-md-surface-1);\n}\n.calendar {\n overflow: hidden;\n height: var(--f7-calendar-height);\n width: 100%;\n display: flex;\n flex-direction: column;\n}\n.calendar.modal-in {\n display: flex;\n}\n@media (orientation: landscape) and (max-height: 415px) {\n .calendar.calendar-sheet {\n height: var(--f7-calendar-sheet-landscape-height);\n }\n .calendar.calendar-modal {\n height: calc(100vh - var(--f7-navbar-height));\n }\n}\n.calendar.calendar-inline,\n.calendar.calendar-popover .calendar {\n position: relative;\n}\n.calendar-sheet {\n --f7-sheet-border-color: var(--f7-calendar-sheet-border-color);\n background: var(--f7-calendar-sheet-bg-color);\n padding-bottom: var(--f7-safe-area-bottom);\n height: calc(var(--f7-calendar-height) + var(--f7-safe-area-bottom));\n}\n.calendar-sheet:before {\n z-index: 600;\n}\n.calendar-sheet .toolbar:before,\n.calendar-modal .toolbar:before,\n.calendar-popover .toolbar:before {\n display: none;\n}\n.calendar-popover {\n width: var(--f7-calendar-popover-width);\n}\n.calendar-popover .toolbar-top,\n.calendar-popover .calendar-header {\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n overflow: hidden;\n}\n.calendar-popover .calendar-header + .toolbar-top {\n border-radius: 0;\n}\n.calendar-popover .toolbar-bottom,\n.calendar-popover .calendar-footer {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.calendar-popover .calendar {\n height: var(--f7-calendar-popover-height);\n position: relative;\n z-index: 1;\n}\n.calendar-popover .calendar-month-picker,\n.calendar-popover .calendar-year-picker,\n.calendar-popover .calendar-time-picker {\n border-radius: var(--f7-popover-border-radius);\n}\n.calendar-popover .calendar-month-picker .picker,\n.calendar-popover .calendar-year-picker .picker,\n.calendar-popover .calendar-time-picker .picker {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n.calendar-header {\n width: 100%;\n position: relative;\n overflow: hidden;\n flex-shrink: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n box-sizing: border-box;\n padding: var(--f7-calendar-header-padding);\n background-color: var(--f7-calendar-header-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-calendar-header-text-color, var(--f7-bars-text-color));\n height: var(--f7-calendar-header-height);\n line-height: var(--f7-calendar-header-height);\n font-size: var(--f7-calendar-header-font-size);\n font-weight: var(--f7-calendar-header-font-weight);\n}\n.calendar-header a {\n color: var(--f7-calendar-header-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.calendar-footer {\n width: 100%;\n flex-shrink: 0;\n padding: var(--f7-calendar-footer-padding);\n background-color: var(--f7-calendar-footer-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-calendar-footer-text-color, var(--f7-bars-text-color));\n height: var(--f7-calendar-footer-height);\n font-size: var(--f7-calendar-header-font-size);\n display: flex;\n justify-content: flex-end;\n box-sizing: border-box;\n align-items: center;\n position: relative;\n}\n.calendar-footer a {\n color: var(--f7-calendar-footer-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.calendar-footer:before {\n content: '';\n position: absolute;\n background-color: var(--f7-calendar-footer-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.calendar-modal {\n position: absolute;\n height: var(--f7-calendar-modal-height);\n overflow: hidden;\n top: 50%;\n left: 50%;\n min-width: 300px;\n max-width: var(--f7-calendar-modal-max-width);\n transform: translate3d(-50%, 100vh, 0);\n transition-property: transform;\n display: flex;\n z-index: 13500;\n background: var(--f7-calendar-modal-bg-color);\n width: 90%;\n border-radius: var(--f7-calendar-modal-border-radius);\n box-shadow: var(--f7-calendar-modal-box-shadow);\n transition-timing-function: cubic-bezier(0, 1, 0.2, 1);\n}\n.calendar-modal.modal-in,\n.calendar-modal.modal-out {\n transition-duration: 400ms;\n}\n.calendar-modal.modal-in {\n transform: translate3d(-50%, -50%, 0);\n}\n.calendar-modal.modal-out {\n transform: translate3d(-50%, 100vh, 0);\n}\n.calendar-week-header {\n display: flex;\n box-sizing: border-box;\n position: relative;\n font-size: var(--f7-calendar-week-header-font-size);\n background-color: var(--f7-calendar-week-header-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-calendar-week-header-text-color, var(--f7-bars-text-color));\n height: var(--f7-calendar-week-header-height);\n padding-left: var(--f7-safe-area-left);\n padding-right: var(--f7-safe-area-right);\n}\n.calendar-week-header .calendar-week-day {\n flex-shrink: 1;\n width: calc(100% / 7);\n text-align: center;\n line-height: var(--f7-calendar-week-header-height);\n}\n.calendar-months {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: relative;\n flex-shrink: 10;\n}\n.calendar-months-wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n transition: 300ms;\n}\n.calendar-month {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n}\n.calendar-row {\n height: 16.66666667%;\n display: flex;\n flex-shrink: 1;\n width: 100%;\n position: relative;\n box-sizing: border-box;\n padding-left: var(--f7-safe-area-left);\n padding-right: var(--f7-safe-area-right);\n}\n.calendar-modal .calendar-months:first-child .calendar-row:first-child:before,\n.calendar-popover .calendar-months:first-child .calendar-row:first-child:before {\n display: none !important;\n}\n.calendar-day {\n flex-shrink: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n box-sizing: border-box;\n width: 14.28571429%;\n text-align: center;\n cursor: pointer;\n z-index: 20;\n color: var(--f7-calendar-day-text-color);\n height: 100%;\n font-size: var(--f7-calendar-day-font-size);\n}\n.calendar-day-today .calendar-day-number {\n color: var(--f7-calendar-today-text-color, var(--f7-theme-color));\n background-color: var(--f7-calendar-today-bg-color);\n}\n.calendar-day-prev,\n.calendar-day-next {\n color: var(--f7-calendar-prev-next-text-color);\n}\n.calendar-day-disabled {\n color: var(--f7-calendar-disabled-text-color);\n cursor: auto;\n}\n.calendar-day-selected .calendar-day-number {\n color: var(--f7-calendar-selected-text-color);\n background-color: var(--f7-calendar-selected-bg-color, var(--f7-theme-color));\n}\n.calendar-day-number {\n display: inline-block;\n border-radius: 50%;\n position: relative;\n width: var(--f7-calendar-day-size);\n height: var(--f7-calendar-day-size);\n line-height: var(--f7-calendar-day-size);\n}\n.calendar-day-events {\n position: absolute;\n display: flex;\n left: 0;\n width: 100%;\n top: 100%;\n align-items: center;\n justify-content: center;\n margin-top: 1px;\n}\n.calendar-day-event {\n width: var(--f7-calendar-event-dot-size);\n height: var(--f7-calendar-event-dot-size);\n border-radius: calc(var(--f7-calendar-event-dot-size) / 2);\n background-color: var(--f7-calendar-event-bg-color);\n}\n.calendar-day-event + .calendar-day-event {\n margin-left: 2px;\n}\n.calendar-day-selected-range,\n.calendar-day-selected-left,\n.calendar-day-selected-right {\n position: relative;\n}\n.calendar-day-selected-range:before,\n.calendar-day-selected-left:before,\n.calendar-day-selected-right:before {\n width: 100%;\n height: var(--f7-calendar-day-size);\n content: '';\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n z-index: -1;\n background-color: var(--f7-calendar-selected-bg-color, var(--f7-theme-color));\n opacity: 0.2;\n}\n.calendar-day-selected-range:first-child:before,\n.calendar-day-selected-left:before {\n left: auto;\n right: 0;\n width: calc(50% + var(--f7-calendar-day-size) / 2);\n border-radius: var(--f7-calendar-day-size) 0 0 var(--f7-calendar-day-size);\n}\n.calendar-day-selected-range:last-child:before,\n.calendar-day-selected-right:before {\n width: calc(50% + var(--f7-calendar-day-size) / 2);\n border-radius: 0 var(--f7-calendar-day-size) var(--f7-calendar-day-size) 0;\n}\n.calendar-day-selected-left:last-child:before,\n.calendar-day-selected-right:first-child:before {\n display: none;\n}\n.calendar-day-selected-left.calendar-day-selected-right:before {\n content: none;\n display: none;\n}\n.calendar-day-selected-range .calendar-day-number {\n background-color: transparent;\n color: inherit;\n}\n.calendar-month-selector,\n.calendar-year-selector {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 50%;\n max-width: 200px;\n flex-shrink: 10;\n margin-left: auto;\n margin-right: auto;\n}\n.calendar-month-selector .calendar-day-number,\n.calendar-year-selector .calendar-day-number {\n flex-shrink: 1;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.calendar-month-selector a.icon-only,\n.calendar-year-selector a.icon-only {\n min-width: 36px;\n}\n.calendar-month-picker,\n.calendar-year-picker,\n.calendar-time-picker {\n position: relative;\n width: 100%;\n height: 100%;\n -webkit-user-select: none;\n user-select: none;\n background: transparent;\n}\n.calendar-month-picker .picker-columns,\n.calendar-year-picker .picker-columns {\n text-align: center;\n}\n.calendar-month-picker-item,\n.calendar-year-picker-item {\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n overflow: hidden;\n cursor: pointer;\n transition-duration: 100ms;\n box-sizing: border-box;\n}\n.calendar-month-picker-item span,\n.calendar-year-picker-item span {\n white-space: nowrap;\n text-overflow: ellipsis;\n box-sizing: border-box;\n position: relative;\n overflow: hidden;\n pointer-events: none;\n}\n.calendar-month-picker-item.active-state,\n.calendar-year-picker-item.active-state {\n background: var(--f7-calendar-picker-pressed-bg-color);\n}\n.calendar-month-picker-item {\n padding: 5px;\n}\n.sheet-modal .calendar-month-picker-item {\n width: 25%;\n height: 33.33333333%;\n}\n.sheet-modal .calendar-month-picker-item:nth-child(4n + 1):before {\n display: none !important;\n}\n.sheet-modal .calendar-month-picker-item:nth-child(n + 9):after {\n display: none !important;\n}\n.popover .calendar-month-picker-item,\n.calendar-modal .calendar-month-picker-item {\n width: 33.33333333%;\n height: 25%;\n}\n.popover .calendar-month-picker-item:nth-child(3n + 1):before,\n.calendar-modal .calendar-month-picker-item:nth-child(3n + 1):before {\n display: none !important;\n}\n.popover .calendar-month-picker-item:nth-child(n + 10):after,\n.calendar-modal .calendar-month-picker-item:nth-child(n + 10):after {\n display: none !important;\n}\n.calendar-month-picker-item-current,\n.calendar-year-picker-item-current {\n color: var(--f7-calendar-picker-selected-text-color, var(--f7-theme-color));\n}\n.calendar-year-picker {\n overflow: auto;\n --webkit-overflow-scrolling: touch;\n}\n.calendar-year-picker-item {\n height: 34px;\n line-height: 34px;\n width: 100%;\n}\n.calendar-time-selector {\n flex-shrink: 0;\n font-size: var(--f7-calendar-time-selector-font-size);\n position: relative;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n}\n.calendar-time-selector a {\n overflow: hidden;\n position: relative;\n justify-content: center;\n align-items: center;\n display: flex;\n box-sizing: border-box;\n height: var(--f7-calendar-time-selector-height);\n background-color: var(--f7-calendar-time-selector-bg-color);\n padding: 0 16px;\n border-radius: 8px;\n}\n.calendar-time-selector > span {\n font-weight: 500;\n}\n.calendar-time-selector .segmented {\n margin-left: 8px;\n}\n.calendar-time-picker-popover,\n.calendar-year-picker-popover,\n.calendar-month-picker-popover {\n height: 240px;\n width: 240px;\n}\n.calendar-time-picker-popover .popover-inner,\n.calendar-year-picker-popover .popover-inner,\n.calendar-month-picker-popover .popover-inner {\n height: 100%;\n overflow: hidden;\n}\n.calendar-time-picker {\n --f7-picker-popover-height: 100%;\n --f7-picker-inline-height: 100%;\n}\n.calendar-time-picker .toolbar {\n flex-shrink: 0;\n top: 0 !important;\n}\n.calendar-time-picker .picker {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n/* === Picker === */\n:root {\n --f7-picker-height: 260px;\n --f7-picker-inline-height: 200px;\n --f7-picker-popover-height: 260px;\n --f7-picker-popover-width: 280px;\n --f7-picker-landscape-height: 200px;\n --f7-picker-item-height: 36px;\n /*\n --f7-picker-sheet-bg-color: var(--f7-sheet-bg-color);\n */\n}\n.ios {\n --f7-picker-column-font-size: 20px;\n --f7-picker-item-selected-text-color: #000;\n --f7-picker-item-selected-bg-color: rgba(0, 0, 0, 0.12);\n --f7-picker-divider-text-color: #000;\n --f7-picker-item-text-color: rgba(0, 0, 0, 0.45);\n}\n.ios .dark,\n.ios.dark {\n --f7-picker-item-selected-text-color: #fff;\n --f7-picker-item-selected-bg-color: rgba(255, 255, 255, 0.1);\n --f7-picker-divider-text-color: #fff;\n --f7-picker-item-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-picker-column-font-size: 20px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-picker-item-selected-text-color: var(--f7-md-on-surface);\n --f7-picker-item-text-color: var(--f7-md-on-surface-variant);\n --f7-picker-divider-text-color: var(--f7-md-on-surface);\n --f7-picker-item-selected-border-color: var(--f7-md-outline);\n}\n.picker {\n width: 100%;\n height: var(--f7-picker-height);\n}\n.picker.picker-inline {\n height: var(--f7-picker-inline-height);\n}\n.popover .picker {\n height: var(--f7-picker-popover-height);\n}\n@media (orientation: landscape) and (max-height: 415px) {\n .picker:not(.picker-inline) {\n height: var(--f7-picker-landscape-height);\n }\n}\n.picker.sheet-modal {\n background: var(--f7-picker-sheet-bg-color, var(--f7-sheet-bg-color));\n}\n.picker-popover {\n width: var(--f7-picker-popover-width);\n}\n.picker-popover .toolbar {\n background: none;\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n}\n.picker-popover .toolbar:before {\n display: none !important;\n}\n.picker-popover .toolbar + .picker-columns {\n height: calc(100% - var(--f7-toolbar-height));\n}\n.picker-columns {\n display: flex;\n overflow: hidden;\n justify-content: center;\n padding: 0;\n text-align: right;\n height: 100%;\n position: relative;\n font-size: var(--f7-picker-column-font-size);\n --f7-picker-mask-bg-color: transparent;\n}\n.popover .picker-columns {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.picker-columns::before,\n.picker-columns::after {\n content: '';\n position: absolute;\n left: 0;\n width: 100%;\n height: 20%;\n z-index: 100;\n pointer-events: none;\n}\n.page .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-page-bg-color);\n}\n.block-strong .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-block-strong-bg-color);\n}\n.picker-sheet .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-picker-sheet-bg-color, var(--f7-sheet-bg-color));\n}\n.picker-popover .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-popover-bg-color);\n}\n.picker-columns::before {\n top: 0;\n background-image: linear-gradient(to bottom, var(--f7-picker-mask-bg-color), transparent);\n}\n.picker-columns::after {\n bottom: 0;\n background-image: linear-gradient(to top, var(--f7-picker-mask-bg-color), transparent);\n}\n.picker-column {\n position: relative;\n max-height: 100%;\n z-index: 10;\n}\n.picker-column.picker-column-first.picker-column-last {\n width: 100%;\n}\n.picker-column.picker-column-left {\n text-align: left;\n}\n.picker-column.picker-column-center {\n text-align: center;\n}\n.picker-column.picker-column-right {\n text-align: right;\n}\n.picker-column.picker-column-divider {\n display: flex;\n align-items: center;\n color: var(--f7-picker-divider-text-color);\n}\n.picker-items {\n overflow: auto;\n scroll-snap-type: y mandatory;\n height: 100%;\n box-sizing: border-box;\n padding: var(--f7-picker-scroll-padding, 0px) 0px;\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.picker-items::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.picker-items::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.picker-items::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.picker-item {\n height: var(--f7-picker-item-height);\n line-height: var(--f7-picker-item-height);\n white-space: nowrap;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n left: 0;\n top: 0;\n width: 100%;\n box-sizing: border-box;\n color: var(--f7-picker-item-text-color);\n cursor: pointer;\n scroll-snap-align: center;\n}\n.picker-item span {\n padding: 0 10px;\n}\n.picker-item.picker-item-far {\n pointer-events: none;\n}\n.picker-item.picker-item-selected {\n color: var(--f7-picker-item-selected-text-color);\n transform: translate3d(0, 0, 0) rotateX(0deg);\n}\n.picker-column-free-mode .picker-item {\n scroll-snap-align: none;\n}\n.picker-center-highlight {\n height: var(--f7-picker-item-height);\n box-sizing: border-box;\n position: absolute;\n top: 50%;\n margin-top: calc(-1 * var(--f7-picker-item-height) / 2);\n pointer-events: none;\n}\n.picker-3d .picker-columns {\n overflow: hidden;\n}\n.picker-3d .picker-column,\n.picker-3d .picker-items,\n.picker-3d .picker-item {\n transform-style: preserve-3d;\n}\n.picker-3d .picker-column {\n overflow: visible;\n}\n.picker-3d .picker-item {\n perspective: 1200px;\n overflow: visible;\n}\n.picker-3d .picker-item > span {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n display: block;\n transform-style: preserve-3d;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n box-sizing: border-box;\n max-width: 100%;\n transform-origin: center center -100px;\n}\n.ios .picker-center-highlight {\n left: 16px;\n right: 16px;\n background-color: var(--f7-picker-item-selected-bg-color);\n border-radius: 8px;\n}\n.popover .ios .picker-center-highlight {\n left: 8px;\n right: 8px;\n}\n.md .picker-center-highlight {\n left: 0;\n right: 0;\n border-top: 1px solid var(--f7-md-outline);\n border-bottom: 1px solid var(--f7-md-outline);\n}\n/* === Infinite === */\n.infinite-scroll-preloader {\n margin-left: auto;\n margin-right: auto;\n text-align: center;\n}\n.infinite-scroll-preloader.preloader {\n display: block;\n}\n.ios .infinite-scroll-preloader {\n margin-top: 35px;\n margin-bottom: 35px;\n}\n.ios .infinite-scroll-preloader .preloader,\n.ios .infinite-scroll-preloader.preloader {\n width: 27px;\n height: 27px;\n}\n.md .infinite-scroll-preloader {\n margin-top: 32px;\n margin-bottom: 32px;\n}\n/* === PTR === */\n.ios {\n --f7-ptr-preloader-size: 28px;\n --f7-ptr-size: 44px;\n}\n.md {\n --f7-ptr-preloader-size: 22px;\n --f7-ptr-size: 40px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-ptr-preloader-bg-color: var(--f7-md-surface-1);\n --f7-ptr-preloader-color: var(--f7-md-primary);\n}\n.ptr-preloader {\n position: relative;\n top: var(--f7-ptr-top, 0);\n height: var(--f7-ptr-size);\n pointer-events: none;\n}\n.ptr-preloader .preloader {\n position: absolute;\n left: 50%;\n width: var(--f7-ptr-preloader-size);\n height: var(--f7-ptr-preloader-size);\n margin-left: calc(-1 * var(--f7-ptr-preloader-size) / 2);\n margin-top: calc(-1 * var(--f7-ptr-preloader-size) / 2);\n top: 50%;\n visibility: hidden;\n}\n.ptr-bottom .ptr-preloader {\n top: auto;\n bottom: 0;\n position: fixed;\n}\n.ptr-with-navbar-large-transparent .ptr-preloader,\n.ptr-with-navbar-transparent .ptr-preloader {\n top: calc(-1 * var(--f7-page-navbar-offset, 0px) + var(--f7-safe-area-top));\n}\n.ios .ptr-preloader {\n margin-bottom: calc(-1 * var(--f7-ptr-size));\n width: 100%;\n left: 0;\n top: 0;\n position: relative;\n}\n.ios .ptr-preloader .preloader {\n visibility: visible;\n}\n.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,\n.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner {\n animation: none;\n}\n.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up):not(.ptr-pull-down) .ptr-preloader .preloader-inner-line,\n.ios .ptr-content.ptr-closing .ptr-preloader .preloader-inner-line {\n opacity: 0 !important;\n}\n.ios .ptr-transitioning > *,\n.ios .ptr-refreshing > * {\n transition-duration: 200ms;\n transition-property: transform;\n}\n.ios .ptr-transitioning .ptr-preloader .preloader-inner-line {\n transition-duration: 200ms;\n}\n.ios .ptr-pull-up .ptr-preloader .preloader {\n animation: ios-ptr-preloader-spin 1s ease-out forwards;\n}\n.ios .ptr-refreshing:not(.ptr-bottom) {\n transform: none;\n}\n.ios .ptr-refreshing:not(.ptr-bottom) > * {\n transform: translate3d(0, var(--f7-ptr-size), 0);\n}\n.ios .ptr-refreshing:not(.ptr-bottom) > .ptr-preloader {\n transform: translate3d(0, 0, 0);\n}\n.ios .ptr-bottom .ptr-preloader {\n margin-bottom: 0;\n margin-top: calc(-1 * var(--f7-ptr-size));\n position: relative;\n}\n.ios .ptr-bottom.ptr-transitioning > *,\n.ios .ptr-bottom.ptr-refreshing > * {\n transition-duration: 300ms;\n transition-property: transform;\n}\n.ios .ptr-bottom.ptr-refreshing {\n transform: none;\n}\n.ios .ptr-bottom.ptr-refreshing > * {\n transform: translate3d(0, calc(-1 * var(--f7-ptr-size)), 0);\n}\n.ios .ptr-bottom.ptr-refreshing > .ptr-preloader {\n transform: translate3d(0, 0, 0);\n}\n@keyframes ios-ptr-preloader-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(135deg);\n }\n}\n.md {\n --f7-ptr-top: -4px;\n}\n.md .ptr-preloader {\n width: var(--f7-ptr-size);\n border-radius: 50%;\n background: var(--f7-ptr-preloader-bg-color);\n --f7-preloader-color: var(--f7-ptr-preloader-color);\n margin-top: calc(-1 * var(--f7-ptr-size));\n z-index: 100;\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\n left: 50%;\n margin-left: calc(-1 * var(--f7-ptr-size) / 2);\n}\n.md .ptr-preloader .preloader circle {\n stroke-width: 4;\n}\n.md .ptr-arrow {\n width: 22px;\n height: 22px;\n box-sizing: border-box;\n border: 3px solid var(--f7-preloader-color);\n position: absolute;\n left: 50%;\n top: 50%;\n margin-left: -11px;\n margin-top: -11px;\n border-left-color: transparent;\n border-radius: 50%;\n opacity: 1;\n transform: rotate(150deg);\n}\n.md .ptr-arrow:after {\n content: '';\n width: 0px;\n height: 0px;\n position: absolute;\n left: -5px;\n bottom: 0px;\n border-bottom-width: 6px;\n border-bottom-style: solid;\n border-bottom-color: inherit;\n border-left: 5px solid transparent;\n border-right: 5px solid transparent;\n transform: rotate(-40deg);\n}\n.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,\n.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner,\n.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader circle {\n animation: none;\n}\n.md .ptr-refreshing .ptr-preloader .preloader,\n.md .ptr-pull-up .ptr-preloader .preloader {\n visibility: visible;\n}\n.md .ptr-refreshing .ptr-arrow,\n.md .ptr-pull-up .ptr-arrow {\n visibility: hidden;\n}\n.md .ptr-refreshing .ptr-preloader {\n transform: translate3d(0, 66px, 0);\n}\n.md .ptr-transitioning .ptr-arrow {\n transition: 300ms;\n}\n.md .ptr-pull-up .ptr-arrow {\n transition: 400ms;\n transform: rotate(620deg) !important;\n opacity: 0;\n}\n.md .ptr-transitioning .ptr-preloader,\n.md .ptr-refreshing .ptr-preloader {\n transition-duration: 300ms;\n transition-property: transform, opacity;\n}\n.md .ptr-bottom .ptr-preloader {\n margin-top: 0;\n margin-bottom: calc(-1 * var(--f7-ptr-size) - 4px);\n}\n.md .ptr-bottom.ptr-refreshing .ptr-preloader {\n transform: translate3d(0, -66px, 0);\n}\n.md .ptr-with-navbar-large-transparent .ptr-preloader,\n.md .ptr-with-navbar-transparent .ptr-preloader {\n opacity: 0;\n}\n.md .ptr-with-navbar-large-transparent.ptr-pull-down .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-pull-down .ptr-preloader,\n.md .ptr-with-navbar-large-transparent.ptr-pull-up .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-pull-up .ptr-preloader,\n.md .ptr-with-navbar-large-transparent.ptr-refreshing .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-refreshing .ptr-preloader {\n opacity: 1;\n}\n.md .ptr-with-navbar-large-transparent.ptr-closing .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-closing .ptr-preloader {\n opacity: 0;\n transition-duration: 300ms;\n}\n/* === Data Table === */\n:root {\n --f7-table-head-font-size: 12px;\n --f7-table-body-font-size: 14px;\n --f7-table-footer-font-size: 12px;\n --f7-table-input-height: 24px;\n --f7-table-input-font-size: 14px;\n --f7-table-collapsible-cell-padding: 16px;\n --f7-table-link-icon-only-icon-size: 20px;\n --f7-table-head-bg-color: transparent;\n --f7-table-card-header-bg-color: transparent;\n --f7-table-card-header-height: 64px;\n --f7-table-cell-padding-vertical: 0px;\n --f7-table-sortable-icon-color: #000;\n}\n:root .dark,\n:root.dark {\n --f7-table-sortable-icon-color: #fff;\n --f7-table-input-text-color: #fff;\n}\n.ios {\n --f7-table-head-font-weight: 600;\n --f7-table-head-cell-height: 44px;\n --f7-table-head-icon-size: 18px;\n --f7-table-body-cell-height: 44px;\n --f7-table-cell-padding-horizontal: 16px;\n --f7-table-edge-cell-padding-horizontal: 16px;\n --f7-table-label-cell-padding-horizontal: 16px;\n --f7-table-checkbox-cell-width: 22px;\n /* --f7-table-actions-cell-link-color: var(--f7-theme-color); */\n /* --f7-table-actions-link-color: var(--f7-theme-color); */\n --f7-table-title-font-size: 17px;\n --f7-table-title-font-weight: 600;\n --f7-table-footer-height: 44px;\n --f7-table-head-text-color: rgba(0, 0, 0, 0.45);\n --f7-table-cell-border-color: rgba(0, 0, 0, 0.22);\n --f7-table-selected-row-bg-color: rgba(0, 0, 0, 0.03);\n --f7-table-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-table-input-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-table-head-text-color: rgba(255, 255, 255, 0.55);\n --f7-table-cell-border-color: rgba(255, 255, 255, 0.15);\n --f7-table-footer-text-color: rgba(255, 255, 255, 0.55);\n --f7-table-selected-row-bg-color: rgba(255, 255, 255, 0.08);\n}\n.md {\n --f7-table-head-font-weight: 500;\n --f7-table-head-cell-height: 56px;\n --f7-table-head-icon-size: 16px;\n --f7-table-body-cell-height: 48px;\n --f7-table-cell-padding-horizontal: 28px;\n --f7-table-edge-cell-padding-horizontal: 24px;\n --f7-table-label-cell-padding-horizontal: 24px;\n --f7-table-checkbox-cell-width: 18px;\n --f7-table-title-font-size: 20px;\n --f7-table-title-font-weight: 400;\n --f7-table-footer-height: 56px;\n --f7-table-actions-cell-link-color: rgba(0, 0, 0, 0.54);\n --f7-table-actions-link-color: rgba(0, 0, 0, 0.54);\n --f7-table-input-text-color: #212121;\n}\n.md .dark,\n.md.dark {\n --f7-table-actions-cell-link-color: rgba(255, 255, 255, 0.54);\n --f7-table-actions-link-color: rgba(255, 255, 255, 0.54);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-table-head-text-color: var(--f7-md-on-surface-variant);\n --f7-table-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-table-selected-row-bg-color: var(--f7-md-secondary-container);\n --f7-table-cell-border-color: var(--f7-md-outline);\n}\n.data-table {\n overflow-x: auto;\n}\n.data-table table,\ntable.data-table {\n width: 100%;\n border: none;\n padding: 0;\n margin: 0;\n border-collapse: collapse;\n text-align: left;\n}\n.data-table thead th,\n.data-table thead td {\n font-size: var(--f7-table-head-font-size);\n font-weight: var(--f7-table-head-font-weight);\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n line-height: 16px;\n height: var(--f7-table-head-cell-height);\n background-color: var(--f7-table-head-bg-color);\n}\n.data-table thead th:not(.sortable-cell-active),\n.data-table thead td:not(.sortable-cell-active) {\n color: var(--f7-table-head-text-color);\n}\n.data-table thead i.icon,\n.data-table thead i.f7-icons,\n.data-table thead i.material-icons {\n vertical-align: top;\n font-size: var(--f7-table-head-icon-size);\n}\n.data-table tbody {\n font-size: var(--f7-table-body-font-size);\n}\n.data-table tbody th,\n.data-table tbody td {\n height: var(--f7-table-body-cell-height);\n}\n.data-table tbody tr.data-table-row-selected,\n.device-desktop .data-table tbody tr:hover {\n background: var(--f7-table-selected-row-bg-color);\n}\n.data-table tbody td:before,\n.data-table tbody th:before {\n content: '';\n position: absolute;\n background-color: var(--f7-table-cell-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.data-table th,\n.data-table td {\n --f7-table-cell-padding-left: var(--f7-table-cell-padding-horizontal);\n --f7-table-cell-padding-right: var(--f7-table-cell-padding-horizontal);\n padding-top: var(--f7-table-cell-padding-vertical);\n padding-bottom: var(--f7-table-cell-padding-vertical);\n padding-left: var(--f7-table-cell-padding-left);\n padding-right: var(--f7-table-cell-padding-right);\n position: relative;\n box-sizing: border-box;\n}\n.data-table th:first-child,\n.data-table td:first-child {\n --f7-table-cell-padding-left: var(--f7-table-edge-cell-padding-horizontal);\n}\n.data-table th:last-child,\n.data-table td:last-child {\n --f7-table-cell-padding-right: var(--f7-table-edge-cell-padding-horizontal);\n}\n.data-table th.label-cell,\n.data-table td.label-cell {\n --f7-table-cell-padding-left: var(--f7-table-label-cell-padding-horizontal);\n --f7-table-cell-padding-right: var(--f7-table-label-cell-padding-horizontal);\n}\n.data-table th.numeric-cell,\n.data-table td.numeric-cell {\n text-align: right;\n}\n.data-table th.checkbox-cell,\n.data-table td.checkbox-cell {\n overflow: visible;\n width: var(--f7-table-checkbox-cell-width);\n}\n.data-table th.checkbox-cell label + span,\n.data-table td.checkbox-cell label + span {\n margin-left: 8px;\n}\n.data-table th.checkbox-cell:first-child,\n.data-table td.checkbox-cell:first-child {\n padding-right: calc(var(--f7-table-cell-padding-right) / 2);\n}\n.data-table th.checkbox-cell:first-child + td,\n.data-table td.checkbox-cell:first-child + td,\n.data-table th.checkbox-cell:first-child + th,\n.data-table td.checkbox-cell:first-child + th {\n padding-left: calc(var(--f7-table-cell-padding-left) / 2);\n}\n.data-table th.checkbox-cell:last-child,\n.data-table td.checkbox-cell:last-child {\n padding-left: calc(var(--f7-table-cell-padding-left) / 2);\n}\n.data-table th.actions-cell,\n.data-table td.actions-cell {\n text-align: right;\n white-space: nowrap;\n}\n.data-table th.actions-cell a.link,\n.data-table td.actions-cell a.link {\n color: var(--f7-table-actions-cell-link-color, var(--f7-theme-color));\n}\n.data-table th a.icon-only,\n.data-table td a.icon-only,\n.card .data-table th a.icon-only,\n.card .data-table td a.icon-only,\n.card.data-table th a.icon-only,\n.card.data-table td a.icon-only {\n display: inline-block;\n vertical-align: middle;\n text-align: center;\n font-size: 0;\n min-width: 0;\n}\n.data-table th a.icon-only i,\n.data-table td a.icon-only i,\n.card .data-table th a.icon-only i,\n.card .data-table td a.icon-only i,\n.card.data-table th a.icon-only i,\n.card.data-table td a.icon-only i {\n font-size: var(--f7-table-link-icon-only-icon-size);\n vertical-align: middle;\n}\n.data-table .sortable-cell:not(.input-cell) {\n cursor: pointer;\n position: relative;\n}\n.data-table .sortable-cell.input-cell .table-head-label {\n cursor: pointer;\n position: relative;\n}\n.data-table .sortable-cell:not(.numeric-cell):not(.input-cell):after,\n.data-table .sortable-cell.numeric-cell:not(.input-cell):before,\n.data-table .sortable-cell:not(.numeric-cell).input-cell > .table-head-label:after,\n.data-table .sortable-cell.numeric-cell.input-cell > .table-head-label:before {\n content: 'arrow_bottom_md';\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n display: inline-block;\n vertical-align: top;\n width: 16px;\n height: 16px;\n color: var(--f7-table-sortable-icon-color);\n font-size: 13px;\n line-height: 16px;\n transition-duration: 300ms;\n transform: rotate(0);\n opacity: 0;\n}\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:after,\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:after,\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:before,\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:before {\n opacity: 0.54;\n}\n.data-table .sortable-cell.sortable-cell-active:after,\n.data-table .sortable-cell.sortable-cell-active .table-head-label:after,\n.data-table .sortable-cell.sortable-cell-active:before,\n.data-table .sortable-cell.sortable-cell-active .table-head-label:before {\n opacity: 0.87 !important;\n}\n.data-table .sortable-cell.sortable-desc:after,\n.data-table .sortable-cell.sortable-desc:after,\n.data-table .table-head-label:after,\n.data-table .sortable-cell.sortable-desc:before,\n.data-table .sortable-cell.sortable-desc:before,\n.data-table .table-head-label:before {\n transform: rotate(180deg) !important;\n}\n.data-table.card .card-header,\n.card .data-table .card-header,\n.data-table.card .card-footer,\n.card .data-table .card-footer {\n padding-left: var(--f7-table-edge-cell-padding-horizontal);\n padding-right: var(--f7-table-edge-cell-padding-horizontal);\n}\n.data-table.card .card-header,\n.card .data-table .card-header {\n min-height: var(--f7-table-card-header-height);\n background-color: var(--f7-table-card-header-bg-color);\n}\n.data-table.card .card-content,\n.card .data-table .card-content {\n overflow-x: auto;\n}\n.data-table.card .card-footer,\n.card .data-table .card-footer {\n min-height: var(--f7-table-footer-height);\n}\n.data-table .data-table-title {\n font-size: var(--f7-table-title-font-size);\n font-weight: var(--f7-table-title-font-weight);\n}\n.data-table .data-table-links,\n.data-table .data-table-actions {\n display: flex;\n}\n.data-table .data-table-links .button {\n min-width: 64px;\n}\n.data-table .data-table-actions {\n margin-left: auto;\n align-items: center;\n}\n.data-table .data-table-actions a.link {\n color: var(--f7-table-actions-link-color, var(--f7-theme-color));\n min-width: 0;\n}\n.data-table .data-table-actions a.link.icon-only {\n line-height: 1;\n justify-content: center;\n padding: 0;\n}\n.data-table .data-table-header,\n.data-table .data-table-header-selected {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n}\n.data-table .card-header > .data-table-header,\n.data-table .card-header > .data-table-header-selected {\n padding-top: var(--f7-card-header-padding-vertical);\n padding-bottom: var(--f7-card-header-padding-vertical);\n height: 100%;\n margin-top: calc(-1 * var(--f7-card-header-padding-vertical));\n margin-bottom: calc(-1 * var(--f7-card-header-padding-vertical));\n min-height: var(--f7-table-card-header-height);\n padding-left: var(--f7-table-edge-cell-padding-horizontal);\n padding-right: var(--f7-table-edge-cell-padding-horizontal);\n margin-left: calc(-1 * var(--f7-table-edge-cell-padding-horizontal));\n margin-right: calc(-1 * var(--f7-table-edge-cell-padding-horizontal));\n}\n.data-table .data-table-header-selected {\n background: rgba(var(--f7-theme-color-rgb), 0.1);\n display: none;\n}\n.data-table.data-table-has-checked .data-table-header {\n display: none;\n}\n.data-table.data-table-has-checked .data-table-header-selected {\n display: flex;\n}\n.data-table .data-table-title-selected {\n font-size: 14px;\n color: var(--f7-theme-color);\n}\n.data-table .data-table-footer {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n position: relative;\n font-size: var(--f7-table-footer-font-size);\n overflow: hidden;\n min-height: var(--f7-table-footer-height);\n color: var(--f7-table-footer-text-color);\n justify-content: flex-end;\n}\n.data-table .data-table-footer:before {\n content: '';\n position: absolute;\n background-color: var(--f7-table-cell-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.data-table .data-table-rows-select,\n.data-table .data-table-pagination {\n display: flex;\n align-items: center;\n}\n.data-table .input-cell {\n padding-top: 8px;\n padding-bottom: 8px;\n height: auto;\n vertical-align: top;\n}\n.data-table .input-cell .table-head-label + .input {\n margin-top: 4px;\n}\n.data-table .input-cell .input {\n height: var(--f7-table-input-height);\n}\n.data-table .input-cell .input input,\n.data-table .input-cell .input textarea,\n.data-table .input-cell .input select {\n height: var(--f7-table-input-height);\n color: var(--f7-table-input-text-color);\n font-size: var(--f7-table-input-font-size);\n}\n@media (max-width: 480px) and (orientation: portrait) {\n .data-table.data-table-collapsible thead {\n display: none;\n }\n .data-table.data-table-collapsible tbody,\n .data-table.data-table-collapsible tr,\n .data-table.data-table-collapsible td {\n display: block;\n }\n .data-table.data-table-collapsible tr {\n position: relative;\n }\n .data-table.data-table-collapsible tr:before {\n content: '';\n position: absolute;\n background-color: var(--f7-table-cell-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n .data-table.data-table-collapsible tr:hover {\n background-color: inherit;\n }\n .data-table.data-table-collapsible td {\n --f7-table-cell-padding-left: var(--f7-table-collapsible-cell-padding);\n --f7-table-cell-padding-right: var(--f7-table-collapsible-cell-padding);\n height: auto;\n min-height: var(--f7-table-body-cell-height);\n display: flex;\n align-content: center;\n align-items: center;\n justify-content: flex-start;\n text-align: left;\n }\n .data-table.data-table-collapsible td:before {\n display: none !important;\n }\n .data-table.data-table-collapsible td:not(.checkbox-cell):before {\n width: 40%;\n display: block !important;\n content: attr(data-collapsible-title);\n position: relative;\n height: auto;\n background: none !important;\n transform: none !important;\n font-size: var(--f7-table-head-font-size);\n font-weight: var(--f7-table-head-font-weight);\n color: var(--f7-table-head-text-color);\n margin-right: 16px;\n flex-shrink: 0;\n }\n .data-table.data-table-collapsible td.checkbox-cell {\n position: absolute;\n top: 0;\n left: 0;\n }\n .data-table.data-table-collapsible td.checkbox-cell + td {\n padding-left: 16px;\n }\n .data-table.data-table-collapsible td.checkbox-cell ~ td {\n margin-left: 32px;\n }\n}\n.data-table .xsmall-only,\n.data-table .xsmall-landscape-only {\n display: none;\n}\n@media (min-width: 480px) {\n .data-table .xsmall-only {\n display: table-cell;\n }\n}\n@media (min-width: 480px) and (orientation: landscape) {\n .data-table .xsmall-landscape-only {\n display: table-cell;\n }\n}\n.data-table .small-only,\n.data-table .small-landscape-only {\n display: none;\n}\n@media (min-width: 568px) {\n .data-table .small-only {\n display: table-cell;\n }\n}\n@media (min-width: 568px) and (orientation: landscape) {\n .data-table .small-landscape-only {\n display: table-cell;\n }\n}\n.data-table .medium-only,\n.data-table .medium-landscape-only {\n display: none;\n}\n@media (min-width: 768px) {\n .data-table .medium-only {\n display: table-cell;\n }\n}\n@media (min-width: 768px) and (orientation: landscape) {\n .data-table .medium-landscape-only {\n display: table-cell;\n }\n}\n.data-table .large-only,\n.data-table .large-landscape-only {\n display: none;\n}\n@media (min-width: 1024px) {\n .data-table .large-only {\n display: table-cell;\n }\n}\n@media (min-width: 1024px) and (orientation: landscape) {\n .data-table .large-landscape-only {\n display: table-cell;\n }\n}\n.data-table .xlarge-only,\n.data-table .xlarge-landscape-only {\n display: none;\n}\n@media (min-width: 1200px) {\n .data-table .xlarge-only {\n display: table-cell;\n }\n}\n@media (min-width: 1200px) and (orientation: landscape) {\n .data-table .xlarge-landscape-only {\n display: table-cell;\n }\n}\n.ios .data-table th.actions-cell a.link + a.link,\n.ios .data-table td.actions-cell a.link + a.link {\n margin-left: 16px;\n}\n.ios .sortable-cell:not(.numeric-cell):after {\n margin-left: 5px;\n}\n.ios .sortable-cell.numeric-cell:before {\n margin-right: 5px;\n}\n.ios .data-table-links a.link + a.link,\n.ios .data-table-actions a.link + a.link,\n.ios .data-table-links .button + .button,\n.ios .data-table-actions .button + .button {\n margin-left: 16px;\n}\n.ios .data-table-actions a.link.icon-only {\n width: 44px;\n height: 44px;\n}\n.ios .data-table-rows-select a.link,\n.ios .data-table-pagination a.link {\n width: 44px;\n height: 44px;\n}\n.ios .data-table-rows-select + .data-table-pagination {\n margin-left: 30px;\n}\n.ios .data-table-rows-select .input {\n margin-left: 20px;\n}\n.ios .data-table-pagination-label {\n margin-right: 16px;\n}\n.md .data-table th.actions-cell a.link + a.link,\n.md .data-table td.actions-cell a.link + a.link {\n margin-left: 24px;\n}\n.md .data-table th.actions-cell a.icon-only,\n.md .data-table td.actions-cell a.icon-only {\n width: 24px;\n height: 24px;\n line-height: 24px;\n}\n.md .sortable-cell:not(.numeric-cell):after {\n margin-left: 8px;\n}\n.md .sortable-cell.numeric-cell:before {\n margin-right: 8px;\n}\n.md .data-table-links a.link + a.link,\n.md .data-table-actions a.link + a.link,\n.md .data-table-links .button + .button,\n.md .data-table-actions .button + .button {\n margin-left: 24px;\n}\n.md .data-table-actions a.link.icon-only {\n width: 24px;\n height: 24px;\n overflow: visible;\n}\n.md .data-table-actions a.link.icon-only.active-state {\n background: none;\n}\n.md .data-table-rows-select a.link,\n.md .data-table-pagination a.link {\n width: 48px;\n height: 48px;\n}\n.md .data-table-rows-select + .data-table-pagination {\n margin-left: 32px;\n}\n.md .data-table-rows-select .input {\n margin-left: 24px;\n}\n.md .data-table-pagination-label {\n margin-right: 20px;\n}\n.md .input-cell .input-clear-button {\n transform: scale(0.8);\n}\n/* === FAB === */\n:root {\n --f7-fab-margin: 16px;\n --f7-fab-extended-text-font-size: 14px;\n --f7-fab-label-padding: 4px 12px;\n --f7-fab-label-font-size: inherit;\n --f7-fab-button-size: 40px;\n}\n.ios {\n /* --f7-fab-pressed-bg-color: var(--f7-theme-color-shade); */\n /* --f7-fab-bg-color: var(--f7-theme-color)); */\n --f7-fab-text-color: #fff;\n --f7-fab-border-radius: 50px;\n --f7-fab-size: 50px;\n --f7-fab-box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.4);\n --f7-fab-extended-text-transform: uppercase;\n --f7-fab-extended-size: 50px;\n --f7-fab-extended-text-padding: 0 20px;\n --f7-fab-extended-text-font-weight: 600;\n --f7-fab-extended-text-letter-spacing: 0;\n --f7-fab-label-border-radius: 4px;\n --f7-fab-label-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.4);\n --f7-fab-label-text-color: #333;\n --f7-fab-label-bg-color: #fff;\n}\n.md {\n /*\n --f7-fab-pressed-bg-color: var(--f7-fab-bg-color, var(--f7-theme-color));\n */\n --f7-fab-border-radius: 16px;\n --f7-fab-size: 56px;\n --f7-fab-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.25);\n --f7-fab-extended-size: 56px;\n --f7-fab-extended-text-padding: 0 16px;\n --f7-fab-extended-text-font-weight: 500;\n --f7-fab-extended-text-letter-spacing: 0;\n --f7-fab-extended-text-transform: none;\n --f7-fab-label-border-radius: 8px;\n --f7-fab-label-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.25);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-fab-bg-color: var(--f7-md-primary-container);\n --f7-fab-text-color: var(--f7-md-on-primary-container);\n --f7-fab-label-text-color: var(--f7-md-on-surface);\n --f7-fab-label-bg-color: var(--f7-md-surface-5);\n}\n.fab-backdrop {\n z-index: 1400;\n}\n.fab {\n position: absolute;\n z-index: 1500;\n}\n.fab a {\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.fab-left-top,\n.fab-left-center,\n.fab-left-bottom {\n left: calc(var(--f7-fab-margin) + var(--f7-safe-area-left));\n}\n.fab-right-top,\n.fab-right-center,\n.fab-right-bottom {\n right: calc(var(--f7-fab-margin) + var(--f7-safe-area-right));\n}\n.fab-left-top,\n.fab-center-top,\n.fab-right-top {\n top: var(--f7-fab-margin);\n}\n.fab-left-bottom,\n.fab-center-bottom,\n.fab-right-bottom {\n bottom: calc(var(--f7-fab-margin) + var(--f7-safe-area-bottom));\n}\n.fab-center-top,\n.fab-center-center,\n.fab-center-bottom {\n left: 50%;\n transform: translateX(-50%);\n}\n.fab-left-center,\n.fab-center-center,\n.fab-right-center {\n top: 50%;\n transform: translateY(-50%);\n}\n.fab-center-center {\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n}\n.fab > a,\n.fab-buttons a {\n background-color: var(--f7-fab-bg-color, var(--f7-theme-color));\n width: var(--f7-fab-size);\n height: var(--f7-fab-size);\n box-shadow: var(--f7-fab-box-shadow);\n border-radius: var(--f7-fab-border-radius);\n position: relative;\n transition-duration: 300ms;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n z-index: 1;\n color: var(--f7-fab-text-color);\n}\n.fab > a i {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate3d(-50%, -50%, 0) rotate(0deg) scale(1);\n transition: 300ms;\n}\n.fab > a i + i {\n transform: translate3d(-50%, -50%, 0) rotate(-90deg) scale(0.5);\n opacity: 0;\n}\n.fab-buttons a {\n border-radius: var(--f7-fab-border-radius);\n width: var(--f7-fab-button-size);\n height: var(--f7-fab-button-size);\n}\n.fab-buttons {\n display: flex;\n visibility: hidden;\n pointer-events: none;\n position: absolute;\n}\n.fab-buttons a {\n opacity: 0;\n}\n.fab-opened:not(.fab-morph) > a i {\n transform: translate3d(-50%, -50%, 0) rotate(90deg) scale(0.5);\n opacity: 0;\n}\n.fab-opened:not(.fab-morph) > a i + i {\n transform: translate3d(-50%, -50%, 0) rotate(0deg) scale(1);\n opacity: 1;\n}\n.fab-opened .fab-buttons {\n visibility: visible;\n pointer-events: auto;\n}\n.fab-opened .fab-buttons a {\n opacity: 1;\n transform: translate3d(0, 0px, 0) scale(1) !important;\n}\n.fab-opened .fab-buttons a:nth-child(2) {\n transition-delay: 50ms;\n}\n.fab-opened .fab-buttons a:nth-child(3) {\n transition-delay: 100ms;\n}\n.fab-opened .fab-buttons a:nth-child(4) {\n transition-delay: 150ms;\n}\n.fab-opened .fab-buttons a:nth-child(5) {\n transition-delay: 200ms;\n}\n.fab-opened .fab-buttons a:nth-child(6) {\n transition-delay: 250ms;\n}\n.fab-buttons-top,\n.fab-buttons-bottom {\n left: 50%;\n width: var(--f7-fab-button-size);\n margin-left: calc(-1 * var(--f7-fab-button-size) / 2);\n}\n.fab-buttons-top {\n bottom: 100%;\n margin-bottom: 16px;\n flex-direction: column-reverse;\n}\n.fab-buttons-top a {\n transform: translate3d(0, 8px, 0) scale(0.3);\n transform-origin: center bottom;\n}\n.fab-buttons-top a + a {\n margin-bottom: 16px;\n}\n.fab-buttons-bottom {\n top: 100%;\n margin-top: 16px;\n flex-direction: column;\n}\n.fab-buttons-bottom a {\n transform: translate3d(0, -8px, 0) scale(0.3);\n transform-origin: center top;\n}\n.fab-buttons-bottom a + a {\n margin-top: 16px;\n}\n.fab-buttons-left,\n.fab-buttons-right {\n top: 50%;\n height: var(--f7-fab-button-size);\n margin-top: calc(-1 * var(--f7-fab-button-size) / 2);\n}\n.fab-buttons-left {\n right: 100%;\n margin-right: 16px;\n flex-direction: row-reverse;\n}\n.fab-buttons-left a {\n transform: translate3d(8px, 0px, 0) scale(0.3);\n transform-origin: right center;\n}\n.fab-buttons-left a + a {\n margin-right: 16px;\n}\n.fab-buttons-right {\n left: 100%;\n margin-left: 16px;\n}\n.fab-buttons-right a {\n transform: translate3d(-8px, 0, 0) scale(0.3);\n transform-origin: left center;\n}\n.fab-buttons-right a + a {\n margin-left: 16px;\n}\n.fab-buttons-center {\n left: 0%;\n top: 0%;\n width: 100%;\n height: 100%;\n}\n.fab-buttons-center a {\n position: absolute;\n}\n.fab-buttons-center a:nth-child(1) {\n left: 50%;\n margin-left: calc(-1 * var(--f7-fab-button-size) / 2);\n bottom: 100%;\n margin-bottom: 16px;\n transform: translateY(-8px) scale(0.3);\n transform-origin: center bottom;\n}\n.fab-buttons-center a:nth-child(2) {\n left: 100%;\n margin-top: calc(-1 * var(--f7-fab-button-size) / 2);\n top: 50%;\n margin-left: 16px;\n transform: translateX(-8px) scale(0.3);\n transform-origin: left center;\n}\n.fab-buttons-center a:nth-child(3) {\n left: 50%;\n margin-left: calc(-1 * var(--f7-fab-button-size) / 2);\n top: 100%;\n margin-top: 16px;\n transform: translateY(8px) scale(0.3);\n transform-origin: center top;\n}\n.fab-buttons-center a:nth-child(4) {\n right: 100%;\n margin-top: calc(-1 * var(--f7-fab-button-size) / 2);\n top: 50%;\n margin-right: 16px;\n transform: translateX(8px) scale(0.3);\n transform-origin: right center;\n}\n.fab-morph {\n border-radius: var(--f7-fab-border-radius);\n background: var(--f7-fab-bg-color, var(--f7-theme-color));\n box-shadow: var(--f7-fab-box-shadow);\n}\n.fab-morph > a {\n box-shadow: none;\n background: none !important;\n}\n.fab-opened.fab-morph > a i {\n opacity: 0;\n}\n.fab-morph,\n.fab-morph > a,\n.fab-morph-target {\n transition-duration: 250ms;\n}\n.fab-morph-target:not(.fab-morph-target-visible) {\n display: none;\n}\n.fab-extended {\n width: auto;\n min-width: var(--f7-fab-extended-size);\n}\n.fab-extended > a {\n width: 100%;\n height: var(--f7-fab-extended-size);\n}\n.fab-extended > a i {\n left: calc(var(--f7-fab-extended-size) / 2);\n}\n.fab-extended i ~ .fab-text {\n padding-left: var(--f7-fab-extended-size);\n}\n.fab-extended > a {\n width: 100% !important;\n}\n.fab-text {\n box-sizing: border-box;\n font-size: var(--f7-fab-extended-text-font-size);\n padding: var(--f7-fab-extended-text-padding);\n font-weight: var(--f7-fab-extended-text-font-weight);\n letter-spacing: var(--f7-fab-extended-text-letter-spacing);\n text-transform: var(--f7-fab-extended-text-transform);\n}\n.fab-label-button {\n overflow: visible !important;\n}\n.fab-label {\n position: absolute;\n top: 50%;\n padding: var(--f7-fab-label-padding);\n border-radius: var(--f7-fab-label-border-radius);\n background: var(--f7-fab-label-bg-color);\n color: var(--f7-fab-label-text-color);\n box-shadow: var(--f7-fab-label-box-shadow);\n white-space: nowrap;\n transform: translateY(-50%);\n pointer-events: none;\n font-size: var(--f7-fab-label-font-size);\n}\n.fab-right-top .fab-label,\n.fab-right-center .fab-label,\n.fab-right-bottom .fab-label {\n right: 100%;\n margin-right: 8px;\n}\n.fab-left-top .fab-label,\n.fab-left-center .fab-label,\n.fab-left-bottom .fab-label {\n left: 100%;\n margin-left: 8px;\n}\n.navbar ~ * .fab-left-top,\n.navbar ~ * .fab-center-top,\n.navbar ~ * .fab-right-top,\n.navbar ~ .fab-left-top,\n.navbar ~ .fab-center-top,\n.navbar ~ .fab-right-top,\n.navbars ~ * .fab-left-top,\n.navbars ~ * .fab-center-top,\n.navbars ~ * .fab-right-top,\n.navbars ~ .fab-left-top,\n.navbars ~ .fab-center-top,\n.navbars ~ .fab-right-top {\n margin-top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.toolbar-top ~ * .fab-left-top,\n.toolbar-top ~ * .fab-center-top,\n.toolbar-top ~ * .fab-right-top,\n.toolbar-top ~ .fab-left-top,\n.toolbar-top ~ .fab-center-top,\n.toolbar-top ~ .fab-right-top,\n.ios .toolbar-top-ios ~ * .fab-left-top,\n.ios .toolbar-top-ios ~ * .fab-center-top,\n.ios .toolbar-top-ios ~ * .fab-right-top,\n.ios .toolbar-top-ios ~ .fab-left-top,\n.ios .toolbar-top-ios ~ .fab-center-top,\n.ios .toolbar-top-ios ~ .fab-right-top,\n.md .toolbar-top-md ~ * .fab-left-top,\n.md .toolbar-top-md ~ * .fab-center-top,\n.md .toolbar-top-md ~ * .fab-right-top,\n.md .toolbar-top-md ~ .fab-left-top,\n.md .toolbar-top-md ~ .fab-center-top,\n.md .toolbar-top-md ~ .fab-right-top {\n margin-top: var(--f7-toolbar-height);\n}\n.toolbar-bottom ~ * .fab-left-bottom,\n.toolbar-bottom ~ * .fab-center-bottom,\n.toolbar-bottom ~ * .fab-right-bottom,\n.toolbar-bottom ~ .fab-left-bottom,\n.toolbar-bottom ~ .fab-center-bottom,\n.toolbar-bottom ~ .fab-right-bottom,\n.ios .toolbar-bottom-ios ~ * .fab-left-bottom,\n.ios .toolbar-bottom-ios ~ * .fab-center-bottom,\n.ios .toolbar-bottom-ios ~ * .fab-right-bottom,\n.ios .toolbar-bottom-ios ~ .fab-left-bottom,\n.ios .toolbar-bottom-ios ~ .fab-center-bottom,\n.ios .toolbar-bottom-ios ~ .fab-right-bottom,\n.md .toolbar-bottom-md ~ * .fab-left-bottom,\n.md .toolbar-bottom-md ~ * .fab-center-bottom,\n.md .toolbar-bottom-md ~ * .fab-right-bottom,\n.md .toolbar-bottom-md ~ .fab-left-bottom,\n.md .toolbar-bottom-md ~ .fab-center-bottom,\n.md .toolbar-bottom-md ~ .fab-right-bottom {\n margin-bottom: var(--f7-toolbar-height);\n}\n.tabbar-icons.toolbar-bottom ~ * .fab-left-bottom,\n.tabbar-icons.toolbar-bottom ~ * .fab-center-bottom,\n.tabbar-icons.toolbar-bottom ~ * .fab-right-bottom,\n.tabbar-icons.toolbar-bottom ~ .fab-left-bottom,\n.tabbar-icons.toolbar-bottom ~ .fab-center-bottom,\n.tabbar-icons.toolbar-bottom ~ .fab-right-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ * .fab-left-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ * .fab-center-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ * .fab-right-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ .fab-left-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ .fab-center-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ .fab-right-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ * .fab-left-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ * .fab-center-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ * .fab-right-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ .fab-left-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ .fab-center-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ .fab-right-bottom {\n margin-bottom: var(--f7-tabbar-icons-height);\n}\n.tabbar-icons.toolbar-top ~ * .fab-left-bottom,\n.tabbar-icons.toolbar-top ~ * .fab-center-bottom,\n.tabbar-icons.toolbar-top ~ * .fab-right-bottom,\n.tabbar-icons.toolbar-top ~ .fab-left-bottom,\n.tabbar-icons.toolbar-top ~ .fab-center-bottom,\n.tabbar-icons.toolbar-top ~ .fab-right-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ * .fab-left-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ * .fab-center-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ * .fab-right-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ .fab-left-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ .fab-center-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ .fab-right-bottom,\n.md .tabbar-icons.toolbar-top-md ~ * .fab-left-bottom,\n.md .tabbar-icons.toolbar-top-md ~ * .fab-center-bottom,\n.md .tabbar-icons.toolbar-top-md ~ * .fab-right-bottom,\n.md .tabbar-icons.toolbar-top-md ~ .fab-left-bottom,\n.md .tabbar-icons.toolbar-top-md ~ .fab-center-bottom,\n.md .tabbar-icons.toolbar-top-md ~ .fab-right-bottom {\n margin-top: var(--f7-tabbar-icons-height);\n}\n.messagebar ~ * .fab-left-bottom,\n.messagebar ~ * .fab-center-bottom,\n.messagebar ~ * .fab-right-bottom,\n.messagebar ~ .fab-left-bottom,\n.messagebar ~ .fab-center-bottom,\n.messagebar ~ .fab-right-bottom {\n margin-bottom: var(--f7-messagebar-height);\n}\n.navbar + .toolbar-top ~ * .fab-left-top,\n.ios .navbar + .toolbar-top-ios ~ * .fab-left-top,\n.md .navbar + .toolbar-top-ios ~ * .fab-left-top,\n.navbar + .toolbar-top ~ * .fab-center-top,\n.ios .navbar + .toolbar-top-ios ~ * .fab-center-top,\n.md .navbar + .toolbar-top-ios ~ * .fab-center-top,\n.navbar + .toolbar-top ~ * .fab-right-top,\n.ios .navbar + .toolbar-top-ios ~ * .fab-right-top,\n.md .navbar + .toolbar-top-ios ~ * .fab-right-top,\n.navbar + .toolbar-top ~ .fab-left-top,\n.ios .navbar + .toolbar-top-ios ~ .fab-left-top,\n.md .navbar + .toolbar-top-ios ~ .fab-left-top,\n.navbar + .toolbar-top ~ .fab-center-top,\n.ios .navbar + .toolbar-top-ios ~ .fab-center-top,\n.md .navbar + .toolbar-top-ios ~ .fab-center-top,\n.navbar + .toolbar-top ~ .fab-right-top,\n.ios .navbar + .toolbar-top-ios ~ .fab-right-top,\n.md .navbar + .toolbar-top-ios ~ .fab-right-top {\n margin-top: calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar + .toolbar-top.tabbar-icons ~ * .fab-left-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-left-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-left-top,\n.navbar + .toolbar-top.tabbar-icons ~ * .fab-center-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-center-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-center-top,\n.navbar + .toolbar-top.tabbar-icons ~ * .fab-right-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-right-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-right-top,\n.navbar + .toolbar-top.tabbar-icons ~ .fab-left-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-left-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-left-top,\n.navbar + .toolbar-top.tabbar-icons ~ .fab-center-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-center-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-center-top,\n.navbar + .toolbar-top.tabbar-icons ~ .fab-right-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-right-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-right-top {\n margin-top: calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbars + .toolbar-top ~ * .fab-left-top,\n.ios .navbars + .toolbar-top-ios ~ * .fab-left-top,\n.navbars + .toolbar-top ~ * .fab-center-top,\n.ios .navbars + .toolbar-top-ios ~ * .fab-center-top,\n.navbars + .toolbar-top ~ * .fab-right-top,\n.ios .navbars + .toolbar-top-ios ~ * .fab-right-top,\n.navbars + .toolbar-top ~ .fab-left-top,\n.ios .navbars + .toolbar-top-ios ~ .fab-left-top,\n.navbars + .toolbar-top ~ .fab-center-top,\n.ios .navbars + .toolbar-top-ios ~ .fab-center-top,\n.navbars + .toolbar-top ~ .fab-right-top,\n.ios .navbars + .toolbar-top-ios ~ .fab-right-top {\n margin-top: calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbars + .toolbar-top.tabbar-icons ~ * .fab-left-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ * .fab-left-top,\n.navbars + .toolbar-top.tabbar-icons ~ * .fab-center-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ * .fab-center-top,\n.navbars + .toolbar-top.tabbar-icons ~ * .fab-right-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ * .fab-right-top,\n.navbars + .toolbar-top.tabbar-icons ~ .fab-left-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ .fab-left-top,\n.navbars + .toolbar-top.tabbar-icons ~ .fab-center-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ .fab-center-top,\n.navbars + .toolbar-top.tabbar-icons ~ .fab-right-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ .fab-right-top {\n margin-top: calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.ios .fab > a.active-state,\n.ios .fab-buttons a.active-state {\n transition-duration: 0ms;\n background-color: var(--f7-fab-pressed-bg-color, var(--f7-theme-color-shade));\n}\n.md .fab > a.active-state,\n.md .fab-buttons a.active-state {\n background-color: var(--f7-fab-pressed-bg-color, var(--f7-fab-bg-color, var(--f7-theme-color)));\n}\n/* === Searchbar === */\n:root {\n /*\n --f7-searchbar-link-color: var(--f7-bars-link-color);\n --f7-searchbar-inline-input-font-size: var(--f7-searchbar-input-font-size);\n */\n --f7-searchbar-input-border-width: 0px;\n --f7-searchbar-input-border-color: transparent;\n}\n.ios {\n /*\n --f7-searchbar-bg-color: var(--f7-bars-bg-color);\n --f7-searchbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-searchbar-border-color: var(--f7-bars-border-color);\n */\n --f7-searchbar-height: 44px;\n --f7-searchbar-inner-padding-left: 8px;\n --f7-searchbar-inner-padding-right: 8px;\n /*\n --f7-searchbar-link-color: var(--f7-bars-link-color, var(--f7-theme-color));\n */\n --f7-searchbar-input-font-size: 17px;\n --f7-searchbar-input-border-radius: 8px;\n --f7-searchbar-input-height: 32px;\n --f7-searchbar-inline-input-height: 32px;\n /*\n --f7-searchbar-inline-input-border-radius: var(--f7-searchbar-input-border-radius);\n */\n --f7-searchbar-input-padding-horizontal: 28px;\n /*\n --f7-searchbar-inline-input-padding-horizontal: var(--f7-searchbar-input-padding-horizontal);\n --f7-searchbar-input-clear-button-color: var(--f7-input-clear-button-color);\n */\n --f7-searchbar-backdrop-bg-color: rgba(0, 0, 0, 0.4);\n --f7-searchbar-in-page-content-margin: 0px;\n --f7-searchbar-in-page-content-box-shadow: none;\n --f7-searchbar-in-page-content-border-radius: 0;\n --f7-searchbar-in-page-content-input-border-radius: 0;\n --f7-searchbar-placeholder-color: rgba(0, 0, 0, 0.4);\n --f7-searchbar-input-text-color: #000;\n --f7-searchbar-search-icon-color: rgba(0, 0, 0, 0.4);\n --f7-searchbar-input-bg-color: #e4e4e4;\n}\n.ios .dark,\n.ios.dark {\n --f7-searchbar-placeholder-color: rgba(255, 255, 255, 0.4);\n --f7-searchbar-input-text-color: #fff;\n --f7-searchbar-search-icon-color: rgba(255, 255, 255, 0.4);\n --f7-searchbar-input-bg-color: #2a2a2a;\n}\n.md {\n --f7-searchbar-border-color: transparent;\n --f7-searchbar-height: 48px;\n --f7-searchbar-inner-padding-left: 8px;\n --f7-searchbar-inner-padding-right: 8px;\n --f7-searchbar-input-font-size: 16px;\n --f7-searchbar-input-border-radius: 24px;\n --f7-searchbar-input-height: 48px;\n --f7-searchbar-inline-input-height: 48px;\n --f7-searchbar-inline-input-border-radius: 24px;\n --f7-searchbar-input-padding-horizontal: 16px;\n --f7-searchbar-inline-input-padding-horizontal: 16px;\n --f7-searchbar-backdrop-bg-color: rgba(0, 0, 0, 0.25);\n --f7-searchbar-in-page-content-margin: 16px 0;\n --f7-searchbar-in-page-content-box-shadow: none;\n --f7-searchbar-in-page-content-border-radius: 24px;\n --f7-searchbar-in-page-content-input-border-radius: 24px;\n --f7-searchbar-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-searchbar-link-color: var(--f7-md-on-surface);\n --f7-searchbar-search-icon-color: var(--f7-md-on-surface);\n --f7-searchbar-input-clear-button-color: var(--f7-md-on-surface);\n --f7-searchbar-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-searchbar-input-bg-color: var(--f7-md-secondary-container);\n --f7-searchbar-input-text-color: var(--f7-md-on-surface);\n}\n.searchbar {\n --f7-link-highlight-color: var(--f7-link-highlight-black);\n width: 100%;\n position: relative;\n z-index: 200;\n height: var(--f7-searchbar-height);\n background-color: var(--f7-searchbar-bg-color, var(--f7-bars-bg-color));\n}\n.dark .searchbar {\n --f7-link-highlight-color: var(--f7-link-highlight-white);\n}\n.searchbar input[type='search']::-webkit-search-decoration {\n display: none;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .searchbar {\n background-color: rgba(var(--f7-searchbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.ios .subnavbar .searchbar {\n background-color: transparent;\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n}\n.ios .subnavbar .searchbar:after {\n display: none !important;\n}\n.searchbar.no-outline:after {\n display: none !important;\n}\n.searchbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-searchbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.page > .searchbar:not(.searchbar-inline) {\n z-index: 600;\n}\n.searchbar input[type='text'],\n.searchbar input[type='search'] {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n display: block;\n border: var(--f7-searchbar-input-border-width) solid var(--f7-searchbar-input-border-color);\n -webkit-appearance: none;\n appearance: none;\n font-family: inherit;\n font-weight: normal;\n color: var(--f7-searchbar-input-text-color);\n font-size: var(--f7-searchbar-input-font-size);\n background-color: var(--f7-searchbar-input-bg-color);\n border-radius: var(--f7-searchbar-input-border-radius);\n position: relative;\n padding: 0;\n padding-left: calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px));\n padding-right: calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-right, 0px));\n}\n.searchbar input[type='text']::placeholder,\n.searchbar input[type='search']::placeholder {\n color: var(--f7-searchbar-placeholder-color);\n opacity: 1;\n}\n.searchbar input::-webkit-search-cancel-button {\n -webkit-appearance: none;\n appearance: none;\n}\n.searchbar .searchbar-input-wrap {\n flex-shrink: 1;\n width: 100%;\n height: var(--f7-searchbar-input-height);\n position: relative;\n}\n.searchbar a {\n color: var(--f7-searchbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.page > .searchbar:not(.searchbar-inline) {\n position: absolute;\n left: 0;\n top: 0;\n}\n.page-content .searchbar:not(.searchbar-inline) {\n border-radius: var(--f7-searchbar-in-page-content-border-radius);\n margin: var(--f7-searchbar-in-page-content-margin);\n width: auto;\n box-shadow: var(--f7-searchbar-in-page-content-box-shadow);\n}\n.page-content .searchbar:not(.searchbar-inline) .searchbar-inner,\n.page-content .searchbar:not(.searchbar-inline) input[type='text'],\n.page-content .searchbar:not(.searchbar-inline) input[type='search'] {\n border-radius: var(--f7-searchbar-in-page-content-input-border-radius, var(--f7-searchbar-input-border-radius));\n}\n.searchbar .input-clear-button {\n color: var(--f7-searchbar-input-clear-button-color, var(--f7-input-clear-button-color));\n}\n.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-searchbar-height);\n position: absolute;\n transition-duration: 300ms;\n pointer-events: none;\n}\n.navbar .searchbar-expandable {\n background: transparent;\n}\n.navbar .searchbar-expandable:after {\n display: none !important;\n}\n.navbar .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar .searchbar.searchbar-expandable .searchbar-inner {\n top: var(--f7-safe-area-top);\n height: calc(100% - var(--f7-safe-area-top));\n}\n.toolbar .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-toolbar-height);\n}\n.subnavbar .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-subnavbar-height);\n}\n.tabbar-icons .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-tabbar-icons-height);\n}\n.searchbar-inner {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n padding: 0 calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left));\n}\n.searchbar-disable-button {\n cursor: pointer;\n pointer-events: none;\n -webkit-appearance: none;\n appearance: none;\n background: none;\n border: none;\n outline: 0;\n padding: 0;\n margin: 0;\n width: auto;\n opacity: 0;\n}\n.searchbar-icon {\n pointer-events: none;\n background-position: center;\n background-repeat: no-repeat;\n}\n.searchbar-icon:after {\n color: var(--f7-searchbar-search-icon-color);\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n.searchbar-backdrop {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 100;\n opacity: 0;\n pointer-events: none;\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n background: var(--f7-searchbar-backdrop-bg-color);\n}\n.searchbar-backdrop.searchbar-backdrop-in {\n opacity: 1;\n pointer-events: auto;\n}\n.page-content > .searchbar-backdrop {\n position: fixed;\n}\n.searchbar-not-found {\n display: none;\n}\n.hidden-by-searchbar,\n.list .hidden-by-searchbar,\n.list.li.hidden-by-searchbar,\n.list li.hidden-by-searchbar {\n display: none !important;\n}\n.navbar.with-searchbar-expandable-enabled-no-transition,\n.navbar.with-searchbar-expandable-enabled-no-transition {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar.with-searchbar-expandable-enabled,\n.navbar.with-searchbar-expandable-enabled {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar.with-searchbar-expandable-enabled .navbar-bg,\n.navbar.with-searchbar-expandable-enabled .navbar-bg,\n.navbar.with-searchbar-expandable-enabled .title-large,\n.navbar.with-searchbar-expandable-enabled .title-large,\n.navbar.with-searchbar-expandable-enabled .title-large-text,\n.navbar.with-searchbar-expandable-enabled .title-large-text {\n transition-duration: 300ms;\n}\n.navbar.with-searchbar-expandable-closing .navbar-bg,\n.navbar.with-searchbar-expandable-closing .navbar-bg,\n.navbar.with-searchbar-expandable-closing .title-large,\n.navbar.with-searchbar-expandable-closing .title-large,\n.navbar.with-searchbar-expandable-closing .title-large-text,\n.navbar.with-searchbar-expandable-closing .title-large-text {\n transition-duration: 300ms;\n}\n.page-content.with-searchbar-expandable-enabled {\n height: calc(100% + var(--f7-navbar-large-title-height));\n transform: translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n transition-duration: 300ms;\n transition-property: transform;\n}\n.page-content.with-searchbar-expandable-closing {\n transition-duration: 300ms;\n}\n.navbar ~ .page:not(.no-navbar) > .searchbar,\n.navbars ~ .page:not(.no-navbar) > .searchbar,\n.page > .navbar ~ .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ .page-with-navbar-large:not(.no-navbar) .searchbar,\n.navbars ~ .page-with-navbar-large:not(.no-navbar) .searchbar,\n.page-with-navbar-large .navbar ~ .searchbar,\n.page-with-navbar-large .navbar ~ * .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));\n transform: translate3d(0, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.navbars ~ .page-with-navbar-large:not(.no-navbar) .page-content .searchbar,\n.page-with-navbar-large .page-content .searchbar {\n top: 0;\n transform: none;\n}\n.searchbar ~ * {\n --f7-page-searchbar-offset: var(--f7-searchbar-height);\n}\n.page > .toolbar-top ~ .searchbar,\n.ios .page > .toolbar-top-ios ~ .searchbar,\n.md .page > .toolbar-top-md ~ .searchbar {\n top: var(--f7-toolbar-height);\n}\n.page > .tabbar-icons.toolbar-top ~ .searchbar,\n.ios .page > .tabbar-icons.toolbar-top-ios ~ .searchbar,\n.md .page > .tabbar-icons.toolbar-top-md ~ .searchbar {\n top: var(--f7-tabbar-icons-height);\n}\n.page > .navbar ~ .toolbar-top ~ .searchbar,\n.ios .page > .navbar ~ .toolbar-top-ios ~ .searchbar,\n.md .page > .navbar ~ .toolbar-top-md ~ .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top));\n}\n.page > .navbar ~ .tabbar-icons.toolbar-top ~ .searchbar,\n.ios .page > .navbar ~ .tabbar-icons.toolbar-top-ios ~ .searchbar,\n.md .page > .navbar ~ .tabbar-icons.toolbar-top-md ~ .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top));\n}\n.searchbar.searchbar-inline {\n width: auto;\n height: auto;\n background-color: transparent;\n background-image: none;\n}\n.searchbar.searchbar-inline:after,\n.searchbar.searchbar-inline:before {\n display: none !important;\n}\n.searchbar.searchbar-inline .searchbar-input-wrap {\n height: var(--f7-searchbar-inline-input-height, var(--f7-searchbar-input-height));\n}\n.searchbar.searchbar-inline .searchbar-inner {\n padding: 0;\n position: static;\n width: auto;\n height: auto;\n}\n.searchbar.searchbar-inline input[type='text'],\n.searchbar.searchbar-inline input[type='search'] {\n font-size: var(--f7-searchbar-inline-input-font-size, var(--f7-searchbar-input-font-size));\n border-radius: var(--f7-searchbar-inline-input-border-radius, var(--f7-searchbar-input-border-radius));\n padding-left: calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-left, 0px));\n padding-right: calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-right, 0px));\n}\n.ios .searchbar input[type='search'],\n.ios .searchbar input[type='text'] {\n z-index: 30;\n}\n.ios .searchbar .input-clear-button {\n z-index: 40;\n right: 7px;\n}\n.ios .searchbar-icon {\n width: 13px;\n height: 13px;\n position: absolute;\n top: 50%;\n margin-top: -6px;\n z-index: 40;\n left: 8px;\n}\n.ios .searchbar-icon:after {\n content: 'search_ios';\n line-height: 13px;\n}\n.ios .searchbar-disable-button {\n font-size: 17px;\n flex-shrink: 0;\n transform: translate3d(0, 0, 0);\n transition-duration: 300ms;\n color: var(--f7-searchbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n display: none;\n}\n.ios .searchbar-disable-button.active-state {\n transition-duration: 0ms;\n opacity: 0.3 !important;\n}\n.ios .searchbar-enabled .searchbar-disable-button {\n pointer-events: auto;\n opacity: 1;\n margin-left: 8px;\n}\n.ios .searchbar:not(.searchbar-enabled) .searchbar-disable-button {\n transition-duration: 300ms !important;\n}\n.ios .searchbar-expandable {\n left: 0;\n bottom: 0;\n opacity: 1;\n width: 100%;\n height: 0%;\n transform: translate3d(0, 0, 0);\n overflow: hidden;\n}\n.ios .searchbar-expandable .searchbar-disable-button {\n margin-left: 8px;\n opacity: 1;\n display: block;\n}\n.ios .searchbar-expandable .searchbar-inner {\n height: var(--f7-searchbar-expandable-size);\n}\n.ios .navbar.with-searchbar-expandable-enabled .navbar-bg,\n.ios .navbar.with-searchbar-expandable-closing .navbar-bg {\n transition-property: transform, opacity;\n}\n.ios .navbar.with-searchbar-expandable-enabled .navbar-bg,\n.ios .navbar.with-searchbar-expandable-closing .navbar-bg,\n.ios .navbar.with-searchbar-expandable-enabled .left,\n.ios .navbar.with-searchbar-expandable-closing .left,\n.ios .navbar.with-searchbar-expandable-enabled .title,\n.ios .navbar.with-searchbar-expandable-closing .title,\n.ios .navbar.with-searchbar-expandable-enabled .right,\n.ios .navbar.with-searchbar-expandable-closing .right {\n transition-duration: 300ms;\n}\n.ios .navbar.with-searchbar-expandable-enabled .left,\n.ios .navbar.with-searchbar-expandable-enabled-no-transition .left,\n.ios .navbar.with-searchbar-expandable-enabled .title,\n.ios .navbar.with-searchbar-expandable-enabled-no-transition .title,\n.ios .navbar.with-searchbar-expandable-enabled .right,\n.ios .navbar.with-searchbar-expandable-enabled-no-transition .right {\n transform: translateY(calc(-1 * var(--f7-navbar-height)));\n opacity: 0 !important;\n}\n.ios .searchbar-expandable.searchbar-enabled {\n opacity: 1;\n height: var(--f7-searchbar-expandable-size);\n pointer-events: auto;\n}\n.md .searchbar-icon,\n.md .searchbar-disable-button {\n position: absolute;\n top: 50%;\n transition-duration: 300ms;\n}\n.md .searchbar-icon {\n width: 48px;\n height: 48px;\n left: 0;\n top: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n left: var(--f7-safe-area-left);\n}\n.md .searchbar-icon:after {\n width: auto;\n height: auto;\n content: 'search_md';\n line-height: 1.2;\n}\n.md .searchbar-disable-button {\n width: 48px;\n height: 48px;\n transform: rotate(-90deg) scale(0.5);\n font-size: 0 !important;\n display: block;\n margin-top: -24px;\n color: var(--f7-searchbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n left: calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left));\n}\n.md .searchbar-disable-button:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n line-height: 48px;\n content: 'arrow_left_md';\n}\n.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-disable-button {\n transform: rotate(0deg) scale(1);\n pointer-events: auto;\n opacity: 1;\n}\n.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-icon {\n opacity: 0;\n transform: rotate(90deg) scale(0.5);\n}\n.md .searchbar {\n --f7-searchbar-input-extra-padding-left: 34px;\n}\n.md .searchbar .input-clear-button {\n width: 48px;\n height: 48px;\n margin-top: -24px;\n right: 0;\n}\n.md .searchbar .input-clear-button:after {\n line-height: 48px;\n content: 'delete_round_md';\n opacity: 1;\n}\n.md .searchbar .input-clear-button:before {\n display: none;\n}\n.md .searchbar-inline {\n --f7-searchbar-input-extra-padding-left: 32px;\n}\n.md .page > .searchbar,\n.md .subnavbar .searchbar,\n.md .searchbar-expandable {\n --f7-searchbar-input-extra-padding-left: 34px;\n}\n.md .page > .searchbar .searchbar-disable-button,\n.md .subnavbar .searchbar .searchbar-disable-button,\n.md .searchbar-expandable .searchbar-disable-button {\n left: calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left));\n}\n.md .page > .searchbar .searchbar-icon,\n.md .subnavbar .searchbar .searchbar-icon,\n.md .searchbar-expandable .searchbar-icon {\n left: var(--f7-safe-area-left);\n}\n.md .searchbar-expandable {\n --f7-searchbar-inner-padding-left: 4px;\n --f7-searchbar-inner-padding-right: 4px;\n height: var(--f7-searchbar-expandable-size);\n opacity: 0;\n bottom: 0;\n border-radius: calc(var(--f7-searchbar-expandable-size));\n width: calc(var(--f7-searchbar-expandable-size));\n margin-top: calc(var(--f7-searchbar-expandable-size) * -1 / 2);\n transform: translate3d(0px, 0px, 0px);\n background-color: var(--f7-searchbar-input-bg-color);\n left: 100%;\n margin-left: calc(var(--f7-searchbar-expandable-size) * -1);\n}\n.md .searchbar-expandable.searchbar-enabled {\n width: 100%;\n border-radius: 0;\n opacity: 1;\n pointer-events: auto;\n margin-top: 0;\n left: 0;\n margin-left: 0;\n}\n/* === Messages === */\n:root {\n --f7-message-text-header-opacity: 0.65;\n --f7-message-text-header-font-size: 12px;\n --f7-message-text-footer-opacity: 0.65;\n --f7-message-text-footer-font-size: 12px;\n --f7-message-bubble-line-height: 1.2;\n --f7-message-header-font-size: 12px;\n --f7-message-footer-font-size: 11px;\n --f7-message-name-font-size: 12px;\n --f7-message-name-font-weight: inherit;\n --f7-message-avatar-border-radius: 50%;\n --f7-messages-title-font-weight: inherit;\n --f7-message-typing-indicator-bg-color: #000;\n}\n:root .dark,\n:root.dark {\n --f7-message-typing-indicator-bg-color: #fff;\n}\n.ios {\n --f7-message-text-header-text-color: inherit;\n --f7-message-text-footer-text-color: inherit;\n --f7-messages-title-font-size: 11px;\n --f7-message-avatar-size: 29px;\n --f7-message-margin: 10px;\n --f7-message-bubble-min-height: 32px;\n --f7-message-bubble-font-size: 17px;\n --f7-message-bubble-border-radius: 16px;\n --f7-message-bubble-padding-vertical: 6px;\n --f7-message-bubble-padding-horizontal: 16px;\n --f7-message-typing-indicator-opacity: 0.35;\n /*\n --f7-message-sent-bg-color: var(--f7-theme-color);\n */\n --f7-message-sent-text-color: #fff;\n --f7-messages-content-bg-color: #fff;\n --f7-message-received-text-color: #000;\n --f7-message-received-bg-color: #e5e5ea;\n --f7-messages-title-text-color: rgba(0, 0, 0, 0.45);\n --f7-message-header-text-color: rgba(0, 0, 0, 0.45);\n --f7-message-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-message-name-text-color: rgba(0, 0, 0, 0.45);\n}\n.ios .dark,\n.ios.dark {\n --f7-message-received-bg-color: #252525;\n --f7-message-received-text-color: #fff;\n --f7-messages-content-bg-color: transparent;\n --f7-messages-title-text-color: rgba(255, 255, 255, 0.54);\n --f7-message-header-text-color: rgba(255, 255, 255, 0.54);\n --f7-message-name-text-color: rgba(255, 255, 255, 0.54);\n --f7-message-footer-text-color: rgba(255, 255, 255, 0.54);\n}\n.md {\n --f7-messages-content-bg-color: transparent;\n --f7-messages-title-font-size: 12px;\n --f7-message-avatar-size: 32px;\n --f7-message-margin: 16px;\n --f7-message-bubble-min-height: 40px;\n --f7-message-bubble-font-size: 16px;\n --f7-message-bubble-border-radius: 20px;\n --f7-message-bubble-padding-vertical: 10px;\n --f7-message-bubble-padding-horizontal: 16px;\n --f7-message-typing-indicator-opacity: 0.6;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-message-sent-bg-color: var(--f7-md-primary);\n --f7-message-sent-text-color: var(--f7-md-on-primary);\n --f7-message-received-bg-color: var(--f7-md-surface-variant);\n --f7-message-received-text-color: var(--f7-md-on-surface);\n --f7-message-text-header-text-color: var(--f7-md-on-surface-variant);\n --f7-message-text-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-messages-title-text-color: var(--f7-md-on-surface-variant);\n --f7-message-header-text-color: var(--f7-md-on-surface-variant);\n --f7-message-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-message-name-text-color: var(--f7-md-on-surface-variant);\n}\n.messages-content,\n.messages {\n background: var(--f7-messages-content-bg-color);\n}\n.messages {\n display: flex;\n flex-direction: column;\n min-height: 100%;\n position: relative;\n z-index: 1;\n}\n.messages-title,\n.message {\n margin-top: var(--f7-message-margin);\n}\n.messages-title:last-child,\n.message:last-child {\n margin-bottom: var(--f7-message-margin);\n}\n.messages-title {\n text-align: center;\n width: 100%;\n line-height: 1;\n color: var(--f7-messages-title-text-color);\n font-size: var(--f7-messages-title-font-size);\n font-weight: var(--f7-messages-title-font-weight);\n}\n.message {\n max-width: 70%;\n box-sizing: border-box;\n display: flex;\n align-items: flex-end;\n position: relative;\n z-index: 1;\n transform: translate3d(0, 0, 0);\n}\n.message-avatar {\n border-radius: var(--f7-message-avatar-border-radius);\n position: relative;\n background-size: cover;\n align-self: flex-end;\n flex-shrink: 0;\n width: var(--f7-message-avatar-size);\n height: var(--f7-message-avatar-size);\n}\n.message-content {\n position: relative;\n display: flex;\n flex-direction: column;\n}\n.message-header,\n.message-footer,\n.message-name {\n line-height: 1;\n}\n.message-header {\n color: var(--f7-message-header-text-color);\n font-size: var(--f7-message-header-font-size);\n}\n.message-footer {\n color: var(--f7-message-footer-text-color);\n font-size: var(--f7-message-footer-font-size);\n margin-bottom: -1em;\n}\n.message-name {\n color: var(--f7-message-name-text-color);\n font-size: var(--f7-message-name-font-size);\n font-weight: var(--f7-message-name-font-weight);\n}\n.message-bubble {\n box-sizing: border-box;\n word-break: break-word;\n display: flex;\n flex-direction: column;\n position: relative;\n line-height: var(--f7-message-bubble-line-height);\n font-size: var(--f7-message-bubble-font-size);\n border-radius: var(--f7-message-bubble-border-radius);\n padding: var(--f7-message-bubble-padding-vertical) var(--f7-message-bubble-padding-horizontal);\n min-height: var(--f7-message-bubble-min-height);\n}\n.message-image img {\n display: block;\n max-width: 100%;\n height: auto;\n width: auto;\n}\n.message-text-header,\n.message-text-footer {\n line-height: 1;\n}\n.message-text-header {\n color: var(--f7-message-text-header-text-color);\n opacity: var(--f7-message-text-header-opacity);\n font-size: var(--f7-message-text-header-font-size);\n}\n.message-text-footer {\n color: var(--f7-message-text-footer-text-color);\n opacity: var(--f7-message-text-footer-opacity);\n font-size: var(--f7-message-text-footer-font-size);\n}\n.message-text {\n text-align: left;\n}\n.message-sent {\n text-align: right;\n flex-direction: row-reverse;\n align-self: flex-end;\n}\n.message-sent .message-bubble {\n color: var(--f7-message-sent-text-color);\n background: var(--f7-message-sent-bg-color, var(--f7-theme-color));\n}\n.message-sent .message-content {\n align-items: flex-end;\n}\n.message-received {\n flex-direction: row;\n}\n.message-received .message-bubble {\n color: var(--f7-message-received-text-color);\n background: var(--f7-message-received-bg-color);\n}\n.message-received .message-content {\n align-items: flex-start;\n}\n.message:not(.message-last) .message-avatar {\n opacity: 0;\n}\n.message:not(.message-first) .message-name {\n display: none;\n}\n.message.message-same-name .message-name {\n display: none;\n}\n.message.message-same-header .message-header {\n display: none;\n}\n.message.message-same-footer .message-footer {\n display: none;\n}\n.message-appear-from-bottom {\n animation: message-appear-from-bottom 300ms;\n}\n.message-appear-from-top {\n animation: message-appear-from-top 300ms;\n}\n.message-typing-indicator {\n display: inline-block;\n font-size: 0;\n vertical-align: middle;\n}\n.message-typing-indicator > div {\n display: inline-block;\n position: relative;\n background: var(--f7-message-typing-indicator-bg-color);\n opacity: var(--f7-message-typing-indicator-opacity);\n vertical-align: middle;\n border-radius: 50%;\n}\n@keyframes message-appear-from-bottom {\n from {\n transform: translate3d(0, 100%, 0);\n }\n to {\n transform: translate3d(0, 0, 0);\n }\n}\n@keyframes message-appear-from-top {\n from {\n transform: translate3d(0, -100%, 0);\n }\n to {\n transform: translate3d(0, 0, 0);\n }\n}\n.ios .messages-title b,\n.ios .message-header b,\n.ios .message-footer b,\n.ios .message-name b {\n font-weight: 600;\n}\n.ios .message-header,\n.ios .message-name {\n margin-bottom: 3px;\n}\n.ios .message-footer {\n margin-top: 3px;\n}\n.ios .message-bubble {\n min-width: 48px;\n}\n.ios .message-image {\n margin: var(--f7-message-bubble-padding-vertical) calc(-1 * var(--f7-message-bubble-padding-horizontal));\n}\n.ios .message-image:first-child {\n margin-top: calc(-1 * var(--f7-message-bubble-padding-vertical));\n}\n.ios .message-image:first-child img {\n border-top-left-radius: var(--f7-message-bubble-border-radius);\n border-top-right-radius: var(--f7-message-bubble-border-radius);\n}\n.ios .message-image:last-child {\n margin-bottom: calc(-1 * var(--f7-message-bubble-padding-vertical));\n}\n.ios .message-image:last-child img {\n border-bottom-left-radius: var(--f7-message-bubble-border-radius);\n border-bottom-right-radius: var(--f7-message-bubble-border-radius);\n}\n.ios .message-text-header {\n margin-bottom: 3px;\n}\n.ios .message-text-footer {\n margin-top: 3px;\n}\n.ios .message-received {\n margin-left: calc(10px + var(--f7-safe-area-left));\n}\n.ios .message-received .message-header,\n.ios .message-received .message-footer,\n.ios .message-received .message-name {\n margin-left: var(--f7-message-bubble-padding-horizontal);\n}\n.ios .message-received .message-bubble {\n padding-left: calc(var(--f7-message-bubble-padding-horizontal) + 6px);\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 42% 46% 56%;\n}\n.ios .message-received .message-image {\n margin-left: calc(-1 * (var(--f7-message-bubble-padding-horizontal) + 6px));\n}\n.ios .message-received.message-tail .message-bubble {\n border-radius: var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0;\n}\n.ios .message-received.message-tail:not(.message-typing) .message-bubble {\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 42% 46% 56%;\n}\n.ios .message-received.message-tail:not(.message-typing) .message-bubble .message-image:last-child img {\n border-bottom-left-radius: 0px;\n}\n.ios .message-sent {\n margin-right: calc(10px + var(--f7-safe-area-right));\n}\n.ios .message-sent .message-header,\n.ios .message-sent .message-footer,\n.ios .message-sent .message-name {\n margin-right: var(--f7-message-bubble-padding-horizontal);\n}\n.ios .message-sent .message-bubble {\n padding-right: calc(var(--f7-message-bubble-padding-horizontal) + 6px);\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 56% 46% 42%;\n}\n.ios .message-sent .message-image {\n margin-right: calc(-1 * (var(--f7-message-bubble-padding-horizontal) + 6px));\n}\n.ios .message-sent.message-tail .message-bubble {\n border-radius: var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0 var(--f7-message-bubble-border-radius);\n}\n.ios .message-sent.message-tail .message-bubble {\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 56% 46% 42%;\n}\n.ios .message-sent.message-tail .message-bubble .message-image:last-child img {\n border-bottom-right-radius: 0px;\n}\n.ios .message + .message:not(.message-first) {\n margin-top: 1px;\n}\n.ios .message-received.message-typing .message-content:after,\n.ios .message-received.message-typing .message-content:before {\n content: '';\n position: absolute;\n background: var(--f7-message-received-bg-color);\n border-radius: 50%;\n}\n.ios .message-received.message-typing .message-content:after {\n width: 11px;\n height: 11px;\n left: 4px;\n bottom: 0px;\n}\n.ios .message-received.message-typing .message-content:before {\n width: 6px;\n height: 6px;\n left: -1px;\n bottom: -4px;\n}\n.ios .message-typing-indicator > div {\n width: 9px;\n height: 9px;\n}\n.ios .message-typing-indicator > div + div {\n margin-left: 4px;\n}\n.ios .message-typing-indicator > div:nth-child(1) {\n animation: ios-message-typing-indicator 900ms infinite;\n}\n.ios .message-typing-indicator > div:nth-child(2) {\n animation: ios-message-typing-indicator 900ms 150ms infinite;\n}\n.ios .message-typing-indicator > div:nth-child(3) {\n animation: ios-message-typing-indicator 900ms 300ms infinite;\n}\n@keyframes ios-message-typing-indicator {\n 0% {\n opacity: 0.35;\n }\n 25% {\n opacity: 0.2;\n }\n 50% {\n opacity: 0.2;\n }\n}\n.md .messages-title b,\n.md .message-header b,\n.md .message-footer b,\n.md .message-name b {\n font-weight: 500;\n}\n.md .message-header,\n.md .message-name {\n margin-bottom: 2px;\n}\n.md .message-footer {\n margin-top: 2px;\n}\n.md .message-text-header {\n margin-bottom: 4px;\n}\n.md .message-text-footer {\n margin-top: 4px;\n}\n.md .message-image {\n margin: calc(-1 * var(--f7-message-bubble-padding-vertical)) calc(-1 * var(--f7-message-bubble-padding-horizontal));\n}\n.md .message-image,\n.md .message-image img {\n border-radius: var(--f7-message-bubble-border-radius);\n}\n.md .message-received {\n margin-left: calc(8px + var(--f7-safe-area-left));\n}\n.md .message-received .message-name,\n.md .message-received .message-header,\n.md .message-received .message-footer {\n margin-left: 16px;\n}\n.md .message-received.message-first:not(.message-last) .message-bubble,\n.md .message-received.message-first:not(.message-last) .message-image,\n.md .message-received.message-first:not(.message-last) .message-image img {\n border-bottom-left-radius: 4px;\n}\n.md .message-received.message-last:not(.message-first) .message-bubble,\n.md .message-received.message-last:not(.message-first) .message-image,\n.md .message-received.message-last:not(.message-first) .message-image img {\n border-top-left-radius: 4px;\n}\n.md .message-received:not(.message-last):not(.message-first) .message-bubble,\n.md .message-received:not(.message-last):not(.message-first) .message-image,\n.md .message-received:not(.message-last):not(.message-first) .message-image img {\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.md .message-received .message-avatar + .message-content {\n margin-left: 8px;\n}\n.md .message-sent {\n margin-right: calc(8px + var(--f7-safe-area-right));\n}\n.md .message-sent .message-name,\n.md .message-sent .message-header,\n.md .message-sent .message-footer {\n margin-right: 16px;\n}\n.md .message-sent.message-first:not(.message-last) .message-bubble,\n.md .message-sent.message-first:not(.message-last) .message-image,\n.md .message-sent.message-first:not(.message-last) .message-image img {\n border-bottom-right-radius: 4px;\n}\n.md .message-sent.message-last:not(.message-first) .message-bubble,\n.md .message-sent.message-last:not(.message-first) .message-image,\n.md .message-sent.message-last:not(.message-first) .message-image img {\n border-top-right-radius: 4px;\n}\n.md .message-sent:not(.message-last):not(.message-first) .message-bubble,\n.md .message-sent:not(.message-last):not(.message-first) .message-image,\n.md .message-sent:not(.message-last):not(.message-first) .message-image img {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.md .message-sent .message-avatar + .message-content {\n margin-right: var(--f7-message-bubble-padding-horizontal);\n}\n.md .message + .message:not(.message-first) {\n margin-top: 2px;\n}\n.md .message-typing-indicator > div {\n width: 6px;\n height: 6px;\n}\n.md .message-typing-indicator > div + div {\n margin-left: 6px;\n}\n.md .message-typing-indicator > div:nth-child(1) {\n animation: md-message-typing-indicator 900ms infinite;\n}\n.md .message-typing-indicator > div:nth-child(2) {\n animation: md-message-typing-indicator 900ms 150ms infinite;\n}\n.md .message-typing-indicator > div:nth-child(3) {\n animation: md-message-typing-indicator 900ms 300ms infinite;\n}\n@keyframes md-message-typing-indicator {\n 0% {\n transform: translateY(0%);\n }\n 25% {\n transform: translateY(-5px);\n }\n 50% {\n transform: translateY(0%);\n }\n}\n/* === Messagebar === */\n:root {\n --f7-messagebar-attachments-height: 155px;\n --f7-messagebar-sheet-height: 252px;\n --f7-messagebar-sheet-landscape-height: 192px;\n /*\n --f7-messagebar-inner-padding-left: var(--f7-toolbar-inner-padding-left);\n --f7-messagebar-inner-padding-right: var(--f7-toolbar-inner-padding-right);\n */\n}\n.ios {\n --f7-messagebar-height: 44px;\n --f7-messagebar-font-size: 17px;\n --f7-messagebar-textarea-bg-color: transparent;\n /*\n --f7-messagebar-link-color: var(--f7-theme-color);\n */\n --f7-messagebar-border-color: transparent;\n --f7-messagebar-textarea-border-radius: 17px;\n --f7-messagebar-textarea-padding: 6px 16px;\n --f7-messagebar-textarea-height: 34px;\n --f7-messagebar-textarea-font-size: 17px;\n --f7-messagebar-textarea-line-height: 20px;\n --f7-messagebar-sheet-bg-color: #d1d5da;\n --f7-messagebar-sheet-border-color: transparent;\n --f7-messagebar-attachment-border-radius: 12px;\n --f7-messagebar-attachment-height: 155px;\n --f7-messagebar-attachment-landscape-height: 120px;\n --f7-messagebar-textarea-placeholder-color: rgba(0, 0, 0, 0.4);\n --f7-messagebar-textarea-text-color: #000;\n --f7-messagebar-textarea-border: 1px solid #c8c8cd;\n --f7-messagebar-attachments-border-color: #c8c8cd;\n --f7-messagebar-bg-color: #fff;\n --f7-messagebar-bg-color-rgb: 255, 255, 255;\n}\n.ios .dark,\n.ios.dark {\n --f7-messagebar-textarea-placeholder-color: rgba(255, 255, 255, 0.4);\n --f7-messagebar-textarea-text-color: #fff;\n --f7-messagebar-textarea-border: 1px solid var(--f7-bars-border-color);\n --f7-messagebar-attachments-border-color: var(--f7-bars-border-color);\n --f7-messagebar-bg-color: var(--f7-bars-bg-color);\n --f7-messagebar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n}\n.md {\n --f7-messagebar-height: 64px;\n --f7-messagebar-font-size: 16px;\n --f7-messagebar-textarea-border-radius: 24px;\n --f7-messagebar-textarea-padding: 12px 16px;\n --f7-messagebar-textarea-height: 48px;\n --f7-messagebar-textarea-font-size: 16px;\n --f7-messagebar-textarea-line-height: 22px;\n --f7-messagebar-textarea-border: 1px solid transparent;\n --f7-messagebar-attachment-border-radius: 12px;\n --f7-messagebar-attachment-height: 72px;\n --f7-messagebar-attachment-landscape-height: 72px;\n --f7-messagebar-border-color: transparent;\n --f7-messagebar-attachments-border-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-messagebar-textarea-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-messagebar-textarea-bg-color: var(--f7-md-surface-variant);\n --f7-messagebar-bg-color: var(--f7-md-surface);\n --f7-messagebar-textarea-text-color: var(--f7-md-on-surface);\n --f7-messagebar-sheet-bg-color: var(--f7-md-surface);\n --f7-messagebar-sheet-border-color: var(--f7-md-outline-variant);\n --f7-messagebar-link-color: var(--f7-md-on-surface);\n}\n.messagebar {\n transform: translate3d(0, 0, 0);\n background: var(--f7-messagebar-bg-color);\n height: auto;\n min-height: var(--f7-messagebar-height);\n font-size: var(--f7-messagebar-font-size);\n padding-bottom: var(--f7-safe-area-bottom);\n bottom: 0;\n}\n.messagebar:before {\n content: '';\n position: absolute;\n background-color: var(--f7-messagebar-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .messagebar {\n background-color: rgba(var(--f7-messagebar-bg-color-rgb), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.messagebar.no-outline:before {\n display: none !important;\n}\n.messagebar.toolbar-hidden:after {\n display: none !important;\n}\n.messagebar .toolbar-inner {\n top: auto;\n position: relative;\n height: auto;\n bottom: auto;\n padding-left: calc(var(--f7-messagebar-inner-padding-left, var(--f7-toolbar-inner-padding-left)) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-messagebar-inner-padding-right, var(--f7-toolbar-inner-padding-right)) + var(--f7-safe-area-right));\n}\n.messagebar.messagebar-sheet-visible > .toolbar-inner {\n bottom: 0;\n}\n.messagebar .messagebar-area {\n width: 100%;\n flex-shrink: 1;\n overflow: hidden;\n position: relative;\n}\n.messagebar textarea {\n width: 100%;\n flex-shrink: 1;\n background-color: var(--f7-messagebar-textarea-bg-color);\n border-radius: var(--f7-messagebar-textarea-border-radius);\n padding: var(--f7-messagebar-textarea-padding);\n height: var(--f7-messagebar-textarea-height);\n color: var(--f7-messagebar-textarea-text-color);\n font-size: var(--f7-messagebar-textarea-font-size);\n line-height: var(--f7-messagebar-textarea-line-height);\n border: var(--f7-messagebar-textarea-border);\n}\n.messagebar textarea::placeholder {\n color: var(--f7-messagebar-textarea-placeholder-color);\n}\n.messagebar a.link {\n align-self: flex-end;\n flex-shrink: 0;\n color: var(--f7-messagebar-link-color, var(--f7-theme-color));\n}\n.messagebar-attachments {\n width: 100%;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n font-size: 0;\n white-space: nowrap;\n box-sizing: border-box;\n position: relative;\n}\n.messagebar:not(.messagebar-attachments-visible) .messagebar-attachments {\n display: none;\n}\n.messagebar-attachment {\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n display: inline-block;\n vertical-align: middle;\n white-space: normal;\n height: var(--f7-messagebar-attachment-height);\n position: relative;\n border-radius: var(--f7-messagebar-attachment-border-radius);\n}\n@media (orientation: landscape) {\n .messagebar-attachment {\n height: var(--f7-messagebar-attachment-landscape-height);\n }\n}\n.messagebar-attachment img {\n display: block;\n width: auto;\n height: 100%;\n border-radius: var(--f7-messagebar-attachment-border-radius);\n}\n.messagebar-sheet {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n display: flex;\n flex-wrap: wrap;\n flex-direction: column;\n align-content: flex-start;\n height: var(--f7-messagebar-sheet-height);\n background-color: var(--f7-messagebar-sheet-bg-color);\n border-top: 1px solid var(--f7-messagebar-sheet-border-color);\n padding-left: var(--f7-safe-area-left);\n padding-right: var(--f7-safe-area-right);\n}\n@media (orientation: landscape) {\n .messagebar-sheet {\n height: var(--f7-messagebar-sheet-landscape-height);\n }\n}\n.messagebar-sheet-image {\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n}\n.messagebar-sheet-image > img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n border-radius: inherit;\n transition-duration: 200ms;\n}\n.messagebar-attachment-delete {\n display: block;\n position: absolute;\n border-radius: 50%;\n box-sizing: border-box;\n cursor: pointer;\n}\n.messagebar-attachment-delete:after,\n.messagebar-attachment-delete:before {\n position: absolute;\n content: '';\n left: 50%;\n top: 50%;\n}\n.messagebar-attachment-delete:after {\n transform: rotate(45deg);\n}\n.messagebar-attachment-delete:before {\n transform: rotate(-45deg);\n}\n.messagebar:not(.messagebar-sheet-visible) .messagebar-sheet {\n display: none;\n}\n.messagebar ~ * {\n --f7-page-toolbar-bottom-offset: var(--f7-messagebar-height);\n}\n.ios .messagebar a.link.icon-only:first-child {\n margin-left: -8px;\n}\n.ios .messagebar a.link.icon-only:last-child {\n margin-right: -8px;\n}\n.ios .messagebar a.link:not(.icon-only) + .messagebar-area {\n margin-left: 8px;\n}\n.ios .messagebar .messagebar-area + a.link:not(.icon-only) {\n margin-left: 8px;\n}\n.ios .messagebar-area {\n margin-top: 5px;\n margin-bottom: 5px;\n}\n.ios .messagebar-attachments {\n padding: 5px;\n border-radius: var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;\n border: 1px solid var(--f7-messagebar-attachments-border-color);\n border-bottom: none;\n}\n.ios .messagebar-attachments-visible .messagebar-attachments + textarea {\n border-radius: 0 0 var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius);\n}\n.ios .messagebar-attachment {\n font-size: 14px;\n}\n.ios .messagebar-attachment + .messagebar-attachment {\n margin-left: 8px;\n}\n.ios .messagebar-attachment-delete {\n right: 5px;\n top: 5px;\n width: 20px;\n height: 20px;\n background: #7d7e80;\n border: 2px solid #fff;\n box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);\n}\n.ios .messagebar-attachment-delete:after,\n.ios .messagebar-attachment-delete:before {\n width: 10px;\n height: 2px;\n background: #fff;\n margin-left: -5px;\n margin-top: -1px;\n}\n.ios .messagebar-sheet-image,\n.ios .messagebar-sheet-item {\n box-sizing: border-box;\n flex-shrink: 0;\n margin-top: 1px;\n position: relative;\n overflow: hidden;\n height: calc((var(--f7-messagebar-sheet-height) - 2px) / 2);\n width: calc((var(--f7-messagebar-sheet-height) - 2px) / 2);\n margin-left: 1px;\n}\n@media (orientation: landscape) {\n .ios .messagebar-sheet-image,\n .ios .messagebar-sheet-item {\n width: calc((var(--f7-messagebar-sheet-landscape-height) - 2px) / 2);\n height: calc((var(--f7-messagebar-sheet-landscape-height) - 2px) / 2);\n }\n}\n.ios .messagebar-sheet-image .icon-checkbox,\n.ios .messagebar-sheet-item .icon-checkbox,\n.ios .messagebar-sheet-image .icon-radio,\n.ios .messagebar-sheet-item .icon-radio {\n position: absolute;\n right: 8px;\n bottom: 8px;\n z-index: 1;\n}\n.md .messagebar {\n --f7-toolbar-link-height: var(--f7-messagebar-height);\n}\n.md .messagebar-attachments {\n padding: 16px 16px 0;\n border-bottom: 1px solid var(--f7-messagebar-attachments-border-color);\n}\n.md .messagebar-attachment img {\n width: var(--f7-messagebar-attachment-height);\n height: var(--f7-messagebar-attachment-height);\n object-fit: cover;\n object-position: center;\n}\n.md .messagebar-attachment + .messagebar-attachment {\n margin-left: 16px;\n}\n.md .messagebar-attachments-visible .messagebar-attachments {\n background: var(--f7-messagebar-textarea-bg-color);\n border-radius: var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;\n}\n.md .messagebar-attachments-visible textarea {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.md .messagebar-area {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.md .messagebar-attachment-delete {\n right: -6px;\n top: -6px;\n width: 24px;\n height: 24px;\n background-color: var(--f7-md-inverse-surface);\n border-radius: 24px;\n border: 2px solid var(--f7-messagebar-textarea-bg-color);\n}\n.md .messagebar-attachment-delete:after,\n.md .messagebar-attachment-delete:before {\n width: 12px;\n height: 2px;\n background: var(--f7-messagebar-textarea-bg-color);\n margin-left: -6px;\n margin-top: -1px;\n}\n.md .messagebar-sheet-image,\n.md .messagebar-sheet-item {\n --f7-touch-ripple-color: transparent;\n box-sizing: border-box;\n flex-shrink: 0;\n margin-top: 8px;\n position: relative;\n overflow: hidden;\n height: calc((var(--f7-messagebar-sheet-height) - 24px) / 2);\n width: calc((var(--f7-messagebar-sheet-height) - 24px) / 2);\n border-radius: 4px;\n margin-left: 8px;\n}\n@media (orientation: landscape) {\n .md .messagebar-sheet-image,\n .md .messagebar-sheet-item {\n width: calc((var(--f7-messagebar-sheet-landscape-height) - 8px) / 2);\n height: calc((var(--f7-messagebar-sheet-landscape-height) - 24px) / 2);\n }\n}\n.md .messagebar-sheet-image input:checked ~ img,\n.md .messagebar-sheet-item input:checked ~ img {\n transform: scale(0.85);\n}\n.md .messagebar-sheet-image input:checked ~ .icon-checkbox,\n.md .messagebar-sheet-item input:checked ~ .icon-checkbox,\n.md .messagebar-sheet-image input:checked ~ .icon-radio,\n.md .messagebar-sheet-item input:checked ~ .icon-radio {\n transform: translate(-50%, -50%) scale(1);\n}\n.md .messagebar-sheet-image .icon-checkbox,\n.md .messagebar-sheet-item .icon-checkbox,\n.md .messagebar-sheet-image .icon-radio,\n.md .messagebar-sheet-item .icon-radio {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%) scale(0.85);\n border: none;\n z-index: 1;\n --f7-checkbox-inactive-color: var(--f7-md-surface);\n --f7-checkbox-active-color: var(--f7-md-surface);\n}\n.md .messagebar-sheet-image .icon-checkbox::after,\n.md .messagebar-sheet-item .icon-checkbox::after,\n.md .messagebar-sheet-image .icon-radio::after,\n.md .messagebar-sheet-item .icon-radio::after {\n color: var(--f7-md-on-surface);\n font-size: 18px;\n width: auto;\n height: 100%;\n line-height: 32px;\n left: 0;\n position: static;\n}\n/* === Swiper === */\n/**\n * Swiper 10.2.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: August 17, 2023\n */\n\n/* FONT_START */\n@font-face {\n font-family: 'swiper-icons';\n src: url('data:application/font-woff;charset=utf-8;base64, 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');\n font-weight: 400;\n font-style: normal;\n}\n/* FONT_END */\n:root {\n --swiper-theme-color: #007aff;\n /*\n --swiper-preloader-color: var(--swiper-theme-color);\n --swiper-wrapper-transition-timing-function: initial;\n */\n}\n:host {\n position: relative;\n display: block;\n margin-left: auto;\n margin-right: auto;\n z-index: 1;\n}\n.swiper {\n margin-left: auto;\n margin-right: auto;\n position: relative;\n overflow: hidden;\n overflow: clip;\n list-style: none;\n padding: 0;\n /* Fix of Webkit flickering */\n z-index: 1;\n display: block;\n}\n.swiper-vertical > .swiper-wrapper {\n flex-direction: column;\n}\n.swiper-wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n z-index: 1;\n display: flex;\n transition-property: transform;\n transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial);\n box-sizing: content-box;\n}\n.swiper-android .swiper-slide,\n.swiper-ios .swiper-slide,\n.swiper-wrapper {\n transform: translate3d(0px, 0, 0);\n}\n.swiper-horizontal {\n touch-action: pan-y;\n}\n.swiper-vertical {\n touch-action: pan-x;\n}\n.swiper-slide {\n flex-shrink: 0;\n width: 100%;\n height: 100%;\n position: relative;\n transition-property: transform;\n display: block;\n}\n.swiper-slide-invisible-blank {\n visibility: hidden;\n}\n/* Auto Height */\n.swiper-autoheight,\n.swiper-autoheight .swiper-slide {\n height: auto;\n}\n.swiper-autoheight .swiper-wrapper {\n align-items: flex-start;\n transition-property: transform, height;\n}\n.swiper-backface-hidden .swiper-slide {\n transform: translateZ(0);\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n/* 3D Effects */\n.swiper-3d.swiper-css-mode .swiper-wrapper {\n perspective: 1200px;\n}\n.swiper-3d .swiper-wrapper {\n transform-style: preserve-3d;\n}\n.swiper-3d {\n perspective: 1200px;\n}\n.swiper-3d .swiper-slide,\n.swiper-3d .swiper-cube-shadow {\n transform-style: preserve-3d;\n}\n/* CSS Mode */\n.swiper-css-mode > .swiper-wrapper {\n overflow: auto;\n scrollbar-width: none;\n /* For Firefox */\n -ms-overflow-style: none;\n /* For Internet Explorer and Edge */\n}\n.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar {\n display: none;\n}\n.swiper-css-mode > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: start start;\n}\n.swiper-css-mode.swiper-horizontal > .swiper-wrapper {\n scroll-snap-type: x mandatory;\n}\n.swiper-css-mode.swiper-vertical > .swiper-wrapper {\n scroll-snap-type: y mandatory;\n}\n.swiper-css-mode.swiper-free-mode > .swiper-wrapper {\n scroll-snap-type: none;\n}\n.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: none;\n}\n.swiper-css-mode.swiper-centered > .swiper-wrapper::before {\n content: '';\n flex-shrink: 0;\n order: 9999;\n}\n.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: center center;\n scroll-snap-stop: always;\n}\n.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child {\n margin-inline-start: var(--swiper-centered-offset-before);\n}\n.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before {\n height: 100%;\n min-height: 1px;\n width: var(--swiper-centered-offset-after);\n}\n.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child {\n margin-block-start: var(--swiper-centered-offset-before);\n}\n.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before {\n width: 100%;\n min-width: 1px;\n height: var(--swiper-centered-offset-after);\n}\n/* Slide styles start */\n/* 3D Shadows */\n.swiper-3d .swiper-slide-shadow,\n.swiper-3d .swiper-slide-shadow-left,\n.swiper-3d .swiper-slide-shadow-right,\n.swiper-3d .swiper-slide-shadow-top,\n.swiper-3d .swiper-slide-shadow-bottom,\n.swiper-3d .swiper-slide-shadow,\n.swiper-3d .swiper-slide-shadow-left,\n.swiper-3d .swiper-slide-shadow-right,\n.swiper-3d .swiper-slide-shadow-top,\n.swiper-3d .swiper-slide-shadow-bottom {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 10;\n}\n.swiper-3d .swiper-slide-shadow {\n background: rgba(0, 0, 0, 0.15);\n}\n.swiper-3d .swiper-slide-shadow-left {\n background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-right {\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-top {\n background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-bottom {\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-lazy-preloader {\n width: 42px;\n height: 42px;\n position: absolute;\n left: 50%;\n top: 50%;\n margin-left: -21px;\n margin-top: -21px;\n z-index: 10;\n transform-origin: 50%;\n box-sizing: border-box;\n border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));\n border-radius: 50%;\n border-top-color: transparent;\n}\n.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader,\n.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader {\n animation: swiper-preloader-spin 1s infinite linear;\n}\n.swiper-lazy-preloader-white {\n --swiper-preloader-color: #fff;\n}\n.swiper-lazy-preloader-black {\n --swiper-preloader-color: #000;\n}\n@keyframes swiper-preloader-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n/* Slide styles end */\n.swiper-virtual .swiper-slide {\n -webkit-backface-visibility: hidden;\n transform: translateZ(0);\n}\n.swiper-virtual.swiper-css-mode .swiper-wrapper::after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n pointer-events: none;\n}\n.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after {\n height: 1px;\n width: var(--swiper-virtual-size);\n}\n.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after {\n width: 1px;\n height: var(--swiper-virtual-size);\n}\n:root {\n --swiper-navigation-size: 44px;\n /*\n --swiper-navigation-top-offset: 50%;\n --swiper-navigation-sides-offset: 10px;\n --swiper-navigation-color: var(--swiper-theme-color);\n */\n}\n.swiper-button-prev,\n.swiper-button-next {\n position: absolute;\n top: var(--swiper-navigation-top-offset, 50%);\n width: calc(var(--swiper-navigation-size) / 44 * 27);\n height: var(--swiper-navigation-size);\n margin-top: calc(0px - (var(--swiper-navigation-size) / 2));\n z-index: 10;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--swiper-navigation-color, var(--swiper-theme-color));\n}\n.swiper-button-prev.swiper-button-disabled,\n.swiper-button-next.swiper-button-disabled {\n opacity: 0.35;\n cursor: auto;\n pointer-events: none;\n}\n.swiper-button-prev.swiper-button-hidden,\n.swiper-button-next.swiper-button-hidden {\n opacity: 0;\n cursor: auto;\n pointer-events: none;\n}\n.swiper-navigation-disabled .swiper-button-prev,\n.swiper-navigation-disabled .swiper-button-next {\n display: none !important;\n}\n.swiper-button-prev svg,\n.swiper-button-next svg {\n width: 100%;\n height: 100%;\n object-fit: contain;\n transform-origin: center;\n}\n.swiper-rtl .swiper-button-prev svg,\n.swiper-rtl .swiper-button-next svg {\n transform: rotate(180deg);\n}\n.swiper-button-prev,\n.swiper-rtl .swiper-button-next {\n left: var(--swiper-navigation-sides-offset, 10px);\n right: auto;\n}\n.swiper-button-next,\n.swiper-rtl .swiper-button-prev {\n right: var(--swiper-navigation-sides-offset, 10px);\n left: auto;\n}\n.swiper-button-lock {\n display: none;\n}\n/* Navigation font start */\n.swiper-button-prev:after,\n.swiper-button-next:after {\n font-family: swiper-icons;\n font-size: var(--swiper-navigation-size);\n text-transform: none !important;\n letter-spacing: 0;\n font-variant: initial;\n line-height: 1;\n}\n.swiper-button-prev:after,\n.swiper-rtl .swiper-button-next:after {\n content: 'prev';\n}\n.swiper-button-next,\n.swiper-rtl .swiper-button-prev {\n right: var(--swiper-navigation-sides-offset, 10px);\n left: auto;\n}\n.swiper-button-next:after,\n.swiper-rtl .swiper-button-prev:after {\n content: 'next';\n}\n/* Navigation font end */\n:root {\n /*\n --swiper-pagination-color: var(--swiper-theme-color);\n --swiper-pagination-left: auto;\n --swiper-pagination-right: 8px;\n --swiper-pagination-bottom: 8px;\n --swiper-pagination-top: auto;\n --swiper-pagination-fraction-color: inherit;\n --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25);\n --swiper-pagination-progressbar-size: 4px;\n --swiper-pagination-bullet-size: 8px;\n --swiper-pagination-bullet-width: 8px;\n --swiper-pagination-bullet-height: 8px;\n --swiper-pagination-bullet-border-radius: 50%;\n --swiper-pagination-bullet-inactive-color: #000;\n --swiper-pagination-bullet-inactive-opacity: 0.2;\n --swiper-pagination-bullet-opacity: 1;\n --swiper-pagination-bullet-horizontal-gap: 4px;\n --swiper-pagination-bullet-vertical-gap: 6px;\n */\n}\n.swiper-pagination {\n position: absolute;\n text-align: center;\n transition: 300ms opacity;\n transform: translate3d(0, 0, 0);\n z-index: 10;\n}\n.swiper-pagination.swiper-pagination-hidden {\n opacity: 0;\n}\n.swiper-pagination-disabled > .swiper-pagination,\n.swiper-pagination.swiper-pagination-disabled {\n display: none !important;\n}\n/* Common Styles */\n.swiper-pagination-fraction,\n.swiper-pagination-custom,\n.swiper-horizontal > .swiper-pagination-bullets,\n.swiper-pagination-bullets.swiper-pagination-horizontal {\n bottom: var(--swiper-pagination-bottom, 8px);\n top: var(--swiper-pagination-top, auto);\n left: 0;\n width: 100%;\n}\n/* Bullets */\n.swiper-pagination-bullets-dynamic {\n overflow: hidden;\n font-size: 0;\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transform: scale(0.33);\n position: relative;\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {\n transform: scale(1);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {\n transform: scale(1);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {\n transform: scale(0.66);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {\n transform: scale(0.33);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {\n transform: scale(0.66);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {\n transform: scale(0.33);\n}\n.swiper-pagination-bullet {\n width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px));\n height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px));\n display: inline-block;\n border-radius: var(--swiper-pagination-bullet-border-radius, 50%);\n background: var(--swiper-pagination-bullet-inactive-color, #000);\n opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2);\n}\nbutton.swiper-pagination-bullet {\n border: none;\n margin: 0;\n padding: 0;\n box-shadow: none;\n -webkit-appearance: none;\n appearance: none;\n}\n.swiper-pagination-clickable .swiper-pagination-bullet {\n cursor: pointer;\n}\n.swiper-pagination-bullet:only-child {\n display: none !important;\n}\n.swiper-pagination-bullet-active {\n opacity: var(--swiper-pagination-bullet-opacity, 1);\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\n}\n.swiper-vertical > .swiper-pagination-bullets,\n.swiper-pagination-vertical.swiper-pagination-bullets {\n right: var(--swiper-pagination-right, 8px);\n left: var(--swiper-pagination-left, auto);\n top: 50%;\n transform: translate3d(0px, -50%, 0);\n}\n.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet,\n.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet {\n margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0;\n display: block;\n}\n.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,\n.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\n top: 50%;\n transform: translateY(-50%);\n width: 8px;\n}\n.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,\n.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n display: inline-block;\n transition: 200ms transform, 200ms top;\n}\n.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet,\n.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet {\n margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px);\n}\n.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,\n.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\n left: 50%;\n transform: translateX(-50%);\n white-space: nowrap;\n}\n.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,\n.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transition: 200ms transform, 200ms left;\n}\n.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transition: 200ms transform, 200ms right;\n}\n/* Fraction */\n.swiper-pagination-fraction {\n color: var(--swiper-pagination-fraction-color, inherit);\n}\n/* Progress */\n.swiper-pagination-progressbar {\n background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25));\n position: absolute;\n}\n.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n transform: scale(0);\n transform-origin: left top;\n}\n.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n transform-origin: right top;\n}\n.swiper-horizontal > .swiper-pagination-progressbar,\n.swiper-pagination-progressbar.swiper-pagination-horizontal,\n.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,\n.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite {\n width: 100%;\n height: var(--swiper-pagination-progressbar-size, 4px);\n left: 0;\n top: 0;\n}\n.swiper-vertical > .swiper-pagination-progressbar,\n.swiper-pagination-progressbar.swiper-pagination-vertical,\n.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,\n.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite {\n width: var(--swiper-pagination-progressbar-size, 4px);\n height: 100%;\n left: 0;\n top: 0;\n}\n.swiper-pagination-lock {\n display: none;\n}\n:root {\n /*\n --swiper-scrollbar-border-radius: 10px;\n --swiper-scrollbar-top: auto;\n --swiper-scrollbar-bottom: 4px;\n --swiper-scrollbar-left: auto;\n --swiper-scrollbar-right: 4px;\n --swiper-scrollbar-sides-offset: 1%;\n --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1);\n --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5);\n --swiper-scrollbar-size: 4px;\n */\n}\n.swiper-scrollbar {\n border-radius: var(--swiper-scrollbar-border-radius, 10px);\n position: relative;\n -ms-touch-action: none;\n background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1));\n}\n.swiper-scrollbar-disabled > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-disabled {\n display: none !important;\n}\n.swiper-horizontal > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-horizontal {\n position: absolute;\n left: var(--swiper-scrollbar-sides-offset, 1%);\n bottom: var(--swiper-scrollbar-bottom, 4px);\n top: var(--swiper-scrollbar-top, auto);\n z-index: 50;\n height: var(--swiper-scrollbar-size, 4px);\n width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%));\n}\n.swiper-vertical > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-vertical {\n position: absolute;\n left: var(--swiper-scrollbar-left, auto);\n right: var(--swiper-scrollbar-right, 4px);\n top: var(--swiper-scrollbar-sides-offset, 1%);\n z-index: 50;\n width: var(--swiper-scrollbar-size, 4px);\n height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%));\n}\n.swiper-scrollbar-drag {\n height: 100%;\n width: 100%;\n position: relative;\n background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5));\n border-radius: var(--swiper-scrollbar-border-radius, 10px);\n left: 0;\n top: 0;\n}\n.swiper-scrollbar-cursor-drag {\n cursor: move;\n}\n.swiper-scrollbar-lock {\n display: none;\n}\n/* Zoom container styles start */\n.swiper-zoom-container {\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n}\n.swiper-zoom-container > img,\n.swiper-zoom-container > svg,\n.swiper-zoom-container > canvas {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n}\n/* Zoom container styles end */\n.swiper-slide-zoomed {\n cursor: move;\n touch-action: none;\n}\n/* a11y */\n.swiper .swiper-notification {\n position: absolute;\n left: 0;\n top: 0;\n pointer-events: none;\n opacity: 0;\n z-index: -1000;\n}\n.swiper-free-mode > .swiper-wrapper {\n transition-timing-function: ease-out;\n margin: 0 auto;\n}\n.swiper-grid > .swiper-wrapper {\n flex-wrap: wrap;\n}\n.swiper-grid-column > .swiper-wrapper {\n flex-wrap: wrap;\n flex-direction: column;\n}\n.swiper-fade.swiper-free-mode .swiper-slide {\n transition-timing-function: ease-out;\n}\n.swiper-fade .swiper-slide {\n pointer-events: none;\n transition-property: opacity;\n}\n.swiper-fade .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-fade .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-fade .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-cube {\n overflow: visible;\n}\n.swiper-cube .swiper-slide {\n pointer-events: none;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n z-index: 1;\n visibility: hidden;\n transform-origin: 0 0;\n width: 100%;\n height: 100%;\n}\n.swiper-cube .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-cube.swiper-rtl .swiper-slide {\n transform-origin: 100% 0;\n}\n.swiper-cube .swiper-slide-active,\n.swiper-cube .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-cube .swiper-slide-active,\n.swiper-cube .swiper-slide-next,\n.swiper-cube .swiper-slide-prev {\n pointer-events: auto;\n visibility: visible;\n}\n.swiper-cube .swiper-cube-shadow {\n position: absolute;\n left: 0;\n bottom: 0px;\n width: 100%;\n height: 100%;\n opacity: 0.6;\n z-index: 0;\n}\n.swiper-cube .swiper-cube-shadow:before {\n content: '';\n background: #000;\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n filter: blur(50px);\n}\n.swiper-cube .swiper-slide-next + .swiper-slide {\n pointer-events: auto;\n visibility: visible;\n}\n/* Cube slide shadows start */\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top,\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right {\n z-index: 0;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n/* Cube slide shadows end */\n.swiper-flip {\n overflow: visible;\n}\n.swiper-flip .swiper-slide {\n pointer-events: none;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n z-index: 1;\n}\n.swiper-flip .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-flip .swiper-slide-active,\n.swiper-flip .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n/* Flip slide shadows start */\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top,\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right {\n z-index: 0;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n/* Flip slide shadows end */\n.swiper-creative .swiper-slide {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n overflow: hidden;\n transition-property: transform, opacity, height;\n}\n.swiper-cards {\n overflow: visible;\n}\n.swiper-cards .swiper-slide {\n transform-origin: center bottom;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n overflow: hidden;\n}\n\n/* === Photo Browser === */\n:root {\n --f7-photobrowser-bg-color: #fff;\n --f7-photobrowser-bars-bg-color: rgba(var(--f7-bars-bg-color-rgb), 0.95);\n --f7-photobrowser-bars-text-color: var(--f7-bars-text-color);\n --f7-photobrowser-bars-link-color: var(--f7-bars-link-color);\n --f7-photobrowser-caption-font-size: 13px;\n --f7-photobrowser-caption-font-weight: 500;\n --f7-photobrowser-caption-light-text-color: #000;\n --f7-photobrowser-caption-dark-text-color: #fff;\n --f7-photobrowser-exposed-bg-color: #000;\n --f7-photobrowser-dark-bg-color: #000;\n --f7-photobrowser-dark-bars-bg-color: rgba(27, 27, 27, 0.8);\n --f7-photobrowser-dark-bars-text-color: #fff;\n --f7-photobrowser-dark-bars-link-color: #fff;\n}\n.photo-browser {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 400;\n}\n.photo-browser-standalone.modal-in {\n transition-duration: 0ms;\n animation: photo-browser-in 400ms;\n}\n.photo-browser-standalone.modal-out {\n transition-duration: 0ms;\n animation: photo-browser-out 400ms !important;\n}\n.photo-browser-standalone.modal-out.swipe-close-to-bottom,\n.photo-browser-standalone.modal-out.swipe-close-to-top {\n animation: none !important;\n}\n.photo-browser-standalone.photo-browser-transitioning {\n transition: 400ms;\n animation: none !important;\n}\n.photo-browser-popup.modal-out.swipe-close-to-bottom,\n.photo-browser-popup.modal-out.swipe-close-to-top {\n transition-duration: 300ms;\n}\n.photo-browser-popup.modal-out.swipe-close-to-bottom {\n transform: translate3d(0, 100vh, 0);\n}\n.photo-browser-popup.modal-out.swipe-close-to-top {\n transform: translate3d(0, -100vh, 0);\n}\n.photo-browser-page {\n background: none;\n}\n.photo-browser-page .toolbar {\n transform: none;\n}\n.photo-browser-popup {\n background: none;\n}\n.photo-browser-of {\n margin: 0 5px;\n}\n.photo-browser-captions {\n pointer-events: none;\n position: absolute;\n left: 0;\n width: 100%;\n bottom: var(--f7-safe-area-bottom);\n z-index: 10;\n opacity: 1;\n transition-duration: 400ms;\n}\n.photo-browser-captions.photo-browser-captions-exposed {\n opacity: 0;\n}\n.toolbar ~ .toolbar.photo-browser-thumbs {\n bottom: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n}\n.page ~ .photo-browser-page:not(.photo-browser-exposed) .toolbar ~ .toolbar.photo-browser-thumbs,\n.photo-browser-popup:not(.photo-browser-exposed) .toolbar ~ .toolbar.photo-browser-thumbs,\n.photo-browser-standalone:not(.photo-browser-exposed) .toolbar ~ .toolbar.photo-browser-thumbs {\n height: var(--f7-toolbar-height);\n}\n.photo-browser-exposed .toolbar ~ .toolbar.photo-browser-thumbs {\n transform: translate3d(0, calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom, 0)), 0);\n}\n.photo-browser-exposed .toolbar ~ .toolbar.photo-browser-thumbs .swiper {\n height: calc(100% - var(--f7-safe-area-bottom, 0));\n}\n.navbar + .toolbar.photo-browser-thumbs .swiper {\n height: calc(100% - var(--f7-safe-area-bottom, 0));\n}\n.toolbar ~ .photo-browser-captions {\n bottom: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n transform: translate3d(0, 0px, 0);\n}\n.toolbar ~ .photo-browser-captions.photo-browser-captions-exposed {\n transform: translate3d(0, 0px, 0);\n}\n.toolbar ~ .toolbar ~ .photo-browser-captions {\n bottom: calc(var(--f7-toolbar-height) * 2 + var(--f7-safe-area-bottom));\n}\n.toolbar ~ .toolbar ~ .photo-browser-captions.photo-browser-captions-exposed {\n transform: translate3d(0, var(--f7-toolbar-height), 0);\n}\n.photo-browser-thumbs {\n transition-property: transform, background-color, color;\n}\n.photo-browser-thumbs .swiper {\n width: 100%;\n height: 100%;\n}\n.photo-browser-thumbs .swiper-slide {\n width: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.photo-browser-thumbs img {\n width: auto;\n height: 75%;\n display: block;\n border-radius: 2px;\n min-width: 4px;\n}\n.photo-browser-thumbs .swiper-slide img {\n transform: translateX(-4px);\n transition-duration: 150ms;\n}\n.photo-browser-thumbs .swiper-slide-active img {\n transform: scale(1.2);\n}\n.photo-browser-thumbs .swiper-slide-active ~ .swiper-slide img {\n transform: translateX(4px);\n}\n.photo-browser-caption {\n box-sizing: border-box;\n transition-duration: 400ms;\n position: absolute;\n bottom: 0;\n left: 0;\n opacity: 0;\n padding: 4px 5px;\n width: 100%;\n text-align: center;\n font-size: var(--f7-photobrowser-caption-font-size);\n font-weight: var(--f7-photobrowser-caption-font-weight);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .photo-browser-caption {\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.photo-browser-caption:empty {\n display: none;\n}\n.photo-browser-caption.photo-browser-caption-active {\n opacity: 1;\n}\n.photo-browser-captions-light .photo-browser-caption {\n color: var(--f7-photobrowser-caption-light-text-color);\n}\n.photo-browser-captions-dark .photo-browser-caption,\n.dark .photo-browser-caption {\n color: var(--f7-photobrowser-caption-dark-text-color);\n}\n.photo-browser-swiper-container {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n background: var(--f7-photobrowser-bg-color);\n transition: 400ms;\n transition-property: background-color;\n touch-action: none;\n}\n.photo-browser-prev.swiper-button-disabled,\n.photo-browser-next.swiper-button-disabled {\n opacity: 0.3;\n pointer-events: none;\n}\n.photo-browser-slide {\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n box-sizing: border-box;\n}\n.photo-browser-slide span.swiper-zoom-container {\n display: none;\n}\n.photo-browser-slide img {\n width: auto;\n height: auto;\n max-width: 100%;\n max-height: 100%;\n display: none;\n}\n.photo-browser-slide.swiper-slide-active span.swiper-zoom-container,\n.photo-browser-slide.swiper-slide-next span.swiper-zoom-container,\n.photo-browser-slide.swiper-slide-prev span.swiper-zoom-container {\n display: flex;\n}\n.photo-browser-slide.swiper-slide-active img,\n.photo-browser-slide.swiper-slide-next img,\n.photo-browser-slide.swiper-slide-prev img {\n display: inline;\n}\n.photo-browser-slide.swiper-slide-active.photo-browser-slide-lazy .preloader,\n.photo-browser-slide.swiper-slide-next.photo-browser-slide-lazy .preloader,\n.photo-browser-slide.swiper-slide-prev.photo-browser-slide-lazy .preloader {\n display: block;\n}\n.photo-browser-slide iframe {\n width: 100%;\n height: 100%;\n}\n.photo-browser-slide .preloader {\n display: none;\n position: absolute;\n width: 42px;\n height: 42px;\n margin-left: -21px;\n margin-top: -21px;\n left: 50%;\n top: 50%;\n}\n.navbar-photo-browser .right .link svg,\n.navbar-photo-browser .right .link i {\n width: 24px;\n height: 24px;\n display: block;\n}\n.photo-browser-page .navbar-bg,\n.navbar-photo-browser .navbar-bg,\n.photo-browser-page .toolbar,\n.photo-browser-caption {\n background-color: var(--f7-photobrowser-bars-bg-color, rgba(var(--f7-bars-bg-color-rgb), 0.95));\n}\n.photo-browser-page {\n touch-action: none;\n}\n.photo-browser-page .navbar,\n.photo-browser-page .toolbar {\n transform: translate3d(0, 0, 0);\n transition-duration: 400ms;\n color: var(--f7-photobrowser-bars-text-color, var(--f7-bars-text-color));\n}\n.photo-browser-page .navbar a,\n.photo-browser-page .toolbar a {\n color: var(--f7-photobrowser-bars-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.photo-browser-exposed .navbar,\n.photo-browser-exposed .toolbar:not(.photo-browser-thumbs) {\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n}\n.photo-browser-exposed .toolbar:not(.photo-browser-thumbs) ~ .photo-browser-captions,\n.photo-browser-exposed .toolbar ~ .toolbar.photo-browser-thumbs ~ .photo-browser-captions {\n transform: translate3d(0, var(--f7-toolbar-height), 0);\n}\n.photo-browser-exposed .photo-browser-swiper-container {\n background: var(--f7-photobrowser-exposed-bg-color);\n}\n.photo-browser-exposed .photo-browser-thumbs,\n.photo-browser-dark .photo-browser-thumbs,\n.photo-browser-exposed .toolbar,\n.photo-browser-dark .toolbar {\n background-color: var(--f7-photobrowser-dark-bars-bg-color);\n}\n.photo-browser-exposed .photo-browser-caption,\n.photo-browser-dark .photo-browser-caption {\n color: var(--f7-photobrowser-caption-dark-text-color);\n background-color: var(--f7-photobrowser-dark-bars-bg-color);\n}\n.view.with-photo-browser-page-exposed .navbar {\n opacity: 0;\n pointer-events: none;\n}\n.photo-browser-page .toolbar:before,\n.photo-browser-page .toolbar:after {\n display: none !important;\n}\n.photo-browser-page-dark .navbar-bg,\n.navbar-photo-browser-dark .navbar-bg {\n background: var(--f7-photobrowser-dark-bars-bg-color);\n}\n.photo-browser-page-dark .navbar-bg:before,\n.navbar-photo-browser-dark .navbar-bg:before,\n.photo-browser-page-dark .navbar-bg:after,\n.navbar-photo-browser-dark .navbar-bg:after {\n display: none !important;\n}\n.navbar-photo-browser-dark,\n.photo-browser-dark .navbar,\n.photo-browser-dark .toolbar,\n.photo-browser-page-dark .navbar,\n.photo-browser-page-dark .toolbar {\n color: var(--f7-photobrowser-dark-bars-text-color);\n}\n.navbar-photo-browser-dark a,\n.photo-browser-dark .navbar a,\n.photo-browser-dark .toolbar a,\n.photo-browser-page-dark .navbar a,\n.photo-browser-page-dark .toolbar a {\n color: var(--f7-photobrowser-dark-bars-link-color);\n}\n.photo-browser-dark .photo-browser-swiper-container,\n.photo-browser-page-dark .photo-browser-swiper-container {\n background: var(--f7-photobrowser-dark-bg-color);\n}\n@keyframes photo-browser-in {\n 0% {\n transform: translate3d(0, 0, 0) scale(0.5);\n opacity: 0;\n }\n 50% {\n transform: translate3d(0, 0, 0) scale(1.05);\n opacity: 1;\n }\n 100% {\n transform: translate3d(0, 0, 0) scale(1);\n opacity: 1;\n }\n}\n@keyframes photo-browser-out {\n 0% {\n transform: translate3d(0, 0, 0) scale(1);\n opacity: 1;\n }\n 50% {\n transform: translate3d(0, 0, 0) scale(1.05);\n opacity: 1;\n }\n 100% {\n transform: translate3d(0, 0, 0) scale(0.5);\n opacity: 0;\n }\n}\n/* === Notifications === */\n:root {\n --f7-notification-max-width: 568px;\n --f7-notification-subtitle-text-transform: none;\n --f7-notification-subtitle-line-height: 1.35;\n --f7-notification-text-text-transform: none;\n --f7-notification-text-font-weight: 400;\n}\n.ios {\n --f7-notification-margin: 8px;\n --f7-notification-padding-horizontal: 10px;\n --f7-notification-padding-vertical: 10px;\n --f7-notification-border-radius: 12px;\n --f7-notification-box-shadow: 0px 5px 25px -10px rgba(0, 0, 0, 0.7);\n --f7-notification-icon-size: 20px;\n --f7-notification-title-font-size: 13px;\n --f7-notification-title-text-transform: uppercase;\n --f7-notification-title-line-height: 1.4;\n --f7-notification-title-font-weight: 400;\n --f7-notification-title-letter-spacing: 0.02em;\n --f7-notification-title-right-font-size: 13px;\n --f7-notification-subtitle-font-size: 15px;\n --f7-notification-subtitle-font-weight: 600;\n --f7-notification-text-font-size: 15px;\n --f7-notification-text-line-height: 1.2;\n --f7-notification-bg-color: rgba(250, 250, 250, 0.95);\n --f7-notification-bg-color-rgb: 255, 255, 255;\n --f7-notification-title-color: #000;\n --f7-notification-title-right-color: rgba(0, 0, 0, 0.45);\n --f7-notification-subtitle-color: #000;\n --f7-notification-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-notification-bg-color: rgba(30, 30, 30, 0.95);\n --f7-notification-bg-color-rgb: 30, 30, 30;\n --f7-notification-title-color: #fff;\n --f7-notification-text-color: #fff;\n --f7-notification-subtitle-color: #fff;\n --f7-notification-title-right-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-notification-margin: 16px;\n --f7-notification-padding-vertical: 20px;\n --f7-notification-padding-horizontal: 16px;\n --f7-notification-border-radius: 16px;\n --f7-notification-box-shadow: none;\n --f7-notification-icon-size: 24px;\n --f7-notification-title-font-size: 16px;\n --f7-notification-title-text-transform: none;\n --f7-notification-title-line-height: 1.35;\n --f7-notification-title-font-weight: 500;\n --f7-notification-title-right-font-size: 12px;\n --f7-notification-subtitle-font-size: 14px;\n --f7-notification-subtitle-font-weight: 400;\n --f7-notification-text-font-size: 14px;\n --f7-notification-text-line-height: 1.35;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-notification-title-color: var(--f7-md-on-surface);\n --f7-notification-bg-color: var(--f7-md-surface-5);\n --f7-notification-text-color: var(--f7-md-on-surface-variant);\n --f7-notification-title-right-color: var(--f7-md-on-surface-variant);\n --f7-notification-subtitle-color: var(--f7-md-on-surface);\n}\n.notification {\n position: absolute;\n left: var(--f7-notification-margin);\n top: var(--f7-notification-margin);\n width: calc(100% - var(--f7-notification-margin) * 2);\n z-index: 20000;\n font-size: 14px;\n margin: 0;\n border: none;\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n direction: ltr;\n max-width: var(--f7-notification-max-width);\n padding: var(--f7-notification-padding-vertical) var(--f7-notification-padding-horizontal);\n border-radius: var(--f7-notification-border-radius);\n box-shadow: var(--f7-notification-box-shadow);\n background: var(--f7-notification-bg-color);\n margin-top: var(--f7-safe-area-top);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .notification {\n background-color: rgba(var(--f7-notification-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n@media (min-width: 568px) {\n .notification {\n left: 50%;\n width: var(--f7-notification-max-width);\n margin-left: calc(-1 * var(--f7-notification-max-width) / 2);\n }\n}\n.notification-title {\n color: var(--f7-notification-title-color, var(--f7-theme-color));\n font-size: var(--f7-notification-title-font-size);\n text-transform: var(--f7-notification-title-text-transform);\n line-height: var(--f7-notification-title-line-height);\n font-weight: var(--f7-notification-title-font-weight);\n letter-spacing: var(--f7-notification-title-letter-spacing);\n}\n.notification-subtitle {\n color: var(--f7-notification-subtitle-color);\n font-size: var(--f7-notification-subtitle-font-size);\n text-transform: var(--f7-notification-subtitle-text-transform);\n line-height: var(--f7-notification-subtitle-line-height);\n font-weight: var(--f7-notification-subtitle-font-weight);\n}\n.notification-text {\n color: var(--f7-notification-text-color);\n font-size: var(--f7-notification-text-font-size);\n text-transform: var(--f7-notification-text-text-transform);\n line-height: var(--f7-notification-text-line-height);\n font-weight: var(--f7-notification-text-font-weight);\n}\n.notification-title-right-text {\n color: var(--f7-notification-title-right-color);\n font-size: var(--f7-notification-title-right-font-size);\n}\n.notification-icon {\n font-size: 0;\n line-height: var(--f7-notification-icon-size);\n}\n.notification-icon i,\n.notification-icon {\n width: var(--f7-notification-icon-size) !important;\n height: var(--f7-notification-icon-size) !important;\n}\n.notification-icon i {\n font-size: var(--f7-notification-icon-size);\n}\n.notification-icon img {\n height: var(--f7-notification-icon-size);\n}\n.notification-header {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.notification-close-button {\n margin-left: auto;\n cursor: pointer;\n position: relative;\n}\n.notification-close-button:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n left: 50%;\n top: 50%;\n text-align: center;\n}\n.ios .notification {\n transition-duration: 450ms;\n transform: translate3d(0%, -200%, 0);\n}\n.ios .notification.modal-in {\n transform: translate3d(0%, 0%, 0);\n opacity: 1;\n}\n.ios .notification.modal-out {\n transform: translate3d(0%, -200%, 0);\n}\n.ios .notification-icon {\n margin-right: 8px;\n}\n.ios .notification-header + .notification-content {\n margin-top: 10px;\n}\n.ios .notification-title-right-text {\n margin-right: 6px;\n margin-left: auto;\n}\n.ios .notification-title-right-text + .notification-close-button {\n margin-left: 10px;\n}\n.ios .notification-close-button {\n font-size: 14px;\n width: 20px;\n height: 20px;\n opacity: 0.3;\n transition-duration: 300ms;\n}\n.ios .notification-close-button.active-state {\n transition-duration: 0ms;\n opacity: 0.1;\n}\n.ios .notification-close-button:after {\n color: #000;\n content: 'notification_close_ios';\n font-size: 0.65em;\n line-height: 44px;\n width: 44px;\n height: 44px;\n margin-left: -22px;\n margin-top: -22px;\n}\n.ios .dark .notification-close-button:after,\n.ios.dark .notification-close-button:after {\n color: #fff;\n}\n.md .notification {\n transform: translate3d(0, -150%, 0);\n}\n.md .notification.modal-in {\n transition-duration: 500ms;\n transform: translate3d(0, 0%, 0);\n transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n}\n.md .notification.modal-in.notification-transitioning {\n transition-duration: 200ms;\n}\n.md .notification.modal-out {\n animation: none;\n transition-duration: 200ms;\n transition-timing-function: ease-in;\n transform: translate3d(0, -150%, 0);\n}\n.md .notification-with-icon .notification-icon {\n position: absolute;\n left: var(--f7-notification-padding-horizontal);\n top: var(--f7-notification-padding-vertical);\n}\n.md .notification-with-icon .notification-content,\n.md .notification-with-icon .notification-header {\n margin-left: calc(var(--f7-notification-icon-size) + 16px);\n}\n.md .notification-icon {\n margin-right: 8px;\n}\n.md .notification-subtitle + .notification-text {\n margin-top: 4px;\n}\n.md .notification-header + .notification-content {\n margin-top: 8px;\n}\n.md .notification-title-right-text {\n margin-left: 4px;\n}\n.md .notification-title-right-text:before {\n content: '';\n width: 3px;\n height: 3px;\n border-radius: 50%;\n display: inline-block;\n vertical-align: middle;\n margin-right: 4px;\n background: var(--f7-notification-title-right-color);\n}\n.md .notification-close-button {\n width: 16px;\n height: 16px;\n transition-duration: 300ms;\n}\n.md .notification-close-button:before,\n.md .notification-close-button:after {\n width: 48px;\n height: 48px;\n left: 50%;\n top: 50%;\n margin-left: -24px;\n margin-top: -24px;\n}\n.md .notification-close-button:after {\n color: var(--f7-md-on-surface-variant);\n content: 'delete_round_md';\n line-height: 48px;\n font-size: 24px;\n}\n@keyframes notification-md-in {\n 0% {\n transform: translate3d(0, -150%, 0);\n }\n 50% {\n transform: translate3d(0, 10%, 0);\n }\n 100% {\n transform: translate3d(0, 0%, 0);\n }\n}\n/* === Autocomplete === */\n:root {\n --f7-autocomplete-dropdown-placeholder-color: #a9a9a9;\n --f7-autocomplete-dropdown-preloader-size: 20px;\n --f7-autocomplete-dropdown-font-size: var(--f7-list-font-size);\n /*\n --f7-autocomplete-dropdown-selected-bg-color: rgba(var(--f7-theme-color-rgb), 0.2);\n */\n}\n.ios {\n --f7-autocomplete-dropdown-box-shadow: 0px 3px 3px rgba(0, 0, 0, 0.2);\n --f7-autocomplete-dropdown-text-matching-font-weight: 600;\n --f7-autocomplete-dropdown-bg-color: #fff;\n --f7-autocomplete-dropdown-text-color: #000;\n --f7-autocomplete-dropdown-text-matching-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-autocomplete-dropdown-bg-color: #1c1c1d;\n --f7-autocomplete-dropdown-text-color: #fff;\n --f7-autocomplete-dropdown-text-matching-color: #fff;\n}\n.md {\n --f7-autocomplete-dropdown-box-shadow: none;\n --f7-autocomplete-dropdown-text-matching-font-weight: 500;\n --f7-autocomplete-dropdown-text-matching-color: #000;\n}\n.md .dark,\n.md.dark {\n --f7-autocomplete-dropdown-text-matching-color: #fff;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-autocomplete-dropdown-bg-color: var(--f7-md-surface-2);\n --f7-autocomplete-dropdown-text-color: var(--f7-md-on-surface);\n}\n.autocomplete-page .autocomplete-found {\n display: block;\n}\n.autocomplete-page .autocomplete-not-found {\n display: none;\n}\n.autocomplete-page .autocomplete-values {\n display: block;\n}\n.autocomplete-page .list ul:empty {\n display: none;\n}\n.autocomplete-preloader:not(.autocomplete-preloader-visible) {\n visibility: hidden;\n}\n.autocomplete-preloader:not(.autocomplete-preloader-visible),\n.autocomplete-preloader:not(.autocomplete-preloader-visible) * {\n animation: none;\n}\n.autocomplete-dropdown {\n background: var(--f7-autocomplete-dropdown-bg-color);\n box-shadow: var(--f7-autocomplete-dropdown-box-shadow);\n box-sizing: border-box;\n position: absolute;\n z-index: 500;\n width: 100%;\n left: 0;\n}\n.autocomplete-dropdown .autocomplete-dropdown-inner {\n position: relative;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n height: 100%;\n z-index: 1;\n}\n.autocomplete-dropdown .autocomplete-preloader {\n display: none;\n position: absolute;\n bottom: 100%;\n width: var(--f7-autocomplete-dropdown-preloader-size);\n height: var(--f7-autocomplete-dropdown-preloader-size);\n}\n.autocomplete-dropdown .autocomplete-preloader-visible {\n display: block;\n}\n.autocomplete-dropdown .autocomplete-dropdown-placeholder {\n color: var(--f7-autocomplete-dropdown-placeholder-color);\n}\n.autocomplete-dropdown .list {\n margin: 0;\n color: var(--f7-autocomplete-dropdown-text-color);\n font-size: var(--f7-autocomplete-dropdown-font-size);\n}\n.autocomplete-dropdown .list b {\n color: var(--f7-autocomplete-dropdown-text-matching-color);\n font-weight: var(--f7-autocomplete-dropdown-text-matching-font-weight);\n}\n.autocomplete-dropdown .list ul {\n background: none !important;\n}\n.autocomplete-dropdown .list ul:before,\n.autocomplete-dropdown .list ul:after {\n display: none !important;\n}\n.autocomplete-dropdown .autocomplete-dropdown-selected {\n background: var(--f7-autocomplete-dropdown-selected-bg-color, rgba(var(--f7-theme-color-rgb), 0.2));\n}\n.searchbar-input-wrap .autocomplete-dropdown {\n background-color: var(--f7-searchbar-input-bg-color, var(--f7-searchbar-bg-color));\n border-radius: var(--f7-searchbar-input-border-radius);\n margin-top: calc(-1 * var(--f7-searchbar-input-height));\n top: 100%;\n z-index: -1;\n}\n.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-inner {\n padding-top: var(--f7-searchbar-input-height);\n}\n.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-placeholder {\n color: var(--f7-searchbar-placeholder-color);\n}\n.searchbar-input-wrap .autocomplete-dropdown li:last-child {\n border-radius: 0 0 var(--f7-searchbar-input-border-radius) var(--f7-searchbar-input-border-radius);\n position: relative;\n overflow: hidden;\n}\n.searchbar-input-wrap .autocomplete-dropdown .item-content {\n padding-left: calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px));\n}\n.ios .autocomplete-dropdown .autocomplete-preloader {\n right: 16px;\n margin-bottom: 12px;\n}\n.md .autocomplete-page .navbar .autocomplete-preloader {\n margin-right: 8px;\n}\n.md .autocomplete-popup .navbar .autocomplete-preloader {\n margin-left: 8px;\n margin-right: 16px;\n}\n.md .autocomplete-dropdown .autocomplete-preloader {\n right: 16px;\n margin-bottom: 8px;\n}\n.md .autocomplete-dropdown .autocomplete-preloader circle {\n stroke-width: 3;\n}\n/* === Tooltip === */\n:root {\n --f7-tooltip-padding: 8px 16px;\n --f7-tooltip-font-size: 14px;\n --f7-tooltip-font-weight: 500;\n --f7-tooltip-desktop-padding: 6px 8px;\n --f7-tooltip-desktop-font-size: 12px;\n}\n.ios {\n --f7-tooltip-border-radius: 4px;\n --f7-tooltip-bg-color: rgba(0, 0, 0, 0.87);\n --f7-tooltip-text-color: #fff;\n}\n.md {\n --f7-tooltip-border-radius: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-tooltip-bg-color: var(--f7-md-secondary);\n --f7-tooltip-text-color: var(--f7-md-on-secondary);\n}\n.tooltip {\n position: absolute;\n z-index: 20000;\n background: var(--f7-tooltip-bg-color);\n border-radius: var(--f7-tooltip-border-radius);\n padding: var(--f7-tooltip-padding);\n color: var(--f7-tooltip-text-color);\n font-size: var(--f7-tooltip-font-size);\n font-weight: var(--f7-tooltip-font-weight);\n box-sizing: border-box;\n line-height: 1.2;\n opacity: 0;\n transform: scale(0.9);\n transition-duration: 150ms;\n transition-property: opacity, transform;\n z-index: 99000;\n}\n.tooltip.tooltip-in {\n transform: scale(1);\n opacity: 1;\n}\n.tooltip.tooltip-out {\n opacity: 0;\n transform: scale(1);\n}\n.device-desktop .tooltip {\n font-size: var(--f7-tooltip-desktop-font-size);\n padding: var(--f7-tooltip-desktop-padding);\n}\n/* === Gauge === */\n.gauge {\n position: relative;\n text-align: center;\n margin-left: auto;\n margin-right: auto;\n display: inline-block;\n}\n.gauge-svg,\n.gauge svg {\n max-width: 100%;\n height: auto;\n}\n.gauge-svg circle,\n.gauge svg circle,\n.gauge-svg path,\n.gauge svg path {\n transition-duration: 400ms;\n}\n/* === Skeleton === */\n:root {\n --skeleton-color: #ccc;\n --skeleton-icon-color: rgba(0, 0, 0, 0.25);\n}\n\n.skeleton-block {\n height: 1em;\n background: var(--skeleton-color) !important;\n width: 100%;\n display: block;\n}\n\n@font-face {\n font-family: \"skeleton\";\n src: url(\"data:application/font-woff;charset=utf-8;base64,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\") format(\"woff\");\n font-weight: 100, 200, 300, 400, 500, 600, 700, 800, 900;\n font-style: normal, italic;\n font-display: block;\n}\n.skeleton-text {\n font-family: \"skeleton\" !important;\n -webkit-user-select: none;\n user-select: none;\n}\n.skeleton-text, .skeleton-text * {\n color: var(--skeleton-color) !important;\n letter-spacing: -0.03em !important;\n}\n\n.skeleton-image {\n display: inline-block;\n}\n.skeleton-image svg {\n max-width: 100%;\n height: auto;\n}\n.skeleton-image polygon {\n fill: var(--skeleton-color);\n}\n.skeleton-image path {\n fill: var(--skeleton-icon-color);\n}\n\n.skeleton-avatar {\n display: inline-block;\n}\n.skeleton-avatar svg {\n max-width: 100%;\n height: auto;\n}\n.skeleton-avatar rect {\n fill: var(--skeleton-color);\n}\n.skeleton-avatar path {\n fill: var(--skeleton-icon-color);\n}\n\n.skeleton-effect-blink, .skeleton-effect-wave {\n -webkit-mask-image: linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%);\n mask-image: linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%);\n -webkit-mask-size: 200% 100%;\n mask-size: 200% 100%;\n -webkit-mask-repeat: repeat;\n mask-repeat: repeat;\n -webkit-mask-position: 50% top;\n mask-position: 50% top;\n animation: skeleton-effect-wave 1s infinite;\n}\n.skeleton-effect-fade {\n animation: skeleton-effect-fade 1s infinite;\n}\n.skeleton-effect-pulse {\n animation: skeleton-effect-pulse 1s infinite;\n}\n\n@keyframes skeleton-effect-fade {\n 0% {\n opacity: 1;\n }\n 50% {\n opacity: 0.2;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes skeleton-effect-wave {\n 0% {\n -webkit-mask-position: 50% top;\n mask-position: 50% top;\n }\n 100% {\n -webkit-mask-position: -150% top;\n mask-position: -150% top;\n }\n}\n@keyframes skeleton-effect-pulse {\n 0% {\n transform: scale(1);\n }\n 40% {\n transform: scale(1);\n }\n 50% {\n transform: scale(0.975);\n }\n 100% {\n transform: scale(1);\n }\n}\n:root {\n --skeleton-color: #ccc;\n --skeleton-icon-color: rgba(0, 0, 0, 0.25);\n}\n.dark {\n --skeleton-color: #515151;\n --skeleton-icon-color: rgba(255, 255, 255, 0.25);\n}\n/* === Color Picker === */\n:root {\n --f7-color-picker-popover-width: 350px;\n --f7-color-picker-slider-size: 6px;\n --f7-color-picker-slider-knob-size: 16px;\n --f7-color-picker-bar-size: 50px;\n --f7-color-picker-bar-min-height: 260px;\n --f7-color-picker-value-width: 64px;\n --f7-color-picker-value-height: 32px;\n --f7-color-picker-value-font-size: 16px;\n --f7-color-picker-value-border-radius: 4px;\n --f7-color-picker-hex-value-width: 84px;\n --f7-color-picker-label-font-size: 14px;\n --f7-color-picker-label-width: 10px;\n --f7-color-picker-label-height: 14px;\n --f7-color-picker-sb-spectrum-height: 260px;\n --f7-color-picker-sb-spectrum-handle-size: 16px;\n --f7-color-picker-wheel-width: 330px;\n --f7-color-picker-palette-value-width: 36px;\n --f7-color-picker-palette-value-height: 36px;\n --f7-color-picker-initial-current-color-height: 40px;\n --f7-color-picker-initial-current-color-border-radius: 4px;\n --f7-color-picker-sheet-bg-color: #fff;\n --f7-color-picker-popup-bg-color: #fff;\n --f7-color-picker-value-bg-color: rgba(0, 0, 0, 0.05);\n --f7-color-picker-group-bg-color: rgba(0, 0, 0, 0.05);\n --f7-color-picker-group-value-bg-color: #fff;\n}\n:root .dark,\n:root.dark {\n --f7-color-picker-sheet-bg-color: #121212;\n --f7-color-picker-popup-bg-color: #121212;\n --f7-color-picker-value-bg-color: rgba(255, 255, 255, 0.1);\n --f7-color-picker-group-bg-color: #000;\n --f7-color-picker-group-value-bg-color: rgba(255, 255, 255, 0.12);\n}\n.color-picker {\n overflow: hidden;\n width: 100%;\n display: flex;\n flex-direction: column;\n}\n.color-picker.color-picker-inline,\n.color-picker-popover .color-picker,\n.color-picker-popup .color-picker {\n position: relative;\n}\n.color-picker-sheet-modal {\n background: var(--f7-color-picker-sheet-bg-color);\n}\n.color-picker-sheet-modal:before {\n z-index: 600;\n}\n.color-picker-sheet-modal .sheet-modal-inner {\n margin-bottom: var(--f7-safe-area-bottom);\n}\n.color-picker-popup .page {\n background: var(--f7-color-picker-popup-bg-color);\n}\n.color-picker-popup .page-content {\n padding-bottom: var(--f7-safe-area-bottom);\n}\n.color-picker-popover .color-picker,\n.color-picker-popup .color-picker,\n.color-picker-page .color-picker {\n height: 100%;\n}\n.color-picker-popover .color-picker .toolbar,\n.color-picker-popup .color-picker .toolbar,\n.color-picker-page .color-picker .toolbar {\n position: absolute;\n}\n.color-picker-popover {\n width: var(--f7-color-picker-popover-width);\n max-width: 90vw;\n max-height: 80vh;\n}\n.md .color-picker-popover .popover-inner {\n padding: 8px;\n}\n.color-picker-popover .color-picker {\n max-height: 80vh;\n}\n.color-picker-popover .toolbar-top {\n border-top-left-radius: var(--f7-popover-border-radius);\n border-top-right-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .color-picker-module-palette {\n overflow: hidden;\n flex-shrink: 0;\n}\n.color-picker-popover .color-picker-module-palette:first-child {\n border-top-left-radius: var(--f7-popover-border-radius);\n border-top-right-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .color-picker-module-palette:last-child {\n border-bottom-left-radius: var(--f7-popover-border-radius);\n border-bottom-right-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .color-picker-module-palette:first-child:last-child {\n border-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .toolbar ~ .page-content .color-picker-module-palette:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.color-picker-popup .page-content,\n.color-picker-popover .page-content,\n.color-picker-sheet-modal .page-content,\n.color-picker-page .page-content {\n display: flex;\n justify-content: flex-start;\n align-items: stretch;\n flex-direction: column;\n overflow-x: hidden;\n}\n.color-picker-module {\n margin-top: 5px;\n}\n.color-picker-module:last-child {\n margin-bottom: 5px;\n}\n.color-picker-module-sb-spectrum,\n.color-picker-module-hs-spectrum {\n margin-left: 10px;\n margin-right: 10px;\n}\n.color-picker-module-sb-spectrum:first-child,\n.color-picker-module-hs-spectrum:first-child {\n margin-top: 10px;\n}\n.color-picker-module-sb-spectrum .color-picker-sb-spectrum,\n.color-picker-module-hs-spectrum .color-picker-sb-spectrum,\n.color-picker-module-sb-spectrum .color-picker-hs-spectrum,\n.color-picker-module-hs-spectrum .color-picker-hs-spectrum {\n height: var(--f7-color-picker-sb-spectrum-height);\n}\n.ios .color-picker-module-sb-spectrum .color-picker-sb-spectrum,\n.ios .color-picker-module-hs-spectrum .color-picker-sb-spectrum,\n.ios .color-picker-module-sb-spectrum .color-picker-hs-spectrum,\n.ios .color-picker-module-hs-spectrum .color-picker-hs-spectrum {\n border-radius: 4px;\n}\n.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum,\n.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum,\n.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum,\n.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum {\n border-radius: 12px;\n}\n.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum::after,\n.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum::after,\n.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum::after,\n.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum::after {\n border-radius: inherit;\n}\n.color-picker-sb-spectrum {\n background-color: #000;\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, #000 100%), linear-gradient(to left, rgba(255, 255, 255, 0) 0%, #fff 100%);\n position: relative;\n}\n.color-picker-hs-spectrum {\n position: relative;\n background-image: linear-gradient(to right, hsl(0, 100%, 50%), hsl(60, 100%, 50%), hsl(120, 100%, 50%), hsl(180, 100%, 50%), hsl(240, 100%, 50%), hsl(300, 100%, 50%), hsl(0, 100%, 50%));\n}\n.color-picker-hs-spectrum:after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), #ffffff);\n}\n.color-picker-sb-spectrum-handle,\n.color-picker-hs-spectrum-handle {\n width: 4px;\n height: 4px;\n position: absolute;\n left: -2px;\n top: -2px;\n z-index: 1;\n}\n.color-picker-sb-spectrum-handle:after,\n.color-picker-hs-spectrum-handle:after {\n background-color: inherit;\n content: '';\n position: absolute;\n width: var(--f7-color-picker-sb-spectrum-handle-size);\n height: var(--f7-color-picker-sb-spectrum-handle-size);\n border: 1px solid #fff;\n border-radius: 50%;\n box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.5);\n box-sizing: border-box;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n transition: 150ms;\n transition-property: transform;\n transform-origin: center;\n}\n.color-picker-sb-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after,\n.color-picker-hs-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after,\n.color-picker-sb-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,\n.color-picker-hs-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after {\n transform: scale(1.5) translate(-33.333%, -33.333%);\n}\n.color-picker-module-wheel {\n margin-left: 10px;\n margin-right: 10px;\n}\n.color-picker-wheel {\n position: relative;\n width: var(--f7-color-picker-wheel-width);\n max-width: 100%;\n height: auto;\n font-size: 0;\n margin-left: auto;\n margin-right: auto;\n}\n.color-picker-wheel svg {\n width: 100%;\n height: auto;\n}\n.color-picker-wheel .color-picker-wheel-handle {\n width: 16.66666667%;\n height: 16.66666667%;\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #fff;\n box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5);\n background: red;\n border-radius: 50%;\n left: 0;\n top: 0;\n}\n.color-picker-wheel .color-picker-sb-spectrum {\n width: 45%;\n height: 45%;\n left: 50%;\n top: 50%;\n transform: translate3d(-50%, -50%, 0);\n position: absolute;\n}\n.color-picker-slider-wrap {\n display: flex;\n align-items: center;\n margin-bottom: 2px;\n}\n.color-picker-slider-wrap + .color-picker-slider-wrap {\n margin-top: 5px;\n}\n.color-picker-hex-wrap {\n justify-content: space-between;\n display: flex;\n align-items: center;\n}\n.color-picker-slider-label,\n.color-picker-hex-label {\n font-size: var(--f7-color-picker-label-font-size);\n width: var(--f7-color-picker-label-size);\n flex-shrink: 0;\n margin-right: 12px;\n}\n.color-picker-hex-label {\n width: auto;\n}\n.color-picker-bar-value,\n.color-picker-slider-value,\n.color-picker-hex-value {\n width: var(--f7-color-picker-value-width);\n height: var(--f7-color-picker-value-height);\n background: var(--f7-color-picker-value-bg-color);\n border-radius: var(--f7-color-picker-value-border-radius);\n text-align: center;\n font-size: var(--f7-color-picker-value-font-size);\n display: flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n margin-left: 10px;\n}\n.color-picker-bar-value input,\n.color-picker-slider-value input,\n.color-picker-hex-value input {\n width: 100%;\n height: 100%;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n outline: 0;\n background: transparent;\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n text-align: center;\n display: block;\n border-radius: 4px;\n}\n.color-picker-bar-value input::-webkit-inner-spin-button,\n.color-picker-slider-value input::-webkit-inner-spin-button,\n.color-picker-hex-value input::-webkit-inner-spin-button,\n.color-picker-bar-value input::-webkit-outer-spin-button,\n.color-picker-slider-value input::-webkit-outer-spin-button,\n.color-picker-hex-value input::-webkit-outer-spin-button {\n -webkit-appearance: none;\n appearance: none;\n margin: 0;\n display: none;\n}\n.color-picker-hex-value {\n width: var(--f7-color-picker-hex-value-width);\n}\n.color-picker-hex-value:first-child {\n margin-left: auto;\n}\n.color-picker-slider {\n --f7-range-bar-active-bg-color: transparent;\n --f7-range-bar-size: var(--f7-color-picker-slider-size);\n --f7-range-bar-border-radius: var(--f7-color-picker-slider-size);\n --f7-range-knob-size: var(--f7-color-picker-slider-knob-size);\n --f7-range-knob-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n}\n.color-picker-slider .range-knob {\n transition-duration: 200ms;\n transition-property: transform;\n}\n.color-picker-slider .range-knob:after {\n width: 30px;\n height: 30px;\n margin-left: -16px;\n margin-top: -16px;\n}\n.color-picker-slider .range-knob-active-state .range-knob {\n transform: scale(1.5);\n}\n.md .color-picker-slider.range-slider-min:not(.range-slider-dual) .range-knob {\n background: var(--f7-range-knob-color) !important;\n border: none;\n}\n.color-picker-module-rgb-bars {\n display: flex;\n justify-content: space-around;\n justify-content: space-evenly;\n align-items: stretch;\n height: 100%;\n min-height: var(--f7-color-picker-bar-min-height);\n padding-bottom: 10px;\n padding-top: 10px;\n box-sizing: border-box;\n}\n.color-picker-bar-wrap {\n display: flex;\n align-items: center;\n flex-direction: column-reverse;\n}\n.color-picker-bar {\n --f7-range-bar-active-bg-color: transparent;\n --f7-range-bar-size: var(--f7-color-picker-bar-size);\n --f7-range-bar-border-radius: 2px;\n --f7-range-knob-size: 6px;\n --f7-range-knob-box-shadow: 0 0px 3px rgba(0, 0, 0, 0.3);\n --f7-range-knob-color: #fff;\n}\n.color-picker-bar .range-knob {\n transition-duration: 0ms;\n transition-property: transform;\n border-radius: 3px;\n}\n.color-picker-bar .range-knob-wrap {\n height: 6px;\n width: calc(var(--f7-color-picker-bar-size) - 4px);\n margin-left: calc(-0.5 * (var(--f7-color-picker-bar-size) - 4px));\n}\n.color-picker-bar .range-knob-active-state .range-knob {\n transform: scale(1);\n}\n.md .color-picker-bar.range-slider-min:not(.range-slider-dual) .range-knob {\n background: var(--f7-range-knob-color) !important;\n border: none;\n}\n.color-picker-bar-label {\n font-size: var(--f7-color-picker-label-size);\n margin-top: 12px;\n line-height: 1;\n height: var(--f7-color-picker-label-height);\n flex-shrink: 0;\n}\n.color-picker-bar-value {\n margin-left: 0;\n margin-bottom: 10px;\n}\n.color-picker-slider-alpha {\n --f7-range-knob-color: #fff;\n}\n.color-picker-slider-alpha .range-bar {\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0), #000), linear-gradient(to right, rgba(255, 255, 255, 0.2) 50%, rgba(0, 0, 0, 0.2) 50%), linear-gradient(to left, rgba(255, 255, 255, 0.2) 50%, rgba(0, 0, 0, 0.2) 50%);\n background-size: 100% 100%,\n 6px 3px,\n 6px 3px;\n background-position: 0 0,\n 0px 3px,\n 0 0;\n background-repeat: repeat-y, repeat-x, repeat-x;\n}\n.color-picker-slider-hue .range-bar {\n background-image: linear-gradient(to right, hsl(0, 100%, 50%), hsl(60, 100%, 50%), hsl(120, 100%, 50%), hsl(180, 100%, 50%), hsl(240, 100%, 50%), hsl(300, 100%, 50%), hsl(0, 100%, 50%));\n}\n.color-picker-slider-brightness .range-bar {\n background-image: linear-gradient(to right, #000, #fff);\n}\n.color-picker-module-palette {\n margin-top: 16px;\n}\n.color-picker-module-palette:first-child {\n margin-top: 0;\n}\n.color-picker-module-palette:last-child {\n margin-bottom: 0;\n}\n.color-picker-module-palette:first-child:last-child {\n margin: 0;\n}\n.color-picker-palette {\n display: flex;\n flex-wrap: wrap;\n}\n.color-picker-palette-row {\n width: 100%;\n display: flex;\n flex-wrap: nowrap;\n}\n.color-picker-palette-row .color-picker-palette-value {\n width: 100%;\n}\n.color-picker-palette-value {\n width: var(--f7-color-picker-palette-value-width);\n height: var(--f7-color-picker-palette-value-height);\n cursor: pointer;\n}\n.color-picker-module-initial-current-colors,\n.color-picker-module-current-color {\n margin-left: 10px;\n margin-right: 10px;\n border-radius: var(--f7-color-picker-initial-current-color-border-radius);\n overflow: hidden;\n flex-shrink: 0;\n}\n.color-picker-initial-color,\n.color-picker-current-color {\n height: var(--f7-color-picker-initial-current-color-height);\n}\n.color-picker-initial-current-colors {\n display: flex;\n}\n.color-picker-initial-current-colors .color-picker-initial-color,\n.color-picker-initial-current-colors .color-picker-current-color {\n width: 50%;\n}\n.color-picker-module-rgb-sliders,\n.color-picker-module-hsb-sliders,\n.color-picker-module-alpha-slider,\n.color-picker-module-hue-slider,\n.color-picker-module-brightness-slider,\n.color-picker-module-hex {\n margin-left: 10px;\n margin-right: 10px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders,\n.color-picker-grouped-modules .color-picker-module-alpha-slider,\n.color-picker-grouped-modules .color-picker-module-hue-slider,\n.color-picker-grouped-modules .color-picker-module-brightness-slider,\n.color-picker-grouped-modules .color-picker-module-hex {\n background: var(--f7-color-picker-group-bg-color);\n padding: 8px;\n border-radius: 8px;\n margin-top: 16px;\n margin-left: 8px;\n margin-right: 8px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders:last-child,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders:last-child,\n.color-picker-grouped-modules .color-picker-module-alpha-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hue-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-brightness-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hex:last-child {\n margin-bottom: 16px;\n}\n.color-picker-grouped-modules .color-picker-slider-value,\n.color-picker-grouped-modules .color-picker-hex-value {\n background: var(--f7-color-picker-group-value-bg-color);\n}\n.color-picker-grouped-modules .color-picker-slider-label,\n.color-picker-grouped-modules .color-picker-hex-label {\n margin-left: 5px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:first-child {\n margin-left: 5px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:last-child {\n margin-right: 5px;\n}\n/* === Treeview === */\n:root {\n --f7-treeview-item-height: 34px;\n --f7-treeview-item-padding-left: 16px;\n --f7-treeview-item-padding-right: 16px;\n --f7-treeview-toggle-size: 24px;\n --f7-treeview-children-offset: 29px;\n --f7-treeview-label-font-weight: 400;\n --f7-treeview-label-text-color: inherit;\n --f7-treeview-icon-size: 24px;\n /*\n --f7-treeview-selectable-selected-bg-color: rgba(var(--f7-theme-color-rgb), 0.2);\n */\n --f7-treeview-toggle-color: rgba(0, 0, 0, 0.5);\n --f7-treeview-toggle-hover-bg-color: rgba(0, 0, 0, 0.1);\n --f7-treeview-toggle-pressed-bg-color: rgba(0, 0, 0, 0.15);\n --f7-treeview-icon-color: rgba(0, 0, 0, 0.5);\n --f7-treeview-selectable-hover-bg-color: rgba(0, 0, 0, 0.1);\n --f7-treeview-link-hover-bg-color: rgba(0, 0, 0, 0.1);\n --f7-treeview-link-pressed-bg-color: rgba(0, 0, 0, 0.15);\n}\n:root .dark,\n:root.dark {\n --f7-treeview-toggle-color: rgba(255, 255, 255, 0.5);\n --f7-treeview-toggle-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-treeview-toggle-pressed-bg-color: rgba(255, 255, 255, 0.1);\n --f7-treeview-icon-color: rgba(255, 255, 255, 0.75);\n --f7-treeview-selectable-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-treeview-link-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-treeview-link-pressed-bg-color: rgba(255, 255, 255, 0.11);\n}\n.ios {\n --f7-treeview-label-font-size: 17px;\n}\n.md {\n --f7-treeview-label-font-size: 16px;\n}\n.treeview-item-root {\n padding-left: var(--f7-treeview-item-padding-left);\n padding-right: var(--f7-treeview-item-padding-right);\n min-height: var(--f7-treeview-item-height);\n display: flex;\n align-items: center;\n justify-content: flex-start;\n}\n.treeview-item-content {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.treeview-item-content > i,\n.treeview-item-content > .f7-icons,\n.treeview-item-content > .material-icons {\n font-size: var(--f7-treeview-icon-size);\n color: var(--f7-treeview-icon-color);\n}\n.treeview-item-content:first-child {\n margin-left: calc(var(--f7-treeview-toggle-size) + 5px);\n}\n.treeview-item-content > * + * {\n margin-left: 5px;\n}\n.treeview-item-label {\n font-size: var(--f7-treeview-label-font-size);\n font-weight: var(--f7-treeview-label-font-weight);\n color: var(--f7-treeview-label-text-color);\n}\n.treeview-toggle {\n width: var(--f7-treeview-toggle-size);\n height: var(--f7-treeview-toggle-size);\n cursor: pointer;\n border-radius: 4px;\n background-color: rgba(0, 0, 0, 0);\n transition-duration: 200ms;\n position: relative;\n margin-right: 5px;\n}\n.treeview-toggle.active-state {\n background-color: var(--f7-treeview-toggle-pressed-bg-color);\n}\n.treeview-toggle:after {\n transition-duration: 200ms;\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n width: 0;\n height: 0;\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n transform: translate(-50%, -50%);\n border-left: 6px solid var(--f7-treeview-toggle-color);\n}\n.treeview-toggle-hidden {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n}\n.treeview-preloader {\n --f7-preloader-size: var(--f7-treeview-toggle-size);\n margin-right: calc(-1 * var(--f7-treeview-toggle-size));\n}\n.treeview-item-children {\n display: none;\n}\n.treeview-item-opened > .treeview-item-children {\n display: block;\n}\n.treeview-item-opened > .treeview-item-root .treeview-toggle:after {\n transform: translate(-50%, -50%) rotate(90deg);\n}\na.treeview-item-root {\n color: var(--f7-treeview-label-text-color);\n}\n.treeview-item-selectable > .treeview-item-root,\n.treeview-item-selectable.treeview-item-root {\n cursor: pointer;\n transition-duration: 150ms;\n}\na.treeview-item-root {\n transition-duration: 150ms;\n}\na.treeview-item-root.active-state {\n background: var(--f7-treeview-link-pressed-bg-color);\n}\n.treeview-item-toggle > .treeview-item-root,\n.treeview-item-toggle.treeview-item-root {\n cursor: pointer;\n}\n.treeview-item-selected > .treeview-item-root,\n.treeview-item-selected.treeview-item-root {\n background: var(--f7-treeview-selectable-selected-bg-color, rgba(var(--f7-theme-color-rgb), 0.2));\n}\n.treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 1);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 2);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 3);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 4);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 5);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 6);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 7);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 8);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 9);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 10);\n}\n/* === Stepper === */\n:root {\n --f7-text-editor-font-size: inherit;\n --f7-text-editor-font-weight: inherit;\n --f7-text-editor-border-width: 1px;\n --f7-text-editor-height: 250px;\n --f7-text-editor-margin: 16px;\n --f7-text-editor-padding: 8px;\n --f7-text-editor-button-bg-color: transparent;\n --f7-text-editor-button-size: 28px;\n --f7-text-editor-button-icon-size: 20px;\n --f7-text-editor-button-margin: 2px;\n --f7-text-editor-text-color: #000;\n --f7-text-editor-bg-color: #fff;\n --f7-text-editor-button-divider-color: rgba(0, 0, 0, 0.15);\n}\n:root .dark,\n:root.dark {\n --f7-text-editor-bg-color: #121212;\n --f7-text-editor-text-color: #fff;\n --f7-text-editor-button-divider-color: rgba(255, 255, 255, 0.15);\n}\n.ios {\n --f7-text-editor-toolbar-padding: 6px;\n --f7-text-editor-button-border-radius: 2px;\n --f7-text-editor-placeholder-color: rgba(0, 0, 0, 0.35);\n --f7-text-editor-toolbar-border-color: rgba(0, 0, 0, 0.25);\n --f7-text-editor-toolbar-bg-color: #fff;\n --f7-text-editor-border-color: rgba(0, 0, 0, 0.1);\n --f7-text-editor-button-text-color: #333;\n}\n.ios .dark,\n.ios.dark {\n --f7-text-editor-placeholder-color: rgba(255, 255, 255, 0.35);\n --f7-text-editor-toolbar-bg-color: #121212;\n --f7-text-editor-toolbar-border-color: rgba(255, 255, 255, 0.1);\n --f7-text-editor-toolbar-bg-color: #202020;\n --f7-text-editor-border-color: rgba(255, 255, 255, 0.1);\n --f7-text-editor-button-text-color: #fff;\n}\n.md {\n --f7-text-editor-button-border-radius: 8px;\n --f7-text-editor-toolbar-padding: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-text-editor-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-text-editor-toolbar-bg-color: var(--f7-md-surface-1);\n --f7-text-editor-border-color: var(--f7-md-outline);\n --f7-text-editor-button-text-color: var(--f7-md-on-surface);\n}\n.text-editor {\n margin: var(--f7-text-editor-margin);\n background-color: var(--f7-text-editor-bg-color);\n display: block;\n position: relative;\n border: var(--f7-text-editor-border-width) solid var(--f7-text-editor-border-color);\n display: flex;\n flex-direction: column;\n align-items: stretch;\n height: var(--f7-text-editor-height);\n box-sizing: border-box;\n}\n.text-editor.text-editor-resizable {\n height: auto;\n}\n.text-editor-toolbar {\n display: flex;\n flex-wrap: wrap;\n background: var(--f7-text-editor-toolbar-bg-color);\n z-index: 100;\n position: relative;\n position: sticky;\n left: 0;\n top: 0;\n padding: var(--f7-text-editor-toolbar-padding);\n flex-shrink: 0;\n box-sizing: border-box;\n}\n.text-editor-toolbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-text-editor-toolbar-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\nbutton.text-editor-button {\n -webkit-appearance: none;\n appearance: none;\n border: none;\n padding: 0;\n margin: 0;\n outline: 0;\n font-family: inherit;\n background: transparent;\n cursor: pointer;\n box-shadow: none;\n border-radius: var(--f7-text-editor-button-border-radius);\n position: relative;\n z-index: 1;\n display: flex;\n width: auto;\n overflow: hidden;\n width: var(--f7-text-editor-button-size);\n height: var(--f7-text-editor-button-size);\n align-items: center;\n justify-content: center;\n margin: var(--f7-text-editor-button-margin);\n box-sizing: border-box;\n color: var(--f7-text-editor-button-text-color);\n background-color: var(--f7-text-editor-button-bg-color);\n flex-shrink: 0;\n}\nbutton.text-editor-button i,\nbutton.text-editor-button .f7-icons,\nbutton.text-editor-button .material-icons {\n font-size: var(--f7-text-editor-button-icon-size);\n font-style: normal;\n}\nbutton.text-editor-button i sup,\nbutton.text-editor-button .f7-icons sup,\nbutton.text-editor-button .material-icons sup,\nbutton.text-editor-button i sub,\nbutton.text-editor-button .f7-icons sub,\nbutton.text-editor-button .material-icons sub {\n font-size: 60%;\n}\n.text-editor-button-divider {\n width: 1px;\n background: var(--f7-text-editor-button-divider-color);\n margin: 0 2px;\n flex-shrink: 0;\n}\n.text-editor-content {\n -webkit-user-modify: read-write;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n outline: 0;\n height: 100%;\n -webkit-user-select: text;\n user-select: text;\n padding: var(--f7-text-editor-padding);\n overflow: auto;\n flex-shrink: 10;\n box-sizing: border-box;\n color: var(--f7-text-editor-text-color);\n font-size: var(--f7-text-editor-font-size);\n font-weight: var(--f7-text-editor-font-weight);\n}\n.text-editor-content .text-editor-placeholder {\n pointer-events: none;\n color: var(--f7-text-editor-placeholder-color);\n}\n.text-editor-content img {\n max-width: 100%;\n}\n.text-editor-content a {\n pointer-events: none;\n}\n.text-editor-popover {\n z-index: 12500;\n width: auto;\n max-width: 80vw;\n}\n.text-editor-popover .popover-inner {\n display: flex;\n flex-wrap: wrap;\n padding: 3px;\n}\n.text-editor-keyboard-toolbar {\n position: absolute;\n z-index: 6000;\n --f7-safe-area-bottom: 0px;\n}\n.text-editor-keyboard-toolbar .toolbar-inner {\n justify-content: flex-start !important;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.text-editor-keyboard-toolbar .toolbar-inner .text-editor-button-divider {\n height: 100%;\n}\n.item-input .text-editor {\n border: none;\n margin: 0;\n background-color: var(--f7-input-bg-color, transparent);\n}\n.item-input .text-editor-content {\n padding-top: var(--f7-textarea-padding-vertical);\n padding-bottom: var(--f7-textarea-padding-vertical);\n padding-left: var(--f7-input-padding-left);\n padding-right: var(--f7-input-padding-right);\n color: var(--f7-input-text-color);\n font-size: var(--f7-input-font-size);\n}\n.item-input .text-editor-toolbar {\n box-shadow: none;\n}\n.item-input .text-editor-toolbar:after {\n display: none !important;\n}\n.item-input-outline .text-editor-content {\n border-radius: var(--f7-input-outline-border-radius);\n}\n.ios button.text-editor-button {\n transition: opacity 300ms;\n}\n.ios button.text-editor-button.active-state {\n opacity: 0.3;\n transition-duration: 0ms;\n}\n.md button.text-editor-button {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n}\n.md .text-editor-keyboard-toolbar .toolbar-inner {\n padding-left: 8px;\n padding-right: 8px;\n}\n.pie-chart {\n position: relative;\n}\n.pie-chart svg {\n display: block;\n width: 100%;\n font-size: 0;\n height: auto;\n margin: 0 auto;\n}\n.pie-chart path {\n transition-duration: 150ms;\n}\n.pie-chart-hidden {\n opacity: 0.4;\n}\n.pie-chart-tooltip {\n pointer-events: none;\n text-align: left;\n font-size: 12px;\n line-height: 1.4;\n white-space: nowrap;\n width: auto;\n max-width: none;\n}\n.pie-chart-tooltip-label {\n display: flex;\n align-items: center;\n}\n.pie-chart-tooltip-color {\n display: inline-block;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n margin-right: 4px;\n}\n:root {\n --f7-area-chart-current-line-stroke-width: 2px;\n --f7-area-chart-current-line-stroke: rgba(0, 0, 0, 0.15);\n --f7-area-chart-axis-text-color: inherit;\n --f7-area-chart-axis-height: 1px;\n --f7-area-chart-axis-font-size: 10px;\n --f7-area-chart-axis-font-weight: 500;\n --f7-area-chart-tooltip-font-size: 12px;\n --f7-area-chart-tooltip-total-font-size: 16px;\n --f7-area-chart-tooltip-total-font-weight: bold;\n --f7-area-chart-tooltip-color-size: 10px;\n --f7-area-chart-legend-font-size: 14px;\n --f7-area-chart-legend-font-weight: 500;\n --f7-area-chart-legend-text-color: inherit;\n --f7-area-chart-legend-padding: 4px 8px;\n --f7-area-chart-legend-border-radius: 4px;\n --f7-area-chart-legend-color-size: 14px;\n --f7-area-chart-line-stroke-width: 2px;\n --f7-area-chart-axis-bg-color: rgba(0, 0, 0, 0.15);\n --f7-area-chart-legend-disabled-text-color: rgba(0, 0, 0, 0.22);\n}\n:root .dark,\n:root.dark {\n --f7-area-chart-axis-bg-color: rgba(255, 255, 255, 0.15);\n --f7-area-chart-legend-disabled-text-color: rgba(255, 255, 255, 0.22);\n}\n.ios {\n --f7-area-chart-tooltip-total-label-text-color: rgba(255, 255, 255, 0.75);\n}\n.md {\n --f7-area-chart-tooltip-total-label-text-color: inherit;\n}\n.area-chart {\n position: relative;\n}\n.area-chart svg {\n display: block;\n width: 100%;\n font-size: 0;\n height: auto;\n margin: 0 auto;\n}\n.area-chart path {\n fill: none;\n stroke-width: var(--f7-area-chart-line-stroke-width);\n}\n.area-chart-current-line {\n stroke: var(--f7-area-chart-current-line-stroke);\n stroke-width: var(--f7-area-chart-current-line-stroke-width);\n}\n.area-chart-axis {\n height: var(--f7-area-chart-axis-height);\n background: var(--f7-area-chart-axis-bg-color);\n color: var(--f7-area-chart-axis-text-color);\n display: flex;\n font-size: var(--f7-area-chart-axis-font-size);\n font-weight: var(--f7-area-chart-axis-font-weight);\n justify-content: space-between;\n line-height: 1;\n margin-bottom: 2em;\n}\n.area-chart-axis > span {\n padding-top: 10px;\n width: 0;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n white-space: nowrap;\n}\n.area-chart-axis > span:first-child {\n justify-content: flex-start;\n}\n.area-chart-axis > span:last-child {\n justify-content: flex-end;\n}\n.area-chart-tooltip {\n pointer-events: none;\n text-align: left;\n font-size: var(--f7-area-chart-tooltip-font-size);\n line-height: 1.4;\n}\n.area-chart-tooltip-label {\n color: var(--f7-area-chart-tooltip-total-label-text-color);\n}\n.area-chart-tooltip-total {\n font-size: var(--f7-area-chart-tooltip-total-font-size);\n font-weight: var(--f7-area-chart-tooltip-total-font-weight);\n}\n.area-chart-tooltip-list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n.area-chart-tooltip-list li {\n white-space: nowrap;\n}\n.area-chart-tooltip-list span {\n display: inline-block;\n width: var(--f7-area-chart-tooltip-color-size);\n height: var(--f7-area-chart-tooltip-color-size);\n border-radius: 50%;\n margin-right: 4px;\n}\n.area-chart-axis ~ .area-chart-legend {\n margin-top: 2em;\n}\n.area-chart-legend {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n font-size: var(--f7-area-chart-legend-font-size);\n width: 100%;\n margin-top: 1em;\n}\n.area-chart-legend-button {\n -webkit-appearance: none !important;\n appearance: none !important;\n background-color: transparent;\n border-radius: 0;\n border: none;\n outline: 0 !important;\n cursor: pointer;\n font-family: inherit;\n font-size: inherit;\n box-shadow: none !important;\n}\n.area-chart-legend-item {\n position: relative;\n color: var(--f7-area-chart-legend-text-color);\n width: auto;\n display: flex;\n align-items: center;\n font-weight: var(--f7-area-chart-legend-font-weight);\n transition-duration: 200ms;\n padding: var(--f7-area-chart-legend-padding);\n border-radius: var(--f7-area-chart-legend-border-radius);\n overflow: hidden;\n}\n.area-chart-legend-item span {\n width: var(--f7-area-chart-legend-color-size);\n height: var(--f7-area-chart-legend-color-size);\n margin-right: 4px;\n border-radius: 50%;\n transition-duration: 200ms;\n}\n.area-chart-legend-item-hidden {\n color: var(--f7-area-chart-legend-disabled-text-color);\n}\n.area-chart-legend-item-hidden span {\n background-color: var(--f7-area-chart-legend-disabled-text-color) !important;\n}\n/* === Breadcrumbs === */\n:root {\n --f7-breadcrumbs-spacing: 12px;\n --f7-breadcrumbs-padding: 2px 0;\n --f7-breadcrumbs-icon-size: 24px;\n --f7-breadcrumbs-separator-color: rgba(0, 0, 0, 0.35);\n}\n:root .dark,\n:root.dark {\n --f7-breadcrumbs-separator-color: rgba(255, 255, 255, 0.35);\n}\n.ios {\n --f7-breadcrumbs-item-bg-color: transparent;\n --f7-breadcrumbs-collapsed-border-radius: 4px;\n --f7-breadcrumbs-collapsed-padding: 0px 6px;\n --f7-breadcrumbs-separator-icon: 'chevron_right_ios';\n --f7-breadcrumbs-font-size: 17px;\n --f7-breadcrumbs-item-border-radius: 0px;\n --f7-breadcrumbs-item-padding: 0px;\n --f7-breadcrumbs-item-font-weight: normal;\n --f7-breadcrumbs-item-active-font-weight: 600;\n --f7-breadcrumbs-item-color: rgba(0, 0, 0, 0.55);\n --f7-breadcrumbs-item-active-color: #000;\n --f7-breadcrumbs-collapsed-bg-color: rgba(0, 0, 0, 0.15);\n --f7-breadcrumbs-collapsed-color: rgba(0, 0, 0, 0.75);\n}\n.ios .dark,\n.ios.dark {\n --f7-breadcrumbs-item-color: rgba(255, 255, 255, 0.75);\n --f7-breadcrumbs-item-active-color: #fff;\n --f7-breadcrumbs-collapsed-bg-color: rgba(255, 255, 255, 0.15);\n --f7-breadcrumbs-collapsed-color: rgba(255, 255, 255, 0.75);\n}\n.md {\n --f7-breadcrumbs-collapsed-border-radius: 8px;\n --f7-breadcrumbs-collapsed-padding: 12px 8px;\n --f7-breadcrumbs-separator-icon: 'chevron_right_md';\n --f7-breadcrumbs-font-size: 14px;\n --f7-breadcrumbs-item-border-radius: 8px;\n --f7-breadcrumbs-item-padding: 4px 8px;\n --f7-breadcrumbs-item-font-weight: 500;\n --f7-breadcrumbs-item-active-font-weight: 500;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-breadcrumbs-item-color: var(--f7-theme-color);\n --f7-breadcrumbs-item-bg-color: var(--f7-md-secondary-container);\n --f7-breadcrumbs-item-active-color: var(--f7-md-on-secondary-container);\n --f7-breadcrumbs-collapsed-color: var(--f7-theme-color);\n --f7-breadcrumbs-collapsed-bg-color: var(--f7-md-secondary-container);\n}\n.breadcrumbs {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n font-size: var(--f7-breadcrumbs-font-size);\n overflow: auto;\n white-space: nowrap;\n padding: var(--f7-breadcrumbs-padding);\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.breadcrumbs::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.breadcrumbs::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.breadcrumbs::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.breadcrumbs-separator,\n.breadcrumbs-item,\n.breadcrumbs-collapsed {\n flex-shrink: 0;\n --f7-touch-ripple-color: transparent !important;\n}\n.breadcrumbs-separator + .breadcrumbs-separator,\n.breadcrumbs-separator + .breadcrumbs-item,\n.breadcrumbs-separator + .breadcrumbs-collapsed,\n.breadcrumbs-item + .breadcrumbs-separator,\n.breadcrumbs-item + .breadcrumbs-item,\n.breadcrumbs-item + .breadcrumbs-collapsed,\n.breadcrumbs-collapsed + .breadcrumbs-separator,\n.breadcrumbs-collapsed + .breadcrumbs-item,\n.breadcrumbs-collapsed + .breadcrumbs-collapsed {\n margin-left: var(--f7-breadcrumbs-spacing);\n}\n.breadcrumbs-item {\n color: var(--f7-breadcrumbs-item-color);\n font-weight: var(--f7-breadcrumbs-item-font-weight);\n padding: var(--f7-breadcrumbs-item-padding);\n background-color: var(--f7-breadcrumbs-item-bg-color);\n display: flex;\n align-items: center;\n border-radius: var(--f7-breadcrumbs-item-border-radius);\n}\n.breadcrumbs-item .icon {\n font-size: var(--f7-breadcrumbs-icon-size);\n width: var(--f7-breadcrumbs-icon-size);\n height: var(--f7-breadcrumbs-icon-size);\n}\n.breadcrumbs-item a {\n color: inherit;\n --f7-touch-ripple-color: transparent !important;\n}\n.breadcrumbs-item-active {\n color: var(--f7-breadcrumbs-item-active-color, var(--f7-breadcrumbs-item-color));\n font-weight: var(--f7-breadcrumbs-item-active-font-weight);\n}\n.breadcrumbs-separator {\n color: var(--f7-breadcrumbs-separator-color);\n height: 24px;\n overflow: hidden;\n display: flex;\n align-items: center;\n}\n.breadcrumbs-separator::after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n content: var(--f7-breadcrumbs-separator-icon);\n width: 12px;\n}\n.ios .breadcrumbs-separator::after {\n font-size: 12px;\n height: 11px;\n}\n.md .breadcrumbs-separator::after {\n font-size: 18px;\n height: 18px;\n}\n.breadcrumbs-collapsed {\n display: flex;\n align-items: center;\n padding: var(--f7-breadcrumbs-collapsed-padding);\n background: var(--f7-breadcrumbs-collapsed-bg-color);\n min-height: 1em;\n border-radius: var(--f7-breadcrumbs-collapsed-border-radius);\n cursor: pointer;\n}\n.breadcrumbs-collapsed::before,\n.breadcrumbs-collapsed::after,\n.breadcrumbs-collapsed span {\n content: '';\n width: 4px;\n height: 4px;\n background: var(--f7-breadcrumbs-collapsed-color);\n border-radius: 50%;\n}\n.breadcrumbs-collapsed span {\n margin: 0 3px;\n}\n/* === Typography === */\n:root {\n --f7-typography-padding: 16px;\n --f7-typography-margin: 16px;\n}\n.display-flex {\n display: flex !important;\n}\n.display-block {\n display: block !important;\n}\n.display-inline-flex {\n display: inline-flex !important;\n}\n.display-inline-block {\n display: inline-block !important;\n}\n.display-inline {\n display: inline !important;\n}\n.display-none {\n display: none !important;\n}\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n.flex-shrink-2 {\n flex-shrink: 2 !important;\n}\n.flex-shrink-3 {\n flex-shrink: 3 !important;\n}\n.flex-shrink-4 {\n flex-shrink: 4 !important;\n}\n.flex-shrink-5 {\n flex-shrink: 5 !important;\n}\n.flex-shrink-6 {\n flex-shrink: 6 !important;\n}\n.flex-shrink-7 {\n flex-shrink: 7 !important;\n}\n.flex-shrink-8 {\n flex-shrink: 8 !important;\n}\n.flex-shrink-9 {\n flex-shrink: 9 !important;\n}\n.flex-shrink-10 {\n flex-shrink: 10 !important;\n}\n.flex-direction-row {\n flex-direction: row !important;\n}\n.flex-direction-row-reverse {\n flex-direction: row-reverse !important;\n}\n.flex-direction-column {\n flex-direction: column !important;\n}\n.flex-direction-column-reverse {\n flex-direction: column-reverse !important;\n}\n.justify-content-flex-start {\n justify-content: flex-start !important;\n}\n.justify-content-center {\n justify-content: center !important;\n}\n.justify-content-flex-end {\n justify-content: flex-end !important;\n}\n.justify-content-space-between {\n justify-content: space-between !important;\n}\n.justify-content-space-around {\n justify-content: space-around !important;\n}\n.justify-content-space-evenly {\n justify-content: space-evenly !important;\n}\n.justify-content-stretch {\n justify-content: stretch !important;\n}\n.justify-content-start {\n justify-content: start !important;\n}\n.justify-content-end {\n justify-content: end !important;\n}\n.justify-content-left {\n justify-content: left !important;\n}\n.justify-content-right {\n justify-content: right !important;\n}\n.align-content-flex-start {\n align-content: flex-start !important;\n}\n.align-content-flex-end {\n align-content: flex-end !important;\n}\n.align-content-center {\n align-content: center !important;\n}\n.align-content-space-between {\n align-content: space-between !important;\n}\n.align-content-space-around {\n align-content: space-around !important;\n}\n.align-content-stretch {\n align-content: stretch !important;\n}\n.align-items-baseline {\n align-items: baseline !important;\n}\n.align-items-flex-start {\n align-items: flex-start !important;\n}\n.align-items-flex-end {\n align-items: flex-end !important;\n}\n.align-items-center {\n align-items: center !important;\n}\n.align-items-stretch {\n align-items: stretch !important;\n}\n.align-self-flex-start {\n align-self: flex-start !important;\n}\n.align-self-flex-end {\n align-self: flex-end !important;\n}\n.align-self-center {\n align-self: center !important;\n}\n.align-self-stretch {\n align-self: stretch !important;\n}\n.text-align-left {\n text-align: left !important;\n}\n.text-align-center {\n text-align: center !important;\n}\n.text-align-right {\n text-align: right !important;\n}\n.text-align-justify {\n text-align: justify !important;\n}\n.float-left {\n float: left !important;\n}\n.float-right {\n float: right !important;\n}\n.float-none {\n float: none !important;\n}\n.vertical-align-bottom {\n vertical-align: bottom !important;\n}\n.vertical-align-middle {\n vertical-align: middle !important;\n}\n.vertical-align-top {\n vertical-align: top !important;\n}\n.no-padding {\n padding: 0 !important;\n}\n.no-padding-left {\n padding-left: 0 !important;\n}\n.no-padding-right {\n padding-right: 0 !important;\n}\n.no-padding-horizontal {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n.no-padding-top {\n padding-top: 0 !important;\n}\n.no-padding-bottom {\n padding-bottom: 0 !important;\n}\n.no-padding-vertical {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n.no-margin {\n margin: 0 !important;\n}\n.no-margin-left {\n margin-left: 0 !important;\n}\n.no-margin-right {\n margin-right: 0 !important;\n}\n.no-margin-horizontal {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n.no-margin-top {\n margin-top: 0 !important;\n}\n.no-margin-bottom {\n margin-bottom: 0 !important;\n}\n.no-margin-vertical {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n.width-auto {\n width: auto !important;\n}\n.width-100 {\n width: 100% !important;\n}\n.padding {\n padding: var(--f7-typography-padding) !important;\n}\n.padding-half {\n padding: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-top {\n padding-top: var(--f7-typography-padding) !important;\n}\n.padding-top-half {\n padding-top: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-bottom {\n padding-bottom: var(--f7-typography-padding) !important;\n}\n.padding-bottom-half {\n padding-bottom: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-left {\n padding-left: var(--f7-typography-padding) !important;\n}\n.padding-left-half {\n padding-left: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-right {\n padding-right: var(--f7-typography-padding) !important;\n}\n.padding-right-half {\n padding-right: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-vertical {\n padding-top: var(--f7-typography-padding) !important;\n padding-bottom: var(--f7-typography-padding) !important;\n}\n.padding-vertical-half {\n padding-top: calc(var(--f7-typography-padding) / 2) !important;\n padding-bottom: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-horizontal {\n padding-left: var(--f7-typography-padding) !important;\n padding-right: var(--f7-typography-padding) !important;\n}\n.padding-horizontal-half {\n padding-left: calc(var(--f7-typography-padding) / 2) !important;\n padding-right: calc(var(--f7-typography-padding) / 2) !important;\n}\n.margin {\n margin: var(--f7-typography-margin) !important;\n}\n.margin-half {\n margin: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-top {\n margin-top: var(--f7-typography-margin) !important;\n}\n.margin-top-half {\n margin-top: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-bottom {\n margin-bottom: var(--f7-typography-margin) !important;\n}\n.margin-bottom-half {\n margin-bottom: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-left {\n margin-left: var(--f7-typography-margin) !important;\n}\n.margin-left-half {\n margin-left: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-right {\n margin-right: var(--f7-typography-margin) !important;\n}\n.margin-right-half {\n margin-right: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-vertical {\n margin-top: var(--f7-typography-margin) !important;\n margin-bottom: var(--f7-typography-margin) !important;\n}\n.margin-vertical-half {\n margin-top: calc(var(--f7-typography-margin) / 2) !important;\n margin-bottom: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-horizontal {\n margin-left: var(--f7-typography-margin) !important;\n margin-right: var(--f7-typography-margin) !important;\n}\n.margin-horizontal-half {\n margin-left: calc(var(--f7-typography-margin) / 2) !important;\n margin-right: calc(var(--f7-typography-margin) / 2) !important;\n}\n[class*='text-color-'] {\n color: var(--f7-theme-color-text-color) !important;\n}\n[class*='bg-color-'] {\n background-color: var(--f7-theme-color-bg-color) !important;\n}\n[class*='border-color-'] {\n border-color: var(--f7-theme-color-border-color) !important;\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/apps/presentationeditor/mobile/dist/js/612.js b/apps/presentationeditor/mobile/dist/js/612.js new file mode 100644 index 0000000000..03cd69e6e9 --- /dev/null +++ b/apps/presentationeditor/mobile/dist/js/612.js @@ -0,0 +1,2 @@ +/*! For license information please see 612.js.LICENSE.txt */ +"use strict";(self.webpackChunkdocumenteditor=self.webpackChunkdocumenteditor||[]).push([[612],{"../../apps/presentationeditor/mobile/src/less/app.less":function(e,s,t){t.r(s)}}]); \ No newline at end of file diff --git a/apps/presentationeditor/mobile/dist/js/612.js.LICENSE.txt b/apps/presentationeditor/mobile/dist/js/612.js.LICENSE.txt new file mode 100644 index 0000000000..a09e9e3ef9 --- /dev/null +++ b/apps/presentationeditor/mobile/dist/js/612.js.LICENSE.txt @@ -0,0 +1,5 @@ +/*! + * + * * Version: 8.0.1 (build: 0) + * + */ diff --git a/apps/presentationeditor/mobile/dist/js/923.js b/apps/presentationeditor/mobile/dist/js/923.js new file mode 100644 index 0000000000..bcdf918733 --- /dev/null +++ b/apps/presentationeditor/mobile/dist/js/923.js @@ -0,0 +1,2 @@ +/*! For license information please see 923.js.LICENSE.txt */ +"use strict";(self.webpackChunkdocumenteditor=self.webpackChunkdocumenteditor||[]).push([[923],{"../../apps/presentationeditor/mobile/src/less/app.less":function(e,s,t){t.r(s)}}]); \ No newline at end of file diff --git a/apps/presentationeditor/mobile/dist/js/923.js.LICENSE.txt b/apps/presentationeditor/mobile/dist/js/923.js.LICENSE.txt new file mode 100644 index 0000000000..a09e9e3ef9 --- /dev/null +++ b/apps/presentationeditor/mobile/dist/js/923.js.LICENSE.txt @@ -0,0 +1,5 @@ +/*! + * + * * Version: 8.0.1 (build: 0) + * + */ diff --git a/apps/presentationeditor/mobile/dist/js/app.js b/apps/presentationeditor/mobile/dist/js/app.js new file mode 100644 index 0000000000..e203ee62d9 --- /dev/null +++ b/apps/presentationeditor/mobile/dist/js/app.js @@ -0,0 +1,3 @@ +/*! For license information please see app.js.LICENSE.txt */ +(function(){var __webpack_modules__={"../../apps/common/Analytics.js":function(){void 0===window.Common&&(window.Common={}),Common.component=Common.component||{},Common.Analytics=Common.component.Analytics=new function(){var e;return{initialize:function(t,n){if(void 0===t)throw"Analytics: invalid id.";if(void 0===n||"[object String]"!==Object.prototype.toString.apply(n))throw"Analytics: invalid category type.";e=n,$("head").append(''\n );\n },\n\n trackEvent: function(action, label, value) {\n\n if (typeof action !== 'undefined' && Object.prototype.toString.apply(action) !== '[object String]')\n throw 'Analytics: invalid action type.';\n\n if (typeof label !== 'undefined' && Object.prototype.toString.apply(label) !== '[object String]')\n throw 'Analytics: invalid label type.';\n\n if (typeof value !== 'undefined' && !(Object.prototype.toString.apply(value) === '[object Number]' && isFinite(value)))\n throw 'Analytics: invalid value type.';\n\n if (typeof _gaq === 'undefined')\n return;\n\n if (_category === 'undefined')\n throw 'Analytics is not initialized.';\n\n _gaq.push(['_trackEvent', _category, action, label, value]);\n }\n }\n })();\n","/*\n * (c) Copyright Ascensio System SIA 2010-2023\n *\n * This program is a free software product. You can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License (AGPL)\n * version 3 as published by the Free Software Foundation. In accordance with\n * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect\n * that Ascensio System SIA expressly excludes the warranty of non-infringement\n * of any third-party rights.\n *\n * This program is distributed WITHOUT ANY WARRANTY; without even the implied\n * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For\n * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html\n *\n * You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish\n * street, Riga, Latvia, EU, LV-1050.\n *\n * The interactive user interfaces in modified source and object code versions\n * of the Program must display Appropriate Legal Notices, as required under\n * Section 5 of the GNU AGPL version 3.\n *\n * Pursuant to Section 7(b) of the License you must retain the original Product\n * logo when distributing the program. Pursuant to Section 7(e) we decline to\n * grant you any rights under trademark law for use of our trademarks.\n *\n * All the Product's GUI elements, including illustrations and icon sets, as\n * well as technical writing content are licensed under the terms of the\n * Creative Commons Attribution-ShareAlike 4.0 International. See the License\n * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode\n *\n */\n\nif (window.Common === undefined) {\n window.Common = {};\n}\n\n Common.Gateway = new(function() {\n var me = this,\n $me = $(me);\n\n var commandMap = {\n 'init': function(data) {\n $me.trigger('init', data);\n },\n\n 'openDocument': function(data) {\n $me.trigger('opendocument', data);\n },\n\n 'openDocumentFromBinary': function(data) {\n $me.trigger('opendocumentfrombinary', data);\n },\n\n 'showMessage': function(data) {\n $me.trigger('showmessage', data);\n },\n\n 'applyEditRights': function(data) {\n $me.trigger('applyeditrights', data);\n },\n\n 'processSaveResult': function(data) {\n $me.trigger('processsaveresult', data);\n },\n\n 'processRightsChange': function(data) {\n $me.trigger('processrightschange', data);\n },\n\n 'refreshHistory': function(data) {\n $me.trigger('refreshhistory', data);\n },\n\n 'setHistoryData': function(data) {\n $me.trigger('sethistorydata', data);\n },\n\n 'setEmailAddresses': function(data) {\n $me.trigger('setemailaddresses', data);\n },\n\n 'setActionLink': function (data) {\n $me.trigger('setactionlink', data.url);\n },\n\n 'processMailMerge': function(data) {\n $me.trigger('processmailmerge', data);\n },\n\n 'downloadAs': function(data) {\n $me.trigger('downloadas', data);\n },\n\n 'processMouse': function(data) {\n $me.trigger('processmouse', data);\n },\n\n 'internalCommand': function(data) {\n $me.trigger('internalcommand', data);\n },\n\n 'resetFocus': function(data) {\n $me.trigger('resetfocus', data);\n },\n\n 'setUsers': function(data) {\n $me.trigger('setusers', data);\n },\n\n 'showSharingSettings': function(data) {\n $me.trigger('showsharingsettings', data);\n },\n\n 'setSharingSettings': function(data) {\n $me.trigger('setsharingsettings', data);\n },\n\n 'insertImage': function(data) {\n $me.trigger('insertimage', data);\n },\n\n 'setMailMergeRecipients': function(data) {\n $me.trigger('setmailmergerecipients', data);\n },\n\n 'setRevisedFile': function(data) {\n $me.trigger('setrevisedfile', data);\n },\n\n 'setFavorite': function(data) {\n $me.trigger('setfavorite', data);\n },\n\n 'requestClose': function(data) {\n $me.trigger('requestclose', data);\n },\n\n 'blurFocus': function(data) {\n $me.trigger('blurfocus', data);\n },\n\n 'grabFocus': function(data) {\n $me.trigger('grabfocus', data);\n },\n\n 'setReferenceData': function(data) {\n $me.trigger('setreferencedata', data);\n },\n\n 'setRequestedDocument': function(data) {\n $me.trigger('setrequesteddocument', data);\n },\n\n 'setRequestedSpreadsheet': function(data) {\n $me.trigger('setrequestedspreadsheet', data);\n },\n\n 'setReferenceSource': function(data) {\n $me.trigger('setreferencesource', data);\n },\n\n 'startFilling': function(data) {\n $me.trigger('startfilling', data);\n }\n };\n\n var _postMessage = function(msg, buffer) {\n // TODO: specify explicit origin\n if (window.parent && window.JSON) {\n msg.frameEditorId = window.frameEditorId;\n buffer ? window.parent.postMessage(msg, \"*\", [buffer]) : window.parent.postMessage(window.JSON.stringify(msg), \"*\");\n }\n };\n\n var _onMessage = function(msg) {\n // TODO: check message origin\n if (msg.origin !== window.parentOrigin && msg.origin !== window.location.origin && !(msg.origin===\"null\" && (window.parentOrigin===\"file://\" || window.location.origin===\"file://\"))) return;\n\n var data = msg.data;\n if (data && data.command === 'openDocumentFromBinary') {\n handler = commandMap[data.command];\n if (handler) {\n handler.call(this, data.data);\n }\n return;\n }\n\n if (Object.prototype.toString.apply(data) !== '[object String]' || !window.JSON) {\n return;\n }\n\n var cmd, handler;\n\n try {\n cmd = window.JSON.parse(data)\n } catch(e) {\n cmd = '';\n }\n\n if (cmd) {\n handler = commandMap[cmd.command];\n if (handler) {\n handler.call(this, cmd.data);\n }\n }\n };\n\n var fn = function(e) { _onMessage(e); };\n\n if (window.attachEvent) {\n window.attachEvent('onmessage', fn);\n } else {\n window.addEventListener('message', fn, false);\n }\n\n return {\n\n appReady: function() {\n _postMessage({ event: 'onAppReady' });\n },\n\n requestEditRights: function() {\n _postMessage({ event: 'onRequestEditRights' });\n },\n\n requestHistory: function() {\n _postMessage({ event: 'onRequestHistory' });\n },\n\n requestHistoryData: function(revision) {\n _postMessage({\n event: 'onRequestHistoryData',\n data: revision\n });\n },\n\n requestRestore: function(version, url, fileType) {\n _postMessage({\n event: 'onRequestRestore',\n data: {\n version: version,\n url: url,\n fileType: fileType\n }\n });\n },\n\n requestEmailAddresses: function() {\n _postMessage({ event: 'onRequestEmailAddresses' });\n },\n\n requestStartMailMerge: function() {\n _postMessage({event: 'onRequestStartMailMerge'});\n },\n\n requestHistoryClose: function(revision) {\n _postMessage({event: 'onRequestHistoryClose'});\n },\n\n reportError: function(code, description) {\n _postMessage({\n event: 'onError',\n data: {\n errorCode: code,\n errorDescription: description\n }\n });\n },\n\n reportWarning: function(code, description) {\n _postMessage({\n event: 'onWarning',\n data: {\n warningCode: code,\n warningDescription: description\n }\n });\n },\n\n sendInfo: function(info) {\n _postMessage({\n event: 'onInfo',\n data: info\n });\n },\n\n setDocumentModified: function(modified) {\n _postMessage({\n event: 'onDocumentStateChange',\n data: modified\n });\n },\n\n internalMessage: function(type, data) {\n _postMessage({\n event: 'onInternalMessage',\n data: {\n type: type,\n data: data\n }\n });\n },\n\n updateVersion: function() {\n _postMessage({ event: 'onOutdatedVersion' });\n },\n\n downloadAs: function(url, fileType) {\n _postMessage({\n event: 'onDownloadAs',\n data: {\n url: url,\n fileType: fileType\n }\n });\n },\n\n requestSaveAs: function(url, title, fileType) {\n _postMessage({\n event: 'onRequestSaveAs',\n data: {\n url: url,\n title: title,\n fileType: fileType\n }\n });\n },\n\n collaborativeChanges: function() {\n _postMessage({event: 'onCollaborativeChanges'});\n },\n\n requestRename: function(title) {\n _postMessage({event: 'onRequestRename', data: title});\n },\n\n metaChange: function(meta) {\n _postMessage({event: 'onMetaChange', data: meta});\n },\n\n documentReady: function() {\n _postMessage({ event: 'onDocumentReady' });\n },\n\n requestClose: function() {\n _postMessage({event: 'onRequestClose'});\n },\n\n requestMakeActionLink: function (config) {\n _postMessage({event:'onMakeActionLink', data: config});\n },\n\n requestUsers: function (command, id) {\n _postMessage({event:'onRequestUsers', data: {c: command, id: id}});\n },\n\n requestSendNotify: function (emails) {\n _postMessage({event:'onRequestSendNotify', data: emails});\n },\n\n requestInsertImage: function (command) {\n _postMessage({event:'onRequestInsertImage', data: {c: command}});\n },\n\n requestMailMergeRecipients: function () {\n _postMessage({event:'onRequestMailMergeRecipients'});\n },\n\n requestCompareFile: function () {\n _postMessage({event:'onRequestCompareFile'});\n },\n\n requestSharingSettings: function () {\n _postMessage({event:'onRequestSharingSettings'});\n },\n\n requestCreateNew: function () {\n _postMessage({event:'onRequestCreateNew'});\n },\n\n requestReferenceData: function (data) {\n _postMessage({event:'onRequestReferenceData', data: data});\n },\n\n requestOpen: function (data) {\n _postMessage({event:'onRequestOpen', data: data});\n },\n\n requestSelectDocument: function (command) {\n _postMessage({event:'onRequestSelectDocument', data: {c: command}});\n },\n\n requestSelectSpreadsheet: function (command) {\n _postMessage({event:'onRequestSelectSpreadsheet', data: {c: command}});\n },\n\n requestReferenceSource: function () {\n _postMessage({event:'onRequestReferenceSource'});\n },\n\n requestStartFilling: function () {\n _postMessage({event:'onRequestStartFilling'});\n },\n\n pluginsReady: function() {\n _postMessage({ event: 'onPluginsReady' });\n },\n\n saveDocument: function(data) {\n data && _postMessage({\n event: 'onSaveDocument',\n data: data.buffer\n }, data.buffer);\n },\n\n submitForm: function() {\n _postMessage({event: 'onSubmit'});\n },\n\n on: function(event, handler){\n var localHandler = function(event, data){\n handler.call(me, data)\n };\n\n $me.on(event, localHandler);\n }\n }\n\n })();\n","/*\n * (c) Copyright Ascensio System SIA 2010-2023\n *\n * This program is a free software product. You can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License (AGPL)\n * version 3 as published by the Free Software Foundation. In accordance with\n * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect\n * that Ascensio System SIA expressly excludes the warranty of non-infringement\n * of any third-party rights.\n *\n * This program is distributed WITHOUT ANY WARRANTY; without even the implied\n * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For\n * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html\n *\n * You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish\n * street, Riga, Latvia, EU, LV-1050.\n *\n * The interactive user interfaces in modified source and object code versions\n * of the Program must display Appropriate Legal Notices, as required under\n * Section 5 of the GNU AGPL version 3.\n *\n * Pursuant to Section 7(b) of the License you must retain the original Product\n * logo when distributing the program. Pursuant to Section 7(e) we decline to\n * grant you any rights under trademark law for use of our trademarks.\n *\n * All the Product's GUI elements, including illustrations and icon sets, as\n * well as technical writing content are licensed under the terms of the\n * Creative Commons Attribution-ShareAlike 4.0 International. See the License\n * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode\n *\n */\nif (window.Common === undefined) {\n window.Common = {};\n}\n\nif (Common.Utils === undefined) {\n Common.Utils = {};\n}\n\nfunction _extend_object(dest, source) {\n if ( typeof _ != \"undefined\" ) {\n return _.extend({}, dest, source);\n } else\n if ( !!Object ) {\n return Object.assign({}, dest, source);\n }\n\n return source;\n}\n\nvar utils = new(function() {\n var userAgent = navigator.userAgent.toLowerCase(),\n check = function(regex){\n return regex.test(userAgent);\n },\n isStrict = document.compatMode == \"CSS1Compat\",\n version = function (is, regex) {\n var m;\n return (is && (m = regex.exec(userAgent))) ? parseFloat(m[1]) : 0;\n },\n docMode = document.documentMode,\n isEdge = check(/edge/),\n isOpera = check(/opera/),\n isOpera10_5 = isOpera && check(/version\\/10\\.5/),\n isIE = !isOpera && (check(/msie/) || check(/trident/) || check(/edge/)),\n isIE7 = isIE && ((check(/msie 7/) && docMode != 8 && docMode != 9 && docMode != 10) || docMode == 7),\n isIE8 = isIE && ((check(/msie 8/) && docMode != 7 && docMode != 9 && docMode != 10) || docMode == 8),\n isIE9 = isIE && ((check(/msie 9/) && docMode != 7 && docMode != 8 && docMode != 10) || docMode == 9),\n isIE10 = isIE && ((check(/msie 10/) && docMode != 7 && docMode != 8 && docMode != 9) || docMode == 10),\n isIE11 = isIE && ((check(/trident\\/7\\.0/) && docMode != 7 && docMode != 8 && docMode != 9 && docMode != 10) || docMode == 11),\n isIE6 = isIE && check(/msie 6/),\n isChrome = !isIE && check(/\\bchrome\\b/),\n isWebKit = !isIE && check(/webkit/),\n isSafari = !isIE && !isChrome && check(/safari/),\n isSafari2 = isSafari && check(/applewebkit\\/4/), // unique to Safari 2\n isSafari3 = isSafari && check(/version\\/3/),\n isSafari4 = isSafari && check(/version\\/4/),\n isSafari5_0 = isSafari && check(/version\\/5\\.0/),\n isSafari5 = isSafari && check(/version\\/5/),\n isGecko = !isWebKit && !isIE && check(/gecko/), // IE11 adds \"like gecko\" into the user agent string\n isGecko3 = isGecko && check(/rv:1\\.9/),\n isGecko4 = isGecko && check(/rv:2\\.0/),\n isGecko5 = isGecko && check(/rv:5\\./),\n isGecko10 = isGecko && check(/rv:10\\./),\n isFF3_0 = isGecko3 && check(/rv:1\\.9\\.0/),\n isFF3_5 = isGecko3 && check(/rv:1\\.9\\.1/),\n isFF3_6 = isGecko3 && check(/rv:1\\.9\\.2/),\n isWindows = check(/windows|win32/),\n isMac = check(/macintosh|mac os x/),\n isLinux = check(/linux/),\n chromeVersion = version(true, /\\bchrome\\/(\\d+\\.\\d+)/),\n firefoxVersion = version(true, /\\bfirefox\\/(\\d+\\.\\d+)/),\n ieVersion = version(isIE, /msie (\\d+\\.\\d+)/),\n operaVersion = version(isOpera, /version\\/(\\d+\\.\\d+)/),\n safariVersion = version(isSafari, /version\\/(\\d+\\.\\d+)/),\n webKitVersion = version(isWebKit, /webkit\\/(\\d+\\.\\d+)/),\n isSecure = /^https/i.test(window.location.protocol),\n emailRe = /^(mailto:)?([a-z0-9'\\._-]+@[a-z0-9\\.-]+\\.[a-z0-9]{2,4})([a-яё0-9\\._%+-=\\? :&]*)/i,\n ipRe = /^(((https?)|(ftps?)):\\/\\/)?([\\-\\wа-яё]*:?[\\-\\wа-яё]*@)?(((1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])\\.){3}(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9]))(:\\d+)?(\\/[%\\-\\wа-яё]*(\\.[\\wа-яё]{2,})?(([\\wа-яё\\-\\.\\?\\\\\\/+@&#;:`~=%!,\\(\\)]*)(\\.[\\wа-яё]{2,})?)*)*\\/?/i,\n hostnameRe = /^(((https?)|(ftps?)):\\/\\/)?([\\-\\wа-яё]*:?[\\-\\wа-яё]*@)?(([\\-\\wа-яё]+\\.)+[\\wа-яё\\-]{2,}(:\\d+)?(\\/[%\\-\\wа-яё]*(\\.[\\wа-яё]{2,})?(([\\wа-яё\\-\\.\\?\\\\\\/\\+@&#;:`'~=%!,\\(\\)]*)(\\.[\\wа-яё]{2,})?)*)*\\/?)/i,\n localRe = /^(((https?)|(ftps?)):\\/\\/)([\\-\\wа-яё]*:?[\\-\\wа-яё]*@)?(([\\-\\wа-яё]+)(:\\d+)?(\\/[%\\-\\wа-яё]*(\\.[\\wа-яё]{2,})?(([\\wа-яё\\-\\.\\?\\\\\\/\\+@&#;:`'~=%!,\\(\\)]*)(\\.[\\wа-яё]{2,})?)*)*\\/?)/i,\n emailStrongRe = /(mailto:)?([a-z0-9'\\._-]+@[a-z0-9\\.-]+\\.[a-z0-9]{2,4})([a-яё0-9\\._%+-=\\?:&]*)/ig,\n emailAddStrongRe = /(mailto:|\\s[@]|\\s[+])?([a-z0-9'\\._-]+@[a-z0-9\\.-]+\\.[a-z0-9]{2,4})([a-яё0-9\\._%\\+-=\\?:&]*)/ig,\n ipStrongRe = /(((https?)|(ftps?)):\\/\\/([\\-\\wа-яё]*:?[\\-\\wа-яё]*@)?)(((1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])\\.){3}(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9]))(:\\d+)?(\\/[%\\-\\wа-яё]*(\\.[\\wа-яё]{2,})?(([\\wа-яё\\-\\.\\?\\\\\\/\\+@&#;:`~=%!,\\(\\)]*)(\\.[\\wа-яё]{2,})?)*)*\\/?/ig,\n hostnameStrongRe = /((((https?)|(ftps?)):\\/\\/([\\-\\wа-яё]*:?[\\-\\wа-яё]*@)?)|(([\\-\\wа-яё]*:?[\\-\\wа-яё]*@)?www\\.))((([\\-\\wа-яё]+\\.)+[\\wа-яё\\-]{2,}|([\\-\\wа-яё]+))(:\\d+)?(\\/[%\\-\\wа-яё]*(\\.[\\wа-яё]{2,})?(([\\wа-яё\\-\\.\\?\\\\\\/\\+@&#;:`~=%!,\\(\\)]*)(\\.[\\wа-яё]{2,})?)*)*\\/?)/ig,\n documentSettingsType = {\n \tParagraph : 0,\n Table : 1,\n Header : 2,\n TextArt : 3,\n Shape : 4,\n Image : 5,\n Slide : 6,\n Chart : 7,\n MailMerge : 8,\n Signature : 9,\n Pivot : 10,\n Cell : 11,\n Slicer : 12,\n Form : 13\n },\n importTextType = {\n DRM: 0,\n CSV: 1,\n TXT: 2,\n Paste: 3,\n Columns: 4,\n Data: 5\n },\n isMobile = /android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent || navigator.vendor || window.opera),\n me = this,\n checkSize = function() {\n var scale = {};\n if ( !!window.AscCommon && !!window.AscCommon.checkDeviceScale ) {\n scale = window.AscCommon.checkDeviceScale();\n AscCommon.correctApplicationScale(scale);\n } else {\n var str_mq_125 = \"screen and (-webkit-min-device-pixel-ratio: 1.25) and (-webkit-max-device-pixel-ratio: 1.49), \" +\n \"screen and (min-resolution: 1.25dppx) and (max-resolution: 1.49dppx)\";\n var str_mq_150 = \"screen and (-webkit-min-device-pixel-ratio: 1.5) and (-webkit-max-device-pixel-ratio: 1.74), \" +\n \"screen and (min-resolution: 1.5dppx) and (max-resolution: 1.74dppx)\";\n var str_mq_175 = \"screen and (-webkit-min-device-pixel-ratio: 1.75) and (-webkit-max-device-pixel-ratio: 1.99), \" +\n \"screen and (min-resolution: 1.75dppx) and (max-resolution: 1.99dppx)\";\n var str_mq_200 = \"screen and (-webkit-min-device-pixel-ratio: 2), \" +\n \"screen and (min-resolution: 2dppx), screen and (min-resolution: 192dpi)\";\n const str_mq_225 = \"screen and (-webkit-min-device-pixel-ratio: 2.25), \" +\n \"screen and (min-resolution: 2.25dppx), screen and (min-resolution: 216dpi)\";\n\n if ( window.matchMedia(str_mq_125).matches ) {\n scale.devicePixelRatio = 1.5;\n } else\n if ( window.matchMedia(str_mq_150).matches ) {\n scale.devicePixelRatio = 1.5;\n } else\n if ( window.matchMedia(str_mq_175).matches ) {\n scale.devicePixelRatio = 1.75;\n } else\n if ( window.matchMedia(str_mq_200).matches )\n scale.devicePixelRatio = 2;\n else scale.devicePixelRatio = 1;\n\n if ( window.matchMedia(str_mq_225).matches ) {\n scale.devicePixelRatio = 2.25;\n }\n }\n\n var $root = $(document.body);\n var classes = document.body.className;\n var clear_list = classes.replace(/pixel-ratio__[\\w-]+/gi,'').trim();\n if ( scale.devicePixelRatio < 1.25 ) {\n if ( /pixel-ratio__/.test(classes) ) {\n document.body.className = clear_list;\n }\n } else\n if ( scale.devicePixelRatio < 1.5 ) {\n if ( !/pixel-ratio__1_25/.test(classes) ) {\n document.body.className = clear_list + ' pixel-ratio__1_25';\n }\n } else\n if ( scale.devicePixelRatio < 1.75 ) {\n if ( !/pixel-ratio__1_5/.test(classes) ) {\n document.body.className = clear_list + ' pixel-ratio__1_5';\n }\n } else\n if ( !(scale.devicePixelRatio < 1.75) && scale.devicePixelRatio < 2 ) {\n if ( !/pixel-ratio__1_75/.test(classes) ) {\n document.body.className = clear_list + ' pixel-ratio__1_75';\n }\n } else\n if ( !(scale.devicePixelRatio < 2) && scale.devicePixelRatio < 2.25 ) {\n if ( !/pixel-ratio__2\\b/.test(classes) ) {\n document.body.className = clear_list + ' pixel-ratio__2';\n }\n } else {\n // $root.addClass('pixel-ratio__2_5');\n if ( !/pixel-ratio__2_5/.test(classes) ) {\n document.body.className = clear_list + ' pixel-ratio__2_5';\n }\n }\n\n me.zoom = scale.correct ? scale.zoom : 1;\n me.innerWidth = window.innerWidth * me.zoom;\n me.innerHeight = window.innerHeight * me.zoom;\n me.applicationPixelRatio = scale.applicationPixelRatio || scale.devicePixelRatio;\n };\n checkSizeIE = function() {\n me.innerWidth = window.innerWidth;\n me.innerHeight = window.innerHeight;\n },\n isOffsetUsedZoom = function() {\n if (isChrome && 128 <= chromeVersion)\n return (me.zoom === 1) ? false : true;\n return false;\n },\n getBoundingClientRect = function(element) {\n let rect = element.getBoundingClientRect();\n if (!isOffsetUsedZoom())\n return rect;\n\n let koef = me.zoom;\n let newRect = {}\n if (rect.x!==undefined) newRect.x = rect.x * koef;\n if (rect.y!==undefined) newRect.y = rect.y * koef;\n if (rect.width!==undefined) newRect.width = rect.width * koef;\n if (rect.height!==undefined) newRect.height = rect.height * koef;\n\n if (rect.left!==undefined) newRect.left = rect.left * koef;\n if (rect.top!==undefined) newRect.top = rect.top * koef;\n if (rect.right!==undefined) newRect.right = rect.right * koef;\n if (rect.bottom!==undefined) newRect.bottom = rect.bottom * koef;\n return newRect;\n },\n getOffsetLeft = function(element) {\n if (!isOffsetUsedZoom())\n return element.offsetLeft;\n return element.offsetLeft * me.zoom;\n },\n getOffsetTop = function(element) {\n if (!isOffsetUsedZoom())\n return element.offsetTop;\n return element.offsetTop * me.zoom;\n },\n getOffset = function($element) {\n let pos = $element.offset();\n if (!isOffsetUsedZoom())\n return pos;\n return {left: pos.left * me.zoom, top: pos.top * me.zoom};\n },\n getPosition = function($element) {\n let pos = $element.position();\n if (!isOffsetUsedZoom())\n return pos;\n return {left: pos.left * me.zoom, top: pos.top * me.zoom};\n };\n\n me.zoom = 1;\n me.applicationPixelRatio = 1;\n me.innerWidth = window.innerWidth;\n me.innerHeight = window.innerHeight;\n if ( isIE ) {\n $(document.body).addClass('ie');\n $(window).on('resize', checkSizeIE);\n } else {\n checkSize();\n $(window).on('resize', checkSize);\n }\n\n return {\n checkSize: checkSize,\n\n userAgent: userAgent,\n isStrict: isStrict,\n isIEQuirks: isIE && (!isStrict && (isIE6 || isIE7 || isIE8 || isIE9)),\n isOpera : isOpera,\n isOpera10_5 : isOpera10_5,\n isWebKit : isWebKit,\n isChrome : isChrome,\n isSafari : isSafari,\n isSafari3 : isSafari3,\n isSafari4 : isSafari4,\n isSafari5 : isSafari5,\n isSafari5_0 : isSafari5_0,\n isSafari2 : isSafari2,\n isIE : isIE,\n isIE6 : isIE6,\n isIE7 : isIE7,\n isIE7m : isIE6 || isIE7,\n isIE7p : isIE && !isIE6,\n isIE8 : isIE8,\n isIE8m : isIE6 || isIE7 || isIE8,\n isIE8p : isIE && !(isIE6 || isIE7),\n isIE9 : isIE9,\n isIE9m : isIE6 || isIE7 || isIE8 || isIE9,\n isIE9p : isIE && !(isIE6 || isIE7 || isIE8),\n isIE10 : isIE10,\n isIE10m : isIE6 || isIE7 || isIE8 || isIE9 || isIE10,\n isIE10p : isIE && !(isIE6 || isIE7 || isIE8 || isIE9),\n isIE11: isIE11,\n isIE11m : isIE6 || isIE7 || isIE8 || isIE9 || isIE10 || isIE11,\n isIE11p : isIE && !(isIE6 || isIE7 || isIE8 || isIE9 || isIE10),\n isGecko : isGecko,\n isGecko3 : isGecko3,\n isGecko4 : isGecko4,\n isGecko5 : isGecko5,\n isGecko10 : isGecko10,\n isFF3_0 : isFF3_0,\n isFF3_5 : isFF3_5,\n isFF3_6 : isFF3_6,\n isFF4 : 4 <= firefoxVersion && firefoxVersion < 5,\n isFF5 : 5 <= firefoxVersion && firefoxVersion < 6,\n isFF10 : 10 <= firefoxVersion && firefoxVersion < 11,\n isLinux : isLinux,\n isWindows : isWindows,\n isMac : isMac,\n chromeVersion: chromeVersion,\n firefoxVersion: firefoxVersion,\n ieVersion: ieVersion,\n operaVersion: operaVersion,\n safariVersion: safariVersion,\n webKitVersion: webKitVersion,\n isSecure: isSecure,\n emailRe: emailRe,\n ipRe: ipRe,\n hostnameRe: hostnameRe,\n localRe: localRe,\n emailStrongRe: emailStrongRe,\n emailAddStrongRe: emailAddStrongRe,\n ipStrongRe: ipStrongRe,\n hostnameStrongRe: hostnameStrongRe,\n documentSettingsType: documentSettingsType,\n importTextType: importTextType,\n zoom: function() {return me.zoom;},\n applicationPixelRatio: function() {return me.applicationPixelRatio;},\n topOffset: 0,\n innerWidth: function() {return me.innerWidth;},\n innerHeight: function() {return me.innerHeight;},\n croppedGeometry: function() {return {left:0, top: Common.Utils.InternalSettings.get('window-inactive-area-top'),\n width: me.innerWidth, height: me.innerHeight - Common.Utils.InternalSettings.get('window-inactive-area-top')}},\n getBoundingClientRect: getBoundingClientRect,\n getOffsetLeft: getOffsetLeft,\n getOffsetTop: getOffsetTop,\n getOffset: getOffset,\n getPosition: getPosition\n }\n})();\n\nCommon.Utils = _extend_object(Common.Utils, utils);\n\nvar themecolor = new(function() {\n var initnames = true;\n\n return {\n txtBlack: 'Black',\n txtWhite: 'White',\n txtRed: 'Red',\n txtGreen: 'Green',\n txtBlue: 'Blue',\n txtYellow: 'Yellow',\n txtPurple: 'Purple',\n txtAqua: 'Aqua',\n txtDarkRed: 'Dark red',\n txtDarkGreen: 'Dark green',\n txtDarkBlue: 'Dark blue',\n txtDarkYellow: 'Dark yellow',\n txtDarkPurple: 'Dark purple',\n txtDarkTeal: 'Dark teal',\n txtLightGray: 'Light gray',\n txtGray: 'Gray',\n txtLightBlue: 'Light blue',\n txtPink: 'Pink',\n txtLightYellow: 'Light yellow',\n txtSkyBlue: 'Sky blue',\n txtRose: 'Rose',\n txtTurquosie: 'Turquosie',\n txtLightGreen: 'Light green',\n txtLavender: 'Lavender',\n txtLightOrange: 'Light orange',\n txtTeal: 'Teal',\n txtGold: 'Gold',\n txtOrange: 'Orange',\n txtIndigo: 'Indigo',\n txtBrown: 'Brown',\n txtDarkGray: 'Dark gray',\n txtbackground: 'Background',\n txttext: 'Text',\n txtaccent: 'Accent',\n txtDarker: 'Darker',\n txtLighter: 'Lighter',\n txtBrightGreen: 'Bright green',\n txtViolet: 'Violet',\n\n ThemeValues: [6, 15, 7, 16, 0, 1, 2, 3, 4, 5],\n\n getTranslation: function(name) {\n if (!name) return '';\n\n return this['txt' + name.replace(' ', '')] || name\n },\n\n getEffectTranslation: function(value) {\n value = parseInt(value*100);\n if (value !== 0) {\n return (value>0 ? this.txtLighter : this.txtDarker) + ' ' + Math.abs(value) + '%';\n }\n return '';\n },\n\n setColors: function(colors, standart_colors) {\n if (initnames) {\n for (var i=1; i<3; i++) {\n this['txtbackground'+i] = this.txtbackground + ' ' + i;\n this['txttext'+i] = this.txttext + ' ' + i;\n }\n for (var i=1; i<7; i++) {\n this['txtaccent'+i] = this.txtaccent + ' ' + i;\n }\n initnames = false;\n }\n\n var i, j, item;\n\n if (standart_colors && standart_colors.length > 0) {\n var standartcolors = [];\n\n for (i = 0; i < standart_colors.length; i++) {\n item = {\n color: this.getHexColor(standart_colors[i].get_r(), standart_colors[i].get_g(), standart_colors[i].get_b()),\n tip: this.getTranslation(standart_colors[i].asc_getName())\n };\n standartcolors.push(item);\n }\n\n this.standartcolors = standartcolors;\n }\n\n var effectСolors= [];\n\n for (i = 0; i < 6; i++) {\n for (j = 0; j < 10; j++) {\n var idx = i + j * 6;\n var colorName = this.getTranslation(colors[idx].asc_getName()),\n schemeName = this.getTranslation(colors[idx].asc_getNameInColorScheme()),\n effectName = this.getEffectTranslation(colors[idx].asc_getEffectValue());\n if (colorName) {\n schemeName && (colorName += Common.Utils.String.textComma + ' ' + schemeName);\n effectName && (colorName += Common.Utils.String.textComma + ' ' + effectName);\n }\n item = {\n color: this.getHexColor(colors[idx].get_r(), colors[idx].get_g(), colors[idx].get_b()),\n effectId: idx,\n effectValue: this.ThemeValues[j],\n tip: colorName\n };\n effectСolors.push(item);\n }\n }\n this.effectcolors = effectСolors;\n },\n\n getEffectColors: function() {\n return this.effectcolors;\n },\n\n getStandartColors: function() {\n return this.standartcolors;\n },\n\n getHexColor: function(r, g, b){\n r = r.toString(16);\n g = g.toString(16);\n b = b.toString(16);\n if (r.length == 1) r = '0' + r;\n if (g.length == 1) g = '0' + g;\n if (b.length == 1) b = '0' + b;\n return r + g + b;\n },\n\n getRgbColor: function(clr){\n var color = (typeof(clr) == 'object') ? clr.color : clr;\n\n color=color.replace(/#/,'');\n if(color.length==3) color=color.replace(/(.)/g,'$1$1');\n color=parseInt(color,16);\n var c = new Asc.asc_CColor();\n c.put_type( (typeof(clr) == 'object' && clr.effectId !== undefined)? Asc.c_oAscColor.COLOR_TYPE_SCHEME : Asc.c_oAscColor.COLOR_TYPE_SRGB);\n c.put_r(color>>16);\n c.put_g((color&0xff00)>>8);\n c.put_b(color&0xff);\n c.put_a(0xff);\n if (clr.effectId !== undefined)\n c.put_value(clr.effectId);\n return c;\n },\n\n colorValue2EffectId: function(clr){\n if (typeof(clr) == 'object' && clr && clr.effectValue !== undefined && this.effectcolors) {\n for (var i = 0; i < this.effectcolors.length; i++) {\n if (this.effectcolors[i].effectValue===clr.effectValue && clr.color.toUpperCase()===this.effectcolors[i].color.toUpperCase()) {\n clr.effectId = this.effectcolors[i].effectId;\n break;\n }\n }\n }\n return clr;\n }\n }\n})();\nCommon.Utils.ThemeColor = _extend_object(themecolor, Common.Utils.ThemeColor);\n\nvar metrics = new(function() {\n var me = this;\n\n me.c_MetricUnits = {\n cm: 0,\n pt: 1,\n inch: 2\n };\n\n me.currentMetric = me.c_MetricUnits.pt;\n me.metricName = ['Cm', 'Pt', 'Inch'];\n me.defaultMetric = me.c_MetricUnits.cm;\n\n return {\n c_MetricUnits: me.c_MetricUnits,\n txtCm : 'cm',\n txtPt : 'pt',\n txtInch : '\\\"',\n\n setCurrentMetric: function(value) {\n me.currentMetric = value;\n },\n\n getCurrentMetric: function() {\n return me.currentMetric;\n },\n\n getCurrentMetricName: function() {\n return this['txt' + me.metricName[me.currentMetric]];\n },\n\n getMetricName: function(unit) {\n return this['txt' + me.metricName[(unit !== undefined) ? unit : 0]];\n },\n \n setDefaultMetric: function(value) {\n me.defaultMetric = value;\n },\n\n getDefaultMetric: function() {\n return me.defaultMetric;\n },\n\n fnRecalcToMM: function(value) {\n // value in pt/cm/inch. need to convert to mm\n if (value!==null && value!==undefined) {\n switch (me.currentMetric) {\n case me.c_MetricUnits.cm:\n return value * 10;\n case me.c_MetricUnits.pt:\n return value * 25.4 / 72.0;\n case me.c_MetricUnits.inch:\n return value * 25.4;\n }\n }\n return value;\n },\n\n fnRecalcFromMM: function(value) {\n // value in mm. need to convert to pt/cm/inch\n switch (me.currentMetric) {\n case me.c_MetricUnits.cm:\n return parseFloat((value/10.).toFixed(4));\n case me.c_MetricUnits.pt:\n return parseFloat((value * 72.0 / 25.4).toFixed(3));\n case me.c_MetricUnits.inch:\n return parseFloat((value / 25.4).toFixed(3));\n }\n return value;\n }\n }\n})();\n\nCommon.Utils.Metric = _extend_object(metrics, Common.Utils.Metric);\n\nCommon.Utils.RGBColor = function(colorString) {\n var r, g, b;\n\n if (colorString.charAt(0) == '#') {\n colorString = colorString.substr(1,6);\n }\n\n colorString = colorString.replace(/ /g,'');\n colorString = colorString.toLowerCase();\n\n var colorDefinitions = [\n {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n// example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],\n process: function (bits){\n return [\n parseInt(bits[1]),\n parseInt(bits[2]),\n parseInt(bits[3])\n ];\n }\n },\n {\n re: /^hsb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n// example: ['hsb(123, 34, 100)'],\n process: function (bits){\n var rgb = {};\n var h = Math.round(bits[1]);\n var s = Math.round(bits[2] * 255 / 100);\n var v = Math.round(bits[3] * 255 / 100);\n if(s == 0) {\n rgb.r = rgb.g = rgb.b = v;\n } else {\n var t1 = v;\n var t2 = (255 - s) * v / 255;\n var t3 = (t1 - t2) * (h % 60) / 60;\n\n if (h == 360) h = 0;\n if (h < 60) {rgb.r = t1; rgb.b = t2; rgb.g = t2 + t3}\n else if (h < 120) {rgb.g = t1; rgb.b = t2; rgb.r = t1 - t3}\n else if (h < 180) {rgb.g = t1; rgb.r = t2; rgb.b = t2 + t3}\n else if (h < 240) {rgb.b = t1; rgb.r = t2; rgb.g = t1 - t3}\n else if (h < 300) {rgb.b = t1; rgb.g = t2; rgb.r = t2 + t3}\n else if (h < 360) {rgb.r = t1; rgb.g = t2; rgb.b = t1 - t3}\n else {rgb.r = 0; rgb.g = 0; rgb.b = 0}\n }\n return [\n Math.round(rgb.r),\n Math.round(rgb.g),\n Math.round(rgb.b)\n ];\n }\n },\n {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n// example: ['#00ff00', '336699'],\n process: function (bits){\n return [\n parseInt(bits[1], 16),\n parseInt(bits[2], 16),\n parseInt(bits[3], 16)\n ];\n }\n },\n {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n// example: ['#fb0', 'f0f'],\n process: function (bits){\n return [\n parseInt(bits[1] + bits[1], 16),\n parseInt(bits[2] + bits[2], 16),\n parseInt(bits[3] + bits[3], 16)\n ];\n }\n }\n ];\n\n for (var i = 0; i < colorDefinitions.length; i++) {\n var re = colorDefinitions[i].re;\n var processor = colorDefinitions[i].process;\n var bits = re.exec(colorString);\n if (bits) {\n var channels = processor(bits);\n r = channels[0];\n g = channels[1];\n b = channels[2];\n }\n }\n\n r = (r < 0 || isNaN(r)) ? 0 : ((r > 255) ? 255 : r);\n g = (g < 0 || isNaN(g)) ? 0 : ((g > 255) ? 255 : g);\n b = (b < 0 || isNaN(b)) ? 0 : ((b > 255) ? 255 : b);\n\n var isEqual = function(color){\n return ((r == color.r) && (g == color.g) && (b == color.b));\n };\n\n var toRGB = function() {\n return 'rgb(' + r + ', ' + g + ', ' + b + ')';\n };\n\n var toRGBA = function(alfa) {\n if (alfa===undefined) alfa = 1;\n return 'rgba(' + r + ', ' + g + ', ' + b + ', ' + alfa + ')';\n };\n\n var toHex = function() {\n var _r = r.toString(16);\n var _g = g.toString(16);\n var _b = b.toString(16);\n if (_r.length == 1) _r = '0' + _r;\n if (_g.length == 1) _g = '0' + _g;\n if (_b.length == 1) _b = '0' + _b;\n return '#' + _r + _g + _b;\n };\n\n var toHSB = function() {\n var hsb = {\n h: 0,\n s: 0,\n b: 0\n };\n\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n hsb.b = max;\n hsb.s = max != 0 ? 255 * delta / max : 0;\n if (hsb.s != 0) {\n if (r == max) {\n hsb.h = 0 + (g - b) / delta;\n } else if (g == max) {\n hsb.h = 2 + (b - r) / delta;\n } else {\n hsb.h = 4 + (r - g) / delta;\n }\n } else {\n hsb.h = 0;\n }\n hsb.h *= 60;\n if (hsb.h < 0) {\n hsb.h += 360;\n }\n hsb.s *= 100 / 255;\n hsb.b *= 100 / 255;\n\n hsb.h = parseInt(hsb.h);\n hsb.s = parseInt(hsb.s);\n hsb.b = parseInt(hsb.b);\n\n return hsb;\n };\n\n return {\n r : r,\n g : g,\n b : b,\n isEqual : isEqual,\n toRGB : toRGB,\n toRGBA : toRGBA,\n toHex : toHex,\n toHSB : toHSB\n }\n};\n\nvar utilsString = new (function() {\n return {\n textCtrl: 'Ctrl',\n textShift: 'Shift',\n textAlt: 'Alt',\n textComma: ',',\n\n format: function(format) {\n var args = _.toArray(arguments).slice(1);\n if (args.length && typeof args[0] == 'object')\n args = args[0];\n return format.replace(/\\{(\\d+)\\}/g, function(s, i) {\n return args[i];\n });\n },\n\n htmlEncode: function(string) {\n return (typeof _ !== 'undefined') ? _.escape(string) :\n string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n },\n\n htmlDecode: function(string) {\n return _.unescape(string);\n },\n\n ellipsis: function(value, len, word) {\n if (value && value.length > len) {\n if (word) {\n var vs = value.substr(0, len - 2),\n index = Math.max(vs.lastIndexOf(' '), vs.lastIndexOf('.'), vs.lastIndexOf('!'), vs.lastIndexOf('?'));\n if (index !== -1 && index >= (len - 15)) {\n return vs.substr(0, index) + \"...\";\n }\n }\n return value.substr(0, len - 3) + \"...\";\n }\n return value;\n },\n\n platformKey: function(string, template, hookFn) {\n if (_.isEmpty(template))\n template = ' ({0})';\n\n if (Common.Utils.isMac) {\n if (_.isFunction(hookFn)) {\n string = hookFn.call(this, string);\n }\n return Common.Utils.String.format(template, string.replace(/\\+(?=\\S)/g, '').replace(/Ctrl|ctrl/g, '⌘').replace(/Alt|alt/g, '⌥').replace(/Shift|shift/g, '⇧'));\n }\n\n return Common.Utils.String.format(template, string.replace(/Ctrl|ctrl/g, this.textCtrl).replace(/Alt|alt/g, this.textAlt).replace(/Shift|shift/g, this.textShift));\n },\n\n parseFloat: function(string) {\n (typeof string === 'string') && (string = string.replace(',', '.'));\n return parseFloat(string)\n },\n\n encodeSurrogateChar: function(nUnicode) {\n if (nUnicode < 0x10000)\n {\n return String.fromCharCode(nUnicode);\n }\n else\n {\n nUnicode = nUnicode - 0x10000;\n var nLeadingChar = 0xD800 | (nUnicode >> 10);\n var nTrailingChar = 0xDC00 | (nUnicode & 0x3FF);\n return String.fromCharCode(nLeadingChar) + String.fromCharCode(nTrailingChar);\n }\n },\n\n fixedDigits: function(num, digits, fill) {\n (fill===undefined) && (fill = '0');\n var strfill = \"\",\n str = num.toString();\n for (var i=str.length; i0) return;\n var editor = (window.DE ? 'Document' : window.SSE ? 'Spreadsheet' : window.PE ? 'Presentation' : window.PDFE ? 'PDF' : 'that');\n var newDiv = document.createElement(\"div\");\n newDiv.innerHTML = '
          ' +\n '
          ' +\n '
          ' +\n '
          Your browser is not supported.
          ' +\n '
          Sorry, ' + editor + ' Editor is currently only supported in the latest versions of the Chrome, Firefox, Safari or Internet Explorer web browsers.
          ' +\n '
          ' +\n '
          ' +\n '
          ' +\n '
          ';\n\n document.body.appendChild(newDiv);\n\n $('#loading-mask').hide().remove();\n $('#viewport').hide().remove();\n};\n\nCommon.Utils.applyCustomization = function(config, elmap) {\n for (var name in config) {\n var $el;\n if (!!elmap[name]) {\n $el = $(elmap[name]);\n\n if ($el.length) {\n var item = config[name];\n if (item === false || item.visible === false) {\n $el.hide()\n } else {\n if (!!item.text) {\n $el.text(item.text);\n }\n\n if (item.visible === false) {\n $el.hide();\n }\n }\n }\n }\n }\n};\n\nCommon.Utils.applyCustomizationPlugins = function(plugins) {\n if (!plugins || plugins.length<1) return;\n\n var _createXMLHTTPObject = function() {\n var xmlhttp;\n if (typeof XMLHttpRequest != 'undefined') {\n xmlhttp = new XMLHttpRequest();\n } else {\n try {\n xmlhttp = new ActiveXObject(\"Msxml2.XMLHTTP\");\n }\n catch (e) {\n try {\n xmlhttp = new ActiveXObject(\"Microsoft.XMLHTTP\");\n }\n catch (E) {\n xmlhttp = false;\n }\n }\n }\n\n return xmlhttp;\n };\n\n var _getPluginCode = function(url) {\n if (!url) return '';\n try {\n var xhrObj = _createXMLHTTPObject();\n if (xhrObj && url) {\n xhrObj.open('GET', url, false);\n xhrObj.send('');\n if (xhrObj.status == 200)\n eval(xhrObj.responseText);\n }\n }\n catch (e) {}\n return null;\n };\n\n plugins.forEach(function(url){\n if (url) _getPluginCode(url);\n });\n};\n\nCommon.Utils.fillUserInfo = function(info, lang, defname, defid) {\n var _user = info || {};\n _user.anonymous = !_user.id;\n !_user.id && (_user.id = defid);\n _user.fullname = !_user.name ? defname : _user.name;\n _user.group && (_user.fullname = (_user.group).toString() + AscCommon.UserInfoParser.getSeparator() + _user.fullname);\n _user.guest = !_user.name;\n return _user;\n};\n\n\nCommon.Utils.createXhr = function () {\n var xmlhttp;\n\n if (typeof XMLHttpRequest != 'undefined') {\n xmlhttp = new XMLHttpRequest();\n } else {\n try {\n xmlhttp = new ActiveXObject(\"Msxml2.XMLHTTP\");\n } catch (e) {\n try {\n xmlhttp = new ActiveXObject(\"Microsoft.XMLHTTP\");\n } catch (E) {\n xmlhttp = false;\n }\n }\n }\n\n return xmlhttp;\n};\n\nCommon.Utils.getConfigJson = function (url) {\n if ( url ) {\n try {\n var xhrObj = Common.Utils.createXhr();\n if ( xhrObj ) {\n xhrObj.open('GET', url, false);\n xhrObj.send('');\n\n return JSON.parse(xhrObj.responseText);\n }\n } catch (e) {}\n }\n\n return null;\n};\n\nCommon.Utils.loadConfig = function(url, callback) {\n fetch(url, {\n method: 'get',\n headers: {\n 'Accept': 'application/json',\n },\n }).then(function(response){\n if ( response.ok )\n return response.json();\n else return 'error';\n }).then(function(json){\n callback(json);\n }).catch(function(e) {\n callback('error');\n });\n};\n\nCommon.Utils.asyncCall = function (callback, scope, args) {\n (new Promise(function (resolve, reject) {\n resolve();\n })).then(function () {\n callback.call(scope, args);\n });\n};\n\n// Extend javascript String type\nString.prototype.strongMatch = function(regExp){\n if (regExp && regExp instanceof RegExp) {\n var arr = this.toString().match(regExp);\n return !!(arr && arr.length > 0 && arr[0].length == this.length);\n }\n\n return false;\n};\n\nCommon.Utils.InternalSettings = new(function() {\n var settings = {};\n\n var _get = function(name) {\n return settings[name];\n },\n _set = function(name, value) {\n settings[name] = value;\n };\n\n return {\n get: _get,\n set: _set\n }\n});\n\nCommon.Utils.lockControls = function(causes, lock, opts, defControls) {\n !opts && (opts = {});\n\n var controls = opts.array || defControls;\n opts.merge && (controls = _.union(defControls,controls));\n\n function doLock(cmp, cause) {\n if ( cmp && cmp.options && _.contains(cmp.options.lock, cause) ) {\n var index = cmp.keepState.indexOf(cause);\n if (lock) {\n if (index < 0) {\n cmp.keepState.push(cause);\n }\n } else {\n if (!(index < 0)) {\n cmp.keepState.splice(index, 1);\n }\n }\n }\n }\n\n _.each(controls, function(item) {\n if (item && _.isFunction(item.setDisabled)) {\n !item.keepState && (item.keepState = []);\n if (opts.clear && opts.clear.length > 0 && item.keepState.length > 0) {\n item.keepState = _.difference(item.keepState, opts.clear);\n }\n\n _.isArray(causes) ? _.each(causes, function(c) {doLock(item, c)}) : doLock(item, causes);\n\n if (!(item.keepState.length > 0)) {\n item.isDisabled() && item.setDisabled(false);\n } else {\n !item.isDisabled() && item.setDisabled(true);\n }\n }\n });\n};\n\nCommon.Utils.injectButtons = function($slots, id, iconCls, caption, lock, split, menu, toggle, dataHint, dataHintDirection, dataHintOffset, dataHintTitle) {\n var btnsArr = createButtonSet();\n btnsArr.setDisabled(true);\n id = id || (\"id-toolbar-\" + iconCls);\n $slots.each(function(index, el) {\n var _cls = 'btn-toolbar';\n /x-huge/.test(el.className) && (_cls += ' x-huge icon-top');\n\n var button = new Common.UI.Button({\n parentEl: $slots.eq(index),\n id: id + index,\n cls: _cls,\n iconCls: iconCls,\n caption: caption,\n split: split || false,\n menu: menu || false,\n enableToggle: toggle || false,\n lock: lock,\n disabled: true,\n dataHint: dataHint,\n dataHintDirection: dataHintDirection,\n dataHintOffset: dataHintOffset,\n dataHintTitle: dataHintTitle\n });\n\n btnsArr.add(button);\n });\n return btnsArr;\n};\n\nCommon.Utils.injectComponent = function ($slot, cmp) {\n if (cmp && $slot.length) {\n cmp.rendered ? $slot.append(cmp.$el) : cmp.render($slot);\n }\n};\n\nCommon.Utils.startFullscreenForElement = function (element) {\n if (element) {\n if(element.requestFullscreen) {\n element.requestFullscreen();\n } else if(element.webkitRequestFullscreen) {\n element.webkitRequestFullscreen();\n } else if(element.mozRequestFullScreen) {\n element.mozRequestFullScreen();\n } else if(element.msRequestFullscreen) {\n element.msRequestFullscreen();\n }\n }\n}\n\nCommon.Utils.cancelFullscreen = function () {\n if(document.cancelFullScreen) {\n document.cancelFullScreen();\n } else if(document.webkitCancelFullScreen ) {\n document.webkitCancelFullScreen();\n } else if(document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if(document.msExitFullscreen) {\n document.msExitFullscreen();\n }\n}\n\nCommon.Utils.warningDocumentIsLocked = function (opts) {\n if ( opts.disablefunc )\n opts.disablefunc(true);\n\n var app = window.DE || window.PE || window.SSE || window.PDFE;\n\n Common.UI.warning({\n msg: Common.Locale.get(\"warnFileLocked\",{name:\"Common.Translation\", default: \"You can't edit this file. Document is in use by another application.\"}),\n buttons: [{\n value: 'view',\n caption: Common.Locale.get(\"warnFileLockedBtnView\",{name:\"Common.Translation\", default: \"Open for viewing\"})\n }, {\n value: 'edit',\n caption: Common.Locale.get(\"warnFileLockedBtnEdit\",{name:\"Common.Translation\", default: \"Create a copy\"})\n }],\n primary: 'view',\n callback: function(btn){\n if (btn == 'edit') {\n if ( opts.disablefunc ) opts.disablefunc(false);\n app.getController('Main').api.asc_setLocalRestrictions(Asc.c_oAscLocalRestrictionType.None);\n }\n }\n });\n};\n\njQuery.fn.extend({\n elementById: function (id, parent) {\n /**\n * usage: $obj.findById('#id')\n * $().findById('#id', $obj | node)\n * $.fn.findById('#id', $obj | node)\n *\n * return: dom element\n * */\n var _el = document.getElementById(id.substring(1));\n if ( !_el ) {\n parent = parent || this;\n if ( parent && parent.length > 0 ) {\n parent.each(function (i, node) {\n if (node.querySelectorAll) {\n _el = node.querySelectorAll(id);\n if ( _el.length == 0 ) {\n if ( ('#' + node.id) == id ) {\n _el = node;\n return false;\n }\n } else\n if ( _el.length ) {\n _el = _el[0];\n return false;\n }\n }\n })\n } else {\n if (parent && parent.querySelectorAll) {\n _el = parent.querySelectorAll(id);\n if ( _el && _el.length ) return _el[0];\n }\n }\n }\n\n return _el;\n },\n\n findById: function (id, parent) {\n var _el = $.fn.elementById.apply(this, arguments);\n return !!_el ? $(_el) : $();\n }\n});\n\nCommon.Utils.InternalSettings.set('toolbar-height-tabs', 32);\nCommon.Utils.InternalSettings.set('toolbar-height-tabs-top-title', 28);\nCommon.Utils.InternalSettings.set('toolbar-height-controls', 67);\nCommon.Utils.InternalSettings.set('document-title-height', 28);\nCommon.Utils.InternalSettings.set('window-inactive-area-top', 0);\n\nCommon.Utils.InternalSettings.set('toolbar-height-compact', Common.Utils.InternalSettings.get('toolbar-height-tabs'));\nCommon.Utils.InternalSettings.set('toolbar-height-normal', Common.Utils.InternalSettings.get('toolbar-height-tabs') + Common.Utils.InternalSettings.get('toolbar-height-controls'));\n\nCommon.Utils.ModalWindow = new(function() {\n var count = 0;\n return {\n show: function() {\n count++;\n },\n\n close: function() {\n count--;\n },\n\n isVisible: function() {\n return count>0;\n }\n }\n})();\n\nCommon.Utils.UserInfoParser = new(function() {\n var parse = false;\n var separator = String.fromCharCode(160);\n return {\n setParser: function(value) {\n parse = !!value;\n },\n\n getSeparator: function() {\n return separator;\n },\n\n getParsedName: function(username) {\n if (parse && username) {\n return username.substring(username.indexOf(separator)+1);\n } else\n return username;\n },\n\n getParsedGroups: function(username) {\n if (parse && username) {\n var idx = username.indexOf(separator),\n groups = (idx>-1) ? username.substring(0, idx).split(',') : [];\n for (var i=0; i0; i--) {\n if (fio[i][0]!=='(' && fio[i][0]!==')') {\n if (/[\\u0600-\\u06FF]/.test(initials))\n initials += '\\u2009';\n initials += fio[i].substring(0, 1).toUpperCase();\n break;\n }\n }\n return initials;\n};\n\nCommon.Utils.getKeyByValue = function(obj, value) {\n for(var prop in obj) {\n if(obj.hasOwnProperty(prop)) {\n if(obj[prop] === value)\n return prop;\n }\n }\n};\n\n!Common.UI && (Common.UI = {});\nCommon.UI.isRTL = function () {\n if ( window.isrtl === undefined ) {\n if ( window.nativeprocvars && window.nativeprocvars.rtl !== undefined )\n window.isrtl = window.nativeprocvars.rtl;\n else window.isrtl = !Common.Utils.isIE && Common.localStorage.getBool(\"ui-rtl\", Common.Locale.isCurrentLanguageRtl());\n }\n\n return window.isrtl;\n};\n\nCommon.UI.iconsStr2IconsObj = function(icons) {\n let result = icons;\n if (typeof result === 'string') {\n if (result.indexOf('%') !== -1) {\n /*\n valid params:\n theme-type - {string} theme type (light|dark|common)\n theme-name - {string} the name of theme\n state - {string} state of icons for different situations (normal|hover|active)\n scale - {string} list of avaliable scales (100|125|150|175|200|default|extended)\n extension - {string} use it after symbol \".\" (png|jpeg|svg)\n\n Example: \"resources/%theme-type%(light|dark)/%state%(normal)icon%scale%(default).%extension%(png)\"\n */\n let scaleValue = {\n '100%' : '.',\n '125%' : '@1.25x.',\n '150%' : '@1.5x.',\n '175%' : '@1.75x.',\n '200%' : '@2x.'\n }\n let arrParams = ['theme-type', 'theme-name' ,'state', 'scale', 'extension'],\n start = result.indexOf('%'),\n template = result.substring(start).replace(/[/.]/g, ('')),\n commonPart = result.substring(0, start),\n end = 0,\n param = null,\n values = null,\n iconName = '',\n tempObj = {};\n\n result = [];\n\n for (let index = 0; index < arrParams.length; index++) {\n param = arrParams[index];\n start = template.indexOf(param) - 1;\n if (start < 0 )\n continue;\n\n end = param.length + 2;\n template = template.substring(0, start) + template.substring(start + end);\n start = template.indexOf('(', 0);\n end = template.indexOf(')', 0);\n values = template.substring((start + 1), end);\n template = template.substring(0, start) + template.substring(++end);\n tempObj[param] = values.split('|');\n }\n\n if (template.length) {\n iconName = template;\n } else {\n let arr = commonPart.split('/');\n iconName = arr.pop().replace(/\\./g, '');\n commonPart = arr.join('/') + '/';\n }\n\n // we don't work with svg yet. Change it when we will work with it (extended variant).\n if (tempObj['scale'] && (tempObj['scale'] == 'default' || tempObj['scale'] == 'extended') ) {\n tempObj['scale'] = ['100', '125', '150', '175', '200'];\n } else if (!tempObj['scale']) {\n tempObj['scale'] = ['100'];\n }\n\n if (!tempObj['state']) {\n tempObj['state'] = ['normal'];\n }\n\n if (!iconName) {\n iconName = 'icon';\n }\n\n let bHasName = !!tempObj['theme-name'];\n let bHasType = (tempObj['theme-type'] && tempObj['theme-type'][0] !== 'common');\n let arrThemes = bHasName ? tempObj['theme-name'] : (bHasType ? tempObj['theme-type'] : []);\n let paramName = bHasName ? 'theme' : 'style';\n if (arrThemes.length) {\n for (let thInd = 0; thInd < arrThemes.length; thInd++) {\n let obj = {};\n obj[paramName] = arrThemes[thInd];\n result.push(obj);\n }\n } else {\n result.push({});\n }\n\n for (let index = 0; index < result.length; index++) {\n for (let scaleInd = 0; scaleInd < tempObj['scale'].length; scaleInd++) {\n let themePath = (result[index][paramName] || 'img') + '/';\n let scale = tempObj['scale'][scaleInd] + '%';\n let obj = {};\n for (let stateInd = 0; stateInd < tempObj['state'].length; stateInd++) {\n let state = tempObj['state'][stateInd];\n obj[state] = commonPart + themePath + (state == 'normal' ? '' : (state + '_')) + iconName + (scaleValue[scale] || '.') + tempObj['extension'][0];\n }\n result[index][scale] = obj;\n }\n }\n } else {\n return [icons];\n }\n }\n return result;\n}\n\nCommon.UI.getSuitableIcons = function(icons) {\n if (!icons) return;\n\n icons = Common.UI.iconsStr2IconsObj(icons);\n if (icons.length && typeof icons[0] !== 'string') {\n var theme = Common.UI.Themes.currentThemeId().toLowerCase(),\n style = Common.UI.Themes.isDarkTheme() ? 'dark' : 'light',\n idx = -1;\n for (var i=0; i0.01 && defUrl) && (bestUrl = defUrl);\n return {\n 'normal': bestUrl ? bestUrl['normal'] : '',\n 'hover': bestUrl ? bestUrl['hover'] || bestUrl['normal'] : '',\n 'active': bestUrl ? bestUrl['active'] || bestUrl['normal'] : ''\n };\n } else { // old version\n var url = icons[((Common.Utils.applicationPixelRatio() > 1 && icons.length > 1) ? 1 : 0) + (icons.length > 2 ? 2 : 0)];\n return {\n 'normal': url,\n 'hover': url,\n 'active': url\n };\n }\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * This file automatically generated from `pre-publish.js`.\n * Do not manually edit.\n */\n\nmodule.exports = {\n \"area\": true,\n \"base\": true,\n \"br\": true,\n \"col\": true,\n \"embed\": true,\n \"hr\": true,\n \"img\": true,\n \"input\": true,\n \"link\": true,\n \"meta\": true,\n \"param\": true,\n \"source\": true,\n \"track\": true,\n \"wbr\": true\n};\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw new Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw new Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var inProgress = {};\nvar dataWebpackPrefix = \"documenteditor:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"dist/js/\" + chunkId + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"923\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkdocumenteditor\"] = self[\"webpackChunkdocumenteditor\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(t, e, r) {\n if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);\n var o = [null];\n o.push.apply(o, e);\n var p = new (t.bind.apply(t, o))();\n return r && setPrototypeOf(p, r.prototype), p;\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n try {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n } catch (e) {\n return typeof fn === \"function\";\n }\n}","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionStart(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionstart', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionstart', fireCallBack);\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, transitionStart, trigger, val, value, width };\n","// eslint-disable-next-line\nimport * as methods from 'dom7';\nObject.keys(methods).forEach(methodName => {\n if (methodName === '$') return;\n methods.$.fn[methodName] = methods[methodName];\n});\nexport default methods.$;","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","/* eslint-disable */\nfunction signum(num) {\n return num < 0 ? -1 : 0 === num ? 0 : 1;\n}\nfunction lerp(start, stop, amount) {\n return (1 - amount) * start + amount * stop;\n}\nfunction clampInt(min, max, input) {\n return input < min ? min : input > max ? max : input;\n}\nfunction clampDouble(min, max, input) {\n return input < min ? min : input > max ? max : input;\n}\nfunction sanitizeDegreesDouble(degrees) {\n return (degrees %= 360) < 0 && (degrees += 360), degrees;\n}\nfunction rotationDirection(from, to) {\n return sanitizeDegreesDouble(to - from) <= 180 ? 1 : -1;\n}\nfunction differenceDegrees(a, b) {\n return 180 - Math.abs(Math.abs(a - b) - 180);\n}\nfunction matrixMultiply(row, matrix) {\n return [row[0] * matrix[0][0] + row[1] * matrix[0][1] + row[2] * matrix[0][2], row[0] * matrix[1][0] + row[1] * matrix[1][1] + row[2] * matrix[1][2], row[0] * matrix[2][0] + row[1] * matrix[2][1] + row[2] * matrix[2][2]];\n}\nconst SRGB_TO_XYZ = [[.41233895, .35762064, .18051042], [.2126, .7152, .0722], [.01932141, .11916382, .95034478]],\n XYZ_TO_SRGB = [[3.2413774792388685, -1.5376652402851851, -.49885366846268053], [-.9691452513005321, 1.8758853451067872, .04156585616912061], [.05562093689691305, -.20395524564742123, 1.0571799111220335]],\n WHITE_POINT_D65 = [95.047, 100, 108.883];\nfunction argbFromRgb(red, green, blue) {\n return (255 << 24 | (255 & red) << 16 | (255 & green) << 8 | 255 & blue) >>> 0;\n}\nfunction argbFromLinrgb(linrgb) {\n return argbFromRgb(delinearized(linrgb[0]), delinearized(linrgb[1]), delinearized(linrgb[2]));\n}\nfunction redFromArgb(argb) {\n return argb >> 16 & 255;\n}\nfunction greenFromArgb(argb) {\n return argb >> 8 & 255;\n}\nfunction blueFromArgb(argb) {\n return 255 & argb;\n}\nfunction argbFromXyz(x, y, z) {\n const matrix = XYZ_TO_SRGB,\n linearR = matrix[0][0] * x + matrix[0][1] * y + matrix[0][2] * z,\n linearG = matrix[1][0] * x + matrix[1][1] * y + matrix[1][2] * z,\n linearB = matrix[2][0] * x + matrix[2][1] * y + matrix[2][2] * z;\n return argbFromRgb(delinearized(linearR), delinearized(linearG), delinearized(linearB));\n}\nfunction xyzFromArgb(argb) {\n return matrixMultiply([linearized(redFromArgb(argb)), linearized(greenFromArgb(argb)), linearized(blueFromArgb(argb))], SRGB_TO_XYZ);\n}\nfunction argbFromLstar(lstar) {\n const component = delinearized(yFromLstar(lstar));\n return argbFromRgb(component, component, component);\n}\nfunction lstarFromArgb(argb) {\n return 116 * labF(xyzFromArgb(argb)[1] / 100) - 16;\n}\nfunction yFromLstar(lstar) {\n return 100 * labInvf((lstar + 16) / 116);\n}\nfunction lstarFromY(y) {\n return 116 * labF(y / 100) - 16;\n}\nfunction linearized(rgbComponent) {\n const normalized = rgbComponent / 255;\n return normalized <= .040449936 ? normalized / 12.92 * 100 : 100 * Math.pow((normalized + .055) / 1.055, 2.4);\n}\nfunction delinearized(rgbComponent) {\n const normalized = rgbComponent / 100;\n let delinearized = 0;\n return delinearized = normalized <= .0031308 ? 12.92 * normalized : 1.055 * Math.pow(normalized, 1 / 2.4) - .055, clampInt(0, 255, Math.round(255 * delinearized));\n}\nfunction whitePointD65() {\n return WHITE_POINT_D65;\n}\nfunction labF(t) {\n return t > 216 / 24389 ? Math.pow(t, 1 / 3) : (903.2962962962963 * t + 16) / 116;\n}\nfunction labInvf(ft) {\n const ft3 = ft * ft * ft;\n return ft3 > 216 / 24389 ? ft3 : (116 * ft - 16) / 903.2962962962963;\n}\nclass ViewingConditions {\n static make(whitePoint, adaptingLuminance, backgroundLstar, surround, discountingIlluminant) {\n if (whitePoint === void 0) {\n whitePoint = whitePointD65();\n }\n if (adaptingLuminance === void 0) {\n adaptingLuminance = 200 / Math.PI * yFromLstar(50) / 100;\n }\n if (backgroundLstar === void 0) {\n backgroundLstar = 50;\n }\n if (surround === void 0) {\n surround = 2;\n }\n if (discountingIlluminant === void 0) {\n discountingIlluminant = !1;\n }\n const xyz = whitePoint,\n rW = .401288 * xyz[0] + .650173 * xyz[1] + -.051461 * xyz[2],\n gW = -.250268 * xyz[0] + 1.204414 * xyz[1] + .045854 * xyz[2],\n bW = -.002079 * xyz[0] + .048952 * xyz[1] + .953127 * xyz[2],\n f = .8 + surround / 10,\n c = f >= .9 ? lerp(.59, .69, 10 * (f - .9)) : lerp(.525, .59, 10 * (f - .8));\n let d = discountingIlluminant ? 1 : f * (1 - 1 / 3.6 * Math.exp((-adaptingLuminance - 42) / 92));\n d = d > 1 ? 1 : d < 0 ? 0 : d;\n const nc = f,\n rgbD = [d * (100 / rW) + 1 - d, d * (100 / gW) + 1 - d, d * (100 / bW) + 1 - d],\n k = 1 / (5 * adaptingLuminance + 1),\n k4 = k * k * k * k,\n k4F = 1 - k4,\n fl = k4 * adaptingLuminance + .1 * k4F * k4F * Math.cbrt(5 * adaptingLuminance),\n n = yFromLstar(backgroundLstar) / whitePoint[1],\n z = 1.48 + Math.sqrt(n),\n nbb = .725 / Math.pow(n, .2),\n ncb = nbb,\n rgbAFactors = [Math.pow(fl * rgbD[0] * rW / 100, .42), Math.pow(fl * rgbD[1] * gW / 100, .42), Math.pow(fl * rgbD[2] * bW / 100, .42)],\n rgbA = [400 * rgbAFactors[0] / (rgbAFactors[0] + 27.13), 400 * rgbAFactors[1] / (rgbAFactors[1] + 27.13), 400 * rgbAFactors[2] / (rgbAFactors[2] + 27.13)];\n return new ViewingConditions(n, (2 * rgbA[0] + rgbA[1] + .05 * rgbA[2]) * nbb, nbb, ncb, c, nc, rgbD, fl, Math.pow(fl, .25), z);\n }\n constructor(n, aw, nbb, ncb, c, nc, rgbD, fl, fLRoot, z) {\n this.n = n, this.aw = aw, this.nbb = nbb, this.ncb = ncb, this.c = c, this.nc = nc, this.rgbD = rgbD, this.fl = fl, this.fLRoot = fLRoot, this.z = z;\n }\n}\nViewingConditions.DEFAULT = ViewingConditions.make();\nclass Cam16 {\n constructor(hue, chroma, j, q, m, s, jstar, astar, bstar) {\n this.hue = hue, this.chroma = chroma, this.j = j, this.q = q, this.m = m, this.s = s, this.jstar = jstar, this.astar = astar, this.bstar = bstar;\n }\n distance(other) {\n const dJ = this.jstar - other.jstar,\n dA = this.astar - other.astar,\n dB = this.bstar - other.bstar,\n dEPrime = Math.sqrt(dJ * dJ + dA * dA + dB * dB);\n return 1.41 * Math.pow(dEPrime, .63);\n }\n static fromInt(argb) {\n return Cam16.fromIntInViewingConditions(argb, ViewingConditions.DEFAULT);\n }\n static fromIntInViewingConditions(argb, viewingConditions) {\n const green = (65280 & argb) >> 8,\n blue = 255 & argb,\n redL = linearized((16711680 & argb) >> 16),\n greenL = linearized(green),\n blueL = linearized(blue),\n x = .41233895 * redL + .35762064 * greenL + .18051042 * blueL,\n y = .2126 * redL + .7152 * greenL + .0722 * blueL,\n z = .01932141 * redL + .11916382 * greenL + .95034478 * blueL,\n rC = .401288 * x + .650173 * y - .051461 * z,\n gC = -.250268 * x + 1.204414 * y + .045854 * z,\n bC = -.002079 * x + .048952 * y + .953127 * z,\n rD = viewingConditions.rgbD[0] * rC,\n gD = viewingConditions.rgbD[1] * gC,\n bD = viewingConditions.rgbD[2] * bC,\n rAF = Math.pow(viewingConditions.fl * Math.abs(rD) / 100, .42),\n gAF = Math.pow(viewingConditions.fl * Math.abs(gD) / 100, .42),\n bAF = Math.pow(viewingConditions.fl * Math.abs(bD) / 100, .42),\n rA = 400 * signum(rD) * rAF / (rAF + 27.13),\n gA = 400 * signum(gD) * gAF / (gAF + 27.13),\n bA = 400 * signum(bD) * bAF / (bAF + 27.13),\n a = (11 * rA + -12 * gA + bA) / 11,\n b = (rA + gA - 2 * bA) / 9,\n u = (20 * rA + 20 * gA + 21 * bA) / 20,\n p2 = (40 * rA + 20 * gA + bA) / 20,\n atanDegrees = 180 * Math.atan2(b, a) / Math.PI,\n hue = atanDegrees < 0 ? atanDegrees + 360 : atanDegrees >= 360 ? atanDegrees - 360 : atanDegrees,\n hueRadians = hue * Math.PI / 180,\n ac = p2 * viewingConditions.nbb,\n j = 100 * Math.pow(ac / viewingConditions.aw, viewingConditions.c * viewingConditions.z),\n q = 4 / viewingConditions.c * Math.sqrt(j / 100) * (viewingConditions.aw + 4) * viewingConditions.fLRoot,\n huePrime = hue < 20.14 ? hue + 360 : hue,\n t = 5e4 / 13 * (.25 * (Math.cos(huePrime * Math.PI / 180 + 2) + 3.8)) * viewingConditions.nc * viewingConditions.ncb * Math.sqrt(a * a + b * b) / (u + .305),\n alpha = Math.pow(t, .9) * Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73),\n c = alpha * Math.sqrt(j / 100),\n m = c * viewingConditions.fLRoot,\n s = 50 * Math.sqrt(alpha * viewingConditions.c / (viewingConditions.aw + 4)),\n jstar = (1 + 100 * .007) * j / (1 + .007 * j),\n mstar = 1 / .0228 * Math.log(1 + .0228 * m),\n astar = mstar * Math.cos(hueRadians),\n bstar = mstar * Math.sin(hueRadians);\n return new Cam16(hue, c, j, q, m, s, jstar, astar, bstar);\n }\n static fromJch(j, c, h) {\n return Cam16.fromJchInViewingConditions(j, c, h, ViewingConditions.DEFAULT);\n }\n static fromJchInViewingConditions(j, c, h, viewingConditions) {\n const q = 4 / viewingConditions.c * Math.sqrt(j / 100) * (viewingConditions.aw + 4) * viewingConditions.fLRoot,\n m = c * viewingConditions.fLRoot,\n alpha = c / Math.sqrt(j / 100),\n s = 50 * Math.sqrt(alpha * viewingConditions.c / (viewingConditions.aw + 4)),\n hueRadians = h * Math.PI / 180,\n jstar = (1 + 100 * .007) * j / (1 + .007 * j),\n mstar = 1 / .0228 * Math.log(1 + .0228 * m),\n astar = mstar * Math.cos(hueRadians),\n bstar = mstar * Math.sin(hueRadians);\n return new Cam16(h, c, j, q, m, s, jstar, astar, bstar);\n }\n static fromUcs(jstar, astar, bstar) {\n return Cam16.fromUcsInViewingConditions(jstar, astar, bstar, ViewingConditions.DEFAULT);\n }\n static fromUcsInViewingConditions(jstar, astar, bstar, viewingConditions) {\n const a = astar,\n b = bstar,\n m = Math.sqrt(a * a + b * b),\n c = (Math.exp(.0228 * m) - 1) / .0228 / viewingConditions.fLRoot;\n let h = Math.atan2(b, a) * (180 / Math.PI);\n h < 0 && (h += 360);\n const j = jstar / (1 - .007 * (jstar - 100));\n return Cam16.fromJchInViewingConditions(j, c, h, viewingConditions);\n }\n toInt() {\n return this.viewed(ViewingConditions.DEFAULT);\n }\n viewed(viewingConditions) {\n const alpha = 0 === this.chroma || 0 === this.j ? 0 : this.chroma / Math.sqrt(this.j / 100),\n t = Math.pow(alpha / Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73), 1 / .9),\n hRad = this.hue * Math.PI / 180,\n eHue = .25 * (Math.cos(hRad + 2) + 3.8),\n ac = viewingConditions.aw * Math.pow(this.j / 100, 1 / viewingConditions.c / viewingConditions.z),\n p1 = eHue * (5e4 / 13) * viewingConditions.nc * viewingConditions.ncb,\n p2 = ac / viewingConditions.nbb,\n hSin = Math.sin(hRad),\n hCos = Math.cos(hRad),\n gamma = 23 * (p2 + .305) * t / (23 * p1 + 11 * t * hCos + 108 * t * hSin),\n a = gamma * hCos,\n b = gamma * hSin,\n rA = (460 * p2 + 451 * a + 288 * b) / 1403,\n gA = (460 * p2 - 891 * a - 261 * b) / 1403,\n bA = (460 * p2 - 220 * a - 6300 * b) / 1403,\n rCBase = Math.max(0, 27.13 * Math.abs(rA) / (400 - Math.abs(rA))),\n rC = signum(rA) * (100 / viewingConditions.fl) * Math.pow(rCBase, 1 / .42),\n gCBase = Math.max(0, 27.13 * Math.abs(gA) / (400 - Math.abs(gA))),\n gC = signum(gA) * (100 / viewingConditions.fl) * Math.pow(gCBase, 1 / .42),\n bCBase = Math.max(0, 27.13 * Math.abs(bA) / (400 - Math.abs(bA))),\n bC = signum(bA) * (100 / viewingConditions.fl) * Math.pow(bCBase, 1 / .42),\n rF = rC / viewingConditions.rgbD[0],\n gF = gC / viewingConditions.rgbD[1],\n bF = bC / viewingConditions.rgbD[2];\n return argbFromXyz(1.86206786 * rF - 1.01125463 * gF + .14918677 * bF, .38752654 * rF + .62144744 * gF - .00897398 * bF, -.0158415 * rF - .03412294 * gF + 1.04996444 * bF);\n }\n static fromXyzInViewingConditions(x, y, z, viewingConditions) {\n const rC = .401288 * x + .650173 * y - .051461 * z,\n gC = -.250268 * x + 1.204414 * y + .045854 * z,\n bC = -.002079 * x + .048952 * y + .953127 * z,\n rD = viewingConditions.rgbD[0] * rC,\n gD = viewingConditions.rgbD[1] * gC,\n bD = viewingConditions.rgbD[2] * bC,\n rAF = Math.pow(viewingConditions.fl * Math.abs(rD) / 100, .42),\n gAF = Math.pow(viewingConditions.fl * Math.abs(gD) / 100, .42),\n bAF = Math.pow(viewingConditions.fl * Math.abs(bD) / 100, .42),\n rA = 400 * signum(rD) * rAF / (rAF + 27.13),\n gA = 400 * signum(gD) * gAF / (gAF + 27.13),\n bA = 400 * signum(bD) * bAF / (bAF + 27.13),\n a = (11 * rA + -12 * gA + bA) / 11,\n b = (rA + gA - 2 * bA) / 9,\n u = (20 * rA + 20 * gA + 21 * bA) / 20,\n p2 = (40 * rA + 20 * gA + bA) / 20,\n atanDegrees = 180 * Math.atan2(b, a) / Math.PI,\n hue = atanDegrees < 0 ? atanDegrees + 360 : atanDegrees >= 360 ? atanDegrees - 360 : atanDegrees,\n hueRadians = hue * Math.PI / 180,\n ac = p2 * viewingConditions.nbb,\n J = 100 * Math.pow(ac / viewingConditions.aw, viewingConditions.c * viewingConditions.z),\n Q = 4 / viewingConditions.c * Math.sqrt(J / 100) * (viewingConditions.aw + 4) * viewingConditions.fLRoot,\n huePrime = hue < 20.14 ? hue + 360 : hue,\n t = 5e4 / 13 * (1 / 4 * (Math.cos(huePrime * Math.PI / 180 + 2) + 3.8)) * viewingConditions.nc * viewingConditions.ncb * Math.sqrt(a * a + b * b) / (u + .305),\n alpha = Math.pow(t, .9) * Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73),\n C = alpha * Math.sqrt(J / 100),\n M = C * viewingConditions.fLRoot,\n s = 50 * Math.sqrt(alpha * viewingConditions.c / (viewingConditions.aw + 4)),\n jstar = (1 + 100 * .007) * J / (1 + .007 * J),\n mstar = Math.log(1 + .0228 * M) / .0228,\n astar = mstar * Math.cos(hueRadians),\n bstar = mstar * Math.sin(hueRadians);\n return new Cam16(hue, C, J, Q, M, s, jstar, astar, bstar);\n }\n xyzInViewingConditions(viewingConditions) {\n const alpha = 0 === this.chroma || 0 === this.j ? 0 : this.chroma / Math.sqrt(this.j / 100),\n t = Math.pow(alpha / Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73), 1 / .9),\n hRad = this.hue * Math.PI / 180,\n eHue = .25 * (Math.cos(hRad + 2) + 3.8),\n ac = viewingConditions.aw * Math.pow(this.j / 100, 1 / viewingConditions.c / viewingConditions.z),\n p1 = eHue * (5e4 / 13) * viewingConditions.nc * viewingConditions.ncb,\n p2 = ac / viewingConditions.nbb,\n hSin = Math.sin(hRad),\n hCos = Math.cos(hRad),\n gamma = 23 * (p2 + .305) * t / (23 * p1 + 11 * t * hCos + 108 * t * hSin),\n a = gamma * hCos,\n b = gamma * hSin,\n rA = (460 * p2 + 451 * a + 288 * b) / 1403,\n gA = (460 * p2 - 891 * a - 261 * b) / 1403,\n bA = (460 * p2 - 220 * a - 6300 * b) / 1403,\n rCBase = Math.max(0, 27.13 * Math.abs(rA) / (400 - Math.abs(rA))),\n rC = signum(rA) * (100 / viewingConditions.fl) * Math.pow(rCBase, 1 / .42),\n gCBase = Math.max(0, 27.13 * Math.abs(gA) / (400 - Math.abs(gA))),\n gC = signum(gA) * (100 / viewingConditions.fl) * Math.pow(gCBase, 1 / .42),\n bCBase = Math.max(0, 27.13 * Math.abs(bA) / (400 - Math.abs(bA))),\n bC = signum(bA) * (100 / viewingConditions.fl) * Math.pow(bCBase, 1 / .42),\n rF = rC / viewingConditions.rgbD[0],\n gF = gC / viewingConditions.rgbD[1],\n bF = bC / viewingConditions.rgbD[2];\n return [1.86206786 * rF - 1.01125463 * gF + .14918677 * bF, .38752654 * rF + .62144744 * gF - .00897398 * bF, -.0158415 * rF - .03412294 * gF + 1.04996444 * bF];\n }\n}\nclass HctSolver {\n static sanitizeRadians(angle) {\n return (angle + 8 * Math.PI) % (2 * Math.PI);\n }\n static trueDelinearized(rgbComponent) {\n const normalized = rgbComponent / 100;\n let delinearized = 0;\n return delinearized = normalized <= .0031308 ? 12.92 * normalized : 1.055 * Math.pow(normalized, 1 / 2.4) - .055, 255 * delinearized;\n }\n static chromaticAdaptation(component) {\n const af = Math.pow(Math.abs(component), .42);\n return 400 * signum(component) * af / (af + 27.13);\n }\n static hueOf(linrgb) {\n const scaledDiscount = matrixMultiply(linrgb, HctSolver.SCALED_DISCOUNT_FROM_LINRGB),\n rA = HctSolver.chromaticAdaptation(scaledDiscount[0]),\n gA = HctSolver.chromaticAdaptation(scaledDiscount[1]),\n bA = HctSolver.chromaticAdaptation(scaledDiscount[2]),\n a = (11 * rA + -12 * gA + bA) / 11,\n b = (rA + gA - 2 * bA) / 9;\n return Math.atan2(b, a);\n }\n static areInCyclicOrder(a, b, c) {\n return HctSolver.sanitizeRadians(b - a) < HctSolver.sanitizeRadians(c - a);\n }\n static intercept(source, mid, target) {\n return (mid - source) / (target - source);\n }\n static lerpPoint(source, t, target) {\n return [source[0] + (target[0] - source[0]) * t, source[1] + (target[1] - source[1]) * t, source[2] + (target[2] - source[2]) * t];\n }\n static setCoordinate(source, coordinate, target, axis) {\n const t = HctSolver.intercept(source[axis], coordinate, target[axis]);\n return HctSolver.lerpPoint(source, t, target);\n }\n static isBounded(x) {\n return 0 <= x && x <= 100;\n }\n static nthVertex(y, n) {\n const kR = HctSolver.Y_FROM_LINRGB[0],\n kG = HctSolver.Y_FROM_LINRGB[1],\n kB = HctSolver.Y_FROM_LINRGB[2],\n coordA = n % 4 <= 1 ? 0 : 100,\n coordB = n % 2 == 0 ? 0 : 100;\n if (n < 4) {\n const g = coordA,\n b = coordB,\n r = (y - g * kG - b * kB) / kR;\n return HctSolver.isBounded(r) ? [r, g, b] : [-1, -1, -1];\n }\n if (n < 8) {\n const b = coordA,\n r = coordB,\n g = (y - r * kR - b * kB) / kG;\n return HctSolver.isBounded(g) ? [r, g, b] : [-1, -1, -1];\n }\n {\n const r = coordA,\n g = coordB,\n b = (y - r * kR - g * kG) / kB;\n return HctSolver.isBounded(b) ? [r, g, b] : [-1, -1, -1];\n }\n }\n static bisectToSegment(y, targetHue) {\n let left = [-1, -1, -1],\n right = left,\n leftHue = 0,\n rightHue = 0,\n initialized = !1,\n uncut = !0;\n for (let n = 0; n < 12; n++) {\n const mid = HctSolver.nthVertex(y, n);\n if (mid[0] < 0) continue;\n const midHue = HctSolver.hueOf(mid);\n initialized ? (uncut || HctSolver.areInCyclicOrder(leftHue, midHue, rightHue)) && (uncut = !1, HctSolver.areInCyclicOrder(leftHue, targetHue, midHue) ? (right = mid, rightHue = midHue) : (left = mid, leftHue = midHue)) : (left = mid, right = mid, leftHue = midHue, rightHue = midHue, initialized = !0);\n }\n return [left, right];\n }\n static midpoint(a, b) {\n return [(a[0] + b[0]) / 2, (a[1] + b[1]) / 2, (a[2] + b[2]) / 2];\n }\n static criticalPlaneBelow(x) {\n return Math.floor(x - .5);\n }\n static criticalPlaneAbove(x) {\n return Math.ceil(x - .5);\n }\n static bisectToLimit(y, targetHue) {\n const segment = HctSolver.bisectToSegment(y, targetHue);\n let left = segment[0],\n leftHue = HctSolver.hueOf(left),\n right = segment[1];\n for (let axis = 0; axis < 3; axis++) if (left[axis] !== right[axis]) {\n let lPlane = -1,\n rPlane = 255;\n left[axis] < right[axis] ? (lPlane = HctSolver.criticalPlaneBelow(HctSolver.trueDelinearized(left[axis])), rPlane = HctSolver.criticalPlaneAbove(HctSolver.trueDelinearized(right[axis]))) : (lPlane = HctSolver.criticalPlaneAbove(HctSolver.trueDelinearized(left[axis])), rPlane = HctSolver.criticalPlaneBelow(HctSolver.trueDelinearized(right[axis])));\n for (let i = 0; i < 8 && !(Math.abs(rPlane - lPlane) <= 1); i++) {\n const mPlane = Math.floor((lPlane + rPlane) / 2),\n midPlaneCoordinate = HctSolver.CRITICAL_PLANES[mPlane],\n mid = HctSolver.setCoordinate(left, midPlaneCoordinate, right, axis),\n midHue = HctSolver.hueOf(mid);\n HctSolver.areInCyclicOrder(leftHue, targetHue, midHue) ? (right = mid, rPlane = mPlane) : (left = mid, leftHue = midHue, lPlane = mPlane);\n }\n }\n return HctSolver.midpoint(left, right);\n }\n static inverseChromaticAdaptation(adapted) {\n const adaptedAbs = Math.abs(adapted),\n base = Math.max(0, 27.13 * adaptedAbs / (400 - adaptedAbs));\n return signum(adapted) * Math.pow(base, 1 / .42);\n }\n static findResultByJ(hueRadians, chroma, y) {\n let j = 11 * Math.sqrt(y);\n const viewingConditions = ViewingConditions.DEFAULT,\n tInnerCoeff = 1 / Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73),\n p1 = .25 * (Math.cos(hueRadians + 2) + 3.8) * (5e4 / 13) * viewingConditions.nc * viewingConditions.ncb,\n hSin = Math.sin(hueRadians),\n hCos = Math.cos(hueRadians);\n for (let iterationRound = 0; iterationRound < 5; iterationRound++) {\n const jNormalized = j / 100,\n alpha = 0 === chroma || 0 === j ? 0 : chroma / Math.sqrt(jNormalized),\n t = Math.pow(alpha * tInnerCoeff, 1 / .9),\n p2 = viewingConditions.aw * Math.pow(jNormalized, 1 / viewingConditions.c / viewingConditions.z) / viewingConditions.nbb,\n gamma = 23 * (p2 + .305) * t / (23 * p1 + 11 * t * hCos + 108 * t * hSin),\n a = gamma * hCos,\n b = gamma * hSin,\n rA = (460 * p2 + 451 * a + 288 * b) / 1403,\n gA = (460 * p2 - 891 * a - 261 * b) / 1403,\n bA = (460 * p2 - 220 * a - 6300 * b) / 1403,\n linrgb = matrixMultiply([HctSolver.inverseChromaticAdaptation(rA), HctSolver.inverseChromaticAdaptation(gA), HctSolver.inverseChromaticAdaptation(bA)], HctSolver.LINRGB_FROM_SCALED_DISCOUNT);\n if (linrgb[0] < 0 || linrgb[1] < 0 || linrgb[2] < 0) return 0;\n const kR = HctSolver.Y_FROM_LINRGB[0],\n kG = HctSolver.Y_FROM_LINRGB[1],\n kB = HctSolver.Y_FROM_LINRGB[2],\n fnj = kR * linrgb[0] + kG * linrgb[1] + kB * linrgb[2];\n if (fnj <= 0) return 0;\n if (4 === iterationRound || Math.abs(fnj - y) < .002) return linrgb[0] > 100.01 || linrgb[1] > 100.01 || linrgb[2] > 100.01 ? 0 : argbFromLinrgb(linrgb);\n j -= (fnj - y) * j / (2 * fnj);\n }\n return 0;\n }\n static solveToInt(hueDegrees, chroma, lstar) {\n if (chroma < 1e-4 || lstar < 1e-4 || lstar > 99.9999) return argbFromLstar(lstar);\n const hueRadians = (hueDegrees = sanitizeDegreesDouble(hueDegrees)) / 180 * Math.PI,\n y = yFromLstar(lstar),\n exactAnswer = HctSolver.findResultByJ(hueRadians, chroma, y);\n if (0 !== exactAnswer) return exactAnswer;\n return argbFromLinrgb(HctSolver.bisectToLimit(y, hueRadians));\n }\n static solveToCam(hueDegrees, chroma, lstar) {\n return Cam16.fromInt(HctSolver.solveToInt(hueDegrees, chroma, lstar));\n }\n}\nHctSolver.SCALED_DISCOUNT_FROM_LINRGB = [[.001200833568784504, .002389694492170889, .0002795742885861124], [.0005891086651375999, .0029785502573438758, .0003270666104008398], [.00010146692491640572, .0005364214359186694, .0032979401770712076]], HctSolver.LINRGB_FROM_SCALED_DISCOUNT = [[1373.2198709594231, -1100.4251190754821, -7.278681089101213], [-271.815969077903, 559.6580465940733, -32.46047482791194], [1.9622899599665666, -57.173814538844006, 308.7233197812385]], HctSolver.Y_FROM_LINRGB = [.2126, .7152, .0722], HctSolver.CRITICAL_PLANES = [.015176349177441876, .045529047532325624, .07588174588720938, .10623444424209313, .13658714259697685, .16693984095186062, .19729253930674434, .2276452376616281, .2579979360165119, .28835063437139563, .3188300904430532, .350925934958123, .3848314933096426, .42057480301049466, .458183274052838, .4976837250274023, .5391024159806381, .5824650784040898, .6277969426914107, .6751227633498623, .7244668422128921, .775853049866786, .829304845476233, .8848452951698498, .942497089126609, 1.0022825574869039, 1.0642236851973577, 1.1283421258858297, 1.1946592148522128, 1.2631959812511864, 1.3339731595349034, 1.407011200216447, 1.4823302800086415, 1.5599503113873272, 1.6398909516233677, 1.7221716113234105, 1.8068114625156377, 1.8938294463134073, 1.9832442801866852, 2.075074464868551, 2.1693382909216234, 2.2660538449872063, 2.36523901573795, 2.4669114995532007, 2.5710888059345764, 2.6777882626779785, 2.7870270208169257, 2.898822059350997, 3.0131901897720907, 3.1301480604002863, 3.2497121605402226, 3.3718988244681087, 3.4967242352587946, 3.624204428461639, 3.754355295633311, 3.887192587735158, 4.022731918402185, 4.160988767090289, 4.301978482107941, 4.445716283538092, 4.592217266055746, 4.741496401646282, 4.893568542229298, 5.048448422192488, 5.20615066083972, 5.3666897647573375, 5.5300801301023865, 5.696336044816294, 5.865471690767354, 6.037501145825082, 6.212438385869475, 6.390297286737924, 6.571091626112461, 6.7548350853498045, 6.941541251256611, 7.131223617812143, 7.323895587840543, 7.5195704746346665, 7.7182615035334345, 7.919981813454504, 8.124744458384042, 8.332562408825165, 8.543448553206703, 8.757415699253682, 8.974476575321063, 9.194643831691977, 9.417930041841839, 9.644347703669503, 9.873909240696694, 10.106627003236781, 10.342513269534024, 10.58158024687427, 10.8238400726681, 11.069304815507364, 11.317986476196008, 11.569896988756009, 11.825048221409341, 12.083451977536606, 12.345119996613247, 12.610063955123938, 12.878295467455942, 13.149826086772048, 13.42466730586372, 13.702830557985108, 13.984327217668513, 14.269168601521828, 14.55736596900856, 14.848930523210871, 15.143873411576273, 15.44220572664832, 15.743938506781891, 16.04908273684337, 16.35764934889634, 16.66964922287304, 16.985093187232053, 17.30399201960269, 17.62635644741625, 17.95219714852476, 18.281524751807332, 18.614349837764564, 18.95068293910138, 19.290534541298456, 19.633915083172692, 19.98083495742689, 20.331304511189067, 20.685334046541502, 21.042933821039977, 21.404114048223256, 21.76888489811322, 22.137256497705877, 22.50923893145328, 22.884842241736916, 23.264076429332462, 23.6469514538663, 24.033477234264016, 24.42366364919083, 24.817520537484558, 25.21505769858089, 25.61628489293138, 26.021211842414342, 26.429848230738664, 26.842203703840827, 27.258287870275353, 27.678110301598522, 28.10168053274597, 28.529008062403893, 28.96010235337422, 29.39497283293396, 29.83362889318845, 30.276079891419332, 30.722335150426627, 31.172403958865512, 31.62629557157785, 32.08401920991837, 32.54558406207592, 33.010999283389665, 33.4802739966603, 33.953417292456834, 34.430438229418264, 34.911345834551085, 35.39614910352207, 35.88485700094671, 36.37747846067349, 36.87402238606382, 37.37449765026789, 37.87891309649659, 38.38727753828926, 38.89959975977785, 39.41588851594697, 39.93615253289054, 40.460400508064545, 40.98864111053629, 41.520882981230194, 42.05713473317016, 42.597404951718396, 43.141702194811224, 43.6900349931913, 44.24241185063697, 44.798841244188324, 45.35933162437017, 45.92389141541209, 46.49252901546552, 47.065252796817916, 47.64207110610409, 48.22299226451468, 48.808024568002054, 49.3971762874833, 49.9904556690408, 50.587870934119984, 51.189430279724725, 51.79514187861014, 52.40501387947288, 53.0190544071392, 53.637271562750364, 54.259673423945976, 54.88626804504493, 55.517063457223934, 56.15206766869424, 56.79128866487574, 57.43473440856916, 58.08241284012621, 58.734331877617365, 59.39049941699807, 60.05092333227251, 60.715611475655585, 61.38457167773311, 62.057811747619894, 62.7353394731159, 63.417162620860914, 64.10328893648692, 64.79372614476921, 65.48848194977529, 66.18756403501224, 66.89098006357258, 67.59873767827808, 68.31084450182222, 69.02730813691093, 69.74813616640164, 70.47333615344107, 71.20291564160104, 71.93688215501312, 72.67524319850172, 73.41800625771542, 74.16517879925733, 74.9167682708136, 75.67278210128072, 76.43322770089146, 77.1981124613393, 77.96744375590167, 78.74122893956174, 79.51947534912904, 80.30219030335869, 81.08938110306934, 81.88105503125999, 82.67721935322541, 83.4778813166706, 84.28304815182372, 85.09272707154808, 85.90692527145302, 86.72564993000343, 87.54890820862819, 88.3767072518277, 89.2090541872801, 90.04595612594655, 90.88742016217518, 91.73345337380438, 92.58406282226491, 93.43925555268066, 94.29903859396902, 95.16341895893969, 96.03240364439274, 96.9059996312159, 97.78421388448044, 98.6670533535366, 99.55452497210776];\nclass Hct {\n static from(hue, chroma, tone) {\n return new Hct(HctSolver.solveToInt(hue, chroma, tone));\n }\n static fromInt(argb) {\n return new Hct(argb);\n }\n toInt() {\n return this.argb;\n }\n get hue() {\n return this.internalHue;\n }\n set hue(newHue) {\n this.setInternalState(HctSolver.solveToInt(newHue, this.internalChroma, this.internalTone));\n }\n get chroma() {\n return this.internalChroma;\n }\n set chroma(newChroma) {\n this.setInternalState(HctSolver.solveToInt(this.internalHue, newChroma, this.internalTone));\n }\n get tone() {\n return this.internalTone;\n }\n set tone(newTone) {\n this.setInternalState(HctSolver.solveToInt(this.internalHue, this.internalChroma, newTone));\n }\n constructor(argb) {\n this.argb = argb;\n const cam = Cam16.fromInt(argb);\n this.internalHue = cam.hue, this.internalChroma = cam.chroma, this.internalTone = lstarFromArgb(argb), this.argb = argb;\n }\n setInternalState(argb) {\n const cam = Cam16.fromInt(argb);\n this.internalHue = cam.hue, this.internalChroma = cam.chroma, this.internalTone = lstarFromArgb(argb), this.argb = argb;\n }\n inViewingConditions(vc) {\n const viewedInVc = Cam16.fromInt(this.toInt()).xyzInViewingConditions(vc),\n recastInVc = Cam16.fromXyzInViewingConditions(viewedInVc[0], viewedInVc[1], viewedInVc[2], ViewingConditions.make());\n return Hct.from(recastInVc.hue, recastInVc.chroma, lstarFromY(viewedInVc[1]));\n }\n}\nclass Blend {\n static harmonize(designColor, sourceColor) {\n const fromHct = Hct.fromInt(designColor),\n toHct = Hct.fromInt(sourceColor),\n differenceDegrees$1 = differenceDegrees(fromHct.hue, toHct.hue),\n rotationDegrees = Math.min(.5 * differenceDegrees$1, 15),\n outputHue = sanitizeDegreesDouble(fromHct.hue + rotationDegrees * rotationDirection(fromHct.hue, toHct.hue));\n return Hct.from(outputHue, fromHct.chroma, fromHct.tone).toInt();\n }\n static hctHue(from, to, amount) {\n const ucs = Blend.cam16Ucs(from, to, amount),\n ucsCam = Cam16.fromInt(ucs),\n fromCam = Cam16.fromInt(from);\n return Hct.from(ucsCam.hue, fromCam.chroma, lstarFromArgb(from)).toInt();\n }\n static cam16Ucs(from, to, amount) {\n const fromCam = Cam16.fromInt(from),\n toCam = Cam16.fromInt(to),\n fromJ = fromCam.jstar,\n fromA = fromCam.astar,\n fromB = fromCam.bstar,\n jstar = fromJ + (toCam.jstar - fromJ) * amount,\n astar = fromA + (toCam.astar - fromA) * amount,\n bstar = fromB + (toCam.bstar - fromB) * amount;\n return Cam16.fromUcs(jstar, astar, bstar).toInt();\n }\n}\nclass Contrast {\n static ratioOfTones(toneA, toneB) {\n return toneA = clampDouble(0, 100, toneA), toneB = clampDouble(0, 100, toneB), Contrast.ratioOfYs(yFromLstar(toneA), yFromLstar(toneB));\n }\n static ratioOfYs(y1, y2) {\n const lighter = y1 > y2 ? y1 : y2;\n return (lighter + 5) / ((lighter === y2 ? y1 : y2) + 5);\n }\n static lighter(tone, ratio) {\n if (tone < 0 || tone > 100) return -1;\n const darkY = yFromLstar(tone),\n lightY = ratio * (darkY + 5) - 5,\n realContrast = Contrast.ratioOfYs(lightY, darkY),\n delta = Math.abs(realContrast - ratio);\n if (realContrast < ratio && delta > .04) return -1;\n const returnValue = lstarFromY(lightY) + .4;\n return returnValue < 0 || returnValue > 100 ? -1 : returnValue;\n }\n static darker(tone, ratio) {\n if (tone < 0 || tone > 100) return -1;\n const lightY = yFromLstar(tone),\n darkY = (lightY + 5) / ratio - 5,\n realContrast = Contrast.ratioOfYs(lightY, darkY),\n delta = Math.abs(realContrast - ratio);\n if (realContrast < ratio && delta > .04) return -1;\n const returnValue = lstarFromY(darkY) - .4;\n return returnValue < 0 || returnValue > 100 ? -1 : returnValue;\n }\n static lighterUnsafe(tone, ratio) {\n const lighterSafe = Contrast.lighter(tone, ratio);\n return lighterSafe < 0 ? 100 : lighterSafe;\n }\n static darkerUnsafe(tone, ratio) {\n const darkerSafe = Contrast.darker(tone, ratio);\n return darkerSafe < 0 ? 0 : darkerSafe;\n }\n}\nclass DislikeAnalyzer {\n static isDisliked(hct) {\n const huePasses = Math.round(hct.hue) >= 90 && Math.round(hct.hue) <= 111,\n chromaPasses = Math.round(hct.chroma) > 16,\n tonePasses = Math.round(hct.tone) < 65;\n return huePasses && chromaPasses && tonePasses;\n }\n static fixIfDisliked(hct) {\n return DislikeAnalyzer.isDisliked(hct) ? Hct.from(hct.hue, hct.chroma, 70) : hct;\n }\n}\nclass DynamicColor {\n static fromPalette(args) {\n return new DynamicColor(args.name ?? \"\", args.palette, args.tone, args.isBackground ?? !1, args.background, args.secondBackground, args.contrastCurve, args.toneDeltaPair);\n }\n constructor(name, palette, tone, isBackground, background, secondBackground, contrastCurve, toneDeltaPair) {\n if (this.name = name, this.palette = palette, this.tone = tone, this.isBackground = isBackground, this.background = background, this.secondBackground = secondBackground, this.contrastCurve = contrastCurve, this.toneDeltaPair = toneDeltaPair, this.hctCache = new Map(), !background && secondBackground) throw new Error(`Color ${name} has secondBackgrounddefined, but background is not defined.`);\n if (!background && contrastCurve) throw new Error(`Color ${name} has contrastCurvedefined, but background is not defined.`);\n if (background && !contrastCurve) throw new Error(`Color ${name} has backgrounddefined, but contrastCurve is not defined.`);\n }\n getArgb(scheme) {\n return this.getHct(scheme).toInt();\n }\n getHct(scheme) {\n const cachedAnswer = this.hctCache.get(scheme);\n if (null != cachedAnswer) return cachedAnswer;\n const tone = this.getTone(scheme),\n answer = this.palette(scheme).getHct(tone);\n return this.hctCache.size > 4 && this.hctCache.clear(), this.hctCache.set(scheme, answer), answer;\n }\n getTone(scheme) {\n const decreasingContrast = scheme.contrastLevel < 0;\n if (this.toneDeltaPair) {\n const toneDeltaPair = this.toneDeltaPair(scheme),\n roleA = toneDeltaPair.roleA,\n roleB = toneDeltaPair.roleB,\n delta = toneDeltaPair.delta,\n polarity = toneDeltaPair.polarity,\n stayTogether = toneDeltaPair.stayTogether,\n bgTone = this.background(scheme).getTone(scheme),\n aIsNearer = \"nearer\" === polarity || \"lighter\" === polarity && !scheme.isDark || \"darker\" === polarity && scheme.isDark,\n nearer = aIsNearer ? roleA : roleB,\n farther = aIsNearer ? roleB : roleA,\n amNearer = this.name === nearer.name,\n expansionDir = scheme.isDark ? 1 : -1,\n nContrast = nearer.contrastCurve.getContrast(scheme.contrastLevel),\n fContrast = farther.contrastCurve.getContrast(scheme.contrastLevel),\n nInitialTone = nearer.tone(scheme);\n let nTone = Contrast.ratioOfTones(bgTone, nInitialTone) >= nContrast ? nInitialTone : DynamicColor.foregroundTone(bgTone, nContrast);\n const fInitialTone = farther.tone(scheme);\n let fTone = Contrast.ratioOfTones(bgTone, fInitialTone) >= fContrast ? fInitialTone : DynamicColor.foregroundTone(bgTone, fContrast);\n return decreasingContrast && (nTone = DynamicColor.foregroundTone(bgTone, nContrast), fTone = DynamicColor.foregroundTone(bgTone, fContrast)), (fTone - nTone) * expansionDir >= delta || (fTone = clampDouble(0, 100, nTone + delta * expansionDir), (fTone - nTone) * expansionDir >= delta || (nTone = clampDouble(0, 100, fTone - delta * expansionDir))), 50 <= nTone && nTone < 60 ? expansionDir > 0 ? (nTone = 60, fTone = Math.max(fTone, nTone + delta * expansionDir)) : (nTone = 49, fTone = Math.min(fTone, nTone + delta * expansionDir)) : 50 <= fTone && fTone < 60 && (stayTogether ? expansionDir > 0 ? (nTone = 60, fTone = Math.max(fTone, nTone + delta * expansionDir)) : (nTone = 49, fTone = Math.min(fTone, nTone + delta * expansionDir)) : fTone = expansionDir > 0 ? 60 : 49), amNearer ? nTone : fTone;\n }\n {\n let answer = this.tone(scheme);\n if (null == this.background) return answer;\n const bgTone = this.background(scheme).getTone(scheme),\n desiredRatio = this.contrastCurve.getContrast(scheme.contrastLevel);\n if (Contrast.ratioOfTones(bgTone, answer) >= desiredRatio || (answer = DynamicColor.foregroundTone(bgTone, desiredRatio)), decreasingContrast && (answer = DynamicColor.foregroundTone(bgTone, desiredRatio)), this.isBackground && 50 <= answer && answer < 60 && (answer = Contrast.ratioOfTones(49, bgTone) >= desiredRatio ? 49 : 60), this.secondBackground) {\n const [bg1, bg2] = [this.background, this.secondBackground],\n [bgTone1, bgTone2] = [bg1(scheme).getTone(scheme), bg2(scheme).getTone(scheme)],\n [upper, lower] = [Math.max(bgTone1, bgTone2), Math.min(bgTone1, bgTone2)];\n if (Contrast.ratioOfTones(upper, answer) >= desiredRatio && Contrast.ratioOfTones(lower, answer) >= desiredRatio) return answer;\n const lightOption = Contrast.lighter(upper, desiredRatio),\n darkOption = Contrast.darker(lower, desiredRatio),\n availables = [];\n -1 !== lightOption && availables.push(lightOption), -1 !== darkOption && availables.push(darkOption);\n return DynamicColor.tonePrefersLightForeground(bgTone1) || DynamicColor.tonePrefersLightForeground(bgTone2) ? lightOption < 0 ? 100 : lightOption : 1 === availables.length ? availables[0] : darkOption < 0 ? 0 : darkOption;\n }\n return answer;\n }\n }\n static foregroundTone(bgTone, ratio) {\n const lighterTone = Contrast.lighterUnsafe(bgTone, ratio),\n darkerTone = Contrast.darkerUnsafe(bgTone, ratio),\n lighterRatio = Contrast.ratioOfTones(lighterTone, bgTone),\n darkerRatio = Contrast.ratioOfTones(darkerTone, bgTone);\n if (DynamicColor.tonePrefersLightForeground(bgTone)) {\n const negligibleDifference = Math.abs(lighterRatio - darkerRatio) < .1 && lighterRatio < ratio && darkerRatio < ratio;\n return lighterRatio >= ratio || lighterRatio >= darkerRatio || negligibleDifference ? lighterTone : darkerTone;\n }\n return darkerRatio >= ratio || darkerRatio >= lighterRatio ? darkerTone : lighterTone;\n }\n static tonePrefersLightForeground(tone) {\n return Math.round(tone) < 60;\n }\n static toneAllowsLightForeground(tone) {\n return Math.round(tone) <= 49;\n }\n static enableLightForeground(tone) {\n return DynamicColor.tonePrefersLightForeground(tone) && !DynamicColor.toneAllowsLightForeground(tone) ? 49 : tone;\n }\n}\nvar Variant;\n!function (Variant) {\n Variant[Variant.MONOCHROME = 0] = \"MONOCHROME\", Variant[Variant.NEUTRAL = 1] = \"NEUTRAL\", Variant[Variant.TONAL_SPOT = 2] = \"TONAL_SPOT\", Variant[Variant.VIBRANT = 3] = \"VIBRANT\", Variant[Variant.EXPRESSIVE = 4] = \"EXPRESSIVE\", Variant[Variant.FIDELITY = 5] = \"FIDELITY\", Variant[Variant.CONTENT = 6] = \"CONTENT\", Variant[Variant.RAINBOW = 7] = \"RAINBOW\", Variant[Variant.FRUIT_SALAD = 8] = \"FRUIT_SALAD\";\n}(Variant || (Variant = {}));\nclass ContrastCurve {\n constructor(low, normal, medium, high) {\n this.low = low, this.normal = normal, this.medium = medium, this.high = high;\n }\n getContrast(contrastLevel) {\n return contrastLevel <= -1 ? this.low : contrastLevel < 0 ? lerp(this.low, this.normal, (contrastLevel - -1) / 1) : contrastLevel < .5 ? lerp(this.normal, this.medium, (contrastLevel - 0) / .5) : contrastLevel < 1 ? lerp(this.medium, this.high, (contrastLevel - .5) / .5) : this.high;\n }\n}\nclass ToneDeltaPair {\n constructor(roleA, roleB, delta, polarity, stayTogether) {\n this.roleA = roleA, this.roleB = roleB, this.delta = delta, this.polarity = polarity, this.stayTogether = stayTogether;\n }\n}\nfunction isFidelity(scheme) {\n return scheme.variant === Variant.FIDELITY || scheme.variant === Variant.CONTENT;\n}\nfunction isMonochrome(scheme) {\n return scheme.variant === Variant.MONOCHROME;\n}\nfunction findDesiredChromaByTone(hue, chroma, tone, byDecreasingTone) {\n let answer = tone,\n closestToChroma = Hct.from(hue, chroma, tone);\n if (closestToChroma.chroma < chroma) {\n let chromaPeak = closestToChroma.chroma;\n for (; closestToChroma.chroma < chroma;) {\n answer += byDecreasingTone ? -1 : 1;\n const potentialSolution = Hct.from(hue, chroma, answer);\n if (chromaPeak > potentialSolution.chroma) break;\n if (Math.abs(potentialSolution.chroma - chroma) < .4) break;\n Math.abs(potentialSolution.chroma - chroma) < Math.abs(closestToChroma.chroma - chroma) && (closestToChroma = potentialSolution), chromaPeak = Math.max(chromaPeak, potentialSolution.chroma);\n }\n }\n return answer;\n}\nfunction viewingConditionsForAlbers(scheme) {\n return ViewingConditions.make(void 0, void 0, scheme.isDark ? 30 : 80, void 0, void 0);\n}\nfunction performAlbers(prealbers, scheme) {\n const albersd = prealbers.inViewingConditions(viewingConditionsForAlbers(scheme));\n return DynamicColor.tonePrefersLightForeground(prealbers.tone) && !DynamicColor.toneAllowsLightForeground(albersd.tone) ? DynamicColor.enableLightForeground(prealbers.tone) : DynamicColor.enableLightForeground(albersd.tone);\n}\nclass MaterialDynamicColors {\n static highestSurface(s) {\n return s.isDark ? MaterialDynamicColors.surfaceBright : MaterialDynamicColors.surfaceDim;\n }\n}\nMaterialDynamicColors.contentAccentToneDelta = 15, MaterialDynamicColors.primaryPaletteKeyColor = DynamicColor.fromPalette({\n name: \"primary_palette_key_color\",\n palette: s => s.primaryPalette,\n tone: s => s.primaryPalette.keyColor.tone\n}), MaterialDynamicColors.secondaryPaletteKeyColor = DynamicColor.fromPalette({\n name: \"secondary_palette_key_color\",\n palette: s => s.secondaryPalette,\n tone: s => s.secondaryPalette.keyColor.tone\n}), MaterialDynamicColors.tertiaryPaletteKeyColor = DynamicColor.fromPalette({\n name: \"tertiary_palette_key_color\",\n palette: s => s.tertiaryPalette,\n tone: s => s.tertiaryPalette.keyColor.tone\n}), MaterialDynamicColors.neutralPaletteKeyColor = DynamicColor.fromPalette({\n name: \"neutral_palette_key_color\",\n palette: s => s.neutralPalette,\n tone: s => s.neutralPalette.keyColor.tone\n}), MaterialDynamicColors.neutralVariantPaletteKeyColor = DynamicColor.fromPalette({\n name: \"neutral_variant_palette_key_color\",\n palette: s => s.neutralVariantPalette,\n tone: s => s.neutralVariantPalette.keyColor.tone\n}), MaterialDynamicColors.background = DynamicColor.fromPalette({\n name: \"background\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 6 : 98,\n isBackground: !0\n}), MaterialDynamicColors.onBackground = DynamicColor.fromPalette({\n name: \"on_background\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.background,\n contrastCurve: new ContrastCurve(3, 3, 4.5, 7)\n}), MaterialDynamicColors.surface = DynamicColor.fromPalette({\n name: \"surface\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 6 : 98,\n isBackground: !0\n}), MaterialDynamicColors.surfaceDim = DynamicColor.fromPalette({\n name: \"surface_dim\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 6 : 87,\n isBackground: !0\n}), MaterialDynamicColors.surfaceBright = DynamicColor.fromPalette({\n name: \"surface_bright\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 24 : 98,\n isBackground: !0\n}), MaterialDynamicColors.surfaceContainerLowest = DynamicColor.fromPalette({\n name: \"surface_container_lowest\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 4 : 100,\n isBackground: !0\n}), MaterialDynamicColors.surfaceContainerLow = DynamicColor.fromPalette({\n name: \"surface_container_low\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 10 : 96,\n isBackground: !0\n}), MaterialDynamicColors.surfaceContainer = DynamicColor.fromPalette({\n name: \"surface_container\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 12 : 94,\n isBackground: !0\n}), MaterialDynamicColors.surfaceContainerHigh = DynamicColor.fromPalette({\n name: \"surface_container_high\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 17 : 92,\n isBackground: !0\n}), MaterialDynamicColors.surfaceContainerHighest = DynamicColor.fromPalette({\n name: \"surface_container_highest\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 22 : 90,\n isBackground: !0\n}), MaterialDynamicColors.onSurface = DynamicColor.fromPalette({\n name: \"on_surface\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.surfaceVariant = DynamicColor.fromPalette({\n name: \"surface_variant\",\n palette: s => s.neutralVariantPalette,\n tone: s => s.isDark ? 30 : 90,\n isBackground: !0\n}), MaterialDynamicColors.onSurfaceVariant = DynamicColor.fromPalette({\n name: \"on_surface_variant\",\n palette: s => s.neutralVariantPalette,\n tone: s => s.isDark ? 80 : 30,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.inverseSurface = DynamicColor.fromPalette({\n name: \"inverse_surface\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 90 : 20\n}), MaterialDynamicColors.inverseOnSurface = DynamicColor.fromPalette({\n name: \"inverse_on_surface\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 20 : 95,\n background: s => MaterialDynamicColors.inverseSurface,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.outline = DynamicColor.fromPalette({\n name: \"outline\",\n palette: s => s.neutralVariantPalette,\n tone: s => s.isDark ? 60 : 50,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1.5, 3, 4.5, 7)\n}), MaterialDynamicColors.outlineVariant = DynamicColor.fromPalette({\n name: \"outline_variant\",\n palette: s => s.neutralVariantPalette,\n tone: s => s.isDark ? 30 : 80,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7)\n}), MaterialDynamicColors.shadow = DynamicColor.fromPalette({\n name: \"shadow\",\n palette: s => s.neutralPalette,\n tone: s => 0\n}), MaterialDynamicColors.scrim = DynamicColor.fromPalette({\n name: \"scrim\",\n palette: s => s.neutralPalette,\n tone: s => 0\n}), MaterialDynamicColors.surfaceTint = DynamicColor.fromPalette({\n name: \"surface_tint\",\n palette: s => s.primaryPalette,\n tone: s => s.isDark ? 80 : 40,\n isBackground: !0\n}), MaterialDynamicColors.primary = DynamicColor.fromPalette({\n name: \"primary\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 100 : 0 : s.isDark ? 80 : 40,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryContainer, MaterialDynamicColors.primary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onPrimary = DynamicColor.fromPalette({\n name: \"on_primary\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 10 : 90 : s.isDark ? 20 : 100,\n background: s => MaterialDynamicColors.primary,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.primaryContainer = DynamicColor.fromPalette({\n name: \"primary_container\",\n palette: s => s.primaryPalette,\n tone: s => isFidelity(s) ? performAlbers(s.sourceColorHct, s) : isMonochrome(s) ? s.isDark ? 85 : 25 : s.isDark ? 30 : 90,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryContainer, MaterialDynamicColors.primary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onPrimaryContainer = DynamicColor.fromPalette({\n name: \"on_primary_container\",\n palette: s => s.primaryPalette,\n tone: s => isFidelity(s) ? DynamicColor.foregroundTone(MaterialDynamicColors.primaryContainer.tone(s), 4.5) : isMonochrome(s) ? s.isDark ? 0 : 100 : s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.primaryContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.inversePrimary = DynamicColor.fromPalette({\n name: \"inverse_primary\",\n palette: s => s.primaryPalette,\n tone: s => s.isDark ? 40 : 80,\n background: s => MaterialDynamicColors.inverseSurface,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.secondary = DynamicColor.fromPalette({\n name: \"secondary\",\n palette: s => s.secondaryPalette,\n tone: s => s.isDark ? 80 : 40,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryContainer, MaterialDynamicColors.secondary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onSecondary = DynamicColor.fromPalette({\n name: \"on_secondary\",\n palette: s => s.secondaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 10 : 100 : s.isDark ? 20 : 100,\n background: s => MaterialDynamicColors.secondary,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.secondaryContainer = DynamicColor.fromPalette({\n name: \"secondary_container\",\n palette: s => s.secondaryPalette,\n tone: s => {\n const initialTone = s.isDark ? 30 : 90;\n if (isMonochrome(s)) return s.isDark ? 30 : 85;\n if (!isFidelity(s)) return initialTone;\n let answer = findDesiredChromaByTone(s.secondaryPalette.hue, s.secondaryPalette.chroma, initialTone, !s.isDark);\n return answer = performAlbers(s.secondaryPalette.getHct(answer), s), answer;\n },\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryContainer, MaterialDynamicColors.secondary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onSecondaryContainer = DynamicColor.fromPalette({\n name: \"on_secondary_container\",\n palette: s => s.secondaryPalette,\n tone: s => isFidelity(s) ? DynamicColor.foregroundTone(MaterialDynamicColors.secondaryContainer.tone(s), 4.5) : s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.secondaryContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.tertiary = DynamicColor.fromPalette({\n name: \"tertiary\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 90 : 25 : s.isDark ? 80 : 40,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryContainer, MaterialDynamicColors.tertiary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onTertiary = DynamicColor.fromPalette({\n name: \"on_tertiary\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 10 : 90 : s.isDark ? 20 : 100,\n background: s => MaterialDynamicColors.tertiary,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.tertiaryContainer = DynamicColor.fromPalette({\n name: \"tertiary_container\",\n palette: s => s.tertiaryPalette,\n tone: s => {\n if (isMonochrome(s)) return s.isDark ? 60 : 49;\n if (!isFidelity(s)) return s.isDark ? 30 : 90;\n const albersTone = performAlbers(s.tertiaryPalette.getHct(s.sourceColorHct.tone), s),\n proposedHct = s.tertiaryPalette.getHct(albersTone);\n return DislikeAnalyzer.fixIfDisliked(proposedHct).tone;\n },\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryContainer, MaterialDynamicColors.tertiary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onTertiaryContainer = DynamicColor.fromPalette({\n name: \"on_tertiary_container\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 0 : 100 : isFidelity(s) ? DynamicColor.foregroundTone(MaterialDynamicColors.tertiaryContainer.tone(s), 4.5) : s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.tertiaryContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.error = DynamicColor.fromPalette({\n name: \"error\",\n palette: s => s.errorPalette,\n tone: s => s.isDark ? 80 : 40,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.errorContainer, MaterialDynamicColors.error, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onError = DynamicColor.fromPalette({\n name: \"on_error\",\n palette: s => s.errorPalette,\n tone: s => s.isDark ? 20 : 100,\n background: s => MaterialDynamicColors.error,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.errorContainer = DynamicColor.fromPalette({\n name: \"error_container\",\n palette: s => s.errorPalette,\n tone: s => s.isDark ? 30 : 90,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.errorContainer, MaterialDynamicColors.error, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onErrorContainer = DynamicColor.fromPalette({\n name: \"on_error_container\",\n palette: s => s.errorPalette,\n tone: s => s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.errorContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.primaryFixed = DynamicColor.fromPalette({\n name: \"primary_fixed\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? 40 : 90,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryFixed, MaterialDynamicColors.primaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.primaryFixedDim = DynamicColor.fromPalette({\n name: \"primary_fixed_dim\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? 30 : 80,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryFixed, MaterialDynamicColors.primaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.onPrimaryFixed = DynamicColor.fromPalette({\n name: \"on_primary_fixed\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? 100 : 10,\n background: s => MaterialDynamicColors.primaryFixedDim,\n secondBackground: s => MaterialDynamicColors.primaryFixed,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.onPrimaryFixedVariant = DynamicColor.fromPalette({\n name: \"on_primary_fixed_variant\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? 90 : 30,\n background: s => MaterialDynamicColors.primaryFixedDim,\n secondBackground: s => MaterialDynamicColors.primaryFixed,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.secondaryFixed = DynamicColor.fromPalette({\n name: \"secondary_fixed\",\n palette: s => s.secondaryPalette,\n tone: s => isMonochrome(s) ? 80 : 90,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryFixed, MaterialDynamicColors.secondaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.secondaryFixedDim = DynamicColor.fromPalette({\n name: \"secondary_fixed_dim\",\n palette: s => s.secondaryPalette,\n tone: s => isMonochrome(s) ? 70 : 80,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryFixed, MaterialDynamicColors.secondaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.onSecondaryFixed = DynamicColor.fromPalette({\n name: \"on_secondary_fixed\",\n palette: s => s.secondaryPalette,\n tone: s => 10,\n background: s => MaterialDynamicColors.secondaryFixedDim,\n secondBackground: s => MaterialDynamicColors.secondaryFixed,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.onSecondaryFixedVariant = DynamicColor.fromPalette({\n name: \"on_secondary_fixed_variant\",\n palette: s => s.secondaryPalette,\n tone: s => isMonochrome(s) ? 25 : 30,\n background: s => MaterialDynamicColors.secondaryFixedDim,\n secondBackground: s => MaterialDynamicColors.secondaryFixed,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.tertiaryFixed = DynamicColor.fromPalette({\n name: \"tertiary_fixed\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? 40 : 90,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryFixed, MaterialDynamicColors.tertiaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.tertiaryFixedDim = DynamicColor.fromPalette({\n name: \"tertiary_fixed_dim\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? 30 : 80,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryFixed, MaterialDynamicColors.tertiaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.onTertiaryFixed = DynamicColor.fromPalette({\n name: \"on_tertiary_fixed\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? 100 : 10,\n background: s => MaterialDynamicColors.tertiaryFixedDim,\n secondBackground: s => MaterialDynamicColors.tertiaryFixed,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.onTertiaryFixedVariant = DynamicColor.fromPalette({\n name: \"on_tertiary_fixed_variant\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? 90 : 30,\n background: s => MaterialDynamicColors.tertiaryFixedDim,\n secondBackground: s => MaterialDynamicColors.tertiaryFixed,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n});\nclass TonalPalette {\n static fromInt(argb) {\n const hct = Hct.fromInt(argb);\n return TonalPalette.fromHct(hct);\n }\n static fromHct(hct) {\n return new TonalPalette(hct.hue, hct.chroma, hct);\n }\n static fromHueAndChroma(hue, chroma) {\n return new TonalPalette(hue, chroma, TonalPalette.createKeyColor(hue, chroma));\n }\n constructor(hue, chroma, keyColor) {\n this.hue = hue, this.chroma = chroma, this.keyColor = keyColor, this.cache = new Map();\n }\n static createKeyColor(hue, chroma) {\n let smallestDeltaHct = Hct.from(hue, chroma, 50),\n smallestDelta = Math.abs(smallestDeltaHct.chroma - chroma);\n for (let delta = 1; delta < 50; delta += 1) {\n if (Math.round(chroma) === Math.round(smallestDeltaHct.chroma)) return smallestDeltaHct;\n const hctAdd = Hct.from(hue, chroma, 50 + delta),\n hctAddDelta = Math.abs(hctAdd.chroma - chroma);\n hctAddDelta < smallestDelta && (smallestDelta = hctAddDelta, smallestDeltaHct = hctAdd);\n const hctSubtract = Hct.from(hue, chroma, 50 - delta),\n hctSubtractDelta = Math.abs(hctSubtract.chroma - chroma);\n hctSubtractDelta < smallestDelta && (smallestDelta = hctSubtractDelta, smallestDeltaHct = hctSubtract);\n }\n return smallestDeltaHct;\n }\n tone(tone) {\n let argb = this.cache.get(tone);\n return void 0 === argb && (argb = Hct.from(this.hue, this.chroma, tone).toInt(), this.cache.set(tone, argb)), argb;\n }\n getHct(tone) {\n return Hct.fromInt(this.tone(tone));\n }\n}\nclass CorePalette {\n static of(argb) {\n return new CorePalette(argb, !1);\n }\n static contentOf(argb) {\n return new CorePalette(argb, !0);\n }\n static fromColors(colors) {\n return CorePalette.createPaletteFromColors(!1, colors);\n }\n static contentFromColors(colors) {\n return CorePalette.createPaletteFromColors(!0, colors);\n }\n static createPaletteFromColors(content, colors) {\n const palette = new CorePalette(colors.primary, content);\n if (colors.secondary) {\n const p = new CorePalette(colors.secondary, content);\n palette.a2 = p.a1;\n }\n if (colors.tertiary) {\n const p = new CorePalette(colors.tertiary, content);\n palette.a3 = p.a1;\n }\n if (colors.error) {\n const p = new CorePalette(colors.error, content);\n palette.error = p.a1;\n }\n if (colors.neutral) {\n const p = new CorePalette(colors.neutral, content);\n palette.n1 = p.n1;\n }\n if (colors.neutralVariant) {\n const p = new CorePalette(colors.neutralVariant, content);\n palette.n2 = p.n2;\n }\n return palette;\n }\n constructor(argb, isContent) {\n const hct = Hct.fromInt(argb),\n hue = hct.hue,\n chroma = hct.chroma;\n isContent ? (this.a1 = TonalPalette.fromHueAndChroma(hue, chroma), this.a2 = TonalPalette.fromHueAndChroma(hue, chroma / 3), this.a3 = TonalPalette.fromHueAndChroma(hue + 60, chroma / 2), this.n1 = TonalPalette.fromHueAndChroma(hue, Math.min(chroma / 12, 4)), this.n2 = TonalPalette.fromHueAndChroma(hue, Math.min(chroma / 6, 8))) : (this.a1 = TonalPalette.fromHueAndChroma(hue, Math.max(48, chroma)), this.a2 = TonalPalette.fromHueAndChroma(hue, 16), this.a3 = TonalPalette.fromHueAndChroma(hue + 60, 24), this.n1 = TonalPalette.fromHueAndChroma(hue, 4), this.n2 = TonalPalette.fromHueAndChroma(hue, 8)), this.error = TonalPalette.fromHueAndChroma(25, 84);\n }\n}\nclass Scheme {\n get primary() {\n return this.props.primary;\n }\n get onPrimary() {\n return this.props.onPrimary;\n }\n get primaryContainer() {\n return this.props.primaryContainer;\n }\n get onPrimaryContainer() {\n return this.props.onPrimaryContainer;\n }\n get secondary() {\n return this.props.secondary;\n }\n get onSecondary() {\n return this.props.onSecondary;\n }\n get secondaryContainer() {\n return this.props.secondaryContainer;\n }\n get onSecondaryContainer() {\n return this.props.onSecondaryContainer;\n }\n get tertiary() {\n return this.props.tertiary;\n }\n get onTertiary() {\n return this.props.onTertiary;\n }\n get tertiaryContainer() {\n return this.props.tertiaryContainer;\n }\n get onTertiaryContainer() {\n return this.props.onTertiaryContainer;\n }\n get error() {\n return this.props.error;\n }\n get onError() {\n return this.props.onError;\n }\n get errorContainer() {\n return this.props.errorContainer;\n }\n get onErrorContainer() {\n return this.props.onErrorContainer;\n }\n get background() {\n return this.props.background;\n }\n get onBackground() {\n return this.props.onBackground;\n }\n get surface() {\n return this.props.surface;\n }\n get onSurface() {\n return this.props.onSurface;\n }\n get surfaceVariant() {\n return this.props.surfaceVariant;\n }\n get onSurfaceVariant() {\n return this.props.onSurfaceVariant;\n }\n get outline() {\n return this.props.outline;\n }\n get outlineVariant() {\n return this.props.outlineVariant;\n }\n get shadow() {\n return this.props.shadow;\n }\n get scrim() {\n return this.props.scrim;\n }\n get inverseSurface() {\n return this.props.inverseSurface;\n }\n get inverseOnSurface() {\n return this.props.inverseOnSurface;\n }\n get inversePrimary() {\n return this.props.inversePrimary;\n }\n static light(argb) {\n return Scheme.lightFromCorePalette(CorePalette.of(argb));\n }\n static dark(argb) {\n return Scheme.darkFromCorePalette(CorePalette.of(argb));\n }\n static lightContent(argb) {\n return Scheme.lightFromCorePalette(CorePalette.contentOf(argb));\n }\n static darkContent(argb) {\n return Scheme.darkFromCorePalette(CorePalette.contentOf(argb));\n }\n static lightFromCorePalette(core) {\n return new Scheme({\n primary: core.a1.tone(40),\n onPrimary: core.a1.tone(100),\n primaryContainer: core.a1.tone(90),\n onPrimaryContainer: core.a1.tone(10),\n secondary: core.a2.tone(40),\n onSecondary: core.a2.tone(100),\n secondaryContainer: core.a2.tone(90),\n onSecondaryContainer: core.a2.tone(10),\n tertiary: core.a3.tone(40),\n onTertiary: core.a3.tone(100),\n tertiaryContainer: core.a3.tone(90),\n onTertiaryContainer: core.a3.tone(10),\n error: core.error.tone(40),\n onError: core.error.tone(100),\n errorContainer: core.error.tone(90),\n onErrorContainer: core.error.tone(10),\n background: core.n1.tone(99),\n onBackground: core.n1.tone(10),\n surface: core.n1.tone(99),\n onSurface: core.n1.tone(10),\n surfaceVariant: core.n2.tone(90),\n onSurfaceVariant: core.n2.tone(30),\n outline: core.n2.tone(50),\n outlineVariant: core.n2.tone(80),\n shadow: core.n1.tone(0),\n scrim: core.n1.tone(0),\n inverseSurface: core.n1.tone(20),\n inverseOnSurface: core.n1.tone(95),\n inversePrimary: core.a1.tone(80)\n });\n }\n static darkFromCorePalette(core) {\n return new Scheme({\n primary: core.a1.tone(80),\n onPrimary: core.a1.tone(20),\n primaryContainer: core.a1.tone(30),\n onPrimaryContainer: core.a1.tone(90),\n secondary: core.a2.tone(80),\n onSecondary: core.a2.tone(20),\n secondaryContainer: core.a2.tone(30),\n onSecondaryContainer: core.a2.tone(90),\n tertiary: core.a3.tone(80),\n onTertiary: core.a3.tone(20),\n tertiaryContainer: core.a3.tone(30),\n onTertiaryContainer: core.a3.tone(90),\n error: core.error.tone(80),\n onError: core.error.tone(20),\n errorContainer: core.error.tone(30),\n onErrorContainer: core.error.tone(80),\n background: core.n1.tone(10),\n onBackground: core.n1.tone(90),\n surface: core.n1.tone(10),\n onSurface: core.n1.tone(90),\n surfaceVariant: core.n2.tone(30),\n onSurfaceVariant: core.n2.tone(80),\n outline: core.n2.tone(60),\n outlineVariant: core.n2.tone(30),\n shadow: core.n1.tone(0),\n scrim: core.n1.tone(0),\n inverseSurface: core.n1.tone(90),\n inverseOnSurface: core.n1.tone(20),\n inversePrimary: core.a1.tone(40)\n });\n }\n constructor(props) {\n this.props = props;\n }\n toJSON() {\n return {\n ...this.props\n };\n }\n}\nfunction hexFromArgb(argb) {\n const r = redFromArgb(argb),\n g = greenFromArgb(argb),\n b = blueFromArgb(argb),\n outParts = [r.toString(16), g.toString(16), b.toString(16)];\n for (const [i, part] of outParts.entries()) 1 === part.length && (outParts[i] = \"0\" + part);\n return \"#\" + outParts.join(\"\");\n}\nfunction argbFromHex(hex) {\n const isThree = 3 === (hex = hex.replace(\"#\", \"\")).length,\n isSix = 6 === hex.length,\n isEight = 8 === hex.length;\n if (!isThree && !isSix && !isEight) throw new Error(\"unexpected hex \" + hex);\n let r = 0,\n g = 0,\n b = 0;\n return isThree ? (r = parseIntHex(hex.slice(0, 1).repeat(2)), g = parseIntHex(hex.slice(1, 2).repeat(2)), b = parseIntHex(hex.slice(2, 3).repeat(2))) : isSix ? (r = parseIntHex(hex.slice(0, 2)), g = parseIntHex(hex.slice(2, 4)), b = parseIntHex(hex.slice(4, 6))) : isEight && (r = parseIntHex(hex.slice(2, 4)), g = parseIntHex(hex.slice(4, 6)), b = parseIntHex(hex.slice(6, 8))), (255 << 24 | (255 & r) << 16 | (255 & g) << 8 | 255 & b) >>> 0;\n}\nfunction parseIntHex(value) {\n return parseInt(value, 16);\n}\nfunction themeFromSourceColor(source, customColors) {\n if (customColors === void 0) {\n customColors = [];\n }\n const palette = CorePalette.of(source);\n return {\n source: source,\n schemes: {\n light: Scheme.light(source),\n dark: Scheme.dark(source)\n },\n palettes: {\n primary: palette.a1,\n secondary: palette.a2,\n tertiary: palette.a3,\n neutral: palette.n1,\n neutralVariant: palette.n2,\n error: palette.error\n },\n customColors: customColors.map(c => customColor(source, c))\n };\n}\nfunction customColor(source, color) {\n let value = color.value;\n const from = value,\n to = source;\n color.blend && (value = Blend.harmonize(from, to));\n const tones = CorePalette.of(value).a1;\n return {\n color: color,\n value: value,\n light: {\n color: tones.tone(40),\n onColor: tones.tone(100),\n colorContainer: tones.tone(90),\n onColorContainer: tones.tone(10)\n },\n dark: {\n color: tones.tone(80),\n onColor: tones.tone(20),\n colorContainer: tones.tone(30),\n onColorContainer: tones.tone(90)\n }\n };\n}\nexport { argbFromHex, hexFromArgb, themeFromSourceColor };","// eslint-disable-next-line\nimport { argbFromHex, hexFromArgb, themeFromSourceColor } from './material-color-utils.js';\n\n/* eslint-disable */\n// prettier-ignore\nfunction toRGBA(d) {\n const r = Math.round;\n const l = d.length;\n const rgba = {};\n if (d.slice(0, 3).toLowerCase() === 'rgb') {\n d = d.replace(' ', '').split(',');\n rgba[0] = parseInt(d[0].slice(d[3].toLowerCase() === 'a' ? 5 : 4), 10);\n rgba[1] = parseInt(d[1], 10);\n rgba[2] = parseInt(d[2], 10);\n rgba[3] = d[3] ? parseFloat(d[3]) : -1;\n } else {\n if (l < 6) d = parseInt(String(d[1]) + d[1] + d[2] + d[2] + d[3] + d[3] + (l > 4 ? String(d[4]) + d[4] : ''), 16);else d = parseInt(d.slice(1), 16);\n rgba[0] = d >> 16 & 255;\n rgba[1] = d >> 8 & 255;\n rgba[2] = d & 255;\n rgba[3] = l === 9 || l === 5 ? r((d >> 24 & 255) / 255 * 10000) / 10000 : -1;\n }\n return rgba;\n}\n\n// prettier-ignore\nfunction blend(from, to, p) {\n if (p === void 0) {\n p = 0.5;\n }\n const r = Math.round;\n from = from.trim();\n to = to.trim();\n const b = p < 0;\n p = b ? p * -1 : p;\n const f = toRGBA(from);\n const t = toRGBA(to);\n if (to[0] === 'r') {\n return 'rgb' + (to[3] === 'a' ? 'a(' : '(') + r((t[0] - f[0]) * p + f[0]) + ',' + r((t[1] - f[1]) * p + f[1]) + ',' + r((t[2] - f[2]) * p + f[2]) + (f[3] < 0 && t[3] < 0 ? '' : ',' + (f[3] > -1 && t[3] > -1 ? r(((t[3] - f[3]) * p + f[3]) * 10000) / 10000 : t[3] < 0 ? f[3] : t[3])) + ')';\n }\n return '#' + (0x100000000 + (f[3] > -1 && t[3] > -1 ? r(((t[3] - f[3]) * p + f[3]) * 255) : t[3] > -1 ? r(t[3] * 255) : f[3] > -1 ? r(f[3] * 255) : 255) * 0x1000000 + r((t[0] - f[0]) * p + f[0]) * 0x10000 + r((t[1] - f[1]) * p + f[1]) * 0x100 + r((t[2] - f[2]) * p + f[2])).toString(16).slice(f[3] > -1 || t[3] > -1 ? 1 : 3);\n}\n/* eslint-enable */\n\nexport const materialColors = function (hexColor) {\n if (hexColor === void 0) {\n hexColor = '';\n }\n const theme = themeFromSourceColor(argbFromHex(`#${hexColor.replace('#', '')}`));\n [0.05, 0.08, 0.11, 0.12, 0.14].forEach((amount, index) => {\n theme.schemes.light.props[`surface${index + 1}`] = argbFromHex(blend(hexFromArgb(theme.schemes.light.props.surface), hexFromArgb(theme.schemes.light.props.primary), amount));\n theme.schemes.dark.props[`surface${index + 1}`] = argbFromHex(blend(hexFromArgb(theme.schemes.dark.props.surface), hexFromArgb(theme.schemes.dark.props.primary), amount));\n });\n const name = n => {\n return n.split('').map(char => char.toUpperCase() === char && char !== '-' && char !== '7' ? `-${char.toLowerCase()}` : char).join('');\n };\n const shouldSkip = prop => {\n const skip = ['tertiary', 'shadow', 'scrim', 'error', 'background'];\n return skip.filter(v => prop.toLowerCase().includes(v)).length > 0;\n };\n const light = {};\n const dark = {};\n Object.keys(theme.schemes.light.props).forEach(prop => {\n if (shouldSkip(prop)) return;\n light[name(`--f7-md-${prop}`)] = hexFromArgb(theme.schemes.light.props[prop]);\n });\n Object.keys(theme.schemes.dark.props).forEach(prop => {\n if (shouldSkip(prop)) return;\n dark[name(`--f7-md-${prop}`)] = hexFromArgb(theme.schemes.dark.props[prop]);\n });\n return {\n light,\n dark\n };\n};","import { getWindow } from 'ssr-window';\nimport { materialColors } from './material-colors.js';\nlet uniqueNum = 0;\nexport function uniqueNumber() {\n uniqueNum += 1;\n return uniqueNum;\n}\nexport function id(mask, map) {\n if (mask === void 0) {\n mask = 'xxxxxxxxxx';\n }\n if (map === void 0) {\n map = '0123456789abcdef';\n }\n const length = map.length;\n return mask.replace(/x/g, () => map[Math.floor(Math.random() * length)]);\n}\nexport const mdPreloaderContent = `\n \n \n \n \n \n`.trim();\nexport const iosPreloaderContent = `\n \n ${[0, 1, 2, 3, 4, 5, 6, 7].map(() => '').join('')}\n \n`.trim();\nexport function eventNameToColonCase(eventName) {\n let hasColon;\n return eventName.split('').map((char, index) => {\n if (char.match(/[A-Z]/) && index !== 0 && !hasColon) {\n hasColon = true;\n return `:${char.toLowerCase()}`;\n }\n return char.toLowerCase();\n }).join('');\n}\nexport function deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no setter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nexport function requestAnimationFrame(callback) {\n const window = getWindow();\n return window.requestAnimationFrame(callback);\n}\nexport function cancelAnimationFrame(frameId) {\n const window = getWindow();\n return window.cancelAnimationFrame(frameId);\n}\nexport function nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nexport function nextFrame(callback) {\n return requestAnimationFrame(() => {\n requestAnimationFrame(callback);\n });\n}\nexport function now() {\n return Date.now();\n}\nexport function parseUrlQuery(url) {\n const window = getWindow();\n const query = {};\n let urlToParse = url || window.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter(paramsPart => paramsPart !== '');\n length = params.length;\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param.slice(1).join('=')) || '';\n }\n }\n return query;\n}\nexport function getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = window.getComputedStyle(el, null);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nexport function serializeObject(obj, parents) {\n if (parents === void 0) {\n parents = [];\n }\n if (typeof obj === 'string') return obj;\n const resultArray = [];\n const separator = '&';\n let newParents;\n function varName(name) {\n if (parents.length > 0) {\n let parentParts = '';\n for (let j = 0; j < parents.length; j += 1) {\n if (j === 0) parentParts += parents[j];else parentParts += `[${encodeURIComponent(parents[j])}]`;\n }\n return `${parentParts}[${encodeURIComponent(name)}]`;\n }\n return encodeURIComponent(name);\n }\n function varValue(value) {\n return encodeURIComponent(value);\n }\n Object.keys(obj).forEach(prop => {\n let toPush;\n if (Array.isArray(obj[prop])) {\n toPush = [];\n for (let i = 0; i < obj[prop].length; i += 1) {\n if (!Array.isArray(obj[prop][i]) && typeof obj[prop][i] === 'object') {\n newParents = parents.slice();\n newParents.push(prop);\n newParents.push(String(i));\n toPush.push(serializeObject(obj[prop][i], newParents));\n } else {\n toPush.push(`${varName(prop)}[]=${varValue(obj[prop][i])}`);\n }\n }\n if (toPush.length > 0) resultArray.push(toPush.join(separator));\n } else if (obj[prop] === null || obj[prop] === '') {\n resultArray.push(`${varName(prop)}=`);\n } else if (typeof obj[prop] === 'object') {\n // Object, convert to named array\n newParents = parents.slice();\n newParents.push(prop);\n toPush = serializeObject(obj[prop], newParents);\n if (toPush !== '') resultArray.push(toPush);\n } else if (typeof obj[prop] !== 'undefined' && obj[prop] !== '') {\n // Should be string or plain value\n resultArray.push(`${varName(prop)}=${varValue(obj[prop])}`);\n } else if (obj[prop] === '') resultArray.push(varName(prop)); // eslint-disable-line\n });\n\n return resultArray.join(separator);\n}\nexport function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n}\nexport function merge() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n const to = args[0];\n args.splice(0, 1);\n const from = args;\n for (let i = 0; i < from.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n}\nexport function extend() {\n let deep = true;\n let to;\n let from;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'boolean') {\n deep = args[0];\n to = args[1];\n args.splice(0, 2);\n from = args;\n } else {\n to = args[0];\n args.splice(0, 1);\n from = args;\n }\n for (let i = 0; i < from.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (!deep) {\n to[nextKey] = nextSource[nextKey];\n } else if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n extend(to[nextKey], nextSource[nextKey]);\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nexport function colorHexToRgb(hex) {\n const h = hex.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i, (m, r, g, b) => r + r + g + g + b + b);\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(h);\n return result ? result.slice(1).map(n => parseInt(n, 16)) : null;\n}\nexport function colorRgbToHex(r, g, b) {\n const result = [r, g, b].map(n => {\n const hex = n.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n }).join('');\n return `#${result}`;\n}\nexport function colorRgbToHsl(r, g, b) {\n r /= 255; // eslint-disable-line\n g /= 255; // eslint-disable-line\n b /= 255; // eslint-disable-line\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const d = max - min;\n let h;\n if (d === 0) h = 0;else if (max === r) h = (g - b) / d % 6;else if (max === g) h = (b - r) / d + 2;else if (max === b) h = (r - g) / d + 4;\n const l = (min + max) / 2;\n const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));\n if (h < 0) h = 360 / 60 + h;\n return [h * 60, s, l];\n}\nexport function colorHslToRgb(h, s, l) {\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const hp = h / 60;\n const x = c * (1 - Math.abs(hp % 2 - 1));\n let rgb1;\n if (Number.isNaN(h) || typeof h === 'undefined') {\n rgb1 = [0, 0, 0];\n } else if (hp <= 1) rgb1 = [c, x, 0];else if (hp <= 2) rgb1 = [x, c, 0];else if (hp <= 3) rgb1 = [0, c, x];else if (hp <= 4) rgb1 = [0, x, c];else if (hp <= 5) rgb1 = [x, 0, c];else if (hp <= 6) rgb1 = [c, 0, x];\n const m = l - c / 2;\n return rgb1.map(n => Math.max(0, Math.min(255, Math.round(255 * (n + m)))));\n}\nexport function colorHsbToHsl(h, s, b) {\n const HSL = {\n h,\n s: 0,\n l: 0\n };\n const HSB = {\n h,\n s,\n b\n };\n HSL.l = (2 - HSB.s) * HSB.b / 2;\n HSL.s = HSL.l && HSL.l < 1 ? HSB.s * HSB.b / (HSL.l < 0.5 ? HSL.l * 2 : 2 - HSL.l * 2) : HSL.s;\n return [HSL.h, HSL.s, HSL.l];\n}\nexport function colorHslToHsb(h, s, l) {\n const HSB = {\n h,\n s: 0,\n b: 0\n };\n const HSL = {\n h,\n s,\n l\n };\n const t = HSL.s * (HSL.l < 0.5 ? HSL.l : 1 - HSL.l);\n HSB.b = HSL.l + t;\n HSB.s = HSL.l > 0 ? 2 * t / HSB.b : HSB.s;\n return [HSB.h, HSB.s, HSB.b];\n}\nconst getShadeTintColors = rgb => {\n const hsl = colorRgbToHsl(...rgb);\n const hslShade = [hsl[0], hsl[1], Math.max(0, hsl[2] - 0.08)];\n const hslTint = [hsl[0], hsl[1], Math.max(0, hsl[2] + 0.08)];\n const shade = colorRgbToHex(...colorHslToRgb(...hslShade));\n const tint = colorRgbToHex(...colorHslToRgb(...hslTint));\n return {\n shade,\n tint\n };\n};\nexport function colorThemeCSSProperties() {\n let hex;\n let rgb;\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n if (args.length === 1) {\n hex = args[0];\n rgb = colorHexToRgb(hex);\n } else if (args.length === 3) {\n rgb = args;\n hex = colorRgbToHex(...rgb);\n }\n if (!rgb) return {};\n const {\n light,\n dark\n } = materialColors(hex);\n const shadeTintIos = getShadeTintColors(rgb);\n const shadeTintMdLight = getShadeTintColors(colorHexToRgb(light['--f7-md-primary']));\n const shadeTintMdDark = getShadeTintColors(colorHexToRgb(dark['--f7-md-primary']));\n Object.keys(light).forEach(key => {\n if (key.includes('surface-')) {\n light[`${key}-rgb`] = colorHexToRgb(light[key]);\n }\n });\n Object.keys(dark).forEach(key => {\n if (key.includes('surface-')) {\n dark[`${key}-rgb`] = colorHexToRgb(dark[key]);\n }\n });\n return {\n ios: {\n '--f7-theme-color': 'var(--f7-ios-primary)',\n '--f7-theme-color-rgb': 'var(--f7-ios-primary-rgb)',\n '--f7-theme-color-shade': 'var(--f7-ios-primary-shade)',\n '--f7-theme-color-tint': 'var(--f7-ios-primary-tint)'\n },\n md: {\n '--f7-theme-color': 'var(--f7-md-primary)',\n '--f7-theme-color-rgb': 'var(--f7-md-primary-rgb)',\n '--f7-theme-color-shade': 'var(--f7-md-primary-shade)',\n '--f7-theme-color-tint': 'var(--f7-md-primary-tint)'\n },\n light: {\n '--f7-ios-primary': hex,\n '--f7-ios-primary-shade': shadeTintIos.shade,\n '--f7-ios-primary-tint': shadeTintIos.tint,\n '--f7-ios-primary-rgb': rgb.join(', '),\n '--f7-md-primary-shade': shadeTintMdLight.shade,\n '--f7-md-primary-tint': shadeTintMdLight.tint,\n '--f7-md-primary-rgb': colorHexToRgb(light['--f7-md-primary']).join(', '),\n ...light\n },\n dark: {\n '--f7-md-primary-shade': shadeTintMdDark.shade,\n '--f7-md-primary-tint': shadeTintMdDark.tint,\n '--f7-md-primary-rgb': colorHexToRgb(dark['--f7-md-primary']).join(', '),\n ...dark\n }\n };\n}\nexport function bindMethods(instance, obj) {\n Object.keys(obj).forEach(key => {\n if (isObject(obj[key])) {\n Object.keys(obj[key]).forEach(subKey => {\n if (typeof obj[key][subKey] === 'function') {\n obj[key][subKey] = obj[key][subKey].bind(instance);\n }\n });\n }\n instance[key] = obj[key];\n });\n}\nexport function flattenArray() {\n const arr = [];\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n args.forEach(arg => {\n if (Array.isArray(arg)) arr.push(...flattenArray(...arg));else arr.push(arg);\n });\n return arr;\n}\nexport function colorThemeCSSStyles(colors) {\n if (colors === void 0) {\n colors = {};\n }\n const stringifyObject = obj => {\n let res = '';\n Object.keys(obj).forEach(key => {\n res += `${key}:${obj[key]};`;\n });\n return res;\n };\n const colorVars = colorThemeCSSProperties(colors.primary);\n const primary = [`:root{`, stringifyObject(colorVars.light), `--swiper-theme-color:var(--f7-theme-color);`, ...Object.keys(colors).map(colorName => `--f7-color-${colorName}: ${colors[colorName]};`), `}`, `.dark{`, stringifyObject(colorVars.dark), `}`, `.ios, .ios .dark{`, stringifyObject(colorVars.ios), '}', `.md, .md .dark{`, stringifyObject(colorVars.md), '}'].join('');\n const restVars = {};\n Object.keys(colors).forEach(colorName => {\n const colorValue = colors[colorName];\n restVars[colorName] = colorThemeCSSProperties(colorValue);\n });\n\n // rest\n let rest = '';\n Object.keys(colors).forEach(colorName => {\n const {\n light,\n dark,\n ios,\n md\n } = restVars[colorName];\n const whiteColorVars = `\n --f7-ios-primary: #ffffff;\n --f7-ios-primary-shade: #ebebeb;\n --f7-ios-primary-tint: #ffffff;\n --f7-ios-primary-rgb: 255, 255, 255;\n --f7-md-primary-shade: #eee;\n --f7-md-primary-tint: #fff;\n --f7-md-primary-rgb: 255, 255, 255;\n --f7-md-primary: #fff;\n --f7-md-on-primary: #000;\n --f7-md-primary-container: #fff;\n --f7-md-on-primary-container: #000;\n --f7-md-secondary: #fff;\n --f7-md-on-secondary: #000;\n --f7-md-secondary-container: #555;\n --f7-md-on-secondary-container: #fff;\n --f7-md-surface: #fff;\n --f7-md-on-surface: #000;\n --f7-md-surface-variant: #333;\n --f7-md-on-surface-variant: #fff;\n --f7-md-outline: #fff;\n --f7-md-outline-variant: #fff;\n --f7-md-inverse-surface: #000;\n --f7-md-inverse-on-surface: #fff;\n --f7-md-inverse-primary: #000;\n --f7-md-surface-1: #f8f8f8;\n --f7-md-surface-2: #f1f1f1;\n --f7-md-surface-3: #e7e7e7;\n --f7-md-surface-4: #e1e1e1;\n --f7-md-surface-5: #d7d7d7;\n --f7-md-surface-variant-rgb: 51, 51, 51;\n --f7-md-on-surface-variant-rgb: 255, 255, 255;\n --f7-md-surface-1-rgb: 248, 248, 248;\n --f7-md-surface-2-rgb: 241, 241, 241;\n --f7-md-surface-3-rgb: 231, 231, 231;\n --f7-md-surface-4-rgb: 225, 225, 225;\n --f7-md-surface-5-rgb: 215, 215, 215;\n `;\n const blackColorVars = `\n --f7-ios-primary: #000;\n --f7-ios-primary-shade: #000;\n --f7-ios-primary-tint: #232323;\n --f7-ios-primary-rgb: 0, 0, 0;\n --f7-md-primary-shade: #000;\n --f7-md-primary-tint: #232323;\n --f7-md-primary-rgb: 0, 0, 0;\n --f7-md-primary: #000;\n --f7-md-on-primary: #fff;\n --f7-md-primary-container: #000;\n --f7-md-on-primary-container: #fff;\n --f7-md-secondary: #000;\n --f7-md-on-secondary: #fff;\n --f7-md-secondary-container: #aaa;\n --f7-md-on-secondary-container: #000;\n --f7-md-surface: #000;\n --f7-md-on-surface: #fff;\n --f7-md-surface-variant: #ccc;\n --f7-md-on-surface-variant: #000;\n --f7-md-outline: #000;\n --f7-md-outline-variant: #000;\n --f7-md-inverse-surface: #fff;\n --f7-md-inverse-on-surface: #000;\n --f7-md-inverse-primary: #fff;\n --f7-md-surface-1: #070707;\n --f7-md-surface-2: #161616;\n --f7-md-surface-3: #232323;\n --f7-md-surface-4: #303030;\n --f7-md-surface-5: #373737;\n --f7-md-surface-variant-rgb: 204, 204, 204;\n --f7-md-on-surface-variant-rgb: 0, 0, 0;\n --f7-md-surface-1-rgb: 7, 7, 7;\n --f7-md-surface-2-rgb: 22, 22, 22;\n --f7-md-surface-3-rgb: 35, 35, 35;\n --f7-md-surface-4-rgb: 48, 48, 48;\n --f7-md-surface-5-rgb: 55, 55, 55;\n `;\n /* eslint-disable */\n const lightString = colorName === 'white' ? whiteColorVars : colorName === 'black' ? blackColorVars : stringifyObject(light);\n const darkString = colorName === 'white' ? whiteColorVars : colorName === 'black' ? blackColorVars : stringifyObject(dark);\n /* eslint-enable */\n rest += [`.color-${colorName} {`, lightString, `--swiper-theme-color: var(--f7-theme-color);`, `}`, `.color-${colorName}.dark, .color-${colorName} .dark, .dark .color-${colorName} {`, darkString, `--swiper-theme-color: var(--f7-theme-color);`, `}`, `.ios .color-${colorName}, .ios.color-${colorName}, .ios .dark .color-${colorName}, .ios .dark.color-${colorName} {`, stringifyObject(ios), `}`, `.md .color-${colorName}, .md.color-${colorName}, .md .dark .color-${colorName}, .md .dark.color-${colorName} {`, stringifyObject(md), `}`,\n // text color\n `.text-color-${colorName} {`, `--f7-theme-color-text-color: ${colors[colorName]};`, `}`,\n // bg color\n `.bg-color-${colorName} {`, `--f7-theme-color-bg-color: ${colors[colorName]};`, `}`,\n // border color\n `.border-color-${colorName} {`, `--f7-theme-color-border-color: ${colors[colorName]};`, `}`,\n // ripple color\n `.ripple-color-${colorName} {`, `--f7-theme-color-ripple-color: rgba(${light['--f7-ios-primary-rgb']}, 0.3);`, `}`].join('');\n });\n return `${primary}${rest}`;\n}","import { getWindow, getDocument } from 'ssr-window';\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n pointerEvents: !!window.PointerEvent && 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints >= 0,\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }(),\n intersectionObserver: function checkObserver() {\n return 'IntersectionObserver' in window;\n }()\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCalculated;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!window.cordova,\n electron: false,\n capacitor: !!window.Capacitor,\n nwjs: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS|iPhone;\\sCPU\\sOS)\\s([\\d_]+)/);\n const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n const nwjs = typeof nw !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && typeof process.versions.nw !== 'undefined';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone)) || window.matchMedia && window.matchMedia('(display-mode: standalone)').matches;\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron || nwjs;\n if (device.desktop) {\n device.electron = electron;\n device.nwjs = nwjs;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Color Scheme\n const DARK = '(prefers-color-scheme: dark)';\n const LIGHT = '(prefers-color-scheme: light)';\n device.prefersColorScheme = function prefersColorTheme() {\n let theme;\n if (window.matchMedia && window.matchMedia(LIGHT).matches) {\n theme = 'light';\n }\n if (window.matchMedia && window.matchMedia(DARK).matches) {\n theme = 'dark';\n }\n return theme;\n };\n\n // Export object\n return device;\n}\nfunction getDevice(overrides, reset) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCalculated || reset) {\n deviceCalculated = calcDevice(overrides);\n }\n return deviceCalculated;\n}\nexport { getDevice };","class EventsClass {\n constructor(parents) {\n if (parents === void 0) {\n parents = [];\n }\n const self = this;\n self.eventsParents = parents;\n self.eventsListeners = {};\n }\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n }\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n }\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.f7proxy && eventHandler.f7proxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n }\n emit() {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n let eventsParents;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n eventsParents = self.eventsParents;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n eventsParents = args[0].local ? [] : args[0].parents || self.eventsParents;\n }\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n const localEvents = eventsArray.map(eventName => eventName.replace('local::', ''));\n const parentEvents = eventsArray.filter(eventName => eventName.indexOf('local::') < 0);\n localEvents.forEach(event => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach(eventHandler => {\n handlers.push(eventHandler);\n });\n handlers.forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n if (eventsParents && eventsParents.length > 0) {\n eventsParents.forEach(eventsParent => {\n eventsParent.emit(parentEvents, ...data);\n });\n }\n return self;\n }\n}\nexport default EventsClass;","import { extend, now } from './utils.js';\nimport EventsClass from './events-class.js';\nclass Framework7Class extends EventsClass {\n constructor(params, parents) {\n if (params === void 0) {\n params = {};\n }\n if (parents === void 0) {\n parents = [];\n }\n super(parents);\n const self = this;\n self.params = params;\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach(eventName => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n // eslint-disable-next-line\n useModuleParams(module, instanceParams) {\n if (module.params) {\n const originalParams = {};\n Object.keys(module.params).forEach(paramKey => {\n if (typeof instanceParams[paramKey] === 'undefined') return;\n originalParams[paramKey] = extend({}, instanceParams[paramKey]);\n });\n extend(instanceParams, module.params);\n Object.keys(originalParams).forEach(paramKey => {\n extend(instanceParams[paramKey], originalParams[paramKey]);\n });\n }\n }\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach(moduleName => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n extend(instanceParams, module.params);\n }\n });\n }\n useModule(moduleName, moduleParams) {\n if (moduleName === void 0) {\n moduleName = '';\n }\n if (moduleParams === void 0) {\n moduleParams = {};\n }\n const instance = this;\n if (!instance.modules) return;\n const module = typeof moduleName === 'string' ? instance.modules[moduleName] : moduleName;\n if (!module) return;\n\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach(modulePropName => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach(moduleEventName => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n // Add vnode hooks\n if (module.vnode) {\n if (!instance.vnodeHooks) instance.vnodeHooks = {};\n Object.keys(module.vnode).forEach(vnodeId => {\n Object.keys(module.vnode[vnodeId]).forEach(hookName => {\n const handler = module.vnode[vnodeId][hookName];\n if (!instance.vnodeHooks[hookName]) instance.vnodeHooks[hookName] = {};\n if (!instance.vnodeHooks[hookName][vnodeId]) instance.vnodeHooks[hookName][vnodeId] = [];\n instance.vnodeHooks[hookName][vnodeId].push(handler.bind(instance));\n });\n });\n }\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n }\n useModules(modulesParams) {\n if (modulesParams === void 0) {\n modulesParams = {};\n }\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach(moduleName => {\n const moduleParams = modulesParams[moduleName] || {};\n instance.useModule(moduleName, moduleParams);\n });\n }\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n static installModule(module) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || `${Object.keys(Class.prototype.modules).length}_${now()}`;\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach(key => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach(key => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n module.install.apply(Class, params);\n }\n return Class;\n }\n static use(module) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach(m => Class.installModule(m));\n return Class;\n }\n for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n params[_key2 - 1] = arguments[_key2];\n }\n return Class.installModule(module, ...params);\n }\n}\nexport default Framework7Class;","import $ from './dom7.js';\nexport default function ConstructorMethods(parameters) {\n if (parameters === void 0) {\n parameters = {};\n }\n const {\n defaultSelector,\n constructor: Constructor,\n domProp,\n app,\n addMethods\n } = parameters;\n const methods = {\n create() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (app) return new Constructor(app, ...args);\n return new Constructor(...args);\n },\n get(el) {\n if (el === void 0) {\n el = defaultSelector;\n }\n if (el instanceof Constructor) return el;\n const $el = $(el);\n if ($el.length === 0) return undefined;\n return $el[0][domProp];\n },\n destroy(el) {\n const instance = methods.get(el);\n if (instance && instance.destroy) return instance.destroy();\n return undefined;\n }\n };\n if (addMethods && Array.isArray(addMethods)) {\n addMethods.forEach(methodName => {\n methods[methodName] = function (el) {\n if (el === void 0) {\n el = defaultSelector;\n }\n const instance = methods.get(el);\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n if (instance && instance[methodName]) return instance[methodName](...args);\n return undefined;\n };\n });\n }\n return methods;\n}","import $ from './dom7.js';\nimport { extend } from './utils.js';\nimport ConstructorMethods from './constructor-methods.js';\nexport default function ModalMethods(parameters) {\n if (parameters === void 0) {\n parameters = {};\n }\n const {\n defaultSelector,\n constructor: Constructor,\n app\n } = parameters;\n const methods = extend(ConstructorMethods({\n defaultSelector,\n constructor: Constructor,\n app,\n domProp: 'f7Modal'\n }), {\n open(el, animate, targetEl) {\n let $el = $(el);\n if ($el.length > 1 && targetEl) {\n // check if same modal in other page\n const $targetPage = $(targetEl).parents('.page');\n if ($targetPage.length) {\n $el.each(modalEl => {\n const $modalEl = $(modalEl);\n if ($modalEl.parents($targetPage)[0] === $targetPage[0]) {\n $el = $modalEl;\n }\n });\n }\n }\n if ($el.length > 1) {\n $el = $el.eq($el.length - 1);\n }\n if (!$el.length) return undefined;\n let instance = $el[0].f7Modal;\n if (!instance) {\n const params = $el.dataset();\n instance = new Constructor(app, {\n el: $el,\n ...params\n });\n }\n return instance.open(animate);\n },\n close(el, animate, targetEl) {\n if (el === void 0) {\n el = defaultSelector;\n }\n let $el = $(el);\n if (!$el.length) return undefined;\n if ($el.length > 1) {\n // check if close link (targetEl) in this modal\n let $parentEl;\n if (targetEl) {\n const $targetEl = $(targetEl);\n if ($targetEl.length) {\n $parentEl = $targetEl.parents($el);\n }\n }\n if ($parentEl && $parentEl.length > 0) {\n $el = $parentEl;\n } else {\n $el = $el.eq($el.length - 1);\n }\n }\n let instance = $el[0].f7Modal;\n if (!instance) {\n const params = $el.dataset();\n instance = new Constructor(app, {\n el: $el,\n ...params\n });\n }\n return instance.close(animate);\n }\n });\n return methods;\n}","import { getWindow, getDocument } from 'ssr-window';\nimport { id } from '../../shared/utils.js';\nimport $ from '../../shared/dom7.js';\nconst fetchedModules = [];\nfunction loadModule(moduleToLoad) {\n const Framework7 = this;\n const window = getWindow();\n const document = getDocument();\n return new Promise((resolve, reject) => {\n const app = Framework7.instance;\n let modulePath;\n let moduleObj;\n let moduleFunc;\n if (!moduleToLoad) {\n reject(new Error('Framework7: Lazy module must be specified'));\n return;\n }\n function install(module) {\n Framework7.use(module);\n if (app) {\n app.useModuleParams(module, app.params);\n app.useModule(module);\n }\n }\n if (typeof moduleToLoad === 'string') {\n const matchNamePattern = moduleToLoad.match(/([a-z0-9-]*)/i);\n if (moduleToLoad.indexOf('.') < 0 && matchNamePattern && matchNamePattern[0].length === moduleToLoad.length) {\n if (!app || app && !app.params.lazyModulesPath) {\n reject(new Error('Framework7: \"lazyModulesPath\" app parameter must be specified to fetch module by name'));\n return;\n }\n modulePath = `${app.params.lazyModulesPath}/${moduleToLoad}/${moduleToLoad}.lazy.js`;\n } else {\n modulePath = moduleToLoad;\n }\n } else if (typeof moduleToLoad === 'function') {\n moduleFunc = moduleToLoad;\n } else {\n // considering F7-Plugin object\n moduleObj = moduleToLoad;\n }\n if (moduleFunc) {\n const module = moduleFunc(Framework7, false);\n if (!module) {\n reject(new Error(\"Framework7: Can't find Framework7 component in specified component function\"));\n return;\n }\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolve();\n return;\n }\n // Install It\n install(module);\n resolve();\n }\n if (moduleObj) {\n const module = moduleObj;\n if (!module) {\n reject(new Error(\"Framework7: Can't find Framework7 component in specified component\"));\n return;\n }\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolve();\n return;\n }\n // Install It\n install(module);\n resolve();\n }\n if (modulePath) {\n if (fetchedModules.indexOf(modulePath) >= 0) {\n resolve();\n return;\n }\n fetchedModules.push(modulePath);\n const scriptLoad = new Promise((resolveScript, rejectScript) => {\n fetch(modulePath).then(res => res.text()).then(scriptContent => {\n const callbackId = id();\n const callbackLoadName = `f7_component_loader_callback_${callbackId}`;\n const scriptEl = document.createElement('script');\n scriptEl.innerHTML = `window.${callbackLoadName} = function (Framework7, Framework7AutoInstallComponent) {return ${scriptContent.trim()}}`;\n $('head').append(scriptEl);\n const componentLoader = window[callbackLoadName];\n delete window[callbackLoadName];\n $(scriptEl).remove();\n const module = componentLoader(Framework7, false);\n if (!module) {\n rejectScript(new Error(`Framework7: Can't find Framework7 component in ${modulePath} file`));\n return;\n }\n\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolveScript();\n return;\n }\n\n // Install It\n install(module);\n resolveScript();\n }).catch(err => {\n rejectScript(err);\n });\n });\n const styleLoad = new Promise(resolveStyle => {\n fetch(modulePath.replace('.lazy.js', app.rtl ? '.rtl.css' : '.css').replace('.js', app.rtl ? '.rtl.css' : '.css')).then(res => res.text()).then(styleContent => {\n const styleEl = document.createElement('style');\n styleEl.innerHTML = styleContent;\n $('head').append(styleEl);\n resolveStyle();\n }).catch(() => {\n resolveStyle();\n });\n });\n Promise.all([scriptLoad, styleLoad]).then(() => {\n resolve();\n }).catch(err => {\n reject(err);\n });\n }\n });\n}\nexport default loadModule;","/* eslint-disable prefer-rest-params */\nconst $jsx = function (tag, props) {\n const attrs = props || {};\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n const children = args || [];\n const attrsString = Object.keys(attrs).map(attr => {\n if (attr[0] === '_') {\n if (attrs[attr]) return attr.replace('_', '');\n return '';\n }\n return `${attr}=\"${attrs[attr]}\"`;\n }).filter(attr => !!attr).join(' ');\n if (['path', 'img', 'circle', 'polygon', 'line', 'input'].indexOf(tag) >= 0) {\n return `<${tag} ${attrsString} />`.trim();\n }\n const childrenContent = children.filter(c => !!c).map(c => Array.isArray(c) ? c.join('') : c).join('');\n return `<${tag} ${attrsString}>${childrenContent}`.trim();\n};\nexport default $jsx;","/* eslint-disable no-underscore-dangle */\n\nimport { getWindow, getDocument } from 'ssr-window';\nimport { extend, nextFrame } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport Framework7Class from '../../shared/class.js';\nimport EventsClass from '../../shared/events-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nimport $ from '../../shared/dom7.js';\nimport loadModule from './load-module.js';\nimport $jsx from '../../shared/$jsx.js';\nclass Framework7 extends Framework7Class {\n constructor(params) {\n if (params === void 0) {\n params = {};\n }\n super(params);\n // eslint-disable-next-line\n if (Framework7.instance && typeof window !== 'undefined') {\n throw new Error(\"Framework7 is already initialized and can't be initialized more than once\");\n }\n const device = getDevice({\n userAgent: params.userAgent || undefined\n });\n const support = getSupport();\n const passedParams = extend({}, params);\n\n // App Instance\n const app = this;\n app.device = device;\n app.support = support;\n const w = getWindow();\n const d = getDocument();\n Framework7.instance = app;\n\n // Default\n const defaults = {\n el: 'body',\n theme: 'auto',\n routes: [],\n name: 'Framework7',\n lazyModulesPath: null,\n initOnDeviceReady: true,\n init: true,\n darkMode: undefined,\n iosTranslucentBars: true,\n iosTranslucentModals: true,\n component: undefined,\n componentUrl: undefined,\n userAgent: null,\n url: null,\n colors: {\n primary: '#007aff',\n red: '#ff3b30',\n green: '#4cd964',\n blue: '#2196f3',\n pink: '#ff2d55',\n yellow: '#ffcc00',\n orange: '#ff9500',\n purple: '#9c27b0',\n deeppurple: '#673ab7',\n lightblue: '#5ac8fa',\n teal: '#009688',\n lime: '#cddc39',\n deeporange: '#ff6b22',\n white: '#ffffff',\n black: '#000000'\n }\n };\n\n // Extend defaults with modules params\n app.useModulesParams(defaults);\n\n // Extend defaults with passed params\n app.params = extend(defaults, params);\n extend(app, {\n // App Name\n name: app.params.name,\n // Routes\n routes: app.params.routes,\n // Theme\n theme: function getTheme() {\n if (app.params.theme === 'auto') {\n if (device.ios) return 'ios';\n return 'md';\n }\n return app.params.theme;\n }(),\n // Initially passed parameters\n passedParams,\n online: w.navigator.onLine,\n colors: app.params.colors,\n darkMode: app.params.darkMode\n });\n if (params.store) app.params.store = params.store;\n\n // Save Root\n if (app.$el && app.$el[0]) {\n app.$el[0].f7 = app;\n }\n\n // Install Modules\n app.useModules();\n\n // Init Store\n app.initStore();\n\n // Init\n if (app.params.init) {\n if (device.cordova && app.params.initOnDeviceReady) {\n $(d).on('deviceready', () => {\n app.init();\n });\n } else {\n app.init();\n }\n }\n\n // Return app instance\n return app;\n }\n setColorTheme(color) {\n if (!color) return;\n const app = this;\n app.colors.primary = color;\n app.setColors();\n }\n setColors() {\n const app = this;\n const document = getDocument();\n if (!app.colorsStyleEl) {\n app.colorsStyleEl = document.createElement('style');\n document.head.prepend(app.colorsStyleEl);\n }\n app.colorsStyleEl.textContent = app.utils.colorThemeCSSStyles(app.colors);\n }\n mount(rootEl) {\n const app = this;\n const window = getWindow();\n const document = getDocument();\n const $rootEl = $(rootEl || app.params.el).eq(0);\n app.$el = $rootEl;\n if (app.$el && app.$el[0]) {\n app.el = app.$el[0];\n app.el.f7 = app;\n app.rtl = $rootEl.css('direction') === 'rtl';\n }\n\n // Auto Dark Mode\n const DARK = '(prefers-color-scheme: dark)';\n const LIGHT = '(prefers-color-scheme: light)';\n app.mq = {};\n if (window.matchMedia) {\n app.mq.dark = window.matchMedia(DARK);\n app.mq.light = window.matchMedia(LIGHT);\n }\n app.colorSchemeListener = function colorSchemeListener(_ref) {\n let {\n matches,\n media\n } = _ref;\n if (!matches) {\n return;\n }\n const html = document.querySelector('html');\n if (media === DARK) {\n html.classList.add('dark');\n app.darkMode = true;\n app.emit('darkModeChange', true);\n } else if (media === LIGHT) {\n html.classList.remove('dark');\n app.darkMode = false;\n app.emit('darkModeChange', false);\n }\n };\n app.emit('mount');\n }\n initStore() {\n const app = this;\n if (typeof app.params.store !== 'undefined' && app.params.store.__store) {\n app.store = app.params.store;\n } else {\n app.store = app.createStore(app.params.store);\n }\n }\n enableAutoDarkMode() {\n const window = getWindow();\n const document = getDocument();\n if (!window.matchMedia) return;\n const app = this;\n const html = document.querySelector('html');\n if (app.mq.dark && app.mq.light) {\n app.mq.dark.addEventListener('change', app.colorSchemeListener);\n app.mq.light.addEventListener('change', app.colorSchemeListener);\n }\n if (app.mq.dark && app.mq.dark.matches) {\n html.classList.add('dark');\n app.darkMode = true;\n app.emit('darkModeChange', true);\n } else if (app.mq.light && app.mq.light.matches) {\n html.classList.remove('dark');\n app.darkMode = false;\n app.emit('darkModeChange', false);\n }\n }\n disableAutoDarkMode() {\n const window = getWindow();\n if (!window.matchMedia) return;\n const app = this;\n if (app.mq.dark) app.mq.dark.removeEventListener('change', app.colorSchemeListener);\n if (app.mq.light) app.mq.light.removeEventListener('change', app.colorSchemeListener);\n }\n setDarkMode(mode) {\n const app = this;\n if (mode === 'auto') {\n app.enableAutoDarkMode();\n } else {\n app.disableAutoDarkMode();\n $('html')[mode ? 'addClass' : 'removeClass']('dark');\n app.darkMode = mode;\n }\n }\n initAppComponent(callback) {\n const app = this;\n app.router.componentLoader(app.params.component, app.params.componentUrl, {\n componentOptions: {\n el: app.$el[0]\n }\n }, el => {\n app.$el = $(el);\n app.$el[0].f7 = app;\n app.$elComponent = el.f7Component;\n app.el = app.$el[0];\n if (callback) callback();\n }, () => {});\n }\n init(rootEl) {\n const app = this;\n app.setColors();\n app.mount(rootEl);\n const init = () => {\n if (app.initialized) return;\n app.$el.addClass('framework7-initializing');\n\n // RTL attr\n if (app.rtl) {\n $('html').attr('dir', 'rtl');\n }\n\n // Auto Dark Mode\n if (typeof app.params.darkMode === 'undefined') {\n app.darkMode = $('html').hasClass('dark');\n } else {\n app.setDarkMode(app.params.darkMode);\n }\n\n // Watch for online/offline state\n const window = getWindow();\n window.addEventListener('offline', () => {\n app.online = false;\n app.emit('offline');\n app.emit('connection', false);\n });\n window.addEventListener('online', () => {\n app.online = true;\n app.emit('online');\n app.emit('connection', true);\n });\n\n // Root class\n app.$el.addClass('framework7-root');\n\n // Theme class\n $('html').removeClass('ios md').addClass(app.theme);\n\n // iOS Translucent\n if (app.params.iosTranslucentBars && app.theme === 'ios') {\n $('html').addClass('ios-translucent-bars');\n }\n if (app.params.iosTranslucentModals && app.theme === 'ios') {\n $('html').addClass('ios-translucent-modals');\n }\n\n // Init class\n nextFrame(() => {\n app.$el.removeClass('framework7-initializing');\n });\n // Emit, init other modules\n app.initialized = true;\n app.emit('init');\n };\n if (app.params.component || app.params.componentUrl) {\n app.initAppComponent(() => {\n init();\n });\n } else {\n init();\n }\n return app;\n }\n\n // eslint-disable-next-line\n loadModule() {\n return Framework7.loadModule(...arguments);\n }\n\n // eslint-disable-next-line\n loadModules() {\n return Framework7.loadModules(...arguments);\n }\n getVnodeHooks(hook, id) {\n const app = this;\n if (!app.vnodeHooks || !app.vnodeHooks[hook]) return [];\n return app.vnodeHooks[hook][id] || [];\n }\n\n // eslint-disable-next-line\n get $() {\n return $;\n }\n static get Dom7() {\n return $;\n }\n static get $() {\n return $;\n }\n static get device() {\n return getDevice();\n }\n static get support() {\n return getSupport();\n }\n static get Class() {\n return Framework7Class;\n }\n static get Events() {\n return EventsClass;\n }\n}\nFramework7.$jsx = $jsx;\nFramework7.ModalMethods = ModalMethods;\nFramework7.ConstructorMethods = ConstructorMethods;\nFramework7.loadModule = loadModule;\nFramework7.loadModules = function loadModules(modules) {\n return Promise.all(modules.map(module => Framework7.loadModule(module)));\n};\nexport default Framework7;","import { getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\nexport default {\n name: 'device',\n static: {\n getDevice\n },\n on: {\n init() {\n const document = getDocument();\n const device = getDevice();\n const classNames = [];\n const html = document.querySelector('html');\n const metaStatusbar = document.querySelector('meta[name=\"apple-mobile-web-app-status-bar-style\"]');\n if (!html) return;\n if (device.standalone && device.ios && metaStatusbar && metaStatusbar.content === 'black-translucent') {\n classNames.push('device-full-viewport');\n }\n\n // Pixel Ratio\n classNames.push(`device-pixel-ratio-${Math.floor(device.pixelRatio)}`);\n // OS classes\n if (device.os && !device.desktop) {\n classNames.push(`device-${device.os}`);\n } else if (device.desktop) {\n classNames.push('device-desktop');\n if (device.os) {\n classNames.push(`device-${device.os}`);\n }\n }\n if (device.cordova) {\n classNames.push('device-cordova');\n }\n if (device.capacitor) {\n classNames.push('device-capacitor');\n }\n\n // Add html classes\n classNames.forEach(className => {\n html.classList.add(className);\n });\n }\n }\n};","import { getSupport } from '../../shared/get-support.js';\nexport default {\n name: 'support',\n static: {\n getSupport\n }\n};","import * as utils from '../../shared/utils.js';\nexport default {\n name: 'utils',\n proto: {\n utils\n },\n static: {\n utils\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\nexport default {\n name: 'resize',\n create() {\n const app = this;\n app.getSize = () => {\n if (!app.el) return {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n };\n const offset = app.$el.offset();\n const [width, height, left, top] = [app.el.offsetWidth, app.el.offsetHeight, offset.left, offset.top];\n app.width = width;\n app.height = height;\n app.left = left;\n app.top = top;\n return {\n width,\n height,\n left,\n top\n };\n };\n },\n on: {\n init() {\n const app = this;\n const window = getWindow();\n\n // Get Size\n app.getSize();\n\n // Emit resize\n window.addEventListener('resize', () => {\n app.emit('resize');\n }, false);\n\n // Emit orientationchange\n window.addEventListener('orientationchange', () => {\n app.emit('orientationchange');\n });\n },\n orientationchange() {\n const document = getDocument();\n const device = getDevice();\n // Fix iPad weird body scroll\n if (device.ipad) {\n document.body.scrollLeft = 0;\n setTimeout(() => {\n document.body.scrollLeft = 0;\n }, 0);\n }\n },\n resize() {\n const app = this;\n app.getSize();\n }\n }\n};","/* eslint-disable no-nested-ternary */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { extend } from '../../shared/utils.js';\nfunction initTouch() {\n const app = this;\n const device = getDevice();\n const support = getSupport();\n const window = getWindow();\n const document = getDocument();\n const params = app.params.touch;\n const useRipple = params[`${app.theme}TouchRipple`];\n if (device.ios && device.webView) {\n // Strange hack required for iOS 8 webview to work on inputs\n window.addEventListener('touchstart', () => {});\n }\n let touchStartX;\n let touchStartY;\n let targetElement;\n let isMoved;\n let tapHoldFired;\n let tapHoldTimeout;\n let preventClick;\n let activableElement;\n let activeTimeout;\n let rippleWave;\n let rippleTarget;\n let rippleTimeout;\n function findActivableElement(el) {\n const target = $(el);\n const parents = target.parents(params.activeStateElements);\n if (target.closest('.no-active-state').length) {\n return null;\n }\n let activable;\n if (target.is(params.activeStateElements)) {\n activable = target;\n }\n if (parents.length > 0) {\n activable = activable ? activable.add(parents) : parents;\n }\n if (activable && activable.length > 1) {\n const newActivable = [];\n let preventPropagation;\n for (let i = 0; i < activable.length; i += 1) {\n if (!preventPropagation) {\n newActivable.push(activable[i]);\n if (activable.eq(i).hasClass('prevent-active-state-propagation') || activable.eq(i).hasClass('no-active-state-propagation')) {\n preventPropagation = true;\n }\n }\n }\n activable = $(newActivable);\n }\n return activable || target;\n }\n function isInsideScrollableView(el) {\n const pageContent = el.parents('.page-content');\n return pageContent.length > 0;\n }\n function addActive() {\n if (!activableElement) return;\n activableElement.addClass('active-state');\n }\n function removeActive() {\n if (!activableElement) return;\n activableElement.removeClass('active-state');\n activableElement = null;\n }\n\n // Ripple handlers\n function findRippleElement(el) {\n const rippleElements = params.touchRippleElements;\n const $el = $(el);\n if ($el.is(rippleElements)) {\n if ($el.hasClass('no-ripple')) {\n return false;\n }\n return $el;\n }\n if ($el.parents(rippleElements).length > 0) {\n const rippleParent = $el.parents(rippleElements).eq(0);\n if (rippleParent.hasClass('no-ripple')) {\n return false;\n }\n return rippleParent;\n }\n return false;\n }\n function createRipple($el, x, y) {\n if (!$el) return;\n rippleWave = app.touchRipple.create(app, $el, x, y);\n }\n function removeRipple() {\n if (!rippleWave) return;\n rippleWave.remove();\n rippleWave = undefined;\n rippleTarget = undefined;\n }\n function rippleTouchStart(el) {\n rippleTarget = findRippleElement(el);\n if (!rippleTarget || rippleTarget.length === 0) {\n rippleTarget = undefined;\n return;\n }\n const inScrollable = isInsideScrollableView(rippleTarget);\n if (!inScrollable) {\n removeRipple();\n createRipple(rippleTarget, touchStartX, touchStartY);\n } else {\n clearTimeout(rippleTimeout);\n rippleTimeout = setTimeout(() => {\n removeRipple();\n createRipple(rippleTarget, touchStartX, touchStartY);\n }, 80);\n }\n }\n function rippleTouchMove() {\n clearTimeout(rippleTimeout);\n removeRipple();\n }\n function rippleTouchEnd() {\n if (!rippleWave && rippleTarget && !isMoved) {\n clearTimeout(rippleTimeout);\n createRipple(rippleTarget, touchStartX, touchStartY);\n setTimeout(removeRipple, 0);\n } else {\n removeRipple();\n }\n }\n\n // Mouse Handlers\n function handleMouseDown(e) {\n const $activableEl = findActivableElement(e.target);\n if ($activableEl) {\n $activableEl.addClass('active-state');\n if ('which' in e && e.which === 3) {\n setTimeout(() => {\n $('.active-state').removeClass('active-state');\n }, 0);\n }\n }\n if (useRipple) {\n touchStartX = e.pageX;\n touchStartY = e.pageY;\n rippleTouchStart(e.target, e.pageX, e.pageY);\n }\n }\n function handleMouseMove() {\n if (!params.activeStateOnMouseMove) {\n $('.active-state').removeClass('active-state');\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n function handleMouseUp() {\n $('.active-state').removeClass('active-state');\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n function handleTouchCancel() {\n targetElement = null;\n\n // Remove Active State\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (params.activeState) {\n removeActive();\n }\n\n // Remove Ripple\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n let isScrolling;\n let isSegmentedStrong = false;\n let segmentedStrongEl = null;\n const touchMoveActivableIos = '.dialog-button, .actions-button';\n let isTouchMoveActivable = false;\n let touchmoveActivableEl = null;\n function handleTouchStart(e) {\n if (!e.isTrusted) return true;\n isMoved = false;\n tapHoldFired = false;\n preventClick = false;\n isScrolling = undefined;\n if (e.targetTouches.length > 1) {\n if (activableElement) removeActive();\n return true;\n }\n if (e.touches.length > 1 && activableElement) {\n removeActive();\n }\n if (params.tapHold) {\n if (tapHoldTimeout) clearTimeout(tapHoldTimeout);\n tapHoldTimeout = setTimeout(() => {\n if (e && e.touches && e.touches.length > 1) return;\n tapHoldFired = true;\n e.preventDefault();\n preventClick = true;\n $(e.target).trigger('taphold', e);\n app.emit('taphold', e);\n }, params.tapHoldDelay);\n }\n targetElement = e.target;\n touchStartX = e.targetTouches[0].pageX;\n touchStartY = e.targetTouches[0].pageY;\n isSegmentedStrong = e.target.closest('.segmented-strong .button-active, .segmented-strong .tab-link-active');\n isTouchMoveActivable = app.theme === 'ios' && e.target.closest(touchMoveActivableIos);\n if (isSegmentedStrong) {\n segmentedStrongEl = isSegmentedStrong.closest('.segmented-strong');\n }\n if (params.activeState) {\n activableElement = findActivableElement(targetElement);\n if (activableElement && !isInsideScrollableView(activableElement)) {\n addActive();\n } else if (activableElement) {\n activeTimeout = setTimeout(addActive, 80);\n }\n }\n if (useRipple) {\n rippleTouchStart(targetElement, touchStartX, touchStartY);\n }\n return true;\n }\n function handleTouchMove(e) {\n if (!e.isTrusted) return;\n let touch;\n let distance;\n let shouldRemoveActive = true;\n if (e.type === 'touchmove') {\n touch = e.targetTouches[0];\n distance = params.touchClicksDistanceThreshold;\n }\n const touchCurrentX = e.targetTouches[0].pageX;\n const touchCurrentY = e.targetTouches[0].pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX));\n }\n if (isTouchMoveActivable || !isScrolling && isSegmentedStrong && segmentedStrongEl) {\n if (e.cancelable) e.preventDefault();\n }\n if (!isScrolling && isSegmentedStrong && segmentedStrongEl) {\n const elementFromPoint = document.elementFromPoint(e.targetTouches[0].clientX, e.targetTouches[0].clientY);\n const buttonEl = elementFromPoint.closest('.segmented-strong .button:not(.button-active):not(.tab-link-active)');\n if (buttonEl && segmentedStrongEl.contains(buttonEl)) {\n $(buttonEl).trigger('click', 'f7Segmented');\n targetElement = buttonEl;\n }\n }\n if (distance && touch) {\n const pageX = touch.pageX;\n const pageY = touch.pageY;\n if (Math.abs(pageX - touchStartX) > distance || Math.abs(pageY - touchStartY) > distance) {\n isMoved = true;\n }\n } else {\n isMoved = true;\n }\n if (isMoved) {\n preventClick = true;\n // Keep active state on touchMove (for dialog and actions buttons)\n if (isTouchMoveActivable) {\n const elementFromPoint = document.elementFromPoint(e.targetTouches[0].clientX, e.targetTouches[0].clientY);\n touchmoveActivableEl = elementFromPoint.closest(touchMoveActivableIos);\n if (touchmoveActivableEl && activableElement && activableElement[0] === touchmoveActivableEl) {\n shouldRemoveActive = false;\n } else if (touchmoveActivableEl) {\n setTimeout(() => {\n activableElement = findActivableElement(touchmoveActivableEl);\n addActive();\n });\n }\n }\n if (params.tapHold) {\n clearTimeout(tapHoldTimeout);\n }\n if (params.activeState && shouldRemoveActive) {\n clearTimeout(activeTimeout);\n removeActive();\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n }\n function handleTouchEnd(e) {\n if (!e.isTrusted) return true;\n isScrolling = undefined;\n isSegmentedStrong = false;\n segmentedStrongEl = null;\n isTouchMoveActivable = false;\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (touchmoveActivableEl) {\n $(touchmoveActivableEl).trigger('click', 'f7TouchMoveActivable');\n touchmoveActivableEl = null;\n }\n if (document.activeElement === e.target) {\n if (params.activeState) removeActive();\n if (useRipple) {\n rippleTouchEnd();\n }\n return true;\n }\n if (params.activeState) {\n addActive();\n setTimeout(removeActive, 0);\n }\n if (useRipple) {\n rippleTouchEnd();\n }\n if (params.tapHoldPreventClicks && tapHoldFired || preventClick) {\n if (e.cancelable) e.preventDefault();\n preventClick = true;\n return false;\n }\n return true;\n }\n function handleClick(e) {\n const isOverswipe = e && e.detail && e.detail === 'f7Overswipe';\n const isSegmented = e && e.detail && e.detail === 'f7Segmented';\n // eslint-disable-next-line\n const isTouchMoveActivable = e && e.detail && e.detail === 'f7TouchMoveActivable';\n let localPreventClick = preventClick;\n if (targetElement && e.target !== targetElement) {\n if (isOverswipe || isSegmented || isTouchMoveActivable) {\n localPreventClick = false;\n } else {\n localPreventClick = true;\n }\n } else if (isTouchMoveActivable) {\n localPreventClick = false;\n }\n if (params.tapHold && params.tapHoldPreventClicks && tapHoldFired) {\n localPreventClick = true;\n }\n if (localPreventClick) {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n }\n if (params.tapHold) {\n tapHoldTimeout = setTimeout(() => {\n tapHoldFired = false;\n }, device.ios || device.androidChrome ? 100 : 400);\n }\n preventClick = false;\n targetElement = null;\n return !localPreventClick;\n }\n function emitAppTouchEvent(name, e) {\n app.emit({\n events: name,\n data: [e]\n });\n }\n function appClick(e) {\n emitAppTouchEvent('click', e);\n }\n function appTouchStartActive(e) {\n emitAppTouchEvent('touchstart touchstart:active', e);\n }\n function appTouchMoveActive(e) {\n emitAppTouchEvent('touchmove touchmove:active', e);\n }\n function appTouchEndActive(e) {\n emitAppTouchEvent('touchend touchend:active', e);\n }\n function appTouchStartPassive(e) {\n emitAppTouchEvent('touchstart:passive', e);\n }\n function appTouchMovePassive(e) {\n emitAppTouchEvent('touchmove:passive', e);\n }\n function appTouchEndPassive(e) {\n emitAppTouchEvent('touchend:passive', e);\n }\n const passiveListener = support.passiveListener ? {\n passive: true\n } : false;\n const passiveListenerCapture = support.passiveListener ? {\n passive: true,\n capture: true\n } : true;\n const activeListener = support.passiveListener ? {\n passive: false\n } : false;\n const activeListenerCapture = support.passiveListener ? {\n passive: false,\n capture: true\n } : true;\n document.addEventListener('click', appClick, true);\n if (support.passiveListener) {\n document.addEventListener(app.touchEvents.start, appTouchStartActive, activeListenerCapture);\n document.addEventListener(app.touchEvents.move, appTouchMoveActive, activeListener);\n document.addEventListener(app.touchEvents.end, appTouchEndActive, activeListener);\n document.addEventListener(app.touchEvents.start, appTouchStartPassive, passiveListenerCapture);\n document.addEventListener(app.touchEvents.move, appTouchMovePassive, passiveListener);\n document.addEventListener(app.touchEvents.end, appTouchEndPassive, passiveListener);\n } else {\n document.addEventListener(app.touchEvents.start, e => {\n appTouchStartActive(e);\n appTouchStartPassive(e);\n }, true);\n document.addEventListener(app.touchEvents.move, e => {\n appTouchMoveActive(e);\n appTouchMovePassive(e);\n }, false);\n document.addEventListener(app.touchEvents.end, e => {\n appTouchEndActive(e);\n appTouchEndPassive(e);\n }, false);\n }\n if (support.touch) {\n app.on('click', handleClick);\n app.on('touchstart', handleTouchStart);\n app.on('touchmove', handleTouchMove);\n app.on('touchend', handleTouchEnd);\n document.addEventListener('touchcancel', handleTouchCancel, {\n passive: true\n });\n } else if (params.activeState) {\n app.on('touchstart', handleMouseDown);\n app.on('touchmove', handleMouseMove);\n app.on('touchend', handleMouseUp);\n document.addEventListener('pointercancel', handleMouseUp, {\n passive: true\n });\n }\n document.addEventListener('contextmenu', e => {\n if (params.disableContextMenu && (device.ios || device.android || device.cordova || window.Capacitor && window.Capacitor.isNative)) {\n e.preventDefault();\n }\n if (useRipple) {\n if (activableElement) removeActive();\n rippleTouchEnd();\n }\n });\n}\nexport default {\n name: 'touch',\n params: {\n touch: {\n // Clicks\n touchClicksDistanceThreshold: 5,\n // ContextMenu\n disableContextMenu: false,\n // Tap Hold\n tapHold: false,\n tapHoldDelay: 750,\n tapHoldPreventClicks: true,\n // Active State\n activeState: true,\n activeStateElements: 'a, button, label, span, .actions-button, .stepper-button, .stepper-button-plus, .stepper-button-minus, .card-expandable, .link, .item-link, .accordion-item-toggle',\n activeStateOnMouseMove: false,\n mdTouchRipple: true,\n iosTouchRipple: false,\n touchRippleElements: '.ripple, .link, .item-link, .list label.item-content, .list-button, .links-list a, .button, button, .input-clear-button, .dialog-button, .tab-link, .item-radio, .item-checkbox, .actions-button, .searchbar-disable-button, .fab a, .checkbox, .radio, .data-table .sortable-cell:not(.input-cell), .notification-close-button, .stepper-button, .stepper-button-minus, .stepper-button-plus, .list.accordion-list .accordion-item-toggle',\n touchRippleInsetElements: '.ripple-inset, .icon-only, .searchbar-disable-button, .input-clear-button, .notification-close-button, .md .navbar .link.back'\n }\n },\n create() {\n const app = this;\n const support = getSupport();\n extend(app, {\n touchEvents: {\n start: support.touch ? 'touchstart' : support.pointerEvents ? 'pointerdown' : 'mousedown',\n move: support.touch ? 'touchmove' : support.pointerEvents ? 'pointermove' : 'mousemove',\n end: support.touch ? 'touchend' : support.pointerEvents ? 'pointerup' : 'mouseup'\n }\n });\n },\n on: {\n init: initTouch\n }\n};","/**\n * Tokenize input string.\n */\nfunction lexer(str) {\n var tokens = [];\n var i = 0;\n while (i < str.length) {\n var char = str[i];\n if (char === \"*\" || char === \"+\" || char === \"?\") {\n tokens.push({ type: \"MODIFIER\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"\\\\\") {\n tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n continue;\n }\n if (char === \"{\") {\n tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"}\") {\n tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n continue;\n }\n if (char === \":\") {\n var name = \"\";\n var j = i + 1;\n while (j < str.length) {\n var code = str.charCodeAt(j);\n if (\n // `0-9`\n (code >= 48 && code <= 57) ||\n // `A-Z`\n (code >= 65 && code <= 90) ||\n // `a-z`\n (code >= 97 && code <= 122) ||\n // `_`\n code === 95) {\n name += str[j++];\n continue;\n }\n break;\n }\n if (!name)\n throw new TypeError(\"Missing parameter name at \".concat(i));\n tokens.push({ type: \"NAME\", index: i, value: name });\n i = j;\n continue;\n }\n if (char === \"(\") {\n var count = 1;\n var pattern = \"\";\n var j = i + 1;\n if (str[j] === \"?\") {\n throw new TypeError(\"Pattern cannot start with \\\"?\\\" at \".concat(j));\n }\n while (j < str.length) {\n if (str[j] === \"\\\\\") {\n pattern += str[j++] + str[j++];\n continue;\n }\n if (str[j] === \")\") {\n count--;\n if (count === 0) {\n j++;\n break;\n }\n }\n else if (str[j] === \"(\") {\n count++;\n if (str[j + 1] !== \"?\") {\n throw new TypeError(\"Capturing groups are not allowed at \".concat(j));\n }\n }\n pattern += str[j++];\n }\n if (count)\n throw new TypeError(\"Unbalanced pattern at \".concat(i));\n if (!pattern)\n throw new TypeError(\"Missing pattern at \".concat(i));\n tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n i = j;\n continue;\n }\n tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n }\n tokens.push({ type: \"END\", index: i, value: \"\" });\n return tokens;\n}\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str, options) {\n if (options === void 0) { options = {}; }\n var tokens = lexer(str);\n var _a = options.prefixes, prefixes = _a === void 0 ? \"./\" : _a;\n var defaultPattern = \"[^\".concat(escapeString(options.delimiter || \"/#?\"), \"]+?\");\n var result = [];\n var key = 0;\n var i = 0;\n var path = \"\";\n var tryConsume = function (type) {\n if (i < tokens.length && tokens[i].type === type)\n return tokens[i++].value;\n };\n var mustConsume = function (type) {\n var value = tryConsume(type);\n if (value !== undefined)\n return value;\n var _a = tokens[i], nextType = _a.type, index = _a.index;\n throw new TypeError(\"Unexpected \".concat(nextType, \" at \").concat(index, \", expected \").concat(type));\n };\n var consumeText = function () {\n var result = \"\";\n var value;\n while ((value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\"))) {\n result += value;\n }\n return result;\n };\n while (i < tokens.length) {\n var char = tryConsume(\"CHAR\");\n var name = tryConsume(\"NAME\");\n var pattern = tryConsume(\"PATTERN\");\n if (name || pattern) {\n var prefix = char || \"\";\n if (prefixes.indexOf(prefix) === -1) {\n path += prefix;\n prefix = \"\";\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n result.push({\n name: name || key++,\n prefix: prefix,\n suffix: \"\",\n pattern: pattern || defaultPattern,\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n var value = char || tryConsume(\"ESCAPED_CHAR\");\n if (value) {\n path += value;\n continue;\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n var open = tryConsume(\"OPEN\");\n if (open) {\n var prefix = consumeText();\n var name_1 = tryConsume(\"NAME\") || \"\";\n var pattern_1 = tryConsume(\"PATTERN\") || \"\";\n var suffix = consumeText();\n mustConsume(\"CLOSE\");\n result.push({\n name: name_1 || (pattern_1 ? key++ : \"\"),\n pattern: name_1 && !pattern_1 ? defaultPattern : pattern_1,\n prefix: prefix,\n suffix: suffix,\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n mustConsume(\"END\");\n }\n return result;\n}\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\nexport function tokensToFunction(tokens, options) {\n if (options === void 0) { options = {}; }\n var reFlags = flags(options);\n var _a = options.encode, encode = _a === void 0 ? function (x) { return x; } : _a, _b = options.validate, validate = _b === void 0 ? true : _b;\n // Compile all the tokens into regexps.\n var matches = tokens.map(function (token) {\n if (typeof token === \"object\") {\n return new RegExp(\"^(?:\".concat(token.pattern, \")$\"), reFlags);\n }\n });\n return function (data) {\n var path = \"\";\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === \"string\") {\n path += token;\n continue;\n }\n var value = data ? data[token.name] : undefined;\n var optional = token.modifier === \"?\" || token.modifier === \"*\";\n var repeat = token.modifier === \"*\" || token.modifier === \"+\";\n if (Array.isArray(value)) {\n if (!repeat) {\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not repeat, but got an array\"));\n }\n if (value.length === 0) {\n if (optional)\n continue;\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not be empty\"));\n }\n for (var j = 0; j < value.length; j++) {\n var segment = encode(value[j], token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected all \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n }\n path += token.prefix + segment + token.suffix;\n }\n continue;\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n var segment = encode(String(value), token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n }\n path += token.prefix + segment + token.suffix;\n continue;\n }\n if (optional)\n continue;\n var typeOfMessage = repeat ? \"an array\" : \"a string\";\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to be \").concat(typeOfMessage));\n }\n return path;\n };\n}\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nexport function match(str, options) {\n var keys = [];\n var re = pathToRegexp(str, keys, options);\n return regexpToFunction(re, keys, options);\n}\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nexport function regexpToFunction(re, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.decode, decode = _a === void 0 ? function (x) { return x; } : _a;\n return function (pathname) {\n var m = re.exec(pathname);\n if (!m)\n return false;\n var path = m[0], index = m.index;\n var params = Object.create(null);\n var _loop_1 = function (i) {\n if (m[i] === undefined)\n return \"continue\";\n var key = keys[i - 1];\n if (key.modifier === \"*\" || key.modifier === \"+\") {\n params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {\n return decode(value, key);\n });\n }\n else {\n params[key.name] = decode(m[i], key);\n }\n };\n for (var i = 1; i < m.length; i++) {\n _loop_1(i);\n }\n return { path: path, index: index, params: params };\n };\n}\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options) {\n return options && options.sensitive ? \"\" : \"i\";\n}\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path, keys) {\n if (!keys)\n return path;\n var groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n var index = 0;\n var execResult = groupsRegex.exec(path.source);\n while (execResult) {\n keys.push({\n // Use parenthesized substring match if available, index otherwise\n name: execResult[1] || index++,\n prefix: \"\",\n suffix: \"\",\n modifier: \"\",\n pattern: \"\",\n });\n execResult = groupsRegex.exec(path.source);\n }\n return path;\n}\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(paths, keys, options) {\n var parts = paths.map(function (path) { return pathToRegexp(path, keys, options).source; });\n return new RegExp(\"(?:\".concat(parts.join(\"|\"), \")\"), flags(options));\n}\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegexp(parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nexport function tokensToRegexp(tokens, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function (x) { return x; } : _d, _e = options.delimiter, delimiter = _e === void 0 ? \"/#?\" : _e, _f = options.endsWith, endsWith = _f === void 0 ? \"\" : _f;\n var endsWithRe = \"[\".concat(escapeString(endsWith), \"]|$\");\n var delimiterRe = \"[\".concat(escapeString(delimiter), \"]\");\n var route = start ? \"^\" : \"\";\n // Iterate over the tokens and create our regexp string.\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n if (typeof token === \"string\") {\n route += escapeString(encode(token));\n }\n else {\n var prefix = escapeString(encode(token.prefix));\n var suffix = escapeString(encode(token.suffix));\n if (token.pattern) {\n if (keys)\n keys.push(token);\n if (prefix || suffix) {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n var mod = token.modifier === \"*\" ? \"?\" : \"\";\n route += \"(?:\".concat(prefix, \"((?:\").concat(token.pattern, \")(?:\").concat(suffix).concat(prefix, \"(?:\").concat(token.pattern, \"))*)\").concat(suffix, \")\").concat(mod);\n }\n else {\n route += \"(?:\".concat(prefix, \"(\").concat(token.pattern, \")\").concat(suffix, \")\").concat(token.modifier);\n }\n }\n else {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n route += \"((?:\".concat(token.pattern, \")\").concat(token.modifier, \")\");\n }\n else {\n route += \"(\".concat(token.pattern, \")\").concat(token.modifier);\n }\n }\n }\n else {\n route += \"(?:\".concat(prefix).concat(suffix, \")\").concat(token.modifier);\n }\n }\n }\n if (end) {\n if (!strict)\n route += \"\".concat(delimiterRe, \"?\");\n route += !options.endsWith ? \"$\" : \"(?=\".concat(endsWithRe, \")\");\n }\n else {\n var endToken = tokens[tokens.length - 1];\n var isEndDelimited = typeof endToken === \"string\"\n ? delimiterRe.indexOf(endToken[endToken.length - 1]) > -1\n : endToken === undefined;\n if (!strict) {\n route += \"(?:\".concat(delimiterRe, \"(?=\").concat(endsWithRe, \"))?\");\n }\n if (!isEndDelimited) {\n route += \"(?=\".concat(delimiterRe, \"|\").concat(endsWithRe, \")\");\n }\n }\n return new RegExp(route, flags(options));\n}\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nexport function pathToRegexp(path, keys, options) {\n if (path instanceof RegExp)\n return regexpToRegexp(path, keys);\n if (Array.isArray(path))\n return arrayToRegexp(path, keys, options);\n return stringToRegexp(path, keys, options);\n}\n//# sourceMappingURL=index.js.map","import { getWindow, getDocument } from 'ssr-window';\nimport $ from './dom7.js';\nimport { extend } from './utils.js';\nconst History = {\n queue: [],\n clearQueue() {\n if (History.queue.length === 0) return;\n const currentQueue = History.queue.shift();\n currentQueue();\n },\n routerQueue: [],\n clearRouterQueue() {\n if (History.routerQueue.length === 0) return;\n const currentQueue = History.routerQueue.pop();\n const {\n router,\n stateUrl,\n action\n } = currentQueue;\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n if (action === 'back') {\n router.back({\n animate,\n browserHistory: false\n });\n }\n if (action === 'load') {\n router.navigate(stateUrl, {\n animate,\n browserHistory: false\n });\n }\n },\n handle(e) {\n if (History.blockPopstate) return;\n const app = this;\n // const mainView = app.views.main;\n let state = e.state;\n History.previousState = History.state;\n History.state = state;\n History.allowChange = true;\n History.clearQueue();\n state = History.state;\n if (!state) state = {};\n app.views.forEach(view => {\n const router = view.router;\n let viewState = state[view.id];\n if (!viewState && view.params.browserHistory) {\n viewState = {\n url: view.router.history[0]\n };\n }\n if (!viewState) return;\n const stateUrl = viewState.url || undefined;\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n if (stateUrl !== router.url) {\n if (router.history.indexOf(stateUrl) >= 0) {\n // Go Back\n if (router.allowPageChange) {\n router.back({\n animate,\n browserHistory: false\n });\n } else {\n History.routerQueue.push({\n action: 'back',\n router\n });\n }\n } else if (router.allowPageChange) {\n // Load page\n router.navigate(stateUrl, {\n animate,\n browserHistory: false\n });\n } else {\n History.routerQueue.unshift({\n action: 'load',\n stateUrl,\n router\n });\n }\n }\n });\n },\n initViewState(viewId, viewState) {\n const window = getWindow();\n const newState = extend({}, History.state || {}, {\n [viewId]: viewState\n });\n History.state = newState;\n window.history.replaceState(newState, '');\n },\n push(viewId, viewState, url) {\n const window = getWindow();\n const document = getDocument();\n /* eslint-disable no-param-reassign */\n if (url.substr(-3) === '#!/') {\n url = url.replace('#!/', '');\n if (url === '') {\n url = document.location.href;\n if (url.includes('#!/')) {\n url = document.location.href.split('#!/')[0];\n }\n }\n }\n /* eslint-enable no-param-reassign */\n if (!History.allowChange) {\n History.queue.push(() => {\n History.push(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState\n });\n History.state = newState;\n window.history.pushState(newState, '', url);\n },\n replace(viewId, viewState, url) {\n const window = getWindow();\n if (url.substr(-3) === '#!/') {\n // eslint-disable-next-line\n url = url.replace('#!/', '');\n }\n if (!History.allowChange) {\n History.queue.push(() => {\n History.replace(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState\n });\n History.state = newState;\n window.history.replaceState(newState, '', url);\n },\n go(index) {\n const window = getWindow();\n History.allowChange = false;\n window.history.go(index);\n },\n back() {\n const window = getWindow();\n History.allowChange = false;\n window.history.back();\n },\n allowChange: true,\n previousState: {},\n state: {},\n blockPopstate: true,\n init(app) {\n const window = getWindow();\n const document = getDocument();\n History.state = window.history.state;\n $(window).on('load', () => {\n setTimeout(() => {\n History.blockPopstate = false;\n }, 0);\n });\n if (document.readyState && document.readyState === 'complete') {\n History.blockPopstate = false;\n }\n $(window).on('popstate', History.handle.bind(app));\n }\n};\nexport default History;","import $ from '../../shared/dom7.js';\nimport History from '../../shared/history.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { now } from '../../shared/utils.js';\nfunction SwipeBack(r) {\n const router = r;\n const {\n $el,\n $navbarsEl,\n app,\n params\n } = router;\n const support = getSupport();\n const device = getDevice();\n let isTouched = false;\n let isMoved = false;\n const touchesStart = {};\n let isScrolling;\n let $currentPageEl = [];\n let $previousPageEl = [];\n let viewContainerWidth;\n let touchesDiff;\n let allowViewTouchMove = true;\n let touchStartTime;\n let $currentNavbarEl = [];\n let $previousNavbarEl = [];\n let dynamicNavbar;\n let $pageShadowEl;\n let $pageOpacityEl;\n let animatableNavEls;\n const paramsSwipeBackAnimateShadow = params[`${app.theme}SwipeBackAnimateShadow`];\n const paramsSwipeBackAnimateOpacity = params[`${app.theme}SwipeBackAnimateOpacity`];\n const paramsSwipeBackActiveArea = params[`${app.theme}SwipeBackActiveArea`];\n const paramsSwipeBackThreshold = params[`${app.theme}SwipeBackThreshold`];\n const transformOrigin = app.rtl ? 'right center' : 'left center';\n const transformOriginTitleLarge = app.rtl ? 'calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center' : 'calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center';\n function animatableNavElements() {\n const els = [];\n const inverter = app.rtl ? -1 : 1;\n const currentNavIsTransparent = $currentNavbarEl.hasClass('navbar-transparent') && !$currentNavbarEl.hasClass('navbar-large') && !$currentNavbarEl.hasClass('navbar-transparent-visible');\n const currentNavIsLarge = $currentNavbarEl.hasClass('navbar-large');\n const currentNavIsCollapsed = $currentNavbarEl.hasClass('navbar-large-collapsed');\n const currentNavIsLargeTransparent = $currentNavbarEl.hasClass('navbar-large-transparent') || $currentNavbarEl.hasClass('navbar-large') && $currentNavbarEl.hasClass('navbar-transparent');\n const previousNavIsTransparent = $previousNavbarEl.hasClass('navbar-transparent') && !$previousNavbarEl.hasClass('navbar-large') && !$previousNavbarEl.hasClass('navbar-transparent-visible');\n const previousNavIsLarge = $previousNavbarEl.hasClass('navbar-large');\n const previousNavIsCollapsed = $previousNavbarEl.hasClass('navbar-large-collapsed');\n const previousNavIsLargeTransparent = $previousNavbarEl.hasClass('navbar-large-transparent') || $previousNavbarEl.hasClass('navbar-large') && $previousNavbarEl.hasClass('navbar-transparent');\n const fromLarge = currentNavIsLarge && !currentNavIsCollapsed;\n const toLarge = previousNavIsLarge && !previousNavIsCollapsed;\n const $currentNavElements = $currentNavbarEl.find('.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg');\n const $previousNavElements = $previousNavbarEl.find('.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg');\n let activeNavBackIconText;\n let previousNavBackIconText;\n if (params.iosAnimateNavbarBackIcon) {\n if ($currentNavbarEl.hasClass('sliding') || $currentNavbarEl.find('.navbar-inner.sliding').length) {\n activeNavBackIconText = $currentNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n activeNavBackIconText = $currentNavbarEl.find('.left.sliding').find('.back .icon + span').eq(0);\n }\n if ($previousNavbarEl.hasClass('sliding') || $previousNavbarEl.find('.navbar-inner.sliding').length) {\n previousNavBackIconText = $previousNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n previousNavBackIconText = $previousNavbarEl.find('.left.sliding').find('.back .icon + span').eq(0);\n }\n if (activeNavBackIconText.length) {\n $previousNavElements.each(el => {\n if (!$(el).hasClass('title')) return;\n el.f7NavbarLeftOffset += activeNavBackIconText.prev('.icon')[0].offsetWidth;\n });\n }\n }\n $currentNavElements.each(navEl => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && currentNavIsTransparent) return;\n if (!fromLarge && $navEl.hasClass('.title-large')) return;\n const el = {\n el: navEl\n };\n if (fromLarge) {\n if (isTitle) return;\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each(subNavEl => {\n els.push({\n el: subNavEl,\n transform: progress => `translateX(${progress * 100 * inverter}%)`\n });\n });\n return;\n }\n }\n if (toLarge) {\n if (!fromLarge) {\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = 0;\n }\n }\n if (isLeft) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = progress => 1 - progress ** 0.33;\n $navEl.find('.back span').each(subNavEl => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOrigin,\n transform: progress => `translateX(calc(${progress} * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(${progress} * (var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2))) scale(${1 + 1 * progress})`\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (currentNavIsCollapsed) {\n if (currentNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = progress => `translateX(${100 * progress * inverter}%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = progress => `translateX(${100 * progress * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = progress => `translateX(${100 * progress * inverter}%) translateY(calc(-1 * ${1 - progress} * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = progress => `translateX(${100 * progress * inverter}%)`;\n }\n if (fromLarge && !toLarge) {\n el.transform = progress => `translateX(${100 * progress * inverter}%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding = $navEl.hasClass('sliding') || $navEl.parents('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || isSubnavbar && !isSliding) {\n el.opacity = progress => 1 - progress ** 0.33;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && activeNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = {\n el: activeNavBackIconText[0]\n };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = progress => {\n let activeNavTranslate = progress * transformTarget.el.f7NavbarRightOffset;\n if (device.pixelRatio === 1) activeNavTranslate = Math.round(activeNavTranslate);\n if (isSubnavbar && currentNavIsLarge) {\n return `translate3d(${activeNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${activeNavTranslate}px,0,0)`;\n };\n }\n });\n $previousNavElements.each(navEl => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && previousNavIsTransparent) return;\n const el = {\n el: navEl\n };\n if (toLarge) {\n if (isTitle) return;\n if (els.indexOf(el) < 0) els.push(el);\n if ($navEl.hasClass('title-large')) {\n el.opacity = 1;\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each(subNavEl => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOriginTitleLarge,\n opacity: progress => progress ** 3,\n transform: progress => `translateX(calc(${1 - progress} * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(${progress - 1} * var(--f7-navbar-large-title-height) + ${1 - progress} * var(--f7-navbar-large-title-padding-vertical))) scale(${0.5 + progress * 0.5})`\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (previousNavIsCollapsed) {\n if (previousNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-1 * ${1 - progress} * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && !toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding = $navEl.hasClass('sliding') || $previousNavbarEl.children('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || isSubnavbar && !isSliding) {\n el.opacity = progress => progress ** 3;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && previousNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = {\n el: previousNavBackIconText[0]\n };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = progress => {\n let previousNavTranslate = transformTarget.el.f7NavbarLeftOffset * (1 - progress);\n if (device.pixelRatio === 1) previousNavTranslate = Math.round(previousNavTranslate);\n if (isSubnavbar && previousNavIsLarge) {\n return `translate3d(${previousNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${previousNavTranslate}px,0,0)`;\n };\n }\n });\n return els;\n }\n function setAnimatableNavElements(_temp) {\n let {\n progress,\n reset,\n transition,\n reflow\n } = _temp === void 0 ? {} : _temp;\n const styles = ['overflow', 'transform', 'transform-origin', 'opacity'];\n if (transition === true || transition === false) {\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (transition === true) el.el.classList.add('navbar-page-transitioning');\n if (transition === false) el.el.classList.remove('navbar-page-transitioning');\n }\n }\n }\n if (reflow && animatableNavEls.length && animatableNavEls[0] && animatableNavEls[0].el) {\n // eslint-disable-next-line\n animatableNavEls[0].el._clientLeft = animatableNavEls[0].el.clientLeft;\n }\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (el.className && !el.classNameSet && !reset) {\n el.el.classList.add(el.className);\n el.classNameSet = true;\n }\n if (el.className && reset) {\n el.el.classList.remove(el.className);\n }\n for (let j = 0; j < styles.length; j += 1) {\n const styleProp = styles[j];\n if (el[styleProp]) {\n if (reset) {\n el.el.style[styleProp] = '';\n } else if (typeof el[styleProp] === 'function') {\n el.el.style[styleProp] = el[styleProp](progress);\n } else {\n el.el.style[styleProp] = el[styleProp];\n }\n }\n }\n }\n }\n }\n function handleTouchStart(e) {\n if (!e.isTrusted) return;\n const swipeBackEnabled = params[`${app.theme}SwipeBack`];\n if (!allowViewTouchMove || !swipeBackEnabled || isTouched || app.swipeout && app.swipeout.el || !router.allowPageChange) return;\n if ($(e.target).closest('.range-slider, .calendar-months').length > 0) return;\n if ($(e.target).closest('.page-master, .page-master-detail').length > 0 && params.masterDetailBreakpoint > 0 && app.width >= params.masterDetailBreakpoint) return;\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = now();\n dynamicNavbar = router.dynamicNavbar;\n }\n function handleTouchMove(e) {\n if (!e.isTrusted) return;\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)) || pageX < touchesStart.x && !app.rtl || pageX > touchesStart.x && app.rtl;\n }\n if (isScrolling || e.f7PreventSwipeBack || app.preventSwipeBack) {\n isTouched = false;\n return;\n }\n if (!isMoved) {\n // Calc values during first move fired\n let cancel = false;\n const target = $(e.target);\n const swipeout = target.closest('.swipeout');\n if (swipeout.length > 0) {\n if (!app.rtl && swipeout.find('.swipeout-actions-left').length > 0) cancel = true;\n if (app.rtl && swipeout.find('.swipeout-actions-right').length > 0) cancel = true;\n }\n $currentPageEl = target.closest('.page');\n if ($currentPageEl.hasClass('no-swipeback') || target.closest('.no-swipeback, .card-opened').length > 0) cancel = true;\n $previousPageEl = $el.find('.page-previous');\n if ($previousPageEl.length > 1) {\n $previousPageEl = $previousPageEl.eq($previousPageEl.length - 1);\n }\n let notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n viewContainerWidth = $el.width();\n if (app.rtl) {\n notFromBorder = touchesStart.x < $el.offset().left - $el[0].scrollLeft + (viewContainerWidth - paramsSwipeBackActiveArea);\n } else {\n notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n }\n if (notFromBorder) cancel = true;\n if ($previousPageEl.length === 0 || $currentPageEl.length === 0) cancel = true;\n if (cancel) {\n isTouched = false;\n return;\n }\n if (paramsSwipeBackAnimateShadow) {\n $pageShadowEl = $currentPageEl.find('.page-shadow-effect');\n if ($pageShadowEl.length === 0) {\n $pageShadowEl = $('
          ');\n $currentPageEl.append($pageShadowEl);\n }\n }\n if (paramsSwipeBackAnimateOpacity) {\n $pageOpacityEl = $previousPageEl.find('.page-opacity-effect');\n if ($pageOpacityEl.length === 0) {\n $pageOpacityEl = $('
          ');\n $previousPageEl.append($pageOpacityEl);\n }\n }\n if (dynamicNavbar) {\n $currentNavbarEl = $navbarsEl.find('.navbar-current');\n $previousNavbarEl = $navbarsEl.find('.navbar-previous');\n if ($previousNavbarEl.length > 1) {\n $previousNavbarEl = $previousNavbarEl.eq($previousNavbarEl.length - 1);\n }\n animatableNavEls = animatableNavElements($previousNavbarEl, $currentNavbarEl);\n }\n\n // Close/Hide Any Picker\n if ($('.sheet.modal-in').length > 0 && app.sheet) {\n app.sheet.close($('.sheet.modal-in'));\n }\n }\n e.f7PreventSwipePanel = true;\n isMoved = true;\n app.preventSwipePanelBySwipeBack = true;\n e.preventDefault();\n\n // RTL inverter\n const inverter = app.rtl ? -1 : 1;\n\n // Touches diff\n touchesDiff = (pageX - touchesStart.x - paramsSwipeBackThreshold) * inverter;\n if (touchesDiff < 0) touchesDiff = 0;\n const percentage = Math.min(Math.max(touchesDiff / viewContainerWidth, 0), 1);\n\n // Swipe Back Callback\n const callbackData = {\n percentage,\n progress: percentage,\n currentPageEl: $currentPageEl[0],\n previousPageEl: $previousPageEl[0],\n currentNavbarEl: $currentNavbarEl[0],\n previousNavbarEl: $previousNavbarEl[0]\n };\n $el.trigger('swipeback:move', callbackData);\n router.emit('swipebackMove', callbackData);\n\n // Transform pages\n let currentPageTranslate = touchesDiff * inverter;\n let previousPageTranslate = (touchesDiff / 5 - viewContainerWidth / 5) * inverter;\n if (!app.rtl) {\n currentPageTranslate = Math.min(currentPageTranslate, viewContainerWidth);\n previousPageTranslate = Math.min(previousPageTranslate, 0);\n } else {\n currentPageTranslate = Math.max(currentPageTranslate, -viewContainerWidth);\n previousPageTranslate = Math.max(previousPageTranslate, 0);\n }\n if (device.pixelRatio === 1) {\n currentPageTranslate = Math.round(currentPageTranslate);\n previousPageTranslate = Math.round(previousPageTranslate);\n }\n router.swipeBackActive = true;\n $([$currentPageEl[0], $previousPageEl[0]]).addClass('page-swipeback-active');\n $currentPageEl.transform(`translate3d(${currentPageTranslate}px,0,0)`);\n if (paramsSwipeBackAnimateShadow) $pageShadowEl[0].style.opacity = 1 - 1 * percentage;\n if (app.theme === 'ios') {\n $previousPageEl.transform(`translate3d(${previousPageTranslate}px,0,0)`);\n }\n if (paramsSwipeBackAnimateOpacity) $pageOpacityEl[0].style.opacity = 1 - 1 * percentage;\n\n // Dynamic Navbars Animation\n if (!dynamicNavbar) return;\n setAnimatableNavElements({\n progress: percentage\n });\n }\n function handleTouchEnd(e) {\n if (!e.isTrusted) return;\n app.preventSwipePanelBySwipeBack = false;\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n router.swipeBackActive = false;\n const $pages = $([$currentPageEl[0], $previousPageEl[0]]);\n $pages.removeClass('page-swipeback-active');\n if (touchesDiff === 0) {\n $pages.transform('');\n if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();\n if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();\n if (dynamicNavbar) {\n setAnimatableNavElements({\n reset: true\n });\n }\n return;\n }\n const timeDiff = now() - touchStartTime;\n let pageChanged = false;\n // Swipe back to previous page\n if (timeDiff < 300 && touchesDiff > 10 || timeDiff >= 300 && touchesDiff > viewContainerWidth / 2) {\n $currentPageEl.removeClass('page-current').addClass(`page-next${app.theme !== 'ios' ? ' page-next-on-right' : ''}`);\n $previousPageEl.removeClass('page-previous').addClass('page-current').removeAttr('aria-hidden');\n if ($pageShadowEl) $pageShadowEl[0].style.opacity = '';\n if ($pageOpacityEl) $pageOpacityEl[0].style.opacity = '';\n if (dynamicNavbar) {\n router.setNavbarPosition($currentNavbarEl, 'next');\n router.setNavbarPosition($previousNavbarEl, 'current', false);\n }\n pageChanged = true;\n }\n // Reset custom styles\n // Add transitioning class for transition-duration\n $pages.addClass('page-transitioning page-transitioning-swipeback');\n if (device.ios) {\n // eslint-disable-next-line\n $currentPageEl[0]._clientLeft = $currentPageEl[0].clientLeft;\n }\n $pages.transform('');\n if (dynamicNavbar) {\n setAnimatableNavElements({\n progress: pageChanged ? 1 : 0,\n transition: true,\n reflow: !!device.ios\n });\n }\n allowViewTouchMove = false;\n router.allowPageChange = false;\n\n // Swipe Back Callback\n const callbackData = {\n currentPageEl: $currentPageEl[0],\n previousPageEl: $previousPageEl[0],\n currentNavbarEl: $currentNavbarEl[0],\n previousNavbarEl: $previousNavbarEl[0]\n };\n if (pageChanged) {\n // Update Route\n router.currentRoute = $previousPageEl[0].f7Page.route;\n router.currentPage = $previousPageEl[0];\n\n // Page before animation callback\n router.pageCallback('beforeOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {\n route: $currentPageEl[0].f7Page.route,\n swipeBack: true\n });\n router.pageCallback('beforeIn', $previousPageEl, $previousNavbarEl, 'previous', 'current', {\n route: $previousPageEl[0].f7Page.route,\n swipeBack: true\n }, $currentPageEl[0]);\n $el.trigger('swipeback:beforechange', callbackData);\n router.emit('swipebackBeforeChange', callbackData);\n } else {\n $el.trigger('swipeback:beforereset', callbackData);\n router.emit('swipebackBeforeReset', callbackData);\n }\n $currentPageEl.transitionEnd(() => {\n $pages.removeClass('page-transitioning page-transitioning-swipeback');\n if (dynamicNavbar) {\n setAnimatableNavElements({\n reset: true,\n transition: false\n });\n }\n allowViewTouchMove = true;\n router.allowPageChange = true;\n if (pageChanged) {\n // Update History\n if (router.history.length === 1) {\n router.history.unshift(router.url);\n }\n router.history.pop();\n router.saveHistory();\n\n // Update push state\n if (params.browserHistory) {\n History.back();\n }\n\n // Page after animation callback\n router.pageCallback('afterOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {\n route: $currentPageEl[0].f7Page.route,\n swipeBack: true\n });\n router.pageCallback('afterIn', $previousPageEl, $previousNavbarEl, 'previous', 'current', {\n route: $previousPageEl[0].f7Page.route,\n swipeBack: true\n });\n\n // Remove Old Page\n\n router.pageCallback('beforeRemove', $currentPageEl, $currentNavbarEl, 'next', {\n swipeBack: true\n });\n router.removePage($currentPageEl);\n if (dynamicNavbar) {\n router.removeNavbar($currentNavbarEl);\n }\n $el.trigger('swipeback:afterchange', callbackData);\n router.emit('swipebackAfterChange', callbackData);\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (params.preloadPreviousPage) {\n router.back(router.history[router.history.length - 2], {\n preload: true\n });\n }\n } else {\n $el.trigger('swipeback:afterreset', callbackData);\n router.emit('swipebackAfterReset', callbackData);\n }\n if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();\n if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();\n });\n }\n function attachEvents() {\n const passiveListener = app.touchEvents.start === 'touchstart' && support.passiveListener ? {\n passive: true,\n capture: false\n } : false;\n $el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n function detachEvents() {\n const passiveListener = app.touchEvents.start === 'touchstart' && support.passiveListener ? {\n passive: true,\n capture: false\n } : false;\n $el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n attachEvents();\n router.on('routerDestroy', detachEvents);\n}\nexport default SwipeBack;","import { extend } from '../../shared/utils.js';\nexport default function redirect(direction, route, options) {\n const router = this;\n const r = route.route.redirect;\n const method = direction === 'forward' ? 'navigate' : 'back';\n if (options.initial && router.params.browserHistory) {\n options.replaceState = true; // eslint-disable-line\n options.history = true; // eslint-disable-line\n }\n\n function redirectResolve(redirectUrl, redirectOptions) {\n if (redirectOptions === void 0) {\n redirectOptions = {};\n }\n router.allowPageChange = true;\n router[method](redirectUrl, extend({}, options, redirectOptions));\n }\n function redirectReject() {\n router.allowPageChange = true;\n }\n if (typeof r === 'function') {\n router.allowPageChange = false;\n const redirectUrl = r.call(router, {\n router,\n to: route,\n resolve: redirectResolve,\n reject: redirectReject,\n direction,\n app: router.app\n });\n if (redirectUrl && typeof redirectUrl === 'string') {\n router.allowPageChange = true;\n return router[method](redirectUrl, options);\n }\n return router;\n }\n return router[method](r, options);\n}","function processQueue(router, routerQueue, routeQueue, to, from, resolve, reject, direction) {\n const queue = [];\n if (Array.isArray(routeQueue)) {\n queue.push(...routeQueue);\n } else if (routeQueue && typeof routeQueue === 'function') {\n queue.push(routeQueue);\n }\n if (routerQueue) {\n if (Array.isArray(routerQueue)) {\n queue.push(...routerQueue);\n } else {\n queue.push(routerQueue);\n }\n }\n function next() {\n if (queue.length === 0) {\n resolve();\n return;\n }\n const queueItem = queue.shift();\n queueItem.call(router, {\n router,\n to,\n from,\n resolve() {\n next();\n },\n reject() {\n reject();\n },\n direction,\n app: router.app\n });\n }\n next();\n}\nexport default function processRouteQueue(to, from, resolve, reject, direction) {\n const router = this;\n function enterNextRoute() {\n if (to && to.route && (router.params.routesBeforeEnter || to.route.beforeEnter)) {\n router.allowPageChange = false;\n processQueue(router, router.params.routesBeforeEnter, to.route.beforeEnter, to, from, () => {\n router.allowPageChange = true;\n resolve();\n }, () => {\n reject();\n }, direction);\n } else {\n resolve();\n }\n }\n function leaveCurrentRoute() {\n if (from && from.route && (router.params.routesBeforeLeave || from.route.beforeLeave)) {\n router.allowPageChange = false;\n processQueue(router, router.params.routesBeforeLeave, from.route.beforeLeave, to, from, () => {\n router.allowPageChange = true;\n enterNextRoute();\n }, () => {\n reject();\n }, direction);\n } else {\n enterNextRoute();\n }\n }\n leaveCurrentRoute();\n}","export default function appRouterCheck(router, method) {\n if (!router.view) {\n throw new Error(`Framework7: it is not allowed to use router methods on global app router. Use router methods only on related View, e.g. app.views.main.router.${method}(...)`);\n }\n}","export default function asyncComponent(router, component, resolve, reject) {\n function resolvePromise(componentPromise) {\n componentPromise.then(c => {\n // eslint-disable-next-line\n resolve({\n component: c.default || c._default || c\n });\n }).catch(err => {\n reject();\n throw new Error(err, {\n cause: err\n });\n });\n }\n if (component instanceof Promise) {\n resolvePromise(component);\n return;\n }\n const asyncComponentResult = component.call(router);\n if (asyncComponentResult instanceof Promise) {\n resolvePromise(asyncComponentResult);\n } else {\n resolve({\n component: asyncComponentResult\n });\n }\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, parseUrlQuery } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport redirect from './redirect.js';\nimport processRouteQueue from './process-route-queue.js';\nimport appRouterCheck from './app-router-check.js';\nimport asyncComponent from './async-component.js';\nfunction refreshPage(props) {\n if (props === void 0) {\n props = {};\n }\n const router = this;\n appRouterCheck(router, 'refreshPage');\n return router.navigate(router.currentRoute.url, {\n ignoreCache: true,\n reloadCurrent: true,\n props\n });\n}\nfunction forward(router, el, forwardOptions) {\n if (forwardOptions === void 0) {\n forwardOptions = {};\n }\n const document = getDocument();\n const $el = $(el);\n const app = router.app;\n const view = router.view;\n const options = extend(false, {\n animate: router.params.animate,\n browserHistory: true,\n replaceState: false,\n history: true,\n reloadCurrent: router.params.reloadPages,\n reloadPrevious: false,\n reloadAll: false,\n clearPreviousHistory: false,\n reloadDetail: router.params.reloadDetail,\n on: {}\n }, forwardOptions);\n const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n const isMaster = masterDetailEnabled && options.route && options.route.route && (options.route.route.master === true || typeof options.route.route.master === 'function' && options.route.route.master(app, router));\n let masterPageEl;\n let otherDetailPageEl;\n let detailsInBetweenRemoved = 0;\n let currentRouteIsModal = router.currentRoute.modal;\n let modalType;\n if (!currentRouteIsModal) {\n 'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(modalLoadProp => {\n if (router.currentRoute && router.currentRoute.route && router.currentRoute.route[modalLoadProp]) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n if (currentRouteIsModal) {\n const modalToClose = router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n const previousUrl = router.history[router.history.length - 2];\n let previousRoute = router.findMatchingRoute(previousUrl);\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl\n }\n };\n }\n router.modalRemove(modalToClose);\n }\n const dynamicNavbar = router.dynamicNavbar;\n const $viewEl = router.$el;\n const $newPage = $el;\n const reload = options.reloadPrevious || options.reloadCurrent || options.reloadAll;\n let $oldPage;\n let $navbarsEl;\n let $newNavbarEl;\n let $oldNavbarEl;\n router.allowPageChange = false;\n if ($newPage.length === 0) {\n router.allowPageChange = true;\n return router;\n }\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n if (dynamicNavbar) {\n $newNavbarEl = $newPage.children('.navbar');\n $navbarsEl = router.$navbarsEl;\n if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n }\n }\n\n // Save Keep Alive Cache\n if (options.route && options.route.route && options.route.route.keepAlive && !options.route.route.keepAliveData) {\n options.route.route.keepAliveData = {\n pageEl: $el[0]\n };\n }\n\n // Pages In View\n const $pagesInView = $viewEl.children('.page').filter(pageInView => pageInView !== $newPage[0]);\n\n // Navbars In View\n let $navbarsInView;\n if (dynamicNavbar) {\n $navbarsInView = $navbarsEl.children('.navbar').filter(navbarInView => navbarInView !== $newNavbarEl[0]);\n }\n\n // Exit when reload previous and only 1 page in view so nothing ro reload\n if (options.reloadPrevious && $pagesInView.length < 2) {\n router.allowPageChange = true;\n return router;\n }\n\n // Find Detail' master page\n let isDetail;\n let reloadDetail;\n let isDetailRoot;\n if (masterDetailEnabled && !options.reloadAll) {\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {\n masterPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n\n isDetail = !isMaster && masterPageEl;\n if (isDetail) {\n // Find Other Detail\n if (masterPageEl) {\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if ($pagesInView[i].classList.contains('page-master-detail')) {\n otherDetailPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n }\n }\n\n reloadDetail = isDetail && options.reloadDetail && app.width >= router.params.masterDetailBreakpoint && masterPageEl;\n }\n if (isDetail) {\n isDetailRoot = !otherDetailPageEl || reloadDetail || options.reloadAll || options.reloadCurrent;\n }\n\n // New Page\n let newPagePosition = 'next';\n if (options.reloadCurrent || options.reloadAll || reloadDetail) {\n newPagePosition = 'current';\n } else if (options.reloadPrevious) {\n newPagePosition = 'previous';\n }\n $newPage.removeClass('page-previous page-current page-next').addClass(`page-${newPagePosition}${isMaster ? ' page-master' : ''}${isDetail ? ' page-master-detail' : ''}${isDetailRoot ? ' page-master-detail-root' : ''}`).trigger('page:unstack').trigger('page:position', {\n position: newPagePosition\n });\n router.emit('pageUnstack', $newPage[0]);\n router.emit('pagePosition', $newPage[0], newPagePosition);\n if (isMaster || isDetail) {\n $newPage.trigger('page:role', {\n role: isMaster ? 'master' : 'detail',\n root: !!isDetailRoot\n });\n router.emit('pageRole', $newPage[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot\n });\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n $newNavbarEl.removeClass('navbar-previous navbar-current navbar-next').addClass(`navbar-${newPagePosition}${isMaster ? ' navbar-master' : ''}${isDetail ? ' navbar-master-detail' : ''}${isDetailRoot ? ' navbar-master-detail-root' : ''}`);\n $newNavbarEl.trigger('navbar:position', {\n position: newPagePosition\n });\n router.emit('navbarPosition', $newNavbarEl[0], newPagePosition);\n if (isMaster || isDetail) {\n router.emit('navbarRole', $newNavbarEl[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot\n });\n }\n }\n\n // Find Old Page\n if (options.reloadCurrent || reloadDetail) {\n if (reloadDetail) {\n $oldPage = $pagesInView.filter(pageEl => !pageEl.classList.contains('page-master'));\n if (dynamicNavbar) {\n $oldNavbarEl = $($oldPage.map(pageEl => app.navbar.getElByPage(pageEl)));\n }\n if ($oldPage.length > 1 && masterPageEl) {\n detailsInBetweenRemoved = $oldPage.length - 1;\n $(masterPageEl).removeClass('page-master-stacked').trigger('page:masterunstack');\n router.emit('pageMasterUnstack', masterPageEl);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage(masterPageEl)).removeClass('navbar-master-stacked');\n router.emit('navbarMasterUnstack', app.navbar.getElByPage(masterPageEl));\n }\n }\n } else {\n $oldPage = $pagesInView.eq($pagesInView.length - 1);\n if (dynamicNavbar) {\n $oldNavbarEl = $(app.navbar.getElByPage($oldPage));\n }\n }\n } else if (options.reloadPrevious) {\n $oldPage = $pagesInView.eq($pagesInView.length - 2);\n if (dynamicNavbar) {\n // $oldNavbarEl = $navbarsInView.eq($pagesInView.length - 2);\n $oldNavbarEl = $(app.navbar.getElByPage($oldPage));\n }\n } else if (options.reloadAll) {\n $oldPage = $pagesInView.filter(pageEl => pageEl !== $newPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl = $navbarsInView.filter(navbarEl => navbarEl !== $newNavbarEl[0]);\n }\n } else {\n let removedPageEls = [];\n let removedNavbarEls = [];\n if ($pagesInView.length > 1) {\n let i = 0;\n for (i = 0; i < $pagesInView.length - 1; i += 1) {\n if (masterPageEl && $pagesInView[i] === masterPageEl) {\n $pagesInView.eq(i).addClass('page-master-stacked');\n $pagesInView.eq(i).trigger('page:masterstack');\n router.emit('pageMasterStack', $pagesInView[i]);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage(masterPageEl)).addClass('navbar-master-stacked');\n router.emit('navbarMasterStack', app.navbar.getElByPage(masterPageEl));\n }\n continue; // eslint-disable-line\n }\n\n const oldNavbarEl = app.navbar.getElByPage($pagesInView.eq(i));\n\n // Page remove event\n removedPageEls.push($pagesInView[i]);\n router.pageCallback('beforeRemove', $pagesInView[i], $navbarsInView && $navbarsInView[i], 'previous', undefined, options);\n router.removePage($pagesInView[i]);\n if (dynamicNavbar && oldNavbarEl) {\n removedNavbarEls.push(oldNavbarEl);\n router.removeNavbar(oldNavbarEl);\n }\n }\n }\n $oldPage = $viewEl.children('.page').filter(pageEl => pageEl !== $newPage[0] && removedPageEls.indexOf(pageEl) < 0);\n if (dynamicNavbar) {\n $oldNavbarEl = $navbarsEl.children('.navbar').filter(navbarEl => navbarEl !== $newNavbarEl[0] && removedNavbarEls.indexOf(removedNavbarEls) < 0);\n }\n removedPageEls = [];\n removedNavbarEls = [];\n }\n if (isDetail && !options.reloadAll) {\n if ($oldPage.length > 1 || reloadDetail) {\n $oldPage = $oldPage.filter(pageEl => !pageEl.classList.contains('page-master'));\n }\n if ($oldNavbarEl && ($oldNavbarEl.length > 1 || reloadDetail)) {\n $oldNavbarEl = $oldNavbarEl.filter(navbarEl => !navbarEl.classList.contains('navbar-master'));\n }\n }\n\n // Push State\n if (router.params.browserHistory && (options.browserHistory || options.replaceState) && !options.reloadPrevious) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History[options.reloadCurrent || reloadDetail && otherDetailPageEl || options.reloadAll || options.replaceState ? 'replace' : 'push'](view.id, {\n url: options.route.url\n }, browserHistoryRoot + router.params.browserHistorySeparator + options.route.url);\n }\n if (!options.reloadPrevious) {\n // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarEl.length) {\n router.currentNavbarEl = $newNavbarEl[0];\n } else {\n delete router.currentNavbarEl;\n }\n\n // Current Route\n router.currentRoute = options.route;\n }\n\n // Update router history\n const url = options.route.url;\n if (options.history) {\n if (((options.reloadCurrent || reloadDetail && otherDetailPageEl) && router.history.length) > 0 || options.replaceState) {\n if (reloadDetail && detailsInBetweenRemoved > 0) {\n router.history = router.history.slice(0, router.history.length - detailsInBetweenRemoved);\n router.propsHistory = router.propsHistory.slice(0, router.propsHistory.length - detailsInBetweenRemoved);\n }\n router.history[router.history.length - (options.reloadPrevious ? 2 : 1)] = url;\n router.propsHistory[router.propsHistory.length - (options.reloadPrevious ? 2 : 1)] = options.props || {};\n } else if (options.reloadPrevious) {\n router.history[router.history.length - 2] = url;\n router.propsHistory[router.propsHistory.length - 2] = options.props || {};\n } else if (options.reloadAll) {\n router.history = [url];\n router.propsHistory = [options.props || {}];\n } else {\n router.history.push(url);\n router.propsHistory.push(options.props || {});\n }\n }\n router.saveHistory();\n\n // Insert new page and navbar\n const newPageInDom = $newPage.parents(document).length > 0;\n const f7Component = $newPage[0].f7Component;\n if (options.reloadPrevious) {\n if (f7Component && !newPageInDom) {\n f7Component.mount(componentEl => {\n $(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n if ($oldNavbarEl.length) {\n $newNavbarEl.insertBefore($oldNavbarEl);\n } else {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl);\n }\n }\n } else {\n if ($oldPage.next('.page')[0] !== $newPage[0]) {\n if (f7Component && !newPageInDom) {\n f7Component.mount(componentEl => {\n $viewEl.append(componentEl);\n });\n } else {\n $viewEl.append($newPage[0]);\n }\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl[0]);\n }\n }\n if (!newPageInDom) {\n router.pageCallback('mounted', $newPage, $newNavbarEl, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);\n } else if (options.route && options.route.route && options.route.route.keepAlive && !$newPage[0].f7PageMounted) {\n $newPage[0].f7PageMounted = true;\n router.pageCallback('mounted', $newPage, $newNavbarEl, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);\n }\n\n // Remove old page\n if ((options.reloadCurrent || reloadDetail) && $oldPage.length > 0) {\n // Page remove event\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n } else if (options.reloadAll) {\n $oldPage.each((pageEl, index) => {\n const $oldPageEl = $(pageEl);\n const $oldNavbarElEl = $(app.navbar.getElByPage($oldPageEl));\n\n // Page remove event\n if ($oldPageEl.hasClass('page-current')) {\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n }\n router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarEl && $oldNavbarEl.eq(index), 'previous', undefined, options);\n router.removePage($oldPageEl);\n if (dynamicNavbar && $oldNavbarElEl.length) {\n router.removeNavbar($oldNavbarElEl);\n }\n });\n } else if (options.reloadPrevious) {\n // Page remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(options.route.route.tab, extend({}, options, {\n history: false,\n browserHistory: false\n }));\n }\n\n // Check master detail\n if (masterDetailEnabled) {\n view.checkMasterDetailBreakpoint();\n }\n\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);\n if (options.reloadCurrent || options.reloadAll || reloadDetail) {\n router.allowPageChange = true;\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);\n $newPage.removeAttr('aria-hidden');\n if (dynamicNavbar && $newNavbarEl) {\n $newNavbarEl.removeAttr('aria-hidden');\n }\n router.pageCallback('afterIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);\n if (options.reloadCurrent && options.clearPreviousHistory) router.clearPreviousHistory();\n if (reloadDetail) {\n router.setPagePosition($(masterPageEl), 'previous');\n if (masterPageEl.f7Page && masterPageEl.f7Page.navbarEl) {\n router.setNavbarPosition($(masterPageEl.f7Page.navbarEl), 'previous');\n }\n }\n return router;\n }\n if (options.reloadPrevious) {\n router.allowPageChange = true;\n return router;\n }\n\n // Before animation event\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'next', 'current', options);\n\n // Animation\n function afterAnimation() {\n router.setPagePosition($newPage, 'current', false);\n router.setPagePosition($oldPage, 'previous', !$oldPage.hasClass('page-master'));\n if (dynamicNavbar) {\n router.setNavbarPosition($newNavbarEl, 'current', false);\n router.setNavbarPosition($oldNavbarEl, 'previous', !$oldNavbarEl.hasClass('navbar-master'));\n }\n // After animation event\n router.allowPageChange = true;\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'next', 'current', options);\n let keepOldPage = (router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`]) && !isMaster;\n if (!keepOldPage) {\n if ($newPage.hasClass('smart-select-page') || $newPage.hasClass('photo-browser-page') || $newPage.hasClass('autocomplete-page') || $newPage.hasClass('color-picker-page')) {\n keepOldPage = true;\n }\n }\n if (!keepOldPage) {\n if (!($newPage.attr('data-name') && $newPage.attr('data-name') === 'smart-select-page')) {\n // Remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n }\n if (options.clearPreviousHistory) router.clearPreviousHistory();\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.browserHistory) {\n History.clearRouterQueue();\n }\n }\n function setPositionClasses() {\n router.setPagePosition($oldPage, 'current', false);\n router.setPagePosition($newPage, 'next', false);\n if (dynamicNavbar) {\n router.setNavbarPosition($oldNavbarEl, 'current', false);\n router.setNavbarPosition($newNavbarEl, 'next', false);\n }\n }\n if (options.animate && !(isMaster && app.width >= router.params.masterDetailBreakpoint)) {\n const delay = router.params[`${router.app.theme}PageLoadDelay`];\n let transition = router.params.transition;\n if (options.transition) transition = options.transition;\n if (!transition && router.currentRoute && router.currentRoute.route) {\n transition = router.currentRoute.route.transition;\n }\n if (!transition && router.currentRoute && router.currentRoute.route.options) {\n transition = router.currentRoute.route.options.transition;\n }\n if (transition) {\n $newPage[0].f7PageTransition = transition;\n }\n if (delay) {\n setTimeout(() => {\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'forward', transition, () => {\n afterAnimation();\n });\n }, delay);\n } else {\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'forward', transition, () => {\n afterAnimation();\n });\n }\n } else {\n afterAnimation();\n }\n return router;\n}\nfunction load(router, loadParams, loadOptions, ignorePageChange) {\n if (loadParams === void 0) {\n loadParams = {};\n }\n if (loadOptions === void 0) {\n loadOptions = {};\n }\n if (!router.allowPageChange && !ignorePageChange) return router;\n const params = loadParams;\n const options = loadOptions;\n const {\n url,\n content,\n el,\n pageName,\n component,\n componentUrl\n } = params;\n if (!options.reloadCurrent && options.route && options.route.route && options.route.route.parentPath && router.currentRoute.route && router.currentRoute.route.parentPath === options.route.route.parentPath) {\n // Do something nested\n if (options.route.url === router.url) {\n router.allowPageChange = true;\n return false;\n }\n // Check for same params\n let sameParams = Object.keys(options.route.params).length === Object.keys(router.currentRoute.params).length;\n if (sameParams) {\n // Check for equal params name\n Object.keys(options.route.params).forEach(paramName => {\n if (!(paramName in router.currentRoute.params) || router.currentRoute.params[paramName] !== options.route.params[paramName]) {\n sameParams = false;\n }\n });\n }\n if (sameParams) {\n if (options.route.route.tab) {\n return router.tabLoad(options.route.route.tab, options);\n }\n return false;\n }\n if (!sameParams && options.route.route.tab && router.currentRoute.route.tab && router.currentRoute.parentPath === options.route.parentPath) {\n return router.tabLoad(options.route.route.tab, options);\n }\n }\n if (options.route && options.route.url && router.url === options.route.url && !(options.reloadCurrent || options.reloadPrevious) && !router.params.allowDuplicateUrls) {\n router.allowPageChange = true;\n return false;\n }\n if (!options.route && url) {\n options.route = router.parseRouteUrl(url);\n extend(options.route, {\n route: {\n url,\n path: url\n }\n });\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return forward(router, pageEl, extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n if (url || componentUrl || component) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n forward(router, router.getPageEl(content), options);\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n forward(router, router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n forward(router, router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.pageComponentLoader({\n routerEl: router.el,\n component,\n componentUrl,\n options,\n resolve,\n reject\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router.xhrRequest(url, options).then(pageContent => {\n forward(router, router.getPageEl(pageContent), options);\n }).catch(() => {\n router.allowPageChange = true;\n });\n }\n return router;\n}\nfunction navigate(navigateParams, navigateOptions) {\n if (navigateOptions === void 0) {\n navigateOptions = {};\n }\n const router = this;\n if (router.swipeBackActive) return router;\n let url;\n let createRoute;\n let name;\n let path;\n let query;\n let params;\n let route;\n if (typeof navigateParams === 'string') {\n url = navigateParams;\n } else {\n url = navigateParams.url;\n createRoute = navigateParams.route;\n name = navigateParams.name;\n path = navigateParams.path;\n query = navigateParams.query;\n params = navigateParams.params;\n }\n if (name || path) {\n url = router.generateUrl({\n path,\n name,\n params,\n query\n });\n if (url) {\n return router.navigate(url, navigateOptions);\n }\n return router;\n }\n const app = router.app;\n appRouterCheck(router, 'navigate');\n if (url === '#' || url === '') {\n return router;\n }\n let navigateUrl = url.replace('./', '');\n if (navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n const currentPath = router.currentRoute.parentPath || router.currentRoute.path;\n navigateUrl = ((currentPath ? `${currentPath}/` : '/') + navigateUrl).replace('///', '/').replace('//', '/');\n }\n if (createRoute) {\n route = extend(router.parseRouteUrl(navigateUrl), {\n route: extend({}, createRoute)\n });\n } else {\n route = router.findMatchingRoute(navigateUrl);\n }\n if (!route) {\n return router;\n }\n if (route.route && route.route.viewName) {\n const anotherViewName = route.route.viewName;\n const anotherView = app.views[anotherViewName];\n if (!anotherView) {\n throw new Error(`Framework7: There is no View with \"${anotherViewName}\" name that was specified in this route`);\n }\n if (anotherView !== router.view) {\n return anotherView.router.navigate(navigateParams, navigateOptions);\n }\n }\n if (route.route.redirect) {\n return redirect.call(router, 'forward', route, navigateOptions);\n }\n const options = {};\n if (route.route.options) {\n extend(options, route.route.options, navigateOptions);\n } else {\n extend(options, navigateOptions);\n }\n if (options.openIn && (!router.params.ignoreOpenIn || router.params.ignoreOpenIn && router.history.length > 0)) {\n return router.openIn(router, navigateUrl, options);\n }\n options.route = route;\n function resolve() {\n let routerLoaded = false;\n 'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(modalLoadProp => {\n if (route.route[modalLoadProp] && !routerLoaded) {\n routerLoaded = true;\n router.modalLoad(modalLoadProp, route, options, 'forward');\n }\n });\n if (route.route.keepAlive && route.route.keepAliveData) {\n load(router, {\n el: route.route.keepAliveData.pageEl\n }, options, false);\n routerLoaded = true;\n }\n 'url content component pageName el componentUrl'.split(' ').forEach(pageLoadProp => {\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n load(router, {\n [pageLoadProp]: route.route[pageLoadProp]\n }, options, false);\n }\n });\n if (routerLoaded) return;\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n let resolvedAsModal = false;\n 'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(modalLoadProp => {\n if (resolveParams[modalLoadProp]) {\n resolvedAsModal = true;\n const modalRoute = extend({}, route, {\n route: resolveParams\n });\n router.allowPageChange = true;\n router.modalLoad(modalLoadProp, modalRoute, extend(options, resolveOptions), 'forward');\n }\n });\n if (resolvedAsModal) return;\n load(router, resolveParams, extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n route.route.async.call(router, {\n router,\n to: options.route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction: 'forward',\n app\n });\n }\n if (route.route.asyncComponent) {\n asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n if (router.params.masterDetailBreakpoint > 0 && route.route.masterRoute) {\n // load detail route\n let preloadMaster = true;\n let masterLoaded = false;\n if (router.currentRoute && router.currentRoute.route) {\n if ((router.currentRoute.route.master === true || typeof router.currentRoute.route.master === 'function' && router.currentRoute.route.master(app, router)) && (router.currentRoute.route === route.route.masterRoute || router.currentRoute.route.path === route.route.masterRoute.path)) {\n preloadMaster = false;\n }\n if (router.currentRoute.route.masterRoute && (router.currentRoute.route.masterRoute === route.route.masterRoute || router.currentRoute.route.masterRoute.path === route.route.masterRoute.path)) {\n preloadMaster = false;\n masterLoaded = true;\n }\n }\n if (preloadMaster || masterLoaded && navigateOptions.reloadAll) {\n router.navigate({\n path: route.route.masterRoute.path,\n params: route.params || {}\n }, {\n animate: false,\n reloadAll: navigateOptions.reloadAll,\n reloadCurrent: navigateOptions.reloadCurrent,\n reloadPrevious: navigateOptions.reloadPrevious,\n browserHistory: !navigateOptions.initial,\n history: !navigateOptions.initial,\n once: {\n pageAfterIn() {\n router.navigate(navigateParams, extend({}, navigateOptions, {\n animate: false,\n reloadAll: false,\n reloadCurrent: false,\n reloadPrevious: false,\n history: !navigateOptions.initial,\n browserHistory: !navigateOptions.initial\n }));\n }\n }\n });\n return router;\n }\n }\n processRouteQueue.call(router, route, router.currentRoute, () => {\n if (route.route.modules) {\n app.loadModules(Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules]).then(() => {\n resolve();\n }).catch(() => {\n reject();\n });\n } else {\n resolve();\n }\n }, () => {\n reject();\n }, 'forward');\n\n // Return Router\n return router;\n}\nexport { refreshPage, navigate };","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, parseUrlQuery } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport History from '../../shared/history.js';\nimport redirect from './redirect.js';\nimport processRouteQueue from './process-route-queue.js';\nimport appRouterCheck from './app-router-check.js';\nimport asyncComponent from './async-component.js';\nfunction backward(router, el, backwardOptions) {\n const device = getDevice();\n const document = getDocument();\n const $el = $(el);\n const app = router.app;\n const view = router.view;\n const options = extend(false, {\n animate: router.params.animate,\n browserHistory: true,\n replaceState: false\n }, backwardOptions);\n const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n const isMaster = masterDetailEnabled && options.route && options.route.route && (options.route.route.master === true || typeof options.route.route.master === 'function' && options.route.route.master(app, router));\n let masterPageEl;\n let masterPageRemoved;\n const dynamicNavbar = router.dynamicNavbar;\n const $newPage = $el;\n const $oldPage = router.$el.children('.page-current');\n const initialPreload = $oldPage.length === 0 && options.preload;\n const currentIsMaster = masterDetailEnabled && $oldPage.hasClass('page-master');\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n let $navbarsEl;\n let $newNavbarEl;\n let $oldNavbarEl;\n if (dynamicNavbar) {\n $newNavbarEl = $newPage.children('.navbar');\n $navbarsEl = router.$navbarsEl;\n if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n }\n $oldNavbarEl = $navbarsEl.find('.navbar-current');\n }\n router.allowPageChange = false;\n if ($newPage.length === 0 || $oldPage.length === 0 && !options.preload) {\n router.allowPageChange = true;\n return router;\n }\n\n // Remove theme elements\n router.removeThemeElements($newPage);\n\n // Save Keep Alive Cache\n if (options.route && options.route.route && options.route.route.keepAlive && !options.route.route.keepAliveData) {\n options.route.route.keepAliveData = {\n pageEl: $el[0]\n };\n }\n\n // Pages In View\n let isDetail;\n let isDetailRoot;\n if (masterDetailEnabled) {\n const $pagesInView = router.$el.children('.page').filter(pageInView => pageInView !== $newPage[0]);\n\n // Find Detail' master page\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {\n masterPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n\n isDetail = !isMaster && masterPageEl && router.history.indexOf(options.route.url) > router.history.indexOf(masterPageEl.f7Page.route.url);\n if (!isDetail && !isMaster && masterPageEl && masterPageEl.f7Page && options.route.route.masterRoute) {\n isDetail = options.route.route.masterRoute.path === masterPageEl.f7Page.route.route.path;\n }\n }\n if (isDetail && masterPageEl && masterPageEl.f7Page) {\n isDetailRoot = router.history.indexOf(options.route.url) - router.history.indexOf(masterPageEl.f7Page.route.url) === 1;\n }\n\n // New Page\n $newPage.addClass(`page-${initialPreload ? 'current' : 'previous'}${isMaster ? ' page-master' : ''}${isDetail ? ' page-master-detail' : ''}${isDetailRoot ? ' page-master-detail-root' : ''}`).removeAttr('aria-hidden').trigger('page:unstack').trigger('page:position', {\n position: initialPreload ? 'current' : 'previous'\n });\n router.emit('pageUnstack', $newPage[0]);\n router.emit('pagePosition', $newPage[0], initialPreload ? 'current' : 'previous');\n if (isMaster || isDetail) {\n $newPage.trigger('page:role', {\n role: isMaster ? 'master' : 'detail',\n root: !!isDetailRoot\n });\n router.emit('pageRole', $newPage[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot\n });\n }\n if (dynamicNavbar && $newNavbarEl.length > 0) {\n $newNavbarEl.addClass(`navbar-${initialPreload ? 'current' : 'previous'}${isMaster ? ' navbar-master' : ''}${isDetail ? ' navbar-master-detail' : ''}${isDetailRoot ? ' navbar-master-detail-root' : ''}`).removeAttr('aria-hidden');\n $newNavbarEl.trigger('navbar:position', {\n position: initialPreload ? 'current' : 'previous'\n });\n router.emit('navbarPosition', $newNavbarEl[0], initialPreload ? 'current' : 'previous');\n if (isMaster || isDetailRoot) {\n router.emit('navbarRole', $newNavbarEl[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot\n });\n }\n }\n\n // Remove previous page in case of \"forced\"\n let backIndex;\n if (options.force) {\n if ($oldPage.prev('.page-previous').length >= 0) {\n if (router.history.indexOf(options.route.url) >= 0) {\n backIndex = router.history.length - router.history.indexOf(options.route.url) - 1;\n router.history = router.history.slice(0, router.history.indexOf(options.route.url) + 2);\n router.propsHistory = router.propsHistory.slice(0, router.history.indexOf(options.route.url) + 2);\n view.history = router.history;\n } else if (router.history[[router.history.length - 2]]) {\n router.propsHistory[router.propsHistory.length - 2] = options.props || {};\n } else {\n router.history.unshift(router.url);\n router.propsHistory.unshift(options.props || {});\n }\n const $pageToRemove = $oldPage.prev('.page-previous');\n let $navbarToRemove;\n if (dynamicNavbar) {\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if ($pageToRemove.length > 0) {\n router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined, options);\n if ($pageToRemove[0] === masterPageEl) {\n masterPageRemoved = true;\n }\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\n }\n }\n }\n\n // Insert new page\n const newPageInDom = $newPage.parents(document).length > 0;\n const f7Component = $newPage[0].f7Component;\n function insertPage() {\n if (initialPreload) {\n if (!newPageInDom && f7Component) {\n f7Component.mount(componentEl => {\n router.$el.append(componentEl);\n });\n } else {\n router.$el.append($newPage);\n }\n }\n if ($newPage.next($oldPage).length === 0) {\n if (!newPageInDom && f7Component) {\n f7Component.mount(componentEl => {\n $(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n $newNavbarEl.insertBefore($oldNavbarEl);\n if ($oldNavbarEl.length > 0) {\n $newNavbarEl.insertBefore($oldNavbarEl);\n } else {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl);\n }\n }\n if (!newPageInDom) {\n router.pageCallback('mounted', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n } else if (options.route && options.route.route && options.route.route.keepAlive && !$newPage[0].f7PageMounted) {\n $newPage[0].f7PageMounted = true;\n router.pageCallback('mounted', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n }\n }\n if (options.preload) {\n // Insert Page\n insertPage();\n // Tab route\n if (options.route.route.tab) {\n router.tabLoad(options.route.route.tab, extend({}, options, {\n history: false,\n browserHistory: false,\n preload: true\n }));\n }\n if (isMaster) {\n $newPage.removeClass('page-master-stacked').trigger('page:masterunstack');\n router.emit('pageMasterUnstack', $newPage[0]);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage($newPage)).removeClass('navbar-master-stacked');\n router.emit('navbarMasterUnstack', app.navbar.getElByPage($newPage));\n }\n }\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n if (initialPreload) {\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'current', undefined, options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'current', undefined, options);\n }\n const $previousPages = $newPage.prevAll('.page-previous:not(.page-master)');\n if ($previousPages.length > 0) {\n $previousPages.each(pageToRemove => {\n const $pageToRemove = $(pageToRemove);\n let $navbarToRemove;\n if (dynamicNavbar) {\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined);\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\n });\n }\n router.allowPageChange = true;\n return router;\n }\n\n // History State\n if (!(device.ie || device.edge || device.firefox && !device.ios)) {\n if (router.params.browserHistory && options.browserHistory) {\n if (options.replaceState) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(view.id, {\n url: options.route.url\n }, browserHistoryRoot + router.params.browserHistorySeparator + options.route.url);\n } else if (backIndex) {\n History.go(-backIndex);\n } else {\n History.back();\n }\n }\n }\n\n // Update History\n if (options.replaceState) {\n router.history[router.history.length - 1] = options.route.url;\n router.propsHistory[router.propsHistory.length - 1] = options.props || {};\n } else {\n if (router.history.length === 1) {\n router.history.unshift(router.url);\n router.propsHistory.unshift(options.props || {});\n }\n router.history.pop();\n router.propsHistory.pop();\n }\n router.saveHistory();\n\n // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarEl.length) {\n router.currentNavbarEl = $newNavbarEl[0];\n } else {\n delete router.currentNavbarEl;\n }\n\n // Current Route\n router.currentRoute = options.route;\n\n // History State\n if (device.ie || device.edge || device.firefox && !device.ios) {\n if (router.params.browserHistory && options.browserHistory) {\n if (options.replaceState) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(view.id, {\n url: options.route.url\n }, browserHistoryRoot + router.params.browserHistorySeparator + options.route.url);\n } else if (backIndex) {\n History.go(-backIndex);\n } else {\n History.back();\n }\n }\n }\n\n // Insert Page\n insertPage();\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(options.route.route.tab, extend({}, options, {\n history: false,\n browserHistory: false\n }));\n }\n\n // Check master detail\n\n if (masterDetailEnabled && (currentIsMaster || masterPageRemoved)) {\n view.checkMasterDetailBreakpoint(false);\n }\n\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n\n // Before animation callback\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n // Animation\n function afterAnimation() {\n // Set classes\n router.setPagePosition($newPage, 'current', false);\n router.setPagePosition($oldPage, 'next', true);\n if (dynamicNavbar) {\n router.setNavbarPosition($newNavbarEl, 'current', false);\n router.setNavbarPosition($oldNavbarEl, 'next', true);\n }\n\n // After animation event\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n // Remove Old Page\n\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'next', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n router.allowPageChange = true;\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n // Preload previous page\n const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history[router.history.length - 2] && !isMaster) {\n router.back(router.history[router.history.length - 2], {\n preload: true,\n props: router.propsHistory[router.propsHistory.length - 2] || {}\n });\n }\n if (router.params.browserHistory) {\n History.clearRouterQueue();\n }\n }\n function setPositionClasses() {\n router.setPagePosition($oldPage, 'current');\n router.setPagePosition($newPage, 'previous', false);\n if (dynamicNavbar) {\n router.setNavbarPosition($oldNavbarEl, 'current');\n router.setNavbarPosition($newNavbarEl, 'previous', false);\n }\n }\n if (options.animate && !(currentIsMaster && app.width >= router.params.masterDetailBreakpoint)) {\n let transition = router.params.transition;\n if ($oldPage[0] && $oldPage[0].f7PageTransition) {\n transition = $oldPage[0].f7PageTransition;\n delete $oldPage[0].f7PageTransition;\n }\n if (options.transition) transition = options.transition;\n if (!transition && router.previousRoute && router.previousRoute.route) {\n transition = router.previousRoute.route.transition;\n }\n if (!transition && router.previousRoute && router.previousRoute.route && router.previousRoute.route.options) {\n transition = router.previousRoute.route.options.transition;\n }\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'backward', transition, () => {\n afterAnimation();\n });\n } else {\n afterAnimation();\n }\n return router;\n}\nfunction loadBack(router, backParams, backOptions, ignorePageChange) {\n if (!router.allowPageChange && !ignorePageChange) return router;\n const params = backParams;\n const options = backOptions;\n const {\n url,\n content,\n el,\n pageName,\n component,\n componentUrl\n } = params;\n if (options.route.url && router.url === options.route.url && !(options.reloadCurrent || options.reloadPrevious) && !router.params.allowDuplicateUrls) {\n router.allowPageChange = true;\n return false;\n }\n if (!options.route && url) {\n options.route = router.parseRouteUrl(url);\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return backward(router, pageEl, extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n if (url || componentUrl || component) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n backward(router, router.getPageEl(content), options);\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n backward(router, router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n backward(router, router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.pageComponentLoader({\n routerEl: router.el,\n component,\n componentUrl,\n options,\n resolve,\n reject\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router.xhrRequest(url, options).then(pageContent => {\n backward(router, router.getPageEl(pageContent), options);\n }).catch(() => {\n router.allowPageChange = true;\n });\n }\n return router;\n}\nfunction back() {\n const router = this;\n const device = getDevice();\n if (router.swipeBackActive) return router;\n let navigateUrl;\n let navigateOptions;\n let navigateProps;\n let route;\n if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'object') {\n navigateOptions = (arguments.length <= 0 ? undefined : arguments[0]) || {};\n } else {\n navigateUrl = arguments.length <= 0 ? undefined : arguments[0];\n navigateOptions = (arguments.length <= 1 ? undefined : arguments[1]) || {};\n }\n const {\n name,\n params,\n query\n } = navigateOptions;\n if (name) {\n navigateUrl = router.generateUrl({\n name,\n params,\n query\n });\n if (navigateUrl) {\n return router.back(navigateUrl, extend({}, navigateOptions, {\n name: null,\n params: null,\n query: null\n }));\n }\n return router;\n }\n const app = router.app;\n appRouterCheck(router, 'back');\n let currentRouteIsModal = router.currentRoute.modal;\n let modalType;\n if (!currentRouteIsModal) {\n 'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(modalLoadProp => {\n if (router.currentRoute.route[modalLoadProp]) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n if (currentRouteIsModal && !navigateOptions.preload) {\n const modalToClose = router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n const previousUrl = router.history[router.history.length - 2];\n let previousRoute;\n // check if previous route is modal too\n if (modalToClose && modalToClose.$el) {\n const prevOpenedModals = modalToClose.$el.prevAll('.modal-in');\n if (prevOpenedModals.length && prevOpenedModals[0].f7Modal) {\n const modalEl = prevOpenedModals[0];\n // check if current router not inside of the modalEl\n if (!router.$el.parents(modalEl).length) {\n previousRoute = modalEl.f7Modal.route;\n }\n }\n }\n if (!previousRoute) {\n previousRoute = router.findMatchingRoute(previousUrl);\n }\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl\n }\n };\n }\n if (!navigateUrl || navigateUrl.replace(/[# ]/g, '').trim().length === 0) {\n if (!previousRoute || !modalToClose) {\n return router;\n }\n }\n const forceOtherUrl = navigateOptions.force && previousRoute && navigateUrl;\n if (previousRoute && modalToClose) {\n const isBrokenBrowserHistory = device.ie || device.edge || device.firefox && !device.ios;\n const needHistoryBack = router.params.browserHistory && navigateOptions.browserHistory !== false;\n const currentRouteWithoutBrowserHistory = router.currentRoute && router.currentRoute.route && router.currentRoute.route.options && router.currentRoute.route.options.browserHistory === false;\n if (needHistoryBack && !isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {\n History.back();\n }\n router.currentRoute = previousRoute;\n router.history.pop();\n router.propsHistory.pop();\n router.saveHistory();\n if (needHistoryBack && isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {\n History.back();\n }\n router.modalRemove(modalToClose);\n if (forceOtherUrl) {\n router.navigate(navigateUrl, {\n reloadCurrent: true\n });\n }\n } else if (modalToClose) {\n router.modalRemove(modalToClose);\n if (navigateUrl) {\n router.navigate(navigateUrl, {\n reloadCurrent: true\n });\n }\n }\n return router;\n }\n let $previousPage = router.$el.children('.page-current').prevAll('.page-previous:not(.page-master)').eq(0);\n let skipMaster;\n if (router.params.masterDetailBreakpoint > 0) {\n const classes = [];\n router.$el.children('.page').each(pageEl => {\n classes.push(pageEl.className);\n });\n const $previousMaster = router.$el.children('.page-current').prevAll('.page-master').eq(0);\n if ($previousMaster.length) {\n const expectedPreviousPageUrl = router.history[router.history.length - 2];\n const expectedPreviousPageRoute = router.findMatchingRoute(expectedPreviousPageUrl);\n if (expectedPreviousPageRoute && $previousMaster[0].f7Page && expectedPreviousPageRoute.route === $previousMaster[0].f7Page.route.route) {\n $previousPage = $previousMaster;\n if (!navigateOptions.preload) {\n skipMaster = app.width >= router.params.masterDetailBreakpoint;\n }\n }\n }\n }\n if (!navigateOptions.force && $previousPage.length && !skipMaster) {\n if (router.params.browserHistory && $previousPage[0].f7Page && router.history[router.history.length - 2] !== $previousPage[0].f7Page.route.url) {\n router.back(router.history[router.history.length - 2], extend(navigateOptions, {\n force: true,\n props: router.propsHistory[router.propsHistory.length - 2] || {}\n }));\n return router;\n }\n const previousPageRoute = $previousPage[0].f7Page.route;\n processRouteQueue.call(router, previousPageRoute, router.currentRoute, () => {\n loadBack(router, {\n el: $previousPage\n }, extend(navigateOptions, {\n route: previousPageRoute\n }));\n }, () => {}, 'backward');\n return router;\n }\n\n // Navigate URL\n if (navigateUrl === '#') {\n navigateUrl = undefined;\n }\n if (navigateUrl && navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n navigateUrl = ((router.path || '/') + navigateUrl).replace('//', '/');\n }\n if (!navigateUrl && router.history.length > 1) {\n navigateUrl = router.history[router.history.length - 2];\n navigateProps = router.propsHistory[router.propsHistory.length - 2] || {};\n }\n if (skipMaster && !navigateOptions.force && router.history[router.history.length - 3]) {\n return router.back(router.history[router.history.length - 3], extend({}, navigateOptions || {}, {\n force: true,\n animate: false,\n props: router.propsHistory[router.propsHistory.length - 3] || {}\n }));\n }\n if (skipMaster && !navigateOptions.force) {\n return router;\n }\n\n // Find route to load\n route = router.findMatchingRoute(navigateUrl);\n if (!route) {\n if (navigateUrl) {\n route = {\n url: navigateUrl,\n path: navigateUrl.split('?')[0],\n query: parseUrlQuery(navigateUrl),\n route: {\n path: navigateUrl.split('?')[0],\n url: navigateUrl\n }\n };\n }\n }\n if (!route) {\n return router;\n }\n if (route.route.redirect) {\n return redirect.call(router, 'backward', route, navigateOptions);\n }\n const options = {};\n if (route.route.options) {\n extend(options, route.route.options, navigateOptions, {\n props: navigateProps || {}\n });\n } else {\n extend(options, navigateOptions, {\n props: navigateProps || {}\n });\n }\n options.route = route;\n function resolve() {\n let routerLoaded = false;\n if (route.route.keepAlive && route.route.keepAliveData) {\n loadBack(router, {\n el: route.route.keepAliveData.pageEl\n }, options);\n routerLoaded = true;\n }\n 'url content component pageName el componentUrl'.split(' ').forEach(pageLoadProp => {\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n loadBack(router, {\n [pageLoadProp]: route.route[pageLoadProp]\n }, options);\n }\n });\n if (routerLoaded) return;\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n loadBack(router, resolveParams, extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n route.route.async.call(router, {\n router,\n to: route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction: 'backward',\n app\n });\n }\n if (route.route.asyncComponent) {\n asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n if (options.preload) {\n resolve();\n } else {\n processRouteQueue.call(router, route, router.currentRoute, () => {\n if (route.route.modules) {\n app.loadModules(Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules]).then(() => {\n resolve();\n }).catch(() => {\n reject();\n });\n } else {\n resolve();\n }\n }, () => {\n reject();\n }, 'backward');\n }\n\n // Return Router\n return router;\n}\nexport { back };","import { getWindow, getDocument } from 'ssr-window';\nimport { pathToRegexp, compile } from 'path-to-regexp';\nimport $ from '../../shared/dom7.js';\nimport Framework7Class from '../../shared/class.js';\nimport { extend, nextFrame, parseUrlQuery, serializeObject, now, eventNameToColonCase } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport SwipeBack from './swipe-back.js';\nimport { refreshPage, navigate } from './navigate.js';\nimport { tabLoad, tabRemove } from './tab.js';\nimport { modalLoad, modalRemove } from './modal.js';\nimport { back } from './back.js';\nimport { clearPreviousHistory } from './clear-previous-history.js';\nimport appRouterCheck from './app-router-check.js';\nclass Router extends Framework7Class {\n constructor(app, view) {\n super({}, [typeof view === 'undefined' ? app : view]);\n const router = this;\n\n // Is App Router\n router.isAppRouter = typeof view === 'undefined';\n if (router.isAppRouter) {\n // App Router\n extend(false, router, {\n app,\n params: app.params.view,\n routes: app.routes || [],\n cache: app.cache\n });\n } else {\n // View Router\n extend(false, router, {\n app,\n view,\n viewId: view.id,\n id: view.params.routerId,\n params: view.params,\n routes: view.routes,\n history: view.history,\n propsHistory: [],\n scrollHistory: view.scrollHistory,\n cache: app.cache,\n dynamicNavbar: app.theme === 'ios' && view.params.iosDynamicNavbar,\n initialPages: [],\n initialNavbars: []\n });\n }\n\n // Install Modules\n router.useModules();\n\n // AllowPageChage\n router.allowPageChange = true;\n\n // Current Route\n let currentRoute = {};\n let previousRoute = {};\n Object.defineProperty(router, 'currentRoute', {\n enumerable: true,\n configurable: true,\n set(newRoute) {\n if (newRoute === void 0) {\n newRoute = {};\n }\n previousRoute = extend({}, currentRoute);\n currentRoute = newRoute;\n if (!currentRoute) return;\n router.url = currentRoute.url;\n router.emit('routeChange', newRoute, previousRoute, router);\n },\n get() {\n return currentRoute;\n }\n });\n Object.defineProperty(router, 'previousRoute', {\n enumerable: true,\n configurable: true,\n get() {\n return previousRoute;\n },\n set(newRoute) {\n previousRoute = newRoute;\n }\n });\n return router;\n }\n mount() {\n const router = this;\n const view = router.view;\n const document = getDocument();\n extend(false, router, {\n tempDom: document.createElement('div'),\n $el: view.$el,\n el: view.el,\n $navbarsEl: view.$navbarsEl,\n navbarsEl: view.navbarsEl\n });\n router.emit('local::mount routerMount', router);\n }\n animatableNavElements($newNavbarEl, $oldNavbarEl, toLarge, fromLarge, direction) {\n const router = this;\n const dynamicNavbar = router.dynamicNavbar;\n const animateIcon = router.params.iosAnimateNavbarBackIcon;\n let newNavEls;\n let oldNavEls;\n function animatableNavEl($el, $navbarInner) {\n const isSliding = $el.hasClass('sliding') || $navbarInner.hasClass('sliding');\n const isSubnavbar = $el.hasClass('subnavbar');\n const needsOpacityTransition = isSliding ? !isSubnavbar : true;\n const $iconEl = $el.find('.back .icon');\n let isIconLabel;\n if (isSliding && animateIcon && $el.hasClass('left') && $iconEl.length > 0 && $iconEl.next('span').length) {\n $el = $iconEl.next('span'); // eslint-disable-line\n isIconLabel = true;\n }\n return {\n $el,\n isIconLabel,\n leftOffset: $el[0].f7NavbarLeftOffset,\n rightOffset: $el[0].f7NavbarRightOffset,\n isSliding,\n isSubnavbar,\n needsOpacityTransition\n };\n }\n if (dynamicNavbar) {\n newNavEls = [];\n oldNavEls = [];\n $newNavbarEl.children('.navbar-inner').children('.left, .right, .title, .subnavbar').each(navEl => {\n const $navEl = $(navEl);\n if ($navEl.hasClass('left') && fromLarge && direction === 'forward') return;\n if ($navEl.hasClass('title') && toLarge) return;\n newNavEls.push(animatableNavEl($navEl, $newNavbarEl.children('.navbar-inner')));\n });\n if (!($oldNavbarEl.hasClass('navbar-master') && router.params.masterDetailBreakpoint > 0 && router.app.width >= router.params.masterDetailBreakpoint)) {\n $oldNavbarEl.children('.navbar-inner').children('.left, .right, .title, .subnavbar').each(navEl => {\n const $navEl = $(navEl);\n if ($navEl.hasClass('left') && toLarge && !fromLarge && direction === 'forward') return;\n if ($navEl.hasClass('left') && toLarge && direction === 'backward') return;\n if ($navEl.hasClass('title') && fromLarge) {\n return;\n }\n oldNavEls.push(animatableNavEl($navEl, $oldNavbarEl.children('.navbar-inner')));\n });\n }\n [oldNavEls, newNavEls].forEach(navEls => {\n navEls.forEach(navEl => {\n const n = navEl;\n const {\n isSliding,\n $el\n } = navEl;\n const otherEls = navEls === oldNavEls ? newNavEls : oldNavEls;\n if (!(isSliding && $el.hasClass('title') && otherEls)) return;\n otherEls.forEach(otherNavEl => {\n if (otherNavEl.isIconLabel) {\n const iconTextEl = otherNavEl.$el[0];\n n.leftOffset += iconTextEl ? iconTextEl.offsetLeft || 0 : 0;\n }\n });\n });\n });\n }\n return {\n newNavEls,\n oldNavEls\n };\n }\n animate($oldPageEl, $newPageEl, $oldNavbarEl, $newNavbarEl, direction, transition, callback) {\n const router = this;\n if (router.params.animateCustom) {\n router.params.animateCustom.apply(router, [$oldPageEl, $newPageEl, $oldNavbarEl, $newNavbarEl, direction, callback]);\n return;\n }\n const dynamicNavbar = router.dynamicNavbar;\n const ios = router.app.theme === 'ios';\n if (transition) {\n const routerCustomTransitionClass = `router-transition-custom router-transition-${transition}-${direction}`;\n // Animate\n const onCustomTransitionDone = () => {\n router.$el.removeClass(routerCustomTransitionClass);\n if (dynamicNavbar && router.$navbarsEl.length) {\n if ($newNavbarEl) {\n router.$navbarsEl.prepend($newNavbarEl);\n }\n if ($oldNavbarEl) {\n router.$navbarsEl.prepend($oldNavbarEl);\n }\n }\n if (callback) callback();\n };\n (direction === 'forward' ? $newPageEl : $oldPageEl).animationEnd(onCustomTransitionDone);\n if (dynamicNavbar) {\n if ($newNavbarEl && $newPageEl) {\n router.setNavbarPosition($newNavbarEl, '');\n $newNavbarEl.removeClass('navbar-next navbar-previous navbar-current');\n $newPageEl.prepend($newNavbarEl);\n }\n if ($oldNavbarEl && $oldPageEl) {\n router.setNavbarPosition($oldNavbarEl, '');\n $oldNavbarEl.removeClass('navbar-next navbar-previous navbar-current');\n $oldPageEl.prepend($oldNavbarEl);\n }\n }\n router.$el.addClass(routerCustomTransitionClass);\n return;\n }\n\n // Router Animation class\n const routerTransitionClass = `router-transition-${direction} router-transition`;\n let newNavEls;\n let oldNavEls;\n let fromLarge;\n let toLarge;\n let toDifferent;\n let oldIsLarge;\n let newIsLarge;\n if (ios && dynamicNavbar) {\n const betweenMasterAndDetail = router.params.masterDetailBreakpoint > 0 && router.app.width >= router.params.masterDetailBreakpoint && ($oldNavbarEl.hasClass('navbar-master') && $newNavbarEl.hasClass('navbar-master-detail') || $oldNavbarEl.hasClass('navbar-master-detail') && $newNavbarEl.hasClass('navbar-master'));\n if (!betweenMasterAndDetail) {\n oldIsLarge = $oldNavbarEl && $oldNavbarEl.hasClass('navbar-large');\n newIsLarge = $newNavbarEl && $newNavbarEl.hasClass('navbar-large');\n fromLarge = oldIsLarge && !$oldNavbarEl.hasClass('navbar-large-collapsed');\n toLarge = newIsLarge && !$newNavbarEl.hasClass('navbar-large-collapsed');\n toDifferent = fromLarge && !toLarge || toLarge && !fromLarge;\n }\n const navEls = router.animatableNavElements($newNavbarEl, $oldNavbarEl, toLarge, fromLarge, direction);\n newNavEls = navEls.newNavEls;\n oldNavEls = navEls.oldNavEls;\n }\n function animateNavbars(progress) {\n if (!(ios && dynamicNavbar)) return;\n if (progress === 1) {\n if (toLarge) {\n $newNavbarEl.addClass('router-navbar-transition-to-large');\n $oldNavbarEl.addClass('router-navbar-transition-to-large');\n }\n if (fromLarge) {\n $newNavbarEl.addClass('router-navbar-transition-from-large');\n $oldNavbarEl.addClass('router-navbar-transition-from-large');\n }\n }\n newNavEls.forEach(navEl => {\n const $el = navEl.$el;\n const offset = direction === 'forward' ? navEl.rightOffset : navEl.leftOffset;\n if (navEl.isSliding) {\n if (navEl.isSubnavbar && newIsLarge) {\n // prettier-ignore\n $el[0].style.setProperty('transform', `translate3d(${offset * (1 - progress)}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`, 'important');\n } else {\n $el.transform(`translate3d(${offset * (1 - progress)}px,0,0)`);\n }\n }\n });\n oldNavEls.forEach(navEl => {\n const $el = navEl.$el;\n const offset = direction === 'forward' ? navEl.leftOffset : navEl.rightOffset;\n if (navEl.isSliding) {\n if (navEl.isSubnavbar && oldIsLarge) {\n $el.transform(`translate3d(${offset * progress}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`);\n } else {\n $el.transform(`translate3d(${offset * progress}px,0,0)`);\n }\n }\n });\n }\n\n // AnimationEnd Callback\n function onDone() {\n if (router.dynamicNavbar) {\n if ($newNavbarEl) {\n $newNavbarEl.removeClass('router-navbar-transition-to-large router-navbar-transition-from-large');\n $newNavbarEl.addClass('navbar-no-title-large-transition');\n nextFrame(() => {\n $newNavbarEl.removeClass('navbar-no-title-large-transition');\n });\n }\n if ($oldNavbarEl) {\n $oldNavbarEl.removeClass('router-navbar-transition-to-large router-navbar-transition-from-large');\n }\n if ($newNavbarEl.hasClass('sliding') || $newNavbarEl.children('.navbar-inner.sliding').length) {\n $newNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n } else {\n $newNavbarEl.find('.sliding').transform('');\n }\n if ($oldNavbarEl.hasClass('sliding') || $oldNavbarEl.children('.navbar-inner.sliding').length) {\n $oldNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n } else {\n $oldNavbarEl.find('.sliding').transform('');\n }\n }\n router.$el.removeClass(routerTransitionClass);\n if (callback) callback();\n }\n\n // eslint-disable-next-line\n (direction === 'forward' ? $newPageEl : ios ? $oldPageEl : $newPageEl).animationEnd(() => {\n onDone();\n });\n\n // Animate\n if (dynamicNavbar) {\n // Prepare Navbars\n animateNavbars(0);\n nextFrame(() => {\n // Add class, start animation\n router.$el.addClass(routerTransitionClass);\n if (toDifferent) {\n // eslint-disable-next-line\n router.el._clientLeft = router.el.clientLeft;\n }\n animateNavbars(1);\n });\n } else {\n // Add class, start animation\n router.$el.addClass(routerTransitionClass);\n }\n }\n removeModal(modalEl) {\n const router = this;\n router.removeEl(modalEl);\n }\n // eslint-disable-next-line\n removeTabContent(tabEl) {\n const $tabEl = $(tabEl);\n $tabEl.html('');\n }\n removeNavbar(el) {\n const router = this;\n router.removeEl(el);\n }\n removePage(el) {\n const $el = $(el);\n const f7Page = $el && $el[0] && $el[0].f7Page;\n const router = this;\n if (f7Page && f7Page.route && f7Page.route.route && f7Page.route.route.keepAlive) {\n $el.remove();\n return;\n }\n router.removeEl(el);\n }\n removeEl(el) {\n if (!el) return;\n const router = this;\n const $el = $(el);\n if ($el.length === 0) return;\n $el.find('.tab').each(tabEl => {\n $(tabEl).children().each(tabChild => {\n if (tabChild.f7Component) {\n $(tabChild).trigger('tab:beforeremove');\n tabChild.f7Component.destroy();\n }\n });\n });\n if ($el[0].f7Component && $el[0].f7Component.destroy) {\n $el[0].f7Component.destroy();\n }\n if (!router.params.removeElements) {\n return;\n }\n if (router.params.removeElementsWithTimeout) {\n setTimeout(() => {\n $el.remove();\n }, router.params.removeElementsTimeout);\n } else {\n $el.remove();\n }\n }\n getPageEl(content) {\n const router = this;\n if (typeof content === 'string') {\n router.tempDom.innerHTML = content;\n } else {\n if ($(content).hasClass('page')) {\n return content;\n }\n router.tempDom.innerHTML = '';\n $(router.tempDom).append(content);\n }\n return router.findElement('.page', router.tempDom);\n }\n findElement(stringSelector, container) {\n const router = this;\n const view = router.view;\n const app = router.app;\n\n // Modals Selector\n const modalsSelector = '.popup, .dialog, .popover, .actions-modal, .sheet-modal, .login-screen, .page';\n const $container = $(container);\n const selector = stringSelector;\n let found = $container.find(selector).filter(el => $(el).parents(modalsSelector).length === 0);\n if (found.length > 1) {\n if (typeof view.selector === 'string') {\n // Search in related view\n found = $container.find(`${view.selector} ${selector}`);\n }\n if (found.length > 1) {\n // Search in main view\n found = $container.find(`.${app.params.viewMainClass} ${selector}`);\n }\n }\n if (found.length === 1) return found;\n found = router.findElement(selector, $container);\n if (found && found.length === 1) return found;\n if (found && found.length > 1) return $(found[0]);\n return undefined;\n }\n flattenRoutes(routes) {\n if (routes === void 0) {\n routes = this.routes;\n }\n const router = this;\n let flattenedRoutes = [];\n routes.forEach(route => {\n let hasTabRoutes = false;\n if ('tabs' in route && route.tabs) {\n const mergedPathsRoutes = route.tabs.map(tabRoute => {\n const tRoute = extend({}, route, {\n path: `${route.path}/${tabRoute.path}`.replace('///', '/').replace('//', '/'),\n parentPath: route.path,\n tab: tabRoute\n });\n delete tRoute.tabs;\n delete tRoute.routes;\n return tRoute;\n });\n hasTabRoutes = true;\n flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));\n }\n if ('detailRoutes' in route) {\n const mergedPathsRoutes = route.detailRoutes.map(detailRoute => {\n const dRoute = extend({}, detailRoute);\n dRoute.masterRoute = route;\n dRoute.masterRoutePath = route.path;\n return dRoute;\n });\n flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(mergedPathsRoutes));\n }\n if ('routes' in route) {\n const mergedPathsRoutes = route.routes.map(childRoute => {\n const cRoute = extend({}, childRoute);\n cRoute.path = `${route.path}/${cRoute.path}`.replace('///', '/').replace('//', '/');\n return cRoute;\n });\n if (hasTabRoutes) {\n flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));\n } else {\n flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(mergedPathsRoutes));\n }\n }\n if (!('routes' in route) && !('tabs' in route && route.tabs) && !('detailRoutes' in route)) {\n flattenedRoutes.push(route);\n }\n });\n return flattenedRoutes;\n }\n\n // eslint-disable-next-line\n parseRouteUrl(url) {\n if (!url) return {};\n const query = parseUrlQuery(url);\n const hash = url.split('#')[1];\n const params = {};\n const path = url.split('#')[0].split('?')[0];\n return {\n query,\n hash,\n params,\n url,\n path\n };\n }\n generateUrl(parameters) {\n if (parameters === void 0) {\n parameters = {};\n }\n if (typeof parameters === 'string') {\n return parameters;\n }\n const {\n name,\n path,\n params,\n query\n } = parameters;\n if (!name && !path) {\n throw new Error('Framework7: \"name\" or \"path\" parameter is required');\n }\n const router = this;\n const route = name ? router.findRouteByKey('name', name) : router.findRouteByKey('path', path);\n if (!route) {\n if (name) {\n throw new Error(`Framework7: route with name \"${name}\" not found`);\n } else {\n throw new Error(`Framework7: route with path \"${path}\" not found`);\n }\n }\n const url = router.constructRouteUrl(route, {\n params,\n query\n });\n if (url === '') {\n return '/';\n }\n if (!url) {\n throw new Error(`Framework7: can't construct URL for route with name \"${name}\"`);\n }\n return url;\n }\n\n // eslint-disable-next-line\n constructRouteUrl(route, _temp) {\n let {\n params,\n query\n } = _temp === void 0 ? {} : _temp;\n const {\n path\n } = route;\n const toUrl = compile(path);\n let url;\n try {\n url = toUrl(params || {});\n } catch (error) {\n throw new Error(`Framework7: error constructing route URL from passed params:\\nRoute: ${path}\\n${error.toString()}`);\n }\n if (query) {\n if (typeof query === 'string') url += `?${query}`;else if (Object.keys(query).length) url += `?${serializeObject(query)}`;\n }\n return url;\n }\n findTabRouteUrl(tabEl) {\n const router = this;\n const $tabEl = $(tabEl);\n const parentPath = router.currentRoute.route.parentPath;\n const tabId = $tabEl.attr('id');\n const flattenedRoutes = router.flattenRoutes(router.routes);\n let foundTabRouteUrl;\n flattenedRoutes.forEach(route => {\n if (route.parentPath === parentPath && route.tab && route.tab.id === tabId) {\n if (router.currentRoute.params && Object.keys(router.currentRoute.params).length > 0) {\n foundTabRouteUrl = router.constructRouteUrl(route, {\n params: router.currentRoute.params,\n query: router.currentRoute.query\n });\n } else {\n foundTabRouteUrl = route.path;\n }\n }\n });\n return foundTabRouteUrl;\n }\n findRouteByKey(key, value) {\n const router = this;\n const routes = router.routes;\n const flattenedRoutes = router.flattenRoutes(routes);\n let matchingRoute;\n flattenedRoutes.forEach(route => {\n if (matchingRoute) return;\n if (route[key] === value) {\n matchingRoute = route;\n }\n });\n return matchingRoute;\n }\n findMatchingRoute(url) {\n if (!url) return undefined;\n const router = this;\n const routes = router.routes;\n const flattenedRoutes = router.flattenRoutes(routes);\n const {\n path,\n query,\n hash,\n params\n } = router.parseRouteUrl(url);\n let matchingRoute;\n flattenedRoutes.forEach(route => {\n if (matchingRoute) return;\n const keys = [];\n const pathsToMatch = [route.path || '/'];\n if (route.alias) {\n if (typeof route.alias === 'string') pathsToMatch.push(route.alias);else if (Array.isArray(route.alias)) {\n route.alias.forEach(aliasPath => {\n pathsToMatch.push(aliasPath);\n });\n }\n }\n let matched;\n pathsToMatch.forEach(pathToMatch => {\n if (matched) return;\n matched = pathToRegexp(pathToMatch, keys).exec(path || '/');\n });\n if (matched) {\n keys.forEach((keyObj, index) => {\n if (typeof keyObj.name === 'number') return;\n const paramValue = matched[index + 1];\n if (typeof paramValue === 'undefined' || paramValue === null) {\n params[keyObj.name] = paramValue;\n } else {\n params[keyObj.name] = decodeURIComponent(paramValue);\n }\n });\n let parentPath;\n if (route.parentPath) {\n parentPath = (path || '/').split('/').slice(0, route.parentPath.split('/').length - 1).join('/');\n }\n matchingRoute = {\n query,\n hash,\n params,\n url,\n path: path || '/',\n parentPath,\n route,\n name: route.name\n };\n }\n });\n return matchingRoute;\n }\n\n // eslint-disable-next-line\n replaceRequestUrlParams(url, options) {\n if (url === void 0) {\n url = '';\n }\n if (options === void 0) {\n options = {};\n }\n let compiledUrl = url;\n if (typeof compiledUrl === 'string' && compiledUrl.indexOf('{{') >= 0 && options && options.route && options.route.params && Object.keys(options.route.params).length) {\n Object.keys(options.route.params).forEach(paramName => {\n const regExp = new RegExp(`{{${paramName}}}`, 'g');\n compiledUrl = compiledUrl.replace(regExp, options.route.params[paramName] || '');\n });\n }\n return compiledUrl;\n }\n removeFromXhrCache(url) {\n const router = this;\n const xhrCache = router.cache.xhr;\n let index = false;\n for (let i = 0; i < xhrCache.length; i += 1) {\n if (xhrCache[i].url === url) index = i;\n }\n if (index !== false) xhrCache.splice(index, 1);\n }\n xhrRequest(requestUrl, options) {\n const router = this;\n const params = router.params;\n const {\n ignoreCache\n } = options;\n let url = requestUrl;\n let hasQuery = url.indexOf('?') >= 0;\n if (params.passRouteQueryToRequest && options && options.route && options.route.query && Object.keys(options.route.query).length) {\n url += `${hasQuery ? '&' : '?'}${serializeObject(options.route.query)}`;\n hasQuery = true;\n }\n if (params.passRouteParamsToRequest && options && options.route && options.route.params && Object.keys(options.route.params).length) {\n url += `${hasQuery ? '&' : '?'}${serializeObject(options.route.params)}`;\n hasQuery = true;\n }\n if (url.indexOf('{{') >= 0) {\n url = router.replaceRequestUrlParams(url, options);\n }\n // should we ignore get params or not\n if (params.xhrCacheIgnoreGetParameters && url.indexOf('?') >= 0) {\n url = url.split('?')[0];\n }\n return new Promise((resolve, reject) => {\n if (params.xhrCache && !ignoreCache && url.indexOf('nocache') < 0 && params.xhrCacheIgnore.indexOf(url) < 0) {\n for (let i = 0; i < router.cache.xhr.length; i += 1) {\n const cachedUrl = router.cache.xhr[i];\n if (cachedUrl.url === url) {\n // Check expiration\n if (now() - cachedUrl.time < params.xhrCacheDuration) {\n // Load from cache\n resolve(cachedUrl.content);\n return;\n }\n }\n }\n }\n router.xhrAbortController = new AbortController();\n let fetchRes;\n fetch(url, {\n signal: router.xhrAbortController.signal,\n method: 'GET'\n }).then(res => {\n fetchRes = res;\n return res.text();\n }).then(responseText => {\n const {\n status\n } = fetchRes;\n router.emit('routerAjaxComplete', fetchRes);\n if (status !== 'error' && status !== 'timeout' && status >= 200 && status < 300 || status === 0) {\n if (params.xhrCache && responseText !== '') {\n router.removeFromXhrCache(url);\n router.cache.xhr.push({\n url,\n time: now(),\n content: responseText\n });\n }\n router.emit('routerAjaxSuccess', fetchRes, options);\n resolve(responseText);\n } else {\n router.emit('routerAjaxError', fetchRes, options);\n reject(fetchRes);\n }\n }).catch(err => {\n reject(err);\n });\n });\n }\n setNavbarPosition($el, position, ariaHidden) {\n const router = this;\n $el.removeClass('navbar-previous navbar-current navbar-next');\n if (position) {\n $el.addClass(`navbar-${position}`);\n }\n if (ariaHidden === false) {\n $el.removeAttr('aria-hidden');\n } else if (ariaHidden === true) {\n $el.attr('aria-hidden', 'true');\n }\n $el.trigger('navbar:position', {\n position\n });\n router.emit('navbarPosition', $el[0], position);\n }\n setPagePosition($el, position, ariaHidden) {\n const router = this;\n $el.removeClass('page-previous page-current page-next');\n $el.addClass(`page-${position}`);\n if (ariaHidden === false) {\n $el.removeAttr('aria-hidden');\n } else if (ariaHidden === true) {\n $el.attr('aria-hidden', 'true');\n }\n $el.trigger('page:position', {\n position\n });\n router.emit('pagePosition', $el[0], position);\n }\n\n // Remove theme elements\n removeThemeElements(el) {\n const router = this;\n const theme = router.app.theme;\n let toRemove;\n if (theme === 'ios') {\n toRemove = '.md-only, .if-md, .if-not-ios, .not-ios';\n } else if (theme === 'md') {\n toRemove = '.ios-only, .if-ios, .if-not-md, .not-md';\n }\n $(el).find(toRemove).remove();\n }\n getPageData(pageEl, navbarEl, from, to, route, pageFromEl) {\n if (route === void 0) {\n route = {};\n }\n const router = this;\n const $pageEl = $(pageEl).eq(0);\n const $navbarEl = $(navbarEl).eq(0);\n const currentPage = $pageEl[0].f7Page || {};\n let direction;\n let pageFrom;\n if (from === 'next' && to === 'current' || from === 'current' && to === 'previous') direction = 'forward';\n if (from === 'current' && to === 'next' || from === 'previous' && to === 'current') direction = 'backward';\n if (currentPage && !currentPage.fromPage) {\n const $pageFromEl = $(pageFromEl);\n if ($pageFromEl.length) {\n pageFrom = $pageFromEl[0].f7Page;\n }\n }\n pageFrom = currentPage.pageFrom || pageFrom;\n if (pageFrom && pageFrom.pageFrom) {\n pageFrom.pageFrom = null;\n }\n const page = {\n app: router.app,\n view: router.view,\n router,\n $el: $pageEl,\n el: $pageEl[0],\n $pageEl,\n pageEl: $pageEl[0],\n $navbarEl,\n navbarEl: $navbarEl[0],\n name: $pageEl.attr('data-name'),\n position: from,\n from,\n to,\n direction,\n route: currentPage.route ? currentPage.route : route,\n pageFrom\n };\n $pageEl[0].f7Page = page;\n return page;\n }\n\n // Callbacks\n pageCallback(callback, pageEl, navbarEl, from, to, options, pageFromEl) {\n if (options === void 0) {\n options = {};\n }\n if (!pageEl) return;\n const router = this;\n const $pageEl = $(pageEl);\n if (!$pageEl.length) return;\n const $navbarEl = $(navbarEl);\n const {\n route\n } = options;\n const restoreScrollTopOnBack = router.params.restoreScrollTopOnBack && !(router.params.masterDetailBreakpoint > 0 && $pageEl.hasClass('page-master') && router.app.width >= router.params.masterDetailBreakpoint);\n const keepAlive = $pageEl[0].f7Page && $pageEl[0].f7Page.route && $pageEl[0].f7Page.route.route && $pageEl[0].f7Page.route.route.keepAlive;\n if (callback === 'beforeRemove' && keepAlive) {\n callback = 'beforeUnmount'; // eslint-disable-line\n }\n\n const camelName = `page${callback[0].toUpperCase() + callback.slice(1, callback.length)}`;\n const colonName = `page:${callback.toLowerCase()}`;\n let page = {};\n if (callback === 'beforeRemove' && $pageEl[0].f7Page) {\n page = extend($pageEl[0].f7Page, {\n from,\n to,\n position: from\n });\n } else {\n page = router.getPageData($pageEl[0], $navbarEl[0], from, to, route, pageFromEl);\n }\n page.swipeBack = !!options.swipeBack;\n const {\n on = {},\n once = {}\n } = options.route ? options.route.route : {};\n if (options.on) {\n extend(on, options.on);\n }\n if (options.once) {\n extend(once, options.once);\n }\n function attachEvents() {\n if ($pageEl[0].f7RouteEventsAttached) return;\n $pageEl[0].f7RouteEventsAttached = true;\n if (on && Object.keys(on).length > 0) {\n $pageEl[0].f7RouteEventsOn = on;\n Object.keys(on).forEach(eventName => {\n on[eventName] = on[eventName].bind(router);\n $pageEl.on(eventNameToColonCase(eventName), on[eventName]);\n });\n }\n if (once && Object.keys(once).length > 0) {\n $pageEl[0].f7RouteEventsOnce = once;\n Object.keys(once).forEach(eventName => {\n once[eventName] = once[eventName].bind(router);\n $pageEl.once(eventNameToColonCase(eventName), once[eventName]);\n });\n }\n }\n function detachEvents() {\n if (!$pageEl[0].f7RouteEventsAttached) return;\n if ($pageEl[0].f7RouteEventsOn) {\n Object.keys($pageEl[0].f7RouteEventsOn).forEach(eventName => {\n $pageEl.off(eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOn[eventName]);\n });\n }\n if ($pageEl[0].f7RouteEventsOnce) {\n Object.keys($pageEl[0].f7RouteEventsOnce).forEach(eventName => {\n $pageEl.off(eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOnce[eventName]);\n });\n }\n $pageEl[0].f7RouteEventsAttached = null;\n $pageEl[0].f7RouteEventsOn = null;\n $pageEl[0].f7RouteEventsOnce = null;\n delete $pageEl[0].f7RouteEventsAttached;\n delete $pageEl[0].f7RouteEventsOn;\n delete $pageEl[0].f7RouteEventsOnce;\n }\n if (callback === 'mounted') {\n attachEvents();\n }\n if (callback === 'init') {\n if (restoreScrollTopOnBack && (from === 'previous' || !from) && to === 'current' && router.scrollHistory[page.route.url] && !$pageEl.hasClass('no-restore-scroll')) {\n let $pageContent = $pageEl.find('.page-content');\n if ($pageContent.length > 0) {\n // eslint-disable-next-line\n $pageContent = $pageContent.filter(pageContentEl => {\n return $(pageContentEl).parents('.tab:not(.tab-active)').length === 0 && !$(pageContentEl).is('.tab:not(.tab-active)');\n });\n }\n $pageContent.scrollTop(router.scrollHistory[page.route.url]);\n }\n attachEvents();\n if ($pageEl[0].f7PageInitialized) {\n $pageEl.trigger('page:reinit', page);\n router.emit('pageReinit', page);\n return;\n }\n $pageEl[0].f7PageInitialized = true;\n }\n if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'previous') {\n // Save scroll position\n let $pageContent = $pageEl.find('.page-content');\n if ($pageContent.length > 0) {\n // eslint-disable-next-line\n $pageContent = $pageContent.filter(pageContentEl => {\n return $(pageContentEl).parents('.tab:not(.tab-active)').length === 0 && !$(pageContentEl).is('.tab:not(.tab-active)');\n });\n }\n router.scrollHistory[page.route.url] = $pageContent.scrollTop();\n }\n if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'next') {\n // Delete scroll position\n delete router.scrollHistory[page.route.url];\n }\n $pageEl.trigger(colonName, page);\n router.emit(camelName, page);\n if (callback === 'beforeRemove' || callback === 'beforeUnmount') {\n detachEvents();\n if (!keepAlive) {\n if ($pageEl[0].f7Page && $pageEl[0].f7Page.navbarEl) {\n delete $pageEl[0].f7Page.navbarEl.f7Page;\n }\n $pageEl[0].f7Page = null;\n }\n }\n }\n saveHistory() {\n const router = this;\n const window = getWindow();\n router.view.history = router.history;\n if (router.params.browserHistory && router.params.browserHistoryStoreHistory && window.localStorage) {\n window.localStorage[`f7router-${router.view.id}-history`] = JSON.stringify(router.history);\n }\n }\n restoreHistory() {\n const router = this;\n const window = getWindow();\n if (router.params.browserHistory && router.params.browserHistoryStoreHistory && window.localStorage && window.localStorage[`f7router-${router.view.id}-history`]) {\n router.history = JSON.parse(window.localStorage[`f7router-${router.view.id}-history`]);\n router.view.history = router.history;\n }\n }\n clearHistory() {\n const router = this;\n router.history = [];\n if (router.view) router.view.history = [];\n router.saveHistory();\n }\n updateCurrentUrl(newUrl) {\n const router = this;\n appRouterCheck(router, 'updateCurrentUrl');\n // Update history\n if (router.history.length) {\n router.history[router.history.length - 1] = newUrl;\n } else {\n router.history.push(newUrl);\n }\n\n // Update current route params\n const {\n query,\n hash,\n params,\n url,\n path\n } = router.parseRouteUrl(newUrl);\n if (router.currentRoute) {\n extend(router.currentRoute, {\n query,\n hash,\n params,\n url,\n path\n });\n }\n if (router.params.browserHistory) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(router.view.id, {\n url: newUrl\n }, browserHistoryRoot + router.params.browserHistorySeparator + newUrl);\n }\n\n // Save History\n router.saveHistory();\n router.emit('routeUrlUpdate', router.currentRoute, router);\n }\n getInitialUrl() {\n const router = this;\n if (router.initialUrl) {\n return {\n initialUrl: router.initialUrl,\n historyRestored: router.historyRestored\n };\n }\n const {\n app,\n view\n } = router;\n const document = getDocument();\n const window = getWindow();\n const location = app.params.url && typeof app.params.url === 'string' && typeof URL !== 'undefined' ? new URL(app.params.url) : document.location;\n let initialUrl = router.params.url;\n let documentUrl = location.href.split(location.origin)[1];\n let historyRestored;\n const {\n browserHistory,\n browserHistoryOnLoad,\n browserHistorySeparator\n } = router.params;\n let {\n browserHistoryRoot\n } = router.params;\n if ((window.cordova || window.Capacitor && window.Capacitor.isNative) && browserHistory && !browserHistorySeparator && !browserHistoryRoot && location.pathname.indexOf('index.html')) {\n // eslint-disable-next-line\n console.warn('Framework7: wrong or not complete browserHistory configuration, trying to guess browserHistoryRoot');\n browserHistoryRoot = location.pathname.split('index.html')[0];\n }\n if (!browserHistory || !browserHistoryOnLoad) {\n if (!initialUrl) {\n initialUrl = documentUrl;\n }\n if (location.search && initialUrl.indexOf('?') < 0) {\n initialUrl += location.search;\n }\n if (location.hash && initialUrl.indexOf('#') < 0) {\n initialUrl += location.hash;\n }\n } else {\n if (browserHistoryRoot && documentUrl.indexOf(browserHistoryRoot) >= 0) {\n documentUrl = documentUrl.substring(documentUrl.indexOf(browserHistoryRoot) + browserHistoryRoot.length);\n if (documentUrl === '') documentUrl = '/';\n }\n if (browserHistorySeparator.length > 0 && documentUrl.indexOf(browserHistorySeparator) >= 0) {\n initialUrl = documentUrl.substring(documentUrl.indexOf(browserHistorySeparator) + browserHistorySeparator.length);\n } else {\n initialUrl = documentUrl;\n }\n router.restoreHistory();\n if (router.history.indexOf(initialUrl) >= 0) {\n router.history = router.history.slice(0, router.history.indexOf(initialUrl) + 1);\n } else if (router.params.url === initialUrl) {\n router.history = [initialUrl];\n } else if (History.state && History.state[view.id] && History.state[view.id].url === router.history[router.history.length - 1]) {\n initialUrl = router.history[router.history.length - 1];\n } else {\n router.history = [documentUrl.split(browserHistorySeparator)[0] || '/', initialUrl];\n }\n if (router.history.length > 1) {\n historyRestored = true;\n } else {\n router.history = [];\n }\n router.saveHistory();\n }\n router.initialUrl = initialUrl;\n router.historyRestored = historyRestored;\n return {\n initialUrl,\n historyRestored\n };\n }\n init() {\n const router = this;\n const {\n app,\n view\n } = router;\n const document = getDocument();\n router.mount();\n const {\n initialUrl,\n historyRestored\n } = router.getInitialUrl();\n\n // Init Swipeback\n if (view && router.params.iosSwipeBack && app.theme === 'ios' || view && router.params.mdSwipeBack && app.theme === 'md') {\n SwipeBack(router);\n }\n const {\n browserHistory,\n browserHistoryOnLoad,\n browserHistoryAnimateOnLoad,\n browserHistoryInitialMatch\n } = router.params;\n let currentRoute;\n if (router.history.length > 1) {\n // Will load page\n const initUrl = browserHistoryInitialMatch ? initialUrl : router.history[0];\n currentRoute = router.findMatchingRoute(initUrl);\n if (!currentRoute) {\n currentRoute = extend(router.parseRouteUrl(initUrl), {\n route: {\n url: initUrl,\n path: initUrl.split('?')[0]\n }\n });\n }\n } else {\n // Don't load page\n currentRoute = router.findMatchingRoute(initialUrl);\n if (!currentRoute) {\n currentRoute = extend(router.parseRouteUrl(initialUrl), {\n route: {\n url: initialUrl,\n path: initialUrl.split('?')[0]\n }\n });\n }\n }\n if (router.$el.children('.page').length === 0 && initialUrl && router.params.loadInitialPage) {\n // No pages presented in DOM, reload new page\n router.navigate(initialUrl, {\n initial: true,\n reloadCurrent: true,\n browserHistory: false,\n animate: false,\n once: {\n modalOpen() {\n if (!historyRestored) return;\n const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 1) {\n router.back({\n preload: true\n });\n }\n },\n pageAfterIn() {\n if (!historyRestored) return;\n const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 1) {\n router.back({\n preload: true\n });\n }\n }\n }\n });\n } else if (router.$el.children('.page').length) {\n // Init current DOM page\n let hasTabRoute;\n router.currentRoute = currentRoute;\n router.$el.children('.page').each(pageEl => {\n const $pageEl = $(pageEl);\n let $navbarEl;\n router.setPagePosition($pageEl, 'current');\n if (router.dynamicNavbar) {\n $navbarEl = $pageEl.children('.navbar');\n if ($navbarEl.length > 0) {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n router.setNavbarPosition($navbarEl, 'current');\n router.$navbarsEl.append($navbarEl);\n if ($navbarEl.children('.title-large').length) {\n $navbarEl.addClass('navbar-large');\n }\n $pageEl.children('.navbar').remove();\n } else {\n router.$navbarsEl.addClass('navbar-hidden');\n if ($navbarEl.children('.title-large').length) {\n router.$navbarsEl.addClass('navbar-hidden navbar-large-hidden');\n }\n }\n }\n if (router.currentRoute && router.currentRoute.route && (router.currentRoute.route.master === true || typeof router.currentRoute.route.master === 'function' && router.currentRoute.route.master(app, router)) && router.params.masterDetailBreakpoint > 0) {\n $pageEl.addClass('page-master');\n $pageEl.trigger('page:role', {\n role: 'master'\n });\n if ($navbarEl && $navbarEl.length) {\n $navbarEl.addClass('navbar-master');\n }\n view.checkMasterDetailBreakpoint();\n }\n const initOptions = {\n route: router.currentRoute\n };\n if (router.currentRoute && router.currentRoute.route && router.currentRoute.route.options) {\n extend(initOptions, router.currentRoute.route.options);\n }\n router.currentPageEl = $pageEl[0];\n if (router.dynamicNavbar && $navbarEl.length) {\n router.currentNavbarEl = $navbarEl[0];\n }\n router.removeThemeElements($pageEl);\n if (router.dynamicNavbar && $navbarEl.length) {\n router.removeThemeElements($navbarEl);\n }\n if (initOptions.route.route.tab) {\n hasTabRoute = true;\n router.tabLoad(initOptions.route.route.tab, extend({}, initOptions));\n }\n router.pageCallback('init', $pageEl, $navbarEl, 'current', undefined, initOptions);\n router.pageCallback('beforeIn', $pageEl, $navbarEl, 'current', undefined, initOptions);\n router.pageCallback('afterIn', $pageEl, $navbarEl, 'current', undefined, initOptions);\n });\n if (historyRestored) {\n if (browserHistoryInitialMatch) {\n const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 1) {\n router.back({\n preload: true\n });\n }\n } else {\n router.navigate(initialUrl, {\n initial: true,\n browserHistory: false,\n history: false,\n animate: browserHistoryAnimateOnLoad,\n once: {\n pageAfterIn() {\n const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 2) {\n router.back({\n preload: true\n });\n }\n }\n }\n });\n }\n }\n if (!historyRestored && !hasTabRoute) {\n router.history.push(initialUrl);\n router.saveHistory();\n }\n }\n if (initialUrl && browserHistory && browserHistoryOnLoad && (!History.state || !History.state[view.id])) {\n History.initViewState(view.id, {\n url: initialUrl\n });\n }\n router.emit('local::init routerInit', router);\n }\n destroy() {\n let router = this;\n router.emit('local::destroy routerDestroy', router);\n\n // Delete props & methods\n Object.keys(router).forEach(routerProp => {\n router[routerProp] = null;\n delete router[routerProp];\n });\n router = null;\n }\n}\n\n// Load\nRouter.prototype.navigate = navigate;\nRouter.prototype.refreshPage = refreshPage;\n// Tab\nRouter.prototype.tabLoad = tabLoad;\nRouter.prototype.tabRemove = tabRemove;\n// Modal\nRouter.prototype.modalLoad = modalLoad;\nRouter.prototype.modalRemove = modalRemove;\n// Back\nRouter.prototype.back = back;\n// Clear history\nRouter.prototype.clearPreviousHistory = clearPreviousHistory;\nexport default Router;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport asyncComponent from './async-component.js';\nfunction tabLoad(tabRoute, loadOptions) {\n if (loadOptions === void 0) {\n loadOptions = {};\n }\n const router = this;\n const options = extend({\n animate: router.params.animate,\n browserHistory: true,\n history: true,\n parentPageEl: null,\n preload: false,\n on: {}\n }, loadOptions);\n let currentRoute;\n let previousRoute;\n if (options.route) {\n // Set Route\n if (!options.preload && options.route !== router.currentRoute) {\n previousRoute = router.previousRoute;\n router.currentRoute = options.route;\n }\n if (options.preload) {\n currentRoute = options.route;\n previousRoute = router.currentRoute;\n } else {\n currentRoute = router.currentRoute;\n if (!previousRoute) previousRoute = router.previousRoute;\n }\n\n // Update Browser History\n if (router.params.browserHistory && options.browserHistory && !options.reloadPrevious) {\n History[router.params.browserHistoryTabs](router.view.id, {\n url: options.route.url\n }, (router.params.browserHistoryRoot || '') + router.params.browserHistorySeparator + options.route.url);\n }\n\n // Update Router History\n if (options.history) {\n router.history[Math.max(router.history.length - 1, 0)] = options.route.url;\n router.saveHistory();\n }\n }\n\n // Show Tab\n const $parentPageEl = $(options.parentPageEl || router.currentPageEl);\n let tabEl;\n if ($parentPageEl.length && $parentPageEl.find(`#${tabRoute.id}`).length) {\n tabEl = $parentPageEl.find(`#${tabRoute.id}`).eq(0);\n } else if (router.view.selector) {\n tabEl = `${router.view.selector} #${tabRoute.id}`;\n } else {\n tabEl = `#${tabRoute.id}`;\n }\n const tabShowResult = router.app.tab.show({\n tabEl,\n animate: options.animate,\n tabRoute: options.route\n });\n const {\n $newTabEl,\n $oldTabEl,\n animated,\n onTabsChanged\n } = tabShowResult;\n if ($newTabEl && $newTabEl.parents('.page').length > 0 && options.route) {\n const tabParentPageData = $newTabEl.parents('.page')[0].f7Page;\n if (tabParentPageData && options.route) {\n tabParentPageData.route = options.route;\n }\n }\n\n // Tab Content Loaded\n function onTabLoaded(contentEl) {\n // Remove theme elements\n router.removeThemeElements($newTabEl);\n let tabEventTarget = $newTabEl;\n if (typeof contentEl !== 'string') tabEventTarget = $(contentEl);\n tabEventTarget.trigger('tab:init tab:mounted', tabRoute);\n router.emit('tabInit tabMounted', $newTabEl[0], tabRoute);\n if ($oldTabEl && $oldTabEl.length) {\n if (animated) {\n onTabsChanged(() => {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n }\n }\n }\n if ($newTabEl[0].f7RouterTabLoaded) {\n if (!$oldTabEl || !$oldTabEl.length) return router;\n if (animated) {\n onTabsChanged(() => {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n }\n return router;\n }\n\n // Load Tab Content\n function loadTab(loadTabParams, loadTabOptions) {\n // Load Tab Props\n const {\n url,\n content,\n el,\n component,\n componentUrl\n } = loadTabParams;\n // Component/Template Callbacks\n function resolve(contentEl) {\n router.allowPageChange = true;\n if (!contentEl) return;\n if (typeof contentEl === 'string') {\n $newTabEl.html(contentEl);\n } else {\n $newTabEl.html('');\n if (contentEl.f7Component) {\n contentEl.f7Component.mount(componentEl => {\n $newTabEl.append(componentEl);\n });\n } else {\n $newTabEl.append(contentEl);\n }\n }\n $newTabEl[0].f7RouterTabLoaded = true;\n onTabLoaded(contentEl);\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n if (content) {\n resolve(content);\n } else if (el) {\n resolve(el);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.tabComponentLoader({\n tabEl: $newTabEl[0],\n component,\n componentUrl,\n options: loadTabOptions,\n resolve,\n reject\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router.xhrRequest(url, loadTabOptions).then(tabContent => {\n resolve(tabContent);\n }).catch(() => {\n router.allowPageChange = true;\n });\n }\n }\n let hasContentLoadProp;\n 'url content component el componentUrl'.split(' ').forEach(tabLoadProp => {\n if (tabRoute[tabLoadProp]) {\n hasContentLoadProp = true;\n loadTab({\n [tabLoadProp]: tabRoute[tabLoadProp]\n }, options);\n }\n });\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadTab(resolveParams, extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (tabRoute.async) {\n tabRoute.async.call(router, {\n router,\n to: currentRoute,\n from: previousRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n app: router.app\n });\n } else if (tabRoute.asyncComponent) {\n asyncComponent(router, tabRoute.asyncComponent, asyncResolve, asyncReject);\n } else if (!hasContentLoadProp) {\n router.allowPageChange = true;\n }\n return router;\n}\nfunction tabRemove($oldTabEl, $newTabEl, tabRoute) {\n const router = this;\n let hasTabComponentChild;\n if ($oldTabEl[0]) {\n $oldTabEl[0].f7RouterTabLoaded = false;\n delete $oldTabEl[0].f7RouterTabLoaded;\n }\n $oldTabEl.children().each(tabChild => {\n if (tabChild.f7Component) {\n hasTabComponentChild = true;\n $(tabChild).trigger('tab:beforeremove', tabRoute);\n tabChild.f7Component.destroy();\n }\n });\n if (!hasTabComponentChild) {\n $oldTabEl.trigger('tab:beforeremove', tabRoute);\n }\n router.emit('tabBeforeRemove', $oldTabEl[0], $newTabEl[0], tabRoute);\n router.removeTabContent($oldTabEl[0], tabRoute);\n}\nexport { tabLoad, tabRemove };","import { extend, nextTick } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport asyncComponent from './async-component.js';\nfunction modalLoad(modalType, route, loadOptions, direction) {\n if (loadOptions === void 0) {\n loadOptions = {};\n }\n const router = this;\n const app = router.app;\n const isPanel = modalType === 'panel';\n const modalOrPanel = isPanel ? 'panel' : 'modal';\n const options = extend({\n animate: router.params.animate,\n browserHistory: true,\n history: true,\n on: {},\n once: {}\n }, loadOptions);\n const modalParams = extend({}, route.route[modalType]);\n const modalRoute = route.route;\n const routeCallback = (modal, name) => {\n const {\n on,\n once\n } = options;\n let callback;\n if (name === 'open') {\n callback = on.modalOpen || once.modalOpen || on.panelOpen || once.panelOpen;\n }\n if (name === 'close') {\n callback = on.modalClose || once.modalClose || on.panelClose || once.panelClose;\n }\n if (name === 'closed') {\n callback = on.modalClosed || once.modalClosed || on.panelClosed || once.panelClosed;\n }\n if (callback) callback(modal);\n };\n function onModalLoaded() {\n // Create Modal\n const modal = app[modalType].create(modalParams);\n modalRoute.modalInstance = modal;\n const hasEl = modal.el;\n function closeOnSwipeBack() {\n modal.close();\n }\n modal.on(`${modalOrPanel}Open`, () => {\n if (!hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(`${modalType.toLowerCase()}:init ${modalType.toLowerCase()}:mounted`, route, modal);\n router.emit(`${!isPanel ? 'modalInit' : ''} ${modalType}Init ${modalType}Mounted`, modal.el, route, modal);\n }\n router.once('swipeBackMove', closeOnSwipeBack);\n routeCallback(modal, 'open');\n });\n modal.on(`${modalOrPanel}Close`, () => {\n router.off('swipeBackMove', closeOnSwipeBack);\n if (!modal.closeByRouter) {\n router.back();\n }\n routeCallback(modal, 'close');\n });\n modal.on(`${modalOrPanel}Closed`, () => {\n modal.$el.trigger(`${modalType.toLowerCase()}:beforeremove`, route, modal);\n modal.emit(`${!isPanel ? 'modalBeforeRemove ' : ''}${modalType}BeforeRemove`, modal.el, route, modal);\n const modalComponent = modal.el.f7Component;\n routeCallback(modal, 'closed');\n if (modalComponent) {\n modalComponent.destroy();\n }\n nextTick(() => {\n if (modalComponent || modalParams.component || modalParams.asyncComponent || modalParams.async) {\n router.removeModal(modal.el);\n }\n modal.destroy();\n delete modal.route;\n delete modalRoute.modalInstance;\n });\n });\n if (options.route) {\n // Update Browser History\n if (router.params.browserHistory && options.browserHistory) {\n History.push(router.view.id, {\n url: options.route.url,\n modal: modalType\n }, (router.params.browserHistoryRoot || '') + router.params.browserHistorySeparator + options.route.url);\n }\n\n // Set Route\n if (options.route !== router.currentRoute) {\n modal.route = extend(options.route, {\n modal\n });\n router.currentRoute = modal.route;\n }\n\n // Update Router History\n if (options.history && !options.reloadCurrent) {\n router.history.push(options.route.url);\n router.saveHistory();\n }\n }\n if (hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(`${modalType.toLowerCase()}:init ${modalType.toLowerCase()}:mounted`, route, modal);\n router.emit(`${modalOrPanel}Init ${modalType}Init ${modalType}Mounted`, modal.el, route, modal);\n }\n\n // Open\n modal.open(options.animate === false || options.animate === true ? options.animate : undefined);\n }\n\n // Load Modal Content\n function loadModal(loadModalParams, loadModalOptions) {\n // Load Modal Props\n const {\n url,\n content,\n component,\n componentUrl\n } = loadModalParams;\n\n // Component/Template Callbacks\n function resolve(contentEl) {\n if (contentEl) {\n if (typeof contentEl === 'string') {\n modalParams.content = contentEl;\n } else if (contentEl.f7Component) {\n contentEl.f7Component.mount(componentEl => {\n modalParams.el = componentEl;\n app.$el.append(componentEl);\n });\n } else {\n modalParams.el = contentEl;\n }\n onModalLoaded();\n }\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n if (content) {\n resolve(content);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.modalComponentLoader({\n rootEl: app.el,\n component,\n componentUrl,\n options: loadModalOptions,\n resolve,\n reject\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router.xhrRequest(url, loadModalOptions).then(modalContent => {\n modalParams.content = modalContent;\n onModalLoaded();\n }).catch(() => {\n router.allowPageChange = true;\n });\n } else {\n onModalLoaded();\n }\n }\n let foundLoadProp;\n 'url content component el componentUrl template'.split(' ').forEach(modalLoadProp => {\n if (modalParams[modalLoadProp] && !foundLoadProp) {\n foundLoadProp = true;\n loadModal({\n [modalLoadProp]: modalParams[modalLoadProp]\n }, options);\n }\n });\n if (!foundLoadProp && modalType === 'actions') {\n onModalLoaded();\n }\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadModal(resolveParams, extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (modalParams.async) {\n modalParams.async.call(router, {\n router,\n to: options.route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction,\n app\n });\n }\n if (modalParams.asyncComponent) {\n asyncComponent(router, modalParams.asyncComponent, asyncResolve, asyncReject);\n }\n return router;\n}\nfunction modalRemove(modal) {\n extend(modal, {\n closeByRouter: true\n });\n modal.close();\n}\nexport { modalLoad, modalRemove };","import $ from '../../shared/dom7.js';\nimport appRouterCheck from './app-router-check.js';\nfunction clearPreviousPages(router) {\n appRouterCheck(router, 'clearPreviousPages');\n const app = router.app;\n const dynamicNavbar = router.dynamicNavbar;\n const $pagesToRemove = router.$el.children('.page').filter(pageInView => {\n if (router.currentRoute && (router.currentRoute.modal || router.currentRoute.panel)) return true;\n return pageInView !== router.currentPageEl;\n });\n $pagesToRemove.each(pageEl => {\n const $oldPageEl = $(pageEl);\n const $oldNavbarEl = $(app.navbar.getElByPage($oldPageEl));\n // Page remove event\n router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarEl, 'previous', undefined, {});\n router.removePage($oldPageEl);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n });\n}\nfunction clearPreviousHistory() {\n const router = this;\n appRouterCheck(router, 'clearPreviousHistory');\n const url = router.history[router.history.length - 1];\n clearPreviousPages(router);\n router.history = [url];\n router.view.history = [url];\n router.saveHistory();\n}\nexport { clearPreviousHistory }; // eslint-disable-line","import Router from './router-class.js';\nexport default {\n name: 'router',\n static: {\n Router\n },\n instance: {\n cache: {\n xhr: [],\n templates: [],\n components: []\n }\n },\n create() {\n const instance = this;\n if (instance.app) {\n // View Router\n if (instance.params.router) {\n instance.router = new Router(instance.app, instance);\n }\n } else {\n // App Router\n instance.router = new Router(instance);\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nfunction resizableView(view) {\n const app = view.app;\n const support = getSupport();\n if (view.resizableInitialized) return;\n extend(view, {\n resizable: true,\n resizableWidth: null,\n resizableInitialized: true\n });\n const $htmlEl = $('html');\n const {\n $el\n } = view;\n if (!$el) return;\n let $resizeHandlerEl;\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let touchesDiff;\n let width;\n let minWidth;\n let maxWidth;\n function transformCSSWidth(v) {\n if (!v) return null;\n if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {\n return parseInt(v, 10) / 100 * app.width;\n }\n const newV = parseInt(v, 10);\n if (Number.isNaN(newV)) return null;\n return newV;\n }\n function isResizable() {\n return view.resizable && $el.hasClass('view-resizable') && $el.hasClass('view-master-detail');\n }\n function handleTouchStart(e) {\n if (!isResizable()) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isMoved = false;\n isTouched = true;\n const $pageMasterEl = $el.children('.page-master');\n minWidth = transformCSSWidth($pageMasterEl.css('min-width'));\n maxWidth = transformCSSWidth($pageMasterEl.css('max-width'));\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n e.f7PreventSwipePanel = true;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n if (!isMoved) {\n width = $resizeHandlerEl[0].offsetLeft + $resizeHandlerEl[0].offsetWidth;\n $el.addClass('view-resizing');\n $htmlEl.css('cursor', 'col-resize');\n }\n isMoved = true;\n e.preventDefault();\n touchesDiff = pageX - touchesStart.x;\n let newWidth = width + touchesDiff;\n if (minWidth && !Number.isNaN(minWidth)) {\n newWidth = Math.max(newWidth, minWidth);\n }\n if (maxWidth && !Number.isNaN(maxWidth)) {\n newWidth = Math.min(newWidth, maxWidth);\n }\n newWidth = Math.min(Math.max(newWidth, 0), app.width);\n view.resizableWidth = newWidth;\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${newWidth}px`);\n $el.trigger('view:resize', newWidth);\n view.emit('local::resize viewResize', view, newWidth);\n }\n function handleTouchEnd() {\n $('html').css('cursor', '');\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n $el.removeClass('view-resizing');\n }\n function handleResize() {\n if (!view.resizableWidth) return;\n minWidth = transformCSSWidth($resizeHandlerEl.css('min-width'));\n maxWidth = transformCSSWidth($resizeHandlerEl.css('max-width'));\n if (minWidth && !Number.isNaN(minWidth) && view.resizableWidth < minWidth) {\n view.resizableWidth = Math.max(view.resizableWidth, minWidth);\n }\n if (maxWidth && !Number.isNaN(maxWidth) && view.resizableWidth > maxWidth) {\n view.resizableWidth = Math.min(view.resizableWidth, maxWidth);\n }\n view.resizableWidth = Math.min(Math.max(view.resizableWidth, 0), app.width);\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n }\n $resizeHandlerEl = view.$el.children('.view-resize-handler');\n if (!$resizeHandlerEl.length) {\n view.$el.append('
          ');\n $resizeHandlerEl = view.$el.children('.view-resize-handler');\n }\n view.$resizeHandlerEl = $resizeHandlerEl;\n $el.addClass('view-resizable');\n\n // Add Events\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n view.$el.on(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n view.on('beforeOpen', handleResize);\n view.once('viewDestroy', () => {\n $el.removeClass('view-resizable');\n view.$resizeHandlerEl.remove();\n view.$el.off(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n view.off('beforeOpen', handleResize);\n });\n}\nexport default resizableView;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Router from '../../modules/router/router.js';\nimport Framework7Class from '../../shared/class.js';\nimport resizableView from './resizable-view.js';\nclass View extends Framework7Class {\n constructor(app, el, viewParams) {\n if (viewParams === void 0) {\n viewParams = {};\n }\n super(viewParams, [app]);\n const view = this;\n const ssr = view.params.routerId;\n const defaults = {\n routes: [],\n routesAdd: []\n };\n if (!ssr) {\n const $el = $(el);\n if (!$el.length) {\n let message = \"Framework7: can't create a View instance because \";\n message += typeof el === 'string' ? `the selector \"${el}\" didn't match any element` : 'el must be an HTMLElement or Dom7 object';\n throw new Error(message);\n }\n }\n\n // Default View params\n view.params = extend({\n el\n }, defaults, app.params.view, viewParams);\n\n // Routes\n if (view.params.routes.length > 0) {\n view.routes = view.params.routes;\n } else {\n view.routes = [].concat(app.routes, view.params.routesAdd);\n }\n\n // View Props\n extend(false, view, {\n app,\n name: view.params.name,\n main: view.params.main,\n history: [],\n scrollHistory: {}\n });\n\n // Install Modules\n view.useModules();\n\n // Add to app\n app.views.push(view);\n if (view.main) {\n app.views.main = view;\n }\n if (view.name) {\n app.views[view.name] = view;\n }\n\n // Index\n view.index = app.views.indexOf(view);\n\n // View ID\n let viewId;\n if (view.name) {\n viewId = `view_${view.name}`;\n } else if (view.main) {\n viewId = 'view_main';\n } else {\n viewId = `view_${view.index}`;\n }\n view.id = viewId;\n if (!view.params.init) {\n return view;\n }\n // Init View\n if (app.initialized) {\n view.init();\n } else {\n app.on('init', () => {\n view.init();\n });\n }\n return view;\n }\n destroy() {\n let view = this;\n const app = view.app;\n view.$el.trigger('view:beforedestroy');\n view.emit('local::beforeDestroy viewBeforeDestroy', view);\n app.off('resize', view.checkMasterDetailBreakpoint);\n if (view.main) {\n app.views.main = null;\n delete app.views.main;\n } else if (view.name) {\n app.views[view.name] = null;\n delete app.views[view.name];\n }\n view.$el[0].f7View = null;\n delete view.$el[0].f7View;\n app.views.splice(app.views.indexOf(view), 1);\n\n // Destroy Router\n if (view.params.router && view.router) {\n view.router.destroy();\n }\n view.emit('local::destroy viewDestroy', view);\n\n // Delete props & methods\n Object.keys(view).forEach(viewProp => {\n view[viewProp] = null;\n delete view[viewProp];\n });\n view = null;\n }\n checkMasterDetailBreakpoint(force) {\n const view = this;\n const app = view.app;\n const wasMasterDetail = view.$el.hasClass('view-master-detail');\n const isMasterDetail = app.width >= view.params.masterDetailBreakpoint && view.$el.children('.page-master').length;\n if (typeof force === 'undefined' && isMasterDetail || force === true) {\n view.$el.addClass('view-master-detail');\n if (!wasMasterDetail) {\n view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n view.$el.trigger('view:masterDetailBreakpoint');\n }\n } else {\n view.$el.removeClass('view-master-detail');\n if (wasMasterDetail) {\n view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n view.$el.trigger('view:masterDetailBreakpoint');\n }\n }\n }\n initMasterDetail() {\n const view = this;\n const app = view.app;\n view.checkMasterDetailBreakpoint = view.checkMasterDetailBreakpoint.bind(view);\n view.checkMasterDetailBreakpoint();\n if (view.params.masterDetailResizable) {\n resizableView(view);\n }\n app.on('resize', view.checkMasterDetailBreakpoint);\n }\n mount(viewEl) {\n const view = this;\n const app = view.app;\n const el = view.params.el || viewEl;\n const $el = $(el);\n\n // Selector\n let selector;\n if (typeof el === 'string') selector = el;else {\n // Supposed to be HTMLElement or Dom7\n selector = ($el.attr('id') ? `#${$el.attr('id')}` : '') + ($el.attr('class') ? `.${$el.attr('class').replace(/ /g, '.').replace('.active', '')}` : '');\n }\n\n // DynamicNavbar\n let $navbarsEl;\n if (app.theme === 'ios' && view.params.iosDynamicNavbar) {\n $navbarsEl = $el.children('.navbars').eq(0);\n if ($navbarsEl.length === 0) {\n $navbarsEl = $('
          ');\n }\n }\n extend(view, {\n $el,\n el: $el[0],\n main: view.main || $el.hasClass('view-main'),\n $navbarsEl,\n navbarsEl: $navbarsEl ? $navbarsEl[0] : undefined,\n selector\n });\n if (view.main) {\n app.views.main = view;\n }\n\n // Save in DOM\n if ($el && $el[0]) {\n $el[0].f7View = view;\n }\n view.emit('local::mount viewMount', view);\n }\n init(viewEl) {\n const view = this;\n view.mount(viewEl);\n if (view.params.router) {\n if (view.params.masterDetailBreakpoint > 0) {\n view.initMasterDetail();\n }\n if (view.params.initRouterOnTabShow && view.$el.hasClass('tab') && !view.$el.hasClass('tab-active')) {\n view.$el.once('tab:show', () => {\n view.router.init();\n });\n } else {\n view.router.init();\n }\n view.$el.trigger('view:init');\n view.emit('local::init viewInit', view);\n }\n }\n}\n\n// Use Router\nView.use(Router);\nexport default View;","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport ViewClass from '../../components/view/view-class.js';\nfunction initClicks(app) {\n function handleClicks(e) {\n const window = getWindow();\n const $clickedEl = $(e.target);\n const $clickedLinkEl = $clickedEl.closest('a');\n const isLink = $clickedLinkEl.length > 0;\n const url = isLink && $clickedLinkEl.attr('href');\n\n // Check if link is external\n if (isLink) {\n if ($clickedLinkEl.is(app.params.clicks.externalLinks) ||\n // eslint-disable-next-line\n url && url.indexOf('javascript:') >= 0) {\n const target = $clickedLinkEl.attr('target');\n if (url && window.cordova && window.cordova.InAppBrowser && (target === '_system' || target === '_blank')) {\n e.preventDefault();\n window.cordova.InAppBrowser.open(url, target);\n } else if (url && window.Capacitor && window.Capacitor.Plugins && window.Capacitor.Plugins.Browser && (target === '_system' || target === '_blank')) {\n e.preventDefault();\n window.Capacitor.Plugins.Browser.open({\n url\n });\n }\n return;\n }\n }\n\n // Modules Clicks\n Object.keys(app.modules).forEach(moduleName => {\n const moduleClicks = app.modules[moduleName].clicks;\n if (!moduleClicks) return;\n if (e.preventF7Router) return;\n Object.keys(moduleClicks).forEach(clickSelector => {\n const matchingClickedElement = $clickedEl.closest(clickSelector).eq(0);\n if (matchingClickedElement.length > 0) {\n moduleClicks[clickSelector].call(app, matchingClickedElement, matchingClickedElement.dataset(), e);\n }\n });\n });\n\n // Load Page\n let clickedLinkData = {};\n if (isLink) {\n e.preventDefault();\n clickedLinkData = $clickedLinkEl.dataset();\n }\n clickedLinkData.clickedEl = $clickedLinkEl[0];\n\n // Prevent Router\n if (e.preventF7Router) return;\n if ($clickedLinkEl.hasClass('prevent-router') || $clickedLinkEl.hasClass('router-prevent')) return;\n const validUrl = url && url.length > 0 && url[0] !== '#';\n if (validUrl || $clickedLinkEl.hasClass('back')) {\n let view;\n if (clickedLinkData.view && clickedLinkData.view === 'current') {\n view = app.views.current;\n } else if (clickedLinkData.view) {\n view = $(clickedLinkData.view)[0].f7View;\n } else {\n view = $clickedEl.parents('.view')[0] && $clickedEl.parents('.view')[0].f7View;\n if (view && view.params.linksView && (!$clickedLinkEl.hasClass('back') || $clickedLinkEl.hasClass('back') && view.router.history.length === 1)) {\n if (typeof view.params.linksView === 'string') view = $(view.params.linksView)[0].f7View;else if (view.params.linksView instanceof ViewClass) view = view.params.linksView;\n }\n }\n if (!view) {\n if (app.views.main) view = app.views.main;\n }\n if (!view || !view.router) return;\n if ($clickedLinkEl[0].f7RouteProps) {\n clickedLinkData.props = $clickedLinkEl[0].f7RouteProps;\n }\n if ($clickedLinkEl.hasClass('back')) view.router.back(url, clickedLinkData);else view.router.navigate(url, clickedLinkData);\n }\n }\n app.on('click', handleClicks);\n}\nexport default {\n name: 'clicks',\n params: {\n clicks: {\n // External Links\n externalLinks: '.external'\n }\n },\n on: {\n init() {\n const app = this;\n initClicks(app);\n }\n }\n};","import History from '../../shared/history.js';\nexport default {\n name: 'history',\n static: {\n history: History\n },\n on: {\n init() {\n History.init(this);\n }\n }\n};","import { getWindow } from 'ssr-window';\nimport { extend } from '../../shared/utils.js';\nconst SW = {\n registrations: [],\n register(path, scope) {\n const app = this;\n const window = getWindow();\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n return new Promise((resolve, reject) => {\n app.serviceWorker.container.register(path, scope ? {\n scope\n } : {}).then(reg => {\n SW.registrations.push(reg);\n app.emit('serviceWorkerRegisterSuccess', reg);\n resolve(reg);\n }).catch(error => {\n app.emit('serviceWorkerRegisterError', error);\n reject(error);\n });\n });\n },\n unregister(registration) {\n const app = this;\n const window = getWindow();\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n let registrations;\n if (!registration) registrations = SW.registrations;else if (Array.isArray(registration)) registrations = registration;else registrations = [registration];\n return Promise.all(registrations.map(reg => new Promise((resolve, reject) => {\n reg.unregister().then(() => {\n if (SW.registrations.indexOf(reg) >= 0) {\n SW.registrations.splice(SW.registrations.indexOf(reg), 1);\n }\n app.emit('serviceWorkerUnregisterSuccess', reg);\n resolve();\n }).catch(error => {\n app.emit('serviceWorkerUnregisterError', reg, error);\n reject(error);\n });\n })));\n }\n};\nexport default {\n name: 'sw',\n params: {\n serviceWorker: {\n path: undefined,\n scope: undefined\n }\n },\n create() {\n const app = this;\n const window = getWindow();\n extend(app, {\n serviceWorker: {\n container: 'serviceWorker' in window.navigator ? window.navigator.serviceWorker : undefined,\n registrations: SW.registrations,\n register: SW.register.bind(app),\n unregister: SW.unregister.bind(app)\n }\n });\n },\n on: {\n init() {\n const window = getWindow();\n if (!('serviceWorker' in window.navigator)) return;\n const app = this;\n if (app.device.cordova || window.Capacitor && window.Capacitor.isNative) return;\n if (!app.serviceWorker.container) return;\n const paths = app.params.serviceWorker.path;\n const scope = app.params.serviceWorker.scope;\n if (!paths || Array.isArray(paths) && !paths.length) return;\n const toRegister = Array.isArray(paths) ? paths : [paths];\n toRegister.forEach(path => {\n app.serviceWorker.register(path, scope);\n });\n }\n }\n};","/* eslint-disable no-underscore-dangle */\nimport { extend } from '../../shared/utils.js';\nfunction createStore(storeParams) {\n if (storeParams === void 0) {\n storeParams = {};\n }\n const store = {\n __store: true\n };\n const originalState = {\n ...(storeParams.state || {})\n };\n const actions = {\n ...(storeParams.actions || {})\n };\n const getters = {\n ...(storeParams.getters || {})\n };\n const state = extend({}, originalState);\n let propsQueue = [];\n const gettersDependencies = {};\n const gettersCallbacks = {};\n Object.keys(getters).forEach(getterKey => {\n gettersDependencies[getterKey] = [];\n gettersCallbacks[getterKey] = [];\n });\n const getGetterValue = getterKey => {\n return getters[getterKey]({\n state: store.state\n });\n };\n const addGetterDependencies = (getterKey, deps) => {\n if (!gettersDependencies[getterKey]) gettersDependencies[getterKey] = [];\n deps.forEach(dep => {\n if (gettersDependencies[getterKey].indexOf(dep) < 0) {\n gettersDependencies[getterKey].push(dep);\n }\n });\n };\n const addGetterCallback = (getterKey, callback) => {\n if (!gettersCallbacks[getterKey]) gettersCallbacks[getterKey] = [];\n gettersCallbacks[getterKey].push(callback);\n };\n const runGetterCallbacks = stateKey => {\n const keys = Object.keys(gettersDependencies).filter(getterKey => {\n return gettersDependencies[getterKey].indexOf(stateKey) >= 0;\n });\n keys.forEach(getterKey => {\n if (!gettersCallbacks[getterKey] || !gettersCallbacks[getterKey].length) return;\n gettersCallbacks[getterKey].forEach(callback => {\n callback(getGetterValue(getterKey));\n });\n });\n };\n const removeGetterCallback = callback => {\n Object.keys(gettersCallbacks).forEach(stateKey => {\n const callbacks = gettersCallbacks[stateKey];\n if (callbacks.indexOf(callback) >= 0) {\n callbacks.splice(callbacks.indexOf(callback), 1);\n }\n });\n };\n\n // eslint-disable-next-line\n store.__removeCallback = callback => {\n removeGetterCallback(callback);\n };\n const getterValue = function (getterKey, addCallback) {\n if (addCallback === void 0) {\n addCallback = true;\n }\n if (getterKey === 'constructor') return undefined;\n propsQueue = [];\n const value = getGetterValue(getterKey);\n addGetterDependencies(getterKey, propsQueue);\n const onUpdated = callback => {\n addGetterCallback(getterKey, callback);\n };\n const obj = {\n value,\n onUpdated\n };\n if (!addCallback) {\n return obj;\n }\n const callback = v => {\n obj.value = v;\n };\n obj.__callback = callback;\n addGetterCallback(getterKey, callback);\n // eslint-disable-next-line\n return obj;\n };\n store.state = new Proxy(state, {\n set: (target, prop, value) => {\n target[prop] = value;\n runGetterCallbacks(prop);\n return true;\n },\n get: (target, prop) => {\n propsQueue.push(prop);\n return target[prop];\n }\n });\n store.getters = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, true);\n }\n });\n store._gettersPlain = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, false);\n }\n });\n store.dispatch = (actionName, data) => {\n return new Promise((resolve, reject) => {\n if (!actions[actionName]) {\n reject();\n throw new Error(`Framework7: Store action \"${actionName}\" is not found`);\n }\n const result = actions[actionName]({\n state: store.state,\n dispatch: store.dispatch\n }, data);\n resolve(result);\n });\n };\n return store;\n}\nexport default createStore;","import createStore from './create-store.js';\nexport { createStore };\nexport default {\n name: 'store',\n static: {\n createStore\n },\n proto: {\n createStore\n }\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nconst isCapacitor = () => {\n const window = getWindow();\n return window.Capacitor && window.Capacitor.isNative && window.Capacitor.Plugins && window.Capacitor.Plugins.StatusBar;\n};\nconst Statusbar = {\n hide() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.hide();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.hide();\n }\n },\n show() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.show();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.show();\n }\n },\n onClick() {\n const app = this;\n let pageContent;\n if ($('.popup.modal-in').length > 0) {\n // Check for opened popup\n pageContent = $('.popup.modal-in').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else if ($('.panel.panel-in').length > 0) {\n // Check for opened panel\n pageContent = $('.panel.panel-in').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else if ($('.views > .view.tab-active').length > 0) {\n // View in tab bar app layout\n pageContent = $('.views > .view.tab-active').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else if ($('.views').length > 0) {\n pageContent = $('.views').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else {\n pageContent = app.$el.children('.view').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n }\n if (pageContent && pageContent.length > 0) {\n // Check for tab\n if (pageContent.hasClass('tab')) {\n pageContent = pageContent.parent('.tabs').children('.page-content.tab-active');\n }\n if (pageContent.length > 0) pageContent.scrollTop(0, 300);\n }\n },\n setTextColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n if (color === 'white') {\n window.StatusBar.styleLightContent();\n } else {\n window.StatusBar.styleDefault();\n }\n }\n if (isCapacitor()) {\n if (color === 'white') {\n window.Capacitor.Plugins.StatusBar.setStyle({\n style: 'DARK'\n });\n } else {\n window.Capacitor.Plugins.StatusBar.setStyle({\n style: 'LIGHT'\n });\n }\n }\n },\n setBackgroundColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.backgroundColorByHexString(color);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setBackgroundColor({\n color\n });\n }\n },\n isVisible() {\n const window = getWindow();\n const device = getDevice();\n return new Promise(resolve => {\n if (device.cordova && window.StatusBar) {\n resolve(window.StatusBar.isVisible);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.getInfo().then(info => {\n resolve(info.visible);\n });\n }\n resolve(false);\n });\n },\n overlaysWebView(overlays) {\n if (overlays === void 0) {\n overlays = true;\n }\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.overlaysWebView(overlays);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setOverlaysWebView({\n overlay: overlays\n });\n }\n },\n init() {\n const app = this;\n const window = getWindow();\n const device = getDevice();\n const params = app.params.statusbar;\n if (!params.enabled) return;\n const isCordova = device.cordova && window.StatusBar;\n const isCap = isCapacitor();\n if (isCordova || isCap) {\n if (params.scrollTopOnClick) {\n $(window).on('statusTap', Statusbar.onClick.bind(app));\n }\n if (device.ios) {\n if (params.iosOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.iosTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n if (device.android) {\n if (params.androidOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.androidTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n }\n if (params.iosBackgroundColor && device.ios) {\n Statusbar.setBackgroundColor(params.iosBackgroundColor);\n }\n if (params.androidBackgroundColor && device.android) {\n Statusbar.setBackgroundColor(params.androidBackgroundColor);\n }\n }\n};\nexport default {\n name: 'statusbar',\n params: {\n statusbar: {\n enabled: true,\n scrollTopOnClick: true,\n iosOverlaysWebView: true,\n iosTextColor: 'black',\n iosBackgroundColor: null,\n androidOverlaysWebView: false,\n androidTextColor: 'black',\n androidBackgroundColor: null\n }\n },\n create() {\n const app = this;\n bindMethods(app, {\n statusbar: Statusbar\n });\n },\n on: {\n init() {\n const app = this;\n Statusbar.init.call(app);\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport View from './view-class.js';\nfunction getCurrentView(app) {\n const $popoverView = $('.popover.modal-in .view');\n const $popupView = $('.popup.modal-in .view');\n const $panelView = $('.panel.panel-in .view');\n let $viewsEl = $('.views');\n if ($viewsEl.length === 0) $viewsEl = app.$el;\n // Find active view as tab\n let $viewEl = $viewsEl.children('.view');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view');\n }\n // Propably in tabs or split view\n if ($viewEl.length > 1) {\n if ($viewEl.hasClass('tab')) {\n // Tabs\n $viewEl = $viewsEl.children('.view.tab-active');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view.tab-active');\n }\n } else {\n // Split View, leave appView intact\n }\n }\n if ($popoverView.length > 0 && $popoverView[0].f7View) return $popoverView[0].f7View;\n if ($popupView.length > 0 && $popupView[0].f7View) return $popupView[0].f7View;\n if ($panelView.length > 0 && $panelView[0].f7View) return $panelView[0].f7View;\n if ($viewEl.length > 0) {\n if ($viewEl.length === 1 && $viewEl[0].f7View) return $viewEl[0].f7View;\n if ($viewEl.length > 1) {\n return app.views.main;\n }\n }\n return undefined;\n}\nexport default {\n name: 'view',\n params: {\n view: {\n init: true,\n initRouterOnTabShow: false,\n name: undefined,\n main: false,\n router: true,\n linksView: null,\n xhrCache: true,\n xhrCacheIgnore: [],\n xhrCacheIgnoreGetParameters: false,\n xhrCacheDuration: 1000 * 60 * 10,\n // Ten minutes\n componentCache: true,\n preloadPreviousPage: true,\n allowDuplicateUrls: false,\n reloadPages: false,\n reloadDetail: false,\n masterDetailBreakpoint: 0,\n masterDetailResizable: false,\n removeElements: true,\n removeElementsWithTimeout: false,\n removeElementsTimeout: 0,\n restoreScrollTopOnBack: true,\n unloadTabContent: true,\n passRouteQueryToRequest: true,\n passRouteParamsToRequest: false,\n loadInitialPage: true,\n // Swipe Back\n iosSwipeBack: true,\n iosSwipeBackAnimateShadow: true,\n iosSwipeBackAnimateOpacity: true,\n iosSwipeBackActiveArea: 30,\n iosSwipeBackThreshold: 0,\n mdSwipeBack: false,\n mdSwipeBackAnimateShadow: true,\n mdSwipeBackAnimateOpacity: false,\n mdSwipeBackActiveArea: 30,\n mdSwipeBackThreshold: 0,\n // Push State\n browserHistory: false,\n browserHistoryRoot: undefined,\n browserHistoryAnimate: true,\n browserHistoryAnimateOnLoad: false,\n browserHistorySeparator: '#!',\n browserHistoryOnLoad: true,\n browserHistoryInitialMatch: false,\n browserHistoryStoreHistory: true,\n browserHistoryTabs: 'replace',\n // Animate Pages\n animate: true,\n // iOS Dynamic Navbar\n iosDynamicNavbar: true,\n // Animate iOS Navbar Back Icon\n iosAnimateNavbarBackIcon: true,\n // Delays\n iosPageLoadDelay: 0,\n mdPageLoadDelay: 0,\n // Routes hooks\n routesBeforeEnter: null,\n routesBeforeLeave: null\n }\n },\n static: {\n View\n },\n create() {\n const app = this;\n extend(app, {\n views: extend([], {\n create(el, params) {\n return new View(app, el, params);\n },\n get(viewEl) {\n const $viewEl = $(viewEl);\n if ($viewEl.length && $viewEl[0].f7View) return $viewEl[0].f7View;\n return undefined;\n }\n })\n });\n Object.defineProperty(app.views, 'current', {\n enumerable: true,\n configurable: true,\n get() {\n return getCurrentView(app);\n }\n });\n // Alias\n app.view = app.views;\n },\n on: {\n init() {\n const app = this;\n $('.view-init').each(viewEl => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n 'modalOpen panelOpen': function onOpen(instance) {\n const app = this;\n instance.$el.find('.view-init').each(viewEl => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n 'modalBeforeDestroy panelBeforeDestroy': function onClose(instance) {\n if (!instance || !instance.$el) return;\n instance.$el.find('.view-init').each(viewEl => {\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n });\n }\n },\n vnode: {\n 'view-init': {\n insert(vnode) {\n const app = this;\n const viewEl = vnode.elm;\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n },\n destroy(vnode) {\n const viewEl = vnode.elm;\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nconst Navbar = {\n size(el) {\n const app = this;\n let $el = $(el);\n if ($el.hasClass('navbars')) {\n $el = $el.children('.navbar').each(navbarEl => {\n app.navbar.size(navbarEl);\n });\n return;\n }\n const $innerEl = $el.children('.navbar-inner');\n if (!$innerEl.length) return;\n const needCenterTitle = $innerEl.hasClass('navbar-inner-centered-title') || app.params.navbar[`${app.theme}CenterTitle`];\n const needLeftTitle = app.theme === 'ios' && !app.params.navbar[`${app.theme}CenterTitle`];\n if (!needCenterTitle && !needLeftTitle) return;\n if ($el.parents('.tab:not(.tab-active)').length > 0 || $el.parents('.popup:not(.modal-in)').length > 0) {\n return;\n }\n if (app.theme !== 'ios' && app.params.navbar[`${app.theme}CenterTitle`]) {\n $innerEl.addClass('navbar-inner-centered-title');\n }\n if (app.theme === 'ios' && !app.params.navbar.iosCenterTitle) {\n $innerEl.addClass('navbar-inner-left-title');\n }\n const $viewEl = $el.parents('.view').eq(0);\n const left = app.rtl ? $innerEl.children('.right') : $innerEl.children('.left');\n const right = app.rtl ? $innerEl.children('.left') : $innerEl.children('.right');\n const title = $innerEl.children('.title');\n const subnavbar = $innerEl.children('.subnavbar');\n const noLeft = left.length === 0;\n const noRight = right.length === 0;\n const leftWidth = noLeft ? 0 : left.outerWidth(true);\n const rightWidth = noRight ? 0 : right.outerWidth(true);\n const titleWidth = title.outerWidth(true);\n const navbarStyles = $innerEl.styles();\n const navbarWidth = $innerEl[0].offsetWidth;\n const navbarInnerWidth = navbarWidth - parseInt(navbarStyles.paddingLeft, 10) - parseInt(navbarStyles.paddingRight, 10);\n const isPrevious = $el.hasClass('navbar-previous');\n const sliding = $innerEl.hasClass('sliding');\n let router;\n let dynamicNavbar;\n if ($viewEl.length > 0 && $viewEl[0].f7View) {\n router = $viewEl[0].f7View.router;\n dynamicNavbar = router && router.dynamicNavbar;\n }\n let currLeft;\n let diff;\n if (noRight) {\n currLeft = navbarInnerWidth - titleWidth;\n }\n if (noLeft) {\n currLeft = 0;\n }\n if (!noLeft && !noRight) {\n currLeft = (navbarInnerWidth - rightWidth - titleWidth + leftWidth) / 2;\n }\n let requiredLeft = (navbarInnerWidth - titleWidth) / 2;\n if (navbarInnerWidth - leftWidth - rightWidth > titleWidth) {\n if (requiredLeft < leftWidth) {\n requiredLeft = leftWidth;\n }\n if (requiredLeft + titleWidth > navbarInnerWidth - rightWidth) {\n requiredLeft = navbarInnerWidth - rightWidth - titleWidth;\n }\n diff = requiredLeft - currLeft;\n } else {\n diff = 0;\n }\n\n // RTL inverter\n const inverter = app.rtl ? -1 : 1;\n if (dynamicNavbar && app.theme === 'ios') {\n if (title.hasClass('sliding') || title.length > 0 && sliding) {\n let titleLeftOffset = -(currLeft + diff) * inverter;\n const titleRightOffset = (navbarInnerWidth - currLeft - diff - titleWidth) * inverter;\n if (isPrevious) {\n if (router && router.params.iosAnimateNavbarBackIcon) {\n const activeNavbarBackLink = $el.parent().find('.navbar-current').children('.left.sliding').find('.back .icon ~ span');\n if (activeNavbarBackLink.length > 0) {\n titleLeftOffset += activeNavbarBackLink[0].offsetLeft;\n }\n }\n }\n title[0].f7NavbarLeftOffset = titleLeftOffset;\n title[0].f7NavbarRightOffset = titleRightOffset;\n }\n if (!noLeft && (left.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n left[0].f7NavbarLeftOffset = -(navbarInnerWidth - left[0].offsetWidth) / 2 * inverter;\n left[0].f7NavbarRightOffset = leftWidth * inverter;\n } else {\n left[0].f7NavbarLeftOffset = -leftWidth;\n left[0].f7NavbarRightOffset = (navbarInnerWidth - left[0].offsetWidth) / 2;\n if (router && router.params.iosAnimateNavbarBackIcon && left.find('.back .icon').length > 0) {\n if (left.find('.back .icon ~ span').length) {\n const leftOffset = left[0].f7NavbarLeftOffset;\n const rightOffset = left[0].f7NavbarRightOffset;\n left[0].f7NavbarLeftOffset = 0;\n left[0].f7NavbarRightOffset = 0;\n left.find('.back .icon ~ span')[0].f7NavbarLeftOffset = leftOffset;\n left.find('.back .icon ~ span')[0].f7NavbarRightOffset = rightOffset - left.find('.back .icon')[0].offsetWidth;\n }\n }\n }\n }\n if (!noRight && (right.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n right[0].f7NavbarLeftOffset = -rightWidth * inverter;\n right[0].f7NavbarRightOffset = (navbarInnerWidth - right[0].offsetWidth) / 2 * inverter;\n } else {\n right[0].f7NavbarLeftOffset = -(navbarInnerWidth - right[0].offsetWidth) / 2;\n right[0].f7NavbarRightOffset = rightWidth;\n }\n }\n if (subnavbar.length && (subnavbar.hasClass('sliding') || sliding)) {\n subnavbar[0].f7NavbarLeftOffset = app.rtl ? subnavbar[0].offsetWidth : -subnavbar[0].offsetWidth;\n subnavbar[0].f7NavbarRightOffset = -subnavbar[0].f7NavbarLeftOffset;\n }\n }\n\n // Center title\n if (needCenterTitle) {\n let titleLeft = diff;\n if (app.rtl && noLeft && noRight && title.length > 0) titleLeft = -titleLeft;\n title.css({\n left: `${titleLeft}px`\n });\n }\n },\n hide(el, animate, hideStatusbar, hideOnlyCurrent) {\n if (animate === void 0) {\n animate = true;\n }\n if (hideStatusbar === void 0) {\n hideStatusbar = false;\n }\n if (hideOnlyCurrent === void 0) {\n hideOnlyCurrent = false;\n }\n const app = this;\n let $el = $(el);\n const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;\n if (isDynamic) $el = $el.parents('.navbars');\n if (!$el.length) return;\n if ($el.hasClass('navbar-hidden')) return;\n let className = `navbar-hidden${animate ? ' navbar-transitioning' : ''}`;\n const currentIsLarge = isDynamic ? $el.find('.navbar-current .title-large').length : $el.find('.title-large').length;\n if (currentIsLarge) {\n className += ' navbar-large-hidden';\n }\n if (hideStatusbar) {\n className += ' navbar-hidden-statusbar';\n }\n $el.transitionEnd(() => {\n $el.removeClass('navbar-transitioning');\n });\n $el.addClass(className);\n if (isDynamic) {\n $el.children('.navbar').each(subEl => {\n $(subEl).trigger('navbar:hide');\n app.emit('navbarHide', subEl);\n });\n } else {\n $el.trigger('navbar:hide');\n app.emit('navbarHide', $el[0]);\n }\n },\n show(el, animate, hideOnlyCurrent) {\n if (el === void 0) {\n el = '.navbar-hidden';\n }\n if (animate === void 0) {\n animate = true;\n }\n if (hideOnlyCurrent === void 0) {\n hideOnlyCurrent = false;\n }\n const app = this;\n let $el = $(el);\n const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;\n if (isDynamic) $el = $el.parents('.navbars');\n if (!$el.length) return;\n if (!$el.hasClass('navbar-hidden')) return;\n if (animate) {\n $el.addClass('navbar-transitioning');\n $el.transitionEnd(() => {\n $el.removeClass('navbar-transitioning');\n });\n }\n $el.removeClass('navbar-hidden navbar-large-hidden navbar-hidden-statusbar');\n if (isDynamic) {\n $el.children('.navbar').each(subEl => {\n $(subEl).trigger('navbar:show');\n app.emit('navbarShow', subEl);\n });\n } else {\n $el.trigger('navbar:show');\n app.emit('navbarShow', $el[0]);\n }\n },\n getElByPage(page) {\n let $pageEl;\n let $navbarEl;\n let pageData;\n if (page.$navbarEl || page.$el) {\n pageData = page;\n $pageEl = page.$el;\n } else {\n $pageEl = $(page);\n if ($pageEl.length > 0) pageData = $pageEl[0].f7Page;\n }\n if (pageData && pageData.$navbarEl && pageData.$navbarEl.length > 0) {\n $navbarEl = pageData.$navbarEl;\n } else if ($pageEl) {\n $navbarEl = $pageEl.children('.navbar');\n }\n if (!$navbarEl || $navbarEl && $navbarEl.length === 0) return undefined;\n return $navbarEl[0];\n },\n getPageByEl(navbarEl) {\n const $navbarEl = $(navbarEl);\n if ($navbarEl.parents('.page').length) {\n return $navbarEl.parents('.page')[0];\n }\n let pageEl;\n $navbarEl.parents('.view').find('.page').each(el => {\n if (el && el.f7Page && el.f7Page.navbarEl && $navbarEl[0] === el.f7Page.navbarEl) {\n pageEl = el;\n }\n });\n return pageEl;\n },\n collapseLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n $navbarEl.addClass('navbar-large-collapsed');\n $pageEl.eq(0).addClass('page-with-navbar-large-collapsed').trigger('page:navbarlargecollapsed');\n app.emit('pageNavbarLargeCollapsed', $pageEl[0]);\n $navbarEl.trigger('navbar:collapse');\n app.emit('navbarCollapse', $navbarEl[0]);\n },\n expandLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar-large');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n $navbarEl.removeClass('navbar-large-collapsed');\n $pageEl.eq(0).removeClass('page-with-navbar-large-collapsed').trigger('page:navbarlargeexpanded');\n app.emit('pageNavbarLargeExpanded', $pageEl[0]);\n $navbarEl.trigger('navbar:expand');\n app.emit('navbarExpand', $navbarEl[0]);\n },\n toggleLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar-large');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n if ($navbarEl.hasClass('navbar-large-collapsed')) {\n app.navbar.expandLargeTitle($navbarEl);\n } else {\n app.navbar.collapseLargeTitle($navbarEl);\n }\n },\n initNavbarOnScroll(pageEl, navbarEl, needHide, needCollapse, needTransparent) {\n const app = this;\n const support = getSupport();\n const $pageEl = $(pageEl);\n const $navbarEl = $(navbarEl);\n const $titleLargeEl = $navbarEl.find('.title-large');\n const isLarge = $titleLargeEl.length || $navbarEl.hasClass('.navbar-large');\n let navbarHideHeight = 44;\n const snapPageScrollToLargeTitle = app.params.navbar.snapPageScrollToLargeTitle;\n const snapPageScrollToTransparentNavbar = app.params.navbar.snapPageScrollToTransparentNavbar;\n let previousScrollTop;\n let currentScrollTop;\n let scrollHeight;\n let offsetHeight;\n let reachEnd;\n let action;\n let navbarHidden;\n let navbarCollapsed;\n let navbarTitleLargeHeight;\n let navbarOffsetHeight;\n if (needCollapse || needHide && isLarge) {\n navbarTitleLargeHeight = $navbarEl.css('--f7-navbar-large-title-height');\n if (navbarTitleLargeHeight && navbarTitleLargeHeight.indexOf('px') >= 0) {\n navbarTitleLargeHeight = parseInt(navbarTitleLargeHeight, 10);\n if (Number.isNaN(navbarTitleLargeHeight) && $titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else if (Number.isNaN(navbarTitleLargeHeight)) {\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;else if (app.theme === 'md') navbarTitleLargeHeight = 88;\n }\n } else if ($titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else {\n // eslint-disable-next-line\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;else if (app.theme === 'md') navbarTitleLargeHeight = 88;\n }\n }\n if (needHide && isLarge) {\n navbarHideHeight += navbarTitleLargeHeight;\n }\n let scrollChanged;\n let scrollContent;\n let scrollTimeoutId;\n let touchEndTimeoutId;\n const touchSnapTimeout = 70;\n const desktopSnapTimeout = 300;\n function calcScrollableDistance() {\n $pageEl.find('.page-content').each(pageContentEl => {\n pageContentEl.f7ScrollableDistance = pageContentEl.scrollHeight - pageContentEl.offsetHeight;\n });\n }\n function snapLargeNavbar() {\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n if (!scrollContent || currentScrollTop < 0) return;\n if (currentScrollTop >= navbarTitleLargeHeight / 2 && currentScrollTop < navbarTitleLargeHeight) {\n $(scrollContent).scrollTop(navbarTitleLargeHeight, 100);\n } else if (currentScrollTop < navbarTitleLargeHeight) {\n $(scrollContent).scrollTop(0, 200);\n }\n }\n function snapTransparentNavbar() {\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n if (!scrollContent || currentScrollTop < 0) return;\n if (currentScrollTop >= navbarOffsetHeight / 2 && currentScrollTop < navbarOffsetHeight) {\n $(scrollContent).scrollTop(navbarOffsetHeight, 100);\n } else if (currentScrollTop < navbarOffsetHeight) {\n $(scrollContent).scrollTop(0, 200);\n }\n }\n function handleNavbarTransparent() {\n const isHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded || isHidden) return;\n if (!navbarOffsetHeight) {\n navbarOffsetHeight = navbarEl.offsetHeight;\n }\n let opacity = currentScrollTop / navbarOffsetHeight;\n const notTransparent = $navbarEl.hasClass('navbar-transparent-visible');\n opacity = Math.max(Math.min(opacity, 1), 0);\n if (notTransparent && opacity === 1 || !notTransparent && opacity === 0) {\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n if (notTransparent && opacity === 0) {\n $navbarEl.trigger('navbar:transparenthide');\n app.emit('navbarTransparentHide', $navbarEl[0]);\n $navbarEl.removeClass('navbar-transparent-visible');\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n if (!notTransparent && opacity === 1) {\n $navbarEl.trigger('navbar:transparentshow');\n app.emit('navbarTransparentShow', $navbarEl[0]);\n $navbarEl.addClass('navbar-transparent-visible');\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n $navbarEl.find('.navbar-bg, .title').css('opacity', opacity);\n if (snapPageScrollToTransparentNavbar) {\n if (!support.touch) {\n clearTimeout(scrollTimeoutId);\n scrollTimeoutId = setTimeout(() => {\n snapTransparentNavbar();\n }, desktopSnapTimeout);\n } else if (touchEndTimeoutId) {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n snapTransparentNavbar();\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }, touchSnapTimeout);\n }\n }\n }\n let previousCollapseProgress = null;\n let collapseProgress = null;\n function handleLargeNavbarCollapse(pageContentEl) {\n const isHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n if (isHidden) return;\n const isLargeTransparent = $navbarEl.hasClass('navbar-large-transparent') || $navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-transparent');\n previousCollapseProgress = collapseProgress;\n const scrollableDistance = Math.min(navbarTitleLargeHeight, pageContentEl.f7ScrollableDistance || navbarTitleLargeHeight);\n collapseProgress = Math.min(Math.max(currentScrollTop / scrollableDistance, 0), 1);\n const previousCollapseWasInMiddle = previousCollapseProgress > 0 && previousCollapseProgress < 1;\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n navbarCollapsed = $navbarEl.hasClass('navbar-large-collapsed');\n const $bgEl = $navbarEl.find('.navbar-bg');\n if (collapseProgress === 0 && navbarCollapsed) {\n app.navbar.expandLargeTitle($navbarEl[0]);\n } else if (collapseProgress === 1 && !navbarCollapsed) {\n app.navbar.collapseLargeTitle($navbarEl[0]);\n }\n if (collapseProgress === 0 && navbarCollapsed || collapseProgress === 0 && previousCollapseWasInMiddle || collapseProgress === 1 && !navbarCollapsed || collapseProgress === 1 && previousCollapseWasInMiddle) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', '');\n }\n $navbarEl.find('.title').css('opacity', '');\n $navbarEl.find('.title-large-text, .subnavbar').css('transform', '');\n $navbarEl.find('.title-large-text').css('opacity', '');\n if (isLargeTransparent) {\n $bgEl.css('opacity', '');\n }\n $bgEl.css('transform', '');\n } else if (collapseProgress > 0 && collapseProgress < 1) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', 'visible');\n }\n $navbarEl.find('.title').css('opacity', -0.5 + collapseProgress * 1.5);\n $navbarEl.find('.title-large-text, .subnavbar').css('transform', `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`);\n $navbarEl.find('.title-large-text').css('opacity', 1 - collapseProgress * 2);\n if (isLargeTransparent) {\n $bgEl.css('opacity', collapseProgress);\n }\n $bgEl.css('transform', `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`);\n }\n if (snapPageScrollToLargeTitle) {\n if (!support.touch) {\n clearTimeout(scrollTimeoutId);\n scrollTimeoutId = setTimeout(() => {\n snapLargeNavbar();\n }, desktopSnapTimeout);\n } else if (touchEndTimeoutId) {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n snapLargeNavbar();\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }, touchSnapTimeout);\n }\n }\n }\n function handleTitleHideShow() {\n if ($pageEl.hasClass('page-with-card-opened')) return;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n navbarHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n if (reachEnd) {\n if (app.params.navbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.navbar.showOnPageScrollTop || currentScrollTop <= navbarHideHeight) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > navbarHideHeight) {\n action = 'hide';\n } else {\n action = 'show';\n }\n if (action === 'show' && navbarHidden) {\n app.navbar.show($navbarEl, true, true);\n navbarHidden = false;\n } else if (action === 'hide' && !navbarHidden) {\n app.navbar.hide($navbarEl, true, false, true);\n navbarHidden = true;\n }\n previousScrollTop = currentScrollTop;\n }\n function handleScroll(e) {\n scrollContent = this;\n if (e && e.target && e.target !== scrollContent) {\n return;\n }\n currentScrollTop = scrollContent.scrollTop;\n scrollChanged = currentScrollTop;\n if (needCollapse) {\n handleLargeNavbarCollapse(scrollContent);\n } else if (needTransparent) {\n handleNavbarTransparent();\n }\n if ($pageEl.hasClass('page-previous')) return;\n if (needHide) {\n handleTitleHideShow();\n }\n }\n function handeTouchStart() {\n scrollChanged = false;\n }\n function handleTouchEnd() {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n if (scrollChanged !== false) {\n if (needTransparent && !needCollapse) {\n snapTransparentNavbar();\n } else {\n snapLargeNavbar();\n }\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }\n }, touchSnapTimeout);\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n if (support.touch && (needCollapse && snapPageScrollToLargeTitle || needTransparent && snapPageScrollToTransparentNavbar)) {\n app.on('touchstart:passive', handeTouchStart);\n app.on('touchend:passive', handleTouchEnd);\n }\n calcScrollableDistance();\n if (needCollapse || needTransparent) {\n $pageEl.find('.page-content').each(pageContentEl => {\n if (pageContentEl.scrollTop > 0) handleScroll.call(pageContentEl);\n });\n }\n app.on('resize', calcScrollableDistance);\n $pageEl[0].f7DetachNavbarScrollHandlers = function f7DetachNavbarScrollHandlers() {\n app.off('resize', calcScrollableDistance);\n delete $pageEl[0].f7DetachNavbarScrollHandlers;\n $pageEl.off('scroll', '.page-content', handleScroll, true);\n if (support.touch && (needCollapse && snapPageScrollToLargeTitle || needTransparent && snapPageScrollToTransparentNavbar)) {\n app.off('touchstart:passive', handeTouchStart);\n app.off('touchend:passive', handleTouchEnd);\n }\n };\n }\n};\nexport default {\n name: 'navbar',\n create() {\n const app = this;\n bindMethods(app, {\n navbar: Navbar\n });\n },\n params: {\n navbar: {\n scrollTopOnTitleClick: true,\n iosCenterTitle: true,\n mdCenterTitle: false,\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n collapseLargeTitleOnScroll: true,\n snapPageScrollToLargeTitle: true,\n snapPageScrollToTransparentNavbar: true\n }\n },\n on: {\n 'panelBreakpoint panelCollapsedBreakpoint panelResize viewResize resize viewMasterDetailBreakpoint': function onPanelResize() {\n const app = this;\n $('.navbar').each(navbarEl => {\n app.navbar.size(navbarEl);\n });\n },\n pageBeforeRemove(page) {\n if (page.$el[0].f7DetachNavbarScrollHandlers) {\n page.$el[0].f7DetachNavbarScrollHandlers();\n }\n },\n pageBeforeIn(page) {\n const app = this;\n if (app.theme !== 'ios') return;\n let $navbarsEl;\n const view = page.$el.parents('.view')[0].f7View;\n const navbarEl = app.navbar.getElByPage(page);\n if (!navbarEl) {\n $navbarsEl = page.$el.parents('.view').children('.navbars');\n } else {\n $navbarsEl = $(navbarEl).parents('.navbars');\n }\n if (page.$el.hasClass('no-navbar') || view.router.dynamicNavbar && !navbarEl) {\n const animate = !!(page.pageFrom && page.router.history.length > 0);\n app.navbar.hide($navbarsEl, animate);\n } else {\n app.navbar.show($navbarsEl);\n }\n },\n pageReinit(page) {\n const app = this;\n const $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) return;\n app.navbar.size($navbarEl);\n },\n pageInit(page) {\n const app = this;\n const $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) return;\n\n // Size\n app.navbar.size($navbarEl);\n\n // Need Collapse On Scroll\n let needCollapseOnScrollHandler;\n if ($navbarEl.find('.title-large').length > 0) {\n $navbarEl.addClass('navbar-large');\n }\n if ($navbarEl.hasClass('navbar-large')) {\n if (app.params.navbar.collapseLargeTitleOnScroll) needCollapseOnScrollHandler = true;\n page.$el.addClass('page-with-navbar-large');\n }\n\n // Need transparent on scroll\n let needTransparentOnScroll;\n if (!needCollapseOnScrollHandler && $navbarEl.hasClass('navbar-transparent')) {\n needTransparentOnScroll = true;\n }\n\n // Need Hide On Scroll\n let needHideOnScrollHandler;\n if (app.params.navbar.hideOnPageScroll || page.$el.find('.hide-navbar-on-scroll').length || page.$el.hasClass('hide-navbar-on-scroll') || page.$el.find('.hide-bars-on-scroll').length || page.$el.hasClass('hide-bars-on-scroll')) {\n if (page.$el.find('.keep-navbar-on-scroll').length || page.$el.hasClass('keep-navbar-on-scroll') || page.$el.find('.keep-bars-on-scroll').length || page.$el.hasClass('keep-bars-on-scroll')) {\n needHideOnScrollHandler = false;\n } else {\n needHideOnScrollHandler = true;\n }\n }\n if (needCollapseOnScrollHandler || needHideOnScrollHandler || needTransparentOnScroll) {\n app.navbar.initNavbarOnScroll(page.el, $navbarEl[0], needHideOnScrollHandler, needCollapseOnScrollHandler, needTransparentOnScroll);\n }\n },\n 'panelOpen panelSwipeOpen modalOpen': function onPanelModalOpen(instance) {\n const app = this;\n instance.$el.find('.navbar:not(.navbar-previous)').each(navbarEl => {\n app.navbar.size(navbarEl);\n });\n },\n tabShow(tabEl) {\n const app = this;\n $(tabEl).find('.navbar:not(.navbar-previous)').each(navbarEl => {\n app.navbar.size(navbarEl);\n });\n }\n },\n clicks: {\n '.navbar .title': function onTitleClick($clickedEl, clickedData, e) {\n const app = this;\n if (!app.params.navbar.scrollTopOnTitleClick) return;\n if ($(e.target).closest('a, button').length > 0) {\n return;\n }\n let $pageContentEl;\n\n // Find active page\n const $navbarEl = $clickedEl.parents('.navbar');\n const $navbarsEl = $navbarEl.parents('.navbars');\n\n // Static Layout\n $pageContentEl = $navbarEl.parents('.page-content');\n if ($pageContentEl.length === 0) {\n // Fixed Layout\n if ($navbarEl.parents('.page').length > 0) {\n $pageContentEl = $navbarEl.parents('.page').find('.page-content');\n }\n // Through Layout iOS\n if ($pageContentEl.length === 0 && $navbarsEl.length) {\n if ($navbarsEl.nextAll('.page-current').length > 0) {\n $pageContentEl = $navbarsEl.nextAll('.page-current').find('.page-content');\n }\n }\n // Through Layout\n if ($pageContentEl.length === 0) {\n if ($navbarEl.nextAll('.page-current').length > 0) {\n $pageContentEl = $navbarEl.nextAll('.page-current').find('.page-content');\n }\n }\n }\n if ($pageContentEl && $pageContentEl.length > 0) {\n // Check for tab\n if ($pageContentEl.hasClass('tab')) {\n $pageContentEl = $pageContentEl.parent('.tabs').children('.page-content.tab-active');\n }\n if ($pageContentEl.length > 0) $pageContentEl.scrollTop(0, 300);\n }\n }\n },\n vnode: {\n navbar: {\n postpatch(vnode) {\n const app = this;\n app.navbar.size(vnode.elm);\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\nconst Toolbar = {\n setHighlight(tabbarEl) {\n const app = this;\n const $tabbarEl = $(tabbarEl);\n if (app.theme === 'ios' && !$tabbarEl.hasClass('tabbar-highlight')) return;\n if ($tabbarEl.length === 0 || !($tabbarEl.hasClass('tabbar') || $tabbarEl.hasClass('tabbar-icons'))) return;\n let $highlightEl = $tabbarEl.find('.tab-link-highlight');\n const tabLinksCount = $tabbarEl.find('.tab-link').length;\n if (tabLinksCount === 0) {\n $highlightEl.remove();\n return;\n }\n if ($highlightEl.length === 0) {\n $tabbarEl.children('.toolbar-inner').append('');\n $highlightEl = $tabbarEl.find('.tab-link-highlight');\n } else if ($highlightEl.next().length) {\n $tabbarEl.children('.toolbar-inner').append($highlightEl);\n }\n const $activeLink = $tabbarEl.find('.tab-link-active');\n let highlightWidth;\n let highlightTranslate;\n if ($tabbarEl.hasClass('tabbar-scrollable') && $activeLink && $activeLink[0]) {\n highlightWidth = `${$activeLink[0].offsetWidth}px`;\n highlightTranslate = `${$activeLink[0].offsetLeft}px`;\n } else {\n const activeIndex = $activeLink.index();\n highlightWidth = `${100 / tabLinksCount}%`;\n highlightTranslate = `${(app.rtl ? -activeIndex : activeIndex) * 100}%`;\n }\n nextFrame(() => {\n $highlightEl.css('width', highlightWidth).transform(`translate3d(${highlightTranslate},0,0)`);\n });\n },\n init(tabbarEl) {\n const app = this;\n app.toolbar.setHighlight(tabbarEl);\n },\n hide(el, animate) {\n if (animate === void 0) {\n animate = true;\n }\n const app = this;\n const $el = $(el);\n if ($el.hasClass('toolbar-hidden')) return;\n const className = `toolbar-hidden${animate ? ' toolbar-transitioning' : ''}`;\n $el.transitionEnd(() => {\n $el.removeClass('toolbar-transitioning');\n });\n $el.addClass(className);\n $el.trigger('toolbar:hide');\n app.emit('toolbarHide', $el[0]);\n },\n show(el, animate) {\n if (animate === void 0) {\n animate = true;\n }\n const app = this;\n const $el = $(el);\n if (!$el.hasClass('toolbar-hidden')) return;\n if (animate) {\n $el.addClass('toolbar-transitioning');\n $el.transitionEnd(() => {\n $el.removeClass('toolbar-transitioning');\n });\n }\n $el.removeClass('toolbar-hidden');\n $el.trigger('toolbar:show');\n app.emit('toolbarShow', $el[0]);\n },\n initToolbarOnScroll(pageEl) {\n const app = this;\n const $pageEl = $(pageEl);\n let $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.parents('.views').children('.tabbar, .tabbar-icons');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n let previousScrollTop;\n let currentScrollTop;\n let scrollHeight;\n let offsetHeight;\n let reachEnd;\n let action;\n let toolbarHidden;\n function handleScroll(e) {\n if ($pageEl.hasClass('page-with-card-opened')) return;\n if ($pageEl.hasClass('page-previous')) return;\n const scrollContent = this;\n if (e && e.target && e.target !== scrollContent) {\n return;\n }\n currentScrollTop = scrollContent.scrollTop;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n toolbarHidden = $toolbarEl.hasClass('toolbar-hidden');\n if (reachEnd) {\n if (app.params.toolbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.toolbar.showOnPageScrollTop || currentScrollTop <= 44) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > 44) {\n action = 'hide';\n } else {\n action = 'show';\n }\n if (action === 'show' && toolbarHidden) {\n app.toolbar.show($toolbarEl);\n toolbarHidden = false;\n } else if (action === 'hide' && !toolbarHidden) {\n app.toolbar.hide($toolbarEl);\n toolbarHidden = true;\n }\n previousScrollTop = currentScrollTop;\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n $pageEl[0].f7ScrollToolbarHandler = handleScroll;\n }\n};\nexport default {\n name: 'toolbar',\n create() {\n const app = this;\n bindMethods(app, {\n toolbar: Toolbar\n });\n },\n params: {\n toolbar: {\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true\n }\n },\n on: {\n pageBeforeRemove(page) {\n if (page.$el[0].f7ScrollToolbarHandler) {\n page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollToolbarHandler, true);\n }\n },\n pageBeforeIn(page) {\n const app = this;\n let $toolbarEl = page.$el.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.parents('.views').children('.tabbar, .tabbar-icons');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n if (page.$el.hasClass('no-toolbar')) {\n app.toolbar.hide($toolbarEl);\n } else {\n app.toolbar.show($toolbarEl);\n }\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.tabbar, .tabbar-icons').each(tabbarEl => {\n app.toolbar.init(tabbarEl);\n });\n if (app.params.toolbar.hideOnPageScroll || page.$el.find('.hide-toolbar-on-scroll').length || page.$el.hasClass('hide-toolbar-on-scroll') || page.$el.find('.hide-bars-on-scroll').length || page.$el.hasClass('hide-bars-on-scroll')) {\n if (page.$el.find('.keep-toolbar-on-scroll').length || page.$el.hasClass('keep-toolbar-on-scroll') || page.$el.find('.keep-bars-on-scroll').length || page.$el.hasClass('keep-bars-on-scroll')) {\n return;\n }\n app.toolbar.initToolbarOnScroll(page.el);\n }\n },\n init() {\n const app = this;\n app.$el.find('.tabbar, .tabbar-icons').each(tabbarEl => {\n app.toolbar.init(tabbarEl);\n });\n }\n },\n vnode: {\n tabbar: {\n insert(vnode) {\n const app = this;\n app.toolbar.init(vnode.elm);\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nexport default {\n name: 'subnavbar',\n on: {\n pageInit(page) {\n if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) {\n page.$el.addClass('page-with-subnavbar');\n }\n const $innerSubnavbars = page.$el.find('.subnavbar').filter(subnavbarEl => {\n return $(subnavbarEl).parents('.page')[0] === page.$el[0];\n });\n if ($innerSubnavbars.length) {\n page.$el.addClass('page-with-subnavbar');\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nexport default class TouchRipple {\n constructor(app, $el, x, y) {\n const ripple = this;\n if (!$el) return undefined;\n const {\n left,\n top,\n width,\n height\n } = $el[0].getBoundingClientRect();\n const center = {\n x: x - left,\n y: y - top\n };\n let diameter = Math.max((height ** 2 + width ** 2) ** 0.5, 48);\n let isInset = false;\n const insetElements = app.params.touch.touchRippleInsetElements || '';\n if (insetElements && $el.is(insetElements)) {\n isInset = true;\n }\n if (isInset) {\n diameter = Math.max(Math.min(width, height), 48);\n }\n if (!isInset && $el.css('overflow') === 'hidden') {\n const distanceFromCenter = ((center.x - width / 2) ** 2 + (center.y - height / 2) ** 2) ** 0.5;\n const scale = (diameter / 2 + distanceFromCenter) / (diameter / 2);\n ripple.rippleTransform = `translate3d(0px, 0px, 0) scale(${scale * 2})`;\n } else {\n // prettier-ignore\n ripple.rippleTransform = `translate3d(${-center.x + width / 2}px, ${-center.y + height / 2}px, 0) scale(1)`;\n }\n if (isInset) {\n $el.addClass('ripple-inset');\n }\n ripple.$rippleWaveEl = $(`
          `);\n $el.prepend(ripple.$rippleWaveEl);\n ripple.$rippleWaveEl.animationEnd(() => {\n if (!ripple.$rippleWaveEl) return;\n if (ripple.$rippleWaveEl.hasClass('ripple-wave-out')) return;\n ripple.$rippleWaveEl.addClass('ripple-wave-in');\n if (ripple.shouldBeRemoved) {\n ripple.out();\n }\n });\n return ripple;\n }\n destroy() {\n let ripple = this;\n if (ripple.$rippleWaveEl) {\n ripple.$rippleWaveEl.remove();\n }\n Object.keys(ripple).forEach(key => {\n ripple[key] = null;\n delete ripple[key];\n });\n ripple = null;\n }\n out() {\n const ripple = this;\n const {\n $rippleWaveEl\n } = this;\n clearTimeout(ripple.removeTimeout);\n $rippleWaveEl.addClass('ripple-wave-out');\n ripple.removeTimeout = setTimeout(() => {\n ripple.destroy();\n }, 300);\n $rippleWaveEl.animationEnd(() => {\n clearTimeout(ripple.removeTimeout);\n ripple.destroy();\n });\n }\n remove() {\n const ripple = this;\n if (ripple.shouldBeRemoved) return;\n ripple.removeTimeout = setTimeout(() => {\n ripple.destroy();\n }, 400);\n ripple.shouldBeRemoved = true;\n if (ripple.$rippleWaveEl.hasClass('ripple-wave-in')) {\n ripple.out();\n }\n }\n}","import TouchRipple from './touch-ripple-class.js';\nexport default {\n name: 'touch-ripple',\n static: {\n TouchRipple\n },\n create() {\n const app = this;\n app.touchRipple = {\n create() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return new TouchRipple(...args);\n }\n };\n }\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nconst openedModals = [];\nconst dialogsQueue = [];\nfunction clearDialogsQueue() {\n if (dialogsQueue.length === 0) return;\n const dialog = dialogsQueue.shift();\n dialog.open();\n}\nclass Modal extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n const modal = this;\n const defaults = {};\n\n // Extend defaults with modules params\n modal.useModulesParams(defaults);\n modal.params = extend(defaults, params);\n modal.opened = false;\n let $containerEl = modal.params.containerEl ? $(modal.params.containerEl).eq(0) : app.$el;\n if (!$containerEl.length) $containerEl = app.$el;\n modal.$containerEl = $containerEl;\n modal.containerEl = $containerEl[0];\n\n // Install Modules\n modal.useModules();\n return this;\n }\n onOpen() {\n const modal = this;\n modal.opened = true;\n openedModals.push(modal);\n $('html').addClass(`with-modal-${modal.type.toLowerCase()}`);\n modal.$el.trigger(`modal:open ${modal.type.toLowerCase()}:open`);\n modal.emit(`local::open modalOpen ${modal.type}Open`, modal);\n }\n onOpened() {\n const modal = this;\n modal.$el.trigger(`modal:opened ${modal.type.toLowerCase()}:opened`);\n modal.emit(`local::opened modalOpened ${modal.type}Opened`, modal);\n }\n onClose() {\n const modal = this;\n modal.opened = false;\n if (!modal.type || !modal.$el) return;\n openedModals.splice(openedModals.indexOf(modal), 1);\n $('html').removeClass(`with-modal-${modal.type.toLowerCase()}`);\n modal.$el.trigger(`modal:close ${modal.type.toLowerCase()}:close`);\n modal.emit(`local::close modalClose ${modal.type}Close`, modal);\n }\n onClosed() {\n const modal = this;\n if (!modal.type || !modal.$el) return;\n modal.$el.removeClass('modal-out');\n modal.$el.hide();\n if (modal.params.backdrop && (modal.params.backdropUnique || modal.forceBackdropUnique) && modal.$backdropEl) {\n modal.$backdropEl.remove();\n }\n modal.$el.trigger(`modal:closed ${modal.type.toLowerCase()}:closed`);\n modal.emit(`local::closed modalClosed ${modal.type}Closed`, modal);\n }\n open(animateModal, force) {\n const modal = this;\n const document = getDocument();\n const app = modal.app;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n const type = modal.type;\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n if (!$el || $el.hasClass('modal-in')) {\n if (animateModal === false && $el[0] && type !== 'dialog') {\n $el[0].style.display = 'block';\n }\n if (!force) return modal;\n }\n if (type === 'dialog' && app.params.modal.queueDialogs) {\n let pushToQueue;\n if ($('.dialog.modal-in').length > 0) {\n pushToQueue = true;\n } else if (openedModals.length > 0) {\n openedModals.forEach(openedModal => {\n if (openedModal.type === 'dialog') pushToQueue = true;\n });\n }\n if (pushToQueue) {\n dialogsQueue.push(modal);\n return modal;\n }\n }\n const $modalParentEl = $el.parent();\n const wasInDom = $el.parents(document).length > 0;\n if (!$modalParentEl.is(modal.$containerEl)) {\n modal.$containerEl.append($el);\n modal.once(`${type}Closed`, () => {\n if (wasInDom) {\n $modalParentEl.append($el);\n } else {\n $el.remove();\n }\n });\n }\n // Show Modal\n $el.show();\n if (modal.params.backdrop && (modal.params.backdropUnique || modal.forceBackdropUnique) && modal.$backdropEl) {\n modal.$backdropEl.insertBefore($el);\n }\n\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n modal._clientLeft = $el[0].clientLeft;\n\n // Modal\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n if ($backdropEl) {\n $backdropEl.removeClass('not-animated');\n $backdropEl.addClass('backdrop-in');\n }\n $el.animationEnd(() => {\n transitionEnd();\n });\n $el.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('modal-out not-animated').addClass('modal-in');\n modal.onOpen();\n } else {\n if ($backdropEl) {\n $backdropEl.addClass('backdrop-in not-animated');\n }\n $el.removeClass('modal-out').addClass('modal-in not-animated');\n modal.onOpen();\n modal.onOpened();\n }\n return modal;\n }\n close(animateModal) {\n const modal = this;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n if (!$el || !$el.hasClass('modal-in')) {\n if (dialogsQueue.indexOf(modal) >= 0) {\n dialogsQueue.splice(dialogsQueue.indexOf(modal), 1);\n }\n return modal;\n }\n\n // backdrop\n if ($backdropEl) {\n let needToHideBackdrop = true;\n if (modal.type === 'popup') {\n modal.$el.prevAll('.popup.modal-in').add(modal.$el.nextAll('.popup.modal-in')).each(popupEl => {\n const popupInstance = popupEl.f7Modal;\n if (!popupInstance) return;\n if (popupInstance.params.closeByBackdropClick && popupInstance.params.backdrop && popupInstance.backdropEl === modal.backdropEl) {\n needToHideBackdrop = false;\n }\n });\n }\n if (needToHideBackdrop) {\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n $backdropEl.removeClass('backdrop-in');\n }\n }\n\n // Modal\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n $el.animationEnd(() => {\n transitionEnd();\n });\n $el.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('modal-in').addClass('modal-out');\n // Emit close\n modal.onClose();\n } else {\n $el.addClass('not-animated').removeClass('modal-in').addClass('modal-out');\n // Emit close\n modal.onClose();\n modal.onClosed();\n }\n if (modal.type === 'dialog') {\n clearDialogsQueue();\n }\n return modal;\n }\n destroy() {\n const modal = this;\n if (modal.destroyed) return;\n modal.emit(`local::beforeDestroy modalBeforeDestroy ${modal.type}BeforeDestroy`, modal);\n if (modal.$el) {\n modal.$el.trigger(`modal:beforedestroy ${modal.type.toLowerCase()}:beforedestroy`);\n if (modal.$el.length && modal.$el[0].f7Modal) {\n delete modal.$el[0].f7Modal;\n }\n }\n deleteProps(modal);\n modal.destroyed = true;\n }\n}\nexport default Modal;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Modal from './modal-class.js';\nclass CustomModal extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n backdrop: true,\n closeByBackdropClick: true,\n on: {}\n }, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const customModal = this;\n customModal.params = extendedParams;\n\n // Find Element\n let $el;\n if (!customModal.params.el) {\n $el = $(customModal.params.content);\n } else {\n $el = $(customModal.params.el);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return customModal.destroy();\n }\n let $backdropEl;\n if (customModal.params.backdrop) {\n $backdropEl = app.$el.children('.custom-modal-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('
          ');\n app.$el.append($backdropEl);\n }\n }\n function handleClick(e) {\n if (!customModal || customModal.destroyed) return;\n if ($backdropEl && e.target === $backdropEl[0]) {\n customModal.close();\n }\n }\n customModal.on('customModalOpened', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.on('click', handleClick);\n }\n });\n customModal.on('customModalClose', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.off('click', handleClick);\n }\n });\n extend(customModal, {\n app,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'customModal'\n });\n $el[0].f7Modal = customModal;\n return customModal;\n }\n}\nexport default CustomModal;","import Modal from './modal-class.js';\nimport CustomModal from './custom-modal-class.js';\nexport default {\n name: 'modal',\n static: {\n Modal,\n CustomModal\n },\n create() {\n const app = this;\n app.customModal = {\n create(params) {\n return new CustomModal(app, params);\n }\n };\n },\n params: {\n modal: {\n queueDialogs: true\n }\n }\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Dialog extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n title: app.params.dialog.title,\n text: undefined,\n content: '',\n buttons: [],\n verticalButtons: false,\n onClick: undefined,\n cssClass: undefined,\n destroyOnClose: false,\n on: {}\n }, params);\n if (typeof extendedParams.closeByBackdropClick === 'undefined') {\n extendedParams.closeByBackdropClick = app.params.dialog.closeByBackdropClick;\n }\n if (typeof extendedParams.backdrop === 'undefined') {\n extendedParams.backdrop = app.params.dialog.backdrop;\n }\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const dialog = this;\n const device = getDevice();\n const document = getDocument();\n const {\n title,\n text,\n content,\n buttons,\n verticalButtons,\n cssClass,\n backdrop\n } = extendedParams;\n dialog.params = extendedParams;\n\n // Find Element\n let $el;\n if (!dialog.params.el) {\n const dialogClasses = ['dialog'];\n if (buttons.length === 0) dialogClasses.push('dialog-no-buttons');\n if (buttons.length > 0) dialogClasses.push(`dialog-buttons-${buttons.length}`);\n if (verticalButtons) dialogClasses.push('dialog-buttons-vertical');\n if (cssClass) dialogClasses.push(cssClass);\n let buttonsHTML = '';\n if (buttons.length > 0) {\n buttonsHTML = $jsx(\"div\", {\n class: \"dialog-buttons\"\n }, buttons.map(button => $jsx(\"span\", {\n class: `dialog-button${button.strong ? ' dialog-button-strong' : ''}${button.color ? ` color-${button.color}` : ''}${button.cssClass ? ` ${button.cssClass}` : ''}`\n }, button.text)));\n }\n const dialogHtml = $jsx(\"div\", {\n class: dialogClasses.join(' ')\n }, $jsx(\"div\", {\n class: \"dialog-inner\"\n }, title && $jsx(\"div\", {\n class: \"dialog-title\"\n }, title), text && $jsx(\"div\", {\n class: \"dialog-text\"\n }, text), content), buttonsHTML);\n $el = $(dialogHtml);\n } else {\n $el = $(dialog.params.el);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return dialog.destroy();\n }\n let $backdropEl;\n if (backdrop) {\n $backdropEl = app.$el.children('.dialog-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('
          ');\n app.$el.append($backdropEl);\n }\n }\n\n // Assign events\n function buttonOnClick(e) {\n const buttonEl = this;\n const index = $(buttonEl).index();\n const button = buttons[index];\n if (button.onClick) button.onClick(dialog, e);\n if (dialog.params.onClick) dialog.params.onClick(dialog, index);\n if (button.close !== false) dialog.close();\n }\n let addKeyboardHander;\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n buttons.forEach((button, index) => {\n if (button.keyCodes && button.keyCodes.indexOf(keyCode) >= 0) {\n if (document.activeElement) document.activeElement.blur();\n if (button.onClick) button.onClick(dialog, e);\n if (dialog.params.onClick) dialog.params.onClick(dialog, index);\n if (button.close !== false) dialog.close();\n }\n });\n }\n if (buttons && buttons.length > 0) {\n dialog.on('open', () => {\n $el.find('.dialog-button').each((buttonEl, index) => {\n const button = buttons[index];\n if (button.keyCodes) addKeyboardHander = true;\n $(buttonEl).on('click', buttonOnClick);\n });\n if (addKeyboardHander && !device.ios && !device.android && !device.cordova && !device.capacitor) {\n $(document).on('keydown', onKeyDown);\n }\n });\n dialog.on('close', () => {\n $el.find('.dialog-button').each(buttonEl => {\n $(buttonEl).off('click', buttonOnClick);\n });\n if (addKeyboardHander && !device.ios && !device.android && !device.cordova && !device.capacitor) {\n $(document).off('keydown', onKeyDown);\n }\n addKeyboardHander = false;\n });\n }\n extend(dialog, {\n app,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'dialog',\n setProgress(progress, duration) {\n app.progressbar.set($el.find('.progressbar'), progress, duration);\n return dialog;\n },\n setText(newText) {\n let $textEl = $el.find('.dialog-text');\n if ($textEl.length === 0) {\n $textEl = $('
          ');\n if (typeof title !== 'undefined') {\n $textEl.insertAfter($el.find('.dialog-title'));\n } else {\n $el.find('.dialog-inner').prepend($textEl);\n }\n }\n $textEl.html(newText);\n dialog.params.text = newText;\n return dialog;\n },\n setTitle(newTitle) {\n let $titleEl = $el.find('.dialog-title');\n if ($titleEl.length === 0) {\n $titleEl = $('
          ');\n $el.find('.dialog-inner').prepend($titleEl);\n }\n $titleEl.html(newTitle);\n dialog.params.title = newTitle;\n return dialog;\n }\n });\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n if ($target.closest(dialog.el).length === 0) {\n if (dialog.params.closeByBackdropClick && dialog.backdropEl && dialog.backdropEl === target) {\n dialog.close();\n }\n }\n }\n dialog.on('opened', () => {\n if (dialog.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n dialog.on('close', () => {\n if (dialog.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n });\n $el[0].f7Modal = dialog;\n if (dialog.params.destroyOnClose) {\n dialog.once('closed', () => {\n setTimeout(() => {\n dialog.destroy();\n }, 0);\n });\n }\n return dialog;\n }\n}\nexport default Dialog;","import { extend, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\nimport Dialog from './dialog-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'dialog',\n params: {\n dialog: {\n title: undefined,\n buttonOk: 'OK',\n buttonCancel: 'Cancel',\n usernamePlaceholder: 'Username',\n passwordPlaceholder: 'Password',\n preloaderTitle: 'Loading... ',\n progressTitle: 'Loading... ',\n backdrop: true,\n closeByBackdropClick: false,\n destroyPredefinedDialogs: true,\n keyboardActions: true,\n autoFocus: true\n }\n },\n static: {\n Dialog\n },\n create() {\n const app = this;\n function defaultDialogTitle() {\n return app.params.dialog.title || app.name;\n }\n const destroyOnClose = app.params.dialog.destroyPredefinedDialogs;\n const keyboardActions = app.params.dialog.keyboardActions;\n const autoFocus = app.params.dialog.autoFocus;\n const autoFocusHandler = autoFocus ? {\n on: {\n opened(dialog) {\n dialog.$el.find('input').eq(0).focus();\n }\n }\n } : {};\n const isIosTheme = app.theme === 'ios';\n app.dialog = extend(ModalMethods({\n app,\n constructor: Dialog,\n defaultSelector: '.dialog.modal-in'\n }), {\n // Shortcuts\n alert() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n let [text, title, callbackOk] = args;\n if (args.length === 2 && typeof args[1] === 'function') {\n [text, callbackOk, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n buttons: [{\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n onClick: callbackOk,\n keyCodes: keyboardActions ? [13, 27] : null\n }],\n destroyOnClose\n }).open();\n },\n prompt() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n let [text, title, callbackOk, callbackCancel, defaultValue] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, defaultValue, title] = args;\n }\n defaultValue = typeof defaultValue === 'undefined' || defaultValue === null ? '' : defaultValue;\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n content: `
          `,\n buttons: [{\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: null\n }, {\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n keyCodes: keyboardActions ? [13] : null\n }],\n onClick(dialog, index) {\n const inputValue = dialog.$el.find('.dialog-input').val();\n if (index === 0 && callbackCancel) callbackCancel(inputValue);\n if (index === 1 && callbackOk) callbackOk(inputValue);\n },\n destroyOnClose,\n ...autoFocusHandler\n }).open();\n },\n confirm() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n let [text, title, callbackOk, callbackCancel] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n buttons: [{\n text: app.params.dialog.buttonCancel,\n onClick: callbackCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: null\n }, {\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n onClick: callbackOk,\n keyCodes: keyboardActions ? [13] : null\n }],\n destroyOnClose\n }).open();\n },\n login() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n let [text, title, callbackOk, callbackCancel] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n // prettier-ignore\n content: `\n
          \n \n
          \n
          \n \n
          `,\n buttons: [{\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: null\n }, {\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n keyCodes: keyboardActions ? [13] : null\n }],\n onClick(dialog, index) {\n const username = dialog.$el.find('[name=\"dialog-username\"]').val();\n const password = dialog.$el.find('[name=\"dialog-password\"]').val();\n if (index === 0 && callbackCancel) callbackCancel(username, password);\n if (index === 1 && callbackOk) callbackOk(username, password);\n },\n destroyOnClose,\n ...autoFocusHandler\n }).open();\n },\n password() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n let [text, title, callbackOk, callbackCancel] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n // prettier-ignore\n content: `\n
          \n \n
          `,\n buttons: [{\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: null\n }, {\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n keyCodes: keyboardActions ? [13] : null\n }],\n onClick(dialog, index) {\n const password = dialog.$el.find('[name=\"dialog-password\"]').val();\n if (index === 0 && callbackCancel) callbackCancel(password);\n if (index === 1 && callbackOk) callbackOk(password);\n },\n destroyOnClose,\n ...autoFocusHandler\n }).open();\n },\n preloader(title, color) {\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';\n return new Dialog(app, {\n title: typeof title === 'undefined' || title === null ? app.params.dialog.preloaderTitle : title,\n // prettier-ignore\n content: `
          ${preloaderInner}
          `,\n cssClass: 'dialog-preloader',\n destroyOnClose\n }).open();\n },\n progress() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n let [title, progress, color] = args;\n if (args.length === 2) {\n if (typeof args[0] === 'number') {\n [progress, color, title] = args;\n } else if (typeof args[0] === 'string' && typeof args[1] === 'string') {\n [title, color, progress] = args;\n }\n } else if (args.length === 1) {\n if (typeof args[0] === 'number') {\n [progress, title, color] = args;\n }\n }\n const infinite = typeof progress === 'undefined';\n const dialog = new Dialog(app, {\n title: typeof title === 'undefined' ? app.params.dialog.progressTitle : title,\n cssClass: 'dialog-progress',\n // prettier-ignore\n content: `\n
          \n ${!infinite ? '' : ''}\n
          \n `,\n destroyOnClose\n });\n if (!infinite) dialog.setProgress(progress);\n return dialog.open();\n }\n });\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, now, nextTick } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\nclass Popup extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.popup, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const popup = this;\n const window = getWindow();\n const document = getDocument();\n const support = getSupport();\n const device = getDevice();\n popup.params = extendedParams;\n\n // Find Element\n let $el;\n if (!popup.params.el) {\n $el = $(popup.params.content).filter(node => node.nodeType === 1).eq(0);\n } else {\n $el = $(popup.params.el).eq(0);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return popup.destroy();\n }\n let $backdropEl;\n if (popup.params.backdrop && popup.params.backdropEl) {\n $backdropEl = $(popup.params.backdropEl);\n } else if (popup.params.backdrop) {\n if (popup.params.backdropUnique) {\n $backdropEl = $('
          ');\n popup.$containerEl.append($backdropEl);\n } else {\n $backdropEl = popup.$containerEl.children('.popup-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('
          ');\n popup.$containerEl.append($backdropEl);\n }\n }\n extend(popup, {\n app,\n push: $el.hasClass('popup-push') || popup.params.push,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'popup',\n $htmlEl: $('html')\n });\n if (popup.params.push) {\n $el.addClass('popup-push');\n }\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);\n if (keyboardOpened) return;\n if ($target.closest(popup.el).length === 0) {\n if (popup.params && popup.params.closeByBackdropClick && popup.params.backdrop && popup.backdropEl && popup.backdropEl === target) {\n let needToClose = true;\n popup.$el.nextAll('.popup.modal-in').each(popupEl => {\n const popupInstance = popupEl.f7Modal;\n if (!popupInstance) return;\n if (popupInstance.params.closeByBackdropClick && popupInstance.params.backdrop && popupInstance.backdropEl === popup.backdropEl) {\n needToClose = false;\n }\n });\n if (needToClose) {\n popup.close();\n }\n }\n }\n }\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && popup.params.closeOnEscape) {\n popup.close();\n }\n }\n let pushOffset;\n let isPush;\n function pushViewScale(offset) {\n return (app.height - offset * 2) / app.height;\n }\n let allowSwipeToClose = true;\n let isTouched = false;\n let startTouch;\n let currentTouch;\n let isScrolling;\n let touchStartTime;\n let touchesDiff;\n let isMoved = false;\n let pageContentEl;\n let pageContentScrollTop;\n let pageContentOffsetHeight;\n let pageContentScrollHeight;\n let popupHeight;\n let $pushEl;\n function handleTouchStart(e) {\n if (isTouched || !allowSwipeToClose || !popup.params.swipeToClose || !e.isTrusted) return;\n if (popup.params.swipeHandler && $(e.target).closest(popup.params.swipeHandler).length === 0) {\n return;\n }\n if ($(e.target).closest('.sortable-handler').length > 0) return;\n isTouched = true;\n isMoved = false;\n startTouch = {\n x: e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY\n };\n touchStartTime = now();\n isScrolling = undefined;\n if (!popup.params.swipeHandler && e.type === 'touchstart') {\n pageContentEl = $(e.target).closest('.page-content')[0];\n }\n }\n function handleTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n currentTouch = {\n x: e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY\n };\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(currentTouch.x - startTouch.x) > Math.abs(currentTouch.y - startTouch.y));\n }\n if (isScrolling) {\n isTouched = false;\n isMoved = false;\n return;\n }\n touchesDiff = startTouch.y - currentTouch.y;\n if (isPush && pushOffset && touchesDiff > 0) {\n touchesDiff = 0;\n }\n const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n $el.transition(0);\n if (typeof popup.params.swipeToClose === 'string' && direction !== popup.params.swipeToClose) {\n $el.transform('');\n $el.transition('');\n return;\n }\n if (!isMoved) {\n if (isPush && pushOffset) {\n popupHeight = $el[0].offsetHeight;\n $pushEl = $el.prevAll('.popup.modal-in').eq(0);\n if ($pushEl.length === 0) {\n $pushEl = app.$el.children('.view, .views');\n }\n }\n if (pageContentEl) {\n pageContentScrollTop = pageContentEl.scrollTop;\n pageContentScrollHeight = pageContentEl.scrollHeight;\n pageContentOffsetHeight = pageContentEl.offsetHeight;\n if (!(pageContentScrollHeight === pageContentOffsetHeight) && !(direction === 'to-bottom' && pageContentScrollTop === 0) && !(direction === 'to-top' && pageContentScrollTop === pageContentScrollHeight - pageContentOffsetHeight)) {\n $el.transform('');\n $el.transition('');\n isTouched = false;\n isMoved = false;\n return;\n }\n }\n isMoved = true;\n popup.emit('local::swipeStart popupSwipeStart', popup);\n popup.$el.trigger('popup:swipestart');\n } else {\n popup.emit('local::swipeMove popupSwipeMove', popup);\n popup.$el.trigger('popup:swipemove');\n }\n e.preventDefault();\n if (isPush && pushOffset) {\n const pushProgress = 1 - Math.abs(touchesDiff / popupHeight);\n const scale = 1 - (1 - pushViewScale(pushOffset)) * pushProgress;\n if ($pushEl.hasClass('popup')) {\n if ($pushEl.hasClass('popup-push')) {\n $pushEl.transition(0).forEach(el => {\n el.style.setProperty('transform', `translate3d(0, calc(-1 * ${pushProgress} * (var(--f7-popup-push-offset) + 10px)) , 0px) scale(${scale})`, 'important');\n });\n } else {\n $pushEl.transition(0).forEach(el => {\n el.style.setProperty('transform', `translate3d(0, 0px , 0px) scale(${scale})`, 'important');\n });\n }\n } else {\n $pushEl.transition(0).forEach(el => {\n el.style.setProperty('transform', `translate3d(0,0,0) scale(${scale})`, 'important');\n });\n }\n }\n $el.transition(0).transform(`translate3d(0,${-touchesDiff}px,0)`);\n }\n function handleTouchEnd(e) {\n if (!e.isTrusted) return;\n isTouched = false;\n if (!isMoved) {\n return;\n }\n popup.emit('local::swipeEnd popupSwipeEnd', popup);\n popup.$el.trigger('popup:swipeend');\n isMoved = false;\n allowSwipeToClose = false;\n $el.transition('');\n if (isPush && pushOffset) {\n $pushEl.transition('').transform('');\n }\n const direction = touchesDiff <= 0 ? 'to-bottom' : 'to-top';\n if (typeof popup.params.swipeToClose === 'string' && direction !== popup.params.swipeToClose) {\n $el.transform('');\n allowSwipeToClose = true;\n return;\n }\n const diff = Math.abs(touchesDiff);\n const timeDiff = new Date().getTime() - touchStartTime;\n if (timeDiff < 300 && diff > 20 || timeDiff >= 300 && diff > 100) {\n nextTick(() => {\n if (direction === 'to-bottom') {\n $el.addClass('swipe-close-to-bottom');\n } else {\n $el.addClass('swipe-close-to-top');\n }\n $el.transform('');\n popup.emit('local::swipeclose popupSwipeClose', popup);\n popup.$el.trigger('popup:swipeclose');\n popup.close();\n allowSwipeToClose = true;\n });\n return;\n }\n allowSwipeToClose = true;\n $el.transform('');\n }\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n if (popup.params.swipeToClose) {\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n popup.once('popupDestroy', () => {\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n });\n }\n let hasPreviousPushPopup;\n const updatePushOffset = () => {\n const wasPush = isPush;\n if (popup.push) {\n isPush = popup.push && (app.width < 630 || app.height < 630 || $el.hasClass('popup-tablet-fullscreen'));\n }\n if (isPush && !wasPush) {\n // eslint-disable-next-line\n setPushOffset();\n } else if (isPush && wasPush) {\n popup.$htmlEl[0].style.setProperty('--f7-popup-push-scale', pushViewScale(pushOffset));\n } else if (!isPush && wasPush) {\n popup.$htmlEl.removeClass('with-modal-popup-push');\n popup.$htmlEl[0].style.removeProperty('--f7-popup-push-scale');\n }\n };\n const setPushOffset = () => {\n app.off('resize', updatePushOffset);\n if (popup.push) {\n isPush = popup.push && (app.width < 630 || app.height < 630 || $el.hasClass('popup-tablet-fullscreen'));\n }\n if (isPush) {\n pushOffset = parseInt($el.css('--f7-popup-push-offset'), 10);\n if (Number.isNaN(pushOffset)) {\n pushOffset = 0;\n }\n if (!pushOffset) pushOffset = app.theme === 'ios' ? 44 : 48;\n popup.$htmlEl[0].style.setProperty('--f7-popup-push-offset', `${pushOffset}px`);\n $el.addClass('popup-push');\n popup.$htmlEl.addClass('with-modal-popup-push');\n popup.$htmlEl[0].style.setProperty('--f7-popup-push-scale', pushViewScale(pushOffset));\n }\n app.on('resize', updatePushOffset);\n };\n popup.on('open', () => {\n hasPreviousPushPopup = false;\n if (popup.params.closeOnEscape) {\n $(document).on('keydown', onKeyDown);\n }\n $el.prevAll('.popup.modal-in').addClass('popup-behind');\n setPushOffset();\n });\n popup.on('opened', () => {\n $el.removeClass('swipe-close-to-bottom swipe-close-to-top');\n if (popup.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n popup.on('close', () => {\n hasPreviousPushPopup = popup.$el.prevAll('.popup-push.modal-in').length > 0;\n if (popup.params.closeOnEscape) {\n $(document).off('keydown', onKeyDown);\n }\n if (popup.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n $el.prevAll('.popup.modal-in').eq(0).removeClass('popup-behind');\n if (isPush && pushOffset && !hasPreviousPushPopup) {\n popup.$htmlEl.removeClass('with-modal-popup-push');\n popup.$htmlEl.addClass('with-modal-popup-push-closing');\n }\n app.off('resize', updatePushOffset);\n });\n popup.on('closed', () => {\n $el.removeClass('popup-behind');\n if (isPush && pushOffset && !hasPreviousPushPopup) {\n popup.$htmlEl.removeClass('with-modal-popup-push-closing');\n popup.$htmlEl[0].style.removeProperty('--f7-popup-push-scale');\n popup.$htmlEl[0].style.removeProperty('--f7-popup-push-offset');\n }\n });\n $el[0].f7Modal = popup;\n return popup;\n }\n}\nexport default Popup;","import Popup from './popup-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'popup',\n params: {\n popup: {\n backdrop: true,\n backdropEl: undefined,\n backdropUnique: false,\n closeByBackdropClick: true,\n closeOnEscape: false,\n swipeToClose: false,\n swipeHandler: null,\n push: false,\n containerEl: null\n }\n },\n static: {\n Popup\n },\n create() {\n const app = this;\n app.popup = ModalMethods({\n app,\n constructor: Popup,\n defaultSelector: '.popup.modal-in',\n parentSelector: '.popup'\n });\n },\n clicks: {\n '.popup-open': function openPopup($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.popup.open(data.popup, data.animate, $clickedEl);\n },\n '.popup-close': function closePopup($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.popup.close(data.popup, data.animate, $clickedEl);\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\nclass LoginScreen extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const loginScreen = this;\n loginScreen.params = extendedParams;\n\n // Find Element\n let $el;\n if (!loginScreen.params.el) {\n $el = $(loginScreen.params.content).filter(node => node.nodeType === 1).eq(0);\n } else {\n $el = $(loginScreen.params.el).eq(0);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return loginScreen.destroy();\n }\n extend(loginScreen, {\n app,\n $el,\n el: $el[0],\n type: 'loginScreen'\n });\n $el[0].f7Modal = loginScreen;\n return loginScreen;\n }\n}\nexport default LoginScreen;","import LoginScreen from './login-screen-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'loginScreen',\n static: {\n LoginScreen\n },\n create() {\n const app = this;\n app.loginScreen = ModalMethods({\n app,\n constructor: LoginScreen,\n defaultSelector: '.login-screen.modal-in'\n });\n },\n clicks: {\n '.login-screen-open': function openLoginScreen($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.loginScreen.open(data.loginScreen, data.animate, $clickedEl);\n },\n '.login-screen-close': function closeLoginScreen($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.loginScreen.close(data.loginScreen, data.animate, $clickedEl);\n }\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\nclass Popover extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.popover, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const popover = this;\n const device = getDevice();\n const window = getWindow();\n const document = getDocument();\n popover.params = extendedParams;\n\n // Find Element\n let $el;\n if (!popover.params.el) {\n $el = $(popover.params.content).filter(node => node.nodeType === 1).eq(0);\n } else {\n $el = $(popover.params.el).eq(0);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n // Find Target\n const $targetEl = $(popover.params.targetEl).eq(0);\n if ($el.length === 0) {\n return popover.destroy();\n }\n\n // Backdrop\n let $backdropEl;\n const forceBackdropUnique = popover.params.backdrop && app.$el.find('.popover.modal-in').filter(anotherPopoverEl => anotherPopoverEl !== $el[0]).length > 0;\n if (popover.params.backdrop && popover.params.backdropEl) {\n $backdropEl = $(popover.params.backdropEl);\n } else if (popover.params.backdrop) {\n if (popover.params.backdropUnique || forceBackdropUnique) {\n $backdropEl = $('
          ');\n $backdropEl[0].f7PopoverRef = popover;\n popover.$containerEl.append($backdropEl);\n } else {\n $backdropEl = popover.$containerEl.children('.popover-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('
          ');\n popover.$containerEl.append($backdropEl);\n }\n }\n\n // Find Arrow\n let $arrowEl;\n if ($el.find('.popover-arrow').length === 0 && popover.params.arrow) {\n $arrowEl = $('
          ');\n $el.prepend($arrowEl);\n } else {\n $arrowEl = $el.find('.popover-arrow');\n }\n\n // Open\n const originalOpen = popover.open;\n extend(popover, {\n app,\n $el,\n el: $el[0],\n $targetEl,\n targetEl: $targetEl[0],\n $arrowEl,\n arrowEl: $arrowEl[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'popover',\n forceBackdropUnique,\n open() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n let [targetEl, animate] = args;\n if (typeof args[0] === 'boolean') [animate, targetEl] = args;\n if (targetEl) {\n popover.$targetEl = $(targetEl);\n popover.targetEl = popover.$targetEl[0];\n }\n return originalOpen.call(popover, animate);\n }\n });\n function handleResize() {\n popover.resize();\n }\n popover.on('popoverOpen', () => {\n popover.resize();\n app.on('resize', handleResize);\n $(window).on('keyboardDidShow keyboardDidHide', handleResize);\n popover.on('popoverClose popoverBeforeDestroy', () => {\n app.off('resize', handleResize);\n $(window).off('keyboardDidShow keyboardDidHide', handleResize);\n });\n });\n let touchStartTarget = null;\n function handleTouchStart(e) {\n touchStartTarget = e.target;\n }\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);\n if (keyboardOpened) return;\n if ($target.closest(popover.el).length === 0) {\n if (popover.params.closeByBackdropClick && popover.params.backdrop && popover.backdropEl && popover.backdropEl === target && touchStartTarget === target) {\n popover.close();\n } else if (popover.params.closeByOutsideClick && touchStartTarget === target) {\n const isAnotherPopoverBackdrop = $target.hasClass('popover-backdrop-unique') && target.f7PopoverRef !== popover || $target.hasClass('popover-backdrop') && target !== popover.backdropEl;\n const isAnotherPopoverTarget = target.closest('.popover') && target.closest('.popover') !== popover.$el[0];\n if (!isAnotherPopoverBackdrop && !isAnotherPopoverTarget) {\n popover.close();\n }\n }\n }\n }\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && popover.params.closeOnEscape) {\n popover.close();\n }\n }\n if (popover.params.closeOnEscape) {\n popover.on('popoverOpen', () => {\n $(document).on('keydown', onKeyDown);\n });\n popover.on('popoverClose', () => {\n $(document).off('keydown', onKeyDown);\n });\n }\n popover.on('popoverOpened', () => {\n if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {\n app.on('touchstart', handleTouchStart);\n app.on('click', handleClick);\n }\n });\n popover.on('popoverClose', () => {\n if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {\n app.off('touchstart', handleTouchStart);\n app.off('click', handleClick);\n }\n });\n $el[0].f7Modal = popover;\n return popover;\n }\n resize() {\n const popover = this;\n const {\n app,\n $el,\n $targetEl,\n $arrowEl\n } = popover;\n const {\n targetX,\n targetY,\n verticalPosition\n } = popover.params;\n $el.css({\n left: '',\n top: ''\n });\n const [width, height] = [$el.width(), $el.height()];\n let arrowSize = 0;\n let arrowLeft;\n let arrowTop;\n const hasArrow = $arrowEl.length > 0;\n const arrowMin = app.theme === 'ios' ? 13 : 24;\n if (hasArrow) {\n $arrowEl.removeClass('on-left on-right on-top on-bottom').css({\n left: '',\n top: ''\n });\n arrowSize = $arrowEl.width() / 2;\n }\n $el.removeClass('popover-on-left popover-on-right popover-on-top popover-on-bottom popover-on-middle').css({\n left: '',\n top: ''\n });\n let targetWidth;\n let targetHeight;\n let targetOffsetLeft;\n let targetOffsetTop;\n let safeAreaTop = parseInt($('html').css('--f7-safe-area-top'), 10);\n let safeAreaLeft = parseInt($('html').css('--f7-safe-area-left'), 10);\n let safeAreaRight = parseInt($('html').css('--f7-safe-area-right'), 10);\n if (Number.isNaN(safeAreaTop)) safeAreaTop = 0;\n if (Number.isNaN(safeAreaLeft)) safeAreaLeft = 0;\n if (Number.isNaN(safeAreaRight)) safeAreaRight = 0;\n if ($targetEl && $targetEl.length > 0) {\n targetWidth = $targetEl.outerWidth();\n targetHeight = $targetEl.outerHeight();\n const targetOffset = $targetEl.offset();\n targetOffsetLeft = targetOffset.left - app.left;\n targetOffsetTop = targetOffset.top - app.top;\n const targetParentPage = $targetEl.parents('.page');\n if (targetParentPage.length > 0) {\n targetOffsetTop -= targetParentPage[0].scrollTop;\n }\n } else if (typeof targetX !== 'undefined' && targetY !== 'undefined') {\n targetOffsetLeft = targetX;\n targetOffsetTop = targetY;\n targetWidth = popover.params.targetWidth || 0;\n targetHeight = popover.params.targetHeight || 0;\n }\n let [left, top, diff] = [0, 0, 0];\n // Top Position\n const forcedPosition = verticalPosition === 'auto' ? false : verticalPosition;\n let position = forcedPosition || 'top';\n if (forcedPosition === 'top' || !forcedPosition && height + arrowSize < targetOffsetTop - safeAreaTop) {\n // On top\n top = targetOffsetTop - height - arrowSize;\n } else if (forcedPosition === 'bottom' || !forcedPosition && height + arrowSize < app.height - targetOffsetTop - targetHeight) {\n // On bottom\n position = 'bottom';\n top = targetOffsetTop + targetHeight + arrowSize;\n } else {\n // On middle\n position = 'middle';\n top = targetHeight / 2 + targetOffsetTop - height / 2;\n diff = top;\n top = Math.max(5, Math.min(top, app.height - height - 5));\n diff -= top;\n }\n\n // Horizontal Position\n if (position === 'top' || position === 'bottom') {\n left = targetWidth / 2 + targetOffsetLeft - width / 2;\n diff = left;\n left = Math.max(5, Math.min(left, app.width - width - 5));\n if (safeAreaLeft) {\n left = Math.max(left, safeAreaLeft);\n }\n if (safeAreaRight && left + width > app.width - 5 - safeAreaRight) {\n left = app.width - 5 - safeAreaRight - width;\n }\n diff -= left;\n if (hasArrow) {\n if (position === 'top') {\n $arrowEl.addClass('on-bottom');\n }\n if (position === 'bottom') {\n $arrowEl.addClass('on-top');\n }\n arrowLeft = width / 2 - arrowSize + diff;\n arrowLeft = Math.max(Math.min(arrowLeft, width - arrowSize * 2 - arrowMin), arrowMin);\n $arrowEl.css({\n left: `${arrowLeft}px`\n });\n }\n } else if (position === 'middle') {\n left = targetOffsetLeft - width - arrowSize;\n if (hasArrow) $arrowEl.addClass('on-right');\n if (left < 5 || left + width + safeAreaRight > app.width || left < safeAreaLeft) {\n if (left < 5) left = targetOffsetLeft + targetWidth + arrowSize;\n if (left + width + safeAreaRight > app.width) left = app.width - width - 5 - safeAreaRight;\n if (left < safeAreaLeft) left = safeAreaLeft;\n if (hasArrow) $arrowEl.removeClass('on-right').addClass('on-left');\n }\n if (hasArrow) {\n arrowTop = height / 2 - arrowSize + diff;\n arrowTop = Math.max(Math.min(arrowTop, height - arrowSize * 2 - arrowMin), arrowMin);\n $arrowEl.css({\n top: `${arrowTop}px`\n });\n }\n }\n\n // Horizontal Position\n let hPosition;\n if (targetOffsetLeft < app.width / 2) {\n hPosition = 'right';\n } else {\n hPosition = 'left';\n }\n $el.addClass(`popover-on-${position} popover-on-${hPosition}`);\n\n // Apply Styles\n $el.css({\n top: `${top}px`,\n left: `${left}px`\n });\n }\n}\nexport default Popover;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Popover from './popover-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'popover',\n params: {\n popover: {\n verticalPosition: 'auto',\n arrow: true,\n backdrop: true,\n backdropEl: undefined,\n backdropUnique: false,\n closeByBackdropClick: true,\n closeByOutsideClick: true,\n closeOnEscape: false,\n containerEl: null\n }\n },\n static: {\n Popover\n },\n create() {\n const app = this;\n app.popover = extend(ModalMethods({\n app,\n constructor: Popover,\n defaultSelector: '.popover.modal-in'\n }), {\n open(popoverEl, targetEl, animate) {\n let $popoverEl = $(popoverEl);\n if ($popoverEl.length > 1) {\n // check if same popover in other page\n const $targetPage = $(targetEl).parents('.page');\n if ($targetPage.length) {\n $popoverEl.each(el => {\n const $el = $(el);\n if ($el.parents($targetPage)[0] === $targetPage[0]) {\n $popoverEl = $el;\n }\n });\n }\n }\n if ($popoverEl.length > 1) {\n $popoverEl = $popoverEl.eq($popoverEl.length - 1);\n }\n let popover = $popoverEl[0].f7Modal;\n const data = $popoverEl.dataset();\n if (!popover) {\n popover = new Popover(app, Object.assign({\n el: $popoverEl,\n targetEl\n }, data));\n }\n return popover.open(targetEl, animate);\n }\n });\n },\n clicks: {\n '.popover-open': function openPopover($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.popover.open(data.popover, $clickedEl, data.animate);\n },\n '.popover-close': function closePopover($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.popover.close(data.popover, data.animate, $clickedEl);\n }\n }\n};","/* eslint indent: [\"off\"] */\nimport { getWindow, getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\nimport { extend, nextTick } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\nimport $ from '../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Actions extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.actions, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const actions = this;\n const device = getDevice();\n const window = getWindow();\n const document = getDocument();\n actions.params = extendedParams;\n\n // Buttons\n let groups;\n if (actions.params.buttons) {\n groups = actions.params.buttons;\n if (!Array.isArray(groups[0])) groups = [groups];\n }\n actions.groups = groups;\n\n // Find Element\n let $el;\n if (actions.params.el) {\n $el = $(actions.params.el).eq(0);\n } else if (actions.params.content) {\n $el = $(actions.params.content).filter(node => node.nodeType === 1).eq(0);\n } else if (actions.params.buttons) {\n if (actions.params.convertToPopover) {\n actions.popoverHtml = actions.renderPopover();\n }\n actions.actionsHtml = actions.render();\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el && $el.length === 0 && !(actions.actionsHtml || actions.popoverHtml)) {\n return actions.destroy();\n }\n\n // Backdrop\n let $backdropEl;\n if (actions.params.backdrop && actions.params.backdropEl) {\n $backdropEl = $(actions.params.backdropEl);\n } else if (actions.params.backdrop) {\n if (actions.params.backdropUnique) {\n $backdropEl = $('
          ');\n actions.$containerEl.append($backdropEl);\n } else {\n $backdropEl = actions.$containerEl.children('.actions-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('
          ');\n actions.$containerEl.append($backdropEl);\n }\n }\n const originalOpen = actions.open;\n const originalClose = actions.close;\n let popover;\n function buttonOnClick(e) {\n const $buttonEl = $(this);\n let buttonIndex;\n let groupIndex;\n if ($buttonEl.hasClass('list-button') || $buttonEl.hasClass('item-link')) {\n buttonIndex = $buttonEl.parents('li').index();\n groupIndex = $buttonEl.parents('.list').index();\n } else {\n buttonIndex = $buttonEl.index();\n groupIndex = $buttonEl.parents('.actions-group').index();\n }\n if (typeof groups !== 'undefined') {\n const button = groups[groupIndex][buttonIndex];\n if (button.onClick) button.onClick(actions, e);\n if (actions.params.onClick) actions.params.onClick(actions, e);\n if (button.close !== false) actions.close();\n }\n }\n actions.open = function open(animate) {\n let convertToPopover = false;\n const {\n targetEl,\n targetX,\n targetY,\n targetWidth,\n targetHeight\n } = actions.params;\n if (actions.params.convertToPopover && (targetEl || targetX !== undefined && targetY !== undefined)) {\n // Popover\n if (actions.params.forceToPopover || device.ios && device.ipad || app.width >= 768 || device.desktop) {\n convertToPopover = true;\n }\n }\n if (convertToPopover && actions.popoverHtml) {\n popover = app.popover.create({\n containerEl: actions.params.containerEl,\n content: actions.popoverHtml,\n backdrop: actions.params.backdrop,\n targetEl,\n targetX,\n targetY,\n targetWidth,\n targetHeight,\n on: {\n open() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:open ${actions.type.toLowerCase()}:open`);\n actions.emit(`local::open modalOpen ${actions.type}Open`, actions);\n },\n opened() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:opened ${actions.type.toLowerCase()}:opened`);\n actions.emit(`local::opened modalOpened ${actions.type}Opened`, actions);\n },\n close() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:close ${actions.type.toLowerCase()}:close`);\n actions.emit(`local::close modalClose ${actions.type}Close`, actions);\n },\n closed() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:closed ${actions.type.toLowerCase()}:closed`);\n actions.emit(`local::closed modalClosed ${actions.type}Closed`, actions);\n }\n }\n });\n popover.open(animate);\n popover.once('popoverOpened', () => {\n popover.$el.find('.list-button, .item-link').each(buttonEl => {\n $(buttonEl).on('click', buttonOnClick);\n });\n });\n popover.once('popoverClosed', () => {\n popover.$el.find('.list-button, .item-link').each(buttonEl => {\n $(buttonEl).off('click', buttonOnClick);\n });\n nextTick(() => {\n popover.destroy();\n popover = undefined;\n });\n });\n } else {\n actions.$el = actions.actionsHtml ? $(actions.actionsHtml) : actions.$el;\n actions.$el[0].f7Modal = actions;\n if (actions.groups) {\n actions.$el.find('.actions-button').each(buttonEl => {\n $(buttonEl).on('click', buttonOnClick);\n });\n actions.once('actionsClosed', () => {\n actions.$el.find('.actions-button').each(buttonEl => {\n $(buttonEl).off('click', buttonOnClick);\n });\n });\n }\n actions.el = actions.$el[0];\n originalOpen.call(actions, animate);\n }\n return actions;\n };\n actions.close = function close(animate) {\n if (popover) {\n popover.close(animate);\n } else {\n originalClose.call(actions, animate);\n }\n return actions;\n };\n extend(actions, {\n app,\n $el,\n el: $el ? $el[0] : undefined,\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'actions'\n });\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);\n if (keyboardOpened) return;\n if ($target.closest(actions.el).length === 0) {\n if (actions.params.closeByBackdropClick && actions.params.backdrop && actions.backdropEl && actions.backdropEl === target) {\n actions.close();\n } else if (actions.params.closeByOutsideClick) {\n actions.close();\n }\n }\n }\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && actions.params.closeOnEscape) {\n actions.close();\n }\n }\n if (actions.params.closeOnEscape) {\n actions.on('open', () => {\n $(document).on('keydown', onKeyDown);\n });\n actions.on('close', () => {\n $(document).off('keydown', onKeyDown);\n });\n }\n actions.on('opened', () => {\n if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {\n app.on('click', handleClick);\n }\n });\n actions.on('close', () => {\n if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {\n app.off('click', handleClick);\n }\n });\n if ($el) {\n $el[0].f7Modal = actions;\n }\n return actions;\n }\n render() {\n const actions = this;\n if (actions.params.render) return actions.params.render.call(actions, actions);\n const {\n groups\n } = actions;\n const cssClass = actions.params.cssClass;\n return $jsx(\"div\", {\n class: `actions-modal${actions.params.grid ? ' actions-grid' : ''} ${cssClass || ''}`\n }, groups.map(group => $jsx(\"div\", {\n class: \"actions-group\"\n }, group.map(button => {\n const buttonClasses = [`actions-${button.label ? 'label' : 'button'}`];\n const {\n color,\n bg,\n strong,\n disabled,\n label,\n text,\n icon\n } = button;\n if (color) buttonClasses.push(`color-${color}`);\n if (bg) buttonClasses.push(`bg-color-${bg}`);\n if (strong) buttonClasses.push('actions-button-strong');\n if (disabled) buttonClasses.push('disabled');\n if (label) {\n return $jsx(\"div\", {\n class: buttonClasses.join(' ')\n }, text);\n }\n return $jsx(\"div\", {\n class: buttonClasses.join(' ')\n }, icon && $jsx(\"div\", {\n class: \"actions-button-media\"\n }, icon), $jsx(\"div\", {\n class: \"actions-button-text\"\n }, text));\n }))));\n }\n renderPopover() {\n const actions = this;\n if (actions.params.renderPopover) return actions.params.renderPopover.call(actions, actions);\n const {\n groups\n } = actions;\n const cssClass = actions.params.cssClass;\n return $jsx(\"div\", {\n class: `popover popover-from-actions ${cssClass || ''}`\n }, $jsx(\"div\", {\n class: \"popover-inner\"\n }, groups.map(group => $jsx(\"div\", {\n class: \"list\"\n }, $jsx(\"ul\", null, group.map(button => {\n const itemClasses = [];\n const {\n color,\n bg,\n strong,\n disabled,\n label,\n text,\n icon\n } = button;\n if (color) itemClasses.push(`color-${color}`);\n if (bg) itemClasses.push(`bg-color-${bg}`);\n if (strong) itemClasses.push('popover-from-actions-strong');\n if (disabled) itemClasses.push('disabled');\n if (label) {\n itemClasses.push('popover-from-actions-label');\n return `
        • ${text}
        • `;\n }\n if (icon) {\n itemClasses.push('item-link item-content');\n return $jsx(\"li\", null, $jsx(\"a\", {\n class: itemClasses.join(' ')\n }, $jsx(\"div\", {\n class: \"item-media\"\n }, icon), $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: \"item-title\"\n }, text))));\n }\n itemClasses.push('list-button');\n return $jsx(\"li\", null, $jsx(\"a\", {\n class: itemClasses.join(' ')\n }, text));\n }))))));\n }\n}\nexport default Actions;","import Actions from './actions-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'actions',\n params: {\n actions: {\n convertToPopover: true,\n forceToPopover: false,\n backdrop: true,\n backdropEl: undefined,\n backdropUnique: false,\n cssClass: null,\n closeByBackdropClick: true,\n closeOnEscape: false,\n render: null,\n renderPopover: null,\n containerEl: null\n }\n },\n static: {\n Actions\n },\n create() {\n const app = this;\n app.actions = ModalMethods({\n app,\n constructor: Actions,\n defaultSelector: '.actions-modal.modal-in'\n });\n },\n clicks: {\n '.actions-open': function openActions($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.actions.open(data.actions, data.animate, $clickedEl);\n },\n '.actions-close': function closeActions($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.actions.close(data.actions, data.animate, $clickedEl);\n }\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, now, getTranslate } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\nclass Sheet extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.sheet, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const sheet = this;\n const window = getWindow();\n const document = getDocument();\n const support = getSupport();\n const device = getDevice();\n sheet.params = extendedParams;\n if (typeof sheet.params.backdrop === 'undefined') {\n sheet.params.backdrop = app.theme !== 'ios';\n }\n\n // Find Element\n let $el;\n if (!sheet.params.el) {\n $el = $(sheet.params.content).filter(node => node.nodeType === 1).eq(0);\n } else {\n $el = $(sheet.params.el).eq(0);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return sheet.destroy();\n }\n let $backdropEl;\n if (sheet.params.backdrop && sheet.params.backdropEl) {\n $backdropEl = $(sheet.params.backdropEl);\n } else if (sheet.params.backdrop) {\n if (sheet.params.backdropUnique) {\n $backdropEl = $('
          ');\n sheet.$containerEl.append($backdropEl);\n } else {\n $backdropEl = sheet.$containerEl.children('.sheet-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('
          ');\n sheet.$containerEl.append($backdropEl);\n }\n }\n extend(sheet, {\n app,\n push: $el.hasClass('sheet-modal-push') || sheet.params.push,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'sheet',\n $htmlEl: $('html')\n });\n if (sheet.params.push) {\n $el.addClass('sheet-modal-push');\n }\n let $pageContentEl;\n function scrollToElementOnOpen() {\n const $scrollEl = $(sheet.params.scrollToEl).eq(0);\n if ($scrollEl.length === 0) return;\n $pageContentEl = $scrollEl.parents('.page-content');\n if ($pageContentEl.length === 0) return;\n const paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n const pageHeight = $pageContentEl[0].offsetHeight - paddingTop - $el.height();\n const pageScrollHeight = $pageContentEl[0].scrollHeight - paddingTop - $el.height();\n const pageScroll = $pageContentEl.scrollTop();\n let newPaddingBottom;\n const scrollElTop = $scrollEl.offset().top - paddingTop + $scrollEl[0].offsetHeight;\n if (scrollElTop > pageHeight) {\n const scrollTop = pageScroll + scrollElTop - pageHeight;\n if (scrollTop + pageHeight > pageScrollHeight) {\n newPaddingBottom = scrollTop + pageHeight - pageScrollHeight + paddingBottom;\n if (pageHeight === pageScrollHeight) {\n newPaddingBottom = $el.height();\n }\n $pageContentEl.css({\n 'padding-bottom': `${newPaddingBottom}px`\n });\n }\n $pageContentEl.scrollTop(scrollTop, 300);\n }\n }\n function scrollToElementOnClose() {\n if ($pageContentEl && $pageContentEl.length > 0) {\n $pageContentEl.css({\n 'padding-bottom': ''\n });\n }\n }\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);\n if (keyboardOpened) return;\n if ($target.closest(sheet.el).length === 0) {\n if (sheet.params.closeByBackdropClick && sheet.params.backdrop && sheet.backdropEl && sheet.backdropEl === target) {\n sheet.close();\n } else if (sheet.params.closeByOutsideClick) {\n sheet.close();\n }\n }\n }\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && sheet.params.closeOnEscape) {\n sheet.close();\n }\n }\n let pushOffset;\n function pushViewScale(offset) {\n return (app.height - offset * 2) / app.height;\n }\n const useBreakpoints = sheet.params.breakpoints && sheet.params.breakpoints.length > 0;\n let isTouched = false;\n let startTouch;\n let currentTouch;\n let isScrolling;\n let touchStartTime;\n let touchesDiff;\n let isMoved = false;\n let isTopSheetModal;\n let swipeStepTranslate;\n let startTranslate;\n let currentTranslate;\n let sheetElOffsetHeight;\n let minTranslate;\n let maxTranslate;\n let $pushViewEl;\n let pushBorderRadius;\n let sheetPageContentEl;\n let sheetPageContentScrollTop;\n let sheetPageContentScrollHeight;\n let sheetPageContentOffsetHeight;\n let breakpointsTranslate = [];\n let currentBreakpointIndex;\n let backdropBreakpointSet = true;\n function handleTouchStart(e) {\n if (isTouched || !(sheet.params.swipeToClose || sheet.params.swipeToStep) || !e.isTrusted) return;\n if (sheet.params.swipeHandler && $(e.target).closest(sheet.params.swipeHandler).length === 0) {\n return;\n }\n if ($(e.target).closest('.sortable-handler').length > 0) return;\n isTouched = true;\n isMoved = false;\n startTouch = {\n x: e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY\n };\n touchStartTime = now();\n isScrolling = undefined;\n isTopSheetModal = $el.hasClass('sheet-modal-top');\n if (!sheet.params.swipeHandler && e.type === 'touchstart') {\n sheetPageContentEl = $(e.target).closest('.page-content')[0];\n }\n }\n function handleTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n currentTouch = {\n x: e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY\n };\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(currentTouch.x - startTouch.x) > Math.abs(currentTouch.y - startTouch.y));\n }\n if (isScrolling) {\n isTouched = false;\n isMoved = false;\n return;\n }\n touchesDiff = startTouch.y - currentTouch.y;\n const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n if (!isMoved) {\n if (sheetPageContentEl && !$el.hasClass('modal-in-swipe-step')) {\n sheetPageContentScrollTop = sheetPageContentEl.scrollTop;\n sheetPageContentScrollHeight = sheetPageContentEl.scrollHeight;\n sheetPageContentOffsetHeight = sheetPageContentEl.offsetHeight;\n if (!(sheetPageContentScrollHeight === sheetPageContentOffsetHeight) && !(direction === 'to-bottom' && sheetPageContentScrollTop === 0) && !(direction === 'to-top' && sheetPageContentScrollTop === sheetPageContentScrollHeight - sheetPageContentOffsetHeight)) {\n $el.transform('');\n isTouched = false;\n isMoved = false;\n return;\n }\n }\n if (sheet.push && pushOffset) {\n $pushViewEl = app.$el.children('.view, .views');\n }\n sheetElOffsetHeight = $el[0].offsetHeight;\n startTranslate = getTranslate($el[0], 'y');\n if (isTopSheetModal) {\n minTranslate = sheet.params.swipeToClose ? -sheetElOffsetHeight : -swipeStepTranslate;\n maxTranslate = 0;\n } else {\n minTranslate = 0;\n maxTranslate = sheet.params.swipeToClose ? sheetElOffsetHeight : useBreakpoints ? breakpointsTranslate[0] : swipeStepTranslate;\n }\n isMoved = true;\n }\n currentTranslate = startTranslate - touchesDiff;\n currentTranslate = Math.min(Math.max(currentTranslate, minTranslate), maxTranslate);\n e.preventDefault();\n if (useBreakpoints) {\n let progress = isTopSheetModal ? 1 + currentTranslate / sheetElOffsetHeight : 1 - currentTranslate / sheetElOffsetHeight;\n progress = Math.abs(progress);\n progress = Math.min(Math.max(progress, 0), 1);\n // eslint-disable-next-line\n setBackdropBreakpoint(progress);\n // eslint-disable-next-line\n setPushBreakpoint(progress);\n }\n if (sheet.push && pushOffset && !useBreakpoints) {\n let progress = (currentTranslate - startTranslate) / sheetElOffsetHeight;\n if (sheet.params.swipeToStep) {\n if (isTopSheetModal) {\n progress = currentTranslate / swipeStepTranslate;\n } else {\n progress = 1 - (swipeStepTranslate - currentTranslate) / swipeStepTranslate;\n }\n }\n progress = Math.abs(progress);\n progress = Math.min(Math.max(progress, 0), 1);\n const pushProgress = 1 - progress;\n const scale = 1 - (1 - pushViewScale(pushOffset)) * pushProgress;\n $pushViewEl.transition(0).forEach(el => {\n el.style.setProperty('transform', `translate3d(0,0,0) scale(${scale})`, 'important');\n });\n if (sheet.params.swipeToStep) {\n $pushViewEl.css('border-radius', `${pushBorderRadius * pushProgress}px`);\n }\n }\n $el.transition(0).transform(`translate3d(0,${currentTranslate}px,0)`);\n if (sheet.params.swipeToStep) {\n let progress;\n if (isTopSheetModal) {\n progress = 1 - currentTranslate / swipeStepTranslate;\n } else {\n progress = (swipeStepTranslate - currentTranslate) / swipeStepTranslate;\n }\n progress = Math.min(Math.max(progress, 0), 1);\n $el.trigger('sheet:stepprogress', progress);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, progress);\n }\n }\n function handleTouchEnd() {\n isTouched = false;\n if (!isMoved) {\n return;\n }\n isMoved = false;\n $el.transform('').transition('');\n if (sheet.push && pushOffset) {\n $pushViewEl.transition('');\n if (!useBreakpoints) {\n $pushViewEl.transform('');\n $pushViewEl.css('border-radius', '');\n }\n }\n const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n const diff = Math.abs(touchesDiff);\n if (diff === 0 || currentTranslate === startTranslate) return;\n const timeDiff = new Date().getTime() - touchStartTime;\n if (!sheet.params.swipeToStep && !useBreakpoints) {\n if (direction !== (isTopSheetModal ? 'to-top' : 'to-bottom')) {\n return;\n }\n if (timeDiff < 300 && diff > 20 || timeDiff >= 300 && diff > sheetElOffsetHeight / 2) {\n sheet.close();\n }\n return;\n }\n const openDirection = isTopSheetModal ? 'to-bottom' : 'to-top';\n const closeDirection = isTopSheetModal ? 'to-top' : 'to-bottom';\n const absCurrentTranslate = Math.abs(currentTranslate);\n const absSwipeStepTranslate = Math.abs(swipeStepTranslate);\n if (timeDiff < 300 && diff > 10 && useBreakpoints) {\n // SHORT SWIPES BREAKPOINTS\n if (direction === openDirection && typeof currentBreakpointIndex !== 'undefined') {\n if (currentBreakpointIndex === params.breakpoints.length - 1) {\n // open\n sheet.setBreakpoint(1);\n } else {\n // move to next breakpoint\n currentBreakpointIndex = Math.min(breakpointsTranslate.length - 1, currentBreakpointIndex + 1);\n sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n }\n }\n if (direction === closeDirection) {\n if (currentBreakpointIndex === 0) {\n // close\n sheet.close();\n } else {\n // move to prev breakpoint\n if (typeof currentBreakpointIndex === 'undefined') {\n currentBreakpointIndex = params.breakpoints.length - 1;\n } else {\n currentBreakpointIndex = Math.max(0, currentBreakpointIndex - 1);\n }\n sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n }\n }\n } else if (timeDiff < 300 && diff > 10) {\n // SHORT SWIPES SWIPE STEP\n if (direction === openDirection && absCurrentTranslate < absSwipeStepTranslate) {\n // open step\n $el.removeClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 1);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 1);\n sheet.emit('local::_swipeStep', false);\n $el.trigger('sheet:stepopen');\n sheet.emit('local::stepOpen sheetStepOpen', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n $pushViewEl.css('border-radius', '');\n }\n }\n if (direction === closeDirection && absCurrentTranslate > absSwipeStepTranslate) {\n // close sheet\n if (sheet.params.swipeToClose) {\n sheet.close();\n } else {\n // close step\n $el.addClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 0);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n sheet.emit('local::_swipeStep', true);\n $el.trigger('sheet:stepclose');\n sheet.emit('local::stepClose sheetStepClose', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n $pushViewEl.css('border-radius', '0px');\n }\n }\n }\n if (direction === closeDirection && absCurrentTranslate <= absSwipeStepTranslate) {\n // close step\n $el.addClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 0);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n sheet.emit('local::_swipeStep', true);\n $el.trigger('sheet:stepclose');\n sheet.emit('local::stepClose sheetStepClose', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n $pushViewEl.css('border-radius', '0px');\n }\n }\n return;\n }\n if (timeDiff >= 300 && useBreakpoints) {\n // LONG SWIPES BREAKPOINTS\n const allBreakpoints = [sheetElOffsetHeight, ...breakpointsTranslate, 0];\n const closestTranslate = allBreakpoints.reduce((prev, curr) => {\n return Math.abs(curr - currentTranslate) < Math.abs(prev - currentTranslate) ? curr : prev;\n });\n const closestIndex = allBreakpoints.indexOf(closestTranslate);\n if (closestTranslate === 0) {\n // open\n sheet.setBreakpoint(1);\n } else if (closestIndex === 0) {\n // close\n sheet.close();\n } else {\n // set bp\n currentBreakpointIndex = closestIndex - 1;\n sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n }\n } else if (timeDiff >= 300) {\n // LONG SWIPES SWIPE STEP\n const stepOpened = !$el.hasClass('modal-in-swipe-step');\n if (!stepOpened) {\n if (absCurrentTranslate < absSwipeStepTranslate / 2) {\n // open step\n $el.removeClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 1);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 1);\n sheet.emit('local::_swipeStep', false);\n $el.trigger('sheet:stepopen');\n sheet.emit('local::stepOpen sheetStepOpen', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n $pushViewEl.css('border-radius', '');\n }\n } else if (absCurrentTranslate - absSwipeStepTranslate > (sheetElOffsetHeight - absSwipeStepTranslate) / 2) {\n // close sheet\n if (sheet.params.swipeToClose) sheet.close();\n }\n } else if (stepOpened) {\n if (absCurrentTranslate > absSwipeStepTranslate + (sheetElOffsetHeight - absSwipeStepTranslate) / 2) {\n // close sheet\n if (sheet.params.swipeToClose) sheet.close();\n } else if (absCurrentTranslate > absSwipeStepTranslate / 2) {\n // close step\n $el.addClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 0);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n sheet.emit('local::_swipeStep', true);\n $el.trigger('sheet:stepclose');\n sheet.emit('local::stepClose sheetStepClose', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n $pushViewEl.css('border-radius', '0px');\n }\n }\n }\n }\n }\n const setPushBreakpoint = breakpoint => {\n const {\n pushBreakpoint\n } = params;\n if (pushBreakpoint === null || typeof pushBreakpoint === 'undefined' || !sheet.push || !pushOffset) return;\n if (breakpoint >= pushBreakpoint) {\n sheet.$htmlEl.addClass('with-modal-sheet-push').removeClass('with-modal-sheet-push-closing');\n $pushViewEl.transition('').forEach(el => {\n el.style.setProperty('transform', `translate3d(0,0,0) scale(${pushViewScale(pushOffset)})`, 'important');\n });\n $pushViewEl.css('border-radius', `${pushBorderRadius * 1}px`);\n } else {\n const pushBreakpoints = [0, ...params.breakpoints, 1];\n const pushTransparentBreakpoint = pushBreakpoints[pushBreakpoints.indexOf(pushBreakpoint) - 1];\n if (breakpoint <= pushTransparentBreakpoint) {\n $pushViewEl.transition('').css('transform', '');\n $pushViewEl.css('border-radius', '');\n sheet.$htmlEl.removeClass('with-modal-sheet-push');\n if (breakpoint === pushTransparentBreakpoint) {\n sheet.$htmlEl.addClass('with-modal-sheet-push-closing');\n }\n } else {\n const progress = (breakpoint - pushTransparentBreakpoint) / (pushBreakpoint - pushTransparentBreakpoint);\n sheet.$htmlEl.addClass('with-modal-sheet-push').removeClass('with-modal-sheet-push-closing');\n $pushViewEl.transition(0).forEach(el => {\n el.style.setProperty('transform', `translate3d(0,0,0) scale(${1 - (1 - pushViewScale(pushOffset)) * progress})`, 'important');\n });\n $pushViewEl.css('border-radius', `${pushBorderRadius * progress}px`);\n }\n }\n };\n const setBackdropBreakpoint = breakpoint => {\n const {\n backdrop,\n backdropBreakpoint\n } = params;\n if (!backdropBreakpoint || !backdrop || !$backdropEl.length) return;\n if (breakpoint >= backdropBreakpoint) {\n if (!backdropBreakpointSet) {\n $backdropEl.transition('').css({\n opacity: '',\n pointerEvents: ''\n });\n }\n backdropBreakpointSet = true;\n } else {\n const backdropBreakpoints = [0, ...params.breakpoints, 1];\n const backdropTransparentBreakpoint = backdropBreakpoints[backdropBreakpoints.indexOf(backdropBreakpoint) - 1];\n if (breakpoint <= backdropTransparentBreakpoint) {\n if (backdropBreakpointSet) {\n $backdropEl.transition('').css({\n opacity: 0,\n pointerEvents: 'none'\n });\n }\n backdropBreakpointSet = false;\n } else {\n const progress = (breakpoint - backdropTransparentBreakpoint) / (backdropBreakpoint - backdropTransparentBreakpoint);\n $backdropEl.transition(0).css({\n opacity: progress,\n pointerEvents: 'auto'\n });\n }\n }\n };\n sheet.calcBreakpoints = () => {\n if (!useBreakpoints) {\n return;\n }\n const fullSize = $el[0].offsetHeight;\n // eslint-disable-next-line\n const isTopSheetModal = $el.hasClass('sheet-modal-top');\n breakpointsTranslate = [];\n sheet.params.breakpoints.forEach(ratio => {\n breakpointsTranslate.push((fullSize - fullSize * ratio) * (isTopSheetModal ? -1 : 1));\n });\n };\n sheet.setBreakpoint = value => {\n if (!useBreakpoints) {\n return sheet;\n }\n if (value === 1) {\n // open\n if (!sheet.opened) {\n sheet.open();\n }\n $el.removeClass('modal-in-breakpoint');\n currentBreakpointIndex = undefined;\n setBackdropBreakpoint(value);\n setPushBreakpoint(value);\n $el.trigger('sheet:breakpoint', value);\n sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);\n } else if (value === 0) {\n // close\n $el.trigger('sheet:breakpoint', value);\n sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);\n sheet.close();\n } else {\n const index = params.breakpoints.indexOf(value);\n if (index < 0) return sheet;\n if (!sheet.opened) {\n sheet.open();\n }\n setBackdropBreakpoint(value);\n setPushBreakpoint(value);\n $el.trigger('sheet:breakpoint', value);\n sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);\n currentBreakpointIndex = index;\n $el[0].style.setProperty('--f7-sheet-breakpoint', `${breakpointsTranslate[index]}px`);\n $el.addClass('modal-in-breakpoint');\n }\n return sheet;\n };\n const setBreakpointsOnResize = () => {\n sheet.calcBreakpoints();\n if (typeof currentBreakpointIndex !== 'undefined') {\n sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n }\n };\n sheet.setSwipeStep = function setSwipeStep(byResize) {\n if (byResize === void 0) {\n byResize = true;\n }\n const $swipeStepEl = $el.find('.sheet-modal-swipe-step').eq(0);\n if (!$swipeStepEl.length) return;\n\n // eslint-disable-next-line\n if ($el.hasClass('sheet-modal-top')) {\n swipeStepTranslate = -($swipeStepEl.offset().top - $el.offset().top + $swipeStepEl[0].offsetHeight);\n } else {\n swipeStepTranslate = $el[0].offsetHeight - ($swipeStepEl.offset().top - $el.offset().top + $swipeStepEl[0].offsetHeight);\n }\n $el[0].style.setProperty('--f7-sheet-swipe-step', `${swipeStepTranslate}px`);\n if (!byResize) {\n $el.addClass('modal-in-swipe-step');\n sheet.emit('local::_swipeStep', true);\n }\n };\n function onResize() {\n if (useBreakpoints) {\n setBreakpointsOnResize();\n } else {\n sheet.setSwipeStep(true);\n }\n }\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n if (sheet.params.swipeToClose || sheet.params.swipeToStep || useBreakpoints) {\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n sheet.once('sheetDestroy', () => {\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n });\n }\n sheet.on('open', () => {\n if (sheet.params.closeOnEscape) {\n $(document).on('keydown', onKeyDown);\n }\n $el.prevAll('.popup.modal-in').addClass('popup-behind');\n app.on('resize', onResize);\n if (sheet.params.scrollToEl) {\n scrollToElementOnOpen();\n }\n if (sheet.push) {\n pushOffset = parseInt($el.css('--f7-sheet-push-offset'), 10);\n if (Number.isNaN(pushOffset)) pushOffset = 0;\n if (!pushOffset) pushOffset = app.theme === 'ios' ? 44 : 48;\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-offset', `${pushOffset}px`);\n $el.addClass('sheet-modal-push');\n if (!useBreakpoints) {\n sheet.$htmlEl.addClass('with-modal-sheet-push');\n }\n if (!sheet.params.swipeToStep && !useBreakpoints) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n } else {\n $pushViewEl = app.$el.children('.view, .views');\n pushBorderRadius = app.theme === 'ios' ? 10 : 16;\n $pushViewEl.css('border-radius', '0px');\n }\n }\n if (useBreakpoints) {\n sheet.calcBreakpoints();\n sheet.setBreakpoint(params.breakpoints[0]);\n } else if (sheet.params.swipeToStep) {\n sheet.setSwipeStep(false);\n }\n });\n sheet.on('opened', () => {\n if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n sheet.on('close', () => {\n currentBreakpointIndex = undefined;\n if (sheet.params.swipeToStep || useBreakpoints) {\n $el.removeClass('modal-in-swipe-step modal-in-breakpoint');\n sheet.emit('local::_swipeStep', false);\n }\n app.off('resize', onResize);\n if (sheet.params.closeOnEscape) {\n $(document).off('keydown', onKeyDown);\n }\n if (sheet.params.scrollToEl) {\n scrollToElementOnClose();\n }\n if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n $el.prevAll('.popup.modal-in').eq(0).removeClass('popup-behind');\n if (sheet.push && pushOffset) {\n sheet.$htmlEl.removeClass('with-modal-sheet-push');\n sheet.$htmlEl.addClass('with-modal-sheet-push-closing');\n if ($pushViewEl) {\n $pushViewEl.transform('');\n $pushViewEl.css('border-radius', '');\n }\n }\n });\n sheet.on('closed', () => {\n if (sheet.push && pushOffset) {\n sheet.$htmlEl.removeClass('with-modal-sheet-push-closing');\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-offset');\n }\n });\n sheet.stepOpen = function stepOpen() {\n $el.removeClass('modal-in-swipe-step');\n sheet.emit('local::_swipeStep', false);\n if (sheet.push) {\n if (!pushOffset) {\n pushOffset = parseInt($el.css('--f7-sheet-push-offset'), 10);\n if (Number.isNaN(pushOffset)) pushOffset = 0;\n }\n if (pushOffset) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n }\n }\n };\n sheet.stepClose = function stepClose() {\n $el.addClass('modal-in-swipe-step');\n sheet.emit('local::_swipeStep', true);\n if (sheet.push) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n }\n };\n sheet.stepToggle = function stepToggle() {\n $el.toggleClass('modal-in-swipe-step');\n sheet.emit('local::_swipeStep', $el.hasClass('modal-in-swipe-step'));\n };\n $el[0].f7Modal = sheet;\n return sheet;\n }\n}\nexport default Sheet;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Sheet from './sheet-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'sheet',\n params: {\n sheet: {\n push: false,\n backdrop: undefined,\n backdropEl: undefined,\n backdropUnique: false,\n closeByBackdropClick: true,\n closeByOutsideClick: false,\n closeOnEscape: false,\n swipeToClose: false,\n swipeToStep: false,\n breakpoints: [],\n backdropBreakpoint: 0,\n pushBreakpoint: 0,\n swipeHandler: null,\n containerEl: null\n }\n },\n static: {\n Sheet\n },\n create() {\n const app = this;\n app.sheet = extend({}, ModalMethods({\n app,\n constructor: Sheet,\n defaultSelector: '.sheet-modal.modal-in'\n }), {\n stepOpen(sheet) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.stepOpen) return sheetInstance.stepOpen();\n return undefined;\n },\n stepClose(sheet) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.stepClose) return sheetInstance.stepClose();\n return undefined;\n },\n stepToggle(sheet) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.stepToggle) return sheetInstance.stepToggle();\n return undefined;\n },\n setBreakpoint(sheet, breakpoint) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.setBreakpoint) return sheetInstance.setBreakpoint(breakpoint);\n return undefined;\n }\n });\n },\n clicks: {\n '.sheet-open': function openSheet($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n if ($('.sheet-modal.modal-in').length > 0 && data.sheet && $(data.sheet)[0] !== $('.sheet-modal.modal-in')[0]) {\n app.sheet.close('.sheet-modal.modal-in');\n }\n app.sheet.open(data.sheet, data.animate, $clickedEl);\n },\n '.sheet-close': function closeSheet($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.sheet.close(data.sheet, data.animate, $clickedEl);\n }\n }\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, nextTick } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Toast extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.toast, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const toast = this;\n const window = getWindow();\n toast.app = app;\n toast.params = extendedParams;\n const {\n closeButton,\n closeTimeout\n } = toast.params;\n let $el;\n if (!toast.params.el) {\n // Find Element\n const toastHtml = toast.render();\n $el = $(toastHtml);\n } else {\n $el = $(toast.params.el);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return toast.destroy();\n }\n extend(toast, {\n $el,\n el: $el[0],\n type: 'toast'\n });\n $el[0].f7Modal = toast;\n if (closeButton) {\n $el.find('.toast-button').on('click', () => {\n toast.emit('local::closeButtonClick toastCloseButtonClick', toast);\n toast.close();\n });\n toast.on('beforeDestroy', () => {\n $el.find('.toast-button').off('click');\n });\n }\n let timeoutId;\n toast.on('open', () => {\n $('.toast.modal-in').each(openedEl => {\n const toastInstance = app.toast.get(openedEl);\n if (openedEl !== toast.el && toastInstance) {\n toastInstance.close();\n }\n });\n if (closeTimeout) {\n timeoutId = nextTick(() => {\n toast.close();\n }, closeTimeout);\n }\n });\n toast.on('close', () => {\n window.clearTimeout(timeoutId);\n });\n if (toast.params.destroyOnClose) {\n toast.once('closed', () => {\n setTimeout(() => {\n toast.destroy();\n }, 0);\n });\n }\n return toast;\n }\n render() {\n const toast = this;\n if (toast.params.render) return toast.params.render.call(toast, toast);\n const {\n position,\n horizontalPosition,\n cssClass,\n icon,\n text,\n closeButton,\n closeButtonColor,\n closeButtonText\n } = toast.params;\n const horizontalClass = position === 'top' || position === 'bottom' ? `toast-horizontal-${horizontalPosition}` : '';\n return $jsx(\"div\", {\n class: `toast toast-${position} ${horizontalClass} ${cssClass || ''} ${icon ? 'toast-with-icon' : ''}`\n }, $jsx(\"div\", {\n class: \"toast-content\"\n }, icon && $jsx(\"div\", {\n class: \"toast-icon\"\n }, icon), $jsx(\"div\", {\n class: \"toast-text\"\n }, text), closeButton && !icon && $jsx(\"a\", {\n class: `toast-button button ${closeButtonColor ? `color-${closeButtonColor}` : ''}`\n }, closeButtonText)));\n }\n}\nexport default Toast;","import { extend } from '../../shared/utils.js';\nimport Toast from './toast-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'toast',\n static: {\n Toast\n },\n create() {\n const app = this;\n app.toast = extend({}, ModalMethods({\n app,\n constructor: Toast,\n defaultSelector: '.toast.modal-in'\n }), {\n // Shortcuts\n show(params) {\n extend(params, {\n destroyOnClose: true\n });\n return new Toast(app, params).open();\n }\n });\n },\n params: {\n toast: {\n icon: null,\n text: null,\n position: 'bottom',\n horizontalPosition: 'left',\n closeButton: false,\n closeButtonColor: null,\n closeButtonText: 'Ok',\n closeTimeout: null,\n cssClass: null,\n render: null,\n containerEl: null\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { bindMethods, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\nconst Preloader = {\n init(el) {\n const app = this;\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n const $el = $(el);\n if ($el.length === 0 || $el.children('.preloader-inner').length > 0 || $el.children('.preloader-inner-line').length > 0) return;\n $el.append(preloaders[`${app.theme}PreloaderContent`]);\n },\n // Modal\n visible: false,\n show(color) {\n if (color === void 0) {\n color = 'white';\n }\n const app = this;\n if (Preloader.visible) return;\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';\n $('html').addClass('with-modal-preloader');\n // prettier-ignore\n app.$el.append(`\n
          \n
          \n
          ${preloaderInner}
          \n
          \n `);\n Preloader.visible = true;\n },\n showIn(el, color) {\n if (color === void 0) {\n color = 'white';\n }\n const app = this;\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';\n $(el || 'html').addClass('with-modal-preloader');\n // prettier-ignore\n $(el || app.$el).append(`\n
          \n
          \n
          ${preloaderInner}
          \n
          \n `);\n },\n hide() {\n const app = this;\n if (!Preloader.visible) return;\n $('html').removeClass('with-modal-preloader');\n app.$el.find('.preloader-backdrop, .preloader-modal').remove();\n Preloader.visible = false;\n },\n hideIn(el) {\n const app = this;\n $(el || 'html').removeClass('with-modal-preloader');\n $(el || app.$el).find('.preloader-backdrop, .preloader-modal').remove();\n }\n};\nexport default {\n name: 'preloader',\n create() {\n const app = this;\n bindMethods(app, {\n preloader: Preloader\n });\n },\n on: {\n photoBrowserOpen(pb) {\n const app = this;\n pb.$el.find('.preloader').each(preloaderEl => {\n app.preloader.init(preloaderEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.preloader').each(preloaderEl => {\n app.preloader.init(preloaderEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.preloader').each(preloaderEl => {\n app.preloader.init(preloaderEl);\n });\n }\n },\n vnode: {\n preloader: {\n insert(vnode) {\n const app = this;\n const preloaderEl = vnode.elm;\n app.preloader.init(preloaderEl);\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nconst Progressbar = {\n set() {\n const app = this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n let [el, progress, duration] = args;\n if (typeof args[0] === 'number') {\n [progress, duration] = args;\n el = app.$el;\n }\n if (typeof progress === 'undefined' || progress === null) return el;\n if (!progress) progress = 0;\n const $el = $(el || app.$el);\n if ($el.length === 0) {\n return el;\n }\n const progressNormalized = Math.min(Math.max(progress, 0), 100);\n let $progressbarEl;\n if ($el.hasClass('progressbar')) $progressbarEl = $el.eq(0);else {\n $progressbarEl = $el.children('.progressbar');\n }\n if ($progressbarEl.length === 0 || $progressbarEl.hasClass('progressbar-infinite')) {\n return $progressbarEl;\n }\n let $progressbarLine = $progressbarEl.children('span');\n if ($progressbarLine.length === 0) {\n $progressbarLine = $('');\n $progressbarEl.append($progressbarLine);\n }\n $progressbarLine.transition(typeof duration !== 'undefined' ? duration : '').transform(`translate3d(${(-100 + progressNormalized) * (app.rtl ? -1 : 1)}%,0,0)`);\n return $progressbarEl[0];\n },\n show() {\n const app = this;\n\n // '.page', 50, 'multi'\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n let [el, progress, color] = args;\n let type = 'determined';\n if (args.length === 2) {\n if ((typeof args[0] === 'string' || typeof args[0] === 'object') && typeof args[1] === 'string') {\n // '.page', 'multi'\n [el, color, progress] = args;\n type = 'infinite';\n } else if (typeof args[0] === 'number' && typeof args[1] === 'string') {\n // 50, 'multi'\n [progress, color] = args;\n el = app.$el;\n }\n } else if (args.length === 1) {\n if (typeof args[0] === 'number') {\n el = app.$el;\n progress = args[0];\n } else if (typeof args[0] === 'string') {\n type = 'infinite';\n el = app.$el;\n color = args[0];\n }\n } else if (args.length === 0) {\n type = 'infinite';\n el = app.$el;\n }\n const $el = $(el);\n if ($el.length === 0) return undefined;\n let $progressbarEl;\n if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {\n $progressbarEl = $el;\n } else {\n $progressbarEl = $el.children('.progressbar:not(.progressbar-out), .progressbar-infinite:not(.progressbar-out)');\n if ($progressbarEl.length === 0) {\n $progressbarEl = $(`\n \n ${type === 'infinite' ? '' : ''}\n `);\n $el.append($progressbarEl);\n }\n }\n if (typeof progress !== 'undefined') {\n app.progressbar.set($progressbarEl, progress);\n }\n return $progressbarEl[0];\n },\n hide(el, removeAfterHide) {\n if (removeAfterHide === void 0) {\n removeAfterHide = true;\n }\n const app = this;\n const $el = $(el || app.$el);\n if ($el.length === 0) return undefined;\n let $progressbarEl;\n if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {\n $progressbarEl = $el;\n } else {\n $progressbarEl = $el.children('.progressbar, .progressbar-infinite');\n }\n if ($progressbarEl.length === 0 || !$progressbarEl.hasClass('progressbar-in') || $progressbarEl.hasClass('progressbar-out')) {\n return $progressbarEl;\n }\n $progressbarEl.removeClass('progressbar-in').addClass('progressbar-out').animationEnd(() => {\n if (removeAfterHide) {\n $progressbarEl.remove();\n }\n });\n return $progressbarEl;\n }\n};\nexport default {\n name: 'progressbar',\n create() {\n const app = this;\n bindMethods(app, {\n progressbar: Progressbar\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.progressbar').each(progressbarEl => {\n const $progressbarEl = $(progressbarEl);\n app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.progressbar').each(progressbarEl => {\n const $progressbarEl = $(progressbarEl);\n app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));\n });\n }\n },\n vnode: {\n progressbar: {\n insert(vnode) {\n const app = this;\n const el = vnode.elm;\n app.progressbar.set(el, el.getAttribute('data-progress'));\n },\n update(vnode) {\n const app = this;\n const el = vnode.elm;\n app.progressbar.set(el, el.getAttribute('data-progress'));\n }\n }\n }\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nconst Sortable = {\n init() {\n const app = this;\n const document = getDocument();\n let isTouched;\n let isMoved;\n let touchStartY;\n let touchesDiff;\n let $sortingEl;\n let $sortingItems;\n let $sortableContainer;\n let sortingElHeight;\n let minTop;\n let maxTop;\n let $insertAfterEl;\n let $insertBeforeEl;\n let indexFrom;\n let $pageEl;\n let $pageContentEl;\n let pageHeight;\n let pageOffset;\n let sortingElOffsetLocal;\n let sortingElOffsetTop;\n let initialScrollTop;\n let wasTapHold;\n function handleTouchStart(e, isTapHold) {\n isMoved = false;\n isTouched = true;\n wasTapHold = false;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n $sortingEl = $(e.target).closest('li').eq(0);\n indexFrom = $sortingEl.index();\n $sortableContainer = $sortingEl.parents('.sortable');\n const $listGroup = $sortingEl.parents('.list-group');\n if ($listGroup.length && $listGroup.parents($sortableContainer).length) {\n $sortableContainer = $listGroup;\n }\n $sortingItems = $sortableContainer.children('ul').children('li:not(.disallow-sorting):not(.no-sorting)');\n if (app.panel) app.panel.allowOpen = false;\n if (app.swipeout) app.swipeout.allow = false;\n if (isTapHold) {\n $sortingEl.addClass('sorting');\n $sortableContainer.addClass('sortable-sorting');\n wasTapHold = true;\n }\n }\n function handleTouchMove(e) {\n if (!isTouched || !$sortingEl) return;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (!isMoved) {\n $pageEl = $sortingEl.parents('.page');\n $pageContentEl = $sortingEl.parents('.page-content');\n const paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n initialScrollTop = $pageContentEl[0].scrollTop;\n pageOffset = $pageEl.offset().top + paddingTop;\n pageHeight = $pageEl.height() - paddingTop - paddingBottom;\n $sortingEl.addClass('sorting');\n $sortableContainer.addClass('sortable-sorting');\n sortingElOffsetLocal = $sortingEl[0].offsetTop;\n minTop = $sortingEl[0].offsetTop;\n maxTop = $sortingEl.parent().height() - sortingElOffsetLocal - $sortingEl.height();\n sortingElHeight = $sortingEl[0].offsetHeight;\n sortingElOffsetTop = $sortingEl.offset().top;\n }\n isMoved = true;\n e.preventDefault();\n e.f7PreventSwipePanel = true;\n touchesDiff = pageY - touchStartY;\n const translateScrollOffset = $pageContentEl[0].scrollTop - initialScrollTop;\n const translate = Math.min(Math.max(touchesDiff + translateScrollOffset, -minTop), maxTop);\n $sortingEl.transform(`translate3d(0,${translate}px,0)`);\n const scrollAddition = 44;\n let allowScroll = true;\n if (touchesDiff + translateScrollOffset + scrollAddition < -minTop) {\n allowScroll = false;\n }\n if (touchesDiff + translateScrollOffset - scrollAddition > maxTop) {\n allowScroll = false;\n }\n $insertBeforeEl = undefined;\n $insertAfterEl = undefined;\n let scrollDiff;\n if (allowScroll) {\n if (sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition > pageOffset + pageHeight) {\n // To Bottom\n scrollDiff = sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition - (pageOffset + pageHeight);\n }\n if (sortingElOffsetTop + touchesDiff < pageOffset + scrollAddition) {\n // To Top\n scrollDiff = sortingElOffsetTop + touchesDiff - pageOffset - scrollAddition;\n }\n if (scrollDiff) {\n $pageContentEl[0].scrollTop += scrollDiff;\n }\n }\n $sortingItems.each(el => {\n const $currentEl = $(el);\n if ($currentEl[0] === $sortingEl[0]) return;\n const currentElOffset = $currentEl[0].offsetTop;\n const currentElHeight = $currentEl.height();\n const sortingElOffset = sortingElOffsetLocal + translate;\n let currentTranslate;\n const prevTranslate = $currentEl[0].f7Translate;\n if (sortingElOffset >= currentElOffset - currentElHeight / 2 && $sortingEl.index() < $currentEl.index()) {\n currentTranslate = -sortingElHeight;\n $currentEl.transform(`translate3d(0, ${currentTranslate}px,0)`);\n $insertAfterEl = $currentEl;\n $insertBeforeEl = undefined;\n } else if (sortingElOffset <= currentElOffset + currentElHeight / 2 && $sortingEl.index() > $currentEl.index()) {\n currentTranslate = sortingElHeight;\n $currentEl[0].f7Translate = currentTranslate;\n $currentEl.transform(`translate3d(0, ${currentTranslate}px,0)`);\n $insertAfterEl = undefined;\n if (!$insertBeforeEl) $insertBeforeEl = $currentEl;\n } else {\n currentTranslate = undefined;\n $currentEl.transform('translate3d(0, 0%,0)');\n }\n if (prevTranslate !== currentTranslate) {\n $currentEl.trigger('sortable:move');\n app.emit('sortableMove', $currentEl[0], $sortableContainer[0]);\n }\n $currentEl[0].f7Translate = currentTranslate;\n });\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n if (isTouched && !isMoved) {\n if (app.panel) app.panel.allowOpen = true;\n if (app.swipeout) app.swipeout.allow = true;\n if (wasTapHold) {\n $sortingEl.removeClass('sorting');\n $sortableContainer.removeClass('sortable-sorting');\n }\n }\n isTouched = false;\n isMoved = false;\n return;\n }\n if (app.panel) app.panel.allowOpen = true;\n if (app.swipeout) app.swipeout.allow = true;\n $sortingItems.transform('');\n $sortingEl.removeClass('sorting');\n $sortableContainer.removeClass('sortable-sorting');\n let indexTo;\n if ($insertAfterEl) indexTo = $insertAfterEl.index();else if ($insertBeforeEl) indexTo = $insertBeforeEl.index();\n let moveElements = $sortableContainer.dataset().sortableMoveElements;\n if (typeof moveElements === 'undefined') {\n moveElements = app.params.sortable.moveElements;\n }\n if (moveElements) {\n if ($insertAfterEl) {\n $sortingEl.insertAfter($insertAfterEl);\n }\n if ($insertBeforeEl) {\n $sortingEl.insertBefore($insertBeforeEl);\n }\n }\n if (($insertAfterEl || $insertBeforeEl) && $sortableContainer.hasClass('virtual-list')) {\n indexFrom = $sortingEl[0].f7VirtualListIndex;\n if (typeof indexFrom === 'undefined') indexFrom = $sortingEl.attr('data-virtual-list-index');\n if ($insertBeforeEl) {\n indexTo = $insertBeforeEl[0].f7VirtualListIndex;\n if (typeof indexTo === 'undefined') indexTo = $insertBeforeEl.attr('data-virtual-list-index');\n } else {\n indexTo = $insertAfterEl[0].f7VirtualListIndex;\n if (typeof indexTo === 'undefined') indexTo = $insertAfterEl.attr('data-virtual-list-index');\n }\n if (indexTo !== null) indexTo = parseInt(indexTo, 10);else indexTo = undefined;\n const virtualList = $sortableContainer[0].f7VirtualList;\n if (indexFrom) indexFrom = parseInt(indexFrom, 10);\n if (indexTo) indexTo = parseInt(indexTo, 10);\n if (virtualList) virtualList.moveItem(indexFrom, indexTo);\n }\n if (typeof indexTo !== 'undefined' && !Number.isNaN(indexTo) && indexTo !== indexFrom) {\n $sortingEl.trigger('sortable:sort', {\n from: indexFrom,\n to: indexTo\n });\n app.emit('sortableSort', $sortingEl[0], {\n from: indexFrom,\n to: indexTo,\n el: $sortingEl[0]\n }, $sortableContainer[0]);\n }\n $insertBeforeEl = undefined;\n $insertAfterEl = undefined;\n isTouched = false;\n isMoved = false;\n }\n const activeListener = getSupport().passiveListener ? {\n passive: false,\n capture: false\n } : false;\n $(document).on(app.touchEvents.start, '.list.sortable .sortable-handler', handleTouchStart, activeListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n $(document).on('taphold', '.sortable-tap-hold', (e, pointerEvent) => {\n handleTouchStart(pointerEvent, true);\n });\n },\n enable(el) {\n if (el === void 0) {\n el = '.list.sortable';\n }\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n $el.addClass('sortable-enabled');\n $el.trigger('sortable:enable');\n app.emit('sortableEnable', $el[0]);\n },\n disable(el) {\n if (el === void 0) {\n el = '.list.sortable';\n }\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n $el.removeClass('sortable-enabled');\n $el.trigger('sortable:disable');\n app.emit('sortableDisable', $el[0]);\n },\n toggle(el) {\n if (el === void 0) {\n el = '.list.sortable';\n }\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n if ($el.hasClass('sortable-enabled')) {\n app.sortable.disable($el);\n } else {\n app.sortable.enable($el);\n }\n }\n};\nexport default {\n name: 'sortable',\n params: {\n sortable: {\n moveElements: true\n }\n },\n create() {\n const app = this;\n bindMethods(app, {\n sortable: Sortable\n });\n },\n on: {\n init() {\n const app = this;\n if (!app.params.sortable) return;\n app.sortable.init();\n }\n },\n clicks: {\n '.sortable-enable': function enable($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.sortable.enable(data.sortable);\n },\n '.sortable-disable': function disable($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.sortable.disable(data.sortable);\n },\n '.sortable-toggle': function toggle($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.sortable.toggle(data.sortable);\n }\n }\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nconst Swipeout = {\n init() {\n const app = this;\n const document = getDocument();\n const touchesStart = {};\n let isTouched;\n let isMoved;\n let isScrolling;\n let touchStartTime;\n let touchesDiff;\n let $swipeoutEl;\n let $swipeoutContent;\n let $actionsRight;\n let $actionsLeft;\n let actionsLeftWidth;\n let actionsRightWidth;\n let translate;\n let opened;\n let openedActionsSide;\n let $leftButtons;\n let $rightButtons;\n let direction;\n let $overswipeLeftButton;\n let $overswipeRightButton;\n let overswipeLeft;\n let overswipeRight;\n function handleTouchStart(e) {\n if (!app.swipeout.allow) return;\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = new Date().getTime();\n $swipeoutEl = $(this);\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n if (!isMoved) {\n if ($('.list.sortable-opened').length > 0) return;\n $swipeoutContent = $swipeoutEl.find('.swipeout-content');\n $actionsRight = $swipeoutEl.find('.swipeout-actions-right');\n $actionsLeft = $swipeoutEl.find('.swipeout-actions-left');\n actionsLeftWidth = null;\n actionsRightWidth = null;\n $leftButtons = null;\n $rightButtons = null;\n $overswipeRightButton = null;\n $overswipeLeftButton = null;\n if ($actionsLeft.length > 0) {\n actionsLeftWidth = $actionsLeft.outerWidth();\n $leftButtons = $actionsLeft.children('a');\n $overswipeLeftButton = $actionsLeft.find('.swipeout-overswipe');\n }\n if ($actionsRight.length > 0) {\n actionsRightWidth = $actionsRight.outerWidth();\n $rightButtons = $actionsRight.children('a');\n $overswipeRightButton = $actionsRight.find('.swipeout-overswipe');\n }\n opened = $swipeoutEl.hasClass('swipeout-opened');\n if (opened) {\n openedActionsSide = $swipeoutEl.find('.swipeout-actions-left.swipeout-actions-opened').length > 0 ? 'left' : 'right';\n }\n $swipeoutEl.removeClass('swipeout-transitioning');\n if (!app.params.swipeout.noFollow) {\n $swipeoutEl.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');\n $swipeoutEl.removeClass('swipeout-opened');\n }\n }\n isMoved = true;\n if (e.cancelable) {\n e.preventDefault();\n }\n touchesDiff = pageX - touchesStart.x;\n translate = touchesDiff;\n if (opened) {\n if (openedActionsSide === 'right') translate -= actionsRightWidth;else translate += actionsLeftWidth;\n }\n if (translate > 0 && $actionsLeft.length === 0 || translate < 0 && $actionsRight.length === 0) {\n if (!opened) {\n isTouched = false;\n isMoved = false;\n $swipeoutContent.transform('');\n if ($rightButtons && $rightButtons.length > 0) {\n $rightButtons.transform('');\n }\n if ($leftButtons && $leftButtons.length > 0) {\n $leftButtons.transform('');\n }\n return;\n }\n translate = 0;\n }\n if (translate < 0) direction = 'to-left';else if (translate > 0) direction = 'to-right';else if (!direction) direction = 'to-left';\n let buttonOffset;\n let progress;\n e.f7PreventSwipePanel = true;\n if (app.params.swipeout.noFollow) {\n if (opened) {\n if (openedActionsSide === 'right' && touchesDiff > 0) {\n app.swipeout.close($swipeoutEl);\n }\n if (openedActionsSide === 'left' && touchesDiff < 0) {\n app.swipeout.close($swipeoutEl);\n }\n } else {\n if (touchesDiff < 0 && $actionsRight.length > 0) {\n app.swipeout.open($swipeoutEl, 'right');\n }\n if (touchesDiff > 0 && $actionsLeft.length > 0) {\n app.swipeout.open($swipeoutEl, 'left');\n }\n }\n isTouched = false;\n isMoved = false;\n return;\n }\n overswipeLeft = false;\n overswipeRight = false;\n if ($actionsRight.length > 0) {\n // Show right actions\n let buttonTranslate = translate;\n progress = buttonTranslate / actionsRightWidth;\n if (buttonTranslate < -actionsRightWidth) {\n const ratio = buttonTranslate / -actionsRightWidth;\n buttonTranslate = -actionsRightWidth - (-buttonTranslate - actionsRightWidth) ** 0.8;\n translate = buttonTranslate;\n if ($overswipeRightButton.length > 0 && ratio > app.params.swipeout.overswipeRatio) {\n overswipeRight = true;\n }\n }\n if (direction !== 'to-left') {\n progress = 0;\n buttonTranslate = 0;\n }\n $rightButtons.each(buttonEl => {\n const $buttonEl = $(buttonEl);\n if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;\n }\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if ($overswipeRightButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-left') {\n $buttonEl.css({\n left: `${overswipeRight ? -buttonOffset : 0}px`\n });\n if (overswipeRight) {\n if (!$buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeenter');\n app.emit('swipeoutOverswipeEnter', $swipeoutEl[0]);\n }\n $buttonEl.addClass('swipeout-overswipe-active');\n } else {\n if ($buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeexit');\n app.emit('swipeoutOverswipeExit', $swipeoutEl[0]);\n }\n $buttonEl.removeClass('swipeout-overswipe-active');\n }\n }\n $buttonEl.transform(`translate3d(${buttonTranslate - buttonOffset * (1 + Math.max(progress, -1))}px,0,0)`);\n });\n }\n if ($actionsLeft.length > 0) {\n // Show left actions\n let buttonTranslate = translate;\n progress = buttonTranslate / actionsLeftWidth;\n if (buttonTranslate > actionsLeftWidth) {\n const ratio = buttonTranslate / actionsRightWidth;\n buttonTranslate = actionsLeftWidth + (buttonTranslate - actionsLeftWidth) ** 0.8;\n translate = buttonTranslate;\n if ($overswipeLeftButton.length > 0 && ratio > app.params.swipeout.overswipeRatio) {\n overswipeLeft = true;\n }\n }\n if (direction !== 'to-right') {\n buttonTranslate = 0;\n progress = 0;\n }\n $leftButtons.each((buttonEl, index) => {\n const $buttonEl = $(buttonEl);\n if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;\n }\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if ($overswipeLeftButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-right') {\n $buttonEl.css({\n left: `${overswipeLeft ? buttonOffset : 0}px`\n });\n if (overswipeLeft) {\n if (!$buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeenter');\n app.emit('swipeoutOverswipeEnter', $swipeoutEl[0]);\n }\n $buttonEl.addClass('swipeout-overswipe-active');\n } else {\n if ($buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeexit');\n app.emit('swipeoutOverswipeExit', $swipeoutEl[0]);\n }\n $buttonEl.removeClass('swipeout-overswipe-active');\n }\n }\n if ($leftButtons.length > 1) {\n $buttonEl.css('z-index', $leftButtons.length - index);\n }\n $buttonEl.transform(`translate3d(${buttonTranslate + buttonOffset * (1 - Math.min(progress, 1))}px,0,0)`);\n });\n }\n $swipeoutEl.trigger('swipeout', progress);\n app.emit('swipeout', $swipeoutEl[0], progress);\n $swipeoutContent.transform(`translate3d(${translate}px,0,0)`);\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n const timeDiff = new Date().getTime() - touchStartTime;\n const $actions = direction === 'to-left' ? $actionsRight : $actionsLeft;\n const actionsWidth = direction === 'to-left' ? actionsRightWidth : actionsLeftWidth;\n let action;\n let $buttons;\n let i;\n if (timeDiff < 300 && (touchesDiff < -10 && direction === 'to-left' || touchesDiff > 10 && direction === 'to-right') || timeDiff >= 300 && Math.abs(translate) > actionsWidth / 2) {\n action = 'open';\n } else {\n action = 'close';\n }\n if (timeDiff < 300) {\n if (Math.abs(translate) === 0) action = 'close';\n if (Math.abs(translate) === actionsWidth) action = 'open';\n }\n if (action === 'open') {\n Swipeout.el = $swipeoutEl[0];\n $swipeoutEl.trigger('swipeout:open');\n app.emit('swipeoutOpen', $swipeoutEl[0]);\n $swipeoutEl.addClass('swipeout-opened swipeout-transitioning');\n const newTranslate = direction === 'to-left' ? -actionsWidth : actionsWidth;\n $swipeoutContent.transform(`translate3d(${newTranslate}px,0,0)`);\n $actions.addClass('swipeout-actions-opened');\n $buttons = direction === 'to-left' ? $rightButtons : $leftButtons;\n if ($buttons) {\n for (i = 0; i < $buttons.length; i += 1) {\n $($buttons[i]).transform(`translate3d(${newTranslate}px,0,0)`);\n }\n }\n if (overswipeRight) {\n $actionsRight.find('.swipeout-overswipe').trigger('click', 'f7Overswipe');\n }\n if (overswipeLeft) {\n $actionsLeft.find('.swipeout-overswipe').trigger('click', 'f7Overswipe');\n }\n } else {\n $swipeoutEl.trigger('swipeout:close');\n app.emit('swipeoutClose', $swipeoutEl[0]);\n Swipeout.el = undefined;\n $swipeoutEl.addClass('swipeout-transitioning').removeClass('swipeout-opened');\n $swipeoutContent.transform('');\n $actions.removeClass('swipeout-actions-opened');\n }\n let buttonOffset;\n if ($leftButtons && $leftButtons.length > 0 && $leftButtons !== $buttons) {\n $leftButtons.each(buttonEl => {\n const $buttonEl = $(buttonEl);\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if (typeof buttonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;\n }\n $buttonEl.transform(`translate3d(${buttonOffset}px,0,0)`);\n });\n }\n if ($rightButtons && $rightButtons.length > 0 && $rightButtons !== $buttons) {\n $rightButtons.each(buttonEl => {\n const $buttonEl = $(buttonEl);\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if (typeof buttonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;\n }\n $buttonEl.transform(`translate3d(${-buttonOffset}px,0,0)`);\n });\n }\n $swipeoutContent.transitionEnd(() => {\n if (opened && action === 'open' || !opened && action === 'close') return;\n $swipeoutEl.trigger(action === 'open' ? 'swipeout:opened' : 'swipeout:closed');\n app.emit(action === 'open' ? 'swipeoutOpened' : 'swipeoutClosed', $swipeoutEl[0]);\n $swipeoutEl.removeClass('swipeout-transitioning');\n if (opened && action === 'close') {\n if ($actionsRight.length > 0) {\n $rightButtons.transform('');\n }\n if ($actionsLeft.length > 0) {\n $leftButtons.transform('');\n }\n }\n });\n }\n const passiveListener = getSupport().passiveListener ? {\n passive: true\n } : false;\n app.on('touchstart', e => {\n if (Swipeout.el) {\n const $targetEl = $(e.target);\n if (!($(Swipeout.el).is($targetEl[0]) || $targetEl.parents('.swipeout').is(Swipeout.el) || $targetEl.hasClass('modal-in') || ($targetEl.attr('class') || '').indexOf('-backdrop') > 0 || $targetEl.hasClass('actions-modal') || $targetEl.parents('.actions-modal.modal-in, .dialog.modal-in').length > 0)) {\n app.swipeout.close(Swipeout.el);\n }\n }\n });\n $(document).on(app.touchEvents.start, 'li.swipeout', handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n },\n allow: true,\n el: undefined,\n open() {\n const app = this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n let [el, side, callback] = args;\n if (typeof args[1] === 'function') {\n [el, callback, side] = args;\n }\n const $el = $(el).eq(0);\n if ($el.length === 0) return;\n if (!$el.hasClass('swipeout') || $el.hasClass('swipeout-opened')) return;\n if (!side) {\n if ($el.find('.swipeout-actions-right').length > 0) side = 'right';else side = 'left';\n }\n const $swipeoutActions = $el.find(`.swipeout-actions-${side}`);\n const $swipeoutContent = $el.find('.swipeout-content');\n if ($swipeoutActions.length === 0) return;\n $el.trigger('swipeout:open').addClass('swipeout-opened').removeClass('swipeout-transitioning');\n app.emit('swipeoutOpen', $el[0]);\n $swipeoutActions.addClass('swipeout-actions-opened');\n const $buttons = $swipeoutActions.children('a');\n const swipeoutActionsWidth = $swipeoutActions.outerWidth();\n const translate = side === 'right' ? -swipeoutActionsWidth : swipeoutActionsWidth;\n if ($buttons.length > 1) {\n $buttons.each((buttonEl, buttonIndex) => {\n const $buttonEl = $(buttonEl);\n if (side === 'right') {\n $buttonEl.transform(`translate3d(${-buttonEl.offsetLeft}px,0,0)`);\n } else {\n $buttonEl.css('z-index', $buttons.length - buttonIndex).transform(`translate3d(${swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft}px,0,0)`);\n }\n });\n }\n $el.addClass('swipeout-transitioning');\n $swipeoutContent.transitionEnd(() => {\n $el.trigger('swipeout:opened');\n app.emit('swipeoutOpened', $el[0]);\n if (callback) callback.call($el[0]);\n });\n nextFrame(() => {\n $buttons.transform(`translate3d(${translate}px,0,0)`);\n $swipeoutContent.transform(`translate3d(${translate}px,0,0)`);\n });\n Swipeout.el = $el[0];\n },\n close(el, callback) {\n const app = this;\n const $el = $(el).eq(0);\n if ($el.length === 0) return;\n if (!$el.hasClass('swipeout-opened')) return;\n const side = $el.find('.swipeout-actions-opened').hasClass('swipeout-actions-right') ? 'right' : 'left';\n const $swipeoutActions = $el.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');\n const $buttons = $swipeoutActions.children('a');\n const swipeoutActionsWidth = $swipeoutActions.outerWidth();\n app.swipeout.allow = false;\n $el.trigger('swipeout:close');\n app.emit('swipeoutClose', $el[0]);\n $el.removeClass('swipeout-opened').addClass('swipeout-transitioning');\n let closeTimeout;\n function onSwipeoutClose() {\n app.swipeout.allow = true;\n if ($el.hasClass('swipeout-opened')) return;\n $el.removeClass('swipeout-transitioning');\n $buttons.transform('');\n $el.trigger('swipeout:closed');\n app.emit('swipeoutClosed', $el[0]);\n if (callback) callback.call($el[0]);\n if (closeTimeout) clearTimeout(closeTimeout);\n }\n $el.find('.swipeout-content').transform('').transitionEnd(onSwipeoutClose);\n closeTimeout = setTimeout(onSwipeoutClose, 500);\n $buttons.each(buttonEl => {\n const $buttonEl = $(buttonEl);\n if (side === 'right') {\n $buttonEl.transform(`translate3d(${-buttonEl.offsetLeft}px,0,0)`);\n } else {\n $buttonEl.transform(`translate3d(${swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft}px,0,0)`);\n }\n $buttonEl.css({\n left: '0px'\n }).removeClass('swipeout-overswipe-active');\n });\n if (Swipeout.el && Swipeout.el === $el[0]) Swipeout.el = undefined;\n },\n delete(el, callback) {\n const app = this;\n const $el = $(el).eq(0);\n if ($el.length === 0) return;\n Swipeout.el = undefined;\n $el.trigger('swipeout:delete');\n app.emit('swipeoutDelete', $el[0]);\n $el.css({\n height: `${$el.outerHeight()}px`\n });\n $el.transitionEnd(() => {\n $el.trigger('swipeout:deleted');\n app.emit('swipeoutDeleted', $el[0]);\n if (callback) callback.call($el[0]);\n if ($el.parents('.virtual-list').length > 0) {\n const virtualList = $el.parents('.virtual-list')[0].f7VirtualList;\n const virtualIndex = $el[0].f7VirtualListIndex;\n if (virtualList && typeof virtualIndex !== 'undefined') virtualList.deleteItem(virtualIndex);\n } else if (app.params.swipeout.removeElements) {\n if (app.params.swipeout.removeElementsWithTimeout) {\n setTimeout(() => {\n $el.remove();\n }, app.params.swipeout.removeElementsTimeout);\n } else {\n $el.remove();\n }\n } else {\n $el.removeClass('swipeout-deleting swipeout-transitioning');\n }\n });\n // eslint-disable-next-line\n // $el[0]._clientLeft = $el[0].clientLeft;\n nextFrame(() => {\n $el.addClass('swipeout-deleting swipeout-transitioning').css({\n height: '0px'\n }).find('.swipeout-content').transform('translate3d(-100%,0,0)');\n });\n }\n};\nexport default {\n name: 'swipeout',\n params: {\n swipeout: {\n actionsNoFold: false,\n noFollow: false,\n removeElements: true,\n removeElementsWithTimeout: false,\n removeElementsTimeout: 0,\n overswipeRatio: 1.2\n }\n },\n create() {\n const app = this;\n bindMethods(app, {\n swipeout: Swipeout\n });\n },\n clicks: {\n '.swipeout-open': function openSwipeout($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.swipeout.open(data.swipeout, data.side);\n },\n '.swipeout-close': function closeSwipeout($clickedEl) {\n const app = this;\n const $swipeoutEl = $clickedEl.closest('.swipeout');\n if ($swipeoutEl.length === 0) return;\n app.swipeout.close($swipeoutEl);\n },\n '.swipeout-delete': function deleteSwipeout($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n const $swipeoutEl = $clickedEl.closest('.swipeout');\n if ($swipeoutEl.length === 0) return;\n const {\n confirm,\n confirmTitle\n } = data;\n if (data.confirm) {\n app.dialog.confirm(confirm, confirmTitle, () => {\n app.swipeout.delete($swipeoutEl);\n });\n } else {\n app.swipeout.delete($swipeoutEl);\n }\n }\n },\n on: {\n init() {\n const app = this;\n if (!app.params.swipeout) return;\n app.swipeout.init();\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\nconst Accordion = {\n toggleClicked($clickedEl) {\n const app = this;\n let $accordionItemEl = $clickedEl.closest('.accordion-item').eq(0);\n if (!$accordionItemEl.length) $accordionItemEl = $clickedEl.parents('li').eq(0);\n const $accordionContent = $clickedEl.parents('.accordion-item-content').eq(0);\n if ($accordionContent.length) {\n if ($accordionContent.parents($accordionItemEl).length) return;\n }\n if ($clickedEl.parents('li').length > 1 && $clickedEl.parents('li')[0] !== $accordionItemEl[0]) return;\n app.accordion.toggle($accordionItemEl);\n },\n open(el) {\n const app = this;\n const $el = $(el);\n let prevented = false;\n function prevent() {\n prevented = true;\n }\n $el.trigger('accordion:beforeopen', {\n prevent\n }, prevent);\n app.emit('accordionBeforeOpen', $el[0], prevent);\n if (prevented) return;\n const $list = $el.parents('.accordion-list').eq(0);\n let $contentEl = $el.children('.accordion-item-content');\n $contentEl.removeAttr('aria-hidden');\n if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');\n if ($contentEl.length === 0) return;\n const $openedItem = $list.length > 0 && $el.parent().children('.accordion-item-opened');\n if ($openedItem.length > 0) {\n app.accordion.close($openedItem);\n }\n $contentEl.transitionEnd(() => {\n if ($el.hasClass('accordion-item-opened')) {\n $contentEl.transition(0);\n $contentEl.css('height', 'auto');\n nextFrame(() => {\n $contentEl.transition('');\n $el.trigger('accordion:opened');\n app.emit('accordionOpened', $el[0]);\n });\n } else {\n $contentEl.css('height', '');\n $el.trigger('accordion:closed');\n app.emit('accordionClosed', $el[0]);\n }\n });\n $contentEl.css('height', `${$contentEl[0].scrollHeight}px`);\n $el.trigger('accordion:open');\n $el.addClass('accordion-item-opened');\n app.emit('accordionOpen', $el[0]);\n },\n close(el) {\n const app = this;\n const $el = $(el);\n let prevented = false;\n function prevent() {\n prevented = true;\n }\n $el.trigger('accordion:beforeclose', {\n prevent\n }, prevent);\n app.emit('accordionBeforeClose', $el[0], prevent);\n if (prevented) return;\n let $contentEl = $el.children('.accordion-item-content');\n if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');\n $el.removeClass('accordion-item-opened');\n $contentEl.attr('aria-hidden', true);\n $contentEl.transition(0);\n $contentEl.css('height', `${$contentEl[0].scrollHeight}px`);\n // Close\n $contentEl.transitionEnd(() => {\n if ($el.hasClass('accordion-item-opened')) {\n $contentEl.transition(0);\n $contentEl.css('height', 'auto');\n nextFrame(() => {\n $contentEl.transition('');\n $el.trigger('accordion:opened');\n app.emit('accordionOpened', $el[0]);\n });\n } else {\n $contentEl.css('height', '');\n $el.trigger('accordion:closed');\n app.emit('accordionClosed', $el[0]);\n }\n });\n nextFrame(() => {\n $contentEl.transition('');\n $contentEl.css('height', '');\n $el.trigger('accordion:close');\n app.emit('accordionClose', $el[0]);\n });\n },\n toggle(el) {\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n if ($el.hasClass('accordion-item-opened')) app.accordion.close(el);else app.accordion.open(el);\n }\n};\nexport default {\n name: 'accordion',\n create() {\n const app = this;\n bindMethods(app, {\n accordion: Accordion\n });\n },\n clicks: {\n '.accordion-item .item-link, .accordion-item-toggle, .links-list.accordion-list > ul > li > a': function open($clickedEl) {\n const app = this;\n Accordion.toggleClicked.call(app, $clickedEl);\n }\n }\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\nclass VirtualList extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const vl = this;\n const device = getDevice();\n const document = getDocument();\n let defaultHeight;\n if (app.theme === 'md') {\n defaultHeight = 48;\n } else if (app.theme === 'ios') {\n defaultHeight = 44;\n }\n const defaults = {\n cols: 1,\n height: defaultHeight,\n cache: true,\n dynamicHeightBufferSize: 1,\n showFilteredItemsOnly: false,\n renderExternal: undefined,\n setListHeight: true,\n searchByItem: undefined,\n searchAll: undefined,\n ul: null,\n createUl: true,\n scrollableParentEl: undefined,\n renderItem(item) {\n return `\n
        • \n
          \n
          \n
          ${item}
          \n
          \n
          \n
        • \n `.trim();\n },\n on: {}\n };\n\n // Extend defaults with modules params\n vl.useModulesParams(defaults);\n vl.params = extend(defaults, params);\n if (vl.params.height === undefined || !vl.params.height) {\n vl.params.height = defaultHeight;\n }\n vl.$el = $(params.el);\n vl.el = vl.$el[0];\n if (vl.$el.length === 0) return undefined;\n vl.$el[0].f7VirtualList = vl;\n vl.items = vl.params.items;\n if (vl.params.showFilteredItemsOnly) {\n vl.filteredItems = [];\n }\n if (vl.params.renderItem) {\n vl.renderItem = vl.params.renderItem;\n }\n vl.$pageContentEl = vl.$el.parents('.page-content');\n vl.pageContentEl = vl.$pageContentEl[0];\n vl.$scrollableParentEl = vl.params.scrollableParentEl ? $(vl.params.scrollableParentEl).eq(0) : vl.$pageContentEl;\n if (!vl.$scrollableParentEl.length && vl.$pageContentEl.length) {\n vl.$scrollableParentEl = vl.$pageContentEl;\n }\n vl.scrollableParentEl = vl.$scrollableParentEl[0];\n\n // Bad scroll\n if (typeof vl.params.updatableScroll !== 'undefined') {\n vl.updatableScroll = vl.params.updatableScroll;\n } else {\n vl.updatableScroll = true;\n if (device.ios && device.osVersion.split('.')[0] < 8) {\n vl.updatableScroll = false;\n }\n }\n\n // Append
            \n const ul = vl.params.ul;\n vl.$ul = ul ? $(vl.params.ul) : vl.$el.children('ul');\n if (vl.$ul.length === 0 && vl.params.createUl) {\n vl.$el.append('
              ');\n vl.$ul = vl.$el.children('ul');\n }\n vl.ul = vl.$ul[0];\n let $itemsWrapEl;\n if (!vl.ul && !vl.params.createUl) $itemsWrapEl = vl.$el;else $itemsWrapEl = vl.$ul;\n extend(vl, {\n $itemsWrapEl,\n itemsWrapEl: $itemsWrapEl[0],\n // DOM cached items\n domCache: {},\n // Temporary DOM Element\n tempDomElement: document.createElement('ul'),\n // Last repain position\n lastRepaintY: null,\n // Fragment\n fragment: document.createDocumentFragment(),\n // Props\n pageHeight: undefined,\n rowsPerScreen: undefined,\n rowsBefore: undefined,\n rowsAfter: undefined,\n rowsToRender: undefined,\n maxBufferHeight: 0,\n listHeight: undefined,\n dynamicHeight: typeof vl.params.height === 'function',\n autoHeight: vl.params.height === 'auto'\n });\n\n // Install Modules\n vl.useModules();\n\n // Attach events\n const handleScrollBound = vl.handleScroll.bind(vl);\n const handleResizeBound = vl.handleResize.bind(vl);\n let $pageEl;\n let $tabEl;\n let $panelEl;\n let $popupEl;\n vl.attachEvents = function attachEvents() {\n $pageEl = vl.$el.parents('.page').eq(0);\n $tabEl = vl.$el.parents('.tab').filter(tabEl => {\n return $(tabEl).parent('.tabs').parent('.tabs-animated-wrap, swiper-container.tabs').length === 0;\n }).eq(0);\n $panelEl = vl.$el.parents('.panel').eq(0);\n $popupEl = vl.$el.parents('.popup').eq(0);\n vl.$scrollableParentEl.on('scroll', handleScrollBound);\n if ($pageEl.length) $pageEl.on('page:reinit', handleResizeBound);\n if ($tabEl.length) $tabEl.on('tab:show', handleResizeBound);\n if ($panelEl.length) $panelEl.on('panel:open', handleResizeBound);\n if ($popupEl.length) $popupEl.on('popup:open', handleResizeBound);\n app.on('resize', handleResizeBound);\n };\n vl.detachEvents = function attachEvents() {\n vl.$scrollableParentEl.off('scroll', handleScrollBound);\n if ($pageEl.length) $pageEl.off('page:reinit', handleResizeBound);\n if ($tabEl.length) $tabEl.off('tab:show', handleResizeBound);\n if ($panelEl.length) $panelEl.off('panel:open', handleResizeBound);\n if ($popupEl.length) $popupEl.off('popup:open', handleResizeBound);\n app.off('resize', handleResizeBound);\n };\n // Init\n vl.init();\n return vl;\n }\n setListSize(autoHeightRerender) {\n const vl = this;\n const items = vl.filteredItems || vl.items;\n if (!autoHeightRerender) {\n vl.pageHeight = vl.$scrollableParentEl[0].offsetHeight;\n }\n if (vl.dynamicHeight) {\n vl.listHeight = 0;\n vl.heights = [];\n for (let i = 0; i < items.length; i += 1) {\n const itemHeight = vl.params.height(items[i]);\n vl.listHeight += itemHeight;\n vl.heights.push(itemHeight);\n }\n } else if (vl.autoHeight) {\n vl.listHeight = 0;\n if (!vl.heights) vl.heights = [];\n if (!vl.heightsCalculated) vl.heightsCalculated = [];\n const renderedItems = {};\n vl.$itemsWrapEl.find(`[data-virtual-list-index]`).forEach(el => {\n renderedItems[parseInt(el.getAttribute('data-virtual-list-index'), 10)] = el;\n });\n for (let i = 0; i < items.length; i += 1) {\n const itemIndex = vl.items.indexOf(items[i]);\n const renderedItem = renderedItems[itemIndex];\n if (renderedItem) {\n if (!vl.heightsCalculated.includes(itemIndex)) {\n vl.heights[itemIndex] = renderedItem.offsetHeight;\n vl.heightsCalculated.push(itemIndex);\n }\n }\n if (typeof vl.heights[i] === 'undefined') {\n vl.heights[itemIndex] = 40;\n }\n vl.listHeight += vl.heights[itemIndex];\n }\n } else {\n vl.listHeight = Math.ceil(items.length / vl.params.cols) * vl.params.height;\n vl.rowsPerScreen = Math.ceil(vl.pageHeight / vl.params.height);\n vl.rowsBefore = vl.params.rowsBefore || vl.rowsPerScreen * 2;\n vl.rowsAfter = vl.params.rowsAfter || vl.rowsPerScreen;\n vl.rowsToRender = vl.rowsPerScreen + vl.rowsBefore + vl.rowsAfter;\n vl.maxBufferHeight = vl.rowsBefore / 2 * vl.params.height;\n }\n if (vl.updatableScroll || vl.params.setListHeight) {\n vl.$itemsWrapEl.css({\n height: `${vl.listHeight}px`\n });\n }\n }\n render(force, forceScrollTop) {\n const vl = this;\n if (force) vl.lastRepaintY = null;\n let scrollTop = -(vl.$el[0].getBoundingClientRect().top - vl.$scrollableParentEl[0].getBoundingClientRect().top);\n if (typeof forceScrollTop !== 'undefined') scrollTop = forceScrollTop;\n if (vl.lastRepaintY === null || Math.abs(scrollTop - vl.lastRepaintY) > vl.maxBufferHeight || !vl.updatableScroll && vl.$scrollableParentEl[0].scrollTop + vl.pageHeight >= vl.$scrollableParentEl[0].scrollHeight) {\n vl.lastRepaintY = scrollTop;\n } else {\n return;\n }\n const items = vl.filteredItems || vl.items;\n let fromIndex;\n let toIndex;\n let heightBeforeFirstItem = 0;\n let heightBeforeLastItem = 0;\n if (vl.dynamicHeight || vl.autoHeight) {\n let itemTop = 0;\n let itemHeight;\n vl.maxBufferHeight = vl.pageHeight;\n for (let j = 0; j < vl.heights.length; j += 1) {\n itemHeight = vl.heights[j];\n if (typeof fromIndex === 'undefined') {\n if (itemTop + itemHeight >= scrollTop - vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize) fromIndex = j;else heightBeforeFirstItem += itemHeight;\n }\n if (typeof toIndex === 'undefined') {\n if (itemTop + itemHeight >= scrollTop + vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize || j === vl.heights.length - 1) toIndex = j + 1;\n heightBeforeLastItem += itemHeight;\n }\n itemTop += itemHeight;\n }\n toIndex = Math.min(toIndex, items.length);\n } else {\n fromIndex = (parseInt(scrollTop / vl.params.height, 10) - vl.rowsBefore) * vl.params.cols;\n if (fromIndex < 0) {\n fromIndex = 0;\n }\n toIndex = Math.min(fromIndex + vl.rowsToRender * vl.params.cols, items.length);\n }\n let topPosition;\n const renderExternalItems = [];\n vl.reachEnd = false;\n let i;\n for (i = fromIndex; i < toIndex; i += 1) {\n let itemEl;\n // Define real item index\n const index = vl.items.indexOf(items[i]);\n if (i === fromIndex) vl.currentFromIndex = index;\n if (i === toIndex - 1) vl.currentToIndex = index;\n if (vl.filteredItems) {\n if (vl.items[index] === vl.filteredItems[vl.filteredItems.length - 1]) vl.reachEnd = true;\n } else if (index === vl.items.length - 1) vl.reachEnd = true;\n\n // Find items\n if (vl.params.renderExternal) {\n renderExternalItems.push(items[i]);\n } else if (vl.domCache[index]) {\n itemEl = vl.domCache[index];\n itemEl.f7VirtualListIndex = index;\n } else {\n if (vl.renderItem) {\n vl.tempDomElement.innerHTML = vl.renderItem(items[i], index).trim();\n } else {\n vl.tempDomElement.innerHTML = items[i].toString().trim();\n }\n itemEl = vl.tempDomElement.childNodes[0];\n if (vl.params.cache) vl.domCache[index] = itemEl;\n itemEl.f7VirtualListIndex = index;\n }\n\n // Set item top position\n if (i === fromIndex) {\n if (vl.dynamicHeight || vl.autoHeight) {\n topPosition = heightBeforeFirstItem;\n } else {\n topPosition = i * vl.params.height / vl.params.cols;\n }\n }\n if (!vl.params.renderExternal) {\n itemEl.style.top = `${topPosition}px`;\n\n // Before item insert\n vl.emit('local::itemBeforeInsert vlItemBeforeInsert', vl, itemEl, items[i]);\n\n // Append item to fragment\n vl.fragment.appendChild(itemEl);\n }\n }\n\n // Update list height with not updatable scroll\n if (!vl.updatableScroll) {\n if (vl.dynamicHeight || vl.autoHeight) {\n vl.itemsWrapEl.style.height = `${heightBeforeLastItem}px`;\n } else {\n vl.itemsWrapEl.style.height = `${i * vl.params.height / vl.params.cols}px`;\n }\n }\n\n // Update list html\n if (vl.params.renderExternal) {\n if (items && items.length === 0) {\n vl.reachEnd = true;\n }\n } else {\n vl.emit('local::beforeClear vlBeforeClear', vl, vl.fragment);\n vl.itemsWrapEl.innerHTML = '';\n vl.emit('local::itemsBeforeInsert vlItemsBeforeInsert', vl, vl.fragment);\n if (items && items.length === 0) {\n vl.reachEnd = true;\n if (vl.params.emptyTemplate) vl.itemsWrapEl.innerHTML = vl.params.emptyTemplate;\n } else {\n vl.itemsWrapEl.appendChild(vl.fragment);\n }\n vl.emit('local::itemsAfterInsert vlItemsAfterInsert', vl, vl.fragment);\n }\n if (typeof forceScrollTop !== 'undefined' && force) {\n vl.$scrollableParentEl.scrollTop(forceScrollTop, 0);\n }\n if (vl.params.renderExternal) {\n vl.params.renderExternal(vl, {\n fromIndex,\n toIndex,\n listHeight: vl.listHeight,\n topPosition,\n items: renderExternalItems\n });\n }\n if (vl.autoHeight) {\n requestAnimationFrame(() => {\n vl.setListSize(true);\n });\n }\n }\n\n // Filter\n filterItems(indexes, resetScrollTop) {\n if (resetScrollTop === void 0) {\n resetScrollTop = true;\n }\n const vl = this;\n vl.filteredItems = [];\n for (let i = 0; i < indexes.length; i += 1) {\n vl.filteredItems.push(vl.items[indexes[i]]);\n }\n if (resetScrollTop) {\n vl.$scrollableParentEl[0].scrollTop = 0;\n }\n vl.update();\n }\n resetFilter() {\n const vl = this;\n if (vl.params.showFilteredItemsOnly) {\n vl.filteredItems = [];\n } else {\n vl.filteredItems = null;\n delete vl.filteredItems;\n }\n vl.update();\n }\n scrollToItem(index) {\n const vl = this;\n if (index > vl.items.length) return false;\n let itemTop = 0;\n if (vl.dynamicHeight || vl.autoHeight) {\n for (let i = 0; i < index; i += 1) {\n itemTop += vl.heights[i];\n }\n } else {\n itemTop = index * vl.params.height;\n }\n const listTop = vl.$el[0].offsetTop;\n vl.render(true, listTop + itemTop - parseInt(vl.$scrollableParentEl.css('padding-top'), 10));\n return true;\n }\n handleScroll() {\n const vl = this;\n vl.render();\n }\n\n // Handle resize event\n isVisible() {\n const vl = this;\n return !!(vl.el.offsetWidth || vl.el.offsetHeight || vl.el.getClientRects().length);\n }\n handleResize() {\n const vl = this;\n if (vl.isVisible()) {\n vl.heightsCalculated = [];\n vl.setListSize();\n vl.render(true);\n }\n }\n\n // Append\n appendItems(items) {\n const vl = this;\n for (let i = 0; i < items.length; i += 1) {\n vl.items.push(items[i]);\n }\n vl.update();\n }\n appendItem(item) {\n const vl = this;\n vl.appendItems([item]);\n }\n\n // Replace\n replaceAllItems(items) {\n const vl = this;\n vl.items = items;\n delete vl.filteredItems;\n vl.domCache = {};\n vl.update();\n }\n replaceItem(index, item) {\n const vl = this;\n vl.items[index] = item;\n if (vl.params.cache) delete vl.domCache[index];\n vl.update();\n }\n\n // Prepend\n prependItems(items) {\n const vl = this;\n for (let i = items.length - 1; i >= 0; i -= 1) {\n vl.items.unshift(items[i]);\n }\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach(cached => {\n newCache[parseInt(cached, 10) + items.length] = vl.domCache[cached];\n });\n vl.domCache = newCache;\n }\n vl.update();\n }\n prependItem(item) {\n const vl = this;\n vl.prependItems([item]);\n }\n\n // Move\n moveItem(from, to) {\n const vl = this;\n const fromIndex = from;\n let toIndex = to;\n if (fromIndex === toIndex) return;\n // remove item from array\n const item = vl.items.splice(fromIndex, 1)[0];\n if (toIndex >= vl.items.length) {\n // Add item to the end\n vl.items.push(item);\n toIndex = vl.items.length - 1;\n } else {\n // Add item to new index\n vl.items.splice(toIndex, 0, item);\n }\n // Update cache\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach(cached => {\n const cachedIndex = parseInt(cached, 10);\n const leftIndex = fromIndex < toIndex ? fromIndex : toIndex;\n const rightIndex = fromIndex < toIndex ? toIndex : fromIndex;\n const indexShift = fromIndex < toIndex ? -1 : 1;\n if (cachedIndex < leftIndex || cachedIndex > rightIndex) newCache[cachedIndex] = vl.domCache[cachedIndex];\n if (cachedIndex === leftIndex) newCache[rightIndex] = vl.domCache[cachedIndex];\n if (cachedIndex > leftIndex && cachedIndex <= rightIndex) newCache[cachedIndex + indexShift] = vl.domCache[cachedIndex];\n });\n vl.domCache = newCache;\n }\n vl.update();\n }\n\n // Insert before\n insertItemBefore(index, item) {\n const vl = this;\n if (index === 0) {\n vl.prependItem(item);\n return;\n }\n if (index >= vl.items.length) {\n vl.appendItem(item);\n return;\n }\n vl.items.splice(index, 0, item);\n // Update cache\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach(cached => {\n const cachedIndex = parseInt(cached, 10);\n if (cachedIndex >= index) {\n newCache[cachedIndex + 1] = vl.domCache[cachedIndex];\n }\n });\n vl.domCache = newCache;\n }\n vl.update();\n }\n\n // Delete\n deleteItems(indexes) {\n const vl = this;\n let prevIndex;\n let indexShift = 0;\n for (let i = 0; i < indexes.length; i += 1) {\n let index = indexes[i];\n if (typeof prevIndex !== 'undefined') {\n if (index > prevIndex) {\n indexShift = -i;\n }\n }\n index += indexShift;\n prevIndex = indexes[i];\n // Delete item\n const deletedItem = vl.items.splice(index, 1)[0];\n\n // Delete from filtered\n if (vl.filteredItems && vl.filteredItems.indexOf(deletedItem) >= 0) {\n vl.filteredItems.splice(vl.filteredItems.indexOf(deletedItem), 1);\n }\n // Update cache\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach(cached => {\n const cachedIndex = parseInt(cached, 10);\n if (cachedIndex === index) {\n delete vl.domCache[index];\n } else if (parseInt(cached, 10) > index) {\n newCache[cachedIndex - 1] = vl.domCache[cached];\n } else {\n newCache[cachedIndex] = vl.domCache[cached];\n }\n });\n vl.domCache = newCache;\n }\n }\n vl.update();\n }\n deleteAllItems() {\n const vl = this;\n vl.items = [];\n delete vl.filteredItems;\n if (vl.params.cache) vl.domCache = {};\n vl.update();\n }\n deleteItem(index) {\n const vl = this;\n vl.deleteItems([index]);\n }\n\n // Clear cache\n clearCache() {\n const vl = this;\n vl.domCache = {};\n }\n\n // Update Virtual List\n update(deleteCache) {\n const vl = this;\n if (deleteCache && vl.params.cache) {\n vl.domCache = {};\n }\n vl.heightsCalculated = [];\n vl.setListSize();\n vl.render(true);\n }\n init() {\n const vl = this;\n vl.attachEvents();\n vl.setListSize();\n vl.render();\n }\n destroy() {\n let vl = this;\n vl.detachEvents();\n vl.$el[0].f7VirtualList = null;\n delete vl.$el[0].f7VirtualList;\n deleteProps(vl);\n vl = null;\n }\n}\nexport default VirtualList;","import VirtualList from './virtual-list-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'virtualList',\n static: {\n VirtualList\n },\n create() {\n const app = this;\n app.virtualList = ConstructorMethods({\n defaultSelector: '.virtual-list',\n constructor: VirtualList,\n app,\n domProp: 'f7VirtualList'\n });\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\nclass ListIndex extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const index = this;\n const defaults = {\n el: null,\n // where to render indexes\n listEl: null,\n // list el to generate indexes\n indexes: 'auto',\n // or array of indexes\n iosItemHeight: 14,\n mdItemHeight: 14,\n scrollList: true,\n label: false,\n // eslint-disable-next-line\n renderItem(itemContent, itemIndex) {\n return `\n
            • ${itemContent}
            • \n `.trim();\n },\n renderSkipPlaceholder() {\n return '
            • ';\n },\n on: {}\n };\n\n // Extend defaults with modules params\n index.useModulesParams(defaults);\n index.params = extend(defaults, params);\n let $el;\n let $listEl;\n let $pageContentEl;\n let $ul;\n if (index.params.el) {\n $el = $(index.params.el);\n } else {\n return index;\n }\n if ($el[0].f7ListIndex) {\n return $el[0].f7ListIndex;\n }\n $ul = $el.find('ul');\n if ($ul.length === 0) {\n $ul = $('
                ');\n $el.append($ul);\n }\n if (index.params.listEl) {\n $listEl = $(index.params.listEl);\n }\n if (index.params.indexes === 'auto' && !$listEl) {\n return index;\n }\n if ($listEl) {\n $pageContentEl = $listEl.parents('.page-content').eq(0);\n } else {\n $pageContentEl = $el.siblings('.page-content').eq(0);\n if ($pageContentEl.length === 0) {\n $pageContentEl = $el.parents('.page').eq(0).find('.page-content').eq(0);\n }\n }\n $el[0].f7ListIndex = index;\n extend(index, {\n app,\n $el,\n el: $el && $el[0],\n $ul,\n ul: $ul && $ul[0],\n $listEl,\n listEl: $listEl && $listEl[0],\n $pageContentEl,\n pageContentEl: $pageContentEl && $pageContentEl[0],\n indexes: params.indexes,\n height: 0,\n skipRate: 0\n });\n\n // Install Modules\n index.useModules();\n\n // Attach events\n function handleResize() {\n const height = {\n index\n };\n index.calcSize();\n if (height !== index.height) {\n index.render();\n }\n }\n function handleClick(e) {\n const $clickedLi = $(e.target).closest('li');\n if (!$clickedLi.length) return;\n let itemIndex = $clickedLi.index();\n if (index.skipRate > 0) {\n const percentage = itemIndex / ($clickedLi.siblings('li').length - 1);\n itemIndex = Math.round((index.indexes.length - 1) * percentage);\n }\n const itemContent = index.indexes[itemIndex];\n index.$el.trigger('listindex:click', {\n content: itemContent,\n index: itemIndex\n });\n index.emit('local::click listIndexClick', index, itemContent, itemIndex);\n index.$el.trigger('listindex:select', {\n content: itemContent,\n index: itemIndex\n });\n index.emit('local::select listIndexSelect', index, itemContent, itemIndex);\n if (index.$listEl && index.params.scrollList) {\n index.scrollListToIndex(itemContent, itemIndex);\n }\n }\n const touchesStart = {};\n let isTouched;\n let isMoved;\n let topPoint;\n let bottomPoint;\n let $labelEl;\n let previousIndex = null;\n function handleTouchStart(e) {\n const $children = $ul.children();\n if (!$children.length) return;\n topPoint = $children[0].getBoundingClientRect().top;\n bottomPoint = $children[$children.length - 1].getBoundingClientRect().top + $children[0].offsetHeight;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isTouched = true;\n isMoved = false;\n previousIndex = null;\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n if (!isMoved && index.params.label) {\n $labelEl = $('');\n $el.append($labelEl);\n }\n isMoved = true;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n let percentage = (pageY - topPoint) / (bottomPoint - topPoint);\n percentage = Math.min(Math.max(percentage, 0), 1);\n const itemIndex = Math.round((index.indexes.length - 1) * percentage);\n const itemContent = index.indexes[itemIndex];\n const ulHeight = bottomPoint - topPoint;\n const bubbleBottom = (index.height - ulHeight) / 2 + (1 - percentage) * ulHeight;\n if (itemIndex !== previousIndex) {\n if (index.params.label) {\n $labelEl.html(itemContent).transform(`translateY(-${bubbleBottom}px)`);\n }\n if (index.$listEl && index.params.scrollList) {\n index.scrollListToIndex(itemContent, itemIndex);\n }\n }\n previousIndex = itemIndex;\n index.$el.trigger('listindex:select');\n index.emit('local::select listIndexSelect', index, itemContent, itemIndex);\n }\n function handleTouchEnd() {\n if (!isTouched) return;\n isTouched = false;\n isMoved = false;\n if (index.params.label) {\n if ($labelEl) $labelEl.remove();\n $labelEl = undefined;\n }\n }\n const passiveListener = getSupport().passiveListener ? {\n passive: true\n } : false;\n index.attachEvents = function attachEvents() {\n $el.parents('.tab').on('tab:show', handleResize);\n $el.parents('.page').on('page:reinit', handleResize);\n $el.parents('.panel').on('panel:open', handleResize);\n $el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast').on('modal:open', handleResize);\n app.on('resize', handleResize);\n $el.on('click', handleClick);\n $el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n };\n index.detachEvents = function attachEvents() {\n $el.parents('.tab').off('tab:show', handleResize);\n $el.parents('.page').off('page:reinit', handleResize);\n $el.parents('.panel').off('panel:open', handleResize);\n $el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast').off('modal:open', handleResize);\n app.off('resize', handleResize);\n $el.off('click', handleClick);\n $el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n };\n // Init\n index.init();\n return index;\n }\n // eslint-disable-next-line\n scrollListToIndex(itemContent, itemIndex) {\n const index = this;\n const {\n $listEl,\n $pageContentEl,\n app\n } = index;\n if (!$listEl || !$pageContentEl || $pageContentEl.length === 0) return index;\n let $scrollToEl;\n $listEl.find('.list-group-title').each(el => {\n if ($scrollToEl) return;\n const $el = $(el);\n if ($el.text() === itemContent) {\n $scrollToEl = $el;\n }\n });\n if (!$scrollToEl || $scrollToEl.length === 0) return index;\n const parentTop = $scrollToEl.parent().offset().top;\n let paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const scrollTop = $pageContentEl[0].scrollTop;\n const scrollToElTop = $scrollToEl.offset().top;\n if ($pageContentEl.parents('.page-with-navbar-large').length) {\n const navbarInnerEl = app.navbar.getElByPage($pageContentEl.parents('.page-with-navbar-large').eq(0));\n const $titleLargeEl = $(navbarInnerEl).find('.title-large');\n if ($titleLargeEl.length) {\n paddingTop -= $titleLargeEl[0].offsetHeight || 0;\n }\n }\n if (parentTop <= paddingTop) {\n $pageContentEl.scrollTop(parentTop + scrollTop - paddingTop);\n } else {\n $pageContentEl.scrollTop(scrollToElTop + scrollTop - paddingTop);\n }\n return index;\n }\n renderSkipPlaceholder() {\n const index = this;\n return index.params.renderSkipPlaceholder.call(index);\n }\n renderItem(itemContent, itemIndex) {\n const index = this;\n return index.params.renderItem.call(index, itemContent, itemIndex);\n }\n render() {\n const index = this;\n const {\n $ul,\n indexes,\n skipRate\n } = index;\n let wasSkipped;\n const html = indexes.map((itemContent, itemIndex) => {\n if (itemIndex % skipRate !== 0 && skipRate > 0) {\n wasSkipped = true;\n return '';\n }\n let itemHtml = index.renderItem(itemContent, itemIndex);\n if (wasSkipped) {\n itemHtml = index.renderSkipPlaceholder() + itemHtml;\n }\n wasSkipped = false;\n return itemHtml;\n }).join('');\n $ul.html(html);\n return index;\n }\n calcSize() {\n const index = this;\n const {\n app,\n params,\n el,\n indexes\n } = index;\n const height = el.offsetHeight;\n const itemHeight = params[`${app.theme}ItemHeight`];\n const maxItems = Math.floor(height / itemHeight);\n const items = indexes.length;\n let skipRate = 0;\n if (items > maxItems) {\n skipRate = Math.ceil((items * 2 - 1) / maxItems);\n }\n index.height = height;\n index.skipRate = skipRate;\n return index;\n }\n calcIndexes() {\n const index = this;\n if (index.params.indexes === 'auto') {\n index.indexes = [];\n index.$listEl.find('.list-group-title').each(el => {\n const elContent = $(el).text();\n if (index.indexes.indexOf(elContent) < 0) {\n index.indexes.push(elContent);\n }\n });\n } else {\n index.indexes = index.params.indexes;\n }\n return index;\n }\n update() {\n const index = this;\n index.calcIndexes();\n index.calcSize();\n index.render();\n return index;\n }\n init() {\n const index = this;\n index.calcIndexes();\n index.calcSize();\n index.render();\n index.attachEvents();\n }\n destroy() {\n let index = this;\n index.$el.trigger('listindex:beforedestroy', index);\n index.emit('local::beforeDestroy listIndexBeforeDestroy');\n index.detachEvents();\n if (index.$el[0]) {\n index.$el[0].f7ListIndex = null;\n delete index.$el[0].f7ListIndex;\n }\n deleteProps(index);\n index = null;\n }\n}\nexport default ListIndex;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport ListIndex from './list-index-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'listIndex',\n static: {\n ListIndex\n },\n create() {\n const app = this;\n app.listIndex = ConstructorMethods({\n defaultSelector: '.list-index',\n constructor: ListIndex,\n app,\n domProp: 'f7ListIndex'\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.list-index-init').each(listIndexEl => {\n const params = extend($(listIndexEl).dataset(), {\n el: listIndexEl\n });\n app.listIndex.create(params);\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.list-index-init').each(listIndexEl => {\n if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.list-index-init').each(listIndexEl => {\n const params = extend($(listIndexEl).dataset(), {\n el: listIndexEl\n });\n app.listIndex.create(params);\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.list-index-init').each(listIndexEl => {\n if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n });\n }\n },\n vnode: {\n 'list-index-init': {\n insert(vnode) {\n const app = this;\n const listIndexEl = vnode.elm;\n const params = extend($(listIndexEl).dataset(), {\n el: listIndexEl\n });\n app.listIndex.create(params);\n },\n destroy(vnode) {\n const listIndexEl = vnode.elm;\n if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nconst Tab = {\n show() {\n const app = this;\n let tabEl;\n let tabLinkEl;\n let animate;\n let tabRoute;\n let animatedInit;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0] && args[0].constructor === Object) {\n tabEl = args[0].tabEl;\n tabLinkEl = args[0].tabLinkEl;\n animate = args[0].animate;\n tabRoute = args[0].tabRoute;\n animatedInit = args[0].animatedInit;\n } else {\n [tabEl, tabLinkEl, animate, tabRoute] = args;\n if (typeof args[1] === 'boolean') {\n [tabEl, animate, tabLinkEl, tabRoute] = args;\n if (args.length > 2 && tabLinkEl.constructor === Object) {\n [tabEl, animate, tabRoute, tabLinkEl] = args;\n }\n }\n }\n if (typeof animate === 'undefined') animate = true;\n const $newTabEl = $(tabEl);\n if (tabRoute && $newTabEl[0]) {\n $newTabEl[0].f7TabRoute = tabRoute;\n }\n if (!animatedInit && ($newTabEl.length === 0 || $newTabEl.hasClass('tab-active'))) {\n return {\n $newTabEl,\n newTabEl: $newTabEl[0]\n };\n }\n let $tabLinkEl;\n if (tabLinkEl) $tabLinkEl = $(tabLinkEl);\n const $tabsEl = $newTabEl.parent('.tabs');\n if ($tabsEl.length === 0) {\n return {\n $newTabEl,\n newTabEl: $newTabEl[0]\n };\n }\n\n // Release swipeouts in hidden tabs\n if (app.swipeout) app.swipeout.allowOpen = true;\n\n // Animated tabs\n const tabsChangedCallbacks = [];\n function onTabsChanged(callback) {\n tabsChangedCallbacks.push(callback);\n }\n function tabsChanged() {\n tabsChangedCallbacks.forEach(callback => {\n callback();\n });\n }\n let animated = false;\n if ($tabsEl.parent().hasClass('tabs-animated-wrap')) {\n $tabsEl.parent()[animate ? 'removeClass' : 'addClass']('not-animated');\n const transitionDuration = parseFloat($tabsEl.css('transition-duration').replace(',', '.'));\n if (animate && transitionDuration) {\n $tabsEl.transitionEnd(tabsChanged);\n animated = true;\n }\n const tabsTranslate = (app.rtl ? $newTabEl.index() : -$newTabEl.index()) * 100;\n $tabsEl.transform(`translate3d(${tabsTranslate}%,0,0)`);\n }\n\n // Swipeable tabs\n let swiper;\n if ($tabsEl[0].nodeName.toLowerCase() === 'swiper-container' && app.swiper) {\n swiper = $tabsEl[0].swiper;\n const newTabIndex = swiper.slides.indexOf($newTabEl[0]);\n if (swiper && swiper.activeIndex !== newTabIndex) {\n animated = true;\n swiper.once('slideChangeTransitionEnd', () => {\n tabsChanged();\n }).slideTo(newTabIndex, animate ? undefined : 0);\n } else if (swiper && swiper.animating) {\n animated = true;\n swiper.once('slideChangeTransitionEnd', () => {\n tabsChanged();\n });\n }\n }\n\n // Remove active class from old tabs\n const $oldTabEl = $tabsEl.children('.tab-active');\n $oldTabEl.removeClass('tab-active');\n if (!animatedInit && (!swiper || swiper && !swiper.animating || swiper && tabRoute)) {\n if ($oldTabEl.hasClass('view') && $oldTabEl.children('.page').length) {\n $oldTabEl.children('.page').each(pageEl => {\n $(pageEl).trigger('page:tabhide');\n app.emit('pageTabHide', pageEl);\n });\n }\n $oldTabEl.trigger('tab:hide');\n app.emit('tabHide', $oldTabEl[0]);\n }\n\n // Trigger 'show' event on new tab\n $newTabEl.addClass('tab-active');\n if (!animatedInit && (!swiper || swiper && !swiper.animating || swiper && tabRoute)) {\n if ($newTabEl.hasClass('view') && $newTabEl.children('.page').length) {\n $newTabEl.children('.page').each(pageEl => {\n $(pageEl).trigger('page:tabshow');\n app.emit('pageTabShow', pageEl);\n });\n }\n $newTabEl.trigger('tab:show');\n app.emit('tabShow', $newTabEl[0]);\n }\n\n // Find related link for new tab\n if (!$tabLinkEl) {\n // Search by id\n if (typeof tabEl === 'string') $tabLinkEl = $(`.tab-link[href=\"${tabEl}\"]`);else $tabLinkEl = $(`.tab-link[href=\"#${$newTabEl.attr('id')}\"]`);\n // Search by data-tab\n if (!$tabLinkEl || $tabLinkEl && $tabLinkEl.length === 0) {\n $('[data-tab]').each(el => {\n if ($newTabEl.is($(el).attr('data-tab'))) $tabLinkEl = $(el);\n });\n }\n if (tabRoute && (!$tabLinkEl || $tabLinkEl && $tabLinkEl.length === 0)) {\n $tabLinkEl = $(`[data-route-tab-id=\"${tabRoute.route.tab.id}\"]`);\n if ($tabLinkEl.length === 0) {\n $tabLinkEl = $(`.tab-link[href=\"${tabRoute.url}\"]`);\n }\n }\n if ($tabLinkEl.length > 1 && $newTabEl.parents('.page').length) {\n // eslint-disable-next-line\n $tabLinkEl = $tabLinkEl.filter(tabLinkElement => {\n return $(tabLinkElement).parents('.page')[0] === $newTabEl.parents('.page')[0];\n });\n if (app.theme === 'ios' && $tabLinkEl.length === 0 && tabRoute) {\n const $pageEl = $newTabEl.parents('.page');\n const $navbarEl = $(app.navbar.getElByPage($pageEl));\n $tabLinkEl = $navbarEl.find(`[data-route-tab-id=\"${tabRoute.route.tab.id}\"]`);\n if ($tabLinkEl.length === 0) {\n $tabLinkEl = $navbarEl.find(`.tab-link[href=\"${tabRoute.url}\"]`);\n }\n }\n }\n }\n if ($tabLinkEl.length > 0) {\n // Find related link for old tab\n let $oldTabLinkEl;\n if ($oldTabEl && $oldTabEl.length > 0) {\n // Search by id\n const oldTabId = $oldTabEl.attr('id');\n if (oldTabId) {\n $oldTabLinkEl = $(`.tab-link[href=\"#${oldTabId}\"]`);\n // Search by data-route-tab-id\n if (!$oldTabLinkEl || $oldTabLinkEl && $oldTabLinkEl.length === 0) {\n $oldTabLinkEl = $(`.tab-link[data-route-tab-id=\"${oldTabId}\"]`);\n }\n }\n // Search by data-tab\n if (!$oldTabLinkEl || $oldTabLinkEl && $oldTabLinkEl.length === 0) {\n $('[data-tab]').each(tabLinkElement => {\n if ($oldTabEl.is($(tabLinkElement).attr('data-tab'))) $oldTabLinkEl = $(tabLinkElement);\n });\n }\n if (!$oldTabLinkEl || $oldTabLinkEl && $oldTabLinkEl.length === 0) {\n $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');\n }\n } else if (tabRoute) {\n $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');\n }\n if ($oldTabLinkEl && $oldTabLinkEl.length > 1 && $oldTabEl && $oldTabEl.parents('.page').length) {\n // eslint-disable-next-line\n $oldTabLinkEl = $oldTabLinkEl.filter(tabLinkElement => {\n return $(tabLinkElement).parents('.page')[0] === $oldTabEl.parents('.page')[0];\n });\n }\n if ($oldTabLinkEl && $oldTabLinkEl.length > 0) $oldTabLinkEl.removeClass('tab-link-active');\n\n // Update links' classes\n if ($tabLinkEl && $tabLinkEl.length > 0) {\n $tabLinkEl.addClass('tab-link-active');\n // Material Highlight\n const $tabbarEl = $tabLinkEl.parents('.tabbar, .tabbar-icons');\n const hasHighlight = app.toolbar && $tabbarEl.length > 0 && ($tabbarEl.hasClass('tabbar-highlight') || app.theme !== 'ios');\n if (hasHighlight) {\n app.toolbar.setHighlight($tabbarEl);\n }\n }\n }\n return {\n $newTabEl,\n newTabEl: $newTabEl[0],\n $oldTabEl,\n oldTabEl: $oldTabEl[0],\n onTabsChanged,\n animated\n };\n }\n};\nexport default {\n name: 'tabs',\n create() {\n const app = this;\n extend(app, {\n tab: {\n show: Tab.show.bind(app)\n }\n });\n },\n on: {\n 'pageInit tabMounted': function onInit(pageOrTabEl) {\n const $el = $(pageOrTabEl.el || pageOrTabEl);\n const animatedTabEl = $el.find('.tabs-animated-wrap > .tabs > .tab-active')[0];\n if (!animatedTabEl) return;\n const app = this;\n app.tab.show({\n tabEl: animatedTabEl,\n animatedInit: true,\n animate: false\n });\n }\n },\n clicks: {\n '.tab-link': function tabLinkClick($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n if ($clickedEl.attr('href') && $clickedEl.attr('href').indexOf('#') === 0 || $clickedEl.attr('data-tab')) {\n const app = this;\n app.tab.show({\n tabEl: data.tab || $clickedEl.attr('href'),\n tabLinkEl: $clickedEl,\n animate: data.animate\n });\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, now, nextFrame } from '../../shared/utils.js';\nfunction swipePanel(panel) {\n const app = panel.app;\n if (panel.swipeInitialized) {\n return;\n }\n extend(panel, {\n swipeable: true,\n swipeInitialized: true\n });\n const params = panel.params;\n const {\n $el,\n $backdropEl,\n side,\n effect\n } = panel;\n let otherPanel;\n let isTouched;\n let isGestureStarted;\n let isMoved;\n let isScrolling;\n let isInterrupted;\n const touchesStart = {};\n let touchStartTime;\n let touchesDiff;\n let translate;\n let backdropOpacity;\n let panelWidth;\n let direction;\n let $viewEl;\n let touchMoves = 0;\n function handleTouchStart(e) {\n if (!panel.swipeable || isGestureStarted) return;\n if (!app.panel.allowOpen || !params.swipe && !params.swipeOnlyClose || isTouched) return;\n if ($('.modal-in:not(.toast):not(.notification), .photo-browser-in').length > 0) return;\n otherPanel = app.panel.get(side === 'left' ? 'right' : 'left') || {};\n const otherPanelOpened = otherPanel.opened && otherPanel.$el && !otherPanel.$el.hasClass('panel-in-breakpoint');\n if (!panel.opened && otherPanelOpened) {\n return;\n }\n if (!params.swipeOnlyClose) {\n if (otherPanelOpened) return;\n }\n if (e.target && e.target.nodeName.toLowerCase() === 'input' && e.target.type === 'range') return;\n if ($(e.target).closest('.range-slider, swiper-container.tabs, .calendar-months, .no-swipe-panel, .card-opened').length > 0) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n if (params.swipeOnlyClose && !panel.opened) {\n return;\n }\n if (params.swipeActiveArea && !panel.opened) {\n if (side === 'left') {\n if (touchesStart.x > params.swipeActiveArea) return;\n }\n if (side === 'right') {\n if (touchesStart.x < app.width - params.swipeActiveArea) return;\n }\n }\n touchMoves = 0;\n $viewEl = $(panel.getViewEl());\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n isInterrupted = false;\n touchStartTime = now();\n direction = undefined;\n }\n function handleTouchMove(e) {\n if (!isTouched || isGestureStarted || isInterrupted) return;\n touchMoves += 1;\n if (touchMoves < 2) return;\n if (e.f7PreventSwipePanel || app.preventSwipePanelBySwipeBack || app.preventSwipePanel) {\n isTouched = false;\n return;\n }\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n if (!direction) {\n if (pageX > touchesStart.x) {\n direction = 'to-right';\n } else {\n direction = 'to-left';\n }\n if (params.swipeActiveArea > 0 && !panel.opened) {\n if (side === 'left' && touchesStart.x > params.swipeActiveArea) {\n isTouched = false;\n return;\n }\n if (side === 'right' && touchesStart.x < app.width - params.swipeActiveArea) {\n isTouched = false;\n return;\n }\n }\n if ($el.hasClass('panel-in-breakpoint')) {\n isTouched = false;\n return;\n }\n if (side === 'left' && direction === 'to-left' && !$el.hasClass('panel-in') || side === 'right' && direction === 'to-right' && !$el.hasClass('panel-in')) {\n isTouched = false;\n return;\n }\n }\n let threshold = panel.opened ? 0 : -params.swipeThreshold;\n if (side === 'right') threshold = -threshold;\n if (!isMoved) {\n if (!panel.opened) {\n panel.insertToRoot();\n $el.addClass('panel-in-swipe');\n if ($backdropEl) $backdropEl.css('visibility', 'visible');\n $el.trigger('panel:swipeopen');\n panel.emit('local::swipeOpen panelSwipeOpen', panel);\n }\n panelWidth = $el[0].offsetWidth;\n if (effect === 'reveal' && $el.hasClass('panel-in-collapsed')) {\n panelWidth -= parseFloat($viewEl.css(`margin-${side}`));\n }\n $el.transition(0);\n }\n isMoved = true;\n if (e.cancelable) {\n e.preventDefault();\n }\n touchesDiff = pageX - touchesStart.x + threshold;\n const startTranslate = effect === 'floating' ? 8 : 0;\n if (side === 'right') {\n if (effect === 'cover' || effect === 'push' || effect === 'floating') {\n translate = touchesDiff + (panel.opened ? startTranslate : panelWidth);\n if (translate < 0 - startTranslate) translate = -startTranslate;\n if (translate > panelWidth) {\n translate = panelWidth;\n }\n } else {\n translate = touchesDiff - (panel.opened ? panelWidth : 0);\n if (translate > 0) translate = 0;\n if (translate < -panelWidth) {\n translate = -panelWidth;\n }\n }\n } else {\n translate = touchesDiff + (panel.opened ? panelWidth : startTranslate);\n if (translate < 0) translate = 0;\n if (translate > panelWidth + startTranslate) {\n translate = panelWidth + startTranslate;\n }\n }\n const noFollowProgress = Math.abs(translate / panelWidth);\n if (effect === 'reveal') {\n if (!params.swipeNoFollow) {\n $viewEl.transform(`translate3d(${translate}px,0,0)`).transition(0);\n if ($backdropEl) $backdropEl.transform(`translate3d(${translate}px,0,0)`).transition(0);\n }\n $el.trigger('panel:swipe', Math.abs(translate / panelWidth));\n panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));\n } else {\n if (side === 'left') translate -= panelWidth;\n if (!params.swipeNoFollow) {\n backdropOpacity = 1 - Math.abs(translate / panelWidth);\n if ($backdropEl) {\n $backdropEl.transition(0);\n $backdropEl.css({\n opacity: backdropOpacity\n });\n }\n $el.transform(`translate3d(${translate}px,0,0)`).transition(0);\n if (effect === 'push') {\n const viewTranslate = side === 'left' ? translate + panelWidth : translate - panelWidth;\n $viewEl.transform(`translate3d(${viewTranslate}px,0,0)`).transition(0);\n if ($backdropEl) {\n $backdropEl.transform(`translate3d(${viewTranslate}px,0,0)`).transition(0);\n }\n }\n }\n $el.trigger('panel:swipe', Math.abs(translate / panelWidth));\n panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));\n }\n if (params.swipeNoFollow) {\n const stateChanged = panel.opened && noFollowProgress === 0 || !panel.opened && noFollowProgress === 1;\n if (stateChanged) {\n isInterrupted = true;\n // eslint-disable-next-line\n handleTouchEnd(e);\n }\n }\n }\n function handleTouchEnd(e) {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n const isGesture = e.type === 'gesturestart' || isGestureStarted;\n isTouched = false;\n isMoved = false;\n const timeDiff = new Date().getTime() - touchStartTime;\n let action;\n const startTranslate = effect === 'floating' ? side === 'left' ? 8 : -8 : 0;\n const edge = (translate === startTranslate || Math.abs(translate) === panelWidth) && !params.swipeNoFollow;\n const threshold = params.swipeThreshold || 0;\n if (isGesture) {\n action = 'reset';\n } else if (!panel.opened) {\n if (Math.abs(touchesDiff) < threshold) {\n action = 'reset';\n } else if (effect === 'cover' || effect === 'push' || effect === 'floating') {\n if (translate === 0 + startTranslate) {\n action = 'swap'; // open\n } else if (timeDiff < 300 && Math.abs(translate) > 0) {\n action = 'swap'; // open\n } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {\n action = 'swap'; // open\n } else {\n action = 'reset'; // close\n }\n } else if (translate === 0) {\n action = 'reset';\n } else if (timeDiff < 300 && Math.abs(translate) > 0 || timeDiff >= 300 && Math.abs(translate) >= panelWidth / 2) {\n action = 'swap';\n } else {\n action = 'reset';\n }\n } else if (effect === 'cover' || effect === 'push' || effect === 'floating') {\n if (translate === 0) {\n action = 'reset'; // open\n } else if (timeDiff < 300 && Math.abs(translate) > 0) {\n action = 'swap'; // open\n } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {\n action = 'reset'; // open\n } else {\n action = 'swap'; // close\n }\n } else if (translate === -panelWidth) {\n action = 'reset';\n } else if (timeDiff < 300 && Math.abs(translate) >= 0 || timeDiff >= 300 && Math.abs(translate) <= panelWidth / 2) {\n if (side === 'left' && translate === panelWidth) action = 'reset';else action = 'swap';\n } else {\n action = 'reset';\n }\n if (action === 'swap') {\n if (panel.opened) {\n panel.close(!edge);\n } else {\n panel.open(!edge);\n }\n }\n let removePanelInClass = true;\n if (action === 'reset') {\n if (!panel.opened) {\n if (edge) {\n // edge position\n $el.removeClass('panel-in-swipe');\n } else {\n removePanelInClass = false;\n const target = effect === 'reveal' ? $viewEl : $el;\n panel.setStateClasses('before-closing');\n target.transitionEnd(() => {\n if ($el.hasClass('panel-in')) return;\n $el.removeClass('panel-in-swipe');\n panel.setStateClasses('after-closing');\n });\n }\n }\n }\n if (effect === 'reveal' || effect === 'push') {\n nextFrame(() => {\n $viewEl.transition('');\n $viewEl.transform('');\n });\n }\n if (removePanelInClass) {\n $el.removeClass('panel-in-swipe');\n }\n $el.transition('').transform('');\n if ($backdropEl) {\n $backdropEl.transform('').transition('').css({\n opacity: '',\n visibility: ''\n });\n }\n }\n function handleGestureStart(e) {\n isGestureStarted = true;\n handleTouchEnd(e);\n }\n function handleGestureEnd() {\n isGestureStarted = false;\n }\n\n // Add Events\n app.on('touchstart:passive', handleTouchStart);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('gesturestart', handleGestureStart);\n app.on('gestureend', handleGestureEnd);\n panel.on('panelDestroy', () => {\n app.off('touchstart:passive', handleTouchStart);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('gesturestart', handleGestureStart);\n app.off('gestureend', handleGestureEnd);\n });\n}\nexport default swipePanel;","import $ from '../../shared/dom7.js';\nimport { extend, nextFrame } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nfunction resizablePanel(panel) {\n const app = panel.app;\n const support = getSupport();\n if (panel.resizableInitialized) return;\n extend(panel, {\n resizable: true,\n resizableWidth: null,\n resizableInitialized: true\n });\n const $htmlEl = $('html');\n const {\n $el,\n $backdropEl,\n side,\n effect\n } = panel;\n if (!$el) return;\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let touchesDiff;\n let panelWidth;\n let $viewEl;\n let panelMinWidth;\n let panelMaxWidth;\n let visibleByBreakpoint;\n const isPushingPanel = effect !== 'cover' && effect !== 'floating';\n function transformCSSWidth(v) {\n if (!v) return null;\n if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {\n return parseInt(v, 10) / 100 * app.width;\n }\n const newV = parseInt(v, 10);\n if (Number.isNaN(newV)) return null;\n return newV;\n }\n function isResizable() {\n return panel.resizable && $el.hasClass('panel-resizable');\n }\n function handleTouchStart(e) {\n if (!isResizable()) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isMoved = false;\n isTouched = true;\n panelMinWidth = transformCSSWidth($el.css('min-width'));\n panelMaxWidth = transformCSSWidth($el.css('max-width'));\n visibleByBreakpoint = $el.hasClass('panel-in-breakpoint');\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n if (!isMoved) {\n panelWidth = $el[0].offsetWidth;\n $el.transition(0);\n $el.addClass('panel-resizing');\n $htmlEl.css('cursor', 'col-resize');\n if (isPushingPanel || visibleByBreakpoint) {\n $viewEl = $(panel.getViewEl());\n if (panel.$containerEl && panel.$containerEl.hasClass('page')) {\n $viewEl.add(panel.$containerEl.children('.page-content, .tabs, .fab'));\n }\n }\n if (isPushingPanel && !visibleByBreakpoint) {\n $backdropEl.transition(0);\n $viewEl.transition(0);\n }\n }\n isMoved = true;\n e.preventDefault();\n touchesDiff = pageX - touchesStart.x;\n let newPanelWidth = side === 'left' ? panelWidth + touchesDiff : panelWidth - touchesDiff;\n if (panelMinWidth && !Number.isNaN(panelMinWidth)) {\n newPanelWidth = Math.max(newPanelWidth, panelMinWidth);\n }\n if (panelMaxWidth && !Number.isNaN(panelMaxWidth)) {\n newPanelWidth = Math.min(newPanelWidth, panelMaxWidth);\n }\n newPanelWidth = Math.min(Math.max(newPanelWidth, 0), app.width);\n panel.resizableWidth = newPanelWidth;\n $el[0].style.width = `${newPanelWidth}px`;\n if (isPushingPanel && !visibleByBreakpoint) {\n if ($viewEl) {\n $viewEl.transform(`translate3d(${side === 'left' ? newPanelWidth : -newPanelWidth}px, 0, 0)`);\n }\n if ($backdropEl) {\n $backdropEl.transform(`translate3d(${side === 'left' ? newPanelWidth : -newPanelWidth}px, 0, 0)`);\n }\n } else if (visibleByBreakpoint && $viewEl) {\n $viewEl.css(`margin-${side}`, `${newPanelWidth}px`);\n }\n $el.trigger('panel:resize', newPanelWidth);\n panel.emit('local::resize panelResize', panel, newPanelWidth);\n }\n function handleTouchEnd() {\n $('html').css('cursor', '');\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n $htmlEl[0].style.setProperty(`--f7-panel-${side}-width`, `${panel.resizableWidth}px`);\n $el[0].style.width = '';\n if (isPushingPanel && !visibleByBreakpoint) {\n $viewEl.transform('');\n $backdropEl.transform('');\n }\n $el.removeClass('panel-resizing');\n nextFrame(() => {\n $el.transition('');\n if (isPushingPanel) {\n $backdropEl.transition('');\n if ($viewEl) $viewEl.transition('');\n }\n });\n }\n function handleResize() {\n if (!panel.opened || !panel.resizableWidth) return;\n panelMinWidth = transformCSSWidth($el.css('min-width'));\n panelMaxWidth = transformCSSWidth($el.css('max-width'));\n if (panelMinWidth && !Number.isNaN(panelMinWidth) && panel.resizableWidth < panelMinWidth) {\n panel.resizableWidth = Math.max(panel.resizableWidth, panelMinWidth);\n }\n if (panelMaxWidth && !Number.isNaN(panelMaxWidth) && panel.resizableWidth > panelMaxWidth) {\n panel.resizableWidth = Math.min(panel.resizableWidth, panelMaxWidth);\n }\n panel.resizableWidth = Math.min(Math.max(panel.resizableWidth, 0), app.width);\n $htmlEl[0].style.setProperty(`--f7-panel-${side}-width`, `${panel.resizableWidth}px`);\n }\n if (panel.$el.find('.panel-resize-handler').length === 0) {\n panel.$el.append('
                ');\n }\n panel.$resizeHandlerEl = panel.$el.children('.panel-resize-handler');\n $el.addClass('panel-resizable');\n\n // Add Events\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n panel.$el.on(app.touchEvents.start, '.panel-resize-handler', handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n panel.on('beforeOpen', handleResize);\n panel.once('panelDestroy', () => {\n $el.removeClass('panel-resizable');\n panel.$resizeHandlerEl.remove();\n panel.$el.off(app.touchEvents.start, '.panel-resize-handler', handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n panel.off('beforeOpen', handleResize);\n });\n}\nexport default resizablePanel;","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport swipePanel from './swipe-panel.js';\nimport resizablePanel from './resizable-panel.js';\nclass Panel extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n const extendedParams = extend({\n on: {}\n }, app.params.panel, params);\n super(extendedParams, [app]);\n const panel = this;\n panel.params = extendedParams;\n panel.$containerEl = panel.params.containerEl ? $(panel.params.containerEl).eq(0) : app.$el;\n panel.containerEl = panel.$containerEl[0];\n if (!panel.containerEl) {\n panel.$containerEl = app.$el;\n panel.containerEl = app.$el[0];\n }\n let $el;\n if (panel.params.el) {\n $el = $(panel.params.el).eq(0);\n } else if (panel.params.content) {\n $el = $(panel.params.content).filter(node => node.nodeType === 1).eq(0);\n }\n if ($el.length === 0) return panel;\n if ($el[0].f7Panel) return $el[0].f7Panel;\n $el[0].f7Panel = panel;\n let {\n side,\n effect,\n resizable\n } = panel.params;\n if (typeof side === 'undefined') side = $el.hasClass('panel-left') ? 'left' : 'right';\n if (typeof effect === 'undefined')\n // eslint-disable-next-line\n effect = $el.hasClass('panel-cover') ? 'cover' : $el.hasClass('panel-push') ? 'push' : $el.hasClass('panel-floating') ? 'floating' : 'reveal';\n if (typeof resizable === 'undefined') resizable = $el.hasClass('panel-resizable');\n let $backdropEl;\n if (panel.params.backdrop && panel.params.backdropEl) {\n $backdropEl = $(panel.params.backdropEl);\n } else if (panel.params.backdrop) {\n $backdropEl = panel.$containerEl.children('.panel-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('
                ');\n panel.$containerEl.prepend($backdropEl);\n }\n }\n extend(panel, {\n app,\n side,\n effect,\n resizable,\n $el,\n el: $el[0],\n opened: false,\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0]\n });\n\n // Install Modules\n panel.useModules();\n\n // Init\n panel.init();\n return panel;\n }\n getViewEl() {\n const panel = this;\n let viewEl;\n if (panel.$containerEl.children('.views').length > 0) {\n viewEl = panel.$containerEl.children('.views')[0];\n } else {\n viewEl = panel.$containerEl.children('.view')[0];\n }\n return viewEl;\n }\n setStateClasses(state) {\n const panel = this;\n const {\n side,\n el,\n effect\n } = panel;\n const viewEl = panel.getViewEl();\n const panelInView = viewEl && viewEl.contains(el);\n const $targetEl = !viewEl || panelInView ? panel.$containerEl : $('html');\n if (state === 'open') {\n $targetEl.addClass(`with-panel with-panel-${panel.side}-${panel.effect}`);\n }\n if (state === 'before-closing') {\n $targetEl.addClass('with-panel-closing');\n }\n if (state === 'closing') {\n $targetEl.addClass('with-panel-closing');\n $targetEl.removeClass(`with-panel with-panel-${panel.side}-${panel.effect}`);\n }\n if (state === 'after-closing') {\n $targetEl.removeClass('with-panel-closing');\n }\n if (state === 'closed') {\n $targetEl.removeClass(`with-panel-${side}-${effect}`);\n }\n }\n enableVisibleBreakpoint() {\n const panel = this;\n panel.visibleBreakpointDisabled = false;\n panel.setVisibleBreakpoint();\n return panel;\n }\n disableVisibleBreakpoint() {\n const panel = this;\n panel.visibleBreakpointDisabled = true;\n panel.setVisibleBreakpoint();\n return panel;\n }\n toggleVisibleBreakpoint() {\n const panel = this;\n panel.visibleBreakpointDisabled = !panel.visibleBreakpointDisabled;\n panel.setVisibleBreakpoint();\n return panel;\n }\n setVisibleBreakpoint(emitEvents) {\n if (emitEvents === void 0) {\n emitEvents = true;\n }\n const panel = this;\n const app = panel.app;\n if (!panel.visibleBreakpointResizeHandler) {\n panel.visibleBreakpointResizeHandler = function visibleBreakpointResizeHandler() {\n panel.setVisibleBreakpoint();\n };\n app.on('resize', panel.visibleBreakpointResizeHandler);\n }\n const {\n side,\n $el,\n $containerEl,\n params,\n visibleBreakpointDisabled\n } = panel;\n const breakpoint = params.visibleBreakpoint;\n const $viewEl = $(panel.getViewEl());\n const wasVisible = $el.hasClass('panel-in-breakpoint');\n if ($containerEl && $containerEl.hasClass('page')) {\n $viewEl.add($containerEl.children('.page-content, .tabs, .fab'));\n }\n if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null && !visibleBreakpointDisabled) {\n if (!wasVisible) {\n panel.setStateClasses('closed');\n $el.addClass('panel-in-breakpoint').removeClass('panel-in panel-in-collapsed');\n panel.onOpen(false);\n panel.onOpened();\n $viewEl.css({\n [`margin-${side}`]: `${$el.width()}px`\n });\n app.allowPanelOpen = true;\n if (emitEvents) {\n panel.emit('local::breakpoint panelBreakpoint', panel);\n panel.$el.trigger('panel:breakpoint');\n }\n } else {\n $viewEl.css({\n [`margin-${side}`]: `${$el.width()}px`\n });\n }\n } else if (wasVisible) {\n $el.removeClass('panel-in-breakpoint panel-in');\n panel.onClose();\n panel.onClosed();\n $viewEl.css({\n [`margin-${side}`]: ''\n });\n if (emitEvents) {\n panel.emit('local::breakpoint panelBreakpoint', panel);\n panel.$el.trigger('panel:breakpoint');\n }\n }\n }\n enableCollapsedBreakpoint() {\n const panel = this;\n panel.collapsedBreakpointDisabled = false;\n panel.setCollapsedBreakpoint();\n return panel;\n }\n disableCollapsedBreakpoint() {\n const panel = this;\n panel.collapsedBreakpointDisabled = true;\n panel.setCollapsedBreakpoint();\n return panel;\n }\n toggleCollapsedBreakpoint() {\n const panel = this;\n panel.collapsedBreakpointDisabled = !panel.collapsedBreakpointDisabled;\n panel.setCollapsedBreakpoint();\n return panel;\n }\n setCollapsedBreakpoint(emitEvents) {\n if (emitEvents === void 0) {\n emitEvents = true;\n }\n const panel = this;\n const app = panel.app;\n if (!panel.collapsedBreakpointResizeHandler) {\n panel.collapsedBreakpointResizeHandler = function collapsedBreakpointResizeHandler() {\n panel.setCollapsedBreakpoint();\n };\n app.on('resize', panel.collapsedBreakpointResizeHandler);\n }\n const {\n $el,\n params,\n collapsedBreakpointDisabled\n } = panel;\n if ($el.hasClass('panel-in-breakpoint')) return;\n const breakpoint = params.collapsedBreakpoint;\n const wasVisible = $el.hasClass('panel-in-collapsed');\n if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null && !collapsedBreakpointDisabled) {\n if (!wasVisible) {\n panel.setStateClasses('closed');\n $el.addClass('panel-in-collapsed').removeClass('panel-in');\n panel.collapsed = true;\n app.allowPanelOpen = true;\n if (emitEvents) {\n panel.emit('local::collapsedBreakpoint panelCollapsedBreakpoint', panel);\n panel.$el.trigger('panel:collapsedbreakpoint');\n }\n }\n } else if (wasVisible) {\n $el.removeClass('panel-in-collapsed panel-in');\n panel.collapsed = false;\n if (emitEvents) {\n panel.emit('local::collapsedBreakpoint panelCollapsedBreakpoint', panel);\n panel.$el.trigger('panel:collapsedbreakpoint');\n }\n }\n }\n enableResizable() {\n const panel = this;\n if (panel.resizableInitialized) {\n panel.resizable = true;\n panel.$el.addClass('panel-resizable');\n } else {\n resizablePanel(panel);\n }\n return panel;\n }\n disableResizable() {\n const panel = this;\n panel.resizable = false;\n panel.$el.removeClass('panel-resizable');\n return panel;\n }\n enableSwipe() {\n const panel = this;\n if (panel.swipeInitialized) {\n panel.swipeable = true;\n } else {\n swipePanel(panel);\n }\n return panel;\n }\n disableSwipe() {\n const panel = this;\n panel.swipeable = false;\n return panel;\n }\n onOpen(modifyHtmlClasses) {\n if (modifyHtmlClasses === void 0) {\n modifyHtmlClasses = true;\n }\n const panel = this;\n // eslint-disable-next-line\n panel._openTransitionStarted = false;\n const app = panel.app;\n panel.opened = true;\n app.panel.allowOpen = false;\n panel.$el.trigger('panel:beforeopen');\n panel.emit('local::beforeOpen panelBeforeOpen', panel);\n if (modifyHtmlClasses) {\n panel.setStateClasses('open');\n }\n panel.$el.trigger('panel:open');\n panel.emit('local::open panelOpen', panel);\n }\n onOpened() {\n const panel = this;\n const app = panel.app;\n app.panel.allowOpen = true;\n panel.$el.trigger('panel:opened');\n panel.emit('local::opened panelOpened', panel);\n }\n onClose() {\n const panel = this;\n const app = panel.app;\n panel.opened = false;\n app.panel.allowOpen = false;\n panel.$el.trigger('panel:beforeclose');\n panel.emit('local::beforeClose panelBeforeClose', panel);\n panel.setStateClasses('closing');\n panel.$el.trigger('panel:close');\n panel.emit('local::close panelClose', panel);\n }\n onClosed() {\n const panel = this;\n const app = panel.app;\n app.panel.allowOpen = true;\n panel.setStateClasses('after-closing');\n panel.$el.removeClass('panel-out');\n if (panel.$backdropEl) {\n const otherPanel = app.panel.get('.panel-in');\n const shouldHideBackdrop = !otherPanel || otherPanel && !otherPanel.$backdropEl;\n if (shouldHideBackdrop) {\n panel.$backdropEl.removeClass('panel-backdrop-in');\n }\n }\n panel.$el.trigger('panel:closed');\n panel.emit('local::closed panelClosed', panel);\n }\n toggle(animate) {\n if (animate === void 0) {\n animate = true;\n }\n const panel = this;\n const breakpoint = panel.params.visibleBreakpoint;\n const app = panel.app;\n if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null) {\n return panel.toggleVisibleBreakpoint();\n }\n if (panel.opened) panel.close(animate);else panel.open(animate);\n return panel;\n }\n insertToRoot() {\n const panel = this;\n const document = getDocument();\n const {\n $el,\n $backdropEl,\n $containerEl\n } = panel;\n const $panelParentEl = $el.parent();\n const wasInDom = $el.parents(document).length > 0;\n if (!$panelParentEl.is($containerEl) || $el.prevAll('.views, .view').length) {\n const $insertBeforeEl = $containerEl.children('.panel, .views, .view').eq(0);\n const $insertAfterEl = $containerEl.children('.panel-backdrop').eq(0);\n if ($insertBeforeEl.length) {\n $el.insertBefore($insertBeforeEl);\n } else if ($insertAfterEl) {\n $el.insertBefore($insertAfterEl);\n } else {\n $containerEl.prepend($el);\n }\n if ($backdropEl && $backdropEl.length && (!$backdropEl.parent().is($containerEl) && $backdropEl.nextAll('.panel').length === 0 || $backdropEl.parent().is($containerEl) && $backdropEl.nextAll('.panel').length === 0)) {\n $backdropEl.insertBefore($el);\n }\n panel.once('panelClosed', () => {\n if (wasInDom) {\n $panelParentEl.append($el);\n } else {\n $el.remove();\n }\n });\n }\n }\n open(animate) {\n if (animate === void 0) {\n animate = true;\n }\n const panel = this;\n const app = panel.app;\n if (!app.panel.allowOpen) return false;\n const {\n effect,\n $el,\n $backdropEl,\n opened,\n $containerEl\n } = panel;\n if (!$el || $el.hasClass('panel-in')) {\n return panel;\n }\n panel.insertToRoot();\n\n // Ignore if opened\n if (opened || $el.hasClass('panel-in-breakpoint') || $el.hasClass('panel-in')) return false;\n\n // Close if some panel is opened\n const otherOpenedPanel = app.panel.get('.panel-in');\n if (otherOpenedPanel && otherOpenedPanel !== panel) {\n otherOpenedPanel.close(animate);\n }\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n $el.addClass('panel-in');\n if ($backdropEl) {\n $backdropEl.addClass('panel-backdrop-in');\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n }\n if (['cover', 'push', 'floating'].includes(panel.effect)) {\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n panel._clientLeft = $el[0].clientLeft;\n }\n\n // Transitionend\n const $viewEl = $(panel.getViewEl());\n if ($containerEl && $containerEl.hasClass('page')) {\n $viewEl.add($containerEl.children('.page-content, .tabs'));\n }\n const transitionEndTarget = effect === 'reveal' ? $viewEl : $el;\n function panelTransitionStart() {\n transitionEndTarget.transitionStart(() => {\n // eslint-disable-next-line\n panel._openTransitionStarted = true;\n });\n }\n function panelTransitionEnd() {\n transitionEndTarget.transitionEnd(e => {\n if ($(e.target).is(transitionEndTarget)) {\n if ($el.hasClass('panel-out')) {\n panel.onClosed();\n } else {\n panel.onOpened();\n }\n } else panelTransitionEnd();\n });\n }\n if (animate) {\n if ($backdropEl) {\n $backdropEl.removeClass('not-animated');\n }\n panelTransitionStart();\n panelTransitionEnd();\n $el.removeClass('panel-out not-animated').addClass('panel-in');\n panel.onOpen();\n } else {\n if ($backdropEl) {\n $backdropEl.addClass('not-animated');\n }\n $el.removeClass('panel-out').addClass('panel-in not-animated');\n panel.onOpen();\n panel.onOpened();\n // eslint-disable-next-line\n panel._openTransitionStarted = true;\n }\n return true;\n }\n close(animate) {\n if (animate === void 0) {\n animate = true;\n }\n const panel = this;\n const {\n effect,\n $el,\n $backdropEl,\n opened,\n $containerEl\n } = panel;\n if (!opened || $el.hasClass('panel-in-breakpoint') || !$el.hasClass('panel-in')) return panel;\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n if ($backdropEl) {\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n }\n const $viewEl = $(panel.getViewEl());\n if ($containerEl && $containerEl.hasClass('page')) {\n $viewEl.add($containerEl.children('.page-content, .tabs'));\n }\n const transitionEndTarget = effect === 'reveal' ? $viewEl : $el;\n // eslint-disable-next-line\n if (!panel._openTransitionStarted) {\n // eslint-disable-next-line\n animate = false;\n }\n function transitionEnd() {\n if ($el.hasClass('panel-out')) {\n panel.onClosed();\n } else if ($el.hasClass('panel-in')) {\n panel.onOpened();\n }\n panel.setStateClasses('after-closing');\n }\n if (animate) {\n transitionEndTarget.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('panel-in').addClass('panel-out');\n // Emit close\n panel.onClose();\n } else {\n $el.addClass('not-animated').removeClass('panel-in').addClass('panel-out');\n // Emit close\n panel.onClose();\n panel.onClosed();\n }\n return panel;\n }\n init() {\n const panel = this;\n // const app = panel.app;\n if (typeof panel.params.visibleBreakpoint !== 'undefined') {\n panel.setVisibleBreakpoint();\n }\n if (typeof panel.params.collapsedBreakpoint !== 'undefined') {\n panel.setCollapsedBreakpoint();\n }\n if (panel.params.swipe) {\n panel.enableSwipe();\n }\n if (panel.resizable) {\n panel.enableResizable();\n }\n }\n destroy() {\n let panel = this;\n const app = panel.app;\n const {\n $containerEl\n } = panel;\n if (!panel.$el) {\n // Panel already destroyed\n return;\n }\n panel.emit('local::beforeDestroy panelBeforeDestroy', panel);\n panel.$el.trigger('panel:beforedestroy');\n if (panel.visibleBreakpointResizeHandler) {\n app.off('resize', panel.visibleBreakpointResizeHandler);\n }\n if (panel.collapsedBreakpointResizeHandler) {\n app.off('resize', panel.collapsedBreakpointResizeHandler);\n }\n if (panel.$el.hasClass('panel-in-breakpoint') || panel.$el.hasClass('panel-in-collapsed')) {\n const $viewEl = $(panel.getViewEl());\n if ($containerEl && $containerEl.hasClass('page')) {\n $viewEl.add($containerEl.children('.page-content, .tabs'));\n }\n panel.$el.removeClass('panel-in-breakpoint panel-in-collapsed panel-in');\n $viewEl.css({\n [`margin-${panel.side}`]: ''\n });\n panel.emit('local::breakpoint panelBreakpoint', panel);\n panel.$el.trigger('panel:breakpoint');\n }\n panel.$el.trigger('panel:destroy');\n panel.emit('local::destroy panelDestroy', panel);\n if (panel.el) {\n panel.el.f7Panel = null;\n delete panel.el.f7Panel;\n }\n deleteProps(panel);\n panel = null;\n }\n}\nexport default Panel;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Panel from './panel-class.js';\nexport default {\n name: 'panel',\n params: {\n panel: {\n opened: undefined,\n // default based on panel-in class\n side: undefined,\n // default based on panel class\n effect: undefined,\n // default based on panel class\n resizable: undefined,\n // default based on panel-resizable class\n backdrop: true,\n backdropEl: undefined,\n visibleBreakpoint: undefined,\n collapsedBreakpoint: undefined,\n swipe: false,\n // or true\n swipeNoFollow: false,\n // or true\n swipeOnlyClose: false,\n swipeActiveArea: 0,\n swipeThreshold: 0,\n closeByBackdropClick: true,\n containerEl: undefined\n }\n },\n static: {\n Panel\n },\n create() {\n const app = this;\n extend(app, {\n panel: {\n allowOpen: true,\n create(params) {\n return new Panel(app, params);\n },\n get(el) {\n if (el === void 0) {\n el = '.panel';\n }\n if (el instanceof Panel) return el;\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n const $el = $(el);\n if ($el.length === 0 || $el.length > 1) return undefined;\n return $el[0].f7Panel;\n },\n destroy(el) {\n if (el === void 0) {\n el = '.panel';\n }\n const panel = app.panel.get(el);\n if (panel && panel.destroy) return panel.destroy();\n return undefined;\n },\n open(el, animate) {\n if (el === void 0) {\n el = '.panel';\n }\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n let panel = app.panel.get(el);\n if (panel && panel.open) return panel.open(animate);\n if (!panel) {\n panel = app.panel.create({\n el\n });\n return panel.open(animate);\n }\n return undefined;\n },\n close(el, animate) {\n if (el === void 0) {\n el = '.panel-in';\n }\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n let panel = app.panel.get(el);\n if (panel && panel.open) return panel.close(animate);\n if (!panel) {\n panel = app.panel.create({\n el\n });\n return panel.close(animate);\n }\n return undefined;\n },\n toggle(el, animate) {\n if (el === void 0) {\n el = '.panel';\n }\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n let panel = app.panel.get(el);\n if (panel && panel.toggle) return panel.toggle(animate);\n if (!panel) {\n panel = app.panel.create({\n el\n });\n return panel.toggle(animate);\n }\n return undefined;\n }\n }\n });\n },\n on: {\n init() {\n const app = this;\n $('.panel-init').each(panelEl => {\n const params = Object.assign({\n el: panelEl\n }, $(panelEl).dataset() || {});\n app.panel.create(params);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.panel-init').each(panelEl => {\n const params = Object.assign({\n el: panelEl\n }, $(panelEl).dataset() || {});\n app.panel.create(params);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.panel-init').each(panelEl => {\n const panel = app.panel.get(panelEl);\n if (panel && panel.destroy) panel.destroy();\n });\n }\n },\n vnode: {\n 'panel-init': {\n insert(vnode) {\n const app = this;\n const panelEl = vnode.elm;\n const params = Object.assign({\n el: panelEl\n }, $(panelEl).dataset() || {});\n app.panel.create(params);\n },\n destroy(vnode) {\n const app = this;\n const panelEl = vnode.elm;\n const panel = app.panel.get(panelEl);\n if (panel && panel.destroy) panel.destroy();\n }\n }\n },\n clicks: {\n '.panel-open': function open(clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.panel.open(data.panel, data.animate);\n },\n '.panel-close': function close(clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.panel.close(data.panel, data.animate);\n },\n '.panel-toggle': function close(clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.panel.toggle(data.panel, data.animate);\n },\n '.panel-backdrop': function close() {\n const app = this;\n const $panelEl = $('.panel-in:not(.panel-out)');\n if (!$panelEl.length) return;\n const instance = $panelEl[0] && $panelEl[0].f7Panel;\n $panelEl.trigger('panel:backdrop-click');\n if (instance) {\n instance.emit('backdropClick', instance);\n }\n app.emit('panelBackdropClick', instance || $panelEl[0]);\n if (instance && instance.params.closeByBackdropClick === false) return;\n if (app.params.panel.closeByBackdropClick) app.panel.close();\n }\n }\n};","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport $ from '../../shared/dom7.js';\nconst CardExpandable = {\n open(cardEl, animate) {\n if (cardEl === void 0) {\n cardEl = '.card-expandable';\n }\n if (animate === void 0) {\n animate = true;\n }\n const app = this;\n const device = getDevice();\n const document = getDocument();\n const support = getSupport();\n const $cardEl = $(cardEl).eq(0);\n if (!$cardEl || !$cardEl.length) return;\n if ($cardEl.hasClass('card-opened') || $cardEl.hasClass('card-opening') || $cardEl.hasClass('card-closing')) return;\n const $pageEl = $cardEl.parents('.page').eq(0);\n if (!$pageEl.length) return;\n if ($pageEl.find('.card-opened').length) {\n return;\n }\n let prevented;\n function prevent() {\n prevented = true;\n }\n $cardEl.trigger('card:beforeopen', {\n prevent\n });\n app.emit('cardBeforeOpen', $cardEl[0], prevent);\n if (prevented) return;\n const cardParams = Object.assign({\n animate\n }, app.params.card, $cardEl.dataset());\n const $pageContentEl = $cardEl.parents('.page-content');\n let $backdropEl;\n if ($cardEl.attr('data-backdrop-el')) {\n $backdropEl = $($cardEl.attr('data-backdrop-el'));\n }\n if (!$backdropEl && cardParams.backdrop) {\n $backdropEl = $pageContentEl.find('.card-backdrop');\n if (!$backdropEl.length) {\n $backdropEl = $('
                ');\n $pageContentEl.append($backdropEl);\n }\n }\n let $navbarEl;\n let $toolbarEl;\n if (cardParams.hideNavbarOnOpen) {\n $navbarEl = $pageEl.children('.navbar');\n if (!$navbarEl.length) {\n if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;\n }\n }\n if (cardParams.hideToolbarOnOpen) {\n $toolbarEl = $pageEl.children('.toolbar');\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n }\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.views').children('.toolbar');\n }\n }\n const currTransform = $cardEl.css('transform');\n let hasTransform;\n if (currTransform && currTransform.match(/[2-9]/)) {\n hasTransform = true;\n }\n const $cardContentEl = $cardEl.children('.card-content');\n const $cardSizeEl = $(document.createElement('div')).addClass('card-expandable-size');\n $cardEl.append($cardSizeEl);\n let cardWidth = $cardEl[0].offsetWidth;\n let cardHeight = $cardEl[0].offsetHeight;\n let pageWidth = $pageEl[0].offsetWidth;\n let pageHeight = $pageEl[0].offsetHeight;\n let maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;\n let maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;\n let statusbarHeight;\n if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {\n statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);\n if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;\n }\n if (statusbarHeight) {\n maxHeight -= statusbarHeight;\n }\n let scaleX = maxWidth / cardWidth;\n let scaleY = maxHeight / cardHeight;\n let offset = $cardEl.offset();\n let pageOffset = $pageEl.offset();\n if (statusbarHeight) {\n pageOffset.top += statusbarHeight / 2;\n }\n offset.left -= pageOffset.left;\n let cardLeftOffset;\n let cardTopOffset;\n if (hasTransform) {\n const transformValues = currTransform.replace(/matrix\\(|\\)/g, '').split(',').map(el => el.trim());\n if (transformValues && transformValues.length > 1) {\n const scale = parseFloat(transformValues[0]);\n cardLeftOffset = offset.left - cardWidth * (1 - scale) / 2;\n cardTopOffset = offset.top - pageOffset.top - cardHeight * (1 - scale) / 2;\n if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n } else {\n cardLeftOffset = $cardEl[0].offsetLeft;\n cardTopOffset = $cardEl[0].offsetTop - ($pageContentEl.length ? $pageContentEl[0].scrollTop : 0);\n }\n } else {\n cardLeftOffset = offset.left;\n cardTopOffset = offset.top - pageOffset.top;\n if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n }\n cardLeftOffset -= (pageWidth - maxWidth) / 2;\n cardTopOffset -= (pageHeight - maxHeight) / 2;\n let cardRightOffset = maxWidth - cardWidth - cardLeftOffset;\n if (app.rtl) {\n [cardLeftOffset, cardRightOffset] = [cardRightOffset, cardLeftOffset];\n }\n let cardBottomOffset = maxHeight - cardHeight - cardTopOffset;\n let translateX = (cardRightOffset - cardLeftOffset) / 2;\n let translateY = (cardBottomOffset - cardTopOffset) / 2;\n if (cardParams.hideNavbarOnOpen && $navbarEl && $navbarEl.length) {\n if ($navbarEl.closest('.navbar-hidden').length) {\n // Was hidden\n $cardEl[0].f7KeepNavbarOnClose = true;\n } else {\n delete $cardEl[0].f7KeepNavbarOnClose;\n app.navbar.hide($navbarEl, cardParams.animate, cardParams.hideStatusbarOnOpen, true);\n }\n }\n if (cardParams.hideToolbarOnOpen && $toolbarEl && $toolbarEl.length) {\n if ($toolbarEl.closest('.toolbar-hidden').length) {\n // Was hidden\n $cardEl[0].f7KeepToolbarOnClose = true;\n } else {\n delete $cardEl[0].f7KeepToolbarOnClose;\n app.toolbar.hide($toolbarEl, cardParams.animate);\n }\n }\n if ($backdropEl) {\n $backdropEl.removeClass('card-backdrop-out').addClass('card-backdrop-in');\n }\n $cardEl.removeClass('card-transitioning');\n if (cardParams.animate) {\n $cardEl.addClass('card-opening');\n }\n $cardEl.trigger('card:open');\n app.emit('cardOpen', $cardEl[0]);\n function transitionEnd() {\n $pageEl.addClass('page-with-card-opened');\n if (device.ios && $pageContentEl.length) {\n $pageContentEl.css('height', `${$pageContentEl[0].offsetHeight + 1}px`);\n setTimeout(() => {\n $pageContentEl.css('height', '');\n });\n }\n $cardEl.addClass('card-opened');\n $cardEl.removeClass('card-opening');\n $cardEl.trigger('card:opened');\n app.emit('cardOpened', $cardEl[0], $pageEl[0]);\n }\n $cardContentEl.css({\n width: `${maxWidth}px`,\n height: `${maxHeight}px`\n }).transform(`translate3d(${app.rtl ? cardLeftOffset + translateX : -cardLeftOffset - translateX}px, 0px, 0) scale(${1 / scaleX}, ${1 / scaleY})`);\n $cardEl.transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);\n if (cardParams.animate) {\n $cardEl.transitionEnd(() => {\n transitionEnd();\n });\n } else {\n transitionEnd();\n }\n function onResize() {\n $cardEl.removeClass('card-transitioning');\n cardWidth = $cardEl[0].offsetWidth;\n cardHeight = $cardEl[0].offsetHeight;\n pageWidth = $pageEl[0].offsetWidth;\n pageHeight = $pageEl[0].offsetHeight;\n maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;\n maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;\n statusbarHeight = 0;\n if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {\n statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);\n if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;\n }\n if (statusbarHeight) {\n maxHeight -= statusbarHeight;\n }\n scaleX = maxWidth / cardWidth;\n scaleY = maxHeight / cardHeight;\n $cardEl.transform('translate3d(0px, 0px, 0) scale(1)');\n offset = $cardEl.offset();\n pageOffset = $pageEl.offset();\n if (statusbarHeight) {\n pageOffset.top += statusbarHeight / 2;\n }\n offset.left -= pageOffset.left;\n offset.top -= pageOffset.top;\n cardLeftOffset = offset.left - (pageWidth - maxWidth) / 2;\n if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n cardTopOffset = offset.top - (pageHeight - maxHeight) / 2;\n cardRightOffset = maxWidth - cardWidth - cardLeftOffset;\n cardBottomOffset = maxHeight - cardHeight - cardTopOffset;\n if (app.rtl) {\n [cardLeftOffset, cardRightOffset] = [cardRightOffset, cardLeftOffset];\n }\n translateX = (cardRightOffset - cardLeftOffset) / 2;\n translateY = (cardBottomOffset - cardTopOffset) / 2;\n $cardEl.transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);\n $cardContentEl.css({\n width: `${maxWidth}px`,\n height: `${maxHeight}px`\n }).transform(`translate3d(${app.rtl ? cardLeftOffset + translateX : -cardLeftOffset - translateX}px, 0px, 0) scale(${1 / scaleX}, ${1 / scaleY})`);\n }\n let cardScrollTop;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchEndX;\n let touchEndY;\n let isScrolling;\n let progress;\n let isV;\n let isH;\n let $cardScrollableEl;\n function onTouchStart(e) {\n if (!$(e.target).closest($cardEl).length || !e.isTrusted) return;\n if (!$cardEl.hasClass('card-opened')) return;\n $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);\n if ($cardScrollableEl[0] && $cardScrollableEl[0] !== $cardContentEl[0] && !$cardScrollableEl[0].contains(e.target)) {\n cardScrollTop = 0;\n } else {\n cardScrollTop = $cardScrollableEl.scrollTop();\n }\n isTouched = true;\n touchStartX = e.targetTouches[0].pageX;\n touchStartY = e.targetTouches[0].pageY;\n isScrolling = undefined;\n isV = false;\n isH = false;\n }\n function onTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n touchEndX = e.targetTouches[0].pageX;\n touchEndY = e.targetTouches[0].pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(touchEndY - touchStartY) > Math.abs(touchEndX - touchStartX));\n }\n if (!isH && !isV) {\n if (!isScrolling && e.targetTouches[0].clientX <= 50) {\n isH = true;\n } else {\n isV = true;\n }\n }\n if (!(isH || isV) || isV && cardScrollTop !== 0) {\n isTouched = true;\n isMoved = true;\n return;\n }\n if (!isMoved) {\n $cardEl.removeClass('card-transitioning');\n }\n isMoved = true;\n progress = isV ? Math.max((touchEndY - touchStartY) / 150, 0) : Math.max((touchEndX - touchStartX) / (cardWidth / 2), 0);\n if (progress > 0 && isV || isH) {\n if (isV && device.ios && $cardScrollableEl[0] === $cardContentEl[0]) {\n $cardScrollableEl.css('-webkit-overflow-scrolling', 'auto');\n $cardScrollableEl.scrollTop(0);\n }\n e.preventDefault();\n }\n if (progress > 1) progress **= 0.3;\n if (progress > (isV ? 1.3 : 1.1)) {\n isTouched = false;\n isMoved = false;\n app.card.close($cardEl);\n } else {\n $cardEl.transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX * (1 - progress * 0.2)}, ${scaleY * (1 - progress * 0.2)})`);\n }\n }\n function onTouchEnd(e) {\n if (!isTouched || !isMoved || !e.isTrusted) return;\n isTouched = false;\n isMoved = false;\n if (device.ios) {\n $cardScrollableEl.css('-webkit-overflow-scrolling', '');\n }\n if (progress >= 0.8) {\n app.card.close($cardEl);\n } else {\n $cardEl.addClass('card-transitioning').transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);\n }\n }\n $cardEl[0].detachEventHandlers = function detachEventHandlers() {\n app.off('resize', onResize);\n if (support.touch && cardParams.swipeToClose) {\n app.off('touchstart:passive', onTouchStart);\n app.off('touchmove:active', onTouchMove);\n app.off('touchend:passive', onTouchEnd);\n }\n };\n app.on('resize', onResize);\n if (support.touch && cardParams.swipeToClose) {\n app.on('touchstart:passive', onTouchStart);\n app.on('touchmove:active', onTouchMove);\n app.on('touchend:passive', onTouchEnd);\n }\n },\n close(cardEl, animate) {\n if (cardEl === void 0) {\n cardEl = '.card-expandable.card-opened';\n }\n if (animate === void 0) {\n animate = true;\n }\n const app = this;\n const device = getDevice();\n const $cardEl = $(cardEl).eq(0);\n if (!$cardEl || !$cardEl.length) return;\n if (!$cardEl.hasClass('card-opened') || $cardEl.hasClass('card-opening') || $cardEl.hasClass('card-closing')) return;\n const $cardContentEl = $cardEl.children('.card-content');\n const $pageContentEl = $cardEl.parents('.page-content');\n const $pageEl = $cardEl.parents('.page').eq(0);\n if (!$pageEl.length) return;\n const cardParams = Object.assign({\n animate\n }, app.params.card, $cardEl.dataset());\n const $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);\n let $navbarEl;\n let $toolbarEl;\n let $backdropEl;\n if ($cardEl.attr('data-backdrop-el')) {\n $backdropEl = $($cardEl.attr('data-backdrop-el'));\n }\n if (cardParams.backdrop) {\n $backdropEl = $cardEl.parents('.page-content').find('.card-backdrop');\n }\n if (cardParams.hideNavbarOnOpen) {\n $navbarEl = $pageEl.children('.navbar');\n if (!$navbarEl.length) {\n if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;\n }\n if ($navbarEl && $navbarEl.length && !$cardEl[0].f7KeepNavbarOnClose) {\n app.navbar.show($navbarEl, cardParams.animate, true);\n }\n }\n if (cardParams.hideToolbarOnOpen) {\n $toolbarEl = $pageEl.children('.toolbar');\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n }\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.views').children('.toolbar');\n }\n if ($toolbarEl && $toolbarEl.length && !$cardEl[0].f7KeepToolbarOnClose) {\n app.toolbar.show($toolbarEl, cardParams.animate);\n }\n }\n $pageEl.removeClass('page-with-card-opened');\n if (device.ios && $pageContentEl.length) {\n $pageContentEl.css('height', `${$pageContentEl[0].offsetHeight + 1}px`);\n setTimeout(() => {\n $pageContentEl.css('height', '');\n });\n }\n if ($backdropEl && $backdropEl.length) {\n $backdropEl.removeClass('card-backdrop-in').addClass('card-backdrop-out');\n }\n $cardEl.removeClass('card-opened card-transitioning');\n if (cardParams.animate) {\n $cardEl.addClass('card-closing');\n } else {\n $cardEl.addClass('card-no-transition');\n }\n $cardEl.transform('');\n $cardEl.trigger('card:close');\n app.emit('cardClose', $cardEl[0], $pageEl[0]);\n const animateWidth = $cardEl.hasClass('card-expandable-animate-width');\n function transitionEnd() {\n if (!animateWidth) {\n $cardContentEl.css({\n width: '',\n height: ''\n });\n }\n if ($backdropEl && $backdropEl.length) {\n $backdropEl.removeClass('card-backdrop-in card-backdrop-out');\n }\n $cardEl.removeClass('card-closing card-no-transition');\n $cardEl.trigger('card:closed');\n $cardEl.find('.card-expandable-size').remove();\n app.emit('cardClosed', $cardEl[0], $pageEl[0]);\n }\n if (animateWidth) {\n $cardContentEl.css({\n width: '',\n height: ''\n });\n }\n $cardContentEl.transform('').scrollTop(0, animate ? 300 : 0);\n if ($cardScrollableEl.length && $cardScrollableEl[0] !== $cardContentEl[0]) {\n $cardScrollableEl.scrollTop(0, animate ? 300 : 0);\n }\n if (animate) {\n $cardContentEl.transitionEnd(() => {\n transitionEnd();\n });\n } else {\n transitionEnd();\n }\n if ($cardEl[0].detachEventHandlers) {\n $cardEl[0].detachEventHandlers();\n delete $cardEl[0].detachEventHandlers;\n }\n },\n toggle(cardEl, animate) {\n if (cardEl === void 0) {\n cardEl = '.card-expandable';\n }\n const app = this;\n const $cardEl = $(cardEl).eq(0);\n if (!$cardEl.length) return;\n if ($cardEl.hasClass('card-opened')) {\n app.card.close($cardEl, animate);\n } else {\n app.card.open($cardEl, animate);\n }\n }\n};\nexport default {\n name: 'card',\n params: {\n card: {\n hideNavbarOnOpen: true,\n hideStatusbarOnOpen: true,\n hideToolbarOnOpen: true,\n scrollableEl: '.card-content',\n swipeToClose: true,\n closeByBackdropClick: true,\n backdrop: true\n }\n },\n create() {\n const app = this;\n bindMethods(app, {\n card: CardExpandable\n });\n },\n on: {\n pageBeforeIn(page) {\n const app = this;\n if (app.params.card.hideNavbarOnOpen && page.navbarEl && page.$el.find('.card-opened.card-expandable').length) {\n app.navbar.hide(page.navbarEl, true, app.params.card.hideStatusbarOnOpen, true);\n }\n if (app.params.card.hideToolbarOnOpen && page.$el.find('.card-opened.card-expandable').length) {\n let $toolbarEl = page.$el.children('.toolbar');\n if (!$toolbarEl.length) {\n $toolbarEl = page.$el.parents('.view').children('.toolbar');\n }\n if (!$toolbarEl.length) {\n $toolbarEl = page.$el.parents('.views').children('.toolbar');\n }\n if ($toolbarEl && $toolbarEl.length) {\n app.toolbar.hide($toolbarEl);\n }\n }\n }\n },\n clicks: {\n '.card-close': function closeCard($clickedEl, data) {\n const app = this;\n app.card.close(data.card, data.animate);\n },\n '.card-open': function closeCard($clickedEl, data) {\n const app = this;\n app.card.open(data.card, data.animate);\n },\n '.card-expandable': function toggleExpandableCard($clickedEl, data, e) {\n const app = this;\n if ($clickedEl.hasClass('card-opened') || $clickedEl.hasClass('card-opening') || $clickedEl.hasClass('card-closing')) return;\n if ($(e.target).closest('.card-prevent-open, .card-close').length) return;\n app.card.open($clickedEl);\n },\n '.card-backdrop-in': function onBackdropClick() {\n const app = this;\n let needToClose = false;\n if (app.params.card.closeByBackdropClick) needToClose = true;\n const $openedCardEl = $('.card-opened');\n if (!$openedCardEl.length) return;\n if ($openedCardEl.attr('data-close-by-backdrop-click') === 'true') {\n needToClose = true;\n } else if ($openedCardEl.attr('data-close-by-backdrop-click') === 'false') {\n needToClose = false;\n }\n if (needToClose) app.card.close($openedCardEl);\n }\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, serializeObject } from '../../shared/utils.js';\n\n// Form Data\nconst FormData = {\n store(form, data) {\n const app = this;\n const window = getWindow();\n let formId = form;\n const $formEl = $(form);\n if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n formId = $formEl.attr('id');\n }\n // Store form data in app.formsData\n app.form.data[`form-${formId}`] = data;\n\n // Store form data in local storage also\n window.localStorage[`f7form-${formId}`] = JSON.stringify(data);\n },\n get(form) {\n const app = this;\n const window = getWindow();\n let formId = form;\n const $formEl = $(form);\n if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n formId = $formEl.attr('id');\n }\n if (window.localStorage[`f7form-${formId}`]) {\n return JSON.parse(window.localStorage[`f7form-${formId}`]);\n }\n if (app.form.data[`form-${formId}`]) {\n return app.form.data[`form-${formId}`];\n }\n return undefined;\n },\n remove(form) {\n const app = this;\n const window = getWindow();\n let formId = form;\n const $formEl = $(form);\n if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n formId = $formEl.attr('id');\n }\n\n // Delete form data from app.formsData\n if (app.form.data[`form-${formId}`]) {\n app.form.data[`form-${formId}`] = '';\n delete app.form.data[`form-${formId}`];\n }\n\n // Delete form data from local storage also\n if (window.localStorage[`f7form-${formId}`]) {\n window.localStorage[`f7form-${formId}`] = '';\n window.localStorage.removeItem(`f7form-${formId}`);\n }\n }\n};\n\n// Form Storage\nconst FormStorage = {\n init(formEl) {\n const app = this;\n const $formEl = $(formEl);\n const formId = $formEl.attr('id');\n if (!formId) return;\n const initialData = app.form.getFormData(formId);\n if (initialData) {\n app.form.fillFromData($formEl, initialData);\n }\n function store() {\n const data = app.form.convertToData($formEl);\n if (!data) return;\n app.form.storeFormData(formId, data);\n $formEl.trigger('form:storedata', data);\n app.emit('formStoreData', $formEl[0], data);\n }\n $formEl.on('change submit', store);\n },\n destroy(formEl) {\n const $formEl = $(formEl);\n $formEl.off('change submit');\n }\n};\n\n// Form To/From Data\nfunction formToData(formEl) {\n const app = this;\n const $formEl = $(formEl).eq(0);\n if ($formEl.length === 0) return undefined;\n\n // Form data\n const data = {};\n\n // Skip input types\n const skipTypes = ['submit', 'image', 'button', 'file'];\n const skipNames = [];\n $formEl.find('input, select, textarea').each(inputEl => {\n const $inputEl = $(inputEl);\n if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {\n return;\n }\n const name = $inputEl.attr('name');\n const type = $inputEl.attr('type');\n const tag = inputEl.nodeName.toLowerCase();\n if (skipTypes.indexOf(type) >= 0) return;\n if (skipNames.indexOf(name) >= 0 || !name) return;\n if (tag === 'select' && $inputEl.prop('multiple')) {\n skipNames.push(name);\n data[name] = [];\n $formEl.find(`select[name=\"${name}\"] option`).each(el => {\n if (el.selected) data[name].push(el.value);\n });\n } else {\n switch (type) {\n case 'checkbox':\n skipNames.push(name);\n data[name] = [];\n $formEl.find(`input[name=\"${name}\"]`).each(el => {\n if (el.checked) data[name].push(el.value);\n });\n break;\n case 'radio':\n skipNames.push(name);\n $formEl.find(`input[name=\"${name}\"]`).each(el => {\n if (el.checked) data[name] = el.value;\n });\n break;\n default:\n data[name] = $inputEl.val();\n break;\n }\n }\n });\n $formEl.trigger('form:todata', data);\n app.emit('formToData', $formEl[0], data);\n return data;\n}\nfunction formFromData(formEl, formData) {\n const app = this;\n const $formEl = $(formEl).eq(0);\n if (!$formEl.length) return;\n let data = formData;\n const formId = $formEl.attr('id');\n if (!data && formId) {\n data = app.form.getFormData(formId);\n }\n if (!data) return;\n\n // Skip input types\n const skipTypes = ['submit', 'image', 'button', 'file'];\n const skipNames = [];\n $formEl.find('input, select, textarea').each(inputEl => {\n const $inputEl = $(inputEl);\n if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {\n return;\n }\n const name = $inputEl.attr('name');\n const type = $inputEl.attr('type');\n const tag = inputEl.nodeName.toLowerCase();\n if (typeof data[name] === 'undefined' || data[name] === null) return;\n if (skipTypes.indexOf(type) >= 0) return;\n if (skipNames.indexOf(name) >= 0 || !name) return;\n if (tag === 'select' && $inputEl.prop('multiple')) {\n skipNames.push(name);\n $formEl.find(`select[name=\"${name}\"] option`).each(el => {\n const selectEl = el;\n if (data[name].indexOf(el.value) >= 0) selectEl.selected = true;else selectEl.selected = false;\n });\n } else {\n switch (type) {\n case 'checkbox':\n skipNames.push(name);\n $formEl.find(`input[name=\"${name}\"]`).each(el => {\n const checkboxEl = el;\n if (data[name].indexOf(el.value) >= 0) checkboxEl.checked = true;else checkboxEl.checked = false;\n });\n break;\n case 'radio':\n skipNames.push(name);\n $formEl.find(`input[name=\"${name}\"]`).each(el => {\n const radioEl = el;\n if (data[name] === el.value) radioEl.checked = true;else radioEl.checked = false;\n });\n break;\n default:\n $inputEl.val(data[name]);\n break;\n }\n }\n if (tag === 'select' || tag === 'input' || tag === 'textarea') {\n $inputEl.trigger('change', 'fromdata');\n }\n });\n $formEl.trigger('form:fromdata', data);\n app.emit('formFromData', $formEl[0], data);\n}\nfunction initAjaxForm() {\n const app = this;\n const window = getWindow();\n const document = getDocument();\n function onSubmitChange(e, fromData) {\n const $formEl = $(this);\n if (e.type === 'change' && !$formEl.hasClass('form-ajax-submit-onchange')) return;\n if (e.type === 'submit') e.preventDefault();\n if (e.type === 'change' && fromData === 'fromdata') return;\n const method = ($formEl.attr('method') || 'GET').toUpperCase();\n const contentType = $formEl.attr('enctype') || $formEl.prop('enctype');\n let url = $formEl.attr('action');\n if (!url) return;\n let data;\n if (method === 'POST') {\n if (contentType === 'application/x-www-form-urlencoded' || contentType === 'application/json') {\n data = app.form.convertToData($formEl[0]);\n if (contentType === 'application/json') {\n data = JSON.stringify(data);\n }\n } else {\n data = new window.FormData($formEl[0]);\n }\n } else {\n data = serializeObject(app.form.convertToData($formEl[0]));\n if (url.includes('?')) {\n url += `&${data}`;\n } else {\n url += `?${data}`;\n }\n }\n $formEl.trigger('formajax:beforesend', {\n data\n });\n app.emit('formAjaxBeforeSend', $formEl[0], data);\n fetch(url, {\n method,\n headers: {\n 'Content-Type': contentType || 'application/x-www-form-urlencoded'\n },\n ...(method === 'POST' || method === 'PUT' ? {\n body: data\n } : {})\n }).then(response => {\n $formEl.trigger('formajax:complete', {\n data,\n response\n });\n app.emit('formAjaxComplete', $formEl[0], data, response);\n $formEl.trigger('formajax:success', {\n data,\n response\n });\n app.emit('formAjaxSuccess', $formEl[0], data, response);\n }).catch(error => {\n $formEl.trigger('formajax:error', {\n data,\n error\n });\n app.emit('formAjaxError', $formEl[0], data, error);\n });\n }\n $(document).on('submit change', 'form.form-ajax-submit, form.form-ajax-submit-onchange', onSubmitChange);\n}\nexport default {\n name: 'form',\n create() {\n const app = this;\n extend(app, {\n form: {\n data: {},\n storeFormData: FormData.store.bind(app),\n getFormData: FormData.get.bind(app),\n removeFormData: FormData.remove.bind(app),\n convertToData: formToData.bind(app),\n fillFromData: formFromData.bind(app),\n storage: {\n init: FormStorage.init.bind(app),\n destroy: FormStorage.destroy.bind(app)\n }\n }\n });\n },\n on: {\n init() {\n const app = this;\n initAjaxForm.call(app);\n },\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.form-store-data').each(formEl => {\n app.form.storage.destroy(formEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.form-store-data').each(formEl => {\n app.form.storage.init(formEl);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.form-store-data').each(formEl => {\n app.form.storage.destroy(formEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.form-store-data').each(formEl => {\n app.form.storage.init(formEl);\n });\n }\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nconst Input = {\n ignoreTypes: ['checkbox', 'button', 'submit', 'range', 'radio', 'image'],\n createTextareaResizableShadow() {\n const document = getDocument();\n const $shadowEl = $(document.createElement('textarea'));\n $shadowEl.addClass('textarea-resizable-shadow');\n $shadowEl.prop({\n disabled: true,\n readonly: true\n });\n Input.textareaResizableShadow = $shadowEl;\n },\n textareaResizableShadow: undefined,\n resizeTextarea(textareaEl) {\n const app = this;\n const window = getWindow();\n const $textareaEl = $(textareaEl);\n if (!Input.textareaResizableShadow) {\n Input.createTextareaResizableShadow();\n }\n const $shadowEl = Input.textareaResizableShadow;\n if (!$textareaEl.length) return;\n if (!$textareaEl.hasClass('resizable')) return;\n if (Input.textareaResizableShadow.parents().length === 0) {\n app.$el.append($shadowEl);\n }\n const styles = window.getComputedStyle($textareaEl[0]);\n 'padding-top padding-bottom padding-left padding-right margin-left margin-right margin-top margin-bottom width font-size font-family font-style font-weight line-height font-variant text-transform letter-spacing border box-sizing display'.split(' ').forEach(style => {\n let styleValue = styles[style];\n if ('font-size line-height letter-spacing width'.split(' ').indexOf(style) >= 0) {\n styleValue = styleValue.replace(',', '.');\n }\n $shadowEl.css(style, styleValue);\n });\n const currentHeight = $textareaEl[0].clientHeight;\n $shadowEl.val('');\n const initialHeight = $shadowEl[0].scrollHeight;\n $shadowEl.val($textareaEl.val());\n $shadowEl.css('height', 0);\n const scrollHeight = $shadowEl[0].scrollHeight;\n if (currentHeight !== scrollHeight) {\n if (scrollHeight > initialHeight) {\n $textareaEl.css('height', `${scrollHeight}px`);\n } else if (scrollHeight < currentHeight) {\n $textareaEl.css('height', '');\n }\n if (scrollHeight > initialHeight || scrollHeight < currentHeight) {\n $textareaEl.trigger('textarea:resize', {\n initialHeight,\n currentHeight,\n scrollHeight\n });\n app.emit('textareaResize', {\n initialHeight,\n currentHeight,\n scrollHeight\n });\n }\n }\n },\n validate(inputEl) {\n const $inputEl = $(inputEl);\n if (!$inputEl.length) return true;\n const $itemInputEl = $inputEl.parents('.item-input');\n const $inputWrapEl = $inputEl.parents('.input');\n function unsetReadonly() {\n if ($inputEl[0].f7ValidateReadonly) {\n $inputEl[0].readOnly = false;\n }\n }\n function setReadonly() {\n if ($inputEl[0].f7ValidateReadonly) {\n $inputEl[0].readOnly = true;\n }\n }\n unsetReadonly();\n const validity = $inputEl[0].validity;\n const validationMessage = $inputEl.dataset().errorMessage || $inputEl[0].validationMessage || '';\n if (!validity) {\n setReadonly();\n return true;\n }\n if (!validity.valid) {\n let $errorEl = $inputEl.nextAll('.item-input-error-message, .input-error-message');\n if (validationMessage) {\n if ($errorEl.length === 0) {\n $errorEl = $(`
                `);\n $errorEl.insertAfter($inputEl);\n }\n $errorEl.text(validationMessage);\n }\n if ($errorEl.length > 0) {\n $itemInputEl.addClass('item-input-with-error-message');\n $inputWrapEl.addClass('input-with-error-message');\n }\n $itemInputEl.addClass('item-input-invalid');\n $inputWrapEl.addClass('input-invalid');\n $inputEl.addClass('input-invalid');\n setReadonly();\n return false;\n }\n $itemInputEl.removeClass('item-input-invalid item-input-with-error-message');\n $inputWrapEl.removeClass('input-invalid input-with-error-message');\n $inputEl.removeClass('input-invalid');\n setReadonly();\n return true;\n },\n validateInputs(el) {\n const app = this;\n const validates = $(el).find('input, textarea, select').map(inputEl => app.input.validate(inputEl));\n return validates.indexOf(false) < 0;\n },\n focus(inputEl) {\n const $inputEl = $(inputEl);\n const type = $inputEl.attr('type');\n if (Input.ignoreTypes.indexOf(type) >= 0) return;\n $inputEl.parents('.item-input').addClass('item-input-focused');\n $inputEl.parents('.input').addClass('input-focused');\n $inputEl.addClass('input-focused');\n },\n blur(inputEl) {\n const $inputEl = $(inputEl);\n $inputEl.parents('.item-input').removeClass('item-input-focused');\n $inputEl.parents('.input').removeClass('input-focused');\n $inputEl.removeClass('input-focused');\n },\n checkEmptyState(inputEl) {\n const app = this;\n let $inputEl = $(inputEl);\n if (!$inputEl.is('input, select, textarea, .item-input [contenteditable]')) {\n $inputEl = $inputEl.find('input, select, textarea, .item-input [contenteditable]').eq(0);\n }\n if (!$inputEl.length) return;\n const isContentEditable = $inputEl[0].hasAttribute('contenteditable');\n let value;\n if (isContentEditable) {\n if ($inputEl.find('.text-editor-placeholder').length) value = '';else value = $inputEl.html();\n } else {\n value = $inputEl.val();\n }\n const $itemInputEl = $inputEl.parents('.item-input');\n const $inputWrapEl = $inputEl.parents('.input');\n if (value && typeof value === 'string' && value.trim() !== '' || Array.isArray(value) && value.length > 0) {\n $itemInputEl.addClass('item-input-with-value');\n $inputWrapEl.addClass('input-with-value');\n $inputEl.addClass('input-with-value');\n $inputEl.trigger('input:notempty');\n app.emit('inputNotEmpty', $inputEl[0]);\n } else {\n $itemInputEl.removeClass('item-input-with-value');\n $inputWrapEl.removeClass('input-with-value');\n $inputEl.removeClass('input-with-value');\n $inputEl.trigger('input:empty');\n app.emit('inputEmpty', $inputEl[0]);\n }\n },\n scrollIntoView(inputEl, duration, centered, force) {\n if (duration === void 0) {\n duration = 0;\n }\n const $inputEl = $(inputEl);\n const $scrollableEl = $inputEl.parents('.page-content, .panel, .card-expandable .card-content').eq(0);\n if (!$scrollableEl.length) {\n return false;\n }\n const contentHeight = $scrollableEl[0].offsetHeight;\n const contentScrollTop = $scrollableEl[0].scrollTop;\n const contentPaddingTop = parseInt($scrollableEl.css('padding-top'), 10);\n const contentPaddingBottom = parseInt($scrollableEl.css('padding-bottom'), 10);\n const contentOffsetTop = $scrollableEl.offset().top - contentScrollTop;\n const inputOffsetTop = $inputEl.offset().top - contentOffsetTop;\n const inputHeight = $inputEl[0].offsetHeight;\n const min = inputOffsetTop + contentScrollTop - contentPaddingTop;\n const max = inputOffsetTop + contentScrollTop - contentHeight + contentPaddingBottom + inputHeight;\n const centeredPosition = min + (max - min) / 2;\n if (contentScrollTop > min) {\n $scrollableEl.scrollTop(centered ? centeredPosition : min, duration);\n return true;\n }\n if (contentScrollTop < max) {\n $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);\n return true;\n }\n if (force) {\n $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);\n }\n return false;\n },\n init() {\n const app = this;\n const device = getDevice();\n const window = getWindow();\n const document = getDocument();\n Input.createTextareaResizableShadow();\n function onFocus() {\n const inputEl = this;\n if (app.params.input.scrollIntoViewOnFocus) {\n if (device.android) {\n $(window).once('resize', () => {\n if (document && document.activeElement === inputEl) {\n app.input.scrollIntoView(inputEl, app.params.input.scrollIntoViewDuration, app.params.input.scrollIntoViewCentered, app.params.input.scrollIntoViewAlways);\n }\n });\n } else {\n app.input.scrollIntoView(inputEl, app.params.input.scrollIntoViewDuration, app.params.input.scrollIntoViewCentered, app.params.input.scrollIntoViewAlways);\n }\n }\n app.input.focus(inputEl);\n }\n function onBlur() {\n const $inputEl = $(this);\n const tag = $inputEl[0].nodeName.toLowerCase();\n app.input.blur($inputEl);\n if ($inputEl.dataset().validate || $inputEl.attr('validate') !== null || $inputEl.attr('data-validate-on-blur') !== null) {\n app.input.validate($inputEl);\n }\n // Resize textarea\n if (tag === 'textarea' && $inputEl.hasClass('resizable')) {\n if (Input.textareaResizableShadow) Input.textareaResizableShadow.remove();\n }\n }\n function onChange() {\n const $inputEl = $(this);\n const type = $inputEl.attr('type');\n const tag = $inputEl[0].nodeName.toLowerCase();\n const isContentEditable = $inputEl[0].hasAttribute('contenteditable');\n if (Input.ignoreTypes.indexOf(type) >= 0) return;\n\n // Check Empty State\n app.input.checkEmptyState($inputEl);\n if (isContentEditable) return;\n\n // Check validation\n if ($inputEl.attr('data-validate-on-blur') === null && ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)) {\n app.input.validate($inputEl);\n }\n\n // Resize textarea\n if (tag === 'textarea' && $inputEl.hasClass('resizable')) {\n app.input.resizeTextarea($inputEl);\n }\n }\n function onInvalid(e) {\n const $inputEl = $(this);\n if ($inputEl.attr('data-validate-on-blur') === null && ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)) {\n e.preventDefault();\n app.input.validate($inputEl);\n }\n }\n function clearInput() {\n const $clicked = $(this);\n const $inputEl = $clicked.siblings('input, textarea').eq(0);\n const previousValue = $inputEl.val();\n $inputEl.val('').trigger('input change').focus().trigger('input:clear', previousValue);\n app.emit('inputClear', previousValue);\n }\n function preventDefault(e) {\n e.preventDefault();\n }\n $(document).on('click', '.input-clear-button', clearInput);\n $(document).on('mousedown', '.input-clear-button', preventDefault);\n $(document).on('change input', 'input, textarea, select, .item-input [contenteditable]', onChange, true);\n $(document).on('focus', 'input, textarea, select, .item-input [contenteditable]', onFocus, true);\n $(document).on('blur', 'input, textarea, select, .item-input [contenteditable]', onBlur, true);\n $(document).on('invalid', 'input, textarea, select', onInvalid, true);\n }\n};\nexport default {\n name: 'input',\n params: {\n input: {\n scrollIntoViewOnFocus: undefined,\n scrollIntoViewCentered: false,\n scrollIntoViewDuration: 0,\n scrollIntoViewAlways: false\n }\n },\n create() {\n const app = this;\n if (typeof app.params.input.scrollIntoViewOnFocus === 'undefined') {\n app.params.input.scrollIntoViewOnFocus = getDevice().android;\n }\n bindMethods(app, {\n input: Input\n });\n },\n on: {\n init() {\n const app = this;\n app.input.init();\n },\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n $tabEl.find('.item-input, .input').each(itemInputEl => {\n const $itemInputEl = $(itemInputEl);\n $itemInputEl.find('input, select, textarea, [contenteditable]').each(inputEl => {\n const $inputEl = $(inputEl);\n if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;\n app.input.checkEmptyState($inputEl);\n });\n });\n $tabEl.find('textarea.resizable').each(textareaEl => {\n app.input.resizeTextarea(textareaEl);\n });\n },\n pageInit(page) {\n const app = this;\n const $pageEl = page.$el;\n $pageEl.find('.item-input, .input').each(itemInputEl => {\n const $itemInputEl = $(itemInputEl);\n $itemInputEl.find('input, select, textarea, [contenteditable]').each(inputEl => {\n const $inputEl = $(inputEl);\n if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;\n app.input.checkEmptyState($inputEl);\n });\n });\n $pageEl.find('textarea.resizable').each(textareaEl => {\n app.input.resizeTextarea(textareaEl);\n });\n },\n 'panelBreakpoint panelCollapsedBreakpoint panelResize panelOpen panelSwipeOpen resize viewMasterDetailBreakpoint': function onPanelOpen(instance) {\n const app = this;\n if (instance && instance.$el) {\n instance.$el.find('textarea.resizable').each(textareaEl => {\n app.input.resizeTextarea(textareaEl);\n });\n } else {\n $('textarea.resizable').each(textareaEl => {\n app.input.resizeTextarea(textareaEl);\n });\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, now, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\nclass Toggle extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const toggle = this;\n const support = getSupport();\n const defaults = {};\n\n // Extend defaults with modules params\n toggle.useModulesParams(defaults);\n toggle.params = extend(defaults, params);\n const el = toggle.params.el;\n if (!el) return toggle;\n const $el = $(el);\n if ($el.length === 0) return toggle;\n if ($el[0].f7Toggle) return $el[0].f7Toggle;\n const $inputEl = $el.children('input[type=\"checkbox\"]');\n extend(toggle, {\n app,\n $el,\n el: $el[0],\n $inputEl,\n inputEl: $inputEl[0],\n disabled: $el.hasClass('disabled') || $inputEl.hasClass('disabled') || $inputEl.attr('disabled') || $inputEl[0].disabled\n });\n Object.defineProperty(toggle, 'checked', {\n enumerable: true,\n configurable: true,\n set(checked) {\n if (!toggle || typeof toggle.$inputEl === 'undefined') return;\n if (toggle.checked === checked) return;\n $inputEl[0].checked = checked;\n toggle.$inputEl.trigger('change');\n },\n get() {\n return $inputEl[0].checked;\n }\n });\n $el[0].f7Toggle = toggle;\n let isTouched;\n const touchesStart = {};\n let isScrolling;\n let touchesDiff;\n let toggleWidth;\n let touchStartTime;\n let touchStartChecked;\n function handleTouchStart(e) {\n if (isTouched || toggle.disabled) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchesDiff = 0;\n isTouched = true;\n isScrolling = undefined;\n touchStartTime = now();\n touchStartChecked = toggle.checked;\n toggleWidth = $el[0].offsetWidth;\n nextTick(() => {\n if (isTouched) {\n $el.addClass('toggle-active-state');\n }\n });\n }\n function handleTouchMove(e) {\n if (!isTouched || toggle.disabled) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n const inverter = app.rtl ? -1 : 1;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n touchesDiff = pageX - touchesStart.x;\n let changed;\n if (touchesDiff * inverter < 0 && Math.abs(touchesDiff) > toggleWidth / 3 && touchStartChecked) {\n changed = true;\n }\n if (touchesDiff * inverter > 0 && Math.abs(touchesDiff) > toggleWidth / 3 && !touchStartChecked) {\n changed = true;\n }\n if (changed) {\n touchesStart.x = pageX;\n toggle.checked = !touchStartChecked;\n touchStartChecked = !touchStartChecked;\n }\n }\n function handleTouchEnd() {\n if (!isTouched || toggle.disabled) {\n if (isScrolling) $el.removeClass('toggle-active-state');\n isTouched = false;\n return;\n }\n const inverter = app.rtl ? -1 : 1;\n isTouched = false;\n $el.removeClass('toggle-active-state');\n let changed;\n if (now() - touchStartTime < 300) {\n if (touchesDiff * inverter < 0 && touchStartChecked) {\n changed = true;\n }\n if (touchesDiff * inverter > 0 && !touchStartChecked) {\n changed = true;\n }\n if (changed) {\n toggle.checked = !touchStartChecked;\n }\n }\n }\n function handleInputChange() {\n toggle.$el.trigger('toggle:change');\n toggle.emit('local::change toggleChange', toggle);\n }\n toggle.attachEvents = function attachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n toggle.$inputEl.on('change', handleInputChange);\n };\n toggle.detachEvents = function detachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n toggle.$inputEl.off('change', handleInputChange);\n };\n\n // Install Modules\n toggle.useModules();\n\n // Init\n toggle.init();\n }\n toggle() {\n const toggle = this;\n toggle.checked = !toggle.checked;\n }\n init() {\n const toggle = this;\n toggle.attachEvents();\n }\n destroy() {\n let toggle = this;\n toggle.$el.trigger('toggle:beforedestroy');\n toggle.emit('local::beforeDestroy toggleBeforeDestroy', toggle);\n delete toggle.$el[0].f7Toggle;\n toggle.detachEvents();\n deleteProps(toggle);\n toggle = null;\n }\n}\nexport default Toggle;","import $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport Toggle from './toggle-class.js';\nexport default {\n name: 'toggle',\n create() {\n const app = this;\n app.toggle = ConstructorMethods({\n defaultSelector: '.toggle',\n constructor: Toggle,\n app,\n domProp: 'f7Toggle'\n });\n },\n static: {\n Toggle\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.toggle-init').each(toggleEl => app.toggle.create({\n el: toggleEl\n }));\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.toggle-init').each(toggleEl => {\n if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.toggle-init').each(toggleEl => app.toggle.create({\n el: toggleEl\n }));\n },\n pageBeforeRemove(page) {\n page.$el.find('.toggle-init').each(toggleEl => {\n if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n });\n }\n },\n vnode: {\n 'toggle-init': {\n insert(vnode) {\n const app = this;\n const toggleEl = vnode.elm;\n app.toggle.create({\n el: toggleEl\n });\n },\n destroy(vnode) {\n const toggleEl = vnode.elm;\n if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\nclass Range extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n const range = this;\n const support = getSupport();\n const defaults = {\n el: null,\n inputEl: null,\n dual: false,\n step: 1,\n label: false,\n min: 0,\n max: 100,\n value: 0,\n draggableBar: true,\n vertical: false,\n verticalReversed: false,\n formatLabel: null,\n scale: false,\n scaleSteps: 5,\n scaleSubSteps: 0,\n formatScaleLabel: null,\n limitKnobPosition: app.theme === 'ios'\n };\n\n // Extend defaults with modules params\n range.useModulesParams(defaults);\n range.params = extend(defaults, params);\n const el = range.params.el;\n if (!el) return range;\n const $el = $(el);\n if ($el.length === 0) return range;\n if ($el[0].f7Range) return $el[0].f7Range;\n const dataset = $el.dataset();\n 'step min max value scaleSteps scaleSubSteps'.split(' ').forEach(paramName => {\n if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {\n range.params[paramName] = parseFloat(dataset[paramName]);\n }\n });\n 'dual label vertical verticalReversed scale'.split(' ').forEach(paramName => {\n if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {\n range.params[paramName] = dataset[paramName];\n }\n });\n if (!range.params.value) {\n if (typeof dataset.value !== 'undefined') range.params.value = dataset.value;\n if (typeof dataset.valueLeft !== 'undefined' && typeof dataset.valueRight !== 'undefined') {\n range.params.value = [parseFloat(dataset.valueLeft), parseFloat(dataset.valueRight)];\n }\n }\n let $inputEl;\n if (!range.params.dual) {\n if (range.params.inputEl) {\n $inputEl = $(range.params.inputEl);\n } else if ($el.find('input[type=\"range\"]').length) {\n $inputEl = $el.find('input[type=\"range\"]').eq(0);\n }\n }\n const {\n dual,\n step,\n label,\n min,\n max,\n value,\n vertical,\n verticalReversed,\n scale,\n scaleSteps,\n scaleSubSteps,\n limitKnobPosition\n } = range.params;\n extend(range, {\n app,\n $el,\n el: $el[0],\n $inputEl,\n inputEl: $inputEl ? $inputEl[0] : undefined,\n dual,\n step,\n label,\n min,\n max,\n value,\n previousValue: value,\n vertical,\n verticalReversed,\n scale,\n scaleSteps,\n scaleSubSteps,\n limitKnobPosition\n });\n if ($inputEl) {\n 'step min max'.split(' ').forEach(paramName => {\n if (!params[paramName] && $inputEl.attr(paramName)) {\n range.params[paramName] = parseFloat($inputEl.attr(paramName));\n range[paramName] = parseFloat($inputEl.attr(paramName));\n }\n });\n if (typeof $inputEl.val() !== 'undefined') {\n range.params.value = parseFloat($inputEl.val());\n range.value = parseFloat($inputEl.val());\n }\n }\n\n // Dual\n if (range.dual) {\n $el.addClass('range-slider-dual');\n }\n if (range.label) {\n $el.addClass('range-slider-label');\n }\n\n // Vertical\n if (range.vertical) {\n $el.addClass('range-slider-vertical');\n if (range.verticalReversed) {\n $el.addClass('range-slider-vertical-reversed');\n }\n } else {\n $el.addClass('range-slider-horizontal');\n }\n\n // Check for layout\n const $barEl = $('
                ');\n const $barActiveEl = $('
                ');\n $barEl.append($barActiveEl);\n\n // Create Knobs\n // prettier-ignore\n const knobHTML = `\n
                \n
                \n ${range.label ? '
                ' : ''}\n
                \n `;\n const knobs = [$(knobHTML)];\n if (range.dual) {\n knobs.push($(knobHTML));\n }\n $el.append($barEl);\n knobs.forEach($knobEl => {\n $el.append($knobEl);\n });\n\n // Labels\n const labels = [];\n if (range.label) {\n labels.push(knobs[0].find('.range-knob-label'));\n if (range.dual) {\n labels.push(knobs[1].find('.range-knob-label'));\n }\n }\n\n // Scale\n let $scaleEl;\n if (range.scale && range.scaleSteps >= 1) {\n $scaleEl = $(`\n
                \n ${range.renderScale()}\n
                \n `);\n $el.append($scaleEl);\n }\n extend(range, {\n knobs,\n labels,\n $barEl,\n $barActiveEl,\n $scaleEl\n });\n $el[0].f7Range = range;\n\n // Touch Events\n let isTouched;\n const touchesStart = {};\n let isScrolling;\n let rangeOffset;\n let rangeOffsetLeft;\n let rangeOffsetTop;\n let $touchedKnobEl;\n let dualValueIndex;\n let valueChangedByTouch;\n let targetTouchIdentifier;\n function onTouchChange() {\n valueChangedByTouch = true;\n }\n function handleTouchStart(e) {\n if (isTouched) return;\n if (!range.params.draggableBar) {\n if ($(e.target).closest('.range-knob').length === 0) {\n return;\n }\n }\n valueChangedByTouch = false;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n if (e.type === 'touchstart') {\n targetTouchIdentifier = e.targetTouches[0].identifier;\n }\n isTouched = true;\n isScrolling = undefined;\n rangeOffset = $el.offset();\n rangeOffsetLeft = rangeOffset.left;\n rangeOffsetTop = rangeOffset.top;\n let progress;\n if (range.vertical) {\n progress = (touchesStart.y - rangeOffsetTop) / range.rangeHeight;\n if (!range.verticalReversed) progress = 1 - progress;\n } else if (range.app.rtl) {\n progress = (rangeOffsetLeft + range.rangeWidth - touchesStart.x) / range.rangeWidth;\n } else {\n progress = (touchesStart.x - rangeOffsetLeft) / range.rangeWidth;\n }\n let newValue = progress * (range.max - range.min) + range.min;\n if (range.dual) {\n if (Math.abs(range.value[0] - newValue) < Math.abs(range.value[1] - newValue)) {\n dualValueIndex = 0;\n $touchedKnobEl = range.knobs[0];\n newValue = [newValue, range.value[1]];\n } else {\n dualValueIndex = 1;\n $touchedKnobEl = range.knobs[1];\n newValue = [range.value[0], newValue];\n }\n } else {\n $touchedKnobEl = range.knobs[0];\n newValue = progress * (range.max - range.min) + range.min;\n }\n nextTick(() => {\n if (isTouched) $touchedKnobEl.addClass('range-knob-active-state');\n }, 70);\n range.on('change', onTouchChange);\n range.setValue(newValue, true);\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n let pageX;\n let pageY;\n if (e.type === 'touchmove') {\n for (let i = 0; i < e.targetTouches.length; i += 1) {\n if (e.targetTouches[i].identifier === targetTouchIdentifier) {\n pageX = e.targetTouches[i].pageX;\n pageY = e.targetTouches[i].pageY;\n }\n }\n } else {\n pageX = e.pageX;\n pageY = e.pageY;\n }\n if (typeof pageX === 'undefined' && typeof pageY === 'undefined') return;\n if (typeof isScrolling === 'undefined' && !range.vertical) {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n let progress;\n if (range.vertical) {\n progress = (pageY - rangeOffsetTop) / range.rangeHeight;\n if (!range.verticalReversed) progress = 1 - progress;\n } else if (range.app.rtl) {\n progress = (rangeOffsetLeft + range.rangeWidth - pageX) / range.rangeWidth;\n } else {\n progress = (pageX - rangeOffsetLeft) / range.rangeWidth;\n }\n let newValue = progress * (range.max - range.min) + range.min;\n if (range.dual) {\n let leftValue;\n let rightValue;\n if (dualValueIndex === 0) {\n leftValue = newValue;\n rightValue = range.value[1];\n if (leftValue > rightValue) {\n rightValue = leftValue;\n }\n } else {\n leftValue = range.value[0];\n rightValue = newValue;\n if (rightValue < leftValue) {\n leftValue = rightValue;\n }\n }\n newValue = [leftValue, rightValue];\n }\n range.setValue(newValue, true);\n }\n function handleTouchEnd(e) {\n if (e.type === 'touchend') {\n let touchEnded;\n for (let i = 0; i < e.changedTouches.length; i += 1) {\n if (e.changedTouches[i].identifier === targetTouchIdentifier) touchEnded = true;\n }\n if (!touchEnded) return;\n }\n if (!isTouched) {\n if (isScrolling) $touchedKnobEl.removeClass('range-knob-active-state');\n isTouched = false;\n return;\n }\n range.off('change', onTouchChange);\n isTouched = false;\n $touchedKnobEl.removeClass('range-knob-active-state');\n if (valueChangedByTouch && range.$inputEl && !range.dual) {\n range.$inputEl.trigger('change');\n }\n valueChangedByTouch = false;\n if (typeof range.previousValue !== 'undefined') {\n if (range.dual && (range.previousValue[0] !== range.value[0] || range.previousValue[1] !== range.value[1]) || !range.dual && range.previousValue !== range.value) {\n range.$el.trigger('range:changed', range.value);\n range.emit('local::changed rangeChanged', range, range.value);\n }\n }\n }\n function handleResize() {\n range.calcSize();\n range.layout();\n }\n let parentModals;\n let parentPanel;\n let parentPage;\n range.attachEvents = function attachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n range.$el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('tabShow', handleResize);\n app.on('resize', handleResize);\n parentModals = range.$el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast');\n parentModals.on('modal:open', handleResize);\n parentPanel = range.$el.parents('.panel');\n parentPanel.on('panel:open panel:resize', handleResize);\n parentPage = range.$el.parents('.page').eq(0);\n parentPage.on('page:reinit', handleResize);\n };\n range.detachEvents = function detachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n range.$el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('tabShow', handleResize);\n app.off('resize', handleResize);\n if (parentModals) {\n parentModals.off('modal:open', handleResize);\n }\n if (parentPanel) {\n parentPanel.off('panel:open panel:resize', handleResize);\n }\n if (parentPage) {\n parentPage.off('page:reinit', handleResize);\n }\n parentModals = null;\n parentPanel = null;\n parentPage = null;\n };\n\n // Install Modules\n range.useModules();\n\n // Init\n range.init();\n return range;\n }\n calcSize() {\n const range = this;\n if (range.vertical) {\n const height = range.$el.outerHeight();\n if (height === 0) return;\n range.rangeHeight = height;\n range.knobHeight = range.knobs[0].outerHeight();\n } else {\n const width = range.$el.outerWidth();\n if (width === 0) return;\n range.rangeWidth = width;\n range.knobWidth = range.knobs[0].outerWidth();\n }\n }\n layout() {\n const range = this;\n const {\n app,\n knobWidth,\n knobHeight,\n rangeWidth,\n rangeHeight,\n min,\n max,\n knobs,\n $barActiveEl,\n value,\n label,\n labels,\n vertical,\n verticalReversed,\n limitKnobPosition\n } = range;\n const knobSize = vertical ? knobHeight : knobWidth;\n const rangeSize = vertical ? rangeHeight : rangeWidth;\n // eslint-disable-next-line\n const positionProperty = vertical ? verticalReversed ? 'top' : 'bottom' : app.rtl ? 'right' : 'left';\n if (range.dual) {\n const progress = [(value[0] - min) / (max - min), (value[1] - min) / (max - min)];\n $barActiveEl.css({\n [positionProperty]: `${progress[0] * 100}%`,\n [vertical ? 'height' : 'width']: `${(progress[1] - progress[0]) * 100}%`\n });\n knobs.forEach(($knobEl, knobIndex) => {\n let startPos = rangeSize * progress[knobIndex];\n if (limitKnobPosition) {\n const realStartPos = rangeSize * progress[knobIndex] - knobSize / 2;\n if (realStartPos < 0) startPos = knobSize / 2;\n if (realStartPos + knobSize > rangeSize) startPos = rangeSize - knobSize / 2;\n }\n $knobEl.css(positionProperty, `${startPos}px`);\n if (label) labels[knobIndex].text(range.formatLabel(value[knobIndex], labels[knobIndex][0]));\n });\n } else {\n const progress = (value - min) / (max - min);\n $barActiveEl.css(vertical ? 'height' : 'width', `${progress * 100}%`);\n let startPos = rangeSize * progress;\n if (limitKnobPosition) {\n const realStartPos = rangeSize * progress - knobSize / 2;\n if (realStartPos < 0) startPos = knobSize / 2;\n if (realStartPos + knobSize > rangeSize) startPos = rangeSize - knobSize / 2;\n }\n knobs[0].css(positionProperty, `${startPos}px`);\n if (label) labels[0].text(range.formatLabel(value, labels[0][0]));\n }\n if (range.dual && value.indexOf(min) >= 0 || !range.dual && value === min) {\n range.$el.addClass('range-slider-min');\n } else {\n range.$el.removeClass('range-slider-min');\n }\n if (range.dual && value.indexOf(max) >= 0 || !range.dual && value === max) {\n range.$el.addClass('range-slider-max');\n } else {\n range.$el.removeClass('range-slider-max');\n }\n }\n setValue(newValue, byTouchMove) {\n const range = this;\n const {\n step,\n min,\n max\n } = range;\n let valueChanged;\n let oldValue;\n if (range.dual) {\n oldValue = [range.value[0], range.value[1]];\n let newValues = newValue;\n if (!Array.isArray(newValues)) newValues = [newValue, newValue];\n if (newValue[0] > newValue[1]) {\n newValues = [newValues[0], newValues[0]];\n }\n newValues = newValues.map(value => Math.max(Math.min(Math.round(value / step) * step, max), min));\n if (newValues[0] === range.value[0] && newValues[1] === range.value[1]) {\n return range;\n }\n newValues.forEach((value, valueIndex) => {\n range.value[valueIndex] = value;\n });\n valueChanged = oldValue[0] !== newValues[0] || oldValue[1] !== newValues[1];\n range.layout();\n } else {\n oldValue = range.value;\n const value = Math.max(Math.min(Math.round(newValue / step) * step, max), min);\n range.value = value;\n range.layout();\n valueChanged = oldValue !== value;\n }\n if (valueChanged) {\n range.previousValue = oldValue;\n }\n // Events\n if (!valueChanged) return range;\n range.$el.trigger('range:change', range.value);\n if (range.$inputEl && !range.dual) {\n range.$inputEl.val(range.value);\n if (!byTouchMove) {\n range.$inputEl.trigger('input change');\n } else {\n range.$inputEl.trigger('input');\n }\n }\n if (!byTouchMove) {\n range.$el.trigger('range:changed', range.value);\n range.emit('local::changed rangeChanged', range, range.value);\n }\n range.emit('local::change rangeChange', range, range.value);\n return range;\n }\n getValue() {\n return this.value;\n }\n formatLabel(value, labelEl) {\n const range = this;\n if (range.params.formatLabel) return range.params.formatLabel.call(range, value, labelEl);\n return value;\n }\n formatScaleLabel(value) {\n const range = this;\n if (range.params.formatScaleLabel) return range.params.formatScaleLabel.call(range, value);\n return value;\n }\n renderScale() {\n const range = this;\n const {\n app,\n verticalReversed,\n vertical\n } = range;\n\n // eslint-disable-next-line\n const positionProperty = vertical ? verticalReversed ? 'top' : 'bottom' : app.rtl ? 'right' : 'left';\n let html = '';\n Array.from({\n length: range.scaleSteps + 1\n }).forEach((scaleEl, index) => {\n const scaleStepValue = (range.max - range.min) / range.scaleSteps;\n const scaleValue = range.min + scaleStepValue * index;\n const progress = (scaleValue - range.min) / (range.max - range.min);\n html += `
                ${range.formatScaleLabel(scaleValue)}
                `;\n if (range.scaleSubSteps && range.scaleSubSteps > 1 && index < range.scaleSteps) {\n Array.from({\n length: range.scaleSubSteps - 1\n }).forEach((subStepEl, subIndex) => {\n const subStep = scaleStepValue / range.scaleSubSteps;\n const scaleSubValue = scaleValue + subStep * (subIndex + 1);\n const subProgress = (scaleSubValue - range.min) / (range.max - range.min);\n html += `
                `;\n });\n }\n });\n return html;\n }\n updateScale() {\n const range = this;\n if (!range.scale || range.scaleSteps < 1) {\n if (range.$scaleEl) range.$scaleEl.remove();\n delete range.$scaleEl;\n return;\n }\n if (!range.$scaleEl) {\n range.$scaleEl = $('
                ');\n range.$el.append(range.$scaleEl);\n }\n range.$scaleEl.html(range.renderScale());\n }\n init() {\n const range = this;\n range.calcSize();\n range.layout();\n range.attachEvents();\n return range;\n }\n destroy() {\n let range = this;\n range.$el.trigger('range:beforedestroy');\n range.emit('local::beforeDestroy rangeBeforeDestroy', range);\n delete range.$el[0].f7Range;\n range.detachEvents();\n deleteProps(range);\n range = null;\n }\n}\nexport default Range;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Range from './range-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'range',\n create() {\n const app = this;\n app.range = extend(ConstructorMethods({\n defaultSelector: '.range-slider',\n constructor: Range,\n app,\n domProp: 'f7Range'\n }), {\n getValue(el) {\n if (el === void 0) {\n el = '.range-slider';\n }\n const range = app.range.get(el);\n if (range) return range.getValue();\n return undefined;\n },\n setValue(el, value) {\n if (el === void 0) {\n el = '.range-slider';\n }\n const range = app.range.get(el);\n if (range) return range.setValue(value);\n return undefined;\n }\n });\n },\n static: {\n Range\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.range-slider-init').each(rangeEl => new Range(app, {\n el: rangeEl\n }));\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.range-slider-init').each(rangeEl => {\n if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.range-slider-init').each(rangeEl => new Range(app, {\n el: rangeEl\n }));\n },\n pageBeforeRemove(page) {\n page.$el.find('.range-slider-init').each(rangeEl => {\n if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n });\n }\n },\n vnode: {\n 'range-slider-init': {\n insert(vnode) {\n const rangeEl = vnode.elm;\n const app = this;\n app.range.create({\n el: rangeEl\n });\n },\n destroy(vnode) {\n const rangeEl = vnode.elm;\n if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n }\n }\n }\n};","/* eslint no-control-regex: \"off\" */\nconst defaultDiacriticsRemovalap = [{\n base: 'A',\n letters: '\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F'\n}, {\n base: 'AA',\n letters: '\\uA732'\n}, {\n base: 'AE',\n letters: '\\u00C6\\u01FC\\u01E2'\n}, {\n base: 'AO',\n letters: '\\uA734'\n}, {\n base: 'AU',\n letters: '\\uA736'\n}, {\n base: 'AV',\n letters: '\\uA738\\uA73A'\n}, {\n base: 'AY',\n letters: '\\uA73C'\n}, {\n base: 'B',\n letters: '\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181'\n}, {\n base: 'C',\n letters: '\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E'\n}, {\n base: 'D',\n letters: '\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779'\n}, {\n base: 'DZ',\n letters: '\\u01F1\\u01C4'\n}, {\n base: 'Dz',\n letters: '\\u01F2\\u01C5'\n}, {\n base: 'E',\n letters: '\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E'\n}, {\n base: 'F',\n letters: '\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B'\n}, {\n base: 'G',\n letters: '\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E'\n}, {\n base: 'H',\n letters: '\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D'\n}, {\n base: 'I',\n letters: '\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197'\n}, {\n base: 'J',\n letters: '\\u004A\\u24BF\\uFF2A\\u0134\\u0248'\n}, {\n base: 'K',\n letters: '\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2'\n}, {\n base: 'L',\n letters: '\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780'\n}, {\n base: 'LJ',\n letters: '\\u01C7'\n}, {\n base: 'Lj',\n letters: '\\u01C8'\n}, {\n base: 'M',\n letters: '\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C'\n}, {\n base: 'N',\n letters: '\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4'\n}, {\n base: 'NJ',\n letters: '\\u01CA'\n}, {\n base: 'Nj',\n letters: '\\u01CB'\n}, {\n base: 'O',\n letters: '\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C'\n}, {\n base: 'OI',\n letters: '\\u01A2'\n}, {\n base: 'OO',\n letters: '\\uA74E'\n}, {\n base: 'OU',\n letters: '\\u0222'\n}, {\n base: 'OE',\n letters: '\\u008C\\u0152'\n}, {\n base: 'oe',\n letters: '\\u009C\\u0153'\n}, {\n base: 'P',\n letters: '\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754'\n}, {\n base: 'Q',\n letters: '\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A'\n}, {\n base: 'R',\n letters: '\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782'\n}, {\n base: 'S',\n letters: '\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784'\n}, {\n base: 'T',\n letters: '\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786'\n}, {\n base: 'TZ',\n letters: '\\uA728'\n}, {\n base: 'U',\n letters: '\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244'\n}, {\n base: 'V',\n letters: '\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245'\n}, {\n base: 'VY',\n letters: '\\uA760'\n}, {\n base: 'W',\n letters: '\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72'\n}, {\n base: 'X',\n letters: '\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C'\n}, {\n base: 'Y',\n letters: '\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE'\n}, {\n base: 'Z',\n letters: '\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762'\n}, {\n base: 'a',\n letters: '\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250'\n}, {\n base: 'aa',\n letters: '\\uA733'\n}, {\n base: 'ae',\n letters: '\\u00E6\\u01FD\\u01E3'\n}, {\n base: 'ao',\n letters: '\\uA735'\n}, {\n base: 'au',\n letters: '\\uA737'\n}, {\n base: 'av',\n letters: '\\uA739\\uA73B'\n}, {\n base: 'ay',\n letters: '\\uA73D'\n}, {\n base: 'b',\n letters: '\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253'\n}, {\n base: 'c',\n letters: '\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184'\n}, {\n base: 'd',\n letters: '\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A'\n}, {\n base: 'dz',\n letters: '\\u01F3\\u01C6'\n}, {\n base: 'e',\n letters: '\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD'\n}, {\n base: 'f',\n letters: '\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C'\n}, {\n base: 'g',\n letters: '\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F'\n}, {\n base: 'h',\n letters: '\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265'\n}, {\n base: 'hv',\n letters: '\\u0195'\n}, {\n base: 'i',\n letters: '\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131'\n}, {\n base: 'j',\n letters: '\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249'\n}, {\n base: 'k',\n letters: '\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3'\n}, {\n base: 'l',\n letters: '\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747'\n}, {\n base: 'lj',\n letters: '\\u01C9'\n}, {\n base: 'm',\n letters: '\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F'\n}, {\n base: 'n',\n letters: '\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5'\n}, {\n base: 'nj',\n letters: '\\u01CC'\n}, {\n base: 'o',\n letters: '\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275'\n}, {\n base: 'oi',\n letters: '\\u01A3'\n}, {\n base: 'ou',\n letters: '\\u0223'\n}, {\n base: 'oo',\n letters: '\\uA74F'\n}, {\n base: 'p',\n letters: '\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755'\n}, {\n base: 'q',\n letters: '\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759'\n}, {\n base: 'r',\n letters: '\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783'\n}, {\n base: 's',\n letters: '\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B'\n}, {\n base: 't',\n letters: '\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787'\n}, {\n base: 'tz',\n letters: '\\uA729'\n}, {\n base: 'u',\n letters: '\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289'\n}, {\n base: 'v',\n letters: '\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C'\n}, {\n base: 'vy',\n letters: '\\uA761'\n}, {\n base: 'w',\n letters: '\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73'\n}, {\n base: 'x',\n letters: '\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D'\n}, {\n base: 'y',\n letters: '\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF'\n}, {\n base: 'z',\n letters: '\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763'\n}];\nconst diacriticsMap = {};\nfor (let i = 0; i < defaultDiacriticsRemovalap.length; i += 1) {\n const letters = defaultDiacriticsRemovalap[i].letters;\n for (let j = 0; j < letters.length; j += 1) {\n diacriticsMap[letters[j]] = defaultDiacriticsRemovalap[i].base;\n }\n}\nfunction removeDiacritics(str) {\n return str.replace(/[^\\u0000-\\u007E]/g, a => diacriticsMap[a] || a);\n}\nexport default removeDiacritics;","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nclass Stepper extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n const stepper = this;\n const defaults = {\n el: null,\n inputEl: null,\n valueEl: null,\n value: 0,\n formatValue: null,\n step: 1,\n min: 0,\n max: 100,\n watchInput: true,\n autorepeat: false,\n autorepeatDynamic: false,\n wraps: false,\n manualInputMode: false,\n decimalPoint: 4,\n buttonsEndInputMode: true\n };\n\n // Extend defaults with modules params\n stepper.useModulesParams(defaults);\n stepper.params = extend(defaults, params);\n if (stepper.params.value < stepper.params.min) {\n stepper.params.value = stepper.params.min;\n }\n if (stepper.params.value > stepper.params.max) {\n stepper.params.value = stepper.params.max;\n }\n const el = stepper.params.el;\n if (!el) return stepper;\n const $el = $(el);\n if ($el.length === 0) return stepper;\n if ($el[0].f7Stepper) return $el[0].f7Stepper;\n let $inputEl;\n if (stepper.params.inputEl) {\n $inputEl = $(stepper.params.inputEl);\n } else if ($el.find('.stepper-input-wrap').find('input, textarea').length) {\n $inputEl = $el.find('.stepper-input-wrap').find('input, textarea').eq(0);\n }\n if ($inputEl && $inputEl.length) {\n 'step min max'.split(' ').forEach(paramName => {\n if (!params[paramName] && $inputEl.attr(paramName)) {\n stepper.params[paramName] = parseFloat($inputEl.attr(paramName));\n }\n });\n const decimalPoint = parseInt(stepper.params.decimalPoint, 10);\n if (Number.isNaN(decimalPoint)) {\n stepper.params.decimalPoint = 0;\n } else {\n stepper.params.decimalPoint = decimalPoint;\n }\n const inputValue = parseFloat($inputEl.val());\n if (typeof params.value === 'undefined' && !Number.isNaN(inputValue) && (inputValue || inputValue === 0)) {\n stepper.params.value = inputValue;\n }\n }\n let $valueEl;\n if (stepper.params.valueEl) {\n $valueEl = $(stepper.params.valueEl);\n } else if ($el.find('.stepper-value').length) {\n $valueEl = $el.find('.stepper-value').eq(0);\n }\n const $buttonPlusEl = $el.find('.stepper-button-plus');\n const $buttonMinusEl = $el.find('.stepper-button-minus');\n const {\n step,\n min,\n max,\n value,\n decimalPoint\n } = stepper.params;\n extend(stepper, {\n app,\n $el,\n el: $el[0],\n $buttonPlusEl,\n buttonPlusEl: $buttonPlusEl[0],\n $buttonMinusEl,\n buttonMinusEl: $buttonMinusEl[0],\n $inputEl,\n inputEl: $inputEl ? $inputEl[0] : undefined,\n $valueEl,\n valueEl: $valueEl ? $valueEl[0] : undefined,\n step,\n min,\n max,\n value,\n decimalPoint,\n typeModeChanged: false\n });\n $el[0].f7Stepper = stepper;\n\n // Handle Events\n const touchesStart = {};\n let isTouched;\n let isScrolling;\n let preventButtonClick;\n let intervalId;\n let timeoutId;\n let autorepeatAction = null;\n let autorepeatInAction = false;\n let manualInput = false;\n function dynamicRepeat(current, progressions, startsIn, progressionStep, repeatEvery, action) {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n if (current === 1) {\n preventButtonClick = true;\n autorepeatInAction = true;\n }\n clearInterval(intervalId);\n action();\n intervalId = setInterval(() => {\n action();\n }, repeatEvery);\n if (current < progressions) {\n dynamicRepeat(current + 1, progressions, startsIn, progressionStep, repeatEvery / 2, action);\n }\n }, current === 1 ? startsIn : progressionStep);\n }\n function onTouchStart(e) {\n if (isTouched) return;\n if (manualInput) {\n return;\n }\n if ($(e.target).closest($buttonPlusEl).length) {\n autorepeatAction = 'increment';\n } else if ($(e.target).closest($buttonMinusEl).length) {\n autorepeatAction = 'decrement';\n }\n if (!autorepeatAction) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isTouched = true;\n isScrolling = undefined;\n const progressions = stepper.params.autorepeatDynamic ? 4 : 1;\n dynamicRepeat(1, progressions, 500, 1000, 300, () => {\n stepper[autorepeatAction]();\n });\n }\n function onTouchMove(e) {\n if (!isTouched) return;\n if (manualInput) {\n return;\n }\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined' && !autorepeatInAction) {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n const distance = ((pageX - touchesStart.x) ** 2 + (pageY - touchesStart.y) ** 2) ** 0.5;\n if (isScrolling || distance > 20) {\n isTouched = false;\n clearTimeout(timeoutId);\n clearInterval(intervalId);\n }\n }\n function onTouchEnd() {\n clearTimeout(timeoutId);\n clearInterval(intervalId);\n autorepeatAction = null;\n autorepeatInAction = false;\n isTouched = false;\n }\n function onMinusClick() {\n if (manualInput) {\n if (stepper.params.buttonsEndInputMode) {\n manualInput = false;\n stepper.endTypeMode(true);\n }\n return;\n }\n if (preventButtonClick) {\n preventButtonClick = false;\n return;\n }\n stepper.decrement(true);\n }\n function onPlusClick() {\n if (manualInput) {\n if (stepper.params.buttonsEndInputMode) {\n manualInput = false;\n stepper.endTypeMode(true);\n }\n return;\n }\n if (preventButtonClick) {\n preventButtonClick = false;\n return;\n }\n stepper.increment(true);\n }\n function onInputClick(e) {\n if (!e.target.readOnly && stepper.params.manualInputMode) {\n manualInput = true;\n if (typeof e.target.selectionStart === 'number') {\n e.target.selectionStart = e.target.value.length;\n e.target.selectionEnd = e.target.value.length;\n }\n }\n }\n function onInputKey(e) {\n if (e.keyCode === 13 || e.which === 13) {\n e.preventDefault();\n manualInput = false;\n stepper.endTypeMode();\n }\n }\n function onInputBlur() {\n manualInput = false;\n stepper.endTypeMode(true);\n }\n function onInput(e) {\n if (manualInput) {\n stepper.typeValue(e.target.value);\n return;\n }\n if (e.detail && e.detail.sentByF7Stepper) return;\n stepper.setValue(e.target.value, true);\n }\n stepper.attachEvents = function attachEvents() {\n $buttonMinusEl.on('click', onMinusClick);\n $buttonPlusEl.on('click', onPlusClick);\n if (stepper.params.watchInput && $inputEl && $inputEl.length) {\n $inputEl.on('input', onInput);\n $inputEl.on('click', onInputClick);\n $inputEl.on('blur', onInputBlur);\n $inputEl.on('keyup', onInputKey);\n }\n if (stepper.params.autorepeat) {\n app.on('touchstart:passive', onTouchStart);\n app.on('touchmove:active', onTouchMove);\n app.on('touchend:passive', onTouchEnd);\n }\n };\n stepper.detachEvents = function detachEvents() {\n $buttonMinusEl.off('click', onMinusClick);\n $buttonPlusEl.off('click', onPlusClick);\n if (stepper.params.watchInput && $inputEl && $inputEl.length) {\n $inputEl.off('input', onInput);\n $inputEl.off('click', onInputClick);\n $inputEl.off('blur', onInputBlur);\n $inputEl.off('keyup', onInputKey);\n }\n };\n\n // Install Modules\n stepper.useModules();\n\n // Init\n stepper.init();\n return stepper;\n }\n minus() {\n return this.decrement();\n }\n plus() {\n return this.increment();\n }\n decrement() {\n const stepper = this;\n return stepper.setValue(stepper.value - stepper.step, false, true);\n }\n increment() {\n const stepper = this;\n return stepper.setValue(stepper.value + stepper.step, false, true);\n }\n setValue(newValue, forceUpdate, withWraps) {\n const stepper = this;\n const {\n step,\n min,\n max\n } = stepper;\n const oldValue = stepper.value;\n let value = Math.round(newValue / step) * step;\n if (stepper.params.wraps && withWraps) {\n if (value > max) value = min;\n if (value < min) value = max;\n } else {\n value = Math.max(Math.min(value, max), min);\n }\n if (Number.isNaN(value)) {\n value = oldValue;\n }\n stepper.value = value;\n const valueChanged = oldValue !== value;\n\n // Events\n if (!valueChanged && !forceUpdate) return stepper;\n stepper.$el.trigger('stepper:change', stepper.value);\n const formattedValue = stepper.formatValue(stepper.value);\n if (stepper.$inputEl && stepper.$inputEl.length) {\n stepper.$inputEl.val(formattedValue);\n stepper.$inputEl.trigger('input change', {\n sentByF7Stepper: true\n });\n }\n if (stepper.$valueEl && stepper.$valueEl.length) {\n stepper.$valueEl.html(formattedValue);\n }\n stepper.emit('local::change stepperChange', stepper, stepper.value);\n return stepper;\n }\n endTypeMode(noBlur) {\n const stepper = this;\n const {\n min,\n max\n } = stepper;\n let value = parseFloat(stepper.value);\n if (Number.isNaN(value)) value = 0;\n value = Math.max(Math.min(value, max), min);\n stepper.value = value;\n if (!stepper.typeModeChanged) {\n if (stepper.$inputEl && stepper.$inputEl.length && !noBlur) {\n stepper.$inputEl.blur();\n }\n return stepper;\n }\n stepper.typeModeChanged = false;\n stepper.$el.trigger('stepper:change', stepper.value);\n const formattedValue = stepper.formatValue(stepper.value);\n if (stepper.$inputEl && stepper.$inputEl.length) {\n stepper.$inputEl.val(formattedValue);\n stepper.$inputEl.trigger('input change', {\n sentByF7Stepper: true\n });\n if (!noBlur) stepper.$inputEl.blur();\n }\n if (stepper.$valueEl && stepper.$valueEl.length) {\n stepper.$valueEl.html(formattedValue);\n }\n stepper.emit('local::change stepperChange', stepper, stepper.value);\n return stepper;\n }\n typeValue(value) {\n const stepper = this;\n stepper.typeModeChanged = true;\n let inputTxt = String(value);\n if (inputTxt.length === 1 && inputTxt === '-') return stepper;\n if (inputTxt.lastIndexOf('.') + 1 === inputTxt.length || inputTxt.lastIndexOf(',') + 1 === inputTxt.length) {\n if (inputTxt.lastIndexOf('.') !== inputTxt.indexOf('.') || inputTxt.lastIndexOf(',') !== inputTxt.indexOf(',')) {\n inputTxt = inputTxt.slice(0, -1);\n stepper.value = inputTxt;\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n } else {\n let newValue = parseFloat(inputTxt.replace(',', '.'));\n if (newValue === 0) {\n stepper.value = inputTxt.replace(',', '.');\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n if (Number.isNaN(newValue)) {\n stepper.value = 0;\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n const powVal = 10 ** stepper.params.decimalPoint;\n newValue = Math.round(newValue * powVal).toFixed(stepper.params.decimalPoint + 1) / powVal;\n stepper.value = parseFloat(String(newValue).replace(',', '.'));\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n stepper.value = inputTxt;\n stepper.$inputEl.val(inputTxt);\n return stepper;\n }\n getValue() {\n return this.value;\n }\n formatValue(value) {\n const stepper = this;\n if (!stepper.params.formatValue) return value;\n return stepper.params.formatValue.call(stepper, value);\n }\n init() {\n const stepper = this;\n stepper.attachEvents();\n if (stepper.$valueEl && stepper.$valueEl.length) {\n const formattedValue = stepper.formatValue(stepper.value);\n stepper.$valueEl.html(formattedValue);\n }\n return stepper;\n }\n destroy() {\n let stepper = this;\n stepper.$el.trigger('stepper:beforedestroy');\n stepper.emit('local::beforeDestroy stepperBeforeDestroy', stepper);\n delete stepper.$el[0].f7Stepper;\n stepper.detachEvents();\n deleteProps(stepper);\n stepper = null;\n }\n}\nexport default Stepper;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Stepper from './stepper-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'stepper',\n create() {\n const app = this;\n app.stepper = extend(ConstructorMethods({\n defaultSelector: '.stepper',\n constructor: Stepper,\n app,\n domProp: 'f7Stepper'\n }), {\n getValue(el) {\n if (el === void 0) {\n el = '.stepper';\n }\n const stepper = app.stepper.get(el);\n if (stepper) return stepper.getValue();\n return undefined;\n },\n setValue(el, value) {\n if (el === void 0) {\n el = '.stepper';\n }\n const stepper = app.stepper.get(el);\n if (stepper) return stepper.setValue(value);\n return undefined;\n }\n });\n },\n static: {\n Stepper\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.stepper-init').each(stepperEl => {\n const dataset = $(stepperEl).dataset();\n app.stepper.create(extend({\n el: stepperEl\n }, dataset || {}));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.stepper-init').each(stepperEl => {\n if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.stepper-init').each(stepperEl => {\n const dataset = $(stepperEl).dataset();\n app.stepper.create(extend({\n el: stepperEl\n }, dataset || {}));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.stepper-init').each(stepperEl => {\n if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n });\n }\n },\n vnode: {\n 'stepper-init': {\n insert(vnode) {\n const app = this;\n const stepperEl = vnode.elm;\n const dataset = $(stepperEl).dataset();\n app.stepper.create(extend({\n el: stepperEl\n }, dataset || {}));\n },\n destroy(vnode) {\n const stepperEl = vnode.elm;\n if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps, id, nextTick } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport removeDiacritics from '../searchbar/remove-diacritics.js';\n\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass SmartSelect extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const ss = this;\n const defaults = extend({\n on: {}\n }, app.params.smartSelect);\n\n // Extend defaults with modules params\n ss.useModulesParams(defaults);\n ss.params = extend({}, defaults, params);\n ss.app = app;\n const $el = $(ss.params.el).eq(0);\n if ($el.length === 0) return ss;\n if ($el[0].f7SmartSelect) return $el[0].f7SmartSelect;\n const $selectEl = $el.find('select').eq(0);\n if ($selectEl.length === 0) return ss;\n let $valueEl;\n if (ss.params.setValueText) {\n $valueEl = $(ss.params.valueEl);\n if ($valueEl.length === 0) {\n $valueEl = $el.find('.item-after');\n }\n if ($valueEl.length === 0) {\n $valueEl = $('
                ');\n $valueEl.insertAfter($el.find('.item-title'));\n }\n }\n\n // Url\n let url = params.url;\n if (!url) {\n if ($el.attr('href') && $el.attr('href') !== '#') url = $el.attr('href');else if ($selectEl.attr('name')) url = `${$selectEl.attr('name').toLowerCase()}-select/`;\n }\n if (!url) url = ss.params.url;\n const multiple = $selectEl[0].multiple;\n const inputType = multiple ? 'checkbox' : 'radio';\n const selectId = id();\n extend(ss, {\n $el,\n el: $el[0],\n $selectEl,\n selectEl: $selectEl[0],\n $valueEl,\n valueEl: $valueEl && $valueEl[0],\n url,\n multiple,\n inputType,\n id: selectId,\n inputName: `${inputType}-${selectId}`,\n selectName: $selectEl.attr('name'),\n maxLength: $selectEl.attr('maxlength') || params.maxLength\n });\n $el[0].f7SmartSelect = ss;\n\n // Events\n function onClick() {\n ss.open();\n }\n function onChange() {\n const value = ss.$selectEl.val();\n ss.$el.trigger('smartselect:change', value);\n ss.emit('local::change smartSelectChange', ss, value);\n if (ss.vl) {\n ss.vl.clearCache();\n }\n ss.setValueText();\n }\n ss.attachEvents = function attachEvents() {\n $el.on('click', onClick);\n $el.on('change', 'select', onChange);\n };\n ss.detachEvents = function detachEvents() {\n $el.off('click', onClick);\n $el.off('change', 'select', onChange);\n };\n function handleInputChange() {\n let optionEl;\n let text;\n const inputEl = this;\n const value = inputEl.value;\n let optionText = [];\n let displayAs;\n if (inputEl.type === 'checkbox') {\n for (let i = 0; i < ss.selectEl.options.length; i += 1) {\n optionEl = ss.selectEl.options[i];\n if (optionEl.value === value) {\n optionEl.selected = inputEl.checked;\n }\n if (optionEl.selected) {\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-value-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText.push(text.trim());\n }\n }\n if (ss.maxLength) {\n ss.checkMaxLength();\n }\n } else {\n optionEl = ss.$selectEl.find(`option[value=\"${value}\"]`)[0];\n if (!optionEl) {\n optionEl = ss.$selectEl.find('option').filter(optEl => optEl.value === value)[0];\n }\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText = [text];\n ss.selectEl.value = value;\n }\n ss.$selectEl.trigger('change');\n if (ss.params.setValueText) {\n ss.formatValueTextContent(optionText);\n }\n if (ss.params.closeOnSelect && ss.inputType === 'radio') {\n ss.close();\n }\n }\n ss.attachInputsEvents = function attachInputsEvents() {\n ss.$containerEl.on('change', 'input[type=\"checkbox\"], input[type=\"radio\"]', handleInputChange);\n };\n ss.detachInputsEvents = function detachInputsEvents() {\n ss.$containerEl.off('change', 'input[type=\"checkbox\"], input[type=\"radio\"]', handleInputChange);\n };\n\n // Install Modules\n ss.useModules();\n\n // Init\n ss.init();\n return ss;\n }\n setValue(value) {\n const ss = this;\n let newValue = value;\n let optionText = [];\n let optionEl;\n let displayAs;\n let text;\n if (ss.multiple) {\n if (!Array.isArray(newValue)) newValue = [newValue];\n for (let i = 0; i < ss.selectEl.options.length; i += 1) {\n optionEl = ss.selectEl.options[i];\n if (newValue.indexOf(optionEl.value) >= 0) {\n optionEl.selected = true;\n } else {\n optionEl.selected = false;\n }\n if (optionEl.selected) {\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-value-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText.push(text.trim());\n }\n }\n } else {\n optionEl = ss.$selectEl.find(`option[value=\"${newValue}\"]`)[0];\n if (optionEl) {\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText = [text];\n }\n ss.selectEl.value = newValue;\n }\n if (ss.params.setValueText) {\n ss.formatValueTextContent(optionText);\n }\n ss.$selectEl.trigger('change');\n return ss;\n }\n unsetValue() {\n const ss = this;\n if (ss.params.setValueText) {\n ss.formatValueTextContent([]);\n }\n ss.$selectEl.find('option').each(optionEl => {\n optionEl.selected = false;\n optionEl.checked = false;\n });\n ss.$selectEl[0].value = null;\n if (ss.$containerEl) {\n ss.$containerEl.find(`input[name=\"${ss.inputName}\"][type=\"checkbox\"], input[name=\"${ss.inputName}\"][type=\"radio\"]`).prop('checked', false);\n }\n ss.$selectEl.trigger('change');\n }\n getValue() {\n const ss = this;\n return ss.$selectEl.val();\n }\n get view() {\n const {\n params,\n $el\n } = this;\n let view;\n if (params.view) {\n view = params.view;\n }\n if (!view) {\n view = $el.parents('.view').length && $el.parents('.view')[0].f7View;\n }\n if (!view && params.openIn === 'page') {\n throw Error('Smart Select requires initialized View');\n }\n return view;\n }\n checkMaxLength() {\n const ss = this;\n const $containerEl = ss.$containerEl;\n if (ss.selectEl.selectedOptions.length >= ss.maxLength) {\n $containerEl.find('input[type=\"checkbox\"]').each(inputEl => {\n if (!inputEl.checked) {\n $(inputEl).parents('li').addClass('disabled');\n } else {\n $(inputEl).parents('li').removeClass('disabled');\n }\n });\n } else {\n $containerEl.find('.disabled').removeClass('disabled');\n }\n }\n formatValueTextContent(values) {\n const ss = this;\n const valueFormatted = ss.formatValueText(values);\n if (valueFormatted.includes('<') && valueFormatted.includes('>')) {\n ss.$valueEl.html(valueFormatted);\n } else {\n ss.$valueEl.text(valueFormatted);\n }\n }\n formatValueText(values) {\n const ss = this;\n let textValue;\n if (ss.params.formatValueText) {\n textValue = ss.params.formatValueText.call(ss, values, ss);\n } else {\n textValue = values.join(', ');\n }\n return textValue;\n }\n setValueText(value) {\n const ss = this;\n let valueArray = [];\n if (typeof value !== 'undefined') {\n if (Array.isArray(value)) {\n valueArray = value;\n } else {\n valueArray = [value];\n }\n } else {\n ss.$selectEl.find('option').each(optionEl => {\n const $optionEl = $(optionEl);\n if (optionEl.selected) {\n const displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $optionEl.data('display-value-as');\n if (displayAs && typeof displayAs !== 'undefined') {\n valueArray.push(displayAs);\n } else {\n valueArray.push(optionEl.textContent.trim());\n }\n }\n });\n }\n if (ss.params.setValueText) {\n ss.formatValueTextContent(valueArray);\n }\n }\n getItemsData() {\n const ss = this;\n const theme = ss.app.theme;\n const items = [];\n let previousGroupEl;\n ss.$selectEl.find('option').each(optionEl => {\n const $optionEl = $(optionEl);\n const optionData = $optionEl.dataset();\n const optionImage = optionData.optionImage || ss.params.optionImage;\n const optionIcon = optionData.optionIcon || ss.params.optionIcon;\n const optionIconIos = theme === 'ios' && (optionData.optionIconIos || ss.params.optionIconIos);\n const optionIconMd = theme === 'md' && (optionData.optionIconMd || ss.params.optionIconMd);\n const optionInputIconPosition = optionData.inputIconPosition || ss.params.inputIconPosition || '';\n const optionHasMedia = optionImage || optionIcon || optionIconIos || optionIconMd;\n const optionColor = optionData.optionColor;\n let optionClassName = optionData.optionClass || '';\n if ($optionEl[0].disabled) optionClassName += ' disabled';\n const optionGroupEl = $optionEl.parent('optgroup')[0];\n const optionGroupLabel = optionGroupEl && optionGroupEl.label;\n let optionIsLabel = false;\n if (optionGroupEl && optionGroupEl !== previousGroupEl) {\n optionIsLabel = true;\n previousGroupEl = optionGroupEl;\n items.push({\n groupLabel: optionGroupLabel,\n isLabel: optionIsLabel\n });\n }\n items.push({\n value: $optionEl[0].value,\n text: $optionEl[0].textContent.trim(),\n selected: $optionEl[0].selected,\n groupEl: optionGroupEl,\n groupLabel: optionGroupLabel,\n image: optionImage,\n icon: optionIcon,\n iconIos: optionIconIos,\n iconMd: optionIconMd,\n inputIconPosition: optionInputIconPosition,\n color: optionColor,\n className: optionClassName,\n disabled: $optionEl[0].disabled,\n id: ss.id,\n hasMedia: optionHasMedia,\n checkbox: ss.inputType === 'checkbox',\n radio: ss.inputType === 'radio',\n inputName: ss.inputName,\n inputType: ss.inputType\n });\n });\n ss.items = items;\n return items;\n }\n renderSearchbar() {\n const ss = this;\n if (ss.params.renderSearchbar) return ss.params.renderSearchbar.call(ss);\n return $jsx(\"form\", {\n class: \"searchbar\"\n }, $jsx(\"div\", {\n class: \"searchbar-inner\"\n }, $jsx(\"div\", {\n class: \"searchbar-input-wrap\"\n }, $jsx(\"input\", {\n type: \"search\",\n spellcheck: ss.params.searchbarSpellcheck || 'false',\n placeholder: ss.params.searchbarPlaceholder\n }), $jsx(\"i\", {\n class: \"searchbar-icon\"\n }), $jsx(\"span\", {\n class: \"input-clear-button\"\n })), ss.params.searchbarDisableButton && $jsx(\"span\", {\n class: \"searchbar-disable-button\"\n }, ss.params.searchbarDisableText)));\n }\n renderItem(item, index) {\n const ss = this;\n if (ss.params.renderItem) return ss.params.renderItem.call(ss, item, index);\n function getIconContent(iconValue) {\n if (iconValue === void 0) {\n iconValue = '';\n }\n if (iconValue.indexOf(':') >= 0) {\n return iconValue.split(':')[1];\n }\n return '';\n }\n function getIconClass(iconValue) {\n if (iconValue === void 0) {\n iconValue = '';\n }\n if (iconValue.indexOf(':') >= 0) {\n let className = iconValue.split(':')[0];\n if (className === 'f7') className = 'f7-icons';\n if (className === 'material') className = 'material-icons';\n return className;\n }\n return iconValue;\n }\n let itemHtml;\n if (item.isLabel) {\n itemHtml = `
              • ${item.groupLabel}
              • `;\n } else {\n let selected = item.selected;\n let disabled;\n if (ss.params.virtualList) {\n const ssValue = ss.getValue();\n selected = ss.multiple ? ssValue.indexOf(item.value) >= 0 : ssValue === item.value;\n if (ss.multiple) {\n disabled = ss.multiple && !selected && ssValue.length === parseInt(ss.maxLength, 10);\n }\n }\n const {\n icon,\n iconIos,\n iconMd\n } = item;\n const hasIcon = icon || iconIos || iconMd;\n const iconContent = getIconContent(icon || iconIos || iconMd || '');\n const iconClass = getIconClass(icon || iconIos || iconMd || '');\n itemHtml = $jsx(\"li\", {\n class: `${item.className || ''}${disabled ? ' disabled' : ''}`\n }, $jsx(\"label\", {\n class: `item-${item.inputType} ${item.inputIconPosition ? `item-${item.inputType}-icon-${item.inputIconPosition}` : ''} item-content`\n }, $jsx(\"input\", {\n type: item.inputType,\n name: item.inputName,\n value: item.value,\n _checked: selected\n }), $jsx(\"i\", {\n class: `icon icon-${item.inputType}`\n }), item.hasMedia && $jsx(\"div\", {\n class: \"item-media\"\n }, hasIcon && $jsx(\"i\", {\n class: `icon ${iconClass}`\n }, iconContent), item.image && $jsx(\"img\", {\n src: item.image\n })), $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: `item-title${item.color ? ` text-color-${item.color}` : ''}`\n }, item.text))));\n }\n return itemHtml;\n }\n renderItems() {\n const ss = this;\n if (ss.params.renderItems) return ss.params.renderItems.call(ss, ss.items);\n const itemsHtml = `\n ${ss.items.map((item, index) => `${ss.renderItem(item, index)}`).join('')}\n `;\n return itemsHtml;\n }\n renderPage() {\n const ss = this;\n if (ss.params.renderPage) return ss.params.renderPage.call(ss, ss.items);\n let pageTitle = ss.params.pageTitle;\n if (typeof pageTitle === 'undefined') {\n const $itemTitleEl = ss.$el.find('.item-title');\n pageTitle = $itemTitleEl.length ? $itemTitleEl.text().trim() : '';\n }\n const cssClass = ss.params.cssClass;\n return $jsx(\"div\", {\n class: `page smart-select-page ${cssClass}`,\n \"data-name\": \"smart-select-page\",\n \"data-select-name\": ss.selectName\n }, $jsx(\"div\", {\n class: `navbar ${ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''}`\n }, $jsx(\"div\", {\n class: \"navbar-bg\"\n }), $jsx(\"div\", {\n class: `navbar-inner sliding ${ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''}`\n }, $jsx(\"div\", {\n class: \"left\"\n }, $jsx(\"a\", {\n class: \"link back\"\n }, $jsx(\"i\", {\n class: \"icon icon-back\"\n }), $jsx(\"span\", {\n class: \"if-not-md\"\n }, ss.params.pageBackLinkText))), pageTitle && $jsx(\"div\", {\n class: \"title\"\n }, pageTitle), ss.params.searchbar && $jsx(\"div\", {\n class: \"subnavbar\"\n }, ss.renderSearchbar()))), ss.params.searchbar && $jsx(\"div\", {\n class: \"searchbar-backdrop\"\n }), $jsx(\"div\", {\n class: \"page-content\"\n }, $jsx(\"div\", {\n class: `list list-outline-ios list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`\n }, $jsx(\"ul\", null, !ss.params.virtualList && ss.renderItems(ss.items)))));\n }\n renderPopup() {\n const ss = this;\n if (ss.params.renderPopup) return ss.params.renderPopup.call(ss, ss.items);\n let pageTitle = ss.params.pageTitle;\n if (typeof pageTitle === 'undefined') {\n const $itemTitleEl = ss.$el.find('.item-title');\n pageTitle = $itemTitleEl.length ? $itemTitleEl.text().trim() : '';\n }\n const cssClass = ss.params.cssClass || '';\n return $jsx(\"div\", {\n class: `popup smart-select-popup ${cssClass} ${ss.params.popupTabletFullscreen ? 'popup-tablet-fullscreen' : ''}`,\n \"data-select-name\": ss.selectName\n }, $jsx(\"div\", {\n class: \"view\"\n }, $jsx(\"div\", {\n class: `page smart-select-page ${ss.params.searchbar ? 'page-with-subnavbar' : ''}`,\n \"data-name\": \"smart-select-page\"\n }, $jsx(\"div\", {\n class: `navbar ${ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''}`\n }, $jsx(\"div\", {\n class: \"navbar-bg\"\n }), $jsx(\"div\", {\n class: \"navbar-inner sliding\"\n }, pageTitle && $jsx(\"div\", {\n class: \"title\"\n }, pageTitle), $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link popup-close\",\n \"data-popup\": `.smart-select-popup[data-select-name='${ss.selectName}']`\n }, ss.params.popupCloseLinkText)), ss.params.searchbar && $jsx(\"div\", {\n class: \"subnavbar\"\n }, ss.renderSearchbar()))), ss.params.searchbar && $jsx(\"div\", {\n class: \"searchbar-backdrop\"\n }), $jsx(\"div\", {\n class: \"page-content\"\n }, $jsx(\"div\", {\n class: `list list-outline-ios list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`\n }, $jsx(\"ul\", null, !ss.params.virtualList && ss.renderItems(ss.items)))))));\n }\n renderSheet() {\n const ss = this;\n if (ss.params.renderSheet) return ss.params.renderSheet.call(ss, ss.items);\n const cssClass = ss.params.cssClass;\n // prettier-ignore\n return $jsx(\"div\", {\n class: `sheet-modal smart-select-sheet ${cssClass}`,\n \"data-select-name\": ss.selectName\n }, $jsx(\"div\", {\n class: `toolbar toolbar-top ${ss.params.toolbarColorTheme ? `color-${ss.params.toolbarColorTheme}` : ''}`\n }, $jsx(\"div\", {\n class: \"toolbar-inner\"\n }, $jsx(\"div\", {\n class: \"left\"\n }), $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link sheet-close\"\n }, ss.params.sheetCloseLinkText)))), $jsx(\"div\", {\n class: \"sheet-modal-inner\"\n }, $jsx(\"div\", {\n class: \"page-content\"\n }, $jsx(\"div\", {\n class: `list list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`\n }, $jsx(\"ul\", null, !ss.params.virtualList && ss.renderItems(ss.items))))));\n }\n renderPopover() {\n const ss = this;\n if (ss.params.renderPopover) return ss.params.renderPopover.call(ss, ss.items);\n const cssClass = ss.params.cssClass;\n // prettier-ignore\n return $jsx(\"div\", {\n class: `popover smart-select-popover ${cssClass}`,\n \"data-select-name\": ss.selectName\n }, $jsx(\"div\", {\n class: \"popover-inner\"\n }, $jsx(\"div\", {\n class: `list list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`\n }, $jsx(\"ul\", null, !ss.params.virtualList && ss.renderItems(ss.items)))));\n }\n scrollToSelectedItem() {\n const ss = this;\n const {\n params,\n $containerEl\n } = ss;\n if (!ss.opened) return ss;\n if (params.virtualList) {\n let selectedIndex;\n ss.vl.items.forEach((item, index) => {\n if (typeof selectedIndex === 'undefined' && item.selected) {\n selectedIndex = index;\n }\n });\n if (typeof selectedIndex !== 'undefined') {\n ss.vl.scrollToItem(selectedIndex);\n }\n } else {\n const $selectedItemEl = $containerEl.find('input:checked').parents('li');\n if (!$selectedItemEl.length) return ss;\n const $scrollableEl = $containerEl.find('.page-content, .popover-inner');\n if (!$scrollableEl.length) return ss;\n $scrollableEl.scrollTop($selectedItemEl.offset().top - $scrollableEl.offset().top - parseInt($scrollableEl.css('padding-top'), 10));\n }\n return ss;\n }\n onOpen(type, containerEl) {\n const ss = this;\n const app = ss.app;\n const $containerEl = $(containerEl);\n ss.$containerEl = $containerEl;\n ss.openedIn = type;\n ss.opened = true;\n\n // Init VL\n if (ss.params.virtualList) {\n ss.vl = app.virtualList.create({\n el: $containerEl.find('.virtual-list'),\n items: ss.items,\n renderItem: ss.renderItem.bind(ss),\n height: ss.params.virtualListHeight,\n searchByItem(query, item) {\n if (item.text && removeDiacritics(item.text).toLowerCase().indexOf(query.trim().toLowerCase()) >= 0) return true;\n return false;\n }\n });\n }\n if (ss.params.scrollToSelectedItem) {\n ss.scrollToSelectedItem();\n }\n\n // Init SB\n if (ss.params.searchbar) {\n let $searchbarEl = $containerEl.find('.searchbar');\n if (type === 'page' && app.theme === 'ios') {\n $searchbarEl = $(app.navbar.getElByPage($containerEl)).find('.searchbar');\n }\n if (ss.params.appendSearchbarNotFound && (type === 'page' || type === 'popup')) {\n let $notFoundEl = null;\n if (typeof ss.params.appendSearchbarNotFound === 'string') {\n $notFoundEl = $(`
                ${ss.params.appendSearchbarNotFound}
                `);\n } else if (typeof ss.params.appendSearchbarNotFound === 'boolean') {\n $notFoundEl = $('
                Nothing found
                ');\n } else {\n $notFoundEl = ss.params.appendSearchbarNotFound;\n }\n if ($notFoundEl) {\n $containerEl.find('.page-content').append($notFoundEl[0]);\n }\n }\n const searchbarParams = extend({\n el: $searchbarEl,\n backdropEl: $containerEl.find('.searchbar-backdrop'),\n searchContainer: `.smart-select-list-${ss.id}`,\n searchIn: '.item-title'\n }, typeof ss.params.searchbar === 'object' ? ss.params.searchbar : {});\n ss.searchbar = app.searchbar.create(searchbarParams);\n }\n\n // Check for max length\n if (ss.maxLength) {\n ss.checkMaxLength();\n }\n\n // Close on select\n if (ss.params.closeOnSelect) {\n ss.$containerEl.find(`input[type=\"radio\"][name=\"${ss.inputName}\"]:checked`).parents('label').once('click', () => {\n ss.close();\n });\n }\n\n // Attach input events\n ss.attachInputsEvents();\n ss.$el.trigger('smartselect:open');\n ss.emit('local::open smartSelectOpen', ss);\n }\n onOpened() {\n const ss = this;\n ss.$el.trigger('smartselect:opened');\n ss.emit('local::opened smartSelectOpened', ss);\n }\n onClose() {\n const ss = this;\n if (ss.destroyed) return;\n\n // Destroy VL\n if (ss.vl && ss.vl.destroy) {\n ss.vl.destroy();\n ss.vl = null;\n delete ss.vl;\n }\n\n // Destroy SB\n if (ss.searchbar && ss.searchbar.destroy) {\n ss.searchbar.destroy();\n ss.searchbar = null;\n delete ss.searchbar;\n }\n // Detach events\n ss.detachInputsEvents();\n ss.$el.trigger('smartselect:close');\n ss.emit('local::close smartSelectClose', ss);\n }\n onClosed() {\n const ss = this;\n if (ss.destroyed) return;\n ss.opened = false;\n ss.$containerEl = null;\n delete ss.$containerEl;\n ss.$el.trigger('smartselect:closed');\n ss.emit('local::closed smartSelectClosed', ss);\n }\n openPage() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const pageHtml = ss.renderPage(ss.items);\n ss.view.router.navigate({\n url: ss.url,\n route: {\n content: pageHtml,\n path: ss.url,\n on: {\n pageBeforeIn(e, page) {\n ss.onOpen('page', page.el);\n },\n pageAfterIn(e, page) {\n ss.onOpened('page', page.el);\n },\n pageBeforeOut(e, page) {\n ss.onClose('page', page.el);\n },\n pageAfterOut(e, page) {\n ss.onClosed('page', page.el);\n }\n }\n }\n });\n return ss;\n }\n openPopup() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const popupHtml = ss.renderPopup(ss.items);\n const popupParams = {\n content: popupHtml,\n push: ss.params.popupPush,\n swipeToClose: ss.params.popupSwipeToClose,\n closeByBackdropClick: ss.params.closeByBackdropClick,\n on: {\n popupOpen(popup) {\n ss.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n ss.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n ss.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n ss.onClosed('popup', popup.el);\n }\n }\n };\n if (ss.params.routableModals && ss.view) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n popup: popupParams\n }\n });\n } else {\n ss.modal = ss.app.popup.create(popupParams).open();\n }\n return ss;\n }\n openSheet() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const sheetHtml = ss.renderSheet(ss.items);\n const sheetParams = {\n content: sheetHtml,\n backdrop: ss.params.sheetBackdrop,\n scrollToEl: ss.$el,\n closeByOutsideClick: true,\n push: ss.params.sheetPush,\n swipeToClose: ss.params.sheetSwipeToClose,\n closeByBackdropClick: ss.params.closeByBackdropClick,\n on: {\n sheetOpen(sheet) {\n ss.onOpen('sheet', sheet.el);\n },\n sheetOpened(sheet) {\n ss.onOpened('sheet', sheet.el);\n },\n sheetClose(sheet) {\n ss.onClose('sheet', sheet.el);\n },\n sheetClosed(sheet) {\n ss.onClosed('sheet', sheet.el);\n }\n }\n };\n if (ss.params.routableModals && ss.view) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n sheet: sheetParams\n }\n });\n } else {\n ss.modal = ss.app.sheet.create(sheetParams).open();\n }\n return ss;\n }\n openPopover() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const popoverHtml = ss.renderPopover(ss.items);\n const popoverParams = {\n content: popoverHtml,\n targetEl: ss.$el,\n closeByBackdropClick: ss.params.closeByBackdropClick,\n on: {\n popoverOpen(popover) {\n ss.onOpen('popover', popover.el);\n },\n popoverOpened(popover) {\n ss.onOpened('popover', popover.el);\n },\n popoverClose(popover) {\n ss.onClose('popover', popover.el);\n },\n popoverClosed(popover) {\n ss.onClosed('popover', popover.el);\n }\n }\n };\n if (ss.params.routableModals && ss.view) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n popover: popoverParams\n }\n });\n } else {\n ss.modal = ss.app.popover.create(popoverParams).open();\n }\n return ss;\n }\n open(type) {\n const ss = this;\n if (ss.opened) return ss;\n let prevented = false;\n function prevent() {\n prevented = true;\n }\n if (ss.$el) {\n ss.$el.trigger('smartselect:beforeopen', {\n prevent\n });\n }\n ss.emit('local::beforeOpen smartSelectBeforeOpen', ss, prevent);\n if (prevented) return ss;\n const openIn = type || ss.params.openIn;\n ss[`open${openIn.split('').map((el, index) => {\n if (index === 0) return el.toUpperCase();\n return el;\n }).join('')}`]();\n return ss;\n }\n close() {\n const ss = this;\n if (!ss.opened) return ss;\n if (ss.params.routableModals && ss.view || ss.openedIn === 'page') {\n ss.view.router.back();\n } else {\n ss.modal.once('modalClosed', () => {\n nextTick(() => {\n if (ss.destroyed) return;\n ss.modal.destroy();\n delete ss.modal;\n });\n });\n ss.modal.close();\n }\n return ss;\n }\n init() {\n const ss = this;\n ss.attachEvents();\n ss.setValueText();\n }\n destroy() {\n const ss = this;\n ss.emit('local::beforeDestroy smartSelectBeforeDestroy', ss);\n ss.$el.trigger('smartselect:beforedestroy');\n ss.detachEvents();\n delete ss.$el[0].f7SmartSelect;\n deleteProps(ss);\n ss.destroyed = true;\n }\n}\nexport default SmartSelect;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport SmartSelect from './smart-select-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'smartSelect',\n params: {\n smartSelect: {\n el: undefined,\n valueEl: undefined,\n setValueText: true,\n formatValueText: null,\n openIn: 'page',\n // or 'popup' or 'sheet' or 'popover'\n popupPush: false,\n popupSwipeToClose: undefined,\n // defaults to app\n sheetPush: false,\n sheetSwipeToClose: undefined,\n // defaults to app\n sheetBackdrop: false,\n pageTitle: undefined,\n pageBackLinkText: 'Back',\n popupCloseLinkText: 'Close',\n popupTabletFullscreen: false,\n closeByBackdropClick: true,\n sheetCloseLinkText: 'Done',\n searchbar: false,\n searchbarPlaceholder: 'Search',\n searchbarDisableText: 'Cancel',\n searchbarDisableButton: true,\n searchbarSpellcheck: false,\n closeOnSelect: false,\n virtualList: false,\n virtualListHeight: undefined,\n scrollToSelectedItem: false,\n formColorTheme: undefined,\n navbarColorTheme: undefined,\n routableModals: false,\n url: 'select/',\n inputIconPosition: 'start',\n cssClass: '',\n /*\n Custom render functions\n */\n renderPage: undefined,\n renderPopup: undefined,\n renderSheet: undefined,\n renderPopover: undefined,\n renderItems: undefined,\n renderItem: undefined,\n renderSearchbar: undefined\n }\n },\n static: {\n SmartSelect\n },\n create() {\n const app = this;\n app.smartSelect = extend(ConstructorMethods({\n defaultSelector: '.smart-select',\n constructor: SmartSelect,\n app,\n domProp: 'f7SmartSelect'\n }), {\n open(smartSelectEl) {\n const ss = app.smartSelect.get(smartSelectEl);\n if (ss && ss.open) return ss.open();\n return undefined;\n },\n close(smartSelectEl) {\n const ss = app.smartSelect.get(smartSelectEl);\n if (ss && ss.close) return ss.close();\n return undefined;\n }\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.smart-select-init').each(smartSelectEl => {\n app.smartSelect.create(extend({\n el: smartSelectEl\n }, $(smartSelectEl).dataset()));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.smart-select-init').each(smartSelectEl => {\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.smart-select-init').each(smartSelectEl => {\n app.smartSelect.create(extend({\n el: smartSelectEl\n }, $(smartSelectEl).dataset()));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.smart-select-init').each(smartSelectEl => {\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n });\n }\n },\n clicks: {\n '.smart-select': function open($clickedEl, data) {\n const app = this;\n if (!$clickedEl[0].f7SmartSelect) {\n const ss = app.smartSelect.create(extend({\n el: $clickedEl\n }, data));\n ss.open();\n }\n }\n },\n vnode: {\n 'smart-select-init': {\n insert(vnode) {\n const app = this;\n const smartSelectEl = vnode.elm;\n app.smartSelect.create(extend({\n el: smartSelectEl\n }, $(smartSelectEl).dataset()));\n },\n destroy(vnode) {\n const smartSelectEl = vnode.elm;\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n }\n }\n }\n};","import { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport $ from '../../shared/dom7.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { getSupport } from '../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Calendar extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const calendar = this;\n calendar.params = extend({}, app.params.calendar, params);\n let $containerEl;\n if (calendar.params.containerEl) {\n $containerEl = $(calendar.params.containerEl);\n if ($containerEl.length === 0) return calendar;\n }\n let $inputEl;\n if (calendar.params.inputEl) {\n $inputEl = $(calendar.params.inputEl);\n }\n const isHorizontal = calendar.params.direction === 'horizontal';\n let inverter = 1;\n if (isHorizontal) {\n inverter = app.rtl ? -1 : 1;\n }\n extend(calendar, {\n app,\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n initialized: false,\n opened: false,\n url: calendar.params.url,\n isHorizontal,\n inverter,\n animating: false,\n allowTouchMove: true,\n hasTimePicker: calendar.params.timePicker && !calendar.params.rangePicker && !calendar.params.multiple\n });\n calendar.dayFormatter = date => {\n const formatter = new Intl.DateTimeFormat(calendar.params.locale, {\n day: 'numeric'\n });\n return formatter.format(date).replace(/日/, '');\n };\n calendar.monthFormatter = date => {\n const formatter = new Intl.DateTimeFormat(calendar.params.locale, {\n month: 'long'\n });\n return formatter.format(date);\n };\n calendar.yearFormatter = date => {\n const formatter = new Intl.DateTimeFormat(calendar.params.locale, {\n year: 'numeric'\n });\n return formatter.format(date);\n };\n calendar.timeSelectorFormatter = date => {\n const formatter = new Intl.DateTimeFormat(calendar.params.locale, calendar.params.timePickerFormat);\n return formatter.format(date);\n };\n const timeFormatCheckDate = calendar.timeSelectorFormatter(new Date()).toLowerCase();\n calendar.is12HoursFormat = timeFormatCheckDate.indexOf('pm') >= 0 || timeFormatCheckDate.indexOf('am') >= 0;\n\n // Auto names\n let {\n monthNames,\n monthNamesShort,\n dayNames,\n dayNamesShort\n } = calendar.params;\n const {\n monthNamesIntl,\n monthNamesShortIntl,\n dayNamesIntl,\n dayNamesShortIntl\n } = calendar.getIntlNames();\n if (monthNames === 'auto') monthNames = monthNamesIntl;\n if (monthNamesShort === 'auto') monthNamesShort = monthNamesShortIntl;\n if (dayNames === 'auto') dayNames = dayNamesIntl;\n if (dayNamesShort === 'auto') dayNamesShort = dayNamesShortIntl;\n extend(calendar, {\n monthNames,\n monthNamesShort,\n dayNames,\n dayNamesShort\n });\n function onInputClick() {\n calendar.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n function onInputClear() {\n calendar.setValue([]);\n if (calendar.opened) {\n calendar.update();\n }\n }\n function onHtmlClick(e) {\n const $targetEl = $(e.target);\n if (calendar.destroyed || !calendar.params) return;\n if (calendar.isPopover()) return;\n if (!calendar.opened || calendar.closing) return;\n if ($targetEl.closest('[class*=\"backdrop\"]').length) return;\n if (calendar.monthPickerPopover || calendar.yearPickerPopover || calendar.timePickerPopover) return;\n if ($inputEl && $inputEl.length > 0) {\n if ($targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal, .calendar-modal').length === 0) {\n calendar.close();\n }\n } else if ($(e.target).closest('.sheet-modal, .calendar-modal').length === 0) {\n calendar.close();\n }\n }\n\n // Events\n extend(calendar, {\n attachInputEvents() {\n calendar.$inputEl.on('click', onInputClick);\n calendar.$inputEl.on('input:clear', onInputClear);\n if (calendar.params.inputReadOnly) {\n calendar.$inputEl.on('focus mousedown', onInputFocus);\n if (calendar.$inputEl[0]) {\n calendar.$inputEl[0].f7ValidateReadonly = true;\n }\n }\n },\n detachInputEvents() {\n calendar.$inputEl.off('click', onInputClick);\n calendar.$inputEl.off('input:clear', onInputClear);\n if (calendar.params.inputReadOnly) {\n calendar.$inputEl.off('focus mousedown', onInputFocus);\n if (calendar.$inputEl[0]) {\n delete calendar.$inputEl[0].f7ValidateReadonly;\n }\n }\n },\n attachHtmlEvents() {\n app.on('click', onHtmlClick);\n },\n detachHtmlEvents() {\n app.off('click', onHtmlClick);\n }\n });\n calendar.attachCalendarEvents = function attachCalendarEvents() {\n let allowItemClick = true;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n let touchStartTime;\n let touchEndTime;\n let currentTranslate;\n let wrapperWidth;\n let wrapperHeight;\n let percentage;\n let touchesDiff;\n let isScrolling;\n const {\n $el,\n $wrapperEl\n } = calendar;\n function handleTouchStart(e) {\n if (isMoved || isTouched || !e.isTrusted) return;\n isTouched = true;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n touchStartTime = new Date().getTime();\n percentage = 0;\n allowItemClick = true;\n isScrolling = undefined;\n currentTranslate = calendar.monthsTranslate;\n }\n function handleTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n const {\n isHorizontal: isH\n } = calendar;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX));\n }\n if (isH && isScrolling || !calendar.allowTouchMove) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n if (calendar.animating) {\n isTouched = false;\n return;\n }\n allowItemClick = false;\n if (!isMoved) {\n // First move\n isMoved = true;\n wrapperWidth = $wrapperEl[0].offsetWidth;\n wrapperHeight = $wrapperEl[0].offsetHeight;\n $wrapperEl.transition(0);\n }\n touchesDiff = isH ? touchCurrentX - touchStartX : touchCurrentY - touchStartY;\n percentage = touchesDiff / (isH ? wrapperWidth : wrapperHeight);\n currentTranslate = (calendar.monthsTranslate * calendar.inverter + percentage) * 100;\n\n // Transform wrapper\n $wrapperEl.transform(`translate3d(${isH ? currentTranslate : 0}%, ${isH ? 0 : currentTranslate}%, 0)`);\n }\n function handleTouchEnd(e) {\n if (!isTouched || !isMoved || !e.isTrusted) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n touchEndTime = new Date().getTime();\n if (touchEndTime - touchStartTime < 300) {\n if (Math.abs(touchesDiff) < 10) {\n calendar.resetMonth();\n } else if (touchesDiff >= 10) {\n if (app.rtl) calendar.nextMonth();else calendar.prevMonth();\n } else if (app.rtl) calendar.prevMonth();else calendar.nextMonth();\n } else if (percentage <= -0.5) {\n if (app.rtl) calendar.prevMonth();else calendar.nextMonth();\n } else if (percentage >= 0.5) {\n if (app.rtl) calendar.nextMonth();else calendar.prevMonth();\n } else {\n calendar.resetMonth();\n }\n\n // Allow click\n setTimeout(() => {\n allowItemClick = true;\n }, 100);\n }\n function handleDayClick(e) {\n if (!allowItemClick) return;\n let $dayEl = $(e.target).parents('.calendar-day');\n if ($dayEl.length === 0 && $(e.target).hasClass('calendar-day')) {\n $dayEl = $(e.target);\n }\n if ($dayEl.length === 0) return;\n if ($dayEl.hasClass('calendar-day-disabled')) return;\n if (!calendar.params.rangePicker) {\n if ($dayEl.hasClass('calendar-day-next')) calendar.nextMonth();\n if ($dayEl.hasClass('calendar-day-prev')) calendar.prevMonth();\n }\n const dateYear = parseInt($dayEl.attr('data-year'), 10);\n const dateMonth = parseInt($dayEl.attr('data-month'), 10);\n const dateDay = parseInt($dayEl.attr('data-day'), 10);\n calendar.emit('local::dayClick calendarDayClick', calendar, $dayEl[0], dateYear, dateMonth, dateDay);\n if (!$dayEl.hasClass('calendar-day-selected') || calendar.params.multiple || calendar.params.rangePicker) {\n const valueToAdd = new Date(dateYear, dateMonth, dateDay, 0, 0, 0);\n if (calendar.hasTimePicker) {\n if (calendar.value && calendar.value[0]) {\n valueToAdd.setHours(calendar.value[0].getHours(), calendar.value[0].getMinutes());\n } else {\n valueToAdd.setHours(new Date().getHours(), new Date().getMinutes());\n }\n }\n calendar.addValue(valueToAdd);\n }\n if (calendar.params.closeOnSelect) {\n if (calendar.params.rangePicker && calendar.value.length === 2 || !calendar.params.rangePicker) {\n calendar.close();\n }\n }\n }\n function onNextMonthClick() {\n calendar.nextMonth();\n }\n function onPrevMonthClick() {\n calendar.prevMonth();\n }\n function onNextYearClick() {\n calendar.nextYear();\n }\n function onPrevYearClick() {\n calendar.prevYear();\n }\n function onMonthSelectorClick() {\n calendar.openMonthPicker();\n }\n function onYearSelectorClick() {\n calendar.openYearPicker();\n }\n function onTimeSelectorClick() {\n calendar.openTimePicker();\n }\n const passiveListener = app.touchEvents.start === 'touchstart' && getSupport().passiveListener ? {\n passive: true,\n capture: false\n } : false;\n // Selectors clicks\n $el.find('.calendar-prev-month-button').on('click', onPrevMonthClick);\n $el.find('.calendar-next-month-button').on('click', onNextMonthClick);\n $el.find('.calendar-prev-year-button').on('click', onPrevYearClick);\n $el.find('.calendar-next-year-button').on('click', onNextYearClick);\n if (calendar.params.monthPicker) {\n $el.find('.current-month-value').on('click', onMonthSelectorClick);\n }\n if (calendar.params.yearPicker) {\n $el.find('.current-year-value').on('click', onYearSelectorClick);\n }\n if (calendar.hasTimePicker) {\n $el.find('.calendar-time-selector a').on('click', onTimeSelectorClick);\n }\n // Day clicks\n $wrapperEl.on('click', handleDayClick);\n // Touch events\n if (calendar.params.touchMove) {\n $wrapperEl.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n calendar.detachCalendarEvents = function detachCalendarEvents() {\n $el.find('.calendar-prev-month-button').off('click', onPrevMonthClick);\n $el.find('.calendar-next-month-button').off('click', onNextMonthClick);\n $el.find('.calendar-prev-year-button').off('click', onPrevYearClick);\n $el.find('.calendar-next-year-button').off('click', onNextYearClick);\n if (calendar.params.monthPicker) {\n $el.find('.current-month-value').off('click', onMonthSelectorClick);\n }\n if (calendar.params.yearPicker) {\n $el.find('.current-year-value').off('click', onYearSelectorClick);\n }\n if (calendar.hasTimePicker) {\n $el.find('.calendar-time-selector a').off('click', onTimeSelectorClick);\n }\n $wrapperEl.off('click', handleDayClick);\n if (calendar.params.touchMove) {\n $wrapperEl.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n };\n };\n calendar.init();\n return calendar;\n }\n get view() {\n const {\n $inputEl,\n app,\n params\n } = this;\n let view;\n if (params.view) {\n view = params.view;\n } else if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view) view = app.views.main;\n return view;\n }\n getIntlNames() {\n const calendar = this;\n const locale = calendar.params.locale;\n const monthNamesIntl = [];\n const monthNamesShortIntl = [];\n const dayNamesIntl = [];\n const dayNamesShortIntl = [];\n const formatterMonthNames = new Intl.DateTimeFormat(locale, {\n month: 'long'\n });\n const formatterMonthNamesShort = new Intl.DateTimeFormat(locale, {\n month: 'short'\n });\n const formatterDayNames = new Intl.DateTimeFormat(locale, {\n weekday: 'long'\n });\n const formatterDayNamesShort = new Intl.DateTimeFormat(locale, {\n weekday: 'short'\n });\n let year;\n let yearStarted;\n let yearEnded;\n for (let i = 0; i < 24; i += 1) {\n const date = new Date().setMonth(i, 1);\n const currentYear = calendar.yearFormatter(date);\n if (year && currentYear !== year) {\n if (yearStarted) yearEnded = true;\n yearStarted = true;\n year = currentYear;\n }\n if (!year) {\n year = currentYear;\n }\n if (yearStarted && year === currentYear && !yearEnded) {\n monthNamesIntl.push(formatterMonthNames.format(date));\n monthNamesShortIntl.push(formatterMonthNamesShort.format(date));\n }\n }\n const weekDay = new Date().getDay();\n for (let i = 0; i < 7; i += 1) {\n const date = new Date().getTime() + (i - weekDay) * 24 * 60 * 60 * 1000;\n dayNamesIntl.push(formatterDayNames.format(date));\n dayNamesShortIntl.push(formatterDayNamesShort.format(date));\n }\n return {\n monthNamesIntl,\n monthNamesShortIntl,\n dayNamesIntl,\n dayNamesShortIntl\n };\n }\n normalizeDate(date) {\n const calendar = this;\n const d = new Date(date);\n if (calendar.hasTimePicker) {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes());\n }\n return new Date(d.getFullYear(), d.getMonth(), d.getDate());\n }\n normalizeValues(values) {\n const calendar = this;\n let newValues = [];\n if (values && Array.isArray(values)) {\n newValues = values.map(val => calendar.normalizeDate(val));\n }\n return newValues;\n }\n initInput() {\n const calendar = this;\n if (!calendar.$inputEl) return;\n if (calendar.params.inputReadOnly) calendar.$inputEl.prop('readOnly', true);\n }\n isPopover() {\n const calendar = this;\n const {\n app,\n modal,\n params\n } = calendar;\n const device = getDevice();\n if (params.openIn === 'sheet') return false;\n if (modal && modal.type !== 'popover') return false;\n if (!calendar.inline && calendar.inputEl) {\n if (params.openIn === 'popover') return true;\n if (device.ios) {\n return !!device.ipad;\n }\n if (app.width >= 768) {\n return true;\n }\n }\n return false;\n }\n formatDate(d) {\n const calendar = this;\n const date = new Date(d);\n const year = date.getFullYear();\n const month = date.getMonth();\n const month1 = month + 1;\n const day = date.getDate();\n const weekDay = date.getDay();\n const {\n monthNames,\n monthNamesShort,\n dayNames,\n dayNamesShort\n } = calendar;\n const {\n dateFormat,\n locale\n } = calendar.params;\n function twoDigits(number) {\n return number < 10 ? `0${number}` : number;\n }\n if (typeof dateFormat === 'string') {\n const tokens = {\n yyyy: year,\n yy: String(year).substring(2),\n mm: twoDigits(month1),\n m: month1,\n MM: monthNames[month],\n M: monthNamesShort[month],\n dd: twoDigits(day),\n d: day,\n DD: dayNames[weekDay],\n D: dayNamesShort[weekDay]\n };\n if (calendar.params.timePicker) {\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n let hours12 = hours;\n if (hours > 12) hours12 = hours - 12;\n if (hours === 0) hours12 = 12;\n const a = hours >= 12 && hours !== 0 ? 'pm' : 'am';\n Object.assign(tokens, {\n HH: twoDigits(hours),\n H: hours,\n hh: twoDigits(hours12),\n h: hours12,\n ss: twoDigits(seconds),\n s: seconds,\n ':mm': twoDigits(minutes),\n ':m': minutes,\n a,\n A: a.toUpperCase()\n });\n }\n const regexp = new RegExp(Object.keys(tokens).map(t => `(${t})`).join('|'), 'g');\n return dateFormat.replace(regexp, token => {\n if (token in tokens) return tokens[token];\n return token;\n });\n }\n if (typeof dateFormat === 'function') {\n return dateFormat(date);\n }\n // Intl Object\n const formatter = new Intl.DateTimeFormat(locale, dateFormat);\n return formatter.format(date);\n }\n formatValue() {\n const calendar = this;\n const {\n value\n } = calendar;\n if (calendar.params.formatValue) {\n return calendar.params.formatValue.call(calendar, value);\n }\n return value.map(v => calendar.formatDate(v)).join(calendar.params.rangePicker ? ' - ' : ', ');\n }\n addValue(newValue) {\n const calendar = this;\n const {\n multiple,\n rangePicker,\n rangePickerMinDays,\n rangePickerMaxDays\n } = calendar.params;\n if (multiple) {\n if (!calendar.value) calendar.value = [];\n let inValuesIndex;\n for (let i = 0; i < calendar.value.length; i += 1) {\n if (new Date(newValue).getTime() === new Date(calendar.value[i]).getTime()) {\n inValuesIndex = i;\n }\n }\n if (typeof inValuesIndex === 'undefined') {\n calendar.value.push(newValue);\n } else {\n calendar.value.splice(inValuesIndex, 1);\n }\n calendar.updateValue();\n } else if (rangePicker) {\n if (!calendar.value) calendar.value = [];\n if (calendar.value.length === 2 || calendar.value.length === 0) {\n calendar.value = [];\n }\n if (calendar.value.length === 0 || Math.abs(calendar.value[0].getTime() - newValue.getTime()) >= (rangePickerMinDays - 1) * 60 * 60 * 24 * 1000 && (rangePickerMaxDays === 0 || Math.abs(calendar.value[0].getTime() - newValue.getTime()) <= (rangePickerMaxDays - 1) * 60 * 60 * 24 * 1000)) calendar.value.push(newValue);else calendar.value = [];\n calendar.value.sort((a, b) => a - b);\n calendar.updateValue();\n } else {\n calendar.value = [newValue];\n calendar.updateValue();\n }\n }\n setValue(values) {\n const calendar = this;\n const currentValue = calendar.value;\n if (Array.isArray(currentValue) && Array.isArray(values) && currentValue.length === values.length) {\n let equal = true;\n currentValue.forEach((v, index) => {\n if (v !== values[index]) equal = false;\n });\n if (equal) return;\n }\n calendar.value = values;\n calendar.updateValue();\n }\n getValue() {\n const calendar = this;\n return calendar.value;\n }\n updateValue(onlyHeader) {\n const calendar = this;\n const {\n $el,\n $wrapperEl,\n $inputEl,\n value,\n params\n } = calendar;\n let i;\n if ($el && $el.length > 0) {\n $wrapperEl.find('.calendar-day-selected').removeClass('calendar-day-selected calendar-day-selected-range calendar-day-selected-left calendar-day-selected-right');\n let valueDate;\n if (params.rangePicker && value.length === 2) {\n const leftDate = new Date(value[0]).getTime();\n const rightDate = new Date(value[1]).getTime();\n for (i = leftDate; i <= rightDate; i += 24 * 60 * 60 * 1000) {\n valueDate = new Date(i);\n let addClass = 'calendar-day-selected';\n if (leftDate !== rightDate) {\n if (i !== leftDate && i !== rightDate) {\n addClass += ' calendar-day-selected-range';\n }\n if (i === leftDate) {\n addClass += ' calendar-day-selected-left';\n }\n if (i === rightDate) {\n addClass += ' calendar-day-selected-right';\n }\n }\n $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).addClass(addClass);\n }\n valueDate = new Date(leftDate);\n $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).removeClass('calendar-day-selected-range').addClass('calendar-day-selected calendar-day-selected-left');\n valueDate = new Date(rightDate);\n $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).removeClass('calendar-day-selected-range').addClass('calendar-day-selected calendar-day-selected-right');\n } else {\n for (i = 0; i < calendar.value.length; i += 1) {\n valueDate = new Date(value[i]);\n $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).addClass('calendar-day-selected');\n }\n }\n }\n if (!onlyHeader) {\n calendar.emit('local::change calendarChange', calendar, value);\n }\n if ($el && $el.length > 0 && calendar.hasTimePicker) {\n $el.find('.calendar-time-selector a').text(value && value.length ? calendar.timeSelectorFormatter(value[0]) : calendar.params.timePickerPlaceholder);\n }\n if ($inputEl && $inputEl.length || params.header) {\n const inputValue = calendar.formatValue(value);\n if (params.header && $el && $el.length) {\n $el.find('.calendar-selected-date').text(inputValue);\n }\n if ($inputEl && $inputEl.length && !onlyHeader) {\n $inputEl.val(inputValue);\n $inputEl.trigger('change');\n }\n }\n }\n updateCurrentMonthYear(dir) {\n const calendar = this;\n const {\n $months,\n $el,\n monthNames\n } = calendar;\n let currentLocaleMonth;\n let currentLocaleYear;\n if (typeof dir === 'undefined') {\n calendar.currentMonth = parseInt($months.eq(1).attr('data-month'), 10);\n calendar.currentYear = parseInt($months.eq(1).attr('data-year'), 10);\n currentLocaleMonth = $months.eq(1).attr('data-locale-month');\n currentLocaleYear = $months.eq(1).attr('data-locale-year');\n } else {\n calendar.currentMonth = parseInt($months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-month'), 10);\n calendar.currentYear = parseInt($months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-year'), 10);\n currentLocaleMonth = $months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-locale-month');\n currentLocaleYear = $months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-locale-year');\n }\n $el.find('.current-month-value').text(monthNames[currentLocaleMonth]);\n $el.find('.current-year-value').text(currentLocaleYear);\n }\n update() {\n const calendar = this;\n const {\n currentYear,\n currentMonth,\n $wrapperEl\n } = calendar;\n const currentDate = new Date(currentYear, currentMonth);\n const prevMonthHtml = calendar.renderMonth(currentDate, 'prev');\n const currentMonthHtml = calendar.renderMonth(currentDate);\n const nextMonthHtml = calendar.renderMonth(currentDate, 'next');\n $wrapperEl.transition(0).html(`${prevMonthHtml}${currentMonthHtml}${nextMonthHtml}`).transform('translate3d(0,0,0)');\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.monthsTranslate = 0;\n calendar.setMonthsTranslate();\n calendar.$months.each(monthEl => {\n calendar.emit('local::monthAdd calendarMonthAdd', monthEl);\n });\n }\n onMonthChangeStart(dir) {\n const calendar = this;\n const {\n $months,\n currentYear,\n currentMonth\n } = calendar;\n calendar.updateCurrentMonthYear(dir);\n $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');\n const currentIndex = dir === 'next' ? $months.length - 1 : 0;\n $months.eq(currentIndex).addClass('calendar-month-current');\n $months.eq(dir === 'next' ? currentIndex - 1 : currentIndex + 1).addClass(dir === 'next' ? 'calendar-month-prev' : 'calendar-month-next');\n calendar.emit('local::monthYearChangeStart calendarMonthYearChangeStart', calendar, currentYear, currentMonth);\n }\n onMonthChangeEnd(dir, rebuildBoth) {\n const calendar = this;\n const {\n currentYear,\n currentMonth,\n $wrapperEl,\n monthsTranslate\n } = calendar;\n calendar.animating = false;\n let nextMonthHtml;\n let prevMonthHtml;\n let currentMonthHtml;\n $wrapperEl.find('.calendar-month:not(.calendar-month-prev):not(.calendar-month-current):not(.calendar-month-next)').remove();\n if (typeof dir === 'undefined') {\n dir = 'next'; // eslint-disable-line\n rebuildBoth = true; // eslint-disable-line\n }\n\n if (!rebuildBoth) {\n currentMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), dir);\n } else {\n $wrapperEl.find('.calendar-month-next, .calendar-month-prev').remove();\n prevMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'prev');\n nextMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'next');\n }\n if (dir === 'next' || rebuildBoth) {\n $wrapperEl.append(currentMonthHtml || nextMonthHtml);\n }\n if (dir === 'prev' || rebuildBoth) {\n $wrapperEl.prepend(currentMonthHtml || prevMonthHtml);\n }\n const $months = $wrapperEl.find('.calendar-month');\n calendar.$months = $months;\n calendar.setMonthsTranslate(monthsTranslate);\n calendar.emit('local::monthAdd calendarMonthAdd', calendar, dir === 'next' ? $months.eq($months.length - 1)[0] : $months.eq(0)[0]);\n calendar.emit('local::monthYearChangeEnd calendarMonthYearChangeEnd', calendar, currentYear, currentMonth);\n }\n setMonthsTranslate(translate) {\n const calendar = this;\n const {\n $months,\n isHorizontal: isH,\n inverter\n } = calendar;\n // eslint-disable-next-line\n translate = translate || calendar.monthsTranslate || 0;\n if (typeof calendar.monthsTranslate === 'undefined') {\n calendar.monthsTranslate = translate;\n }\n $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');\n const prevMonthTranslate = -(translate + 1) * 100 * inverter;\n const currentMonthTranslate = -translate * 100 * inverter;\n const nextMonthTranslate = -(translate - 1) * 100 * inverter;\n $months.eq(0).transform(`translate3d(${isH ? prevMonthTranslate : 0}%, ${isH ? 0 : prevMonthTranslate}%, 0)`).addClass('calendar-month-prev');\n $months.eq(1).transform(`translate3d(${isH ? currentMonthTranslate : 0}%, ${isH ? 0 : currentMonthTranslate}%, 0)`).addClass('calendar-month-current');\n $months.eq(2).transform(`translate3d(${isH ? nextMonthTranslate : 0}%, ${isH ? 0 : nextMonthTranslate}%, 0)`).addClass('calendar-month-next');\n }\n nextMonth(transition) {\n const calendar = this;\n const {\n params,\n $wrapperEl,\n inverter,\n isHorizontal: isH\n } = calendar;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n transition = ''; // eslint-disable-line\n if (!params.animate) transition = 0; // eslint-disable-line\n }\n\n const nextMonth = parseInt(calendar.$months.eq(calendar.$months.length - 1).attr('data-month'), 10);\n const nextYear = parseInt(calendar.$months.eq(calendar.$months.length - 1).attr('data-year'), 10);\n const nextDate = new Date(nextYear, nextMonth);\n const nextDateTime = nextDate.getTime();\n const transitionEndCallback = !calendar.animating;\n if (params.maxDate) {\n if (nextDateTime > new Date(params.maxDate).getTime()) {\n calendar.resetMonth();\n return;\n }\n }\n calendar.monthsTranslate -= 1;\n if (nextMonth === calendar.currentMonth) {\n const nextMonthTranslate = -calendar.monthsTranslate * 100 * inverter;\n const nextMonthHtml = $(calendar.renderMonth(nextDateTime, 'next')).transform(`translate3d(${isH ? nextMonthTranslate : 0}%, ${isH ? 0 : nextMonthTranslate}%, 0)`).addClass('calendar-month-next');\n $wrapperEl.append(nextMonthHtml[0]);\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.emit('local::monthAdd calendarMonthAdd', calendar.$months.eq(calendar.$months.length - 1)[0]);\n }\n calendar.animating = true;\n calendar.onMonthChangeStart('next');\n const translate = calendar.monthsTranslate * 100 * inverter;\n $wrapperEl.transition(transition).transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(() => {\n calendar.onMonthChangeEnd('next');\n });\n }\n if (!params.animate) {\n calendar.onMonthChangeEnd('next');\n }\n }\n prevMonth(transition) {\n const calendar = this;\n const {\n params,\n $wrapperEl,\n inverter,\n isHorizontal: isH\n } = calendar;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n transition = ''; // eslint-disable-line\n if (!params.animate) transition = 0; // eslint-disable-line\n }\n\n const prevMonth = parseInt(calendar.$months.eq(0).attr('data-month'), 10);\n const prevYear = parseInt(calendar.$months.eq(0).attr('data-year'), 10);\n const prevDate = new Date(prevYear, prevMonth + 1, -1);\n const prevDateTime = prevDate.getTime();\n const transitionEndCallback = !calendar.animating;\n if (params.minDate) {\n let minDate = new Date(params.minDate);\n minDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);\n if (prevDateTime < minDate.getTime()) {\n calendar.resetMonth();\n return;\n }\n }\n calendar.monthsTranslate += 1;\n if (prevMonth === calendar.currentMonth) {\n const prevMonthTranslate = -calendar.monthsTranslate * 100 * inverter;\n const prevMonthHtml = $(calendar.renderMonth(prevDateTime, 'prev')).transform(`translate3d(${isH ? prevMonthTranslate : 0}%, ${isH ? 0 : prevMonthTranslate}%, 0)`).addClass('calendar-month-prev');\n $wrapperEl.prepend(prevMonthHtml[0]);\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.emit('local::monthAdd calendarMonthAdd', calendar.$months.eq(0)[0]);\n }\n calendar.animating = true;\n calendar.onMonthChangeStart('prev');\n const translate = calendar.monthsTranslate * 100 * inverter;\n $wrapperEl.transition(transition).transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(() => {\n calendar.onMonthChangeEnd('prev');\n });\n }\n if (!params.animate) {\n calendar.onMonthChangeEnd('prev');\n }\n }\n resetMonth(transition) {\n if (transition === void 0) {\n transition = '';\n }\n const calendar = this;\n const {\n $wrapperEl,\n inverter,\n isHorizontal: isH,\n monthsTranslate\n } = calendar;\n const translate = monthsTranslate * 100 * inverter;\n $wrapperEl.transition(transition).transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n }\n // eslint-disable-next-line\n setYearMonth(year, month, transition) {\n const calendar = this;\n const {\n params,\n isHorizontal: isH,\n $wrapperEl,\n inverter\n } = calendar;\n // eslint-disable-next-line\n if (typeof year === 'undefined') year = calendar.currentYear;\n // eslint-disable-next-line\n if (typeof month === 'undefined') month = calendar.currentMonth;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n // eslint-disable-next-line\n transition = '';\n // eslint-disable-next-line\n if (!params.animate) transition = 0;\n }\n let targetDate;\n if (year < calendar.currentYear) {\n targetDate = new Date(year, month + 1, -1).getTime();\n } else {\n targetDate = new Date(year, month).getTime();\n }\n if (params.maxDate && targetDate > new Date(params.maxDate).getTime()) {\n return false;\n }\n if (params.minDate) {\n let minDate = new Date(params.minDate);\n minDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);\n if (targetDate < minDate.getTime()) {\n return false;\n }\n }\n const currentDate = new Date(calendar.currentYear, calendar.currentMonth).getTime();\n const dir = targetDate > currentDate ? 'next' : 'prev';\n const newMonthHTML = calendar.renderMonth(new Date(year, month));\n calendar.monthsTranslate = calendar.monthsTranslate || 0;\n const prevTranslate = calendar.monthsTranslate;\n let monthTranslate;\n const transitionEndCallback = !calendar.animating && transition !== 0;\n if (targetDate > currentDate) {\n // To next\n calendar.monthsTranslate -= 1;\n if (!calendar.animating) calendar.$months.eq(calendar.$months.length - 1).remove();\n $wrapperEl.append(newMonthHTML);\n calendar.$months = $wrapperEl.find('.calendar-month');\n monthTranslate = -(prevTranslate - 1) * 100 * inverter;\n calendar.$months.eq(calendar.$months.length - 1).transform(`translate3d(${isH ? monthTranslate : 0}%, ${isH ? 0 : monthTranslate}%, 0)`).addClass('calendar-month-next');\n } else {\n // To prev\n calendar.monthsTranslate += 1;\n if (!calendar.animating) calendar.$months.eq(0).remove();\n $wrapperEl.prepend(newMonthHTML);\n calendar.$months = $wrapperEl.find('.calendar-month');\n monthTranslate = -(prevTranslate + 1) * 100 * inverter;\n calendar.$months.eq(0).transform(`translate3d(${isH ? monthTranslate : 0}%, ${isH ? 0 : monthTranslate}%, 0)`).addClass('calendar-month-prev');\n }\n calendar.emit('local::monthAdd calendarMonthAdd', dir === 'next' ? calendar.$months.eq(calendar.$months.length - 1)[0] : calendar.$months.eq(0)[0]);\n calendar.animating = true;\n calendar.onMonthChangeStart(dir);\n const wrapperTranslate = calendar.monthsTranslate * 100 * inverter;\n $wrapperEl.transition(transition).transform(`translate3d(${isH ? wrapperTranslate : 0}%, ${isH ? 0 : wrapperTranslate}%, 0)`);\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(() => {\n calendar.onMonthChangeEnd(dir, true);\n });\n }\n if (!params.animate || transition === 0) {\n calendar.onMonthChangeEnd(dir, true);\n }\n }\n nextYear() {\n const calendar = this;\n calendar.setYearMonth(calendar.currentYear + 1);\n }\n prevYear() {\n const calendar = this;\n calendar.setYearMonth(calendar.currentYear - 1);\n }\n // eslint-disable-next-line\n dateInRange(dayDate, range) {\n let match = false;\n let i;\n if (!range) return false;\n if (Array.isArray(range)) {\n for (i = 0; i < range.length; i += 1) {\n if (range[i].from || range[i].to) {\n if (range[i].from && range[i].to) {\n if (dayDate <= new Date(range[i].to).getTime() && dayDate >= new Date(range[i].from).getTime()) {\n match = true;\n }\n } else if (range[i].from) {\n if (dayDate >= new Date(range[i].from).getTime()) {\n match = true;\n }\n } else if (range[i].to) {\n if (dayDate <= new Date(range[i].to).getTime()) {\n match = true;\n }\n }\n } else if (range[i].date) {\n if (dayDate === new Date(range[i].date).getTime()) {\n match = true;\n }\n } else if (dayDate === new Date(range[i]).getTime()) {\n match = true;\n }\n }\n } else if (range.from || range.to) {\n if (range.from && range.to) {\n if (dayDate <= new Date(range.to).getTime() && dayDate >= new Date(range.from).getTime()) {\n match = true;\n }\n } else if (range.from) {\n if (dayDate >= new Date(range.from).getTime()) {\n match = true;\n }\n } else if (range.to) {\n if (dayDate <= new Date(range.to).getTime()) {\n match = true;\n }\n }\n } else if (range.date) {\n match = dayDate === new Date(range.date).getTime();\n } else if (typeof range === 'function') {\n match = range(new Date(dayDate));\n }\n return match;\n }\n // eslint-disable-next-line\n daysInMonth(date) {\n const d = new Date(date);\n return new Date(d.getFullYear(), d.getMonth() + 1, 0).getDate();\n }\n renderMonths(date) {\n const calendar = this;\n if (calendar.params.renderMonths) {\n return calendar.params.renderMonths.call(calendar, date);\n }\n return $jsx(\"div\", {\n class: \"calendar-months-wrapper\"\n }, calendar.renderMonth(date, 'prev'), calendar.renderMonth(date), calendar.renderMonth(date, 'next'));\n }\n renderMonth(d, offset) {\n const calendar = this;\n const {\n params,\n value\n } = calendar;\n if (params.renderMonth) {\n return params.renderMonth.call(calendar, d, offset);\n }\n let date = new Date(d);\n let year = date.getFullYear();\n let month = date.getMonth();\n let localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter(date));\n if (localeMonth < 0) localeMonth = month;\n let localeYear = calendar.yearFormatter(date);\n if (offset === 'next') {\n if (month === 11) date = new Date(year + 1, 0);else date = new Date(year, month + 1, 1);\n }\n if (offset === 'prev') {\n if (month === 0) date = new Date(year - 1, 11);else date = new Date(year, month - 1, 1);\n }\n if (offset === 'next' || offset === 'prev') {\n month = date.getMonth();\n year = date.getFullYear();\n localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter(date));\n if (localeMonth < 0) localeMonth = month;\n localeYear = calendar.yearFormatter(date);\n }\n const currentValues = [];\n const today = new Date().setHours(0, 0, 0, 0);\n const minDate = params.minDate ? new Date(params.minDate).getTime() : null;\n const maxDate = params.maxDate ? new Date(params.maxDate).getTime() : null;\n const rows = 6;\n const cols = 7;\n const daysInPrevMonth = calendar.daysInMonth(new Date(date.getFullYear(), date.getMonth()).getTime() - 10 * 24 * 60 * 60 * 1000);\n const daysInMonth = calendar.daysInMonth(date);\n const minDayNumber = params.firstDay === 6 ? 0 : 1;\n let monthHtml = '';\n let dayIndex = 0 + (params.firstDay - 1);\n let disabled;\n let hasEvents;\n let firstDayOfMonthIndex = new Date(date.getFullYear(), date.getMonth()).getDay();\n if (firstDayOfMonthIndex === 0) firstDayOfMonthIndex = 7;\n if (value && value.length) {\n for (let i = 0; i < value.length; i += 1) {\n currentValues.push(new Date(value[i]).setHours(0, 0, 0, 0));\n }\n }\n for (let row = 1; row <= rows; row += 1) {\n let rowHtml = '';\n for (let col = 1; col <= cols; col += 1) {\n dayIndex += 1;\n let dayDate;\n let dayNumber = dayIndex - firstDayOfMonthIndex;\n let addClass = '';\n if (row === 1 && col === 1 && dayNumber > minDayNumber && params.firstDay !== 1) {\n dayIndex -= 7;\n dayNumber = dayIndex - firstDayOfMonthIndex;\n }\n const weekDayIndex = col - 1 + params.firstDay > 6 ? col - 1 - 7 + params.firstDay : col - 1 + params.firstDay;\n if (dayNumber < 0) {\n dayNumber = daysInPrevMonth + dayNumber + 1;\n addClass += ' calendar-day-prev';\n dayDate = new Date(month - 1 < 0 ? year - 1 : year, month - 1 < 0 ? 11 : month - 1, dayNumber).getTime();\n } else {\n dayNumber += 1;\n if (dayNumber > daysInMonth) {\n dayNumber -= daysInMonth;\n addClass += ' calendar-day-next';\n dayDate = new Date(month + 1 > 11 ? year + 1 : year, month + 1 > 11 ? 0 : month + 1, dayNumber).getTime();\n } else {\n dayDate = new Date(year, month, dayNumber).getTime();\n }\n }\n // Today\n if (dayDate === today) addClass += ' calendar-day-today';\n\n // Selected\n if (params.rangePicker && currentValues.length === 2) {\n if (dayDate >= currentValues[0] && dayDate <= currentValues[1]) {\n addClass += ' calendar-day-selected';\n }\n if (currentValues[0] !== currentValues[1]) {\n if (dayDate > currentValues[0] && dayDate < currentValues[1]) {\n addClass += ' calendar-day-selected-range';\n }\n if (dayDate === currentValues[0]) {\n addClass += ' calendar-day-selected-left';\n }\n if (dayDate === currentValues[1]) {\n addClass += ' calendar-day-selected-right';\n }\n }\n } else if (currentValues.indexOf(dayDate) >= 0) addClass += ' calendar-day-selected';\n // Weekend\n if (params.weekendDays.indexOf(weekDayIndex) >= 0) {\n addClass += ' calendar-day-weekend';\n }\n // Events\n let eventsHtml = '';\n hasEvents = false;\n if (params.events) {\n if (calendar.dateInRange(dayDate, params.events)) {\n hasEvents = true;\n }\n }\n if (hasEvents) {\n addClass += ' calendar-day-has-events';\n // prettier-ignore\n eventsHtml = `\n \n \n \n `;\n if (Array.isArray(params.events)) {\n const eventDots = [];\n params.events.forEach(ev => {\n const color = ev.color || '';\n if (eventDots.indexOf(color) < 0 && calendar.dateInRange(dayDate, ev)) {\n eventDots.push(color);\n }\n });\n // prettier-ignore\n eventsHtml = `\n \n ${eventDots.map(color => `\n \n `.trim()).join('')}\n \n `;\n }\n }\n // Custom Ranges\n if (params.rangesClasses) {\n for (let k = 0; k < params.rangesClasses.length; k += 1) {\n if (calendar.dateInRange(dayDate, params.rangesClasses[k].range)) {\n addClass += ` ${params.rangesClasses[k].cssClass}`;\n }\n }\n }\n // Disabled\n disabled = false;\n if (minDate && dayDate < minDate || maxDate && dayDate > maxDate) {\n disabled = true;\n }\n if (params.disabled) {\n if (calendar.dateInRange(dayDate, params.disabled)) {\n disabled = true;\n }\n }\n if (disabled) {\n addClass += ' calendar-day-disabled';\n }\n dayDate = new Date(dayDate);\n const dayYear = dayDate.getFullYear();\n const dayMonth = dayDate.getMonth();\n const dayNumberDisplay = calendar.dayFormatter(dayDate);\n // prettier-ignore\n rowHtml += `\n
                \n ${dayNumberDisplay}${eventsHtml}\n
                `.trim();\n }\n monthHtml += `
                ${rowHtml}
                `;\n }\n monthHtml = `
                ${monthHtml}
                `;\n return monthHtml;\n }\n renderWeekHeader() {\n const calendar = this;\n if (calendar.params.renderWeekHeader) {\n return calendar.params.renderWeekHeader.call(calendar);\n }\n const {\n params\n } = calendar;\n let weekDaysHtml = '';\n for (let i = 0; i < 7; i += 1) {\n const dayIndex = i + params.firstDay > 6 ? i - 7 + params.firstDay : i + params.firstDay;\n const dayName = calendar.dayNamesShort[dayIndex];\n weekDaysHtml += `
                ${dayName}
                `;\n }\n return $jsx(\"div\", {\n class: \"calendar-week-header\"\n }, weekDaysHtml);\n }\n renderMonthSelector() {\n const calendar = this;\n if (calendar.params.renderMonthSelector) {\n return calendar.params.renderMonthSelector.call(calendar);\n }\n return $jsx(\"div\", {\n class: \"calendar-month-selector\"\n }, $jsx(\"a\", {\n class: \"link icon-only calendar-prev-month-button\"\n }, $jsx(\"i\", {\n class: \"icon icon-prev\"\n })), calendar.params.monthPicker ? $jsx(\"a\", {\n class: \"current-month-value link\"\n }) : $jsx(\"span\", {\n class: \"current-month-value\"\n }), $jsx(\"a\", {\n class: \"link icon-only calendar-next-month-button\"\n }, $jsx(\"i\", {\n class: \"icon icon-next\"\n })));\n }\n renderYearSelector() {\n const calendar = this;\n if (calendar.params.renderYearSelector) {\n return calendar.params.renderYearSelector.call(calendar);\n }\n return $jsx(\"div\", {\n class: \"calendar-year-selector\"\n }, $jsx(\"a\", {\n class: \"link icon-only calendar-prev-year-button\"\n }, $jsx(\"i\", {\n class: \"icon icon-prev\"\n })), calendar.params.yearPicker ? $jsx(\"a\", {\n class: \"current-year-value link\"\n }) : $jsx(\"span\", {\n class: \"current-year-value\"\n }), $jsx(\"a\", {\n class: \"link icon-only calendar-next-year-button\"\n }, $jsx(\"i\", {\n class: \"icon icon-next\"\n })));\n }\n\n // eslint-disable-next-line\n renderTimeSelector() {\n const calendar = this;\n const value = calendar.value && calendar.value[0];\n let timeString;\n if (value) timeString = calendar.timeSelectorFormatter(value);\n return $jsx(\"div\", {\n class: \"calendar-time-selector\"\n }, $jsx(\"span\", null, calendar.params.timePickerLabel), $jsx(\"a\", {\n class: \"link\"\n }, timeString || calendar.params.timePickerPlaceholder));\n }\n renderHeader() {\n const calendar = this;\n if (calendar.params.renderHeader) {\n return calendar.params.renderHeader.call(calendar);\n }\n return $jsx(\"div\", {\n class: \"calendar-header\"\n }, $jsx(\"div\", {\n class: \"calendar-selected-date\"\n }, calendar.params.headerPlaceholder));\n }\n renderFooter() {\n const calendar = this;\n const app = calendar.app;\n if (calendar.params.renderFooter) {\n return calendar.params.renderFooter.call(calendar);\n }\n return $jsx(\"div\", {\n class: \"calendar-footer\"\n }, $jsx(\"a\", {\n class: `${app.theme === 'md' ? 'button button-round' : 'link'} calendar-close sheet-close popover-close`\n }, calendar.params.toolbarCloseText));\n }\n renderToolbar() {\n const calendar = this;\n if (calendar.params.renderToolbar) {\n return calendar.params.renderToolbar.call(calendar, calendar);\n }\n // prettier-ignore\n return $jsx(\"div\", {\n class: \"toolbar toolbar-top\"\n }, $jsx(\"div\", {\n class: \"toolbar-inner\"\n }, calendar.params.monthSelector ? calendar.renderMonthSelector() : '', calendar.params.yearSelector ? calendar.renderYearSelector() : ''));\n }\n // eslint-disable-next-line\n renderInline() {\n const calendar = this;\n const {\n cssClass,\n toolbar,\n header,\n footer,\n rangePicker,\n weekHeader\n } = calendar.params;\n const {\n value,\n hasTimePicker\n } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n return $jsx(\"div\", {\n class: `calendar calendar-inline ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`\n }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx(\"div\", {\n class: \"calendar-months\"\n }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter());\n }\n renderCustomModal() {\n const calendar = this;\n const {\n cssClass,\n toolbar,\n header,\n footer,\n rangePicker,\n weekHeader\n } = calendar.params;\n const {\n value,\n hasTimePicker\n } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n return $jsx(\"div\", {\n class: `calendar calendar-modal ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`\n }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx(\"div\", {\n class: \"calendar-months\"\n }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter());\n }\n renderSheet() {\n const calendar = this;\n const {\n cssClass,\n toolbar,\n header,\n footer,\n rangePicker,\n weekHeader\n } = calendar.params;\n const {\n value,\n hasTimePicker\n } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n return $jsx(\"div\", {\n class: `sheet-modal calendar calendar-sheet ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`\n }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx(\"div\", {\n class: \"sheet-modal-inner calendar-months\"\n }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter());\n }\n renderPopover() {\n const calendar = this;\n const {\n cssClass,\n toolbar,\n header,\n footer,\n rangePicker,\n weekHeader\n } = calendar.params;\n const {\n value,\n hasTimePicker\n } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n return $jsx(\"div\", {\n class: \"popover calendar-popover\"\n }, $jsx(\"div\", {\n class: \"popover-inner\"\n }, $jsx(\"div\", {\n class: `calendar ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`\n }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx(\"div\", {\n class: \"calendar-months\"\n }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter())));\n }\n render() {\n const calendar = this;\n const {\n params\n } = calendar;\n if (params.render) return params.render.call(calendar);\n if (!calendar.inline) {\n let modalType = params.openIn;\n if (modalType === 'auto') modalType = calendar.isPopover() ? 'popover' : 'sheet';\n if (modalType === 'popover') return calendar.renderPopover();\n if (modalType === 'sheet') return calendar.renderSheet();\n return calendar.renderCustomModal();\n }\n return calendar.renderInline();\n }\n openMonthPicker() {\n const calendar = this;\n const {\n $el,\n app\n } = calendar;\n if (!$el || !$el.length) return;\n $el.append('
                ');\n calendar.monthPickerPopover = app.popover.create({\n el: $el.find('.calendar-month-picker-popover'),\n targetEl: $el.find('.calendar-month-selector'),\n backdrop: true,\n backdropUnique: true,\n on: {\n close() {\n calendar.closeMonthPicker();\n },\n closed() {\n if (calendar.monthPickerPopover.$el) calendar.monthPickerPopover.$el.remove();\n calendar.monthPickerPopover.destroy();\n if (calendar.monthPickerInstance) {\n calendar.monthPickerInstance.close();\n calendar.monthPickerInstance.destroy();\n }\n delete calendar.monthPickerInstance;\n delete calendar.monthPickerPopover;\n }\n }\n });\n calendar.monthPickerPopover.open();\n const localeMonth = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);\n const values = [];\n const displayValues = [];\n calendar.monthNames.forEach((m, index) => {\n values.push(index);\n displayValues.push(m);\n });\n calendar.monthPickerInstance = app.picker.create({\n containerEl: calendar.monthPickerPopover.$el.find('.calendar-month-picker'),\n value: [localeMonth],\n toolbar: calendar.params.monthPickerToolbar,\n rotateEffect: false,\n toolbarCloseText: calendar.params.monthPickerCloseText,\n cols: [{\n values,\n displayValues\n }]\n });\n }\n closeMonthPicker() {\n const calendar = this;\n if (calendar.monthPickerPopover && calendar.monthPickerPopover.opened) calendar.monthPickerPopover.close();\n const index = calendar.monthPickerInstance.value[0];\n const localeMonthIndex = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);\n const monthIndex = calendar.currentMonth;\n const diff = localeMonthIndex - monthIndex;\n const diffIndex = index - diff;\n calendar.setYearMonth(calendar.currentYear, diffIndex, 0);\n }\n openYearPicker() {\n const calendar = this;\n const {\n $el,\n app\n } = calendar;\n if (!$el || !$el.length) return;\n $el.append('
                ');\n calendar.yearPickerPopover = app.popover.create({\n el: $el.find('.calendar-year-picker-popover'),\n targetEl: $el.find('.calendar-year-selector'),\n backdrop: true,\n backdropUnique: true,\n on: {\n close() {\n calendar.closeYearPicker();\n },\n closed() {\n if (calendar.yearPickerPopover.$el) calendar.yearPickerPopover.$el.remove();\n calendar.yearPickerPopover.destroy();\n if (calendar.yearPickerInstance) {\n calendar.yearPickerInstance.close();\n calendar.yearPickerInstance.destroy();\n }\n delete calendar.yearPickerInstance;\n delete calendar.yearPickerPopover;\n }\n }\n });\n calendar.yearPickerPopover.open();\n const currentYear = calendar.currentYear;\n let yearMin = calendar.params.yearPickerMin || new Date().getFullYear() - 100;\n if (calendar.params.minDate) {\n yearMin = Math.max(yearMin, new Date(calendar.params.minDate).getFullYear());\n }\n let yearMax = calendar.params.yearPickerMax || new Date().getFullYear() + 100;\n if (calendar.params.maxDate) {\n yearMax = Math.min(yearMax, new Date(calendar.params.maxDate).getFullYear());\n }\n const years = [];\n for (let i = yearMin; i <= yearMax; i += 1) {\n years.push(i);\n }\n calendar.yearPickerInstance = app.picker.create({\n containerEl: calendar.yearPickerPopover.$el.find('.calendar-year-picker'),\n value: [currentYear],\n toolbar: calendar.params.yearPickerToolbar,\n rotateEffect: false,\n toolbarCloseText: calendar.params.yearPickerCloseText,\n cols: [{\n values: years\n }]\n });\n }\n closeYearPicker() {\n const calendar = this;\n if (calendar.yearPickerPopover && calendar.yearPickerPopover.opened) calendar.yearPickerPopover.close();\n calendar.setYearMonth(calendar.yearPickerInstance.value[0], undefined, 0);\n }\n openTimePicker() {\n const calendar = this;\n const {\n $el,\n app,\n is12HoursFormat\n } = calendar;\n if (!$el || !$el.length) return;\n $el.append('
                ');\n const hoursArr = [];\n const minutesArr = [];\n const hoursMin = is12HoursFormat ? 1 : 0;\n const hoursMax = is12HoursFormat ? 12 : 23;\n for (let i = hoursMin; i <= hoursMax; i += 1) {\n hoursArr.push(i);\n }\n for (let i = 0; i <= 59; i += 1) {\n minutesArr.push(i);\n }\n let value;\n if (calendar.value && calendar.value.length) {\n value = [calendar.value[0].getHours(), calendar.value[0].getMinutes()];\n } else {\n value = [new Date().getHours(), new Date().getMinutes()];\n }\n if (is12HoursFormat) {\n value.push(value[0] < 12 ? 'AM' : 'PM');\n if (value[0] > 12) value[0] -= 12;\n if (value[0] === 0) value[0] = 12;\n }\n calendar.timePickerPopover = app.popover.create({\n el: $el.find('.calendar-time-picker-popover'),\n targetEl: $el.find('.calendar-time-selector .link'),\n backdrop: true,\n backdropUnique: true,\n on: {\n close() {\n calendar.closeTimePicker();\n },\n closed() {\n if (calendar.timePickerPopover.$el) calendar.timePickerPopover.$el.remove();\n calendar.timePickerPopover.destroy();\n if (calendar.timePickerInstance) {\n calendar.timePickerInstance.close();\n calendar.timePickerInstance.destroy();\n }\n delete calendar.timePickerInstance;\n delete calendar.timePickerPopover;\n }\n }\n });\n calendar.timePickerPopover.open();\n calendar.timePickerInstance = app.picker.create({\n containerEl: calendar.timePickerPopover.$el.find('.calendar-time-picker'),\n value,\n toolbar: calendar.params.timePickerToolbar,\n rotateEffect: false,\n toolbarCloseText: calendar.params.timePickerCloseText,\n cols: [{\n values: hoursArr\n }, {\n divider: true,\n content: ':'\n }, {\n values: minutesArr,\n displayValues: minutesArr.map(m => m < 10 ? `0${m}` : m)\n }, ...(is12HoursFormat ? [{\n values: ['AM', 'PM']\n }] : [])]\n });\n }\n closeTimePicker() {\n const calendar = this;\n const {\n is12HoursFormat\n } = calendar;\n if (calendar.timePickerInstance) {\n const timePickerValue = calendar.timePickerInstance.value;\n let hours = parseInt(timePickerValue[0], 10);\n const minutes = parseInt(timePickerValue[1], 10);\n const period = calendar.timePickerInstance.value[2];\n if (is12HoursFormat) {\n if (period === 'AM' && hours === 12) {\n hours = 0;\n } else if (period === 'PM' && hours !== 12) {\n hours += 12;\n }\n }\n let value = calendar.value && calendar.value.length && calendar.value[0];\n if (!value) {\n value = new Date();\n value.setHours(hours, minutes, 0, 0);\n } else {\n value = new Date(value);\n value.setHours(hours, minutes);\n }\n calendar.setValue([value]);\n if (calendar.timePickerPopover && calendar.timePickerPopover.opened) calendar.timePickerPopover.close();\n }\n }\n onOpen() {\n const calendar = this;\n const {\n initialized,\n $el,\n app,\n $inputEl,\n inline,\n value,\n params\n } = calendar;\n calendar.closing = false;\n calendar.opened = true;\n calendar.opening = true;\n\n // Init main events\n calendar.attachCalendarEvents();\n const updateValue = !value && params.value;\n\n // Set value\n if (!initialized) {\n if (value) calendar.setValue(value, 0);else if (params.value) {\n calendar.setValue(calendar.normalizeValues(params.value), 0);\n }\n } else if (value) {\n calendar.setValue(value, 0);\n }\n\n // Update current month and year\n calendar.updateCurrentMonthYear();\n\n // Set initial translate\n calendar.monthsTranslate = 0;\n calendar.setMonthsTranslate();\n\n // Update input value\n if (updateValue) calendar.updateValue();else if (params.header && value) {\n calendar.updateValue(true);\n }\n\n // Extra focus\n if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n calendar.initialized = true;\n calendar.$months.each(monthEl => {\n calendar.emit('local::monthAdd calendarMonthAdd', monthEl);\n });\n\n // Trigger events\n if ($el) {\n $el.trigger('calendar:open');\n }\n if ($inputEl) {\n $inputEl.trigger('calendar:open');\n }\n calendar.emit('local::open calendarOpen', calendar);\n }\n onOpened() {\n const calendar = this;\n calendar.opening = false;\n if (calendar.$el) {\n calendar.$el.trigger('calendar:opened');\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:opened');\n }\n calendar.emit('local::opened calendarOpened', calendar);\n }\n onClose() {\n const calendar = this;\n const app = calendar.app;\n calendar.opening = false;\n calendar.closing = true;\n if (calendar.$inputEl) {\n if (app.theme === 'md') {\n calendar.$inputEl.trigger('blur');\n } else {\n const validate = calendar.$inputEl.attr('validate');\n const required = calendar.$inputEl.attr('required');\n if (validate && required) {\n app.input.validate(calendar.$inputEl);\n }\n }\n }\n if (calendar.detachCalendarEvents) {\n calendar.detachCalendarEvents();\n }\n if (calendar.$el) {\n calendar.$el.trigger('calendar:close');\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:close');\n }\n calendar.emit('local::close calendarClose', calendar);\n }\n onClosed() {\n const calendar = this;\n calendar.opened = false;\n calendar.closing = false;\n if (!calendar.inline) {\n nextTick(() => {\n if (calendar.modal && calendar.modal.el && calendar.modal.destroy) {\n if (!calendar.params.routableModals) {\n calendar.modal.destroy();\n }\n }\n delete calendar.modal;\n });\n }\n if (calendar.timePickerInstance) {\n if (calendar.timePickerInstance.destroy) calendar.timePickerInstance.destroy();\n delete calendar.timePickerInstance;\n }\n if (calendar.$el) {\n calendar.$el.trigger('calendar:closed');\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:closed');\n }\n calendar.emit('local::closed calendarClosed', calendar);\n }\n open() {\n const calendar = this;\n const {\n app,\n opened,\n inline,\n $inputEl,\n params\n } = calendar;\n if (opened) return;\n if (inline) {\n calendar.$el = $(calendar.render());\n calendar.$el[0].f7Calendar = calendar;\n calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');\n calendar.$months = calendar.$wrapperEl.find('.calendar-month');\n calendar.$containerEl.append(calendar.$el);\n calendar.onOpen();\n calendar.onOpened();\n return;\n }\n let modalType = params.openIn;\n if (modalType === 'auto') {\n modalType = calendar.isPopover() ? 'popover' : 'sheet';\n }\n const modalContent = calendar.render();\n const modalParams = {\n targetEl: $inputEl,\n scrollToEl: params.scrollToInput ? $inputEl : undefined,\n content: modalContent,\n backdrop: params.backdrop === true || (modalType === 'popover' || modalType === 'customModal') && app.params.popover.backdrop !== false && params.backdrop !== false,\n closeByBackdropClick: params.closeByBackdropClick,\n on: {\n open() {\n const modal = this;\n calendar.modal = modal;\n calendar.$el = modalType === 'popover' ? modal.$el.find('.calendar') : modal.$el;\n calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');\n calendar.$months = calendar.$wrapperEl.find('.calendar-month');\n calendar.$el[0].f7Calendar = calendar;\n if (modalType === 'customModal') {\n $(calendar.$el).find('.calendar-close').once('click', () => {\n calendar.close();\n });\n }\n calendar.onOpen();\n },\n opened() {\n calendar.onOpened();\n },\n close() {\n calendar.onClose();\n },\n closed() {\n calendar.onClosed();\n }\n }\n };\n if (modalType === 'sheet') {\n modalParams.push = params.sheetPush;\n modalParams.swipeToClose = params.sheetSwipeToClose;\n }\n if (params.routableModals && calendar.view) {\n calendar.view.router.navigate({\n url: calendar.url,\n route: {\n path: calendar.url,\n [modalType]: modalParams\n }\n });\n } else {\n calendar.modal = app[modalType].create(modalParams);\n calendar.modal.open();\n }\n }\n close() {\n const calendar = this;\n const {\n opened,\n inline\n } = calendar;\n if (!opened) return;\n if (inline) {\n calendar.onClose();\n calendar.onClosed();\n return;\n }\n if (calendar.params.routableModals && calendar.view) {\n calendar.view.router.back();\n } else {\n calendar.modal.close();\n }\n }\n init() {\n const calendar = this;\n calendar.initInput();\n if (calendar.inline) {\n calendar.open();\n calendar.emit('local::init calendarInit', calendar);\n return;\n }\n if (!calendar.initialized && calendar.params.value) {\n calendar.setValue(calendar.normalizeValues(calendar.params.value));\n }\n\n // Attach input Events\n if (calendar.$inputEl) {\n calendar.attachInputEvents();\n }\n if (calendar.params.closeByOutsideClick) {\n calendar.attachHtmlEvents();\n }\n calendar.emit('local::init calendarInit', calendar);\n }\n destroy() {\n const calendar = this;\n if (calendar.destroyed) return;\n const {\n $el\n } = calendar;\n calendar.emit('local::beforeDestroy calendarBeforeDestroy', calendar);\n if ($el) $el.trigger('calendar:beforedestroy');\n calendar.close();\n\n // Detach Events\n if (calendar.$inputEl) {\n calendar.detachInputEvents();\n }\n if (calendar.params.closeByOutsideClick) {\n calendar.detachHtmlEvents();\n }\n if (calendar.timePickerInstance) {\n if (calendar.timePickerInstance.destroy) calendar.timePickerInstance.destroy();\n delete calendar.timePickerInstance;\n }\n if ($el && $el.length) delete calendar.$el[0].f7Calendar;\n deleteProps(calendar);\n calendar.destroyed = true;\n }\n}\nexport default Calendar;","import ConstructorMethods from '../../shared/constructor-methods.js';\nimport Calendar from './calendar-class.js';\nimport $ from '../../shared/dom7.js';\nexport default {\n name: 'calendar',\n static: {\n Calendar\n },\n create() {\n const app = this;\n app.calendar = ConstructorMethods({\n defaultSelector: '.calendar',\n constructor: Calendar,\n app,\n domProp: 'f7Calendar'\n });\n app.calendar.close = function close(el) {\n if (el === void 0) {\n el = '.calendar';\n }\n const $el = $(el);\n if ($el.length === 0) return;\n const calendar = $el[0].f7Calendar;\n if (!calendar || calendar && !calendar.opened) return;\n calendar.close();\n };\n },\n params: {\n calendar: {\n // Calendar settings\n dateFormat: undefined,\n monthNames: 'auto',\n monthNamesShort: 'auto',\n dayNames: 'auto',\n dayNamesShort: 'auto',\n locale: undefined,\n firstDay: 1,\n // First day of the week, Monday\n weekendDays: [0, 6],\n // Sunday and Saturday\n multiple: false,\n rangePicker: false,\n rangePickerMinDays: 1,\n // when calendar is used as rangePicker\n rangePickerMaxDays: 0,\n // when calendar is used as rangePicker, 0 means unlimited\n direction: 'horizontal',\n // or 'vertical'\n minDate: null,\n maxDate: null,\n disabled: null,\n // dates range of disabled days\n events: null,\n // dates range of days with events\n rangesClasses: null,\n // array with custom classes date ranges\n touchMove: true,\n animate: true,\n closeOnSelect: false,\n monthSelector: true,\n monthPicker: true,\n monthPickerToolbar: true,\n monthPickerCloseText: 'Done',\n yearSelector: true,\n yearPicker: true,\n yearPickerToolbar: true,\n yearPickerMin: undefined,\n yearPickerMax: undefined,\n yearPickerCloseText: 'Done',\n timePicker: false,\n timePickerToolbar: true,\n timePickerLabel: 'Time',\n timePickerFormat: {\n hour: 'numeric',\n minute: 'numeric'\n },\n timePickerPlaceholder: 'Select time',\n timePickerCloseText: 'Done',\n weekHeader: true,\n value: null,\n // Common opener settings\n containerEl: null,\n openIn: 'auto',\n // or 'popover' or 'sheet' or 'customModal'\n sheetPush: false,\n sheetSwipeToClose: undefined,\n formatValue: null,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n header: false,\n headerPlaceholder: 'Select date',\n toolbar: true,\n toolbarCloseText: 'Done',\n footer: false,\n cssClass: null,\n routableModals: false,\n view: null,\n url: 'date/',\n backdrop: null,\n closeByBackdropClick: true,\n // Render functions\n renderWeekHeader: null,\n renderMonths: null,\n renderMonth: null,\n renderMonthSelector: null,\n renderYearSelector: null,\n renderHeader: null,\n renderFooter: null,\n renderToolbar: null,\n renderInline: null,\n renderPopover: null,\n renderSheet: null,\n render: null\n }\n }\n};","import $ from '../../shared/dom7.js';\nexport default function pickerColumn(colEl, updateItems) {\n const picker = this;\n // const app = picker.app;\n const $colEl = $(colEl);\n const colIndex = $colEl.index();\n const col = picker.cols[colIndex];\n if (col.divider) return;\n col.$el = $colEl;\n col.el = $colEl[0];\n col.$itemsEl = col.$el.find('.picker-items');\n col.items = col.$itemsEl.find('.picker-item');\n let itemHeight;\n let colHeight;\n col.replaceValues = function replaceColValues(values, displayValues) {\n col.detachEvents();\n col.values = values;\n col.displayValues = displayValues;\n col.$itemsEl.html(picker.renderColumn(col, true));\n col.items = col.$itemsEl.find('.picker-item');\n col.calcSize();\n col.setValue(col.values[0], true);\n col.attachEvents();\n };\n col.calcSize = function calcColSize() {\n colHeight = col.$el[0].offsetHeight;\n itemHeight = col.items[0].offsetHeight;\n const hadPadding = col.el.style.getPropertyValue('--f7-picker-scroll-padding');\n col.el.style.setProperty('--f7-picker-scroll-padding', `${(colHeight - itemHeight) / 2}px`);\n if (!hadPadding) {\n col.$itemsEl[0].scrollTop = 0;\n }\n };\n col.setValue = function setColValue(newValue, valueCallbacks) {\n const newActiveIndex = col.$itemsEl.find(`.picker-item[data-picker-value=\"${newValue}\"]`).index();\n if (typeof newActiveIndex === 'undefined' || newActiveIndex === -1) {\n return;\n }\n const newScrollTop = newActiveIndex * itemHeight;\n col.$itemsEl[0].scrollTop = newScrollTop;\n\n // Update items\n col.updateItems(newActiveIndex, newScrollTop, valueCallbacks);\n };\n col.updateItems = function updateColItems(activeIndex, scrollTop, valueCallbacks) {\n if (typeof scrollTop === 'undefined') {\n // eslint-disable-next-line\n scrollTop = col.$itemsEl[0].scrollTop;\n }\n\n /* eslint-disable no-param-reassign */\n if (typeof activeIndex === 'undefined') {\n activeIndex = Math.round(scrollTop / itemHeight);\n }\n if (activeIndex < 0) activeIndex = 0;\n if (activeIndex >= col.items.length) activeIndex = col.items.length - 1;\n /* eslint-enable no-param-reassign */\n const previousActiveIndex = col.activeIndex;\n col.activeIndex = activeIndex;\n col.$itemsEl.find('.picker-item-selected').removeClass('picker-item-selected');\n const selectedItem = col.items.eq(activeIndex);\n selectedItem.addClass('picker-item-selected').children().transform('');\n // Set 3D rotate effect\n if (picker.params.rotateEffect) {\n col.items.each(itemEl => {\n const $itemEl = $(itemEl);\n const itemOffset = itemEl.offsetTop - (colHeight - itemHeight) / 2 - scrollTop;\n const percentage = itemOffset / itemHeight;\n const itemsFit = Math.ceil(col.height / itemHeight / 2) + 1;\n let angle = -24 * percentage;\n if (angle > 180) angle = 180;\n if (angle < -180) angle = -180;\n if (Math.abs(percentage) > itemsFit) {\n $itemEl.addClass('picker-item-far');\n } else {\n $itemEl.removeClass('picker-item-far');\n }\n $itemEl.children('span').transform(`translate3d(0, ${-percentage * itemHeight}px, -100px) rotateX(${angle}deg)`);\n });\n }\n if (valueCallbacks || typeof valueCallbacks === 'undefined') {\n // Update values\n col.value = selectedItem.attr('data-picker-value');\n col.displayValue = col.displayValues ? col.displayValues[activeIndex] : col.value;\n // On change callback\n if (previousActiveIndex !== activeIndex) {\n if (col.onChange) {\n col.onChange(picker, col.value, col.displayValue);\n }\n picker.updateValue();\n }\n }\n };\n function handleScroll() {\n col.updateItems();\n }\n function handleClick() {\n const value = $(this).attr('data-picker-value');\n col.setValue(value);\n }\n col.attachEvents = function attachColEvents() {\n col.$itemsEl.on('scroll', handleScroll);\n col.items.on('click', handleClick);\n };\n col.detachEvents = function detachColEvents() {\n col.items.off('click', handleClick);\n };\n col.init = function initCol() {\n col.calcSize();\n if (colIndex === 0) col.$el.addClass('picker-column-first');\n if (colIndex === picker.cols.length - 1) col.$el.addClass('picker-column-last');\n if (picker.params.freeMode) col.$el.addClass('picker-column-free-mode');\n // Update items on init\n if (updateItems) col.updateItems(0);\n col.attachEvents();\n };\n col.destroy = function destroyCol() {\n col.detachEvents();\n };\n col.init();\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport pickerColumn from './picker-column.js';\n\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Picker extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const picker = this;\n const device = getDevice();\n const window = getWindow();\n picker.params = extend({}, app.params.picker, params);\n let $containerEl;\n if (picker.params.containerEl) {\n $containerEl = $(picker.params.containerEl);\n if ($containerEl.length === 0) return picker;\n }\n let $inputEl;\n if (picker.params.inputEl) {\n $inputEl = $(picker.params.inputEl);\n }\n let $scrollToEl = picker.params.scrollToInput ? $inputEl : undefined;\n if (picker.params.scrollToEl) {\n const scrollToEl = $(picker.params.scrollToEl);\n if (scrollToEl.length > 0) {\n $scrollToEl = scrollToEl;\n }\n }\n extend(picker, {\n app,\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n needsOriginFix: device.ios || window.navigator.userAgent.toLowerCase().indexOf('safari') >= 0 && window.navigator.userAgent.toLowerCase().indexOf('chrome') < 0 && !device.android,\n cols: [],\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n $scrollToEl,\n initialized: false,\n opened: false,\n url: picker.params.url\n });\n function onResize() {\n picker.resizeCols();\n }\n function onInputClick() {\n picker.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n let htmlTouchStartTarget = null;\n function onHtmlTouchStart(e) {\n htmlTouchStartTarget = e.target;\n }\n function onHtmlClick(e) {\n if (picker.destroyed || !picker.params) return;\n const $targetEl = $(e.target);\n if (picker.isPopover()) return;\n if (!picker.opened || picker.closing) return;\n if ($targetEl.closest('[class*=\"backdrop\"]').length) return;\n if ($inputEl && $inputEl.length > 0) {\n if (htmlTouchStartTarget === e.target && $targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal').length === 0) {\n picker.close();\n }\n } else if ($(e.target).closest('.sheet-modal').length === 0) {\n picker.close();\n }\n }\n\n // Events\n extend(picker, {\n attachResizeEvent() {\n app.on('resize', onResize);\n },\n detachResizeEvent() {\n app.off('resize', onResize);\n },\n attachInputEvents() {\n picker.$inputEl.on('click', onInputClick);\n if (picker.params.inputReadOnly) {\n picker.$inputEl.on('focus mousedown', onInputFocus);\n if (picker.$inputEl[0]) {\n picker.$inputEl[0].f7ValidateReadonly = true;\n }\n }\n },\n detachInputEvents() {\n picker.$inputEl.off('click', onInputClick);\n if (picker.params.inputReadOnly) {\n picker.$inputEl.off('focus mousedown', onInputFocus);\n if (picker.$inputEl[0]) {\n delete picker.$inputEl[0].f7ValidateReadonly;\n }\n }\n },\n attachHtmlEvents() {\n app.on('click', onHtmlClick);\n app.on('touchstart', onHtmlTouchStart);\n },\n detachHtmlEvents() {\n app.off('click', onHtmlClick);\n app.off('touchstart', onHtmlTouchStart);\n }\n });\n picker.init();\n return picker;\n }\n get view() {\n const {\n app,\n params,\n $inputEl\n } = this;\n let view;\n if (params.view) {\n view = params.view;\n } else if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view) view = app.views.main;\n return view;\n }\n initInput() {\n const picker = this;\n if (!picker.$inputEl) return;\n if (picker.params.inputReadOnly) picker.$inputEl.prop('readOnly', true);\n }\n resizeCols() {\n const picker = this;\n if (!picker.opened) return;\n for (let i = 0; i < picker.cols.length; i += 1) {\n if (!picker.cols[i].divider) {\n picker.cols[i].calcSize();\n picker.cols[i].setValue(picker.cols[i].value, false);\n }\n }\n }\n isPopover() {\n const picker = this;\n const {\n app,\n modal,\n params\n } = picker;\n const device = getDevice();\n if (params.openIn === 'sheet') return false;\n if (modal && modal.type !== 'popover') return false;\n if (!picker.inline && picker.inputEl) {\n if (params.openIn === 'popover') return true;\n if (device.ios) {\n return !!device.ipad;\n }\n if (app.width >= 768) {\n return true;\n }\n }\n return false;\n }\n formatValue() {\n const picker = this;\n const {\n value,\n displayValue\n } = picker;\n if (picker.params.formatValue) {\n return picker.params.formatValue.call(picker, value, displayValue);\n }\n return value.join(' ');\n }\n setValue(values) {\n const picker = this;\n let valueIndex = 0;\n if (picker.cols.length === 0) {\n picker.value = values;\n picker.updateValue(values);\n return;\n }\n for (let i = 0; i < picker.cols.length; i += 1) {\n if (picker.cols[i] && !picker.cols[i].divider) {\n picker.cols[i].setValue(values[valueIndex]);\n valueIndex += 1;\n }\n }\n }\n getValue() {\n const picker = this;\n return picker.value;\n }\n updateValue(forceValues) {\n const picker = this;\n const newValue = forceValues || [];\n const newDisplayValue = [];\n let column;\n if (picker.cols.length === 0) {\n const noDividerColumns = picker.params.cols.filter(c => !c.divider);\n for (let i = 0; i < noDividerColumns.length; i += 1) {\n column = noDividerColumns[i];\n if (column.displayValues !== undefined && column.values !== undefined && column.values.indexOf(newValue[i]) !== -1) {\n newDisplayValue.push(column.displayValues[column.values.indexOf(newValue[i])]);\n } else {\n newDisplayValue.push(newValue[i]);\n }\n }\n } else {\n for (let i = 0; i < picker.cols.length; i += 1) {\n if (!picker.cols[i].divider) {\n newValue.push(picker.cols[i].value);\n newDisplayValue.push(picker.cols[i].displayValue);\n }\n }\n }\n if (newValue.indexOf(undefined) >= 0) {\n return;\n }\n picker.value = newValue;\n picker.displayValue = newDisplayValue;\n picker.emit('local::change pickerChange', picker, picker.value, picker.displayValue);\n if (picker.inputEl) {\n picker.$inputEl.val(picker.formatValue());\n picker.$inputEl.trigger('change');\n }\n }\n initColumn(colEl, updateItems) {\n const picker = this;\n pickerColumn.call(picker, colEl, updateItems);\n }\n // eslint-disable-next-line\n destroyColumn(colEl) {\n const picker = this;\n const $colEl = $(colEl);\n const index = $colEl.index();\n if (picker.cols[index] && picker.cols[index].destroy) {\n picker.cols[index].destroy();\n }\n }\n renderToolbar() {\n const picker = this;\n if (picker.params.renderToolbar) return picker.params.renderToolbar.call(picker, picker);\n return $jsx(\"div\", {\n class: \"toolbar toolbar-top\"\n }, $jsx(\"div\", {\n class: \"toolbar-inner\"\n }, $jsx(\"div\", {\n class: \"left\"\n }), $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link sheet-close popover-close\"\n }, picker.params.toolbarCloseText))));\n }\n // eslint-disable-next-line\n renderColumn(col, onlyItems) {\n const colClasses = `picker-column ${col.textAlign ? `picker-column-${col.textAlign}` : ''} ${col.cssClass || ''}`;\n let columnHtml;\n let columnItemsHtml;\n if (col.divider) {\n // prettier-ignore\n columnHtml = `\n
                ${col.content}
                \n `;\n } else {\n // prettier-ignore\n columnItemsHtml = col.values.map((value, index) => `\n
                \n ${col.displayValues ? col.displayValues[index] : value}\n
                \n `).join('');\n // prettier-ignore\n columnHtml = `\n
                \n
                ${columnItemsHtml}
                \n
                \n `;\n }\n return onlyItems ? columnItemsHtml.trim() : columnHtml.trim();\n }\n renderInline() {\n const picker = this;\n const {\n rotateEffect,\n cssClass,\n toolbar\n } = picker.params;\n const inlineHtml = $jsx(\"div\", {\n class: `picker picker-inline ${rotateEffect ? 'picker-3d' : ''} ${cssClass || ''}`\n }, toolbar && picker.renderToolbar(), $jsx(\"div\", {\n class: \"picker-columns\"\n }, picker.cols.map(col => picker.renderColumn(col)), $jsx(\"div\", {\n class: \"picker-center-highlight\"\n })));\n return inlineHtml;\n }\n renderSheet() {\n const picker = this;\n const {\n rotateEffect,\n cssClass,\n toolbar\n } = picker.params;\n const sheetHtml = $jsx(\"div\", {\n class: `sheet-modal picker picker-sheet ${rotateEffect ? 'picker-3d' : ''} ${cssClass || ''}`\n }, toolbar && picker.renderToolbar(), $jsx(\"div\", {\n class: \"sheet-modal-inner picker-columns\"\n }, picker.cols.map(col => picker.renderColumn(col)), $jsx(\"div\", {\n class: \"picker-center-highlight\"\n })));\n return sheetHtml;\n }\n renderPopover() {\n const picker = this;\n const {\n rotateEffect,\n cssClass,\n toolbar\n } = picker.params;\n const popoverHtml = $jsx(\"div\", {\n class: \"popover picker-popover\"\n }, $jsx(\"div\", {\n class: \"popover-inner\"\n }, $jsx(\"div\", {\n class: `picker ${rotateEffect ? 'picker-3d' : ''} ${cssClass || ''}`\n }, toolbar && picker.renderToolbar(), $jsx(\"div\", {\n class: \"picker-columns\"\n }, picker.cols.map(col => picker.renderColumn(col)), $jsx(\"div\", {\n class: \"picker-center-highlight\"\n })))));\n return popoverHtml;\n }\n render() {\n const picker = this;\n if (picker.params.render) return picker.params.render.call(picker);\n if (!picker.inline) {\n if (picker.isPopover()) return picker.renderPopover();\n return picker.renderSheet();\n }\n return picker.renderInline();\n }\n onOpen() {\n const picker = this;\n const {\n initialized,\n $el,\n app,\n $inputEl,\n inline,\n value,\n params\n } = picker;\n picker.opened = true;\n picker.closing = false;\n picker.opening = true;\n\n // Init main events\n picker.attachResizeEvent();\n\n // Init cols\n $el.find('.picker-column').each(colEl => {\n let updateItems = true;\n if (!initialized && params.value || initialized && value) {\n updateItems = false;\n }\n picker.initColumn(colEl, updateItems);\n });\n\n // Set value\n if (!initialized) {\n if (value) picker.setValue(value);else if (params.value) {\n picker.setValue(params.value);\n }\n } else if (value) {\n picker.setValue(value);\n }\n\n // Extra focus\n if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n picker.initialized = true;\n\n // Trigger events\n if ($el) {\n $el.trigger('picker:open');\n }\n if ($inputEl) {\n $inputEl.trigger('picker:open');\n }\n picker.emit('local::open pickerOpen', picker);\n }\n onOpened() {\n const picker = this;\n picker.opening = false;\n if (picker.$el) {\n picker.$el.trigger('picker:opened');\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:opened');\n }\n picker.emit('local::opened pickerOpened', picker);\n }\n onClose() {\n const picker = this;\n const app = picker.app;\n picker.opening = false;\n picker.closing = true;\n\n // Detach events\n picker.detachResizeEvent();\n picker.cols.forEach(col => {\n if (col.destroy) col.destroy();\n });\n if (picker.$inputEl) {\n if (app.theme === 'md') {\n picker.$inputEl.trigger('blur');\n } else {\n const validate = picker.$inputEl.attr('validate');\n const required = picker.$inputEl.attr('required');\n if (validate && required) {\n app.input.validate(picker.$inputEl);\n }\n }\n }\n if (picker.$el) {\n picker.$el.trigger('picker:close');\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:close');\n }\n picker.emit('local::close pickerClose', picker);\n }\n onClosed() {\n const picker = this;\n picker.opened = false;\n picker.closing = false;\n if (!picker.inline) {\n nextTick(() => {\n if (picker.modal && picker.modal.el && picker.modal.destroy) {\n if (!picker.params.routableModals) {\n picker.modal.destroy();\n }\n }\n delete picker.modal;\n });\n }\n if (picker.$el) {\n picker.$el.trigger('picker:closed');\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:closed');\n }\n picker.emit('local::closed pickerClosed', picker);\n }\n open() {\n const picker = this;\n const {\n app,\n opened,\n inline,\n $inputEl,\n $scrollToEl,\n params\n } = picker;\n if (opened) return;\n if (picker.cols.length === 0 && params.cols.length) {\n params.cols.forEach(col => {\n picker.cols.push(col);\n });\n }\n if (inline) {\n picker.$el = $(picker.render());\n picker.$el[0].f7Picker = picker;\n picker.$containerEl.append(picker.$el);\n picker.onOpen();\n picker.onOpened();\n return;\n }\n const isPopover = picker.isPopover();\n const modalType = isPopover ? 'popover' : 'sheet';\n const modalParams = {\n targetEl: $inputEl,\n scrollToEl: $scrollToEl,\n content: picker.render(),\n backdrop: typeof params.backdrop !== 'undefined' ? params.backdrop : isPopover,\n on: {\n open() {\n const modal = this;\n picker.modal = modal;\n picker.$el = isPopover ? modal.$el.find('.picker') : modal.$el;\n picker.$el[0].f7Picker = picker;\n picker.onOpen();\n },\n opened() {\n picker.onOpened();\n },\n close() {\n picker.onClose();\n },\n closed() {\n picker.onClosed();\n }\n }\n };\n if (modalType === 'sheet') {\n modalParams.push = params.sheetPush;\n modalParams.swipeToClose = params.sheetSwipeToClose;\n }\n if (params.routableModals && picker.view) {\n picker.view.router.navigate({\n url: picker.url,\n route: {\n path: picker.url,\n [modalType]: modalParams\n }\n });\n } else {\n picker.modal = app[modalType].create(modalParams);\n picker.modal.open();\n }\n }\n close() {\n const picker = this;\n const {\n opened,\n inline\n } = picker;\n if (!opened) return;\n if (inline) {\n picker.onClose();\n picker.onClosed();\n return;\n }\n if (picker.params.routableModals && picker.view) {\n picker.view.router.back();\n } else {\n picker.modal.close();\n }\n }\n init() {\n const picker = this;\n picker.initInput();\n if (picker.inline) {\n picker.open();\n picker.emit('local::init pickerInit', picker);\n return;\n }\n if (!picker.initialized && picker.params.value) {\n picker.setValue(picker.params.value);\n }\n\n // Attach input Events\n if (picker.$inputEl) {\n picker.attachInputEvents();\n }\n if (picker.params.closeByOutsideClick) {\n picker.attachHtmlEvents();\n }\n picker.emit('local::init pickerInit', picker);\n }\n destroy() {\n const picker = this;\n if (picker.destroyed) return;\n const {\n $el\n } = picker;\n picker.emit('local::beforeDestroy pickerBeforeDestroy', picker);\n if ($el) $el.trigger('picker:beforedestroy');\n picker.close();\n\n // Detach Events\n if (picker.$inputEl) {\n picker.detachInputEvents();\n }\n if (picker.params.closeByOutsideClick) {\n picker.detachHtmlEvents();\n }\n if ($el && $el.length) delete picker.$el[0].f7Picker;\n deleteProps(picker);\n picker.destroyed = true;\n }\n}\nexport default Picker;","import $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport Picker from './picker-class.js';\nexport default {\n name: 'picker',\n static: {\n Picker\n },\n create() {\n const app = this;\n app.picker = ConstructorMethods({\n defaultSelector: '.picker',\n constructor: Picker,\n app,\n domProp: 'f7Picker'\n });\n app.picker.close = function close(el) {\n if (el === void 0) {\n el = '.picker';\n }\n const $el = $(el);\n if ($el.length === 0) return;\n const picker = $el[0].f7Picker;\n if (!picker || picker && !picker.opened) return;\n picker.close();\n };\n },\n params: {\n picker: {\n // Picker settings\n rotateEffect: false,\n freeMode: false,\n cols: [],\n // Common opener settings\n containerEl: null,\n openIn: 'auto',\n // or 'popover' or 'sheet'\n sheetPush: false,\n sheetSwipeToClose: undefined,\n backdrop: undefined,\n // uses Popover or Sheet defaults\n formatValue: null,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n scrollToEl: undefined,\n toolbar: true,\n toolbarCloseText: 'Done',\n cssClass: null,\n routableModals: false,\n view: null,\n url: 'select/',\n // Render functions\n renderToolbar: null,\n render: null\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nconst InfiniteScroll = {\n handle(el, e) {\n const app = this;\n const $el = $(el);\n const scrollTop = $el[0].scrollTop;\n const scrollHeight = $el[0].scrollHeight;\n const height = $el[0].offsetHeight;\n let distance = $el[0].getAttribute('data-infinite-distance');\n const virtualListContainer = $el.find('.virtual-list');\n let virtualList;\n const onTop = $el.hasClass('infinite-scroll-top');\n if (!distance) distance = 50;\n if (typeof distance === 'string' && distance.indexOf('%') >= 0) {\n distance = parseInt(distance, 10) / 100 * height;\n }\n if (distance > height) distance = height;\n if (onTop) {\n if (scrollTop < distance) {\n $el.trigger('infinite', e);\n app.emit('infinite', $el[0], e);\n }\n } else if (scrollTop + height >= scrollHeight - distance) {\n if (virtualListContainer.length > 0) {\n virtualList = virtualListContainer.eq(-1)[0].f7VirtualList;\n if (virtualList && !virtualList.reachEnd && !virtualList.params.updatableScroll) {\n return;\n }\n }\n $el.trigger('infinite', e);\n app.emit('infinite', $el[0], e);\n }\n },\n create(el) {\n const $el = $(el);\n const app = this;\n function scrollHandler(e) {\n app.infiniteScroll.handle(this, e);\n }\n $el.each(element => {\n element.f7InfiniteScrollHandler = scrollHandler;\n element.addEventListener('scroll', element.f7InfiniteScrollHandler);\n });\n },\n destroy(el) {\n const $el = $(el);\n $el.each(element => {\n element.removeEventListener('scroll', element.f7InfiniteScrollHandler);\n delete element.f7InfiniteScrollHandler;\n });\n }\n};\nexport default {\n name: 'infiniteScroll',\n create() {\n const app = this;\n bindMethods(app, {\n infiniteScroll: InfiniteScroll\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n const $isEls = $tabEl.find('.infinite-scroll-content');\n if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);\n $isEls.each(el => {\n app.infiniteScroll.create(el);\n });\n },\n tabBeforeRemove(tabEl) {\n const $tabEl = $(tabEl);\n const app = this;\n const $isEls = $tabEl.find('.infinite-scroll-content');\n if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);\n $isEls.each(el => {\n app.infiniteScroll.destroy(el);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.infinite-scroll-content').each(el => {\n app.infiniteScroll.create(el);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.infinite-scroll-content').each(el => {\n app.infiniteScroll.destroy(el);\n });\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nclass PullToRefresh extends Framework7Class {\n constructor(app, el) {\n super({}, [app]);\n const ptr = this;\n const device = getDevice();\n const support = getSupport();\n const $el = $(el);\n const $preloaderEl = $el.find('.ptr-preloader');\n ptr.$el = $el;\n ptr.el = $el[0];\n ptr.app = app;\n ptr.bottom = ptr.$el.hasClass('ptr-bottom');\n\n // Extend defaults with modules params\n ptr.useModulesParams({});\n const isMaterial = app.theme === 'md';\n const isIos = app.theme === 'ios';\n\n // Done\n ptr.done = function done() {\n const $transitionTarget = isMaterial ? $preloaderEl : $el;\n const onTranstionEnd = e => {\n if ($(e.target).closest($preloaderEl).length) return;\n $el.removeClass('ptr-transitioning ptr-pull-up ptr-pull-down ptr-closing');\n $el.trigger('ptr:done');\n ptr.emit('local::done ptrDone', $el[0]);\n $transitionTarget.off('transitionend', onTranstionEnd);\n };\n $transitionTarget.on('transitionend', onTranstionEnd);\n $el.removeClass('ptr-refreshing').addClass('ptr-transitioning ptr-closing');\n return ptr;\n };\n ptr.refresh = function refresh() {\n if ($el.hasClass('ptr-refreshing')) return ptr;\n $el.addClass('ptr-transitioning ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n return ptr;\n };\n\n // Mousewheel\n ptr.mousewheel = $el.attr('data-ptr-mousewheel') === 'true';\n\n // Events handling\n let touchId;\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let isScrolling;\n let touchesDiff;\n let refresh = false;\n let useTranslate = false;\n let forceUseTranslate = false;\n let startTranslate = 0;\n let translate;\n let scrollTop;\n let wasScrolled;\n let triggerDistance;\n let dynamicTriggerDistance;\n let pullStarted;\n let hasNavbar = false;\n let scrollHeight;\n let offsetHeight;\n let maxScrollTop;\n const $pageEl = $el.parents('.page');\n if ($pageEl.find('.navbar').length > 0 || $pageEl.parents('.view').children('.navbars').length > 0) hasNavbar = true;\n if ($pageEl.hasClass('no-navbar')) hasNavbar = false;\n if (!ptr.bottom) {\n const pageNavbarEl = app.navbar.getElByPage($pageEl[0]);\n if (pageNavbarEl) {\n const $pageNavbarEl = $(pageNavbarEl);\n const isLargeTransparent = $pageNavbarEl.hasClass('navbar-large-transparent') || $pageNavbarEl.hasClass('navbar-large') && $pageNavbarEl.hasClass('navbar-transparent');\n const isTransparent = $pageNavbarEl.hasClass('navbar-transparent') && !$pageNavbarEl.hasClass('navbar-large');\n if (isLargeTransparent) {\n $el.addClass('ptr-with-navbar-large-transparent');\n } else if (isTransparent) {\n $el.addClass('ptr-with-navbar-transparent');\n }\n }\n }\n if (!hasNavbar && !ptr.bottom) $el.addClass('ptr-no-navbar');\n\n // Define trigger distance\n if ($el.attr('data-ptr-distance')) {\n dynamicTriggerDistance = true;\n } else if (isMaterial) {\n triggerDistance = 66;\n } else if (isIos) {\n triggerDistance = 44;\n }\n function setPreloaderProgress(progress) {\n if (progress === void 0) {\n progress = 0;\n }\n const $bars = $preloaderEl.find('.preloader-inner-line');\n const perBarProgress = 1 / $bars.length;\n $bars.forEach((barEl, barIndex) => {\n const barProgress = (progress - barIndex * perBarProgress) / perBarProgress;\n barEl.style.opacity = Math.max(Math.min(barProgress, 1), 0) * 0.27;\n });\n }\n function unsetPreloaderProgress() {\n $preloaderEl.find('.preloader-inner-line').css('opacity', '');\n }\n function handleTouchStart(e) {\n if (!e.isTrusted) return;\n if (isTouched) {\n if (device.os === 'android') {\n if ('targetTouches' in e && e.targetTouches.length > 1) return;\n } else return;\n }\n if ($el.hasClass('ptr-refreshing')) {\n return;\n }\n if ($(e.target).closest('.sortable-handler, .ptr-ignore, .card-expandable.card-opened').length) return;\n isMoved = false;\n pullStarted = false;\n isTouched = true;\n isScrolling = undefined;\n wasScrolled = undefined;\n if (e.type === 'touchstart') touchId = e.targetTouches[0].identifier;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function handleTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n let pageX;\n let pageY;\n let touch;\n if (e.type === 'touchmove') {\n if (touchId && e.touches) {\n for (let i = 0; i < e.touches.length; i += 1) {\n if (e.touches[i].identifier === touchId) {\n touch = e.touches[i];\n }\n }\n }\n if (!touch) touch = e.targetTouches[0];\n pageX = touch.pageX;\n pageY = touch.pageY;\n } else {\n pageX = e.pageX;\n pageY = e.pageY;\n }\n if (!pageX || !pageY) return;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (!isScrolling) {\n isTouched = false;\n return;\n }\n scrollTop = $el[0].scrollTop;\n if (!isMoved) {\n $el.removeClass('ptr-transitioning');\n if (isIos) {\n setPreloaderProgress(0);\n }\n let targetIsScrollable;\n scrollHeight = $el[0].scrollHeight;\n offsetHeight = $el[0].offsetHeight;\n if (ptr.bottom) {\n maxScrollTop = scrollHeight - offsetHeight;\n }\n if (scrollTop > scrollHeight) {\n isTouched = false;\n return;\n }\n const $ptrWatchScrollable = $(e.target).closest('.ptr-watch-scroll');\n if ($ptrWatchScrollable.length) {\n $ptrWatchScrollable.each(ptrScrollableEl => {\n if (ptrScrollableEl === el) return;\n if (ptrScrollableEl.scrollHeight > ptrScrollableEl.offsetHeight && $(ptrScrollableEl).css('overflow') === 'auto' && (!ptr.bottom && ptrScrollableEl.scrollTop > 0 || ptr.bottom && ptrScrollableEl.scrollTop < ptrScrollableEl.scrollHeight - ptrScrollableEl.offsetHeight)) {\n targetIsScrollable = true;\n }\n });\n }\n if (targetIsScrollable) {\n isTouched = false;\n return;\n }\n if (dynamicTriggerDistance) {\n triggerDistance = $el.attr('data-ptr-distance');\n if (triggerDistance.indexOf('%') >= 0) triggerDistance = scrollHeight * parseInt(triggerDistance, 10) / 100;\n }\n startTranslate = $el.hasClass('ptr-refreshing') ? triggerDistance : 0;\n if (scrollHeight === offsetHeight || device.os !== 'ios' || isMaterial) {\n useTranslate = true;\n } else {\n useTranslate = false;\n }\n forceUseTranslate = false;\n }\n isMoved = true;\n touchesDiff = pageY - touchesStart.y;\n if (typeof wasScrolled === 'undefined' && (ptr.bottom ? scrollTop !== maxScrollTop : scrollTop !== 0)) wasScrolled = true;\n const ptrStarted = ptr.bottom ? touchesDiff < 0 && scrollTop >= maxScrollTop || scrollTop > maxScrollTop : touchesDiff > 0 && scrollTop <= 0 || scrollTop < 0;\n if (ptrStarted) {\n // iOS 8 fix\n if (device.os === 'ios' && parseInt(device.osVersion.split('.')[0], 10) > 7) {\n if (!ptr.bottom && scrollTop === 0 && !wasScrolled) useTranslate = true;\n if (ptr.bottom && scrollTop === maxScrollTop && !wasScrolled) useTranslate = true;\n }\n if (!useTranslate && ptr.bottom && !isMaterial) {\n $el.css('-webkit-overflow-scrolling', 'auto');\n $el.scrollTop(maxScrollTop);\n forceUseTranslate = true;\n }\n if (useTranslate || forceUseTranslate) {\n if (e.cancelable) {\n e.preventDefault();\n }\n translate = (ptr.bottom ? -1 * Math.abs(touchesDiff) ** 0.85 : touchesDiff ** 0.85) + startTranslate;\n if (isMaterial) {\n $preloaderEl.transform(`translate3d(0,${translate}px,0)`).find('.ptr-arrow').transform(`rotate(${180 * (Math.abs(touchesDiff) / 66) + 100}deg)`);\n } else {\n // eslint-disable-next-line\n if (ptr.bottom || isIos) {\n $el.children().transform(`translate3d(0,${translate}px,0)`);\n } else {\n // eslint-disable-next-line\n $el.transform(`translate3d(0,${translate}px,0)`);\n }\n if (isIos) {\n $preloaderEl.transform(`translate3d(0,0px,0)`);\n }\n }\n } else if (isIos && !ptr.bottom) {\n $preloaderEl.transform(`translate3d(0,${scrollTop}px,0)`);\n }\n let progress;\n if (isIos && !refresh) {\n progress = useTranslate || forceUseTranslate ? Math.abs(touchesDiff) ** 0.85 / triggerDistance : Math.abs(touchesDiff) / (triggerDistance * 2);\n setPreloaderProgress(progress);\n }\n if ((useTranslate || forceUseTranslate) && Math.abs(touchesDiff) ** 0.85 > triggerDistance || !useTranslate && Math.abs(touchesDiff) >= triggerDistance * 2) {\n refresh = true;\n $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');\n unsetPreloaderProgress();\n } else {\n refresh = false;\n $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');\n }\n if (!pullStarted) {\n $el.trigger('ptr:pullstart');\n ptr.emit('local::pullStart ptrPullStart', $el[0]);\n pullStarted = true;\n }\n $el.trigger('ptr:pullmove', {\n event: e,\n scrollTop,\n translate,\n touchesDiff\n });\n ptr.emit('local::pullMove ptrPullMove', $el[0], {\n event: e,\n scrollTop,\n translate,\n touchesDiff\n });\n } else {\n pullStarted = false;\n $el.removeClass('ptr-pull-up ptr-pull-down');\n refresh = false;\n }\n }\n function handleTouchEnd(e) {\n if (!e.isTrusted) return;\n if (e.type === 'touchend' && e.changedTouches && e.changedTouches.length > 0 && touchId) {\n if (e.changedTouches[0].identifier !== touchId) {\n isTouched = false;\n isScrolling = false;\n isMoved = false;\n touchId = null;\n return;\n }\n }\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n if (translate) {\n $el.addClass('ptr-transitioning');\n translate = 0;\n }\n if (isMaterial) {\n $preloaderEl.transform('').find('.ptr-arrow').transform('');\n } else {\n $preloaderEl.transform('');\n if (ptr.bottom || isIos) {\n $el.children().transform('');\n } else {\n $el.transform('');\n }\n }\n if (!useTranslate && ptr.bottom && !isMaterial) {\n $el.css('-webkit-overflow-scrolling', '');\n }\n if (refresh) {\n $el.addClass('ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n } else {\n $el.removeClass('ptr-pull-down');\n }\n isTouched = false;\n isMoved = false;\n if (pullStarted) {\n $el.trigger('ptr:pullend');\n ptr.emit('local::pullEnd ptrPullEnd', $el[0]);\n }\n }\n let mousewheelTimeout;\n let mousewheelMoved;\n let mousewheelAllow = true;\n let mousewheelTranslate = 0;\n function handleMouseWheelRelease() {\n mousewheelAllow = true;\n mousewheelMoved = false;\n mousewheelTranslate = 0;\n if (translate) {\n $el.addClass('ptr-transitioning');\n translate = 0;\n }\n if (isMaterial) {\n $preloaderEl.transform('').find('.ptr-arrow').transform('');\n } else {\n $preloaderEl.transform('');\n if (ptr.bottom) {\n $el.children().transform('');\n } else {\n $el.transform('');\n }\n }\n if (refresh) {\n $el.addClass('ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n } else {\n $el.removeClass('ptr-pull-down');\n }\n if (pullStarted) {\n $el.trigger('ptr:pullend');\n ptr.emit('local::pullEnd ptrPullEnd', $el[0]);\n }\n }\n function handleMouseWheel(e) {\n if (!mousewheelAllow) return;\n const {\n deltaX,\n deltaY\n } = e;\n if (Math.abs(deltaX) > Math.abs(deltaY)) return;\n if ($el.hasClass('ptr-refreshing')) {\n return;\n }\n if ($(e.target).closest('.sortable-handler, .ptr-ignore, .card-expandable.card-opened').length) return;\n clearTimeout(mousewheelTimeout);\n scrollTop = $el[0].scrollTop;\n if (!mousewheelMoved) {\n $el.removeClass('ptr-transitioning');\n if (isIos) {\n setPreloaderProgress(0);\n }\n let targetIsScrollable;\n scrollHeight = $el[0].scrollHeight;\n offsetHeight = $el[0].offsetHeight;\n if (ptr.bottom) {\n maxScrollTop = scrollHeight - offsetHeight;\n }\n if (scrollTop > scrollHeight) {\n mousewheelAllow = false;\n return;\n }\n const $ptrWatchScrollable = $(e.target).closest('.ptr-watch-scroll');\n if ($ptrWatchScrollable.length) {\n $ptrWatchScrollable.each(ptrScrollableEl => {\n if (ptrScrollableEl === el) return;\n if (ptrScrollableEl.scrollHeight > ptrScrollableEl.offsetHeight && $(ptrScrollableEl).css('overflow') === 'auto' && (!ptr.bottom && ptrScrollableEl.scrollTop > 0 || ptr.bottom && ptrScrollableEl.scrollTop < ptrScrollableEl.scrollHeight - ptrScrollableEl.offsetHeight)) {\n targetIsScrollable = true;\n }\n });\n }\n if (targetIsScrollable) {\n mousewheelAllow = false;\n return;\n }\n if (dynamicTriggerDistance) {\n triggerDistance = $el.attr('data-ptr-distance');\n if (triggerDistance.indexOf('%') >= 0) triggerDistance = scrollHeight * parseInt(triggerDistance, 10) / 100;\n }\n }\n isMoved = true;\n mousewheelTranslate -= deltaY;\n touchesDiff = mousewheelTranslate; // pageY - touchesStart.y;\n\n if (typeof wasScrolled === 'undefined' && (ptr.bottom ? scrollTop !== maxScrollTop : scrollTop !== 0)) wasScrolled = true;\n const ptrStarted = ptr.bottom ? touchesDiff < 0 && scrollTop >= maxScrollTop || scrollTop > maxScrollTop : touchesDiff > 0 && scrollTop <= 0 || scrollTop < 0;\n if (ptrStarted) {\n if (e.cancelable) {\n e.preventDefault();\n }\n translate = touchesDiff;\n if (Math.abs(translate) > triggerDistance) {\n translate = triggerDistance + (Math.abs(translate) - triggerDistance) ** 0.7;\n if (ptr.bottom) translate = -translate;\n }\n if (isMaterial) {\n $preloaderEl.transform(`translate3d(0,${translate}px,0)`).find('.ptr-arrow').transform(`rotate(${180 * (Math.abs(touchesDiff) / 66) + 100}deg)`);\n } else {\n // eslint-disable-next-line\n if (ptr.bottom) {\n $el.children().transform(`translate3d(0,${translate}px,0)`);\n } else {\n $el.transform(`translate3d(0,${translate}px,0)`);\n if (isIos) {\n $preloaderEl.transform(`translate3d(0,${-translate}px,0)`);\n }\n }\n }\n let progress;\n if (isIos && !refresh) {\n progress = Math.abs(translate) / triggerDistance;\n setPreloaderProgress(progress);\n }\n if (Math.abs(translate) > triggerDistance) {\n refresh = true;\n $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');\n unsetPreloaderProgress();\n } else {\n refresh = false;\n $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');\n }\n if (!pullStarted) {\n $el.trigger('ptr:pullstart');\n ptr.emit('local::pullStart ptrPullStart', $el[0]);\n pullStarted = true;\n }\n $el.trigger('ptr:pullmove', {\n event: e,\n scrollTop,\n translate,\n touchesDiff\n });\n ptr.emit('local::pullMove ptrPullMove', $el[0], {\n event: e,\n scrollTop,\n translate,\n touchesDiff\n });\n } else {\n pullStarted = false;\n $el.removeClass('ptr-pull-up ptr-pull-down');\n refresh = false;\n }\n mousewheelTimeout = setTimeout(handleMouseWheelRelease, 300);\n }\n if (!$pageEl.length || !$el.length) return ptr;\n $el[0].f7PullToRefresh = ptr;\n\n // Events\n ptr.attachEvents = function attachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n if (ptr.mousewheel && !ptr.bottom) {\n $el.on('wheel', handleMouseWheel);\n }\n };\n ptr.detachEvents = function detachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n if (ptr.mousewheel && !ptr.bottom) {\n $el.off('wheel', handleMouseWheel);\n }\n };\n\n // Install Modules\n ptr.useModules();\n\n // Init\n ptr.init();\n return ptr;\n }\n init() {\n const ptr = this;\n ptr.attachEvents();\n }\n destroy() {\n let ptr = this;\n ptr.emit('local::beforeDestroy ptrBeforeDestroy', ptr);\n ptr.$el.trigger('ptr:beforedestroy');\n delete ptr.el.f7PullToRefresh;\n ptr.detachEvents();\n deleteProps(ptr);\n ptr = null;\n }\n}\nexport default PullToRefresh;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport PullToRefresh from './pull-to-refresh-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'pullToRefresh',\n create() {\n const app = this;\n app.ptr = extend(ConstructorMethods({\n defaultSelector: '.ptr-content',\n constructor: PullToRefresh,\n app,\n domProp: 'f7PullToRefresh'\n }), {\n done(el) {\n const ptr = app.ptr.get(el);\n if (ptr) return ptr.done();\n return undefined;\n },\n refresh(el) {\n const ptr = app.ptr.get(el);\n if (ptr) return ptr.refresh();\n return undefined;\n }\n });\n },\n static: {\n PullToRefresh\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n const $ptrEls = $tabEl.find('.ptr-content');\n if ($tabEl.is('.ptr-content')) $ptrEls.add($tabEl);\n $ptrEls.each(el => {\n app.ptr.create(el);\n });\n },\n tabBeforeRemove(tabEl) {\n const $tabEl = $(tabEl);\n const app = this;\n const $ptrEls = $tabEl.find('.ptr-content');\n if ($tabEl.is('.ptr-content')) $ptrEls.add($tabEl);\n $ptrEls.each(el => {\n app.ptr.destroy(el);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.ptr-content').each(el => {\n app.ptr.create(el);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.ptr-content').each(el => {\n app.ptr.destroy(el);\n });\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nclass DataTable extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const table = this;\n const defaults = {};\n\n // Extend defaults with modules params\n table.useModulesParams(defaults);\n table.params = extend(defaults, params);\n\n // El\n const $el = $(table.params.el);\n if ($el.length === 0) return undefined;\n table.$el = $el;\n table.el = $el[0];\n if (table.$el[0].f7DataTable) {\n const instance = table.$el[0].f7DataTable;\n table.destroy();\n return instance;\n }\n table.$el[0].f7DataTable = table;\n extend(table, {\n collapsible: $el.hasClass('data-table-collapsible'),\n // Headers\n $headerEl: $el.find('.data-table-header'),\n $headerSelectedEl: $el.find('.data-table-header-selected')\n });\n\n // Events\n function handleChange(e) {\n if (e.detail && e.detail.sentByF7DataTable) {\n // Scripted event, don't do anything\n return;\n }\n const $inputEl = $(this);\n const checked = $inputEl[0].checked;\n const columnIndex = $inputEl.parents('td,th').index();\n if ($inputEl.parents('thead').length > 0) {\n if (columnIndex === 0) {\n $el.find('tbody tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');\n }\n $el.find(`tbody tr td:nth-child(${columnIndex + 1}) input`).prop('checked', checked).trigger('change', {\n sentByF7DataTable: true\n });\n $inputEl.prop('indeterminate', false);\n } else {\n if (columnIndex === 0) {\n $inputEl.parents('tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');\n }\n const checkedRows = $el.find(`tbody .checkbox-cell:nth-child(${columnIndex + 1}) input[type=\"checkbox\"]:checked`).length;\n const totalRows = $el.find('tbody tr').length;\n const $headCheckboxEl = $el.find(`thead .checkbox-cell:nth-child(${columnIndex + 1}) input[type=\"checkbox\"]`);\n if (!checked) {\n $headCheckboxEl.prop('checked', false);\n } else if (checkedRows === totalRows) {\n $headCheckboxEl.prop('checked', true).trigger('change', {\n sentByF7DataTable: true\n });\n }\n $headCheckboxEl.prop('indeterminate', checkedRows > 0 && checkedRows < totalRows);\n }\n table.checkSelectedHeader();\n }\n function handleSortableClick() {\n const $cellEl = $(this);\n const isActive = $cellEl.hasClass('sortable-cell-active');\n const currentSort = $cellEl.hasClass('sortable-desc') ? 'desc' : 'asc';\n let newSort;\n if (isActive) {\n newSort = currentSort === 'desc' ? 'asc' : 'desc';\n $cellEl.removeClass('sortable-desc sortable-asc').addClass(`sortable-${newSort}`);\n } else {\n $el.find('thead .sortable-cell-active').removeClass('sortable-cell-active');\n $cellEl.addClass('sortable-cell-active');\n newSort = currentSort;\n }\n $cellEl.trigger('datatable:sort', newSort);\n table.emit('local::sort dataTableSort', table, newSort);\n }\n table.attachEvents = function attachEvents() {\n table.$el.on('change', '.checkbox-cell input[type=\"checkbox\"]', handleChange);\n table.$el.find('thead .sortable-cell').on('click', handleSortableClick);\n };\n table.detachEvents = function detachEvents() {\n table.$el.off('change', '.checkbox-cell input[type=\"checkbox\"]', handleChange);\n table.$el.find('thead .sortable-cell').off('click', handleSortableClick);\n };\n\n // Install Modules\n table.useModules();\n\n // Init\n table.init();\n return table;\n }\n setCollapsibleLabels() {\n const table = this;\n if (!table.collapsible) return;\n table.$el.find('tbody td:not(.checkbox-cell)').each(el => {\n const $el = $(el);\n const elIndex = $el.index();\n const collapsibleTitle = $el.attr('data-collapsible-title');\n if (!collapsibleTitle && collapsibleTitle !== '') {\n $el.attr('data-collapsible-title', table.$el.find('thead th').eq(elIndex).text());\n }\n });\n }\n checkSelectedHeader() {\n const table = this;\n if (table.$headerEl.length > 0 && table.$headerSelectedEl.length > 0) {\n const checkedItems = table.$el.find('tbody .checkbox-cell input:checked').length;\n table.$el[checkedItems > 0 ? 'addClass' : 'removeClass']('data-table-has-checked');\n table.$headerSelectedEl.find('.data-table-selected-count').text(checkedItems);\n }\n }\n init() {\n const table = this;\n table.attachEvents();\n table.setCollapsibleLabels();\n table.checkSelectedHeader();\n }\n destroy() {\n let table = this;\n table.$el.trigger('datatable:beforedestroy');\n table.emit('local::beforeDestroy dataTableBeforeDestroy', table);\n table.detachEvents();\n if (table.$el[0]) {\n table.$el[0].f7DataTable = null;\n delete table.$el[0].f7DataTable;\n }\n deleteProps(table);\n table = null;\n }\n}\nexport default DataTable;","import $ from '../../shared/dom7.js';\nimport DataTable from './data-table-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'dataTable',\n static: {\n DataTable\n },\n create() {\n const app = this;\n app.dataTable = ConstructorMethods({\n defaultSelector: '.data-table',\n constructor: DataTable,\n app,\n domProp: 'f7DataTable'\n });\n },\n on: {\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.data-table-init').each(tableEl => {\n app.dataTable.destroy(tableEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.data-table-init').each(tableEl => {\n app.dataTable.create({\n el: tableEl\n });\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.data-table-init').each(tableEl => {\n app.dataTable.destroy(tableEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.data-table-init').each(tableEl => {\n app.dataTable.create({\n el: tableEl\n });\n });\n }\n },\n vnode: {\n 'data-table-init': {\n insert(vnode) {\n const app = this;\n const tableEl = vnode.elm;\n app.dataTable.create({\n el: tableEl\n });\n },\n destroy(vnode) {\n const app = this;\n const tableEl = vnode.elm;\n app.dataTable.destroy(tableEl);\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { bindMethods, getTranslate, nextFrame } from '../../shared/utils.js';\nconst Fab = {\n morphOpen(fabEl, targetEl) {\n const app = this;\n const $fabEl = $(fabEl);\n const $targetEl = $(targetEl);\n if ($targetEl.length === 0) return;\n $targetEl.transition(0).addClass('fab-morph-target-visible');\n const target = {\n width: $targetEl[0].offsetWidth,\n height: $targetEl[0].offsetHeight,\n offset: $targetEl.offset(),\n borderRadius: $targetEl.css('border-radius'),\n zIndex: $targetEl.css('z-index')\n };\n const fab = {\n width: $fabEl[0].offsetWidth,\n height: $fabEl[0].offsetHeight,\n offset: $fabEl.offset(),\n translateX: getTranslate($fabEl[0], 'x'),\n translateY: getTranslate($fabEl[0], 'y')\n };\n $fabEl[0].f7FabMorphData = {\n $targetEl,\n target,\n fab\n };\n const diffX = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;\n const diffY = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;\n const scaleX = target.width / fab.width;\n const scaleY = target.height / fab.height;\n let borderRadius = Math.ceil(parseInt(target.borderRadius, 10) / Math.max(scaleX, scaleY));\n if (borderRadius > 0) borderRadius += 2;\n $fabEl[0].f7FabMorphResizeHandler = function resizeHandler() {\n $fabEl.transition(0).transform('');\n $targetEl.transition(0);\n target.width = $targetEl[0].offsetWidth;\n target.height = $targetEl[0].offsetHeight;\n target.offset = $targetEl.offset();\n fab.offset = $fabEl.offset();\n const diffXNew = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;\n const diffYNew = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;\n const scaleXNew = target.width / fab.width;\n const scaleYNew = target.height / fab.height;\n $fabEl.transform(`translate3d(${-diffXNew}px, ${-diffYNew}px, 0) scale(${scaleXNew}, ${scaleYNew})`);\n };\n $targetEl.css('opacity', 0).transform(`scale(${1 / scaleX}, ${1 / scaleY})`);\n $fabEl.addClass('fab-opened').css('z-index', target.zIndex - 1).transform(`translate3d(${-diffX}px, ${-diffY}px, 0)`);\n $fabEl.transitionEnd(() => {\n $targetEl.transition('');\n nextFrame(() => {\n $targetEl.css('opacity', 1).transform('scale(1,1)');\n $fabEl.transform(`translate3d(${-diffX}px, ${-diffY}px, 0) scale(${scaleX}, ${scaleY})`).css('border-radius', `${borderRadius}px`).css('box-shadow', 'none').css('opacity', '0');\n });\n app.on('resize', $fabEl[0].f7FabMorphResizeHandler);\n if ($targetEl.parents('.page-content').length > 0) {\n $targetEl.parents('.page-content').on('scroll', $fabEl[0].f7FabMorphResizeHandler);\n }\n });\n },\n morphClose(fabEl) {\n const app = this;\n const $fabEl = $(fabEl);\n const morphData = $fabEl[0].f7FabMorphData;\n if (!morphData) return;\n const {\n $targetEl,\n target,\n fab\n } = morphData;\n if ($targetEl.length === 0) return;\n const diffX = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;\n const diffY = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;\n const scaleX = target.width / fab.width;\n const scaleY = target.height / fab.height;\n app.off('resize', $fabEl[0].f7FabMorphResizeHandler);\n if ($targetEl.parents('.page-content').length > 0) {\n $targetEl.parents('.page-content').off('scroll', $fabEl[0].f7FabMorphResizeHandler);\n }\n $targetEl.css('opacity', 0).transform(`scale(${1 / scaleX}, ${1 / scaleY})`);\n $fabEl.transition('').css('box-shadow', '').css('border-radius', '').css('opacity', '1').transform(`translate3d(${-diffX}px, ${-diffY}px, 0)`);\n $fabEl.transitionEnd(() => {\n $fabEl.css('z-index', '').removeClass('fab-opened').transform('');\n nextFrame(() => {\n $fabEl.transitionEnd(() => {\n $targetEl.removeClass('fab-morph-target-visible').css('opacity', '').transform('').transition('');\n });\n });\n });\n },\n open(fabEl, targetEl) {\n const app = this;\n const $fabEl = $(fabEl).eq(0);\n const $buttonsEl = $fabEl.find('.fab-buttons');\n if (!$fabEl.length) return;\n if ($fabEl.hasClass('fab-opened')) return;\n if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;\n if (app.fab.openedEl) {\n if (app.fab.openedEl === $fabEl[0]) return;\n app.fab.close(app.fab.openedEl);\n }\n app.fab.openedEl = $fabEl[0];\n if ($fabEl.hasClass('fab-morph')) {\n app.fab.morphOpen($fabEl, targetEl || $fabEl.attr('data-morph-to'));\n } else {\n $fabEl.addClass('fab-opened');\n }\n $fabEl.siblings('.fab-backdrop').addClass('backdrop-in');\n $fabEl.trigger('fab:open');\n },\n close(fabEl) {\n if (fabEl === void 0) {\n fabEl = '.fab-opened';\n }\n const app = this;\n const $fabEl = $(fabEl).eq(0);\n const $buttonsEl = $fabEl.find('.fab-buttons');\n if (!$fabEl.length) return;\n if (!$fabEl.hasClass('fab-opened')) return;\n if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;\n app.fab.openedEl = null;\n if ($fabEl.hasClass('fab-morph')) {\n app.fab.morphClose($fabEl);\n } else {\n $fabEl.removeClass('fab-opened');\n }\n $fabEl.siblings('.fab-backdrop').removeClass('backdrop-in');\n $fabEl.trigger('fab:close');\n },\n toggle(fabEl) {\n const app = this;\n const $fabEl = $(fabEl);\n if (!$fabEl.hasClass('fab-opened')) app.fab.open(fabEl);else app.fab.close(fabEl);\n }\n};\nexport default {\n name: 'fab',\n create() {\n const app = this;\n bindMethods(app, {\n fab: {\n openedEl: null,\n ...Fab\n }\n });\n },\n clicks: {\n '.fab > a': function open($clickedEl) {\n const app = this;\n app.fab.toggle($clickedEl.parents('.fab'));\n },\n '.fab-open': function open($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.fab.open(data.fab);\n },\n '.fab-close': function close($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.fab.close(data.fab);\n },\n '.fab-backdrop': function close() {\n const app = this;\n app.fab.close();\n }\n }\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport FrameworkClass from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport removeDiacritics from './remove-diacritics.js';\nclass Searchbar extends FrameworkClass {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const sb = this;\n const defaults = {\n el: undefined,\n inputEl: undefined,\n inputEvents: 'change input compositionend',\n disableButton: true,\n disableButtonEl: undefined,\n backdropEl: undefined,\n searchContainer: undefined,\n // container to search, HTMLElement or CSS selector\n searchItem: 'li',\n // single item selector, CSS selector\n searchIn: undefined,\n // where to search in item, CSS selector\n searchGroup: '.list-group',\n searchGroupTitle: '.list-group-title',\n ignore: '.searchbar-ignore',\n foundEl: '.searchbar-found',\n notFoundEl: '.searchbar-not-found',\n hideOnEnableEl: '.searchbar-hide-on-enable',\n hideOnSearchEl: '.searchbar-hide-on-search',\n backdrop: true,\n removeDiacritics: true,\n customSearch: false,\n hideGroupTitles: true,\n hideGroups: true,\n disableOnBackdropClick: true,\n expandable: false,\n inline: false\n };\n\n // Extend defaults with modules params\n sb.useModulesParams(defaults);\n sb.params = extend(defaults, params);\n const $el = $(sb.params.el);\n if ($el.length === 0) return sb;\n if ($el[0].f7Searchbar) return $el[0].f7Searchbar;\n $el[0].f7Searchbar = sb;\n let $pageEl;\n const $navbarEl = $el.parents('.navbar');\n if ($el.parents('.page').length > 0) {\n $pageEl = $el.parents('.page');\n } else if ($navbarEl.length > 0) {\n $pageEl = $(app.navbar.getPageByEl($navbarEl[0]));\n if (!$pageEl.length) {\n const $currentPageEl = $el.parents('.view').find('.page-current');\n if ($currentPageEl[0] && $currentPageEl[0].f7Page && $currentPageEl[0].f7Page.navbarEl === $navbarEl[0]) {\n $pageEl = $currentPageEl;\n }\n }\n }\n let $foundEl;\n if (params.foundEl) {\n $foundEl = $(params.foundEl);\n } else if (typeof sb.params.foundEl === 'string' && $pageEl) {\n $foundEl = $pageEl.find(sb.params.foundEl);\n }\n let $notFoundEl;\n if (params.notFoundEl) {\n $notFoundEl = $(params.notFoundEl);\n } else if (typeof sb.params.notFoundEl === 'string' && $pageEl) {\n $notFoundEl = $pageEl.find(sb.params.notFoundEl);\n }\n let $hideOnEnableEl;\n if (params.hideOnEnableEl) {\n $hideOnEnableEl = $(params.hideOnEnableEl);\n } else if (typeof sb.params.hideOnEnableEl === 'string' && $pageEl) {\n $hideOnEnableEl = $pageEl.find(sb.params.hideOnEnableEl);\n }\n let $hideOnSearchEl;\n if (params.hideOnSearchEl) {\n $hideOnSearchEl = $(params.hideOnSearchEl);\n } else if (typeof sb.params.hideOnSearchEl === 'string' && $pageEl) {\n $hideOnSearchEl = $pageEl.find(sb.params.hideOnSearchEl);\n }\n const expandable = sb.params.expandable || $el.hasClass('searchbar-expandable');\n const inline = sb.params.inline || $el.hasClass('searchbar-inline');\n if (typeof sb.params.backdrop === 'undefined') {\n sb.params.backdrop = !inline;\n }\n let $backdropEl;\n if (sb.params.backdrop) {\n if (sb.params.backdropEl) {\n $backdropEl = $(sb.params.backdropEl);\n } else if ($pageEl && $pageEl.length > 0) {\n $backdropEl = $pageEl.find('.searchbar-backdrop');\n } else {\n $backdropEl = $el.siblings('.searchbar-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('
                ');\n if ($pageEl && $pageEl.length) {\n if ($el.parents($pageEl).length > 0 && $navbarEl && $el.parents($navbarEl).length === 0) {\n $backdropEl.insertBefore($el);\n } else {\n $backdropEl.insertBefore($pageEl.find('.page-content').eq(0));\n }\n } else {\n $backdropEl.insertBefore($el);\n }\n }\n }\n let $searchContainer;\n if (sb.params.searchContainer) {\n $searchContainer = $(sb.params.searchContainer);\n }\n let $inputEl;\n if (sb.params.inputEl) {\n $inputEl = $(sb.params.inputEl);\n } else {\n $inputEl = $el.find('input[type=\"search\"]').eq(0);\n }\n let $disableButtonEl;\n if (sb.params.disableButton) {\n if (sb.params.disableButtonEl) {\n $disableButtonEl = $(sb.params.disableButtonEl);\n } else {\n $disableButtonEl = $el.find('.searchbar-disable-button');\n }\n }\n extend(sb, {\n app,\n view: app.views.get($el.parents('.view')),\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n $searchContainer,\n searchContainer: $searchContainer && $searchContainer[0],\n $inputEl,\n inputEl: $inputEl[0],\n $disableButtonEl,\n disableButtonEl: $disableButtonEl && $disableButtonEl[0],\n disableButtonHasMargin: false,\n $pageEl,\n pageEl: $pageEl && $pageEl[0],\n $navbarEl,\n navbarEl: $navbarEl && $navbarEl[0],\n $foundEl,\n foundEl: $foundEl && $foundEl[0],\n $notFoundEl,\n notFoundEl: $notFoundEl && $notFoundEl[0],\n $hideOnEnableEl,\n hideOnEnableEl: $hideOnEnableEl && $hideOnEnableEl[0],\n $hideOnSearchEl,\n hideOnSearchEl: $hideOnSearchEl && $hideOnSearchEl[0],\n previousQuery: '',\n query: '',\n isVirtualList: $searchContainer && $searchContainer.hasClass('virtual-list'),\n virtualList: undefined,\n enabled: false,\n expandable,\n inline\n });\n\n // Events\n function preventSubmit(e) {\n e.preventDefault();\n }\n function onInputFocus(e) {\n sb.enable(e);\n sb.$el.addClass('searchbar-focused');\n }\n function onInputBlur() {\n sb.$el.removeClass('searchbar-focused');\n }\n function onInputChange() {\n const value = sb.$inputEl.val().trim();\n if (sb.$searchContainer && sb.$searchContainer.length > 0 && (sb.params.searchIn || sb.isVirtualList || sb.params.searchIn === sb.params.searchItem) || sb.params.customSearch) {\n sb.search(value, true);\n }\n }\n function onInputClear(e, previousValue) {\n sb.$el.trigger('searchbar:clear', previousValue);\n sb.emit('local::clear searchbarClear', sb, previousValue);\n }\n function disableOnClick(e) {\n sb.disable(e);\n }\n function onPageBeforeOut() {\n if (!sb || sb && !sb.$el) return;\n if (sb.enabled) {\n sb.$el.removeClass('searchbar-enabled');\n if (sb.expandable) {\n sb.$el.parents('.navbar').removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition');\n }\n }\n }\n function onPageBeforeIn() {\n if (!sb || sb && !sb.$el) return;\n if (sb.enabled) {\n sb.$el.addClass('searchbar-enabled');\n if (sb.expandable) {\n sb.$el.parents('.navbar').addClass('with-searchbar-expandable-enabled-no-transition');\n }\n }\n }\n sb.attachEvents = function attachEvents() {\n $el.on('submit', preventSubmit);\n if (sb.params.disableButton) {\n sb.$disableButtonEl.on('click', disableOnClick);\n }\n if (sb.params.disableOnBackdropClick && sb.$backdropEl) {\n sb.$backdropEl.on('click', disableOnClick);\n }\n if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {\n sb.$pageEl.on('page:beforeout', onPageBeforeOut);\n sb.$pageEl.on('page:beforein', onPageBeforeIn);\n }\n sb.$inputEl.on('focus', onInputFocus);\n sb.$inputEl.on('blur', onInputBlur);\n sb.$inputEl.on(sb.params.inputEvents, onInputChange);\n sb.$inputEl.on('input:clear', onInputClear);\n };\n sb.detachEvents = function detachEvents() {\n $el.off('submit', preventSubmit);\n if (sb.params.disableButton) {\n sb.$disableButtonEl.off('click', disableOnClick);\n }\n if (sb.params.disableOnBackdropClick && sb.$backdropEl) {\n sb.$backdropEl.off('click', disableOnClick);\n }\n if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {\n sb.$pageEl.off('page:beforeout', onPageBeforeOut);\n sb.$pageEl.off('page:beforein', onPageBeforeIn);\n }\n sb.$inputEl.off('focus', onInputFocus);\n sb.$inputEl.off('blur', onInputBlur);\n sb.$inputEl.off(sb.params.inputEvents, onInputChange);\n sb.$inputEl.off('input:clear', onInputClear);\n };\n\n // Install Modules\n sb.useModules();\n\n // Init\n sb.init();\n return sb;\n }\n clear(e) {\n const sb = this;\n if (!sb.query && e && $(e.target).hasClass('searchbar-clear')) {\n sb.disable();\n return sb;\n }\n const previousQuery = sb.value;\n sb.$inputEl.val('').trigger('change').focus();\n sb.$el.trigger('searchbar:clear', previousQuery);\n sb.emit('local::clear searchbarClear', sb, previousQuery);\n return sb;\n }\n setDisableButtonMargin() {\n const sb = this;\n if (sb.expandable) return;\n const app = sb.app;\n sb.$disableButtonEl.transition(0).show();\n sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, `${-sb.disableButtonEl.offsetWidth}px`);\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n sb._clientLeft = sb.$disableButtonEl[0].clientLeft;\n sb.$disableButtonEl.transition('');\n sb.disableButtonHasMargin = true;\n }\n enable(setFocus) {\n const sb = this;\n if (sb.enabled) return sb;\n const app = sb.app;\n const document = getDocument();\n const device = getDevice();\n sb.enabled = true;\n function enable() {\n if (sb.$backdropEl && (sb.$searchContainer && sb.$searchContainer.length || sb.params.customSearch) && !sb.$el.hasClass('searchbar-enabled') && !sb.query) {\n sb.backdropShow();\n }\n sb.$el.addClass('searchbar-enabled');\n if (!sb.$disableButtonEl || sb.$disableButtonEl && sb.$disableButtonEl.length === 0) {\n sb.$el.addClass('searchbar-enabled-no-disable-button');\n }\n if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme !== 'md') {\n if (!sb.disableButtonHasMargin) {\n sb.setDisableButtonMargin();\n }\n sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, '0px');\n }\n if (sb.expandable) {\n const $navbarEl = sb.$el.parents('.navbar');\n if ($navbarEl.hasClass('navbar-large') && sb.$pageEl) {\n const $pageContentEl = sb.$pageEl.find('.page-content');\n const $titleLargeEl = $navbarEl.find('.title-large');\n $pageContentEl.addClass('with-searchbar-expandable-enabled');\n if ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-large-collapsed') && $titleLargeEl.length && $pageContentEl.length) {\n $pageContentEl.transition(0);\n $pageContentEl[0].scrollTop -= $titleLargeEl[0].offsetHeight;\n setTimeout(() => {\n $pageContentEl.transition('');\n }, 200);\n }\n }\n if (app.theme === 'md' && $navbarEl.length) {\n $navbarEl.addClass('with-searchbar-expandable-enabled');\n } else {\n $navbarEl.addClass('with-searchbar-expandable-enabled');\n if ($navbarEl.hasClass('navbar-large')) {\n $navbarEl.addClass('navbar-large-collapsed');\n }\n }\n }\n if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.addClass('hidden-by-searchbar');\n sb.$el.trigger('searchbar:enable');\n sb.emit('local::enable searchbarEnable', sb);\n }\n let needsFocus = false;\n if (setFocus === true) {\n if (document.activeElement !== sb.inputEl) {\n needsFocus = true;\n }\n }\n const isIos = device.ios && app.theme === 'ios';\n if (isIos) {\n if (sb.expandable) {\n if (needsFocus) sb.$inputEl.focus();\n enable();\n } else {\n if (needsFocus) sb.$inputEl.focus();\n if (setFocus && (setFocus.type === 'focus' || setFocus === true)) {\n nextTick(() => {\n enable();\n }, 400);\n } else {\n enable();\n }\n }\n } else {\n if (needsFocus) sb.$inputEl.focus();\n if (app.theme === 'md' && sb.expandable) {\n sb.$el.parents('.page, .view, .navbar-inner, .navbar').scrollLeft(app.rtl ? 100 : 0);\n }\n enable();\n }\n return sb;\n }\n disable() {\n const sb = this;\n if (!sb.enabled) return sb;\n const app = sb.app;\n sb.$inputEl.val('').trigger('change');\n sb.$el.removeClass('searchbar-enabled searchbar-focused searchbar-enabled-no-disable-button');\n if (sb.expandable) {\n const $navbarEl = sb.$el.parents('.navbar');\n const $pageContentEl = sb.$pageEl && sb.$pageEl.find('.page-content');\n if ($navbarEl.hasClass('navbar-large') && $pageContentEl.length) {\n const $titleLargeEl = $navbarEl.find('.title-large');\n sb.$el.transitionEnd(() => {\n $pageContentEl.removeClass('with-searchbar-expandable-closing');\n });\n if ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-large-collapsed') && $titleLargeEl.length) {\n const scrollTop = $pageContentEl[0].scrollTop;\n const titleLargeHeight = $titleLargeEl[0].offsetHeight;\n if (scrollTop > titleLargeHeight) {\n $pageContentEl.transition(0);\n $pageContentEl[0].scrollTop = scrollTop + titleLargeHeight;\n setTimeout(() => {\n $pageContentEl.transition('');\n }, 200);\n }\n }\n $pageContentEl.removeClass('with-searchbar-expandable-enabled').addClass('with-searchbar-expandable-closing');\n }\n if (app.theme === 'md' && $navbarEl.length) {\n $navbarEl.removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition').addClass('with-searchbar-expandable-closing');\n sb.$el.transitionEnd(() => {\n $navbarEl.removeClass('with-searchbar-expandable-closing');\n });\n } else {\n $navbarEl.removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition').addClass('with-searchbar-expandable-closing');\n sb.$el.transitionEnd(() => {\n $navbarEl.removeClass('with-searchbar-expandable-closing');\n });\n if (sb.$pageEl) {\n sb.$pageEl.find('.page-content').trigger('scroll');\n }\n }\n }\n if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme !== 'md') {\n sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, `${-sb.disableButtonEl.offsetWidth}px`);\n }\n if (sb.$backdropEl && (sb.$searchContainer && sb.$searchContainer.length || sb.params.customSearch)) {\n sb.backdropHide();\n }\n sb.enabled = false;\n sb.$inputEl.blur();\n if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.removeClass('hidden-by-searchbar');\n sb.$el.trigger('searchbar:disable');\n sb.emit('local::disable searchbarDisable', sb);\n return sb;\n }\n toggle() {\n const sb = this;\n if (sb.enabled) sb.disable();else sb.enable(true);\n return sb;\n }\n backdropShow() {\n const sb = this;\n if (sb.$backdropEl) {\n sb.$backdropEl.addClass('searchbar-backdrop-in');\n }\n return sb;\n }\n backdropHide() {\n const sb = this;\n if (sb.$backdropEl) {\n sb.$backdropEl.removeClass('searchbar-backdrop-in');\n }\n return sb;\n }\n search(query, internal) {\n const sb = this;\n sb.previousQuery = sb.query || '';\n if (query === sb.previousQuery) return sb;\n if (!internal) {\n if (!sb.enabled) {\n sb.enable();\n }\n sb.$inputEl.val(query);\n sb.$inputEl.trigger('input');\n }\n sb.query = query;\n sb.value = query;\n const {\n $searchContainer,\n $el,\n $foundEl,\n $notFoundEl,\n $hideOnSearchEl,\n isVirtualList\n } = sb;\n\n // Hide on search element\n if (query.length > 0 && $hideOnSearchEl) {\n $hideOnSearchEl.addClass('hidden-by-searchbar');\n } else if ($hideOnSearchEl) {\n $hideOnSearchEl.removeClass('hidden-by-searchbar');\n }\n // Add active/inactive classes on overlay\n if ($searchContainer && $searchContainer.length && $el.hasClass('searchbar-enabled') || sb.params.customSearch && $el.hasClass('searchbar-enabled')) {\n if (query.length === 0) {\n sb.backdropShow();\n } else {\n sb.backdropHide();\n }\n }\n if (sb.params.customSearch) {\n $el.trigger('searchbar:search', {\n query,\n previousQuery: sb.previousQuery\n });\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);\n return sb;\n }\n let foundItems = [];\n let vlQuery;\n if (isVirtualList) {\n sb.virtualList = $searchContainer[0].f7VirtualList;\n if (query.trim() === '') {\n sb.virtualList.resetFilter();\n if ($notFoundEl) $notFoundEl.hide();\n if ($foundEl) $foundEl.show();\n $el.trigger('searchbar:search', {\n query,\n previousQuery: sb.previousQuery\n });\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);\n return sb;\n }\n vlQuery = sb.params.removeDiacritics ? removeDiacritics(query) : query;\n if (sb.virtualList.params.searchAll) {\n foundItems = sb.virtualList.params.searchAll(vlQuery, sb.virtualList.items) || [];\n } else if (sb.virtualList.params.searchByItem) {\n for (let i = 0; i < sb.virtualList.items.length; i += 1) {\n if (sb.virtualList.params.searchByItem(vlQuery, sb.virtualList.items[i], i)) {\n foundItems.push(i);\n }\n }\n }\n } else {\n let values;\n if (sb.params.removeDiacritics) values = removeDiacritics(query.trim().toLowerCase()).split(' ');else {\n values = query.trim().toLowerCase().split(' ');\n }\n $searchContainer.find(sb.params.searchItem).removeClass('hidden-by-searchbar').each(itemEl => {\n const $itemEl = $(itemEl);\n let compareWithText = [];\n let $searchIn = sb.params.searchIn ? $itemEl.find(sb.params.searchIn) : $itemEl;\n if (sb.params.searchIn === sb.params.searchItem) {\n $searchIn = $itemEl;\n }\n $searchIn.each(searchInEl => {\n let itemText = $(searchInEl).text().trim().toLowerCase();\n if (sb.params.removeDiacritics) itemText = removeDiacritics(itemText);\n compareWithText.push(itemText);\n });\n compareWithText = compareWithText.join(' ');\n let wordsMatch = 0;\n for (let i = 0; i < values.length; i += 1) {\n if (compareWithText.indexOf(values[i]) >= 0) wordsMatch += 1;\n }\n if (wordsMatch !== values.length && !(sb.params.ignore && $itemEl.is(sb.params.ignore))) {\n $itemEl.addClass('hidden-by-searchbar');\n } else {\n foundItems.push($itemEl[0]);\n }\n });\n if (sb.params.hideGroupTitles) {\n $searchContainer.find(sb.params.searchGroupTitle).each(titleEl => {\n const $titleEl = $(titleEl);\n const $nextElements = $titleEl.nextAll(sb.params.searchItem);\n let hide = true;\n for (let i = 0; i < $nextElements.length; i += 1) {\n const $nextEl = $nextElements.eq(i);\n if ($nextEl.is(sb.params.searchGroupTitle)) break;\n if (!$nextEl.hasClass('hidden-by-searchbar')) {\n hide = false;\n }\n }\n const ignore = sb.params.ignore && $titleEl.is(sb.params.ignore);\n if (hide && !ignore) $titleEl.addClass('hidden-by-searchbar');else $titleEl.removeClass('hidden-by-searchbar');\n });\n }\n if (sb.params.hideGroups) {\n $searchContainer.find(sb.params.searchGroup).each(groupEl => {\n const $groupEl = $(groupEl);\n const ignore = sb.params.ignore && $groupEl.is(sb.params.ignore);\n // eslint-disable-next-line\n const notHidden = $groupEl.find(sb.params.searchItem).filter(el => {\n return !$(el).hasClass('hidden-by-searchbar');\n });\n if (notHidden.length === 0 && !ignore) {\n $groupEl.addClass('hidden-by-searchbar');\n } else {\n $groupEl.removeClass('hidden-by-searchbar');\n }\n });\n }\n }\n if (foundItems.length === 0) {\n if ($notFoundEl) $notFoundEl.show();\n if ($foundEl) $foundEl.hide();\n } else {\n if ($notFoundEl) $notFoundEl.hide();\n if ($foundEl) $foundEl.show();\n }\n if (isVirtualList && sb.virtualList) {\n sb.virtualList.filterItems(foundItems);\n }\n $el.trigger('searchbar:search', {\n query,\n previousQuery: sb.previousQuery,\n foundItems\n });\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery, foundItems);\n return sb;\n }\n init() {\n const sb = this;\n if (sb.expandable && sb.$el) sb.$el.addClass('searchbar-expandable');\n if (sb.inline && sb.$el) sb.$el.addClass('searchbar-inline');\n sb.attachEvents();\n }\n destroy() {\n const sb = this;\n sb.emit('local::beforeDestroy searchbarBeforeDestroy', sb);\n sb.$el.trigger('searchbar:beforedestroy');\n sb.detachEvents();\n if (sb.$el[0]) {\n sb.$el[0].f7Searchbar = null;\n delete sb.$el[0].f7Searchbar;\n }\n deleteProps(sb);\n }\n}\nexport default Searchbar;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Searchbar from './searchbar-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'searchbar',\n static: {\n Searchbar\n },\n create() {\n const app = this;\n app.searchbar = ConstructorMethods({\n defaultSelector: '.searchbar',\n constructor: Searchbar,\n app,\n domProp: 'f7Searchbar',\n addMethods: 'clear enable disable toggle search'.split(' ')\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.searchbar-init').each(searchbarEl => {\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(extend($searchbarEl.dataset(), {\n el: searchbarEl\n }));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.searchbar-init').each(searchbarEl => {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.searchbar-init').each(searchbarEl => {\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(extend($searchbarEl.dataset(), {\n el: searchbarEl\n }));\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.searchbar-init').each(searchbarEl => {\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(extend($searchbarEl.dataset(), {\n el: searchbarEl\n }));\n });\n }\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.searchbar-init').each(searchbarEl => {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.searchbar-init').each(searchbarEl => {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n }\n }\n },\n clicks: {\n '.searchbar-clear': function clear($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.clear();\n },\n '.searchbar-enable': function enable($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.enable(true);\n },\n '.searchbar-disable': function disable($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.disable();\n },\n '.searchbar-toggle': function toggle($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.toggle();\n }\n },\n vnode: {\n 'searchbar-init': {\n insert(vnode) {\n const app = this;\n const searchbarEl = vnode.elm;\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(extend($searchbarEl.dataset(), {\n el: searchbarEl\n }));\n },\n destroy(vnode) {\n const searchbarEl = vnode.elm;\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n }\n }\n }\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Messages extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const m = this;\n const defaults = {\n autoLayout: true,\n messages: [],\n newMessagesFirst: false,\n scrollMessages: true,\n scrollMessagesOnEdge: true,\n firstMessageRule: undefined,\n lastMessageRule: undefined,\n tailMessageRule: undefined,\n sameNameMessageRule: undefined,\n sameHeaderMessageRule: undefined,\n sameFooterMessageRule: undefined,\n sameAvatarMessageRule: undefined,\n customClassMessageRule: undefined,\n renderMessage: undefined\n };\n\n // Extend defaults with modules params\n m.useModulesParams(defaults);\n m.params = extend(defaults, params);\n const $el = $(params.el).eq(0);\n if ($el.length === 0) return m;\n if ($el[0].f7Messages) return $el[0].f7Messages;\n $el[0].f7Messages = m;\n const $pageContentEl = $el.closest('.page-content').eq(0);\n extend(m, {\n messages: m.params.messages,\n $el,\n el: $el[0],\n $pageContentEl,\n pageContentEl: $pageContentEl[0]\n });\n // Install Modules\n m.useModules();\n\n // Init\n m.init();\n return m;\n }\n // eslint-disable-next-line\n getMessageData(messageEl) {\n const $messageEl = $(messageEl);\n const data = {\n name: $messageEl.find('.message-name').html(),\n header: $messageEl.find('.message-header').html(),\n textHeader: $messageEl.find('.message-text-header').html(),\n textFooter: $messageEl.find('.message-text-footer').html(),\n footer: $messageEl.find('.message-footer').html(),\n isTitle: $messageEl.hasClass('messages-title'),\n type: $messageEl.hasClass('message-sent') ? 'sent' : 'received',\n text: $messageEl.find('.message-text').html(),\n image: $messageEl.find('.message-image').html(),\n imageSrc: $messageEl.find('.message-image img').attr('src'),\n typing: $messageEl.hasClass('message-typing')\n };\n if (data.isTitle) {\n data.text = $messageEl.html();\n }\n if (data.text && data.textHeader) {\n data.text = data.text.replace(`
                ${data.textHeader}
                `, '');\n }\n if (data.text && data.textFooter) {\n data.text = data.text.replace(`
                ${data.textFooter}
                `, '');\n }\n let avatar = $messageEl.find('.message-avatar').css('background-image');\n if (avatar === 'none' || avatar === '') avatar = undefined;\n if (avatar && typeof avatar === 'string') {\n avatar = avatar.replace('url(', '').replace(')', '').replace(/\"/g, '').replace(/'/g, '');\n } else {\n avatar = undefined;\n }\n data.avatar = avatar;\n return data;\n }\n getMessagesData() {\n const m = this;\n const data = [];\n m.$el.find('.message, .messages-title').each(messageEl => {\n data.push(m.getMessageData(messageEl));\n });\n return data;\n }\n renderMessage(messageToRender) {\n const m = this;\n const message = extend({\n type: 'sent',\n attrs: {}\n }, messageToRender);\n if (m.params.renderMessage) {\n return m.params.renderMessage.call(m, message);\n }\n if (message.isTitle) {\n return `
                ${message.text}
                `;\n }\n return $jsx(\"div\", _extends({\n class: `message message-${message.type} ${message.isTyping ? 'message-typing' : ''} ${message.cssClass || ''}`\n }, message.attrs), message.avatar && $jsx(\"div\", {\n class: \"message-avatar\",\n style: `background-image:url(${message.avatar})`\n }), $jsx(\"div\", {\n class: \"message-content\"\n }, message.name && $jsx(\"div\", {\n class: \"message-name\"\n }, message.name), message.header && $jsx(\"div\", {\n class: \"message-header\"\n }, message.header), $jsx(\"div\", {\n class: \"message-bubble\"\n }, message.textHeader && $jsx(\"div\", {\n class: \"message-text-header\"\n }, message.textHeader), message.image && $jsx(\"div\", {\n class: \"message-image\"\n }, message.image), message.imageSrc && !message.image && $jsx(\"div\", {\n class: \"message-image\"\n }, $jsx(\"img\", {\n src: message.imageSrc\n })), (message.text || message.isTyping) && $jsx(\"div\", {\n class: \"message-text\"\n }, message.text || '', message.isTyping && $jsx(\"div\", {\n class: \"message-typing-indicator\"\n }, $jsx(\"div\", null), $jsx(\"div\", null), $jsx(\"div\", null))), message.textFooter && $jsx(\"div\", {\n class: \"message-text-footer\"\n }, message.textFooter)), message.footer && $jsx(\"div\", {\n class: \"message-footer\"\n }, message.footer)));\n }\n renderMessages(messagesToRender, method) {\n if (messagesToRender === void 0) {\n messagesToRender = this.messages;\n }\n if (method === void 0) {\n method = this.params.newMessagesFirst ? 'prepend' : 'append';\n }\n const m = this;\n const html = messagesToRender.map(message => m.renderMessage(message)).join('');\n m.$el[method](html);\n }\n isFirstMessage() {\n const m = this;\n if (m.params.firstMessageRule) return m.params.firstMessageRule(...arguments);\n return false;\n }\n isLastMessage() {\n const m = this;\n if (m.params.lastMessageRule) return m.params.lastMessageRule(...arguments);\n return false;\n }\n isTailMessage() {\n const m = this;\n if (m.params.tailMessageRule) return m.params.tailMessageRule(...arguments);\n return false;\n }\n isSameNameMessage() {\n const m = this;\n if (m.params.sameNameMessageRule) return m.params.sameNameMessageRule(...arguments);\n return false;\n }\n isSameHeaderMessage() {\n const m = this;\n if (m.params.sameHeaderMessageRule) return m.params.sameHeaderMessageRule(...arguments);\n return false;\n }\n isSameFooterMessage() {\n const m = this;\n if (m.params.sameFooterMessageRule) return m.params.sameFooterMessageRule(...arguments);\n return false;\n }\n isSameAvatarMessage() {\n const m = this;\n if (m.params.sameAvatarMessageRule) return m.params.sameAvatarMessageRule(...arguments);\n return false;\n }\n isCustomClassMessage() {\n const m = this;\n if (m.params.customClassMessageRule) return m.params.customClassMessageRule(...arguments);\n return undefined;\n }\n layout() {\n const m = this;\n m.$el.find('.message, .messages-title').each((messageEl, index) => {\n const $messageEl = $(messageEl);\n if (!m.messages) {\n m.messages = m.getMessagesData();\n }\n const classes = [];\n const message = m.messages[index];\n const previousMessage = m.messages[index - 1];\n const nextMessage = m.messages[index + 1];\n if (m.isFirstMessage(message, previousMessage, nextMessage)) {\n classes.push('message-first');\n }\n if (m.isLastMessage(message, previousMessage, nextMessage)) {\n classes.push('message-last');\n }\n if (m.isTailMessage(message, previousMessage, nextMessage)) {\n classes.push('message-tail');\n }\n if (m.isSameNameMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-name');\n }\n if (m.isSameHeaderMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-header');\n }\n if (m.isSameFooterMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-footer');\n }\n if (m.isSameAvatarMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-avatar');\n }\n let customMessageClasses = m.isCustomClassMessage(message, previousMessage, nextMessage);\n if (customMessageClasses && customMessageClasses.length) {\n if (typeof customMessageClasses === 'string') {\n customMessageClasses = customMessageClasses.split(' ');\n }\n customMessageClasses.forEach(customClass => {\n classes.push(customClass);\n });\n }\n $messageEl.removeClass('message-first message-last message-tail message-same-name message-same-header message-same-footer message-same-avatar');\n classes.forEach(className => {\n $messageEl.addClass(className);\n });\n });\n }\n clear() {\n const m = this;\n m.messages = [];\n m.$el.html('');\n }\n removeMessage(messageToRemove, layout) {\n if (layout === void 0) {\n layout = true;\n }\n const m = this;\n // Index or El\n let index;\n let $el;\n if (typeof messageToRemove === 'number') {\n index = messageToRemove;\n $el = m.$el.find('.message, .messages-title').eq(index);\n } else if (m.messages && m.messages.indexOf(messageToRemove) >= 0) {\n index = m.messages.indexOf(messageToRemove);\n $el = m.$el.children().eq(index);\n } else {\n $el = $(messageToRemove);\n index = $el.index();\n }\n if ($el.length === 0) {\n return m;\n }\n $el.remove();\n m.messages.splice(index, 1);\n if (m.params.autoLayout && layout) m.layout();\n return m;\n }\n removeMessages(messagesToRemove, layout) {\n if (layout === void 0) {\n layout = true;\n }\n const m = this;\n if (Array.isArray(messagesToRemove)) {\n const messagesToRemoveEls = [];\n messagesToRemove.forEach(messageToRemoveIndex => {\n messagesToRemoveEls.push(m.$el.find('.message, .messages-title').eq(messageToRemoveIndex));\n });\n messagesToRemoveEls.forEach(messageToRemove => {\n m.removeMessage(messageToRemove, false);\n });\n } else {\n $(messagesToRemove).each(messageToRemove => {\n m.removeMessage(messageToRemove, false);\n });\n }\n if (m.params.autoLayout && layout) m.layout();\n return m;\n }\n addMessage() {\n const m = this;\n let messageToAdd;\n let animate;\n let method;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[1] === 'boolean') {\n [messageToAdd, animate, method] = args;\n } else {\n [messageToAdd, method, animate] = args;\n }\n if (typeof animate === 'undefined') {\n animate = true;\n }\n if (typeof method === 'undefined') {\n method = m.params.newMessagesFirst ? 'prepend' : 'append';\n }\n return m.addMessages([messageToAdd], animate, method);\n }\n setScrollData() {\n const m = this;\n // Define scroll positions before new messages added\n const scrollHeightBefore = m.pageContentEl.scrollHeight;\n const heightBefore = m.pageContentEl.offsetHeight;\n const scrollBefore = m.pageContentEl.scrollTop;\n m.scrollData = {\n scrollHeightBefore,\n heightBefore,\n scrollBefore\n };\n return {\n scrollHeightBefore,\n heightBefore,\n scrollBefore\n };\n }\n addMessages() {\n const m = this;\n let messagesToAdd;\n let animate;\n let method;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[1] === 'boolean') {\n [messagesToAdd, animate, method] = args;\n } else {\n [messagesToAdd, method, animate] = args;\n }\n if (typeof animate === 'undefined') {\n animate = true;\n }\n if (typeof method === 'undefined') {\n method = m.params.newMessagesFirst ? 'prepend' : 'append';\n }\n const {\n scrollHeightBefore,\n scrollBefore\n } = m.setScrollData();\n\n // Add message to DOM and data\n let messagesHTML = '';\n const typingMessage = m.messages.filter(el => el.isTyping)[0];\n messagesToAdd.forEach(messageToAdd => {\n if (typingMessage) {\n if (method === 'append') {\n m.messages.splice(m.messages.indexOf(typingMessage), 0, messageToAdd);\n } else {\n m.messages.splice(m.messages.indexOf(typingMessage) + 1, 0, messageToAdd);\n }\n } else {\n m.messages[method === 'append' ? 'push' : 'unshift'](messageToAdd);\n }\n messagesHTML += m.renderMessage(messageToAdd);\n });\n const $messagesEls = $(messagesHTML);\n if (animate) {\n if (method === 'append' && !m.params.newMessagesFirst) {\n $messagesEls.addClass('message-appear-from-bottom');\n }\n if (method === 'prepend' && m.params.newMessagesFirst) {\n $messagesEls.addClass('message-appear-from-top');\n }\n }\n if (typingMessage) {\n if (method === 'append') {\n $messagesEls.insertBefore(m.$el.find('.message-typing'));\n } else {\n $messagesEls.insertAfter(m.$el.find('.message-typing'));\n }\n } else {\n m.$el[method]($messagesEls);\n }\n\n // Layout\n if (m.params.autoLayout) m.layout();\n if (method === 'prepend' && !typingMessage) {\n m.pageContentEl.scrollTop = scrollBefore + (m.pageContentEl.scrollHeight - scrollHeightBefore);\n }\n if (m.params.scrollMessages && (method === 'append' && !m.params.newMessagesFirst || method === 'prepend' && m.params.newMessagesFirst && !typingMessage)) {\n m.scrollWithEdgeCheck(animate);\n }\n return m;\n }\n showTyping(message) {\n if (message === void 0) {\n message = {};\n }\n const m = this;\n const typingMessage = m.messages.filter(el => el.isTyping)[0];\n if (typingMessage) {\n m.removeMessage(m.messages.indexOf(typingMessage));\n }\n m.addMessage(extend({\n type: 'received',\n isTyping: true\n }, message));\n return m;\n }\n hideTyping() {\n const m = this;\n let typingMessageIndex;\n let typingFound;\n m.messages.forEach((message, index) => {\n if (message.isTyping) typingMessageIndex = index;\n });\n if (typeof typingMessageIndex !== 'undefined') {\n if (m.$el.find('.message').eq(typingMessageIndex).hasClass('message-typing')) {\n typingFound = true;\n m.removeMessage(typingMessageIndex);\n }\n }\n if (!typingFound) {\n const $typingMessageEl = m.$el.find('.message-typing');\n if ($typingMessageEl.length) {\n m.removeMessage($typingMessageEl);\n }\n }\n return m;\n }\n scrollWithEdgeCheck(animate) {\n const m = this;\n const {\n scrollBefore,\n scrollHeightBefore,\n heightBefore\n } = m.scrollData;\n if (m.params.scrollMessagesOnEdge) {\n let onEdge = false;\n if (m.params.newMessagesFirst && scrollBefore === 0) {\n onEdge = true;\n }\n if (!m.params.newMessagesFirst && scrollBefore - (scrollHeightBefore - heightBefore) >= -10) {\n onEdge = true;\n }\n if (onEdge) m.scroll(animate ? undefined : 0);\n } else {\n m.scroll(animate ? undefined : 0);\n }\n }\n scroll(duration, scrollTop) {\n if (duration === void 0) {\n duration = 300;\n }\n const m = this;\n const currentScroll = m.pageContentEl.scrollTop;\n let newScrollTop;\n if (typeof scrollTop !== 'undefined') newScrollTop = scrollTop;else {\n newScrollTop = m.params.newMessagesFirst ? 0 : m.pageContentEl.scrollHeight - m.pageContentEl.offsetHeight;\n if (newScrollTop === currentScroll) return m;\n }\n m.$pageContentEl.scrollTop(newScrollTop, duration);\n return m;\n }\n init() {\n const m = this;\n if (!m.messages || m.messages.length === 0) {\n m.messages = m.getMessagesData();\n }\n if (m.params.messages && m.params.messages.length) {\n m.renderMessages();\n }\n if (m.params.autoLayout) m.layout();\n if (m.params.scrollMessages) m.scroll(0);\n }\n destroy() {\n const m = this;\n m.emit('local::beforeDestroy messagesBeforeDestroy', m);\n m.$el.trigger('messages:beforedestroy');\n if (m.$el[0]) {\n m.$el[0].f7Messages = null;\n delete m.$el[0].f7Messages;\n }\n deleteProps(m);\n }\n}\nexport default Messages;","import $ from '../../shared/dom7.js';\nimport Messages from './messages-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'messages',\n static: {\n Messages\n },\n create() {\n const app = this;\n app.messages = ConstructorMethods({\n defaultSelector: '.messages',\n constructor: Messages,\n app,\n domProp: 'f7Messages',\n addMethods: 'renderMessages layout scroll clear removeMessage removeMessages addMessage addMessages'.split(' ')\n });\n },\n on: {\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.messages-init').each(messagesEl => {\n app.messages.destroy(messagesEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.messages-init').each(messagesEl => {\n app.messages.create({\n el: messagesEl\n });\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.messages-init').each(messagesEl => {\n app.messages.destroy(messagesEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.messages-init').each(messagesEl => {\n app.messages.create({\n el: messagesEl\n });\n });\n }\n },\n vnode: {\n 'messages-init': {\n insert(vnode) {\n const app = this;\n const messagesEl = vnode.elm;\n app.messages.create({\n el: messagesEl\n });\n },\n destroy(vnode) {\n const app = this;\n const messagesEl = vnode.elm;\n app.messages.destroy(messagesEl);\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nclass Messagebar extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const messagebar = this;\n const defaults = {\n top: false,\n topOffset: 0,\n bottomOffset: 0,\n attachments: [],\n renderAttachments: undefined,\n renderAttachment: undefined,\n maxHeight: null,\n resizePage: true\n };\n\n // Extend defaults with modules params\n messagebar.useModulesParams(defaults);\n messagebar.params = extend(defaults, params);\n\n // El\n const $el = $(messagebar.params.el);\n if ($el.length === 0) return messagebar;\n if ($el[0].f7Messagebar) return $el[0].f7Messagebar;\n $el[0].f7Messagebar = messagebar;\n\n // Page and PageContent\n const $pageEl = $el.parents('.page').eq(0);\n const $pageContentEl = $pageEl.find('.page-content').eq(0);\n\n // Area\n const $areaEl = $el.find('.messagebar-area');\n\n // Textarea\n let $textareaEl;\n if (messagebar.params.textareaEl) {\n $textareaEl = $(messagebar.params.textareaEl);\n } else {\n $textareaEl = $el.find('textarea');\n }\n\n // Attachments & Library\n const $attachmentsEl = $el.find('.messagebar-attachments');\n const $sheetEl = $el.find('.messagebar-sheet');\n if (messagebar.params.top) {\n $el.addClass('messagebar-top');\n }\n extend(messagebar, {\n $el,\n el: $el[0],\n $areaEl,\n areaEl: $areaEl[0],\n $textareaEl,\n textareaEl: $textareaEl[0],\n $attachmentsEl,\n attachmentsEl: $attachmentsEl[0],\n attachmentsVisible: $attachmentsEl.hasClass('messagebar-attachments-visible'),\n $sheetEl,\n sheetEl: $sheetEl[0],\n sheetVisible: $sheetEl.hasClass('messagebar-sheet-visible'),\n $pageEl,\n pageEl: $pageEl[0],\n $pageContentEl,\n pageContentEl: $pageContentEl,\n top: $el.hasClass('messagebar-top') || messagebar.params.top,\n attachments: []\n });\n\n // Events\n function onAppResize() {\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n }\n function onSubmit(e) {\n e.preventDefault();\n }\n function onAttachmentClick(e) {\n const index = $(this).index();\n if ($(e.target).closest('.messagebar-attachment-delete').length) {\n $(this).trigger('messagebar:attachmentdelete', index);\n messagebar.emit('local::attachmentDelete messagebarAttachmentDelete', messagebar, this, index);\n } else {\n $(this).trigger('messagebar:attachmentclick', index);\n messagebar.emit('local::attachmentClick messagebarAttachmentClick', messagebar, this, index);\n }\n }\n function onTextareaChange() {\n messagebar.checkEmptyState();\n messagebar.$el.trigger('messagebar:change');\n messagebar.emit('local::change messagebarChange', messagebar);\n }\n function onTextareaFocus() {\n messagebar.sheetHide();\n messagebar.$el.addClass('messagebar-focused');\n messagebar.$el.trigger('messagebar:focus');\n messagebar.emit('local::focus messagebarFocus', messagebar);\n }\n function onTextareaBlur() {\n messagebar.$el.removeClass('messagebar-focused');\n messagebar.$el.trigger('messagebar:blur');\n messagebar.emit('local::blur messagebarBlur', messagebar);\n }\n messagebar.attachEvents = function attachEvents() {\n $el.on('textarea:resize', onAppResize);\n $el.on('submit', onSubmit);\n $el.on('click', '.messagebar-attachment', onAttachmentClick);\n $textareaEl.on('change input', onTextareaChange);\n $textareaEl.on('focus', onTextareaFocus);\n $textareaEl.on('blur', onTextareaBlur);\n app.on('resize', onAppResize);\n };\n messagebar.detachEvents = function detachEvents() {\n $el.off('textarea:resize', onAppResize);\n $el.off('submit', onSubmit);\n $el.off('click', '.messagebar-attachment', onAttachmentClick);\n $textareaEl.off('change input', onTextareaChange);\n $textareaEl.off('focus', onTextareaFocus);\n $textareaEl.off('blur', onTextareaBlur);\n app.off('resize', onAppResize);\n };\n\n // Install Modules\n messagebar.useModules();\n\n // Init\n messagebar.init();\n return messagebar;\n }\n focus() {\n const messagebar = this;\n messagebar.$textareaEl.focus();\n return messagebar;\n }\n blur() {\n const messagebar = this;\n messagebar.$textareaEl.blur();\n return messagebar;\n }\n clear() {\n const messagebar = this;\n messagebar.$textareaEl.val('').trigger('change');\n return messagebar;\n }\n getValue() {\n const messagebar = this;\n return messagebar.$textareaEl.val().trim();\n }\n setValue(value) {\n const messagebar = this;\n messagebar.$textareaEl.val(value).trigger('change');\n return messagebar;\n }\n setPlaceholder(placeholder) {\n const messagebar = this;\n messagebar.$textareaEl.attr('placeholder', placeholder);\n return messagebar;\n }\n resizePage() {\n const messagebar = this;\n const {\n params,\n $el,\n top,\n $pageEl,\n $pageContentEl,\n $areaEl,\n $textareaEl,\n $sheetEl,\n $attachmentsEl\n } = messagebar;\n const elHeight = $el[0].offsetHeight;\n let maxHeight = params.maxHeight;\n if (top) {\n /*\n Disable at the moment\n const requiredPaddingTop = elHeight + params.topOffset;\n const currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n if (requiredPaddingTop !== currentPaddingTop) {\n if (!maxHeight) {\n maxHeight = $pageEl[0].offsetHeight - currentPaddingTop - $sheetEl.outerHeight() - $attachmentsEl.outerHeight() - parseInt($areaEl.css('margin-top'), 10) - parseInt($areaEl.css('margin-bottom'), 10);\n }\n $textareaEl.css('max-height', `${maxHeight}px`);\n $pageContentEl.css('padding-top', `${requiredPaddingTop}px`);\n $el.trigger('messagebar:resizePage');\n messagebar.emit('local::resizepage messagebarResizePage');\n }\n */\n } else {\n const currentPaddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n const requiredPaddingBottom = elHeight + params.bottomOffset;\n if (requiredPaddingBottom !== currentPaddingBottom && $pageContentEl.length) {\n const currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const pageScrollHeight = $pageContentEl[0].scrollHeight;\n const pageOffsetHeight = $pageContentEl[0].offsetHeight;\n const pageScrollTop = $pageContentEl[0].scrollTop;\n const scrollOnBottom = pageScrollTop === pageScrollHeight - pageOffsetHeight;\n if (!maxHeight) {\n maxHeight = $pageEl[0].offsetHeight - currentPaddingTop - $sheetEl.outerHeight() - $attachmentsEl.outerHeight() - parseInt($areaEl.css('margin-top'), 10) - parseInt($areaEl.css('margin-bottom'), 10);\n }\n $textareaEl.css('max-height', `${maxHeight}px`);\n $pageContentEl.css('padding-bottom', `${requiredPaddingBottom}px`);\n if (scrollOnBottom) {\n $pageContentEl.scrollTop($pageContentEl[0].scrollHeight - pageOffsetHeight);\n }\n $el.trigger('messagebar:resizepage');\n messagebar.emit('local::resizePage messagebarResizePage', messagebar);\n }\n }\n }\n checkEmptyState() {\n const messagebar = this;\n const {\n $el,\n $textareaEl\n } = messagebar;\n const value = $textareaEl.val().trim();\n if (value && value.length) {\n $el.addClass('messagebar-with-value');\n } else {\n $el.removeClass('messagebar-with-value');\n }\n }\n attachmentsCreate(innerHTML) {\n if (innerHTML === void 0) {\n innerHTML = '';\n }\n const messagebar = this;\n const $attachmentsEl = $(`
                ${innerHTML}
                `);\n $attachmentsEl.insertBefore(messagebar.$textareaEl);\n extend(messagebar, {\n $attachmentsEl,\n attachmentsEl: $attachmentsEl[0]\n });\n return messagebar;\n }\n attachmentsShow(innerHTML) {\n if (innerHTML === void 0) {\n innerHTML = '';\n }\n const messagebar = this;\n messagebar.$attachmentsEl = messagebar.$el.find('.messagebar-attachments');\n if (messagebar.$attachmentsEl.length === 0) {\n messagebar.attachmentsCreate(innerHTML);\n }\n messagebar.$el.addClass('messagebar-attachments-visible');\n messagebar.attachmentsVisible = true;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n attachmentsHide() {\n const messagebar = this;\n messagebar.$el.removeClass('messagebar-attachments-visible');\n messagebar.attachmentsVisible = false;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n attachmentsToggle() {\n const messagebar = this;\n if (messagebar.attachmentsVisible) {\n messagebar.attachmentsHide();\n } else {\n messagebar.attachmentsShow();\n }\n return messagebar;\n }\n renderAttachment(attachment) {\n const messagebar = this;\n if (messagebar.params.renderAttachment) {\n return messagebar.params.renderAttachment.call(messagebar, attachment);\n }\n return `\n
                \n \n \n
                \n `;\n }\n renderAttachments() {\n const messagebar = this;\n let html;\n if (messagebar.params.renderAttachments) {\n html = messagebar.params.renderAttachments.call(messagebar, messagebar.attachments);\n } else {\n html = `${messagebar.attachments.map(attachment => messagebar.renderAttachment(attachment)).join('')}`;\n }\n if (messagebar.$attachmentsEl.length === 0) {\n messagebar.attachmentsCreate(html);\n } else {\n messagebar.$attachmentsEl.html(html);\n }\n }\n sheetCreate(innerHTML) {\n if (innerHTML === void 0) {\n innerHTML = '';\n }\n const messagebar = this;\n const $sheetEl = $(`
                ${innerHTML}
                `);\n messagebar.$el.append($sheetEl);\n extend(messagebar, {\n $sheetEl,\n sheetEl: $sheetEl[0]\n });\n return messagebar;\n }\n sheetShow(innerHTML) {\n if (innerHTML === void 0) {\n innerHTML = '';\n }\n const messagebar = this;\n messagebar.$sheetEl = messagebar.$el.find('.messagebar-sheet');\n if (messagebar.$sheetEl.length === 0) {\n messagebar.sheetCreate(innerHTML);\n }\n messagebar.$el.addClass('messagebar-sheet-visible');\n messagebar.sheetVisible = true;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n sheetHide() {\n const messagebar = this;\n messagebar.$el.removeClass('messagebar-sheet-visible');\n messagebar.sheetVisible = false;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n sheetToggle() {\n const messagebar = this;\n if (messagebar.sheetVisible) {\n messagebar.sheetHide();\n } else {\n messagebar.sheetShow();\n }\n return messagebar;\n }\n init() {\n const messagebar = this;\n messagebar.attachEvents();\n messagebar.checkEmptyState();\n return messagebar;\n }\n destroy() {\n const messagebar = this;\n messagebar.emit('local::beforeDestroy messagebarBeforeDestroy', messagebar);\n messagebar.$el.trigger('messagebar:beforedestroy');\n messagebar.detachEvents();\n if (messagebar.$el[0]) {\n messagebar.$el[0].f7Messagebar = null;\n delete messagebar.$el[0].f7Messagebar;\n }\n deleteProps(messagebar);\n }\n}\nexport default Messagebar;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Messagebar from './messagebar-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'messagebar',\n static: {\n Messagebar\n },\n create() {\n const app = this;\n app.messagebar = ConstructorMethods({\n defaultSelector: '.messagebar',\n constructor: Messagebar,\n app,\n domProp: 'f7Messagebar',\n addMethods: 'clear getValue setValue setPlaceholder resizePage focus blur attachmentsCreate attachmentsShow attachmentsHide attachmentsToggle renderAttachments sheetCreate sheetShow sheetHide sheetToggle'.split(' ')\n });\n },\n on: {\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.messagebar-init').each(messagebarEl => {\n app.messagebar.destroy(messagebarEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.messagebar-init').each(messagebarEl => {\n app.messagebar.create(extend({\n el: messagebarEl\n }, $(messagebarEl).dataset()));\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.messagebar-init').each(messagebarEl => {\n app.messagebar.destroy(messagebarEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.messagebar-init').each(messagebarEl => {\n app.messagebar.create(extend({\n el: messagebarEl\n }, $(messagebarEl).dataset()));\n });\n }\n },\n vnode: {\n 'messagebar-init': {\n insert(vnode) {\n const app = this;\n const messagebarEl = vnode.elm;\n app.messagebar.create(extend({\n el: messagebarEl\n }, $(messagebarEl).dataset()));\n },\n destroy(vnode) {\n const app = this;\n const messagebarEl = vnode.elm;\n app.messagebar.destroy(messagebarEl);\n }\n }\n }\n};","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : [classes]));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, elementIndex as g, getTranslate as h, elementTransitionEnd as i, isObject as j, getSlideTransformEl as k, elementStyle as l, elementNextAll as m, nextTick as n, elementPrevAll as o, animateCSSModeScroll as p, extend as q, deleteProps as r, setCSSProperty as s };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, l as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, m as elementNextAll, o as elementPrevAll, h as getTranslate, p as animateCSSModeScroll, n as nextTick, d as now, q as extend, g as elementIndex, c as createElement, r as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n return {\n isSafari: needPerspectiveFix || isSafari(),\n needPerspectiveFix,\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass);\n });\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides[i].classList.add(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n });\n let activeSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n activeSlide = slides[activeIndex];\n }\n if (activeSlide) {\n // Active classes\n activeSlide.classList.add(params.slideActiveClass);\n\n // Next Slide\n let nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n }\n return;\n }\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (swiper.slides[activeIndex]) {\n realIndex = parseInt(swiper.slides[activeIndex].getAttribute('data-swiper-slide-index') || activeIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled) return swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10));\n let loopedSlides = params.loopedSlides || slidesPerView;\n if (loopedSlides % params.slidesPerGroup !== 0) {\n loopedSlides += params.slidesPerGroup - loopedSlides % params.slidesPerGroup;\n }\n swiper.loopedSlides = loopedSlides;\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(swiper.slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n // prepend last slides before start\n if (activeSlideIndex < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeSlideIndex; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n prependSlidesIndexes.push(slides.length - index - 1);\n }\n } else if (activeSlideIndex /* + slidesPerView */ > swiper.slides.length - loopedSlides * 2) {\n slidesAppended = Math.max(activeSlideIndex - (swiper.slides.length - loopedSlides * 2), params.slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlidesIndexes.push(index);\n }\n }\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else {\n if (setTranslate) {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n data.evCache.push(event);\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) data.evCache[pointerIndex] = e;\n const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n prevX: swiper.touches.currentX,\n prevY: swiper.touches.currentY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled && data.evCache.length > 1) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.swipeDirection === 'next' && swiper.allowSlideNext || swiper.swipeDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n // need another loop fix\n swiper.loopFix({\n direction: swiper.swipeDirection,\n setTranslate: true\n });\n loopFixed = true;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === event.pointerId);\n if (pointerIndex >= 0) {\n data.evCache.splice(pointerIndex, 1);\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(event.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(event.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopedSlides: null,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n evCache: []\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","function appendSlide(slides) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n const appendElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.append(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.append(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) appendElement(slides[i]);\n }\n } else {\n appendElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n}\n\nfunction prependSlide(slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n const prependElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.prepend(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.prepend(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) prependElement(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n prependElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide(index, slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.recalcSlides();\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides[i];\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) slidesEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n slidesEl.append(slides);\n }\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n slidesEl.append(slidesBuffer[i]);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n\nfunction Manipulation(_ref) {\n let {\n swiper\n } = _ref;\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}\n\nexport { Manipulation as default };\n","function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n\nexport { effectInit as e };\n","import { k as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}\n\nexport { effectTarget as e };\n","import { i as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformElements,\n allSlides\n } = _ref;\n const {\n activeIndex\n } = swiper;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) {\n transitionEndTarget = transformElements;\n } else {\n transitionEndTarget = transformElements.filter(transformEl => {\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n }\n transitionEndTarget.forEach(el => {\n elementTransitionEnd(el, () => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n}\n\nexport { effectVirtualTransitionEnd as e };\n","import { k as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n const shadowContainer = getSlideTransformEl(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n if (!shadowEl) {\n shadowEl = createElement('div', shadowClass.split(' '));\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\n}\n\nexport { createShadow as c };\n","/**\n * Swiper 10.3.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: September 28, 2023\n */\n\nimport { S as Swiper } from './shared/swiper-core.mjs';\nimport Virtual from './modules/virtual.mjs';\nimport Keyboard from './modules/keyboard.mjs';\nimport Mousewheel from './modules/mousewheel.mjs';\nimport Navigation from './modules/navigation.mjs';\nimport Pagination from './modules/pagination.mjs';\nimport Scrollbar from './modules/scrollbar.mjs';\nimport Parallax from './modules/parallax.mjs';\nimport Zoom from './modules/zoom.mjs';\nimport Controller from './modules/controller.mjs';\nimport A11y from './modules/a11y.mjs';\nimport History from './modules/history.mjs';\nimport HashNavigation from './modules/hash-navigation.mjs';\nimport Autoplay from './modules/autoplay.mjs';\nimport Thumb from './modules/thumbs.mjs';\nimport freeMode from './modules/free-mode.mjs';\nimport Grid from './modules/grid.mjs';\nimport Manipulation from './modules/manipulation.mjs';\nimport EffectFade from './modules/effect-fade.mjs';\nimport EffectCube from './modules/effect-cube.mjs';\nimport EffectFlip from './modules/effect-flip.mjs';\nimport EffectCoverflow from './modules/effect-coverflow.mjs';\nimport EffectCreative from './modules/effect-creative.mjs';\nimport EffectCards from './modules/effect-cards.mjs';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n\nexport { Swiper, Swiper as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n const document = getDocument();\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n const tempDOM = document.createElement('div');\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n // eslint-disable-next-line\n let slideEl;\n if (params.renderSlide) {\n slideEl = params.renderSlide.call(swiper, slide, index);\n if (typeof slideEl === 'string') {\n tempDOM.innerHTML = slideEl;\n slideEl = tempDOM.children[0];\n }\n } else if (swiper.isElement) {\n slideEl = createElement('swiper-slide');\n } else {\n slideEl = createElement('div', swiper.params.slideClass);\n }\n slideEl.setAttribute('data-swiper-slide-index', index);\n if (!params.renderSlide) {\n slideEl.innerHTML = slide;\n }\n if (params.cache) {\n swiper.virtual.cache[index] = slideEl;\n }\n return slideEl;\n }\n function update(force) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides,\n loop: isLoop\n } = swiper.params;\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n }\n let from = activeIndex - slidesBefore;\n let to = activeIndex + slidesAfter;\n if (!isLoop) {\n from = Math.max(from, 0);\n to = Math.min(to, slides.length - 1);\n }\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n if (isLoop && activeIndex >= slidesBefore) {\n from -= slidesBefore;\n if (!centeredSlides) offset += swiper.slidesGrid[0];\n } else if (isLoop && activeIndex < slidesBefore) {\n from = -slidesBefore;\n if (centeredSlides) offset += swiper.slidesGrid[0];\n }\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n slidesBefore,\n slidesAfter\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n emit('virtualUpdate');\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n if (force) {\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\n slideEl.remove();\n });\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n const slideIndex = getSlideIndex(i);\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\n slideEl.remove();\n });\n }\n }\n }\n const loopFrom = isLoop ? -slides.length : 0;\n const loopTo = isLoop ? slides.length * 2 : slides.length;\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n const slideIndex = getSlideIndex(i);\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(slideIndex);\n } else {\n if (i > previousTo) appendIndexes.push(slideIndex);\n if (i < previousFrom) prependIndexes.push(slideIndex);\n }\n }\n }\n appendIndexes.forEach(index => {\n swiper.slidesEl.append(renderSlide(slides[index], index));\n });\n if (isLoop) {\n for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n const index = prependIndexes[i];\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n }\n } else {\n prependIndexes.sort((a, b) => b - a);\n prependIndexes.forEach(index => {\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n });\n }\n elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n onRendered();\n }\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const cachedEl = cache[cachedIndex];\n const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n if (cachedElIndex) {\n cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n let domSlidesAssigned;\n if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n if (slides && slides.length) {\n swiper.virtual.slides = [...slides];\n domSlidesAssigned = true;\n slides.forEach((slideEl, slideIndex) => {\n slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n swiper.virtual.cache[slideIndex] = slideEl;\n slideEl.remove();\n });\n }\n }\n if (!domSlidesAssigned) {\n swiper.virtual.slides = swiper.params.virtual.slides;\n }\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n update();\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}\n\nexport { Virtual as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl) swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}\n\nexport { Keyboard as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n noMousewheelClass: 'swiper-no-mousewheel'\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\n if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0) return true;\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.loop) {\n swiper.loopFix({\n direction: newEvent.direction < 0 ? 'next' : 'prev',\n byMousewheel: true\n });\n }\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n return true;\n }\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n targetEl[method]('mouseenter', handleMouseEnter);\n targetEl[method]('mouseleave', handleMouseLeave);\n targetEl[method]('wheel', handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('addEventListener');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('removeEventListener');\n swiper.mousewheel.enabled = false;\n return true;\n }\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}\n\nexport { Mousewheel as default };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { f as elementOuterSize, g as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const realIndex = swiper.realIndex;\n const newSlideIndex = swiper.getSlideIndexByData(index);\n const currentSlideIndex = swiper.getSlideIndexByData(swiper.realIndex);\n const loopFix = dir => {\n const indexBeforeLoopFix = swiper.activeIndex;\n swiper.loopFix({\n direction: dir,\n activeSlideIndex: newSlideIndex,\n slideTo: false\n });\n const indexAfterFix = swiper.activeIndex;\n if (indexBeforeLoopFix === indexAfterFix) {\n swiper.slideToLoop(realIndex, 0, false, true);\n }\n };\n if (newSlideIndex > swiper.slides.length - swiper.loopedSlides) {\n loopFix(newSlideIndex > currentSlideIndex ? 'next' : 'prev');\n } else if (swiper.params.centeredSlides) {\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (newSlideIndex < Math.floor(slidesPerView / 2)) {\n loopFix('prev');\n }\n }\n swiper.slideToLoop(index);\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\n\nfunction Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n } else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n } else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const {\n scrollbar,\n params\n } = swiper;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const {\n scrollbar,\n el: swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = document.querySelectorAll(params.el);\n } else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(`.${swiper.params.scrollbar.dragClass}`);\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n disableDraggable();\n }\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n el\n } = swiper.scrollbar;\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}\n\nexport { Scrollbar as default };\n","import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n parallax: {\n enabled: false\n }\n });\n const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const rtlFactor = rtl ? -1 : 1;\n const p = el.getAttribute('data-swiper-parallax') || '0';\n let x = el.getAttribute('data-swiper-parallax-x');\n let y = el.getAttribute('data-swiper-parallax-y');\n const scale = el.getAttribute('data-swiper-parallax-scale');\n const opacity = el.getAttribute('data-swiper-parallax-opacity');\n const rotate = el.getAttribute('data-swiper-parallax-rotate');\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n el.style.opacity = currentOpacity;\n }\n let transform = `translate3d(${x}, ${y}, 0px)`;\n if (typeof scale !== 'undefined' && scale !== null) {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n transform += ` scale(${currentScale})`;\n }\n if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n const currentRotate = rotate * progress * -1;\n transform += ` rotate(${currentRotate}deg)`;\n }\n el.style.transform = transform;\n };\n const setTranslate = () => {\n const {\n el,\n slides,\n progress,\n snapGrid,\n isElement\n } = swiper;\n const elements = elementChildren(el, elementsSelector);\n if (swiper.isElement) {\n elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n }\n elements.forEach(subEl => {\n setTransform(subEl, progress);\n });\n slides.forEach((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n setTransform(subEl, slideProgress);\n });\n });\n };\n const setTransition = function (duration) {\n if (duration === void 0) {\n duration = swiper.params.speed;\n }\n const {\n el,\n hostEl\n } = swiper;\n const elements = [...el.querySelectorAll(elementsSelector)];\n if (swiper.isElement) {\n elements.push(...hostEl.querySelectorAll(elementsSelector));\n }\n elements.forEach(parallaxEl => {\n let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n });\n };\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n\nexport { Parallax as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, h as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n originX: 0,\n originY: 0,\n slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n imageEl: undefined,\n imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2) return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) {\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n } else if (zoom.scale <= 1 && gesture.slideEl) {\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n }\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !gesture.slideEl) return;\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth;\n image.height = gesture.imageEl.offsetHeight;\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n if (touchesDiff > 5) {\n swiper.allowClick = false;\n }\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n image.isMoved = true;\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n const {\n originX,\n originY\n } = gesture;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n if (gesture.imageEl) {\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n }\n if (gesture.imageWrapEl) {\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n }\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n }\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n }\n zoom.scale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n currentScale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth;\n imageHeight = gesture.imageEl.offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd();\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}\n\nexport { Zoom as default };\n","import { n as nextTick, i as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n }\n });\n\n swiper.controller = {\n control: undefined\n };\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n }\n function getInterpolateFunction(c) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n if (c.destroyed) return;\n\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n multiplier = 1;\n }\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n if (c.destroyed) return;\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n elementTransitionEnd(c.wrapperEl, () => {\n if (!controlled) return;\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n if (typeof window !== 'undefined' && (\n // eslint-disable-line\n typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n const controlElement = document.querySelector(swiper.params.controller.control);\n if (controlElement && controlElement.swiper) {\n swiper.controller.control = controlElement.swiper;\n } else if (controlElement) {\n const onControllerSwiper = e => {\n swiper.controller.control = e.detail[0];\n swiper.update();\n controlElement.removeEventListener('init', onControllerSwiper);\n };\n controlElement.addEventListener('init', onControllerSwiper);\n }\n return;\n }\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}\n\nexport { Controller as default };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, g as elementIndex } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = () => {\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\nexport { A11y as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.slides[index];\n let value = slugify(slide.getAttribute('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key ? `${key}/` : ''}${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key ? `${key}/` : ''}${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides[i];\n const slideHistory = slugify(slide.getAttribute('data-history'));\n if (slideHistory === value) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) {\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n return;\n }\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n\nexport { History as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n on\n } = _ref;\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n getSlideIndex(_s, hash) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];\n if (!slideWithHash) return 0;\n const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n return index;\n }\n return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n }\n }\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n emit('hashSet');\n } else {\n document.location.hash = activeSlideHash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n }\n if (swiper.params.hashNavigation.watchState) {\n window.addEventListener('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n window.removeEventListener('hashchange', onHashChange);\n }\n };\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n\nexport { HashNavigation as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime;\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n autoplayStartTime = new Date().getTime();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { j as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener('init', onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener('init', onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\n\nexport { Thumb as default };\n","import { d as now, i as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n function onTouchStart() {\n if (swiper.params.cssMode) return;\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n function onTouchMove() {\n if (swiper.params.cssMode) return;\n const {\n touchEventsData: data,\n touches\n } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n if (swiper.params.cssMode) return;\n const {\n params,\n wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}\n\nexport { freeMode as default };\n","function Grid(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n let wasMultiRow;\n const getSpaceBetween = () => {\n let spaceBetween = swiper.params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n return spaceBetween;\n };\n const initSlides = slidesLength => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n slidesPerRow = slidesNumberEvenToRows / rows;\n };\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const {\n slidesPerGroup\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows,\n fill\n } = swiper.params.grid;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.style.order = newSlideOrderIndex;\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.row = row;\n slide.column = column;\n slide.style[getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n };\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const {\n centeredSlides,\n roundLengths\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n if (centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.splice(0, snapGrid.length);\n snapGrid.push(...newSlidesGrid);\n }\n };\n const onInit = () => {\n wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n };\n const onUpdate = () => {\n const {\n params,\n el\n } = swiper;\n const isMultiRow = params.grid && params.grid.rows > 1;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n numFullColumns = 1;\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n wasMultiRow = isMultiRow;\n };\n on('init', onInit);\n on('update', onUpdate);\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize\n };\n}\n\nexport { Grid as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFade as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n const createSlideShadows = (slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n slideEl.append(shadowAfter);\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.forEach(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress, isHorizontal);\n });\n };\n const setTranslate = () => {\n const {\n el,\n wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n swiper.wrapperEl.append(cubeShadowEl);\n }\n cubeShadowEl.style.height = `${swiperWidth}px`;\n } else {\n cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n el.append(cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n slideEl.style.transform = transform;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, isHorizontal);\n }\n }\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`;\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`;\n wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = duration => {\n const {\n el,\n slides\n } = swiper;\n slides.forEach(slideEl => {\n slideEl.style.transitionDuration = `${duration}ms`;\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n subEl.style.transitionDuration = `${duration}ms`;\n });\n });\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n const shadowEl = el.querySelector('.swiper-cube-shadow');\n if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n }\n };\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}\n\nexport { EffectCube as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress) => {\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (!shadowAfter) {\n shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // Set shadows\n swiper.params.flipEffect;\n swiper.slides.forEach(slideEl => {\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows(slideEl, progress);\n });\n };\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n const offset = slideEl.swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFlip as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBeforeEl) {\n shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n };\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}\n\nexport { EffectCoverflow as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n creativeEffect: {\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n const setTranslate = () => {\n const {\n slides,\n wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n }\n const offset = slideEl.swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if (custom && data.shadow || !custom) {\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl && data.shadow) {\n shadowEl = createShadow('creative', slideEl);\n }\n if (shadowEl) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n targetEl.style.opacity = opacityString;\n if (data.origin) {\n targetEl.style.transformOrigin = data.origin;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCreative as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n const setTranslate = () => {\n const {\n slides,\n activeIndex,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = slideEl.swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n if (progress < 0) {\n // next\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n /* eslint-disable */\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n scale(${scaleString})\n `;\n /* eslint-enable */\n\n if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl) {\n shadowEl = createShadow('cards', slideEl);\n }\n if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCards as default };\n","/* underscore in name -> watch for changes */\nconst paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopedSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideNextClass', 'slidePrevClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren',\n// modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control'];\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__;\n}\nfunction extend(target, src) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\nfunction needsNavigation(params) {\n if (params === void 0) {\n params = {};\n }\n return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\nfunction needsPagination(params) {\n if (params === void 0) {\n params = {};\n }\n return params.pagination && typeof params.pagination.el === 'undefined';\n}\nfunction needsScrollbar(params) {\n if (params === void 0) {\n params = {};\n }\n return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\nfunction uniqueClasses(classNames) {\n if (classNames === void 0) {\n classNames = '';\n }\n const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n const unique = [];\n classes.forEach(c => {\n if (unique.indexOf(c) < 0) unique.push(c);\n });\n return unique.join(' ');\n}\nfunction attrToProp(attrName) {\n if (attrName === void 0) {\n attrName = '';\n }\n return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', ''));\n}\nfunction wrapperClass(className) {\n if (className === void 0) {\n className = '';\n }\n if (!className) return 'swiper-wrapper';\n if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`;\n return className;\n}\n\nfunction updateSwiper(_ref) {\n let {\n swiper,\n slides,\n passedParams,\n changedParams,\n nextEl,\n prevEl,\n scrollbarEl,\n paginationEl\n } = _ref;\n const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass');\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs\n } = swiper;\n let needThumbsInit;\n let needControllerInit;\n let needPaginationInit;\n let needScrollbarInit;\n let needNavigationInit;\n let loopNeedDestroy;\n let loopNeedEnable;\n let loopNeedReloop;\n if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) {\n needThumbsInit = true;\n }\n if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n needControllerInit = true;\n }\n if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n needPaginationInit = true;\n }\n if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n needScrollbarInit = true;\n }\n if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n needNavigationInit = true;\n }\n const destroyModule = mod => {\n if (!swiper[mod]) return;\n swiper[mod].destroy();\n if (mod === 'navigation') {\n if (swiper.isElement) {\n swiper[mod].prevEl.remove();\n swiper[mod].nextEl.remove();\n }\n currentParams[mod].prevEl = undefined;\n currentParams[mod].nextEl = undefined;\n swiper[mod].prevEl = undefined;\n swiper[mod].nextEl = undefined;\n } else {\n if (swiper.isElement) {\n swiper[mod].el.remove();\n }\n currentParams[mod].el = undefined;\n swiper[mod].el = undefined;\n }\n };\n if (changedParams.includes('loop') && swiper.isElement) {\n if (currentParams.loop && !passedParams.loop) {\n loopNeedDestroy = true;\n } else if (!currentParams.loop && passedParams.loop) {\n loopNeedEnable = true;\n } else {\n loopNeedReloop = true;\n }\n }\n updateParams.forEach(key => {\n if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n extend(currentParams[key], passedParams[key]);\n if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) {\n destroyModule(key);\n }\n } else {\n const newValue = passedParams[key];\n if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n if (newValue === false) {\n destroyModule(key);\n }\n } else {\n currentParams[key] = passedParams[key];\n }\n }\n });\n if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {\n virtual.slides = slides;\n virtual.update(true);\n }\n if (changedParams.includes('children') && slides && currentParams.loop) {\n loopNeedReloop = true;\n }\n if (needThumbsInit) {\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n if (needControllerInit) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (needPaginationInit) {\n if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) {\n paginationEl = document.createElement('div');\n paginationEl.classList.add('swiper-pagination');\n paginationEl.part.add('pagination');\n swiper.el.appendChild(paginationEl);\n }\n if (paginationEl) currentParams.pagination.el = paginationEl;\n pagination.init();\n pagination.render();\n pagination.update();\n }\n if (needScrollbarInit) {\n if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) {\n scrollbarEl = document.createElement('div');\n scrollbarEl.classList.add('swiper-scrollbar');\n scrollbarEl.part.add('scrollbar');\n swiper.el.appendChild(scrollbarEl);\n }\n if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n if (needNavigationInit) {\n if (swiper.isElement) {\n if (!nextEl || typeof nextEl === 'string') {\n nextEl = document.createElement('div');\n nextEl.classList.add('swiper-button-next');\n nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg;\n nextEl.part.add('button-next');\n swiper.el.appendChild(nextEl);\n }\n if (!prevEl || typeof prevEl === 'string') {\n prevEl = document.createElement('div');\n prevEl.classList.add('swiper-button-prev');\n prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg;\n prevEl.part.add('button-prev');\n swiper.el.appendChild(prevEl);\n }\n }\n if (nextEl) currentParams.navigation.nextEl = nextEl;\n if (prevEl) currentParams.navigation.prevEl = prevEl;\n navigation.init();\n navigation.update();\n }\n if (changedParams.includes('allowSlideNext')) {\n swiper.allowSlideNext = passedParams.allowSlideNext;\n }\n if (changedParams.includes('allowSlidePrev')) {\n swiper.allowSlidePrev = passedParams.allowSlidePrev;\n }\n if (changedParams.includes('direction')) {\n swiper.changeDirection(passedParams.direction, false);\n }\n if (loopNeedDestroy || loopNeedReloop) {\n swiper.loopDestroy();\n }\n if (loopNeedEnable || loopNeedReloop) {\n swiper.loopCreate();\n }\n swiper.update();\n}\n\nexport { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w };\n","import { e as extend, i as isObject, c as attrToProp, p as paramsList } from './update-swiper.mjs';\nimport { d as defaults } from './swiper-core.mjs';\n\nconst formatValue = val => {\n if (parseFloat(val) === Number(val)) return Number(val);\n if (val === 'true') return true;\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'null') return null;\n if (val === 'undefined') return undefined;\n if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('\"')) {\n let v;\n try {\n v = JSON.parse(val);\n } catch (err) {\n v = val;\n }\n return v;\n }\n return val;\n};\nconst modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom'];\nfunction getParams(element, propName, propValue) {\n const params = {};\n const passedParams = {};\n extend(params, defaults);\n const localParamsList = [...paramsList, 'on'];\n const allowedParams = localParamsList.map(key => key.replace(/_/, ''));\n\n // First check props\n localParamsList.forEach(paramName => {\n paramName = paramName.replace('_', '');\n if (typeof element[paramName] !== 'undefined') {\n passedParams[paramName] = element[paramName];\n }\n });\n\n // Attributes\n const attrsList = [...element.attributes];\n if (typeof propName === 'string' && typeof propValue !== 'undefined') {\n attrsList.push({\n name: propName,\n value: isObject(propValue) ? {\n ...propValue\n } : propValue\n });\n }\n attrsList.forEach(attr => {\n const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0];\n if (moduleParam) {\n const parentObjName = attrToProp(moduleParam);\n const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]);\n if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {};\n if (passedParams[parentObjName] === true) {\n passedParams[parentObjName] = {\n enabled: true\n };\n }\n passedParams[parentObjName][subObjName] = formatValue(attr.value);\n } else {\n const name = attrToProp(attr.name);\n if (!allowedParams.includes(name)) return;\n const value = formatValue(attr.value);\n if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) {\n if (passedParams[name].constructor !== Object) {\n passedParams[name] = {};\n }\n passedParams[name].enabled = !!value;\n } else {\n passedParams[name] = value;\n }\n }\n });\n extend(params, passedParams);\n if (params.navigation) {\n params.navigation = {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next',\n ...(params.navigation !== true ? params.navigation : {})\n };\n } else if (params.navigation === false) {\n delete params.navigation;\n }\n if (params.scrollbar) {\n params.scrollbar = {\n el: '.swiper-scrollbar',\n ...(params.scrollbar !== true ? params.scrollbar : {})\n };\n } else if (params.scrollbar === false) {\n delete params.scrollbar;\n }\n if (params.pagination) {\n params.pagination = {\n el: '.swiper-pagination',\n ...(params.pagination !== true ? params.pagination : {})\n };\n } else if (params.pagination === false) {\n delete params.pagination;\n }\n return {\n params,\n passedParams\n };\n}\n\nexport { getParams as g };\n","/**\n * Swiper Custom Element 10.3.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: September 28, 2023\n */\n\nimport './swiper-bundle.mjs';\nimport { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs';\nimport { g as getParams } from './shared/get-element-params.mjs';\nimport { S as Swiper } from './shared/swiper-core.mjs';\n\n/* eslint-disable spaced-comment */\n\nconst SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;overflow:clip;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}`\nconst SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`\n\nclass DummyHTMLElement {}\nconst ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement;\nconst arrowSvg = `\n `;\nconst addStyle = (shadowRoot, styles) => {\n if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) {\n const styleSheet = new CSSStyleSheet();\n styleSheet.replaceSync(styles);\n shadowRoot.adoptedStyleSheets = [styleSheet];\n } else {\n const style = document.createElement('style');\n style.rel = 'stylesheet';\n style.textContent = styles;\n shadowRoot.appendChild(style);\n }\n};\nclass SwiperContainer extends ClassToExtend {\n constructor() {\n super();\n this.attachShadow({\n mode: 'open'\n });\n }\n static get nextButtonSvg() {\n return arrowSvg;\n }\n static get prevButtonSvg() {\n return arrowSvg.replace('/>', ' transform-origin=\"center\" transform=\"rotate(180)\"/>');\n }\n cssStyles() {\n return [SwiperCSS,\n // eslint-disable-line\n ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\\n');\n }\n cssLinks() {\n return this.injectStylesUrls || [];\n }\n calcSlideSlots() {\n const currentSideSlots = this.slideSlots || 0;\n // slide slots\n const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => {\n return parseInt(child.getAttribute('slot').split('slide-')[1], 10);\n });\n this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0;\n if (!this.rendered) return;\n if (this.slideSlots > currentSideSlots) {\n for (let i = currentSideSlots; i < this.slideSlots; i += 1) {\n const slideEl = document.createElement('swiper-slide');\n slideEl.setAttribute('part', `slide slide-${i + 1}`);\n const slotEl = document.createElement('slot');\n slotEl.setAttribute('name', `slide-${i + 1}`);\n slideEl.appendChild(slotEl);\n this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl);\n }\n } else if (this.slideSlots < currentSideSlots) {\n const slides = this.swiper.slides;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (i > this.slideSlots) {\n slides[i].remove();\n }\n }\n }\n }\n render() {\n if (this.rendered) return;\n this.calcSlideSlots();\n\n // local styles\n let localStyles = this.cssStyles();\n if (this.slideSlots > 0) {\n localStyles = localStyles.replace(/::slotted\\(([a-z-0-9.]*)\\)/g, '$1');\n }\n if (localStyles.length) {\n addStyle(this.shadowRoot, localStyles);\n }\n this.cssLinks().forEach(url => {\n const linkExists = this.shadowRoot.querySelector(`link[href=\"${url}\"]`);\n if (linkExists) return;\n const linkEl = document.createElement('link');\n linkEl.rel = 'stylesheet';\n linkEl.href = url;\n this.shadowRoot.appendChild(linkEl);\n });\n // prettier-ignore\n const el = document.createElement('div');\n el.classList.add('swiper');\n el.part = 'container';\n\n // prettier-ignore\n el.innerHTML = `\n \n
                \n \n ${Array.from({\n length: this.slideSlots\n }).map((_, index) => `\n \n \n \n `).join('')}\n
                \n \n ${needsNavigation(this.passedParams) ? `\n
                ${this.constructor.prevButtonSvg}
                \n
                ${this.constructor.nextButtonSvg}
                \n ` : ''}\n ${needsPagination(this.passedParams) ? `\n
                \n ` : ''}\n ${needsScrollbar(this.passedParams) ? `\n
                \n ` : ''}\n `;\n this.shadowRoot.appendChild(el);\n this.rendered = true;\n }\n initialize() {\n var _this = this;\n if (this.initialized) return;\n this.initialized = true;\n const {\n params: swiperParams,\n passedParams\n } = getParams(this);\n this.swiperParams = swiperParams;\n this.passedParams = passedParams;\n delete this.swiperParams.init;\n this.render();\n\n // eslint-disable-next-line\n this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), {\n ...(swiperParams.virtual ? {} : {\n observer: true,\n observeSlideChildren: this.slideSlots > 0\n }),\n ...swiperParams,\n touchEventsTarget: 'container',\n onAny: function (name) {\n if (name === 'observerUpdate') {\n _this.calcSlideSlots();\n }\n const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase();\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n const event = new CustomEvent(eventName, {\n detail: args,\n bubbles: name !== 'hashChange',\n cancelable: true\n });\n _this.dispatchEvent(event);\n }\n });\n }\n connectedCallback() {\n if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) {\n return;\n }\n if (this.init === false || this.getAttribute('init') === 'false') {\n return;\n }\n this.initialize();\n }\n disconnectedCallback() {\n if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) {\n return;\n }\n if (this.swiper && this.swiper.destroy) {\n this.swiper.destroy();\n }\n this.initialized = false;\n }\n updateSwiperOnPropChange(propName, propValue) {\n const {\n params: swiperParams,\n passedParams\n } = getParams(this, propName, propValue);\n this.passedParams = passedParams;\n this.swiperParams = swiperParams;\n updateSwiper({\n swiper: this.swiper,\n passedParams: this.passedParams,\n changedParams: [attrToProp(propName)],\n ...(propName === 'navigation' && passedParams[propName] ? {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next'\n } : {}),\n ...(propName === 'pagination' && passedParams[propName] ? {\n paginationEl: '.swiper-pagination'\n } : {}),\n ...(propName === 'scrollbar' && passedParams[propName] ? {\n scrollbarEl: '.swiper-scrollbar'\n } : {})\n });\n }\n attributeChangedCallback(attr, prevValue, newValue) {\n if (!this.initialized) return;\n if (prevValue === 'true' && newValue === null) {\n newValue = false;\n }\n this.updateSwiperOnPropChange(attr, newValue);\n }\n static get observedAttributes() {\n const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase());\n return attrs;\n }\n}\nparamsList.forEach(paramName => {\n if (paramName === 'init') return;\n paramName = paramName.replace('_', '');\n Object.defineProperty(SwiperContainer.prototype, paramName, {\n configurable: true,\n get() {\n return (this.passedParams || {})[paramName];\n },\n set(value) {\n if (!this.passedParams) this.passedParams = {};\n this.passedParams[paramName] = value;\n if (!this.initialized) return;\n this.updateSwiperOnPropChange(paramName, value);\n }\n });\n});\nclass SwiperSlide extends ClassToExtend {\n constructor() {\n super();\n this.attachShadow({\n mode: 'open'\n });\n }\n render() {\n const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true';\n addStyle(this.shadowRoot, SwiperSlideCSS);\n this.shadowRoot.appendChild(document.createElement('slot'));\n if (lazy) {\n const lazyDiv = document.createElement('div');\n lazyDiv.classList.add('swiper-lazy-preloader');\n lazyDiv.part.add('preloader');\n this.shadowRoot.appendChild(lazyDiv);\n }\n }\n initialize() {\n this.render();\n }\n connectedCallback() {\n this.initialize();\n }\n}\n\n// eslint-disable-next-line\nconst register = () => {\n if (typeof window === 'undefined') return;\n if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer);\n if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide);\n};\nif (typeof window !== 'undefined') {\n window.SwiperElementRegisterParams = params => {\n paramsList.push(...params);\n };\n}\n\nexport { SwiperContainer, SwiperSlide, register };\n","// eslint-disable-next-line\nimport Swiper from 'swiper/bundle';\n// eslint-disable-next-line\nimport { register } from 'swiper/element/bundle';\nimport $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nregister();\n\n\n\nfunction initSwiper(swiperEl) {\n const app = this;\n const $swiperEl = $(swiperEl);\n if ($swiperEl.length === 0) return;\n const isElement = $swiperEl[0].swiper && $swiperEl[0].swiper.isElement;\n if ($swiperEl[0].swiper && !$swiperEl[0].swiper.isElement) return;\n let initialSlide;\n let params = {};\n let isTabs;\n let isRoutableTabs;\n if ($swiperEl.hasClass('tabs')) {\n initialSlide = $swiperEl.children('swiper-slide').indexOf($swiperEl.children('.tab-active')[0]);\n isTabs = true;\n isRoutableTabs = $swiperEl.find('.tabs-routable').length > 0;\n }\n if ($swiperEl.attr('data-swiper')) {\n params = JSON.parse($swiperEl.attr('data-swiper'));\n } else if ($swiperEl[0].f7SwiperParams) {\n params = $swiperEl[0].f7SwiperParams;\n } else {\n params = $swiperEl.dataset();\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (typeof value === 'string' && value.indexOf('{') === 0 && value.indexOf('}') > 0) {\n try {\n params[key] = JSON.parse(value);\n } catch (e) {\n // not JSON\n }\n }\n });\n }\n if (typeof params.initialSlide === 'undefined' && typeof initialSlide !== 'undefined') {\n params.initialSlide = initialSlide;\n }\n const swiper = isElement ? $swiperEl[0].swiper : app.swiper.create($swiperEl[0], params);\n if (isElement) {\n swiper.slideTo(initialSlide, 0);\n }\n function updateSwiper() {\n swiper.update();\n }\n const $tabEl = $swiperEl.parents('.tab').filter(tabEl => {\n return $(tabEl).parent('.tabs').parent('.tabs-animated-wrap, swiper-container.tabs').length === 0;\n }).eq(0);\n $swiperEl.parents('.popup, .login-screen, .sheet-modal, .popover').on('modal:open', updateSwiper);\n $swiperEl.parents('.panel').on('panel:open', updateSwiper);\n if ($tabEl && $tabEl.length) {\n $tabEl.on('tab:show', updateSwiper);\n }\n swiper.on('beforeDestroy', () => {\n $swiperEl.parents('.popup, .login-screen, .sheet-modal, .popover').off('modal:open', updateSwiper);\n $swiperEl.parents('.panel').off('panel:open', updateSwiper);\n if ($tabEl && $tabEl.length) {\n $tabEl.off('tab:show', updateSwiper);\n }\n });\n if (isTabs) {\n swiper.on('slideChange', () => {\n if (isRoutableTabs) {\n let view = app.views.get($swiperEl.parents('.view'));\n if (!view) view = app.views.main;\n const router = view.router;\n const tabRouteUrl = router.findTabRouteUrl($(swiper.slides).eq(swiper.activeIndex)[0]);\n if (tabRouteUrl) {\n setTimeout(() => {\n router.navigate(tabRouteUrl);\n }, 0);\n }\n } else {\n app.tab.show({\n tabEl: $(swiper.slides).eq(swiper.activeIndex)\n });\n }\n });\n }\n}\nexport default {\n name: 'swiper',\n static: {\n Swiper\n },\n create() {\n const app = this;\n app.swiper = ConstructorMethods({\n defaultSelector: '.swiper',\n constructor: Swiper,\n domProp: 'swiper'\n });\n },\n on: {\n pageMounted(page) {\n const app = this;\n page.$el.find('swiper-container.tabs').each(swiperEl => {\n initSwiper.call(app, swiperEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('swiper-container.tabs').each(swiperEl => {\n initSwiper.call(app, swiperEl);\n });\n },\n pageReinit(page) {\n const app = this;\n page.$el.find('swiper-container.tabs').each(swiperEl => {\n const swiper = app.swiper.get(swiperEl);\n if (swiper && swiper.update) swiper.update();\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('swiper-container.tabs').each(swiperEl => {\n initSwiper.call(app, swiperEl);\n });\n },\n tabShow(tabEl) {\n const app = this;\n $(tabEl).find('swiper-container.tabs').each(swiperEl => {\n const swiper = app.swiper.get(swiperEl);\n if (swiper && swiper.update) swiper.update();\n });\n },\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('swiper-container.tabs').each(swiperEl => {\n app.swiper.destroy(swiperEl);\n });\n }\n }\n};","/* eslint indent: [\"off\"] */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, now, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass PhotoBrowser extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const pb = this;\n pb.app = app;\n const defaults = extend({\n on: {}\n }, app.params.photoBrowser);\n\n // Extend defaults with modules params\n pb.useModulesParams(defaults);\n pb.params = extend(defaults, params);\n extend(pb, {\n exposed: false,\n opened: false,\n activeIndex: pb.params.swiper.initialSlide,\n url: pb.params.url,\n swipeToClose: {\n allow: true,\n isTouched: false,\n diff: undefined,\n start: undefined,\n current: undefined,\n started: false,\n activeSlide: undefined,\n timeStart: undefined\n }\n });\n\n // Install Modules\n pb.useModules();\n\n // Init\n pb.init();\n }\n get view() {\n const {\n params,\n app\n } = this;\n return params.view || app.views.main;\n }\n onSlideChange(swiper) {\n const pb = this;\n pb.activeIndex = swiper.activeIndex;\n let current = swiper.activeIndex + 1;\n let total = pb.params.virtualSlides ? pb.params.photos.length : swiper.slides.length;\n if (swiper.params.loop) {\n total -= 2;\n current -= swiper.loopedSlides;\n if (current < 1) current = total + current;\n if (current > total) current -= total;\n }\n const $activeSlideEl = pb.params.virtualSlides ? $(swiper.wrapperEl).find(`.swiper-slide[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : $(swiper.slides).eq(swiper.activeIndex);\n const $previousSlideEl = pb.params.virtualSlides ? $(swiper.wrapperEl).find(`.swiper-slide[data-swiper-slide-index=\"${swiper.previousIndex}\"]`) : $(swiper.slides).eq(swiper.previousIndex);\n let $currentEl = pb.$el.find('.photo-browser-current');\n let $totalEl = pb.$el.find('.photo-browser-total');\n let navbarEl;\n if (pb.params.type === 'page' && pb.params.navbar && $currentEl.length === 0 && pb.app.theme === 'ios') {\n navbarEl = pb.app.navbar.getElByPage(pb.$el);\n if (navbarEl) {\n $currentEl = $(navbarEl).find('.photo-browser-current');\n $totalEl = $(navbarEl).find('.photo-browser-total');\n }\n }\n if ($currentEl.length && $totalEl.length) {\n $currentEl.text(current);\n $totalEl.text(total);\n if (!navbarEl) navbarEl = $currentEl.parents('.navbar')[0];\n if (navbarEl) {\n pb.app.navbar.size(navbarEl);\n }\n }\n\n // Update captions\n if (pb.captions.length > 0) {\n const captionIndex = swiper.params.loop ? $activeSlideEl.attr('data-swiper-slide-index') : pb.activeIndex;\n pb.$captionsContainerEl.find('.photo-browser-caption-active').removeClass('photo-browser-caption-active');\n pb.$captionsContainerEl.find(`[data-caption-index=\"${captionIndex}\"]`).addClass('photo-browser-caption-active');\n }\n\n // Stop Video\n const previousSlideVideo = $previousSlideEl.find('video');\n if (previousSlideVideo.length > 0) {\n if ('pause' in previousSlideVideo[0]) previousSlideVideo[0].pause();\n }\n }\n onTouchStart() {\n const pb = this;\n const swipeToClose = pb.swipeToClose;\n if (!swipeToClose.allow) return;\n swipeToClose.isTouched = true;\n }\n onTouchMove(e) {\n const pb = this;\n const swipeToClose = pb.swipeToClose;\n if (!swipeToClose.isTouched) return;\n if (!swipeToClose.started) {\n swipeToClose.started = true;\n swipeToClose.start = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (pb.params.virtualSlides) {\n swipeToClose.activeSlide = $(pb.swiper.wrapperEl).children('.swiper-slide-active');\n } else {\n swipeToClose.activeSlide = $(pb.swiper.slides).eq(pb.swiper.activeIndex);\n }\n swipeToClose.timeStart = now();\n }\n e.preventDefault();\n swipeToClose.current = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n swipeToClose.diff = swipeToClose.start - swipeToClose.current;\n pb.$el.transition(0).transform(`translate3d(0,${-swipeToClose.diff}px,0)`);\n }\n onTouchEnd() {\n const pb = this;\n const swipeToClose = pb.swipeToClose;\n swipeToClose.isTouched = false;\n if (!swipeToClose.started) {\n swipeToClose.started = false;\n return;\n }\n swipeToClose.started = false;\n swipeToClose.allow = false;\n const diff = Math.abs(swipeToClose.diff);\n const timeDiff = new Date().getTime() - swipeToClose.timeStart;\n if (timeDiff < 300 && diff > 20 || timeDiff >= 300 && diff > 100) {\n nextTick(() => {\n if (pb.$el) {\n if (swipeToClose.diff < 0) pb.$el.addClass('swipe-close-to-bottom');else pb.$el.addClass('swipe-close-to-top');\n }\n pb.emit('local::swipeToClose', pb);\n pb.$el.transform('').transition('');\n pb.close();\n swipeToClose.allow = true;\n });\n return;\n }\n if (diff !== 0) {\n pb.$el.addClass('photo-browser-transitioning').transitionEnd(() => {\n swipeToClose.allow = true;\n pb.$el.removeClass('photo-browser-transitioning');\n });\n } else {\n swipeToClose.allow = true;\n }\n nextTick(() => {\n pb.$el.transform('').transition('');\n });\n }\n\n // Render Functions\n renderNavbar() {\n const pb = this;\n if (pb.params.renderNavbar) return pb.params.renderNavbar.call(pb);\n const iconsColor = pb.params.iconsColor;\n const pageBackLinkText = pb.app.theme === 'ios' && pb.params.pageBackLinkText ? pb.params.pageBackLinkText : '';\n const renderNavbarCount = typeof pb.params.navbarShowCount === 'undefined' ? pb.params.photos.length > 1 : pb.params.navbarShowCount;\n const isPopup = pb.params.type !== 'page';\n return $jsx(\"div\", {\n class: `navbar navbar-photo-browser ${pb.params.theme === 'dark' ? 'navbar-photo-browser-dark' : ''}`\n }, $jsx(\"div\", {\n class: \"navbar-bg\"\n }), $jsx(\"div\", {\n class: \"navbar-inner navbar-inner-centered-title sliding\"\n }, !isPopup && $jsx(\"div\", {\n class: \"left\"\n }, $jsx(\"a\", {\n class: `link ${!pageBackLinkText ? 'icon-only' : ''} back`\n }, $jsx(\"i\", {\n class: `icon icon-back ${iconsColor ? `color-${iconsColor}` : ''}`\n }), pageBackLinkText && $jsx(\"span\", null, pageBackLinkText))), renderNavbarCount && $jsx(\"div\", {\n class: \"title\"\n }, $jsx(\"span\", {\n class: \"photo-browser-current\"\n }), $jsx(\"span\", {\n class: \"photo-browser-of\"\n }, pb.params.navbarOfText), $jsx(\"span\", {\n class: \"photo-browser-total\"\n })), isPopup && (pb.params.popupCloseLinkText || pb.params.popupCloseLinkIcon) && $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link popup-close\",\n \"data-popup\": \".photo-browser-popup\"\n }, pb.params.popupCloseLinkIcon && pb.app.theme === 'ios' && $jsx(\"i\", null, $jsx(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"56\",\n height: \"56\",\n viewBox: \"0 0 56 56\"\n }, $jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M 10.0234 43.0234 C 9.2266 43.8203 9.2031 45.1797 10.0234 45.9766 C 10.8438 46.7734 12.1797 46.7734 13.0000 45.9766 L 28.0000 30.9766 L 43.0000 45.9766 C 43.7969 46.7734 45.1563 46.7969 45.9766 45.9766 C 46.7734 45.1562 46.7734 43.8203 45.9766 43.0234 L 30.9531 28.0000 L 45.9766 13.0000 C 46.7734 12.2031 46.7969 10.8437 45.9766 10.0469 C 45.1328 9.2266 43.7969 9.2266 43.0000 10.0469 L 28.0000 25.0469 L 13.0000 10.0469 C 12.1797 9.2266 10.8203 9.2031 10.0234 10.0469 C 9.2266 10.8672 9.2266 12.2031 10.0234 13.0000 L 25.0234 28.0000 Z\"\n }))), pb.params.popupCloseLinkIcon && pb.app.theme === 'md' && $jsx(\"i\", null, $jsx(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n height: \"24px\",\n viewBox: \"0 0 24 24\",\n width: \"24px\",\n fill: \"currentColor\"\n }, $jsx(\"path\", {\n d: \"M0 0h24v24H0V0z\",\n fill: \"none\"\n }), $jsx(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z\"\n }))), pb.params.popupCloseLinkText && $jsx(\"span\", null, pb.params.popupCloseLinkText)))));\n }\n renderToolbar() {\n const pb = this;\n if (pb.params.renderToolbar) return pb.params.renderToolbar.call(pb);\n const iconsColor = pb.params.iconsColor;\n return $jsx(\"div\", {\n class: \"toolbar toolbar-bottom tabbar\"\n }, $jsx(\"div\", {\n class: \"toolbar-inner\"\n }, $jsx(\"a\", {\n class: \"link photo-browser-prev\"\n }, $jsx(\"i\", {\n class: `icon icon-back ${iconsColor ? `color-${iconsColor}` : ''}`\n })), $jsx(\"a\", {\n class: \"link photo-browser-next\"\n }, $jsx(\"i\", {\n class: `icon icon-forward ${iconsColor ? `color-${iconsColor}` : ''}`\n }))));\n }\n renderThumbs() {\n const pb = this;\n return $jsx(\"div\", {\n class: \"toolbar toolbar-bottom photo-browser-thumbs\"\n }, $jsx(\"div\", {\n class: \"swiper\"\n }, $jsx(\"div\", {\n class: \"swiper-wrapper\"\n }, pb.params.thumbs.map((thumb, index) => pb.renderThumb(thumb, index)))));\n }\n renderCaption(caption, index) {\n const pb = this;\n if (pb.params.renderCaption) return pb.params.renderCaption.call(pb, caption, index);\n return $jsx(\"div\", {\n class: \"photo-browser-caption\",\n \"data-caption-index\": index\n }, caption);\n }\n renderObject(photo, index) {\n const pb = this;\n if (pb.params.renderObject) return pb.params.renderObject.call(pb, photo, index);\n return $jsx(\"div\", {\n class: \"photo-browser-slide photo-browser-object-slide swiper-slide\",\n \"data-swiper-slide-index\": index\n }, photo.html ? photo.html : photo);\n }\n renderLazyPhoto(photo, index) {\n const pb = this;\n if (pb.params.renderLazyPhoto) return pb.params.renderLazyPhoto.call(pb, photo, index);\n return $jsx(\"div\", {\n class: \"photo-browser-slide photo-browser-slide-lazy swiper-slide\",\n \"data-swiper-slide-index\": index\n }, $jsx(\"div\", {\n class: \"swiper-lazy-preloader\"\n }), $jsx(\"span\", {\n class: \"swiper-zoom-container\"\n }, $jsx(\"img\", {\n loading: \"lazy\",\n src: photo.url ? photo.url : photo\n })));\n }\n renderPhoto(photo, index) {\n const pb = this;\n if (pb.params.renderPhoto) return pb.params.renderPhoto.call(pb, photo, index);\n return $jsx(\"div\", {\n class: \"photo-browser-slide swiper-slide\",\n \"data-swiper-slide-index\": index\n }, $jsx(\"span\", {\n class: \"swiper-zoom-container\"\n }, $jsx(\"img\", {\n src: photo.url ? photo.url : photo\n })));\n }\n renderThumb(thumb, index) {\n const pb = this;\n const url = typeof thumb === 'string' ? thumb : thumb.url;\n if (pb.params.renderThumb) return pb.params.renderThumb.call(pb, thumb, index);\n return $jsx(\"div\", {\n class: \"photo-browser-thumbs-slide swiper-slide\",\n \"data-swiper-slide-index\": index\n }, url && $jsx(\"img\", {\n src: url,\n loading: \"lazy\"\n }));\n }\n render() {\n const pb = this;\n if (pb.params.render) return pb.params.render.call(pb, pb.params);\n return $jsx(\"div\", {\n class: `photo-browser photo-browser-${pb.params.theme}`\n }, $jsx(\"div\", {\n class: \"view\"\n }, $jsx(\"div\", {\n class: `page photo-browser-page photo-browser-page-${pb.params.theme} no-toolbar ${!pb.params.navbar ? 'no-navbar' : ''}`,\n \"data-name\": \"photo-browser-page\"\n }, pb.params.navbar && pb.renderNavbar(), pb.params.toolbar && pb.renderToolbar(), pb.params.thumbs && pb.params.thumbs.length && pb.renderThumbs(), $jsx(\"div\", {\n class: `photo-browser-captions photo-browser-captions-${pb.params.captionsTheme || pb.params.theme}`\n }, pb.params.photos.map((photo, index) => {\n if (photo.caption) return pb.renderCaption(photo.caption, index);\n return '';\n })), $jsx(\"div\", {\n class: \"photo-browser-swiper-container swiper\"\n }, $jsx(\"div\", {\n class: \"photo-browser-swiper-wrapper swiper-wrapper\"\n }, !pb.params.virtualSlides && pb.params.photos.map((photo, index) => {\n if (photo.html || (typeof photo === 'string' || photo instanceof String) && photo.indexOf('<') >= 0 && photo.indexOf('>') >= 0) {\n return pb.renderObject(photo, index);\n }\n if (pb.params.lazy === true) {\n return pb.renderLazyPhoto(photo, index);\n }\n return pb.renderPhoto(photo, index);\n }))))));\n }\n renderStandalone() {\n const pb = this;\n if (pb.params.renderStandalone) return pb.params.renderStandalone.call(pb);\n const standaloneHtml = `
                ${pb.render()}
                `;\n return standaloneHtml;\n }\n renderPage() {\n const pb = this;\n if (pb.params.renderPage) return pb.params.renderPage.call(pb);\n const pageHtml = pb.render();\n return pageHtml;\n }\n renderPopup() {\n const pb = this;\n if (pb.params.renderPopup) return pb.params.renderPopup.call(pb);\n const popupHtml = `
                ${pb.render()}
                `;\n return popupHtml;\n }\n\n // Callbacks\n onOpen(type, el) {\n const pb = this;\n const app = pb.app;\n const $el = $(el);\n $el[0].f7PhotoBrowser = pb;\n pb.$el = $el;\n pb.el = $el[0];\n pb.openedIn = type;\n pb.opened = true;\n pb.$swiperContainerEl = pb.$el.find('.photo-browser-swiper-container');\n pb.$swiperWrapperEl = pb.$el.find('.photo-browser-swiper-wrapper');\n pb.slides = pb.$el.find('.photo-browser-slide');\n pb.$captionsContainerEl = pb.$el.find('.photo-browser-captions');\n pb.captions = pb.$el.find('.photo-browser-caption');\n const hasThumbs = pb.params.thumbs && pb.params.thumbs.length > 0;\n\n // Init Swiper\n let clickTimeout;\n let preventThumbsSlide;\n let preventMainSlide;\n const initialSlide = pb.activeIndex;\n const swiperParams = extend({}, pb.params.swiper, {\n initialSlide,\n // cssMode:\n // typeof pb.params.swiper.cssMode === 'undefined' && (app.device.ios || app.device.android)\n // ? true\n // : pb.params.swiper.cssMode,\n on: {\n click(e) {\n clearTimeout(clickTimeout);\n if (pb.params.exposition) {\n clickTimeout = setTimeout(() => {\n pb.expositionToggle();\n }, 350);\n }\n pb.emit('local::tap', e);\n pb.emit('local::click', e);\n },\n doubleClick(e) {\n clearTimeout(clickTimeout);\n pb.emit('local::doubleTap', e);\n pb.emit('local::doubleClick', e);\n },\n slideChange() {\n const swiper = this;\n if (hasThumbs && pb.thumbsSwiper && !preventMainSlide) {\n preventThumbsSlide = true;\n pb.thumbsSwiper.slideTo(pb.swiper.activeIndex);\n setTimeout(() => {\n preventThumbsSlide = false;\n });\n }\n pb.onSlideChange(swiper);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n pb.emit('local::slideChange', ...args);\n },\n transitionStart() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n pb.emit('local::transitionStart', ...args);\n },\n transitionEnd() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n pb.emit('local::transitionEnd', ...args);\n },\n slideChangeTransitionStart() {\n const swiper = this;\n pb.onSlideChange(swiper);\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n pb.emit('local::slideChangeTransitionStart', ...args);\n },\n slideChangeTransitionEnd() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n pb.emit('local::slideChangeTransitionEnd', ...args);\n }\n }\n });\n if (pb.params.swipeToClose && pb.params.type !== 'page') {\n extend(swiperParams.on, {\n touchStart(swiper, e) {\n pb.onTouchStart(e);\n pb.emit('local::touchStart', e);\n },\n touchMoveOpposite(swiper, e) {\n pb.onTouchMove(e);\n pb.emit('local::touchMoveOpposite', e);\n },\n touchEnd(swiper, e) {\n pb.onTouchEnd(e);\n pb.emit('local::touchEnd', e);\n }\n });\n }\n if (pb.params.virtualSlides) {\n extend(swiperParams, {\n virtual: {\n slides: pb.params.photos,\n renderSlide(photo, index) {\n if (photo.html || (typeof photo === 'string' || photo instanceof String) && photo.indexOf('<') >= 0 && photo.indexOf('>') >= 0) {\n return pb.renderObject(photo, index);\n }\n if (pb.params.lazy === true) {\n return pb.renderLazyPhoto(photo, index);\n }\n return pb.renderPhoto(photo, index);\n }\n }\n });\n }\n const window = getWindow();\n pb.swiper = app.swiper ? app.swiper.create(pb.$swiperContainerEl[0], swiperParams) : new window.Swiper(pb.$swiperContainerEl[0], swiperParams);\n if (pb.activeIndex === 0 || pb.params.virtualSlides) {\n pb.onSlideChange(pb.swiper);\n }\n if (hasThumbs) {\n const thumbsSwiperParams = {\n el: pb.$el.find('.photo-browser-thumbs .swiper')[0],\n slidesPerView: 'auto',\n centeredSlides: true,\n spaceBetween: 4,\n watchSlidesProgress: true,\n initialSlide,\n on: {\n touchMove() {\n preventMainSlide = true;\n },\n touchEnd() {\n preventMainSlide = false;\n },\n slideChange(s) {\n if (preventThumbsSlide) return;\n pb.swiper.slideTo(s.activeIndex, 0);\n },\n click(s) {\n if (!s.clickedSlide) return;\n const index = parseInt($(s.clickedSlide).attr('data-swiper-slide-index'), 10);\n s.slideTo(index, 0);\n }\n }\n };\n pb.thumbsSwiper = app.swiper ? app.swiper.create(thumbsSwiperParams) : new window.Swiper(thumbsSwiperParams);\n }\n if (pb.$el) {\n pb.$el.trigger('photobrowser:open');\n }\n pb.emit('local::open photoBrowserOpen', pb);\n }\n onOpened() {\n const pb = this;\n if (pb.$el && pb.params.type === 'standalone') {\n pb.$el.css('animation', 'none');\n }\n if (pb.$el) {\n pb.$el.trigger('photobrowser:opened');\n }\n pb.emit('local::opened photoBrowserOpened', pb);\n }\n onClose() {\n const pb = this;\n if (pb.destroyed) return;\n\n // Destroy Swiper\n if (pb.swiper && pb.swiper.destroy) {\n pb.swiper.destroy(true, false);\n pb.swiper = null;\n delete pb.swiper;\n }\n if (pb.thumbsSwiper && pb.thumbsSwiper.destroy) {\n pb.thumbsSwiper.destroy(true, false);\n pb.thumbsSwiper = null;\n delete pb.thumbsSwiper;\n }\n if (pb.$el) {\n pb.$el.trigger('photobrowser:close');\n }\n pb.emit('local::close photoBrowserClose', pb);\n }\n onClosed() {\n const pb = this;\n if (pb.destroyed) return;\n pb.opened = false;\n pb.$el = null;\n pb.el = null;\n delete pb.$el;\n delete pb.el;\n if (pb.$el) {\n pb.$el.trigger('photobrowser:closed');\n }\n pb.emit('local::closed photoBrowserClosed', pb);\n }\n\n // Open\n openPage() {\n const pb = this;\n if (pb.opened) return pb;\n const pageHtml = pb.renderPage();\n pb.view.router.navigate({\n url: pb.url,\n route: {\n content: pageHtml,\n path: pb.url,\n on: {\n pageBeforeIn(e, page) {\n pb.view.$el.addClass(`with-photo-browser-page with-photo-browser-page-${pb.params.theme}`);\n pb.onOpen('page', page.el);\n },\n pageAfterIn(e, page) {\n pb.onOpened('page', page.el);\n },\n pageBeforeOut(e, page) {\n pb.view.$el.removeClass(`with-photo-browser-page with-photo-browser-page-exposed with-photo-browser-page-${pb.params.theme}`);\n pb.onClose('page', page.el);\n },\n pageAfterOut(e, page) {\n pb.onClosed('page', page.el);\n }\n }\n }\n });\n return pb;\n }\n openStandalone() {\n const pb = this;\n if (pb.opened) return pb;\n const standaloneHtml = pb.renderStandalone();\n const popupParams = {\n backdrop: false,\n content: standaloneHtml,\n on: {\n popupOpen(popup) {\n pb.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n pb.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n pb.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n pb.onClosed('popup', popup.el);\n }\n }\n };\n if (pb.params.routableModals && pb.view) {\n pb.view.router.navigate({\n url: pb.url,\n route: {\n path: pb.url,\n popup: popupParams\n }\n });\n } else {\n pb.modal = pb.app.popup.create(popupParams).open();\n }\n return pb;\n }\n openPopup() {\n const pb = this;\n if (pb.opened) return pb;\n const popupHtml = pb.renderPopup();\n const popupParams = {\n content: popupHtml,\n push: pb.params.popupPush,\n closeByBackdropClick: pb.params.closeByBackdropClick,\n on: {\n popupOpen(popup) {\n pb.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n pb.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n pb.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n pb.onClosed('popup', popup.el);\n }\n }\n };\n if (pb.params.routableModals && pb.view) {\n pb.view.router.navigate({\n url: pb.url,\n route: {\n path: pb.url,\n popup: popupParams\n }\n });\n } else {\n pb.modal = pb.app.popup.create(popupParams).open();\n }\n return pb;\n }\n\n // Exposition\n expositionEnable() {\n const pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.addClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) pb.$el.addClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.addClass('photo-browser-captions-exposed');\n pb.exposed = true;\n return pb;\n }\n expositionDisable() {\n const pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.removeClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) pb.$el.removeClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.removeClass('photo-browser-captions-exposed');\n pb.exposed = false;\n return pb;\n }\n expositionToggle() {\n const pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.toggleClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) pb.$el.toggleClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.toggleClass('photo-browser-captions-exposed');\n pb.exposed = !pb.exposed;\n return pb;\n }\n open(index) {\n const pb = this;\n const type = pb.params.type;\n if (pb.opened) {\n if (pb.swiper && typeof index !== 'undefined') {\n pb.swiper.slideTo(parseInt(index, 10));\n }\n return pb;\n }\n if (typeof index !== 'undefined') {\n pb.activeIndex = index;\n }\n if (type === 'standalone') {\n pb.openStandalone();\n }\n if (type === 'page') {\n pb.openPage();\n }\n if (type === 'popup') {\n pb.openPopup();\n }\n return pb;\n }\n close() {\n const pb = this;\n if (!pb.opened) return pb;\n if (pb.params.routableModals && pb.view || pb.openedIn === 'page') {\n pb.view.router.back();\n } else {\n pb.modal.once('modalClosed', () => {\n nextTick(() => {\n if (pb.destroyed) return;\n pb.modal.destroy();\n delete pb.modal;\n });\n });\n pb.modal.close();\n }\n return pb;\n }\n // eslint-disable-next-line\n init() {}\n destroy() {\n let pb = this;\n pb.emit('local::beforeDestroy photoBrowserBeforeDestroy', pb);\n if (pb.$el) {\n pb.$el.trigger('photobrowser:beforedestroy');\n pb.$el[0].f7PhotoBrowser = null;\n delete pb.$el[0].f7PhotoBrowser;\n }\n deleteProps(pb);\n pb.destroyed = true;\n pb = null;\n }\n}\nexport default PhotoBrowser;","import PhotoBrowser from './photo-browser-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'photoBrowser',\n params: {\n photoBrowser: {\n photos: [],\n thumbs: [],\n exposition: true,\n expositionHideCaptions: false,\n type: 'standalone',\n navbar: true,\n toolbar: true,\n theme: 'light',\n captionsTheme: undefined,\n iconsColor: undefined,\n popupPush: false,\n swipeToClose: true,\n pageBackLinkText: 'Back',\n popupCloseLinkText: undefined,\n popupCloseLinkIcon: true,\n navbarOfText: 'of',\n navbarShowCount: undefined,\n view: undefined,\n url: 'photos/',\n routableModals: false,\n virtualSlides: true,\n lazy: true,\n closeByBackdropClick: true,\n renderNavbar: undefined,\n renderToolbar: undefined,\n renderCaption: undefined,\n renderObject: undefined,\n renderLazyPhoto: undefined,\n renderPhoto: undefined,\n renderThumb: undefined,\n renderPage: undefined,\n renderPopup: undefined,\n renderStandalone: undefined,\n swiper: {\n cssMode: false,\n initialSlide: 0,\n spaceBetween: 20,\n speed: 300,\n loop: false,\n keyboard: {\n enabled: true\n },\n navigation: {\n nextEl: '.photo-browser-next',\n prevEl: '.photo-browser-prev'\n },\n zoom: {\n enabled: true,\n maxRatio: 3,\n minRatio: 1\n }\n }\n }\n },\n create() {\n const app = this;\n app.photoBrowser = ConstructorMethods({\n defaultSelector: '.photo-browser-popup, .photo-browser-page',\n constructor: PhotoBrowser,\n app,\n domProp: 'f7PhotoBrowser'\n });\n },\n static: {\n PhotoBrowser\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, now, nextTick } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Notification extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.notification, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const notification = this;\n notification.app = app;\n notification.params = extendedParams;\n const {\n icon,\n title,\n titleRightText,\n subtitle,\n text,\n closeButton,\n closeTimeout,\n cssClass,\n closeOnClick\n } = notification.params;\n let $el;\n if (!notification.params.el) {\n // Find Element\n const notificationHtml = notification.render({\n icon,\n title,\n titleRightText,\n subtitle,\n text,\n closeButton,\n cssClass\n });\n $el = $(notificationHtml);\n } else {\n $el = $(notification.params.el);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return notification.destroy();\n }\n extend(notification, {\n $el,\n el: $el[0],\n type: 'notification'\n });\n $el[0].f7Modal = notification;\n if (closeButton) {\n $el.find('.notification-close-button').on('click', () => {\n notification.close();\n });\n }\n $el.on('click', e => {\n if (closeButton && $(e.target).closest('.notification-close-button').length) {\n return;\n }\n notification.emit('local::click notificationClick', notification);\n if (closeOnClick) notification.close();\n });\n notification.on('beforeDestroy', () => {\n $el.off('click');\n });\n\n /* Touch Events */\n let isTouched;\n let isMoved;\n let isScrolling;\n let touchesDiff;\n let touchStartTime;\n let notificationHeight;\n const touchesStart = {};\n function handleTouchStart(e) {\n if (isTouched) return;\n isTouched = true;\n isMoved = false;\n isScrolling = undefined;\n touchStartTime = now();\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) < Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n if (!isMoved) {\n notification.$el.removeClass('notification-transitioning');\n notification.$el.transition(0);\n notificationHeight = notification.$el[0].offsetHeight / 2;\n }\n isMoved = true;\n touchesDiff = pageY - touchesStart.y;\n let newTranslate = touchesDiff;\n if (touchesDiff > 0) {\n newTranslate = touchesDiff ** 0.8;\n }\n notification.$el.transform(`translate3d(0, ${newTranslate}px, 0)`);\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n if (touchesDiff === 0) {\n return;\n }\n const timeDiff = now() - touchStartTime;\n notification.$el.transition('');\n notification.$el.addClass('notification-transitioning');\n notification.$el.transform('');\n if (touchesDiff < -10 && timeDiff < 300 || -touchesDiff >= notificationHeight / 1) {\n notification.close();\n }\n }\n function attachTouchEvents() {\n notification.$el.on(app.touchEvents.start, handleTouchStart, {\n passive: true\n });\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n function detachTouchEvents() {\n notification.$el.off(app.touchEvents.start, handleTouchStart, {\n passive: true\n });\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n let timeoutId;\n function closeOnTimeout() {\n timeoutId = nextTick(() => {\n if (isTouched && isMoved) {\n closeOnTimeout();\n return;\n }\n notification.close();\n }, closeTimeout);\n }\n notification.on('open', () => {\n if (notification.params.swipeToClose) {\n attachTouchEvents();\n }\n $('.notification.modal-in').each(openedEl => {\n const notificationInstance = app.notification.get(openedEl);\n if (openedEl !== notification.el && notificationInstance) {\n notificationInstance.close();\n }\n });\n if (closeTimeout) {\n closeOnTimeout();\n }\n });\n notification.on('close beforeDestroy', () => {\n if (notification.params.swipeToClose) {\n detachTouchEvents();\n }\n clearTimeout(timeoutId);\n });\n return notification;\n }\n render() {\n const notification = this;\n if (notification.params.render) return notification.params.render.call(notification, notification);\n const {\n icon,\n title,\n titleRightText,\n subtitle,\n text,\n closeButton,\n cssClass\n } = notification.params;\n return $jsx(\"div\", {\n class: `notification ${icon ? 'notification-with-icon' : ''} ${cssClass || ''}`\n }, $jsx(\"div\", {\n class: \"notification-header\"\n }, icon && $jsx(\"div\", {\n class: \"notification-icon\"\n }, icon), title && $jsx(\"div\", {\n class: \"notification-title\"\n }, title), titleRightText && $jsx(\"div\", {\n class: \"notification-title-right-text\"\n }, titleRightText), closeButton && $jsx(\"span\", {\n class: \"notification-close-button\"\n })), $jsx(\"div\", {\n class: \"notification-content\"\n }, subtitle && $jsx(\"div\", {\n class: \"notification-subtitle\"\n }, subtitle), text && $jsx(\"div\", {\n class: \"notification-text\"\n }, text)));\n }\n}\nexport default Notification;","import { extend } from '../../shared/utils.js';\nimport Notification from './notification-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'notification',\n static: {\n Notification\n },\n create() {\n const app = this;\n app.notification = extend({}, ModalMethods({\n app,\n constructor: Notification,\n defaultSelector: '.notification.modal-in'\n }));\n },\n params: {\n notification: {\n icon: null,\n title: null,\n titleRightText: null,\n subtitle: null,\n text: null,\n closeButton: false,\n closeTimeout: null,\n closeOnClick: false,\n swipeToClose: true,\n cssClass: null,\n render: null,\n containerEl: null\n }\n }\n};","/* eslint \"no-useless-escape\": \"off\" */\nimport $ from '../../shared/dom7.js';\nimport { extend, id, nextTick, deleteProps, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Autocomplete extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const ac = this;\n ac.app = app;\n const device = getDevice();\n const defaults = extend({\n on: {}\n }, app.params.autocomplete);\n\n // Extend defaults with modules params\n ac.useModulesParams(defaults);\n ac.params = extend(defaults, params);\n let $openerEl;\n if (ac.params.openerEl) {\n $openerEl = $(ac.params.openerEl);\n if ($openerEl.length) $openerEl[0].f7Autocomplete = ac;\n }\n let $inputEl;\n if (ac.params.inputEl) {\n $inputEl = $(ac.params.inputEl);\n if ($inputEl.length) $inputEl[0].f7Autocomplete = ac;\n }\n const uniqueId = id();\n let url = params.url;\n if (!url && $openerEl && $openerEl.length) {\n if ($openerEl.attr('href')) url = $openerEl.attr('href');else if ($openerEl.find('a').length > 0) {\n url = $openerEl.find('a').attr('href');\n }\n }\n if (!url || url === '#' || url === '') url = ac.params.url;\n const inputType = ac.params.multiple ? 'checkbox' : 'radio';\n extend(ac, {\n $openerEl,\n openerEl: $openerEl && $openerEl[0],\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n id: uniqueId,\n url,\n value: ac.params.value || [],\n inputType,\n inputName: `${inputType}-${uniqueId}`,\n $modalEl: undefined,\n $dropdownEl: undefined\n });\n let previousQuery = '';\n function onInputChange() {\n let query = ac.$inputEl.val().trim();\n if (!ac.params.source) return;\n ac.params.source.call(ac, query, items => {\n let itemsHTML = '';\n const limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;\n ac.items = items;\n let regExp;\n if (ac.params.highlightMatches) {\n query = query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n regExp = new RegExp(`(${query})`, 'i');\n }\n let firstValue;\n let firstItem;\n for (let i = 0; i < limit; i += 1) {\n const itemValue = typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];\n const itemText = typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i];\n if (i === 0) {\n firstValue = itemValue;\n firstItem = ac.items[i];\n }\n itemsHTML += ac.renderItem({\n value: itemValue,\n text: ac.params.highlightMatches ? itemText.replace(regExp, '$1') : itemText\n }, i);\n }\n if (itemsHTML === '' && query === '' && ac.params.dropdownPlaceholderText) {\n itemsHTML += ac.renderItem({\n placeholder: true,\n text: ac.params.dropdownPlaceholderText\n });\n }\n ac.$dropdownEl.find('ul').html(itemsHTML);\n if (ac.params.typeahead) {\n if (!firstValue || !firstItem) {\n return;\n }\n if (firstValue.toLowerCase().indexOf(query.toLowerCase()) !== 0) {\n return;\n }\n if (previousQuery.toLowerCase() === query.toLowerCase()) {\n ac.value = [];\n return;\n }\n if (previousQuery.toLowerCase().indexOf(query.toLowerCase()) === 0) {\n previousQuery = query;\n ac.value = [];\n return;\n }\n $inputEl.val(firstValue);\n $inputEl[0].setSelectionRange(query.length, firstValue.length);\n const previousValue = typeof ac.value[0] === 'object' ? ac.value[0][ac.params.valueProperty] : ac.value[0];\n if (!previousValue || firstValue.toLowerCase() !== previousValue.toLowerCase()) {\n ac.value = [firstItem];\n ac.emit('local::change autocompleteChange', [firstItem]);\n }\n }\n previousQuery = query;\n });\n }\n function onPageInputChange() {\n const inputEl = this;\n const value = inputEl.value;\n const isValues = $(inputEl).parents('.autocomplete-values').length > 0;\n let item;\n let itemValue;\n let aValue;\n if (isValues) {\n if (ac.inputType === 'checkbox' && !inputEl.checked) {\n for (let i = 0; i < ac.value.length; i += 1) {\n aValue = typeof ac.value[i] === 'string' ? ac.value[i] : ac.value[i][ac.params.valueProperty];\n if (aValue === value || aValue * 1 === value * 1) {\n ac.value.splice(i, 1);\n }\n }\n ac.updateValues();\n ac.emit('local::change autocompleteChange', ac.value);\n }\n return;\n }\n\n // Find Related Item\n for (let i = 0; i < ac.items.length; i += 1) {\n itemValue = typeof ac.items[i] === 'object' ? ac.items[i][ac.params.valueProperty] : ac.items[i];\n if (itemValue === value || itemValue * 1 === value * 1) item = ac.items[i];\n }\n if (ac.inputType === 'radio') {\n ac.value = [item];\n } else if (inputEl.checked) {\n ac.value.push(item);\n } else {\n for (let i = 0; i < ac.value.length; i += 1) {\n aValue = typeof ac.value[i] === 'object' ? ac.value[i][ac.params.valueProperty] : ac.value[i];\n if (aValue === value || aValue * 1 === value * 1) {\n ac.value.splice(i, 1);\n }\n }\n }\n\n // Update Values Block\n ac.updateValues();\n\n // On Select Callback\n if (ac.inputType === 'radio' && inputEl.checked || ac.inputType === 'checkbox') {\n ac.emit('local::change autocompleteChange', ac.value);\n }\n }\n function onHtmlClick(e) {\n const $targetEl = $(e.target);\n if ($targetEl.is(ac.$inputEl[0]) || ac.$dropdownEl && $targetEl.closest(ac.$dropdownEl[0]).length) return;\n ac.close();\n }\n function onOpenerClick() {\n ac.open();\n }\n function onInputFocus() {\n ac.open();\n }\n function onInputBlur() {\n if (ac.$dropdownEl.find('label.active-state').length > 0) return;\n setTimeout(() => {\n ac.close();\n }, 0);\n }\n function onResize() {\n ac.positionDropdown();\n }\n function onKeyDown(e) {\n if (!ac.opened) return;\n if (e.keyCode === 27) {\n // ESC\n e.preventDefault();\n ac.$inputEl.blur();\n return;\n }\n if (e.keyCode === 13) {\n // Enter\n const $selectedItemLabel = ac.$dropdownEl.find('.autocomplete-dropdown-selected label');\n if ($selectedItemLabel.length) {\n e.preventDefault();\n $selectedItemLabel.trigger('click');\n ac.$inputEl.blur();\n return;\n }\n if (ac.params.typeahead) {\n e.preventDefault();\n ac.$inputEl.blur();\n }\n return;\n }\n if (e.keyCode !== 40 && e.keyCode !== 38) return;\n e.preventDefault();\n const $selectedItem = ac.$dropdownEl.find('.autocomplete-dropdown-selected');\n let $newItem;\n if ($selectedItem.length) {\n $newItem = $selectedItem[e.keyCode === 40 ? 'next' : 'prev']('li');\n if (!$newItem.length) {\n $newItem = ac.$dropdownEl.find('li').eq(e.keyCode === 40 ? 0 : ac.$dropdownEl.find('li').length - 1);\n }\n } else {\n $newItem = ac.$dropdownEl.find('li').eq(e.keyCode === 40 ? 0 : ac.$dropdownEl.find('li').length - 1);\n }\n if ($newItem.hasClass('autocomplete-dropdown-placeholder')) return;\n $selectedItem.removeClass('autocomplete-dropdown-selected');\n $newItem.addClass('autocomplete-dropdown-selected');\n }\n function onDropdownClick() {\n const $clickedEl = $(this);\n let clickedItem;\n for (let i = 0; i < ac.items.length; i += 1) {\n const itemValue = typeof ac.items[i] === 'object' ? ac.items[i][ac.params.valueProperty] : ac.items[i];\n const value = $clickedEl.attr('data-value');\n if (itemValue === value || itemValue * 1 === value * 1) {\n clickedItem = ac.items[i];\n }\n }\n if (ac.params.updateInputValueOnSelect) {\n ac.$inputEl.val(typeof clickedItem === 'object' ? clickedItem[ac.params.valueProperty] : clickedItem);\n ac.$inputEl.trigger('input change');\n }\n ac.value = [clickedItem];\n ac.emit('local::change autocompleteChange', [clickedItem]);\n ac.close();\n }\n ac.attachEvents = function attachEvents() {\n if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {\n ac.$openerEl.on('click', onOpenerClick);\n }\n if (ac.params.openIn === 'dropdown' && ac.$inputEl) {\n ac.$inputEl.on('focus', onInputFocus);\n ac.$inputEl.on(ac.params.inputEvents, onInputChange);\n if (device.android) {\n $('html').on('click', onHtmlClick);\n } else {\n ac.$inputEl.on('blur', onInputBlur);\n }\n ac.$inputEl.on('keydown', onKeyDown);\n }\n };\n ac.detachEvents = function attachEvents() {\n if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {\n ac.$openerEl.off('click', onOpenerClick);\n }\n if (ac.params.openIn === 'dropdown' && ac.$inputEl) {\n ac.$inputEl.off('focus', onInputFocus);\n ac.$inputEl.off(ac.params.inputEvents, onInputChange);\n if (device.android) {\n $('html').off('click', onHtmlClick);\n } else {\n ac.$inputEl.off('blur', onInputBlur);\n }\n ac.$inputEl.off('keydown', onKeyDown);\n }\n };\n ac.attachDropdownEvents = function attachDropdownEvents() {\n ac.$dropdownEl.on('click', 'label', onDropdownClick);\n app.on('resize', onResize);\n };\n ac.detachDropdownEvents = function detachDropdownEvents() {\n ac.$dropdownEl.off('click', 'label', onDropdownClick);\n app.off('resize', onResize);\n };\n ac.attachPageEvents = function attachPageEvents() {\n ac.$el.on('change', 'input[type=\"radio\"], input[type=\"checkbox\"]', onPageInputChange);\n if (ac.params.closeOnSelect && !ac.params.multiple) {\n ac.$el.once('click', '.list label', () => {\n nextTick(() => {\n ac.close();\n });\n });\n }\n };\n ac.detachPageEvents = function detachPageEvents() {\n ac.$el.off('change', 'input[type=\"radio\"], input[type=\"checkbox\"]', onPageInputChange);\n };\n\n // Install Modules\n ac.useModules();\n\n // Init\n ac.init();\n return ac;\n }\n get view() {\n const ac = this;\n const {\n $openerEl,\n $inputEl,\n app\n } = ac;\n let view;\n if (ac.params.view) {\n view = ac.params.view;\n } else if ($openerEl || $inputEl) {\n const $el = $openerEl || $inputEl;\n view = $el.closest('.view').length && $el.closest('.view')[0].f7View;\n }\n if (!view) view = app.views.main;\n return view;\n }\n positionDropdown() {\n const ac = this;\n const {\n $inputEl,\n app,\n $dropdownEl\n } = ac;\n const $pageContentEl = $inputEl.parents('.page-content');\n if ($pageContentEl.length === 0) return;\n const inputOffset = $inputEl.offset();\n const inputOffsetWidth = $inputEl[0].offsetWidth;\n const inputOffsetHeight = $inputEl[0].offsetHeight;\n const $listEl = $inputEl.parents('.list');\n let $listParent;\n $listEl.parents().each(parentEl => {\n if ($listParent) return;\n const $parentEl = $(parentEl);\n if ($parentEl.parent($pageContentEl).length) $listParent = $parentEl;\n });\n const listOffset = $listEl.offset();\n const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n const listOffsetLeft = $listEl.length > 0 ? listOffset.left - $pageContentEl.offset().left : 0;\n const inputOffsetLeft = inputOffset.left - ($listEl.length > 0 ? listOffset.left : 0) - (app.rtl ? 0 : 0);\n const inputOffsetTop = inputOffset.top - ($pageContentEl.offset().top - $pageContentEl[0].scrollTop);\n const maxHeight = $pageContentEl[0].scrollHeight - paddingBottom - (inputOffsetTop + $pageContentEl[0].scrollTop) - $inputEl[0].offsetHeight;\n const paddingProp = app.rtl ? 'padding-right' : 'padding-left';\n let paddingValue;\n if ($listEl.length) {\n paddingValue = (app.rtl ? $listEl[0].offsetWidth - inputOffsetLeft - inputOffsetWidth : inputOffsetLeft) - (app.theme === 'md' ? 16 : 15);\n }\n $dropdownEl.css({\n left: `${$listEl.length > 0 ? listOffsetLeft : inputOffsetLeft}px`,\n top: `${inputOffsetTop + $pageContentEl[0].scrollTop + inputOffsetHeight}px`,\n width: `${$listEl.length > 0 ? $listEl[0].offsetWidth : inputOffsetWidth}px`\n });\n $dropdownEl.children('.autocomplete-dropdown-inner').css({\n maxHeight: `${maxHeight}px`,\n [paddingProp]: $listEl.length > 0 ? `${paddingValue}px` : ''\n });\n }\n focus() {\n const ac = this;\n ac.$el.find('input[type=search]').focus();\n }\n source(query) {\n const ac = this;\n if (!ac.params.source) return;\n const {\n $el\n } = ac;\n ac.params.source.call(ac, query, items => {\n let itemsHTML = '';\n const limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;\n ac.items = items;\n for (let i = 0; i < limit; i += 1) {\n let selected = false;\n const itemValue = typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];\n for (let j = 0; j < ac.value.length; j += 1) {\n const aValue = typeof ac.value[j] === 'object' ? ac.value[j][ac.params.valueProperty] : ac.value[j];\n if (aValue === itemValue || aValue * 1 === itemValue * 1) selected = true;\n }\n itemsHTML += ac.renderItem({\n value: itemValue,\n text: typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i],\n inputType: ac.inputType,\n id: ac.id,\n inputName: ac.inputName,\n selected\n }, i);\n }\n $el.find('.autocomplete-found ul').html(itemsHTML);\n if (items.length === 0) {\n if (query.length !== 0) {\n $el.find('.autocomplete-not-found').show();\n $el.find('.autocomplete-found, .autocomplete-values').hide();\n } else {\n $el.find('.autocomplete-values').show();\n $el.find('.autocomplete-found, .autocomplete-not-found').hide();\n }\n } else {\n $el.find('.autocomplete-found').show();\n $el.find('.autocomplete-not-found, .autocomplete-values').hide();\n }\n });\n }\n updateValues() {\n const ac = this;\n let valuesHTML = '';\n for (let i = 0; i < ac.value.length; i += 1) {\n valuesHTML += ac.renderItem({\n value: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.valueProperty] : ac.value[i],\n text: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.textProperty] : ac.value[i],\n inputType: ac.inputType,\n id: ac.id,\n inputName: `${ac.inputName}-checked}`,\n selected: true\n }, i);\n }\n ac.$el.find('.autocomplete-values ul').html(valuesHTML);\n }\n preloaderHide() {\n const ac = this;\n if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {\n ac.$dropdownEl.find('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');\n } else {\n $('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');\n }\n }\n preloaderShow() {\n const ac = this;\n if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {\n ac.$dropdownEl.find('.autocomplete-preloader').addClass('autocomplete-preloader-visible');\n } else {\n $('.autocomplete-preloader').addClass('autocomplete-preloader-visible');\n }\n }\n renderPreloader() {\n const ac = this;\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n return $jsx(\"div\", {\n class: `autocomplete-preloader preloader ${ac.params.preloaderColor ? `color-${ac.params.preloaderColor}` : ''}`\n }, preloaders[`${ac.app.theme}PreloaderContent`] || '');\n }\n renderSearchbar() {\n const ac = this;\n if (ac.params.renderSearchbar) return ac.params.renderSearchbar.call(ac);\n return $jsx(\"form\", {\n class: \"searchbar\"\n }, $jsx(\"div\", {\n class: \"searchbar-inner\"\n }, $jsx(\"div\", {\n class: \"searchbar-input-wrap\"\n }, $jsx(\"input\", {\n type: \"search\",\n spellcheck: ac.params.searchbarSpellcheck || 'false',\n placeholder: ac.params.searchbarPlaceholder\n }), $jsx(\"i\", {\n class: \"searchbar-icon\"\n }), $jsx(\"span\", {\n class: \"input-clear-button\"\n })), ac.params.searchbarDisableButton && $jsx(\"span\", {\n class: \"searchbar-disable-button\"\n }, ac.params.searchbarDisableText)));\n }\n renderItem(item, index) {\n const ac = this;\n if (ac.params.renderItem) return ac.params.renderItem.call(ac, item, index);\n const itemValue = item.value && typeof item.value === 'string' ? item.value.replace(/\"/g, '"') : item.value;\n if (ac.params.openIn !== 'dropdown') {\n return $jsx(\"li\", null, $jsx(\"label\", {\n class: `item-${item.inputType} item-content`\n }, $jsx(\"input\", {\n type: item.inputType,\n name: item.inputName,\n value: itemValue,\n _checked: item.selected\n }), $jsx(\"i\", {\n class: `icon icon-${item.inputType}`\n }), $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: \"item-title\"\n }, item.text))));\n }\n // Dropdown\n if (!item.placeholder) {\n return $jsx(\"li\", null, $jsx(\"label\", {\n class: \"item-radio item-content\",\n \"data-value\": itemValue\n }, $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: \"item-title\"\n }, item.text))));\n }\n\n // Dropwdown placeholder\n return $jsx(\"li\", {\n class: \"autocomplete-dropdown-placeholder\"\n }, $jsx(\"label\", {\n class: \"item-content\"\n }, $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: \"item-title\"\n }, item.text))));\n }\n renderNavbar() {\n const ac = this;\n if (ac.params.renderNavbar) return ac.params.renderNavbar.call(ac);\n let pageTitle = ac.params.pageTitle;\n if (typeof pageTitle === 'undefined' && ac.$openerEl && ac.$openerEl.length) {\n pageTitle = ac.$openerEl.find('.item-title').text().trim();\n }\n const inPopup = ac.params.openIn === 'popup';\n\n // eslint-disable-next-line\n const navbarLeft = inPopup ? ac.params.preloader && $jsx(\"div\", {\n class: \"left\"\n }, ac.renderPreloader()) : $jsx(\"div\", {\n class: \"left sliding\"\n }, $jsx(\"a\", {\n class: \"link back\"\n }, $jsx(\"i\", {\n class: \"icon icon-back\"\n }), $jsx(\"span\", {\n class: \"if-not-md\"\n }, ac.params.pageBackLinkText)));\n const navbarRight = inPopup ? $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link popup-close\",\n \"data-popup\": \".autocomplete-popup\"\n }, ac.params.popupCloseLinkText)) : ac.params.preloader && $jsx(\"div\", {\n class: \"right\"\n }, ac.renderPreloader());\n return $jsx(\"div\", {\n class: `navbar ${ac.params.navbarColorTheme ? `color-${ac.params.navbarColorTheme}` : ''}`\n }, $jsx(\"div\", {\n class: \"navbar-bg\"\n }), $jsx(\"div\", {\n class: `navbar-inner ${ac.params.navbarColorTheme ? `color-${ac.params.navbarColorTheme}` : ''}`\n }, navbarLeft, pageTitle && $jsx(\"div\", {\n class: \"title sliding\"\n }, pageTitle), navbarRight, $jsx(\"div\", {\n class: \"subnavbar sliding\"\n }, ac.renderSearchbar())));\n }\n renderDropdown() {\n const ac = this;\n if (ac.params.renderDropdown) return ac.params.renderDropdown.call(ac, ac.items);\n return $jsx(\"div\", {\n class: \"autocomplete-dropdown\"\n }, $jsx(\"div\", {\n class: \"autocomplete-dropdown-inner\"\n }, $jsx(\"div\", {\n class: `list no-safe-areas`\n }, $jsx(\"ul\", null))), ac.params.preloader && ac.renderPreloader());\n }\n renderPage(inPopup) {\n const ac = this;\n if (ac.params.renderPage) return ac.params.renderPage.call(ac, ac.items);\n return $jsx(\"div\", {\n class: \"page page-with-subnavbar autocomplete-page\",\n \"data-name\": \"autocomplete-page\"\n }, ac.renderNavbar(inPopup), $jsx(\"div\", {\n class: \"searchbar-backdrop\"\n }), $jsx(\"div\", {\n class: \"page-content\"\n }, $jsx(\"div\", {\n class: `list autocomplete-list autocomplete-found autocomplete-list-${ac.id} ${ac.params.formColorTheme ? `color-${ac.params.formColorTheme}` : ''}`\n }, $jsx(\"ul\", null)), $jsx(\"div\", {\n class: \"list autocomplete-not-found\"\n }, $jsx(\"ul\", null, $jsx(\"li\", {\n class: \"item-content\"\n }, $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: \"item-title\"\n }, ac.params.notFoundText))))), $jsx(\"div\", {\n class: \"list autocomplete-values\"\n }, $jsx(\"ul\", null))));\n }\n renderPopup() {\n const ac = this;\n if (ac.params.renderPopup) return ac.params.renderPopup.call(ac, ac.items);\n return $jsx(\"div\", {\n class: \"popup autocomplete-popup\"\n }, $jsx(\"div\", {\n class: \"view\"\n }, ac.renderPage(true), \";\"));\n }\n onOpen(type, el) {\n const ac = this;\n const app = ac.app;\n const $el = $(el);\n ac.$el = $el;\n ac.el = $el[0];\n ac.openedIn = type;\n ac.opened = true;\n if (ac.params.openIn === 'dropdown') {\n ac.attachDropdownEvents();\n ac.$dropdownEl.addClass('autocomplete-dropdown-in');\n ac.$inputEl.trigger('input');\n } else {\n // Init SB\n let $searchbarEl = $el.find('.searchbar');\n if (ac.params.openIn === 'page' && app.theme === 'ios' && $searchbarEl.length === 0) {\n $searchbarEl = $(app.navbar.getElByPage($el)).find('.searchbar');\n }\n ac.searchbar = app.searchbar.create({\n el: $searchbarEl,\n backdropEl: $el.find('.searchbar-backdrop'),\n customSearch: true,\n on: {\n search(sb, query) {\n if (query.length === 0 && ac.searchbar.enabled) {\n ac.searchbar.backdropShow();\n } else {\n ac.searchbar.backdropHide();\n }\n ac.source(query);\n }\n }\n });\n\n // Attach page events\n ac.attachPageEvents();\n\n // Update Values On Page Init\n ac.updateValues();\n\n // Source on load\n if (ac.params.requestSourceOnOpen) ac.source('');\n }\n ac.emit('local::open autocompleteOpen', ac);\n }\n autoFocus() {\n const ac = this;\n if (ac.searchbar && ac.searchbar.$inputEl) {\n ac.searchbar.$inputEl.focus();\n }\n return ac;\n }\n onOpened() {\n const ac = this;\n if (ac.params.openIn !== 'dropdown' && ac.params.autoFocus) {\n ac.autoFocus();\n }\n ac.emit('local::opened autocompleteOpened', ac);\n }\n onClose() {\n const ac = this;\n if (ac.destroyed) return;\n\n // Destroy SB\n if (ac.searchbar && ac.searchbar.destroy) {\n ac.searchbar.destroy();\n ac.searchbar = null;\n delete ac.searchbar;\n }\n if (ac.params.openIn === 'dropdown') {\n ac.detachDropdownEvents();\n ac.$dropdownEl.removeClass('autocomplete-dropdown-in').remove();\n } else {\n ac.detachPageEvents();\n }\n ac.emit('local::close autocompleteClose', ac);\n }\n onClosed() {\n const ac = this;\n if (ac.destroyed) return;\n ac.opened = false;\n ac.$el = null;\n ac.el = null;\n delete ac.$el;\n delete ac.el;\n ac.emit('local::closed autocompleteClosed', ac);\n }\n openPage() {\n const ac = this;\n if (ac.opened) return ac;\n const pageHtml = ac.renderPage();\n ac.view.router.navigate({\n url: ac.url,\n route: {\n content: pageHtml,\n path: ac.url,\n on: {\n pageBeforeIn(e, page) {\n ac.onOpen('page', page.el);\n },\n pageAfterIn(e, page) {\n ac.onOpened('page', page.el);\n },\n pageBeforeOut(e, page) {\n ac.onClose('page', page.el);\n },\n pageAfterOut(e, page) {\n ac.onClosed('page', page.el);\n }\n },\n options: {\n animate: ac.params.animate\n }\n }\n });\n return ac;\n }\n openPopup() {\n const ac = this;\n if (ac.opened) return ac;\n const popupHtml = ac.renderPopup();\n const popupParams = {\n content: popupHtml,\n animate: ac.params.animate,\n push: ac.params.popupPush,\n swipeToClose: ac.params.popupSwipeToClose,\n on: {\n popupOpen(popup) {\n ac.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n ac.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n ac.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n ac.onClosed('popup', popup.el);\n }\n }\n };\n if (ac.params.routableModals && ac.view) {\n ac.view.router.navigate({\n url: ac.url,\n route: {\n path: ac.url,\n popup: popupParams\n }\n });\n } else {\n ac.modal = ac.app.popup.create(popupParams).open(ac.params.animate);\n }\n return ac;\n }\n openDropdown() {\n const ac = this;\n if (!ac.$dropdownEl) {\n ac.$dropdownEl = $(ac.renderDropdown());\n }\n const $pageContentEl = ac.$inputEl.parents('.page-content');\n if (ac.params.dropdownContainerEl) {\n $(ac.params.dropdownContainerEl).append(ac.$dropdownEl);\n } else if ($pageContentEl.length === 0) {\n ac.$dropdownEl.insertAfter(ac.$inputEl);\n } else {\n ac.positionDropdown();\n $pageContentEl.append(ac.$dropdownEl);\n }\n ac.onOpen('dropdown', ac.$dropdownEl);\n ac.onOpened('dropdown', ac.$dropdownEl);\n }\n open() {\n const ac = this;\n if (ac.opened) return ac;\n const openIn = ac.params.openIn;\n ac[`open${openIn.split('').map((el, index) => {\n if (index === 0) return el.toUpperCase();\n return el;\n }).join('')}`]();\n return ac;\n }\n close() {\n const ac = this;\n if (!ac.opened) return ac;\n if (ac.params.openIn === 'dropdown') {\n ac.onClose();\n ac.onClosed();\n } else if (ac.params.routableModals && ac.view || ac.openedIn === 'page') {\n ac.view.router.back({\n animate: ac.params.animate\n });\n } else {\n ac.modal.once('modalClosed', () => {\n nextTick(() => {\n if (ac.destroyed) return;\n ac.modal.destroy();\n delete ac.modal;\n });\n });\n ac.modal.close();\n }\n return ac;\n }\n init() {\n const ac = this;\n ac.attachEvents();\n }\n destroy() {\n const ac = this;\n ac.emit('local::beforeDestroy autocompleteBeforeDestroy', ac);\n ac.detachEvents();\n if (ac.$inputEl && ac.$inputEl[0]) {\n delete ac.$inputEl[0].f7Autocomplete;\n }\n if (ac.$openerEl && ac.$openerEl[0]) {\n delete ac.$openerEl[0].f7Autocomplete;\n }\n deleteProps(ac);\n ac.destroyed = true;\n }\n}\nexport default Autocomplete;","import { extend } from '../../shared/utils.js';\nimport Autocomplete from './autocomplete-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'autocomplete',\n params: {\n autocomplete: {\n openerEl: undefined,\n inputEl: undefined,\n view: undefined,\n // DropDown\n dropdownContainerEl: undefined,\n dropdownPlaceholderText: undefined,\n typeahead: false,\n highlightMatches: true,\n updateInputValueOnSelect: true,\n inputEvents: 'input',\n value: undefined,\n multiple: false,\n source: undefined,\n limit: undefined,\n valueProperty: 'id',\n textProperty: 'text',\n openIn: 'page',\n // or 'popup' or 'dropdown'\n pageBackLinkText: 'Back',\n popupCloseLinkText: 'Close',\n pageTitle: undefined,\n searchbarPlaceholder: 'Search...',\n searchbarDisableText: 'Cancel',\n searchbarDisableButton: true,\n searchbarSpellcheck: false,\n popupPush: false,\n popupSwipeToClose: undefined,\n animate: true,\n autoFocus: false,\n closeOnSelect: false,\n notFoundText: 'Nothing found',\n requestSourceOnOpen: false,\n // Preloader\n preloaderColor: undefined,\n preloader: false,\n // Colors\n formColorTheme: undefined,\n navbarColorTheme: undefined,\n // Routing\n routableModals: false,\n url: 'select/',\n // Custom render functions\n renderDropdown: undefined,\n renderPage: undefined,\n renderPopup: undefined,\n renderItem: undefined,\n renderSearchbar: undefined,\n renderNavbar: undefined\n }\n },\n static: {\n Autocomplete\n },\n create() {\n const app = this;\n app.autocomplete = extend(ConstructorMethods({\n defaultSelector: undefined,\n constructor: Autocomplete,\n app,\n domProp: 'f7Autocomplete'\n }), {\n open(autocompleteEl) {\n const ac = app.autocomplete.get(autocompleteEl);\n if (ac && ac.open) return ac.open();\n return undefined;\n },\n close(autocompleteEl) {\n const ac = app.autocomplete.get(autocompleteEl);\n if (ac && ac.close) return ac.close();\n return undefined;\n }\n });\n }\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport Framework7Class from '../../shared/class.js';\nclass Tooltip extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const tooltip = this;\n const support = getSupport();\n const defaults = extend({}, app.params.tooltip);\n const document = getDocument();\n\n // Extend defaults with modules params\n tooltip.useModulesParams(defaults);\n tooltip.params = extend(defaults, params);\n if (typeof params.offset === 'undefined' && support.touch && tooltip.params.trigger === 'hover') {\n tooltip.params.offset = 10;\n }\n const {\n targetEl,\n containerEl\n } = tooltip.params;\n if (!targetEl && !tooltip.params.delegated) return tooltip;\n const $targetEl = $(targetEl);\n if ($targetEl.length === 0 && !tooltip.params.delegated) return tooltip;\n if ($targetEl[0] && $targetEl[0].f7Tooltip && !tooltip.params.delegated) return $targetEl[0].f7Tooltip;\n let $containerEl = $(containerEl || app.$el).eq(0);\n if ($containerEl.length === 0) {\n $containerEl = app.$el;\n }\n const $el = $(tooltip.render()).eq(0);\n extend(tooltip, {\n app,\n $targetEl,\n targetEl: $targetEl && $targetEl[0],\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n $el,\n el: $el && $el[0],\n text: tooltip.params.text || '',\n visible: false,\n opened: false\n });\n if ($targetEl[0]) $targetEl[0].f7Tooltip = tooltip;\n const touchesStart = {};\n let isTouched;\n function handleClick() {\n if (tooltip.opened) tooltip.hide();else tooltip.show(this);\n }\n function handleClickOut(e) {\n if (tooltip.opened && ($(e.target).closest($targetEl).length || $(e.target).closest(tooltip.$el).length)) return;\n tooltip.hide();\n }\n function handleTouchStart(e) {\n if (isTouched) return;\n isTouched = true;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n tooltip.show(this);\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n const distance = ((x - touchesStart.x) ** 2 + (y - touchesStart.y) ** 2) ** 0.5;\n if (distance > 50) {\n isTouched = false;\n tooltip.hide();\n }\n }\n function handleTouchEnd() {\n if (!isTouched) return;\n isTouched = false;\n tooltip.hide();\n }\n function handleMouseEnter() {\n tooltip.show(this);\n }\n function handleMouseLeave() {\n tooltip.hide();\n }\n function handleTransitionEnd() {\n if (!$el.hasClass('tooltip-in')) {\n $el.removeClass('tooltip-out').remove();\n }\n }\n tooltip.attachEvents = function attachEvents() {\n $el.on('transitionend', handleTransitionEnd);\n if (tooltip.params.trigger === 'click') {\n if (tooltip.params.delegated) {\n $(document).on('click', tooltip.params.targetEl, handleClick);\n } else {\n tooltip.$targetEl.on('click', handleClick);\n }\n $('html').on('click', handleClickOut);\n return;\n }\n if (tooltip.params.trigger === 'manual') return;\n if (support.touch) {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n if (tooltip.params.delegated) {\n $(document).on(app.touchEvents.start, tooltip.params.targetEl, handleTouchStart, passive);\n } else {\n tooltip.$targetEl.on(app.touchEvents.start, handleTouchStart, passive);\n }\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n } else {\n // eslint-disable-next-line\n if (tooltip.params.delegated) {\n $(document).on(support.pointerEvents ? 'pointerenter' : 'mouseenter', tooltip.params.targetEl, handleMouseEnter, true);\n $(document).on(support.pointerEvents ? 'pointerleave' : 'mouseleave', tooltip.params.targetEl, handleMouseLeave, true);\n } else {\n tooltip.$targetEl.on(support.pointerEvents ? 'pointerenter' : 'mouseenter', handleMouseEnter);\n tooltip.$targetEl.on(support.pointerEvents ? 'pointerleave' : 'mouseleave', handleMouseLeave);\n }\n }\n };\n tooltip.detachEvents = function detachEvents() {\n $el.off('transitionend', handleTransitionEnd);\n if (tooltip.params.trigger === 'click') {\n if (tooltip.params.delegated) {\n $(document).on('click', tooltip.params.targetEl, handleClick);\n } else {\n tooltip.$targetEl.off('click', handleClick);\n }\n $('html').off('click', handleClickOut);\n return;\n }\n if (tooltip.params.trigger === 'manual') return;\n if (support.touch) {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n if (tooltip.params.delegated) {\n $(document).off(app.touchEvents.start, tooltip.params.targetEl, handleTouchStart, passive);\n } else {\n tooltip.$targetEl.off(app.touchEvents.start, handleTouchStart, passive);\n }\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n } else {\n // eslint-disable-next-line\n if (tooltip.params.delegated) {\n $(document).off(support.pointerEvents ? 'pointerenter' : 'mouseenter', tooltip.params.targetEl, handleMouseEnter, true);\n $(document).off(support.pointerEvents ? 'pointerleave' : 'mouseleave', tooltip.params.targetEl, handleMouseLeave, true);\n } else {\n tooltip.$targetEl.off(support.pointerEvents ? 'pointerenter' : 'mouseenter', handleMouseEnter);\n tooltip.$targetEl.off(support.pointerEvents ? 'pointerleave' : 'mouseleave', handleMouseLeave);\n }\n }\n };\n\n // Install Modules\n tooltip.useModules();\n tooltip.init();\n return tooltip;\n }\n setTargetEl(targetEl) {\n const tooltip = this;\n tooltip.detachEvents();\n tooltip.$targetEl = $(targetEl);\n tooltip.targetEl = tooltip.$targetEl[0];\n tooltip.attachEvents();\n return tooltip;\n }\n position(targetEl) {\n const tooltip = this;\n const {\n $el,\n app,\n $containerEl\n } = tooltip;\n const hasContainerEl = !!tooltip.params.containerEl;\n const tooltipOffset = tooltip.params.offset || 0;\n $el.css({\n left: '',\n top: ''\n });\n const $targetEl = $(targetEl || tooltip.targetEl);\n const [width, height] = [$el.width(), $el.height()];\n $el.css({\n left: '',\n top: ''\n });\n let targetWidth;\n let targetHeight;\n let targetOffsetLeft;\n let targetOffsetTop;\n const boundaries = hasContainerEl && $containerEl.length ? $containerEl[0].getBoundingClientRect() : app;\n if ($targetEl && $targetEl.length > 0) {\n targetWidth = $targetEl.outerWidth();\n targetHeight = $targetEl.outerHeight();\n if (typeof targetWidth === 'undefined' && typeof targetHeight === 'undefined') {\n const clientRect = $targetEl[0].getBoundingClientRect();\n targetWidth = clientRect.width;\n targetHeight = clientRect.height;\n }\n const targetOffset = $targetEl.offset();\n targetOffsetLeft = targetOffset.left - boundaries.left;\n targetOffsetTop = targetOffset.top - boundaries.top;\n const targetParentPage = $targetEl.parents('.page');\n if (targetParentPage.length > 0) {\n targetOffsetTop -= targetParentPage[0].scrollTop;\n }\n }\n let [left, top] = [0, 0, 0];\n\n // Top Position\n let position = 'top';\n if (height + tooltipOffset < targetOffsetTop) {\n // On top\n top = targetOffsetTop - height - tooltipOffset;\n } else if (height < boundaries.height - targetOffsetTop - targetHeight) {\n // On bottom\n position = 'bottom';\n top = targetOffsetTop + targetHeight + tooltipOffset;\n } else {\n // On middle\n position = 'middle';\n top = targetHeight / 2 + targetOffsetTop - height / 2;\n if (top <= 0) {\n top = 8;\n } else if (top + height >= boundaries.height) {\n top = boundaries.height - height - 8;\n }\n }\n\n // Horizontal Position\n if (position === 'top' || position === 'bottom') {\n left = targetWidth / 2 + targetOffsetLeft - width / 2;\n if (left < 8) left = 8;\n if (left + width > boundaries.width) left = boundaries.width - width - 8;\n if (left < 0) left = 0;\n } else if (position === 'middle') {\n left = targetOffsetLeft - width;\n if (left < 8 || left + width > boundaries.width) {\n if (left < 8) left = targetOffsetLeft + targetWidth;\n if (left + width > boundaries.width) left = boundaries.width - width - 8;\n }\n }\n\n // Apply Styles\n $el.css({\n top: `${top}px`,\n left: `${left}px`\n });\n }\n show(aroundEl) {\n const tooltip = this;\n const {\n $el,\n $targetEl,\n $containerEl\n } = tooltip;\n if ($containerEl[0] && $el[0] && !$containerEl[0].contains($el[0])) {\n $containerEl.append($el);\n }\n tooltip.position(aroundEl);\n const $aroundEl = $(aroundEl);\n tooltip.visible = true;\n tooltip.opened = true;\n $targetEl.trigger('tooltip:show');\n $el.trigger('tooltip:show');\n if ($aroundEl.length && $aroundEl[0] !== $targetEl[0]) {\n $aroundEl.trigger('tooltip:show');\n }\n tooltip.emit('local::show tooltipShow', tooltip);\n $el.removeClass('tooltip-out').addClass('tooltip-in');\n return tooltip;\n }\n hide() {\n const tooltip = this;\n const {\n $el,\n $targetEl\n } = tooltip;\n tooltip.visible = false;\n tooltip.opened = false;\n $targetEl.trigger('tooltip:hide');\n $el.trigger('tooltip:hide');\n tooltip.emit('local::hide tooltipHide', tooltip);\n $el.addClass('tooltip-out').removeClass('tooltip-in');\n return tooltip;\n }\n render() {\n const tooltip = this;\n if (tooltip.params.render) return tooltip.params.render.call(tooltip, tooltip);\n const {\n cssClass,\n text\n } = tooltip.params;\n return `\n
                \n
                ${text || ''}
                \n
                \n `.trim();\n }\n setText(newText) {\n const tooltip = this;\n if (typeof newText === 'undefined') {\n return tooltip;\n }\n tooltip.params.text = newText;\n tooltip.text = newText;\n if (tooltip.$el) {\n tooltip.$el.children('.tooltip-content').html(newText);\n }\n if (tooltip.opened) {\n tooltip.position();\n }\n return tooltip;\n }\n init() {\n const tooltip = this;\n tooltip.attachEvents();\n }\n destroy() {\n const tooltip = this;\n if (!tooltip.$targetEl || tooltip.destroyed) return;\n tooltip.$targetEl.trigger('tooltip:beforedestroy');\n tooltip.emit('local::beforeDestroy tooltipBeforeDestroy', tooltip);\n tooltip.$el.remove();\n if (tooltip.$targetEl[0]) delete tooltip.$targetEl[0].f7Tooltip;\n tooltip.detachEvents();\n deleteProps(tooltip);\n tooltip.destroyed = true;\n }\n}\nexport default Tooltip;","import $ from '../../shared/dom7.js';\nimport Tooltip from './tooltip-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'tooltip',\n static: {\n Tooltip\n },\n create() {\n const app = this;\n app.tooltip = ConstructorMethods({\n defaultSelector: '.tooltip',\n constructor: Tooltip,\n app,\n domProp: 'f7Tooltip'\n });\n app.tooltip.show = function show(el) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const tooltip = $el[0].f7Tooltip;\n if (!tooltip) return undefined;\n tooltip.show($el[0]);\n return tooltip;\n };\n app.tooltip.hide = function hide(el) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const tooltip = $el[0].f7Tooltip;\n if (!tooltip) return undefined;\n tooltip.hide();\n return tooltip;\n };\n app.tooltip.setText = function text(el, newText) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const tooltip = $el[0].f7Tooltip;\n if (!tooltip) return undefined;\n tooltip.setText(newText);\n return tooltip;\n };\n },\n params: {\n tooltip: {\n targetEl: null,\n delegated: false,\n text: null,\n cssClass: null,\n render: null,\n offset: 0,\n trigger: 'hover',\n containerEl: undefined\n }\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.tooltip-init').each(el => {\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({\n targetEl: el,\n text\n });\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.tooltip-init').each(el => {\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.tooltip-init').each(el => {\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({\n targetEl: el,\n text\n });\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.tooltip-init').each(el => {\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({\n targetEl: el,\n text\n });\n });\n }\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.tooltip-init').each(el => {\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.tooltip-init').each(el => {\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n });\n }\n }\n },\n vnode: {\n 'tooltip-init': {\n insert(vnode) {\n const app = this;\n const el = vnode.elm;\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({\n targetEl: el,\n text\n });\n },\n update(vnode) {\n const el = vnode.elm;\n if (!el.f7Tooltip) return;\n if (vnode && vnode.data && vnode.data.attrs && vnode.data.attrs['data-tooltip']) {\n el.f7Tooltip.setText(vnode.data.attrs['data-tooltip']);\n }\n },\n destroy(vnode) {\n const el = vnode.elm;\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n }\n }\n }\n};","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n sliderLabel,\n sliderValue,\n sliderValueEditable,\n alphaLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-alpha-slider\"\n }, $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, alphaLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-alpha\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.01\",\n min: \"0\",\n max: \"1\",\n class: \"color-picker-value-alpha\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-alpha\"\n }))));\n },\n init(self) {\n self.alphaRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-alpha'),\n min: 0,\n max: 1,\n step: 0.01,\n value: 1,\n on: {\n change(range, value) {\n const alpha = Math.floor(value * 100) / 100;\n self.setValue({\n alpha\n });\n }\n }\n });\n function handleInputChange(e) {\n const alpha = self.value.alpha;\n let value = parseFloat(e.target.value);\n if (Number.isNaN(value)) {\n e.target.value = alpha;\n return;\n }\n value = Math.max(0, Math.min(1, value));\n self.setValue({\n alpha: value\n });\n }\n self.$el.on('change', '.color-picker-module-alpha-slider input', handleInputChange);\n self.destroyAlphaSliderEvents = function destroyAlphaSliderEvents() {\n self.$el.off('change', '.color-picker-module-alpha-slider input', handleInputChange);\n };\n },\n update(self) {\n const {\n value\n } = self;\n const {\n sliderValue,\n sliderValueEditable\n } = self.params;\n const {\n alpha\n } = value;\n self.alphaRangeSlider.value = alpha;\n self.alphaRangeSlider.layout();\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-alpha').val(alpha);\n } else {\n self.$el.find('span.color-picker-value-alpha').text(alpha);\n }\n },\n destroy(self) {\n if (self.alphaRangeSlider && self.alphaRangeSlider.destroy) {\n self.alphaRangeSlider.destroy();\n }\n delete self.alphaRangeSlider;\n if (self.destroyAlphaSliderEvents) self.destroyAlphaSliderEvents();\n delete self.destroyAlphaSliderEvents;\n }\n};","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render() {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-current-color\"\n }, $jsx(\"div\", {\n class: \"color-picker-current-color\"\n }));\n },\n update(self) {\n self.$el.find('.color-picker-module-current-color .color-picker-current-color').css('background-color', self.value.hex);\n }\n};","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n hexLabel,\n hexLabelText,\n hexValueEditable\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-hex\"\n }, $jsx(\"div\", {\n class: \"color-picker-hex-wrap\"\n }, hexLabel && $jsx(\"div\", {\n class: \"color-picker-hex-label\"\n }, hexLabelText), $jsx(\"div\", {\n class: \"color-picker-hex-value\"\n }, hexValueEditable ? $jsx(\"input\", {\n type: \"text\",\n class: \"color-picker-value-hex\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-hex\"\n }))));\n },\n init(self) {\n function handleInputChange(e) {\n const hex = self.value.hex;\n let value = e.target.value.replace(/#/g, '');\n if (Number.isNaN(value) || !value || value.length !== 3 && value.length !== 6) {\n e.target.value = hex;\n return;\n }\n const min = 0;\n const current = parseInt(value, 16);\n const max = parseInt('ffffff', 16); // eslint-disable-line\n if (current > max) {\n value = 'fff';\n }\n if (current < min) {\n value = '000';\n }\n self.setValue({\n hex: value\n });\n }\n self.$el.on('change', '.color-picker-module-hex input', handleInputChange);\n self.destroyHexEvents = function destroyHexEvents() {\n self.$el.off('change', '.color-picker-module-hex input', handleInputChange);\n };\n },\n update(self) {\n const {\n value\n } = self;\n const {\n hexValueEditable\n } = self.params;\n const {\n hex\n } = value;\n if (hexValueEditable) {\n self.$el.find('input.color-picker-value-hex').val(hex);\n } else {\n self.$el.find('span.color-picker-value-hex').text(hex);\n }\n },\n destroy(self) {\n if (self.destroyHexEvents) self.destroyHexEvents();\n delete self.destroyHexEvents;\n }\n};","import $ from '../../../shared/dom7.js';\nimport { colorHsbToHsl } from '../../../shared/utils.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n sliderLabel,\n sliderValue,\n sliderValueEditable,\n hueLabelText,\n saturationLabelText,\n brightnessLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-hsb-sliders\"\n }, $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, hueLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-hue\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n max: \"360\",\n class: \"color-picker-value-hue\",\n \"data-color-index\": \"0\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-hue\"\n }))), $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, saturationLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-saturation\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n max: \"100\",\n class: \"color-picker-value-saturation\",\n \"data-color-index\": \"1\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-saturation\"\n }))), $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, brightnessLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-brightness\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n max: \"100\",\n class: \"color-picker-value-brightness\",\n \"data-color-index\": \"2\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-brightness\"\n }))));\n },\n init(self) {\n self.hueRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-hue'),\n min: 0,\n max: 360,\n step: 0.1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({\n hue: value\n });\n }\n }\n });\n self.saturationRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-saturation'),\n min: 0,\n max: 1,\n step: 0.001,\n value: 0,\n on: {\n change(range, value) {\n const s = Math.floor(value * 1000) / 1000;\n self.setValue({\n hsb: [self.value.hsb[0], s, self.value.hsb[2]]\n });\n }\n }\n });\n self.brightnessRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-brightness'),\n min: 0,\n max: 1,\n step: 0.001,\n value: 0,\n on: {\n change(range, value) {\n const b = Math.floor(value * 1000) / 1000;\n self.setValue({\n hsb: [self.value.hsb[0], self.value.hsb[1], b]\n });\n }\n }\n });\n function handleInputChange(e) {\n const hsb = [...self.value.hsb];\n const index = parseInt($(e.target).attr('data-color-index'), 10);\n let value = parseFloat(e.target.value);\n if (Number.isNaN(value)) {\n e.target.value = hsb[index];\n return;\n }\n if (index === 0) {\n value = Math.max(0, Math.min(360, value));\n } else {\n value = Math.max(0, Math.min(100, value)) / 100;\n }\n hsb[index] = value;\n self.setValue({\n hsb\n });\n }\n self.$el.on('change', '.color-picker-module-hsb-sliders input', handleInputChange);\n self.destroyHsbSlidersEvents = function destroyHsbSlidersEvents() {\n self.$el.off('change', '.color-picker-module-hsb-sliders input', handleInputChange);\n };\n },\n update(self) {\n const {\n app,\n value\n } = self;\n const {\n sliderValue,\n sliderValueEditable\n } = self.params;\n const {\n hsb,\n hue\n } = value;\n self.hueRangeSlider.value = hue;\n self.saturationRangeSlider.value = hsb[1];\n self.brightnessRangeSlider.value = hsb[2];\n self.hueRangeSlider.layout();\n self.saturationRangeSlider.layout();\n self.brightnessRangeSlider.layout();\n const hslCurrent = colorHsbToHsl(hsb[0], hsb[1], 1);\n const hslLeft = colorHsbToHsl(hsb[0], 0, 1);\n const hslRight = colorHsbToHsl(hsb[0], 1, 1);\n const brightness = hsb[2];\n self.hueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hue}, 100%, 50%)`);\n self.saturationRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hslCurrent[0]}, ${hslCurrent[1] * 100}%, ${hslCurrent[2] * 100}%)`);\n self.brightnessRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${brightness * 255}, ${brightness * 255}, ${brightness * 255})`);\n self.saturationRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${app.rtl ? 'to left' : 'to right'}, hsl(${hslLeft[0]}, ${hslLeft[1] * 100}%, ${hslLeft[2] * 100}%), hsl(${hslRight[0]}, ${hslRight[1] * 100}%, ${hslRight[2] * 100}%))`);\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-hue').val(`${hue}`);\n self.$el.find('input.color-picker-value-saturation').val(`${hsb[1] * 1000 / 10}`);\n self.$el.find('input.color-picker-value-brightness').val(`${hsb[2] * 1000 / 10}`);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-hue').text(`${hue}`);\n self.$el.find('span.color-picker-value-saturation').text(`${hsb[1] * 1000 / 10}`);\n self.$el.find('span.color-picker-value-brightness').text(`${hsb[2] * 1000 / 10}`);\n }\n },\n destroy(self) {\n if (self.hueRangeSlider && self.hueRangeSlider.destroy) {\n self.hueRangeSlider.destroy();\n }\n if (self.saturationRangeSlider && self.saturationRangeSlider.destroy) {\n self.saturationRangeSlider.destroy();\n }\n if (self.brightnessRangeSlider && self.brightnessRangeSlider.destroy) {\n self.brightnessRangeSlider.destroy();\n }\n delete self.hueRangeSlider;\n delete self.saturationRangeSlider;\n delete self.brightnessRangeSlider;\n if (self.destroyHsbSlidersEvents) self.destroyHsbSlidersEvents();\n delete self.destroyHsbSlidersEvents;\n }\n};","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n sliderLabel,\n sliderValue,\n sliderValueEditable,\n hueLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-hue-slider\"\n }, $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, hueLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-hue\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n max: \"360\",\n class: \"color-picker-value-hue\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-hue\"\n }))));\n },\n init(self) {\n self.hueRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-hue'),\n min: 0,\n max: 360,\n step: 0.1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({\n hue: value\n });\n }\n }\n });\n },\n update(self) {\n const {\n value\n } = self;\n const {\n sliderValue,\n sliderValueEditable\n } = self.params;\n const {\n hue\n } = value;\n self.hueRangeSlider.value = hue;\n self.hueRangeSlider.layout();\n self.hueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hue}, 100%, 50%)`);\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-hue').val(`${hue}`);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-hue').text(`${hue}`);\n }\n },\n destroy(self) {\n if (self.hueRangeSlider && self.hueRangeSlider.destroy) {\n self.hueRangeSlider.destroy();\n }\n delete self.hueRangeSlider;\n }\n};","import { colorHsbToHsl } from '../../../shared/utils.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n sliderLabel,\n sliderValue,\n sliderValueEditable,\n brightnessLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-brightness-slider\"\n }, $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, brightnessLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-brightness\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n max: \"100\",\n class: \"color-picker-value-brightness\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-brightness\"\n }))));\n },\n init(self) {\n self.brightnessRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-brightness'),\n min: 0,\n max: 1,\n step: 0.001,\n value: 0,\n on: {\n change(range, value) {\n const b = Math.floor(value * 1000) / 1000;\n self.setValue({\n hsb: [self.value.hsb[0], self.value.hsb[1], b]\n });\n }\n }\n });\n },\n update(self) {\n const {\n value,\n app\n } = self;\n const {\n sliderValue,\n sliderValueEditable\n } = self.params;\n const {\n hsb\n } = value;\n self.brightnessRangeSlider.value = hsb[2];\n self.brightnessRangeSlider.layout();\n const hslCurrent = colorHsbToHsl(hsb[0], hsb[1], hsb[2]);\n const hslLeft = colorHsbToHsl(hsb[0], hsb[1], 0);\n const hslRight = colorHsbToHsl(hsb[0], hsb[1], 1);\n self.brightnessRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hslCurrent[0]}, ${hslCurrent[1] * 100}%, ${hslCurrent[2] * 100}%)`);\n self.brightnessRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${app.rtl ? 'to left' : 'to right'}, hsl(${hslLeft[0]}, ${hslLeft[1] * 100}%, ${hslLeft[2] * 100}%), hsl(${hslRight[0]}, ${hslRight[1] * 100}%, ${hslRight[2] * 100}%))`);\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-brightness').val(`${hsb[2] * 1000 / 10}`);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-brightness').text(`${hsb[2] * 1000 / 10}`);\n }\n },\n destroy(self) {\n if (self.brightnessRangeSlider && self.brightnessRangeSlider.destroy) {\n self.brightnessRangeSlider.destroy();\n }\n delete self.brightnessRangeSlider;\n }\n};","/* eslint indent: [\"off\"] */\nimport $ from '../../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-palette\"\n }, $jsx(\"div\", {\n class: \"color-picker-palette\"\n }, self.params.palette.map(p => {\n if (Array.isArray(p)) {\n let row = '
                ';\n // prettier-ignore\n row += p.map(c => `\n
                \n `).join('');\n row += '
                ';\n return row;\n }\n return $jsx(\"div\", {\n class: \"color-picker-palette-value\",\n \"data-palette-color\": p,\n style: `background-color: ${p}`\n });\n })));\n },\n init(self) {\n function handlePaletteClick(e) {\n const hex = $(e.target).attr('data-palette-color');\n self.setValue({\n hex\n });\n }\n self.$el.on('click', '.color-picker-module-palette .color-picker-palette-value', handlePaletteClick);\n self.destroyPaletteEvents = function destroyPaletteEvents() {\n self.$el.off('click', '.color-picker-module-hex input', handlePaletteClick);\n };\n },\n destroy(self) {\n if (self.destroyPaletteEvents) {\n self.destroyPaletteEvents();\n }\n delete self.destroyPaletteEvents;\n }\n};","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render() {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-initial-current-colors\"\n }, $jsx(\"div\", {\n class: \"color-picker-initial-current-colors\"\n }, $jsx(\"div\", {\n class: \"color-picker-initial-color\"\n }), $jsx(\"div\", {\n class: \"color-picker-current-color\"\n })));\n },\n init(self) {\n function handleInitialColorClick() {\n if (self.initialValue) {\n const {\n hex,\n alpha\n } = self.initialValue;\n self.setValue({\n hex,\n alpha\n });\n }\n }\n self.$el.on('click', '.color-picker-initial-color', handleInitialColorClick);\n self.destroyInitialCurrentEvents = function destroyInitialCurrentEvents() {\n self.$el.off('click', '.color-picker-initial-color', handleInitialColorClick);\n };\n },\n update(self) {\n self.$el.find('.color-picker-module-initial-current-colors .color-picker-initial-color').css('background-color', self.initialValue.hex);\n self.$el.find('.color-picker-module-initial-current-colors .color-picker-current-color').css('background-color', self.value.hex);\n },\n destroy(self) {\n if (self.destroyInitialCurrentEvents) {\n self.destroyInitialCurrentEvents();\n }\n delete self.destroyInitialCurrentEvents;\n }\n};","import $ from '../../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n barLabel,\n barValue,\n barValueEditable,\n redLabelText,\n greenLabelText,\n blueLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-rgb-bars\"\n }, $jsx(\"div\", {\n class: \"color-picker-bar-wrap\"\n }, barLabel && $jsx(\"div\", {\n class: \"color-picker-bar-label\"\n }, redLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-bar color-picker-bar-red\"\n }), barValue && $jsx(\"div\", {\n class: \"color-picker-bar-value\"\n }, barValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-bar-red\",\n \"data-color-index\": \"0\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-bar-red\"\n }))), $jsx(\"div\", {\n class: \"color-picker-bar-wrap\"\n }, barLabel && $jsx(\"div\", {\n class: \"color-picker-bar-label\"\n }, greenLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-bar color-picker-bar-green\"\n }), barValue && $jsx(\"div\", {\n class: \"color-picker-bar-value\"\n }, barValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-bar-green\",\n \"data-color-index\": \"1\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-bar-green\"\n }))), $jsx(\"div\", {\n class: \"color-picker-bar-wrap\"\n }, barLabel && $jsx(\"div\", {\n class: \"color-picker-bar-label\"\n }, blueLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-bar color-picker-bar-blue\"\n }), barValue && $jsx(\"div\", {\n class: \"color-picker-bar-value\"\n }, barValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-bar-blue\",\n \"data-color-index\": \"2\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-bar-blue\"\n }))));\n },\n init(self) {\n self.redBar = self.app.range.create({\n el: self.$el.find('.color-picker-bar-red'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n vertical: true,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [value, self.value.rgb[1], self.value.rgb[2]]\n });\n }\n }\n });\n self.greenBar = self.app.range.create({\n el: self.$el.find('.color-picker-bar-green'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n vertical: true,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [self.value.rgb[0], value, self.value.rgb[2]]\n });\n }\n }\n });\n self.blueBar = self.app.range.create({\n el: self.$el.find('.color-picker-bar-blue'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n vertical: true,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [self.value.rgb[0], self.value.rgb[1], value]\n });\n }\n }\n });\n function handleInputChange(e) {\n const rgb = [...self.value.rgb];\n const index = parseInt($(e.target).attr('data-color-index'), 10);\n let value = parseInt(e.target.value, 10);\n if (Number.isNaN(value)) {\n e.target.value = rgb[index];\n return;\n }\n value = Math.max(0, Math.min(255, value));\n rgb[index] = value;\n self.setValue({\n rgb\n });\n }\n self.$el.on('change', '.color-picker-module-rgb-bars input', handleInputChange);\n self.destroyRgbBarsEvents = function destroyRgbBarsEvents() {\n self.$el.off('change', '.color-picker-module-rgb-bars input', handleInputChange);\n };\n },\n update(self) {\n const {\n value,\n redBar,\n greenBar,\n blueBar\n } = self;\n const {\n barValue,\n barValueEditable\n } = self.params;\n const {\n rgb\n } = value;\n redBar.value = rgb[0];\n greenBar.value = rgb[1];\n blueBar.value = rgb[2];\n redBar.layout();\n greenBar.layout();\n blueBar.layout();\n redBar.$el.find('.range-bar').css('background-image', `linear-gradient(to top, rgb(0, ${rgb[1]}, ${rgb[2]}), rgb(255, ${rgb[1]}, ${rgb[2]}))`);\n greenBar.$el.find('.range-bar').css('background-image', `linear-gradient(to top, rgb(${rgb[0]}, 0, ${rgb[2]}), rgb(${rgb[0]}, 255, ${rgb[2]}))`);\n blueBar.$el.find('.range-bar').css('background-image', `linear-gradient(to top, rgb(${rgb[0]}, ${rgb[1]}, 0), rgb(${rgb[0]}, ${rgb[1]}, 255))`);\n if (barValue && barValueEditable) {\n self.$el.find('input.color-picker-value-bar-red').val(rgb[0]);\n self.$el.find('input.color-picker-value-bar-green').val(rgb[1]);\n self.$el.find('input.color-picker-value-bar-blue').val(rgb[2]);\n } else if (barValue) {\n self.$el.find('span.color-picker-value-bar-red').text(rgb[0]);\n self.$el.find('span.color-picker-value-bar-green').text(rgb[1]);\n self.$el.find('span.color-picker-value-bar-blue').text(rgb[2]);\n }\n },\n destroy(self) {\n if (self.redBar && self.redBar.destroy) {\n self.redBar.destroy();\n }\n if (self.greenBar && self.greenBar.destroy) {\n self.greenBar.destroy();\n }\n if (self.blueBar && self.blueBar.destroy) {\n self.blueBar.destroy();\n }\n delete self.redBar;\n delete self.greenBar;\n delete self.blueBar;\n if (self.destroyRgbBarsEvents) self.destroyRgbBarsEvents();\n delete self.destroyRgbBarsEvents;\n }\n};","import $ from '../../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n sliderLabel,\n sliderValue,\n sliderValueEditable,\n redLabelText,\n greenLabelText,\n blueLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-rgb-sliders\"\n }, $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, redLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-red\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-red\",\n \"data-color-index\": \"0\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-red\"\n }))), $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, greenLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-green\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-green\",\n \"data-color-index\": \"1\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-green\"\n }))), $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, blueLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-blue\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-blue\",\n \"data-color-index\": \"2\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-blue\"\n }))));\n },\n init(self) {\n self.redRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-red'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [value, self.value.rgb[1], self.value.rgb[2]]\n });\n }\n }\n });\n self.greenRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-green'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [self.value.rgb[0], value, self.value.rgb[2]]\n });\n }\n }\n });\n self.blueRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-blue'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [self.value.rgb[0], self.value.rgb[1], value]\n });\n }\n }\n });\n function handleInputChange(e) {\n const rgb = [...self.value.rgb];\n const index = parseInt($(e.target).attr('data-color-index'), 10);\n let value = parseInt(e.target.value, 10);\n if (Number.isNaN(value)) {\n e.target.value = rgb[index];\n return;\n }\n value = Math.max(0, Math.min(255, value));\n rgb[index] = value;\n self.setValue({\n rgb\n });\n }\n self.$el.on('change', '.color-picker-module-rgb-sliders input', handleInputChange);\n self.destroyRgbSlidersEvents = function destroyRgbSlidersEvents() {\n self.$el.off('change', '.color-picker-module-rgb-sliders input', handleInputChange);\n };\n },\n update(self) {\n const {\n app,\n value,\n redRangeSlider,\n greenRangeSlider,\n blueRangeSlider\n } = self;\n const {\n sliderValue,\n sliderValueEditable\n } = self.params;\n const {\n rgb\n } = value;\n redRangeSlider.value = rgb[0];\n greenRangeSlider.value = rgb[1];\n blueRangeSlider.value = rgb[2];\n redRangeSlider.layout();\n greenRangeSlider.layout();\n blueRangeSlider.layout();\n redRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`);\n greenRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`);\n blueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`);\n const direction = app.rtl ? 'to left' : 'to right';\n redRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${direction}, rgb(0, ${rgb[1]}, ${rgb[2]}), rgb(255, ${rgb[1]}, ${rgb[2]}))`);\n greenRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${direction}, rgb(${rgb[0]}, 0, ${rgb[2]}), rgb(${rgb[0]}, 255, ${rgb[2]}))`);\n blueRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${direction}, rgb(${rgb[0]}, ${rgb[1]}, 0), rgb(${rgb[0]}, ${rgb[1]}, 255))`);\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-red').val(rgb[0]);\n self.$el.find('input.color-picker-value-green').val(rgb[1]);\n self.$el.find('input.color-picker-value-blue').val(rgb[2]);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-red').text(rgb[0]);\n self.$el.find('span.color-picker-value-green').text(rgb[1]);\n self.$el.find('span.color-picker-value-blue').text(rgb[2]);\n }\n },\n destroy(self) {\n if (self.redRangeSlider && self.redRangeSlider.destroy) {\n self.redRangeSlider.destroy();\n }\n if (self.greenRangeSlider && self.greenRangeSlider.destroy) {\n self.greenRangeSlider.destroy();\n }\n if (self.blueRangeSlider && self.blueRangeSlider.destroy) {\n self.blueRangeSlider.destroy();\n }\n delete self.redRangeSlider;\n delete self.greenRangeSlider;\n delete self.blueRangeSlider;\n if (self.destroyRgbSlidersEvents) self.destroyRgbSlidersEvents();\n delete self.destroyRgbSlidersEvents;\n }\n};","import $ from '../../../shared/dom7.js';\nimport { getSupport } from '../../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render() {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-sb-spectrum\"\n }, $jsx(\"div\", {\n class: \"color-picker-sb-spectrum\",\n style: \"background-color: hsl(0, 100%, 50%)\"\n }, $jsx(\"div\", {\n class: \"color-picker-sb-spectrum-handle\"\n })));\n },\n init(self) {\n const {\n app\n } = self;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n let specterRect;\n let specterIsTouched;\n let specterHandleIsTouched;\n const {\n $el\n } = self;\n function setSBFromSpecterCoords(x, y) {\n let s = (x - specterRect.left) / specterRect.width;\n let b = (y - specterRect.top) / specterRect.height;\n s = Math.max(0, Math.min(1, s));\n b = 1 - Math.max(0, Math.min(1, b));\n self.setValue({\n hsb: [self.value.hue, s, b]\n });\n }\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n const $targetEl = $(e.target);\n specterHandleIsTouched = $targetEl.closest('.color-picker-sb-spectrum-handle').length > 0;\n if (!specterHandleIsTouched) {\n specterIsTouched = $targetEl.closest('.color-picker-sb-spectrum').length > 0;\n }\n if (specterIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n setSBFromSpecterCoords(touchStartX, touchStartY);\n }\n if (specterHandleIsTouched || specterIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').addClass('color-picker-sb-spectrum-handle-pressed');\n }\n }\n function handleTouchMove(e) {\n if (!(specterIsTouched || specterHandleIsTouched)) return;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n if (!isMoved) {\n // First move\n isMoved = true;\n if (specterHandleIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n }\n }\n if (specterIsTouched || specterHandleIsTouched) {\n setSBFromSpecterCoords(touchCurrentX, touchCurrentY);\n }\n }\n function handleTouchEnd() {\n isMoved = false;\n if (specterIsTouched || specterHandleIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').removeClass('color-picker-sb-spectrum-handle-pressed');\n }\n specterIsTouched = false;\n specterHandleIsTouched = false;\n }\n function handleResize() {\n self.modules['sb-spectrum'].update(self);\n }\n const passiveListener = app.touchEvents.start === 'touchstart' && getSupport().passiveListener ? {\n passive: true,\n capture: false\n } : false;\n self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n self.destroySpectrumEvents = function destroySpectrumEvents() {\n self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n };\n },\n update(self) {\n const {\n value\n } = self;\n const {\n hsl,\n hsb\n } = value;\n const specterWidth = self.$el.find('.color-picker-sb-spectrum')[0].offsetWidth;\n const specterHeight = self.$el.find('.color-picker-sb-spectrum')[0].offsetHeight;\n self.$el.find('.color-picker-sb-spectrum').css('background-color', `hsl(${hsl[0]}, 100%, 50%)`);\n self.$el.find('.color-picker-sb-spectrum-handle').css('background-color', `hsl(${hsl[0]}, ${hsl[1] * 100}%, ${hsl[2] * 100}%)`).transform(`translate(${specterWidth * hsb[1]}px, ${specterHeight * (1 - hsb[2])}px)`);\n },\n destroy(self) {\n if (self.destroySpectrumEvents) self.destroySpectrumEvents();\n delete self.destroySpectrumEvents;\n }\n};","import $ from '../../../shared/dom7.js';\nimport { colorHsbToHsl } from '../../../shared/utils.js';\nimport { getSupport } from '../../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render() {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-hs-spectrum\"\n }, $jsx(\"div\", {\n class: \"color-picker-hs-spectrum\"\n }, $jsx(\"div\", {\n class: \"color-picker-hs-spectrum-handle\"\n })));\n },\n init(self) {\n const {\n app\n } = self;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n let specterRect;\n let specterIsTouched;\n let specterHandleIsTouched;\n const {\n $el\n } = self;\n function setHSFromSpecterCoords(x, y) {\n let h = (x - specterRect.left) / specterRect.width * 360;\n let s = (y - specterRect.top) / specterRect.height;\n h = Math.max(0, Math.min(360, h));\n s = 1 - Math.max(0, Math.min(1, s));\n self.setValue({\n hsb: [h, s, self.value.hsb[2]]\n });\n }\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n const $targetEl = $(e.target);\n specterHandleIsTouched = $targetEl.closest('.color-picker-hs-spectrum-handle').length > 0;\n if (!specterHandleIsTouched) {\n specterIsTouched = $targetEl.closest('.color-picker-hs-spectrum').length > 0;\n }\n if (specterIsTouched) {\n specterRect = $el.find('.color-picker-hs-spectrum')[0].getBoundingClientRect();\n setHSFromSpecterCoords(touchStartX, touchStartY);\n }\n if (specterHandleIsTouched || specterIsTouched) {\n $el.find('.color-picker-hs-spectrum-handle').addClass('color-picker-hs-spectrum-handle-pressed');\n }\n }\n function handleTouchMove(e) {\n if (!(specterIsTouched || specterHandleIsTouched)) return;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n if (!isMoved) {\n // First move\n isMoved = true;\n if (specterHandleIsTouched) {\n specterRect = $el.find('.color-picker-hs-spectrum')[0].getBoundingClientRect();\n }\n }\n if (specterIsTouched || specterHandleIsTouched) {\n setHSFromSpecterCoords(touchCurrentX, touchCurrentY);\n }\n }\n function handleTouchEnd() {\n isMoved = false;\n if (specterIsTouched || specterHandleIsTouched) {\n $el.find('.color-picker-hs-spectrum-handle').removeClass('color-picker-hs-spectrum-handle-pressed');\n }\n specterIsTouched = false;\n specterHandleIsTouched = false;\n }\n function handleResize() {\n self.modules['hs-spectrum'].update(self);\n }\n const passiveListener = app.touchEvents.start === 'touchstart' && getSupport().passiveListener ? {\n passive: true,\n capture: false\n } : false;\n self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n self.destroySpectrumEvents = function destroySpectrumEvents() {\n self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n };\n },\n update(self) {\n const {\n value\n } = self;\n const {\n hsb\n } = value;\n const specterWidth = self.$el.find('.color-picker-hs-spectrum')[0].offsetWidth;\n const specterHeight = self.$el.find('.color-picker-hs-spectrum')[0].offsetHeight;\n const hslBright = colorHsbToHsl(hsb[0], hsb[1], 1);\n self.$el.find('.color-picker-hs-spectrum-handle').css('background-color', `hsl(${hslBright[0]}, ${hslBright[1] * 100}%, ${hslBright[2] * 100}%)`).transform(`translate(${specterWidth * (hsb[0] / 360)}px, ${specterHeight * (1 - hsb[1])}px)`);\n },\n destroy(self) {\n if (self.destroySpectrumEvents) self.destroySpectrumEvents();\n delete self.destroySpectrumEvents;\n }\n};","import $ from '../../../shared/dom7.js';\nimport { getSupport } from '../../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nfunction svgWheelCircles() {\n const total = 256;\n let circles = '';\n for (let i = total; i > 0; i -= 1) {\n const angle = i * Math.PI / (total / 2);\n const hue = 360 / total * i;\n circles += ``;\n }\n return circles;\n}\nexport default {\n render() {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-wheel\"\n }, $jsx(\"div\", {\n class: \"color-picker-wheel\"\n }, $jsx(\"svg\", {\n viewBox: \"0 0 300 300\",\n width: \"300\",\n height: \"300\"\n }, svgWheelCircles()), $jsx(\"div\", {\n class: \"color-picker-wheel-handle\"\n }), $jsx(\"div\", {\n class: \"color-picker-sb-spectrum\",\n style: \"background-color: hsl(0, 100%, 50%)\"\n }, $jsx(\"div\", {\n class: \"color-picker-sb-spectrum-handle\"\n }))));\n },\n init(self) {\n const {\n app\n } = self;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n let wheelRect;\n let wheelIsTouched;\n let wheelHandleIsTouched;\n let specterRect;\n let specterIsTouched;\n let specterHandleIsTouched;\n const {\n $el\n } = self;\n function setHueFromWheelCoords(x, y) {\n const wheelCenterX = wheelRect.left + wheelRect.width / 2;\n const wheelCenterY = wheelRect.top + wheelRect.height / 2;\n const angleRad = Math.atan2(y - wheelCenterY, x - wheelCenterX);\n let angleDeg = angleRad * 180 / Math.PI + 90;\n if (angleDeg < 0) angleDeg += 360;\n angleDeg = 360 - angleDeg;\n self.setValue({\n hue: angleDeg\n });\n }\n function setSBFromSpecterCoords(x, y) {\n let s = (x - specterRect.left) / specterRect.width;\n let b = (y - specterRect.top) / specterRect.height;\n s = Math.max(0, Math.min(1, s));\n b = 1 - Math.max(0, Math.min(1, b));\n self.setValue({\n hsb: [self.value.hue, s, b]\n });\n }\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n const $targetEl = $(e.target);\n wheelHandleIsTouched = $targetEl.closest('.color-picker-wheel-handle').length > 0;\n wheelIsTouched = $targetEl.closest('circle').length > 0;\n specterHandleIsTouched = $targetEl.closest('.color-picker-sb-spectrum-handle').length > 0;\n if (!specterHandleIsTouched) {\n specterIsTouched = $targetEl.closest('.color-picker-sb-spectrum').length > 0;\n }\n if (wheelIsTouched) {\n wheelRect = $el.find('.color-picker-wheel')[0].getBoundingClientRect();\n setHueFromWheelCoords(touchStartX, touchStartY);\n }\n if (specterIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n setSBFromSpecterCoords(touchStartX, touchStartY);\n }\n if (specterHandleIsTouched || specterIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').addClass('color-picker-sb-spectrum-handle-pressed');\n }\n }\n function handleTouchMove(e) {\n if (!(wheelIsTouched || wheelHandleIsTouched) && !(specterIsTouched || specterHandleIsTouched)) return;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n if (!isMoved) {\n // First move\n isMoved = true;\n if (wheelHandleIsTouched) {\n wheelRect = $el.find('.color-picker-wheel')[0].getBoundingClientRect();\n }\n if (specterHandleIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n }\n }\n if (wheelIsTouched || wheelHandleIsTouched) {\n setHueFromWheelCoords(touchCurrentX, touchCurrentY);\n }\n if (specterIsTouched || specterHandleIsTouched) {\n setSBFromSpecterCoords(touchCurrentX, touchCurrentY);\n }\n }\n function handleTouchEnd() {\n isMoved = false;\n if (specterIsTouched || specterHandleIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').removeClass('color-picker-sb-spectrum-handle-pressed');\n }\n wheelIsTouched = false;\n wheelHandleIsTouched = false;\n specterIsTouched = false;\n specterHandleIsTouched = false;\n }\n function handleResize() {\n self.modules.wheel.update(self);\n }\n const passiveListener = app.touchEvents.start === 'touchstart' && getSupport().passiveListener ? {\n passive: true,\n capture: false\n } : false;\n self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n self.destroyWheelEvents = function destroyWheelEvents() {\n self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n };\n },\n update(self) {\n const {\n value\n } = self;\n const {\n hsl,\n hsb\n } = value;\n const specterWidth = self.$el.find('.color-picker-sb-spectrum')[0].offsetWidth;\n const specterHeight = self.$el.find('.color-picker-sb-spectrum')[0].offsetHeight;\n const wheelSize = self.$el.find('.color-picker-wheel')[0].offsetWidth;\n const wheelHalfSize = wheelSize / 2;\n const angleRad = value.hue * Math.PI / 180;\n const handleSize = wheelSize / 6;\n const handleHalfSize = handleSize / 2;\n const tX = wheelHalfSize - Math.sin(angleRad) * (wheelHalfSize - handleHalfSize) - handleHalfSize;\n const tY = wheelHalfSize - Math.cos(angleRad) * (wheelHalfSize - handleHalfSize) - handleHalfSize;\n self.$el.find('.color-picker-wheel-handle').css('background-color', `hsl(${hsl[0]}, 100%, 50%)`).transform(`translate(${tX}px, ${tY}px)`);\n self.$el.find('.color-picker-sb-spectrum').css('background-color', `hsl(${hsl[0]}, 100%, 50%)`);\n self.$el.find('.color-picker-sb-spectrum-handle').css('background-color', `hsl(${hsl[0]}, ${hsl[1] * 100}%, ${hsl[2] * 100}%)`).transform(`translate(${specterWidth * hsb[1]}px, ${specterHeight * (1 - hsb[2])}px)`);\n },\n destroy(self) {\n if (self.destroyWheelEvents) self.destroyWheelEvents();\n delete self.destroyWheelEvents;\n }\n};","import { extend, colorRgbToHex, colorRgbToHsl, colorHslToHsb, colorHslToRgb, colorHsbToHsl, colorHexToRgb, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport $ from '../../shared/dom7.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport moduleAlphaSlider from './modules/alpha-slider.js';\nimport moduleCurrentColor from './modules/current-color.js';\nimport moduleHex from './modules/hex.js';\nimport moduleHsbSliders from './modules/hsb-sliders.js';\nimport moduleHueSlider from './modules/hue-slider.js';\nimport moduleBrightnessSlider from './modules/brightness-slider.js';\nimport modulePalette from './modules/palette.js';\nimport moduleInitialCurrentColors from './modules/initial-current-colors.js';\nimport moduleRgbBars from './modules/rgb-bars.js';\nimport moduleRgbSliders from './modules/rgb-sliders.js';\nimport moduleSbSpectrum from './modules/sb-spectrum.js';\nimport moduleHsSpectrum from './modules/hs-spectrum.js';\nimport moduleWheel from './modules/wheel.js';\n\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass ColorPicker extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const self = this;\n self.params = extend({}, app.params.colorPicker, params);\n let $containerEl;\n if (self.params.containerEl) {\n $containerEl = $(self.params.containerEl);\n if ($containerEl.length === 0) return self;\n }\n let $inputEl;\n if (self.params.inputEl) {\n $inputEl = $(self.params.inputEl);\n }\n let $targetEl;\n if (self.params.targetEl) {\n $targetEl = $(self.params.targetEl);\n }\n extend(self, {\n app,\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n $targetEl,\n targetEl: $targetEl && $targetEl[0],\n initialized: false,\n opened: false,\n url: self.params.url,\n modules: {\n 'alpha-slider': moduleAlphaSlider,\n 'current-color': moduleCurrentColor,\n hex: moduleHex,\n // eslint-disable-line\n 'hsb-sliders': moduleHsbSliders,\n 'hue-slider': moduleHueSlider,\n 'brightness-slider': moduleBrightnessSlider,\n palette: modulePalette,\n // eslint-disable-line\n 'initial-current-colors': moduleInitialCurrentColors,\n 'rgb-bars': moduleRgbBars,\n 'rgb-sliders': moduleRgbSliders,\n 'sb-spectrum': moduleSbSpectrum,\n 'hs-spectrum': moduleHsSpectrum,\n wheel: moduleWheel // eslint-disable-line\n }\n });\n\n function onInputClick() {\n self.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n function onTargetClick() {\n self.open();\n }\n function onHtmlClick(e) {\n if (self.destroyed || !self.params) return;\n if (self.params.openIn === 'page') return;\n const $clickTargetEl = $(e.target);\n if (!self.opened || self.closing) return;\n if ($clickTargetEl.closest('[class*=\"backdrop\"]').length) return;\n if ($clickTargetEl.closest('.color-picker-popup, .color-picker-popover').length) return;\n if ($inputEl && $inputEl.length > 0) {\n if ($clickTargetEl[0] !== $inputEl[0] && $clickTargetEl.closest('.sheet-modal').length === 0) {\n self.close();\n }\n } else if ($(e.target).closest('.sheet-modal').length === 0) {\n self.close();\n }\n }\n\n // Events\n extend(self, {\n attachInputEvents() {\n self.$inputEl.on('click', onInputClick);\n if (self.params.inputReadOnly) {\n self.$inputEl.on('focus mousedown', onInputFocus);\n if (self.$inputEl[0]) {\n self.$inputEl[0].f7ValidateReadonly = true;\n }\n }\n },\n detachInputEvents() {\n self.$inputEl.off('click', onInputClick);\n if (self.params.inputReadOnly) {\n self.$inputEl.off('focus mousedown', onInputFocus);\n if (self.$inputEl[0]) {\n delete self.$inputEl[0].f7ValidateReadonly;\n }\n }\n },\n attachTargetEvents() {\n self.$targetEl.on('click', onTargetClick);\n },\n detachTargetEvents() {\n self.$targetEl.off('click', onTargetClick);\n },\n attachHtmlEvents() {\n app.on('click', onHtmlClick);\n },\n detachHtmlEvents() {\n app.off('click', onHtmlClick);\n }\n });\n self.init();\n return self;\n }\n get view() {\n const {\n $inputEl,\n $targetEl,\n app,\n params\n } = this;\n let view;\n if (params.view) {\n view = params.view;\n } else {\n if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view && $targetEl) {\n view = $targetEl.parents('.view').length && $targetEl.parents('.view')[0].f7View;\n }\n }\n if (!view) view = app.views.main;\n return view;\n }\n attachEvents() {\n const self = this;\n self.centerModules = self.centerModules.bind(self);\n if (self.params.centerModules) {\n self.app.on('resize', self.centerModules);\n }\n }\n detachEvents() {\n const self = this;\n if (self.params.centerModules) {\n self.app.off('resize', self.centerModules);\n }\n }\n centerModules() {\n const self = this;\n if (!self.opened || !self.$el || self.inline) return;\n const $pageContentEl = self.$el.find('.page-content');\n if (!$pageContentEl.length) return;\n const {\n scrollHeight,\n offsetHeight\n } = $pageContentEl[0];\n if (scrollHeight <= offsetHeight) {\n $pageContentEl.addClass('justify-content-center');\n } else {\n $pageContentEl.removeClass('justify-content-center');\n }\n }\n initInput() {\n const self = this;\n if (!self.$inputEl) return;\n if (self.params.inputReadOnly) self.$inputEl.prop('readOnly', true);\n }\n getModalType() {\n const self = this;\n const {\n app,\n modal,\n params\n } = self;\n const {\n openIn,\n openInPhone\n } = params;\n const device = getDevice();\n if (modal && modal.type) return modal.type;\n if (openIn !== 'auto') return openIn;\n if (self.inline) return null;\n if (device.ios) {\n return device.ipad ? 'popover' : openInPhone;\n }\n if (app.width >= 768) {\n return 'popover';\n }\n return openInPhone;\n }\n formatValue() {\n const self = this;\n const {\n value\n } = self;\n if (self.params.formatValue) {\n return self.params.formatValue.call(self, value);\n }\n return value.hex;\n }\n\n // eslint-disable-next-line\n normalizeHsValues(arr) {\n return [Math.floor(arr[0] * 10) / 10, Math.floor(arr[1] * 1000) / 1000, Math.floor(arr[2] * 1000) / 1000];\n }\n setValue(value, updateModules) {\n if (value === void 0) {\n value = {};\n }\n if (updateModules === void 0) {\n updateModules = true;\n }\n const self = this;\n if (typeof value === 'undefined') return;\n let {\n hex,\n rgb,\n hsl,\n hsb,\n alpha = 1,\n hue,\n rgba,\n hsla\n } = self.value || {};\n const needChangeEvent = self.value || !self.value && !self.params.value;\n let valueChanged;\n Object.keys(value).forEach(k => {\n if (!self.value || typeof self.value[k] === 'undefined') {\n valueChanged = true;\n return;\n }\n const v = value[k];\n if (Array.isArray(v)) {\n v.forEach((subV, subIndex) => {\n if (subV !== self.value[k][subIndex]) {\n valueChanged = true;\n }\n });\n } else if (v !== self.value[k]) {\n valueChanged = true;\n }\n });\n if (!valueChanged) return;\n if (value.rgb || value.rgba) {\n const [r, g, b, a = alpha] = value.rgb || value.rgba;\n rgb = [r, g, b];\n hex = colorRgbToHex(...rgb);\n hsl = colorRgbToHsl(...rgb);\n hsb = colorHslToHsb(...hsl);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n alpha = a;\n rgba = [rgb[0], rgb[1], rgb[2], a];\n hsla = [hsl[0], hsl[1], hsl[2], a];\n }\n if (value.hsl || value.hsla) {\n const [h, s, l, a = alpha] = value.hsl || value.hsla;\n hsl = [h, s, l];\n rgb = colorHslToRgb(...hsl);\n hex = colorRgbToHex(...rgb);\n hsb = colorHslToHsb(...hsl);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n alpha = a;\n rgba = [rgb[0], rgb[1], rgb[2], a];\n hsla = [hsl[0], hsl[1], hsl[2], a];\n }\n if (value.hsb) {\n const [h, s, b, a = alpha] = value.hsb;\n hsb = [h, s, b];\n hsl = colorHsbToHsl(...hsb);\n rgb = colorHslToRgb(...hsl);\n hex = colorRgbToHex(...rgb);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n alpha = a;\n rgba = [rgb[0], rgb[1], rgb[2], a];\n hsla = [hsl[0], hsl[1], hsl[2], a];\n }\n if (value.hex) {\n rgb = colorHexToRgb(value.hex);\n hex = colorRgbToHex(...rgb);\n hsl = colorRgbToHsl(...rgb);\n hsb = colorHslToHsb(...hsl);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n rgba = [rgb[0], rgb[1], rgb[2], alpha];\n hsla = [hsl[0], hsl[1], hsl[2], alpha];\n }\n if (typeof value.alpha !== 'undefined') {\n alpha = value.alpha;\n if (typeof rgb !== 'undefined') {\n rgba = [rgb[0], rgb[1], rgb[2], alpha];\n }\n if (typeof hsl !== 'undefined') {\n hsla = [hsl[0], hsl[1], hsl[2], alpha];\n }\n }\n if (typeof value.hue !== 'undefined') {\n const [h, s, l] = hsl; // eslint-disable-line\n hsl = [value.hue, s, l];\n hsb = colorHslToHsb(...hsl);\n rgb = colorHslToRgb(...hsl);\n hex = colorRgbToHex(...rgb);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n rgba = [rgb[0], rgb[1], rgb[2], alpha];\n hsla = [hsl[0], hsl[1], hsl[2], alpha];\n }\n self.value = {\n hex,\n alpha,\n hue,\n rgb,\n hsl,\n hsb,\n rgba,\n hsla\n };\n if (!self.initialValue) self.initialValue = extend({}, self.value);\n self.updateValue(needChangeEvent);\n if (self.opened && updateModules) {\n self.updateModules();\n }\n }\n getValue() {\n const self = this;\n return self.value;\n }\n updateValue(fireEvents) {\n if (fireEvents === void 0) {\n fireEvents = true;\n }\n const self = this;\n const {\n $inputEl,\n value,\n $targetEl\n } = self;\n if ($targetEl && self.params.targetElSetBackgroundColor) {\n const {\n rgba\n } = value;\n $targetEl.css('background-color', `rgba(${rgba.join(', ')})`);\n }\n if (fireEvents) {\n self.emit('local::change colorPickerChange', self, value);\n }\n if ($inputEl && $inputEl.length) {\n const inputValue = self.formatValue(value);\n if ($inputEl && $inputEl.length) {\n $inputEl.val(inputValue);\n if (fireEvents) {\n $inputEl.trigger('change');\n }\n }\n }\n }\n updateModules() {\n const self = this;\n const {\n modules\n } = self;\n self.params.modules.forEach(m => {\n if (typeof m === 'string' && modules[m] && modules[m].update) {\n modules[m].update(self);\n } else if (m && m.update) {\n m.update(self);\n }\n });\n }\n update() {\n const self = this;\n self.updateModules();\n }\n renderPicker() {\n const self = this;\n const {\n params,\n modules\n } = self;\n let html = '';\n params.modules.forEach(m => {\n if (typeof m === 'string' && modules[m] && modules[m].render) {\n html += modules[m].render(self);\n } else if (m && m.render) {\n html += m.render(self);\n }\n });\n return html;\n }\n renderNavbar() {\n const self = this;\n if (self.params.renderNavbar) {\n return self.params.renderNavbar.call(self, self);\n }\n const {\n openIn,\n navbarTitleText,\n navbarBackLinkText,\n navbarCloseText\n } = self.params;\n return $jsx(\"div\", {\n class: \"navbar\"\n }, $jsx(\"div\", {\n class: \"navbar-bg\"\n }), $jsx(\"div\", {\n class: \"navbar-inner sliding\"\n }, openIn === 'page' && $jsx(\"div\", {\n class: \"left\"\n }, $jsx(\"a\", {\n class: \"link back\"\n }, $jsx(\"i\", {\n class: \"icon icon-back\"\n }), $jsx(\"span\", {\n class: \"if-not-md\"\n }, navbarBackLinkText))), $jsx(\"div\", {\n class: \"title\"\n }, navbarTitleText), openIn !== 'page' && $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link popup-close\",\n \"data-popup\": \".color-picker-popup\"\n }, navbarCloseText))));\n }\n renderToolbar() {\n const self = this;\n if (self.params.renderToolbar) {\n return self.params.renderToolbar.call(self, self);\n }\n return $jsx(\"div\", {\n class: \"toolbar toolbar-top\"\n }, $jsx(\"div\", {\n class: \"toolbar-inner\"\n }, $jsx(\"div\", {\n class: \"left\"\n }), $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link sheet-close popover-close\",\n \"data-sheet\": \".color-picker-sheet-modal\",\n \"data-popover\": \".color-picker-popover\"\n }, self.params.toolbarCloseText))));\n }\n renderInline() {\n const self = this;\n const {\n cssClass,\n groupedModules\n } = self.params;\n return $jsx(\"div\", {\n class: `color-picker color-picker-inline ${groupedModules ? 'color-picker-grouped-modules' : ''} ${cssClass || ''}`\n }, self.renderPicker());\n }\n renderSheet() {\n const self = this;\n const {\n cssClass,\n toolbarSheet,\n groupedModules\n } = self.params;\n return $jsx(\"div\", {\n class: `sheet-modal color-picker color-picker-sheet-modal ${groupedModules ? 'color-picker-grouped-modules' : ''} ${cssClass || ''}`\n }, toolbarSheet && self.renderToolbar(), $jsx(\"div\", {\n class: \"sheet-modal-inner\"\n }, $jsx(\"div\", {\n class: \"page-content\"\n }, self.renderPicker())));\n }\n renderPopover() {\n const self = this;\n const {\n cssClass,\n toolbarPopover,\n groupedModules\n } = self.params;\n return $jsx(\"div\", {\n class: `popover color-picker-popover ${cssClass || ''}`\n }, $jsx(\"div\", {\n class: \"popover-inner\"\n }, $jsx(\"div\", {\n class: `color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}`\n }, toolbarPopover && self.renderToolbar(), $jsx(\"div\", {\n class: \"page-content\"\n }, self.renderPicker()))));\n }\n renderPopup() {\n const self = this;\n const {\n cssClass,\n navbarPopup,\n groupedModules\n } = self.params;\n return $jsx(\"div\", {\n class: `popup color-picker-popup ${cssClass || ''}`\n }, $jsx(\"div\", {\n class: \"page\"\n }, navbarPopup && self.renderNavbar(), $jsx(\"div\", {\n class: `color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}`\n }, $jsx(\"div\", {\n class: \"page-content\"\n }, self.renderPicker()))));\n }\n renderPage() {\n const self = this;\n const {\n cssClass,\n groupedModules\n } = self.params;\n return $jsx(\"div\", {\n class: `page color-picker-page ${cssClass || ''}`,\n \"data-name\": \"color-picker-page\"\n }, self.renderNavbar(), $jsx(\"div\", {\n class: `color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}`\n }, $jsx(\"div\", {\n class: \"page-content\"\n }, self.renderPicker())));\n }\n\n // eslint-disable-next-line\n render() {\n const self = this;\n const {\n params\n } = self;\n if (params.render) return params.render.call(self);\n if (self.inline) return self.renderInline();\n if (params.openIn === 'page') {\n return self.renderPage();\n }\n const modalType = self.getModalType();\n if (modalType === 'popover') return self.renderPopover();\n if (modalType === 'sheet') return self.renderSheet();\n if (modalType === 'popup') return self.renderPopup();\n }\n onOpen() {\n const self = this;\n const {\n initialized,\n $el,\n app,\n $inputEl,\n inline,\n value,\n params,\n modules\n } = self;\n self.closing = false;\n self.opened = true;\n self.opening = true;\n\n // Init main events\n self.attachEvents();\n params.modules.forEach(m => {\n if (typeof m === 'string' && modules[m] && modules[m].init) {\n modules[m].init(self);\n } else if (m && m.init) {\n m.init(self);\n }\n });\n const updateValue = !value && params.value;\n\n // Set value\n if (!initialized) {\n if (value) self.setValue(value);else if (params.value) {\n self.setValue(params.value, false);\n } else if (!params.value) {\n self.setValue({\n hex: '#ff0000'\n }, false);\n }\n } else if (value) {\n self.initialValue = extend({}, value);\n self.setValue(value, false);\n }\n\n // Update input value\n if (updateValue) self.updateValue();\n self.updateModules();\n\n // Center modules\n if (params.centerModules) {\n self.centerModules();\n }\n\n // Extra focus\n if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n self.initialized = true;\n\n // Trigger events\n if ($el) {\n $el.trigger('colorpicker:open');\n }\n if ($inputEl) {\n $inputEl.trigger('colorpicker:open');\n }\n self.emit('local::open colorPickerOpen', self);\n }\n onOpened() {\n const self = this;\n self.opening = false;\n if (self.$el) {\n self.$el.trigger('colorpicker:opened');\n }\n if (self.$inputEl) {\n self.$inputEl.trigger('colorpicker:opened');\n }\n self.emit('local::opened colorPickerOpened', self);\n }\n onClose() {\n const self = this;\n const {\n app,\n params,\n modules\n } = self;\n self.opening = false;\n self.closing = true;\n\n // Detach events\n self.detachEvents();\n if (self.$inputEl) {\n if (app.theme === 'md') {\n self.$inputEl.trigger('blur');\n } else {\n const validate = self.$inputEl.attr('validate');\n const required = self.$inputEl.attr('required');\n if (validate && required) {\n app.input.validate(self.$inputEl);\n }\n }\n }\n params.modules.forEach(m => {\n if (typeof m === 'string' && modules[m] && modules[m].destroy) {\n modules[m].destroy(self);\n } else if (m && m.destroy) {\n m.destroy(self);\n }\n });\n if (self.$el) {\n self.$el.trigger('colorpicker:close');\n }\n if (self.$inputEl) {\n self.$inputEl.trigger('colorpicker:close');\n }\n self.emit('local::close colorPickerClose', self);\n }\n onClosed() {\n const self = this;\n self.opened = false;\n self.closing = false;\n if (!self.inline) {\n nextTick(() => {\n if (self.modal && self.modal.el && self.modal.destroy) {\n if (!self.params.routableModals) {\n self.modal.destroy();\n }\n }\n delete self.modal;\n });\n }\n if (self.$el) {\n self.$el.trigger('colorpicker:closed');\n }\n if (self.$inputEl) {\n self.$inputEl.trigger('colorpicker:closed');\n }\n self.emit('local::closed colorPickerClosed', self);\n }\n open() {\n const self = this;\n const {\n app,\n opened,\n inline,\n $inputEl,\n $targetEl,\n params\n } = self;\n if (opened) return;\n if (inline) {\n self.$el = $(self.render());\n self.$el[0].f7ColorPicker = self;\n self.$containerEl.append(self.$el);\n self.onOpen();\n self.onOpened();\n return;\n }\n const colorPickerContent = self.render();\n if (params.openIn === 'page') {\n self.view.router.navigate({\n url: self.url,\n route: {\n content: colorPickerContent,\n path: self.url,\n on: {\n pageBeforeIn(e, page) {\n self.$el = page.$el.find('.color-picker');\n self.$el[0].f7ColorPicker = self;\n self.onOpen();\n },\n pageAfterIn() {\n self.onOpened();\n },\n pageBeforeOut() {\n self.onClose();\n },\n pageAfterOut() {\n self.onClosed();\n if (self.$el && self.$el[0]) {\n self.$el[0].f7ColorPicker = null;\n delete self.$el[0].f7ColorPicker;\n }\n }\n }\n }\n });\n } else {\n const modalType = self.getModalType();\n let backdrop = params.backdrop;\n if (backdrop === null || typeof backdrop === 'undefined') {\n if (modalType === 'popover' && app.params.popover.backdrop !== false) backdrop = true;\n if (modalType === 'popup') backdrop = true;\n }\n const modalParams = {\n targetEl: $targetEl || $inputEl,\n scrollToEl: params.scrollToInput ? $targetEl || $inputEl : undefined,\n content: colorPickerContent,\n backdrop,\n closeByBackdropClick: params.closeByBackdropClick,\n on: {\n open() {\n const modal = this;\n self.modal = modal;\n self.$el = modalType === 'popover' || modalType === 'popup' ? modal.$el.find('.color-picker') : modal.$el;\n self.$el[0].f7ColorPicker = self;\n self.onOpen();\n },\n opened() {\n self.onOpened();\n },\n close() {\n self.onClose();\n },\n closed() {\n self.onClosed();\n if (self.$el && self.$el[0]) {\n self.$el[0].f7ColorPicker = null;\n delete self.$el[0].f7ColorPicker;\n }\n }\n }\n };\n if (modalType === 'popup') {\n modalParams.push = params.popupPush;\n modalParams.swipeToClose = params.popupSwipeToClose;\n }\n if (modalType === 'sheet') {\n modalParams.push = params.sheetPush;\n modalParams.swipeToClose = params.sheetSwipeToClose;\n }\n if (params.routableModals && self.view) {\n self.view.router.navigate({\n url: self.url,\n route: {\n path: self.url,\n [modalType]: modalParams\n }\n });\n } else {\n self.modal = app[modalType].create(modalParams);\n self.modal.open();\n }\n }\n }\n close() {\n const self = this;\n const {\n opened,\n inline\n } = self;\n if (!opened) return;\n if (inline) {\n self.onClose();\n self.onClosed();\n return;\n }\n if (self.params.routableModals && self.view || self.params.openIn === 'page') {\n self.view.router.back();\n } else {\n self.modal.close();\n }\n }\n init() {\n const self = this;\n self.initInput();\n if (self.inline) {\n self.open();\n self.emit('local::init colorPickerInit', self);\n return;\n }\n if (!self.initialized && self.params.value) {\n self.setValue(self.params.value);\n }\n\n // Attach input Events\n if (self.$inputEl) {\n self.attachInputEvents();\n }\n if (self.$targetEl) {\n self.attachTargetEvents();\n }\n if (self.params.closeByOutsideClick) {\n self.attachHtmlEvents();\n }\n self.emit('local::init colorPickerInit', self);\n }\n destroy() {\n const self = this;\n if (self.destroyed) return;\n const {\n $el\n } = self;\n self.emit('local::beforeDestroy colorPickerBeforeDestroy', self);\n if ($el) $el.trigger('colorpicker:beforedestroy');\n self.close();\n\n // Detach Events\n self.detachEvents();\n if (self.$inputEl) {\n self.detachInputEvents();\n }\n if (self.$targetEl) {\n self.detachTargetEvents();\n }\n if (self.params.closeByOutsideClick) {\n self.detachHtmlEvents();\n }\n if ($el && $el.length) delete self.$el[0].f7ColorPicker;\n deleteProps(self);\n self.destroyed = true;\n }\n}\nexport default ColorPicker;","import $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport ColorPicker from './color-picker-class.js';\nexport default {\n name: 'colorPicker',\n static: {\n ColorPicker\n },\n create() {\n const app = this;\n app.colorPicker = ConstructorMethods({\n defaultSelector: '.color-picker',\n constructor: ColorPicker,\n app,\n domProp: 'f7ColorPicker'\n });\n app.colorPicker.close = function close(el) {\n if (el === void 0) {\n el = '.color-picker';\n }\n const $el = $(el);\n if ($el.length === 0) return;\n const colorPicker = $el[0].f7ColorPicker;\n if (!colorPicker || colorPicker && !colorPicker.opened) return;\n colorPicker.close();\n };\n },\n params: {\n colorPicker: {\n // Color picker settings\n value: null,\n modules: ['wheel'],\n palette: [['#FFEBEE', '#FFCDD2', '#EF9A9A', '#E57373', '#EF5350', '#F44336', '#E53935', '#D32F2F', '#C62828', '#B71C1C'], ['#F3E5F5', '#E1BEE7', '#CE93D8', '#BA68C8', '#AB47BC', '#9C27B0', '#8E24AA', '#7B1FA2', '#6A1B9A', '#4A148C'], ['#E8EAF6', '#C5CAE9', '#9FA8DA', '#7986CB', '#5C6BC0', '#3F51B5', '#3949AB', '#303F9F', '#283593', '#1A237E'], ['#E1F5FE', '#B3E5FC', '#81D4FA', '#4FC3F7', '#29B6F6', '#03A9F4', '#039BE5', '#0288D1', '#0277BD', '#01579B'], ['#E0F2F1', '#B2DFDB', '#80CBC4', '#4DB6AC', '#26A69A', '#009688', '#00897B', '#00796B', '#00695C', '#004D40'], ['#F1F8E9', '#DCEDC8', '#C5E1A5', '#AED581', '#9CCC65', '#8BC34A', '#7CB342', '#689F38', '#558B2F', '#33691E'], ['#FFFDE7', '#FFF9C4', '#FFF59D', '#FFF176', '#FFEE58', '#FFEB3B', '#FDD835', '#FBC02D', '#F9A825', '#F57F17'], ['#FFF3E0', '#FFE0B2', '#FFCC80', '#FFB74D', '#FFA726', '#FF9800', '#FB8C00', '#F57C00', '#EF6C00', '#E65100']],\n groupedModules: false,\n centerModules: true,\n sliderLabel: false,\n sliderValue: false,\n sliderValueEdiable: false,\n barLabel: false,\n barValue: false,\n barValueEdiable: false,\n hexLabel: false,\n hexValueEditable: false,\n redLabelText: 'R',\n greenLabelText: 'G',\n blueLabelText: 'B',\n hueLabelText: 'H',\n saturationLabelText: 'S',\n brightnessLabelText: 'B',\n hexLabelText: 'HEX',\n alphaLabelText: 'A',\n // Common opener settings\n containerEl: null,\n openIn: 'popover',\n // or 'popover' or 'sheet' or 'popup' or 'page' or 'auto'\n openInPhone: 'popup',\n // or 'popover' or 'sheet' or 'popup' or 'page'\n popupPush: false,\n popupSwipeToClose: undefined,\n sheetPush: false,\n sheetSwipeToClose: undefined,\n formatValue: null,\n targetEl: null,\n targetElSetBackgroundColor: false,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n toolbarSheet: true,\n toolbarPopover: false,\n toolbarCloseText: 'Done',\n navbarPopup: true,\n navbarCloseText: 'Done',\n navbarTitleText: 'Color',\n navbarBackLinkText: 'Back',\n cssClass: null,\n routableModals: false,\n view: null,\n url: 'color/',\n backdrop: null,\n closeByBackdropClick: true,\n // Render functions\n renderToolbar: null,\n renderNavbar: null,\n renderInline: null,\n renderPopover: null,\n renderSheet: null,\n renderPopup: null,\n render: null\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { bindMethods, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\nconst Treeview = {\n open(itemEl) {\n const app = this;\n const $itemEl = $(itemEl).eq(0);\n if (!$itemEl.length) return;\n $itemEl.addClass('treeview-item-opened');\n $itemEl.trigger('treeview:open');\n app.emit('treeviewOpen', $itemEl[0]);\n function done(cancel) {\n if (cancel) {\n $itemEl.removeClass('treeview-item-opened');\n $itemEl.trigger('treeview:close');\n app.emit('treeviewClose', $itemEl[0]);\n } else {\n $itemEl[0].f7TreeviewChildrenLoaded = true;\n }\n $itemEl.find('.treeview-toggle').removeClass('treeview-toggle-hidden');\n $itemEl.find('.treeview-preloader').remove();\n }\n if ($itemEl.hasClass('treeview-load-children') && !$itemEl[0].f7TreeviewChildrenLoaded) {\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n $itemEl.trigger('treeview:loadchildren', done);\n app.emit('treeviewLoadChildren', $itemEl[0], done);\n $itemEl.find('.treeview-toggle').addClass('treeview-toggle-hidden');\n $itemEl.find('.treeview-item-root').prepend(`
                ${preloaders[`${app.theme}PreloaderContent`]}
                `);\n }\n },\n close(itemEl) {\n const app = this;\n const $itemEl = $(itemEl).eq(0);\n if (!$itemEl.length) return;\n $itemEl.removeClass('treeview-item-opened');\n $itemEl.trigger('treeview:close');\n app.emit('treeviewClose', $itemEl[0]);\n },\n toggle(itemEl) {\n const app = this;\n const $itemEl = $(itemEl).eq(0);\n if (!$itemEl.length) return;\n const wasOpened = $itemEl.hasClass('treeview-item-opened');\n app.treeview[wasOpened ? 'close' : 'open']($itemEl);\n }\n};\nexport default {\n name: 'treeview',\n create() {\n const app = this;\n bindMethods(app, {\n treeview: Treeview\n });\n },\n clicks: {\n '.treeview-toggle': function toggle($clickedEl, clickedData, e) {\n const app = this;\n if ($clickedEl.parents('.treeview-item-toggle').length) return;\n const $treeviewItemEl = $clickedEl.parents('.treeview-item').eq(0);\n if (!$treeviewItemEl.length) return;\n e.preventF7Router = true;\n app.treeview.toggle($treeviewItemEl[0]);\n },\n '.treeview-item-toggle': function toggle($clickedEl, clickedData, e) {\n const app = this;\n const $treeviewItemEl = $clickedEl.closest('.treeview-item').eq(0);\n if (!$treeviewItemEl.length) return;\n e.preventF7Router = true;\n app.treeview.toggle($treeviewItemEl[0]);\n }\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\nconst textEditorButtonsMap = {\n // f7-icon, material-icon, command\n bold: ['bold', 'format_bold', 'bold'],\n italic: ['italic', 'format_italic', 'italic'],\n underline: ['underline', 'format_underlined', 'underline'],\n strikeThrough: ['strikethrough', 'strikethrough_s', 'strikeThrough'],\n orderedList: ['list_number', 'format_list_numbered', 'insertOrderedList'],\n unorderedList: ['list_bullet', 'format_list_bulleted', 'insertUnorderedList'],\n link: ['link', 'link', 'createLink'],\n image: ['photo', 'image', 'insertImage'],\n paragraph: ['paragraph', '', 'formatBlock.P'],\n h1: ['H1', 'H1', 'formatBlock.H1'],\n h2: ['H2', 'H2', 'formatBlock.H2'],\n h3: ['H3', 'H3', 'formatBlock.H3'],\n alignLeft: ['text_alignleft', 'format_align_left', 'justifyLeft'],\n alignCenter: ['text_aligncenter', 'format_align_center', 'justifyCenter'],\n alignRight: ['text_alignright', 'format_align_right', 'justifyRight'],\n alignJustify: ['text_justify', 'format_align_justify', 'justifyFull'],\n subscript: ['textformat_subscript', 'A1', 'subscript'],\n superscript: ['textformat_superscript', 'A1', 'superscript'],\n indent: ['increase_indent', 'format_indent_increase', 'indent'],\n outdent: ['decrease_indent', 'format_indent_decrease', 'outdent']\n};\nclass TextEditor extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n const self = this;\n const document = getDocument();\n const device = getDevice();\n const defaults = extend({}, app.params.textEditor);\n\n // Extend defaults with modules params\n self.useModulesParams(defaults);\n self.params = extend(defaults, params);\n const el = self.params.el;\n if (!el) return self;\n const $el = $(el);\n if ($el.length === 0) return self;\n if ($el[0].f7TextEditor) return $el[0].f7TextEditor;\n let $contentEl = $el.children('.text-editor-content');\n if (!$contentEl.length) {\n $el.append('
                ');\n $contentEl = $el.children('.text-editor-content');\n }\n extend(self, {\n app,\n $el,\n el: $el[0],\n $contentEl,\n contentEl: $contentEl[0]\n });\n if ('value' in params) {\n self.value = self.params.value;\n }\n if (self.params.mode === 'keyboard-toolbar') {\n if (!(device.cordova || device.capacitor) && !device.android) {\n self.params.mode = 'popover';\n }\n }\n if (typeof self.params.buttons === 'string') {\n try {\n self.params.buttons = JSON.parse(self.params.buttons);\n } catch (err) {\n throw new Error('Framework7: TextEditor: wrong \"buttons\" parameter format');\n }\n }\n $el[0].f7TextEditor = self;\n\n // Bind\n self.onButtonClick = self.onButtonClick.bind(self);\n self.onFocus = self.onFocus.bind(self);\n self.onBlur = self.onBlur.bind(self);\n self.onInput = self.onInput.bind(self);\n self.onPaste = self.onPaste.bind(self);\n self.onSelectionChange = self.onSelectionChange.bind(self);\n self.closeKeyboardToolbar = self.closeKeyboardToolbar.bind(self);\n\n // Handle Events\n self.attachEvents = function attachEvents() {\n if (self.params.mode === 'toolbar') {\n self.$el.find('.text-editor-toolbar').on('click', 'button', self.onButtonClick);\n }\n if (self.params.mode === 'keyboard-toolbar') {\n self.$keyboardToolbarEl.on('click', 'button', self.onButtonClick);\n self.$el.parents('.page').on('page:beforeout', self.closeKeyboardToolbar);\n }\n if (self.params.mode === 'popover' && self.popover) {\n self.popover.$el.on('click', 'button', self.onButtonClick);\n }\n self.$contentEl.on('paste', self.onPaste);\n self.$contentEl.on('focus', self.onFocus);\n self.$contentEl.on('blur', self.onBlur);\n self.$contentEl.on('input', self.onInput, true);\n $(document).on('selectionchange', self.onSelectionChange);\n };\n self.detachEvents = function detachEvents() {\n if (self.params.mode === 'toolbar') {\n self.$el.find('.text-editor-toolbar').off('click', 'button', self.onButtonClick);\n }\n if (self.params.mode === 'keyboard-toolbar') {\n self.$keyboardToolbarEl.off('click', 'button', self.onButtonClick);\n self.$el.parents('.page').off('page:beforeout', self.closeKeyboardToolbar);\n }\n if (self.params.mode === 'popover' && self.popover) {\n self.popover.$el.off('click', 'button', self.onButtonClick);\n }\n self.$contentEl.off('paste', self.onPaste);\n self.$contentEl.off('focus', self.onFocus);\n self.$contentEl.off('blur', self.onBlur);\n self.$contentEl.off('input', self.onInput, true);\n $(document).off('selectionchange', self.onSelectionChange);\n };\n\n // Install Modules\n self.useModules();\n\n // Init\n self.init();\n return self;\n }\n setValue(newValue) {\n const self = this;\n const currentValue = self.value;\n if (currentValue === newValue) return self;\n self.value = newValue;\n self.$contentEl.html(newValue);\n self.$el.trigger('texteditor:change', self.value);\n self.emit('local::change textEditorChange', self, self.value);\n return self;\n }\n getValue() {\n const self = this;\n return self.value;\n }\n clearValue() {\n const self = this;\n self.setValue('');\n if (self.params.placeholder && !self.$contentEl.html()) {\n self.insertPlaceholder();\n }\n return self;\n }\n createLink() {\n const self = this;\n const window = getWindow();\n const document = getDocument();\n const currentSelection = window.getSelection();\n const selectedNodes = [];\n let $selectedLinks;\n if (currentSelection && currentSelection.anchorNode && $(currentSelection.anchorNode).parents(self.$el).length) {\n let anchorNode = currentSelection.anchorNode;\n while (anchorNode) {\n selectedNodes.push(anchorNode);\n if (!anchorNode.nextSibling || anchorNode === currentSelection.focusNode) {\n anchorNode = null;\n }\n if (anchorNode) {\n anchorNode = anchorNode.nextSibling;\n }\n }\n const selectedNodesLinks = [];\n const $selectedNodes = $(selectedNodes);\n for (let i = 0; i < $selectedNodes.length; i += 1) {\n const childNodes = $selectedNodes[i].children;\n if (childNodes) {\n for (let j = 0; j < childNodes.length; j += 1) {\n if ($(childNodes[j]).is('a')) {\n selectedNodesLinks.push(childNodes[j]);\n }\n }\n }\n }\n $selectedLinks = $selectedNodes.closest('a').add($(selectedNodesLinks));\n }\n if ($selectedLinks && $selectedLinks.length) {\n $selectedLinks.each(linkNode => {\n const selection = window.getSelection();\n const range = document.createRange();\n range.selectNodeContents(linkNode);\n selection.removeAllRanges();\n selection.addRange(range);\n document.execCommand('unlink', false);\n selection.removeAllRanges();\n });\n return self;\n }\n const currentRange = self.getSelectionRange();\n if (!currentRange) return self;\n const dialog = self.app.dialog.prompt('', self.params.linkUrlText, link => {\n if (link && link.trim().length) {\n self.setSelectionRange(currentRange);\n document.execCommand('createLink', false, link.trim());\n self.$el.trigger('texteditor:insertlink', {\n url: link.trim()\n });\n self.emit('local:insertLink textEditorInsertLink', self, link.trim());\n }\n });\n dialog.$el.find('input').focus();\n return self;\n }\n insertImage() {\n const self = this;\n const document = getDocument();\n const currentRange = self.getSelectionRange();\n if (!currentRange) return self;\n const dialog = self.app.dialog.prompt('', self.params.imageUrlText, imageUrl => {\n if (imageUrl && imageUrl.trim().length) {\n self.setSelectionRange(currentRange);\n document.execCommand('insertImage', false, imageUrl.trim());\n self.$el.trigger('texteditor:insertimage', {\n url: imageUrl.trim()\n });\n self.emit('local:insertImage textEditorInsertImage', self, imageUrl.trim());\n }\n });\n dialog.$el.find('input').focus();\n return self;\n }\n removePlaceholder() {\n const self = this;\n self.$contentEl.find('.text-editor-placeholder').remove();\n }\n insertPlaceholder() {\n const self = this;\n self.$contentEl.append(`
                ${self.params.placeholder}
                `);\n }\n onSelectionChange() {\n const self = this;\n const window = getWindow();\n const document = getDocument();\n if (self.params.mode === 'toolbar') return;\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n if (self.params.mode === 'keyboard-toolbar') {\n if (!selectionIsInContent) {\n self.closeKeyboardToolbar();\n } else {\n self.openKeyboardToolbar();\n }\n return;\n }\n if (self.params.mode === 'popover') {\n const selectionIsInPopover = $(selection.anchorNode).parents(self.popover.el).length || selection.anchorNode === self.popover.el;\n if (!selectionIsInContent && !selectionIsInPopover) {\n self.closePopover();\n return;\n }\n if (!selection.isCollapsed && selection.rangeCount) {\n const range = selection.getRangeAt(0);\n const rect = range.getBoundingClientRect();\n const rootEl = self.app.$el[0] || document.body;\n self.openPopover(rect.x + (window.scrollX || 0) - rootEl.offsetLeft, rect.y + (window.scrollY || 0) - rootEl.offsetTop, rect.width, rect.height);\n } else if (selection.isCollapsed) {\n self.closePopover();\n }\n }\n }\n onPaste(e) {\n const self = this;\n const document = getDocument();\n if (self.params.clearFormattingOnPaste && e.clipboardData && e.clipboardData.getData) {\n const text = e.clipboardData.getData('text/plain');\n e.preventDefault();\n document.execCommand('insertText', false, text);\n }\n }\n onInput() {\n const self = this;\n const value = self.$contentEl.html();\n self.value = value;\n self.$el.trigger('texteditor:input');\n self.emit('local:input textEditorInput', self, self.value);\n self.$el.trigger('texteditor:change', self.value);\n self.emit('local::change textEditorChange', self, self.value);\n }\n onFocus() {\n const self = this;\n self.removePlaceholder();\n self.$contentEl.focus();\n self.$el.trigger('texteditor:focus');\n self.emit('local::focus textEditorFocus', self);\n }\n onBlur() {\n const self = this;\n const window = getWindow();\n const document = getDocument();\n if (self.params.placeholder && self.$contentEl.html() === '') {\n self.insertPlaceholder();\n }\n if (self.params.mode === 'popover') {\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n const inPopover = document.activeElement && self.popover && $(document.activeElement).closest(self.popover.$el).length;\n if (!inPopover && !selectionIsInContent) {\n self.closePopover();\n }\n }\n if (self.params.mode === 'keyboard-toolbar') {\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n if (!selectionIsInContent) {\n self.closeKeyboardToolbar();\n }\n }\n self.$el.trigger('texteditor:blur');\n self.emit('local::blur textEditorBlur', self);\n }\n onButtonClick(e) {\n const self = this;\n const window = getWindow();\n const document = getDocument();\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n if (!selectionIsInContent) return;\n const $buttonEl = $(e.target).closest('button');\n if ($buttonEl.parents('form').length) {\n e.preventDefault();\n }\n const button = $buttonEl.attr('data-button');\n const buttonData = self.params.customButtons && self.params.customButtons[button];\n if (!button || !(textEditorButtonsMap[button] || buttonData)) return;\n $buttonEl.trigger('texteditor:buttonclick', button);\n self.emit('local::buttonClick textEditorButtonClick', self, button);\n if (buttonData) {\n if (buttonData.onClick) buttonData.onClick(self, $buttonEl[0]);\n return;\n }\n const command = textEditorButtonsMap[button][2];\n if (command === 'createLink') {\n self.createLink();\n return;\n }\n if (command === 'insertImage') {\n self.insertImage();\n return;\n }\n if (command.indexOf('formatBlock') === 0) {\n const tagName = command.split('.')[1];\n const $anchorNode = $(selection.anchorNode);\n if ($anchorNode.parents(tagName.toLowerCase()).length || $anchorNode.is(tagName)) {\n document.execCommand('formatBlock', false, 'div');\n } else {\n document.execCommand('formatBlock', false, tagName);\n }\n return;\n }\n document.execCommand(command, false);\n }\n\n // eslint-disable-next-line\n getSelectionRange() {\n const window = getWindow();\n const document = getDocument();\n if (window.getSelection) {\n const sel = window.getSelection();\n if (sel.getRangeAt && sel.rangeCount) {\n return sel.getRangeAt(0);\n }\n } else if (document.selection && document.selection.createRange) {\n return document.selection.createRange();\n }\n return null;\n }\n\n // eslint-disable-next-line\n setSelectionRange(range) {\n const window = getWindow();\n const document = getDocument();\n if (range) {\n if (window.getSelection) {\n const sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (document.selection && range.select) {\n range.select();\n }\n }\n }\n renderButtons() {\n const self = this;\n let html = '';\n function renderButton(button) {\n const iconClass = self.app.theme === 'md' ? 'material-icons' : 'f7-icons';\n if (self.params.customButtons && self.params.customButtons[button]) {\n const buttonData = self.params.customButtons[button];\n return ``;\n }\n if (!textEditorButtonsMap[button]) return '';\n const iconContent = textEditorButtonsMap[button][self.app.theme === 'md' ? 1 : 0];\n return ``.trim();\n }\n self.params.buttons.forEach((button, buttonIndex) => {\n if (Array.isArray(button)) {\n button.forEach(b => {\n html += renderButton(b);\n });\n if (buttonIndex < self.params.buttons.length - 1 && self.params.dividers) {\n html += '
                ';\n }\n } else {\n html += renderButton(button);\n }\n });\n return html;\n }\n createToolbar() {\n const self = this;\n self.$el.prepend(`
                ${self.renderButtons()}
                `);\n }\n createKeyboardToolbar() {\n const self = this;\n self.$keyboardToolbarEl = $(`
                ${self.renderButtons()}
                `);\n }\n createPopover() {\n const self = this;\n self.popover = self.app.popover.create({\n content: `\n
                \n
                ${self.renderButtons()}
                \n
                \n `,\n closeByOutsideClick: false,\n backdrop: false\n });\n }\n openKeyboardToolbar() {\n const self = this;\n if (self.$keyboardToolbarEl.parent(self.app.$el).length) return;\n self.$el.trigger('texteditor:keyboardopen');\n self.emit('local::keyboardOpen textEditorKeyboardOpen', self);\n self.app.$el.append(self.$keyboardToolbarEl);\n }\n closeKeyboardToolbar() {\n const self = this;\n self.$keyboardToolbarEl.remove();\n self.$el.trigger('texteditor:keyboardclose');\n self.emit('local::keyboardClose textEditorKeyboardClose', self);\n }\n openPopover(targetX, targetY, targetWidth, targetHeight) {\n const self = this;\n if (!self.popover) return;\n Object.assign(self.popover.params, {\n targetX,\n targetY,\n targetWidth,\n targetHeight\n });\n clearTimeout(self.popoverTimeout);\n self.popoverTimeout = setTimeout(() => {\n if (!self.popover) return;\n if (self.popover.opened) {\n self.popover.resize();\n } else {\n self.$el.trigger('texteditor:popoveropen');\n self.emit('local::popoverOpen textEditorPopoverOpen', self);\n self.popover.open();\n }\n }, 400);\n }\n closePopover() {\n const self = this;\n clearTimeout(self.popoverTimeout);\n if (!self.popover || !self.popover.opened) return;\n self.popoverTimeout = setTimeout(() => {\n if (!self.popover) return;\n self.$el.trigger('texteditor:popoverclose');\n self.emit('local::popoverClose textEditorPopoverClose', self);\n self.popover.close();\n }, 400);\n }\n init() {\n const self = this;\n if (self.value) {\n self.$contentEl.html(self.value);\n } else {\n self.value = self.$contentEl.html();\n }\n if (self.params.placeholder && self.value === '') {\n self.insertPlaceholder();\n }\n if (self.params.mode === 'toolbar') {\n self.createToolbar();\n } else if (self.params.mode === 'popover') {\n self.createPopover();\n } else if (self.params.mode === 'keyboard-toolbar') {\n self.createKeyboardToolbar();\n }\n self.attachEvents();\n self.$el.trigger('texteditor:init');\n self.emit('local::init textEditorInit', self);\n return self;\n }\n destroy() {\n let self = this;\n self.$el.trigger('texteditor:beforedestroy');\n self.emit('local::beforeDestroy textEditorBeforeDestroy', self);\n self.detachEvents();\n if (self.params.mode === 'keyboard-toolbar' && self.$keyboardToolbarEl) {\n self.$keyboardToolbarEl.remove();\n }\n if (self.popover) {\n self.popover.close(false);\n self.popover.destroy();\n }\n delete self.$el[0].f7TextEditor;\n deleteProps(self);\n self = null;\n }\n}\nexport default TextEditor;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport TextEditor from './text-editor-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'textEditor',\n params: {\n textEditor: {\n el: null,\n mode: 'toolbar',\n // or 'popover'\n value: undefined,\n // will use html content\n customButtons: null,\n buttons: [['bold', 'italic', 'underline', 'strikeThrough'], ['orderedList', 'unorderedList'], ['link', 'image'], ['paragraph', 'h1', 'h2', 'h3'], ['alignLeft', 'alignCenter', 'alignRight', 'alignJustify'], ['subscript', 'superscript'], ['indent', 'outdent']],\n dividers: true,\n imageUrlText: 'Insert image URL',\n linkUrlText: 'Insert link URL',\n placeholder: null,\n clearFormattingOnPaste: true\n }\n },\n create() {\n const app = this;\n app.textEditor = extend(ConstructorMethods({\n defaultSelector: '.text-editor',\n constructor: TextEditor,\n app,\n domProp: 'f7TextEditor'\n }));\n },\n static: {\n TextEditor\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.text-editor-init').each(editorEl => {\n const dataset = $(editorEl).dataset();\n app.textEditor.create(extend({\n el: editorEl\n }, dataset || {}));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.text-editor-init').each(editorEl => {\n if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.text-editor-init').each(editorEl => {\n const dataset = $(editorEl).dataset();\n app.textEditor.create(extend({\n el: editorEl\n }, dataset || {}));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.text-editor-init').each(editorEl => {\n if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n });\n }\n },\n vnode: {\n 'text-editor-init': {\n insert(vnode) {\n const app = this;\n const editorEl = vnode.elm;\n const dataset = $(editorEl).dataset();\n app.textEditor.create(extend({\n el: editorEl\n }, dataset || {}));\n },\n destroy(vnode) {\n const editorEl = vnode.elm;\n if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n }\n }\n }\n};","import { bindMethods } from '../../shared/utils.js';\nconst Breadcrumbs = {};\nexport default {\n name: 'breadrumbs',\n create() {\n const app = this;\n bindMethods(app, {\n breadrumbs: Breadcrumbs\n });\n }\n};","/**\n * Framework7 8.3.2\n * Full featured mobile HTML framework for building iOS & Android apps\n * https://framework7.io/\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 27, 2024\n */\n\nimport $ from './shared/dom7.js';\nimport Framework7 from './components/app/app-class.js';\nimport * as utils from './shared/utils.js';\nimport { getSupport } from './shared/get-support.js';\nimport { getDevice } from './shared/get-device.js';\nimport DeviceModule from './modules/device/device.js';\nimport SupportModule from './modules/support/support.js';\nimport UtilsModule from './modules/utils/utils.js';\nimport ResizeModule from './modules/resize/resize.js';\nimport TouchModule from './modules/touch/touch.js';\nimport ClicksModule from './modules/clicks/clicks.js';\nimport RouterModule from './modules/router/router.js';\nimport HistoryModule from './modules/history/history.js';\nimport ServiceWorkerModule from './modules/service-worker/service-worker.js';\nimport StoreModule, { createStore } from './modules/store/store.js';\nimport Statusbar from './components/statusbar/statusbar.js';\nimport View from './components/view/view.js';\nimport Navbar from './components/navbar/navbar.js';\nimport Toolbar from './components/toolbar/toolbar.js';\nimport Subnavbar from './components/subnavbar/subnavbar.js';\nimport TouchRipple from './components/touch-ripple/touch-ripple.js';\nimport Modal from './components/modal/modal.js';\nimport Dialog from './components/dialog/dialog.js';\nimport Popup from './components/popup/popup.js';\nimport LoginScreen from './components/login-screen/login-screen.js';\nimport Popover from './components/popover/popover.js';\nimport Actions from './components/actions/actions.js';\nimport Sheet from './components/sheet/sheet.js';\nimport Toast from './components/toast/toast.js';\nimport Preloader from './components/preloader/preloader.js';\nimport Progressbar from './components/progressbar/progressbar.js';\nimport Sortable from './components/sortable/sortable.js';\nimport Swipeout from './components/swipeout/swipeout.js';\nimport Accordion from './components/accordion/accordion.js';\nimport ContactsList from './components/contacts-list/contacts-list.js';\nimport VirtualList from './components/virtual-list/virtual-list.js';\nimport ListIndex from './components/list-index/list-index.js';\nimport Timeline from './components/timeline/timeline.js';\nimport Tabs from './components/tabs/tabs.js';\nimport Panel from './components/panel/panel.js';\nimport Card from './components/card/card.js';\nimport Chip from './components/chip/chip.js';\nimport Form from './components/form/form.js';\nimport Input from './components/input/input.js';\nimport Checkbox from './components/checkbox/checkbox.js';\nimport Radio from './components/radio/radio.js';\nimport Toggle from './components/toggle/toggle.js';\nimport Range from './components/range/range.js';\nimport Stepper from './components/stepper/stepper.js';\nimport SmartSelect from './components/smart-select/smart-select.js';\nimport Grid from './components/grid/grid.js';\nimport Calendar from './components/calendar/calendar.js';\nimport Picker from './components/picker/picker.js';\nimport InfiniteScroll from './components/infinite-scroll/infinite-scroll.js';\nimport PullToRefresh from './components/pull-to-refresh/pull-to-refresh.js';\nimport DataTable from './components/data-table/data-table.js';\nimport Fab from './components/fab/fab.js';\nimport Searchbar from './components/searchbar/searchbar.js';\nimport Messages from './components/messages/messages.js';\nimport Messagebar from './components/messagebar/messagebar.js';\nimport Swiper from './components/swiper/swiper.js';\nimport PhotoBrowser from './components/photo-browser/photo-browser.js';\nimport Notification from './components/notification/notification.js';\nimport Autocomplete from './components/autocomplete/autocomplete.js';\nimport Tooltip from './components/tooltip/tooltip.js';\nimport Skeleton from './components/skeleton/skeleton.js';\nimport ColorPicker from './components/color-picker/color-picker.js';\nimport Treeview from './components/treeview/treeview.js';\nimport TextEditor from './components/text-editor/text-editor.js';\nimport Breadcrumbs from './components/breadcrumbs/breadcrumbs.js';\nimport Typography from './components/typography/typography.js';\nFramework7.use([DeviceModule, SupportModule, UtilsModule, ResizeModule, TouchModule, ClicksModule, RouterModule, HistoryModule, ServiceWorkerModule, StoreModule, Statusbar, View, Navbar, Toolbar, Subnavbar, TouchRipple, Modal, Dialog, Popup, LoginScreen, Popover, Actions, Sheet, Toast, Preloader, Progressbar, Sortable, Swipeout, Accordion, ContactsList, VirtualList, ListIndex, Timeline, Tabs, Panel, Card, Chip, Form, Input, Checkbox, Radio, Toggle, Range, Stepper, SmartSelect, Grid, Calendar, Picker, InfiniteScroll, PullToRefresh, DataTable, Fab, Searchbar, Messages, Messagebar, Swiper, PhotoBrowser, Notification, Autocomplete, Tooltip, Skeleton, ColorPicker, Treeview, TextEditor, Breadcrumbs, Typography]);\nexport { $ as Dom7, utils, getDevice, getSupport, createStore };\nexport default Framework7;\n","export default {\n name: 'contactsList'\n};","export default {\n name: 'timeline'\n};","export default {\n name: 'chip'\n};","export default {\n name: 'checkbox'\n};","export default {\n name: 'radio'\n};","export default {\n name: 'grid'\n};","export default {\n name: 'skeleton'\n};","export default {\n name: 'typography'\n};","/**\n * Framework7 8.3.2\n * Full featured mobile HTML framework for building iOS & Android apps\n * https://framework7.io/\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 27, 2024\n */\n\nimport $ from './shared/dom7.js';\nimport Framework7 from './components/app/app-class.js';\nimport * as utils from './shared/utils.js';\nimport { getSupport } from './shared/get-support.js';\nimport { getDevice } from './shared/get-device.js';\nimport DeviceModule from './modules/device/device.js';\nimport SupportModule from './modules/support/support.js';\nimport UtilsModule from './modules/utils/utils.js';\nimport ResizeModule from './modules/resize/resize.js';\nimport TouchModule from './modules/touch/touch.js';\nimport ClicksModule from './modules/clicks/clicks.js';\nimport RouterModule from './modules/router/router.js';\nimport HistoryModule from './modules/history/history.js';\nimport ServiceWorkerModule from './modules/service-worker/service-worker.js';\nimport StoreModule, { createStore } from './modules/store/store.js';\nimport Statusbar from './components/statusbar/statusbar.js';\nimport View from './components/view/view.js';\nimport Navbar from './components/navbar/navbar.js';\nimport Toolbar from './components/toolbar/toolbar.js';\nimport Subnavbar from './components/subnavbar/subnavbar.js';\nimport TouchRipple from './components/touch-ripple/touch-ripple.js';\nimport Modal from './components/modal/modal.js';\nFramework7.use([DeviceModule, SupportModule, UtilsModule, ResizeModule, TouchModule, ClicksModule, RouterModule, HistoryModule, ServiceWorkerModule, StoreModule, Statusbar, View, Navbar, Toolbar, Subnavbar, TouchRipple, Modal]);\nexport { $ as Dom7, utils, getDevice, getSupport, createStore };\nexport default Framework7;\n","export function noUndefinedProps(obj) {\n const o = {};\n Object.keys(obj).forEach(key => {\n if (typeof obj[key] !== 'undefined') o[key] = obj[key];\n });\n return o;\n}\nexport function isStringProp(val) {\n return typeof val === 'string' && val !== '';\n}\nexport function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n}\nexport function now() {\n return Date.now();\n}\nexport function extend() {\n let deep = true;\n let to;\n let from;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[0] === 'boolean') {\n [deep, to] = args;\n args.splice(0, 2);\n from = args;\n } else {\n [to] = args;\n args.splice(0, 1);\n from = args;\n }\n for (let i = 0; i < from.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (!deep) {\n to[nextKey] = nextSource[nextKey];\n } else if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n extend(to[nextKey], nextSource[nextKey]);\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nexport function flattenArray() {\n const arr = [];\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n args.forEach(arg => {\n if (Array.isArray(arg)) arr.push(...flattenArray(...arg));else arr.push(arg);\n });\n return arr;\n}\nexport function classNames() {\n const classes = [];\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n args.forEach(arg => {\n if (typeof arg === 'object' && arg.constructor === Object) {\n Object.keys(arg).forEach(key => {\n if (arg[key]) classes.push(key);\n });\n } else if (arg) classes.push(arg);\n });\n const uniqueClasses = [];\n classes.forEach(c => {\n if (uniqueClasses.indexOf(c) < 0) uniqueClasses.push(c);\n });\n return uniqueClasses.join(' ');\n}\nexport function getSlots(props) {\n if (props === void 0) {\n props = {};\n }\n const slots = {};\n if (!props) return slots;\n const children = props.children;\n if (!children || children.length === 0) {\n return slots;\n }\n function addChildToSlot(name, child) {\n if (!slots[name]) slots[name] = [];\n slots[name].push(child);\n }\n if (Array.isArray(children)) {\n children.forEach(child => {\n if (!child) return;\n const slotName = child.props && child.props.slot || 'default';\n addChildToSlot(slotName, child);\n });\n } else {\n let slotName = 'default';\n if (children.props && children.props.slot) slotName = children.props.slot;\n addChildToSlot(slotName, children);\n }\n return slots;\n}\nexport function emit(props, events) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {\n args[_key4 - 2] = arguments[_key4];\n }\n if (!events || !events.trim().length || typeof events !== 'string') return;\n events.trim().split(' ').forEach(event => {\n let eventName = (event || '').trim();\n if (!eventName) return;\n eventName = eventName.charAt(0).toUpperCase() + eventName.slice(1);\n const propName = `on${eventName}`;\n if (props[propName]) props[propName](...args);\n });\n}\nexport function getExtraAttrs(props) {\n if (props === void 0) {\n props = {};\n }\n const extraAttrs = {};\n Object.keys(props).forEach(key => {\n if (key.indexOf('data-') === 0 || key.indexOf('aria-') === 0 || key === 'role') {\n extraAttrs[key] = props[key];\n }\n });\n return extraAttrs;\n}\nlet routerIdCounter = 0;\nlet routerComponentIdCounter = 0;\nexport function unsetRouterIds() {\n routerIdCounter = 0;\n routerComponentIdCounter = 0;\n}\nexport function getRouterId() {\n routerIdCounter += 1;\n return `${now()}_${routerIdCounter}`;\n}\nexport function getComponentId() {\n routerComponentIdCounter += 1;\n return `${now()}_${routerComponentIdCounter}`;\n}","/* eslint-disable import/no-mutable-exports */\nimport Framework7 from 'framework7/lite';\nimport { extend, unsetRouterIds } from './utils.js';\nlet f7;\nlet f7events;\nconst theme = {};\nconst f7routers = {\n views: [],\n tabs: [],\n modals: null\n};\nconst setTheme = () => {\n if (!f7) return;\n theme.ios = f7.theme === 'ios';\n theme.md = f7.theme === 'md';\n};\nconst cleanup = () => {\n unsetRouterIds();\n delete theme.ios;\n delete theme.md;\n f7routers.views = [];\n f7routers.tabs = [];\n f7routers.modals = null;\n};\nconst f7initEvents = () => {\n f7events = new Framework7.Events();\n};\nconst f7init = function (rootEl, params, init) {\n if (params === void 0) {\n params = {};\n }\n if (init === void 0) {\n init = true;\n }\n const f7Params = extend({}, params, {\n el: rootEl,\n init\n });\n if (typeof params.store !== 'undefined') f7Params.store = params.store;\n if (!f7Params.routes) f7Params.routes = [];\n if (f7Params.userAgent && (f7Params.theme === 'auto' || !f7Params.theme)) {\n const device = Framework7.getDevice({\n userAgent: f7Params.userAgent\n }, true);\n theme.ios = !!device.ios;\n theme.md = !theme.ios;\n }\n // eslint-disable-next-line\n if (f7 && typeof window !== 'undefined') return;\n // eslint-disable-next-line\n if (typeof window === 'undefined') cleanup();\n const instance = new Framework7(f7Params);\n f7 = instance;\n setTheme();\n if (instance.initialized) {\n f7 = instance;\n f7events.emit('ready', f7);\n } else {\n instance.on('init', () => {\n f7 = instance;\n f7events.emit('ready', f7);\n });\n }\n};\nconst f7ready = callback => {\n if (!callback) return;\n if (f7 && f7.initialized) callback(f7);else {\n f7events.once('ready', callback);\n }\n};\nexport { f7, theme, f7ready, f7events, f7init, f7routers, f7initEvents, setTheme };","import { isStringProp } from './utils.js';\nexport function colorClasses(props) {\n const {\n color,\n textColor,\n bgColor,\n borderColor,\n rippleColor,\n dark\n } = props;\n return {\n dark,\n [`color-${color}`]: color,\n [`text-color-${textColor}`]: textColor,\n [`bg-color-${bgColor}`]: bgColor,\n [`border-color-${borderColor}`]: borderColor,\n [`ripple-color-${rippleColor}`]: rippleColor\n };\n}\nexport function routerAttrs(props) {\n const {\n force,\n reloadCurrent,\n reloadPrevious,\n reloadAll,\n reloadDetail,\n animate,\n ignoreCache,\n routeTabId,\n view,\n transition,\n openIn\n } = props;\n let dataAnimate;\n if ('animate' in props && typeof animate !== 'undefined') {\n dataAnimate = animate.toString();\n }\n let dataReloadDetail;\n if ('reloadDetail' in props && typeof reloadDetail !== 'undefined') {\n dataReloadDetail = reloadDetail.toString();\n }\n return {\n 'data-force': force || undefined,\n 'data-reload-current': reloadCurrent || undefined,\n 'data-reload-all': reloadAll || undefined,\n 'data-reload-previous': reloadPrevious || undefined,\n 'data-reload-detail': dataReloadDetail,\n 'data-animate': dataAnimate,\n 'data-ignore-cache': ignoreCache || undefined,\n 'data-route-tab-id': routeTabId || undefined,\n 'data-view': isStringProp(view) ? view : undefined,\n 'data-transition': isStringProp(transition) ? transition : undefined,\n 'data-open-in': isStringProp(openIn) ? openIn : undefined\n };\n}\nexport function routerClasses(props) {\n const {\n back,\n linkBack,\n external,\n preventRouter\n } = props;\n return {\n back: back || linkBack,\n external,\n 'prevent-router': preventRouter\n };\n}\nexport function actionsAttrs(props) {\n const {\n searchbarEnable,\n searchbarDisable,\n searchbarClear,\n searchbarToggle,\n panelOpen,\n panelClose,\n panelToggle,\n popupOpen,\n popupClose,\n actionsOpen,\n actionsClose,\n popoverOpen,\n popoverClose,\n loginScreenOpen,\n loginScreenClose,\n sheetOpen,\n sheetClose,\n sortableEnable,\n sortableDisable,\n sortableToggle,\n cardOpen,\n cardClose\n } = props;\n return {\n 'data-searchbar': isStringProp(searchbarEnable) && searchbarEnable || isStringProp(searchbarDisable) && searchbarDisable || isStringProp(searchbarClear) && searchbarClear || isStringProp(searchbarToggle) && searchbarToggle || undefined,\n 'data-panel': isStringProp(panelOpen) && panelOpen || isStringProp(panelClose) && panelClose || isStringProp(panelToggle) && panelToggle || undefined,\n 'data-popup': isStringProp(popupOpen) && popupOpen || isStringProp(popupClose) && popupClose || undefined,\n 'data-actions': isStringProp(actionsOpen) && actionsOpen || isStringProp(actionsClose) && actionsClose || undefined,\n 'data-popover': isStringProp(popoverOpen) && popoverOpen || isStringProp(popoverClose) && popoverClose || undefined,\n 'data-sheet': isStringProp(sheetOpen) && sheetOpen || isStringProp(sheetClose) && sheetClose || undefined,\n 'data-login-screen': isStringProp(loginScreenOpen) && loginScreenOpen || isStringProp(loginScreenClose) && loginScreenClose || undefined,\n 'data-sortable': isStringProp(sortableEnable) && sortableEnable || isStringProp(sortableDisable) && sortableDisable || isStringProp(sortableToggle) && sortableToggle || undefined,\n 'data-card': isStringProp(cardOpen) && cardOpen || isStringProp(cardClose) && cardClose || undefined\n };\n}\nexport function actionsClasses(props) {\n const {\n searchbarEnable,\n searchbarDisable,\n searchbarClear,\n searchbarToggle,\n panelOpen,\n panelClose,\n panelToggle,\n popupOpen,\n popupClose,\n actionsClose,\n actionsOpen,\n popoverOpen,\n popoverClose,\n loginScreenOpen,\n loginScreenClose,\n sheetOpen,\n sheetClose,\n sortableEnable,\n sortableDisable,\n sortableToggle,\n cardOpen,\n cardPreventOpen,\n cardClose\n } = props;\n return {\n 'searchbar-enable': searchbarEnable || searchbarEnable === '',\n 'searchbar-disable': searchbarDisable || searchbarDisable === '',\n 'searchbar-clear': searchbarClear || searchbarClear === '',\n 'searchbar-toggle': searchbarToggle || searchbarToggle === '',\n 'panel-close': panelClose || panelClose === '',\n 'panel-open': panelOpen || panelOpen === '',\n 'panel-toggle': panelToggle || panelToggle === '',\n 'popup-close': popupClose || popupClose === '',\n 'popup-open': popupOpen || popupOpen === '',\n 'actions-close': actionsClose || actionsClose === '',\n 'actions-open': actionsOpen || actionsOpen === '',\n 'popover-close': popoverClose || popoverClose === '',\n 'popover-open': popoverOpen || popoverOpen === '',\n 'sheet-close': sheetClose || sheetClose === '',\n 'sheet-open': sheetOpen || sheetOpen === '',\n 'login-screen-close': loginScreenClose || loginScreenClose === '',\n 'login-screen-open': loginScreenOpen || loginScreenOpen === '',\n 'sortable-enable': sortableEnable || sortableEnable === '',\n 'sortable-disable': sortableDisable || sortableDisable === '',\n 'sortable-toggle': sortableToggle || sortableToggle === '',\n 'card-close': cardClose || cardClose === '',\n 'card-open': cardOpen || cardOpen === '',\n 'card-prevent-open': cardPreventOpen || cardPreventOpen === ''\n };\n}","export const modalStateClasses = function (_temp) {\n let {\n isOpened,\n isClosing\n } = _temp === void 0 ? {} : _temp;\n return {\n 'modal-in': isOpened.current && !isClosing.current,\n 'modal-out': isClosing.current\n };\n};","import { useEffect, useLayoutEffect } from 'react';\nfunction useIsomorphicLayoutEffect(callback, deps) {\n // eslint-disable-next-line\n if (typeof window === 'undefined') return useEffect(callback, deps);\n return useLayoutEffect(callback, deps);\n}\nexport { useIsomorphicLayoutEffect };","import { useRef } from 'react';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js';\nexport const watchProp = (value, callback) => {\n const valueRef = useRef(value);\n useIsomorphicLayoutEffect(() => {\n if (value !== valueRef.current && callback) {\n callback(value, valueRef.current);\n }\n valueRef.current = value;\n }, [value]);\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useImperativeHandle, useRef } from 'react';\nimport { f7, f7ready } from '../shared/f7.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { modalStateClasses } from '../shared/modal-state-classes.js';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, emit, getExtraAttrs } from '../shared/utils.js';\nimport { watchProp } from '../shared/watch-prop.js';\n\n\n\nconst Popup = /*#__PURE__*/forwardRef((props, ref) => {\n const f7Popup = useRef(null);\n const {\n className,\n id,\n style,\n children,\n tabletFullscreen,\n push,\n opened,\n closeByBackdropClick,\n backdrop,\n backdropEl,\n animate,\n closeOnEscape,\n swipeToClose = false,\n swipeHandler,\n containerEl\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const isOpened = useRef(opened);\n const isClosing = useRef(false);\n const onSwipeStart = instance => {\n emit(props, 'popupSwipeStart', instance);\n };\n const onSwipeMove = instance => {\n emit(props, 'popupSwipeMove', instance);\n };\n const onSwipeEnd = instance => {\n emit(props, 'popupSwipeEnd', instance);\n };\n const onSwipeClose = instance => {\n emit(props, 'popupSwipeClose', instance);\n };\n const onOpen = instance => {\n isOpened.current = true;\n isClosing.current = false;\n emit(props, 'popupOpen', instance);\n };\n const onOpened = instance => {\n emit(props, 'popupOpened', instance);\n };\n const onClose = instance => {\n isOpened.current = false;\n isClosing.current = true;\n emit(props, 'popupClose', instance);\n };\n const onClosed = instance => {\n isClosing.current = false;\n emit(props, 'popupClosed', instance);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7Popup: () => f7Popup.current\n }));\n watchProp(opened, value => {\n if (!f7Popup.current) return;\n if (value) {\n f7Popup.current.open();\n } else {\n f7Popup.current.close();\n }\n });\n const modalEvents = method => {\n if (!f7Popup.current) return;\n f7Popup.current[method]('swipeStart', onSwipeStart);\n f7Popup.current[method]('swipeMove', onSwipeMove);\n f7Popup.current[method]('swipeEnd', onSwipeEnd);\n f7Popup.current[method]('swipeClose', onSwipeClose);\n f7Popup.current[method]('open', onOpen);\n f7Popup.current[method]('opened', onOpened);\n f7Popup.current[method]('close', onClose);\n f7Popup.current[method]('closed', onClosed);\n };\n const onMount = () => {\n if (!elRef.current) return;\n const popupParams = {\n el: elRef.current\n };\n if ('closeByBackdropClick' in props) popupParams.closeByBackdropClick = closeByBackdropClick;\n if ('closeOnEscape' in props) popupParams.closeOnEscape = closeOnEscape;\n if ('animate' in props) popupParams.animate = animate;\n if ('backdrop' in props) popupParams.backdrop = backdrop;\n if ('backdropEl' in props) popupParams.backdropEl = backdropEl;\n if ('swipeToClose' in props) popupParams.swipeToClose = swipeToClose;\n if ('swipeHandler' in props) popupParams.swipeHandler = swipeHandler;\n if ('containerEl' in props) popupParams.containerEl = containerEl;\n f7ready(() => {\n f7Popup.current = f7.popup.create(popupParams);\n modalEvents('on');\n if (opened) {\n f7Popup.current.open(false, true);\n }\n });\n };\n const onDestroy = () => {\n if (f7Popup.current) {\n f7Popup.current.destroy();\n }\n f7Popup.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n modalEvents('on');\n return () => {\n modalEvents('off');\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n const classes = classNames(className, 'popup', {\n 'popup-tablet-fullscreen': tabletFullscreen,\n 'popup-push': push\n }, modalStateClasses({\n isOpened,\n isClosing\n }), colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children);\n});\nPopup.displayName = 'f7-popup';\nexport default Popup;","import { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js';\nimport { f7, f7ready } from './f7.js';\nimport { emit } from './utils.js';\nexport const useTab = (elRef, props) => {\n const onTabShow = el => {\n if (elRef.current !== el) return;\n emit(props, 'tabShow', el);\n };\n const onTabHide = el => {\n if (elRef.current !== el) return;\n emit(props, 'tabHide', el);\n };\n const attachEvents = () => {\n if (!elRef.current) return;\n f7ready(() => {\n f7.on('tabShow', onTabShow);\n f7.on('tabHide', onTabHide);\n });\n };\n const detachEvents = () => {\n if (!f7) return;\n f7.off('tabShow', onTabShow);\n f7.off('tabHide', onTabHide);\n };\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n return detachEvents;\n });\n};","import React, { lazy, Suspense } from 'react';\nexport const useAsyncComponent = (component, props, key) => {\n const Component = /*#__PURE__*/lazy(component);\n return /*#__PURE__*/React.createElement(Suspense, {\n fallback: null,\n key: key\n }, /*#__PURE__*/React.createElement(Component, props));\n};","import { getComponentId } from './utils.js';\nexport const getRouterInitialComponent = (router, initialComponent) => {\n let initialComponentData;\n const {\n initialUrl\n } = router.getInitialUrl();\n const initialRoute = router.findMatchingRoute(initialUrl);\n let routeProps = {};\n if (initialRoute && initialRoute.route && initialRoute.route.options) {\n routeProps = initialRoute.route.options.props;\n }\n const isMasterRoute = route => {\n if (route.master === true) return true;\n if (typeof route.master === 'function') return route.master(router.app);\n return false;\n };\n if (initialRoute && initialRoute.route && (initialRoute.route.component || initialRoute.route.asyncComponent) && !isMasterRoute(initialRoute.route)) {\n initialComponentData = {\n component: initialRoute.route.component || initialRoute.route.asyncComponent,\n initialComponent,\n id: getComponentId(),\n isAsync: !!initialRoute.route.asyncComponent,\n props: {\n f7route: initialRoute,\n f7router: router,\n ...routeProps,\n ...initialRoute.params\n }\n };\n }\n return {\n initialPage: initialComponentData,\n initialRoute\n };\n};","import React from 'react';\nconst RouterContext = /*#__PURE__*/React.createContext({\n route: null,\n router: null\n});\nexport { RouterContext };","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/* eslint-disable no-nested-ternary */\nimport React, { forwardRef, useRef, useImperativeHandle, useState } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, noUndefinedProps, emit, getRouterId } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7routers, f7, f7events } from '../shared/f7.js';\nimport { useTab } from '../shared/use-tab.js';\nimport { useAsyncComponent } from '../shared/use-async-component.js';\nimport { getRouterInitialComponent } from '../shared/get-router-initial-component.js';\nimport { RouterContext } from '../shared/router-context.js';\n\nconst View = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n init = true,\n main,\n tab,\n tabActive,\n url,\n initRouterOnTabShow,\n browserHistoryInitialMatch = true\n } = props;\n const childrenArray = React.Children.toArray(children);\n const initialPageComponent = childrenArray.filter(c => c.props && c.props.initialPage)[0];\n const restChildren = childrenArray.filter(c => !c.props || !c.props.initialPage);\n const shouldInitRouter = !(initRouterOnTabShow && tab && !tabActive);\n const extraAttrs = getExtraAttrs(props);\n const f7View = useRef(null);\n const elRef = useRef(null);\n const routerData = useRef(null);\n let initialPage;\n let initialRoute;\n const onViewInit = view => {\n emit(props, 'viewInit', view);\n if (!init) {\n routerData.current.instance = view;\n f7View.current = routerData.current.instance;\n }\n };\n if (f7 && !f7View.current && init) {\n const routerId = getRouterId();\n f7View.current = f7.views.create(elRef.current, {\n routerId,\n init: false,\n ...noUndefinedProps(props),\n browserHistoryInitialMatch,\n on: {\n init: onViewInit\n }\n });\n routerData.current = {\n routerId,\n instance: f7View.current\n };\n f7routers.views.push(routerData.current);\n if (shouldInitRouter && f7View.current && f7View.current.router && (url || main)) {\n const initialData = getRouterInitialComponent(f7View.current.router, initialPageComponent);\n initialPage = initialData.initialPage;\n initialRoute = initialData.initialRoute;\n if (initialRoute && initialRoute.route && initialRoute.route.masterRoute) {\n initialPage = undefined;\n initialRoute = undefined;\n }\n }\n }\n const [pages, setPages] = useState(initialPage ? [initialPage] : []);\n const onResize = (view, width) => {\n emit(props, 'viewResize', width);\n };\n const onSwipeBackMove = data => {\n const swipeBackData = data;\n emit(props, 'swipeBackMove', swipeBackData);\n };\n const onSwipeBackBeforeChange = data => {\n const swipeBackData = data;\n emit(props, 'swipeBackBeforeChange', swipeBackData);\n };\n const onSwipeBackAfterChange = data => {\n const swipeBackData = data;\n emit(props, 'swipeBackAfterChange', swipeBackData);\n };\n const onSwipeBackBeforeReset = data => {\n const swipeBackData = data;\n emit(props, 'swipeBackBeforeReset', swipeBackData);\n };\n const onSwipeBackAfterReset = data => {\n const swipeBackData = data;\n emit(props, 'swipeBackAfterReset', swipeBackData);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7View: () => f7View.current\n }));\n const onMount = () => {\n f7ready(() => {\n if (f7View.current) {\n routerData.current.el = elRef.current;\n routerData.current.pages = pages;\n routerData.current.setPages = newPages => {\n setPages([...newPages]);\n };\n if (initialPage && initialPage.isAsync && !initialPage.initialComponent) {\n initialPage.component().then(() => {\n setTimeout(() => {\n f7View.current.init(elRef.current);\n if (initialPage) {\n initialPage.el = f7View.current.router.currentPageEl;\n if (initialRoute && initialRoute.route && initialRoute.route.keepAlive) {\n initialRoute.route.keepAliveData = {\n pageEl: initialPage.el\n };\n }\n }\n }, 100);\n });\n } else {\n f7View.current.init(elRef.current);\n if (initialPage) {\n initialPage.el = f7View.current.router.currentPageEl;\n if (initialRoute && initialRoute.route && initialRoute.route.keepAlive) {\n initialRoute.route.keepAliveData = {\n pageEl: initialPage.el\n };\n }\n }\n }\n } else {\n const routerId = getRouterId();\n routerData.current = {\n el: elRef.current,\n routerId,\n pages,\n instance: f7View.current,\n setPages(newPages) {\n setPages([...newPages]);\n }\n };\n f7routers.views.push(routerData.current);\n routerData.current.instance = f7.views.create(elRef.current, {\n routerId,\n ...noUndefinedProps(props),\n browserHistoryInitialMatch,\n on: {\n init: onViewInit\n }\n });\n f7View.current = routerData.current.instance;\n }\n if (!init) return;\n f7View.current.on('resize', onResize);\n f7View.current.on('swipebackMove', onSwipeBackMove);\n f7View.current.on('swipebackBeforeChange', onSwipeBackBeforeChange);\n f7View.current.on('swipebackAfterChange', onSwipeBackAfterChange);\n f7View.current.on('swipebackBeforeReset', onSwipeBackBeforeReset);\n f7View.current.on('swipebackAfterReset', onSwipeBackAfterReset);\n });\n };\n const onDestroy = () => {\n if (f7View.current) {\n f7View.current.off('resize', onResize);\n f7View.current.off('swipebackMove', onSwipeBackMove);\n f7View.current.off('swipebackBeforeChange', onSwipeBackBeforeChange);\n f7View.current.off('swipebackAfterChange', onSwipeBackAfterChange);\n f7View.current.off('swipebackBeforeReset', onSwipeBackBeforeReset);\n f7View.current.off('swipebackAfterReset', onSwipeBackAfterReset);\n if (f7View.current.destroy) f7View.current.destroy();\n f7View.current = null;\n }\n f7routers.views.splice(f7routers.views.indexOf(routerData.current), 1);\n routerData.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n useIsomorphicLayoutEffect(() => {\n if (routerData.current && f7) {\n f7events.emit('viewRouterDidUpdate', routerData.current);\n }\n });\n useTab(elRef, props);\n const classes = classNames(className, 'view', {\n 'view-main': main,\n 'tab-active': tabActive,\n tab\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), restChildren, pages.map(_ref => {\n let {\n component: PageComponent,\n id: pageId,\n props: pageProps,\n isAsync,\n initialComponent\n } = _ref;\n return /*#__PURE__*/React.createElement(RouterContext.Provider, {\n key: pageId,\n value: {\n router: pageProps.f7router,\n route: pageProps.f7route\n }\n }, initialComponent ? /*#__PURE__*/React.cloneElement(initialComponent, {\n ...pageProps\n }) : isAsync ? useAsyncComponent(PageComponent, pageProps) : /*#__PURE__*/React.createElement(PageComponent, pageProps));\n }));\n});\nView.displayName = 'f7-view';\nexport default View;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { watchProp } from '../shared/watch-prop.js';\nimport { modalStateClasses } from '../shared/modal-state-classes.js';\n\n\nconst LoginScreen = /*#__PURE__*/forwardRef((props, ref) => {\n const f7LoginScreen = useRef(null);\n const {\n className,\n id,\n style,\n children,\n opened,\n animate,\n containerEl\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const isOpened = useRef(opened);\n const isClosing = useRef(false);\n const elRef = useRef(null);\n const onOpen = instance => {\n isOpened.current = true;\n isClosing.current = false;\n emit(props, 'loginScreenOpen', instance);\n };\n const onOpened = instance => {\n emit(props, 'loginScreenOpened', instance);\n };\n const onClose = instance => {\n isOpened.current = false;\n isClosing.current = true;\n emit(props, 'loginScreenClose', instance);\n };\n const onClosed = instance => {\n isClosing.current = false;\n emit(props, 'loginScreenClosed', instance);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7LoginScreen: () => f7LoginScreen.current\n }));\n\n // watch opened changes\n watchProp(opened, value => {\n if (!f7LoginScreen.current) return;\n if (value) {\n f7LoginScreen.current.open();\n } else {\n f7LoginScreen.current.close();\n }\n });\n const modalEvents = method => {\n if (!f7LoginScreen.current) return;\n f7LoginScreen.current[method]('open', onOpen);\n f7LoginScreen.current[method]('opened', onOpened);\n f7LoginScreen.current[method]('close', onClose);\n f7LoginScreen.current[method]('closed', onClosed);\n };\n const onMount = () => {\n if (!elRef.current) return;\n f7ready(() => {\n const loginScreenParams = {\n el: elRef.current\n };\n if ('animate' in props) loginScreenParams.animate = animate;\n if ('containerEl' in props) loginScreenParams.containerEl = containerEl;\n f7LoginScreen.current = f7.loginScreen.create(loginScreenParams);\n modalEvents('on');\n if (opened) {\n f7LoginScreen.current.open(false);\n }\n });\n };\n const onDestroy = () => {\n if (f7LoginScreen.current) {\n f7LoginScreen.current.destroy();\n }\n f7LoginScreen.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n modalEvents('on');\n return () => {\n modalEvents('off');\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n const classes = classNames(className, 'login-screen', modalStateClasses({\n isOpened,\n isClosing\n }), colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children);\n});\nLoginScreen.displayName = 'f7-login-screen';\nexport default LoginScreen;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit, getSlots } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { watchProp } from '../shared/watch-prop.js';\nimport { modalStateClasses } from '../shared/modal-state-classes.js';\n\n\n\nconst Sheet = /*#__PURE__*/forwardRef((props, ref) => {\n const f7Sheet = useRef(null);\n const {\n className,\n id,\n style,\n top,\n bottom,\n position,\n push,\n opened,\n animate,\n backdrop,\n backdropEl,\n closeByBackdropClick,\n closeByOutsideClick,\n closeOnEscape,\n swipeToClose,\n swipeToStep,\n swipeHandler,\n containerEl,\n breakpoints,\n backdropBreakpoint,\n pushBreakpoint\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const isOpened = useRef(opened);\n const isClosing = useRef(false);\n const onBreakpoint = (instance, breakpoint) => {\n emit(props, 'sheetBreakpoint', instance, breakpoint);\n };\n const onStepProgress = (instance, progress) => {\n emit(props, 'sheetStepProgress', instance, progress);\n };\n const onStepOpen = instance => {\n emit(props, 'sheetStepOpen', instance);\n };\n const onStepClose = instance => {\n emit(props, 'sheetStepClose', instance);\n };\n const onOpen = instance => {\n isOpened.current = true;\n isClosing.current = false;\n emit(props, 'sheetOpen', instance);\n };\n const onOpened = instance => {\n emit(props, 'sheetOpened', instance);\n };\n const onClose = instance => {\n isOpened.current = false;\n isClosing.current = true;\n emit(props, 'sheetClose', instance);\n };\n const onClosed = instance => {\n isClosing.current = false;\n emit(props, 'sheetClosed', instance);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7Sheet: () => f7Sheet.current\n }));\n const modalEvents = method => {\n if (!f7Sheet.current) return;\n f7Sheet.current[method]('open', onOpen);\n f7Sheet.current[method]('opened', onOpened);\n f7Sheet.current[method]('close', onClose);\n f7Sheet.current[method]('closed', onClosed);\n f7Sheet.current[method]('stepOpen', onStepOpen);\n f7Sheet.current[method]('stepClose', onStepClose);\n f7Sheet.current[method]('stepProgress', onStepProgress);\n f7Sheet.current[method]('breakpoint', onBreakpoint);\n };\n const onMount = () => {\n if (!elRef.current) return;\n const sheetParams = {\n el: elRef.current,\n breakpoints,\n backdropBreakpoint,\n pushBreakpoint\n };\n if ('animate' in props && typeof animate !== 'undefined') sheetParams.animate = animate;\n if ('backdrop' in props && typeof backdrop !== 'undefined') sheetParams.backdrop = backdrop;\n if ('backdropEl' in props) sheetParams.backdropEl = backdropEl;\n if ('closeByBackdropClick' in props) sheetParams.closeByBackdropClick = closeByBackdropClick;\n if ('closeByOutsideClick' in props) sheetParams.closeByOutsideClick = closeByOutsideClick;\n if ('closeOnEscape' in props) sheetParams.closeOnEscape = closeOnEscape;\n if ('swipeToClose' in props) sheetParams.swipeToClose = swipeToClose;\n if ('swipeToStep' in props) sheetParams.swipeToStep = swipeToStep;\n if ('swipeHandler' in props) sheetParams.swipeHandler = swipeHandler;\n if ('containerEl' in props) sheetParams.containerEl = containerEl;\n if ('breakpoints' in props) sheetParams.breakpoints = breakpoints;\n if ('backdropBreakpoint' in props) sheetParams.backdropBreakpoint = backdropBreakpoint;\n if ('pushBreakpoint' in props) sheetParams.pushBreakpoint = pushBreakpoint;\n f7ready(() => {\n f7Sheet.current = f7.sheet.create(sheetParams);\n modalEvents('on');\n if (opened) {\n f7Sheet.current.open(false);\n }\n });\n };\n const onDestroy = () => {\n if (f7Sheet.current) {\n f7Sheet.current.destroy();\n }\n f7Sheet.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n modalEvents('on');\n return () => {\n modalEvents('off');\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n watchProp(opened, value => {\n if (!f7Sheet.current) return;\n if (value) {\n f7Sheet.current.open();\n } else {\n f7Sheet.current.close();\n }\n });\n const slots = getSlots(props);\n const fixedList = [];\n const staticList = [];\n const fixedTags = 'navbar toolbar tabbar subnavbar searchbar messagebar fab list-index panel'.split(' ').map(tagName => `f7-${tagName}`);\n const slotsDefault = slots.default;\n if (slotsDefault && slotsDefault.length) {\n slotsDefault.forEach(child => {\n if (typeof child === 'undefined') return;\n let isFixedTag = false;\n const tag = child.type && (child.type.displayName || child.type.name);\n if (!tag) {\n staticList.push(child);\n return;\n }\n if (fixedTags.indexOf(tag) >= 0) {\n isFixedTag = true;\n }\n if (isFixedTag) fixedList.push(child);else staticList.push(child);\n });\n }\n const innerEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"sheet-modal-inner\"\n }, staticList, slots.static);\n let positionComputed = 'bottom';\n if (position) positionComputed = position;else if (top) positionComputed = 'top';else if (bottom) positionComputed = 'bottom';\n const classes = classNames(className, 'sheet-modal', `sheet-modal-${positionComputed}`, {\n 'sheet-modal-push': push\n }, modalStateClasses({\n isOpened,\n isClosing\n }), colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), fixedList, slots.fixed, innerEl);\n});\nSheet.displayName = 'f7-sheet';\nexport default Sheet;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { watchProp } from '../shared/watch-prop.js';\nimport { modalStateClasses } from '../shared/modal-state-classes.js';\n\n\n\nconst Popover = /*#__PURE__*/forwardRef((props, ref) => {\n const f7Popover = useRef(null);\n const {\n className,\n id,\n style,\n children,\n opened,\n animate,\n targetEl,\n arrow,\n backdrop,\n backdropEl,\n closeByBackdropClick,\n closeByOutsideClick,\n closeOnEscape,\n containerEl,\n verticalPosition\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const isOpened = useRef(opened);\n const isClosing = useRef(false);\n const onOpen = instance => {\n isOpened.current = true;\n isClosing.current = false;\n emit(props, 'popoverOpen', instance);\n };\n const onOpened = instance => {\n emit(props, 'popoverOpened', instance);\n };\n const onClose = instance => {\n isOpened.current = false;\n isClosing.current = true;\n emit(props, 'popoverClose', instance);\n };\n const onClosed = instance => {\n isClosing.current = false;\n emit(props, 'popoverClosed', instance);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7Popover: () => f7Popover.current\n }));\n watchProp(opened, value => {\n if (!f7Popover.current) return;\n if (value) {\n f7Popover.current.open();\n } else {\n f7Popover.current.close();\n }\n });\n const modalEvents = method => {\n if (!f7Popover.current) return;\n f7Popover.current[method]('open', onOpen);\n f7Popover.current[method]('opened', onOpened);\n f7Popover.current[method]('close', onClose);\n f7Popover.current[method]('closed', onClosed);\n };\n const onMount = () => {\n if (!elRef.current) return;\n const popoverParams = {\n el: elRef.current\n };\n if (targetEl) popoverParams.targetEl = targetEl;\n if ('closeByBackdropClick' in props) popoverParams.closeByBackdropClick = closeByBackdropClick;\n if ('closeByOutsideClick' in props) popoverParams.closeByOutsideClick = closeByOutsideClick;\n if ('closeOnEscape' in props) popoverParams.closeOnEscape = closeOnEscape;\n if ('arrow' in props) popoverParams.arrow = arrow;\n if ('backdrop' in props) popoverParams.backdrop = backdrop;\n if ('backdropEl' in props) popoverParams.backdropEl = backdropEl;\n if ('animate' in props) popoverParams.animate = animate;\n if ('containerEl' in props) popoverParams.containerEl = containerEl;\n if ('verticalPosition' in props) popoverParams.verticalPosition = verticalPosition;\n f7ready(() => {\n f7Popover.current = f7.popover.create(popoverParams);\n modalEvents('on');\n if (opened && targetEl) {\n f7Popover.current.open(targetEl, false);\n }\n });\n };\n const onDestroy = () => {\n if (f7Popover.current) {\n f7Popover.current.destroy();\n }\n f7Popover.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n modalEvents('on');\n return () => {\n modalEvents('off');\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n const classes = classNames(className, 'popover', modalStateClasses({\n isOpened,\n isClosing\n }), colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), arrow !== false && /*#__PURE__*/React.createElement(\"div\", {\n className: \"popover-arrow\"\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"popover-inner\"\n }, children));\n});\nPopover.displayName = 'f7-popover';\nexport default Popover;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, noUndefinedProps, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { watchProp } from '../shared/watch-prop.js';\n\n\n\nconst Panel = /*#__PURE__*/forwardRef((props, ref) => {\n const f7Panel = useRef(null);\n const {\n className,\n id,\n style,\n children,\n side,\n effect,\n // eslint-disable-next-line\n cover,\n reveal,\n push,\n floating,\n left,\n // right,\n opened,\n resizable,\n backdrop = true,\n backdropEl,\n containerEl,\n closeByBackdropClick,\n visibleBreakpoint,\n collapsedBreakpoint,\n swipe,\n swipeNoFollow,\n swipeOnlyClose,\n swipeActiveArea = 0,\n swipeThreshold = 0\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const isOpened = useRef(false);\n const isClosing = useRef(false);\n const isCollapsed = useRef(false);\n const isBreakpoint = useRef(false);\n const onOpen = event => {\n isOpened.current = true;\n isClosing.current = false;\n emit(props, 'panelOpen', event);\n };\n const onOpened = event => {\n emit(props, 'panelOpened', event);\n };\n const onClose = event => {\n isOpened.current = false;\n isClosing.current = true;\n emit(props, 'panelClose', event);\n };\n const onClosed = event => {\n isClosing.current = false;\n emit(props, 'panelClosed', event);\n };\n const onBackdropClick = event => {\n emit(props, 'click panelBackdropClick', event);\n };\n const onSwipe = event => {\n emit(props, 'panelSwipe', event);\n };\n const onSwipeOpen = event => {\n emit(props, 'panelSwipeOpen', event);\n };\n const onBreakpoint = event => {\n isBreakpoint.current = true;\n isCollapsed.current = false;\n emit(props, 'panelBreakpoint', event);\n };\n const onCollapsedBreakpoint = event => {\n isBreakpoint.current = false;\n isCollapsed.current = true;\n emit(props, 'panelCollapsedBreakpoint', event);\n };\n const onResize = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n emit(props, 'panelResize', ...args);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7Panel: () => f7Panel.current\n }));\n watchProp(resizable, newValue => {\n if (!f7Panel.current) return;\n if (newValue) f7Panel.current.enableResizable();else f7Panel.current.disableResizable();\n });\n watchProp(opened, newValue => {\n if (!f7Panel.current) return;\n if (newValue) {\n f7Panel.current.open();\n } else {\n f7Panel.current.close();\n }\n });\n const modalEvents = method => {\n if (!f7Panel.current) return;\n f7Panel.current[method]('open', onOpen);\n f7Panel.current[method]('opened', onOpened);\n f7Panel.current[method]('close', onClose);\n f7Panel.current[method]('closed', onClosed);\n f7Panel.current[method]('backdropClick', onBackdropClick);\n f7Panel.current[method]('swipe', onSwipe);\n f7Panel.current[method]('swipeOpen', onSwipeOpen);\n f7Panel.current[method]('collapsedBreakpoint', onCollapsedBreakpoint);\n f7Panel.current[method]('breakpoint', onBreakpoint);\n f7Panel.current[method]('resize', onResize);\n };\n const onMount = () => {\n f7ready(() => {\n const $ = f7.$;\n if (!$) return;\n if ($('.panel-backdrop').length === 0) {\n $('
                ').insertBefore(elRef.current);\n }\n const params = noUndefinedProps({\n el: elRef.current,\n resizable,\n backdrop,\n backdropEl,\n containerEl,\n visibleBreakpoint,\n collapsedBreakpoint,\n swipe,\n swipeNoFollow,\n swipeOnlyClose,\n swipeActiveArea,\n swipeThreshold,\n closeByBackdropClick\n });\n f7Panel.current = f7.panel.create(params);\n modalEvents('on');\n if (opened) {\n f7Panel.current.open(false);\n }\n });\n };\n const onDestroy = () => {\n if (f7Panel.current && f7Panel.current.destroy) {\n f7Panel.current.destroy();\n }\n f7Panel.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n modalEvents('on');\n return () => {\n modalEvents('off');\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n const sideComputed = side || (left ? 'left' : 'right');\n // eslint-disable-next-line\n const effectComputed = effect || (reveal ? 'reveal' : push ? 'push' : floating ? 'floating' : 'cover');\n const classes = classNames(className, 'panel', {\n 'panel-in': isOpened.current && !isClosing.current && !isBreakpoint.current,\n 'panel-in-breakpoint': isBreakpoint.current,\n 'panel-in-collapsed': isCollapsed.current,\n 'panel-resizable': resizable,\n [`panel-${sideComputed}`]: sideComputed,\n [`panel-${effectComputed}`]: effectComputed\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children, resizable && /*#__PURE__*/React.createElement(\"div\", {\n className: \"panel-resize-handler\"\n }));\n});\nPanel.displayName = 'f7-panel';\nexport default Panel;","import React from 'react';\nimport Popup from '../components/popup.js';\nimport View from '../components/view.js';\nimport LoginScreen from '../components/login-screen.js';\nimport Sheet from '../components/sheet.js';\nimport Popover from '../components/popover.js';\nimport Panel from '../components/panel.js';\nexport const routerOpenIn = (router, url, options) => {\n const navigateOptions = {\n url,\n route: {\n path: url,\n options: {\n ...options,\n openIn: undefined\n }\n }\n };\n const params = {\n ...options\n };\n if (options.openIn === 'popup') {\n params.component = function DynamicPopup() {\n return /*#__PURE__*/React.createElement(Popup, {\n className: \"popup-router-open-in\",\n \"data-url\": url\n }, /*#__PURE__*/React.createElement(View, {\n linksView: router.view.selector,\n url: url,\n ignoreOpenIn: true\n }));\n };\n navigateOptions.route.popup = params;\n }\n if (options.openIn === 'loginScreen') {\n params.component = function DynamicPopover() {\n return /*#__PURE__*/React.createElement(LoginScreen, {\n className: \"login-screen-router-open-in\",\n \"data-url\": url\n }, /*#__PURE__*/React.createElement(View, {\n linksView: router.view.selector,\n url: url,\n ignoreOpenIn: true\n }));\n };\n navigateOptions.route.loginScreen = params;\n }\n if (options.openIn === 'sheet') {\n params.component = function DynamicSheet() {\n return /*#__PURE__*/React.createElement(Sheet, {\n className: \"sheet-modal-router-open-in\",\n \"data-url\": url\n }, /*#__PURE__*/React.createElement(View, {\n linksView: router.view.selector,\n url: url,\n ignoreOpenIn: true\n }));\n };\n navigateOptions.route.sheet = params;\n }\n if (options.openIn === 'popover') {\n params.targetEl = options.clickedEl || options.targetEl;\n params.component = function DynamicPopover() {\n return /*#__PURE__*/React.createElement(Popover, {\n className: \"popover-router-open-in\",\n targetEl: options.clickedEl || options.targetEl,\n \"data-url\": url\n }, /*#__PURE__*/React.createElement(View, {\n linksView: router.view.selector,\n url: url,\n ignoreOpenIn: true\n }));\n };\n navigateOptions.route.popover = params;\n }\n if (options.openIn.indexOf('panel') >= 0) {\n const parts = options.openIn.split(':');\n const side = parts[1] || 'left';\n const effect = parts[2] || 'cover';\n params.component = function DynamicPanel() {\n return /*#__PURE__*/React.createElement(Panel, {\n side: side,\n effect: effect,\n className: \"panel-router-open-in\",\n \"data-url\": url\n }, /*#__PURE__*/React.createElement(View, {\n linksView: router.view.selector,\n url: url,\n ignoreOpenIn: true\n }));\n };\n navigateOptions.route.panel = params;\n }\n return router.navigate(navigateOptions);\n};","/* eslint no-underscore-dangle: \"off\" */\nimport { f7events, f7routers } from './f7.js';\nimport { extend, getComponentId } from './utils.js';\nimport { routerOpenIn } from './router-open-in.js';\nconst getChildrenArray = el => {\n const arr = [];\n for (let i = 0; i < el.children.length; i += 1) {\n arr.push(el.children[i]);\n }\n return arr;\n};\nconst hasSameChildren = (childrenBefore, childrenAfter) => {\n if (childrenBefore.length !== childrenAfter.length) return false;\n const set = new Set([...childrenBefore, ...childrenAfter]);\n if (set.size === childrenBefore.length) return true;\n return false;\n};\nexport default {\n proto: {\n openIn(router, navigateUrl, options) {\n return routerOpenIn(router, navigateUrl, options);\n },\n pageComponentLoader(_ref) {\n let {\n routerEl,\n component,\n options,\n resolve,\n reject\n } = _ref;\n const router = this;\n const routerId = router.id;\n const el = routerEl;\n let viewRouter;\n f7routers.views.forEach(data => {\n if (data.el && data.el === routerEl || data.routerId && data.routerId === routerId) {\n viewRouter = data;\n }\n });\n if (!viewRouter) {\n reject();\n return;\n }\n const pageData = {\n component,\n id: getComponentId(),\n props: extend({\n f7route: options.route,\n f7router: router\n }, options.route.params, options.props || {})\n };\n let resolved;\n const childrenBefore = getChildrenArray(el);\n function onDidUpdate(componentRouterData) {\n if (componentRouterData !== viewRouter || resolved) return;\n const childrenAfter = getChildrenArray(el);\n if (hasSameChildren(childrenBefore, childrenAfter)) return;\n f7events.off('viewRouterDidUpdate', onDidUpdate);\n const pageEl = el.children[el.children.length - 1];\n pageData.el = pageEl;\n resolve(pageEl);\n resolved = true;\n }\n f7events.on('viewRouterDidUpdate', onDidUpdate);\n viewRouter.pages.push(pageData);\n viewRouter.setPages(viewRouter.pages);\n },\n removePage($pageEl) {\n if (!$pageEl) return;\n const router = this;\n let f7Page;\n if ('length' in $pageEl && $pageEl[0]) f7Page = $pageEl[0].f7Page;else f7Page = $pageEl.f7Page;\n if (f7Page && f7Page.route && f7Page.route.route && f7Page.route.route.keepAlive) {\n router.app.$($pageEl).remove();\n return;\n }\n let viewRouter;\n f7routers.views.forEach(data => {\n if (data.el && data.el === router.el) {\n viewRouter = data;\n }\n });\n let pageEl;\n if ('length' in $pageEl) {\n // Dom7\n if ($pageEl.length === 0) return;\n pageEl = $pageEl[0];\n } else {\n pageEl = $pageEl;\n }\n if (!pageEl) return;\n let pageComponentFound;\n viewRouter.pages.forEach((page, index) => {\n if (page.el === pageEl) {\n pageComponentFound = true;\n viewRouter.pages.splice(index, 1);\n viewRouter.setPages(viewRouter.pages);\n }\n });\n if (!pageComponentFound) {\n pageEl.parentNode.removeChild(pageEl);\n }\n },\n tabComponentLoader(_temp) {\n let {\n tabEl,\n component,\n options,\n resolve,\n reject\n } = _temp === void 0 ? {} : _temp;\n const router = this;\n if (!tabEl) reject();\n let tabRouter;\n f7routers.tabs.forEach(tabData => {\n if (tabData.el && tabData.el === tabEl) {\n tabRouter = tabData;\n }\n });\n if (!tabRouter) {\n reject();\n return;\n }\n const id = getComponentId();\n const tabContent = {\n id,\n component,\n props: extend({\n f7route: options.route,\n f7router: router\n }, options.route.route && options.route.route.tab && options.route.route.tab.options && options.route.route.tab.options.props || {}, options.route.params, options.props || {})\n };\n let resolved;\n function onDidUpdate(componentRouterData) {\n if (componentRouterData !== tabRouter || resolved) return;\n f7events.off('tabRouterDidUpdate', onDidUpdate);\n const tabContentEl = tabEl.children[0];\n resolve(tabContentEl);\n resolved = true;\n }\n f7events.on('tabRouterDidUpdate', onDidUpdate);\n tabRouter.setTabContent(tabContent);\n },\n removeTabContent(tabEl) {\n if (!tabEl) return;\n let tabRouter;\n f7routers.tabs.forEach(tabData => {\n if (tabData.el && tabData.el === tabEl) {\n tabRouter = tabData;\n }\n });\n if (!tabRouter) {\n tabEl.innerHTML = ''; // eslint-disable-line\n return;\n }\n tabRouter.setTabContent(null);\n },\n modalComponentLoader(_temp2) {\n let {\n component,\n options,\n resolve,\n reject\n } = _temp2 === void 0 ? {} : _temp2;\n const router = this;\n const modalsRouter = f7routers.modals;\n if (!modalsRouter) {\n reject();\n return;\n }\n const modalData = {\n component,\n id: getComponentId(),\n props: extend({\n f7route: options.route,\n f7router: router\n }, options.route.params, options.props || {})\n };\n let resolved;\n function onDidUpdate() {\n if (resolved) return;\n f7events.off('modalsRouterDidUpdate', onDidUpdate);\n const modalEl = modalsRouter.el.children[modalsRouter.el.children.length - 1];\n modalData.el = modalEl;\n resolve(modalEl);\n resolved = true;\n }\n f7events.on('modalsRouterDidUpdate', onDidUpdate);\n modalsRouter.modals.push(modalData);\n modalsRouter.setModals(modalsRouter.modals);\n },\n removeModal(modalEl) {\n const modalsRouter = f7routers.modals;\n if (!modalsRouter) return;\n let modalDataToRemove;\n modalsRouter.modals.forEach(modalData => {\n if (modalData.el === modalEl) modalDataToRemove = modalData;\n });\n modalsRouter.modals.splice(modalsRouter.modals.indexOf(modalDataToRemove), 1);\n modalsRouter.setModals(modalsRouter.modals);\n }\n }\n};","import Framework7 from 'framework7/lite';\nimport componentsRouter from './components-router.js';\nimport { f7, f7ready, theme, f7initEvents, setTheme } from './f7.js';\nconst Framework7React = {\n name: 'reactPlugin',\n installed: false,\n install(params) {\n if (params === void 0) {\n params = {};\n }\n if (Framework7React.installed) return;\n Framework7React.installed = true;\n f7initEvents();\n const {\n theme: paramsTheme,\n userAgent\n } = params;\n if (paramsTheme === 'md') theme.md = true;\n if (paramsTheme === 'ios') theme.ios = true;\n\n // eslint-disable-next-line\n const needThemeCalc = typeof window === 'undefined' ? !!userAgent : true;\n if (needThemeCalc && (!paramsTheme || paramsTheme === 'auto')) {\n const device = Framework7.getDevice({\n userAgent\n }, true);\n theme.ios = !!device.ios;\n theme.md = !theme.ios;\n }\n f7ready(() => {\n setTheme();\n });\n Framework7.Router.use(componentsRouter);\n }\n};\nexport { f7ready, f7, theme };\nexport default Framework7React;","/**\n * Framework7 React 8.3.2\n * Build full featured iOS & Android apps using Framework7 & React\n * https://framework7.io/react/\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 27, 2024\n */\nimport Framework7React from './shared/plugin.js';\nimport { f7, f7ready, theme } from './shared/f7.js';\nimport { useStore } from './shared/use-store.js';\n\nimport AccordionContent from './components/accordion-content.js';\nimport AccordionItem from './components/accordion-item.js';\nimport AccordionToggle from './components/accordion-toggle.js';\nimport Accordion from './components/accordion.js';\nimport ActionsButton from './components/actions-button.js';\nimport ActionsGroup from './components/actions-group.js';\nimport ActionsLabel from './components/actions-label.js';\nimport Actions from './components/actions.js';\nimport App from './components/app.js';\nimport AreaChart from './components/area-chart.js';\nimport Badge from './components/badge.js';\nimport BlockFooter from './components/block-footer.js';\nimport BlockHeader from './components/block-header.js';\nimport BlockTitle from './components/block-title.js';\nimport Block from './components/block.js';\nimport BreadcrumbsCollapsed from './components/breadcrumbs-collapsed.js';\nimport BreadcrumbsItem from './components/breadcrumbs-item.js';\nimport BreadcrumbsSeparator from './components/breadcrumbs-separator.js';\nimport Breadcrumbs from './components/breadcrumbs.js';\nimport Button from './components/button.js';\nimport CardContent from './components/card-content.js';\nimport CardFooter from './components/card-footer.js';\nimport CardHeader from './components/card-header.js';\nimport Card from './components/card.js';\nimport Checkbox from './components/checkbox.js';\nimport Chip from './components/chip.js';\nimport FabBackdrop from './components/fab-backdrop.js';\nimport FabButton from './components/fab-button.js';\nimport FabButtons from './components/fab-buttons.js';\nimport Fab from './components/fab.js';\nimport Gauge from './components/gauge.js';\nimport Icon from './components/icon.js';\nimport Input from './components/input.js';\nimport Link from './components/link.js';\nimport ListButton from './components/list-button.js';\nimport ListGroup from './components/list-group.js';\nimport ListIndex from './components/list-index.js';\nimport ListInput from './components/list-input.js';\nimport ListItemContent from './components/list-item-content.js';\nimport ListItem from './components/list-item.js';\nimport List from './components/list.js';\nimport LoginScreenTitle from './components/login-screen-title.js';\nimport LoginScreen from './components/login-screen.js';\nimport Message from './components/message.js';\nimport MessagebarAttachment from './components/messagebar-attachment.js';\nimport MessagebarAttachments from './components/messagebar-attachments.js';\nimport MessagebarSheetImage from './components/messagebar-sheet-image.js';\nimport MessagebarSheetItem from './components/messagebar-sheet-item.js';\nimport MessagebarSheet from './components/messagebar-sheet.js';\nimport Messagebar from './components/messagebar.js';\nimport MessagesTitle from './components/messages-title.js';\nimport Messages from './components/messages.js';\nimport NavLeft from './components/nav-left.js';\nimport NavRight from './components/nav-right.js';\nimport NavTitleLarge from './components/nav-title-large.js';\nimport NavTitle from './components/nav-title.js';\nimport Navbar from './components/navbar.js';\nimport PageContent from './components/page-content.js';\nimport Page from './components/page.js';\nimport Panel from './components/panel.js';\nimport PhotoBrowser from './components/photo-browser.js';\nimport PieChart from './components/pie-chart.js';\nimport Popover from './components/popover.js';\nimport Popup from './components/popup.js';\nimport Preloader from './components/preloader.js';\nimport Progressbar from './components/progressbar.js';\nimport Radio from './components/radio.js';\nimport Range from './components/range.js';\nimport RoutableModals from './components/routable-modals.js';\nimport Searchbar from './components/searchbar.js';\nimport Segmented from './components/segmented.js';\nimport Sheet from './components/sheet.js';\nimport SkeletonAvatar from './components/skeleton-avatar.js';\nimport SkeletonBlock from './components/skeleton-block.js';\nimport SkeletonImage from './components/skeleton-image.js';\nimport SkeletonText from './components/skeleton-text.js';\nimport Stepper from './components/stepper.js';\nimport Subnavbar from './components/subnavbar.js';\nimport SwipeoutActions from './components/swipeout-actions.js';\nimport SwipeoutButton from './components/swipeout-button.js';\nimport Tab from './components/tab.js';\nimport Tabs from './components/tabs.js';\nimport TextEditor from './components/text-editor.js';\nimport Toggle from './components/toggle.js';\nimport Toolbar from './components/toolbar.js';\nimport TreeviewItem from './components/treeview-item.js';\nimport Treeview from './components/treeview.js';\nimport View from './components/view.js';\nimport Views from './components/views.js';\n\nexport { AccordionContent, AccordionItem, AccordionToggle, Accordion, ActionsButton, ActionsGroup, ActionsLabel, Actions, App, AreaChart, Badge, BlockFooter, BlockHeader, BlockTitle, Block, BreadcrumbsCollapsed, BreadcrumbsItem, BreadcrumbsSeparator, Breadcrumbs, Button, CardContent, CardFooter, CardHeader, Card, Checkbox, Chip, FabBackdrop, FabButton, FabButtons, Fab, Gauge, Icon, Input, Link, ListButton, ListGroup, ListIndex, ListInput, ListItemContent, ListItem, List, LoginScreenTitle, LoginScreen, Message, MessagebarAttachment, MessagebarAttachments, MessagebarSheetImage, MessagebarSheetItem, MessagebarSheet, Messagebar, MessagesTitle, Messages, NavLeft, NavRight, NavTitleLarge, NavTitle, Navbar, PageContent, Page, Panel, PhotoBrowser, PieChart, Popover, Popup, Preloader, Progressbar, Radio, Range, RoutableModals, Searchbar, Segmented, Sheet, SkeletonAvatar, SkeletonBlock, SkeletonImage, SkeletonText, Stepper, Subnavbar, SwipeoutActions, SwipeoutButton, Tab, Tabs, TextEditor, Toggle, Toolbar, TreeviewItem, Treeview, View, Views }\nexport { f7, f7ready, theme, useStore };\nexport default Framework7React;\n","var __WEBPACK_NAMESPACE_OBJECT__ = jQuery;","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle, useState } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { f7events, f7routers, f7 } from '../shared/f7.js';\n\n\nconst RoutableModals = /*#__PURE__*/forwardRef((props, ref) => {\n const [modals, setModals] = useState([]);\n const elRef = useRef(null);\n const routerData = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const onMount = () => {\n routerData.current = {\n modals,\n el: elRef.current,\n setModals(newModals) {\n setModals([...newModals]);\n }\n };\n f7routers.modals = routerData.current;\n };\n const onDestroy = () => {\n if (!routerData.current) return;\n f7routers.modals = null;\n routerData.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n useIsomorphicLayoutEffect(() => {\n if (!routerData.current || !f7) return;\n f7events.emit('modalsRouterDidUpdate', routerData.current);\n });\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: elRef,\n className: \"framework7-modals\"\n }, modals.map(_ref => {\n let {\n component: ModalComponent,\n id: modalId,\n props: modalProps\n } = _ref;\n return /*#__PURE__*/React.createElement(ModalComponent, _extends({\n key: modalId\n }, modalProps));\n }));\n});\nRoutableModals.displayName = 'f7-routable-modals';\nexport default RoutableModals;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport RoutableModals from './routable-modals.js';\nimport { f7init, f7 } from '../shared/f7.js';\n\n\n\n\nconst App = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n style,\n children,\n ...rest\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const params = rest;\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const classes = classNames(className, 'framework7-root', colorClasses(props));\n\n // eslint-disable-next-line\n if (!f7 || typeof window === 'undefined') {\n f7init(elRef.current, params, false);\n }\n useIsomorphicLayoutEffect(() => {\n const parentEl = elRef.current && elRef.current.parentNode;\n /* eslint-disable no-restricted-globals */\n if (typeof document !== 'undefined' && parentEl && parentEl !== document.body && parentEl.parentNode === document.body) {\n parentEl.style.height = '100%';\n }\n /* eslint-enable no-restricted-globals */\n if (f7) {\n f7.init(elRef.current);\n return;\n }\n f7init(elRef.current, params, true);\n }, []);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: \"framework7-root\",\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children, /*#__PURE__*/React.createElement(RoutableModals, null));\n});\nApp.displayName = 'f7-app';\nexport default App;","import { useState } from 'react';\nimport { f7, f7ready, theme } from './f7.js';\nexport const useTheme = () => {\n const [t, setTheme] = useState(f7 ? theme : null);\n if (!f7) {\n f7ready(() => {\n setTheme(theme);\n });\n }\n return t;\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs, extend } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { useTheme } from '../shared/use-theme.js';\n\n\nconst Preloader = /*#__PURE__*/forwardRef((props, ref) => {\n const theme = useTheme();\n const {\n className,\n id,\n style,\n size\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const preloaderStyle = {};\n let sizeComputed = size;\n if (sizeComputed && typeof sizeComputed === 'string' && sizeComputed.indexOf('px') >= 0) {\n sizeComputed = sizeComputed.replace('px', '');\n }\n if (sizeComputed) {\n preloaderStyle.width = `${sizeComputed}px`;\n preloaderStyle.height = `${sizeComputed}px`;\n preloaderStyle['--f7-preloader-size'] = `${sizeComputed}px`;\n }\n if (style) extend(preloaderStyle, style || {});\n let innerEl;\n if (theme && theme.md) {\n innerEl = /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner\"\n }, /*#__PURE__*/React.createElement(\"svg\", {\n viewBox: \"0 0 36 36\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"18\",\n cy: \"18\",\n r: \"16\"\n })));\n } else if (theme && theme.ios) {\n innerEl = /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner\"\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }));\n } else if (!theme) {\n innerEl = /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner\"\n });\n }\n const classes = classNames(className, {\n preloader: true\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"span\", _extends({\n id: id,\n style: preloaderStyle,\n className: classes,\n ref: elRef\n }, extraAttrs), innerEl);\n});\nPreloader.displayName = 'f7-preloader';\nexport default Preloader;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport Preloader from './preloader.js';\nimport { useTab } from '../shared/use-tab.js';\nimport { f7ready, f7 } from '../shared/f7.js';\n\n\nconst PageContent = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n tab,\n tabActive,\n ptr,\n ptrDistance,\n ptrPreloader = true,\n ptrBottom,\n ptrMousewheel,\n infinite,\n infiniteTop,\n infiniteDistance,\n infinitePreloader = true,\n hideBarsOnScroll,\n hideNavbarOnScroll,\n hideToolbarOnScroll,\n messagesContent,\n loginScreen\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const onPtrPullStart = el => {\n if (elRef.current !== el) return;\n emit(props, 'ptrPullStart');\n };\n const onPtrPullMove = el => {\n if (elRef.current !== el) return;\n emit(props, 'ptrPullMove');\n };\n const onPtrPullEnd = el => {\n if (elRef.current !== el) return;\n emit(props, 'ptrPullEnd');\n };\n const onPtrRefresh = (el, done) => {\n if (elRef.current !== el) return;\n emit(props, 'ptrRefresh', done);\n };\n const onPtrDone = el => {\n if (elRef.current !== el) return;\n emit(props, 'ptrDone');\n };\n const onInfinite = el => {\n if (elRef.current !== el) return;\n emit(props, 'infinite');\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n useTab(elRef, props);\n const attachEvents = () => {\n f7ready(() => {\n if (ptr) {\n f7.on('ptrPullStart', onPtrPullStart);\n f7.on('ptrPullMove', onPtrPullMove);\n f7.on('ptrPullEnd', onPtrPullEnd);\n f7.on('ptrRefresh', onPtrRefresh);\n f7.on('ptrDone', onPtrDone);\n }\n if (infinite) {\n f7.on('infinite', onInfinite);\n }\n });\n };\n const detachEvents = () => {\n if (!f7) return;\n f7.off('ptrPullStart', onPtrPullStart);\n f7.off('ptrPullMove', onPtrPullMove);\n f7.off('ptrPullEnd', onPtrPullEnd);\n f7.off('ptrRefresh', onPtrRefresh);\n f7.off('ptrDone', onPtrDone);\n f7.off('infinite', onInfinite);\n };\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n return detachEvents;\n });\n let ptrEl;\n let infiniteEl;\n if (ptr && ptrPreloader) {\n ptrEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"ptr-preloader\"\n }, /*#__PURE__*/React.createElement(Preloader, null), /*#__PURE__*/React.createElement(\"div\", {\n className: \"ptr-arrow\"\n }));\n }\n if (infinite && infinitePreloader) {\n infiniteEl = /*#__PURE__*/React.createElement(Preloader, {\n className: \"infinite-scroll-preloader\"\n });\n }\n const classes = classNames(className, 'page-content', {\n tab,\n 'tab-active': tabActive,\n 'ptr-content': ptr,\n 'ptr-bottom': ptrBottom,\n 'infinite-scroll-content': infinite,\n 'infinite-scroll-top': infiniteTop,\n 'hide-bars-on-scroll': hideBarsOnScroll,\n 'hide-navbar-on-scroll': hideNavbarOnScroll,\n 'hide-toolbar-on-scroll': hideToolbarOnScroll,\n 'messages-content': messagesContent,\n 'login-screen-content': loginScreen\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n \"data-ptr-distance\": ptrDistance || undefined,\n \"data-ptr-mousewheel\": ptrMousewheel || undefined,\n \"data-infinite-distance\": infiniteDistance || undefined,\n ref: elRef\n }, extraAttrs), ptrBottom ? null : ptrEl, infiniteTop ? infiniteEl : null, children, infiniteTop ? null : infiniteEl, ptrBottom ? ptrEl : null);\n});\nPageContent.displayName = 'f7-page-content';\nexport default PageContent;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, getSlots, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport PageContent from './page-content.js';\n\n\nconst Page = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n name,\n withSubnavbar,\n subnavbar,\n withNavbarLarge,\n navbarLarge,\n noNavbar,\n noToolbar,\n tabs,\n pageContent = true,\n noSwipeback,\n ptr,\n ptrDistance,\n ptrPreloader = true,\n ptrBottom,\n ptrMousewheel,\n infinite,\n infiniteTop,\n infiniteDistance,\n infinitePreloader = true,\n hideBarsOnScroll,\n hideNavbarOnScroll,\n hideToolbarOnScroll,\n messagesContent,\n loginScreen,\n onPtrPullStart,\n onPtrPullMove,\n onPtrPullEnd,\n onPtrRefresh,\n onPtrDone,\n onInfinite\n } = props;\n const hasSubnavbar = useRef(false);\n const hasNavbarLarge = useRef(false);\n const hasNavbarLargeCollapsed = useRef(false);\n const hasCardExpandableOpened = useRef(false);\n const routerPositionClass = useRef('');\n const routerPageRole = useRef(null);\n const routerPageRoleDetailRoot = useRef(false);\n const routerPageMasterStack = useRef(false);\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n\n // Main Page Events\n const onPageMounted = page => {\n if (elRef.current !== page.el) return;\n emit(props, 'pageMounted', page);\n };\n const onPageInit = page => {\n if (elRef.current !== page.el) return;\n if (typeof withSubnavbar === 'undefined' && typeof subnavbar === 'undefined') {\n if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length || page.$el.children('.navbar').find('.subnavbar').length) {\n hasSubnavbar.current = true;\n }\n }\n if (typeof withNavbarLarge === 'undefined' && typeof navbarLarge === 'undefined') {\n if (page.$navbarEl && page.$navbarEl.hasClass('navbar-large')) {\n hasNavbarLarge.current = true;\n }\n }\n emit(props, 'pageInit', page);\n };\n const onPageReinit = page => {\n if (elRef.current !== page.el) return;\n emit(props, 'pageReinit', page);\n };\n const onPageBeforeIn = page => {\n if (elRef.current !== page.el) return;\n if (!page.swipeBack) {\n if (page.from === 'next') {\n routerPositionClass.current = 'page-next';\n }\n if (page.from === 'previous') {\n routerPositionClass.current = 'page-previous';\n }\n }\n emit(props, 'pageBeforeIn', page);\n };\n const onPageBeforeOut = page => {\n if (elRef.current !== page.el) return;\n emit(props, 'pageBeforeOut', page);\n };\n const onPageAfterOut = page => {\n if (elRef.current !== page.el) return;\n if (page.to === 'next') {\n routerPositionClass.current = 'page-next';\n }\n if (page.to === 'previous') {\n routerPositionClass.current = 'page-previous';\n }\n emit(props, 'pageAfterOut', page);\n };\n const onPageAfterIn = page => {\n if (elRef.current !== page.el) return;\n routerPositionClass.current = 'page-current';\n emit(props, 'pageAfterIn', page);\n };\n const onPageBeforeRemove = page => {\n if (elRef.current !== page.el) return;\n emit(props, 'pageBeforeRemove', page);\n };\n const onPageBeforeUnmount = page => {\n if (elRef.current !== page.el) return;\n emit(props, 'pageBeforeUnmount', page);\n };\n const onPagePosition = (pageEl, position) => {\n if (elRef.current !== pageEl) return;\n routerPositionClass.current = `page-${position}`;\n };\n const onPageRole = (pageEl, rolesData) => {\n if (elRef.current !== pageEl) return;\n routerPageRole.current = rolesData.role;\n routerPageRoleDetailRoot.current = rolesData.detailRoot;\n };\n const onPageMasterStack = pageEl => {\n if (elRef.current !== pageEl) return;\n routerPageMasterStack.current = true;\n };\n const onPageMasterUnstack = pageEl => {\n if (elRef.current !== pageEl) return;\n routerPageMasterStack.current = false;\n };\n const onPageNavbarLargeCollapsed = pageEl => {\n if (elRef.current !== pageEl) return;\n hasNavbarLargeCollapsed.current = true;\n };\n const onPageNavbarLargeExpanded = pageEl => {\n if (elRef.current !== pageEl) return;\n hasNavbarLargeCollapsed.current = false;\n };\n const onCardOpened = (cardEl, pageEl) => {\n if (elRef.current !== pageEl) return;\n hasCardExpandableOpened.current = true;\n };\n const onCardClose = (cardEl, pageEl) => {\n if (elRef.current !== pageEl) return;\n hasCardExpandableOpened.current = false;\n };\n const onPageTabShow = pageEl => {\n if (elRef.current !== pageEl) return;\n emit(props, 'pageTabShow');\n };\n const onPageTabHide = pageEl => {\n if (elRef.current !== pageEl) return;\n emit(props, 'pageTabHide');\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const attachEvents = () => {\n f7ready(() => {\n f7.on('pageMounted', onPageMounted);\n f7.on('pageInit', onPageInit);\n f7.on('pageReinit', onPageReinit);\n f7.on('pageBeforeIn', onPageBeforeIn);\n f7.on('pageBeforeOut', onPageBeforeOut);\n f7.on('pageAfterOut', onPageAfterOut);\n f7.on('pageAfterIn', onPageAfterIn);\n f7.on('pageBeforeRemove', onPageBeforeRemove);\n f7.on('pageBeforeUnmount', onPageBeforeUnmount);\n f7.on('pagePosition', onPagePosition);\n f7.on('pageRole', onPageRole);\n f7.on('pageMasterStack', onPageMasterStack);\n f7.on('pageMasterUnstack', onPageMasterUnstack);\n f7.on('pageNavbarLargeCollapsed', onPageNavbarLargeCollapsed);\n f7.on('pageNavbarLargeExpanded', onPageNavbarLargeExpanded);\n f7.on('cardOpened', onCardOpened);\n f7.on('cardClose', onCardClose);\n f7.on('pageTabShow', onPageTabShow);\n f7.on('pageTabHide', onPageTabHide);\n });\n };\n const detachEvents = () => {\n if (!f7) return;\n f7.off('pageMounted', onPageMounted);\n f7.off('pageInit', onPageInit);\n f7.off('pageReinit', onPageReinit);\n f7.off('pageBeforeIn', onPageBeforeIn);\n f7.off('pageBeforeOut', onPageBeforeOut);\n f7.off('pageAfterOut', onPageAfterOut);\n f7.off('pageAfterIn', onPageAfterIn);\n f7.off('pageBeforeRemove', onPageBeforeRemove);\n f7.off('pageBeforeUnmount', onPageBeforeUnmount);\n f7.off('pagePosition', onPagePosition);\n f7.off('pageRole', onPageRole);\n f7.off('pageMasterStack', onPageMasterStack);\n f7.off('pageMasterUnstack', onPageMasterUnstack);\n f7.off('pageNavbarLargeCollapsed', onPageNavbarLargeCollapsed);\n f7.off('pageNavbarLargeExpanded', onPageNavbarLargeExpanded);\n f7.off('cardOpened', onCardOpened);\n f7.off('cardClose', onCardClose);\n f7.off('pageTabShow', onPageTabShow);\n f7.off('pageTabHide', onPageTabHide);\n };\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n return detachEvents;\n });\n const slots = getSlots(props);\n const fixedList = [];\n const staticList = [];\n const {\n static: slotsStatic,\n fixed: slotsFixed,\n default: slotsDefault\n } = slots;\n const fixedTags = 'navbar toolbar tabbar subnavbar searchbar messagebar fab list-index panel'.split(' ').map(tagName => `f7-${tagName}`);\n let hasSubnavbarComputed;\n let hasNavbarLargeComputed;\n let hasMessages = messagesContent;\n if (slotsDefault) {\n slotsDefault.forEach(child => {\n if (typeof child === 'undefined') return;\n let isFixedTag = false;\n const tag = child.type && (child.type.displayName || child.type.name);\n if (!tag) {\n if (pageContent) staticList.push(child);\n return;\n }\n if (tag === 'f7-subnavbar') hasSubnavbarComputed = true;\n if (tag === 'f7-navbar') {\n if (child.props && child.props.large) hasNavbarLargeComputed = true;\n }\n if (typeof hasMessages === 'undefined' && tag === 'f7-messages') hasMessages = true;\n if (fixedTags.indexOf(tag) >= 0) {\n isFixedTag = true;\n }\n if (pageContent) {\n if (isFixedTag) fixedList.push(child);else staticList.push(child);\n }\n });\n }\n const forceSubnavbar = typeof subnavbar === 'undefined' && typeof withSubnavbar === 'undefined' ? hasSubnavbarComputed || hasSubnavbar.current : false;\n const forceNavbarLarge = typeof navbarLarge === 'undefined' && typeof withNavbarLarge === 'undefined' ? hasNavbarLargeComputed || hasNavbarLarge.current : false;\n const classes = classNames(className, 'page', routerPositionClass.current, {\n tabs,\n 'page-with-subnavbar': subnavbar || withSubnavbar || forceSubnavbar,\n 'page-with-navbar-large': navbarLarge || withNavbarLarge || forceNavbarLarge,\n 'no-navbar': noNavbar,\n 'no-toolbar': noToolbar,\n 'no-swipeback': noSwipeback,\n 'page-master': routerPageRole.current === 'master',\n 'page-master-detail': routerPageRole.current === 'detail',\n 'page-master-detail-root': routerPageRoleDetailRoot.current === true,\n 'page-master-stacked': routerPageMasterStack.current === true,\n 'page-with-navbar-large-collapsed': hasNavbarLargeCollapsed.current === true,\n 'page-with-card-opened': hasCardExpandableOpened.current === true,\n 'login-screen-page': loginScreen\n }, colorClasses(props));\n if (!pageContent) {\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n \"data-name\": name,\n ref: elRef\n }, extraAttrs), slotsFixed, slotsStatic, slotsDefault);\n }\n const pageContentEl = /*#__PURE__*/React.createElement(PageContent, {\n ptr: ptr,\n ptrDistance: ptrDistance,\n ptrPreloader: ptrPreloader,\n ptrBottom: ptrBottom,\n ptrMousewheel: ptrMousewheel,\n infinite: infinite,\n infiniteTop: infiniteTop,\n infiniteDistance: infiniteDistance,\n infinitePreloader: infinitePreloader,\n hideBarsOnScroll: hideBarsOnScroll,\n hideNavbarOnScroll: hideNavbarOnScroll,\n hideToolbarOnScroll: hideToolbarOnScroll,\n messagesContent: messagesContent || hasMessages,\n loginScreen: loginScreen,\n onPtrPullStart: onPtrPullStart,\n onPtrPullMove: onPtrPullMove,\n onPtrPullEnd: onPtrPullEnd,\n onPtrRefresh: onPtrRefresh,\n onPtrDone: onPtrDone,\n onInfinite: onInfinite\n }, slotsStatic, staticList);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n \"data-name\": name,\n ref: elRef\n }, extraAttrs), fixedList, slotsFixed, pageContentEl);\n});\nPage.displayName = 'f7-page';\nexport default Page;","import { useEffect, useRef } from 'react';\nimport { watchProp } from './watch-prop.js';\nimport { f7, f7ready } from './f7.js';\nexport const useTooltip = (elRef, props) => {\n const f7Tooltip = useRef(null);\n const {\n tooltip,\n tooltipTrigger\n } = props;\n const onMount = () => {\n if (!elRef.current) return;\n if (!tooltip) return;\n f7ready(() => {\n f7Tooltip.current = f7.tooltip.create({\n targetEl: elRef.current,\n text: tooltip,\n trigger: tooltipTrigger\n });\n });\n };\n const onDestroy = () => {\n if (f7Tooltip.current && f7Tooltip.current.destroy) {\n f7Tooltip.current.destroy();\n f7Tooltip.current = null;\n }\n };\n useEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n watchProp(tooltip, value => {\n if (!value && f7Tooltip.current) {\n f7Tooltip.current.destroy();\n f7Tooltip.current = null;\n return;\n }\n if (value && !f7Tooltip.current && f7) {\n f7Tooltip.current = f7.tooltip.create({\n targetEl: elRef.current,\n text: value,\n trigger: tooltipTrigger\n });\n return;\n }\n if (!value || !f7Tooltip.current) return;\n f7Tooltip.current.setText(value);\n });\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs, extend } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { useTooltip } from '../shared/use-tooltip.js';\nimport { useTheme } from '../shared/use-theme.js';\n\n\nconst Icon = /*#__PURE__*/forwardRef((props, ref) => {\n const theme = useTheme();\n const {\n className,\n id,\n style,\n children,\n material,\n f7,\n icon,\n md,\n ios,\n size\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n useTooltip(elRef, props);\n const getClasses = () => {\n let classes = {\n icon: true\n };\n let themeIcon;\n if (theme && theme.ios) themeIcon = ios;else if (theme && theme.md) themeIcon = md;\n if (themeIcon) {\n const parts = themeIcon.split(':');\n const prop = parts[0];\n const value = parts[1];\n if (prop === 'material' || prop === 'f7') {\n classes['material-icons'] = prop === 'material';\n classes['f7-icons'] = prop === 'f7';\n }\n if (prop === 'icon') {\n classes[value] = true;\n }\n if (icon) classes[icon] = true;\n } else {\n classes = {\n icon: true,\n 'material-icons': material,\n 'f7-icons': f7\n };\n if (icon) classes[icon] = true;\n }\n return classNames(className, classes, colorClasses(props));\n };\n const getIconText = () => {\n let text = material || f7;\n if (md && theme && theme.md && (md.indexOf('material:') >= 0 || md.indexOf('f7:') >= 0)) {\n text = md.split(':')[1];\n } else if (ios && theme && theme.ios && (ios.indexOf('material:') >= 0 || ios.indexOf('f7:') >= 0)) {\n text = ios.split(':')[1];\n }\n return text;\n };\n let sizeComputed = size;\n if (typeof size === 'number' || parseFloat(size) === size * 1) {\n sizeComputed = `${size}px`;\n }\n return /*#__PURE__*/React.createElement(\"i\", _extends({\n id: id,\n style: extend({\n fontSize: sizeComputed,\n width: sizeComputed,\n height: sizeComputed\n }, style),\n className: getClasses(),\n ref: elRef\n }, extraAttrs), getIconText(), children);\n});\nIcon.displayName = 'f7-icon';\nexport default Icon;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { useTooltip } from '../shared/use-tooltip.js';\n\n\n/* dts-instance\nf7Tooltip: Tooltip.Tooltip\n*/\n\n\nconst Badge = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n useTooltip(elRef, props);\n const classes = classNames(className, 'badge', colorClasses(props));\n return /*#__PURE__*/React.createElement(\"span\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children);\n});\nBadge.displayName = 'f7-badge';\nexport default Badge;","import React from 'react';\nimport Icon from '../components/icon.js';\nimport Badge from '../components/badge.js';\nexport const useIcon = function (props) {\n if (props === void 0) {\n props = {};\n }\n const {\n icon,\n iconMaterial,\n iconF7,\n iconMd,\n iconIos,\n iconColor,\n iconSize,\n iconBadge,\n badgeColor,\n iconBadgeColor\n } = props;\n if (icon || iconMaterial || iconF7 || iconMd || iconIos) {\n return /*#__PURE__*/React.createElement(Icon, {\n material: iconMaterial,\n f7: iconF7,\n icon: icon,\n md: iconMd,\n ios: iconIos,\n color: iconColor,\n size: iconSize\n }, (iconBadge || iconBadge === 0) && /*#__PURE__*/React.createElement(Badge, {\n color: badgeColor || iconBadgeColor\n }, iconBadge));\n }\n return null;\n};","import { useEffect } from 'react';\nexport const useRouteProps = function (elRef, _temp) {\n let {\n routeProps\n } = _temp === void 0 ? {} : _temp;\n useEffect(() => {\n if (elRef.current) {\n elRef.current.f7RouteProps = routeProps;\n }\n return () => {\n if (elRef.current && elRef.current.f7RouteProps) {\n delete elRef.current.f7RouteProps;\n }\n };\n }, [routeProps]);\n};","import React from 'react';\nconst TabbarContext = /*#__PURE__*/React.createContext({\n tabbarHasIcons: false\n});\nexport { TabbarContext };","import { useEffect } from 'react';\nimport { f7ready, f7 } from './f7.js';\nimport { extend } from './utils.js';\nexport const useSmartSelect = (smartSelect, smartSelectParams, f7SmartSelect, getEl) => {\n const onMount = () => {\n f7ready(() => {\n if (smartSelect) {\n const ssParams = extend({\n el: getEl()\n }, smartSelectParams || {});\n f7SmartSelect.current = f7.smartSelect.create(ssParams);\n }\n });\n };\n const onDestroy = () => {\n if (f7SmartSelect.current && f7SmartSelect.current.destroy) {\n f7SmartSelect.current.destroy();\n }\n f7SmartSelect.current = null;\n };\n useEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle, useContext } from 'react';\nimport { classNames, getExtraAttrs, isStringProp, emit } from '../shared/utils.js';\nimport { colorClasses, routerAttrs, routerClasses, actionsAttrs, actionsClasses } from '../shared/mixins.js';\nimport { useIcon } from '../shared/use-icon.js';\nimport { useRouteProps } from '../shared/use-route-props.js';\nimport { useTooltip } from '../shared/use-tooltip.js';\nimport { TabbarContext } from '../shared/tabbar-context.js';\nimport Badge from './badge.js';\nimport { useSmartSelect } from '../shared/use-smart-select.js';\n\n\n\nconst Link = /*#__PURE__*/forwardRef((props, ref) => {\n const f7SmartSelect = useRef(null);\n const {\n className,\n id,\n style,\n children,\n noLinkClass,\n text,\n tabLink,\n tabLinkActive,\n tabbarLabel,\n iconOnly,\n badge,\n badgeColor,\n href = '#',\n target,\n // Smart Select\n smartSelect,\n smartSelectParams\n } = props;\n const tabbarContext = useContext(TabbarContext);\n const isTabbarIcons = tabbarLabel || tabbarContext.tabbarHasIcons;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const onClick = e => {\n emit(props, 'click', e);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7SmartSelect: () => f7SmartSelect.current\n }));\n useTooltip(elRef, props);\n useRouteProps(elRef, props);\n useSmartSelect(smartSelect, smartSelectParams, f7SmartSelect, () => {\n return elRef.current;\n });\n let textEl;\n let badgeEl;\n if (text) {\n if (badge) badgeEl = /*#__PURE__*/React.createElement(Badge, {\n color: badgeColor\n }, badge);\n textEl = /*#__PURE__*/React.createElement(\"span\", {\n className: isTabbarIcons ? 'tabbar-label' : ''\n }, text, badgeEl);\n }\n const iconEl = useIcon(props);\n let iconOnlyComputed;\n if (iconOnly || !text && children && children.length === 0 || !text && !children) {\n iconOnlyComputed = true;\n } else {\n iconOnlyComputed = false;\n }\n const classes = classNames(className, {\n link: !(noLinkClass || isTabbarIcons),\n 'icon-only': iconOnlyComputed,\n 'tab-link': tabLink || tabLink === '',\n 'tab-link-active': tabLinkActive,\n 'smart-select': smartSelect\n }, colorClasses(props), routerClasses(props), actionsClasses(props));\n let hrefComputed = href;\n if (href === true) hrefComputed = '#';\n if (href === false) hrefComputed = undefined; // no href attribute\n const attrs = {\n href: hrefComputed,\n target,\n 'data-tab': isStringProp(tabLink) && tabLink || undefined,\n ...routerAttrs(props),\n ...actionsAttrs(props)\n };\n return /*#__PURE__*/React.createElement(\"a\", _extends({\n ref: elRef,\n id: id,\n style: style,\n className: classes\n }, attrs, extraAttrs, {\n onClick: onClick\n }), iconEl, textEl, children);\n});\nLink.displayName = 'f7-link';\nexport default Link;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { useTheme } from '../shared/use-theme.js';\nimport Link from './link.js';\n\n\nconst NavLeft = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n backLink,\n backLinkUrl,\n backLinkForce,\n backLinkShowText,\n sliding\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const onBackClick = event => {\n emit(props, 'backClick clickBack', event);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const theme = useTheme();\n let linkEl;\n let needBackLinkText = backLinkShowText;\n if (typeof needBackLinkText === 'undefined') needBackLinkText = !theme.md;\n if (backLink) {\n const text = backLink !== true && needBackLinkText ? backLink : undefined;\n linkEl = /*#__PURE__*/React.createElement(Link, {\n href: backLinkUrl || '#',\n back: true,\n icon: \"icon-back\",\n force: backLinkForce || undefined,\n className: !text ? 'icon-only' : undefined,\n text: text,\n onClick: onBackClick\n });\n }\n const classes = classNames(className, 'left', {\n sliding\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), linkEl, children);\n});\nNavLeft.displayName = 'f7-nav-left';\nexport default NavLeft;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\n\n\nconst NavTitle = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n title,\n subtitle,\n sliding\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n let subtitleEl;\n if (subtitle) {\n subtitleEl = /*#__PURE__*/React.createElement(\"span\", {\n className: \"subtitle\"\n }, subtitle);\n }\n const classes = classNames(className, 'title', {\n sliding\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children, title, subtitleEl);\n});\nNavTitle.displayName = 'f7-nav-title';\nexport default NavTitle;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\n\n\nconst NavRight = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n sliding\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const classes = classNames(className, 'right', {\n sliding\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children);\n});\nNavRight.displayName = 'f7-nav-right';\nexport default NavRight;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit, getSlots } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { useTheme } from '../shared/use-theme.js';\nimport NavLeft from './nav-left.js';\nimport NavTitle from './nav-title.js';\nimport NavRight from './nav-right.js';\n\n\nconst Navbar = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n sliding = true,\n large,\n largeTransparent,\n transparent,\n hidden,\n outline = true,\n backLink,\n backLinkForce,\n backLinkUrl,\n backLinkShowText,\n title,\n subtitle,\n titleLarge,\n innerClass,\n innerClassName\n } = props;\n const routerPositionClass = useRef('');\n const largeCollapsed = useRef(false);\n const routerNavbarRole = useRef(null);\n const routerNavbarRoleDetailRoot = useRef(false);\n const routerNavbarMasterStack = useRef(false);\n const transparentVisible = useRef(false);\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const theme = useTheme();\n const onHide = navbarEl => {\n if (elRef.current !== navbarEl) return;\n emit(props, 'navbarHide');\n };\n const onShow = navbarEl => {\n if (elRef.current !== navbarEl) return;\n emit(props, 'navbarShow');\n };\n const onExpand = navbarEl => {\n if (elRef.current !== navbarEl) return;\n largeCollapsed.current = false;\n emit(props, 'navbarExpand');\n };\n const onCollapse = navbarEl => {\n if (elRef.current !== navbarEl) return;\n largeCollapsed.current = true;\n emit(props, 'navbarCollapse');\n };\n const onNavbarTransparentShow = navbarEl => {\n if (elRef.current !== navbarEl) return;\n transparentVisible.current = true;\n emit(props, 'navbarTransparentShow');\n };\n const onNavbarTransparentHide = navbarEl => {\n if (elRef.current !== navbarEl) return;\n transparentVisible.current = false;\n emit(props, 'navbarTransparentHide');\n };\n const onNavbarPosition = (navbarEl, position) => {\n if (elRef.current !== navbarEl) return;\n routerPositionClass.current = position ? `navbar-${position}` : '';\n };\n const onNavbarRole = (navbarEl, rolesData) => {\n if (elRef.current !== navbarEl) return;\n routerNavbarRole.current = rolesData.role;\n routerNavbarRoleDetailRoot.current = rolesData.detailRoot;\n };\n const onNavbarMasterStack = navbarEl => {\n if (elRef.current !== navbarEl) return;\n routerNavbarMasterStack.current = true;\n };\n const onNavbarMasterUnstack = navbarEl => {\n if (elRef.current !== navbarEl) return;\n routerNavbarMasterStack.current = false;\n };\n const hide = animate => {\n if (!f7) return;\n f7.navbar.hide(elRef.current, animate);\n };\n const show = animate => {\n if (!f7) return;\n f7.navbar.show(elRef.current, animate);\n };\n const size = () => {\n if (!f7) return;\n f7.navbar.size(elRef.current);\n };\n const onBackClick = event => {\n emit(props, 'backClick clickBack', event);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n hide,\n show,\n size\n }));\n const attachEvents = () => {\n if (!elRef.current) return;\n f7ready(() => {\n f7.navbar.size(elRef.current);\n f7.on('navbarShow', onShow);\n f7.on('navbarHide', onHide);\n f7.on('navbarCollapse', onCollapse);\n f7.on('navbarExpand', onExpand);\n f7.on('navbarPosition', onNavbarPosition);\n f7.on('navbarRole', onNavbarRole);\n f7.on('navbarMasterStack', onNavbarMasterStack);\n f7.on('navbarMasterUnstack', onNavbarMasterUnstack);\n f7.on('navbarTransparentShow', onNavbarTransparentShow);\n f7.on('navbarTransparentHide', onNavbarTransparentHide);\n });\n };\n const detachEvents = () => {\n if (!f7) return;\n f7.off('navbarShow', onShow);\n f7.off('navbarHide', onHide);\n f7.off('navbarCollapse', onCollapse);\n f7.off('navbarExpand', onExpand);\n f7.off('navbarPosition', onNavbarPosition);\n f7.off('navbarRole', onNavbarRole);\n f7.off('navbarMasterStack', onNavbarMasterStack);\n f7.off('navbarMasterUnstack', onNavbarMasterUnstack);\n f7.off('navbarTransparentShow', onNavbarTransparentShow);\n f7.off('navbarTransparentHide', onNavbarTransparentHide);\n };\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n return detachEvents;\n });\n const slots = getSlots(props);\n let leftEl;\n let titleEl;\n let rightEl;\n let titleLargeEl;\n const addLeftTitleClass = theme && theme.ios && f7 && !f7.params.navbar.iosCenterTitle;\n const addCenterTitleClass = theme && theme.md && f7 && f7.params.navbar.mdCenterTitle;\n const isLarge = large || largeTransparent;\n const isTransparent = transparent || isLarge && largeTransparent;\n const isTransparentVisible = isTransparent && transparentVisible.current;\n const classes = classNames(className, 'navbar', routerPositionClass.current, {\n 'navbar-hidden': hidden,\n 'navbar-large': isLarge,\n 'navbar-large-collapsed': isLarge && largeCollapsed.current,\n 'navbar-transparent': isTransparent,\n 'navbar-transparent-visible': isTransparentVisible,\n 'navbar-master': routerNavbarRole.current === 'master',\n 'navbar-master-detail': routerNavbarRole.current === 'detail',\n 'navbar-master-detail-root': routerNavbarRoleDetailRoot.current === true,\n 'navbar-master-stacked': routerNavbarMasterStack.current === true,\n 'no-outline': !outline\n }, colorClasses(props));\n if (backLink || slots['nav-left'] || slots.left) {\n leftEl = /*#__PURE__*/React.createElement(NavLeft, {\n backLink: backLink,\n backLinkUrl: backLinkUrl,\n backLinkForce: backLinkForce,\n backLinkShowText: backLinkShowText,\n onBackClick: onBackClick\n }, slots['nav-left'], slots.left);\n }\n if (title || subtitle || slots.title) {\n titleEl = /*#__PURE__*/React.createElement(NavTitle, {\n title: title,\n subtitle: subtitle\n }, slots.title);\n }\n if (slots['nav-right'] || slots.right) {\n rightEl = /*#__PURE__*/React.createElement(NavRight, null, slots['nav-right'], slots.right);\n }\n let largeTitle = titleLarge;\n if (!largeTitle && large && title) largeTitle = title;\n if (largeTitle || slots['title-large']) {\n titleLargeEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"title-large\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"title-large-text\"\n }, largeTitle || '', slots['title-large']));\n }\n const innerEl = /*#__PURE__*/React.createElement(\"div\", {\n className: classNames('navbar-inner', innerClass, innerClassName, {\n sliding,\n 'navbar-inner-left-title': addLeftTitleClass,\n 'navbar-inner-centered-title': addCenterTitleClass\n })\n }, leftEl, titleEl, rightEl, titleLargeEl, slots.default);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), /*#__PURE__*/React.createElement(\"div\", {\n className: \"navbar-bg\"\n }), slots['before-inner'], innerEl, slots['after-inner']);\n});\nNavbar.displayName = 'f7-navbar';\nexport default Navbar;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\n\n\nconst Subnavbar = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n inner = true,\n title,\n sliding\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const classes = classNames(className, 'subnavbar', {\n sliding\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: classes,\n id: id,\n style: style,\n ref: elRef\n }, extraAttrs), inner ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"subnavbar-inner\"\n }, title && /*#__PURE__*/React.createElement(\"div\", {\n className: \"subnavbar-title\"\n }, title), children) : children);\n});\nSubnavbar.displayName = 'f7-subnavbar';\nexport default Subnavbar;","var niceErrors = {\n 0: \"Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'\",\n 1: function _(annotationType, key) {\n return \"Cannot apply '\" + annotationType + \"' to '\" + key.toString() + \"': Field not found.\";\n },\n /*\n 2(prop) {\n return `invalid decorator for '${prop.toString()}'`\n },\n 3(prop) {\n return `Cannot decorate '${prop.toString()}': action can only be used on properties with a function value.`\n },\n 4(prop) {\n return `Cannot decorate '${prop.toString()}': computed can only be used on getter properties.`\n },\n */\n 5: \"'keys()' can only be used on observable objects, arrays, sets and maps\",\n 6: \"'values()' can only be used on observable objects, arrays, sets and maps\",\n 7: \"'entries()' can only be used on observable objects, arrays and maps\",\n 8: \"'set()' can only be used on observable objects, arrays and maps\",\n 9: \"'remove()' can only be used on observable objects, arrays and maps\",\n 10: \"'has()' can only be used on observable objects, arrays and maps\",\n 11: \"'get()' can only be used on observable objects, arrays and maps\",\n 12: \"Invalid annotation\",\n 13: \"Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)\",\n 14: \"Intercept handlers should return nothing or a change object\",\n 15: \"Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)\",\n 16: \"Modification exception: the internal structure of an observable array was changed.\",\n 17: function _(index, length) {\n return \"[mobx.array] Index out of bounds, \" + index + \" is larger than \" + length;\n },\n 18: \"mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js\",\n 19: function _(other) {\n return \"Cannot initialize from classes that inherit from Map: \" + other.constructor.name;\n },\n 20: function _(other) {\n return \"Cannot initialize map from \" + other;\n },\n 21: function _(dataStructure) {\n return \"Cannot convert to map from '\" + dataStructure + \"'\";\n },\n 22: \"mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js\",\n 23: \"It is not possible to get index atoms from arrays\",\n 24: function _(thing) {\n return \"Cannot obtain administration from \" + thing;\n },\n 25: function _(property, name) {\n return \"the entry '\" + property + \"' does not exist in the observable map '\" + name + \"'\";\n },\n 26: \"please specify a property\",\n 27: function _(property, name) {\n return \"no observable property '\" + property.toString() + \"' found on the observable object '\" + name + \"'\";\n },\n 28: function _(thing) {\n return \"Cannot obtain atom from \" + thing;\n },\n 29: \"Expecting some object\",\n 30: \"invalid action stack. did you forget to finish an action?\",\n 31: \"missing option for computed: get\",\n 32: function _(name, derivation) {\n return \"Cycle detected in computation \" + name + \": \" + derivation;\n },\n 33: function _(name) {\n return \"The setter of computed value '\" + name + \"' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?\";\n },\n 34: function _(name) {\n return \"[ComputedValue '\" + name + \"'] It is not possible to assign a new value to a computed value.\";\n },\n 35: \"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`\",\n 36: \"isolateGlobalState should be called before MobX is running any reactions\",\n 37: function _(method) {\n return \"[mobx] `observableArray.\" + method + \"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice().\" + method + \"()` instead\";\n },\n 38: \"'ownKeys()' can only be used on observable objects\",\n 39: \"'defineProperty()' can only be used on observable objects\"\n};\nvar errors = process.env.NODE_ENV !== \"production\" ? niceErrors : {};\nfunction die(error) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (process.env.NODE_ENV !== \"production\") {\n var e = typeof error === \"string\" ? error : errors[error];\n if (typeof e === \"function\") e = e.apply(null, args);\n throw new Error(\"[MobX] \" + e);\n }\n throw new Error(typeof error === \"number\" ? \"[MobX] minified error nr: \" + error + (args.length ? \" \" + args.map(String).join(\",\") : \"\") + \". Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts\" : \"[MobX] \" + error);\n}\n\nvar mockGlobal = {};\nfunction getGlobal() {\n if (typeof globalThis !== \"undefined\") {\n return globalThis;\n }\n if (typeof window !== \"undefined\") {\n return window;\n }\n if (typeof global !== \"undefined\") {\n return global;\n }\n if (typeof self !== \"undefined\") {\n return self;\n }\n return mockGlobal;\n}\n\n// We shorten anything used > 5 times\nvar assign = Object.assign;\nvar getDescriptor = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar objectPrototype = Object.prototype;\nvar EMPTY_ARRAY = [];\nObject.freeze(EMPTY_ARRAY);\nvar EMPTY_OBJECT = {};\nObject.freeze(EMPTY_OBJECT);\nvar hasProxy = typeof Proxy !== \"undefined\";\nvar plainObjectString = /*#__PURE__*/Object.toString();\nfunction assertProxies() {\n if (!hasProxy) {\n die(process.env.NODE_ENV !== \"production\" ? \"`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`\" : \"Proxy not available\");\n }\n}\nfunction warnAboutProxyRequirement(msg) {\n if (process.env.NODE_ENV !== \"production\" && globalState.verifyProxies) {\n die(\"MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to \" + msg);\n }\n}\nfunction getNextId() {\n return ++globalState.mobxGuid;\n}\n/**\n * Makes sure that the provided function is invoked at most once.\n */\nfunction once(func) {\n var invoked = false;\n return function () {\n if (invoked) {\n return;\n }\n invoked = true;\n return func.apply(this, arguments);\n };\n}\nvar noop = function noop() {};\nfunction isFunction(fn) {\n return typeof fn === \"function\";\n}\nfunction isStringish(value) {\n var t = typeof value;\n switch (t) {\n case \"string\":\n case \"symbol\":\n case \"number\":\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && typeof value === \"object\";\n}\nfunction isPlainObject(value) {\n if (!isObject(value)) {\n return false;\n }\n var proto = Object.getPrototypeOf(value);\n if (proto == null) {\n return true;\n }\n var protoConstructor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof protoConstructor === \"function\" && protoConstructor.toString() === plainObjectString;\n}\n// https://stackoverflow.com/a/37865170\nfunction isGenerator(obj) {\n var constructor = obj == null ? void 0 : obj.constructor;\n if (!constructor) {\n return false;\n }\n if (\"GeneratorFunction\" === constructor.name || \"GeneratorFunction\" === constructor.displayName) {\n return true;\n }\n return false;\n}\nfunction addHiddenProp(object, propName, value) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: true,\n configurable: true,\n value: value\n });\n}\nfunction addHiddenFinalProp(object, propName, value) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: false,\n configurable: true,\n value: value\n });\n}\nfunction createInstanceofPredicate(name, theClass) {\n var propName = \"isMobX\" + name;\n theClass.prototype[propName] = true;\n return function (x) {\n return isObject(x) && x[propName] === true;\n };\n}\nfunction isES6Map(thing) {\n return thing instanceof Map;\n}\nfunction isES6Set(thing) {\n return thing instanceof Set;\n}\nvar hasGetOwnPropertySymbols = typeof Object.getOwnPropertySymbols !== \"undefined\";\n/**\n * Returns the following: own enumerable keys and symbols.\n */\nfunction getPlainObjectKeys(object) {\n var keys = Object.keys(object);\n // Not supported in IE, so there are not going to be symbol props anyway...\n if (!hasGetOwnPropertySymbols) {\n return keys;\n }\n var symbols = Object.getOwnPropertySymbols(object);\n if (!symbols.length) {\n return keys;\n }\n return [].concat(keys, symbols.filter(function (s) {\n return objectPrototype.propertyIsEnumerable.call(object, s);\n }));\n}\n// From Immer utils\n// Returns all own keys, including non-enumerable and symbolic\nvar ownKeys = typeof Reflect !== \"undefined\" && Reflect.ownKeys ? Reflect.ownKeys : hasGetOwnPropertySymbols ? function (obj) {\n return Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj));\n} : /* istanbul ignore next */Object.getOwnPropertyNames;\nfunction stringifyKey(key) {\n if (typeof key === \"string\") {\n return key;\n }\n if (typeof key === \"symbol\") {\n return key.toString();\n }\n return new String(key).toString();\n}\nfunction toPrimitive(value) {\n return value === null ? null : typeof value === \"object\" ? \"\" + value : value;\n}\nfunction hasProp(target, prop) {\n return objectPrototype.hasOwnProperty.call(target, prop);\n}\n// From Immer utils\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || function getOwnPropertyDescriptors(target) {\n // Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n var res = {};\n // Note: without polyfill for ownKeys, symbols won't be picked up\n ownKeys(target).forEach(function (key) {\n res[key] = getDescriptor(target, key);\n });\n return res;\n};\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nvar storedAnnotationsSymbol = /*#__PURE__*/Symbol(\"mobx-stored-annotations\");\n/**\n * Creates a function that acts as\n * - decorator\n * - annotation object\n */\nfunction createDecoratorAnnotation(annotation) {\n function decorator(target, property) {\n if (is20223Decorator(property)) {\n return annotation.decorate_20223_(target, property);\n } else {\n storeAnnotation(target, property, annotation);\n }\n }\n return Object.assign(decorator, annotation);\n}\n/**\n * Stores annotation to prototype,\n * so it can be inspected later by `makeObservable` called from constructor\n */\nfunction storeAnnotation(prototype, key, annotation) {\n if (!hasProp(prototype, storedAnnotationsSymbol)) {\n addHiddenProp(prototype, storedAnnotationsSymbol, _extends({}, prototype[storedAnnotationsSymbol]));\n }\n // @override must override something\n if (process.env.NODE_ENV !== \"production\" && isOverride(annotation) && !hasProp(prototype[storedAnnotationsSymbol], key)) {\n var fieldName = prototype.constructor.name + \".prototype.\" + key.toString();\n die(\"'\" + fieldName + \"' is decorated with 'override', \" + \"but no such decorated member was found on prototype.\");\n }\n // Cannot re-decorate\n assertNotDecorated(prototype, annotation, key);\n // Ignore override\n if (!isOverride(annotation)) {\n prototype[storedAnnotationsSymbol][key] = annotation;\n }\n}\nfunction assertNotDecorated(prototype, annotation, key) {\n if (process.env.NODE_ENV !== \"production\" && !isOverride(annotation) && hasProp(prototype[storedAnnotationsSymbol], key)) {\n var fieldName = prototype.constructor.name + \".prototype.\" + key.toString();\n var currentAnnotationType = prototype[storedAnnotationsSymbol][key].annotationType_;\n var requestedAnnotationType = annotation.annotationType_;\n die(\"Cannot apply '@\" + requestedAnnotationType + \"' to '\" + fieldName + \"':\" + (\"\\nThe field is already decorated with '@\" + currentAnnotationType + \"'.\") + \"\\nRe-decorating fields is not allowed.\" + \"\\nUse '@override' decorator for methods overridden by subclass.\");\n }\n}\n/**\n * Collects annotations from prototypes and stores them on target (instance)\n */\nfunction collectStoredAnnotations(target) {\n if (!hasProp(target, storedAnnotationsSymbol)) {\n // if (__DEV__ && !target[storedAnnotationsSymbol]) {\n // die(\n // `No annotations were passed to makeObservable, but no decorated members have been found either`\n // )\n // }\n // We need a copy as we will remove annotation from the list once it's applied.\n addHiddenProp(target, storedAnnotationsSymbol, _extends({}, target[storedAnnotationsSymbol]));\n }\n return target[storedAnnotationsSymbol];\n}\nfunction is20223Decorator(context) {\n return typeof context == \"object\" && typeof context[\"kind\"] == \"string\";\n}\nfunction assert20223DecoratorType(context, types) {\n if (process.env.NODE_ENV !== \"production\" && !types.includes(context.kind)) {\n die(\"The decorator applied to '\" + String(context.name) + \"' cannot be used on a \" + context.kind + \" element\");\n }\n}\n\nvar $mobx = /*#__PURE__*/Symbol(\"mobx administration\");\nvar Atom = /*#__PURE__*/function () {\n // for effective unobserving. BaseAtom has true, for extra optimization, so its onBecomeUnobserved never gets called, because it's not needed\n\n /**\n * Create a new atom. For debugging purposes it is recommended to give it a name.\n * The onBecomeObserved and onBecomeUnobserved callbacks can be used for resource management.\n */\n function Atom(name_) {\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"Atom@\" + getNextId() : \"Atom\";\n }\n this.name_ = void 0;\n this.isPendingUnobservation_ = false;\n this.isBeingObserved_ = false;\n this.observers_ = new Set();\n this.diffValue_ = 0;\n this.lastAccessedBy_ = 0;\n this.lowestObserverState_ = IDerivationState_.NOT_TRACKING_;\n this.onBOL = void 0;\n this.onBUOL = void 0;\n this.name_ = name_;\n }\n // onBecomeObservedListeners\n var _proto = Atom.prototype;\n _proto.onBO = function onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(function (listener) {\n return listener();\n });\n }\n };\n _proto.onBUO = function onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(function (listener) {\n return listener();\n });\n }\n }\n /**\n * Invoke this method to notify mobx that your atom has been used somehow.\n * Returns true if there is currently a reactive context.\n */;\n _proto.reportObserved = function reportObserved$1() {\n return reportObserved(this);\n }\n /**\n * Invoke this method _after_ this method has changed to signal mobx that all its observers should invalidate.\n */;\n _proto.reportChanged = function reportChanged() {\n startBatch();\n propagateChanged(this);\n endBatch();\n };\n _proto.toString = function toString() {\n return this.name_;\n };\n return Atom;\n}();\nvar isAtom = /*#__PURE__*/createInstanceofPredicate(\"Atom\", Atom);\nfunction createAtom(name, onBecomeObservedHandler, onBecomeUnobservedHandler) {\n if (onBecomeObservedHandler === void 0) {\n onBecomeObservedHandler = noop;\n }\n if (onBecomeUnobservedHandler === void 0) {\n onBecomeUnobservedHandler = noop;\n }\n var atom = new Atom(name);\n // default `noop` listener will not initialize the hook Set\n if (onBecomeObservedHandler !== noop) {\n onBecomeObserved(atom, onBecomeObservedHandler);\n }\n if (onBecomeUnobservedHandler !== noop) {\n onBecomeUnobserved(atom, onBecomeUnobservedHandler);\n }\n return atom;\n}\n\nfunction identityComparer(a, b) {\n return a === b;\n}\nfunction structuralComparer(a, b) {\n return deepEqual(a, b);\n}\nfunction shallowComparer(a, b) {\n return deepEqual(a, b, 1);\n}\nfunction defaultComparer(a, b) {\n if (Object.is) {\n return Object.is(a, b);\n }\n return a === b ? a !== 0 || 1 / a === 1 / b : a !== a && b !== b;\n}\nvar comparer = {\n identity: identityComparer,\n structural: structuralComparer,\n \"default\": defaultComparer,\n shallow: shallowComparer\n};\n\nfunction deepEnhancer(v, _, name) {\n // it is an observable already, done\n if (isObservable(v)) {\n return v;\n }\n // something that can be converted and mutated?\n if (Array.isArray(v)) {\n return observable.array(v, {\n name: name\n });\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, {\n name: name\n });\n }\n if (isES6Map(v)) {\n return observable.map(v, {\n name: name\n });\n }\n if (isES6Set(v)) {\n return observable.set(v, {\n name: name\n });\n }\n if (typeof v === \"function\" && !isAction(v) && !isFlow(v)) {\n if (isGenerator(v)) {\n return flow(v);\n } else {\n return autoAction(name, v);\n }\n }\n return v;\n}\nfunction shallowEnhancer(v, _, name) {\n if (v === undefined || v === null) {\n return v;\n }\n if (isObservableObject(v) || isObservableArray(v) || isObservableMap(v) || isObservableSet(v)) {\n return v;\n }\n if (Array.isArray(v)) {\n return observable.array(v, {\n name: name,\n deep: false\n });\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, {\n name: name,\n deep: false\n });\n }\n if (isES6Map(v)) {\n return observable.map(v, {\n name: name,\n deep: false\n });\n }\n if (isES6Set(v)) {\n return observable.set(v, {\n name: name,\n deep: false\n });\n }\n if (process.env.NODE_ENV !== \"production\") {\n die(\"The shallow modifier / decorator can only used in combination with arrays, objects, maps and sets\");\n }\n}\nfunction referenceEnhancer(newValue) {\n // never turn into an observable\n return newValue;\n}\nfunction refStructEnhancer(v, oldValue) {\n if (process.env.NODE_ENV !== \"production\" && isObservable(v)) {\n die(\"observable.struct should not be used with observable values\");\n }\n if (deepEqual(v, oldValue)) {\n return oldValue;\n }\n return v;\n}\n\nvar OVERRIDE = \"override\";\nvar override = /*#__PURE__*/createDecoratorAnnotation({\n annotationType_: OVERRIDE,\n make_: make_,\n extend_: extend_,\n decorate_20223_: decorate_20223_\n});\nfunction isOverride(annotation) {\n return annotation.annotationType_ === OVERRIDE;\n}\nfunction make_(adm, key) {\n // Must not be plain object\n if (process.env.NODE_ENV !== \"production\" && adm.isPlainObject_) {\n die(\"Cannot apply '\" + this.annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + this.annotationType_ + \"' cannot be used on plain objects.\"));\n }\n // Must override something\n if (process.env.NODE_ENV !== \"production\" && !hasProp(adm.appliedAnnotations_, key)) {\n die(\"'\" + adm.name_ + \".\" + key.toString() + \"' is annotated with '\" + this.annotationType_ + \"', \" + \"but no such annotated member was found on prototype.\");\n }\n return 0 /* MakeResult.Cancel */;\n}\n\nfunction extend_(adm, key, descriptor, proxyTrap) {\n die(\"'\" + this.annotationType_ + \"' can only be used with 'makeObservable'\");\n}\nfunction decorate_20223_(desc, context) {\n console.warn(\"'\" + this.annotationType_ + \"' cannot be used with decorators - this is a no-op\");\n}\n\nfunction createActionAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$1,\n extend_: extend_$1,\n decorate_20223_: decorate_20223_$1\n };\n}\nfunction make_$1(adm, key, descriptor, source) {\n var _this$options_;\n // bound\n if ((_this$options_ = this.options_) != null && _this$options_.bound) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* MakeResult.Cancel */ : 1 /* MakeResult.Break */;\n }\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* MakeResult.Cancel */ : 2 /* MakeResult.Continue */;\n }\n // prototype\n if (isAction(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return 1 /* MakeResult.Break */;\n }\n\n var actionDescriptor = createActionDescriptor(adm, this, key, descriptor, false);\n defineProperty(source, key, actionDescriptor);\n return 2 /* MakeResult.Continue */;\n}\n\nfunction extend_$1(adm, key, descriptor, proxyTrap) {\n var actionDescriptor = createActionDescriptor(adm, this, key, descriptor);\n return adm.defineProperty_(key, actionDescriptor, proxyTrap);\n}\nfunction decorate_20223_$1(mthd, context) {\n if (process.env.NODE_ENV !== \"production\") {\n assert20223DecoratorType(context, [\"method\", \"field\"]);\n }\n var kind = context.kind,\n name = context.name,\n addInitializer = context.addInitializer;\n var ann = this;\n var _createAction = function _createAction(m) {\n var _ann$options_$name, _ann$options_, _ann$options_$autoAct, _ann$options_2;\n return createAction((_ann$options_$name = (_ann$options_ = ann.options_) == null ? void 0 : _ann$options_.name) != null ? _ann$options_$name : name.toString(), m, (_ann$options_$autoAct = (_ann$options_2 = ann.options_) == null ? void 0 : _ann$options_2.autoAction) != null ? _ann$options_$autoAct : false);\n };\n // Backwards/Legacy behavior, expects makeObservable(this)\n if (kind == \"field\") {\n addInitializer(function () {\n storeAnnotation(this, name, ann);\n });\n return;\n }\n if (kind == \"method\") {\n var _this$options_2;\n if (!isAction(mthd)) {\n mthd = _createAction(mthd);\n }\n if ((_this$options_2 = this.options_) != null && _this$options_2.bound) {\n addInitializer(function () {\n var self = this;\n var bound = self[name].bind(self);\n bound.isMobxAction = true;\n self[name] = bound;\n });\n }\n return mthd;\n }\n die(\"Cannot apply '\" + ann.annotationType_ + \"' to '\" + String(name) + \"' (kind: \" + kind + \"):\" + (\"\\n'\" + ann.annotationType_ + \"' can only be used on properties with a function value.\"));\n}\nfunction assertActionDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var value = _ref2.value;\n if (process.env.NODE_ENV !== \"production\" && !isFunction(value)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on properties with a function value.\"));\n }\n}\nfunction createActionDescriptor(adm, annotation, key, descriptor,\n// provides ability to disable safeDescriptors for prototypes\nsafeDescriptors) {\n var _annotation$options_, _annotation$options_$, _annotation$options_2, _annotation$options_$2, _annotation$options_3, _annotation$options_4, _adm$proxy_2;\n if (safeDescriptors === void 0) {\n safeDescriptors = globalState.safeDescriptors;\n }\n assertActionDescriptor(adm, annotation, key, descriptor);\n var value = descriptor.value;\n if ((_annotation$options_ = annotation.options_) != null && _annotation$options_.bound) {\n var _adm$proxy_;\n value = value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n }\n return {\n value: createAction((_annotation$options_$ = (_annotation$options_2 = annotation.options_) == null ? void 0 : _annotation$options_2.name) != null ? _annotation$options_$ : key.toString(), value, (_annotation$options_$2 = (_annotation$options_3 = annotation.options_) == null ? void 0 : _annotation$options_3.autoAction) != null ? _annotation$options_$2 : false,\n // https://github.com/mobxjs/mobx/discussions/3140\n (_annotation$options_4 = annotation.options_) != null && _annotation$options_4.bound ? (_adm$proxy_2 = adm.proxy_) != null ? _adm$proxy_2 : adm.target_ : undefined),\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n };\n}\n\nfunction createFlowAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$2,\n extend_: extend_$2,\n decorate_20223_: decorate_20223_$2\n };\n}\nfunction make_$2(adm, key, descriptor, source) {\n var _this$options_;\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* MakeResult.Cancel */ : 2 /* MakeResult.Continue */;\n }\n // prototype\n // bound - must annotate protos to support super.flow()\n if ((_this$options_ = this.options_) != null && _this$options_.bound && (!hasProp(adm.target_, key) || !isFlow(adm.target_[key]))) {\n if (this.extend_(adm, key, descriptor, false) === null) {\n return 0 /* MakeResult.Cancel */;\n }\n }\n\n if (isFlow(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return 1 /* MakeResult.Break */;\n }\n\n var flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, false, false);\n defineProperty(source, key, flowDescriptor);\n return 2 /* MakeResult.Continue */;\n}\n\nfunction extend_$2(adm, key, descriptor, proxyTrap) {\n var _this$options_2;\n var flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, (_this$options_2 = this.options_) == null ? void 0 : _this$options_2.bound);\n return adm.defineProperty_(key, flowDescriptor, proxyTrap);\n}\nfunction decorate_20223_$2(mthd, context) {\n var _this$options_3;\n if (process.env.NODE_ENV !== \"production\") {\n assert20223DecoratorType(context, [\"method\"]);\n }\n var name = context.name,\n addInitializer = context.addInitializer;\n if (!isFlow(mthd)) {\n mthd = flow(mthd);\n }\n if ((_this$options_3 = this.options_) != null && _this$options_3.bound) {\n addInitializer(function () {\n var self = this;\n var bound = self[name].bind(self);\n bound.isMobXFlow = true;\n self[name] = bound;\n });\n }\n return mthd;\n}\nfunction assertFlowDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var value = _ref2.value;\n if (process.env.NODE_ENV !== \"production\" && !isFunction(value)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on properties with a generator function value.\"));\n }\n}\nfunction createFlowDescriptor(adm, annotation, key, descriptor, bound,\n// provides ability to disable safeDescriptors for prototypes\nsafeDescriptors) {\n if (safeDescriptors === void 0) {\n safeDescriptors = globalState.safeDescriptors;\n }\n assertFlowDescriptor(adm, annotation, key, descriptor);\n var value = descriptor.value;\n // In case of flow.bound, the descriptor can be from already annotated prototype\n if (!isFlow(value)) {\n value = flow(value);\n }\n if (bound) {\n var _adm$proxy_;\n // We do not keep original function around, so we bind the existing flow\n value = value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n // This is normally set by `flow`, but `bind` returns new function...\n value.isMobXFlow = true;\n }\n return {\n value: value,\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n };\n}\n\nfunction createComputedAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$3,\n extend_: extend_$3,\n decorate_20223_: decorate_20223_$3\n };\n}\nfunction make_$3(adm, key, descriptor) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* MakeResult.Cancel */ : 1 /* MakeResult.Break */;\n}\n\nfunction extend_$3(adm, key, descriptor, proxyTrap) {\n assertComputedDescriptor(adm, this, key, descriptor);\n return adm.defineComputedProperty_(key, _extends({}, this.options_, {\n get: descriptor.get,\n set: descriptor.set\n }), proxyTrap);\n}\nfunction decorate_20223_$3(get, context) {\n if (process.env.NODE_ENV !== \"production\") {\n assert20223DecoratorType(context, [\"getter\"]);\n }\n var ann = this;\n var key = context.name,\n addInitializer = context.addInitializer;\n addInitializer(function () {\n var adm = asObservableObject(this)[$mobx];\n var options = _extends({}, ann.options_, {\n get: get,\n context: this\n });\n options.name || (options.name = process.env.NODE_ENV !== \"production\" ? adm.name_ + \".\" + key.toString() : \"ObservableObject.\" + key.toString());\n adm.values_.set(key, new ComputedValue(options));\n });\n return function () {\n return this[$mobx].getObservablePropValue_(key);\n };\n}\nfunction assertComputedDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var get = _ref2.get;\n if (process.env.NODE_ENV !== \"production\" && !get) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on getter(+setter) properties.\"));\n }\n}\n\nfunction createObservableAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$4,\n extend_: extend_$4,\n decorate_20223_: decorate_20223_$4\n };\n}\nfunction make_$4(adm, key, descriptor) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* MakeResult.Cancel */ : 1 /* MakeResult.Break */;\n}\n\nfunction extend_$4(adm, key, descriptor, proxyTrap) {\n var _this$options_$enhanc, _this$options_;\n assertObservableDescriptor(adm, this, key, descriptor);\n return adm.defineObservableProperty_(key, descriptor.value, (_this$options_$enhanc = (_this$options_ = this.options_) == null ? void 0 : _this$options_.enhancer) != null ? _this$options_$enhanc : deepEnhancer, proxyTrap);\n}\nfunction decorate_20223_$4(desc, context) {\n if (process.env.NODE_ENV !== \"production\") {\n if (context.kind === \"field\") {\n throw die(\"Please use `@observable accessor \" + String(context.name) + \"` instead of `@observable \" + String(context.name) + \"`\");\n }\n assert20223DecoratorType(context, [\"accessor\"]);\n }\n var ann = this;\n var kind = context.kind,\n name = context.name;\n // The laziness here is not ideal... It's a workaround to how 2022.3 Decorators are implemented:\n // `addInitializer` callbacks are executed _before_ any accessors are defined (instead of the ideal-for-us right after each).\n // This means that, if we were to do our stuff in an `addInitializer`, we'd attempt to read a private slot\n // before it has been initialized. The runtime doesn't like that and throws a `Cannot read private member\n // from an object whose class did not declare it` error.\n // TODO: it seems that this will not be required anymore in the final version of the spec\n // See TODO: link\n var initializedObjects = new WeakSet();\n function initializeObservable(target, value) {\n var _ann$options_$enhance, _ann$options_;\n var adm = asObservableObject(target)[$mobx];\n var observable = new ObservableValue(value, (_ann$options_$enhance = (_ann$options_ = ann.options_) == null ? void 0 : _ann$options_.enhancer) != null ? _ann$options_$enhance : deepEnhancer, process.env.NODE_ENV !== \"production\" ? adm.name_ + \".\" + name.toString() : \"ObservableObject.\" + name.toString(), false);\n adm.values_.set(name, observable);\n initializedObjects.add(target);\n }\n if (kind == \"accessor\") {\n return {\n get: function get() {\n if (!initializedObjects.has(this)) {\n initializeObservable(this, desc.get.call(this));\n }\n return this[$mobx].getObservablePropValue_(name);\n },\n set: function set(value) {\n if (!initializedObjects.has(this)) {\n initializeObservable(this, value);\n }\n return this[$mobx].setObservablePropValue_(name, value);\n },\n init: function init(value) {\n if (!initializedObjects.has(this)) {\n initializeObservable(this, value);\n }\n return value;\n }\n };\n }\n return;\n}\nfunction assertObservableDescriptor(adm, _ref, key, descriptor) {\n var annotationType_ = _ref.annotationType_;\n if (process.env.NODE_ENV !== \"production\" && !(\"value\" in descriptor)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' cannot be used on getter/setter properties\"));\n }\n}\n\nvar AUTO = \"true\";\nvar autoAnnotation = /*#__PURE__*/createAutoAnnotation();\nfunction createAutoAnnotation(options) {\n return {\n annotationType_: AUTO,\n options_: options,\n make_: make_$5,\n extend_: extend_$5,\n decorate_20223_: decorate_20223_$5\n };\n}\nfunction make_$5(adm, key, descriptor, source) {\n var _this$options_3, _this$options_4;\n // getter -> computed\n if (descriptor.get) {\n return computed.make_(adm, key, descriptor, source);\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.make_\n var set = createAction(key.toString(), descriptor.set);\n // own\n if (source === adm.target_) {\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: set\n }) === null ? 0 /* MakeResult.Cancel */ : 2 /* MakeResult.Continue */;\n }\n // proto\n defineProperty(source, key, {\n configurable: true,\n set: set\n });\n return 2 /* MakeResult.Continue */;\n }\n // function on proto -> autoAction/flow\n if (source !== adm.target_ && typeof descriptor.value === \"function\") {\n var _this$options_2;\n if (isGenerator(descriptor.value)) {\n var _this$options_;\n var flowAnnotation = (_this$options_ = this.options_) != null && _this$options_.autoBind ? flow.bound : flow;\n return flowAnnotation.make_(adm, key, descriptor, source);\n }\n var actionAnnotation = (_this$options_2 = this.options_) != null && _this$options_2.autoBind ? autoAction.bound : autoAction;\n return actionAnnotation.make_(adm, key, descriptor, source);\n }\n // other -> observable\n // Copy props from proto as well, see test:\n // \"decorate should work with Object.create\"\n var observableAnnotation = ((_this$options_3 = this.options_) == null ? void 0 : _this$options_3.deep) === false ? observable.ref : observable;\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && (_this$options_4 = this.options_) != null && _this$options_4.autoBind) {\n var _adm$proxy_;\n descriptor.value = descriptor.value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n }\n return observableAnnotation.make_(adm, key, descriptor, source);\n}\nfunction extend_$5(adm, key, descriptor, proxyTrap) {\n var _this$options_5, _this$options_6;\n // getter -> computed\n if (descriptor.get) {\n return computed.extend_(adm, key, descriptor, proxyTrap);\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.extend_\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: createAction(key.toString(), descriptor.set)\n }, proxyTrap);\n }\n // other -> observable\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && (_this$options_5 = this.options_) != null && _this$options_5.autoBind) {\n var _adm$proxy_2;\n descriptor.value = descriptor.value.bind((_adm$proxy_2 = adm.proxy_) != null ? _adm$proxy_2 : adm.target_);\n }\n var observableAnnotation = ((_this$options_6 = this.options_) == null ? void 0 : _this$options_6.deep) === false ? observable.ref : observable;\n return observableAnnotation.extend_(adm, key, descriptor, proxyTrap);\n}\nfunction decorate_20223_$5(desc, context) {\n die(\"'\" + this.annotationType_ + \"' cannot be used as a decorator\");\n}\n\nvar OBSERVABLE = \"observable\";\nvar OBSERVABLE_REF = \"observable.ref\";\nvar OBSERVABLE_SHALLOW = \"observable.shallow\";\nvar OBSERVABLE_STRUCT = \"observable.struct\";\n// Predefined bags of create observable options, to avoid allocating temporarily option objects\n// in the majority of cases\nvar defaultCreateObservableOptions = {\n deep: true,\n name: undefined,\n defaultDecorator: undefined,\n proxy: true\n};\nObject.freeze(defaultCreateObservableOptions);\nfunction asCreateObservableOptions(thing) {\n return thing || defaultCreateObservableOptions;\n}\nvar observableAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE);\nvar observableRefAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_REF, {\n enhancer: referenceEnhancer\n});\nvar observableShallowAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_SHALLOW, {\n enhancer: shallowEnhancer\n});\nvar observableStructAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_STRUCT, {\n enhancer: refStructEnhancer\n});\nvar observableDecoratorAnnotation = /*#__PURE__*/createDecoratorAnnotation(observableAnnotation);\nfunction getEnhancerFromOptions(options) {\n return options.deep === true ? deepEnhancer : options.deep === false ? referenceEnhancer : getEnhancerFromAnnotation(options.defaultDecorator);\n}\nfunction getAnnotationFromOptions(options) {\n var _options$defaultDecor;\n return options ? (_options$defaultDecor = options.defaultDecorator) != null ? _options$defaultDecor : createAutoAnnotation(options) : undefined;\n}\nfunction getEnhancerFromAnnotation(annotation) {\n var _annotation$options_$, _annotation$options_;\n return !annotation ? deepEnhancer : (_annotation$options_$ = (_annotation$options_ = annotation.options_) == null ? void 0 : _annotation$options_.enhancer) != null ? _annotation$options_$ : deepEnhancer;\n}\n/**\n * Turns an object, array or function into a reactive structure.\n * @param v the value which should become observable.\n */\nfunction createObservable(v, arg2, arg3) {\n // @observable someProp; (2022.3 Decorators)\n if (is20223Decorator(arg2)) {\n return observableAnnotation.decorate_20223_(v, arg2);\n }\n // @observable someProp;\n if (isStringish(arg2)) {\n storeAnnotation(v, arg2, observableAnnotation);\n return;\n }\n // already observable - ignore\n if (isObservable(v)) {\n return v;\n }\n // plain object\n if (isPlainObject(v)) {\n return observable.object(v, arg2, arg3);\n }\n // Array\n if (Array.isArray(v)) {\n return observable.array(v, arg2);\n }\n // Map\n if (isES6Map(v)) {\n return observable.map(v, arg2);\n }\n // Set\n if (isES6Set(v)) {\n return observable.set(v, arg2);\n }\n // other object - ignore\n if (typeof v === \"object\" && v !== null) {\n return v;\n }\n // anything else\n return observable.box(v, arg2);\n}\nassign(createObservable, observableDecoratorAnnotation);\nvar observableFactories = {\n box: function box(value, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableValue(value, getEnhancerFromOptions(o), o.name, true, o.equals);\n },\n array: function array(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return (globalState.useProxies === false || o.proxy === false ? createLegacyArray : createObservableArray)(initialValues, getEnhancerFromOptions(o), o.name);\n },\n map: function map(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableMap(initialValues, getEnhancerFromOptions(o), o.name);\n },\n set: function set(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableSet(initialValues, getEnhancerFromOptions(o), o.name);\n },\n object: function object(props, decorators, options) {\n return initObservable(function () {\n return extendObservable(globalState.useProxies === false || (options == null ? void 0 : options.proxy) === false ? asObservableObject({}, options) : asDynamicObservableObject({}, options), props, decorators);\n });\n },\n ref: /*#__PURE__*/createDecoratorAnnotation(observableRefAnnotation),\n shallow: /*#__PURE__*/createDecoratorAnnotation(observableShallowAnnotation),\n deep: observableDecoratorAnnotation,\n struct: /*#__PURE__*/createDecoratorAnnotation(observableStructAnnotation)\n};\n// eslint-disable-next-line\nvar observable = /*#__PURE__*/assign(createObservable, observableFactories);\n\nvar COMPUTED = \"computed\";\nvar COMPUTED_STRUCT = \"computed.struct\";\nvar computedAnnotation = /*#__PURE__*/createComputedAnnotation(COMPUTED);\nvar computedStructAnnotation = /*#__PURE__*/createComputedAnnotation(COMPUTED_STRUCT, {\n equals: comparer.structural\n});\n/**\n * Decorator for class properties: @computed get value() { return expr; }.\n * For legacy purposes also invokable as ES5 observable created: `computed(() => expr)`;\n */\nvar computed = function computed(arg1, arg2) {\n if (is20223Decorator(arg2)) {\n // @computed (2022.3 Decorators)\n return computedAnnotation.decorate_20223_(arg1, arg2);\n }\n if (isStringish(arg2)) {\n // @computed\n return storeAnnotation(arg1, arg2, computedAnnotation);\n }\n if (isPlainObject(arg1)) {\n // @computed({ options })\n return createDecoratorAnnotation(createComputedAnnotation(COMPUTED, arg1));\n }\n // computed(expr, options?)\n if (process.env.NODE_ENV !== \"production\") {\n if (!isFunction(arg1)) {\n die(\"First argument to `computed` should be an expression.\");\n }\n if (isFunction(arg2)) {\n die(\"A setter as second argument is no longer supported, use `{ set: fn }` option instead\");\n }\n }\n var opts = isPlainObject(arg2) ? arg2 : {};\n opts.get = arg1;\n opts.name || (opts.name = arg1.name || \"\"); /* for generated name */\n return new ComputedValue(opts);\n};\nObject.assign(computed, computedAnnotation);\ncomputed.struct = /*#__PURE__*/createDecoratorAnnotation(computedStructAnnotation);\n\nvar _getDescriptor$config, _getDescriptor;\n// we don't use globalState for these in order to avoid possible issues with multiple\n// mobx versions\nvar currentActionId = 0;\nvar nextActionId = 1;\nvar isFunctionNameConfigurable = (_getDescriptor$config = (_getDescriptor = /*#__PURE__*/getDescriptor(function () {}, \"name\")) == null ? void 0 : _getDescriptor.configurable) != null ? _getDescriptor$config : false;\n// we can safely recycle this object\nvar tmpNameDescriptor = {\n value: \"action\",\n configurable: true,\n writable: false,\n enumerable: false\n};\nfunction createAction(actionName, fn, autoAction, ref) {\n if (autoAction === void 0) {\n autoAction = false;\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!isFunction(fn)) {\n die(\"`action` can only be invoked on functions\");\n }\n if (typeof actionName !== \"string\" || !actionName) {\n die(\"actions should have valid names, got: '\" + actionName + \"'\");\n }\n }\n function res() {\n return executeAction(actionName, autoAction, fn, ref || this, arguments);\n }\n res.isMobxAction = true;\n res.toString = function () {\n return fn.toString();\n };\n if (isFunctionNameConfigurable) {\n tmpNameDescriptor.value = actionName;\n defineProperty(res, \"name\", tmpNameDescriptor);\n }\n return res;\n}\nfunction executeAction(actionName, canRunAsDerivation, fn, scope, args) {\n var runInfo = _startAction(actionName, canRunAsDerivation, scope, args);\n try {\n return fn.apply(scope, args);\n } catch (err) {\n runInfo.error_ = err;\n throw err;\n } finally {\n _endAction(runInfo);\n }\n}\nfunction _startAction(actionName, canRunAsDerivation,\n// true for autoAction\nscope, args) {\n var notifySpy_ = process.env.NODE_ENV !== \"production\" && isSpyEnabled() && !!actionName;\n var startTime_ = 0;\n if (process.env.NODE_ENV !== \"production\" && notifySpy_) {\n startTime_ = Date.now();\n var flattenedArgs = args ? Array.from(args) : EMPTY_ARRAY;\n spyReportStart({\n type: ACTION,\n name: actionName,\n object: scope,\n arguments: flattenedArgs\n });\n }\n var prevDerivation_ = globalState.trackingDerivation;\n var runAsAction = !canRunAsDerivation || !prevDerivation_;\n startBatch();\n var prevAllowStateChanges_ = globalState.allowStateChanges; // by default preserve previous allow\n if (runAsAction) {\n untrackedStart();\n prevAllowStateChanges_ = allowStateChangesStart(true);\n }\n var prevAllowStateReads_ = allowStateReadsStart(true);\n var runInfo = {\n runAsAction_: runAsAction,\n prevDerivation_: prevDerivation_,\n prevAllowStateChanges_: prevAllowStateChanges_,\n prevAllowStateReads_: prevAllowStateReads_,\n notifySpy_: notifySpy_,\n startTime_: startTime_,\n actionId_: nextActionId++,\n parentActionId_: currentActionId\n };\n currentActionId = runInfo.actionId_;\n return runInfo;\n}\nfunction _endAction(runInfo) {\n if (currentActionId !== runInfo.actionId_) {\n die(30);\n }\n currentActionId = runInfo.parentActionId_;\n if (runInfo.error_ !== undefined) {\n globalState.suppressReactionErrors = true;\n }\n allowStateChangesEnd(runInfo.prevAllowStateChanges_);\n allowStateReadsEnd(runInfo.prevAllowStateReads_);\n endBatch();\n if (runInfo.runAsAction_) {\n untrackedEnd(runInfo.prevDerivation_);\n }\n if (process.env.NODE_ENV !== \"production\" && runInfo.notifySpy_) {\n spyReportEnd({\n time: Date.now() - runInfo.startTime_\n });\n }\n globalState.suppressReactionErrors = false;\n}\nfunction allowStateChanges(allowStateChanges, func) {\n var prev = allowStateChangesStart(allowStateChanges);\n try {\n return func();\n } finally {\n allowStateChangesEnd(prev);\n }\n}\nfunction allowStateChangesStart(allowStateChanges) {\n var prev = globalState.allowStateChanges;\n globalState.allowStateChanges = allowStateChanges;\n return prev;\n}\nfunction allowStateChangesEnd(prev) {\n globalState.allowStateChanges = prev;\n}\n\nvar _Symbol$toPrimitive;\nvar CREATE = \"create\";\n_Symbol$toPrimitive = Symbol.toPrimitive;\nvar ObservableValue = /*#__PURE__*/function (_Atom) {\n _inheritsLoose(ObservableValue, _Atom);\n function ObservableValue(value, enhancer, name_, notifySpy, equals) {\n var _this;\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"ObservableValue@\" + getNextId() : \"ObservableValue\";\n }\n if (notifySpy === void 0) {\n notifySpy = true;\n }\n if (equals === void 0) {\n equals = comparer[\"default\"];\n }\n _this = _Atom.call(this, name_) || this;\n _this.enhancer = void 0;\n _this.name_ = void 0;\n _this.equals = void 0;\n _this.hasUnreportedChange_ = false;\n _this.interceptors_ = void 0;\n _this.changeListeners_ = void 0;\n _this.value_ = void 0;\n _this.dehancer = void 0;\n _this.enhancer = enhancer;\n _this.name_ = name_;\n _this.equals = equals;\n _this.value_ = enhancer(value, undefined, name_);\n if (process.env.NODE_ENV !== \"production\" && notifySpy && isSpyEnabled()) {\n // only notify spy if this is a stand-alone observable\n spyReport({\n type: CREATE,\n object: _assertThisInitialized(_this),\n observableKind: \"value\",\n debugObjectName: _this.name_,\n newValue: \"\" + _this.value_\n });\n }\n return _this;\n }\n var _proto = ObservableValue.prototype;\n _proto.dehanceValue = function dehanceValue(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.set = function set(newValue) {\n var oldValue = this.value_;\n newValue = this.prepareNewValue_(newValue);\n if (newValue !== globalState.UNCHANGED) {\n var notifySpy = isSpyEnabled();\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart({\n type: UPDATE,\n object: this,\n observableKind: \"value\",\n debugObjectName: this.name_,\n newValue: newValue,\n oldValue: oldValue\n });\n }\n this.setNewValue_(newValue);\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n };\n _proto.prepareNewValue_ = function prepareNewValue_(newValue) {\n checkIfStateModificationsAreAllowed(this);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this,\n type: UPDATE,\n newValue: newValue\n });\n if (!change) {\n return globalState.UNCHANGED;\n }\n newValue = change.newValue;\n }\n // apply modifier\n newValue = this.enhancer(newValue, this.value_, this.name_);\n return this.equals(this.value_, newValue) ? globalState.UNCHANGED : newValue;\n };\n _proto.setNewValue_ = function setNewValue_(newValue) {\n var oldValue = this.value_;\n this.value_ = newValue;\n this.reportChanged();\n if (hasListeners(this)) {\n notifyListeners(this, {\n type: UPDATE,\n object: this,\n newValue: newValue,\n oldValue: oldValue\n });\n }\n };\n _proto.get = function get() {\n this.reportObserved();\n return this.dehanceValue(this.value_);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (fireImmediately) {\n listener({\n observableKind: \"value\",\n debugObjectName: this.name_,\n object: this,\n type: UPDATE,\n newValue: this.value_,\n oldValue: undefined\n });\n }\n return registerListener(this, listener);\n };\n _proto.raw = function raw() {\n // used by MST ot get undehanced value\n return this.value_;\n };\n _proto.toJSON = function toJSON() {\n return this.get();\n };\n _proto.toString = function toString() {\n return this.name_ + \"[\" + this.value_ + \"]\";\n };\n _proto.valueOf = function valueOf() {\n return toPrimitive(this.get());\n };\n _proto[_Symbol$toPrimitive] = function () {\n return this.valueOf();\n };\n return ObservableValue;\n}(Atom);\nvar isObservableValue = /*#__PURE__*/createInstanceofPredicate(\"ObservableValue\", ObservableValue);\n\nvar _Symbol$toPrimitive$1;\n/**\n * A node in the state dependency root that observes other nodes, and can be observed itself.\n *\n * ComputedValue will remember the result of the computation for the duration of the batch, or\n * while being observed.\n *\n * During this time it will recompute only when one of its direct dependencies changed,\n * but only when it is being accessed with `ComputedValue.get()`.\n *\n * Implementation description:\n * 1. First time it's being accessed it will compute and remember result\n * give back remembered result until 2. happens\n * 2. First time any deep dependency change, propagate POSSIBLY_STALE to all observers, wait for 3.\n * 3. When it's being accessed, recompute if any shallow dependency changed.\n * if result changed: propagate STALE to all observers, that were POSSIBLY_STALE from the last step.\n * go to step 2. either way\n *\n * If at any point it's outside batch and it isn't observed: reset everything and go to 1.\n */\n_Symbol$toPrimitive$1 = Symbol.toPrimitive;\nvar ComputedValue = /*#__PURE__*/function () {\n // nodes we are looking at. Our value depends on these nodes\n // during tracking it's an array with new observed observers\n\n // to check for cycles\n\n // N.B: unminified as it is used by MST\n\n /**\n * Create a new computed value based on a function expression.\n *\n * The `name` property is for debug purposes only.\n *\n * The `equals` property specifies the comparer function to use to determine if a newly produced\n * value differs from the previous value. Two comparers are provided in the library; `defaultComparer`\n * compares based on identity comparison (===), and `structuralComparer` deeply compares the structure.\n * Structural comparison can be convenient if you always produce a new aggregated object and\n * don't want to notify observers if it is structurally the same.\n * This is useful for working with vectors, mouse coordinates etc.\n */\n function ComputedValue(options) {\n this.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n this.observing_ = [];\n this.newObserving_ = null;\n this.isBeingObserved_ = false;\n this.isPendingUnobservation_ = false;\n this.observers_ = new Set();\n this.diffValue_ = 0;\n this.runId_ = 0;\n this.lastAccessedBy_ = 0;\n this.lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n this.unboundDepsCount_ = 0;\n this.value_ = new CaughtException(null);\n this.name_ = void 0;\n this.triggeredBy_ = void 0;\n this.isComputing_ = false;\n this.isRunningSetter_ = false;\n this.derivation = void 0;\n this.setter_ = void 0;\n this.isTracing_ = TraceMode.NONE;\n this.scope_ = void 0;\n this.equals_ = void 0;\n this.requiresReaction_ = void 0;\n this.keepAlive_ = void 0;\n this.onBOL = void 0;\n this.onBUOL = void 0;\n if (!options.get) {\n die(31);\n }\n this.derivation = options.get;\n this.name_ = options.name || (process.env.NODE_ENV !== \"production\" ? \"ComputedValue@\" + getNextId() : \"ComputedValue\");\n if (options.set) {\n this.setter_ = createAction(process.env.NODE_ENV !== \"production\" ? this.name_ + \"-setter\" : \"ComputedValue-setter\", options.set);\n }\n this.equals_ = options.equals || (options.compareStructural || options.struct ? comparer.structural : comparer[\"default\"]);\n this.scope_ = options.context;\n this.requiresReaction_ = options.requiresReaction;\n this.keepAlive_ = !!options.keepAlive;\n }\n var _proto = ComputedValue.prototype;\n _proto.onBecomeStale_ = function onBecomeStale_() {\n propagateMaybeChanged(this);\n };\n _proto.onBO = function onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(function (listener) {\n return listener();\n });\n }\n };\n _proto.onBUO = function onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(function (listener) {\n return listener();\n });\n }\n }\n /**\n * Returns the current value of this computed value.\n * Will evaluate its computation first if needed.\n */;\n _proto.get = function get() {\n if (this.isComputing_) {\n die(32, this.name_, this.derivation);\n }\n if (globalState.inBatch === 0 &&\n // !globalState.trackingDerivatpion &&\n this.observers_.size === 0 && !this.keepAlive_) {\n if (shouldCompute(this)) {\n this.warnAboutUntrackedRead_();\n startBatch(); // See perf test 'computed memoization'\n this.value_ = this.computeValue_(false);\n endBatch();\n }\n } else {\n reportObserved(this);\n if (shouldCompute(this)) {\n var prevTrackingContext = globalState.trackingContext;\n if (this.keepAlive_ && !prevTrackingContext) {\n globalState.trackingContext = this;\n }\n if (this.trackAndCompute()) {\n propagateChangeConfirmed(this);\n }\n globalState.trackingContext = prevTrackingContext;\n }\n }\n var result = this.value_;\n if (isCaughtException(result)) {\n throw result.cause;\n }\n return result;\n };\n _proto.set = function set(value) {\n if (this.setter_) {\n if (this.isRunningSetter_) {\n die(33, this.name_);\n }\n this.isRunningSetter_ = true;\n try {\n this.setter_.call(this.scope_, value);\n } finally {\n this.isRunningSetter_ = false;\n }\n } else {\n die(34, this.name_);\n }\n };\n _proto.trackAndCompute = function trackAndCompute() {\n // N.B: unminified as it is used by MST\n var oldValue = this.value_;\n var wasSuspended = /* see #1208 */this.dependenciesState_ === IDerivationState_.NOT_TRACKING_;\n var newValue = this.computeValue_(true);\n var changed = wasSuspended || isCaughtException(oldValue) || isCaughtException(newValue) || !this.equals_(oldValue, newValue);\n if (changed) {\n this.value_ = newValue;\n if (process.env.NODE_ENV !== \"production\" && isSpyEnabled()) {\n spyReport({\n observableKind: \"computed\",\n debugObjectName: this.name_,\n object: this.scope_,\n type: \"update\",\n oldValue: oldValue,\n newValue: newValue\n });\n }\n }\n return changed;\n };\n _proto.computeValue_ = function computeValue_(track) {\n this.isComputing_ = true;\n // don't allow state changes during computation\n var prev = allowStateChangesStart(false);\n var res;\n if (track) {\n res = trackDerivedFunction(this, this.derivation, this.scope_);\n } else {\n if (globalState.disableErrorBoundaries === true) {\n res = this.derivation.call(this.scope_);\n } else {\n try {\n res = this.derivation.call(this.scope_);\n } catch (e) {\n res = new CaughtException(e);\n }\n }\n }\n allowStateChangesEnd(prev);\n this.isComputing_ = false;\n return res;\n };\n _proto.suspend_ = function suspend_() {\n if (!this.keepAlive_) {\n clearObserving(this);\n this.value_ = undefined; // don't hold on to computed value!\n if (process.env.NODE_ENV !== \"production\" && this.isTracing_ !== TraceMode.NONE) {\n console.log(\"[mobx.trace] Computed value '\" + this.name_ + \"' was suspended and it will recompute on the next access.\");\n }\n }\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n var _this = this;\n var firstTime = true;\n var prevValue = undefined;\n return autorun(function () {\n // TODO: why is this in a different place than the spyReport() function? in all other observables it's called in the same place\n var newValue = _this.get();\n if (!firstTime || fireImmediately) {\n var prevU = untrackedStart();\n listener({\n observableKind: \"computed\",\n debugObjectName: _this.name_,\n type: UPDATE,\n object: _this,\n newValue: newValue,\n oldValue: prevValue\n });\n untrackedEnd(prevU);\n }\n firstTime = false;\n prevValue = newValue;\n });\n };\n _proto.warnAboutUntrackedRead_ = function warnAboutUntrackedRead_() {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n if (this.isTracing_ !== TraceMode.NONE) {\n console.log(\"[mobx.trace] Computed value '\" + this.name_ + \"' is being read outside a reactive context. Doing a full recompute.\");\n }\n if (typeof this.requiresReaction_ === \"boolean\" ? this.requiresReaction_ : globalState.computedRequiresReaction) {\n console.warn(\"[mobx] Computed value '\" + this.name_ + \"' is being read outside a reactive context. Doing a full recompute.\");\n }\n };\n _proto.toString = function toString() {\n return this.name_ + \"[\" + this.derivation.toString() + \"]\";\n };\n _proto.valueOf = function valueOf() {\n return toPrimitive(this.get());\n };\n _proto[_Symbol$toPrimitive$1] = function () {\n return this.valueOf();\n };\n return ComputedValue;\n}();\nvar isComputedValue = /*#__PURE__*/createInstanceofPredicate(\"ComputedValue\", ComputedValue);\n\nvar IDerivationState_;\n(function (IDerivationState_) {\n // before being run or (outside batch and not being observed)\n // at this point derivation is not holding any data about dependency tree\n IDerivationState_[IDerivationState_[\"NOT_TRACKING_\"] = -1] = \"NOT_TRACKING_\";\n // no shallow dependency changed since last computation\n // won't recalculate derivation\n // this is what makes mobx fast\n IDerivationState_[IDerivationState_[\"UP_TO_DATE_\"] = 0] = \"UP_TO_DATE_\";\n // some deep dependency changed, but don't know if shallow dependency changed\n // will require to check first if UP_TO_DATE or POSSIBLY_STALE\n // currently only ComputedValue will propagate POSSIBLY_STALE\n //\n // having this state is second big optimization:\n // don't have to recompute on every dependency change, but only when it's needed\n IDerivationState_[IDerivationState_[\"POSSIBLY_STALE_\"] = 1] = \"POSSIBLY_STALE_\";\n // A shallow dependency has changed since last computation and the derivation\n // will need to recompute when it's needed next.\n IDerivationState_[IDerivationState_[\"STALE_\"] = 2] = \"STALE_\";\n})(IDerivationState_ || (IDerivationState_ = {}));\nvar TraceMode;\n(function (TraceMode) {\n TraceMode[TraceMode[\"NONE\"] = 0] = \"NONE\";\n TraceMode[TraceMode[\"LOG\"] = 1] = \"LOG\";\n TraceMode[TraceMode[\"BREAK\"] = 2] = \"BREAK\";\n})(TraceMode || (TraceMode = {}));\nvar CaughtException = function CaughtException(cause) {\n this.cause = void 0;\n this.cause = cause;\n // Empty\n};\n\nfunction isCaughtException(e) {\n return e instanceof CaughtException;\n}\n/**\n * Finds out whether any dependency of the derivation has actually changed.\n * If dependenciesState is 1 then it will recalculate dependencies,\n * if any dependency changed it will propagate it by changing dependenciesState to 2.\n *\n * By iterating over the dependencies in the same order that they were reported and\n * stopping on the first change, all the recalculations are only called for ComputedValues\n * that will be tracked by derivation. That is because we assume that if the first x\n * dependencies of the derivation doesn't change then the derivation should run the same way\n * up until accessing x-th dependency.\n */\nfunction shouldCompute(derivation) {\n switch (derivation.dependenciesState_) {\n case IDerivationState_.UP_TO_DATE_:\n return false;\n case IDerivationState_.NOT_TRACKING_:\n case IDerivationState_.STALE_:\n return true;\n case IDerivationState_.POSSIBLY_STALE_:\n {\n // state propagation can occur outside of action/reactive context #2195\n var prevAllowStateReads = allowStateReadsStart(true);\n var prevUntracked = untrackedStart(); // no need for those computeds to be reported, they will be picked up in trackDerivedFunction.\n var obs = derivation.observing_,\n l = obs.length;\n for (var i = 0; i < l; i++) {\n var obj = obs[i];\n if (isComputedValue(obj)) {\n if (globalState.disableErrorBoundaries) {\n obj.get();\n } else {\n try {\n obj.get();\n } catch (e) {\n // we are not interested in the value *or* exception at this moment, but if there is one, notify all\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return true;\n }\n }\n // if ComputedValue `obj` actually changed it will be computed and propagated to its observers.\n // and `derivation` is an observer of `obj`\n // invariantShouldCompute(derivation)\n if (derivation.dependenciesState_ === IDerivationState_.STALE_) {\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return true;\n }\n }\n }\n changeDependenciesStateTo0(derivation);\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return false;\n }\n }\n}\nfunction isComputingDerivation() {\n return globalState.trackingDerivation !== null; // filter out actions inside computations\n}\n\nfunction checkIfStateModificationsAreAllowed(atom) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n var hasObservers = atom.observers_.size > 0;\n // Should not be possible to change observed state outside strict mode, except during initialization, see #563\n if (!globalState.allowStateChanges && (hasObservers || globalState.enforceActions === \"always\")) {\n console.warn(\"[MobX] \" + (globalState.enforceActions ? \"Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: \" : \"Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: \") + atom.name_);\n }\n}\nfunction checkIfStateReadsAreAllowed(observable) {\n if (process.env.NODE_ENV !== \"production\" && !globalState.allowStateReads && globalState.observableRequiresReaction) {\n console.warn(\"[mobx] Observable '\" + observable.name_ + \"' being read outside a reactive context.\");\n }\n}\n/**\n * Executes the provided function `f` and tracks which observables are being accessed.\n * The tracking information is stored on the `derivation` object and the derivation is registered\n * as observer of any of the accessed observables.\n */\nfunction trackDerivedFunction(derivation, f, context) {\n var prevAllowStateReads = allowStateReadsStart(true);\n // pre allocate array allocation + room for variation in deps\n // array will be trimmed by bindDependencies\n changeDependenciesStateTo0(derivation);\n derivation.newObserving_ = new Array(derivation.observing_.length + 100);\n derivation.unboundDepsCount_ = 0;\n derivation.runId_ = ++globalState.runId;\n var prevTracking = globalState.trackingDerivation;\n globalState.trackingDerivation = derivation;\n globalState.inBatch++;\n var result;\n if (globalState.disableErrorBoundaries === true) {\n result = f.call(context);\n } else {\n try {\n result = f.call(context);\n } catch (e) {\n result = new CaughtException(e);\n }\n }\n globalState.inBatch--;\n globalState.trackingDerivation = prevTracking;\n bindDependencies(derivation);\n warnAboutDerivationWithoutDependencies(derivation);\n allowStateReadsEnd(prevAllowStateReads);\n return result;\n}\nfunction warnAboutDerivationWithoutDependencies(derivation) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n if (derivation.observing_.length !== 0) {\n return;\n }\n if (typeof derivation.requiresObservable_ === \"boolean\" ? derivation.requiresObservable_ : globalState.reactionRequiresObservable) {\n console.warn(\"[mobx] Derivation '\" + derivation.name_ + \"' is created/updated without reading any observable value.\");\n }\n}\n/**\n * diffs newObserving with observing.\n * update observing to be newObserving with unique observables\n * notify observers that become observed/unobserved\n */\nfunction bindDependencies(derivation) {\n // invariant(derivation.dependenciesState !== IDerivationState.NOT_TRACKING, \"INTERNAL ERROR bindDependencies expects derivation.dependenciesState !== -1\");\n var prevObserving = derivation.observing_;\n var observing = derivation.observing_ = derivation.newObserving_;\n var lowestNewObservingDerivationState = IDerivationState_.UP_TO_DATE_;\n // Go through all new observables and check diffValue: (this list can contain duplicates):\n // 0: first occurrence, change to 1 and keep it\n // 1: extra occurrence, drop it\n var i0 = 0,\n l = derivation.unboundDepsCount_;\n for (var i = 0; i < l; i++) {\n var dep = observing[i];\n if (dep.diffValue_ === 0) {\n dep.diffValue_ = 1;\n if (i0 !== i) {\n observing[i0] = dep;\n }\n i0++;\n }\n // Upcast is 'safe' here, because if dep is IObservable, `dependenciesState` will be undefined,\n // not hitting the condition\n if (dep.dependenciesState_ > lowestNewObservingDerivationState) {\n lowestNewObservingDerivationState = dep.dependenciesState_;\n }\n }\n observing.length = i0;\n derivation.newObserving_ = null; // newObserving shouldn't be needed outside tracking (statement moved down to work around FF bug, see #614)\n // Go through all old observables and check diffValue: (it is unique after last bindDependencies)\n // 0: it's not in new observables, unobserve it\n // 1: it keeps being observed, don't want to notify it. change to 0\n l = prevObserving.length;\n while (l--) {\n var _dep = prevObserving[l];\n if (_dep.diffValue_ === 0) {\n removeObserver(_dep, derivation);\n }\n _dep.diffValue_ = 0;\n }\n // Go through all new observables and check diffValue: (now it should be unique)\n // 0: it was set to 0 in last loop. don't need to do anything.\n // 1: it wasn't observed, let's observe it. set back to 0\n while (i0--) {\n var _dep2 = observing[i0];\n if (_dep2.diffValue_ === 1) {\n _dep2.diffValue_ = 0;\n addObserver(_dep2, derivation);\n }\n }\n // Some new observed derivations may become stale during this derivation computation\n // so they have had no chance to propagate staleness (#916)\n if (lowestNewObservingDerivationState !== IDerivationState_.UP_TO_DATE_) {\n derivation.dependenciesState_ = lowestNewObservingDerivationState;\n derivation.onBecomeStale_();\n }\n}\nfunction clearObserving(derivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR clearObserving should be called only inside batch\");\n var obs = derivation.observing_;\n derivation.observing_ = [];\n var i = obs.length;\n while (i--) {\n removeObserver(obs[i], derivation);\n }\n derivation.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n}\nfunction untracked(action) {\n var prev = untrackedStart();\n try {\n return action();\n } finally {\n untrackedEnd(prev);\n }\n}\nfunction untrackedStart() {\n var prev = globalState.trackingDerivation;\n globalState.trackingDerivation = null;\n return prev;\n}\nfunction untrackedEnd(prev) {\n globalState.trackingDerivation = prev;\n}\nfunction allowStateReadsStart(allowStateReads) {\n var prev = globalState.allowStateReads;\n globalState.allowStateReads = allowStateReads;\n return prev;\n}\nfunction allowStateReadsEnd(prev) {\n globalState.allowStateReads = prev;\n}\n/**\n * needed to keep `lowestObserverState` correct. when changing from (2 or 1) to 0\n *\n */\nfunction changeDependenciesStateTo0(derivation) {\n if (derivation.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n return;\n }\n derivation.dependenciesState_ = IDerivationState_.UP_TO_DATE_;\n var obs = derivation.observing_;\n var i = obs.length;\n while (i--) {\n obs[i].lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n }\n}\n\n/**\n * These values will persist if global state is reset\n */\nvar persistentKeys = [\"mobxGuid\", \"spyListeners\", \"enforceActions\", \"computedRequiresReaction\", \"reactionRequiresObservable\", \"observableRequiresReaction\", \"allowStateReads\", \"disableErrorBoundaries\", \"runId\", \"UNCHANGED\", \"useProxies\"];\nvar MobXGlobals = function MobXGlobals() {\n this.version = 6;\n this.UNCHANGED = {};\n this.trackingDerivation = null;\n this.trackingContext = null;\n this.runId = 0;\n this.mobxGuid = 0;\n this.inBatch = 0;\n this.pendingUnobservations = [];\n this.pendingReactions = [];\n this.isRunningReactions = false;\n this.allowStateChanges = false;\n this.allowStateReads = true;\n this.enforceActions = true;\n this.spyListeners = [];\n this.globalReactionErrorHandlers = [];\n this.computedRequiresReaction = false;\n this.reactionRequiresObservable = false;\n this.observableRequiresReaction = false;\n this.disableErrorBoundaries = false;\n this.suppressReactionErrors = false;\n this.useProxies = true;\n this.verifyProxies = false;\n this.safeDescriptors = true;\n};\nvar canMergeGlobalState = true;\nvar isolateCalled = false;\nvar globalState = /*#__PURE__*/function () {\n var global = /*#__PURE__*/getGlobal();\n if (global.__mobxInstanceCount > 0 && !global.__mobxGlobals) {\n canMergeGlobalState = false;\n }\n if (global.__mobxGlobals && global.__mobxGlobals.version !== new MobXGlobals().version) {\n canMergeGlobalState = false;\n }\n if (!canMergeGlobalState) {\n // Because this is a IIFE we need to let isolateCalled a chance to change\n // so we run it after the event loop completed at least 1 iteration\n setTimeout(function () {\n if (!isolateCalled) {\n die(35);\n }\n }, 1);\n return new MobXGlobals();\n } else if (global.__mobxGlobals) {\n global.__mobxInstanceCount += 1;\n if (!global.__mobxGlobals.UNCHANGED) {\n global.__mobxGlobals.UNCHANGED = {};\n } // make merge backward compatible\n return global.__mobxGlobals;\n } else {\n global.__mobxInstanceCount = 1;\n return global.__mobxGlobals = /*#__PURE__*/new MobXGlobals();\n }\n}();\nfunction isolateGlobalState() {\n if (globalState.pendingReactions.length || globalState.inBatch || globalState.isRunningReactions) {\n die(36);\n }\n isolateCalled = true;\n if (canMergeGlobalState) {\n var global = getGlobal();\n if (--global.__mobxInstanceCount === 0) {\n global.__mobxGlobals = undefined;\n }\n globalState = new MobXGlobals();\n }\n}\nfunction getGlobalState() {\n return globalState;\n}\n/**\n * For testing purposes only; this will break the internal state of existing observables,\n * but can be used to get back at a stable state after throwing errors\n */\nfunction resetGlobalState() {\n var defaultGlobals = new MobXGlobals();\n for (var key in defaultGlobals) {\n if (persistentKeys.indexOf(key) === -1) {\n globalState[key] = defaultGlobals[key];\n }\n }\n globalState.allowStateChanges = !globalState.enforceActions;\n}\n\nfunction hasObservers(observable) {\n return observable.observers_ && observable.observers_.size > 0;\n}\nfunction getObservers(observable) {\n return observable.observers_;\n}\n// function invariantObservers(observable: IObservable) {\n// const list = observable.observers\n// const map = observable.observersIndexes\n// const l = list.length\n// for (let i = 0; i < l; i++) {\n// const id = list[i].__mapid\n// if (i) {\n// invariant(map[id] === i, \"INTERNAL ERROR maps derivation.__mapid to index in list\") // for performance\n// } else {\n// invariant(!(id in map), \"INTERNAL ERROR observer on index 0 shouldn't be held in map.\") // for performance\n// }\n// }\n// invariant(\n// list.length === 0 || Object.keys(map).length === list.length - 1,\n// \"INTERNAL ERROR there is no junk in map\"\n// )\n// }\nfunction addObserver(observable, node) {\n // invariant(node.dependenciesState !== -1, \"INTERNAL ERROR, can add only dependenciesState !== -1\");\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR add already added node\");\n // invariantObservers(observable);\n observable.observers_.add(node);\n if (observable.lowestObserverState_ > node.dependenciesState_) {\n observable.lowestObserverState_ = node.dependenciesState_;\n }\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR didn't add node\");\n}\n\nfunction removeObserver(observable, node) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR, remove should be called only inside batch\");\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR remove already removed node\");\n // invariantObservers(observable);\n observable.observers_[\"delete\"](node);\n if (observable.observers_.size === 0) {\n // deleting last observer\n queueForUnobservation(observable);\n }\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR remove already removed node2\");\n}\n\nfunction queueForUnobservation(observable) {\n if (observable.isPendingUnobservation_ === false) {\n // invariant(observable._observers.length === 0, \"INTERNAL ERROR, should only queue for unobservation unobserved observables\");\n observable.isPendingUnobservation_ = true;\n globalState.pendingUnobservations.push(observable);\n }\n}\n/**\n * Batch starts a transaction, at least for purposes of memoizing ComputedValues when nothing else does.\n * During a batch `onBecomeUnobserved` will be called at most once per observable.\n * Avoids unnecessary recalculations.\n */\nfunction startBatch() {\n globalState.inBatch++;\n}\nfunction endBatch() {\n if (--globalState.inBatch === 0) {\n runReactions();\n // the batch is actually about to finish, all unobserving should happen here.\n var list = globalState.pendingUnobservations;\n for (var i = 0; i < list.length; i++) {\n var observable = list[i];\n observable.isPendingUnobservation_ = false;\n if (observable.observers_.size === 0) {\n if (observable.isBeingObserved_) {\n // if this observable had reactive observers, trigger the hooks\n observable.isBeingObserved_ = false;\n observable.onBUO();\n }\n if (observable instanceof ComputedValue) {\n // computed values are automatically teared down when the last observer leaves\n // this process happens recursively, this computed might be the last observabe of another, etc..\n observable.suspend_();\n }\n }\n }\n globalState.pendingUnobservations = [];\n }\n}\nfunction reportObserved(observable) {\n checkIfStateReadsAreAllowed(observable);\n var derivation = globalState.trackingDerivation;\n if (derivation !== null) {\n /**\n * Simple optimization, give each derivation run an unique id (runId)\n * Check if last time this observable was accessed the same runId is used\n * if this is the case, the relation is already known\n */\n if (derivation.runId_ !== observable.lastAccessedBy_) {\n observable.lastAccessedBy_ = derivation.runId_;\n // Tried storing newObserving, or observing, or both as Set, but performance didn't come close...\n derivation.newObserving_[derivation.unboundDepsCount_++] = observable;\n if (!observable.isBeingObserved_ && globalState.trackingContext) {\n observable.isBeingObserved_ = true;\n observable.onBO();\n }\n }\n return observable.isBeingObserved_;\n } else if (observable.observers_.size === 0 && globalState.inBatch > 0) {\n queueForUnobservation(observable);\n }\n return false;\n}\n// function invariantLOS(observable: IObservable, msg: string) {\n// // it's expensive so better not run it in produciton. but temporarily helpful for testing\n// const min = getObservers(observable).reduce((a, b) => Math.min(a, b.dependenciesState), 2)\n// if (min >= observable.lowestObserverState) return // <- the only assumption about `lowestObserverState`\n// throw new Error(\n// \"lowestObserverState is wrong for \" +\n// msg +\n// \" because \" +\n// min +\n// \" < \" +\n// observable.lowestObserverState\n// )\n// }\n/**\n * NOTE: current propagation mechanism will in case of self reruning autoruns behave unexpectedly\n * It will propagate changes to observers from previous run\n * It's hard or maybe impossible (with reasonable perf) to get it right with current approach\n * Hopefully self reruning autoruns aren't a feature people should depend on\n * Also most basic use cases should be ok\n */\n// Called by Atom when its value changes\nfunction propagateChanged(observable) {\n // invariantLOS(observable, \"changed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return;\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_;\n // Ideally we use for..of here, but the downcompiled version is really slow...\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n if (process.env.NODE_ENV !== \"production\" && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable);\n }\n d.onBecomeStale_();\n }\n d.dependenciesState_ = IDerivationState_.STALE_;\n });\n // invariantLOS(observable, \"changed end\");\n}\n// Called by ComputedValue when it recalculate and its value changed\nfunction propagateChangeConfirmed(observable) {\n // invariantLOS(observable, \"confirmed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return;\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_;\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.POSSIBLY_STALE_) {\n d.dependenciesState_ = IDerivationState_.STALE_;\n if (process.env.NODE_ENV !== \"production\" && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable);\n }\n } else if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_ // this happens during computing of `d`, just keep lowestObserverState up to date.\n ) {\n observable.lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n }\n });\n // invariantLOS(observable, \"confirmed end\");\n}\n// Used by computed when its dependency changed, but we don't wan't to immediately recompute.\nfunction propagateMaybeChanged(observable) {\n // invariantLOS(observable, \"maybe start\");\n if (observable.lowestObserverState_ !== IDerivationState_.UP_TO_DATE_) {\n return;\n }\n observable.lowestObserverState_ = IDerivationState_.POSSIBLY_STALE_;\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n d.dependenciesState_ = IDerivationState_.POSSIBLY_STALE_;\n d.onBecomeStale_();\n }\n });\n // invariantLOS(observable, \"maybe end\");\n}\n\nfunction logTraceInfo(derivation, observable) {\n console.log(\"[mobx.trace] '\" + derivation.name_ + \"' is invalidated due to a change in: '\" + observable.name_ + \"'\");\n if (derivation.isTracing_ === TraceMode.BREAK) {\n var lines = [];\n printDepTree(getDependencyTree(derivation), lines, 1);\n // prettier-ignore\n new Function(\"debugger;\\n/*\\nTracing '\" + derivation.name_ + \"'\\n\\nYou are entering this break point because derivation '\" + derivation.name_ + \"' is being traced and '\" + observable.name_ + \"' is now forcing it to update.\\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\\n\\n\" + (derivation instanceof ComputedValue ? derivation.derivation.toString().replace(/[*]\\//g, \"/\") : \"\") + \"\\n\\nThe dependencies for this derivation are:\\n\\n\" + lines.join(\"\\n\") + \"\\n*/\\n \")();\n }\n}\nfunction printDepTree(tree, lines, depth) {\n if (lines.length >= 1000) {\n lines.push(\"(and many more)\");\n return;\n }\n lines.push(\"\" + \"\\t\".repeat(depth - 1) + tree.name);\n if (tree.dependencies) {\n tree.dependencies.forEach(function (child) {\n return printDepTree(child, lines, depth + 1);\n });\n }\n}\n\nvar Reaction = /*#__PURE__*/function () {\n // nodes we are looking at. Our value depends on these nodes\n\n function Reaction(name_, onInvalidate_, errorHandler_, requiresObservable_) {\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"Reaction@\" + getNextId() : \"Reaction\";\n }\n this.name_ = void 0;\n this.onInvalidate_ = void 0;\n this.errorHandler_ = void 0;\n this.requiresObservable_ = void 0;\n this.observing_ = [];\n this.newObserving_ = [];\n this.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n this.diffValue_ = 0;\n this.runId_ = 0;\n this.unboundDepsCount_ = 0;\n this.isDisposed_ = false;\n this.isScheduled_ = false;\n this.isTrackPending_ = false;\n this.isRunning_ = false;\n this.isTracing_ = TraceMode.NONE;\n this.name_ = name_;\n this.onInvalidate_ = onInvalidate_;\n this.errorHandler_ = errorHandler_;\n this.requiresObservable_ = requiresObservable_;\n }\n var _proto = Reaction.prototype;\n _proto.onBecomeStale_ = function onBecomeStale_() {\n this.schedule_();\n };\n _proto.schedule_ = function schedule_() {\n if (!this.isScheduled_) {\n this.isScheduled_ = true;\n globalState.pendingReactions.push(this);\n runReactions();\n }\n };\n _proto.isScheduled = function isScheduled() {\n return this.isScheduled_;\n }\n /**\n * internal, use schedule() if you intend to kick off a reaction\n */;\n _proto.runReaction_ = function runReaction_() {\n if (!this.isDisposed_) {\n startBatch();\n this.isScheduled_ = false;\n var prev = globalState.trackingContext;\n globalState.trackingContext = this;\n if (shouldCompute(this)) {\n this.isTrackPending_ = true;\n try {\n this.onInvalidate_();\n if (process.env.NODE_ENV !== \"production\" && this.isTrackPending_ && isSpyEnabled()) {\n // onInvalidate didn't trigger track right away..\n spyReport({\n name: this.name_,\n type: \"scheduled-reaction\"\n });\n }\n } catch (e) {\n this.reportExceptionInDerivation_(e);\n }\n }\n globalState.trackingContext = prev;\n endBatch();\n }\n };\n _proto.track = function track(fn) {\n if (this.isDisposed_) {\n return;\n // console.warn(\"Reaction already disposed\") // Note: Not a warning / error in mobx 4 either\n }\n\n startBatch();\n var notify = isSpyEnabled();\n var startTime;\n if (process.env.NODE_ENV !== \"production\" && notify) {\n startTime = Date.now();\n spyReportStart({\n name: this.name_,\n type: \"reaction\"\n });\n }\n this.isRunning_ = true;\n var prevReaction = globalState.trackingContext; // reactions could create reactions...\n globalState.trackingContext = this;\n var result = trackDerivedFunction(this, fn, undefined);\n globalState.trackingContext = prevReaction;\n this.isRunning_ = false;\n this.isTrackPending_ = false;\n if (this.isDisposed_) {\n // disposed during last run. Clean up everything that was bound after the dispose call.\n clearObserving(this);\n }\n if (isCaughtException(result)) {\n this.reportExceptionInDerivation_(result.cause);\n }\n if (process.env.NODE_ENV !== \"production\" && notify) {\n spyReportEnd({\n time: Date.now() - startTime\n });\n }\n endBatch();\n };\n _proto.reportExceptionInDerivation_ = function reportExceptionInDerivation_(error) {\n var _this = this;\n if (this.errorHandler_) {\n this.errorHandler_(error, this);\n return;\n }\n if (globalState.disableErrorBoundaries) {\n throw error;\n }\n var message = process.env.NODE_ENV !== \"production\" ? \"[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '\" + this + \"'\" : \"[mobx] uncaught error in '\" + this + \"'\";\n if (!globalState.suppressReactionErrors) {\n console.error(message, error);\n /** If debugging brought you here, please, read the above message :-). Tnx! */\n } else if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[mobx] (error in reaction '\" + this.name_ + \"' suppressed, fix error of causing action below)\");\n } // prettier-ignore\n if (process.env.NODE_ENV !== \"production\" && isSpyEnabled()) {\n spyReport({\n type: \"error\",\n name: this.name_,\n message: message,\n error: \"\" + error\n });\n }\n globalState.globalReactionErrorHandlers.forEach(function (f) {\n return f(error, _this);\n });\n };\n _proto.dispose = function dispose() {\n if (!this.isDisposed_) {\n this.isDisposed_ = true;\n if (!this.isRunning_) {\n // if disposed while running, clean up later. Maybe not optimal, but rare case\n startBatch();\n clearObserving(this);\n endBatch();\n }\n }\n };\n _proto.getDisposer_ = function getDisposer_(abortSignal) {\n var _this2 = this;\n var dispose = function dispose() {\n _this2.dispose();\n abortSignal == null ? void 0 : abortSignal.removeEventListener == null ? void 0 : abortSignal.removeEventListener(\"abort\", dispose);\n };\n abortSignal == null ? void 0 : abortSignal.addEventListener == null ? void 0 : abortSignal.addEventListener(\"abort\", dispose);\n dispose[$mobx] = this;\n return dispose;\n };\n _proto.toString = function toString() {\n return \"Reaction[\" + this.name_ + \"]\";\n };\n _proto.trace = function trace$1(enterBreakPoint) {\n if (enterBreakPoint === void 0) {\n enterBreakPoint = false;\n }\n trace(this, enterBreakPoint);\n };\n return Reaction;\n}();\nfunction onReactionError(handler) {\n globalState.globalReactionErrorHandlers.push(handler);\n return function () {\n var idx = globalState.globalReactionErrorHandlers.indexOf(handler);\n if (idx >= 0) {\n globalState.globalReactionErrorHandlers.splice(idx, 1);\n }\n };\n}\n/**\n * Magic number alert!\n * Defines within how many times a reaction is allowed to re-trigger itself\n * until it is assumed that this is gonna be a never ending loop...\n */\nvar MAX_REACTION_ITERATIONS = 100;\nvar reactionScheduler = function reactionScheduler(f) {\n return f();\n};\nfunction runReactions() {\n // Trampolining, if runReactions are already running, new reactions will be picked up\n if (globalState.inBatch > 0 || globalState.isRunningReactions) {\n return;\n }\n reactionScheduler(runReactionsHelper);\n}\nfunction runReactionsHelper() {\n globalState.isRunningReactions = true;\n var allReactions = globalState.pendingReactions;\n var iterations = 0;\n // While running reactions, new reactions might be triggered.\n // Hence we work with two variables and check whether\n // we converge to no remaining reactions after a while.\n while (allReactions.length > 0) {\n if (++iterations === MAX_REACTION_ITERATIONS) {\n console.error(process.env.NODE_ENV !== \"production\" ? \"Reaction doesn't converge to a stable state after \" + MAX_REACTION_ITERATIONS + \" iterations.\" + (\" Probably there is a cycle in the reactive function: \" + allReactions[0]) : \"[mobx] cycle in reaction: \" + allReactions[0]);\n allReactions.splice(0); // clear reactions\n }\n\n var remainingReactions = allReactions.splice(0);\n for (var i = 0, l = remainingReactions.length; i < l; i++) {\n remainingReactions[i].runReaction_();\n }\n }\n globalState.isRunningReactions = false;\n}\nvar isReaction = /*#__PURE__*/createInstanceofPredicate(\"Reaction\", Reaction);\nfunction setReactionScheduler(fn) {\n var baseScheduler = reactionScheduler;\n reactionScheduler = function reactionScheduler(f) {\n return fn(function () {\n return baseScheduler(f);\n });\n };\n}\n\nfunction isSpyEnabled() {\n return process.env.NODE_ENV !== \"production\" && !!globalState.spyListeners.length;\n}\nfunction spyReport(event) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n } // dead code elimination can do the rest\n if (!globalState.spyListeners.length) {\n return;\n }\n var listeners = globalState.spyListeners;\n for (var i = 0, l = listeners.length; i < l; i++) {\n listeners[i](event);\n }\n}\nfunction spyReportStart(event) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n var change = _extends({}, event, {\n spyReportStart: true\n });\n spyReport(change);\n}\nvar END_EVENT = {\n type: \"report-end\",\n spyReportEnd: true\n};\nfunction spyReportEnd(change) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n if (change) {\n spyReport(_extends({}, change, {\n type: \"report-end\",\n spyReportEnd: true\n }));\n } else {\n spyReport(END_EVENT);\n }\n}\nfunction spy(listener) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n console.warn(\"[mobx.spy] Is a no-op in production builds\");\n return function () {};\n } else {\n globalState.spyListeners.push(listener);\n return once(function () {\n globalState.spyListeners = globalState.spyListeners.filter(function (l) {\n return l !== listener;\n });\n });\n }\n}\n\nvar ACTION = \"action\";\nvar ACTION_BOUND = \"action.bound\";\nvar AUTOACTION = \"autoAction\";\nvar AUTOACTION_BOUND = \"autoAction.bound\";\nvar DEFAULT_ACTION_NAME = \"\";\nvar actionAnnotation = /*#__PURE__*/createActionAnnotation(ACTION);\nvar actionBoundAnnotation = /*#__PURE__*/createActionAnnotation(ACTION_BOUND, {\n bound: true\n});\nvar autoActionAnnotation = /*#__PURE__*/createActionAnnotation(AUTOACTION, {\n autoAction: true\n});\nvar autoActionBoundAnnotation = /*#__PURE__*/createActionAnnotation(AUTOACTION_BOUND, {\n autoAction: true,\n bound: true\n});\nfunction createActionFactory(autoAction) {\n var res = function action(arg1, arg2) {\n // action(fn() {})\n if (isFunction(arg1)) {\n return createAction(arg1.name || DEFAULT_ACTION_NAME, arg1, autoAction);\n }\n // action(\"name\", fn() {})\n if (isFunction(arg2)) {\n return createAction(arg1, arg2, autoAction);\n }\n // @action (2022.3 Decorators)\n if (is20223Decorator(arg2)) {\n return (autoAction ? autoActionAnnotation : actionAnnotation).decorate_20223_(arg1, arg2);\n }\n // @action\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, autoAction ? autoActionAnnotation : actionAnnotation);\n }\n // action(\"name\") & @action(\"name\")\n if (isStringish(arg1)) {\n return createDecoratorAnnotation(createActionAnnotation(autoAction ? AUTOACTION : ACTION, {\n name: arg1,\n autoAction: autoAction\n }));\n }\n if (process.env.NODE_ENV !== \"production\") {\n die(\"Invalid arguments for `action`\");\n }\n };\n return res;\n}\nvar action = /*#__PURE__*/createActionFactory(false);\nObject.assign(action, actionAnnotation);\nvar autoAction = /*#__PURE__*/createActionFactory(true);\nObject.assign(autoAction, autoActionAnnotation);\naction.bound = /*#__PURE__*/createDecoratorAnnotation(actionBoundAnnotation);\nautoAction.bound = /*#__PURE__*/createDecoratorAnnotation(autoActionBoundAnnotation);\nfunction runInAction(fn) {\n return executeAction(fn.name || DEFAULT_ACTION_NAME, false, fn, this, undefined);\n}\nfunction isAction(thing) {\n return isFunction(thing) && thing.isMobxAction === true;\n}\n\n/**\n * Creates a named reactive view and keeps it alive, so that the view is always\n * updated if one of the dependencies changes, even when the view is not further used by something else.\n * @param view The reactive view\n * @returns disposer function, which can be used to stop the view from being updated in the future.\n */\nfunction autorun(view, opts) {\n var _opts$name, _opts, _opts2, _opts2$signal, _opts3;\n if (opts === void 0) {\n opts = EMPTY_OBJECT;\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!isFunction(view)) {\n die(\"Autorun expects a function as first argument\");\n }\n if (isAction(view)) {\n die(\"Autorun does not accept actions since actions are untrackable\");\n }\n }\n var name = (_opts$name = (_opts = opts) == null ? void 0 : _opts.name) != null ? _opts$name : process.env.NODE_ENV !== \"production\" ? view.name || \"Autorun@\" + getNextId() : \"Autorun\";\n var runSync = !opts.scheduler && !opts.delay;\n var reaction;\n if (runSync) {\n // normal autorun\n reaction = new Reaction(name, function () {\n this.track(reactionRunner);\n }, opts.onError, opts.requiresObservable);\n } else {\n var scheduler = createSchedulerFromOptions(opts);\n // debounced autorun\n var isScheduled = false;\n reaction = new Reaction(name, function () {\n if (!isScheduled) {\n isScheduled = true;\n scheduler(function () {\n isScheduled = false;\n if (!reaction.isDisposed_) {\n reaction.track(reactionRunner);\n }\n });\n }\n }, opts.onError, opts.requiresObservable);\n }\n function reactionRunner() {\n view(reaction);\n }\n if (!((_opts2 = opts) != null && (_opts2$signal = _opts2.signal) != null && _opts2$signal.aborted)) {\n reaction.schedule_();\n }\n return reaction.getDisposer_((_opts3 = opts) == null ? void 0 : _opts3.signal);\n}\nvar run = function run(f) {\n return f();\n};\nfunction createSchedulerFromOptions(opts) {\n return opts.scheduler ? opts.scheduler : opts.delay ? function (f) {\n return setTimeout(f, opts.delay);\n } : run;\n}\nfunction reaction(expression, effect, opts) {\n var _opts$name2, _opts4, _opts4$signal, _opts5;\n if (opts === void 0) {\n opts = EMPTY_OBJECT;\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!isFunction(expression) || !isFunction(effect)) {\n die(\"First and second argument to reaction should be functions\");\n }\n if (!isPlainObject(opts)) {\n die(\"Third argument of reactions should be an object\");\n }\n }\n var name = (_opts$name2 = opts.name) != null ? _opts$name2 : process.env.NODE_ENV !== \"production\" ? \"Reaction@\" + getNextId() : \"Reaction\";\n var effectAction = action(name, opts.onError ? wrapErrorHandler(opts.onError, effect) : effect);\n var runSync = !opts.scheduler && !opts.delay;\n var scheduler = createSchedulerFromOptions(opts);\n var firstTime = true;\n var isScheduled = false;\n var value;\n var oldValue;\n var equals = opts.compareStructural ? comparer.structural : opts.equals || comparer[\"default\"];\n var r = new Reaction(name, function () {\n if (firstTime || runSync) {\n reactionRunner();\n } else if (!isScheduled) {\n isScheduled = true;\n scheduler(reactionRunner);\n }\n }, opts.onError, opts.requiresObservable);\n function reactionRunner() {\n isScheduled = false;\n if (r.isDisposed_) {\n return;\n }\n var changed = false;\n r.track(function () {\n var nextValue = allowStateChanges(false, function () {\n return expression(r);\n });\n changed = firstTime || !equals(value, nextValue);\n oldValue = value;\n value = nextValue;\n });\n if (firstTime && opts.fireImmediately) {\n effectAction(value, oldValue, r);\n } else if (!firstTime && changed) {\n effectAction(value, oldValue, r);\n }\n firstTime = false;\n }\n if (!((_opts4 = opts) != null && (_opts4$signal = _opts4.signal) != null && _opts4$signal.aborted)) {\n r.schedule_();\n }\n return r.getDisposer_((_opts5 = opts) == null ? void 0 : _opts5.signal);\n}\nfunction wrapErrorHandler(errorHandler, baseFn) {\n return function () {\n try {\n return baseFn.apply(this, arguments);\n } catch (e) {\n errorHandler.call(this, e);\n }\n };\n}\n\nvar ON_BECOME_OBSERVED = \"onBO\";\nvar ON_BECOME_UNOBSERVED = \"onBUO\";\nfunction onBecomeObserved(thing, arg2, arg3) {\n return interceptHook(ON_BECOME_OBSERVED, thing, arg2, arg3);\n}\nfunction onBecomeUnobserved(thing, arg2, arg3) {\n return interceptHook(ON_BECOME_UNOBSERVED, thing, arg2, arg3);\n}\nfunction interceptHook(hook, thing, arg2, arg3) {\n var atom = typeof arg3 === \"function\" ? getAtom(thing, arg2) : getAtom(thing);\n var cb = isFunction(arg3) ? arg3 : arg2;\n var listenersKey = hook + \"L\";\n if (atom[listenersKey]) {\n atom[listenersKey].add(cb);\n } else {\n atom[listenersKey] = new Set([cb]);\n }\n return function () {\n var hookListeners = atom[listenersKey];\n if (hookListeners) {\n hookListeners[\"delete\"](cb);\n if (hookListeners.size === 0) {\n delete atom[listenersKey];\n }\n }\n };\n}\n\nvar NEVER = \"never\";\nvar ALWAYS = \"always\";\nvar OBSERVED = \"observed\";\n// const IF_AVAILABLE = \"ifavailable\"\nfunction configure(options) {\n if (options.isolateGlobalState === true) {\n isolateGlobalState();\n }\n var useProxies = options.useProxies,\n enforceActions = options.enforceActions;\n if (useProxies !== undefined) {\n globalState.useProxies = useProxies === ALWAYS ? true : useProxies === NEVER ? false : typeof Proxy !== \"undefined\";\n }\n if (useProxies === \"ifavailable\") {\n globalState.verifyProxies = true;\n }\n if (enforceActions !== undefined) {\n var ea = enforceActions === ALWAYS ? ALWAYS : enforceActions === OBSERVED;\n globalState.enforceActions = ea;\n globalState.allowStateChanges = ea === true || ea === ALWAYS ? false : true;\n }\n [\"computedRequiresReaction\", \"reactionRequiresObservable\", \"observableRequiresReaction\", \"disableErrorBoundaries\", \"safeDescriptors\"].forEach(function (key) {\n if (key in options) {\n globalState[key] = !!options[key];\n }\n });\n globalState.allowStateReads = !globalState.observableRequiresReaction;\n if (process.env.NODE_ENV !== \"production\" && globalState.disableErrorBoundaries === true) {\n console.warn(\"WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled.\");\n }\n if (options.reactionScheduler) {\n setReactionScheduler(options.reactionScheduler);\n }\n}\n\nfunction extendObservable(target, properties, annotations, options) {\n if (process.env.NODE_ENV !== \"production\") {\n if (arguments.length > 4) {\n die(\"'extendObservable' expected 2-4 arguments\");\n }\n if (typeof target !== \"object\") {\n die(\"'extendObservable' expects an object as first argument\");\n }\n if (isObservableMap(target)) {\n die(\"'extendObservable' should not be used on maps, use map.merge instead\");\n }\n if (!isPlainObject(properties)) {\n die(\"'extendObservable' only accepts plain objects as second argument\");\n }\n if (isObservable(properties) || isObservable(annotations)) {\n die(\"Extending an object with another observable (object) is not supported\");\n }\n }\n // Pull descriptors first, so we don't have to deal with props added by administration ($mobx)\n var descriptors = getOwnPropertyDescriptors(properties);\n initObservable(function () {\n var adm = asObservableObject(target, options)[$mobx];\n ownKeys(descriptors).forEach(function (key) {\n adm.extend_(key, descriptors[key],\n // must pass \"undefined\" for { key: undefined }\n !annotations ? true : key in annotations ? annotations[key] : true);\n });\n });\n return target;\n}\n\nfunction getDependencyTree(thing, property) {\n return nodeToDependencyTree(getAtom(thing, property));\n}\nfunction nodeToDependencyTree(node) {\n var result = {\n name: node.name_\n };\n if (node.observing_ && node.observing_.length > 0) {\n result.dependencies = unique(node.observing_).map(nodeToDependencyTree);\n }\n return result;\n}\nfunction getObserverTree(thing, property) {\n return nodeToObserverTree(getAtom(thing, property));\n}\nfunction nodeToObserverTree(node) {\n var result = {\n name: node.name_\n };\n if (hasObservers(node)) {\n result.observers = Array.from(getObservers(node)).map(nodeToObserverTree);\n }\n return result;\n}\nfunction unique(list) {\n return Array.from(new Set(list));\n}\n\nvar generatorId = 0;\nfunction FlowCancellationError() {\n this.message = \"FLOW_CANCELLED\";\n}\nFlowCancellationError.prototype = /*#__PURE__*/Object.create(Error.prototype);\nfunction isFlowCancellationError(error) {\n return error instanceof FlowCancellationError;\n}\nvar flowAnnotation = /*#__PURE__*/createFlowAnnotation(\"flow\");\nvar flowBoundAnnotation = /*#__PURE__*/createFlowAnnotation(\"flow.bound\", {\n bound: true\n});\nvar flow = /*#__PURE__*/Object.assign(function flow(arg1, arg2) {\n // @flow (2022.3 Decorators)\n if (is20223Decorator(arg2)) {\n return flowAnnotation.decorate_20223_(arg1, arg2);\n }\n // @flow\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, flowAnnotation);\n }\n // flow(fn)\n if (process.env.NODE_ENV !== \"production\" && arguments.length !== 1) {\n die(\"Flow expects single argument with generator function\");\n }\n var generator = arg1;\n var name = generator.name || \"\";\n // Implementation based on https://github.com/tj/co/blob/master/index.js\n var res = function res() {\n var ctx = this;\n var args = arguments;\n var runId = ++generatorId;\n var gen = action(name + \" - runid: \" + runId + \" - init\", generator).apply(ctx, args);\n var rejector;\n var pendingPromise = undefined;\n var promise = new Promise(function (resolve, reject) {\n var stepId = 0;\n rejector = reject;\n function onFulfilled(res) {\n pendingPromise = undefined;\n var ret;\n try {\n ret = action(name + \" - runid: \" + runId + \" - yield \" + stepId++, gen.next).call(gen, res);\n } catch (e) {\n return reject(e);\n }\n next(ret);\n }\n function onRejected(err) {\n pendingPromise = undefined;\n var ret;\n try {\n ret = action(name + \" - runid: \" + runId + \" - yield \" + stepId++, gen[\"throw\"]).call(gen, err);\n } catch (e) {\n return reject(e);\n }\n next(ret);\n }\n function next(ret) {\n if (isFunction(ret == null ? void 0 : ret.then)) {\n // an async iterator\n ret.then(next, reject);\n return;\n }\n if (ret.done) {\n return resolve(ret.value);\n }\n pendingPromise = Promise.resolve(ret.value);\n return pendingPromise.then(onFulfilled, onRejected);\n }\n onFulfilled(undefined); // kick off the process\n });\n\n promise.cancel = action(name + \" - runid: \" + runId + \" - cancel\", function () {\n try {\n if (pendingPromise) {\n cancelPromise(pendingPromise);\n }\n // Finally block can return (or yield) stuff..\n var _res = gen[\"return\"](undefined);\n // eat anything that promise would do, it's cancelled!\n var yieldedPromise = Promise.resolve(_res.value);\n yieldedPromise.then(noop, noop);\n cancelPromise(yieldedPromise); // maybe it can be cancelled :)\n // reject our original promise\n rejector(new FlowCancellationError());\n } catch (e) {\n rejector(e); // there could be a throwing finally block\n }\n });\n\n return promise;\n };\n res.isMobXFlow = true;\n return res;\n}, flowAnnotation);\nflow.bound = /*#__PURE__*/createDecoratorAnnotation(flowBoundAnnotation);\nfunction cancelPromise(promise) {\n if (isFunction(promise.cancel)) {\n promise.cancel();\n }\n}\nfunction flowResult(result) {\n return result; // just tricking TypeScript :)\n}\n\nfunction isFlow(fn) {\n return (fn == null ? void 0 : fn.isMobXFlow) === true;\n}\n\nfunction interceptReads(thing, propOrHandler, handler) {\n var target;\n if (isObservableMap(thing) || isObservableArray(thing) || isObservableValue(thing)) {\n target = getAdministration(thing);\n } else if (isObservableObject(thing)) {\n if (process.env.NODE_ENV !== \"production\" && !isStringish(propOrHandler)) {\n return die(\"InterceptReads can only be used with a specific property, not with an object in general\");\n }\n target = getAdministration(thing, propOrHandler);\n } else if (process.env.NODE_ENV !== \"production\") {\n return die(\"Expected observable map, object or array as first array\");\n }\n if (process.env.NODE_ENV !== \"production\" && target.dehancer !== undefined) {\n return die(\"An intercept reader was already established\");\n }\n target.dehancer = typeof propOrHandler === \"function\" ? propOrHandler : handler;\n return function () {\n target.dehancer = undefined;\n };\n}\n\nfunction intercept(thing, propOrHandler, handler) {\n if (isFunction(handler)) {\n return interceptProperty(thing, propOrHandler, handler);\n } else {\n return interceptInterceptable(thing, propOrHandler);\n }\n}\nfunction interceptInterceptable(thing, handler) {\n return getAdministration(thing).intercept_(handler);\n}\nfunction interceptProperty(thing, property, handler) {\n return getAdministration(thing, property).intercept_(handler);\n}\n\nfunction _isComputed(value, property) {\n if (property === undefined) {\n return isComputedValue(value);\n }\n if (isObservableObject(value) === false) {\n return false;\n }\n if (!value[$mobx].values_.has(property)) {\n return false;\n }\n var atom = getAtom(value, property);\n return isComputedValue(atom);\n}\nfunction isComputed(value) {\n if (process.env.NODE_ENV !== \"production\" && arguments.length > 1) {\n return die(\"isComputed expects only 1 argument. Use isComputedProp to inspect the observability of a property\");\n }\n return _isComputed(value);\n}\nfunction isComputedProp(value, propName) {\n if (process.env.NODE_ENV !== \"production\" && !isStringish(propName)) {\n return die(\"isComputed expected a property name as second argument\");\n }\n return _isComputed(value, propName);\n}\n\nfunction _isObservable(value, property) {\n if (!value) {\n return false;\n }\n if (property !== undefined) {\n if (process.env.NODE_ENV !== \"production\" && (isObservableMap(value) || isObservableArray(value))) {\n return die(\"isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead.\");\n }\n if (isObservableObject(value)) {\n return value[$mobx].values_.has(property);\n }\n return false;\n }\n // For first check, see #701\n return isObservableObject(value) || !!value[$mobx] || isAtom(value) || isReaction(value) || isComputedValue(value);\n}\nfunction isObservable(value) {\n if (process.env.NODE_ENV !== \"production\" && arguments.length !== 1) {\n die(\"isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property\");\n }\n return _isObservable(value);\n}\nfunction isObservableProp(value, propName) {\n if (process.env.NODE_ENV !== \"production\" && !isStringish(propName)) {\n return die(\"expected a property name as second argument\");\n }\n return _isObservable(value, propName);\n}\n\nfunction keys(obj) {\n if (isObservableObject(obj)) {\n return obj[$mobx].keys_();\n }\n if (isObservableMap(obj) || isObservableSet(obj)) {\n return Array.from(obj.keys());\n }\n if (isObservableArray(obj)) {\n return obj.map(function (_, index) {\n return index;\n });\n }\n die(5);\n}\nfunction values(obj) {\n if (isObservableObject(obj)) {\n return keys(obj).map(function (key) {\n return obj[key];\n });\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(function (key) {\n return obj.get(key);\n });\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.values());\n }\n if (isObservableArray(obj)) {\n return obj.slice();\n }\n die(6);\n}\nfunction entries(obj) {\n if (isObservableObject(obj)) {\n return keys(obj).map(function (key) {\n return [key, obj[key]];\n });\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(function (key) {\n return [key, obj.get(key)];\n });\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.entries());\n }\n if (isObservableArray(obj)) {\n return obj.map(function (key, index) {\n return [index, key];\n });\n }\n die(7);\n}\nfunction set(obj, key, value) {\n if (arguments.length === 2 && !isObservableSet(obj)) {\n startBatch();\n var _values = key;\n try {\n for (var _key in _values) {\n set(obj, _key, _values[_key]);\n }\n } finally {\n endBatch();\n }\n return;\n }\n if (isObservableObject(obj)) {\n obj[$mobx].set_(key, value);\n } else if (isObservableMap(obj)) {\n obj.set(key, value);\n } else if (isObservableSet(obj)) {\n obj.add(key);\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10);\n }\n if (key < 0) {\n die(\"Invalid index: '\" + key + \"'\");\n }\n startBatch();\n if (key >= obj.length) {\n obj.length = key + 1;\n }\n obj[key] = value;\n endBatch();\n } else {\n die(8);\n }\n}\nfunction remove(obj, key) {\n if (isObservableObject(obj)) {\n obj[$mobx].delete_(key);\n } else if (isObservableMap(obj)) {\n obj[\"delete\"](key);\n } else if (isObservableSet(obj)) {\n obj[\"delete\"](key);\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10);\n }\n obj.splice(key, 1);\n } else {\n die(9);\n }\n}\nfunction has(obj, key) {\n if (isObservableObject(obj)) {\n return obj[$mobx].has_(key);\n } else if (isObservableMap(obj)) {\n return obj.has(key);\n } else if (isObservableSet(obj)) {\n return obj.has(key);\n } else if (isObservableArray(obj)) {\n return key >= 0 && key < obj.length;\n }\n die(10);\n}\nfunction get(obj, key) {\n if (!has(obj, key)) {\n return undefined;\n }\n if (isObservableObject(obj)) {\n return obj[$mobx].get_(key);\n } else if (isObservableMap(obj)) {\n return obj.get(key);\n } else if (isObservableArray(obj)) {\n return obj[key];\n }\n die(11);\n}\nfunction apiDefineProperty(obj, key, descriptor) {\n if (isObservableObject(obj)) {\n return obj[$mobx].defineProperty_(key, descriptor);\n }\n die(39);\n}\nfunction apiOwnKeys(obj) {\n if (isObservableObject(obj)) {\n return obj[$mobx].ownKeys_();\n }\n die(38);\n}\n\nfunction observe(thing, propOrCb, cbOrFire, fireImmediately) {\n if (isFunction(cbOrFire)) {\n return observeObservableProperty(thing, propOrCb, cbOrFire, fireImmediately);\n } else {\n return observeObservable(thing, propOrCb, cbOrFire);\n }\n}\nfunction observeObservable(thing, listener, fireImmediately) {\n return getAdministration(thing).observe_(listener, fireImmediately);\n}\nfunction observeObservableProperty(thing, property, listener, fireImmediately) {\n return getAdministration(thing, property).observe_(listener, fireImmediately);\n}\n\nfunction cache(map, key, value) {\n map.set(key, value);\n return value;\n}\nfunction toJSHelper(source, __alreadySeen) {\n if (source == null || typeof source !== \"object\" || source instanceof Date || !isObservable(source)) {\n return source;\n }\n if (isObservableValue(source) || isComputedValue(source)) {\n return toJSHelper(source.get(), __alreadySeen);\n }\n if (__alreadySeen.has(source)) {\n return __alreadySeen.get(source);\n }\n if (isObservableArray(source)) {\n var res = cache(__alreadySeen, source, new Array(source.length));\n source.forEach(function (value, idx) {\n res[idx] = toJSHelper(value, __alreadySeen);\n });\n return res;\n }\n if (isObservableSet(source)) {\n var _res = cache(__alreadySeen, source, new Set());\n source.forEach(function (value) {\n _res.add(toJSHelper(value, __alreadySeen));\n });\n return _res;\n }\n if (isObservableMap(source)) {\n var _res2 = cache(__alreadySeen, source, new Map());\n source.forEach(function (value, key) {\n _res2.set(key, toJSHelper(value, __alreadySeen));\n });\n return _res2;\n } else {\n // must be observable object\n var _res3 = cache(__alreadySeen, source, {});\n apiOwnKeys(source).forEach(function (key) {\n if (objectPrototype.propertyIsEnumerable.call(source, key)) {\n _res3[key] = toJSHelper(source[key], __alreadySeen);\n }\n });\n return _res3;\n }\n}\n/**\n * Recursively converts an observable to it's non-observable native counterpart.\n * It does NOT recurse into non-observables, these are left as they are, even if they contain observables.\n * Computed and other non-enumerable properties are completely ignored.\n * Complex scenarios require custom solution, eg implementing `toJSON` or using `serializr` lib.\n */\nfunction toJS(source, options) {\n if (process.env.NODE_ENV !== \"production\" && options) {\n die(\"toJS no longer supports options\");\n }\n return toJSHelper(source, new Map());\n}\n\nfunction trace() {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n var enterBreakPoint = false;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[args.length - 1] === \"boolean\") {\n enterBreakPoint = args.pop();\n }\n var derivation = getAtomFromArgs(args);\n if (!derivation) {\n return die(\"'trace(break?)' can only be used inside a tracked computed value or a Reaction. Consider passing in the computed value or reaction explicitly\");\n }\n if (derivation.isTracing_ === TraceMode.NONE) {\n console.log(\"[mobx.trace] '\" + derivation.name_ + \"' tracing enabled\");\n }\n derivation.isTracing_ = enterBreakPoint ? TraceMode.BREAK : TraceMode.LOG;\n}\nfunction getAtomFromArgs(args) {\n switch (args.length) {\n case 0:\n return globalState.trackingDerivation;\n case 1:\n return getAtom(args[0]);\n case 2:\n return getAtom(args[0], args[1]);\n }\n}\n\n/**\n * During a transaction no views are updated until the end of the transaction.\n * The transaction will be run synchronously nonetheless.\n *\n * @param action a function that updates some reactive state\n * @returns any value that was returned by the 'action' parameter.\n */\nfunction transaction(action, thisArg) {\n if (thisArg === void 0) {\n thisArg = undefined;\n }\n startBatch();\n try {\n return action.apply(thisArg);\n } finally {\n endBatch();\n }\n}\n\nfunction when(predicate, arg1, arg2) {\n if (arguments.length === 1 || arg1 && typeof arg1 === \"object\") {\n return whenPromise(predicate, arg1);\n }\n return _when(predicate, arg1, arg2 || {});\n}\nfunction _when(predicate, effect, opts) {\n var timeoutHandle;\n if (typeof opts.timeout === \"number\") {\n var error = new Error(\"WHEN_TIMEOUT\");\n timeoutHandle = setTimeout(function () {\n if (!disposer[$mobx].isDisposed_) {\n disposer();\n if (opts.onError) {\n opts.onError(error);\n } else {\n throw error;\n }\n }\n }, opts.timeout);\n }\n opts.name = process.env.NODE_ENV !== \"production\" ? opts.name || \"When@\" + getNextId() : \"When\";\n var effectAction = createAction(process.env.NODE_ENV !== \"production\" ? opts.name + \"-effect\" : \"When-effect\", effect);\n // eslint-disable-next-line\n var disposer = autorun(function (r) {\n // predicate should not change state\n var cond = allowStateChanges(false, predicate);\n if (cond) {\n r.dispose();\n if (timeoutHandle) {\n clearTimeout(timeoutHandle);\n }\n effectAction();\n }\n }, opts);\n return disposer;\n}\nfunction whenPromise(predicate, opts) {\n var _opts$signal;\n if (process.env.NODE_ENV !== \"production\" && opts && opts.onError) {\n return die(\"the options 'onError' and 'promise' cannot be combined\");\n }\n if (opts != null && (_opts$signal = opts.signal) != null && _opts$signal.aborted) {\n return Object.assign(Promise.reject(new Error(\"WHEN_ABORTED\")), {\n cancel: function cancel() {\n return null;\n }\n });\n }\n var cancel;\n var abort;\n var res = new Promise(function (resolve, reject) {\n var _opts$signal2;\n var disposer = _when(predicate, resolve, _extends({}, opts, {\n onError: reject\n }));\n cancel = function cancel() {\n disposer();\n reject(new Error(\"WHEN_CANCELLED\"));\n };\n abort = function abort() {\n disposer();\n reject(new Error(\"WHEN_ABORTED\"));\n };\n opts == null ? void 0 : (_opts$signal2 = opts.signal) == null ? void 0 : _opts$signal2.addEventListener == null ? void 0 : _opts$signal2.addEventListener(\"abort\", abort);\n })[\"finally\"](function () {\n var _opts$signal3;\n return opts == null ? void 0 : (_opts$signal3 = opts.signal) == null ? void 0 : _opts$signal3.removeEventListener == null ? void 0 : _opts$signal3.removeEventListener(\"abort\", abort);\n });\n res.cancel = cancel;\n return res;\n}\n\nfunction getAdm(target) {\n return target[$mobx];\n}\n// Optimization: we don't need the intermediate objects and could have a completely custom administration for DynamicObjects,\n// and skip either the internal values map, or the base object with its property descriptors!\nvar objectProxyTraps = {\n has: function has(target, name) {\n if (process.env.NODE_ENV !== \"production\" && globalState.trackingDerivation) {\n warnAboutProxyRequirement(\"detect new properties using the 'in' operator. Use 'has' from 'mobx' instead.\");\n }\n return getAdm(target).has_(name);\n },\n get: function get(target, name) {\n return getAdm(target).get_(name);\n },\n set: function set(target, name, value) {\n var _getAdm$set_;\n if (!isStringish(name)) {\n return false;\n }\n if (process.env.NODE_ENV !== \"production\" && !getAdm(target).values_.has(name)) {\n warnAboutProxyRequirement(\"add a new observable property through direct assignment. Use 'set' from 'mobx' instead.\");\n }\n // null (intercepted) -> true (success)\n return (_getAdm$set_ = getAdm(target).set_(name, value, true)) != null ? _getAdm$set_ : true;\n },\n deleteProperty: function deleteProperty(target, name) {\n var _getAdm$delete_;\n if (process.env.NODE_ENV !== \"production\") {\n warnAboutProxyRequirement(\"delete properties from an observable object. Use 'remove' from 'mobx' instead.\");\n }\n if (!isStringish(name)) {\n return false;\n }\n // null (intercepted) -> true (success)\n return (_getAdm$delete_ = getAdm(target).delete_(name, true)) != null ? _getAdm$delete_ : true;\n },\n defineProperty: function defineProperty(target, name, descriptor) {\n var _getAdm$definePropert;\n if (process.env.NODE_ENV !== \"production\") {\n warnAboutProxyRequirement(\"define property on an observable object. Use 'defineProperty' from 'mobx' instead.\");\n }\n // null (intercepted) -> true (success)\n return (_getAdm$definePropert = getAdm(target).defineProperty_(name, descriptor)) != null ? _getAdm$definePropert : true;\n },\n ownKeys: function ownKeys(target) {\n if (process.env.NODE_ENV !== \"production\" && globalState.trackingDerivation) {\n warnAboutProxyRequirement(\"iterate keys to detect added / removed properties. Use 'keys' from 'mobx' instead.\");\n }\n return getAdm(target).ownKeys_();\n },\n preventExtensions: function preventExtensions(target) {\n die(13);\n }\n};\nfunction asDynamicObservableObject(target, options) {\n var _target$$mobx, _target$$mobx$proxy_;\n assertProxies();\n target = asObservableObject(target, options);\n return (_target$$mobx$proxy_ = (_target$$mobx = target[$mobx]).proxy_) != null ? _target$$mobx$proxy_ : _target$$mobx.proxy_ = new Proxy(target, objectProxyTraps);\n}\n\nfunction hasInterceptors(interceptable) {\n return interceptable.interceptors_ !== undefined && interceptable.interceptors_.length > 0;\n}\nfunction registerInterceptor(interceptable, handler) {\n var interceptors = interceptable.interceptors_ || (interceptable.interceptors_ = []);\n interceptors.push(handler);\n return once(function () {\n var idx = interceptors.indexOf(handler);\n if (idx !== -1) {\n interceptors.splice(idx, 1);\n }\n });\n}\nfunction interceptChange(interceptable, change) {\n var prevU = untrackedStart();\n try {\n // Interceptor can modify the array, copy it to avoid concurrent modification, see #1950\n var interceptors = [].concat(interceptable.interceptors_ || []);\n for (var i = 0, l = interceptors.length; i < l; i++) {\n change = interceptors[i](change);\n if (change && !change.type) {\n die(14);\n }\n if (!change) {\n break;\n }\n }\n return change;\n } finally {\n untrackedEnd(prevU);\n }\n}\n\nfunction hasListeners(listenable) {\n return listenable.changeListeners_ !== undefined && listenable.changeListeners_.length > 0;\n}\nfunction registerListener(listenable, handler) {\n var listeners = listenable.changeListeners_ || (listenable.changeListeners_ = []);\n listeners.push(handler);\n return once(function () {\n var idx = listeners.indexOf(handler);\n if (idx !== -1) {\n listeners.splice(idx, 1);\n }\n });\n}\nfunction notifyListeners(listenable, change) {\n var prevU = untrackedStart();\n var listeners = listenable.changeListeners_;\n if (!listeners) {\n return;\n }\n listeners = listeners.slice();\n for (var i = 0, l = listeners.length; i < l; i++) {\n listeners[i](change);\n }\n untrackedEnd(prevU);\n}\n\nfunction makeObservable(target, annotations, options) {\n initObservable(function () {\n var _annotations;\n var adm = asObservableObject(target, options)[$mobx];\n if (process.env.NODE_ENV !== \"production\" && annotations && target[storedAnnotationsSymbol]) {\n die(\"makeObservable second arg must be nullish when using decorators. Mixing @decorator syntax with annotations is not supported.\");\n }\n // Default to decorators\n (_annotations = annotations) != null ? _annotations : annotations = collectStoredAnnotations(target);\n // Annotate\n ownKeys(annotations).forEach(function (key) {\n return adm.make_(key, annotations[key]);\n });\n });\n return target;\n}\n// proto[keysSymbol] = new Set()\nvar keysSymbol = /*#__PURE__*/Symbol(\"mobx-keys\");\nfunction makeAutoObservable(target, overrides, options) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!isPlainObject(target) && !isPlainObject(Object.getPrototypeOf(target))) {\n die(\"'makeAutoObservable' can only be used for classes that don't have a superclass\");\n }\n if (isObservableObject(target)) {\n die(\"makeAutoObservable can only be used on objects not already made observable\");\n }\n }\n // Optimization: avoid visiting protos\n // Assumes that annotation.make_/.extend_ works the same for plain objects\n if (isPlainObject(target)) {\n return extendObservable(target, target, overrides, options);\n }\n initObservable(function () {\n var adm = asObservableObject(target, options)[$mobx];\n // Optimization: cache keys on proto\n // Assumes makeAutoObservable can be called only once per object and can't be used in subclass\n if (!target[keysSymbol]) {\n var proto = Object.getPrototypeOf(target);\n var keys = new Set([].concat(ownKeys(target), ownKeys(proto)));\n keys[\"delete\"](\"constructor\");\n keys[\"delete\"]($mobx);\n addHiddenProp(proto, keysSymbol, keys);\n }\n target[keysSymbol].forEach(function (key) {\n return adm.make_(key,\n // must pass \"undefined\" for { key: undefined }\n !overrides ? true : key in overrides ? overrides[key] : true);\n });\n });\n return target;\n}\n\nvar SPLICE = \"splice\";\nvar UPDATE = \"update\";\nvar MAX_SPLICE_SIZE = 10000; // See e.g. https://github.com/mobxjs/mobx/issues/859\nvar arrayTraps = {\n get: function get(target, name) {\n var adm = target[$mobx];\n if (name === $mobx) {\n return adm;\n }\n if (name === \"length\") {\n return adm.getArrayLength_();\n }\n if (typeof name === \"string\" && !isNaN(name)) {\n return adm.get_(parseInt(name));\n }\n if (hasProp(arrayExtensions, name)) {\n return arrayExtensions[name];\n }\n return target[name];\n },\n set: function set(target, name, value) {\n var adm = target[$mobx];\n if (name === \"length\") {\n adm.setArrayLength_(value);\n }\n if (typeof name === \"symbol\" || isNaN(name)) {\n target[name] = value;\n } else {\n // numeric string\n adm.set_(parseInt(name), value);\n }\n return true;\n },\n preventExtensions: function preventExtensions() {\n die(15);\n }\n};\nvar ObservableArrayAdministration = /*#__PURE__*/function () {\n // this is the prop that gets proxied, so can't replace it!\n\n function ObservableArrayAdministration(name, enhancer, owned_, legacyMode_) {\n if (name === void 0) {\n name = process.env.NODE_ENV !== \"production\" ? \"ObservableArray@\" + getNextId() : \"ObservableArray\";\n }\n this.owned_ = void 0;\n this.legacyMode_ = void 0;\n this.atom_ = void 0;\n this.values_ = [];\n this.interceptors_ = void 0;\n this.changeListeners_ = void 0;\n this.enhancer_ = void 0;\n this.dehancer = void 0;\n this.proxy_ = void 0;\n this.lastKnownLength_ = 0;\n this.owned_ = owned_;\n this.legacyMode_ = legacyMode_;\n this.atom_ = new Atom(name);\n this.enhancer_ = function (newV, oldV) {\n return enhancer(newV, oldV, process.env.NODE_ENV !== \"production\" ? name + \"[..]\" : \"ObservableArray[..]\");\n };\n }\n var _proto = ObservableArrayAdministration.prototype;\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.dehanceValues_ = function dehanceValues_(values) {\n if (this.dehancer !== undefined && values.length > 0) {\n return values.map(this.dehancer);\n }\n return values;\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (fireImmediately === void 0) {\n fireImmediately = false;\n }\n if (fireImmediately) {\n listener({\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: \"splice\",\n index: 0,\n added: this.values_.slice(),\n addedCount: this.values_.length,\n removed: [],\n removedCount: 0\n });\n }\n return registerListener(this, listener);\n };\n _proto.getArrayLength_ = function getArrayLength_() {\n this.atom_.reportObserved();\n return this.values_.length;\n };\n _proto.setArrayLength_ = function setArrayLength_(newLength) {\n if (typeof newLength !== \"number\" || isNaN(newLength) || newLength < 0) {\n die(\"Out of range: \" + newLength);\n }\n var currentLength = this.values_.length;\n if (newLength === currentLength) {\n return;\n } else if (newLength > currentLength) {\n var newItems = new Array(newLength - currentLength);\n for (var i = 0; i < newLength - currentLength; i++) {\n newItems[i] = undefined;\n } // No Array.fill everywhere...\n this.spliceWithArray_(currentLength, 0, newItems);\n } else {\n this.spliceWithArray_(newLength, currentLength - newLength);\n }\n };\n _proto.updateArrayLength_ = function updateArrayLength_(oldLength, delta) {\n if (oldLength !== this.lastKnownLength_) {\n die(16);\n }\n this.lastKnownLength_ += delta;\n if (this.legacyMode_ && delta > 0) {\n reserveArrayBuffer(oldLength + delta + 1);\n }\n };\n _proto.spliceWithArray_ = function spliceWithArray_(index, deleteCount, newItems) {\n var _this = this;\n checkIfStateModificationsAreAllowed(this.atom_);\n var length = this.values_.length;\n if (index === undefined) {\n index = 0;\n } else if (index > length) {\n index = length;\n } else if (index < 0) {\n index = Math.max(0, length + index);\n }\n if (arguments.length === 1) {\n deleteCount = length - index;\n } else if (deleteCount === undefined || deleteCount === null) {\n deleteCount = 0;\n } else {\n deleteCount = Math.max(0, Math.min(deleteCount, length - index));\n }\n if (newItems === undefined) {\n newItems = EMPTY_ARRAY;\n }\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_,\n type: SPLICE,\n index: index,\n removedCount: deleteCount,\n added: newItems\n });\n if (!change) {\n return EMPTY_ARRAY;\n }\n deleteCount = change.removedCount;\n newItems = change.added;\n }\n newItems = newItems.length === 0 ? newItems : newItems.map(function (v) {\n return _this.enhancer_(v, undefined);\n });\n if (this.legacyMode_ || process.env.NODE_ENV !== \"production\") {\n var lengthDelta = newItems.length - deleteCount;\n this.updateArrayLength_(length, lengthDelta); // checks if internal array wasn't modified\n }\n\n var res = this.spliceItemsIntoValues_(index, deleteCount, newItems);\n if (deleteCount !== 0 || newItems.length !== 0) {\n this.notifyArraySplice_(index, newItems, res);\n }\n return this.dehanceValues_(res);\n };\n _proto.spliceItemsIntoValues_ = function spliceItemsIntoValues_(index, deleteCount, newItems) {\n if (newItems.length < MAX_SPLICE_SIZE) {\n var _this$values_;\n return (_this$values_ = this.values_).splice.apply(_this$values_, [index, deleteCount].concat(newItems));\n } else {\n // The items removed by the splice\n var res = this.values_.slice(index, index + deleteCount);\n // The items that that should remain at the end of the array\n var oldItems = this.values_.slice(index + deleteCount);\n // New length is the previous length + addition count - deletion count\n this.values_.length += newItems.length - deleteCount;\n for (var i = 0; i < newItems.length; i++) {\n this.values_[index + i] = newItems[i];\n }\n for (var _i = 0; _i < oldItems.length; _i++) {\n this.values_[index + newItems.length + _i] = oldItems[_i];\n }\n return res;\n }\n };\n _proto.notifyArrayChildUpdate_ = function notifyArrayChildUpdate_(index, newValue, oldValue) {\n var notifySpy = !this.owned_ && isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"array\",\n object: this.proxy_,\n type: UPDATE,\n debugObjectName: this.atom_.name_,\n index: index,\n newValue: newValue,\n oldValue: oldValue\n } : null;\n // The reason why this is on right hand side here (and not above), is this way the uglifier will drop it, but it won't\n // cause any runtime overhead in development mode without NODE_ENV set, unless spying is enabled\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(change);\n }\n this.atom_.reportChanged();\n if (notify) {\n notifyListeners(this, change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n };\n _proto.notifyArraySplice_ = function notifyArraySplice_(index, added, removed) {\n var notifySpy = !this.owned_ && isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: SPLICE,\n index: index,\n removed: removed,\n added: added,\n removedCount: removed.length,\n addedCount: added.length\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(change);\n }\n this.atom_.reportChanged();\n // conform: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/observe\n if (notify) {\n notifyListeners(this, change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n };\n _proto.get_ = function get_(index) {\n if (this.legacyMode_ && index >= this.values_.length) {\n console.warn(process.env.NODE_ENV !== \"production\" ? \"[mobx.array] Attempt to read an array index (\" + index + \") that is out of bounds (\" + this.values_.length + \"). Please check length first. Out of bound indices will not be tracked by MobX\" : \"[mobx] Out of bounds read: \" + index);\n return undefined;\n }\n this.atom_.reportObserved();\n return this.dehanceValue_(this.values_[index]);\n };\n _proto.set_ = function set_(index, newValue) {\n var values = this.values_;\n if (this.legacyMode_ && index > values.length) {\n // out of bounds\n die(17, index, values.length);\n }\n if (index < values.length) {\n // update at index in range\n checkIfStateModificationsAreAllowed(this.atom_);\n var oldValue = values[index];\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: UPDATE,\n object: this.proxy_,\n index: index,\n newValue: newValue\n });\n if (!change) {\n return;\n }\n newValue = change.newValue;\n }\n newValue = this.enhancer_(newValue, oldValue);\n var changed = newValue !== oldValue;\n if (changed) {\n values[index] = newValue;\n this.notifyArrayChildUpdate_(index, newValue, oldValue);\n }\n } else {\n // For out of bound index, we don't create an actual sparse array,\n // but rather fill the holes with undefined (same as setArrayLength_).\n // This could be considered a bug.\n var newItems = new Array(index + 1 - values.length);\n for (var i = 0; i < newItems.length - 1; i++) {\n newItems[i] = undefined;\n } // No Array.fill everywhere...\n newItems[newItems.length - 1] = newValue;\n this.spliceWithArray_(values.length, 0, newItems);\n }\n };\n return ObservableArrayAdministration;\n}();\nfunction createObservableArray(initialValues, enhancer, name, owned) {\n if (name === void 0) {\n name = process.env.NODE_ENV !== \"production\" ? \"ObservableArray@\" + getNextId() : \"ObservableArray\";\n }\n if (owned === void 0) {\n owned = false;\n }\n assertProxies();\n return initObservable(function () {\n var adm = new ObservableArrayAdministration(name, enhancer, owned, false);\n addHiddenFinalProp(adm.values_, $mobx, adm);\n var proxy = new Proxy(adm.values_, arrayTraps);\n adm.proxy_ = proxy;\n if (initialValues && initialValues.length) {\n adm.spliceWithArray_(0, 0, initialValues);\n }\n return proxy;\n });\n}\n// eslint-disable-next-line\nvar arrayExtensions = {\n clear: function clear() {\n return this.splice(0);\n },\n replace: function replace(newItems) {\n var adm = this[$mobx];\n return adm.spliceWithArray_(0, adm.values_.length, newItems);\n },\n // Used by JSON.stringify\n toJSON: function toJSON() {\n return this.slice();\n },\n /*\n * functions that do alter the internal structure of the array, (based on lib.es6.d.ts)\n * since these functions alter the inner structure of the array, the have side effects.\n * Because the have side effects, they should not be used in computed function,\n * and for that reason the do not call dependencyState.notifyObserved\n */\n splice: function splice(index, deleteCount) {\n for (var _len = arguments.length, newItems = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n newItems[_key - 2] = arguments[_key];\n }\n var adm = this[$mobx];\n switch (arguments.length) {\n case 0:\n return [];\n case 1:\n return adm.spliceWithArray_(index);\n case 2:\n return adm.spliceWithArray_(index, deleteCount);\n }\n return adm.spliceWithArray_(index, deleteCount, newItems);\n },\n spliceWithArray: function spliceWithArray(index, deleteCount, newItems) {\n return this[$mobx].spliceWithArray_(index, deleteCount, newItems);\n },\n push: function push() {\n var adm = this[$mobx];\n for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n adm.spliceWithArray_(adm.values_.length, 0, items);\n return adm.values_.length;\n },\n pop: function pop() {\n return this.splice(Math.max(this[$mobx].values_.length - 1, 0), 1)[0];\n },\n shift: function shift() {\n return this.splice(0, 1)[0];\n },\n unshift: function unshift() {\n var adm = this[$mobx];\n for (var _len3 = arguments.length, items = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n items[_key3] = arguments[_key3];\n }\n adm.spliceWithArray_(0, 0, items);\n return adm.values_.length;\n },\n reverse: function reverse() {\n // reverse by default mutates in place before returning the result\n // which makes it both a 'derivation' and a 'mutation'.\n if (globalState.trackingDerivation) {\n die(37, \"reverse\");\n }\n this.replace(this.slice().reverse());\n return this;\n },\n sort: function sort() {\n // sort by default mutates in place before returning the result\n // which goes against all good practices. Let's not change the array in place!\n if (globalState.trackingDerivation) {\n die(37, \"sort\");\n }\n var copy = this.slice();\n copy.sort.apply(copy, arguments);\n this.replace(copy);\n return this;\n },\n remove: function remove(value) {\n var adm = this[$mobx];\n var idx = adm.dehanceValues_(adm.values_).indexOf(value);\n if (idx > -1) {\n this.splice(idx, 1);\n return true;\n }\n return false;\n }\n};\n/**\n * Wrap function from prototype\n * Without this, everything works as well, but this works\n * faster as everything works on unproxied values\n */\naddArrayExtension(\"at\", simpleFunc);\naddArrayExtension(\"concat\", simpleFunc);\naddArrayExtension(\"flat\", simpleFunc);\naddArrayExtension(\"includes\", simpleFunc);\naddArrayExtension(\"indexOf\", simpleFunc);\naddArrayExtension(\"join\", simpleFunc);\naddArrayExtension(\"lastIndexOf\", simpleFunc);\naddArrayExtension(\"slice\", simpleFunc);\naddArrayExtension(\"toString\", simpleFunc);\naddArrayExtension(\"toLocaleString\", simpleFunc);\naddArrayExtension(\"toSorted\", simpleFunc);\naddArrayExtension(\"toSpliced\", simpleFunc);\naddArrayExtension(\"with\", simpleFunc);\n// map\naddArrayExtension(\"every\", mapLikeFunc);\naddArrayExtension(\"filter\", mapLikeFunc);\naddArrayExtension(\"find\", mapLikeFunc);\naddArrayExtension(\"findIndex\", mapLikeFunc);\naddArrayExtension(\"findLast\", mapLikeFunc);\naddArrayExtension(\"findLastIndex\", mapLikeFunc);\naddArrayExtension(\"flatMap\", mapLikeFunc);\naddArrayExtension(\"forEach\", mapLikeFunc);\naddArrayExtension(\"map\", mapLikeFunc);\naddArrayExtension(\"some\", mapLikeFunc);\naddArrayExtension(\"toReversed\", mapLikeFunc);\n// reduce\naddArrayExtension(\"reduce\", reduceLikeFunc);\naddArrayExtension(\"reduceRight\", reduceLikeFunc);\nfunction addArrayExtension(funcName, funcFactory) {\n if (typeof Array.prototype[funcName] === \"function\") {\n arrayExtensions[funcName] = funcFactory(funcName);\n }\n}\n// Report and delegate to dehanced array\nfunction simpleFunc(funcName) {\n return function () {\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n return dehancedValues[funcName].apply(dehancedValues, arguments);\n };\n}\n// Make sure callbacks recieve correct array arg #2326\nfunction mapLikeFunc(funcName) {\n return function (callback, thisArg) {\n var _this2 = this;\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n return dehancedValues[funcName](function (element, index) {\n return callback.call(thisArg, element, index, _this2);\n });\n };\n}\n// Make sure callbacks recieve correct array arg #2326\nfunction reduceLikeFunc(funcName) {\n return function () {\n var _this3 = this;\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n // #2432 - reduce behavior depends on arguments.length\n var callback = arguments[0];\n arguments[0] = function (accumulator, currentValue, index) {\n return callback(accumulator, currentValue, index, _this3);\n };\n return dehancedValues[funcName].apply(dehancedValues, arguments);\n };\n}\nvar isObservableArrayAdministration = /*#__PURE__*/createInstanceofPredicate(\"ObservableArrayAdministration\", ObservableArrayAdministration);\nfunction isObservableArray(thing) {\n return isObject(thing) && isObservableArrayAdministration(thing[$mobx]);\n}\n\nvar _Symbol$iterator, _Symbol$toStringTag;\nvar ObservableMapMarker = {};\nvar ADD = \"add\";\nvar DELETE = \"delete\";\n// just extend Map? See also https://gist.github.com/nestharus/13b4d74f2ef4a2f4357dbd3fc23c1e54\n// But: https://github.com/mobxjs/mobx/issues/1556\n_Symbol$iterator = Symbol.iterator;\n_Symbol$toStringTag = Symbol.toStringTag;\nvar ObservableMap = /*#__PURE__*/function () {\n // hasMap, not hashMap >-).\n\n function ObservableMap(initialData, enhancer_, name_) {\n var _this = this;\n if (enhancer_ === void 0) {\n enhancer_ = deepEnhancer;\n }\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"ObservableMap@\" + getNextId() : \"ObservableMap\";\n }\n this.enhancer_ = void 0;\n this.name_ = void 0;\n this[$mobx] = ObservableMapMarker;\n this.data_ = void 0;\n this.hasMap_ = void 0;\n this.keysAtom_ = void 0;\n this.interceptors_ = void 0;\n this.changeListeners_ = void 0;\n this.dehancer = void 0;\n this.enhancer_ = enhancer_;\n this.name_ = name_;\n if (!isFunction(Map)) {\n die(18);\n }\n initObservable(function () {\n _this.keysAtom_ = createAtom(process.env.NODE_ENV !== \"production\" ? _this.name_ + \".keys()\" : \"ObservableMap.keys()\");\n _this.data_ = new Map();\n _this.hasMap_ = new Map();\n if (initialData) {\n _this.merge(initialData);\n }\n });\n }\n var _proto = ObservableMap.prototype;\n _proto.has_ = function has_(key) {\n return this.data_.has(key);\n };\n _proto.has = function has(key) {\n var _this2 = this;\n if (!globalState.trackingDerivation) {\n return this.has_(key);\n }\n var entry = this.hasMap_.get(key);\n if (!entry) {\n var newEntry = entry = new ObservableValue(this.has_(key), referenceEnhancer, process.env.NODE_ENV !== \"production\" ? this.name_ + \".\" + stringifyKey(key) + \"?\" : \"ObservableMap.key?\", false);\n this.hasMap_.set(key, newEntry);\n onBecomeUnobserved(newEntry, function () {\n return _this2.hasMap_[\"delete\"](key);\n });\n }\n return entry.get();\n };\n _proto.set = function set(key, value) {\n var hasKey = this.has_(key);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: hasKey ? UPDATE : ADD,\n object: this,\n newValue: value,\n name: key\n });\n if (!change) {\n return this;\n }\n value = change.newValue;\n }\n if (hasKey) {\n this.updateValue_(key, value);\n } else {\n this.addValue_(key, value);\n }\n return this;\n };\n _proto[\"delete\"] = function _delete(key) {\n var _this3 = this;\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: DELETE,\n object: this,\n name: key\n });\n if (!change) {\n return false;\n }\n }\n if (this.has_(key)) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var _change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: this.data_.get(key).value_,\n name: key\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(_change);\n } // TODO fix type\n transaction(function () {\n var _this3$hasMap_$get;\n _this3.keysAtom_.reportChanged();\n (_this3$hasMap_$get = _this3.hasMap_.get(key)) == null ? void 0 : _this3$hasMap_$get.setNewValue_(false);\n var observable = _this3.data_.get(key);\n observable.setNewValue_(undefined);\n _this3.data_[\"delete\"](key);\n });\n if (notify) {\n notifyListeners(this, _change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n return true;\n }\n return false;\n };\n _proto.updateValue_ = function updateValue_(key, newValue) {\n var observable = this.data_.get(key);\n newValue = observable.prepareNewValue_(newValue);\n if (newValue !== globalState.UNCHANGED) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n oldValue: observable.value_,\n name: key,\n newValue: newValue\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(change);\n } // TODO fix type\n observable.setNewValue_(newValue);\n if (notify) {\n notifyListeners(this, change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n };\n _proto.addValue_ = function addValue_(key, newValue) {\n var _this4 = this;\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n transaction(function () {\n var _this4$hasMap_$get;\n var observable = new ObservableValue(newValue, _this4.enhancer_, process.env.NODE_ENV !== \"production\" ? _this4.name_ + \".\" + stringifyKey(key) : \"ObservableMap.key\", false);\n _this4.data_.set(key, observable);\n newValue = observable.value_; // value might have been changed\n (_this4$hasMap_$get = _this4.hasMap_.get(key)) == null ? void 0 : _this4$hasMap_$get.setNewValue_(true);\n _this4.keysAtom_.reportChanged();\n });\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n name: key,\n newValue: newValue\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(change);\n } // TODO fix type\n if (notify) {\n notifyListeners(this, change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n };\n _proto.get = function get(key) {\n if (this.has(key)) {\n return this.dehanceValue_(this.data_.get(key).get());\n }\n return this.dehanceValue_(undefined);\n };\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.keys = function keys() {\n this.keysAtom_.reportObserved();\n return this.data_.keys();\n };\n _proto.values = function values() {\n var self = this;\n var keys = this.keys();\n return makeIterable({\n next: function next() {\n var _keys$next = keys.next(),\n done = _keys$next.done,\n value = _keys$next.value;\n return {\n done: done,\n value: done ? undefined : self.get(value)\n };\n }\n });\n };\n _proto.entries = function entries() {\n var self = this;\n var keys = this.keys();\n return makeIterable({\n next: function next() {\n var _keys$next2 = keys.next(),\n done = _keys$next2.done,\n value = _keys$next2.value;\n return {\n done: done,\n value: done ? undefined : [value, self.get(value)]\n };\n }\n });\n };\n _proto[_Symbol$iterator] = function () {\n return this.entries();\n };\n _proto.forEach = function forEach(callback, thisArg) {\n for (var _iterator = _createForOfIteratorHelperLoose(this), _step; !(_step = _iterator()).done;) {\n var _step$value = _step.value,\n key = _step$value[0],\n value = _step$value[1];\n callback.call(thisArg, value, key, this);\n }\n }\n /** Merge another object into this object, returns this. */;\n _proto.merge = function merge(other) {\n var _this5 = this;\n if (isObservableMap(other)) {\n other = new Map(other);\n }\n transaction(function () {\n if (isPlainObject(other)) {\n getPlainObjectKeys(other).forEach(function (key) {\n return _this5.set(key, other[key]);\n });\n } else if (Array.isArray(other)) {\n other.forEach(function (_ref) {\n var key = _ref[0],\n value = _ref[1];\n return _this5.set(key, value);\n });\n } else if (isES6Map(other)) {\n if (other.constructor !== Map) {\n die(19, other);\n }\n other.forEach(function (value, key) {\n return _this5.set(key, value);\n });\n } else if (other !== null && other !== undefined) {\n die(20, other);\n }\n });\n return this;\n };\n _proto.clear = function clear() {\n var _this6 = this;\n transaction(function () {\n untracked(function () {\n for (var _iterator2 = _createForOfIteratorHelperLoose(_this6.keys()), _step2; !(_step2 = _iterator2()).done;) {\n var key = _step2.value;\n _this6[\"delete\"](key);\n }\n });\n });\n };\n _proto.replace = function replace(values) {\n var _this7 = this;\n // Implementation requirements:\n // - respect ordering of replacement map\n // - allow interceptors to run and potentially prevent individual operations\n // - don't recreate observables that already exist in original map (so we don't destroy existing subscriptions)\n // - don't _keysAtom.reportChanged if the keys of resulting map are indentical (order matters!)\n // - note that result map may differ from replacement map due to the interceptors\n transaction(function () {\n // Convert to map so we can do quick key lookups\n var replacementMap = convertToMap(values);\n var orderedData = new Map();\n // Used for optimization\n var keysReportChangedCalled = false;\n // Delete keys that don't exist in replacement map\n // if the key deletion is prevented by interceptor\n // add entry at the beginning of the result map\n for (var _iterator3 = _createForOfIteratorHelperLoose(_this7.data_.keys()), _step3; !(_step3 = _iterator3()).done;) {\n var key = _step3.value;\n // Concurrently iterating/deleting keys\n // iterator should handle this correctly\n if (!replacementMap.has(key)) {\n var deleted = _this7[\"delete\"](key);\n // Was the key removed?\n if (deleted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true;\n } else {\n // Delete prevented by interceptor\n var value = _this7.data_.get(key);\n orderedData.set(key, value);\n }\n }\n }\n // Merge entries\n for (var _iterator4 = _createForOfIteratorHelperLoose(replacementMap.entries()), _step4; !(_step4 = _iterator4()).done;) {\n var _step4$value = _step4.value,\n _key = _step4$value[0],\n _value = _step4$value[1];\n // We will want to know whether a new key is added\n var keyExisted = _this7.data_.has(_key);\n // Add or update value\n _this7.set(_key, _value);\n // The addition could have been prevent by interceptor\n if (_this7.data_.has(_key)) {\n // The update could have been prevented by interceptor\n // and also we want to preserve existing values\n // so use value from _data map (instead of replacement map)\n var _value2 = _this7.data_.get(_key);\n orderedData.set(_key, _value2);\n // Was a new key added?\n if (!keyExisted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true;\n }\n }\n }\n // Check for possible key order change\n if (!keysReportChangedCalled) {\n if (_this7.data_.size !== orderedData.size) {\n // If size differs, keys are definitely modified\n _this7.keysAtom_.reportChanged();\n } else {\n var iter1 = _this7.data_.keys();\n var iter2 = orderedData.keys();\n var next1 = iter1.next();\n var next2 = iter2.next();\n while (!next1.done) {\n if (next1.value !== next2.value) {\n _this7.keysAtom_.reportChanged();\n break;\n }\n next1 = iter1.next();\n next2 = iter2.next();\n }\n }\n }\n // Use correctly ordered map\n _this7.data_ = orderedData;\n });\n return this;\n };\n _proto.toString = function toString() {\n return \"[object ObservableMap]\";\n };\n _proto.toJSON = function toJSON() {\n return Array.from(this);\n };\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (process.env.NODE_ENV !== \"production\" && fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with maps.\");\n }\n return registerListener(this, listener);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _createClass(ObservableMap, [{\n key: \"size\",\n get: function get() {\n this.keysAtom_.reportObserved();\n return this.data_.size;\n }\n }, {\n key: _Symbol$toStringTag,\n get: function get() {\n return \"Map\";\n }\n }]);\n return ObservableMap;\n}();\n// eslint-disable-next-line\nvar isObservableMap = /*#__PURE__*/createInstanceofPredicate(\"ObservableMap\", ObservableMap);\nfunction convertToMap(dataStructure) {\n if (isES6Map(dataStructure) || isObservableMap(dataStructure)) {\n return dataStructure;\n } else if (Array.isArray(dataStructure)) {\n return new Map(dataStructure);\n } else if (isPlainObject(dataStructure)) {\n var map = new Map();\n for (var key in dataStructure) {\n map.set(key, dataStructure[key]);\n }\n return map;\n } else {\n return die(21, dataStructure);\n }\n}\n\nvar _Symbol$iterator$1, _Symbol$toStringTag$1;\nvar ObservableSetMarker = {};\n_Symbol$iterator$1 = Symbol.iterator;\n_Symbol$toStringTag$1 = Symbol.toStringTag;\nvar ObservableSet = /*#__PURE__*/function () {\n function ObservableSet(initialData, enhancer, name_) {\n var _this = this;\n if (enhancer === void 0) {\n enhancer = deepEnhancer;\n }\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"ObservableSet@\" + getNextId() : \"ObservableSet\";\n }\n this.name_ = void 0;\n this[$mobx] = ObservableSetMarker;\n this.data_ = new Set();\n this.atom_ = void 0;\n this.changeListeners_ = void 0;\n this.interceptors_ = void 0;\n this.dehancer = void 0;\n this.enhancer_ = void 0;\n this.name_ = name_;\n if (!isFunction(Set)) {\n die(22);\n }\n this.enhancer_ = function (newV, oldV) {\n return enhancer(newV, oldV, name_);\n };\n initObservable(function () {\n _this.atom_ = createAtom(_this.name_);\n if (initialData) {\n _this.replace(initialData);\n }\n });\n }\n var _proto = ObservableSet.prototype;\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.clear = function clear() {\n var _this2 = this;\n transaction(function () {\n untracked(function () {\n for (var _iterator = _createForOfIteratorHelperLoose(_this2.data_.values()), _step; !(_step = _iterator()).done;) {\n var value = _step.value;\n _this2[\"delete\"](value);\n }\n });\n });\n };\n _proto.forEach = function forEach(callbackFn, thisArg) {\n for (var _iterator2 = _createForOfIteratorHelperLoose(this), _step2; !(_step2 = _iterator2()).done;) {\n var value = _step2.value;\n callbackFn.call(thisArg, value, value, this);\n }\n };\n _proto.add = function add(value) {\n var _this3 = this;\n checkIfStateModificationsAreAllowed(this.atom_);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: ADD,\n object: this,\n newValue: value\n });\n if (!change) {\n return this;\n }\n // ideally, value = change.value would be done here, so that values can be\n // changed by interceptor. Same applies for other Set and Map api's.\n }\n\n if (!this.has(value)) {\n transaction(function () {\n _this3.data_.add(_this3.enhancer_(value, undefined));\n _this3.atom_.reportChanged();\n });\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n var notify = hasListeners(this);\n var _change = notify || notifySpy ? {\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n newValue: value\n } : null;\n if (notifySpy && process.env.NODE_ENV !== \"production\") {\n spyReportStart(_change);\n }\n if (notify) {\n notifyListeners(this, _change);\n }\n if (notifySpy && process.env.NODE_ENV !== \"production\") {\n spyReportEnd();\n }\n }\n return this;\n };\n _proto[\"delete\"] = function _delete(value) {\n var _this4 = this;\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: DELETE,\n object: this,\n oldValue: value\n });\n if (!change) {\n return false;\n }\n }\n if (this.has(value)) {\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n var notify = hasListeners(this);\n var _change2 = notify || notifySpy ? {\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: value\n } : null;\n if (notifySpy && process.env.NODE_ENV !== \"production\") {\n spyReportStart(_change2);\n }\n transaction(function () {\n _this4.atom_.reportChanged();\n _this4.data_[\"delete\"](value);\n });\n if (notify) {\n notifyListeners(this, _change2);\n }\n if (notifySpy && process.env.NODE_ENV !== \"production\") {\n spyReportEnd();\n }\n return true;\n }\n return false;\n };\n _proto.has = function has(value) {\n this.atom_.reportObserved();\n return this.data_.has(this.dehanceValue_(value));\n };\n _proto.entries = function entries() {\n var nextIndex = 0;\n var keys = Array.from(this.keys());\n var values = Array.from(this.values());\n return makeIterable({\n next: function next() {\n var index = nextIndex;\n nextIndex += 1;\n return index < values.length ? {\n value: [keys[index], values[index]],\n done: false\n } : {\n done: true\n };\n }\n });\n };\n _proto.keys = function keys() {\n return this.values();\n };\n _proto.values = function values() {\n this.atom_.reportObserved();\n var self = this;\n var nextIndex = 0;\n var observableValues = Array.from(this.data_.values());\n return makeIterable({\n next: function next() {\n return nextIndex < observableValues.length ? {\n value: self.dehanceValue_(observableValues[nextIndex++]),\n done: false\n } : {\n done: true\n };\n }\n });\n };\n _proto.replace = function replace(other) {\n var _this5 = this;\n if (isObservableSet(other)) {\n other = new Set(other);\n }\n transaction(function () {\n if (Array.isArray(other)) {\n _this5.clear();\n other.forEach(function (value) {\n return _this5.add(value);\n });\n } else if (isES6Set(other)) {\n _this5.clear();\n other.forEach(function (value) {\n return _this5.add(value);\n });\n } else if (other !== null && other !== undefined) {\n die(\"Cannot initialize set from \" + other);\n }\n });\n return this;\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n // ... 'fireImmediately' could also be true?\n if (process.env.NODE_ENV !== \"production\" && fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with sets.\");\n }\n return registerListener(this, listener);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.toJSON = function toJSON() {\n return Array.from(this);\n };\n _proto.toString = function toString() {\n return \"[object ObservableSet]\";\n };\n _proto[_Symbol$iterator$1] = function () {\n return this.values();\n };\n _createClass(ObservableSet, [{\n key: \"size\",\n get: function get() {\n this.atom_.reportObserved();\n return this.data_.size;\n }\n }, {\n key: _Symbol$toStringTag$1,\n get: function get() {\n return \"Set\";\n }\n }]);\n return ObservableSet;\n}();\n// eslint-disable-next-line\nvar isObservableSet = /*#__PURE__*/createInstanceofPredicate(\"ObservableSet\", ObservableSet);\n\nvar descriptorCache = /*#__PURE__*/Object.create(null);\nvar REMOVE = \"remove\";\nvar ObservableObjectAdministration = /*#__PURE__*/function () {\n function ObservableObjectAdministration(target_, values_, name_,\n // Used anytime annotation is not explicitely provided\n defaultAnnotation_) {\n if (values_ === void 0) {\n values_ = new Map();\n }\n if (defaultAnnotation_ === void 0) {\n defaultAnnotation_ = autoAnnotation;\n }\n this.target_ = void 0;\n this.values_ = void 0;\n this.name_ = void 0;\n this.defaultAnnotation_ = void 0;\n this.keysAtom_ = void 0;\n this.changeListeners_ = void 0;\n this.interceptors_ = void 0;\n this.proxy_ = void 0;\n this.isPlainObject_ = void 0;\n this.appliedAnnotations_ = void 0;\n this.pendingKeys_ = void 0;\n this.target_ = target_;\n this.values_ = values_;\n this.name_ = name_;\n this.defaultAnnotation_ = defaultAnnotation_;\n this.keysAtom_ = new Atom(process.env.NODE_ENV !== \"production\" ? this.name_ + \".keys\" : \"ObservableObject.keys\");\n // Optimization: we use this frequently\n this.isPlainObject_ = isPlainObject(this.target_);\n if (process.env.NODE_ENV !== \"production\" && !isAnnotation(this.defaultAnnotation_)) {\n die(\"defaultAnnotation must be valid annotation\");\n }\n if (process.env.NODE_ENV !== \"production\") {\n // Prepare structure for tracking which fields were already annotated\n this.appliedAnnotations_ = {};\n }\n }\n var _proto = ObservableObjectAdministration.prototype;\n _proto.getObservablePropValue_ = function getObservablePropValue_(key) {\n return this.values_.get(key).get();\n };\n _proto.setObservablePropValue_ = function setObservablePropValue_(key, newValue) {\n var observable = this.values_.get(key);\n if (observable instanceof ComputedValue) {\n observable.set(newValue);\n return true;\n }\n // intercept\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: UPDATE,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: newValue\n });\n if (!change) {\n return null;\n }\n newValue = change.newValue;\n }\n newValue = observable.prepareNewValue_(newValue);\n // notify spy & observers\n if (newValue !== globalState.UNCHANGED) {\n var notify = hasListeners(this);\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n var _change = notify || notifySpy ? {\n type: UPDATE,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n oldValue: observable.value_,\n name: key,\n newValue: newValue\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(_change);\n }\n observable.setNewValue_(newValue);\n if (notify) {\n notifyListeners(this, _change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n return true;\n };\n _proto.get_ = function get_(key) {\n if (globalState.trackingDerivation && !hasProp(this.target_, key)) {\n // Key doesn't exist yet, subscribe for it in case it's added later\n this.has_(key);\n }\n return this.target_[key];\n }\n /**\n * @param {PropertyKey} key\n * @param {any} value\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */;\n _proto.set_ = function set_(key, value, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n // Don't use .has(key) - we care about own\n if (hasProp(this.target_, key)) {\n // Existing prop\n if (this.values_.has(key)) {\n // Observable (can be intercepted)\n return this.setObservablePropValue_(key, value);\n } else if (proxyTrap) {\n // Non-observable - proxy\n return Reflect.set(this.target_, key, value);\n } else {\n // Non-observable\n this.target_[key] = value;\n return true;\n }\n } else {\n // New prop\n return this.extend_(key, {\n value: value,\n enumerable: true,\n writable: true,\n configurable: true\n }, this.defaultAnnotation_, proxyTrap);\n }\n }\n // Trap for \"in\"\n ;\n _proto.has_ = function has_(key) {\n if (!globalState.trackingDerivation) {\n // Skip key subscription outside derivation\n return key in this.target_;\n }\n this.pendingKeys_ || (this.pendingKeys_ = new Map());\n var entry = this.pendingKeys_.get(key);\n if (!entry) {\n entry = new ObservableValue(key in this.target_, referenceEnhancer, process.env.NODE_ENV !== \"production\" ? this.name_ + \".\" + stringifyKey(key) + \"?\" : \"ObservableObject.key?\", false);\n this.pendingKeys_.set(key, entry);\n }\n return entry.get();\n }\n /**\n * @param {PropertyKey} key\n * @param {Annotation|boolean} annotation true - use default annotation, false - ignore prop\n */;\n _proto.make_ = function make_(key, annotation) {\n if (annotation === true) {\n annotation = this.defaultAnnotation_;\n }\n if (annotation === false) {\n return;\n }\n assertAnnotable(this, annotation, key);\n if (!(key in this.target_)) {\n var _this$target_$storedA;\n // Throw on missing key, except for decorators:\n // Decorator annotations are collected from whole prototype chain.\n // When called from super() some props may not exist yet.\n // However we don't have to worry about missing prop,\n // because the decorator must have been applied to something.\n if ((_this$target_$storedA = this.target_[storedAnnotationsSymbol]) != null && _this$target_$storedA[key]) {\n return; // will be annotated by subclass constructor\n } else {\n die(1, annotation.annotationType_, this.name_ + \".\" + key.toString());\n }\n }\n var source = this.target_;\n while (source && source !== objectPrototype) {\n var descriptor = getDescriptor(source, key);\n if (descriptor) {\n var outcome = annotation.make_(this, key, descriptor, source);\n if (outcome === 0 /* MakeResult.Cancel */) {\n return;\n }\n if (outcome === 1 /* MakeResult.Break */) {\n break;\n }\n }\n source = Object.getPrototypeOf(source);\n }\n recordAnnotationApplied(this, annotation, key);\n }\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */;\n _proto.extend_ = function extend_(key, descriptor, annotation, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n if (annotation === true) {\n annotation = this.defaultAnnotation_;\n }\n if (annotation === false) {\n return this.defineProperty_(key, descriptor, proxyTrap);\n }\n assertAnnotable(this, annotation, key);\n var outcome = annotation.extend_(this, key, descriptor, proxyTrap);\n if (outcome) {\n recordAnnotationApplied(this, annotation, key);\n }\n return outcome;\n }\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */;\n _proto.defineProperty_ = function defineProperty_(key, descriptor, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n try {\n startBatch();\n // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n }\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: descriptor.value\n });\n if (!change) {\n return null;\n }\n var newValue = change.newValue;\n if (descriptor.value !== newValue) {\n descriptor = _extends({}, descriptor, {\n value: newValue\n });\n }\n }\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n // Notify\n this.notifyPropertyAddition_(key, descriptor.value);\n } finally {\n endBatch();\n }\n return true;\n }\n // If original descriptor becomes relevant, move this to annotation directly\n ;\n _proto.defineObservableProperty_ = function defineObservableProperty_(key, value, enhancer, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n try {\n startBatch();\n // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n }\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: value\n });\n if (!change) {\n return null;\n }\n value = change.newValue;\n }\n var cachedDescriptor = getCachedObservablePropDescriptor(key);\n var descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: true,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n };\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n var observable = new ObservableValue(value, enhancer, process.env.NODE_ENV !== \"production\" ? this.name_ + \".\" + key.toString() : \"ObservableObject.key\", false);\n this.values_.set(key, observable);\n // Notify (value possibly changed by ObservableValue)\n this.notifyPropertyAddition_(key, observable.value_);\n } finally {\n endBatch();\n }\n return true;\n }\n // If original descriptor becomes relevant, move this to annotation directly\n ;\n _proto.defineComputedProperty_ = function defineComputedProperty_(key, options, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n try {\n startBatch();\n // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n }\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: undefined\n });\n if (!change) {\n return null;\n }\n }\n options.name || (options.name = process.env.NODE_ENV !== \"production\" ? this.name_ + \".\" + key.toString() : \"ObservableObject.key\");\n options.context = this.proxy_ || this.target_;\n var cachedDescriptor = getCachedObservablePropDescriptor(key);\n var descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: false,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n };\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n this.values_.set(key, new ComputedValue(options));\n // Notify\n this.notifyPropertyAddition_(key, undefined);\n } finally {\n endBatch();\n }\n return true;\n }\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */;\n _proto.delete_ = function delete_(key, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n // No such prop\n if (!hasProp(this.target_, key)) {\n return true;\n }\n // Intercept\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: REMOVE\n });\n // Cancelled\n if (!change) {\n return null;\n }\n }\n // Delete\n try {\n var _this$pendingKeys_, _this$pendingKeys_$ge;\n startBatch();\n var notify = hasListeners(this);\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n var observable = this.values_.get(key);\n // Value needed for spies/listeners\n var value = undefined;\n // Optimization: don't pull the value unless we will need it\n if (!observable && (notify || notifySpy)) {\n var _getDescriptor;\n value = (_getDescriptor = getDescriptor(this.target_, key)) == null ? void 0 : _getDescriptor.value;\n }\n // delete prop (do first, may fail)\n if (proxyTrap) {\n if (!Reflect.deleteProperty(this.target_, key)) {\n return false;\n }\n } else {\n delete this.target_[key];\n }\n // Allow re-annotating this field\n if (process.env.NODE_ENV !== \"production\") {\n delete this.appliedAnnotations_[key];\n }\n // Clear observable\n if (observable) {\n this.values_[\"delete\"](key);\n // for computed, value is undefined\n if (observable instanceof ObservableValue) {\n value = observable.value_;\n }\n // Notify: autorun(() => obj[key]), see #1796\n propagateChanged(observable);\n }\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged();\n // Notify \"has\" observers\n // \"in\" as it may still exist in proto\n (_this$pendingKeys_ = this.pendingKeys_) == null ? void 0 : (_this$pendingKeys_$ge = _this$pendingKeys_.get(key)) == null ? void 0 : _this$pendingKeys_$ge.set(key in this.target_);\n // Notify spies/listeners\n if (notify || notifySpy) {\n var _change2 = {\n type: REMOVE,\n observableKind: \"object\",\n object: this.proxy_ || this.target_,\n debugObjectName: this.name_,\n oldValue: value,\n name: key\n };\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(_change2);\n }\n if (notify) {\n notifyListeners(this, _change2);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n } finally {\n endBatch();\n }\n return true;\n }\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */;\n _proto.observe_ = function observe_(callback, fireImmediately) {\n if (process.env.NODE_ENV !== \"production\" && fireImmediately === true) {\n die(\"`observe` doesn't support the fire immediately property for observable objects.\");\n }\n return registerListener(this, callback);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.notifyPropertyAddition_ = function notifyPropertyAddition_(key, value) {\n var _this$pendingKeys_2, _this$pendingKeys_2$g;\n var notify = hasListeners(this);\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n if (notify || notifySpy) {\n var change = notify || notifySpy ? {\n type: ADD,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: value\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(change);\n }\n if (notify) {\n notifyListeners(this, change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n (_this$pendingKeys_2 = this.pendingKeys_) == null ? void 0 : (_this$pendingKeys_2$g = _this$pendingKeys_2.get(key)) == null ? void 0 : _this$pendingKeys_2$g.set(true);\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged();\n };\n _proto.ownKeys_ = function ownKeys_() {\n this.keysAtom_.reportObserved();\n return ownKeys(this.target_);\n };\n _proto.keys_ = function keys_() {\n // Returns enumerable && own, but unfortunately keysAtom will report on ANY key change.\n // There is no way to distinguish between Object.keys(object) and Reflect.ownKeys(object) - both are handled by ownKeys trap.\n // We can either over-report in Object.keys(object) or under-report in Reflect.ownKeys(object)\n // We choose to over-report in Object.keys(object), because:\n // - typically it's used with simple data objects\n // - when symbolic/non-enumerable keys are relevant Reflect.ownKeys works as expected\n this.keysAtom_.reportObserved();\n return Object.keys(this.target_);\n };\n return ObservableObjectAdministration;\n}();\nfunction asObservableObject(target, options) {\n var _options$name;\n if (process.env.NODE_ENV !== \"production\" && options && isObservableObject(target)) {\n die(\"Options can't be provided for already observable objects.\");\n }\n if (hasProp(target, $mobx)) {\n if (process.env.NODE_ENV !== \"production\" && !(getAdministration(target) instanceof ObservableObjectAdministration)) {\n die(\"Cannot convert '\" + getDebugName(target) + \"' into observable object:\" + \"\\nThe target is already observable of different type.\" + \"\\nExtending builtins is not supported.\");\n }\n return target;\n }\n if (process.env.NODE_ENV !== \"production\" && !Object.isExtensible(target)) {\n die(\"Cannot make the designated object observable; it is not extensible\");\n }\n var name = (_options$name = options == null ? void 0 : options.name) != null ? _options$name : process.env.NODE_ENV !== \"production\" ? (isPlainObject(target) ? \"ObservableObject\" : target.constructor.name) + \"@\" + getNextId() : \"ObservableObject\";\n var adm = new ObservableObjectAdministration(target, new Map(), String(name), getAnnotationFromOptions(options));\n addHiddenProp(target, $mobx, adm);\n return target;\n}\nvar isObservableObjectAdministration = /*#__PURE__*/createInstanceofPredicate(\"ObservableObjectAdministration\", ObservableObjectAdministration);\nfunction getCachedObservablePropDescriptor(key) {\n return descriptorCache[key] || (descriptorCache[key] = {\n get: function get() {\n return this[$mobx].getObservablePropValue_(key);\n },\n set: function set(value) {\n return this[$mobx].setObservablePropValue_(key, value);\n }\n });\n}\nfunction isObservableObject(thing) {\n if (isObject(thing)) {\n return isObservableObjectAdministration(thing[$mobx]);\n }\n return false;\n}\nfunction recordAnnotationApplied(adm, annotation, key) {\n var _adm$target_$storedAn;\n if (process.env.NODE_ENV !== \"production\") {\n adm.appliedAnnotations_[key] = annotation;\n }\n // Remove applied decorator annotation so we don't try to apply it again in subclass constructor\n (_adm$target_$storedAn = adm.target_[storedAnnotationsSymbol]) == null ? true : delete _adm$target_$storedAn[key];\n}\nfunction assertAnnotable(adm, annotation, key) {\n // Valid annotation\n if (process.env.NODE_ENV !== \"production\" && !isAnnotation(annotation)) {\n die(\"Cannot annotate '\" + adm.name_ + \".\" + key.toString() + \"': Invalid annotation.\");\n }\n /*\n // Configurable, not sealed, not frozen\n // Possibly not needed, just a little better error then the one thrown by engine.\n // Cases where this would be useful the most (subclass field initializer) are not interceptable by this.\n if (__DEV__) {\n const configurable = getDescriptor(adm.target_, key)?.configurable\n const frozen = Object.isFrozen(adm.target_)\n const sealed = Object.isSealed(adm.target_)\n if (!configurable || frozen || sealed) {\n const fieldName = `${adm.name_}.${key.toString()}`\n const requestedAnnotationType = annotation.annotationType_\n let error = `Cannot apply '${requestedAnnotationType}' to '${fieldName}':`\n if (frozen) {\n error += `\\nObject is frozen.`\n }\n if (sealed) {\n error += `\\nObject is sealed.`\n }\n if (!configurable) {\n error += `\\nproperty is not configurable.`\n // Mention only if caused by us to avoid confusion\n if (hasProp(adm.appliedAnnotations!, key)) {\n error += `\\nTo prevent accidental re-definition of a field by a subclass, `\n error += `all annotated fields of non-plain objects (classes) are not configurable.`\n }\n }\n die(error)\n }\n }\n */\n // Not annotated\n if (process.env.NODE_ENV !== \"production\" && !isOverride(annotation) && hasProp(adm.appliedAnnotations_, key)) {\n var fieldName = adm.name_ + \".\" + key.toString();\n var currentAnnotationType = adm.appliedAnnotations_[key].annotationType_;\n var requestedAnnotationType = annotation.annotationType_;\n die(\"Cannot apply '\" + requestedAnnotationType + \"' to '\" + fieldName + \"':\" + (\"\\nThe field is already annotated with '\" + currentAnnotationType + \"'.\") + \"\\nRe-annotating fields is not allowed.\" + \"\\nUse 'override' annotation for methods overridden by subclass.\");\n }\n}\n\n// Bug in safari 9.* (or iOS 9 safari mobile). See #364\nvar ENTRY_0 = /*#__PURE__*/createArrayEntryDescriptor(0);\nvar safariPrototypeSetterInheritanceBug = /*#__PURE__*/function () {\n var v = false;\n var p = {};\n Object.defineProperty(p, \"0\", {\n set: function set() {\n v = true;\n }\n });\n /*#__PURE__*/Object.create(p)[\"0\"] = 1;\n return v === false;\n}();\n/**\n * This array buffer contains two lists of properties, so that all arrays\n * can recycle their property definitions, which significantly improves performance of creating\n * properties on the fly.\n */\nvar OBSERVABLE_ARRAY_BUFFER_SIZE = 0;\n// Typescript workaround to make sure ObservableArray extends Array\nvar StubArray = function StubArray() {};\nfunction inherit(ctor, proto) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(ctor.prototype, proto);\n } else if (ctor.prototype.__proto__ !== undefined) {\n ctor.prototype.__proto__ = proto;\n } else {\n ctor.prototype = proto;\n }\n}\ninherit(StubArray, Array.prototype);\n// Weex proto freeze protection was here,\n// but it is unclear why the hack is need as MobX never changed the prototype\n// anyway, so removed it in V6\nvar LegacyObservableArray = /*#__PURE__*/function (_StubArray, _Symbol$toStringTag, _Symbol$iterator) {\n _inheritsLoose(LegacyObservableArray, _StubArray);\n function LegacyObservableArray(initialValues, enhancer, name, owned) {\n var _this;\n if (name === void 0) {\n name = process.env.NODE_ENV !== \"production\" ? \"ObservableArray@\" + getNextId() : \"ObservableArray\";\n }\n if (owned === void 0) {\n owned = false;\n }\n _this = _StubArray.call(this) || this;\n initObservable(function () {\n var adm = new ObservableArrayAdministration(name, enhancer, owned, true);\n adm.proxy_ = _assertThisInitialized(_this);\n addHiddenFinalProp(_assertThisInitialized(_this), $mobx, adm);\n if (initialValues && initialValues.length) {\n // @ts-ignore\n _this.spliceWithArray(0, 0, initialValues);\n }\n if (safariPrototypeSetterInheritanceBug) {\n // Seems that Safari won't use numeric prototype setter untill any * numeric property is\n // defined on the instance. After that it works fine, even if this property is deleted.\n Object.defineProperty(_assertThisInitialized(_this), \"0\", ENTRY_0);\n }\n });\n return _this;\n }\n var _proto = LegacyObservableArray.prototype;\n _proto.concat = function concat() {\n this[$mobx].atom_.reportObserved();\n for (var _len = arguments.length, arrays = new Array(_len), _key = 0; _key < _len; _key++) {\n arrays[_key] = arguments[_key];\n }\n return Array.prototype.concat.apply(this.slice(),\n //@ts-ignore\n arrays.map(function (a) {\n return isObservableArray(a) ? a.slice() : a;\n }));\n };\n _proto[_Symbol$iterator] = function () {\n var self = this;\n var nextIndex = 0;\n return makeIterable({\n next: function next() {\n return nextIndex < self.length ? {\n value: self[nextIndex++],\n done: false\n } : {\n done: true,\n value: undefined\n };\n }\n });\n };\n _createClass(LegacyObservableArray, [{\n key: \"length\",\n get: function get() {\n return this[$mobx].getArrayLength_();\n },\n set: function set(newLength) {\n this[$mobx].setArrayLength_(newLength);\n }\n }, {\n key: _Symbol$toStringTag,\n get: function get() {\n return \"Array\";\n }\n }]);\n return LegacyObservableArray;\n}(StubArray, Symbol.toStringTag, Symbol.iterator);\nObject.entries(arrayExtensions).forEach(function (_ref) {\n var prop = _ref[0],\n fn = _ref[1];\n if (prop !== \"concat\") {\n addHiddenProp(LegacyObservableArray.prototype, prop, fn);\n }\n});\nfunction createArrayEntryDescriptor(index) {\n return {\n enumerable: false,\n configurable: true,\n get: function get() {\n return this[$mobx].get_(index);\n },\n set: function set(value) {\n this[$mobx].set_(index, value);\n }\n };\n}\nfunction createArrayBufferItem(index) {\n defineProperty(LegacyObservableArray.prototype, \"\" + index, createArrayEntryDescriptor(index));\n}\nfunction reserveArrayBuffer(max) {\n if (max > OBSERVABLE_ARRAY_BUFFER_SIZE) {\n for (var index = OBSERVABLE_ARRAY_BUFFER_SIZE; index < max + 100; index++) {\n createArrayBufferItem(index);\n }\n OBSERVABLE_ARRAY_BUFFER_SIZE = max;\n }\n}\nreserveArrayBuffer(1000);\nfunction createLegacyArray(initialValues, enhancer, name) {\n return new LegacyObservableArray(initialValues, enhancer, name);\n}\n\nfunction getAtom(thing, property) {\n if (typeof thing === \"object\" && thing !== null) {\n if (isObservableArray(thing)) {\n if (property !== undefined) {\n die(23);\n }\n return thing[$mobx].atom_;\n }\n if (isObservableSet(thing)) {\n return thing.atom_;\n }\n if (isObservableMap(thing)) {\n if (property === undefined) {\n return thing.keysAtom_;\n }\n var observable = thing.data_.get(property) || thing.hasMap_.get(property);\n if (!observable) {\n die(25, property, getDebugName(thing));\n }\n return observable;\n }\n if (isObservableObject(thing)) {\n if (!property) {\n return die(26);\n }\n var _observable = thing[$mobx].values_.get(property);\n if (!_observable) {\n die(27, property, getDebugName(thing));\n }\n return _observable;\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing;\n }\n } else if (isFunction(thing)) {\n if (isReaction(thing[$mobx])) {\n // disposer function\n return thing[$mobx];\n }\n }\n die(28);\n}\nfunction getAdministration(thing, property) {\n if (!thing) {\n die(29);\n }\n if (property !== undefined) {\n return getAdministration(getAtom(thing, property));\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing;\n }\n if (isObservableMap(thing) || isObservableSet(thing)) {\n return thing;\n }\n if (thing[$mobx]) {\n return thing[$mobx];\n }\n die(24, thing);\n}\nfunction getDebugName(thing, property) {\n var named;\n if (property !== undefined) {\n named = getAtom(thing, property);\n } else if (isAction(thing)) {\n return thing.name;\n } else if (isObservableObject(thing) || isObservableMap(thing) || isObservableSet(thing)) {\n named = getAdministration(thing);\n } else {\n // valid for arrays as well\n named = getAtom(thing);\n }\n return named.name_;\n}\n/**\n * Helper function for initializing observable structures, it applies:\n * 1. allowStateChanges so we don't violate enforceActions.\n * 2. untracked so we don't accidentaly subscribe to anything observable accessed during init in case the observable is created inside derivation.\n * 3. batch to avoid state version updates\n */\nfunction initObservable(cb) {\n var derivation = untrackedStart();\n var allowStateChanges = allowStateChangesStart(true);\n startBatch();\n try {\n return cb();\n } finally {\n endBatch();\n allowStateChangesEnd(allowStateChanges);\n untrackedEnd(derivation);\n }\n}\n\nvar toString = objectPrototype.toString;\nfunction deepEqual(a, b, depth) {\n if (depth === void 0) {\n depth = -1;\n }\n return eq(a, b, depth);\n}\n// Copied from https://github.com/jashkenas/underscore/blob/5c237a7c682fb68fd5378203f0bf22dce1624854/underscore.js#L1186-L1289\n// Internal recursive comparison function for `isEqual`.\nfunction eq(a, b, depth, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) {\n return a !== 0 || 1 / a === 1 / b;\n }\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) {\n return false;\n }\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) {\n return b !== b;\n }\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== \"function\" && type !== \"object\" && typeof b != \"object\") {\n return false;\n }\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) {\n return false;\n }\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case \"[object RegExp]\":\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case \"[object String]\":\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return \"\" + a === \"\" + b;\n case \"[object Number]\":\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) {\n return +b !== +b;\n }\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case \"[object Date]\":\n case \"[object Boolean]\":\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case \"[object Symbol]\":\n return typeof Symbol !== \"undefined\" && Symbol.valueOf.call(a) === Symbol.valueOf.call(b);\n case \"[object Map]\":\n case \"[object Set]\":\n // Maps and Sets are unwrapped to arrays of entry-pairs, adding an incidental level.\n // Hide this extra level by increasing the depth.\n if (depth >= 0) {\n depth++;\n }\n break;\n }\n // Unwrap any wrapped objects.\n a = unwrap(a);\n b = unwrap(b);\n var areArrays = className === \"[object Array]\";\n if (!areArrays) {\n if (typeof a != \"object\" || typeof b != \"object\") {\n return false;\n }\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor,\n bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor && isFunction(bCtor) && bCtor instanceof bCtor) && \"constructor\" in a && \"constructor\" in b) {\n return false;\n }\n }\n if (depth === 0) {\n return false;\n } else if (depth < 0) {\n depth = -1;\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) {\n return bStack[length] === b;\n }\n }\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) {\n return false;\n }\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], depth - 1, aStack, bStack)) {\n return false;\n }\n }\n } else {\n // Deep compare objects.\n var keys = Object.keys(a);\n var key;\n length = keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (Object.keys(b).length !== length) {\n return false;\n }\n while (length--) {\n // Deep compare each member\n key = keys[length];\n if (!(hasProp(b, key) && eq(a[key], b[key], depth - 1, aStack, bStack))) {\n return false;\n }\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\nfunction unwrap(a) {\n if (isObservableArray(a)) {\n return a.slice();\n }\n if (isES6Map(a) || isObservableMap(a)) {\n return Array.from(a.entries());\n }\n if (isES6Set(a) || isObservableSet(a)) {\n return Array.from(a.entries());\n }\n return a;\n}\n\nfunction makeIterable(iterator) {\n iterator[Symbol.iterator] = getSelf;\n return iterator;\n}\nfunction getSelf() {\n return this;\n}\n\nfunction isAnnotation(thing) {\n return (\n // Can be function\n thing instanceof Object && typeof thing.annotationType_ === \"string\" && isFunction(thing.make_) && isFunction(thing.extend_)\n );\n}\n\n/**\n * (c) Michel Weststrate 2015 - 2020\n * MIT Licensed\n *\n * Welcome to the mobx sources! To get a global overview of how MobX internally works,\n * this is a good place to start:\n * https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n *\n * Source folders:\n * ===============\n *\n * - api/ Most of the public static methods exposed by the module can be found here.\n * - core/ Implementation of the MobX algorithm; atoms, derivations, reactions, dependency trees, optimizations. Cool stuff can be found here.\n * - types/ All the magic that is need to have observable objects, arrays and values is in this folder. Including the modifiers like `asFlat`.\n * - utils/ Utility stuff.\n *\n */\n[\"Symbol\", \"Map\", \"Set\"].forEach(function (m) {\n var g = getGlobal();\n if (typeof g[m] === \"undefined\") {\n die(\"MobX requires global '\" + m + \"' to be available or polyfilled\");\n }\n});\nif (typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === \"object\") {\n // See: https://github.com/andykog/mobx-devtools/\n __MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({\n spy: spy,\n extras: {\n getDebugName: getDebugName\n },\n $mobx: $mobx\n });\n}\n\nexport { $mobx, FlowCancellationError, ObservableMap, ObservableSet, Reaction, allowStateChanges as _allowStateChanges, runInAction as _allowStateChangesInsideComputed, allowStateReadsEnd as _allowStateReadsEnd, allowStateReadsStart as _allowStateReadsStart, autoAction as _autoAction, _endAction, getAdministration as _getAdministration, getGlobalState as _getGlobalState, interceptReads as _interceptReads, isComputingDerivation as _isComputingDerivation, resetGlobalState as _resetGlobalState, _startAction, action, autorun, comparer, computed, configure, createAtom, apiDefineProperty as defineProperty, entries, extendObservable, flow, flowResult, get, getAtom, getDebugName, getDependencyTree, getObserverTree, has, intercept, isAction, isObservableValue as isBoxedObservable, isComputed, isComputedProp, isFlow, isFlowCancellationError, isObservable, isObservableArray, isObservableMap, isObservableObject, isObservableProp, isObservableSet, keys, makeAutoObservable, makeObservable, observable, observe, onBecomeObserved, onBecomeUnobserved, onReactionError, override, apiOwnKeys as ownKeys, reaction, remove, runInAction, set, spy, toJS, trace, transaction, untracked, values, when };\n//# sourceMappingURL=mobx.esm.js.map\n","import { makeObservable } from \"mobx\";\nimport { useState } from \"react\";\nif (!useState) {\n throw new Error(\"mobx-react-lite requires React with Hooks support\");\n}\nif (!makeObservable) {\n throw new Error(\"mobx-react-lite@3 requires mobx at least version 6 to be available\");\n}\n//# sourceMappingURL=assertEnvironment.js.map","import { configure } from \"mobx\";\nexport function defaultNoopBatch(callback) {\n callback();\n}\nexport function observerBatching(reactionScheduler) {\n if (!reactionScheduler) {\n reactionScheduler = defaultNoopBatch;\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\"[MobX] Failed to get unstable_batched updates from react-dom / react-native\");\n }\n }\n configure({ reactionScheduler: reactionScheduler });\n}\nexport var isObserverBatched = function () {\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\"[MobX] Deprecated\");\n }\n return true;\n};\n//# sourceMappingURL=observerBatching.js.map","import { getDependencyTree } from \"mobx\";\nexport function printDebugValue(v) {\n return getDependencyTree(v);\n}\n//# sourceMappingURL=printDebugValue.js.map","var globalIsUsingStaticRendering = false;\nexport function enableStaticRendering(enable) {\n globalIsUsingStaticRendering = enable;\n}\nexport function isUsingStaticRendering() {\n return globalIsUsingStaticRendering;\n}\n//# sourceMappingURL=staticRendering.js.map","export var REGISTRY_FINALIZE_AFTER = 10000;\nexport var REGISTRY_SWEEP_INTERVAL = 10000;\nvar TimerBasedFinalizationRegistry = /** @class */ (function () {\n function TimerBasedFinalizationRegistry(finalize) {\n var _this = this;\n Object.defineProperty(this, \"finalize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: finalize\n });\n Object.defineProperty(this, \"registrations\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Map()\n });\n Object.defineProperty(this, \"sweepTimeout\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // Bound so it can be used directly as setTimeout callback.\n Object.defineProperty(this, \"sweep\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: function (maxAge) {\n if (maxAge === void 0) { maxAge = REGISTRY_FINALIZE_AFTER; }\n // cancel timeout so we can force sweep anytime\n clearTimeout(_this.sweepTimeout);\n _this.sweepTimeout = undefined;\n var now = Date.now();\n _this.registrations.forEach(function (registration, token) {\n if (now - registration.registeredAt >= maxAge) {\n _this.finalize(registration.value);\n _this.registrations.delete(token);\n }\n });\n if (_this.registrations.size > 0) {\n _this.scheduleSweep();\n }\n }\n });\n // Bound so it can be exported directly as clearTimers test utility.\n Object.defineProperty(this, \"finalizeAllImmediately\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: function () {\n _this.sweep(0);\n }\n });\n }\n // Token is actually required with this impl\n Object.defineProperty(TimerBasedFinalizationRegistry.prototype, \"register\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (target, value, token) {\n this.registrations.set(token, {\n value: value,\n registeredAt: Date.now()\n });\n this.scheduleSweep();\n }\n });\n Object.defineProperty(TimerBasedFinalizationRegistry.prototype, \"unregister\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (token) {\n this.registrations.delete(token);\n }\n });\n Object.defineProperty(TimerBasedFinalizationRegistry.prototype, \"scheduleSweep\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n if (this.sweepTimeout === undefined) {\n this.sweepTimeout = setTimeout(this.sweep, REGISTRY_SWEEP_INTERVAL);\n }\n }\n });\n return TimerBasedFinalizationRegistry;\n}());\nexport { TimerBasedFinalizationRegistry };\nexport var UniversalFinalizationRegistry = typeof FinalizationRegistry !== \"undefined\"\n ? FinalizationRegistry\n : TimerBasedFinalizationRegistry;\n//# sourceMappingURL=UniversalFinalizationRegistry.js.map","import { UniversalFinalizationRegistry } from \"./UniversalFinalizationRegistry\";\nexport var observerFinalizationRegistry = new UniversalFinalizationRegistry(function (adm) {\n var _a;\n (_a = adm.reaction) === null || _a === void 0 ? void 0 : _a.dispose();\n adm.reaction = null;\n});\n//# sourceMappingURL=observerFinalizationRegistry.js.map","import { Reaction } from \"mobx\";\nimport React from \"react\";\nimport { printDebugValue } from \"./utils/printDebugValue\";\nimport { isUsingStaticRendering } from \"./staticRendering\";\nimport { observerFinalizationRegistry } from \"./utils/observerFinalizationRegistry\";\nimport { useSyncExternalStore } from \"use-sync-external-store/shim\";\n// Required by SSR when hydrating #3669\nvar getServerSnapshot = function () { };\nfunction createReaction(adm) {\n adm.reaction = new Reaction(\"observer\".concat(adm.name), function () {\n var _a;\n adm.stateVersion = Symbol();\n // onStoreChange won't be available until the component \"mounts\".\n // If state changes in between initial render and mount,\n // `useSyncExternalStore` should handle that by checking the state version and issuing update.\n (_a = adm.onStoreChange) === null || _a === void 0 ? void 0 : _a.call(adm);\n });\n}\nexport function useObserver(render, baseComponentName) {\n if (baseComponentName === void 0) { baseComponentName = \"observed\"; }\n if (isUsingStaticRendering()) {\n return render();\n }\n var admRef = React.useRef(null);\n if (!admRef.current) {\n // First render\n var adm_1 = {\n reaction: null,\n onStoreChange: null,\n stateVersion: Symbol(),\n name: baseComponentName,\n subscribe: function (onStoreChange) {\n // Do NOT access admRef here!\n observerFinalizationRegistry.unregister(adm_1);\n adm_1.onStoreChange = onStoreChange;\n if (!adm_1.reaction) {\n // We've lost our reaction and therefore all subscriptions, occurs when:\n // 1. Timer based finalization registry disposed reaction before component mounted.\n // 2. React \"re-mounts\" same component without calling render in between (typically ).\n // We have to recreate reaction and schedule re-render to recreate subscriptions,\n // even if state did not change.\n createReaction(adm_1);\n // `onStoreChange` won't force update if subsequent `getSnapshot` returns same value.\n // So we make sure that is not the case\n adm_1.stateVersion = Symbol();\n }\n return function () {\n var _a;\n // Do NOT access admRef here!\n adm_1.onStoreChange = null;\n (_a = adm_1.reaction) === null || _a === void 0 ? void 0 : _a.dispose();\n adm_1.reaction = null;\n };\n },\n getSnapshot: function () {\n // Do NOT access admRef here!\n return adm_1.stateVersion;\n }\n };\n admRef.current = adm_1;\n }\n var adm = admRef.current;\n if (!adm.reaction) {\n // First render or reaction was disposed by registry before subscribe\n createReaction(adm);\n // StrictMode/ConcurrentMode/Suspense may mean that our component is\n // rendered and abandoned multiple times, so we need to track leaked\n // Reactions.\n observerFinalizationRegistry.register(admRef, adm, adm);\n }\n React.useDebugValue(adm.reaction, printDebugValue);\n useSyncExternalStore(\n // Both of these must be stable, otherwise it would keep resubscribing every render.\n adm.subscribe, adm.getSnapshot, getServerSnapshot);\n // render the original component, but have the\n // reaction track the observables, so that rendering\n // can be invalidated (see above) once a dependency changes\n var renderResult;\n var exception;\n adm.reaction.track(function () {\n try {\n renderResult = render();\n }\n catch (e) {\n exception = e;\n }\n });\n if (exception) {\n throw exception; // re-throw any exceptions caught during rendering\n }\n return renderResult;\n}\n//# sourceMappingURL=useObserver.js.map","import { forwardRef, memo } from \"react\";\nimport { isUsingStaticRendering } from \"./staticRendering\";\nimport { useObserver } from \"./useObserver\";\nvar warnObserverOptionsDeprecated = true;\nvar hasSymbol = typeof Symbol === \"function\" && Symbol.for;\n// Using react-is had some issues (and operates on elements, not on types), see #608 / #609\nvar ReactForwardRefSymbol = hasSymbol\n ? Symbol.for(\"react.forward_ref\")\n : typeof forwardRef === \"function\" && forwardRef(function (props) { return null; })[\"$$typeof\"];\nvar ReactMemoSymbol = hasSymbol\n ? Symbol.for(\"react.memo\")\n : typeof memo === \"function\" && memo(function (props) { return null; })[\"$$typeof\"];\n// n.b. base case is not used for actual typings or exported in the typing files\nexport function observer(baseComponent, \n// TODO remove in next major\noptions) {\n var _a;\n if (process.env.NODE_ENV !== \"production\" && warnObserverOptionsDeprecated && options) {\n warnObserverOptionsDeprecated = false;\n console.warn(\"[mobx-react-lite] `observer(fn, { forwardRef: true })` is deprecated, use `observer(React.forwardRef(fn))`\");\n }\n if (ReactMemoSymbol && baseComponent[\"$$typeof\"] === ReactMemoSymbol) {\n throw new Error(\"[mobx-react-lite] You are trying to use `observer` on a function component wrapped in either another `observer` or `React.memo`. The observer already applies 'React.memo' for you.\");\n }\n // The working of observer is explained step by step in this talk: https://www.youtube.com/watch?v=cPF4iBedoF0&feature=youtu.be&t=1307\n if (isUsingStaticRendering()) {\n return baseComponent;\n }\n var useForwardRef = (_a = options === null || options === void 0 ? void 0 : options.forwardRef) !== null && _a !== void 0 ? _a : false;\n var render = baseComponent;\n var baseComponentName = baseComponent.displayName || baseComponent.name;\n // If already wrapped with forwardRef, unwrap,\n // so we can patch render and apply memo\n if (ReactForwardRefSymbol && baseComponent[\"$$typeof\"] === ReactForwardRefSymbol) {\n useForwardRef = true;\n render = baseComponent[\"render\"];\n if (typeof render !== \"function\") {\n throw new Error(\"[mobx-react-lite] `render` property of ForwardRef was not a function\");\n }\n }\n var observerComponent = function (props, ref) {\n return useObserver(function () { return render(props, ref); }, baseComponentName);\n };\n observerComponent.displayName = baseComponent.displayName;\n Object.defineProperty(observerComponent, \"name\", {\n value: baseComponent.name,\n writable: true,\n configurable: true\n });\n // Support legacy context: `contextTypes` must be applied before `memo`\n if (baseComponent.contextTypes) {\n ;\n observerComponent.contextTypes = baseComponent.contextTypes;\n }\n if (useForwardRef) {\n // `forwardRef` must be applied prior `memo`\n // `forwardRef(observer(cmp))` throws:\n // \"forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))\"\n observerComponent = forwardRef(observerComponent);\n }\n // memo; we are not interested in deep updates\n // in props; we assume that if deep objects are changed,\n // this is in observables, which would have been tracked anyway\n observerComponent = memo(observerComponent);\n copyStaticProperties(baseComponent, observerComponent);\n if (\"production\" !== process.env.NODE_ENV) {\n Object.defineProperty(observerComponent, \"contextTypes\", {\n set: function () {\n var _a, _b;\n throw new Error(\"[mobx-react-lite] `\".concat(this.displayName || ((_a = this.type) === null || _a === void 0 ? void 0 : _a.displayName) || ((_b = this.type) === null || _b === void 0 ? void 0 : _b.name) || \"Component\", \".contextTypes` must be set before applying `observer`.\"));\n }\n });\n }\n return observerComponent;\n}\n// based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\nvar hoistBlackList = {\n $$typeof: true,\n render: true,\n compare: true,\n type: true,\n // Don't redefine `displayName`,\n // it's defined as getter-setter pair on `memo` (see #3192).\n displayName: true\n};\nfunction copyStaticProperties(base, target) {\n Object.keys(base).forEach(function (key) {\n if (!hoistBlackList[key]) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key));\n }\n });\n}\n//# sourceMappingURL=observer.js.map","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { useDeprecated } from \"./utils/utils\";\nimport { observable, runInAction } from \"mobx\";\nimport { useState } from \"react\";\nexport function useAsObservableSource(current) {\n if (\"production\" !== process.env.NODE_ENV)\n useDeprecated(\"[mobx-react-lite] 'useAsObservableSource' is deprecated, please store the values directly in an observable, for example by using 'useLocalObservable', and sync future updates using 'useEffect' when needed. See the README for examples.\");\n var _a = __read(useState(function () { return observable(current, {}, { deep: false }); }), 1), res = _a[0];\n runInAction(function () {\n Object.assign(res, current);\n });\n return res;\n}\n//# sourceMappingURL=useAsObservableSource.js.map","var _a;\nimport \"./utils/assertEnvironment\";\nimport { unstable_batchedUpdates as batch } from \"./utils/reactBatchedUpdates\";\nimport { observerBatching } from \"./utils/observerBatching\";\nimport { useDeprecated } from \"./utils/utils\";\nimport { useObserver as useObserverOriginal } from \"./useObserver\";\nimport { enableStaticRendering } from \"./staticRendering\";\nimport { observerFinalizationRegistry } from \"./utils/observerFinalizationRegistry\";\nobserverBatching(batch);\nexport { isUsingStaticRendering, enableStaticRendering } from \"./staticRendering\";\nexport { observer } from \"./observer\";\nexport { Observer } from \"./ObserverComponent\";\nexport { useLocalObservable } from \"./useLocalObservable\";\nexport { useLocalStore } from \"./useLocalStore\";\nexport { useAsObservableSource } from \"./useAsObservableSource\";\nexport { observerFinalizationRegistry as _observerFinalizationRegistry };\nexport var clearTimers = (_a = observerFinalizationRegistry[\"finalizeAllImmediately\"]) !== null && _a !== void 0 ? _a : (function () { });\nexport function useObserver(fn, baseComponentName) {\n if (baseComponentName === void 0) { baseComponentName = \"observed\"; }\n if (\"production\" !== process.env.NODE_ENV) {\n useDeprecated(\"[mobx-react-lite] 'useObserver(fn)' is deprecated. Use `{fn}` instead, or wrap the entire component in `observer`.\");\n }\n return useObserverOriginal(fn, baseComponentName);\n}\nexport { isObserverBatched, observerBatching } from \"./utils/observerBatching\";\nexport function useStaticRendering(enable) {\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\"[mobx-react-lite] 'useStaticRendering' is deprecated, use 'enableStaticRendering' instead\");\n }\n enableStaticRendering(enable);\n}\n//# sourceMappingURL=index.js.map","import { _getGlobalState, Reaction, _allowStateChanges, untracked, isObservableMap, isObservableObject, isObservableArray, observable } from 'mobx';\nimport React__default, { PureComponent, Component } from 'react';\nimport { isUsingStaticRendering, _observerFinalizationRegistry, observer as observer$1 } from 'mobx-react-lite';\nexport { Observer, enableStaticRendering, isUsingStaticRendering, observerBatching, useAsObservableSource, useLocalObservable, useLocalStore, useObserver, useStaticRendering } from 'mobx-react-lite';\n\nfunction shallowEqual(objA, objB) {\n //From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n if (is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) {\n return false;\n }\n for (var i = 0; i < keysA.length; i++) {\n if (!Object.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\nfunction is(x, y) {\n // From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n// based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\nvar hoistBlackList = {\n $$typeof: 1,\n render: 1,\n compare: 1,\n type: 1,\n childContextTypes: 1,\n contextType: 1,\n contextTypes: 1,\n defaultProps: 1,\n getDefaultProps: 1,\n getDerivedStateFromError: 1,\n getDerivedStateFromProps: 1,\n mixins: 1,\n displayName: 1,\n propTypes: 1\n};\nfunction copyStaticProperties(base, target) {\n var protoProps = Object.getOwnPropertyNames(Object.getPrototypeOf(base));\n Object.getOwnPropertyNames(base).forEach(function (key) {\n if (!hoistBlackList[key] && protoProps.indexOf(key) === -1) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key));\n }\n });\n}\n/**\n * Utilities for patching componentWillUnmount, to make sure @disposeOnUnmount works correctly icm with user defined hooks\n * and the handler provided by mobx-react\n */\nvar mobxMixins = /*#__PURE__*/Symbol(\"patchMixins\");\nvar mobxPatchedDefinition = /*#__PURE__*/Symbol(\"patchedDefinition\");\nfunction getMixins(target, methodName) {\n var mixins = target[mobxMixins] = target[mobxMixins] || {};\n var methodMixins = mixins[methodName] = mixins[methodName] || {};\n methodMixins.locks = methodMixins.locks || 0;\n methodMixins.methods = methodMixins.methods || [];\n return methodMixins;\n}\nfunction wrapper(realMethod, mixins) {\n var _this = this;\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n // locks are used to ensure that mixins are invoked only once per invocation, even on recursive calls\n mixins.locks++;\n try {\n var retVal;\n if (realMethod !== undefined && realMethod !== null) {\n retVal = realMethod.apply(this, args);\n }\n return retVal;\n } finally {\n mixins.locks--;\n if (mixins.locks === 0) {\n mixins.methods.forEach(function (mx) {\n mx.apply(_this, args);\n });\n }\n }\n}\nfunction wrapFunction(realMethod, mixins) {\n var fn = function fn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n wrapper.call.apply(wrapper, [this, realMethod, mixins].concat(args));\n };\n return fn;\n}\nfunction patch(target, methodName, mixinMethod) {\n var mixins = getMixins(target, methodName);\n if (mixins.methods.indexOf(mixinMethod) < 0) {\n mixins.methods.push(mixinMethod);\n }\n var oldDefinition = Object.getOwnPropertyDescriptor(target, methodName);\n if (oldDefinition && oldDefinition[mobxPatchedDefinition]) {\n // already patched definition, do not repatch\n return;\n }\n var originalMethod = target[methodName];\n var newDefinition = createDefinition(target, methodName, oldDefinition ? oldDefinition.enumerable : undefined, mixins, originalMethod);\n Object.defineProperty(target, methodName, newDefinition);\n}\nfunction createDefinition(target, methodName, enumerable, mixins, originalMethod) {\n var _ref;\n var wrappedFunc = wrapFunction(originalMethod, mixins);\n return _ref = {}, _ref[mobxPatchedDefinition] = true, _ref.get = function get() {\n return wrappedFunc;\n }, _ref.set = function set(value) {\n if (this === target) {\n wrappedFunc = wrapFunction(value, mixins);\n } else {\n // when it is an instance of the prototype/a child prototype patch that particular case again separately\n // since we need to store separate values depending on wether it is the actual instance, the prototype, etc\n // e.g. the method for super might not be the same as the method for the prototype which might be not the same\n // as the method for the instance\n var newDefinition = createDefinition(this, methodName, enumerable, mixins, value);\n Object.defineProperty(this, methodName, newDefinition);\n }\n }, _ref.configurable = true, _ref.enumerable = enumerable, _ref;\n}\n\nvar administrationSymbol = /*#__PURE__*/Symbol(\"ObserverAdministration\");\nvar isMobXReactObserverSymbol = /*#__PURE__*/Symbol(\"isMobXReactObserver\");\nvar observablePropDescriptors;\nif (process.env.NODE_ENV !== \"production\") {\n observablePropDescriptors = {\n props: /*#__PURE__*/createObservablePropDescriptor(\"props\"),\n state: /*#__PURE__*/createObservablePropDescriptor(\"state\"),\n context: /*#__PURE__*/createObservablePropDescriptor(\"context\")\n };\n}\nfunction getAdministration(component) {\n var _component$administra;\n // We create administration lazily, because we can't patch constructor\n // and the exact moment of initialization partially depends on React internals.\n // At the time of writing this, the first thing invoked is one of the observable getter/setter (state/props/context).\n return (_component$administra = component[administrationSymbol]) != null ? _component$administra : component[administrationSymbol] = {\n reaction: null,\n mounted: false,\n reactionInvalidatedBeforeMount: false,\n forceUpdate: null,\n name: getDisplayName(component.constructor),\n state: undefined,\n props: undefined,\n context: undefined\n };\n}\nfunction makeClassComponentObserver(componentClass) {\n var prototype = componentClass.prototype;\n if (componentClass[isMobXReactObserverSymbol]) {\n var displayName = getDisplayName(componentClass);\n throw new Error(\"The provided component class (\" + displayName + \") has already been declared as an observer component.\");\n } else {\n componentClass[isMobXReactObserverSymbol] = true;\n }\n if (prototype.componentWillReact) {\n throw new Error(\"The componentWillReact life-cycle event is no longer supported\");\n }\n if (componentClass[\"__proto__\"] !== PureComponent) {\n if (!prototype.shouldComponentUpdate) {\n prototype.shouldComponentUpdate = observerSCU;\n } else if (prototype.shouldComponentUpdate !== observerSCU) {\n // n.b. unequal check, instead of existence check, as @observer might be on superclass as well\n throw new Error(\"It is not allowed to use shouldComponentUpdate in observer based components.\");\n }\n }\n if (process.env.NODE_ENV !== \"production\") {\n Object.defineProperties(prototype, observablePropDescriptors);\n }\n var originalRender = prototype.render;\n if (typeof originalRender !== \"function\") {\n var _displayName = getDisplayName(componentClass);\n throw new Error(\"[mobx-react] class component (\" + _displayName + \") is missing `render` method.\" + \"\\n`observer` requires `render` being a function defined on prototype.\" + \"\\n`render = () => {}` or `render = function() {}` is not supported.\");\n }\n prototype.render = function () {\n Object.defineProperty(this, \"render\", {\n // There is no safe way to replace render, therefore it's forbidden.\n configurable: false,\n writable: false,\n value: isUsingStaticRendering() ? originalRender : createReactiveRender.call(this, originalRender)\n });\n return this.render();\n };\n var originalComponentDidMount = prototype.componentDidMount;\n prototype.componentDidMount = function () {\n var _this = this;\n if (process.env.NODE_ENV !== \"production\" && this.componentDidMount !== Object.getPrototypeOf(this).componentDidMount) {\n var _displayName2 = getDisplayName(componentClass);\n throw new Error(\"[mobx-react] `observer(\" + _displayName2 + \").componentDidMount` must be defined on prototype.\" + \"\\n`componentDidMount = () => {}` or `componentDidMount = function() {}` is not supported.\");\n }\n // `componentDidMount` may not be called at all. React can abandon the instance after `render`.\n // That's why we use finalization registry to dispose reaction created during render.\n // Happens with `` see #3492\n //\n // `componentDidMount` can be called immediately after `componentWillUnmount` without calling `render` in between.\n // Happens with ``see #3395.\n //\n // If `componentDidMount` is called, it's guaranteed to run synchronously with render (similary to `useLayoutEffect`).\n // Therefore we don't have to worry about external (observable) state being updated before mount (no state version checking).\n //\n // Things may change: \"In the future, React will provide a feature that lets components preserve state between unmounts\"\n var admin = getAdministration(this);\n admin.mounted = true;\n // Component instance committed, prevent reaction disposal.\n _observerFinalizationRegistry.unregister(this);\n // We don't set forceUpdate before mount because it requires a reference to `this`,\n // therefore `this` could NOT be garbage collected before mount,\n // preventing reaction disposal by FinalizationRegistry and leading to memory leak.\n // As an alternative we could have `admin.instanceRef = new WeakRef(this)`, but lets avoid it if possible.\n admin.forceUpdate = function () {\n return _this.forceUpdate();\n };\n if (!admin.reaction || admin.reactionInvalidatedBeforeMount) {\n // Missing reaction:\n // 1. Instance was unmounted (reaction disposed) and immediately remounted without running render #3395.\n // 2. Reaction was disposed by finalization registry before mount. Shouldn't ever happen for class components:\n // `componentDidMount` runs synchronously after render, but our registry are deferred (can't run in between).\n // In any case we lost subscriptions to observables, so we have to create new reaction and re-render to resubscribe.\n // The reaction will be created lazily by following render.\n // Reaction invalidated before mount:\n // 1. A descendant's `componenDidMount` invalidated it's parent #3730\n admin.forceUpdate();\n }\n return originalComponentDidMount == null ? void 0 : originalComponentDidMount.apply(this, arguments);\n };\n // TODO@major Overly complicated \"patch\" is only needed to support the deprecated @disposeOnUnmount\n patch(prototype, \"componentWillUnmount\", function () {\n var _admin$reaction;\n if (isUsingStaticRendering()) {\n return;\n }\n var admin = getAdministration(this);\n (_admin$reaction = admin.reaction) == null ? void 0 : _admin$reaction.dispose();\n admin.reaction = null;\n admin.forceUpdate = null;\n admin.mounted = false;\n admin.reactionInvalidatedBeforeMount = false;\n });\n return componentClass;\n}\n// Generates a friendly name for debugging\nfunction getDisplayName(componentClass) {\n return componentClass.displayName || componentClass.name || \"\";\n}\nfunction createReactiveRender(originalRender) {\n var boundOriginalRender = originalRender.bind(this);\n var admin = getAdministration(this);\n function reactiveRender() {\n if (!admin.reaction) {\n // Create reaction lazily to support re-mounting #3395\n admin.reaction = createReaction(admin);\n if (!admin.mounted) {\n // React can abandon this instance and never call `componentDidMount`/`componentWillUnmount`,\n // we have to make sure reaction will be disposed.\n _observerFinalizationRegistry.register(this, admin, this);\n }\n }\n var error = undefined;\n var renderResult = undefined;\n admin.reaction.track(function () {\n try {\n // TODO@major\n // Optimization: replace with _allowStateChangesStart/End (not available in mobx@6.0.0)\n renderResult = _allowStateChanges(false, boundOriginalRender);\n } catch (e) {\n error = e;\n }\n });\n if (error) {\n throw error;\n }\n return renderResult;\n }\n return reactiveRender;\n}\nfunction createReaction(admin) {\n return new Reaction(admin.name + \".render()\", function () {\n if (!admin.mounted) {\n // This is neccessary to avoid react warning about calling forceUpdate on component that isn't mounted yet.\n // This happens when component is abandoned after render - our reaction is already created and reacts to changes.\n // `componenDidMount` runs synchronously after `render`, so unlike functional component, there is no delay during which the reaction could be invalidated.\n // However `componentDidMount` runs AFTER it's descendants' `componentDidMount`, which CAN invalidate the reaction, see #3730. Therefore remember and forceUpdate on mount.\n admin.reactionInvalidatedBeforeMount = true;\n return;\n }\n try {\n admin.forceUpdate == null ? void 0 : admin.forceUpdate();\n } catch (error) {\n var _admin$reaction2;\n (_admin$reaction2 = admin.reaction) == null ? void 0 : _admin$reaction2.dispose();\n admin.reaction = null;\n }\n });\n}\nfunction observerSCU(nextProps, nextState) {\n if (isUsingStaticRendering()) {\n console.warn(\"[mobx-react] It seems that a re-rendering of a React component is triggered while in static (server-side) mode. Please make sure components are rendered only once server-side.\");\n }\n // update on any state changes (as is the default)\n if (this.state !== nextState) {\n return true;\n }\n // update if props are shallowly not equal, inspired by PureRenderMixin\n // we could return just 'false' here, and avoid the `skipRender` checks etc\n // however, it is nicer if lifecycle events are triggered like usually,\n // so we return true here if props are shallowly modified.\n return !shallowEqual(this.props, nextProps);\n}\nfunction createObservablePropDescriptor(key) {\n return {\n configurable: true,\n enumerable: true,\n get: function get() {\n var admin = getAdministration(this);\n var derivation = _getGlobalState().trackingDerivation;\n if (derivation && derivation !== admin.reaction) {\n throw new Error(\"[mobx-react] Cannot read \\\"\" + admin.name + \".\" + key + \"\\\" in a reactive context, as it isn't observable.\\n Please use component lifecycle method to copy the value into a local observable first.\\n See https://github.com/mobxjs/mobx/blob/main/packages/mobx-react/README.md#note-on-using-props-and-state-in-derivations\");\n }\n return admin[key];\n },\n set: function set(value) {\n getAdministration(this)[key] = value;\n }\n };\n}\n\nfunction observer(component, context) {\n if (context && context.kind !== \"class\") {\n throw new Error(\"The @observer decorator can be used on classes only\");\n }\n if (component[\"isMobxInjector\"] === true) {\n console.warn(\"Mobx observer: You are trying to use `observer` on a component that already has `inject`. Please apply `observer` before applying `inject`\");\n }\n if (Object.prototype.isPrototypeOf.call(Component, component) || Object.prototype.isPrototypeOf.call(PureComponent, component)) {\n // Class component\n return makeClassComponentObserver(component);\n } else {\n // Function component\n return observer$1(component);\n }\n}\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nvar _excluded = [\"children\"];\nvar MobXProviderContext = /*#__PURE__*/React__default.createContext({});\nfunction Provider(props) {\n var children = props.children,\n stores = _objectWithoutPropertiesLoose(props, _excluded);\n var parentValue = React__default.useContext(MobXProviderContext);\n var mutableProviderRef = React__default.useRef(_extends({}, parentValue, stores));\n var value = mutableProviderRef.current;\n if (process.env.NODE_ENV !== \"production\") {\n var newValue = _extends({}, value, stores); // spread in previous state for the context based stores\n if (!shallowEqual(value, newValue)) {\n throw new Error(\"MobX Provider: The set of provided stores has changed. See: https://github.com/mobxjs/mobx-react#the-set-of-provided-stores-has-changed-error.\");\n }\n }\n return React__default.createElement(MobXProviderContext.Provider, {\n value: value\n }, children);\n}\nProvider.displayName = \"MobXProvider\";\n\n/**\n * Store Injection\n */\nfunction createStoreInjector(grabStoresFn, component, injectNames, makeReactive) {\n // Support forward refs\n var Injector = React__default.forwardRef(function (props, ref) {\n var newProps = _extends({}, props);\n var context = React__default.useContext(MobXProviderContext);\n Object.assign(newProps, grabStoresFn(context || {}, newProps) || {});\n if (ref) {\n newProps.ref = ref;\n }\n return React__default.createElement(component, newProps);\n });\n if (makeReactive) Injector = observer(Injector);\n Injector[\"isMobxInjector\"] = true; // assigned late to suppress observer warning\n // Static fields from component should be visible on the generated Injector\n copyStaticProperties(component, Injector);\n Injector[\"wrappedComponent\"] = component;\n Injector.displayName = getInjectName(component, injectNames);\n return Injector;\n}\nfunction getInjectName(component, injectNames) {\n var displayName;\n var componentName = component.displayName || component.name || component.constructor && component.constructor.name || \"Component\";\n if (injectNames) displayName = \"inject-with-\" + injectNames + \"(\" + componentName + \")\";else displayName = \"inject(\" + componentName + \")\";\n return displayName;\n}\nfunction grabStoresByName(storeNames) {\n return function (baseStores, nextProps) {\n storeNames.forEach(function (storeName) {\n if (storeName in nextProps // prefer props over stores\n ) return;\n if (!(storeName in baseStores)) throw new Error(\"MobX injector: Store '\" + storeName + \"' is not available! Make sure it is provided by some Provider\");\n nextProps[storeName] = baseStores[storeName];\n });\n return nextProps;\n };\n}\n/**\n * higher order component that injects stores to a child.\n * takes either a varargs list of strings, which are stores read from the context,\n * or a function that manually maps the available stores from the context to props:\n * storesToProps(mobxStores, props, context) => newProps\n */\nfunction inject() {\n for (var _len = arguments.length, storeNames = new Array(_len), _key = 0; _key < _len; _key++) {\n storeNames[_key] = arguments[_key];\n }\n if (typeof arguments[0] === \"function\") {\n var grabStoresFn = arguments[0];\n return function (componentClass) {\n return createStoreInjector(grabStoresFn, componentClass, grabStoresFn.name, true);\n };\n } else {\n return function (componentClass) {\n return createStoreInjector(grabStoresByName(storeNames), componentClass, storeNames.join(\"-\"), false);\n };\n }\n}\n\nvar reactMajorVersion = /*#__PURE__*/Number.parseInt( /*#__PURE__*/React__default.version.split(\".\")[0]);\nvar warnedAboutDisposeOnUnmountDeprecated = false;\nvar protoStoreKey = /*#__PURE__*/Symbol(\"disposeOnUnmountProto\");\nvar instStoreKey = /*#__PURE__*/Symbol(\"disposeOnUnmountInst\");\nfunction runDisposersOnWillUnmount() {\n var _this = this;\n [].concat(this[protoStoreKey] || [], this[instStoreKey] || []).forEach(function (propKeyOrFunction) {\n var prop = typeof propKeyOrFunction === \"string\" ? _this[propKeyOrFunction] : propKeyOrFunction;\n if (prop !== undefined && prop !== null) {\n if (Array.isArray(prop)) prop.map(function (f) {\n return f();\n });else prop();\n }\n });\n}\n/**\n * @deprecated `disposeOnUnmount` is not compatible with React 18 and higher.\n */\nfunction disposeOnUnmount(target, propertyKeyOrFunction) {\n if (Array.isArray(propertyKeyOrFunction)) {\n return propertyKeyOrFunction.map(function (fn) {\n return disposeOnUnmount(target, fn);\n });\n }\n if (!warnedAboutDisposeOnUnmountDeprecated) {\n if (reactMajorVersion >= 18) {\n console.error(\"[mobx-react] disposeOnUnmount is not compatible with React 18 and higher. Don't use it.\");\n } else {\n console.warn(\"[mobx-react] disposeOnUnmount is deprecated. It won't work correctly with React 18 and higher.\");\n }\n warnedAboutDisposeOnUnmountDeprecated = true;\n }\n var c = Object.getPrototypeOf(target).constructor;\n var c2 = Object.getPrototypeOf(target.constructor);\n // Special case for react-hot-loader\n var c3 = Object.getPrototypeOf(Object.getPrototypeOf(target));\n if (!(c === React__default.Component || c === React__default.PureComponent || c2 === React__default.Component || c2 === React__default.PureComponent || c3 === React__default.Component || c3 === React__default.PureComponent)) {\n throw new Error(\"[mobx-react] disposeOnUnmount only supports direct subclasses of React.Component or React.PureComponent.\");\n }\n if (typeof propertyKeyOrFunction !== \"string\" && typeof propertyKeyOrFunction !== \"function\" && !Array.isArray(propertyKeyOrFunction)) {\n throw new Error(\"[mobx-react] disposeOnUnmount only works if the parameter is either a property key or a function.\");\n }\n // decorator's target is the prototype, so it doesn't have any instance properties like props\n var isDecorator = typeof propertyKeyOrFunction === \"string\";\n // add property key / function we want run (disposed) to the store\n var componentWasAlreadyModified = !!target[protoStoreKey] || !!target[instStoreKey];\n var store = isDecorator ?\n // decorators are added to the prototype store\n target[protoStoreKey] || (target[protoStoreKey] = []) :\n // functions are added to the instance store\n target[instStoreKey] || (target[instStoreKey] = []);\n store.push(propertyKeyOrFunction);\n // tweak the component class componentWillUnmount if not done already\n if (!componentWasAlreadyModified) {\n patch(target, \"componentWillUnmount\", runDisposersOnWillUnmount);\n }\n // return the disposer as is if invoked as a non decorator\n if (typeof propertyKeyOrFunction !== \"string\") {\n return propertyKeyOrFunction;\n }\n}\n\n// Copied from React.PropTypes\nfunction createChainableTypeChecker(validator) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = new Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n rest[_key - 6] = arguments[_key];\n }\n return untracked(function () {\n componentName = componentName || \"<>\";\n propFullName = propFullName || propName;\n if (props[propName] == null) {\n if (isRequired) {\n var actual = props[propName] === null ? \"null\" : \"undefined\";\n return new Error(\"The \" + location + \" `\" + propFullName + \"` is marked as required \" + \"in `\" + componentName + \"`, but its value is `\" + actual + \"`.\");\n }\n return null;\n } else {\n // @ts-ignore rest arg is necessary for some React internals - fails tests otherwise\n return validator.apply(void 0, [props, propName, componentName, location, propFullName].concat(rest));\n }\n });\n }\n var chainedCheckType = checkType.bind(null, false);\n // Add isRequired to satisfy Requirable\n chainedCheckType.isRequired = checkType.bind(null, true);\n return chainedCheckType;\n}\n// Copied from React.PropTypes\nfunction isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === \"symbol\") {\n return true;\n }\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue[\"@@toStringTag\"] === \"Symbol\") {\n return true;\n }\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === \"function\" && propValue instanceof Symbol) {\n return true;\n }\n return false;\n}\n// Copied from React.PropTypes\nfunction getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return \"array\";\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return \"object\";\n }\n if (isSymbol(propType, propValue)) {\n return \"symbol\";\n }\n return propType;\n}\n// This handles more types than `getPropType`. Only used for error messages.\n// Copied from React.PropTypes\nfunction getPreciseType(propValue) {\n var propType = getPropType(propValue);\n if (propType === \"object\") {\n if (propValue instanceof Date) {\n return \"date\";\n } else if (propValue instanceof RegExp) {\n return \"regexp\";\n }\n }\n return propType;\n}\nfunction createObservableTypeCheckerCreator(allowNativeType, mobxType) {\n return createChainableTypeChecker(function (props, propName, componentName, location, propFullName) {\n return untracked(function () {\n if (allowNativeType) {\n if (getPropType(props[propName]) === mobxType.toLowerCase()) return null;\n }\n var mobxChecker;\n switch (mobxType) {\n case \"Array\":\n mobxChecker = isObservableArray;\n break;\n case \"Object\":\n mobxChecker = isObservableObject;\n break;\n case \"Map\":\n mobxChecker = isObservableMap;\n break;\n default:\n throw new Error(\"Unexpected mobxType: \" + mobxType);\n }\n var propValue = props[propName];\n if (!mobxChecker(propValue)) {\n var preciseType = getPreciseType(propValue);\n var nativeTypeExpectationMessage = allowNativeType ? \" or javascript `\" + mobxType.toLowerCase() + \"`\" : \"\";\n return new Error(\"Invalid prop `\" + propFullName + \"` of type `\" + preciseType + \"` supplied to\" + \" `\" + componentName + \"`, expected `mobx.Observable\" + mobxType + \"`\" + nativeTypeExpectationMessage + \".\");\n }\n return null;\n });\n });\n}\nfunction createObservableArrayOfTypeChecker(allowNativeType, typeChecker) {\n return createChainableTypeChecker(function (props, propName, componentName, location, propFullName) {\n for (var _len2 = arguments.length, rest = new Array(_len2 > 5 ? _len2 - 5 : 0), _key2 = 5; _key2 < _len2; _key2++) {\n rest[_key2 - 5] = arguments[_key2];\n }\n return untracked(function () {\n if (typeof typeChecker !== \"function\") {\n return new Error(\"Property `\" + propFullName + \"` of component `\" + componentName + \"` has \" + \"invalid PropType notation.\");\n } else {\n var error = createObservableTypeCheckerCreator(allowNativeType, \"Array\")(props, propName, componentName, location, propFullName);\n if (error instanceof Error) return error;\n var propValue = props[propName];\n for (var i = 0; i < propValue.length; i++) {\n error = typeChecker.apply(void 0, [propValue, i, componentName, location, propFullName + \"[\" + i + \"]\"].concat(rest));\n if (error instanceof Error) return error;\n }\n return null;\n }\n });\n });\n}\nvar observableArray = /*#__PURE__*/createObservableTypeCheckerCreator(false, \"Array\");\nvar observableArrayOf = /*#__PURE__*/createObservableArrayOfTypeChecker.bind(null, false);\nvar observableMap = /*#__PURE__*/createObservableTypeCheckerCreator(false, \"Map\");\nvar observableObject = /*#__PURE__*/createObservableTypeCheckerCreator(false, \"Object\");\nvar arrayOrObservableArray = /*#__PURE__*/createObservableTypeCheckerCreator(true, \"Array\");\nvar arrayOrObservableArrayOf = /*#__PURE__*/createObservableArrayOfTypeChecker.bind(null, true);\nvar objectOrObservableObject = /*#__PURE__*/createObservableTypeCheckerCreator(true, \"Object\");\nvar PropTypes = {\n observableArray: observableArray,\n observableArrayOf: observableArrayOf,\n observableMap: observableMap,\n observableObject: observableObject,\n arrayOrObservableArray: arrayOrObservableArray,\n arrayOrObservableArrayOf: arrayOrObservableArrayOf,\n objectOrObservableObject: objectOrObservableObject\n};\n\nif (!Component) {\n throw new Error(\"mobx-react requires React to be available\");\n}\nif (!observable) {\n throw new Error(\"mobx-react requires mobx to be available\");\n}\n\nexport { MobXProviderContext, PropTypes, Provider, disposeOnUnmount, inject, observer };\n//# sourceMappingURL=mobxreact.esm.js.map\n","\nimport React from 'react';\nimport { f7 } from 'framework7-react';\nimport { Dom7 } from 'framework7'\n\nclass WrapDevice {\n constructor(){\n const ua = navigator.userAgent,\n isMobile = /Mobile(\\/|\\s|;)/.test(ua);\n\n this.isPhone = /(iPhone|iPod)/.test(ua) ||\n (!/(Silk)/.test(ua) && (/(Android)/.test(ua) && !/Galaxy Tab S6|SCH-I800|Lenovo YT-X705X/.test(ua) && (/(Android 2)/.test(ua) || isMobile))) ||\n (/(BlackBerry|BB)/.test(ua) && isMobile) ||\n /(Windows Phone)/.test(ua);\n\n this.isTablet = !this.isPhone && (/iPad/.test(ua) || /Android/.test(ua) || /(RIM Tablet OS)/.test(ua) ||\n (/MSIE 10/.test(ua) && /; Touch/.test(ua)));\n }\n\n initDom() {\n const $$ = Dom7;\n if ( this.sailfish ) {\n $$('html').addClass('sailfish');\n }\n\n $$('html').addClass(this.phone ? 'phone' : 'tablet');\n // $$(window).on('resize', _.bind(this.onWindowResize, this));\n }\n\n get phone() {\n return this.isPhone\n }\n\n get tablet() {\n return this.isTablet\n }\n\n get sailfish() {\n return /Sailfish/.test(navigator.userAgent) || /Jolla/.test(navigator.userAgent);\n }\n\n get android() {\n return f7.device.android;\n }\n\n get ios() {\n return f7.device.ios;\n }\n}\n\nconst device = new WrapDevice();\nexport {device as Device};\n","import e from\"void-elements\";var t=/\\s([^'\"/\\s><]+?)[\\s/>]|([^\\s=]+)=\\s?(\".*?\"|'.*?')/g;function n(n){var r={type:\"tag\",name:\"\",voidElement:!1,attrs:{},children:[]},i=n.match(/<\\/?([^\\s]+?)[/\\s>]/);if(i&&(r.name=i[1],(e[i[1]]||\"/\"===n.charAt(n.length-2))&&(r.voidElement=!0),r.name.startsWith(\"!--\"))){var s=n.indexOf(\"--\\x3e\");return{type:\"comment\",comment:-1!==s?n.slice(4,s):\"\"}}for(var a=new RegExp(t),c=null;null!==(c=a.exec(n));)if(c[0].trim())if(c[1]){var o=c[1].trim(),l=[o,\"\"];o.indexOf(\"=\")>-1&&(l=o.split(\"=\")),r.attrs[l[0]]=l[1],a.lastIndex--}else c[2]&&(r.attrs[c[2]]=c[3].trim().substring(1,c[3].length-1));return r}var r=/<[a-zA-Z0-9\\-\\!\\/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g,i=/^\\s*$/,s=Object.create(null);function a(e,t){switch(t.type){case\"text\":return e+t.content;case\"tag\":return e+=\"<\"+t.name+(t.attrs?function(e){var t=[];for(var n in e)t.push(n+'=\"'+e[n]+'\"');return t.length?\" \"+t.join(\" \"):\"\"}(t.attrs):\"\")+(t.voidElement?\"/>\":\">\"),t.voidElement?e:e+t.children.reduce(a,\"\")+\"\";case\"comment\":return e+\"\\x3c!--\"+t.comment+\"--\\x3e\"}}var c={parse:function(e,t){t||(t={}),t.components||(t.components=s);var a,c=[],o=[],l=-1,m=!1;if(0!==e.indexOf(\"<\")){var u=e.indexOf(\"<\");c.push({type:\"text\",content:-1===u?e:e.substring(0,u)})}return e.replace(r,function(r,s){if(m){if(r!==\"\")return;m=!1}var u,f=\"/\"!==r.charAt(1),h=r.startsWith(\"\\x3c!--\"),p=s+r.length,d=e.charAt(p);if(h){var v=n(r);return l<0?(c.push(v),c):((u=o[l]).children.push(v),c)}if(f&&(l++,\"tag\"===(a=n(r)).type&&t.components[a.name]&&(a.type=\"component\",m=!0),a.voidElement||m||!d||\"<\"===d||a.children.push({type:\"text\",content:e.slice(p,e.indexOf(\"<\",p))}),0===l&&c.push(a),(u=o[l-1])&&u.children.push(a),o[l]=a),(!f||a.voidElement)&&(l>-1&&(a.voidElement||a.name===r.slice(2,-1))&&(l--,a=-1===l?c:o[l]),!m&&\"<\"!==d&&d)){u=-1===l?c:o[l].children;var x=e.indexOf(\"<\",p),g=e.slice(p,-1===x?void 0:x);i.test(g)&&(g=\" \"),(x>-1&&l+u.length>=0||\" \"!==g)&&u.push({type:\"text\",content:g})}}),c},stringify:function(e){return e.reduce(function(e,t){return e+a(\"\",t)},\"\")}};export default c;\n//# sourceMappingURL=html-parse-stringify.module.js.map\n","export function warn() {\n if (console && console.warn) {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[0] === 'string') args[0] = `react-i18next:: ${args[0]}`;\n console.warn(...args);\n }\n}\nconst alreadyWarned = {};\nexport function warnOnce() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n warn(...args);\n}\nconst loadedClb = (i18n, cb) => () => {\n if (i18n.isInitialized) {\n cb();\n } else {\n const initialized = () => {\n setTimeout(() => {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n i18n.on('initialized', initialized);\n }\n};\nexport function loadNamespaces(i18n, ns, cb) {\n i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n}\nexport function loadLanguages(i18n, lng, ns, cb) {\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(n => {\n if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n });\n i18n.loadLanguages(lng, loadedClb(i18n, cb));\n}\nfunction oldI18nextHasLoadedNamespace(ns, i18n) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const lng = i18n.languages[0];\n const fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n const lastLng = i18n.languages[i18n.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = i18n.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 2;\n };\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n if (i18n.hasResourceBundle(lng, ns)) return true;\n if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n}\nexport function hasLoadedNamespace(ns, i18n) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce('i18n.languages were undefined or empty', i18n.languages);\n return true;\n }\n const isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;\n if (!isNewerI18next) {\n return oldI18nextHasLoadedNamespace(ns, i18n, options);\n }\n return i18n.hasLoadedNamespace(ns, {\n lng: options.lng,\n precheck: (i18nInstance, loadNotPending) => {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n}\nexport function getDisplayName(Component) {\n return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\n}","const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"',\n ' ': ' ',\n ' ': ' ',\n '©': '©',\n '©': '©',\n '®': '®',\n '®': '®',\n '…': '…',\n '…': '…',\n '/': '/',\n '/': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);","import { unescape } from './unescape.js';\nlet defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape\n};\nexport function setDefaults() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n defaultOptions = {\n ...defaultOptions,\n ...options\n };\n}\nexport function getDefaults() {\n return defaultOptions;\n}","let i18nInstance;\nexport function setI18n(instance) {\n i18nInstance = instance;\n}\nexport function getI18n() {\n return i18nInstance;\n}","import { setDefaults } from './defaults.js';\nimport { setI18n } from './i18nInstance.js';\nexport const initReactI18next = {\n type: '3rdParty',\n init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};","import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n constructor() {\n this.usedNamespaces = {};\n }\n addUsedNamespaces(namespaces) {\n namespaces.forEach(ns => {\n if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;\n });\n }\n getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n}\nexport function composeInitialProps(ForComponent) {\n return ctx => new Promise(resolve => {\n const i18nInitialProps = getInitialProps();\n if (ForComponent.getInitialProps) {\n ForComponent.getInitialProps(ctx).then(componentsInitialProps => {\n resolve({\n ...componentsInitialProps,\n ...i18nInitialProps\n });\n });\n } else {\n resolve(i18nInitialProps);\n }\n });\n}\nexport function getInitialProps() {\n const i18n = getI18n();\n const namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n const ret = {};\n const initialI18nStore = {};\n i18n.languages.forEach(l => {\n initialI18nStore[l] = {};\n namespaces.forEach(ns => {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n}","import { useState, useEffect, useContext, useRef, useCallback } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace } from './utils.js';\nconst usePrevious = (value, ignore) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = ignore ? ref.current : value;\n }, [value, ignore]);\n return ref.current;\n};\nfunction alwaysNewT(i18n, language, namespace, keyPrefix) {\n return i18n.getFixedT(language, namespace, keyPrefix);\n}\nfunction useMemoizedT(i18n, language, namespace, keyPrefix) {\n return useCallback(alwaysNewT(i18n, language, namespace, keyPrefix), [i18n, language, namespace, keyPrefix]);\n}\nexport function useTranslation(ns) {\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n i18n: i18nFromProps\n } = props;\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n if (!i18n) {\n warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n const notReadyT = (k, optsOrDefaultValue) => {\n if (typeof optsOrDefaultValue === 'string') return optsOrDefaultValue;\n if (optsOrDefaultValue && typeof optsOrDefaultValue === 'object' && typeof optsOrDefaultValue.defaultValue === 'string') return optsOrDefaultValue.defaultValue;\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n const retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n const i18nOptions = {\n ...getDefaults(),\n ...i18n.options.react,\n ...props\n };\n const {\n useSuspense,\n keyPrefix\n } = i18nOptions;\n let namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n const memoGetT = useMemoizedT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const getT = () => memoGetT;\n const getNewT = () => alwaysNewT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const [t, setT] = useState(getT);\n let joinedNS = namespaces.join();\n if (props.lng) joinedNS = `${props.lng}${joinedNS}`;\n const previousJoinedNS = usePrevious(joinedNS);\n const isMounted = useRef(true);\n useEffect(() => {\n const {\n bindI18n,\n bindI18nStore\n } = i18nOptions;\n isMounted.current = true;\n if (!ready && !useSuspense) {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => {\n if (isMounted.current) setT(getNewT);\n });\n } else {\n loadNamespaces(i18n, namespaces, () => {\n if (isMounted.current) setT(getNewT);\n });\n }\n }\n if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n setT(getNewT);\n }\n function boundReset() {\n if (isMounted.current) setT(getNewT);\n }\n if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n return () => {\n isMounted.current = false;\n if (bindI18n && i18n) bindI18n.split(' ').forEach(e => i18n.off(e, boundReset));\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));\n };\n }, [i18n, joinedNS]);\n const isInitial = useRef(true);\n useEffect(() => {\n if (isMounted.current && !isInitial.current) {\n setT(getT);\n }\n isInitial.current = false;\n }, [i18n, keyPrefix]);\n const ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(resolve => {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => resolve());\n } else {\n loadNamespaces(i18n, namespaces, () => resolve());\n }\n });\n}","import { createElement, forwardRef as forwardRefReact } from 'react';\nimport { useTranslation } from './useTranslation.js';\nimport { getDisplayName } from './utils.js';\nexport function withTranslation(ns) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function Extend(WrappedComponent) {\n function I18nextWithTranslation(_ref) {\n let {\n forwardedRef,\n ...rest\n } = _ref;\n const [t, i18n, ready] = useTranslation(ns, {\n ...rest,\n keyPrefix: options.keyPrefix\n });\n const passDownProps = {\n ...rest,\n t,\n i18n,\n tReady: ready\n };\n if (options.withRef && forwardedRef) {\n passDownProps.ref = forwardedRef;\n } else if (!options.withRef && forwardedRef) {\n passDownProps.forwardedRef = forwardedRef;\n }\n return createElement(WrappedComponent, passDownProps);\n }\n I18nextWithTranslation.displayName = `withI18nextTranslation(${getDisplayName(WrappedComponent)})`;\n I18nextWithTranslation.WrappedComponent = WrappedComponent;\n const forwardRef = (props, ref) => createElement(I18nextWithTranslation, Object.assign({}, props, {\n forwardedRef: ref\n }));\n return options.withRef ? forwardRefReact(forwardRef) : I18nextWithTranslation;\n };\n}","import { createElement, useMemo } from 'react';\nimport { I18nContext } from './context.js';\nexport function I18nextProvider(_ref) {\n let {\n i18n,\n defaultNS,\n children\n } = _ref;\n const value = useMemo(() => ({\n i18n,\n defaultNS\n }), [i18n, defaultNS]);\n return createElement(I18nContext.Provider, {\n value\n }, children);\n}","import React from 'react';\nconst ListContext = /*#__PURE__*/React.createContext({\n listIsMedia: false,\n listIsSimple: false,\n listIsSortable: false,\n listIsSortableOpposite: false\n});\nexport { ListContext };","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, getSlots, flattenArray, emit, extend } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7, f7ready } from '../shared/f7.js';\nimport { ListContext } from '../shared/list-context.js';\nimport { useTab } from '../shared/use-tab.js';\n\n\nconst List = /*#__PURE__*/forwardRef((props, ref) => {\n const f7VirtualList = useRef(null);\n const {\n className,\n id,\n style,\n inset,\n insetIos,\n insetMd,\n xsmallInset,\n xsmallInsetIos,\n xsmallInsetMd,\n smallInset,\n smallInsetIos,\n smallInsetMd,\n mediumInset,\n mediumInsetIos,\n mediumInsetMd,\n largeInset,\n largeInsetIos,\n largeInsetMd,\n xlargeInset,\n xlargeInsetIos,\n xlargeInsetMd,\n strong,\n strongIos,\n strongMd,\n outline,\n outlineIos,\n outlineMd,\n dividers,\n dividersIos,\n dividersMd,\n mediaList,\n sortable,\n sortableTapHold,\n sortableEnabled,\n sortableMoveElements,\n sortableOpposite,\n accordionList,\n accordionOpposite,\n contactsList,\n simpleList,\n linksList,\n menuList,\n noChevron,\n chevronCenter,\n tab,\n tabActive,\n form,\n formStoreData,\n virtualList,\n virtualListParams\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const onSubmit = event => {\n emit(props, 'submit', event);\n };\n const onSortableEnable = el => {\n if (elRef.current !== el) return;\n emit(props, 'sortableEnable');\n };\n const onSortableDisable = el => {\n if (elRef.current !== el) return;\n emit(props, 'sortableDisable');\n };\n const onSortableSort = (el, sortData, listEl) => {\n if (elRef.current !== listEl) return;\n emit(props, 'sortableSort', sortData);\n };\n const onSortableMove = (el, listEl) => {\n if (elRef.current !== listEl) return;\n emit(props, 'sortableMove', el, listEl);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7VirtualList: () => f7VirtualList.current\n }));\n useTab(elRef, props);\n const attachEvents = () => {\n f7ready(() => {\n f7.on('sortableEnable', onSortableEnable);\n f7.on('sortableDisable', onSortableDisable);\n f7.on('sortableSort', onSortableSort);\n f7.on('sortableMove', onSortableMove);\n });\n };\n const detachEvents = () => {\n if (!f7) return;\n f7.off('sortableEnable', onSortableEnable);\n f7.off('sortableDisable', onSortableDisable);\n f7.off('sortableSort', onSortableSort);\n f7.off('sortableMove', onSortableMove);\n };\n const onMount = () => {\n f7ready(() => {\n if (!virtualList) return;\n const vlParams = virtualListParams || {};\n if (!vlParams.renderItem && !vlParams.renderExternal) return;\n f7VirtualList.current = f7.virtualList.create(extend({\n el: elRef.current,\n on: {\n itemBeforeInsert(itemEl, item) {\n const vl = this;\n emit(props, 'virtualItemBeforeInsert', vl, itemEl, item);\n },\n beforeClear(fragment) {\n const vl = this;\n emit(props, 'virtualBeforeClear', vl, fragment);\n },\n itemsBeforeInsert(fragment) {\n const vl = this;\n emit(props, 'virtualItemsBeforeInsert', vl, fragment);\n },\n itemsAfterInsert(fragment) {\n const vl = this;\n emit(props, 'virtualItemsAfterInsert', vl, fragment);\n }\n }\n }, vlParams));\n });\n };\n const onDestroy = () => {\n if (!f7) return;\n if (!(virtualList && f7VirtualList.current)) return;\n if (f7VirtualList.current.destroy) f7VirtualList.current.destroy();\n f7VirtualList.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n return detachEvents;\n });\n const slots = getSlots(props);\n const {\n list: slotsList,\n default: slotsDefault\n } = slots;\n const rootChildrenBeforeList = [];\n const rootChildrenAfterList = [];\n const ulChildren = slotsList || [];\n const flattenSlots = flattenArray(slotsDefault);\n let wasUlChild = false;\n flattenSlots.forEach(child => {\n if (typeof child === 'undefined') return;\n let tag = child.type && (child.type.displayName || child.type.name);\n if (!tag && typeof child.type === 'string') {\n tag = child.type;\n }\n if (!tag || tag && !(tag === 'li' || tag.indexOf('f7-list-item') >= 0 || tag.indexOf('f7-list-button') >= 0 || tag.indexOf('f7-list-input') >= 0)) {\n if (wasUlChild) rootChildrenAfterList.push(child);else rootChildrenBeforeList.push(child);\n } else if (tag) {\n wasUlChild = true;\n ulChildren.push(child);\n }\n });\n const ListTag = form ? 'form' : 'div';\n const classes = classNames(className, 'list', {\n inset,\n 'inset-ios': insetIos,\n 'inset-md': insetMd,\n 'xsmall-inset': xsmallInset,\n 'xsmall-inset-ios': xsmallInsetIos,\n 'xsmall-inset-md': xsmallInsetMd,\n 'small-inset': smallInset,\n 'small-inset-ios': smallInsetIos,\n 'small-inset-md': smallInsetMd,\n 'medium-inset': mediumInset,\n 'medium-inset-ios': mediumInsetIos,\n 'medium-inset-md': mediumInsetMd,\n 'large-inset': largeInset,\n 'large-inset-ios': largeInsetIos,\n 'large-inset-md': largeInsetMd,\n 'xlarge-inset': xlargeInset,\n 'xlarge-inset-ios': xlargeInsetIos,\n 'xlarge-inset-md': xlargeInsetMd,\n 'list-strong': strong,\n 'list-strong-ios': strongIos,\n 'list-strong-md': strongMd,\n 'list-outline': outline,\n 'list-outline-ios': outlineIos,\n 'list-outline-md': outlineMd,\n 'list-dividers': dividers,\n 'list-dividers-ios': dividersIos,\n 'list-dividers-md': dividersMd,\n 'media-list': mediaList,\n 'simple-list': simpleList,\n 'links-list': linksList,\n 'menu-list': menuList,\n sortable,\n 'sortable-tap-hold': sortableTapHold,\n 'sortable-enabled': sortableEnabled,\n 'sortable-opposite': sortableOpposite,\n 'accordion-list': accordionList,\n 'accordion-opposite': accordionOpposite,\n 'contacts-list': contactsList,\n 'virtual-list': virtualList,\n tab,\n 'tab-active': tabActive,\n 'form-store-data': formStoreData,\n 'no-chevron': noChevron,\n 'chevron-center': chevronCenter\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(ListTag, _extends({\n id: id,\n ref: elRef,\n style: style,\n className: classes\n }, extraAttrs, {\n \"data-sortable-move-elements\": typeof sortableMoveElements !== 'undefined' ? sortableMoveElements.toString() : undefined,\n onSubmit: onSubmit\n }), /*#__PURE__*/React.createElement(ListContext.Provider, {\n value: {\n listIsMedia: mediaList,\n listIsSimple: simpleList,\n listIsSortable: sortable,\n listIsSortableOpposite: sortableOpposite\n }\n }, slots['before-list'], rootChildrenBeforeList, ulChildren.length > 0 && /*#__PURE__*/React.createElement(\"ul\", null, ulChildren), slots['after-list'], rootChildrenAfterList));\n});\nList.displayName = 'f7-list';\nexport default List;","import React, { useRef, useEffect } from 'react';\nimport { classNames } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport Badge from './badge.js';\nconst ListItemContent = props => {\n const {\n indeterminate,\n radio,\n checkbox,\n value,\n name,\n readonly,\n disabled,\n checked,\n defaultChecked,\n required,\n media,\n header,\n footer,\n title,\n subtitle,\n text,\n after,\n badge,\n badgeColor,\n checkboxIcon,\n radioIcon,\n swipeout,\n sortable,\n accordionItem,\n onChange,\n onClick,\n isMediaComputed,\n isSortableComputed,\n isSortableOppositeComputed,\n slots\n } = props;\n const inputElRef = useRef(null);\n useEffect(() => {\n if (inputElRef.current) {\n inputElRef.current.indeterminate = !!indeterminate;\n }\n }, [indeterminate]);\n let titleEl;\n let afterWrapEl;\n let afterEl;\n let badgeEl;\n let innerEl;\n let titleRowEl;\n let subtitleEl;\n let textEl;\n let mediaEl;\n let inputEl;\n let inputIconEl;\n let headerEl;\n let footerEl;\n\n // Input\n if (radio || checkbox) {\n inputEl = /*#__PURE__*/React.createElement(\"input\", {\n ref: inputElRef,\n value: value,\n name: name,\n checked: checked,\n defaultChecked: defaultChecked,\n readOnly: readonly,\n disabled: disabled,\n required: required,\n type: radio ? 'radio' : 'checkbox',\n onChange: onChange\n });\n inputIconEl = /*#__PURE__*/React.createElement(\"i\", {\n className: `icon icon-${radio ? 'radio' : 'checkbox'}`\n });\n }\n // Media\n if (media || slots.media) {\n let mediaImgEl;\n if (media) {\n mediaImgEl = /*#__PURE__*/React.createElement(\"img\", {\n src: media\n });\n }\n mediaEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-media\"\n }, mediaImgEl, slots.media);\n }\n // Inner Elements\n if (header || slots.header) {\n headerEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-header\"\n }, header, slots.header);\n }\n if (footer || slots.footer) {\n footerEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-footer\"\n }, footer, slots.footer);\n }\n if (title || slots.title || !isMediaComputed && headerEl || !isMediaComputed && footerEl) {\n titleEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-title\"\n }, !isMediaComputed && headerEl, title, slots.title, !isMediaComputed && footerEl);\n }\n if (subtitle || slots.subtitle) {\n subtitleEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-subtitle\"\n }, subtitle, slots.subtitle);\n }\n if (text || slots.text) {\n textEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-text\"\n }, text, slots.text);\n }\n if (after || badge || slots.after) {\n if (after) {\n afterEl = /*#__PURE__*/React.createElement(\"span\", null, after);\n }\n if (badge) {\n badgeEl = /*#__PURE__*/React.createElement(Badge, {\n color: badgeColor\n }, badge);\n }\n afterWrapEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-after\"\n }, slots['after-start'], afterEl, badgeEl, slots.after, slots['after-end']);\n }\n if (isMediaComputed) {\n titleRowEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-title-row\"\n }, slots['before-title'], titleEl, slots['after-title'], afterWrapEl);\n innerEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-inner\"\n }, slots['inner-start'], headerEl, titleRowEl, subtitleEl, textEl, swipeout || accordionItem ? null : slots.default, slots.inner, footerEl, slots['inner-end']);\n } else {\n innerEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-inner\"\n }, slots['inner-start'], slots['before-title'], titleEl, slots['after-title'], afterWrapEl, swipeout || accordionItem ? null : slots.default, slots.inner, slots['inner-end']);\n }\n const ItemContentTag = checkbox || radio ? 'label' : 'div';\n const classes = classNames('item-content', {\n 'item-checkbox': checkbox,\n 'item-radio': radio,\n 'item-checkbox-icon-start': checkbox && checkboxIcon === 'start',\n 'item-checkbox-icon-end': checkbox && checkboxIcon === 'end',\n 'item-radio-icon-start': radio && radioIcon === 'start',\n 'item-radio-icon-end': radio && radioIcon === 'end'\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(ItemContentTag, {\n className: classes,\n onClick: onClick\n }, isSortableComputed && sortable !== false && isSortableOppositeComputed && /*#__PURE__*/React.createElement(\"div\", {\n className: \"sortable-handler\"\n }), slots['content-start'], inputEl, inputIconEl, mediaEl, innerEl, slots.content, slots['content-end']);\n};\nListItemContent.displayName = 'f7-list-item-content';\nexport default ListItemContent;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle, useContext } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, getSlots, emit, isStringProp } from '../shared/utils.js';\nimport { colorClasses, actionsAttrs, actionsClasses, routerAttrs, routerClasses } from '../shared/mixins.js';\nimport { useRouteProps } from '../shared/use-route-props.js';\nimport { useSmartSelect } from '../shared/use-smart-select.js';\nimport { useTooltip } from '../shared/use-tooltip.js';\nimport { watchProp } from '../shared/watch-prop.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport ListItemContent from './list-item-content.js';\nimport { ListContext } from '../shared/list-context.js';\n\n\n\n/*\nconst ListItemContent = ({\n props,\n slots,\n inputElRef,\n onChange,\n onClick,\n isMediaComputed,\n isSortableComputed,\n isSortableOppositeComputed,\n} = {}) => {\n const {\n radio,\n checkbox,\n value,\n name,\n readonly,\n disabled,\n checked,\n defaultChecked,\n required,\n media,\n header,\n footer,\n title,\n subtitle,\n text,\n after,\n badge,\n badgeColor,\n checkboxIcon,\n radioIcon,\n swipeout,\n sortable,\n accordionItem,\n } = props;\n\n};\n*/\nconst ListItem = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n title,\n link,\n target,\n tabLink,\n tabLinkActive,\n selected,\n mediaItem,\n mediaList,\n groupTitle,\n swipeout,\n swipeoutOpened,\n sortable,\n sortableOpposite,\n accordionItem,\n accordionItemOpened,\n smartSelect,\n smartSelectParams,\n noChevron,\n chevronCenter,\n checkbox,\n radio,\n disabled,\n virtualListIndex,\n href\n } = props;\n const listContext = useContext(ListContext);\n const {\n listIsMedia = false,\n listIsSortable = false,\n listIsSortableOpposite = false,\n listIsSimple = false\n } = listContext || {};\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const linkElRef = useRef(null);\n const f7SmartSelect = useRef(null);\n const onClick = event => {\n if (event.target.tagName.toLowerCase() !== 'input') {\n emit(props, 'click', event);\n }\n };\n const onSwipeoutOverswipeEnter = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutOverswipeEnter');\n };\n const onSwipeoutOverswipeExit = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutOverswipeExit');\n };\n const onSwipeoutDeleted = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutDeleted');\n };\n const onSwipeoutDelete = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutDelete');\n };\n const onSwipeoutClose = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutClose');\n };\n const onSwipeoutClosed = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutClosed');\n };\n const onSwipeoutOpen = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutOpen');\n };\n const onSwipeoutOpened = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutOpened');\n };\n const onSwipeout = (el, progress) => {\n if (elRef.current !== el) return;\n emit(props, 'swipeout', progress);\n };\n const onAccBeforeClose = (el, prevent) => {\n if (elRef.current !== el) return;\n emit(props, 'accordionBeforeClose', prevent);\n };\n const onAccClose = el => {\n if (elRef.current !== el) return;\n emit(props, 'accordionClose');\n };\n const onAccClosed = el => {\n if (elRef.current !== el) return;\n emit(props, 'accordionClosed');\n };\n const onAccBeforeOpen = (el, prevent) => {\n if (elRef.current !== el) return;\n emit(props, 'accordionBeforeOpen', prevent);\n };\n const onAccOpen = el => {\n if (elRef.current !== el) return;\n emit(props, 'accordionOpen');\n };\n const onAccOpened = el => {\n if (elRef.current !== el) return;\n emit(props, 'accordionOpened');\n };\n const onChange = event => {\n emit(props, 'change', event);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7SmartSelect: () => f7SmartSelect.current\n }));\n useTooltip(elRef, props);\n useRouteProps(linkElRef, props);\n watchProp(swipeoutOpened, newValue => {\n if (!swipeout || !elRef.current || !f7) return;\n if (newValue) {\n f7.swipeout.open(elRef.current);\n } else {\n f7.swipeout.close(elRef.current);\n }\n });\n const attachEvents = () => {\n f7ready(() => {\n if (swipeout) {\n f7.on('swipeoutOpen', onSwipeoutOpen);\n f7.on('swipeoutOpened', onSwipeoutOpened);\n f7.on('swipeoutClose', onSwipeoutClose);\n f7.on('swipeoutClosed', onSwipeoutClosed);\n f7.on('swipeoutDelete', onSwipeoutDelete);\n f7.on('swipeoutDeleted', onSwipeoutDeleted);\n f7.on('swipeoutOverswipeEnter', onSwipeoutOverswipeEnter);\n f7.on('swipeoutOverswipeExit', onSwipeoutOverswipeExit);\n f7.on('swipeout', onSwipeout);\n }\n if (accordionItem) {\n f7.on('accordionBeforeOpen', onAccBeforeOpen);\n f7.on('accordionOpen', onAccOpen);\n f7.on('accordionOpened', onAccOpened);\n f7.on('accordionBeforeClose', onAccBeforeClose);\n f7.on('accordionClose', onAccClose);\n f7.on('accordionClosed', onAccClosed);\n }\n });\n };\n const detachEvents = () => {\n if (!f7) return;\n f7.off('swipeoutOpen', onSwipeoutOpen);\n f7.off('swipeoutOpened', onSwipeoutOpened);\n f7.off('swipeoutClose', onSwipeoutClose);\n f7.off('swipeoutClosed', onSwipeoutClosed);\n f7.off('swipeoutDelete', onSwipeoutDelete);\n f7.off('swipeoutDeleted', onSwipeoutDeleted);\n f7.off('swipeoutOverswipeEnter', onSwipeoutOverswipeEnter);\n f7.off('swipeoutOverswipeExit', onSwipeoutOverswipeExit);\n f7.off('swipeout', onSwipeout);\n f7.off('accordionBeforeOpen', onAccBeforeOpen);\n f7.off('accordionOpen', onAccOpen);\n f7.off('accordionOpened', onAccOpened);\n f7.off('accordionBeforeClose', onAccBeforeClose);\n f7.off('accordionClose', onAccClose);\n f7.off('accordionClosed', onAccClosed);\n };\n useSmartSelect(smartSelect, smartSelectParams, f7SmartSelect, () => elRef.current.querySelector('a.smart-select'));\n useIsomorphicLayoutEffect(() => {\n f7ready(() => {\n if (swipeout && swipeoutOpened) {\n f7.swipeout.open(elRef.current);\n }\n });\n }, []);\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n return detachEvents;\n });\n const slots = getSlots(props);\n let linkEl;\n let itemContentEl;\n const isMediaComputed = mediaItem || mediaList || listIsMedia;\n const isSortableComputed = sortable === true || sortable === false ? sortable : listIsSortable;\n const isSortableOppositeComputed = isSortableComputed && (sortableOpposite || listIsSortableOpposite);\n if (!listIsSimple) {\n // Item Content\n itemContentEl = /*#__PURE__*/React.createElement(ListItemContent, _extends({}, props, {\n slots: slots,\n onChange: onChange,\n onClick: link || href || accordionItem || smartSelect ? undefined : onClick,\n isMediaComputed: isMediaComputed,\n isSortableComputed: isSortableComputed,\n isSortableOppositeComputed: isSortableOppositeComputed\n }));\n\n // Link\n if (link || href || accordionItem || smartSelect) {\n const linkAttrs = {\n href: link === true ? '' : link || href,\n target,\n 'data-tab': isStringProp(tabLink) && tabLink || undefined,\n ...routerAttrs(props),\n ...actionsAttrs(props)\n };\n const linkClasses = classNames({\n 'item-link': true,\n 'smart-select': smartSelect,\n 'tab-link': tabLink || tabLink === '',\n 'tab-link-active': tabLinkActive,\n 'item-selected': selected\n }, routerClasses(props), actionsClasses(props));\n linkEl = /*#__PURE__*/React.createElement(\"a\", _extends({\n ref: linkElRef,\n className: linkClasses\n }, linkAttrs, {\n onClick: onClick\n }), itemContentEl);\n }\n }\n const liClasses = classNames(className, {\n 'list-group-title': groupTitle,\n 'media-item': isMediaComputed,\n swipeout,\n 'accordion-item': accordionItem,\n 'accordion-item-opened': accordionItemOpened,\n disabled: disabled && !(radio || checkbox),\n 'no-chevron': noChevron,\n 'chevron-center': chevronCenter,\n 'disallow-sorting': sortable === false\n }, colorClasses(props));\n if (groupTitle) {\n return /*#__PURE__*/React.createElement(\"li\", {\n ref: elRef,\n id: id,\n style: style,\n className: liClasses,\n \"data-virtual-list-index\": virtualListIndex,\n onClick: onClick\n }, /*#__PURE__*/React.createElement(\"span\", null, title, children));\n }\n if (listIsSimple) {\n return /*#__PURE__*/React.createElement(\"li\", {\n ref: elRef,\n id: id,\n style: style,\n className: liClasses,\n \"data-virtual-list-index\": virtualListIndex,\n onClick: onClick\n }, title, children);\n }\n const linkItemEl = link || href || smartSelect || accordionItem ? linkEl : itemContentEl;\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n ref: elRef,\n id: id,\n style: style,\n className: liClasses,\n \"data-virtual-list-index\": virtualListIndex\n }, extraAttrs), slots['root-start'], swipeout ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"swipeout-content\"\n }, linkItemEl) : linkItemEl, isSortableComputed && sortable !== false && !isSortableOppositeComputed && /*#__PURE__*/React.createElement(\"div\", {\n className: \"sortable-handler\"\n }), (swipeout || accordionItem) && slots.default, slots.root, slots['root-end']);\n});\nListItem.displayName = 'f7-list-item';\nexport default ListItem;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { watchProp } from '../shared/watch-prop.js';\nimport { useTooltip } from '../shared/use-tooltip.js';\n\n\nconst Toggle = /*#__PURE__*/forwardRef((props, ref) => {\n const f7Toggle = useRef(null);\n const {\n className,\n id,\n style,\n init = true,\n checked,\n defaultChecked,\n disabled,\n readonly,\n name,\n value\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const inputElRef = useRef(null);\n const onChange = event => {\n emit(props, 'change', event);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7Toggle: () => f7Toggle.current\n }));\n useTooltip(elRef, props);\n watchProp(checked, newValue => {\n if (!f7Toggle.current) return;\n f7Toggle.current.checked = newValue;\n });\n const onToggleChange = toggleInstance => {\n emit(props, 'toggleChange', toggleInstance.checked);\n };\n const toggleEvents = method => {\n if (!f7Toggle.current) return;\n f7Toggle.current[method]('toggleChange', onToggleChange);\n };\n const onMount = () => {\n f7ready(() => {\n if (!init || !elRef.current) return;\n f7Toggle.current = f7.toggle.create({\n el: elRef.current\n });\n toggleEvents('on');\n });\n };\n const onDestroy = () => {\n if (f7Toggle.current && f7Toggle.current.destroy && f7Toggle.current.$el) {\n f7Toggle.current.destroy();\n }\n f7Toggle.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n toggleEvents('on');\n if (inputElRef.current) {\n inputElRef.current.addEventListener('change', onChange);\n }\n return () => {\n toggleEvents('off');\n if (inputElRef.current) {\n inputElRef.current.removeEventListener('change', onChange);\n }\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n const labelClasses = classNames('toggle', className, {\n disabled\n }, colorClasses(props));\n const inputEl = /*#__PURE__*/React.createElement(\"input\", {\n ref: inputElRef,\n type: \"checkbox\",\n name: name,\n disabled: disabled,\n readOnly: readonly,\n checked: checked,\n defaultChecked: defaultChecked,\n value: value,\n onChange: () => {}\n });\n return /*#__PURE__*/React.createElement(\"label\", _extends({\n id: id,\n style: style,\n className: labelClasses,\n ref: elRef\n }, extraAttrs), inputEl, /*#__PURE__*/React.createElement(\"span\", {\n className: \"toggle-icon\"\n }));\n});\nToggle.displayName = 'f7-toggle';\nexport default Toggle;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, getSlots, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { useTheme } from '../shared/use-theme.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { TabbarContext } from '../shared/tabbar-context.js';\n\n\nconst Toolbar = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n tabbar,\n icons,\n scrollable,\n hidden,\n outline = true,\n position,\n topMd,\n topIos,\n top,\n bottomMd,\n bottomIos,\n bottom,\n inner = true\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const onHide = toolbarEl => {\n if (elRef.current !== toolbarEl) return;\n emit(props, 'toolbarHide');\n };\n const onShow = toolbarEl => {\n if (elRef.current !== toolbarEl) return;\n emit(props, 'toolbarShow');\n };\n const hide = animate => {\n if (!f7) return;\n f7.toolbar.hide(elRef.current, animate);\n };\n const show = animate => {\n if (!f7) return;\n f7.toolbar.show(elRef.current, animate);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n hide,\n show\n }));\n useIsomorphicLayoutEffect(() => {\n f7ready(() => {\n if (tabbar && f7 && elRef.current) {\n f7.toolbar.setHighlight(elRef.current);\n }\n f7.on('toolbarShow', onShow);\n f7.on('toolbarHide', onHide);\n });\n return () => {\n if (!f7) return;\n f7.off('toolbarShow', onShow);\n f7.off('toolbarHide', onHide);\n };\n });\n const theme = useTheme();\n const classes = classNames(className, 'toolbar', {\n tabbar,\n 'toolbar-bottom': theme && theme.md && bottomMd || theme && theme.ios && bottomIos || bottom || position === 'bottom',\n 'toolbar-top': theme && theme.md && topMd || theme && theme.ios && topIos || top || position === 'top',\n 'tabbar-icons': icons,\n 'tabbar-scrollable': scrollable,\n 'toolbar-hidden': hidden,\n 'no-outline': !outline\n }, colorClasses(props));\n const slots = getSlots(props);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), /*#__PURE__*/React.createElement(TabbarContext.Provider, {\n value: {\n tabbarHasIcons: icons\n }\n }, slots['before-inner'], inner ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"toolbar-inner\"\n }, slots.default) : slots.default, slots['after-inner']));\n});\nToolbar.displayName = 'f7-toolbar';\nexport default Toolbar;","import React, { Component, useEffect } from 'react';\nimport { observer, inject } from \"mobx-react\";\nimport { Page, Navbar, NavRight, List, ListItem, Icon, Toggle, Toolbar, Link } from 'framework7-react';\nimport { f7 } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from \"../../../utils/device\";\n\nconst PageReview = props => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const isProtected = props.isProtected;\n const isDisableAllSettings = props.isReviewOnly || props.displayMode === \"final\" || props.displayMode === \"original\";\n const canReview = !!props.canReview;\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {canReview &&\n \n props.onTrackChanges(!props.trackChanges)} />\n \n }\n {!props.isRestrictedEdit &&\n \n }\n \n \n \n \n \n {canReview && !props.canUseReviewPermissions && !isProtected &&\n {props.onAcceptAll();}}>\n \n \n }\n {canReview && !props.canUseReviewPermissions && !isProtected &&\n {props.onRejectAll();}}>\n \n \n }\n \n \n )\n};\n\nconst DisplayMode = props => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const mode = props.storeReview.displayMode;\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {\n props.onDisplayMode('markup');\n }}\n >\n {\n props.onDisplayMode('final');\n }}\n >\n {\n props.onDisplayMode('original');\n }}\n >\n \n \n )\n};\n\nconst PageReviewChange = inject(\"storeAppOptions\")(observer(props => {\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const change = props.change;\n const displayMode = props.displayMode;\n const isLockAcceptReject = (!change || (change && !change.editable) || (displayMode === \"final\" || displayMode === \"original\") || !props.canReview);\n const isLockPrevNext = (displayMode === \"final\" || displayMode === \"original\");\n const appOptions = props.storeAppOptions;\n const isProtected = appOptions.isProtected;\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n {(!props.isReviewOnly && !isProtected) &&\n \n {props.onAcceptCurrentChange()}}\n >{_t.textAccept}\n {props.onRejectCurrentChange()}}\n >{_t.textReject}\n \n }\n {!props.isReviewOnly && change && change?.editable &&\n \n {props.onDeleteChange()}}>{_t.textDelete}\n \n }\n {props.goto && {props.onGotoNextChange()}}>}\n \n \n {props.onPrevChange()}}\n className={isLockPrevNext && 'disabled'}\n >\n {props.onNextChange()}}\n className={isLockPrevNext && 'disabled'}\n >\n \n \n {change ?\n
                \n
                \n {isAndroid &&\n
                {change.initials}
                \n }\n
                \n
                {change.userName}
                \n
                {change.date}
                \n
                \n
                \n
                {change.text}
                \n
                :\n
                {_t.textNoChanges}
                \n }\n
                \n )\n}));\n\nconst PageDisplayMode = inject(\"storeReview\")(observer(DisplayMode));\n\nexport {PageReview, PageDisplayMode, PageReviewChange};","\nclass LocalStorage {\n constructor() {\n Common.Gateway.on('internalcommand', data => {\n if (data.type == 'localstorage') {\n this._store = data.keys;\n }\n });\n\n this._store = {};\n this._prefix = 'mobile-';\n this._common_keys = ['guest-id', 'guest-username'];\n\n try {\n this._isAllowed = !!window.localStorage;\n } catch (e) {\n this._isAllowed = false;\n }\n }\n\n get id() {\n return this._storeName;\n }\n\n set id(name) {\n this._storeName = name;\n }\n\n set keysFilter(value) {\n this._filter = value;\n }\n\n get keysFilter() {\n return this._filter;\n }\n\n get prefix() {\n return this._prefix;\n }\n\n set prefix(p) {\n this._prefix = p;\n }\n\n sync() {\n if ( !this._isAllowed )\n Common.Gateway.internalMessage('localstorage', {cmd:'get', keys:this._filter});\n }\n\n save() {\n if ( !this._isAllowed )\n Common.Gateway.internalMessage('localstorage', {cmd:'set', keys:this._store});\n }\n\n setItem(name, value, just) {\n if ( !this._common_keys.includes(value) )\n name = this._prefix + name;\n\n if ( this._isAllowed ) {\n try {\n localStorage.setItem(name, value);\n } catch (error){}\n } else {\n this._store[name] = value;\n\n if ( just===true ) {\n Common.Gateway.internalMessage('localstorage', {cmd:'set', keys: {name: value}});\n }\n }\n }\n\n getItem(name) {\n if ( !this._common_keys.includes(name) )\n name = this._prefix + name;\n\n if ( this._isAllowed )\n return localStorage.getItem(name);\n else return this._store[name]===undefined ? null : this._store[name];\n };\n\n setBool(name, value, just) {\n this.setItem(name, value ? 1 : 0, just);\n }\n\n getBool(name, defValue) {\n const value = this.getItem(name);\n return (value !== null) ? (parseInt(value) != 0) : !!defValue;\n }\n\n itemExists(name) {\n return this.getItem(name) !== null;\n }\n}\n\nconst instance = new LocalStorage();\nexport {instance as LocalStorage};","import React, { Component } from 'react'\nimport Notifications from '../../../utils/notifications.js'\nimport {observer, inject} from \"mobx-react\"\nimport { withTranslation } from 'react-i18next';\n\nimport {PageReview, PageReviewChange} from \"../../view/collaboration/Review\";\nimport {LocalStorage} from \"../../../utils/LocalStorage.mjs\";\n\nclass InitReview extends Component {\n constructor(props){\n super(props);\n\n Common.Notifications.on('engineCreated', api => {\n api.asc_registerCallback('asc_onShowRevisionsChange', this.onChangeReview.bind(this));\n });\n\n Common.Notifications.on('document:ready', () => {\n const api = Common.EditorApi.get();\n const appOptions = props.storeAppOptions;\n const isProtected = appOptions.isProtected;\n\n let trackChanges = appOptions.customization && appOptions.customization.review ? appOptions.customization.review.trackChanges : undefined;\n (trackChanges===undefined) && (trackChanges = appOptions.customization ? appOptions.customization.trackChanges : undefined);\n trackChanges = appOptions.isReviewOnly || trackChanges === true || trackChanges !== false\n && LocalStorage.getBool(\"de-mobile-track-changes-\" + (appOptions.fileKey || ''));\n\n if(!isProtected) {\n api.asc_SetTrackRevisions(trackChanges);\n }\n \n // Init display mode\n\n const canViewReview = appOptions.canReview || appOptions.isEdit || api.asc_HaveRevisionsChanges(true);\n if (!appOptions.canReview)\n appOptions.setCanViewReview(canViewReview);\n if (canViewReview) {\n let viewReviewMode = (appOptions.isEdit || appOptions.isRestrictedEdit) ? null : LocalStorage.getItem(\"de-view-review-mode\");\n if (viewReviewMode === null) {\n viewReviewMode = appOptions.customization && appOptions.customization.review ? appOptions.customization.review.reviewDisplay : undefined;\n !viewReviewMode && (viewReviewMode = appOptions.customization ? appOptions.customization.reviewDisplay : undefined);\n viewReviewMode = /^(original|final|markup|simple)$/i.test(viewReviewMode) ? viewReviewMode.toLocaleLowerCase() : ( appOptions.isEdit || appOptions.isRestrictedEdit ? 'markup' : 'original');\n }\n let displayMode = viewReviewMode.toLocaleLowerCase();\n let type = Asc.c_oAscDisplayModeInReview.Edit;\n switch (displayMode) {\n case 'final':\n type = Asc.c_oAscDisplayModeInReview.Final;\n break;\n case 'original':\n type = Asc.c_oAscDisplayModeInReview.Original;\n break;\n }\n api.asc_SetDisplayModeInReview(type);\n props.storeReview.changeDisplayMode(displayMode);\n }\n });\n }\n\n onChangeReview (data, isShow) {\n const storeReview = this.props.storeReview;\n storeReview.changeArrReview(data);\n }\n\n render() {\n return null\n }\n}\n\nclass Review extends Component {\n constructor(props) {\n super(props);\n this.onTrackChanges = this.onTrackChanges.bind(this);\n this.onDisplayMode = this.onDisplayMode.bind(this);\n\n this.appConfig = props.storeAppOptions;\n this.editorPrefix = window.editorType || '';\n\n let trackChanges = this.appConfig.customization && this.appConfig.customization.review ? this.appConfig.customization.review.trackChanges : undefined;\n (trackChanges===undefined) && (trackChanges = this.appConfig.customization ? this.appConfig.customization.trackChanges : undefined);\n trackChanges = this.appConfig.isReviewOnly || trackChanges === true || trackChanges !== false\n && LocalStorage.getBool(`${this.editorPrefix}-mobile-track-changes-${this.appConfig.fileKey || ''}`);\n\n this.state = {\n trackChanges: trackChanges\n }\n }\n\n onTrackChanges (checked) {\n const api = Common.EditorApi.get();\n if ( this.appConfig.isReviewOnly ) {\n this.setState({trackChanges: true});\n } else {\n this.setState({trackChanges: checked});\n api.asc_SetTrackRevisions(checked);\n LocalStorage.setBool(`${this.editorPrefix}-mobile-track-changes-${this.appConfig.fileKey || ''}`, checked);\n }\n }\n\n onAcceptAll () {\n const api = Common.EditorApi.get();\n api.asc_AcceptAllChanges();\n }\n\n onRejectAll () {\n const api = Common.EditorApi.get();\n api.asc_RejectAllChanges();\n }\n\n onDisplayMode (mode) {\n const api = Common.EditorApi.get();\n let type = Asc.c_oAscDisplayModeInReview.Edit;\n switch (mode) {\n case 'final':\n type = Asc.c_oAscDisplayModeInReview.Final;\n break;\n case 'original':\n type = Asc.c_oAscDisplayModeInReview.Original;\n break;\n }\n api.asc_SetDisplayModeInReview(type);\n !this.appConfig.isEdit && !this.appConfig.isRestrictedEdit && LocalStorage.setItem(\"de-view-review-mode\", mode);\n this.props.storeReview.changeDisplayMode(mode);\n }\n\n render() {\n const displayMode = this.props.storeReview.displayMode;\n const isReviewOnly = this.appConfig.isReviewOnly;\n const isProtected = this.appConfig.isProtected;\n const canReview = this.appConfig.canReview;\n const canUseReviewPermissions = this.appConfig.canUseReviewPermissions;\n const isRestrictedEdit = this.appConfig.isRestrictedEdit;\n\n return (\n \n )\n }\n}\n\nclass ReviewChange extends Component {\n constructor (props) {\n super(props);\n this.onAcceptCurrentChange = this.onAcceptCurrentChange.bind(this);\n this.onRejectCurrentChange = this.onRejectCurrentChange.bind(this);\n this.onGotoNextChange = this.onGotoNextChange.bind(this);\n this.onDeleteChange = this.onDeleteChange.bind(this);\n\n this.appConfig = props.storeAppOptions;\n }\n \n dateToLocaleTimeString (date, lang) {\n const format = (date) => {\n let strTime,\n hours = date.getHours(),\n minutes = date.getMinutes(),\n ampm = hours >= 12 ? 'pm' : 'am';\n\n hours = hours % 12;\n hours = hours ? hours : 12; // the hour '0' should be '12'\n minutes = minutes < 10 ? '0' + minutes : minutes;\n strTime = hours + ':' + minutes + ' ' + ampm;\n\n return strTime;\n };\n\n lang = (lang || 'en').replace('_', '-').toLowerCase();\n try {\n return date.toLocaleString(lang, {dateStyle: 'short', timeStyle: 'short'});\n } catch (e) {\n lang = 'en';\n return date.toLocaleString(lang, {dateStyle: 'short', timeStyle: 'short'});\n }\n\n // MM/dd/yyyy hh:mm AM\n return (date.getMonth() + 1) + '/' + (date.getDate()) + '/' + date.getFullYear() + ' ' + format(date);\n }\n getArrChangeReview (data) {\n const api = Common.EditorApi.get();\n\n const { t } = this.props;\n const _t = t(\"Common.Collaboration\", { returnObjects: true });\n\n if (data.length === 0) return [];\n const arr = [];\n const c_paragraphLinerule = {\n LINERULE_LEAST: 0,\n LINERULE_AUTO: 1,\n LINERULE_EXACT: 2\n };\n data.forEach((item) => {\n let changeText = [], proptext = [],\n value = item.get_Value(),\n movetype = item.get_MoveType();\n switch (item.get_Type()) {\n case Asc.c_oAscRevisionsChangeType.TextAdd:\n changeText.push();\n if (typeof value == 'object') {\n value.forEach( (obj) => {\n if (typeof obj === 'string')\n changeText.push();\n else {\n switch (obj) {\n case 0:\n changeText.push();\n break;\n case 1:\n changeText.push();\n break;\n case 2:\n changeText.push();\n break;\n case 3:\n changeText.push();\n break;\n }\n }\n })\n } else if (typeof value === 'string') {\n changeText.push();\n }\n break;\n case Asc.c_oAscRevisionsChangeType.TextRem:\n changeText.push();\n if (typeof value == 'object') {\n value.forEach( (obj) => {\n if (typeof obj === 'string')\n changeText.push();\n else {\n switch (obj) {\n case 0:\n changeText.push();\n break;\n case 1:\n changeText.push();\n break;\n case 2:\n changeText.push();\n break;\n case 3:\n changeText.push();\n break;\n }\n }\n })\n } else if (typeof value === 'string') {\n changeText.push();\n }\n break;\n case Asc.c_oAscRevisionsChangeType.ParaAdd:\n changeText.push();\n break;\n case Asc.c_oAscRevisionsChangeType.ParaRem:\n changeText.push();\n break;\n case Asc.c_oAscRevisionsChangeType.TextPr:\n if (value.Get_Bold() !== undefined)\n proptext.push();\n if (value.Get_Italic() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Underline() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Strikeout() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_DStrikeout() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Caps() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_SmallCaps() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_VertAlign() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Color() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Highlight() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Shd() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_FontFamily() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_FontSize() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Spacing() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Position() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Lang() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n\n if (proptext.length > 0) {\n changeText.push();\n proptext.forEach((item) => {\n changeText.push(item);\n });\n } else {\n changeText.push();\n }\n break;\n case Asc.c_oAscRevisionsChangeType.ParaPr:\n if (value.Get_ContextualSpacing())\n proptext.push();\n if (value.Get_IndLeft() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_IndRight() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_IndFirstLine() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Jc() !== undefined) {\n switch (value.Get_Jc()) {\n case 0:\n proptext.length > 0 && proptext.push();\n proptext.push();\n break;\n case 1:\n proptext.length > 0 && proptext.push();\n proptext.push();\n break;\n case 2:\n proptext.length > 0 && proptext.push();\n proptext.push();\n break;\n case 3:\n proptext.length > 0 && proptext.push();\n proptext.push();\n break;\n }\n }\n if (value.Get_KeepLines() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_KeepNext()) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_PageBreakBefore()) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_SpacingLineRule() !== undefined && value.Get_SpacingLine() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n proptext.push();\n proptext.push();\n }\n if (value.Get_SpacingBeforeAutoSpacing()) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n else if (value.Get_SpacingBefore() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_SpacingAfterAutoSpacing()) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n else if (value.Get_SpacingAfter() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_WidowControl()) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Tabs() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_NumPr() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push()\n }\n if (value.Get_PStyle() !== undefined) {\n const style = api.asc_GetStyleNameById(value.Get_PStyle());\n if (style.length > 0) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n }\n\n if (proptext.length > 0) {\n changeText.push();\n proptext.forEach((item) => {\n changeText.push(item);\n });\n } else {\n changeText.push();\n }\n break;\n case Asc.c_oAscRevisionsChangeType.TablePr:\n changeText.push();\n break;\n case Asc.c_oAscRevisionsChangeType.RowsAdd:\n changeText.push();\n break;\n case Asc.c_oAscRevisionsChangeType.RowsRem:\n changeText.push();\n break;\n\n }\n let date = (item.get_DateTime() == '') ? new Date() : new Date(item.get_DateTime());\n const user = item.get_UserName();\n const userColor = item.get_UserColor();\n const goto = (item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveTo || item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveFrom);\n date = this.dateToLocaleTimeString(date, this.appConfig.lang);\n const editable = this.appConfig.isReviewOnly && (item.get_UserId() == this.appConfig.user.id) || !this.appConfig.isReviewOnly && (!this.appConfig.canUseReviewPermissions || AscCommon.UserInfoParser.canEditReview(item.get_UserName()));\n arr.push({date: date, user: user, userColor: userColor, changeText: changeText, goto: goto, editable: editable});\n });\n return arr;\n }\n\n onPrevChange () {\n const api = Common.EditorApi.get();\n api.asc_GetPrevRevisionsChange();\n }\n\n onNextChange () {\n const api = Common.EditorApi.get();\n api.asc_GetNextRevisionsChange();\n }\n\n onAcceptCurrentChange () {\n const api = Common.EditorApi.get();\n api.asc_AcceptChanges(this.dataChanges[0]);\n setTimeout(() => {\n api.asc_GetNextRevisionsChange();\n });\n }\n\n onRejectCurrentChange () {\n const api = Common.EditorApi.get();\n api.asc_RejectChanges(this.dataChanges[0]);\n setTimeout(() => {\n api.asc_GetNextRevisionsChange();\n });\n }\n\n onGotoNextChange () {\n const api = Common.EditorApi.get();\n api.asc_FollowRevisionMove(this.dataChanges[0]);\n }\n\n onDeleteChange () {\n const api = Common.EditorApi.get();\n api.asc_RejectChanges(this.dataChanges[0]);\n }\n\n render() {\n this.dataChanges = this.props.storeReview.dataChanges;\n const arrChangeReview = this.getArrChangeReview(this.dataChanges);\n let change;\n let goto = false;\n if (arrChangeReview.length > 0) {\n const name = AscCommon.UserInfoParser.getParsedName(arrChangeReview[0].user);\n change = {\n date: arrChangeReview[0].date,\n user: arrChangeReview[0].user,\n userName: Common.Utils.String.htmlEncode(name),\n color: arrChangeReview[0].userColor.get_hex(),\n text: arrChangeReview[0].changeText,\n initials: this.props.users.getInitials(name),\n editable: arrChangeReview[0].editable\n };\n goto = arrChangeReview[0].goto;\n }\n\n const isReviewOnly = this.appConfig.isReviewOnly;\n const canReview = this.appConfig.canReview;\n const displayMode = this.props.storeReview.displayMode;\n\n return (\n \n )\n }\n}\n\n\nconst InitReviewController = inject(\"storeAppOptions\", \"storeReview\")(observer(InitReview));\nconst ReviewController = inject(\"storeAppOptions\", \"storeReview\")(observer(Review));\nconst ReviewChangeController = withTranslation()(inject(\"storeAppOptions\", \"storeReview\", \"users\")(observer(ReviewChange)));\n\nexport {InitReviewController, ReviewController, ReviewChangeController};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7, f7ready } from '../shared/f7.js';\nimport { watchProp } from '../shared/watch-prop.js';\nimport { modalStateClasses } from '../shared/modal-state-classes.js';\n\n\n\nconst Actions = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n grid,\n opened = false,\n animate\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const isOpened = useRef(opened);\n const isClosing = useRef(false);\n const f7Actions = useRef(null);\n const onOpen = instance => {\n isOpened.current = true;\n isClosing.current = false;\n emit(props, 'actionsOpen', instance);\n };\n const onOpened = instance => {\n emit(props, 'actionsOpened', instance);\n };\n const onClose = instance => {\n isOpened.current = false;\n isClosing.current = true;\n emit(props, 'actionsClose', instance);\n };\n const onClosed = instance => {\n isClosing.current = false;\n emit(props, 'actionsClosed', instance);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7Actions: () => f7Actions.current\n }));\n\n // watch opened changes\n watchProp(opened, value => {\n if (!f7Actions.current) return;\n if (value) {\n f7Actions.current.open();\n } else {\n f7Actions.current.close();\n }\n });\n const modalEvents = method => {\n if (!f7Actions.current) return;\n f7Actions.current[method]('open', onOpen);\n f7Actions.current[method]('opened', onOpened);\n f7Actions.current[method]('close', onClose);\n f7Actions.current[method]('closed', onClosed);\n };\n const onMount = () => {\n if (!elRef.current) return;\n const {\n target,\n convertToPopover,\n forceToPopover,\n closeByBackdropClick,\n closeByOutsideClick,\n closeOnEscape,\n backdrop,\n backdropEl,\n containerEl\n } = props;\n const params = {\n el: elRef.current,\n grid\n };\n if (target) params.targetEl = target;\n if ('convertToPopover' in props) params.convertToPopover = convertToPopover;\n if ('forceToPopover' in props) params.forceToPopover = forceToPopover;\n if ('backdrop' in props) params.backdrop = backdrop;\n if ('backdropEl' in props) params.backdropEl = backdropEl;\n if ('closeByBackdropClick' in props) params.closeByBackdropClick = closeByBackdropClick;\n if ('closeByOutsideClick' in props) params.closeByOutsideClick = closeByOutsideClick;\n if ('closeOnEscape' in props) params.closeOnEscape = closeOnEscape;\n if ('animate' in props) params.animate = animate;\n if ('containerEl' in props) params.containerEl = containerEl;\n f7ready(() => {\n f7Actions.current = f7.actions.create(params);\n modalEvents('on');\n if (opened) {\n f7Actions.current.open(false);\n }\n });\n };\n const onDestroy = () => {\n if (f7Actions.current) f7Actions.current.destroy();\n f7Actions.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n modalEvents('on');\n return () => {\n modalEvents('off');\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n const classes = classNames(className, 'actions-modal', {\n 'actions-grid': grid\n }, modalStateClasses({\n isOpened,\n isClosing\n }), colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children);\n});\nActions.displayName = 'f7-actions';\nexport default Actions;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\n\n\nconst ActionsGroup = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const classes = classNames(className, 'actions-group', colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children);\n});\nActionsGroup.displayName = 'f7-actions-group';\nexport default ActionsGroup;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs, getSlots, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7 } from '../shared/f7.js';\n\n\nconst ComponentName = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n strong,\n close = true\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const classes = classNames(className, {\n 'actions-button': true,\n 'actions-button-strong': strong\n }, colorClasses(props));\n let mediaEl;\n const slots = getSlots(props);\n if (slots.media && slots.media.length) {\n mediaEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"actions-button-media\"\n }, slots.media);\n }\n const onClick = e => {\n if (elRef.current && close && f7) {\n f7.actions.close(f7.$(elRef.current).parents('.actions-modal'));\n }\n emit(props, 'click', e);\n };\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs, {\n onClick: onClick\n }), mediaEl, /*#__PURE__*/React.createElement(\"div\", {\n className: \"actions-button-text\"\n }, slots.default));\n});\nComponentName.displayName = 'f7-actions-button';\nexport default ComponentName;","import React, {useState, useEffect, Fragment, useRef} from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport { f7, Popup, Sheet, Popover, Page, Toolbar, Navbar, NavLeft, NavRight, NavTitle, Link, Input, Icon, List, ListItem, Actions, ActionsGroup, ActionsButton } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from '../../../utils/device';\n\n// Utils\nconst sliceQuote = (text) => {\n if (text) {\n let sliced = text.slice(0, 100);\n if (sliced.length < text.length) {\n sliced += '...';\n return sliced;\n }\n return text;\n }\n};\n\n// Add comment\n\nconst AddCommentPopup = inject(\"storeComments\")(observer(props => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const userInfo = props.userInfo;\n const [stateText, setText] = useState('');\n let refInputComment = useRef(null);\n\n useEffect(() => {\n f7.popup.open('.add-comment-popup', false);\n\n if(refInputComment) {\n refInputComment.focus();\n }\n }, []);\n\n return (\n \n \n \n {\n f7.popup.close('.add-comment-popup');\n setTimeout(() => {\n props.closeAddComment();\n }, 500)\n }}>{_t.textCancel}\n \n {_t.textAddComment}\n \n {\n f7.popup.close('.add-comment-popup');\n setTimeout(() => {\n props.closeAddComment();\n props.onAddNewComment(stateText, false)\n }, 500);\n }}>\n {Device.android ? : _t.textDone}\n \n \n \n
                \n
                \n {Device.android &&\n
                {userInfo.initials}
                \n }\n
                {userInfo.name}
                \n
                \n
                \n \n
                \n
                \n
                \n )\n}));\n\nconst AddCommentDialog = inject(\"storeComments\")(observer(props => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const userInfo = props.userInfo;\n const templateInitials = `
                ${userInfo.initials}
                `;\n let refContainerDialog = useRef(null);\n\n useEffect(() => {\n f7.dialog.create({\n destroyOnClose: true,\n containerEl: document.getElementById('add-comment-dialog'),\n content:\n `
                \n
                \n
                \n \n
                ${_t.textAddComment}
                \n \n
                \n
                \n
                \n
                \n ${Device.android ? templateInitials : ''}\n
                ${userInfo.name}
                \n
                \n
                \n \n
                \n
                `,\n on: {\n opened: () => {\n const cancel = document.getElementById('comment-cancel');\n if(!Device.android) $$('#comment-text').focus();\n cancel.addEventListener('click', () => {\n f7.dialog.close();\n props.closeAddComment();\n });\n const done = document.getElementById('comment-done');\n done.addEventListener('click', () => {\n const value = document.getElementById('comment-text').value;\n if (value.length > 0) {\n f7.dialog.close();\n props.closeAddComment();\n props.onAddNewComment(value, false);\n }\n });\n const area = document.getElementById('comment-text');\n area.addEventListener('input', (event) => {\n if (event.target.value.length === 0 && !done.classList.contains('disabled')) {\n done.classList.add('disabled');\n } else if (event.target.value.length > 0 && done.classList.contains('disabled')) {\n done.classList.remove('disabled');\n }\n });\n done.classList.add('disabled');\n }\n }\n }).open();\n\n if(refContainerDialog) {\n const inputComment = refContainerDialog.querySelector('#comment-text');\n inputComment.focus();\n }\n }, []);\n\n return (\n
                refContainerDialog = el} className=\"add-comment-dialog\">
                \n );\n}));\n\nconst AddComment = props => {\n return (\n Device.phone ?\n :\n \n )\n};\n\n// Actions\nconst CommentActions = ({comment, onCommentMenuClick, opened, openActionComment}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n return (\n openActionComment(false)}>\n \n {comment && \n {comment.editable && {onCommentMenuClick('editComment', comment);}}>{_t.textEdit}}\n {!comment.resolved && comment.editable ?\n {onCommentMenuClick('resolve', comment);}}>{_t.textResolve} :\n comment.editable && {onCommentMenuClick('resolve', comment);}}>{_t.textReopen}\n }\n {onCommentMenuClick('addReply', comment);}}>{_t.textAddReply}\n {comment.removable && {onCommentMenuClick('deleteComment', comment);}}>{_t.textDeleteComment}}\n \n }\n \n \n {_t.textCancel}\n \n \n )\n};\n\nconst ReplyActions = ({comment, reply, onCommentMenuClick, opened, openActionReply}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n return (\n openActionReply(false)}>\n \n {reply && \n {reply.editable && {onCommentMenuClick('editReply', comment, reply);}}>{_t.textEdit}}\n {reply.removable && {onCommentMenuClick('deleteReply', comment, reply);}}>{_t.textDeleteReply}}\n \n }\n \n \n {_t.textCancel}\n \n \n )\n};\n\n// Edit comment\nconst EditCommentPopup = inject(\"storeComments\")(observer(({storeComments, comment, onEditComment}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const [stateText, setText] = useState(comment.comment);\n let refInputEditComment = useRef(null);\n\n useEffect(() => {\n f7.popup.open('.edit-comment-popup', false);\n\n if(refInputEditComment) {\n refInputEditComment.focus();\n }\n }, []);\n \n return (\n \n \n \n {\n f7.popup.close('.edit-comment-popup');\n setTimeout(() => {\n storeComments.openEditComment(false);\n }, 500);\n }}>{_t.textCancel}\n \n {_t.textEditComment}\n \n {\n f7.popup.close('.edit-comment-popup');\n setTimeout(() => {\n storeComments.openEditComment(false);\n onEditComment(comment, stateText);\n }, 500);\n }}\n >\n {Device.android ? : _t.textDone}\n \n \n \n
                \n
                \n {Device.android &&\n
                {comment.userInitials}
                \n }\n
                \n
                {comment.parsedName}
                \n
                {comment.date}
                \n
                \n
                \n
                \n \n
                \n
                \n
                \n )\n}));\n\nconst EditCommentDialog = inject(\"storeComments\")(observer(({storeComments, comment, onEditComment}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const templateInitials = `
                ${comment.userInitials}
                `;\n let refContainerDialog = useRef(null);\n\n useEffect(() => {\n f7.dialog.create({\n destroyOnClose: true,\n containerEl: document.getElementById('edit-comment-dialog'),\n content:\n `
                \n
                \n
                \n \n
                ${_t.textEditComment}
                \n \n
                \n
                \n
                \n
                \n ${Device.android ? templateInitials : ''}\n
                \n
                ${comment.parsedName}
                \n
                ${comment.date}
                \n
                \n
                \n
                \n \n
                \n
                `,\n on: {\n opened: () => {\n const cancel = document.getElementById('comment-cancel');\n cancel.addEventListener('click', () => {\n f7.dialog.close();\n storeComments.openEditComment(false);\n });\n const done = document.getElementById('comment-done');\n done.addEventListener('click', () => {\n const value = document.getElementById('comment-text').value;\n if (value.length > 0) {\n onEditComment(comment, value);\n f7.dialog.close();\n storeComments.openEditComment(false);\n }\n });\n const area = document.getElementById('comment-text');\n area.addEventListener('input', (event) => {\n if (event.target.value.length === 0 && !done.classList.contains('disabled')) {\n done.classList.add('disabled');\n } else if (event.target.value.length > 0 && done.classList.contains('disabled')) {\n done.classList.remove('disabled');\n }\n });\n },\n open: () => {\n $$('.dialog-backdrop.backdrop-in')[0].classList.add('over-popover');\n },\n closed: () => {\n $$('.dialog-backdrop.backdrop-in')[0].classList.remove('over-popover');\n }\n }\n }).open();\n\n if(refContainerDialog) {\n const inputComment = refContainerDialog.querySelector('#comment-text');\n inputComment.focus();\n }\n }, []);\n\n return (\n
                refContainerDialog = el} className=\"edit-comment-dialog\">
                \n );\n}));\n\nconst EditComment = ({comment, onEditComment}) => {\n return (\n Device.phone ?\n :\n \n )\n};\n\nconst AddReplyPopup = inject(\"storeComments\")(observer(({storeComments, userInfo, comment, onAddReply}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const [stateText, setText] = useState('');\n let refInputReplyComment = useRef(null);\n\n useEffect(() => {\n f7.popup.open('.add-reply-popup', false);\n\n if(refInputReplyComment) {\n refInputReplyComment.focus();\n }\n }, []);\n\n return (\n \n \n \n {\n f7.popup.close('.add-reply-popup');\n setTimeout(() => {\n storeComments.openAddReply(false);\n }, 500);\n }}>{_t.textCancel}\n \n {_t.textAddReply}\n \n {\n f7.popup.close('.add-reply-popup');\n setTimeout(() => {\n storeComments.openAddReply(false);\n onAddReply(comment, stateText);\n }, 500);\n }}>\n {Device.android ? : _t.textDone}\n \n \n \n
                \n
                \n {Device.android &&\n
                {userInfo.initials}
                \n }\n
                {userInfo.name}
                \n
                \n
                \n \n
                \n
                \n
                \n )\n}));\n\nconst AddReplyDialog = inject(\"storeComments\")(observer(({storeComments, userInfo, comment, onAddReply}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const templateInitials = `
                ${userInfo.initials}
                `;\n let refContainerDialog = useRef(null);\n\n useEffect(() => {\n f7.dialog.create({\n destroyOnClose: true,\n containerEl: document.getElementById('add-reply-dialog'),\n content:\n `
                \n
                \n
                \n \n
                ${_t.textAddReply}
                \n \n
                \n
                \n
                \n
                \n ${Device.android ? templateInitials : ''}\n
                ${userInfo.name}
                \n
                \n
                \n \n
                \n
                `,\n on: {\n opened: () => {\n const cancel = document.getElementById('reply-cancel');\n cancel.addEventListener('click', () => {\n f7.dialog.close();\n storeComments.openAddReply(false);\n });\n const done = document.getElementById('reply-done');\n done.addEventListener('click', () => {\n const value = document.getElementById('reply-text').value;\n if (value.length > 0) {\n onAddReply(comment, value);\n f7.dialog.close();\n storeComments.openAddReply(false);\n }\n });\n const area = document.getElementById('reply-text');\n area.addEventListener('input', (event) => {\n if (event.target.value.length === 0 && !done.classList.contains('disabled')) {\n done.classList.add('disabled');\n } else if (event.target.value.length > 0 && done.classList.contains('disabled')) {\n done.classList.remove('disabled');\n }\n });\n done.classList.add('disabled');\n },\n open: () => {\n $$('.dialog-backdrop.backdrop-in')[0].classList.add('over-popover');\n },\n closed: () => {\n $$('.dialog-backdrop.backdrop-in')[0].classList.remove('over-popover');\n }\n }\n }).open();\n\n if(refContainerDialog) {\n const inputReplyComment = refContainerDialog.querySelector('#reply-text');\n inputReplyComment.focus();\n }\n }, []);\n\n return (\n
                refContainerDialog = el} className=\"add-reply-dialog\">
                \n );\n}));\n\nconst AddReply = ({userInfo, comment, onAddReply}) => {\n return (\n Device.phone ?\n :\n \n )\n};\n\nconst EditReplyPopup = inject(\"storeComments\")(observer(({storeComments, comment, reply, onEditReply}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const [stateText, setText] = useState(reply.reply);\n let relInputReplyComment = useRef(null);\n\n useEffect(() => {\n f7.popup.open('.edit-reply-popup', false);\n\n if(relInputReplyComment) {\n relInputReplyComment.focus();\n }\n }, []);\n\n return (\n \n \n \n {\n f7.popup.close('.edit-reply-popup');\n setTimeout(() => {\n storeComments.openEditReply(false);\n }, 500);\n }}>{_t.textCancel}\n \n {_t.textEditReply}\n \n {\n f7.popup.close('.edit-reply-popup');\n setTimeout(() => {\n storeComments.openEditReply(false);\n onEditReply(comment, reply, stateText);\n }, 500);\n }}\n >\n {Device.android ? : _t.textDone}\n \n \n \n
                \n
                \n {Device.android &&\n
                {reply.userInitials}
                \n }\n
                \n
                {reply.parsedName}
                \n
                {reply.date}
                \n
                \n
                \n
                \n \n
                \n
                \n
                \n )\n}));\n\nconst EditReplyDialog = inject(\"storeComments\")(observer(({storeComments, comment, reply, onEditReply}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const templateInitials = `
                ${reply.userInitials}
                `;\n let refContainerDialog = useRef(null);\n\n useEffect(() => {\n f7.dialog.create({\n destroyOnClose: true,\n containerEl: document.getElementById('edit-reply-dialog'),\n content:\n `
                \n
                \n
                \n \n
                ${_t.textEditReply}
                \n \n
                \n
                \n
                \n
                \n ${Device.android ? templateInitials : ''}\n
                \n
                ${reply.parsedName}
                \n
                ${reply.date}
                \n
                \n
                \n
                \n \n
                \n
                `,\n on: {\n opened: () => {\n const cancel = document.getElementById('reply-cancel');\n cancel.addEventListener('click', () => {\n f7.dialog.close();\n storeComments.openEditReply(false);\n });\n const done = document.getElementById('reply-done');\n done.addEventListener('click', () => {\n const value = document.getElementById('reply-text').value;\n if (value.length > 0) {\n onEditReply(comment, reply, value);\n f7.dialog.close();\n storeComments.openEditReply(false);\n }\n });\n const area = document.getElementById('reply-text');\n area.addEventListener('input', (event) => {\n if (event.target.value.length === 0 && !done.classList.contains('disabled')) {\n done.classList.add('disabled');\n } else if (event.target.value.length > 0 && done.classList.contains('disabled')) {\n done.classList.remove('disabled');\n }\n });\n },\n open: () => {\n $$('.dialog-backdrop.backdrop-in')[0].classList.add('over-popover');\n },\n closed: () => {\n $$('.dialog-backdrop.backdrop-in')[0].classList.remove('over-popover');\n }\n }\n }).open();\n\n if(refContainerDialog) {\n const inputReplyComment = refContainerDialog.querySelector('#reply-text');\n inputReplyComment.focus();\n }\n }, []);\n\n return (\n
                refContainerDialog = el} className=\"edit-reply-dialog\">
                \n );\n}));\n\nconst EditReply = ({comment, reply, onEditReply}) => {\n return (\n Device.phone ?\n :\n \n )\n};\n\nconst pickLink = (message) => {\n let arrayComment = [], offset, len;\n message.replace(Common.Utils.ipStrongRe, function(subStr) {\n let result = /[\\.,\\?\\+;:=!\\(\\)]+$/.exec(subStr);\n if (result)\n subStr = subStr.substring(0, result.index);\n offset = arguments[arguments.length-2];\n arrayComment.push({start: offset, end: subStr.length+offset, str: window.open(subStr)} href={subStr} target=\"_blank\" data-can-copy=\"true\">{subStr}});\n return '';\n });\n\n if (message.length<1000 || message.search(/\\S{255,}/)<0)\n message.replace(Common.Utils.hostnameStrongRe, function(subStr) {\n let result = /[\\.,\\?\\+;:=!\\(\\)]+$/.exec(subStr);\n if (result)\n subStr = subStr.substring(0, result.index);\n let ref = (! /(((^https?)|(^ftp)):\\/\\/)/i.test(subStr) ) ? ('http://' + subStr) : subStr;\n offset = arguments[arguments.length-2];\n len = subStr.length;\n let elem = arrayComment.find(function(item){\n return ( (offset>=item.start) && (offsetitem.start));\n });\n if (!elem)\n arrayComment.push({start: offset, end: len+offset, str: window.open(ref)} href={ref} target=\"_blank\" data-can-copy=\"true\">{subStr}});\n return '';\n });\n\n message.replace(Common.Utils.emailStrongRe, function(subStr) {\n let ref = (! /((^mailto:)\\/\\/)/i.test(subStr) ) ? ('mailto:' + subStr) : subStr;\n offset = arguments[arguments.length-2];\n len = subStr.length;\n let elem = arrayComment.find(function(item){\n return ( (offset>=item.start) && (offsetitem.start));\n });\n if (!elem)\n arrayComment.push({start: offset, end: len+offset, str: window.open(ref)} href={ref}>{subStr}});\n return '';\n });\n\n arrayComment = arrayComment.sort(function(item1,item2){ return item1.start - item2.start; });\n \n let str_res = (arrayComment.length>0) ? : ;\n\n for (var i=1; i{str_res}{Common.Utils.String.htmlEncode(message.substring(arrayComment[i-1].end, arrayComment[i].start))}{arrayComment[i].str};\n }\n\n if (arrayComment.length>0) {\n str_res = ;\n }\n\n return str_res; \n}\n\n// View comments\n\nconst ViewComments = inject(\"storeComments\", \"storeAppOptions\", \"storeReview\")(observer(({storeComments, storeAppOptions, onCommentMenuClick, onResolveComment, showComment, storeReview, wsProps}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const isAndroid = Device.android;\n const displayMode = storeReview.displayMode;\n const isViewer = storeAppOptions.isViewer;\n const canEditComments = storeAppOptions.canEditComments;\n const viewMode = !storeAppOptions.canComments;\n const comments = storeComments.groupCollectionFilter || storeComments.collectionComments;\n const isEdit = storeAppOptions.isEdit || storeAppOptions.isRestrictedEdit;\n const sortComments = comments.length > 0 ? [...comments].sort((a, b) => a.time > b.time ? -1 : 1) : null;\n const isProtected = storeAppOptions.isProtected;\n const typeProtection = storeAppOptions.typeProtection;\n const isAvailableCommenting = !isProtected || typeProtection === Asc.c_oAscEDocProtect.TrackedChanges || typeProtection === Asc.c_oAscEDocProtect.Comments;\n\n const [clickComment, setComment] = useState();\n const [commentActionsOpened, openActionComment] = useState(false);\n\n const [reply, setReply] = useState();\n const [replyActionsOpened, openActionReply] = useState(false);\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n {!sortComments ?\n
                {_t.textNoComments}
                :\n \n {sortComments.map((comment, indexComment) => {\n return (\n !comment.hide &&\n {\n !e.target.closest('.comment-menu') && !e.target.closest('.reply-menu') ? showComment(comment) : null}}>\n
                \n
                \n {isAndroid &&
                {comment.userInitials}
                }\n
                \n
                {comment.parsedName}
                \n
                {comment.date}
                \n
                \n
                \n {isEdit && !viewMode &&\n
                \n {(comment.editable && displayMode === 'markup' && !wsProps?.Objects && (!isViewer || canEditComments) && isAvailableCommenting) &&
                {onResolveComment(comment);}}>
                }\n {(displayMode === 'markup' && !wsProps?.Objects && (!isViewer || canEditComments) && isAvailableCommenting) &&\n
                {setComment(comment); openActionComment(true);}}>\n \n
                \n }\n
                \n }\n
                \n
                \n {comment.quote &&
                {sliceQuote(comment.quote)}
                }\n
                {pickLink(comment.comment)}
                \n {comment.replies.length > 0 &&\n
                  \n {comment.replies.map((reply, indexReply) => {\n return (\n
                • \n
                  \n
                  \n
                  \n
                  \n
                  \n {isAndroid &&
                  {reply.userInitials}
                  }\n
                  \n
                  {reply.parsedName}
                  \n
                  {reply.date}
                  \n
                  \n
                  \n {isEdit && !viewMode && reply.editable && (!isViewer || canEditComments) && isAvailableCommenting &&\n
                  \n
                  {setComment(comment); setReply(reply); openActionReply(true);}}\n >\n \n
                  \n
                  \n }\n
                  \n
                  \n
                  {pickLink(reply.reply)}
                  \n
                  \n
                  \n
                  \n
                  \n
                • \n )\n })}\n
                \n }\n
                \n
                \n )\n })}\n
                \n }\n\n \n \n
                \n )\n}));\n\nconst CommentList = inject(\"storeComments\", \"storeAppOptions\", \"storeReview\")(observer(({storeComments, storeAppOptions, onCommentMenuClick, onResolveComment, storeReview, wsProps}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const isAndroid = Device.android;\n const displayMode = storeReview.displayMode;\n const isViewer = storeAppOptions.isViewer;\n const canEditComments = storeAppOptions.canEditComments;\n const viewMode = !storeAppOptions.canComments;\n const isEdit = storeAppOptions.isEdit || storeAppOptions.isRestrictedEdit;\n const comments = storeComments.showComments;\n const isProtected = storeAppOptions.isProtected;\n const typeProtection = storeAppOptions.typeProtection;\n const isAvailableCommenting = !isProtected || typeProtection === Asc.c_oAscEDocProtect.TrackedChanges || typeProtection === Asc.c_oAscEDocProtect.Comments;\n\n const [currentIndex, setCurrentIndex] = useState(0);\n const comment = comments[currentIndex];\n\n const [commentActionsOpened, openActionComment] = useState(false);\n\n const [reply, setReply] = useState();\n const [replyActionsOpened, openActionReply] = useState(false);\n\n const onViewPrevComment = () => {\n if (currentIndex - 1 < 0) {\n setCurrentIndex(comments.length - 1);\n } else {\n setCurrentIndex(currentIndex - 1);\n }\n };\n\n const onViewNextComment = () => {\n if (currentIndex + 1 >= comments.length) {\n setCurrentIndex(0);\n } else {\n setCurrentIndex(currentIndex + 1);\n }\n };\n\n if(!comment) {\n if (comments.length > 0) {\n onViewNextComment();\n }\n return null;\n }\n\n return (\n \n \n {isEdit && !viewMode &&\n {onCommentMenuClick('addReply', comment);}}>{_t.textAddReply}\n }\n {comments.length > 1 &&\n
                \n \n \n
                \n }\n
                \n
                \n \n \n \n
                \n
                \n {isAndroid &&
                {comment.userInitials}
                }\n
                \n
                {comment.parsedName}
                \n
                {comment.date}
                \n
                \n
                \n {isEdit && !viewMode &&\n
                \n {(comment.editable && displayMode === 'markup' && !wsProps?.Objects && (!isViewer || canEditComments) && isAvailableCommenting) &&
                {onResolveComment(comment);}}>
                }\n {(displayMode === 'markup' && !wsProps?.Objects && (!isViewer || canEditComments) && isAvailableCommenting) &&\n
                {openActionComment(true);}}>\n \n
                \n }\n
                \n }\n
                \n
                \n {comment.quote &&
                {sliceQuote(comment.quote)}
                }\n
                {pickLink(comment.comment)}
                \n {comment.replies.length > 0 &&\n
                  \n {comment.replies.map((reply, indexReply) => {\n return (\n
                • \n
                  \n
                  \n
                  \n
                  \n
                  \n {isAndroid &&
                  {reply.userInitials}
                  }\n
                  \n
                  {reply.parsedName}
                  \n
                  {reply.date}
                  \n
                  \n
                  \n {isEdit && !viewMode && reply.editable && (!isViewer || canEditComments) && isAvailableCommenting &&\n
                  \n
                  {setReply(reply); openActionReply(true);}}\n >\n \n
                  \n
                  \n }\n
                  \n
                  \n
                  {pickLink(reply.reply)}
                  \n
                  \n
                  \n
                  \n
                  \n
                • \n )\n })}\n
                \n }\n
                \n
                \n
                \n \n \n
                \n
                \n
                \n )\n\n}));\n\nconst ViewCommentSheet = ({closeCurComments, onCommentMenuClick, onResolveComment, wsProps}) => {\n useEffect(() => {\n f7.sheet.open('#view-comment-sheet');\n });\n\n const [stateHeight, setHeight] = useState('45%');\n const [stateOpacity, setOpacity] = useState(1);\n\n const [stateStartY, setStartY] = useState();\n const [isNeedClose, setNeedClose] = useState(false);\n\n const handleTouchStart = (event) => {\n const touchObj = event.changedTouches[0];\n setStartY(parseInt(touchObj.clientY));\n };\n const handleTouchMove = (event) => {\n const touchObj = event.changedTouches[0];\n const dist = parseInt(touchObj.clientY) - stateStartY;\n if (dist < 0) { // to top\n setHeight('90%');\n setOpacity(1);\n setNeedClose(false);\n } else if (dist < 80) {\n setHeight('45%');\n setOpacity(1);\n setNeedClose(false);\n } else {\n setNeedClose(true);\n setOpacity(0.6);\n }\n };\n const handleTouchEnd = (event) => {\n const touchObj = event.changedTouches[0];\n const swipeEnd = parseInt(touchObj.clientY);\n const dist = swipeEnd - stateStartY;\n if (isNeedClose) {\n closeCurComments();\n } else if (stateHeight === '90%' && dist > 20) {\n setHeight('45%');\n }\n };\n return (\n \n
                \n \n
                \n \n
                \n )\n};\n\nconst ViewCommentPopover = ({onCommentMenuClick, onResolveComment, wsProps}) => {\n useEffect(() => {\n f7.popover.open('#view-comment-popover', '#btn-coauth');\n });\n\n return (\n \n \n \n )\n};\n\nconst ViewCurrentComments = props => {\n return (\n Device.phone ?\n :\n \n )\n};\n\nexport {\n AddComment,\n EditComment,\n AddReply,\n EditReply,\n ViewComments,\n ViewCurrentComments\n};\n","export const getUserColor = (id, intValue) => {\n\tconst api = Common.EditorApi.get();\n\tconst color = api.asc_getUserColorById(id);\n\tconst userColors = [\"#\" + (\"000000\" + color.toString(16)).slice(-6), color];\n\n\treturn intValue ? userColors[1] : userColors[0];\n}","import React, {Component, Fragment} from 'react';\nimport { inject, observer } from \"mobx-react\";\nimport { f7 } from 'framework7-react';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport { withTranslation} from 'react-i18next';\nimport { LocalStorage } from '../../../utils/LocalStorage.mjs';\n\nimport {AddComment, EditComment, AddReply, EditReply, ViewComments, ViewCurrentComments} from '../../view/collaboration/Comments';\nimport { getUserColor } from '../../../utils/getUserColor';\n\n// utils\nconst timeZoneOffsetInMs = (new Date()).getTimezoneOffset() * 60000;\nconst utcDateToString = (date) => {\n if (Object.prototype.toString.call(date) === '[object Date]')\n return (date.getTime() - timeZoneOffsetInMs).toString();\n return '';\n};\nconst ooDateToString = (date) => {\n if (Object.prototype.toString.call(date) === '[object Date]')\n return (date.getTime()).toString();\n return '';\n};\nconst stringOOToLocalDate = (date) => {\n if (typeof date === 'string')\n return parseInt(date);\n return 0;\n};\nconst stringUtcToLocalDate = (date) => {\n if (typeof date === 'string')\n return parseInt(date) + timeZoneOffsetInMs;\n return 0;\n};\nconst dateToLocaleTimeString = (date, lang) => {\n const format = (date) => {\n let hours = date.getHours();\n let minutes = date.getMinutes();\n let ampm = hours >= 12 ? 'pm' : 'am';\n\n hours = hours % 12;\n hours = hours ? hours : 12; // the hour '0' should be '12'\n minutes = minutes < 10 ? '0' + minutes : minutes;\n return hours + ':' + minutes + ' ' + ampm;\n };\n lang = (lang || 'en').replace('_', '-').toLowerCase();\n try {\n return date.toLocaleString(lang, {dateStyle: 'short', timeStyle: 'short'});\n } catch (e) {\n lang = 'en';\n return date.toLocaleString(lang, {dateStyle: 'short', timeStyle: 'short'});\n }\n\n // MM/dd/yyyy hh:mm AM\n return (date.getMonth() + 1) + '/' + (date.getDate()) + '/' + date.getFullYear() + ' ' + format(date);\n};\nconst parseUserName = name => {\n return AscCommon.UserInfoParser.getParsedName(name);\n};\n//end utils\n\nclass CommentsController extends Component {\n constructor(props) {\n super(props);\n this.usersStore = this.props.users;\n this.appOptions = this.props.storeAppOptions;\n this.storeComments = this.props.storeComments;\n this.storeApplicationSettings = this.props.storeApplicationSettings;\n\n Common.Notifications.on('engineCreated', api => {\n api.asc_registerCallback('asc_onAddComment', this.addComment.bind(this));\n api.asc_registerCallback('asc_onAddComments', this.addComments.bind(this));\n api.asc_registerCallback('asc_onRemoveComment', this.removeComment.bind(this));\n api.asc_registerCallback('asc_onRemoveComments', this.removeComments.bind(this));\n api.asc_registerCallback('asc_onChangeCommentData', this.changeCommentData.bind(this));\n api.asc_registerCallback('asc_onShowComment', this.changeShowComments.bind(this));\n api.asc_registerCallback('asc_onHideComment', this.hideComments.bind(this));\n\n if (window.editorType === 'sse') {\n api.asc_registerCallback('asc_onActiveSheetChanged', this.onApiActiveSheetChanged.bind(this));\n Common.Notifications.on('comments:filterchange', this.onFilterChange.bind(this));\n Common.Notifications.on('sheet:active', this.onApiActiveSheetChanged.bind(this));\n }\n });\n\n Common.Notifications.on('document:ready', () => {\n if (window.editorType === 'de' || window.editorType === 'sse') {\n const api = Common.EditorApi.get();\n /** coauthoring begin **/\n const isLiveCommenting = LocalStorage.getBool(`${window.editorType}-mobile-settings-livecomment`, true);\n const resolved = LocalStorage.getBool(`${window.editorType}-settings-resolvedcomment`);\n this.storeApplicationSettings.changeDisplayComments(isLiveCommenting);\n this.storeApplicationSettings.changeDisplayResolved(resolved);\n isLiveCommenting ? api.asc_showComments(resolved) : api.asc_hideComments();\n /** coauthoring end **/\n }\n\n this.curUserId = this.props.users.currentUser.asc_getIdOriginal();\n });\n }\n onApiActiveSheetChanged (index) {\n this.onFilterChange(['doc', 'sheet' + Common.EditorApi.get().asc_getWorksheetId(index)]);\n }\n addComment (id, data) {\n const comment = this.readSDKComment(id, data);\n \n if (comment) {\n this.storeComments.addComment(comment);\n this.changeShowComments([comment.uid]);\n }\n }\n addComments (data) {\n for (let i = 0; i < data.length; ++i) {\n const comment = this.readSDKComment(data[i].asc_getId(), data[i]);\n this.storeComments.addComment(comment);\n }\n }\n removeComment (id) {\n this.storeComments.removeComment(id);\n if (this.storeComments.showComments.length < 1) {\n Device.phone ? f7.sheet.close('#view-comment-sheet') : f7.popover.close('#view-comment-popover');\n }\n }\n removeComments (data) {\n for (let i = 0; i < data.length; i++) {\n this.removeComment(data[i]);\n }\n }\n changeShowComments (id) {\n this.storeComments.changeShowComment(id);\n }\n hideComments () {\n //Common.Notifications.trigger('closeviewcomment');\n }\n changeCommentData (id, data) {\n const changeComment = {};\n\n const date = (data.asc_getOnlyOfficeTime()) ? new Date(stringOOToLocalDate(data.asc_getOnlyOfficeTime())) :\n ((data.asc_getTime() === '') ? new Date() : new Date(stringUtcToLocalDate(data.asc_getTime())));\n\n const userId = data.asc_getUserId()\n const user = this.usersStore.searchUserById(userId);\n const name = data.asc_getUserName();\n const parsedName = parseUserName(name);\n\n changeComment.comment = data.asc_getText();\n changeComment.userId = userId;\n changeComment.userName = name;\n changeComment.parsedName = Common.Utils.String.htmlEncode(parsedName);\n changeComment.userInitials = this.usersStore.getInitials(parsedName);\n changeComment.userColor = (user) ? user.asc_getColor() : getUserColor(userId || name);\n changeComment.resolved = data.asc_getSolved();\n changeComment.quote = data.asc_getQuoteText();\n changeComment.time = date.getTime();\n changeComment.date = dateToLocaleTimeString(date, this.appOptions.lang);\n changeComment.editable = (this.appOptions.canEditComments || (data.asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canEditComment(name);\n changeComment.removable = (this.appOptions.canDeleteComments || (data.asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canDeleteComment(name);\n changeComment.hide = !AscCommon.UserInfoParser.canViewComment(name);\n\n let dateReply = null;\n const replies = [];\n\n const repliesCount = data.asc_getRepliesCount();\n for (let i = 0; i < repliesCount; ++i) {\n\n dateReply = (data.asc_getReply(i).asc_getOnlyOfficeTime()) ? new Date(stringOOToLocalDate(data.asc_getReply(i).asc_getOnlyOfficeTime())) :\n ((data.asc_getReply(i).asc_getTime() === '') ? new Date() : new Date(stringUtcToLocalDate(data.asc_getReply(i).asc_getTime())));\n\n const userId = data.asc_getReply(i).asc_getUserId();\n const user = this.usersStore.searchUserById(userId);\n const userName = data.asc_getReply(i).asc_getUserName();\n const parsedName = parseUserName(userName);\n\n replies.push({\n ind: i,\n userId,\n userName,\n parsedName: Common.Utils.String.htmlEncode(parsedName),\n userColor: (user) ? user.asc_getColor() : getUserColor(userId || userName),\n date: dateToLocaleTimeString(dateReply, this.appOptions.lang),\n reply: data.asc_getReply(i).asc_getText(),\n time: dateReply.getTime(),\n userInitials: this.usersStore.getInitials(parsedName),\n editable: (this.appOptions.canEditComments || (data.asc_getReply(i).asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canEditComment(userName),\n removable: (this.appOptions.canDeleteComments || (data.asc_getReply(i).asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canDeleteComment(userName)\n });\n }\n changeComment.replies = replies;\n\n this.props.storeComments.changeComment(id, changeComment);\n }\n onFilterChange (filter) {\n this.storeComments.changeFilter(filter);\n }\n readSDKComment (id, data) {\n const date = (data.asc_getOnlyOfficeTime()) ? new Date(stringOOToLocalDate(data.asc_getOnlyOfficeTime())) :\n ((data.asc_getTime() === '') ? new Date() : new Date(stringUtcToLocalDate(data.asc_getTime())));\n const userId = data.asc_getUserId();\n const user = this.usersStore.searchUserById(userId);\n const groupName = id.substr(0, id.lastIndexOf('_')+1).match(/^(doc|sheet[0-9_]+)_/);\n const userName = data.asc_getUserName();\n const parsedName = parseUserName(userName);\n const comment = {\n uid : id,\n userId,\n userName,\n parsedName,\n userColor : (user) ? user.asc_getColor() : getUserColor(userId || userName),\n date : dateToLocaleTimeString(date, this.appOptions.lang),\n quote : data.asc_getQuoteText(),\n comment : data.asc_getText(),\n resolved : data.asc_getSolved(),\n unattached : !!data.asc_getDocumentFlag ? data.asc_getDocumentFlag() : false,\n time : date.getTime(),\n replies : [],\n groupName : (groupName && groupName.length>1) ? groupName[1] : null,\n userInitials : this.usersStore.getInitials(parsedName),\n editable : (this.appOptions.canEditComments || (data.asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canEditComment(userName),\n removable : (this.appOptions.canDeleteComments || (data.asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canDeleteComment(userName),\n hide : !AscCommon.UserInfoParser.canViewComment(userName),\n };\n if (comment) {\n const replies = this.readSDKReplies(data);\n if (replies.length > 0) {\n comment.replies = replies;\n }\n }\n return comment;\n }\n readSDKReplies (data) {\n const replies = [];\n const repliesCount = data.asc_getRepliesCount();\n let i = 0;\n let date = null;\n if (repliesCount) {\n for (i = 0; i < repliesCount; ++i) {\n date = (data.asc_getReply(i).asc_getOnlyOfficeTime()) ? new Date(stringOOToLocalDate(data.asc_getReply(i).asc_getOnlyOfficeTime())) :\n ((data.asc_getReply(i).asc_getTime() === '') ? new Date() : new Date(stringUtcToLocalDate(data.asc_getReply(i).asc_getTime())));\n const userId = data.asc_getReply(i).asc_getUserId();\n const user = this.usersStore.searchUserById(userId);\n const userName = data.asc_getReply(i).asc_getUserName();\n const parsedName = parseUserName(userName);\n\n replies.push({\n ind : i,\n userId,\n userName,\n parsedName : Common.Utils.String.htmlEncode(parsedName),\n userColor : (user) ? user.asc_getColor() : getUserColor(userId || userName),\n date : dateToLocaleTimeString(date, this.appOptions.lang),\n reply : data.asc_getReply(i).asc_getText(),\n time : date.getTime(),\n userInitials : this.usersStore.getInitials(parsedName),\n editable : (this.appOptions.canEditComments || (data.asc_getReply(i).asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canEditComment(userName),\n removable : (this.appOptions.canDeleteComments || (data.asc_getReply(i).asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canDeleteComment(userName)\n });\n }\n }\n return replies;\n }\n render() {\n return null;\n }\n}\n\nclass AddCommentController extends Component {\n constructor(props) {\n super(props);\n this.closeAddComment = this.closeAddComment.bind(this);\n this.getUserInfo = this.getUserInfo.bind(this);\n this.onAddNewComment = this.onAddNewComment.bind(this);\n\n this.state = {\n isOpen: false\n };\n\n Common.Notifications.on('addcomment', () => {\n f7.popover.close('#idx-context-menu-popover'); //close context menu\n this.setState({isOpen: true});\n });\n }\n closeAddComment () {\n this.setState({isOpen: false});\n }\n getUserInfo () {\n this.currentUser = this.props.users.currentUser;\n if (!this.currentUser) {\n this.currentUser = this.props.users.setCurrentUser(this.props.storeAppOptions.user.id);\n }\n const name = parseUserName(this.currentUser.asc_getUserName());\n return {\n name: Common.Utils.String.htmlEncode(name),\n initials: this.props.users.getInitials(name),\n color: this.currentUser.asc_getColor()\n };\n }\n onAddNewComment (commentText, documentFlag) {\n const api = Common.EditorApi.get();\n let comment;\n if (typeof Asc.asc_CCommentDataWord !== 'undefined') {\n comment = new Asc.asc_CCommentDataWord(null);\n } else {\n comment = new Asc.asc_CCommentData(null);\n }\n if (commentText.length > 0) {\n comment.asc_putText(commentText);\n comment.asc_putTime(utcDateToString(new Date()));\n comment.asc_putOnlyOfficeTime(ooDateToString(new Date()));\n comment.asc_putUserId(this.currentUser.asc_getIdOriginal());\n comment.asc_putUserName(this.currentUser.asc_getUserName());\n comment.asc_putSolved(false);\n\n !!comment.asc_putDocumentFlag && comment.asc_putDocumentFlag(documentFlag);\n\n api.asc_addComment(comment);\n Common.Notifications.trigger('viewcomment');\n }\n }\n render() {\n return(\n this.state.isOpen ? : null\n )\n }\n}\n\nclass EditCommentController extends Component {\n constructor (props) {\n super(props);\n this.onEditComment = this.onEditComment.bind(this);\n this.onAddReply = this.onAddReply.bind(this);\n this.onEditReply = this.onEditReply.bind(this);\n }\n getUserInfo () {\n this.currentUser = this.props.users.currentUser;\n const name = parseUserName(this.currentUser.asc_getUserName());\n return {\n name: Common.Utils.String.htmlEncode(name),\n initials: this.props.users.getInitials(name),\n color: this.currentUser.asc_getColor()\n };\n }\n onChangeComment (comment) {\n const ascComment = typeof Asc.asc_CCommentDataWord !== 'undefined' ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null);\n if (ascComment && comment) {\n ascComment.asc_putText(comment.comment);\n ascComment.asc_putQuoteText(comment.quote);\n ascComment.asc_putTime(utcDateToString(new Date(comment.time)));\n ascComment.asc_putOnlyOfficeTime(ooDateToString(new Date(comment.time)));\n ascComment.asc_putUserId(comment.userId);\n ascComment.asc_putUserName(comment.userName);\n ascComment.asc_putSolved(comment.resolved);\n ascComment.asc_putGuid(comment.guid);\n\n if (!!ascComment.asc_putDocumentFlag) {\n ascComment.asc_putDocumentFlag(comment.unattached);\n }\n\n const reply = comment.replies;\n if (reply && reply.length > 0) {\n reply.forEach((reply) => {\n const addReply = (typeof Asc.asc_CCommentDataWord !== 'undefined' ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n if (addReply) {\n addReply.asc_putText(reply.reply);\n addReply.asc_putTime(utcDateToString(new Date(reply.time)));\n addReply.asc_putOnlyOfficeTime(ooDateToString(new Date(reply.time)));\n addReply.asc_putUserId(reply.userId);\n addReply.asc_putUserName(reply.userName);\n\n ascComment.asc_addReply(addReply);\n }\n });\n }\n const api = Common.EditorApi.get();\n api.asc_changeComment(comment.uid, ascComment);\n }\n }\n onEditComment (comment, text) {\n const changeComment = {...comment};\n changeComment.comment = text.trim();\n const user = this.props.users.currentUser;\n changeComment.userid = user.asc_getIdOriginal();\n changeComment.username = user.asc_getUserName();\n this.onChangeComment(changeComment);\n }\n onAddReply (comment, replyVal) {\n let reply = null;\n let addReply = null;\n const ascComment = (typeof Asc.asc_CCommentDataWord !== 'undefined' ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n\n if (ascComment) {\n ascComment.asc_putText(comment.comment);\n ascComment.asc_putQuoteText(comment.quote);\n ascComment.asc_putTime(utcDateToString(new Date(comment.time)));\n ascComment.asc_putOnlyOfficeTime(ooDateToString(new Date(comment.time)));\n ascComment.asc_putUserId(comment.userId);\n ascComment.asc_putUserName(comment.userName);\n ascComment.asc_putSolved(comment.resolved);\n ascComment.asc_putGuid(comment.guid);\n\n if (!!ascComment.asc_putDocumentFlag) {\n ascComment.asc_putDocumentFlag(comment.unattached);\n }\n\n reply = comment.replies;\n if (reply && reply.length) {\n reply.forEach(function (reply) {\n\n addReply = (typeof Asc.asc_CCommentDataWord !== 'undefined' ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n if (addReply) {\n addReply.asc_putText(reply.reply);\n addReply.asc_putTime(utcDateToString(new Date(reply.time)));\n addReply.asc_putOnlyOfficeTime(ooDateToString(new Date(reply.time)));\n addReply.asc_putUserId(reply.userId);\n addReply.asc_putUserName(reply.userName);\n\n ascComment.asc_addReply(addReply);\n }\n });\n }\n\n addReply = (typeof Asc.asc_CCommentDataWord !== 'undefined' ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n if (addReply) {\n addReply.asc_putText(replyVal);\n addReply.asc_putTime(utcDateToString(new Date()));\n addReply.asc_putOnlyOfficeTime(ooDateToString(new Date()));\n const currentUser = this.props.users.currentUser;\n addReply.asc_putUserId(currentUser.asc_getIdOriginal());\n addReply.asc_putUserName(currentUser.asc_getUserName());\n\n ascComment.asc_addReply(addReply);\n\n const api = Common.EditorApi.get();\n api.asc_changeComment(comment.uid, ascComment);\n }\n }\n }\n onEditReply (comment, reply, textReply) {\n const currentUser = this.props.users.currentUser;\n const indReply = reply.ind;\n const changeComment = {...comment};\n changeComment.replies = [...comment.replies];\n changeComment.replies[indReply] = {...reply};\n changeComment.replies[indReply].reply = textReply;\n changeComment.replies[indReply].userid = currentUser.asc_getIdOriginal();\n changeComment.replies[indReply].username = currentUser.asc_getUserName();\n this.onChangeComment(changeComment);\n }\n render() {\n const storeComments = this.props.storeComments;\n const comment = storeComments.currentComment;\n return (\n \n {storeComments.isOpenEditComment && }\n {storeComments.isOpenAddReply && }\n {storeComments.isOpenEditReply && }\n \n )\n }\n}\n\nclass ViewCommentsController extends Component {\n constructor (props) {\n super(props);\n this.onCommentMenuClick = this.onCommentMenuClick.bind(this);\n this.onResolveComment = this.onResolveComment.bind(this);\n this.closeViewCurComments = this.closeViewCurComments.bind(this);\n\n this.state = {\n isOpenViewCurComments: false\n };\n\n Common.Notifications.on('viewcomment', () => {\n this.setState({isOpenViewCurComments: true});\n });\n Common.Notifications.on('closeviewcomment', () => {\n this.closeViewCurComments();\n });\n }\n closeViewCurComments () {\n if (Device.phone) {\n f7.sheet.close('#view-comment-sheet');\n } else {\n f7.popover.close('#view-comment-popover');\n }\n this.setState({isOpenViewCurComments: false});\n }\n onResolveComment (comment) {\n let reply = null,\n addReply = null,\n ascComment = (typeof Asc.asc_CCommentDataWord !== 'undefined' ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n\n if (ascComment && comment) {\n ascComment.asc_putText(comment.comment);\n ascComment.asc_putQuoteText(comment.quote);\n ascComment.asc_putTime(utcDateToString(new Date(comment.time)));\n ascComment.asc_putOnlyOfficeTime(ooDateToString(new Date(comment.time)));\n ascComment.asc_putUserId(comment.userId);\n ascComment.asc_putUserName(comment.userName);\n ascComment.asc_putSolved(!comment.resolved);\n ascComment.asc_putGuid(comment.guid);\n\n if (!!ascComment.asc_putDocumentFlag) {\n ascComment.asc_putDocumentFlag(comment.unattached);\n }\n\n reply = comment.replies;\n if (reply && reply.length > 0) {\n reply.forEach((reply) => {\n addReply = (typeof Asc.asc_CCommentDataWord !== 'undefined' ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n if (addReply) {\n addReply.asc_putText(reply.reply);\n addReply.asc_putTime(utcDateToString(new Date(reply.time)));\n addReply.asc_putOnlyOfficeTime(ooDateToString(new Date(reply.time)));\n addReply.asc_putUserId(reply.userId);\n addReply.asc_putUserName(reply.userName);\n\n ascComment.asc_addReply(addReply);\n }\n });\n }\n const api = Common.EditorApi.get();\n api.asc_showComments(this.props.storeApplicationSettings.isResolvedComments);\n api.asc_changeComment(comment.uid, ascComment);\n\n if(!this.props.storeApplicationSettings.isResolvedComments) {\n this.closeViewCurComments();\n }\n }\n }\n deleteComment (comment) {\n const api = Common.EditorApi.get();\n comment && api.asc_removeComment(comment.uid);\n }\n deleteReply (comment, reply) {\n let replies = null,\n addReply = null,\n ascComment = (!!Asc.asc_CCommentDataWord ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n\n const indReply = reply.ind;\n\n if (ascComment && comment) {\n ascComment.asc_putText(comment.comment);\n ascComment.asc_putQuoteText(comment.quote);\n ascComment.asc_putTime(utcDateToString(new Date(comment.time)));\n ascComment.asc_putOnlyOfficeTime(ooDateToString(new Date(comment.time)));\n ascComment.asc_putUserId(comment.userId);\n ascComment.asc_putUserName(comment.userName);\n ascComment.asc_putSolved(comment.resolved);\n ascComment.asc_putGuid(comment.guid);\n\n if (!!ascComment.asc_putDocumentFlag) {\n ascComment.asc_putDocumentFlag(comment.unattached);\n }\n\n replies = comment.replies;\n if (replies && replies.length) {\n replies.forEach((reply) => {\n if (reply.ind !== indReply) {\n addReply = (!!Asc.asc_CCommentDataWord ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n if (addReply) {\n addReply.asc_putText(reply.reply);\n addReply.asc_putTime(utcDateToString(new Date(reply.time)));\n addReply.asc_putOnlyOfficeTime(ooDateToString(new Date(reply.time)));\n addReply.asc_putUserId(reply.userId);\n addReply.asc_putUserName(reply.userName);\n\n ascComment.asc_addReply(addReply);\n }\n }\n });\n }\n const api = Common.EditorApi.get();\n api.asc_changeComment(comment.uid, ascComment);\n }\n }\n onCommentMenuClick (action, comment, reply) {\n const { t } = this.props;\n const _t = t(\"Common.Collaboration\", { returnObjects: true });\n switch (action) {\n case 'editComment':\n this.props.storeComments.openEditComment(true, comment);\n break;\n case 'resolve':\n this.onResolveComment(comment);\n break;\n case 'deleteComment':\n f7.dialog.create({\n title: _t.textDeleteComment,\n text: _t.textMessageDeleteComment,\n buttons: [\n {\n text: _t.textCancel\n },\n {\n text: _t.textOk,\n onClick: () => this.deleteComment(comment)\n }\n ]\n }).open();\n break;\n case 'editReply':\n this.props.storeComments.openEditReply(true, comment, reply);\n break;\n case 'deleteReply':\n f7.dialog.create({\n title: _t.textDeleteReply,\n text: _t.textMessageDeleteReply,\n buttons: [\n {\n text: _t.textCancel\n },\n {\n text: _t.textOk,\n onClick: () => this.deleteReply(comment, reply)\n }\n ]\n }).open();\n break;\n case 'addReply':\n this.props.storeComments.openAddReply(true, comment);\n break;\n }\n }\n\n showComment (comment) {\n const api = Common.EditorApi.get();\n\n api.asc_selectComment(comment.uid); \n api.asc_showComment(comment.uid, false);\n }\n\n\n render() {\n return(\n \n {this.props.allComments && }\n {this.state.isOpenViewCurComments && }\n \n )\n }\n}\n\nclass ViewCommentsSheetsController extends ViewCommentsController {\n constructor(props) {\n super(props);\n }\n}\n\nconst _CommentsController = inject('storeAppOptions', 'storeComments', 'users', \"storeApplicationSettings\")(observer(CommentsController));\nconst _AddCommentController = inject('storeAppOptions', 'storeComments', 'users')(observer(AddCommentController));\nconst _EditCommentController = inject('storeComments', 'users')(observer(EditCommentController));\nconst _ViewCommentsController = inject('storeComments', 'users', \"storeApplicationSettings\", \"storeReview\", \"storeAppOptions\")(observer(withTranslation()(ViewCommentsController)));\nconst _ViewCommentsSheetsController = inject('storeComments', 'users', \"storeApplicationSettings\", \"storeWorksheets\", \"storeReview\", \"storeAppOptions\")(observer(withTranslation()(ViewCommentsSheetsController)));\n\nexport {\n _CommentsController as CommentsController,\n _AddCommentController as AddCommentController,\n _EditCommentController as EditCommentController,\n _ViewCommentsController as ViewCommentsController,\n _ViewCommentsSheetsController as ViewCommentsSheetsController\n};","import React from 'react';\nimport { observer, inject } from \"mobx-react\";\nimport { List, ListItem, Navbar, NavRight, Page, Icon, Link } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport { Device } from \"../../utils/device\";\n\nconst CollaborationPage = props => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const appOptions = props.storeAppOptions;\n const isForm = appOptions.isForm;\n const sharingSettingsUrl = appOptions.sharingSettingsUrl;\n const isViewer = appOptions.isViewer;\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {(sharingSettingsUrl && !isForm) &&\n \n \n \n }\n {props.users.editUsers.length > 0 &&\n \n \n \n }\n {appOptions.canViewComments &&\n \n \n \n }\n {(window.editorType === 'de' && (appOptions.canReview || appOptions.canViewReview) && !isViewer) &&\n \n \n \n }\n \n \n )\n};\n\nlet storeInfo;\n\nswitch (window.asceditor) {\n case 'word':\n storeInfo = 'storeDocumentInfo';\n break;\n case 'slide':\n storeInfo = 'storePresentationInfo';\n break;\n case 'cell':\n storeInfo = 'storeSpreadsheetInfo';\n break;\n}\n\nconst Collaboration = inject('storeAppOptions', 'users', storeInfo)(observer(CollaborationPage));\n\nexport { Collaboration as CollaborationPage };","import React, { useEffect, useRef } from 'react';\nimport { Navbar, Page } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport { Device } from '../../utils/device';\n\nconst frameStyle = {\n width: '100%',\n height: '100%',\n minHeight: 380\n}\n\nconst ViewSharingSettings = props => {\n const { t } = useTranslation();\n const sharingSettingsUrl = props.sharingSettingsUrl;\n const _t = t('Common.Collaboration', {returnObjects: true});\n const ref = useRef(null);\n\n useEffect(() => {\n const coauthSheetElem = ref.current.closest('.coauth__sheet');\n\n if(Device.phone) {\n coauthSheetElem.style.height = '100%';\n coauthSheetElem.style.maxHeight = '100%';\n }\n\n return () => {\n if(Device.phone) {\n coauthSheetElem.style.height = null;\n coauthSheetElem.style.maxHeight = '65%';\n }\n }\n }, []);\n\n return (\n \n \n
                \n \n
                \n
                \n )\n};\n\nexport default ViewSharingSettings;","import React, {useEffect} from 'react';\nimport ViewSharingSettings from \"../view/SharingSettings\";\nimport {observer, inject} from \"mobx-react\";\n\nconst SharingSettingsController = props => {\n const appOptions = props.storeAppOptions;\n const canRequestSharingSettings = appOptions.canRequestSharingSettings;\n const sharingSettingsUrl = appOptions.sharingSettingsUrl;\n\n const changeAccessRights = () => {\n if (canRequestSharingSettings) {\n Common.Gateway.requestSharingSettings();\n }\n };\n\n const setSharingSettings = data => {\n if (data) {\n Common.Notifications.trigger('collaboration:sharingupdate', data.sharingSettings);\n }\n }\n\n const onMessage = msg => {\n if(msg) {\n const msgData = JSON.parse(msg.data);\n\n if (msgData && msgData?.Referer == \"onlyoffice\") {\n if (msgData?.needUpdate) {\n setSharingSettings(msgData.sharingSettings);\n }\n props.f7router.back();\n }\n }\n };\n\n const bindWindowEvents = () => {\n if (window.addEventListener) {\n window.addEventListener(\"message\", onMessage, false);\n } else if (window.attachEvent) {\n window.attachEvent(\"onmessage\", onMessage);\n }\n };\n\n const unbindWindowEvents = () => {\n if (window.removeEventListener) {\n window.removeEventListener(\"message\", onMessage);\n } else if (window.detachEvent) {\n window.detachEvent(\"onmessage\", onMessage);\n }\n };\n\n useEffect(() => {\n bindWindowEvents();\n Common.Notifications.on('collaboration:sharing', changeAccessRights);\n\n if (!!sharingSettingsUrl && sharingSettingsUrl.length || canRequestSharingSettings) {\n Common.Gateway.on('showsharingsettings', changeAccessRights);\n Common.Gateway.on('setsharingsettings', setSharingSettings);\n }\n\n return () => {\n unbindWindowEvents();\n }\n }, []);\n\n return (\n \n );\n};\n\nexport default inject('storeAppOptions')(observer(SharingSettingsController));","import React from 'react';\nimport { observer, inject } from \"mobx-react\";\nimport { List, ListItem, Navbar, NavRight, Page, Icon, Link } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport { Device } from \"../../utils/device\";\n\nconst UsersPage = inject(\"users\")(observer(props => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const storeUsers = props.users;\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {storeUsers.editUsers.map((user, i) => (\n 1 ? ` (${user.count})` : '')} key={i}>\n
                \n {user.initials}\n
                \n
                \n ))}\n
                \n
                \n )\n}));\n\nexport default UsersPage;","import React, { useEffect } from 'react';\nimport { Popover, Sheet, f7, View } from 'framework7-react';\nimport { Device } from \"../../../utils/device\";\nimport { ReviewController, ReviewChangeController } from \"../../controller/collaboration/Review\";\nimport { PageDisplayMode } from \"./Review\";\nimport { ViewCommentsController, ViewCommentsSheetsController } from \"../../controller/collaboration/Comments\";\nimport SharingSettingsController from \"../../controller/SharingSettings\";\nimport { CollaborationPage } from '../../pages/CollaborationPage';\nimport UsersPage from '../../pages/UsersPage';\n\nconst routes = [\n {\n path: '/collaboration-page/',\n component: CollaborationPage,\n keepAlive: true\n },\n {\n path: '/users/',\n component: UsersPage\n },\n {\n path: '/review/',\n component: ReviewController\n },\n {\n path: '/cm-review/',\n component: ReviewController,\n options: {\n props: {\n noBack: true\n }\n }\n },\n {\n path: '/display-mode/',\n component: PageDisplayMode\n },\n {\n path: '/review-change/',\n component: ReviewChangeController\n },\n {\n path: '/cm-review-change/',\n component: ReviewChangeController,\n options: {\n props: {\n noBack: true\n }\n }\n },\n {\n path: '/comments/',\n asyncComponent: () => window.editorType == 'sse' ? ViewCommentsSheetsController : ViewCommentsController,\n options: {\n props: {\n allComments: true\n }\n }\n },\n {\n path: '/sharing-settings/',\n component: SharingSettingsController\n }\n];\n\nroutes.forEach(route => {\n route.options = {\n ...route.options,\n transition: 'f7-push'\n };\n});\n\nconst CollaborationView = props => {\n useEffect(() => {\n if(Device.phone) {\n f7.sheet.open('.coauth__sheet');\n } else {\n f7.popover.open('#coauth-popover', '#btn-coauth');\n }\n }, []);\n\n return (\n !Device.phone ?\n props.closeOptions('coauth')} closeByOutsideClick={false}>\n \n \n \n :\n props.closeOptions('coauth')}>\n \n \n \n \n )\n}\n\nexport default CollaborationView;\n","import React from 'react';\n\nconst Preview = () => {\n return (\n
                \n
                \n
                \n )\n};\n\nexport default Preview;","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n };\n }\n return _get.apply(this, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs, isStringProp, emit } from '../shared/utils.js';\nimport { colorClasses, actionsAttrs, actionsClasses, routerAttrs, routerClasses } from '../shared/mixins.js';\nimport { useTooltip } from '../shared/use-tooltip.js';\nimport { useRouteProps } from '../shared/use-route-props.js';\n\n\nconst ListButton = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n title,\n text,\n tabLink,\n tabLinkActive,\n link,\n href,\n target\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const linkElRef = useRef(null);\n const onClick = e => {\n emit(props, 'click', e);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n useTooltip(linkElRef, props);\n useRouteProps(linkElRef, props);\n const linkAttrs = {\n href: typeof link === 'boolean' && typeof href === 'boolean' ? '#' : link || href,\n target,\n 'data-tab': isStringProp(tabLink) && tabLink,\n ...routerAttrs(props),\n ...actionsAttrs(props)\n };\n const linkClasses = classNames({\n 'list-button': true,\n 'tab-link': tabLink || tabLink === '',\n 'tab-link-active': tabLinkActive,\n ...colorClasses(props),\n ...routerClasses(props),\n ...actionsClasses(props)\n });\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n id: id,\n style: style,\n className: className,\n ref: elRef\n }, extraAttrs), /*#__PURE__*/React.createElement(\"a\", _extends({\n className: linkClasses\n }, linkAttrs, {\n onClick: onClick,\n ref: linkElRef\n }), title, text, children));\n});\nListButton.displayName = 'f7-list-button';\nexport default ListButton;","import React, { Component } from 'react';\nimport { Popover, List, ListItem, ListButton, Link, Icon, Actions, ActionsGroup, ActionsButton } from 'framework7-react';\nimport { f7 } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\n\nconst idContextMenuElement = \"idx-context-menu-popover\";\n\nclass ContextMenuView extends Component {\n constructor(props) {\n super(props);\n }\n\n componentDidMount() {\n // f7.popover.open('#idx-context-menu-popover', '#idx-context-menu-target');\n }\n\n render() {\n const buttons = this.props.items || {};\n\n return (\n this.props.onMenuClosed()}\n >\n \n {buttons.length && buttons.map((b, index) =>\n !b.icon ?\n this.props.onMenuItemClick(b.event)} /> :\n this.props.onMenuItemClick(b.event)}>\n \n \n )}\n \n \n )\n }\n}\n\nconst ActionsWithExtraItems = ({items, onMenuItemClick, opened, onActionClosed}) => {\n const { t } = useTranslation();\n const _t = t('ContextMenu', {returnObjects: true});\n return (\n onActionClosed()}>\n \n {items.length > 0 && items.map((item, index)=>{\n return(\n {onMenuItemClick(item.event)}}>{item.caption}\n )\n })}\n \n \n {_t.menuCancel}\n \n \n )\n};\n\nconst exportedIdMenuElemen = `#${idContextMenuElement}`;\nexport {ContextMenuView as default, exportedIdMenuElemen as idContextMenuElement, ActionsWithExtraItems};","import React, { Component, Fragment } from 'react';\nimport { f7 } from 'framework7-react';\nimport {observer, inject} from \"mobx-react\";\nimport { Device } from '../../../../common/mobile/utils/device';\n\nimport ContextMenuView, { idContextMenuElement, ActionsWithExtraItems } from '../view/ContextMenu';\n\nconst idCntextMenuTargetElement = '#idx-context-menu-target';\n\nclass ContextMenuController extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n opened: false,\n items: [],\n openedMore: false,\n extraItems: []\n };\n\n this.fastCoAuthTips = [];\n this.onMenuItemClick = this.onMenuItemClick.bind(this);\n this.onMenuClosed = this.onMenuClosed.bind(this);\n this.onActionClosed = this.onActionClosed.bind(this);\n this.onDocumentReady = this.onDocumentReady.bind(this);\n this.onApiOpenContextMenu = this.onApiOpenContextMenu.bind(this);\n this.onApiHideContextMenu = this.onApiHideContextMenu.bind(this);\n this.onApiShowForeignCursorLabel = this.onApiShowForeignCursorLabel.bind(this);\n this.onApiHideForeignCursorLabel = this.onApiHideForeignCursorLabel.bind(this);\n }\n\n onDocumentReady() {\n this.$targetEl = $$(idCntextMenuTargetElement);\n if ( !this.$targetEl.length ) {\n // this.$targetEl = $$('
                ');\n this.$targetEl = $$(`
                `);\n this.$targetEl.css({left: '-10000px', top: '-10000px'});\n\n $$('#editor_sdk').append(this.$targetEl);\n }\n\n const api = Common.EditorApi.get();\n api.asc_registerCallback('asc_onShowPopMenu', this.onApiOpenContextMenu);\n api.asc_registerCallback('asc_onHidePopMenu', this.onApiHideContextMenu);\n api.asc_registerCallback('asc_onShowForeignCursorLabel', this.onApiShowForeignCursorLabel);\n api.asc_registerCallback('asc_onHideForeignCursorLabel', this.onApiHideForeignCursorLabel);\n }\n\n offsetPopoverTop(popover) {\n var app = popover.app,\n $el = popover.$el,\n $targetEl = popover.$targetEl;\n\n const width = $el.width(),\n height = $el.height();\n\n $el.removeClass('popover-on-left popover-on-right popover-on-top popover-on-bottom popover-on-middle').css({\n left: '',\n top: ''\n });\n\n let targetOffsetLeft, targetOffsetTop;\n // var safeAreaTop = parseInt($('html').css('--f7-safe-area-top'), 10);\n let safeAreaLeft = parseInt($('html').css('--f7-safe-area-left'), 10),\n safeAreaRight = parseInt($('html').css('--f7-safe-area-right'), 10);\n // if (Number.isNaN(safeAreaTop)) safeAreaTop = 0;\n if (Number.isNaN(safeAreaLeft)) safeAreaLeft = 0;\n if (Number.isNaN(safeAreaRight)) safeAreaRight = 0;\n\n if ($targetEl && $targetEl.length > 0) {\n let targetOffset = $targetEl.offset();\n targetOffsetLeft = targetOffset.left - app.left;\n targetOffsetTop = targetOffset.top - app.top;\n let targetParentPage = $targetEl.parents('.page');\n\n if (targetParentPage.length > 0) {\n targetOffsetTop -= targetParentPage[0].scrollTop;\n }\n }\n\n let position = 'top';\n\n let top = targetOffsetTop - height - 10;\n top = Math.max(8, Math.min(top, app.height - height - 8)); // Horizontal Position\n\n let hPosition;\n\n // if (targetOffsetLeft < app.width / 2) {\n // hPosition = 'right';\n // left = position === 'middle' ? targetOffsetLeft + targetWidth : targetOffsetLeft;\n // } else {\n // hPosition = 'left';\n // left = position === 'middle' ? targetOffsetLeft - width : targetOffsetLeft + targetWidth - width;\n // }\n\n hPosition = 'middle';\n let left = targetOffsetLeft - width / 2;\n\n left = Math.max(8, Math.min(left, app.width - width - 8 - safeAreaRight), safeAreaLeft);\n $el.addClass(`popover-on-${position} popover-on-${hPosition}`);\n\n $el.css({top: `${top}px`,\n left: `${left}px`});\n }\n\n onApiOpenContextMenu(x, y) {\n if ( !this.state.opened && $$('.dialog.modal-in, .popover.modal-in, .sheet-modal.modal-in, .popup.modal-in, #pe-preview, .add-comment-popup, .actions-modal.modal-in').length < 1) {\n const subNav = document.querySelector('.subnavbar');\n const rect = subNav.getBoundingClientRect();\n\n this.setState({\n items: this.initMenuItems(),\n extraItems: this.initExtraItems()\n });\n\n if ( this.state.items.length > 0 ) {\n const api = Common.EditorApi.get();\n \n this.$targetEl.css({left: `${x}px`, top: y < rect.bottom ? `${rect.bottom}px` : `${y}px`});\n const popover = f7.popover.open(idContextMenuElement, idCntextMenuTargetElement);\n\n if (Device.android)\n this.offsetPopoverTop(popover);\n\n this.setState(state => {\n return {opened: true}\n });\n\n api.asc_enableKeyEvents(true);\n }\n }\n }\n\n onApiHideContextMenu() {\n if ( this.state.opened ) {\n $$(idContextMenuElement).hide();\n f7.popover.close(idContextMenuElement, false);\n\n this.$targetEl.css({left: '-10000px', top: '-10000px'});\n this.setState({opened: false});\n }\n }\n\n onMenuClosed() {\n this.$targetEl.css({left: '-10000px', top: '-10000px'});\n this.setState({opened: false});\n\n // (async () => {\n // await 1 && this.setState(state => {\n // this.$targetEl.css({left: '-10000px', top: '-10000px'});\n // return ({opened: false});\n // });\n // })();\n }\n\n onActionClosed() {\n this.setState({openedMore: false});\n }\n\n async onMenuItemClick(action) {\n await this.onApiHideContextMenu();\n\n if (action === 'showActionSheet') {\n this.setState({openedMore: true});\n }\n }\n\n onApiShowForeignCursorLabel(UserId, X, Y, color) {\n if (!this.isUserVisible(UserId)) return;\n\n /** coauthoring begin **/\n const tipHeight = 20;\n\n let src;\n for (let i=0; i`);\n src.attr('userid', UserId);\n src.css({'background-color': '#'+Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b())});\n src.text(this.getUserName(UserId));\n this.fastCoAuthTips.push(src);\n //src.fadeIn(150);\n src[0].classList.add('active');\n\n $$(\"#editor_sdk\").append(src);\n }\n\n if ( X + src.outerWidth() > $$(window).width() ) { \n src.css({\n top: (Y - tipHeight) + 'px',\n left: X - src.outerWidth() + 'px'});\n } else {\n src.css({\n left: X + 'px',\n top: (Y - tipHeight) + 'px',\n });\n }\n \n /** coauthoring end **/\n }\n\n onApiHideForeignCursorLabel(userId) {\n /** coauthoring begin **/\n for (let i=0; i {src.remove()});\n src[0].classList.remove('active');\n src.remove();\n this.fastCoAuthTips.splice(i, 1);\n break;\n }\n }\n /** coauthoring end **/\n }\n\n componentWillUnmount() {\n Common.Notifications.off('document:ready', this.onDocumentReady);\n\n const api = Common.EditorApi.get();\n if ( api ) {\n api.asc_unregisterCallback('asc_onShowPopMenu', this.onApiOpenContextMenu);\n api.asc_unregisterCallback('asc_onHidePopMenu', this.onApiHideContextMenu);\n api.asc_unregisterCallback('asc_onShowForeignCursorLabel', this.onApiShowForeignCursorLabel);\n api.asc_unregisterCallback('asc_onHideForeignCursorLabel', this.onApiHideForeignCursorLabel);\n }\n }\n\n componentDidMount() {\n if ( !Common.EditorApi ) {\n Common.Notifications.on({\n 'document:ready': this.onDocumentReady\n });\n } else {\n this.onDocumentReady();\n }\n }\n\n initMenuItems() {\n return [];\n }\n\n initExtraItems () {\n return [];\n }\n\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport default ContextMenuController;","\nconst EditorUIController = () => null;\n\nEditorUIController.isSupportEditFeature = () => false;\n\nexport default EditorUIController;\n","import React, { useContext } from 'react';\nimport { f7 } from 'framework7-react';\nimport { inject, observer } from \"mobx-react\";\nimport { withTranslation} from 'react-i18next';\nimport { LocalStorage } from '../../../../common/mobile/utils/LocalStorage.mjs';\n\nimport ContextMenuController from '../../../../common/mobile/lib/controller/ContextMenu';\nimport { idContextMenuElement } from '../../../../common/mobile/lib/view/ContextMenu';\n// import { Device } from '../../../../common/mobile/utils/device';\nimport EditorUIController from '../lib/patch';\n\n@inject(stores => ({\n isEdit: stores.storeAppOptions.isEdit,\n canComments: stores.storeAppOptions.canComments,\n canViewComments: stores.storeAppOptions.canViewComments,\n canCoAuthoring: stores.storeAppOptions.canCoAuthoring,\n users: stores.users,\n isDisconnected: stores.users.isDisconnected,\n objects: stores.storeFocusObjects.settings,\n isVersionHistoryMode: stores.storeVersionHistory.isVersionHistoryMode\n}))\nclass ContextMenu extends ContextMenuController {\n constructor(props) {\n super(props);\n\n // console.log('context menu controller created');\n this.onApiShowComment = this.onApiShowComment.bind(this);\n this.onApiHideComment = this.onApiHideComment.bind(this);\n this.getUserName = this.getUserName.bind(this);\n this.isUserVisible = this.isUserVisible.bind(this);\n this.checkShapeSelection = this.checkShapeSelection.bind(this);\n }\n\n static closeContextMenu() {\n f7.popover.close(idContextMenuElement, false);\n }\n\n getUserName(id) {\n const user = this.props.users.searchUserByCurrentId(id);\n return AscCommon.UserInfoParser.getParsedName(user.asc_getUserName());\n }\n\n isUserVisible(id) {\n const user = this.props.users.searchUserByCurrentId(id);\n return user ? (user.asc_getIdOriginal()===this.props.users.currentUser.asc_getIdOriginal() || AscCommon.UserInfoParser.isUserVisible(user.asc_getUserName())) : true;\n }\n\n componentWillUnmount() {\n super.componentWillUnmount();\n\n const api = Common.EditorApi.get();\n if ( api ) {\n api.asc_unregisterCallback('asc_onShowComment', this.onApiShowComment);\n api.asc_unregisterCallback('asc_onHideComment', this.onApiHideComment);\n api.asc_unregisterCallback('asc_onShowPopMenu', this.checkShapeSelection);\n }\n }\n\n\n onApiShowComment(comments) {\n this.isComments = comments && comments.length > 0;\n }\n\n onApiHideComment() {\n this.isComments = false;\n }\n\n // onMenuClosed() {\n // super.onMenuClosed();\n // }\n\n onMenuItemClick(action) {\n super.onMenuItemClick(action);\n\n if ( EditorUIController.ContextMenu && EditorUIController.ContextMenu.handleMenuItemClick(this, action) )\n return;\n\n const api = Common.EditorApi.get();\n switch (action) {\n case 'cut':\n if ( !LocalStorage.getBool(\"pe-hide-copy-cut-paste-warning\")) {\n this.showCopyCutPasteModal();\n }\n break;\n case 'copy':\n if (!api.Copy() && !LocalStorage.getBool(\"pe-hide-copy-cut-paste-warning\")) {\n this.showCopyCutPasteModal();\n }\n break;\n case 'paste':\n if ( !LocalStorage.getBool(\"pe-hide-copy-cut-paste-warning\")) {\n this.showCopyCutPasteModal();\n }\n break;\n case 'viewcomment':\n Common.Notifications.trigger('viewcomment');\n break;\n case 'openlink':\n const stack = Common.EditorApi.get().getSelectedElements();\n let value;\n stack.forEach((item) => {\n if (item.get_ObjectType() == Asc.c_oAscTypeSelectElement.Hyperlink) {\n value = item.get_ObjectValue().get_Value();\n }\n });\n value && this.openLink(value);\n break;\n }\n }\n\n checkShapeSelection() {\n const objects = this.props.objects;\n const contextMenuElem = document.querySelector('#idx-context-menu-popover');\n\n if(objects?.indexOf('shape') > -1) {\n contextMenuElem.style.top = `${+(contextMenuElem.style.top.replace(/px$/, '')) - 40}px`;\n }\n }\n\n showCopyCutPasteModal() {\n const { t } = this.props;\n const _t = t(\"ContextMenu\", { returnObjects: true });\n f7.dialog.create({\n title: _t.textCopyCutPasteActions,\n text: _t.errorCopyCutPaste,\n content: `
                \n \n ${_t.textDoNotShowAgain}\n
                `,\n buttons: [{\n text: 'OK',\n onClick: () => {\n const dontShow = $$('input[name=\"checkbox-show\"]').prop('checked');\n if (dontShow) LocalStorage.setItem(\"pe-hide-copy-cut-paste-warning\", 1);\n }\n }]\n }).open();\n }\n\n showSplitModal() {\n const { t } = this.props;\n const _t = t(\"ContextMenu\", { returnObjects: true });\n let picker;\n const dialog = f7.dialog.create({\n title: _t.menuSplit,\n text: '',\n content: `
                \n
                \n
                ${_t.textColumns}
                \n
                ${_t.textRows}
                \n
                \n
                \n
                `,\n buttons: [\n {\n text: _t.menuCancel\n },\n {\n text: 'OK',\n bold: true,\n onClick: function () {\n const size = picker.value;\n Common.EditorApi.get().SplitCell(parseInt(size[0]), parseInt(size[1]));\n }\n }\n ],\n on: {\n open: () => {\n picker = f7.picker.create({\n containerEl: document.getElementById('picker-split-size'),\n cols: [\n {\n textAlign: 'center',\n width: '100%',\n values: [1,2,3,4,5,6,7,8,9,10]\n },\n {\n textAlign: 'center',\n width: '100%',\n values: [1,2,3,4,5,6,7,8,9,10]\n }\n ],\n toolbar: false,\n rotateEffect: true,\n value: [3, 3]\n });\n }\n }\n }).open();\n }\n\n openLink(url) {\n if (url) {\n const api = Common.EditorApi.get();\n if (url.indexOf(\"ppaction://hlink\")>=0) { // internal link\n api.asc_GoToInternalHyperlink(url);\n } else {\n const type = api.asc_getUrlType(url);\n if (type===AscCommon.c_oAscUrlType.Http || type===AscCommon.c_oAscUrlType.Email) {\n const newDocumentPage = window.open(url, '_blank');\n if (newDocumentPage) {\n newDocumentPage.focus();\n }\n } else {\n const { t } = this.props;\n const _t = t(\"ContextMenu\", { returnObjects: true });\n f7.dialog.create({\n title: t('View.Settings', {returnObjects: true}).notcriticalErrorTitle,\n text : _t.txtWarnUrl,\n buttons: [{\n text: t('View.Settings', {returnObjects: true}).textOk,\n bold: true,\n onClick: () => {\n const newDocumentPage = window.open(url, '_blank');\n if (newDocumentPage) {\n newDocumentPage.focus();\n }\n }\n },\n { text: _t.menuCancel }]\n }).open();\n }\n }\n }\n }\n\n onDocumentReady() {\n super.onDocumentReady();\n\n const api = Common.EditorApi.get();\n api.asc_registerCallback('asc_onShowComment', this.onApiShowComment);\n api.asc_registerCallback('asc_onHideComment', this.onApiHideComment);\n api.asc_registerCallback('asc_onShowPopMenu', this.checkShapeSelection);\n }\n\n initMenuItems() {\n if ( !Common.EditorApi ) return [];\n\n const { isEdit, isDisconnected, isVersionHistoryMode } = this.props;\n\n if (isEdit && EditorUIController.ContextMenu) {\n return EditorUIController.ContextMenu.mapMenuItems(this);\n } else {\n const { t } = this.props;\n const _t = t(\"ContextMenu\", { returnObjects: true });\n\n const { canViewComments, canCoAuthoring, canComments } = this.props;\n\n const api = Common.EditorApi.get();\n const stack = api.getSelectedElements();\n const canCopy = api.can_CopyCut();\n\n let itemsIcon = [],\n itemsText = [];\n\n let isText = false,\n isTable = false,\n isImage = false,\n isChart = false,\n isShape = false,\n isLink = false,\n isSlide = false,\n isObject,\n locked = false;\n\n stack.forEach(item => {\n const objectType = item.get_ObjectType(),\n objectValue = item.get_ObjectValue();\n locked = typeof objectValue.get_Locked === 'function' ? objectValue.get_Locked() : false;\n\n if (objectType == Asc.c_oAscTypeSelectElement.Paragraph) {\n isText = true;\n } else if (objectType == Asc.c_oAscTypeSelectElement.Image) {\n isImage = true;\n } else if (objectType == Asc.c_oAscTypeSelectElement.Chart) {\n isChart = true;\n } else if (objectType == Asc.c_oAscTypeSelectElement.Shape) {\n isShape = true;\n } else if (objectType == Asc.c_oAscTypeSelectElement.Table) {\n isTable = true;\n } else if (objectType == Asc.c_oAscTypeSelectElement.Hyperlink) {\n isLink = true;\n } else if (objectType == Asc.c_oAscTypeSelectElement.Slide) {\n isSlide = true;\n }\n });\n\n isObject = isText || isImage || isChart || isShape || isTable;\n\n if (canCopy && isObject) {\n itemsIcon.push({\n event: 'copy',\n icon: 'icon-copy'\n });\n }\n if(!isDisconnected && !isVersionHistoryMode) {\n if (canViewComments && this.isComments) {\n itemsText.push({\n caption: _t.menuViewComment,\n event: 'viewcomment'\n });\n }\n \n if (!isChart && api.can_AddQuotedComment() !== false && canCoAuthoring && canComments && !locked) {\n itemsText.push({\n caption: _t.menuAddComment,\n event: 'addcomment'\n });\n }\n }\n\n if (isLink) {\n itemsText.push({\n caption: _t.menuOpenLink,\n event: 'openlink'\n });\n }\n\n return itemsIcon.concat(itemsText);\n }\n }\n\n initExtraItems () {\n return (this.extraItems && this.extraItems.length > 0 ? this.extraItems : []);\n }\n}\n\nconst _ContextMenu = withTranslation()(ContextMenu);\n_ContextMenu.closeContextMenu = ContextMenu.closeContextMenu;\nexport { _ContextMenu as default };","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Preview from \"../view/Preview\";\nimport ContextMenu from './ContextMenu';\n\nconst PreviewController = props => {\n const { t } = useTranslation();\n const _t = t('View.Edit', {returnObjects: true})\n let _view, _touches, _touchStart, _touchEnd;\n\n useEffect(() => {\n const onDocumentReady = () => {\n const api = Common.EditorApi.get();\n\n api.asc_registerCallback('asc_onEndDemonstration', onEndDemonstration);\n api.DemonstrationEndShowMessage(_t.textFinalMessage);\n };\n\n ContextMenu.closeContextMenu();\n\n _view = $$('#pe-preview');\n _view.on('touchstart', onTouchStart);\n _view.on('touchmove', onTouchMove);\n _view.on('touchend', onTouchEnd);\n\n show();\n onDocumentReady();\n\n return () => {\n const api = Common.EditorApi.get();\n\n api.asc_unregisterCallback('asc_onEndDemonstration', onEndDemonstration);\n \n _view.off('touchstart', onTouchStart);\n _view.off('touchmove', onTouchMove);\n _view.off('touchend', onTouchEnd);\n };\n }, []);\n\n const enterFullScreen = element => {\n if(element) {\n if(element.requestFullscreen) {\n element.requestFullscreen();\n } else if(element.webkitRequestFullscreen) {\n element.webkitRequestFullscreen();\n } else if(element.mozRequestFullScreen) {\n element.mozRequestFullScreen();\n } else if(element.msRequestFullscreen) {\n element.msRequestFullscreen();\n } else {\n console.error('Full screen API is not supported in this browser.');\n }\n }\n }\n\n const exitFullScreen = () => {\n if(document.cancelFullScreen) {\n document.cancelFullScreen();\n } else if(document.webkitCancelFullScreen) {\n document.webkitCancelFullScreen();\n } else if(document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if(document.msExitFullscreen) {\n document.msExitFullscreen();\n } else {\n console.error('Full screen exit API is not supported in this browser.');\n }\n };\n\n const show = () => {\n const api = Common.EditorApi.get();\n\n api.StartDemonstration('presentation-preview', api.getCurrentPage());\n enterFullScreen(_view[0]);\n };\n\n const onTouchStart = e => {\n e.preventDefault();\n\n _touches = [];\n\n for (let i = 0; i < e.touches.length; i++) {\n _touches.push([e.touches[i].pageX, e.touches[i].pageY]);\n }\n _touchEnd = _touchStart = [e.touches[0].pageX, e.touches[0].pageY];\n };\n\n const onTouchMove = e => {\n e.preventDefault();\n\n const api = Common.EditorApi.get();\n\n _touchEnd = [e.touches[0].pageX, e.touches[0].pageY];\n\n if (e.touches.length < 2 ) return;\n\n for (let i = 0; i < e.touches.length; i++) {\n if (Math.abs(e.touches[i].pageX - _touches[i][0]) > 20 || Math.abs(e.touches[i].pageY - _touches[i][1]) > 20 ) {\n api.EndDemonstration();\n break;\n }\n }\n };\n\n const onTouchEnd = e => {\n e.preventDefault();\n\n const api = Common.EditorApi.get();\n\n if (_touchEnd[0] - _touchStart[0] > 20)\n api.DemonstrationPrevSlide();\n else if (_touchStart[0] - _touchEnd[0] > 20 || (Math.abs(_touchEnd[0] - _touchStart[0]) < 1 && Math.abs(_touchEnd[1] - _touchStart[1]) < 1))\n api.DemonstrationNextSlide();\n };\n\n // API Handlers\n\n const onEndDemonstration = () => {\n props.closeOptions('preview');\n exitFullScreen();\n };\n\n return (\n \n )\n};\n\nexport {PreviewController as Preview};\n\n\n\n","\nimport React, { Component } from 'react';\nimport { Popover, Popup, View, f7 } from 'framework7-react';\nimport { Device } from '../../../../common/mobile/utils/device';\nimport { observable, runInAction } from \"mobx\";\nimport { observer } from \"mobx-react\";\n\nconst searchOptions = observable({\n usereplace: false,\n isReplaceAll: false\n});\n\nconst popoverStyle = {\n height: '300px'\n};\n\nconst SEARCH_BACKWARD = 'back';\nconst SEARCH_FORWARD = 'next';\n\nclass SearchSettingsView extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n useReplace: false,\n // caseSensitive: false,\n // markResults: false\n searchIn: 0,\n searchBy: 1,\n lookIn: 1,\n isMatchCase: false,\n isMatchCell: false,\n isReplaceAll: false\n };\n }\n\n onFindReplaceClick(action) {\n runInAction(() => {\n searchOptions.usereplace = action == 'replace';\n searchOptions.isReplaceAll = action == 'replace-all';\n });\n\n this.setState({\n useReplace: searchOptions.usereplace,\n isReplaceAll: searchOptions.isReplaceAll\n });\n\n if (this.onReplaceChecked) {}\n }\n\n extraSearchOptions() {}\n\n render() {\n const show_popover = !Device.phone;\n const extra = this.extraSearchOptions();\n const content =\n \n {extra}\n ;\n return (\n show_popover ?\n {content} :\n {content}\n )\n }\n}\n\n// @observer\nclass SearchView extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n searchQuery: '',\n replaceQuery: ''\n };\n\n this.refSearchbarInput = React.createRef();\n this.onSettingsClick = this.onSettingsClick.bind(this);\n this.onSearchClick = this.onSearchClick.bind(this);\n this.onReplaceClick = this.onReplaceClick.bind(this);\n }\n\n componentDidMount() {\n this.$replace = $$('#idx-replace-val');\n const $editor = $$('#editor_sdk');\n\n this.onEditorTouchStart = this.onEditorTouchStart.bind(this);\n this.onEditorTouchEnd = this.onEditorTouchEnd.bind(this);\n\n $editor.on('pointerdown', this.onEditorTouchStart);\n $editor.on('pointerup', this.onEditorTouchEnd);\n\n if(!this.searchbar) {\n this.searchbar = f7.searchbar.create({\n el: '.searchbar',\n customSearch: true,\n expandable: true,\n backdrop: false,\n on: {\n search: (sb, query, previousQuery) => {\n const api = Common.EditorApi.get();\n\n if(!query) {\n api.asc_selectSearchingResults(false);\n }\n },\n searchbarEnable: (sb) => {\n this.refSearchbarInput.focus();\n\n if(this.state.searchQuery.length > 0) {\n const searchInput = document.querySelector('.searchbar-input');\n searchInput.classList.add('input-with-value');\n }\n\n if (this.searchbar && this.searchbar.enabled && !this.props.isViewer) {\n searchOptions.usereplace || searchOptions.isReplaceAll ? this.searchbar.el.classList.add('replace') : this.searchbar.el.classList.remove('replace');\n } else {\n this.searchbar.el.classList.remove('replace');\n }\n }\n }\n });\n }\n }\n\n componentWillUnmount() {\n $$('#editor_sdk')\n .off('pointerdown', this.onEditorTouchStart)\n .off('pointerup', this.onEditorTouchEnd);\n \n if(this.searchTimer) {\n clearInterval(this.searchTimer);\n }\n }\n\n onSettingsClick(e) {\n if ( Device.phone ) {\n f7.popup.open('.search-settings-popup');\n } else f7.popover.open('#idx-search-settings', '#idx-btn-search-settings');\n }\n\n searchParams() {\n let params = {\n find: this.state.searchQuery\n };\n\n if (searchOptions.usereplace || searchOptions.isReplaceAll) {\n params.replace = this.$replace.val();\n } \n\n return params;\n }\n\n onSearchClick(action) {\n if (this.searchbar && this.state.searchQuery) {\n if (this.props.onSearchQuery) {\n let params = this.searchParams();\n\n params.find = this.state.searchQuery;\n params.forward = action != SEARCH_BACKWARD;\n\n this.props.onSearchQuery(params);\n }\n }\n }\n\n onReplaceClick() {\n if (this.searchbar) {\n if (this.props.onReplaceQuery) {\n let params = this.searchParams();\n params.find = this.state.searchQuery;\n\n this.props.onReplaceQuery(params);\n } \n }\n }\n\n onReplaceAllClick() {\n if (this.searchbar) {\n if (this.props.onReplaceAllQuery) {\n let params = this.searchParams();\n params.find = this.state.searchQuery;\n\n this.props.onReplaceAllQuery(params);\n } \n }\n }\n\n onEditorTouchStart(e) {\n this.startPoint = this.pointerPosition(e);\n }\n\n onEditorTouchEnd(e) {\n const endPoint = this.pointerPosition(e);\n\n if (this.searchbar.enabled) {\n let distance;\n\n if(this.startPoint) {\n distance = (this.startPoint.x === undefined || this.startPoint.y === undefined) ? 0 :\n Math.sqrt((endPoint.x -= this.startPoint.x) * endPoint.x + (endPoint.y -= this.startPoint.y) * endPoint.y);\n } else {\n distance = 0;\n }\n\n if (distance < 1) {\n this.searchbar.disable();\n }\n }\n }\n\n pointerPosition(e) {\n let out = {x:0, y:0};\n if ( e.type == 'pointerdown' || e.type == 'pointerup' || e.type == 'mousedown' || e.type == 'mouseup') {\n out.x = e.pageX;\n out.y = e.pageY;\n }\n return out;\n }\n\n changeSearchQuery(value) {\n this.setState({\n searchQuery: value\n });\n\n this.props.onchangeSearchQuery(value);\n }\n\n changeReplaceQuery(value) {\n this.setState({\n replaceQuery: value\n });\n }\n \n onSearchKeyDown(e) {\n if(e.keyCode === 13) {\n if (this.props.onSearchQuery(this.searchParams(), true) && this.searchTimer) {\n clearInterval(this.searchTimer);\n this.searchTimer = undefined;\n }\n }\n }\n\n onSearchInput(e) {\n const text = e.target.value;\n const api = Common.EditorApi.get();\n\n if (text && this.state.searchQuery !== text) {\n this.setState(prevState => ({\n ...prevState,\n searchQuery: text\n }));\n\n this.lastInputChange = new Date();\n\n if (this.searchTimer === undefined) {\n this.searchTimer = setInterval(() => {\n if (new Date() - this.lastInputChange < 400) return;\n\n if (!(this.state.searchQuery === '' || this.props.onSearchQuery(this.searchParams(), true))) {\n this.props.onSearchQuery(this.searchParams(), true);\n clearInterval(this.searchTimer);\n this.searchTimer = undefined;\n }\n }, 10);\n }\n } else {\n this.props.setNumberSearchResults(null);\n }\n }\n\n render() {\n const usereplace = searchOptions.usereplace;\n const isReplaceAll = searchOptions.isReplaceAll;\n const hidden = {display: \"none\"};\n const searchQuery = this.state.searchQuery;\n const replaceQuery = this.state.replaceQuery;\n const isIos = Device.ios;\n const { _t } = this.props;\n const numberSearchResults = this.props.numberSearchResults;\n const isViewer = this.props.isViewer ?? false;\n\n\n if (this.searchbar && this.searchbar.enabled && !isViewer) {\n searchOptions.usereplace || searchOptions.isReplaceAll ? this.searchbar.el.classList.add('replace') : this.searchbar.el.classList.remove('replace');\n }\n\n return (\n
                \n {isIos ?
                : null}\n
                \n
                \n \n \n \n
                \n
                \n
                \n 0 ? 'input-with-value' : ''}`} value={searchQuery} placeholder={_t.textSearch} type=\"search\" maxLength=\"255\"\n onKeyDown={e => this.onSearchKeyDown(e)}\n onInput={e => this.onSearchInput(e)}\n onChange={e => {this.changeSearchQuery(e.target.value)}} ref={el => this.refSearchbarInput = el} />\n {isIos ? : null}\n this.changeSearchQuery('')} />\n {numberSearchResults !== null ? \n {numberSearchResults} \n : null}\n
                \n
                \n {this.changeReplaceQuery(e.target.value)}} />\n {isIos ? : null}\n this.changeReplaceQuery('')} />\n
                \n
                \n \n
                \n \n )\n } \n}\n\nconst SearchViewWithObserver = observer(SearchView);\nconst SearchSettingsViewWithObserver = observer(SearchSettingsView);\n\nexport {SearchViewWithObserver as SearchView, SearchSettingsViewWithObserver as SearchSettingsView};\n","import React, { useState } from 'react';\r\nimport { List, ListItem, Toggle, Page, Navbar, NavRight, Link } from 'framework7-react';\r\nimport { SearchView, SearchSettingsView } from '../../../../common/mobile/lib/controller/Search';\r\nimport { f7 } from 'framework7-react';\r\nimport { withTranslation } from 'react-i18next';\r\nimport { Device } from '../../../../common/mobile/utils/device';\r\nimport { observer, inject } from \"mobx-react\";\r\n\r\nclass SearchSettings extends SearchSettingsView {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n extraSearchOptions() {\r\n const anc_markup = super.extraSearchOptions();\r\n const show_popover = !Device.phone;\r\n const { t } = this.props;\r\n const _t = t(\"View.Settings\", {returnObjects: true});\r\n const storeAppOptions = this.props.storeAppOptions;\r\n const storeVersionHistory = this.props.storeVersionHistory;\r\n const isVersionHistoryMode = storeVersionHistory.isVersionHistoryMode;\r\n const isEdit = storeAppOptions.isEdit;\r\n\r\n const markup = (\r\n \r\n \r\n {!show_popover &&\r\n \r\n {_t.textDone}\r\n \r\n }\r\n \r\n \r\n this.onFindReplaceClick('find')} />\r\n {isEdit && !isVersionHistoryMode ? [\r\n this.onFindReplaceClick('replace')} />, \r\n this.onFindReplaceClick('replace-all')}>]\r\n : null}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n return {...anc_markup, ...markup};\r\n }\r\n}\r\n\r\nclass PESearchView extends SearchView {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n searchParams() {\r\n let params = super.searchParams();\r\n\r\n const checkboxCaseSensitive = f7.toggle.get('.toggle-case-sensitive');\r\n const searchOptions = {\r\n caseSensitive: checkboxCaseSensitive.checked,\r\n };\r\n\r\n return {...params, ...searchOptions};\r\n }\r\n\r\n // onSearchbarShow(isshowed, bar) {\r\n // super.onSearchbarShow(isshowed, bar);\r\n // }\r\n}\r\n\r\nconst Search = withTranslation()(props => {\r\n const { t } = props;\r\n const _t = t('View.Settings', {returnObjects: true});\r\n const [numberSearchResults, setNumberSearchResults] = useState(null);\r\n\r\n const onSearchQuery = (params, isSearchByTyping) => {\r\n const api = Common.EditorApi.get();\r\n\r\n f7.popover.close('.document-menu.modal-in', false);\r\n\r\n const options = new AscCommon.CSearchSettings();\r\n\r\n options.put_Text(params.find);\r\n options.put_MatchCase(params.caseSensitive);\r\n\r\n api.asc_findText(options, params.forward, function(resultCount) {\r\n if(!resultCount) {\r\n setNumberSearchResults(0);\r\n\r\n if(!isSearchByTyping) {\r\n f7.dialog.alert(null, t('View.Settings.textNoMatches'));\r\n }\r\n } else {\r\n setNumberSearchResults(resultCount);\r\n }\r\n });\r\n };\r\n\r\n const onchangeSearchQuery = params => {\r\n const api = Common.EditorApi.get();\r\n \r\n if(params.length === 0) api.asc_selectSearchingResults(false);\r\n }\r\n\r\n const onReplaceQuery = params => {\r\n if (!params.find) return;\r\n\r\n const api = Common.EditorApi.get();\r\n const options = new AscCommon.CSearchSettings();\r\n\r\n options.put_Text(params.find);\r\n options.put_MatchCase(params.caseSensitive);\r\n\r\n api.asc_replaceText(options, params.replace || '', false);\r\n setNumberSearchResults(numberSearchResults > 0 ? numberSearchResults - 1 : 0);\r\n }\r\n\r\n const onReplaceAllQuery = params => {\r\n if (!params.find) return;\r\n\r\n const api = Common.EditorApi.get();\r\n const options = new AscCommon.CSearchSettings();\r\n\r\n options.put_Text(params.find);\r\n options.put_MatchCase(params.caseSensitive);\r\n\r\n api.asc_replaceText(options, params.replace || '', true);\r\n setNumberSearchResults(0);\r\n }\r\n\r\n return ( \r\n \r\n )\r\n});\r\n\r\nconst SearchSettingsWithTranslation = inject(\"storeAppOptions\", \"storeVersionHistory\")(observer(withTranslation()(SearchSettings)));\r\n\r\nexport {Search, SearchSettingsWithTranslation as SearchSettings}\r\n","import React, {Fragment} from 'react';\nimport {NavLeft, NavRight, Link} from 'framework7-react';\nimport { Device } from '../../../../common/mobile/utils/device';\nimport EditorUIController from '../lib/patch'\nimport { useTranslation } from 'react-i18next';\n\nconst ToolbarView = props => {\n const { t } = useTranslation();\n const isDisconnected = props.isDisconnected;\n const docTitle = props.docTitle;\n const isVersionHistoryMode = props.isVersionHistoryMode;\n const isOpenModal = props.isOpenModal;\n\n return (\n \n \n {(props.isShowBack && !isVersionHistoryMode) && Common.Notifications.trigger('goback')}>}\n {isVersionHistoryMode ? {\n e.preventDefault();\n props.closeHistory();\n }}>{t(\"Toolbar.textCloseHistory\")} : null}\n {(Device.ios && props.isEdit && !isVersionHistoryMode) && EditorUIController.getUndoRedo && EditorUIController.getUndoRedo({\n disabledUndo: !props.isCanUndo || isDisconnected,\n disabledRedo: !props.isCanRedo || isDisconnected,\n onUndoClick: props.onUndo,\n onRedoClick: props.onRedo\n })}\n \n {(!Device.phone && !isVersionHistoryMode) && \n
                props.changeTitleHandler()} style={{width: '71%'}}>\n {docTitle}\n
                \n }\n \n {(Device.android && props.isEdit && EditorUIController.getUndoRedo && !isVersionHistoryMode) && EditorUIController.getUndoRedo({\n disabledUndo: !props.isCanUndo || isDisconnected,\n disabledRedo: !props.isCanRedo || isDisconnected,\n onUndoClick: props.onUndo,\n onRedoClick: props.onRedo\n })}\n {!isVersionHistoryMode &&\n {props.openOptions('preview')}}>\n }\n {(props.showEditDocument && !isVersionHistoryMode) &&\n \n }\n {(props.isEdit && EditorUIController.getToolbarOptions && !isVersionHistoryMode) && EditorUIController.getToolbarOptions({\n disabledEdit: props.disabledEdit || props.disabledControls || isDisconnected || props.disabledPreview || isOpenModal,\n disabledAdd: props.disabledControls || isDisconnected || isOpenModal,\n onEditClick: () => props.openOptions('edit'),\n onAddClick: () => props.openOptions('add')\n })}\n {Device.phone ? null : }\n {props.displayCollaboration && window.matchMedia(\"(min-width: 375px)\").matches && !isVersionHistoryMode ? props.openOptions('coauth')}> : null}\n {isVersionHistoryMode ? props.openOptions('history')}> : null}\n props.openOptions('settings')}>\n \n
                \n )\n};\n\nexport default ToolbarView;","import React, { useEffect, useState } from 'react';\nimport { inject, observer } from 'mobx-react';\nimport { f7 } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport ToolbarView from \"../view/Toolbar\";\nimport { Device } from '../../../../common/mobile/utils/device';\n\nconst ToolbarController = inject('storeAppOptions', 'users', 'storeFocusObjects', 'storeToolbarSettings', 'storePresentationInfo', 'storeVersionHistory')(observer(props => {\n const {t} = useTranslation();\n const _t = t(\"Toolbar\", { returnObjects: true });\n const storeVersionHistory = props.storeVersionHistory;\n const isVersionHistoryMode = storeVersionHistory.isVersionHistoryMode;\n const appOptions = props.storeAppOptions;\n const isDisconnected = props.users.isDisconnected;\n const displayCollaboration = props.users.hasEditUsers || appOptions.canViewComments;\n\n const showEditDocument = !appOptions.isEdit && appOptions.canEdit && appOptions.canRequestEditRights;\n\n const isEditLocked = props.storeFocusObjects.isEditLocked;\n\n const storeToolbarSettings = props.storeToolbarSettings;\n const isCanUndo = storeToolbarSettings.isCanUndo;\n const isCanRedo = storeToolbarSettings.isCanRedo;\n const disabledPreview = storeToolbarSettings.countPages <= 0;\n const disabledControls = storeToolbarSettings.disabledControls;\n const disabledEditControls = storeToolbarSettings.disabledEditControls;\n const disabledSettings = storeToolbarSettings.disabledSettings;\n\n const storePresentationInfo = props.storePresentationInfo;\n const docTitle = storePresentationInfo.dataDoc?.title ?? '';\n const docExt = storePresentationInfo.dataDoc?.fileType ?? '';\n\n useEffect(() => {\n Common.Gateway.on('init', loadConfig);\n Common.Notifications.on('toolbar:activatecontrols', activateControls);\n Common.Notifications.on('toolbar:deactivateeditcontrols', deactivateEditControls);\n Common.Notifications.on('goback', goBack);\n Common.Notifications.on('close', onRequestClose);\n\n if (isDisconnected) {\n f7.popover.close();\n f7.sheet.close();\n f7.popup.close();\n }\n\n return () => {\n Common.Notifications.off('toolbar:activatecontrols', activateControls);\n Common.Notifications.off('toolbar:deactivateeditcontrols', deactivateEditControls);\n Common.Notifications.off('goback', goBack);\n Common.Notifications.off('close', onRequestClose);\n }\n });\n\n // Back button\n const [isShowBack, setShowBack] = useState(appOptions.canBackToFolder);\n const loadConfig = (data) => {\n if (data && data.config && data.config.canBackToFolder !== false &&\n data.config.customization && data.config.customization.goback) {\n const canback = data.config.customization.close === undefined ?\n data.config.customization.goback.url || data.config.customization.goback.requestClose && data.config.canRequestClose :\n data.config.customization.goback.url && !data.config.customization.goback.requestClose;\n canback && setShowBack(true);\n }\n };\n\n const onRequestClose = () => {\n const api = Common.EditorApi.get();\n\n if (api.isDocumentModified()) {\n api.asc_stopSaving();\n\n f7.dialog.create({\n title : _t.dlgLeaveTitleText,\n text : _t.dlgLeaveMsgText,\n verticalButtons: true,\n buttons : [\n {\n text: _t.leaveButtonText,\n onClick: () => {\n api.asc_undoAllChanges();\n api.asc_continueSaving();\n Common.Gateway.requestClose();\n }\n },\n {\n text: _t.stayButtonText,\n bold: true,\n onClick: () => {\n api.asc_continueSaving();\n }\n }\n ]\n }).open();\n } else {\n Common.Gateway.requestClose();\n }\n };\n\n const goBack = (current) => {\n if (appOptions.customization.goback.requestClose && appOptions.canRequestClose) {\n onRequestClose();\n } else {\n const href = appOptions.customization.goback.url;\n\n if (!current && appOptions.customization.goback.blank !== false) {\n window.open(href, \"_blank\");\n } else {\n parent.location.href = href;\n }\n }\n }\n\n const onUndo = () => {\n const api = Common.EditorApi.get();\n if (api) {\n api.Undo();\n }\n };\n\n const onRedo = () => {\n const api = Common.EditorApi.get();\n if (api) {\n api.Redo();\n }\n }\n\n const deactivateEditControls = (enableDownload) => {\n storeToolbarSettings.setDisabledEditControls(true);\n if (enableDownload) {\n //DE.getController('Settings').setMode({isDisconnected: true, enableDownload: enableDownload});\n } else {\n storeToolbarSettings.setDisabledSettings(true);\n }\n };\n\n const activateControls = () => {\n storeToolbarSettings.setDisabledControls(false);\n };\n\n const onEditDocument = () => {\n Common.Gateway.requestEditRights();\n };\n\n const closeHistory = () => {\n Common.Gateway.requestHistoryClose();\n }\n\n const changeTitleHandler = () => {\n if(!appOptions.canRename) return;\n\n const api = Common.EditorApi.get();\n api.asc_enableKeyEvents(true);\n\n f7.dialog.create({\n title: t('Toolbar.textRenameFile'),\n text : t('Toolbar.textEnterNewFileName'),\n content: Device.ios ?\n `
                \n \n
                ` : \n `
                \n
                \n
                  \n
                • \n
                  \n
                  \n
                  \n \n
                  \n
                  \n
                  \n
                • \n
                \n
                \n
                `,\n cssClass: 'dlg-adv-options',\n buttons: [\n {\n text: t('View.Edit.textCancel')\n },\n {\n text: t('View.Edit.textOk'),\n cssClass: 'btn-change-title',\n bold: true,\n close: false,\n onClick: () => {\n const titleFieldValue = document.querySelector('#modal-title').value;\n\n if(titleFieldValue.trim().length) {\n changeTitle(titleFieldValue);\n f7.dialog.close();\n }\n }\n }\n ],\n on: {\n opened: () => {\n const nameDoc = docTitle.split('.')[0];\n const titleField = document.querySelector('#modal-title');\n const btnChangeTitle = document.querySelector('.btn-change-title');\n\n titleField.value = nameDoc;\n titleField.focus();\n titleField.select();\n\n titleField.addEventListener('input', () => {\n if(titleField.value.trim().length) {\n btnChangeTitle.classList.remove('disabled');\n } else {\n btnChangeTitle.classList.add('disabled');\n }\n });\n }\n }\n }).open();\n }\n\n const cutDocName = name => {\n if(name.length <= docExt.length) return name;\n const idx = name.length - docExt.length;\n\n return name.substring(idx) == docExt ? name.substring(0, idx) : name;\n };\n\n const changeTitle = (name) => {\n const api = Common.EditorApi.get();\n const currentTitle = `${name}.${docExt}`;\n let formatName = name.trim();\n\n if(formatName.length > 0 && cutDocName(currentTitle) !== formatName) {\n if(/[\\t*\\+:\\\"<>?|\\\\\\\\/]/gim.test(formatName)) {\n f7.dialog.create({\n title: t('View.Edit.notcriticalErrorTitle'),\n text: t('View.Edit.textInvalidName') + '*+:\\\"<>?|\\/',\n buttons: [\n {\n text: t('View.Edit.textOk'),\n close: true\n }\n ]\n }).open();\n } else {\n const wopi = appOptions.wopi;\n formatName = cutDocName(formatName);\n\n if(wopi) {\n api.asc_wopi_renameFile(formatName);\n } else {\n Common.Gateway.requestRename(formatName);\n }\n\n const newTitle = `${formatName}.${docExt}`;\n storePresentationInfo.changeTitle(newTitle);\n }\n }\n }\n\n return (\n \n )\n}));\n\nexport {ToolbarController as Toolbar};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\n\n\nconst Segmented = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n raised,\n raisedIos,\n raisedMd,\n round,\n roundIos,\n roundMd,\n strong,\n strongIos,\n strongMd,\n tag = 'div'\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const classes = classNames(className, {\n segmented: true,\n 'segmented-raised': raised,\n 'segmented-raised-ios': raisedIos,\n 'segmented-raised-md': raisedMd,\n 'segmented-round': round,\n 'segmented-round-ios': roundIos,\n 'segmented-round-md': roundMd,\n 'segmented-strong': strong,\n 'segmented-strong-ios': strongIos,\n 'segmented-strong-md': strongMd\n }, colorClasses(props));\n const SegmentedTag = tag;\n return /*#__PURE__*/React.createElement(SegmentedTag, _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children, (strong || strongIos || strongMd) && /*#__PURE__*/React.createElement(\"span\", {\n className: \"segmented-highlight\"\n }));\n});\nSegmented.displayName = 'f7-segmented';\nexport default Segmented;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs, extend, isStringProp, emit } from '../shared/utils.js';\nimport { colorClasses, actionsAttrs, actionsClasses, routerAttrs, routerClasses } from '../shared/mixins.js';\nimport { useTooltip } from '../shared/use-tooltip.js';\nimport { useIcon } from '../shared/use-icon.js';\nimport { useRouteProps } from '../shared/use-route-props.js';\nimport Preloader from './preloader.js';\n\n\nconst Button = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n text,\n type,\n href = '#',\n target,\n tabLink,\n tabLinkActive,\n round,\n roundIos,\n roundMd,\n fill,\n fillIos,\n fillMd,\n tonal,\n tonalIos,\n tonalMd,\n large,\n largeIos,\n largeMd,\n small,\n smallIos,\n smallMd,\n raised,\n raisedIos,\n raisedMd,\n active,\n outline,\n outlineIos,\n outlineMd,\n disabled,\n preloader,\n preloaderSize,\n preloaderColor,\n loading\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const onClick = e => {\n emit(props, 'click', e);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n useTooltip(elRef, props);\n useRouteProps(elRef, props);\n const getClasses = () => {\n return classNames(className, 'button', {\n 'tab-link': tabLink || tabLink === '',\n 'tab-link-active': tabLinkActive,\n 'button-round': round,\n 'button-round-ios': roundIos,\n 'button-round-md': roundMd,\n 'button-fill': fill,\n 'button-fill-ios': fillIos,\n 'button-fill-md': fillMd,\n 'button-tonal': tonal,\n 'button-tonal-ios': tonalIos,\n 'button-tonal-md': tonalMd,\n 'button-large': large,\n 'button-large-ios': largeIos,\n 'button-large-md': largeMd,\n 'button-small': small,\n 'button-small-ios': smallIos,\n 'button-small-md': smallMd,\n 'button-raised': raised,\n 'button-raised-ios': raisedIos,\n 'button-raised-md': raisedMd,\n 'button-active': active,\n 'button-outline': outline,\n 'button-outline-ios': outlineIos,\n 'button-outline-md': outlineMd,\n 'button-preloader': preloader,\n 'button-loading': loading,\n disabled\n }, colorClasses(props), routerClasses(props), actionsClasses(props));\n };\n const ButtonTag = type === 'submit' || type === 'reset' || type === 'button' ? 'button' : 'a';\n const getAttrs = () => {\n let hrefComputed = href;\n if (href === true) hrefComputed = '#';\n if (href === false || ButtonTag === 'button') hrefComputed = undefined; // no href attribute\n return extend({\n href: hrefComputed,\n target,\n type,\n 'data-tab': isStringProp(tabLink) && tabLink || undefined\n }, routerAttrs(props), actionsAttrs(props));\n };\n const iconEl = useIcon(props);\n let textEl;\n if (text) {\n textEl = /*#__PURE__*/React.createElement(\"span\", null, text);\n }\n if (preloader) {\n return /*#__PURE__*/React.createElement(ButtonTag, _extends({\n ref: elRef,\n id: id,\n style: style,\n className: getClasses()\n }, getAttrs(), extraAttrs, {\n onClick: onClick\n }), /*#__PURE__*/React.createElement(Preloader, {\n size: preloaderSize,\n color: preloaderColor\n }), /*#__PURE__*/React.createElement(\"span\", null, iconEl, textEl, children));\n }\n return /*#__PURE__*/React.createElement(ButtonTag, _extends({\n ref: elRef,\n id: id,\n style: style,\n className: getClasses()\n }, getAttrs(), extraAttrs, {\n onClick: onClick\n }), iconEl, textEl, children);\n});\nButton.displayName = 'f7-button';\nexport default Button;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, getSlots, noUndefinedProps, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { watchProp } from '../shared/watch-prop.js';\n\n\nconst TextEditor = /*#__PURE__*/forwardRef((props, ref) => {\n const f7TextEditor = useRef(null);\n const {\n className,\n id,\n style,\n mode,\n value,\n buttons,\n customButtons,\n dividers,\n imageUrlText,\n linkUrlText,\n placeholder,\n clearFormattingOnPaste,\n resizable = false\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const onChange = (editor, editorValue) => {\n emit(props, 'textEditorChange', editorValue);\n };\n const onInput = (editor, editorValue) => {\n emit(props, 'textEditorInput', editorValue);\n };\n const onFocus = () => {\n emit(props, 'textEditorFocus');\n };\n const onBlur = () => {\n emit(props, 'textEditorBlur');\n };\n const onButtonClick = (editor, button) => {\n emit(props, 'textEditorButtonClick', button);\n };\n const onKeyboardOpen = () => {\n emit(props, 'textEditorKeyboardOpen');\n };\n const onKeyboardClose = () => {\n emit(props, 'textEditorKeyboardClose');\n };\n const onPopoverOpen = () => {\n emit(props, 'textEditorPopoverOpen');\n };\n const onPopoverClose = () => {\n emit(props, 'textEditorPopoverClose');\n };\n const onInsertLink = (editor, url) => {\n emit(props, 'textEditorInsertLink', url);\n };\n const onInsertImage = (editor, url) => {\n emit(props, 'textEditorInsertImage', url);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7TextEditor: () => f7TextEditor.current\n }));\n watchProp(value, newValue => {\n if (f7TextEditor.current) {\n f7TextEditor.current.setValue(newValue);\n }\n });\n const onMount = () => {\n const params = noUndefinedProps({\n el: elRef.current,\n mode,\n value,\n buttons,\n customButtons,\n dividers,\n imageUrlText,\n linkUrlText,\n placeholder,\n clearFormattingOnPaste,\n on: {\n change: onChange,\n input: onInput,\n focus: onFocus,\n blur: onBlur,\n buttonClick: onButtonClick,\n keyboardOpen: onKeyboardOpen,\n keyboardClose: onKeyboardClose,\n popoverOpen: onPopoverOpen,\n popoverClose: onPopoverClose,\n insertLink: onInsertLink,\n insertImage: onInsertImage\n }\n });\n f7ready(() => {\n f7TextEditor.current = f7.textEditor.create(params);\n });\n };\n const onDestroy = () => {\n if (f7TextEditor.current && f7TextEditor.current.destroy) {\n f7TextEditor.current.destroy();\n }\n f7TextEditor.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n const slots = getSlots(props);\n const classes = classNames(className, 'text-editor', resizable && 'text-editor-resizable', colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: elRef,\n id: id,\n style: style,\n className: classes\n }, extraAttrs), slots['root-start'], /*#__PURE__*/React.createElement(\"div\", {\n className: \"text-editor-content\",\n contentEditable: true\n }, slots.default), slots['root-end'], slots.root);\n});\nTextEditor.displayName = 'f7-text-editor';\nexport default TextEditor;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle, useState, useContext } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit, getSlots, extend } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport TextEditor from './text-editor.js';\nimport { watchProp } from '../shared/watch-prop.js';\nimport { ListContext } from '../shared/list-context.js';\n\n\nconst ListInput = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n sortable,\n media,\n dropdown = 'auto',\n wrap = true,\n // Inputs\n input: renderInput = true,\n type = 'text',\n name,\n value,\n defaultValue,\n inputmode,\n readonly,\n required,\n disabled,\n placeholder,\n inputId,\n size,\n accept,\n autocomplete,\n autocorrect,\n autocapitalize,\n spellcheck,\n autofocus,\n autosave,\n max,\n min,\n step,\n maxlength,\n minlength,\n multiple,\n inputStyle,\n pattern,\n validate,\n validateOnBlur,\n onValidate,\n tabindex,\n resizable,\n clearButton,\n // Form\n noFormStoreData,\n noStoreData,\n ignoreStoreData,\n // Error, Info\n errorMessage,\n errorMessageForce,\n info,\n // Outline\n outline,\n // Label\n label,\n floatingLabel,\n // Datepicker\n calendarParams,\n // Colorpicker\n colorPickerParams,\n // Text editor\n textEditorParams\n } = props;\n const [inputInvalid, setInputInvalid] = useState(false);\n const [inputFocused, setInputFocused] = useState(false);\n const listContext = useContext(ListContext);\n const {\n listIsSortable = false\n } = listContext || {};\n const extraAttrs = getExtraAttrs(props);\n const f7Calendar = useRef(null);\n const f7ColorPicker = useRef(null);\n const elRef = useRef(null);\n const inputElRef = useRef(null);\n const itemContentElRef = useRef(null);\n const updateInputOnDidUpdate = useRef(false);\n const getDomValue = () => {\n if (!inputElRef.current) return undefined;\n return inputElRef.current.value;\n };\n const isInputHasValue = () => {\n if (type === 'datepicker' && Array.isArray(value) && value.length === 0) {\n return false;\n }\n const domValue = getDomValue();\n return typeof value === 'undefined' ? domValue || domValue === 0 : value || value === 0;\n };\n const validateInput = () => {\n if (!f7 || !inputElRef.current) return;\n const validity = inputElRef.current.validity;\n if (!validity) return;\n if (!validity.valid) {\n if (onValidate) onValidate(false);\n if (inputInvalid !== true) {\n setInputInvalid(true);\n }\n } else {\n if (onValidate) onValidate(true);\n if (inputInvalid !== false) {\n setInputInvalid(false);\n }\n }\n };\n const onTextareaResize = event => {\n emit(props, 'textareaResize', event);\n };\n const onInputNotEmpty = event => {\n emit(props, 'inputNotEmpty', event);\n };\n const onInputEmpty = event => {\n emit(props, 'inputEmpty', event);\n };\n const onInputClear = event => {\n emit(props, 'inputClear', event);\n };\n const onInput = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n emit(props, 'input', ...args);\n if (!(validateOnBlur || validateOnBlur === '') && (validate || validate === '') && inputElRef.current) {\n validateInput(inputElRef.current);\n }\n };\n const onFocus = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n emit(props, 'focus', ...args);\n setInputFocused(true);\n };\n const onBlur = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n emit(props, 'blur', ...args);\n if ((validate || validate === '' || validateOnBlur || validateOnBlur === '') && inputElRef.current) {\n validateInput(inputElRef.current);\n }\n setInputFocused(false);\n };\n const onChange = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n emit(props, 'change', ...args);\n if (type === 'texteditor') {\n emit(props, 'textEditorChange', args[0]);\n }\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const onMount = () => {\n if (!elRef.current && !itemContentElRef.current) return;\n f7ready(() => {\n if (!inputElRef.current) return;\n inputElRef.current.addEventListener('input:notempty', onInputNotEmpty, false);\n inputElRef.current.addEventListener('textarea:resize', onTextareaResize, false);\n inputElRef.current.addEventListener('input:empty', onInputEmpty, false);\n inputElRef.current.addEventListener('input:clear', onInputClear, false);\n if (type === 'datepicker') {\n f7Calendar.current = f7.calendar.create({\n inputEl: inputElRef.current,\n value,\n on: {\n change(calendar, calendarValue) {\n emit(props, 'calendarChange', calendarValue);\n }\n },\n ...(calendarParams || {})\n });\n }\n if (type === 'colorpicker') {\n f7ColorPicker.current = f7.colorPicker.create({\n inputEl: inputElRef.current,\n value,\n on: {\n change(colorPicker, colorPickerValue) {\n emit(props, 'colorpicker:change colorPickerChange', colorPickerValue);\n }\n },\n ...(colorPickerParams || {})\n });\n }\n if (!(validateOnBlur || validateOnBlur === '') && (validate || validate === '') && (typeof value !== 'undefined' && value !== null && value !== '' || typeof defaultValue !== 'undefined' && defaultValue !== null && defaultValue !== '')) {\n setTimeout(() => {\n validateInput();\n }, 0);\n }\n if (type === 'textarea' && resizable) {\n f7.input.resizeTextarea(inputElRef.current);\n }\n });\n };\n const onDestroy = () => {\n if (inputElRef.current) {\n inputElRef.current.removeEventListener('input:notempty', onInputNotEmpty, false);\n inputElRef.current.removeEventListener('textarea:resize', onTextareaResize, false);\n inputElRef.current.removeEventListener('input:empty', onInputEmpty, false);\n inputElRef.current.removeEventListener('input:clear', onInputClear, false);\n }\n if (f7Calendar.current && f7Calendar.current.destroy) {\n f7Calendar.current.destroy();\n f7Calendar.current = null;\n }\n if (f7ColorPicker.current && f7ColorPicker.current.destroy) {\n f7ColorPicker.current.destroy();\n f7ColorPicker.current = null;\n }\n };\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n useIsomorphicLayoutEffect(() => {\n if (!f7) return;\n if (updateInputOnDidUpdate.current) {\n if (!inputElRef.current) return;\n updateInputOnDidUpdate.current = false;\n if (validate && !validateOnBlur) {\n validateInput();\n }\n if (type === 'textarea' && resizable) {\n f7.input.resizeTextarea(inputElRef.current);\n }\n }\n });\n watchProp(colorPickerParams, newValue => {\n if (!f7 || !f7ColorPicker.current) return;\n extend(f7ColorPicker.current.params, newValue || {});\n });\n watchProp(calendarParams, newValue => {\n if (!f7 || !f7Calendar.current) return;\n extend(f7Calendar.current.params, newValue || {});\n });\n watchProp(value, newValue => {\n if (!f7) return;\n updateInputOnDidUpdate.current = true;\n if (f7Calendar.current) {\n f7Calendar.current.setValue(newValue);\n }\n if (f7ColorPicker.current) {\n f7ColorPicker.current.setValue(newValue);\n }\n });\n const slots = getSlots(props);\n const domValue = getDomValue();\n const inputHasValue = isInputHasValue();\n const isSortableComputed = sortable === true || sortable === false ? sortable : listIsSortable;\n let inputEl;\n const createInput = (InputTag, children) => {\n const needsValue = type !== 'file' && type !== 'datepicker' && type !== 'colorpicker';\n const needsType = InputTag === 'input';\n let inputType = type;\n if (inputType === 'datepicker' || inputType === 'colorpicker') {\n inputType = 'text';\n }\n const inputClassName = classNames({\n resizable: inputType === 'textarea' && resizable,\n 'no-store-data': noFormStoreData || noStoreData || ignoreStoreData,\n 'input-invalid': errorMessage && errorMessageForce || inputInvalid,\n 'input-with-value': inputHasValue,\n 'input-focused': inputFocused\n });\n let inputValue;\n if (needsValue) {\n if (typeof value !== 'undefined') inputValue = value;else inputValue = domValue;\n }\n const valueProps = {};\n if (type !== 'datepicker' && type !== 'colorpicker') {\n if ('value' in props) valueProps.value = inputValue;\n if ('defaultValue' in props) valueProps.defaultValue = defaultValue;\n }\n return /*#__PURE__*/React.createElement(InputTag, _extends({\n ref: inputElRef,\n style: inputStyle,\n name: name,\n type: needsType ? inputType : undefined,\n placeholder: placeholder,\n inputMode: inputmode,\n id: inputId,\n size: size,\n accept: accept,\n autoComplete: autocomplete,\n autoCorrect: autocorrect,\n autoCapitalize: autocapitalize,\n spellCheck: spellcheck,\n autoFocus: autofocus,\n autoSave: autosave,\n disabled: disabled,\n max: max,\n maxLength: maxlength,\n min: min,\n minLength: minlength,\n step: step,\n multiple: multiple,\n readOnly: readonly,\n required: required,\n pattern: pattern,\n validate: typeof validate === 'string' && validate.length ? validate : undefined,\n \"data-validate\": validate === true || validate === '' || validateOnBlur === true || validateOnBlur === '' ? true : undefined,\n \"data-validate-on-blur\": validateOnBlur === true || validateOnBlur === '' ? true : undefined,\n tabIndex: tabindex,\n \"data-error-message\": errorMessageForce ? undefined : errorMessage,\n className: inputClassName,\n onFocus: onFocus,\n onBlur: onBlur,\n onInput: onInput,\n onChange: onChange\n }, valueProps), children);\n };\n if (renderInput) {\n if (type === 'select' || type === 'textarea' || type === 'file') {\n if (type === 'select') {\n inputEl = createInput('select', slots.default);\n } else if (type === 'file') {\n inputEl = createInput('input');\n } else {\n inputEl = createInput('textarea');\n }\n } else if (type === 'texteditor') {\n inputEl = /*#__PURE__*/React.createElement(TextEditor, _extends({\n value: value,\n resizable: resizable,\n placeholder: placeholder,\n onTextEditorFocus: onFocus,\n onTextEditorBlur: onBlur,\n onTextEditorInput: onInput,\n onTextEditorChange: onChange\n }, textEditorParams || {}));\n } else {\n inputEl = createInput('input');\n }\n }\n const hasErrorMessage = !!errorMessage || slots['error-message'] && slots['error-message'].length;\n const ItemContent = /*#__PURE__*/React.createElement(\"div\", {\n ref: itemContentElRef,\n className: classNames('item-content item-input', !wrap && className, !wrap && {\n disabled\n }, !wrap && colorClasses(props), {\n 'item-input-outline': outline,\n 'item-input-focused': inputFocused,\n 'item-input-with-info': !!info || slots.info && slots.info.length,\n 'item-input-with-value': inputHasValue,\n 'item-input-with-error-message': hasErrorMessage && errorMessageForce || inputInvalid,\n 'item-input-invalid': hasErrorMessage && errorMessageForce || inputInvalid\n })\n }, slots['content-start'], (media || slots.media) && /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-media\"\n }, media && /*#__PURE__*/React.createElement(\"img\", {\n src: media\n }), slots.media), /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-inner\"\n }, slots['inner-start'], (label || slots.label) && /*#__PURE__*/React.createElement(\"div\", {\n className: classNames('item-title item-label', {\n 'item-floating-label': floatingLabel\n })\n }, label, slots.label), /*#__PURE__*/React.createElement(\"div\", {\n className: classNames('item-input-wrap', {\n 'input-dropdown': dropdown === 'auto' ? type === 'select' : dropdown\n })\n }, inputEl, slots.input, hasErrorMessage && errorMessageForce && /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-input-error-message\"\n }, errorMessage, slots['error-message']), clearButton && /*#__PURE__*/React.createElement(\"span\", {\n className: \"input-clear-button\"\n }), (info || slots.info) && /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-input-info\"\n }, info, slots.info)), slots.inner, slots['inner-end']), slots.content, slots['content-end']);\n if (!wrap) {\n return ItemContent;\n }\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n ref: elRef,\n id: id,\n style: style,\n className: classNames(className, {\n disabled\n }, colorClasses(props))\n }, extraAttrs), slots['root-start'], ItemContent, isSortableComputed && /*#__PURE__*/React.createElement(\"div\", {\n className: \"sortable-handler\"\n }), slots.root, slots['root-end']);\n});\nListInput.displayName = 'f7-list-input';\nexport default ListInput;","import React, {useState} from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport {List, ListItem, Page, Navbar, Icon, ListInput, Segmented, Button, Link, NavLeft, NavRight, NavTitle, f7} from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from \"../../../../../common/mobile/utils/device\";\n\nconst PageTypeLink = props => {\n const { t } = useTranslation();\n const _t = t('View.Add', {returnObjects: true});\n const [typeLink, setTypeLink] = useState(props.curType);\n const isNavigate = props.isNavigate;\n\n return (\n \n \n {Device.phone &&\n \n \n \n }\n \n \n {setTypeLink(1); props.changeType(1);}}>\n {setTypeLink(0); props.changeType(0);}}>\n \n \n )\n};\n\nconst PageLinkTo = props => {\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const _t = t('View.Add', {returnObjects: true});\n const countPages = props.countPages;\n const isNavigate = props.isNavigate;\n\n const [stateTypeTo, setTypeTo] = useState(props.curTo);\n const changeTypeTo = (type) => {\n setTypeTo(type);\n props.changeTo(type);\n };\n\n const [stateNumberTo, setNumberTo] = useState(props.numberTo);\n \n const changeNumber = (curNumber, isDecrement) => {\n let value = isDecrement ? Math.max(curNumber - 1, 1) : Math.min(curNumber + 1, countPages);\n\n if (value !== curNumber) {\n setTypeTo(4);\n setNumberTo(value);\n props.changeTo(4, value);\n }\n };\n\n return (\n \n \n {Device.phone &&\n \n \n \n }\n \n \n {changeTypeTo(0)}}>\n {changeTypeTo(1)}}>\n {changeTypeTo(2)}}>\n {changeTypeTo(3)}}>\n \n {!isAndroid &&
                {stateNumberTo}
                }\n
                \n \n \n {isAndroid && }\n \n \n
                \n
                \n
                \n
                \n )\n};\n\nconst PageLink = props => {\n const { t } = useTranslation();\n const _t = t('View.Add', {returnObjects: true});\n const countPages = props.storeToolbarSettings?.countPages;\n const regx = /[\"https://\"]/g\n const isNavigate = props.isNavigate;\n const [typeLink, setTypeLink] = useState(1);\n const textType = typeLink === 1 ? _t.textExternalLink : _t.textSlideInThisPresentation;\n const changeType = (newType) => {\n setTypeLink(newType);\n };\n\n const [link, setLink] = useState('');\n const [linkTo, setLinkTo] = useState(0);\n const [displayTo, setDisplayTo] = useState(_t.textNextSlide);\n const [numberTo, setNumberTo] = useState(1);\n\n const changeTo = (type, number) => {\n setLinkTo(type);\n switch (type) {\n case 0 : setDisplayTo(_t.textNextSlide); break;\n case 1 : setDisplayTo(_t.textPreviousSlide); break;\n case 2 : setDisplayTo(_t.textFirstSlide); break;\n case 3 : setDisplayTo(_t.textLastSlide); break;\n case 4 : setDisplayTo(`${_t.textSlide} ${number}`); setNumberTo(number); break;\n }\n };\n\n const display = props.getTextDisplay();\n const displayDisabled = display !== false && display === null;\n const [stateDisplay, setDisplay] = useState(display !== false ? ((display !== null) ? display : _t.textDefault) : \"\");\n const [stateAutoUpdate, setAutoUpdate] = useState(!stateDisplay ? true : false);\n const [screenTip, setScreenTip] = useState('');\n\n return (\n \n \n \n {\n isNavigate ? f7.views.current.router.back() : props.closeModal('#add-link-popup', '#add-link-popover');\n }}>\n {Device.android && }\n \n \n {t('View.Add.textLinkSettings')}\n \n {\n props.onInsertLink(typeLink, (typeLink === 1 ?\n {url: link, display: stateDisplay, displayDisabled, tip: screenTip } :\n {linkTo: linkTo, numberTo: numberTo, display: stateDisplay, displayDisabled, tip: screenTip}));\n }} text={Device.ios ? t('View.Add.textDone') : ''}>\n {Device.android && }\n \n \n \n \n \n {typeLink === 1 ?\n {\n setLink(event.target.value);\n if(stateAutoUpdate) setDisplay(event.target.value);\n }}\n /> :\n \n }\n {\n setDisplay(event.target.value);\n setAutoUpdate(event.target.value == ''); \n }}\n />\n {setScreenTip(event.target.value)}}\n />\n \n \n )\n};\n\nconst ObservablePageLink = inject('storeToolbarSettings')(observer(PageLink))\n\nexport {ObservablePageLink,\n PageLinkTo,\n PageTypeLink}","import React, {Component} from 'react';\nimport { f7, Popup, Popover, View } from 'framework7-react';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport { withTranslation} from 'react-i18next';\n\nimport {PageTypeLink, PageLinkTo, ObservablePageLink} from '../../view/add/AddLink';\n\nconst routes = [\n {\n path: '/add-link-type/',\n component: PageTypeLink\n },\n {\n path: '/add-link-to/',\n component: PageLinkTo\n }\n];\n\nclass AddLinkController extends Component {\n constructor (props) {\n super(props);\n this.onInsertLink = this.onInsertLink.bind(this);\n this.getTextDisplay = this.getTextDisplay.bind(this);\n\n const api = Common.EditorApi.get();\n this.textDisplay = api.can_AddHyperlink();\n }\n\n closeModal(mobileSelector, tabletSelector) {\n if (Device.phone) {\n f7.popup.close(mobileSelector);\n } else {\n f7.popover.close(tabletSelector);\n }\n }\n\n onInsertLink (type, linkInfo) {\n const api = Common.EditorApi.get();\n const { t } = this.props;\n const _t = t(\"View.Add\", { returnObjects: true });\n\n const c_oHyperlinkType = {\n InternalLink: 0,\n WebLink: 1\n };\n const display = linkInfo.display;\n const tip = linkInfo.tip;\n const props = new Asc.CHyperlinkProperty();\n\n let def_display = '';\n\n if (type == c_oHyperlinkType.WebLink) {\n let url = linkInfo.url;\n const urltype = api.asc_getUrlType(url.trim());\n if (urltype===AscCommon.c_oAscUrlType.Invalid) {\n f7.dialog.create({\n title: _t.notcriticalErrorTitle,\n text: _t.txtNotUrl,\n buttons: [\n {\n text: t('View.Add.textOk')\n }\n ]\n }).open();\n return;\n }\n\n url = url.replace(/^\\s+|\\s+$/g, '');\n if (urltype!==AscCommon.c_oAscUrlType.Unsafe && !/(((^https?)|(^ftp)):\\/\\/)|(^mailto:)/i.test(url))\n url = (urltype===AscCommon.c_oAscUrlType.Email ? 'mailto:' : 'http://' ) + url;\n url = url.replace(new RegExp(\"%20\", 'g'), \" \");\n\n props.put_Value(url);\n props.put_ToolTip(tip);\n\n def_display = url;\n } else {\n let url = \"ppaction://hlink\";\n let slidetip = '';\n\n switch (linkInfo.linkTo) {\n case 0:\n url = url + \"showjump?jump=nextslide\";\n slidetip = _t.textNextSlide;\n break;\n case 1:\n url = url + \"showjump?jump=previousslide\";\n slidetip = _t.textPreviousSlide;\n break;\n case 2:\n url = url + \"showjump?jump=firstslide\";\n slidetip = _t.textFirstSlide;\n break;\n case 3:\n url = url + \"showjump?jump=lastslide\";\n slidetip = _t.textLastSlide;\n break;\n case 4:\n url = url + \"sldjumpslide\" + linkInfo.numberTo;\n slidetip = _t.textSlide + ' ' + (linkInfo.numberTo + 1);\n break;\n }\n\n props.put_Value(url);\n props.put_ToolTip(!tip ? slidetip : tip);\n def_display = slidetip;\n }\n\n if (!linkInfo.displayDisabled) {\n props.put_Text(!display ? def_display : display);\n } else\n props.put_Text(null);\n\n api.add_Hyperlink(props);\n\n if(this.props.isNavigate) {\n this.closeModal('.add-popup', '#add-popover');\n } else {\n this.closeModal('#add-link-popup', '#add-link-popover');\n }\n }\n\n getTextDisplay () {\n return this.textDisplay;\n }\n\n componentDidMount() {\n if(!this.props.isNavigate) {\n if(Device.phone) {\n f7.popup.open('#add-link-popup', true);\n } else {\n f7.popover.open('#add-link-popover', '#btn-add');\n }\n }\n }\n\n render () {\n return (\n !this.props.isNavigate ?\n Device.phone ?\n this.props.closeOptions('add-link')}>\n \n \n \n \n :\n this.props.closeOptions('add-link')}>\n \n \n \n \n :\n \n )\n }\n}\n\nconst AddLinkWithTranslation = withTranslation()(AddLinkController);\n\nexport {AddLinkWithTranslation as AddLinkController};","import React, {useState} from 'react';\r\nimport {observer, inject} from \"mobx-react\";\r\nimport {f7, List, ListItem, Page, Navbar, Icon, ListButton, ListInput, Segmented, Button, NavRight, Link, NavLeft, NavTitle} from 'framework7-react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport {Device} from \"../../../../../common/mobile/utils/device\";\r\n\r\nconst PageEditTypeLink = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const [typeLink, setTypeLink] = useState(props.curType);\r\n\r\n const settings = props.storeFocusObjects.settings;\r\n \r\n if (settings.indexOf('hyperlink') === -1) {\r\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n {setTypeLink(1); props.changeType(1);}}>\r\n {setTypeLink(0); props.changeType(0);}}>\r\n \r\n \r\n )\r\n};\r\n\r\nconst PageEditLinkTo = props => {\r\n const isAndroid = Device.android;\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const countPages = props.storeToolbarSettings?.countPages;\r\n const [stateTypeTo, setTypeTo] = useState(props.curTo);\r\n\r\n const changeTypeTo = (type) => {\r\n setTypeTo(type);\r\n props.changeTo(type);\r\n };\r\n\r\n const [stateNumberTo, setNumberTo] = useState(props.numberTo);\r\n\r\n const changeNumber = (curNumber, isDecrement) => {\r\n let value = isDecrement ? Math.max(curNumber - 1, 1) : Math.min(curNumber + 1, countPages);\r\n\r\n if (value !== curNumber) {\r\n setTypeTo(4);\r\n setNumberTo(value);\r\n props.changeTo(4, value);\r\n }\r\n };\r\n\r\n const settings = props.storeFocusObjects.settings;\r\n if (settings.indexOf('hyperlink') === -1) {\r\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n {changeTypeTo(0)}}>\r\n {changeTypeTo(1)}}>\r\n {changeTypeTo(2)}}>\r\n {changeTypeTo(3)}}>\r\n \r\n {!isAndroid &&
                {stateNumberTo}
                }\r\n
                \r\n \r\n \r\n {isAndroid && }\r\n \r\n \r\n
                \r\n
                \r\n
                \r\n
                \r\n )\r\n};\r\n\r\nconst PageLink = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const url = props.url;\r\n const tooltip = props.tooltip;\r\n const display = props.display;\r\n const slideNum = props.slideNum;\r\n const slideLink = props.slideLink;\r\n const valueTypeLink = props.typeLink;\r\n\r\n const typesDisplayTo = {\r\n 0: `${_t.textNextSlide}`,\r\n 1: `${_t.textPreviousSlide}`,\r\n 2: `${_t.textFirstSlide}`,\r\n 3: `${_t.textLastSlide}`,\r\n 4: `${_t.textSlide} ${slideNum}`\r\n };\r\n\r\n const [typeLink, setTypeLink] = useState(valueTypeLink);\r\n const textType = typeLink === 1 ? _t.textExternalLink : _t.textSlideInThisPresentation;\r\n\r\n const changeType = (newType) => {\r\n setTypeLink(newType);\r\n };\r\n\r\n const [link, setLink] = useState(typeLink !== 0 ? url : '');\r\n const [linkTo, setLinkTo] = useState(slideLink);\r\n const [displayTo, setDisplayTo] = useState(typesDisplayTo[slideLink]);\r\n const [numberTo, setNumberTo] = useState(slideNum);\r\n\r\n const changeTo = (type, number) => {\r\n setLinkTo(type);\r\n switch (type) {\r\n case 0 : setDisplayTo(_t.textNextSlide); break;\r\n case 1 : setDisplayTo(_t.textPreviousSlide); break;\r\n case 2 : setDisplayTo(_t.textFirstSlide); break;\r\n case 3 : setDisplayTo(_t.textLastSlide); break;\r\n case 4 : setDisplayTo(`${_t.textSlide} ${number}`); setNumberTo(number); break;\r\n }\r\n };\r\n\r\n const [screenTip, setScreenTip] = useState(tooltip);\r\n const displayDisabled = display !== false && display === null;\r\n const [stateDisplay, setDisplay] = useState(display !== false ? ((display !== null) ? display : _t.textDefault) : \"\");\r\n\r\n return (\r\n \r\n \r\n \r\n {\r\n props.isNavigate ? f7.views.current.router.back() : props.closeModal();\r\n }}>\r\n {Device.android && }\r\n \r\n \r\n {t('View.Edit.textLinkSettings')}\r\n \r\n {\r\n props.onEditLink(typeLink, (typeLink === 1 ?\r\n {url: link, display: stateDisplay, tip: screenTip, displayDisabled } :\r\n {linkTo: linkTo, numberTo: numberTo, display: stateDisplay, tip: screenTip, displayDisabled}));\r\n }} text={Device.ios ? t('View.Edit.textDone') : ''}>\r\n {Device.android && }\r\n \r\n \r\n \r\n \r\n \r\n {typeLink !== 0 ?\r\n {setLink(event.target.value)}}\r\n /> :\r\n \r\n }\r\n {setDisplay(event.target.value)}}\r\n />\r\n {setScreenTip(event.target.value)}}\r\n />\r\n \r\n \r\n {\r\n props.onRemoveLink();\r\n props.isNavigate ? f7.views.current.router.back() : props.closeModal();\r\n }}\r\n />\r\n \r\n \r\n )\r\n};\r\n\r\nconst ObservablePageEditLinkTo = inject(\"storeFocusObjects\", \"storeToolbarSettings\")(observer(PageEditLinkTo));\r\nconst ObservablePageEditTypeLink = inject(\"storeFocusObjects\")(observer(PageEditTypeLink));\r\n\r\nexport {\r\n PageLink as EditLink,\r\n ObservablePageEditLinkTo,\r\n ObservablePageEditTypeLink\r\n}","import React, { Component } from 'react';\r\nimport { f7, View, Popup, Popover } from 'framework7-react';\r\nimport { Device } from '../../../../../common/mobile/utils/device';\r\nimport {observer, inject} from \"mobx-react\";\r\nimport { withTranslation } from 'react-i18next';\r\n\r\nimport { EditLink, ObservablePageEditTypeLink, ObservablePageEditLinkTo } from '../../view/edit/EditLink';\r\n\r\nconst routes = [\r\n {\r\n path: '/edit-link-type/',\r\n component: ObservablePageEditTypeLink\r\n },\r\n {\r\n path: '/edit-link-to/',\r\n component: ObservablePageEditLinkTo\r\n }\r\n];\r\n\r\nclass EditLinkController extends Component {\r\n constructor (props) {\r\n super(props);\r\n\r\n this.onEditLink = this.onEditLink.bind(this);\r\n this.onRemoveLink = this.onRemoveLink.bind(this);\r\n this.initLink = this.initLink.bind(this);\r\n this.initLink();\r\n }\r\n\r\n closeModal () {\r\n if ( Device.phone ) {\r\n f7.popup.close('#edit-link-popup');\r\n } else {\r\n f7.popover.close('#edit-link-popover');\r\n }\r\n }\r\n\r\n initLink() {\r\n const api = Common.EditorApi.get();\r\n const linkObject = this.props.storeFocusObjects.linkObject;\r\n const url = linkObject.get_Value();\r\n const tooltip = linkObject.get_ToolTip();\r\n const display = linkObject.get_Text();\r\n\r\n this.url = url;\r\n this.tooltip = tooltip;\r\n this.display = display;\r\n this.slideLink = 0;\r\n this.slideNum = 0;\r\n\r\n let indAction;\r\n let slidesCount;\r\n let slideNum;\r\n\r\n if(url === null || url === undefined || url === '') {\r\n this.typeLink = 1;\r\n }\r\n else {\r\n indAction = url.indexOf(\"ppaction://hlink\");\r\n if(0 == indAction) {\r\n if (url == \"ppaction://hlinkshowjump?jump=firstslide\") {\r\n this.slideLink = 2;\r\n } else if (url == \"ppaction://hlinkshowjump?jump=lastslide\") {\r\n this.slideLink = 3;\r\n }\r\n else if (url == \"ppaction://hlinkshowjump?jump=nextslide\") {\r\n this.slideLink = 0;\r\n }\r\n else if (url == \"ppaction://hlinkshowjump?jump=previousslide\") {\r\n this.slideLink = 1;\r\n }\r\n else {\r\n this.slideLink = 4;\r\n slidesCount = api.getCountPages();\r\n let mask = \"ppaction://hlinksldjumpslide\",\r\n indSlide = url.indexOf(mask);\r\n if (0 == indSlide) {\r\n this.slideNum = parseInt(url.substring(mask.length));\r\n if (slideNum < 0) this.slideNum = 0;\r\n if (slideNum >= slidesCount) this.slideNum = slidesCount - 1;\r\n } else this.slideNum = 0;\r\n }\r\n this.typeLink = 0\r\n } else {\r\n this.typeLink = 1;\r\n }\r\n }\r\n }\r\n\r\n onEditLink(type, linkInfo) {\r\n const api = Common.EditorApi.get();\r\n const { t } = this.props;\r\n const _t = t(\"View.Edit\", { returnObjects: true });\r\n\r\n const c_oHyperlinkType = {\r\n InternalLink: 0,\r\n WebLink: 1\r\n };\r\n\r\n const display = linkInfo.display;\r\n const tip = linkInfo.tip;\r\n const props = new Asc.CHyperlinkProperty();\r\n let def_display = '';\r\n\r\n if (type == c_oHyperlinkType.WebLink) {\r\n let url = linkInfo.url;\r\n const urltype = api.asc_getUrlType(url.trim());\r\n if (urltype===AscCommon.c_oAscUrlType.Invalid) {\r\n f7.dialog.create({\r\n title: t('View.Edit.notcriticalErrorTitle'),\r\n text: t('View.Edit.textNotUrl'),\r\n buttons: [\r\n {\r\n text: t('View.Edit.textOk')\r\n }\r\n ]\r\n }).open();\r\n\r\n return;\r\n }\r\n\r\n url = url.replace(/^\\s+|\\s+$/g, '');\r\n if (urltype!==AscCommon.c_oAscUrlType.Unsafe && !/(((^https?)|(^ftp)):\\/\\/)|(^mailto:)/i.test(url))\r\n url = (urltype===AscCommon.c_oAscUrlType.Email ? 'mailto:' : 'http://' ) + url;\r\n url = url.replace(new RegExp(\"%20\", 'g'), \" \");\r\n\r\n props.put_Value(url);\r\n props.put_ToolTip(tip);\r\n def_display = url;\r\n } else {\r\n let url = \"ppaction://hlink\";\r\n let slidetip = '';\r\n switch (linkInfo.linkTo) {\r\n case 0:\r\n url = url + \"showjump?jump=nextslide\";\r\n slidetip = _t.textNextSlide;\r\n break;\r\n case 1:\r\n url = url + \"showjump?jump=previousslide\";\r\n slidetip = _t.textPreviousSlide;\r\n break;\r\n case 2:\r\n url = url + \"showjump?jump=firstslide\";\r\n slidetip = _t.textFirstSlide;\r\n break;\r\n case 3:\r\n url = url + \"showjump?jump=lastslide\";\r\n slidetip = _t.textLastSlide;\r\n break;\r\n case 4:\r\n url = url + \"sldjumpslide\" + linkInfo.numberTo;\r\n slidetip = _t.textSlide + ' ' + (linkInfo.numberTo + 1);\r\n break;\r\n }\r\n props.put_Value(url);\r\n props.put_ToolTip(tip === '' ? slidetip : tip);\r\n def_display = slidetip;\r\n }\r\n\r\n if (!linkInfo.displayDisabled) {\r\n props.put_Text(display === '' ? def_display : display);\r\n } else\r\n props.put_Text(null);\r\n \r\n api.change_Hyperlink(props);\r\n this.props.isNavigate ? f7.views.current.router.back() : this.closeModal();\r\n }\r\n\r\n onRemoveLink() {\r\n const api = Common.EditorApi.get();\r\n api.remove_Hyperlink();\r\n }\r\n\r\n componentDidMount() {\r\n if(!this.props.isNavigate) {\r\n if(Device.phone) {\r\n f7.popup.open('#edit-link-popup', true);\r\n } else {\r\n f7.popover.open('#edit-link-popover', '#btn-add');\r\n }\r\n }\r\n }\r\n\r\n render () {\r\n return (\r\n !this.props.isNavigate ?\r\n Device.phone ?\r\n this.props.closeOptions('edit-link')}>\r\n \r\n \r\n \r\n \r\n :\r\n this.props.closeOptions('edit-link')}>\r\n \r\n \r\n \r\n \r\n : \r\n \r\n )\r\n }\r\n}\r\n\r\nconst EditLinkWithTranslation = inject(\"storeFocusObjects\")(observer(withTranslation()(EditLinkController)));\r\n\r\nexport {EditLinkWithTranslation as EditLinkController};","import React, { createContext, useEffect } from 'react';\nimport { LocalStorage } from \"../../utils/LocalStorage.mjs\";\nimport { inject, observer } from \"mobx-react\";\nimport { useTranslation } from 'react-i18next';\n\nexport const ThemesContext = createContext();\nexport const ThemesProvider = props => {\n const { t, ready } = useTranslation();\n const storeThemes = props.storeThemes;\n const themes = storeThemes.themes;\n const nameColors = storeThemes.nameColors;\n\n useEffect(() => {\n initTheme();\n }, []);\n\n useEffect(() => {\n if (ready) {\n const translations = getTranslationsThemes();\n storeThemes.setTranslationsThemes(translations);\n }\n }, [ready]);\n\n const getTranslationsThemes = () => {\n const translations = Object.keys(themes).reduce((acc, theme) => {\n acc[theme] = t(`Common.Themes.${theme}`);\n return acc;\n }, {});\n\n return translations;\n }\n\n const initTheme = () => {\n const clientTheme = LocalStorage.getItem(\"ui-theme\");\n const editorConfig = window.native?.editorConfig;\n\n storeThemes.setConfigSelectTheme(editorConfig?.theme?.select != false);\n setUITheme(clientTheme ? JSON.parse(clientTheme).type : editorConfig?.theme?.type);\n\n applyTheme();\n }\n\n const setUITheme = type => {\n if(type && type !== 'system') {\n const theme = themes[type];\n storeThemes.setColorTheme(theme);\n } else {\n setSystemTheme();\n }\n }\n\n const setSystemTheme = () => {\n let theme = themes.light;\n\n if(window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n theme = themes.dark;\n }\n\n storeThemes.setColorTheme(themes[\"system\"]);\n storeThemes.setSystemColorTheme(theme);\n }\n\n const getCurrentThemeColors = colors => {\n let outObject = {};\n const style = getComputedStyle(document.body);\n\n colors.forEach(item => {\n outObject[item] = style.getPropertyValue('--' + item).trim()\n });\n\n return outObject;\n }\n\n const changeTheme = key => {\n const theme = themes[key];\n const type = theme.type;\n\n LocalStorage.setItem(\"ui-theme\", JSON.stringify(theme));\n storeThemes.setColorTheme(theme);\n\n if(type !== \"system\") {\n storeThemes.resetSystemColorTheme();\n } else {\n setSystemTheme();\n }\n\n applyTheme();\n }\n\n const applyTheme = () => {\n const $body = $$('body');\n\n let theme = storeThemes.systemColorTheme;\n if(!theme) theme = storeThemes.colorTheme;\n \n $body.attr('class') && $body.attr('class', $body.attr('class').replace(/\\s?theme-type-(?:dark|light)/, ''));\n $body.addClass(`theme-type-${theme.type}`);\n\n const onEngineCreated = api => {\n let obj = getCurrentThemeColors(nameColors);\n obj.type = theme.type;\n obj.name = theme.id;\n\n api.asc_setSkin(obj);\n };\n\n const api = Common.EditorApi ? Common.EditorApi.get() : undefined;\n if(!api) Common.Notifications.on('engineCreated', onEngineCreated);\n else onEngineCreated(api);\n }\n\n return (\n \n {props.children}\n \n )\n}\n\nconst themes = inject('storeThemes')(observer(ThemesProvider));\nexport {themes as Themes}","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\n\n\nconst BlockTitle = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n large,\n medium\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const classes = classNames(className, 'block-title', {\n 'block-title-large': large,\n 'block-title-medium': medium\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children);\n});\nBlockTitle.displayName = 'f7-block-title';\nexport default BlockTitle;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { useTab } from '../shared/use-tab.js';\n\n\nconst Block = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n inset,\n insetIos,\n insetMd,\n xsmallInset,\n xsmallInsetIos,\n xsmallInsetMd,\n smallInset,\n smallInsetIos,\n smallInsetMd,\n mediumInset,\n mediumInsetIos,\n mediumInsetMd,\n largeInset,\n largeInsetIos,\n largeInsetMd,\n xlargeInset,\n xlargeInsetIos,\n xlargeInsetMd,\n strong,\n strongIos,\n strongMd,\n outline,\n outlineIos,\n outlineMd,\n accordionList,\n accordionOpposite,\n tabs,\n tab,\n tabActive,\n id,\n style,\n children\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n useTab(elRef, props);\n const classes = classNames(className, 'block', {\n inset,\n 'inset-ios': insetIos,\n 'inset-md': insetMd,\n 'xsmall-inset': xsmallInset,\n 'xsmall-inset-ios': xsmallInsetIos,\n 'xsmall-inset-md': xsmallInsetMd,\n 'small-inset': smallInset,\n 'small-inset-ios': smallInsetIos,\n 'small-inset-md': smallInsetMd,\n 'medium-inset': mediumInset,\n 'medium-inset-ios': mediumInsetIos,\n 'medium-inset-md': mediumInsetMd,\n 'large-inset': largeInset,\n 'large-inset-ios': largeInsetIos,\n 'large-inset-md': largeInsetMd,\n 'xlarge-inset': xlargeInset,\n 'xlarge-inset-ios': xlargeInsetIos,\n 'xlarge-inset-md': xlargeInsetMd,\n 'block-strong': strong,\n 'block-strong-ios': strongIos,\n 'block-strong-md': strongMd,\n 'block-outline': outline,\n 'block-outline-ios': outlineIos,\n 'block-outline-md': outlineMd,\n 'accordion-list': accordionList,\n 'accordion-opposite': accordionOpposite,\n tabs,\n tab,\n 'tab-active': tabActive\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children);\n});\nBlock.displayName = 'f7-block';\nexport default Block;","import React, { Fragment } from \"react\";\r\nimport { observer, inject } from \"mobx-react\";\r\nimport { Page, Navbar, List, ListItem, BlockTitle, Toggle, Block } from \"framework7-react\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst PageApplicationSettings = props => {\r\n const { t } = useTranslation();\r\n const _t = t(\"View.Settings\", { returnObjects: true });\r\n const storeApplicationSettings = props.storeApplicationSettings;\r\n const unitMeasurement = storeApplicationSettings.unitMeasurement;\r\n const isSpellChecking = storeApplicationSettings.isSpellChecking;\r\n const directionMode = storeApplicationSettings.directionMode;\r\n const newDirectionMode = directionMode !== 'ltr' ? 'ltr' : 'rtl';\r\n\r\n const changeMeasureSettings = value => {\r\n storeApplicationSettings.changeUnitMeasurement(value);\r\n props.setUnitMeasurement(value);\r\n };\r\n\r\n // set mode\r\n const appOptions = props.storeAppOptions;\r\n const storeThemes = props.storeThemes;\r\n const colorTheme = storeThemes.colorTheme;\r\n const themes = storeThemes.themes;\r\n const typeTheme = colorTheme.type;\r\n const isConfigSelectTheme = storeThemes.isConfigSelectTheme;\r\n const _isEdit = appOptions.isEdit;\r\n // const _isShowMacros = (!appOptions.isDisconnected && appOptions.customization) ? appOptions.customization.macros !== false : true;\r\n\r\n return (\r\n \r\n \r\n {_isEdit &&\r\n \r\n {_t.textUnitOfMeasurement}\r\n \r\n changeMeasureSettings(0)}>\r\n changeMeasureSettings(1)}>\r\n changeMeasureSettings(2)}>\r\n \r\n \r\n \r\n {\r\n storeApplicationSettings.changeSpellCheck(!isSpellChecking);\r\n props.switchSpellCheck(!isSpellChecking);\r\n }}\r\n />\r\n \r\n \r\n \r\n }\r\n {!!isConfigSelectTheme &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n {Common.Locale.isCurrentLangRtl &&\r\n <>\r\n \r\n \r\n
                \r\n {t(\"View.Settings.textRtlInterface\")}\r\n Beta\r\n
                \r\n {\r\n storeApplicationSettings.changeDirectionMode(newDirectionMode);\r\n props.changeDirectionMode(newDirectionMode);\r\n }}\r\n />\r\n
                \r\n
                \r\n \r\n

                {t('View.Settings.textExplanationChangeDirection')}

                \r\n
                \r\n \r\n }\r\n
                \r\n );\r\n};\r\n\r\nconst PageThemeSettings = props => {\r\n const { t } = useTranslation();\r\n const _t = t(\"View.Settings\", { returnObjects: true });\r\n const storeThemes = props.storeThemes;\r\n const colorTheme = storeThemes.colorTheme;\r\n const typeTheme = colorTheme.type;\r\n const themes = storeThemes.themes;\r\n\r\n return (\r\n \r\n \r\n \r\n {Object.keys(themes).map((key, index) => {\r\n return (\r\n props.changeTheme(key)} name={themes[key].id} title={themes[key].text}>\r\n )\r\n })}\r\n \r\n \r\n )\r\n}\r\n\r\nconst PageMacrosSettings = props => {\r\n const { t } = useTranslation();\r\n const _t = t(\"View.Settings\", { returnObjects: true });\r\n const storeApplicationSettings = props.storeApplicationSettings;\r\n const macrosMode = storeApplicationSettings.macrosMode;\r\n\r\n const changeMacros = value => {\r\n storeApplicationSettings.changeMacrosSettings(value);\r\n props.setMacrosSettings(value);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n changeMacros(2)}>\r\n changeMacros(0)}>\r\n changeMacros(1)}>\r\n \r\n \r\n );\r\n};\r\n\r\nconst ApplicationSettings = inject(\"storeApplicationSettings\", \"storeAppOptions\", \"storeThemes\")(observer(PageApplicationSettings));\r\nconst ThemeSettings = inject(\"storeThemes\")(observer(PageThemeSettings));\r\nconst MacrosSettings = inject(\"storeApplicationSettings\")(observer(PageMacrosSettings));\r\n\r\nexport {ApplicationSettings, MacrosSettings, ThemeSettings};","import React, { Component } from \"react\";\r\nimport { ApplicationSettings } from \"../../view/settings/ApplicationSettings\";\r\nimport { LocalStorage } from '../../../../../common/mobile/utils/LocalStorage.mjs';\r\nimport {observer, inject} from \"mobx-react\";\r\nimport { ThemesContext } from \"../../../../../common/mobile/lib/controller/Themes\";\r\nimport { withTranslation } from 'react-i18next';\r\nimport { f7 } from \"framework7-react\";\r\n\r\nclass ApplicationSettingsController extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.props.storeApplicationSettings.changeUnitMeasurement(Common.Utils.Metric.getCurrentMetric());\r\n this.changeDirectionMode = this.changeDirectionMode.bind(this);\r\n }\r\n\r\n static contextType = ThemesContext;\r\n\r\n setUnitMeasurement(value) {\r\n const api = Common.EditorApi.get();\r\n value = (value !== null) ? parseInt(value) : Common.Utils.Metric.getDefaultMetric();\r\n Common.Utils.Metric.setCurrentMetric(value);\r\n LocalStorage.setItem(\"pe-mobile-settings-unit\", value);\r\n api.asc_SetDocumentUnits((value === Common.Utils.Metric.c_MetricUnits.inch) ? Asc.c_oAscDocumentUnits.Inch : ((value === Common.Utils.Metric.c_MetricUnits.pt) ? Asc.c_oAscDocumentUnits.Point : Asc.c_oAscDocumentUnits.Millimeter));\r\n }\r\n\r\n switchSpellCheck(value) {\r\n LocalStorage.setBool(\"pe-mobile-spellcheck\", value);\r\n Common.EditorApi.get().asc_setSpellCheck(value);\r\n }\r\n\r\n setMacrosSettings(value) {\r\n LocalStorage.setItem(\"pe-mobile-macros-mode\", value);\r\n }\r\n\r\n changeDirectionMode(direction) {\r\n const { t } = this.props;\r\n const _t = t(\"View.Settings\", { returnObjects: true });\r\n\r\n this.props.storeApplicationSettings.changeDirectionMode(direction);\r\n LocalStorage.setItem('mode-direction', direction);\r\n\r\n f7.dialog.create({\r\n title: _t.notcriticalErrorTitle,\r\n text: t('View.Settings.textRestartApplication'),\r\n buttons: [\r\n {\r\n text: _t.textOk\r\n }\r\n ]\r\n }).open();\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\n\r\nexport default inject(\"storeApplicationSettings\", \"storeAppOptions\")(observer(withTranslation()(ApplicationSettingsController)));","import React from 'react';\r\nimport { Page, Navbar, List, ListItem, BlockTitle, Icon } from \"framework7-react\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst Download = props => {\r\n const { t } = useTranslation();\r\n const _t = t(\"View.Settings\", { returnObjects: true });\r\n\r\n return (\r\n \r\n \r\n {_t.textDownloadAs}\r\n \r\n props.onSaveFormat(Asc.c_oAscFileType.PPTX)}>\r\n \r\n \r\n props.onSaveFormat(Asc.c_oAscFileType.PDF)}>\r\n \r\n \r\n props.onSaveFormat(Asc.c_oAscFileType.PDFA)}>\r\n \r\n \r\n props.onSaveFormat(Asc.c_oAscFileType.ODP)}>\r\n \r\n \r\n props.onSaveFormat(Asc.c_oAscFileType.POTX)}>\r\n \r\n \r\n props.onSaveFormat(Asc.c_oAscFileType.OTP)}>\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Download;","import React, { Component } from \"react\";\r\nimport Download from \"../../view/settings/Download\";\r\nimport { Device } from '../../../../../common/mobile/utils/device';\r\nimport { f7 } from 'framework7-react';\r\n\r\nclass DownloadController extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.onSaveFormat = this.onSaveFormat.bind(this);\r\n }\r\n\r\n closeModal() {\r\n if (Device.phone) {\r\n f7.sheet.close('.settings-popup', true);\r\n } else {\r\n f7.popover.close('#settings-popover');\r\n }\r\n }\r\n\r\n onSaveFormat(format) {\r\n const api = Common.EditorApi.get();\r\n if(format) {\r\n api.asc_DownloadAs(new Asc.asc_CDownloadOptions(format));\r\n }\r\n this.closeModal();\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\n\r\nexport default DownloadController;","import React, { Fragment, useContext } from \"react\";\r\nimport { observer, inject } from \"mobx-react\";\r\nimport { Page, Navbar, List, ListItem, BlockTitle } from \"framework7-react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { SettingsContext } from \"../../controller/settings/Settings\";\r\n\r\nconst PagePresentationInfo = (props) => {\r\n const { t } = useTranslation();\r\n const _t = t(\"View.Settings\", { returnObjects: true });\r\n const storeInfo = props.storePresentationInfo;\r\n const dataApp = props.getAppProps();\r\n const dataDoc = JSON.parse(JSON.stringify(storeInfo.dataDoc));\r\n const settingsContext = useContext(SettingsContext);\r\n \r\n return (\r\n \r\n \r\n {dataDoc?.title ? (\r\n \r\n {_t.textPresentationTitle}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {dataDoc?.info?.author || dataDoc?.info?.owner ? (\r\n \r\n {_t.textOwner}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {dataDoc?.info?.folder ? (\r\n \r\n {_t.textLocation}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {dataDoc?.info?.uploaded || dataDoc?.info?.created ? (\r\n \r\n {_t.textUploaded}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {props.title ? (\r\n \r\n {_t.textTitle}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {props.subject ? (\r\n \r\n {_t.textSubject}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {props.description ? (\r\n \r\n {_t.textComment}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {props.modified ? (\r\n \r\n {_t.textLastModified}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {props.modifiedBy ? (\r\n \r\n {_t.textLastModifiedBy}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {props.created ? (\r\n \r\n {_t.textCreated}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {dataApp ? (\r\n \r\n {_t.textApplication}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {props.creators ? (\r\n \r\n {_t.textAuthor}\r\n \r\n {\r\n props.creators.split(/\\s*[,;]\\s*/).map(item => {\r\n return \r\n })\r\n }\r\n \r\n \r\n ) : null}\r\n \r\n );\r\n};\r\n\r\nconst PresentationInfo = inject(\"storePresentationInfo\")(observer(PagePresentationInfo));\r\n\r\nexport default PresentationInfo;","import React, { Component } from \"react\";\r\nimport PresentationInfo from \"../../view/settings/PresentationInfo\";\r\nimport { observer, inject } from \"mobx-react\";\r\n\r\nclass PresentationInfoController extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.docProps = this.getDocProps();\r\n\r\n if(this.docProps) {\r\n this.modified = this.getModified();\r\n this.modifiedBy = this.getModifiedBy();\r\n this.creators = this.getCreators();\r\n this.title = this.getTitle();\r\n this.subject = this.getSubject();\r\n this.description = this.getDescription();\r\n this.created = this.getCreated();\r\n }\r\n }\r\n\r\n getDocProps() {\r\n const api = Common.EditorApi.get();\r\n return api.asc_getCoreProps();\r\n }\r\n\r\n getAppProps() {\r\n const api = Common.EditorApi.get();\r\n const appProps = api.asc_getAppProps();\r\n\r\n if (appProps) {\r\n return `${!appProps.asc_getApplication() ? '' : appProps.asc_getApplication() + ' ' + appProps.asc_getAppVersion()}`;\r\n }\r\n }\r\n\r\n getModified() {\r\n let valueModified = this.docProps.asc_getModified();\r\n const _lang = this.props.storeAppOptions.lang;\r\n\r\n if (valueModified) {\r\n return (\r\n valueModified.toLocaleString(_lang, {\r\n year: \"numeric\",\r\n month: \"2-digit\",\r\n day: \"2-digit\",\r\n }) +\r\n \" \" +\r\n valueModified.toLocaleTimeString(_lang, { timeStyle: \"short\" })\r\n );\r\n }\r\n }\r\n\r\n getModifiedBy() {\r\n let valueModifiedBy = this.docProps.asc_getLastModifiedBy();\r\n\r\n if (valueModifiedBy) {\r\n return AscCommon.UserInfoParser.getParsedName(valueModifiedBy);\r\n }\r\n }\r\n\r\n getCreators() {\r\n return this.docProps.asc_getCreator();\r\n }\r\n\r\n getTitle() {\r\n return this.docProps.asc_getTitle();\r\n }\r\n\r\n getSubject() {\r\n return this.docProps.asc_getSubject();\r\n }\r\n\r\n getDescription() {\r\n return this.docProps.asc_getDescription();\r\n }\r\n\r\n getCreated() {\r\n let value = this.docProps.asc_getCreated();\r\n const _lang = this.props.storeAppOptions.lang;\r\n\r\n if(value) {\r\n return value.toLocaleString(_lang, {year: 'numeric', month: '2-digit', day: '2-digit'}) + ' ' + value.toLocaleTimeString(_lang, {timeStyle: 'short'});\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\n\r\nexport default inject(\"storeAppOptions\")(observer(PresentationInfoController));","import React, {useState} from \"react\";\r\nimport { observer, inject } from \"mobx-react\";\r\nimport { Page, Navbar, List, ListItem, BlockTitle } from \"framework7-react\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst PagePresentationSettings = props => {\r\n const { t } = useTranslation();\r\n const _t = t(\"View.Settings\", { returnObjects: true });\r\n const storePresentationSettings = props.storePresentationSettings;\r\n const slideSizeArr = storePresentationSettings.slideSizes;\r\n const slideSizeIndex = storePresentationSettings.slideSizeIndex;\r\n // console.log(slideSizeIndex);\r\n\r\n return (\r\n \r\n \r\n {_t.textSlideSize}\r\n \r\n props.onSlideSize(slideSizeArr[0])} title={_t.mniSlideStandard}>\r\n props.onSlideSize(slideSizeArr[1])} title={_t.mniSlideWide}>\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nconst PagePresentationColorSchemes = props => {\r\n const { t } = useTranslation();\r\n const curScheme = props.initPageColorSchemes();\r\n const [stateScheme, setScheme] = useState(curScheme);\r\n const storePresentationSettings = props.storePresentationSettings;\r\n const allSchemes = storePresentationSettings.allSchemes;\r\n\r\n return (\r\n \r\n \r\n \r\n {\r\n allSchemes ? allSchemes.map((scheme, index) => {\r\n return (\r\n {\r\n setScheme(index);\r\n setTimeout(() => props.onColorSchemeChange(index), 10);\r\n }}>\r\n
                \r\n \r\n {\r\n scheme.get_colors().map((elem, index) => {\r\n if(index >=2 && index < 7) {\r\n let clr = {background: \"#\" + Common.Utils.ThemeColor.getHexColor(elem.get_r(), elem.get_g(), elem.get_b())};\r\n return (\r\n \r\n )\r\n }\r\n })\r\n }\r\n \r\n \r\n
                \r\n
                \r\n )\r\n }) : null \r\n }\r\n
                \r\n
                \r\n\r\n )\r\n};\r\n\r\nconst PresentationSettings = inject(\"storePresentationSettings\")(observer(PagePresentationSettings));\r\nconst PresentationColorSchemes = inject(\"storePresentationSettings\")(observer(PagePresentationColorSchemes));\r\n\r\nexport { PresentationSettings, PresentationColorSchemes }","import React, {Component} from 'react';\r\nimport { observer, inject } from \"mobx-react\";\r\nimport {PresentationSettings} from '../../view/settings/PresentationSettings';\r\n\r\nclass PresentationSettingsController extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.initSlideSize = this.initSlideSize.bind(this);\r\n this.onSlideSize = this.onSlideSize.bind(this);\r\n this.onColorSchemeChange = this.onColorSchemeChange.bind(this);\r\n this.initSlideSize();\r\n }\r\n\r\n initSlideSize() {\r\n if (!this.init) {\r\n const api = Common.EditorApi.get();\r\n const slideSizes = [\r\n [9144000, 6858000, Asc.c_oAscSlideSZType.SzScreen4x3], \r\n [12192000, 6858000, Asc.c_oAscSlideSZType.SzCustom]\r\n ];\r\n\r\n this.props.storePresentationSettings.initSlideSizes(slideSizes);\r\n this.props.storePresentationSettings.changeSizeIndex(api.get_PresentationWidth(), api.get_PresentationHeight());\r\n this.init = true;\r\n }\r\n }\r\n\r\n onSlideSize(slideSizeArr) {\r\n const api = Common.EditorApi.get();\r\n\r\n let ratio = slideSizeArr[1] / slideSizeArr[0];\r\n let currentHeight = this.props.storePresentationSettings.currentPageSize.height;\r\n let currentPageSize = {\r\n width: ((currentHeight || slideSizeArr[1]) / ratio),\r\n height: currentHeight\r\n };\r\n // api.changeSlideSize(slideSizeArr[0], slideSizeArr[1], slideSizeArr[2]);\r\n api.changeSlideSize(currentPageSize.width, currentPageSize.height, slideSizeArr[2]);\r\n }\r\n\r\n // Color Schemes\r\n\r\n initPageColorSchemes() {\r\n const api = Common.EditorApi.get();\r\n return api.asc_GetCurrentColorSchemeIndex();\r\n }\r\n\r\n onColorSchemeChange(newScheme) {\r\n const api = Common.EditorApi.get();\r\n api.asc_ChangeColorSchemeByIdx(newScheme);\r\n this.props.storeTableSettings.setStyles([], 'default');\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default inject(\"storePresentationSettings\", \"storeTableSettings\")(observer(PresentationSettingsController));","import React, { Fragment } from 'react';\r\nimport { observer, inject } from \"mobx-react\";\r\nimport { Page, Navbar, Link } from \"framework7-react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Device } from '../../utils/device';\r\n\r\nconst PageAbout = props => {\r\n const { t } = useTranslation();\r\n const _t = t(\"About\", { returnObjects: true });\r\n const store = props.storeAppOptions;\r\n const isCanBranding = store.canBranding;\r\n const licInfo = isCanBranding ? store.customization : null;\r\n const customer = licInfo ? licInfo.customer : null;\r\n const nameCustomer = customer ? customer.name : null;\r\n const mailCustomer = customer ? customer.mail : null;\r\n const phoneCustomer = customer ? customer.phone : null;\r\n const addressCustomer = customer ? customer.address : null;\r\n const urlCustomer = customer ? customer.www : null;\r\n const infoCustomer = customer ? customer.info : null;\r\n const logoCustomer = customer ? customer.logo : null;\r\n\r\n const publisherUrl = __PUBLISHER_URL__, \r\n publisherPrintUrl = publisherUrl.replace(/https?:\\/{2}|\\/$/g,\"\");\r\n const publisherName = __PUBLISHER_NAME__.replace(/\\\\\"/g, '\"');\r\n \r\n const editors = {\r\n de: 'DOCUMENT EDITOR',\r\n pe: 'PRESENTATION EDITOR',\r\n sse: 'SPREADSHEET EDITOR'\r\n };\r\n\r\n const nameEditor = (_t.textEditor || editors[editorType]).toUpperCase();\r\n\r\n return (\r\n \r\n \r\n {licInfo && typeof licInfo == 'object' && typeof(customer) == 'object' ? (\r\n \r\n
                \r\n {logoCustomer && logoCustomer.length ? (\r\n
                \r\n \"\"\r\n
                \r\n ) : null}\r\n
                \r\n
                \r\n

                {nameEditor}

                \r\n

                {_t.textVersion} {__PRODUCT_VERSION__}

                \r\n
                \r\n {mailCustomer || phoneCustomer ? (\r\n
                \r\n {mailCustomer && mailCustomer.length ? (\r\n

                \r\n {mailCustomer}\r\n

                \r\n ) : null}\r\n {phoneCustomer && phoneCustomer.length ? (\r\n

                \r\n {phoneCustomer}\r\n

                \r\n ) : null}\r\n
                \r\n ) : null}\r\n {addressCustomer && addressCustomer.length ? (\r\n
                \r\n

                \r\n {addressCustomer}\r\n

                \r\n
                \r\n ) : null}\r\n {nameCustomer || infoCustomer || urlCustomer ? (\r\n
                \r\n {nameCustomer && nameCustomer.length ? (\r\n

                {nameCustomer}

                \r\n ) : null}\r\n {infoCustomer && infoCustomer.length ? (\r\n

                {infoCustomer}

                \r\n ) : null}\r\n {urlCustomer && urlCustomer.length ? (\r\n

                \r\n \r\n {urlCustomer}\r\n \r\n

                \r\n ) : null}\r\n
                \r\n ) : null}\r\n
                \r\n

                \r\n {__PUBLISHER_ADDRESS__}\r\n

                \r\n
                \r\n
                \r\n

                {publisherName}

                \r\n

                \r\n {publisherPrintUrl}\r\n

                \r\n
                \r\n
                \r\n ) : (\r\n \r\n
                \r\n
                \r\n

                {nameEditor}

                \r\n

                {_t.textVersion} {__PRODUCT_VERSION__}

                \r\n
                \r\n
                \r\n

                \r\n {__PUBLISHER_ADDRESS__}\r\n

                \r\n
                \r\n
                \r\n

                {publisherName}

                \r\n

                \r\n {publisherPrintUrl}\r\n

                \r\n
                \r\n
                \r\n )}\r\n
                \r\n );\r\n};\r\n\r\nconst About = inject(\"storeAppOptions\")(observer(PageAbout));\r\nAbout.appVersion = () => (__PRODUCT_VERSION__).match(/\\d+.\\d+.\\d+/)[0]; // skip build number\r\nAbout.compareVersions = () => /d$/.test(__PRODUCT_VERSION__);\r\nAbout.developVersion = () => /(?:d|debug)$/.test(__PRODUCT_VERSION__);\r\n\r\n\r\nexport default About;","import React, { useContext } from 'react';\nimport { Page, Navbar, NavRight, Link, Icon, ListItem, List, f7 } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport { Device } from '../../../../../common/mobile/utils/device';\nimport { observer, inject } from \"mobx-react\";\nimport { MainContext } from '../../page/main';\nimport { SettingsContext } from '../../controller/settings/Settings';\n\nconst SettingsPage = inject('storeAppOptions', 'storeToolbarSettings', 'storePresentationInfo')(observer(props => {\n const { t } = useTranslation();\n const _t = t('View.Settings', {returnObjects: true});\n const {openOptions, isBranding} = useContext(MainContext);\n const settingsContext = useContext(SettingsContext);\n const appOptions = props.storeAppOptions;\n const canUseHistory = appOptions.canUseHistory;\n const storeToolbarSettings = props.storeToolbarSettings;\n const disabledPreview = storeToolbarSettings.countPages <= 0;\n const storePresentationInfo = props.storePresentationInfo;\n const docTitle = storePresentationInfo.dataDoc ? storePresentationInfo.dataDoc.title : '';\n const canCloseEditor = appOptions.canCloseEditor;\n const closeButtonText = canCloseEditor && appOptions.customization.close.text;\n const navbar =\n \n
                {docTitle}
                \n {Device.phone && {_t.textDone}}\n
                ;\n\n const onOpenOptions = name => {\n settingsContext.closeModal();\n openOptions(name);\n }\n\n let _isEdit = false,\n _canDownload = false,\n _canDownloadOrigin = false,\n _canAbout = true,\n _canHelp = true,\n _canPrint = false,\n _canFeedback = true,\n _canDisplayInfo = true;\n\n if (appOptions.isDisconnected) {\n _isEdit = false;\n if (!appOptions.enableDownload)\n _canPrint = _canDownload = _canDownloadOrigin = false;\n } else {\n _isEdit = appOptions.isEdit;\n _canDownload = appOptions.canDownload;\n _canDownloadOrigin = appOptions.canDownloadOrigin;\n _canPrint = appOptions.canPrint;\n\n if (appOptions.customization && appOptions.canBrandingExt) {\n _canAbout = appOptions.customization.about !== false;\n }\n\n if (appOptions.customization) {\n _canHelp = appOptions.customization.help !== false;\n _canFeedback = appOptions.customization.feedback !== false;\n _canDisplayInfo = appOptions.customization.info !== false;\n }\n }\n \n return (\n \n {navbar}\n \n {!props.inPopover &&\n \n \n \n }\n {window.matchMedia(\"(max-width: 374px)\").matches ?\n onOpenOptions('coauth')} className='no-indicator'>\n \n \n : null}\n {_isEdit && \n \n \n \n }\n \n \n \n {_isEdit && canUseHistory && \n {\n if(Device.phone) {\n onOpenOptions('history');\n }\n }}>\n \n \n }\n {_canDownload &&\n \n \n \n }\n {_canDownloadOrigin &&\n \n \n \n }\n {_canPrint &&\n \n \n \n }\n {!(!_canDisplayInfo && isBranding) &&\n \n \n \n }\n {_canHelp &&\n \n \n \n }\n {_canAbout &&\n \n \n \n }\n {_canFeedback &&\n \n \n \n }\n {canCloseEditor &&\n Common.Notifications.trigger('close')}>\n }\n \n \n )\n}));\n\nexport default SettingsPage;","import React, { useCallback, useEffect, useState } from 'react';\nimport { Page, Navbar, BlockTitle, List, ListItem, Icon, NavRight, Link } from \"framework7-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { observer, inject } from \"mobx-react\";\nimport { Device } from '../../utils/device';\n\nconst VersionHistoryView = inject('storeVersionHistory', 'users')(observer(props => {\n const { t } = useTranslation();\n const usersStore = props.users;\n const historyStore = props.storeVersionHistory;\n const currentVersion = historyStore.currentVersion;\n const arrVersions = historyStore.arrVersions;\n const [filteredVersions, setFilteredVersions] = useState([]);\n const isNavigate = props.isNavigate;\n const usersVersions = historyStore.usersVersions;\n\n useEffect(() => {\n if(arrVersions.length > 0) {\n const filteredVersions = groupByVersions(arrVersions);\n setFilteredVersions(filteredVersions);\n }\n }, [arrVersions]);\n\n const handleClickRevision = useCallback(version => {\n if(version !== currentVersion) {\n props.onSelectRevision(version);\n }\n }, []);\n\n function groupByVersions(arr) {\n return arr.reduce((result, revision) => {\n const value = revision.version;\n \n const arrVersion = result.find(arr => {\n return arr[0].version === value;\n });\n \n if (arrVersion) {\n arrVersion.push(revision);\n } else {\n result.push([revision]);\n }\n \n return result;\n }, []);\n }\n\n return (\n \n \n {Device.phone ?\n \n \n \n \n \n : !isNavigate &&\n \n \n \n \n \n }\n \n {filteredVersions.length > 0 ? \n filteredVersions.map((versions, index) => {\n return (\n \n {`${versions.find(ver => ver.selected) ? t('Common.VersionHistory.textCurrent') + ' - ' : ''} ${t('Common.VersionHistory.textVersion')} ${versions[0].revision}`}\n \n {versions.map((version, index) => {\n return (\n handleClickRevision(version)}>\n
                user.id === version.userid).color}}>{usersStore.getInitials(version.username)}
                \n {(version === currentVersion && !version.selected && version.canRestore) &&\n
                \n \n
                \n }\n
                \n )\n })}\n
                \n
                \n )\n }) : null}\n
                \n )\n}));\n\nexport default VersionHistoryView;","import React, { useEffect, useRef } from 'react';\nimport { observer, inject } from \"mobx-react\";\nimport VersionHistoryView from '../view/VersionHistory';\nimport { f7, Sheet, Popover, View } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport { Device } from '../../../../common/mobile/utils/device';\nimport { getUserColor } from '../../utils/getUserColor';\n\nconst VersionHistoryController = inject('storeAppOptions', 'storeVersionHistory')(observer(props => {\n const api = Common.EditorApi.get();\n const appOptions = props.storeAppOptions;\n const isViewer = appOptions.isViewer;\n const historyStore = props.storeVersionHistory;\n const isVersionHistoryMode = historyStore.isVersionHistoryMode;\n const arrVersionsHistory = historyStore.arrVersions;\n const fileTypes = {\n de: 'docx',\n pe: 'pptx',\n sse: 'xslx'\n };\n const fileType = fileTypes[window.editorType];\n const { t } = useTranslation();\n\n let currentChangeId = -1;\n let currentDocId = '';\n let currentDocIdPrev = '';\n let currentServerVersion = 0;\n let currentUserId = '';\n let currentUserName = '';\n let currentUserColor = '';\n let currentDateCreated = '';\n let isFromSelectRevision;\n let currentRev = 0;\n let timerId;\n\n const timeoutIdRef = useRef(null);\n const currentArrColors = useRef(null);\n\n useEffect(() => {\n api.asc_enableKeyEvents(false);\n\n if(arrVersionsHistory.length < 1) {\n Common.Gateway.requestHistory();\n Common.Gateway.on('refreshhistory', onRefreshHistory);\n Common.Gateway.on('sethistorydata', onSetHistoryData);\n\n api.asc_registerCallback('asc_onDownloadUrl', onDownloadUrl);\n api.asc_registerCallback('asc_onExpiredToken', onExpiredToken);\n }\n\n if(window.editorType === 'de') {\n if(!isViewer) {\n appOptions.changeViewerMode(true);\n api.asc_addRestriction(Asc.c_oAscRestrictionType.View);\n }\n }\n \n if(!isVersionHistoryMode) {\n historyStore.changeVersionHistoryMode(true);\n }\n \n if(!props.isNavigate) {\n if(Device.phone) {\n f7.sheet.open('#version-history-sheet', true);\n } else {\n f7.popover.open('#version-history-popover', '#btn-open-history');\n }\n }\n\n return () => {\n api.asc_enableKeyEvents(true);\n api.asc_unregisterCallback('asc_onDownloadUrl', onDownloadUrl);\n api.asc_unregisterCallback('asc_onExpiredToken', onExpiredToken);\n }\n }, []);\n\n const onExpiredToken = () => {\n setTimeout(() => {\n Common.Gateway.requestHistoryData(currentRev);\n }, 10);\n }\n\n const onDownloadUrl = (url, fileType) => {\n if (isFromSelectRevision) {\n Common.Gateway.requestRestore(isFromSelectRevision, url, fileType);\n }\n\n isFromSelectRevision = null;\n }\n\n const onRefreshHistory = opts => {\n if (!appOptions.canUseHistory) return;\n \n if (opts.data.error || !opts.data.history) {\n if (arrVersions.length) {\n const arr = arrVersions.map(version => {\n version.canRestore = false;\n return version;\n });\n\n historyStore.setVersions(arr);\n }\n\n f7.dialog.create({\n title: t('Common.VersionHistory.notcriticalErrorTitle'),\n text: (opts.data.error) ? opts.data.error : t('Common.VersionHistory.txtErrorLoadHistory'),\n buttons: [\n {\n text: t('Common.VersionHistory.textOk')\n }\n ]\n }).open();\n } else {\n api.asc_coAuthoringDisconnect();\n\n const versions = opts.data.history;\n let arrVersions = [];\n let arrColors = [];\n let ver, version, currentVersion = null, group = -1, prev_ver = -1, docIdPrev = '', user = null, usersCnt = 0;\n\n for (ver = versions.length - 1; ver >= 0; ver--) {\n version = versions[ver];\n\n if (version.versionGroup === undefined || version.versionGroup === null) {\n version.versionGroup = version.version;\n }\n\n if (version) {\n if (!version.user) version.user = {};\n\n docIdPrev = (ver > 0 && versions[ver - 1]) ? versions[ver - 1].key : version.key + '0';\n user = historyStore.findUserById(version.user.id);\n\n if (!user) {\n const color = getUserColor(version.user.id || version.user.name || t('Common.VersionHistory.textAnonymous'), true);\n\n user = {\n id: version.user.id,\n username: version.user.name || t('Common.VersionHistory.textAnonymous'),\n colorval: color,\n color: generateUserColor(color),\n \n };\n\n historyStore.addUser(user);\n }\n\n arrVersions.push({\n version: version.versionGroup,\n revision: version.version,\n userid: version.user.id,\n username: version.user.name || t('Common.VersionHistory.textAnonymous'),\n usercolor: user.color,\n created: version.created,\n docId: version.key,\n markedAsVersion: (group !== version.versionGroup),\n selected: (opts.data.currentVersion == version.version),\n canRestore: appOptions.canHistoryRestore && (ver < versions.length - 1),\n isExpanded: true,\n serverVersion: version.serverVersion,\n fileType,\n isRevision: true\n });\n\n if (opts.data.currentVersion == version.version) {\n currentVersion = arrVersions[arrVersions.length - 1];\n }\n\n group = version.versionGroup;\n\n if (prev_ver !== version.version) {\n prev_ver = version.version;\n arrColors.reverse();\n\n for (let i = 0; i < arrColors.length; i++) {\n arrVersions[arrVersions.length - i - 2].arrColors = arrColors;\n }\n\n arrColors = [];\n }\n\n arrColors.push(user.colorval);\n\n let changes = version.changes, change, i;\n\n if (changes && changes.length > 0) {\n arrVersions[arrVersions.length - 1].docIdPrev = docIdPrev;\n\n if (version.serverVersion && version.serverVersion == appOptions.buildVersion) {\n arrVersions[arrVersions.length - 1].changeid = changes.length - 1;\n arrVersions[arrVersions.length - 1].hasChanges = changes.length > 1;\n\n for (i = changes.length - 2; i >= 0; i--) {\n change = changes[i];\n user = historyStore.findUserById(change.user.id);\n\n if (!user) {\n const color = getUserColor(change.user.id || change.user.name || t('Common.VersionHistory.textAnonymous'), true);\n\n user = {\n id: change.user.id,\n username: change.user.name || t('Common.VersionHistory.textAnonymous'),\n colorval: color,\n color: generateUserColor(color),\n };\n\n historyStore.addUser(user);\n }\n\n arrVersions.push({\n version: version.versionGroup,\n revision: version.version,\n changeid: i,\n userid: change.user.id,\n username: change.user.name || t('Common.VersionHistory.textAnonymous'),\n usercolor: user.color,\n created: change.created,\n docId: version.key,\n docIdPrev: docIdPrev,\n selected: false,\n canRestore: appOptions.canHistoryRestore && appOptions.canDownload,\n isRevision: false,\n isVisible: true,\n serverVersion: version.serverVersion,\n fileType\n });\n\n arrColors.push(user.colorval);\n }\n }\n } else if (ver == 0 && versions.length == 1) {\n arrVersions[arrVersions.length - 1].docId = version.key + '1';\n }\n }\n }\n\n if (arrColors.length > 0) {\n arrColors.reverse();\n\n for (let i = 0; i < arrColors.length; i++) {\n arrVersions[arrVersions.length - i - 1].arrColors = arrColors;\n }\n\n arrColors = [];\n }\n\n historyStore.setVersions(arrVersions);\n\n if (currentVersion === null && historyStore.arrVersions.length > 0) {\n arrVersions[0].selected = true;\n currentVersion = JSON.parse(JSON.stringify(arrVersions[0]));\n \n historyStore.setVersions([...arrVersions]);\n historyStore.changeVersion(currentVersion);\n } else if(!historyStore.currentVersion) {\n onSelectRevision(currentVersion);\n }\n }\n }\n\n const generateUserColor = color => {\n return '#' + color.toString(16);\n }\n\n const onSetHistoryData = opts => {\n if (!appOptions.canUseHistory) return;\n\n if (timeoutIdRef.current) {\n clearTimeout(timeoutIdRef.current);\n timerId = 0;\n }\n\n if (opts.data.error) {\n f7.dialog.create({\n title: t('Common.VersionHistory.notcriticalErrorTitle'),\n text: opts.data.error,\n buttons: [\n {\n text: t('Common.VersionHistory.textOk')\n }\n ]\n }).open();\n } else {\n const data = opts.data;\n \n if (data !== null) {\n let rev, revisions = historyStore.findRevisions(data.version), \n urlGetTime = new Date(),\n diff = (!opts.data.previous || currentChangeId === undefined) ? null : opts.data.changesUrl,\n url = !diff && opts.data.previous ? opts.data.previous.url : opts.data.url,\n fileType = !diff && opts.data.previous ? opts.data.previous.fileType : opts.data.fileType,\n docId = opts.data.key ? opts.data.key : currentDocId,\n docIdPrev = opts.data.previous && opts.data.previous.key ? opts.data.previous.key : currentDocIdPrev,\n token = opts.data.token;\n\n if (revisions && revisions.length > 0) {\n for(let i = 0; i < revisions.length; i++) {\n rev = revisions[i];\n rev.url = url;\n rev.urlDiff = diff;\n rev.urlGetTime = urlGetTime;\n\n if (opts.data.key) {\n rev.docId = docId;\n rev.docIdPrev = docIdPrev;\n }\n\n rev.token = token;\n\n if(fileType) {\n rev.fileType = fileType;\n }\n }\n }\n\n const hist = new Asc.asc_CVersionHistory();\n \n hist.asc_setUrl(url);\n hist.asc_setUrlChanges(diff);\n hist.asc_setDocId(!diff ? docId : docIdPrev);\n hist.asc_setCurrentChangeId(currentChangeId);\n hist.asc_setArrColors(currentArrColors.current);\n hist.asc_setToken(token);\n hist.asc_setIsRequested(true);\n hist.asc_setServerVersion(currentServerVersion);\n hist.asc_SetUserId(currentUserId);\n hist.asc_SetUserName(currentUserName);\n hist.asc_SetUserColor(currentUserColor);\n hist.asc_SetDateOfRevision(currentDateCreated);\n\n api.asc_showRevision(hist);\n currentRev = data.version;\n\n const selectedRev = revisions.find(revision => revision.selected);\n \n if(selectedRev) {\n historyStore.changeVersion(selectedRev);\n } \n }\n }\n };\n\n const onRestoreRevision = revision => {\n const isRevision = revision.isRevision;\n\n if (isRevision) {\n f7.dialog.create({\n title: t('Common.VersionHistory.titleWarningRestoreVersion'),\n text: t('Common.VersionHistory.textWarningRestoreVersion'),\n buttons: [\n {\n text: t('Common.VersionHistory.textCancel'),\n bold: true\n }, \n {\n text: t('Common.VersionHistory.textRestore'),\n onClick: () => {\n Common.Gateway.requestRestore(revision.revision, undefined, revision.fileType);\n }\n }\n ]\n }).open();\n } else {\n isFromSelectRevision = revision.revision;\n\n const fileType = Asc.c_oAscFileType[(revision.fileType || '').toUpperCase()] || Asc.c_oAscFileType.DOCX;\n api.asc_DownloadAs(new Asc.asc_CDownloadOptions(fileType, true));\n }\n }\n\n const onSelectRevision = version => {\n const rev = version.revision;\n const url = version.url;\n const urlGetTime = new Date();\n\n historyStore.changeVersion(version);\n\n currentRev = rev;\n currentChangeId = version.changeid;\n currentDocId = version.docId;\n currentDocIdPrev = version.docIdPrev;\n currentArrColors.current = version.arrColors;\n currentServerVersion = version.serverVersion;\n currentUserId = version.userid;\n currentUserName = version.username;\n currentUserColor = version.usercolor;\n currentDateCreated = version.created;\n\n if (!url || (urlGetTime - version.urlGetTime > 5 * 60000)) {\n if (!timerId) {\n timeoutIdRef.current = setTimeout(() => {\n timerId = 0;\n }, 30000);\n\n setTimeout(() => {\n Common.Gateway.requestHistoryData(rev);\n }, 10);\n }\n } else {\n const urlDiff = version.urlDiff;\n const token = version.token;\n const hist = new Asc.asc_CVersionHistory();\n\n hist.asc_setDocId(!urlDiff ? currentDocId : currentDocIdPrev);\n hist.asc_setUrl(url);\n hist.asc_setUrlChanges(urlDiff);\n hist.asc_setCurrentChangeId(currentChangeId);\n hist.asc_setArrColors(currentArrColors.current);\n hist.asc_setToken(token);\n hist.asc_setIsRequested(false);\n hist.asc_setServerVersion(currentServerVersion);\n hist.asc_SetUserId(currentUserId);\n hist.asc_SetUserName(currentUserName);\n hist.asc_SetUserColor(currentUserColor);\n hist.asc_SetDateOfRevision(currentDateCreated);\n\n api.asc_showRevision(hist);\n }\n }\n\n return (\n props.isNavigate ?\n !Device.phone &&\n \n :\n !Device.phone ?\n props.onclosed()}>\n \n \n \n \n :\n props.onclosed()}>\n \n \n\n )\n}));\n\nexport default VersionHistoryController;\n","import React, { useContext, useEffect } from 'react';\nimport { View, Popup, Popover, f7 } from 'framework7-react';\nimport { Device } from '../../../../../common/mobile/utils/device';\nimport ApplicationSettingsController from \"../../controller/settings/ApplicationSettings\";\nimport { MacrosSettings, ThemeSettings } from \"./ApplicationSettings\";\nimport DownloadController from \"../../controller/settings/Download\";\nimport PresentationInfoController from \"../../controller/settings/PresentationInfo\";\nimport PresentationSettingsController from \"../../controller/settings/PresentationSettings\";\nimport { PresentationColorSchemes } from \"./PresentationSettings\";\nimport About from '../../../../../common/mobile/lib/view/About';\nimport SettingsPage from './SettingsPage';\nimport { MainContext } from '../../page/main';\nimport VersionHistoryController from '../../../../../common/mobile/lib/controller/VersionHistory';\n\nconst routes = [\n {\n path: '/settings-page/',\n component: SettingsPage,\n keepAlive: true\n },\n {\n path: '/application-settings/',\n component: ApplicationSettingsController\n },\n {\n path: '/macros-settings/',\n component: MacrosSettings\n }, \n {\n path: '/theme-settings/',\n component: ThemeSettings\n },\n {\n path: '/download/',\n component: DownloadController\n },\n {\n path: '/presentation-info/',\n component: PresentationInfoController\n },\n {\n path: '/presentation-settings/',\n component: PresentationSettingsController\n },\n {\n path: '/color-schemes/',\n component: PresentationColorSchemes\n },\n {\n path: '/about/',\n component: About\n },\n // Version History \n {\n path: '/version-history',\n component: VersionHistoryController,\n options: {\n props: {\n isNavigate: true\n }\n }\n },\n];\n\nroutes.forEach(route => {\n route.options = {\n ...route.options,\n transition: 'f7-push'\n };\n});\n\nconst SettingsView = () => {\n const mainContext = useContext(MainContext);\n\n useEffect(() => {\n if(Device.phone) {\n f7.popup.open('.settings-popup');\n } else {\n f7.popover.open('#settings-popover', '#btn-settings');\n }\n }, []);\n\n return (\n !Device.phone ?\n mainContext.closeOptions('settings')}>\n \n \n \n :\n mainContext.closeOptions('settings')}>\n \n \n \n \n )\n};\n\nexport default SettingsView;","import React, { createContext } from 'react';\nimport { Device } from '../../../../../common/mobile/utils/device';\nimport SettingsView from '../../view/settings/Settings';\nimport { f7 } from 'framework7-react';\nimport { observer, inject } from \"mobx-react\";\nimport { useTranslation } from 'react-i18next';\n\nexport const SettingsContext = createContext();\n\nconst SettingsController = props => {\n const appOptions = props.storeAppOptions;\n const storePresentationInfo = props.storePresentationInfo;\n const docExt = storePresentationInfo.dataDoc.fileType;\n const { t } = useTranslation();\n\n const closeModal = () => {\n if (Device.phone) {\n f7.sheet.close('.settings-popup', false);\n } else {\n f7.popover.close('#settings-popover', false);\n }\n };\n\n const onPrint = () => {\n const api = Common.EditorApi.get();\n\n closeModal();\n setTimeout(() => {\n api.asc_Print();\n }, 400);\n };\n\n const showHelp = () => {\n // let url = '{{HELP_URL}}';\n let url = __HELP_URL__;\n // let url = 'https://helpcenter.onlyoffice.com';\n\n if (url.charAt(url.length-1) !== '/') {\n url += '/';\n }\n\n if (Device.sailfish || Device.android) {\n url+='mobile-applications/documents/mobile-web-editors/android/index.aspx';\n } \n else {\n url+='mobile-applications/documents/mobile-web-editors/ios/index.aspx';\n }\n\n closeModal();\n window.open(url, \"_blank\");\n };\n\n const showFeedback = () => {\n let config = props.storeAppOptions.config;\n\n closeModal();\n if(config && !!config.feedback && !!config.feedback.url) {\n window.open(config.feedback.url, \"_blank\");\n } else window.open(__SUPPORT_URL__, \"_blank\");\n };\n\n const onDownloadOrigin = () => {\n closeModal();\n setTimeout(() => {\n Common.EditorApi.get().asc_DownloadOrigin();\n }, 0);\n };\n\n const changeTitleHandler = () => {\n if(!appOptions.canRename) return;\n\n const docTitle = storePresentationInfo.dataDoc?.title ?? '';\n const api = Common.EditorApi.get();\n api.asc_enableKeyEvents(true);\n\n f7.dialog.create({\n title: t('Toolbar.textRenameFile'),\n text : t('Toolbar.textEnterNewFileName'),\n content: Device.ios ?\n '
                ' : '
                ',\n cssClass: 'dlg-adv-options',\n buttons: [\n {\n text: t('View.Edit.textCancel')\n },\n {\n text: t('View.Edit.textOk'),\n cssClass: 'btn-change-title',\n bold: true,\n close: false,\n onClick: () => {\n const titleFieldValue = document.querySelector('#modal-title').value;\n\n if(titleFieldValue.trim().length) {\n changeTitle(titleFieldValue);\n f7.dialog.close();\n }\n }\n }\n ],\n on: {\n opened: () => {\n const nameDoc = docTitle.split('.')[0];\n const titleField = document.querySelector('#modal-title');\n const btnChangeTitle = document.querySelector('.btn-change-title');\n\n titleField.value = nameDoc;\n titleField.focus();\n titleField.select();\n\n titleField.addEventListener('input', () => {\n if(titleField.value.trim().length) {\n btnChangeTitle.classList.remove('disabled');\n } else {\n btnChangeTitle.classList.add('disabled');\n }\n });\n }\n }\n }).open();\n };\n\n const cutDocName = name => {\n if(name.length <= docExt.length) return name;\n const idx = name.length - docExt.length;\n\n return name.substring(idx) == docExt ? name.substring(0, idx) : name;\n };\n\n const changeTitle = (name) => {\n const api = Common.EditorApi.get();\n const currentTitle = `${name}.${docExt}`;\n let formatName = name.trim();\n\n if(formatName.length > 0 && cutDocName(currentTitle) !== formatName) {\n if(/[\\t*\\+:\\\"<>?|\\\\\\\\/]/gim.test(formatName)) {\n f7.dialog.create({\n title: t('View.Edit.notcriticalErrorTitle'),\n text: t('View.Edit.textInvalidName') + '*+:\\\"<>?|\\/',\n buttons: [\n {\n text: t('View.Edit.textOk'),\n close: true\n }\n ]\n }).open();\n } else {\n const wopi = appOptions.wopi;\n formatName = cutDocName(formatName);\n\n if(wopi) {\n api.asc_wopi_renameFile(formatName);\n } else {\n Common.Gateway.requestRename(formatName);\n }\n\n const newTitle = `${formatName}.${docExt}`;\n storePresentationInfo.changeTitle(newTitle);\n }\n }\n }\n\n return (\n \n \n \n );\n};\n\nexport default inject(\"storeAppOptions\", \"storePresentationInfo\")(observer(SettingsController));","import React, {useState} from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport {List, ListItem, Page, Navbar, Icon, ListButton, ListInput, BlockTitle} from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\n\nconst PageLinkSettings = props => {\n const { t } = useTranslation();\n const _t = t('View.Add', {returnObjects: true});\n const [stateValue, setValue] = useState('');\n return (\n \n \n {_t.textAddress}\n \n {setValue(event.target.value)}}\n >\n \n \n \n {props.onInsertByUrl(stateValue)}}>\n \n \n )\n};\n\nconst AddImage = props => {\n const { t } = useTranslation();\n const _t = t('View.Add', {returnObjects: true});\n return (\n \n \n \n {props.onInsertByFile()}}>\n \n \n \n \n \n \n \n )\n};\n\nexport {AddImage, PageLinkSettings as PageImageLinkSettings};","import React, {Component} from 'react';\nimport { f7 } from 'framework7-react';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport { withTranslation} from 'react-i18next';\n\nimport {AddImage} from '../../view/add/AddImage';\n\nclass AddImageController extends Component {\n constructor (props) {\n super(props);\n this.onInsertByFile = this.onInsertByFile.bind(this);\n this.onInsertByUrl = this.onInsertByUrl.bind(this);\n }\n\n closeModal () {\n if ( Device.phone ) {\n f7.sheet.close('.add-popup', true);\n } else {\n f7.popover.close('#add-popover');\n }\n }\n\n onInsertByFile () {\n const api = Common.EditorApi.get();\n api.asc_addImage();\n this.closeModal();\n }\n\n onInsertByUrl (value) {\n const { t } = this.props;\n const _t = t(\"View.Add\", { returnObjects: true });\n\n const _value = value.replace(/ /g, '');\n\n if (_value) {\n if ((/((^https?)|(^ftp)):\\/\\/.+/i.test(_value))) {\n this.closeModal();\n const api = Common.EditorApi.get();\n api.AddImageUrl([_value]);\n } else {\n f7.dialog.alert(_t.txtNotUrl, _t.notcriticalErrorTitle);\n }\n } else {\n f7.dialog.alert(_t.textEmptyImgUrl, _t.notcriticalErrorTitle);\n }\n }\n\n render () {\n return (\n \n )\n }\n}\n\nconst AddImageWithTranslation = withTranslation()(AddImageController);\n\nexport {AddImageWithTranslation as AddImageController};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\n\nconst SkeletonBlock = ({\n tag: Tag = 'div',\n width,\n height,\n borderRadius,\n effect,\n className,\n style,\n children,\n ...other\n} = {}) => {\n const skeletonStyle = style || {};\n if (width) skeletonStyle.width = width;\n if (height) skeletonStyle.height = height;\n if (borderRadius) skeletonStyle.borderRadius = borderRadius;\n const skeletonClassName = ['skeleton-block', effect && `skeleton-effect-${effect}`, className].filter(c => !!c).join(' ');\n return /*#__PURE__*/React.createElement(Tag, _extends({\n style: skeletonStyle,\n className: skeletonClassName\n }, other), children);\n};\n\nexport default SkeletonBlock;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\nimport multiplySvgPoints from '../utils/multiply-svg-points.js';\n\nconst SkeletonAvatar = ({\n tag: Tag = 'span',\n size = 48,\n color,\n showIcon = true,\n iconColor,\n borderRadius = '50%',\n effect,\n className,\n children,\n ...other\n} = {}) => {\n const skeletonClassName = ['skeleton-avatar', effect && `skeleton-effect-${effect}`, className].filter(c => !!c).join(' ');\n\n function multiplyPoints(pointsString) {\n return multiplySvgPoints(pointsString, 56, size, size);\n }\n\n return /*#__PURE__*/React.createElement(Tag, _extends({\n className: skeletonClassName\n }, other), /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: `0 0 ${size} ${size}`,\n preserveAspectRatio: \"none\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: size,\n height: size,\n fillRule: \"evenodd\",\n style: {\n fill: color\n },\n rx: borderRadius\n }), showIcon && /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: iconColor\n },\n d: multiplyPoints('M28.22461,27.1590817 C34.9209931,27.1590817 40.6829044,21.1791004 40.6829044,13.3926332 C40.6829044,5.69958662 34.8898972,0 28.22461,0 C21.5594557,0 15.7663156,5.82423601 15.7663156,13.4549579 C15.7663156,21.1791004 21.5594557,27.1590817 28.22461,27.1590817 Z M8.66515427,56 L47.7841986,56 C52.6739629,56 54.4181241,54.5984253 54.4181241,51.8576005 C54.4181241,43.8219674 44.358068,32.7341519 28.22461,32.7341519 C12.0600561,32.7341519 2,43.8219674 2,51.8576005 C2,54.5984253 3.74402832,56 8.66515427,56 Z')\n })), children);\n};\n\nexport default SkeletonAvatar;","// eslint-disable-next-line\nimport { SkeletonBlock } from 'skeleton-elements/react';\nexport default SkeletonBlock;","import React, {useState} from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport {List, ListItem, Page, Navbar, Icon, ListButton, ListInput, BlockTitle, SkeletonBlock, Segmented, Button} from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from \"../../../../../common/mobile/utils/device\";\n\nconst PageTable = props => {\n const { t } = useTranslation();\n const _t = t('View.Add', {returnObjects: true});\n const storeTableSettings = props.storeTableSettings;\n const styles = storeTableSettings.arrayStylesDefault;\n\n return (\n \n \n
                \n
                  \n {!styles.length ?\n Array.from({ length: 70 }).map((item,index) => (\n
                • \n \n \n \n \n \n
                • \n )) :\n styles.map((style, index) => {\n return (\n
                • {props.onStyleClick(style.templateId)}}>\n \n
                • \n )\n })\n }\n
                \n
                \n
                \n )\n};\n\nconst AddOther = props => {\n const { t } = useTranslation();\n const _t = t('View.Add', {returnObjects: true});\n const showInsertLink = props.storeLinkSettings.canAddLink && !props.storeFocusObjects.paragraphLocked;\n const hideAddComment = props.hideAddComment();\n const isHyperLink = props.storeFocusObjects.settings.indexOf('hyperlink') > -1;\n\n return (\n \n props.onGetTableStylesPreviews()} routeProps={{\n onStyleClick: props.onStyleClick,\n }}>\n \n \n {!hideAddComment && {\n props.closeModal();\n Common.Notifications.trigger('addcomment');\n }}>\n \n }\n \n \n \n {showInsertLink &&\n \n \n \n }\n \n )\n};\n\nconst PageAddTable = inject(\"storeTableSettings\")(observer(PageTable));\nconst AddOtherContainer = inject(\"storeFocusObjects\", \"storeLinkSettings\")(observer(AddOther));\n\nexport {AddOtherContainer as AddOther,\n PageAddTable};","import React from 'react';\nconst TabsSwipeableContext = /*#__PURE__*/React.createContext(false);\nexport { TabsSwipeableContext };","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { TabsSwipeableContext } from '../shared/tabs-swipeable-context.js';\n\n\nconst Tabs = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n animated,\n swipeable,\n routable,\n swiperParams\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n useIsomorphicLayoutEffect(() => {\n if (!swipeable || !swiperParams) return;\n if (!elRef.current) return;\n Object.assign(elRef.current, swiperParams);\n elRef.current.initialize();\n }, []);\n const classes = classNames(className, colorClasses(props));\n const tabsClasses = classNames({\n tabs: true,\n 'tabs-routable': routable\n });\n if (animated) {\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classNames('tabs-animated-wrap', classes),\n ref: elRef\n }, extraAttrs), /*#__PURE__*/React.createElement(\"div\", {\n className: tabsClasses\n }, children));\n }\n if (swipeable) {\n return /*#__PURE__*/React.createElement(\"swiper-container\", _extends({\n id: id,\n style: style,\n class: classNames(tabsClasses, classes),\n ref: elRef,\n init: swiperParams ? 'false' : 'true'\n }, extraAttrs), /*#__PURE__*/React.createElement(TabsSwipeableContext.Provider, {\n value: true\n }, children));\n }\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classNames(tabsClasses, classes),\n ref: elRef\n }, extraAttrs), children);\n});\nTabs.displayName = 'f7-tabs';\nexport default Tabs;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle, useState, useContext } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, getComponentId } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7routers, f7, f7events } from '../shared/f7.js';\nimport { useTab } from '../shared/use-tab.js';\nimport { RouterContext } from '../shared/router-context.js';\nimport { useAsyncComponent } from '../shared/use-async-component.js';\nimport { TabsSwipeableContext } from '../shared/tabs-swipeable-context.js';\n\n\nconst Tab = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n tabActive\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const routerData = useRef(null);\n const routerContext = useContext(RouterContext);\n const tabsSwipeableContext = useContext(TabsSwipeableContext);\n let initialTabContent = null;\n if (!routerData.current && routerContext && routerContext.route && routerContext.route.route && routerContext.route.route.tab && routerContext.route.route.tab.id === id) {\n const {\n component,\n asyncComponent,\n options: tabRouteOptions\n } = routerContext.route.route.tab;\n if (component || asyncComponent) {\n const parentProps = routerContext.route.route.options && routerContext.route.route.options.props;\n initialTabContent = {\n id: getComponentId(),\n component: component || asyncComponent,\n isAsync: !!asyncComponent,\n props: {\n ...(parentProps || {}),\n ...(tabRouteOptions && tabRouteOptions.props || {}),\n f7router: routerContext.router,\n f7route: routerContext.route,\n ...routerContext.route.params\n }\n };\n }\n }\n const [tabContent, setTabContent] = useState(initialTabContent || null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n if (f7 && !routerData.current) {\n routerData.current = {\n setTabContent\n };\n f7routers.tabs.push(routerData.current);\n }\n const onMount = () => {\n if (elRef.current && initialTabContent) {\n elRef.current.f7RouterTabLoaded = true;\n }\n f7ready(() => {\n if (!routerData.current) {\n routerData.current = {\n el: elRef.current,\n setTabContent\n };\n f7routers.tabs.push(routerData.current);\n } else {\n routerData.current.el = elRef.current;\n }\n });\n };\n const onDestroy = () => {\n if (!routerData.current) return;\n f7routers.tabs.splice(f7routers.tabs.indexOf(routerData.current), 1);\n routerData.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n useIsomorphicLayoutEffect(() => {\n if (!routerData.current || !f7) return;\n f7events.emit('tabRouterDidUpdate', routerData.current);\n });\n useTab(elRef, props);\n const classes = classNames(className, 'tab', {\n 'tab-active': tabActive\n }, colorClasses(props));\n const renderChildren = () => {\n if (!tabContent) return children;\n if (tabContent.isAsync) {\n return useAsyncComponent(tabContent.component, tabContent.props, tabContent.id);\n }\n const TabContent = tabContent.component;\n return /*#__PURE__*/React.createElement(TabContent, _extends({\n key: tabContent.id\n }, tabContent.props));\n };\n const Component = tabsSwipeableContext ? 'swiper-slide' : 'div';\n const classAttrs = tabsSwipeableContext ? {\n class: classes\n } : {\n className: classes\n };\n return /*#__PURE__*/React.createElement(Component, _extends({\n id: id,\n style: style,\n ref: elRef\n }, extraAttrs, classAttrs), renderChildren());\n});\nTab.displayName = 'f7-tab';\nexport default Tab;","import React, {Fragment, useState} from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport {Page, Navbar, List, ListItem, ListButton, Row, BlockTitle, Range, Toggle, Icon} from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from '../../../../../common/mobile/utils/device';\n\nconst AddSlide = props => {\n const layouts = props.storeSlideSettings.slideLayouts;\n const [stateDisabled, setDisabled] = useState(false);\n return (\n
                \n {layouts.map((row, rowIndex) => {\n return (\n
                  \n {row.map((layout, index) => {\n return (\n
                • {props.onSlideLayout(layout.type); setDisabled(true)}}>\n \n
                • \n )\n })}\n
                \n )\n })}\n
                \n )\n};\n\nexport default inject(\"storeSlideSettings\")(observer(AddSlide));","import React, {Component} from 'react';\nimport { f7 } from 'framework7-react';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport {observer, inject} from \"mobx-react\";\n\nimport AddSlide from '../../view/add/AddSlide';\n\nclass AddSlideController extends Component {\n constructor (props) {\n super(props);\n this.onSlideLayout = this.onSlideLayout.bind(this);\n }\n\n closeModal () {\n if ( Device.phone ) {\n f7.sheet.close('.add-popup', true);\n } else {\n f7.popover.close('#add-popover');\n }\n }\n\n onSlideLayout (type) {\n const api = Common.EditorApi.get();\n api.AddSlide(type);\n this.closeModal();\n }\n\n render () {\n return (\n \n )\n }\n}\n\nexport default AddSlideController;","import React, {Fragment, useState} from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport {Page, Navbar, List, ListItem, ListButton, Row, BlockTitle, Range, Toggle, Icon} from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from '../../../../../common/mobile/utils/device';\n\nconst AddShape = props => {\n const shapes = props.storeShapeSettings.getStyleGroups();\n return (\n
                \n {shapes.map((row, indexRow) => {\n return (\n
                  \n {row.map((shape, index) => {\n return (\n
                • {props.onShapeClick(shape.type)}}>\n
                  \n
                  \n
                • \n )\n })}\n
                \n )\n })}\n
                \n )\n};\n\nexport default inject(\"storeShapeSettings\")(observer(AddShape));","import React, {Component} from 'react';\nimport { f7 } from 'framework7-react';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport {observer, inject} from \"mobx-react\";\n\nimport AddShape from '../../view/add/AddShape';\n\nclass AddShapeController extends Component {\n constructor (props) {\n super(props);\n this.onShapeClick = this.onShapeClick.bind(this);\n }\n\n closeModal () {\n if ( Device.phone ) {\n f7.sheet.close('.add-popup', true);\n } else {\n f7.popover.close('#add-popover');\n }\n }\n\n onShapeClick (type) {\n const api = Common.EditorApi.get();\n api.AddShapeOnCurrentPage(type);\n this.closeModal();\n }\n\n render () {\n return (\n \n )\n }\n}\n\nexport default AddShapeController;","import React, {Component} from 'react';\nimport { f7 } from 'framework7-react';\nimport {observer, inject} from \"mobx-react\";\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport { withTranslation} from 'react-i18next';\n\nimport {AddOther} from '../../view/add/AddOther';\n\nclass AddOtherController extends Component {\n constructor (props) {\n super(props);\n\n this.onStyleClick = this.onStyleClick.bind(this);\n this.onGetTableStylesPreviews = this.onGetTableStylesPreviews.bind(this);\n }\n\n closeModal () {\n if ( Device.phone ) {\n f7.sheet.close('.add-popup', true);\n } else {\n f7.popover.close('#add-popover');\n }\n }\n\n onStyleClick (type) {\n const api = Common.EditorApi.get();\n\n this.closeModal();\n\n const { t } = this.props;\n const _t = t(\"View.Add\", { returnObjects: true });\n\n let picker;\n\n const dialog = f7.dialog.create({\n title: _t.textTableSize,\n text: '',\n content:\n '
                ' +\n '
                ' +\n '
                ' + _t.textColumns + '
                ' +\n '
                ' + _t.textRows + '
                ' +\n '
                ' +\n '
                ' +\n '
                ',\n buttons: [\n {\n text: _t.textCancel\n },\n {\n text: 'OK',\n bold: true,\n onClick: function () {\n const size = picker.value;\n\n api.put_Table(parseInt(size[0]), parseInt(size[1]), undefined, type.toString());\n }\n }\n ],\n on: {\n open: () => {\n picker = f7.picker.create({\n containerEl: document.getElementById('picker-table-size'),\n cols: [\n {\n textAlign: 'center',\n width: '100%',\n values: [1,2,3,4,5,6,7,8,9,10]\n },\n {\n textAlign: 'center',\n width: '100%',\n values: [1,2,3,4,5,6,7,8,9,10]\n }\n ],\n toolbar: false,\n rotateEffect: true,\n value: [3, 3]\n });\n }\n }\n }).open();\n }\n\n onGetTableStylesPreviews = () => {\n if(this.props.storeTableSettings.arrayStylesDefault.length == 0) {\n const api = Common.EditorApi.get();\n setTimeout(() => this.props.storeTableSettings.setStyles(api.asc_getTableStylesPreviews(true), 'default'), 1);\n }\n }\n\n hideAddComment () {\n const api = Common.EditorApi.get();\n const stack = api.getSelectedElements();\n let isText = false,\n isChart = false;\n\n stack.forEach((item) => {\n const objectType = item.get_ObjectType();\n if (objectType === Asc.c_oAscTypeSelectElement.Paragraph) {\n isText = true;\n } else if (objectType === Asc.c_oAscTypeSelectElement.Chart) {\n isChart = true;\n }\n });\n if (stack.length > 0) {\n const topObject = stack[stack.length - 1];\n const topObjectValue = topObject.get_ObjectValue();\n let objectLocked = typeof topObjectValue.get_Locked === 'function' ? topObjectValue.get_Locked() : false;\n !objectLocked && (objectLocked = typeof topObjectValue.get_LockDelete === 'function' ? topObjectValue.get_LockDelete() : false);\n if (!objectLocked) {\n return ((isText && isChart) || api.can_AddQuotedComment() === false);\n }\n }\n return true;\n }\n\n render () {\n return (\n \n )\n }\n}\n\nconst AddOtherWithTranslation = inject(\"storeTableSettings\")(withTranslation()(AddOtherController));\n\nexport {AddOtherWithTranslation as AddOtherController};","import React, { useContext, useEffect } from 'react';\nimport { Page, Navbar, NavRight, NavTitle, Link, Icon, Tabs, Tab, f7 } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport { observer, inject } from \"mobx-react\";\nimport { Device } from '../../../../../common/mobile/utils/device';\nimport AddSlideController from \"../../controller/add/AddSlide\";\nimport AddShapeController from \"../../controller/add/AddShape\";\nimport { AddOtherController } from \"../../controller/add/AddOther\";\nimport { MainContext } from '../../page/main';\n\nconst AddLayoutNavbar = ({ tabs }) => {\n const isAndroid = Device.android;\n\n return (\n \n {tabs.length > 1 ?\n
                \n {tabs.map((item, index) =>\n \n \n )}\n {isAndroid && }\n
                :\n {tabs[0].caption}\n }\n {Device.phone && }\n
                \n )\n};\n\nconst AddLayoutContent = ({ tabs }) => {\n return (\n \n {tabs.map((item, index) =>\n \n {item.component}\n \n )}\n \n )\n};\n\nconst AddingPage = inject(\"storeApplicationSettings\")(observer(props => {\n const { t } = useTranslation();\n const _t = t('View.Add', {returnObjects: true});\n const api = Common.EditorApi.get();\n const storeApplicationSettings = props.storeApplicationSettings;\n const directionMode = storeApplicationSettings.directionMode;\n const countPages = api.getCountPages();\n const mainContext = useContext(MainContext);\n const showPanels = mainContext.showPanels;\n const tabs = [];\n\n useEffect(() => {\n f7.tab.show('#add-other', false);\n }, []);\n\n useEffect(() => {\n if(directionMode === 'rtl') {\n tabs.reverse();\n }\n }, [directionMode])\n \n if (!showPanels && countPages) {\n tabs.push({\n caption: _t.textSlide,\n id: 'add-slide',\n icon: 'icon-add-slide',\n component: \n });\n\n tabs.push({\n caption: _t.textShape,\n id: 'add-shape',\n icon: 'icon-add-shape',\n component: \n });\n\n // tabs.push({\n // caption: _t.textImage,\n // id: 'add-image',\n // icon: 'icon-add-image',\n // component: \n // });\n\n tabs.push({\n caption: _t.textOther,\n id: 'add-other',\n icon: 'icon-add-other',\n component: \n });\n }\n\n if(!showPanels && !countPages) {\n tabs.push({\n caption: _t.textSlide,\n id: 'add-slide',\n icon: 'icon-add-slide',\n component: \n });\n }\n\n // if (showPanels && showPanels === 'link') {\n // tabs.push({\n // caption: _t.textAddLink,\n // id: 'add-link',\n // component: \n // });\n // }\n\n return (\n \n \n \n \n )\n}));\n\nexport default AddingPage;","import React, { useContext, useEffect } from 'react';\nimport { View, Popup, Popover, f7 } from 'framework7-react';\nimport { Device } from '../../../../../common/mobile/utils/device';\nimport { AddImageController } from \"../../controller/add/AddImage\";\nimport { PageImageLinkSettings } from \"./AddImage\";\nimport { PageAddTable } from \"./AddOther\";\nimport { AddLinkController } from \"../../controller/add/AddLink\";\nimport { PageTypeLink, PageLinkTo } from \"./AddLink\";\nimport { EditLinkController } from '../../controller/edit/EditLink';\nimport { ObservablePageEditTypeLink, ObservablePageEditLinkTo } from '../../view/edit/EditLink';\nimport AddingPage from './AddingPage';\nimport { MainContext } from '../../page/main';\n\nconst routes = [\n {\n path: '/adding-page/',\n component: AddingPage,\n },\n // Image\n {\n path: '/add-image-from-url/',\n component: PageImageLinkSettings\n },\n\n // Other\n {\n path: '/add-table/',\n component: PageAddTable\n },\n {\n path: '/add-link/',\n component: AddLinkController\n },\n {\n path: '/add-link-type/',\n component: PageTypeLink\n },\n {\n path: '/add-link-to/',\n component: PageLinkTo\n },\n {\n path: '/edit-link/',\n component: EditLinkController\n },\n {\n path: '/edit-link-type/',\n component: ObservablePageEditTypeLink\n },\n {\n path: '/edit-link-to/',\n component: ObservablePageEditLinkTo\n },\n\n // Image \n\n {\n path: '/add-image/',\n component: AddImageController\n }\n];\n\nroutes.forEach(route => {\n route.options = {\n ...route.options,\n transition: 'f7-push'\n };\n});\n\nconst AddView = () => {\n const mainContext = useContext(MainContext);\n\n useEffect(() => {\n if(Device.phone) {\n f7.popup.open('.add-popup');\n } else {\n f7.popover.open('#add-popover', '#btn-add');\n }\n }, []);\n\n return (\n !Device.phone ?\n mainContext.closeOptions('add')}>\n \n \n \n :\n mainContext.closeOptions('add')}>\n \n \n \n \n )\n}\n\nexport default AddView;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, noUndefinedProps, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { watchProp } from '../shared/watch-prop.js';\n\n\n\nconst Range = /*#__PURE__*/forwardRef((props, ref) => {\n const f7Range = useRef(null);\n const {\n className,\n id,\n style,\n children,\n init = true,\n value = 0,\n min = 0,\n max = 100,\n step = 1,\n label = false,\n dual = false,\n vertical = false,\n verticalReversed = false,\n draggableBar = true,\n formatLabel,\n scale = false,\n scaleSteps = 5,\n scaleSubSteps = 0,\n formatScaleLabel,\n limitKnobPosition = undefined,\n name,\n input,\n inputId,\n disabled\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7Range: () => f7Range.current\n }));\n watchProp(value, newValue => {\n if (!f7Range.current) return;\n const rangeValue = f7Range.current.value;\n if (Array.isArray(newValue) && Array.isArray(rangeValue)) {\n if (rangeValue[0] !== newValue[0] || rangeValue[1] !== newValue[1]) {\n f7Range.current.setValue(newValue);\n }\n } else {\n f7Range.current.setValue(newValue);\n }\n });\n const onChange = (range, val) => {\n emit(props, 'rangeChange', val);\n };\n const onChanged = (range, val) => {\n emit(props, 'rangeChanged', val);\n };\n const rangeEvents = method => {\n if (!f7Range.current) return;\n f7Range.current[method]('change', onChange);\n f7Range.current[method]('changed', onChanged);\n };\n const onMount = () => {\n f7ready(() => {\n if (!init || !elRef.current) return;\n f7Range.current = f7.range.create(noUndefinedProps({\n el: elRef.current,\n value,\n min,\n max,\n step,\n label,\n dual,\n draggableBar,\n vertical,\n verticalReversed,\n formatLabel,\n scale,\n scaleSteps,\n scaleSubSteps,\n formatScaleLabel,\n limitKnobPosition\n }));\n rangeEvents('on');\n });\n };\n const onDestroy = () => {\n if (f7Range.current && f7Range.current.destroy) f7Range.current.destroy();\n f7Range.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n rangeEvents('on');\n return () => {\n rangeEvents('off');\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n const classes = classNames(className, 'range-slider', {\n 'range-slider-horizontal': !vertical,\n 'range-slider-vertical': vertical,\n 'range-slider-vertical-reversed': vertical && verticalReversed,\n disabled\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: elRef,\n id: id,\n style: style,\n className: classes\n }, extraAttrs), input && /*#__PURE__*/React.createElement(\"input\", {\n type: \"range\",\n name: name,\n id: inputId\n }), children);\n});\nRange.displayName = 'f7-range';\nexport default Range;","import React, { useState, useEffect } from 'react';\nimport { f7, ListItem, List, Icon } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport { LocalStorage } from '../../utils/LocalStorage.mjs';\n\nconst ThemeColors = ({ themeColors, onColorClick, curColor, isTypeColors, isTypeCustomColors }) => {\n return (\n
                \n {themeColors?.length && themeColors.map((row, rowIndex) => {\n return(\n
                \n {row.map((effect, index) => {\n return(\n {onColorClick(effect.color, effect.effectId, effect.effectValue)}}\n >\n )\n })}\n
                \n )\n })}\n
                \n )\n};\n\nconst StandartColors = ({ options, standartColors, onColorClick, curColor }) => {\n return (\n
                \n {standartColors?.length && standartColors.map((color, index) => {\n return (\n index === 0 && options.transparent ?\n {onColorClick('transparent')}}\n > :\n {onColorClick(color)}}\n >\n )\n })}\n
                \n )\n};\n\nconst CustomColors = ({ options, customColors, isTypeColors, onColorClick, curColor }) => {\n const colors = customColors.length > 0 ? customColors : [];\n const emptyItems = [];\n\n if (colors.length < options.customcolors) {\n for (let i = colors.length; i < options.customcolors; i++) {\n emptyItems.push( {onColorClick('empty')}}\n >)\n }\n }\n\n let indexCurColor = colors.indexOf(curColor);\n \n return (\n
                \n {colors && colors.length > 0 ? colors.map((color, index) => {\n return (\n {onColorClick(color)}}\n >\n )\n }) : null}\n {emptyItems.length > 0 && emptyItems}\n
                \n )\n};\n\nconst ThemeColorPalette = props => {\n const {t} = useTranslation();\n const _t = t('Common.ThemeColorPalette', {returnObjects: true});\n const options = {\n customcolors: props.customcolors || 10,\n standardcolors: props.standardcolors || 10,\n themecolors: props.themecolors || 10,\n effects: props.effects || 5,\n //allowReselect: props.allowReselect !== false,\n transparent: props.transparent || false,\n value: props.value || '000000',\n cls: props.cls || ''\n };\n const curColor = props.curColor;\n const themeColors = [];\n const effectColors = Common.Utils.ThemeColor.getEffectColors();\n let row = -1;\n\n if(effectColors?.length) {\n effectColors.forEach((effect, index) => {\n if (0 == index % options.themecolors) {\n themeColors.push([]);\n row++;\n }\n themeColors[row].push(effect);\n });\n }\n\n const standartColors = Common.Utils.ThemeColor.getStandartColors();\n let isTypeColors = standartColors?.length && standartColors.some( value => value === curColor );\n // custom color\n let customColors = props.customColors;\n\n if (customColors.length < 1) {\n customColors = LocalStorage.getItem('mobile-custom-colors');\n customColors = customColors ? customColors.toLowerCase().split(',') : [];\n }\n\n let isTypeCustomColors = customColors.some( value => value === curColor );\n\n return (\n
                \n \n \n
                { _t.textThemeColors }
                \n \n
                \n \n
                { _t.textStandartColors }
                \n \n
                \n \n
                { _t.textCustomColors }
                \n \n
                \n
                \n
                \n )\n};\n\nconst CustomColorPicker = props => {\n //Function to convert rgb color to hex format\n const hexDigits = new Array(\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"a\",\"b\",\"c\",\"d\",\"e\",\"f\");\n const hex = x => {\n return isNaN(x) ? \"00\" : hexDigits[(x - x % 16) / 16] + hexDigits[x % 16];\n };\n const rgb2hex = rgb => {\n rgb = rgb.match(/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/);\n return hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);\n };\n\n let currentColor = props.currentColor;\n\n if (props.autoColor) {\n currentColor = rgb2hex(props.autoColor);\n }\n\n if (currentColor === 'transparent' || !currentColor) {\n currentColor = 'ffffff';\n }\n\n const countDynamicColors = props.countdynamiccolors || 10;\n const [stateColor, setColor] = useState(`#${currentColor}`);\n\n useEffect(() => {\n if (document.getElementsByClassName('color-picker-wheel').length < 1) {\n const colorPicker = f7.colorPicker.create({\n containerEl: document.getElementsByClassName('color-picker-container')[0],\n value: {\n hex: `#${currentColor}`\n },\n on: {\n change: function (value) {\n setColor(value.getValue().hex);\n }\n }\n });\n }\n });\n\n const addNewColor = (color) => {\n let colors = LocalStorage.getItem('mobile-custom-colors');\n colors = colors ? colors.split(',') : [];\n const newColor = color.slice(1);\n if (colors.push(newColor) > countDynamicColors) colors.shift(); // 10 - dynamiccolors\n LocalStorage.setItem('mobile-custom-colors', colors.join().toLowerCase());\n props.onAddNewColor && props.onAddNewColor(colors, newColor);\n };\n\n return (\n
                \n
                \n \n
                \n )\n};\n\nexport { ThemeColorPalette, CustomColorPicker };","import React, {Fragment, useEffect, useState} from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport {f7, Page, Navbar, List, ListItem, Row, BlockTitle, Link, Toggle, Icon, View, NavRight, ListItemCell, Range, Button, Segmented, ListButton} from 'framework7-react';\nimport { ThemeColorPalette, CustomColorPicker } from '../../../../../common/mobile/lib/component/ThemeColorPalette.jsx';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from '../../../../../common/mobile/utils/device';\n\nconst EditSlide = props => {\n const { t } = useTranslation();\n const _t = t('View.Edit', {returnObjects: true});\n\n return (\n \n \n \n \n \n \n \n \n {_t.textDuplicateSlide}\n {_t.textDeleteSlide}\n \n \n )\n};\n\nconst PageTheme = props => {\n const { t } = useTranslation();\n const _t = t(\"View.Edit\", { returnObjects: true });\n const storeSlideSettings = props.storeSlideSettings;\n const arrayThemes = storeSlideSettings.arrayThemes;\n const slideThemeIndex = storeSlideSettings.slideThemeIndex;\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n {arrayThemes.length && (\n \n {arrayThemes.map(theme => {\n return (\n {\n storeSlideSettings.changeSlideThemeIndex(theme.themeId);\n props.onThemeClick(theme.themeId);\n }}>\n \n );\n })}\n \n )}\n \n );\n};\n\nconst PageLayout = props => {\n const { t } = useTranslation();\n const _t = t(\"View.Edit\", { returnObjects: true });\n const storeFocusObjects = props.storeFocusObjects;\n const storeSlideSettings = props.storeSlideSettings;\n storeSlideSettings.changeSlideLayoutIndex(storeFocusObjects.slideObject.get_LayoutIndex());\n const arrayLayouts = storeSlideSettings.slideLayouts;\n const slideLayoutIndex = storeSlideSettings.slideLayoutIndex;\n \n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n {arrayLayouts.length && \n arrayLayouts.map((layouts, index) => {\n return (\n \n {layouts.map(layout => {\n return (\n {\n storeSlideSettings.changeSlideLayoutIndex(layout.type);\n props.onLayoutClick(layout.type);\n }}>\n \"\"/\n \n )\n })}\n \n );\n })\n }\n \n );\n};\n\nconst PageTransition = props => {\n const { t } = useTranslation();\n const _t = t(\"View.Edit\", { returnObjects: true });\n const isAndroid = Device.android;\n const _arrEffect = [\n {displayValue: _t.textNone, value: Asc.c_oAscSlideTransitionTypes.None},\n {displayValue: _t.textFade, value: Asc.c_oAscSlideTransitionTypes.Fade},\n {displayValue: _t.textPush, value: Asc.c_oAscSlideTransitionTypes.Push},\n {displayValue: _t.textWipe, value: Asc.c_oAscSlideTransitionTypes.Wipe},\n {displayValue: _t.textSplit, value: Asc.c_oAscSlideTransitionTypes.Split},\n {displayValue: _t.textUnCover, value: Asc.c_oAscSlideTransitionTypes.UnCover},\n {displayValue: _t.textCover, value: Asc.c_oAscSlideTransitionTypes.Cover},\n {displayValue: _t.textClock, value: Asc.c_oAscSlideTransitionTypes.Clock},\n {displayValue: _t.textZoom, value: Asc.c_oAscSlideTransitionTypes.Zoom},\n {displayValue: _t.textMorph, value: Asc.c_oAscSlideTransitionTypes.Morph}\n ];\n const _arrEffectType = [\n {displayValue: _t.textSmoothly, value: Asc.c_oAscSlideTransitionParams.Fade_Smoothly},\n {displayValue: _t.textBlack, value: Asc.c_oAscSlideTransitionParams.Fade_Through_Black},\n {displayValue: _t.textLeft, value: Asc.c_oAscSlideTransitionParams.Param_Left},\n {displayValue: _t.textTop, value: Asc.c_oAscSlideTransitionParams.Param_Top},\n {displayValue: _t.textRight, value: Asc.c_oAscSlideTransitionParams.Param_Right},\n {displayValue: _t.textBottom, value: Asc.c_oAscSlideTransitionParams.Param_Bottom},\n {displayValue: _t.textTopLeft, value: Asc.c_oAscSlideTransitionParams.Param_TopLeft},\n {displayValue: _t.textTopRight, value: Asc.c_oAscSlideTransitionParams.Param_TopRight},\n {displayValue: _t.textBottomLeft, value: Asc.c_oAscSlideTransitionParams.Param_BottomLeft},\n {displayValue: _t.textBottomRight, value: Asc.c_oAscSlideTransitionParams.Param_BottomRight},\n {displayValue: _t.textVerticalIn, value: Asc.c_oAscSlideTransitionParams.Split_VerticalIn},\n {displayValue: _t.textVerticalOut, value: Asc.c_oAscSlideTransitionParams.Split_VerticalOut},\n {displayValue: _t.textHorizontalIn, value: Asc.c_oAscSlideTransitionParams.Split_HorizontalIn},\n {displayValue: _t.textHorizontalOut, value: Asc.c_oAscSlideTransitionParams.Split_HorizontalOut},\n {displayValue: _t.textClockwise, value: Asc.c_oAscSlideTransitionParams.Clock_Clockwise},\n {displayValue: _t.textCounterclockwise, value: Asc.c_oAscSlideTransitionParams.Clock_Counterclockwise},\n {displayValue: _t.textWedge, value: Asc.c_oAscSlideTransitionParams.Clock_Wedge},\n {displayValue: _t.textZoomIn, value: Asc.c_oAscSlideTransitionParams.Zoom_In},\n {displayValue: _t.textZoomOut, value: Asc.c_oAscSlideTransitionParams.Zoom_Out},\n {displayValue: _t.textZoomRotate, value: Asc.c_oAscSlideTransitionParams.Zoom_AndRotate},\n {displayValue: _t.textMorphObjects, value: Asc.c_oAscSlideTransitionParams.Morph_Objects},\n {displayValue: _t.textMorphWords, value: Asc.c_oAscSlideTransitionParams.Morph_Words},\n {displayValue: _t.textMorphLetters, value: Asc.c_oAscSlideTransitionParams.Morph_Letters}\n ];\n\n let _arrCurrentEffectTypes = [];\n\n const fillEffectTypes = type => {\n _arrCurrentEffectTypes = [];\n switch (type) {\n case Asc.c_oAscSlideTransitionTypes.Fade:\n _arrCurrentEffectTypes.push(_arrEffectType[0], _arrEffectType[1]);\n break;\n case Asc.c_oAscSlideTransitionTypes.Push:\n _arrCurrentEffectTypes = _arrEffectType.slice(2, 6);\n break;\n case Asc.c_oAscSlideTransitionTypes.Wipe:\n _arrCurrentEffectTypes = _arrEffectType.slice(2, 10);\n break;\n case Asc.c_oAscSlideTransitionTypes.Split:\n _arrCurrentEffectTypes = _arrEffectType.slice(10, 14);\n break;\n case Asc.c_oAscSlideTransitionTypes.UnCover:\n _arrCurrentEffectTypes = _arrEffectType.slice(2, 10);\n break;\n case Asc.c_oAscSlideTransitionTypes.Cover:\n _arrCurrentEffectTypes = _arrEffectType.slice(2, 10);\n break;\n case Asc.c_oAscSlideTransitionTypes.Clock:\n _arrCurrentEffectTypes = _arrEffectType.slice(14, 17);\n break;\n case Asc.c_oAscSlideTransitionTypes.Zoom:\n _arrCurrentEffectTypes = _arrEffectType.slice(17,20);\n break;\n case Asc.c_oAscSlideTransitionTypes.Morph:\n _arrCurrentEffectTypes = _arrEffectType.slice(20);\n break;\n }\n return (_arrCurrentEffectTypes.length > 0) ? _arrCurrentEffectTypes[0].value : -1;\n };\n\n const getEffectName = effect => {\n for (var i=0; i < _arrEffect.length; i++) {\n if (_arrEffect[i].value == effect) return _arrEffect[i].displayValue;\n }\n return '';\n };\n \n const getEffectTypeName = type => {\n for (var i=0; i < _arrCurrentEffectTypes.length; i++) {\n if (_arrCurrentEffectTypes[i].value == type) return _arrCurrentEffectTypes[i].displayValue;\n }\n return '';\n };\n\n const storeFocusObjects = props.storeFocusObjects;\n const transitionObj = storeFocusObjects.slideObject.get_transition();\n\n let _effectDelay = transitionObj.get_SlideAdvanceDuration();\n\n const [stateRange, changeRange] = useState((_effectDelay !== null && _effectDelay !== undefined) ? parseInt(_effectDelay / 1000.) : 0);\n const isDelay = transitionObj.get_SlideAdvanceAfter();\n const isStartOnClick = transitionObj.get_SlideAdvanceOnMouseClick();\n\n const _effect = transitionObj.get_TransitionType();\n const nameEffect = getEffectName(_effect);\n if(_effect != Asc.c_oAscSlideTransitionTypes.None) fillEffectTypes(_effect);\n\n const _effectType = transitionObj.get_TransitionOption();\n const nameEffectType = getEffectTypeName(_effectType);\n\n const _effectDuration = transitionObj.get_TransitionDuration();\n\n useEffect(() => {\n changeRange((_effectDelay !== null && _effectDelay !== undefined) ? parseInt(_effectDelay / 1000.) : 0);\n }, [_effectDelay])\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n \n \n \n {!isAndroid &&
                \n \n
                }\n
                \n \n \n {isAndroid && }\n \n \n
                \n
                \n
                \n \n \n {_t.textStartOnClick}\n {props.onStartClick(!isStartOnClick)}} />\n \n \n {_t.textDelay}\n {props.onDelayCheck(!isDelay, _effectDelay)}} />\n \n \n
                \n {changeRange(value)}}\n onRangeChanged={(value) => {props.onDelay(value)}}\n >\n
                \n
                \n {stateRange + ' ' + _t.textSec}\n
                \n
                \n
                \n \n {_t.textApplyAll}\n \n
                \n );\n};\n\n\nconst PageEffect = props => {\n const { t } = useTranslation();\n const _t = t(\"View.Edit\", { returnObjects: true });\n const [currentEffect, setEffect] = useState(props._effect);\n const _arrEffect = props._arrEffect;\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n {_arrEffect.length ? (\n \n {_arrEffect.map((elem, index) => {\n return (\n {\n setEffect(elem.value);\n let valueEffectTypes = props.fillEffectTypes(elem.value);\n props.onEffectClick(elem.value, valueEffectTypes);\n }}>\n )\n })}\n \n ) : null}\n \n );\n};\n\nconst PageType= props => {\n const { t } = useTranslation();\n const _t = t(\"View.Edit\", { returnObjects: true });\n const _arrCurrentEffectTypes = props._arrCurrentEffectTypes;\n const [currentType, setType] = useState(props._effectType);\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n {_arrCurrentEffectTypes.length ? (\n \n {_arrCurrentEffectTypes.map((elem, index) => {\n return (\n {\n setType(elem.value);\n props.onEffectTypeClick(elem.value, props._effect);\n }}>\n \n )\n })}\n \n ) : null}\n \n );\n};\n\nconst PageFillColor = props => {\n const { t } = useTranslation();\n const _t = t(\"View.Edit\", { returnObjects: true });\n const storeFocusObjects = props.storeFocusObjects;\n const slideObject = storeFocusObjects.slideObject;\n const storePalette = props.storePalette;\n const storeSlideSettings = props.storeSlideSettings;\n const customColors = storePalette.customColors;\n const fillColor = storeSlideSettings.fillColor;\n\n const changeColor = (color, effectId, effectValue) => {\n if (color !== 'empty') {\n if (effectId !== undefined) {\n const newColor = {color: color, effectId: effectId, effectValue: effectValue};\n props.onFillColor(newColor);\n storeSlideSettings.changeFillColor(newColor);\n } else {\n props.onFillColor(color);\n storeSlideSettings.changeFillColor(color);\n }\n } else {\n // open custom color menu\n props.f7router.navigate('/edit-custom-color/', {props: {onFillColor: props.onFillColor}});\n }\n };\n \n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n \n \n \n );\n};\n\nconst PageCustomFillColor = props => {\n const { t } = useTranslation();\n const _t = t('View.Edit', {returnObjects: true});\n\n let fillColor = props.storeSlideSettings.fillColor;\n\n if (typeof fillColor === 'object') {\n fillColor = fillColor.color;\n }\n\n const onAddNewColor = (colors, color) => {\n props.storePalette.changeCustomColors(colors);\n props.onFillColor(color);\n props.storeSlideSettings.changeFillColor(color);\n props.f7router.back();\n };\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n )\n};\n\nconst Theme = inject(\"storeSlideSettings\")(observer(PageTheme));\nconst Layout = inject(\"storeSlideSettings\", \"storeFocusObjects\")(observer(PageLayout));\nconst Transition = inject(\"storeSlideSettings\", \"storeFocusObjects\")(observer(PageTransition));\nconst Type = inject(\"storeSlideSettings\", \"storeFocusObjects\")(observer(PageType));\nconst Effect = inject(\"storeSlideSettings\", \"storeFocusObjects\")(observer(PageEffect));\nconst StyleFillColor = inject(\"storeSlideSettings\", \"storePalette\", \"storeFocusObjects\")(observer(PageFillColor));\nconst CustomFillColor = inject(\"storeSlideSettings\", \"storePalette\", \"storeFocusObjects\")(observer(PageCustomFillColor));\n\nexport {\n EditSlide,\n Theme,\n Layout,\n Transition,\n Type,\n Effect,\n StyleFillColor,\n CustomFillColor\n};","/**\n * Swiper React 10.3.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: September 28, 2023\n */\n\nimport React, { useEffect, useLayoutEffect, useContext, createContext, forwardRef, useState, useRef } from 'react';\nimport { S as Swiper$1 } from './shared/swiper-core.mjs';\nimport { g as getParams, m as mountSwiper, a as getChangedParams, u as updateOnVirtualData } from './shared/update-on-virtual-data.mjs';\nimport { d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination, e as extend, u as updateSwiper } from './shared/update-swiper.mjs';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction isChildSwiperSlide(child) {\n return child.type && child.type.displayName && child.type.displayName.includes('SwiperSlide');\n}\nfunction processChildren(c) {\n const slides = [];\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.children) {\n processChildren(child.props.children).forEach(slide => slides.push(slide));\n }\n });\n return slides;\n}\nfunction getChildren(c) {\n const slides = [];\n const slots = {\n 'container-start': [],\n 'container-end': [],\n 'wrapper-start': [],\n 'wrapper-end': []\n };\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.slot && slots[child.props.slot]) {\n slots[child.props.slot].push(child);\n } else if (child.props && child.props.children) {\n const foundSlides = processChildren(child.props.children);\n if (foundSlides.length > 0) {\n foundSlides.forEach(slide => slides.push(slide));\n } else {\n slots['container-end'].push(child);\n }\n } else {\n slots['container-end'].push(child);\n }\n });\n return {\n slides,\n slots\n };\n}\n\nfunction renderVirtual(swiper, slides, virtualData) {\n if (!virtualData) return null;\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n const style = swiper.isHorizontal() ? {\n [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`\n } : {\n top: `${virtualData.offset}px`\n };\n const {\n from,\n to\n } = virtualData;\n const loopFrom = swiper.params.loop ? -slides.length : 0;\n const loopTo = swiper.params.loop ? slides.length * 2 : slides.length;\n const slidesToRender = [];\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n slidesToRender.push(slides[getSlideIndex(i)]);\n }\n }\n return slidesToRender.map((child, index) => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper,\n style,\n key: `slide-${index}`\n });\n });\n}\n\nfunction useIsomorphicLayoutEffect(callback, deps) {\n // eslint-disable-next-line\n if (typeof window === 'undefined') return useEffect(callback, deps);\n return useLayoutEffect(callback, deps);\n}\n\nconst SwiperSlideContext = /*#__PURE__*/createContext(null);\nconst useSwiperSlide = () => {\n return useContext(SwiperSlideContext);\n};\nconst SwiperContext = /*#__PURE__*/createContext(null);\nconst useSwiper = () => {\n return useContext(SwiperContext);\n};\n\nconst Swiper = /*#__PURE__*/forwardRef(function (_temp, externalElRef) {\n let {\n className,\n tag: Tag = 'div',\n wrapperTag: WrapperTag = 'div',\n children,\n onSwiper,\n ...rest\n } = _temp === void 0 ? {} : _temp;\n let eventsAssigned = false;\n const [containerClasses, setContainerClasses] = useState('swiper');\n const [virtualData, setVirtualData] = useState(null);\n const [breakpointChanged, setBreakpointChanged] = useState(false);\n const initializedRef = useRef(false);\n const swiperElRef = useRef(null);\n const swiperRef = useRef(null);\n const oldPassedParamsRef = useRef(null);\n const oldSlides = useRef(null);\n const nextElRef = useRef(null);\n const prevElRef = useRef(null);\n const paginationElRef = useRef(null);\n const scrollbarElRef = useRef(null);\n const {\n params: swiperParams,\n passedParams,\n rest: restProps,\n events\n } = getParams(rest);\n const {\n slides,\n slots\n } = getChildren(children);\n const onBeforeBreakpoint = () => {\n setBreakpointChanged(!breakpointChanged);\n };\n Object.assign(swiperParams.on, {\n _containerClasses(swiper, classes) {\n setContainerClasses(classes);\n }\n });\n const initSwiper = () => {\n // init swiper\n Object.assign(swiperParams.on, events);\n eventsAssigned = true;\n const passParams = {\n ...swiperParams\n };\n delete passParams.wrapperClass;\n swiperRef.current = new Swiper$1(passParams);\n if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) {\n swiperRef.current.virtual.slides = slides;\n const extendWith = {\n cache: false,\n slides,\n renderExternal: setVirtualData,\n renderExternalUpdate: false\n };\n extend(swiperRef.current.params.virtual, extendWith);\n extend(swiperRef.current.originalParams.virtual, extendWith);\n }\n };\n if (!swiperElRef.current) {\n initSwiper();\n }\n\n // Listen for breakpoints change\n if (swiperRef.current) {\n swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint);\n }\n const attachEvents = () => {\n if (eventsAssigned || !events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.on(eventName, events[eventName]);\n });\n };\n const detachEvents = () => {\n if (!events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.off(eventName, events[eventName]);\n });\n };\n useEffect(() => {\n return () => {\n if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint);\n };\n });\n\n // set initialized flag\n useEffect(() => {\n if (!initializedRef.current && swiperRef.current) {\n swiperRef.current.emitSlidesClasses();\n initializedRef.current = true;\n }\n });\n\n // mount swiper\n useIsomorphicLayoutEffect(() => {\n if (externalElRef) {\n externalElRef.current = swiperElRef.current;\n }\n if (!swiperElRef.current) return;\n if (swiperRef.current.destroyed) {\n initSwiper();\n }\n mountSwiper({\n el: swiperElRef.current,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n paginationEl: paginationElRef.current,\n scrollbarEl: scrollbarElRef.current,\n swiper: swiperRef.current\n }, swiperParams);\n if (onSwiper) onSwiper(swiperRef.current);\n // eslint-disable-next-line\n return () => {\n if (swiperRef.current && !swiperRef.current.destroyed) {\n swiperRef.current.destroy(true, false);\n }\n };\n }, []);\n\n // watch for params change\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, c => c.key);\n oldPassedParamsRef.current = passedParams;\n oldSlides.current = slides;\n if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) {\n updateSwiper({\n swiper: swiperRef.current,\n slides,\n passedParams,\n changedParams,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n scrollbarEl: scrollbarElRef.current,\n paginationEl: paginationElRef.current\n });\n }\n return () => {\n detachEvents();\n };\n });\n\n // update on virtual update\n useIsomorphicLayoutEffect(() => {\n updateOnVirtualData(swiperRef.current);\n }, [virtualData]);\n\n // bypass swiper instance to slides\n function renderSlides() {\n if (swiperParams.virtual) {\n return renderVirtual(swiperRef.current, slides, virtualData);\n }\n return slides.map((child, index) => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper: swiperRef.current,\n swiperSlideIndex: index\n });\n });\n }\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: swiperElRef,\n className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`)\n }, restProps), /*#__PURE__*/React.createElement(SwiperContext.Provider, {\n value: swiperRef.current\n }, slots['container-start'], /*#__PURE__*/React.createElement(WrapperTag, {\n className: wrapperClass(swiperParams.wrapperClass)\n }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n ref: prevElRef,\n className: \"swiper-button-prev\"\n }), /*#__PURE__*/React.createElement(\"div\", {\n ref: nextElRef,\n className: \"swiper-button-next\"\n })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollbarElRef,\n className: \"swiper-scrollbar\"\n }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: paginationElRef,\n className: \"swiper-pagination\"\n }), slots['container-end']));\n});\nSwiper.displayName = 'Swiper';\n\nconst SwiperSlide = /*#__PURE__*/forwardRef(function (_temp, externalRef) {\n let {\n tag: Tag = 'div',\n children,\n className = '',\n swiper,\n zoom,\n lazy,\n virtualIndex,\n swiperSlideIndex,\n ...rest\n } = _temp === void 0 ? {} : _temp;\n const slideElRef = useRef(null);\n const [slideClasses, setSlideClasses] = useState('swiper-slide');\n const [lazyLoaded, setLazyLoaded] = useState(false);\n function updateClasses(_s, el, classNames) {\n if (el === slideElRef.current) {\n setSlideClasses(classNames);\n }\n }\n useIsomorphicLayoutEffect(() => {\n if (typeof swiperSlideIndex !== 'undefined') {\n slideElRef.current.swiperSlideIndex = swiperSlideIndex;\n }\n if (externalRef) {\n externalRef.current = slideElRef.current;\n }\n if (!slideElRef.current || !swiper) {\n return;\n }\n if (swiper.destroyed) {\n if (slideClasses !== 'swiper-slide') {\n setSlideClasses('swiper-slide');\n }\n return;\n }\n swiper.on('_slideClass', updateClasses);\n // eslint-disable-next-line\n return () => {\n if (!swiper) return;\n swiper.off('_slideClass', updateClasses);\n };\n });\n useIsomorphicLayoutEffect(() => {\n if (swiper && slideElRef.current && !swiper.destroyed) {\n setSlideClasses(swiper.getSlideClasses(slideElRef.current));\n }\n }, [swiper]);\n const slideData = {\n isActive: slideClasses.indexOf('swiper-slide-active') >= 0,\n isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0,\n isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0,\n isNext: slideClasses.indexOf('swiper-slide-next') >= 0\n };\n const renderChildren = () => {\n return typeof children === 'function' ? children(slideData) : children;\n };\n const onLoad = () => {\n setLazyLoaded(true);\n };\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: slideElRef,\n className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`),\n \"data-swiper-slide-index\": virtualIndex,\n onLoad: onLoad\n }, rest), zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {\n value: slideData\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-zoom-container\",\n \"data-swiper-zoom\": typeof zoom === 'number' ? zoom : undefined\n }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-lazy-preloader\"\n }))), !zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {\n value: slideData\n }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-lazy-preloader\"\n })));\n});\nSwiperSlide.displayName = 'SwiperSlide';\n\nexport { Swiper, SwiperSlide, useSwiper, useSwiperSlide };\n","import { e as extend, p as paramsList, i as isObject, n as needsNavigation, a as needsPagination, b as needsScrollbar } from './update-swiper.mjs';\nimport { d as defaults } from './swiper-core.mjs';\n\nfunction getParams(obj, splitEvents) {\n if (obj === void 0) {\n obj = {};\n }\n if (splitEvents === void 0) {\n splitEvents = true;\n }\n const params = {\n on: {}\n };\n const events = {};\n const passedParams = {};\n extend(params, defaults);\n params._emitClasses = true;\n params.init = false;\n const rest = {};\n const allowedParams = paramsList.map(key => key.replace(/_/, ''));\n const plainObj = Object.assign({}, obj);\n Object.keys(plainObj).forEach(key => {\n if (typeof obj[key] === 'undefined') return;\n if (allowedParams.indexOf(key) >= 0) {\n if (isObject(obj[key])) {\n params[key] = {};\n passedParams[key] = {};\n extend(params[key], obj[key]);\n extend(passedParams[key], obj[key]);\n } else {\n params[key] = obj[key];\n passedParams[key] = obj[key];\n }\n } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {\n if (splitEvents) {\n events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n } else {\n params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n }\n } else {\n rest[key] = obj[key];\n }\n });\n ['navigation', 'pagination', 'scrollbar'].forEach(key => {\n if (params[key] === true) params[key] = {};\n if (params[key] === false) delete params[key];\n });\n return {\n params,\n passedParams,\n rest,\n events\n };\n}\n\nfunction mountSwiper(_ref, swiperParams) {\n let {\n el,\n nextEl,\n prevEl,\n paginationEl,\n scrollbarEl,\n swiper\n } = _ref;\n if (needsNavigation(swiperParams) && nextEl && prevEl) {\n swiper.params.navigation.nextEl = nextEl;\n swiper.originalParams.navigation.nextEl = nextEl;\n swiper.params.navigation.prevEl = prevEl;\n swiper.originalParams.navigation.prevEl = prevEl;\n }\n if (needsPagination(swiperParams) && paginationEl) {\n swiper.params.pagination.el = paginationEl;\n swiper.originalParams.pagination.el = paginationEl;\n }\n if (needsScrollbar(swiperParams) && scrollbarEl) {\n swiper.params.scrollbar.el = scrollbarEl;\n swiper.originalParams.scrollbar.el = scrollbarEl;\n }\n swiper.init(el);\n}\n\nfunction getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) {\n const keys = [];\n if (!oldParams) return keys;\n const addKey = key => {\n if (keys.indexOf(key) < 0) keys.push(key);\n };\n if (children && oldChildren) {\n const oldChildrenKeys = oldChildren.map(getKey);\n const childrenKeys = children.map(getKey);\n if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children');\n if (oldChildren.length !== children.length) addKey('children');\n }\n const watchParams = paramsList.filter(key => key[0] === '_').map(key => key.replace(/_/, ''));\n watchParams.forEach(key => {\n if (key in swiperParams && key in oldParams) {\n if (isObject(swiperParams[key]) && isObject(oldParams[key])) {\n const newKeys = Object.keys(swiperParams[key]);\n const oldKeys = Object.keys(oldParams[key]);\n if (newKeys.length !== oldKeys.length) {\n addKey(key);\n } else {\n newKeys.forEach(newKey => {\n if (swiperParams[key][newKey] !== oldParams[key][newKey]) {\n addKey(key);\n }\n });\n oldKeys.forEach(oldKey => {\n if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);\n });\n }\n } else if (swiperParams[key] !== oldParams[key]) {\n addKey(key);\n }\n }\n });\n return keys;\n}\n\nconst updateOnVirtualData = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return;\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) {\n swiper.parallax.setTranslate();\n }\n};\n\nexport { getChangedParams as a, getParams as g, mountSwiper as m, updateOnVirtualData as u };\n","import React from 'react';\nimport { f7, ListItem, List, Icon, Page } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from '../../utils/device';\n\nconst HighlightColorPalette = ({changeColor, curColor}) => {\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const highlightColors = [\n ['ffff00', '00ff00', '00ffff', 'ff00ff', '0000ff', 'ff0000', '00008b', '008b8b'],\n ['006400', '800080', '8b0000', '808000', 'ffffff', 'd3d3d3', 'a9a9a9', '000000']\n ];\n\n return (\n \n \n
                \n {highlightColors.map((row, index) => (\n
                \n {row.map((effect, index) => {\n return (\n {changeColor(effect)}}>\n );\n })}\n
                \n ))}\n
                \n
                \n changeColor('transparent')} title={t('Common.HighlightColorPalette.textNoFill')}>\n {!isAndroid && }\n \n
                \n )\n};\n\nexport default HighlightColorPalette;","import React, {Fragment, useState, useEffect} from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport {f7, View, List, ListItem, ListButton, ListInput, Icon, Button, Page, Navbar, Segmented, BlockTitle, NavRight, Link} from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport { ThemeColorPalette, CustomColorPicker } from '../../../../../common/mobile/lib/component/ThemeColorPalette.jsx';\nimport { Swiper, SwiperSlide } from 'swiper/react';\nimport { LocalStorage } from '../../../../../common/mobile/utils/LocalStorage.mjs';\nimport HighlightColorPalette from '../../../../../common/mobile/lib/component/HighlightColorPalette.jsx';\n\nconst EditText = props => {\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const _t = t('View.Edit', {returnObjects: true});\n const metricText = Common.Utils.Metric.getCurrentMetricName();\n const storeTextSettings = props.storeTextSettings;\n const storeFocusObjects = props.storeFocusObjects;\n const shapeObject = storeFocusObjects.shapeObject;\n const fontName = storeTextSettings.fontName || _t.textFonts;\n const fontSize = storeTextSettings.fontSize;\n const fontColor = storeTextSettings.textColor;\n const highlightColor = storeTextSettings.highlightColor;\n const displaySize = typeof fontSize === 'undefined' || fontSize == '' ? _t.textAuto : fontSize + ' ' + _t.textPt;\n const isBold = storeTextSettings.isBold;\n const isItalic = storeTextSettings.isItalic;\n const isUnderline = storeTextSettings.isUnderline;\n const isStrikethrough = storeTextSettings.isStrikethrough;\n const paragraphAlign = storeTextSettings.paragraphAlign;\n const paragraphValign = storeTextSettings.paragraphValign;\n const canIncreaseIndent = storeTextSettings.canIncreaseIndent;\n const canDecreaseIndent = storeTextSettings.canDecreaseIndent;\n const paragraphObj = storeFocusObjects.paragraphObject;\n let spaceBefore;\n let spaceAfter;\n let previewList;\n switch(storeTextSettings.listType) {\n case -1: \n previewList = '';\n break;\n case 0: \n previewList = t('View.Edit.textBullets');\n break;\n case 1: \n previewList = t('View.Edit.textNumbers');\n break;\n }\n\n if(paragraphObj) {\n spaceBefore = paragraphObj.get_Spacing().get_Before() < 0 ? paragraphObj.get_Spacing().get_Before() : Common.Utils.Metric.fnRecalcFromMM(paragraphObj.get_Spacing().get_Before());\n spaceAfter = paragraphObj.get_Spacing().get_After() < 0 ? paragraphObj.get_Spacing().get_After() : Common.Utils.Metric.fnRecalcFromMM(paragraphObj.get_Spacing().get_After());\n }\n\n const displayBefore = typeof spaceBefore === 'undefined' || spaceBefore < 0 ? _t.textAuto : parseFloat(spaceBefore.toFixed(2)) + ' ' + metricText;\n const displayAfter = typeof spaceAfter === 'undefined' || spaceAfter < 0 ? _t.textAuto : parseFloat(spaceAfter.toFixed(2)) + ' ' + metricText;\n\n const fontColorPreview = fontColor !== 'auto' ?\n :\n ;\n\n const highlightColorPreview = highlightColor !== 'transparent' ?\n :\n ;\n\n return (\n \n \n \n \n \n \n \n {!isAndroid ?\n {fontColorPreview} :\n fontColorPreview\n }\n \n \n {!isAndroid ?\n {highlightColorPreview} : highlightColorPreview\n }\n \n \n {!isAndroid && }\n \n \n {paragraphObj || storeFocusObjects.settings.includes('text') ? (\n \n \n \n \n \n \n \n \n \n \n \n {shapeObject &&\n \n {!isAndroid && }\n \n }\n \n
                {previewList}
                \n {!isAndroid && }\n
                \n \n {!isAndroid && }\n \n
                \n {_t.textDistanceFromText}\n \n \n {!isAndroid &&
                {displayBefore}
                }\n
                \n \n \n {isAndroid && }\n \n \n
                \n
                \n \n {!isAndroid &&
                {displayAfter}
                }\n
                \n \n \n {isAndroid && }\n \n \n
                \n
                \n
                \n
                \n ) : null}\n
                \n );\n};\n\nconst PageOrientationTextShape = props => {\n const { t } = useTranslation();\n const _t = t('View.Edit', {returnObjects: true});\n const shapeObject = props.shapeObject;\n const [directionTextShape, setDirectionTextShape] = useState(shapeObject.get_Vert());\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {\n setDirectionTextShape(Asc.c_oAscVertDrawingText.normal);\n props.setOrientationTextShape(Asc.c_oAscVertDrawingText.normal);\n }}>\n \n \n {\n setDirectionTextShape(Asc.c_oAscVertDrawingText.vert);\n props.setOrientationTextShape(Asc.c_oAscVertDrawingText.vert);\n }}>\n \n \n {\n setDirectionTextShape(Asc.c_oAscVertDrawingText.vert270);\n props.setOrientationTextShape(Asc.c_oAscVertDrawingText.vert270);\n }}>\n \n \n \n \n )\n}\n\nconst PageFonts = props => {\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const _t = t('View.Edit', {returnObjects: true});\n const storeTextSettings = props.storeTextSettings;\n const size = storeTextSettings.fontSize;\n const displaySize = typeof size === 'undefined' || size == '' ? _t.textAuto : size + ' ' + _t.textPt;\n const curFontName = storeTextSettings.fontName;\n const fonts = storeTextSettings.fontsArray;\n const iconWidth = storeTextSettings.iconWidth;\n const iconHeight = storeTextSettings.iconHeight;\n const thumbs = storeTextSettings.thumbs;\n const thumbIdx = storeTextSettings.thumbIdx;\n const thumbCanvas = storeTextSettings.thumbCanvas;\n const thumbContext = storeTextSettings.thumbContext;\n const spriteCols = storeTextSettings.spriteCols;\n const spriteThumbs = storeTextSettings.spriteThumbs;\n const arrayRecentFonts = storeTextSettings.arrayRecentFonts;\n\n const addRecentStorage = () => {\n setRecent(getImageUri(arrayRecentFonts));\n LocalStorage.setItem('ppe-settings-recent-fonts', JSON.stringify(arrayRecentFonts));\n };\n\n const getImageUri = fonts => {\n return fonts.map(font => {\n let index = Math.floor(font.imgidx/spriteCols);\n return spriteThumbs.getImage(index, thumbCanvas, thumbContext).toDataURL();\n });\n };\n\n const [stateRecent, setRecent] = useState(() => getImageUri(arrayRecentFonts));\n const [vlFonts, setVlFonts] = useState({\n vlData: {\n items: [],\n }\n });\n\n const renderExternal = (vl, vlData) => {\n setVlFonts((prevState) => {\n let fonts = [...prevState.vlData.items],\n drawFonts = [...vlData.items];\n\n let images = [],\n drawImages = getImageUri(drawFonts);\n for (let i = 0; i < drawFonts.length; i++) {\n fonts[i + vlData.fromIndex] = drawFonts[i];\n images[i + vlData.fromIndex] = drawImages[i];\n }\n return {vlData: {\n items: fonts,\n images,\n }}\n });\n };\n\n const paragraph = props.storeFocusObjects.paragraphObject;\n const shapeObj = props.storeFocusObjects.shapeObject;\n if (!shapeObj && !paragraph && Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n {!isAndroid &&
                {displaySize}
                }\n
                \n \n \n {isAndroid && }\n \n \n
                \n
                \n
                \n {_t.textFonts}\n {!!arrayRecentFonts.length &&\n \n {arrayRecentFonts.map((item, index) => (\n {\n props.changeFontFamily(item.name);\n }}> \n \n \n ))}\n \n }\n \n
                  \n {vlFonts.vlData.items.map((item, index) => {\n const font = item || fonts[index];\n const fontName = font.name;\n return (\n {\n props.changeFontFamily(fontName);\n storeTextSettings.addFontToRecent(font);\n addRecentStorage();\n }}>\n {vlFonts.vlData.images[index] && }\n \n )\n })}\n
                \n
                \n
                \n );\n};\n\nconst PageFontColor = props => {\n const { t } = useTranslation();\n const _t = t('View.Edit', {returnObjects: true});\n const textColor = props.storeTextSettings.textColor;\n const customColors = props.storePalette.customColors;\n\n const changeColor = (color, effectId) => {\n if (color !== 'empty') {\n if (effectId !== undefined ) {\n props.onTextColor({color: color, effectId: effectId});\n } else {\n props.onTextColor(color);\n }\n } else {\n // open custom color menu\n props.f7router.navigate('/edit-text-custom-font-color/', {props: {onTextColor: props.onTextColor}});\n }\n };\n\n const paragraph = props.storeFocusObjects.paragraphObject;\n const shapeObj = props.storeFocusObjects.shapeObject;\n if (!shapeObj && !paragraph && Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n \n \n \n );\n};\n\nconst PageCustomFontColor = props => {\n const { t } = useTranslation();\n const _t = t('View.Edit', {returnObjects: true});\n const store = props.storeTextSettings;\n let textColor = store.textColor;\n\n if (typeof textColor === 'object') {\n textColor = textColor.color;\n }\n\n const autoColor = textColor === 'auto' ? window.getComputedStyle(document.getElementById('font-color-auto')).backgroundColor : null;\n\n const onAddNewColor = (colors, color) => {\n props.storePalette.changeCustomColors(colors);\n props.onTextColor(color);\n props.f7router.back();\n };\n return(\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n )\n};\n\nconst PageHighlightColor = props => {\n const { t } = useTranslation();\n const _t = t('View.Edit', {returnObjects: true});\n const highlightColor = props.storeTextSettings.highlightColor;\n\n const changeColor = (color, effectId) => {\n if (color !== 'empty') {\n if (effectId !== undefined ) {\n props.onHighlightColor({color: color, effectId: effectId});\n } else {\n props.onHighlightColor(color);\n }\n }\n };\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n )\n};\n\nconst PageAdditionalFormatting = props => {\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const _t = t('View.Edit', {returnObjects: true});\n const storeTextSettings = props.storeTextSettings;\n const storeFocusObjects = props.storeFocusObjects;\n const paragraphObj = storeFocusObjects.paragraphObject;\n const shapeObj = storeFocusObjects.shapeObject;\n const isSuperscript = storeTextSettings.isSuperscript;\n const isSubscript = storeTextSettings.isSubscript;\n \n let isStrikeout = false;\n let isDStrikeout = false;\n let isSmallCaps = false;\n let isAllCaps = false;\n let letterSpacing = 0;\n\n if(paragraphObj) {\n isStrikeout = paragraphObj.get_Strikeout();\n isDStrikeout = paragraphObj.get_DStrikeout();\n isSmallCaps = paragraphObj.get_SmallCaps();\n isAllCaps = paragraphObj.get_AllCaps();\n letterSpacing = (paragraphObj.get_TextSpacing() === null || paragraphObj.get_TextSpacing() === undefined) ? paragraphObj.get_TextSpacing() : Common.Utils.Metric.fnRecalcFromMM(paragraphObj.get_TextSpacing());\n }\n\n if (!shapeObj && !paragraphObj && Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {props.onAdditionalStrikethrough('strikethrough', !isStrikeout)}}/>\n {props.onAdditionalStrikethrough('dbStrikethrough', !isDStrikeout)}}/>\n {props.onAdditionalScript('superscript', !isSuperscript)}}/>\n {props.onAdditionalScript('subscript', !isSubscript)}}/>\n {props.onAdditionalCaps('small', !isSmallCaps)}}/>\n {props.onAdditionalCaps('all', !isAllCaps)}}/>\n \n \n \n {!isAndroid &&
                {(Number.isInteger(letterSpacing) ? letterSpacing : letterSpacing.toFixed(2)) + ' ' + Common.Utils.Metric.getCurrentMetricName()}
                }\n
                \n \n \n {isAndroid && }\n \n \n
                \n
                \n
                \n
                \n )\n};\n\nconst PageBulletLinkSettings = (props) => {\n const { t } = useTranslation();\n const _t = t('View.Edit', {returnObjects: true});\n const [stateValue, setValue] = useState('');\n\n return (\n \n \n {_t.textAddress}\n \n {setValue(event.target.value)}}\n >\n \n \n \n {props.onInsertByUrl(stateValue)}}\n >\n {_t.textInsertImage}\n \n \n \n )\n}\n\nconst PageAddImage = (props) => {\n const { t } = useTranslation();\n const _t = t('View.Edit', {returnObjects: true});\n\n return (\n \n \n \n \n \n props.f7router.navigate('/edit-bullets-and-numbers/image-link/',\n {props: {onInsertByUrl: props.onInsertByUrl}}) }>\n \n \n \n )\n}\n\nconst PageBullets = observer(props => {\n const { t } = useTranslation();\n const _t = t('View.Edit', {returnObjects: true});\n\n const storeTextSettings = props.storeTextSettings;\n const typeBullets = storeTextSettings.typeBullets;\n const bulletArrays = [\n {id: 'id-markers-0', type: 0, subtype: -1, numberingInfo: 'undefined'},\n {id: 'id-markers-1', type: 0, subtype: 1, numberingInfo: '{\"bulletTypeface\":{\"type\":\"bufont\",\"typeface\":\"Symbol\"},\"bulletType\":{\"type\":\"char\",\"char\":\"·\",\"startAt\":null}}' },\n {id: 'id-markers-2', type: 0, subtype: 2, numberingInfo: '{\"bulletTypeface\":{\"type\":\"bufont\",\"typeface\":\"Courier New\"},\"bulletType\":{\"type\":\"char\",\"char\":\"o\",\"startAt\":null}}'},\n {id: 'id-markers-3', type: 0, subtype: 3, numberingInfo: '{\"bulletTypeface\":{\"type\":\"bufont\",\"typeface\":\"Wingdings\"},\"bulletType\":{\"type\":\"char\",\"char\":\"§\",\"startAt\":null}}' },\n {id: 'id-markers-4', type: 0, subtype: 4, numberingInfo: '{\"bulletTypeface\":{\"type\":\"bufont\",\"typeface\":\"Wingdings\"},\"bulletType\":{\"type\":\"char\",\"char\":\"v\",\"startAt\":null}}' },\n {id: 'id-markers-5', type: 0, subtype: 5, numberingInfo: '{\"bulletTypeface\":{\"type\":\"bufont\",\"typeface\":\"Wingdings\"},\"bulletType\":{\"type\":\"char\",\"char\":\"Ø\",\"startAt\":null}}' },\n {id: 'id-markers-6', type: 0, subtype: 6, numberingInfo: '{\"bulletTypeface\":{\"type\":\"bufont\",\"typeface\":\"Wingdings\"},\"bulletType\":{\"type\":\"char\",\"char\":\"ü\",\"startAt\":null}}' },\n {id: 'id-markers-7', type: 0, subtype: 7, numberingInfo: '{\"bulletTypeface\":{\"type\":\"bufont\",\"typeface\":\"Symbol\"},\"bulletType\":{\"type\":\"char\",\"char\":\"¨\",\"startAt\":null}}' }\n ];\n\n useEffect(() => {\n props.getIconsBulletsAndNumbers(bulletArrays, 0);\n }, []);\n\n const paragraph = props.storeFocusObjects.paragraphObject;\n const shapeObj = props.storeFocusObjects.shapeObject;\n if (!shapeObj && !paragraph && Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n\n return(\n \n \n {bulletArrays.map( bullet => (\n {\n storeTextSettings.resetBullets(bullet.subtype);\n props.onBullet(bullet.subtype);\n }}>\n
                \n \n
                \n
                \n ))}\n
                \n { !Device.isPhone && \n \n }\n
                \n )\n});\n\nconst PageNumbers = observer(props => {\n const storeTextSettings = props.storeTextSettings;\n const typeNumbers = storeTextSettings.typeNumbers;\n const numberArrays = [\n {id: 'id-numbers-0', type: 1, subtype: -1, numberingInfo: 'undefined'},\n {id: 'id-numbers-4', type: 1, subtype: 4, numberingInfo: '{\"bulletTypeface\":{\"type\":\"bufont\",\"typeface\":\"Arial\"},\"bulletType\":{\"type\":\"autonum\",\"char\":null,\"autoNumType\":\"alphaUcPeriod\",\"startAt\":null}}'},\n {id: 'id-numbers-5', type: 1, subtype: 5, numberingInfo: '{\"bulletTypeface\":{\"type\":\"bufont\",\"typeface\":\"Arial\"},\"bulletType\":{\"type\":\"autonum\",\"char\":null,\"autoNumType\":\"alphaLcParenR\",\"startAt\":null}}'},\n {id: 'id-numbers-6', type: 1, subtype: 6, numberingInfo: '{\"bulletTypeface\":{\"type\":\"bufont\",\"typeface\":\"Arial\"},\"bulletType\":{\"type\":\"autonum\",\"char\":null,\"autoNumType\":\"alphaLcPeriod\",\"startAt\":null}}'},\n {id: 'id-numbers-1', type: 1, subtype: 1, numberingInfo: '{\"bulletTypeface\":{\"type\":\"bufont\",\"typeface\":\"Arial\"},\"bulletType\":{\"type\":\"autonum\",\"char\":null,\"autoNumType\":\"arabicPeriod\",\"startAt\":null}}'},\n {id: 'id-numbers-2', type: 1, subtype: 2, numberingInfo: '{\"bulletTypeface\":{\"type\":\"bufont\",\"typeface\":\"Arial\"},\"bulletType\":{\"type\":\"autonum\",\"char\":null,\"autoNumType\":\"arabicParenR\",\"startAt\":null}}'},\n {id: 'id-numbers-3', type: 1, subtype: 3, numberingInfo: '{\"bulletTypeface\":{\"type\":\"bufont\",\"typeface\":\"Arial\"},\"bulletType\":{\"type\":\"autonum\",\"char\":null,\"autoNumType\":\"romanUcPeriod\",\"startAt\":null}}'},\n {id: 'id-numbers-7', type: 1, subtype: 7, numberingInfo: '{\"bulletTypeface\":{\"type\":\"bufont\",\"typeface\":\"Arial\"},\"bulletType\":{\"type\":\"autonum\",\"char\":null,\"autoNumType\":\"romanLcPeriod\",\"startAt\":null}}'}\n ];\n\n useEffect(() => {\n props.getIconsBulletsAndNumbers(numberArrays, 1);\n }, []);\n\n const paragraph = props.storeFocusObjects.paragraphObject;\n const shapeObj = props.storeFocusObjects.shapeObject;\n if (!shapeObj && !paragraph && Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n\n return (\n \n \n {numberArrays.map( number => (\n {\n storeTextSettings.resetNumbers(number.subtype);\n props.onNumber(number.subtype);\n }}>\n
                \n
                \n ))}\n
                \n
                \n );\n});\n\nconst PageBulletsAndNumbers = props => {\n const { t } = useTranslation();\n const _t = t('View.Edit', {returnObjects: true});\n const storeTextSettings = props.storeTextSettings;\n const storeFocusObjects = props.storeFocusObjects;\n \n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n \n \n \n \n \n { Device.phone &&\n \n \n \n }\n \n \n )\n}\n\nconst PageLineSpacing = props => {\n const { t } = useTranslation();\n const _t = t('View.Edit', {returnObjects: true});\n const storeTextSettings = props.storeTextSettings;\n const lineSpacing = storeTextSettings.lineSpacing;\n\n const paragraph = props.storeFocusObjects.paragraphObject;\n const shapeObj = props.storeFocusObjects.shapeObject;\n if (!shapeObj && !paragraph && Device.phone) {\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\n return null;\n }\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {props.onLineSpacing(1.0)}}>\n {props.onLineSpacing(1.15)}}>\n {props.onLineSpacing(1.5)}}>\n {props.onLineSpacing(2.0)}}>\n {props.onLineSpacing(2.5)}}>\n {props.onLineSpacing(3.0)}}>\n \n \n )\n};\n\nconst EditTextContainer = inject(\"storeTextSettings\", \"storeFocusObjects\")(observer(EditText));\nconst PageTextFonts = inject(\"storeTextSettings\", \"storeFocusObjects\")(observer(PageFonts));\nconst PageTextFontColor = inject(\"storeTextSettings\", \"storePalette\", \"storeFocusObjects\")(observer(PageFontColor));\nconst PageTextHighlightColor = inject(\"storeTextSettings\")(observer(PageHighlightColor));\nconst PageTextCustomFontColor = inject(\"storeTextSettings\", \"storePalette\")(observer(PageCustomFontColor));\nconst PageTextAddFormatting = inject(\"storeTextSettings\", \"storeFocusObjects\")(observer(PageAdditionalFormatting));\nconst PageTextBulletsAndNumbers = inject(\"storeTextSettings\", \"storeFocusObjects\")(observer(PageBulletsAndNumbers));\nconst PageTextLineSpacing = inject(\"storeTextSettings\", \"storeFocusObjects\")(observer(PageLineSpacing));\nconst PageTextBulletsLinkSettings = inject(\"storeTextSettings\", \"storeFocusObjects\")(observer(PageBulletLinkSettings));\n\nexport {\n EditTextContainer as EditText,\n PageTextFonts,\n PageTextFontColor,\n PageTextHighlightColor,\n PageTextCustomFontColor,\n PageTextAddFormatting,\n PageTextBulletsAndNumbers,\n PageTextLineSpacing,\n PageTextBulletsLinkSettings,\n PageOrientationTextShape\n};","import React, {Fragment, useState} from 'react';\r\nimport {observer, inject} from \"mobx-react\";\r\nimport {f7, Page, Navbar, List, ListItem, Row, BlockTitle, Link, Toggle, Icon, View, NavRight, ListItemCell, Range, Button, Segmented, Tab, Tabs, ListButton} from 'framework7-react';\r\nimport { ThemeColorPalette, CustomColorPicker } from '../../../../../common/mobile/lib/component/ThemeColorPalette.jsx';\r\nimport { useTranslation } from 'react-i18next';\r\nimport {Device} from '../../../../../common/mobile/utils/device';\r\n\r\nconst EditShape = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const storeFocusObjects = props.storeFocusObjects;\r\n const settings = storeFocusObjects.settings;\r\n const shapeObject = storeFocusObjects.shapeObject;\r\n const canFill = shapeObject && shapeObject.get_CanFill();\r\n const shapeType = shapeObject.asc_getType();\r\n const hideChangeType = shapeObject.get_FromChart() || shapeObject.get_FromSmartArt() \r\n || shapeType=='line' || shapeType=='bentConnector2' || shapeType=='bentConnector3'\r\n || shapeType=='bentConnector4' || shapeType=='bentConnector5' || shapeType=='curvedConnector2'\r\n || shapeType=='curvedConnector3' || shapeType=='curvedConnector4' || shapeType=='curvedConnector5'\r\n || shapeType=='straightConnector1';\r\n\r\n const isSmartArtInternal = shapeObject.get_FromSmartArtInternal();\r\n let disableRemove = !!props.storeFocusObjects.paragraphObject;\r\n\r\n return (\r\n \r\n \r\n {canFill ?\r\n \r\n :\r\n \r\n }\r\n {!hideChangeType &&\r\n \r\n }\r\n {(!isSmartArtInternal && settings.indexOf('image') === -1) &&\r\n \r\n }\r\n {settings.indexOf('image') === -1 &&\r\n \r\n }\r\n \r\n {settings.indexOf('image') === -1 &&\r\n \r\n {_t.textRemoveShape}\r\n \r\n }\r\n \r\n )\r\n};\r\n\r\nconst PaletteFill = inject(\"storeFocusObjects\", \"storeShapeSettings\", \"storePalette\")(observer(props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const storeShapeSettings = props.storeShapeSettings;\r\n const shapeObject = props.storeFocusObjects.shapeObject;\r\n const curFillColor = storeShapeSettings.fillColor ? storeShapeSettings.fillColor : storeShapeSettings.getFillColor(shapeObject);\r\n const customColors = props.storePalette.customColors;\r\n\r\n const changeColor = (color, effectId, effectValue) => {\r\n if (color !== 'empty') {\r\n if (effectId !==undefined ) {\r\n const newColor = {color: color, effectId: effectId, effectValue: effectValue};\r\n props.onFillColor(newColor);\r\n storeShapeSettings.setFillColor(newColor);\r\n } else {\r\n props.onFillColor(color);\r\n storeShapeSettings.setFillColor(color);\r\n }\r\n } else {\r\n // open custom color menu\r\n props.f7router.navigate('/edit-shape-custom-fill-color/', {props: {onFillColor: props.onFillColor}});\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}));\r\n\r\nconst PageStyle = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const storeFocusObjects = props.storeFocusObjects;\r\n const storeShapeSettings = props.storeShapeSettings;\r\n const shapeObject = storeFocusObjects.shapeObject;\r\n const isAndroid = Device.android;\r\n\r\n let borderSize, borderType, transparent;\r\n if (shapeObject) {\r\n const stroke = shapeObject.get_stroke();\r\n borderSize = stroke.get_width() * 72.0 / 25.4;\r\n borderType = stroke.get_type();\r\n transparent = shapeObject.get_fill().asc_getTransparent();\r\n }\r\n\r\n // Init border size\r\n const borderSizeTransform = storeShapeSettings.borderSizeTransform();\r\n const displayBorderSize = (borderType == Asc.c_oAscStrokeType.STROKE_NONE || borderType === undefined) ? 0 : borderSizeTransform.indexSizeByValue(borderSize);\r\n const displayTextBorderSize = (borderType == Asc.c_oAscStrokeType.STROKE_NONE || borderType === undefined) ? 0 : borderSizeTransform.sizeByValue(borderSize);\r\n const [stateBorderSize, setBorderSize] = useState(displayBorderSize);\r\n const [stateTextBorderSize, setTextBorderSize] = useState(displayTextBorderSize);\r\n \r\n // Init border color\r\n const borderColor = !storeShapeSettings.borderColorView ? storeShapeSettings.initBorderColorView(shapeObject) : storeShapeSettings.borderColorView;\r\n const displayBorderColor = borderColor !== 'transparent' ? `#${(typeof borderColor === \"object\" ? borderColor.color : borderColor)}` : borderColor;\r\n \r\n // Init opacity\r\n const opacity = transparent !== null && transparent !== undefined ? transparent / 2.55 : 100;\r\n const [stateOpacity, setOpacity] = useState(Math.round(opacity));\r\n\r\n if ((!shapeObject || storeFocusObjects.chartObject) && Device.phone) {\r\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\r\n return null;\r\n }\r\n \r\n return (\r\n \r\n \r\n
                \r\n {_t.textFill}\r\n {_t.textBorder}\r\n {_t.textEffects}\r\n {isAndroid && }\r\n
                \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n
                \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
                {_t.textSize}
                \r\n
                \r\n {setBorderSize(value); setTextBorderSize(borderSizeTransform.sizeByIndex(value));}}\r\n onRangeChanged={(value) => {props.onBorderSize(borderSizeTransform.sizeByIndex(value))}}\r\n >\r\n
                \r\n
                \r\n {stateTextBorderSize + ' ' + Common.Utils.Metric.getMetricName(Common.Utils.Metric.c_MetricUnits.pt)}\r\n
                \r\n
                \r\n \r\n \r\n \r\n
                \r\n
                \r\n \r\n \r\n \r\n
                {_t.textOpacity}
                \r\n
                \r\n {setOpacity(value)}}\r\n onRangeChanged={(value) => {props.onOpacity(value)}}\r\n >\r\n
                \r\n
                \r\n {stateOpacity + ' %'}\r\n
                \r\n
                \r\n
                \r\n
                \r\n
                \r\n
                \r\n )\r\n};\r\n\r\nconst PageCustomFillColor = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n let fillColor = props.storeShapeSettings.fillColor;\r\n\r\n if (typeof fillColor === 'object') {\r\n fillColor = fillColor.color;\r\n }\r\n\r\n const onAddNewColor = (colors, color) => {\r\n props.storePalette.changeCustomColors(colors);\r\n props.onFillColor(color);\r\n props.storeShapeSettings.setFillColor(color);\r\n props.f7router.back();\r\n };\r\n\r\n return(\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst PageStyleNoFill = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const storeShapeSettings = props.storeShapeSettings;\r\n const storeFocusObjects = props.storeFocusObjects;\r\n const shapeObject = storeFocusObjects.shapeObject;\r\n\r\n let borderSize, borderType;\r\n if (shapeObject) {\r\n const stroke = shapeObject.get_stroke();\r\n borderSize = stroke.get_width() * 72.0 / 25.4;\r\n borderType = stroke.get_type();\r\n }\r\n\r\n // Init border size\r\n\r\n const borderSizeTransform = storeShapeSettings.borderSizeTransform();\r\n const displayBorderSize = (borderType == Asc.c_oAscStrokeType.STROKE_NONE || borderType === undefined) ? 0 : borderSizeTransform.indexSizeByValue(borderSize);\r\n const displayTextBorderSize = (borderType == Asc.c_oAscStrokeType.STROKE_NONE || borderType === undefined) ? 0 : borderSizeTransform.sizeByValue(borderSize);\r\n const [stateBorderSize, setBorderSize] = useState(displayBorderSize);\r\n const [stateTextBorderSize, setTextBorderSize] = useState(displayTextBorderSize);\r\n\r\n // Init border color\r\n\r\n const borderColor = !storeShapeSettings.borderColorView ? storeShapeSettings.initBorderColorView(shapeObject) : storeShapeSettings.borderColorView;\r\n const displayBorderColor = borderColor !== 'transparent' ? `#${(typeof borderColor === \"object\" ? borderColor.color : borderColor)}` : borderColor;\r\n\r\n if ((!shapeObject || storeFocusObjects.chartObject) && Device.phone) {\r\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n
                {_t.textSize}
                \r\n
                \r\n {setBorderSize(value); setTextBorderSize(borderSizeTransform.sizeByIndex(value));}}\r\n onRangeChanged={(value) => {props.onBorderSize(borderSizeTransform.sizeByIndex(value))}}\r\n >\r\n
                \r\n
                \r\n {stateTextBorderSize + ' ' + Common.Utils.Metric.getMetricName(Common.Utils.Metric.c_MetricUnits.pt)}\r\n
                \r\n
                \r\n \r\n \r\n \r\n
                \r\n
                \r\n )\r\n};\r\n\r\nconst PageReplace = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const storeShapeSettings = props.storeShapeSettings;\r\n const storeFocusObjects = props.storeFocusObjects;\r\n\r\n let shapes = storeShapeSettings.getStyleGroups();\r\n shapes.splice(0, 1); // Remove line shapes\r\n\r\n if ((!storeFocusObjects.shapeObject || storeFocusObjects.chartObject) && Device.phone) {\r\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n {shapes.map((row, indexRow) => {\r\n return (\r\n
                  \r\n {row.map((shape, index) => {\r\n return (\r\n
                • {props.onReplace(shape.type)}}>\r\n
                  \r\n
                  \r\n
                • \r\n )\r\n })}\r\n
                \r\n )\r\n })}\r\n
                \r\n )\r\n};\r\n\r\nconst PageReorder = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const storeFocusObjects = props.storeFocusObjects;\r\n\r\n if ((!storeFocusObjects.shapeObject || storeFocusObjects.chartObject) && Device.phone) {\r\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n {props.onReorder('all-up')}} className='no-indicator'>\r\n \r\n \r\n {props.onReorder('all-down')}} className='no-indicator'>\r\n \r\n \r\n {props.onReorder('move-up')}} className='no-indicator'>\r\n \r\n \r\n {props.onReorder('move-down')}} className='no-indicator'>\r\n \r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst PageAlign = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const storeFocusObjects = props.storeFocusObjects;\r\n\r\n if ((!storeFocusObjects.shapeObject || storeFocusObjects.chartObject) && Device.phone) {\r\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n {props.onAlign('align-left')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('align-center')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('align-right')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('align-top')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('align-middle')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('align-bottom')}} className='no-indicator'>\r\n \r\n \r\n \r\n \r\n {props.onAlign('distrib-hor')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('distrib-vert')}} className='no-indicator'>\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nconst PageBorderColor = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const borderColor = props.storeShapeSettings.borderColorView;\r\n const customColors = props.storePalette.customColors;\r\n\r\n const changeColor = (color, effectId, effectValue) => {\r\n if (color !== 'empty') {\r\n if (effectId !==undefined ) {\r\n const newColor = {color: color, effectId: effectId, effectValue: effectValue};\r\n props.onBorderColor(newColor);\r\n props.storeShapeSettings.setBorderColor(newColor);\r\n } else {\r\n props.onBorderColor(color);\r\n props.storeShapeSettings.setBorderColor(color);\r\n }\r\n } else {\r\n // open custom color menu\r\n props.f7router.navigate('/edit-shape-custom-border-color/', {props: {onBorderColor: props.onBorderColor}});\r\n }\r\n };\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst PageCustomBorderColor = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n let borderColor = props.storeShapeSettings.borderColorView;\r\n if (typeof borderColor === 'object') {\r\n borderColor = borderColor.color;\r\n }\r\n const onAddNewColor = (colors, color) => {\r\n props.storePalette.changeCustomColors(colors);\r\n props.onBorderColor(color);\r\n props.storeShapeSettings.setBorderColor(color);\r\n props.f7router.back();\r\n };\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst EditShapeContainer = inject(\"storeShapeSettings\", \"storeFocusObjects\")(observer(EditShape));\r\nconst PageShapeStyle = inject(\"storeFocusObjects\", \"storeShapeSettings\")(observer(PageStyle));\r\nconst PageShapeStyleNoFill = inject(\"storeFocusObjects\", \"storeShapeSettings\")(observer(PageStyleNoFill));\r\nconst PageShapeCustomFillColor = inject(\"storeFocusObjects\", \"storeShapeSettings\", \"storePalette\")(observer(PageCustomFillColor));\r\nconst PageReplaceContainer = inject(\"storeShapeSettings\",\"storeFocusObjects\")(observer(PageReplace));\r\nconst PageReorderContainer = inject(\"storeFocusObjects\")(observer(PageReorder));\r\nconst PageAlignContainer = inject(\"storeFocusObjects\")(observer(PageAlign));\r\nconst PageShapeBorderColor = inject(\"storeShapeSettings\", \"storePalette\")(observer(PageBorderColor));\r\nconst PageShapeCustomBorderColor = inject(\"storeShapeSettings\", \"storePalette\")(observer(PageCustomBorderColor));\r\n\r\nexport {\r\n EditShapeContainer as EditShape,\r\n PageShapeStyle,\r\n PageShapeStyleNoFill,\r\n PageReplaceContainer,\r\n PageReorderContainer,\r\n PageAlignContainer,\r\n PageShapeBorderColor,\r\n PageShapeCustomBorderColor,\r\n PageShapeCustomFillColor\r\n}","import React, {Fragment, useState} from 'react';\r\nimport {observer, inject} from \"mobx-react\";\r\nimport {f7, Page, Navbar, List, ListItem, Row, BlockTitle, Link, Toggle, Icon, View, ListItemCell, Range, Button, Segmented, Tab, Tabs, ListInput, ListButton, NavRight} from 'framework7-react';\r\nimport { ThemeColorPalette, CustomColorPicker } from '../../../../../common/mobile/lib/component/ThemeColorPalette.jsx';\r\nimport { useTranslation } from 'react-i18next';\r\nimport {Device} from '../../../../../common/mobile/utils/device';\r\n\r\nconst EditImage = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const storeFocusObjects = props.storeFocusObjects;\r\n const imageObject = storeFocusObjects.imageObject;\r\n const pluginGuid = imageObject.asc_getPluginGuid();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {_t.textActualSize}\r\n {t('View.Edit.textDeleteImage')}\r\n \r\n \r\n )\r\n};\r\n\r\nconst PageReorder = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const imageObject = props.storeFocusObjects.imageObject;\r\n\r\n if (!imageObject && Device.phone) {\r\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n {props.onReorder('all-up')}} className='no-indicator'>\r\n \r\n \r\n {props.onReorder('all-down')}} className='no-indicator'>\r\n \r\n \r\n {props.onReorder('move-up')}} className='no-indicator'>\r\n \r\n \r\n {props.onReorder('move-down')}} className='no-indicator'>\r\n \r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst PageAlign = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const imageObject = props.storeFocusObjects.imageObject;\r\n\r\n if (!imageObject && Device.phone) {\r\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n {props.onAlign('align-left')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('align-center')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('align-right')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('align-top')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('align-middle')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('align-bottom')}} className='no-indicator'>\r\n \r\n \r\n \r\n \r\n {props.onAlign('distrib-hor')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('distrib-vert')}} className='no-indicator'>\r\n \r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst PageReplace = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const imageObject = props.storeFocusObjects.imageObject;\r\n \r\n if (!imageObject && Device.phone) {\r\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n {props.onReplaceByFile()}}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst PageLinkSettings = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const [stateValue, setValue] = useState('');\r\n\r\n const onReplace = () => {\r\n if (stateValue.trim().length > 0) {\r\n if ((/((^https?)|(^ftp)):\\/\\/.+/i.test(stateValue))) {\r\n props.onReplaceByUrl(stateValue.trim());\r\n } else {\r\n f7.dialog.alert(_t.textNotUrl, _t.notcriticalErrorTitle);\r\n }\r\n } else {\r\n f7.dialog.alert(_t.textEmptyImgUrl, _t.notcriticalErrorTitle);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n {_t.textAddress}\r\n \r\n {setValue(event.target.value)}}\r\n >\r\n \r\n \r\n \r\n {onReplace()}}>\r\n \r\n \r\n )\r\n};\r\n\r\nconst EditImageContainer = inject(\"storeFocusObjects\")(observer(EditImage));\r\nconst PageReplaceContainer = inject(\"storeFocusObjects\")(observer(PageReplace));\r\nconst PageReorderContainer = inject(\"storeFocusObjects\")(observer(PageReorder));\r\nconst PageAlignContainer = inject(\"storeFocusObjects\")(observer(PageAlign));\r\nconst PageLinkSettingsContainer = inject(\"storeFocusObjects\")(observer(PageLinkSettings));\r\n\r\nexport {\r\n EditImageContainer as EditImage,\r\n PageReplaceContainer as PageImageReplace,\r\n PageReorderContainer as PageImageReorder,\r\n PageAlignContainer as PageImageAlign,\r\n PageLinkSettingsContainer as PageLinkSettings\r\n}","import React, {Fragment, useState, useEffect} from 'react';\r\nimport {observer, inject} from \"mobx-react\";\r\nimport {f7, Page, Navbar, List, ListItem, ListButton, BlockTitle,SkeletonBlock, Range, Toggle, Icon, Link, Tabs, Tab, NavRight} from 'framework7-react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport {Device} from '../../../../../common/mobile/utils/device';\r\nimport {CustomColorPicker, ThemeColorPalette} from \"../../../../../common/mobile/lib/component/ThemeColorPalette.jsx\";\r\n\r\n// Style\r\n\r\nconst StyleTemplates = inject(\"storeFocusObjects\",\"storeTableSettings\")(observer(({onStyleClick,storeTableSettings,storeFocusObjects,onGetTableStylesPreviews}) => {\r\n const tableObject = storeFocusObjects.tableObject;\r\n const styleId = tableObject ? tableObject.get_TableStyle() : null;\r\n const [stateId, setId] = useState(styleId);\r\n const styles = storeTableSettings.arrayStyles;\r\n\r\n useEffect(() => {\r\n if(!styles.length) onGetTableStylesPreviews();\r\n }, []);\r\n\r\n if (!tableObject && Device.phone) {\r\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\r\n return null;\r\n }\r\n \r\n return (\r\n
                \r\n
                  \r\n {!styles.length ?\r\n Array.from({ length: 34 }).map((item,index) => (\r\n
                • \r\n \r\n \r\n \r\n \r\n \r\n
                • \r\n )) :\r\n styles.map((style, index) => {\r\n return (\r\n
                • {onStyleClick(style.templateId); setId(style.templateId)}}>\r\n \r\n
                • \r\n )\r\n })\r\n }\r\n
                \r\n
                \r\n )\r\n}));\r\n\r\nconst PageStyleOptions = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n\r\n const tableObject = props.storeFocusObjects.tableObject;\r\n let tableLook, isFirstRow, isLastRow, isBandHor, isFirstCol, isLastCol, isBandVer;\r\n\r\n if (tableObject) {\r\n tableLook = tableObject.get_TableLook();\r\n isFirstRow = tableLook.get_FirstRow();\r\n isLastRow = tableLook.get_LastRow();\r\n isBandHor = tableLook.get_BandHor();\r\n isFirstCol = tableLook.get_FirstCol();\r\n isLastCol = tableLook.get_LastCol();\r\n isBandVer = tableLook.get_BandVer();\r\n }\r\n\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n {props.onCheckTemplateChange(tableLook, 0, !isFirstRow)}}/>\r\n \r\n \r\n {props.onCheckTemplateChange(tableLook, 1, !isLastRow)}}/>\r\n \r\n \r\n {props.onCheckTemplateChange(tableLook, 2, !isBandHor)}}/>\r\n \r\n \r\n \r\n \r\n {props.onCheckTemplateChange(tableLook, 3, !isFirstCol)}}/>\r\n \r\n \r\n {props.onCheckTemplateChange(tableLook, 4, !isLastCol)}}/>\r\n \r\n \r\n {props.onCheckTemplateChange(tableLook, 5, !isBandVer)}}/>\r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst PageCustomFillColor = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const tableObject = props.storeFocusObjects.tableObject;\r\n let fillColor = tableObject && props.storeTableSettings.getFillColor(tableObject);\r\n\r\n if (typeof fillColor === 'object') {\r\n fillColor = fillColor.color;\r\n }\r\n\r\n const onAddNewColor = (colors, color) => {\r\n props.storePalette.changeCustomColors(colors);\r\n props.onFillColor(color);\r\n props.f7router.back();\r\n };\r\n\r\n return(\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst TabFillColor = inject(\"storeFocusObjects\", \"storeTableSettings\", \"storePalette\")(observer(props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const tableObject = props.storeFocusObjects.tableObject;\r\n const fillColor = tableObject && props.storeTableSettings.getFillColor(tableObject);\r\n const customColors = props.storePalette.customColors;\r\n\r\n const changeColor = (color, effectId, effectValue) => {\r\n if (color !== 'empty') {\r\n if (effectId !== undefined ) {\r\n const newColor = {color: color, effectId: effectId, effectValue: effectValue};\r\n props.onFillColor(newColor);\r\n } else {\r\n props.onFillColor(color);\r\n }\r\n } else {\r\n // open custom color menu\r\n props.f7router.navigate('/edit-table-custom-fill-color/', {props: {onFillColor: props.onFillColor}});\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}));\r\n\r\nconst PageCustomBorderColor = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n let borderColor = props.storeTableSettings.cellBorderColor;\r\n\r\n if (typeof borderColor === 'object') {\r\n borderColor = borderColor.color;\r\n }\r\n\r\n const onAddNewColor = (colors, color) => {\r\n props.storePalette.changeCustomColors(colors);\r\n props.storeTableSettings.updateCellBorderColor(color);\r\n props.f7router.back();\r\n };\r\n const autoColor = props.storeTableSettings.colorAuto === 'auto' ? window.getComputedStyle(document.getElementById('font-color-auto')).backgroundColor : null;\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst PageBorderColor = props => {\r\n const { t } = useTranslation();\r\n const storeTableSettings = props.storeTableSettings;\r\n const borderColor = storeTableSettings.cellBorderColor;\r\n const customColors = props.storePalette.customColors;\r\n\r\n const changeColor = (color, effectId, effectValue) => {\r\n if (color !== 'empty') {\r\n storeTableSettings.setAutoColor(null);\r\n if (effectId !==undefined ) {\r\n const newColor = {color: color, effectId: effectId, effectValue: effectValue};\r\n storeTableSettings.updateCellBorderColor(newColor);\r\n } else {\r\n storeTableSettings.updateCellBorderColor(color);\r\n }\r\n } else {\r\n // open custom color menu\r\n props.f7router.navigate('/edit-table-custom-border-color/');\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n {\r\n storeTableSettings.setAutoColor('auto');\r\n }}>\r\n
                \r\n
                \r\n
                \r\n
                \r\n
                \r\n \r\n \r\n \r\n \r\n
                \r\n )\r\n};\r\n\r\nconst TabBorder = inject(\"storeFocusObjects\", \"storeTableSettings\")(observer(props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const storeTableSettings = props.storeTableSettings;\r\n const borderSizeTransform = storeTableSettings.borderSizeTransform();\r\n const borderSize = storeTableSettings.cellBorderWidth;\r\n const displayBorderSize = borderSizeTransform.indexSizeByValue(borderSize);\r\n const displayTextBorderSize = borderSizeTransform.sizeByValue(borderSize);\r\n const [stateBorderSize, setBorderSize] = useState(displayBorderSize);\r\n const [stateTextBorderSize, setTextBorderSize] = useState(displayTextBorderSize);\r\n\r\n const onBorderType = (type) => {\r\n storeTableSettings.updateBordersStyle(type);\r\n props.onBorderTypeClick(storeTableSettings.cellBorders);\r\n };\r\n\r\n const borderColor = storeTableSettings.cellBorderColor;\r\n const displayBorderColor = borderColor !== 'transparent' ? `#${(typeof borderColor === \"object\" ? borderColor.color : borderColor)}` : borderColor;\r\n\r\n return (\r\n \r\n \r\n
                {_t.textSize}
                \r\n
                \r\n {\r\n setBorderSize(value);\r\n setTextBorderSize(borderSizeTransform.sizeByIndex(value));\r\n }}\r\n onRangeChanged={(value) => {storeTableSettings.updateCellBorderWidth(borderSizeTransform.sizeByIndex(value));}}\r\n >\r\n
                \r\n
                \r\n {stateTextBorderSize + ' ' + Common.Utils.Metric.getMetricName(Common.Utils.Metric.c_MetricUnits.pt)}\r\n
                \r\n
                \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
                \r\n )\r\n}));\r\n\r\nconst PageStyle = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const storeTableSettings = props.storeTableSettings;\r\n const templates = storeTableSettings.styles;\r\n const isAndroid = Device.android;\r\n\r\n return (\r\n \r\n \r\n
                \r\n {_t.textStyle}\r\n {_t.textFill}\r\n {_t.textBorder}\r\n {isAndroid && }\r\n
                \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n
                \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
                \r\n )\r\n};\r\n\r\nconst PageReorder = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n\r\n const tableObject = props.storeFocusObjects.tableObject;\r\n if (!tableObject && Device.phone) {\r\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n {props.onReorder('all-up')}} className='no-indicator'>\r\n \r\n \r\n {props.onReorder('all-down')}} className='no-indicator'>\r\n \r\n \r\n {props.onReorder('move-up')}} className='no-indicator'>\r\n \r\n \r\n {props.onReorder('move-down')}} className='no-indicator'>\r\n \r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst PageAlign = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n\r\n const tableObject = props.storeFocusObjects.tableObject;\r\n if (!tableObject && Device.phone) {\r\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n {props.onAlign('align-left')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('align-center')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('align-right')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('align-top')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('align-middle')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('align-bottom')}} className='no-indicator'>\r\n \r\n \r\n \r\n \r\n {props.onAlign('distrib-hor')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('distrib-vert')}} className='no-indicator'>\r\n \r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst EditTable = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const metricText = Common.Utils.Metric.getCurrentMetricName();\r\n const storeFocusObjects = props.storeFocusObjects;\r\n const tableObject = storeFocusObjects.tableObject;\r\n const storeTableSettings = props.storeTableSettings;\r\n const distance = Common.Utils.Metric.fnRecalcFromMM(storeTableSettings.getCellMargins(tableObject));\r\n const [stateDistance, setDistance] = useState(distance);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.onRemoveTable()}} className='button-red button-fill button-raised'>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {_t.textCellMargins}\r\n \r\n \r\n
                \r\n {setDistance(value)}}\r\n onRangeChanged={(value) => {props.onOptionMargin(value)}}\r\n >\r\n
                \r\n
                \r\n {stateDistance + ' ' + metricText}\r\n
                \r\n
                \r\n
                \r\n
                \r\n
                \r\n )\r\n};\r\n\r\nconst EditTableContainer = inject(\"storeFocusObjects\", \"storeTableSettings\")(observer(EditTable));\r\nconst PageTableStyle = inject(\"storeFocusObjects\",\"storeTableSettings\")(observer(PageStyle));\r\nconst PageTableStyleOptions = inject(\"storeFocusObjects\",\"storeTableSettings\")(observer(PageStyleOptions));\r\nconst PageTableCustomFillColor = inject(\"storeFocusObjects\",\"storeTableSettings\", \"storePalette\")(observer(PageCustomFillColor));\r\nconst PageTableBorderColor = inject(\"storeFocusObjects\",\"storeTableSettings\", \"storePalette\")(observer(PageBorderColor));\r\nconst PageTableCustomBorderColor = inject(\"storeFocusObjects\",\"storeTableSettings\", \"storePalette\")(observer(PageCustomBorderColor));\r\nconst PageTableReorder = inject(\"storeFocusObjects\")(observer(PageReorder));\r\nconst PageTableAlign = inject(\"storeFocusObjects\")(observer(PageAlign));\r\n\r\nexport {\r\n EditTableContainer as EditTable,\r\n PageTableStyle,\r\n PageTableStyleOptions,\r\n PageTableCustomFillColor,\r\n PageTableBorderColor,\r\n PageTableCustomBorderColor,\r\n PageTableReorder,\r\n PageTableAlign\r\n}","import React, {Fragment, useState} from 'react';\r\nimport {observer, inject} from \"mobx-react\";\r\nimport {List, ListItem, ListButton, Icon, Row, Page, Navbar, BlockTitle, Toggle, Range, Link, Tabs, Tab, NavRight} from 'framework7-react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport {Device} from '../../../../../common/mobile/utils/device';\r\nimport {CustomColorPicker, ThemeColorPalette} from \"../../../../../common/mobile/lib/component/ThemeColorPalette.jsx\";\r\nimport { f7 } from 'framework7-react';\r\nimport { Swiper, SwiperSlide } from 'swiper/react';\r\n\r\nconst PageCustomFillColor = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n let fillColor = props.storeChartSettings.fillColor;\r\n\r\n if (typeof fillColor === 'object') {\r\n fillColor = fillColor.color;\r\n }\r\n\r\n const onAddNewColor = (colors, color) => {\r\n props.storePalette.changeCustomColors(colors);\r\n props.onFillColor(color);\r\n props.storeChartSettings.setFillColor(color);\r\n props.f7router.back();\r\n };\r\n\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst PaletteFill = inject(\"storeFocusObjects\", \"storeChartSettings\", \"storePalette\")(observer(props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const storeChartSettings = props.storeChartSettings;\r\n const shapeProperties = props.storeFocusObjects.shapeObject;\r\n const curFillColor = storeChartSettings.fillColor ? storeChartSettings.fillColor : storeChartSettings.getFillColor(shapeProperties);\r\n const customColors = props.storePalette.customColors;\r\n\r\n const changeColor = (color, effectId, effectValue) => {\r\n if (color !== 'empty') {\r\n if (effectId !==undefined ) {\r\n const newColor = {color: color, effectId: effectId, effectValue: effectValue};\r\n props.onFillColor(newColor);\r\n storeChartSettings.setFillColor(newColor);\r\n } else {\r\n props.onFillColor(color);\r\n storeChartSettings.setFillColor(color);\r\n }\r\n } else {\r\n // open custom color menu\r\n props.f7router.navigate('/edit-chart-custom-fill-color/', {props: {onFillColor: props.onFillColor}});\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}));\r\n\r\nconst PageCustomBorderColor = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n let borderColor = props.storeChartSettings.borderColor;\r\n\r\n if (typeof borderColor === 'object') {\r\n borderColor = borderColor.color;\r\n }\r\n\r\n const onAddNewColor = (colors, color) => {\r\n props.storePalette.changeCustomColors(colors);\r\n props.onBorderColor(color);\r\n props.storeChartSettings.setBorderColor(color);\r\n props.f7router.back();\r\n };\r\n\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst PageBorderColor = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const borderColor = props.storeChartSettings.borderColor;\r\n const customColors = props.storePalette.customColors;\r\n\r\n const changeColor = (color, effectId, effectValue) => {\r\n if (color !== 'empty') {\r\n if (effectId !==undefined ) {\r\n const newColor = {color: color, effectId: effectId, effectValue: effectValue};\r\n props.onBorderColor(newColor);\r\n props.storeChartSettings.setBorderColor(newColor);\r\n } else {\r\n props.onBorderColor(color);\r\n props.storeChartSettings.setBorderColor(color);\r\n }\r\n } else {\r\n // open custom color menu\r\n props.f7router.navigate('/edit-chart-custom-border-color/', {props: {onBorderColor: props.onBorderColor}});\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst PageChartType = props => {\r\n const { t } = useTranslation();\r\n const storeChartSettings = props.storeChartSettings;\r\n const types = storeChartSettings.types;\r\n const countSlides = Math.floor(types.length / 3);\r\n const arraySlides = Array(countSlides).fill(countSlides);\r\n const storeFocusObjects = props.storeFocusObjects;\r\n const chartProperties = storeFocusObjects.chartObject && storeFocusObjects.chartObject.get_ChartProperties();\r\n const curType = chartProperties && chartProperties.getType();\r\n\r\n return (\r\n \r\n \r\n\r\n
                \r\n
                \r\n {types && types.length ? (\r\n \r\n {arraySlides.map((_, indexSlide) => {\r\n let typesSlide = types.slice(indexSlide * 3, (indexSlide * 3) + 3);\r\n\r\n return (\r\n \r\n {typesSlide.map((row, rowIndex) => {\r\n return (\r\n
                  \r\n {row.map((type, index) => {\r\n return (\r\n
                • {props.onType(type.type)}}>\r\n
                  \r\n
                  \r\n
                • \r\n )\r\n })}\r\n
                \r\n )\r\n })}\r\n
                \r\n )\r\n })}\r\n
                \r\n ) : null}\r\n
                \r\n
                \r\n
                \r\n )\r\n}\r\n\r\nconst PageChartStyle = props => {\r\n const { t } = useTranslation();\r\n const storeChartSettings = props.storeChartSettings;\r\n const styles = storeChartSettings.styles;\r\n const chartStyles = storeChartSettings.chartStyles;\r\n\r\n return (\r\n \r\n \r\n\r\n {chartStyles ? \r\n
                \r\n
                \r\n
                  \r\n {styles ? styles.map((row, rowIndex) => {\r\n return (\r\n row.map((style, index)=>{\r\n return(\r\n
                • {props.onStyle(style.asc_getName())}}>\r\n \r\n
                • \r\n )\r\n })\r\n ) \r\n }) :
                  {t('View.Edit.textNoStyles')}
                  \r\n }\r\n
                \r\n
                \r\n
                \r\n : null}\r\n
                \r\n )\r\n}\r\n\r\nconst PageChartDesignFill = props => {\r\n const { t } = useTranslation();\r\n\r\n return (\r\n \r\n \r\n
                \r\n \r\n
                \r\n
                \r\n )\r\n}\r\n\r\nconst PageChartBorder = props => {\r\n const { t } = useTranslation();\r\n const storeChartSettings = props.storeChartSettings;\r\n const shapeObject = props.storeFocusObjects.shapeObject;\r\n\r\n let borderSize, borderType, borderColor;\r\n if (shapeObject) {\r\n const shapeStroke = shapeObject.get_stroke();\r\n borderSize = shapeStroke.get_width() * 72.0 / 25.4;\r\n borderType = shapeStroke.get_type();\r\n borderColor = !storeChartSettings.borderColor ? storeChartSettings.initBorderColor(shapeStroke) : storeChartSettings.borderColor;\r\n }\r\n\r\n // Init border size\r\n const borderSizeTransform = storeChartSettings.borderSizeTransform();\r\n const displayBorderSize = (borderType == Asc.c_oAscStrokeType.STROKE_NONE || borderType === undefined) ? 0 : borderSizeTransform.indexSizeByValue(borderSize);\r\n const displayTextBorderSize = (borderType == Asc.c_oAscStrokeType.STROKE_NONE || borderType === undefined) ? 0 : borderSizeTransform.sizeByValue(borderSize);\r\n const [stateBorderSize, setBorderSize] = useState(displayBorderSize);\r\n const [stateTextBorderSize, setTextBorderSize] = useState(displayTextBorderSize);\r\n\r\n // Init border color\r\n const displayBorderColor = borderColor !== 'transparent' ? `#${(typeof borderColor === \"object\" ? borderColor.color : borderColor)}` : borderColor;\r\n \r\n return (\r\n \r\n \r\n\r\n
                \r\n \r\n \r\n
                {t('View.Edit.textSize')}
                \r\n
                \r\n {setBorderSize(value); setTextBorderSize(borderSizeTransform.sizeByIndex(value));}}\r\n onRangeChanged={(value) => {props.onBorderSize(borderSizeTransform.sizeByIndex(value))}}\r\n >\r\n
                \r\n
                \r\n {stateTextBorderSize + ' ' + Common.Utils.Metric.getMetricName(Common.Utils.Metric.c_MetricUnits.pt)}\r\n
                \r\n
                \r\n \r\n \r\n \r\n
                \r\n
                \r\n
                \r\n )\r\n}\r\n\r\nconst PageDesign = props => {\r\n const { t } = useTranslation();\r\n const chartProperties = props.storeFocusObjects.chartObject ? props.storeFocusObjects.chartObject.get_ChartProperties() : null;\r\n\r\n if (!chartProperties && Device.phone) {\r\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst PageReorder = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const chartObject = props.storeFocusObjects.chartObject;\r\n\r\n if (!chartObject && Device.phone) {\r\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n {props.onReorder('all-up')}} link='#' className='no-indicator'>\r\n \r\n \r\n {props.onReorder('all-down')}} link='#' className='no-indicator'>\r\n \r\n \r\n {props.onReorder('move-up')}} link='#' className='no-indicator'>\r\n \r\n \r\n {props.onReorder('move-down')}} link='#' className='no-indicator'>\r\n \r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst PageAlign = props => {\r\n const { t } = useTranslation();\r\n const _t = t('View.Edit', {returnObjects: true});\r\n const chartObject = props.storeFocusObjects.chartObject;\r\n\r\n if (!chartObject && Device.phone) {\r\n $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close();\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n {Device.phone &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n {props.onAlign('align-left')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('align-center')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('align-right')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('align-top')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('align-middle')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('align-bottom')}} className='no-indicator'>\r\n \r\n \r\n \r\n \r\n {props.onAlign('distrib-hor')}} className='no-indicator'>\r\n \r\n \r\n {props.onAlign('distrib-vert')}} className='no-indicator'>\r\n \r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst EditChart = props => {\r\n const { t } = useTranslation();\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.onRemoveChart()}} className='button-red button-fill button-raised'/>\r\n \r\n \r\n )\r\n};\r\n\r\nconst PageChartDesign = inject(\"storeChartSettings\", \"storeFocusObjects\")(observer(PageDesign));\r\nconst PageChartDesignType = inject(\"storeChartSettings\", \"storeFocusObjects\")(observer(PageChartType));\r\nconst PageChartDesignStyle = inject(\"storeChartSettings\")(observer(PageChartStyle));\r\nconst PageChartDesignBorder = inject(\"storeChartSettings\", \"storeFocusObjects\")(observer(PageChartBorder));\r\nconst PageChartCustomFillColor = inject(\"storeChartSettings\", \"storePalette\")(observer(PageCustomFillColor));\r\nconst PageChartBorderColor = inject(\"storeChartSettings\", \"storePalette\")(observer(PageBorderColor));\r\nconst PageChartCustomBorderColor = inject(\"storeChartSettings\", \"storePalette\")(observer(PageCustomBorderColor));\r\nconst PageChartReorder = inject(\"storeFocusObjects\")(observer(PageReorder));\r\nconst PageChartAlign = inject(\"storeFocusObjects\")(observer(PageAlign));\r\n\r\nexport {\r\n EditChart,\r\n PageChartDesign,\r\n PageChartDesignType,\r\n PageChartDesignStyle,\r\n PageChartDesignFill,\r\n PageChartDesignBorder,\r\n PageChartCustomFillColor,\r\n PageChartBorderColor,\r\n PageChartCustomBorderColor,\r\n PageChartReorder,\r\n PageChartAlign\r\n}","import React, {Component} from 'react';\nimport { f7 } from 'framework7-react';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport { EditSlide } from '../../view/edit/EditSlide';\nimport {observer, inject} from \"mobx-react\";\n\nclass EditSlideController extends Component {\n constructor (props) {\n super(props);\n this.onDuplicateSlide = this.onDuplicateSlide.bind(this);\n this.onRemoveSlide = this.onRemoveSlide.bind(this);\n this.slideObject = this.props.storeFocusObjects.slideObject;\n this.props.storeSlideSettings.getFillColor(this.slideObject);\n }\n\n onThemeClick(index) {\n const api = Common.EditorApi.get();\n api.ChangeTheme(index);\n }\n\n onLayoutClick(index) {\n const api = Common.EditorApi.get();\n api.ChangeLayout(index);\n }\n\n onApplyAll() {\n const api = Common.EditorApi.get();\n api.SlideTransitionApplyToAll();\n };\n\n changeDuration(duration) {\n const api = Common.EditorApi.get();\n\n let props = new Asc.CAscSlideProps(),\n timing = new Asc.CAscSlideTransition(),\n _effectDuration = duration * 1000;\n\n timing.put_TransitionDuration(_effectDuration);\n props.put_transition(timing);\n api.SetSlideProps(props);\n };\n\n onStartClick(value) {\n const api = Common.EditorApi.get();\n\n let props = new Asc.CAscSlideProps(),\n timing = new Asc.CAscSlideTransition();\n\n timing.put_SlideAdvanceOnMouseClick(value);\n props.put_transition(timing);\n api.SetSlideProps(props);\n };\n\n onDelayCheck(value, _effectDelay) {\n const api = Common.EditorApi.get();\n\n let props = new Asc.CAscSlideProps(),\n timing = new Asc.CAscSlideTransition();\n\n timing.put_SlideAdvanceAfter(value);\n timing.put_SlideAdvanceDuration(_effectDelay);\n props.put_transition(timing);\n api.SetSlideProps(props);\n };\n\n onDelay(value) {\n const api = Common.EditorApi.get();\n\n let props = new Asc.CAscSlideProps(),\n timing = new Asc.CAscSlideTransition(),\n _effectDelay = value * 1000;\n\n timing.put_SlideAdvanceDuration(_effectDelay);\n props.put_transition(timing);\n api.SetSlideProps(props);\n };\n\n onEffectClick(value, effectType) {\n const api = Common.EditorApi.get();\n\n let props = new Asc.CAscSlideProps(),\n timing = new Asc.CAscSlideTransition();\n // _effectType = this.fillEffectTypes(value);\n\n timing.put_TransitionType(value);\n timing.put_TransitionOption(effectType);\n props.put_transition(timing);\n api.SetSlideProps(props);\n };\n\n onEffectTypeClick(value, effect) {\n const api = Common.EditorApi.get();\n\n let props = new Asc.CAscSlideProps(),\n timing = new Asc.CAscSlideTransition();\n\n timing.put_TransitionType(effect);\n timing.put_TransitionOption(value);\n props.put_transition(timing);\n api.SetSlideProps(props);\n }\n\n onFillColor(color) {\n const api = Common.EditorApi.get();\n\n let props = new Asc.CAscSlideProps(),\n fill = new Asc.asc_CShapeFill();\n\n if (color == 'transparent') {\n fill.put_type(Asc.c_oAscFill.FILL_TYPE_NOFILL);\n fill.put_fill(null);\n } else {\n fill.put_type(Asc.c_oAscFill.FILL_TYPE_SOLID);\n fill.put_fill(new Asc.asc_CFillSolid());\n fill.get_fill().put_color(Common.Utils.ThemeColor.getRgbColor(color));\n }\n\n props.put_background(fill);\n api.SetSlideProps(props);\n \n };\n\n closeModal() {\n if (Device.phone) {\n f7.sheet.close('#edit-sheet', true);\n } else {\n f7.popover.close('#edit-popover');\n }\n };\n\n onDuplicateSlide() {\n const api = Common.EditorApi.get();\n api.DublicateSlide();\n this.closeModal();\n };\n\n onRemoveSlide() {\n const api = Common.EditorApi.get();\n api.DeleteSlide();\n this.closeModal();\n };\n\n render () {\n return (\n \n )\n }\n}\n\nexport default inject('storeFocusObjects', 'storeSlideSettings')(observer(EditSlideController));","import React, {Component} from 'react';\nimport { f7 } from 'framework7-react';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport { EditText } from '../../view/edit/EditText';\n\nclass EditTextController extends Component {\n constructor (props) {\n super(props);\n\n this.onApiImageLoaded = this.onApiImageLoaded.bind(this);\n }\n\n componentDidMount() {\n const api = Common.EditorApi.get();\n api.asc_registerCallback('asc_onBulletImageLoaded', this.onApiImageLoaded);\n }\n\n componentWillUnmount() {\n const api = Common.EditorApi.get();\n api.asc_unregisterCallback('asc_onBulletImageLoaded', this.onApiImageLoaded);\n }\n\n closeModal() {\n if ( Device.phone ) {\n f7.sheet.close('#edit-sheet', true);\n } else {\n f7.popover.close('#edit-popover');\n }\n }\n\n toggleBold(value) {\n const api = Common.EditorApi.get();\n api.put_TextPrBold(value);\n };\n\n toggleItalic(value) {\n const api = Common.EditorApi.get();\n api.put_TextPrItalic(value);\n };\n\n toggleUnderline(value) {\n const api = Common.EditorApi.get();\n api.put_TextPrUnderline(value);\n };\n\n toggleStrikethrough(value) {\n const api = Common.EditorApi.get();\n api.put_TextPrStrikeout(value);\n };\n\n onParagraphAlign(type) {\n const api = Common.EditorApi.get();\n let value;\n \n switch (type) {\n case 'just':\n value = 3;\n break;\n case 'right':\n value = 0;\n break;\n case 'center':\n value = 2;\n break;\n default:\n value = 1;\n break;\n }\n\n api.put_PrAlign(value);\n };\n\n onParagraphValign(type) {\n const api = Common.EditorApi.get();\n let value;\n\n switch(type) {\n case 'top':\n value = Asc.c_oAscVAlign.Top;\n break;\n case 'center':\n value = Asc.c_oAscVAlign.Center;\n break;\n case 'bottom':\n value = Asc.c_oAscVAlign.Bottom;\n break;\n }\n\n api.setVerticalAlign(value);\n };\n\n onParagraphMove(type) {\n const api = Common.EditorApi.get();\n\n if(type === 'left') {\n api.DecreaseIndent();\n } else {\n api.IncreaseIndent();\n }\n };\n\n onDistanceBefore(distance, isDecrement) {\n const api = Common.EditorApi.get();\n let step;\n let newDistance;\n\n if (Common.Utils.Metric.getCurrentMetric() == Common.Utils.Metric.c_MetricUnits.pt) {\n step = 1;\n } else {\n step = 0.01;\n }\n\n const maxValue = Common.Utils.Metric.fnRecalcFromMM(558.8);\n\n if(isDecrement) {\n newDistance = Math.max(-1, distance - step);\n } else {\n newDistance = (distance < 0) ? 0 : Math.min(maxValue, distance + step);\n }\n\n newDistance = parseFloat(newDistance.toFixed(2));\n\n api.put_LineSpacingBeforeAfter(0, (newDistance < 0) ? -1 : Common.Utils.Metric.fnRecalcToMM(newDistance));\n };\n\n onDistanceAfter(distance, isDecrement) {\n const api = Common.EditorApi.get();\n let step;\n let newDistance;\n\n if (Common.Utils.Metric.getCurrentMetric() == Common.Utils.Metric.c_MetricUnits.pt) {\n step = 1;\n } else {\n step = 0.01;\n }\n\n const maxValue = Common.Utils.Metric.fnRecalcFromMM(558.8);\n\n if(isDecrement) {\n newDistance = Math.max(-1, distance - step);\n } else {\n newDistance = (distance < 0) ? 0 : Math.min(maxValue, distance + step);\n }\n\n newDistance = parseFloat(newDistance.toFixed(2));\n\n api.put_LineSpacingBeforeAfter(1, (newDistance < 0) ? -1 : Common.Utils.Metric.fnRecalcToMM(newDistance));\n };\n\n changeFontSize(curSize, isDecrement) {\n const api = Common.EditorApi.get();\n let size = curSize;\n\n if (isDecrement) {\n typeof size === 'undefined' || size == '' ? api.FontSizeOut() : size = Math.max(1, --size);\n } else {\n typeof size === 'undefined' || size == '' ? api.FontSizeIn() : size = Math.min(300, ++size);\n }\n if (typeof size !== 'undefined' && size !== '') {\n api.put_TextPrFontSize(size);\n }\n };\n\n changeFontFamily(name) {\n const api = Common.EditorApi.get();\n if (name) {\n api.put_TextPrFontName(name);\n }\n }\n\n onTextColor(color) {\n const api = Common.EditorApi.get();\n api.put_TextColor(Common.Utils.ThemeColor.getRgbColor(color));\n }\n\n onHighlightColor(strColor) {\n const api = Common.EditorApi.get();\n\n if (strColor == 'transparent') {\n api.SetMarkerFormat(true, false);\n } else {\n let r = strColor[0] + strColor[1],\n g = strColor[2] + strColor[3],\n b = strColor[4] + strColor[5];\n api.SetMarkerFormat(true, true, parseInt(r, 16), parseInt(g, 16), parseInt(b, 16));\n }\n }\n\n // Additional\n\n onAdditionalStrikethrough(type, value) {\n const api = Common.EditorApi.get();\n const paragraphProps = new Asc.asc_CParagraphProperty();\n\n if ('strikethrough' === type) {\n paragraphProps.put_DStrikeout(false);\n paragraphProps.put_Strikeout(value);\n } else {\n paragraphProps.put_DStrikeout(value);\n paragraphProps.put_Strikeout(false);\n }\n\n api.paraApply(paragraphProps);\n }\n\n onAdditionalCaps(type, value) {\n const api = Common.EditorApi.get();\n const paragraphProps = new Asc.asc_CParagraphProperty();\n\n if ('small' === type) {\n paragraphProps.put_AllCaps(false);\n paragraphProps.put_SmallCaps(value);\n } else {\n paragraphProps.put_AllCaps(value);\n paragraphProps.put_SmallCaps(false);\n }\n\n api.paraApply(paragraphProps);\n }\n\n onAdditionalScript(type, value) {\n const api = Common.EditorApi.get();\n \n if ('superscript' === type) {\n api.put_TextPrBaseline(value ? Asc.vertalign_SuperScript : Asc.vertalign_Baseline);\n } else {\n api.put_TextPrBaseline(value ? Asc.vertalign_SubScript : Asc.vertalign_Baseline);\n } \n }\n\n changeLetterSpacing(curSpacing, isDecrement) {\n const api = Common.EditorApi.get();\n let spacing = curSpacing;\n\n if (isDecrement) {\n spacing = (spacing === null || spacing === undefined || spacing === NaN) ? 0 : Math.max(-100, --spacing);\n } else {\n spacing = (spacing === null || spacing === undefined || spacing === NaN) ? 0 : Math.min(100, ++spacing);\n }\n \n const properties = new Asc.asc_CParagraphProperty();\n properties.put_TextSpacing(Common.Utils.Metric.fnRecalcToMM(spacing));\n api.paraApply(properties);\n }\n\n onBullet(type) {\n const api = Common.EditorApi.get();\n api.put_ListType(0, parseInt(type));\n }\n\n onNumber(type) {\n const api = Common.EditorApi.get();\n api.put_ListType(1, parseInt(type));\n }\n\n getIconsBulletsAndNumbers(arrayElements, type) {\n const api = Common.EditorApi.get();\n const arr = [];\n\n arrayElements.forEach( item => {\n arr.push({\n numberingInfo: {bullet: item.numberingInfo==='undefined' ? undefined : JSON.parse(item.numberingInfo)},\n divId: item.id\n });\n });\n if (api) api.SetDrawImagePreviewBulletForMenu(arr, type);\n }\n\n onApiImageLoaded(bullet) {\n const api = Common.EditorApi.get();\n const selectedElements = api.getSelectedElements();\n const imageProp = {id: bullet.asc_getImageId(), redraw: true};\n\n let selectItem = null;\n\n if(selectedElements) {\n for (var i = 0; i< selectedElements.length; i++) {\n if (Asc.c_oAscTypeSelectElement.Paragraph == selectedElements[i].get_ObjectType()) {\n selectItem = selectedElements[i].get_ObjectValue();\n break;\n }\n }\n }\n\n bullet.asc_fillBulletImage(imageProp.id);\n selectItem.asc_putBullet(bullet);\n api.paraApply(selectItem);\n this.closeModal();\n }\n\n onImageSelect() {\n (new Asc.asc_CBullet()).asc_showFileDialog();\n }\n\n onInsertByUrl(value) {\n var checkUrl = value.replace(/ /g, '');\n \n if(checkUrl) {\n (new Asc.asc_CBullet()).asc_putImageUrl(checkUrl);\n }\n }\n\n onLineSpacing(value) {\n const api = Common.EditorApi.get();\n const LINERULE_AUTO = 1;\n api.put_PrLineSpacing(LINERULE_AUTO, value);\n }\n\n setOrientationTextShape(direction) {\n const api = Common.EditorApi.get();\n const properties = new Asc.asc_CShapeProperty();\n\n properties.put_Vert(direction);\n api.ShapeApply(properties);\n }\n\n render () {\n return (\n \n )\n }\n}\n\nexport default EditTextController;","import React, {Component} from 'react';\r\nimport { f7 } from 'framework7-react';\r\nimport {Device} from '../../../../../common/mobile/utils/device';\r\nimport {observer, inject} from \"mobx-react\";\r\n\r\nimport { EditShape } from '../../view/edit/EditShape';\r\n\r\nclass EditShapeController extends Component {\r\n constructor (props) {\r\n super(props);\r\n this.onRemoveShape = this.onRemoveShape.bind(this);\r\n this.onBorderSize = this.onBorderSize.bind(this);\r\n this.onBorderColor = this.onBorderColor.bind(this);\r\n\r\n this.props.storeShapeSettings.setFillColor(undefined);\r\n this.props.storeShapeSettings.setBorderColor(undefined);\r\n }\r\n\r\n onReplace(type) {\r\n const api = Common.EditorApi.get();\r\n api.ChangeShapeType(type);\r\n }\r\n\r\n onReorder(type) {\r\n const api = Common.EditorApi.get();\r\n\r\n switch(type) {\r\n case 'all-up':\r\n api.shapes_bringToFront();\r\n break;\r\n case 'all-down':\r\n api.shapes_bringToBack();\r\n break;\r\n case 'move-up':\r\n api.shapes_bringForward();\r\n break;\r\n case 'move-down':\r\n api.shapes_bringBackward();\r\n break;\r\n \r\n }\r\n }\r\n\r\n onAlign(type) {\r\n const api = Common.EditorApi.get();\r\n\r\n switch(type) {\r\n case 'align-left':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_LEFT);\r\n break;\r\n case 'align-center':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_CENTER);\r\n break;\r\n case 'align-right':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_RIGHT);\r\n break;\r\n case 'align-top':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_TOP);\r\n break;\r\n case 'align-middle':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_MIDDLE);\r\n break;\r\n case 'align-bottom':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_BOTTOM);\r\n break;\r\n case 'distrib-hor':\r\n api.DistributeHorizontally();\r\n break;\r\n case 'distrib-vert':\r\n api.DistributeVertically();\r\n break;\r\n }\r\n }\r\n\r\n closeModal() {\r\n if (Device.phone) {\r\n f7.sheet.close('#edit-sheet', true);\r\n } else {\r\n f7.popover.close('#edit-popover');\r\n }\r\n };\r\n\r\n onRemoveShape() {\r\n const api = Common.EditorApi.get();\r\n api.asc_Remove();\r\n this.closeModal();\r\n }\r\n\r\n onFillColor(color) {\r\n const api = Common.EditorApi.get();\r\n\r\n let shape = new Asc.asc_CShapeProperty(),\r\n fill = new Asc.asc_CShapeFill();\r\n\r\n if (color == 'transparent') {\r\n fill.put_type(Asc.c_oAscFill.FILL_TYPE_NOFILL);\r\n fill.put_fill(null);\r\n } else {\r\n fill.put_type(Asc.c_oAscFill.FILL_TYPE_SOLID);\r\n fill.put_fill(new Asc.asc_CFillSolid());\r\n fill.get_fill().put_color(Common.Utils.ThemeColor.getRgbColor(color));\r\n }\r\n\r\n shape.put_fill(fill);\r\n api.ShapeApply(shape);\r\n }\r\n\r\n onBorderColor(color) {\r\n const api = Common.EditorApi.get();\r\n const _shapeObject = this.props.storeFocusObjects.shapeObject;\r\n\r\n if (_shapeObject && _shapeObject.get_stroke().get_type() == Asc.c_oAscStrokeType.STROKE_COLOR) {\r\n let shape = new Asc.asc_CShapeProperty(),\r\n stroke = new Asc.asc_CStroke();\r\n\r\n if (_shapeObject.get_stroke().get_width() < 0.01) {\r\n stroke.put_type(Asc.c_oAscStrokeType.STROKE_NONE);\r\n } else {\r\n stroke.put_type(Asc.c_oAscStrokeType.STROKE_COLOR);\r\n stroke.put_color(Common.Utils.ThemeColor.getRgbColor(color));\r\n stroke.put_width(_shapeObject.get_stroke().get_width());\r\n stroke.asc_putPrstDash(_shapeObject.get_stroke().asc_getPrstDash());\r\n }\r\n\r\n shape.put_stroke(stroke);\r\n api.ShapeApply(shape);\r\n }\r\n }\r\n\r\n onBorderSize(value) {\r\n const api = Common.EditorApi.get();\r\n const shape = new Asc.asc_CShapeProperty();\r\n const stroke = new Asc.asc_CStroke();\r\n\r\n const _borderColor = this.props.storeShapeSettings.borderColorView;\r\n\r\n if (value < 0.01) {\r\n stroke.put_type(Asc.c_oAscStrokeType.STROKE_NONE);\r\n } else {\r\n stroke.put_type(Asc.c_oAscStrokeType.STROKE_COLOR);\r\n if (_borderColor == 'transparent')\r\n stroke.put_color(Common.Utils.ThemeColor.getRgbColor({color: '000000', effectId: 29}));\r\n else\r\n stroke.put_color(Common.Utils.ThemeColor.getRgbColor(Common.Utils.ThemeColor.colorValue2EffectId(_borderColor)));\r\n stroke.put_width(value * 25.4 / 72.0);\r\n }\r\n\r\n shape.put_stroke(stroke);\r\n api.ShapeApply(shape);\r\n\r\n this.props.storeShapeSettings.initBorderColorView(this.props.storeFocusObjects.shapeObject);\r\n }\r\n\r\n onOpacity(value) {\r\n const api = Common.EditorApi.get();\r\n \r\n let fill = new Asc.asc_CShapeFill(),\r\n shape = new Asc.asc_CShapeProperty();\r\n\r\n fill.put_transparent(parseInt(value * 2.55));\r\n shape.put_fill(fill);\r\n api.ShapeApply(shape);\r\n }\r\n\r\n\r\n render () {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default inject(\"storeShapeSettings\", \"storeFocusObjects\")(observer(EditShapeController));","import React, {Component} from 'react';\r\nimport { f7 } from 'framework7-react';\r\nimport {Device} from '../../../../../common/mobile/utils/device';\r\nimport {observer, inject} from \"mobx-react\";\r\n\r\nimport { EditImage } from '../../view/edit/EditImage';\r\n\r\nclass EditImageController extends Component {\r\n constructor (props) {\r\n super(props);\r\n this.onRemoveImage = this.onRemoveImage.bind(this);\r\n this.onReplaceByFile = this.onReplaceByFile.bind(this);\r\n this.onReplaceByUrl = this.onReplaceByUrl.bind(this);\r\n }\r\n\r\n onReorder(type) {\r\n const api = Common.EditorApi.get();\r\n\r\n switch(type) {\r\n case 'all-up':\r\n api.shapes_bringToFront();\r\n break;\r\n case 'all-down':\r\n api.shapes_bringToBack();\r\n break;\r\n case 'move-up':\r\n api.shapes_bringForward();\r\n break;\r\n case 'move-down':\r\n api.shapes_bringBackward();\r\n break;\r\n }\r\n }\r\n\r\n onAlign(type) {\r\n const api = Common.EditorApi.get();\r\n\r\n switch(type) {\r\n case 'align-left':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_LEFT);\r\n break;\r\n case 'align-center':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_CENTER);\r\n break;\r\n case 'align-right':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_RIGHT);\r\n break;\r\n case 'align-top':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_TOP);\r\n break;\r\n case 'align-middle':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_MIDDLE);\r\n break;\r\n case 'align-bottom':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_BOTTOM);\r\n break;\r\n case 'distrib-hor':\r\n api.DistributeHorizontally();\r\n break;\r\n case 'distrib-vert':\r\n api.DistributeVertically();\r\n break;\r\n }\r\n }\r\n\r\n closeModal() {\r\n if (Device.phone) {\r\n f7.sheet.close('#edit-sheet', true);\r\n } else {\r\n f7.popover.close('#edit-popover');\r\n }\r\n };\r\n\r\n onDefaultSize() {\r\n const api = Common.EditorApi.get();\r\n let imgsize = api.get_OriginalSizeImage(),\r\n properties = new Asc.asc_CImgProperty();\r\n\r\n properties.put_Width(imgsize.get_ImageWidth());\r\n properties.put_Height(imgsize.get_ImageHeight());\r\n properties.put_ResetCrop(true);\r\n properties.put_Rot(0);\r\n api.ImgApply(properties);\r\n }\r\n\r\n onRemoveImage() {\r\n const api = Common.EditorApi.get();\r\n api.asc_Remove();\r\n this.closeModal();\r\n }\r\n\r\n onReplaceByFile() {\r\n const api = Common.EditorApi.get();\r\n api.ChangeImageFromFile();\r\n this.closeModal();\r\n }\r\n\r\n onReplaceByUrl(value) {\r\n const api = Common.EditorApi.get();\r\n const image = new Asc.asc_CImgProperty();\r\n image.put_ImageUrl(value);\r\n api.ImgApply(image);\r\n this.closeModal();\r\n }\r\n\r\n\r\n render () {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default EditImageController;","import React, {Component} from 'react';\r\nimport { f7 } from 'framework7-react';\r\nimport {Device} from '../../../../../common/mobile/utils/device';\r\nimport {observer, inject} from \"mobx-react\";\r\n\r\nimport { EditTable } from '../../view/edit/EditTable';\r\n\r\nclass EditTableController extends Component {\r\n constructor (props) {\r\n super(props);\r\n this.closeIfNeed = this.closeIfNeed.bind(this);\r\n this.onRemoveTable = this.onRemoveTable.bind(this);\r\n this.onAddColumnLeft = this.onAddColumnLeft.bind(this);\r\n this.onAddColumnRight = this.onAddColumnRight.bind(this);\r\n this.onAddRowAbove = this.onAddRowAbove.bind(this);\r\n this.onAddRowBelow = this.onAddRowBelow.bind(this);\r\n this.onRemoveColumn = this.onRemoveColumn.bind(this);\r\n this.onRemoveRow = this.onRemoveRow.bind(this);\r\n this.onGetTableStylesPreviews = this.onGetTableStylesPreviews.bind(this);\r\n }\r\n\r\n closeIfNeed () {\r\n if (!this.props.storeFocusObjects.isTableInStack) {\r\n if ( Device.phone ) {\r\n f7.sheet.close('#edit-sheet', true);\r\n } else {\r\n f7.popover.close('#edit-popover');\r\n }\r\n }\r\n }\r\n\r\n onRemoveTable () {\r\n const api = Common.EditorApi.get();\r\n api.remTable();\r\n this.closeIfNeed();\r\n }\r\n\r\n onAddColumnLeft () {\r\n const api = Common.EditorApi.get();\r\n api.addColumnLeft();\r\n this.closeIfNeed();\r\n }\r\n\r\n onAddColumnRight () {\r\n const api = Common.EditorApi.get();\r\n api.addColumnRight();\r\n this.closeIfNeed();\r\n }\r\n\r\n onAddRowAbove () {\r\n const api = Common.EditorApi.get();\r\n api.addRowAbove();\r\n this.closeIfNeed(); \r\n }\r\n\r\n onAddRowBelow () {\r\n const api = Common.EditorApi.get();\r\n api.addRowBelow();\r\n this.closeIfNeed();\r\n }\r\n\r\n onRemoveColumn () {\r\n const api = Common.EditorApi.get();\r\n api.remColumn();\r\n this.closeIfNeed();\r\n }\r\n\r\n onRemoveRow () {\r\n const api = Common.EditorApi.get();\r\n api.remRow();\r\n this.closeIfNeed(); \r\n }\r\n\r\n onOptionMargin (value) {\r\n const api = Common.EditorApi.get();\r\n const properties = new Asc.CTableProp();\r\n const margins = new Asc.CMargins();\r\n const val = Common.Utils.Metric.fnRecalcToMM(value);\r\n margins.put_Top(val);\r\n margins.put_Right(val);\r\n margins.put_Bottom(val);\r\n margins.put_Left(val);\r\n margins.put_Flag(2);\r\n properties.put_CellMargins(margins);\r\n api.tblApply(properties);\r\n }\r\n\r\n onStyleClick (type) {\r\n const api = Common.EditorApi.get();\r\n const properties = new Asc.CTableProp();\r\n properties.put_TableStyle(type.toString());\r\n api.tblApply(properties);\r\n }\r\n\r\n onCheckTemplateChange (tableLook, type, isChecked) {\r\n const api = Common.EditorApi.get();\r\n const properties = new Asc.CTableProp();\r\n\r\n switch (type) {\r\n case 0:\r\n tableLook.put_FirstRow(isChecked);\r\n break;\r\n case 1:\r\n tableLook.put_LastRow(isChecked);\r\n break;\r\n case 2:\r\n tableLook.put_BandHor(isChecked);\r\n break;\r\n case 3:\r\n tableLook.put_FirstCol(isChecked);\r\n break;\r\n case 4:\r\n tableLook.put_LastCol(isChecked);\r\n break;\r\n case 5:\r\n tableLook.put_BandVer(isChecked);\r\n break;\r\n }\r\n\r\n properties.put_TableLook(tableLook);\r\n api.tblApply(properties);\r\n }\r\n\r\n onFillColor (color) {\r\n const api = Common.EditorApi.get();\r\n const properties = new Asc.CTableProp();\r\n const background = new Asc.CBackground();\r\n properties.put_CellsBackground(background);\r\n\r\n if ('transparent' == color) {\r\n background.put_Value(1);\r\n } else {\r\n background.put_Value(0);\r\n background.put_Color(Common.Utils.ThemeColor.getRgbColor(color));\r\n }\r\n\r\n properties.put_CellSelect(true);\r\n api.tblApply(properties);\r\n }\r\n\r\n onBorderTypeClick (cellBorders) {\r\n const api = Common.EditorApi.get();\r\n const properties = new Asc.CTableProp();\r\n const _cellBorders = !cellBorders ? new Asc.CBorders() : cellBorders;\r\n properties.put_CellBorders(_cellBorders);\r\n properties.put_CellSelect(true);\r\n api.tblApply(properties);\r\n }\r\n\r\n onReorder(type) {\r\n const api = Common.EditorApi.get();\r\n\r\n switch(type) {\r\n case 'all-up':\r\n api.shapes_bringToFront();\r\n break;\r\n case 'all-down':\r\n api.shapes_bringToBack();\r\n break;\r\n case 'move-up':\r\n api.shapes_bringForward();\r\n break;\r\n case 'move-down':\r\n api.shapes_bringBackward();\r\n break;\r\n \r\n }\r\n }\r\n\r\n onAlign(type) {\r\n const api = Common.EditorApi.get();\r\n\r\n switch(type) {\r\n case 'align-left':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_LEFT);\r\n break;\r\n case 'align-center':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_CENTER);\r\n break;\r\n case 'align-right':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_RIGHT);\r\n break;\r\n case 'align-top':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_TOP);\r\n break;\r\n case 'align-middle':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_MIDDLE);\r\n break;\r\n case 'align-bottom':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_BOTTOM);\r\n break;\r\n case 'distrib-hor':\r\n api.DistributeHorizontally();\r\n break;\r\n case 'distrib-vert':\r\n api.DistributeVertically();\r\n break;\r\n }\r\n }\r\n\r\n onGetTableStylesPreviews() {\r\n const api = Common.EditorApi.get();\r\n setTimeout(() => this.props.storeTableSettings.setStyles(api.asc_getTableStylesPreviews()), 1);\r\n }\r\n\r\n render () {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default inject(\"storeFocusObjects\", \"storeTableSettings\")(observer(EditTableController));","import React, {Component} from 'react';\r\nimport { f7 } from 'framework7-react';\r\nimport {Device} from '../../../../../common/mobile/utils/device';\r\nimport {observer, inject} from \"mobx-react\";\r\n\r\nimport { EditChart } from '../../view/edit/EditChart'\r\n\r\nclass EditChartController extends Component {\r\n constructor (props) {\r\n super(props);\r\n this.onType = this.onType.bind(this);\r\n this.onBorderColor = this.onBorderColor.bind(this);\r\n this.onBorderSize = this.onBorderSize.bind(this);\r\n this.onStyle = this.onStyle.bind(this);\r\n\r\n const type = props.storeFocusObjects.chartObject.getType();\r\n if (type==Asc.c_oAscChartTypeSettings.comboBarLine ||\r\n type==Asc.c_oAscChartTypeSettings.comboBarLineSecondary ||\r\n type==Asc.c_oAscChartTypeSettings.comboAreaBar ||\r\n type==Asc.c_oAscChartTypeSettings.comboCustom) {\r\n props.storeChartSettings.clearChartStyles();\r\n } else {\r\n const api = Common.EditorApi.get();\r\n props.storeChartSettings.updateChartStyles(api.asc_getChartPreviews(type));\r\n }\r\n }\r\n\r\n onRemoveChart () {\r\n const api = Common.EditorApi.get();\r\n api.asc_Remove();\r\n\r\n if ( Device.phone ) {\r\n f7.sheet.close('#edit-sheet', true);\r\n } else {\r\n f7.popover.close('#edit-popover');\r\n } \r\n }\r\n\r\n onReorder(type) {\r\n const api = Common.EditorApi.get();\r\n\r\n switch(type) {\r\n case 'all-up':\r\n api.shapes_bringToFront();\r\n break;\r\n case 'all-down':\r\n api.shapes_bringToBack();\r\n break;\r\n case 'move-up':\r\n api.shapes_bringForward();\r\n break;\r\n case 'move-down':\r\n api.shapes_bringBackward();\r\n break;\r\n }\r\n }\r\n\r\n onAlign(type) {\r\n const api = Common.EditorApi.get();\r\n\r\n switch(type) {\r\n case 'align-left':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_LEFT);\r\n break;\r\n case 'align-center':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_CENTER);\r\n break;\r\n case 'align-right':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_RIGHT);\r\n break;\r\n case 'align-top':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_TOP);\r\n break;\r\n case 'align-middle':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_MIDDLE);\r\n break;\r\n case 'align-bottom':\r\n api.put_ShapesAlign(Asc.c_oAscAlignShapeType.ALIGN_BOTTOM);\r\n break;\r\n case 'distrib-hor':\r\n api.DistributeHorizontally();\r\n break;\r\n case 'distrib-vert':\r\n api.DistributeVertically();\r\n break;\r\n }\r\n }\r\n\r\n onStyle (style) {\r\n const api = Common.EditorApi.get();\r\n let chart = new Asc.CAscChartProp();\r\n const chartProps = this.props.storeFocusObjects.chartObject.get_ChartProperties();\r\n chartProps.putStyle(style);\r\n chart.put_ChartProperties(chartProps);\r\n api.ChartApply(chart);\r\n }\r\n\r\n onType (type) {\r\n const api = Common.EditorApi.get();\r\n let chart = new Asc.CAscChartProp();\r\n chart.changeType(type);\r\n api.ChartApply(chart);\r\n // Force update styles\r\n this.props.storeChartSettings.updateChartStyles(api.asc_getChartPreviews(chart.getType()));\r\n }\r\n\r\n onFillColor (color) {\r\n const api = Common.EditorApi.get();\r\n const shape = new Asc.asc_CShapeProperty();\r\n const fill = new Asc.asc_CShapeFill();\r\n\r\n if (color == 'transparent') {\r\n fill.put_type(Asc.c_oAscFill.FILL_TYPE_NOFILL);\r\n fill.put_fill(null);\r\n } else {\r\n fill.put_type(Asc.c_oAscFill.FILL_TYPE_SOLID);\r\n fill.put_fill(new Asc.asc_CFillSolid());\r\n fill.get_fill().put_color(Common.Utils.ThemeColor.getRgbColor(color));\r\n }\r\n\r\n shape.put_fill(fill);\r\n api.ShapeApply(shape);\r\n }\r\n\r\n onBorderColor (color) {\r\n const api = Common.EditorApi.get();\r\n const currentShape = this.props.storeFocusObjects.shapeObject;\r\n const shape = new Asc.asc_CShapeProperty();\r\n const stroke = new Asc.asc_CStroke();\r\n\r\n if (currentShape.get_stroke().get_width() < 0.01) {\r\n stroke.put_type(Asc.c_oAscStrokeType.STROKE_NONE);\r\n } else {\r\n stroke.put_type(Asc.c_oAscStrokeType.STROKE_COLOR);\r\n stroke.put_color(Common.Utils.ThemeColor.getRgbColor(color));\r\n stroke.put_width(currentShape.get_stroke().get_width());\r\n stroke.asc_putPrstDash(currentShape.get_stroke().asc_getPrstDash());\r\n }\r\n\r\n shape.put_stroke(stroke);\r\n api.ShapeApply(shape);\r\n }\r\n\r\n onBorderSize (value) {\r\n const api = Common.EditorApi.get();\r\n const shape = new Asc.asc_CShapeProperty();\r\n const stroke = new Asc.asc_CStroke();\r\n\r\n const _borderColor = this.props.storeChartSettings.borderColor;\r\n\r\n if (value < 0.01) {\r\n stroke.put_type(Asc.c_oAscStrokeType.STROKE_NONE);\r\n } else {\r\n stroke.put_type(Asc.c_oAscStrokeType.STROKE_COLOR);\r\n if (_borderColor == 'transparent')\r\n stroke.put_color(Common.Utils.ThemeColor.getRgbColor({color: '000000', effectId: 29}));\r\n else\r\n stroke.put_color(Common.Utils.ThemeColor.getRgbColor(Common.Utils.ThemeColor.colorValue2EffectId(_borderColor)));\r\n stroke.put_width(value * 25.4 / 72.0);\r\n }\r\n\r\n shape.put_stroke(stroke);\r\n api.ShapeApply(shape);\r\n this.props.storeChartSettings.initBorderColor(this.props.storeFocusObjects.shapeObject.get_stroke()); // when select STROKE_NONE or change from STROKE_NONE to STROKE_COLOR\r\n }\r\n\r\n render () {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default inject(\"storeChartSettings\", \"storeFocusObjects\")(observer(EditChartController));","import React from 'react';\nimport { observer, inject } from \"mobx-react\";\nimport { Page, Navbar, NavRight, NavTitle, Tabs, Tab, Link } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport { Device } from '../../../../../common/mobile/utils/device';\nimport EditSlideController from \"../../controller/edit/EditSlide\";\nimport EditTextController from \"../../controller/edit/EditText\";\nimport EditShapeController from \"../../controller/edit/EditShape\";\nimport EditImageController from \"../../controller/edit/EditImage\";\nimport EditTableController from \"../../controller/edit/EditTable\";\nimport EditChartController from \"../../controller/edit/EditChart\";\n\nconst EmptyEditLayout = () => {\n const { t } = useTranslation();\n const _t = t('View.Edit', {returnObjects: true});\n\n return (\n \n
                \n
                \n

                {_t.textSelectObjectToEdit}

                \n
                \n
                \n
                \n )\n};\n\nconst EditLayoutNavbar = ({ editors }) => {\n const isAndroid = Device.android;\n\n return (\n \n {editors.length > 1 ?\n
                \n {editors.map((item, index) => {item.caption})}\n {isAndroid && }\n
                :\n { editors[0].caption }\n }\n {Device.phone && }\n
                \n )\n};\n\nconst EditLayoutContent = ({ editors }) => {\n if (editors.length > 1) {\n return (\n \n {editors.map((item, index) =>\n \n {item.component}\n \n )}\n \n )\n } else {\n return (\n \n {editors[0].component}\n \n )\n }\n};\n\nconst EditingPage = inject('storeFocusObjects')(observer(props => {\n const { t } = useTranslation();\n const _t = t('View.Edit', {returnObjects: true});\n const settings = props.storeFocusObjects.settings;\n let editors = [];\n\n if (settings.length < 1) {\n editors.push({\n caption: _t.textSettings,\n component: \n });\n } else {\n if (settings.indexOf('image') > -1) {\n editors.push({\n caption: _t.textImage,\n id: 'edit-image',\n component: \n })\n }\n\n if (settings.indexOf('shape') > -1) {\n editors.push({\n caption: _t.textShape,\n id: 'edit-shape',\n component: \n })\n }\n\n if (settings.indexOf('table') > -1) {\n editors.push({\n caption: _t.textTable,\n id: 'edit-table',\n component: \n })\n }\n\n if (settings.indexOf('chart') > -1) {\n editors.push({\n caption: _t.textChart,\n id: 'edit-chart',\n component: \n })\n }\n\n if (settings.indexOf('text') > -1) {\n editors.push({\n caption: _t.textText,\n id: 'edit-text',\n component: \n })\n }\n\n if (settings.indexOf('slide') > -1) {\n editors.push({\n caption: _t.textSlide,\n id: 'edit-slide',\n component: \n })\n }\n }\n\n return (\n \n \n \n \n )\n}));\n\nexport default EditingPage;","import React, { useContext, useEffect } from 'react';\nimport { Popover, Sheet, View, f7 } from 'framework7-react';\nimport { Device } from '../../../../../common/mobile/utils/device';\nimport { EditLinkController } from \"../../controller/edit/EditLink\";\nimport { Theme, Layout, Transition, Type, Effect, StyleFillColor, CustomFillColor } from './EditSlide';\nimport { PageTextFonts, PageTextFontColor, PageTextHighlightColor, PageTextCustomFontColor, PageTextAddFormatting, PageTextBulletsAndNumbers, PageTextLineSpacing, PageTextBulletsLinkSettings, PageOrientationTextShape } from './EditText';\nimport { PageShapeStyle, PageShapeStyleNoFill, PageReplaceContainer, PageReorderContainer, PageAlignContainer, PageShapeBorderColor, PageShapeCustomBorderColor, PageShapeCustomFillColor } from './EditShape';\nimport { PageImageReplace, PageImageReorder, PageImageAlign, PageLinkSettings } from './EditImage';\nimport { PageTableStyle, PageTableStyleOptions, PageTableCustomFillColor, PageTableBorderColor, PageTableCustomBorderColor, PageTableReorder, PageTableAlign } from './EditTable';\nimport { PageChartDesign, PageChartDesignType, PageChartDesignStyle, PageChartDesignFill, PageChartDesignBorder, PageChartCustomFillColor, PageChartBorderColor, PageChartCustomBorderColor, PageChartReorder, PageChartAlign } from './EditChart'\nimport EditingPage from './EditingPage';\nimport { MainContext } from '../../page/main';\n\nconst routes = [\n {\n path: '/editing-page/',\n component: EditingPage,\n keepAlive: true\n },\n\n // Slides\n {\n path: '/layout/',\n component: Layout\n },\n {\n path: '/theme/',\n component: Theme\n },\n {\n path: '/transition/',\n component: Transition\n },\n {\n path: '/effect/',\n component: Effect\n },\n {\n path: '/type/',\n component: Type\n },\n {\n path: '/style/',\n component: StyleFillColor\n },\n {\n path: '/edit-custom-color/',\n component: CustomFillColor\n },\n\n // Text\n\n {\n path: '/edit-text-fonts/',\n component: PageTextFonts\n },\n {\n path: '/edit-text-font-color/',\n component: PageTextFontColor\n },\n {\n path: '/edit-text-highlight-color/',\n component: PageTextHighlightColor\n },\n {\n path: '/edit-text-custom-font-color/',\n component: PageTextCustomFontColor\n },\n {\n path: '/edit-text-add-formatting/',\n component: PageTextAddFormatting\n },\n {\n path: '/edit-bullets-and-numbers/',\n component: PageTextBulletsAndNumbers,\n routes: [\n {\n path: 'image-link/',\n component: PageTextBulletsLinkSettings\n }\n ]\n },\n {\n path: '/edit-text-line-spacing/',\n component: PageTextLineSpacing\n },\n\n // Shape\n {\n path: '/edit-style-shape/',\n component: PageShapeStyle\n },\n {\n path: '/edit-style-shape-no-fill/',\n component: PageShapeStyleNoFill\n },\n {\n path: '/edit-replace-shape/',\n component: PageReplaceContainer\n },\n {\n path: '/edit-reorder-shape',\n component: PageReorderContainer\n },\n {\n path: '/edit-align-shape/',\n component: PageAlignContainer\n },\n {\n path: '/edit-shape-border-color/',\n component: PageShapeBorderColor\n },\n {\n path: '/edit-shape-custom-border-color/',\n component: PageShapeCustomBorderColor\n }, \n {\n path: '/edit-shape-custom-fill-color/',\n component: PageShapeCustomFillColor\n },\n {\n path: '/edit-text-shape-orientation/',\n component: PageOrientationTextShape\n },\n\n // Image\n\n {\n path: '/edit-replace-image/',\n component: PageImageReplace\n },\n {\n path: '/edit-reorder-image/',\n component: PageImageReorder\n },\n {\n path: '/edit-align-image', \n component: PageImageAlign\n },\n {\n path: '/edit-image-link/',\n component: PageLinkSettings\n },\n\n // Table\n\n {\n path: '/edit-table-reorder/',\n component: PageTableReorder\n },\n {\n path: '/edit-table-align/',\n component: PageTableAlign\n },\n {\n path: '/edit-table-style/',\n component: PageTableStyle\n },\n {\n path: '/edit-table-style-options/',\n component: PageTableStyleOptions\n },\n {\n path: '/edit-table-border-color/',\n component: PageTableBorderColor\n },\n {\n path: '/edit-table-custom-border-color/',\n component: PageTableCustomBorderColor\n },\n {\n path: '/edit-table-custom-fill-color/',\n component: PageTableCustomFillColor\n }, \n\n // Chart\n\n {\n path: '/edit-chart-design/',\n component: PageChartDesign,\n },\n {\n path: '/edit-chart-type/',\n component: PageChartDesignType\n },\n {\n path: '/edit-chart-style/',\n component: PageChartDesignStyle\n },\n {\n path: '/edit-chart-fill/',\n component: PageChartDesignFill\n },\n {\n path: '/edit-chart-border/',\n component: PageChartDesignBorder\n },\n {\n path: '/edit-chart-reorder/',\n component: PageChartReorder\n },\n {\n path: '/edit-chart-align/',\n component: PageChartAlign\n },\n {\n path: '/edit-chart-border-color/',\n component: PageChartBorderColor\n },\n {\n path: '/edit-chart-custom-border-color/',\n component: PageChartCustomBorderColor\n },\n {\n path: '/edit-chart-custom-fill-color/',\n component: PageChartCustomFillColor\n },\n\n // Link\n {\n path: '/edit-link/',\n component: EditLinkController\n }\n];\n\nroutes.forEach(route => {\n route.options = {\n ...route.options,\n transition: 'f7-push'\n };\n});\n\nconst EditView = () => {\n const mainContext = useContext(MainContext);\n\n useEffect(() => {\n if(Device.phone) {\n f7.sheet.open('#edit-sheet');\n } else {\n f7.popover.open('#edit-popover', '#btn-edit');\n }\n }, []);\n\n return (\n !Device.phone ?\n mainContext.closeOptions('edit')}>\n \n \n \n :\n mainContext.closeOptions('edit')}>\n \n \n \n \n )\n};\n\nexport default EditView;","import React, { Component, createContext } from 'react';\nimport { f7, Page, View, Navbar, Subnavbar, Icon } from 'framework7-react';\nimport { observer, inject } from \"mobx-react\";\nimport { Device } from '../../../../common/mobile/utils/device';\nimport CollaborationView from '../../../../common/mobile/lib/view/collaboration/Collaboration.jsx';\nimport { Preview } from \"../controller/Preview\";\nimport { Search, SearchSettings } from '../controller/Search';\nimport ContextMenu from '../controller/ContextMenu';\nimport { Toolbar } from \"../controller/Toolbar\";\nimport { AddLinkController } from '../controller/add/AddLink';\nimport { EditLinkController } from '../controller/edit/EditLink';\nimport { Themes } from '../../../../common/mobile/lib/controller/Themes';\nimport SettingsController from '../controller/settings/Settings';\nimport AddView from '../view/add/Add';\nimport EditView from '../view/edit/Edit';\nimport VersionHistoryController from '../../../../common/mobile/lib/controller/VersionHistory';\n\nexport const MainContext = createContext();\n\nclass MainPage extends Component {\n constructor(props) {\n super(props);\n this.state = {\n editOptionsVisible: false,\n addOptionsVisible: false,\n settingsVisible: false,\n collaborationVisible: false,\n previewVisible: false,\n addLinkSettingsVisible: false,\n editLinkSettingsVisible: false,\n isOpenModal: false\n };\n }\n\n onClosePreview = () => {\n this.setState({previewVisible: false});\n }\n\n handleClickToOpenOptions = (opts, showOpts) => {\n f7.popover.close('.document-menu.modal-in', false);\n\n let opened = false;\n const newState = {};\n\n if ( opts === 'edit' ) {\n this.state.editOptionsVisible && (opened = true);\n newState.editOptionsVisible = true;\n newState.isOpenModal = true;\n } else if ( opts === 'add' ) {\n this.state.addOptionsVisible && (opened = true);\n newState.addOptionsVisible = true;\n newState.addShowOptions = showOpts;\n newState.isOpenModal = true;\n } else if ( opts === 'settings' ) {\n this.state.settingsVisible && (opened = true);\n newState.settingsVisible = true;\n newState.isOpenModal = true;\n } else if ( opts === 'coauth' ) {\n this.state.collaborationVisible && (opened = true);\n newState.collaborationVisible = true;\n newState.isOpenModal = true;\n } else if ( opts === 'preview' ) {\n this.state.previewVisible && (opened = true);\n newState.previewVisible = true;\n newState.isOpenModal = true;\n } else if ( opts === 'add-link') {\n this.state.addLinkSettingsVisible && (opened = true);\n newState.addLinkSettingsVisible = true;\n } else if( opts === 'edit-link') {\n this.state.editLinkSettingsVisible && (opened = true);\n newState.editLinkSettingsVisible = true;\n } else if (opts === 'history') {\n newState.historyVisible = true;\n }\n\n for (let key in this.state) {\n if (this.state[key] && !opened) {\n setTimeout(() => {\n this.handleClickToOpenOptions(opts, showOpts);\n }, 10);\n return;\n }\n }\n\n if (!opened) {\n this.setState(newState);\n if ((opts === 'edit' || opts === 'coauth') && Device.phone) {\n f7.navbar.hide('.main-navbar');\n }\n }\n };\n\n handleOptionsViewClosed = opts => {\n this.setState(state => {\n if ( opts == 'edit' )\n return {editOptionsVisible: false, isOpenModal: false};\n else if ( opts == 'add' )\n return {addOptionsVisible: false, addShowOptions: null, isOpenModal: false};\n else if ( opts == 'settings' )\n return {settingsVisible: false, isOpenModal: false};\n else if ( opts == 'coauth' )\n return {collaborationVisible: false, isOpenModal: false}\n else if ( opts == 'preview' )\n return {previewVisible: false, isOpenModal: false};\n else if ( opts === 'add-link') \n return {addLinkSettingsVisible: false};\n else if( opts === 'edit-link') \n return {editLinkSettingsVisible: false};\n else if (opts === 'history')\n return {historyVisible: false}\n });\n\n if ((opts === 'edit' || opts === 'coauth') && Device.phone) {\n f7.navbar.show('.main-navbar');\n }\n };\n\n componentDidMount () {\n if ( $$('.skl-container').length )\n $$('.skl-container').remove();\n }\n\n render() {\n const appOptions = this.props.storeAppOptions;\n const storeThemes = this.props.storeThemes;\n const colorTheme = storeThemes.colorTheme;\n const config = appOptions.config;\n const { customization = {} } = config;\n const isShowPlaceholder = !appOptions.isDocReady && (!customization || !(customization.loaderName || customization.loaderLogo));\n \n let isBranding = true,\n isHideLogo = true,\n customLogoImage = '',\n customLogoUrl = '';\n\n if(!appOptions.isDisconnected && appOptions.isDocReady) {\n const { logo } = customization;\n isBranding = appOptions.canBranding || appOptions.canBrandingExt;\n \n if(logo && isBranding) {\n isHideLogo = logo.visible === false;\n\n if(logo.image || logo.imageDark) {\n customLogoImage = colorTheme.type === 'dark' ? logo.imageDark ?? logo.image : logo.image ?? logo.imageDark;\n customLogoUrl = logo.url;\n }\n } else {\n isHideLogo = false;\n }\n }\n\n return (\n \n \n {!this.state.previewVisible ? null : \n \n }\n \n {/* Top Navbar */}\n \n {!isHideLogo &&\n
                {\n window.open(`${customLogoImage && customLogoUrl ? customLogoUrl : __PUBLISHER_URL__}`, \"_blank\");\n }}>\n {customLogoImage ? \n \n : \n \n }\n
                \n }\n \n \n \n \n
                \n {/* Page content */}\n \n\n {isShowPlaceholder ?\n
                \n
                \n
                \n
                \n
                \n
                \n
                \n
                \n
                \n
                \n
                :\n null\n }\n\n \n\n {!this.state.editOptionsVisible ? null : }\n {!this.state.addOptionsVisible ? null : }\n {!this.state.addLinkSettingsVisible ? null :\n \n }\n {!this.state.editLinkSettingsVisible ? null :\n \n }\n {!this.state.settingsVisible ? null : }\n {!this.state.collaborationVisible ? null : \n \n }\n {!this.state.historyVisible ? null :\n \n }\n {appOptions.isDocReady && \n \n } \n
                \n
                \n
                \n )\n }\n}\n\nexport default inject('storeAppOptions', 'storeThemes')(observer(MainPage));","\nimport MainPage from '../page/main';\n\nvar routes = [\n {\n path: '/',\n component: MainPage,\n }\n];\n\nexport default routes;\n","\nexport default class Notifications {\n constructor() {\n this._events = {};\n }\n\n on(event, callback) {\n const addevent = (e, c) => {\n !this._events[e] && (this._events[e] = []);\n this._events[e].push(c);\n };\n\n if ( typeof(event) == 'object' )\n for (const i in event)\n addevent(i, event[i])\n else addevent(event, callback);\n }\n\n off(event, callback) {\n if ( this._events[event] && this._events[event].includes(callback) ) {\n this._events[event].splice(this._events[event].indexOf(callback), 1);\n }\n }\n\n trigger(event/*, args*/) {\n if ( this._events[event] ) {\n this._events[event].forEach(callback => {\n callback.apply(this, Array.prototype.slice.call(arguments, 1));\n });\n }\n }\n}\n","import React, { Component } from 'react'\nimport { f7 } from 'framework7-react';\nimport {observer, inject} from \"mobx-react\"\nimport { LocalStorage } from '../../../utils/LocalStorage.mjs';\nimport { withTranslation } from 'react-i18next';\n\nclass CollaborationController extends Component {\n constructor(props){\n super(props);\n\n Common.Notifications.on('engineCreated', (api) => {\n api.asc_registerCallback('asc_onAuthParticipantsChanged', this.onChangeEditUsers.bind(this));\n api.asc_registerCallback('asc_onParticipantsChanged', this.onChangeEditUsers.bind(this));\n api.asc_registerCallback('asc_onConnectionStateChanged', this.onUserConnection.bind(this));\n api.asc_registerCallback('asc_onCoAuthoringDisconnect', this.onCoAuthoringDisconnect.bind(this));\n\n api.asc_registerCallback('asc_OnTryUndoInFastCollaborative', this.onTryUndoInFastCollaborative.bind(this));\n });\n\n Common.Notifications.on('api:disconnect', this.onCoAuthoringDisconnect.bind(this));\n Common.Notifications.on('document:ready', this.onDocumentReady.bind(this));\n }\n\n onDocumentReady() {\n const api = Common.EditorApi.get();\n const appOptions = this.props.storeAppOptions;\n /** coauthoring begin **/\n let isFastCoauth;\n if (appOptions.isEdit && appOptions.canLicense && !appOptions.isOffline && appOptions.canCoAuthoring) {\n // Force ON fast co-authoring mode\n isFastCoauth = true;\n api.asc_SetFastCollaborative(isFastCoauth);\n\n if (window.editorType === 'de') {\n const value = LocalStorage.getItem((isFastCoauth) ? \"de-settings-showchanges-fast\" : \"de-settings-showchanges-strict\");\n if (value !== null) {\n api.SetCollaborativeMarksShowType(\n value === 'all' ? Asc.c_oAscCollaborativeMarksShowType.All :\n value === 'none' ? Asc.c_oAscCollaborativeMarksShowType.None : Asc.c_oAscCollaborativeMarksShowType.LastChanges);\n } else {\n api.SetCollaborativeMarksShowType(isFastCoauth ? Asc.c_oAscCollaborativeMarksShowType.None : Asc.c_oAscCollaborativeMarksShowType.LastChanges);\n }\n }\n } else if (!appOptions.isEdit && appOptions.isRestrictedEdit) {\n isFastCoauth = true;\n api.asc_SetFastCollaborative(isFastCoauth);\n window.editorType === 'de' && api.SetCollaborativeMarksShowType(Asc.c_oAscCollaborativeMarksShowType.None);\n api.asc_setAutoSaveGap(1);\n } else if (appOptions.canLiveView) { // viewer\n isFastCoauth = !(appOptions.config.coEditing && appOptions.config.coEditing.mode==='strict');\n api.asc_SetFastCollaborative(isFastCoauth);\n window.editorType === 'de' && api.SetCollaborativeMarksShowType(Asc.c_oAscCollaborativeMarksShowType.None);\n api.asc_setAutoSaveGap(1);\n } else {\n isFastCoauth = false;\n api.asc_SetFastCollaborative(isFastCoauth);\n window.editorType === 'de' && api.SetCollaborativeMarksShowType(Asc.c_oAscCollaborativeMarksShowType.None);\n }\n\n if (appOptions.isEdit) {\n let value;\n if (window.editorType === 'sse') {\n value = appOptions.canAutosave ? 1 : 0; // FORCE AUTOSAVE\n } else {\n value = isFastCoauth; // Common.localStorage.getItem(\"de-settings-autosave\");\n value = (!isFastCoauth && value !== null) ? parseInt(value) : (appOptions.canCoAuthoring ? 1 : 0);\n }\n api.asc_setAutoSaveGap(value);\n }\n /** coauthoring end **/\n }\n\n onChangeEditUsers(users) {\n const storeUsers = this.props.users;\n storeUsers.reset(users);\n storeUsers.setCurrentUser(this.props.storeAppOptions.user.id);\n }\n\n onUserConnection(change) {\n this.props.users.connection(change);\n }\n\n onCoAuthoringDisconnect() {\n this.props.users.resetDisconnected(true);\n }\n\n onTryUndoInFastCollaborative() {\n const { t } = this.props;\n const _t = t(\"Common.Collaboration\", { returnObjects: true });\n f7.dialog.alert(_t.textTryUndoRedo, _t.notcriticalErrorTitle);\n }\n\n render() {\n return null\n }\n}\n\nexport default inject('users', 'storeAppOptions')(observer(withTranslation()(CollaborationController)));","import React, { useEffect } from 'react';\nimport { inject } from 'mobx-react';\nimport { f7 } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\n\nconst ErrorController = inject('storeAppOptions','storePresentationInfo')(({storeAppOptions, storePresentationInfo, LoadingDocument}) => {\n const { t } = useTranslation();\n const _t = t(\"Error\", { returnObjects: true });\n\n useEffect(() => {\n const on_engine_created = k => { k.asc_registerCallback('asc_onError', onError); };\n\n const api = Common.EditorApi.get();\n if ( !api ) Common.Notifications.on('engineCreated', on_engine_created);\n else on_engine_created(api);\n\n return () => {\n const api = Common.EditorApi.get();\n if ( api ) api.asc_unregisterCallback('asc_onError', onError);\n\n Common.Notifications.off('engineCreated', on_engine_created);\n }\n });\n\n const onError = (id, level, errData) => {\n if (id === Asc.c_oAscError.ID.LoadingScriptError) {\n f7.notification.create({\n title: _t.criticalErrorTitle,\n text: _t.scriptLoadError,\n closeButton: true\n }).open();\n return;\n }\n\n Common.Notifications.trigger('preloader:close');\n Common.Notifications.trigger('preloader:endAction', Asc.c_oAscAsyncActionType['BlockInteraction'], LoadingDocument,true);\n\n const api = Common.EditorApi.get();\n\n const config = {\n closable: false\n };\n\n switch (id) {\n case Asc.c_oAscError.ID.Unknown:\n config.msg = _t.unknownErrorText;\n break;\n\n case Asc.c_oAscError.ID.ConvertationTimeout:\n config.msg = _t.convertationTimeoutText;\n break;\n\n case Asc.c_oAscError.ID.ConvertationOpenError:\n config.msg = _t.openErrorText;\n break;\n\n case Asc.c_oAscError.ID.ConvertationSaveError:\n config.msg = _t.saveErrorText;\n break;\n\n case Asc.c_oAscError.ID.DownloadError:\n config.msg = _t.downloadErrorText;\n break;\n\n case Asc.c_oAscError.ID.UplImageSize:\n config.msg = _t.uploadImageSizeMessage;\n break;\n\n case Asc.c_oAscError.ID.UplImageExt:\n config.msg = _t.uploadImageExtMessage;\n break;\n\n case Asc.c_oAscError.ID.UplImageFileCount:\n config.msg = _t.uploadImageFileCountMessage;\n break;\n\n case Asc.c_oAscError.ID.SplitCellMaxRows:\n config.msg = _t.splitMaxRowsErrorText.replace('%1', errData.get_Value());\n break;\n\n case Asc.c_oAscError.ID.SplitCellMaxCols:\n config.msg = _t.splitMaxColsErrorText.replace('%1', errData.get_Value());\n break;\n\n case Asc.c_oAscError.ID.SplitCellRowsDivider:\n config.msg = _t.splitDividerErrorText.replace('%1', errData.get_Value());\n break;\n\n case Asc.c_oAscError.ID.VKeyEncrypt:\n config.msg = _t.errorToken;\n break;\n\n case Asc.c_oAscError.ID.KeyExpire:\n config.msg = _t.errorTokenExpire;\n break;\n\n case Asc.c_oAscError.ID.UserCountExceed:\n config.msg = _t.errorUsersExceed;\n break;\n\n case Asc.c_oAscError.ID.CoAuthoringDisconnect:\n config.msg = _t.errorViewerDisconnect;\n break;\n\n case Asc.c_oAscError.ID.ConvertationPassword:\n config.msg = _t.errorFilePassProtect;\n break;\n\n case Asc.c_oAscError.ID.StockChartError:\n config.msg = _t.errorStockChart;\n break;\n\n case Asc.c_oAscError.ID.DataRangeError:\n config.msg = _t.errorDataRange;\n break;\n\n case Asc.c_oAscError.ID.Database:\n config.msg = _t.errorDatabaseConnection;\n break;\n\n case Asc.c_oAscError.ID.UserDrop:\n const lostEditingRights = storeAppOptions.lostEditingRights;\n if (lostEditingRights) {\n storeAppOptions.changeEditingRights(false);\n return;\n }\n storeAppOptions.changeEditingRights(true);\n config.msg = _t.errorUserDrop;\n break;\n\n case Asc.c_oAscError.ID.Warning:\n config.msg = _t.errorConnectToServer;\n break;\n\n case Asc.c_oAscError.ID.UplImageUrl:\n config.msg = _t.errorBadImageUrl;\n break;\n\n case Asc.c_oAscError.ID.SessionAbsolute:\n config.msg = _t.errorSessionAbsolute;\n break;\n\n case Asc.c_oAscError.ID.SessionIdle:\n config.msg = _t.errorSessionIdle;\n break;\n\n case Asc.c_oAscError.ID.SessionToken:\n config.msg = _t.errorSessionToken;\n break;\n\n case Asc.c_oAscError.ID.DataEncrypted:\n config.msg = _t.errorDataEncrypted;\n break;\n\n case Asc.c_oAscError.ID.AccessDeny:\n config.msg = _t.errorAccessDeny;\n break;\n\n case Asc.c_oAscError.ID.ForceSaveButton:\n case Asc.c_oAscError.ID.ForceSaveTimeout:\n config.msg = t('Error.errorForceSave');\n break;\n\n case Asc.c_oAscError.ID.EditingError:\n config.msg = _t.errorEditingDownloadas;\n break;\n\n case Asc.c_oAscError.ID.MailToClientMissing:\n config.msg = t('Error.errorEmailClient');\n break;\n\n case Asc.c_oAscError.ID.ConvertationOpenLimitError:\n config.msg = _t.errorFileSizeExceed;\n break;\n\n case Asc.c_oAscError.ID.UpdateVersion:\n config.msg = _t.errorUpdateVersionOnDisconnect;\n break;\n\n case Asc.c_oAscError.ID.ComboSeriesError:\n config.msg = t('Error.errorComboSeries');\n break;\n \n case Asc.c_oAscError.ID.Password:\n config.msg = t('Error.errorSetPassword');\n break;\n\n case Asc.c_oAscError.ID.LoadingFontError:\n config.msg = _t.errorLoadingFont;\n break;\n\n case Asc.c_oAscError.ID.DirectUrl:\n config.msg = _t.errorDirectUrl;\n break;\n\n case Asc.c_oAscError.ID.ConvertationOpenFormat:\n let docExt = storePresentationInfo.dataDoc ? storePresentationInfo.dataDoc.fileType || '' : '';\n if (errData === 'pdf')\n config.msg = _t.errorInconsistentExtPdf.replace('%1', docExt);\n else if (errData === 'docx')\n config.msg = _t.errorInconsistentExtDocx.replace('%1', docExt);\n else if (errData === 'xlsx')\n config.msg = _t.errorInconsistentExtXlsx.replace('%1', docExt);\n else if (errData === 'pptx')\n config.msg = _t.errorInconsistentExtPptx.replace('%1', docExt);\n else\n config.msg = _t.errorInconsistentExt;\n break;\n\n default:\n config.msg = _t.errorDefaultMessage.replace('%1', id);\n break;\n }\n\n if (level === Asc.c_oAscError.Level.Critical) {\n\n // report only critical errors\n Common.Gateway.reportError(id, config.msg);\n\n config.title = _t.criticalErrorTitle;\n\n if (storeAppOptions.canBackToFolder && !storeAppOptions.isDesktopApp) {\n config.msg += '

                ' + _t.criticalErrorExtText;\n config.callback = function() {\n Common.Notifications.trigger('goback', true);\n }\n }\n if (id === Asc.c_oAscError.ID.DataEncrypted) {\n api.asc_coAuthoringDisconnect();\n Common.Notifications.trigger('api:disconnect');\n }\n }\n else {\n Common.Gateway.reportWarning(id, config.msg);\n\n config.title = _t.notcriticalErrorTitle;\n config.callback = (btn) => {\n if (id === Asc.c_oAscError.ID.Warning && btn === 'ok' && (storeAppOptions.canDownload || storeAppOptions.canDownloadOrigin)) {\n api.asc_DownloadOrigin();\n }\n storeAppOptions.changeEditingRights(false);\n };\n }\n\n f7.dialog.create({\n cssClass: 'error-dialog',\n title : config.title,\n text : config.msg,\n buttons: [\n {\n text: 'OK',\n onClick: config.callback\n }\n ]\n }).open();\n\n Common.component.Analytics.trackEvent('Internal Error', id.toString());\n };\n\n return null\n});\n\nexport default ErrorController;","\nexport default class IrregularStack {\n constructor (config) {\n this._stack = [];\n\n const _config = config || {};\n this._strongCompare = _config.strongCompare || this._compare;\n this._weakCompare = _config.weakCompare || this._compare;\n }\n\n _compare (obj1, obj2) {\n if (typeof obj1 === 'object' && typeof obj2 === 'object' && window.JSON)\n return window.JSON.stringify(obj1) === window.JSON.stringify(obj2);\n return obj1 === obj2;\n };\n\n _indexOf (obj, compare) {\n for (let i = this._stack.length - 1; i >= 0; i--) {\n if (compare(this._stack[i], obj))\n return i;\n }\n return -1;\n }\n\n push (obj) {\n this._stack.push(obj);\n }\n\n pop (obj) {\n const index = this._indexOf(obj, this._strongCompare);\n if (index !== -1) {\n const removed = this._stack.splice(index, 1);\n return removed[0];\n }\n return undefined;\n }\n\n get (obj) {\n const index = this._indexOf(obj, this._weakCompare);\n if (index !== -1) {\n return this._stack[index];\n }\n return undefined;\n }\n\n exist (obj) {\n return !(this._indexOf(obj, this._strongCompare) < 0);\n }\n\n}","import React, { useEffect } from 'react';\nimport { f7 } from 'framework7-react';\nimport { inject } from 'mobx-react';\nimport { useTranslation } from 'react-i18next';\nimport IrregularStack from \"../../../../common/mobile/utils/IrregularStack\";\n\nconst LongActionsController = inject('storeAppOptions')(({storeAppOptions}) => {\n const {t} = useTranslation();\n const _t = t(\"LongActions\", {returnObjects: true});\n\n const ApplyEditRights = -255;\n const LoadingDocument = -256;\n\n const stackLongActions = new IrregularStack({\n strongCompare : function(obj1, obj2){return obj1.id === obj2.id && obj1.type === obj2.type;},\n weakCompare : function(obj1, obj2){return obj1.type === obj2.type;}\n });\n\n let loadMask = null;\n\n const closePreloader = () => {\n if (loadMask && loadMask.el) {\n f7.dialog.close(loadMask.el);\n }\n };\n\n useEffect( () => {\n const on_engine_created = api => {\n api.asc_registerCallback('asc_onStartAction', onLongActionBegin);\n api.asc_registerCallback('asc_onEndAction', onLongActionEnd);\n api.asc_registerCallback('asc_onOpenDocumentProgress', onOpenDocument);\n api.asc_registerCallback('asc_onConfirmAction', onConfirmAction);\n };\n\n const api = Common.EditorApi.get();\n if(!api) Common.Notifications.on('engineCreated', on_engine_created);\n else on_engine_created(api);\n\n Common.Notifications.on('preloader:endAction', onLongActionEnd);\n Common.Notifications.on('preloader:beginAction', onLongActionBegin);\n Common.Notifications.on('preloader:close', closePreloader);\n\n return (() => {\n const api = Common.EditorApi.get();\n if ( api ) {\n api.asc_unregisterCallback('asc_onStartAction', onLongActionBegin);\n api.asc_unregisterCallback('asc_onEndAction', onLongActionEnd);\n api.asc_unregisterCallback('asc_onOpenDocumentProgress', onOpenDocument);\n api.asc_unregisterCallback('asc_onConfirmAction', onConfirmAction);\n }\n\n Common.Notifications.off('engineCreated', on_engine_created);\n Common.Notifications.off('preloader:endAction', onLongActionEnd);\n Common.Notifications.off('preloader:beginAction', onLongActionBegin);\n Common.Notifications.off('preloader:close', closePreloader);\n })\n });\n\n const onLongActionBegin = (type, id) => {\n const action = {id: id, type: type};\n stackLongActions.push(action);\n setLongActionView(action);\n };\n\n const onLongActionEnd = (type, id, forceClose) => {\n if (!stackLongActions.exist({id: id, type: type})) return;\n\n let action = {id: id, type: type};\n stackLongActions.pop(action);\n\n //this.updateWindowTitle(true);\n\n action = stackLongActions.get({type: Asc.c_oAscAsyncActionType.Information}) || stackLongActions.get({type: Asc.c_oAscAsyncActionType.BlockInteraction});\n\n if (action && !forceClose) {\n setLongActionView(action)\n } else {\n loadMask && loadMask.el && loadMask.el.classList.contains('modal-in') ?\n f7.dialog.close(loadMask.el) :\n f7.dialog.close($$('.dialog-preloader'));\n }\n };\n\n const setLongActionView = (action) => {\n let title = '';\n // let text = '';\n switch (action.id) {\n case Asc.c_oAscAsyncAction['Open']:\n title = _t.textLoadingDocument;\n // title = _t.openTitleText;\n // text = _t.openTextText;\n break;\n\n case Asc.c_oAscAsyncAction['Save']:\n title = _t.saveTitleText;\n // text = _t.saveTextText;\n break;\n\n case Asc.c_oAscAsyncAction['LoadDocumentFonts']:\n if ( !storeAppOptions.isDocReady ) return;\n title = _t.loadFontsTitleText;\n // text = _t.loadFontsTextText;\n break;\n\n case Asc.c_oAscAsyncAction['LoadDocumentImages']:\n title = _t.loadImagesTitleText;\n // text = _t.loadImagesTextText;\n break;\n\n case Asc.c_oAscAsyncAction['LoadFont']:\n title = _t.loadFontTitleText;\n // text = _t.loadFontTextText;\n break;\n\n case Asc.c_oAscAsyncAction['LoadImage']:\n title = _t.loadImageTitleText;\n // text = _t.loadImageTextText;\n break;\n\n case Asc.c_oAscAsyncAction['DownloadAs']:\n title = _t.downloadTitleText;\n // text = _t.downloadTextText;\n break;\n\n case Asc.c_oAscAsyncAction['Print']:\n title = _t.printTitleText;\n // text = _t.printTextText;\n break;\n\n case Asc.c_oAscAsyncAction['UploadImage']:\n title = _t.uploadImageTitleText;\n // text = _t.uploadImageTextText;\n break;\n\n case Asc.c_oAscAsyncAction['LoadTheme']:\n title = _t.loadThemeTitleText;\n // text = _t.loadThemeTextText;\n break;\n\n case Asc.c_oAscAsyncAction['ApplyChanges']:\n title = _t.applyChangesTitleText;\n // text = _t.applyChangesTextText;\n break;\n\n case Asc.c_oAscAsyncAction['PrepareToSave']:\n title = _t.savePreparingText;\n // text = _t.savePreparingTitle;\n break;\n\n case Asc.c_oAscAsyncAction['Waiting']:\n title = _t.waitText;\n // text = _t.waitText;\n break;\n\n case ApplyEditRights:\n title = _t.txtEditingMode;\n // text = _t.txtEditingMode;\n break;\n\n case LoadingDocument:\n title = _t.loadingDocumentTitleText;\n // text = _t.loadingDocumentTextText;\n break;\n default:\n if (typeof action.id == 'string'){\n title = action.id;\n // text = action.id;\n }\n break;\n }\n\n if (action.type === Asc.c_oAscAsyncActionType['BlockInteraction']) {\n if (action.id === Asc.c_oAscAsyncAction['ApplyChanges'] || action.id === Asc.c_oAscAsyncAction['LoadDocumentFonts']) {\n return;\n }\n\n if (loadMask && loadMask.el && loadMask.el.classList.contains('modal-in')) {\n loadMask.el.getElementsByClassName('dialog-title')[0].innerHTML = title;\n } else if ($$('.dialog-preloader').hasClass('modal-in')) {\n $$('.dialog-preloader').find('dialog-title').text(title);\n } else {\n loadMask = f7.dialog.preloader(title);\n }\n }\n };\n\n const onConfirmAction = (id, apiCallback, data) => {\n const api = Common.EditorApi.get();\n\n if (id === Asc.c_oAscConfirm.ConfirmMaxChangesSize) {\n f7.dialog.create({\n title: _t.notcriticalErrorTitle,\n text: _t.confirmMaxChangesSize,\n buttons: [\n {text: _t.textUndo,\n onClick: () => {\n if (apiCallback) apiCallback(true);\n }\n },\n {text: _t.textContinue,\n onClick: () => {\n if (apiCallback) apiCallback(false);\n }\n }\n ],\n }).open();\n }\n };\n\n const onOpenDocument = (progress) => {\n if (loadMask && loadMask.el) {\n const $title = loadMask.el.getElementsByClassName('dialog-title')[0];\n const proc = (progress.asc_getCurrentFont() + progress.asc_getCurrentImage())/(progress.asc_getFontsCount() + progress.asc_getImagesCount());\n\n $title.innerHTML = `${_t.textLoadingDocument}: ${Math.min(Math.round(proc * 100), 100)}%`;\n }\n };\n\n return null;\n});\n\nexport default LongActionsController;","import React, { useEffect, useState } from 'react';\r\nimport { inject, observer } from 'mobx-react';\r\nimport { f7 } from 'framework7-react';\r\nimport { Device } from '../../utils/device';\r\n\r\nconst PluginsController = inject('storeAppOptions')(observer(props => {\r\n const { storeAppOptions } = props;\r\n let configPlugins = {autostart:[]},\r\n serverPlugins = {autostart:[]},\r\n modal,\r\n iframe;\r\n\r\n useEffect(() => {\r\n Common.Notifications.on('engineCreated', api => {\r\n api.asc_registerCallback(\"asc_onPluginShow\", showPluginModal);\r\n api.asc_registerCallback(\"asc_onPluginClose\", pluginClose);\r\n api.asc_registerCallback(\"asc_onPluginResize\", pluginResize);\r\n api.asc_registerCallback('asc_onPluginsInit', onPluginsInit);\r\n\r\n if(!storeAppOptions.customization || storeAppOptions.plugins !== false) {\r\n loadPlugins();\r\n }\r\n });\r\n\r\n Common.Gateway.on('init', loadConfig);\r\n\r\n return () => {\r\n const api = Common.EditorApi.get();\r\n\r\n if ( api ) {\r\n api.asc_unregisterCallback(\"asc_onPluginShow\", showPluginModal);\r\n api.asc_unregisterCallback(\"asc_onPluginClose\", pluginClose);\r\n api.asc_unregisterCallback(\"asc_onPluginResize\", pluginResize);\r\n api.asc_unregisterCallback('asc_onPluginsInit', onPluginsInit);\r\n }\r\n };\r\n });\r\n\r\n const onDlgBtnClick = e => {\r\n const api = Common.EditorApi.get();\r\n let index = $$(e.currentTarget).index();\r\n api.asc_pluginButtonClick(index);\r\n };\r\n\r\n const showPluginModal = (plugin, variationIndex, frameId, urlAddition) => {\r\n let isAndroid = Device.android;\r\n let variation = plugin.get_Variations()[variationIndex];\r\n\r\n if (variation.get_Visual()) {\r\n let url = variation.get_Url();\r\n url = ((plugin.get_BaseUrl().length == 0) ? url : plugin.get_BaseUrl()) + url;\r\n\r\n if (urlAddition)\r\n url += urlAddition;\r\n\r\n let isCustomWindow = variation.get_CustomWindow(),\r\n arrBtns = variation.get_Buttons(),\r\n newBtns = [],\r\n size = variation.get_Size();\r\n\r\n if (arrBtns.length) {\r\n arrBtns.forEach((b, index) => {\r\n if ((storeAppOptions.isEdit || b.isViewer !== false)) {\r\n newBtns[index] = {\r\n text: b.text,\r\n attributes: {result: index},\r\n close: false\r\n };\r\n }\r\n });\r\n }\r\n\r\n f7.popover.close('.document-menu.modal-in', false);\r\n\r\n modal = f7.dialog.create({\r\n title: '',\r\n text: '',\r\n content: '
                '+'
                ',\r\n buttons : isCustomWindow ? undefined : newBtns\r\n }).open();\r\n\r\n iframe = document.createElement(\"iframe\");\r\n\r\n iframe.id = frameId;\r\n iframe.name = 'pluginFrameEditor';\r\n iframe.width = '100%';\r\n iframe.height = '100%';\r\n iframe.align = \"top\";\r\n iframe.frameBorder = 0;\r\n iframe.scrolling = \"no\";\r\n iframe.src = url;\r\n\r\n $$('#plugin-frame').append(iframe);\r\n \r\n modal.$el.find('.dialog-button').on('click', onDlgBtnClick);\r\n\r\n modal.$el.css({\r\n margin: '0',\r\n width: '90%',\r\n left: '5%',\r\n height: 'auto'\r\n });\r\n\r\n modal.$el.find('.dialog-inner').css({padding: '0'});\r\n\r\n if (Device.phone) {\r\n let height = Math.min(size[1], 240);\r\n modal.$el.find('#plugin-frame').css({height: height + 'px'});\r\n } else {\r\n let height = Math.min(size[1], 500);\r\n modal.$el.find('#plugin-frame').css({height: height + 'px'});\r\n }\r\n\r\n if (isAndroid) {\r\n $$('.view.collaboration-root-view.navbar-through').removeClass('navbar-through').addClass('navbar-fixed');\r\n $$('.view.collaboration-root-view .navbar').prependTo('.view.collaboration-root-view > .pages > .page');\r\n }\r\n }\r\n };\r\n\r\n const pluginClose = plugin => {\r\n if (plugin && modal) {\r\n modal.close();\r\n }\r\n };\r\n\r\n const pluginResize = size => {\r\n if (Device.phone) {\r\n let height = Math.min(size[1], 240);\r\n modal.$el.find('#plugin-frame').css({height: height + 'px'});\r\n } else {\r\n let height = Math.min(size[1], 500);\r\n modal.$el.find('#plugin-frame').css({height: height + 'px'});\r\n }\r\n };\r\n\r\n const getPlugins = (pluginsData, fetchFunction) => {\r\n if (!pluginsData || pluginsData.length < 1)\r\n return Promise.resolve([]);\r\n\r\n fetchFunction = fetchFunction || function (url) {\r\n return fetch(url)\r\n .then(function(response) {\r\n if (response.ok) return response.json();\r\n else return Promise.reject(url);\r\n }).then(function(json) {\r\n json.baseUrl = url.substring(0, url.lastIndexOf(\"config.json\"));\r\n return json;\r\n });\r\n };\r\n\r\n let loaded = [];\r\n\r\n return pluginsData.map(fetchFunction).reduce(function (previousPromise, currentPromise) {\r\n return previousPromise\r\n .then(function()\r\n {\r\n return currentPromise;\r\n })\r\n .then(function(item)\r\n {\r\n loaded.push(item);\r\n return Promise.resolve(item);\r\n })\r\n .catch(function(item)\r\n {\r\n return Promise.resolve(item);\r\n });\r\n\r\n }, Promise.resolve())\r\n .then(function ()\r\n {\r\n return Promise.resolve(loaded);\r\n });\r\n };\r\n\r\n const loadConfig = data => {\r\n configPlugins.config = data.config.plugins;\r\n };\r\n\r\n const onPluginsInit = pluginsdata => {\r\n !(pluginsdata instanceof Array) && (pluginsdata = pluginsdata[\"pluginsData\"]);\r\n parsePlugins(pluginsdata)\r\n };\r\n\r\n const parsePlugins = pluginsdata => {\r\n let isEdit = storeAppOptions.isEdit;\r\n \r\n if (pluginsdata instanceof Array) { \r\n let lang = storeAppOptions.lang ? storeAppOptions.lang.split(/[\\-_]/)[0] : 'en';\r\n pluginsdata.forEach((item) => {\r\n item.variations.forEach( (itemVar) => { \r\n let description = itemVar.description;\r\n if (typeof itemVar.descriptionLocale == 'object')\r\n description = itemVar.descriptionLocale[lang] || itemVar.descriptionLocale['en'] || description || '';\r\n\r\n if(itemVar.buttons !== undefined) {\r\n itemVar.buttons.forEach( (button) => {\r\n if (typeof button.textLocale == 'object')\r\n button.text = button.textLocale[lang] || button.textLocale['en'] || button.text || '';\r\n button.visible = (isEdit || button.isViewer !== false);\r\n })\r\n }\r\n })\r\n });\r\n } \r\n registerPlugins(pluginsdata);\r\n };\r\n\r\n const registerPlugins = plugins => {\r\n let arr = [];\r\n\r\n plugins.forEach(item => {\r\n let plugin = new Asc.CPlugin();\r\n plugin.deserialize(item);\r\n arr.push(plugin);\r\n });\r\n\r\n const api = Common.EditorApi.get();\r\n api.asc_pluginsRegister('', arr);\r\n };\r\n\r\n const mergePlugins = () => {\r\n if (serverPlugins.plugins !== undefined && configPlugins.plugins !== undefined) {\r\n let arr = [],\r\n plugins = configPlugins;\r\n\r\n if (plugins.plugins && plugins.plugins.length > 0) {\r\n arr = plugins.plugins;\r\n }\r\n\r\n plugins = serverPlugins;\r\n\r\n if (plugins.plugins && plugins.plugins.length > 0) {\r\n arr = arr.concat(plugins.plugins);\r\n }\r\n\r\n parsePlugins(arr);\r\n }\r\n };\r\n\r\n const loadPlugins = () => {\r\n if (configPlugins.config) {\r\n getPlugins(configPlugins.config.pluginsData)\r\n .then(function(loaded)\r\n {\r\n configPlugins.plugins = loaded;\r\n mergePlugins();\r\n });\r\n if (configPlugins.config.options) {\r\n const api = Common.EditorApi.get();\r\n api && api.setPluginsOptions(configPlugins.config.options);\r\n }\r\n } else {\r\n configPlugins.plugins = false;\r\n }\r\n\r\n let server_plugins_url = '../../../../plugins.json';\r\n\r\n Common.Utils.loadConfig(server_plugins_url, function (obj) {\r\n if (obj != 'error') {\r\n serverPlugins.config = obj;\r\n getPlugins(serverPlugins.config.pluginsData)\r\n .then(function(loaded)\r\n {\r\n serverPlugins.plugins = loaded;\r\n mergePlugins();\r\n });\r\n } else\r\n serverPlugins.plugins = false;\r\n });\r\n };\r\n\r\n return <>\r\n}));\r\n\r\nexport default PluginsController;\r\n\r\n\r\n\r\n","\nimport React, { Component, Fragment } from 'react'\nimport { inject } from \"mobx-react\";\nimport { f7 } from \"framework7-react\";\nimport { withTranslation } from 'react-i18next';\nimport CollaborationController from '../../../../common/mobile/lib/controller/collaboration/Collaboration.jsx';\nimport EditorUIController from '../lib/patch';\nimport {\n CommentsController,\n ViewCommentsController\n} from \"../../../../common/mobile/lib/controller/collaboration/Comments\";\nimport ErrorController from \"./Error\";\nimport LongActionsController from \"./LongActions\";\nimport {LocalStorage} from \"../../../../common/mobile/utils/LocalStorage.mjs\";\nimport About from '../../../../common/mobile/lib/view/About';\nimport PluginsController from '../../../../common/mobile/lib/controller/Plugins.jsx';\nimport { Device } from '../../../../common/mobile/utils/device';\nimport { Themes } from '../../../../common/mobile/lib/controller/Themes.jsx';\nimport { processArrayScripts } from '../../../../common/mobile/utils/processArrayScripts.js';\n\n@inject(\n \"users\",\n \"storeFocusObjects\",\n \"storeAppOptions\",\n \"storePresentationInfo\",\n \"storePresentationSettings\",\n \"storeSlideSettings\",\n \"storeTextSettings\",\n \"storeTableSettings\",\n \"storeChartSettings\",\n \"storeLinkSettings\",\n \"storeApplicationSettings\",\n \"storeToolbarSettings\"\n )\nclass MainController extends Component {\n constructor (props) {\n super(props)\n window.editorType = 'pe';\n\n this.LoadingDocument = -256;\n this.ApplyEditRights = -255;\n this.fallbackSdkTranslations = {\n \"Chart\": \"Chart\",\n \"Click to add first slide\": \"Click to add first slide\",\n \"Click to add notes\": \"Click to add notes\",\n \"ClipArt\": \"Clip Art\",\n \"Date and time\": \"Date and time\",\n \"Diagram\": \"Diagram\",\n \"Diagram Title\": \"Chart Title\",\n \"Footer\": \"Footer\",\n \"Header\": \"Header\",\n \"Image\": \"Image\",\n \"Loading\": \"Loading\",\n \"Media\": \"Media\",\n \"None\": \"None\",\n \"Picture\": \"Picture\",\n \"Series\": \"Series\",\n \"Slide number\": \"Slide number\",\n \"Slide subtitle\": \"Slide subtitle\",\n \"Slide text\": \"Slide text\",\n \"Slide title\": \"Slide title\",\n \"Table\": \"Table\",\n \"X Axis\": \"X Axis XAS\",\n \"Y Axis\": \"Y Axis\",\n \"Your text here\": \"Your text here\"\n };\n let me = this;\n ['Aspect', 'Blue Green', 'Blue II', 'Blue Warm', 'Blue', 'Grayscale', 'Green Yellow', 'Green', 'Marquee', 'Median', 'Office 2007 - 2010', 'Office 2013 - 2022', 'Office',\n 'Orange Red', 'Orange', 'Paper', 'Red Orange', 'Red Violet', 'Red', 'Slipstream', 'Violet II', 'Violet', 'Yellow Orange', 'Yellow'].forEach(function(item){\n me.fallbackSdkTranslations[item] = item;\n });\n\n this._state = {\n licenseType: false,\n isDocModified: false\n };\n\n this.defaultTitleText = __APP_TITLE_TEXT__;\n this.stackMacrosRequests = [];\n\n const { t } = this.props;\n this._t = t('Controller.Main', {returnObjects:true});\n }\n\n initSdk () {\n const on_script_load = () => {\n !window.sdk_scripts && (window.sdk_scripts = ['../../../../sdkjs/common/AllFonts.js',\n '../../../../sdkjs/slide/sdk-all-min.js']);\n let dep_scripts = ['../../../vendor/xregexp/xregexp-all-min.js',\n '../../../vendor/socketio/socket.io.min.js'];\n dep_scripts.push(...window.sdk_scripts);\n\n const promise_get_script = (scriptpath) => {\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = scriptpath;\n script.onload = () => {\n resolve('ok');\n };\n script.onerror = () => {\n reject('error');\n };\n\n document.body.appendChild(script);\n });\n };\n\n const loadConfig = data => {\n const { t } = this.props;\n const _t = t('Controller.Main', {returnObjects:true});\n\n EditorUIController.isSupportEditFeature();\n\n this.editorConfig = Object.assign({}, this.editorConfig, data.config);\n\n this.props.storeAppOptions.setConfigOptions(this.editorConfig, _t);\n\n this.editorConfig.lang && this.api.asc_setLocale(this.editorConfig.lang);\n\n let value = LocalStorage.getItem(\"pe-mobile-macros-mode\");\n if (value === null) {\n value = this.editorConfig.customization ? this.editorConfig.customization.macrosMode : 'warn';\n value = (value === 'enable') ? 1 : (value === 'disable' ? 2 : 0);\n } else {\n value = parseInt(value);\n }\n this.props.storeApplicationSettings.changeMacrosSettings(value);\n\n value = LocalStorage.getItem(\"pe-mobile-allow-macros-request\");\n this.props.storeApplicationSettings.changeMacrosRequest((value !== null) ? parseInt(value) : 0);\n };\n\n const loadDocument = data => {\n this.permissions = {};\n this.document = data.doc;\n\n let docInfo = {};\n\n if (data.doc) {\n this.permissions = Object.assign(this.permissions, data.doc.permissions);\n\n const _options = Object.assign({}, data.doc.options, this.editorConfig.actionLink || {});\n const _user = new Asc.asc_CUserInfo();\n const _userOptions = this.props.storeAppOptions.user;\n _user.put_Id(_userOptions.id);\n _user.put_FullName(_userOptions.fullname);\n _user.put_IsAnonymousUser(_userOptions.anonymous);\n\n docInfo = new Asc.asc_CDocInfo();\n docInfo.put_Id(data.doc.key);\n docInfo.put_Url(data.doc.url);\n docInfo.put_DirectUrl(data.doc.directUrl);\n docInfo.put_Title(data.doc.title);\n docInfo.put_Format(data.doc.fileType);\n docInfo.put_VKey(data.doc.vkey);\n docInfo.put_Options(_options);\n docInfo.put_UserInfo(_user);\n docInfo.put_CallbackUrl(this.editorConfig.callbackUrl);\n docInfo.put_Token(data.doc.token);\n docInfo.put_Permissions(data.doc.permissions);\n docInfo.put_EncryptedInfo(this.editorConfig.encryptionKeys);\n docInfo.put_Lang(this.editorConfig.lang);\n docInfo.put_Mode(this.editorConfig.mode);\n\n let coEditMode = !(this.editorConfig.coEditing && typeof this.editorConfig.coEditing == 'object') ? 'fast' : // fast by default\n this.editorConfig.mode === 'view' && this.editorConfig.coEditing.change!==false ? 'fast' : // if can change mode in viewer - set fast for using live viewer\n this.editorConfig.coEditing.mode || 'fast';\n docInfo.put_CoEditingMode(coEditMode);\n\n let enable = !this.editorConfig.customization || (this.editorConfig.customization.macros !== false);\n docInfo.asc_putIsEnabledMacroses(!!enable);\n enable = !this.editorConfig.customization || (this.editorConfig.customization.plugins !== false);\n docInfo.asc_putIsEnabledPlugins(!!enable);\n }\n\n this.api.asc_registerCallback('asc_onGetEditorPermissions', onEditorPermissions);\n this.api.asc_registerCallback('asc_onLicenseChanged', this.onLicenseChanged.bind(this));\n this.api.asc_registerCallback('asc_onMacrosPermissionRequest', this.onMacrosPermissionRequest.bind(this));\n this.api.asc_registerCallback('asc_onRunAutostartMacroses', this.onRunAutostartMacroses.bind(this));\n this.api.asc_setDocInfo(docInfo);\n this.api.asc_getEditorPermissions(this.editorConfig.licenseUrl, this.editorConfig.customerId);\n\n // Presentation Info\n\n const storePresentationInfo = this.props.storePresentationInfo;\n\n storePresentationInfo.setDataDoc(this.document);\n\n // Common.SharedSettings.set('document', data.doc);\n\n if (data.doc) {\n Common.Notifications.trigger('setdoctitle', data.doc.title);\n }\n };\n\n const onEditorPermissions = params => {\n const licType = params.asc_getLicenseType();\n const { t } = this.props;\n // const _t = t('Controller.Main', { returnObjects:true });\n \n if (Asc.c_oLicenseResult.Expired === licType ||\n Asc.c_oLicenseResult.Error === licType ||\n Asc.c_oLicenseResult.ExpiredTrial === licType ||\n Asc.c_oLicenseResult.NotBefore === licType ||\n Asc.c_oLicenseResult.ExpiredLimited === licType) {\n\n f7.dialog.create({\n title: Asc.c_oLicenseResult.NotBefore === licType ? t('Controller.Main.titleLicenseNotActive') : t('Controller.Main.titleLicenseExp'),\n text: Asc.c_oLicenseResult.NotBefore === licType ? t('Controller.Main.warnLicenseBefore') : t('Controller.Main.warnLicenseExp')\n }).open();\n\n return;\n }\n\n this.appOptions.canLicense = (licType === Asc.c_oLicenseResult.Success || licType === Asc.c_oLicenseResult.SuccessLimit);\n\n const storeAppOptions = this.props.storeAppOptions;\n storeAppOptions.setPermissionOptions(this.document, licType, params, this.permissions, EditorUIController.isSupportEditFeature());\n this.applyMode(storeAppOptions);\n\n this.api.asc_LoadDocument();\n this.api.Resize();\n };\n\n processArrayScripts(dep_scripts, promise_get_script)\n .then(() => {\n const { t } = this.props;\n let _translate = t('Controller.Main.SDK', { returnObjects:true })\n\n if (!(typeof _translate === 'object' && _translate !== null && Object.keys(_translate).length > 0)) {\n _translate = this.fallbackSdkTranslations\n }\n\n this.api = new Asc.asc_docs_api({\n 'id-view': 'editor_sdk',\n 'mobile': true,\n 'translate': _translate\n });\n\n Common.Notifications.trigger('engineCreated', this.api);\n\n this.appOptions = {};\n this.bindEvents();\n\n let value = LocalStorage.getItem(\"pe-settings-fontrender\");\n if (value===null) value = window.devicePixelRatio > 1 ? '1' : '3';\n this.api.SetFontRenderingMode(parseInt(value));\n this.api.SetDrawingFreeze(true);\n this.api.SetThemesPath(\"../../../../sdkjs/slide/themes/\");\n Common.Utils.Metric.setCurrentMetric(1); //pt\n\n Common.Gateway.on('init', loadConfig);\n Common.Gateway.on('showmessage', this.onExternalMessage.bind(this));\n Common.Gateway.on('opendocument', loadDocument);\n Common.Gateway.appReady();\n\n Common.Gateway.on('internalcommand', function(data) {\n if (data.command === 'hardBack') {\n if ($$('.modal-in').length > 0) {\n if ( !($$('.error-dialog.modal-in').length > 0) ) {\n f7.dialog.close();\n }\n Common.Gateway.internalMessage('hardBack', false);\n } else\n Common.Gateway.internalMessage('hardBack', true);\n }\n });\n Common.Gateway.internalMessage('listenHardBack');\n }, error => {\n console.log('promise failed ' + error);\n });\n };\n\n if ( About.developVersion() ) {\n const script = document.createElement(\"script\");\n script.src = \"../../../../sdkjs/develop/sdkjs/slide/scripts.js\";\n script.async = true;\n script.onload = on_script_load;\n script.onerror = () => {\n console.log('error on load script');\n };\n\n document.body.appendChild(script);\n } else {\n on_script_load();\n }\n }\n\n applyMode(appOptions) {\n this.api.asc_enableKeyEvents(appOptions.isEdit);\n this.api.asc_setViewMode(!appOptions.isEdit && !appOptions.isRestrictedEdit);\n (appOptions.isRestrictedEdit && appOptions.canComments) && this.api.asc_setRestriction(Asc.c_oAscRestrictionType.OnlyComments);\n\n let value = LocalStorage.getItem('pe-mobile-settings-unit');\n value = (value !== null) ?\n parseInt(value) :\n (appOptions.customization && appOptions.customization.unit ? Common.Utils.Metric.c_MetricUnits[appOptions.customization.unit.toLocaleLowerCase()] : Common.Utils.Metric.getDefaultMetric());\n (value === undefined) && (value = Common.Utils.Metric.getDefaultMetric());\n Common.Utils.Metric.setCurrentMetric(value);\n this.api.asc_SetDocumentUnits((value === Common.Utils.Metric.c_MetricUnits.inch) ?\n Asc.c_oAscDocumentUnits.Inch :\n ((value === Common.Utils.Metric.c_MetricUnits.pt) ? Asc.c_oAscDocumentUnits.Point : Asc.c_oAscDocumentUnits.Millimeter));\n\n this.api.asc_registerCallback('asc_onDocumentModifiedChanged', this.onDocumentModifiedChanged.bind(this));\n this.api.asc_registerCallback('asc_onDocumentCanSaveChanged', this.onDocumentCanSaveChanged.bind(this));\n\n Common.Notifications.trigger('preloader:close');\n Common.Notifications.trigger('preloader:endAction', Asc.c_oAscAsyncActionType['BlockInteraction'], this.ApplyEditRights);\n\n if (!this._isDocReady) {\n Common.Notifications.trigger('preloader:beginAction', Asc.c_oAscAsyncActionType['BlockInteraction'], this.LoadingDocument);\n }\n\n // Message on window close\n window.onbeforeunload = this.onBeforeUnload.bind(this);\n window.onunload = this.onUnload.bind(this);\n }\n\n onDocumentModifiedChanged () {\n const isModified = this.api.asc_isDocumentCanSave();\n if (this._state.isDocModified !== isModified) {\n this._isDocReady && Common.Gateway.setDocumentModified(this.api.isDocumentModified());\n }\n\n this.updateWindowTitle();\n }\n\n onDocumentCanSaveChanged (isCanSave) {\n //\n }\n\n onBeforeUnload () {\n LocalStorage.save();\n\n if (this.api.isDocumentModified()) {\n this.api.asc_stopSaving();\n this.continueSavingTimer = window.setTimeout(() => {\n this.api.asc_continueSaving();\n }, 500);\n\n const { t } = this.props;\n const _t = t('Controller.Main', {returnObjects:true});\n return _t.leavePageText;\n }\n }\n\n onUnload () {\n if (this.continueSavingTimer)\n clearTimeout(this.continueSavingTimer);\n }\n\n bindEvents () {\n $$(window).on('resize', () => {\n this.api.Resize();\n });\n\n $$(window).on('popup:open sheet:open actions:open searchbar:enable', () => {\n this.api.asc_enableKeyEvents(false);\n });\n\n this.api.asc_registerCallback('asc_onDocumentContentReady', this.onDocumentContentReady.bind(this));\n this.api.asc_registerCallback('asc_onDocumentUpdateVersion', this.onUpdateVersion.bind(this));\n this.api.asc_registerCallback('asc_onServerVersion', this.onServerVersion.bind(this));\n this.api.asc_registerCallback('asc_onAdvancedOptions', this.onAdvancedOptions.bind(this));\n this.api.asc_registerCallback('asc_onDocumentName', this.onDocumentName.bind(this));\n this.api.asc_registerCallback('asc_onPrintUrl', this.onPrintUrl.bind(this));\n this.api.asc_registerCallback('asc_onPrint', this.onPrint.bind(this));\n this.api.asc_registerCallback('asc_onMeta', this.onMeta.bind(this));\n\n EditorUIController.initThemeColors && EditorUIController.initThemeColors();\n\n const storePresentationSettings = this.props.storePresentationSettings;\n\n this.api.asc_registerCallback('asc_onPresentationSize', (width, height) => {\n storePresentationSettings.changeSizeIndex(width, height);\n });\n\n this.api.asc_registerCallback('asc_onSendThemeColorSchemes', (arr) => {\n storePresentationSettings.addSchemes(arr);\n });\n\n this.api.asc_registerCallback('asc_onDownloadUrl', this.onDownloadUrl.bind(this));\n\n EditorUIController.initFocusObjects && EditorUIController.initFocusObjects(this.props.storeFocusObjects);\n\n EditorUIController.initEditorStyles && EditorUIController.initEditorStyles(this.props.storeSlideSettings);\n\n // Text settings \n\n const storeTextSettings = this.props.storeTextSettings;\n storeTextSettings.resetFontsRecent(LocalStorage.getItem('ppe-settings-recent-fonts'));\n\n EditorUIController.initFonts && EditorUIController.initFonts(storeTextSettings);\n\n this.api.asc_registerCallback('asc_onVerticalAlign', (typeBaseline) => {\n storeTextSettings.resetTypeBaseline(typeBaseline);\n });\n\n this.api.asc_registerCallback('asc_onListType', (data) => {\n let type = data.get_ListType();\n let subtype = data.get_ListSubType();\n\n storeTextSettings.resetListType(type);\n\n switch (type) {\n case 0:\n storeTextSettings.resetBullets(subtype);\n storeTextSettings.resetNumbers(-1);\n break;\n case 1:\n storeTextSettings.resetNumbers(subtype);\n storeTextSettings.resetBullets(-1);\n break;\n default: \n storeTextSettings.resetBullets(-1);\n storeTextSettings.resetNumbers(-1);\n }\n });\n\n this.api.asc_registerCallback('asc_onPrAlign', (align) => {\n storeTextSettings.resetParagraphAlign(align);\n });\n\n this.api.asc_registerCallback('asc_onVerticalTextAlign', valign => {\n storeTextSettings.resetParagraphValign(valign);\n });\n\n this.api.asc_registerCallback('asc_canIncreaseIndent', value => {\n storeTextSettings.resetIncreaseIndent(value);\n });\n\n this.api.asc_registerCallback('asc_canDecreaseIndent', value => {\n storeTextSettings.resetDecreaseIndent(value);\n });\n\n this.api.asc_registerCallback('asc_onTextColor', color => {\n storeTextSettings.resetTextColor(color);\n });\n\n this.api.asc_registerCallback('asc_onTextHighLight', color => {\n storeTextSettings.resetHighlightColor(color);\n });\n\n this.api.asc_registerCallback('asc_onParaSpacingLine', (vc) => {\n storeTextSettings.resetLineSpacing(vc);\n });\n\n //link settings\n const storeLinkSettings = this.props.storeLinkSettings;\n this.api.asc_registerCallback('asc_onCanAddHyperlink', (value) => {\n storeLinkSettings.canAddHyperlink(value);\n });\n\n // Table settings\n\n EditorUIController.initTableTemplates && EditorUIController.initTableTemplates(this.props.storeTableSettings);\n\n // Chart settings\n\n EditorUIController.updateChartStyles && EditorUIController.updateChartStyles(this.props.storeChartSettings, this.props.storeFocusObjects);\n\n // Toolbar settings\n\n const storeToolbarSettings = this.props.storeToolbarSettings;\n this.api.asc_registerCallback('asc_onCanUndo', (can) => {\n if (this.props.users.isDisconnected) return;\n storeToolbarSettings.setCanUndo(can);\n });\n this.api.asc_registerCallback('asc_onCanRedo', (can) => {\n if (this.props.users.isDisconnected) return;\n storeToolbarSettings.setCanRedo(can);\n });\n this.api.asc_registerCallback('asc_onCountPages', (count) => {\n storeToolbarSettings.setCountPages(count);\n });\n\n this.api.asc_registerCallback('asc_onReplaceAll', this.onApiTextReplaced.bind(this));\n\n // Presentation Info\n\n const storePresentationInfo = this.props.storePresentationInfo;\n\n this.api.asc_registerCallback('asc_onMeta', (meta) => {\n if(meta) {\n storePresentationInfo.changeTitle(meta.title);\n }\n });\n }\n\n onApiTextReplaced(found, replaced) {\n const { t } = this.props;\n\n if (found) {\n f7.dialog.alert(null, !(found - replaced > 0) ? t('Controller.Main.textReplaceSuccess').replace(/\\{0\\}/, `${replaced}`) : t('Controller.Main.textReplaceSkipped').replace(/\\{0\\}/, `${found - replaced}`));\n } else {\n f7.dialog.alert(null, t('Controller.Main.textNoMatches'));\n }\n }\n\n onDocumentContentReady () {\n if (this._isDocReady)\n return;\n\n this._isDocReady = true;\n\n const appOptions = this.props.storeAppOptions;\n const appSettings = this.props.storeApplicationSettings;\n\n this.api.SetDrawingFreeze(false);\n\n Common.Notifications.trigger('preloader:close');\n Common.Notifications.trigger('preloader:endAction', Asc.c_oAscAsyncActionType['BlockInteraction'], this.LoadingDocument);\n\n let value = LocalStorage.getItem(\"pe-settings-zoom\");\n const zf = (value!==null) ? parseInt(value) : (appOptions.customization && appOptions.customization.zoom ? parseInt(appOptions.customization.zoom) : -1);\n (zf === -1) ? this.api.zoomFitToPage() : ((zf === -2) ? this.api.zoomFitToWidth() : this.api.zoom(zf>0 ? zf : 100));\n\n value = LocalStorage.getBool(\"pe-mobile-spellcheck\", !(appOptions.customization && appOptions.customization.spellcheck===false));\n appSettings.changeSpellCheck(value);\n this.api.asc_setSpellCheck(value);\n\n this.updateWindowTitle(true);\n\n if (appOptions.isEdit && this.needToUpdateVersion) {\n Common.Notifications.trigger('api:disconnect');\n }\n\n Common.Gateway.on('processsaveresult', this.onProcessSaveResult.bind(this));\n Common.Gateway.on('processrightschange', this.onProcessRightsChange.bind(this));\n Common.Gateway.on('downloadas', this.onDownloadAs.bind(this));\n Common.Gateway.on('requestclose', this.onRequestClose.bind(this));\n\n Common.Gateway.sendInfo({\n mode: appOptions.isEdit ? 'edit' : 'view'\n });\n\n this.api.Resize();\n this.api.zoomFitToPage();\n this.api.asc_GetDefaultTableStyles && setTimeout(() => {this.api.asc_GetDefaultTableStyles()}, 1);\n\n this.applyLicense();\n\n Common.Gateway.documentReady();\n f7.emit('resize');\n\n Common.Notifications.trigger('document:ready');\n\n appOptions.changeDocReady(true);\n }\n\n onLicenseChanged (params) {\n const appOptions = this.props.storeAppOptions;\n const licType = params.asc_getLicenseType();\n if (licType !== undefined && (appOptions.canEdit || appOptions.isRestrictedEdit) && appOptions.config.mode !== 'view' &&\n (licType === Asc.c_oLicenseResult.Connections || licType === Asc.c_oLicenseResult.UsersCount || licType === Asc.c_oLicenseResult.ConnectionsOS || licType === Asc.c_oLicenseResult.UsersCountOS\n || licType === Asc.c_oLicenseResult.SuccessLimit && (appOptions.trialMode & Asc.c_oLicenseMode.Limited) !== 0))\n this._state.licenseType = licType;\n\n if (licType !== undefined && appOptions.canLiveView && (licType===Asc.c_oLicenseResult.ConnectionsLive || licType===Asc.c_oLicenseResult.ConnectionsLiveOS||\n licType===Asc.c_oLicenseResult.UsersViewCount || licType===Asc.c_oLicenseResult.UsersViewCountOS))\n this._state.licenseType = licType;\n\n if (this._isDocReady && this._state.licenseType)\n this.applyLicense();\n }\n\n applyLicense () {\n const { t } = this.props;\n const _t = t('Controller.Main', {returnObjects:true});\n\n const warnNoLicense = _t.warnNoLicense.replace(/%1/g, __COMPANY_NAME__);\n const warnNoLicenseUsers = _t.warnNoLicenseUsers.replace(/%1/g, __COMPANY_NAME__);\n const textNoLicenseTitle = _t.textNoLicenseTitle.replace(/%1/g, __COMPANY_NAME__);\n const warnLicenseExceeded = _t.warnLicenseExceeded.replace(/%1/g, __COMPANY_NAME__);\n const warnLicenseUsersExceeded = _t.warnLicenseUsersExceeded.replace(/%1/g, __COMPANY_NAME__);\n\n const appOptions = this.props.storeAppOptions;\n if (appOptions.config.mode !== 'view' && !EditorUIController.isSupportEditFeature()) {\n let value = LocalStorage.getItem(\"pe-opensource-warning\");\n value = (value !== null) ? parseInt(value) : 0;\n const now = (new Date).getTime();\n if (now - value > 86400000) {\n LocalStorage.setItem(\"pe-opensource-warning\", now);\n f7.dialog.create({\n title: _t.notcriticalErrorTitle,\n text : _t.errorOpensource,\n buttons: [{text: 'OK'}]\n }).open();\n }\n Common.Notifications.trigger('toolbar:activatecontrols');\n return;\n }\n\n if (appOptions.config.mode === 'view') {\n if (appOptions.canLiveView && (this._state.licenseType===Asc.c_oLicenseResult.ConnectionsLive || this._state.licenseType===Asc.c_oLicenseResult.ConnectionsLiveOS ||\n this._state.licenseType===Asc.c_oLicenseResult.UsersViewCount || this._state.licenseType===Asc.c_oLicenseResult.UsersViewCountOS ||\n !appOptions.isAnonymousSupport && !!appOptions.config.user.anonymous)) {\n appOptions.canLiveView = false;\n this.api.asc_SetFastCollaborative(false);\n }\n Common.Notifications.trigger('toolbar:activatecontrols');\n } else if (!appOptions.isAnonymousSupport && !!appOptions.config.user.anonymous) {\n Common.Notifications.trigger('toolbar:activatecontrols');\n Common.Notifications.trigger('toolbar:deactivateeditcontrols');\n this.api.asc_coAuthoringDisconnect();\n Common.Notifications.trigger('api:disconnect');\n f7.dialog.create({\n title: _t.notcriticalErrorTitle,\n text : _t.warnLicenseAnonymous,\n buttons: [{text: 'OK'}]\n }).open();\n } else if (this._state.licenseType) {\n let license = this._state.licenseType;\n let buttons = [{text: 'OK'}];\n if ((appOptions.trialMode & Asc.c_oLicenseMode.Limited) !== 0 &&\n (license === Asc.c_oLicenseResult.SuccessLimit ||\n appOptions.permissionsLicense === Asc.c_oLicenseResult.SuccessLimit)\n ) {\n license = _t.warnLicenseLimitedRenewed;\n } else if (license === Asc.c_oLicenseResult.Connections || license === Asc.c_oLicenseResult.UsersCount) {\n license = (license===Asc.c_oLicenseResult.Connections) ? warnLicenseExceeded : warnLicenseUsersExceeded;\n } else {\n license = (license === Asc.c_oLicenseResult.ConnectionsOS) ? warnNoLicense : warnNoLicenseUsers;\n buttons = [{\n text: _t.textBuyNow,\n bold: true,\n onClick: function() {\n window.open(`${__PUBLISHER_URL__}`, \"_blank\");\n }\n },\n {\n text: _t.textContactUs,\n onClick: function() {\n window.open(`mailto:${__SALES_EMAIL__}`, \"_blank\");\n }\n }];\n }\n if (this._state.licenseType === Asc.c_oLicenseResult.SuccessLimit) {\n Common.Notifications.trigger('toolbar:activatecontrols');\n } else {\n Common.Notifications.trigger('toolbar:activatecontrols');\n Common.Notifications.trigger('toolbar:deactivateeditcontrols');\n this.api.asc_coAuthoringDisconnect();\n Common.Notifications.trigger('api:disconnect');\n }\n\n let value = LocalStorage.getItem(\"pe-license-warning\");\n value = (value !== null) ? parseInt(value) : 0;\n const now = (new Date).getTime();\n\n if (now - value > 86400000) {\n LocalStorage.setItem(\"pe-license-warning\", now);\n f7.dialog.create({\n title: textNoLicenseTitle,\n text : license,\n buttons: buttons\n }).open();\n }\n } else {\n if (!appOptions.isDesktopApp && !appOptions.canBrandingExt &&\n appOptions.config && appOptions.config.customization && (appOptions.config.customization.loaderName || appOptions.config.customization.loaderLogo)) {\n f7.dialog.create({\n title: _t.textPaidFeature,\n text : _t.textCustomLoader,\n buttons: [{\n text: _t.textContactUs,\n bold: true,\n onClick: () => {\n window.open(`mailto:${__SALES_EMAIL__}`, \"_blank\");\n }\n },\n { text: _t.textClose }]\n }).open();\n }\n Common.Notifications.trigger('toolbar:activatecontrols');\n }\n }\n\n onUpdateVersion (callback) {\n const { t } = this.props;\n const _t = t('Controller.Main', {returnObjects:true});\n\n this.needToUpdateVersion = true;\n Common.Notifications.trigger('preloader:endAction', Asc.c_oAscAsyncActionType['BlockInteraction'], this.LoadingDocument);\n\n f7.dialog.alert(\n _t.errorUpdateVersion,\n _t.titleUpdateVersion,\n () => {\n Common.Gateway.updateVersion();\n if (callback) {\n callback.call(this);\n }\n Common.Notifications.trigger('preloader:beginAction', Asc.c_oAscAsyncActionType['BlockInteraction'], this.LoadingDocument);\n });\n }\n\n onServerVersion (buildVersion) {\n if (this.changeServerVersion) return true;\n const { t } = this.props;\n const _t = t('Controller.Main', {returnObjects:true});\n\n if (About.appVersion() !== buildVersion && !window.compareVersions) {\n this.changeServerVersion = true;\n f7.dialog.alert(\n _t.errorServerVersion,\n _t.titleServerVersion,\n () => {\n setTimeout(() => {Common.Gateway.updateVersion()}, 0);\n });\n return true;\n }\n return false;\n }\n\n onAdvancedOptions (type, advOptions) {\n const { t } = this.props;\n const _t = t('Controller.Main', {returnObjects:true});\n \n if ($$('.dlg-adv-options.modal-in').length > 0) return;\n\n if (type == Asc.c_oAscAdvancedOptionsID.DRM) {\n Common.Notifications.trigger('preloader:close');\n Common.Notifications.trigger('preloader:endAction', Asc.c_oAscAsyncActionType['BlockInteraction'], this.LoadingDocument, true);\n\n const buttons = [{\n text: 'OK',\n bold: true,\n onClick: () => {\n const password = document.getElementById('modal-password').value;\n this.api.asc_setAdvancedOptions(type, new Asc.asc_CDRMAdvancedOptions(password));\n\n if (!this._isDocReady) {\n Common.Notifications.trigger('preloader:beginAction', Asc.c_oAscAsyncActionType['BlockInteraction'], this.LoadingDocument);\n }\n }\n }];\n\n if(this.isDRM) {\n f7.dialog.create({\n text: _t.txtIncorrectPwd,\n buttons : [{\n text: 'OK',\n bold: true,\n }]\n }).open();\n }\n\n if (this.props.storeAppOptions.canRequestClose)\n buttons.push({\n text: _t.closeButtonText,\n onClick: () => {\n Common.Gateway.requestClose();\n }\n });\n\n f7.dialog.create({\n title: _t.advDRMOptions,\n text: _t.textOpenFile,\n content: Device.ios ?\n '
                ' : '
                ',\n buttons: buttons,\n cssClass: 'dlg-adv-options'\n }).open();\n this.isDRM = true;\n }\n }\n\n onDocumentName () {\n this.updateWindowTitle(true);\n }\n\n updateWindowTitle (force) {\n const isModified = this.api.isDocumentModified();\n if (this._state.isDocModified !== isModified || force) {\n const title = this.defaultTitleText;\n\n if (window.document.title !== title) {\n window.document.title = title;\n }\n\n this._isDocReady && (this._state.isDocModified !== isModified) && Common.Gateway.setDocumentModified(isModified);\n this._state.isDocModified = isModified;\n }\n }\n\n onPrint () {\n if (!this.props.storeAppOptions.canPrint) return;\n\n if (this.api)\n this.api.asc_Print();\n Common.component.Analytics.trackEvent('Print');\n }\n\n onPrintUrl (url) {\n if (this.iframePrint) {\n this.iframePrint.parentNode.removeChild(this.iframePrint);\n this.iframePrint = null;\n }\n\n if (!this.iframePrint) {\n this.iframePrint = document.createElement(\"iframe\");\n this.iframePrint.id = \"id-print-frame\";\n this.iframePrint.style.display = 'none';\n this.iframePrint.style.visibility = \"hidden\";\n this.iframePrint.style.position = \"fixed\";\n this.iframePrint.style.right = \"0\";\n this.iframePrint.style.bottom = \"0\";\n document.body.appendChild(this.iframePrint);\n this.iframePrint.onload = function() {\n this.iframePrint.contentWindow.focus();\n this.iframePrint.contentWindow.print();\n this.iframePrint.contentWindow.blur();\n window.focus();\n };\n }\n\n if (url) {\n this.iframePrint.src = url;\n }\n }\n\n onMeta (meta) {\n this.updateWindowTitle(true);\n Common.Gateway.metaChange(meta);\n }\n\n onExternalMessage (msg) {\n if (msg && msg.msg) {\n msg.msg = (msg.msg).toString();\n f7.notification.create({\n //title: uiApp.params.modalTitle,\n text: [msg.msg.charAt(0).toUpperCase() + msg.msg.substring(1)],\n closeButton: true\n }).open();\n\n Common.component.Analytics.trackEvent('External Error');\n }\n }\n\n onRunAutostartMacroses () {\n const config = this.props.storeAppOptions.config;\n const enable = !config.customization || (config.customization.macros !== false);\n if (enable) {\n const value = this.props.storeApplicationSettings.macrosMode;\n if (value === 1) {\n this.api.asc_runAutostartMacroses();\n } else if (value === 0) {\n const { t } = this.props;\n const _t = t('Controller.Main', {returnObjects:true});\n f7.dialog.create({\n title: _t.notcriticalErrorTitle,\n text: _t.textHasMacros,\n content: `
                \n \n ${_t.textRemember}\n
                `,\n buttons: [{\n text: _t.textYes,\n onClick: () => {\n const dontshow = $$('input[name=\"checkbox-show-macros\"]').prop('checked');\n if (dontshow) {\n this.props.storeApplicationSettings.changeMacrosSettings(1);\n LocalStorage.setItem(\"pe-mobile-macros-mode\", 1);\n }\n setTimeout(() => {\n this.api.asc_runAutostartMacroses();\n }, 1);\n }},\n {\n text: _t.textNo,\n onClick: () => {\n const dontshow = $$('input[name=\"checkbox-show-macros\"]').prop('checked');\n if (dontshow) {\n this.props.storeApplicationSettings.changeMacrosSettings(2);\n LocalStorage.setItem(\"pe-mobile-macros-mode\", 2);\n }\n }\n }]\n }).open();\n }\n }\n }\n\n onMacrosPermissionRequest (url, callback) {\n if (url && callback) {\n this.stackMacrosRequests.push({url: url, callback: callback});\n if (this.stackMacrosRequests.length>1) {\n return;\n }\n } else if (this.stackMacrosRequests.length>0) {\n url = this.stackMacrosRequests[0].url;\n callback = this.stackMacrosRequests[0].callback;\n } else\n return;\n\n const value = this.props.storeApplicationSettings.macrosRequest;\n if (value>0) {\n callback && callback(value === 1);\n this.stackMacrosRequests.shift();\n this.onMacrosPermissionRequest();\n } else {\n const { t } = this.props;\n const _t = t('Controller.Main', {returnObjects:true});\n f7.dialog.create({\n title: _t.notcriticalErrorTitle,\n text: _t.textRequestMacros.replace('%1', url),\n cssClass: 'dlg-macros-request',\n content: `
                \n \n ${_t.textRemember}\n
                `,\n buttons: [{\n text: _t.textYes,\n onClick: () => {\n const dontshow = $$('input[name=\"checkbox-show-macros\"]').prop('checked');\n if (dontshow) {\n this.props.storeApplicationSettings.changeMacrosRequest(1);\n LocalStorage.setItem(\"pe-mobile-allow-macros-request\", 1);\n }\n setTimeout(() => {\n if (callback) callback(true);\n this.stackMacrosRequests.shift();\n this.onMacrosPermissionRequest();\n }, 1);\n }},\n {\n text: _t.textNo,\n onClick: () => {\n const dontshow = $$('input[name=\"checkbox-show-macros\"]').prop('checked');\n if (dontshow) {\n this.props.storeApplicationSettings.changeMacrosRequest(2);\n LocalStorage.setItem(\"pe-mobile-allow-macros-request\", 2);\n }\n setTimeout(() => {\n if (callback) callback(false);\n this.stackMacrosRequests.shift();\n this.onMacrosPermissionRequest();\n }, 1);\n }\n }]\n }).open();\n }\n }\n\n onProcessSaveResult (data) {\n this.api.asc_OnSaveEnd(data.result);\n\n if (data && data.result === false) {\n const { t } = this.props;\n const _t = t('Controller.Main', {returnObjects:true});\n f7.dialog.alert(\n (!data.message) ? _t.errorProcessSaveResult : data.message,\n _t.criticalErrorTitle\n );\n }\n }\n\n onProcessRightsChange (data) {\n if (data && data.enabled === false) {\n const appOptions = this.props.storeAppOptions;\n const old_rights = appOptions.lostEditingRights;\n appOptions.changeEditingRights(!old_rights);\n this.api.asc_coAuthoringDisconnect();\n Common.Notifications.trigger('api:disconnect');\n\n if (!old_rights) {\n const { t } = this.props;\n const _t = t('Controller.Main', {returnObjects:true});\n f7.dialog.alert(\n (!data.message) ? _t.warnProcessRightsChange : data.message,\n _t.notcriticalErrorTitle,\n () => { appOptions.changeEditingRights(false); }\n );\n }\n }\n }\n\n onDownloadUrl(url, fileType) {\n if (this._state.isFromGatewayDownloadAs) {\n Common.Gateway.downloadAs(url, fileType);\n }\n\n this._state.isFromGatewayDownloadAs = false;\n }\n\n onDownloadAs(format) {\n const appOptions = this.props.storeAppOptions;\n\n if (!appOptions.canDownload) {\n const { t } = this.props;\n const _t = t('Controller.Main', { returnObjects:true });\n Common.Gateway.reportError(Asc.c_oAscError.ID.AccessDeny, _t.errorAccessDeny);\n return;\n }\n\n this._state.isFromGatewayDownloadAs = true;\n\n let _format = (format && (typeof format == 'string')) ? Asc.c_oAscFileType[format.toUpperCase()] : null,\n _supported = [\n Asc.c_oAscFileType.PPTX,\n Asc.c_oAscFileType.ODP,\n Asc.c_oAscFileType.PDF,\n Asc.c_oAscFileType.PDFA,\n Asc.c_oAscFileType.POTX,\n Asc.c_oAscFileType.OTP,\n Asc.c_oAscFileType.PPTM,\n Asc.c_oAscFileType.PNG,\n Asc.c_oAscFileType.JPG\n ];\n\n if (!_format || _supported.indexOf(_format) < 0)\n _format = Asc.c_oAscFileType.PPTX;\n\n const options = new Asc.asc_CDownloadOptions(_format, true);\n options.asc_setIsSaveAs(true);\n this.api.asc_DownloadAs(options);\n }\n\n onRequestClose () {\n const { t } = this.props;\n const _t = t(\"Toolbar\", { returnObjects: true });\n\n if (this.api.isDocumentModified()) {\n this.api.asc_stopSaving();\n\n f7.dialog.create({\n title: _t.dlgLeaveTitleText,\n text: _t.dlgLeaveMsgText,\n verticalButtons: true,\n buttons : [\n {\n text: _t.leaveButtonText,\n onClick: () => {\n this.api.asc_undoAllChanges();\n this.api.asc_continueSaving();\n Common.Gateway.requestClose();\n }\n },\n {\n text: _t.stayButtonText,\n bold: true,\n onClick: () => {\n this.api.asc_continueSaving();\n }\n }\n ]\n }).open();\n } else {\n Common.Gateway.requestClose();\n }\n }\n\n render () {\n return (\n \n \n \n \n \n {EditorUIController.getEditCommentControllers && EditorUIController.getEditCommentControllers()}\n \n \n \n \n )\n }\n\n componentDidMount () {\n Common.EditorApi = {get: () => this.api};\n this.initSdk();\n }\n}\n\nconst translated = withTranslation()(MainController);\nexport {translated as MainController};\n","export const processArrayScripts = async (array, fn) => {\n\tconst results = [];\n\n\tfor (const item of array) {\n try {\n const data = await fn(item);\n results.push(data);\n } catch (error) {\n console.log(`Error with processing element ${item}:`, error);\n continue;\n }\n\t}\n\n\treturn results;\n};","import React from 'react';\n\nimport {App,Panel,Views,View,Popup,Page,Navbar,Toolbar,NavRight,Link,Block,BlockTitle,List,ListItem,ListInput,ListButton,BlockFooter} from 'framework7-react';\nimport { f7ready } from 'framework7-react';\n\nimport '../../../../common/Analytics.js';\n\nimport '../../../../common/Gateway.js';\nimport '../../../../common/main/lib/util/utils.js';\n\nimport routes from '../router/routes.js';\n\nimport Notifications from '../../../../common/mobile/utils/notifications.js'\nimport {MainController} from '../controller/Main';\nimport {Device} from '../../../../common/mobile/utils/device'\n\n // Framework7 Parameters\nconst f7params = {\n name: 'Presentation Editor', // App name\n theme: 'auto', // Automatic theme detection\n\n routes: routes, // App routes\n};\n\nexport default class extends React.Component {\n constructor() {\n super();\n\n Common.Notifications = new Notifications();\n }\n\n render() {\n return (\n \n {/* Your main view, should have \"view-main\" class */}\n \n \n \n )\n }\n\n componentDidMount() {\n f7ready(f7 => {\n Device.initDom();\n });\n }\n}\n","const consoleLogger = {\n type: 'logger',\n log(args) {\n this.output('log', args);\n },\n warn(args) {\n this.output('warn', args);\n },\n error(args) {\n this.output('error', args);\n },\n output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\nclass Logger {\n constructor(concreteLogger) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.init(concreteLogger, options);\n }\n init(concreteLogger) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return this.forward(args, 'log', '', true);\n }\n warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return this.forward(args, 'warn', '', true);\n }\n error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return this.forward(args, 'error', '');\n }\n deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = `${prefix}${this.prefix} ${args[0]}`;\n return this.logger[lvl](args);\n }\n create(moduleName) {\n return new Logger(this.logger, {\n ...{\n prefix: `${this.prefix}:${moduleName}:`\n },\n ...this.options\n });\n }\n clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n constructor() {\n this.observers = {};\n }\n on(events, listener) {\n events.split(' ').forEach(event => {\n if (!this.observers[event]) this.observers[event] = new Map();\n const numListeners = this.observers[event].get(listener) || 0;\n this.observers[event].set(listener, numListeners + 1);\n });\n return this;\n }\n off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event].delete(listener);\n }\n emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (this.observers[event]) {\n const cloned = Array.from(this.observers[event].entries());\n cloned.forEach(_ref => {\n let [observer, numTimesAdded] = _ref;\n for (let i = 0; i < numTimesAdded; i++) {\n observer(...args);\n }\n });\n }\n if (this.observers['*']) {\n const cloned = Array.from(this.observers['*'].entries());\n cloned.forEach(_ref2 => {\n let [observer, numTimesAdded] = _ref2;\n for (let i = 0; i < numTimesAdded; i++) {\n observer.apply(observer, [event, ...args]);\n }\n });\n }\n }\n}\n\nfunction defer() {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(m => {\n if (s[m]) t[m] = s[m];\n });\n}\nconst lastOfPathSeparatorRegExp = /###/g;\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\n }\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n const stack = typeof path !== 'string' ? path : path.split('.');\n let stackIndex = 0;\n while (stackIndex < stack.length - 1) {\n if (canNotTraverseDeeper()) return {};\n const key = cleanKey(stack[stackIndex]);\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n ++stackIndex;\n }\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack[stackIndex])\n };\n}\nfunction setPath(object, path, newValue) {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n if (obj !== undefined || path.length === 1) {\n obj[k] = newValue;\n return;\n }\n let e = path[path.length - 1];\n let p = path.slice(0, path.length - 1);\n let last = getLastOfPath(object, p, Object);\n while (last.obj === undefined && p.length) {\n e = `${p[p.length - 1]}.${e}`;\n p = p.slice(0, p.length - 1);\n last = getLastOfPath(object, p, Object);\n if (last && last.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n last.obj = undefined;\n }\n }\n last.obj[`${last.k}.${e}`] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n const {\n obj,\n k\n } = getLastOfPath(object, path);\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n const value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (const prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n }\n return data;\n}\nclass RegExpCache {\n constructor(capacity) {\n this.capacity = capacity;\n this.regExpMap = new Map();\n this.regExpQueue = [];\n }\n getRegExp(pattern) {\n const regExpFromCache = this.regExpMap.get(pattern);\n if (regExpFromCache !== undefined) {\n return regExpFromCache;\n }\n const regExpNew = new RegExp(pattern);\n if (this.regExpQueue.length === this.capacity) {\n this.regExpMap.delete(this.regExpQueue.shift());\n }\n this.regExpMap.set(pattern, regExpNew);\n this.regExpQueue.push(pattern);\n return regExpNew;\n }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n const possibleChars = chars.filter(c => nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);\n if (possibleChars.length === 0) return true;\n const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n let matched = !r.test(key);\n if (!matched) {\n const ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n}\nfunction deepFind(obj, path) {\n let keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n const tokens = path.split(keySeparator);\n let current = obj;\n for (let i = 0; i < tokens.length;) {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n let next;\n let nextPath = '';\n for (let j = i; j < tokens.length; ++j) {\n if (j !== i) {\n nextPath += keySeparator;\n }\n nextPath += tokens[j];\n next = current[nextPath];\n if (next !== undefined) {\n if (['string', 'number', 'boolean'].indexOf(typeof next) > -1 && j < tokens.length - 1) {\n continue;\n }\n i += j - i + 1;\n break;\n }\n }\n current = next;\n }\n return current;\n}\nfunction getCleanedCode(code) {\n if (code && code.indexOf('_') > 0) return code.replace('_', '-');\n return code;\n}\n\nclass ResourceStore extends EventEmitter {\n constructor(data) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n super();\n this.data = data || {};\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n if (this.options.ignoreJSONStructure === undefined) {\n this.options.ignoreJSONStructure = true;\n }\n }\n addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n removeNamespaces(ns) {\n const index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n getResource(lng, ns, key) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n let path;\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n } else {\n path = [lng, ns];\n if (key) {\n if (Array.isArray(key)) {\n path.push(...key);\n } else if (typeof key === 'string' && keySeparator) {\n path.push(...key.split(keySeparator));\n } else {\n path.push(key);\n }\n }\n }\n const result = getPath(this.data, path);\n if (!result && !ns && !key && lng.indexOf('.') > -1) {\n lng = path[0];\n ns = path[1];\n key = path.slice(2).join('.');\n }\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n addResource(lng, ns, key, value) {\n let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n addResources(lng, ns, resources) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n for (const m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n addResourceBundle(lng, ns, resources, deep, overwrite) {\n let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false,\n skipCopy: false\n };\n let path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n let pack = getPath(this.data, path) || {};\n if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = {\n ...pack,\n ...resources\n };\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return {\n ...{},\n ...this.getResource(lng, ns)\n };\n return this.getResource(lng, ns);\n }\n getDataByLanguage(lng) {\n return this.data[lng];\n }\n hasLanguageSomeTranslations(lng) {\n const data = this.getDataByLanguage(lng);\n const n = data && Object.keys(data) || [];\n return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n }\n toJSON() {\n return this.data;\n }\n}\n\nvar postProcessor = {\n processors: {},\n addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle(processors, value, key, options, translator) {\n processors.forEach(processor => {\n if (this.processors[processor]) value = this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nconst checkedLoadedFor = {};\nclass Translator extends EventEmitter {\n constructor(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super();\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n this.logger = baseLogger.create('translator');\n }\n changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n exists(key) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n if (key === undefined || key === null) {\n return false;\n }\n const resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n extractFromKey(key, options) {\n let nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let namespaces = options.ns || this.options.defaultNS || [];\n const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n const m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key,\n namespaces\n };\n }\n const parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key,\n namespaces\n };\n }\n translate(keys, options, lastKey) {\n if (typeof options !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (typeof options === 'object') options = {\n ...options\n };\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n const returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const {\n key,\n namespaces\n } = this.extractFromKey(keys[keys.length - 1], options);\n const namespace = namespaces[namespaces.length - 1];\n const lng = options.lng || this.language;\n const appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n const nsSeparator = options.nsSeparator || this.options.nsSeparator;\n if (returnDetails) {\n return {\n res: `${namespace}${nsSeparator}${key}`,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(options)\n };\n }\n return `${namespace}${nsSeparator}${key}`;\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(options)\n };\n }\n return key;\n }\n const resolved = this.resolve(keys, options);\n let res = resolved && resolved.res;\n const resUsedKey = resolved && resolved.usedKey || key;\n const resExactUsedKey = resolved && resolved.exactUsedKey || key;\n const resType = Object.prototype.toString.apply(res);\n const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n const joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n const handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, {\n ...options,\n ns: namespaces\n }) : `key '${key} (${this.language})' returned an object instead of string.`;\n if (returnDetails) {\n resolved.res = r;\n resolved.usedParams = this.getUsedParamsDetails(options);\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n const resTypeIsArray = resType === '[object Array]';\n const copy = resTypeIsArray ? [] : {};\n const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (const m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n copy[m] = this.translate(deepKey, {\n ...options,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n let usedDefault = false;\n let usedKey = false;\n const needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n const hasDefaultValue = Translator.hasDefaultValue(options);\n const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n const defaultValueSuffixOrdinalFallback = options.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, {\n ordinal: false\n }) : '';\n const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n const defaultValue = needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] || options[`defaultValue${defaultValueSuffix}`] || options[`defaultValue${defaultValueSuffixOrdinalFallback}`] || options.defaultValue;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n const missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n const fk = this.resolve(key, {\n ...options,\n keySeparator: false\n });\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n let lngs = [];\n const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (let i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n const send = (l, k, specificDefaultValue) => {\n const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (this.options.missingKeyHandler) {\n this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (this.backendConnector && this.backendConnector.saveMissing) {\n this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n this.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(language => {\n const suffixes = this.pluralResolver.getSuffixes(language, options);\n if (needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] && suffixes.indexOf(`${this.options.pluralSeparator}zero`) < 0) {\n suffixes.push(`${this.options.pluralSeparator}zero`);\n }\n suffixes.forEach(suffix => {\n send([language], key + suffix, options[`defaultValue${suffix}`] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = `${namespace}:${key}`;\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n if (this.options.compatibilityAPI !== 'v1') {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}:${key}` : key, usedDefault ? res : undefined);\n } else {\n res = this.options.parseMissingKeyHandler(res);\n }\n }\n }\n if (returnDetails) {\n resolved.res = res;\n resolved.usedParams = this.getUsedParamsDetails(options);\n return resolved;\n }\n return res;\n }\n extendTranslation(res, key, options, resolved, lastKey) {\n var _this = this;\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, {\n ...this.options.interpolation.defaultVariables,\n ...options\n }, options.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init({\n ...options,\n ...{\n interpolation: {\n ...this.options.interpolation,\n ...options.interpolation\n }\n }\n });\n const skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n let nestBef;\n if (skipOnVariables) {\n const nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n let data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n if (skipOnVariables) {\n const na = res.match(this.interpolator.nestingRegexp);\n const nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n if (!options.lng && this.options.compatibilityAPI !== 'v1' && resolved && resolved.res) options.lng = resolved.usedLng;\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n return null;\n }\n return _this.translate(...args, key);\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n const postProcess = options.postProcess || this.options.postProcess;\n const postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n i18nResolved: {\n ...resolved,\n usedParams: this.getUsedParamsDetails(options)\n },\n ...options\n } : options, this);\n }\n return res;\n }\n resolve(keys) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let found;\n let usedKey;\n let exactUsedKey;\n let usedLng;\n let usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(k => {\n if (this.isValidLookup(found)) return;\n const extracted = this.extractFromKey(k, options);\n const key = extracted.key;\n usedKey = key;\n let namespaces = extracted.namespaces;\n if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n const needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n const needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n const codes = options.lngs ? options.lngs : this.languageUtils.toResolveHierarchy(options.lng || this.language, options.fallbackLng);\n namespaces.forEach(ns => {\n if (this.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils && this.utils.hasLoadedNamespace && !this.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(code => {\n if (this.isValidLookup(found)) return;\n usedLng = code;\n const finalKeys = [key];\n if (this.i18nFormat && this.i18nFormat.addLookupKeys) {\n this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n let pluralSuffix;\n if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, options.count, options);\n const zeroSuffix = `${this.options.pluralSeparator}zero`;\n const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n const contextKey = `${key}${this.options.contextSeparator}${options.context}`;\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n let possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!this.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = this.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey,\n exactUsedKey,\n usedLng,\n usedNS\n };\n }\n isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n getResource(code, ns, key) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n getUsedParamsDetails() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n const useOptionsReplaceForData = options.replace && typeof options.replace !== 'string';\n let data = useOptionsReplaceForData ? options.replace : options;\n if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n data.count = options.count;\n }\n if (this.options.interpolation.defaultVariables) {\n data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n }\n if (!useOptionsReplaceForData) {\n data = {\n ...data\n };\n for (const key of optionsKeys) {\n delete data[key];\n }\n }\n return data;\n }\n static hasDefaultValue(options) {\n const prefix = 'defaultValue';\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n}\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nclass LanguageUtil {\n constructor(options) {\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n getScriptPartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return null;\n const p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n getLanguagePartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return code;\n const p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n const specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n let p = code.split('-');\n if (this.options.lowerCaseLng) {\n p = p.map(part => part.toLowerCase());\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n return p.join('-');\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n getBestMatchFromCodes(codes) {\n if (!codes) return null;\n let found;\n codes.forEach(code => {\n if (found) return;\n const cleanedLng = this.formatLanguageCode(code);\n if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(code => {\n if (found) return;\n const lngOnly = this.getLanguagePartFromCode(code);\n if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = this.options.supportedLngs.find(supportedLng => {\n if (supportedLng === lngOnly) return supportedLng;\n if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks.default || [];\n let found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks.default;\n return found || [];\n }\n toResolveHierarchy(code, fallbackCode) {\n const fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n const codes = [];\n const addCode = c => {\n if (!c) return;\n if (this.isSupportedCode(c)) {\n codes.push(c);\n } else {\n this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n }\n };\n if (typeof code === 'string' && (code.indexOf('-') > -1 || code.indexOf('_') > -1)) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(fc => {\n if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));\n });\n return codes;\n }\n}\n\nlet sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nlet _rulesPluralsTypes = {\n 1: function (n) {\n return Number(n > 1);\n },\n 2: function (n) {\n return Number(n != 1);\n },\n 3: function (n) {\n return 0;\n },\n 4: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function (n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function (n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function (n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function (n) {\n return Number(n >= 2);\n },\n 10: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function (n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function (n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function (n) {\n return Number(n !== 0);\n },\n 14: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function (n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function (n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function (n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function (n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function (n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nconst nonIntlVersions = ['v1', 'v2', 'v3'];\nconst intlVersions = ['v4'];\nconst suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nfunction createRules() {\n const rules = {};\n sets.forEach(set => {\n set.lngs.forEach(l => {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\nclass PluralResolver {\n constructor(languageUtils) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n if ((!this.options.compatibilityJSON || intlVersions.includes(this.options.compatibilityJSON)) && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n this.rules = createRules();\n }\n addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n getRule(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(getCleanedCode(code === 'dev' ? 'en' : code), {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch (err) {\n return;\n }\n }\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n needsPlural(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const rule = this.getRule(code, options);\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n return rule && rule.numbers.length > 1;\n }\n getPluralFormsOfKey(code, key) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n }\n getSuffixes(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const rule = this.getRule(code, options);\n if (!rule) {\n return [];\n }\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n }\n return rule.numbers.map(number => this.getSuffix(code, number, options));\n }\n getSuffix(code, count) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const rule = this.getRule(code, options);\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n }\n return this.getSuffixRetroCompatible(rule, count);\n }\n this.logger.warn(`no plural rule found for: ${code}`);\n return '';\n }\n getSuffixRetroCompatible(rule, count) {\n const idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n let suffix = rule.numbers[idx];\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n const returnSuffix = () => this.options.prepend && suffix.toString() ? this.options.prepend + suffix.toString() : suffix.toString();\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return `_plural_${suffix.toString()}`;\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n shouldUseIntlApi() {\n return !nonIntlVersions.includes(this.options.compatibilityJSON);\n }\n}\n\nfunction deepFindWithDefaults(data, defaultData, key) {\n let keySeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '.';\n let ignoreJSONStructure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n let path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && typeof key === 'string') {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n}\nclass Interpolator {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options.interpolation && options.interpolation.format || (value => value);\n this.init(options);\n }\n init() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n const iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n reset() {\n if (this.options) this.init(this.options);\n }\n resetRegExp() {\n const getOrResetRegExp = (existingRegExp, pattern) => {\n if (existingRegExp && existingRegExp.source === pattern) {\n existingRegExp.lastIndex = 0;\n return existingRegExp;\n }\n return new RegExp(pattern, 'g');\n };\n this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}(.+?)${this.nestingSuffix}`);\n }\n interpolate(str, data, lng, options) {\n let match;\n let value;\n let replaces;\n const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n const handleFormat = key => {\n if (key.indexOf(this.formatSeparator) < 0) {\n const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n return this.alwaysFormat ? this.format(path, undefined, lng, {\n ...options,\n ...data,\n interpolationkey: key\n }) : path;\n }\n const p = key.split(this.formatSeparator);\n const k = p.shift().trim();\n const f = p.join(this.formatSeparator).trim();\n return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n ...options,\n ...data,\n interpolationkey: k\n });\n };\n this.resetRegExp();\n const missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n const skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n const todos = [{\n regex: this.regexpUnescape,\n safeValue: val => regexSafe(val)\n }, {\n regex: this.regexp,\n safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n }];\n todos.forEach(todo => {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n const matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n const temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n value = '';\n }\n } else if (typeof value !== 'string' && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n const safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n nest(str, fc) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let match;\n let value;\n let clonedOptions;\n function handleHasOptions(key, inheritedOptions) {\n const sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n const c = key.split(new RegExp(`${sep}[ ]*{`));\n let optionsString = `{${c[1]}`;\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n const matchedSingleQuotes = optionsString.match(/'/g);\n const matchedDoubleQuotes = optionsString.match(/\"/g);\n if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = {\n ...inheritedOptions,\n ...clonedOptions\n };\n } catch (e) {\n this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n return `${key}${sep}${optionsString}`;\n }\n delete clonedOptions.defaultValue;\n return key;\n }\n while (match = this.nestingRegexp.exec(str)) {\n let formatters = [];\n clonedOptions = {\n ...options\n };\n clonedOptions = clonedOptions.replace && typeof clonedOptions.replace !== 'string' ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n let doReduce = false;\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n const r = match[1].split(this.formatSeparator).map(elem => elem.trim());\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n if (!value) {\n this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n value = '';\n }\n if (doReduce) {\n value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n ...options,\n interpolationkey: match[1].trim()\n }), value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n}\n\nfunction parseFormatStr(formatStr) {\n let formatName = formatStr.toLowerCase().trim();\n const formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n const p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n const optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n const opts = optStr.split(';');\n opts.forEach(opt => {\n if (!opt) return;\n const [key, ...rest] = opt.split(':');\n const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n if (val === 'false') formatOptions[key.trim()] = false;\n if (val === 'true') formatOptions[key.trim()] = true;\n if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n });\n }\n }\n return {\n formatName,\n formatOptions\n };\n}\nfunction createCachedFormatter(fn) {\n const cache = {};\n return function invokeFormatter(val, lng, options) {\n const key = lng + JSON.stringify(options);\n let formatter = cache[key];\n if (!formatter) {\n formatter = fn(getCleanedCode(lng), options);\n cache[key] = formatter;\n }\n return formatter(val);\n };\n}\nclass Formatter {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n currency: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt,\n style: 'currency'\n });\n return val => formatter.format(val);\n }),\n datetime: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.DateTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n relativetime: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.RelativeTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val, opt.range || 'day');\n }),\n list: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.ListFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n })\n };\n this.init(options);\n }\n init(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n const iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n format(value, format, lng) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const formats = format.split(this.formatSeparator);\n const result = formats.reduce((mem, f) => {\n const {\n formatName,\n formatOptions\n } = parseFormatStr(f);\n if (this.formats[formatName]) {\n let formatted = mem;\n try {\n const valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = this.formats[formatName](mem, l, {\n ...formatOptions,\n ...options,\n ...valOptions\n });\n } catch (error) {\n this.logger.warn(error);\n }\n return formatted;\n } else {\n this.logger.warn(`there was no format function for ${formatName}`);\n }\n return mem;\n }, value);\n return result;\n }\n}\n\nfunction removePending(q, name) {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n}\nclass Connector extends EventEmitter {\n constructor(backend, store, services) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n super();\n this.backend = backend;\n this.store = store;\n this.services = services;\n this.languageUtils = services.languageUtils;\n this.options = options;\n this.logger = baseLogger.create('backendConnector');\n this.waitingReads = [];\n this.maxParallelReads = options.maxParallelReads || 10;\n this.readingCalls = 0;\n this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n this.state = {};\n this.queue = [];\n if (this.backend && this.backend.init) {\n this.backend.init(services, options.backend, options);\n }\n }\n queueLoad(languages, namespaces, options, callback) {\n const toLoad = {};\n const pending = {};\n const toLoadLanguages = {};\n const toLoadNamespaces = {};\n languages.forEach(lng => {\n let hasAllNamespaces = true;\n namespaces.forEach(ns => {\n const name = `${lng}|${ns}`;\n if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n this.state[name] = 2;\n } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n this.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n loaded(name, err, data) {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (data) {\n this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n skipCopy: true\n });\n }\n this.state[name] = err ? -1 : 2;\n const loaded = {};\n this.queue.forEach(q => {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(l => {\n if (!loaded[l]) loaded[l] = {};\n const loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(n => {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(q => !q.done);\n }\n read(lng, ns, fcName) {\n let tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n let wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n let callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng,\n ns,\n fcName,\n tried,\n wait,\n callback\n });\n return;\n }\n this.readingCalls++;\n const resolver = (err, data) => {\n this.readingCalls--;\n if (this.waitingReads.length > 0) {\n const next = this.waitingReads.shift();\n this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < this.maxRetries) {\n setTimeout(() => {\n this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n const fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n const r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(data => resolver(null, data)).catch(resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n prepareLoading(languages, namespaces) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let callback = arguments.length > 3 ? arguments[3] : undefined;\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n const toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(name => {\n this.loadOne(name);\n });\n }\n load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n loadOne(name) {\n let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n this.loaded(name, err, data);\n });\n }\n saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n let clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : () => {};\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend && this.backend.create) {\n const opts = {\n ...options,\n isUpdate\n };\n const fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n let r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(data => clb(null, data)).catch(clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n}\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: false,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n let ret = {};\n if (typeof args[1] === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n const options = args[3] || args[2];\n Object.keys(options).forEach(key => {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: value => value,\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n}\n\nfunction noop() {}\nfunction bindMemberFunctions(inst) {\n const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(mem => {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\nclass I18n extends EventEmitter {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n super();\n this.options = transformOptions(options);\n this.services = {};\n this.logger = baseLogger;\n this.modules = {\n external: []\n };\n bindMemberFunctions(this);\n if (callback && !this.isInitialized && !options.isClone) {\n if (!this.options.initImmediate) {\n this.init(options, callback);\n return this;\n }\n setTimeout(() => {\n this.init(options, callback);\n }, 0);\n }\n }\n init() {\n var _this = this;\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n this.isInitializing = true;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n const defOpts = get();\n this.options = {\n ...defOpts,\n ...this.options,\n ...transformOptions(options)\n };\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation\n };\n }\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n let formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n const lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n const s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n _this.emit(event, ...args);\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _this.emit(event, ...args);\n });\n this.modules.external.forEach(m => {\n if (m.init) m.init(this);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(fcName => {\n this[fcName] = function () {\n return _this.store[fcName](...arguments);\n };\n });\n const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(fcName => {\n this[fcName] = function () {\n _this.store[fcName](...arguments);\n return _this;\n };\n });\n const deferred = defer();\n const load = () => {\n const finish = (err, t) => {\n this.isInitializing = false;\n if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n this.isInitialized = true;\n if (!this.options.isClone) this.logger.log('initialized', this.options);\n this.emit('initialized', this.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (this.languages && this.options.compatibilityAPI !== 'v1' && !this.isInitialized) return finish(null, this.t.bind(this));\n this.changeLanguage(this.options.lng, finish);\n };\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n loadResources(language) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n let usedCallback = callback;\n const usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n const toLoad = [];\n const append = lng => {\n if (!lng) return;\n if (lng === 'cimode') return;\n const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(l => {\n if (l === 'cimode') return;\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(l => append(l));\n } else {\n append(usedLng);\n }\n if (this.options.preload) {\n this.options.preload.forEach(l => append(l));\n }\n this.services.backendConnector.load(toLoad, this.options.ns, e => {\n if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n reloadResources(lngs, ns, callback) {\n const deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, err => {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (let li = 0; li < this.languages.length; li++) {\n const lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n changeLanguage(lng, callback) {\n var _this2 = this;\n this.isLanguageChangingTo = lng;\n const deferred = defer();\n this.emit('languageChanging', lng);\n const setLngProps = l => {\n this.language = l;\n this.languages = this.services.languageUtils.toResolveHierarchy(l);\n this.resolvedLanguage = undefined;\n this.setResolvedLanguage(l);\n };\n const done = (err, l) => {\n if (l) {\n setLngProps(l);\n this.translator.changeLanguage(l);\n this.isLanguageChangingTo = undefined;\n this.emit('languageChanged', l);\n this.logger.log('languageChanged', l);\n } else {\n this.isLanguageChangingTo = undefined;\n }\n deferred.resolve(function () {\n return _this2.t(...arguments);\n });\n if (callback) callback(err, function () {\n return _this2.t(...arguments);\n });\n };\n const setLng = lngs => {\n if (!lng && !lngs && this.services.languageDetector) lngs = [];\n const l = typeof lngs === 'string' ? lngs : this.services.languageUtils.getBestMatchFromCodes(lngs);\n if (l) {\n if (!this.language) {\n setLngProps(l);\n }\n if (!this.translator.language) this.translator.changeLanguage(l);\n if (this.services.languageDetector && this.services.languageDetector.cacheUserLanguage) this.services.languageDetector.cacheUserLanguage(l);\n }\n this.loadResources(l, err => {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n getFixedT(lng, ns, keyPrefix) {\n var _this3 = this;\n const fixedT = function (key, opts) {\n let options;\n if (typeof opts !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n options = _this3.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = {\n ...opts\n };\n }\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n const keySeparator = _this3.options.keySeparator || '.';\n let resultKey;\n if (options.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(k => `${options.keyPrefix}${keySeparator}${k}`);\n } else {\n resultKey = options.keyPrefix ? `${options.keyPrefix}${keySeparator}${key}` : key;\n }\n return _this3.t(resultKey, options);\n };\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n t() {\n return this.translator && this.translator.translate(...arguments);\n }\n exists() {\n return this.translator && this.translator.exists(...arguments);\n }\n setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n hasLoadedNamespace(ns) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n const lng = options.lng || this.resolvedLanguage || this.languages[0];\n const fallbackLng = this.options ? this.options.fallbackLng : false;\n const lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = this.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 2;\n };\n if (options.precheck) {\n const preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n loadNamespaces(ns, callback) {\n const deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(n => {\n if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);\n });\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n loadLanguages(lngs, callback) {\n const deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n const preloaded = this.options.preload || [];\n const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0);\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n const languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());\n return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n static createInstance() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n }\n cloneInstance() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n const forkResourceStore = options.forkResourceStore;\n if (forkResourceStore) delete options.forkResourceStore;\n const mergedOptions = {\n ...this.options,\n ...options,\n ...{\n isClone: true\n }\n };\n const clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n const membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(m => {\n clone[m] = this[m];\n });\n clone.services = {\n ...this.services\n };\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n if (forkResourceStore) {\n clone.store = new ResourceStore(this.store.data, mergedOptions);\n clone.services.resourceStore = clone.store;\n }\n clone.translator = new Translator(clone.services, mergedOptions);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n clone.emit(event, ...args);\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = mergedOptions;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n}\nconst instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","const defaults = {\n loadPath: '/locales/{{lng}}/{{ns}}.json',\n addPath: '/locales/add/{{lng}}/{{ns}}',\n multiSeparator: '+',\n allowMultiLoading: false,\n fetch: typeof fetch === 'undefined' ? undefined : fetch,\n parse: JSON.parse,\n stringify: JSON.stringify,\n requestOptions: {},\n};\n\nconst arrify = (val) => (Array.isArray(val) ? val : [val]);\nconst normalize = (funcOrVal, ...args) => (typeof funcOrVal === 'function' ? funcOrVal(...args) : funcOrVal);\n\nclass BackendError extends Error {\n retry = null;\n\n constructor(message, retry = false) {\n super(message);\n\n this.retry = retry;\n }\n}\n\nexport default class Backend {\n constructor(services, options) {\n this.init(services, options);\n }\n\n type = 'backend';\n\n static type = 'backend';\n\n init(services, options = {}) {\n this.services = services;\n\n this.options = {\n ...defaults,\n ...this.options,\n ...options,\n };\n }\n\n getLoadPath(languages, namespaces) {\n return normalize(this.options.loadPath, languages, namespaces);\n }\n\n read(language, namespace, callback) {\n const loadPath = this.getLoadPath(language, namespace);\n const url = this.services.interpolator.interpolate(loadPath, { lng: language, ns: namespace });\n\n this.loadUrl(url, callback);\n }\n\n readMulti(languages, namespaces, callback) {\n const loadPath = this.getLoadPath(languages, namespaces);\n const { multiSeparator } = this.options;\n\n const url = this.services.interpolator.interpolate(loadPath, {\n lng: languages.join(multiSeparator),\n ns: namespaces.join(multiSeparator),\n });\n\n this.loadUrl(url, callback);\n }\n\n loadUrl(url, callback) {\n const { fetch, requestOptions, parse } = this.options;\n\n fetch(url, requestOptions)\n .then((response) => {\n const { ok, status } = response;\n\n if (!ok) {\n const retry = status >= 500 && status < 600; // don't retry for 4xx codes\n\n throw new BackendError(`failed loading ${url}`, retry);\n }\n\n return response.text();\n }, () => {\n throw new BackendError(`failed loading ${url}`);\n })\n .then((data) => {\n try {\n return callback(null, parse(data, url));\n } catch {\n throw new BackendError(`failed parsing ${url} to json`, false);\n }\n })\n .catch((e) => {\n if (e instanceof BackendError) {\n callback(e.message, e.retry);\n }\n });\n }\n\n create(languages, namespace, key, fallbackValue) {\n const payload = {\n [key]: fallbackValue || '',\n };\n\n arrify(languages).forEach((lng) => {\n const {\n addPath,\n requestOptions,\n fetch,\n stringify,\n } = this.options;\n\n const url = this.services.interpolator.interpolate(addPath, { lng, ns: namespace });\n\n try {\n fetch(url, {\n method: 'POST',\n body: stringify(payload),\n ...requestOptions,\n });\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n }\n });\n }\n}\n","import i18n from 'i18next'\nimport {initReactI18next} from 'react-i18next'\nimport Fetch from 'i18next-fetch-backend'\n\ni18n.use(initReactI18next)\n .use(Fetch)\n .init({\n lng: Common.Locale.currentLang,\n fallbackLng: Common.Locale.defaultLang,\n escapeValue: false,\n backend: {\n loadPath: './locale/{{lng}}.json'\n },\n interpolation: { escapeValue: false },\n react: {\n useSuspense: false,\n },\n }).then(() => {\n console.log(\"i18next is ready\");\n })\n .catch((error) => {\n console.error(\"i18next initialization error:\", error);\n });\n\ni18n.on('failedLoading', (lng, ns, msg) => {\n console.log(msg);\n});\n\nexport default i18n;","import {action, observable, makeObservable} from 'mobx';\nimport { LocalStorage } from '../../../../common/mobile/utils/LocalStorage.mjs';\n\nexport class storeAppOptions {\n constructor() {\n makeObservable(this, {\n isEdit: observable,\n canViewComments: observable,\n setConfigOptions: action,\n setPermissionOptions: action,\n\n lostEditingRights: observable,\n changeEditingRights: action,\n canBrandingExt: observable,\n canBranding: observable,\n\n isDocReady: observable,\n changeDocReady: action,\n });\n }\n\n isEdit = false;\n canViewComments = false;\n canBrandingExt = true;\n canBranding = true;\n config = {};\n\n lostEditingRights = false;\n changeEditingRights (value) {\n this.lostEditingRights = value;\n }\n\n isDocReady = false;\n changeDocReady (value) {\n this.isDocReady = value;\n }\n\n setConfigOptions (config, _t) {\n this.config = config;\n this.customization = config.customization;\n this.canRenameAnonymous = !((typeof (this.customization) == 'object') && (typeof (this.customization.anonymous) == 'object') && (this.customization.anonymous.request===false));\n this.guestName = (typeof (this.customization) == 'object') && (typeof (this.customization.anonymous) == 'object') &&\n (typeof (this.customization.anonymous.label) == 'string') && this.customization.anonymous.label.trim()!=='' ?\n Common.Utils.String.htmlEncode(this.customization.anonymous.label) : _t.textGuest;\n\n const value = this.canRenameAnonymous ? LocalStorage.getItem(\"guest-username\") : null;\n this.canRename = this.config.canRename;\n this.user = Common.Utils.fillUserInfo(config.user, config.lang, value ? (value + ' (' + this.guestName + ')' ) : _t.textAnonymous, LocalStorage.getItem(\"guest-id\") || ('uid-' + Date.now()));\n this.user.anonymous && LocalStorage.setItem(\"guest-id\", this.user.id);\n\n config.user = this.user;\n this.isDesktopApp = config.targetApp == 'desktop';\n this.canCreateNew = !!config.createUrl && !this.isDesktopApp;\n this.canOpenRecent = config.recent !== undefined && !this.isDesktopApp;\n this.templates = config.templates;\n this.recent = config.recent;\n this.createUrl = config.createUrl;\n this.lang = config.lang;\n this.location = (typeof (config.location) == 'string') ? config.location.toLowerCase() : '';\n this.sharingSettingsUrl = config.sharingSettingsUrl;\n this.fileChoiceUrl = config.fileChoiceUrl;\n this.mergeFolderUrl = config.mergeFolderUrl;\n this.canAnalytics = false;\n this.canRequestClose = config.canRequestClose;\n this.canCloseEditor = false;\n \n let canBack = false;\n\n if (typeof config.customization === 'object' && config.customization !== null) {\n const { goback, close } = config.customization;\n\n if (typeof goback === 'object' && config.canBackToFolder !== false) {\n const hasUrl = !!goback.url;\n const requestClose = goback.requestClose && this.canRequestClose;\n\n canBack = close === undefined ? hasUrl || requestClose : hasUrl && !goback.requestClose;\n\n if (goback.requestClose) {\n console.log(\"Obsolete: The 'requestClose' parameter of the 'customization.goback' section is deprecated. Please use 'close' parameter in the 'customization' section instead.\");\n }\n }\n\n if (typeof close === 'object' && close !== null) {\n this.canCloseEditor = (close.visible!==false) && this.canRequestClose && !this.isDesktopApp;\n }\n }\n \n this.canBack = this.canBackToFolder = canBack;\n this.canPlugins = false;\n\n AscCommon.UserInfoParser.setParser(true);\n AscCommon.UserInfoParser.setCurrentName(this.user.fullname);\n }\n\n setPermissionOptions (document, licType, params, permissions, isSupportEditFeature) {\n if (params.asc_getRights() !== Asc.c_oRights.Edit)\n permissions.edit = false;\n this.review = (permissions.review === undefined) ? (permissions.edit !== false) : permissions.review;\n this.canAnalytics = params.asc_getIsAnalyticsEnable();\n this.canLicense = (licType === Asc.c_oLicenseResult.Success || licType === Asc.c_oLicenseResult.SuccessLimit);\n this.isLightVersion = params.asc_getIsLight();\n this.buildVersion = params.asc_getBuildVersion();\n this.canCoAuthoring = !this.isLightVersion;\n this.isOffline = Common.EditorApi.get().asc_isOffline();\n this.isReviewOnly = (permissions.review === true) && (permissions.edit === false);\n this.canRequestEditRights = this.config.canRequestEditRights;\n this.canEdit = (permissions.edit !== false || permissions.review === true) && // can edit or review\n (this.config.canRequestEditRights || this.config.mode !== 'view') && // if mode==\"view\" -> canRequestEditRights must be defined\n (!this.isReviewOnly || this.canLicense) && // if isReviewOnly==true -> canLicense must be true\n isSupportEditFeature;\n this.isEdit = this.canLicense && this.canEdit && this.config.mode !== 'view';\n this.canReview = this.canLicense && this.isEdit && (permissions.review===true);\n this.canUseHistory = this.canLicense && this.config.canUseHistory && this.canCoAuthoring && !this.isDesktopApp && !this.isOffline;\n this.canHistoryClose = this.config.canHistoryClose;\n this.canHistoryRestore= this.config.canHistoryRestore;\n this.canUseMailMerge = this.canLicense && this.canEdit && !this.isDesktopApp;\n this.canSendEmailAddresses = this.canLicense && this.config.canSendEmailAddresses && this.canEdit && this.canCoAuthoring;\n this.canComments = this.canLicense && (permissions.comment === undefined ? this.isEdit : permissions.comment) && (this.config.mode !== 'view');\n this.canComments = this.canComments && !((typeof (this.customization) == 'object') && this.customization.comments===false);\n this.canViewComments = this.canComments || !((typeof (this.customization) == 'object') && this.customization.comments===false);\n this.canEditComments = this.isOffline || !permissions.editCommentAuthorOnly;\n this.canDeleteComments= this.isOffline || !permissions.deleteCommentAuthorOnly;\n if ((typeof (this.customization) == 'object') && this.customization.commentAuthorOnly===true) {\n console.log(\"Obsolete: The 'commentAuthorOnly' parameter of the 'customization' section is deprecated. Please use 'editCommentAuthorOnly' and 'deleteCommentAuthorOnly' parameters in the permissions instead.\");\n if (permissions.editCommentAuthorOnly===undefined && permissions.deleteCommentAuthorOnly===undefined)\n this.canEditComments = this.canDeleteComments = this.isOffline;\n }\n // this.isForm = !!window.isPDFForm;\n this.canChat = this.canLicense && !this.isOffline && (permissions.chat !== false);\n this.canEditStyles = this.canLicense && this.canEdit;\n this.canPrint = (permissions.print !== false);\n this.isRestrictedEdit = !this.isEdit && this.canComments && isSupportEditFeature;\n this.trialMode = params.asc_getLicenseMode();\n\n const type = /^(?:(pdf|djvu|xps|oxps))$/.exec(document.fileType);\n this.canDownloadOrigin = permissions.download !== false && (type && typeof type[1] === 'string');\n this.canDownload = permissions.download !== false && (!type || typeof type[1] !== 'string');\n\n this.canBranding = params.asc_getCustomization();\n this.canBrandingExt = params.asc_getCanBranding() && (typeof this.customization == 'object');\n\n this.canUseReviewPermissions = this.canLicense && (!!permissions.reviewGroups || this.customization \n && this.customization.reviewPermissions && (typeof (this.customization.reviewPermissions) == 'object'));\n this.canUseCommentPermissions = this.canLicense && !!permissions.commentGroups;\n this.canUseUserInfoPermissions = this.canLicense && !!permissions.userInfoGroups;\n this.canUseReviewPermissions && AscCommon.UserInfoParser.setReviewPermissions(permissions.reviewGroups, this.customization.reviewPermissions);\n this.canUseCommentPermissions && AscCommon.UserInfoParser.setCommentPermissions(permissions.commentGroups);\n this.canUseUserInfoPermissions && AscCommon.UserInfoParser.setUserInfoPermissions(permissions.userInfoGroups);\n\n this.canLiveView = !!params.asc_getLiveViewerSupport() && (this.config.mode === 'view') && isSupportEditFeature;\n this.isAnonymousSupport = !!Common.EditorApi.get().asc_isAnonymousSupport();\n }\n}","import {action, observable, computed, makeObservable} from 'mobx';\n\nexport class storeFocusObjects {\n constructor() {\n makeObservable(this, {\n _focusObjects: observable,\n resetFocusObjects: action,\n settings: computed,\n slideObject: computed,\n paragraphObject: computed,\n paragraphLocked: computed,\n shapeObject: computed,\n imageObject: computed,\n tableObject: computed,\n isTableInStack: computed,\n chartObject: computed,\n linkObject: computed,\n isEditLocked: computed\n });\n }\n\n _focusObjects = [];\n\n resetFocusObjects(objects) {\n this._focusObjects = objects;\n }\n\n get settings() {\n return !!this.intf ? this.intf.filterFocusObjects() : null;\n }\n\n get slideObject() {\n return !!this.intf ? this.intf.getSlideObject() : null;\n }\n\n get paragraphObject() {\n return !!this.intf ? this.intf.getParagraphObject() : null;\n }\n\n get paragraphLocked() {\n let _paragraphLocked = false;\n for (let object of this._focusObjects) {\n if (Asc.c_oAscTypeSelectElement.Paragraph == object.get_ObjectType()) {\n _paragraphLocked = object.get_ObjectValue().get_Locked();\n }\n }\n return _paragraphLocked;\n }\n\n get shapeObject() {\n return !!this.intf ? this.intf.getShapeObject() : null;\n }\n\n get imageObject() {\n return !!this.intf ? this.intf.getImageObject() : null;\n }\n\n get tableObject() {\n return !!this.intf ? this.intf.getTableObject() : null;\n }\n\n get isTableInStack() {\n for (let object of this._focusObjects) {\n if (object.get_ObjectType() == Asc.c_oAscTypeSelectElement.Table) {\n return true;\n }\n }\n return false;\n }\n\n get chartObject() {\n return !!this.intf ? this.intf.getChartObject() : null;\n }\n\n get linkObject() {\n return !!this.intf ? this.intf.getLinkObject() : null;\n }\n\n get isEditLocked() {\n if (this._focusObjects.length > 0) {\n let slide_deleted = false,\n slide_lock = false,\n no_object = true,\n objectLocked = false;\n this._focusObjects.forEach((object) => {\n const type = object.get_ObjectType();\n const objectValue = object.get_ObjectValue();\n if (type === Asc.c_oAscTypeSelectElement.Slide) {\n slide_deleted = objectValue.get_LockDelete();\n slide_lock = objectValue.get_LockLayout() || objectValue.get_LockBackground() || objectValue.get_LockTransition() || objectValue.get_LockTiming();\n } else if (objectValue && typeof objectValue.get_Locked === 'function') {\n no_object = false;\n objectLocked = objectLocked || objectValue.get_Locked();\n }\n });\n\n return (slide_deleted || (objectLocked || no_object) && slide_lock);\n }\n }\n}","\nimport {makeObservable, observable, action, computed} from 'mobx';\n\nexport class storeUsers {\n constructor() {\n makeObservable(this, {\n users: observable,\n reset: action,\n addUser: action,\n currentUser: observable,\n setCurrentUser: action,\n connection: action,\n isDisconnected: observable,\n resetDisconnected: action,\n hasEditUsers: computed,\n editUsers: computed\n })\n }\n\n users = [];\n currentUser;\n isDisconnected = false;\n\n reset (users) {\n this.users = Object.values(users)\n }\n\n addUser (user) {\n this.users.push(user);\n }\n\n setCurrentUser (id) {\n this.users.forEach((item) => {\n if (item.asc_getIdOriginal() === id) {\n this.currentUser = item;\n }\n });\n return this.currentUser;\n }\n\n connection (change) {\n let changed = false;\n for (let uid in this.users) {\n if (undefined !== uid) {\n const user = this.users[uid];\n if (user && user.asc_getId() === change.asc_getId()) {\n this.users[uid] = change;\n changed = true;\n }\n }\n }\n !changed && change && (this.users.push(change));\n }\n\n resetDisconnected (isDisconnected) {\n this.isDisconnected = isDisconnected;\n }\n\n getInitials (name) {\n const fio = name.split(' ');\n let initials = fio[0].substring(0, 1).toUpperCase();\n for (let i = fio.length-1; i>0; i--) {\n if (fio[i][0]!=='(' && fio[i][0]!==')') {\n initials += fio[i].substring(0, 1).toUpperCase();\n break;\n }\n }\n return initials;\n }\n\n searchUserById (id) {\n let user = null;\n this.users.forEach((item) => {\n if (item.asc_getIdOriginal() === id) {\n user = item;\n }\n });\n return user;\n }\n\n searchUserByCurrentId (id) {\n let user = null;\n this.users.forEach((item) => {\n if (item.asc_getId() === id) {\n user = item;\n }\n });\n return user;\n }\n\n get hasEditUsers () {\n let length = 0;\n this.users.forEach((item) => {\n if ((item.asc_getState()!==false) && !item.asc_getView()) {\n length++;\n }\n });\n return (length >= 1);\n }\n\n get editUsers () {\n const idArray = [];\n const usersArray = [];\n const curUserId = this.currentUser.asc_getIdOriginal();\n this.users.forEach((item) => {\n const name = AscCommon.UserInfoParser.getParsedName(item.asc_getUserName());\n if((item.asc_getState() !== false) && !item.asc_getView()) {\n const idOriginal = item.asc_getIdOriginal();\n const ind = idArray.indexOf(idOriginal);\n if (ind !== -1) {\n usersArray[ind].count = usersArray[ind].count + 1;\n } else {\n const userAttr = {\n color: item.asc_getColor(),\n id: item.asc_getId(),\n idOriginal: item.asc_getIdOriginal(),\n name: name,\n view: item.asc_getView(),\n initials: this.getInitials(name),\n count: 1\n };\n if(idOriginal === curUserId) {\n usersArray.unshift(userAttr);\n idArray.unshift(idOriginal);\n } else {\n usersArray.push(userAttr);\n idArray.push(idOriginal);\n }\n }\n }\n });\n return usersArray;\n }\n}\n","import {action, observable, makeObservable} from 'mobx';\r\nimport { LocalStorage } from '../../../../common/mobile/utils/LocalStorage.mjs';\r\n\r\nexport class storeApplicationSettings {\r\n constructor() {\r\n makeObservable(this, {\r\n unitMeasurement: observable,\r\n isSpellChecking: observable,\r\n macrosMode: observable,\r\n macrosRequest: observable,\r\n changeUnitMeasurement: action,\r\n changeSpellCheck: action,\r\n changeMacrosSettings: action,\r\n changeMacrosRequest: action,\r\n directionMode: observable,\r\n changeDirectionMode: action\r\n });\r\n }\r\n\r\n unitMeasurement = 1;\r\n isSpellChecking = true;\r\n macrosMode = 0;\r\n macrosRequest = 0;\r\n directionMode = LocalStorage.getItem('mode-direction') || 'ltr';\r\n\r\n changeDirectionMode(value) {\r\n this.directionMode = value;\r\n }\r\n \r\n changeUnitMeasurement(value) {\r\n this.unitMeasurement = +value;\r\n }\r\n\r\n changeSpellCheck(value) {\r\n this.isSpellChecking = value;\r\n }\r\n\r\n changeMacrosSettings(value) {\r\n this.macrosMode = +value;\r\n }\r\n\r\n changeMacrosRequest(value) {\r\n this.macrosRequest = value;\r\n }\r\n}","import { action, observable, makeObservable } from \"mobx\";\r\n\r\nexport class storePresentationInfo {\r\n constructor() {\r\n makeObservable(this, {\r\n dataDoc: observable,\r\n setDataDoc: action,\r\n changeTitle: action\r\n });\r\n }\r\n\r\n dataDoc;\r\n\r\n setDataDoc(obj) {\r\n this.dataDoc = obj;\r\n }\r\n\r\n changeTitle(title) {\r\n this.dataDoc.title = title;\r\n }\r\n}","import {action, observable, makeObservable} from 'mobx';\r\n\r\nexport class storePresentationSettings {\r\n constructor() {\r\n makeObservable(this, {\r\n slideSizes: observable,\r\n currentPageSize: observable,\r\n slideSizeIndex: observable,\r\n allSchemes: observable,\r\n changeSizeIndex: action,\r\n addSchemes: action,\r\n initSlideSizes: action\r\n })\r\n }\r\n\r\n slideSizes = [];\r\n currentPageSize;\r\n slideSizeIndex;\r\n\r\n changeSizeIndex(width, height) {\r\n this.currentPageSize = {width, height};\r\n let ratio = height / width;\r\n\r\n this.slideSizes.forEach((array, index) => {\r\n if(Math.abs(array[1] / array[0] - ratio) < 0.001) {\r\n this.slideSizeIndex = index;\r\n }\r\n });\r\n }\r\n\r\n initSlideSizes(value) {\r\n this.slideSizes = value;\r\n }\r\n\r\n // Color Schemes\r\n\r\n allSchemes;\r\n\r\n addSchemes(arr) {\r\n this.allSchemes = arr;\r\n }\r\n\r\n}","import {action, observable, makeObservable} from 'mobx';\r\n\r\nexport class storePalette {\r\n constructor() {\r\n makeObservable(this, {\r\n customColors: observable,\r\n changeCustomColors: action\r\n });\r\n }\r\n\r\n customColors = [];\r\n\r\n changeCustomColors (colors) {\r\n this.customColors = colors;\r\n }\r\n}","import {action, observable, computed, makeObservable} from 'mobx';\r\n\r\nexport class storeSlideSettings {\r\n constructor() {\r\n makeObservable(this, {\r\n arrayLayouts: observable,\r\n slideLayoutIndex: observable,\r\n fillColor: observable,\r\n arrayThemes: observable,\r\n slideThemeIndex: observable,\r\n getFillColor: action,\r\n changeFillColor: action,\r\n addArrayLayouts: action,\r\n slideLayouts: computed,\r\n changeSlideLayoutIndex: action,\r\n addArrayThemes: action,\r\n changeSlideThemeIndex: action,\r\n });\r\n }\r\n\r\n arrayLayouts;\r\n slideLayoutIndex = -1;\r\n fillColor = undefined;\r\n arrayThemes;\r\n slideThemeIndex;\r\n \r\n getFillColor (slideObject) {\r\n let color = 'transparent';\r\n let fill = slideObject.get_background(),\r\n fillType = fill.get_type();\r\n let sdkColor;\r\n\r\n if (fillType == Asc.c_oAscFill.FILL_TYPE_SOLID) {\r\n fill = fill.get_fill();\r\n sdkColor = fill.get_color();\r\n\r\n if (sdkColor) {\r\n if (sdkColor.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) {\r\n color = {color: Common.Utils.ThemeColor.getHexColor(sdkColor.get_r(), sdkColor.get_g(), sdkColor.get_b()), effectValue: sdkColor.get_value()};\r\n } else {\r\n color = Common.Utils.ThemeColor.getHexColor(sdkColor.get_r(), sdkColor.get_g(), sdkColor.get_b());\r\n }\r\n }\r\n }\r\n\r\n this.fillColor = color;\r\n return color;\r\n }\r\n\r\n changeFillColor (color) {\r\n this.fillColor = color;\r\n }\r\n\r\n addArrayLayouts(array) {\r\n this.arrayLayouts = array;\r\n }\r\n\r\n get slideLayouts () {\r\n const layouts = [];\r\n const columns = 2;\r\n let row = -1;\r\n this.arrayLayouts.forEach((item, index)=>{\r\n if (0 == index % columns) {\r\n layouts.push([]);\r\n row++\r\n }\r\n layouts[row].push({\r\n type: item.getIndex(),\r\n image: item.get_Image(),\r\n width: item.get_Width(),\r\n height: item.get_Height()\r\n });\r\n });\r\n return layouts;\r\n }\r\n\r\n changeSlideLayoutIndex(index) {\r\n this.slideLayoutIndex = index;\r\n }\r\n\r\n addArrayThemes(array) {\r\n this.arrayThemes = array;\r\n }\r\n\r\n changeSlideThemeIndex(index) {\r\n this.slideThemeIndex = index;\r\n }\r\n}","\nclass CThumbnailLoader {\n constructor() {\n this.image = null;\n this.binaryFormat = null;\n this.data = null;\n this.width = 0;\n this.heightOne = 0;\n this.offsets = null;\n }\n\n load(url, callback) {\n if (!callback)\n return;\n\n let xhr = new XMLHttpRequest();\n xhr.open('GET', url + \".bin\", true);\n xhr.responseType = 'arraybuffer';\n\n if (xhr.overrideMimeType)\n xhr.overrideMimeType('text/plain; charset=x-user-defined');\n else xhr.setRequestHeader('Accept-Charset', 'x-user-defined');\n\n xhr.onload = e => {\n // TODO: check errors\n this.binaryFormat = new Uint8Array(e.target.response);\n callback();\n };\n\n xhr.send(null);\n }\n\n openBinary(arrayBuffer) {\n //var t1 = performance.now();\n\n const binaryAlpha = this.binaryFormat;\n this.width = (binaryAlpha[0] << 24) | (binaryAlpha[1] << 16) | (binaryAlpha[2] << 8) | (binaryAlpha[3] << 0);\n this.heightOne = (binaryAlpha[4] << 24) | (binaryAlpha[5] << 16) | (binaryAlpha[6] << 8) | (binaryAlpha[7] << 0);\n const count = (binaryAlpha[8] << 24) | (binaryAlpha[9] << 16) | (binaryAlpha[10] << 8) | (binaryAlpha[11] << 0);\n const height = count * this.heightOne;\n\n const MAX_MEMORY_SIZE = 100000000;\n const memorySize = 4 * this.width * height;\n const isOffsets = memorySize > MAX_MEMORY_SIZE;\n\n if (!isOffsets)\n this.data = new Uint8ClampedArray(memorySize);\n else this.offsets = new Array(count);\n\n var binaryIndex = 12;\n var binaryLen = binaryAlpha.length;\n var index = 0;\n\n var len0 = 0;\n var tmpValue = 0;\n\n if (!isOffsets) {\n var imagePixels = this.data;\n while (binaryIndex < binaryLen) {\n tmpValue = binaryAlpha[binaryIndex++];\n if (0 == tmpValue) {\n len0 = binaryAlpha[binaryIndex++];\n while (len0 > 0) {\n len0--;\n imagePixels[index] = imagePixels[index + 1] = imagePixels[index + 2] = 255;\n imagePixels[index + 3] = 0; // this value is already 0.\n index += 4;\n }\n } else {\n imagePixels[index] = imagePixels[index + 1] = imagePixels[index + 2] = 255 - tmpValue;\n imagePixels[index + 3] = tmpValue;\n index += 4;\n }\n }\n } else {\n var module = this.width * this.heightOne;\n var moduleCur = module - 1;\n while (binaryIndex < binaryLen) {\n tmpValue = binaryAlpha[binaryIndex++];\n if (0 == tmpValue) {\n len0 = binaryAlpha[binaryIndex++];\n while (len0 > 0) {\n len0--;\n moduleCur++;\n if (moduleCur === module) {\n this.offsets[index++] = { pos : binaryIndex, len : len0 + 1 };\n moduleCur = 0;\n }\n }\n } else {\n moduleCur++;\n if (moduleCur === module) {\n this.offsets[index++] = { pos : binaryIndex - 1, len : -1 };\n moduleCur = 0;\n }\n }\n }\n }\n\n if ( !this.offsets )\n delete this.binaryFormat;\n\n //var t2 = performance.now();\n //console.log(t2 - t1);\n };\n\n getImage = function(index, canvas, ctx) {\n if (!canvas) {\n canvas = document.createElement(\"canvas\");\n canvas.width = this.width;\n canvas.height = this.heightOne;\n canvas.style.width = iconWidth + \"px\";\n canvas.style.height = iconHeight + \"px\";\n\n ctx = canvas.getContext(\"2d\");\n }\n\n if (!this.data && !this.offsets) {\n this.openBinary(this.binaryFormat);\n }\n\n let dataTmp = ctx.createImageData(this.width, this.heightOne);\n const sizeImage = 4 * this.width * this.heightOne;\n\n if (!this.offsets) {\n dataTmp.data.set(new Uint8ClampedArray(this.data.buffer, index * sizeImage, sizeImage));\n } else {\n const binaryAlpha = this.binaryFormat;\n var binaryIndex = this.offsets[index].pos;\n var alphaChannel = 0;\n var pixelsCount = this.width * this.heightOne;\n var tmpValue = 0, len0 = 0;\n let imagePixels = dataTmp.data;\n if (-1 != this.offsets[index].len) {\n /*\n // this values is already 0.\n for (var i = 0; i < this.offsets[index].len; i++) {\n pixels[alphaChannel] = 0;\n alphaChannel += 4;\n }\n */\n alphaChannel += 4 * this.offsets[index].len;\n }\n while (pixelsCount > 0) {\n tmpValue = binaryAlpha[binaryIndex++];\n if (0 == tmpValue) {\n len0 = binaryAlpha[binaryIndex++];\n if (len0 > pixelsCount)\n len0 = pixelsCount;\n while (len0 > 0) {\n len0--;\n imagePixels[alphaChannel] = imagePixels[alphaChannel + 1] = imagePixels[alphaChannel + 2] = 255;\n imagePixels[alphaChannel + 3] = 0; // this value is already 0.\n alphaChannel += 4;\n pixelsCount--;\n }\n } else {\n imagePixels[alphaChannel] = imagePixels[alphaChannel + 1] = imagePixels[alphaChannel + 2] = 255 - tmpValue;\n imagePixels[alphaChannel + 3] = tmpValue;\n alphaChannel += 4;\n pixelsCount--;\n }\n }\n }\n ctx.putImageData(dataTmp, 0, 0);\n\n //var t2 = performance.now();\n //console.log(t2 - t1);\n\n return canvas;\n };\n};\n\nexport default CThumbnailLoader;","import {action, observable, computed, makeObservable} from 'mobx';\r\nimport CThumbnailLoader from '../../../../common/mobile/utils/CThumbnailLoader';\r\n\r\nexport class storeTextSettings {\r\n constructor() {\r\n makeObservable(this, {\r\n fontsArray: observable,\r\n fontName: observable,\r\n arrayRecentFonts:observable,\r\n fontSize: observable,\r\n isBold: observable,\r\n isItalic: observable,\r\n isUnderline: observable,\r\n isStrikethrough: observable,\r\n typeBaseline: observable,\r\n listType: observable,\r\n typeBullets: observable,\r\n typeNumbers: observable,\r\n paragraphAlign: observable,\r\n paragraphValign: observable,\r\n canIncreaseIndent: observable,\r\n canDecreaseIndent: observable,\r\n textColor: observable,\r\n customTextColors: observable,\r\n lineSpacing: observable,\r\n initEditorFonts: action,\r\n resetFontName: action,\r\n resetFontsRecent:action,\r\n resetFontSize: action,\r\n resetIsBold: action,\r\n resetIsItalic: action,\r\n resetIsUnderline: action,\r\n resetIsStrikeout: action,\r\n resetIncreaseIndent: action,\r\n resetDecreaseIndent: action,\r\n resetTypeBaseline: action,\r\n isSuperscript: computed,\r\n isSubscript: computed,\r\n resetListType: action,\r\n resetBullets: action,\r\n resetNumbers: action,\r\n resetParagraphAlign: action,\r\n resetParagraphValign: action,\r\n resetTextColor: action,\r\n changeCustomTextColors: action,\r\n resetLineSpacing: action,\r\n iconWidth: observable,\r\n iconHeight: observable,\r\n thumbCanvas: observable,\r\n thumbContext: observable,\r\n thumbs: observable,\r\n thumbIdx: observable,\r\n listItemHeight: observable,\r\n spriteCols: observable,\r\n loadSprite: action,\r\n addFontToRecent:action,\r\n highlightColor: observable,\r\n resetHighlightColor: action\r\n });\r\n }\r\n\r\n iconWidth;\r\n iconHeight;\r\n thumbCanvas;\r\n thumbContext;\r\n thumbs;\r\n thumbIdx = 0;\r\n listItemHeight = 28;\r\n spriteCols = 1;\r\n fontsArray = [];\r\n arrayRecentFonts = [];\r\n fontName = '';\r\n fontSize = undefined;\r\n isBold = false;\r\n isItalic = false;\r\n isUnderline = false;\r\n isStrikethrough = false;\r\n typeBaseline = undefined;\r\n listType = undefined;\r\n typeBullets = undefined;\r\n typeNumbers = undefined;\r\n paragraphAlign = undefined;\r\n paragraphValign = undefined;\r\n canIncreaseIndent = undefined;\r\n canDecreaseIndent = undefined;\r\n textColor = undefined;\r\n highlightColor = undefined;\r\n customTextColors = [];\r\n lineSpacing = undefined;\r\n\r\n initEditorFonts (fonts, select) {\r\n let array = [];\r\n for (let font of fonts) {\r\n let fontId = font.asc_getFontId();\r\n array.push({\r\n id : fontId,\r\n name : font.asc_getFontName(),\r\n //displayValue: font.asc_getFontName(),\r\n imgidx : font.asc_getFontThumbnail(),\r\n type : font.asc_getFontType()\r\n });\r\n }\r\n this.fontsArray = array;\r\n this.iconWidth = 300;\r\n this.iconHeight = Asc.FONT_THUMBNAIL_HEIGHT || 28;\r\n this.thumbCanvas = document.createElement('canvas');\r\n this.thumbContext = this.thumbCanvas.getContext('2d');\r\n this.thumbs = [\r\n {ratio: 1, path: '../../../../../sdkjs/common/Images/fonts_thumbnail.png', width: this.iconWidth, height: this.iconHeight},\r\n {ratio: 1.25, path: '../../../../../sdkjs/common/Images/fonts_thumbnail@1.25x.png', width: this.iconWidth * 1.25, height: this.iconHeight * 1.25},\r\n {ratio: 1.5, path: '../../../../../sdkjs/common/Images/fonts_thumbnail@1.5x.png', width: this.iconWidth * 1.5, height: this.iconHeight * 1.5},\r\n {ratio: 1.75, path: '../../../../../sdkjs/common/Images/fonts_thumbnail@1.75x.png', width: this.iconWidth * 1.75, height: this.iconHeight * 1.75},\r\n {ratio: 2, path: '../../../../../sdkjs/common/Images/fonts_thumbnail@2x.png', width: this.iconWidth * 2, height: this.iconHeight * 2}\r\n ];\r\n\r\n const applicationPixelRatio = Common.Utils.applicationPixelRatio();\r\n\r\n let bestDistance = Math.abs(applicationPixelRatio - this.thumbs[0].ratio);\r\n let currentDistance = 0;\r\n\r\n for (let i = 1; i < this.thumbs.length; i++) {\r\n currentDistance = Math.abs(applicationPixelRatio - this.thumbs[i].ratio);\r\n if (currentDistance < (bestDistance - 0.0001))\r\n {\r\n bestDistance = currentDistance;\r\n this.thumbIdx = i;\r\n }\r\n }\r\n\r\n this.thumbCanvas.height = this.thumbs[this.thumbIdx].height;\r\n this.thumbCanvas.width = this.thumbs[this.thumbIdx].width;\r\n\r\n this.loadSprite();\r\n }\r\n\r\n loadSprite() {\r\n this.spriteThumbs = new CThumbnailLoader();\r\n this.spriteThumbs.load(this.thumbs[this.thumbIdx].path, () => {\r\n this.spriteCols = Math.floor(this.spriteThumbs.width / (this.thumbs[this.thumbIdx].width)) || 1;\r\n\r\n if (!this.spriteThumbs.data && !this.spriteThumbs.offsets) {\r\n this.spriteThumbs.openBinary(this.spriteThumbs.binaryFormat);\r\n }\r\n });\r\n }\r\n\r\n resetFontName (font) {\r\n let name = (typeof font.get_Name) === \"function\" ? font.get_Name() : font.asc_getName();\r\n this.fontName = name;\r\n }\r\n\r\n resetFontsRecent(fonts) {\r\n this.arrayRecentFonts = fonts;\r\n this.arrayRecentFonts = this.arrayRecentFonts ? JSON.parse(this.arrayRecentFonts) : [];\r\n }\r\n\r\n resetFontSize (size) {\r\n this.fontSize = size;\r\n }\r\n\r\n resetIsBold (isBold) {\r\n this.isBold = isBold;\r\n }\r\n\r\n resetIsItalic (isItalic) {\r\n this.isItalic = isItalic;\r\n }\r\n\r\n resetIsUnderline (isUnderline) {\r\n this.isUnderline = isUnderline;\r\n }\r\n\r\n resetIsStrikeout (isStrikethrough) {\r\n this.isStrikethrough = isStrikethrough;\r\n }\r\n\r\n // Indent \r\n\r\n resetIncreaseIndent(value) {\r\n this.canIncreaseIndent = value;\r\n }\r\n\r\n resetDecreaseIndent(value) {\r\n this.canDecreaseIndent = value;\r\n }\r\n\r\n // vertical align\r\n\r\n resetTypeBaseline (typeBaseline) {\r\n this.typeBaseline = typeBaseline;\r\n }\r\n\r\n get isSuperscript() {\r\n return (this.typeBaseline === Asc.vertalign_SuperScript);\r\n }\r\n\r\n get isSubscript() {\r\n return (this.typeBaseline === Asc.vertalign_SubScript);\r\n }\r\n\r\n // bullets\r\n\r\n resetListType (type) {\r\n this.listType = type;\r\n }\r\n\r\n resetBullets (type) {\r\n this.typeBullets = type;\r\n }\r\n\r\n resetNumbers (type) {\r\n this.typeNumbers = type;\r\n }\r\n\r\n resetParagraphAlign (align) {\r\n let value;\r\n switch (align) {\r\n case 0:\r\n value = 'right';\r\n break;\r\n case 1:\r\n value = 'left';\r\n break;\r\n case 2:\r\n value = 'center';\r\n break;\r\n case 3:\r\n value = 'just';\r\n break;\r\n }\r\n this.paragraphAlign = value;\r\n }\r\n\r\n resetParagraphValign (align) {\r\n let value;\r\n switch (align) {\r\n case 0:\r\n value = 'bottom';\r\n break;\r\n case 4:\r\n value = 'top';\r\n break;\r\n case 1:\r\n value = 'center';\r\n break;\r\n }\r\n this.paragraphValign = value;\r\n }\r\n\r\n resetTextColor (color) {\r\n let value;\r\n if (color) {\r\n if (color.get_auto()) {\r\n value = 'auto';\r\n } else {\r\n if (color.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) {\r\n value = {\r\n color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()),\r\n effectValue: color.get_value()\r\n }\r\n } else {\r\n value = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b());\r\n }\r\n }\r\n }\r\n this.textColor = value;\r\n }\r\n\r\n changeCustomTextColors (colors) {\r\n this.customTextColors = colors;\r\n }\r\n\r\n addFontToRecent (font) {\r\n this.arrayRecentFonts.forEach(item => {\r\n if (item.name === font.name) this.arrayRecentFonts.splice(this.arrayRecentFonts.indexOf(item),1);\r\n })\r\n this.arrayRecentFonts.unshift(font);\r\n\r\n if (this.arrayRecentFonts.length > 5) this.arrayRecentFonts.splice(4,1);\r\n }\r\n\r\n resetLineSpacing (vc) {\r\n let line = (vc.get_Line() === null || vc.get_LineRule() === null || vc.get_LineRule() != 1) ? -1 : vc.get_Line();\r\n this.lineSpacing = line;\r\n }\r\n\r\n resetHighlightColor(color) {\r\n if (color == -1) {\r\n this.highlightColor = 'transparent'; \r\n } else {\r\n this.highlightColor = color.get_hex();\r\n }\r\n \r\n }\r\n}","import {action, observable, computed, makeObservable} from 'mobx';\r\n\r\nexport class storeShapeSettings {\r\n constructor() {\r\n makeObservable(this, {\r\n fillColor: observable,\r\n borderColorView: observable,\r\n setFillColor: action,\r\n getFillColor: action,\r\n setBorderColor: action,\r\n initBorderColorView: action\r\n });\r\n }\r\n\r\n getStyleGroups () {\r\n const styles = [\r\n {\r\n title: 'Text',\r\n thumb: 'shape-01.svg',\r\n type: 'textRect'\r\n },\r\n {\r\n title: 'Line',\r\n thumb: 'shape-02.svg',\r\n type: 'line'\r\n },\r\n {\r\n title: 'Line with arrow',\r\n thumb: 'shape-03.svg',\r\n type: 'lineWithArrow'\r\n },\r\n {\r\n title: 'Line with two arrows',\r\n thumb: 'shape-04.svg',\r\n type: 'lineWithTwoArrows'\r\n },\r\n {\r\n title: 'Rect',\r\n thumb: 'shape-05.svg',\r\n type: 'rect'\r\n },\r\n {\r\n title: 'Hexagon',\r\n thumb: 'shape-06.svg',\r\n type: 'hexagon'\r\n },\r\n {\r\n title: 'Round rect',\r\n thumb: 'shape-07.svg',\r\n type: 'roundRect'\r\n },\r\n {\r\n title: 'Ellipse',\r\n thumb: 'shape-08.svg',\r\n type: 'ellipse'\r\n },\r\n {\r\n title: 'Triangle',\r\n thumb: 'shape-09.svg',\r\n type: 'triangle'\r\n },\r\n {\r\n title: 'Triangle',\r\n thumb: 'shape-10.svg',\r\n type: 'rtTriangle'\r\n },\r\n {\r\n title: 'Trapezoid',\r\n thumb: 'shape-11.svg',\r\n type: 'trapezoid'\r\n },\r\n {\r\n title: 'Diamond',\r\n thumb: 'shape-12.svg',\r\n type: 'diamond'\r\n },\r\n {\r\n title: 'Right arrow',\r\n thumb: 'shape-13.svg',\r\n type: 'rightArrow'\r\n },\r\n {\r\n title: 'Left-right arrow',\r\n thumb: 'shape-14.svg',\r\n type: 'leftRightArrow'\r\n },\r\n {\r\n title: 'Left arrow callout',\r\n thumb: 'shape-15.svg',\r\n type: 'leftArrow'\r\n },\r\n {\r\n title: 'Right arrow callout',\r\n thumb: 'shape-16.svg',\r\n type: 'bentUpArrow'\r\n },\r\n {\r\n title: 'Flow chart off page connector',\r\n thumb: 'shape-17.svg',\r\n type: 'flowChartOffpageConnector'\r\n },\r\n {\r\n title: 'Heart',\r\n thumb: 'shape-18.svg',\r\n type: 'heart'\r\n },\r\n {\r\n title: 'Math minus',\r\n thumb: 'shape-19.svg',\r\n type: 'mathMinus'\r\n },\r\n {\r\n title: 'Math plus',\r\n thumb: 'shape-20.svg',\r\n type: 'mathPlus'\r\n },\r\n {\r\n title: 'Parallelogram',\r\n thumb: 'shape-21.svg',\r\n type: 'parallelogram'\r\n },\r\n {\r\n title: 'Wedge rect callout',\r\n thumb: 'shape-22.svg',\r\n type: 'wedgeRectCallout'\r\n },\r\n {\r\n title: 'Wedge ellipse callout',\r\n thumb: 'shape-23.svg',\r\n type: 'wedgeEllipseCallout'\r\n },\r\n {\r\n title: 'Cloud callout',\r\n thumb: 'shape-24.svg',\r\n type: 'cloudCallout'\r\n }\r\n ];\r\n const groups = [];\r\n let i = 0;\r\n for (let row=0; row _sizes.length - 1) return _sizes[_sizes.length - 1];\r\n return _sizes[index];\r\n },\r\n\r\n indexSizeByValue: function (value) {\r\n let index = 0;\r\n _sizes.forEach((size, idx) => {\r\n if (Math.abs(size - value) < 0.25) {\r\n index = idx;\r\n }\r\n });\r\n return index;\r\n },\r\n\r\n sizeByValue: function (value) {\r\n return _sizes[this.indexSizeByValue(value)];\r\n }\r\n }\r\n }\r\n\r\n}","import {action, observable, computed, makeObservable} from 'mobx';\r\nimport {f7} from 'framework7-react';\r\n\r\nexport class storeTableSettings {\r\n constructor() {\r\n makeObservable(this, {\r\n cellBorders: observable,\r\n cellBorderWidth: observable,\r\n cellBorderColor: observable,\r\n arrayStyles: observable,\r\n initTableTemplates: action,\r\n setStyles: action,\r\n updateCellBorderWidth: action,\r\n updateCellBorderColor: action,\r\n setAutoColor: action,\r\n colorAuto: observable,\r\n arrayStylesDefault: observable,\r\n });\r\n }\r\n\r\n arrayStyles = [];\r\n arrayStylesDefault = [];\r\n colorAuto = 'auto';\r\n\r\n setAutoColor(value) {\r\n this.colorAuto = value;\r\n }\r\n\r\n initTableTemplates () {\r\n this.arrayStyles = [];\r\n }\r\n\r\n setStyles (arrStyles, typeStyles) {\r\n let styles = [];\r\n for (let template of arrStyles) {\r\n styles.push({\r\n imageUrl : template.asc_getImage(),\r\n templateId : template.asc_getId()\r\n });\r\n }\r\n\r\n if(typeStyles === 'default') {\r\n return this.arrayStylesDefault = styles;\r\n } \r\n return this.arrayStyles = styles;\r\n }\r\n\r\n getTableLook (tableObject) {\r\n return tableObject.get_TableLook()\r\n }\r\n\r\n getCellMargins (tableObject) {\r\n const margins = tableObject.get_CellMargins();\r\n return margins.get_Left();\r\n }\r\n\r\n // Fill color\r\n\r\n getFillColor (tableObject) {\r\n const background = tableObject.get_CellsBackground();\r\n let fillColor = 'transparent';\r\n if (background) {\r\n if (background.get_Value() == 0) {\r\n const color = background.get_Color();\r\n if (color) {\r\n if (color.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) {\r\n fillColor = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value()};\r\n } else {\r\n fillColor = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b());\r\n }\r\n }\r\n }\r\n }\r\n\r\n return fillColor;\r\n }\r\n\r\n // Border style\r\n\r\n cellBorders;\r\n cellBorderWidth = 0.5;\r\n cellBorderColor = '000000';\r\n\r\n borderSizeTransform () {\r\n const _sizes = [0, 0.5, 1, 1.5, 2.25, 3, 4.5, 6];\r\n\r\n return {\r\n sizeByIndex: function (index) {\r\n if (index < 1) return _sizes[0];\r\n if (index > _sizes.length - 1) return _sizes[_sizes.length - 1];\r\n return _sizes[index];\r\n },\r\n\r\n indexSizeByValue: function (value) {\r\n let index = 0;\r\n _sizes.forEach((size, idx) => {\r\n if (Math.abs(size - value) < 0.25) {\r\n index = idx;\r\n }\r\n });\r\n return index;\r\n },\r\n\r\n sizeByValue: function (value) {\r\n return _sizes[this.indexSizeByValue(value)];\r\n }\r\n }\r\n }\r\n\r\n updateCellBorderWidth (value) {\r\n this.cellBorderWidth = value;\r\n }\r\n\r\n updateCellBorderColor (value) {\r\n this.cellBorderColor = value;\r\n }\r\n\r\n updateBordersStyle (border) {\r\n this.cellBorders = new Asc.CBorders();\r\n const visible = (border != '');\r\n\r\n if (border.indexOf('l') > -1 || !visible) {\r\n if (this.cellBorders.get_Left()===null || this.cellBorders.get_Left()===undefined)\r\n this.cellBorders.put_Left(new Asc.asc_CTextBorder());\r\n this.updateBorderStyle (this.cellBorders.get_Left(), visible);\r\n }\r\n if (border.indexOf('t') > -1 || !visible) {\r\n if (this.cellBorders.get_Top()===null || this.cellBorders.get_Top()===undefined)\r\n this.cellBorders.put_Top(new Asc.asc_CTextBorder());\r\n this.updateBorderStyle (this.cellBorders.get_Top(), visible);\r\n }\r\n if (border.indexOf('r') > -1 || !visible) {\r\n if (this.cellBorders.get_Right()===null || this.cellBorders.get_Right()===undefined)\r\n this.cellBorders.put_Right(new Asc.asc_CTextBorder());\r\n this.updateBorderStyle (this.cellBorders.get_Right(), visible);\r\n }\r\n if (border.indexOf('b') > -1 || !visible) {\r\n if (this.cellBorders.get_Bottom()===null || this.cellBorders.get_Bottom()===undefined)\r\n this.cellBorders.put_Bottom(new Asc.asc_CTextBorder());\r\n this.updateBorderStyle (this.cellBorders.get_Bottom(), visible);\r\n }\r\n if (border.indexOf('c') > -1 || !visible) {\r\n if (this.cellBorders.get_InsideV()===null || this.cellBorders.get_InsideV()===undefined)\r\n this.cellBorders.put_InsideV(new Asc.asc_CTextBorder());\r\n this.updateBorderStyle (this.cellBorders.get_InsideV(), visible);\r\n }\r\n if (border.indexOf('m') > -1 || !visible) {\r\n if (this.cellBorders.get_InsideH()===null || this.cellBorders.get_InsideH()===undefined)\r\n this.cellBorders.put_InsideH(new Asc.asc_CTextBorder());\r\n this.updateBorderStyle (this.cellBorders.get_InsideH(), visible);\r\n }\r\n }\r\n\r\n updateBorderStyle (border, visible) {\r\n if (!border) {\r\n border = new Asc.asc_CTextBorder();\r\n }\r\n if (visible && this.cellBorderWidth > 0){\r\n const size = parseFloat(this.cellBorderWidth);\r\n border.put_Value(1);\r\n border.put_Size(size * 25.4 / 72.0);\r\n let color;\r\n if(this.colorAuto === 'auto') {\r\n color = new Asc.asc_CColor();\r\n color.put_auto(true);\r\n } else {\r\n color = Common.Utils.ThemeColor.getRgbColor(this.cellBorderColor);\r\n }\r\n border.put_Color(color);\r\n }\r\n else {\r\n border.put_Value(0);\r\n }\r\n }\r\n}","import {action, observable, computed, makeObservable} from 'mobx';\r\n\r\nexport class storeChartSettings {\r\n constructor() {\r\n makeObservable(this, {\r\n chartStyles: observable,\r\n fillColor: observable,\r\n borderColor: observable,\r\n clearChartStyles: action,\r\n updateChartStyles: action,\r\n styles: computed,\r\n types: computed,\r\n setFillColor: action,\r\n getFillColor: action,\r\n setBorderColor: action,\r\n initBorderColor: action\r\n });\r\n }\r\n \r\n // Style\r\n \r\n chartStyles = null;\r\n\r\n clearChartStyles () {\r\n this.chartStyles = null;\r\n }\r\n\r\n updateChartStyles (styles) {\r\n this.chartStyles = styles;\r\n }\r\n\r\n get styles () {\r\n if (!this.chartStyles) return null;\r\n const widthContainer = document.querySelector(\".page-content\").clientWidth;\r\n const columns = parseInt(widthContainer / 70); // magic\r\n let row = -1;\r\n const styles = [];\r\n \r\n this.chartStyles.forEach((style, index) => {\r\n if (0 == index % columns) {\r\n styles.push([]);\r\n row++\r\n }\r\n styles[row].push(style);\r\n });\r\n\r\n return styles;\r\n }\r\n\r\n get types () {\r\n const types = [\r\n { type: Asc.c_oAscChartTypeSettings.barNormal, thumb: 'chart-03.png'},\r\n { type: Asc.c_oAscChartTypeSettings.barStacked, thumb: 'chart-02.png'},\r\n { type: Asc.c_oAscChartTypeSettings.barStackedPer, thumb: 'chart-01.png'},\r\n { type: Asc.c_oAscChartTypeSettings.barNormal3d, thumb: 'chart-17.png'},\r\n { type: Asc.c_oAscChartTypeSettings.barStacked3d, thumb: 'chart-18.png'},\r\n { type: Asc.c_oAscChartTypeSettings.barStackedPer3d, thumb: 'chart-19.png'},\r\n { type: Asc.c_oAscChartTypeSettings.barNormal3dPerspective, thumb: 'chart-20.png'},\r\n { type: Asc.c_oAscChartTypeSettings.lineNormal, thumb: 'chart-06.png'},\r\n { type: Asc.c_oAscChartTypeSettings.lineStacked, thumb: 'chart-05.png'},\r\n { type: Asc.c_oAscChartTypeSettings.lineStackedPer, thumb: 'chart-04.png'},\r\n { type: Asc.c_oAscChartTypeSettings.hBarNormal, thumb: 'chart-09.png'},\r\n { type: Asc.c_oAscChartTypeSettings.hBarStacked, thumb: 'chart-08.png'},\r\n { type: Asc.c_oAscChartTypeSettings.hBarStackedPer, thumb: 'chart-07.png'},\r\n { type: Asc.c_oAscChartTypeSettings.hBarNormal3d, thumb: 'chart-25.png'},\r\n { type: Asc.c_oAscChartTypeSettings.hBarStacked3d, thumb: 'chart-24.png'},\r\n { type: Asc.c_oAscChartTypeSettings.hBarStackedPer3d, thumb: 'chart-23.png'},\r\n { type: Asc.c_oAscChartTypeSettings.areaNormal, thumb: 'chart-12.png'},\r\n { type: Asc.c_oAscChartTypeSettings.areaStacked, thumb: 'chart-11.png'},\r\n { type: Asc.c_oAscChartTypeSettings.areaStackedPer, thumb: 'chart-10.png'},\r\n { type: Asc.c_oAscChartTypeSettings.pie, thumb: 'chart-13.png'},\r\n { type: Asc.c_oAscChartTypeSettings.doughnut, thumb: 'chart-14.png'},\r\n { type: Asc.c_oAscChartTypeSettings.pie3d, thumb: 'chart-22.png'},\r\n { type: Asc.c_oAscChartTypeSettings.scatter, thumb: 'chart-15.png'},\r\n { type: Asc.c_oAscChartTypeSettings.stock, thumb: 'chart-16.png'},\r\n { type: Asc.c_oAscChartTypeSettings.line3d, thumb: 'chart-21.png'},\r\n ];\r\n const columns = 3;\r\n const arr = [];\r\n let row = -1;\r\n types.forEach((type, index) => {\r\n if (0 == index % columns) {\r\n arr.push([]);\r\n row++\r\n }\r\n arr[row].push(type);\r\n });\r\n return arr;\r\n }\r\n\r\n // Fill Color\r\n\r\n fillColor = undefined;\r\n\r\n setFillColor (color) {\r\n this.fillColor = color;\r\n }\r\n\r\n getFillColor (shapeProperties) {\r\n let fill = shapeProperties.get_fill();\r\n const fillType = fill.get_type();\r\n let color = 'transparent';\r\n\r\n if (fillType == Asc.c_oAscFill.FILL_TYPE_SOLID) {\r\n fill = fill.get_fill();\r\n const sdkColor = fill.get_color();\r\n if (sdkColor) {\r\n if (sdkColor.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) {\r\n color = {color: Common.Utils.ThemeColor.getHexColor(sdkColor.get_r(), sdkColor.get_g(), sdkColor.get_b()), effectValue: sdkColor.get_value()};\r\n } else {\r\n color = Common.Utils.ThemeColor.getHexColor(sdkColor.get_r(), sdkColor.get_g(), sdkColor.get_b());\r\n }\r\n }\r\n }\r\n\r\n this.fillColor = color;\r\n return color;\r\n }\r\n\r\n // Border size and border color\r\n\r\n borderColor;\r\n\r\n setBorderColor (color) {\r\n this.borderColor = color;\r\n }\r\n\r\n initBorderColor (stroke) {\r\n let color = 'transparent';\r\n\r\n if (stroke && stroke.get_type() == Asc.c_oAscStrokeType.STROKE_COLOR) {\r\n const sdkColor = stroke.get_color();\r\n if (sdkColor) {\r\n if (sdkColor.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) {\r\n color = {color: Common.Utils.ThemeColor.getHexColor(sdkColor.get_r(), sdkColor.get_g(), sdkColor.get_b()), effectValue: sdkColor.get_value()};\r\n }\r\n else {\r\n color = Common.Utils.ThemeColor.getHexColor(sdkColor.get_r(), sdkColor.get_g(), sdkColor.get_b());\r\n }\r\n }\r\n }\r\n\r\n this.borderColor = color;\r\n return color;\r\n }\r\n\r\n borderSizeTransform () {\r\n const _sizes = [0, 0.5, 1, 1.5, 2.25, 3, 4.5, 6];\r\n\r\n return {\r\n sizeByIndex: function (index) {\r\n if (index < 1) return _sizes[0];\r\n if (index > _sizes.length - 1) return _sizes[_sizes.length - 1];\r\n return _sizes[index];\r\n },\r\n\r\n indexSizeByValue: function (value) {\r\n let index = 0;\r\n _sizes.forEach((size, idx) => {\r\n if (Math.abs(size - value) < 0.25) {\r\n index = idx;\r\n }\r\n });\r\n return index;\r\n },\r\n\r\n sizeByValue: function (value) {\r\n return _sizes[this.indexSizeByValue(value)];\r\n }\r\n }\r\n }\r\n}","import {action, observable, makeObservable} from 'mobx';\n\nexport class storeLinkSettings {\n constructor() {\n makeObservable(this, {\n canAddLink: observable,\n canAddHyperlink: action\n });\n }\n\n canAddLink;\n\n canAddHyperlink (value) {\n this.canAddLink = value;\n }\n}\n","import {action, observable, makeObservable} from 'mobx';\r\n\r\nexport class storeReview {\r\n constructor() {\r\n makeObservable(this, {\r\n displayMode: observable,\r\n dataChanges: observable,\r\n changeDisplayMode: action,\r\n changeArrReview: action\r\n });\r\n }\r\n\r\n displayMode = 'markup';\r\n\r\n changeDisplayMode (mode) {\r\n this.displayMode = mode;\r\n }\r\n\r\n dataChanges = [];\r\n\r\n changeArrReview (data) {\r\n this.dataChanges = data && data.length > 0 ? data : [];\r\n }\r\n}","\nimport {makeObservable, observable, action, computed} from 'mobx';\n\nexport class storeComments {\n constructor() {\n makeObservable(this, {\n collectionComments: observable,\n groupCollectionComments: observable,\n filter: observable,\n\n showComments: observable,\n changeShowComment: action,\n removeShowComment: action,\n\n addComment: action,\n removeComment: action,\n changeComment: action,\n changeFilter: action,\n\n groupCollectionFilter: computed,\n\n isOpenEditComment: observable,\n openEditComment: action,\n isOpenAddReply: observable,\n openAddReply: action,\n isOpenEditReply: observable,\n openEditReply: action\n })\n }\n collectionComments = [];\n groupCollectionComments = [];\n\n filter = undefined;\n\n showComments = [];\n changeShowComment (uid) {\n this.showComments.length = 0;\n uid.forEach((item) => {\n this.showComments.push(this.findComment(item));\n });\n }\n\n removeShowComment(id) {\n const index = this.showComments.findIndex((comment) => {\n return comment.uid === id;\n });\n\n if (index !== -1) {\n this.showComments.splice(index, 1);\n }\n }\n\n addComment (comment) {\n comment.groupName ? this.groupCollectionComments.push(comment) : this.collectionComments.push(comment);\n }\n\n removeComment (id) {\n const collection = this.collectionComments.length > 0 ? this.collectionComments : this.groupCollectionComments;\n const index = collection.findIndex((comment) => {\n return comment.uid === id;\n });\n if (index !== -1) {\n collection.splice(index, 1);\n }\n this.removeShowComment(id);\n }\n\n changeComment (id, changeComment) {\n const comment = this.findComment(id);\n if (comment) {\n comment.comment = changeComment.comment;\n comment.userId = changeComment.userId;\n comment.userName = changeComment.userName;\n comment.parsedName = changeComment.parsedName;\n comment.userInitials = changeComment.userInitials;\n comment.userColor = changeComment.userColor;\n comment.resolved = changeComment.resolved;\n comment.quote = changeComment.quote;\n comment.time = changeComment.time;\n comment.date = changeComment.date;\n comment.editable = changeComment.editable;\n comment.removable = changeComment.removable;\n comment.replies = changeComment.replies;\n comment.hide =changeComment.hide;\n }\n }\n\n changeFilter (filter) {\n this.filter = filter;\n }\n\n findComment (id) {\n const collection = this.collectionComments.length > 0 ? this.collectionComments : this.groupCollectionComments;\n let comment = collection.find((item) => {\n return item.uid === id;\n });\n return comment;\n }\n\n get groupCollectionFilter () {\n if (this.filter && this.groupCollectionComments.length > 0) {\n const arr = [];\n this.filter.forEach((groupName) => {\n this.groupCollectionComments.forEach((comment) => {\n if (comment.groupName === groupName) {\n arr.push(comment);\n }\n });\n });\n return arr;\n }\n return false;\n }\n\n // Edit comment\n currentComment = null;\n isOpenEditComment = false;\n openEditComment (open, comment) {\n if (open !== this.isOpenEditComment) {\n this.currentComment = open ? comment : null;\n this.isOpenEditComment = open;\n }\n }\n\n currentReply = null;\n isOpenAddReply = false;\n openAddReply (open, comment) {\n if (open !== this.isOpenAddReply) {\n this.currentComment = open ? comment : null;\n this.isOpenAddReply = open;\n }\n }\n\n isOpenEditReply = false;\n openEditReply (open, comment, reply) {\n if (open !== this.isOpenEditReply) {\n this.currentComment = open ? comment : null;\n this.currentReply = open ? reply : null;\n this.isOpenEditReply = open;\n }\n }\n}","import {action, observable, makeObservable} from 'mobx';\n\nexport class storeToolbarSettings {\n constructor() {\n makeObservable(this, {\n isCanUndo: observable,\n setCanUndo: action,\n isCanRedo: observable,\n setCanRedo: action,\n countPages: observable,\n setCountPages: action,\n disabledControls: observable,\n setDisabledControls: action,\n disabledEditControls: observable,\n setDisabledEditControls: action,\n disabledSettings: observable, \n setDisabledSettings: action\n })\n }\n\n disabledControls = true;\n\n setDisabledControls(value) {\n this.disabledControls = value;\n }\n\n disabledEditControls = false;\n\n setDisabledEditControls(value) {\n this.disabledEditControls = value;\n }\n\n disabledSettings = false;\n\n setDisabledSettings(value) {\n this.disabledSettings = value;\n }\n\n isCanUndo = false;\n\n setCanUndo(can) {\n this.isCanUndo = can;\n }\n\n isCanRedo = false;\n\n setCanRedo(can) {\n this.isCanRedo = can;\n }\n\n countPages = 0;\n\n setCountPages(count) {\n this.countPages = count;\n }\n}","import {action, observable, makeObservable} from 'mobx';\n\nexport class storeThemes {\n constructor() {\n makeObservable(this, {\n\t\t\tisConfigSelectTheme: observable,\n\t\t\tsetConfigSelectTheme: action,\n\t\t\tcolorTheme: observable,\n\t\t\tsetColorTheme: action,\n systemColorTheme: observable,\n setSystemColorTheme: action,\n resetSystemColorTheme: action,\n setTranslationsThemes: action\n });\n }\n\n themes = {\n\t\tdark: {\n\t\t\tid: 'theme-dark',\n\t\t\ttype: 'dark',\n\t\t},\n\t\tlight: {\n\t\t\tid: 'theme-light',\n\t\t\ttype: 'light',\n\t\t},\n\t\tsystem: {\n\t\t\tid: 'theme-system',\n\t\t\ttype: 'system',\n\t\t}\n\t}\n\n nameColors = [\n\t\t\"canvas-background\",\n\t\t\"canvas-content-background\",\n\t\t\"canvas-page-border\",\n\n\t\t\"canvas-ruler-background\",\n\t\t\"canvas-ruler-border\",\n\t\t\"canvas-ruler-margins-background\",\n\t\t\"canvas-ruler-mark\",\n\t\t\"canvas-ruler-handle-border\",\n\t\t\"canvas-ruler-handle-border-disabled\",\n\n\t\t\"canvas-high-contrast\",\n\t\t\"canvas-high-contrast-disabled\",\n\n\t\t\"canvas-cell-border\",\n\t\t\"canvas-cell-title-border\",\n\t\t\"canvas-cell-title-border-hover\",\n\t\t\"canvas-cell-title-border-selected\",\n\t\t\"canvas-cell-title-hover\",\n\t\t\"canvas-cell-title-text\",\n\t\t\"canvas-cell-title-background\",\n\t\t\"canvas-cell-title-background-selected\",\n\n\t\t\"canvas-scroll-thumb\",\n\t\t\"canvas-scroll-thumb-hover\",\n\t\t\"canvas-scroll-thumb-pressed\",\n\t\t\"canvas-scroll-thumb-border\",\n\t\t\"canvas-scroll-thumb-border-hover\",\n\t\t\"canvas-scroll-thumb-border-pressed\",\n\t\t\"canvas-scroll-arrow\",\n\t\t\"canvas-scroll-arrow-hover\",\n\t\t\"canvas-scroll-arrow-pressed\",\n\t\t\"canvas-scroll-thumb-target\",\n\t\t\"canvas-scroll-thumb-target-hover\",\n\t\t\"canvas-scroll-thumb-target-pressed\",\n\t];\n\n\tisConfigSelectTheme = true;\n setConfigSelectTheme(value) {\n this.isConfigSelectTheme = value;\n }\n\n colorTheme;\n setColorTheme(theme) {\n this.colorTheme = theme;\n }\n\n systemColorTheme;\n setSystemColorTheme(theme) {\n this.systemColorTheme = theme;\n }\n\n resetSystemColorTheme() {\n this.systemColorTheme = null;\n }\n\n setTranslationsThemes(translations) {\n for(let key in this.themes) {\n this.themes[key].text = translations[key];\n }\n }\n}","import {makeObservable, action, observable} from 'mobx';\n\nexport class storeVersionHistory {\n constructor() {\n makeObservable(this, {\n arrVersions: observable, \n setVersions: action,\n isVersionHistoryMode: observable,\n changeVersionHistoryMode: action,\n currentVersion: observable,\n changeVersion: action,\n usersVersions: observable,\n addUser: action, \n })\n }\n\n isVersionHistoryMode = false;\n currentVersion = null;\n arrVersions = [];\n usersVersions = [];\n\n addUser(user) {\n this.usersVersions.push(user);\n }\n\n findUserById(id) {\n const user = this.usersVersions.find(user => user.id === id);\n return user;\n }\n\n changeVersion(version) {\n this.currentVersion = version;\n }\n\n changeVersionHistoryMode(value) {\n this.isVersionHistoryMode = value;\n }\n\n setVersions(arr) {\n this.arrVersions = arr;\n }\n\n findRevisions(revision) {\n return this.arrVersions.filter(rev => rev.revision === revision);\n }\n\n hasChanges() {\n return this.arrVersions.filter(rev => rev.isRevision === false).length > 0\n }\n\n getCurrentVersion() {\n return this.arrVersions.find(rev => rev.selected) || null;\n }\n\n hasCollapsed() {\n return this.arrVersions.filter(rev => rev.isRevision === true && rev.hasChanges === true && rev.isExpanded === false).length > 0;\n }\n}","\nimport {storeAppOptions} from './appOptions';\n// import {storeDocumentSettings} from './documentSettings';\nimport {storeFocusObjects} from \"./focusObjects\";\nimport {storeUsers} from '../../../../common/mobile/lib/store/users';\nimport {storeApplicationSettings} from './applicationSettings';\nimport {storePresentationInfo} from './presentationInfo';\nimport {storePresentationSettings} from './presentationSettings';\nimport { storePalette } from './palette';\nimport { storeSlideSettings } from './slideSettings';\nimport { storeTextSettings } from './textSettings';\nimport { storeShapeSettings } from './shapeSettings';\nimport { storeTableSettings } from \"./tableSettings\";\nimport { storeChartSettings } from \"./chartSettings\";\nimport { storeLinkSettings } from \"./linkSettings\";\n// import {storeParagraphSettings} from \"./paragraphSettings\";\n// import {storeShapeSettings} from \"./shapeSettings\";\n// import {storeImageSettings} from \"./imageSettings\";\nimport {storeReview} from '../../../../common/mobile/lib/store/review';\nimport {storeComments} from \"../../../../common/mobile/lib/store/comments\";\nimport {storeToolbarSettings} from \"./toolbar\";\nimport { storeThemes } from '../../../../common/mobile/lib/store/themes';\nimport { storeVersionHistory } from '../../../../common/mobile/lib/store/versionHistory';\n\nexport const stores = {\n storeAppOptions: new storeAppOptions(),\n storeFocusObjects: new storeFocusObjects(),\n // storeDocumentSettings: new storeDocumentSettings(),\n users: new storeUsers(),\n storeApplicationSettings: new storeApplicationSettings(),\n storePresentationInfo: new storePresentationInfo(),\n storePresentationSettings: new storePresentationSettings(),\n storeSlideSettings: new storeSlideSettings(),\n storePalette: new storePalette(),\n storeTextSettings: new storeTextSettings(),\n storeShapeSettings: new storeShapeSettings(),\n storeTableSettings: new storeTableSettings(),\n storeChartSettings: new storeChartSettings(),\n storeLinkSettings: new storeLinkSettings(),\n storeReview: new storeReview(),\n // storeTextSettings: new storeTextSettings(),\n // storeParagraphSettings: new storeParagraphSettings(),\n // storeShapeSettings: new storeShapeSettings(),\n // storeChartSettings: new storeChartSettings(),\n storeComments: new storeComments(),\n storeToolbarSettings: new storeToolbarSettings(),\n storeThemes: new storeThemes(),\n storeVersionHistory: new storeVersionHistory()\n};\n\n","// Import React and ReactDOM\nimport React, { Suspense } from 'react';\nimport { createRoot } from 'react-dom/client';\n\n// Import Framework7\nimport Framework7 from 'framework7/lite-bundle';\nimport { Dom7 } from 'framework7/lite-bundle';\nwindow.$$ = Dom7;\n\n// Import Framework7-React Plugin\nimport Framework7React from 'framework7-react';\n\nimport jQuery from 'jquery';\nwindow.jQuery = jQuery;\nwindow.$ = jQuery;\n\n// Import Framework7 or Framework7-RTL Styles\n\n// Import App Custom Styles\nimport('./less/app.less');\n\n// Import App Component\nimport App from './page/app.jsx';\nimport { I18nextProvider } from 'react-i18next';\nimport i18n from './lib/i18n.js';\n\nimport { Provider } from 'mobx-react';\nimport { stores } from './store/mainStore.js';\n// import { LocalStorage } from '../../../common/mobile/utils/LocalStorage';\n\nconst container = document.getElementById('app');\nconst root = createRoot(container); \n\n// Init F7 React Plugin\nFramework7.use(Framework7React);\n\n// Mount React App\nroot.render(\n \n \n {/**/}\n \n {/**/}\n \n \n);\n"],"names":["undefined","window","Common","component","Analytics","_category","initialize","id","category","Object","prototype","toString","apply","$","append","trackEvent","action","label","value","isFinite","_gaq","push","Gateway","me","this","$me","commandMap","data","trigger","url","_postMessage","msg","buffer","parent","JSON","frameEditorId","postMessage","stringify","fn","e","origin","parentOrigin","location","command","handler","call","cmd","parse","_onMessage","attachEvent","addEventListener","appReady","event","requestEditRights","requestHistory","requestHistoryData","revision","requestRestore","version","fileType","requestEmailAddresses","requestStartMailMerge","requestHistoryClose","reportError","code","description","errorCode","errorDescription","reportWarning","warningCode","warningDescription","sendInfo","info","setDocumentModified","modified","internalMessage","type","updateVersion","downloadAs","requestSaveAs","title","collaborativeChanges","requestRename","metaChange","meta","documentReady","requestClose","requestMakeActionLink","config","requestUsers","c","requestSendNotify","emails","requestInsertImage","requestMailMergeRecipients","requestCompareFile","requestSharingSettings","requestCreateNew","requestReferenceData","requestOpen","requestSelectDocument","requestSelectSpreadsheet","requestReferenceSource","requestStartFilling","pluginsReady","saveDocument","submitForm","on","_extend_object","dest","source","_","extend","assign","Utils","utils","userAgent","navigator","toLowerCase","check","regex","test","isStrict","document","compatMode","is","m","exec","parseFloat","docMode","documentMode","isOpera","isOpera10_5","isIE","isIE7","isIE8","isIE9","isIE10","isIE11","isIE6","isChrome","isWebKit","isSafari","isSafari2","isSafari3","isSafari4","isSafari5_0","isSafari5","isGecko","isGecko3","isGecko4","isGecko5","isGecko10","isFF3_0","isFF3_5","isFF3_6","isWindows","isMac","isLinux","chromeVersion","firefoxVersion","ieVersion","operaVersion","safariVersion","webKitVersion","isSecure","protocol","vendor","opera","checkSize","scale","AscCommon","checkDeviceScale","correctApplicationScale","str_mq_225","matchMedia","matches","devicePixelRatio","body","classes","className","clear_list","replace","trim","zoom","correct","innerWidth","innerHeight","applicationPixelRatio","checkSizeIE","isOffsetUsedZoom","getBoundingClientRect","element","rect","koef","newRect","x","y","width","height","left","top","right","bottom","getOffsetLeft","offsetLeft","getOffsetTop","offsetTop","getOffset","$element","pos","offset","getPosition","position","addClass","isIEQuirks","isIE7m","isIE7p","isIE8m","isIE8p","isIE9m","isIE9p","isIE10m","isIE10p","isIE11m","isIE11p","isFF4","isFF5","isFF10","emailRe","ipRe","hostnameRe","localRe","emailStrongRe","emailAddStrongRe","ipStrongRe","hostnameStrongRe","documentSettingsType","Paragraph","Table","Header","TextArt","Shape","Image","Slide","Chart","MailMerge","Signature","Pivot","Cell","Slicer","Form","importTextType","DRM","CSV","TXT","Paste","Columns","Data","topOffset","croppedGeometry","InternalSettings","get","themecolor","initnames","txtBlack","txtWhite","txtRed","txtGreen","txtBlue","txtYellow","txtPurple","txtAqua","txtDarkRed","txtDarkGreen","txtDarkBlue","txtDarkYellow","txtDarkPurple","txtDarkTeal","txtLightGray","txtGray","txtLightBlue","txtPink","txtLightYellow","txtSkyBlue","txtRose","txtTurquosie","txtLightGreen","txtLavender","txtLightOrange","txtTeal","txtGold","txtOrange","txtIndigo","txtBrown","txtDarkGray","txtbackground","txttext","txtaccent","txtDarker","txtLighter","txtBrightGreen","txtViolet","ThemeValues","getTranslation","name","getEffectTranslation","parseInt","Math","abs","setColors","colors","standart_colors","i","j","item","length","standartcolors","color","getHexColor","get_r","get_g","get_b","tip","asc_getName","idx","colorName","schemeName","asc_getNameInColorScheme","effectName","asc_getEffectValue","String","textComma","effectId","effectValue","effectcolors","getEffectColors","getStandartColors","r","g","b","getRgbColor","clr","Asc","asc_CColor","put_type","c_oAscColor","COLOR_TYPE_SCHEME","COLOR_TYPE_SRGB","put_r","put_g","put_b","put_a","put_value","colorValue2EffectId","toUpperCase","ThemeColor","metrics","c_MetricUnits","cm","pt","inch","currentMetric","metricName","defaultMetric","txtCm","txtPt","txtInch","setCurrentMetric","getCurrentMetric","getCurrentMetricName","getMetricName","unit","setDefaultMetric","getDefaultMetric","fnRecalcToMM","fnRecalcFromMM","toFixed","Metric","RGBColor","colorString","charAt","substr","colorDefinitions","re","process","bits","rgb","h","round","s","v","t1","t2","t3","processor","channels","isNaN","isEqual","toRGB","toRGBA","alfa","toHex","_r","_g","_b","toHSB","hsb","min","max","delta","utilsString","textCtrl","textShift","textAlt","format","args","toArray","arguments","slice","htmlEncode","string","escape","htmlDecode","unescape","ellipsis","len","word","vs","index","lastIndexOf","platformKey","template","hookFn","isEmpty","isFunction","encodeSurrogateChar","nUnicode","fromCharCode","nLeadingChar","nTrailingChar","fixedDigits","num","digits","fill","strfill","str","isBrowserSupported","showBrowserRestriction","getElementsByClassName","editor","DE","SSE","PE","PDFE","newDiv","createElement","innerHTML","appendChild","hide","remove","applyCustomization","elmap","$el","visible","text","applyCustomizationPlugins","plugins","_createXMLHTTPObject","xmlhttp","XMLHttpRequest","ActiveXObject","E","_getPluginCode","xhrObj","open","send","status","eval","responseText","forEach","fillUserInfo","lang","defname","defid","_user","anonymous","fullname","group","UserInfoParser","getSeparator","guest","createXhr","getConfigJson","loadConfig","callback","fetch","method","headers","then","response","ok","json","catch","asyncCall","scope","Promise","resolve","reject","strongMatch","regExp","RegExp","arr","match","settings","set","lockControls","causes","lock","opts","defControls","controls","array","doLock","cmp","cause","options","contains","keepState","indexOf","splice","merge","union","each","setDisabled","clear","difference","isArray","isDisabled","injectButtons","$slots","iconCls","caption","split","menu","toggle","dataHint","dataHintDirection","dataHintOffset","dataHintTitle","btnsArr","createButtonSet","el","_cls","button","UI","Button","parentEl","eq","cls","enableToggle","disabled","add","injectComponent","$slot","rendered","render","startFullscreenForElement","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","cancelFullscreen","cancelFullScreen","webkitCancelFullScreen","mozCancelFullScreen","msExitFullscreen","warningDocumentIsLocked","disablefunc","app","warning","Locale","default","buttons","primary","btn","getController","api","asc_setLocalRestrictions","c_oAscLocalRestrictionType","None","jQuery","elementById","_el","getElementById","substring","node","querySelectorAll","findById","ModalWindow","count","show","close","isVisible","separator","setParser","getParsedName","username","getParsedGroups","groups","getUserInitials","fio","initials","getKeyByValue","obj","prop","hasOwnProperty","isRTL","isrtl","nativeprocvars","rtl","localStorage","getBool","isCurrentLanguageRtl","iconsStr2IconsObj","icons","result","scaleValue","arrParams","start","commonPart","end","param","values","iconName","tempObj","pop","join","bHasName","bHasType","arrThemes","paramName","thInd","scaleInd","themePath","stateInd","state","getSuitableIcons","theme","Themes","currentThemeId","style","isDarkTheme","defUrl","bestUrl","ratio","current","bestDistance","currentDistance","key","aa","ca","p","a","encodeURIComponent","da","Set","ea","fa","ha","ia","ja","ka","la","ma","d","f","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","z","ra","sa","ta","pa","qa","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","Symbol","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","Ma","Error","stack","Na","Oa","prepareStackTrace","defineProperty","Reflect","construct","l","k","displayName","includes","Pa","tag","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","constructor","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","Array","fb","selected","defaultSelected","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","valueOf","firstChild","removeChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","setProperty","keys","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","track","wbr","ub","vb","wb","xb","target","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","removeEventListener","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","repeat","locale","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","ce","de","ee","fe","ge","he","ie","le","date","datetime","email","month","number","password","range","search","tel","time","week","ne","oe","listeners","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","concat","nf","Ub","instance","listener","D","of","has","pf","qf","rf","random","sf","bind","capture","passive","n","t","J","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Jf","queueMicrotask","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","next","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","dh","K","eh","fh","gh","q","hh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","props","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","uh","vh","wh","xh","yh","implementation","zh","Ah","done","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","create","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Mi","console","error","Ni","WeakMap","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","compare","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","src","Wk","mk","ceil","nk","pk","Y","Z","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","fl","gl","hl","il","jl","zj","$k","ll","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","supportsFiber","inject","exports","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","err","module","setState","forceUpdate","__self","__source","_status","_result","Children","map","only","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","inst","_typeof","_regeneratorRuntime","__esModule","o","asyncIterator","toStringTag","define","writable","wrap","Generator","Context","makeInvokeMethod","tryCatch","arg","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isGeneratorFunction","mark","setPrototypeOf","__proto__","awrap","async","reverse","prev","stop","rval","handle","complete","finish","delegateYield","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","__webpack_module_cache__","inProgress","dataWebpackPrefix","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","definition","chunkId","all","reduce","promises","miniCssF","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","timeout","nc","onScriptComplete","onerror","onload","doneFns","head","loadStylesheet","fullhref","existingLinkTags","dataHref","rel","existingStyleTags","findStylesheet","oldTag","linkTag","nonce","errorType","realHref","request","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","promise","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","some","chunkLoadingGlobal","self","_arrayLikeToArray","arr2","_unsupportedIterableToArray","minLen","from","_toConsumableArray","iter","toPropertyKey","toPrimitive","Number","_defineProperties","descriptor","_createClass","Constructor","protoProps","staticProps","_classCallCheck","_assertThisInitialized","ReferenceError","_possibleConstructorReturn","_getPrototypeOf","_setPrototypeOf","_inherits","subClass","superClass","_isNativeReflectConstruct","Boolean","_construct","_wrapNativeSuper","Class","_cache","Wrapper","isObject","ssrDocument","blur","querySelector","createEvent","initEvent","childNodes","importNode","hash","host","hostname","pathname","getDocument","doc","ssrWindow","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","screen","requestAnimationFrame","cancelAnimationFrame","getWindow","win","Dom7","_Array","items","_this","proto","_callSuper","arrayFlat","res","arrayFilter","filter","selector","html","toCreate","tempParent","qsa","uniqueArray","arrayUnique","_len","_key","classNames","_el$classList","classList","removeClass","_len2","_key2","_el$classList2","toggleClass","_len3","_key3","hasClass","_len4","_key4","attr","attrs","attrName","removeAttr","propName","dom7ElementDataStorage","dataKey","removeData","attributes","val","selectedOptions","transform","duration","transitionDuration","_len5","_key5","eventType","targetSelector","handleLiveEvent","eventData","dom7EventData","parents","handleEvent","events","dom7LiveListeners","proxyListener","dom7Listeners","off","_len6","_key6","handlers","dom7proxy","once","dom","_len7","_key7","eventName","onceHandler","_len8","eventArgs","_key8","_len9","_key9","evt","dataIndex","transitionStart","fireCallBack","transitionEnd","animationEnd","css","outerWidth","includeMargins","styles","offsetWidth","outerHeight","offsetHeight","box","clientTop","clientLeft","scrollY","scrollX","compareWith","webkitMatchesSelector","msMatchesSelector","returnIndex","newChild","tempDiv","appendTo","prepend","prependTo","before","cloneNode","insertAfter","after","nextElementSibling","nextAll","nextEls","previousElementSibling","prevAll","prevEls","siblings","closest","find","foundElements","found","detach","_len10","els","_key10","toAdd","empty","scrollTo","_len11","_key11","easing","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","scrollHeight","scrollWidth","getTime","progress","easeProgress","cos","PI","_len12","_key12","_len13","_key13","animate","initialProps","initialParams","animateInstance","params","elements","animating","que","easingProgress","frameId","dom7AnimateInstance","initialFullValue","finalValue","finalFullValue","container","currentValue","elementsDone","propsDone","began","begin","_el$prop","noTrigger","shortcut","_len14","_key14","click","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","methods","methodName","_defineProperty","_slicedToArray","signum","lerp","amount","clampDouble","sanitizeDegreesDouble","degrees","matrixMultiply","row","matrix","SRGB_TO_XYZ","XYZ_TO_SRGB","WHITE_POINT_D65","argbFromRgb","red","green","blue","argbFromLinrgb","linrgb","delinearized","redFromArgb","argb","greenFromArgb","blueFromArgb","lstarFromArgb","labF","linearized","xyzFromArgb","yFromLstar","lstar","ft3","ft","lstarFromY","rgbComponent","normalized","pow","clampInt","ViewingConditions","aw","nbb","ncb","rgbD","fLRoot","whitePoint","adaptingLuminance","backgroundLstar","surround","discountingIlluminant","xyz","rW","gW","bW","exp","k4","k4F","cbrt","sqrt","rgbAFactors","rgbA","DEFAULT","make","Cam16","hue","chroma","jstar","astar","bstar","other","dJ","dA","dB","dEPrime","viewed","viewingConditions","linearR","linearG","linearB","alpha","hRad","eHue","p1","p2","hSin","sin","hCos","gamma","rA","gA","bA","rCBase","rC","gCBase","gC","bCBase","bC","rF","gF","bF","fromIntInViewingConditions","redL","greenL","blueL","rD","gD","bD","rAF","gAF","bAF","atanDegrees","atan2","hueRadians","huePrime","mstar","fromJchInViewingConditions","fromUcsInViewingConditions","HctSolver","angle","scaledDiscount","SCALED_DISCOUNT_FROM_LINRGB","chromaticAdaptation","sanitizeRadians","mid","coordinate","axis","intercept","lerpPoint","kR","Y_FROM_LINRGB","kG","kB","coordA","coordB","isBounded","targetHue","leftHue","rightHue","initialized","uncut","nthVertex","midHue","hueOf","areInCyclicOrder","segment","bisectToSegment","lPlane","rPlane","criticalPlaneBelow","trueDelinearized","criticalPlaneAbove","mPlane","midPlaneCoordinate","CRITICAL_PLANES","setCoordinate","midpoint","adapted","adaptedAbs","tInnerCoeff","iterationRound","jNormalized","inverseChromaticAdaptation","LINRGB_FROM_SCALED_DISCOUNT","fnj","hueDegrees","argbFromLstar","exactAnswer","findResultByJ","bisectToLimit","fromInt","solveToInt","Variant","Hct","cam","internalHue","internalChroma","internalTone","newHue","setInternalState","newChroma","newTone","viewedInVc","toInt","xyzInViewingConditions","recastInVc","fromXyzInViewingConditions","tone","Blend","designColor","sourceColor","fromHct","toHct","differenceDegrees$1","differenceDegrees","rotationDegrees","outputHue","to","ucs","cam16Ucs","ucsCam","fromCam","toCam","fromJ","fromA","fromB","fromUcs","Contrast","toneA","toneB","ratioOfYs","y1","y2","lighter","darkY","lightY","realContrast","lighterSafe","darkerSafe","darker","DislikeAnalyzer","hct","huePasses","chromaPasses","tonePasses","isDisliked","DynamicColor","palette","isBackground","background","secondBackground","contrastCurve","toneDeltaPair","hctCache","scheme","getHct","cachedAnswer","getTone","answer","decreasingContrast","contrastLevel","roleA","roleB","polarity","stayTogether","bgTone","aIsNearer","isDark","nearer","farther","amNearer","expansionDir","nContrast","getContrast","fContrast","nInitialTone","nTone","ratioOfTones","foregroundTone","fInitialTone","fTone","desiredRatio","_ref","bg2","_ref2","bg1","bgTone1","bgTone2","_ref3","upper","lower","lightOption","darkOption","availables","tonePrefersLightForeground","_args$name","_args$isBackground","lighterTone","lighterUnsafe","darkerTone","darkerUnsafe","lighterRatio","darkerRatio","negligibleDifference","toneAllowsLightForeground","MONOCHROME","NEUTRAL","TONAL_SPOT","VIBRANT","EXPRESSIVE","FIDELITY","CONTENT","RAINBOW","FRUIT_SALAD","ContrastCurve","low","normal","medium","high","ToneDeltaPair","isFidelity","variant","isMonochrome","performAlbers","prealbers","albersd","inViewingConditions","viewingConditionsForAlbers","enableLightForeground","MaterialDynamicColors","surfaceBright","surfaceDim","contentAccentToneDelta","primaryPaletteKeyColor","fromPalette","primaryPalette","keyColor","secondaryPaletteKeyColor","secondaryPalette","tertiaryPaletteKeyColor","tertiaryPalette","neutralPaletteKeyColor","neutralPalette","neutralVariantPaletteKeyColor","neutralVariantPalette","onBackground","surface","surfaceContainerLowest","surfaceContainerLow","surfaceContainer","surfaceContainerHigh","surfaceContainerHighest","onSurface","highestSurface","surfaceVariant","onSurfaceVariant","inverseSurface","inverseOnSurface","outline","outlineVariant","shadow","scrim","surfaceTint","primaryContainer","onPrimary","sourceColorHct","onPrimaryContainer","inversePrimary","secondary","secondaryContainer","onSecondary","initialTone","byDecreasingTone","closestToChroma","chromaPeak","potentialSolution","findDesiredChromaByTone","onSecondaryContainer","tertiary","tertiaryContainer","onTertiary","albersTone","proposedHct","fixIfDisliked","onTertiaryContainer","errorPalette","errorContainer","onErrorContainer","primaryFixed","primaryFixedDim","onPrimaryFixed","onPrimaryFixedVariant","secondaryFixed","secondaryFixedDim","onSecondaryFixed","onSecondaryFixedVariant","tertiaryFixed","tertiaryFixedDim","onTertiaryFixed","onTertiaryFixedVariant","TonalPalette","createKeyColor","smallestDeltaHct","smallestDelta","hctAdd","hctAddDelta","hctSubtract","hctSubtractDelta","CorePalette","isContent","a1","fromHueAndChroma","a2","a3","n1","n2","createPaletteFromColors","content","neutral","neutralVariant","Scheme","_objectSpread","lightFromCorePalette","darkFromCorePalette","contentOf","core","hexFromArgb","_step","outParts","_iterator","_createForOfIteratorHelper","entries","_step$value","part","argbFromHex","hex","isThree","isSix","isEight","parseIntHex","themeFromSourceColor","customColors","schemes","light","dark","palettes","blend","harmonize","tones","onColor","colorContainer","onColorContainer","customColor","rgba","materialColors","hexColor","shouldSkip","uniqueNum","uniqueNumber","mask","mdPreloaderContent","iosPreloaderContent","eventNameToColonCase","hasColon","deleteProps","object","nextTick","nextFrame","parseUrlQuery","query","urlToParse","paramsPart","decodeURIComponent","getTranslate","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","serializeObject","newParents","resultArray","varName","parentParts","varValue","toPush","nextSource","keysArray","nextIndex","nextKey","desc","deep","colorHexToRgb","colorRgbToHex","colorRgbToHsl","colorHslToRgb","rgb1","hp","colorHsbToHsl","HSL","HSB","colorHslToHsb","support","deviceCalculated","getShadeTintColors","hsl","hslShade","hslTint","shade","tint","colorThemeCSSProperties","_materialColors","shadeTintIos","shadeTintMdLight","shadeTintMdDark","ios","bindMethods","subKey","flattenArray","colorThemeCSSStyles","stringifyObject","colorVars","restVars","colorValue","rest","_restVars$colorName","whiteColorVars","blackColorVars","lightString","darkString","getSupport","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","passiveListener","supportsPassive","intersectionObserver","calcSupport","getDevice","overrides","_temp","platform","device","android","androidChrome","desktop","iphone","ipod","ipad","edge","firefox","macos","windows","cordova","electron","capacitor","Capacitor","nwjs","screenWidth","screenHeight","nw","versions","os","osVersion","webView","standalone","webview","pixelRatio","prefersColorScheme","calcDevice","EventsClass","eventsParents","eventsListeners","f7proxy","eventHandler","local","eventsArray","localEvents","parentEvents","eventsParent","emit","Framework7Class","_EventsClass","instanceParams","originalParams","paramKey","modules","moduleName","moduleParams","modulePropName","moduleProp","moduleEventName","vnode","vnodeHooks","vnodeId","hookName","modulesParams","useModule","components","use","static","install","installModule","ConstructorMethods","parameters","_parameters","defaultSelector","domProp","addMethods","ModalMethods","targetEl","$targetPage","modalEl","$modalEl","f7Modal","$parentEl","$targetEl","fetchedModules","moduleToLoad","Framework7","modulePath","moduleObj","moduleFunc","matchNamePattern","lazyModulesPath","scriptLoad","resolveScript","rejectScript","scriptContent","callbackId","callbackLoadName","scriptEl","componentLoader","styleLoad","resolveStyle","styleContent","styleEl","useModuleParams","attrsString","childrenContent","_Framework7Class","passedParams","defaults","routes","initOnDeviceReady","init","darkMode","iosTranslucentBars","iosTranslucentModals","componentUrl","pink","yellow","orange","purple","deeppurple","lightblue","teal","lime","deeporange","white","black","useModulesParams","online","onLine","store","f7","useModules","initStore","colorsStyleEl","rootEl","$rootEl","DARK","LIGHT","mq","colorSchemeListener","media","__store","createStore","enableAutoDarkMode","disableAutoDarkMode","router","componentOptions","$elComponent","f7Component","mount","setDarkMode","initAppComponent","loadModule","loadModules","hook","$jsx","metaStatusbar","getSize","orientationchange","touchClicksDistanceThreshold","disableContextMenu","tapHold","tapHoldDelay","tapHoldPreventClicks","activeState","activeStateElements","activeStateOnMouseMove","mdTouchRipple","iosTouchRipple","touchRippleElements","touchRippleInsetElements","touchEvents","move","touchStartX","touchStartY","targetElement","isMoved","tapHoldFired","tapHoldTimeout","preventClick","activableElement","activeTimeout","rippleWave","rippleTarget","rippleTimeout","isScrolling","useRipple","findActivableElement","activable","preventPropagation","newActivable","isInsideScrollableView","addActive","removeActive","createRipple","touchRipple","removeRipple","rippleTouchStart","rippleElements","rippleParent","findRippleElement","rippleTouchMove","rippleTouchEnd","handleMouseUp","isSegmentedStrong","segmentedStrongEl","touchMoveActivableIos","isTouchMoveActivable","touchmoveActivableEl","emitAppTouchEvent","appTouchStartActive","appTouchMoveActive","appTouchEndActive","appTouchStartPassive","appTouchMovePassive","appTouchEndPassive","passiveListenerCapture","activeListener","activeListenerCapture","isOverswipe","isSegmented","localPreventClick","stopImmediatePropagation","distance","shouldRemoveActive","touchCurrentX","touchCurrentY","buttonEl","elementFromPoint","$activableEl","isNative","tokens","pattern","charCodeAt","lexer","_a","prefixes","defaultPattern","escapeString","delimiter","path","tryConsume","mustConsume","nextType","consumeText","prefix","suffix","modifier","name_1","pattern_1","compile","reFlags","encode","validate","token","optional","typeOfMessage","tokensToFunction","sensitive","stringToRegexp","strict","_c","_d","_e","_f","endsWith","endsWithRe","delimiterRe","route","_i","tokens_1","mod","endToken","isEndDelimited","tokensToRegexp","pathToRegexp","groupsRegex","execResult","regexpToRegexp","paths","parts","arrayToRegexp","History","clearQueue","currentQueue","routerQueue","clearRouterQueue","stateUrl","browserHistoryAnimate","browserHistory","navigate","blockPopstate","previousState","allowChange","views","viewState","allowPageChange","initViewState","viewId","newState","readyState","viewContainerWidth","touchesDiff","touchStartTime","dynamicNavbar","$pageShadowEl","$pageOpacityEl","animatableNavEls","$navbarsEl","isTouched","touchesStart","$currentPageEl","$previousPageEl","allowViewTouchMove","$currentNavbarEl","$previousNavbarEl","paramsSwipeBackAnimateShadow","paramsSwipeBackAnimateOpacity","paramsSwipeBackActiveArea","paramsSwipeBackThreshold","transformOrigin","transformOriginTitleLarge","setAnimatableNavElements","reflow","_clientLeft","classNameSet","styleProp","handleTouchStart","swipeBackEnabled","swipeout","masterDetailBreakpoint","handleTouchMove","f7PreventSwipeBack","preventSwipeBack","cancel","activeNavBackIconText","previousNavBackIconText","inverter","currentNavIsTransparent","currentNavIsLarge","currentNavIsCollapsed","currentNavIsLargeTransparent","previousNavIsTransparent","previousNavIsLarge","previousNavIsCollapsed","previousNavIsLargeTransparent","fromLarge","toLarge","$currentNavElements","$previousNavElements","iosAnimateNavbarBackIcon","f7NavbarLeftOffset","navEl","$navEl","isSubnavbar","isLeft","isTitle","isBg","subNavEl","isSliding","transformTarget","textEl","activeNavTranslate","f7NavbarRightOffset","previousNavTranslate","animatableNavElements","sheet","f7PreventSwipePanel","preventSwipePanelBySwipeBack","percentage","callbackData","currentPageEl","previousPageEl","currentNavbarEl","previousNavbarEl","currentPageTranslate","previousPageTranslate","swipeBackActive","handleTouchEnd","$pages","timeDiff","pageChanged","setNavbarPosition","currentRoute","f7Page","currentPage","pageCallback","swipeBack","saveHistory","removePage","removeNavbar","previousRoute","preloadPreviousPage","preload","redirect","direction","initial","redirectUrl","redirectOptions","processQueue","routeQueue","processRouteQueue","enterNextRoute","routesBeforeEnter","beforeEnter","routesBeforeLeave","beforeLeave","appRouterCheck","asyncComponent","resolvePromise","componentPromise","_default","asyncComponentResult","forward","forwardOptions","masterPageEl","otherDetailPageEl","modalType","reloadCurrent","reloadPages","reloadPrevious","reloadAll","clearPreviousHistory","reloadDetail","masterDetailEnabled","isMaster","master","detailsInBetweenRemoved","currentRouteIsModal","modal","modalLoadProp","modalToClose","modalInstance","previousUrl","findMatchingRoute","modalRemove","$oldPage","$newNavbarEl","$oldNavbarEl","$viewEl","$newPage","reload","removeThemeElements","$navbarEl","keepAlive","keepAliveData","pageEl","$navbarsInView","isDetail","isDetailRoot","$pagesInView","pageInView","navbarInView","newPagePosition","role","root","detailRoot","navbar","getElByPage","navbarEl","removedPageEls","removedNavbarEls","oldNavbarEl","browserHistoryRoot","browserHistorySeparator","propsHistory","newPageInDom","componentEl","f7PageMounted","$oldPageEl","$oldNavbarElEl","tab","tabLoad","checkMasterDetailBreakpoint","setPagePosition","afterAnimation","keepOldPage","setPositionClasses","f7PageTransition","load","loadParams","loadOptions","ignorePageChange","pageName","parentPath","sameParams","allowDuplicateUrls","parseRouteUrl","getPageEl","pageComponentLoader","routerEl","newOptions","xhrAbortController","abort","xhrRequest","pageContent","backward","backwardOptions","masterPageRemoved","backIndex","initialPreload","currentIsMaster","masterRoute","force","$navbarToRemove","$pageToRemove","insertPage","$previousPages","pageToRemove","loadBack","backParams","backOptions","Router","isAppRouter","routerId","scrollHistory","iosDynamicNavbar","initialPages","initialNavbars","newRoute","tempDom","navbarsEl","newNavEls","oldNavEls","animateIcon","animatableNavEl","$navbarInner","isIconLabel","needsOpacityTransition","$iconEl","leftOffset","rightOffset","navEls","otherEls","otherNavEl","iconTextEl","$newPageEl","animateCustom","routerCustomTransitionClass","toDifferent","oldIsLarge","newIsLarge","routerTransitionClass","animateNavbars","removeEl","tabEl","tabChild","removeElements","removeElementsWithTimeout","removeElementsTimeout","findElement","stringSelector","$container","viewMainClass","flattenedRoutes","hasTabRoutes","tabs","mergedPathsRoutes","tabRoute","tRoute","flattenRoutes","detailRoutes","detailRoute","dRoute","masterRoutePath","childRoute","cRoute","findRouteByKey","constructRouteUrl","toUrl","foundTabRouteUrl","$tabEl","tabId","matchingRoute","_router$parseRouteUrl","matched","pathsToMatch","alias","aliasPath","pathToMatch","keyObj","paramValue","compiledUrl","xhrCache","xhr","requestUrl","ignoreCache","hasQuery","passRouteQueryToRequest","passRouteParamsToRequest","replaceRequestUrlParams","xhrCacheIgnoreGetParameters","xhrCacheIgnore","cachedUrl","xhrCacheDuration","fetchRes","AbortController","signal","removeFromXhrCache","ariaHidden","toRemove","pageFromEl","pageFrom","$pageEl","fromPage","$pageFromEl","page","restoreScrollTopOnBack","camelName","colonName","getPageData","_ref2$on","_ref2$once","attachEvents","$pageContent","pageContentEl","f7PageInitialized","f7RouteEventsAttached","f7RouteEventsOn","f7RouteEventsOnce","browserHistoryStoreHistory","newUrl","_router$parseRouteUrl2","initialUrl","historyRestored","URL","documentUrl","_router$params","browserHistoryOnLoad","warn","restoreHistory","_router$getInitialUrl","getInitialUrl","iosSwipeBack","mdSwipeBack","SwipeBack","_router$params2","browserHistoryAnimateOnLoad","browserHistoryInitialMatch","initUrl","loadInitialPage","modalOpen","pageAfterIn","hasTabRoute","initOptions","routerProp","navigateParams","navigateOptions","createRoute","generateUrl","navigateUrl","currentPath","viewName","anotherViewName","anotherView","openIn","ignoreOpenIn","routerLoaded","asyncResolve","resolveParams","resolveOptions","resolvedAsModal","modalRoute","modalLoad","asyncReject","pageLoadProp","preloadMaster","masterLoaded","refreshPage","parentPageEl","browserHistoryTabs","$parentPageEl","hasContentLoadProp","tabShowResult","$newTabEl","$oldTabEl","animated","onTabsChanged","tabParentPageData","f7RouterTabLoaded","loadTab","loadTabParams","loadTabOptions","contentEl","tabEventTarget","unloadTabContent","tabRemove","onTabLoaded","tabComponentLoader","tabContent","tabLoadProp","hasTabComponentChild","removeTabContent","foundLoadProp","isPanel","modalOrPanel","modalParams","routeCallback","panelOpen","modalClose","panelClose","modalClosed","panelClosed","onModalLoaded","hasEl","closeOnSwipeBack","closeByRouter","modalComponent","removeModal","loadModal","loadModalParams","loadModalOptions","modalComponentLoader","modalContent","navigateProps","_navigateOptions","prevOpenedModals","forceOtherUrl","isBrokenBrowserHistory","needHistoryBack","currentRouteWithoutBrowserHistory","skipMaster","$previousPage","$previousMaster","expectedPreviousPageUrl","expectedPreviousPageRoute","previousPageRoute","panel","clearPreviousPages","templates","resizableInitialized","resizable","resizableWidth","$htmlEl","$resizeHandlerEl","minWidth","maxWidth","handleResize","transformCSSWidth","newV","$pageMasterEl","newWidth","View","viewParams","routesAdd","main","f7View","viewProp","wasMasterDetail","isMasterDetail","masterDetailResizable","resizableView","viewEl","initMasterDetail","initRouterOnTabShow","clicks","externalLinks","$clickedEl","$clickedLinkEl","isLink","InAppBrowser","Plugins","Browser","moduleClicks","preventF7Router","clickSelector","matchingClickedElement","clickedLinkData","clickedEl","linksView","ViewClass","f7RouteProps","initClicks","SW","registrations","register","serviceWorker","reg","unregister","registration","storeParams","originalState","actions","getters","propsQueue","gettersDependencies","gettersCallbacks","getterKey","getGetterValue","addGetterCallback","__removeCallback","stateKey","callbacks","removeGetterCallback","getterValue","addCallback","dep","addGetterDependencies","onUpdated","__callback","Proxy","_gettersPlain","actionName","isCapacitor","StatusBar","Statusbar","setTextColor","styleLightContent","styleDefault","setStyle","setBackgroundColor","backgroundColorByHexString","getInfo","overlaysWebView","overlays","setOverlaysWebView","overlay","statusbar","enabled","isCordova","isCap","scrollTopOnClick","iosOverlaysWebView","iosTextColor","androidOverlaysWebView","androidTextColor","iosBackgroundColor","androidBackgroundColor","componentCache","iosSwipeBackAnimateShadow","iosSwipeBackAnimateOpacity","iosSwipeBackActiveArea","iosSwipeBackThreshold","mdSwipeBackAnimateShadow","mdSwipeBackAnimateOpacity","mdSwipeBackActiveArea","mdSwipeBackThreshold","iosPageLoadDelay","mdPageLoadDelay","$popoverView","$popupView","$panelView","$viewsEl","getCurrentView","insert","elm","Navbar","$innerEl","needCenterTitle","needLeftTitle","iosCenterTitle","currLeft","diff","subnavbar","noLeft","noRight","leftWidth","rightWidth","titleWidth","navbarStyles","navbarInnerWidth","paddingLeft","paddingRight","isPrevious","sliding","requiredLeft","titleLeftOffset","titleRightOffset","activeNavbarBackLink","titleLeft","hideStatusbar","hideOnlyCurrent","isDynamic","subEl","pageData","getPageByEl","collapseLargeTitle","expandLargeTitle","toggleLargeTitle","initNavbarOnScroll","needHide","needCollapse","needTransparent","previousScrollTop","currentScrollTop","reachEnd","navbarHidden","navbarCollapsed","navbarTitleLargeHeight","navbarOffsetHeight","scrollChanged","scrollContent","scrollTimeoutId","touchEndTimeoutId","$titleLargeEl","isLarge","navbarHideHeight","snapPageScrollToLargeTitle","snapPageScrollToTransparentNavbar","touchSnapTimeout","desktopSnapTimeout","calcScrollableDistance","f7ScrollableDistance","snapLargeNavbar","snapTransparentNavbar","previousCollapseProgress","collapseProgress","handleScroll","isLargeTransparent","scrollableDistance","previousCollapseWasInMiddle","$bgEl","handleLargeNavbarCollapse","notTransparent","handleNavbarTransparent","showOnPageScrollEnd","showOnPageScrollTop","handeTouchStart","f7DetachNavbarScrollHandlers","scrollTopOnTitleClick","mdCenterTitle","hideOnPageScroll","collapseLargeTitleOnScroll","pageBeforeRemove","pageBeforeIn","pageReinit","pageInit","needCollapseOnScrollHandler","needTransparentOnScroll","needHideOnScrollHandler","tabShow","clickedData","$pageContentEl","postpatch","Toolbar","setHighlight","tabbarEl","$tabbarEl","$highlightEl","tabLinksCount","highlightWidth","highlightTranslate","$activeLink","activeIndex","toolbar","initToolbarOnScroll","toolbarHidden","$toolbarEl","f7ScrollToolbarHandler","tabbar","subnavbarEl","TouchRipple","ripple","_$el$0$getBoundingCli","center","diameter","isInset","insetElements","rippleTransform","$rippleWaveEl","shouldBeRemoved","out","removeTimeout","openedModals","dialogsQueue","Modal","opened","$containerEl","containerEl","backdrop","backdropUnique","forceBackdropUnique","$backdropEl","animateModal","pushToQueue","queueDialogs","openedModal","$modalParentEl","wasInDom","onClosed","onOpened","onOpen","needToHideBackdrop","popupEl","popupInstance","closeByBackdropClick","backdropEl","onClose","destroyed","CustomModal","_Modal","extendedParams","customModal","handleClick","Dialog","dialog","verticalButtons","cssClass","destroyOnClose","addKeyboardHander","dialogClasses","buttonsHTML","class","strong","dialogHtml","buttonOnClick","onKeyDown","keyCodes","setProgress","progressbar","setText","newText","$textEl","setTitle","newTitle","$titleEl","buttonOk","buttonCancel","usernamePlaceholder","passwordPlaceholder","preloaderTitle","progressTitle","destroyPredefinedDialogs","keyboardActions","defaultDialogTitle","autoFocusHandler","isIosTheme","alert","callbackOk","prompt","callbackCancel","inputValue","confirm","login","preloader","preloaderInner","infinite","Popup","pushOffset","isPush","popup","$target","Keyboard","needToClose","closeOnEscape","pushViewScale","startTouch","currentTouch","pageContentScrollTop","pageContentOffsetHeight","pageContentScrollHeight","popupHeight","$pushEl","allowSwipeToClose","swipeToClose","swipeHandler","pushProgress","hasPreviousPushPopup","updatePushOffset","wasPush","setPushOffset","removeProperty","parentSelector","LoginScreen","loginScreen","Popover","popover","$arrowEl","anotherPopoverEl","f7PopoverRef","arrow","originalOpen","arrowEl","touchStartTarget","closeByOutsideClick","isAnotherPopoverBackdrop","isAnotherPopoverTarget","_popover$params","targetX","targetY","verticalPosition","arrowLeft","arrowTop","targetWidth","targetHeight","targetOffsetLeft","targetOffsetTop","arrowSize","hasArrow","arrowMin","safeAreaTop","safeAreaLeft","safeAreaRight","targetOffset","targetParentPage","hPosition","forcedPosition","popoverEl","$popoverEl","Actions","convertToPopover","popoverHtml","renderPopover","actionsHtml","originalClose","buttonIndex","groupIndex","$buttonEl","_actions$params","forceToPopover","closed","grid","buttonClasses","icon","itemClasses","Sheet","isTopSheetModal","swipeStepTranslate","startTranslate","currentTranslate","sheetElOffsetHeight","minTranslate","maxTranslate","$pushViewEl","pushBorderRadius","sheetPageContentEl","sheetPageContentScrollTop","sheetPageContentScrollHeight","sheetPageContentOffsetHeight","currentBreakpointIndex","useBreakpoints","breakpoints","breakpointsTranslate","backdropBreakpointSet","swipeToStep","setBackdropBreakpoint","setPushBreakpoint","openDirection","closeDirection","absCurrentTranslate","absSwipeStepTranslate","setBreakpoint","allBreakpoints","closestTranslate","curr","closestIndex","stepOpened","breakpoint","pushBreakpoint","pushBreakpoints","pushTransparentBreakpoint","backdropBreakpoint","backdropBreakpoints","backdropTransparentBreakpoint","calcBreakpoints","fullSize","onResize","setSwipeStep","byResize","$swipeStepEl","scrollToEl","$scrollEl","newPaddingBottom","paddingTop","paddingBottom","pageHeight","pageScrollHeight","pageScroll","scrollElTop","scrollToElementOnOpen","stepOpen","stepClose","stepToggle","sheetInstance","Toast","toast","timeoutId","_toast$params","closeButton","closeTimeout","toastHtml","openedEl","toastInstance","_toast$params2","horizontalPosition","closeButtonColor","closeButtonText","horizontalClass","Preloader","preloaders","showIn","hideIn","photoBrowserOpen","preloaderEl","tabMounted","Progressbar","$progressbarEl","progressNormalized","$progressbarLine","removeAfterHide","progressbarEl","update","Sortable","$sortingEl","$sortingItems","$sortableContainer","sortingElHeight","minTop","$insertAfterEl","$insertBeforeEl","indexFrom","pageOffset","sortingElOffsetLocal","sortingElOffsetTop","initialScrollTop","wasTapHold","isTapHold","$listGroup","allowOpen","allow","translateScrollOffset","translate","scrollDiff","scrollAddition","allowScroll","$currentEl","currentElOffset","currentElHeight","sortingElOffset","prevTranslate","f7Translate","indexTo","moveElements","sortableMoveElements","sortable","f7VirtualListIndex","virtualList","f7VirtualList","moveItem","pointerEvent","enable","disable","Swipeout","$swipeoutEl","$swipeoutContent","$actionsRight","$actionsLeft","actionsLeftWidth","actionsRightWidth","openedActionsSide","$leftButtons","$rightButtons","$overswipeLeftButton","$overswipeRightButton","overswipeLeft","overswipeRight","noFollow","buttonOffset","buttonTranslate","overswipeRatio","f7SwipeoutButtonOffset","$buttons","$actions","actionsWidth","newTranslate","side","$swipeoutActions","swipeoutActionsWidth","onSwipeoutClose","virtualIndex","deleteItem","actionsNoFold","_data","confirmTitle","Accordion","toggleClicked","$accordionItemEl","$accordionContent","accordion","prevented","prevent","$list","$contentEl","$openedItem","VirtualList","defaultHeight","cols","dynamicHeightBufferSize","showFilteredItemsOnly","renderExternal","setListHeight","searchByItem","searchAll","createUl","scrollableParentEl","renderItem","filteredItems","$scrollableParentEl","updatableScroll","$itemsWrapEl","$ul","itemsWrapEl","domCache","tempDomElement","lastRepaintY","fragment","createDocumentFragment","rowsPerScreen","rowsBefore","rowsAfter","rowsToRender","maxBufferHeight","listHeight","dynamicHeight","autoHeight","$panelEl","$popupEl","handleScrollBound","handleResizeBound","detachEvents","autoHeightRerender","heights","itemHeight","heightsCalculated","renderedItems","itemIndex","renderedItem","forceScrollTop","fromIndex","toIndex","topPosition","heightBeforeFirstItem","heightBeforeLastItem","itemTop","renderExternalItems","itemEl","currentFromIndex","currentToIndex","emptyTemplate","setListSize","indexes","resetScrollTop","listTop","getClientRects","appendItems","newCache","cached","prependItems","cachedIndex","leftIndex","rightIndex","indexShift","appendItem","prependItem","prevIndex","_loop","deletedItem","deleteItems","deleteCache","ListIndex","$listEl","listEl","iosItemHeight","mdItemHeight","scrollList","itemContent","renderSkipPlaceholder","f7ListIndex","calcSize","$clickedLi","skipRate","scrollListToIndex","topPoint","bottomPoint","$labelEl","previousIndex","$children","ulHeight","bubbleBottom","$scrollToEl","parentTop","scrollToElTop","navbarInnerEl","wasSkipped","itemHtml","maxItems","elContent","calcIndexes","listIndex","listIndexEl","tabBeforeRemove","Tab","tabLinkEl","animatedInit","$tabLinkEl","f7TabRoute","newTabEl","$tabsEl","tabsChangedCallbacks","tabsChanged","swiper","tabsTranslate","newTabIndex","slides","slideTo","tabLinkElement","$oldTabLinkEl","oldTabId","oldTabEl","pageOrTabEl","animatedTabEl","swipeInitialized","swipeable","otherPanel","isGestureStarted","isInterrupted","backdropOpacity","panelWidth","effect","touchMoves","handleGestureStart","handleGestureEnd","swipe","swipeOnlyClose","otherPanelOpened","swipeActiveArea","getViewEl","preventSwipePanel","threshold","swipeThreshold","insertToRoot","noFollowProgress","swipeNoFollow","viewTranslate","isGesture","removePanelInClass","setStateClasses","visibility","panelMinWidth","panelMaxWidth","visibleByBreakpoint","isPushingPanel","newPanelWidth","Panel","f7Panel","_panel$params","panelInView","visibleBreakpointDisabled","setVisibleBreakpoint","emitEvents","visibleBreakpointResizeHandler","visibleBreakpoint","wasVisible","allowPanelOpen","collapsedBreakpointDisabled","setCollapsedBreakpoint","collapsedBreakpointResizeHandler","collapsedBreakpoint","collapsed","resizablePanel","swipePanel","modifyHtmlClasses","_openTransitionStarted","toggleVisibleBreakpoint","$panelParentEl","otherOpenedPanel","transitionEndTarget","panelTransitionEnd","enableSwipe","enableResizable","panelEl","CardExpandable","cardEl","$cardEl","cardParams","card","hideNavbarOnOpen","hideToolbarOnOpen","hasTransform","currTransform","$cardContentEl","$cardSizeEl","statusbarHeight","cardWidth","cardHeight","pageWidth","maxHeight","hideStatusbarOnOpen","cardLeftOffset","cardTopOffset","scaleX","scaleY","transformValues","cardRightOffset","cardScrollTop","touchEndX","touchEndY","isV","isH","$cardScrollableEl","cardBottomOffset","translateX","translateY","f7KeepNavbarOnClose","f7KeepToolbarOnClose","detachEventHandlers","onTouchStart","onTouchMove","onTouchEnd","scrollableEl","animateWidth","$openedCardEl","FormData","formId","$formEl","removeItem","FormStorage","formEl","initialData","getFormData","fillFromData","convertToData","storeFormData","formToData","skipTypes","skipNames","inputEl","$inputEl","formFromData","formData","selectEl","checkboxEl","radioEl","initAjaxForm","fromData","contentType","removeFormData","storage","Input","ignoreTypes","createTextareaResizableShadow","$shadowEl","readonly","textareaResizableShadow","resizeTextarea","textareaEl","$textareaEl","styleValue","currentHeight","clientHeight","initialHeight","$itemInputEl","$inputWrapEl","setReadonly","f7ValidateReadonly","readOnly","validity","validationMessage","errorMessage","valid","$errorEl","validateInputs","checkEmptyState","hasAttribute","scrollIntoView","centered","$scrollableEl","contentHeight","contentScrollTop","contentPaddingTop","contentPaddingBottom","contentOffsetTop","inputOffsetTop","centeredPosition","previousValue","isContentEditable","scrollIntoViewOnFocus","scrollIntoViewDuration","scrollIntoViewCentered","scrollIntoViewAlways","itemInputEl","Toggle","f7Toggle","toggleWidth","touchStartChecked","changed","handleInputChange","toggleEl","Range","dual","step","draggableBar","vertical","verticalReversed","formatLabel","scaleSteps","scaleSubSteps","formatScaleLabel","limitKnobPosition","f7Range","valueLeft","valueRight","_range$params","$barEl","$barActiveEl","knobHTML","knobs","$knobEl","$scaleEl","labels","renderScale","rangeOffset","rangeOffsetLeft","rangeOffsetTop","$touchedKnobEl","dualValueIndex","valueChangedByTouch","targetTouchIdentifier","parentModals","parentPanel","parentPage","onTouchChange","identifier","rangeHeight","rangeWidth","newValue","leftValue","rightValue","touchEnded","layout","knobHeight","knobWidth","knobSize","rangeSize","positionProperty","knobIndex","startPos","realStartPos","byTouchMove","valueChanged","oldValue","newValues","valueIndex","labelEl","scaleEl","scaleStepValue","subStepEl","subIndex","subStep","subProgress","rangeEl","Stepper","stepper","valueEl","formatValue","watchInput","autorepeat","autorepeatDynamic","wraps","manualInputMode","decimalPoint","buttonsEndInputMode","$valueEl","f7Stepper","$buttonPlusEl","$buttonMinusEl","_stepper$params","buttonPlusEl","buttonMinusEl","typeModeChanged","preventButtonClick","intervalId","autorepeatAction","autorepeatInAction","manualInput","dynamicRepeat","progressions","startsIn","progressionStep","repeatEvery","clearInterval","setInterval","onMinusClick","endTypeMode","decrement","onPlusClick","increment","onInputClick","onInputKey","onInputBlur","onInput","typeValue","sentByF7Stepper","withWraps","formattedValue","noBlur","inputTxt","powVal","stepperEl","defaultDiacriticsRemovalap","letters","diacriticsMap","SmartSelect","ss","smartSelect","f7SmartSelect","$selectEl","setValueText","inputType","selectId","onChange","clearCache","optionEl","displayAs","optionText","maxLength","checkMaxLength","optEl","formatValueTextContent","closeOnSelect","inputName","selectName","attachInputsEvents","detachInputsEvents","valueFormatted","formatValueText","valueArray","$optionEl","previousGroupEl","optionData","optionImage","optionIcon","optionIconIos","optionIconMd","optionInputIconPosition","inputIconPosition","optionHasMedia","optionColor","optionClassName","optionClass","optionGroupEl","optionGroupLabel","optionIsLabel","groupLabel","isLabel","groupEl","image","iconIos","iconMd","hasMedia","checkbox","radio","renderSearchbar","spellcheck","searchbarSpellcheck","placeholder","searchbarPlaceholder","searchbarDisableButton","searchbarDisableText","iconValue","ssValue","hasIcon","iconContent","iconClass","getIconClass","_checked","renderItems","itemsHtml","renderPage","pageTitle","$itemTitleEl","navbarColorTheme","pageBackLinkText","searchbar","formColorTheme","renderPopup","popupTabletFullscreen","popupCloseLinkText","renderSheet","toolbarColorTheme","sheetCloseLinkText","selectedIndex","scrollToItem","$selectedItemEl","openedIn","virtualListHeight","removeDiacritics","scrollToSelectedItem","$searchbarEl","appendSearchbarNotFound","$notFoundEl","searchbarParams","searchContainer","searchIn","getItemsData","pageHtml","pageBeforeOut","pageAfterOut","popupParams","popupPush","popupSwipeToClose","popupOpen","popupOpened","popupClose","popupClosed","routableModals","sheetParams","sheetBackdrop","sheetPush","sheetSwipeToClose","sheetOpen","sheetOpened","sheetClose","sheetClosed","popoverParams","popoverOpen","popoverOpened","popoverClose","popoverClosed","smartSelectEl","Calendar","calendar","isHorizontal","inline","allowTouchMove","hasTimePicker","timePicker","rangePicker","dayFormatter","Intl","DateTimeFormat","day","monthFormatter","yearFormatter","year","timeSelectorFormatter","timePickerFormat","timeFormatCheckDate","is12HoursFormat","_calendar$params","monthNames","monthNamesShort","dayNames","dayNamesShort","_calendar$getIntlName","getIntlNames","monthNamesIntl","monthNamesShortIntl","dayNamesIntl","dayNamesShortIntl","onInputFocus","onInputClear","onHtmlClick","isPopover","closing","monthPickerPopover","yearPickerPopover","timePickerPopover","attachInputEvents","inputReadOnly","detachInputEvents","attachHtmlEvents","detachHtmlEvents","attachCalendarEvents","wrapperWidth","wrapperHeight","allowItemClick","$wrapperEl","monthsTranslate","resetMonth","nextMonth","prevMonth","handleDayClick","$dayEl","dateYear","dateMonth","dateDay","valueToAdd","setHours","getHours","getMinutes","addValue","onNextMonthClick","onPrevMonthClick","onNextYearClick","nextYear","onPrevYearClick","prevYear","onMonthSelectorClick","openMonthPicker","onYearSelectorClick","openYearPicker","onTimeSelectorClick","openTimePicker","monthPicker","yearPicker","touchMove","detachCalendarEvents","yearStarted","yearEnded","formatterMonthNames","formatterMonthNamesShort","formatterDayNames","weekday","formatterDayNamesShort","setMonth","currentYear","weekDay","getDay","getFullYear","getMonth","getDate","normalizeDate","month1","_calendar$params2","dateFormat","twoDigits","yyyy","yy","mm","MM","DD","hours","minutes","seconds","getSeconds","hours12","HH","regexp","formatDate","_calendar$params3","rangePickerMinDays","rangePickerMaxDays","inValuesIndex","updateValue","sort","equal","onlyHeader","valueDate","leftDate","rightDate","timePickerPlaceholder","header","dir","currentLocaleMonth","currentLocaleYear","$months","currentMonth","currentDate","prevMonthHtml","renderMonth","currentMonthHtml","nextMonthHtml","setMonthsTranslate","monthEl","updateCurrentMonthYear","currentIndex","rebuildBoth","prevMonthTranslate","currentMonthTranslate","nextMonthTranslate","nextDateTime","transitionEndCallback","maxDate","onMonthChangeStart","onMonthChangeEnd","prevDateTime","minDate","targetDate","newMonthHTML","monthTranslate","wrapperTranslate","setYearMonth","dayDate","renderMonths","localeMonth","localeYear","hasEvents","currentValues","today","daysInPrevMonth","daysInMonth","minDayNumber","firstDay","monthHtml","dayIndex","firstDayOfMonthIndex","rowHtml","dayNumber","weekDayIndex","weekendDays","eventsHtml","dateInRange","eventDots","ev","rangesClasses","dayYear","dayMonth","dayNumberDisplay","renderWeekHeader","weekDaysHtml","dayName","renderMonthSelector","renderYearSelector","timeString","timePickerLabel","renderHeader","headerPlaceholder","renderFooter","toolbarCloseText","renderToolbar","monthSelector","yearSelector","_calendar$params4","footer","weekHeader","renderTimeSelector","_calendar$params5","_calendar$params6","_calendar$params7","renderCustomModal","renderInline","closeMonthPicker","monthPickerInstance","displayValues","picker","monthPickerToolbar","rotateEffect","monthPickerCloseText","diffIndex","closeYearPicker","yearPickerInstance","yearMin","yearPickerMin","yearMax","yearPickerMax","years","yearPickerToolbar","yearPickerCloseText","hoursArr","minutesArr","hoursMax","closeTimePicker","timePickerInstance","timePickerToolbar","timePickerCloseText","divider","timePickerValue","period","opening","normalizeValues","required","f7Calendar","scrollToInput","initInput","hour","minute","pickerColumn","colEl","updateItems","colHeight","$colEl","colIndex","$itemsEl","replaceValues","renderColumn","hadPadding","valueCallbacks","newActiveIndex","newScrollTop","previousActiveIndex","selectedItem","$itemEl","itemsFit","displayValue","freeMode","Picker","resizeCols","needsOriginFix","htmlTouchStartTarget","onHtmlTouchStart","attachResizeEvent","detachResizeEvent","forceValues","column","newDisplayValue","noDividerColumns","onlyItems","columnHtml","columnItemsHtml","colClasses","textAlign","_picker$params","_picker$params2","_picker$params3","initColumn","f7Picker","InfiniteScroll","virtualListContainer","onTop","scrollHandler","infiniteScroll","f7InfiniteScrollHandler","$isEls","PullToRefresh","ptr","$preloaderEl","touchId","isMaterial","isIos","$transitionTarget","onTranstionEnd","refresh","mousewheel","wasScrolled","triggerDistance","dynamicTriggerDistance","pullStarted","maxScrollTop","mousewheelTimeout","mousewheelMoved","useTranslate","forceUseTranslate","hasNavbar","pageNavbarEl","$pageNavbarEl","isTransparent","setPreloaderProgress","$bars","perBarProgress","barEl","barIndex","barProgress","unsetPreloaderProgress","targetIsScrollable","$ptrWatchScrollable","ptrScrollableEl","mousewheelAllow","mousewheelTranslate","handleMouseWheelRelease","handleMouseWheel","f7PullToRefresh","$ptrEls","DataTable","table","f7DataTable","handleChange","sentByF7DataTable","columnIndex","checkedRows","totalRows","$headCheckboxEl","checkSelectedHeader","handleSortableClick","newSort","$cellEl","isActive","currentSort","collapsible","$headerEl","$headerSelectedEl","elIndex","collapsibleTitle","checkedItems","setCollapsibleLabels","dataTable","tableEl","Fab","morphOpen","fabEl","$fabEl","borderRadius","fab","f7FabMorphData","diffX","diffY","f7FabMorphResizeHandler","diffXNew","diffYNew","scaleXNew","scaleYNew","morphClose","morphData","$buttonsEl","Searchbar","_FrameworkClass","inputEvents","disableButton","disableButtonEl","searchItem","searchGroup","searchGroupTitle","ignore","foundEl","notFoundEl","hideOnEnableEl","hideOnSearchEl","customSearch","hideGroupTitles","hideGroups","disableOnBackdropClick","expandable","f7Searchbar","$foundEl","$hideOnEnableEl","$hideOnSearchEl","$searchContainer","$disableButtonEl","preventSubmit","onInputChange","isVirtualList","disableOnClick","onPageBeforeOut","onPageBeforeIn","disableButtonHasMargin","previousQuery","setFocus","backdropShow","setDisableButtonMargin","needsFocus","titleLargeHeight","backdropHide","internal","vlQuery","foundItems","resetFilter","compareWithText","$searchIn","searchInEl","itemText","wordsMatch","titleEl","$nextElements","$nextEl","$groupEl","filterItems","FrameworkClass","searchbarEl","_extends","Messages","autoLayout","messages","newMessagesFirst","scrollMessages","scrollMessagesOnEdge","firstMessageRule","lastMessageRule","tailMessageRule","sameNameMessageRule","sameHeaderMessageRule","sameFooterMessageRule","sameAvatarMessageRule","customClassMessageRule","renderMessage","f7Messages","messageEl","$messageEl","textHeader","textFooter","imageSrc","typing","avatar","getMessageData","messageToRender","isTyping","messagesToRender","_m$params","_m$params2","_m$params3","_m$params4","_m$params5","_m$params6","_m$params7","_m$params8","getMessagesData","previousMessage","nextMessage","isFirstMessage","isLastMessage","isTailMessage","isSameNameMessage","isSameHeaderMessage","isSameFooterMessage","isSameAvatarMessage","customMessageClasses","isCustomClassMessage","customClass","messageToRemove","messagesToRemove","messagesToRemoveEls","messageToRemoveIndex","removeMessage","messageToAdd","addMessages","scrollHeightBefore","heightBefore","scrollBefore","scrollData","messagesToAdd","_m$setScrollData","setScrollData","messagesHTML","typingMessage","$messagesEls","scrollWithEdgeCheck","addMessage","typingMessageIndex","typingFound","$typingMessageEl","_m$scrollData","onEdge","currentScroll","renderMessages","messagesEl","Messagebar","messagebar","bottomOffset","attachments","renderAttachments","renderAttachment","resizePage","f7Messagebar","$areaEl","$attachmentsEl","$sheetEl","onAppResize","onSubmit","onAttachmentClick","onTextareaChange","onTextareaFocus","sheetHide","onTextareaBlur","areaEl","attachmentsEl","attachmentsVisible","sheetEl","sheetVisible","elHeight","currentPaddingBottom","requiredPaddingBottom","currentPaddingTop","pageOffsetHeight","scrollOnBottom","attachmentsCreate","attachmentsHide","attachmentsShow","attachment","sheetCreate","sheetShow","messagebarEl","currentStyle","noExtend","HTMLElement","__swiper__","setCSSProperty","animateCSSModeScroll","targetPosition","startPosition","speed","wrapperEl","scrollSnapType","cssModeFrameID","isOutOfBound","currentPosition","getSlideTransformEl","slideEl","shadowRoot","elementChildren","elementOffset","elementStyle","elementIndex","elementParents","parentElement","elementTransitionEnd","elementOuterSize","deviceCached","browser","smoothScroll","getBrowser","needPerspectiveFix","major","minor","isWebView","calcBrowser","eventsEmitter","__emitterProxy","onAny","eventsAnyListeners","offAny","processLazyPreloader","imageEl","isElement","slideClass","lazyEl","lazyPreloaderClass","unlazy","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","rows","activeColumn","preloadColumns","slideIndexLastInView","rewind","loop","realIndex","updateSize","clientWidth","isVertical","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","slidesEl","swiperSize","rtlTranslate","wrongRTL","isVirtual","virtual","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","shouldResetSlideSize","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","boxSizing","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","minusOffset","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","updateSlidesClasses","getFilteredSlide","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","nextSlide","elementNextAll","prevSlide","elementPrevAll","emitSlidesClasses","updateActiveIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","runCallbacksOnInit","updateClickedSlide","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","setTranslate","byController","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","preventInteractionOnTransition","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","transitionDelay","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","perGroup","slidesPerGroupAuto","loopPreventsSliding","loopFix","slidePrev","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","lastIndex","slideReset","slideToClosest","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","slideRealIndex","activeSlideIndex","byMousewheel","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","swiperLoopMoveDOM","recalcSlides","currentSlideTranslate","touchEventsData","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","grabCursor","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","__preventObserver__","cursor","unsetGrabCursor","evCache","originalEvent","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","currentX","currentY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","startMoving","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","touchStartPreventDefault","touchStartForcePreventDefault","pointerIndex","findIndex","cachedEv","targetTouch","preventedByNestedSwiper","prevX","prevY","touchReleaseOnEdges","touchAngle","touchMoveStopPropagation","nested","previousX","previousY","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","allowMomentumBounce","loopFixed","disableParentSwiper","resistanceRatio","resistance","followFinger","touchEndTime","pathTree","lastClickTime","currentPos","stopIndex","rewindFirstIndex","rewindLastIndex","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","preventClicks","preventClicksPropagation","onScroll","onLoad","dummyEventAttached","dummyEventListener","domMethod","swiperMethod","updateOnWindowResize","events$1","isGridEnabled","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","points","point","minRatio","addClasses","suffixes","resultClasses","prepareClasses","removeClasses","checkOverflow$1","wasLocked","lastSlideRightEdge","resizeObserver","createElements","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","auto","prototypes","extendedDefaults","Swiper","swipers","newParams","__modules__","extendParams","swiperParams","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","getSlideClasses","updates","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mounted","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","deleteInstance","cleanStyles","extendDefaults","newDefaults","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","observer","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","eventTriggered","getSlide","createShadow","shadowClass","shadowContainer","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","renderSlide","renderExternalUpdate","addSlidesBefore","addSlidesAfter","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","cachedEl","cachedElIndex","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","HORIZONTAL_AXIS","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","sticky","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","releaseScroll","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","makeElementsArray","getEl","onPrevClick","onNextClick","initButton","destroyButton","pagination","clickable","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","newSlideIndex","currentSlideIndex","indexBeforeLoopFix","total","firstIndex","midIndex","classesToRemove","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","totalEl","progressbarDirection","progressEl","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","dragTimeout","scrollbar","dragEl","newSize","newPos","getPointerPosition","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","rotate","currentOpacity","_swiper","parallaxEl","parallaxDuration","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","minX","minY","maxX","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","x2","eventWithinSlide","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","touchAction","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","LinearSpline","binarySearch","maxIndex","minIndex","guess","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlledTranslate","setControlledTranslate","getInterpolateFunction","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","clicked","liveRegion","notify","notification","makeElFocusable","makeElNotFocusable","addElRole","addElRoleDescription","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","hasPagination","hasClickablePagination","initNavEl","wrapperId","addElControls","handlePointerDown","handlePointerUp","handleFocus","sourceCapabilities","firesTouchEvents","live","addElId","addElLive","updateNavigation","updatePagination","keepQuery","slugify","getPathValues","urlOverride","pathArray","setHistory","currentState","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","pause","onVisibilityChange","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","velocityEvent","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","newSlideOrderIndex","slideIndexInGroup","columnsInGroup","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","cubeShadowEl","wrapperRotate","slideAngle","tz","shadowAngle","scale1","scale2","zFactor","flipEffect","limitRotation","rotateY","rotateX","coverflowEffect","stretch","depth","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","paramsList","needsNavigation","needsPagination","needsScrollbar","uniqueClasses","unique","attrToProp","updateSwiper","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","nextButtonSvg","prevButtonSvg","modulesParamsList","getParams","propValue","localParamsList","allowedParams","attrsList","moduleParam","mParam","parentObjName","subObjName","SwiperCSS","ClassToExtend","arrowSvg","addStyle","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","SwiperContainer","super","attachShadow","cssStyles","injectStyles","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlotChildren","slotEl","localStyles","linkEl","eventsPrefix","connectedCallback","disconnectedCallback","updateSwiperOnPropChange","attributeChangedCallback","prevValue","observedAttributes","SwiperSlide","lazyDiv","initSwiper","$swiperEl","isTabs","isRoutableTabs","f7SwiperParams","tabRouteUrl","findTabRouteUrl","SwiperElementRegisterParams","customElements","pageMounted","PhotoBrowser","photoBrowser","exposed","started","timeStart","virtualSlides","photos","$activeSlideEl","$previousSlideEl","$totalEl","captions","captionIndex","$captionsContainerEl","previousSlideVideo","renderNavbar","iconsColor","renderNavbarCount","navbarShowCount","isPopup","navbarOfText","popupCloseLinkIcon","xmlns","viewBox","thumb","renderThumb","renderCaption","photo","renderObject","renderLazyPhoto","loading","renderPhoto","renderThumbs","captionsTheme","renderStandalone","f7PhotoBrowser","$swiperContainerEl","$swiperWrapperEl","preventThumbsSlide","preventMainSlide","hasThumbs","exposition","expositionToggle","doubleClick","slideChange","onSlideChange","slideChangeTransitionStart","slideChangeTransitionEnd","touchStart","touchMoveOpposite","touchEnd","expositionHideCaptions","openStandalone","openPage","openPopup","Notification","notificationHeight","_notification$params","titleRightText","subtitle","closeOnClick","notificationHtml","closeOnTimeout","notificationInstance","_notification$params2","Autocomplete","$openerEl","autocomplete","openerEl","f7Autocomplete","uniqueId","$dropdownEl","firstValue","firstItem","itemsHTML","limit","highlightMatches","itemValue","valueProperty","textProperty","dropdownPlaceholderText","typeahead","setSelectionRange","onPageInputChange","aValue","updateValues","onOpenerClick","positionDropdown","$selectedItemLabel","$newItem","$selectedItem","onDropdownClick","clickedItem","updateInputValueOnSelect","attachDropdownEvents","detachDropdownEvents","attachPageEvents","detachPageEvents","$listParent","inputOffset","inputOffsetWidth","inputOffsetHeight","paddingValue","listOffset","listOffsetLeft","inputOffsetLeft","paddingProp","valuesHTML","preloaderColor","inPopup","navbarLeft","renderPreloader","navbarRight","renderDropdown","notFoundText","requestSourceOnOpen","dropdownContainerEl","autocompleteEl","Tooltip","tooltip","_tooltip$params","delegated","f7Tooltip","handleClickOut","handleTransitionEnd","hasContainerEl","tooltipOffset","boundaries","clientRect","aroundEl","$aroundEl","_tooltip$params2","_self$params","sliderLabel","sliderValue","sliderValueEditable","alphaLabelText","alphaRangeSlider","destroyAlphaSliderEvents","_self$params2","hexLabel","hexLabelText","hexValueEditable","destroyHexEvents","hueLabelText","saturationLabelText","brightnessLabelText","hueRangeSlider","saturationRangeSlider","brightnessRangeSlider","destroyHsbSlidersEvents","hslCurrent","hslLeft","hslRight","brightness","handlePaletteClick","destroyPaletteEvents","handleInitialColorClick","_self$initialValue","destroyInitialCurrentEvents","barLabel","barValue","barValueEditable","redLabelText","greenLabelText","blueLabelText","redBar","greenBar","blueBar","destroyRgbBarsEvents","redRangeSlider","greenRangeSlider","blueRangeSlider","destroyRgbSlidersEvents","specterRect","specterIsTouched","specterHandleIsTouched","setSBFromSpecterCoords","destroySpectrumEvents","specterWidth","specterHeight","setHSFromSpecterCoords","hslBright","circles","svgWheelCircles","wheelRect","wheelIsTouched","wheelHandleIsTouched","setHueFromWheelCoords","wheelCenterX","wheelCenterY","angleDeg","wheel","destroyWheelEvents","wheelSize","wheelHalfSize","angleRad","handleHalfSize","ColorPicker","colorPicker","onTargetClick","$clickTargetEl","moduleAlphaSlider","moduleCurrentColor","moduleHex","moduleHsbSliders","moduleHueSlider","moduleBrightnessSlider","modulePalette","moduleInitialCurrentColors","moduleRgbBars","moduleRgbSliders","moduleSbSpectrum","moduleHsSpectrum","moduleWheel","attachTargetEvents","detachTargetEvents","centerModules","_$pageContentEl$","openInPhone","updateModules","_ref$alpha","hsla","needChangeEvent","subV","_ref3$","normalizeHsValues","_ref5","_ref5$","_value$hsb","_value$hsb$","_hsl2","fireEvents","targetElSetBackgroundColor","navbarTitleText","navbarBackLinkText","navbarCloseText","groupedModules","renderPicker","_self$params3","toolbarSheet","_self$params4","toolbarPopover","_self$params5","navbarPopup","_self$params6","getModalType","f7ColorPicker","colorPickerContent","sliderValueEdiable","barValueEdiable","Treeview","f7TreeviewChildrenLoaded","wasOpened","treeview","$treeviewItemEl","textEditorButtonsMap","bold","italic","underline","strikeThrough","orderedList","unorderedList","paragraph","h1","h2","h3","alignLeft","alignCenter","alignRight","alignJustify","subscript","superscript","indent","outdent","TextEditor","textEditor","f7TextEditor","onButtonClick","onFocus","onBlur","onPaste","onSelectionChange","closeKeyboardToolbar","$keyboardToolbarEl","insertPlaceholder","$selectedLinks","currentSelection","selectedNodes","selectedNodesLinks","$selectedNodes","linkNode","selection","selectNodeContents","execCommand","currentRange","getSelectionRange","linkUrlText","imageUrlText","imageUrl","selectionIsInContent","selectionIsInPopover","closePopover","isCollapsed","getRangeAt","openPopover","openKeyboardToolbar","clearFormattingOnPaste","getData","removePlaceholder","buttonData","customButtons","$anchorNode","insertImage","createLink","sel","select","renderButton","dividers","renderButtons","popoverTimeout","createToolbar","createPopover","createKeyboardToolbar","editorEl","Breadcrumbs","breadrumbs","DeviceModule","SupportModule","UtilsModule","ResizeModule","TouchModule","ClicksModule","RouterModule","HistoryModule","ServiceWorkerModule","StoreModule","Subnavbar","Tabs","Card","noUndefinedProps","isStringProp","getSlots","slots","addChildToSlot","slot","slotName","getExtraAttrs","extraAttrs","f7events","routerIdCounter","routerComponentIdCounter","getRouterId","getComponentId","f7routers","modals","setTheme","cleanup","f7init","f7Params","f7ready","colorClasses","textColor","bgColor","borderColor","rippleColor","routerAttrs","dataAnimate","dataReloadDetail","routeTabId","routerClasses","linkBack","external","preventRouter","actionsAttrs","searchbarEnable","searchbarDisable","searchbarClear","searchbarToggle","panelToggle","actionsOpen","actionsClose","loginScreenOpen","loginScreenClose","sortableEnable","sortableDisable","sortableToggle","cardOpen","cardClose","actionsClasses","cardPreventOpen","modalStateClasses","isOpened","isClosing","useIsomorphicLayoutEffect","watchProp","valueRef","f7Popup","tabletFullscreen","_props$swipeToClose","elRef","onSwipeStart","onSwipeMove","onSwipeEnd","onSwipeClose","modalEvents","onDestroy","onMount","React","useTab","onTabShow","onTabHide","useAsyncComponent","RouterContext","initialPage","initialRoute","_props$init","tabActive","_props$browserHistory","childrenArray","initialPageComponent","restChildren","shouldInitRouter","routerData","onViewInit","initialComponent","initialComponentData","routeProps","isAsync","f7route","f7router","getRouterInitialComponent","_useState2","pages","setPages","onSwipeBackMove","onSwipeBackBeforeChange","onSwipeBackAfterChange","onSwipeBackBeforeReset","onSwipeBackAfterReset","newPages","PageComponent","pageId","pageProps","f7LoginScreen","loginScreenParams","f7Sheet","onBreakpoint","onStepProgress","onStepOpen","onStepClose","fixedList","staticList","fixedTags","slotsDefault","isFixedTag","innerEl","positionComputed","fixed","f7Popover","reveal","cover","floating","_props$backdrop","_props$swipeActiveAre","_props$swipeThreshold","isBreakpoint","onBackdropClick","onSwipe","onSwipeOpen","onCollapsedBreakpoint","disableResizable","sideComputed","effectComputed","getChildrenArray","routerOpenIn","viewRouter","resolved","childrenBefore","onDidUpdate","componentRouterData","childrenAfter","hasSameChildren","pageComponentFound","tabRouter","tabData","tabContentEl","setTabContent","_temp2","modalsRouter","modalData","setModals","modalDataToRemove","Framework7React","installed","_params","paramsTheme","componentsRouter","_objectWithoutProperties","excluded","sourceKeys","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","RoutableModals","newModals","ModalComponent","modalId","modalProps","App","_excluded","useTheme","preloaderStyle","sizeComputed","cx","cy","PageContent","ptrDistance","_props$ptrPreloader","ptrPreloader","ptrBottom","ptrMousewheel","infiniteTop","infiniteDistance","_props$infinitePreloa","infinitePreloader","hideBarsOnScroll","hideNavbarOnScroll","hideToolbarOnScroll","messagesContent","onPtrPullStart","onPtrPullMove","onPtrPullEnd","onPtrRefresh","onPtrDone","onInfinite","ptrEl","infiniteEl","Page","withSubnavbar","withNavbarLarge","navbarLarge","noNavbar","noToolbar","_props$pageContent","noSwipeback","hasSubnavbar","hasNavbarLarge","hasNavbarLargeCollapsed","hasCardExpandableOpened","routerPositionClass","routerPageRole","routerPageRoleDetailRoot","routerPageMasterStack","onPageMounted","onPageInit","onPageReinit","onPageAfterOut","onPageAfterIn","onPageBeforeRemove","onPageBeforeUnmount","onPagePosition","onPageRole","rolesData","onPageMasterStack","onPageMasterUnstack","onPageNavbarLargeCollapsed","onPageNavbarLargeExpanded","onCardOpened","onCardClose","onPageTabShow","onPageTabHide","hasSubnavbarComputed","hasNavbarLargeComputed","slotsStatic","slotsFixed","hasMessages","large","forceSubnavbar","forceNavbarLarge","useTooltip","tooltipTrigger","Icon","material","fontSize","themeIcon","getClasses","Badge","useIcon","_props","iconMaterial","iconF7","iconColor","iconSize","iconBadge","badgeColor","iconBadgeColor","useRouteProps","TabbarContext","tabbarHasIcons","useSmartSelect","smartSelectParams","ssParams","Link","badgeEl","noLinkClass","tabLink","tabLinkActive","tabbarLabel","iconOnly","badge","_props$href","tabbarContext","isTabbarIcons","iconEl","hrefComputed","NavLeft","backLink","backLinkUrl","backLinkForce","backLinkShowText","needBackLinkText","NavTitle","subtitleEl","NavRight","_props$sliding","largeTransparent","transparent","hidden","_props$outline","titleLarge","innerClass","innerClassName","largeCollapsed","routerNavbarRole","routerNavbarRoleDetailRoot","routerNavbarMasterStack","transparentVisible","onHide","onShow","onExpand","onCollapse","onNavbarTransparentShow","onNavbarTransparentHide","onNavbarPosition","onNavbarRole","onNavbarMasterStack","onNavbarMasterUnstack","leftEl","rightEl","titleLargeEl","addLeftTitleClass","addCenterTitleClass","isTransparentVisible","onBackClick","largeTitle","_props$inner","inner","die","mockGlobal","getGlobal","getDescriptor","objectPrototype","EMPTY_ARRAY","freeze","EMPTY_OBJECT","hasProxy","plainObjectString","assertProxies","func","invoked","noop","isStringish","isPlainObject","protoConstructor","isGenerator","addHiddenProp","addHiddenFinalProp","createInstanceofPredicate","theClass","isES6Map","thing","isES6Set","hasGetOwnPropertySymbols","ownKeys","getOwnPropertyNames","hasProp","getOwnPropertyDescriptors","hint","prim","_toPrimitive","_inheritsLoose","_createForOfIteratorHelperLoose","allowArrayLike","it","storedAnnotationsSymbol","createDecoratorAnnotation","annotation","is20223Decorator","decorate_20223_","storeAnnotation","annotationType_","OVERRIDE","isOverride","$mobx","Atom","name_","isPendingUnobservation_","isBeingObserved_","observers_","diffValue_","lastAccessedBy_","lowestObserverState_","IDerivationState_","NOT_TRACKING_","onBOL","onBUOL","_proto","onBO","onBUO","reportObserved","reportChanged","startBatch","propagateChanged","endBatch","isAtom","createAtom","onBecomeObservedHandler","onBecomeUnobservedHandler","arg3","atom","interceptHook","ON_BECOME_OBSERVED","onBecomeUnobserved","comparer","identity","structural","deepEqual","shallow","deepEnhancer","isObservable","isAction","isFlow","flow","autoAction","referenceEnhancer","createActionAnnotation","options_","make_","make_$1","extend_","extend_$1","decorate_20223_$1","adm","_this$options_","bound","target_","actionDescriptor","createActionDescriptor","proxyTrap","defineProperty_","mthd","kind","addInitializer","ann","_this$options_2","_ann$options_$name","_ann$options_","_ann$options_$autoAct","_ann$options_2","createAction","isMobxAction","safeDescriptors","_annotation$options_","_annotation$options_$","_annotation$options_2","_annotation$options_$2","_annotation$options_3","_annotation$options_4","_adm$proxy_2","globalState","_adm$proxy_","proxy_","isPlainObject_","createFlowAnnotation","make_$2","extend_$2","decorate_20223_$2","flowDescriptor","createFlowDescriptor","_this$options_3","isMobXFlow","createComputedAnnotation","make_$3","extend_$3","decorate_20223_$3","assertComputedDescriptor","defineComputedProperty_","asObservableObject","values_","ComputedValue","getObservablePropValue_","createObservableAnnotation","make_$4","extend_$4","decorate_20223_$4","_this$options_$enhanc","assertObservableDescriptor","defineObservableProperty_","enhancer","initializedObjects","initializeObservable","_ann$options_$enhance","observable","ObservableValue","setObservablePropValue_","AUTO","autoAnnotation","createAutoAnnotation","make_$5","extend_$5","decorate_20223_$5","_this$options_4","computed","autoBind","observableAnnotation","_this$options_5","_this$options_6","defaultCreateObservableOptions","defaultDecorator","proxy","asCreateObservableOptions","observableRefAnnotation","observableShallowAnnotation","isObservableObject","isObservableArray","isObservableMap","isObservableSet","observableStructAnnotation","observableDecoratorAnnotation","getEnhancerFromOptions","createObservable","arg2","_getDescriptor$config","_getDescriptor","observableFactories","equals","initialValues","useProxies","createLegacyArray","createObservableArray","ObservableMap","ObservableSet","decorators","initObservable","extendObservable","_target$$mobx","_target$$mobx$proxy_","objectProxyTraps","asDynamicObservableObject","struct","COMPUTED","computedAnnotation","computedStructAnnotation","arg1","_Symbol$toPrimitive","currentActionId","nextActionId","isFunctionNameConfigurable","tmpNameDescriptor","executeAction","canRunAsDerivation","runInfo","notifySpy_","startTime_","prevDerivation_","trackingDerivation","runAsAction","prevAllowStateChanges_","allowStateChanges","untrackedStart","allowStateChangesStart","prevAllowStateReads_","allowStateReadsStart","runAsAction_","actionId_","parentActionId_","_startAction","error_","suppressReactionErrors","allowStateChangesEnd","allowStateReadsEnd","untrackedEnd","_endAction","_Symbol$toPrimitive$1","_Atom","notifySpy","hasUnreportedChange_","interceptors_","changeListeners_","value_","dehancer","dehanceValue","prepareNewValue_","UNCHANGED","setNewValue_","checkIfStateModificationsAreAllowed","hasInterceptors","interceptChange","UPDATE","hasListeners","notifyListeners","intercept_","registerInterceptor","observe_","fireImmediately","observableKind","debugObjectName","registerListener","toJSON","TraceMode","dependenciesState_","observing_","newObserving_","runId_","UP_TO_DATE_","unboundDepsCount_","CaughtException","triggeredBy_","isComputing_","isRunningSetter_","derivation","setter_","isTracing_","NONE","scope_","equals_","requiresReaction_","keepAlive_","compareStructural","requiresReaction","onBecomeStale_","POSSIBLY_STALE_","propagateMaybeChanged","inBatch","shouldCompute","prevTrackingContext","trackingContext","trackAndCompute","STALE_","propagateChangeConfirmed","warnAboutUntrackedRead_","computeValue_","isCaughtException","wasSuspended","trackDerivedFunction","disableErrorBoundaries","suspend_","clearObserving","firstTime","autorun","prevU","isComputedValue","prevAllowStateReads","prevUntracked","obs","changeDependenciesStateTo0","runId","prevTracking","prevObserving","observing","lowestNewObservingDerivationState","i0","_dep","removeObserver","_dep2","addObserver","bindDependencies","untracked","allowStateReads","MobXGlobals","mobxGuid","pendingUnobservations","pendingReactions","isRunningReactions","enforceActions","spyListeners","globalReactionErrorHandlers","computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","verifyProxies","canMergeGlobalState","isolateCalled","global","__mobxInstanceCount","__mobxGlobals","queueForUnobservation","runReactions","list","Reaction","onInvalidate_","errorHandler_","requiresObservable_","isDisposed_","isScheduled_","isTrackPending_","isRunning_","schedule_","isScheduled","runReaction_","reportExceptionInDerivation_","prevReaction","dispose","getDisposer_","abortSignal","_this2","trace","enterBreakPoint","MAX_REACTION_ITERATIONS","reactionScheduler","runReactionsHelper","allReactions","iterations","remainingReactions","isReaction","ACTION","AUTOACTION","DEFAULT_ACTION_NAME","actionAnnotation","actionBoundAnnotation","autoActionAnnotation","autoActionBoundAnnotation","createActionFactory","_opts$name","_opts","_opts2","_opts2$signal","_opts3","reaction","scheduler","reactionRunner","requiresObservable","createSchedulerFromOptions","aborted","ON_BECOME_UNOBSERVED","getAtom","listenersKey","hookListeners","NEVER","ALWAYS","OBSERVED","configure","isolateGlobalState","baseScheduler","properties","annotations","descriptors","getDependencyTree","nodeToDependencyTree","generatorId","FlowCancellationError","flowAnnotation","flowBoundAnnotation","generator","rejector","gen","pendingPromise","stepId","onFulfilled","ret","onRejected","cancelPromise","_res","yieldedPromise","_isObservable","transaction","thisArg","getAdm","has_","get_","_getAdm$set_","set_","deleteProperty","_getAdm$delete_","delete_","_getAdm$definePropert","ownKeys_","preventExtensions","interceptable","interceptors","listenable","makeObservable","collectStoredAnnotations","SPLICE","arrayTraps","getArrayLength_","arrayExtensions","setArrayLength_","ObservableArrayAdministration","owned_","legacyMode_","atom_","enhancer_","lastKnownLength_","oldV","dehanceValue_","dehanceValues_","added","addedCount","removed","removedCount","newLength","currentLength","newItems","spliceWithArray_","updateArrayLength_","oldLength","reserveArrayBuffer","deleteCount","lengthDelta","spliceItemsIntoValues_","notifyArraySplice_","_this$values_","oldItems","notifyArrayChildUpdate_","owned","spliceWithArray","copy","addArrayExtension","funcName","funcFactory","simpleFunc","dehancedValues","mapLikeFunc","reduceLikeFunc","_this3","accumulator","_Symbol$iterator","_Symbol$toStringTag","isObservableArrayAdministration","ObservableMapMarker","ADD","DELETE","_Symbol$iterator$1","_Symbol$toStringTag$1","data_","hasMap_","keysAtom_","entry","newEntry","hasKey","updateValue_","addValue_","_change","_this3$hasMap_$get","_this4","_this4$hasMap_$get","makeIterable","_keys$next","_keys$next2","_this5","symbols","getPlainObjectKeys","_this6","_step2","_iterator2","_this7","_step3","replacementMap","dataStructure","convertToMap","orderedData","keysReportChangedCalled","_iterator3","_step4","_iterator4","_step4$value","_value","keyExisted","_value2","iter1","iter2","next1","next2","ObservableSetMarker","callbackFn","_change2","observableValues","descriptorCache","REMOVE","ObservableObjectAdministration","defaultAnnotation_","appliedAnnotations_","pendingKeys_","assertAnnotable","_this$target_$storedA","outcome","recordAnnotationApplied","deleteOutcome","notifyPropertyAddition_","cachedDescriptor","getCachedObservablePropDescriptor","_this$pendingKeys_","_this$pendingKeys_$ge","_this$pendingKeys_2","_this$pendingKeys_2$g","keys_","_options$name","_options$defaultDecor","getAnnotationFromOptions","isObservableObjectAdministration","_adm$target_$storedAn","ctor","ENTRY_0","createArrayEntryDescriptor","safariPrototypeSetterInheritanceBug","OBSERVABLE_ARRAY_BUFFER_SIZE","StubArray","LegacyObservableArray","_StubArray","arrays","createArrayBufferItem","getDebugName","_observable","getAdministration","named","aStack","bStack","unwrap","areArrays","aCtor","bCtor","getSelf","__MOBX_DEVTOOLS_GLOBAL_HOOK__","injectMobx","spy","extras","defaultNoopBatch","printDebugValue","globalIsUsingStaticRendering","isUsingStaticRendering","TimerBasedFinalizationRegistry","finalize","maxAge","sweepTimeout","registeredAt","scheduleSweep","sweep","observerFinalizationRegistry","FinalizationRegistry","getServerSnapshot","createReaction","stateVersion","onStoreChange","useObserver","baseComponentName","admRef","adm_1","subscribe","renderResult","exception","hasSymbol","ReactForwardRefSymbol","ReactMemoSymbol","baseComponent","useForwardRef","observerComponent","hoistBlackList","observerBatching","getDefaultProps","mixins","propTypes","mobxMixins","mobxPatchedDefinition","wrapper","realMethod","locks","retVal","mx","wrapFunction","patch","mixinMethod","methodMixins","getMixins","oldDefinition","originalMethod","newDefinition","createDefinition","wrappedFunc","administrationSymbol","isMobXReactObserverSymbol","_component$administra","reactionInvalidatedBeforeMount","componentClass","createReactiveRender","originalRender","boundOriginalRender","admin","_admin$reaction2","observerSCU","nextProps","nextState","objA","objB","keysA","keysB","shallowEqual","isPrototypeOf","componentWillReact","_displayName","originalComponentDidMount","_admin$reaction","makeClassComponentObserver","MobXProviderContext","parentValue","createStoreInjector","grabStoresFn","injectNames","makeReactive","Injector","newProps","componentName","getInjectName","storeNames","baseStores","storeName","grabStoresByName","isMobile","isPhone","isTablet","initDom","$$","sailfish","phone","tablet","alreadyWarned","loadedClb","i18n","isInitialized","loadNamespaces","ns","loadLanguages","lng","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","i18nInstance","defaultOptions","bindI18n","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","initReactI18next","setDefaults","react","setI18n","ReportNamespaces","usedNamespaces","addUsedNamespaces","namespaces","getUsedNamespaces","usePrevious","alwaysNewT","language","namespace","keyPrefix","getFixedT","i18nFromProps","i18nFromContext","defaultNS","defaultNSFromContext","reportNamespaces","notReadyT","optsOrDefaultValue","retNotReady","ready","wait","i18nOptions","initializedStoreOnce","every","languages","ignoreJSONStructure","hasLoadedNamespace","precheck","loadNotPending","services","backendConnector","backend","isLanguageChangingTo","fallbackLng","lastLng","loadState","hasResourceBundle","resources","partialBundledLanguages","oldI18nextHasLoadedNamespace","memoGetT","useMemoizedT","nsMode","getT","getNewT","setT","joinedNS","previousJoinedNS","boundReset","isInitial","withTranslation","WrappedComponent","I18nextWithTranslation","forwardedRef","passDownProps","tReady","withRef","I18nextProvider","ListContext","listIsMedia","listIsSimple","listIsSortable","listIsSortableOpposite","List","inset","insetIos","insetMd","xsmallInset","xsmallInsetIos","xsmallInsetMd","smallInset","smallInsetIos","smallInsetMd","mediumInset","mediumInsetIos","mediumInsetMd","largeInset","largeInsetIos","largeInsetMd","xlargeInset","xlargeInsetIos","xlargeInsetMd","strongIos","strongMd","outlineIos","outlineMd","dividersIos","dividersMd","mediaList","sortableTapHold","sortableEnabled","sortableOpposite","accordionList","accordionOpposite","contactsList","simpleList","linksList","menuList","noChevron","chevronCenter","formStoreData","virtualListParams","onSortableEnable","onSortableDisable","onSortableSort","sortData","onSortableMove","vlParams","itemBeforeInsert","beforeClear","itemsBeforeInsert","itemsAfterInsert","slotsList","rootChildrenBeforeList","rootChildrenAfterList","ulChildren","flattenSlots","wasUlChild","ListTag","ListItemContent","afterWrapEl","afterEl","titleRowEl","mediaEl","inputIconEl","headerEl","footerEl","mediaImgEl","indeterminate","checkboxIcon","radioIcon","accordionItem","isMediaComputed","isSortableComputed","isSortableOppositeComputed","inputElRef","ItemContentTag","ListItem","mediaItem","groupTitle","swipeoutOpened","accordionItemOpened","virtualListIndex","_ref$listIsMedia","_ref$listIsSortable","_ref$listIsSortableOp","_ref$listIsSimple","linkElRef","onSwipeoutOverswipeEnter","onSwipeoutOverswipeExit","onSwipeoutDeleted","onSwipeoutDelete","onSwipeoutClosed","onSwipeoutOpen","onSwipeoutOpened","onSwipeout","onAccBeforeClose","onAccClose","onAccClosed","onAccBeforeOpen","onAccOpen","onAccOpened","itemContentEl","linkAttrs","linkClasses","liClasses","linkItemEl","onToggleChange","toggleInstance","toggleEvents","labelClasses","scrollable","topMd","topIos","bottomMd","bottomIos","toolbarEl","PageReview","useTranslation","returnObjects","isProtected","isDisableAllSettings","isReviewOnly","displayMode","canReview","textReview","noBack","textBack","Device","textTrackChanges","trackChanges","onTrackChanges","isRestrictedEdit","textDisplayMode","onDisplayMode","textReviewChange","canUseReviewPermissions","textAcceptAllChanges","onAcceptAll","textRejectAllChanges","onRejectAll","PageReviewChange","isAndroid","isLockAcceptReject","editable","isLockPrevNext","storeAppOptions","onAcceptCurrentChange","textAccept","onRejectCurrentChange","textReject","onDeleteChange","textDelete","goto","onGotoNextChange","onPrevChange","onNextChange","backgroundColor","userName","textNoChanges","PageDisplayMode","storeReview","textMarkup","textAllChangesEditing","textFinal","textAllChangesAcceptedPreview","textOriginal","textAllChangesRejectedPreview","_store","_prefix","_common_keys","_isAllowed","_storeName","keysFilter","_filter","sync","save","setItem","just","getItem","setBool","defValue","itemExists","InitReview","_Component","Notifications","asc_registerCallback","onChangeReview","EditorApi","appOptions","customization","review","LocalStorage","fileKey","asc_SetTrackRevisions","canViewReview","isEdit","asc_HaveRevisionsChanges","setCanViewReview","viewReviewMode","reviewDisplay","toLocaleLowerCase","c_oAscDisplayModeInReview","Edit","Final","Original","asc_SetDisplayModeInReview","changeDisplayMode","isShow","changeArrReview","Review","_Component2","appConfig","editorPrefix","editorType","asc_AcceptAllChanges","asc_RejectAllChanges","ReviewChange","_Component3","toLocaleString","dateStyle","timeStyle","ampm","c_paragraphLinerule","changeText","proptext","get_Value","movetype","get_MoveType","get_Type","c_oAscRevisionsChangeType","TextAdd","c_oAscRevisionsMove","NoMove","textInserted","textParaMoveTo","textImage","textShape","textChart","textEquation","TextRem","textDeleted","is_MovedDown","textParaMoveFromDown","textParaMoveFromUp","ParaAdd","textParaInserted","ParaRem","textParaDeleted","TextPr","Get_Bold","textNot","textBold","Get_Italic","textItalic","Get_Underline","textUnderline","Get_Strikeout","textStrikeout","Get_DStrikeout","textDStrikeout","Get_Caps","textCaps","Get_SmallCaps","textSmallCaps","Get_VertAlign","vertalign_SuperScript","textSuperScript","vertalign_SubScript","textSubScript","textBaseline","Get_Color","Get_Highlight","textHighlight","Get_Shd","textShd","Get_FontFamily","Get_FontSize","Get_Spacing","textSpacing","Get_Position","textPosition","Get_Lang","util","LanguageInfo","getLocalLanguageName","textFormatted","ParaPr","Get_ContextualSpacing","textContextual","textNoContextual","Get_IndLeft","textIndentLeft","Get_IndRight","textIndentRight","Get_IndFirstLine","textFirstLine","Get_Jc","textRight","textLeft","textCenter","textJustify","Get_KeepLines","textKeepLines","textNoKeepLines","Get_KeepNext","textKeepNext","textNoKeepNext","Get_PageBreakBefore","textBreakBefore","textNoBreakBefore","Get_SpacingLineRule","Get_SpacingLine","textLineSpacing","textAtLeast","textMultiple","textExact","Get_SpacingBeforeAutoSpacing","textSpacingBefore","textAuto","Get_SpacingBefore","Get_SpacingAfterAutoSpacing","textSpacingAfter","Get_SpacingAfter","Get_WidowControl","textWidow","textNoWidow","Get_Tabs","textTabs","Get_NumPr","textNum","Get_PStyle","asc_GetStyleNameById","textParaFormatted","TablePr","textTableChanged","RowsAdd","textTableRowsAdd","RowsRem","textTableRowsDel","get_DateTime","user","get_UserName","userColor","get_UserColor","MoveTo","MoveFrom","dateToLocaleTimeString","get_UserId","canEditReview","asc_GetPrevRevisionsChange","asc_GetNextRevisionsChange","asc_AcceptChanges","dataChanges","asc_RejectChanges","asc_FollowRevisionMove","arrChangeReview","getArrChangeReview","get_hex","users","getInitials","ReviewController","ReviewChangeController","_props$opened","f7Actions","ActionsGroup","ComponentName","_props$close","sliceQuote","sliced","AddCommentPopup","userInfo","stateText","refInputComment","closeAddComment","textCancel","textAddComment","onAddNewComment","textDone","AddCommentDialog","templateInitials","refContainerDialog","AddComment","CommentActions","comment","onCommentMenuClick","openActionComment","onActionsClosed","ActionsButton","textEdit","textResolve","textReopen","textAddReply","removable","textDeleteComment","ReplyActions","reply","openActionReply","textDeleteReply","EditCommentPopup","storeComments","onEditComment","_useState4","refInputEditComment","openEditComment","textEditComment","userInitials","parsedName","EditCommentDialog","_ref4","EditComment","AddReplyPopup","_ref6","onAddReply","_useState6","refInputReplyComment","openAddReply","AddReplyDialog","_ref7","AddReply","_ref8","EditReplyPopup","_ref9","onEditReply","_useState8","relInputReplyComment","openEditReply","textEditReply","EditReplyDialog","_ref10","EditReply","_ref11","pickLink","arrayComment","subStr","str_res","item1","item2","ViewComments","_ref12","onResolveComment","showComment","wsProps","isViewer","canEditComments","viewMode","canComments","comments","groupCollectionFilter","collectionComments","sortComments","typeProtection","isAvailableCommenting","c_oAscEDocProtect","TrackedChanges","Comments","_useState10","clickComment","setComment","_useState12","commentActionsOpened","_useState14","setReply","_useState16","replyActionsOpened","textComments","indexComment","Objects","quote","replies","indexReply","textNoComments","CommentList","_ref13","showComments","_useState18","setCurrentIndex","_useState20","_useState22","_useState24","onViewNextComment","ViewCommentSheet","_ref14","closeCurComments","_useState26","stateHeight","setHeight","_useState28","stateOpacity","setOpacity","_useState30","stateStartY","setStartY","_useState32","isNeedClose","setNeedClose","touchObj","dist","ViewCommentPopover","_ref15","ViewCurrentComments","getUserColor","intValue","asc_getUserColorById","userColors","storeInfo","timeZoneOffsetInMs","getTimezoneOffset","utcDateToString","ooDateToString","stringOOToLocalDate","stringUtcToLocalDate","parseUserName","CommentsController","usersStore","storeApplicationSettings","addComment","addComments","removeComment","removeComments","changeCommentData","changeShowComments","hideComments","onApiActiveSheetChanged","onFilterChange","isLiveCommenting","changeDisplayComments","changeDisplayResolved","asc_showComments","asc_hideComments","curUserId","currentUser","asc_getIdOriginal","asc_getWorksheetId","readSDKComment","uid","asc_getId","changeShowComment","changeComment","asc_getOnlyOfficeTime","asc_getTime","userId","asc_getUserId","searchUserById","asc_getUserName","asc_getText","asc_getColor","asc_getSolved","asc_getQuoteText","canEditComment","canDeleteComments","canDeleteComment","canViewComment","dateReply","repliesCount","asc_getRepliesCount","asc_getReply","ind","changeFilter","groupName","unattached","asc_getDocumentFlag","readSDKReplies","AddCommentController","getUserInfo","isOpen","setCurrentUser","commentText","documentFlag","asc_CCommentDataWord","asc_CCommentData","asc_putText","asc_putTime","asc_putOnlyOfficeTime","asc_putUserId","asc_putUserName","asc_putSolved","asc_putDocumentFlag","asc_addComment","EditCommentController","ascComment","asc_putQuoteText","asc_putGuid","guid","addReply","asc_addReply","asc_changeComment","userid","onChangeComment","replyVal","textReply","indReply","currentComment","isOpenEditComment","isOpenAddReply","isOpenEditReply","currentReply","ViewCommentsController","_Component4","closeViewCurComments","isOpenViewCurComments","isResolvedComments","asc_removeComment","textMessageDeleteComment","textOk","deleteComment","textMessageDeleteReply","deleteReply","asc_selectComment","asc_showComment","_this$props","_this$props2","allComments","storeWorksheets","ViewCommentsSheetsController","_ViewCommentsControll","_CommentsController","_ViewCommentsController","_ViewCommentsSheetsController","frameStyle","minHeight","sharingSettingsUrl","coauthSheetElem","frameBorder","scrolling","align","canRequestSharingSettings","changeAccessRights","setSharingSettings","sharingSettings","onMessage","msgData","Referer","ViewSharingSettings","asceditor","Collaboration","isForm","textCollaboration","editUsers","textUsers","canViewComments","UsersPage","storeUsers","CollaborationPage","SharingSettingsController","onSheetClosed","closeOptions","onPopoverClosed","_get","receiver","asyncGeneratorStep","_next","_throw","ListButton","idContextMenuElement","ContextMenuView","onMenuClosed","onMenuItemClick","ActionsWithExtraItems","onActionClosed","menuCancel","exportedIdMenuElemen","idCntextMenuTargetElement","ContextMenuController","openedMore","extraItems","fastCoAuthTips","onDocumentReady","onApiOpenContextMenu","onApiHideContextMenu","onApiShowForeignCursorLabel","onApiHideForeignCursorLabel","_onMenuItemClick","initMenuItems","initExtraItems","offsetPopoverTop","asc_enableKeyEvents","_callee","_x","UserId","isUserVisible","getUserName","asc_unregisterCallback","EditorUIController","isSupportEditFeature","ContextMenu","_dec","canCoAuthoring","isDisconnected","objects","storeFocusObjects","isVersionHistoryMode","storeVersionHistory","_class","_ContextMenuControlle","onApiShowComment","onApiHideComment","checkShapeSelection","searchUserByCurrentId","isComments","handleMenuItemClick","showCopyCutPasteModal","Copy","getSelectedElements","get_ObjectType","c_oAscTypeSelectElement","Hyperlink","get_ObjectValue","openLink","contextMenuElem","textCopyCutPasteActions","errorCopyCutPaste","textDoNotShowAgain","menuSplit","textColumns","textRows","SplitCell","asc_GoToInternalHyperlink","asc_getUrlType","c_oAscUrlType","Http","Email","newDocumentPage","notcriticalErrorTitle","txtWarnUrl","mapMenuItems","canCopy","can_CopyCut","itemsIcon","itemsText","isText","isTable","isImage","isChart","isShape","locked","objectType","objectValue","get_Locked","menuViewComment","can_AddQuotedComment","menuAddComment","menuOpenLink","_ContextMenu","closeContextMenu","PreviewController","_view","_touches","_touchStart","_touchEnd","onEndDemonstration","DemonstrationEndShowMessage","textFinalMessage","StartDemonstration","getCurrentPage","EndDemonstration","DemonstrationPrevSlide","DemonstrationNextSlide","Preview","searchOptions","usereplace","isReplaceAll","popoverStyle","SEARCH_BACKWARD","SearchSettingsView","useReplace","searchBy","lookIn","isMatchCase","isMatchCell","runInAction","onReplaceChecked","show_popover","extra","extraSearchOptions","SearchView","searchQuery","replaceQuery","refSearchbarInput","onSettingsClick","onSearchClick","onReplaceClick","$replace","$editor","onEditorTouchStart","onEditorTouchEnd","asc_selectSearchingResults","searchTimer","onSearchQuery","searchParams","onReplaceQuery","onReplaceAllQuery","startPoint","pointerPosition","endPoint","onchangeSearchQuery","prevState","lastInputChange","setNumberSearchResults","_this$props$isViewer","numberSearchResults","textSearch","onSearchKeyDown","onSearchInput","changeSearchQuery","textReplace","changeReplaceQuery","onReplaceAllClick","textReplaceAll","SearchViewWithObserver","SearchSettings","_SearchSettingsView","anc_markup","markup","textFindAndReplace","textFind","onFindReplaceClick","textFindAndReplaceAll","textCaseSensitive","PESearchView","_SearchView","caseSensitive","Search","isSearchByTyping","CSearchSettings","put_Text","put_MatchCase","asc_findText","resultCount","asc_replaceText","SearchSettingsWithTranslation","docTitle","isOpenModal","isShowBack","disabledControls","closeHistory","getUndoRedo","disabledUndo","isCanUndo","disabledRedo","isCanRedo","onUndoClick","onUndo","onRedoClick","onRedo","changeTitleHandler","disabledPreview","openOptions","showEditDocument","onEditDocument","getToolbarOptions","disabledEdit","disabledAdd","onEditClick","onAddClick","displayCollaboration","disabledSettings","ToolbarController","_storePresentationInf","_storePresentationInf2","_storePresentationInf3","_storePresentationInf4","hasEditUsers","canEdit","canRequestEditRights","isEditLocked","storeToolbarSettings","countPages","disabledEditControls","storePresentationInfo","dataDoc","docExt","activateControls","deactivateEditControls","goBack","onRequestClose","canBackToFolder","setShowBack","goback","canRequestClose","isDocumentModified","asc_stopSaving","dlgLeaveTitleText","dlgLeaveMsgText","leaveButtonText","asc_undoAllChanges","asc_continueSaving","stayButtonText","blank","enableDownload","setDisabledEditControls","setDisabledSettings","setDisabledControls","cutDocName","changeTitle","currentTitle","formatName","wopi","asc_wopi_renameFile","ToolbarView","Undo","Redo","canRename","titleFieldValue","nameDoc","titleField","btnChangeTitle","Segmented","raised","raisedIos","raisedMd","roundIos","roundMd","_props$tag","segmented","SegmentedTag","fillIos","fillMd","tonal","tonalIos","tonalMd","largeIos","largeMd","small","smallIos","smallMd","active","preloaderSize","ButtonTag","getAttrs","_props$resizable","editorValue","onKeyboardOpen","onKeyboardClose","onPopoverOpen","onPopoverClose","onInsertLink","onInsertImage","buttonClick","keyboardOpen","keyboardClose","insertLink","ListInput","_props$dropdown","dropdown","_props$wrap","_props$input","renderInput","_props$type","inputmode","inputId","accept","autocorrect","autocapitalize","autofocus","autosave","maxlength","minlength","inputStyle","validateOnBlur","onValidate","tabindex","clearButton","noFormStoreData","noStoreData","ignoreStoreData","errorMessageForce","floatingLabel","calendarParams","colorPickerParams","textEditorParams","inputInvalid","setInputInvalid","inputFocused","setInputFocused","itemContentElRef","updateInputOnDidUpdate","getDomValue","validateInput","onTextareaResize","onInputNotEmpty","onInputEmpty","calendarValue","colorPickerValue","domValue","inputHasValue","isInputHasValue","createInput","InputTag","needsValue","needsType","inputClassName","valueProps","inputMode","autoComplete","autoCorrect","autoCapitalize","spellCheck","autoSave","minLength","tabIndex","onTextEditorFocus","onTextEditorBlur","onTextEditorInput","onTextEditorChange","hasErrorMessage","ItemContent","PageTypeLink","curType","typeLink","setTypeLink","isNavigate","textLinkType","textExternalLink","changeType","textSlideInThisPresentation","PageLinkTo","curTo","stateTypeTo","setTypeTo","changeTypeTo","changeTo","numberTo","stateNumberTo","setNumberTo","changeNumber","curNumber","isDecrement","textLinkTo","textNextSlide","textPreviousSlide","textFirstSlide","textLastSlide","textSlideNumber","ObservablePageLink","_props$storeToolbarSe","textType","setLink","linkTo","setLinkTo","displayTo","setDisplayTo","getTextDisplay","displayDisabled","textDefault","stateDisplay","setDisplay","stateAutoUpdate","setAutoUpdate","screenTip","setScreenTip","closeModal","inlineLabels","newType","textLink","textSlide","textDisplay","textScreenTip","AddLinkController","can_AddHyperlink","mobileSelector","tabletSelector","linkInfo","CHyperlinkProperty","def_display","urltype","Invalid","txtNotUrl","Unsafe","put_Value","put_ToolTip","slidetip","add_Hyperlink","onPopupClosed","AddLinkWithTranslation","PageLink","slideNum","slideLink","valueTypeLink","typesDisplayTo","onEditLink","initLink","onRemoveLink","ObservablePageEditLinkTo","ObservablePageEditTypeLink","EditLinkController","slidesCount","linkObject","get_ToolTip","get_Text","getCountPages","change_Hyperlink","remove_Hyperlink","EditLink","EditLinkWithTranslation","ThemesContext","themes","_useTranslation","storeThemes","nameColors","initTheme","translations","getTranslationsThemes","setTranslationsThemes","acc","_window$native","_editorConfig$theme","_editorConfig$theme2","clientTheme","editorConfig","native","setConfigSelectTheme","setUITheme","applyTheme","setColorTheme","setSystemTheme","setSystemColorTheme","$body","systemColorTheme","colorTheme","onEngineCreated","outObject","asc_setSkin","changeTheme","resetSystemColorTheme","BlockTitle","Block","ApplicationSettings","unitMeasurement","isSpellChecking","directionMode","newDirectionMode","changeMeasureSettings","changeUnitMeasurement","setUnitMeasurement","typeTheme","isConfigSelectTheme","_isEdit","textApplicationSettings","textUnitOfMeasurement","textCentimeter","textPoint","textInch","textSpellcheck","changeSpellCheck","switchSpellCheck","textMacrosSettings","setMacrosSettings","isCurrentLangRtl","changeDirectionMode","ThemeSettings","MacrosSettings","macrosMode","changeMacros","changeMacrosSettings","textDisableAll","textDisableAllMacrosWithoutNotification","textShowNotification","textDisableAllMacrosWithNotification","textEnableAll","textEnableAllMacrosWithoutNotification","ApplicationSettingsController","asc_SetDocumentUnits","c_oAscDocumentUnits","Inch","Point","Millimeter","asc_setSpellCheck","textDownload","textDownloadAs","onSaveFormat","c_oAscFileType","PPTX","PDF","PDFA","ODP","POTX","OTP","DownloadController","asc_DownloadAs","asc_CDownloadOptions","Download","PresentationInfo","_dataDoc$info","_dataDoc$info2","_dataDoc$info3","_dataDoc$info4","_dataDoc$info5","dataApp","getAppProps","settingsContext","SettingsContext","textPresentationInfo","textPresentationTitle","author","owner","textOwner","folder","textLocation","uploaded","created","textUploaded","textTitle","subject","textSubject","textComment","textLastModified","modifiedBy","textLastModifiedBy","textCreated","textApplication","creators","textAuthor","PresentationInfoController","docProps","getDocProps","getModified","getModifiedBy","getCreators","getTitle","getSubject","getDescription","getCreated","asc_getCoreProps","appProps","asc_getAppProps","asc_getApplication","asc_getAppVersion","valueModified","asc_getModified","_lang","toLocaleTimeString","valueModifiedBy","asc_getLastModifiedBy","asc_getCreator","asc_getTitle","asc_getSubject","asc_getDescription","asc_getCreated","PresentationSettings","storePresentationSettings","slideSizeArr","slideSizes","slideSizeIndex","textPresentationSettings","textSlideSize","onSlideSize","mniSlideStandard","mniSlideWide","textColorSchemes","onColorSchemeChange","initPageColorSchemes","PresentationColorSchemes","curScheme","stateScheme","setScheme","allSchemes","get_name","get_colors","elem","PresentationSettingsController","initSlideSize","c_oAscSlideSZType","SzScreen4x3","SzCustom","initSlideSizes","changeSizeIndex","get_PresentationWidth","get_PresentationHeight","currentPageSize","changeSlideSize","asc_GetCurrentColorSchemeIndex","newScheme","asc_ChangeColorSchemeByIdx","storeTableSettings","setStyles","About","licInfo","canBranding","customer","nameCustomer","mailCustomer","mail","phoneCustomer","addressCustomer","address","urlCustomer","www","infoCustomer","logoCustomer","logo","publisherUrl","__PUBLISHER_URL__","publisherPrintUrl","publisherName","__PUBLISHER_NAME__","nameEditor","sse","textAbout","alt","textVersion","__PRODUCT_VERSION__","__PUBLISHER_ADDRESS__","appVersion","compareVersions","developVersion","SettingsPage","_useContext","MainContext","isBranding","canUseHistory","canCloseEditor","onOpenOptions","_canDownload","_canDownloadOrigin","_canAbout","_canHelp","_canPrint","_canFeedback","_canDisplayInfo","canDownload","canDownloadOrigin","canPrint","canBrandingExt","about","help","feedback","inPopover","readerMode","onDownloadOrigin","textPrint","onPrint","textHelp","showHelp","showFeedback","VersionHistoryView","historyStore","currentVersion","arrVersions","filteredVersions","setFilteredVersions","usersVersions","arrVersion","handleClickRevision","onSelectRevision","ver","canRestore","onRestoreRevision","VersionHistoryController","isFromSelectRevision","timerId","arrVersionsHistory","currentChangeId","currentDocId","currentDocIdPrev","currentServerVersion","currentUserId","currentUserName","currentUserColor","currentDateCreated","currentRev","timeoutIdRef","currentArrColors","onRefreshHistory","onSetHistoryData","onDownloadUrl","onExpiredToken","changeViewerMode","asc_addRestriction","c_oAscRestrictionType","changeVersionHistoryMode","setVersions","asc_coAuthoringDisconnect","arrColors","prev_ver","docIdPrev","versionGroup","findUserById","colorval","generateUserColor","addUser","usercolor","docId","markedAsVersion","canHistoryRestore","isExpanded","serverVersion","isRevision","changes","buildVersion","changeid","hasChanges","changeVersion","rev","revisions","findRevisions","urlGetTime","previous","changesUrl","urlDiff","hist","asc_CVersionHistory","asc_setUrl","asc_setUrlChanges","asc_setDocId","asc_setCurrentChangeId","asc_setArrColors","asc_setToken","asc_setIsRequested","asc_setServerVersion","asc_SetUserId","asc_SetUserName","asc_SetUserColor","asc_SetDateOfRevision","asc_showRevision","selectedRev","DOCX","onclosed","mainContext","asc_Print","__HELP_URL__","__SUPPORT_URL__","asc_DownloadOrigin","SettingsView","AddImage","textPictureFromLibrary","onInsertByFile","textPictureFromURL","onInsertByUrl","AddImageController","asc_addImage","AddImageUrl","textEmptyImgUrl","AddImageWithTranslation","Tag","skeletonStyle","skeletonClassName","PageAddTable","arrayStylesDefault","textTable","onStyleClick","templateId","SkeletonBlock","AddOtherContainer","showInsertLink","storeLinkSettings","canAddLink","paragraphLocked","hideAddComment","isHyperLink","onGetTableStylesPreviews","onCloseLinkSettings","TabsSwipeableContext","routable","tabsClasses","routerContext","tabsSwipeableContext","initialTabContent","_routerContext$route$","tabRouteOptions","parentProps","classAttrs","TabContent","renderChildren","layouts","storeSlideSettings","slideLayouts","stateDisabled","rowIndex","onSlideLayout","AddSlideController","AddSlide","shapes","storeShapeSettings","getStyleGroups","indexRow","shape","onShapeClick","WebkitMaskImage","AddShapeController","AddShapeOnCurrentPage","AddShape","AddOtherController","asc_getTableStylesPreviews","textTableSize","put_Table","topObjectValue","objectLocked","get_LockDelete","AddOther","AddOtherWithTranslation","AddLayoutNavbar","lenght","AddLayoutContent","AddingPage","showPanels","textOther","stateValue","textAddress","textImageURL","textInsertImage","_props$value","_props$min","_props$max","_props$step","_props$label","_props$dual","_props$vertical","_props$verticalRevers","_props$draggableBar","_props$scale","_props$scaleSteps","_props$scaleSubSteps","_props$limitKnobPosit","rangeValue","onChanged","rangeEvents","ThemeColors","themeColors","onColorClick","curColor","isTypeColors","isTypeCustomColors","StandartColors","standartColors","CustomColors","emptyItems","customcolors","indexCurColor","ThemeColorPalette","standardcolors","themecolors","effectColors","textThemeColors","changeColor","textStandartColors","textCustomColors","CustomColorPicker","hexDigits","currentColor","autoColor","countDynamicColors","countdynamiccolors","stateColor","setColor","newColor","onAddNewColor","addNewColor","EditSlide","textTheme","onThemeClick","textLayout","onLayoutClick","onEffectClick","onEffectTypeClick","changeDuration","onStartClick","onDelayCheck","onDelay","onApplyAll","textStyle","onFillColor","onDuplicateSlide","textDuplicateSlide","onRemoveSlide","textDeleteSlide","Theme","arrayThemes","slideThemeIndex","themeId","backgroundPosition","offsety","backgroundImage","changeSlideThemeIndex","Layout","changeSlideLayoutIndex","slideObject","get_LayoutIndex","arrayLayouts","slideLayoutIndex","Transition","_arrEffect","textNone","c_oAscSlideTransitionTypes","textFade","Fade","textPush","Push","textWipe","Wipe","textSplit","Split","textUnCover","UnCover","textCover","Cover","textClock","Clock","textZoom","Zoom","textMorph","Morph","_arrEffectType","textSmoothly","c_oAscSlideTransitionParams","Fade_Smoothly","textBlack","Fade_Through_Black","Param_Left","textTop","Param_Top","Param_Right","textBottom","Param_Bottom","textTopLeft","Param_TopLeft","textTopRight","Param_TopRight","textBottomLeft","Param_BottomLeft","textBottomRight","Param_BottomRight","textVerticalIn","Split_VerticalIn","textVerticalOut","Split_VerticalOut","textHorizontalIn","Split_HorizontalIn","textHorizontalOut","Split_HorizontalOut","textClockwise","Clock_Clockwise","textCounterclockwise","Clock_Counterclockwise","textWedge","Clock_Wedge","textZoomIn","Zoom_In","textZoomOut","Zoom_Out","textZoomRotate","Zoom_AndRotate","textMorphObjects","Morph_Objects","textMorphWords","Morph_Words","textMorphLetters","Morph_Letters","_arrCurrentEffectTypes","fillEffectTypes","transitionObj","get_transition","_effectDelay","get_SlideAdvanceDuration","stateRange","changeRange","isDelay","get_SlideAdvanceAfter","isStartOnClick","get_SlideAdvanceOnMouseClick","_effect","get_TransitionType","nameEffect","getEffectName","_effectType","get_TransitionOption","nameEffectType","getEffectTypeName","_effectDuration","get_TransitionDuration","textEffect","textDuration","textSec","textStartOnClick","textDelay","onRangeChange","onRangeChanged","textApplyAll","Type","currentType","setType","Effect","currentEffect","setEffect","valueEffectTypes","StyleFillColor","storePalette","fillColor","textFill","changeFillColor","textAddCustomColor","CustomFillColor","textCustomColor","changeCustomColors","isChildSwiperSlide","processChildren","foundSlides","SwiperSlideContext","SwiperContext","externalElRef","wrapperTag","WrapperTag","onSwiper","eventsAssigned","containerClasses","setContainerClasses","virtualData","setVirtualData","breakpointChanged","setBreakpointChanged","initializedRef","swiperElRef","swiperRef","oldPassedParamsRef","oldSlides","nextElRef","prevElRef","paginationElRef","scrollbarElRef","restProps","splitEvents","plainObj","onBeforeBreakpoint","_containerClasses","passParams","extendWith","mountSwiper","oldParams","oldChildren","getKey","addKey","oldChildrenKeys","childrenKeys","newKeys","oldKeys","newKey","oldKey","getChangedParams","updateOnVirtualData","renderVirtual","externalRef","slideElRef","slideClasses","setSlideClasses","lazyLoaded","setLazyLoaded","updateClasses","slideData","PageAddImage","onImageSelect","PageBullets","storeTextSettings","typeBullets","bulletArrays","subtype","numberingInfo","getIconsBulletsAndNumbers","paragraphObject","shapeObject","listStyle","listType","resetBullets","onBullet","PageNumbers","typeNumbers","numberArrays","resetNumbers","onNumber","EditTextContainer","spaceBefore","spaceAfter","previewList","metricText","fontName","textFonts","fontColor","highlightColor","displaySize","textPt","isBold","isItalic","isUnderline","isStrikethrough","paragraphAlign","paragraphValign","canIncreaseIndent","canDecreaseIndent","paragraphObj","get_Spacing","get_Before","get_After","displayBefore","displayAfter","fontColorPreview","highlightColorPreview","changeFontSize","changeFontFamily","toggleBold","toggleItalic","toggleUnderline","textDecoration","toggleStrikethrough","textFontColor","onTextColor","onHighlightColor","textAdditionalFormatting","onAdditionalStrikethrough","onAdditionalCaps","onAdditionalScript","changeLetterSpacing","onParagraphAlign","onParagraphValign","onParagraphMove","setOrientationTextShape","textBulletsAndNumbers","onLineSpacing","textDistanceFromText","textBefore","onDistanceBefore","textAfter","onDistanceAfter","PageTextFonts","curFontName","fonts","fontsArray","iconWidth","iconHeight","thumbCanvas","thumbIdx","thumbContext","spriteCols","spriteThumbs","arrayRecentFonts","getImageUri","font","imgidx","getImage","toDataURL","stateRecent","setRecent","vlData","vlFonts","setVlFonts","textSize","drawFonts","images","drawImages","addFontToRecent","PageTextFontColor","textFontColors","PageTextHighlightColor","textHighlightColor","HighlightColorPalette","PageTextCustomFontColor","PageTextAddFormatting","shapeObj","isSuperscript","isSubscript","isStrikeout","isDStrikeout","isSmallCaps","isAllCaps","letterSpacing","get_Strikeout","get_DStrikeout","get_SmallCaps","get_AllCaps","get_TextSpacing","textAdditional","textStrikethrough","textDoubleStrikethrough","textSuperscript","textSubscript","textAllCaps","textLetterSpacing","isInteger","PageTextBulletsAndNumbers","PageTextLineSpacing","lineSpacing","PageTextBulletsLinkSettings","textLinkSettings","PaletteFill","curFillColor","getFillColor","setFillColor","EditShapeContainer","canFill","get_CanFill","shapeType","asc_getType","hideChangeType","get_FromChart","get_FromSmartArt","isSmartArtInternal","get_FromSmartArtInternal","disableRemove","onBorderSize","onBorderColor","onOpacity","onReplace","onReorder","onAlign","onRemoveShape","textRemoveShape","PageShapeStyle","borderSize","borderType","stroke","get_stroke","get_width","get_type","get_fill","asc_getTransparent","borderSizeTransform","displayBorderSize","c_oAscStrokeType","STROKE_NONE","indexSizeByValue","displayTextBorderSize","sizeByValue","stateBorderSize","setBorderSize","stateTextBorderSize","setTextBorderSize","borderColorView","initBorderColorView","displayBorderColor","chartObject","textBorder","textEffects","sizeByIndex","textOpacity","PageShapeStyleNoFill","PageShapeCustomFillColor","PageReplaceContainer","PageReorderContainer","textBringToForeground","textSendToBackground","textMoveForward","textMoveBackward","PageAlignContainer","textAlignLeft","textAlignCenter","textAlignRight","textAlignTop","textAlignMiddle","textAlignBottom","textDistributeHorizontally","textDistributeVertically","PageShapeBorderColor","setBorderColor","PageShapeCustomBorderColor","EditImageContainer","pluginGuid","imageObject","asc_getPluginGuid","onReplaceByFile","onReplaceByUrl","onDefaultSize","textActualSize","onRemoveImage","PageLinkSettingsContainer","textReplaceImage","textNotUrl","StyleTemplates","tableObject","styleId","get_TableStyle","stateId","setId","arrayStyles","TabFillColor","TabBorder","cellBorderWidth","onBorderType","updateBordersStyle","onBorderTypeClick","cellBorders","cellBorderColor","updateCellBorderWidth","colorAuto","EditTableContainer","getCellMargins","stateDistance","setDistance","onAddColumnLeft","onAddColumnRight","onAddRowAbove","onAddRowBelow","onRemoveColumn","onRemoveRow","textRemoveTable","onRemoveTable","onCheckTemplateChange","textCellMargins","onOptionMargin","PageTableStyle","textStyleOptions","PageTableStyleOptions","tableLook","isFirstRow","isLastRow","isBandHor","isFirstCol","isLastCol","isBandVer","get_TableLook","get_FirstRow","get_LastRow","get_BandHor","get_FirstCol","get_LastCol","get_BandVer","textOptions","textHeaderRow","textTotalRow","textBandedRow","textFirstColumn","textLastColumn","textBandedColumn","PageTableCustomFillColor","PageTableBorderColor","setAutoColor","updateCellBorderColor","PageTableCustomBorderColor","PageTableReorder","PageTableAlign","storeChartSettings","shapeProperties","EditChart","onType","onStyle","onRemoveChart","PageChartDesign","get_ChartProperties","PageChartDesignType","types","countSlides","arraySlides","chartProperties","getType","indexSlide","typesSlide","PageChartDesignStyle","chartStyles","asc_getImage","PageChartDesignBorder","shapeStroke","initBorderColor","PageChartCustomFillColor","PageChartBorderColor","PageChartCustomBorderColor","PageChartReorder","PageChartAlign","EditSlideController","ChangeTheme","ChangeLayout","SlideTransitionApplyToAll","CAscSlideProps","timing","CAscSlideTransition","put_TransitionDuration","put_transition","SetSlideProps","put_SlideAdvanceOnMouseClick","put_SlideAdvanceAfter","put_SlideAdvanceDuration","effectType","put_TransitionType","put_TransitionOption","asc_CShapeFill","c_oAscFill","FILL_TYPE_NOFILL","put_fill","FILL_TYPE_SOLID","asc_CFillSolid","put_color","put_background","DublicateSlide","DeleteSlide","EditTextController","onApiImageLoaded","put_TextPrBold","put_TextPrItalic","put_TextPrUnderline","put_TextPrStrikeout","put_PrAlign","c_oAscVAlign","Top","Center","Bottom","setVerticalAlign","DecreaseIndent","IncreaseIndent","newDistance","maxValue","put_LineSpacingBeforeAfter","curSize","FontSizeOut","FontSizeIn","put_TextPrFontSize","put_TextPrFontName","put_TextColor","strColor","SetMarkerFormat","paragraphProps","asc_CParagraphProperty","put_DStrikeout","put_Strikeout","paraApply","put_AllCaps","put_SmallCaps","put_TextPrBaseline","vertalign_Baseline","curSpacing","spacing","NaN","put_TextSpacing","put_ListType","arrayElements","divId","SetDrawImagePreviewBulletForMenu","selectedElements","imageProp","asc_getImageId","redraw","selectItem","asc_fillBulletImage","asc_putBullet","asc_CBullet","asc_showFileDialog","checkUrl","asc_putImageUrl","put_PrLineSpacing","asc_CShapeProperty","put_Vert","ShapeApply","EditText","EditShapeController","ChangeShapeType","shapes_bringToFront","shapes_bringToBack","shapes_bringForward","shapes_bringBackward","put_ShapesAlign","c_oAscAlignShapeType","ALIGN_LEFT","ALIGN_CENTER","ALIGN_RIGHT","ALIGN_TOP","ALIGN_MIDDLE","ALIGN_BOTTOM","DistributeHorizontally","DistributeVertically","asc_Remove","_shapeObject","STROKE_COLOR","asc_CStroke","put_width","asc_putPrstDash","asc_getPrstDash","put_stroke","_borderColor","put_transparent","EditShape","EditImageController","imgsize","get_OriginalSizeImage","asc_CImgProperty","put_Width","get_ImageWidth","put_Height","get_ImageHeight","put_ResetCrop","put_Rot","ImgApply","ChangeImageFromFile","put_ImageUrl","EditImage","EditTableController","closeIfNeed","isTableInStack","remTable","addColumnLeft","addColumnRight","addRowAbove","addRowBelow","remColumn","remRow","CTableProp","margins","CMargins","put_Top","put_Right","put_Bottom","put_Left","put_Flag","put_CellMargins","tblApply","put_TableStyle","isChecked","put_FirstRow","put_LastRow","put_BandHor","put_FirstCol","put_LastCol","put_BandVer","put_TableLook","CBackground","put_CellsBackground","put_Color","put_CellSelect","_cellBorders","CBorders","put_CellBorders","EditTable","EditChartController","c_oAscChartTypeSettings","comboBarLine","comboBarLineSecondary","comboAreaBar","comboCustom","clearChartStyles","updateChartStyles","asc_getChartPreviews","chart","CAscChartProp","chartProps","putStyle","put_ChartProperties","ChartApply","currentShape","EmptyEditLayout","textSelectObjectToEdit","EditLayoutNavbar","editors","EditLayoutContent","textSettings","textText","EditingPage","get_Vert","directionTextShape","setDirectionTextShape","c_oAscVertDrawingText","vert","vert270","PageImageReplace","PageImageReorder","PageImageAlign","PageLinkSettings","MainPage","previewVisible","showOpts","editOptionsVisible","addOptionsVisible","addShowOptions","settingsVisible","collaborationVisible","addLinkSettingsVisible","editLinkSettingsVisible","historyVisible","handleClickToOpenOptions","_config$customization","isShowPlaceholder","isDocReady","loaderName","loaderLogo","isHideLogo","customLogoImage","customLogoUrl","_logo$imageDark","_logo$image","imageDark","handleOptionsViewClosed","EditView","AddView","SettingsController","CollaborationView","_events","addevent","CollaborationController","onChangeEditUsers","onUserConnection","onCoAuthoringDisconnect","onTryUndoInFastCollaborative","isFastCoauth","canLicense","isOffline","asc_SetFastCollaborative","SetCollaborativeMarksShowType","c_oAscCollaborativeMarksShowType","All","LastChanges","asc_setAutoSaveGap","canLiveView","coEditing","canAutosave","connection","resetDisconnected","textTryUndoRedo","ErrorController","LoadingDocument","on_engine_created","level","errData","c_oAscError","ID","LoadingScriptError","c_oAscAsyncActionType","closable","Unknown","unknownErrorText","ConvertationTimeout","convertationTimeoutText","ConvertationOpenError","openErrorText","ConvertationSaveError","saveErrorText","DownloadError","downloadErrorText","UplImageSize","uploadImageSizeMessage","UplImageExt","uploadImageExtMessage","UplImageFileCount","uploadImageFileCountMessage","SplitCellMaxRows","splitMaxRowsErrorText","SplitCellMaxCols","splitMaxColsErrorText","SplitCellRowsDivider","splitDividerErrorText","VKeyEncrypt","errorToken","KeyExpire","errorTokenExpire","UserCountExceed","errorUsersExceed","CoAuthoringDisconnect","errorViewerDisconnect","ConvertationPassword","errorFilePassProtect","StockChartError","errorStockChart","DataRangeError","errorDataRange","Database","errorDatabaseConnection","UserDrop","lostEditingRights","changeEditingRights","errorUserDrop","Warning","errorConnectToServer","UplImageUrl","errorBadImageUrl","SessionAbsolute","errorSessionAbsolute","SessionIdle","errorSessionIdle","SessionToken","errorSessionToken","DataEncrypted","errorDataEncrypted","AccessDeny","errorAccessDeny","ForceSaveButton","ForceSaveTimeout","EditingError","errorEditingDownloadas","MailToClientMissing","ConvertationOpenLimitError","errorFileSizeExceed","UpdateVersion","errorUpdateVersionOnDisconnect","ComboSeriesError","Password","LoadingFontError","errorLoadingFont","DirectUrl","errorDirectUrl","ConvertationOpenFormat","errorInconsistentExtPdf","errorInconsistentExtDocx","errorInconsistentExtXlsx","errorInconsistentExtPptx","errorInconsistentExt","errorDefaultMessage","Level","Critical","criticalErrorTitle","isDesktopApp","criticalErrorExtText","scriptLoadError","IrregularStack","_stack","_config","_strongCompare","strongCompare","_compare","_weakCompare","weakCompare","obj1","obj2","_indexOf","exist","LongActionsController","stackLongActions","loadMask","closePreloader","onLongActionBegin","onLongActionEnd","onOpenDocument","onConfirmAction","setLongActionView","forceClose","Information","BlockInteraction","c_oAscAsyncAction","textLoadingDocument","saveTitleText","loadFontsTitleText","loadImagesTitleText","loadFontTitleText","loadImageTitleText","downloadTitleText","printTitleText","uploadImageTitleText","loadThemeTitleText","applyChangesTitleText","savePreparingText","waitText","txtEditingMode","loadingDocumentTitleText","apiCallback","c_oAscConfirm","ConfirmMaxChangesSize","confirmMaxChangesSize","textUndo","textContinue","$title","proc","asc_getCurrentFont","asc_getCurrentImage","asc_getFontsCount","asc_getImagesCount","PluginsController","iframe","configPlugins","autostart","serverPlugins","showPluginModal","pluginClose","pluginResize","onPluginsInit","loadPlugins","onDlgBtnClick","asc_pluginButtonClick","plugin","variationIndex","urlAddition","variation","get_Variations","get_Visual","get_Url","get_BaseUrl","isCustomWindow","get_CustomWindow","arrBtns","get_Buttons","newBtns","get_Size","padding","getPlugins","pluginsData","fetchFunction","baseUrl","loaded","previousPromise","currentPromise","pluginsdata","parsePlugins","variations","itemVar","descriptionLocale","textLocale","registerPlugins","CPlugin","deserialize","asc_pluginsRegister","mergePlugins","setPluginsOptions","MainController","ApplyEditRights","fallbackSdkTranslations","_state","licenseType","isDocModified","defaultTitleText","__APP_TITLE_TEXT__","stackMacrosRequests","on_script_load","sdk_scripts","dep_scripts","setConfigOptions","asc_setLocale","changeMacrosRequest","loadDocument","permissions","docInfo","_options","actionLink","asc_CUserInfo","_userOptions","put_Id","put_FullName","put_IsAnonymousUser","asc_CDocInfo","put_Url","put_DirectUrl","directUrl","put_Title","put_Format","put_VKey","vkey","put_Options","put_UserInfo","put_CallbackUrl","callbackUrl","put_Token","put_Permissions","put_EncryptedInfo","encryptionKeys","put_Lang","put_Mode","coEditMode","put_CoEditingMode","macros","asc_putIsEnabledMacroses","asc_putIsEnabledPlugins","onEditorPermissions","onLicenseChanged","onMacrosPermissionRequest","onRunAutostartMacroses","asc_setDocInfo","asc_getEditorPermissions","licenseUrl","customerId","setDataDoc","licType","asc_getLicenseType","c_oLicenseResult","Expired","ExpiredTrial","NotBefore","ExpiredLimited","Success","SuccessLimit","setPermissionOptions","applyMode","asc_LoadDocument","Resize","results","processArrayScripts","scriptpath","_translate","asc_docs_api","bindEvents","SetFontRenderingMode","SetDrawingFreeze","SetThemesPath","onExternalMessage","asc_setViewMode","asc_setRestriction","OnlyComments","onDocumentModifiedChanged","onDocumentCanSaveChanged","_isDocReady","onbeforeunload","onBeforeUnload","onunload","onUnload","isModified","asc_isDocumentCanSave","updateWindowTitle","isCanSave","continueSavingTimer","leavePageText","onDocumentContentReady","onUpdateVersion","onServerVersion","onAdvancedOptions","onDocumentName","onPrintUrl","onMeta","initThemeColors","addSchemes","initFocusObjects","initEditorStyles","resetFontsRecent","initFonts","typeBaseline","resetTypeBaseline","get_ListType","get_ListSubType","resetListType","resetParagraphAlign","valign","resetParagraphValign","resetIncreaseIndent","resetDecreaseIndent","resetTextColor","resetHighlightColor","resetLineSpacing","canAddHyperlink","initTableTemplates","can","setCanUndo","setCanRedo","setCountPages","onApiTextReplaced","replaced","appSettings","zoomFitToPage","zoomFitToWidth","needToUpdateVersion","onProcessSaveResult","onProcessRightsChange","onDownloadAs","asc_GetDefaultTableStyles","applyLicense","changeDocReady","Connections","UsersCount","ConnectionsOS","UsersCountOS","trialMode","c_oLicenseMode","Limited","ConnectionsLive","ConnectionsLiveOS","UsersViewCount","UsersViewCountOS","warnNoLicense","__COMPANY_NAME__","warnNoLicenseUsers","textNoLicenseTitle","warnLicenseExceeded","warnLicenseUsersExceeded","errorOpensource","isAnonymousSupport","warnLicenseAnonymous","license","permissionsLicense","textBuyNow","textContactUs","__SALES_EMAIL__","warnLicenseLimitedRenewed","textPaidFeature","textCustomLoader","textClose","errorUpdateVersion","titleUpdateVersion","changeServerVersion","errorServerVersion","titleServerVersion","advOptions","c_oAscAdvancedOptionsID","asc_setAdvancedOptions","asc_CDRMAdvancedOptions","isDRM","txtIncorrectPwd","advDRMOptions","textOpenFile","advDRMPassword","iframePrint","print","_this8","asc_runAutostartMacroses","textHasMacros","textRemember","textYes","textNo","_this9","macrosRequest","textRequestMacros","asc_OnSaveEnd","errorProcessSaveResult","old_rights","warnProcessRightsChange","isFromGatewayDownloadAs","_format","_supported","PPTM","PNG","JPG","asc_setIsSaveAs","_this10","getEditCommentControllers","_this11","initSdk","f7params","_React$Component","consoleLogger","output","Logger","concreteLogger","logger","debug","deprecate","lvl","debugOnly","clone","baseLogger","EventEmitter","numListeners","numTimesAdded","defer","rej","makeString","lastOfPathSeparatorRegExp","getLastOfPath","Empty","cleanKey","canNotTraverseDeeper","stackIndex","setPath","getPath","deepExtend","overwrite","regexEscape","_entityMap","chars","looksLikeObjectPathRegExpCache","capacity","regExpMap","regExpQueue","getRegExp","regExpFromCache","regExpNew","deepFind","keySeparator","nextPath","getCleanedCode","ResourceStore","addNamespaces","removeNamespaces","getResource","addResource","silent","addResources","addResourceBundle","skipCopy","pack","removeResourceBundle","getResourceBundle","compatibilityAPI","getDataByLanguage","hasLanguageSomeTranslations","postProcessor","processors","addPostProcessor","translator","checkedLoadedFor","Translator","changeLanguage","exists","interpolation","extractFromKey","nsSeparator","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","looksLikeObjectPath","interpolator","nestingRegexp","lastKey","overloadTranslationOptionHandler","returnDetails","appendNamespaceToCIMode","usedKey","exactUsedKey","usedLng","usedNS","usedParams","getUsedParamsDetails","resUsedKey","resExactUsedKey","resType","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","extendTranslation","usedDefault","needsPluralHandling","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValueSuffixOrdinalFallback","ordinal","needsZeroSuffixLookup","shouldUseIntlApi","pluralSeparator","isValidLookup","resForMissing","missingKeyNoValueFallbackToKey","updateMissing","lngs","fallbackLngs","languageUtils","getFallbackCodes","saveMissingTo","toResolveHierarchy","specificDefaultValue","defaultForMissing","missingKeyHandler","saveMissing","saveMissingPlurals","getSuffixes","appendNamespaceToMissingKey","parseMissingKeyHandler","defaultVariables","skipInterpolation","skipOnVariables","nestBef","nest","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","extracted","fallbackNS","needsContextHandling","codes","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","ordinalPrefix","contextKey","contextSeparator","possibleKey","returnNull","returnEmptyString","resourceStore","optionsKeys","useOptionsReplaceForData","option","capitalize","LanguageUtil","supportedLngs","getScriptPartFromCode","formatLanguageCode","getLanguagePartFromCode","specialCases","lowerCaseLng","cleanCode","isSupportedCode","nonExplicitSupportedLngs","getBestMatchFromCodes","cleanedLng","lngOnly","supportedLng","fallbacks","fallbackCode","fallbackCodes","addCode","sets","nr","_rulesPluralsTypes","nonIntlVersions","intlVersions","suffixesOrder","zero","one","two","few","many","PluralResolver","compatibilityJSON","PluralRules","rules","numbers","plurals","createRules","addRule","getRule","needsPlural","rule","resolvedOptions","pluralCategories","getPluralFormsOfKey","pluralCategory1","pluralCategory2","pluralCategory","getSuffixRetroCompatible","noAbs","simplifyPluralSuffix","returnSuffix","deepFindWithDefaults","defaultData","getPathWithDefaults","Interpolator","escapeValue","iOpts","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","getOrResetRegExp","existingRegExp","regexpUnescape","replaces","regexSafe","handleFormat","interpolationkey","missingInterpolationHandler","todos","safeValue","todo","matchedVar","temp","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","formatters","doReduce","createCachedFormatter","formatter","Formatter","formats","opt","NumberFormat","currency","relativetime","RelativeTimeFormat","ListFormat","addCached","mem","formatOptions","formatStr","optStr","parseFormatStr","formatted","valOptions","formatParams","Connector","waitingReads","maxParallelReads","readingCalls","maxRetries","retryTimeout","queueLoad","toLoad","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","pendingCount","errors","pushPath","removePending","loadedKeys","read","fcName","tried","resolver","prepareLoading","loadOne","fallbackValue","isUpdate","clb","initImmediate","tDescription","transformOptions","I18n","isClone","isInitializing","defOpts","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","deferred","loadResources","usedCallback","resolvedLanguage","setResolvedLanguage","reloadResources","lngInLngs","setLngProps","setLng","cacheUserLanguage","detect","fixedT","resultKey","setDefaultNamespace","preResult","preloaded","newLngs","createInstance","cloneInstance","forkResourceStore","mergedOptions","loadPath","addPath","multiSeparator","allowMultiLoading","requestOptions","BackendError","retry","getLoadPath","funcOrVal","loadUrl","readMulti","arrify","currentLang","defaultLang","canRenameAnonymous","guestName","textGuest","textAnonymous","targetApp","canCreateNew","createUrl","canOpenRecent","recent","fileChoiceUrl","mergeFolderUrl","canAnalytics","canBack","hasUrl","canPlugins","setCurrentName","asc_getRights","c_oRights","edit","asc_getIsAnalyticsEnable","isLightVersion","asc_getIsLight","asc_getBuildVersion","asc_isOffline","canHistoryClose","canUseMailMerge","canSendEmailAddresses","editCommentAuthorOnly","deleteCommentAuthorOnly","commentAuthorOnly","canChat","chat","canEditStyles","asc_getLicenseMode","download","asc_getCustomization","asc_getCanBranding","reviewGroups","reviewPermissions","canUseCommentPermissions","commentGroups","canUseUserInfoPermissions","userInfoGroups","setReviewPermissions","setCommentPermissions","setUserInfoPermissions","asc_getLiveViewerSupport","asc_isAnonymousSupport","_focusObjects","resetFocusObjects","intf","filterFocusObjects","getSlideObject","getParagraphObject","_paragraphLocked","getShapeObject","getImageObject","getTableObject","getChartObject","getLinkObject","slide_deleted","slide_lock","no_object","get_LockLayout","get_LockBackground","get_LockTransition","get_LockTiming","asc_getState","asc_getView","idArray","usersArray","idOriginal","userAttr","addArrayLayouts","addArrayThemes","sdkColor","get_background","get_color","get_value","getIndex","get_Image","get_Width","get_Height","binaryFormat","heightOne","offsets","responseType","overrideMimeType","setRequestHeader","Uint8Array","openBinary","arrayBuffer","binaryAlpha","memorySize","isOffsets","Uint8ClampedArray","binaryIndex","binaryLen","len0","tmpValue","moduleCur","imagePixels","canvas","ctx","getContext","dataTmp","createImageData","sizeImage","alphaChannel","pixelsCount","putImageData","customTextColors","initEditorFonts","resetFontName","resetFontSize","resetIsBold","resetIsItalic","resetIsUnderline","resetIsStrikeout","changeCustomTextColors","listItemHeight","loadSprite","fontId","asc_getFontId","asc_getFontName","asc_getFontThumbnail","asc_getFontType","FONT_THUMBNAIL_HEIGHT","CThumbnailLoader","get_Name","get_auto","line","get_Line","get_LineRule","cell","_sizes","arrStyles","typeStyles","get_CellMargins","get_Left","get_CellsBackground","get_Color","border","asc_CTextBorder","updateBorderStyle","get_Top","get_Right","get_Bottom","get_InsideV","put_InsideV","get_InsideH","put_InsideH","put_Size","put_auto","widthContainer","barNormal","barStacked","barStackedPer","barNormal3d","barStacked3d","barStackedPer3d","barNormal3dPerspective","lineNormal","lineStacked","lineStackedPer","hBarNormal","hBarStacked","hBarStackedPer","hBarNormal3d","hBarStacked3d","hBarStackedPer3d","areaNormal","areaStacked","areaStackedPer","pie","doughnut","pie3d","scatter","stock","line3d","groupCollectionComments","removeShowComment","findComment","collection","system"],"sourceRoot":""} \ No newline at end of file diff --git a/apps/presentationeditor/mobile/index.html b/apps/presentationeditor/mobile/index.html new file mode 100644 index 0000000000..87082c1d2d --- /dev/null +++ b/apps/presentationeditor/mobile/index.html @@ -0,0 +1,270 @@ +Presentation Editor
                \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/app/controller/Main.js b/apps/spreadsheeteditor/main/app/controller/Main.js index da86d23964..1cc73bf15c 100644 --- a/apps/spreadsheeteditor/main/app/controller/Main.js +++ b/apps/spreadsheeteditor/main/app/controller/Main.js @@ -3504,6 +3504,8 @@ define([ }, onSaveDocumentBinary: function(data) { + window.alert("axing excel onSaveDocumentBinary", data) + console.log("axing excel onSaveDocumentBinary", data) Common.Gateway.saveDocument(data); }, diff --git a/apps/spreadsheeteditor/main/app/view/CellEditor.js b/apps/spreadsheeteditor/main/app/view/CellEditor.js index dce9e4585c..3a2638b1e1 100644 --- a/apps/spreadsheeteditor/main/app/view/CellEditor.js +++ b/apps/spreadsheeteditor/main/app/view/CellEditor.js @@ -96,6 +96,7 @@ define([ updateCellInfo: function(info) { if (info) { + console.log("axing updateCellInfo", info); this.$cellname.val(typeof(info)=='string' ? info : info.asc_getName()); } }, @@ -115,9 +116,8 @@ define([ cellEditorTextChange: function (){ if (!this.$cellcontent) return; - var cellcontent = this.$cellcontent[0]; - + console.log("axing cellEditorTextChange", this.$cellcontent, cellcontent) if (cellcontent.clientHeight != cellcontent.scrollHeight) { if ( !this._isScrollShow ) { this._isScrollShow = true; diff --git a/apps/spreadsheeteditor/main/resources/img/iconshuge@2.5x.svg b/apps/spreadsheeteditor/main/resources/img/iconshuge@2.5x.svg new file mode 100644 index 0000000000..f880645cdb --- /dev/null +++ b/apps/spreadsheeteditor/main/resources/img/iconshuge@2.5x.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/spreadsheeteditor/mobile/css/611.css b/apps/spreadsheeteditor/mobile/css/611.css new file mode 100644 index 0000000000..cf8fe293ed --- /dev/null +++ b/apps/spreadsheeteditor/mobile/css/611.css @@ -0,0 +1,6 @@ +/*! + * + * * Version: 8.0.1 (build: 0) + * + */.md{--background-normal:#f1f1f1}:root{--brand-word:#446995;--brand-cell:#40865C;--brand-slide:#BE664F;--brand-form:#AA5252;--brand-primary:#3880BE;--brand-secondary:#ED7309;--brand-text-on-brand:#FFF;--background-primary:#FFF;--background-secondary:#FFF;--background-tertiary:#EFF0F5;--background-menu-divider:rgba(60,60,67,0.15);--background-button:#EFF0F5;--text-normal:#000000;--text-secondary:rgba(0,0,0,0.6);--text-tertiary:rgba(0,0,0,0.4);--text-link:#007AFF;--text-error:#FF3B30;--fill-black:#000;--fill-white:#FFF;--toolbar-background:#446995;--toolbar-icons:#FFF;--toolbar-segment:#446995;--toolbar-tab-normal:rgba(255,255,255,0.5);--component-disabled-opacity:0.4;--active-opacity-word:rgba(68,105,149,0.3);--active-opacity-slide:rgba(190,102,79,0.3);--active-opacity-cell:rgba(64,134,92,0.3);--image-border-types-filter:none;--canvas-background:#eee;--canvas-content-background:#fff;--canvas-page-border:#ccc;--canvas-ruler-background:#fff;--canvas-ruler-margins-background:#d9d9d9;--canvas-ruler-mark:#555;--canvas-ruler-handle-border:#555;--canvas-ruler-handle-border-disabled:#aaa;--canvas-high-contrast:#000;--canvas-cell-border:#999;--canvas-cell-title-text:rgba(0,0,0,0.8);--canvas-cell-title-background:#f7f7f7;--canvas-cell-title-background-selected:#cfcfcf;--canvas-cell-title-border:#d8d8d8;--canvas-cell-title-border-selected:#c9c9c9}:root .pdf-view{--brand-word:var(--brand-form)}:root .pdf-view__android{--toolbar-background:var(--brand-word)}:root .theme-dark,:root .theme-type-dark{--background-primary:#232323;--background-secondary:#333;--background-tertiary:#131313;--background-menu-divider:rgba(84,84,88,0.5);--background-button:#333333;--text-normal:rgba(255,255,255,0.87);--text-secondary:rgba(255,255,255,0.6);--text-tertiary:rgba(255,255,255,0.4);--text-link:#1976D2;--text-error:#FF453A;--fill-black:#000;--fill-white:#FFF;--brand-word:#208BFF;--brand-cell:#34C759;--brand-slide:#FE8C33;--brand-form:#FE8C33;--brand-primary:#3E9CF0;--brand-secondary:#FFAF49;--brand-text-on-brand:#000;--toolbar-background:#232323;--toolbar-icons:#208BFF;--toolbar-segment:#FFF;--toolbar-tab-normal:#757575;--component-disabled-opacity:0.4;--active-opacity-word:rgba(68,105,149,0.2);--active-opacity-slide:rgba(190,102,79,0.2);--active-opacity-cell:rgba(64,134,92,0.2);--image-border-types-filter:invert(100%) brightness(4);--canvas-background:#000;--canvas-content-background:#fff;--canvas-page-border:#303030;--canvas-ruler-background:#636366;--canvas-ruler-margins-background:#3a3a3c;--canvas-ruler-mark:#8e8e93;--canvas-ruler-handle-border:#636366;--canvas-ruler-handle-border-disabled:#636366;--canvas-high-contrast:#000;--canvas-cell-border:rgba(0,0,0,0.1);--canvas-cell-title-border:#757575;--canvas-cell-title-border-hover:#858585;--canvas-cell-title-border-selected:#999;--canvas-cell-title-text:rgba(255,255,255,0.8);--canvas-cell-title-background:#555;--canvas-cell-title-background-selected:#3d3d3d}:root .theme-dark.pdf-view,:root .theme-type-dark.pdf-view{--brand-word:var(--brand-form)}:root .theme-dark.pdf-view__android,:root .theme-type-dark.pdf-view__android{--toolbar-background:var(--background-primary)}[dir=rtl].device-android .app-layout .searchbar input{background-position:100%;padding-left:36px;padding-right:24px}[dir=rtl].device-android .app-layout .searchbar .number-search-results{left:26px;right:auto}[dir=rtl].device-android .comment-list .comment-header .initials,[dir=rtl].device-android .wrap-comment .comment-header .initials{margin-left:10px;margin-right:0}[dir=rtl].device-android .actions-modal .actions-button-text{text-align:right}[dir=rtl].device-android .navigation-sheet__title{padding-left:0;padding-right:16px}[dir=rtl].device-ios .app-layout .navbar .left a+a,[dir=rtl].device-ios .app-layout .navbar .right a+a,[dir=rtl].device-ios .app-layout .subnavbar{margin-right:0}[dir=rtl].device-ios .app-layout .tab-buttons .tab-link:first-child{border-radius:0 5px 5px 0}[dir=rtl].device-ios .app-layout .tab-buttons .tab-link:last-child{border-radius:5px 0 0 5px}[dir=rtl].device-ios .app-layout .searchbar .number-search-results{left:26px;right:auto}[dir=rtl].device-ios .app-layout .popover li:first-child .segmented a:first-child,[dir=rtl].device-ios .app-layout .popover li:last-child .segmented a:first-child{border-radius:0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0}[dir=rtl].device-ios .app-layout .popover li:first-child .segmented a:last-child,[dir=rtl].device-ios .app-layout .popover li:last-child .segmented a:last-child{border-radius:var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius)}[dir=rtl].device-ios .app-layout .list .item-inner .item-after .segmented{margin-left:0;margin-right:10px}[dir=rtl].device-ios .app-layout .searchbar-inner__right .buttons-row a.next{margin-left:0;margin-right:15px}[dir=rtl].device-ios .app-layout .navbar .searchbar-input-wrap,[dir=rtl].device-ios .app-layout .searchbar-inner__left{margin-left:10px;margin-right:0}[dir=rtl].device-ios .app-layout .comment-list .item-content .item-inner .comment-header{padding-left:16px}[dir=rtl] .comment-list .item-content .item-inner{padding-left:0}[dir=rtl] .comment-list .item-content .item-inner .comment-header .right{justify-content:space-between}[dir=rtl] .comment-list .item-content .item-inner .comment-header .right .comment-resolve{margin-left:10px;margin-right:0}[dir=rtl] .comment-list .item-content .item-inner .comment-header .name{text-align:right}[dir=rtl] .comment-quote{border-left:0;border-right:1px solid var(--text-secondary);padding-left:16px;padding-right:10px}[dir=rtl] .comment-text,[dir=rtl] .reply-text{padding-left:15px;padding-right:0}[dir=rtl] #add-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #add-comment-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #add-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,[dir=rtl] #add-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #add-reply-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #add-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date,[dir=rtl] #edit-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #edit-comment-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #edit-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,[dir=rtl] #edit-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #edit-reply-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #edit-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date{text-align:right}[dir=rtl] #view-comment-popover .page .page-content{padding:16px 0 60px 16px}[dir=rtl] .wrap-comment{padding:16px 16px 0 24px}[dir=rtl] .shapes .thumb{transform:scaleX(-1)}[dir=rtl] #settings-popover .link,[dir=rtl] .settings-popup .link{display:inline}[dir=rtl] #edit-table-style ul{padding-right:0}[dir=rtl] .color-schemes-menu .item-title{margin-right:20px}[dir=rtl] .list [slot=root-start]{padding:15px 15px 0 0}[dir=rtl] .bullets .item-content,[dir=rtl] .multilevels .item-content,[dir=rtl] .numbers .item-content{padding-right:0}[dir=rtl] .dataview .active:after{left:-5px;right:unset}[dir=rtl] .popover .list .range-number,[dir=rtl] .popup .list .range-number,[dir=rtl] .sheet-modal .list .range-number{text-align:left}[dir=rtl] .popover .list .inner-range-title,[dir=rtl] .popup .list .inner-range-title,[dir=rtl] .sheet-modal .list .inner-range-title{padding-left:0;padding-right:15px}[dir=rtl] #color-picker .right-block,[dir=rtl] .page-review .toolbar #btn-reject-change{margin-left:0;margin-right:20px}[dir=rtl] .view .list li.no-indicator .item-link .item-inner{padding-left:15px;padding-right:0}[dir=rtl] .dialog .modal-password .modal-password__icon{left:4px;right:auto}@media (max-width:550px){.device-ios[dir=rtl] .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__right{margin-left:0;margin-right:10px}.device-ios[dir=rtl] .app-layout .navbar .searchbar-input-wrap{margin-left:0}.device-android[dir=rtl] .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__left{margin-left:33px;margin-right:0}}[dir=rtl] i.icon.icon-next,[dir=rtl] i.icon.icon-numbers-3,[dir=rtl] i.icon.icon-numbers-7,[dir=rtl] i.icon.icon-prev,[dir=rtl] i.icon.icon-table-add-column-left,[dir=rtl] i.icon.icon-table-add-column-right,[dir=rtl] i.icon.icon-table-borders-left,[dir=rtl] i.icon.icon-table-borders-right,[dir=rtl] i.icon.icon-table-remove-column,[dir=rtl] i.icon.icon-text-align-left,[dir=rtl] i.icon.icon-text-align-right{transform:scaleX(-1)}[dir=rtl] i.icon.icon-numbers-1{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M55.728 18v-6.725h-.022l-2.051 1.477v-1.02l2.062-1.482h.946V18h-.935ZM52.35 30.484c0-.677.243-1.239.73-1.687.487-.45 1.096-.676 1.826-.676.691 0 1.277.206 1.757.617.48.412.72.915.72 1.51 0 .43-.119.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.775V36h-5.113v-.666l2.728-2.874c.52-.547.863-.963 1.032-1.246.172-.282.258-.585.258-.907 0-.373-.15-.69-.452-.951a1.585 1.585 0 0 0-1.085-.392c-.454 0-.834.145-1.138.435-.305.29-.457.652-.457 1.085v.005h-.934v-.005ZM53.698 49.423v-.817h.929c.444 0 .807-.127 1.09-.38.283-.259.425-.585.425-.978 0-.394-.131-.708-.393-.94-.26-.233-.632-.35-1.111-.35-.444 0-.806.119-1.085.355-.28.236-.44.559-.484.967h-.929c.054-.66.308-1.184.763-1.574.458-.39 1.05-.585 1.778-.585.698 0 1.278.188 1.74.564.462.375.693.854.693 1.434 0 .483-.143.89-.43 1.219-.286.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.402.564.347.337.52.777.52 1.322 0 .433-.121.823-.364 1.17a2.39 2.39 0 0 1-.989.806c-.415.19-.875.285-1.38.285-.802 0-1.449-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.042.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.595.5-1 0-.454-.161-.814-.483-1.079-.32-.265-.756-.397-1.311-.397h-.972ZM51 17h-1v1h1zM51 35h-1v1h1zM51 52h-1v1h1z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-2{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M52.312 18v-6.725h-.021l-2.052 1.477v-1.02L52.3 10.25h.946V18h-.935Zm2.47 1.488c.123-.208.214-.37.275-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM48.934 30.484c0-.677.243-1.239.73-1.687.487-.45 1.096-.676 1.826-.676.691 0 1.277.206 1.757.617.48.412.72.915.72 1.51 0 .43-.119.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.775V36h-5.113v-.666l2.728-2.874c.52-.547.863-.963 1.032-1.246.172-.282.258-.585.258-.907 0-.373-.15-.69-.452-.951a1.585 1.585 0 0 0-1.085-.392c-.454 0-.834.145-1.138.435-.305.29-.457.652-.457 1.085v.005h-.934v-.005Zm5.849 7.004c.121-.208.213-.37.274-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM50.282 49.423v-.817h.929c.444 0 .807-.127 1.09-.38.283-.259.425-.585.425-.978 0-.394-.131-.708-.392-.94-.262-.233-.633-.35-1.112-.35-.444 0-.806.119-1.085.355-.28.236-.44.559-.484.967h-.929c.054-.66.308-1.184.763-1.574.458-.39 1.05-.585 1.778-.585.698 0 1.278.188 1.74.564.462.375.693.854.693 1.434 0 .483-.144.89-.43 1.219-.286.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.402.564.347.337.52.777.52 1.322 0 .433-.121.823-.364 1.17a2.39 2.39 0 0 1-.989.806c-.415.19-.875.285-1.38.285-.802 0-1.448-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.043.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.595.5-1 0-.454-.161-.814-.483-1.079-.32-.265-.756-.397-1.311-.397h-.972Zm4.5 5.065c.123-.208.214-.37.275-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822Z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-4{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='m56.85 18-.778-2.218h-3.083L52.21 18h-1.015l2.857-7.75h.956L57.866 18H56.85Zm-2.336-6.574-1.24 3.534h2.513l-1.24-3.534h-.033ZM55.03 36h-3.024v-7.75h3.035c.662 0 1.197.177 1.606.531.411.355.617.822.617 1.402 0 .405-.13.772-.392 1.101-.258.326-.573.523-.945.591v.043c.526.068.945.274 1.257.618.315.343.472.773.472 1.289 0 .684-.233 1.217-.698 1.6-.462.383-1.105.575-1.928.575Zm-2.057-6.896v2.486h1.547c.572 0 1.01-.11 1.31-.333.304-.222.457-.542.457-.961 0-.383-.127-.677-.382-.881-.254-.208-.616-.311-1.085-.311h-1.847Zm0 6.042h1.912c.583 0 1.026-.116 1.326-.35.301-.232.452-.572.452-1.02 0-.902-.623-1.353-1.87-1.353h-1.82v2.723ZM54.39 53.129c-1.07 0-1.92-.36-2.55-1.08-.627-.723-.94-1.699-.94-2.927 0-1.217.316-2.188.95-2.911.634-.727 1.48-1.09 2.54-1.09.846 0 1.562.236 2.15.709.59.469.946 1.09 1.068 1.863h-.978a2.1 2.1 0 0 0-.8-1.219c-.408-.308-.888-.462-1.44-.462-.755 0-1.36.283-1.815.849-.455.566-.682 1.32-.682 2.261 0 .953.226 1.71.677 2.272.451.562 1.06.843 1.826.843.57 0 1.05-.13 1.44-.392.39-.261.655-.628.794-1.1h.978c-.18.765-.546 1.354-1.101 1.766-.555.412-1.26.618-2.116.618ZM49 17h-1v1h1zM49 35h-1v1h1zM49 52h-1v1h1z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-5{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M51.404 17.243c.473 0 .863-.136 1.171-.409.312-.275.467-.62.467-1.036v-.467l-1.514.096c-.881.054-1.322.364-1.322.93 0 .268.108.483.323.644.218.161.51.242.875.242Zm-.198.81c-.588 0-1.06-.155-1.418-.467-.358-.311-.537-.723-.537-1.235 0-.498.186-.888.558-1.17.373-.287.91-.452 1.611-.495l1.622-.097v-.483c0-.358-.114-.634-.343-.827-.23-.194-.557-.29-.983-.29-.337 0-.621.08-.854.241-.23.162-.373.378-.43.65h-.897c.015-.487.231-.895.65-1.224.419-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36V18h-.886v-1.004h-.022c-.164.322-.415.58-.752.773-.336.19-.707.285-1.111.285Zm3.577 1.435c.121-.208.213-.37.274-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM51.759 36.054a2.3 2.3 0 0 1-1.117-.264 1.979 1.979 0 0 1-.769-.767h-.02V36h-.887v-8.089h.934v3.239h.022c.183-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.322.272 1.773.817.45.54.677 1.251.677 2.132 0 .884-.228 1.597-.683 2.138-.45.54-1.047.81-1.788.81Zm-.167-5.065c-.505 0-.915.197-1.23.59-.311.39-.467.9-.467 1.526 0 .63.156 1.14.467 1.53.315.391.725.586 1.23.586.509 0 .915-.191 1.22-.574.308-.384.461-.898.461-1.542 0-.641-.154-1.153-.462-1.536-.304-.387-.71-.58-1.219-.58Zm3.19 6.499c.123-.208.214-.37.275-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM54.31 49.095h-.918a1.274 1.274 0 0 0-.484-.795c-.261-.207-.601-.311-1.02-.311-.509 0-.919.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.468 1.547.315.38.728.57 1.24.57.405 0 .736-.092.994-.275.261-.186.432-.453.51-.8h.919c-.079.57-.34 1.03-.784 1.38-.44.351-.989.527-1.644.527-.802 0-1.445-.265-1.928-.795-.484-.534-.725-1.252-.725-2.154 0-.888.241-1.6.725-2.138.483-.54 1.122-.81 1.917-.81.684 0 1.245.189 1.681.569.437.376.686.832.747 1.37Zm.473 5.393c.121-.208.213-.37.274-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822Z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-6{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M54.82 17.243c.473 0 .863-.136 1.171-.409.312-.275.468-.62.468-1.036v-.467l-1.515.096c-.881.054-1.321.364-1.321.93 0 .268.107.483.322.644.218.161.51.242.875.242Zm-.198.81c-.588 0-1.06-.155-1.418-.467-.358-.311-.538-.723-.538-1.235 0-.498.187-.888.56-1.17.371-.287.909-.452 1.61-.495l1.623-.097v-.483c0-.358-.115-.634-.344-.827-.23-.194-.557-.29-.983-.29-.337 0-.621.08-.854.241-.23.162-.373.378-.43.65h-.897c.014-.487.231-.895.65-1.224.419-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36V18h-.886v-1.004h-.022a1.86 1.86 0 0 1-.752.773c-.336.19-.707.285-1.111.285ZM55.175 36.054a2.3 2.3 0 0 1-1.117-.264 1.979 1.979 0 0 1-.768-.767h-.022V36h-.886v-8.089h.934v3.239h.022c.182-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.322.272 1.773.817.45.54.676 1.251.676 2.132 0 .884-.227 1.597-.682 2.138-.45.54-1.047.81-1.788.81Zm-.167-5.065c-.505 0-.915.197-1.23.59-.311.39-.467.9-.467 1.526 0 .63.156 1.14.467 1.53.315.391.725.586 1.23.586.509 0 .915-.191 1.22-.574.307-.384.462-.898.462-1.542 0-.641-.154-1.153-.462-1.536-.305-.387-.711-.58-1.22-.58ZM57.726 49.095h-.918a1.274 1.274 0 0 0-.484-.795c-.261-.207-.601-.311-1.02-.311-.509 0-.919.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.468 1.547.315.38.728.57 1.24.57.405 0 .736-.092.994-.275.261-.186.432-.453.51-.8h.919c-.079.57-.34 1.03-.784 1.38-.44.351-.989.527-1.644.527-.802 0-1.445-.265-1.928-.795-.483-.534-.725-1.252-.725-2.154 0-.888.242-1.6.725-2.138.483-.54 1.122-.81 1.917-.81.684 0 1.245.189 1.681.569.437.376.686.832.747 1.37ZM51 17h-1v1h1zM51 35h-1v1h1zM51 52h-1v1h1z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-align-left,[dir=rtl] i.icon.icon-align-right{transform:scaleX(-1)}[dir=rtl] i.icon.icon-text-orientation-horizontal{background-color:var(--brand-cell);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M9.514 10.75h1.755L8.069 2H6.363L3.25 10.75h1.712l.66-1.988h3.194l.698 1.988ZM7.197 4.041l1.101 3.247h-2.18l1.079-3.247ZM16 2h-3.194v8.75h2.72c1.028-.008 1.677-.028 1.946-.06.429-.051.789-.189 1.08-.412.294-.226.525-.527.692-.9.17-.379.256-.767.256-1.165 0-.505-.13-.945-.392-1.319s-.637-.638-1.123-.794c.345-.17.617-.427.817-.77.204-.342.306-.718.306-1.128 0-.378-.082-.718-.246-1.02a2.162 2.162 0 0 0-.616-.734 1.93 1.93 0 0 0-.834-.358C17.103 2.03 16.632 2 16 2Zm-1.58 3.48V3.456h.926c.76 0 1.22.01 1.38.03.268.036.47.14.604.31.138.168.208.387.208.657 0 .283-.08.511-.24.686-.157.172-.373.275-.65.31-.152.02-.542.03-1.171.03h-1.058Zm0 3.796v-2.34h1.302c.734 0 1.21.042 1.428.125.222.084.391.217.507.4.117.183.175.406.175.669 0 .31-.076.559-.23.746a.973.973 0 0 1-.582.346c-.157.036-.526.054-1.107.054h-1.494ZM6.016 13.25l-3.52 3.833-.497.542.498.542L6.018 22l.995-1.084-2.318-2.524H22v-1.534H4.695l2.318-2.524-.996-1.084Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain}[dir=rtl] i.icon.icon-text-orientation-anglecount{background-color:var(--brand-cell);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23000' d='m12.614 10.658-1.076-1.113.79-1.703-1.958-2.025-1.623.842-1.05-1.085L14.972 2l1.046 1.082-3.403 7.576Zm.301-4.079 1.316-2.756-2.653 1.374 1.337 1.382ZM18.92 6.085l1.96 2.025c.387.4.657.718.81.952.157.233.255.485.292.756a2 2 0 0 1-.073.856 1.905 1.905 0 0 1-.475.802c-.251.26-.544.434-.879.522a1.61 1.61 0 0 1-.973-.03c.203.407.27.812.202 1.215a2.032 2.032 0 0 1-.568 1.085 2.42 2.42 0 0 1-.871.575 1.928 1.928 0 0 1-.977.133c-.315-.043-.62-.185-.914-.424-.185-.15-.595-.549-1.23-1.196l-1.668-1.724 5.365-5.547Zm.097 1.946-1.24 1.283.648.67c.386.399.631.64.737.724.191.153.387.224.588.215.205-.01.395-.104.568-.283.166-.172.258-.354.275-.548.023-.194-.038-.387-.18-.58-.086-.114-.362-.412-.828-.894l-.568-.587Zm-2.133 2.206-1.435 1.483.916.947c.357.369.594.591.712.668a.822.822 0 0 0 .57.15c.208-.022.407-.131.597-.328.161-.166.262-.344.303-.534a.92.92 0 0 0-.066-.575c-.082-.191-.348-.52-.798-.985l-.8-.826Z'/%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M2 8.72h5.604v1.358H4.24L15.45 20.916 14.328 22 3.403 11.144v3.286H2V8.72Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain}[dir=rtl] i.icon.icon-text-orientation-angleclock{background-color:var(--brand-cell);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M8.72 22v-5.604h1.358v3.363L20.916 8.55 22 9.672 11.144 20.597h3.286V22H8.72Z' clip-rule='evenodd'/%3E%3Cpath fill='%23000' d='m10.658 11.386-1.113 1.076-1.703-.79-2.025 1.958.842 1.623-1.085 1.05L2 9.028l1.082-1.046 7.576 3.403Zm-4.079-.301L3.823 9.769l1.374 2.653 1.382-1.337ZM6.085 5.08 8.11 3.12c.4-.387.718-.657.952-.81.233-.157.485-.255.756-.292a2 2 0 0 1 .856.073c.295.085.562.243.802.475.26.251.434.544.522.879.09.332.08.657-.03.973.407-.203.812-.27 1.215-.202.403.07.764.259 1.085.568.252.244.444.535.575.871.131.332.175.658.133.977-.043.315-.185.62-.424.914-.15.185-.549.595-1.196 1.23l-1.724 1.668-5.547-5.365Zm1.946-.097 1.283 1.24.67-.648c.399-.385.64-.631.724-.737.153-.191.224-.387.215-.588-.01-.205-.104-.395-.283-.568-.172-.166-.354-.257-.548-.275-.194-.023-.387.038-.58.18-.114.086-.412.362-.894.828l-.587.568Zm2.206 2.133 1.483 1.435.947-.916c.369-.357.591-.594.668-.711a.822.822 0 0 0 .15-.57c-.022-.209-.131-.408-.328-.598a1.104 1.104 0 0 0-.534-.303.92.92 0 0 0-.575.066c-.191.082-.52.348-.985.798l-.826.8Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain}.device-ios{--toolbar-background:var(--background-primary,#fff);--toolbar-segment:var(--brand-cell,#40865C);--toolbar-icons:var(--brand-cell,#40865C)}.device-android{--toolbar-background:var(--brand-cell,#40865C)}.device-android .theme-type-dark{--toolbar-icons:var(--brand-cell,#40865C)}.page.page-users .block-title{font-size:17px;font-weight:400;line-height:17px;margin-bottom:20px;margin-top:20px;text-transform:none}.page.page-users .color{border-radius:50px;color:var(--fill-white);font-size:18px;line-height:40px;min-height:40px;min-width:40px;text-align:center}.about .page-content{display:flex;flex-direction:column;text-align:center}.about_ios{padding-bottom:30px;padding-top:120px}.about_android{padding-bottom:16px;padding-top:60px}.about_tablet{padding-bottom:12px;padding-top:12px}.about__text{color:var(--text-normal);font-size:12px;font-style:normal;font-weight:400;line-height:16px;margin:0;text-align:center}.about a{color:var(--brand-cell)}.about .logo-block__elem{display:flex;justify-content:center}.about .logo-block__elem img{height:auto;max-width:100%}.about__logo{background:url(../../../spreadsheeteditor/mobile/resources/img/about/logo-new.svg) no-repeat 50%;height:80px;width:100%}.about__editor{flex-grow:1;margin-top:20px}.about__contacts{padding-left:72px;padding-right:72px;text-align:center}.about__customer,.about__licensor{margin-top:12px;text-align:center}.theme-type-dark .about__logo{background:url(../../../spreadsheeteditor/mobile/resources/img/about/logo-new-white.svg) no-repeat 50%}.row{--f7-cols-per-row:1;align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:space-between}.row+.row{margin-top:var(--f7-grid-row-gap)}.navbar.main-navbar{height:0}.navbar.main-navbar.navbar-with-logo{height:26px}.navbar.main-navbar .navbar-inner{display:flex;justify-content:center;padding:0}.navbar.main-navbar .navbar-bg:after,.navbar.main-navbar .navbar-bg:before{content:none}.navbar-hidden{transform:translate3d(0,calc((var(--f7-navbar-height) + var(--f7-subnavbar-height))*-1),0)}.navbar-hidden+.page-content,.navbar-hidden+.page>.page-content{padding-top:0}.page.editor>.page-content{transition:padding-top .3s ease-in}.main-logo{align-items:center;display:flex;height:100%;justify-content:center;max-width:100%;width:100%}.main-logo .custom-logo-image{height:auto;max-height:20px;width:auto}.subnavbar .subnavbar-inner{padding:0}.subnavbar .subnavbar-inner .title{flex-shrink:1;margin:0;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap}.subnavbar .icon-back{color:var(--toolbar-icons)}.page.page-with-subnavbar .page-content{--f7-page-subnavbar-offset:0px}.page.page-with-subnavbar.page-with-logo .page-content{--f7-page-subnavbar-offset:26px}.popover .list:first-child,.popup .list:first-child,.sheet-modal .list:first-child{margin-bottom:0;margin-top:0}.popover .list .inner-range-title,.popup .list .inner-range-title,.sheet-modal .list .inner-range-title{color:var(--text-normal);padding:15px 0 0 15px}.popover .list .range-number,.popup .list .range-number,.sheet-modal .list .range-number{color:var(--text-normal);min-width:60px;text-align:right}.popover .page-content.no-padding-top,.popup .page-content.no-padding-top,.sheet-modal .page-content.no-padding-top{padding-top:0}.sheet-modal.coauth__sheet{transition:all .3s}.disabled,[disabled]{opacity:.55;pointer-events:none}.text-content{padding:14px 10px 0}.view .list{--menu-list-offset:0px;max-width:100%}.view .list ul{background:var(--f7-list-bg-color);max-width:100%}.view .list li.no-indicator .item-link .item-inner{padding-right:15px}.view .list li.no-indicator .item-link .item-inner:before{content:none}.view .list .item-text{-webkit-line-clamp:none;height:auto;max-height:none;text-overflow:clip;white-space:normal}.view .list .font-item img{filter:var(--image-border-types-filter,none)}.view .list .buttons .button.active{background-color:var(--active-opacity-cell)}.view .list .item-link .item-inner{width:100%}.view .list .item-inner{color:var(--text-normal)}.bullets,.multilevels,.numbers{min-height:160px}.bullets .row.list,.multilevels .row.list,.numbers .row.list{margin:0}.bullets .row.list ul,.multilevels .row.list ul,.numbers .row.list ul{grid-gap:10px;background:none;display:grid;grid-template-columns:repeat(4,auto);justify-content:space-around;padding:5px;width:100%}.bullets .row.list ul:after,.bullets .row.list ul:before,.multilevels .row.list ul:after,.multilevels .row.list ul:before,.numbers .row.list ul:after,.numbers .row.list ul:before{display:none}.bullets .row.list ul li,.multilevels .row.list ul li,.numbers .row.list ul li{border:1px solid #c4c4c4;height:70px;width:70px}html.pixel-ratio-2 .bullets .row.list ul li,html.pixel-ratio-2 .multilevels .row.list ul li,html.pixel-ratio-2 .numbers .row.list ul li{border:.5px solid #c4c4c4}html.pixel-ratio-3 .bullets .row.list ul li,html.pixel-ratio-3 .multilevels .row.list ul li,html.pixel-ratio-3 .numbers .row.list ul li{border:.33px solid #c4c4c4}.bullets .row.list ul li .thumb,.multilevels .row.list ul li .thumb,.numbers .row.list ul li .thumb{background-color:var(--fill-white);background-size:cover;height:100%;width:100%}.bullets .row.list ul li .thumb label,.multilevels .row.list ul li .thumb label,.numbers .row.list ul li .thumb label{color:var(--fill-black);position:absolute;text-align:center;top:34%;width:100%}.bullets .row.list ul li .item-marker,.bullets .row.list ul li .item-multilevellist,.bullets .row.list ul li .item-number,.multilevels .row.list ul li .item-marker,.multilevels .row.list ul li .item-multilevellist,.multilevels .row.list ul li .item-number,.numbers .row.list ul li .item-marker,.numbers .row.list ul li .item-multilevellist,.numbers .row.list ul li .item-number{height:68px;width:68px}.bullets .row.list .item-content,.multilevels .row.list .item-content,.numbers .row.list .item-content{min-height:68px;padding-left:0;padding-right:0}.bullets .row.list .item-content .item-inner,.multilevels .row.list .item-content .item-inner,.numbers .row.list .item-content .item-inner{padding:0}.bullets .row.list .item-content .item-inner:after,.multilevels .row.list .item-content .item-inner:after,.numbers .row.list .item-content .item-inner:after{display:none}.popover .page .list:first-child:last-child ul{background-color:var(--f7-list-bg-color);border-radius:0}.popover .list:first-child li:first-child,.popover .list:first-child li:first-child a,.popover .list:first-child li:first-child>label,.popover .list:last-child li:last-child,.popover .list:last-child li:last-child a,.popover .list:last-child li:last-child>label,.popover .page .list:first-child:last-child ul li:first-child .item-link,.popover .page .list:first-child:last-child ul li:last-child .item-link{border-radius:0}.shapes li{height:70px;margin:0 1px;width:70px}.shapes li .thumb{background-color:var(--brand-cell);height:100%;width:100%}.chart-types{width:100%}.chart-types .row{padding:0 10px}.chart-types li{height:60px;margin:6px;width:60px}.chart-types li .thumb{background-size:contain;height:100%;width:100%}.chart-styles .row li{margin:0;padding:1px}.chart-styles .row img{height:50px;width:50px}.segmented .decrement,.segmented .increment{text-overflow:clip}.content-block{box-sizing:border-box;margin:32px 0;padding:0 16px}.content-block p{color:var(--text-normal)}.color-schemes-menu{cursor:pointer;display:block}.color-schemes-menu .item-inner{justify-content:flex-start}.color-schemes-menu .color-schema-block{display:flex}.color-schemes-menu .color{box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);margin:0 2px 0 0;min-height:26px;min-width:26px}.color-schemes-menu .item-title{color:var(--text-normal);margin-left:20px}.slide-layout__list{margin:auto}.slide-layout ul{display:flex;flex-wrap:wrap;justify-content:space-around}.slide-layout ul:after,.slide-layout ul:before{display:none}.slide-layout li{margin-top:12px;position:relative;z-index:1}.slide-layout li img{box-shadow:0 0 0 1px rgba(0,0,0,.15)}.slide-layout .item-inner{padding-top:0}.slide-layout .item-inner:after{display:none}.slide-layout .item-inner:before{background-color:var(--brand-cell);background-repeat:no-repeat;bottom:0;content:"";height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='11' fill='transparent'/%3E%3Cpath d='M11 21a10 10 0 1 1 10-10 10 10 0 0 1-10 10Zm6.4-13.68L17.06 7a.48.48 0 0 0-.67 0l-7 6.84-2.44-2.6a.51.51 0 0 0-.59.08l-.36.34a.58.58 0 0 0 0 .65l3.19 3.35a.38.38 0 0 0 .39 0L17.4 8a.48.48 0 0 0 0-.67Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;opacity:0;position:absolute;right:11px;width:22px;z-index:1}.slide-layout .active .item-inner:before{opacity:1}.slide-transition .splitter{align-items:center;color:#000000;display:flex}.slide-transition .splitter label{margin:0 5px}.slide-transition .buttons-row{display:flex;margin:0 0 0 10px;min-width:90px}.slide-transition .buttons-row .button{width:100%}.slide-transition .buttons-row .button:first-child{border-left-style:solid;border-left-width:1px;border-radius:5px 0 0 5px}.slide-transition .buttons-row .button:last-child{border-radius:0 5px 5px 0}.style-effect .list .item-title,.style-type .list .item-title{font-weight:400}.range-slider-delay{appearance:none;background:linear-gradient(90deg,#b7b8b7 0,#b7b8b7);background-position:50%;background-repeat:no-repeat;background-size:100% 2px;border:none;box-sizing:initial;margin:4px 0 5px;outline:0;width:100%}.range-slider-delay:disabled{opacity:.55}.range-slider-delay::-webkit-slider-thumb{appearance:none;background:#ffffff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.3);cursor:pointer;height:28px;width:28px}.range-slider-delay::-ms-thumb{appearance:none;background:#ffffff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.3);cursor:pointer;height:28px;width:28px}.buttons-list ul li{border:0;font-weight:400}.buttons-list ul li .item-link{height:100%}.buttons-list ul li .item-link .item-content{height:100%;min-height:auto;padding:0}.buttons-list ul li .item-link .item-inner{align-items:center;justify-content:center;min-height:auto;padding:0}.buttons-list ul li .item-link .item-inner:before{display:none}.item-color-auto .color-auto{background-color:#000000;height:22px;width:22px}.item-color-auto.active .color-auto{border-radius:1px;box-shadow:0 0 0 1px #ffffff,0 0 0 4px var(--brand-cell)}.page .color-palettes .list ul .palette{padding:8px 0}.page .color-palettes .list ul .palette a{border-radius:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);flex-grow:1;margin:1px 1px 0 0;min-height:26px;min-width:10px;position:relative}.page .color-palettes .list ul .palette a.active:after{border-radius:1px;box-shadow:0 0 0 1px #ffffff,0 0 0 4px var(--brand-cell);content:" ";height:100%;position:absolute;width:100%;z-index:1}.page .color-palettes .list ul .palette a.transparent{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='0 0 22 22'%3E%3Cpath fill='none' stroke='red' stroke-linecap='undefined' stroke-linejoin='undefined' stroke-width='2' d='M0 22 22 0'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:100% 100%}.page .color-palettes .row{padding:0}.page .color-palettes .list .item-inner{color:var(--text-normal);display:block}.page .color-palettes .dynamic-colors .palette,.page .color-palettes .standart-colors .palette{display:flex}.page .color-palettes .dynamic-colors .empty-color{background-color:#ffffff}#color-picker{align-items:center;display:flex;justify-content:space-around;margin:4px auto 0;max-width:300px}#color-picker .color-picker-container{font-size:0;height:auto;max-width:100%;position:relative;width:calc(100% - 94px)}#color-picker .color-picker-container .color-picker-module-wheel{margin:0}#color-picker .right-block{margin-left:20px}#color-picker .right-block .color-hsb-preview{border:1px solid #c4c4c4;border-radius:100px;height:72px;overflow:hidden;width:72px}#color-picker .right-block .color-hsb-preview .current-color-hsb-preview,#color-picker .right-block .color-hsb-preview .new-color-hsb-preview{height:36px}#color-picker .right-block .color-hsb-preview .new-color-hsb-preview{border-radius:100px 100px 0 0}#color-picker .right-block .color-hsb-preview .current-color-hsb-preview{border-radius:0 0 100px 100px}#color-picker .right-block .button-round{align-items:center;background-color:var(--fill-white);border:0;border-radius:100px;box-shadow:0 4px 4px rgba(0,0,0,.25);display:flex;height:72px;justify-content:center;margin-top:20px;padding:0;width:72px}.table-styles{width:100%}.table-styles .row,.table-styles .row li{margin-bottom:12px}.table-styles .row div,.table-styles .row li{align-items:center;box-shadow:0 0 0 1px #c4c4c4;display:flex;justify-content:center}.table-styles .row div,.table-styles li{margin:0;padding:1px}.table-styles .row div img,.table-styles li img{height:50px;width:70px}#edit-table-style .list ul ul{padding-left:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.icon.lang-flag{background-image:url(../../../spreadsheeteditor/mobile/resources/img/controls/flags@2x.png);background-size:48px auto;height:12px;width:16px}.lang-flag.ca,.lang-flag.ca-ES{background-position:0 0}.lang-flag.cs,.lang-flag.cs-CZ{background-position:-16px 0}.lang-flag.da,.lang-flag.da-DK{background-position:-32px 0}.lang-flag.de,.lang-flag.de-DE{background-position:0 -12px}.lang-flag.el,.lang-flag.el-GR{background-position:-16px -12px}.lang-flag.en,.lang-flag.en-US{background-position:-32px -12px}.lang-flag.fr,.lang-flag.fr-FR{background-position:0 -24px}.lang-flag.hu,.lang-flag.hu-HU{background-position:-16px -24px}.lang-flag.it,.lang-flag.it-IT{background-position:-32px -24px}.lang-flag.ko,.lang-flag.ko-KR{background-position:0 -36px}.lang-flag.nl,.lang-flag.nl-NL{background-position:-16px -36px}.lang-flag.nb,.lang-flag.nb-NO,.lang-flag.nn,.lang-flag.nn-NO{background-position:-32px -36px}.lang-flag.pl,.lang-flag.pl-PL{background-position:0 -48px}.lang-flag.pt,.lang-flag.pt-BR{background-position:-16px -48px}.lang-flag.ro,.lang-flag.ro-RO{background-position:-32px -48px}.lang-flag.ru,.lang-flag.ru-RU{background-position:0 -60px}.lang-flag.sv,.lang-flag.sv-SE{background-position:-32px -60px}.lang-flag.tr,.lang-flag.tr-TR{background-position:0 -72px}.lang-flag.uk,.lang-flag.uk-UA{background-position:-16px -72px}.lang-flag.lv,.lang-flag.lv-LV{background-position:-32px -72px}.lang-flag.lt,.lang-flag.lt-LT{background-position:0 -84px}.lang-flag.vi,.lang-flag.vi-VN{background-position:-16px -84px}.lang-flag.de-CH,.lang-flag.fr-CH,.lang-flag.it-CH{background-position:-32px -84px}.lang-flag.pt-PT{background-position:-16px -96px}.lang-flag.de-AT{background-position:-32px -96px}.lang-flag.es,.lang-flag.es-ES{background-position:0 -108px}.lang-flag.en-GB{background-position:-32px -108px}.lang-flag.en-AU{background-position:0 -120px}.lang-flag.az-Latn-AZ{background-position:-16px -120px}.lang-flag.en-ID,.lang-flag.id,.lang-flag.id-ID{background-position:-32px -120px}.lang-flag.bg,.lang-flag.bg-BG{background-position:0 -132px}.lang-flag.ca-ES-valencia{background-position:-16px -132px}.lang-flag.en-CA{background-position:-32px -132px}.lang-flag.en-ZA{background-position:0 -144px}.lang-flag.eu,.lang-flag.eu-ES{background-position:-16px -144px}.lang-flag.gl,.lang-flag.gl-ES{background-position:-32px -144px}.lang-flag.hr,.lang-flag.hr-HR{background-position:0 -156px}.lang-flag.lb,.lang-flag.lb-LU{background-position:-16px -156px}.lang-flag.mn,.lang-flag.mn-MN{background-position:-32px -156px}.lang-flag.sl,.lang-flag.sl-SI{background-position:0 -168px}.lang-flag.sr,.lang-flag.sr-Cyrl-RS,.lang-flag.sr-Latn-RS{background-position:-16px -168px}.lang-flag.sk,.lang-flag.sk-SK{background-position:-32px -168px}.lang-flag.kk,.lang-flag.kk-KZ{background-position:0 -180px}.lang-flag.fi,.lang-flag.fi-FI,.lang-flag.sv-FI{background-position:-16px -180px}.lang-flag.zh,.lang-flag.zh-CN{background-position:-32px -180px}.lang-flag.ja,.lang-flag.ja-JP{background-position:0 -192px}.lang-flag.es-MX{background-position:-16px -192px}.checkbox-in-modal{align-items:center;display:flex;margin-top:10px}.checkbox-in-modal .right-text{margin-left:10px}.username-tip{color:#ffffff;display:none;height:20px;opacity:0;padding:0 10px;pointer-events:none;position:absolute;transition:opacity .1ms ease-out;z-index:900}.username-tip.active{display:block;opacity:1}.dlg-adv-options{z-index:13700}.dlg-adv-options .content-block{padding:0}.dlg-adv-options .picker-3d .picker-item{font-size:16px;padding:0;text-align:left}.dlg-adv-options .picker-center-highlight{left:0;right:0;width:100%}.dlg-macros-request .dialog-text{word-break:break-word}@keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}@-o-keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}@-moz-keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}@-webkit-keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}.doc-placeholder-container{height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:6000}.statusbar .statusbar--box-tabs>ul>.locked a{box-shadow:inset 0 2px red}.font-item .item-inner{overflow:hidden}.font-item .item-inner:after{left:16px}.cell-editor{overflow:initial}.functions-list{background-color:var(--background-primary);max-height:200px;overflow-x:hidden;overflow-y:auto;width:360px}.functions-list__mobile{box-shadow:0 10px 10px -10px rgba(0,0,0,.3);left:0;position:absolute;right:0;width:100%}.functions-list__mobile .list{margin:0}.functions-list__mobile .list ul:before{display:none}.functions-list__mobile .list .item-content{padding-left:0}.functions-list__mobile .list .item-inner{padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left) - var(--menu-list-offset))}.functions-list__mobile .list .item-title{font-size:15px}#idx-functions-list{width:350px}#idx-functions-list .popover-inner .navbars .right .link{font-weight:600}#idx-functions-list .popover-inner .navbars .navbar-bg{background:var(--background-secondary)}#idx-functions-list .popover-inner .navbars .navbar-bg:after,#idx-functions-list .popover-inner .page-function-info .navbar .navbar-bg:after{background:var(--background-menu-divider)}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner{background:var(--background-secondary)}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner .title{color:var(--text-normal)}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner .right .link{color:var(--brand-cell);font-weight:600}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner .icon-back:after{color:var(--brand-cell)}.highlight-palette{width:100%}.highlight-color{box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);flex-grow:1;margin:1px;min-height:34px;min-width:10px;position:relative}.highlight-color_active:after{border-radius:1px;box-shadow:0 0 0 1px #ffffff,0 0 0 4px #446995;content:" ";height:100%;position:absolute;width:100%;z-index:1}#idx-celleditor.expanded .functions-list__mobile{top:70px}.popover__functions{box-shadow:0 10px 100px rgba(0,0,0,.3)}.popover__functions .view{transition:height .2s}.popover__functions .popover-angle.on-bottom{display:none}.target-function-list{bottom:0;height:100%;left:0;position:absolute;top:0;width:0}.dropdown-list-popup{bottom:0;height:260px;top:auto}.dropdown-list__placeholder{opacity:.6}.dropdown-list__placeholder .item-inner{border-bottom:1px solid var(--f7-list-item-border-color)}.swiper-wrapper .swiper-slide .list ul{background-color:initial}.swiper-pagination-bullet{background:var(--background-menu-divider);opacity:1}.swiper-pagination-bullet-active{background:var(--text-secondary)}.swiper-pagination-bullets{bottom:9px;position:fixed;width:100%}.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 5.5px}.preview-cell-style{background-color:var(--fill-white);background-position:50%;background-repeat:no-repeat;background-size:cover;border:.5px solid var(--background-menu-divider);border-radius:4px;height:44px;width:104px}.sharing-placeholder{height:100%}.sheet-modal .page-current-comment{padding-bottom:60px}.picker-columns{justify-content:space-around}.row-picker .col-50{color:var(--text-secondary);text-align:center}.block{font-size:12px;font-style:normal;font-weight:400;line-height:16px;margin-top:8px}.block-title+.block,.block-title+.block-header,.block-title+.card,.block-title+.list,.block-title+.timeline{margin:0}.inputs-list{margin-bottom:0}.inputs-list ul{background:var(--f7-list-bg-color);list-style:none;margin:0;padding:0;position:relative}.list input[type=password],.list input[type=text]{background:transparent}.dialog .modal-password{position:relative}.dialog .modal-password__icon{position:absolute;right:4px;top:calc(50% - 12.5px)}.dialog .modal-password .item-input-wrap{align-items:center;display:flex;justify-content:space-between}.version-history__user{border-radius:50%;border-radius:50px;color:var(--fill-white);font-size:18px;height:40px;line-height:40px;min-height:40px;min-width:40px;text-align:center;width:40px}.accept-reject .link{margin-right:20px}.beta-badge{border-radius:4px;color:var(--fill-white);font-size:12px;font-weight:400;letter-spacing:.5px;line-height:16px;padding:2px 4px}.close-editor-btn .item-inner{padding-left:36px}.close-editor-btn .item-title{color:var(--text-error)}.device-ios .app-layout{--f7-navbar-link-color:var(--brand-cell);--f7-subnavbar-link-color:var(--brand-cell);--f7-navbar-text-color:var(--text-normal);--f7-navbar-title-line-height:44px;--f7-navbar-link-line-height:44px;--f7-navbar-title-font-size:17px;--f7-list-bg-color:var(--background-primary);--f7-navbar-bg-color:var(--toolbar-background);--f7-tabbar-link-inactive-color:var(--toolbar-segment);--f7-radio-active-color:var(--brand-cell);--f7-toggle-active-color:var(--brand-cell);--f7-range-bar-active-bg-color:var(--brand-cell);--f7-list-button-text-color:var(--brand-cell);--f7-list-item-border-color:var(--background-menu-divider);--f7-page-bg-color:var(--background-tertiary);--f7-list-item-title-text-color:var(--text-normal);--f7-list-item-text-text-color:var(--text-normal);--f7-list-item-subtitle-text-color:var(--text-secondary);--f7-label-text-color:var(--text-normal);--f7-list-item-after-text-color:var(--text-normal);--f7-input-text-color:var(--text-normal);--f7-block-title-text-color:var(--text-secondary);--f7-input-placeholder-color:var(--text-secondary);--f7-list-chevron-icon-color:var(--text-tertiary);--f7-searchbar-search-icon-color:var(--text-tertiary);--f7-searchbar-input-clear-button-color:var(--text-tertiary);--f7-toggle-inactive-border-color:var(--background-menu-divider);--f7-toggle-inactive-bg-color:var(--background-menu-divider);--f7-actions-button-border-color:var(--background-menu-divider);--f7-popover-bg-color:var(--background-primary);--f7-dialog-bg-color-rgb:var(--background-secondary);--f7-dialog-title-text-color:var(--text-normal);--f7-dialog-text-color:var(--text-normal);--f7-dialog-button-text-color:var(--brand-cell);--f7-dialog-border-divider-color:var(--background-menu-divider);--f7-subnavbar-border-color:var(--background-menu-divider);--f7-list-border-color:var(--background-menu-divider);--f7-picker-item-text-color:rgba(var(--text-normal),0.45);--f7-picker-item-selected-text-color:var(--text-normal);--f7-block-text-color:var(--text-secondary);--f7-theme-color-shade:var(--background-primary);--f7-fab-pressed-bg-color:var(--background-primary);--f7-input-clear-button-color:var(--text-tertiary)}.device-ios .app-layout #editor-navbar.navbar .left a+a,.device-ios .app-layout #editor-navbar.navbar .right a+a{margin-left:0}.device-ios .app-layout .navbar,.device-ios .app-layout .navbar-bg,.device-ios .app-layout .subnavbar{background-color:var(--f7-navbar-bg-color)}.device-ios .app-layout .navbar a.btn-doc-back,.device-ios .app-layout .navbar-bg a.btn-doc-back,.device-ios .app-layout .subnavbar a.btn-doc-back{width:22px}.device-ios .app-layout .navbar .title,.device-ios .app-layout .navbar-bg .title,.device-ios .app-layout .subnavbar .title{color:var(--text-normal)}.device-ios .app-layout .navbar .navbar-inner,.device-ios .app-layout .navbar .subnavbar-inner,.device-ios .app-layout .navbar-bg .navbar-inner,.device-ios .app-layout .navbar-bg .subnavbar-inner,.device-ios .app-layout .subnavbar .navbar-inner,.device-ios .app-layout .subnavbar .subnavbar-inner{z-index:auto}.device-ios .app-layout .navbar .sheet-close,.device-ios .app-layout .navbar-bg .sheet-close,.device-ios .app-layout .subnavbar .sheet-close{display:flex;height:44px;justify-content:center;width:44px}.device-ios .app-layout .subnavbar .icon-back{color:var(--brand-cell)}.device-ios .app-layout .subnavbar .title{font-size:15px;font-weight:400}.device-ios .app-layout .popover__titled .list:first-child li:first-child>label,.device-ios .app-layout .popover__titled .list:first-child li:last-child>label,.device-ios .app-layout .popover__titled .list:first-child ul,.device-ios .app-layout .popover__titled .list:last-child li:first-child>label,.device-ios .app-layout .popover__titled .list:last-child li:last-child>label,.device-ios .app-layout .popover__titled .list:last-child ul{border-radius:0}.device-ios .app-layout .popover__titled .popover-inner>.view{border-radius:var(--f7-popover-border-radius)}.device-ios .app-layout .popover__titled .navbar-bg{backdrop-filter:none}.device-ios .app-layout .popover__titled .navbar-bg:after{background:var(--background-menu-divider)}.device-ios .app-layout .popover__titled .list:last-child li:last-child:after{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-navbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%}.device-ios .app-layout .popover li:last-child .segmented a:first-child{border-radius:var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius)}.device-ios .app-layout .popover li:last-child .segmented a:last-child{border-radius:0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0}.device-ios .app-layout .list .item-content .color-preview{background:var(--fill-white);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);box-sizing:border-box;display:inline-block;height:8px;margin-top:21px;width:22px}.device-ios .app-layout .list .item-content .item-after .color-preview{height:30px;margin-top:-3px;width:75px}.device-ios .app-layout .list .item-inner{padding-top:7px}.device-ios .app-layout .list .item-inner .item-after .after-start{margin:0 5px}.device-ios .app-layout .list .item-inner .item-after .segmented{margin-left:10px;min-width:90px}.device-ios .app-layout .list .buttons .item-inner{align-items:stretch;padding-bottom:0;padding-top:0}.device-ios .app-layout .list .buttons .item-inner>.row{align-items:stretch;width:100%}.device-ios .app-layout .list .buttons .item-inner>.row .button{align-items:center;border:none;border-radius:0;display:flex;flex:1;font-size:17px;height:inherit;justify-content:center}.device-ios .app-layout .list .list-input-right input{text-align:right}.device-ios .app-layout .links-list a:after,.device-ios .app-layout .list .item-inner:after,.device-ios .app-layout .simple-list li:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.device-ios .app-layout .tab-buttons{align-self:center;display:flex;flex-wrap:nowrap;width:100%}.device-ios .app-layout .tab-buttons .tab-link{-webkit-box-flex:1;border:1px solid var(--toolbar-segment);color:var(--brand-cell);cursor:pointer;display:block;font-family:inherit;font-size:14px;font-weight:600;height:29px;line-height:26px;margin:0;outline:0;overflow:hidden;padding:0 1px;position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;width:100%}.device-ios .app-layout .tab-buttons .tab-link:first-child{border-left-style:solid;border-left-width:1px;border-radius:5px 0 0 5px}.device-ios .app-layout .tab-buttons .tab-link:last-child{border-radius:0 5px 5px 0}.device-ios .app-layout .tab-buttons .tab-link.tab-link-active{background:var(--toolbar-segment);color:var(--brand-text-on-brand)}.device-ios .app-layout .tab-buttons .tab-link.tab-link-active i.icon{background-color:var(--brand-text-on-brand)}.device-ios .app-layout .button{background:0 0;border:1px solid var(--brand-cell);box-sizing:border-box;color:var(--brand-cell);cursor:pointer;display:block;font-family:inherit;font-size:14px;height:29px;line-height:27px;margin:0;outline:0;overflow:hidden;padding:0 10px;position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.device-ios .app-layout .button-fill{background-color:var(--background-primary);color:var(--brand-cell)}.device-ios .app-layout .button-red{background-color:var(--background-primary);color:var(--text-error)}.device-ios .app-layout .buttons-list li{border:0;border-radius:0;box-shadow:none;font-size:17px;height:43px;min-height:43px;padding:0;text-transform:none}.device-ios .app-layout .button-red .list-button{color:var(--text-error)}.device-ios .app-layout .list-button{position:static}.device-ios .app-layout .block-title{color:#6d6d72;font-size:14px;line-height:1;margin:35px 15px 10px;overflow:hidden;position:relative;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.device-ios .app-layout .shapes .page-content{background:var(--fill-white)}.device-ios .app-layout .dialog{background-color:var(--f7-dialog-bg-color-rgb)}.device-ios .app-layout #color-picker .right-block .button-round .icon{height:30px;width:30px}.device-ios .app-layout .content-block{color:#6d6d72}.device-ios .app-layout #add-chart .page-content,.device-ios .app-layout #add-chart.page-content,.device-ios .app-layout #add-shape .page-content,.device-ios .app-layout #add-shape.page-content,.device-ios .app-layout #add-slide .page-content,.device-ios .app-layout #add-slide.page-content,.device-ios .app-layout #add-table .page-content,.device-ios .app-layout #add-table.page-content,.device-ios .app-layout .dataview .page-content,.device-ios .app-layout .dataview.page-content{background-color:var(--background-tertiary)}.device-ios .app-layout input[type=number]:-moz-placeholder,.device-ios .app-layout input[type=number]:-ms-input-placeholder,.device-ios .app-layout input[type=number]::-moz-placeholder,.device-ios .app-layout input[type=number]::-webkit-input-placeholder,.device-ios .app-layout input[type=number]::placeholder{color:#40865c}.device-ios .app-layout .regional-settings .item-title-row{align-items:center;display:flex;justify-content:flex-start}.device-ios .app-layout .regional-settings .item-title-row .item-title{margin-left:20px;white-space:normal}.device-ios .app-layout .navbar .searchbar{background:var(--f7-navbar-bg-color)}.device-ios .app-layout .navbar .searchbar-input-wrap{height:28px;margin-right:10px;position:relative}.device-ios .app-layout .navbar .buttons-row-replace a{color:var(--brand-cell)}.device-ios .app-layout .searchbar input{appearance:none;background-color:var(--background-button);border:none;border-radius:5px;box-sizing:border-box;color:var(--text-normal);display:block;font-family:inherit;font-size:14px;font-weight:400;height:100%;padding:0 36px 0 28px;width:100%}.device-ios .app-layout .searchbar input::placeholder{color:var(--text-tertiary)}.device-ios .app-layout .searchbar .number-search-results{color:var(--text-tertiary);font-size:13px;font-weight:400;line-height:18px;position:absolute;right:26px;top:4.5px;z-index:100}.device-ios .app-layout .searchbar-inner__left{justify-content:center;margin-right:10px}.device-ios .app-layout .searchbar-inner__right .buttons-row a.next{margin-left:15px}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__right{width:28%}@media (max-width:550px){.device-ios .app-layout .navbar .searchbar-input-wrap{margin-right:0}.device-ios .app-layout .searchbar-expandable.searchbar-enabled{top:0}.device-ios .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__center{flex-direction:column}.device-ios .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__right{flex-direction:column-reverse;margin-left:10px}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace{height:88px}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner{height:100%}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__center .searchbar-input-wrap{margin:8px 0}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__right{height:100%;justify-content:space-between;width:auto}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__right .buttons-row-replace{height:50%}}.device-ios .app-layout .actions-button{--f7-actions-button-border-color:var(--background-menu-divider);background:var(--background-secondary)}.device-ios .app-layout .actions-button-text{color:var(--text-normal);font-size:20px;text-overflow:ellipsis;white-space:normal}.device-ios .app-layout input.modal-text-input{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;background:var(--background-primary);border:1px solid var(--text-tertiary);border-radius:0;box-shadow:0 0 0 transparent;box-sizing:border-box;display:block;font-family:inherit;font-size:14px;height:26px;margin:15px 0 0;padding:0 5px;width:100%}.device-ios .app-layout .font-item .item-content{padding-left:0}.device-ios .app-layout .edit-comment-popup .navbar .title{line-height:normal}.device-ios .app-layout .version-history__title{color:var(--text-secondary);font-size:13px;font-style:normal;font-weight:400;line-height:18px;margin-bottom:4px;margin-top:16px}.device-ios .app-layout .version-history__btn{background:transparent;border:0;color:var(--brand-cell);font-size:15px;font-style:normal;font-weight:600;letter-spacing:-.24px;line-height:20px;margin-top:22px;outline:none;padding:0;text-transform:uppercase;width:auto}.device-ios .app-layout .version-history__list ul{background:var(--background-primary)}.device-ios .app-layout .version-history__list .item-title{color:var(--text-normal);font-size:13px;font-weight:600;letter-spacing:-.08px;line-height:18px}.device-ios .app-layout .version-history__list .item-inner,.device-ios .app-layout .version-history__list .item-media{padding-bottom:10px;padding-top:10px}.device-ios .app-layout .version-history__list .item-link .item-title-row:before{display:none}.device-ios .app-layout .version-history__list .item-subtitle{color:var(--text-secondary);font-size:11px;font-style:normal;font-weight:400;letter-spacing:.06px;line-height:13px;margin-top:3px}.device-ios .app-layout .version-history__item_active{background-color:var(--canvas-ruler-margins-background)}.device-ios .app-layout .btn-close-history{color:var(--brand-cell);font-size:17px;font-style:normal;font-weight:400;letter-spacing:-.41px;line-height:22px;margin-left:10px}.device-ios .app-layout .beta-badge{background-color:#FF9F0A;margin-left:10px}.device-android .app-layout{--f7-navbar-shadow-image:none;--f7-theme-color:var(--brand-cell);--f7-navbar-bg-color:var(--toolbar-background);--f7-navbar-link-color:var(--fill-white);--f7-navbar-text-color:var(--fill-white);--f7-navbar-height:56px;--f7-list-bg-color:var(--background-primary);--f7-subnavbar-bg-color:var(--toolbar-background);--f7-subnavbar-link-color:var(--toolbar-icons);--f7-subnavbar-text-color:var(--fill-white);--f7-subnavbar-height:56px;--f7-radio-active-color:var(--brand-cell);--f7-range-bar-active-bg-color:var(--brand-cell);--f7-range-knob-color:var(--brand-cell);--f7-range-knob-size:16px;--f7-list-item-after-text-color:var(--text-normal);--f7-link-highlight-color:transparent;--f7-link-touch-ripple-color:rgba(255,255,255,0.1);--f7-actions-bg-color:var(--background-secondary);--f7-actions-button-border-color:var(--background-menu-divider);--f7-popover-bg-color:var(--background-secondary);--f7-dialog-bg-color:var(--background-secondary);--f7-dialog-text-color:var(--text-secondary);--f7-dialog-title-text-color:var(--text-normal);--f7-dialog-button-text-color:var(--brand-cell);--f7-picker-item-text-color:rgba(var(--text-normal),0.45);--f7-picker-item-selected-text-color:var(--text-normal);--f7-input-bg-color:var(--background-primary);--f7-input-placeholder-color:var(--text-secondary);--f7-input-text-color:var(--text-normal);--f7-block-text-color:var(--text-secondary);--f7-dialog-border-radius:0;--f7-sheet-border-radius:0;--f7-popover-border-radius:4px;--f7-actions-border-radius:0;--f7-box-shadow:0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);--f7-popover-box-shadow:var(--f7-box-shadow);--f7-toggle-active-bg-color:var(--brand-cell);--f7-toggle-active-border-color:var(--brand-cell);--f7-navbar-title-margin-left:20px;--f7-navbar-title-margin-right:20px;--f7-input-focused-border-color:var(--brand-cell);--f7-label-focused-text-color:var(--brand-cell)}.device-android .app-layout .button{--f7-touch-ripple-color:transparent}.device-android .app-layout .segmented .button{--f7-touch-ripple-color:var(--f7-list-link-pressed-bg-color)}.device-android .app-layout .navbar{--f7-touch-ripple-color:rgba(255,255,255,0.1)}.device-android .app-layout .navbar .sheet-close{display:flex;height:56px;justify-content:center;width:56px}.device-android .app-layout .navbar-inner{background:var(--f7-navbar-bg-color);background-color:var(--f7-navbar-bg-color,var(--f7-bars-bg-color));background-image:var(--f7-navbar-bg-image,var(--f7-bars-bg-image))}.device-android .app-layout .page.page-with-subnavbar.page-with-logo .page-content{--f7-page-navbar-offset:var(--f7-navbar-height)}.device-android .app-layout .page{--f7-text-color:var(--text-normal);--f7-list-item-title-text-color:var(--text-normal);--f7-list-item-text-text-color:var(--text-normal);--f7-list-item-subtitle-text-color:var(--text-secondary);--f7-block-title-text-color:var(--text-secondary);--f7-label-text-color:var(--text-normal);--f7-page-bg-color:var(--background-tertiary);--f7-list-item-border-color:var(--background-menu-divider);--f7-list-chevron-icon-color:var(--text-tertiary);--f7-actions-button-text-color:var(--text-normal);--f7-subnavbar-border-color:var(--background-menu-divider);--f7-list-border-color:var(--background-menu-divider)}.device-android .app-layout .add-popup .view .add-image ul:after,.device-android .app-layout .add-popup .view .inputs-list ul:after{display:none}.device-android .app-layout .coauth__sheet{max-height:65%}.device-android .app-layout .segmented .decrement,.device-android .app-layout .segmented .increment{border:none;border-radius:0;display:flex;height:32px;margin-left:0;min-width:40px}.device-android .app-layout .segmented .decrement i.icon-expand-down,.device-android .app-layout .segmented .increment i.icon-expand-down{background:var(--brand-cell)}.device-android .app-layout .segmented label{color:var(--text-normal);line-height:32px;margin:0 5px}.device-android .app-layout .button{--f7-button-text-color:var(--brand-cell);appearance:none;background:0 0;border-radius:2px;box-sizing:border-box;color:var(--brand-cell);cursor:pointer;display:block;font-family:inherit;font-size:14px;height:36px;line-height:36px;margin:0;min-width:64px;outline:0;overflow:hidden;padding:0 8px;position:relative;text-align:center;text-overflow:ellipsis;text-transform:uppercase;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition-duration:.3s;transition-duration:.3s;white-space:nowrap}.device-android .app-layout .button-fill{background-color:initial;color:var(--brand-text-on-brand)}.device-android .app-layout .button-raised{box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)}.device-android .app-layout .button-red{background-color:var(--text-error);color:var(--brand-text-on-brand)}.device-android .app-layout .buttons-list ul{background-color:var(--background-tertiary)}.device-android .app-layout .buttons-list ul:after,.device-android .app-layout .buttons-list ul:before{display:none}.device-android .app-layout .buttons-list ul li{border-radius:2px;color:var(--fill-white);font-size:14px;height:36px;margin:20px 16px;min-height:36px;text-transform:uppercase}.device-android .app-layout .table-presets .button{min-width:0}.device-android .app-layout .button-fill .list-button{background-color:var(--brand-cell);border-radius:2px;color:var(--brand-text-on-brand);font-size:14px;font-weight:500;height:36px;line-height:36px;margin:0;text-align:center;text-transform:uppercase}.device-android .app-layout .button-raised .list-button{box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)}.device-android .app-layout .button-red .list-button{background-color:var(--text-error)}.device-android .app-layout .tab-buttons{display:flex;height:100%;justify-content:space-between;position:relative;width:100%}.device-android .app-layout .tab-buttons .tab-link{align-items:center;box-sizing:border-box;color:rgba(255,255,255,.7);font-size:14px;font-weight:500;height:100%;justify-content:center;padding-left:0;padding-right:0;text-transform:uppercase}.device-android .app-layout .tab-buttons .tab-link i.icon{opacity:.5}.device-android .app-layout .tab-buttons .tab-link.tab-link-active{color:var(--fill-white)}.device-android .app-layout .tab-buttons .tab-link.tab-link-active i.icon{background-color:var(--fill-white);opacity:1}.device-android .app-layout .tab-buttons .tab-link-highlight{--f7-tabbar-link-active-border-color:var(--toolbar-icons);bottom:0;height:3px;left:0;position:absolute}.device-android .app-layout .list.inputs-list{margin:0}.device-android .app-layout .list.inputs-list .item-input.item-content{padding-left:0}.device-android .app-layout .list.inputs-list .item-input .item-inner,.device-android .app-layout .list.inputs-list .item-link .item-inner{display:block}.device-android .app-layout .list.inputs-list .item-input .item-inner .item-label,.device-android .app-layout .list.inputs-list .item-input .item-inner .item-title,.device-android .app-layout .list.inputs-list .item-link .item-inner .item-label,.device-android .app-layout .list.inputs-list .item-link .item-inner .item-title{font-size:12px;width:100%}.device-android .app-layout .list.inputs-list .item-input .item-inner .item-input-wrap,.device-android .app-layout .list.inputs-list .item-link .item-inner .item-input-wrap{margin-left:0}.device-android .app-layout .list .buttons{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;min-height:48px;width:100%}.device-android .app-layout .list .buttons .item-content{width:100%}.device-android .app-layout .list .buttons .item-content .item-inner{padding-bottom:0;padding-top:0}.device-android .app-layout .list .buttons .item-content .item-inner .row{--f7-cols-per-row:1;align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.device-android .app-layout .list .buttons .item-content .item-inner .row .button{align-items:center;display:flex;flex:1;font-size:17px;justify-content:center;margin-left:5px}.device-android .app-layout .list .buttons .item-content .item-inner .row .button:first-child{margin-left:0}.device-android .app-layout .list .item-content .color-preview{background-color:var(--fill-white);border-radius:4px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);height:30px;margin-top:-3px;width:30px}.device-android .app-layout .list .item-content .color-preview.auto{background-color:#000000}.device-android .app-layout .item-input:not(.item-input-outline) .item-content:before,.device-android .app-layout .item-input:not(.item-input-outline).item-content:before{background:transparent}.device-android .app-layout .links-list a:after,.device-android .app-layout .list .item-inner:after,.device-android .app-layout .simple-list li:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.device-android .app-layout .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,.device-android .app-layout .list:not(.inset):not(.inset-md):not(.menu-list) .media-item>.item-link,.device-android .app-layout .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,.device-android .app-layout .media-list:not(.inset):not(.inset-md):not(.menu-list) li>.item-link{border-radius:0}.device-android .app-layout #color-picker .right-block .button-round{background-color:var(--brand-cell)}.device-android .app-layout .regional-settings .list .item-inner{margin-left:16px}.device-android .app-layout .regional-settings .list .item-title-row{align-items:center;display:flex;flex-direction:row-reverse;justify-content:space-between;width:100%}.device-android .app-layout .regional-settings .list .item-title-row .item-title{white-space:normal}.device-android .app-layout .searchbar-inner__center{flex-wrap:wrap}.device-android .app-layout .navbar .searchbar-input-wrap{height:32px;margin:4px 0}.device-android .app-layout .navbar .navbar-inner{overflow:initial}.device-android .app-layout .navbar .left{margin:0}.device-android .app-layout .navbar .title{margin-left:var(--f7-navbar-title-margin-left);margin-right:var(--f7-navbar-title-margin-left)}.device-android .app-layout .subnavbar .title{font-size:14px;font-weight:400}.device-android .app-layout .searchbar input{appearance:none;background-color:initial;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='%23fff'%3E%3Cpath d='M15.5 14h-.79l-.28-.27A6.471 6.471 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/%3E%3Cpath fill='none' d='M0 0h24v24H0z'/%3E%3C/svg%3E");background-position:0;background-repeat:no-repeat;background-size:24px 24px;border:none;border-bottom:1px solid var(--fill-white);border-radius:0;box-sizing:border-box;color:var(--fill-white);display:block;font-family:inherit;font-size:16px;font-weight:400;height:100%;opacity:1;padding:0 40px 0 24px;transition-duration:.3s;width:100%}.device-android .app-layout .searchbar input::placeholder{color:var(--fill-white)}.device-android .app-layout .searchbar .input-clear-button{height:18px;margin:0;top:7px;width:18px}.device-android .app-layout .searchbar .input-clear-button:after{color:var(--fill-white);font-size:19px;line-height:19px}.device-android .app-layout .searchbar .number-search-results{font-size:16px;font-weight:400;line-height:24px;position:absolute;right:26px;top:4px}.device-android .app-layout .searchbar-icon:after{color:var(--fill-white);font-size:19px}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled{top:0}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled .searchbar-inner{height:100%;padding:0}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__center{flex-direction:column}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__right{flex-direction:column-reverse}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled.replace{height:96px}.device-android .app-layout .navbar a.link{padding:0 16px}.device-android .app-layout .navbar a.link.searchbar-enable i.icon-search{background-color:var(--toolbar-icons)}.device-android .app-layout .navbar a.icon-only{height:56px;width:auto}.device-android .app-layout .navbar .buttons-row-replace a{color:var(--fill-white);padding:0}.device-android .app-layout .navbar .searchbar .buttons-row{align-self:flex-start}@media (max-width:550px){.device-android .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__left{margin-right:33px}}.device-android .app-layout .actions-button-text{color:var(--text-normal);cursor:pointer;font-size:16px;line-height:48px}@media (min-width:496px){.device-android .app-layout .actions-modal{left:auto;margin-left:0;width:100%}}.device-android .app-layout input.modal-text-input{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;background:#fff;border:none;box-shadow:none;box-sizing:border-box;display:block;font-family:inherit;font-size:16px;height:36px;margin:15px 0 0;padding:0;-webkit-transition-duration:.2s;transition-duration:.2s;width:100%}.device-android .app-layout .input-field .inputs-list{margin:15px 0 0}.device-android .app-layout .input-field .inputs-list ul{background:none}.device-android .app-layout .input-field .inputs-list ul:after,.device-android .app-layout .input-field .inputs-list ul:before{display:none}.device-android .app-layout .input-field .inputs-list .item-inner,.device-android .app-layout .input-field .inputs-list .item-input{margin:0;padding:0}.device-android .app-layout .font-item .item-radio:not(.item-radio-icon-end)>.icon-radio{margin-right:0}.device-android .app-layout .navbar-dropdown-list .navbar-inner,.device-android .app-layout .navbar-link-settings .navbar-inner{background:var(--background-primary)}.device-android .app-layout .navbar-dropdown-list .navbar-inner .icon-back,.device-android .app-layout .navbar-dropdown-list .title,.device-android .app-layout .navbar-dropdown-list a,.device-android .app-layout .navbar-link-settings .navbar-inner .icon-back,.device-android .app-layout .navbar-link-settings .title,.device-android .app-layout .navbar-link-settings a{color:var(--text-normal)}.device-android .app-layout .popover{box-shadow:var(--f7-box-shadow)}.device-android .app-layout .popover.popover__titled .popover-arrow:after{background:var(--toolbar-background)}.device-android .app-layout .popover.document-menu .popover-arrow:after,.device-android .app-layout .popover.popover__functions .popover-arrow:after{background:var(--background-secondary)}.device-android .app-layout .page-version-history{--f7-page-bg-color:var(--background-primary)}.device-android .app-layout .version-history__title{color:var(--brand-cell);font-size:14px;font-style:normal;font-weight:500;line-height:20px;margin-bottom:4px;margin-top:16px}.device-android .app-layout .version-history__btn{background:var(--background-primary);border:0;border-radius:6px;box-shadow:0 .25px 1px rgba(0,0,0,.039),0 .85px 3px rgba(0,0,0,.19);color:var(--brand-cell);font-size:16px;font-style:normal;font-weight:500;letter-spacing:.25px;line-height:20px;margin-top:10px;padding:6px 20px;width:auto}.device-android .app-layout .version-history__list ul:after,.device-android .app-layout .version-history__list ul:before{display:none}.device-android .app-layout .version-history__list .item-title{color:var(--text-normal);font-size:16px;font-style:normal;font-weight:400;letter-spacing:.15px;line-height:24px}.device-android .app-layout .version-history__list .item-inner{padding-bottom:10px;padding-top:10px}.device-android .app-layout .version-history__list .item-inner:before{background-color:var(--background-menu-divider);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.device-android .app-layout .version-history__list .item-media{max-width:40px;min-width:40px;padding-bottom:12px;padding-top:12px}.device-android .app-layout .version-history__list .item-link .item-title-row:before{display:none}.device-android .app-layout .version-history__list .item-subtitle{color:var(--text-secondary);font-size:12px;font-style:normal;font-weight:400;letter-spacing:.5px;line-height:16px}.device-android .app-layout .version-history__item_active{background-color:var(--background-tertiary)}.device-android .app-layout .btn-close-history{color:var(--toolbar-icons);font-size:16px;font-style:normal;font-weight:400;letter-spacing:.15px;line-height:24px;margin-left:16px}.device-android .app-layout .beta-badge{background-color:var(--brand-secondary);margin-left:8px}.device-android .app-layout .dropdown-list .icon-radio{display:none}.device-android .app-layout .dropdown-list input[type=radio]:checked+.icon-radio{display:inline-block}.device-ios .theme-type-dark i.icon.icon-logo{background:url(../../../spreadsheeteditor/mobile/resources/img/header/logo-android.svg) no-repeat 50%;background-size:contain}.device-ios i.icon.icon_mask{background-color:white}.device-ios i.icon.icon-logo{background:url(../../../spreadsheeteditor/mobile/resources/img/header/logo-ios.svg) no-repeat 50%;background-size:contain;height:20px;width:100px}.device-ios i.icon.icon-prev{background-color:var(--brand-cell);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='m16 20.5-1 1L4.5 11 15 .5l1 1L6.6 11l9.4 9.5z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-prev:after{display:none}.device-ios i.icon.icon-next{background-color:var(--brand-cell);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M15.5 11 6 1.5 7.1.4 17.5 11 7.1 21.5l-1.1-1 9.5-9.5z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-next:after{display:none}.device-ios i.icon.icon-edit{background-color:var(--brand-cell);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M0 20h22v1H0v-1zM19.3 5.3 6.1 18.4l-1.5-1.5L17.8 3.8l-.7-.7L3.5 16.7 3 20l3.3-.5L19.9 5.9zM20.5 5.3 22 3.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5 2.8 2.8z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-show-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='25'%3E%3Cpath fill-rule='evenodd' d='M5.625 12.5A8.488 8.488 0 0 0 12.5 16a8.487 8.487 0 0 0 6.875-3.5A8.487 8.487 0 0 0 12.5 9a8.488 8.488 0 0 0-6.875 3.5Zm14.955 0A9.494 9.494 0 0 0 12.5 8a9.494 9.494 0 0 0-8.08 4.5A9.494 9.494 0 0 0 12.5 17a9.494 9.494 0 0 0 8.08-4.5Z' clip-rule='evenodd'/%3E%3Cpath d='M12.5 10a2.5 2.5 0 0 1 2.502 2.5 2.502 2.502 0 0 1-2.502 2.511 2.5 2.5 0 0 1-2.489-2.511 2.499 2.499 0 0 1 2.49-2.5Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-hide-password,.device-ios i.icon.icon-show-password{background-color:var(--text-secondary);height:25px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:25px}.device-ios i.icon.icon-hide-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='25'%3E%3Cpath fill-rule='evenodd' d='M11.356 15.765a8.487 8.487 0 0 0 8.019-3.424c-.751-1.03-1.209-1.584-2.339-2.19l.723-.74c1.375.787 1.987 1.587 2.82 2.93a9.494 9.494 0 0 1-8.079 4.5 9.534 9.534 0 0 1-1.99-.208l.846-.868Zm-3.228-1.133a8.546 8.546 0 0 1-2.503-2.29 8.488 8.488 0 0 1 6.875-3.5c.598 0 .719-.018 1.297.069l.924-.849c-.83-.238-1.303-.22-2.206-.22H12.5a9.494 9.494 0 0 0-8.08 4.5 9.549 9.549 0 0 0 2.962 3.004l.746-.714Z' clip-rule='evenodd'/%3E%3Cpath d='M16.031 9.671a20.396 20.396 0 0 0-1.01-.397l-5.863 5.885a8.45 8.45 0 0 0 1.033.365l5.84-5.853Z'/%3E%3Cpath d='M16.79 8.91c-.311-.146-.65-.298-.974-.434l-.794.798c.336.122.687.26 1.01.397l.758-.76Z'/%3E%3Cpath d='m18.345 7.353-.72-.692-1.809 1.815c.324.136.663.288.974.435l1.555-1.558ZM9.395 16.322a9.443 9.443 0 0 1-.99-.406l-1.728 1.733.705.69 2.013-2.017Z'/%3E%3Cpath d='M10.191 15.524a8.45 8.45 0 0 1-1.033-.365l-.754.757c.32.153.651.289.99.406l.797-.798Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-return{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' d='m11.5 7.793 2.854 2.853-.707.708L12 9.707V16h2.5v1H11V9.707l-1.646 1.647-.708-.708L11.5 7.793Z'/%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M1 4a1 1 0 0 1 1-1h7.75l2 2H22a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4Zm1 16V4h7.25l2 2H22v14H2Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon_mask{background-color:var(--text-normal)}.device-android i.icon.icon-logo{background:url(../../../spreadsheeteditor/mobile/resources/img/header/logo-android.svg) no-repeat 50%;background-size:contain;height:20px;width:100px}.device-android i.icon.icon-prev{background-color:var(--brand-cell);height:20px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M5.1 10.9 13.9 2 16 4.1l-6.8 7 6.8 6.8-2.1 2.1-8.8-8.8-.1-.1z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:20px}.device-android i.icon.icon-prev:after{display:none}.device-android i.icon.icon-next{background-color:var(--brand-cell);height:20px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M16.9 10.9 8.1 2 6 4.1l6.8 7L6 17.9 8.1 20l8.8-8.8.1-.1z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:20px}.device-android i.icon.icon-next:after{display:none}.device-android i.icon.icon-show-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M9.894 9.89C10.486 9.298 11.189 9 12 9c.811 0 1.514.297 2.106.89.593.594.89 1.297.89 2.11s-.297 1.516-.89 2.11c-.592.593-1.295.89-2.106.89-.811 0-1.514-.297-2.106-.89-.593-.594-.89-1.297-.89-2.11 0-.812.297-1.516.89-2.11Zm-1.451 5.672c.998.97 2.184 1.454 3.557 1.454 1.373 0 2.543-.485 3.51-1.453 1-1 1.499-2.188 1.499-3.563s-.5-2.547-1.498-3.516c-.968-1-2.138-1.5-3.511-1.5-1.373 0-2.559.5-3.557 1.5-.968.97-1.452 2.141-1.452 3.516s.484 2.563 1.452 3.563Zm-3.137-9C7.304 5.188 9.535 4.5 12 4.5s4.697.688 6.694 2.063C20.69 7.938 22.126 9.75 23 12c-.874 2.25-2.31 4.063-4.306 5.438C16.697 18.813 14.465 19.5 12 19.5s-4.696-.687-6.694-2.062C3.31 16.063 1.874 14.25 1 12c.874-2.25 2.31-4.062 4.306-5.437Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-hide-password,.device-android i.icon.icon-show-password{background-color:var(--text-secondary);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-hide-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M11.883 9.005h.14c.813 0 1.517.297 2.111.891.595.595.892 1.298.892 2.111v.188l-3.143-3.19Zm-4.316.797c-.375.751-.563 1.486-.563 2.205 0 1.377.485 2.565 1.454 3.566 1.001.97 2.19 1.454 3.566 1.454.719 0 1.454-.187 2.204-.563l-1.548-1.548c-.25.063-.469.094-.656.094-.814 0-1.517-.297-2.111-.892-.595-.594-.892-1.297-.892-2.11 0-.188.032-.407.094-.657L7.567 9.802ZM2.032 4.267 3.299 3l17.73 17.733L19.764 22c-.156-.156-.656-.641-1.5-1.454l-1.877-1.877c-1.345.563-2.799.845-4.362.845-2.471 0-4.707-.688-6.708-2.065-2.002-1.376-3.44-3.19-4.316-5.442.782-1.939 2.033-3.596 3.753-4.972L3.158 5.44a139.128 139.128 0 0 0-1.126-1.173Zm9.992 2.72c-.626 0-1.236.126-1.83.376L8.036 5.205c1.22-.47 2.549-.704 3.988-.704 2.47 0 4.69.688 6.66 2.064 2.002 1.377 3.44 3.19 4.316 5.442a12.231 12.231 0 0 1-3.424 4.739l-2.909-2.909c.25-.594.376-1.204.376-1.83 0-1.376-.5-2.549-1.501-3.518-.97-1-2.143-1.501-3.518-1.501Z'/%3E%3C/svg%3E")}.device-android .dropdown-list i.icon.icon-radio{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='m9 16-5-5-1 1 6 6L20 7l-1-1L9 16Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-collaboration{background-color:var(--toolbar-icons);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill-rule='evenodd' clip-path='url(%23a)' clip-rule='evenodd'%3E%3Cpath d='M7.5 14c-2.823 0-4.989 1.407-6.099 3.257-.56.935-.4 1.305-.299 1.433.154.194.508.31.87.31H7.5v1H1.972c-.47 0-1.216-.134-1.655-.69-.49-.622-.412-1.502.227-2.567C1.834 14.593 4.324 13 7.5 13v1Zm0-1c3.177 0 5.639 1.593 6.929 3.743.639 1.065.716 1.945.226 2.567-.438.556-1.184.69-1.655.69H7.5v-1H13c.363 0 .717-.116.87-.31.101-.128.262-.498-.299-1.433C12.461 15.407 10.323 14 7.5 14v-1Z'/%3E%3Cpath d='M15 20h7c.471 0 1.217-.134 1.656-.69.49-.622.413-1.502-.226-2.567C22.14 14.593 19.677 13 16.5 13c-1.293 0-2.322.164-3.354.623.364.28.64.494.997.732A7.774 7.774 0 0 1 16.502 14c2.823 0 4.96 1.407 6.071 3.257.561.935.4 1.305.299 1.433-.153.194-.508.31-.87.31H16.5a1.466 1.466 0 0 1-.343.478c-.444.415-.738.522-1.157.522ZM7.5 11C8.76 11 10 9.786 10 8S8.76 5 7.5 5 5 6.214 5 8s1.24 3 2.5 3Zm0 1c1.933 0 3.5-1.79 3.5-4S9.433 4 7.5 4 4 5.79 4 8s1.567 4 3.5 4ZM17 11c.965 0 2-.97 2-2.5S17.965 6 17 6c-.965 0-2 .97-2 2.5s1.035 2.5 2 2.5Zm0 1c1.657 0 3-1.567 3-3.5S18.657 5 17 5s-3 1.567-3 3.5 1.343 3.5 3 3.5Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-back{color:var(--toolbar-icons)}.device-android .navbar i.icon.icon-edit{background-color:var(--toolbar-icons);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M0 20h22v1H0v-1zM17.1 3.1 3.5 16.7 3 20l3.3-.5L19.9 5.9zM20.5 5.3 22 3.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5 2.8 2.8z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-close{background-color:var(--text-normal);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M18.984 6.422 13.406 12l5.578 5.578-1.406 1.406L12 13.406l-5.578 5.578-1.406-1.406L10.594 12 5.016 6.422l1.406-1.406L12 10.594l5.578-5.578 1.406 1.406Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-done-disabled{background-color:var(--text-tertiary)}.device-android .navbar i.icon.icon-done,.device-android .navbar i.icon.icon-done-disabled{height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='m9 16.219 10.594-10.64L21 6.983l-12 12-5.578-5.578L4.782 12 9 16.219Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-done{background-color:var(--brand-cell)}.device-android .navbar i.icon.icon-search{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M16 16.708a9 9 0 1 1 .707-.707l5.647 5.645-.708.708-5.645-5.646ZM18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-search,.device-android .navbar i.icon.icon-version-history{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-version-history{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M12 6h2v6.845l4.196 2.423-1 1.732L12 14V6Z'/%3E%3Cpath d='M22 12a9 9 0 0 1-15.364 6.364l-.708.707A9.969 9.969 0 0 0 13 22c5.523 0 10-4.477 10-10S18.523 2 13 2C7.477 2 3 6.477 3 12h1a9 9 0 0 1 18 0Z'/%3E%3Cpath d='m1.5 10.5 2 2 2-2'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-return{background-color:var(--toolbar-icons);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='m11.5 7.793 2.854 2.853-.707.708L12 9.707V16h2.5v1H11V9.707l-1.646 1.647-.708-.708L11.5 7.793Z'/%3E%3Cpath fill-rule='evenodd' d='M1 4a1 1 0 0 1 1-1h7.75l2 2H22a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4Zm1 16V4h7.25l2 2H22v14H2Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-paste{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M5 2H0v18h9v4h15V7h-5V2h-5v1h4v4H9v12H1V3h4V2Zm5 6h13v15H10V8Z' clip-rule='evenodd'/%3E%3Cpath d='M5 0h9v5H5V0Z'/%3E%3Cpath fill-rule='evenodd' d='M21 12h-9v-1h9v1ZM21 16h-9v-1h9v1ZM21 20h-9v-1h9v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-copy,i.icon.icon-paste{background-color:var(--text-normal);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-copy{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M1 1h14v6h1V0H0v17h8v-1H1V1Z'/%3E%3Cpath fill-rule='evenodd' d='M23 8H9v15h14V8ZM8 7v17h16V7H8ZM13 5H3V4h10v1ZM8 9H3V8h5v1ZM8 13H3v-1h5v1Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='M21 12H11v-1h10v1ZM21 16H11v-1h10v1ZM21 20H11v-1h10v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-cut{background-color:var(--text-normal);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill-rule='evenodd' d='M3.224 22.27c1.291.857 3.303.448 4.435-1.257 1.132-1.706.727-3.719-.564-4.575-1.291-.857-3.303-.448-4.435 1.257-1.132 1.706-.727 3.719.564 4.575Zm-.553.834c1.841 1.221 4.447.532 5.821-1.538 1.375-2.071.996-4.74-.844-5.962-1.841-1.221-4.447-.533-5.821 1.538-1.375 2.071-.996 4.74.844 5.962ZM20.916 22.27c-1.291.857-3.303.448-4.435-1.257-1.132-1.706-.727-3.719.564-4.575 1.291-.857 3.303-.448 4.435 1.257 1.132 1.706.727 3.719-.564 4.575Zm.553.834c-1.841 1.221-4.447.532-5.821-1.538-1.374-2.071-.996-4.74.844-5.962 1.841-1.221 4.447-.533 5.822 1.538 1.374 2.071.995 4.74-.845 5.962Z' clip-rule='evenodd'/%3E%3Cpath d='m16.492 15.604-2.588-3.13L19.955.676a.436.436 0 0 0-.228-.595c-.285-.092-.628 0-.742.183L12.023 11.42 5.176.264c-.115-.229-.457-.32-.742-.229-.286.092-.4.366-.286.595L10.2 12.428l-2.552 3.176L9.229 18l2.794-4.52L14.911 18l1.581-2.396Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-next:after,i.icon.icon-prev:after{content:none}i.icon.icon-collaboration{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill-rule='evenodd' clip-path='url(%23a)' clip-rule='evenodd'%3E%3Cpath d='M7.5 14c-2.823 0-4.989 1.407-6.099 3.257-.56.935-.4 1.305-.299 1.433.154.194.508.31.87.31H7.5v1H1.972c-.47 0-1.216-.134-1.655-.69-.49-.622-.412-1.502.227-2.567C1.834 14.593 4.324 13 7.5 13v1Zm0-1c3.177 0 5.639 1.593 6.929 3.743.639 1.065.716 1.945.226 2.567-.438.556-1.184.69-1.655.69H7.5v-1H13c.363 0 .717-.116.87-.31.101-.128.262-.498-.299-1.433C12.461 15.407 10.323 14 7.5 14v-1Z'/%3E%3Cpath d='M15 20h7c.471 0 1.217-.134 1.656-.69.49-.622.413-1.502-.226-2.567C22.14 14.593 19.677 13 16.5 13c-1.293 0-2.322.164-3.354.623.364.28.64.494.997.732A7.774 7.774 0 0 1 16.502 14c2.823 0 4.96 1.407 6.071 3.257.561.935.4 1.305.299 1.433-.153.194-.508.31-.87.31H16.5a1.466 1.466 0 0 1-.343.478c-.444.415-.738.522-1.157.522ZM7.5 11C8.76 11 10 9.786 10 8S8.76 5 7.5 5 5 6.214 5 8s1.24 3 2.5 3Zm0 1c1.933 0 3.5-1.79 3.5-4S9.433 4 7.5 4 4 5.79 4 8s1.567 4 3.5 4ZM17 11c.965 0 2-.97 2-2.5S17.965 6 17 6c-.965 0-2 .97-2 2.5s1.035 2.5 2 2.5Zm0 1c1.657 0 3-1.567 3-3.5S18.657 5 17 5s-3 1.567-3 3.5 1.343 3.5 3 3.5Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-cancellation{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cmask id='a' width='20' height='20' x='2' y='2' maskUnits='userSpaceOnUse' style='mask-type:alpha'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='%23c4c4c4' stroke='var(--brand-cell)'/%3E%3C/mask%3E%3Cg stroke='var(--brand-cell)' mask='url(%23a)'%3E%3Ccircle cx='12' cy='12' r='9.5' transform='rotate(-90 12 12)'/%3E%3Cpath d='M5.091 19.202 19.192 5.101'/%3E%3C/g%3E%3C/svg%3E");height:24px;width:24px}i.icon.icon-remove-style{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23FF3B30' fill-rule='evenodd' d='M9.333 2a1.06 1.06 0 0 0-1.066 1.053V4H4.533A.53.53 0 0 0 4 4.526c0 .291.239.527.533.527h.534l1 15.894A1.06 1.06 0 0 0 7.133 22h9.734a1.06 1.06 0 0 0 1.066-1.053L19 5h.467c.294 0 .533-.21.533-.5 0-.29-.239-.5-.533-.5h-3.734v-.947A1.06 1.06 0 0 0 14.667 2H9.333Zm5.334 2v-.947H9.333V4h5.334ZM18 5H6l.941 15.062A1 1 0 0 0 7.94 21h8.122a1 1 0 0 0 .998-.938L18 5Z' clip-rule='evenodd'/%3E%3Cpath fill='%23FF3B30' d='M8 7.002h1L9.5 19h-1L8 7.002ZM11.5 7h1v12h-1V7ZM15 7.002 16 7l-.5 12h-1L15 7.002Z'/%3E%3C/svg%3E");height:24px;width:24px}i.icon.icon-image{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M9 9a2 2 0 1 1-4 0 2 2 0 0 1 4 0ZM8 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='M2 4v16h20V4H2Zm19 1H3v11.293l3.5-3.5 2 2 6-6 6.5 6.5V5ZM3 19v-1.293l3.5-3.5 2 2 6-6 6.5 6.5V19H3Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-format-pdf{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23DB4437' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H4Zm1 8v6h1v-2h2c.5 0 1-.672 1-1.5v-1C9 9.5 8.5 9 7.679 9H5Zm1 1h1.5c.296 0 .5.224.5.5v1c0 .276-.026.5-.321.5H6v-2Zm10 5h1v-2.5h2.5v-1H17V10h3V9h-4v6Zm-5.5-6H13c1 0 1.5.5 1.5 1.5v3c0 1-.536 1.5-1.5 1.5h-2.5V9Zm2.5 1h-1.5v4H13c.5 0 .5-.5.5-.5v-3s0-.5-.5-.5Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-pdfa{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23A8A8A8' fill-rule='evenodd' d='M18 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm.275 2.815h.326l2.618 6.37H19.82l-.524-1.417h-2.602l-.52 1.418H14.78l2.604-6.371H18.275Zm-1.23 4.003h1.902l-.954-2.582-.949 2.582Z' clip-rule='evenodd'/%3E%3Cpath fill='%23DB4437' fill-rule='evenodd' d='M1 4a3 3 0 0 1 3-3h16a3 3 0 0 1 3 3v9.101a6.981 6.981 0 0 0-4.036-2.035V11h-2.678V9H19.5V8h-4.286v3.576a6.983 6.983 0 0 0-1.071.582V9.5c0-.828-.72-1.5-1.607-1.5H9.857v6h2.398A6.968 6.968 0 0 0 11 18c0 1.959.805 3.73 2.101 5H4a3 3 0 0 1-3-3V4Zm3.5 4v6h1.071v-2H7.18c.887 0 1.607-.672 1.607-1.5v-1c0-.828-.72-1.5-1.607-1.5H4.5Zm1.071 1H7.18c.295 0 .535.224.535.5v1c0 .276-.24.5-.535.5H5.57V9Zm6.965 0h-1.607v4h1.607c.296 0 .535-.224.535-.5v-3c0-.276-.24-.5-.535-.5Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-numbers-1{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.605 18.998v-6.725h-.021l-2.052 1.478V12.73l2.062-1.482h.946v7.75h-.935ZM6.58 31.482c0-.677.244-1.239.73-1.687.488-.45 1.096-.676 1.827-.676.69 0 1.276.206 1.756.617.48.412.72.915.72 1.51 0 .43-.118.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.776v.859H6.628v-.666l2.729-2.873c.52-.548.863-.964 1.031-1.247.172-.283.258-.585.258-.907 0-.373-.15-.69-.451-.951a1.585 1.585 0 0 0-1.085-.392c-.455 0-.834.145-1.139.435-.304.29-.456.652-.456 1.085v.005H6.58v-.005ZM8.208 50.42v-.816h.929c.444 0 .807-.127 1.09-.38.283-.259.424-.584.424-.978s-.13-.708-.392-.94c-.261-.233-.632-.35-1.112-.35-.444 0-.805.119-1.085.355-.279.236-.44.559-.483.967h-.93c.055-.659.309-1.184.764-1.574.458-.39 1.05-.585 1.777-.585.699 0 1.279.188 1.74.564.463.376.694.854.694 1.434 0 .483-.144.89-.43 1.219-.287.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.401.564.348.337.521.778.521 1.322 0 .433-.121.823-.365 1.17a2.39 2.39 0 0 1-.988.806c-.415.19-.875.285-1.38.285-.802 0-1.449-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.042.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.594.5-1 0-.454-.162-.814-.484-1.079-.319-.265-.755-.397-1.31-.397h-.972ZM13 17.998h1v1h-1zM13 35.998h1v1h-1zM13 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-2{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.605 18.998v-6.725h-.021l-2.052 1.478V12.73l2.062-1.482h.946v7.75h-.935Zm2.47 1.488c.122-.208.214-.37.275-.489.064-.114.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.144-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.354 3.354 0 0 0-.408-.602h.784c.168.215.31.406.424.575.115.164.246.39.393.676.15.287.27.575.36.865a8.83 8.83 0 0 1 .328 2.412c-.001 1.923-.486 3.491-1.457 4.705h-.821ZM6.58 31.482c0-.677.244-1.239.73-1.687.488-.45 1.096-.676 1.827-.676.69 0 1.276.206 1.756.617.48.412.72.915.72 1.51 0 .43-.118.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.776v.859H6.628v-.666l2.729-2.873c.52-.548.863-.964 1.031-1.247.172-.283.258-.585.258-.907 0-.373-.15-.69-.451-.951a1.585 1.585 0 0 0-1.085-.392c-.455 0-.834.145-1.139.435-.304.29-.456.652-.456 1.085v.005H6.58v-.005Zm5.85 7.004c.12-.208.212-.37.273-.489.065-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.23-.811.083-.312.144-.647.183-1.005.04-.361.06-.74.06-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.364 3.364 0 0 0-.409-.602h.785c.168.215.31.406.424.575.114.164.245.39.392.676.15.287.27.575.36.865a8.844 8.844 0 0 1 .328 2.412c0 1.923-.486 3.491-1.456 4.705h-.822ZM8.208 50.42v-.816h.929c.444 0 .807-.127 1.09-.38.283-.259.424-.584.424-.978s-.13-.708-.392-.94c-.261-.233-.632-.35-1.112-.35-.444 0-.805.119-1.085.355-.279.236-.44.559-.483.967h-.93c.055-.659.309-1.184.764-1.574.458-.39 1.05-.585 1.777-.585.699 0 1.279.188 1.74.564.463.376.694.854.694 1.434 0 .483-.144.89-.43 1.219-.287.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.401.564.348.337.521.778.521 1.322 0 .433-.121.823-.365 1.17a2.39 2.39 0 0 1-.988.806c-.415.19-.875.285-1.38.285-.802 0-1.449-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.042.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.594.5-1 0-.454-.162-.814-.484-1.079-.319-.265-.755-.397-1.31-.397h-.972Zm4.5 5.066c.122-.208.213-.37.274-.489.065-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.231-.811.082-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.364 3.364 0 0 0-.408-.602h.784c.168.215.31.406.424.575.115.164.245.39.392.676.15.287.27.575.36.865.09.29.167.647.231 1.069.065.419.097.866.097 1.343 0 1.923-.485 3.491-1.456 4.705h-.821Z'/%3E%3C/svg%3E")}i.icon.icon-numbers-3{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M7 10.998h1v8H7zM10 17.998h1v1h-1zM7 28.998h1v8H7zM10 28.998h1v8h-1zM13 35.998h1v1h-1zM7 45.998h1v8H7zM10 45.998h1v8h-1zM13 45.998h1v8h-1zM16 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-4{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='m11.79 18.998-.779-2.218H7.928l-.779 2.218H6.134l2.858-7.75h.956l2.857 7.75H11.79Zm-2.336-6.574-1.241 3.534h2.514l-1.241-3.534h-.032ZM9.776 36.998H6.752v-7.75h3.035c.662 0 1.197.177 1.606.531.411.355.617.822.617 1.402 0 .405-.13.772-.392 1.101-.258.326-.573.523-.945.591v.043c.526.068.945.274 1.257.618.315.343.472.773.472 1.289 0 .684-.232 1.217-.698 1.6-.462.383-1.105.575-1.928.575Zm-2.057-6.896v2.486h1.547c.573 0 1.01-.11 1.31-.333.304-.222.457-.542.457-.961 0-.383-.127-.677-.382-.88-.254-.209-.615-.312-1.085-.312H7.72Zm0 6.042H9.63c.583 0 1.026-.116 1.326-.35.301-.232.452-.572.452-1.02 0-.902-.623-1.353-1.87-1.353H7.72v2.723ZM9.942 54.127c-1.07 0-1.92-.36-2.55-1.08-.628-.723-.94-1.699-.94-2.927 0-1.217.316-2.188.95-2.911.634-.727 1.48-1.09 2.54-1.09.845 0 1.562.236 2.149.709.59.469.947 1.09 1.069 1.863h-.978a2.1 2.1 0 0 0-.8-1.219c-.408-.308-.888-.462-1.44-.462-.755 0-1.36.283-1.815.849-.455.566-.682 1.32-.682 2.261 0 .953.225 1.71.677 2.272.45.562 1.06.843 1.826.843.57 0 1.049-.13 1.44-.392.39-.261.655-.628.794-1.1h.978c-.18.765-.546 1.354-1.101 1.766-.555.412-1.26.618-2.117.618ZM15 17.998h1v1h-1zM15 35.998h1v1h-1zM15 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-5{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.524 18.24c.473 0 .863-.135 1.171-.407.312-.276.468-.622.468-1.037v-.467l-1.515.096c-.88.054-1.321.364-1.321.93 0 .268.107.483.322.644.218.161.51.242.875.242Zm-.198.812c-.588 0-1.06-.156-1.418-.468-.358-.311-.537-.723-.537-1.235 0-.498.186-.888.558-1.17.373-.287.91-.452 1.612-.495l1.622-.097v-.483c0-.358-.115-.634-.344-.827-.23-.193-.557-.29-.983-.29-.337 0-.621.08-.854.242-.23.16-.372.377-.43.65h-.897c.015-.488.231-.896.65-1.225.42-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36v3.974h-.886v-1.004h-.021a1.86 1.86 0 0 1-.752.773c-.337.19-.708.285-1.112.285Zm3.577 1.434c.122-.208.213-.37.274-.489.064-.114.157-.299.28-.553.124-.254.223-.496.294-.725.076-.23.153-.5.231-.811a6.85 6.85 0 0 0 .183-1.005c.04-.361.06-.74.06-1.133 0-.576-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.36-1.343 7.911 7.911 0 0 0-.425-.918 3.36 3.36 0 0 0-.408-.602h.784c.169.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.844 8.844 0 0 1 .328 2.412c0 1.923-.486 3.491-1.456 4.705h-.822ZM9.48 37.052a2.3 2.3 0 0 1-1.117-.263 1.98 1.98 0 0 1-.768-.769h-.021v.978h-.886v-8.089h.934v3.239h.022c.182-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.321.272 1.772.817.452.54.677 1.251.677 2.132 0 .884-.227 1.597-.682 2.138-.451.54-1.047.81-1.789.81Zm-.166-5.065c-.505 0-.915.197-1.23.59-.312.39-.467.9-.467 1.526 0 .63.155 1.14.467 1.53.315.391.725.586 1.23.586.508 0 .915-.191 1.22-.575.307-.383.461-.896.461-1.541 0-.64-.154-1.153-.462-1.536-.304-.387-.71-.58-1.219-.58Zm3.19 6.499c.122-.208.213-.37.274-.489.065-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.231-.811.082-.312.143-.647.183-1.005.039-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.364 3.364 0 0 0-.408-.602h.784c.168.215.31.406.424.575.115.164.245.39.392.676.15.287.27.575.36.865.09.29.167.647.231 1.069.064.419.097.866.097 1.343 0 1.923-.486 3.491-1.456 4.705h-.822ZM11.42 50.093H10.5a1.274 1.274 0 0 0-.483-.795c-.262-.207-.602-.311-1.02-.311-.51 0-.92.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.467 1.547.315.38.729.57 1.24.57.405 0 .737-.092.995-.275.26-.186.43-.453.51-.8h.918c-.079.57-.34 1.03-.784 1.38-.44.351-.988.527-1.644.527-.802 0-1.444-.265-1.928-.795-.483-.534-.725-1.252-.725-2.154 0-.888.242-1.6.725-2.138.484-.54 1.123-.81 1.918-.81.684 0 1.244.19 1.68.569.438.376.687.832.747 1.37Zm.472 5.393c.122-.208.213-.37.274-.489.064-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.23-.811.083-.312.144-.647.183-1.005.04-.361.06-.74.06-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.359 3.359 0 0 0-.409-.602h.784c.169.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.844 8.844 0 0 1 .328 2.412c0 1.923-.486 3.491-1.456 4.705h-.822Z'/%3E%3C/svg%3E")}i.icon.icon-numbers-6{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.524 18.24c.473 0 .863-.135 1.171-.407.312-.276.468-.622.468-1.037v-.467l-1.515.096c-.88.054-1.321.364-1.321.93 0 .268.107.483.322.644.218.161.51.242.875.242Zm-.198.812c-.588 0-1.06-.156-1.418-.468-.358-.311-.537-.723-.537-1.235 0-.498.186-.888.558-1.17.373-.287.91-.452 1.612-.495l1.622-.097v-.483c0-.358-.115-.634-.344-.827-.23-.193-.557-.29-.983-.29-.337 0-.621.08-.854.242-.23.16-.372.377-.43.65h-.897c.015-.488.231-.896.65-1.225.42-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36v3.974h-.886v-1.004h-.021a1.86 1.86 0 0 1-.752.773c-.337.19-.708.285-1.112.285ZM9.48 37.052a2.3 2.3 0 0 1-1.117-.263 1.98 1.98 0 0 1-.768-.769h-.021v.978h-.886v-8.089h.934v3.239h.022c.182-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.321.272 1.772.817.452.54.677 1.251.677 2.132 0 .884-.227 1.597-.682 2.138-.451.54-1.047.81-1.789.81Zm-.166-5.065c-.505 0-.915.197-1.23.59-.312.39-.467.9-.467 1.526 0 .63.155 1.14.467 1.53.315.391.725.586 1.23.586.508 0 .915-.191 1.22-.575.307-.383.461-.896.461-1.541 0-.64-.154-1.153-.462-1.536-.304-.387-.71-.58-1.219-.58ZM11.42 50.093H10.5a1.274 1.274 0 0 0-.483-.795c-.262-.207-.602-.311-1.02-.311-.51 0-.92.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.467 1.547.315.38.729.57 1.24.57.405 0 .737-.092.995-.275.26-.186.43-.453.51-.8h.918c-.079.57-.34 1.03-.784 1.38-.44.351-.988.527-1.644.527-.802 0-1.444-.265-1.928-.795-.483-.534-.725-1.252-.725-2.154 0-.888.242-1.6.725-2.138.484-.54 1.123-.81 1.918-.81.684 0 1.244.19 1.68.569.438.376.687.832.747 1.37ZM13 17.998h1v1h-1zM13 35.998h1v1h-1zM13 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-7{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M7 12.998h1v6H7zM7 10.998h1v1H7zM10 17.998h1v1h-1zM7 30.998h1v6H7zM10 30.998h1v6h-1zM10 28.998h1v1h-1zM7 28.998h1v1H7zM13 35.998h1v1h-1zM7 47.998h1v6H7zM10 47.998h1v6h-1zM13 47.998h1v6h-1zM7 45.998h1v1H7zM10 45.998h1v1h-1zM13 45.998h1v1h-1zM16 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-sharing-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill-rule='evenodd' clip-path='url(%23a)' clip-rule='evenodd'%3E%3Cpath d='M7.5 14c-2.823 0-4.989 1.407-6.099 3.257-.56.935-.4 1.305-.299 1.433.154.194.508.31.87.31H7.5v1H1.972c-.47 0-1.216-.134-1.655-.69-.49-.622-.412-1.502.227-2.567C1.834 14.593 4.324 13 7.5 13v1Zm0-1c3.177 0 5.639 1.593 6.929 3.743.639 1.065.716 1.945.226 2.567-.438.556-1.184.69-1.655.69H7.5v-1H13c.363 0 .717-.116.87-.31.101-.128.262-.498-.299-1.433C12.461 15.407 10.323 14 7.5 14v-1Z'/%3E%3Cpath d='M15 20h7c.471 0 1.217-.134 1.656-.69.49-.622.413-1.502-.226-2.567C22.14 14.593 19.677 13 16.5 13c-1.293 0-2.322.164-3.354.623.364.28.64.494.997.732A7.774 7.774 0 0 1 16.502 14c2.823 0 4.96 1.407 6.071 3.257.561.935.4 1.305.299 1.433-.153.194-.508.31-.87.31H16.5a1.466 1.466 0 0 1-.343.478c-.444.415-.738.522-1.157.522ZM7.5 11C8.76 11 10 9.786 10 8S8.76 5 7.5 5 5 6.214 5 8s1.24 3 2.5 3Zm0 1c1.933 0 3.5-1.79 3.5-4S9.433 4 7.5 4 4 5.79 4 8s1.567 4 3.5 4ZM17 11c.965 0 2-.97 2-2.5S17.965 6 17 6c-.965 0-2 .97-2 2.5s1.035 2.5 2 2.5Zm0 1c1.657 0 3-1.567 3-3.5S18.657 5 17 5s-3 1.567-3 3.5 1.343 3.5 3 3.5Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}i.icon.icon-info,i.icon.icon-sharing-settings{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-info{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M4 8v13h6v1H3V7l6-6h11v9h-1V2h-9v6H4Zm.414-1L9 2.414V7H4.414Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M17 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm-5 6a5 5 0 1 1 10 0 5 5 0 0 1-10 0Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' d='M16.252 14.991h1.484v1.496h-1.484v-1.496ZM16.252 17.509v3.98h1.484v-3.98h-1.484Z'/%3E%3C/svg%3E")}i.icon.icon-help{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M11.26 17h1.497v-1.5h-1.496V17ZM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2Zm0 19c-5 0-9-4-9-9s4-9 9-9 9 4 9 9-4 9-9 9Zm.392-14C10.182 7 9 8.29 9 10.5h1.5c0-1.1.588-2 1.892-2 1.303 0 1.612.618 1.608 1.5-.005 1-2.74 1.5-2.74 4.442h1.497c0-2.25 2.79-1.942 2.79-4.442 0-2.21-1.547-3-3.155-3Z'/%3E%3C/svg%3E")}i.icon.icon-about,i.icon.icon-help{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-about{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Zm0 1c5.522 0 10-4.477 10-10S17.522 2 12 2C6.477 2 2 6.477 2 12s4.477 10 10 10Z' clip-rule='evenodd'/%3E%3Cpath d='M11.253 7h1.492v1.5h-1.492V7ZM12.745 10.012V17h-1.492v-6.988h1.492Z'/%3E%3C/svg%3E")}i.icon.icon-search{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M16 16.708a9 9 0 1 1 .707-.707l5.647 5.645-.708.708-5.645-5.646ZM18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-search,i.icon.icon-version-history{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-version-history{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M12 6h2v6.845l4.196 2.423-1 1.732L12 14V6Z'/%3E%3Cpath d='M22 12a9 9 0 0 1-15.364 6.364l-.708.707A9.969 9.969 0 0 0 13 22c5.523 0 10-4.477 10-10S18.523 2 13 2C7.477 2 3 6.477 3 12h1a9 9 0 0 1 18 0Z'/%3E%3Cpath d='m1.5 10.5 2 2 2-2'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-horizontal{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M9.514 10.75h1.755L8.069 2H6.363L3.25 10.75h1.712l.66-1.988h3.194l.698 1.988ZM7.197 4.041l1.101 3.247h-2.18l1.079-3.247ZM16 2h-3.194v8.75h2.72c1.028-.008 1.677-.028 1.946-.06.429-.051.789-.189 1.08-.412.294-.226.525-.527.692-.9.17-.379.256-.767.256-1.165 0-.505-.13-.945-.392-1.319s-.637-.638-1.123-.794c.345-.17.617-.427.817-.77.204-.342.306-.718.306-1.128 0-.378-.082-.718-.246-1.02a2.162 2.162 0 0 0-.616-.734 1.93 1.93 0 0 0-.834-.358C17.103 2.03 16.632 2 16 2Zm-1.58 3.48V3.456h.926c.76 0 1.22.01 1.38.03.268.036.47.14.604.31.138.168.208.387.208.657 0 .283-.08.511-.24.686-.157.172-.373.275-.65.31-.152.02-.542.03-1.171.03h-1.058Zm0 3.796v-2.34h1.302c.734 0 1.21.042 1.428.125.222.084.391.217.507.4.117.183.175.406.175.669 0 .31-.076.559-.23.746a.973.973 0 0 1-.582.346c-.157.036-.526.054-1.107.054h-1.494Zm3.563 3.974 3.52 3.833.497.542-.498.542L17.982 22l-.994-1.084 2.317-2.524H2v-1.534h17.305l-2.317-2.524.995-1.084Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-anglecount,i.icon.icon-text-orientation-horizontal{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-text-orientation-anglecount{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M22 8.72h-5.604v1.358h3.363L8.55 20.916 9.672 22l10.925-10.856v3.286H22V8.72Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' d='m10.658 11.386-1.113 1.076-1.703-.79-2.025 1.958.842 1.623-1.085 1.05L2 9.028l1.082-1.046 7.576 3.403Zm-4.079-.301L3.823 9.769l1.374 2.653 1.382-1.337ZM6.085 5.08 8.11 3.12c.4-.387.718-.657.952-.81.233-.157.485-.255.756-.292a2 2 0 0 1 .856.073c.295.085.562.243.802.475.26.251.434.544.522.879.09.332.08.657-.03.973.407-.203.812-.27 1.215-.202.403.07.764.259 1.085.568.252.244.444.535.575.871.131.332.175.658.133.977-.043.315-.185.62-.424.914-.15.185-.549.595-1.196 1.23l-1.724 1.668-5.547-5.365Zm1.946-.097 1.283 1.24.67-.648c.399-.385.64-.631.724-.737.153-.191.224-.387.215-.588-.01-.205-.104-.395-.283-.568-.172-.166-.354-.257-.548-.275-.194-.023-.387.038-.58.18-.114.086-.412.362-.894.828l-.587.568Zm2.206 2.133 1.483 1.435.947-.916c.369-.357.591-.594.668-.711a.822.822 0 0 0 .15-.57c-.022-.209-.131-.408-.328-.598a1.104 1.104 0 0 0-.534-.303.92.92 0 0 0-.575.066c-.191.082-.52.348-.985.798l-.826.8Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-angleclock{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M15.28 22v-5.604h-1.358v3.363L3.084 8.55 2 9.672l10.856 10.925H9.57V22h5.71Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' d='m12.614 10.658-1.076-1.113.79-1.703-1.958-2.025-1.623.842-1.05-1.085L14.972 2l1.046 1.082-3.403 7.576Zm.301-4.079 1.316-2.756-2.653 1.374 1.337 1.382ZM18.92 6.085l1.96 2.025c.387.4.657.718.81.952.157.233.255.485.292.756a2 2 0 0 1-.073.856 1.905 1.905 0 0 1-.475.802c-.251.26-.544.434-.879.522a1.61 1.61 0 0 1-.973-.03c.203.407.27.812.202 1.215a2.032 2.032 0 0 1-.568 1.085 2.42 2.42 0 0 1-.871.575 1.928 1.928 0 0 1-.977.133c-.315-.043-.62-.185-.914-.424-.185-.15-.595-.549-1.23-1.196l-1.668-1.724 5.365-5.547Zm.097 1.946-1.24 1.283.648.67c.386.399.631.64.737.724.191.153.387.224.588.215.205-.01.395-.104.568-.283.166-.172.258-.354.275-.548.023-.194-.038-.387-.18-.58-.086-.114-.362-.412-.828-.894l-.568-.587Zm-2.133 2.206-1.435 1.483.916.947c.357.369.594.591.712.668a.822.822 0 0 0 .57.15c.208-.022.407-.131.597-.328.161-.166.262-.344.303-.534a.92.92 0 0 0-.066-.575c-.082-.191-.348-.52-.798-.985l-.8-.826Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-angleclock,i.icon.icon-text-orientation-vertical{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-text-orientation-vertical{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='m7.104 22.065 3.978-3.52-1.125-.995-2.62 2.318V1.938H5.745v17.93l-2.62-2.318L2 18.545l3.978 3.52.563.497.563-.497Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' d='M14.513 13.188h3.316c.656 0 1.145.03 1.465.089.325.056.613.175.866.358.256.183.47.428.64.734.169.303.254.643.254 1.02 0 .41-.106.787-.317 1.129a1.96 1.96 0 0 1-.849.77c.506.155.894.42 1.166.794.272.374.407.813.407 1.319 0 .398-.088.786-.266 1.164a2.308 2.308 0 0 1-.718.901c-.302.223-.675.36-1.12.412-.28.032-.953.052-2.02.06h-2.824v-8.75Zm1.675 1.456v2.023h1.098c.652 0 1.058-.01 1.216-.03.287-.035.511-.139.673-.31.166-.175.25-.404.25-.686 0-.271-.072-.49-.216-.657-.14-.171-.349-.274-.628-.31-.166-.02-.643-.03-1.431-.03h-.962Zm0 3.48v2.34h1.55c.604 0 .987-.019 1.149-.054.249-.048.45-.164.605-.347.159-.187.238-.435.238-.746 0-.262-.06-.485-.181-.668a1.028 1.028 0 0 0-.526-.4c-.227-.084-.72-.125-1.483-.125h-1.352ZM22 10.688h-1.822L19.454 8.7h-3.316l-.685 1.988h-1.776l3.23-8.75h1.772L22 10.688Zm-3.084-3.462-1.143-3.247-1.12 3.247h2.263Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-rotateup{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M5.914 2.483 2 5.895l1.107.966 2.578-2.248V22H7.25V4.613l2.577 2.248 1.108-.966L7.02 2.483 6.468 2l-.554.483Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' d='m21.928 12.594-.029 1.656-1.931.69-.052 3.012 1.91.59-.028 1.615-8.403-2.798.028-1.609 8.505-3.156Zm-3.393 2.857-3.154 1.09 3.119.966.035-2.056ZM13.5 11.079l.051-3.013c.01-.596.047-1.04.11-1.333.058-.296.178-.56.359-.792.18-.236.42-.434.72-.593.294-.159.624-.241.99-.247.395-.007.757.083 1.084.27.327.183.57.436.73.759.158-.462.42-.819.786-1.072a2.264 2.264 0 0 1 1.28-.39c.385-.007.758.067 1.12.223.36.151.646.364.86.638.21.27.337.608.38 1.012.027.253.036.864.027 1.834v2.704h-8.498Zm1.432-1.545 1.955-.032.017-.997c.01-.593.007-.962-.01-1.105-.03-.26-.126-.462-.289-.607-.166-.148-.386-.22-.66-.215-.26.004-.473.072-.637.205-.167.13-.27.322-.31.576-.021.15-.038.585-.05 1.301l-.016.874Zm3.362-.055 2.26-.037.025-1.409c.009-.548-.002-.896-.034-1.042a.875.875 0 0 0-.325-.545c-.179-.141-.418-.21-.717-.204-.254.004-.47.062-.649.175a.99.99 0 0 0-.395.484c-.084.207-.132.657-.144 1.35l-.02 1.228Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-rotatedown,i.icon.icon-text-orientation-rotateup{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-text-orientation-rotatedown{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='m7.021 21.517 3.914-3.412-1.107-.966-2.577 2.248V2H5.685v17.387l-2.578-2.248L2 18.105l3.914 3.412.554.483.553-.483Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' d='m13.468 11.406.028-1.656 1.931-.69.052-3.012-1.91-.59.028-1.615L22 6.641l-.028 1.609-8.505 3.156Zm3.392-2.857 3.155-1.09-3.12-.966-.035 2.056ZM21.896 12.921l-.052 3.013c-.01.596-.047 1.04-.11 1.333-.058.296-.178.56-.359.792-.18.236-.42.434-.719.593a2.126 2.126 0 0 1-.99.247 2.081 2.081 0 0 1-1.085-.27 1.74 1.74 0 0 1-.73-.759c-.158.462-.42.819-.785 1.072a2.264 2.264 0 0 1-1.281.39 2.706 2.706 0 0 1-1.12-.223 2.107 2.107 0 0 1-.86-.638c-.21-.27-.337-.608-.38-1.012-.027-.253-.035-.864-.026-1.834V12.92h8.497Zm-1.433 1.545-1.955.032-.017.997c-.01.593-.007.962.01 1.105.03.26.126.462.29.607.166.148.385.22.658.215.262-.004.474-.072.638-.205.167-.13.27-.322.31-.576.021-.15.038-.585.05-1.301l.016-.874Zm-3.362.055-2.26.037-.024 1.409c-.01.548.002.896.034 1.042.042.226.15.407.324.545.179.141.418.21.718.204.253-.004.47-.062.648-.175a.99.99 0 0 0 .395-.484c.084-.207.132-.657.144-1.35l.021-1.228Z'/%3E%3C/svg%3E")}.dataview .row{justify-content:space-around}.dataview ul{list-style:none;padding:0 10px}.dataview ul li{display:inline-block}.dataview .row.list:last-child li:not(.active):last-child:after{content:none}.dataview .active,.dataview .row.list:last-child li.active:last-child{position:relative;z-index:1}.dataview .active:after,.dataview .row.list:last-child li.active:last-child:after{background-color:var(--brand-cell);bottom:-5px;content:"";height:22px;left:auto;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='11'/%3E%3Cpath fill='%23fff' d='M11 21a10 10 0 1 1 10-10 10 10 0 0 1-10 10Zm6.4-13.68L17.06 7a.48.48 0 0 0-.67 0l-7 6.84-2.44-2.6a.51.51 0 0 0-.59.08l-.36.34a.58.58 0 0 0 0 .65l3.19 3.35a.38.38 0 0 0 .39 0L17.4 8a.48.48 0 0 0 0-.67Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;position:absolute;right:-5px;transform:none;width:22px}.navbar .searchbar{background-color:var(--f7-navbar-bg-color)}.navbar .searchbar .buttons-row{align-self:center;display:flex}.navbar .searchbar .searchbar-bg:after{background-color:#cbcbcb;bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.navbar .searchbar-inner{justify-content:space-between}.navbar .searchbar-inner__center{align-items:center;display:flex;width:81%}.navbar .searchbar-inner__right{align-items:center;display:flex}.navbar .searchbar-expandable{transition-duration:0s}.navbar .buttons-row-replace{align-items:center;display:flex;flex-direction:column;justify-content:center;width:100%}.navbar .buttons-row-replace a{display:block;font-size:15px;height:auto;line-height:normal}.navbar .buttons-row-replace a:before{display:none}@media (max-width:550px){.navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__left{max-width:22px;min-width:22px}.navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__center{flex-direction:column}.navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__right{flex-direction:column-reverse}.navbar .searchbar-expandable.searchbar-enabled.replace{top:0}.navbar .searchbar-expandable.searchbar-enabled.replace .searchbar-inner{height:100%}.navbar .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__left{align-self:flex-start}}.device-ios .document-menu{background-color:rgba(0,0,0,.9);border-radius:8px}.device-ios .document-menu .popover-angle:after{background:rgba(0,0,0,.9)}.device-ios .document-menu .list-block{font-size:14px;white-space:pre}.device-ios .document-menu .list-block:first-child ul:before{display:none!important}.device-ios .document-menu .list-block:first-child li:first-child a{border-radius:0}.device-ios .document-menu .list-block .item-link{display:inline-block}.device-ios .document-menu .list-block .item-link.active-state,html:not(.watch-active-state) .device-ios .document-menu .list-block .item-link:active{background-color:#d9d9d9}.device-ios .document-menu .list-block .item-link.active-state .item-inner:after,html:not(.watch-active-state) .device-ios .document-menu .list-block .item-link:active .item-inner:after{background-color:initial}html.phone .device-ios .document-menu .list-block .item-link{padding:0 10px}.device-ios .document-menu .list-block .list-button{color:#ffffff;line-height:36px}.device-ios .document-menu .list-block .list-button:after{background-color:rgba(230,230,230,.9);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.device-ios .document-menu .list-block li{display:inline-flex}.device-ios .document-menu .list-block li:last-child .item-inner:after,.device-ios .document-menu .list-block li:last-child .list-button:after,.device-ios .document-menu .list-block li:last-child li:last-child .item-inner:after{display:none!important}.device-ios .document-menu .list-block li li:last-child .item-inner:after,.device-ios .document-menu .list-block li:last-child li .item-inner:after{background-color:rgba(230,230,230,.9);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.md .document-menu .popover-inner{overflow:hidden}.md .document-menu .list-block{white-space:pre}.md .document-menu .list-block ul{height:48px}.md .document-menu .list-block li{display:inline-block}.md .document-menu .list-block .list-button{color:var(--text-normal)}.document-menu{width:auto}html.phone .document-menu .list-block .list-button{padding:0 10px}.device-ios .wrap-comment{height:calc(100% - 60px)}.device-ios .add-comment-dialog .wrap-textarea,.device-ios .add-comment-popup .wrap-textarea,.device-ios .add-reply-dialog .wrap-textarea,.device-ios .add-reply-popup .wrap-textarea{height:calc(100% - 34px)}.device-ios .edit-comment-dialog .wrap-textarea,.device-ios .edit-comment-popup .wrap-textarea,.device-ios .edit-reply-dialog .wrap-textarea,.device-ios .edit-reply-popup .wrap-textarea{height:calc(100% - 52px)}.device-ios .comment-list .reply-item .item-inner:after{content:none!important}.device-ios .comment-list .reply-item:before{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:auto;position:absolute;right:auto;top:0;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;width:100%;z-index:15}.device-android .wrap-comment{height:calc(100% - 72px)}.device-android .add-comment-dialog .wrap-textarea,.device-android .add-comment-popup .wrap-textarea,.device-android .add-reply-dialog .wrap-textarea,.device-android .add-reply-popup .wrap-textarea{height:calc(100% - 41px)}.device-android .edit-comment-dialog .wrap-textarea,.device-android .edit-comment-popup .wrap-textarea,.device-android .edit-reply-dialog .wrap-textarea,.device-android .edit-reply-popup .wrap-textarea{height:calc(100% - 56px)}.device-android .comment-list .comment-header,.device-android .comment-list .reply-header,.device-android .reply-list .comment-header,.device-android .reply-list .reply-header,.device-android .wrap-comment .comment-header,.device-android .wrap-comment .reply-header{display:flex}.device-android .comment-list .comment-header .initials,.device-android .comment-list .reply-header .initials,.device-android .reply-list .comment-header .initials,.device-android .reply-list .reply-header .initials,.device-android .wrap-comment .comment-header .initials,.device-android .wrap-comment .reply-header .initials{align-items:center;border-radius:50px;color:var(--fill-white);display:flex;font-size:14px;justify-content:center;margin-right:10px}.device-android .wrap-comment .comment-header{align-items:center}.device-android .wrap-comment .comment-header .initials{height:30px;width:30px}.device-android .wrap-comment .wrap-textarea .input:not(.input-outline):after{content:none}.device-android #add-comment-dialog .dialog,.device-android #add-reply-dialog .dialog,.device-android #edit-comment-dialog .dialog,.device-android #edit-reply-dialog .dialog{--f7-dialog-text-color:#000000}.device-android #add-comment-dialog .dialog .done,.device-android #add-reply-dialog .dialog .done,.device-android #edit-comment-dialog .dialog .done,.device-android #edit-reply-dialog .dialog .done{padding-right:6px}.device-android .comment-list .item-inner:after,.device-android .comment-list li:last-child li .item-inner:after,.device-android .comment-list ul:after{content:none}.device-android .comment-list .comment-header .left{align-items:center;display:flex}.device-android .comment-list .comment-header .left .initials{font-size:18px;height:40px;width:40px}.device-android .reply-list .reply-header .left{display:flex}.device-android .reply-list .reply-header .left .initials{font-size:11px;height:24px;margin-top:5px;width:24px}.device-android #edit-comment-dialog .wrap-comment .comment-header .initials,.device-android #edit-comment-dialog .wrap-comment .reply-header .initials,.device-android #edit-reply-dialog .wrap-comment .comment-header .initials,.device-android #edit-reply-dialog .wrap-comment .reply-header .initials,.device-android .edit-comment-popup .wrap-comment .comment-header .initials,.device-android .edit-comment-popup .wrap-comment .reply-header .initials,.device-android .edit-reply-popup .wrap-comment .comment-header .initials,.device-android .edit-reply-popup .wrap-comment .reply-header .initials{height:40px;width:40px}.device-android #view-comment-popover .toolbar-bottom:after{content:none}.wrap-comment{background-color:var(--background-tertiary);padding:16px 24px 0 16px}.wrap-comment .comment-date{color:var(--text-secondary)}.wrap-comment .wrap-textarea{margin-top:6px}.wrap-comment .name{color:var(--text-normal);font-size:16px;font-weight:600}.wrap-comment .reply-date{color:var(--text-secondary)}.wrap-textarea .input{height:100%}.wrap-textarea textarea{color:var(--text-normal);font-size:14px;height:100%;margin-top:0;padding:5px 0}#add-comment-dialog .dialog,#add-reply-dialog .dialog,#edit-comment-dialog .dialog,#edit-reply-dialog .dialog{--f7-dialog-width:400px;z-index:13700}#add-comment-dialog .dialog .dialog-inner,#add-reply-dialog .dialog .dialog-inner,#edit-comment-dialog .dialog .dialog-inner,#edit-reply-dialog .dialog .dialog-inner{height:400px;padding:0}#add-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,#add-comment-dialog .dialog .dialog-inner .wrap-comment .name,#add-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,#add-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,#add-reply-dialog .dialog .dialog-inner .wrap-comment .name,#add-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .name,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .name,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date{text-align:left}#add-comment-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea,#add-reply-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea{color:var(--text-normal);width:100%}.comment-list .item-content .item-inner{padding-bottom:0;padding-right:0;padding-top:16px}.comment-list .item-content .item-inner .comment-header{display:flex;justify-content:space-between;padding-right:16px}.comment-list .item-content .item-inner .comment-header .right{display:flex;justify-content:flex-end;width:70px}.comment-list .item-content .item-inner .comment-header .right .comment-resolve{margin-right:10px}.comment-list .item-content .item-inner .reply-header{display:flex;justify-content:space-between;padding-right:16px}.comment-list .item-title{width:100%}.comment-list .user-name{color:var(--text-normal);font-size:16px;font-weight:700;line-height:22px;margin:0}.comment-list .comment-date,.comment-list .reply-date{color:var(--text-secondary);font-size:12px;line-height:18px;margin:0}.comment-list .comment-quote{border-left:1px solid var(--text-secondary);color:var(--text-secondary);font-size:14px;margin:5px 0;padding-left:10px;padding-right:16px}.comment-list .comment-text,.comment-list .reply-text{color:var(--text-normal);font-size:14px;line-height:25px;margin:0;max-width:100%;padding-right:15px;word-break:break-all}.comment-list .comment-text pre,.comment-list .reply-text pre{overflow-wrap:break-word;white-space:pre-wrap}.comment-list .reply-list{padding-left:26px}.comment-list .reply-item{padding-right:26px}.add-reply-popup,.edit-comment-popup,.edit-reply-popup{z-index:20000}#view-comment-sheet{webkit-transition:height .2s;background-color:var(--fill-white);border-top-left-radius:4px;border-top-right-radius:4px;box-shadow:0 1px 10px rgba(0,0,0,.2),0 4px 5px rgba(0,0,0,.12);height:45%;transition:height .2s}#view-comment-sheet .top{height:90%}#view-comment-sheet .swipe-container{background-color:var(--background-primary);display:flex;height:40px;justify-content:center}#view-comment-sheet .swipe-container .icon-swipe{background:var(--background-menu-divider);border-radius:2px;height:4px;margin-top:8px;width:40px}#view-comment-popover .toolbar,#view-comment-sheet .toolbar{background-color:var(--background-primary);box-shadow:0 1px 10px rgba(0,0,0,.2),0 4px 5px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.14);position:fixed}#view-comment-popover .toolbar .link,#view-comment-sheet .toolbar .link{--f7-toolbar-link-color:var(--brand-cell)}#view-comment-popover .toolbar .toolbar-inner,#view-comment-sheet .toolbar .toolbar-inner{padding:0 16px}#view-comment-popover .toolbar .btn-add-reply,#view-comment-sheet .toolbar .btn-add-reply{font-size:16px;min-width:80px;padding:0}#view-comment-popover .toolbar .comment-navigation,#view-comment-sheet .toolbar .comment-navigation{display:flex;justify-content:space-between;min-width:62px}#view-comment-popover .toolbar .comment-navigation .link,#view-comment-sheet .toolbar .comment-navigation .link{padding:0 12px}#view-comment-popover{background-color:var(--background-primary)}#view-comment-popover .pages{position:absolute}#view-comment-popover .page,#view-comment-popover .page .page-content{border-radius:var(--f7-popover-border-radius)}#view-comment-popover .page .page-content{padding:16px 16px 60px 0}#view-comment-popover .comment-list .item-content .item-inner .comment-header,#view-comment-popover .comment-list .item-content .item-inner .reply-header{padding-right:0}#view-comment-popover .toolbar{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);position:absolute}.page-current-comment{position:relative}.page-current-comment .page-content{background-color:var(--background-primary)}.page-current-comment .comment-list ul:after,.page-current-comment .comment-list ul:before{content:none}.page-current-comment .comment-list ul .item-content .item-inner{padding-top:0}.page-current-comment .comment-list ul .item-content .item-inner .reply-list .item-content .item-inner{padding-top:13px}.dialog.modal-in{max-height:100%;overflow:auto;z-index:14000}.dialog.modal-in .item-content .item-input-wrap:after{background-color:var(--brand-cell)}.dialog-backdrop.backdrop-in{z-index:13600}.no-comments{color:var(--text-normal);margin-top:35px;text-align:center}.actions-modal.modal-in{z-index:13700}.actions-modal.modal-in .actions-group:after{background-color:var(--background-menu-divider)}.actions-backdrop.backdrop-in{z-index:13600}.device-android{--f7-navbar-bg-color:var(--brand-cell);--f7-navbar-link-color:var(--text-link);--f7-navbar-text-color:var(--text-normal);--f7-list-button-border-color:rgba(0,0,0,0.15)}.device-android #editor-navbar.navbar .right{padding-right:4px}.device-android #editor-navbar.navbar .left a.link,.device-android #editor-navbar.navbar .right a.link{align-items:center;box-sizing:border-box;justify-content:space-between;padding:0 13px;width:auto}.device-android .radio-checkbox-item .icon.icon-checkbox{border:2px solid var(--f7-checkbox-inactive-color);border-radius:20px;height:20px;width:20px}.device-android .radio-checkbox-item label.item-checkbox input[type=checkbox]:checked~.icon-checkbox{background-color:initial;border-color:var(--brand-cell)}.device-android .radio-checkbox-item label.item-content i.icon.icon-checkbox:after{background-color:var(--brand-cell);border-radius:100%;content:" ";height:10px;left:50%;margin-left:-5px;margin-top:-5px;position:absolute;top:50%;width:10px}.device-android .move-sheet .navbar .navbar-inner{background:var(--background-primary)}.device-android .move-sheet .navbar .navbar-inner .title{color:var(--text-normal)}.device-android .tooltip-cell-data{border-radius:0}.device-ios .radio-checkbox-item label.item-content input[type=checkbox]:checked~.item-inner{background:no-repeat 50%;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 13 10'%3E%3Cpath fill='%2340865c' d='M11.6 0 4.4 7.2l-3-3L0 5.6 4.4 10 13 1.4z'/%3E%3C/svg%3E");background-position:calc(100% - 15px);background-size:13px 10px}.device-ios .radio-checkbox-item .icon.icon-checkbox{display:none}.device-ios .actions-move-sheet .actions-button-text{color:var(--brand-cell)}.device-ios .tooltip-cell-data{border-radius:4px}.device-ios .all-list.popover .page-content,.device-ios .all-list.popover .view{border-radius:var(--f7-popover-border-radius)}.device-ios .all-list.popover .page-content>.list:last-child{margin-bottom:0}.device-ios .all-list.popover .list{overflow:hidden}.device-ios i.icon.icon-edit-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath fill-rule='evenodd' d='M8 1 3 15h1.2l1.777-5h5.046l.616 1.733.88-.88L9 1zm.5 1.9L10.668 9H6.332z' clip-rule='evenodd'/%3E%3Cpath d='m18.3 11.3-9.2 9.1-1.5-1.5 9.2-9.1-.7-.7-9.6 9.6L6 22l3.3-.5 9.6-9.6zm1.2 0L21 9.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-edit-settings,.device-ios i.icon.icon-undo{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-undo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M22 16v2h-1v-2c0-2.9-2.1-5-5-5H1.9L5 14c.1.1.1.2 0 .3l-.4.4c-.1.1-.2.1-.3 0L.1 10.5c-.1-.1-.1-.2 0-.3l.4-.4h.1L4.4 6c.1-.1.2-.1.3 0l.5.4c.1.1.1.2 0 .3L1.9 10H16c3.3 0 6 2.7 6 6z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-redo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M0 16c0-3.3 2.7-6 6-6h14.1l-3.3-3.3c-.1-.1-.1-.2 0-.3l.5-.4c.1-.1.2-.1.3 0l3.8 3.8h.1l.4.4c.1.1.1.2 0 .3l-4.2 4.2c-.1.1-.2.1-.3 0l-.4-.4c-.1-.1-.1-.2 0-.3l3.1-3H6c-2.9 0-5 2.1-5 5v2H0v-2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-reader,.device-ios i.icon.icon-redo{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-reader{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M17 21H1V9h6V2h10v5h1V1H6.2L0 7.6V22h18v-3h-1v2zM6 2.8V8H1.1L6 2.8zM13 8c-5.1 0-9 5-9 5s4.1 5 9 5c5 0 9-5 9-5s-4-5-9-5zm-4.3 7.5C6.8 14.4 6.4 13 6.4 13s.4-1.5 2.4-2.6C8.3 11.2 8 12 8 13c0 .9.3 1.8.7 2.5zm4.3 1.2c-2.1 0-3.7-1.7-3.7-3.7 0-2.1 1.7-3.7 3.7-3.7 2.1 0 3.7 1.7 3.7 3.7 0 2.1-1.6 3.7-3.7 3.7zm4.3-1.2c.4-.7.7-1.6.7-2.5 0-1-.3-1.8-.7-2.6 2 1.1 3.4 2.6 3.4 2.6s-1.5 1.4-3.4 2.5zM13 11.7c-.7 0-1.3.6-1.3 1.3s.6 1.3 1.3 1.3 1.3-.6 1.3-1.3-.6-1.3-1.3-1.3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-download{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M12 0h-1v14l-3.6-3.7-.7.8 4.8 4.9 4.8-4.9-.7-.8L12 14V0Z'/%3E%3Cpath d='M14 5v1h5v14H4V6h5V5H3v16h17V5h-6Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-download,.device-ios i.icon.icon-print{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-print{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath fill-rule='evenodd' d='M5 1h12v5h4v11h-4v4H5v-4H1V6h4V1Zm1 5h10V2H6v4ZM5 16v-3H2v3h3Zm-3-4h18V7H2v5Zm18 1h-3v3h3v-3Zm-4 0H6v7h10v-7Zm-2 3H8v-1h6v1Zm0 2H8v-1h6v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-plus{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M22 12H12v10h-1V12H1v-1h10V1h1v10h10v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-list,.device-ios i.icon.icon-plus{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-list{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cpath stroke='%23000' d='M2 4h14M2 14h14M2 9h14'/%3E%3C/svg%3E")}.device-ios i.icon.icon-settings{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='m11.8 3 .4 2c.1.7.6 1.1 1.3 1.1.3 0 .5-.1.7-.2l1.9-1.2 1.1 1.1-1.1 1.8c-.3.4-.3.9-.1 1.3.2.4.5.7 1 .8l2.1.5v1.6l-2.1.4c-.5.1-.8.4-1 .8-.2.4-.1.9.1 1.2l1.2 1.9-1.1 1.1-1.8-1.1c-.2-.2-.5-.2-.8-.2-.6 0-1.2.5-1.3 1.1l-.5 2.1h-1.6l-.4-2c-.1-.7-.6-1.1-1.3-1.1-.3 0-.5.1-.7.2l-1.9 1.2-1.1-1.1 1.1-1.8c.3-.4.3-.9.1-1.3-.2-.4-.5-.7-1-.8l-2.1-.5v-1.6l2-.4c.5-.1.8-.4 1-.8.2-.4.1-.9-.1-1.2l-1-2 1.1-1.1 1.8 1.1c.3.2.5.3.8.3.6 0 1.2-.5 1.3-1.1l.5-2.1h1.5M11 15.5c2.5 0 4.5-2 4.5-4.5s-2-4.5-4.5-4.5-4.5 2-4.5 4.5 2 4.5 4.5 4.5M12.1 2H9.9c-.3 0-.5.2-.6.5l-.5 2.4c0 .2-.2.3-.3.3s-.1 0-.2-.1L6.2 3.8c-.1-.1-.2-.1-.4-.1-.1 0-.3 0-.4.1L3.8 5.4c-.1.2-.2.5 0 .8l1.3 2.1c.1.2.1.4-.2.5l-2.4.5c-.3.1-.5.3-.5.6v2.2c0 .3.2.5.5.6l2.4.5c.3.1.4.3.2.5l-1.3 2.1c-.2.2-.1.6.1.8l1.6 1.6c.1.1.3.2.4.2s.2 0 .3-.1L8.3 17c.1-.1.1-.1.2-.1s.3.1.3.3l.5 2.3c.1.3.3.5.6.5h2.2c.3 0 .5-.2.6-.5l.5-2.4c0-.2.1-.3.3-.3.1 0 .1 0 .2.1l2.1 1.3c.1.1.2.1.3.1.2 0 .3-.1.4-.2l1.6-1.6c.2-.2.2-.5.1-.8l-1.3-2.1c-.2-.2-.1-.5.2-.5l2.4-.5c.3-.1.5-.3.5-.6V9.8c0-.3-.2-.5-.5-.6l-2.4-.5c-.3-.1-.4-.3-.2-.5l1.3-2.1c.2-.2.1-.6-.1-.8l-1.6-1.6c-.1-.1-.3-.2-.4-.2-.1 0-.2 0-.3.1l-2.1 1.3c-.1.1-.1.1-.2.1s-.3-.1-.3-.3l-.5-2.2c-.1-.3-.3-.5-.6-.5zM11 14.5c-1.9 0-3.5-1.6-3.5-3.5S9.1 7.5 11 7.5s3.5 1.6 3.5 3.5-1.6 3.5-3.5 3.5z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-feedback{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill-rule='evenodd' d='M21 6H3v12h18V6ZM3 5a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H3Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m2.666 6.372.668-.744 8.666 7.7 8.666-7.7.668.744-9.334 8.3-9.334-8.3Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m9.376 11.33-6 7-.752-.66 6-7 .752.66ZM15.376 10.67l6 7-.752.66-6-7 .752-.66Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-feedback,.device-ios i.icon.icon-versions{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-versions{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='-1 7 22 22'%3E%3Cpath d='M19 12c0-1.1-.9-2-2-2 0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2-1.1 0-2 .9-2 2-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V14c0-1.1-.9-2-2-2zM5 9h10c.6 0 1 .4 1 1H4c0-.6.4-1 1-1zm-2 2h14c.6 0 1 .4 1 1H2c0-.6.4-1 1-1zm17 15c0 .6-.4 1-1 1H1c-.6 0-1-.4-1-1V14c0-.6.4-1 1-1h18c.6 0 1 .4 1 1v12z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-color{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='m8.9 12 2.3-6.3 2.2 6.3H8.9zm-4.2 5.8h2l1.6-4.3h5.6l1.5 4.3h2.1L12.3 3.5h-2.2L4.7 17.8z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-fill-color,.device-ios i.icon.icon-text-color{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-fill-color{background-size:130%;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M11 2.3 3.8 9.5 9 14.7l7.2-7.2L11 2.3zm3.8 5.2L13.3 9H5.7L11 3.7l3.8 3.8zM17 9s-2 2-2 3 1 2 2 2 2-1 2-2-2-3-2-3z'/%3E%3Cpath d='M10.8 7.5c-3.2-1.1-4.3-2.8-4.3-4 0-.3.1-.5.4-.7.7-.5 2.6 0 3.3.2l-.4 1c-1-.3-2-.5-2.3-.4.1.8 1 2.1 3.7 2.9l-.4 1z'/%3E%3Ccircle cx='11' cy='7' r='1'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm3 4v1h14V7H4zm-3 5h21v-1H1v1zm3 3v1h14v-1H4zm-3 5h21v-1H1v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-center,.device-ios i.icon.icon-text-align-jast{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-align-jast{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm0 5h21V7H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm14 4H1v1h14V7zM1 12h21v-1H1v1zm14 3H1v1h14v-1zM1 20h21v-1H1v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-left,.device-ios i.icon.icon-text-align-right{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-align-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm7 5h14V7H8v1zm14 3H1v1h21v-1zM8 16h14v-1H8v1zm14 3H1v1h21v-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-just{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm0 5h21V7H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-just,.device-ios i.icon.icon-text-valign-top{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-valign-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M2 2h19v1H2zM2 4h19v1H2zM12 18h-1V7.83L8.65 9.8 8 8.94 11.5 6 15 9l-.65.8L12 7.83V18z' class='cls-1'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-valign-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M2 10h19v1H2zM2 12h19v1H2zM11 2h1v5.17l2.35-1.97.65.86L11.5 9 8 6l.65-.8L11 7.17V2zM12 21h-1v-5.17L8.65 17.8 8 16.94 11.5 14l3.5 3-.65.8L12 15.83V21z' class='cls-1'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-valign-bottom,.device-ios i.icon.icon-text-valign-middle{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-valign-bottom{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M2 18h19v1H2zM2 20h19v1H2zM11 4h1v11.17l2.35-1.97.65.86L11.5 17 8 14l.65-.8L11 15.17V4z' class='cls-1'/%3E%3C/svg%3E")}.device-ios i.icon.icon-expand-down{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='m20.5 6.5 1.1 1.1L11 18 .5 7.5l1.1-1.1 9.5 9.5 9.4-9.4z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-expand-down,.device-ios i.icon.icon-link{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-link{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M12.4 9.8s-2.1-.1-3.8 1.2c-2.8 2-3.3 4.3-3.3 4.3s1.6-1.7 3.5-2.5c1.7-.7 3.7-.4 3.7-.4v1.9l4.8-3.3-4.8-3.3v2.1zM11 1C5.5 1 1 5.5 1 11s4.5 10 10 10 10-4.5 10-10S16.5 1 11 1zm0 19c-5 0-9-4.1-9-9 0-5 4-9 9-9s9 4.1 9 9c0 5-4 9-9 9z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-insimage{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M19 4H3v15h17V4h-1zM7.5 7C8.3 7 9 7.7 9 8.5S8.3 10 7.5 10 6 9.3 6 8.5 6.7 7 7.5 7zM5.2 18l5.5-5.5 5.5 5.5h-11zM19 18h-1.5l-4.3-4.3 4-4 1.8 1.8V18z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-insimage,.device-ios i.icon.icon-sort{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-sort{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='m8 16.4-.7-.7L5 18.1V2H4v16.1l-2.3-2.4-.7.7L4.5 20zM19.3 4H8.7c-.6 0-.9.6-.6 1.1L12 11v4.7l2.8 1.5c.5.3 1.1-.1 1.1-.7V11l3.9-5.9c.4-.5.1-1.1-.5-1.1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-image-library{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cdefs%3E%3ClinearGradient id='a' x1='11.08' x2='11.08' y1='10.26' y2='1.26' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23f3e916'/%3E%3Cstop offset='1' stop-color='%23f89d34'/%3E%3C/linearGradient%3E%3ClinearGradient id='b' x1='11.08' x2='11.08' y1='20.44' y2='11.88' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%235eb6e8'/%3E%3Cstop offset='1' stop-color='%23958cc3'/%3E%3C/linearGradient%3E%3ClinearGradient id='c' x1='1.46' x2='10.46' y1='11.05' y2='11.05' gradientTransform='rotate(90 5.955 11.045)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23cc8dba'/%3E%3Cstop offset='1' stop-color='%23f86867'/%3E%3C/linearGradient%3E%3ClinearGradient id='d' x1='11.73' x2='20.73' y1='11.05' y2='11.05' gradientTransform='rotate(90 16.23 11.05)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%236ac07f'/%3E%3Cstop offset='1' stop-color='%23c5da3d'/%3E%3C/linearGradient%3E%3ClinearGradient id='e' x1='11.74' x2='17.52' y1='10.42' y2='4.63' gradientTransform='rotate(135 14.625 7.528)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23c5da3d'/%3E%3Cstop offset='1' stop-color='%23f3e916'/%3E%3C/linearGradient%3E%3ClinearGradient id='f' x1='4.7' x2='10.48' y1='17.49' y2='11.71' gradientTransform='rotate(135 7.55 14.638)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%239595c3'/%3E%3Cstop offset='1' stop-color='%23cc8dba'/%3E%3C/linearGradient%3E%3ClinearGradient id='g' x1='4.69' x2='10.47' y1='4.64' y2='10.42' gradientTransform='rotate(45 7.572 7.527)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23f86867'/%3E%3Cstop offset='1' stop-color='%23f89d34'/%3E%3C/linearGradient%3E%3ClinearGradient id='h' x1='11.77' x2='17.55' y1='11.78' y2='17.56' gradientTransform='rotate(45 14.618 14.635)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%235ec0e8'/%3E%3Cstop offset='1' stop-color='%236ac07f'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg data-name='Слой 1' style='isolation:isolate'%3E%3Crect width='22' height='22' x='.09' y='.01' rx='4' ry='4' style='opacity:.2'/%3E%3Crect width='21.04' height='21.04' x='.57' y='.49' rx='3.6' ry='3.6' style='fill:%23fff'/%3E%3Crect width='5.5' height='9' x='8.33' y='1.26' rx='2.5' ry='2.5' style='fill:url(%23a);mix-blend-mode:multiply'/%3E%3Crect width='5.5' height='9' x='8.33' y='11.76' rx='2.5' ry='2.5' style='fill:url(%23b)'/%3E%3Crect width='5.5' height='9' x='3.21' y='6.55' rx='2.5' ry='2.5' style='fill:url(%23c);mix-blend-mode:multiply' transform='rotate(-90 5.955 11.045)'/%3E%3Crect width='5.5' height='9' x='13.48' y='6.55' rx='2.5' ry='2.5' style='fill:url(%23d);mix-blend-mode:multiply' transform='rotate(-90 16.23 11.05)'/%3E%3Crect width='5.5' height='9' x='11.87' y='3.03' rx='2.5' ry='2.5' style='fill:url(%23e);mix-blend-mode:multiply' transform='rotate(-135 14.623 7.527)'/%3E%3Crect width='5.5' height='9' x='4.8' y='10.14' rx='2.5' ry='2.5' style='fill:url(%23f);mix-blend-mode:multiply' transform='rotate(-135 7.552 14.639)'/%3E%3Crect width='5.5' height='9' x='4.83' y='3.03' rx='2.5' ry='2.5' style='fill:url(%23g);mix-blend-mode:multiply' transform='rotate(-45 7.576 7.522)'/%3E%3Crect width='5.5' height='9' x='11.87' y='10.14' rx='2.5' ry='2.5' style='fill:url(%23h);mix-blend-mode:multiply' transform='rotate(-45 14.625 14.642)'/%3E%3C/g%3E%3C/svg%3E");height:22px;width:22px}.device-ios i.icon.icon-cell-wrap{background-color:var(--brand-cell);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M20 1H0v20h21V1h-1zm0 19H1V2h19v18z'/%3E%3Cpath d='M2 4h17v1H2zM2 12h17v1H2zM2 8h11v1H2zM2 16h11v1H2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-cell-wrap,.device-ios i.icon.icon-function{height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-function{background-color:var(--text-normal);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='-238 240 24 22'%3E%3Cpath d='M-226.94 257.74c-.26-.54-.46-1.18-.61-1.92-.15-.73-.22-1.46-.22-2.18 0-1.35.26-2.7.78-4.04.52-1.35 1.22-2.49 2.1-3.43.88-.94 1.51-1.53 1.89-1.77.1-.06.14-.1.14-.13 0-.04-.07-.05-.21-.05-.31 0-.55.04-.71.12-.16.08-.53.4-1.1.96s-1.07 1.14-1.49 1.75c-.42.61-.78 1.25-1.06 1.94-.29.69-.51 1.42-.68 2.19-.17.77-.25 1.63-.25 2.57 0 .58.07 1.25.2 1.99s.33 1.41.58 2c.25.59.41.9.48.94.07.04.24.06.51.06.09 0 .13-.02.13-.05l-.03-.05c-.04-.05-.19-.35-.45-.9zm7.79-4.69c0-.09-.04-.14-.12-.14-.08 0-.18.08-.29.24-.28.41-.59.71-.92.91s-.61.3-.85.3c-.18 0-.36-.08-.52-.25-.17-.16-.25-.42-.25-.77 0-.69.23-1.66.68-2.93.45-1.27 1.01-1.9 1.68-1.9.15 0 .22.08.22.24 0 .06-.01.15-.04.27-.02.07-.02.12-.02.18 0 .13.05.23.14.32.09.08.2.13.34.13.19 0 .34-.06.45-.17.1-.11.16-.24.16-.38 0-.24-.1-.47-.29-.67a.919.919 0 0 0-.71-.31c-.55 0-1.09.29-1.62.87-.11.12-.18.18-.21.18l-.08-.03c-.06-.33-.17-.58-.34-.75-.17-.17-.4-.25-.69-.25-.37 0-.78.19-1.22.56-.44.37-.66.62-.66.74 0 .08.04.11.13.11.08 0 .2-.09.37-.27.45-.48.81-.72 1.09-.72.14 0 .27.08.38.25.11.17.16.39.16.67 0 .58-.27 1.53-.8 2.85-.54 1.32-1.1 1.98-1.68 1.98-.13 0-.23-.05-.3-.14a.41.41 0 0 1-.12-.27c0-.05.01-.12.03-.23.01-.07.02-.13.02-.18 0-.3-.14-.45-.42-.45-.18 0-.33.07-.46.2s-.2.3-.2.51c0 .26.13.48.4.66.27.18.56.26.86.26.4 0 .87-.23 1.41-.68.23-.19.39-.31.47-.36.04.05.11.17.21.37.26.48.66.71 1.21.71.57 0 1.11-.22 1.63-.67.51-.45.77-.78.77-.99zm2.95-5.83c-.13-.75-.33-1.41-.58-2-.25-.59-.41-.9-.48-.94-.07-.04-.24-.06-.51-.06-.09 0-.13.02-.13.05l.03.05c.05.06.2.36.46.91.26.54.46 1.18.61 1.91.15.73.22 1.46.22 2.17 0 1.36-.26 2.71-.78 4.05-.52 1.35-1.22 2.49-2.11 3.43-.89.94-1.51 1.53-1.89 1.77l-.14.13c0 .04.07.06.21.06.3 0 .5-.02.59-.05.1-.03.47-.35 1.11-.94.64-.59 1.19-1.24 1.65-1.94.46-.7.83-1.4 1.12-2.11.28-.7.49-1.44.62-2.21.14-.76.2-1.52.2-2.29 0-.58-.07-1.24-.2-1.99z'/%3E%3Cpath d='M-226.94 257.74c-.26-.54-.46-1.18-.61-1.92-.15-.73-.22-1.46-.22-2.18 0-1.35.26-2.7.78-4.04.52-1.35 1.22-2.49 2.1-3.43.88-.94 1.51-1.53 1.89-1.77.1-.06.14-.1.14-.13 0-.04-.07-.05-.21-.05-.31 0-.55.04-.71.12-.16.08-.53.4-1.1.96s-1.07 1.14-1.49 1.75c-.42.61-.78 1.25-1.06 1.94-.29.69-.51 1.42-.68 2.19-.17.77-.25 1.63-.25 2.57 0 .58.07 1.25.2 1.99s.33 1.41.58 2c.25.59.41.9.48.94.07.04.24.06.51.06.09 0 .13-.02.13-.05l-.03-.05c-.04-.05-.19-.35-.45-.9zm7.79-4.69c0-.09-.04-.14-.12-.14-.08 0-.18.08-.29.24-.28.41-.59.71-.92.91s-.61.3-.85.3c-.18 0-.36-.08-.52-.25-.17-.16-.25-.42-.25-.77 0-.69.23-1.66.68-2.93.45-1.27 1.01-1.9 1.68-1.9.15 0 .22.08.22.24 0 .06-.01.15-.04.27-.02.07-.02.12-.02.18 0 .13.05.23.14.32.09.08.2.13.34.13.19 0 .34-.06.45-.17.1-.11.16-.24.16-.38 0-.24-.1-.47-.29-.67a.919.919 0 0 0-.71-.31c-.55 0-1.09.29-1.62.87-.11.12-.18.18-.21.18l-.08-.03c-.06-.33-.17-.58-.34-.75-.17-.17-.4-.25-.69-.25-.37 0-.78.19-1.22.56-.44.37-.66.62-.66.74 0 .08.04.11.13.11.08 0 .2-.09.37-.27.45-.48.81-.72 1.09-.72.14 0 .27.08.38.25.11.17.16.39.16.67 0 .58-.27 1.53-.8 2.85-.54 1.32-1.1 1.98-1.68 1.98-.13 0-.23-.05-.3-.14a.41.41 0 0 1-.12-.27c0-.05.01-.12.03-.23.01-.07.02-.13.02-.18 0-.3-.14-.45-.42-.45-.18 0-.33.07-.46.2s-.2.3-.2.51c0 .26.13.48.4.66.27.18.56.26.86.26.4 0 .87-.23 1.41-.68.23-.19.39-.31.47-.36.04.05.11.17.21.37.26.48.66.71 1.21.71.57 0 1.11-.22 1.63-.67.51-.45.77-.78.77-.99zm2.95-5.83c-.13-.75-.33-1.41-.58-2-.25-.59-.41-.9-.48-.94-.07-.04-.24-.06-.51-.06-.09 0-.13.02-.13.05l.03.05c.05.06.2.36.46.91.26.54.46 1.18.61 1.91.15.73.22 1.46.22 2.17 0 1.36-.26 2.71-.78 4.05-.52 1.35-1.22 2.49-2.11 3.43-.89.94-1.51 1.53-1.89 1.77l-.14.13c0 .04.07.06.21.06.3 0 .5-.02.59-.05.1-.03.47-.35 1.11-.94.64-.59 1.19-1.24 1.65-1.94.46-.7.83-1.4 1.12-2.11.28-.7.49-1.44.62-2.21.14-.76.2-1.52.2-2.29 0-.58-.07-1.24-.2-1.99z' style='fill:none;stroke:%23000;stroke-width:.5;stroke-linecap:square;stroke-miterlimit:10'/%3E%3Cpath d='M-229.66 247.67c.02-.08.03-.18.04-.3.02-.12.03-.21.04-.27-.88 0-1.36-.01-1.44-.04.39-1.87.78-3.11 1.17-3.73.39-.62.83-.93 1.31-.93.18 0 .32.04.4.11.09.07.13.18.13.33 0 .1-.04.22-.11.35-.12.21-.17.39-.17.53 0 .2.06.36.18.5.12.13.26.2.42.2.2 0 .36-.09.48-.27.12-.18.18-.39.18-.62 0-.4-.13-.75-.39-1.06-.27-.32-.63-.47-1.1-.47-.79 0-1.49.43-2.11 1.28-.61.85-1.09 2.15-1.43 3.9-.68.01-1.21.04-1.62.08l-.1.54 1.6-.05c-.08.33-.26 1.17-.53 2.52-.68 3.42-1.27 5.89-1.77 7.41-.5 1.52-1.1 2.28-1.79 2.28-.19 0-.34-.06-.45-.19s-.17-.26-.17-.41c0-.1.04-.25.11-.45.06-.17.09-.31.09-.42a.75.75 0 0 0-.18-.5.563.563 0 0 0-.44-.21c-.2 0-.36.1-.5.3-.14.2-.2.44-.2.72 0 .43.15.8.45 1.11.3.31.68.47 1.14.47.77 0 1.45-.41 2.06-1.23.61-.82 1.11-2.1 1.51-3.85l1.68-7.57c.51-.03 1.01-.05 1.51-.06z' style='stroke:%23000;stroke-width:.5;stroke-linejoin:round;stroke-miterlimit:10'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-backward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h17v17H1z' opacity='.3'/%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-backward,.device-ios i.icon.icon-move-forward{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-move-forward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z' opacity='.3'/%3E%3Cpath d='M1 1h17v17H1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-background{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M8 8h13v13H8z' opacity='.3'/%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-background,.device-ios i.icon.icon-move-foreground{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-move-foreground{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z' opacity='.3'/%3E%3Cpath d='M8 8h13v13H8z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-cell-style{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill-opacity='.6' clip-path='url(%23a)'%3E%3Cpath d='M3 0h1v24H3zM20 0h1v24h-1z'/%3E%3Cpath d='M0 6h24v1H0zM0 17h24v1H0z'/%3E%3Cg clip-path='url(%23b)'%3E%3Cpath stroke='%23fff' stroke-width='.2' d='M22.368 24.604c.268.255.619.396.989.396.382 0 .741-.149 1.012-.419l-.07-.07c.247-.248.385-.577.389-.927v-.015c0-.344-.13-.67-.369-.92l-7.507-7.85a3.463 3.463 0 0 1-1.564 1.95l-.05-.085.05.085a3.86 3.86 0 0 1-.633.302l9.684 7.46c-.253.25-.587.39-.942.39-.344 0-.67-.132-.92-.37m-.069.073.07-.073m-.07.073-7.859-7.515 7.929 7.442m-.07.073.07-.073'/%3E%3Cpath d='m15.872 13.863.002-.12c0-.673-.234-1.34-.626-1.886-.472-.656-1.15-.918-1.769-1.4-.774-.604-1.153-1.534-1.412-2.457-1.42.537-2.002 2.534-2.033 3.843a5.561 5.561 0 0 0-.002.142c0 1.483.551 3.229 2.01 3.943 1.6.785 3.75-.182 3.83-2.065Z'/%3E%3C/g%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3CclipPath id='b'%3E%3Cpath fill='%23fff' d='M25.91 8v17h-17V8z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-table-borders-all{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-all,.device-ios i.icon.icon-table-borders-none{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-none{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z' opacity='.3'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-inner{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M26 13H14V1h-1v12H1v1h12v12h1V14h12v-1z'/%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-inner,.device-ios i.icon.icon-table-borders-outer{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-outer{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h1v27H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-center,.device-ios i.icon.icon-table-borders-left{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M13 0h1v27h-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M26 0h1v27h-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-right,.device-ios i.icon.icon-table-borders-top{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h27v1H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 13h27v1H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-bottom,.device-ios i.icon.icon-table-borders-middle{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-bottom{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 26h27v1H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-dup{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='3 -3 28 28'%3E%3Cpath d='M3-3v27h27V-3H3zm1 1h25v25H4V-2z' opacity='.3'/%3E%3Cpath d='M30-3h-1L3 23v1h1L30-2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-ddown,.device-ios i.icon.icon-table-borders-dup{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-ddown{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='3 -3 28 28'%3E%3Cpath d='M3-3v27h27V-3H3zm1 1h25v25H4V-2z' opacity='.3'/%3E%3Cpath d='M30 23 4-3H3v1l26 26h1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-format-general{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M4.77 2.86 7.56 10H6.51l-.78-2.15H2.71L1.91 10H.94l2.78-7.14h1.05zm.66 4.19L4.24 3.72h-.02L3.01 7.05h2.42zM10.85 2.86c.153 0 .318.002.495.005.176.004.352.013.525.03s.335.042.485.075c.15.033.278.083.385.15.233.14.431.334.595.58.163.247.245.55.245.91 0 .38-.092.708-.275.985a1.624 1.624 0 0 1-.785.615v.02c.44.093.776.293 1.01.6s.35.68.35 1.12c0 .26-.047.513-.14.76a1.911 1.911 0 0 1-.415.655c-.183.19-.41.343-.68.46s-.582.175-.935.175H8.26V2.86h2.59zm.26 3.07c.54 0 .928-.095 1.165-.285s.355-.475.355-.855c0-.253-.04-.453-.12-.6a.853.853 0 0 0-.33-.34 1.3 1.3 0 0 0-.485-.155 4.712 4.712 0 0 0-.585-.035h-1.9v2.27h1.9zm.48 3.27c.42 0 .748-.113.985-.34.237-.227.355-.54.355-.94 0-.233-.043-.426-.13-.58a1.006 1.006 0 0 0-.345-.365c-.143-.09-.309-.153-.495-.19s-.38-.055-.58-.055H9.21V9.2h2.38zM19.425 3.87c-.363-.253-.795-.38-1.295-.38-.427 0-.792.08-1.095.24-.304.16-.554.375-.75.645-.197.27-.342.579-.435.925-.093.346-.14.707-.14 1.08 0 .407.047.792.14 1.155s.238.68.435.95c.196.27.448.485.755.645.307.16.673.24 1.1.24.313 0 .591-.052.835-.155A1.89 1.89 0 0 0 20.02 8.13c.1-.253.16-.526.18-.82h.95c-.093.9-.403 1.6-.93 2.1s-1.247.75-2.16.75c-.553 0-1.037-.095-1.45-.285a2.848 2.848 0 0 1-1.03-.785 3.37 3.37 0 0 1-.615-1.18c-.137-.453-.205-.94-.205-1.46s.073-1.008.22-1.465c.146-.457.362-.855.645-1.195s.637-.608 1.06-.805c.423-.196.908-.295 1.455-.295.373 0 .727.05 1.06.15.333.1.63.247.89.44.26.194.476.435.65.725.174.29.287.625.34 1.005h-.95c-.107-.507-.341-.886-.705-1.14zM3.71 19v-5.08H1.87v-.68c.24 0 .473-.018.7-.055s.431-.105.615-.205c.183-.1.338-.236.465-.41.126-.174.213-.393.26-.66h.65V19h-.85zM8.71 13.42c.093-.307.238-.571.435-.795.197-.223.442-.398.735-.525.293-.126.627-.19 1-.19.307 0 .595.045.865.135s.505.22.705.39.359.382.475.635c.117.253.175.547.175.88 0 .314-.048.59-.145.83a2.37 2.37 0 0 1-.385.645c-.16.19-.343.362-.55.515s-.42.3-.64.44c-.22.134-.44.265-.66.395-.22.13-.422.268-.605.415-.183.147-.34.305-.47.475-.13.17-.215.365-.255.585h3.64V19H8.4c.034-.42.108-.778.225-1.075.117-.297.265-.555.445-.775.18-.22.384-.413.61-.58.227-.167.464-.323.71-.47.3-.186.564-.358.79-.515s.415-.315.565-.475a1.7 1.7 0 0 0 .34-.52 1.7 1.7 0 0 0 .115-.65 1.224 1.224 0 0 0-.405-.93 1.27 1.27 0 0 0-.435-.26 1.555 1.555 0 0 0-.53-.09c-.247 0-.458.052-.635.155a1.33 1.33 0 0 0-.435.405c-.114.167-.195.355-.245.565s-.072.422-.065.635H8.6c-.02-.36.017-.693.11-1zM17.59 14.96h.28c.18 0 .351-.025.515-.075.163-.05.306-.123.43-.22.123-.097.222-.218.295-.365.073-.147.11-.313.11-.5 0-.38-.12-.665-.36-.855-.24-.19-.54-.285-.9-.285-.227 0-.425.042-.595.125s-.31.195-.42.335c-.11.14-.192.303-.245.49-.054.187-.08.384-.08.59h-.85c.013-.34.068-.65.165-.93.096-.28.235-.52.415-.72.18-.2.405-.357.675-.47s.581-.17.935-.17c.307 0 .591.038.855.115.263.077.491.192.685.345.193.153.345.35.455.59.11.24.165.523.165.85 0 .32-.094.604-.28.85s-.42.433-.7.56v.02c.433.093.755.297.965.61s.315.683.315 1.11c0 .353-.065.665-.195.935s-.305.495-.525.675c-.22.18-.479.315-.775.405-.297.09-.612.135-.945.135-.36 0-.687-.05-.98-.15a2.011 2.011 0 0 1-.75-.445c-.207-.197-.365-.438-.475-.725s-.162-.613-.155-.98h.85c.013.46.146.835.4 1.125s.623.435 1.11.435c.207 0 .403-.032.59-.095.186-.063.35-.153.49-.27.14-.116.252-.26.335-.43.083-.17.125-.362.125-.575a1.3 1.3 0 0 0-.44-1.015 1.295 1.295 0 0 0-.475-.26 2.009 2.009 0 0 0-.595-.085c-.18 0-.35.01-.51.03v-.72c.033.007.063.01.09.01z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-format-general,.device-ios i.icon.icon-format-number{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-format-number{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M3.71 13.833v-5.08H1.87v-.68c.24 0 .473-.018.7-.055s.431-.105.615-.205c.183-.1.338-.236.465-.41.126-.174.213-.393.26-.66h.65v7.09h-.85zM8.5 12.723v1.01c0 .38-.086.706-.26.98-.174.273-.453.467-.84.58v-.5a.755.755 0 0 0 .285-.175.97.97 0 0 0 .28-.525 1 1 0 0 0 .015-.26h-.59v-1.11H8.5zM9.78 9.543c.013-.28.046-.553.1-.82.053-.266.13-.52.23-.76s.236-.45.41-.63a1.87 1.87 0 0 1 .655-.43c.263-.107.578-.16.945-.16s.681.053.945.16c.263.107.481.25.655.43s.31.39.41.63c.1.24.177.494.23.76s.086.54.1.82a17.25 17.25 0 0 1 0 1.62c-.014.28-.047.553-.1.82s-.13.518-.23.755a2.03 2.03 0 0 1-.41.625c-.174.18-.39.322-.65.425-.26.103-.577.155-.95.155-.367 0-.682-.052-.945-.155a1.814 1.814 0 0 1-.655-.425 2.02 2.02 0 0 1-.41-.625 3.877 3.877 0 0 1-.23-.755 5.444 5.444 0 0 1-.1-.82 17.266 17.266 0 0 1 0-1.62zm.905 1.695c.016.33.07.64.16.93.09.29.235.535.435.735.2.2.48.3.84.3s.64-.1.84-.3c.2-.2.345-.445.435-.735.09-.29.143-.6.16-.93a17.982 17.982 0 0 0 .02-1.47 4.826 4.826 0 0 0-.18-1.245c-.057-.2-.14-.375-.25-.525a1.3 1.3 0 0 0-.415-.365 1.234 1.234 0 0 0-.61-.14c-.24 0-.444.047-.61.14a1.3 1.3 0 0 0-.415.365c-.11.15-.194.325-.25.525a4.937 4.937 0 0 0-.18 1.245c-.003.21-.005.402-.005.575 0 .267.008.565.025.895zM15.34 9.543c.013-.28.046-.553.1-.82.053-.266.13-.52.23-.76s.236-.45.41-.63a1.87 1.87 0 0 1 .655-.43c.263-.107.578-.16.945-.16s.681.053.945.16c.263.107.481.25.655.43s.31.39.41.63c.1.24.177.494.23.76s.086.54.1.82a17.25 17.25 0 0 1 0 1.62c-.014.28-.047.553-.1.82s-.13.518-.23.755a2.03 2.03 0 0 1-.41.625c-.174.18-.39.322-.65.425-.26.103-.577.155-.95.155-.367 0-.682-.052-.945-.155a1.814 1.814 0 0 1-.655-.425 2.02 2.02 0 0 1-.41-.625 3.877 3.877 0 0 1-.23-.755 5.444 5.444 0 0 1-.1-.82 17.266 17.266 0 0 1 0-1.62zm.905 1.695c.016.33.07.64.16.93.09.29.235.535.435.735.2.2.48.3.84.3s.64-.1.84-.3c.2-.2.345-.445.435-.735.09-.29.143-.6.16-.93a17.982 17.982 0 0 0 .02-1.47 4.826 4.826 0 0 0-.18-1.245c-.057-.2-.14-.375-.25-.525a1.3 1.3 0 0 0-.415-.365 1.234 1.234 0 0 0-.61-.14c-.24 0-.444.047-.61.14a1.3 1.3 0 0 0-.415.365c-.11.15-.194.325-.25.525a4.937 4.937 0 0 0-.18 1.245c-.003.21-.005.402-.005.575 0 .267.008.565.025.895z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-format-integer{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M4.709 14.833v-5.08h-1.84v-.68c.24 0 .474-.018.7-.055s.432-.105.616-.205c.182-.1.338-.236.464-.41a1.57 1.57 0 0 0 .261-.66h.65v7.09h-.851zM8.11 9.253a2.12 2.12 0 0 1 .435-.795c.196-.223.441-.398.734-.525s.627-.19 1-.19c.307 0 .596.045.866.135s.504.22.705.39.358.382.474.635c.117.253.176.547.176.88 0 .314-.049.59-.146.83-.096.24-.225.455-.384.645-.16.19-.344.362-.55.515-.207.153-.42.3-.64.44-.22.134-.44.265-.66.395a5.17 5.17 0 0 0-.605.415c-.184.147-.34.305-.47.475-.13.17-.215.365-.256.585h3.64v.75H7.8a3.78 3.78 0 0 1 .225-1.075c.117-.297.265-.555.446-.775.18-.22.384-.413.61-.58a8.78 8.78 0 0 1 .71-.47c.3-.186.564-.358.79-.515s.414-.315.565-.475c.15-.16.263-.333.34-.52a1.71 1.71 0 0 0 .115-.65 1.239 1.239 0 0 0-.84-1.19 1.555 1.555 0 0 0-.53-.09c-.248 0-.459.052-.635.155a1.329 1.329 0 0 0-.435.405 1.689 1.689 0 0 0-.246.565c-.049.21-.071.422-.064.635H8c-.02-.36.016-.693.11-1zM15.39 10.793h.28c.18 0 .351-.025.515-.075a1.32 1.32 0 0 0 .43-.22 1.069 1.069 0 0 0 .405-.865c0-.38-.12-.665-.36-.855-.24-.19-.54-.285-.9-.285-.227 0-.426.042-.596.125s-.31.195-.42.335c-.11.14-.191.303-.244.49-.054.187-.08.384-.08.59h-.85c.013-.34.068-.65.164-.93s.236-.52.415-.72c.181-.2.406-.357.675-.47.27-.113.582-.17.936-.17.306 0 .592.038.855.115.263.077.49.192.685.345.192.153.345.35.454.59.111.24.166.523.166.85 0 .32-.094.604-.28.85s-.42.433-.7.56v.02c.433.094.755.297.964.61.211.314.316.683.316 1.11 0 .353-.066.665-.196.935s-.304.495-.524.675c-.22.18-.479.315-.775.405-.297.09-.612.135-.946.135-.36 0-.686-.05-.98-.15a2.003 2.003 0 0 1-.75-.445 1.95 1.95 0 0 1-.475-.725 2.596 2.596 0 0 1-.154-.98h.85c.013.46.146.835.4 1.125.253.29.623.435 1.11.435.206 0 .404-.032.59-.095.187-.063.35-.153.49-.27.14-.116.251-.26.335-.43.082-.17.125-.362.125-.575 0-.22-.04-.415-.12-.585s-.187-.313-.321-.43c-.133-.116-.291-.203-.475-.26s-.38-.085-.594-.085c-.181 0-.351.01-.51.03v-.72c.033.007.063.01.09.01z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-format-integer,.device-ios i.icon.icon-format-scientific{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-format-scientific{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M4.98 15.833v-5.588H2.957v-.748c.264 0 .52-.02.77-.06.249-.04.474-.116.675-.226.202-.11.373-.26.512-.451.14-.19.234-.432.287-.726h.715v7.799H4.98zM8.6 11.114a5.95 5.95 0 0 1 .11-.902c.059-.293.143-.572.253-.836.11-.264.26-.495.451-.693.19-.198.43-.355.72-.473.29-.117.637-.176 1.04-.176s.75.059 1.039.176a2.051 2.051 0 0 1 1.172 1.166c.11.264.194.543.253.836.058.293.094.594.11.902.014.308.022.605.022.89 0 .287-.008.584-.022.892a6.193 6.193 0 0 1-.11.902c-.059.293-.144.57-.253.83s-.26.49-.451.688c-.19.198-.43.354-.715.468-.286.113-.635.17-1.045.17-.403 0-.75-.057-1.04-.17a1.98 1.98 0 0 1-.72-.468 2.21 2.21 0 0 1-.451-.688 4.256 4.256 0 0 1-.253-.83c-.06-.293-.096-.594-.11-.902s-.022-.605-.022-.891c0-.286.007-.583.022-.891zm.996 1.865c.017.362.076.704.175 1.022.1.32.258.589.479.81.22.219.527.33.924.33s.704-.111.924-.33c.22-.221.379-.49.478-.81s.158-.66.176-1.022c.019-.363.027-.691.027-.985 0-.19-.002-.402-.005-.633a5.52 5.52 0 0 0-.198-1.369c-.062-.22-.154-.412-.275-.577s-.274-.3-.456-.402c-.184-.103-.408-.154-.671-.154s-.488.051-.671.154a1.401 1.401 0 0 0-.456.402 1.794 1.794 0 0 0-.276.577 5.343 5.343 0 0 0-.198 1.37c-.004.23-.005.441-.005.632 0 .294.008.622.028.985zM14.33 5.11c.055-.184.143-.343.26-.477.119-.134.265-.239.441-.315.176-.076.376-.114.6-.114.184 0 .357.027.52.081.162.054.302.132.423.234.12.102.215.229.284.38.07.153.105.329.105.53 0 .187-.028.353-.086.497a1.416 1.416 0 0 1-.231.387c-.097.114-.207.217-.33.31s-.253.18-.384.263a42.4 42.4 0 0 1-.397.237 3.293 3.293 0 0 0-.363.25c-.11.087-.203.182-.281.284a.807.807 0 0 0-.154.35h2.185v.451h-2.778c.02-.252.065-.467.134-.645.07-.178.16-.333.267-.465.108-.132.23-.248.367-.348.135-.1.277-.194.426-.282.18-.112.338-.215.474-.309.135-.094.249-.189.338-.285s.159-.2.204-.312.07-.242.07-.39a.736.736 0 0 0-.243-.558.771.771 0 0 0-.261-.156.936.936 0 0 0-.318-.054.739.739 0 0 0-.643.336c-.067.1-.117.213-.146.34s-.043.252-.04.38h-.51c-.011-.216.01-.416.067-.6z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-format-accounting{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M15.5 21h-10C4.1 21 3 19.9 3 18.5v-14C3 3.1 4.1 2 5.5 2h10C16.9 2 18 3.1 18 4.5v14c0 1.4-1.1 2.5-2.5 2.5zM5.5 3C4.7 3 4 3.7 4 4.5v14c0 .8.7 1.5 1.5 1.5h10c.8 0 1.5-.7 1.5-1.5v-14c0-.8-.7-1.5-1.5-1.5h-10z'/%3E%3Cpath d='M14.5 9h-8C5.7 9 5 8.3 5 7.5v-2C5 4.7 5.7 4 6.5 4h8c.8 0 1.5.7 1.5 1.5v2c0 .8-.7 1.5-1.5 1.5zm-8-4c-.3 0-.5.2-.5.5v2c0 .3.2.5.5.5h8c.3 0 .5-.2.5-.5v-2c0-.3-.2-.5-.5-.5h-8zM5 10h3v2H5zM9 10h3v2H9zM13 10h3v2h-3zM13 13h3v2h-3zM9 13h3v2H9zM5 13h3v2H5zM5 16h3v2H5zM9 16h3v2H9zM13 16h3v2h-3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-format-accounting,.device-ios i.icon.icon-format-currency{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-format-currency{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M0 4v14h22V4H0zm21 13H1V5h20v12z'/%3E%3Cpath d='M11 16c-2.2 0-4-2.2-4-5s1.8-5 4-5 4 2.2 4 5-1.8 5-4 5zm0-9c-1.7 0-3 1.8-3 4s1.3 4 3 4 3-1.8 3-4-1.3-4-3-4z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-format-date{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M20 20H2V7h18v13zM3 19h16V8H3v11zM8 6H5V2h3v4zM6 5h1V3H6v2zM17 6h-3V2h3v4zm-2-1h1V3h-1v2z'/%3E%3Cpath d='M8.8 15.8v-4.1H7.4v-.5H8c.2 0 .3-.1.5-.2.1-.1.3-.2.4-.3 0-.1.1-.3.1-.5h.5v5.7h-.7zM14.4 11.8c-.3.4-.5.8-.7 1.2-.2.4-.4.9-.5 1.4-.1.5-.2.9-.2 1.4h-.8c0-.5.1-.9.2-1.4.1-.5.3-.9.5-1.3s.4-.8.7-1.2c.3-.4.5-.7.8-1h-3v-.6h3.7v.6c-.2.2-.5.6-.7.9zM2 3h1v4H2zM3 3h2v1H3zM8 3h6v1H8zM17 3h3v1h-3zM19 4h1v3h-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-format-date,.device-ios i.icon.icon-format-time{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-format-time{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M11.2 21.1C5.5 21.1.9 16.5.9 10.8S5.5.5 11.2.5s10.3 4.6 10.3 10.3-4.6 10.3-10.3 10.3zm0-19.6c-5.1 0-9.3 4.2-9.3 9.3 0 5.1 4.2 9.3 9.3 9.3 5.1 0 9.3-4.2 9.3-9.3 0-5.1-4.2-9.3-9.3-9.3z'/%3E%3Ccircle cx='11.2' cy='10.8' r='1.9'/%3E%3Cpath d='M10.7 2.6h1v8h-1zM7.1 10.4h3.4v.9H7.1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-format-percentage{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M2.8 6.497c.096-.437.258-.825.486-1.161.228-.336.527-.603.9-.8s.834-.298 1.386-.298c.564 0 1.029.096 1.395.288.366.192.66.45.882.774.222.324.378.705.468 1.143.09.438.135.903.135 1.395 0 .468-.052.92-.153 1.36-.102.437-.27.822-.504 1.15-.234.33-.531.598-.89.802-.361.204-.805.306-1.333.306-.54 0-.996-.093-1.368-.28a2.379 2.379 0 0 1-.9-.764 3.265 3.265 0 0 1-.495-1.134 6.053 6.053 0 0 1-.153-1.386c0-.492.048-.956.144-1.395zm1.25 2.214c.031.306.1.588.208.846.108.258.26.474.459.648s.465.26.8.26c.35 0 .625-.083.829-.251s.363-.381.477-.639a2.96 2.96 0 0 0 .225-.855 7.667 7.667 0 0 0 .009-1.737 2.886 2.886 0 0 0-.207-.846 1.734 1.734 0 0 0-.46-.648c-.197-.174-.47-.261-.818-.261-.336 0-.606.087-.81.261s-.364.39-.477.648a2.93 2.93 0 0 0-.225.846 7.661 7.661 0 0 0-.01 1.728zm11.548-4.707L5.932 17.378H4.384l9.684-13.374h1.53zm-3.906 8.253c.096-.438.258-.825.486-1.161.228-.336.528-.603.9-.801s.834-.297 1.386-.297c.564 0 1.03.096 1.395.288.366.193.66.45.882.774.222.324.378.705.468 1.143s.135.903.135 1.395c0 .468-.051.922-.153 1.359a3.24 3.24 0 0 1-.504 1.152c-.234.33-.53.594-.891.792-.36.198-.804.297-1.332.297-.54 0-.996-.094-1.368-.28s-.672-.437-.9-.755a3.14 3.14 0 0 1-.495-1.125c-.102-.432-.153-.893-.153-1.386s.048-.957.144-1.395zm1.251 2.214c.03.306.099.589.207.846.108.258.261.474.46.648.197.174.464.26.8.26.348 0 .624-.082.828-.251.204-.168.363-.381.477-.639s.19-.543.225-.855c.036-.312.054-.606.054-.882 0-.264-.015-.55-.045-.855-.03-.306-.1-.588-.207-.846-.108-.258-.26-.474-.459-.648s-.471-.26-.82-.26c-.335 0-.606.086-.809.26-.204.174-.363.39-.477.648-.115.258-.189.54-.225.846a7.444 7.444 0 0 0-.009 1.728z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-format-percentage,.device-ios i.icon.icon-format-text{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-format-text{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M5.523 6.432 8.871 15h-1.26l-.935-2.58H3.05L2.09 15H.929l3.336-8.568h1.26zm.792 5.028L4.888 7.464h-.025l-1.45 3.996h2.902zM15.219 6.432c.184 0 .383.002.594.005s.422.017.63.038c.208.02.403.048.582.09.18.039.334.1.462.18.28.167.519.4.714.694.196.297.294.66.294 1.093 0 .456-.11.85-.329 1.182-.22.332-.535.578-.943.738v.025c.529.11.932.351 1.213.718.279.37.42.817.42 1.345 0 .312-.057.616-.169.912a2.3 2.3 0 0 1-.498.786c-.22.228-.492.412-.816.552s-.697.21-1.121.21h-4.14V6.432h3.107zm.312 3.684c.649 0 1.114-.114 1.399-.343.283-.227.425-.569.425-1.025 0-.305-.048-.544-.144-.72a1.018 1.018 0 0 0-.396-.408 1.553 1.553 0 0 0-.582-.186 5.697 5.697 0 0 0-.702-.041h-2.279v2.723h2.28zm.576 3.924c.504 0 .899-.136 1.182-.408.284-.272.426-.648.426-1.128 0-.28-.052-.512-.156-.695a1.205 1.205 0 0 0-.413-.439 1.711 1.711 0 0 0-.595-.227 3.52 3.52 0 0 0-.696-.067h-2.603v2.964h2.855z'/%3E%3C/svg%3E")}.device-ios i.icon.sortdown{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='-238 240 22 22'%3E%3Cstyle%3E.st0{fill:var(--brand-cell)}%3C/style%3E%3Cpath d='m-230 256.4-.7-.7-2.3 2.4V242h-1v16.1l-2.3-2.4-.7.7 3.5 3.6zM-226 249.55l2.9-7.55h1.08l3.09 7.55h-1.14l-.88-2.29h-3.16l-.83 2.29H-226zm2.18-3.1h2.56l-.79-2.09c-.24-.64-.42-1.16-.54-1.57-.1.48-.23.97-.41 1.44l-.82 2.22zM-225.93 259v-.93l3.87-4.84c.28-.34.54-.64.78-.9h-4.21v-.89h5.41v.89l-4.24 5.24-.46.53h4.82v.9h-5.97z' class='st0'/%3E%3C/svg%3E")}.device-ios i.icon.sortdown,.device-ios i.icon.sortup{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.sortup{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='-238 240 22 22'%3E%3Cstyle%3E.st0{fill:var(--brand-cell)}%3C/style%3E%3Cpath d='m-233.5 242-3.5 3.6.7.7 2.3-2.4V260h1v-16.1l2.3 2.4.7-.7zM-226.53 260l2.9-7.55h1.08l3.08 7.55h-1.14l-.88-2.29h-3.16l-.82 2.29h-1.06zm2.17-3.1h2.56l-.79-2.09c-.24-.64-.42-1.16-.54-1.57-.1.48-.23.97-.41 1.44l-.82 2.22zM-225.97 250.55v-.93l3.87-4.84c.28-.34.54-.64.78-.9h-4.21V243h5.41v.89l-4.24 5.24-.46.53h4.82v.89h-5.97z' class='st0'/%3E%3C/svg%3E")}.device-ios i.icon.icon-users{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M16 7c0 2.341-.584 4.135-1.386 5.312C13.807 13.497 12.834 14 12 14c-.834 0-1.807-.503-2.614-1.688C8.584 11.135 8 9.341 8 7c0-2.385 1.979-4 4-4s4 1.615 4 4Zm-.81 6.22C14.286 14.375 13.144 15 12 15s-2.287-.625-3.19-1.78c-1.405.564-2.597 1.129-3.54 1.702C3.553 15.967 3 16.832 3 17.5c0 .755.426 1.588 1.823 2.288C6.25 20.503 8.573 21 12 21c3.427 0 5.75-.497 7.177-1.212C20.574 19.088 21 18.255 21 17.5c0-.667-.553-1.533-2.27-2.578-.943-.573-2.135-1.138-3.54-1.702Zm.564-.85C16.514 11.028 17 9.21 17 7c0-3-2.491-5-5-5S7 4 7 7c0 2.21.486 4.028 1.246 5.37C4.39 13.94 2 15.579 2 17.5 2 19.985 5 22 12 22s10-2.015 10-4.5c0-1.921-2.39-3.56-6.246-5.13Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-app-settings,.device-ios i.icon.icon-users{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-app-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M7 14h9a4 4 0 0 1 0 8H7a4 4 0 0 1 0-8Zm9-1a5 5 0 0 1 0 10H7a5 5 0 0 1 0-10h9Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M16 20a2 2 0 1 1 0-4 2 2 0 0 1 0 4Zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6ZM16 3H7a4 4 0 1 0 0 8h9a4 4 0 0 0 0-8ZM7 2a5 5 0 0 0 0 10h9a5 5 0 0 0 0-10H7Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M7 9a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm0 1a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-settings{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M1 2h21v19H1V2Zm11 1h9v5h-9V3Zm0 6h9v5h-9V9Zm-1 5V9H2v5h9Zm-9 1v5h9v-5H2Zm10 0h9v5h-9v-5ZM11 3v5H2V3h9Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-menu-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath fill='%23A3A3A3' fill-rule='evenodd' d='M10 15a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.714a1.714 1.714 0 1 0 0-3.428 1.714 1.714 0 0 0 0 3.428ZM18 15a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.714a1.714 1.714 0 1 0 0-3.428 1.714 1.714 0 0 0 0 3.428ZM26 15a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.714a1.714 1.714 0 1 0 0-3.428 1.714 1.714 0 0 0 0 3.428Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-menu-comment,.device-ios i.icon.icon-resolve-comment{background-color:var(--text-tertiary);height:30px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:30px}.device-ios i.icon.icon-resolve-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath fill='%23A3A3A3' fill-rule='evenodd' d='M11.62 20.856a.5.5 0 0 0 .738-.021L22.516 9.058a.75.75 0 1 0-1.138-.98l-9.023 10.509a.5.5 0 0 1-.736.025l-3.513-3.575a.755.755 0 0 0-1.082 1.053l4.596 4.765Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-resolve-comment.check{background-color:var(--brand-cell);height:30px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath fill-rule='evenodd' d='M11.62 20.856a.5.5 0 0 0 .738-.021L22.516 9.058a.75.75 0 1 0-1.138-.98l-9.023 10.509a.5.5 0 0 1-.736.025l-3.513-3.575a.755.755 0 0 0-1.082 1.053l4.596 4.765Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:30px}.device-ios i.icon.icon-insert-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M20.154 9.007h-8.308c-1.02 0-1.846.828-1.846 1.848v4.314c0 1.021.827 1.849 1.846 1.849h1.987c.108 0 .212.038.295.107l4.115 3.267c.3.25.757.037.757-.355V17.48c0-.255.207-.462.462-.462h.692c1.02 0 1.846-.828 1.846-1.849v-4.314c0-1.02-.827-1.848-1.846-1.848ZM20 10.008a1 1 0 0 1 1 1.002v4.005a1 1 0 0 1-1 1.002h-1.997L18 18.9v.1l-3.5-2.983H12a1 1 0 0 1-1-1.002V11.01a1 1 0 0 1 1-1h8Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' d='M14.5 3h-10C3.19 3 2 4.215 2 5.503v6.532c0 1.287 1.19 1.978 2.5 1.978h1c.328 0 .5.179.5.5v3.005c0 .494.614.817 1 .5l4-3.032V13.5l-4 3v-3.488H4.5c-.71 0-1.5-.28-1.5-.977V5.503c0-.698.79-1.502 1.5-1.502h10c.71 0 1.5.804 1.5 1.502v2.503h1V5.503C17 4.215 15.81 3 14.5 3Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-chart,.device-ios i.icon.icon-insert-comment{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-add-chart{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M20 5h-4v15h4V5Zm-10 6h4v9h-4v-9Zm-6 3h4v6H4v-6Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-formula{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M5 5h14v4.118h-2.625V7.47H8.938L11.562 12l-2.624 4.53h7.437v-1.648H19V19H5v-1.235L8.5 12 5 6.235V5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-formula,.device-ios i.icon.icon-add-shape{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-add-shape{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cellipse cx='15.333' cy='14.4' fill='var(--brand-cell)' rx='5.667' ry='5.6'/%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M5 4.8a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h4.328a6.317 6.317 0 0 1-.47-2.4c0-3.534 2.899-6.4 6.475-6.4.56 0 1.102.07 1.62.202V5.8a1 1 0 0 0-1-1H5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-image{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='m5.792 16.667 3.083-3.5 2.25 2.333L14.21 12l4 4.667H5.792Zm13.667 1.859c.361-.316.542-.68.542-1.094V6.568c0-.413-.18-.778-.542-1.094A1.842 1.842 0 0 0 18.21 5H5.792c-.472 0-.89.158-1.25.474C4.18 5.79 4 6.154 4 6.568v10.864c0 .414.18.778.542 1.094.36.316.778.474 1.25.474h12.417c.472 0 .89-.158 1.25-.474ZM8.8 11.222c.884 0 1.6-.696 1.6-1.555 0-.86-.716-1.556-1.6-1.556-.883 0-1.6.697-1.6 1.556 0 .859.717 1.555 1.6 1.555Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-image,.device-ios i.icon.icon-add-other{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-add-other{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M7 18a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm6.5 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm5 1.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-chart{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M20 5h-4v15h4V5Zm-10 6h4v9h-4v-9Zm-6 3h4v6H4v-6Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-chart,.device-ios .tab-link-active i.icon.icon-add-formula{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios .tab-link-active i.icon.icon-add-formula{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M5 5h14v4.118h-2.625V7.47H8.938L11.562 12l-2.624 4.53h7.437v-1.648H19V19H5v-1.235L8.5 12 5 6.235V5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-shape{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cellipse cx='15.333' cy='14.4' fill='%23fff' rx='5.667' ry='5.6'/%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M5 4.8a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h4.328a6.317 6.317 0 0 1-.47-2.4c0-3.534 2.899-6.4 6.475-6.4.56 0 1.102.07 1.62.202V5.8a1 1 0 0 0-1-1H5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-image,.device-ios .tab-link-active i.icon.icon-add-shape{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios .tab-link-active i.icon.icon-add-image{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='m5.792 16.667 3.083-3.5 2.25 2.333L14.21 12l4 4.667H5.792Zm13.667 1.859c.361-.316.542-.68.542-1.094V6.568c0-.413-.18-.778-.542-1.094A1.842 1.842 0 0 0 18.21 5H5.792c-.472 0-.89.158-1.25.474C4.18 5.79 4 6.154 4 6.568v10.864c0 .414.18.778.542 1.094.36.316.778.474 1.25.474h12.417c.472 0 .89-.158 1.25-.474ZM8.8 11.222c.884 0 1.6-.696 1.6-1.555 0-.86-.716-1.556-1.6-1.556-.883 0-1.6.697-1.6 1.556 0 .859.717 1.555 1.6 1.555Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-other{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M7 18a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm6.5 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm5 1.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios .tab-link-active i.icon.icon-link{background:#fff}.device-android i.icon.icon-expand-up{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cpath d='M10.9 5.1 2 13.9 4.1 16l7-6.8 6.8 6.8 2.1-2.1-8.8-8.8-.1-.1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-expand-down,.device-android i.icon.icon-expand-up{background-color:var(--brand-cell);height:17px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:17px}.device-android i.icon.icon-expand-down{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cpath d='M10.9 16.9 2 8.1 4.1 6l7 6.8L17.9 6 20 8.1l-8.8 8.8-.1.1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-edit{background-color:var(--brand-cell);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M0 20h22v1H0v-1zM17.1 3.1 3.5 16.7 3 20l3.3-.5L19.9 5.9zM20.5 5.3 22 3.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5 2.8 2.8z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-edit-settings{background-color:var(--toolbar-icons);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cg fill='%23fff'%3E%3Cpath fill-rule='evenodd' d='M2.5 15 8 1h2l4.415 11.257-1.601 1.601L12.12 12H5.87l-1.12 3zM9 3.67 6.62 10h4.76z' clip-rule='evenodd'/%3E%3Cpath d='M10 19.5V22h2.5l7.372-7.372-2.5-2.5zm11.805-6.805c.26-.26.26-.68 0-.94l-1.56-1.56a.664.664 0 0 0-.94 0l-1.22 1.22 2.5 2.5z'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-reader{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M17 21H1V9h6V2h10v5h1V1H6.2L0 7.6V22h18v-3h-1v2zM6 2.8V8H1.1L6 2.8zM13 8c-5.1 0-9 5-9 5s4.1 5 9 5c5 0 9-5 9-5s-4-5-9-5zm-4.3 7.5C6.8 14.4 6.4 13 6.4 13s.4-1.5 2.4-2.6C8.3 11.2 8 12 8 13c0 .9.3 1.8.7 2.5zm4.3 1.2c-2.1 0-3.7-1.7-3.7-3.7 0-2.1 1.7-3.7 3.7-3.7 2.1 0 3.7 1.7 3.7 3.7 0 2.1-1.6 3.7-3.7 3.7zm4.3-1.2c.4-.7.7-1.6.7-2.5 0-1-.3-1.8-.7-2.6 2 1.1 3.4 2.6 3.4 2.6s-1.5 1.4-3.4 2.5zM13 11.7c-.7 0-1.3.6-1.3 1.3s.6 1.3 1.3 1.3 1.3-.6 1.3-1.3-.6-1.3-1.3-1.3z'/%3E%3C/svg%3E")}.device-android i.icon.icon-download,.device-android i.icon.icon-reader{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-download{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M12 0h-1v14l-3.6-3.7-.7.8 4.8 4.9 4.8-4.9-.7-.8L12 14V0Z'/%3E%3Cpath d='M14 5v1h5v14H4V6h5V5H3v16h17V5h-6Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-print{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath fill-rule='evenodd' d='M5 1h12v5h4v11h-4v4H5v-4H1V6h4V1Zm1 5h10V2H6v4ZM5 16v-3H2v3h3Zm-3-4h18V7H2v5Zm18 1h-3v3h3v-3Zm-4 0H6v7h10v-7Zm-2 3H8v-1h6v1Zm0 2H8v-1h6v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-feedback,.device-android i.icon.icon-print{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-feedback{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill-rule='evenodd' d='M21 6H3v12h18V6ZM2 5v14h20V5H2Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m2.666 6.372.668-.744 8.666 7.7 8.666-7.7.668.744-9.334 8.3-9.334-8.3Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m9.376 11.33-6 7-.752-.66 6-7 .752.66ZM15.376 10.67l6 7-.752.66-6-7 .752-.66Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-versions{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='-1 7 22 22'%3E%3Cpath d='M19 12c0-1.1-.9-2-2-2 0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2-1.1 0-2 .9-2 2-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V14c0-1.1-.9-2-2-2zM5 9h10c.6 0 1 .4 1 1H4c0-.6.4-1 1-1zm-2 2h14c.6 0 1 .4 1 1H2c0-.6.4-1 1-1zm17 15c0 .6-.4 1-1 1H1c-.6 0-1-.4-1-1V14c0-.6.4-1 1-1h18c.6 0 1 .4 1 1v12z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-color,.device-android i.icon.icon-versions{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-text-color{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='m8.9 12 2.3-6.3 2.2 6.3H8.9zm-4.2 5.8h2l1.6-4.3h5.6l1.5 4.3h2.1L12.3 3.5h-2.2L4.7 17.8z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm3 4v1h14V7H4zm-3 5h21v-1H1v1zm3 3v1h14v-1H4zm-3 5h21v-1H1v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-center,.device-android i.icon.icon-text-align-jast{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-text-align-jast{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm0 5h21V7H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm14 4H1v1h14V7zM1 12h21v-1H1v1zm14 3H1v1h14v-1zM1 20h21v-1H1v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-left,.device-android i.icon.icon-text-align-right{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-text-align-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm7 5h14V7H8v1zm14 3H1v1h21v-1zM8 16h14v-1H8v1zm14 3H1v1h21v-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-just{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm0 5h21V7H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-just,.device-android i.icon.icon-text-valign-top{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-text-valign-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M2 2h19v1H2zM2 4h19v1H2zM12 18h-1V7.83L8.65 9.8 8 8.94 11.5 6 15 9l-.65.8L12 7.83V18z' class='cls-1'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-valign-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M2 10h19v1H2zM2 12h19v1H2zM11 2h1v5.17l2.35-1.97.65.86L11.5 9 8 6l.65-.8L11 7.17V2zM12 21h-1v-5.17L8.65 17.8 8 16.94 11.5 14l3.5 3-.65.8L12 15.83V21z' class='cls-1'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-valign-bottom,.device-android i.icon.icon-text-valign-middle{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-text-valign-bottom{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M2 18h19v1H2zM2 20h19v1H2zM11 4h1v11.17l2.35-1.97.65.86L11.5 17 8 14l.65-.8L11 15.17V4z' class='cls-1'/%3E%3C/svg%3E")}.device-android i.icon.icon-link{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' d='M17.024 7c1.377 0 2.55.498 3.52 1.495C21.515 9.461 22 10.63 22 12c0 1.37-.485 2.555-1.455 3.552-.97.965-2.144 1.448-3.522 1.448H13v-2h4c.845 0 1.588-.212 2.183-.804.626-.623.817-1.355.817-2.196 0-.841-.19-1.558-.817-2.15-.595-.623-1.314-.85-2.16-.85H13V7h4.023Zm-9.015 5.981V11.02h7.982v1.962H8.009Zm-3.24-3.13C4.176 10.441 4 11.158 4 12s.175 1.573.77 2.196C5.396 14.788 6.155 15 7 15h4.014v2H6.977c-1.378 0-2.551-.483-3.522-1.448C2.485 14.555 2 13.37 2 12c0-1.37.485-2.539 1.455-3.505C4.425 7.498 5.6 7 6.977 7h4.037v2H6.977c-.846 0-1.581.227-2.207.85Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-image-library,.device-android i.icon.icon-insimage{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M20 5.5H4a.5.5 0 0 0-.5.5v9.582l4.533-3.892a1.25 1.25 0 0 1 1.555-.06l3.985 2.928 2.389-1.88a1.25 1.25 0 0 1 1.631.073l2.907 2.745V6a.5.5 0 0 0-.5-.5Zm.5 12.03-.015.015-3.765-3.556-2.37 1.865a1.25 1.25 0 0 1-1.512.025L8.86 12.957 3.5 17.56V18a.5.5 0 0 0 .5.5h16a.5.5 0 0 0 .5-.5v-.47ZM4 4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H4Zm12.5 5.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z' clip-rule='evenodd'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='transparent' d='M0 0h24v24H0V0Z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-sort{background-color:var(--brand-cell);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='m8 16.4-.7-.7L5 18.1V2H4v16.1l-2.3-2.4-.7.7L4.5 20zM19.3 4H8.7c-.6 0-.9.6-.6 1.1L12 11v4.7l2.8 1.5c.5.3 1.1-.1 1.1-.7V11l3.9-5.9c.4-.5.1-1.1-.5-1.1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-function,.device-android i.icon.icon-sort{height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-function{background-color:var(--text-normal);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='-238 240 24 22'%3E%3Cpath d='M-226.94 257.74c-.26-.54-.46-1.18-.61-1.92-.15-.73-.22-1.46-.22-2.18 0-1.35.26-2.7.78-4.04.52-1.35 1.22-2.49 2.1-3.43.88-.94 1.51-1.53 1.89-1.77.1-.06.14-.1.14-.13 0-.04-.07-.05-.21-.05-.31 0-.55.04-.71.12-.16.08-.53.4-1.1.96s-1.07 1.14-1.49 1.75c-.42.61-.78 1.25-1.06 1.94-.29.69-.51 1.42-.68 2.19-.17.77-.25 1.63-.25 2.57 0 .58.07 1.25.2 1.99s.33 1.41.58 2c.25.59.41.9.48.94.07.04.24.06.51.06.09 0 .13-.02.13-.05l-.03-.05c-.04-.05-.19-.35-.45-.9zm7.79-4.69c0-.09-.04-.14-.12-.14-.08 0-.18.08-.29.24-.28.41-.59.71-.92.91s-.61.3-.85.3c-.18 0-.36-.08-.52-.25-.17-.16-.25-.42-.25-.77 0-.69.23-1.66.68-2.93.45-1.27 1.01-1.9 1.68-1.9.15 0 .22.08.22.24 0 .06-.01.15-.04.27-.02.07-.02.12-.02.18 0 .13.05.23.14.32.09.08.2.13.34.13.19 0 .34-.06.45-.17.1-.11.16-.24.16-.38 0-.24-.1-.47-.29-.67a.919.919 0 0 0-.71-.31c-.55 0-1.09.29-1.62.87-.11.12-.18.18-.21.18l-.08-.03c-.06-.33-.17-.58-.34-.75-.17-.17-.4-.25-.69-.25-.37 0-.78.19-1.22.56-.44.37-.66.62-.66.74 0 .08.04.11.13.11.08 0 .2-.09.37-.27.45-.48.81-.72 1.09-.72.14 0 .27.08.38.25.11.17.16.39.16.67 0 .58-.27 1.53-.8 2.85-.54 1.32-1.1 1.98-1.68 1.98-.13 0-.23-.05-.3-.14a.41.41 0 0 1-.12-.27c0-.05.01-.12.03-.23.01-.07.02-.13.02-.18 0-.3-.14-.45-.42-.45-.18 0-.33.07-.46.2s-.2.3-.2.51c0 .26.13.48.4.66.27.18.56.26.86.26.4 0 .87-.23 1.41-.68.23-.19.39-.31.47-.36.04.05.11.17.21.37.26.48.66.71 1.21.71.57 0 1.11-.22 1.63-.67.51-.45.77-.78.77-.99zm2.95-5.83c-.13-.75-.33-1.41-.58-2-.25-.59-.41-.9-.48-.94-.07-.04-.24-.06-.51-.06-.09 0-.13.02-.13.05l.03.05c.05.06.2.36.46.91.26.54.46 1.18.61 1.91.15.73.22 1.46.22 2.17 0 1.36-.26 2.71-.78 4.05-.52 1.35-1.22 2.49-2.11 3.43-.89.94-1.51 1.53-1.89 1.77l-.14.13c0 .04.07.06.21.06.3 0 .5-.02.59-.05.1-.03.47-.35 1.11-.94.64-.59 1.19-1.24 1.65-1.94.46-.7.83-1.4 1.12-2.11.28-.7.49-1.44.62-2.21.14-.76.2-1.52.2-2.29 0-.58-.07-1.24-.2-1.99z'/%3E%3Cpath d='M-226.94 257.74c-.26-.54-.46-1.18-.61-1.92-.15-.73-.22-1.46-.22-2.18 0-1.35.26-2.7.78-4.04.52-1.35 1.22-2.49 2.1-3.43.88-.94 1.51-1.53 1.89-1.77.1-.06.14-.1.14-.13 0-.04-.07-.05-.21-.05-.31 0-.55.04-.71.12-.16.08-.53.4-1.1.96s-1.07 1.14-1.49 1.75c-.42.61-.78 1.25-1.06 1.94-.29.69-.51 1.42-.68 2.19-.17.77-.25 1.63-.25 2.57 0 .58.07 1.25.2 1.99s.33 1.41.58 2c.25.59.41.9.48.94.07.04.24.06.51.06.09 0 .13-.02.13-.05l-.03-.05c-.04-.05-.19-.35-.45-.9zm7.79-4.69c0-.09-.04-.14-.12-.14-.08 0-.18.08-.29.24-.28.41-.59.71-.92.91s-.61.3-.85.3c-.18 0-.36-.08-.52-.25-.17-.16-.25-.42-.25-.77 0-.69.23-1.66.68-2.93.45-1.27 1.01-1.9 1.68-1.9.15 0 .22.08.22.24 0 .06-.01.15-.04.27-.02.07-.02.12-.02.18 0 .13.05.23.14.32.09.08.2.13.34.13.19 0 .34-.06.45-.17.1-.11.16-.24.16-.38 0-.24-.1-.47-.29-.67a.919.919 0 0 0-.71-.31c-.55 0-1.09.29-1.62.87-.11.12-.18.18-.21.18l-.08-.03c-.06-.33-.17-.58-.34-.75-.17-.17-.4-.25-.69-.25-.37 0-.78.19-1.22.56-.44.37-.66.62-.66.74 0 .08.04.11.13.11.08 0 .2-.09.37-.27.45-.48.81-.72 1.09-.72.14 0 .27.08.38.25.11.17.16.39.16.67 0 .58-.27 1.53-.8 2.85-.54 1.32-1.1 1.98-1.68 1.98-.13 0-.23-.05-.3-.14a.41.41 0 0 1-.12-.27c0-.05.01-.12.03-.23.01-.07.02-.13.02-.18 0-.3-.14-.45-.42-.45-.18 0-.33.07-.46.2s-.2.3-.2.51c0 .26.13.48.4.66.27.18.56.26.86.26.4 0 .87-.23 1.41-.68.23-.19.39-.31.47-.36.04.05.11.17.21.37.26.48.66.71 1.21.71.57 0 1.11-.22 1.63-.67.51-.45.77-.78.77-.99zm2.95-5.83c-.13-.75-.33-1.41-.58-2-.25-.59-.41-.9-.48-.94-.07-.04-.24-.06-.51-.06-.09 0-.13.02-.13.05l.03.05c.05.06.2.36.46.91.26.54.46 1.18.61 1.91.15.73.22 1.46.22 2.17 0 1.36-.26 2.71-.78 4.05-.52 1.35-1.22 2.49-2.11 3.43-.89.94-1.51 1.53-1.89 1.77l-.14.13c0 .04.07.06.21.06.3 0 .5-.02.59-.05.1-.03.47-.35 1.11-.94.64-.59 1.19-1.24 1.65-1.94.46-.7.83-1.4 1.12-2.11.28-.7.49-1.44.62-2.21.14-.76.2-1.52.2-2.29 0-.58-.07-1.24-.2-1.99z' style='fill:none;stroke:%23000;stroke-width:.5;stroke-linecap:square;stroke-miterlimit:10'/%3E%3Cpath d='M-229.66 247.67c.02-.08.03-.18.04-.3.02-.12.03-.21.04-.27-.88 0-1.36-.01-1.44-.04.39-1.87.78-3.11 1.17-3.73.39-.62.83-.93 1.31-.93.18 0 .32.04.4.11.09.07.13.18.13.33 0 .1-.04.22-.11.35-.12.21-.17.39-.17.53 0 .2.06.36.18.5.12.13.26.2.42.2.2 0 .36-.09.48-.27.12-.18.18-.39.18-.62 0-.4-.13-.75-.39-1.06-.27-.32-.63-.47-1.1-.47-.79 0-1.49.43-2.11 1.28-.61.85-1.09 2.15-1.43 3.9-.68.01-1.21.04-1.62.08l-.1.54 1.6-.05c-.08.33-.26 1.17-.53 2.52-.68 3.42-1.27 5.89-1.77 7.41-.5 1.52-1.1 2.28-1.79 2.28-.19 0-.34-.06-.45-.19s-.17-.26-.17-.41c0-.1.04-.25.11-.45.06-.17.09-.31.09-.42a.75.75 0 0 0-.18-.5.563.563 0 0 0-.44-.21c-.2 0-.36.1-.5.3-.14.2-.2.44-.2.72 0 .43.15.8.45 1.11.3.31.68.47 1.14.47.77 0 1.45-.41 2.06-1.23.61-.82 1.11-2.1 1.51-3.85l1.68-7.57c.51-.03 1.01-.05 1.51-.06z' style='stroke:%23000;stroke-width:.5;stroke-linejoin:round;stroke-miterlimit:10'/%3E%3C/svg%3E")}.device-android i.icon.icon-app-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M7 14h9a4 4 0 0 1 0 8H7a4 4 0 0 1 0-8Zm9-1a5 5 0 0 1 0 10H7a5 5 0 0 1 0-10h9Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M16 20a2 2 0 1 1 0-4 2 2 0 0 1 0 4Zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6ZM16 3H7a4 4 0 1 0 0 8h9a4 4 0 0 0 0-8ZM7 2a5 5 0 0 0 0 10h9a5 5 0 0 0 0-10H7Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M7 9a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm0 1a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-app-settings,.device-android i.icon.icon-table-settings{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-table-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M1 2h21v19H1V2Zm11 1h9v5h-9V3Zm0 6h9v5h-9V9Zm-1 5V9H2v5h9Zm-9 1v5h9v-5H2Zm10 0h9v5h-9v-5ZM11 3v5H2V3h9Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-move-backward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h17v17H1z' opacity='.3'/%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-move-backward,.device-android i.icon.icon-move-forward{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-move-forward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z' opacity='.3'/%3E%3Cpath d='M1 1h17v17H1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-move-background{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M8 8h13v13H8z' opacity='.3'/%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-move-background,.device-android i.icon.icon-move-foreground{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-move-foreground{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z' opacity='.3'/%3E%3Cpath d='M8 8h13v13H8z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-all{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-all,.device-android i.icon.icon-table-borders-none{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-none{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z' opacity='.3'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-inner{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M26 13H14V1h-1v12H1v1h12v12h1V14h12v-1z'/%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-inner,.device-android i.icon.icon-table-borders-outer{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-outer{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h1v27H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-center,.device-android i.icon.icon-table-borders-left{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M13 0h1v27h-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M26 0h1v27h-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-right,.device-android i.icon.icon-table-borders-top{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h27v1H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 13h27v1H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-bottom,.device-android i.icon.icon-table-borders-middle{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-bottom{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 26h27v1H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-dup{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='3 -3 28 28'%3E%3Cpath d='M3-3v27h27V-3H3zm1 1h25v25H4V-2z' opacity='.3'/%3E%3Cpath d='M30-3h-1L3 23v1h1L30-2z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-ddown,.device-android i.icon.icon-table-borders-dup{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-ddown{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='3 -3 28 28'%3E%3Cpath d='M3-3v27h27V-3H3zm1 1h25v25H4V-2z' opacity='.3'/%3E%3Cpath d='M30 23 4-3H3v1l26 26h1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-format-general{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M4.77 2.86 7.56 10H6.51l-.78-2.15H2.71L1.91 10H.94l2.78-7.14h1.05zm.66 4.19L4.24 3.72h-.02L3.01 7.05h2.42zM10.85 2.86c.153 0 .318.002.495.005.176.004.352.013.525.03s.335.042.485.075c.15.033.278.083.385.15.233.14.431.334.595.58.163.247.245.55.245.91 0 .38-.092.708-.275.985a1.624 1.624 0 0 1-.785.615v.02c.44.093.776.293 1.01.6s.35.68.35 1.12c0 .26-.047.513-.14.76a1.911 1.911 0 0 1-.415.655c-.183.19-.41.343-.68.46s-.582.175-.935.175H8.26V2.86h2.59zm.26 3.07c.54 0 .928-.095 1.165-.285s.355-.475.355-.855c0-.253-.04-.453-.12-.6a.853.853 0 0 0-.33-.34 1.3 1.3 0 0 0-.485-.155 4.712 4.712 0 0 0-.585-.035h-1.9v2.27h1.9zm.48 3.27c.42 0 .748-.113.985-.34.237-.227.355-.54.355-.94 0-.233-.043-.426-.13-.58a1.006 1.006 0 0 0-.345-.365c-.143-.09-.309-.153-.495-.19s-.38-.055-.58-.055H9.21V9.2h2.38zM19.425 3.87c-.363-.253-.795-.38-1.295-.38-.427 0-.792.08-1.095.24-.304.16-.554.375-.75.645-.197.27-.342.579-.435.925-.093.346-.14.707-.14 1.08 0 .407.047.792.14 1.155s.238.68.435.95c.196.27.448.485.755.645.307.16.673.24 1.1.24.313 0 .591-.052.835-.155A1.89 1.89 0 0 0 20.02 8.13c.1-.253.16-.526.18-.82h.95c-.093.9-.403 1.6-.93 2.1s-1.247.75-2.16.75c-.553 0-1.037-.095-1.45-.285a2.848 2.848 0 0 1-1.03-.785 3.37 3.37 0 0 1-.615-1.18c-.137-.453-.205-.94-.205-1.46s.073-1.008.22-1.465c.146-.457.362-.855.645-1.195s.637-.608 1.06-.805c.423-.196.908-.295 1.455-.295.373 0 .727.05 1.06.15.333.1.63.247.89.44.26.194.476.435.65.725.174.29.287.625.34 1.005h-.95c-.107-.507-.341-.886-.705-1.14zM3.71 19v-5.08H1.87v-.68c.24 0 .473-.018.7-.055s.431-.105.615-.205c.183-.1.338-.236.465-.41.126-.174.213-.393.26-.66h.65V19h-.85zM8.71 13.42c.093-.307.238-.571.435-.795.197-.223.442-.398.735-.525.293-.126.627-.19 1-.19.307 0 .595.045.865.135s.505.22.705.39.359.382.475.635c.117.253.175.547.175.88 0 .314-.048.59-.145.83a2.37 2.37 0 0 1-.385.645c-.16.19-.343.362-.55.515s-.42.3-.64.44c-.22.134-.44.265-.66.395-.22.13-.422.268-.605.415-.183.147-.34.305-.47.475-.13.17-.215.365-.255.585h3.64V19H8.4c.034-.42.108-.778.225-1.075.117-.297.265-.555.445-.775.18-.22.384-.413.61-.58.227-.167.464-.323.71-.47.3-.186.564-.358.79-.515s.415-.315.565-.475a1.7 1.7 0 0 0 .34-.52 1.7 1.7 0 0 0 .115-.65 1.224 1.224 0 0 0-.405-.93 1.27 1.27 0 0 0-.435-.26 1.555 1.555 0 0 0-.53-.09c-.247 0-.458.052-.635.155a1.33 1.33 0 0 0-.435.405c-.114.167-.195.355-.245.565s-.072.422-.065.635H8.6c-.02-.36.017-.693.11-1zM17.59 14.96h.28c.18 0 .351-.025.515-.075.163-.05.306-.123.43-.22.123-.097.222-.218.295-.365.073-.147.11-.313.11-.5 0-.38-.12-.665-.36-.855-.24-.19-.54-.285-.9-.285-.227 0-.425.042-.595.125s-.31.195-.42.335c-.11.14-.192.303-.245.49-.054.187-.08.384-.08.59h-.85c.013-.34.068-.65.165-.93.096-.28.235-.52.415-.72.18-.2.405-.357.675-.47s.581-.17.935-.17c.307 0 .591.038.855.115.263.077.491.192.685.345.193.153.345.35.455.59.11.24.165.523.165.85 0 .32-.094.604-.28.85s-.42.433-.7.56v.02c.433.093.755.297.965.61s.315.683.315 1.11c0 .353-.065.665-.195.935s-.305.495-.525.675c-.22.18-.479.315-.775.405-.297.09-.612.135-.945.135-.36 0-.687-.05-.98-.15a2.011 2.011 0 0 1-.75-.445c-.207-.197-.365-.438-.475-.725s-.162-.613-.155-.98h.85c.013.46.146.835.4 1.125s.623.435 1.11.435c.207 0 .403-.032.59-.095.186-.063.35-.153.49-.27.14-.116.252-.26.335-.43.083-.17.125-.362.125-.575a1.3 1.3 0 0 0-.44-1.015 1.295 1.295 0 0 0-.475-.26 2.009 2.009 0 0 0-.595-.085c-.18 0-.35.01-.51.03v-.72c.033.007.063.01.09.01z'/%3E%3C/svg%3E")}.device-android i.icon.icon-format-general,.device-android i.icon.icon-format-number{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-format-number{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M3.71 13.833v-5.08H1.87v-.68c.24 0 .473-.018.7-.055s.431-.105.615-.205c.183-.1.338-.236.465-.41.126-.174.213-.393.26-.66h.65v7.09h-.85zM8.5 12.723v1.01c0 .38-.086.706-.26.98-.174.273-.453.467-.84.58v-.5a.755.755 0 0 0 .285-.175.97.97 0 0 0 .28-.525 1 1 0 0 0 .015-.26h-.59v-1.11H8.5zM9.78 9.543c.013-.28.046-.553.1-.82.053-.266.13-.52.23-.76s.236-.45.41-.63a1.87 1.87 0 0 1 .655-.43c.263-.107.578-.16.945-.16s.681.053.945.16c.263.107.481.25.655.43s.31.39.41.63c.1.24.177.494.23.76s.086.54.1.82a17.25 17.25 0 0 1 0 1.62c-.014.28-.047.553-.1.82s-.13.518-.23.755a2.03 2.03 0 0 1-.41.625c-.174.18-.39.322-.65.425-.26.103-.577.155-.95.155-.367 0-.682-.052-.945-.155a1.814 1.814 0 0 1-.655-.425 2.02 2.02 0 0 1-.41-.625 3.877 3.877 0 0 1-.23-.755 5.444 5.444 0 0 1-.1-.82 17.266 17.266 0 0 1 0-1.62zm.905 1.695c.016.33.07.64.16.93.09.29.235.535.435.735.2.2.48.3.84.3s.64-.1.84-.3c.2-.2.345-.445.435-.735.09-.29.143-.6.16-.93a17.982 17.982 0 0 0 .02-1.47 4.826 4.826 0 0 0-.18-1.245c-.057-.2-.14-.375-.25-.525a1.3 1.3 0 0 0-.415-.365 1.234 1.234 0 0 0-.61-.14c-.24 0-.444.047-.61.14a1.3 1.3 0 0 0-.415.365c-.11.15-.194.325-.25.525a4.937 4.937 0 0 0-.18 1.245c-.003.21-.005.402-.005.575 0 .267.008.565.025.895zM15.34 9.543c.013-.28.046-.553.1-.82.053-.266.13-.52.23-.76s.236-.45.41-.63a1.87 1.87 0 0 1 .655-.43c.263-.107.578-.16.945-.16s.681.053.945.16c.263.107.481.25.655.43s.31.39.41.63c.1.24.177.494.23.76s.086.54.1.82a17.25 17.25 0 0 1 0 1.62c-.014.28-.047.553-.1.82s-.13.518-.23.755a2.03 2.03 0 0 1-.41.625c-.174.18-.39.322-.65.425-.26.103-.577.155-.95.155-.367 0-.682-.052-.945-.155a1.814 1.814 0 0 1-.655-.425 2.02 2.02 0 0 1-.41-.625 3.877 3.877 0 0 1-.23-.755 5.444 5.444 0 0 1-.1-.82 17.266 17.266 0 0 1 0-1.62zm.905 1.695c.016.33.07.64.16.93.09.29.235.535.435.735.2.2.48.3.84.3s.64-.1.84-.3c.2-.2.345-.445.435-.735.09-.29.143-.6.16-.93a17.982 17.982 0 0 0 .02-1.47 4.826 4.826 0 0 0-.18-1.245c-.057-.2-.14-.375-.25-.525a1.3 1.3 0 0 0-.415-.365 1.234 1.234 0 0 0-.61-.14c-.24 0-.444.047-.61.14a1.3 1.3 0 0 0-.415.365c-.11.15-.194.325-.25.525a4.937 4.937 0 0 0-.18 1.245c-.003.21-.005.402-.005.575 0 .267.008.565.025.895z'/%3E%3C/svg%3E")}.device-android i.icon.icon-format-integer{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M4.709 14.833v-5.08h-1.84v-.68c.24 0 .474-.018.7-.055s.432-.105.616-.205c.182-.1.338-.236.464-.41a1.57 1.57 0 0 0 .261-.66h.65v7.09h-.851zM8.11 9.253a2.12 2.12 0 0 1 .435-.795c.196-.223.441-.398.734-.525s.627-.19 1-.19c.307 0 .596.045.866.135s.504.22.705.39.358.382.474.635c.117.253.176.547.176.88 0 .314-.049.59-.146.83-.096.24-.225.455-.384.645-.16.19-.344.362-.55.515-.207.153-.42.3-.64.44-.22.134-.44.265-.66.395a5.17 5.17 0 0 0-.605.415c-.184.147-.34.305-.47.475-.13.17-.215.365-.256.585h3.64v.75H7.8a3.78 3.78 0 0 1 .225-1.075c.117-.297.265-.555.446-.775.18-.22.384-.413.61-.58a8.78 8.78 0 0 1 .71-.47c.3-.186.564-.358.79-.515s.414-.315.565-.475c.15-.16.263-.333.34-.52a1.71 1.71 0 0 0 .115-.65 1.239 1.239 0 0 0-.84-1.19 1.555 1.555 0 0 0-.53-.09c-.248 0-.459.052-.635.155a1.329 1.329 0 0 0-.435.405 1.689 1.689 0 0 0-.246.565c-.049.21-.071.422-.064.635H8c-.02-.36.016-.693.11-1zM15.39 10.793h.28c.18 0 .351-.025.515-.075a1.32 1.32 0 0 0 .43-.22 1.069 1.069 0 0 0 .405-.865c0-.38-.12-.665-.36-.855-.24-.19-.54-.285-.9-.285-.227 0-.426.042-.596.125s-.31.195-.42.335c-.11.14-.191.303-.244.49-.054.187-.08.384-.08.59h-.85c.013-.34.068-.65.164-.93s.236-.52.415-.72c.181-.2.406-.357.675-.47.27-.113.582-.17.936-.17.306 0 .592.038.855.115.263.077.49.192.685.345.192.153.345.35.454.59.111.24.166.523.166.85 0 .32-.094.604-.28.85s-.42.433-.7.56v.02c.433.094.755.297.964.61.211.314.316.683.316 1.11 0 .353-.066.665-.196.935s-.304.495-.524.675c-.22.18-.479.315-.775.405-.297.09-.612.135-.946.135-.36 0-.686-.05-.98-.15a2.003 2.003 0 0 1-.75-.445 1.95 1.95 0 0 1-.475-.725 2.596 2.596 0 0 1-.154-.98h.85c.013.46.146.835.4 1.125.253.29.623.435 1.11.435.206 0 .404-.032.59-.095.187-.063.35-.153.49-.27.14-.116.251-.26.335-.43.082-.17.125-.362.125-.575 0-.22-.04-.415-.12-.585s-.187-.313-.321-.43c-.133-.116-.291-.203-.475-.26s-.38-.085-.594-.085c-.181 0-.351.01-.51.03v-.72c.033.007.063.01.09.01z'/%3E%3C/svg%3E")}.device-android i.icon.icon-format-integer,.device-android i.icon.icon-format-scientific{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-format-scientific{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M4.98 15.833v-5.588H2.957v-.748c.264 0 .52-.02.77-.06.249-.04.474-.116.675-.226.202-.11.373-.26.512-.451.14-.19.234-.432.287-.726h.715v7.799H4.98zM8.6 11.114a5.95 5.95 0 0 1 .11-.902c.059-.293.143-.572.253-.836.11-.264.26-.495.451-.693.19-.198.43-.355.72-.473.29-.117.637-.176 1.04-.176s.75.059 1.039.176a2.051 2.051 0 0 1 1.172 1.166c.11.264.194.543.253.836.058.293.094.594.11.902.014.308.022.605.022.89 0 .287-.008.584-.022.892a6.193 6.193 0 0 1-.11.902c-.059.293-.144.57-.253.83s-.26.49-.451.688c-.19.198-.43.354-.715.468-.286.113-.635.17-1.045.17-.403 0-.75-.057-1.04-.17a1.98 1.98 0 0 1-.72-.468 2.21 2.21 0 0 1-.451-.688 4.256 4.256 0 0 1-.253-.83c-.06-.293-.096-.594-.11-.902s-.022-.605-.022-.891c0-.286.007-.583.022-.891zm.996 1.865c.017.362.076.704.175 1.022.1.32.258.589.479.81.22.219.527.33.924.33s.704-.111.924-.33c.22-.221.379-.49.478-.81s.158-.66.176-1.022c.019-.363.027-.691.027-.985 0-.19-.002-.402-.005-.633a5.52 5.52 0 0 0-.198-1.369c-.062-.22-.154-.412-.275-.577s-.274-.3-.456-.402c-.184-.103-.408-.154-.671-.154s-.488.051-.671.154a1.401 1.401 0 0 0-.456.402 1.794 1.794 0 0 0-.276.577 5.343 5.343 0 0 0-.198 1.37c-.004.23-.005.441-.005.632 0 .294.008.622.028.985zM14.33 5.11c.055-.184.143-.343.26-.477.119-.134.265-.239.441-.315.176-.076.376-.114.6-.114.184 0 .357.027.52.081.162.054.302.132.423.234.12.102.215.229.284.38.07.153.105.329.105.53 0 .187-.028.353-.086.497a1.416 1.416 0 0 1-.231.387c-.097.114-.207.217-.33.31s-.253.18-.384.263a42.4 42.4 0 0 1-.397.237 3.293 3.293 0 0 0-.363.25c-.11.087-.203.182-.281.284a.807.807 0 0 0-.154.35h2.185v.451h-2.778c.02-.252.065-.467.134-.645.07-.178.16-.333.267-.465.108-.132.23-.248.367-.348.135-.1.277-.194.426-.282.18-.112.338-.215.474-.309.135-.094.249-.189.338-.285s.159-.2.204-.312.07-.242.07-.39a.736.736 0 0 0-.243-.558.771.771 0 0 0-.261-.156.936.936 0 0 0-.318-.054.739.739 0 0 0-.643.336c-.067.1-.117.213-.146.34s-.043.252-.04.38h-.51c-.011-.216.01-.416.067-.6z'/%3E%3C/svg%3E")}.device-android i.icon.icon-format-accounting{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M15.5 21h-10C4.1 21 3 19.9 3 18.5v-14C3 3.1 4.1 2 5.5 2h10C16.9 2 18 3.1 18 4.5v14c0 1.4-1.1 2.5-2.5 2.5zM5.5 3C4.7 3 4 3.7 4 4.5v14c0 .8.7 1.5 1.5 1.5h10c.8 0 1.5-.7 1.5-1.5v-14c0-.8-.7-1.5-1.5-1.5h-10z'/%3E%3Cpath d='M14.5 9h-8C5.7 9 5 8.3 5 7.5v-2C5 4.7 5.7 4 6.5 4h8c.8 0 1.5.7 1.5 1.5v2c0 .8-.7 1.5-1.5 1.5zm-8-4c-.3 0-.5.2-.5.5v2c0 .3.2.5.5.5h8c.3 0 .5-.2.5-.5v-2c0-.3-.2-.5-.5-.5h-8zM5 10h3v2H5zM9 10h3v2H9zM13 10h3v2h-3zM13 13h3v2h-3zM9 13h3v2H9zM5 13h3v2H5zM5 16h3v2H5zM9 16h3v2H9zM13 16h3v2h-3z'/%3E%3C/svg%3E")}.device-android i.icon.icon-format-accounting,.device-android i.icon.icon-format-currency{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-format-currency{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M0 4v14h22V4H0zm21 13H1V5h20v12z'/%3E%3Cpath d='M11 16c-2.2 0-4-2.2-4-5s1.8-5 4-5 4 2.2 4 5-1.8 5-4 5zm0-9c-1.7 0-3 1.8-3 4s1.3 4 3 4 3-1.8 3-4-1.3-4-3-4z'/%3E%3C/svg%3E")}.device-android i.icon.icon-format-date{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M20 20H2V7h18v13zM3 19h16V8H3v11zM8 6H5V2h3v4zM6 5h1V3H6v2zM17 6h-3V2h3v4zm-2-1h1V3h-1v2z'/%3E%3Cpath d='M8.8 15.8v-4.1H7.4v-.5H8c.2 0 .3-.1.5-.2.1-.1.3-.2.4-.3 0-.1.1-.3.1-.5h.5v5.7h-.7zM14.4 11.8c-.3.4-.5.8-.7 1.2-.2.4-.4.9-.5 1.4-.1.5-.2.9-.2 1.4h-.8c0-.5.1-.9.2-1.4.1-.5.3-.9.5-1.3s.4-.8.7-1.2c.3-.4.5-.7.8-1h-3v-.6h3.7v.6c-.2.2-.5.6-.7.9zM2 3h1v4H2zM3 3h2v1H3zM8 3h6v1H8zM17 3h3v1h-3zM19 4h1v3h-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-format-date,.device-android i.icon.icon-format-time{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-format-time{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M11.2 21.1C5.5 21.1.9 16.5.9 10.8S5.5.5 11.2.5s10.3 4.6 10.3 10.3-4.6 10.3-10.3 10.3zm0-19.6c-5.1 0-9.3 4.2-9.3 9.3 0 5.1 4.2 9.3 9.3 9.3 5.1 0 9.3-4.2 9.3-9.3 0-5.1-4.2-9.3-9.3-9.3z'/%3E%3Ccircle cx='11.2' cy='10.8' r='1.9'/%3E%3Cpath d='M10.7 2.6h1v8h-1zM7.1 10.4h3.4v.9H7.1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-format-percentage{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M2.8 6.497c.096-.437.258-.825.486-1.161.228-.336.527-.603.9-.8s.834-.298 1.386-.298c.564 0 1.029.096 1.395.288.366.192.66.45.882.774.222.324.378.705.468 1.143.09.438.135.903.135 1.395 0 .468-.052.92-.153 1.36-.102.437-.27.822-.504 1.15-.234.33-.531.598-.89.802-.361.204-.805.306-1.333.306-.54 0-.996-.093-1.368-.28a2.379 2.379 0 0 1-.9-.764 3.265 3.265 0 0 1-.495-1.134 6.053 6.053 0 0 1-.153-1.386c0-.492.048-.956.144-1.395zm1.25 2.214c.031.306.1.588.208.846.108.258.26.474.459.648s.465.26.8.26c.35 0 .625-.083.829-.251s.363-.381.477-.639a2.96 2.96 0 0 0 .225-.855 7.667 7.667 0 0 0 .009-1.737 2.886 2.886 0 0 0-.207-.846 1.734 1.734 0 0 0-.46-.648c-.197-.174-.47-.261-.818-.261-.336 0-.606.087-.81.261s-.364.39-.477.648a2.93 2.93 0 0 0-.225.846 7.661 7.661 0 0 0-.01 1.728zm11.548-4.707L5.932 17.378H4.384l9.684-13.374h1.53zm-3.906 8.253c.096-.438.258-.825.486-1.161.228-.336.528-.603.9-.801s.834-.297 1.386-.297c.564 0 1.03.096 1.395.288.366.193.66.45.882.774.222.324.378.705.468 1.143s.135.903.135 1.395c0 .468-.051.922-.153 1.359a3.24 3.24 0 0 1-.504 1.152c-.234.33-.53.594-.891.792-.36.198-.804.297-1.332.297-.54 0-.996-.094-1.368-.28s-.672-.437-.9-.755a3.14 3.14 0 0 1-.495-1.125c-.102-.432-.153-.893-.153-1.386s.048-.957.144-1.395zm1.251 2.214c.03.306.099.589.207.846.108.258.261.474.46.648.197.174.464.26.8.26.348 0 .624-.082.828-.251.204-.168.363-.381.477-.639s.19-.543.225-.855c.036-.312.054-.606.054-.882 0-.264-.015-.55-.045-.855-.03-.306-.1-.588-.207-.846-.108-.258-.26-.474-.459-.648s-.471-.26-.82-.26c-.335 0-.606.086-.809.26-.204.174-.363.39-.477.648-.115.258-.189.54-.225.846a7.444 7.444 0 0 0-.009 1.728z'/%3E%3C/svg%3E")}.device-android i.icon.icon-format-percentage,.device-android i.icon.icon-format-text{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-format-text{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M5.523 6.432 8.871 15h-1.26l-.935-2.58H3.05L2.09 15H.929l3.336-8.568h1.26zm.792 5.028L4.888 7.464h-.025l-1.45 3.996h2.902zM15.219 6.432c.184 0 .383.002.594.005s.422.017.63.038c.208.02.403.048.582.09.18.039.334.1.462.18.28.167.519.4.714.694.196.297.294.66.294 1.093 0 .456-.11.85-.329 1.182-.22.332-.535.578-.943.738v.025c.529.11.932.351 1.213.718.279.37.42.817.42 1.345 0 .312-.057.616-.169.912a2.3 2.3 0 0 1-.498.786c-.22.228-.492.412-.816.552s-.697.21-1.121.21h-4.14V6.432h3.107zm.312 3.684c.649 0 1.114-.114 1.399-.343.283-.227.425-.569.425-1.025 0-.305-.048-.544-.144-.72a1.018 1.018 0 0 0-.396-.408 1.553 1.553 0 0 0-.582-.186 5.697 5.697 0 0 0-.702-.041h-2.279v2.723h2.28zm.576 3.924c.504 0 .899-.136 1.182-.408.284-.272.426-.648.426-1.128 0-.28-.052-.512-.156-.695a1.205 1.205 0 0 0-.413-.439 1.711 1.711 0 0 0-.595-.227 3.52 3.52 0 0 0-.696-.067h-2.603v2.964h2.855z'/%3E%3C/svg%3E")}.device-android i.icon.sortdown{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='-238 240 22 22'%3E%3Cstyle%3E.st0{fill:var(--brand-cell)}%3C/style%3E%3Cpath d='m-230 256.4-.7-.7-2.3 2.4V242h-1v16.1l-2.3-2.4-.7.7 3.5 3.6zM-226 249.55l2.9-7.55h1.08l3.09 7.55h-1.14l-.88-2.29h-3.16l-.83 2.29H-226zm2.18-3.1h2.56l-.79-2.09c-.24-.64-.42-1.16-.54-1.57-.1.48-.23.97-.41 1.44l-.82 2.22zM-225.93 259v-.93l3.87-4.84c.28-.34.54-.64.78-.9h-4.21v-.89h5.41v.89l-4.24 5.24-.46.53h4.82v.9h-5.97z' class='st0'/%3E%3C/svg%3E")}.device-android i.icon.sortdown,.device-android i.icon.sortup{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.sortup{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='-238 240 22 22'%3E%3Cstyle%3E.st0{fill:var(--brand-cell)}%3C/style%3E%3Cpath d='m-233.5 242-3.5 3.6.7.7 2.3-2.4V260h1v-16.1l2.3 2.4.7-.7zM-226.53 260l2.9-7.55h1.08l3.08 7.55h-1.14l-.88-2.29h-3.16l-.82 2.29h-1.06zm2.17-3.1h2.56l-.79-2.09c-.24-.64-.42-1.16-.54-1.57-.1.48-.23.97-.41 1.44l-.82 2.22zM-225.97 250.55v-.93l3.87-4.84c.28-.34.54-.64.78-.9h-4.21V243h5.41v.89l-4.24 5.24-.46.53h4.82v.89h-5.97z' class='st0'/%3E%3C/svg%3E")}.device-android i.icon.icon-users{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M15.5 7c0 2.262-.564 3.952-1.299 5.03-.743 1.091-1.578 1.47-2.201 1.47s-1.458-.379-2.201-1.47C9.064 10.953 8.5 9.263 8.5 7c0-2.077 1.722-3.5 3.5-3.5s3.5 1.423 3.5 3.5Zm-.654 6.622C14.006 14.519 13.004 15 12 15s-2.006-.48-2.846-1.378c-1.457.578-2.676 1.15-3.625 1.728C3.83 16.384 3.5 17.12 3.5 17.5c0 .51.264 1.198 1.547 1.84 1.328.666 3.562 1.16 6.953 1.16 3.39 0 5.625-.494 6.953-1.16 1.283-.642 1.547-1.33 1.547-1.84 0-.38-.329-1.116-2.03-2.15-.948-.577-2.167-1.15-3.624-1.728Zm.908-1.252C16.514 11.028 17 9.21 17 7c0-3-2.491-5-5-5S7 4 7 7c0 2.21.486 4.028 1.246 5.37C4.39 13.94 2 15.579 2 17.5 2 19.985 5 22 12 22s10-2.015 10-4.5c0-1.921-2.39-3.56-6.246-5.13Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-menu-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--text-tertiary)' fill-opacity='.6' d='M16.605 16.585c.403-.406.868-.608 1.395-.608s.992.202 1.395.608c.403.405.605.873.605 1.403s-.202.998-.605 1.404c-.403.405-.868.608-1.395.608s-.992-.203-1.395-.608c-.403-.406-.605-.873-.605-1.404 0-.53.202-.998.605-1.403Zm0-5.988c.403-.406.868-.609 1.395-.609s.992.203 1.395.609c.403.405.605.873.605 1.403s-.202.998-.605 1.403c-.403.406-.868.609-1.395.609s-.992-.203-1.395-.609C16.202 12.999 16 12.53 16 12s.202-.998.605-1.403Zm2.79-3.182c-.403.406-.868.608-1.395.608s-.992-.202-1.395-.608C16.202 7.01 16 6.542 16 6.012s.202-.998.605-1.404C17.008 4.203 17.473 4 18 4s.992.203 1.395.608c.403.406.605.873.605 1.404 0 .53-.202.998-.605 1.403Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-menu-comment,.device-android i.icon.icon-resolve-comment{background-color:var(--text-tertiary);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-resolve-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--text-tertiary)' fill-opacity='.6' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-done-comment,.device-android i.icon.icon-resolve-comment.check{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-insert-comment{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' d='M19.5 3h-15C3.19 3 2 4.215 2 5.503v9.532c0 1.287 1.19 1.978 2.5 1.978h1c.328 0 .5.179.5.5V21l6-4h8a2 2 0 0 0 2-2V8h-1.5v6.5a1 1 0 0 1-1 1h-8l-4 2.5v-2.5h-3a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1h15a1 1 0 0 1 1 1V8H22V5.503C22 4.215 20.81 3 19.5 3Z'/%3E%3Cpath fill='var(--brand-cell)' d='M6 7.5h12V9H6V7.5ZM6 11h12v1.5H6V11Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-done-comment-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23FFF' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E");height:24px;width:24px}.device-android i.icon.icon-plus{background-color:var(--fill-white);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--fill-white)' viewBox='0 0 22 22'%3E%3Cpath d='M21 12h-9v9h-2v-9H1v-2h9V1h2v9h9v2z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-add-custom-format{background-color:var(--brand-cell);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M21 12h-9v9h-2v-9H1v-2h9V1h2v9h9v2z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-check{background-color:var(--fill-white);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--fill-white)' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .tabbar .link.tab-link i.icon.icon-link{background:#fff}.device-android .navbar i.icon.icon-logo{height:14px;width:100px}.device-android .navbar i.icon.icon-undo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M20 17v-2c0-1.7-1.3-3-3-3H3.7l3.4 3.4-1.4 1.4-5.2-5.2L0 11l.5-.6 5.2-5.2 1.4 1.4L3.7 10H17c2.8 0 5 2.2 5 5v2h-2z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-redo,.device-android .navbar i.icon.icon-undo{background-color:var(--toolbar-icons);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-redo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M0 17v-2c0-2.8 2.2-5 5-5h13.3l-3.4-3.4 1.4-1.4 5.2 5.2.5.6-.5.6-5.2 5.2-1.4-1.4 3.4-3.4H5c-1.7 0-3 1.3-3 3v2H0z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-burger{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='-8 1 22 22'%3E%3Cpath d='M-6 6v2h18V6H-6zm0 7h18v-2H-6v2zm0 5h18v-2H-6v2z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-burger,.device-android .navbar i.icon.icon-plus{background-color:var(--toolbar-icons);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-plus{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M21 12h-9v9h-2v-9H1v-2h9V1h2v9h9v2z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-settings{background-color:var(--toolbar-icons);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M12.1 2H9.9c-.3 0-.5.2-.6.5l-.5 2.4c0 .2-.2.3-.3.3s-.1 0-.2-.1L6.2 3.8c-.1-.1-.2-.1-.4-.1-.1 0-.3 0-.4.1L3.8 5.4c-.1.2-.2.5 0 .8l1.3 2.1c.1.2.1.4-.2.5l-2.4.5c-.3.1-.5.3-.5.6v2.2c0 .3.2.5.5.6l2.4.5c.3.1.4.3.2.5l-1.3 2.1c-.2.2-.1.6.1.8l1.6 1.6c.1.1.3.2.4.2s.2 0 .3-.1L8.3 17c.1-.1.1-.1.2-.1s.3.1.3.3l.5 2.3c.1.3.3.5.6.5h2.2c.3 0 .5-.2.6-.5l.5-2.4c0-.2.1-.3.3-.3.1 0 .1 0 .2.1l2.1 1.3c.1.1.2.1.3.1.2 0 .3-.1.4-.2l1.6-1.6c.2-.2.2-.5.1-.8l-1.3-2.1c-.2-.2-.1-.5.2-.5l2.4-.5c.3-.1.5-.3.5-.6V9.8c0-.3-.2-.5-.5-.6l-2.4-.5c-.3-.1-.4-.3-.2-.5l1.3-2.1c.2-.2.1-.6-.1-.8l-1.6-1.6c-.1-.1-.3-.2-.4-.2s-.2 0-.3.1l-2.1 1.3c-.1.1-.1.1-.2.1s-.3-.1-.3-.3l-.5-2.2c-.1-.3-.3-.5-.6-.5zM11 14.5c-1.9 0-3.5-1.6-3.5-3.5S9.1 7.5 11 7.5s3.5 1.6 3.5 3.5-1.6 3.5-3.5 3.5z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-prev{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M5.1 10.9 13.9 2 16 4.1l-6.8 7 6.8 6.8-2.1 2.1-8.8-8.8-.1-.1z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-next,.device-android .navbar i.icon.icon-prev{background-color:var(--toolbar-icons);height:20px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:20px}.device-android .navbar i.icon.icon-next{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M16.9 10.9 8.1 2 6 4.1l6.8 7L6 17.9 8.1 20l8.8-8.8.1-.1z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-expand-down{background-color:var(--toolbar-icons);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M10.9 16.9 2 8.1 4.1 6l7 6.8L17.9 6 20 8.1l-8.8 8.8-.1.1z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-add-chart{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='M22 3h-5v18h5V3ZM9.5 9h5v12h-5V9ZM2 13h5v8H2v-8Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-add-chart,.device-android .navbar i.icon.icon-add-formula{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-add-formula{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='M4 4h16v5h-3V7H8.5l3 5.5-3 5.5H17v-2h3v5H4v-1.5l4-7-4-7V4Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-add-shape{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Ccircle cx='16' cy='15' r='7' fill='var(--toolbar-icons)'/%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='M3 3a1 1 0 0 0-1 1v13a1 1 0 0 0 1 1h5.582A8 8 0 0 1 18 7.252V4a1 1 0 0 0-1-1H3Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-add-image,.device-android .navbar i.icon.icon-add-shape{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-add-image{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='m4.24 18 3.854-4.5 2.812 3L14.76 12l5 6H4.24Zm17.083 2.39c.451-.406.677-.874.677-1.406V5.016c0-.532-.226-1-.677-1.407A2.266 2.266 0 0 0 19.76 3H4.24c-.59 0-1.112.203-1.563.61C2.226 4.015 2 4.483 2 5.015v13.968c0 .532.226 1 .677 1.407.451.406.972.609 1.563.609h15.52c.59 0 1.111-.203 1.563-.61ZM8 11a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z' clip-rule='evenodd'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='transparent' d='M0 0h24v24H0V0Z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-add-other{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='M7 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm8 0a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm5 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-add-other,.device-android .navbar i.icon.icon-close-comment{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-close-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' d='M18.984 6.422 13.406 12l5.578 5.578-1.406 1.406L12 13.406l-5.578 5.578-1.406-1.406L10.594 12 5.016 6.422l1.406-1.406L12 10.594l5.578-5.578 1.406 1.406Z'/%3E%3C/svg%3E")}.chart-types .thumb.bar-normal{background-image:url(../resources/img/charts/chart-03.png)}.chart-types .thumb.bar-stacked{background-image:url(../resources/img/charts/chart-02.png)}.chart-types .thumb.bar-pstacked{background-image:url(../resources/img/charts/chart-01.png)}.chart-types .thumb.line-normal{background-image:url(../resources/img/charts/chart-06.png)}.chart-types .thumb.line-stacked{background-image:url(../resources/img/charts/chart-05.png)}.chart-types .thumb.line-pstacked{background-image:url(../resources/img/charts/chart-04.png)}.chart-types .thumb.hbar-normal{background-image:url(../resources/img/charts/chart-09.png)}.chart-types .thumb.hbar-stacked{background-image:url(../resources/img/charts/chart-08.png)}.chart-types .thumb.hbar-pstacked{background-image:url(../resources/img/charts/chart-07.png)}.chart-types .thumb.area-normal{background-image:url(../resources/img/charts/chart-12.png)}.chart-types .thumb.area-stacked{background-image:url(../resources/img/charts/chart-11.png)}.chart-types .thumb.area-pstacked{background-image:url(../resources/img/charts/chart-10.png)}.chart-types .thumb.pie{background-image:url(../resources/img/charts/chart-13.png)}.chart-types .thumb.doughnut{background-image:url(../resources/img/charts/chart-14.png)}.chart-types .thumb.pie3d{background-image:url(../resources/img/charts/chart-22.png)}.chart-types .thumb.scatter{background-image:url(../resources/img/charts/chart-15.png)}.chart-types .thumb.stock{background-image:url(../resources/img/charts/chart-16.png)}.chart-types .thumb.line3d{background-image:url(../resources/img/charts/chart-21.png)}.chart-types .thumb.bar3dnormal{background-image:url(../resources/img/charts/chart-17.png)}.chart-types .thumb.bar3dstack{background-image:url(../resources/img/charts/chart-18.png)}.chart-types .thumb.bar3dpstack{background-image:url(../resources/img/charts/chart-19.png)}.chart-types .thumb.hbar3dnormal{background-image:url(../resources/img/charts/chart-25.png)}.chart-types .thumb.hbar3dstack{background-image:url(../resources/img/charts/chart-24.png)}.chart-types .thumb.hbar3dpstack{background-image:url(../resources/img/charts/chart-23.png)}.chart-types .thumb.bar3dpsnormal{background-image:url(../resources/img/charts/chart-20.png)}i.icon.icon-format-xlsx{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%2340865C' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H4Zm0 5h16v12H4V6Zm7.5 1H5v4h6.5V7Zm0 5H5v5h6.5v-5Zm1 0H19v5h-6.5v-5ZM19 7h-6.5v4H19V7Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-xltx{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23A8A8A8' fill-rule='evenodd' d='M18 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm.746 10v-5.27h2.506v-1.234h-6.504v1.235h2.479V22h1.519Z' clip-rule='evenodd'/%3E%3Cpath fill='%2340865C' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h9.101A6.979 6.979 0 0 1 11 18H4V6h16v5.29a6.997 6.997 0 0 1 3 1.811V4a3 3 0 0 0-3-3H4Zm14 10h1V7h-6.5v4H18Zm-6.5 4.397A6.954 6.954 0 0 0 11.07 17H5v-5h6.5v3.397ZM14.392 12a7.036 7.036 0 0 0-1.892 1.67V12h1.892ZM5 7h6.5v4H5V7Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-ods{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23237453' fill-rule='evenodd' d='M1 4a3 3 0 0 1 3-3h16a3 3 0 0 1 3 3v16a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3V4Zm18.952 3.749c-.026-.02-.053-.037-.08-.054l-.02-.013a4.236 4.236 0 0 0-1.763-.651c-1.114-.14-2.179.2-3.078.89a4.32 4.32 0 0 0-2.066-.86c-1.035-.13-2.028.155-2.885.751l-.01.008-.015.01a.135.135 0 0 0-.035.093c0 .066.04.12.09.12l.013-.003.007-.002a3.93 3.93 0 0 1 1.431-.084c1.376.173 2.575.737 3.416 2.002.044.06.083.057.128-.003 1.058-1.627 2.68-2.27 4.424-2.051.097.012.193.028.289.047l.029.006c.029.006.062.013.084.016.058.009.089-.053.089-.119 0-.044-.015-.082-.048-.103Zm-1.026 5.026.01.006c.038.024.064.075.064.136 0 .083-.051.151-.114.151l-.164-.016a5.975 5.975 0 0 0-.547-.026c-2.574 0-4.885 1.254-6.288 3.796l-.04.074-.026.048c-.021.035-.053.056-.088.056a.097.097 0 0 1-.075-.037l-.002-.004-.007-.008c-1.38-1.722-3.215-2.367-5.272-2.367a5.987 5.987 0 0 0-2.24.44.086.086 0 0 1-.023.003c-.063 0-.114-.068-.114-.151a.17.17 0 0 1 .044-.12l.004-.003a.155.155 0 0 1 .009-.008C5.287 13.644 6.767 13 8.363 13c1.122 0 2.188.319 3.15.89C12.773 12.701 14.315 12 15.98 12c1.042 0 2.035.276 2.943.773l.003.002Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-ots{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23A8A8A8' fill-rule='evenodd' d='M18 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm.746 10v-5.27h2.506v-1.234h-6.504v1.235h2.479V22h1.519Z' clip-rule='evenodd'/%3E%3Cpath fill='%23237453' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h9.101A6.979 6.979 0 0 1 11 18c0-.542.062-1.07.178-1.577-1.315-1.328-2.97-1.839-4.801-1.839a5.987 5.987 0 0 0-2.24.44.086.086 0 0 1-.023.003c-.063 0-.114-.068-.114-.151a.17.17 0 0 1 .044-.12l.004-.003a.155.155 0 0 1 .009-.008C5.287 13.644 6.767 13 8.363 13c1.122 0 2.188.319 3.15.89a7.139 7.139 0 0 1 2.244-1.459A6.97 6.97 0 0 1 18 11c1.959 0 3.73.805 5 2.101V4a3 3 0 0 0-3-3H4Zm15.952 6.749c-.026-.02-.053-.037-.08-.054l-.02-.013a4.236 4.236 0 0 0-1.763-.651c-1.114-.14-2.179.2-3.078.89a4.32 4.32 0 0 0-2.066-.86c-1.035-.13-2.028.155-2.885.751l-.01.008-.015.01a.135.135 0 0 0-.035.093c0 .066.04.12.09.12l.013-.003.007-.002a3.93 3.93 0 0 1 1.431-.084c1.376.173 2.575.737 3.416 2.002.044.06.083.057.128-.003 1.058-1.627 2.68-2.27 4.424-2.051.097.012.193.028.289.047l.029.006c.029.006.062.013.084.016.058.009.089-.053.089-.119 0-.044-.015-.082-.048-.103Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-csv{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23757575' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H4Zm1 6.5h4v1H5v-1Zm0 4h4v1H5v-1Zm4 4H5v1h4v-1Zm5-8h-4v1h4v-1Zm0 4h-4v1h4v-1Zm-4 4h4v1h-4v-1Zm5-8h4v1h-4v-1Zm0 4h4v1h-4v-1Zm4 4h-4v1h4v-1Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}#idx-celleditor{background-color:#fff;display:flex;height:30px;min-height:30px;z-index:5001}#idx-celleditor,#idx-celleditor *{box-sizing:border-box}#idx-celleditor.expanded{min-height:70px;transition:min-height .1s}#idx-celleditor:after{background-color:var(--background-menu-divider);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}#idx-celleditor #box-cell-name{display:inline-flex}#idx-celleditor #idx-cell-name{border:0;color:var(--text-normal);display:inline-block;line-height:30px;padding:0 4px;text-align:center;width:90px}#idx-celleditor #idx-cell-name[disabled]{color:#848484;opacity:.5}.phone #idx-celleditor #idx-cell-name{display:none}#idx-celleditor #idx-btn-function{height:30px;line-height:30px;padding:0 10px}#idx-celleditor #idx-cell-content{color:var(--text-normal);height:100%;line-height:1.42857143;min-height:30px;padding:3px;vertical-align:middle;width:100%}#idx-celleditor .caret{height:16px;width:30px}#idx-celleditor .caret:after{background-color:initial;border:1px solid var(--brand-cell);border-bottom:none;border-right:none;content:"";height:8px;left:6px;position:absolute;top:8px;transform:rotate(-135deg);transition:transform .2s ease;width:8px}#idx-celleditor.expanded .caret:after{transform:rotate(45deg) translate(3px,3px)}#idx-celleditor .ce-group{background-color:var(--background-secondary)}#idx-celleditor .group--content{position:relative}#idx-celleditor .group--content:before{background-color:var(--background-menu-divider);bottom:auto;content:"";display:block;height:100%;left:0;position:absolute;right:auto;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:0 50%;width:1px;z-index:15}.statusbar{background-color:var(--background-tertiary);display:flex;height:30px;min-height:30px;transition:top .4s}.statusbar:before{background-color:var(--background-menu-divider);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.statusbar .box-tab{display:flex}.statusbar .tab{border:0;border-radius:0;display:inline-block;font-size:18px;height:100%;line-height:inherit;min-width:48px;position:relative;text-align:center}.statusbar .tab.active{background-color:var(--background-secondary);font-weight:600}.statusbar .tab.active a{box-shadow:inset 0 2px 0 #49795d}.statusbar .tab:after{background-color:var(--background-menu-divider);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.statusbar .statusbar--box-tabs{overflow-x:auto;overflow-y:hidden}.statusbar .statusbar--box-tabs::-webkit-scrollbar{-webkit-appearance:none;display:none}.statusbar .statusbar--box-tabs>ul{height:100%;margin:0;overflow-x:scroll;padding:0;white-space:nowrap}.statusbar .statusbar--box-tabs>ul>li a{color:var(--text-normal);display:block;font-size:12px;height:100%;line-height:30px;padding:0 10px}.statusbar .tab i.icon{height:18px;width:18px}.statusbar .tab i.icon.icon-plus.bold{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cpath d='M16 9.987H9.987V16H8.013V9.987H2V8.013h6.013V2h1.974v6.013H16v1.974Z'/%3E%3C/svg%3E")}.statusbar .tab i.icon.icon-list.bold,.statusbar .tab i.icon.icon-plus.bold{background-color:var(--brand-cell);-webkit-mask-repeat:round;-webkit-mask-size:contain}.statusbar .tab i.icon.icon-list.bold{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cpath d='M2 4h14v2H2V4Zm0 4.016h14v2.015H2V8.016ZM2 12h14v2H2v-2Z'/%3E%3C/svg%3E")}.page[data-name=home] .page-content{align-items:stretch;display:flex;flex-direction:column}:root{--f7-popover-width:360px}.page-function-info .page-content,.page-function-info.page-content{background-color:var(--background-primary)}.page-function-info .function-info{padding:0 15px}.page-function-info .function-info h3{color:var(--text-normal)}.page-function-info .function-info p{color:var(--text-secondary)}.username-tip{background-color:#ee3525}.doc-placeholder{background:#fbfbfb;border:1px solid #dfdfdf;font-size:0;height:100%;left:0;overflow:hidden;padding-top:calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-subnavbar-offset, 0px));position:absolute;top:0;white-space:nowrap;width:100%;z-index:6000}.doc-placeholder>.columns{-webkit-animation:flickerAnimation 2s ease-in-out infinite;-moz-animation:flickerAnimation 2s ease-in-out infinite;-o-animation:flickerAnimation 2s ease-in-out infinite;animation:flickerAnimation 2s ease-in-out infinite;background:linear-gradient(90deg,#d5d5d5,rgba(0,0,0,0) 1px) 0 0,linear-gradient(rgba(0,0,0,0) 19px,#d5d5d5 20px) 0 0,linear-gradient(#f1f1f1,#f1f1f1 20px) 0 0 repeat-x;background-size:80px 20px;display:inline-block;height:100%;overflow:hidden;width:100%}.doc-placeholder>.columns:first-child{background:linear-gradient(#f1f1f1 19px,#d5d5d5 20px) 0 0;background-size:20px 20px;width:25px}.item-input-wrap input[type=number]{-moz-appearance:textfield}.move-sheet .swipe-container{background-color:var(--background-primary);display:flex;height:40px;justify-content:center}.move-sheet .swipe-container .icon-swipe{background:var(--background-menu-divider);border-radius:2px;height:4px;margin-top:8px;width:40px}.move-sheet .navbar{top:-1px}.actions-move-sheet{background-color:var(--background-secondary)}.all-list{--f7-popover-width:190px}.all-list .item-checkbox{padding-left:8px}.all-list .item-checkbox .icon-checkbox{border-color:transparent;margin-right:8px}.all-list .item-checkbox .icon-checkbox:after{color:var(--brand-cell)}.all-list .item-checkbox .item-after div{color:var(--text-secondary);font-style:italic}.all-list .item-checkbox input[type=checkbox]:checked~.icon-checkbox{background-color:unset;border-color:transparent}.popover-filter .list ul li:first-child .list-button,.sheet-filter .list ul li:first-child .list-button{color:var(--text-normal)}.popover-filter .list ul li:first-child .list-button:after,.sheet-filter .list ul li:first-child .list-button:after{background:var(--background-menu-divider)}.popover-filter .list .item-inner,.sheet-filter .list .item-inner{color:var(--text-normal)}.tooltip-cell-data{border-radius:4px;box-shadow:0 20px 46px rgba(0,0,0,.1);max-height:153px;max-width:186px;overflow-y:auto;width:max-content}.tooltip-cell-data .popover-inner{padding:8px}.tooltip-cell-data__title{color:var(--text-normal);font-size:12px;font-style:normal;font-weight:600;line-height:16px;margin:0 0 4px}.tooltip-cell-data__msg{color:var(--text-secondary);font-size:11px;font-style:normal;font-weight:400;letter-spacing:.06px;line-height:13px;margin:0}.cell-styles-list ul{background-color:var(--background-tertiary);display:flex;flex-wrap:wrap;justify-content:space-around;padding-left:5px;padding-right:5px;padding-top:5px}.cell-styles-list ul li.item-theme{background-position:50%;background-repeat:no-repeat;border:2px solid var(--fill-white);height:53px;margin-bottom:8px;padding:1px;width:108px}.cell-styles-list ul li.item-theme .item-content,.cell-styles-list ul li.item-theme .item-content .item-inner{height:100%;padding:0;width:100%}.cell-styles-list ul li.item-theme .item-content .item-inner:after{display:none}.cell-styles-list ul li.item-theme .item-content .item-inner .thumb{background-color:var(--canvas-content-background);background-size:contain;height:100%;padding:0;width:100%}.cell-styles-list ul li.item-theme.active:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2340865c' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='11' fill='%23fff'/%3E%3Cpath d='M11 21a10 10 0 1 1 10-10 10 10 0 0 1-10 10Zm6.4-13.68L17.06 7a.48.48 0 0 0-.67 0l-7 6.84-2.44-2.6a.51.51 0 0 0-.59.08l-.36.34a.58.58 0 0 0 0 .65l3.19 3.35a.38.38 0 0 0 .39 0L17.4 8a.48.48 0 0 0 0-.67Z'/%3E%3C/svg%3E");bottom:2px;content:"";height:22px;position:absolute;right:2px;width:22px;z-index:1}.cell-styles-list ul:after{display:none}.marker-color-sheet{border-radius:50%;height:16px;width:16px}.item-list.active .item-title{font-weight:600} +/*# sourceMappingURL=611.css.map*/ \ No newline at end of file diff --git a/apps/spreadsheeteditor/mobile/css/611.css.map b/apps/spreadsheeteditor/mobile/css/611.css.map new file mode 100644 index 0000000000..aea739a652 --- /dev/null +++ b/apps/spreadsheeteditor/mobile/css/611.css.map @@ -0,0 +1 @@ +{"version":3,"file":"css/611.css","mappings":";;;;GACA,IACI,2BCAJ,CCDA,MACI,oBAAqB,CACrB,oBAAqB,CACrB,qBAAsB,CACtB,oBAAqB,CACrB,uBAAwB,CACxB,yBAA0B,CAC1B,0BAA2B,CAE3B,yBAA0B,CAC1B,2BAA4B,CAC5B,6BAA8B,CAC9B,8CACA,2BAA4B,CAE5B,qBAAsB,CACtB,iCACA,gCACA,mBAAoB,CACpB,oBAAqB,CAErB,iBAAkB,CAClB,iBAAkB,CAElB,4BAA6B,CAC7B,oBAAqB,CACrB,yBAA0B,CAC1B,2CAEA,iCAEA,2CACA,4CACA,0CAEA,gCAAiC,CAIjC,wBAAyB,CACzB,gCAAiC,CACjC,yBAA0B,CAE1B,8BAA+B,CAE/B,yCAA0C,CAC1C,wBAAyB,CACzB,iCAAkC,CAClC,0CAA2C,CAE3C,2BAA4B,CAG5B,yBAA0B,CAC1B,yCACA,sCAAuC,CACvC,+CAAgD,CAChD,kCAAmC,CACnC,2CDZJ,CC9CA,gBAyEQ,8BDxBR,CC0BQ,yBACI,sCDxBZ,CEpDA,yCAGQ,4BAA6B,CAC7B,2BAA4B,CAC5B,6BAA8B,CAC9B,6CACA,2BAA4B,CAE5B,qCACA,uCACA,sCACA,mBAAoB,CACpB,oBAAqB,CAErB,iBAAkB,CAClB,iBAAkB,CAElB,oBAAqB,CACrB,oBAAqB,CACrB,qBAAsB,CACtB,oBAAqB,CACrB,uBAAwB,CACxB,yBAA0B,CAC1B,0BAA2B,CAE3B,4BAA6B,CAC7B,uBAAwB,CACxB,sBAAuB,CACvB,4BAA6B,CAE7B,iCAIA,2CACA,4CACA,0CAEA,sDAAuD,CAIvD,wBAAyB,CACzB,gCAAiC,CACjC,4BAA6B,CAE7B,iCAAkC,CAElC,yCAA0C,CAC1C,2BAA4B,CAC5B,oCAAqC,CACrC,6CAA8C,CAE9C,2BAA4B,CAG5B,qCACA,kCAAmC,CACnC,wCAAyC,CACzC,wCAAyC,CACzC,+CACA,mCAAoC,CACpC,+CFoCR,CEnGA,2DAgFQ,8BFuBR,CErBQ,6EACI,8CFwBZ,CG5GA,sDAMgB,wBAA0B,CAD1B,iBAAkB,CADlB,kBH6GhB,CGjHA,uEAWgB,SAAU,CADV,UH2GhB,CGrHA,kIAmBY,gBAAiB,CADjB,cHwGZ,CG1HA,6DAyBY,gBHoGZ,CG/FQ,kDACI,cAAe,CACf,kBHiGZ,CG5FA,mJAMQ,cH8FR,CGpGA,oEAWY,yBH4FZ,CGvGA,mEAeY,yBH2FZ,CG1GA,mEAqBQ,SAAU,CADV,UH0FR,CG9GA,mKA2BgB,+EHuFhB,CGlHA,iKA8BgB,+EHwFhB,CGtHA,0EAsCgB,aAAgB,CAChB,iBHmFhB,CG1HA,6EA6CQ,aAAc,CACd,iBHgFR,CG9HA,uHAmDQ,gBAAiB,CADjB,cHoFR,CGtIA,yFA4DQ,iBH6ER,CGzEA,kDAEQ,cH0ER,CG5EA,yEAKgB,6BH0EhB,CG/EA,0FAQoB,gBAAiB,CADjB,cH4EpB,CGnFA,wEAagB,gBHyEhB,CGtFA,yBAoBQ,aAAc,CADd,4CAA6C,CAE7C,iBAAkB,CAClB,kBHsER,CG5FA,8CA2BQ,iBAAkB,CADlB,eHuER,CGjGA,k5BAmCQ,gBH4ER,CG/GA,oDAuCQ,wBH2ER,CGlHA,wBA2CQ,wBH0ER,CGrHA,yBAgDY,oBHwEZ,CGxHA,kEAuDY,cHqEZ,CG5HA,+BA6DY,eHkEZ,CG/HA,0CAmEY,iBH+DZ,CGlIA,kCAwEQ,qBH6DR,CGrIA,uGA6EY,eH6DZ,CG1IA,kCAkFQ,SAAU,CACV,WH2DR,CG9IA,uHAuFQ,eH4DR,CGnJA,sIA2FQ,cAAe,CACf,kBH6DR,CGzJA,wFAqGQ,aAAc,CACd,iBH2DR,CGjKA,6DA2GQ,iBAAkB,CADlB,eH2DR,CGrKA,wDAiHQ,QAAS,CADT,UHyDR,CGpDA,yBACI,iGAGQ,aAAc,CADd,iBHsDV,CGxDE,+DAOQ,aHoDV,CGhDE,oGAGQ,gBAAiB,CADjB,cHkDV,CACF,CIxRQ,yZAGI,oBJkSZ,CI/RQ,gCCON,q8CL2RF,CI9RQ,gCCGN,+nFL8RF,CI7RQ,gCCDN,m3CLiSF,CI5RQ,gCCLN,o+FLoSF,CI3RQ,gCCTN,yyDLuSF,CIvRQ,mEACI,oBJ0RZ,CInRQ,kDCrCN,mCACA,unCAEA,yBAA0B,CAD1B,yBL4TF,CIrRQ,kDCzCN,mCACA,8sCAEA,yBAA0B,CAD1B,yBLkUF,CIvRQ,kDC7CN,mCACA,2sCAEA,yBAA0B,CAD1B,yBLwUF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BR+UF,CQ7UA,8DAIE,+BR+UF,CQ7UA,+BAEE,2BR+UF,CQ7UA,+BAEE,+BR+UF,CQ7UA,+BAEE,+BR+UF,CQ7UA,+BAEE,2BR+UF,CQ7UA,+BAEE,+BR+UF,CQ7UA,+BAEE,2BR+UF,CQ7UA,+BAEE,+BR+UF,CQ7UA,+BAEE,+BR+UF,CQ7UA,+BAEE,2BR+UF,CQ7UA,+BAEE,+BR+UF,CQ7UA,mDAGE,+BR+UF,CQ7UA,iBACE,+BR+UF,CQ7UA,iBACE,+BR+UF,CQ7UA,+BAEE,4BR+UF,CQ7UA,iBACE,gCR+UF,CQ7UA,iBACE,4BR+UF,CQ7UA,sBACE,gCR+UF,CQ7UA,gDAGE,gCR+UF,CQ7UA,+BAEE,4BR+UF,CQ7UA,0BACE,gCR+UF,CQ7UA,iBACE,gCR+UF,CQ7UA,iBACE,4BR+UF,CQ7UA,+BAEE,gCR+UF,CQ7UA,+BAEE,gCR+UF,CQ7UA,+BAEE,4BR+UF,CQ7UA,+BAEE,gCR+UF,CQ7UA,+BAEE,gCR+UF,CQ7UA,+BAEE,4BR+UF,CQ7UA,0DAGE,gCR+UF,CQ7UA,+BAEE,gCR+UF,CQ7UA,+BAEE,4BR+UF,CQ7UA,gDAGE,gCR+UF,CQ7UA,+BAEE,gCR+UF,CQ7UA,+BAEE,4BR+UF,CQ7UA,iBACE,gCR+UF,CQ5UA,mBAGI,kBAAmB,CADnB,YAAa,CADb,eRgVJ,CQjVA,+BAKQ,gBR+UR,CQ3UA,cAEI,cAIA,YAAa,CALb,WAAY,CAQZ,SAAU,CANV,cAAe,CAIf,mBAAoB,CAHpB,iBAAkB,CAIlB,gCAAkC,CAHlC,WRiVJ,CQ5UI,qBACI,aAAc,CACd,SR8UR,CQ1UA,iBACI,aR4UJ,CQ7UA,gCAGQ,SR6UR,CQhVA,yCASY,cAAe,CAFf,SAAU,CACV,eR6UZ,CQrVA,0CAcQ,MAAO,CACP,OAAQ,CAFR,UR6UR,CQvUA,iCAEQ,qBRwUR,CQnUA,4BACI,GAAO,URsUT,CQrUE,IAAO,SRwUT,CQvUE,GAAO,UR0UT,CACF,CQzUA,+BACI,GAAO,UR4UT,CQ3UE,IAAO,SR8UT,CQ7UE,GAAO,URgVT,CACF,CQ/UA,iCACI,GAAO,URkVT,CQjVE,IAAO,SRoVT,CQnVE,GAAO,URsVT,CACF,CQrV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Q,2CVy1DR,CUtjFA,+CAsuBQ,2BAHA,cAAe,CAFf,iBAAkB,CAClB,eAAgB,CAGhB,oBAAsB,CADtB,gBAAiB,CAGjB,gBVw1DR,CU/jFA,wCA2uBQ,wCACA,eVu1DR,CUnkFA,uDAivBY,YVq1DZ,CUtkFA,iFAqvBY,oBVo1DZ,CWrkFY,8CACI,sGACA,uBXukFhB,CWlkFQ,6BACI,sBXokFZ,CWlkFQ,6BAGI,kGACA,uBAAwB,CAFxB,WAAY,CADZ,WXukFZ,CWlkFQ,6BNlBN,mCMoBU,WAAY,CNnBtB,4NAEA,yBAA0B,CAD1B,yBAA0B,CMiBhB,UXykFZ,CWtkFY,mCACE,YXwkFd,CWrkFQ,6BN1BN,mCM4BU,WAAY,CN3BtB,oOAEA,yBAA0B,CAD1B,yBAA0B,CMyBhB,UX4kFZ,CWzkFY,mCACI,YX2kFhB,CWxkFQ,6BNlCN,mCMoCU,WAAY,CNnCtB,+UAEA,yBAA0B,CAD1B,yBAA0B,CMiChB,UX+kFZ,CW3kFQ,sCNtCN,8iBLynFF,CW9kFQ,4EN5CN,uCMyCU,WAAY,CNtCtB,yBAA0B,CAD1B,yBAA0B,CMsChB,UX0lFZ,CWtlFQ,sCN3CN,siCLioFF,CWjlFQ,+BNjDN,mCMmDU,WAAY,CNlDtB,0cAEA,yBAA0B,CAD1B,yBAA0B,CMgDhB,UXwlFZ,CYzoFQ,iCACI,mCZ2oFZ,CYzoFQ,iCAGI,sGACA,uBAAwB,CAFxB,WAAY,CADZ,WZ8oFZ,CYzoFQ,iCPVN,mCOYU,WAAY,CPXtB,4OAEA,yBAA0B,CAD1B,yBAA0B,COShB,UZgpFZ,CY7oFY,uCACE,YZ+oFd,CY5oFQ,iCPlBN,mCOoBU,WAAY,CPnBtB,uOAEA,yBAA0B,CAD1B,yBAA0B,COiBhB,UZmpFZ,CYhpFY,uCACI,YZkpFhB,CY/oFQ,0CPzBN,q1BLgrFF,CYlpFQ,oFP/BN,uCO4BU,WAAY,CPzBtB,yBAA0B,CAD1B,yBAA0B,COyBhB,UZ8pFZ,CY1pFQ,0CP9BN,2hCLwrFF,CYlpFY,iDPvCV,mCOyCc,WAAY,CPxC1B,0LAEA,yBAA0B,CAD1B,yBAA0B,COsCZ,UZypFhB,CYjpFY,kDPhDV,sCOkDc,WAAY,CPjD1B,izCAEA,yBAA0B,CAD1B,yBAA0B,CO+CZ,UZwpFhB,CYppFY,yCACI,0BZspFhB,CYppFY,yCPxDV,sCO0Dc,WAAY,CPzD1B,gTAEA,yBAA0B,CAD1B,yBAA0B,COuDZ,UZ2pFhB,CYvpFY,0CP7DV,oCO+Dc,WAAY,CP9D1B,gTAEA,yBAA0B,CAD1B,yBAA0B,CO4DZ,UZ8pFhB,CY1pFY,kDPlEV,qCLouFF,CY7pFY,2FAHI,WAAY,CPnE1B,8NAEA,yBAA0B,CAD1B,yBAA0B,COiEZ,UZyqFhB,CYrqFY,yCPvEV,kCL4uFF,CYhqFY,2CP3EV,qSLmvFF,CYnqFY,+FPjFV,sCO8Ec,WAAY,CP3E1B,yBAA0B,CAD1B,yBAA0B,CO2EZ,UZ+qFhB,CY3qFY,oDPhFV,8XL2vFF,CYtqFY,2CPtFV,sCOwFc,WAAY,CPvF1B,wZAEA,yBAA0B,CAD1B,yBAA0B,COqFZ,UZ6qFhB,CanwFI,kBRAF,sYL2wFF,CatwFI,mCRNF,oCQGM,WAAY,CRAlB,yBAA0B,CAD1B,yBAA0B,CQApB,UbkxFR,Ca9wFI,iBRLF,oaLmxFF,CazwFI,gBRXF,oCQaM,WAAY,CRZlB,0nCAEA,yBAA0B,CAD1B,yBAA0B,CQUpB,UbgxFR,Ca5wFI,8CACI,Yb+wFR,Ca7wFI,0BRnBF,mCQqBM,WAAY,CRpBlB,izCAEA,yBAA0B,CAD1B,yBAA0B,CQkBpB,UboxFR,CahxFI,yBRXF,8fQaM,WAAY,CADZ,UboxFR,CahxFI,yBRhBF,yqBQkBM,WAAY,CADZ,UboxFR,CahxFI,kBRlCF,mCQoCM,WAAY,CRnClB,6ZAEA,yBAA0B,CAD1B,yBAA0B,CQiCpB,UbuxFR,CahxFI,uBR7BF,giBQ+BM,WAAY,CADZ,UboxFR,CahxFI,wBRlCF,45BQoCM,WAAY,CADZ,UboxFR,Ca7wFI,sBR1CF,+9CL0zFF,Ca5wFI,sBR9CF,0lFL6zFF,Ca3wFI,sBRlDF,gbLg0FF,Ca1wFI,sBRtDF,q5CLm0FF,CazwFI,sBR1DF,g9FLs0FF,CaxwFI,sBR9DF,6zDLy0FF,CavwFI,sBRlEF,shBL40FF,CatwFI,6BRlFF,gzCLg2FF,CaxwFI,8CRzFF,mCQqFM,WAAY,CRlFlB,yBAA0B,CAD1B,yBAA0B,CQkFpB,UbqxFR,CahxFI,iBRxFF,yiBLw2FF,Ca1wFI,iBR9FF,6cLg3FF,Ca5wFI,mCRrGF,mCQiGM,WAAY,CR9FlB,yBAA0B,CAD1B,yBAA0B,CQ8FpB,UbyxFR,CapxFI,kBRpGF,sYLw3FF,Ca9wFI,mBR1GF,qSLg4FF,CahxFI,+CRjHF,mCQ6GM,WAAY,CR1GlB,yBAA0B,CAD1B,yBAA0B,CQ0GpB,Ub6xFR,CaxxFI,4BRhHF,8XLw4FF,CahxFI,wCRxHF,snCLg5FF,CanxFI,gFR9HF,mCQ2HM,WAAY,CRxHlB,yBAA0B,CAD1B,yBAA0B,CQwHpB,Ub+xFR,Ca3xFI,wCR7HF,otCLw5FF,CatxFI,wCRlIF,ytCLg6FF,CazxFI,8ERxIF,mCQqIM,WAAY,CRlIlB,yBAA0B,CAD1B,yBAA0B,CQkIpB,UbqyFR,CajyFI,sCRvIF,+rCLw6FF,Ca5xFI,sCR5IF,6uCLg7FF,Ca/xFI,8ERlJF,mCQ+IM,WAAY,CR5IlB,yBAA0B,CAD1B,yBAA0B,CQ4IpB,Ub2yFR,CavyFI,wCRjJF,ovCLw7FF,Cc17FA,eAEI,4Bd27FJ,Cc77FA,aAOI,eAAgB,CADhB,cd27FJ,Ccj8FA,gBAUM,oBd07FN,Ccp8FA,gEAeI,Ydw7FJ,Ccv8FA,sEAmBI,iBAAkB,CAClB,Sdw7FJ,Cct7FI,kFTrBF,mCS4BI,WAAY,CANZ,UAAW,CAGX,WAAY,CAEZ,SAAU,CT1Bd,4ZAEA,yBAA0B,CAD1B,yBAA0B,CSqBtB,iBAAkB,CAGlB,UAAW,CAGX,cAAe,CALf,Udk8FN,Ce39FA,mBAEQ,0Cf49FR,Ce99FA,gCAKY,iBAAkB,CAClB,Yf49FZ,CgBj2FE,uCA3BA,yBAKA,SAPA,UAAW,CAGX,aAAc,CA4BZ,UAAW,CAvBb,OAPA,iBAAkB,CAKlB,WADA,SA6BE,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CA5Bb,UhBy4FF,Cej/FA,yBAeQ,6Bfq+FR,Cep+FQ,iCAEI,kBAAmB,CADnB,YAAa,CAEb,Sfs+FZ,Cep+FQ,gCAEI,kBAAmB,CADnB,Yfu+FZ,Ce7/FA,8BA4BQ,sBfo+FR,CehgGA,6BAkCQ,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,+CtBkwGJ,CsB9vGA,8BACE,atBgwGF,CuBhgHA,gBACI,uCACA,wCACA,0CACA,8CvBkgHJ,CuBtgHA,6CAQQ,iBvBigHR,CuBzgHA,uGAeQ,kBAAmB,CADnB,qBAAsB,CADtB,6BAA8B,CAD9B,cAAe,CAIf,UvBigHR,CuBjhHA,yDAyBY,kDAAmD,CADnD,kBAAmB,CADnB,WAAY,CADZ,UvBigHZ,CuBvhHA,qGA6BY,wBAA6B,CAD7B,8BvB+/GZ,CuB3hHA,mFAwCY,mCACA,kBAAmB,CATnB,WAAY,CAGZ,WAAY,CACZ,QAAS,CAET,gBAAiB,CACjB,eAAgB,CANhB,iBAAkB,CAIlB,OAAQ,CAHR,UvBqgHZ,CuBviHA,kDA+CY,oCvB2/GZ,CuB1iHA,yDAiDgB,wBvB4/GhB,CuB7iHA,mCAuDQ,evBy/GR,CwBtjHA,6FAIY,wBAA4B,CAC5B,6MAA0S,CAC1S,qCAA6C,CAC7C,yBxBqjHZ,CwB5jHA,qDAUY,YxBqjHZ,CwB/jHA,qDAeQ,uBxBmjHR,CwBlkHA,+BAmBQ,iBxBkjHR,CwBrkHA,gFA2BY,6CxBgjHZ,CwB9iHY,6DACI,exBgjHhB,CwB9kHA,oCAkCY,exB+iHZ,CyB9kHQ,sCpBAN,+aLslHF,CyBjlHQ,mEpBNN,mCoBGU,WAAY,CpBAtB,yBAA0B,CAD1B,yBAA0B,CoBAhB,UzB6lHZ,CyBzlHQ,6BpBLN,+VL8lHF,CyBplHQ,6BpBVN,yWLsmHF,CyBvlHQ,4DpBhBN,mCoBaU,WAAY,CpBVtB,yBAA0B,CAD1B,yBAA0B,CoBUhB,UzBmmHZ,CyB/lHQ,+BpBfN,ynBL8mHF,CyB1lHQ,iCpBpBN,wRLsnHF,CyB7lHQ,+DpB1BN,mCoBuBU,WAAY,CpBpBtB,yBAA0B,CAD1B,yBAA0B,CoBoBhB,UzBymHZ,CyBrmHQ,8BpBzBN,gWL8nHF,CyBhmHQ,6BpB9BN,qNLsoHF,CyBnmHQ,0DpBpCN,mCoBiCU,WAAY,CpB9BtB,yBAA0B,CAD1B,yBAA0B,CoB8BhB,UzB+mHZ,CyB3mHQ,6BpBnCN,2LL8oHF,CyBtmHQ,iCpBzCN,mCoB2CU,WAAY,CpB1CtB,w5CAEA,yBAA0B,CAD1B,yBAA0B,CoBwChB,UzB6mHZ,CyBxmHQ,iCpB9CN,uhBL8pHF,CyB3mHQ,kEpBpDN,mCoBiDU,WAAY,CpB9CtB,yBAA0B,CAD1B,yBAA0B,CoB8ChB,UzBunHZ,CyBnnHQ,iCpBnDN,8cLsqHF,CyB9mHQ,mCpBxDN,qQL8qHF,CyBjnHQ,sEpB9DN,mCoB2DU,WAAY,CpBxDtB,yBAA0B,CAD1B,yBAA0B,CoBwDhB,UzB8nHZ,CyB1nHQ,mCAGI,oBAAqB,CpBhE/B,icLurHF,CyBpnHQ,0CpBnEN,yPL+rHF,CyBvnHQ,kFpBzEN,mCoBsEU,WAAY,CpBnEtB,yBAA0B,CAD1B,yBAA0B,CoBmEhB,UzBmoHZ,CyB/nHQ,wCpBxEN,uPLusHF,CyB1nHQ,wCpB7EN,2PL+sHF,CyB7nHQ,iFpBnFN,mCoBgFU,WAAY,CpB7EtB,yBAA0B,CAD1B,yBAA0B,CoB6EhB,UzByoHZ,CyBroHQ,yCpBlFN,0PLutHF,CyBhoHQ,wCpBvFN,uPL+tHF,CyBnoHQ,gFpB7FN,mCoB0FU,WAAY,CpBvFtB,yBAA0B,CAD1B,yBAA0B,CoBuFhB,UzB+oHZ,CyB3oHQ,wCpB5FN,iRLuuHF,CyBtoHQ,2CpBjGN,iVL+uHF,CyBzoHQ,sFpBvGN,mCoBoGU,WAAY,CpBjGtB,yBAA0B,CAD1B,yBAA0B,CoBiGhB,UzBqpHZ,CyBjpHQ,2CpBtGN,mRLuvHF,CyB5oHQ,oCpB3GN,qOL+vHF,CyB/oHQ,iEpBjHN,mCoB8GU,WAAY,CpB3GtB,yBAA0B,CAD1B,yBAA0B,CoB2GhB,UzB2pHZ,CyBvpHQ,6BpBhHN,gZLuwHF,CyBjpHQ,iCpBtHN,gUL+wHF,CyBppHQ,8DpB5HN,mCoByHU,WAAY,CpBtHtB,yBAA0B,CAD1B,yBAA0B,CoBsHhB,UzBgqHZ,CyB5pHQ,6BpB3HN,kULuxHF,CyBvpHQ,sCpBpHN,m6GoBsHU,WAAY,CADZ,UzB2pHZ,CyBvpHQ,kCpBtIN,mCACA,mRLoyHF,CyBzpHQ,mEAJI,WAAY,CpBrItB,yBAA0B,CAD1B,yBAA0B,CoBqIhB,UzBsqHZ,CyBjqHQ,iCpB5IN,oCACA,qsJL4yHF,CyB1pHQ,sCpBlJN,8PLozHF,CyB7pHQ,2EpBxJN,mCoBqJU,WAAY,CpBlJtB,yBAA0B,CAD1B,yBAA0B,CoBkJhB,UzByqHZ,CyBrqHQ,qCpBvJN,8PL4zHF,CyBhqHQ,wCpB5JN,8RLo0HF,CyBnqHQ,gFpBlKN,mCoB+JU,WAAY,CpB5JtB,yBAA0B,CAD1B,yBAA0B,CoB4JhB,UzB+qHZ,CyB3qHQ,wCpBjKN,8RL40HF,CyBtqHQ,mCpBvKN,mCoByKU,WAAY,CpBxKtB,mnCAEA,yBAA0B,CAD1B,yBAA0B,CoBsKhB,UzB6qHZ,CyBtqHQ,0CpB9KN,0QL41HF,CyBzqHQ,qFpBpLN,mCoBiLU,WAAY,CpB9KtB,yBAA0B,CAD1B,yBAA0B,CoB8KhB,UzBqrHZ,CyBjrHQ,2CpBnLN,uRLo2HF,CyB5qHQ,4CpBxLN,kRL42HF,CyB/qHQ,wFpB9LN,mCoB2LU,WAAY,CpBxLtB,yBAA0B,CAD1B,yBAA0B,CoBwLhB,UzB2rHZ,CyBvrHQ,4CpB7LN,8MLo3HF,CyBlrHQ,2CpBlMN,uPL43HF,CyBrrHQ,wFpBxMN,mCoBqMU,WAAY,CpBlMtB,yBAA0B,CAD1B,yBAA0B,CoBkMhB,UzBisHZ,CyB7rHQ,6CpBvMN,yPLo4HF,CyBxrHQ,4CpB5MN,yPL44HF,CyB3rHQ,sFpBlNN,mCoB+MU,WAAY,CpB5MtB,yBAA0B,CAD1B,yBAA0B,CoB4MhB,UzBusHZ,CyBnsHQ,0CpBjNN,uPLo5HF,CyB9rHQ,6CpBtNN,wPL45HF,CyBjsHQ,0FpB5NN,mCoByNU,WAAY,CpBtNtB,yBAA0B,CAD1B,yBAA0B,CoBsNhB,UzB6sHZ,CyBzsHQ,6CpB3NN,wPLo6HF,CyBpsHQ,0CpBhON,mQL46HF,CyBvsHQ,sFpBtON,mCoBmOU,WAAY,CpBhOtB,yBAA0B,CAD1B,yBAA0B,CoBgOhB,UzBmtHZ,CyB/sHQ,4CpBrON,mQLo7HF,CyBvsHQ,uCpB7ON,68GL47HF,CyB1sHQ,6EpBnPN,mCoBgPU,WAAY,CpB7OtB,yBAA0B,CAD1B,yBAA0B,CoB6OhB,UzBstHZ,CyBltHQ,sCpBlPN,wvELo8HF,CyB7sHQ,uCpBvPN,ghEL48HF,CyBhtHQ,iFpB7PN,mCoB0PU,WAAY,CpBvPtB,yBAA0B,CAD1B,yBAA0B,CoBuPhB,UzB4tHZ,CyBxtHQ,0CpB5PN,8jELo9HF,CyBntHQ,0CpBjQN,sqBL49HF,CyBttHQ,kFpBvQN,mCoBoQU,WAAY,CpBjQtB,yBAA0B,CAD1B,yBAA0B,CoBiQhB,UzBkuHZ,CyB9tHQ,wCpBtQN,wULo+HF,CyBztHQ,oCpB3QN,gkBL4+HF,CyB5tHQ,wEpBjRN,mCoB8QU,WAAY,CpB3QtB,yBAA0B,CAD1B,yBAA0B,CoB2QhB,UzBwuHZ,CyBpuHQ,oCpBhRN,mcLo/HF,CyB/tHQ,0CpBrRN,qwDL4/HF,CyBluHQ,8EpB3RN,mCoBwRU,WAAY,CpBrRtB,yBAA0B,CAD1B,yBAA0B,CoBqRhB,UzB8uHZ,CyB1uHQ,oCpB1RN,uhCLogIF,CyBluHQ,4BpBlSN,6iBL4gIF,CyBruHQ,sDpBxSN,mCoBqSU,WAAY,CpBlStB,yBAA0B,CAD1B,yBAA0B,CoBkShB,UzBivHZ,CyB7uHQ,0BpBvSN,8iBLohIF,CyBruHQ,8BpB/SN,21BL4hIF,CyBxuHQ,mEpBrTN,mCoBkTU,WAAY,CpB/StB,yBAA0B,CAD1B,yBAA0B,CoB+ShB,UzBovHZ,CyBhvHQ,qCpBpTN,2pBLoiIF,CyB3uHQ,uCpB1TN,mCoB4TU,WAAY,CpB3TtB,iUAEA,yBAA0B,CAD1B,yBAA0B,CoByThB,UzBkvHZ,CyB7uHQ,qCpB/TN,ofLojIF,CyBhvHQ,6EpBrUN,sCoBkUU,WAAY,CpB/TtB,yBAA0B,CAD1B,yBAA0B,CoB+ThB,UzB4vHZ,CyBxvHQ,wCpBpUN,8WL4jIF,CyBnvHQ,8CpB1UN,mCoB4UU,WAAY,CpB3UtB,8VAEA,yBAA0B,CAD1B,yBAA0B,CoByUhB,UzB0vHZ,CyBtvHQ,uCpB9UN,w4BL4kIF,CyBxvHQ,yEpBrVN,mCoBiVU,WAAY,CpB9UtB,yBAA0B,CAD1B,yBAA0B,CoB8UhB,UzBqwHZ,CyBhwHQ,kCpBpVN,yQLolIF,CyB3vHQ,oCpBzVN,4TL4lIF,CyB9vHQ,sEpB/VN,mCoB4VU,WAAY,CpBzVtB,yBAA0B,CAD1B,yBAA0B,CoByVhB,UzB0wHZ,CyBtwHQ,kCpB9VN,ubLomIF,CyBjwHQ,kCpBnWN,8nBL4mIF,CyBpwHQ,oEpBzWN,mCoBsWU,WAAY,CpBnWtB,yBAA0B,CAD1B,yBAA0B,CoBmWhB,UzBgxHZ,CyB5wHQ,kCpBxWN,yVLonIF,CyBnwHY,mDpBjXV,8PL4nIF,CyBtwHY,wGpBvXV,mCoBoXc,WAAY,CpBjX1B,yBAA0B,CAD1B,yBAA0B,CoBiXZ,UzBkxHhB,CyB9wHY,qDpBtXV,iTLooIF,CyBzwHY,mDpB3XV,iaL4oIF,CyB5wHY,sGpBjYV,mCoB8Xc,WAAY,CpB3X1B,yBAA0B,CAD1B,yBAA0B,CoB2XZ,UzBwxHhB,CyBpxHY,mDpBhYV,mnBLopIF,CyB/wHY,mDpBtYV,mCoBwYc,WAAY,CpBvY1B,+UAEA,yBAA0B,CAD1B,yBAA0B,CoBqYZ,UzBsxHhB,CyBlxHY,8CACI,ezBoxHhB,C0B/pIQ,sCrBAN,iNLuqIF,C0BlqIQ,8ErBNN,mCqBGU,WAAY,CrBAtB,yBAA0B,CAD1B,yBAA0B,CqBAhB,U1B8qIZ,C0B1qIQ,wCrBLN,8ML+qIF,C0BrqIQ,iCrBXN,mCqBaU,WAAY,CrBZtB,6SAEA,yBAA0B,CAD1B,yBAA0B,CqBUhB,U1B4qIZ,C0BxqIQ,0CrBhBN,sCqBkBU,WAAY,CrBjBtB,mdAEA,yBAA0B,CAD1B,yBAA0B,CqBehB,U1B+qIZ,C0B3qIQ,mCrBpBN,ynBLusIF,C0B9qIQ,wErB1BN,mCqBuBU,WAAY,CrBpBtB,yBAA0B,CAD1B,yBAA0B,CqBoBhB,U1B0rIZ,C0BtrIQ,qCrBzBN,wRL+sIF,C0BjrIQ,kCrB9BN,gWLutIF,C0BprIQ,uErBpCN,mCqBiCU,WAAY,CrB9BtB,yBAA0B,CAD1B,yBAA0B,CqB8BhB,U1BgsIZ,C0B5rIQ,qCrBnCN,+dL+tIF,C0BvrIQ,qCrBxCN,8cLuuIF,C0B1rIQ,4ErB9CN,mCqB2CU,WAAY,CrBxCtB,yBAA0B,CAD1B,yBAA0B,CqBwChB,U1BssIZ,C0BlsIQ,uCrB7CN,qQL+uIF,C0B7rIQ,8CrBlDN,yPLuvIF,C0BhsIQ,0FrBxDN,mCqBqDU,WAAY,CrBlDtB,yBAA0B,CAD1B,yBAA0B,CqBkDhB,U1B4sIZ,C0BxsIQ,4CrBvDN,uPL+vIF,C0BnsIQ,4CrB5DN,2PLuwIF,C0BtsIQ,yFrBlEN,mCqB+DU,WAAY,CrB5DtB,yBAA0B,CAD1B,yBAA0B,CqB4DhB,U1BktIZ,C0B9sIQ,6CrBjEN,0PL+wIF,C0BzsIQ,4CrBtEN,uPLuxIF,C0B5sIQ,wFrB5EN,mCqByEU,WAAY,CrBtEtB,yBAA0B,CAD1B,yBAA0B,CqBsEhB,U1BwtIZ,C0BptIQ,4CrB3EN,iRL+xIF,C0B/sIQ,+CrBhFN,iVLuyIF,C0BltIQ,8FrBtFN,mCqBmFU,WAAY,CrBhFtB,yBAA0B,CAD1B,yBAA0B,CqBgFhB,U1B8tIZ,C0B1tIQ,+CrBrFN,mRL+yIF,C0BrtIQ,iCrB3FN,mCqB6FU,WAAY,CrB5FtB,2tBAEA,yBAA0B,CAD1B,yBAA0B,CqB0FhB,U1B4tIZ,C0BxtIQ,+ErBhGN,mCqBkGU,WAAY,CrBjGtB,+xBAEA,yBAA0B,CAD1B,yBAA0B,CqB+FhB,U1BguIZ,C0B5tIQ,iCrBrGN,mCACA,kULw0IF,C0B/tIQ,sEAHI,WAAY,CrBpGtB,yBAA0B,CAD1B,yBAA0B,CqBoGhB,U1B2uIZ,C0BvuIQ,qCrB1GN,oCACA,qsJLg1IF,C0BluIQ,yCrB9GN,2pBLw1IF,C0BruIQ,oFrBpHN,mCqBiHU,WAAY,CrB9GtB,yBAA0B,CAD1B,yBAA0B,CqB8GhB,U1BivIZ,C0B7uIQ,2CrBnHN,gULg2IF,C0BpuIQ,0CrB5HN,8PLw2IF,C0BvuIQ,mFrBlIN,mCqB+HU,WAAY,CrB5HtB,yBAA0B,CAD1B,yBAA0B,CqB4HhB,U1BmvIZ,C0B/uIQ,yCrBjIN,8PLg3IF,C0B1uIQ,4CrBtIN,8RLw3IF,C0B7uIQ,wFrB5IN,mCqByIU,WAAY,CrBtItB,yBAA0B,CAD1B,yBAA0B,CqBsIhB,U1ByvIZ,C0BrvIQ,4CrB3IN,8RLg4IF,C0B7uIQ,8CrBnJN,0QLw4IF,C0BhvIQ,6FrBzJN,mCqBsJU,WAAY,CrBnJtB,yBAA0B,CAD1B,yBAA0B,CqBmJhB,U1B4vIZ,C0BxvIQ,+CrBxJN,uRLg5IF,C0BnvIQ,gDrB7JN,kRLw5IF,C0BtvIQ,gGrBnKN,mCqBgKU,WAAY,CrB7JtB,yBAA0B,CAD1B,yBAA0B,CqB6JhB,U1BkwIZ,C0B9vIQ,gDrBlKN,8MLg6IF,C0BzvIQ,+CrBvKN,uPLw6IF,C0B5vIQ,gGrB7KN,mCqB0KU,WAAY,CrBvKtB,yBAA0B,CAD1B,yBAA0B,CqBuKhB,U1BwwIZ,C0BpwIQ,iDrB5KN,yPLg7IF,C0B/vIQ,gDrBjLN,yPLw7IF,C0BlwIQ,8FrBvLN,mCqBoLU,WAAY,CrBjLtB,yBAA0B,CAD1B,yBAA0B,CqBiLhB,U1B8wIZ,C0B1wIQ,8CrBtLN,uPLg8IF,C0BrwIQ,iDrB3LN,wPLw8IF,C0BxwIQ,kGrBjMN,mCqB8LU,WAAY,CrB3LtB,yBAA0B,CAD1B,yBAA0B,CqB2LhB,U1BoxIZ,C0BhxIQ,iDrBhMN,wPLg9IF,C0B3wIQ,8CrBrMN,mQLw9IF,C0B9wIQ,8FrB3MN,mCqBwMU,WAAY,CrBrMtB,yBAA0B,CAD1B,yBAA0B,CqBqMhB,U1B0xIZ,C0BtxIQ,gDrB1MN,mQLg+IF,C0B9wIQ,2CrBlNN,68GLw+IF,C0BjxIQ,qFrBxNN,mCqBqNU,WAAY,CrBlNtB,yBAA0B,CAD1B,yBAA0B,CqBkNhB,U1B6xIZ,C0BzxIQ,0CrBvNN,wvELg/IF,C0BpxIQ,2CrB5NN,ghELw/IF,C0BvxIQ,yFrBlON,mCqB+NU,WAAY,CrB5NtB,yBAA0B,CAD1B,yBAA0B,CqB4NhB,U1BmyIZ,C0B/xIQ,8CrBjON,8jELggJF,C0B1xIQ,8CrBtON,sqBLwgJF,C0B7xIQ,0FrB5ON,mCqByOU,WAAY,CrBtOtB,yBAA0B,CAD1B,yBAA0B,CqBsOhB,U1ByyIZ,C0BryIQ,4CrB3ON,wULghJF,C0BhyIQ,wCrBhPN,gkBLwhJF,C0BnyIQ,gFrBtPN,mCqBmPU,WAAY,CrBhPtB,yBAA0B,CAD1B,yBAA0B,CqBgPhB,U1B+yIZ,C0B3yIQ,wCrBrPN,mcLgiJF,C0BtyIQ,8CrB1PN,qwDLwiJF,C0BzyIQ,sFrBhQN,mCqB6PU,WAAY,CrB1PtB,yBAA0B,CAD1B,yBAA0B,CqB0PhB,U1BqzIZ,C0BjzIQ,wCrB/PN,uhCLgjJF,C0BzyIQ,gCrBvQN,6iBLwjJF,C0B5yIQ,8DrB7QN,mCqB0QU,WAAY,CrBvQtB,yBAA0B,CAD1B,yBAA0B,CqBuQhB,U1BwzIZ,C0BpzIQ,8BrB5QN,8iBLgkJF,C0B5yIQ,kCrBrRN,mCqBuRU,WAAY,CrBtRtB,g3BAEA,yBAA0B,CAD1B,yBAA0B,CqBoRhB,U1BmzIZ,C0B9yIQ,yCrB1RN,o0BLglJF,C0BjzIQ,qFrBhSN,sCqB6RU,WAAY,CrB1RtB,yBAA0B,CAD1B,yBAA0B,CqB0RhB,U1B6zIZ,C0BzzIQ,4CrB/RN,2QLwlJF,C0B/yIQ,2FrB1SN,mCqB4SU,WAAY,CrB3StB,uPAEA,yBAA0B,CAD1B,yBAA0B,CqByShB,U1B8zIZ,C0B1zIQ,2CrB/SN,mCqBiTU,WAAY,CrBhTtB,8eAEA,yBAA0B,CAD1B,yBAA0B,CqB8ShB,U1Bi0IZ,C0B7zIQ,+CrBvSN,0OqBySU,WAAY,CADZ,U1Bi0IZ,C0B7zIQ,iCrBzTN,mCqB2TU,WAAY,CrB1TtB,kNAEA,yBAA0B,CAD1B,yBAA0B,CqBwThB,U1Bo0IZ,C0Bh0IQ,8CrB9TN,mCqBgUU,WAAY,CrB/TtB,kNAEA,yBAA0B,CAD1B,yBAA0B,CqB6ThB,U1Bu0IZ,C0Bn0IQ,kCrBnUN,mCqBqUU,WAAY,CrBpUtB,uPAEA,yBAA0B,CAD1B,yBAA0B,CqBkUhB,U1B00IZ,C0Bj0IgB,wDACI,e1Bm0IpB,C0B1zIY,yCAEI,WAAY,CADZ,W1B6zIhB,C0BzzIY,yCrB3VV,iSL4pJF,C0B5zIY,kFrBjWV,sCqB8Vc,WAAY,CrB3V1B,yBAA0B,CAD1B,yBAA0B,CqB2VZ,U1Bw0IhB,C0Bp0IY,yCrBhWV,gSLoqJF,C0B/zIY,2CrBrWV,kOL4qJF,C0Bl0IY,oFrB3WV,sCqBwWc,WAAY,CrBrW1B,yBAA0B,CAD1B,yBAA0B,CqBqWZ,U1B80IhB,C0B10IY,yCrB1WV,oNLorJF,C0Br0IY,6CrBhXV,sCqBkXc,WAAY,CrBjX1B,s5BAEA,yBAA0B,CAD1B,yBAA0B,CqB+WZ,U1B40IhB,C0Bx0IY,yCrBpXV,8OLosJF,C0B30IY,kFrB1XV,sCqBuXc,WAAY,CrBpX1B,yBAA0B,CAD1B,yBAA0B,CqBoXZ,U1Bu1IhB,C0Bn1IY,yCrBzXV,yOL4sJF,C0B90IY,gDrB/XV,sCqBiYc,WAAY,CrBhY1B,2OAEA,yBAA0B,CAD1B,yBAA0B,CqB8XZ,U1Bq1IhB,C0Bj1IY,8CrBnYV,4QL4tJF,C0Bp1IY,8FrBzYV,sCqBsYc,WAAY,CrBnY1B,yBAA0B,CAD1B,yBAA0B,CqBmYZ,U1Bg2IhB,C0B51IY,gDrBxYV,sRLouJF,C0Bv1IY,8CrB7YV,0WL4uJF,C0B11IY,4FrBnZV,sCqBgZc,WAAY,CrB7Y1B,yBAA0B,CAD1B,yBAA0B,CqB6YZ,U1Bs2IhB,C0Bl2IY,8CrBlZV,mrBLovJF,C0B71IY,8CrBvZV,gUL4vJF,C0Bh2IY,gGrB7ZV,sCqB0Zc,WAAY,CrBvZ1B,yBAA0B,CAD1B,yBAA0B,CqBuZZ,U1B42IhB,C0Bx2IY,kDrB5ZV,2ULowJF,C2BrwJI,+BACI,0D3BuwJR,C2BrwJI,gCACI,0D3BuwJR,C2BrwJI,iCACI,0D3BuwJR,C2BrwJI,gCACI,0D3BuwJR,C2BrwJI,iCACI,0D3BuwJR,C2BrwJI,kCACI,0D3BuwJR,C2BrwJI,gCACI,0D3BuwJR,C2BrwJI,iCACI,0D3BuwJR,C2BrwJI,kCACI,0D3BuwJR,C2BrwJI,gCACI,0D3BuwJR,C2BrwJI,iCACI,0D3BuwJR,C2BrwJI,kCACI,0D3BuwJR,C2BrwJI,wBACI,0D3BuwJR,C2BrwJI,6BACI,0D3BuwJR,C2BrwJI,0BACI,0D3BuwJR,C2BrwJI,4BACA,0D3BuwJJ,C2BrwJI,0BACI,0D3BuwJR,C2BrwJI,2BACI,0D3BuwJR,C2BrwJI,gCACI,0D3BuwJR,C2BrwJI,+BACI,0D3BuwJR,C2BrwJI,gCACI,0D3BuwJR,C2BrwJI,iCACI,0D3BuwJR,C2BrwJI,gCACI,0D3BuwJR,C2BrwJI,iCACI,0D3BuwJR,C2BrwJI,kCACI,0D3BuwJR,C2BhwJI,wBtBnEF,uXsBqEM,WAAY,CADZ,U3BowJR,C2BhwJI,wBtBxEF,uoBsB0EM,WAAY,CADZ,U3BowJR,C2BhwJI,uBtB7EF,ixCsB+EM,WAAY,CADZ,U3BowJR,C2BhwJI,uBtBlFF,yvCsBoFM,WAAY,CAD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","sources":["webpack://documenteditor/../../apps/common/mobile/resources/less/variables.less","webpack://documenteditor/../../apps/spreadsheeteditor/mobile/src/less/app.less","webpack://documenteditor/../../apps/common/mobile/resources/less/colors-table.less","webpack://documenteditor/../../apps/common/mobile/resources/less/colors-table-dark.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common-rtl.less","webpack://documenteditor/../../apps/common/mobile/resources/less/icons.rtl.less","webpack://documenteditor/../../apps/common/mobile/resources/less/_mixins.less","webpack://documenteditor/../../apps/common/mobile/resources/less/collaboration.less","webpack://documenteditor/../../apps/common/mobile/resources/less/about.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common-ios.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common-material.less","webpack://documenteditor/../../apps/common/mobile/resources/less/ios/icons.less","webpack://documenteditor/../../apps/common/mobile/resources/less/material/icons.less","webpack://documenteditor/../../apps/common/mobile/resources/less/icons.less","webpack://documenteditor/../../apps/common/mobile/resources/less/dataview.less","webpack://documenteditor/../../apps/common/mobile/resources/less/search.less","webpack://documenteditor/./node_modules/framework7/less/mixins.less","webpack://documenteditor/../../apps/common/mobile/resources/less/ios/contextmenu.less","webpack://documenteditor/../../apps/common/mobile/resources/less/material/contextmenu.less","webpack://documenteditor/../../apps/common/mobile/resources/less/contextmenu.less","webpack://documenteditor/../../apps/common/mobile/resources/less/ios/comments.less","webpack://documenteditor/../../apps/common/mobile/resources/less/material/comments.less","webpack://documenteditor/../../apps/common/mobile/resources/less/comments.less","webpack://documenteditor/../../apps/spreadsheeteditor/mobile/src/less/app-material.less","webpack://documenteditor/../../apps/spreadsheeteditor/mobile/src/less/app-ios.less","webpack://documenteditor/../../apps/spreadsheeteditor/mobile/src/less/icons-ios.less","webpack://documenteditor/../../apps/spreadsheeteditor/mobile/src/less/icons-material.less","webpack://documenteditor/../../apps/spreadsheeteditor/mobile/src/less/icons-common.less","webpack://documenteditor/../../apps/spreadsheeteditor/mobile/src/less/celleditor.less","webpack://documenteditor/../../apps/spreadsheeteditor/mobile/src/less/statusbar.less"],"sourcesContent":["\n.md {\n --background-normal: #f1f1f1;\n}\n\n@background-normal: var(--background-normal, #fff);\n\n@border-regular-control: #cbcbcb;\n@text-normal: #000;\n","@import '../../../../common/mobile/resources/less/variables.less';\n@import '../../../../../vendor/framework7-react/node_modules/framework7/less/mixins.less';\n@import '../../../../common/mobile/resources/less/_mixins.less';\n@import '../../../../common/mobile/resources/less/colors-table.less';\n@import '../../../../common/mobile/resources/less/colors-table-dark.less';\n@import './app-rtl.less';\n\n// @themeColor: #40865c;\n@brandColor: var(--brand-cell);\n\n.device-ios {\n --toolbar-background: var(--background-primary, #fff);\n --toolbar-segment: var(--brand-cell, #40865C);\n --toolbar-icons: var(--brand-cell, #40865C);\n}\n.device-android {\n --toolbar-background: var(--brand-cell, #40865C);\n\n .theme-type-dark {\n --toolbar-icons: var(--brand-cell, #40865C);\n }\n}\n\n@toolbar-background: var(--toolbar-background);\n@toolbar-segment: var(--toolbar-segment);\n@button-active-opacity: var(--active-opacity-cell);\n\n@import '../../../../common/mobile/resources/less/collaboration.less';\n@import '../../../../common/mobile/resources/less/common.less';\n@import '../../../../common/mobile/resources/less/common-ios.less';\n@import '../../../../common/mobile/resources/less/common-material.less';\n@import '../../../../common/mobile/resources/less/icons.less';\n@import '../../../../common/mobile/resources/less/dataview.less';\n@import '../../../../common/mobile/resources/less/search.less';\n@import '../../../../common/mobile/resources/less/contextmenu.less';\n@import '../../../../common/mobile/resources/less/comments.less';\n@import './app-material.less';\n@import './app-ios.less';\n@import './icons-ios.less';\n@import './icons-material.less';\n@import './icons-common.less';\n@import './celleditor.less';\n@import './statusbar.less';\n\n.page[data-name='home'] {\n .page-content {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n }\n};\n\n:root {\n --f7-popover-width: 360px;\n //--f7-page-content-extra-padding-top: 37px;\n}\n\n.page-function-info {\n &.page-content, .page-content {\n background-color: @background-primary;\n }\n\n .function-info {\n padding: 0 15px;\n h3 {\n color: @text-normal;\n }\n \n p {\n color: @text-secondary;\n }\n }\n}\n\n.username-tip {\n background-color: #ee3525; \n}\n\n// Skeleton of workbook\n\n.doc-placeholder {\n padding-top: calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-subnavbar-offset, 0px));\n overflow: hidden;\n background: #fbfbfb;\n width: 100%;\n height: 100%;\n border: 1px solid #dfdfdf;\n white-space: nowrap;\n position: absolute;\n top: 0;\n left: 0;\n font-size: 0;\n z-index: 6000;\n\n > .columns {\n width: 100%;\n height: 100%;\n overflow: hidden;\n display: inline-block;\n background: linear-gradient(90deg, #d5d5d5 0px, rgba(0,0,0,0) 1px) 0 0,\n linear-gradient(rgba(0,0,0,0) 19px, #d5d5d5 20px) 0 0,\n linear-gradient( #f1f1f1 0px, #f1f1f1 20px) 0 0 repeat-x;\n background-size: 80px 20px;\n\n -webkit-animation: flickerAnimation 2s infinite ease-in-out;\n -moz-animation: flickerAnimation 2s infinite ease-in-out;\n -o-animation: flickerAnimation 2s infinite ease-in-out;\n animation: flickerAnimation 2s infinite ease-in-out;\n\n &:first-child {\n background: linear-gradient(#f1f1f1 19px, #d5d5d5 20px) 0 0;\n background-size: 20px 20px;\n width: 25px;\n }\n }\n}\n\n.item-input-wrap {\n input[type = number] {\n -moz-appearance: textfield;\n }\n}\n\n.move-sheet {\n .swipe-container {\n display: flex;\n justify-content: center;\n height: 40px;\n background-color: @background-primary;\n .icon-swipe {\n margin-top: 8px;\n width: 40px;\n height: 4px;\n background: @background-menu-divider;\n border-radius: 2px;\n }\n }\n .navbar {\n top: -1px;\n }\n}\n\n.actions-move-sheet {\n background-color: @background-secondary;\n}\n\n// All-list sheet\n.all-list {\n --f7-popover-width: 190px;\n .item-checkbox{\n padding-left: 8px;\n .icon-checkbox{\n border-color: transparent;\n margin-right: 8px;\n &::after{\n color: @brandColor;\n }\n }\n .item-after div {\n color: @text-secondary;\n font-style: italic;\n }\n input[type='checkbox']:checked ~ .icon-checkbox {\n background-color: unset;\n border-color: transparent;\n }\n }\n}\n\n.sheet-filter, .popover-filter {\n .list {\n ul li:first-child .list-button{\n color: @text-normal;\n &::after {\n background: @background-menu-divider;\n }\n }\n\n .item-inner {\n color: @text-normal;\n }\n }\n}\n\n.tooltip-cell-data {\n width: max-content;\n max-width: 186px;\n max-height: 153px;\n overflow-y: auto;\n box-shadow: 0px 20px 46px rgba(0, 0, 0, 0.1);\n border-radius: 4px;\n .popover-inner {\n padding: 8px;\n }\n &__title {\n font-style: normal;\n font-weight: 600;\n font-size: 12px;\n line-height: 16px;\n color: @text-normal;\n margin: 0;\n margin-bottom: 4px;\n }\n &__msg {\n font-style: normal;\n font-weight: 400;\n font-size: 11px;\n line-height: 13px;\n color: @text-secondary;\n letter-spacing: 0.06px;\n margin: 0;\n }\n}\n\n// Cell styles\n\n.cell-styles-list {\n ul {\n display: flex;\n justify-content: space-around;\n flex-wrap: wrap;\n padding-left: 5px;\n padding-right: 5px;\n padding-top: 5px;\n background-color: @background-tertiary;\n li.item-theme {\n // border: 0.5px solid #c8c7cc;\n border: 2px solid @fill-white;\n padding: 1px;\n background-repeat: no-repeat;\n width: 108px;\n height: 53px;\n margin-bottom: 8px;\n background-position: center;\n .item-content {\n width: 100%;\n height: 100%;\n padding: 0;\n .item-inner {\n width: 100%;\n height: 100%;\n padding: 0;\n &:after {\n display: none;\n }\n .thumb {\n width: 100%;\n height: 100%;\n padding: 0;\n background-size: contain;\n background-color: var(--canvas-content-background);\n }\n }\n }\n &.active:before {\n content: '';\n position: absolute;\n width: 22px;\n height: 22px;\n right: 2px;\n bottom: 2px;\n z-index: 1;\n .encoded-svg-background('');\n }\n }\n &:after {\n display: none;\n }\n }\n}\n\n// Marker color sheet\n.marker-color-sheet {\n width: 16px;\n height: 16px;\n border-radius: 50%;\n}\n\n.item-list.active .item-title {\n font-weight: 600;\n}\n","\n:root {\n --brand-word: #446995;\n --brand-cell: #40865C;\n --brand-slide: #BE664F;\n --brand-form: #AA5252;\n --brand-primary: #3880BE;\n --brand-secondary: #ED7309;\n --brand-text-on-brand: #FFF;\n\n --background-primary: #FFF;\n --background-secondary: #FFF;\n --background-tertiary: #EFF0F5;\n --background-menu-divider: fade(#3C3C43, 15%);\n --background-button: #EFF0F5;\n\n --text-normal: #000000;\n --text-secondary: fade(#000, 60%);\n --text-tertiary: fade(#000, 40%);\n --text-link: #007AFF;\n --text-error: #FF3B30;\n\n --fill-black: #000;\n --fill-white: #FFF;\n\n --toolbar-background: #446995;\n --toolbar-icons: #FFF;\n --toolbar-segment: #446995;\n --toolbar-tab-normal:fade(#FFF, 50%);\n\n --component-disabled-opacity: .4;\n\n --active-opacity-word: fade(#446995, 30%);\n --active-opacity-slide: fade(#BE664F, 30%);\n --active-opacity-cell: fade(#40865C, 30%);\n\n --image-border-types-filter: none;\n\n // Canvas\n\n --canvas-background: #eee;\n --canvas-content-background: #fff;\n --canvas-page-border: #ccc;\n\n --canvas-ruler-background: #fff;\n //--canvas-ruler-border: #cbcbcb;\n --canvas-ruler-margins-background: #d9d9d9;\n --canvas-ruler-mark: #555;\n --canvas-ruler-handle-border: #555;\n --canvas-ruler-handle-border-disabled: #aaa;\n\n --canvas-high-contrast: #000;\n //--canvas-high-contrast-disabled: #666;\n\n --canvas-cell-border: #999;\n --canvas-cell-title-text: fade(#000, 80%);\n --canvas-cell-title-background: #f7f7f7;\n --canvas-cell-title-background-selected: #cfcfcf;\n --canvas-cell-title-border: #d8d8d8;\n --canvas-cell-title-border-selected: #c9c9c9;\n\n //--canvas-scroll-thumb: #f7f7f7;\n //--canvas-scroll-thumb-hover: #c0c0c0;\n //--canvas-scroll-thumb-pressed: #adadad;\n //--canvas-scroll-thumb-border: #cbcbcb;\n //--canvas-scroll-thumb-border-hover: #cbcbcb;\n //--canvas-scroll-thumb-border-pressed: #adadad;\n //--canvas-scroll-arrow: #adadad;\n //--canvas-scroll-arrow-hover: #f7f7f7;\n //--canvas-scroll-arrow-pressed: #f7f7f7;\n //--canvas-scroll-thumb-target: #c0c0c0;\n //--canvas-scroll-thumb-target-hover: #f7f7f7;\n //--canvas-scroll-thumb-target-pressed: #f7f7f7;\n .pdf-view {\n --brand-word: var(--brand-form);\n\n &__android {\n --toolbar-background: var(--brand-word);\n }\n }\n}\n\n@brand-word: var(--brand-word);\n@brand-cell: var(--brand-cell);\n@brand-slide: var(--brand-slide);\n@brand-form: var(--brand-form);\n@brand-primary: var(--brand-primary);\n@brand-secondary: var(--brand-secondary);\n@brand-text-on-brand: var(--brand-text-on-brand);\n\n@background-primary: var(--background-primary);\n@background-secondary: var(--background-secondary);\n@background-tertiary: var(--background-tertiary);\n@background-menu-divider: var(--background-menu-divider);\n@background-button: var(--background-button);\n\n@text-normal: var(--text-normal);\n@text-secondary: var(--text-secondary);\n@text-tertiary: var(--text-tertiary);\n@text-link: var(--text-link);\n@text-error: var(--text-error);\n\n@fill-black: var(--fill-black);\n@fill-white: var(--fill-white);\n\n@toolbar-icons: var(--toolbar-icons);\n@toolbar-segment: var(--toolbar-segment);\n@toolbar-tab-normal: var(--toolbar-tab-normal);\n\n@component-disabled-opacity: var(--component-disabled-opacity);\n","\n:root {\n .theme-type-dark,\n .theme-dark {\n --background-primary: #232323;\n --background-secondary: #333;\n --background-tertiary: #131313;\n --background-menu-divider: fade(#545458, 50%);\n --background-button: #333333;\n\n --text-normal: fade(#FFF, 87%);\n --text-secondary: fade(#FFF, 60%);\n --text-tertiary: fade(#FFF, 40%);\n --text-link: #1976D2;\n --text-error: #FF453A;\n\n --fill-black: #000;\n --fill-white: #FFF;\n\n --brand-word: #208BFF;\n --brand-cell: #34C759;\n --brand-slide: #FE8C33;\n --brand-form: #FE8C33;\n --brand-primary: #3E9CF0;\n --brand-secondary: #FFAF49;\n --brand-text-on-brand: #000;\n\n --toolbar-background: #232323;\n --toolbar-icons: #208BFF;\n --toolbar-segment: #FFF;\n --toolbar-tab-normal: #757575;\n\n --component-disabled-opacity: .4;\n\n --image-border-types-filter: invert(100%) brightness(4);\n\n --active-opacity-word: fade(#446995, 20%);\n --active-opacity-slide: fade(#BE664F, 20%);\n --active-opacity-cell: fade(#40865C, 20%);\n\n --image-border-types-filter: invert(100%) brightness(4);\n\n // Canvas\n\n --canvas-background: #000;\n --canvas-content-background: #fff;\n --canvas-page-border: #303030;\n\n --canvas-ruler-background: #636366;\n //--canvas-ruler-border: #2A2A2A;\n --canvas-ruler-margins-background: #3a3a3c;\n --canvas-ruler-mark: #8e8e93;\n --canvas-ruler-handle-border: #636366;\n --canvas-ruler-handle-border-disabled: #636366;\n\n --canvas-high-contrast: #000;\n //--canvas-high-contrast-disabled: #000;\n\n --canvas-cell-border: fade(#000, 10%);\n --canvas-cell-title-border: #757575;\n --canvas-cell-title-border-hover: #858585;\n --canvas-cell-title-border-selected: #999;\n --canvas-cell-title-text: fade(#fff, 80%);\n --canvas-cell-title-background: #555;\n --canvas-cell-title-background-selected: #3d3d3d;\n\n //--canvas-scroll-thumb: #404040;\n //--canvas-scroll-thumb-hover: #999;\n //--canvas-scroll-thumb-pressed: #adadad;\n //--canvas-scroll-thumb-border: #2a2a2a;\n //--canvas-scroll-thumb-border-hover: #999;\n //--canvas-scroll-thumb-border-pressed: #adadad;\n //--canvas-scroll-arrow: #999;\n //--canvas-scroll-arrow-hover: #404040;\n //--canvas-scroll-arrow-pressed: #404040;\n //--canvas-scroll-thumb-target: #999;\n //--canvas-scroll-thumb-target-hover: #404040;\n //--canvas-scroll-thumb-target-pressed: #404040;\n }\n\n .theme-type-dark.pdf-view, .theme-dark.pdf-view {\n --brand-word: var(--brand-form);\n\n &__android {\n --toolbar-background: var(--background-primary);\n }\n }\n}","[dir=\"rtl\"].device-android {\n .app-layout {\n .searchbar {\n input {\n padding-right: 24px;\n padding-left: 36px;\n background-position: right;\n }\n\n .number-search-results {\n right: auto;\n left: 26px;\n }\n }\n }\n\n .wrap-comment, .comment-list{\n .comment-header .initials {\n margin-right: 0;\n margin-left: 10px;\n }\n }\n\n .actions-modal {\n .actions-button-text {\n text-align: right;\n }\n }\n\n .navigation-sheet {\n &__title {\n padding-left: 0;\n padding-right: 16px;\n }\n }\n}\n\n[dir=\"rtl\"].device-ios .app-layout {\n .subnavbar,.navbar .left a + a {\n margin-right: 0;\n }\n\n .subnavbar,.navbar .right a + a {\n margin-right: 0;\n }\n\n .tab-buttons {\n .tab-link:first-child {\n border-radius: 0px 5px 5px 0px;\n }\n\n .tab-link:last-child {\n border-radius: 5px 0px 0px 5px;\n }\n }\n\n .searchbar .number-search-results {\n right: auto;\n left: 26px;\n }\n\n .popover {\n li:last-child, li:first-child {\n .segmented a:first-child {\n border-radius: 0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0;\n }\n .segmented a:last-child {\n border-radius: var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius);\n }\n } \n }\n\n .list {\n .item-inner {\n .item-after .segmented {\n margin-left: 0px;\n margin-right: 10px;\n }\n }\n }\n\n .searchbar-inner__right .buttons-row a.next {\n margin-left: 0;\n margin-right: 15px;\n }\n\n .searchbar-inner__left {\n margin-right: 0;\n margin-left: 10px;\n }\n\n .navbar .searchbar-input-wrap {\n margin-left: 10px;\n margin-right: 0;\n }\n\n .comment-list .item-content .item-inner .comment-header {\n padding-left: 16px;\n }\n}\n\n[dir=\"rtl\"] {\n .comment-list .item-content .item-inner{\n padding-left: 0;\n .comment-header {\n .right {\n justify-content: space-between;\n .comment-resolve {\n margin-right: 0px;\n margin-left: 10px;\n }\n }\n\n .name {\n text-align: right;\n }\n }\n }\n\n .comment-quote {\n border-right: 1px solid var(--text-secondary);\n border-left: 0;\n padding-left: 16px;\n padding-right: 10px;\n }\n\n .comment-text, .reply-text {\n padding-right: 0;\n padding-left: 15px;\n }\n\n // .comment-list .item-content .item-inner .comment-header {\n // padding-left: 16px;\n // }\n\n #add-comment-dialog .dialog .dialog-inner .wrap-comment .name, #edit-comment-dialog .dialog .dialog-inner .wrap-comment .name, #add-reply-dialog .dialog .dialog-inner .wrap-comment .name, #edit-reply-dialog .dialog .dialog-inner .wrap-comment .name, #add-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date, #edit-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date, #add-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date, #edit-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date, #add-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date, #edit-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date, #add-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date, #edit-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date {\n text-align: right;\n }\n\n #view-comment-popover .page .page-content {\n padding: 16px 0 60px 16px;\n }\n\n .wrap-comment {\n padding: 16px 16px 0 24px;\n }\n\n .shapes {\n .thumb {\n transform: scaleX(-1);\n }\n }\n\n .settings-popup,\n #settings-popover{\n .link {\n display: inline;\n }\n }\n\n #edit-table-style {\n ul {\n padding-right: 0;\n }\n }\n\n .color-schemes-menu {\n .item-title{\n margin-right: 20px;\n }\n }\n\n .list [slot=\"root-start\"] {\n padding: 15px 15px 0 0px;\n }\n\n .numbers, .bullets, .multilevels {\n .item-content {\n padding-right: 0;\n }\n }\n\n .dataview .active::after {\n left: -5px;\n right: unset;\n }\n\n .popup .list .range-number, .popover .list .range-number, .sheet-modal .list .range-number {\n text-align: left;\n }\n\n .popup .list .inner-range-title, .popover .list .inner-range-title, .sheet-modal .list .inner-range-title {\n padding-left: 0;\n padding-right: 15px;\n }\n\n #color-picker .right-block {\n margin-left: 0px;\n margin-right: 20px;\n }\n\n .page-review .toolbar #btn-reject-change {\n margin-left: 0;\n margin-right: 20px;\n }\n\n .view .list li.no-indicator .item-link .item-inner {\n padding-right: 0;\n padding-left: 15px;\n }\n\n // Dialog with password\n .dialog .modal-password .modal-password__icon {\n right: auto;\n left: 4px;\n }\n}\n\n@media (max-width: 550px) {\n .device-ios[dir=rtl] .app-layout {\n .searchbar-expandable.searchbar-enabled .searchbar-inner__right {\n margin-right: 10px;\n margin-left: 0;\n }\n\n .navbar .searchbar-input-wrap {\n margin-left: 0;\n }\n }\n\n .device-android[dir=rtl] .app-layout {\n .searchbar-expandable.searchbar-enabled .searchbar-inner__left {\n margin-right: 0;\n margin-left: 33px;\n }\n }\n}\n","[dir=\"rtl\"] {\n // Common rtl-icons\n i.icon {\n &.icon-next, &.icon-prev, &.icon-text-align-right, &.icon-text-align-left, \n &.icon-table-add-column-left, &.icon-table-add-column-right, &.icon-table-remove-column, \n &.icon-table-borders-left, &.icon-table-borders-right, &.icon-numbers-3, &.icon-numbers-7 {\n transform: scaleX(-1);\n }\n\n &.icon-numbers-1 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-2 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-4 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-5 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-6 {\n .encoded-svg-background('');\n }\n }\n\n // [PE] rtl-icons \n i.icon {\n &.icon-align-left, &.icon-align-right {\n transform: scaleX(-1);\n }\n }\n\n // [SSE] rtl-icons\n\n i.icon {\n &.icon-text-orientation-horizontal {\n .encoded-svg-mask('');\n }\n\n &.icon-text-orientation-anglecount {\n .encoded-svg-mask('');\n }\n\n &.icon-text-orientation-angleclock {\n .encoded-svg-mask('');\n }\n }\n}","// Encoded SVG Background\n.encoded-svg-mask(@svg, @color: @brandColor) {\n @url: `encodeURIComponent(@{svg})`;\n background-color: @color;\n -webkit-mask-image: url(\"data:image/svg+xml;charset=utf-8,@{url}\");\n -webkit-mask-size: contain;\n -webkit-mask-repeat: round;\n}\n\n.encoded-svg-uncolored-mask(@svg) {\n @url: `encodeURIComponent(@{svg})`;\n -webkit-mask-image: url(\"data:image/svg+xml;charset=utf-8,@{url}\");\n}\n\n.encoded-svg-background(@svg) {\n @url: `encodeURIComponent(@{svg})`;\n background-image: url(\"data:image/svg+xml;charset=utf-8,@{url}\");\n}",".page.page-users {\n .block-title {\n text-transform: none;\n margin-top: 20px;\n margin-bottom: 20px;\n font-size: 17px;\n line-height: 17px;\n font-weight: normal;\n }\n .color {\n min-width: 40px;\n min-height: 40px;\n text-align: center;\n border-radius: 50px;\n line-height: 40px;\n color: @fill-white;\n font-size: 18px;\n }\n}","// @text-normal: #000;\n// @common-image-path - defined in webpack config\n\n.about {\n .page-content {\n text-align: center /*rtl:ignore*/;\n display: flex;\n flex-direction: column;\n }\n\n &_ios {\n padding-top: 120px;\n padding-bottom: 30px;\n }\n\n &_android {\n padding-top: 60px;\n padding-bottom: 16px;\n }\n\n &_tablet {\n padding-top: 12px;\n padding-bottom: 12px;\n } \n\n &__text {\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 16px;\n text-align: center;\n color: @text-normal;\n margin: 0;\n }\n\n a {\n color: @brandColor;\n }\n\n .logo-block {\n &__elem {\n display: flex;\n justify-content: center;\n img {\n max-width: 100%;\n height: auto;\n }\n }\n }\n\n &__logo {\n width: 100%;\n height: 80px;\n background: ~\"url(@{common-image-path}/about/logo-new.svg) no-repeat center\";\n }\n\n &__editor {\n flex-grow: 1;\n margin-top: 20px;\n }\n\n &__contacts {\n text-align: center;\n padding-left: 72px;\n padding-right: 72px;\n }\n\n &__licensor, &__customer {\n text-align: center;\n margin-top: 12px;\n }\n}\n\n.theme-type-dark {\n .about__logo {\n background: ~\"url(@{common-image-path}/about/logo-new-white.svg) no-repeat center\";\n }\n}","@import './about';\n\n@white: #ffffff;\n@black: #000000;\n@gray: #c4c4c4;\n@darkGray: #6d6d72;\n@green: #4cd964;\n@red: #f00;\n@autoColor: @black;\n\n.row {\n --f7-cols-per-row: 1;\n align-items: flex-start;\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n}\n\n.row + .row {\n margin-top: var(--f7-grid-row-gap);\n}\n\n.navbar.main-navbar {\n height: 0;\n\n &.navbar-with-logo {\n height: 26px;\n }\n\n .navbar-inner {\n display: flex;\n justify-content: center;\n padding: 0;\n }\n\n .navbar-bg {\n &:before, &:after {\n content: none;\n }\n }\n}\n\n.navbar-hidden {\n transform: translate3d(0, calc(-1 * (var(--f7-navbar-height) + var(--f7-subnavbar-height))), 0);\n}\n\n.navbar-hidden+.page>.page-content, .navbar-hidden+.page-content {\n padding-top: 0;\n}\n\n.page.editor>.page-content {\n transition: padding-top .3s ease-in;\n}\n\n.main-logo {\n max-width: 100%;\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n\n .custom-logo-image {\n max-height: 20px;\n height: auto;\n width: auto;\n }\n}\n\n.subnavbar {\n .subnavbar-inner {\n padding: 0;\n \n .title {\n white-space: nowrap;\n overflow: hidden;\n margin: 0;\n padding: 0;\n flex-shrink: initial;\n text-overflow: ellipsis;\n }\n }\n .icon-back {\n color: @toolbar-icons;\n }\n}\n\n.page.page-with-subnavbar {\n .page-content {\n --f7-page-subnavbar-offset: 0px;\n }\n &.page-with-logo .page-content {\n --f7-page-subnavbar-offset: 26px;\n }\n}\n\n.popup, .popover, .sheet-modal {\n .list {\n &:first-child {\n margin-top: 0;\n margin-bottom: 0;\n }\n .inner-range-title {\n color: @text-normal;\n padding: 15px 0 0 15px;\n }\n\n .range-number {\n color: @text-normal;\n min-width: 60px;\n text-align: right;\n }\n }\n .page-content {\n &.no-padding-top {\n padding-top: 0;\n }\n }\n}\n\n.sheet-modal.coauth__sheet {\n transition: all .3s;\n}\n\n.disabled, [disabled] {\n opacity: .55;\n pointer-events: none;\n}\n\n.text-content {\n padding: 14px 10px 0 10px;\n}\n\n.view .list {\n max-width: 100%;\n --menu-list-offset: 0px;\n\n ul {\n max-width: 100%;\n background: var(--f7-list-bg-color);\n }\n\n li.no-indicator {\n .item-link {\n .item-inner{\n padding-right: 15px;\n &:before {\n content: none;\n }\n }\n }\n }\n .item-text {\n text-overflow: initial;\n white-space: normal;\n height: auto;\n max-height: initial;\n -webkit-line-clamp: initial;\n }\n .font-item img {\n filter: var(--image-border-types-filter, none)\n }\n .buttons {\n .button.active {\n background-color: @button-active-opacity;\n }\n }\n .item-link .item-inner {\n width: 100%;\n }\n .item-inner {\n color: @text-normal;\n }\n}\n\n// Bullets, numbers and multilevels\n\n.bullets,\n.numbers,\n.multilevels {\n min-height: 160px;\n .row.list {\n margin: 0;\n ul {\n background: none;\n &:before, &:after {\n display: none;\n }\n display: grid;\n grid-template-columns: repeat(4, auto);\n justify-content: space-around;\n grid-gap: 10px;\n width: 100%;\n padding: 5px;\n li {\n width: 70px;\n height: 70px;\n border: 1px solid @gray;\n html.pixel-ratio-2 & {\n border: 0.5px solid @gray;\n }\n html.pixel-ratio-3 & {\n border: 0.33px solid @gray;\n }\n \n .thumb {\n width: 100%;\n height: 100%;\n background-color: @fill-white;\n background-size: cover;\n \n label {\n width: 100%;\n text-align: center;\n position: absolute;\n top: 34%;\n color: @fill-black;\n }\n }\n\n .item-number, .item-marker, .item-multilevellist {\n width: 68px;\n height: 68px;\n }\n }\n }\n }\n \n .row.list .item-content {\n padding-left: 0;\n padding-right: 0;\n min-height: 68px;\n .item-inner{\n padding: 0;\n &:after {\n display: none;\n }\n }\n }\n}\n\n.popover {\n .page .list:first-child:last-child {\n ul {\n border-radius: 0;\n background-color: var(--f7-list-bg-color);\n li:first-child, li:last-child {\n .item-link {\n border-radius: 0;\n }\n }\n }\n }\n}\n\n// .popover .list + .list {\n// margin-top: 0;\n// }\n\n.popover .list:first-child li:first-child, .popover .list:first-child li:first-child a, .popover .list:first-child li:first-child > label, .popover .list:last-child li:last-child, .popover .list:last-child li:last-child a, .popover .list:last-child li:last-child > label {\n border-radius: 0;\n}\n\n.shapes {\n li {\n width: 70px;\n height: 70px;\n margin: 0 1px;\n\n .thumb {\n width: 100%;\n height: 100%;\n background-color: @brandColor;\n }\n }\n}\n\n.chart-types {\n width: 100%;\n .row {\n padding: 0 10px;\n }\n li {\n width: 60px;\n height: 60px;\n margin: 6px;\n\n .thumb {\n width: 100%;\n height: 100%;\n background-size: contain;\n }\n }\n}\n\n.chart-styles {\n .row {\n li {\n margin: 0;\n padding: 1px;\n }\n img {\n width: 50px;\n height: 50px;\n }\n }\n}\n\n.segmented {\n .decrement, .increment {\n text-overflow: clip;\n }\n}\n\n.content-block {\n margin: 32px 0;\n padding: 0 16px;\n box-sizing: border-box;\n p {\n color: @text-normal;\n }\n}\n\n\n// Color Schemes\n\n.color-schemes-menu {\n cursor: pointer;\n display: block;\n // background-color: @white;\n .item-inner {\n justify-content: flex-start;\n }\n .color-schema-block {\n display: flex;\n }\n .color {\n min-width: 26px;\n min-height: 26px;\n margin: 0 2px 0 0;\n box-shadow: 0 0 0 1px rgba(0,0,0,.15) inset;\n }\n .item-title {\n margin-left: 20px;\n color: @text-normal;\n }\n}\n\n\n// Layout \n\n.slide-layout {\n &__list {\n margin: auto;\n }\n ul {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n &::before, &::after {\n display: none;\n }\n }\n li {\n position: relative;\n z-index: 1;\n margin-top: 12px;\n img {\n box-shadow: 0 0 0 1px rgba(0,0,0,.15);\n }\n }\n .item-inner {\n padding-top: 0;\n }\n .item-inner:after {\n display: none;\n }\n .item-inner:before {\n opacity: 0;\n content: '';\n position: absolute;\n width: 22px;\n height: 22px;\n right: 11px;\n bottom: 0;\n z-index: 1;\n background-repeat: no-repeat;\n .encoded-svg-mask('');\n }\n .active .item-inner:before {\n opacity: 1;\n }\n}\n\n// Transition \n\n.slide-transition {\n .splitter {\n display: flex;\n align-items: center;\n color: @black;\n label {\n margin: 0 5px;\n }\n }\n .buttons-row {\n display: flex;\n margin: 0;\n min-width: 90px;\n margin-left: 10px;\n .button {\n width: 100%;\n }\n .button:first-child {\n border-radius: 5px 0 0 5px;\n border-left-width: 1px;\n border-left-style: solid;\n }\n .button:last-child {\n border-radius: 0 5px 5px 0;\n }\n }\n}\n\n.style-effect, .style-type {\n .list .item-title {\n font-weight: normal; \n }\n}\n\n.range-slider-delay {\n width: 100%;\n margin: 4px 0 5px 0;\n appearance: none;\n background: linear-gradient(to right,#b7b8b7 0,#b7b8b7 100%);\n background-position: center;\n background-size: 100% 2px;\n background-repeat: no-repeat;\n outline: 0;\n border: none;\n box-sizing: content-box;\n &:disabled {\n opacity: .55;\n }\n &::-webkit-slider-thumb {\n appearance: none;\n height: 28px;\n width: 28px;\n border-radius: 50%;\n background: @white;\n cursor: pointer;\n box-shadow: 0 2px 4px rgba(0, 0, 0, .3);\n }\n &::-ms-thumb { \n appearance: none;\n height: 28px;\n width: 28px;\n border-radius: 50%;\n background: @white;\n cursor: pointer;\n box-shadow: 0 2px 4px rgba(0, 0, 0, .3);\n }\n}\n\n.buttons-list {\n ul {\n // &::before, &::after {\n // display: none;\n // }\n li {\n border: 0;\n font-weight: normal;\n .item-link {\n height: 100%;\n .item-content {\n min-height: initial;\n height: 100%;\n padding: 0;\n }\n .item-inner {\n justify-content: center;\n align-items: center;\n padding: 0;\n min-height: initial;\n &::before {\n display: none;\n }\n }\n }\n }\n }\n}\n\n.item-color-auto {\n .color-auto {\n width: 22px;\n height: 22px;\n background-color: @autoColor;\n }\n &.active {\n .color-auto {\n box-shadow: 0 0 0 1px @white, 0 0 0 4px @brandColor;\n border-radius: 1px;\n }\n }\n}\n\n.page {\n .color-palettes {\n .list {\n ul {\n .palette {\n padding: 8px 0px;\n a {\n flex-grow: 1;\n position: relative;\n min-width: 10px;\n min-height: 26px;\n margin: 1px 1px 0 0;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset;\n border-radius: 0;\n &.active:after {\n content: ' ';\n position: absolute;\n width: 100%;\n height: 100%;\n box-shadow: 0 0 0 1px @white, 0 0 0 4px @brandColor;\n z-index: 1;\n border-radius: 1px;\n }\n &.transparent {\n background-repeat: no-repeat;\n background-size: 100% 100%;\n .encoded-svg-background(\"\");\n }\n } \n }\n }\n }\n .row {\n padding: 0;\n }\n .list .item-inner {\n display: block;\n color: var(--text-normal);\n }\n .standart-colors, .dynamic-colors {\n .palette {\n display: flex;\n }\n }\n\n .dynamic-colors {\n .empty-color {\n background-color: @white;\n }\n }\n }\n}\n\n#color-picker {\n display: flex;\n justify-content: space-around;\n align-items: center;\n max-width: 300px;\n margin: 0 auto;\n margin-top: 4px;\n .color-picker-container {\n width: calc(100% - 94px);\n position: relative;\n max-width: 100%;\n height: auto;\n font-size: 0;\n .color-picker-module-wheel {\n margin: 0;\n }\n }\n .right-block {\n margin-left: 20px;\n .color-hsb-preview {\n width: 72px;\n height: 72px;\n overflow: hidden;\n border: 1px solid @gray;\n border-radius: 100px;\n .new-color-hsb-preview, .current-color-hsb-preview {\n height: 36px;\n }\n .new-color-hsb-preview {\n border-radius: 100px 100px 0 0;\n }\n .current-color-hsb-preview {\n border-radius: 0 0 100px 100px;\n }\n }\n .button-round {\n height: 72px;\n width: 72px;\n padding: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 100px;\n background-color: @fill-white;\n box-shadow: 0 4px 4px rgba(0,0,0,.25);\n // border-color: transparent;\n border: 0;\n margin-top: 20px;\n }\n }\n}\n\n// Table styles\n\n.table-styles {\n width: 100%;\n .row {\n &, li {\n margin-bottom: 12px;\n }\n li, div {\n box-shadow: 0 0 0 1px @gray;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n }\n\n li,\n .row div {\n margin: 0;\n padding: 1px;\n\n img {\n width: 70px;\n height: 50px;\n }\n }\n}\n\n#edit-table-style {\n .list ul ul {\n padding-left: 0;\n }\n}\n\n// input[type=\"number\"]\ninput[type=\"number\"]::-webkit-outer-spin-button,\ninput[type=\"number\"]::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n// Regional Settings\n.icon.lang-flag {\n background-size: 48px auto;\n background-image: ~'url(@{common-image-path}/controls/flags@2x.png)';\n}\n\n.icon.lang-flag {\n width: 16px;\n height: 12px;\n}\n\n.lang-flag.ca,\n.lang-flag.ca-ES {\n background-position: 0 0;\n}\n.lang-flag.cs,\n.lang-flag.cs-CZ {\n background-position: -16px 0;\n}\n.lang-flag.da,\n.lang-flag.da-DK {\n background-position: -32px 0;\n}\n.lang-flag.de,\n.lang-flag.de-DE {\n background-position: 0 -12px;\n}\n.lang-flag.el,\n.lang-flag.el-GR {\n background-position: -16px -12px;\n}\n.lang-flag.en,\n.lang-flag.en-US {\n background-position: -32px -12px;\n}\n.lang-flag.fr,\n.lang-flag.fr-FR {\n background-position: 0 -24px;\n}\n.lang-flag.hu,\n.lang-flag.hu-HU {\n background-position: -16px -24px;\n}\n.lang-flag.it,\n.lang-flag.it-IT {\n background-position: -32px -24px;\n}\n.lang-flag.ko,\n.lang-flag.ko-KR {\n background-position: 0 -36px;\n}\n.lang-flag.nl,\n.lang-flag.nl-NL {\n background-position: -16px -36px;\n}\n.lang-flag.nb,\n.lang-flag.nb-NO,\n.lang-flag.nn,\n.lang-flag.nn-NO {\n background-position: -32px -36px;\n}\n.lang-flag.pl,\n.lang-flag.pl-PL {\n background-position: 0 -48px;\n}\n.lang-flag.pt,\n.lang-flag.pt-BR {\n background-position: -16px -48px;\n}\n.lang-flag.ro,\n.lang-flag.ro-RO {\n background-position: -32px -48px;\n}\n.lang-flag.ru,\n.lang-flag.ru-RU {\n background-position: 0 -60px;\n}\n.lang-flag.sv,\n.lang-flag.sv-SE {\n background-position: -32px -60px;\n}\n.lang-flag.tr,\n.lang-flag.tr-TR {\n background-position: 0 -72px;\n}\n.lang-flag.uk,\n.lang-flag.uk-UA {\n background-position: -16px -72px;\n}\n.lang-flag.lv,\n.lang-flag.lv-LV {\n background-position: -32px -72px;\n}\n.lang-flag.lt,\n.lang-flag.lt-LT {\n background-position: 0 -84px;\n}\n.lang-flag.vi,\n.lang-flag.vi-VN {\n background-position: -16px -84px;\n}\n.lang-flag.de-CH,\n.lang-flag.fr-CH,\n.lang-flag.it-CH {\n background-position: -32px -84px;\n}\n.lang-flag.pt-PT {\n background-position: -16px -96px;\n}\n.lang-flag.de-AT {\n background-position: -32px -96px;\n}\n.lang-flag.es,\n.lang-flag.es-ES {\n background-position: 0 -108px;\n}\n.lang-flag.en-GB {\n background-position: -32px -108px;\n}\n.lang-flag.en-AU {\n background-position: 0 -120px;\n}\n.lang-flag.az-Latn-AZ {\n background-position: -16px -120px;\n}\n.lang-flag.id,\n.lang-flag.id-ID,\n.lang-flag.en-ID {\n background-position: -32px -120px;\n}\n.lang-flag.bg,\n.lang-flag.bg-BG {\n background-position: 0 -132px;\n}\n.lang-flag.ca-ES-valencia {\n background-position: -16px -132px;\n}\n.lang-flag.en-CA {\n background-position: -32px -132px;\n}\n.lang-flag.en-ZA {\n background-position: 0 -144px;\n}\n.lang-flag.eu,\n.lang-flag.eu-ES {\n background-position: -16px -144px;\n}\n.lang-flag.gl,\n.lang-flag.gl-ES {\n background-position: -32px -144px;\n}\n.lang-flag.hr,\n.lang-flag.hr-HR {\n background-position: 0 -156px;\n}\n.lang-flag.lb,\n.lang-flag.lb-LU {\n background-position: -16px -156px;\n}\n.lang-flag.mn,\n.lang-flag.mn-MN {\n background-position: -32px -156px;\n}\n.lang-flag.sl,\n.lang-flag.sl-SI {\n background-position: 0 -168px;\n}\n.lang-flag.sr,\n.lang-flag.sr-Cyrl-RS,\n.lang-flag.sr-Latn-RS {\n background-position: -16px -168px;\n}\n.lang-flag.sk,\n.lang-flag.sk-SK {\n background-position: -32px -168px;\n}\n.lang-flag.kk,\n.lang-flag.kk-KZ {\n background-position: 0 -180px;\n}\n.lang-flag.fi,\n.lang-flag.fi-FI,\n.lang-flag.sv-FI {\n background-position: -16px -180px;\n}\n.lang-flag.zh,\n.lang-flag.zh-CN {\n background-position: -32px -180px;\n}\n.lang-flag.ja,\n.lang-flag.ja-JP {\n background-position: 0 -192px;\n}\n.lang-flag.es-MX {\n background-position: -16px -192px;\n}\n\n.checkbox-in-modal {\n margin-top: 10px;\n display: flex;\n align-items: center;\n .right-text {\n margin-left: 10px;\n }\n}\n\n.username-tip {\n height: 20px;\n color: @white;\n padding: 0 10px;\n position: absolute;\n z-index: 900;\n display: none;\n pointer-events: none;\n transition: opacity 0.1ms ease-out;\n opacity: 0;\n &.active {\n display: block;\n opacity: 1;\n }\n}\n\n.dlg-adv-options {\n z-index: 13700;\n .content-block {\n padding: 0;\n }\n .picker-3d { \n .picker-item {\n padding: 0;\n text-align: left;\n font-size: 16px;\n }\n }\n .picker-center-highlight {\n width: 100%;\n left: 0;\n right: 0;\n }\n}\n\n.dlg-macros-request {\n .dialog-text {\n word-break: break-word;\n }\n}\n// Skeleton of document\n\n@keyframes flickerAnimation {\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n@-o-keyframes flickerAnimation{\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n@-moz-keyframes flickerAnimation{\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n@-webkit-keyframes flickerAnimation{\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n\n.doc-placeholder-container {\n position: absolute;\n width: 100%;\n height: 100%;\n z-index: 6000;\n top: 0;\n left: 0;\n overflow: hidden;\n}\n\n// Statusbar\n\n.statusbar .statusbar--box-tabs > ul > .locked a {\n box-shadow: inset 0 2px red;\n}\n\n// Fonts List \n\n.font-item {\n .item-inner {\n overflow: hidden;\n &:after {\n left: 16px;\n }\n }\n}\n\n// Functions List \n\n.cell-editor {\n overflow: initial;\n}\n\n.functions-list {\n max-height: 200px;\n width: 360px;\n overflow-y: auto;\n overflow-x: hidden;\n background-color: @background-primary;\n &__mobile {\n position: absolute;\n right: 0;\n left: 0;\n width: 100%;\n box-shadow: 0px 10px 10px -10px rgba(0, 0, 0, 0.3);\n .list {\n margin: 0;\n ul:before {\n display: none;\n }\n .item-content {\n padding-left: 0;\n }\n .item-inner {\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left) - var(--menu-list-offset));\n }\n .item-title {\n font-size: 15px;\n }\n }\n }\n}\n\n// Function List Popover\n\n#idx-functions-list {\n width: 350px;\n .popover-inner {\n .navbars {\n .right .link {\n font-weight: 600;\n }\n .navbar-bg {\n background: @background-secondary;\n &::after {\n background: @background-menu-divider;\n }\n }\n }\n .page-function-info{\n .navbar {\n .navbar-bg::after {\n background: @background-menu-divider;\n }\n .navbar-inner{\n background: @background-secondary;\n .title {\n color: @text-normal;\n }\n .right .link {\n color: @brandColor;\n font-weight: 600;\n }\n .icon-back::after {\n color: @brandColor;\n }\n }\n }\n }\n }\n}\n\n// Highlight Colors\n\n.highlight-palette {\n width: 100%;\n}\n\n.highlight-color {\n min-width: 10px;\n min-height: 34px;\n margin: 1px;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset;\n position: relative;\n flex-grow: 1;\n &_active:after {\n content: ' ';\n position: absolute;\n width: 100%;\n height: 100%;\n box-shadow: 0 0 0 1px #ffffff, 0 0 0 4px #446995;\n z-index: 1;\n border-radius: 1px;\n }\n}\n#idx-celleditor.expanded {\n .functions-list {\n &__mobile {\n top: 70px;\n }\n }\n}\n\n.popover__functions {\n box-shadow: 0px 10px 100px rgba(0, 0, 0, 0.3);\n .view {\n transition: .2s height;\n }\n .popover-angle.on-bottom {\n display: none;\n }\n}\n\n.target-function-list {\n position: absolute; \n left: 0;\n top: 0;\n bottom: 0;\n width: 0; \n height: 100%;\n}\n\n.dropdown-list-popup {\n height: 260px;\n bottom: 0;\n top: auto;\n}\n\n.dropdown-list {\n &__placeholder {\n opacity: 0.6;\n .item-inner {\n border-bottom: 1px solid var(--f7-list-item-border-color);\n }\n }\n}\n\n// Swiper\n.swiper-wrapper .swiper-slide .list ul {\n background-color: transparent;\n}\n\n.swiper-pagination-bullet {\n background: @background-menu-divider;\n opacity: 1;\n &-active {\n background: @text-secondary;\n }\n}\n\n.swiper-pagination-bullets {\n position: fixed;\n width: 100%;\n bottom: 9px;\n .swiper-pagination-bullet {\n margin: 0 5.5px;\n }\n}\n\n.preview-cell-style {\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n width: 104px;\n height: 44px;\n background-color: @fill-white;\n border-radius: 4px;\n border: 0.5px solid @background-menu-divider;\n}\n\n// Sharing Settings\n.sharing-placeholder {\n height: 100%;\n}\n\n// Comment List\n.sheet-modal .page-current-comment {\n padding-bottom: 60px;\n}\n\n// Picker\n.picker-columns {\n justify-content: space-around;\n}\n\n.row-picker {\n .col-50 {\n color: @text-secondary;\n text-align: center;\n }\n}\n\n// Block \n.block {\n margin-top: 8px;\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 16px;\n}\n\n// Inputs List \n.block-title + .list, .block-title + .block, .block-title + .card, .block-title + .timeline, .block-title + .block-header {\n margin: 0;\n}\n\n.inputs-list {\n margin-bottom: 0;\n\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n position: relative;\n background: var(--f7-list-bg-color);\n }\n}\n\n.list input[type='password'], \n.list input[type='text'] {\n background: transparent;\n}\n\n// Dialog with password\n.dialog {\n .modal-password {\n position: relative;\n\n &__icon {\n position: absolute;\n right: 4px;\n top: calc(50% - 12.5px);\n }\n\n .item-input-wrap {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n }\n}\n\n// Version History \n.version-history { \n &__user {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n min-width: 40px;\n min-height: 40px;\n text-align: center;\n border-radius: 50px;\n line-height: 40px;\n color: var(--fill-white);\n font-size: 18px;\n }\n}\n\n// Review change\n.accept-reject .link {\n margin-right: 20px;\n}\n\n// Beta badge\n.beta-badge {\n font-size: 12px;\n font-weight: 400;\n line-height: 16px;\n letter-spacing: 0.5px;\n color: @fill-white;\n padding: 2px 4px;\n border-radius: 4px;\n}\n\n// Close editor button\n.close-editor-btn {\n .item-inner {\n padding-left: 36px;\n }\n\n .item-title {\n color: @text-error;\n }\n}\n\n\n\n\n\n\n\n","\n.device-ios .app-layout {\n @blockTitleColor: #6d6d72;\n @item-border-color: #c8c7cc;\n @darkGreen: #40865c;\n @text-normal: var(--text-normal);\n @background-warning: #FF9F0A;\n\n --f7-navbar-link-color: @brandColor;\n --f7-subnavbar-link-color: @brandColor;\n --f7-navbar-text-color: @text-normal;\n --f7-navbar-title-line-height: 44px;\n --f7-navbar-link-line-height: 44px;\n --f7-navbar-title-font-size: 17px;\n\n --f7-list-bg-color: @background-primary;\n --f7-navbar-bg-color: @toolbar-background;\n\n --f7-tabbar-link-inactive-color: @toolbar-segment;\n\n --f7-radio-active-color: @brandColor;\n --f7-toggle-active-color: @brandColor;\n --f7-range-bar-active-bg-color: @brandColor;\n\n --f7-list-button-text-color: @brandColor;\n\n --f7-list-item-border-color: @background-menu-divider;\n\n --f7-page-bg-color: @background-tertiary;\n --f7-list-item-title-text-color: @text-normal;\n --f7-list-item-text-text-color: @text-normal;\n --f7-list-item-subtitle-text-color: @text-secondary;\n --f7-label-text-color: @text-normal;\n --f7-list-item-after-text-color: @text-normal;\n --f7-input-text-color: @text-normal;\n --f7-block-title-text-color: @text-secondary;\n --f7-input-placeholder-color: @text-secondary;\n\n --f7-list-chevron-icon-color: @text-tertiary;\n --f7-searchbar-search-icon-color: @text-tertiary;\n --f7-searchbar-input-clear-button-color: @text-tertiary;\n\n --f7-toggle-inactive-border-color: @background-menu-divider;\n --f7-toggle-inactive-bg-color: @background-menu-divider;\n\n --f7-actions-button-border-color: @background-menu-divider;\n --f7-popover-bg-color: @background-primary;\n --f7-dialog-bg-color-rgb: @background-secondary;\n --f7-dialog-title-text-color: @text-normal;\n --f7-dialog-text-color: @text-normal;\n --f7-dialog-button-text-color: @brandColor;\n --f7-dialog-border-divider-color: @background-menu-divider;\n\n --f7-subnavbar-border-color: @background-menu-divider;\n --f7-list-border-color: @background-menu-divider;\n\n --f7-picker-item-text-color: rgba(var(--text-normal), 0.45);\n --f7-picker-item-selected-text-color: @text-normal;\n\n --f7-block-text-color: @text-secondary;\n\n --f7-theme-color-shade: @background-primary;\n --f7-fab-pressed-bg-color: @background-primary;\n --f7-input-clear-button-color: @text-tertiary;\n\n // Main Toolbar\n #editor-navbar.navbar .right a + a,\n #editor-navbar.navbar .left a + a {\n margin-left: 0;\n }\n\n .navbar, .navbar-bg, .subnavbar {\n background-color: var(--f7-navbar-bg-color);\n\n a.btn-doc-back {\n width: 22px;\n }\n\n .title {\n color: @text-normal;\n }\n\n .navbar-inner, .subnavbar-inner {\n z-index: auto;\n }\n \n .sheet-close {\n width: 44px;\n height: 44px;\n display: flex;\n justify-content: center;\n }\n }\n\n .subnavbar {\n .icon-back {\n color: @brandColor;\n }\n\n .title {\n font-size: 15px;\n font-weight: normal;\n }\n }\n\n .popover__titled {\n .list {\n &:first-child, &:last-child {\n ul {\n border-radius: 0;\n }\n\n li:first-child, li:last-child {\n > label {\n border-radius: 0;\n }\n }\n }\n }\n\n .popover-inner {\n //border-radius: var(--f7-popover-border-radius);\n\n > .view {\n border-radius: var(--f7-popover-border-radius);\n }\n }\n\n .navbar-bg {\n //-webkit-backdrop-filter: none;\n backdrop-filter: none;\n &::after {\n background: @background-menu-divider;\n }\n }\n\n // .list:first-child {\n // li:first-child {\n // a {\n // border-radius: 0;\n // }\n // }\n // }\n\n .list:last-child {\n li:last-child {\n &:after {\n content: '';\n position: absolute;\n background-color: var(--f7-navbar-border-color, var(--f7-bars-border-color));\n display: block;\n //z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n }\n }\n }\n }\n\n .popover {\n li:last-child {\n .segmented a {\n &:first-child {\n border-radius: var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius);\n }\n\n &:last-child {\n border-radius: 0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0;\n }\n }\n }\n\n .page-content {\n > .list {\n &:last-child {\n // margin-bottom: 30px;\n }\n }\n }\n }\n\n .list {\n .item-content {\n .color-preview {\n width: 22px;\n height: 8px;\n display: inline-block;\n margin-top: 21px;\n box-sizing: border-box;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset;\n background: @fill-white;\n }\n .item-after {\n .color-preview {\n width: 75px;\n height: 30px;\n margin-top: -3px;\n }\n }\n }\n .item-inner {\n padding-top: 7px;\n .item-after {\n .after-start {\n margin: 0 5px;\n }\n .segmented {\n min-width: 90px;\n margin-left: 10px;\n }\n }\n }\n .buttons {\n .item-inner {\n padding-top: 0;\n padding-bottom: 0;\n align-items: stretch;\n > .row {\n width: 100%;\n align-items: stretch;\n .button {\n flex: 1;\n border: none;\n height: inherit;\n border-radius: 0;\n font-size: 17px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n }\n }\n }\n .list-input-right input {\n text-align: right;\n }\n }\n\n .links-list a:after, .list .item-inner:after, .simple-list li:after {\n background-color: var(--f7-list-item-border-color);\n bottom: 0;\n content: \"\";\n display: block;\n height: 1px;\n left: 0;\n position: absolute;\n right: auto;\n top: auto;\n transform: scaleY(calc(1/var(--f7-device-pixel-ratio)));\n transform-origin: 50% 100%;\n width: 100%;\n z-index: 15;\n }\n\n .tab-buttons {\n width: 100%;\n display: flex;\n flex-wrap: nowrap;\n align-self: center;\n .tab-link {\n display: block;\n width: 100%;\n line-height: 26px;\n position: relative;\n overflow: hidden;\n -webkit-box-flex: 1;\n border: 1px solid @toolbar-segment;\n text-decoration: none;\n text-align: center;\n margin: 0;\n padding: 0 1px;\n height: 29px;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n font-family: inherit;\n cursor: pointer;\n outline: 0;\n font-weight: 600;\n color: @brandColor;\n &:first-child {\n border-radius: 5px 0 0 5px;\n border-left-width: 1px;\n border-left-style: solid;\n }\n &:last-child {\n border-radius: 0 5px 5px 0;\n }\n &.tab-link-active {\n // background: @brandColor;\n // color: @fill-white;\n background: @toolbar-segment;\n color: @brand-text-on-brand;\n i.icon {\n background-color: @brand-text-on-brand;\n }\n }\n }\n }\n\n .button {\n border: 1px solid @brandColor;\n color: @brandColor;\n text-decoration: none;\n text-align: center;\n display: block;\n // border-radius: 5px;\n line-height: 27px;\n box-sizing: border-box;\n background: 0 0;\n padding: 0 10px;\n margin: 0;\n height: 29px;\n white-space: nowrap;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 14px;\n font-family: inherit;\n cursor: pointer;\n outline: 0;\n }\n\n .button-fill {\n color: @brandColor;\n background-color: @background-primary;\n }\n\n .button-red {\n color: @text-error;\n background-color: @background-primary;\n }\n\n .buttons-list {\n li {\n border: 0;\n border-radius: 0;\n height: 43px;\n min-height: 43px;\n font-size: 17px;\n text-transform: initial;\n padding: 0;\n box-shadow: none;\n }\n }\n\n .button-red .list-button {\n color: @text-error;\n }\n\n .list-button {\n position: initial;\n }\n\n .block-title {\n position: relative;\n overflow: hidden;\n margin: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n text-transform: uppercase;\n line-height: 1;\n color: @blockTitleColor;\n margin: 35px 15px 10px;\n }\n\n .shapes {\n .page-content {\n background: @fill-white;\n }\n }\n\n .dialog {\n background-color: var(--f7-dialog-bg-color-rgb);\n }\n\n #color-picker {\n .right-block {\n .button-round {\n .icon {\n height: 30px;\n width: 30px;\n }\n }\n }\n }\n\n .content-block {\n color: @blockTitleColor;\n }\n\n .dataview, #add-table, #add-shape, #add-slide, #add-chart {\n &.page-content, .page-content {\n background-color: @background-tertiary;\n }\n }\n\n // input[type=\"number\"]\n\n input[type=\"number\"] {\n &::placeholder,\n &::-webkit-input-placeholder,\n &::-moz-placeholder,\n &:-moz-placeholder,\n &:-ms-input-placeholder\n {\n color: @darkGreen;\n }\n }\n\n // Regional Settings\n\n .regional-settings {\n .item-title-row {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n .item-title {\n margin-left: 20px;\n white-space: normal;\n }\n }\n }\n\n // Find and Replace \n\n .navbar {\n .searchbar {\n background: var(--f7-navbar-bg-color);\n }\n .searchbar-input-wrap {\n position: relative;\n margin-right: 10px;\n height: 28px;\n }\n .buttons-row-replace a {\n color: @brandColor;\n }\n }\n\n .searchbar {\n input {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n display: block;\n border: none;\n appearance: none;\n border-radius: 5px;\n font-family: inherit;\n color: @text-normal;\n font-size: 14px;\n font-weight: 400;\n padding: 0 8px;\n background-color: @background-button;\n padding: 0 36px 0 28px;\n\n &::placeholder {\n color: @text-tertiary;\n }\n }\n\n .number-search-results {\n position: absolute;\n font-size: 13px;\n font-weight: 400;\n line-height: 18px;\n right: 26px;\n color: @text-tertiary;\n top: 4.5px;\n z-index: 100;\n }\n }\n\n .searchbar-inner {\n &__left {\n margin-right: 10px;\n justify-content: center;\n }\n &__right {\n .buttons-row a.next {\n margin-left: 15px;\n }\n }\n }\n\n .searchbar-expandable.searchbar-enabled {\n &.replace {\n .searchbar-inner {\n &__right {\n width: 28%;\n }\n }\n }\n } \n\n @media(max-width: 550px) {\n .navbar {\n .searchbar-input-wrap {\n margin-right: 0; \n }\n }\n .searchbar-expandable.searchbar-enabled {\n top: 0;\n .searchbar-inner {\n &__center {\n flex-direction: column;\n }\n &__right {\n flex-direction: column-reverse;\n margin-left: 10px;\n }\n }\n &.replace {\n height: 88px;\n .searchbar-inner {\n height: 100%;\n &__center {\n .searchbar-input-wrap {\n margin: 8px 0;\n }\n }\n &__right {\n width: auto;\n height: 100%;\n justify-content: space-between;\n .buttons-row-replace {\n height: 50%;\n }\n }\n }\n }\n } \n }\n\n .actions-button {\n background: @background-secondary;\n --f7-actions-button-border-color: @background-menu-divider;\n }\n \n .actions-button-text {\n // height: 57px;\n // line-height: 57px;\n font-size: 20px;\n color: @text-normal;\n white-space: normal;\n text-overflow: ellipsis;\n }\n\n input.modal-text-input {\n box-sizing: border-box;\n height: 26px;\n background: @background-primary;\n margin: 0;\n margin-top: 15px;\n padding: 0 5px;\n border: 1px solid @text-tertiary;\n border-radius: 0;\n width: 100%;\n font-size: 14px;\n font-family: inherit;\n display: block;\n box-shadow: 0 0 0 transparent;\n -webkit-appearance: none;\n -moz-appearance: none;\n -ms-appearance: none;\n appearance: none;\n }\n\n // Fonts List \n\n .font-item {\n .item-content {\n padding-left: 0;\n }\n }\n\n // Toggle Icon \n\n // .toggle-icon {\n // background: transparent;\n // }\n\n // Edit Comment Popup\n\n .edit-comment-popup {\n .navbar .title {\n line-height: normal;\n }\n }\n\n // Version History\n .version-history {\n &__title {\n font-style: normal;\n font-weight: 400;\n font-size: 13px;\n line-height: 18px;\n color: @text-secondary;\n margin-top: 16px;\n margin-bottom: 4px;\n }\n\n &__btn {\n font-style: normal;\n font-weight: 600;\n font-size: 15px;\n line-height: 20px;\n letter-spacing: -0.24px;\n text-transform: uppercase;\n color: @brandColor;\n background: transparent;\n outline: none;\n border: 0;\n padding: 0;\n margin-top: 22px;\n width: auto;\n }\n\n &__list {\n ul {\n background: @background-primary;\n }\n \n .item-title {\n font-weight: 600;\n font-size: 13px;\n line-height: 18px;\n color: @text-normal;\n letter-spacing: -0.08px;\n }\n\n .item-media, .item-inner {\n padding-top: 10px;\n padding-bottom: 10px;\n }\n\n .item-link .item-title-row:before {\n display: none;\n }\n\n .item-subtitle {\n font-style: normal;\n font-weight: 400;\n font-size: 11px;\n line-height: 13px;\n color: @text-secondary;\n margin-top: 3px;\n letter-spacing: 0.06px;\n }\n }\n }\n\n .version-history__item_active {\n background-color: var(--canvas-ruler-margins-background);\n }\n\n .btn-close-history {\n font-style: normal;\n font-weight: 400;\n font-size: 17px;\n line-height: 22px;\n letter-spacing: -0.41px;\n color: @brandColor;\n margin-left: 10px;\n }\n\n .beta-badge {\n background-color: @background-warning;\n margin-left: 10px;\n }\n}\n\n\n","\n.device-android .app-layout {\n @tabLinkColor: rgba(255,255,255,.7);\n @red: #f44336;\n @white: #fff;\n @darkGreen: #40865c;\n @darkGrey: #757575;\n @text-normal: var(--text-normal);\n @brand-text-on-brand: var(--brand-text-on-brand);\n @touchColor: rgba(255,255,255,0.1);\n\n --f7-navbar-shadow-image: none;\n --f7-theme-color: @brandColor;\n\n --f7-navbar-bg-color: @toolbar-background;\n --f7-navbar-link-color: @fill-white;\n --f7-navbar-text-color: @fill-white;\n --f7-navbar-height: 56px;\n\n --f7-list-bg-color: @background-primary;\n --f7-subnavbar-bg-color: @toolbar-background;\n --f7-subnavbar-link-color: @toolbar-icons;\n --f7-subnavbar-text-color: @fill-white;\n --f7-subnavbar-height: 56px;\n\n --f7-radio-active-color: @brandColor;\n --f7-range-bar-active-bg-color: @brandColor;\n --f7-range-knob-color: @brandColor;\n --f7-range-knob-size: 16px;\n\n --f7-list-item-after-text-color: @text-normal;\n\n --f7-link-highlight-color: transparent;\n --f7-link-touch-ripple-color: @touchColor;\n\n --f7-actions-bg-color: @background-secondary;\n --f7-actions-button-border-color: @background-menu-divider;\n --f7-popover-bg-color: @background-secondary;\n\n --f7-dialog-bg-color: @background-secondary;\n --f7-dialog-text-color: @text-secondary;\n --f7-dialog-title-text-color: @text-normal;\n --f7-dialog-button-text-color: @brandColor;\n\n --f7-picker-item-text-color: rgba(var(--text-normal), 0.45);\n --f7-picker-item-selected-text-color: @text-normal;\n\n --f7-input-bg-color: @background-primary;\n --f7-input-placeholder-color: @text-secondary;\n --f7-input-text-color: @text-normal;\n \n --f7-block-text-color: @text-secondary;\n --f7-dialog-border-radius: 0;\n --f7-sheet-border-radius: 0;\n --f7-popover-border-radius: 4px;\n --f7-actions-border-radius: 0;\n --f7-box-shadow: 0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);\n --f7-popover-box-shadow: var(--f7-box-shadow);\n\n --f7-toggle-active-bg-color: @brandColor;\n --f7-toggle-active-border-color: @brandColor;\n\n --f7-navbar-title-margin-left: 20px;\n --f7-navbar-title-margin-right: 20px;\n\n .button {\n --f7-touch-ripple-color: transparent;\n }\n\n .segmented {\n .button {\n --f7-touch-ripple-color: var(--f7-list-link-pressed-bg-color);\n }\n }\n\n --f7-input-focused-border-color: @brandColor;\n --f7-label-focused-text-color: @brandColor;\n\n .navbar {\n --f7-touch-ripple-color: @touchColor;\n\n .sheet-close {\n width: 56px;\n height: 56px;\n display: flex;\n justify-content: center;\n }\n &-inner {\n background: var(--f7-navbar-bg-color);\n background-image: var(--f7-navbar-bg-image, var(--f7-bars-bg-image));\n background-color: var(--f7-navbar-bg-color, var(--f7-bars-bg-color));\n }\n }\n\n .page.page-with-subnavbar.page-with-logo {\n .page-content {\n --f7-page-navbar-offset: var(--f7-navbar-height);\n }\n }\n\n .page {\n --f7-text-color: @text-normal;\n --f7-list-item-title-text-color: @text-normal;\n --f7-list-item-text-text-color: @text-normal;\n --f7-list-item-subtitle-text-color: @text-secondary;\n --f7-block-title-text-color: @text-secondary;\n --f7-label-text-color: @text-normal;\n --f7-page-bg-color: @background-tertiary;\n --f7-list-item-border-color: @background-menu-divider;\n --f7-list-chevron-icon-color: @text-tertiary;\n --f7-actions-button-text-color: @text-normal;\n --f7-subnavbar-border-color: @background-menu-divider;\n --f7-list-border-color: @background-menu-divider;\n }\n\n .add-popup {\n .view {\n .add-image, .inputs-list {\n ul:after {\n display: none;\n }\n }\n }\n }\n\n .coauth__sheet {\n max-height: 65%;\n }\n\n // Buttons\n .segmented {\n .decrement, .increment {\n display: flex;\n border: none;\n min-width: 40px;\n margin-left: 0;\n border-radius: 0;\n height: 32px;\n i.icon-expand-down {\n background: @brandColor;\n }\n }\n label {\n color: @text-normal;\n margin: 0 5px;\n line-height: 32px;\n }\n }\n .button {\n --f7-button-text-color: @brandColor;\n color: @brandColor;\n text-align: center;\n display: block;\n border-radius: 2px;\n line-height: 36px;\n box-sizing: border-box;\n appearance: none;\n background: 0 0;\n margin: 0;\n height: 36px;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n text-transform: uppercase;\n font-family: inherit;\n cursor: pointer;\n min-width: 64px;\n padding: 0 8px;\n position: relative;\n overflow: hidden;\n outline: 0;\n -webkit-transition-duration: .3s;\n transition-duration: .3s;\n -webkit-transform: translate3d(0,0,0);\n transform: translate3d(0,0,0);\n }\n\n .button-fill {\n color: @brand-text-on-brand;\n background-color: transparent;\n }\n\n .button-raised {\n box-shadow: 0 1px 3px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.24);\n }\n\n .button-red {\n color: @brand-text-on-brand;\n background-color: @text-error;\n }\n\n .buttons-list {\n ul {\n background-color: @background-tertiary;\n &::before, &::after {\n display: none;\n }\n li {\n margin: 20px 16px;\n color: @fill-white;\n border-radius: 2px;\n text-transform: uppercase;\n height: 36px;\n min-height: 36px;\n font-size: 14px;\n }\n }\n }\n\n .table-presets {\n .button {\n min-width: 0;\n }\n }\n .button-fill .list-button {\n background-color: @brandColor;\n color: @brand-text-on-brand;\n height: 36px;\n text-align: center;\n line-height: 36px;\n text-transform: uppercase;\n font-size: 14px;\n font-weight: 500;\n border-radius: 2px;\n // margin: 20px 16px;\n margin: 0;\n }\n .button-raised .list-button {\n box-shadow: 0 1px 3px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.24);\n }\n .button-red .list-button {\n background-color: @text-error;\n }\n // Tabs\n .tab-buttons {\n position: relative;\n display: flex;\n height: 100%;\n width: 100%;\n justify-content: space-between;\n .tab-link {\n justify-content: center;\n height: 100%;\n box-sizing: border-box;\n padding-left: 0;\n padding-right: 0;\n font-size: 14px;\n font-weight: 500;\n text-transform: uppercase;\n align-items: center;\n color: @tabLinkColor;\n i.icon {\n opacity: 0.5;\n }\n &.tab-link-active {\n color: @fill-white;\n i.icon {\n opacity: 1;\n background-color: @fill-white;\n }\n }\n }\n .tab-link-highlight {\n --f7-tabbar-link-active-border-color: @toolbar-icons;\n position: absolute;\n left: 0;\n bottom: 0;\n height: 3px;\n }\n }\n\n // List\n .list {\n &.inputs-list {\n margin: 0;\n\n .item-input.item-content {\n padding-left: 0;\n }\n \n .item-input, .item-link {\n .item-inner {\n display: block;\n\n .item-title, .item-label {\n width: 100%;\n font-size: 12px;\n }\n \n .item-input-wrap {\n margin-left: 0;\n }\n }\n }\n }\n\n .buttons {\n box-sizing: border-box;\n min-height: 48px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n\n .item-content {\n width: 100%;\n\n .item-inner {\n padding-bottom: 0;\n padding-top: 0;\n\n .row {\n width: 100%;\n --f7-cols-per-row: 1;\n align-items: flex-start;\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n\n .button {\n flex: 1;\n font-size: 17px;\n margin-left: 5px;\n display: flex;\n align-items: center;\n justify-content: center;\n &:first-child {\n margin-left: 0;\n }\n }\n }\n }\n }\n }\n\n .item-content {\n .color-preview {\n width: 30px;\n height: 30px;\n border-radius: 4px;\n margin-top: -3px;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset;\n background-color: @fill-white;\n &.auto { \n background-color: @autoColor;\n }\n }\n }\n }\n\n .item-input:not(.item-input-outline) .item-content::before, .item-input:not(.item-input-outline).item-content::before {\n background: transparent;\n }\n\n .links-list a:after, .list .item-inner:after, .simple-list li:after {\n background-color: var(--f7-list-item-border-color);\n bottom: 0;\n content: \"\";\n display: block;\n height: 1px;\n left: 0;\n position: absolute;\n right: auto;\n top: auto;\n transform: scaleY(calc(1/var(--f7-device-pixel-ratio)));\n transform-origin: 50% 100%;\n width: 100%;\n z-index: 15;\n }\n\n .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content, .media-list:not(.inset):not(.inset-md):not(.menu-list) li > .item-link, .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content, .list:not(.inset):not(.inset-md):not(.menu-list) .media-item > .item-link {\n border-radius: 0;\n }\n\n // Color palette\n\n #color-picker {\n .right-block {\n .button-round {\n background-color: @brandColor;\n }\n }\n }\n\n // Regional Settings\n\n .regional-settings {\n .list {\n .item-inner {\n margin-left: 16px;\n }\n .item-title-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n flex-direction: row-reverse;\n .item-title {\n white-space: normal;\n }\n }\n }\n }\n\n // Find and Replace \n\n .searchbar-inner {\n &__center {\n flex-wrap: wrap;\n }\n // &__left {\n // padding-top: 4px;\n // }\n }\n\n .navbar {\n .searchbar-input-wrap {\n height: 32px;\n margin-right: 10px;\n margin: 4px 0;\n }\n\n .navbar-inner {\n overflow: initial;\n }\n\n .left {\n margin: 0;\n }\n\n .title {\n margin-left: var(--f7-navbar-title-margin-left);\n margin-right: var(--f7-navbar-title-margin-left);\n }\n }\n\n .subnavbar .title {\n font-size: 14px;\n font-weight: normal;\n }\n\n .searchbar {\n input {\n box-sizing: border-box;\n width: 100%;\n display: block;\n border: none;\n appearance: none;\n border-radius: 0;\n font-family: inherit;\n color: @fill-white;\n font-size: 16px;\n font-weight: 400;\n padding: 0;\n border-bottom: 1px solid @fill-white;\n height: 100%;\n padding: 0 40px 0 24px;\n background-color: transparent;\n background-repeat: no-repeat;\n background-position: 0 center;\n opacity: 1;\n background-size: 24px 24px;\n transition-duration: .3s;\n .encoded-svg-background('');\n &::placeholder {\n color: @fill-white;\n }\n }\n\n .input-clear-button {\n width: 18px;\n height: 18px;\n top: 7px;\n margin: 0;\n\n &:after {\n color: @fill-white;\n font-size: 19px;\n line-height: 19px;\n }\n }\n\n .number-search-results {\n position: absolute;\n right: 26px;\n top: 4px;\n font-size: 16px;\n font-weight: 400;\n line-height: 24px;\n }\n }\n\n .searchbar-icon {\n &:after {\n color: @fill-white;\n font-size: 19px;\n }\n }\n \n .navbar {\n .searchbar-expandable.searchbar-enabled {\n top: 0;\n // height: 100%;\n .searchbar-inner {\n height: 100%;\n padding: 0;\n\n &__center {\n flex-direction: column;\n }\n\n &__right {\n flex-direction: column-reverse;\n }\n }\n\n &.replace {\n height: 96px;\n }\n }\n a.link {\n padding: 0 16px;\n }\n a.link.searchbar-enable {\n i.icon-search {\n background-color: @toolbar-icons;\n }\n }\n a.icon-only {\n width: auto;\n height: 56px;\n }\n .buttons-row-replace a {\n color: @fill-white;\n padding: 0;\n }\n .searchbar .buttons-row {\n align-self: flex-start;\n }\n }\n\n @media(max-width: 550px) {\n .searchbar-expandable.searchbar-enabled {\n .searchbar-inner {\n &__left {\n margin-right: 33px;\n }\n }\n }\n }\n\n .actions-button-text {\n cursor: pointer;\n line-height: 48px;\n font-size: 16px;\n // color: rgba(0,0,0,.87);\n color: @text-normal;\n // color: var(--f7-actions-button-text-color, );\n }\n\n @media (min-width: 496px) {\n .actions-modal {\n width: 100%;\n left: auto;\n margin-left: 0;\n }\n }\n\n input.modal-text-input {\n box-sizing: border-box;\n height: 36px;\n background: #fff;\n margin: 0;\n margin-top: 15px;\n padding: 0;\n border: none;\n width: 100%;\n font-size: 16px;\n font-family: inherit;\n display: block;\n box-shadow: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n -ms-appearance: none;\n appearance: none;\n -webkit-transition-duration: .2s;\n transition-duration: .2s;\n }\n\n .input-field {\n .inputs-list {\n margin: 15px 0 0;\n ul {\n background: none;\n &::before, &::after {\n display: none;\n }\n }\n .item-input, .item-inner {\n padding: 0;\n margin: 0;\n }\n }\n }\n\n // Fonts List \n\n .font-item {\n .item-radio:not(.item-radio-icon-end) > .icon-radio {\n margin-right: 0;\n }\n }\n\n // Navbar link settings \n\n .navbar-link-settings, .navbar-dropdown-list {\n .navbar-inner {\n background: @background-primary;\n\n .icon-back {\n color: @text-normal;\n }\n }\n .title, a {\n color: @text-normal;\n }\n }\n\n // Popover styles\n .popover {\n box-shadow: var(--f7-box-shadow);\n\n &.popover__titled {\n .popover-arrow:after {\n background: @toolbar-background;\n }\n }\n\n &.document-menu, &.popover__functions {\n .popover-arrow:after {\n background: @background-secondary;\n }\n }\n }\n // Version History\n .page-version-history {\n --f7-page-bg-color: @background-primary;\n }\n\n .version-history {\n &__title {\n font-style: normal;\n font-weight: 500;\n font-size: 14px;\n line-height: 20px;\n color: @brandColor;\n margin-top: 16px;\n margin-bottom: 4px;\n }\n\n &__btn {\n box-shadow: 0px 0.25px 1px rgba(0, 0, 0, 0.039), 0px 0.85px 3px rgba(0, 0, 0, 0.19);\n border-radius: 6px;\n background: @background-primary;\n padding: 6px 20px;\n font-style: normal;\n font-weight: 500;\n font-size: 16px;\n line-height: 20px;\n letter-spacing: 0.25px;\n color: @brandColor;\n margin-top: 10px;\n border: 0;\n width: auto;\n }\n\n &__list {\n ul:before, ul:after {\n display: none;\n }\n\n .item-title {\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n line-height: 24px;\n color: @text-normal;\n letter-spacing: 0.15px;\n }\n\n .item-inner {\n padding-top: 10px;\n padding-bottom: 10px;\n }\n\n .item-inner::before {\n content: '';\n position: absolute;\n background-color: @background-menu-divider;\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n\n .item-media {\n padding-top: 12px;\n padding-bottom: 12px;\n min-width: 40px;\n max-width: 40px;\n }\n\n .item-link .item-title-row:before {\n display: none;\n }\n\n .item-subtitle {\n color: @text-secondary;\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 16px;\n letter-spacing: 0.5px;\n }\n }\n }\n\n .version-history__item_active {\n background-color: @background-tertiary;\n }\n\n .btn-close-history {\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n line-height: 24px;\n letter-spacing: 0.15px;\n color: @toolbar-icons;\n margin-left: 16px;\n }\n\n .beta-badge {\n background-color: @brand-secondary;\n margin-left: 8px;\n }\n\n .dropdown-list {\n .icon-radio {\n display: none;\n }\n\n input[type=\"radio\"]:checked + .icon-radio {\n display: inline-block;\n }\n }\n}\n","// @common-image-path - defined in webpack config\n\n.device-ios {\n .theme-type-dark {\n i.icon {\n &.icon-logo {\n background: ~\"url(@{common-image-path}/header/logo-android.svg)\" no-repeat center;\n background-size: contain;\n }\n }\n }\n i.icon {\n &.icon_mask {\n background-color: white;\n }\n &.icon-logo {\n width: 100px;\n height: 20px;\n background: ~\"url(@{common-image-path}/header/logo-ios.svg)\" no-repeat center;\n background-size: contain;\n }\n &.icon-prev {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-next {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-edit {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-show-password {\n width: 25px;\n height: 25px;\n .encoded-svg-mask('', @text-secondary);\n }\n &.icon-hide-password {\n width: 25px;\n height: 25px;\n .encoded-svg-mask('', @text-secondary);\n }\n &.icon-return {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n }\n}\n","// @common-image-path - defined in webpack config\n\n.device-android {\n i.icon {\n &.icon_mask {\n background-color: @text-normal;\n }\n &.icon-logo {\n width: 100px;\n height: 20px;\n background: ~\"url(@{common-image-path}/header/logo-android.svg) no-repeat center\";\n background-size: contain;\n }\n &.icon-prev {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-next {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-show-password {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-secondary);\n }\n &.icon-hide-password {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-secondary);\n }\n }\n .dropdown-list {\n i.icon {\n &.icon-radio {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @brandColor);\n }\n }\n }\n .navbar {\n i.icon {\n &.icon-collaboration {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-back {\n color: @toolbar-icons;\n }\n &.icon-edit {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-close {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-done-disabled {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-tertiary);\n }\n &.icon-done {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-search {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-version-history {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-return {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n }\n }\n}\n","@import \"./ios/icons\";\n@import \"./material/icons\";\n\ni.icon {\n &.icon-paste {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-copy {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-cut {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-prev:after, &.icon-next:after {\n content: none;\n }\n &.icon-collaboration {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-cancellation {\n width: 24px;\n height: 24px;\n .encoded-svg-background('');\n }\n &.icon-remove-style {\n width: 24px;\n height: 24px;\n .encoded-svg-background('')\n }\n &.icon-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n // Formats \n \n &.icon-format-pdf {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n &.icon-format-pdfa {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n\n // Numbers\n\n &.icon-numbers-1 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-2 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-3 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-4 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-5 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-6 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-7 {\n .encoded-svg-background('');\n }\n\n &.icon-sharing-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n &.icon-info {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @brandColor);\n }\n\n &.icon-help {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-about {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n &.icon-search {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-version-history {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n // Text orientation\n\n &.icon-text-orientation-horizontal {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-anglecount {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-angleclock {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-vertical {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-rotateup {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-rotatedown {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n}\n","// Data view\n\n.dataview {\n .row {\n justify-content: space-around;\n }\n\n ul {\n padding: 0 10px;\n list-style: none;\n\n li {\n display: inline-block;\n }\n }\n\n .row.list:last-child li:not(.active):last-child::after {\n content: none;\n }\n\n .row.list:last-child li.active:last-child, .active {\n position: relative;\n z-index: 1;\n\n &::after {\n content: '';\n position: absolute;\n width: 22px;\n height: 22px;\n right: -5px;\n left: auto;\n bottom: -5px;\n transform: none;\n .encoded-svg-mask('');\n }\n }\n}","@statusBarBorderColor: #cbcbcb;\n\n.navbar {\n .searchbar {\n background-color: var(--f7-navbar-bg-color);\n\n .buttons-row {\n align-self: center;\n display: flex;\n }\n\n .searchbar-bg {\n .hairline(bottom, @statusBarBorderColor);\n }\n }\n\n .searchbar-inner {\n justify-content: space-between;\n &__center {\n display: flex;\n align-items: center;\n width: 81%;\n }\n &__right {\n display: flex;\n align-items: center;\n }\n }\n\n .searchbar-expandable {\n transition-duration: 0s;\n }\n\n .buttons-row-replace {\n display: flex;\n flex-direction: column;\n align-items: center;\n // width: max-content;\n width: 100%;\n justify-content: center;\n a {\n font-size: 15px;\n height: auto;\n display: block;\n line-height: normal;\n\n &:before{\n display: none;\n }\n }\n }\n\n @media(max-width: 550px)\n {\n .searchbar-expandable.searchbar-enabled {\n .searchbar-inner {\n &__left {\n min-width: 22px;\n max-width: 22px;\n }\n &__center {\n flex-direction: column;\n }\n &__right {\n flex-direction: column-reverse;\n }\n }\n &.replace {\n top: 0;\n .searchbar-inner {\n height: 100%;\n &__left {\n align-self: flex-start;\n }\n }\n }\n } \n }\n}\n","\n// RTL, LTR\n.ltr(@ruleset) {\n & when not (@rtl) {\n @ruleset();\n }\n}\n.rtl(@ruleset) {\n & when (@rtl) {\n @ruleset();\n }\n}\n.if-ios-theme(@ruleset) {\n & when (@includeIosTheme) {\n @ruleset();\n }\n}\n.if-md-theme(@ruleset) {\n & when (@includeMdTheme) {\n @ruleset();\n }\n}\n.if-dark-theme(@ruleset) {\n & when(@includeDarkTheme) {\n @ruleset();\n }\n}\n.ios-vars(@ruleset) {\n & when (@includeIosTheme) {\n .ios {\n @ruleset();\n }\n }\n}\n.md-vars(@ruleset) {\n & when (@includeMdTheme) {\n .md {\n @ruleset();\n }\n }\n}\n.md-color-vars(@ruleset) {\n & when (@includeMdTheme) {\n .md,\n .md .dark,\n .md [class*='color-'] {\n @ruleset();\n }\n }\n}\n.dark-vars(@ruleset) {\n & when (@includeDarkTheme) {\n .dark,\n &.dark {\n @ruleset();\n }\n }\n}\n.light-vars(@ruleset) {\n & when (@includeLightTheme) {\n & {\n @ruleset();\n }\n }\n}\n// Scrollable\n.scrollable() {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n}\n.not-scrollable() {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\n// Disabled\n.disabled() {\n opacity: 0.55;\n pointer-events: none;\n}\n// Modal Backdrops\n.modal-backdrop() {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.4);\n z-index: 13000;\n visibility: hidden;\n opacity: 0;\n transition-duration: 400ms;\n &.not-animated {\n transition-duration: 0ms;\n }\n &.backdrop-in {\n visibility: visible;\n opacity: 1;\n }\n}\n\n// Hairlines\n.hairline-pseudo(@color, @top, @right, @bottom, @left) {\n content: '';\n position: absolute;\n background-color: @color;\n display: block;\n z-index: 15;\n top: @top;\n right: @right;\n bottom: @bottom;\n left: @left;\n}\n.hairline(@position, @color) when (@position = top) {\n &:before {\n .hairline-pseudo(@color, 0, auto, auto, 0);\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline(@position, @color) when (@position = left) {\n &:before {\n .hairline-pseudo(@color, 0, auto, auto, 0);\n width: 1px;\n height: 100%;\n transform-origin: 0% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline(@position, @color) when (@position = bottom) {\n &:after {\n .hairline-pseudo(@color, auto, auto, 0, 0);\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline(@position, @color) when (@position = right) {\n &:after {\n .hairline-pseudo(@color, 0, 0, auto, auto);\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline-remove-top-bottom() {\n &:before,\n &:after {\n display: none !important;\n }\n}\n// For right and bottom\n.hairline-remove(@position) when not (@position = left) and not (@position = top) {\n &:after {\n display: none !important;\n }\n}\n// For left and top\n.hairline-remove(@position) when not (@position = right) and not (@position = bottom) {\n &:before {\n display: none !important;\n }\n}\n// For right and bottom\n.hairline-color(@position, @color) when not (@position = left) and not (@position = top) {\n &:after {\n background-color: @color;\n }\n}\n// For left and top\n.hairline-color(@position, @color) when not (@position = right) and not (@position = bottom) {\n &:before {\n background-color: @color;\n }\n}\n// MD Active Active Links Highlights\n.link-highlight() {\n &:before {\n content: '';\n width: 152%;\n height: 152%;\n left: -26%;\n top: -26%;\n position: absolute;\n background-image: radial-gradient(\n circle at center,\n var(--f7-link-highlight-color) 66%,\n rgba(255, 255, 255, 0) 66%\n );\n background-repeat: no-repeat;\n background-position: center;\n background-size: 100% 100%;\n opacity: 0;\n pointer-events: none;\n transition-duration: 300ms;\n transition-property: opacity;\n }\n &.icon-only:before,\n &.ripple-inset:before,\n &.searchbar-disable-button:before,\n &.input-clear-button:before,\n &.notification-close-button:before {\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n background-image: radial-gradient(\n circle at center,\n var(--f7-link-highlight-color) 71%,\n rgba(255, 255, 255, 0) 71%\n );\n }\n &.active-state:before {\n opacity: 1;\n transition-duration: 150ms;\n }\n}\n// MD Bars Shadow\n\n.core-icons-font() {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n\n.ios-translucent-bars(@color) {\n .ios-translucent-bars & {\n @supports (backdrop-filter: blur(20px)) {\n background-color: rgba(@color, var(--f7-bars-translucent-opacity));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n }\n}\n.ios-translucent-modals(@color) {\n .ios-translucent-modals & {\n @supports (backdrop-filter: blur(20px)) {\n background-color: rgba(@color, 0.8);\n backdrop-filter: saturate(180%) blur(20px);\n }\n }\n}\n\n.no-scrollbar() {\n scrollbar-width: none;\n scrollbar-color: transparent;\n &::-webkit-scrollbar {\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n }\n &::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n }\n &::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n }\n}\n","\n.device-ios {\n .document-menu {\n @contextMenuBg: rgba(0, 0, 0, 0.9);\n @modalHairlineColor: rgba(230, 230, 230, 0.9);\n @modalButtonColor: rgba(200, 200, 200, 0.9);\n\n background-color: @contextMenuBg;\n border-radius: 8px;\n\n .popover-angle {\n &:after {\n background: @contextMenuBg;\n }\n }\n\n .list-block {\n font-size: 14px;\n white-space: pre;\n\n &:first-child {\n ul {\n .hairline-remove(left);\n //border-radius: 7px 0 0 7px;\n }\n\n li:first-child a {\n //border-radius: 7px 0 0 7px;\n border-radius: 0;\n }\n }\n\n //&:last-child {\n // ul {\n // .hairline-remove(right);\n // border-radius: 0 7px 7px 0;\n // }\n // li:last-child a{\n // border-radius: 0 7px 7px 0;\n // }\n //}\n\n //&:first-child:last-child {\n // li:first-child:last-child a, ul:first-child:last-child {\n // border-radius: 7px;\n // }\n //}\n\n .item-link {\n display: inline-block;\n\n html:not(.watch-active-state) &:active, &.active-state {\n //.transition(0ms);\n background-color: #d9d9d9;\n .item-inner {\n .hairline-color(right, transparent);\n }\n }\n\n html.phone & {\n padding: 0 10px;\n }\n }\n\n .list-button {\n color: @white;\n line-height: 36px;\n\n .hairline(right, @modalHairlineColor);\n }\n\n // List items\n li {\n display: inline-flex;\n }\n\n // Last-childs\n li {\n &:last-child {\n .list-button {\n .hairline-remove(right);\n }\n }\n\n &:last-child, &:last-child li:last-child {\n .item-inner {\n .hairline-remove(right);\n }\n }\n\n li:last-child, &:last-child li {\n .item-inner {\n .hairline(right, @modalHairlineColor);\n }\n }\n }\n\n //.no-hairlines();\n //.no-hairlines-between()\n }\n }\n}","\n.md {\n .document-menu {\n //line-height: 1 !important;\n\n .popover-inner {\n overflow: hidden;\n }\n\n .list-block {\n white-space: pre;\n\n ul {\n height: 48px;\n }\n\n li {\n display: inline-block;\n }\n\n .list-button {\n color: @text-normal;\n }\n\n //.item-link {\n // html.phone & {\n //padding: 0 10px;\n //}\n //}\n }\n }\n}\n","@import './ios/contextmenu';\n@import './material/contextmenu';\n\n\n.document-menu {\n width: auto;\n}\n\nhtml.phone .document-menu .list-block .list-button {\n padding: 0 10px;\n}",".device-ios {\n .wrap-comment {\n height: calc(100% - 60px);\n }\n .add-comment-popup, .add-reply-popup, .add-comment-dialog, .add-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 34px);\n }\n }\n .edit-comment-popup, .edit-reply-popup, .edit-comment-dialog, .edit-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 52px);\n }\n }\n .comment-list {\n .reply-item {\n .item-inner:after {\n content: none !important;\n }\n &:before {\n content: '';\n position: absolute;\n left: auto;\n bottom: 0;\n right: auto;\n top: 0;\n height: 1px;\n width: 100%;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n -webkit-transform-origin: 50% 100%;\n transform-origin: 50% 100%;\n }\n }\n }\n}",".device-android {\n .wrap-comment {\n height: calc(100% - 72px);\n }\n .add-comment-popup, .add-reply-popup, .add-comment-dialog, .add-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 41px);\n }\n }\n .edit-comment-popup, .edit-reply-popup, .edit-comment-dialog, .edit-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 56px);\n }\n }\n .wrap-comment, .comment-list, .reply-list {\n .comment-header, .reply-header {\n display: flex;\n .initials {\n border-radius: 50px;\n color: @fill-white;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: 10px;\n font-size: 14px;\n }\n }\n }\n\n .wrap-comment {\n .comment-header {\n align-items: center;\n .initials {\n height: 30px;\n width: 30px;\n }\n }\n .wrap-textarea {\n .input:not(.input-outline):after {\n content: none;\n }\n }\n }\n\n #add-comment-dialog, #edit-comment-dialog, #add-reply-dialog, #edit-reply-dialog {\n .dialog {\n --f7-dialog-text-color: @black;\n .done {\n padding-right: 6px;\n }\n }\n }\n\n .comment-list {\n ul:after, .item-inner:after, li:last-child li .item-inner:after {\n content: none;\n }\n .comment-header {\n .left {\n display: flex;\n align-items: center;\n .initials {\n width: 40px;\n height: 40px;\n font-size: 18px;\n }\n }\n }\n }\n .reply-list {\n .reply-header {\n .left {\n display: flex;\n .initials {\n margin-top: 5px;\n width: 24px;\n height: 24px;\n font-size: 11px;\n }\n }\n }\n }\n\n .edit-comment-popup, .edit-reply-popup, #edit-comment-dialog, #edit-reply-dialog {\n .wrap-comment {\n .comment-header, .reply-header {\n .initials {\n height: 40px;\n width: 40px;\n }\n }\n }\n }\n\n #view-comment-popover {\n .toolbar-bottom:after {\n content: none;\n }\n }\n\n}","@comment-date: #6d6d72;\n@swipe-icon: #E5E5E5;\n\n@import './ios/comments';\n@import './material/comments';\n\n.wrap-comment {\n padding: 16px 24px 0 16px;\n background-color: @background-tertiary;\n \n .comment-date {\n color: @text-secondary;\n }\n .wrap-textarea {\n margin-top: 6px;\n }\n .name {\n font-weight: 600;\n font-size: 16px;\n color: @text-normal;\n }\n .reply-date {\n color: @text-secondary;\n }\n}\n\n.wrap-textarea {\n .input {\n height: 100%;\n }\n\n textarea {\n font-size: 14px;\n margin-top: 0;\n height: 100%;\n padding: 5px 0;\n color: @text-normal;\n }\n}\n\n#add-comment-dialog, #edit-comment-dialog, #add-reply-dialog, #edit-reply-dialog {\n .dialog {\n --f7-dialog-width: 400px;\n z-index: 13700;\n .dialog-inner {\n padding: 0;\n height: 400px;\n .wrap-comment {\n .name, .comment-date, .reply-date {\n text-align: left;\n }\n .wrap-textarea {\n textarea {\n color: @text-normal;\n width: 100%;\n }\n }\n }\n }\n }\n}\n\n.comment-list {\n .item-content .item-inner {\n padding-right: 0;\n padding-bottom: 0;\n padding-top: 16px;\n .comment-header {\n display: flex;\n justify-content: space-between;\n padding-right: 16px;\n .right {\n display: flex;\n justify-content: flex-end;\n width: 70px;\n .comment-resolve {\n margin-right: 10px;\n }\n }\n }\n .reply-header {\n display: flex;\n justify-content: space-between;\n padding-right: 16px;\n }\n }\n .item-title {\n width: 100%;\n }\n .user-name {\n font-size: 16px;\n line-height: 22px;\n color: @text-normal;\n margin: 0;\n font-weight: 700;\n }\n .comment-date, .reply-date {\n font-size: 12px;\n line-height: 18px;\n color: @text-secondary;\n margin: 0;\n }\n .comment-quote {\n color: @text-secondary;\n border-left: 1px solid @text-secondary;\n padding-left: 10px;\n padding-right: 16px;\n margin: 5px 0;\n font-size: 14px;\n }\n .comment-text, .reply-text {\n color: @text-normal;\n font-size: 14px;\n line-height: 25px;\n margin: 0;\n max-width: 100%;\n padding-right: 15px;\n word-break: break-all;\n pre {\n white-space: pre-wrap;\n overflow-wrap: break-word;\n }\n }\n .reply-list {\n padding-left: 26px;\n }\n .reply-item {\n padding-right: 26px;\n }\n}\n\n.edit-comment-popup, .add-reply-popup, .edit-reply-popup {\n z-index: 20000;\n}\n\n#view-comment-sheet {\n background-color: @fill-white;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n height: 45%;\n box-shadow: 0 1px 10px rgba(0, 0, 0, 0.2), 0 4px 5px rgba(0, 0, 0, 0.12);\n webkit-transition: height 200ms;\n transition: height 200ms;\n .top {\n height: 90%;\n }\n .swipe-container {\n display: flex;\n justify-content: center;\n height: 40px;\n background-color: @background-primary;\n .icon-swipe {\n margin-top: 8px;\n width: 40px;\n height: 4px;\n background: @background-menu-divider;\n border-radius: 2px;\n }\n }\n}\n\n#view-comment-popover, #view-comment-sheet {\n .toolbar {\n position: fixed;\n background-color: @background-primary;\n box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.2), 0px 4px 5px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14);\n .link {\n --f7-toolbar-link-color: @brandColor;\n }\n .toolbar-inner {\n padding: 0 16px;\n }\n .btn-add-reply {\n padding: 0;\n min-width: 80px;\n font-size: 16px;\n }\n .comment-navigation {\n min-width: 62px;\n display: flex;\n justify-content: space-between;\n .link {\n padding: 0 12px;\n }\n }\n }\n}\n\n#view-comment-popover {\n background-color: @background-primary;\n .pages {\n position: absolute;\n }\n .page {\n border-radius: var(--f7-popover-border-radius);\n .page-content {\n padding: 16px 16px 60px 0;\n border-radius: var(--f7-popover-border-radius);\n }\n }\n .comment-list {\n .item-content {\n .item-inner {\n .comment-header, .reply-header {\n padding-right: 0;\n }\n }\n }\n }\n .toolbar {\n position: absolute;\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n }\n}\n\n.page-current-comment {\n position: relative;\n .page-content {\n background-color: @background-primary;\n }\n .comment-list {\n ul {\n &:before, &:after {\n content: none;\n }\n .item-content .item-inner {\n padding-top: 0;\n .reply-list .item-content .item-inner {\n padding-top: 13px;\n }\n }\n }\n }\n}\n\n.dialog.modal-in {\n z-index: 14000;\n max-height: 100%;\n overflow: auto;\n\n .item-content .item-input-wrap::after {\n background-color: @brandColor;\n }\n}\n\n.dialog-backdrop.backdrop-in {\n z-index: 13600;\n}\n\n.no-comments {\n text-align: center;\n margin-top: 35px;\n color: @text-normal;\n}\n\n.actions-modal.modal-in {\n z-index: 13700;\n .actions-group::after {\n background-color: @background-menu-divider;\n }\n}\n\n.actions-backdrop.backdrop-in {\n z-index: 13600;\n}","\n// Colors\n@themeColorLight: #a2bdde;\n@navBarIconColor: #fff;\n@listButtonBorderColor: rgba(0,0,0,0.15);\n\n\n.device-android {\n --f7-navbar-bg-color: @brandColor;\n --f7-navbar-link-color: @text-link;\n --f7-navbar-text-color: @text-normal;\n --f7-list-button-border-color: @listButtonBorderColor;\n\n // Main Toolbar\n #editor-navbar.navbar .right {\n padding-right: 4px;\n }\n #editor-navbar.navbar .right a.link,\n #editor-navbar.navbar .left a.link {\n padding: 0 13px;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n width: auto;\n }\n\n // For filter options\n .radio-checkbox-item {\n .icon.icon-checkbox {\n width: 20px;\n height: 20px;\n border-radius: 20px;\n border: 2px solid var(--f7-checkbox-inactive-color);\n }\n label.item-checkbox input[type='checkbox']:checked ~ .icon-checkbox {\n border-color: @brandColor;\n background-color: transparent;\n }\n label.item-content i.icon.icon-checkbox:after {\n content: ' ';\n position: absolute;\n width: 10px;\n height: 10px;\n left: 50%;\n top: 50%;\n margin-left: -5px;\n margin-top: -5px;\n background-color: @brandColor;\n border-radius: 100%;\n }\n }\n\n .move-sheet {\n .navbar .navbar-inner {\n background: @background-primary;\n .title {\n color: @text-normal;\n }\n }\n }\n\n .tooltip-cell-data {\n border-radius: 0;\n }\n}","\n.device-ios {\n // For filter options\n .radio-checkbox-item {\n label.item-content input[type=checkbox]:checked ~ .item-inner {\n background: no-repeat center;\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2013%2010'%3E%3Cpolygon%20fill%3D'%2340865c'%20points%3D'11.6%2C0%204.4%2C7.2%201.4%2C4.2%200%2C5.6%204.4%2C10%204.4%2C10%204.4%2C10%2013%2C1.4%20'%2F%3E%3C%2Fsvg%3E\");\n background-position: calc(100% - 15px) center;\n background-size: 13px 10px;\n }\n .icon.icon-checkbox {\n display: none;\n }\n }\n\n .actions-move-sheet .actions-button-text{\n color: @brandColor;\n }\n\n .tooltip-cell-data {\n border-radius: 4px;\n }\n\n .all-list.popover {\n .view {\n border-radius: var(--f7-popover-border-radius);\n }\n .page-content {\n border-radius: var(--f7-popover-border-radius);\n\n & > .list:last-child {\n margin-bottom: 0;\n }\n }\n .list {\n overflow: hidden;\n }\n }\n}\n","// Icons\n\n.device-ios {\n i.icon {\n &.icon-edit-settings {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-undo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-redo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-reader {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-download {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-print {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-plus {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-list {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('')\n }\n &.icon-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n \n &.icon-feedback {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-versions {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-color {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-fill-color {\n width: 22px;\n height: 22px;\n background-size: 130%;\n .encoded-svg-mask('');\n }\n &.icon-text-align-center {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-jast {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-just {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-valign-top {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-valign-middle {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-valign-bottom {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-expand-down {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-link {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-insimage {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-sort {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-image-library {\n width: 22px;\n height: 22px;\n .encoded-svg-background('icons_for_svg');\n }\n &.icon-cell-wrap {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-function {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @text-normal);\n }\n // Reorder\n\n &.icon-move-backward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-forward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-background {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-foreground {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-cell-style {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n // Presets of table borders\n\n &.icon-table-borders-all {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-none {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-inner {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-outer {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-left {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-center {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-right {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-top {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-middle {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-bottom {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-dup {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-ddown {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n // Cell formats\n\n &.icon-format-general {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-number {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-integer {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-scientific {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-accounting {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-currency {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-date {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-time {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-percentage {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-text {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n // Filter sort\n\n &.sortdown {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.sortup {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n // Collaboration\n \n &.icon-users {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-app-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-table-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask(' ');\n }\n //Comments\n &.icon-menu-comment {\n width: 30px;\n height: 30px;\n .encoded-svg-mask('', @text-tertiary);\n }\n &.icon-resolve-comment {\n width: 30px;\n height: 30px;\n .encoded-svg-mask('', @text-tertiary);\n }\n &.icon-resolve-comment.check {\n width: 30px;\n height: 30px;\n .encoded-svg-mask('', @brandColor);\n }\n &.icon-insert-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n //Insert\n &.icon-add-chart {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-formula {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-shape {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-other {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n }\n\n .tab-link-active {\n i.icon {\n &.icon-add-chart {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-formula {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-shape {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-other {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-link {\n background: #fff;\n }\n }\n }\n}\n","// Icons\n\n.device-android {\n i.icon {\n &.icon-expand-up {\n width: 17px;\n height: 17px;\n .encoded-svg-mask('');\n }\n &.icon-expand-down {\n width: 17px;\n height: 17px;\n .encoded-svg-mask('');\n }\n &.icon-edit {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-edit-settings {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-reader {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-download {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-print {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-feedback {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n } \n &.icon-versions {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-color {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-center {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-jast {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-just {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-valign-top {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-valign-middle {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-valign-bottom {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-link {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-insimage, &.icon-image-library {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-sort {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-function {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-app-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-table-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask(' ');\n }\n\n\n // Reorder\n\n &.icon-move-backward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-forward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-background {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-foreground {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n // Presets of table borders\n\n &.icon-table-borders-all {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-none {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-inner {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-outer {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-left {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-center {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-right {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-top {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-middle {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-bottom {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-dup {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-ddown {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n // Cell formats\n\n &.icon-format-general {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-number {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-integer {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-scientific {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-accounting {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-currency {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-date {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-time {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-percentage {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-text {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n // Filter sort\n\n &.sortdown {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.sortup {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n // Collaboration\n \n &.icon-users {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n //Comments\n &.icon-menu-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-tertiary);\n }\n &.icon-resolve-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-tertiary);\n }\n &.icon-resolve-comment.check {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-done-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-insert-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-done-comment-white {\n width: 24px;\n height: 24px;\n .encoded-svg-background('');\n }\n &.icon-plus {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @fill-white);\n }\n &.icon-add-custom-format {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @brandColor);\n }\n &.icon-check {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @fill-white);\n }\n }\n\n .tabbar {\n .link.tab-link {\n i.icon {\n &.icon-link {\n background: #fff;\n }\n }\n }\n }\n\n // Overwrite color for toolbar\n .navbar {\n i.icon {\n &.icon-logo {\n width: 100px;\n height: 14px;\n //background: url('../../../../common/mobile/resources/img/header/logo-android.svg') no-repeat center;\n }\n &.icon-undo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-redo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-burger {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-plus {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-settings {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-prev {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-next {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-expand-down {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-add-chart {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-add-formula {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-add-shape {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-add-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-add-other {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-close-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n }\n }\n}\n","\n.chart-types .thumb {\n //@relativepath: '../../resources/img';\n &.bar-normal {\n background-image: url('@{app-image-path}/charts/chart-03.png');\n }\n &.bar-stacked {\n background-image: url('@{app-image-path}/charts/chart-02.png');\n }\n &.bar-pstacked {\n background-image: url('@{app-image-path}/charts/chart-01.png');\n }\n &.line-normal {\n background-image: url('@{app-image-path}/charts/chart-06.png');\n }\n &.line-stacked {\n background-image: url('@{app-image-path}/charts/chart-05.png');\n }\n &.line-pstacked {\n background-image: url('@{app-image-path}/charts/chart-04.png');\n }\n &.hbar-normal {\n background-image: url('@{app-image-path}/charts/chart-09.png');\n }\n &.hbar-stacked {\n background-image: url('@{app-image-path}/charts/chart-08.png');\n }\n &.hbar-pstacked {\n background-image: url('@{app-image-path}/charts/chart-07.png');\n }\n &.area-normal {\n background-image: url('@{app-image-path}/charts/chart-12.png');\n }\n &.area-stacked {\n background-image: url('@{app-image-path}/charts/chart-11.png');\n }\n &.area-pstacked {\n background-image: url('@{app-image-path}/charts/chart-10.png');\n }\n &.pie {\n background-image: url('@{app-image-path}/charts/chart-13.png');\n }\n &.doughnut {\n background-image: url('@{app-image-path}/charts/chart-14.png');\n }\n &.pie3d {\n background-image: url('@{app-image-path}/charts/chart-22.png');\n }\n &.scatter {\n background-image: url('@{app-image-path}/charts/chart-15.png');\n }\n &.stock {\n background-image: url('@{app-image-path}/charts/chart-16.png');\n }\n &.line3d {\n background-image: url('@{app-image-path}/charts/chart-21.png');\n }\n &.bar3dnormal {\n background-image: url('@{app-image-path}/charts/chart-17.png');\n }\n &.bar3dstack {\n background-image: url('@{app-image-path}/charts/chart-18.png');\n }\n &.bar3dpstack {\n background-image: url('@{app-image-path}/charts/chart-19.png');\n }\n &.hbar3dnormal {\n background-image: url('@{app-image-path}/charts/chart-25.png');\n }\n &.hbar3dstack {\n background-image: url('@{app-image-path}/charts/chart-24.png');\n }\n &.hbar3dpstack {\n background-image: url('@{app-image-path}/charts/chart-23.png');\n }\n &.bar3dpsnormal {\n background-image: url('@{app-image-path}/charts/chart-20.png');\n }\n}\n\ni.icon {\n // Formats\n\n &.icon-format-xlsx {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n &.icon-format-xltx {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n &.icon-format-ods {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n &.icon-format-ots {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n &.icon-format-csv {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n}\n","\n@cellEditorHeight: 30px;\n@cellEditorExpandedHeight: 70px;\n@contentBackColor: #fff;\n@gray-light: #f1f1f1;\n@gray-darker: #848484; //rgb(132, 132, 132)\n@statusBarBorderColor: #cbcbcb;\n\n#idx-celleditor {\n box-sizing: border-box;\n * {\n box-sizing: border-box;\n }\n\n display: flex;\n z-index: 5001;\n\n height: @cellEditorHeight;\n min-height: @cellEditorHeight;\n background-color: @contentBackColor;\n\n &.expanded {\n min-height: @cellEditorExpandedHeight;\n //height: @cellEditorExpandedHeight;\n transition: min-height .1s;\n }\n\n &:after {\n content: '';\n position: absolute;\n // background-color: @border-regular-control;\n background-color: @background-menu-divider;\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n\n #box-cell-name {\n display: inline-flex;\n // background-color: var(--f7-navbar-bg-color);\n // background-color: @fill-white;\n\n // .md & {\n // background-color: @gray-light;\n // }\n }\n\n #idx-cell-name {\n display: inline-block;\n width: 90px;\n padding: 0 4px;\n border: 0 none;\n line-height: 30px;\n //font-size: 17px;\n text-align: center;\n\n color: @text-normal;\n\n &[disabled] {\n color: @gray-darker;\n opacity: 0.5;\n }\n }\n\n .phone & {\n #idx-cell-name {\n display: none;\n }\n }\n\n #idx-btn-function {\n height: @cellEditorHeight;\n line-height: @cellEditorHeight;\n padding: 0 10px;\n }\n\n #idx-cell-content {\n padding: 3px 3px;\n line-height: 1.428571429;\n // color: #000;\n color: @text-normal;\n vertical-align: middle;\n // background-color: @contentBackColor;\n min-height: @cellEditorHeight;\n height: 100%;\n width: 100%;\n }\n\n .caret {\n &::after {\n content: '';\n position: absolute;\n top: 8px;\n left: 6px;\n width: 8px;\n height: 8px;\n background-color: transparent;\n // border: solid 1px black;\n border: solid 1px @brandColor;\n border-bottom: none;\n border-right: none;\n\n transition: transform 0.2s ease;\n transform: rotate(-135deg);\n }\n\n width: 30px;\n height: 16px;\n }\n\n &.expanded {\n .caret {\n &::after {\n transform: rotate(45deg) translate(3px, 3px);\n }\n }\n }\n\n .ce-group {\n background-color: @background-secondary;\n }\n\n .group--content {\n position: relative;\n .hairline(left, @background-menu-divider);\n }\n}\n","@statusbar-height: 30px;\n@fontColor: #000;\n\n.statusbar {\n .hairline(top, @background-menu-divider);\n height: @statusbar-height;\n min-height: @statusbar-height;\n background-color: @background-tertiary;\n display: flex;\n\n transition: top 400ms;\n .box-tab {\n display: flex;\n }\n\n .tab {\n border: 0 none;\n border-radius: 0;\n font-size: 18px;\n line-height: inherit;\n min-width: 48px;\n\n display: inline-block;\n // padding: 0 10px;\n text-align: center;\n height: 100%;\n position: relative;\n \n &.active {\n background-color: @background-secondary;\n font-weight: 600;\n a {\n box-shadow: 0px 2px 0 #49795d inset;\n }\n }\n\n .hairline(right, @background-menu-divider);\n }\n\n .statusbar--box-tabs {\n overflow-x: auto;\n overflow-y: hidden;\n &::-webkit-scrollbar {\n -webkit-appearance: none;\n display: none;\n // width: 0;\n // height: 0;\n }\n > ul {\n padding: 0;\n margin: 0;\n height: 100%;\n white-space: nowrap;\n overflow-x: scroll;\n // position: absolute;\n // left: 0;\n // top: 0;\n > li {\n a {\n font-size: 12px;\n padding: 0 10px 0;\n line-height: @statusbar-height;\n color: @text-normal;\n height: 100%;\n display: block;\n }\n }\n }\n }\n\n .tab {\n i.icon {\n width: 18px;\n height: 18px;\n &.icon-plus.bold{\n \n // @source: '';\n // .encoded-svg-mask(@source, @fontColor);\n // background-image: none;\n .encoded-svg-mask('')\n }\n\n &.icon-list.bold {\n .encoded-svg-mask('')\n }\n }\n }\n \n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/apps/spreadsheeteditor/mobile/css/887.css b/apps/spreadsheeteditor/mobile/css/887.css new file mode 100644 index 0000000000..9291a451bb --- /dev/null +++ b/apps/spreadsheeteditor/mobile/css/887.css @@ -0,0 +1,6 @@ +/*! + * + * * Version: 8.0.1 (build: 0) + * + */.md{--background-normal:#f1f1f1}:root{--brand-word:#446995;--brand-cell:#40865c;--brand-slide:#be664f;--brand-form:#be664f;--brand-primary:#3880be;--brand-secondary:#ed7309;--brand-text-on-brand:#fff;--background-primary:#fff;--background-secondary:#fff;--background-tertiary:#eff0f5;--background-menu-divider:rgba(60,60,67,.15);--background-button:#eff0f5;--text-normal:#000;--text-secondary:rgba(0,0,0,.6);--text-tertiary:rgba(0,0,0,.4);--text-link:#007aff;--text-error:#ff3b30;--fill-black:#000;--fill-white:#fff;--toolbar-background:#446995;--toolbar-icons:#fff;--toolbar-segment:#446995;--toolbar-tab-normal:hsla(0,0%,100%,.5);--component-disabled-opacity:0.4;--active-opacity-word:rgba(68,105,149,.3);--active-opacity-slide:rgba(190,102,79,.3);--active-opacity-cell:rgba(64,134,92,.3);--image-border-types-filter:none;--canvas-background:#eee;--canvas-content-background:#fff;--canvas-page-border:#ccc;--canvas-ruler-background:#fff;--canvas-ruler-margins-background:#d9d9d9;--canvas-ruler-mark:#555;--canvas-ruler-handle-border:#555;--canvas-ruler-handle-border-disabled:#aaa;--canvas-high-contrast:#000;--canvas-cell-border:rgba(0,0,0,.1);--canvas-cell-title-selected:#cfcfcf;--canvas-cell-title-border:#d8d8d8;--canvas-cell-title-border-selected:#bbb;--canvas-dark-cell-title:#444;--canvas-dark-cell-title-selected:#111;--canvas-dark-cell-title-border:#3d3d3d;--canvas-dark-cell-title-border-selected:#0f0f0f;--canvas-dark-content-background:#3a3a3a;--canvas-dark-page-border:#2a2a2a}:root .theme-dark,:root .theme-type-dark{--background-primary:#232323;--background-secondary:#333;--background-tertiary:#131313;--background-menu-divider:rgba(84,84,88,.5);--background-button:#333;--text-normal:hsla(0,0%,100%,.87);--text-secondary:hsla(0,0%,100%,.6);--text-tertiary:hsla(0,0%,100%,.4);--text-link:#1976d2;--text-error:#ff453a;--fill-black:#000;--fill-white:#fff;--brand-word:#208bff;--brand-cell:#34c759;--brand-slide:#fe8c33;--brand-form:#fe8c33;--brand-primary:#3e9cf0;--brand-secondary:#ffaf49;--brand-text-on-brand:#000;--toolbar-background:#232323;--toolbar-icons:#208bff;--toolbar-segment:#fff;--toolbar-tab-normal:#757575;--component-disabled-opacity:0.4;--active-opacity-word:rgba(68,105,149,.2);--active-opacity-slide:rgba(190,102,79,.2);--active-opacity-cell:rgba(64,134,92,.2);--image-border-types-filter:invert(100%) brightness(4);--canvas-background:#000;--canvas-content-background:#fff;--canvas-page-border:#303030;--canvas-ruler-background:#636366;--canvas-ruler-margins-background:#3a3a3c;--canvas-ruler-mark:#8e8e93;--canvas-ruler-handle-border:#636366;--canvas-ruler-handle-border-disabled:#636366;--canvas-high-contrast:#000;--canvas-cell-border:rgba(0,0,0,.1);--canvas-cell-title-border:#d5d5d5;--canvas-cell-title-border-hover:#858585;--canvas-cell-title-border-selected:#afafaf;--canvas-cell-title-selected:#cfcfcf;--canvas-dark-cell-title:#444;--canvas-dark-cell-title-selected:#111;--canvas-dark-cell-title-border:#d5d5d5;--canvas-dark-cell-title-border-selected:#afafaf}[dir=rtl].device-android .app-layout .searchbar input{background-position:100%;padding-left:36px;padding-right:24px}[dir=rtl].device-android .app-layout .searchbar .number-search-results{left:26px;right:auto}[dir=rtl].device-android .comment-list .comment-header .initials,[dir=rtl].device-android .wrap-comment .comment-header .initials{margin-left:10px;margin-right:0}[dir=rtl].device-android .actions-modal .actions-button-text{text-align:right}[dir=rtl].device-android .navigation-sheet__title{padding-left:0;padding-right:16px}[dir=rtl].device-ios .app-layout .navbar .left a+a,[dir=rtl].device-ios .app-layout .navbar .right a+a,[dir=rtl].device-ios .app-layout .subnavbar{margin-right:0}[dir=rtl].device-ios .app-layout .tab-buttons .tab-link:first-child{border-radius:0 5px 5px 0}[dir=rtl].device-ios .app-layout .tab-buttons .tab-link:last-child{border-radius:5px 0 0 5px}[dir=rtl].device-ios .app-layout .searchbar .number-search-results{left:26px;right:auto}[dir=rtl].device-ios .app-layout .popover li:first-child .segmented a:first-child,[dir=rtl].device-ios .app-layout .popover li:last-child .segmented a:first-child{border-radius:0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0}[dir=rtl].device-ios .app-layout .popover li:first-child .segmented a:last-child,[dir=rtl].device-ios .app-layout .popover li:last-child .segmented a:last-child{border-radius:var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius)}[dir=rtl].device-ios .app-layout .list .item-inner .item-after .segmented{margin-left:0;margin-right:10px}[dir=rtl].device-ios .app-layout .searchbar-inner__right .buttons-row a.next{margin-left:0;margin-right:15px}[dir=rtl].device-ios .app-layout .navbar .searchbar-input-wrap,[dir=rtl].device-ios .app-layout .searchbar-inner__left{margin-left:10px;margin-right:0}[dir=rtl].device-ios .app-layout .comment-list .item-content .item-inner .comment-header{padding-left:16px}[dir=rtl] .comment-list .item-content .item-inner{padding-left:0}[dir=rtl] .comment-list .item-content .item-inner .comment-header .right{justify-content:space-between}[dir=rtl] .comment-list .item-content .item-inner .comment-header .right .comment-resolve{margin-left:10px;margin-right:0}[dir=rtl] .comment-list .item-content .item-inner .comment-header .name{text-align:right}[dir=rtl] .comment-quote{border-left:0;border-right:1px solid var(--text-secondary);padding-left:16px;padding-right:10px}[dir=rtl] .comment-text,[dir=rtl] .reply-text{padding-left:15px;padding-right:0}[dir=rtl] #add-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #add-comment-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #add-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,[dir=rtl] #add-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #add-reply-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #add-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date,[dir=rtl] #edit-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #edit-comment-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #edit-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,[dir=rtl] #edit-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,[dir=rtl] #edit-reply-dialog .dialog .dialog-inner .wrap-comment .name,[dir=rtl] #edit-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date{text-align:right}[dir=rtl] #view-comment-popover .page .page-content{padding:16px 0 60px 16px}[dir=rtl] .wrap-comment{padding:16px 16px 0 24px}[dir=rtl] .shapes .thumb{transform:scaleX(-1)}[dir=rtl] #settings-popover .link,[dir=rtl] .settings-popup .link{display:inline}[dir=rtl] #edit-table-style ul{padding-right:0}[dir=rtl] .color-schemes-menu .item-title{margin-right:20px}[dir=rtl] .list [slot=root-start]{padding:15px 15px 0 0}[dir=rtl] .bullets .item-content,[dir=rtl] .multilevels .item-content,[dir=rtl] .numbers .item-content{padding-right:0}[dir=rtl] .dataview .active:after{left:-5px;right:unset}[dir=rtl] .popover .list .range-number,[dir=rtl] .popup .list .range-number,[dir=rtl] .sheet-modal .list .range-number{text-align:left}[dir=rtl] .popover .list .inner-range-title,[dir=rtl] .popup .list .inner-range-title,[dir=rtl] .sheet-modal .list .inner-range-title{padding-left:0;padding-right:15px}[dir=rtl] #color-picker .right-block,[dir=rtl] .page-review .toolbar #btn-reject-change{margin-left:0;margin-right:20px}[dir=rtl] .list li.no-indicator .item-link .item-inner{padding-right:0}[dir=rtl] .dialog .modal-password .modal-password__icon{left:4px;right:auto}@media (max-width:550px){.device-ios[dir=rtl] .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__right{margin-left:0;margin-right:10px}.device-ios[dir=rtl] .app-layout .navbar .searchbar-input-wrap{margin-left:0}.device-android[dir=rtl] .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__left{margin-left:33px;margin-right:0}}[dir=rtl] i.icon.icon-next,[dir=rtl] i.icon.icon-numbers-3,[dir=rtl] i.icon.icon-numbers-7,[dir=rtl] i.icon.icon-prev,[dir=rtl] i.icon.icon-table-add-column-left,[dir=rtl] i.icon.icon-table-add-column-right,[dir=rtl] i.icon.icon-table-borders-left,[dir=rtl] i.icon.icon-table-borders-right,[dir=rtl] i.icon.icon-table-remove-column,[dir=rtl] i.icon.icon-text-align-left,[dir=rtl] i.icon.icon-text-align-right{transform:scaleX(-1)}[dir=rtl] i.icon.icon-numbers-1{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M55.728 18v-6.725h-.022l-2.051 1.477v-1.02l2.062-1.482h.946V18h-.935ZM52.35 30.484c0-.677.243-1.239.73-1.687.487-.45 1.096-.676 1.826-.676.691 0 1.277.206 1.757.617.48.412.72.915.72 1.51 0 .43-.119.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.775V36h-5.113v-.666l2.728-2.874c.52-.547.863-.963 1.032-1.246.172-.282.258-.585.258-.907 0-.373-.15-.69-.452-.951a1.585 1.585 0 0 0-1.085-.392c-.454 0-.834.145-1.138.435-.305.29-.457.652-.457 1.085v.005h-.934v-.005ZM53.698 49.423v-.817h.929c.444 0 .807-.127 1.09-.38.283-.259.425-.585.425-.978 0-.394-.131-.708-.393-.94-.26-.233-.632-.35-1.111-.35-.444 0-.806.119-1.085.355-.28.236-.44.559-.484.967h-.929c.054-.66.308-1.184.763-1.574.458-.39 1.05-.585 1.778-.585.698 0 1.278.188 1.74.564.462.375.693.854.693 1.434 0 .483-.143.89-.43 1.219-.286.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.402.564.347.337.52.777.52 1.322 0 .433-.121.823-.364 1.17a2.39 2.39 0 0 1-.989.806c-.415.19-.875.285-1.38.285-.802 0-1.449-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.042.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.595.5-1 0-.454-.161-.814-.483-1.079-.32-.265-.756-.397-1.311-.397h-.972ZM51 17h-1v1h1zM51 35h-1v1h1zM51 52h-1v1h1z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-2{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M52.312 18v-6.725h-.021l-2.052 1.477v-1.02L52.3 10.25h.946V18h-.935Zm2.47 1.488c.123-.208.214-.37.275-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM48.934 30.484c0-.677.243-1.239.73-1.687.487-.45 1.096-.676 1.826-.676.691 0 1.277.206 1.757.617.48.412.72.915.72 1.51 0 .43-.119.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.775V36h-5.113v-.666l2.728-2.874c.52-.547.863-.963 1.032-1.246.172-.282.258-.585.258-.907 0-.373-.15-.69-.452-.951a1.585 1.585 0 0 0-1.085-.392c-.454 0-.834.145-1.138.435-.305.29-.457.652-.457 1.085v.005h-.934v-.005Zm5.849 7.004c.121-.208.213-.37.274-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM50.282 49.423v-.817h.929c.444 0 .807-.127 1.09-.38.283-.259.425-.585.425-.978 0-.394-.131-.708-.392-.94-.262-.233-.633-.35-1.112-.35-.444 0-.806.119-1.085.355-.28.236-.44.559-.484.967h-.929c.054-.66.308-1.184.763-1.574.458-.39 1.05-.585 1.778-.585.698 0 1.278.188 1.74.564.462.375.693.854.693 1.434 0 .483-.144.89-.43 1.219-.286.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.402.564.347.337.52.777.52 1.322 0 .433-.121.823-.364 1.17a2.39 2.39 0 0 1-.989.806c-.415.19-.875.285-1.38.285-.802 0-1.448-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.043.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.595.5-1 0-.454-.161-.814-.483-1.079-.32-.265-.756-.397-1.311-.397h-.972Zm4.5 5.065c.123-.208.214-.37.275-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822Z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-4{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='m56.85 18-.778-2.218h-3.083L52.21 18h-1.015l2.857-7.75h.956L57.866 18H56.85Zm-2.336-6.574-1.24 3.534h2.513l-1.24-3.534h-.033ZM55.03 36h-3.024v-7.75h3.035c.662 0 1.197.177 1.606.531.411.355.617.822.617 1.402 0 .405-.13.772-.392 1.101-.258.326-.573.523-.945.591v.043c.526.068.945.274 1.257.618.315.343.472.773.472 1.289 0 .684-.233 1.217-.698 1.6-.462.383-1.105.575-1.928.575Zm-2.057-6.896v2.486h1.547c.572 0 1.01-.11 1.31-.333.304-.222.457-.542.457-.961 0-.383-.127-.677-.382-.881-.254-.208-.616-.311-1.085-.311h-1.847Zm0 6.042h1.912c.583 0 1.026-.116 1.326-.35.301-.232.452-.572.452-1.02 0-.902-.623-1.353-1.87-1.353h-1.82v2.723ZM54.39 53.129c-1.07 0-1.92-.36-2.55-1.08-.627-.723-.94-1.699-.94-2.927 0-1.217.316-2.188.95-2.911.634-.727 1.48-1.09 2.54-1.09.846 0 1.562.236 2.15.709.59.469.946 1.09 1.068 1.863h-.978a2.1 2.1 0 0 0-.8-1.219c-.408-.308-.888-.462-1.44-.462-.755 0-1.36.283-1.815.849-.455.566-.682 1.32-.682 2.261 0 .953.226 1.71.677 2.272.451.562 1.06.843 1.826.843.57 0 1.05-.13 1.44-.392.39-.261.655-.628.794-1.1h.978c-.18.765-.546 1.354-1.101 1.766-.555.412-1.26.618-2.116.618ZM49 17h-1v1h1zM49 35h-1v1h1zM49 52h-1v1h1z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-5{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M51.404 17.243c.473 0 .863-.136 1.171-.409.312-.275.467-.62.467-1.036v-.467l-1.514.096c-.881.054-1.322.364-1.322.93 0 .268.108.483.323.644.218.161.51.242.875.242Zm-.198.81c-.588 0-1.06-.155-1.418-.467-.358-.311-.537-.723-.537-1.235 0-.498.186-.888.558-1.17.373-.287.91-.452 1.611-.495l1.622-.097v-.483c0-.358-.114-.634-.343-.827-.23-.194-.557-.29-.983-.29-.337 0-.621.08-.854.241-.23.162-.373.378-.43.65h-.897c.015-.487.231-.895.65-1.224.419-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36V18h-.886v-1.004h-.022c-.164.322-.415.58-.752.773-.336.19-.707.285-1.111.285Zm3.577 1.435c.121-.208.213-.37.274-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM51.759 36.054a2.3 2.3 0 0 1-1.117-.264 1.979 1.979 0 0 1-.769-.767h-.02V36h-.887v-8.089h.934v3.239h.022c.183-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.322.272 1.773.817.45.54.677 1.251.677 2.132 0 .884-.228 1.597-.683 2.138-.45.54-1.047.81-1.788.81Zm-.167-5.065c-.505 0-.915.197-1.23.59-.311.39-.467.9-.467 1.526 0 .63.156 1.14.467 1.53.315.391.725.586 1.23.586.509 0 .915-.191 1.22-.574.308-.384.461-.898.461-1.542 0-.641-.154-1.153-.462-1.536-.304-.387-.71-.58-1.219-.58Zm3.19 6.499c.123-.208.214-.37.275-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822ZM54.31 49.095h-.918a1.274 1.274 0 0 0-.484-.795c-.261-.207-.601-.311-1.02-.311-.509 0-.919.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.468 1.547.315.38.728.57 1.24.57.405 0 .736-.092.994-.275.261-.186.432-.453.51-.8h.919c-.079.57-.34 1.03-.784 1.38-.44.351-.989.527-1.644.527-.802 0-1.445-.265-1.928-.795-.484-.534-.725-1.252-.725-2.154 0-.888.241-1.6.725-2.138.483-.54 1.122-.81 1.917-.81.684 0 1.245.189 1.681.569.437.376.686.832.747 1.37Zm.473 5.393c.121-.208.213-.37.274-.489.064-.115.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.93 6.93 0 0 0-.36-1.343 7.93 7.93 0 0 0-.424-.919 3.367 3.367 0 0 0-.408-.601h.784c.168.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.845 8.845 0 0 1 .328 2.412c0 1.923-.486 3.49-1.456 4.705h-.822Z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-numbers-6{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' fill='none'%3E%3Cpath fill='%23444' d='M43 13H8v1h35zM43 31H8v1h35zM43 49H8v1h35z' opacity='.3'/%3E%3Cpath fill='%23444' d='M54.82 17.243c.473 0 .863-.136 1.171-.409.312-.275.468-.62.468-1.036v-.467l-1.515.096c-.881.054-1.321.364-1.321.93 0 .268.107.483.322.644.218.161.51.242.875.242Zm-.198.81c-.588 0-1.06-.155-1.418-.467-.358-.311-.538-.723-.538-1.235 0-.498.187-.888.56-1.17.371-.287.909-.452 1.61-.495l1.623-.097v-.483c0-.358-.115-.634-.344-.827-.23-.194-.557-.29-.983-.29-.337 0-.621.08-.854.241-.23.162-.373.378-.43.65h-.897c.014-.487.231-.895.65-1.224.419-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36V18h-.886v-1.004h-.022a1.86 1.86 0 0 1-.752.773c-.336.19-.707.285-1.111.285ZM55.175 36.054a2.3 2.3 0 0 1-1.117-.264 1.979 1.979 0 0 1-.768-.767h-.022V36h-.886v-8.089h.934v3.239h.022c.182-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.322.272 1.773.817.45.54.676 1.251.676 2.132 0 .884-.227 1.597-.682 2.138-.45.54-1.047.81-1.788.81Zm-.167-5.065c-.505 0-.915.197-1.23.59-.311.39-.467.9-.467 1.526 0 .63.156 1.14.467 1.53.315.391.725.586 1.23.586.509 0 .915-.191 1.22-.574.307-.384.462-.898.462-1.542 0-.641-.154-1.153-.462-1.536-.305-.387-.711-.58-1.22-.58ZM57.726 49.095h-.918a1.274 1.274 0 0 0-.484-.795c-.261-.207-.601-.311-1.02-.311-.509 0-.919.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.468 1.547.315.38.728.57 1.24.57.405 0 .736-.092.994-.275.261-.186.432-.453.51-.8h.919c-.079.57-.34 1.03-.784 1.38-.44.351-.989.527-1.644.527-.802 0-1.445-.265-1.928-.795-.483-.534-.725-1.252-.725-2.154 0-.888.242-1.6.725-2.138.483-.54 1.122-.81 1.917-.81.684 0 1.245.189 1.681.569.437.376.686.832.747 1.37ZM51 17h-1v1h1zM51 35h-1v1h1zM51 52h-1v1h1z'/%3E%3C/svg%3E")}[dir=rtl] i.icon.icon-align-left,[dir=rtl] i.icon.icon-align-right{transform:scaleX(-1)}[dir=rtl] i.icon.icon-text-orientation-horizontal{background-color:var(--brand-cell);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M9.514 10.75h1.755L8.069 2H6.363L3.25 10.75h1.712l.66-1.988h3.194l.698 1.988ZM7.197 4.041l1.101 3.247h-2.18l1.079-3.247ZM16 2h-3.194v8.75h2.72c1.028-.008 1.677-.028 1.946-.06.429-.051.789-.189 1.08-.412.294-.226.525-.527.692-.9.17-.379.256-.767.256-1.165 0-.505-.13-.945-.392-1.319s-.637-.638-1.123-.794c.345-.17.617-.427.817-.77.204-.342.306-.718.306-1.128 0-.378-.082-.718-.246-1.02a2.162 2.162 0 0 0-.616-.734 1.93 1.93 0 0 0-.834-.358C17.103 2.03 16.632 2 16 2Zm-1.58 3.48V3.456h.926c.76 0 1.22.01 1.38.03.268.036.47.14.604.31.138.168.208.387.208.657 0 .283-.08.511-.24.686-.157.172-.373.275-.65.31-.152.02-.542.03-1.171.03h-1.058Zm0 3.796v-2.34h1.302c.734 0 1.21.042 1.428.125.222.084.391.217.507.4.117.183.175.406.175.669 0 .31-.076.559-.23.746a.973.973 0 0 1-.582.346c-.157.036-.526.054-1.107.054h-1.494ZM6.016 13.25l-3.52 3.833-.497.542.498.542L6.018 22l.995-1.084-2.318-2.524H22v-1.534H4.695l2.318-2.524-.996-1.084Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain}[dir=rtl] i.icon.icon-text-orientation-anglecount{background-color:var(--brand-cell);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23000' d='m12.614 10.658-1.076-1.113.79-1.703-1.958-2.025-1.623.842-1.05-1.085L14.972 2l1.046 1.082-3.403 7.576Zm.301-4.079 1.316-2.756-2.653 1.374 1.337 1.382ZM18.92 6.085l1.96 2.025c.387.4.657.718.81.952.157.233.255.485.292.756a2 2 0 0 1-.073.856 1.905 1.905 0 0 1-.475.802c-.251.26-.544.434-.879.522a1.61 1.61 0 0 1-.973-.03c.203.407.27.812.202 1.215a2.032 2.032 0 0 1-.568 1.085 2.42 2.42 0 0 1-.871.575 1.928 1.928 0 0 1-.977.133c-.315-.043-.62-.185-.914-.424-.185-.15-.595-.549-1.23-1.196l-1.668-1.724 5.365-5.547Zm.097 1.946-1.24 1.283.648.67c.386.399.631.64.737.724.191.153.387.224.588.215.205-.01.395-.104.568-.283.166-.172.258-.354.275-.548.023-.194-.038-.387-.18-.58-.086-.114-.362-.412-.828-.894l-.568-.587Zm-2.133 2.206-1.435 1.483.916.947c.357.369.594.591.712.668a.822.822 0 0 0 .57.15c.208-.022.407-.131.597-.328.161-.166.262-.344.303-.534a.92.92 0 0 0-.066-.575c-.082-.191-.348-.52-.798-.985l-.8-.826Z'/%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M2 8.72h5.604v1.358H4.24L15.45 20.916 14.328 22 3.403 11.144v3.286H2V8.72Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain}[dir=rtl] i.icon.icon-text-orientation-angleclock{background-color:var(--brand-cell);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M8.72 22v-5.604h1.358v3.363L20.916 8.55 22 9.672 11.144 20.597h3.286V22H8.72Z' clip-rule='evenodd'/%3E%3Cpath fill='%23000' d='m10.658 11.386-1.113 1.076-1.703-.79-2.025 1.958.842 1.623-1.085 1.05L2 9.028l1.082-1.046 7.576 3.403Zm-4.079-.301L3.823 9.769l1.374 2.653 1.382-1.337ZM6.085 5.08 8.11 3.12c.4-.387.718-.657.952-.81.233-.157.485-.255.756-.292a2 2 0 0 1 .856.073c.295.085.562.243.802.475.26.251.434.544.522.879.09.332.08.657-.03.973.407-.203.812-.27 1.215-.202.403.07.764.259 1.085.568.252.244.444.535.575.871.131.332.175.658.133.977-.043.315-.185.62-.424.914-.15.185-.549.595-1.196 1.23l-1.724 1.668-5.547-5.365Zm1.946-.097 1.283 1.24.67-.648c.399-.385.64-.631.724-.737.153-.191.224-.387.215-.588-.01-.205-.104-.395-.283-.568-.172-.166-.354-.257-.548-.275-.194-.023-.387.038-.58.18-.114.086-.412.362-.894.828l-.587.568Zm2.206 2.133 1.483 1.435.947-.916c.369-.357.591-.594.668-.711a.822.822 0 0 0 .15-.57c-.022-.209-.131-.408-.328-.598a1.104 1.104 0 0 0-.534-.303.92.92 0 0 0-.575.066c-.191.082-.52.348-.985.798l-.826.8Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain}.device-ios{--toolbar-background:var(--background-primary,#fff);--toolbar-segment:var(--brand-cell,#40865c);--toolbar-icons:var(--brand-cell,#40865c)}.device-android{--toolbar-background:var(--brand-cell,#40865c)}.device-android .theme-type-dark{--toolbar-icons:var(--brand-cell,#40865c)}.page.page-users .block-title{font-size:17px;font-weight:400;line-height:17px;margin-bottom:20px;margin-top:20px;text-transform:none}.page.page-users .color{border-radius:50px;color:var(--fill-white);font-size:18px;line-height:40px;min-height:40px;min-width:40px;text-align:center}.about .page-content{display:flex;flex-direction:column;text-align:center}.about_ios{padding-bottom:30px;padding-top:120px}.about_android{padding-bottom:16px;padding-top:60px}.about_tablet{padding-bottom:12px;padding-top:12px}.about__text{color:var(--text-normal);font-size:12px;font-style:normal;font-weight:400;line-height:16px;margin:0;text-align:center}.about a{color:var(--brand-cell)}.about .logo-block__elem{display:flex;justify-content:center}.about .logo-block__elem img{height:auto;max-width:100%}.about__logo{background:url(../../../spreadsheeteditor/mobile/resources/img/about/logo-new.svg) no-repeat 50%;height:80px;width:100%}.about__editor{flex-grow:1;margin-top:20px}.about__contacts{padding-left:72px;padding-right:72px;text-align:center}.about__customer,.about__licensor{margin-top:12px;text-align:center}.theme-type-dark .about__logo{background:url(../../../spreadsheeteditor/mobile/resources/img/about/logo-new-white.svg) no-repeat 50%}.row{--f7-cols-per-row:1;align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:space-between}.row+.row{margin-top:var(--f7-grid-row-gap)}.navbar.main-navbar{height:0}.navbar.main-navbar.navbar-with-logo{height:26px}.navbar.main-navbar .navbar-inner{display:flex;justify-content:center;padding-top:8px}.navbar.main-navbar .navbar-bg:after,.navbar.main-navbar .navbar-bg:before{content:none}.navbar-hidden{transform:translate3d(0,calc((var(--f7-navbar-height) + var(--f7-subnavbar-height))*-1),0)}.navbar-hidden+.page-content,.navbar-hidden+.page>.page-content{padding-top:0}.page.editor>.page-content{transition:padding-top .3s ease-in}.subnavbar .subnavbar-inner{padding:0}.subnavbar .subnavbar-inner .title{flex-shrink:1;margin:0;overflow:hidden;padding:0;text-overflow:clip}.subnavbar .icon-back{color:var(--toolbar-icons)}.page.page-with-subnavbar .page-content{--f7-page-subnavbar-offset:0px}.page.page-with-subnavbar.page-with-logo .page-content{--f7-page-subnavbar-offset:26px}.popover .list:first-child,.popup .list:first-child,.sheet-modal .list:first-child{margin-bottom:0;margin-top:0}.popover .list .inner-range-title,.popup .list .inner-range-title,.sheet-modal .list .inner-range-title{color:var(--text-normal);padding:15px 0 0 15px}.popover .list .range-number,.popup .list .range-number,.sheet-modal .list .range-number{color:var(--text-normal);min-width:60px;text-align:right}.popover .page-content.no-padding-top,.popup .page-content.no-padding-top,.sheet-modal .page-content.no-padding-top{padding-top:0}.sheet-modal.coauth__sheet{transition:all .3s}.disabled,[disabled]{opacity:.55;pointer-events:none}.text-content{padding:14px 10px 0}.view .list{--menu-list-offset:0px;max-width:100%}.view .list ul{background:var(--f7-list-bg-color);max-width:100%}.view .list li.no-indicator .item-link .item-inner{padding-right:15px}.view .list li.no-indicator .item-link .item-inner:before{content:none}.view .list .item-text{-webkit-line-clamp:none;height:auto;max-height:none;text-overflow:clip;white-space:normal}.view .list .font-item img{filter:var(--image-border-types-filter,none)}.view .list .buttons .button.active{background-color:var(--active-opacity-cell)}.view .list .item-link .item-inner{width:100%}.view .list .item-inner{color:var(--text-normal)}.bullets,.multilevels,.numbers{min-height:160px}.bullets .row.list,.multilevels .row.list,.numbers .row.list{margin:0}.bullets .row.list ul,.multilevels .row.list ul,.numbers .row.list ul{grid-gap:10px;background:none;display:grid;grid-template-columns:repeat(4,auto);justify-content:space-around;padding:5px;width:100%}.bullets .row.list ul:after,.bullets .row.list ul:before,.multilevels .row.list ul:after,.multilevels .row.list ul:before,.numbers .row.list ul:after,.numbers .row.list ul:before{display:none}.bullets .row.list ul li,.multilevels .row.list ul li,.numbers .row.list ul li{border:1px solid #c4c4c4;height:70px;width:70px}html.pixel-ratio-2 .bullets .row.list ul li,html.pixel-ratio-2 .multilevels .row.list ul li,html.pixel-ratio-2 .numbers .row.list ul li{border:.5px solid #c4c4c4}html.pixel-ratio-3 .bullets .row.list ul li,html.pixel-ratio-3 .multilevels .row.list ul li,html.pixel-ratio-3 .numbers .row.list ul li{border:.33px solid #c4c4c4}.bullets .row.list ul li .thumb,.multilevels .row.list ul li .thumb,.numbers .row.list ul li .thumb{background-color:var(--fill-white);background-size:cover;height:100%;width:100%}.bullets .row.list ul li .thumb label,.multilevels .row.list ul li .thumb label,.numbers .row.list ul li .thumb label{color:var(--fill-black);position:absolute;text-align:center;top:34%;width:100%}.bullets .row.list ul li .item-marker,.bullets .row.list ul li .item-multilevellist,.bullets .row.list ul li .item-number,.multilevels .row.list ul li .item-marker,.multilevels .row.list ul li .item-multilevellist,.multilevels .row.list ul li .item-number,.numbers .row.list ul li .item-marker,.numbers .row.list ul li .item-multilevellist,.numbers .row.list ul li .item-number{height:68px;width:68px}.bullets .row.list .item-content,.multilevels .row.list .item-content,.numbers .row.list .item-content{min-height:68px;padding-left:0;padding-right:0}.bullets .row.list .item-content .item-inner,.multilevels .row.list .item-content .item-inner,.numbers .row.list .item-content .item-inner{padding:0}.bullets .row.list .item-content .item-inner:after,.multilevels .row.list .item-content .item-inner:after,.numbers .row.list .item-content .item-inner:after{display:none}.popover .page .list:first-child:last-child ul{background-color:var(--f7-list-bg-color);border-radius:0}.popover .list:first-child li:first-child,.popover .list:first-child li:first-child a,.popover .list:first-child li:first-child>label,.popover .list:last-child li:last-child,.popover .list:last-child li:last-child a,.popover .list:last-child li:last-child>label,.popover .page .list:first-child:last-child ul li:first-child .item-link,.popover .page .list:first-child:last-child ul li:last-child .item-link{border-radius:0}.shapes li{height:70px;margin:0 1px;width:70px}.shapes li .thumb{background-color:var(--brand-cell);height:100%;width:100%}.chart-types{width:100%}.chart-types .row{padding:0 10px}.chart-types li{height:60px;margin:6px;width:60px}.chart-types li .thumb{background-size:contain;height:100%;width:100%}.chart-styles .row li{margin:0;padding:1px}.chart-styles .row img{height:50px;width:50px}.segmented .decrement,.segmented .increment{text-overflow:clip}.content-block{box-sizing:border-box;margin:32px 0;padding:0 16px}.content-block p{color:var(--text-normal)}.color-schemes-menu{cursor:pointer;display:block}.color-schemes-menu .item-inner{justify-content:flex-start}.color-schemes-menu .color-schema-block{display:flex}.color-schemes-menu .color{box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);margin:0 2px 0 0;min-height:26px;min-width:26px}.color-schemes-menu .item-title{color:var(--text-normal);margin-left:20px}.slide-layout__list{margin:auto}.slide-layout ul{display:flex;flex-wrap:wrap;justify-content:space-around}.slide-layout ul:after,.slide-layout ul:before{display:none}.slide-layout li{margin-top:12px;position:relative;z-index:1}.slide-layout li img{box-shadow:0 0 0 1px rgba(0,0,0,.15)}.slide-layout .item-inner{padding-top:0}.slide-layout .item-inner:after{display:none}.slide-layout .item-inner:before{background-color:var(--brand-cell);background-repeat:no-repeat;bottom:0;content:"";height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='11' fill='transparent'/%3E%3Cpath d='M11 21a10 10 0 1 1 10-10 10 10 0 0 1-10 10Zm6.4-13.68L17.06 7a.48.48 0 0 0-.67 0l-7 6.84-2.44-2.6a.51.51 0 0 0-.59.08l-.36.34a.58.58 0 0 0 0 .65l3.19 3.35a.38.38 0 0 0 .39 0L17.4 8a.48.48 0 0 0 0-.67Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;opacity:0;position:absolute;right:11px;width:22px;z-index:1}.slide-layout .active .item-inner:before{opacity:1}.slide-transition .splitter{align-items:center;color:#000;display:flex}.slide-transition .splitter label{margin:0 5px}.slide-transition .buttons-row{display:flex;margin:0 0 0 10px;min-width:90px}.slide-transition .buttons-row .button{width:100%}.slide-transition .buttons-row .button:first-child{border-left-style:solid;border-left-width:1px;border-radius:5px 0 0 5px}.slide-transition .buttons-row .button:last-child{border-radius:0 5px 5px 0}.style-effect .list .item-title,.style-type .list .item-title{font-weight:400}.range-slider-delay{appearance:none;background:linear-gradient(90deg,#b7b8b7 0,#b7b8b7);background-position:50%;background-repeat:no-repeat;background-size:100% 2px;border:none;box-sizing:initial;margin:4px 0 5px;outline:0;width:100%}.range-slider-delay:disabled{opacity:.55}.range-slider-delay::-webkit-slider-thumb{appearance:none;background:#fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.3);cursor:pointer;height:28px;width:28px}.range-slider-delay::-ms-thumb{appearance:none;background:#fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.3);cursor:pointer;height:28px;width:28px}.buttons-list ul li{border:0;font-weight:400}.buttons-list ul li .item-link{height:100%}.buttons-list ul li .item-link .item-content{height:100%;min-height:auto;padding:0}.buttons-list ul li .item-link .item-inner{align-items:center;justify-content:center;min-height:auto;padding:0}.buttons-list ul li .item-link .item-inner:before{display:none}.item-color-auto .color-auto{background-color:#000;height:22px;width:22px}.item-color-auto.active .color-auto{border-radius:1px;box-shadow:0 0 0 1px #fff,0 0 0 4px var(--brand-cell)}.page .color-palettes .list ul .palette{padding:8px 0}.page .color-palettes .list ul .palette a{border-radius:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);flex-grow:1;margin:1px 1px 0 0;min-height:26px;min-width:10px;position:relative}.page .color-palettes .list ul .palette a.active:after{border-radius:1px;box-shadow:0 0 0 1px #fff,0 0 0 4px var(--brand-cell);content:" ";height:100%;position:absolute;width:100%;z-index:1}.page .color-palettes .list ul .palette a.transparent{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='0 0 22 22'%3E%3Cpath fill='none' stroke='red' stroke-linecap='undefined' stroke-linejoin='undefined' stroke-width='2' d='M0 22 22 0'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:100% 100%}.page .color-palettes .row{padding:0}.page .color-palettes .list .item-inner{color:var(--text-normal);display:block}.page .color-palettes .dynamic-colors .palette,.page .color-palettes .standart-colors .palette{display:flex}.page .color-palettes .dynamic-colors .empty-color{background-color:#fff}#color-picker{align-items:center;display:flex;justify-content:space-around;margin:4px auto 0;max-width:300px}#color-picker .color-picker-container{font-size:0;height:auto;max-width:100%;position:relative;width:calc(100% - 94px)}#color-picker .color-picker-container .color-picker-module-wheel{margin:0}#color-picker .right-block{margin-left:20px}#color-picker .right-block .color-hsb-preview{border:1px solid #c4c4c4;border-radius:100px;height:72px;overflow:hidden;width:72px}#color-picker .right-block .color-hsb-preview .current-color-hsb-preview,#color-picker .right-block .color-hsb-preview .new-color-hsb-preview{height:36px}#color-picker .right-block .color-hsb-preview .new-color-hsb-preview{border-radius:100px 100px 0 0}#color-picker .right-block .color-hsb-preview .current-color-hsb-preview{border-radius:0 0 100px 100px}#color-picker .right-block .button-round{align-items:center;background-color:var(--fill-white);border:0;border-radius:100px;box-shadow:0 4px 4px rgba(0,0,0,.25);display:flex;height:72px;justify-content:center;margin-top:20px;padding:0;width:72px}.table-styles{width:100%}.table-styles .row,.table-styles .row li{margin-bottom:12px}.table-styles .row div,.table-styles .row li{align-items:center;box-shadow:0 0 0 1px #c4c4c4;display:flex;justify-content:center}.table-styles .row div,.table-styles li{margin:0;padding:1px}.table-styles .row div img,.table-styles li img{height:50px;width:70px}#edit-table-style .list ul ul{padding-left:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.icon.lang-flag{background-image:url(../../../spreadsheeteditor/mobile/resources/img/controls/flags@2x.png);background-size:48px auto;height:12px;width:16px}.lang-flag.ca,.lang-flag.ca-ES{background-position:0 0}.lang-flag.cs,.lang-flag.cs-CZ{background-position:-16px 0}.lang-flag.da,.lang-flag.da-DK{background-position:-32px 0}.lang-flag.de,.lang-flag.de-DE{background-position:0 -12px}.lang-flag.el,.lang-flag.el-GR{background-position:-16px -12px}.lang-flag.en,.lang-flag.en-US{background-position:-32px -12px}.lang-flag.fr,.lang-flag.fr-FR{background-position:0 -24px}.lang-flag.hu,.lang-flag.hu-HU{background-position:-16px -24px}.lang-flag.it,.lang-flag.it-IT{background-position:-32px -24px}.lang-flag.ko,.lang-flag.ko-KR{background-position:0 -36px}.lang-flag.nl,.lang-flag.nl-NL{background-position:-16px -36px}.lang-flag.nb,.lang-flag.nb-NO,.lang-flag.nn,.lang-flag.nn-NO{background-position:-32px -36px}.lang-flag.pl,.lang-flag.pl-PL{background-position:0 -48px}.lang-flag.pt,.lang-flag.pt-BR{background-position:-16px -48px}.lang-flag.ro,.lang-flag.ro-RO{background-position:-32px -48px}.lang-flag.ru,.lang-flag.ru-RU{background-position:0 -60px}.lang-flag.sv,.lang-flag.sv-SE{background-position:-32px -60px}.lang-flag.tr,.lang-flag.tr-TR{background-position:0 -72px}.lang-flag.uk,.lang-flag.uk-UA{background-position:-16px -72px}.lang-flag.lv,.lang-flag.lv-LV{background-position:-32px -72px}.lang-flag.lt,.lang-flag.lt-LT{background-position:0 -84px}.lang-flag.vi,.lang-flag.vi-VN{background-position:-16px -84px}.lang-flag.de-CH,.lang-flag.fr-CH,.lang-flag.it-CH{background-position:-32px -84px}.lang-flag.pt-PT{background-position:-16px -96px}.lang-flag.de-AT{background-position:-32px -96px}.lang-flag.es,.lang-flag.es-ES{background-position:0 -108px}.lang-flag.en-GB{background-position:-32px -108px}.lang-flag.en-AU{background-position:0 -120px}.lang-flag.az-Latn-AZ{background-position:-16px -120px}.lang-flag.en-ID,.lang-flag.id,.lang-flag.id-ID{background-position:-32px -120px}.lang-flag.bg,.lang-flag.bg-BG{background-position:0 -132px}.lang-flag.ca-ES-valencia{background-position:-16px -132px}.lang-flag.en-CA{background-position:-32px -132px}.lang-flag.en-ZA{background-position:0 -144px}.lang-flag.eu,.lang-flag.eu-ES{background-position:-16px -144px}.lang-flag.gl,.lang-flag.gl-ES{background-position:-32px -144px}.lang-flag.hr,.lang-flag.hr-HR{background-position:0 -156px}.lang-flag.lb,.lang-flag.lb-LU{background-position:-16px -156px}.lang-flag.mn,.lang-flag.mn-MN{background-position:-32px -156px}.lang-flag.sl,.lang-flag.sl-SI{background-position:0 -168px}.lang-flag.sr,.lang-flag.sr-Cyrl-RS,.lang-flag.sr-Latn-RS{background-position:-16px -168px}.lang-flag.sk,.lang-flag.sk-SK{background-position:-32px -168px}.lang-flag.kk,.lang-flag.kk-KZ{background-position:0 -180px}.lang-flag.fi,.lang-flag.fi-FI,.lang-flag.sv-FI{background-position:-16px -180px}.lang-flag.zh,.lang-flag.zh-CN{background-position:-32px -180px}.lang-flag.ja,.lang-flag.ja-JP{background-position:0 -192px}.lang-flag.es-MX{background-position:-16px -192px}.checkbox-in-modal{align-items:center;display:flex;margin-top:10px}.checkbox-in-modal .right-text{margin-left:10px}.username-tip{color:#fff;display:none;height:20px;opacity:0;padding:0 10px;pointer-events:none;position:absolute;transition:opacity .1ms ease-out;z-index:900}.username-tip.active{display:block;opacity:1}.dlg-adv-options{z-index:13700}.dlg-adv-options .content-block{padding:0}.dlg-adv-options .picker-3d .picker-item{font-size:16px;padding:0;text-align:left}.dlg-adv-options .picker-center-highlight{left:0;right:0;width:100%}.dlg-macros-request .dialog-text{word-break:break-word}@keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}@-o-keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}@-moz-keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}@-webkit-keyframes flickerAnimation{0%{opacity:.1}50%{opacity:1}to{opacity:.1}}.doc-placeholder-container{height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:6000}.statusbar .statusbar--box-tabs>ul>.locked a{box-shadow:inset 0 2px red}.font-item .item-inner{overflow:hidden}.font-item .item-inner:after{left:16px}.cell-editor{overflow:initial}.functions-list{background-color:var(--background-primary);max-height:200px;overflow-x:hidden;overflow-y:auto;width:360px}.functions-list__mobile{box-shadow:0 10px 10px -10px rgba(0,0,0,.3);left:0;position:absolute;right:0;width:100%}.functions-list__mobile .list{margin:0}.functions-list__mobile .list ul:before{display:none}.functions-list__mobile .list .item-content{padding-left:0}.functions-list__mobile .list .item-inner{padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left) - var(--menu-list-offset))}.functions-list__mobile .list .item-title{font-size:15px}#idx-functions-list{width:350px}#idx-functions-list .popover-inner .navbars .right .link{font-weight:600}#idx-functions-list .popover-inner .navbars .navbar-bg{background:var(--background-secondary)}#idx-functions-list .popover-inner .navbars .navbar-bg:after,#idx-functions-list .popover-inner .page-function-info .navbar .navbar-bg:after{background:var(--background-menu-divider)}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner{background:var(--background-secondary)}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner .title{color:var(--text-normal)}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner .right .link{color:var(--brand-cell);font-weight:600}#idx-functions-list .popover-inner .page-function-info .navbar .navbar-inner .icon-back:after{color:var(--brand-cell)}.highlight-palette{width:100%}.highlight-color{box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);flex-grow:1;margin:1px;min-height:34px;min-width:10px;position:relative}.highlight-color_active:after{border-radius:1px;box-shadow:0 0 0 1px #fff,0 0 0 4px #446995;content:" ";height:100%;position:absolute;width:100%;z-index:1}#idx-celleditor.expanded .functions-list__mobile{top:70px}.popover__functions{box-shadow:0 10px 100px rgba(0,0,0,.3)}.popover__functions .view{transition:height .2s}.popover__functions .popover-angle.on-bottom{display:none}.target-function-list{bottom:0;height:100%;left:0;position:absolute;top:0;width:0}.dropdown-list__placeholder{opacity:.6}.dropdown-list__placeholder .item-inner{border-bottom:1px solid var(--f7-list-item-border-color)}.swiper-wrapper .swiper-slide .list ul{background-color:initial}.swiper-pagination-bullet{background:var(--background-menu-divider);opacity:1}.swiper-pagination-bullet-active{background:var(--text-secondary)}.swiper-pagination-bullets{bottom:9px;position:fixed;width:100%}.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 5.5px}.preview-cell-style{background-color:var(--fill-white);background-position:50%;background-repeat:no-repeat;background-size:cover;border:.5px solid var(--background-menu-divider);border-radius:4px;height:44px;width:104px}.sharing-placeholder{height:100%}.sheet-modal .page-current-comment{padding-bottom:60px}.picker-columns{justify-content:space-around}.row-picker .col-50{color:var(--text-secondary);text-align:center}.block{font-size:12px;font-style:normal;font-weight:400;line-height:16px;margin-top:8px}.block-title+.block,.block-title+.block-header,.block-title+.card,.block-title+.list,.block-title+.timeline{margin:0}.inputs-list{margin-bottom:0}.inputs-list ul{background:var(--f7-list-bg-color);list-style:none;margin:0;padding:0;position:relative}.list input[type=password],.list input[type=text]{background:transparent}.dialog .modal-password{position:relative}.dialog .modal-password__icon{position:absolute;right:4px;top:calc(50% - 12.5px)}.dialog .modal-password .item-input-wrap{align-items:center;display:flex;justify-content:space-between}.version-history__user{border-radius:50%;border-radius:50px;color:var(--fill-white);font-size:18px;height:40px;line-height:40px;min-height:40px;min-width:40px;text-align:center;width:40px}.accept-reject .link{margin-right:20px}.beta-badge{border-radius:4px;color:var(--fill-white);font-size:12px;font-weight:400;letter-spacing:.5px;line-height:16px;padding:2px 4px}.device-ios .app-layout{--f7-navbar-link-color:var(--brand-cell);--f7-subnavbar-link-color:var(--brand-cell);--f7-navbar-text-color:var(--text-normal);--f7-navbar-title-line-height:44px;--f7-navbar-link-line-height:44px;--f7-navbar-title-font-size:17px;--f7-list-bg-color:var(--background-primary);--f7-navbar-bg-color:var(--toolbar-background);--f7-tabbar-link-inactive-color:var(--toolbar-segment);--f7-radio-active-color:var(--brand-cell);--f7-toggle-active-color:var(--brand-cell);--f7-range-bar-active-bg-color:var(--brand-cell);--f7-list-button-text-color:var(--brand-cell);--f7-list-item-border-color:var(--background-menu-divider);--f7-page-bg-color:var(--background-tertiary);--f7-list-item-title-text-color:var(--text-normal);--f7-list-item-text-text-color:var(--text-normal);--f7-list-item-subtitle-text-color:var(--text-secondary);--f7-label-text-color:var(--text-normal);--f7-list-item-after-text-color:var(--text-normal);--f7-input-text-color:var(--text-normal);--f7-block-title-text-color:var(--text-secondary);--f7-input-placeholder-color:var(--text-secondary);--f7-list-chevron-icon-color:var(--text-tertiary);--f7-searchbar-search-icon-color:var(--text-tertiary);--f7-searchbar-input-clear-button-color:var(--text-tertiary);--f7-toggle-inactive-border-color:var(--background-menu-divider);--f7-toggle-inactive-bg-color:var(--background-menu-divider);--f7-actions-button-border-color:var(--background-menu-divider);--f7-popover-bg-color:var(--background-primary);--f7-dialog-bg-color-rgb:var(--background-secondary);--f7-dialog-title-text-color:var(--text-normal);--f7-dialog-text-color:var(--text-normal);--f7-dialog-button-text-color:var(--brand-cell);--f7-dialog-border-divider-color:var(--background-menu-divider);--f7-subnavbar-border-color:var(--background-menu-divider);--f7-list-border-color:var(--background-menu-divider);--f7-picker-item-text-color:rgba(var(--text-normal),0.45);--f7-picker-item-selected-text-color:var(--text-normal);--f7-block-text-color:var(--text-secondary);--f7-theme-color-shade:var(--background-primary);--f7-fab-pressed-bg-color:var(--background-primary);--f7-input-clear-button-color:var(--text-tertiary)}.device-ios .app-layout #editor-navbar.navbar .left a+a,.device-ios .app-layout #editor-navbar.navbar .right a+a{margin-left:0}.device-ios .app-layout .navbar,.device-ios .app-layout .navbar-bg,.device-ios .app-layout .subnavbar{background-color:var(--f7-navbar-bg-color)}.device-ios .app-layout .navbar a.btn-doc-back,.device-ios .app-layout .navbar-bg a.btn-doc-back,.device-ios .app-layout .subnavbar a.btn-doc-back{width:22px}.device-ios .app-layout .navbar .title,.device-ios .app-layout .navbar-bg .title,.device-ios .app-layout .subnavbar .title{color:var(--text-normal);font-weight:600}.device-ios .app-layout .navbar .navbar-inner,.device-ios .app-layout .navbar .subnavbar-inner,.device-ios .app-layout .navbar-bg .navbar-inner,.device-ios .app-layout .navbar-bg .subnavbar-inner,.device-ios .app-layout .subnavbar .navbar-inner,.device-ios .app-layout .subnavbar .subnavbar-inner{z-index:auto}.device-ios .app-layout .navbar .sheet-close,.device-ios .app-layout .navbar-bg .sheet-close,.device-ios .app-layout .subnavbar .sheet-close{display:flex;height:44px;justify-content:center;width:44px}.device-ios .app-layout .subnavbar .icon-back{color:var(--brand-cell)}.device-ios .app-layout .popover__titled .list:first-child li:first-child>label,.device-ios .app-layout .popover__titled .list:first-child li:last-child>label,.device-ios .app-layout .popover__titled .list:first-child ul,.device-ios .app-layout .popover__titled .list:last-child li:first-child>label,.device-ios .app-layout .popover__titled .list:last-child li:last-child>label,.device-ios .app-layout .popover__titled .list:last-child ul{border-radius:0}.device-ios .app-layout .popover__titled .popover-inner>.view{border-radius:var(--f7-popover-border-radius)}.device-ios .app-layout .popover__titled .navbar-bg{backdrop-filter:none}.device-ios .app-layout .popover__titled .navbar-bg:after{background:var(--background-menu-divider)}.device-ios .app-layout .popover__titled .list:last-child li:last-child:after{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-navbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%}.device-ios .app-layout .popover li:last-child .segmented a:first-child{border-radius:var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius)}.device-ios .app-layout .popover li:last-child .segmented a:last-child{border-radius:0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0}.device-ios .app-layout .popover-arrow:after{background:rgba(0,0,0,.9)}.device-ios .app-layout .list .item-content .color-preview{background:var(--fill-white);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);box-sizing:border-box;display:inline-block;height:8px;margin-top:21px;width:22px}.device-ios .app-layout .list .item-content .item-after .color-preview{height:30px;margin-top:-3px;width:75px}.device-ios .app-layout .list .item-inner{padding-top:7px}.device-ios .app-layout .list .item-inner .item-after .after-start{margin:0 5px}.device-ios .app-layout .list .item-inner .item-after .segmented{margin-left:10px;min-width:90px}.device-ios .app-layout .list .buttons .item-inner{align-items:stretch;padding-bottom:0;padding-top:0}.device-ios .app-layout .list .buttons .item-inner>.row{align-items:stretch;width:100%}.device-ios .app-layout .list .buttons .item-inner>.row .button{align-items:center;border:none;border-radius:0;display:flex;flex:1;font-size:17px;height:inherit;justify-content:center}.device-ios .app-layout .list .list-input-right input{text-align:right}.device-ios .app-layout .links-list a:after,.device-ios .app-layout .list .item-inner:after,.device-ios .app-layout .simple-list li:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.device-ios .app-layout .tab-buttons{align-self:center;display:flex;flex-wrap:nowrap;width:100%}.device-ios .app-layout .tab-buttons .tab-link{-webkit-box-flex:1;border:1px solid var(--toolbar-segment);color:var(--brand-cell);cursor:pointer;display:block;font-family:inherit;font-size:14px;font-weight:600;height:29px;line-height:26px;margin:0;outline:0;overflow:hidden;padding:0 1px;position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;width:100%}.device-ios .app-layout .tab-buttons .tab-link:first-child{border-left-style:solid;border-left-width:1px;border-radius:5px 0 0 5px}.device-ios .app-layout .tab-buttons .tab-link:last-child{border-radius:0 5px 5px 0}.device-ios .app-layout .tab-buttons .tab-link.tab-link-active{background:var(--toolbar-segment);color:var(--brand-text-on-brand)}.device-ios .app-layout .tab-buttons .tab-link.tab-link-active i.icon{background-color:var(--brand-text-on-brand)}.device-ios .app-layout .button{background:0 0;border:1px solid var(--brand-cell);box-sizing:border-box;color:var(--brand-cell);cursor:pointer;display:block;font-family:inherit;font-size:14px;height:29px;line-height:27px;margin:0;outline:0;overflow:hidden;padding:0 10px;position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.device-ios .app-layout .button-fill{background-color:var(--background-primary);color:var(--brand-cell)}.device-ios .app-layout .button-red{background-color:var(--background-primary);color:var(--text-error)}.device-ios .app-layout .buttons-list li{border:0;border-radius:0;box-shadow:none;font-size:17px;height:43px;min-height:43px;padding:0;text-transform:none}.device-ios .app-layout .button-red .list-button{color:var(--text-error)}.device-ios .app-layout .list-button{position:static}.device-ios .app-layout .block-title{color:#6d6d72;font-size:14px;line-height:1;margin:35px 15px 10px;overflow:hidden;position:relative;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.device-ios .app-layout .shapes .page-content{background:var(--fill-white)}.device-ios .app-layout .dialog{background-color:var(--f7-dialog-bg-color-rgb)}.device-ios .app-layout #color-picker .right-block .button-round .icon{height:30px;width:30px}.device-ios .app-layout .content-block{color:#6d6d72}.device-ios .app-layout #add-chart .page-content,.device-ios .app-layout #add-chart.page-content,.device-ios .app-layout #add-shape .page-content,.device-ios .app-layout #add-shape.page-content,.device-ios .app-layout #add-slide .page-content,.device-ios .app-layout #add-slide.page-content,.device-ios .app-layout #add-table .page-content,.device-ios .app-layout #add-table.page-content,.device-ios .app-layout .dataview .page-content,.device-ios .app-layout .dataview.page-content{background-color:var(--background-tertiary)}.device-ios .app-layout input[type=number]:-moz-placeholder,.device-ios .app-layout input[type=number]:-ms-input-placeholder,.device-ios .app-layout input[type=number]::-moz-placeholder,.device-ios .app-layout input[type=number]::-webkit-input-placeholder,.device-ios .app-layout input[type=number]::placeholder{color:#40865c}.device-ios .app-layout .regional-settings .item-title-row{align-items:center;display:flex;justify-content:flex-start}.device-ios .app-layout .regional-settings .item-title-row .item-title{margin-left:20px;white-space:normal}.device-ios .app-layout .navbar .searchbar{background:var(--f7-navbar-bg-color)}.device-ios .app-layout .navbar .searchbar-input-wrap{height:28px;margin-right:10px;position:relative}.device-ios .app-layout .navbar .buttons-row-replace a{color:var(--brand-cell)}.device-ios .app-layout .searchbar input{appearance:none;background-color:var(--background-button);border:none;border-radius:5px;box-sizing:border-box;color:var(--text-normal);display:block;font-family:inherit;font-size:14px;font-weight:400;height:100%;padding:0 36px 0 28px;width:100%}.device-ios .app-layout .searchbar input::placeholder{color:var(--text-tertiary)}.device-ios .app-layout .searchbar .number-search-results{color:var(--text-tertiary);font-size:13px;font-weight:400;line-height:18px;position:absolute;right:26px;top:4.5px;z-index:100}.device-ios .app-layout .searchbar-inner__left{justify-content:center;margin-right:10px}.device-ios .app-layout .searchbar-inner__right .buttons-row a.next{margin-left:15px}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__right{width:28%}@media (max-width:550px){.device-ios .app-layout .navbar .searchbar-input-wrap{margin-right:0}.device-ios .app-layout .searchbar-expandable.searchbar-enabled{top:0}.device-ios .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__center{flex-direction:column}.device-ios .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__right{flex-direction:column-reverse;margin-left:10px}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace{height:88px}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner{height:100%}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__center .searchbar-input-wrap{margin:8px 0}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__right{height:100%;justify-content:space-between;width:auto}.device-ios .app-layout .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__right .buttons-row-replace{height:50%}}.device-ios .app-layout .actions-button{--f7-actions-button-border-color:var(--background-menu-divider);background:var(--background-secondary)}.device-ios .app-layout .actions-button-text{color:var(--text-normal);font-size:20px;text-overflow:ellipsis;white-space:normal}.device-ios .app-layout input.modal-text-input{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;background:var(--background-primary);border:1px solid var(--text-tertiary);border-radius:0;box-shadow:0 0 0 transparent;box-sizing:border-box;display:block;font-family:inherit;font-size:14px;height:26px;margin:15px 0 0;padding:0 5px;width:100%}.device-ios .app-layout .font-item .item-content{padding-left:0}.device-ios .app-layout .edit-comment-popup .navbar .title{line-height:normal}.device-ios .app-layout .version-history__title{color:var(--text-secondary);font-size:13px;font-style:normal;font-weight:400;line-height:18px;margin-bottom:4px;margin-top:16px}.device-ios .app-layout .version-history__btn{background:transparent;border:0;color:var(--brand-cell);font-size:15px;font-style:normal;font-weight:600;letter-spacing:-.24px;line-height:20px;margin-top:22px;outline:none;padding:0;text-transform:uppercase;width:auto}.device-ios .app-layout .version-history__list ul{background:var(--background-primary)}.device-ios .app-layout .version-history__list .item-title{color:var(--text-normal);font-size:13px;font-weight:600;letter-spacing:-.08px;line-height:18px}.device-ios .app-layout .version-history__list .item-inner,.device-ios .app-layout .version-history__list .item-media{padding-bottom:10px;padding-top:10px}.device-ios .app-layout .version-history__list .item-link .item-title-row:before{display:none}.device-ios .app-layout .version-history__list .item-subtitle{color:var(--text-secondary);font-size:11px;font-style:normal;font-weight:400;letter-spacing:.06px;line-height:13px;margin-top:3px}.device-ios .app-layout .version-history__item_active{background-color:var(--canvas-ruler-margins-background)}.device-ios .app-layout .btn-close-history{color:var(--brand-cell);font-size:17px;font-style:normal;font-weight:400;letter-spacing:-.41px;line-height:22px;margin-left:10px}.device-ios .app-layout .beta-badge{background-color:#ff9f0a;margin-left:10px}.device-android .app-layout{--f7-navbar-shadow-image:none;--f7-theme-color:var(--brand-cell);--f7-navbar-bg-color:var(--toolbar-background);--f7-navbar-link-color:var(--fill-white);--f7-navbar-text-color:var(--fill-white);--f7-navbar-height:56px;--f7-list-bg-color:var(--background-primary);--f7-subnavbar-bg-color:var(--toolbar-background);--f7-subnavbar-link-color:var(--toolbar-icons);--f7-subnavbar-text-color:var(--fill-white);--f7-subnavbar-height:56px;--f7-radio-active-color:var(--brand-cell);--f7-range-bar-active-bg-color:var(--brand-cell);--f7-range-knob-color:var(--brand-cell);--f7-range-knob-size:16px;--f7-list-item-after-text-color:var(--text-normal);--f7-link-highlight-color:transparent;--f7-link-touch-ripple-color:hsla(0,0%,100%,.1);--f7-actions-bg-color:var(--background-secondary);--f7-actions-button-border-color:var(--background-menu-divider);--f7-popover-bg-color:var(--background-secondary);--f7-dialog-bg-color:var(--background-secondary);--f7-dialog-text-color:var(--text-secondary);--f7-dialog-title-text-color:var(--text-normal);--f7-dialog-button-text-color:var(--brand-cell);--f7-picker-item-text-color:rgba(var(--text-normal),0.45);--f7-picker-item-selected-text-color:var(--text-normal);--f7-input-bg-color:var(--background-primary);--f7-input-placeholder-color:var(--text-secondary);--f7-input-text-color:var(--text-normal);--f7-block-text-color:var(--text-secondary);--f7-dialog-border-radius:0;--f7-sheet-border-radius:0;--f7-popover-border-radius:4px;--f7-actions-border-radius:0;--f7-box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);--f7-popover-box-shadow:var(--f7-box-shadow);--f7-toggle-active-bg-color:var(--brand-cell);--f7-toggle-active-border-color:var(--brand-cell);--f7-navbar-title-margin-left:20px;--f7-navbar-title-margin-right:20px;--f7-input-focused-border-color:var(--brand-cell);--f7-label-focused-text-color:var(--brand-cell)}.device-android .app-layout .button{--f7-touch-ripple-color:transparent}.device-android .app-layout .segmented .button{--f7-touch-ripple-color:var(--f7-list-link-pressed-bg-color)}.device-android .app-layout .navbar{--f7-touch-ripple-color:hsla(0,0%,100%,.1)}.device-android .app-layout .navbar .sheet-close{display:flex;height:56px;justify-content:center;width:56px}.device-android .app-layout .navbar-inner{background:var(--f7-navbar-bg-color);background-color:var(--f7-navbar-bg-color,var(--f7-bars-bg-color));background-image:var(--f7-navbar-bg-image,var(--f7-bars-bg-image))}.device-android .app-layout .page.page-with-subnavbar.page-with-logo .page-content{--f7-page-navbar-offset:var(--f7-navbar-height)}.device-android .app-layout .page{--f7-text-color:var(--text-normal);--f7-list-item-title-text-color:var(--text-normal);--f7-list-item-text-text-color:var(--text-normal);--f7-list-item-subtitle-text-color:var(--text-secondary);--f7-block-title-text-color:var(--text-secondary);--f7-label-text-color:var(--text-normal);--f7-page-bg-color:var(--background-tertiary);--f7-list-item-border-color:var(--background-menu-divider);--f7-list-chevron-icon-color:var(--text-tertiary);--f7-actions-button-text-color:var(--text-normal);--f7-subnavbar-border-color:var(--background-menu-divider);--f7-list-border-color:var(--background-menu-divider)}.device-android .app-layout .add-popup .view .add-image ul:after,.device-android .app-layout .add-popup .view .inputs-list ul:after{display:none}.device-android .app-layout .coauth__sheet{max-height:65%}.device-android .app-layout .segmented .decrement,.device-android .app-layout .segmented .increment{border:none;border-radius:0;display:flex;height:32px;margin-left:0;min-width:40px}.device-android .app-layout .segmented .decrement i.icon-expand-down,.device-android .app-layout .segmented .increment i.icon-expand-down{background:var(--brand-cell)}.device-android .app-layout .segmented label{color:var(--text-normal);line-height:32px;margin:0 5px}.device-android .app-layout .button{--f7-button-text-color:var(--brand-cell);appearance:none;background:0 0;border-radius:2px;box-sizing:border-box;color:var(--brand-cell);cursor:pointer;display:block;font-family:inherit;font-size:14px;height:36px;line-height:36px;margin:0;min-width:64px;outline:0;overflow:hidden;padding:0 8px;position:relative;text-align:center;text-overflow:ellipsis;text-transform:uppercase;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition-duration:.3s;transition-duration:.3s;white-space:nowrap}.device-android .app-layout .button-fill{background-color:initial;color:var(--brand-text-on-brand)}.device-android .app-layout .button-raised{box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)}.device-android .app-layout .button-red{background-color:var(--text-error);color:var(--brand-text-on-brand)}.device-android .app-layout .buttons-list ul{background-color:var(--background-tertiary)}.device-android .app-layout .buttons-list ul:after,.device-android .app-layout .buttons-list ul:before{display:none}.device-android .app-layout .buttons-list ul li{border-radius:2px;color:var(--fill-white);font-size:14px;height:36px;margin:20px 16px;min-height:36px;text-transform:uppercase}.device-android .app-layout .table-presets .button{min-width:0}.device-android .app-layout .button-fill .list-button{background-color:var(--brand-cell);border-radius:2px;color:var(--brand-text-on-brand);font-size:14px;font-weight:500;height:36px;line-height:36px;margin:0;text-align:center;text-transform:uppercase}.device-android .app-layout .button-raised .list-button{box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)}.device-android .app-layout .button-red .list-button{background-color:var(--text-error)}.device-android .app-layout .tab-buttons{display:flex;height:100%;justify-content:space-between;position:relative;width:100%}.device-android .app-layout .tab-buttons .tab-link{align-items:center;box-sizing:border-box;color:hsla(0,0%,100%,.7);font-size:14px;font-weight:500;height:100%;justify-content:center;padding-left:0;padding-right:0;text-transform:uppercase}.device-android .app-layout .tab-buttons .tab-link i.icon{opacity:.5}.device-android .app-layout .tab-buttons .tab-link.tab-link-active{color:var(--fill-white)}.device-android .app-layout .tab-buttons .tab-link.tab-link-active i.icon{background-color:var(--fill-white);opacity:1}.device-android .app-layout .tab-buttons .tab-link-highlight{--f7-tabbar-link-active-border-color:var(--toolbar-icons);bottom:0;height:3px;left:0;position:absolute}.device-android .app-layout .list.inputs-list{margin:0}.device-android .app-layout .list.inputs-list .item-input.item-content{padding-left:0}.device-android .app-layout .list.inputs-list .item-input .item-inner,.device-android .app-layout .list.inputs-list .item-link .item-inner{display:block}.device-android .app-layout .list.inputs-list .item-input .item-inner .item-label,.device-android .app-layout .list.inputs-list .item-input .item-inner .item-title,.device-android .app-layout .list.inputs-list .item-link .item-inner .item-label,.device-android .app-layout .list.inputs-list .item-link .item-inner .item-title{font-size:12px;width:100%}.device-android .app-layout .list.inputs-list .item-input .item-inner .item-input-wrap,.device-android .app-layout .list.inputs-list .item-link .item-inner .item-input-wrap{margin-left:0}.device-android .app-layout .list .buttons{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;min-height:48px;width:100%}.device-android .app-layout .list .buttons .item-content{width:100%}.device-android .app-layout .list .buttons .item-content .item-inner{padding-bottom:0;padding-top:0}.device-android .app-layout .list .buttons .item-content .item-inner .row{--f7-cols-per-row:1;align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.device-android .app-layout .list .buttons .item-content .item-inner .row .button{align-items:center;display:flex;flex:1;font-size:17px;justify-content:center;margin-left:5px}.device-android .app-layout .list .buttons .item-content .item-inner .row .button:first-child{margin-left:0}.device-android .app-layout .list .item-content .color-preview{background-color:var(--fill-white);border-radius:4px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);height:30px;margin-top:-3px;width:30px}.device-android .app-layout .list .item-content .color-preview.auto{background-color:#000}.device-android .app-layout .item-input:not(.item-input-outline) .item-content:before,.device-android .app-layout .item-input:not(.item-input-outline).item-content:before{background:transparent}.device-android .app-layout .links-list a:after,.device-android .app-layout .list .item-inner:after,.device-android .app-layout .simple-list li:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.device-android .app-layout .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,.device-android .app-layout .list:not(.inset):not(.inset-md):not(.menu-list) .media-item>.item-link,.device-android .app-layout .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,.device-android .app-layout .media-list:not(.inset):not(.inset-md):not(.menu-list) li>.item-link{border-radius:0}.device-android .app-layout #color-picker .right-block .button-round{background-color:var(--brand-cell)}.device-android .app-layout .regional-settings .list .item-inner{margin-left:16px}.device-android .app-layout .regional-settings .list .item-title-row{align-items:center;display:flex;flex-direction:row-reverse;justify-content:space-between;width:100%}.device-android .app-layout .regional-settings .list .item-title-row .item-title{white-space:normal}.device-android .app-layout .searchbar-inner__center{flex-wrap:wrap}.device-android .app-layout .navbar .searchbar-input-wrap{height:32px;margin:4px 0}.device-android .app-layout .navbar .navbar-inner{overflow:initial}.device-android .app-layout .navbar .left{margin:0}.device-android .app-layout .navbar .title{margin-left:var(--f7-navbar-title-margin-left);margin-right:var(--f7-navbar-title-margin-left)}.device-android .app-layout .searchbar input{appearance:none;background-color:initial;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='%23fff'%3E%3Cpath d='M15.5 14h-.79l-.28-.27A6.471 6.471 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/%3E%3Cpath fill='none' d='M0 0h24v24H0z'/%3E%3C/svg%3E");background-position:0;background-repeat:no-repeat;background-size:24px 24px;border:none;border-bottom:1px solid var(--fill-white);border-radius:0;box-sizing:border-box;color:var(--fill-white);display:block;font-family:inherit;font-size:16px;font-weight:400;height:100%;opacity:1;padding:0 40px 0 24px;transition-duration:.3s;width:100%}.device-android .app-layout .searchbar input::placeholder{color:var(--fill-white)}.device-android .app-layout .searchbar .input-clear-button{height:18px;margin:0;top:7px;width:18px}.device-android .app-layout .searchbar .input-clear-button:after{color:var(--fill-white);font-size:19px;line-height:19px}.device-android .app-layout .searchbar .number-search-results{font-size:16px;font-weight:400;line-height:24px;position:absolute;right:26px;top:4px}.device-android .app-layout .searchbar-icon:after{color:var(--fill-white);font-size:19px}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled{top:0}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled .searchbar-inner{height:100%;padding:0}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__center{flex-direction:column}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__right{flex-direction:column-reverse}.device-android .app-layout .navbar .searchbar-expandable.searchbar-enabled.replace{height:96px}.device-android .app-layout .navbar a.link{padding:0 16px}.device-android .app-layout .navbar a.link.searchbar-enable i.icon-search{background-color:var(--toolbar-icons)}.device-android .app-layout .navbar a.icon-only{height:56px;width:auto}.device-android .app-layout .navbar .buttons-row-replace a{color:var(--fill-white);padding:0}.device-android .app-layout .navbar .searchbar .buttons-row{align-self:flex-start}@media (max-width:550px){.device-android .app-layout .searchbar-expandable.searchbar-enabled .searchbar-inner__left{margin-right:33px}}.device-android .app-layout .actions-button-text{color:var(--text-normal);cursor:pointer;font-size:16px;line-height:48px}@media (min-width:496px){.device-android .app-layout .actions-modal{left:auto;margin-left:0;width:100%}}.device-android .app-layout input.modal-text-input{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;background:#fff;border:none;box-shadow:none;box-sizing:border-box;display:block;font-family:inherit;font-size:16px;height:36px;margin:15px 0 0;padding:0;-webkit-transition-duration:.2s;transition-duration:.2s;width:100%}.device-android .app-layout .input-field .inputs-list{margin:15px 0 0}.device-android .app-layout .input-field .inputs-list ul{background:none}.device-android .app-layout .input-field .inputs-list ul:after,.device-android .app-layout .input-field .inputs-list ul:before{display:none}.device-android .app-layout .input-field .inputs-list .item-inner,.device-android .app-layout .input-field .inputs-list .item-input{margin:0;padding:0}.device-android .app-layout .font-item .item-radio:not(.item-radio-icon-end)>.icon-radio{margin-right:0}.device-android .app-layout .navbar-dropdown-list .navbar-inner,.device-android .app-layout .navbar-link-settings .navbar-inner{background:var(--background-primary)}.device-android .app-layout .navbar-dropdown-list .navbar-inner .icon-back,.device-android .app-layout .navbar-dropdown-list .title,.device-android .app-layout .navbar-dropdown-list a,.device-android .app-layout .navbar-link-settings .navbar-inner .icon-back,.device-android .app-layout .navbar-link-settings .title,.device-android .app-layout .navbar-link-settings a{color:var(--text-normal)}.device-android .app-layout .popover{box-shadow:var(--f7-box-shadow)}.device-android .app-layout .popover.popover__titled .popover-arrow:after{background:var(--toolbar-background)}.device-android .app-layout .popover.document-menu .popover-arrow:after,.device-android .app-layout .popover.popover__functions .popover-arrow:after{background:var(--background-secondary)}.device-android .app-layout .page-version-history{--f7-page-bg-color:var(--background-primary)}.device-android .app-layout .version-history__title{color:var(--brand-cell);font-size:14px;font-style:normal;font-weight:500;line-height:20px;margin-bottom:4px;margin-top:16px}.device-android .app-layout .version-history__btn{background:var(--background-primary);border:0;border-radius:6px;box-shadow:0 .25px 1px rgba(0,0,0,.039),0 .85px 3px rgba(0,0,0,.19);color:var(--brand-cell);font-size:16px;font-style:normal;font-weight:500;letter-spacing:.25px;line-height:20px;margin-top:10px;padding:6px 20px;width:auto}.device-android .app-layout .version-history__list ul:after,.device-android .app-layout .version-history__list ul:before{display:none}.device-android .app-layout .version-history__list .item-title{color:var(--text-normal);font-size:16px;font-style:normal;font-weight:400;letter-spacing:.15px;line-height:24px}.device-android .app-layout .version-history__list .item-inner{padding-bottom:10px;padding-top:10px}.device-android .app-layout .version-history__list .item-inner:before{background-color:var(--background-menu-divider);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.device-android .app-layout .version-history__list .item-media{max-width:40px;min-width:40px;padding-bottom:12px;padding-top:12px}.device-android .app-layout .version-history__list .item-link .item-title-row:before{display:none}.device-android .app-layout .version-history__list .item-subtitle{color:var(--text-secondary);font-size:12px;font-style:normal;font-weight:400;letter-spacing:.5px;line-height:16px}.device-android .app-layout .version-history__item_active{background-color:var(--background-tertiary)}.device-android .app-layout .btn-close-history{color:var(--toolbar-icons);font-size:16px;font-style:normal;font-weight:400;letter-spacing:.15px;line-height:24px;margin-left:16px}.device-android .app-layout .beta-badge{background-color:var(--brand-secondary);margin-left:8px}.device-ios .theme-type-dark i.icon.icon-logo{background:url(../../../spreadsheeteditor/mobile/resources/img/header/logo-android.svg) no-repeat 50%}.device-ios i.icon.icon_mask{background-color:#fff}.device-ios i.icon.icon-logo{background:url(../../../spreadsheeteditor/mobile/resources/img/header/logo-ios.svg) no-repeat 50%;height:14px;width:100px}.device-ios i.icon.icon-prev{background-color:var(--brand-cell);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='m16 20.5-1 1L4.5 11 15 .5l1 1L6.6 11l9.4 9.5z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-prev:after{display:none}.device-ios i.icon.icon-next{background-color:var(--brand-cell);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M15.5 11 6 1.5 7.1.4 17.5 11 7.1 21.5l-1.1-1 9.5-9.5z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-next:after{display:none}.device-ios i.icon.icon-edit{background-color:var(--brand-cell);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M0 20h22v1H0v-1zM19.3 5.3 6.1 18.4l-1.5-1.5L17.8 3.8l-.7-.7L3.5 16.7 3 20l3.3-.5L19.9 5.9zM20.5 5.3 22 3.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5 2.8 2.8z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-show-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='25'%3E%3Cpath fill-rule='evenodd' d='M5.625 12.5A8.488 8.488 0 0 0 12.5 16a8.487 8.487 0 0 0 6.875-3.5A8.487 8.487 0 0 0 12.5 9a8.488 8.488 0 0 0-6.875 3.5Zm14.955 0A9.494 9.494 0 0 0 12.5 8a9.494 9.494 0 0 0-8.08 4.5A9.494 9.494 0 0 0 12.5 17a9.494 9.494 0 0 0 8.08-4.5Z' clip-rule='evenodd'/%3E%3Cpath d='M12.5 10a2.5 2.5 0 0 1 2.502 2.5 2.502 2.502 0 0 1-2.502 2.511 2.5 2.5 0 0 1-2.489-2.511 2.499 2.499 0 0 1 2.49-2.5Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-hide-password,.device-ios i.icon.icon-show-password{background-color:var(--text-secondary);height:25px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:25px}.device-ios i.icon.icon-hide-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='25'%3E%3Cpath fill-rule='evenodd' d='M11.356 15.765a8.487 8.487 0 0 0 8.019-3.424c-.751-1.03-1.209-1.584-2.339-2.19l.723-.74c1.375.787 1.987 1.587 2.82 2.93a9.494 9.494 0 0 1-8.079 4.5 9.534 9.534 0 0 1-1.99-.208l.846-.868Zm-3.228-1.133a8.546 8.546 0 0 1-2.503-2.29 8.488 8.488 0 0 1 6.875-3.5c.598 0 .719-.018 1.297.069l.924-.849c-.83-.238-1.303-.22-2.206-.22H12.5a9.494 9.494 0 0 0-8.08 4.5 9.549 9.549 0 0 0 2.962 3.004l.746-.714Z' clip-rule='evenodd'/%3E%3Cpath d='M16.031 9.671a20.396 20.396 0 0 0-1.01-.397l-5.863 5.885a8.45 8.45 0 0 0 1.033.365l5.84-5.853Z'/%3E%3Cpath d='M16.79 8.91c-.311-.146-.65-.298-.974-.434l-.794.798c.336.122.687.26 1.01.397l.758-.76Z'/%3E%3Cpath d='m18.345 7.353-.72-.692-1.809 1.815c.324.136.663.288.974.435l1.555-1.558ZM9.395 16.322a9.443 9.443 0 0 1-.99-.406l-1.728 1.733.705.69 2.013-2.017Z'/%3E%3Cpath d='M10.191 15.524a8.45 8.45 0 0 1-1.033-.365l-.754.757c.32.153.651.289.99.406l.797-.798Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-return{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' d='m11.5 7.793 2.854 2.853-.707.708L12 9.707V16h2.5v1H11V9.707l-1.646 1.647-.708-.708L11.5 7.793Z'/%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M1 4a1 1 0 0 1 1-1h7.75l2 2H22a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4Zm1 16V4h7.25l2 2H22v14H2Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon_mask{background-color:var(--text-normal)}.device-android i.icon.icon-logo{background:url(../../../spreadsheeteditor/mobile/resources/img/header/logo-android.svg) no-repeat 50%;height:14px;width:100px}.device-android i.icon.icon-prev{background-color:var(--brand-cell);height:20px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M5.1 10.9 13.9 2 16 4.1l-6.8 7 6.8 6.8-2.1 2.1-8.8-8.8-.1-.1z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:20px}.device-android i.icon.icon-prev:after{display:none}.device-android i.icon.icon-next{background-color:var(--brand-cell);height:20px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M16.9 10.9 8.1 2 6 4.1l6.8 7L6 17.9 8.1 20l8.8-8.8.1-.1z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:20px}.device-android i.icon.icon-next:after{display:none}.device-android i.icon.icon-show-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M9.894 9.89C10.486 9.298 11.189 9 12 9c.811 0 1.514.297 2.106.89.593.594.89 1.297.89 2.11s-.297 1.516-.89 2.11c-.592.593-1.295.89-2.106.89-.811 0-1.514-.297-2.106-.89-.593-.594-.89-1.297-.89-2.11 0-.812.297-1.516.89-2.11Zm-1.451 5.672c.998.97 2.184 1.454 3.557 1.454 1.373 0 2.543-.485 3.51-1.453 1-1 1.499-2.188 1.499-3.563s-.5-2.547-1.498-3.516c-.968-1-2.138-1.5-3.511-1.5-1.373 0-2.559.5-3.557 1.5-.968.97-1.452 2.141-1.452 3.516s.484 2.563 1.452 3.563Zm-3.137-9C7.304 5.188 9.535 4.5 12 4.5s4.697.688 6.694 2.063C20.69 7.938 22.126 9.75 23 12c-.874 2.25-2.31 4.063-4.306 5.438C16.697 18.813 14.465 19.5 12 19.5s-4.696-.687-6.694-2.062C3.31 16.063 1.874 14.25 1 12c.874-2.25 2.31-4.062 4.306-5.437Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-hide-password,.device-android i.icon.icon-show-password{background-color:var(--text-secondary);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-hide-password{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M11.883 9.005h.14c.813 0 1.517.297 2.111.891.595.595.892 1.298.892 2.111v.188l-3.143-3.19Zm-4.316.797c-.375.751-.563 1.486-.563 2.205 0 1.377.485 2.565 1.454 3.566 1.001.97 2.19 1.454 3.566 1.454.719 0 1.454-.187 2.204-.563l-1.548-1.548c-.25.063-.469.094-.656.094-.814 0-1.517-.297-2.111-.892-.595-.594-.892-1.297-.892-2.11 0-.188.032-.407.094-.657L7.567 9.802ZM2.032 4.267 3.299 3l17.73 17.733L19.764 22c-.156-.156-.656-.641-1.5-1.454l-1.877-1.877c-1.345.563-2.799.845-4.362.845-2.471 0-4.707-.688-6.708-2.065-2.002-1.376-3.44-3.19-4.316-5.442.782-1.939 2.033-3.596 3.753-4.972L3.158 5.44a139.128 139.128 0 0 0-1.126-1.173Zm9.992 2.72c-.626 0-1.236.126-1.83.376L8.036 5.205c1.22-.47 2.549-.704 3.988-.704 2.47 0 4.69.688 6.66 2.064 2.002 1.377 3.44 3.19 4.316 5.442a12.231 12.231 0 0 1-3.424 4.739l-2.909-2.909c.25-.594.376-1.204.376-1.83 0-1.376-.5-2.549-1.501-3.518-.97-1-2.143-1.501-3.518-1.501Z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-collaboration{background-color:var(--toolbar-icons);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill-rule='evenodd' clip-path='url(%23a)' clip-rule='evenodd'%3E%3Cpath d='M7.5 14c-2.823 0-4.989 1.407-6.099 3.257-.56.935-.4 1.305-.299 1.433.154.194.508.31.87.31H7.5v1H1.972c-.47 0-1.216-.134-1.655-.69-.49-.622-.412-1.502.227-2.567C1.834 14.593 4.324 13 7.5 13v1Zm0-1c3.177 0 5.639 1.593 6.929 3.743.639 1.065.716 1.945.226 2.567-.438.556-1.184.69-1.655.69H7.5v-1H13c.363 0 .717-.116.87-.31.101-.128.262-.498-.299-1.433C12.461 15.407 10.323 14 7.5 14v-1Z'/%3E%3Cpath d='M15 20h7c.471 0 1.217-.134 1.656-.69.49-.622.413-1.502-.226-2.567C22.14 14.593 19.677 13 16.5 13c-1.293 0-2.322.164-3.354.623.364.28.64.494.997.732A7.774 7.774 0 0 1 16.502 14c2.823 0 4.96 1.407 6.071 3.257.561.935.4 1.305.299 1.433-.153.194-.508.31-.87.31H16.5a1.466 1.466 0 0 1-.343.478c-.444.415-.738.522-1.157.522ZM7.5 11C8.76 11 10 9.786 10 8S8.76 5 7.5 5 5 6.214 5 8s1.24 3 2.5 3Zm0 1c1.933 0 3.5-1.79 3.5-4S9.433 4 7.5 4 4 5.79 4 8s1.567 4 3.5 4ZM17 11c.965 0 2-.97 2-2.5S17.965 6 17 6c-.965 0-2 .97-2 2.5s1.035 2.5 2 2.5Zm0 1c1.657 0 3-1.567 3-3.5S18.657 5 17 5s-3 1.567-3 3.5 1.343 3.5 3 3.5Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-back{color:var(--toolbar-icons)}.device-android .navbar i.icon.icon-edit{background-color:var(--toolbar-icons);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M0 20h22v1H0v-1zM17.1 3.1 3.5 16.7 3 20l3.3-.5L19.9 5.9zM20.5 5.3 22 3.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5 2.8 2.8z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-close{background-color:var(--text-normal);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M18.984 6.422 13.406 12l5.578 5.578-1.406 1.406L12 13.406l-5.578 5.578-1.406-1.406L10.594 12 5.016 6.422l1.406-1.406L12 10.594l5.578-5.578 1.406 1.406Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-done-disabled{background-color:var(--text-tertiary)}.device-android .navbar i.icon.icon-done,.device-android .navbar i.icon.icon-done-disabled{height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='m9 16.219 10.594-10.64L21 6.983l-12 12-5.578-5.578L4.782 12 9 16.219Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-done{background-color:var(--brand-cell)}.device-android .navbar i.icon.icon-search{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M16 16.708a9 9 0 1 1 .707-.707l5.647 5.645-.708.708-5.645-5.646ZM18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-search,.device-android .navbar i.icon.icon-version-history{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-version-history{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M12 6h2v6.845l4.196 2.423-1 1.732L12 14V6Z'/%3E%3Cpath d='M22 12a9 9 0 0 1-15.364 6.364l-.708.707A9.969 9.969 0 0 0 13 22c5.523 0 10-4.477 10-10S18.523 2 13 2C7.477 2 3 6.477 3 12h1a9 9 0 0 1 18 0Z'/%3E%3Cpath d='m1.5 10.5 2 2 2-2'/%3E%3C/svg%3E")}i.icon.icon-paste{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M5 2H0v18h9v4h15V7h-5V2h-5v1h4v4H9v12H1V3h4V2Zm5 6h13v15H10V8Z' clip-rule='evenodd'/%3E%3Cpath d='M5 0h9v5H5V0Z'/%3E%3Cpath fill-rule='evenodd' d='M21 12h-9v-1h9v1ZM21 16h-9v-1h9v1ZM21 20h-9v-1h9v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-copy,i.icon.icon-paste{background-color:var(--text-normal);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-copy{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M1 1h14v6h1V0H0v17h8v-1H1V1Z'/%3E%3Cpath fill-rule='evenodd' d='M23 8H9v15h14V8ZM8 7v17h16V7H8ZM13 5H3V4h10v1ZM8 9H3V8h5v1ZM8 13H3v-1h5v1Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='M21 12H11v-1h10v1ZM21 16H11v-1h10v1ZM21 20H11v-1h10v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-cut{background-color:var(--text-normal);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill-rule='evenodd' d='M3.224 22.27c1.291.857 3.303.448 4.435-1.257 1.132-1.706.727-3.719-.564-4.575-1.291-.857-3.303-.448-4.435 1.257-1.132 1.706-.727 3.719.564 4.575Zm-.553.834c1.841 1.221 4.447.532 5.821-1.538 1.375-2.071.996-4.74-.844-5.962-1.841-1.221-4.447-.533-5.821 1.538-1.375 2.071-.996 4.74.844 5.962ZM20.916 22.27c-1.291.857-3.303.448-4.435-1.257-1.132-1.706-.727-3.719.564-4.575 1.291-.857 3.303-.448 4.435 1.257 1.132 1.706.727 3.719-.564 4.575Zm.553.834c-1.841 1.221-4.447.532-5.821-1.538-1.374-2.071-.996-4.74.844-5.962 1.841-1.221 4.447-.533 5.822 1.538 1.374 2.071.995 4.74-.845 5.962Z' clip-rule='evenodd'/%3E%3Cpath d='m16.492 15.604-2.588-3.13L19.955.676a.436.436 0 0 0-.228-.595c-.285-.092-.628 0-.742.183L12.023 11.42 5.176.264c-.115-.229-.457-.32-.742-.229-.286.092-.4.366-.286.595L10.2 12.428l-2.552 3.176L9.229 18l2.794-4.52L14.911 18l1.581-2.396Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-next:after,i.icon.icon-prev:after{content:none}i.icon.icon-collaboration{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill-rule='evenodd' clip-path='url(%23a)' clip-rule='evenodd'%3E%3Cpath d='M7.5 14c-2.823 0-4.989 1.407-6.099 3.257-.56.935-.4 1.305-.299 1.433.154.194.508.31.87.31H7.5v1H1.972c-.47 0-1.216-.134-1.655-.69-.49-.622-.412-1.502.227-2.567C1.834 14.593 4.324 13 7.5 13v1Zm0-1c3.177 0 5.639 1.593 6.929 3.743.639 1.065.716 1.945.226 2.567-.438.556-1.184.69-1.655.69H7.5v-1H13c.363 0 .717-.116.87-.31.101-.128.262-.498-.299-1.433C12.461 15.407 10.323 14 7.5 14v-1Z'/%3E%3Cpath d='M15 20h7c.471 0 1.217-.134 1.656-.69.49-.622.413-1.502-.226-2.567C22.14 14.593 19.677 13 16.5 13c-1.293 0-2.322.164-3.354.623.364.28.64.494.997.732A7.774 7.774 0 0 1 16.502 14c2.823 0 4.96 1.407 6.071 3.257.561.935.4 1.305.299 1.433-.153.194-.508.31-.87.31H16.5a1.466 1.466 0 0 1-.343.478c-.444.415-.738.522-1.157.522ZM7.5 11C8.76 11 10 9.786 10 8S8.76 5 7.5 5 5 6.214 5 8s1.24 3 2.5 3Zm0 1c1.933 0 3.5-1.79 3.5-4S9.433 4 7.5 4 4 5.79 4 8s1.567 4 3.5 4ZM17 11c.965 0 2-.97 2-2.5S17.965 6 17 6c-.965 0-2 .97-2 2.5s1.035 2.5 2 2.5Zm0 1c1.657 0 3-1.567 3-3.5S18.657 5 17 5s-3 1.567-3 3.5 1.343 3.5 3 3.5Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-cancellation{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cmask id='a' width='20' height='20' x='2' y='2' maskUnits='userSpaceOnUse' style='mask-type:alpha'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='%23c4c4c4' stroke='var(--brand-cell)'/%3E%3C/mask%3E%3Cg stroke='var(--brand-cell)' mask='url(%23a)'%3E%3Ccircle cx='12' cy='12' r='9.5' transform='rotate(-90 12 12)'/%3E%3Cpath d='M5.091 19.202 19.192 5.101'/%3E%3C/g%3E%3C/svg%3E");height:24px;width:24px}i.icon.icon-remove-style{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23FF3B30' fill-rule='evenodd' d='M9.333 2a1.06 1.06 0 0 0-1.066 1.053V4H4.533A.53.53 0 0 0 4 4.526c0 .291.239.527.533.527h.534l1 15.894A1.06 1.06 0 0 0 7.133 22h9.734a1.06 1.06 0 0 0 1.066-1.053L19 5h.467c.294 0 .533-.21.533-.5 0-.29-.239-.5-.533-.5h-3.734v-.947A1.06 1.06 0 0 0 14.667 2H9.333Zm5.334 2v-.947H9.333V4h5.334ZM18 5H6l.941 15.062A1 1 0 0 0 7.94 21h8.122a1 1 0 0 0 .998-.938L18 5Z' clip-rule='evenodd'/%3E%3Cpath fill='%23FF3B30' d='M8 7.002h1L9.5 19h-1L8 7.002ZM11.5 7h1v12h-1V7ZM15 7.002 16 7l-.5 12h-1L15 7.002Z'/%3E%3C/svg%3E");height:24px;width:24px}i.icon.icon-image{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M9 9a2 2 0 1 1-4 0 2 2 0 0 1 4 0ZM8 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='M2 4v16h20V4H2Zm19 1H3v11.293l3.5-3.5 2 2 6-6 6.5 6.5V5ZM3 19v-1.293l3.5-3.5 2 2 6-6 6.5 6.5V19H3Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-format-pdf{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cmask id='a' width='24' height='24' x='0' y='0' maskUnits='userSpaceOnUse' style='mask-type:alpha'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H4Zm1 8v6h1.071v-2H7.68c.887 0 1.607-.672 1.607-1.5v-1c0-.828-.72-1.5-1.607-1.5H5Zm1.071 1H7.68c.295 0 .535.224.535.5v1c0 .276-.24.5-.535.5H6.07v-2Zm9.643 5h1.072v-2h2.678v-1h-2.678v-2H20V9h-4.286v6Zm-5.357-6h2.679c.887 0 1.607.672 1.607 1.5v3c0 .828-.72 1.5-1.607 1.5h-2.679V9Zm2.679 1h-1.607v4h1.607c.296 0 .535-.224.535-.5v-3c0-.276-.24-.5-.535-.5Z' clip-rule='evenodd'/%3E%3C/mask%3E%3Cg mask='url(%23a)'%3E%3Cpath fill='%23DB4437' d='M0 0h24v24H0z'/%3E%3C/g%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-pdfa{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23A8A8A8' fill-rule='evenodd' d='M18 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm.275 2.815h.326l2.618 6.37H19.82l-.524-1.417h-2.602l-.52 1.418H14.78l2.604-6.371H18.275Zm-1.23 4.003h1.902l-.954-2.582-.949 2.582Z' clip-rule='evenodd'/%3E%3Cpath fill='%23DB4437' fill-rule='evenodd' d='M1 4a3 3 0 0 1 3-3h16a3 3 0 0 1 3 3v9.101a6.981 6.981 0 0 0-4.036-2.035V11h-2.678V9H19.5V8h-4.286v3.576a6.983 6.983 0 0 0-1.071.582V9.5c0-.828-.72-1.5-1.607-1.5H9.857v6h2.398A6.968 6.968 0 0 0 11 18c0 1.959.805 3.73 2.101 5H4a3 3 0 0 1-3-3V4Zm3.5 4v6h1.071v-2H7.18c.887 0 1.607-.672 1.607-1.5v-1c0-.828-.72-1.5-1.607-1.5H4.5Zm1.071 1H7.18c.295 0 .535.224.535.5v1c0 .276-.24.5-.535.5H5.57V9Zm6.965 0h-1.607v4h1.607c.296 0 .535-.224.535-.5v-3c0-.276-.24-.5-.535-.5Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-numbers-1{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.605 18.998v-6.725h-.021l-2.052 1.478V12.73l2.062-1.482h.946v7.75h-.935ZM6.58 31.482c0-.677.244-1.239.73-1.687.488-.45 1.096-.676 1.827-.676.69 0 1.276.206 1.756.617.48.412.72.915.72 1.51 0 .43-.118.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.776v.859H6.628v-.666l2.729-2.873c.52-.548.863-.964 1.031-1.247.172-.283.258-.585.258-.907 0-.373-.15-.69-.451-.951a1.585 1.585 0 0 0-1.085-.392c-.455 0-.834.145-1.139.435-.304.29-.456.652-.456 1.085v.005H6.58v-.005ZM8.208 50.42v-.816h.929c.444 0 .807-.127 1.09-.38.283-.259.424-.584.424-.978s-.13-.708-.392-.94c-.261-.233-.632-.35-1.112-.35-.444 0-.805.119-1.085.355-.279.236-.44.559-.483.967h-.93c.055-.659.309-1.184.764-1.574.458-.39 1.05-.585 1.777-.585.699 0 1.279.188 1.74.564.463.376.694.854.694 1.434 0 .483-.144.89-.43 1.219-.287.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.401.564.348.337.521.778.521 1.322 0 .433-.121.823-.365 1.17a2.39 2.39 0 0 1-.988.806c-.415.19-.875.285-1.38.285-.802 0-1.449-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.042.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.594.5-1 0-.454-.162-.814-.484-1.079-.319-.265-.755-.397-1.31-.397h-.972ZM13 17.998h1v1h-1zM13 35.998h1v1h-1zM13 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-2{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.605 18.998v-6.725h-.021l-2.052 1.478V12.73l2.062-1.482h.946v7.75h-.935Zm2.47 1.488c.122-.208.214-.37.275-.489.064-.114.157-.299.279-.553.125-.254.224-.496.295-.725.075-.23.152-.5.231-.811.083-.312.144-.647.183-1.005.04-.361.059-.74.059-1.133 0-.576-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.354 3.354 0 0 0-.408-.602h.784c.168.215.31.406.424.575.115.164.246.39.393.676.15.287.27.575.36.865a8.83 8.83 0 0 1 .328 2.412c-.001 1.923-.486 3.491-1.457 4.705h-.821ZM6.58 31.482c0-.677.244-1.239.73-1.687.488-.45 1.096-.676 1.827-.676.69 0 1.276.206 1.756.617.48.412.72.915.72 1.51 0 .43-.118.843-.355 1.24-.236.398-.68.933-1.332 1.606l-1.96 2.025v.022h3.776v.859H6.628v-.666l2.729-2.873c.52-.548.863-.964 1.031-1.247.172-.283.258-.585.258-.907 0-.373-.15-.69-.451-.951a1.585 1.585 0 0 0-1.085-.392c-.455 0-.834.145-1.139.435-.304.29-.456.652-.456 1.085v.005H6.58v-.005Zm5.85 7.004c.12-.208.212-.37.273-.489.065-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.23-.811.083-.312.144-.647.183-1.005.04-.361.06-.74.06-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.364 3.364 0 0 0-.409-.602h.785c.168.215.31.406.424.575.114.164.245.39.392.676.15.287.27.575.36.865a8.844 8.844 0 0 1 .328 2.412c0 1.923-.486 3.491-1.456 4.705h-.822ZM8.208 50.42v-.816h.929c.444 0 .807-.127 1.09-.38.283-.259.424-.584.424-.978s-.13-.708-.392-.94c-.261-.233-.632-.35-1.112-.35-.444 0-.805.119-1.085.355-.279.236-.44.559-.483.967h-.93c.055-.659.309-1.184.764-1.574.458-.39 1.05-.585 1.777-.585.699 0 1.279.188 1.74.564.463.376.694.854.694 1.434 0 .483-.144.89-.43 1.219-.287.33-.673.537-1.16.623v.021c.587.036 1.054.224 1.401.564.348.337.521.778.521 1.322 0 .433-.121.823-.365 1.17a2.39 2.39 0 0 1-.988.806c-.415.19-.875.285-1.38.285-.802 0-1.449-.2-1.94-.602-.49-.4-.753-.927-.789-1.579h.93c.042.405.223.73.542.978.319.243.734.365 1.246.365s.933-.13 1.262-.392c.333-.261.5-.594.5-1 0-.454-.162-.814-.484-1.079-.319-.265-.755-.397-1.31-.397h-.972Zm4.5 5.066c.122-.208.213-.37.274-.489.065-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.231-.811.082-.312.143-.647.183-1.005.04-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.364 3.364 0 0 0-.408-.602h.784c.168.215.31.406.424.575.115.164.245.39.392.676.15.287.27.575.36.865.09.29.167.647.231 1.069.065.419.097.866.097 1.343 0 1.923-.485 3.491-1.456 4.705h-.821Z'/%3E%3C/svg%3E")}i.icon.icon-numbers-3{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M7 10.998h1v8H7zM10 17.998h1v1h-1zM7 28.998h1v8H7zM10 28.998h1v8h-1zM13 35.998h1v1h-1zM7 45.998h1v8H7zM10 45.998h1v8h-1zM13 45.998h1v8h-1zM16 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-4{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='m11.79 18.998-.779-2.218H7.928l-.779 2.218H6.134l2.858-7.75h.956l2.857 7.75H11.79Zm-2.336-6.574-1.241 3.534h2.514l-1.241-3.534h-.032ZM9.776 36.998H6.752v-7.75h3.035c.662 0 1.197.177 1.606.531.411.355.617.822.617 1.402 0 .405-.13.772-.392 1.101-.258.326-.573.523-.945.591v.043c.526.068.945.274 1.257.618.315.343.472.773.472 1.289 0 .684-.232 1.217-.698 1.6-.462.383-1.105.575-1.928.575Zm-2.057-6.896v2.486h1.547c.573 0 1.01-.11 1.31-.333.304-.222.457-.542.457-.961 0-.383-.127-.677-.382-.88-.254-.209-.615-.312-1.085-.312H7.72Zm0 6.042H9.63c.583 0 1.026-.116 1.326-.35.301-.232.452-.572.452-1.02 0-.902-.623-1.353-1.87-1.353H7.72v2.723ZM9.942 54.127c-1.07 0-1.92-.36-2.55-1.08-.628-.723-.94-1.699-.94-2.927 0-1.217.316-2.188.95-2.911.634-.727 1.48-1.09 2.54-1.09.845 0 1.562.236 2.149.709.59.469.947 1.09 1.069 1.863h-.978a2.1 2.1 0 0 0-.8-1.219c-.408-.308-.888-.462-1.44-.462-.755 0-1.36.283-1.815.849-.455.566-.682 1.32-.682 2.261 0 .953.225 1.71.677 2.272.45.562 1.06.843 1.826.843.57 0 1.049-.13 1.44-.392.39-.261.655-.628.794-1.1h.978c-.18.765-.546 1.354-1.101 1.766-.555.412-1.26.618-2.117.618ZM15 17.998h1v1h-1zM15 35.998h1v1h-1zM15 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-5{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.524 18.24c.473 0 .863-.135 1.171-.407.312-.276.468-.622.468-1.037v-.467l-1.515.096c-.88.054-1.321.364-1.321.93 0 .268.107.483.322.644.218.161.51.242.875.242Zm-.198.812c-.588 0-1.06-.156-1.418-.468-.358-.311-.537-.723-.537-1.235 0-.498.186-.888.558-1.17.373-.287.91-.452 1.612-.495l1.622-.097v-.483c0-.358-.115-.634-.344-.827-.23-.193-.557-.29-.983-.29-.337 0-.621.08-.854.242-.23.16-.372.377-.43.65h-.897c.015-.488.231-.896.65-1.225.42-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36v3.974h-.886v-1.004h-.021a1.86 1.86 0 0 1-.752.773c-.337.19-.708.285-1.112.285Zm3.577 1.434c.122-.208.213-.37.274-.489.064-.114.157-.299.28-.553.124-.254.223-.496.294-.725.076-.23.153-.5.231-.811a6.85 6.85 0 0 0 .183-1.005c.04-.361.06-.74.06-1.133 0-.576-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.36-1.343 7.911 7.911 0 0 0-.425-.918 3.36 3.36 0 0 0-.408-.602h.784c.169.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.844 8.844 0 0 1 .328 2.412c0 1.923-.486 3.491-1.456 4.705h-.822ZM9.48 37.052a2.3 2.3 0 0 1-1.117-.263 1.98 1.98 0 0 1-.768-.769h-.021v.978h-.886v-8.089h.934v3.239h.022c.182-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.321.272 1.772.817.452.54.677 1.251.677 2.132 0 .884-.227 1.597-.682 2.138-.451.54-1.047.81-1.789.81Zm-.166-5.065c-.505 0-.915.197-1.23.59-.312.39-.467.9-.467 1.526 0 .63.155 1.14.467 1.53.315.391.725.586 1.23.586.508 0 .915-.191 1.22-.575.307-.383.461-.896.461-1.541 0-.64-.154-1.153-.462-1.536-.304-.387-.71-.58-1.219-.58Zm3.19 6.499c.122-.208.213-.37.274-.489.065-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.231-.811.082-.312.143-.647.183-1.005.039-.361.059-.74.059-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.364 3.364 0 0 0-.408-.602h.784c.168.215.31.406.424.575.115.164.245.39.392.676.15.287.27.575.36.865.09.29.167.647.231 1.069.064.419.097.866.097 1.343 0 1.923-.486 3.491-1.456 4.705h-.822ZM11.42 50.093H10.5a1.274 1.274 0 0 0-.483-.795c-.262-.207-.602-.311-1.02-.311-.51 0-.92.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.467 1.547.315.38.729.57 1.24.57.405 0 .737-.092.995-.275.26-.186.43-.453.51-.8h.918c-.079.57-.34 1.03-.784 1.38-.44.351-.988.527-1.644.527-.802 0-1.444-.265-1.928-.795-.483-.534-.725-1.252-.725-2.154 0-.888.242-1.6.725-2.138.484-.54 1.123-.81 1.918-.81.684 0 1.244.19 1.68.569.438.376.687.832.747 1.37Zm.472 5.393c.122-.208.213-.37.274-.489.064-.114.158-.299.28-.553.125-.254.223-.496.295-.725.075-.23.152-.5.23-.811.083-.312.144-.647.183-1.005.04-.361.06-.74.06-1.133 0-.577-.047-1.128-.14-1.654a6.935 6.935 0 0 0-.784-2.261 3.359 3.359 0 0 0-.409-.602h.784c.169.215.31.406.425.575.114.164.245.39.392.676.15.287.27.575.36.865a8.844 8.844 0 0 1 .328 2.412c0 1.923-.486 3.491-1.456 4.705h-.822Z'/%3E%3C/svg%3E")}i.icon.icon-numbers-6{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M8.524 18.24c.473 0 .863-.135 1.171-.407.312-.276.468-.622.468-1.037v-.467l-1.515.096c-.88.054-1.321.364-1.321.93 0 .268.107.483.322.644.218.161.51.242.875.242Zm-.198.812c-.588 0-1.06-.156-1.418-.468-.358-.311-.537-.723-.537-1.235 0-.498.186-.888.558-1.17.373-.287.91-.452 1.612-.495l1.622-.097v-.483c0-.358-.115-.634-.344-.827-.23-.193-.557-.29-.983-.29-.337 0-.621.08-.854.242-.23.16-.372.377-.43.65h-.897c.015-.488.231-.896.65-1.225.42-.333.933-.5 1.542-.5.684 0 1.23.17 1.638.51.408.337.612.79.612 1.36v3.974h-.886v-1.004h-.021a1.86 1.86 0 0 1-.752.773c-.337.19-.708.285-1.112.285ZM9.48 37.052a2.3 2.3 0 0 1-1.117-.263 1.98 1.98 0 0 1-.768-.769h-.021v.978h-.886v-8.089h.934v3.239h.022c.182-.319.435-.564.757-.736.322-.172.69-.258 1.101-.258.73 0 1.321.272 1.772.817.452.54.677 1.251.677 2.132 0 .884-.227 1.597-.682 2.138-.451.54-1.047.81-1.789.81Zm-.166-5.065c-.505 0-.915.197-1.23.59-.312.39-.467.9-.467 1.526 0 .63.155 1.14.467 1.53.315.391.725.586 1.23.586.508 0 .915-.191 1.22-.575.307-.383.461-.896.461-1.541 0-.64-.154-1.153-.462-1.536-.304-.387-.71-.58-1.219-.58ZM11.42 50.093H10.5a1.274 1.274 0 0 0-.483-.795c-.262-.207-.602-.311-1.02-.311-.51 0-.92.193-1.23.58-.312.387-.468.899-.468 1.536 0 .652.156 1.167.467 1.547.315.38.729.57 1.24.57.405 0 .737-.092.995-.275.26-.186.43-.453.51-.8h.918c-.079.57-.34 1.03-.784 1.38-.44.351-.988.527-1.644.527-.802 0-1.444-.265-1.928-.795-.483-.534-.725-1.252-.725-2.154 0-.888.242-1.6.725-2.138.484-.54 1.123-.81 1.918-.81.684 0 1.244.19 1.68.569.438.376.687.832.747 1.37ZM13 17.998h1v1h-1zM13 35.998h1v1h-1zM13 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-numbers-7{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='65' fill='none'%3E%3Cpath fill='%23444' d='M21 13.998h35v1H21zM21 31.998h35v1H21zM21 49.998h35v1H21z' opacity='.3'/%3E%3Cpath fill='%23444' d='M7 12.998h1v6H7zM7 10.998h1v1H7zM10 17.998h1v1h-1zM7 30.998h1v6H7zM10 30.998h1v6h-1zM10 28.998h1v1h-1zM7 28.998h1v1H7zM13 35.998h1v1h-1zM7 47.998h1v6H7zM10 47.998h1v6h-1zM13 47.998h1v6h-1zM7 45.998h1v1H7zM10 45.998h1v1h-1zM13 45.998h1v1h-1zM16 52.998h1v1h-1z'/%3E%3C/svg%3E")}i.icon.icon-sharing-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill-rule='evenodd' clip-path='url(%23a)' clip-rule='evenodd'%3E%3Cpath d='M7.5 14c-2.823 0-4.989 1.407-6.099 3.257-.56.935-.4 1.305-.299 1.433.154.194.508.31.87.31H7.5v1H1.972c-.47 0-1.216-.134-1.655-.69-.49-.622-.412-1.502.227-2.567C1.834 14.593 4.324 13 7.5 13v1Zm0-1c3.177 0 5.639 1.593 6.929 3.743.639 1.065.716 1.945.226 2.567-.438.556-1.184.69-1.655.69H7.5v-1H13c.363 0 .717-.116.87-.31.101-.128.262-.498-.299-1.433C12.461 15.407 10.323 14 7.5 14v-1Z'/%3E%3Cpath d='M15 20h7c.471 0 1.217-.134 1.656-.69.49-.622.413-1.502-.226-2.567C22.14 14.593 19.677 13 16.5 13c-1.293 0-2.322.164-3.354.623.364.28.64.494.997.732A7.774 7.774 0 0 1 16.502 14c2.823 0 4.96 1.407 6.071 3.257.561.935.4 1.305.299 1.433-.153.194-.508.31-.87.31H16.5a1.466 1.466 0 0 1-.343.478c-.444.415-.738.522-1.157.522ZM7.5 11C8.76 11 10 9.786 10 8S8.76 5 7.5 5 5 6.214 5 8s1.24 3 2.5 3Zm0 1c1.933 0 3.5-1.79 3.5-4S9.433 4 7.5 4 4 5.79 4 8s1.567 4 3.5 4ZM17 11c.965 0 2-.97 2-2.5S17.965 6 17 6c-.965 0-2 .97-2 2.5s1.035 2.5 2 2.5Zm0 1c1.657 0 3-1.567 3-3.5S18.657 5 17 5s-3 1.567-3 3.5 1.343 3.5 3 3.5Z'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}i.icon.icon-info,i.icon.icon-sharing-settings{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-info{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M4 8v13h6v1H3V7l6-6h11v9h-1V2h-9v6H4Zm.414-1L9 2.414V7H4.414Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M17 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm-5 6a5 5 0 1 1 10 0 5 5 0 0 1-10 0Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' d='M16.252 14.991h1.484v1.496h-1.484v-1.496ZM16.252 17.509v3.98h1.484v-3.98h-1.484Z'/%3E%3C/svg%3E")}i.icon.icon-help{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M11.26 17h1.497v-1.5h-1.496V17ZM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2Zm0 19c-5 0-9-4-9-9s4-9 9-9 9 4 9 9-4 9-9 9Zm.392-14C10.182 7 9 8.29 9 10.5h1.5c0-1.1.588-2 1.892-2 1.303 0 1.612.618 1.608 1.5-.005 1-2.74 1.5-2.74 4.442h1.497c0-2.25 2.79-1.942 2.79-4.442 0-2.21-1.547-3-3.155-3Z'/%3E%3C/svg%3E")}i.icon.icon-about,i.icon.icon-help{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-about{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Zm0 1c5.522 0 10-4.477 10-10S17.522 2 12 2C6.477 2 2 6.477 2 12s4.477 10 10 10Z' clip-rule='evenodd'/%3E%3Cpath d='M11.253 7h1.492v1.5h-1.492V7ZM12.745 10.012V17h-1.492v-6.988h1.492Z'/%3E%3C/svg%3E")}i.icon.icon-search{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill-rule='evenodd' d='M16 16.708a9 9 0 1 1 .707-.707l5.647 5.645-.708.708-5.645-5.646ZM18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-search,i.icon.icon-version-history{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-version-history{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M12 6h2v6.845l4.196 2.423-1 1.732L12 14V6Z'/%3E%3Cpath d='M22 12a9 9 0 0 1-15.364 6.364l-.708.707A9.969 9.969 0 0 0 13 22c5.523 0 10-4.477 10-10S18.523 2 13 2C7.477 2 3 6.477 3 12h1a9 9 0 0 1 18 0Z'/%3E%3Cpath d='m1.5 10.5 2 2 2-2'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-horizontal{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M9.514 10.75h1.755L8.069 2H6.363L3.25 10.75h1.712l.66-1.988h3.194l.698 1.988ZM7.197 4.041l1.101 3.247h-2.18l1.079-3.247ZM16 2h-3.194v8.75h2.72c1.028-.008 1.677-.028 1.946-.06.429-.051.789-.189 1.08-.412.294-.226.525-.527.692-.9.17-.379.256-.767.256-1.165 0-.505-.13-.945-.392-1.319s-.637-.638-1.123-.794c.345-.17.617-.427.817-.77.204-.342.306-.718.306-1.128 0-.378-.082-.718-.246-1.02a2.162 2.162 0 0 0-.616-.734 1.93 1.93 0 0 0-.834-.358C17.103 2.03 16.632 2 16 2Zm-1.58 3.48V3.456h.926c.76 0 1.22.01 1.38.03.268.036.47.14.604.31.138.168.208.387.208.657 0 .283-.08.511-.24.686-.157.172-.373.275-.65.31-.152.02-.542.03-1.171.03h-1.058Zm0 3.796v-2.34h1.302c.734 0 1.21.042 1.428.125.222.084.391.217.507.4.117.183.175.406.175.669 0 .31-.076.559-.23.746a.973.973 0 0 1-.582.346c-.157.036-.526.054-1.107.054h-1.494Zm3.563 3.974 3.52 3.833.497.542-.498.542L17.982 22l-.994-1.084 2.317-2.524H2v-1.534h17.305l-2.317-2.524.995-1.084Z' clip-rule='evenodd'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-anglecount,i.icon.icon-text-orientation-horizontal{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-text-orientation-anglecount{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M22 8.72h-5.604v1.358h3.363L8.55 20.916 9.672 22l10.925-10.856v3.286H22V8.72Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' d='m10.658 11.386-1.113 1.076-1.703-.79-2.025 1.958.842 1.623-1.085 1.05L2 9.028l1.082-1.046 7.576 3.403Zm-4.079-.301L3.823 9.769l1.374 2.653 1.382-1.337ZM6.085 5.08 8.11 3.12c.4-.387.718-.657.952-.81.233-.157.485-.255.756-.292a2 2 0 0 1 .856.073c.295.085.562.243.802.475.26.251.434.544.522.879.09.332.08.657-.03.973.407-.203.812-.27 1.215-.202.403.07.764.259 1.085.568.252.244.444.535.575.871.131.332.175.658.133.977-.043.315-.185.62-.424.914-.15.185-.549.595-1.196 1.23l-1.724 1.668-5.547-5.365Zm1.946-.097 1.283 1.24.67-.648c.399-.385.64-.631.724-.737.153-.191.224-.387.215-.588-.01-.205-.104-.395-.283-.568-.172-.166-.354-.257-.548-.275-.194-.023-.387.038-.58.18-.114.086-.412.362-.894.828l-.587.568Zm2.206 2.133 1.483 1.435.947-.916c.369-.357.591-.594.668-.711a.822.822 0 0 0 .15-.57c-.022-.209-.131-.408-.328-.598a1.104 1.104 0 0 0-.534-.303.92.92 0 0 0-.575.066c-.191.082-.52.348-.985.798l-.826.8Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-angleclock{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M15.28 22v-5.604h-1.358v3.363L3.084 8.55 2 9.672l10.856 10.925H9.57V22h5.71Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' d='m12.614 10.658-1.076-1.113.79-1.703-1.958-2.025-1.623.842-1.05-1.085L14.972 2l1.046 1.082-3.403 7.576Zm.301-4.079 1.316-2.756-2.653 1.374 1.337 1.382ZM18.92 6.085l1.96 2.025c.387.4.657.718.81.952.157.233.255.485.292.756a2 2 0 0 1-.073.856 1.905 1.905 0 0 1-.475.802c-.251.26-.544.434-.879.522a1.61 1.61 0 0 1-.973-.03c.203.407.27.812.202 1.215a2.032 2.032 0 0 1-.568 1.085 2.42 2.42 0 0 1-.871.575 1.928 1.928 0 0 1-.977.133c-.315-.043-.62-.185-.914-.424-.185-.15-.595-.549-1.23-1.196l-1.668-1.724 5.365-5.547Zm.097 1.946-1.24 1.283.648.67c.386.399.631.64.737.724.191.153.387.224.588.215.205-.01.395-.104.568-.283.166-.172.258-.354.275-.548.023-.194-.038-.387-.18-.58-.086-.114-.362-.412-.828-.894l-.568-.587Zm-2.133 2.206-1.435 1.483.916.947c.357.369.594.591.712.668a.822.822 0 0 0 .57.15c.208-.022.407-.131.597-.328.161-.166.262-.344.303-.534a.92.92 0 0 0-.066-.575c-.082-.191-.348-.52-.798-.985l-.8-.826Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-angleclock,i.icon.icon-text-orientation-vertical{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-text-orientation-vertical{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='m7.104 22.065 3.978-3.52-1.125-.995-2.62 2.318V1.938H5.745v17.93l-2.62-2.318L2 18.545l3.978 3.52.563.497.563-.497Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' d='M14.513 13.188h3.316c.656 0 1.145.03 1.465.089.325.056.613.175.866.358.256.183.47.428.64.734.169.303.254.643.254 1.02 0 .41-.106.787-.317 1.129a1.96 1.96 0 0 1-.849.77c.506.155.894.42 1.166.794.272.374.407.813.407 1.319 0 .398-.088.786-.266 1.164a2.308 2.308 0 0 1-.718.901c-.302.223-.675.36-1.12.412-.28.032-.953.052-2.02.06h-2.824v-8.75Zm1.675 1.456v2.023h1.098c.652 0 1.058-.01 1.216-.03.287-.035.511-.139.673-.31.166-.175.25-.404.25-.686 0-.271-.072-.49-.216-.657-.14-.171-.349-.274-.628-.31-.166-.02-.643-.03-1.431-.03h-.962Zm0 3.48v2.34h1.55c.604 0 .987-.019 1.149-.054.249-.048.45-.164.605-.347.159-.187.238-.435.238-.746 0-.262-.06-.485-.181-.668a1.028 1.028 0 0 0-.526-.4c-.227-.084-.72-.125-1.483-.125h-1.352ZM22 10.688h-1.822L19.454 8.7h-3.316l-.685 1.988h-1.776l3.23-8.75h1.772L22 10.688Zm-3.084-3.462-1.143-3.247-1.12 3.247h2.263Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-rotateup{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M5.914 2.483 2 5.895l1.107.966 2.578-2.248V22H7.25V4.613l2.577 2.248 1.108-.966L7.02 2.483 6.468 2l-.554.483Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' d='m21.928 12.594-.029 1.656-1.931.69-.052 3.012 1.91.59-.028 1.615-8.403-2.798.028-1.609 8.505-3.156Zm-3.393 2.857-3.154 1.09 3.119.966.035-2.056ZM13.5 11.079l.051-3.013c.01-.596.047-1.04.11-1.333.058-.296.178-.56.359-.792.18-.236.42-.434.72-.593.294-.159.624-.241.99-.247.395-.007.757.083 1.084.27.327.183.57.436.73.759.158-.462.42-.819.786-1.072a2.264 2.264 0 0 1 1.28-.39c.385-.007.758.067 1.12.223.36.151.646.364.86.638.21.27.337.608.38 1.012.027.253.036.864.027 1.834v2.704h-8.498Zm1.432-1.545 1.955-.032.017-.997c.01-.593.007-.962-.01-1.105-.03-.26-.126-.462-.289-.607-.166-.148-.386-.22-.66-.215-.26.004-.473.072-.637.205-.167.13-.27.322-.31.576-.021.15-.038.585-.05 1.301l-.016.874Zm3.362-.055 2.26-.037.025-1.409c.009-.548-.002-.896-.034-1.042a.875.875 0 0 0-.325-.545c-.179-.141-.418-.21-.717-.204-.254.004-.47.062-.649.175a.99.99 0 0 0-.395.484c-.084.207-.132.657-.144 1.35l-.02 1.228Z'/%3E%3C/svg%3E")}i.icon.icon-text-orientation-rotatedown,i.icon.icon-text-orientation-rotateup{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}i.icon.icon-text-orientation-rotatedown{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='m7.021 21.517 3.914-3.412-1.107-.966-2.577 2.248V2H5.685v17.387l-2.578-2.248L2 18.105l3.914 3.412.554.483.553-.483Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' d='m13.468 11.406.028-1.656 1.931-.69.052-3.012-1.91-.59.028-1.615L22 6.641l-.028 1.609-8.505 3.156Zm3.392-2.857 3.155-1.09-3.12-.966-.035 2.056ZM21.896 12.921l-.052 3.013c-.01.596-.047 1.04-.11 1.333-.058.296-.178.56-.359.792-.18.236-.42.434-.719.593a2.126 2.126 0 0 1-.99.247 2.081 2.081 0 0 1-1.085-.27 1.74 1.74 0 0 1-.73-.759c-.158.462-.42.819-.785 1.072a2.264 2.264 0 0 1-1.281.39 2.706 2.706 0 0 1-1.12-.223 2.107 2.107 0 0 1-.86-.638c-.21-.27-.337-.608-.38-1.012-.027-.253-.035-.864-.026-1.834V12.92h8.497Zm-1.433 1.545-1.955.032-.017.997c-.01.593-.007.962.01 1.105.03.26.126.462.29.607.166.148.385.22.658.215.262-.004.474-.072.638-.205.167-.13.27-.322.31-.576.021-.15.038-.585.05-1.301l.016-.874Zm-3.362.055-2.26.037-.024 1.409c-.01.548.002.896.034 1.042.042.226.15.407.324.545.179.141.418.21.718.204.253-.004.47-.062.648-.175a.99.99 0 0 0 .395-.484c.084-.207.132-.657.144-1.35l.021-1.228Z'/%3E%3C/svg%3E")}.dataview .row{justify-content:space-around}.dataview ul{list-style:none;padding:0 10px}.dataview ul li{display:inline-block}.dataview .row.list:last-child li:not(.active):last-child:after{content:none}.dataview .active,.dataview .row.list:last-child li.active:last-child{position:relative;z-index:1}.dataview .active:after,.dataview .row.list:last-child li.active:last-child:after{background-color:var(--brand-cell);bottom:-5px;content:"";height:22px;left:auto;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='11'/%3E%3Cpath fill='%23fff' d='M11 21a10 10 0 1 1 10-10 10 10 0 0 1-10 10Zm6.4-13.68L17.06 7a.48.48 0 0 0-.67 0l-7 6.84-2.44-2.6a.51.51 0 0 0-.59.08l-.36.34a.58.58 0 0 0 0 .65l3.19 3.35a.38.38 0 0 0 .39 0L17.4 8a.48.48 0 0 0 0-.67Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;position:absolute;right:-5px;transform:none;width:22px}.navbar .searchbar{background-color:var(--f7-navbar-bg-color)}.navbar .searchbar .buttons-row{align-self:center;display:flex}.navbar .searchbar .searchbar-bg:after{background-color:#cbcbcb;bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.navbar .searchbar-inner{justify-content:space-between}.navbar .searchbar-inner__center{align-items:center;display:flex;width:81%}.navbar .searchbar-inner__right{align-items:center;display:flex}.navbar .searchbar-expandable{transition-duration:0s}.navbar .buttons-row-replace{align-items:center;display:flex;flex-direction:column;justify-content:center;width:100%}.navbar .buttons-row-replace a{display:block;font-size:15px;height:auto;line-height:normal}.navbar .buttons-row-replace a:before{display:none}@media (max-width:550px){.navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__left{max-width:22px;min-width:22px}.navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__center{flex-direction:column}.navbar .searchbar-expandable.searchbar-enabled .searchbar-inner__right{flex-direction:column-reverse}.navbar .searchbar-expandable.searchbar-enabled.replace{top:0}.navbar .searchbar-expandable.searchbar-enabled.replace .searchbar-inner{height:100%}.navbar .searchbar-expandable.searchbar-enabled.replace .searchbar-inner__left{align-self:flex-start}}.device-ios .document-menu{background-color:rgba(0,0,0,.9);border-radius:8px}.device-ios .document-menu .popover-angle:after{background:rgba(0,0,0,.9)}.device-ios .document-menu .list-block{font-size:14px;white-space:pre}.device-ios .document-menu .list-block:first-child ul:before{display:none!important}.device-ios .document-menu .list-block:first-child li:first-child a{border-radius:0}.device-ios .document-menu .list-block .item-link{display:inline-block}.device-ios .document-menu .list-block .item-link.active-state,html:not(.watch-active-state) .device-ios .document-menu .list-block .item-link:active{background-color:#d9d9d9}.device-ios .document-menu .list-block .item-link.active-state .item-inner:after,html:not(.watch-active-state) .device-ios .document-menu .list-block .item-link:active .item-inner:after{background-color:initial}html.phone .device-ios .document-menu .list-block .item-link{padding:0 10px}.device-ios .document-menu .list-block .list-button{color:#fff;line-height:36px}.device-ios .document-menu .list-block .list-button:after{background-color:hsla(0,0%,90%,.9);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.device-ios .document-menu .list-block li{display:inline-flex}.device-ios .document-menu .list-block li:last-child .item-inner:after,.device-ios .document-menu .list-block li:last-child .list-button:after,.device-ios .document-menu .list-block li:last-child li:last-child .item-inner:after{display:none!important}.device-ios .document-menu .list-block li li:last-child .item-inner:after,.device-ios .document-menu .list-block li:last-child li .item-inner:after{background-color:hsla(0,0%,90%,.9);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.md .document-menu .popover-inner{overflow:hidden}.md .document-menu .list-block{white-space:pre}.md .document-menu .list-block ul{height:48px}.md .document-menu .list-block li{display:inline-block}.md .document-menu .list-block .list-button{color:var(--text-normal)}.document-menu{width:auto}html.phone .document-menu .list-block .list-button{padding:0 10px}.device-ios .wrap-comment{height:calc(100% - 60px)}.device-ios .add-comment-dialog .wrap-textarea,.device-ios .add-comment-popup .wrap-textarea,.device-ios .add-reply-dialog .wrap-textarea,.device-ios .add-reply-popup .wrap-textarea{height:calc(100% - 34px)}.device-ios .edit-comment-dialog .wrap-textarea,.device-ios .edit-comment-popup .wrap-textarea,.device-ios .edit-reply-dialog .wrap-textarea,.device-ios .edit-reply-popup .wrap-textarea{height:calc(100% - 52px)}.device-ios .comment-list .reply-item .item-inner:after{content:none!important}.device-ios .comment-list .reply-item:before{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:auto;position:absolute;right:auto;top:0;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;width:100%;z-index:15}.device-android .wrap-comment{height:calc(100% - 72px)}.device-android .add-comment-dialog .wrap-textarea,.device-android .add-comment-popup .wrap-textarea,.device-android .add-reply-dialog .wrap-textarea,.device-android .add-reply-popup .wrap-textarea{height:calc(100% - 41px)}.device-android .edit-comment-dialog .wrap-textarea,.device-android .edit-comment-popup .wrap-textarea,.device-android .edit-reply-dialog .wrap-textarea,.device-android .edit-reply-popup .wrap-textarea{height:calc(100% - 56px)}.device-android .comment-list .comment-header,.device-android .comment-list .reply-header,.device-android .reply-list .comment-header,.device-android .reply-list .reply-header,.device-android .wrap-comment .comment-header,.device-android .wrap-comment .reply-header{display:flex}.device-android .comment-list .comment-header .initials,.device-android .comment-list .reply-header .initials,.device-android .reply-list .comment-header .initials,.device-android .reply-list .reply-header .initials,.device-android .wrap-comment .comment-header .initials,.device-android .wrap-comment .reply-header .initials{align-items:center;border-radius:50px;color:var(--fill-white);display:flex;font-size:14px;justify-content:center;margin-right:10px}.device-android .wrap-comment .comment-header{align-items:center}.device-android .wrap-comment .comment-header .initials{height:30px;width:30px}.device-android .wrap-comment .wrap-textarea .input:not(.input-outline):after{content:none}.device-android #add-comment-dialog .dialog,.device-android #add-reply-dialog .dialog,.device-android #edit-comment-dialog .dialog,.device-android #edit-reply-dialog .dialog{--f7-dialog-text-color:#000}.device-android #add-comment-dialog .dialog .done,.device-android #add-reply-dialog .dialog .done,.device-android #edit-comment-dialog .dialog .done,.device-android #edit-reply-dialog .dialog .done{padding-right:6px}.device-android .comment-list .item-inner:after,.device-android .comment-list li:last-child li .item-inner:after,.device-android .comment-list ul:after{content:none}.device-android .comment-list .comment-header .left{align-items:center;display:flex}.device-android .comment-list .comment-header .left .initials{font-size:18px;height:40px;width:40px}.device-android .reply-list .reply-header .left{display:flex}.device-android .reply-list .reply-header .left .initials{font-size:11px;height:24px;margin-top:5px;width:24px}.device-android #edit-comment-dialog .wrap-comment .comment-header .initials,.device-android #edit-comment-dialog .wrap-comment .reply-header .initials,.device-android #edit-reply-dialog .wrap-comment .comment-header .initials,.device-android #edit-reply-dialog .wrap-comment .reply-header .initials,.device-android .edit-comment-popup .wrap-comment .comment-header .initials,.device-android .edit-comment-popup .wrap-comment .reply-header .initials,.device-android .edit-reply-popup .wrap-comment .comment-header .initials,.device-android .edit-reply-popup .wrap-comment .reply-header .initials{height:40px;width:40px}.device-android #view-comment-popover .toolbar-bottom:after{content:none}.wrap-comment{background-color:var(--background-tertiary);padding:16px 24px 0 16px}.wrap-comment .comment-date{color:var(--text-secondary)}.wrap-comment .wrap-textarea{margin-top:6px}.wrap-comment .name{color:var(--text-normal);font-size:16px;font-weight:600}.wrap-comment .reply-date{color:var(--text-secondary)}.wrap-textarea .input{height:100%}.wrap-textarea textarea{color:var(--text-normal);font-size:14px;height:100%;margin-top:0;padding:5px 0}#add-comment-dialog .dialog,#add-reply-dialog .dialog,#edit-comment-dialog .dialog,#edit-reply-dialog .dialog{--f7-dialog-width:400px;z-index:13700}#add-comment-dialog .dialog .dialog-inner,#add-reply-dialog .dialog .dialog-inner,#edit-comment-dialog .dialog .dialog-inner,#edit-reply-dialog .dialog .dialog-inner{height:400px;padding:0}#add-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,#add-comment-dialog .dialog .dialog-inner .wrap-comment .name,#add-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,#add-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,#add-reply-dialog .dialog .dialog-inner .wrap-comment .name,#add-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .name,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .name,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date{text-align:left}#add-comment-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea,#add-reply-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea,#edit-comment-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea,#edit-reply-dialog .dialog .dialog-inner .wrap-comment .wrap-textarea textarea{color:var(--text-normal);width:100%}.comment-list .item-content .item-inner{padding-bottom:0;padding-right:0;padding-top:16px}.comment-list .item-content .item-inner .comment-header{display:flex;justify-content:space-between;padding-right:16px}.comment-list .item-content .item-inner .comment-header .right{display:flex;justify-content:flex-end;width:70px}.comment-list .item-content .item-inner .comment-header .right .comment-resolve{margin-right:10px}.comment-list .item-content .item-inner .reply-header{display:flex;justify-content:space-between;padding-right:16px}.comment-list .item-title{width:100%}.comment-list .user-name{color:var(--text-normal);font-size:16px;font-weight:700;line-height:22px;margin:0}.comment-list .comment-date,.comment-list .reply-date{color:var(--text-secondary);font-size:12px;line-height:18px;margin:0}.comment-list .comment-quote{border-left:1px solid var(--text-secondary);color:var(--text-secondary);font-size:14px;margin:5px 0;padding-left:10px;padding-right:16px}.comment-list .comment-text,.comment-list .reply-text{color:var(--text-normal);font-size:14px;line-height:25px;margin:0;max-width:100%;padding-right:15px;word-break:break-all}.comment-list .comment-text pre,.comment-list .reply-text pre{overflow-wrap:break-word;white-space:pre-wrap}.comment-list .reply-list{padding-left:26px}.comment-list .reply-item{padding-right:26px}.add-reply-popup,.edit-comment-popup,.edit-reply-popup{z-index:20000}#view-comment-sheet{webkit-transition:height .2s;background-color:var(--fill-white);border-top-left-radius:4px;border-top-right-radius:4px;box-shadow:0 1px 10px rgba(0,0,0,.2),0 4px 5px rgba(0,0,0,.12);height:45%;transition:height .2s}#view-comment-sheet .top{height:90%}#view-comment-sheet .swipe-container{background-color:var(--background-primary);display:flex;height:40px;justify-content:center}#view-comment-sheet .swipe-container .icon-swipe{background:var(--background-menu-divider);border-radius:2px;height:4px;margin-top:8px;width:40px}#view-comment-popover .toolbar,#view-comment-sheet .toolbar{background-color:var(--background-primary);box-shadow:0 1px 10px rgba(0,0,0,.2),0 4px 5px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.14);position:fixed}#view-comment-popover .toolbar .link,#view-comment-sheet .toolbar .link{--f7-toolbar-link-color:var(--brand-cell)}#view-comment-popover .toolbar .toolbar-inner,#view-comment-sheet .toolbar .toolbar-inner{padding:0 16px}#view-comment-popover .toolbar .btn-add-reply,#view-comment-sheet .toolbar .btn-add-reply{font-size:16px;min-width:80px;padding:0}#view-comment-popover .toolbar .comment-navigation,#view-comment-sheet .toolbar .comment-navigation{display:flex;justify-content:space-between;min-width:62px}#view-comment-popover .toolbar .comment-navigation .link,#view-comment-sheet .toolbar .comment-navigation .link{padding:0 12px}#view-comment-popover{background-color:var(--background-primary)}#view-comment-popover .pages{position:absolute}#view-comment-popover .page,#view-comment-popover .page .page-content{border-radius:var(--f7-popover-border-radius)}#view-comment-popover .page .page-content{padding:16px 16px 60px 0}#view-comment-popover .comment-list .item-content .item-inner .comment-header,#view-comment-popover .comment-list .item-content .item-inner .reply-header{padding-right:0}#view-comment-popover .toolbar{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);position:absolute}.page-current-comment{position:relative}.page-current-comment .page-content{background-color:var(--background-primary)}.page-current-comment .comment-list ul:after,.page-current-comment .comment-list ul:before{content:none}.page-current-comment .comment-list ul .item-content .item-inner{padding-top:0}.page-current-comment .comment-list ul .item-content .item-inner .reply-list .item-content .item-inner{padding-top:13px}.dialog.modal-in{max-height:100%;overflow:auto;z-index:14000}.dialog.modal-in .item-content .item-input-wrap:after{background-color:var(--brand-cell)}.dialog-backdrop.backdrop-in{z-index:13600}.no-comments{color:var(--text-normal);margin-top:35px;text-align:center}.actions-modal.modal-in{z-index:13700}.actions-modal.modal-in .actions-group:after{background-color:var(--background-menu-divider)}.actions-backdrop.backdrop-in{z-index:13600}.device-android{--f7-navbar-bg-color:var(--brand-cell);--f7-navbar-link-color:var(--text-link);--f7-navbar-text-color:var(--text-normal);--f7-list-button-border-color:rgba(0,0,0,.15)}.device-android #editor-navbar.navbar .right{padding-right:4px}.device-android #editor-navbar.navbar .left a.link,.device-android #editor-navbar.navbar .right a.link{align-items:center;box-sizing:border-box;justify-content:space-between;padding:0 13px;width:auto}.device-android .radio-checkbox-item .icon.icon-checkbox{border:2px solid var(--f7-checkbox-inactive-color);border-radius:20px;height:20px;width:20px}.device-android .radio-checkbox-item label.item-checkbox input[type=checkbox]:checked~.icon-checkbox{background-color:initial;border-color:var(--brand-cell)}.device-android .radio-checkbox-item label.item-content i.icon.icon-checkbox:after{background-color:var(--brand-cell);border-radius:100%;content:" ";height:10px;left:50%;margin-left:-5px;margin-top:-5px;position:absolute;top:50%;width:10px}.device-android .move-sheet .navbar .navbar-inner{background:var(--background-primary)}.device-android .move-sheet .navbar .navbar-inner .title{color:var(--text-normal)}.device-android .tooltip-cell-data{border-radius:0}.device-ios .radio-checkbox-item label.item-content input[type=checkbox]:checked~.item-inner{background:no-repeat 50%;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 13 10'%3E%3Cpath fill='%2340865c' d='M11.6 0 4.4 7.2l-3-3L0 5.6 4.4 10 13 1.4z'/%3E%3C/svg%3E");background-position:calc(100% - 15px);background-size:13px 10px}.device-ios .radio-checkbox-item .icon.icon-checkbox{display:none}.device-ios .actions-move-sheet .actions-button-text{color:var(--brand-cell)}.device-ios .tooltip-cell-data{border-radius:4px}.device-ios .all-list.popover .page-content,.device-ios .all-list.popover .view{border-radius:var(--f7-popover-border-radius)}.device-ios .all-list.popover .page-content>.list:last-child{margin-bottom:0}.device-ios .all-list.popover .list{overflow:hidden}.device-ios i.icon.icon-edit-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath fill-rule='evenodd' d='M8 1 3 15h1.2l1.777-5h5.046l.616 1.733.88-.88L9 1zm.5 1.9L10.668 9H6.332z' clip-rule='evenodd'/%3E%3Cpath d='m18.3 11.3-9.2 9.1-1.5-1.5 9.2-9.1-.7-.7-9.6 9.6L6 22l3.3-.5 9.6-9.6zm1.2 0L21 9.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-edit-settings,.device-ios i.icon.icon-undo{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-undo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M22 16v2h-1v-2c0-2.9-2.1-5-5-5H1.9L5 14c.1.1.1.2 0 .3l-.4.4c-.1.1-.2.1-.3 0L.1 10.5c-.1-.1-.1-.2 0-.3l.4-.4h.1L4.4 6c.1-.1.2-.1.3 0l.5.4c.1.1.1.2 0 .3L1.9 10H16c3.3 0 6 2.7 6 6z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-redo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M0 16c0-3.3 2.7-6 6-6h14.1l-3.3-3.3c-.1-.1-.1-.2 0-.3l.5-.4c.1-.1.2-.1.3 0l3.8 3.8h.1l.4.4c.1.1.1.2 0 .3l-4.2 4.2c-.1.1-.2.1-.3 0l-.4-.4c-.1-.1-.1-.2 0-.3l3.1-3H6c-2.9 0-5 2.1-5 5v2H0v-2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-reader,.device-ios i.icon.icon-redo{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-reader{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M17 21H1V9h6V2h10v5h1V1H6.2L0 7.6V22h18v-3h-1v2zM6 2.8V8H1.1L6 2.8zM13 8c-5.1 0-9 5-9 5s4.1 5 9 5c5 0 9-5 9-5s-4-5-9-5zm-4.3 7.5C6.8 14.4 6.4 13 6.4 13s.4-1.5 2.4-2.6C8.3 11.2 8 12 8 13c0 .9.3 1.8.7 2.5zm4.3 1.2c-2.1 0-3.7-1.7-3.7-3.7 0-2.1 1.7-3.7 3.7-3.7 2.1 0 3.7 1.7 3.7 3.7 0 2.1-1.6 3.7-3.7 3.7zm4.3-1.2c.4-.7.7-1.6.7-2.5 0-1-.3-1.8-.7-2.6 2 1.1 3.4 2.6 3.4 2.6s-1.5 1.4-3.4 2.5zM13 11.7c-.7 0-1.3.6-1.3 1.3s.6 1.3 1.3 1.3 1.3-.6 1.3-1.3-.6-1.3-1.3-1.3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-download{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M12 0h-1v14l-3.6-3.7-.7.8 4.8 4.9 4.8-4.9-.7-.8L12 14V0Z'/%3E%3Cpath d='M14 5v1h5v14H4V6h5V5H3v16h17V5h-6Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-download,.device-ios i.icon.icon-print{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-print{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath fill-rule='evenodd' d='M5 1h12v5h4v11h-4v4H5v-4H1V6h4V1Zm1 5h10V2H6v4ZM5 16v-3H2v3h3Zm-3-4h18V7H2v5Zm18 1h-3v3h3v-3Zm-4 0H6v7h10v-7Zm-2 3H8v-1h6v1Zm0 2H8v-1h6v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-plus{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M22 12H12v10h-1V12H1v-1h10V1h1v10h10v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-list,.device-ios i.icon.icon-plus{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-list{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cpath stroke='%23000' d='M2 4h14M2 14h14M2 9h14'/%3E%3C/svg%3E")}.device-ios i.icon.icon-settings{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='m11.8 3 .4 2c.1.7.6 1.1 1.3 1.1.3 0 .5-.1.7-.2l1.9-1.2 1.1 1.1-1.1 1.8c-.3.4-.3.9-.1 1.3.2.4.5.7 1 .8l2.1.5v1.6l-2.1.4c-.5.1-.8.4-1 .8-.2.4-.1.9.1 1.2l1.2 1.9-1.1 1.1-1.8-1.1c-.2-.2-.5-.2-.8-.2-.6 0-1.2.5-1.3 1.1l-.5 2.1h-1.6l-.4-2c-.1-.7-.6-1.1-1.3-1.1-.3 0-.5.1-.7.2l-1.9 1.2-1.1-1.1 1.1-1.8c.3-.4.3-.9.1-1.3-.2-.4-.5-.7-1-.8l-2.1-.5v-1.6l2-.4c.5-.1.8-.4 1-.8.2-.4.1-.9-.1-1.2l-1-2 1.1-1.1 1.8 1.1c.3.2.5.3.8.3.6 0 1.2-.5 1.3-1.1l.5-2.1h1.5M11 15.5c2.5 0 4.5-2 4.5-4.5s-2-4.5-4.5-4.5-4.5 2-4.5 4.5 2 4.5 4.5 4.5M12.1 2H9.9c-.3 0-.5.2-.6.5l-.5 2.4c0 .2-.2.3-.3.3s-.1 0-.2-.1L6.2 3.8c-.1-.1-.2-.1-.4-.1-.1 0-.3 0-.4.1L3.8 5.4c-.1.2-.2.5 0 .8l1.3 2.1c.1.2.1.4-.2.5l-2.4.5c-.3.1-.5.3-.5.6v2.2c0 .3.2.5.5.6l2.4.5c.3.1.4.3.2.5l-1.3 2.1c-.2.2-.1.6.1.8l1.6 1.6c.1.1.3.2.4.2s.2 0 .3-.1L8.3 17c.1-.1.1-.1.2-.1s.3.1.3.3l.5 2.3c.1.3.3.5.6.5h2.2c.3 0 .5-.2.6-.5l.5-2.4c0-.2.1-.3.3-.3.1 0 .1 0 .2.1l2.1 1.3c.1.1.2.1.3.1.2 0 .3-.1.4-.2l1.6-1.6c.2-.2.2-.5.1-.8l-1.3-2.1c-.2-.2-.1-.5.2-.5l2.4-.5c.3-.1.5-.3.5-.6V9.8c0-.3-.2-.5-.5-.6l-2.4-.5c-.3-.1-.4-.3-.2-.5l1.3-2.1c.2-.2.1-.6-.1-.8l-1.6-1.6c-.1-.1-.3-.2-.4-.2-.1 0-.2 0-.3.1l-2.1 1.3c-.1.1-.1.1-.2.1s-.3-.1-.3-.3l-.5-2.2c-.1-.3-.3-.5-.6-.5zM11 14.5c-1.9 0-3.5-1.6-3.5-3.5S9.1 7.5 11 7.5s3.5 1.6 3.5 3.5-1.6 3.5-3.5 3.5z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-feedback{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill-rule='evenodd' d='M21 6H3v12h18V6ZM3 5a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H3Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m2.666 6.372.668-.744 8.666 7.7 8.666-7.7.668.744-9.334 8.3-9.334-8.3Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m9.376 11.33-6 7-.752-.66 6-7 .752.66ZM15.376 10.67l6 7-.752.66-6-7 .752-.66Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-feedback,.device-ios i.icon.icon-versions{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-versions{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='-1 7 22 22'%3E%3Cpath d='M19 12c0-1.1-.9-2-2-2 0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2-1.1 0-2 .9-2 2-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V14c0-1.1-.9-2-2-2zM5 9h10c.6 0 1 .4 1 1H4c0-.6.4-1 1-1zm-2 2h14c.6 0 1 .4 1 1H2c0-.6.4-1 1-1zm17 15c0 .6-.4 1-1 1H1c-.6 0-1-.4-1-1V14c0-.6.4-1 1-1h18c.6 0 1 .4 1 1v12z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-color{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='m8.9 12 2.3-6.3 2.2 6.3H8.9zm-4.2 5.8h2l1.6-4.3h5.6l1.5 4.3h2.1L12.3 3.5h-2.2L4.7 17.8z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-fill-color,.device-ios i.icon.icon-text-color{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-fill-color{background-size:130%;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M11 2.3 3.8 9.5 9 14.7l7.2-7.2L11 2.3zm3.8 5.2L13.3 9H5.7L11 3.7l3.8 3.8zM17 9s-2 2-2 3 1 2 2 2 2-1 2-2-2-3-2-3z'/%3E%3Cpath d='M10.8 7.5c-3.2-1.1-4.3-2.8-4.3-4 0-.3.1-.5.4-.7.7-.5 2.6 0 3.3.2l-.4 1c-1-.3-2-.5-2.3-.4.1.8 1 2.1 3.7 2.9l-.4 1z'/%3E%3Ccircle cx='11' cy='7' r='1'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm3 4v1h14V7H4zm-3 5h21v-1H1v1zm3 3v1h14v-1H4zm-3 5h21v-1H1v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-center,.device-ios i.icon.icon-text-align-jast{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-align-jast{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm0 5h21V7H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm14 4H1v1h14V7zM1 12h21v-1H1v1zm14 3H1v1h14v-1zM1 20h21v-1H1v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-left,.device-ios i.icon.icon-text-align-right{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-align-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm7 5h14V7H8v1zm14 3H1v1h21v-1zM8 16h14v-1H8v1zm14 3H1v1h21v-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-just{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm0 5h21V7H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-align-just,.device-ios i.icon.icon-text-valign-top{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-valign-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M2 2h19v1H2zM2 4h19v1H2zM12 18h-1V7.83L8.65 9.8 8 8.94 11.5 6 15 9l-.65.8L12 7.83V18z' class='cls-1'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-valign-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M2 10h19v1H2zM2 12h19v1H2zM11 2h1v5.17l2.35-1.97.65.86L11.5 9 8 6l.65-.8L11 7.17V2zM12 21h-1v-5.17L8.65 17.8 8 16.94 11.5 14l3.5 3-.65.8L12 15.83V21z' class='cls-1'/%3E%3C/svg%3E")}.device-ios i.icon.icon-text-valign-bottom,.device-ios i.icon.icon-text-valign-middle{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-text-valign-bottom{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M2 18h19v1H2zM2 20h19v1H2zM11 4h1v11.17l2.35-1.97.65.86L11.5 17 8 14l.65-.8L11 15.17V4z' class='cls-1'/%3E%3C/svg%3E")}.device-ios i.icon.icon-expand-down{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='m20.5 6.5 1.1 1.1L11 18 .5 7.5l1.1-1.1 9.5 9.5 9.4-9.4z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-expand-down,.device-ios i.icon.icon-link{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-link{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M12.4 9.8s-2.1-.1-3.8 1.2c-2.8 2-3.3 4.3-3.3 4.3s1.6-1.7 3.5-2.5c1.7-.7 3.7-.4 3.7-.4v1.9l4.8-3.3-4.8-3.3v2.1zM11 1C5.5 1 1 5.5 1 11s4.5 10 10 10 10-4.5 10-10S16.5 1 11 1zm0 19c-5 0-9-4.1-9-9 0-5 4-9 9-9s9 4.1 9 9c0 5-4 9-9 9z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-insimage{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M19 4H3v15h17V4h-1zM7.5 7C8.3 7 9 7.7 9 8.5S8.3 10 7.5 10 6 9.3 6 8.5 6.7 7 7.5 7zM5.2 18l5.5-5.5 5.5 5.5h-11zM19 18h-1.5l-4.3-4.3 4-4 1.8 1.8V18z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-insimage,.device-ios i.icon.icon-sort{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-sort{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='m8 16.4-.7-.7L5 18.1V2H4v16.1l-2.3-2.4-.7.7L4.5 20zM19.3 4H8.7c-.6 0-.9.6-.6 1.1L12 11v4.7l2.8 1.5c.5.3 1.1-.1 1.1-.7V11l3.9-5.9c.4-.5.1-1.1-.5-1.1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-image-library{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cdefs%3E%3ClinearGradient id='a' x1='11.08' x2='11.08' y1='10.26' y2='1.26' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23f3e916'/%3E%3Cstop offset='1' stop-color='%23f89d34'/%3E%3C/linearGradient%3E%3ClinearGradient id='b' x1='11.08' x2='11.08' y1='20.44' y2='11.88' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%235eb6e8'/%3E%3Cstop offset='1' stop-color='%23958cc3'/%3E%3C/linearGradient%3E%3ClinearGradient id='c' x1='1.46' x2='10.46' y1='11.05' y2='11.05' gradientTransform='rotate(90 5.955 11.045)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23cc8dba'/%3E%3Cstop offset='1' stop-color='%23f86867'/%3E%3C/linearGradient%3E%3ClinearGradient id='d' x1='11.73' x2='20.73' y1='11.05' y2='11.05' gradientTransform='rotate(90 16.23 11.05)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%236ac07f'/%3E%3Cstop offset='1' stop-color='%23c5da3d'/%3E%3C/linearGradient%3E%3ClinearGradient id='e' x1='11.74' x2='17.52' y1='10.42' y2='4.63' gradientTransform='rotate(135 14.625 7.528)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23c5da3d'/%3E%3Cstop offset='1' stop-color='%23f3e916'/%3E%3C/linearGradient%3E%3ClinearGradient id='f' x1='4.7' x2='10.48' y1='17.49' y2='11.71' gradientTransform='rotate(135 7.55 14.638)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%239595c3'/%3E%3Cstop offset='1' stop-color='%23cc8dba'/%3E%3C/linearGradient%3E%3ClinearGradient id='g' x1='4.69' x2='10.47' y1='4.64' y2='10.42' gradientTransform='rotate(45 7.572 7.527)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23f86867'/%3E%3Cstop offset='1' stop-color='%23f89d34'/%3E%3C/linearGradient%3E%3ClinearGradient id='h' x1='11.77' x2='17.55' y1='11.78' y2='17.56' gradientTransform='rotate(45 14.618 14.635)' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%235ec0e8'/%3E%3Cstop offset='1' stop-color='%236ac07f'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg data-name='Слой 1' style='isolation:isolate'%3E%3Crect width='22' height='22' x='.09' y='.01' rx='4' ry='4' style='opacity:.2'/%3E%3Crect width='21.04' height='21.04' x='.57' y='.49' rx='3.6' ry='3.6' style='fill:%23fff'/%3E%3Crect width='5.5' height='9' x='8.33' y='1.26' rx='2.5' ry='2.5' style='fill:url(%23a);mix-blend-mode:multiply'/%3E%3Crect width='5.5' height='9' x='8.33' y='11.76' rx='2.5' ry='2.5' style='fill:url(%23b)'/%3E%3Crect width='5.5' height='9' x='3.21' y='6.55' rx='2.5' ry='2.5' style='fill:url(%23c);mix-blend-mode:multiply' transform='rotate(-90 5.955 11.045)'/%3E%3Crect width='5.5' height='9' x='13.48' y='6.55' rx='2.5' ry='2.5' style='fill:url(%23d);mix-blend-mode:multiply' transform='rotate(-90 16.23 11.05)'/%3E%3Crect width='5.5' height='9' x='11.87' y='3.03' rx='2.5' ry='2.5' style='fill:url(%23e);mix-blend-mode:multiply' transform='rotate(-135 14.623 7.527)'/%3E%3Crect width='5.5' height='9' x='4.8' y='10.14' rx='2.5' ry='2.5' style='fill:url(%23f);mix-blend-mode:multiply' transform='rotate(-135 7.552 14.639)'/%3E%3Crect width='5.5' height='9' x='4.83' y='3.03' rx='2.5' ry='2.5' style='fill:url(%23g);mix-blend-mode:multiply' transform='rotate(-45 7.576 7.522)'/%3E%3Crect width='5.5' height='9' x='11.87' y='10.14' rx='2.5' ry='2.5' style='fill:url(%23h);mix-blend-mode:multiply' transform='rotate(-45 14.625 14.642)'/%3E%3C/g%3E%3C/svg%3E");height:22px;width:22px}.device-ios i.icon.icon-cell-wrap{background-color:var(--brand-cell);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M20 1H0v20h21V1h-1zm0 19H1V2h19v18z'/%3E%3Cpath d='M2 4h17v1H2zM2 12h17v1H2zM2 8h11v1H2zM2 16h11v1H2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-cell-wrap,.device-ios i.icon.icon-function{height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-function{background-color:var(--text-normal);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='-238 240 24 22'%3E%3Cpath d='M-226.94 257.74c-.26-.54-.46-1.18-.61-1.92-.15-.73-.22-1.46-.22-2.18 0-1.35.26-2.7.78-4.04.52-1.35 1.22-2.49 2.1-3.43.88-.94 1.51-1.53 1.89-1.77.1-.06.14-.1.14-.13 0-.04-.07-.05-.21-.05-.31 0-.55.04-.71.12-.16.08-.53.4-1.1.96s-1.07 1.14-1.49 1.75c-.42.61-.78 1.25-1.06 1.94-.29.69-.51 1.42-.68 2.19-.17.77-.25 1.63-.25 2.57 0 .58.07 1.25.2 1.99s.33 1.41.58 2c.25.59.41.9.48.94.07.04.24.06.51.06.09 0 .13-.02.13-.05l-.03-.05c-.04-.05-.19-.35-.45-.9zm7.79-4.69c0-.09-.04-.14-.12-.14-.08 0-.18.08-.29.24-.28.41-.59.71-.92.91s-.61.3-.85.3c-.18 0-.36-.08-.52-.25-.17-.16-.25-.42-.25-.77 0-.69.23-1.66.68-2.93.45-1.27 1.01-1.9 1.68-1.9.15 0 .22.08.22.24 0 .06-.01.15-.04.27-.02.07-.02.12-.02.18 0 .13.05.23.14.32.09.08.2.13.34.13.19 0 .34-.06.45-.17.1-.11.16-.24.16-.38 0-.24-.1-.47-.29-.67a.919.919 0 0 0-.71-.31c-.55 0-1.09.29-1.62.87-.11.12-.18.18-.21.18l-.08-.03c-.06-.33-.17-.58-.34-.75-.17-.17-.4-.25-.69-.25-.37 0-.78.19-1.22.56-.44.37-.66.62-.66.74 0 .08.04.11.13.11.08 0 .2-.09.37-.27.45-.48.81-.72 1.09-.72.14 0 .27.08.38.25.11.17.16.39.16.67 0 .58-.27 1.53-.8 2.85-.54 1.32-1.1 1.98-1.68 1.98-.13 0-.23-.05-.3-.14a.41.41 0 0 1-.12-.27c0-.05.01-.12.03-.23.01-.07.02-.13.02-.18 0-.3-.14-.45-.42-.45-.18 0-.33.07-.46.2s-.2.3-.2.51c0 .26.13.48.4.66.27.18.56.26.86.26.4 0 .87-.23 1.41-.68.23-.19.39-.31.47-.36.04.05.11.17.21.37.26.48.66.71 1.21.71.57 0 1.11-.22 1.63-.67.51-.45.77-.78.77-.99zm2.95-5.83c-.13-.75-.33-1.41-.58-2-.25-.59-.41-.9-.48-.94-.07-.04-.24-.06-.51-.06-.09 0-.13.02-.13.05l.03.05c.05.06.2.36.46.91.26.54.46 1.18.61 1.91.15.73.22 1.46.22 2.17 0 1.36-.26 2.71-.78 4.05-.52 1.35-1.22 2.49-2.11 3.43-.89.94-1.51 1.53-1.89 1.77l-.14.13c0 .04.07.06.21.06.3 0 .5-.02.59-.05.1-.03.47-.35 1.11-.94.64-.59 1.19-1.24 1.65-1.94.46-.7.83-1.4 1.12-2.11.28-.7.49-1.44.62-2.21.14-.76.2-1.52.2-2.29 0-.58-.07-1.24-.2-1.99z'/%3E%3Cpath d='M-226.94 257.74c-.26-.54-.46-1.18-.61-1.92-.15-.73-.22-1.46-.22-2.18 0-1.35.26-2.7.78-4.04.52-1.35 1.22-2.49 2.1-3.43.88-.94 1.51-1.53 1.89-1.77.1-.06.14-.1.14-.13 0-.04-.07-.05-.21-.05-.31 0-.55.04-.71.12-.16.08-.53.4-1.1.96s-1.07 1.14-1.49 1.75c-.42.61-.78 1.25-1.06 1.94-.29.69-.51 1.42-.68 2.19-.17.77-.25 1.63-.25 2.57 0 .58.07 1.25.2 1.99s.33 1.41.58 2c.25.59.41.9.48.94.07.04.24.06.51.06.09 0 .13-.02.13-.05l-.03-.05c-.04-.05-.19-.35-.45-.9zm7.79-4.69c0-.09-.04-.14-.12-.14-.08 0-.18.08-.29.24-.28.41-.59.71-.92.91s-.61.3-.85.3c-.18 0-.36-.08-.52-.25-.17-.16-.25-.42-.25-.77 0-.69.23-1.66.68-2.93.45-1.27 1.01-1.9 1.68-1.9.15 0 .22.08.22.24 0 .06-.01.15-.04.27-.02.07-.02.12-.02.18 0 .13.05.23.14.32.09.08.2.13.34.13.19 0 .34-.06.45-.17.1-.11.16-.24.16-.38 0-.24-.1-.47-.29-.67a.919.919 0 0 0-.71-.31c-.55 0-1.09.29-1.62.87-.11.12-.18.18-.21.18l-.08-.03c-.06-.33-.17-.58-.34-.75-.17-.17-.4-.25-.69-.25-.37 0-.78.19-1.22.56-.44.37-.66.62-.66.74 0 .08.04.11.13.11.08 0 .2-.09.37-.27.45-.48.81-.72 1.09-.72.14 0 .27.08.38.25.11.17.16.39.16.67 0 .58-.27 1.53-.8 2.85-.54 1.32-1.1 1.98-1.68 1.98-.13 0-.23-.05-.3-.14a.41.41 0 0 1-.12-.27c0-.05.01-.12.03-.23.01-.07.02-.13.02-.18 0-.3-.14-.45-.42-.45-.18 0-.33.07-.46.2s-.2.3-.2.51c0 .26.13.48.4.66.27.18.56.26.86.26.4 0 .87-.23 1.41-.68.23-.19.39-.31.47-.36.04.05.11.17.21.37.26.48.66.71 1.21.71.57 0 1.11-.22 1.63-.67.51-.45.77-.78.77-.99zm2.95-5.83c-.13-.75-.33-1.41-.58-2-.25-.59-.41-.9-.48-.94-.07-.04-.24-.06-.51-.06-.09 0-.13.02-.13.05l.03.05c.05.06.2.36.46.91.26.54.46 1.18.61 1.91.15.73.22 1.46.22 2.17 0 1.36-.26 2.71-.78 4.05-.52 1.35-1.22 2.49-2.11 3.43-.89.94-1.51 1.53-1.89 1.77l-.14.13c0 .04.07.06.21.06.3 0 .5-.02.59-.05.1-.03.47-.35 1.11-.94.64-.59 1.19-1.24 1.65-1.94.46-.7.83-1.4 1.12-2.11.28-.7.49-1.44.62-2.21.14-.76.2-1.52.2-2.29 0-.58-.07-1.24-.2-1.99z' style='fill:none;stroke:%23000;stroke-width:.5;stroke-linecap:square;stroke-miterlimit:10'/%3E%3Cpath d='M-229.66 247.67c.02-.08.03-.18.04-.3.02-.12.03-.21.04-.27-.88 0-1.36-.01-1.44-.04.39-1.87.78-3.11 1.17-3.73.39-.62.83-.93 1.31-.93.18 0 .32.04.4.11.09.07.13.18.13.33 0 .1-.04.22-.11.35-.12.21-.17.39-.17.53 0 .2.06.36.18.5.12.13.26.2.42.2.2 0 .36-.09.48-.27.12-.18.18-.39.18-.62 0-.4-.13-.75-.39-1.06-.27-.32-.63-.47-1.1-.47-.79 0-1.49.43-2.11 1.28-.61.85-1.09 2.15-1.43 3.9-.68.01-1.21.04-1.62.08l-.1.54 1.6-.05c-.08.33-.26 1.17-.53 2.52-.68 3.42-1.27 5.89-1.77 7.41-.5 1.52-1.1 2.28-1.79 2.28-.19 0-.34-.06-.45-.19s-.17-.26-.17-.41c0-.1.04-.25.11-.45.06-.17.09-.31.09-.42a.75.75 0 0 0-.18-.5.563.563 0 0 0-.44-.21c-.2 0-.36.1-.5.3-.14.2-.2.44-.2.72 0 .43.15.8.45 1.11.3.31.68.47 1.14.47.77 0 1.45-.41 2.06-1.23.61-.82 1.11-2.1 1.51-3.85l1.68-7.57c.51-.03 1.01-.05 1.51-.06z' style='stroke:%23000;stroke-width:.5;stroke-linejoin:round;stroke-miterlimit:10'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-backward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h17v17H1z' opacity='.3'/%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-backward,.device-ios i.icon.icon-move-forward{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-move-forward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z' opacity='.3'/%3E%3Cpath d='M1 1h17v17H1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-background{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M8 8h13v13H8z' opacity='.3'/%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-move-background,.device-ios i.icon.icon-move-foreground{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-move-foreground{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z' opacity='.3'/%3E%3Cpath d='M8 8h13v13H8z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-cell-style{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill-opacity='.6' clip-path='url(%23a)'%3E%3Cpath d='M3 0h1v24H3zM20 0h1v24h-1z'/%3E%3Cpath d='M0 6h24v1H0zM0 17h24v1H0z'/%3E%3Cg clip-path='url(%23b)'%3E%3Cpath stroke='%23fff' stroke-width='.2' d='M22.368 24.604c.268.255.619.396.989.396.382 0 .741-.149 1.012-.419l-.07-.07c.247-.248.385-.577.389-.927v-.015c0-.344-.13-.67-.369-.92l-7.507-7.85a3.463 3.463 0 0 1-1.564 1.95l-.05-.085.05.085a3.86 3.86 0 0 1-.633.302l9.684 7.46c-.253.25-.587.39-.942.39-.344 0-.67-.132-.92-.37m-.069.073.07-.073m-.07.073-7.859-7.515 7.929 7.442m-.07.073.07-.073'/%3E%3Cpath d='m15.872 13.863.002-.12c0-.673-.234-1.34-.626-1.886-.472-.656-1.15-.918-1.769-1.4-.774-.604-1.153-1.534-1.412-2.457-1.42.537-2.002 2.534-2.033 3.843a5.561 5.561 0 0 0-.002.142c0 1.483.551 3.229 2.01 3.943 1.6.785 3.75-.182 3.83-2.065Z'/%3E%3C/g%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='%23fff' d='M0 0h24v24H0z'/%3E%3C/clipPath%3E%3CclipPath id='b'%3E%3Cpath fill='%23fff' d='M25.91 8v17h-17V8z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-table-borders-all{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-all,.device-ios i.icon.icon-table-borders-none{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-none{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z' opacity='.3'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-inner{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M26 13H14V1h-1v12H1v1h12v12h1V14h12v-1z'/%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-inner,.device-ios i.icon.icon-table-borders-outer{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-outer{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h1v27H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-center,.device-ios i.icon.icon-table-borders-left{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M13 0h1v27h-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M26 0h1v27h-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-right,.device-ios i.icon.icon-table-borders-top{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h27v1H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 13h27v1H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-bottom,.device-ios i.icon.icon-table-borders-middle{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-bottom{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 26h27v1H0z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-dup{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='3 -3 28 28'%3E%3Cpath d='M3-3v27h27V-3H3zm1 1h25v25H4V-2z' opacity='.3'/%3E%3Cpath d='M30-3h-1L3 23v1h1L30-2z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-borders-ddown,.device-ios i.icon.icon-table-borders-dup{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-ios i.icon.icon-table-borders-ddown{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='3 -3 28 28'%3E%3Cpath d='M3-3v27h27V-3H3zm1 1h25v25H4V-2z' opacity='.3'/%3E%3Cpath d='M30 23 4-3H3v1l26 26h1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-format-general{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M4.77 2.86 7.56 10H6.51l-.78-2.15H2.71L1.91 10H.94l2.78-7.14h1.05zm.66 4.19L4.24 3.72h-.02L3.01 7.05h2.42zM10.85 2.86c.153 0 .318.002.495.005.176.004.352.013.525.03s.335.042.485.075c.15.033.278.083.385.15.233.14.431.334.595.58.163.247.245.55.245.91 0 .38-.092.708-.275.985a1.624 1.624 0 0 1-.785.615v.02c.44.093.776.293 1.01.6s.35.68.35 1.12c0 .26-.047.513-.14.76a1.911 1.911 0 0 1-.415.655c-.183.19-.41.343-.68.46s-.582.175-.935.175H8.26V2.86h2.59zm.26 3.07c.54 0 .928-.095 1.165-.285s.355-.475.355-.855c0-.253-.04-.453-.12-.6a.853.853 0 0 0-.33-.34 1.3 1.3 0 0 0-.485-.155 4.712 4.712 0 0 0-.585-.035h-1.9v2.27h1.9zm.48 3.27c.42 0 .748-.113.985-.34.237-.227.355-.54.355-.94 0-.233-.043-.426-.13-.58a1.006 1.006 0 0 0-.345-.365c-.143-.09-.309-.153-.495-.19s-.38-.055-.58-.055H9.21V9.2h2.38zM19.425 3.87c-.363-.253-.795-.38-1.295-.38-.427 0-.792.08-1.095.24-.304.16-.554.375-.75.645-.197.27-.342.579-.435.925-.093.346-.14.707-.14 1.08 0 .407.047.792.14 1.155s.238.68.435.95c.196.27.448.485.755.645.307.16.673.24 1.1.24.313 0 .591-.052.835-.155A1.89 1.89 0 0 0 20.02 8.13c.1-.253.16-.526.18-.82h.95c-.093.9-.403 1.6-.93 2.1s-1.247.75-2.16.75c-.553 0-1.037-.095-1.45-.285a2.848 2.848 0 0 1-1.03-.785 3.37 3.37 0 0 1-.615-1.18c-.137-.453-.205-.94-.205-1.46s.073-1.008.22-1.465c.146-.457.362-.855.645-1.195s.637-.608 1.06-.805c.423-.196.908-.295 1.455-.295.373 0 .727.05 1.06.15.333.1.63.247.89.44.26.194.476.435.65.725.174.29.287.625.34 1.005h-.95c-.107-.507-.341-.886-.705-1.14zM3.71 19v-5.08H1.87v-.68c.24 0 .473-.018.7-.055s.431-.105.615-.205c.183-.1.338-.236.465-.41.126-.174.213-.393.26-.66h.65V19h-.85zM8.71 13.42c.093-.307.238-.571.435-.795.197-.223.442-.398.735-.525.293-.126.627-.19 1-.19.307 0 .595.045.865.135s.505.22.705.39.359.382.475.635c.117.253.175.547.175.88 0 .314-.048.59-.145.83a2.37 2.37 0 0 1-.385.645c-.16.19-.343.362-.55.515s-.42.3-.64.44c-.22.134-.44.265-.66.395-.22.13-.422.268-.605.415-.183.147-.34.305-.47.475-.13.17-.215.365-.255.585h3.64V19H8.4c.034-.42.108-.778.225-1.075.117-.297.265-.555.445-.775.18-.22.384-.413.61-.58.227-.167.464-.323.71-.47.3-.186.564-.358.79-.515s.415-.315.565-.475a1.7 1.7 0 0 0 .34-.52 1.7 1.7 0 0 0 .115-.65 1.224 1.224 0 0 0-.405-.93 1.27 1.27 0 0 0-.435-.26 1.555 1.555 0 0 0-.53-.09c-.247 0-.458.052-.635.155a1.33 1.33 0 0 0-.435.405c-.114.167-.195.355-.245.565s-.072.422-.065.635H8.6c-.02-.36.017-.693.11-1zM17.59 14.96h.28c.18 0 .351-.025.515-.075.163-.05.306-.123.43-.22.123-.097.222-.218.295-.365.073-.147.11-.313.11-.5 0-.38-.12-.665-.36-.855-.24-.19-.54-.285-.9-.285-.227 0-.425.042-.595.125s-.31.195-.42.335c-.11.14-.192.303-.245.49-.054.187-.08.384-.08.59h-.85c.013-.34.068-.65.165-.93.096-.28.235-.52.415-.72.18-.2.405-.357.675-.47s.581-.17.935-.17c.307 0 .591.038.855.115.263.077.491.192.685.345.193.153.345.35.455.59.11.24.165.523.165.85 0 .32-.094.604-.28.85s-.42.433-.7.56v.02c.433.093.755.297.965.61s.315.683.315 1.11c0 .353-.065.665-.195.935s-.305.495-.525.675c-.22.18-.479.315-.775.405-.297.09-.612.135-.945.135-.36 0-.687-.05-.98-.15a2.011 2.011 0 0 1-.75-.445c-.207-.197-.365-.438-.475-.725s-.162-.613-.155-.98h.85c.013.46.146.835.4 1.125s.623.435 1.11.435c.207 0 .403-.032.59-.095.186-.063.35-.153.49-.27.14-.116.252-.26.335-.43.083-.17.125-.362.125-.575a1.3 1.3 0 0 0-.44-1.015 1.295 1.295 0 0 0-.475-.26 2.009 2.009 0 0 0-.595-.085c-.18 0-.35.01-.51.03v-.72c.033.007.063.01.09.01z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-format-general,.device-ios i.icon.icon-format-number{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-format-number{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M3.71 13.833v-5.08H1.87v-.68c.24 0 .473-.018.7-.055s.431-.105.615-.205c.183-.1.338-.236.465-.41.126-.174.213-.393.26-.66h.65v7.09h-.85zM8.5 12.723v1.01c0 .38-.086.706-.26.98-.174.273-.453.467-.84.58v-.5a.755.755 0 0 0 .285-.175.97.97 0 0 0 .28-.525 1 1 0 0 0 .015-.26h-.59v-1.11H8.5zM9.78 9.543c.013-.28.046-.553.1-.82.053-.266.13-.52.23-.76s.236-.45.41-.63a1.87 1.87 0 0 1 .655-.43c.263-.107.578-.16.945-.16s.681.053.945.16c.263.107.481.25.655.43s.31.39.41.63c.1.24.177.494.23.76s.086.54.1.82a17.25 17.25 0 0 1 0 1.62c-.014.28-.047.553-.1.82s-.13.518-.23.755a2.03 2.03 0 0 1-.41.625c-.174.18-.39.322-.65.425-.26.103-.577.155-.95.155-.367 0-.682-.052-.945-.155a1.814 1.814 0 0 1-.655-.425 2.02 2.02 0 0 1-.41-.625 3.877 3.877 0 0 1-.23-.755 5.444 5.444 0 0 1-.1-.82 17.266 17.266 0 0 1 0-1.62zm.905 1.695c.016.33.07.64.16.93.09.29.235.535.435.735.2.2.48.3.84.3s.64-.1.84-.3c.2-.2.345-.445.435-.735.09-.29.143-.6.16-.93a17.982 17.982 0 0 0 .02-1.47 4.826 4.826 0 0 0-.18-1.245c-.057-.2-.14-.375-.25-.525a1.3 1.3 0 0 0-.415-.365 1.234 1.234 0 0 0-.61-.14c-.24 0-.444.047-.61.14a1.3 1.3 0 0 0-.415.365c-.11.15-.194.325-.25.525a4.937 4.937 0 0 0-.18 1.245c-.003.21-.005.402-.005.575 0 .267.008.565.025.895zM15.34 9.543c.013-.28.046-.553.1-.82.053-.266.13-.52.23-.76s.236-.45.41-.63a1.87 1.87 0 0 1 .655-.43c.263-.107.578-.16.945-.16s.681.053.945.16c.263.107.481.25.655.43s.31.39.41.63c.1.24.177.494.23.76s.086.54.1.82a17.25 17.25 0 0 1 0 1.62c-.014.28-.047.553-.1.82s-.13.518-.23.755a2.03 2.03 0 0 1-.41.625c-.174.18-.39.322-.65.425-.26.103-.577.155-.95.155-.367 0-.682-.052-.945-.155a1.814 1.814 0 0 1-.655-.425 2.02 2.02 0 0 1-.41-.625 3.877 3.877 0 0 1-.23-.755 5.444 5.444 0 0 1-.1-.82 17.266 17.266 0 0 1 0-1.62zm.905 1.695c.016.33.07.64.16.93.09.29.235.535.435.735.2.2.48.3.84.3s.64-.1.84-.3c.2-.2.345-.445.435-.735.09-.29.143-.6.16-.93a17.982 17.982 0 0 0 .02-1.47 4.826 4.826 0 0 0-.18-1.245c-.057-.2-.14-.375-.25-.525a1.3 1.3 0 0 0-.415-.365 1.234 1.234 0 0 0-.61-.14c-.24 0-.444.047-.61.14a1.3 1.3 0 0 0-.415.365c-.11.15-.194.325-.25.525a4.937 4.937 0 0 0-.18 1.245c-.003.21-.005.402-.005.575 0 .267.008.565.025.895z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-format-integer{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M4.709 14.833v-5.08h-1.84v-.68c.24 0 .474-.018.7-.055s.432-.105.616-.205c.182-.1.338-.236.464-.41a1.57 1.57 0 0 0 .261-.66h.65v7.09h-.851zM8.11 9.253a2.12 2.12 0 0 1 .435-.795c.196-.223.441-.398.734-.525s.627-.19 1-.19c.307 0 .596.045.866.135s.504.22.705.39.358.382.474.635c.117.253.176.547.176.88 0 .314-.049.59-.146.83-.096.24-.225.455-.384.645-.16.19-.344.362-.55.515-.207.153-.42.3-.64.44-.22.134-.44.265-.66.395a5.17 5.17 0 0 0-.605.415c-.184.147-.34.305-.47.475-.13.17-.215.365-.256.585h3.64v.75H7.8a3.78 3.78 0 0 1 .225-1.075c.117-.297.265-.555.446-.775.18-.22.384-.413.61-.58a8.78 8.78 0 0 1 .71-.47c.3-.186.564-.358.79-.515s.414-.315.565-.475c.15-.16.263-.333.34-.52a1.71 1.71 0 0 0 .115-.65 1.239 1.239 0 0 0-.84-1.19 1.555 1.555 0 0 0-.53-.09c-.248 0-.459.052-.635.155a1.329 1.329 0 0 0-.435.405 1.689 1.689 0 0 0-.246.565c-.049.21-.071.422-.064.635H8c-.02-.36.016-.693.11-1zM15.39 10.793h.28c.18 0 .351-.025.515-.075a1.32 1.32 0 0 0 .43-.22 1.069 1.069 0 0 0 .405-.865c0-.38-.12-.665-.36-.855-.24-.19-.54-.285-.9-.285-.227 0-.426.042-.596.125s-.31.195-.42.335c-.11.14-.191.303-.244.49-.054.187-.08.384-.08.59h-.85c.013-.34.068-.65.164-.93s.236-.52.415-.72c.181-.2.406-.357.675-.47.27-.113.582-.17.936-.17.306 0 .592.038.855.115.263.077.49.192.685.345.192.153.345.35.454.59.111.24.166.523.166.85 0 .32-.094.604-.28.85s-.42.433-.7.56v.02c.433.094.755.297.964.61.211.314.316.683.316 1.11 0 .353-.066.665-.196.935s-.304.495-.524.675c-.22.18-.479.315-.775.405-.297.09-.612.135-.946.135-.36 0-.686-.05-.98-.15a2.003 2.003 0 0 1-.75-.445 1.95 1.95 0 0 1-.475-.725 2.596 2.596 0 0 1-.154-.98h.85c.013.46.146.835.4 1.125.253.29.623.435 1.11.435.206 0 .404-.032.59-.095.187-.063.35-.153.49-.27.14-.116.251-.26.335-.43.082-.17.125-.362.125-.575 0-.22-.04-.415-.12-.585s-.187-.313-.321-.43c-.133-.116-.291-.203-.475-.26s-.38-.085-.594-.085c-.181 0-.351.01-.51.03v-.72c.033.007.063.01.09.01z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-format-integer,.device-ios i.icon.icon-format-scientific{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-format-scientific{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M4.98 15.833v-5.588H2.957v-.748c.264 0 .52-.02.77-.06.249-.04.474-.116.675-.226.202-.11.373-.26.512-.451.14-.19.234-.432.287-.726h.715v7.799H4.98zM8.6 11.114a5.95 5.95 0 0 1 .11-.902c.059-.293.143-.572.253-.836.11-.264.26-.495.451-.693.19-.198.43-.355.72-.473.29-.117.637-.176 1.04-.176s.75.059 1.039.176a2.051 2.051 0 0 1 1.172 1.166c.11.264.194.543.253.836.058.293.094.594.11.902.014.308.022.605.022.89 0 .287-.008.584-.022.892a6.193 6.193 0 0 1-.11.902c-.059.293-.144.57-.253.83s-.26.49-.451.688c-.19.198-.43.354-.715.468-.286.113-.635.17-1.045.17-.403 0-.75-.057-1.04-.17a1.98 1.98 0 0 1-.72-.468 2.21 2.21 0 0 1-.451-.688 4.256 4.256 0 0 1-.253-.83c-.06-.293-.096-.594-.11-.902s-.022-.605-.022-.891c0-.286.007-.583.022-.891zm.996 1.865c.017.362.076.704.175 1.022.1.32.258.589.479.81.22.219.527.33.924.33s.704-.111.924-.33c.22-.221.379-.49.478-.81s.158-.66.176-1.022c.019-.363.027-.691.027-.985 0-.19-.002-.402-.005-.633a5.52 5.52 0 0 0-.198-1.369c-.062-.22-.154-.412-.275-.577s-.274-.3-.456-.402c-.184-.103-.408-.154-.671-.154s-.488.051-.671.154a1.401 1.401 0 0 0-.456.402 1.794 1.794 0 0 0-.276.577 5.343 5.343 0 0 0-.198 1.37c-.004.23-.005.441-.005.632 0 .294.008.622.028.985zM14.33 5.11c.055-.184.143-.343.26-.477.119-.134.265-.239.441-.315.176-.076.376-.114.6-.114.184 0 .357.027.52.081.162.054.302.132.423.234.12.102.215.229.284.38.07.153.105.329.105.53 0 .187-.028.353-.086.497a1.416 1.416 0 0 1-.231.387c-.097.114-.207.217-.33.31s-.253.18-.384.263a42.4 42.4 0 0 1-.397.237 3.293 3.293 0 0 0-.363.25c-.11.087-.203.182-.281.284a.807.807 0 0 0-.154.35h2.185v.451h-2.778c.02-.252.065-.467.134-.645.07-.178.16-.333.267-.465.108-.132.23-.248.367-.348.135-.1.277-.194.426-.282.18-.112.338-.215.474-.309.135-.094.249-.189.338-.285s.159-.2.204-.312.07-.242.07-.39a.736.736 0 0 0-.243-.558.771.771 0 0 0-.261-.156.936.936 0 0 0-.318-.054.739.739 0 0 0-.643.336c-.067.1-.117.213-.146.34s-.043.252-.04.38h-.51c-.011-.216.01-.416.067-.6z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-format-accounting{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M15.5 21h-10C4.1 21 3 19.9 3 18.5v-14C3 3.1 4.1 2 5.5 2h10C16.9 2 18 3.1 18 4.5v14c0 1.4-1.1 2.5-2.5 2.5zM5.5 3C4.7 3 4 3.7 4 4.5v14c0 .8.7 1.5 1.5 1.5h10c.8 0 1.5-.7 1.5-1.5v-14c0-.8-.7-1.5-1.5-1.5h-10z'/%3E%3Cpath d='M14.5 9h-8C5.7 9 5 8.3 5 7.5v-2C5 4.7 5.7 4 6.5 4h8c.8 0 1.5.7 1.5 1.5v2c0 .8-.7 1.5-1.5 1.5zm-8-4c-.3 0-.5.2-.5.5v2c0 .3.2.5.5.5h8c.3 0 .5-.2.5-.5v-2c0-.3-.2-.5-.5-.5h-8zM5 10h3v2H5zM9 10h3v2H9zM13 10h3v2h-3zM13 13h3v2h-3zM9 13h3v2H9zM5 13h3v2H5zM5 16h3v2H5zM9 16h3v2H9zM13 16h3v2h-3z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-format-accounting,.device-ios i.icon.icon-format-currency{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-format-currency{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M0 4v14h22V4H0zm21 13H1V5h20v12z'/%3E%3Cpath d='M11 16c-2.2 0-4-2.2-4-5s1.8-5 4-5 4 2.2 4 5-1.8 5-4 5zm0-9c-1.7 0-3 1.8-3 4s1.3 4 3 4 3-1.8 3-4-1.3-4-3-4z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-format-date{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M20 20H2V7h18v13zM3 19h16V8H3v11zM8 6H5V2h3v4zM6 5h1V3H6v2zM17 6h-3V2h3v4zm-2-1h1V3h-1v2z'/%3E%3Cpath d='M8.8 15.8v-4.1H7.4v-.5H8c.2 0 .3-.1.5-.2.1-.1.3-.2.4-.3 0-.1.1-.3.1-.5h.5v5.7h-.7zM14.4 11.8c-.3.4-.5.8-.7 1.2-.2.4-.4.9-.5 1.4-.1.5-.2.9-.2 1.4h-.8c0-.5.1-.9.2-1.4.1-.5.3-.9.5-1.3s.4-.8.7-1.2c.3-.4.5-.7.8-1h-3v-.6h3.7v.6c-.2.2-.5.6-.7.9zM2 3h1v4H2zM3 3h2v1H3zM8 3h6v1H8zM17 3h3v1h-3zM19 4h1v3h-1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-format-date,.device-ios i.icon.icon-format-time{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-format-time{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M11.2 21.1C5.5 21.1.9 16.5.9 10.8S5.5.5 11.2.5s10.3 4.6 10.3 10.3-4.6 10.3-10.3 10.3zm0-19.6c-5.1 0-9.3 4.2-9.3 9.3 0 5.1 4.2 9.3 9.3 9.3 5.1 0 9.3-4.2 9.3-9.3 0-5.1-4.2-9.3-9.3-9.3z'/%3E%3Ccircle cx='11.2' cy='10.8' r='1.9'/%3E%3Cpath d='M10.7 2.6h1v8h-1zM7.1 10.4h3.4v.9H7.1z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-format-percentage{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M2.8 6.497c.096-.437.258-.825.486-1.161.228-.336.527-.603.9-.8s.834-.298 1.386-.298c.564 0 1.029.096 1.395.288.366.192.66.45.882.774.222.324.378.705.468 1.143.09.438.135.903.135 1.395 0 .468-.052.92-.153 1.36-.102.437-.27.822-.504 1.15-.234.33-.531.598-.89.802-.361.204-.805.306-1.333.306-.54 0-.996-.093-1.368-.28a2.379 2.379 0 0 1-.9-.764 3.265 3.265 0 0 1-.495-1.134 6.053 6.053 0 0 1-.153-1.386c0-.492.048-.956.144-1.395zm1.25 2.214c.031.306.1.588.208.846.108.258.26.474.459.648s.465.26.8.26c.35 0 .625-.083.829-.251s.363-.381.477-.639a2.96 2.96 0 0 0 .225-.855 7.667 7.667 0 0 0 .009-1.737 2.886 2.886 0 0 0-.207-.846 1.734 1.734 0 0 0-.46-.648c-.197-.174-.47-.261-.818-.261-.336 0-.606.087-.81.261s-.364.39-.477.648a2.93 2.93 0 0 0-.225.846 7.661 7.661 0 0 0-.01 1.728zm11.548-4.707L5.932 17.378H4.384l9.684-13.374h1.53zm-3.906 8.253c.096-.438.258-.825.486-1.161.228-.336.528-.603.9-.801s.834-.297 1.386-.297c.564 0 1.03.096 1.395.288.366.193.66.45.882.774.222.324.378.705.468 1.143s.135.903.135 1.395c0 .468-.051.922-.153 1.359a3.24 3.24 0 0 1-.504 1.152c-.234.33-.53.594-.891.792-.36.198-.804.297-1.332.297-.54 0-.996-.094-1.368-.28s-.672-.437-.9-.755a3.14 3.14 0 0 1-.495-1.125c-.102-.432-.153-.893-.153-1.386s.048-.957.144-1.395zm1.251 2.214c.03.306.099.589.207.846.108.258.261.474.46.648.197.174.464.26.8.26.348 0 .624-.082.828-.251.204-.168.363-.381.477-.639s.19-.543.225-.855c.036-.312.054-.606.054-.882 0-.264-.015-.55-.045-.855-.03-.306-.1-.588-.207-.846-.108-.258-.26-.474-.459-.648s-.471-.26-.82-.26c-.335 0-.606.086-.809.26-.204.174-.363.39-.477.648-.115.258-.189.54-.225.846a7.444 7.444 0 0 0-.009 1.728z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-format-percentage,.device-ios i.icon.icon-format-text{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.icon-format-text{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M5.523 6.432 8.871 15h-1.26l-.935-2.58H3.05L2.09 15H.929l3.336-8.568h1.26zm.792 5.028L4.888 7.464h-.025l-1.45 3.996h2.902zM15.219 6.432c.184 0 .383.002.594.005s.422.017.63.038c.208.02.403.048.582.09.18.039.334.1.462.18.28.167.519.4.714.694.196.297.294.66.294 1.093 0 .456-.11.85-.329 1.182-.22.332-.535.578-.943.738v.025c.529.11.932.351 1.213.718.279.37.42.817.42 1.345 0 .312-.057.616-.169.912a2.3 2.3 0 0 1-.498.786c-.22.228-.492.412-.816.552s-.697.21-1.121.21h-4.14V6.432h3.107zm.312 3.684c.649 0 1.114-.114 1.399-.343.283-.227.425-.569.425-1.025 0-.305-.048-.544-.144-.72a1.018 1.018 0 0 0-.396-.408 1.553 1.553 0 0 0-.582-.186 5.697 5.697 0 0 0-.702-.041h-2.279v2.723h2.28zm.576 3.924c.504 0 .899-.136 1.182-.408.284-.272.426-.648.426-1.128 0-.28-.052-.512-.156-.695a1.205 1.205 0 0 0-.413-.439 1.711 1.711 0 0 0-.595-.227 3.52 3.52 0 0 0-.696-.067h-2.603v2.964h2.855z'/%3E%3C/svg%3E")}.device-ios i.icon.sortdown{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='-238 240 22 22'%3E%3Cstyle%3E.st0{fill:var(--brand-cell)}%3C/style%3E%3Cpath d='m-230 256.4-.7-.7-2.3 2.4V242h-1v16.1l-2.3-2.4-.7.7 3.5 3.6zM-226 249.55l2.9-7.55h1.08l3.09 7.55h-1.14l-.88-2.29h-3.16l-.83 2.29H-226zm2.18-3.1h2.56l-.79-2.09c-.24-.64-.42-1.16-.54-1.57-.1.48-.23.97-.41 1.44l-.82 2.22zM-225.93 259v-.93l3.87-4.84c.28-.34.54-.64.78-.9h-4.21v-.89h5.41v.89l-4.24 5.24-.46.53h4.82v.9h-5.97z' class='st0'/%3E%3C/svg%3E")}.device-ios i.icon.sortdown,.device-ios i.icon.sortup{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-ios i.icon.sortup{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='-238 240 22 22'%3E%3Cstyle%3E.st0{fill:var(--brand-cell)}%3C/style%3E%3Cpath d='m-233.5 242-3.5 3.6.7.7 2.3-2.4V260h1v-16.1l2.3 2.4.7-.7zM-226.53 260l2.9-7.55h1.08l3.08 7.55h-1.14l-.88-2.29h-3.16l-.82 2.29h-1.06zm2.17-3.1h2.56l-.79-2.09c-.24-.64-.42-1.16-.54-1.57-.1.48-.23.97-.41 1.44l-.82 2.22zM-225.97 250.55v-.93l3.87-4.84c.28-.34.54-.64.78-.9h-4.21V243h5.41v.89l-4.24 5.24-.46.53h4.82v.89h-5.97z' class='st0'/%3E%3C/svg%3E")}.device-ios i.icon.icon-users{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M16 7c0 2.341-.584 4.135-1.386 5.312C13.807 13.497 12.834 14 12 14c-.834 0-1.807-.503-2.614-1.688C8.584 11.135 8 9.341 8 7c0-2.385 1.979-4 4-4s4 1.615 4 4Zm-.81 6.22C14.286 14.375 13.144 15 12 15s-2.287-.625-3.19-1.78c-1.405.564-2.597 1.129-3.54 1.702C3.553 15.967 3 16.832 3 17.5c0 .755.426 1.588 1.823 2.288C6.25 20.503 8.573 21 12 21c3.427 0 5.75-.497 7.177-1.212C20.574 19.088 21 18.255 21 17.5c0-.667-.553-1.533-2.27-2.578-.943-.573-2.135-1.138-3.54-1.702Zm.564-.85C16.514 11.028 17 9.21 17 7c0-3-2.491-5-5-5S7 4 7 7c0 2.21.486 4.028 1.246 5.37C4.39 13.94 2 15.579 2 17.5 2 19.985 5 22 12 22s10-2.015 10-4.5c0-1.921-2.39-3.56-6.246-5.13Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-app-settings,.device-ios i.icon.icon-users{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-app-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M7 14h9a4 4 0 0 1 0 8H7a4 4 0 0 1 0-8Zm9-1a5 5 0 0 1 0 10H7a5 5 0 0 1 0-10h9Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M16 20a2 2 0 1 1 0-4 2 2 0 0 1 0 4Zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6ZM16 3H7a4 4 0 1 0 0 8h9a4 4 0 0 0 0-8ZM7 2a5 5 0 0 0 0 10h9a5 5 0 0 0 0-10H7Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M7 9a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm0 1a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-table-settings{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M1 2h21v19H1V2Zm11 1h9v5h-9V3Zm0 6h9v5h-9V9Zm-1 5V9H2v5h9Zm-9 1v5h9v-5H2Zm10 0h9v5h-9v-5ZM11 3v5H2V3h9Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-menu-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath fill='%23A3A3A3' fill-rule='evenodd' d='M10 15a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.714a1.714 1.714 0 1 0 0-3.428 1.714 1.714 0 0 0 0 3.428ZM18 15a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.714a1.714 1.714 0 1 0 0-3.428 1.714 1.714 0 0 0 0 3.428ZM26 15a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.714a1.714 1.714 0 1 0 0-3.428 1.714 1.714 0 0 0 0 3.428Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-menu-comment,.device-ios i.icon.icon-resolve-comment{background-color:var(--text-tertiary);height:30px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:30px}.device-ios i.icon.icon-resolve-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath fill='%23A3A3A3' fill-rule='evenodd' d='M11.62 20.856a.5.5 0 0 0 .738-.021L22.516 9.058a.75.75 0 1 0-1.138-.98l-9.023 10.509a.5.5 0 0 1-.736.025l-3.513-3.575a.755.755 0 0 0-1.082 1.053l4.596 4.765Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-resolve-comment.check{background-color:var(--brand-cell);height:30px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath fill-rule='evenodd' d='M11.62 20.856a.5.5 0 0 0 .738-.021L22.516 9.058a.75.75 0 1 0-1.138-.98l-9.023 10.509a.5.5 0 0 1-.736.025l-3.513-3.575a.755.755 0 0 0-1.082 1.053l4.596 4.765Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:30px}.device-ios i.icon.icon-insert-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M20.154 9.007h-8.308c-1.02 0-1.846.828-1.846 1.848v4.314c0 1.021.827 1.849 1.846 1.849h1.987c.108 0 .212.038.295.107l4.115 3.267c.3.25.757.037.757-.355V17.48c0-.255.207-.462.462-.462h.692c1.02 0 1.846-.828 1.846-1.849v-4.314c0-1.02-.827-1.848-1.846-1.848ZM20 10.008a1 1 0 0 1 1 1.002v4.005a1 1 0 0 1-1 1.002h-1.997L18 18.9v.1l-3.5-2.983H12a1 1 0 0 1-1-1.002V11.01a1 1 0 0 1 1-1h8Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' d='M14.5 3h-10C3.19 3 2 4.215 2 5.503v6.532c0 1.287 1.19 1.978 2.5 1.978h1c.328 0 .5.179.5.5v3.005c0 .494.614.817 1 .5l4-3.032V13.5l-4 3v-3.488H4.5c-.71 0-1.5-.28-1.5-.977V5.503c0-.698.79-1.502 1.5-1.502h10c.71 0 1.5.804 1.5 1.502v2.503h1V5.503C17 4.215 15.81 3 14.5 3Z'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-chart,.device-ios i.icon.icon-insert-comment{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-add-chart{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M20 5h-4v15h4V5Zm-10 6h4v9h-4v-9Zm-6 3h4v6H4v-6Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-formula{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M5 5h14v4.118h-2.625V7.47H8.938L11.562 12l-2.624 4.53h7.437v-1.648H19V19H5v-1.235L8.5 12 5 6.235V5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-formula,.device-ios i.icon.icon-add-shape{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-add-shape{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cellipse cx='15.333' cy='14.4' fill='var(--brand-cell)' rx='5.667' ry='5.6'/%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M5 4.8a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h4.328a6.317 6.317 0 0 1-.47-2.4c0-3.534 2.899-6.4 6.475-6.4.56 0 1.102.07 1.62.202V5.8a1 1 0 0 0-1-1H5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-image{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='m5.792 16.667 3.083-3.5 2.25 2.333L14.21 12l4 4.667H5.792Zm13.667 1.859c.361-.316.542-.68.542-1.094V6.568c0-.413-.18-.778-.542-1.094A1.842 1.842 0 0 0 18.21 5H5.792c-.472 0-.89.158-1.25.474C4.18 5.79 4 6.154 4 6.568v10.864c0 .414.18.778.542 1.094.36.316.778.474 1.25.474h12.417c.472 0 .89-.158 1.25-.474ZM8.8 11.222c.884 0 1.6-.696 1.6-1.555 0-.86-.716-1.556-1.6-1.556-.883 0-1.6.697-1.6 1.556 0 .859.717 1.555 1.6 1.555Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios i.icon.icon-add-image,.device-ios i.icon.icon-add-other{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios i.icon.icon-add-other{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M7 18a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm6.5 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm5 1.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-chart{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M20 5h-4v15h4V5Zm-10 6h4v9h-4v-9Zm-6 3h4v6H4v-6Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-chart,.device-ios .tab-link-active i.icon.icon-add-formula{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios .tab-link-active i.icon.icon-add-formula{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M5 5h14v4.118h-2.625V7.47H8.938L11.562 12l-2.624 4.53h7.437v-1.648H19V19H5v-1.235L8.5 12 5 6.235V5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-shape{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cellipse cx='15.333' cy='14.4' fill='%23fff' rx='5.667' ry='5.6'/%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M5 4.8a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h4.328a6.317 6.317 0 0 1-.47-2.4c0-3.534 2.899-6.4 6.475-6.4.56 0 1.102.07 1.62.202V5.8a1 1 0 0 0-1-1H5Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-image,.device-ios .tab-link-active i.icon.icon-add-shape{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios .tab-link-active i.icon.icon-add-image{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='m5.792 16.667 3.083-3.5 2.25 2.333L14.21 12l4 4.667H5.792Zm13.667 1.859c.361-.316.542-.68.542-1.094V6.568c0-.413-.18-.778-.542-1.094A1.842 1.842 0 0 0 18.21 5H5.792c-.472 0-.89.158-1.25.474C4.18 5.79 4 6.154 4 6.568v10.864c0 .414.18.778.542 1.094.36.316.778.474 1.25.474h12.417c.472 0 .89-.158 1.25-.474ZM8.8 11.222c.884 0 1.6-.696 1.6-1.555 0-.86-.716-1.556-1.6-1.556-.883 0-1.6.697-1.6 1.556 0 .859.717 1.555 1.6 1.555Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-ios .tab-link-active i.icon.icon-add-other{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M7 18a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm6.5 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm5 1.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-ios .tab-link-active i.icon.icon-link{background:#fff}.device-android i.icon.icon-expand-up{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cpath d='M10.9 5.1 2 13.9 4.1 16l7-6.8 6.8 6.8 2.1-2.1-8.8-8.8-.1-.1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-expand-down,.device-android i.icon.icon-expand-up{background-color:var(--brand-cell);height:17px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:17px}.device-android i.icon.icon-expand-down{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cpath d='M10.9 16.9 2 8.1 4.1 6l7 6.8L17.9 6 20 8.1l-8.8 8.8-.1.1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-edit{background-color:var(--brand-cell);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M0 20h22v1H0v-1zM17.1 3.1 3.5 16.7 3 20l3.3-.5L19.9 5.9zM20.5 5.3 22 3.8s-.2-1.2-.9-1.9c-.7-.8-1.9-.9-1.9-.9l-1.5 1.5 2.8 2.8z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-edit-settings{background-color:var(--toolbar-icons);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cg fill='%23fff'%3E%3Cpath fill-rule='evenodd' d='M2.5 15 8 1h2l4.415 11.257-1.601 1.601L12.12 12H5.87l-1.12 3zM9 3.67 6.62 10h4.76z' clip-rule='evenodd'/%3E%3Cpath d='M10 19.5V22h2.5l7.372-7.372-2.5-2.5zm11.805-6.805c.26-.26.26-.68 0-.94l-1.56-1.56a.664.664 0 0 0-.94 0l-1.22 1.22 2.5 2.5z'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-reader{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M17 21H1V9h6V2h10v5h1V1H6.2L0 7.6V22h18v-3h-1v2zM6 2.8V8H1.1L6 2.8zM13 8c-5.1 0-9 5-9 5s4.1 5 9 5c5 0 9-5 9-5s-4-5-9-5zm-4.3 7.5C6.8 14.4 6.4 13 6.4 13s.4-1.5 2.4-2.6C8.3 11.2 8 12 8 13c0 .9.3 1.8.7 2.5zm4.3 1.2c-2.1 0-3.7-1.7-3.7-3.7 0-2.1 1.7-3.7 3.7-3.7 2.1 0 3.7 1.7 3.7 3.7 0 2.1-1.6 3.7-3.7 3.7zm4.3-1.2c.4-.7.7-1.6.7-2.5 0-1-.3-1.8-.7-2.6 2 1.1 3.4 2.6 3.4 2.6s-1.5 1.4-3.4 2.5zM13 11.7c-.7 0-1.3.6-1.3 1.3s.6 1.3 1.3 1.3 1.3-.6 1.3-1.3-.6-1.3-1.3-1.3z'/%3E%3C/svg%3E")}.device-android i.icon.icon-download,.device-android i.icon.icon-reader{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-download{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M12 0h-1v14l-3.6-3.7-.7.8 4.8 4.9 4.8-4.9-.7-.8L12 14V0Z'/%3E%3Cpath d='M14 5v1h5v14H4V6h5V5H3v16h17V5h-6Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-print{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath fill-rule='evenodd' d='M5 1h12v5h4v11h-4v4H5v-4H1V6h4V1Zm1 5h10V2H6v4ZM5 16v-3H2v3h3Zm-3-4h18V7H2v5Zm18 1h-3v3h3v-3Zm-4 0H6v7h10v-7Zm-2 3H8v-1h6v1Zm0 2H8v-1h6v1Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-feedback,.device-android i.icon.icon-print{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-feedback{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill-rule='evenodd' d='M21 6H3v12h18V6ZM2 5v14h20V5H2Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m2.666 6.372.668-.744 8.666 7.7 8.666-7.7.668.744-9.334 8.3-9.334-8.3Z' clip-rule='evenodd'/%3E%3Cpath fill-rule='evenodd' d='m9.376 11.33-6 7-.752-.66 6-7 .752.66ZM15.376 10.67l6 7-.752.66-6-7 .752-.66Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-versions{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='-1 7 22 22'%3E%3Cpath d='M19 12c0-1.1-.9-2-2-2 0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2-1.1 0-2 .9-2 2-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V14c0-1.1-.9-2-2-2zM5 9h10c.6 0 1 .4 1 1H4c0-.6.4-1 1-1zm-2 2h14c.6 0 1 .4 1 1H2c0-.6.4-1 1-1zm17 15c0 .6-.4 1-1 1H1c-.6 0-1-.4-1-1V14c0-.6.4-1 1-1h18c.6 0 1 .4 1 1v12z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-color,.device-android i.icon.icon-versions{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-text-color{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='m8.9 12 2.3-6.3 2.2 6.3H8.9zm-4.2 5.8h2l1.6-4.3h5.6l1.5 4.3h2.1L12.3 3.5h-2.2L4.7 17.8z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm3 4v1h14V7H4zm-3 5h21v-1H1v1zm3 3v1h14v-1H4zm-3 5h21v-1H1v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-center,.device-android i.icon.icon-text-align-jast{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-text-align-jast{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm0 5h21V7H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm14 4H1v1h14V7zM1 12h21v-1H1v1zm14 3H1v1h14v-1zM1 20h21v-1H1v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-left,.device-android i.icon.icon-text-align-right{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-text-align-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm7 5h14V7H8v1zm14 3H1v1h21v-1zM8 16h14v-1H8v1zm14 3H1v1h21v-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-just{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M1 3v1h21V3H1zm0 5h21V7H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1zm0 4h21v-1H1v1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-align-just,.device-android i.icon.icon-text-valign-top{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-text-valign-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M2 2h19v1H2zM2 4h19v1H2zM12 18h-1V7.83L8.65 9.8 8 8.94 11.5 6 15 9l-.65.8L12 7.83V18z' class='cls-1'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-valign-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M2 10h19v1H2zM2 12h19v1H2zM11 2h1v5.17l2.35-1.97.65.86L11.5 9 8 6l.65-.8L11 7.17V2zM12 21h-1v-5.17L8.65 17.8 8 16.94 11.5 14l3.5 3-.65.8L12 15.83V21z' class='cls-1'/%3E%3C/svg%3E")}.device-android i.icon.icon-text-valign-bottom,.device-android i.icon.icon-text-valign-middle{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-text-valign-bottom{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M2 18h19v1H2zM2 20h19v1H2zM11 4h1v11.17l2.35-1.97.65.86L11.5 17 8 14l.65-.8L11 15.17V4z' class='cls-1'/%3E%3C/svg%3E")}.device-android i.icon.icon-link{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' d='M17.024 7c1.377 0 2.55.498 3.52 1.495C21.515 9.461 22 10.63 22 12c0 1.37-.485 2.555-1.455 3.552-.97.965-2.144 1.448-3.522 1.448H13v-2h4c.845 0 1.588-.212 2.183-.804.626-.623.817-1.355.817-2.196 0-.841-.19-1.558-.817-2.15-.595-.623-1.314-.85-2.16-.85H13V7h4.023Zm-9.015 5.981V11.02h7.982v1.962H8.009Zm-3.24-3.13C4.176 10.441 4 11.158 4 12s.175 1.573.77 2.196C5.396 14.788 6.155 15 7 15h4.014v2H6.977c-1.378 0-2.551-.483-3.522-1.448C2.485 14.555 2 13.37 2 12c0-1.37.485-2.539 1.455-3.505C4.425 7.498 5.6 7 6.977 7h4.037v2H6.977c-.846 0-1.581.227-2.207.85Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-image-library,.device-android i.icon.icon-insimage{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M20 5.5H4a.5.5 0 0 0-.5.5v9.582l4.533-3.892a1.25 1.25 0 0 1 1.555-.06l3.985 2.928 2.389-1.88a1.25 1.25 0 0 1 1.631.073l2.907 2.745V6a.5.5 0 0 0-.5-.5Zm.5 12.03-.015.015-3.765-3.556-2.37 1.865a1.25 1.25 0 0 1-1.512.025L8.86 12.957 3.5 17.56V18a.5.5 0 0 0 .5.5h16a.5.5 0 0 0 .5-.5v-.47ZM4 4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H4Zm12.5 5.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm-3 1.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z' clip-rule='evenodd'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='transparent' d='M0 0h24v24H0V0Z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-sort{background-color:var(--brand-cell);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='m8 16.4-.7-.7L5 18.1V2H4v16.1l-2.3-2.4-.7.7L4.5 20zM19.3 4H8.7c-.6 0-.9.6-.6 1.1L12 11v4.7l2.8 1.5c.5.3 1.1-.1 1.1-.7V11l3.9-5.9c.4-.5.1-1.1-.5-1.1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-function,.device-android i.icon.icon-sort{height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-function{background-color:var(--text-normal);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='-238 240 24 22'%3E%3Cpath d='M-226.94 257.74c-.26-.54-.46-1.18-.61-1.92-.15-.73-.22-1.46-.22-2.18 0-1.35.26-2.7.78-4.04.52-1.35 1.22-2.49 2.1-3.43.88-.94 1.51-1.53 1.89-1.77.1-.06.14-.1.14-.13 0-.04-.07-.05-.21-.05-.31 0-.55.04-.71.12-.16.08-.53.4-1.1.96s-1.07 1.14-1.49 1.75c-.42.61-.78 1.25-1.06 1.94-.29.69-.51 1.42-.68 2.19-.17.77-.25 1.63-.25 2.57 0 .58.07 1.25.2 1.99s.33 1.41.58 2c.25.59.41.9.48.94.07.04.24.06.51.06.09 0 .13-.02.13-.05l-.03-.05c-.04-.05-.19-.35-.45-.9zm7.79-4.69c0-.09-.04-.14-.12-.14-.08 0-.18.08-.29.24-.28.41-.59.71-.92.91s-.61.3-.85.3c-.18 0-.36-.08-.52-.25-.17-.16-.25-.42-.25-.77 0-.69.23-1.66.68-2.93.45-1.27 1.01-1.9 1.68-1.9.15 0 .22.08.22.24 0 .06-.01.15-.04.27-.02.07-.02.12-.02.18 0 .13.05.23.14.32.09.08.2.13.34.13.19 0 .34-.06.45-.17.1-.11.16-.24.16-.38 0-.24-.1-.47-.29-.67a.919.919 0 0 0-.71-.31c-.55 0-1.09.29-1.62.87-.11.12-.18.18-.21.18l-.08-.03c-.06-.33-.17-.58-.34-.75-.17-.17-.4-.25-.69-.25-.37 0-.78.19-1.22.56-.44.37-.66.62-.66.74 0 .08.04.11.13.11.08 0 .2-.09.37-.27.45-.48.81-.72 1.09-.72.14 0 .27.08.38.25.11.17.16.39.16.67 0 .58-.27 1.53-.8 2.85-.54 1.32-1.1 1.98-1.68 1.98-.13 0-.23-.05-.3-.14a.41.41 0 0 1-.12-.27c0-.05.01-.12.03-.23.01-.07.02-.13.02-.18 0-.3-.14-.45-.42-.45-.18 0-.33.07-.46.2s-.2.3-.2.51c0 .26.13.48.4.66.27.18.56.26.86.26.4 0 .87-.23 1.41-.68.23-.19.39-.31.47-.36.04.05.11.17.21.37.26.48.66.71 1.21.71.57 0 1.11-.22 1.63-.67.51-.45.77-.78.77-.99zm2.95-5.83c-.13-.75-.33-1.41-.58-2-.25-.59-.41-.9-.48-.94-.07-.04-.24-.06-.51-.06-.09 0-.13.02-.13.05l.03.05c.05.06.2.36.46.91.26.54.46 1.18.61 1.91.15.73.22 1.46.22 2.17 0 1.36-.26 2.71-.78 4.05-.52 1.35-1.22 2.49-2.11 3.43-.89.94-1.51 1.53-1.89 1.77l-.14.13c0 .04.07.06.21.06.3 0 .5-.02.59-.05.1-.03.47-.35 1.11-.94.64-.59 1.19-1.24 1.65-1.94.46-.7.83-1.4 1.12-2.11.28-.7.49-1.44.62-2.21.14-.76.2-1.52.2-2.29 0-.58-.07-1.24-.2-1.99z'/%3E%3Cpath d='M-226.94 257.74c-.26-.54-.46-1.18-.61-1.92-.15-.73-.22-1.46-.22-2.18 0-1.35.26-2.7.78-4.04.52-1.35 1.22-2.49 2.1-3.43.88-.94 1.51-1.53 1.89-1.77.1-.06.14-.1.14-.13 0-.04-.07-.05-.21-.05-.31 0-.55.04-.71.12-.16.08-.53.4-1.1.96s-1.07 1.14-1.49 1.75c-.42.61-.78 1.25-1.06 1.94-.29.69-.51 1.42-.68 2.19-.17.77-.25 1.63-.25 2.57 0 .58.07 1.25.2 1.99s.33 1.41.58 2c.25.59.41.9.48.94.07.04.24.06.51.06.09 0 .13-.02.13-.05l-.03-.05c-.04-.05-.19-.35-.45-.9zm7.79-4.69c0-.09-.04-.14-.12-.14-.08 0-.18.08-.29.24-.28.41-.59.71-.92.91s-.61.3-.85.3c-.18 0-.36-.08-.52-.25-.17-.16-.25-.42-.25-.77 0-.69.23-1.66.68-2.93.45-1.27 1.01-1.9 1.68-1.9.15 0 .22.08.22.24 0 .06-.01.15-.04.27-.02.07-.02.12-.02.18 0 .13.05.23.14.32.09.08.2.13.34.13.19 0 .34-.06.45-.17.1-.11.16-.24.16-.38 0-.24-.1-.47-.29-.67a.919.919 0 0 0-.71-.31c-.55 0-1.09.29-1.62.87-.11.12-.18.18-.21.18l-.08-.03c-.06-.33-.17-.58-.34-.75-.17-.17-.4-.25-.69-.25-.37 0-.78.19-1.22.56-.44.37-.66.62-.66.74 0 .08.04.11.13.11.08 0 .2-.09.37-.27.45-.48.81-.72 1.09-.72.14 0 .27.08.38.25.11.17.16.39.16.67 0 .58-.27 1.53-.8 2.85-.54 1.32-1.1 1.98-1.68 1.98-.13 0-.23-.05-.3-.14a.41.41 0 0 1-.12-.27c0-.05.01-.12.03-.23.01-.07.02-.13.02-.18 0-.3-.14-.45-.42-.45-.18 0-.33.07-.46.2s-.2.3-.2.51c0 .26.13.48.4.66.27.18.56.26.86.26.4 0 .87-.23 1.41-.68.23-.19.39-.31.47-.36.04.05.11.17.21.37.26.48.66.71 1.21.71.57 0 1.11-.22 1.63-.67.51-.45.77-.78.77-.99zm2.95-5.83c-.13-.75-.33-1.41-.58-2-.25-.59-.41-.9-.48-.94-.07-.04-.24-.06-.51-.06-.09 0-.13.02-.13.05l.03.05c.05.06.2.36.46.91.26.54.46 1.18.61 1.91.15.73.22 1.46.22 2.17 0 1.36-.26 2.71-.78 4.05-.52 1.35-1.22 2.49-2.11 3.43-.89.94-1.51 1.53-1.89 1.77l-.14.13c0 .04.07.06.21.06.3 0 .5-.02.59-.05.1-.03.47-.35 1.11-.94.64-.59 1.19-1.24 1.65-1.94.46-.7.83-1.4 1.12-2.11.28-.7.49-1.44.62-2.21.14-.76.2-1.52.2-2.29 0-.58-.07-1.24-.2-1.99z' style='fill:none;stroke:%23000;stroke-width:.5;stroke-linecap:square;stroke-miterlimit:10'/%3E%3Cpath d='M-229.66 247.67c.02-.08.03-.18.04-.3.02-.12.03-.21.04-.27-.88 0-1.36-.01-1.44-.04.39-1.87.78-3.11 1.17-3.73.39-.62.83-.93 1.31-.93.18 0 .32.04.4.11.09.07.13.18.13.33 0 .1-.04.22-.11.35-.12.21-.17.39-.17.53 0 .2.06.36.18.5.12.13.26.2.42.2.2 0 .36-.09.48-.27.12-.18.18-.39.18-.62 0-.4-.13-.75-.39-1.06-.27-.32-.63-.47-1.1-.47-.79 0-1.49.43-2.11 1.28-.61.85-1.09 2.15-1.43 3.9-.68.01-1.21.04-1.62.08l-.1.54 1.6-.05c-.08.33-.26 1.17-.53 2.52-.68 3.42-1.27 5.89-1.77 7.41-.5 1.52-1.1 2.28-1.79 2.28-.19 0-.34-.06-.45-.19s-.17-.26-.17-.41c0-.1.04-.25.11-.45.06-.17.09-.31.09-.42a.75.75 0 0 0-.18-.5.563.563 0 0 0-.44-.21c-.2 0-.36.1-.5.3-.14.2-.2.44-.2.72 0 .43.15.8.45 1.11.3.31.68.47 1.14.47.77 0 1.45-.41 2.06-1.23.61-.82 1.11-2.1 1.51-3.85l1.68-7.57c.51-.03 1.01-.05 1.51-.06z' style='stroke:%23000;stroke-width:.5;stroke-linejoin:round;stroke-miterlimit:10'/%3E%3C/svg%3E")}.device-android i.icon.icon-app-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M7 14h9a4 4 0 0 1 0 8H7a4 4 0 0 1 0-8Zm9-1a5 5 0 0 1 0 10H7a5 5 0 0 1 0-10h9Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M16 20a2 2 0 1 1 0-4 2 2 0 0 1 0 4Zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6ZM16 3H7a4 4 0 1 0 0 8h9a4 4 0 0 0 0-8ZM7 2a5 5 0 0 0 0 10h9a5 5 0 0 0 0-10H7Z' clip-rule='evenodd'/%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M7 9a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm0 1a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-app-settings,.device-android i.icon.icon-table-settings{background-color:var(--brand-cell);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-table-settings{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M1 2h21v19H1V2Zm11 1h9v5h-9V3Zm0 6h9v5h-9V9Zm-1 5V9H2v5h9Zm-9 1v5h9v-5H2Zm10 0h9v5h-9v-5ZM11 3v5H2V3h9Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android i.icon.icon-move-backward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1h17v17H1z' opacity='.3'/%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-move-backward,.device-android i.icon.icon-move-forward{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-move-forward{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M10 10v17h17V10H10Zm16 16H11V11h15v15Z' opacity='.3'/%3E%3Cpath d='M1 1h17v17H1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-move-background{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M8 8h13v13H8z' opacity='.3'/%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-move-background,.device-android i.icon.icon-move-foreground{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-move-foreground{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M1 1v12h12V1H1Zm11 11H2V2h10v10ZM15 15v12h12V15H15Zm11 11H16V16h10v10Z' opacity='.3'/%3E%3Cpath d='M8 8h13v13H8z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-all{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-all,.device-android i.icon.icon-table-borders-none{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-none{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M26.9 0H0v27h27V0h-.1ZM13 26H1V14h12v12Zm0-13H1V1h12v12Zm13 13H14V14h12v12Zm0-13H14V1h12v12Z' opacity='.3'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-inner{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M26 13H14V1h-1v12H1v1h12v12h1V14h12v-1z'/%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-inner,.device-android i.icon.icon-table-borders-outer{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-outer{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-left{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h1v27H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-center,.device-android i.icon.icon-table-borders-left{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-center{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M13 0h1v27h-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-right{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M26 0h1v27h-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-right,.device-android i.icon.icon-table-borders-top{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-top{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 0h27v1H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-middle{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 13h27v1H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-bottom,.device-android i.icon.icon-table-borders-middle{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-bottom{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 28 28'%3E%3Cpath d='M27 0H0v27h27V0ZM1 26V1h25v25H1Z' opacity='.3'/%3E%3Cpath d='M0 26h27v1H0z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-dup{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='3 -3 28 28'%3E%3Cpath d='M3-3v27h27V-3H3zm1 1h25v25H4V-2z' opacity='.3'/%3E%3Cpath d='M30-3h-1L3 23v1h1L30-2z'/%3E%3C/svg%3E")}.device-android i.icon.icon-table-borders-ddown,.device-android i.icon.icon-table-borders-dup{background-color:var(--brand-cell);height:28px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:28px}.device-android i.icon.icon-table-borders-ddown{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='3 -3 28 28'%3E%3Cpath d='M3-3v27h27V-3H3zm1 1h25v25H4V-2z' opacity='.3'/%3E%3Cpath d='M30 23 4-3H3v1l26 26h1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-format-general{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M4.77 2.86 7.56 10H6.51l-.78-2.15H2.71L1.91 10H.94l2.78-7.14h1.05zm.66 4.19L4.24 3.72h-.02L3.01 7.05h2.42zM10.85 2.86c.153 0 .318.002.495.005.176.004.352.013.525.03s.335.042.485.075c.15.033.278.083.385.15.233.14.431.334.595.58.163.247.245.55.245.91 0 .38-.092.708-.275.985a1.624 1.624 0 0 1-.785.615v.02c.44.093.776.293 1.01.6s.35.68.35 1.12c0 .26-.047.513-.14.76a1.911 1.911 0 0 1-.415.655c-.183.19-.41.343-.68.46s-.582.175-.935.175H8.26V2.86h2.59zm.26 3.07c.54 0 .928-.095 1.165-.285s.355-.475.355-.855c0-.253-.04-.453-.12-.6a.853.853 0 0 0-.33-.34 1.3 1.3 0 0 0-.485-.155 4.712 4.712 0 0 0-.585-.035h-1.9v2.27h1.9zm.48 3.27c.42 0 .748-.113.985-.34.237-.227.355-.54.355-.94 0-.233-.043-.426-.13-.58a1.006 1.006 0 0 0-.345-.365c-.143-.09-.309-.153-.495-.19s-.38-.055-.58-.055H9.21V9.2h2.38zM19.425 3.87c-.363-.253-.795-.38-1.295-.38-.427 0-.792.08-1.095.24-.304.16-.554.375-.75.645-.197.27-.342.579-.435.925-.093.346-.14.707-.14 1.08 0 .407.047.792.14 1.155s.238.68.435.95c.196.27.448.485.755.645.307.16.673.24 1.1.24.313 0 .591-.052.835-.155A1.89 1.89 0 0 0 20.02 8.13c.1-.253.16-.526.18-.82h.95c-.093.9-.403 1.6-.93 2.1s-1.247.75-2.16.75c-.553 0-1.037-.095-1.45-.285a2.848 2.848 0 0 1-1.03-.785 3.37 3.37 0 0 1-.615-1.18c-.137-.453-.205-.94-.205-1.46s.073-1.008.22-1.465c.146-.457.362-.855.645-1.195s.637-.608 1.06-.805c.423-.196.908-.295 1.455-.295.373 0 .727.05 1.06.15.333.1.63.247.89.44.26.194.476.435.65.725.174.29.287.625.34 1.005h-.95c-.107-.507-.341-.886-.705-1.14zM3.71 19v-5.08H1.87v-.68c.24 0 .473-.018.7-.055s.431-.105.615-.205c.183-.1.338-.236.465-.41.126-.174.213-.393.26-.66h.65V19h-.85zM8.71 13.42c.093-.307.238-.571.435-.795.197-.223.442-.398.735-.525.293-.126.627-.19 1-.19.307 0 .595.045.865.135s.505.22.705.39.359.382.475.635c.117.253.175.547.175.88 0 .314-.048.59-.145.83a2.37 2.37 0 0 1-.385.645c-.16.19-.343.362-.55.515s-.42.3-.64.44c-.22.134-.44.265-.66.395-.22.13-.422.268-.605.415-.183.147-.34.305-.47.475-.13.17-.215.365-.255.585h3.64V19H8.4c.034-.42.108-.778.225-1.075.117-.297.265-.555.445-.775.18-.22.384-.413.61-.58.227-.167.464-.323.71-.47.3-.186.564-.358.79-.515s.415-.315.565-.475a1.7 1.7 0 0 0 .34-.52 1.7 1.7 0 0 0 .115-.65 1.224 1.224 0 0 0-.405-.93 1.27 1.27 0 0 0-.435-.26 1.555 1.555 0 0 0-.53-.09c-.247 0-.458.052-.635.155a1.33 1.33 0 0 0-.435.405c-.114.167-.195.355-.245.565s-.072.422-.065.635H8.6c-.02-.36.017-.693.11-1zM17.59 14.96h.28c.18 0 .351-.025.515-.075.163-.05.306-.123.43-.22.123-.097.222-.218.295-.365.073-.147.11-.313.11-.5 0-.38-.12-.665-.36-.855-.24-.19-.54-.285-.9-.285-.227 0-.425.042-.595.125s-.31.195-.42.335c-.11.14-.192.303-.245.49-.054.187-.08.384-.08.59h-.85c.013-.34.068-.65.165-.93.096-.28.235-.52.415-.72.18-.2.405-.357.675-.47s.581-.17.935-.17c.307 0 .591.038.855.115.263.077.491.192.685.345.193.153.345.35.455.59.11.24.165.523.165.85 0 .32-.094.604-.28.85s-.42.433-.7.56v.02c.433.093.755.297.965.61s.315.683.315 1.11c0 .353-.065.665-.195.935s-.305.495-.525.675c-.22.18-.479.315-.775.405-.297.09-.612.135-.945.135-.36 0-.687-.05-.98-.15a2.011 2.011 0 0 1-.75-.445c-.207-.197-.365-.438-.475-.725s-.162-.613-.155-.98h.85c.013.46.146.835.4 1.125s.623.435 1.11.435c.207 0 .403-.032.59-.095.186-.063.35-.153.49-.27.14-.116.252-.26.335-.43.083-.17.125-.362.125-.575a1.3 1.3 0 0 0-.44-1.015 1.295 1.295 0 0 0-.475-.26 2.009 2.009 0 0 0-.595-.085c-.18 0-.35.01-.51.03v-.72c.033.007.063.01.09.01z'/%3E%3C/svg%3E")}.device-android i.icon.icon-format-general,.device-android i.icon.icon-format-number{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-format-number{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M3.71 13.833v-5.08H1.87v-.68c.24 0 .473-.018.7-.055s.431-.105.615-.205c.183-.1.338-.236.465-.41.126-.174.213-.393.26-.66h.65v7.09h-.85zM8.5 12.723v1.01c0 .38-.086.706-.26.98-.174.273-.453.467-.84.58v-.5a.755.755 0 0 0 .285-.175.97.97 0 0 0 .28-.525 1 1 0 0 0 .015-.26h-.59v-1.11H8.5zM9.78 9.543c.013-.28.046-.553.1-.82.053-.266.13-.52.23-.76s.236-.45.41-.63a1.87 1.87 0 0 1 .655-.43c.263-.107.578-.16.945-.16s.681.053.945.16c.263.107.481.25.655.43s.31.39.41.63c.1.24.177.494.23.76s.086.54.1.82a17.25 17.25 0 0 1 0 1.62c-.014.28-.047.553-.1.82s-.13.518-.23.755a2.03 2.03 0 0 1-.41.625c-.174.18-.39.322-.65.425-.26.103-.577.155-.95.155-.367 0-.682-.052-.945-.155a1.814 1.814 0 0 1-.655-.425 2.02 2.02 0 0 1-.41-.625 3.877 3.877 0 0 1-.23-.755 5.444 5.444 0 0 1-.1-.82 17.266 17.266 0 0 1 0-1.62zm.905 1.695c.016.33.07.64.16.93.09.29.235.535.435.735.2.2.48.3.84.3s.64-.1.84-.3c.2-.2.345-.445.435-.735.09-.29.143-.6.16-.93a17.982 17.982 0 0 0 .02-1.47 4.826 4.826 0 0 0-.18-1.245c-.057-.2-.14-.375-.25-.525a1.3 1.3 0 0 0-.415-.365 1.234 1.234 0 0 0-.61-.14c-.24 0-.444.047-.61.14a1.3 1.3 0 0 0-.415.365c-.11.15-.194.325-.25.525a4.937 4.937 0 0 0-.18 1.245c-.003.21-.005.402-.005.575 0 .267.008.565.025.895zM15.34 9.543c.013-.28.046-.553.1-.82.053-.266.13-.52.23-.76s.236-.45.41-.63a1.87 1.87 0 0 1 .655-.43c.263-.107.578-.16.945-.16s.681.053.945.16c.263.107.481.25.655.43s.31.39.41.63c.1.24.177.494.23.76s.086.54.1.82a17.25 17.25 0 0 1 0 1.62c-.014.28-.047.553-.1.82s-.13.518-.23.755a2.03 2.03 0 0 1-.41.625c-.174.18-.39.322-.65.425-.26.103-.577.155-.95.155-.367 0-.682-.052-.945-.155a1.814 1.814 0 0 1-.655-.425 2.02 2.02 0 0 1-.41-.625 3.877 3.877 0 0 1-.23-.755 5.444 5.444 0 0 1-.1-.82 17.266 17.266 0 0 1 0-1.62zm.905 1.695c.016.33.07.64.16.93.09.29.235.535.435.735.2.2.48.3.84.3s.64-.1.84-.3c.2-.2.345-.445.435-.735.09-.29.143-.6.16-.93a17.982 17.982 0 0 0 .02-1.47 4.826 4.826 0 0 0-.18-1.245c-.057-.2-.14-.375-.25-.525a1.3 1.3 0 0 0-.415-.365 1.234 1.234 0 0 0-.61-.14c-.24 0-.444.047-.61.14a1.3 1.3 0 0 0-.415.365c-.11.15-.194.325-.25.525a4.937 4.937 0 0 0-.18 1.245c-.003.21-.005.402-.005.575 0 .267.008.565.025.895z'/%3E%3C/svg%3E")}.device-android i.icon.icon-format-integer{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M4.709 14.833v-5.08h-1.84v-.68c.24 0 .474-.018.7-.055s.432-.105.616-.205c.182-.1.338-.236.464-.41a1.57 1.57 0 0 0 .261-.66h.65v7.09h-.851zM8.11 9.253a2.12 2.12 0 0 1 .435-.795c.196-.223.441-.398.734-.525s.627-.19 1-.19c.307 0 .596.045.866.135s.504.22.705.39.358.382.474.635c.117.253.176.547.176.88 0 .314-.049.59-.146.83-.096.24-.225.455-.384.645-.16.19-.344.362-.55.515-.207.153-.42.3-.64.44-.22.134-.44.265-.66.395a5.17 5.17 0 0 0-.605.415c-.184.147-.34.305-.47.475-.13.17-.215.365-.256.585h3.64v.75H7.8a3.78 3.78 0 0 1 .225-1.075c.117-.297.265-.555.446-.775.18-.22.384-.413.61-.58a8.78 8.78 0 0 1 .71-.47c.3-.186.564-.358.79-.515s.414-.315.565-.475c.15-.16.263-.333.34-.52a1.71 1.71 0 0 0 .115-.65 1.239 1.239 0 0 0-.84-1.19 1.555 1.555 0 0 0-.53-.09c-.248 0-.459.052-.635.155a1.329 1.329 0 0 0-.435.405 1.689 1.689 0 0 0-.246.565c-.049.21-.071.422-.064.635H8c-.02-.36.016-.693.11-1zM15.39 10.793h.28c.18 0 .351-.025.515-.075a1.32 1.32 0 0 0 .43-.22 1.069 1.069 0 0 0 .405-.865c0-.38-.12-.665-.36-.855-.24-.19-.54-.285-.9-.285-.227 0-.426.042-.596.125s-.31.195-.42.335c-.11.14-.191.303-.244.49-.054.187-.08.384-.08.59h-.85c.013-.34.068-.65.164-.93s.236-.52.415-.72c.181-.2.406-.357.675-.47.27-.113.582-.17.936-.17.306 0 .592.038.855.115.263.077.49.192.685.345.192.153.345.35.454.59.111.24.166.523.166.85 0 .32-.094.604-.28.85s-.42.433-.7.56v.02c.433.094.755.297.964.61.211.314.316.683.316 1.11 0 .353-.066.665-.196.935s-.304.495-.524.675c-.22.18-.479.315-.775.405-.297.09-.612.135-.946.135-.36 0-.686-.05-.98-.15a2.003 2.003 0 0 1-.75-.445 1.95 1.95 0 0 1-.475-.725 2.596 2.596 0 0 1-.154-.98h.85c.013.46.146.835.4 1.125.253.29.623.435 1.11.435.206 0 .404-.032.59-.095.187-.063.35-.153.49-.27.14-.116.251-.26.335-.43.082-.17.125-.362.125-.575 0-.22-.04-.415-.12-.585s-.187-.313-.321-.43c-.133-.116-.291-.203-.475-.26s-.38-.085-.594-.085c-.181 0-.351.01-.51.03v-.72c.033.007.063.01.09.01z'/%3E%3C/svg%3E")}.device-android i.icon.icon-format-integer,.device-android i.icon.icon-format-scientific{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-format-scientific{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M4.98 15.833v-5.588H2.957v-.748c.264 0 .52-.02.77-.06.249-.04.474-.116.675-.226.202-.11.373-.26.512-.451.14-.19.234-.432.287-.726h.715v7.799H4.98zM8.6 11.114a5.95 5.95 0 0 1 .11-.902c.059-.293.143-.572.253-.836.11-.264.26-.495.451-.693.19-.198.43-.355.72-.473.29-.117.637-.176 1.04-.176s.75.059 1.039.176a2.051 2.051 0 0 1 1.172 1.166c.11.264.194.543.253.836.058.293.094.594.11.902.014.308.022.605.022.89 0 .287-.008.584-.022.892a6.193 6.193 0 0 1-.11.902c-.059.293-.144.57-.253.83s-.26.49-.451.688c-.19.198-.43.354-.715.468-.286.113-.635.17-1.045.17-.403 0-.75-.057-1.04-.17a1.98 1.98 0 0 1-.72-.468 2.21 2.21 0 0 1-.451-.688 4.256 4.256 0 0 1-.253-.83c-.06-.293-.096-.594-.11-.902s-.022-.605-.022-.891c0-.286.007-.583.022-.891zm.996 1.865c.017.362.076.704.175 1.022.1.32.258.589.479.81.22.219.527.33.924.33s.704-.111.924-.33c.22-.221.379-.49.478-.81s.158-.66.176-1.022c.019-.363.027-.691.027-.985 0-.19-.002-.402-.005-.633a5.52 5.52 0 0 0-.198-1.369c-.062-.22-.154-.412-.275-.577s-.274-.3-.456-.402c-.184-.103-.408-.154-.671-.154s-.488.051-.671.154a1.401 1.401 0 0 0-.456.402 1.794 1.794 0 0 0-.276.577 5.343 5.343 0 0 0-.198 1.37c-.004.23-.005.441-.005.632 0 .294.008.622.028.985zM14.33 5.11c.055-.184.143-.343.26-.477.119-.134.265-.239.441-.315.176-.076.376-.114.6-.114.184 0 .357.027.52.081.162.054.302.132.423.234.12.102.215.229.284.38.07.153.105.329.105.53 0 .187-.028.353-.086.497a1.416 1.416 0 0 1-.231.387c-.097.114-.207.217-.33.31s-.253.18-.384.263a42.4 42.4 0 0 1-.397.237 3.293 3.293 0 0 0-.363.25c-.11.087-.203.182-.281.284a.807.807 0 0 0-.154.35h2.185v.451h-2.778c.02-.252.065-.467.134-.645.07-.178.16-.333.267-.465.108-.132.23-.248.367-.348.135-.1.277-.194.426-.282.18-.112.338-.215.474-.309.135-.094.249-.189.338-.285s.159-.2.204-.312.07-.242.07-.39a.736.736 0 0 0-.243-.558.771.771 0 0 0-.261-.156.936.936 0 0 0-.318-.054.739.739 0 0 0-.643.336c-.067.1-.117.213-.146.34s-.043.252-.04.38h-.51c-.011-.216.01-.416.067-.6z'/%3E%3C/svg%3E")}.device-android i.icon.icon-format-accounting{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M15.5 21h-10C4.1 21 3 19.9 3 18.5v-14C3 3.1 4.1 2 5.5 2h10C16.9 2 18 3.1 18 4.5v14c0 1.4-1.1 2.5-2.5 2.5zM5.5 3C4.7 3 4 3.7 4 4.5v14c0 .8.7 1.5 1.5 1.5h10c.8 0 1.5-.7 1.5-1.5v-14c0-.8-.7-1.5-1.5-1.5h-10z'/%3E%3Cpath d='M14.5 9h-8C5.7 9 5 8.3 5 7.5v-2C5 4.7 5.7 4 6.5 4h8c.8 0 1.5.7 1.5 1.5v2c0 .8-.7 1.5-1.5 1.5zm-8-4c-.3 0-.5.2-.5.5v2c0 .3.2.5.5.5h8c.3 0 .5-.2.5-.5v-2c0-.3-.2-.5-.5-.5h-8zM5 10h3v2H5zM9 10h3v2H9zM13 10h3v2h-3zM13 13h3v2h-3zM9 13h3v2H9zM5 13h3v2H5zM5 16h3v2H5zM9 16h3v2H9zM13 16h3v2h-3z'/%3E%3C/svg%3E")}.device-android i.icon.icon-format-accounting,.device-android i.icon.icon-format-currency{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-format-currency{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M0 4v14h22V4H0zm21 13H1V5h20v12z'/%3E%3Cpath d='M11 16c-2.2 0-4-2.2-4-5s1.8-5 4-5 4 2.2 4 5-1.8 5-4 5zm0-9c-1.7 0-3 1.8-3 4s1.3 4 3 4 3-1.8 3-4-1.3-4-3-4z'/%3E%3C/svg%3E")}.device-android i.icon.icon-format-date{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M20 20H2V7h18v13zM3 19h16V8H3v11zM8 6H5V2h3v4zM6 5h1V3H6v2zM17 6h-3V2h3v4zm-2-1h1V3h-1v2z'/%3E%3Cpath d='M8.8 15.8v-4.1H7.4v-.5H8c.2 0 .3-.1.5-.2.1-.1.3-.2.4-.3 0-.1.1-.3.1-.5h.5v5.7h-.7zM14.4 11.8c-.3.4-.5.8-.7 1.2-.2.4-.4.9-.5 1.4-.1.5-.2.9-.2 1.4h-.8c0-.5.1-.9.2-1.4.1-.5.3-.9.5-1.3s.4-.8.7-1.2c.3-.4.5-.7.8-1h-3v-.6h3.7v.6c-.2.2-.5.6-.7.9zM2 3h1v4H2zM3 3h2v1H3zM8 3h6v1H8zM17 3h3v1h-3zM19 4h1v3h-1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-format-date,.device-android i.icon.icon-format-time{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-format-time{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M11.2 21.1C5.5 21.1.9 16.5.9 10.8S5.5.5 11.2.5s10.3 4.6 10.3 10.3-4.6 10.3-10.3 10.3zm0-19.6c-5.1 0-9.3 4.2-9.3 9.3 0 5.1 4.2 9.3 9.3 9.3 5.1 0 9.3-4.2 9.3-9.3 0-5.1-4.2-9.3-9.3-9.3z'/%3E%3Ccircle cx='11.2' cy='10.8' r='1.9'/%3E%3Cpath d='M10.7 2.6h1v8h-1zM7.1 10.4h3.4v.9H7.1z'/%3E%3C/svg%3E")}.device-android i.icon.icon-format-percentage{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M2.8 6.497c.096-.437.258-.825.486-1.161.228-.336.527-.603.9-.8s.834-.298 1.386-.298c.564 0 1.029.096 1.395.288.366.192.66.45.882.774.222.324.378.705.468 1.143.09.438.135.903.135 1.395 0 .468-.052.92-.153 1.36-.102.437-.27.822-.504 1.15-.234.33-.531.598-.89.802-.361.204-.805.306-1.333.306-.54 0-.996-.093-1.368-.28a2.379 2.379 0 0 1-.9-.764 3.265 3.265 0 0 1-.495-1.134 6.053 6.053 0 0 1-.153-1.386c0-.492.048-.956.144-1.395zm1.25 2.214c.031.306.1.588.208.846.108.258.26.474.459.648s.465.26.8.26c.35 0 .625-.083.829-.251s.363-.381.477-.639a2.96 2.96 0 0 0 .225-.855 7.667 7.667 0 0 0 .009-1.737 2.886 2.886 0 0 0-.207-.846 1.734 1.734 0 0 0-.46-.648c-.197-.174-.47-.261-.818-.261-.336 0-.606.087-.81.261s-.364.39-.477.648a2.93 2.93 0 0 0-.225.846 7.661 7.661 0 0 0-.01 1.728zm11.548-4.707L5.932 17.378H4.384l9.684-13.374h1.53zm-3.906 8.253c.096-.438.258-.825.486-1.161.228-.336.528-.603.9-.801s.834-.297 1.386-.297c.564 0 1.03.096 1.395.288.366.193.66.45.882.774.222.324.378.705.468 1.143s.135.903.135 1.395c0 .468-.051.922-.153 1.359a3.24 3.24 0 0 1-.504 1.152c-.234.33-.53.594-.891.792-.36.198-.804.297-1.332.297-.54 0-.996-.094-1.368-.28s-.672-.437-.9-.755a3.14 3.14 0 0 1-.495-1.125c-.102-.432-.153-.893-.153-1.386s.048-.957.144-1.395zm1.251 2.214c.03.306.099.589.207.846.108.258.261.474.46.648.197.174.464.26.8.26.348 0 .624-.082.828-.251.204-.168.363-.381.477-.639s.19-.543.225-.855c.036-.312.054-.606.054-.882 0-.264-.015-.55-.045-.855-.03-.306-.1-.588-.207-.846-.108-.258-.26-.474-.459-.648s-.471-.26-.82-.26c-.335 0-.606.086-.809.26-.204.174-.363.39-.477.648-.115.258-.189.54-.225.846a7.444 7.444 0 0 0-.009 1.728z'/%3E%3C/svg%3E")}.device-android i.icon.icon-format-percentage,.device-android i.icon.icon-format-text{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-format-text{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M5.523 6.432 8.871 15h-1.26l-.935-2.58H3.05L2.09 15H.929l3.336-8.568h1.26zm.792 5.028L4.888 7.464h-.025l-1.45 3.996h2.902zM15.219 6.432c.184 0 .383.002.594.005s.422.017.63.038c.208.02.403.048.582.09.18.039.334.1.462.18.28.167.519.4.714.694.196.297.294.66.294 1.093 0 .456-.11.85-.329 1.182-.22.332-.535.578-.943.738v.025c.529.11.932.351 1.213.718.279.37.42.817.42 1.345 0 .312-.057.616-.169.912a2.3 2.3 0 0 1-.498.786c-.22.228-.492.412-.816.552s-.697.21-1.121.21h-4.14V6.432h3.107zm.312 3.684c.649 0 1.114-.114 1.399-.343.283-.227.425-.569.425-1.025 0-.305-.048-.544-.144-.72a1.018 1.018 0 0 0-.396-.408 1.553 1.553 0 0 0-.582-.186 5.697 5.697 0 0 0-.702-.041h-2.279v2.723h2.28zm.576 3.924c.504 0 .899-.136 1.182-.408.284-.272.426-.648.426-1.128 0-.28-.052-.512-.156-.695a1.205 1.205 0 0 0-.413-.439 1.711 1.711 0 0 0-.595-.227 3.52 3.52 0 0 0-.696-.067h-2.603v2.964h2.855z'/%3E%3C/svg%3E")}.device-android i.icon.sortdown{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='-238 240 22 22'%3E%3Cstyle%3E.st0{fill:var(--brand-cell)}%3C/style%3E%3Cpath d='m-230 256.4-.7-.7-2.3 2.4V242h-1v16.1l-2.3-2.4-.7.7 3.5 3.6zM-226 249.55l2.9-7.55h1.08l3.09 7.55h-1.14l-.88-2.29h-3.16l-.83 2.29H-226zm2.18-3.1h2.56l-.79-2.09c-.24-.64-.42-1.16-.54-1.57-.1.48-.23.97-.41 1.44l-.82 2.22zM-225.93 259v-.93l3.87-4.84c.28-.34.54-.64.78-.9h-4.21v-.89h5.41v.89l-4.24 5.24-.46.53h4.82v.9h-5.97z' class='st0'/%3E%3C/svg%3E")}.device-android i.icon.sortdown,.device-android i.icon.sortup{background-color:var(--brand-cell);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.sortup{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='-238 240 22 22'%3E%3Cstyle%3E.st0{fill:var(--brand-cell)}%3C/style%3E%3Cpath d='m-233.5 242-3.5 3.6.7.7 2.3-2.4V260h1v-16.1l2.3 2.4.7-.7zM-226.53 260l2.9-7.55h1.08l3.08 7.55h-1.14l-.88-2.29h-3.16l-.82 2.29h-1.06zm2.17-3.1h2.56l-.79-2.09c-.24-.64-.42-1.16-.54-1.57-.1.48-.23.97-.41 1.44l-.82 2.22zM-225.97 250.55v-.93l3.87-4.84c.28-.34.54-.64.78-.9h-4.21V243h5.41v.89l-4.24 5.24-.46.53h4.82v.89h-5.97z' class='st0'/%3E%3C/svg%3E")}.device-android i.icon.icon-users{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' fill-rule='evenodd' d='M15.5 7c0 2.262-.564 3.952-1.299 5.03-.743 1.091-1.578 1.47-2.201 1.47s-1.458-.379-2.201-1.47C9.064 10.953 8.5 9.263 8.5 7c0-2.077 1.722-3.5 3.5-3.5s3.5 1.423 3.5 3.5Zm-.654 6.622C14.006 14.519 13.004 15 12 15s-2.006-.48-2.846-1.378c-1.457.578-2.676 1.15-3.625 1.728C3.83 16.384 3.5 17.12 3.5 17.5c0 .51.264 1.198 1.547 1.84 1.328.666 3.562 1.16 6.953 1.16 3.39 0 5.625-.494 6.953-1.16 1.283-.642 1.547-1.33 1.547-1.84 0-.38-.329-1.116-2.03-2.15-.948-.577-2.167-1.15-3.624-1.728Zm.908-1.252C16.514 11.028 17 9.21 17 7c0-3-2.491-5-5-5S7 4 7 7c0 2.21.486 4.028 1.246 5.37C4.39 13.94 2 15.579 2 17.5 2 19.985 5 22 12 22s10-2.015 10-4.5c0-1.921-2.39-3.56-6.246-5.13Z' clip-rule='evenodd'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-menu-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--text-tertiary)' fill-opacity='.6' d='M16.605 16.585c.403-.406.868-.608 1.395-.608s.992.202 1.395.608c.403.405.605.873.605 1.403s-.202.998-.605 1.404c-.403.405-.868.608-1.395.608s-.992-.203-1.395-.608c-.403-.406-.605-.873-.605-1.404 0-.53.202-.998.605-1.403Zm0-5.988c.403-.406.868-.609 1.395-.609s.992.203 1.395.609c.403.405.605.873.605 1.403s-.202.998-.605 1.403c-.403.406-.868.609-1.395.609s-.992-.203-1.395-.609C16.202 12.999 16 12.53 16 12s.202-.998.605-1.403Zm2.79-3.182c-.403.406-.868.608-1.395.608s-.992-.202-1.395-.608C16.202 7.01 16 6.542 16 6.012s.202-.998.605-1.404C17.008 4.203 17.473 4 18 4s.992.203 1.395.608c.403.406.605.873.605 1.404 0 .53-.202.998-.605 1.403Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-menu-comment,.device-android i.icon.icon-resolve-comment{background-color:var(--text-tertiary);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-resolve-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--text-tertiary)' fill-opacity='.6' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E")}.device-android i.icon.icon-done-comment,.device-android i.icon.icon-resolve-comment.check{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-insert-comment{background-color:var(--brand-cell);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--brand-cell)' d='M19.5 3h-15C3.19 3 2 4.215 2 5.503v9.532c0 1.287 1.19 1.978 2.5 1.978h1c.328 0 .5.179.5.5V21l6-4h8a2 2 0 0 0 2-2V8h-1.5v6.5a1 1 0 0 1-1 1h-8l-4 2.5v-2.5h-3a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1h15a1 1 0 0 1 1 1V8H22V5.503C22 4.215 20.81 3 19.5 3Z'/%3E%3Cpath fill='var(--brand-cell)' d='M6 7.5h12V9H6V7.5ZM6 11h12v1.5H6V11Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android i.icon.icon-done-comment-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23FFF' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E");height:24px;width:24px}.device-android i.icon.icon-plus{background-color:var(--fill-white);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--fill-white)' viewBox='0 0 22 22'%3E%3Cpath d='M21 12h-9v9h-2v-9H1v-2h9V1h2v9h9v2z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-add-custom-format{background-color:var(--brand-cell);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--brand-cell)' viewBox='0 0 22 22'%3E%3Cpath d='M21 12h-9v9h-2v-9H1v-2h9V1h2v9h9v2z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android i.icon.icon-check{background-color:var(--fill-white);height:24px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--fill-white)' d='M9 16.172 19.594 5.578 21 6.984l-12 12-5.578-5.578L4.828 12 9 16.172Z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .tabbar .link.tab-link i.icon.icon-link{background:#fff}.device-android .navbar i.icon.icon-logo{height:14px;width:100px}.device-android .navbar i.icon.icon-undo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M20 17v-2c0-1.7-1.3-3-3-3H3.7l3.4 3.4-1.4 1.4-5.2-5.2L0 11l.5-.6 5.2-5.2 1.4 1.4L3.7 10H17c2.8 0 5 2.2 5 5v2h-2z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-redo,.device-android .navbar i.icon.icon-undo{background-color:var(--toolbar-icons);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-redo{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M0 17v-2c0-2.8 2.2-5 5-5h13.3l-3.4-3.4 1.4-1.4 5.2 5.2.5.6-.5.6-5.2 5.2-1.4-1.4 3.4-3.4H5c-1.7 0-3 1.3-3 3v2H0z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-burger{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='-8 1 22 22'%3E%3Cpath d='M-6 6v2h18V6H-6zm0 7h18v-2H-6v2zm0 5h18v-2H-6v2z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-burger,.device-android .navbar i.icon.icon-plus{background-color:var(--toolbar-icons);height:22px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-plus{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M21 12h-9v9h-2v-9H1v-2h9V1h2v9h9v2z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-settings{background-color:var(--toolbar-icons);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M12.1 2H9.9c-.3 0-.5.2-.6.5l-.5 2.4c0 .2-.2.3-.3.3s-.1 0-.2-.1L6.2 3.8c-.1-.1-.2-.1-.4-.1-.1 0-.3 0-.4.1L3.8 5.4c-.1.2-.2.5 0 .8l1.3 2.1c.1.2.1.4-.2.5l-2.4.5c-.3.1-.5.3-.5.6v2.2c0 .3.2.5.5.6l2.4.5c.3.1.4.3.2.5l-1.3 2.1c-.2.2-.1.6.1.8l1.6 1.6c.1.1.3.2.4.2s.2 0 .3-.1L8.3 17c.1-.1.1-.1.2-.1s.3.1.3.3l.5 2.3c.1.3.3.5.6.5h2.2c.3 0 .5-.2.6-.5l.5-2.4c0-.2.1-.3.3-.3.1 0 .1 0 .2.1l2.1 1.3c.1.1.2.1.3.1.2 0 .3-.1.4-.2l1.6-1.6c.2-.2.2-.5.1-.8l-1.3-2.1c-.2-.2-.1-.5.2-.5l2.4-.5c.3-.1.5-.3.5-.6V9.8c0-.3-.2-.5-.5-.6l-2.4-.5c-.3-.1-.4-.3-.2-.5l1.3-2.1c.2-.2.1-.6-.1-.8l-1.6-1.6c-.1-.1-.3-.2-.4-.2s-.2 0-.3.1l-2.1 1.3c-.1.1-.1.1-.2.1s-.3-.1-.3-.3l-.5-2.2c-.1-.3-.3-.5-.6-.5zM11 14.5c-1.9 0-3.5-1.6-3.5-3.5S9.1 7.5 11 7.5s3.5 1.6 3.5 3.5-1.6 3.5-3.5 3.5z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-prev{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M5.1 10.9 13.9 2 16 4.1l-6.8 7 6.8 6.8-2.1 2.1-8.8-8.8-.1-.1z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-next,.device-android .navbar i.icon.icon-prev{background-color:var(--toolbar-icons);height:20px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:20px}.device-android .navbar i.icon.icon-next{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M16.9 10.9 8.1 2 6 4.1l6.8 7L6 17.9 8.1 20l8.8-8.8.1-.1z'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-expand-down{background-color:var(--toolbar-icons);height:22px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='var(--toolbar-icons)' viewBox='0 0 22 22'%3E%3Cpath d='M10.9 16.9 2 8.1 4.1 6l7 6.8L17.9 6 20 8.1l-8.8 8.8-.1.1z'/%3E%3C/svg%3E");-webkit-mask-repeat:round;-webkit-mask-size:contain;width:22px}.device-android .navbar i.icon.icon-add-chart{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='M22 3h-5v18h5V3ZM9.5 9h5v12h-5V9ZM2 13h5v8H2v-8Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-add-chart,.device-android .navbar i.icon.icon-add-formula{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-add-formula{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='M4 4h16v5h-3V7H8.5l3 5.5-3 5.5H17v-2h3v5H4v-1.5l4-7-4-7V4Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-add-shape{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Ccircle cx='16' cy='15' r='7' fill='var(--toolbar-icons)'/%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='M3 3a1 1 0 0 0-1 1v13a1 1 0 0 0 1 1h5.582A8 8 0 0 1 18 7.252V4a1 1 0 0 0-1-1H3Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-add-image,.device-android .navbar i.icon.icon-add-shape{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-add-image{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg clip-path='url(%23a)'%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='m4.24 18 3.854-4.5 2.812 3L14.76 12l5 6H4.24Zm17.083 2.39c.451-.406.677-.874.677-1.406V5.016c0-.532-.226-1-.677-1.407A2.266 2.266 0 0 0 19.76 3H4.24c-.59 0-1.112.203-1.563.61C2.226 4.015 2 4.483 2 5.015v13.968c0 .532.226 1 .677 1.407.451.406.972.609 1.563.609h15.52c.59 0 1.111-.203 1.563-.61ZM8 11a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z' clip-rule='evenodd'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='a'%3E%3Cpath fill='transparent' d='M0 0h24v24H0V0Z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-add-other{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' fill-rule='evenodd' d='M7 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm8 0a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm5 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z' clip-rule='evenodd'/%3E%3C/svg%3E")}.device-android .navbar i.icon.icon-add-other,.device-android .navbar i.icon.icon-close-comment{background-color:var(--toolbar-icons);height:24px;-webkit-mask-repeat:round;-webkit-mask-size:contain;width:24px}.device-android .navbar i.icon.icon-close-comment{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='var(--toolbar-icons)' d='M18.984 6.422 13.406 12l5.578 5.578-1.406 1.406L12 13.406l-5.578 5.578-1.406-1.406L10.594 12 5.016 6.422l1.406-1.406L12 10.594l5.578-5.578 1.406 1.406Z'/%3E%3C/svg%3E")}.chart-types .thumb.bar-normal{background-image:url(../resources/img/charts/chart-03.png)}.chart-types .thumb.bar-stacked{background-image:url(../resources/img/charts/chart-02.png)}.chart-types .thumb.bar-pstacked{background-image:url(../resources/img/charts/chart-01.png)}.chart-types .thumb.line-normal{background-image:url(../resources/img/charts/chart-06.png)}.chart-types .thumb.line-stacked{background-image:url(../resources/img/charts/chart-05.png)}.chart-types .thumb.line-pstacked{background-image:url(../resources/img/charts/chart-04.png)}.chart-types .thumb.hbar-normal{background-image:url(../resources/img/charts/chart-09.png)}.chart-types .thumb.hbar-stacked{background-image:url(../resources/img/charts/chart-08.png)}.chart-types .thumb.hbar-pstacked{background-image:url(../resources/img/charts/chart-07.png)}.chart-types .thumb.area-normal{background-image:url(../resources/img/charts/chart-12.png)}.chart-types .thumb.area-stacked{background-image:url(../resources/img/charts/chart-11.png)}.chart-types .thumb.area-pstacked{background-image:url(../resources/img/charts/chart-10.png)}.chart-types .thumb.pie{background-image:url(../resources/img/charts/chart-13.png)}.chart-types .thumb.doughnut{background-image:url(../resources/img/charts/chart-14.png)}.chart-types .thumb.pie3d{background-image:url(../resources/img/charts/chart-22.png)}.chart-types .thumb.scatter{background-image:url(../resources/img/charts/chart-15.png)}.chart-types .thumb.stock{background-image:url(../resources/img/charts/chart-16.png)}.chart-types .thumb.line3d{background-image:url(../resources/img/charts/chart-21.png)}.chart-types .thumb.bar3dnormal{background-image:url(../resources/img/charts/chart-17.png)}.chart-types .thumb.bar3dstack{background-image:url(../resources/img/charts/chart-18.png)}.chart-types .thumb.bar3dpstack{background-image:url(../resources/img/charts/chart-19.png)}.chart-types .thumb.hbar3dnormal{background-image:url(../resources/img/charts/chart-25.png)}.chart-types .thumb.hbar3dstack{background-image:url(../resources/img/charts/chart-24.png)}.chart-types .thumb.hbar3dpstack{background-image:url(../resources/img/charts/chart-23.png)}.chart-types .thumb.bar3dpsnormal{background-image:url(../resources/img/charts/chart-20.png)}i.icon.icon-format-xlsx{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%2340865C' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H4Zm0 5h16v12H4V6Zm7.5 1H5v4h6.5V7Zm0 5H5v5h6.5v-5Zm1 0H19v5h-6.5v-5ZM19 7h-6.5v4H19V7Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-xltx{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23A8A8A8' fill-rule='evenodd' d='M18 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm.746 10v-5.27h2.506v-1.234h-6.504v1.235h2.479V22h1.519Z' clip-rule='evenodd'/%3E%3Cpath fill='%2340865C' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h9.101A6.979 6.979 0 0 1 11 18H4V6h16v5.29a6.997 6.997 0 0 1 3 1.811V4a3 3 0 0 0-3-3H4Zm14 10h1V7h-6.5v4H18Zm-6.5 4.397A6.954 6.954 0 0 0 11.07 17H5v-5h6.5v3.397ZM14.392 12a7.036 7.036 0 0 0-1.892 1.67V12h1.892ZM5 7h6.5v4H5V7Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-ods{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23237453' fill-rule='evenodd' d='M1 4a3 3 0 0 1 3-3h16a3 3 0 0 1 3 3v16a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3V4Zm18.952 3.749c-.026-.02-.053-.037-.08-.054l-.02-.013a4.236 4.236 0 0 0-1.763-.651c-1.114-.14-2.179.2-3.078.89a4.32 4.32 0 0 0-2.066-.86c-1.035-.13-2.028.155-2.885.751l-.01.008-.015.01a.135.135 0 0 0-.035.093c0 .066.04.12.09.12l.013-.003.007-.002a3.93 3.93 0 0 1 1.431-.084c1.376.173 2.575.737 3.416 2.002.044.06.083.057.128-.003 1.058-1.627 2.68-2.27 4.424-2.051.097.012.193.028.289.047l.029.006c.029.006.062.013.084.016.058.009.089-.053.089-.119 0-.044-.015-.082-.048-.103Zm-1.026 5.026.01.006c.038.024.064.075.064.136 0 .083-.051.151-.114.151l-.164-.016a5.975 5.975 0 0 0-.547-.026c-2.574 0-4.885 1.254-6.288 3.796l-.04.074-.026.048c-.021.035-.053.056-.088.056a.097.097 0 0 1-.075-.037l-.002-.004-.007-.008c-1.38-1.722-3.215-2.367-5.272-2.367a5.987 5.987 0 0 0-2.24.44.086.086 0 0 1-.023.003c-.063 0-.114-.068-.114-.151a.17.17 0 0 1 .044-.12l.004-.003a.155.155 0 0 1 .009-.008C5.287 13.644 6.767 13 8.363 13c1.122 0 2.188.319 3.15.89C12.773 12.701 14.315 12 15.98 12c1.042 0 2.035.276 2.943.773l.003.002Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-ots{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23A8A8A8' fill-rule='evenodd' d='M18 12a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm.746 10v-5.27h2.506v-1.234h-6.504v1.235h2.479V22h1.519Z' clip-rule='evenodd'/%3E%3Cpath fill='%23237453' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h9.101A6.979 6.979 0 0 1 11 18c0-.542.062-1.07.178-1.577-1.315-1.328-2.97-1.839-4.801-1.839a5.987 5.987 0 0 0-2.24.44.086.086 0 0 1-.023.003c-.063 0-.114-.068-.114-.151a.17.17 0 0 1 .044-.12l.004-.003a.155.155 0 0 1 .009-.008C5.287 13.644 6.767 13 8.363 13c1.122 0 2.188.319 3.15.89a7.139 7.139 0 0 1 2.244-1.459A6.97 6.97 0 0 1 18 11c1.959 0 3.73.805 5 2.101V4a3 3 0 0 0-3-3H4Zm15.952 6.749c-.026-.02-.053-.037-.08-.054l-.02-.013a4.236 4.236 0 0 0-1.763-.651c-1.114-.14-2.179.2-3.078.89a4.32 4.32 0 0 0-2.066-.86c-1.035-.13-2.028.155-2.885.751l-.01.008-.015.01a.135.135 0 0 0-.035.093c0 .066.04.12.09.12l.013-.003.007-.002a3.93 3.93 0 0 1 1.431-.084c1.376.173 2.575.737 3.416 2.002.044.06.083.057.128-.003 1.058-1.627 2.68-2.27 4.424-2.051.097.012.193.028.289.047l.029.006c.029.006.062.013.084.016.058.009.089-.053.089-.119 0-.044-.015-.082-.048-.103Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}i.icon.icon-format-csv{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill='%23757575' fill-rule='evenodd' d='M4 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V4a3 3 0 0 0-3-3H4Zm1 6.5h4v1H5v-1Zm0 4h4v1H5v-1Zm4 4H5v1h4v-1Zm5-8h-4v1h4v-1Zm0 4h-4v1h4v-1Zm-4 4h4v1h-4v-1Zm5-8h4v1h-4v-1Zm0 4h4v1h-4v-1Zm4 4h-4v1h4v-1Z' clip-rule='evenodd'/%3E%3C/svg%3E");height:22px;width:22px}#idx-celleditor{background-color:#fff;display:flex;height:30px;min-height:30px;z-index:5001}#idx-celleditor,#idx-celleditor *{box-sizing:border-box}#idx-celleditor.expanded{min-height:70px;transition:min-height .1s}#idx-celleditor:after{background-color:var(--background-menu-divider);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}#idx-celleditor #box-cell-name{display:inline-flex}#idx-celleditor #idx-cell-name{border:0;color:var(--text-normal);display:inline-block;line-height:30px;padding:0 4px;text-align:center;width:90px}#idx-celleditor #idx-cell-name[disabled]{color:#848484;opacity:.5}.phone #idx-celleditor #idx-cell-name{display:none}#idx-celleditor #idx-btn-function{height:30px;line-height:30px;padding:0 10px}#idx-celleditor #idx-cell-content{color:var(--text-normal);height:100%;line-height:1.42857143;min-height:30px;padding:3px;vertical-align:middle;width:100%}#idx-celleditor .caret{height:16px;width:30px}#idx-celleditor .caret:after{background-color:initial;border:1px solid var(--brand-cell);border-bottom:none;border-right:none;content:"";height:8px;left:6px;position:absolute;top:8px;transform:rotate(-135deg);transition:transform .2s ease;width:8px}#idx-celleditor.expanded .caret:after{transform:rotate(45deg) translate(3px,3px)}#idx-celleditor .ce-group{background-color:var(--background-secondary)}#idx-celleditor .group--content{position:relative}#idx-celleditor .group--content:before{background-color:var(--background-menu-divider);bottom:auto;content:"";display:block;height:100%;left:0;position:absolute;right:auto;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:0 50%;width:1px;z-index:15}.statusbar{background-color:var(--background-tertiary);display:flex;height:30px;min-height:30px;transition:top .4s}.statusbar:before{background-color:var(--background-menu-divider);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.statusbar .box-tab{display:flex}.statusbar .tab{border:0;border-radius:0;display:inline-block;font-size:18px;height:100%;line-height:inherit;min-width:48px;position:relative;text-align:center}.statusbar .tab.active{background-color:var(--background-secondary);font-weight:600}.statusbar .tab.active a{box-shadow:inset 0 2px 0 #49795d}.statusbar .tab:after{background-color:var(--background-menu-divider);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.statusbar .statusbar--box-tabs{overflow-x:auto;overflow-y:hidden}.statusbar .statusbar--box-tabs::-webkit-scrollbar{-webkit-appearance:none;display:none}.statusbar .statusbar--box-tabs>ul{height:100%;margin:0;overflow-x:scroll;padding:0;white-space:nowrap}.statusbar .statusbar--box-tabs>ul>li a{color:var(--text-normal);display:block;font-size:12px;height:100%;line-height:30px;padding:0 10px}.statusbar .tab i.icon{height:18px;width:18px}.statusbar .tab i.icon.icon-plus.bold{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cpath d='M16 9.987H9.987V16H8.013V9.987H2V8.013h6.013V2h1.974v6.013H16v1.974Z'/%3E%3C/svg%3E")}.statusbar .tab i.icon.icon-list.bold,.statusbar .tab i.icon.icon-plus.bold{background-color:var(--brand-cell);-webkit-mask-repeat:round;-webkit-mask-size:contain}.statusbar .tab i.icon.icon-list.bold{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cpath d='M2 4h14v2H2V4Zm0 4.016h14v2.015H2V8.016ZM2 12h14v2H2v-2Z'/%3E%3C/svg%3E")}.page[data-name=home] .page-content{align-items:stretch;display:flex;flex-direction:column}:root{--f7-popover-width:360px}.page-function-info .page-content,.page-function-info.page-content{background-color:var(--background-primary)}.page-function-info .function-info{padding:0 15px}.page-function-info .function-info h3{color:var(--text-normal)}.page-function-info .function-info p{color:var(--text-secondary)}.username-tip{background-color:#ee3525}.doc-placeholder{background:#fbfbfb;border:1px solid #dfdfdf;font-size:0;height:100%;left:0;overflow:hidden;padding-top:calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-subnavbar-offset, 0px));position:absolute;top:0;white-space:nowrap;width:100%;z-index:6000}.doc-placeholder>.columns{-webkit-animation:flickerAnimation 2s ease-in-out infinite;-moz-animation:flickerAnimation 2s ease-in-out infinite;-o-animation:flickerAnimation 2s ease-in-out infinite;animation:flickerAnimation 2s ease-in-out infinite;background:linear-gradient(90deg,#d5d5d5,transparent 1px) 0 0,linear-gradient(transparent 19px,#d5d5d5 20px) 0 0,linear-gradient(#f1f1f1,#f1f1f1 20px) 0 0 repeat-x;background-size:80px 20px;display:inline-block;height:100%;overflow:hidden;width:100%}.doc-placeholder>.columns:first-child{background:linear-gradient(#f1f1f1 19px,#d5d5d5 20px) 0 0;background-size:20px 20px;width:25px}.item-input-wrap input[type=number]{-moz-appearance:textfield}.move-sheet .swipe-container{background-color:var(--background-primary);display:flex;height:40px;justify-content:center}.move-sheet .swipe-container .icon-swipe{background:var(--background-menu-divider);border-radius:2px;height:4px;margin-top:8px;width:40px}.move-sheet .navbar{top:-1px}.actions-move-sheet{background-color:var(--background-secondary)}.all-list{--f7-popover-width:190px}.all-list .item-checkbox{padding-left:8px}.all-list .item-checkbox .icon-checkbox{border-color:transparent;margin-right:8px}.all-list .item-checkbox .icon-checkbox:after{color:var(--brand-cell)}.all-list .item-checkbox .item-after div{color:var(--text-secondary);font-style:italic}.all-list .item-checkbox input[type=checkbox]:checked~.icon-checkbox{background-color:unset;border-color:transparent}.popover-filter .list ul li:first-child .list-button,.sheet-filter .list ul li:first-child .list-button{color:var(--text-normal)}.popover-filter .list ul li:first-child .list-button:after,.sheet-filter .list ul li:first-child .list-button:after{background:var(--background-menu-divider)}.popover-filter .list .item-inner,.sheet-filter .list .item-inner{color:var(--text-normal)}.tooltip-cell-data{border-radius:4px;box-shadow:0 20px 46px rgba(0,0,0,.1);max-height:153px;max-width:186px;overflow-y:auto;width:max-content}.tooltip-cell-data .popover-inner{padding:8px}.tooltip-cell-data__title{color:var(--text-normal);font-size:12px;font-style:normal;font-weight:600;line-height:16px;margin:0 0 4px}.tooltip-cell-data__msg{color:var(--text-secondary);font-size:11px;font-style:normal;font-weight:400;letter-spacing:.06px;line-height:13px;margin:0}.cell-styles-list ul{background-color:var(--background-tertiary);display:flex;flex-wrap:wrap;justify-content:space-around;padding-left:5px;padding-right:5px;padding-top:5px}.cell-styles-list ul li.item-theme{background-position:50%;background-repeat:no-repeat;border:2px solid var(--fill-white);height:53px;margin-bottom:8px;padding:1px;width:108px}.cell-styles-list ul li.item-theme .item-content,.cell-styles-list ul li.item-theme .item-content .item-inner{height:100%;padding:0;width:100%}.cell-styles-list ul li.item-theme .item-content .item-inner:after{display:none}.cell-styles-list ul li.item-theme .item-content .item-inner .thumb{background-color:var(--canvas-content-background);background-size:contain;height:100%;padding:0;width:100%}.cell-styles-list ul li.item-theme.active:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2340865c' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='11' fill='%23fff'/%3E%3Cpath d='M11 21a10 10 0 1 1 10-10 10 10 0 0 1-10 10Zm6.4-13.68L17.06 7a.48.48 0 0 0-.67 0l-7 6.84-2.44-2.6a.51.51 0 0 0-.59.08l-.36.34a.58.58 0 0 0 0 .65l3.19 3.35a.38.38 0 0 0 .39 0L17.4 8a.48.48 0 0 0 0-.67Z'/%3E%3C/svg%3E");bottom:2px;content:"";height:22px;position:absolute;right:2px;width:22px;z-index:1}.cell-styles-list ul:after{display:none}.marker-color-sheet{border-radius:50%;height:16px;width:16px}.item-list.active .item-title{font-weight:600} +/*# sourceMappingURL=887.css.map*/ \ No newline at end of file diff --git a/apps/spreadsheeteditor/mobile/css/887.css.map b/apps/spreadsheeteditor/mobile/css/887.css.map new file mode 100644 index 0000000000..f77ed65d1f --- /dev/null +++ b/apps/spreadsheeteditor/mobile/css/887.css.map @@ -0,0 +1 @@ +{"version":3,"file":"css/887.css","mappings":";;;;GACA,IACI,2BCAJ,CCDA,MACI,oBAAqB,CACrB,oBAAqB,CACrB,qBAAsB,CACtB,oBAAqB,CACrB,uBAAwB,CACxB,yBAA0B,CAC1B,0BAA2B,CAE3B,yBAA0B,CAC1B,2BAA4B,CAC5B,6BAA8B,CAC9B,6CACA,2BAA4B,CAE5B,kBAAsB,CACtB,gCACA,+BACA,mBAAoB,CACpB,oBAAqB,CAErB,iBAAkB,CAClB,iBAAkB,CAElB,4BAA6B,CAC7B,oBAAqB,CACrB,yBAA0B,CAC1B,wCAEA,iCAEA,0CACA,2CACA,yCAEA,gCAAiC,CAIjC,wBAAyB,CACzB,gCAAiC,CACjC,yBAA0B,CAE1B,8BAA+B,CAE/B,yCAA0C,CAC1C,wBAAyB,CACzB,iCAAkC,CAClC,0CAA2C,CAE3C,2BAA4B,CAG5B,oCAEA,oCAAqC,CACrC,kCAAmC,CAEnC,wCAAyC,CAEzC,6BAA8B,CAE9B,sCAAuC,CACvC,uCAAwC,CAExC,gDAAiD,CACjD,wCAAyC,CACzC,iCDjBJ,CElDA,yCAGQ,4BAA6B,CAC7B,2BAA4B,CAC5B,6BAA8B,CAC9B,4CACA,wBAA4B,CAE5B,kCACA,oCACA,mCACA,mBAAoB,CACpB,oBAAqB,CAErB,iBAAkB,CAClB,iBAAkB,CAElB,oBAAqB,CACrB,oBAAqB,CACrB,qBAAsB,CACtB,oBAAqB,CACrB,uBAAwB,CACxB,yBAA0B,CAC1B,0BAA2B,CAE3B,4BAA6B,CAC7B,uBAAwB,CACxB,sBAAuB,CACvB,4BAA6B,CAE7B,iCAIA,0CACA,2CACA,yCAEA,sDAAuD,CAIvD,wBAAyB,CACzB,gCAAiC,CACjC,4BAA6B,CAE7B,iCAAkC,CAElC,yCAA0C,CAC1C,2BAA4B,CAC5B,oCAAqC,CACrC,6CAA8C,CAE9C,2BAA4B,CAG5B,oCACA,kCAAmC,CACnC,wCAAyC,CACzC,2CAA4C,CAE5C,oCAAqC,CAErC,6BAA8B,CAE9B,sCAAuC,CACvC,uCAAwC,CAExC,gDF8BR,CGpGA,sDAMgB,wBAA0B,CAD1B,iBAAkB,CADlB,kBHqGhB,CGzGA,uEAWgB,SAAU,CADV,UHmGhB,CG7GA,kIAmBY,gBAAiB,CADjB,cHgGZ,CGlHA,6DAyBY,gBH4FZ,CGvFQ,kDACI,cAAe,CACf,kBHyFZ,CGpFA,mJAMQ,cHsFR,CG5FA,oEAWY,yBHoFZ,CG/FA,mEAeY,yBHmFZ,CGlGA,mEAqBQ,SAAU,CADV,UHkFR,CGtGA,mKA2BgB,+EH+EhB,CG1GA,iKA8BgB,+EHgFhB,CG9GA,0EAsCgB,aAAgB,CAChB,iBH2EhB,CGlHA,6EA6CQ,aAAc,CACd,iBHwER,CGtHA,uHAmDQ,gBAAiB,CADjB,cH4ER,CG9HA,yFA4DQ,iBHqER,CGjEA,kDAEQ,cHkER,CGpEA,yEAKgB,6BHkEhB,CGvEA,0FAQoB,gBAAiB,CADjB,cHoEpB,CG3EA,wEAagB,gBHiEhB,CG9EA,yBAoBQ,aAAc,CADd,4CAA6C,CAE7C,iBAAkB,CAClB,kBH8DR,CGpFA,8CA2BQ,iBAAkB,CADlB,eH+DR,CGzFA,k5BAmCQ,gBHoER,CGvGA,oDAuCQ,wBHmER,CG1GA,wBA2CQ,wBHkER,CG7GA,yBAgDY,oBHgEZ,CGhHA,kEAuDY,cH6DZ,CGpHA,+BA6DY,eH0DZ,CGvHA,0CAmEY,iBHuDZ,CG1HA,kCAwEQ,qBHqDR,CG7HA,uGA6EY,eHqDZ,CGlIA,kCAkFQ,SAAU,CACV,WHmDR,CGtIA,uHAuFQ,eHoDR,CG3IA,sIA2FQ,cAAe,CACf,kBHqDR,CGjJA,wFAqGQ,aAAc,CACd,iBHmDR,CGzJA,uDA0GQ,eHkDR,CG5JA,wDAgHQ,QAAS,CADT,UHiDR,CG5CA,yBACI,iGAGQ,aAAc,CADd,iBH8CV,CGhDE,+DAOQ,aH4CV,CGxCE,oGAGQ,gBAAiB,CADjB,cH0CV,CACF,CI/QQ,yZAGI,oBJyRZ,CItRQ,gCCON,q8CLkRF,CIrRQ,gCCGN,+nFLqRF,CIpRQ,gCCDN,m3CLwRF,CInRQ,gCCLN,o+FL2RF,CIlRQ,gCCTN,yyDL8RF,CI9QQ,mEACI,oBJiRZ,CI1QQ,kDCrCN,mCACA,unCAEA,yBAA0B,CAD1B,yBLmTF,CI5QQ,kDCzCN,mCACA,8sCAEA,yBAA0B,CAD1B,yBLyTF,CI9QQ,kDC7CN,mCACA,2sCAEA,yBAA0B,CAD1B,yBL+TF,CA1T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BR2UF,CQzUA,+BAEE,+BR2UF,CQzUA,+BAEE,+BR2UF,CQzUA,+BAEE,2BR2UF,CQzUA,+BAEE,+BR2UF,CQzUA,mDAGE,+BR2UF,CQzUA,iBACE,+BR2UF,CQzUA,iBACE,+BR2UF,CQzUA,+BAEE,4BR2UF,CQzUA,iBACE,gCR2UF,CQzUA,iBACE,4BR2UF,CQzUA,sBACE,gCR2UF,CQzUA,gDAGE,gCR2UF,CQzUA,+BAEE,4BR2UF,CQzUA,0BACE,gCR2UF,CQzUA,iBACE,gCR2UF,CQzUA,iBACE,4BR2UF,CQzUA,+BAEE,gCR2UF,CQzUA,+BAEE,gCR2UF,CQzUA,+BAEE,4BR2UF,CQzUA,+BAEE,gCR2UF,CQzUA,+BAEE,gCR2UF,CQzUA,+BAEE,4BR2UF,CQzUA,0DAGE,gCR2UF,CQzUA,+BAEE,gCR2UF,CQzUA,+BAEE,4BR2UF,CQzUA,gDAGE,gCR2UF,CQzUA,+BAEE,gCR2UF,CQzUA,+BAEE,4BR2UF,CQzUA,iBACE,gCR2UF,CQxUA,mBAGI,kBAAmB,CADnB,YAAa,CADb,eR4UJ,CQ7UA,+BAKQ,gBR2UR,CQvUA,cAEI,WAIA,YAAa,CALb,WAAY,CAQZ,SAAU,CANV,cAAe,CAIf,mBAAoB,CAHpB,iBAAkB,CAIlB,gCAAkC,CAHlC,WR6UJ,CQxUI,qBACI,aAAc,CACd,SR0UR,CQtUA,iBACI,aRwUJ,CQzUA,gCAGQ,SRyUR,CQ5UA,yCASY,cAAe,CAFf,SAAU,CACV,eRyUZ,CQjVA,0CAcQ,MAAO,CACP,OAAQ,CAFR,URyUR,CQnUA,iCAEQ,qBRoUR,CQ/TA,4BACI,GAAO,URkUT,CQjUE,IAAO,SRoUT,CQnUE,GAAO,URsUT,CACF,CQrUA,+BACI,GAAO,URwUT,CQvUE,IAAO,SR0UT,CQzUE,GAAO,UR4UT,CACF,CQ3UA,iCACI,GAAO,UR8UT,CQ7UE,IAAO,SRgVT,CQ/UE,GAAO,URkVT,CACF,CQjVA,oCACI,GAAO,URoVT,CQnVE,IAAO,SRsVT,CQrVE,GAAO,URwVT,CACF,CQtVA,2BAGI,WAAY,CAGZ,MAAO,CACP,eAAgB,CANhB,iBAAkB,CAIlB,KAAM,CAHN,UAAW,CAE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A,yBAA0B,CAD1B,yBAA0B,CMehB,UX6hFZ,CW1hFY,mCACE,YX4hFd,CWzhFQ,6BNxBN,mCM0BU,WAAY,CNzBtB,oOAEA,yBAA0B,CAD1B,yBAA0B,CMuBhB,UXgiFZ,CW7hFY,mCACI,YX+hFhB,CW5hFQ,6BNhCN,mCMkCU,WAAY,CNjCtB,+UAEA,yBAA0B,CAD1B,yBAA0B,CM+BhB,UXmiFZ,CW/hFQ,sCNpCN,8iBL2kFF,CWliFQ,4EN1CN,uCMuCU,WAAY,CNpCtB,yBAA0B,CAD1B,yBAA0B,CMoChB,UX8iFZ,CW1iFQ,sCNzCN,siCLmlFF,CWriFQ,+BN/CN,mCMiDU,WAAY,CNhDtB,0cAEA,yBAA0B,CAD1B,yBAA0B,CM8ChB,UX4iFZ,CY3lFQ,iCACI,mCZ6lFZ,CY3lFQ,iCAGI,sGADA,WAAY,CADZ,WZ+lFZ,CY3lFQ,iCPTN,mCOWU,WAAY,CPVtB,4OAEA,yBAA0B,CAD1B,yBAA0B,COQhB,UZkmFZ,CY/lFY,uCACE,YZimFd,CY9lFQ,iCPjBN,mCOmBU,WAAY,CPlBtB,uOAEA,yBAA0B,CAD1B,yBAA0B,COgBhB,UZqmFZ,CYlmFY,uCACI,YZomFhB,CYjmFQ,0CPxBN,q1BLioFF,CYpmFQ,oFP9BN,uCO2BU,WAAY,CPxBtB,yBAA0B,CAD1B,yBAA0B,COwBhB,UZgnFZ,CY5mFQ,0CP7BN,2hCLyoFF,CYpmFY,kDPtCV,sCOwCc,WAAY,CPvC1B,izCAEA,yBAA0B,CAD1B,yBAA0B,COqCZ,UZ2mFhB,CYvmFY,yCACI,0BZymFhB,CYvmFY,yCP9CV,sCOgDc,WAAY,CP/C1B,gTAEA,yBAA0B,CAD1B,yBAA0B,CO6CZ,UZ8mFhB,CY1mFY,0CPnDV,oCOqDc,WAAY,CPpD1B,gTAEA,yBAA0B,CAD1B,yBAA0B,COkDZ,UZinFhB,CY7mFY,kDPxDV,qCL6qFF,CYhnFY,2FAHI,WAAY,CPzD1B,8NAEA,yBAA0B,CAD1B,yBAA0B,COuDZ,UZ4nFhB,CYxnFY,yCP7DV,kCLqrFF,CYnnFY,2CPjEV,qSL4rFF,CYtnFY,+FPvEV,sCOoEc,WAAY,CPjE1B,yBAA0B,CAD1B,yBAA0B,COiEZ,UZkoFhB,CY9nFY,oDPtEV,8XLosFF,CapsFI,kBRAF,sYL4sFF,CavsFI,mCRNF,oCQGM,WAAY,CRAlB,yBAA0B,CAD1B,yBAA0B,CQApB,UbmtFR,Ca/sFI,iBRLF,oaLotFF,Ca1sFI,gBRXF,oCQaM,WAAY,CRZlB,0nCAEA,yBAA0B,CAD1B,yBAA0B,CQUpB,UbitFR,Ca7sFI,8CACI,YbgtFR,Ca9sFI,0BRnBF,mCQqBM,WAAY,CRpBlB,izCAEA,yBAA0B,CAD1B,yBAA0B,CQkBpB,UbqtFR,CajtFI,yBRXF,8fQaM,WAAY,CADZ,UbqtFR,CajtFI,yBRhBF,yqBQkBM,WAAY,CADZ,UbqtFR,CajtFI,kBRlCF,mCQoCM,WAAY,CRnClB,6ZAEA,yBAA0B,CAD1B,yBAA0B,CQiCpB,UbwtFR,CajtFI,uBR7BF,4zBQ+BM,WAAY,CADZ,UbqtFR,CajtFI,wBRlCF,45BQoCM,WAAY,CADZ,UbqtFR,Ca9sFI,sBR1CF,+9CL2vFF,Ca7sFI,sBR9CF,0lFL8vFF,Ca5sFI,sBRlDF,gbLiwFF,Ca3sFI,sBRtDF,q5CLowFF,Ca1sFI,sBR1DF,g9FLuwFF,CazsFI,sBR9DF,6zDL0wFF,CaxsFI,sBRlEF,shBL6wFF,CavsFI,6BRlFF,gzCLiyFF,CazsFI,8CRzFF,mCQqFM,WAAY,CRlFlB,yBAA0B,CAD1B,yBAA0B,CQkFpB,UbstFR,CajtFI,iBRxFF,yiBLyyFF,Ca3sFI,iBR9FF,6cLizFF,Ca7sFI,mCRrGF,mCQiGM,WAAY,CR9FlB,yBAA0B,CAD1B,yBAA0B,CQ8FpB,Ub0tFR,CartFI,kBRpGF,sYLyzFF,Ca/sFI,mBR1GF,qSLi0FF,CajtFI,+CRjHF,mCQ6GM,WAAY,CR1GlB,yBAA0B,CAD1B,yBAA0B,CQ0GpB,Ub8tFR,CaztFI,4BRhHF,8XLy0FF,CajtFI,wCRxHF,snCLi1FF,CaptFI,gFR9HF,mCQ2HM,WAAY,CRxHlB,yBAA0B,CAD1B,yBAA0B,CQwHpB,UbguFR,Ca5tFI,wCR7HF,otCLy1FF,CavtFI,wCRlIF,ytCLi2FF,Ca1tFI,8ERxIF,mCQqIM,WAAY,CRlIlB,yBAA0B,CAD1B,yBAA0B,CQkIpB,UbsuFR,CaluFI,sCRvIF,+rCLy2FF,Ca7tFI,sCR5IF,6uCLi3FF,CahuFI,8ERlJF,mCQ+IM,WAAY,CR5IlB,yBAA0B,CAD1B,yBAA0B,CQ4IpB,Ub4uFR,CaxuFI,wCRjJF,ovCLy3FF,Cc33FA,eAEI,4Bd43FJ,Cc93FA,aAOI,eAAgB,CADhB,cd43FJ,Ccl4FA,gBAUM,oBd23FN,Ccr4FA,gEAeI,Ydy3FJ,Ccx4FA,sEAmBI,iBAAkB,CAClB,Sdy3FJ,Ccv3FI,kFTrBF,mCS4BI,WAAY,CANZ,UAAW,CAGX,WAAY,CAEZ,SAAU,CT1Bd,4ZAEA,yBAA0B,CAD1B,yBAA0B,CSqBtB,iBAAkB,CAGlB,UAAW,CAGX,cAAe,CALf,Udm4FN,Ce55FA,mBAEQ,0Cf65FR,Ce/5FA,gCAKY,iBAAkB,CAClB,Yf65FZ,CgBlyFE,uCA3BA,yBAKA,SAPA,UAAW,CAGX,aAAc,CA4BZ,UAAW,CAvBb,OAPA,iBAAkB,CAKlB,WADA,SA6BE,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CA5Bb,UhB00FF,Cel7FA,yBAeQ,6Bfs6FR,Cer6FQ,iCAEI,kBAAmB,CADnB,YAAa,CAEb,Sfu6FZ,Cer6FQ,gCAEI,kBAAmB,CADnB,Yfw6FZ,Ce97FA,8BA4BQ,sBfq6FR,Cej8FA,6BAkCQ,kBAAmB,CAFnB,YAAa,CACb,qBAAsB,CAItB,sBAAuB,CADvB,Ufo6FR,Cex8FA,+BAyCY,aAAc,CAFd,cAAe,CACf,WAAY,CAEZ,kBfo6FZ,Cel6FY,sCACI,Yfo6FhB,Ce/5FI,yBAIY,uEAEI,cAAe,CADf,cf+5FlB,Ce55Fc,yEACI,qBf85FlB,Ce55Fc,wEACI,6Bf85FlB,Ce35FU,wDACI,Kf65Fd,Ce95FU,yEAGQ,Wf85FlB,Ce75FkB,+EACI,qBf+5FtB,CACF,CiBv+FA,2BAMQ,gCACA,iBjBo+FR,CiBj+FY,gDACI,yBjBm+FhB,CiB9+FA,uCAgBY,cAAe,CACf,ejBi+FZ,CgBj1FE,6DACE,sBhBm1FJ,CiBl+FY,oEAQQ,ejB69FpB,CiBx/FA,kDAgDgB,oBjB28FhB,CiBz8FgB,sJAEI,wBjB28FpB,CgBx1FE,0LACE,wBhB21FJ,CiBz8FgB,6DACI,cjB28FpB,CiBtgGA,oDAgEgB,WACA,gBjBy8FhB,CgB/3FE,0DApCA,mCAKA,YAPA,UAAW,CAGX,aAAc,CAsCZ,WAAY,CAjCd,UAPA,iBAAkB,CAKlB,QADA,MAsCE,sDAAyD,CADzD,yBAA0B,CAF1B,SAAU,CApCZ,UhBg7FF,CiBzhGA,0CAwEgB,mBjBo9FhB,CgBj4FE,oOACE,sBhBu4FJ,CgBx5FE,oJApCA,mCAKA,YAPA,UAAW,CAGX,aAAc,CAsCZ,WAAY,CAjCd,UAPA,iBAAkB,CAKlB,QADA,MAsCE,sDAAyD,CADzD,yBAA0B,CAF1B,SAAU,CApCZ,UhB08FF,CkBnjGA,kCAKY,elBijGZ,CkBtjGA,+BASY,elBgjGZ,CkBzjGA,kCAYgB,WlBgjGhB,CkB5jGA,kCAgBgB,oBlB+iGhB,CkB/jGA,4CAoBgB,wBlB8iGhB,CmB/jGA,eACI,UnBikGJ,CmB9jGA,mDACI,cnBgkGJ,CoBzkGA,0BAEI,wBpB0kGJ,CoB5kGA,sLAMM,wBpB4kGN,CoBllGA,0LAWM,wBpB6kGN,CoBxlGA,wDAiBQ,sBpB0kGR,CoBxkGM,6CASE,iDAAkD,CALlD,QAAS,CAHT,UAAW,CASX,aAAc,CAHd,UAAW,CAJX,SAAU,CADV,iBAAkB,CAGlB,UAAW,CACX,KAAM,CAMN,iCAAkC,CAClC,yBAA0B,CAL1B,UAAW,CAGX,UpB4kGR,CqB1mGA,8BAEI,wBrB2mGJ,CqB7mGA,sMAMM,wBrB6mGN,CqBnnGA,0MAWM,wBrB8mGN,CqBznGA,0QAgBM,YrBinGN,CqBjoGA,sUAsBQ,kBAAmB,CAJnB,kBAAmB,CACnB,wBACA,YAAa,CAIb,cAAe,CAHf,sBAAuB,CAEvB,iBrBwnGR,CqB/oGA,8CA+BM,kBrBmnGN,CqBlpGA,wDAiCQ,WAAY,CACZ,UrBonGR,CqBtpGA,8EAuCQ,YrBknGR,CqBzpGA,8KA8CM,2BrBinGN,CqB/pGA,sMAgDQ,iBrBqnGR,CqBrqGA,wJAuDM,YrBmnGN,CqB1qGA,oDA4DQ,kBAAmB,CADnB,YrBmnGR,CqB9qGA,8DAgEU,cAAe,CADf,WAAY,CADZ,UrBqnGV,CqBnrGA,gDAwEQ,YrB8mGR,CqBtrGA,0DA6EU,cAAe,CADf,WAAY,CAFZ,cAAe,CACf,UrBinGV,CqB5rGA,olBAuFU,WAAY,CACZ,UrB+mGV,CqBvsGA,4DAgGM,YrB0mGN,CsBpsGA,cAEE,4CADA,wBtBusGF,CsBxsGA,4BAKI,2BtBssGJ,CsB3sGA,6BAQI,ctBssGJ,CsB9sGA,oBAaI,yBADA,cAAe,CADf,etBwsGJ,CsBntGA,0BAgBI,2BtBssGJ,CsBlsGA,sBAEI,WtBmsGJ,CsBrsGA,wBAUI,yBAJA,cAAe,CAEf,WAAY,CADZ,YAAa,CAEb,atBmsGJ,CsB9rGA,8GAEI,uBAAwB,CACxB,atBksGJ,CsBrsGA,sKAMM,YAAa,CADb,StBusGN,CsB5sGA,0xBASU,etBitGV,CsB1tGA,8TAaY,yBACA,UtBmtGZ,CsB3sGA,wCAGI,gBAAiB,CADjB,eAAgB,CAEhB,gBtB4sGJ,CsBhtGA,wDAMM,YAAa,CACb,6BAA8B,CAC9B,kBtB6sGN,CsBrtGA,+DAUQ,YAAa,CACb,wBAAyB,CACzB,UtB8sGR,CsB1tGA,gFAcU,iBtB+sGV,CsB7tGA,sDAmBM,YAAa,CACb,6BAA8B,CAC9B,kBtB6sGN,CsBluGA,0BAyBI,UtB4sGJ,CsBruGA,yBA8BI,yBAFA,cAAe,CAIf,eAAgB,CAHhB,gBAAiB,CAEjB,QtB6sGJ,CsB5uGA,sDAqCI,4BAFA,cAAe,CACf,gBAAiB,CAEjB,QtB6sGJ,CsBnvGA,6BA0CI,4CADA,4BAKA,cAAe,CADf,YAAa,CAFb,iBAAkB,CAClB,kBtB+sGJ,CsB3vGA,sDAiDI,yBACA,cAAe,CACf,gBAAiB,CACjB,QAAS,CACT,cAAe,CACf,kBAAmB,CACnB,oBtB8sGJ,CsBrwGA,8DA0DM,wBAAyB,CADzB,oBtBitGN,CsB1wGA,0BA8DI,iBtB+sGJ,CsB7wGA,0BAiEI,kBtB+sGJ,CsB3sGA,uDACE,atB+sGF,CsB5sGA,oBAME,4BAA+B,CAL/B,mCACA,0BAA2B,CAC3B,2BAA4B,CAE5B,8DAAwE,CADxE,UAAW,CAGX,qBtB8sGF,CsBrtGA,yBASI,UtB+sGJ,CsBxtGA,qCAeI,2CAHA,YAAa,CAEb,WAAY,CADZ,sBtBitGJ,CsB9tGA,iDAoBM,0CACA,iBAAkB,CAFlB,UAAW,CAFX,cAAe,CACf,UtBmtGN,CsB3sGA,4DAGI,2CACA,wFAA6G,CAF7G,ctB+sGJ,CsBjtGA,wEAMM,yCtB+sGN,CsBrtGA,0FASM,ctBgtGN,CsBztGA,0FAcM,cAAe,CADf,cAAe,CADf,StBmtGN,CsB/tGA,oGAkBM,YAAa,CACb,6BAA8B,CAF9B,ctBotGN,CsBruGA,gHAqBQ,ctBotGR,CsB9sGA,sBACE,0CtBgtGF,CsBjtGA,6BAGI,iBtBitGJ,CsBptGA,sEAMI,6CtBqtGJ,CsB3tGA,0CAQM,wBtBmtGN,CsB3tGA,0JAgBU,etB+sGV,CsB/tGA,+BAuBI,iFAAkF,CADlF,iBtB6sGJ,CsBxsGA,sBACE,iBtB0sGF,CsB3sGA,oCAGI,0CtB2sGJ,CsBvsGM,2FACE,YtB0sGR,CsBltGA,iEAWU,atB0sGV,CsBrtGA,uGAaY,gBtB2sGZ,CsBpsGA,iBAEE,eAAgB,CAChB,aAAc,CAFd,atBwsGF,CsBzsGA,sDAMI,kCtBssGJ,CsBlsGA,6BACI,atBosGJ,CsBjsGA,aAGE,yBADA,eAAgB,CADhB,iBtBqsGF,CsBhsGA,wBACE,atBksGF,CsBnsGA,6CAGI,+CtBmsGJ,CsB/rGA,8BACE,atBisGF,CuBj8GA,gBACI,uCACA,wCACA,0CACA,6CvBm8GJ,CuBv8GA,6CAQQ,iBvBk8GR,CuB18GA,uGAeQ,kBAAmB,CADnB,qBAAsB,CADtB,6BAA8B,CAD9B,cAAe,CAIf,UvBk8GR,CuBl9GA,yDAyBY,kDAAmD,CADnD,kBAAmB,CADnB,WAAY,CADZ,UvBk8GZ,CuBx9GA,qGA6BY,wBAA6B,CAD7B,8BvBg8GZ,CuB59GA,mFAwCY,mCACA,kBAAmB,CATnB,WAAY,CAGZ,WAAY,CACZ,QAAS,CAET,gBAAiB,CACjB,eAAgB,CANhB,iBAAkB,CAIlB,OAAQ,CAHR,UvBs8GZ,CuBx+GA,kDA+CY,oCvB47GZ,CuB3+GA,yDAiDgB,wBvB67GhB,CuB9+GA,mCAuDQ,evB07GR,CwBv/GA,6FAIY,wBAA4B,CAC5B,6MAA0S,CAC1S,qCAA6C,CAC7C,yBxBs/GZ,CwB7/GA,qDAUY,YxBs/GZ,CwBhgHA,qDAeQ,uBxBo/GR,CwBngHA,+BAmBQ,iBxBm/GR,CwBtgHA,gFA2BY,6CxBi/GZ,CwB/+GY,6DACI,exBi/GhB,CwB/gHA,oCAkCY,exBg/GZ,CyB/gHQ,sCpBAN,+aLuhHF,CyBlhHQ,mEpBNN,mCoBGU,WAAY,CpBAtB,yBAA0B,CAD1B,yBAA0B,CoBAhB,UzB8hHZ,CyB1hHQ,6BpBLN,+VL+hHF,CyBrhHQ,6BpBVN,yWLuiHF,CyBxhHQ,4DpBhBN,mCoBaU,WAAY,CpBVtB,yBAA0B,CAD1B,yBAA0B,CoBUhB,UzBoiHZ,CyBhiHQ,+BpBfN,ynBL+iHF,CyB3hHQ,iCpBpBN,wRLujHF,CyB9hHQ,+DpB1BN,mCoBuBU,WAAY,CpBpBtB,yBAA0B,CAD1B,yBAA0B,CoBoBhB,UzB0iHZ,CyBtiHQ,8BpBzBN,gWL+jHF,CyBjiHQ,6BpB9BN,qNLukHF,CyBpiHQ,0DpBpCN,mCoBiCU,WAAY,CpB9BtB,yBAA0B,CAD1B,yBAA0B,CoB8BhB,UzBgjHZ,CyB5iHQ,6BpBnCN,2LL+kHF,CyBviHQ,iCpBzCN,mCoB2CU,WAAY,CpB1CtB,w5CAEA,yBAA0B,CAD1B,yBAA0B,CoBwChB,UzB8iHZ,CyBziHQ,iCpB9CN,uhBL+lHF,CyB5iHQ,kEpBpDN,mCoBiDU,WAAY,CpB9CtB,yBAA0B,CAD1B,yBAA0B,CoB8ChB,UzBwjHZ,CyBpjHQ,iCpBnDN,8cLumHF,CyB/iHQ,mCpBxDN,qQL+mHF,CyBljHQ,sEpB9DN,mCoB2DU,WAAY,CpBxDtB,yBAA0B,CAD1B,yBAA0B,CoBwDhB,UzB+jHZ,CyB3jHQ,mCAGI,oBAAqB,CpBhE/B,icLwnHF,CyBrjHQ,0CpBnEN,yPLgoHF,CyBxjHQ,kFpBzEN,mCoBsEU,WAAY,CpBnEtB,yBAA0B,CAD1B,yBAA0B,CoBmEhB,UzBokHZ,CyBhkHQ,wCpBxEN,uPLwoHF,CyB3jHQ,wCpB7EN,2PLgpHF,CyB9jHQ,iFpBnFN,mCoBgFU,WAAY,CpB7EtB,yBAA0B,CAD1B,yBAA0B,CoB6EhB,UzB0kHZ,CyBtkHQ,yCpBlFN,0PLwpHF,CyBjkHQ,wCpBvFN,uPLgqHF,CyBpkHQ,gFpB7FN,mCoB0FU,WAAY,CpBvFtB,yBAA0B,CAD1B,yBAA0B,CoBuFhB,UzBglHZ,CyB5kHQ,wCpB5FN,iRLwqHF,CyBvkHQ,2CpBjGN,iVLgrHF,CyB1kHQ,sFpBvGN,mCoBoGU,WAAY,CpBjGtB,yBAA0B,CAD1B,yBAA0B,CoBiGhB,UzBslHZ,CyBllHQ,2CpBtGN,mRLwrHF,CyB7kHQ,oCpB3GN,qOLgsHF,CyBhlHQ,iEpBjHN,mCoB8GU,WAAY,CpB3GtB,yBAA0B,CAD1B,yBAA0B,CoB2GhB,UzB4lHZ,CyBxlHQ,6BpBhHN,gZLwsHF,CyBllHQ,iCpBtHN,gULgtHF,CyBrlHQ,8DpB5HN,mCoByHU,WAAY,CpBtHtB,yBAA0B,CAD1B,yBAA0B,CoBsHhB,UzBimHZ,CyB7lHQ,6BpB3HN,kULwtHF,CyBxlHQ,sCpBpHN,m6GoBsHU,WAAY,CADZ,UzB4lHZ,CyBxlHQ,kCpBtIN,mCACA,mRLquHF,CyB1lHQ,mEAJI,WAAY,CpBrItB,yBAA0B,CAD1B,yBAA0B,CoBqIhB,UzBumHZ,CyBlmHQ,iCpB5IN,oCACA,qsJL6uHF,CyB3lHQ,sCpBlJN,8PLqvHF,CyB9lHQ,2EpBxJN,mCoBqJU,WAAY,CpBlJtB,yBAA0B,CAD1B,yBAA0B,CoBkJhB,UzB0mHZ,CyBtmHQ,qCpBvJN,8PL6vHF,CyBjmHQ,wCpB5JN,8RLqwHF,CyBpmHQ,gFpBlKN,mCoB+JU,WAAY,CpB5JtB,yBAA0B,CAD1B,yBAA0B,CoB4JhB,UzBgnHZ,CyB5mHQ,wCpBjKN,8RL6wHF,CyBvmHQ,mCpBvKN,mCoByKU,WAAY,CpBxKtB,mnCAEA,yBAA0B,CAD1B,yBAA0B,CoBsKhB,UzB8mHZ,CyBvmHQ,0CpB9KN,0QL6xHF,CyB1mHQ,qFpBpLN,mCoBiLU,WAAY,CpB9KtB,yBAA0B,CAD1B,yBAA0B,CoB8KhB,UzBsnHZ,CyBlnHQ,2CpBnLN,uRLqyHF,CyB7mHQ,4CpBxLN,kRL6yHF,CyBhnHQ,wFpB9LN,mCoB2LU,WAAY,CpBxLtB,yBAA0B,CAD1B,yBAA0B,CoBwLhB,UzB4nHZ,CyBxnHQ,4CpB7LN,8MLqzHF,CyBnnHQ,2CpBlMN,uPL6zHF,CyBtnHQ,wFpBxMN,mCoBqMU,WAAY,CpBlMtB,yBAA0B,CAD1B,yBAA0B,CoBkMhB,UzBkoHZ,CyB9nHQ,6CpBvMN,yPLq0HF,CyBznHQ,4CpB5MN,yPL60HF,CyB5nHQ,sFpBlNN,mCoB+MU,WAAY,CpB5MtB,yBAA0B,CAD1B,yBAA0B,CoB4MhB,UzBwoHZ,CyBpoHQ,0CpBjNN,uPLq1HF,CyB/nHQ,6CpBtNN,wPL61HF,CyBloHQ,0FpB5NN,mCoByNU,WAAY,CpBtNtB,yBAA0B,CAD1B,yBAA0B,CoBsNhB,UzB8oHZ,CyB1oHQ,6CpB3NN,wPLq2HF,CyBroHQ,0CpBhON,mQL62HF,CyBxoHQ,sFpBtON,mCoBmOU,WAAY,CpBhOtB,yBAA0B,CAD1B,yBAA0B,CoBgOhB,UzBopHZ,CyBhpHQ,4CpBrON,mQLq3HF,CyBxoHQ,uCpB7ON,68GL63HF,CyB3oHQ,6EpBnPN,mCoBgPU,WAAY,CpB7OtB,yBAA0B,CAD1B,yBAA0B,CoB6OhB,UzBupHZ,CyBnpHQ,sCpBlPN,wvELq4HF,CyB9oHQ,uCpBvPN,ghEL64HF,CyBjpHQ,iFpB7PN,mCoB0PU,WAAY,CpBvPtB,yBAA0B,CAD1B,yBAA0B,CoBuPhB,UzB6pHZ,CyBzpHQ,0CpB5PN,8jELq5HF,CyBppHQ,0CpBjQN,sqBL65HF,CyBvpHQ,kFpBvQN,mCoBoQU,WAAY,CpBjQtB,yBAA0B,CAD1B,yBAA0B,CoBiQhB,UzBmqHZ,CyB/pHQ,wCpBtQN,wULq6HF,CyB1pHQ,oCpB3QN,gkBL66HF,CyB7pHQ,wEpBjRN,mCoB8QU,WAAY,CpB3QtB,yBAA0B,CAD1B,yBAA0B,CoB2QhB,UzByqHZ,CyBrqHQ,oCpBhRN,mcLq7HF,CyBhqHQ,0CpBrRN,qwDL67HF,CyBnqHQ,8EpB3RN,mCoBwRU,WAAY,CpBrRtB,yBAA0B,CAD1B,yBAA0B,CoBqRhB,UzB+qHZ,CyB3qHQ,oCpB1RN,uhCLq8HF,CyBnqHQ,4BpBlSN,6iBL68HF,CyBtqHQ,sDpBxSN,mCoBqSU,WAAY,CpBlStB,yBAA0B,CAD1B,yBAA0B,CoBkShB,UzBkrHZ,CyB9qHQ,0BpBvSN,8iBLq9HF,CyBtqHQ,8BpB/SN,21BL69HF,CyBzqHQ,mEpBrTN,mCoBkTU,WAAY,CpB/StB,yBAA0B,CAD1B,yBAA0B,CoB+ShB,UzBqrHZ,CyBjrHQ,qCpBpTN,2pBLq+HF,CyB5qHQ,uCpB1TN,mCoB4TU,WAAY,CpB3TtB,iUAEA,yBAA0B,CAD1B,yBAA0B,CoByThB,UzBmrHZ,CyB9qHQ,qCpB/TN,ofLq/HF,CyBjrHQ,6EpBrUN,sCoBkUU,WAAY,CpB/TtB,yBAA0B,CAD1B,yBAA0B,CoB+ThB,UzB6rHZ,CyBzrHQ,wCpBpUN,8WL6/HF,CyBprHQ,8CpB1UN,mCoB4UU,WAAY,CpB3UtB,8VAEA,yBAA0B,CAD1B,yBAA0B,CoByUhB,UzB2rHZ,CyBvrHQ,uCpB9UN,w4BL6gIF,CyBzrHQ,yEpBrVN,mCoBiVU,WAAY,CpB9UtB,yBAA0B,CAD1B,yBAA0B,CoB8UhB,UzBssHZ,CyBjsHQ,kCpBpVN,yQLqhIF,CyB5rHQ,oCpBzVN,4TL6hIF,CyB/rHQ,sEpB/VN,mCoB4VU,WAAY,CpBzVtB,yBAA0B,CAD1B,yBAA0B,CoByVhB,UzB2sHZ,CyBvsHQ,kCpB9VN,ubLqiIF,CyBlsHQ,kCpBnWN,8nBL6iIF,CyBrsHQ,oEpBzWN,mCoBsWU,WAAY,CpBnWtB,yBAA0B,CAD1B,yBAA0B,CoBmWhB,UzBitHZ,CyB7sHQ,kCpBxWN,yVLqjIF,CyBpsHY,mDpBjXV,8PL6jIF,CyBvsHY,wGpBvXV,mCoBoXc,WAAY,CpBjX1B,yBAA0B,CAD1B,yBAA0B,CoBiXZ,UzBmtHhB,CyB/sHY,qDpBtXV,iTLqkIF,CyB1sHY,mDpB3XV,iaL6kIF,CyB7sHY,sGpBjYV,mCoB8Xc,WAAY,CpB3X1B,yBAA0B,CAD1B,yBAA0B,CoB2XZ,UzBytHhB,CyBrtHY,mDpBhYV,mnBLqlIF,CyBhtHY,mDpBtYV,mCoBwYc,WAAY,CpBvY1B,+UAEA,yBAA0B,CAD1B,yBAA0B,CoBqYZ,UzButHhB,CyBntHY,8CACI,ezBqtHhB,C0BhmIQ,sCrBAN,iNLwmIF,C0BnmIQ,8ErBNN,mCqBGU,WAAY,CrBAtB,yBAA0B,CAD1B,yBAA0B,CqBAhB,U1B+mIZ,C0B3mIQ,wCrBLN,8MLgnIF,C0BtmIQ,iCrBXN,mCqBaU,WAAY,CrBZtB,6SAEA,yBAA0B,CAD1B,yBAA0B,CqBUhB,U1B6mIZ,C0BzmIQ,0CrBhBN,sCqBkBU,WAAY,CrBjBtB,mdAEA,yBAA0B,CAD1B,yBAA0B,CqBehB,U1BgnIZ,C0B5mIQ,mCrBpBN,ynBLwoIF,C0B/mIQ,wErB1BN,mCqBuBU,WAAY,CrBpBtB,yBAA0B,CAD1B,yBAA0B,CqBoBhB,U1B2nIZ,C0BvnIQ,qCrBzBN,wRLgpIF,C0BlnIQ,kCrB9BN,gWLwpIF,C0BrnIQ,uErBpCN,mCqBiCU,WAAY,CrB9BtB,yBAA0B,CAD1B,yBAA0B,CqB8BhB,U1BioIZ,C0B7nIQ,qCrBnCN,+dLgqIF,C0BxnIQ,qCrBxCN,8cLwqIF,C0B3nIQ,4ErB9CN,mCqB2CU,WAAY,CrBxCtB,yBAA0B,CAD1B,yBAA0B,CqBwChB,U1BuoIZ,C0BnoIQ,uCrB7CN,qQLgrIF,C0B9nIQ,8CrBlDN,yPLwrIF,C0BjoIQ,0FrBxDN,mCqBqDU,WAAY,CrBlDtB,yBAA0B,CAD1B,yBAA0B,CqBkDhB,U1B6oIZ,C0BzoIQ,4CrBvDN,uPLgsIF,C0BpoIQ,4CrB5DN,2PLwsIF,C0BvoIQ,yFrBlEN,mCqB+DU,WAAY,CrB5DtB,yBAA0B,CAD1B,yBAA0B,CqB4DhB,U1BmpIZ,C0B/oIQ,6CrBjEN,0PLgtIF,C0B1oIQ,4CrBtEN,uPLwtIF,C0B7oIQ,wFrB5EN,mCqByEU,WAAY,CrBtEtB,yBAA0B,CAD1B,yBAA0B,CqBsEhB,U1BypIZ,C0BrpIQ,4CrB3EN,iRLguIF,C0BhpIQ,+CrBhFN,iVLwuIF,C0BnpIQ,8FrBtFN,mCqBmFU,WAAY,CrBhFtB,yBAA0B,CAD1B,yBAA0B,CqBgFhB,U1B+pIZ,C0B3pIQ,+CrBrFN,mRLgvIF,C0BtpIQ,iCrB3FN,mCqB6FU,WAAY,CrB5FtB,2tBAEA,yBAA0B,CAD1B,yBAA0B,CqB0FhB,U1B6pIZ,C0BzpIQ,+ErBhGN,mCqBkGU,WAAY,CrBjGtB,+xBAEA,yBAA0B,CAD1B,yBAA0B,CqB+FhB,U1BiqIZ,C0B7pIQ,iCrBrGN,mCACA,kULywIF,C0BhqIQ,sEAHI,WAAY,CrBpGtB,yBAA0B,CAD1B,yBAA0B,CqBoGhB,U1B4qIZ,C0BxqIQ,qCrB1GN,oCACA,qsJLixIF,C0BnqIQ,yCrB9GN,2pBLyxIF,C0BtqIQ,oFrBpHN,mCqBiHU,WAAY,CrB9GtB,yBAA0B,CAD1B,yBAA0B,CqB8GhB,U1BkrIZ,C0B9qIQ,2CrBnHN,gULiyIF,C0BrqIQ,0CrB5HN,8PLyyIF,C0BxqIQ,mFrBlIN,mCqB+HU,WAAY,CrB5HtB,yBAA0B,CAD1B,yBAA0B,CqB4HhB,U1BorIZ,C0BhrIQ,yCrBjIN,8PLizIF,C0B3qIQ,4CrBtIN,8RLyzIF,C0B9qIQ,wFrB5IN,mCqByIU,WAAY,CrBtItB,yBAA0B,CAD1B,yBAA0B,CqBsIhB,U1B0rIZ,C0BtrIQ,4CrB3IN,8RLi0IF,C0B9qIQ,8CrBnJN,0QLy0IF,C0BjrIQ,6FrBzJN,mCqBsJU,WAAY,CrBnJtB,yBAA0B,CAD1B,yBAA0B,CqBmJhB,U1B6rIZ,C0BzrIQ,+CrBxJN,uRLi1IF,C0BprIQ,gDrB7JN,kRLy1IF,C0BvrIQ,gGrBnKN,mCqBgKU,WAAY,CrB7JtB,yBAA0B,CAD1B,yBAA0B,CqB6JhB,U1BmsIZ,C0B/rIQ,gDrBlKN,8MLi2IF,C0B1rIQ,+CrBvKN,uPLy2IF,C0B7rIQ,gGrB7KN,mCqB0KU,WAAY,CrBvKtB,yBAA0B,CAD1B,yBAA0B,CqBuKhB,U1BysIZ,C0BrsIQ,iDrB5KN,yPLi3IF,C0BhsIQ,gDrBjLN,yPLy3IF,C0BnsIQ,8FrBvLN,mCqBoLU,WAAY,CrBjLtB,yBAA0B,CAD1B,yBAA0B,CqBiLhB,U1B+sIZ,C0B3sIQ,8CrBtLN,uPLi4IF,C0BtsIQ,iDrB3LN,wPLy4IF,C0BzsIQ,kGrBjMN,mCqB8LU,WAAY,CrB3LtB,yBAA0B,CAD1B,yBAA0B,CqB2LhB,U1BqtIZ,C0BjtIQ,iDrBhMN,wPLi5IF,C0B5sIQ,8CrBrMN,mQLy5IF,C0B/sIQ,8FrB3MN,mCqBwMU,WAAY,CrBrMtB,yBAA0B,CAD1B,yBAA0B,CqBqMhB,U1B2tIZ,C0BvtIQ,gDrB1MN,mQLi6IF,C0B/sIQ,2CrBlNN,68GLy6IF,C0BltIQ,qFrBxNN,mCqBqNU,WAAY,CrBlNtB,yBAA0B,CAD1B,yBAA0B,CqBkNhB,U1B8tIZ,C0B1tIQ,0CrBvNN,wvELi7IF,C0BrtIQ,2CrB5NN,ghELy7IF,C0BxtIQ,yFrBlON,mCqB+NU,WAAY,CrB5NtB,yBAA0B,CAD1B,yBAA0B,CqB4NhB,U1BouIZ,C0BhuIQ,8CrBjON,8jELi8IF,C0B3tIQ,8CrBtON,sqBLy8IF,C0B9tIQ,0FrB5ON,mCqByOU,WAAY,CrBtOtB,yBAA0B,CAD1B,yBAA0B,CqBsOhB,U1B0uIZ,C0BtuIQ,4CrB3ON,wULi9IF,C0BjuIQ,wCrBhPN,gkBLy9IF,C0BpuIQ,gFrBtPN,mCqBmPU,WAAY,CrBhPtB,yBAA0B,CAD1B,yBAA0B,CqBgPhB,U1BgvIZ,C0B5uIQ,wCrBrPN,mcLi+IF,C0BvuIQ,8CrB1PN,qwDLy+IF,C0B1uIQ,sFrBhQN,mCqB6PU,WAAY,CrB1PtB,yBAA0B,CAD1B,yBAA0B,CqB0PhB,U1BsvIZ,C0BlvIQ,wCrB/PN,uhCLi/IF,C0B1uIQ,gCrBvQN,6iBLy/IF,C0B7uIQ,8DrB7QN,mCqB0QU,WAAY,CrBvQtB,yBAA0B,CAD1B,yBAA0B,CqBuQhB,U1ByvIZ,C0BrvIQ,8BrB5QN,8iBLigJF,C0B7uIQ,kCrBrRN,mCqBuRU,WAAY,CrBtRtB,g3BAEA,yBAA0B,CAD1B,yBAA0B,CqBoRhB,U1BovIZ,C0B/uIQ,yCrB1RN,o0BLihJF,C0BlvIQ,qFrBhSN,sCqB6RU,WAAY,CrB1RtB,yBAA0B,CAD1B,yBAA0B,CqB0RhB,U1B8vIZ,C0B1vIQ,4CrB/RN,2QLyhJF,C0BhvIQ,2FrB1SN,mCqB4SU,WAAY,CrB3StB,uPAEA,yBAA0B,CAD1B,yBAA0B,CqByShB,U1B+vIZ,C0B3vIQ,2CrB/SN,mCqBiTU,WAAY,CrBhTtB,8eAEA,yBAA0B,CAD1B,yBAA0B,CqB8ShB,U1BkwIZ,C0B9vIQ,+CrBvSN,0OqBySU,WAAY,CADZ,U1BkwIZ,C0B9vIQ,iCrBzTN,mCqB2TU,WAAY,CrB1TtB,kNAEA,yBAA0B,CAD1B,yBAA0B,CqBwThB,U1BqwIZ,C0BjwIQ,8CrB9TN,mCqBgUU,WAAY,CrB/TtB,kNAEA,yBAA0B,CAD1B,yBAA0B,CqB6ThB,U1BwwIZ,C0BpwIQ,kCrBnUN,mCqBqUU,WAAY,CrBpUtB,uPAEA,yBAA0B,CAD1B,yBAA0B,CqBkUhB,U1B2wIZ,C0BlwIgB,wDACI,e1BowIpB,C0B3vIY,yCAEI,WAAY,CADZ,W1B8vIhB,C0B1vIY,yCrB3VV,iSL6lJF,C0B7vIY,kFrBjWV,sCqB8Vc,WAAY,CrB3V1B,yBAA0B,CAD1B,yBAA0B,CqB2VZ,U1BywIhB,C0BrwIY,yCrBhWV,gSLqmJF,C0BhwIY,2CrBrWV,kOL6mJF,C0BnwIY,oFrB3WV,sCqBwWc,WAAY,CrBrW1B,yBAA0B,CAD1B,yBAA0B,CqBqWZ,U1B+wIhB,C0B3wIY,yCrB1WV,oNLqnJF,C0BtwIY,6CrBhXV,sCqBkXc,WAAY,CrBjX1B,s5BAEA,yBAA0B,CAD1B,yBAA0B,CqB+WZ,U1B6wIhB,C0BzwIY,yCrBpXV,8OLqoJF,C0B5wIY,kFrB1XV,sCqBuXc,WAAY,CrBpX1B,yBAA0B,CAD1B,yBAA0B,CqBoXZ,U1BwxIhB,C0BpxIY,yCrBzXV,yOL6oJF,C0B/wIY,gDrB/XV,sCqBiYc,WAAY,CrBhY1B,2OAEA,yBAA0B,CAD1B,yBAA0B,CqB8XZ,U1BsxIhB,C0BlxIY,8CrBnYV,4QL6pJF,C0BrxIY,8FrBzYV,sCqBsYc,WAAY,CrBnY1B,yBAA0B,CAD1B,yBAA0B,CqBmYZ,U1BiyIhB,C0B7xIY,gDrBxYV,sRLqqJF,C0BxxIY,8CrB7YV,0WL6qJF,C0B3xIY,4FrBnZV,sCqBgZc,WAAY,CrB7Y1B,yBAA0B,CAD1B,yBAA0B,CqB6YZ,U1BuyIhB,C0BnyIY,8CrBlZV,mrBLqrJF,C0B9xIY,8CrBvZV,gUL6rJF,C0BjyIY,gGrB7ZV,sCqB0Zc,WAAY,CrBvZ1B,yBAA0B,CAD1B,yBAA0B,CqBuZZ,U1B6yIhB,C0BzyIY,kDrB5ZV,2ULqsJF,C2BtsJI,+BACI,0D3BwsJR,C2BtsJI,gCACI,0D3BwsJR,C2BtsJI,iCACI,0D3BwsJR,C2BtsJI,gCACI,0D3BwsJR,C2BtsJI,iCACI,0D3BwsJR,C2BtsJI,kCACI,0D3BwsJR,C2BtsJI,gCACI,0D3BwsJR,C2BtsJI,iCACI,0D3BwsJR,C2BtsJI,kCACI,0D3BwsJR,C2BtsJI,gCACI,0D3BwsJR,C2BtsJI,iCACI,0D3BwsJR,C2BtsJI,kCACI,0D3BwsJR,C2BtsJI,wBACI,0D3BwsJR,C2BtsJI,6BACI,0D3BwsJR,C2BtsJI,0BACI,0D3BwsJR,C2BtsJI,4BACA,0D3BwsJJ,C2BtsJI,0BACI,0D3BwsJR,C2BtsJI,2BACI,0D3BwsJR,C2BtsJI,gCACI,0D3BwsJR,C2BtsJI,+BACI,0D3BwsJR,C2BtsJI,gCACI,0D3BwsJR,C2BtsJI,iCACI,0D3BwsJR,C2BtsJI,gCACI,0D3BwsJR,C2BtsJI,iCACI,0D3BwsJR,C2BtsJI,kCACI,0D3BwsJR,C2BjsJI,wBtBnEF,uXsBqEM,WAAY,CADZ,U3BqsJR,C2BjsJI,wBtBxEF,uoBsB0EM,WAAY,CADZ,U3BqsJR,C2BjsJI,uBtB7EF,ixCsB+EM,WAAY,CADZ,U3BqsJR,C2BjsJI,uBtBlFF,yvCsBoFM,WAAY,CADZ,U3BqsJR,C2BjsJI,uBtBvFF,0asByFM,WAAY,CADZ,U3BqsJR,C4BryJA,gBAWI,sBALA,YAAa,CAGb,YACA,gBAHA,Y5BsyJJ,C4B7yJA,kCACI,qB5B+yJJ,C4BnyJI,yBACI,gBAEA,yB5BoyJR,C4BjyJI,sBAII,gDAKA,QAAS,CART,UAAW,CAIX,aAAc,CAMd,UAAW,CADX,MAAO,CARP,iBAAkB,CAMlB,UAAW,CADX,QAAS,CAOT,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CANX,U5B0yJR,C4Bn0JA,+BAqCQ,mB5BiyJR,C4Bt0JA,+BAkDQ,QAAc,CAKd,yBARA,oBAAqB,CAIrB,gBAAiB,CAFjB,aAAc,CAId,iBAAkB,CALlB,U5B+xJR,C4BtxJQ,yCACI,cACA,U5BwxJZ,C4BpxJI,sCAEQ,Y5BqxJZ,C4Bt1JA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","sources":["webpack://documenteditor/../../apps/common/mobile/resources/less/variables.less","webpack://documenteditor/../../apps/spreadsheeteditor/mobile/src/less/app.less","webpack://documenteditor/../../apps/common/mobile/resources/less/colors-table.less","webpack://documenteditor/../../apps/common/mobile/resources/less/colors-table-dark.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common-rtl.less","webpack://documenteditor/../../apps/common/mobile/resources/less/icons.rtl.less","webpack://documenteditor/../../apps/common/mobile/resources/less/_mixins.less","webpack://documenteditor/../../apps/common/mobile/resources/less/collaboration.less","webpack://documenteditor/../../apps/common/mobile/resources/less/about.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common-ios.less","webpack://documenteditor/../../apps/common/mobile/resources/less/common-material.less","webpack://documenteditor/../../apps/common/mobile/resources/less/ios/icons.less","webpack://documenteditor/../../apps/common/mobile/resources/less/material/icons.less","webpack://documenteditor/../../apps/common/mobile/resources/less/icons.less","webpack://documenteditor/../../apps/common/mobile/resources/less/dataview.less","webpack://documenteditor/../../apps/common/mobile/resources/less/search.less","webpack://documenteditor/./node_modules/framework7/less/mixins.less","webpack://documenteditor/../../apps/common/mobile/resources/less/ios/contextmenu.less","webpack://documenteditor/../../apps/common/mobile/resources/less/material/contextmenu.less","webpack://documenteditor/../../apps/common/mobile/resources/less/contextmenu.less","webpack://documenteditor/../../apps/common/mobile/resources/less/ios/comments.less","webpack://documenteditor/../../apps/common/mobile/resources/less/material/comments.less","webpack://documenteditor/../../apps/common/mobile/resources/less/comments.less","webpack://documenteditor/../../apps/spreadsheeteditor/mobile/src/less/app-material.less","webpack://documenteditor/../../apps/spreadsheeteditor/mobile/src/less/app-ios.less","webpack://documenteditor/../../apps/spreadsheeteditor/mobile/src/less/icons-ios.less","webpack://documenteditor/../../apps/spreadsheeteditor/mobile/src/less/icons-material.less","webpack://documenteditor/../../apps/spreadsheeteditor/mobile/src/less/icons-common.less","webpack://documenteditor/../../apps/spreadsheeteditor/mobile/src/less/celleditor.less","webpack://documenteditor/../../apps/spreadsheeteditor/mobile/src/less/statusbar.less"],"sourcesContent":["\n.md {\n --background-normal: #f1f1f1;\n}\n\n@background-normal: var(--background-normal, #fff);\n\n@border-regular-control: #cbcbcb;\n@text-normal: #000;\n","@import '../../../../common/mobile/resources/less/variables.less';\n@import '../../../../../vendor/framework7-react/node_modules/framework7/less/mixins.less';\n@import '../../../../common/mobile/resources/less/_mixins.less';\n@import '../../../../common/mobile/resources/less/colors-table.less';\n@import '../../../../common/mobile/resources/less/colors-table-dark.less';\n@import './app-rtl.less';\n\n// @themeColor: #40865c;\n@brandColor: var(--brand-cell);\n\n.device-ios {\n --toolbar-background: var(--background-primary, #fff);\n --toolbar-segment: var(--brand-cell, #40865C);\n --toolbar-icons: var(--brand-cell, #40865C);\n}\n.device-android {\n --toolbar-background: var(--brand-cell, #40865C);\n\n .theme-type-dark {\n --toolbar-icons: var(--brand-cell, #40865C);\n }\n}\n\n@toolbar-background: var(--toolbar-background);\n@toolbar-segment: var(--toolbar-segment);\n@button-active-opacity: var(--active-opacity-cell);\n\n@import '../../../../common/mobile/resources/less/collaboration.less';\n@import '../../../../common/mobile/resources/less/common.less';\n@import '../../../../common/mobile/resources/less/common-ios.less';\n@import '../../../../common/mobile/resources/less/common-material.less';\n@import '../../../../common/mobile/resources/less/icons.less';\n@import '../../../../common/mobile/resources/less/dataview.less';\n@import '../../../../common/mobile/resources/less/search.less';\n@import '../../../../common/mobile/resources/less/contextmenu.less';\n@import '../../../../common/mobile/resources/less/comments.less';\n@import './app-material.less';\n@import './app-ios.less';\n@import './icons-ios.less';\n@import './icons-material.less';\n@import './icons-common.less';\n@import './celleditor.less';\n@import './statusbar.less';\n\n.page[data-name='home'] {\n .page-content {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n }\n};\n\n:root {\n --f7-popover-width: 360px;\n //--f7-page-content-extra-padding-top: 37px;\n}\n\n.page-function-info {\n &.page-content, .page-content {\n background-color: @background-primary;\n }\n\n .function-info {\n padding: 0 15px;\n h3 {\n color: @text-normal;\n }\n \n p {\n color: @text-secondary;\n }\n }\n}\n\n.username-tip {\n background-color: #ee3525; \n}\n\n// Skeleton of workbook\n\n.doc-placeholder {\n padding-top: calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-subnavbar-offset, 0px));\n overflow: hidden;\n background: #fbfbfb;\n width: 100%;\n height: 100%;\n border: 1px solid #dfdfdf;\n white-space: nowrap;\n position: absolute;\n top: 0;\n left: 0;\n font-size: 0;\n z-index: 6000;\n\n > .columns {\n width: 100%;\n height: 100%;\n overflow: hidden;\n display: inline-block;\n background: linear-gradient(90deg, #d5d5d5 0px, rgba(0,0,0,0) 1px) 0 0,\n linear-gradient(rgba(0,0,0,0) 19px, #d5d5d5 20px) 0 0,\n linear-gradient( #f1f1f1 0px, #f1f1f1 20px) 0 0 repeat-x;\n background-size: 80px 20px;\n\n -webkit-animation: flickerAnimation 2s infinite ease-in-out;\n -moz-animation: flickerAnimation 2s infinite ease-in-out;\n -o-animation: flickerAnimation 2s infinite ease-in-out;\n animation: flickerAnimation 2s infinite ease-in-out;\n\n &:first-child {\n background: linear-gradient(#f1f1f1 19px, #d5d5d5 20px) 0 0;\n background-size: 20px 20px;\n width: 25px;\n }\n }\n}\n\n.item-input-wrap {\n input[type = number] {\n -moz-appearance: textfield;\n }\n}\n\n.move-sheet {\n .swipe-container {\n display: flex;\n justify-content: center;\n height: 40px;\n background-color: @background-primary;\n .icon-swipe {\n margin-top: 8px;\n width: 40px;\n height: 4px;\n background: @background-menu-divider;\n border-radius: 2px;\n }\n }\n .navbar {\n top: -1px;\n }\n}\n\n.actions-move-sheet {\n background-color: @background-secondary;\n}\n\n// All-list sheet\n.all-list {\n --f7-popover-width: 190px;\n .item-checkbox{\n padding-left: 8px;\n .icon-checkbox{\n border-color: transparent;\n margin-right: 8px;\n &::after{\n color: @brandColor;\n }\n }\n .item-after div {\n color: @text-secondary;\n font-style: italic;\n }\n input[type='checkbox']:checked ~ .icon-checkbox {\n background-color: unset;\n border-color: transparent;\n }\n }\n}\n\n.sheet-filter, .popover-filter {\n .list {\n ul li:first-child .list-button{\n color: @text-normal;\n &::after {\n background: @background-menu-divider;\n }\n }\n\n .item-inner {\n color: @text-normal;\n }\n }\n}\n\n.tooltip-cell-data {\n width: max-content;\n max-width: 186px;\n max-height: 153px;\n overflow-y: auto;\n box-shadow: 0px 20px 46px rgba(0, 0, 0, 0.1);\n border-radius: 4px;\n .popover-inner {\n padding: 8px;\n }\n &__title {\n font-style: normal;\n font-weight: 600;\n font-size: 12px;\n line-height: 16px;\n color: @text-normal;\n margin: 0;\n margin-bottom: 4px;\n }\n &__msg {\n font-style: normal;\n font-weight: 400;\n font-size: 11px;\n line-height: 13px;\n color: @text-secondary;\n letter-spacing: 0.06px;\n margin: 0;\n }\n}\n\n// Cell styles\n\n.cell-styles-list {\n ul {\n display: flex;\n justify-content: space-around;\n flex-wrap: wrap;\n padding-left: 5px;\n padding-right: 5px;\n padding-top: 5px;\n background-color: @background-tertiary;\n li.item-theme {\n // border: 0.5px solid #c8c7cc;\n border: 2px solid @fill-white;\n padding: 1px;\n background-repeat: no-repeat;\n width: 108px;\n height: 53px;\n margin-bottom: 8px;\n background-position: center;\n .item-content {\n width: 100%;\n height: 100%;\n padding: 0;\n .item-inner {\n width: 100%;\n height: 100%;\n padding: 0;\n &:after {\n display: none;\n }\n .thumb {\n width: 100%;\n height: 100%;\n padding: 0;\n background-size: contain;\n background-color: var(--canvas-content-background);\n }\n }\n }\n &.active:before {\n content: '';\n position: absolute;\n width: 22px;\n height: 22px;\n right: 2px;\n bottom: 2px;\n z-index: 1;\n .encoded-svg-background('');\n }\n }\n &:after {\n display: none;\n }\n }\n}\n\n// Marker color sheet\n.marker-color-sheet {\n width: 16px;\n height: 16px;\n border-radius: 50%;\n}\n\n.item-list.active .item-title {\n font-weight: 600;\n}\n","\n:root {\n --brand-word: #446995;\n --brand-cell: #40865C;\n --brand-slide: #BE664F;\n --brand-form: #BE664F;\n --brand-primary: #3880BE;\n --brand-secondary: #ED7309;\n --brand-text-on-brand: #FFF;\n\n --background-primary: #FFF;\n --background-secondary: #FFF;\n --background-tertiary: #EFF0F5;\n --background-menu-divider: fade(#3C3C43, 15%);\n --background-button: #EFF0F5;\n\n --text-normal: #000000;\n --text-secondary: fade(#000, 60%);\n --text-tertiary: fade(#000, 40%);\n --text-link: #007AFF;\n --text-error: #FF3B30;\n\n --fill-black: #000;\n --fill-white: #FFF;\n\n --toolbar-background: #446995;\n --toolbar-icons: #FFF;\n --toolbar-segment: #446995;\n --toolbar-tab-normal:fade(#FFF, 50%);\n\n --component-disabled-opacity: .4;\n\n --active-opacity-word: fade(#446995, 30%);\n --active-opacity-slide: fade(#BE664F, 30%);\n --active-opacity-cell: fade(#40865C, 30%);\n\n --image-border-types-filter: none;\n\n // Canvas\n\n --canvas-background: #eee;\n --canvas-content-background: #fff;\n --canvas-page-border: #ccc;\n\n --canvas-ruler-background: #fff;\n //--canvas-ruler-border: #cbcbcb;\n --canvas-ruler-margins-background: #d9d9d9;\n --canvas-ruler-mark: #555;\n --canvas-ruler-handle-border: #555;\n --canvas-ruler-handle-border-disabled: #aaa;\n\n --canvas-high-contrast: #000;\n //--canvas-high-contrast-disabled: #666;\n\n --canvas-cell-border: fade(#000, 10%);\n //--canvas-cell-title-hover: #dfdfdf;\n --canvas-cell-title-selected: #cfcfcf;\n --canvas-cell-title-border: #d8d8d8;\n //--canvas-cell-title-border-hover: #c9c9c9;\n --canvas-cell-title-border-selected: #bbb;\n\n --canvas-dark-cell-title: #444;\n //--canvas-dark-cell-title-hover: #666 ;\n --canvas-dark-cell-title-selected: #111;\n --canvas-dark-cell-title-border: #3d3d3d;\n //--canvas-dark-cell-title-border-hover: #5c5c5c;\n --canvas-dark-cell-title-border-selected: #0f0f0f;\n --canvas-dark-content-background: #3a3a3a;\n --canvas-dark-page-border: #2a2a2a;\n\n //--canvas-scroll-thumb: #f7f7f7;\n //--canvas-scroll-thumb-hover: #c0c0c0;\n //--canvas-scroll-thumb-pressed: #adadad;\n //--canvas-scroll-thumb-border: #cbcbcb;\n //--canvas-scroll-thumb-border-hover: #cbcbcb;\n //--canvas-scroll-thumb-border-pressed: #adadad;\n //--canvas-scroll-arrow: #adadad;\n //--canvas-scroll-arrow-hover: #f7f7f7;\n //--canvas-scroll-arrow-pressed: #f7f7f7;\n //--canvas-scroll-thumb-target: #c0c0c0;\n //--canvas-scroll-thumb-target-hover: #f7f7f7;\n //--canvas-scroll-thumb-target-pressed: #f7f7f7;\n}\n\n@brand-word: var(--brand-word);\n@brand-cell: var(--brand-cell);\n@brand-slide: var(--brand-slide);\n@brand-form: var(--brand-form);\n@brand-primary: var(--brand-primary);\n@brand-secondary: var(--brand-secondary);\n@brand-text-on-brand: var(--brand-text-on-brand);\n\n@background-primary: var(--background-primary);\n@background-secondary: var(--background-secondary);\n@background-tertiary: var(--background-tertiary);\n@background-menu-divider: var(--background-menu-divider);\n@background-button: var(--background-button);\n\n@text-normal: var(--text-normal);\n@text-secondary: var(--text-secondary);\n@text-tertiary: var(--text-tertiary);\n@text-link: var(--text-link);\n@text-error: var(--text-error);\n\n@fill-black: var(--fill-black);\n@fill-white: var(--fill-white);\n\n@toolbar-icons: var(--toolbar-icons);\n@toolbar-segment: var(--toolbar-segment);\n@toolbar-tab-normal: var(--toolbar-tab-normal);\n\n@component-disabled-opacity: var(--component-disabled-opacity);\n","\n:root {\n .theme-type-dark,\n .theme-dark {\n --background-primary: #232323;\n --background-secondary: #333;\n --background-tertiary: #131313;\n --background-menu-divider: fade(#545458, 50%);\n --background-button: #333333;\n\n --text-normal: fade(#FFF, 87%);\n --text-secondary: fade(#FFF, 60%);\n --text-tertiary: fade(#FFF, 40%);\n --text-link: #1976D2;\n --text-error: #FF453A;\n\n --fill-black: #000;\n --fill-white: #FFF;\n\n --brand-word: #208BFF;\n --brand-cell: #34C759;\n --brand-slide: #FE8C33;\n --brand-form: #FE8C33;\n --brand-primary: #3E9CF0;\n --brand-secondary: #FFAF49;\n --brand-text-on-brand: #000;\n\n --toolbar-background: #232323;\n --toolbar-icons: #208BFF;\n --toolbar-segment: #FFF;\n --toolbar-tab-normal: #757575;\n\n --component-disabled-opacity: .4;\n\n --image-border-types-filter: invert(100%) brightness(4);\n\n --active-opacity-word: fade(#446995, 20%);\n --active-opacity-slide: fade(#BE664F, 20%);\n --active-opacity-cell: fade(#40865C, 20%);\n\n --image-border-types-filter: invert(100%) brightness(4);\n\n // Canvas\n\n --canvas-background: #000;\n --canvas-content-background: #fff;\n --canvas-page-border: #303030;\n\n --canvas-ruler-background: #636366;\n //--canvas-ruler-border: #2A2A2A;\n --canvas-ruler-margins-background: #3a3a3c;\n --canvas-ruler-mark: #8e8e93;\n --canvas-ruler-handle-border: #636366;\n --canvas-ruler-handle-border-disabled: #636366;\n\n --canvas-high-contrast: #000;\n //--canvas-high-contrast-disabled: #000;\n\n --canvas-cell-border: fade(#000, 10%);\n --canvas-cell-title-border: #d5d5d5;\n --canvas-cell-title-border-hover: #858585;\n --canvas-cell-title-border-selected: #afafaf;\n //--canvas-cell-title-hover: #787878;\n --canvas-cell-title-selected: #cfcfcf;\n\n --canvas-dark-cell-title: #444;\n //--canvas-dark-cell-title-hover: #000;\n --canvas-dark-cell-title-selected: #111;\n --canvas-dark-cell-title-border: #d5d5d5;\n //--canvas-dark-cell-title-border-hover: #191919;\n --canvas-dark-cell-title-border-selected: #afafaf;\n\n //--canvas-scroll-thumb: #404040;\n //--canvas-scroll-thumb-hover: #999;\n //--canvas-scroll-thumb-pressed: #adadad;\n //--canvas-scroll-thumb-border: #2a2a2a;\n //--canvas-scroll-thumb-border-hover: #999;\n //--canvas-scroll-thumb-border-pressed: #adadad;\n //--canvas-scroll-arrow: #999;\n //--canvas-scroll-arrow-hover: #404040;\n //--canvas-scroll-arrow-pressed: #404040;\n //--canvas-scroll-thumb-target: #999;\n //--canvas-scroll-thumb-target-hover: #404040;\n //--canvas-scroll-thumb-target-pressed: #404040;\n }\n}","[dir=\"rtl\"].device-android {\n .app-layout {\n .searchbar {\n input {\n padding-right: 24px;\n padding-left: 36px;\n background-position: right;\n }\n\n .number-search-results {\n right: auto;\n left: 26px;\n }\n }\n }\n\n .wrap-comment, .comment-list{\n .comment-header .initials {\n margin-right: 0;\n margin-left: 10px;\n }\n }\n\n .actions-modal {\n .actions-button-text {\n text-align: right;\n }\n }\n\n .navigation-sheet {\n &__title {\n padding-left: 0;\n padding-right: 16px;\n }\n }\n}\n\n[dir=\"rtl\"].device-ios .app-layout {\n .subnavbar,.navbar .left a + a {\n margin-right: 0;\n }\n\n .subnavbar,.navbar .right a + a {\n margin-right: 0;\n }\n\n .tab-buttons {\n .tab-link:first-child {\n border-radius: 0px 5px 5px 0px;\n }\n\n .tab-link:last-child {\n border-radius: 5px 0px 0px 5px;\n }\n }\n\n .searchbar .number-search-results {\n right: auto;\n left: 26px;\n }\n\n .popover {\n li:last-child, li:first-child {\n .segmented a:first-child {\n border-radius: 0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0;\n }\n .segmented a:last-child {\n border-radius: var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius);\n }\n } \n }\n\n .list {\n .item-inner {\n .item-after .segmented {\n margin-left: 0px;\n margin-right: 10px;\n }\n }\n }\n\n .searchbar-inner__right .buttons-row a.next {\n margin-left: 0;\n margin-right: 15px;\n }\n\n .searchbar-inner__left {\n margin-right: 0;\n margin-left: 10px;\n }\n\n .navbar .searchbar-input-wrap {\n margin-left: 10px;\n margin-right: 0;\n }\n\n .comment-list .item-content .item-inner .comment-header {\n padding-left: 16px;\n }\n}\n\n[dir=\"rtl\"] {\n .comment-list .item-content .item-inner{\n padding-left: 0;\n .comment-header {\n .right {\n justify-content: space-between;\n .comment-resolve {\n margin-right: 0px;\n margin-left: 10px;\n }\n }\n\n .name {\n text-align: right;\n }\n }\n }\n\n .comment-quote {\n border-right: 1px solid var(--text-secondary);\n border-left: 0;\n padding-left: 16px;\n padding-right: 10px;\n }\n\n .comment-text, .reply-text {\n padding-right: 0;\n padding-left: 15px;\n }\n\n // .comment-list .item-content .item-inner .comment-header {\n // padding-left: 16px;\n // }\n\n #add-comment-dialog .dialog .dialog-inner .wrap-comment .name, #edit-comment-dialog .dialog .dialog-inner .wrap-comment .name, #add-reply-dialog .dialog .dialog-inner .wrap-comment .name, #edit-reply-dialog .dialog .dialog-inner .wrap-comment .name, #add-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date, #edit-comment-dialog .dialog .dialog-inner .wrap-comment .comment-date, #add-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date, #edit-reply-dialog .dialog .dialog-inner .wrap-comment .comment-date, #add-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date, #edit-comment-dialog .dialog .dialog-inner .wrap-comment .reply-date, #add-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date, #edit-reply-dialog .dialog .dialog-inner .wrap-comment .reply-date {\n text-align: right;\n }\n\n #view-comment-popover .page .page-content {\n padding: 16px 0 60px 16px;\n }\n\n .wrap-comment {\n padding: 16px 16px 0 24px;\n }\n\n .shapes {\n .thumb {\n transform: scaleX(-1);\n }\n }\n\n .settings-popup,\n #settings-popover{\n .link {\n display: inline;\n }\n }\n\n #edit-table-style {\n ul {\n padding-right: 0;\n }\n }\n\n .color-schemes-menu {\n .item-title{\n margin-right: 20px;\n }\n }\n\n .list [slot=\"root-start\"] {\n padding: 15px 15px 0 0px;\n }\n\n .numbers, .bullets, .multilevels {\n .item-content {\n padding-right: 0;\n }\n }\n\n .dataview .active::after {\n left: -5px;\n right: unset;\n }\n\n .popup .list .range-number, .popover .list .range-number, .sheet-modal .list .range-number {\n text-align: left;\n }\n\n .popup .list .inner-range-title, .popover .list .inner-range-title, .sheet-modal .list .inner-range-title {\n padding-left: 0;\n padding-right: 15px;\n }\n\n #color-picker .right-block {\n margin-left: 0px;\n margin-right: 20px;\n }\n\n .page-review .toolbar #btn-reject-change {\n margin-left: 0;\n margin-right: 20px;\n }\n\n .list li.no-indicator .item-link .item-inner {\n padding-right: 0;\n }\n\n // Dialog with password\n .dialog .modal-password .modal-password__icon {\n right: auto;\n left: 4px;\n }\n}\n\n@media (max-width: 550px) {\n .device-ios[dir=rtl] .app-layout {\n .searchbar-expandable.searchbar-enabled .searchbar-inner__right {\n margin-right: 10px;\n margin-left: 0;\n }\n\n .navbar .searchbar-input-wrap {\n margin-left: 0;\n }\n }\n\n .device-android[dir=rtl] .app-layout {\n .searchbar-expandable.searchbar-enabled .searchbar-inner__left {\n margin-right: 0;\n margin-left: 33px;\n }\n }\n}\n","[dir=\"rtl\"] {\n // Common rtl-icons\n i.icon {\n &.icon-next, &.icon-prev, &.icon-text-align-right, &.icon-text-align-left, \n &.icon-table-add-column-left, &.icon-table-add-column-right, &.icon-table-remove-column, \n &.icon-table-borders-left, &.icon-table-borders-right, &.icon-numbers-3, &.icon-numbers-7 {\n transform: scaleX(-1);\n }\n\n &.icon-numbers-1 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-2 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-4 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-5 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-6 {\n .encoded-svg-background('');\n }\n }\n\n // [PE] rtl-icons \n i.icon {\n &.icon-align-left, &.icon-align-right {\n transform: scaleX(-1);\n }\n }\n\n // [SSE] rtl-icons\n\n i.icon {\n &.icon-text-orientation-horizontal {\n .encoded-svg-mask('');\n }\n\n &.icon-text-orientation-anglecount {\n .encoded-svg-mask('');\n }\n\n &.icon-text-orientation-angleclock {\n .encoded-svg-mask('');\n }\n }\n}","// Encoded SVG Background\n.encoded-svg-mask(@svg, @color: @brandColor) {\n @url: `encodeURIComponent(@{svg})`;\n background-color: @color;\n -webkit-mask-image: url(\"data:image/svg+xml;charset=utf-8,@{url}\");\n -webkit-mask-size: contain;\n -webkit-mask-repeat: round;\n}\n\n.encoded-svg-uncolored-mask(@svg) {\n @url: `encodeURIComponent(@{svg})`;\n -webkit-mask-image: url(\"data:image/svg+xml;charset=utf-8,@{url}\");\n}\n\n.encoded-svg-background(@svg) {\n @url: `encodeURIComponent(@{svg})`;\n background-image: url(\"data:image/svg+xml;charset=utf-8,@{url}\");\n}",".page.page-users {\n .block-title {\n text-transform: none;\n margin-top: 20px;\n margin-bottom: 20px;\n font-size: 17px;\n line-height: 17px;\n font-weight: normal;\n }\n .color {\n min-width: 40px;\n min-height: 40px;\n text-align: center;\n border-radius: 50px;\n line-height: 40px;\n color: @fill-white;\n font-size: 18px;\n }\n}","// @text-normal: #000;\n// @common-image-path - defined in webpack config\n\n.about {\n .page-content {\n text-align: center /*rtl:ignore*/;\n display: flex;\n flex-direction: column;\n }\n\n &_ios {\n padding-top: 120px;\n padding-bottom: 30px;\n }\n\n &_android {\n padding-top: 60px;\n padding-bottom: 16px;\n }\n\n &_tablet {\n padding-top: 12px;\n padding-bottom: 12px;\n } \n\n &__text {\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 16px;\n text-align: center;\n color: @text-normal;\n margin: 0;\n }\n\n a {\n color: @brandColor;\n }\n\n .logo-block {\n &__elem {\n display: flex;\n justify-content: center;\n img {\n max-width: 100%;\n height: auto;\n }\n }\n }\n\n &__logo {\n width: 100%;\n height: 80px;\n background: ~\"url(@{common-image-path}/about/logo-new.svg) no-repeat center\";\n }\n\n &__editor {\n flex-grow: 1;\n margin-top: 20px;\n }\n\n &__contacts {\n text-align: center;\n padding-left: 72px;\n padding-right: 72px;\n }\n\n &__licensor, &__customer {\n text-align: center;\n margin-top: 12px;\n }\n}\n\n.theme-type-dark {\n .about__logo {\n background: ~\"url(@{common-image-path}/about/logo-new-white.svg) no-repeat center\";\n }\n}","@import './about';\n\n@white: #ffffff;\n@black: #000000;\n@gray: #c4c4c4;\n@darkGray: #6d6d72;\n@green: #4cd964;\n@red: #f00;\n@autoColor: @black;\n\n.row {\n --f7-cols-per-row: 1;\n align-items: flex-start;\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n}\n\n.row + .row {\n margin-top: var(--f7-grid-row-gap);\n}\n\n.navbar.main-navbar {\n height: 0;\n &.navbar-with-logo {\n height: 26px;\n }\n .navbar-inner {\n display: flex;\n justify-content: center;\n padding-top: 8px;\n }\n .navbar-bg {\n &:before, &:after {\n content: none;\n }\n }\n}\n\n.navbar-hidden {\n transform: translate3d(0, calc(-1 * (var(--f7-navbar-height) + var(--f7-subnavbar-height))), 0);\n}\n\n.navbar-hidden+.page>.page-content, .navbar-hidden+.page-content {\n padding-top: 0;\n}\n\n.page.editor>.page-content {\n transition: padding-top .3s ease-in;\n}\n\n.subnavbar {\n .subnavbar-inner {\n padding: 0;\n .title {\n //white-space: nowrap;\n overflow: hidden;\n text-overflow: initial;\n margin: 0;\n padding: 0;\n flex-shrink: initial;\n }\n }\n .icon-back {\n color: @toolbar-icons;\n }\n}\n\n.page.page-with-subnavbar {\n .page-content {\n --f7-page-subnavbar-offset: 0px;\n }\n &.page-with-logo .page-content {\n --f7-page-subnavbar-offset: 26px;\n }\n}\n\n.popup, .popover, .sheet-modal {\n .list {\n &:first-child {\n margin-top: 0;\n margin-bottom: 0;\n }\n .inner-range-title {\n color: @text-normal;\n padding: 15px 0 0 15px;\n }\n\n .range-number {\n color: @text-normal;\n min-width: 60px;\n text-align: right;\n }\n }\n .page-content {\n &.no-padding-top {\n padding-top: 0;\n }\n }\n}\n\n.sheet-modal.coauth__sheet {\n transition: all .3s;\n}\n\n.disabled, [disabled] {\n opacity: .55;\n pointer-events: none;\n}\n\n.text-content {\n padding: 14px 10px 0 10px;\n}\n\n.view .list {\n max-width: 100%;\n --menu-list-offset: 0px;\n\n ul {\n max-width: 100%;\n background: var(--f7-list-bg-color);\n }\n\n li.no-indicator {\n .item-link {\n .item-inner{\n padding-right: 15px;\n &:before {\n content: none;\n }\n }\n }\n }\n .item-text {\n text-overflow: initial;\n white-space: normal;\n height: auto;\n max-height: initial;\n -webkit-line-clamp: initial;\n }\n .font-item img {\n filter: var(--image-border-types-filter, none)\n }\n .buttons {\n .button.active {\n background-color: @button-active-opacity;\n }\n }\n .item-link .item-inner {\n width: 100%;\n }\n .item-inner {\n color: @text-normal;\n }\n}\n\n// Bullets, numbers and multilevels\n\n.bullets,\n.numbers,\n.multilevels {\n min-height: 160px;\n .row.list {\n margin: 0;\n ul {\n background: none;\n &:before, &:after {\n display: none;\n }\n display: grid;\n grid-template-columns: repeat(4, auto);\n justify-content: space-around;\n grid-gap: 10px;\n width: 100%;\n padding: 5px;\n li {\n width: 70px;\n height: 70px;\n border: 1px solid @gray;\n html.pixel-ratio-2 & {\n border: 0.5px solid @gray;\n }\n html.pixel-ratio-3 & {\n border: 0.33px solid @gray;\n }\n \n .thumb {\n width: 100%;\n height: 100%;\n background-color: @fill-white;\n background-size: cover;\n \n label {\n width: 100%;\n text-align: center;\n position: absolute;\n top: 34%;\n color: @fill-black;\n }\n }\n\n .item-number, .item-marker, .item-multilevellist {\n width: 68px;\n height: 68px;\n }\n }\n }\n }\n \n .row.list .item-content {\n padding-left: 0;\n padding-right: 0;\n min-height: 68px;\n .item-inner{\n padding: 0;\n &:after {\n display: none;\n }\n }\n }\n}\n\n.popover {\n .page .list:first-child:last-child {\n ul {\n border-radius: 0;\n background-color: var(--f7-list-bg-color);\n li:first-child, li:last-child {\n .item-link {\n border-radius: 0;\n }\n }\n }\n }\n}\n\n// .popover .list + .list {\n// margin-top: 0;\n// }\n\n.popover .list:first-child li:first-child, .popover .list:first-child li:first-child a, .popover .list:first-child li:first-child > label, .popover .list:last-child li:last-child, .popover .list:last-child li:last-child a, .popover .list:last-child li:last-child > label {\n border-radius: 0;\n}\n\n.shapes {\n li {\n width: 70px;\n height: 70px;\n margin: 0 1px;\n\n .thumb {\n width: 100%;\n height: 100%;\n background-color: @brandColor;\n }\n }\n}\n\n.chart-types {\n width: 100%;\n .row {\n padding: 0 10px;\n }\n li {\n width: 60px;\n height: 60px;\n margin: 6px;\n\n .thumb {\n width: 100%;\n height: 100%;\n background-size: contain;\n }\n }\n}\n\n.chart-styles {\n .row {\n li {\n margin: 0;\n padding: 1px;\n }\n img {\n width: 50px;\n height: 50px;\n }\n }\n}\n\n.segmented {\n .decrement, .increment {\n text-overflow: clip;\n }\n}\n\n.content-block {\n margin: 32px 0;\n padding: 0 16px;\n box-sizing: border-box;\n p {\n color: @text-normal;\n }\n}\n\n\n// Color Schemes\n\n.color-schemes-menu {\n cursor: pointer;\n display: block;\n // background-color: @white;\n .item-inner {\n justify-content: flex-start;\n }\n .color-schema-block {\n display: flex;\n }\n .color {\n min-width: 26px;\n min-height: 26px;\n margin: 0 2px 0 0;\n box-shadow: 0 0 0 1px rgba(0,0,0,.15) inset;\n }\n .item-title {\n margin-left: 20px;\n color: @text-normal;\n }\n}\n\n\n// Layout \n\n.slide-layout {\n &__list {\n margin: auto;\n }\n ul {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n &::before, &::after {\n display: none;\n }\n }\n li {\n position: relative;\n z-index: 1;\n margin-top: 12px;\n img {\n box-shadow: 0 0 0 1px rgba(0,0,0,.15);\n }\n }\n .item-inner {\n padding-top: 0;\n }\n .item-inner:after {\n display: none;\n }\n .item-inner:before {\n opacity: 0;\n content: '';\n position: absolute;\n width: 22px;\n height: 22px;\n right: 11px;\n bottom: 0;\n z-index: 1;\n background-repeat: no-repeat;\n .encoded-svg-mask('');\n }\n .active .item-inner:before {\n opacity: 1;\n }\n}\n\n// Transition \n\n.slide-transition {\n .splitter {\n display: flex;\n align-items: center;\n color: @black;\n label {\n margin: 0 5px;\n }\n }\n .buttons-row {\n display: flex;\n margin: 0;\n min-width: 90px;\n margin-left: 10px;\n .button {\n width: 100%;\n }\n .button:first-child {\n border-radius: 5px 0 0 5px;\n border-left-width: 1px;\n border-left-style: solid;\n }\n .button:last-child {\n border-radius: 0 5px 5px 0;\n }\n }\n}\n\n.style-effect, .style-type {\n .list .item-title {\n font-weight: normal; \n }\n}\n\n.range-slider-delay {\n width: 100%;\n margin: 4px 0 5px 0;\n appearance: none;\n background: linear-gradient(to right,#b7b8b7 0,#b7b8b7 100%);\n background-position: center;\n background-size: 100% 2px;\n background-repeat: no-repeat;\n outline: 0;\n border: none;\n box-sizing: content-box;\n &:disabled {\n opacity: .55;\n }\n &::-webkit-slider-thumb {\n appearance: none;\n height: 28px;\n width: 28px;\n border-radius: 50%;\n background: @white;\n cursor: pointer;\n box-shadow: 0 2px 4px rgba(0, 0, 0, .3);\n }\n &::-ms-thumb { \n appearance: none;\n height: 28px;\n width: 28px;\n border-radius: 50%;\n background: @white;\n cursor: pointer;\n box-shadow: 0 2px 4px rgba(0, 0, 0, .3);\n }\n}\n\n.buttons-list {\n ul {\n // &::before, &::after {\n // display: none;\n // }\n li {\n border: 0;\n font-weight: normal;\n .item-link {\n height: 100%;\n .item-content {\n min-height: initial;\n height: 100%;\n padding: 0;\n }\n .item-inner {\n justify-content: center;\n align-items: center;\n padding: 0;\n min-height: initial;\n &::before {\n display: none;\n }\n }\n }\n }\n }\n}\n\n.item-color-auto {\n .color-auto {\n width: 22px;\n height: 22px;\n background-color: @autoColor;\n }\n &.active {\n .color-auto {\n box-shadow: 0 0 0 1px @white, 0 0 0 4px @brandColor;\n border-radius: 1px;\n }\n }\n}\n\n.page {\n .color-palettes {\n .list {\n ul {\n .palette {\n padding: 8px 0px;\n a {\n flex-grow: 1;\n position: relative;\n min-width: 10px;\n min-height: 26px;\n margin: 1px 1px 0 0;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset;\n border-radius: 0;\n &.active:after {\n content: ' ';\n position: absolute;\n width: 100%;\n height: 100%;\n box-shadow: 0 0 0 1px @white, 0 0 0 4px @brandColor;\n z-index: 1;\n border-radius: 1px;\n }\n &.transparent {\n background-repeat: no-repeat;\n background-size: 100% 100%;\n .encoded-svg-background(\"\");\n }\n } \n }\n }\n }\n .row {\n padding: 0;\n }\n .list .item-inner {\n display: block;\n color: var(--text-normal);\n }\n .standart-colors, .dynamic-colors {\n .palette {\n display: flex;\n }\n }\n\n .dynamic-colors {\n .empty-color {\n background-color: @white;\n }\n }\n }\n}\n\n#color-picker {\n display: flex;\n justify-content: space-around;\n align-items: center;\n max-width: 300px;\n margin: 0 auto;\n margin-top: 4px;\n .color-picker-container {\n width: calc(100% - 94px);\n position: relative;\n max-width: 100%;\n height: auto;\n font-size: 0;\n .color-picker-module-wheel {\n margin: 0;\n }\n }\n .right-block {\n margin-left: 20px;\n .color-hsb-preview {\n width: 72px;\n height: 72px;\n overflow: hidden;\n border: 1px solid @gray;\n border-radius: 100px;\n .new-color-hsb-preview, .current-color-hsb-preview {\n height: 36px;\n }\n .new-color-hsb-preview {\n border-radius: 100px 100px 0 0;\n }\n .current-color-hsb-preview {\n border-radius: 0 0 100px 100px;\n }\n }\n .button-round {\n height: 72px;\n width: 72px;\n padding: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 100px;\n background-color: @fill-white;\n box-shadow: 0 4px 4px rgba(0,0,0,.25);\n // border-color: transparent;\n border: 0;\n margin-top: 20px;\n }\n }\n}\n\n// Table styles\n\n.table-styles {\n width: 100%;\n .row {\n &, li {\n margin-bottom: 12px;\n }\n li, div {\n box-shadow: 0 0 0 1px @gray;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n }\n\n li,\n .row div {\n margin: 0;\n padding: 1px;\n\n img {\n width: 70px;\n height: 50px;\n }\n }\n}\n\n#edit-table-style {\n .list ul ul {\n padding-left: 0;\n }\n}\n\n// input[type=\"number\"]\ninput[type=\"number\"]::-webkit-outer-spin-button,\ninput[type=\"number\"]::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n// Regional Settings\n.icon.lang-flag {\n background-size: 48px auto;\n background-image: ~'url(@{common-image-path}/controls/flags@2x.png)';\n}\n\n.icon.lang-flag {\n width: 16px;\n height: 12px;\n}\n\n.lang-flag.ca,\n.lang-flag.ca-ES {\n background-position: 0 0;\n}\n.lang-flag.cs,\n.lang-flag.cs-CZ {\n background-position: -16px 0;\n}\n.lang-flag.da,\n.lang-flag.da-DK {\n background-position: -32px 0;\n}\n.lang-flag.de,\n.lang-flag.de-DE {\n background-position: 0 -12px;\n}\n.lang-flag.el,\n.lang-flag.el-GR {\n background-position: -16px -12px;\n}\n.lang-flag.en,\n.lang-flag.en-US {\n background-position: -32px -12px;\n}\n.lang-flag.fr,\n.lang-flag.fr-FR {\n background-position: 0 -24px;\n}\n.lang-flag.hu,\n.lang-flag.hu-HU {\n background-position: -16px -24px;\n}\n.lang-flag.it,\n.lang-flag.it-IT {\n background-position: -32px -24px;\n}\n.lang-flag.ko,\n.lang-flag.ko-KR {\n background-position: 0 -36px;\n}\n.lang-flag.nl,\n.lang-flag.nl-NL {\n background-position: -16px -36px;\n}\n.lang-flag.nb,\n.lang-flag.nb-NO,\n.lang-flag.nn,\n.lang-flag.nn-NO {\n background-position: -32px -36px;\n}\n.lang-flag.pl,\n.lang-flag.pl-PL {\n background-position: 0 -48px;\n}\n.lang-flag.pt,\n.lang-flag.pt-BR {\n background-position: -16px -48px;\n}\n.lang-flag.ro,\n.lang-flag.ro-RO {\n background-position: -32px -48px;\n}\n.lang-flag.ru,\n.lang-flag.ru-RU {\n background-position: 0 -60px;\n}\n.lang-flag.sv,\n.lang-flag.sv-SE {\n background-position: -32px -60px;\n}\n.lang-flag.tr,\n.lang-flag.tr-TR {\n background-position: 0 -72px;\n}\n.lang-flag.uk,\n.lang-flag.uk-UA {\n background-position: -16px -72px;\n}\n.lang-flag.lv,\n.lang-flag.lv-LV {\n background-position: -32px -72px;\n}\n.lang-flag.lt,\n.lang-flag.lt-LT {\n background-position: 0 -84px;\n}\n.lang-flag.vi,\n.lang-flag.vi-VN {\n background-position: -16px -84px;\n}\n.lang-flag.de-CH,\n.lang-flag.fr-CH,\n.lang-flag.it-CH {\n background-position: -32px -84px;\n}\n.lang-flag.pt-PT {\n background-position: -16px -96px;\n}\n.lang-flag.de-AT {\n background-position: -32px -96px;\n}\n.lang-flag.es,\n.lang-flag.es-ES {\n background-position: 0 -108px;\n}\n.lang-flag.en-GB {\n background-position: -32px -108px;\n}\n.lang-flag.en-AU {\n background-position: 0 -120px;\n}\n.lang-flag.az-Latn-AZ {\n background-position: -16px -120px;\n}\n.lang-flag.id,\n.lang-flag.id-ID,\n.lang-flag.en-ID {\n background-position: -32px -120px;\n}\n.lang-flag.bg,\n.lang-flag.bg-BG {\n background-position: 0 -132px;\n}\n.lang-flag.ca-ES-valencia {\n background-position: -16px -132px;\n}\n.lang-flag.en-CA {\n background-position: -32px -132px;\n}\n.lang-flag.en-ZA {\n background-position: 0 -144px;\n}\n.lang-flag.eu,\n.lang-flag.eu-ES {\n background-position: -16px -144px;\n}\n.lang-flag.gl,\n.lang-flag.gl-ES {\n background-position: -32px -144px;\n}\n.lang-flag.hr,\n.lang-flag.hr-HR {\n background-position: 0 -156px;\n}\n.lang-flag.lb,\n.lang-flag.lb-LU {\n background-position: -16px -156px;\n}\n.lang-flag.mn,\n.lang-flag.mn-MN {\n background-position: -32px -156px;\n}\n.lang-flag.sl,\n.lang-flag.sl-SI {\n background-position: 0 -168px;\n}\n.lang-flag.sr,\n.lang-flag.sr-Cyrl-RS,\n.lang-flag.sr-Latn-RS {\n background-position: -16px -168px;\n}\n.lang-flag.sk,\n.lang-flag.sk-SK {\n background-position: -32px -168px;\n}\n.lang-flag.kk,\n.lang-flag.kk-KZ {\n background-position: 0 -180px;\n}\n.lang-flag.fi,\n.lang-flag.fi-FI,\n.lang-flag.sv-FI {\n background-position: -16px -180px;\n}\n.lang-flag.zh,\n.lang-flag.zh-CN {\n background-position: -32px -180px;\n}\n.lang-flag.ja,\n.lang-flag.ja-JP {\n background-position: 0 -192px;\n}\n.lang-flag.es-MX {\n background-position: -16px -192px;\n}\n\n.checkbox-in-modal {\n margin-top: 10px;\n display: flex;\n align-items: center;\n .right-text {\n margin-left: 10px;\n }\n}\n\n.username-tip {\n height: 20px;\n color: @white;\n padding: 0 10px;\n position: absolute;\n z-index: 900;\n display: none;\n pointer-events: none;\n transition: opacity 0.1ms ease-out;\n opacity: 0;\n &.active {\n display: block;\n opacity: 1;\n }\n}\n\n.dlg-adv-options {\n z-index: 13700;\n .content-block {\n padding: 0;\n }\n .picker-3d { \n .picker-item {\n padding: 0;\n text-align: left;\n font-size: 16px;\n }\n }\n .picker-center-highlight {\n width: 100%;\n left: 0;\n right: 0;\n }\n}\n\n.dlg-macros-request {\n .dialog-text {\n word-break: break-word;\n }\n}\n// Skeleton of document\n\n@keyframes flickerAnimation {\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n@-o-keyframes flickerAnimation{\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n@-moz-keyframes flickerAnimation{\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n@-webkit-keyframes flickerAnimation{\n 0% { opacity:0.1; }\n 50% { opacity:1; }\n 100% { opacity:0.1; }\n}\n\n.doc-placeholder-container {\n position: absolute;\n width: 100%;\n height: 100%;\n z-index: 6000;\n top: 0;\n left: 0;\n overflow: hidden;\n}\n\n// Statusbar\n\n.statusbar .statusbar--box-tabs > ul > .locked a {\n box-shadow: inset 0 2px red;\n}\n\n// Fonts List \n\n.font-item {\n .item-inner {\n overflow: hidden;\n &:after {\n left: 16px;\n }\n }\n}\n\n// Functions List \n\n.cell-editor {\n overflow: initial;\n}\n\n.functions-list {\n max-height: 200px;\n width: 360px;\n overflow-y: auto;\n overflow-x: hidden;\n background-color: @background-primary;\n &__mobile {\n position: absolute;\n right: 0;\n left: 0;\n width: 100%;\n box-shadow: 0px 10px 10px -10px rgba(0, 0, 0, 0.3);\n .list {\n margin: 0;\n ul:before {\n display: none;\n }\n .item-content {\n padding-left: 0;\n }\n .item-inner {\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left) - var(--menu-list-offset));\n }\n .item-title {\n font-size: 15px;\n }\n }\n }\n}\n\n// Function List Popover\n\n#idx-functions-list {\n width: 350px;\n .popover-inner {\n .navbars {\n .right .link {\n font-weight: 600;\n }\n .navbar-bg {\n background: @background-secondary;\n &::after {\n background: @background-menu-divider;\n }\n }\n }\n .page-function-info{\n .navbar {\n .navbar-bg::after {\n background: @background-menu-divider;\n }\n .navbar-inner{\n background: @background-secondary;\n .title {\n color: @text-normal;\n }\n .right .link {\n color: @brandColor;\n font-weight: 600;\n }\n .icon-back::after {\n color: @brandColor;\n }\n }\n }\n }\n }\n}\n\n// Highlight Colors\n\n.highlight-palette {\n width: 100%;\n}\n\n.highlight-color {\n min-width: 10px;\n min-height: 34px;\n margin: 1px;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset;\n position: relative;\n flex-grow: 1;\n &_active:after {\n content: ' ';\n position: absolute;\n width: 100%;\n height: 100%;\n box-shadow: 0 0 0 1px #ffffff, 0 0 0 4px #446995;\n z-index: 1;\n border-radius: 1px;\n }\n}\n#idx-celleditor.expanded {\n .functions-list {\n &__mobile {\n top: 70px;\n }\n }\n}\n\n.popover__functions {\n box-shadow: 0px 10px 100px rgba(0, 0, 0, 0.3);\n .view {\n transition: .2s height;\n }\n .popover-angle.on-bottom {\n display: none;\n }\n}\n\n.target-function-list {\n position: absolute; \n left: 0;\n top: 0;\n bottom: 0;\n width: 0; \n height: 100%;\n}\n\n.dropdown-list {\n &__placeholder {\n opacity: 0.6;\n .item-inner {\n border-bottom: 1px solid var(--f7-list-item-border-color);\n }\n }\n}\n\n// Swiper\n.swiper-wrapper .swiper-slide .list ul {\n background-color: transparent;\n}\n\n.swiper-pagination-bullet {\n background: @background-menu-divider;\n opacity: 1;\n &-active {\n background: @text-secondary;\n }\n}\n\n.swiper-pagination-bullets {\n position: fixed;\n width: 100%;\n bottom: 9px;\n .swiper-pagination-bullet {\n margin: 0 5.5px;\n }\n}\n\n.preview-cell-style {\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n width: 104px;\n height: 44px;\n background-color: @fill-white;\n border-radius: 4px;\n border: 0.5px solid @background-menu-divider;\n}\n\n// Sharing Settings\n.sharing-placeholder {\n height: 100%;\n}\n\n// Comment List\n.sheet-modal .page-current-comment {\n padding-bottom: 60px;\n}\n\n// Picker\n.picker-columns {\n justify-content: space-around;\n}\n\n.row-picker {\n .col-50 {\n color: @text-secondary;\n text-align: center;\n }\n}\n\n// Block \n.block {\n margin-top: 8px;\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 16px;\n}\n\n// Inputs List \n.block-title + .list, .block-title + .block, .block-title + .card, .block-title + .timeline, .block-title + .block-header {\n margin: 0;\n}\n\n.inputs-list {\n margin-bottom: 0;\n\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n position: relative;\n background: var(--f7-list-bg-color);\n }\n}\n\n.list input[type='password'], \n.list input[type='text'] {\n background: transparent;\n}\n\n// Dialog with password\n.dialog {\n .modal-password {\n position: relative;\n\n &__icon {\n position: absolute;\n right: 4px;\n top: calc(50% - 12.5px);\n }\n\n .item-input-wrap {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n }\n}\n\n// Version History \n.version-history { \n &__user {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n min-width: 40px;\n min-height: 40px;\n text-align: center;\n border-radius: 50px;\n line-height: 40px;\n color: var(--fill-white);\n font-size: 18px;\n }\n}\n\n// Review change\n.accept-reject .link {\n margin-right: 20px;\n}\n\n// Beta badge\n.beta-badge {\n font-size: 12px;\n font-weight: 400;\n line-height: 16px;\n letter-spacing: 0.5px;\n color: @fill-white;\n padding: 2px 4px;\n border-radius: 4px;\n}\n\n\n\n\n\n\n\n","\n.device-ios .app-layout {\n @blockTitleColor: #6d6d72;\n @item-border-color: #c8c7cc;\n @darkGreen: #40865c;\n @text-normal: var(--text-normal);\n @background-warning: #FF9F0A;\n\n --f7-navbar-link-color: @brandColor;\n --f7-subnavbar-link-color: @brandColor;\n --f7-navbar-text-color: @text-normal;\n --f7-navbar-title-line-height: 44px;\n --f7-navbar-link-line-height: 44px;\n --f7-navbar-title-font-size: 17px;\n\n --f7-list-bg-color: @background-primary;\n --f7-navbar-bg-color: @toolbar-background;\n\n --f7-tabbar-link-inactive-color: @toolbar-segment;\n\n --f7-radio-active-color: @brandColor;\n --f7-toggle-active-color: @brandColor;\n --f7-range-bar-active-bg-color: @brandColor;\n\n --f7-list-button-text-color: @brandColor;\n\n --f7-list-item-border-color: @background-menu-divider;\n\n --f7-page-bg-color: @background-tertiary;\n --f7-list-item-title-text-color: @text-normal;\n --f7-list-item-text-text-color: @text-normal;\n --f7-list-item-subtitle-text-color: @text-secondary;\n --f7-label-text-color: @text-normal;\n --f7-list-item-after-text-color: @text-normal;\n --f7-input-text-color: @text-normal;\n --f7-block-title-text-color: @text-secondary;\n --f7-input-placeholder-color: @text-secondary;\n\n --f7-list-chevron-icon-color: @text-tertiary;\n --f7-searchbar-search-icon-color: @text-tertiary;\n --f7-searchbar-input-clear-button-color: @text-tertiary;\n\n --f7-toggle-inactive-border-color: @background-menu-divider;\n --f7-toggle-inactive-bg-color: @background-menu-divider;\n\n --f7-actions-button-border-color: @background-menu-divider;\n --f7-popover-bg-color: @background-primary;\n --f7-dialog-bg-color-rgb: @background-secondary;\n --f7-dialog-title-text-color: @text-normal;\n --f7-dialog-text-color: @text-normal;\n --f7-dialog-button-text-color: @brandColor;\n --f7-dialog-border-divider-color: @background-menu-divider;\n\n --f7-subnavbar-border-color: @background-menu-divider;\n --f7-list-border-color: @background-menu-divider;\n\n --f7-picker-item-text-color: rgba(var(--text-normal), 0.45);\n --f7-picker-item-selected-text-color: @text-normal;\n\n --f7-block-text-color: @text-secondary;\n\n --f7-theme-color-shade: @background-primary;\n --f7-fab-pressed-bg-color: @background-primary;\n --f7-input-clear-button-color: @text-tertiary;\n\n // Main Toolbar\n #editor-navbar.navbar .right a + a,\n #editor-navbar.navbar .left a + a {\n margin-left: 0;\n }\n\n .navbar, .navbar-bg, .subnavbar {\n a.btn-doc-back {\n width: 22px;\n }\n background-color: var(--f7-navbar-bg-color);\n .title {\n font-weight: 600;\n color: @text-normal;\n //line-height: 17px;\n //max-height: 34px;\n //overflow: hidden;\n }\n .navbar-inner, .subnavbar-inner {\n z-index: auto;\n }\n .sheet-close {\n width: 44px;\n height: 44px;\n display: flex;\n justify-content: center;\n }\n }\n\n .subnavbar {\n .icon-back {\n color: @brandColor;\n }\n }\n\n .popover__titled {\n .list {\n &:first-child, &:last-child {\n ul {\n border-radius: 0;\n }\n\n li:first-child, li:last-child {\n > label {\n border-radius: 0;\n }\n }\n }\n }\n\n .popover-inner {\n //border-radius: var(--f7-popover-border-radius);\n\n > .view {\n border-radius: var(--f7-popover-border-radius);\n }\n }\n\n .navbar-bg {\n //-webkit-backdrop-filter: none;\n backdrop-filter: none;\n &::after {\n background: @background-menu-divider;\n }\n }\n\n // .list:first-child {\n // li:first-child {\n // a {\n // border-radius: 0;\n // }\n // }\n // }\n\n .list:last-child {\n li:last-child {\n &:after {\n content: '';\n position: absolute;\n background-color: var(--f7-navbar-border-color, var(--f7-bars-border-color));\n display: block;\n //z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n }\n }\n }\n }\n\n .popover {\n li:last-child {\n .segmented a {\n &:first-child {\n border-radius: var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius);\n }\n\n &:last-child {\n border-radius: 0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0;\n }\n }\n }\n\n .page-content {\n > .list {\n &:last-child {\n // margin-bottom: 30px;\n }\n }\n }\n }\n\n .popover-arrow:after {\n background: rgba(0, 0, 0, 0.9);\n }\n\n .list {\n .item-content {\n .color-preview {\n width: 22px;\n height: 8px;\n display: inline-block;\n margin-top: 21px;\n box-sizing: border-box;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset;\n background: @fill-white;\n }\n .item-after {\n .color-preview {\n width: 75px;\n height: 30px;\n margin-top: -3px;\n }\n }\n }\n .item-inner {\n padding-top: 7px;\n .item-after {\n .after-start {\n margin: 0 5px;\n }\n .segmented {\n min-width: 90px;\n margin-left: 10px;\n }\n }\n }\n .buttons {\n .item-inner {\n padding-top: 0;\n padding-bottom: 0;\n align-items: stretch;\n > .row {\n width: 100%;\n align-items: stretch;\n .button {\n flex: 1;\n border: none;\n height: inherit;\n border-radius: 0;\n font-size: 17px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n }\n }\n }\n .list-input-right input {\n text-align: right;\n }\n }\n\n .links-list a:after, .list .item-inner:after, .simple-list li:after {\n background-color: var(--f7-list-item-border-color);\n bottom: 0;\n content: \"\";\n display: block;\n height: 1px;\n left: 0;\n position: absolute;\n right: auto;\n top: auto;\n transform: scaleY(calc(1/var(--f7-device-pixel-ratio)));\n transform-origin: 50% 100%;\n width: 100%;\n z-index: 15;\n }\n\n .tab-buttons {\n width: 100%;\n display: flex;\n flex-wrap: nowrap;\n align-self: center;\n .tab-link {\n display: block;\n width: 100%;\n line-height: 26px;\n position: relative;\n overflow: hidden;\n -webkit-box-flex: 1;\n border: 1px solid @toolbar-segment;\n text-decoration: none;\n text-align: center;\n margin: 0;\n padding: 0 1px;\n height: 29px;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n font-family: inherit;\n cursor: pointer;\n outline: 0;\n font-weight: 600;\n color: @brandColor;\n &:first-child {\n border-radius: 5px 0 0 5px;\n border-left-width: 1px;\n border-left-style: solid;\n }\n &:last-child {\n border-radius: 0 5px 5px 0;\n }\n &.tab-link-active {\n // background: @brandColor;\n // color: @fill-white;\n background: @toolbar-segment;\n color: @brand-text-on-brand;\n i.icon {\n background-color: @brand-text-on-brand;\n }\n }\n }\n }\n\n .button {\n border: 1px solid @brandColor;\n color: @brandColor;\n text-decoration: none;\n text-align: center;\n display: block;\n // border-radius: 5px;\n line-height: 27px;\n box-sizing: border-box;\n background: 0 0;\n padding: 0 10px;\n margin: 0;\n height: 29px;\n white-space: nowrap;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 14px;\n font-family: inherit;\n cursor: pointer;\n outline: 0;\n }\n\n .button-fill {\n color: @brandColor;\n background-color: @background-primary;\n }\n\n .button-red {\n color: @text-error;\n background-color: @background-primary;\n }\n\n .buttons-list {\n li {\n border: 0;\n border-radius: 0;\n height: 43px;\n min-height: 43px;\n font-size: 17px;\n text-transform: initial;\n padding: 0;\n box-shadow: none;\n }\n }\n\n .button-red .list-button {\n color: @text-error;\n }\n\n .list-button {\n position: initial;\n }\n\n .block-title {\n position: relative;\n overflow: hidden;\n margin: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n text-transform: uppercase;\n line-height: 1;\n color: @blockTitleColor;\n margin: 35px 15px 10px;\n }\n\n .shapes {\n .page-content {\n background: @fill-white;\n }\n }\n\n .dialog {\n background-color: var(--f7-dialog-bg-color-rgb);\n }\n\n #color-picker {\n .right-block {\n .button-round {\n .icon {\n height: 30px;\n width: 30px;\n }\n }\n }\n }\n\n .content-block {\n color: @blockTitleColor;\n }\n\n .dataview, #add-table, #add-shape, #add-slide, #add-chart {\n &.page-content, .page-content {\n background-color: @background-tertiary;\n }\n }\n\n // input[type=\"number\"]\n\n input[type=\"number\"] {\n &::placeholder,\n &::-webkit-input-placeholder,\n &::-moz-placeholder,\n &:-moz-placeholder,\n &:-ms-input-placeholder\n {\n color: @darkGreen;\n }\n }\n\n // Regional Settings\n\n .regional-settings {\n .item-title-row {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n .item-title {\n margin-left: 20px;\n white-space: normal;\n }\n }\n }\n\n // Find and Replace \n\n .navbar {\n .searchbar {\n background: var(--f7-navbar-bg-color);\n }\n .searchbar-input-wrap {\n position: relative;\n margin-right: 10px;\n height: 28px;\n }\n .buttons-row-replace a {\n color: @brandColor;\n }\n }\n\n .searchbar {\n input {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n display: block;\n border: none;\n appearance: none;\n border-radius: 5px;\n font-family: inherit;\n color: @text-normal;\n font-size: 14px;\n font-weight: 400;\n padding: 0 8px;\n background-color: @background-button;\n padding: 0 36px 0 28px;\n\n &::placeholder {\n color: @text-tertiary;\n }\n }\n\n .number-search-results {\n position: absolute;\n font-size: 13px;\n font-weight: 400;\n line-height: 18px;\n right: 26px;\n color: @text-tertiary;\n top: 4.5px;\n z-index: 100;\n }\n }\n\n .searchbar-inner {\n &__left {\n margin-right: 10px;\n justify-content: center;\n }\n &__right {\n .buttons-row a.next {\n margin-left: 15px;\n }\n }\n }\n\n .searchbar-expandable.searchbar-enabled {\n &.replace {\n .searchbar-inner {\n &__right {\n width: 28%;\n }\n }\n }\n } \n\n @media(max-width: 550px) {\n .navbar {\n .searchbar-input-wrap {\n margin-right: 0; \n }\n }\n .searchbar-expandable.searchbar-enabled {\n top: 0;\n .searchbar-inner {\n &__center {\n flex-direction: column;\n }\n &__right {\n flex-direction: column-reverse;\n margin-left: 10px;\n }\n }\n &.replace {\n height: 88px;\n .searchbar-inner {\n height: 100%;\n &__center {\n .searchbar-input-wrap {\n margin: 8px 0;\n }\n }\n &__right {\n width: auto;\n height: 100%;\n justify-content: space-between;\n .buttons-row-replace {\n height: 50%;\n }\n }\n }\n }\n } \n }\n\n .actions-button {\n background: @background-secondary;\n --f7-actions-button-border-color: @background-menu-divider;\n }\n \n .actions-button-text {\n // height: 57px;\n // line-height: 57px;\n font-size: 20px;\n color: @text-normal;\n white-space: normal;\n text-overflow: ellipsis;\n }\n\n input.modal-text-input {\n box-sizing: border-box;\n height: 26px;\n background: @background-primary;\n margin: 0;\n margin-top: 15px;\n padding: 0 5px;\n border: 1px solid @text-tertiary;\n border-radius: 0;\n width: 100%;\n font-size: 14px;\n font-family: inherit;\n display: block;\n box-shadow: 0 0 0 transparent;\n -webkit-appearance: none;\n -moz-appearance: none;\n -ms-appearance: none;\n appearance: none;\n }\n\n // Fonts List \n\n .font-item {\n .item-content {\n padding-left: 0;\n }\n }\n\n // Toggle Icon \n\n // .toggle-icon {\n // background: transparent;\n // }\n\n // Edit Comment Popup\n\n .edit-comment-popup {\n .navbar .title {\n line-height: normal;\n }\n }\n\n // Version History\n .version-history {\n &__title {\n font-style: normal;\n font-weight: 400;\n font-size: 13px;\n line-height: 18px;\n color: @text-secondary;\n margin-top: 16px;\n margin-bottom: 4px;\n }\n\n &__btn {\n font-style: normal;\n font-weight: 600;\n font-size: 15px;\n line-height: 20px;\n letter-spacing: -0.24px;\n text-transform: uppercase;\n color: @brandColor;\n background: transparent;\n outline: none;\n border: 0;\n padding: 0;\n margin-top: 22px;\n width: auto;\n }\n\n &__list {\n ul {\n background: @background-primary;\n }\n \n .item-title {\n font-weight: 600;\n font-size: 13px;\n line-height: 18px;\n color: @text-normal;\n letter-spacing: -0.08px;\n }\n\n .item-media, .item-inner {\n padding-top: 10px;\n padding-bottom: 10px;\n }\n\n .item-link .item-title-row:before {\n display: none;\n }\n\n .item-subtitle {\n font-style: normal;\n font-weight: 400;\n font-size: 11px;\n line-height: 13px;\n color: @text-secondary;\n margin-top: 3px;\n letter-spacing: 0.06px;\n }\n }\n }\n\n .version-history__item_active {\n background-color: var(--canvas-ruler-margins-background);\n }\n\n .btn-close-history {\n font-style: normal;\n font-weight: 400;\n font-size: 17px;\n line-height: 22px;\n letter-spacing: -0.41px;\n color: @brandColor;\n margin-left: 10px;\n }\n\n .beta-badge {\n background-color: @background-warning;\n margin-left: 10px;\n }\n}\n\n\n","\n.device-android .app-layout {\n @tabLinkColor: rgba(255,255,255,.7);\n @red: #f44336;\n @white: #fff;\n @darkGreen: #40865c;\n @darkGrey: #757575;\n @text-normal: var(--text-normal);\n @brand-text-on-brand: var(--brand-text-on-brand);\n @touchColor: rgba(255,255,255,0.1);\n\n --f7-navbar-shadow-image: none;\n --f7-theme-color: @brandColor;\n\n --f7-navbar-bg-color: @toolbar-background;\n --f7-navbar-link-color: @fill-white;\n --f7-navbar-text-color: @fill-white;\n --f7-navbar-height: 56px;\n\n --f7-list-bg-color: @background-primary;\n --f7-subnavbar-bg-color: @toolbar-background;\n --f7-subnavbar-link-color: @toolbar-icons;\n --f7-subnavbar-text-color: @fill-white;\n --f7-subnavbar-height: 56px;\n\n --f7-radio-active-color: @brandColor;\n --f7-range-bar-active-bg-color: @brandColor;\n --f7-range-knob-color: @brandColor;\n --f7-range-knob-size: 16px;\n\n --f7-list-item-after-text-color: @text-normal;\n\n --f7-link-highlight-color: transparent;\n --f7-link-touch-ripple-color: @touchColor;\n\n --f7-actions-bg-color: @background-secondary;\n --f7-actions-button-border-color: @background-menu-divider;\n --f7-popover-bg-color: @background-secondary;\n\n --f7-dialog-bg-color: @background-secondary;\n --f7-dialog-text-color: @text-secondary;\n --f7-dialog-title-text-color: @text-normal;\n --f7-dialog-button-text-color: @brandColor;\n\n --f7-picker-item-text-color: rgba(var(--text-normal), 0.45);\n --f7-picker-item-selected-text-color: @text-normal;\n\n --f7-input-bg-color: @background-primary;\n --f7-input-placeholder-color: @text-secondary;\n --f7-input-text-color: @text-normal;\n \n --f7-block-text-color: @text-secondary;\n --f7-dialog-border-radius: 0;\n --f7-sheet-border-radius: 0;\n --f7-popover-border-radius: 4px;\n --f7-actions-border-radius: 0;\n --f7-box-shadow: 0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);\n --f7-popover-box-shadow: var(--f7-box-shadow);\n\n --f7-toggle-active-bg-color: @brandColor;\n --f7-toggle-active-border-color: @brandColor;\n\n --f7-navbar-title-margin-left: 20px;\n --f7-navbar-title-margin-right: 20px;\n\n .button {\n --f7-touch-ripple-color: transparent;\n }\n\n .segmented {\n .button {\n --f7-touch-ripple-color: var(--f7-list-link-pressed-bg-color);\n }\n }\n\n --f7-input-focused-border-color: @brandColor;\n --f7-label-focused-text-color: @brandColor;\n\n .navbar {\n --f7-touch-ripple-color: @touchColor;\n\n .sheet-close {\n width: 56px;\n height: 56px;\n display: flex;\n justify-content: center;\n }\n &-inner {\n background: var(--f7-navbar-bg-color);\n background-image: var(--f7-navbar-bg-image, var(--f7-bars-bg-image));\n background-color: var(--f7-navbar-bg-color, var(--f7-bars-bg-color));\n }\n }\n\n .page.page-with-subnavbar.page-with-logo {\n .page-content {\n --f7-page-navbar-offset: var(--f7-navbar-height);\n }\n }\n\n .page {\n --f7-text-color: @text-normal;\n --f7-list-item-title-text-color: @text-normal;\n --f7-list-item-text-text-color: @text-normal;\n --f7-list-item-subtitle-text-color: @text-secondary;\n --f7-block-title-text-color: @text-secondary;\n --f7-label-text-color: @text-normal;\n --f7-page-bg-color: @background-tertiary;\n --f7-list-item-border-color: @background-menu-divider;\n --f7-list-chevron-icon-color: @text-tertiary;\n --f7-actions-button-text-color: @text-normal;\n --f7-subnavbar-border-color: @background-menu-divider;\n --f7-list-border-color: @background-menu-divider;\n }\n\n .add-popup {\n .view {\n .add-image, .inputs-list {\n ul:after {\n display: none;\n }\n }\n }\n }\n\n .coauth__sheet {\n max-height: 65%;\n }\n\n // Buttons\n .segmented {\n .decrement, .increment {\n display: flex;\n border: none;\n min-width: 40px;\n margin-left: 0;\n border-radius: 0;\n height: 32px;\n i.icon-expand-down {\n background: @brandColor;\n }\n }\n label {\n color: @text-normal;\n margin: 0 5px;\n line-height: 32px;\n }\n }\n .button {\n --f7-button-text-color: @brandColor;\n color: @brandColor;\n text-align: center;\n display: block;\n border-radius: 2px;\n line-height: 36px;\n box-sizing: border-box;\n appearance: none;\n background: 0 0;\n margin: 0;\n height: 36px;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n text-transform: uppercase;\n font-family: inherit;\n cursor: pointer;\n min-width: 64px;\n padding: 0 8px;\n position: relative;\n overflow: hidden;\n outline: 0;\n -webkit-transition-duration: .3s;\n transition-duration: .3s;\n -webkit-transform: translate3d(0,0,0);\n transform: translate3d(0,0,0);\n }\n\n .button-fill {\n color: @brand-text-on-brand;\n background-color: transparent;\n }\n\n .button-raised {\n box-shadow: 0 1px 3px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.24);\n }\n\n .button-red {\n color: @brand-text-on-brand;\n background-color: @text-error;\n }\n\n .buttons-list {\n ul {\n background-color: @background-tertiary;\n &::before, &::after {\n display: none;\n }\n li {\n margin: 20px 16px;\n color: @fill-white;\n border-radius: 2px;\n text-transform: uppercase;\n height: 36px;\n min-height: 36px;\n font-size: 14px;\n }\n }\n }\n\n .table-presets {\n .button {\n min-width: 0;\n }\n }\n .button-fill .list-button {\n background-color: @brandColor;\n color: @brand-text-on-brand;\n height: 36px;\n text-align: center;\n line-height: 36px;\n text-transform: uppercase;\n font-size: 14px;\n font-weight: 500;\n border-radius: 2px;\n // margin: 20px 16px;\n margin: 0;\n }\n .button-raised .list-button {\n box-shadow: 0 1px 3px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.24);\n }\n .button-red .list-button {\n background-color: @text-error;\n }\n // Tabs\n .tab-buttons {\n position: relative;\n display: flex;\n height: 100%;\n width: 100%;\n justify-content: space-between;\n .tab-link {\n justify-content: center;\n height: 100%;\n box-sizing: border-box;\n padding-left: 0;\n padding-right: 0;\n font-size: 14px;\n font-weight: 500;\n text-transform: uppercase;\n align-items: center;\n color: @tabLinkColor;\n i.icon {\n opacity: 0.5;\n }\n &.tab-link-active {\n color: @fill-white;\n i.icon {\n opacity: 1;\n background-color: @fill-white;\n }\n }\n }\n .tab-link-highlight {\n --f7-tabbar-link-active-border-color: @toolbar-icons;\n position: absolute;\n left: 0;\n bottom: 0;\n height: 3px;\n }\n }\n\n // List\n .list {\n &.inputs-list {\n margin: 0;\n\n .item-input.item-content {\n padding-left: 0;\n }\n \n .item-input, .item-link {\n .item-inner {\n display: block;\n\n .item-title, .item-label {\n width: 100%;\n font-size: 12px;\n }\n \n .item-input-wrap {\n margin-left: 0;\n }\n }\n }\n }\n\n .buttons {\n box-sizing: border-box;\n min-height: 48px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n\n .item-content {\n width: 100%;\n\n .item-inner {\n padding-bottom: 0;\n padding-top: 0;\n\n .row {\n width: 100%;\n --f7-cols-per-row: 1;\n align-items: flex-start;\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n\n .button {\n flex: 1;\n font-size: 17px;\n margin-left: 5px;\n display: flex;\n align-items: center;\n justify-content: center;\n &:first-child {\n margin-left: 0;\n }\n }\n }\n }\n }\n }\n\n .item-content {\n .color-preview {\n width: 30px;\n height: 30px;\n border-radius: 4px;\n margin-top: -3px;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, .15) inset;\n background-color: @fill-white;\n &.auto { \n background-color: @autoColor;\n }\n }\n }\n }\n\n .item-input:not(.item-input-outline) .item-content::before, .item-input:not(.item-input-outline).item-content::before {\n background: transparent;\n }\n\n .links-list a:after, .list .item-inner:after, .simple-list li:after {\n background-color: var(--f7-list-item-border-color);\n bottom: 0;\n content: \"\";\n display: block;\n height: 1px;\n left: 0;\n position: absolute;\n right: auto;\n top: auto;\n transform: scaleY(calc(1/var(--f7-device-pixel-ratio)));\n transform-origin: 50% 100%;\n width: 100%;\n z-index: 15;\n }\n\n .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content, .media-list:not(.inset):not(.inset-md):not(.menu-list) li > .item-link, .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content, .list:not(.inset):not(.inset-md):not(.menu-list) .media-item > .item-link {\n border-radius: 0;\n }\n\n // Color palette\n\n #color-picker {\n .right-block {\n .button-round {\n background-color: @brandColor;\n }\n }\n }\n\n // Regional Settings\n\n .regional-settings {\n .list {\n .item-inner {\n margin-left: 16px;\n }\n .item-title-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n flex-direction: row-reverse;\n .item-title {\n white-space: normal;\n }\n }\n }\n }\n\n // Find and Replace \n\n .searchbar-inner {\n &__center {\n flex-wrap: wrap;\n }\n // &__left {\n // padding-top: 4px;\n // }\n }\n\n .navbar {\n .searchbar-input-wrap {\n height: 32px;\n margin-right: 10px;\n margin: 4px 0;\n }\n\n .navbar-inner {\n overflow: initial;\n }\n\n .left {\n margin: 0;\n }\n\n .title {\n margin-left: var(--f7-navbar-title-margin-left);\n margin-right: var(--f7-navbar-title-margin-left);\n }\n }\n\n .searchbar {\n input {\n box-sizing: border-box;\n width: 100%;\n display: block;\n border: none;\n appearance: none;\n border-radius: 0;\n font-family: inherit;\n color: @fill-white;\n font-size: 16px;\n font-weight: 400;\n padding: 0;\n border-bottom: 1px solid @fill-white;\n height: 100%;\n padding: 0 40px 0 24px;\n background-color: transparent;\n background-repeat: no-repeat;\n background-position: 0 center;\n opacity: 1;\n background-size: 24px 24px;\n transition-duration: .3s;\n .encoded-svg-background('');\n &::placeholder {\n color: @fill-white;\n }\n }\n\n .input-clear-button {\n width: 18px;\n height: 18px;\n top: 7px;\n margin: 0;\n\n &:after {\n color: @fill-white;\n font-size: 19px;\n line-height: 19px;\n }\n }\n\n .number-search-results {\n position: absolute;\n right: 26px;\n top: 4px;\n font-size: 16px;\n font-weight: 400;\n line-height: 24px;\n }\n }\n\n .searchbar-icon {\n &:after {\n color: @fill-white;\n font-size: 19px;\n }\n }\n \n .navbar {\n .searchbar-expandable.searchbar-enabled {\n top: 0;\n // height: 100%;\n .searchbar-inner {\n height: 100%;\n padding: 0;\n\n &__center {\n flex-direction: column;\n }\n\n &__right {\n flex-direction: column-reverse;\n }\n }\n\n &.replace {\n height: 96px;\n }\n }\n a.link {\n padding: 0 16px;\n }\n a.link.searchbar-enable {\n i.icon-search {\n background-color: @toolbar-icons;\n }\n }\n a.icon-only {\n width: auto;\n height: 56px;\n }\n .buttons-row-replace a {\n color: @fill-white;\n padding: 0;\n }\n .searchbar .buttons-row {\n align-self: flex-start;\n }\n }\n\n @media(max-width: 550px) {\n .searchbar-expandable.searchbar-enabled {\n .searchbar-inner {\n &__left {\n margin-right: 33px;\n }\n }\n }\n }\n\n .actions-button-text {\n cursor: pointer;\n line-height: 48px;\n font-size: 16px;\n // color: rgba(0,0,0,.87);\n color: @text-normal;\n // color: var(--f7-actions-button-text-color, );\n }\n\n @media (min-width: 496px) {\n .actions-modal {\n width: 100%;\n left: auto;\n margin-left: 0;\n }\n }\n\n input.modal-text-input {\n box-sizing: border-box;\n height: 36px;\n background: #fff;\n margin: 0;\n margin-top: 15px;\n padding: 0;\n border: none;\n width: 100%;\n font-size: 16px;\n font-family: inherit;\n display: block;\n box-shadow: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n -ms-appearance: none;\n appearance: none;\n -webkit-transition-duration: .2s;\n transition-duration: .2s;\n }\n\n .input-field {\n .inputs-list {\n margin: 15px 0 0;\n ul {\n background: none;\n &::before, &::after {\n display: none;\n }\n }\n .item-input, .item-inner {\n padding: 0;\n margin: 0;\n }\n }\n }\n\n // Fonts List \n\n .font-item {\n .item-radio:not(.item-radio-icon-end) > .icon-radio {\n margin-right: 0;\n }\n }\n\n // Navbar link settings \n\n .navbar-link-settings, .navbar-dropdown-list {\n .navbar-inner {\n background: @background-primary;\n\n .icon-back {\n color: @text-normal;\n }\n }\n .title, a {\n color: @text-normal;\n }\n }\n\n // Popover styles\n .popover {\n box-shadow: var(--f7-box-shadow);\n\n &.popover__titled {\n .popover-arrow:after {\n background: @toolbar-background;\n }\n }\n\n &.document-menu, &.popover__functions {\n .popover-arrow:after {\n background: @background-secondary;\n }\n }\n }\n // Version History\n .page-version-history {\n --f7-page-bg-color: @background-primary;\n }\n\n .version-history {\n &__title {\n font-style: normal;\n font-weight: 500;\n font-size: 14px;\n line-height: 20px;\n color: @brandColor;\n margin-top: 16px;\n margin-bottom: 4px;\n }\n\n &__btn {\n box-shadow: 0px 0.25px 1px rgba(0, 0, 0, 0.039), 0px 0.85px 3px rgba(0, 0, 0, 0.19);\n border-radius: 6px;\n background: @background-primary;\n padding: 6px 20px;\n font-style: normal;\n font-weight: 500;\n font-size: 16px;\n line-height: 20px;\n letter-spacing: 0.25px;\n color: @brandColor;\n margin-top: 10px;\n border: 0;\n width: auto;\n }\n\n &__list {\n ul:before, ul:after {\n display: none;\n }\n\n .item-title {\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n line-height: 24px;\n color: @text-normal;\n letter-spacing: 0.15px;\n }\n\n .item-inner {\n padding-top: 10px;\n padding-bottom: 10px;\n }\n\n .item-inner::before {\n content: '';\n position: absolute;\n background-color: @background-menu-divider;\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n\n .item-media {\n padding-top: 12px;\n padding-bottom: 12px;\n min-width: 40px;\n max-width: 40px;\n }\n\n .item-link .item-title-row:before {\n display: none;\n }\n\n .item-subtitle {\n color: @text-secondary;\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 16px;\n letter-spacing: 0.5px;\n }\n }\n }\n\n .version-history__item_active {\n background-color: @background-tertiary;\n }\n\n .btn-close-history {\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n line-height: 24px;\n letter-spacing: 0.15px;\n color: @toolbar-icons;\n margin-left: 16px;\n }\n\n .beta-badge {\n background-color: @brand-secondary;\n margin-left: 8px;\n }\n}\n","// @common-image-path - defined in webpack config\n\n.device-ios {\n .theme-type-dark {\n i.icon {\n &.icon-logo {\n background: ~\"url(@{common-image-path}/header/logo-android.svg)\" no-repeat center;\n }\n }\n }\n i.icon {\n &.icon_mask {\n background-color: white;\n }\n &.icon-logo {\n width: 100px;\n height: 14px;\n background: ~\"url(@{common-image-path}/header/logo-ios.svg)\" no-repeat center;\n }\n &.icon-prev {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-next {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-edit {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-show-password {\n width: 25px;\n height: 25px;\n .encoded-svg-mask('', @text-secondary);\n }\n &.icon-hide-password {\n width: 25px;\n height: 25px;\n .encoded-svg-mask('', @text-secondary);\n }\n &.icon-return {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n }\n}\n","// @common-image-path - defined in webpack config\n\n.device-android {\n i.icon {\n &.icon_mask {\n background-color: @text-normal;\n }\n &.icon-logo {\n width: 100px;\n height: 14px;\n background: ~\"url(@{common-image-path}/header/logo-android.svg) no-repeat center\";\n }\n &.icon-prev {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-next {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('');\n &:after {\n display: none;\n }\n }\n &.icon-show-password {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-secondary);\n }\n &.icon-hide-password {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-secondary);\n }\n }\n .navbar {\n i.icon {\n &.icon-collaboration {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-back {\n color: @toolbar-icons;\n }\n &.icon-edit {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-close {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-done-disabled {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-tertiary);\n }\n &.icon-done {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-search {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-version-history {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n }\n }\n}\n","@import \"./ios/icons\";\n@import \"./material/icons\";\n\ni.icon {\n &.icon-paste {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-copy {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-cut {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-prev:after, &.icon-next:after {\n content: none;\n }\n &.icon-collaboration {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-cancellation {\n width: 24px;\n height: 24px;\n .encoded-svg-background('');\n }\n &.icon-remove-style {\n width: 24px;\n height: 24px;\n .encoded-svg-background('')\n }\n &.icon-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n // Formats \n \n &.icon-format-pdf {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n &.icon-format-pdfa {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n\n // Numbers\n\n &.icon-numbers-1 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-2 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-3 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-4 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-5 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-6 {\n .encoded-svg-background('');\n }\n\n &.icon-numbers-7 {\n .encoded-svg-background('');\n }\n\n &.icon-sharing-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n &.icon-info {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @brandColor);\n }\n\n &.icon-help {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-about {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n &.icon-search {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n &.icon-version-history {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('')\n }\n\n // Text orientation\n\n &.icon-text-orientation-horizontal {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-anglecount {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-angleclock {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-vertical {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-rotateup {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-text-orientation-rotatedown {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n}\n","// Data view\n\n.dataview {\n .row {\n justify-content: space-around;\n }\n\n ul {\n padding: 0 10px;\n list-style: none;\n\n li {\n display: inline-block;\n }\n }\n\n .row.list:last-child li:not(.active):last-child::after {\n content: none;\n }\n\n .row.list:last-child li.active:last-child, .active {\n position: relative;\n z-index: 1;\n\n &::after {\n content: '';\n position: absolute;\n width: 22px;\n height: 22px;\n right: -5px;\n left: auto;\n bottom: -5px;\n transform: none;\n .encoded-svg-mask('');\n }\n }\n}","@statusBarBorderColor: #cbcbcb;\n\n.navbar {\n .searchbar {\n background-color: var(--f7-navbar-bg-color);\n\n .buttons-row {\n align-self: center;\n display: flex;\n }\n\n .searchbar-bg {\n .hairline(bottom, @statusBarBorderColor);\n }\n }\n\n .searchbar-inner {\n justify-content: space-between;\n &__center {\n display: flex;\n align-items: center;\n width: 81%;\n }\n &__right {\n display: flex;\n align-items: center;\n }\n }\n\n .searchbar-expandable {\n transition-duration: 0s;\n }\n\n .buttons-row-replace {\n display: flex;\n flex-direction: column;\n align-items: center;\n // width: max-content;\n width: 100%;\n justify-content: center;\n a {\n font-size: 15px;\n height: auto;\n display: block;\n line-height: normal;\n\n &:before{\n display: none;\n }\n }\n }\n\n @media(max-width: 550px)\n {\n .searchbar-expandable.searchbar-enabled {\n .searchbar-inner {\n &__left {\n min-width: 22px;\n max-width: 22px;\n }\n &__center {\n flex-direction: column;\n }\n &__right {\n flex-direction: column-reverse;\n }\n }\n &.replace {\n top: 0;\n .searchbar-inner {\n height: 100%;\n &__left {\n align-self: flex-start;\n }\n }\n }\n } \n }\n}\n","\n// RTL, LTR\n.ltr(@ruleset) {\n & when not (@rtl) {\n @ruleset();\n }\n}\n.rtl(@ruleset) {\n & when (@rtl) {\n @ruleset();\n }\n}\n.if-ios-theme(@ruleset) {\n & when (@includeIosTheme) {\n @ruleset();\n }\n}\n.if-md-theme(@ruleset) {\n & when (@includeMdTheme) {\n @ruleset();\n }\n}\n.if-dark-theme(@ruleset) {\n & when(@includeDarkTheme) {\n @ruleset();\n }\n}\n.ios-vars(@ruleset) {\n & when (@includeIosTheme) {\n .ios {\n @ruleset();\n }\n }\n}\n.md-vars(@ruleset) {\n & when (@includeMdTheme) {\n .md {\n @ruleset();\n }\n }\n}\n.md-color-vars(@ruleset) {\n & when (@includeMdTheme) {\n .md,\n .md .dark,\n .md [class*='color-'] {\n @ruleset();\n }\n }\n}\n.dark-vars(@ruleset) {\n & when (@includeDarkTheme) {\n .dark,\n &.dark {\n @ruleset();\n }\n }\n}\n.light-vars(@ruleset) {\n & when (@includeLightTheme) {\n & {\n @ruleset();\n }\n }\n}\n// Scrollable\n.scrollable() {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n}\n.not-scrollable() {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\n// Disabled\n.disabled() {\n opacity: 0.55;\n pointer-events: none;\n}\n// Modal Backdrops\n.modal-backdrop() {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.4);\n z-index: 13000;\n visibility: hidden;\n opacity: 0;\n transition-duration: 400ms;\n &.not-animated {\n transition-duration: 0ms;\n }\n &.backdrop-in {\n visibility: visible;\n opacity: 1;\n }\n}\n\n// Hairlines\n.hairline-pseudo(@color, @top, @right, @bottom, @left) {\n content: '';\n position: absolute;\n background-color: @color;\n display: block;\n z-index: 15;\n top: @top;\n right: @right;\n bottom: @bottom;\n left: @left;\n}\n.hairline(@position, @color) when (@position = top) {\n &:before {\n .hairline-pseudo(@color, 0, auto, auto, 0);\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline(@position, @color) when (@position = left) {\n &:before {\n .hairline-pseudo(@color, 0, auto, auto, 0);\n width: 1px;\n height: 100%;\n transform-origin: 0% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline(@position, @color) when (@position = bottom) {\n &:after {\n .hairline-pseudo(@color, auto, auto, 0, 0);\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline(@position, @color) when (@position = right) {\n &:after {\n .hairline-pseudo(@color, 0, 0, auto, auto);\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n }\n}\n.hairline-remove-top-bottom() {\n &:before,\n &:after {\n display: none !important;\n }\n}\n// For right and bottom\n.hairline-remove(@position) when not (@position = left) and not (@position = top) {\n &:after {\n display: none !important;\n }\n}\n// For left and top\n.hairline-remove(@position) when not (@position = right) and not (@position = bottom) {\n &:before {\n display: none !important;\n }\n}\n// For right and bottom\n.hairline-color(@position, @color) when not (@position = left) and not (@position = top) {\n &:after {\n background-color: @color;\n }\n}\n// For left and top\n.hairline-color(@position, @color) when not (@position = right) and not (@position = bottom) {\n &:before {\n background-color: @color;\n }\n}\n// MD Active Active Links Highlights\n.link-highlight() {\n &:before {\n content: '';\n width: 152%;\n height: 152%;\n left: -26%;\n top: -26%;\n position: absolute;\n background-image: radial-gradient(\n circle at center,\n var(--f7-link-highlight-color) 66%,\n rgba(255, 255, 255, 0) 66%\n );\n background-repeat: no-repeat;\n background-position: center;\n background-size: 100% 100%;\n opacity: 0;\n pointer-events: none;\n transition-duration: 300ms;\n transition-property: opacity;\n }\n &.icon-only:before,\n &.ripple-inset:before,\n &.searchbar-disable-button:before,\n &.input-clear-button:before,\n &.notification-close-button:before {\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n background-image: radial-gradient(\n circle at center,\n var(--f7-link-highlight-color) 71%,\n rgba(255, 255, 255, 0) 71%\n );\n }\n &.active-state:before {\n opacity: 1;\n transition-duration: 150ms;\n }\n}\n// MD Bars Shadow\n\n.core-icons-font() {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n\n.ios-translucent-bars(@color) {\n .ios-translucent-bars & {\n @supports (backdrop-filter: blur(20px)) {\n background-color: rgba(@color, var(--f7-bars-translucent-opacity));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n }\n}\n.ios-translucent-modals(@color) {\n .ios-translucent-modals & {\n @supports (backdrop-filter: blur(20px)) {\n background-color: rgba(@color, 0.8);\n backdrop-filter: saturate(180%) blur(20px);\n }\n }\n}\n\n.no-scrollbar() {\n scrollbar-width: none;\n scrollbar-color: transparent;\n &::-webkit-scrollbar {\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n }\n &::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n }\n &::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n }\n}\n","\n.device-ios {\n .document-menu {\n @contextMenuBg: rgba(0, 0, 0, 0.9);\n @modalHairlineColor: rgba(230, 230, 230, 0.9);\n @modalButtonColor: rgba(200, 200, 200, 0.9);\n\n background-color: @contextMenuBg;\n border-radius: 8px;\n\n .popover-angle {\n &:after {\n background: @contextMenuBg;\n }\n }\n\n .list-block {\n font-size: 14px;\n white-space: pre;\n\n &:first-child {\n ul {\n .hairline-remove(left);\n //border-radius: 7px 0 0 7px;\n }\n\n li:first-child a {\n //border-radius: 7px 0 0 7px;\n border-radius: 0;\n }\n }\n\n //&:last-child {\n // ul {\n // .hairline-remove(right);\n // border-radius: 0 7px 7px 0;\n // }\n // li:last-child a{\n // border-radius: 0 7px 7px 0;\n // }\n //}\n\n //&:first-child:last-child {\n // li:first-child:last-child a, ul:first-child:last-child {\n // border-radius: 7px;\n // }\n //}\n\n .item-link {\n display: inline-block;\n\n html:not(.watch-active-state) &:active, &.active-state {\n //.transition(0ms);\n background-color: #d9d9d9;\n .item-inner {\n .hairline-color(right, transparent);\n }\n }\n\n html.phone & {\n padding: 0 10px;\n }\n }\n\n .list-button {\n color: @white;\n line-height: 36px;\n\n .hairline(right, @modalHairlineColor);\n }\n\n // List items\n li {\n display: inline-flex;\n }\n\n // Last-childs\n li {\n &:last-child {\n .list-button {\n .hairline-remove(right);\n }\n }\n\n &:last-child, &:last-child li:last-child {\n .item-inner {\n .hairline-remove(right);\n }\n }\n\n li:last-child, &:last-child li {\n .item-inner {\n .hairline(right, @modalHairlineColor);\n }\n }\n }\n\n //.no-hairlines();\n //.no-hairlines-between()\n }\n }\n}","\n.md {\n .document-menu {\n //line-height: 1 !important;\n\n .popover-inner {\n overflow: hidden;\n }\n\n .list-block {\n white-space: pre;\n\n ul {\n height: 48px;\n }\n\n li {\n display: inline-block;\n }\n\n .list-button {\n color: @text-normal;\n }\n\n //.item-link {\n // html.phone & {\n //padding: 0 10px;\n //}\n //}\n }\n }\n}\n","@import './ios/contextmenu';\n@import './material/contextmenu';\n\n\n.document-menu {\n width: auto;\n}\n\nhtml.phone .document-menu .list-block .list-button {\n padding: 0 10px;\n}",".device-ios {\n .wrap-comment {\n height: calc(100% - 60px);\n }\n .add-comment-popup, .add-reply-popup, .add-comment-dialog, .add-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 34px);\n }\n }\n .edit-comment-popup, .edit-reply-popup, .edit-comment-dialog, .edit-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 52px);\n }\n }\n .comment-list {\n .reply-item {\n .item-inner:after {\n content: none !important;\n }\n &:before {\n content: '';\n position: absolute;\n left: auto;\n bottom: 0;\n right: auto;\n top: 0;\n height: 1px;\n width: 100%;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n -webkit-transform-origin: 50% 100%;\n transform-origin: 50% 100%;\n }\n }\n }\n}",".device-android {\n .wrap-comment {\n height: calc(100% - 72px);\n }\n .add-comment-popup, .add-reply-popup, .add-comment-dialog, .add-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 41px);\n }\n }\n .edit-comment-popup, .edit-reply-popup, .edit-comment-dialog, .edit-reply-dialog {\n .wrap-textarea {\n height: calc(100% - 56px);\n }\n }\n .wrap-comment, .comment-list, .reply-list {\n .comment-header, .reply-header {\n display: flex;\n .initials {\n border-radius: 50px;\n color: @fill-white;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: 10px;\n font-size: 14px;\n }\n }\n }\n\n .wrap-comment {\n .comment-header {\n align-items: center;\n .initials {\n height: 30px;\n width: 30px;\n }\n }\n .wrap-textarea {\n .input:not(.input-outline):after {\n content: none;\n }\n }\n }\n\n #add-comment-dialog, #edit-comment-dialog, #add-reply-dialog, #edit-reply-dialog {\n .dialog {\n --f7-dialog-text-color: @black;\n .done {\n padding-right: 6px;\n }\n }\n }\n\n .comment-list {\n ul:after, .item-inner:after, li:last-child li .item-inner:after {\n content: none;\n }\n .comment-header {\n .left {\n display: flex;\n align-items: center;\n .initials {\n width: 40px;\n height: 40px;\n font-size: 18px;\n }\n }\n }\n }\n .reply-list {\n .reply-header {\n .left {\n display: flex;\n .initials {\n margin-top: 5px;\n width: 24px;\n height: 24px;\n font-size: 11px;\n }\n }\n }\n }\n\n .edit-comment-popup, .edit-reply-popup, #edit-comment-dialog, #edit-reply-dialog {\n .wrap-comment {\n .comment-header, .reply-header {\n .initials {\n height: 40px;\n width: 40px;\n }\n }\n }\n }\n\n #view-comment-popover {\n .toolbar-bottom:after {\n content: none;\n }\n }\n\n}","@comment-date: #6d6d72;\n@swipe-icon: #E5E5E5;\n\n@import './ios/comments';\n@import './material/comments';\n\n.wrap-comment {\n padding: 16px 24px 0 16px;\n background-color: @background-tertiary;\n \n .comment-date {\n color: @text-secondary;\n }\n .wrap-textarea {\n margin-top: 6px;\n }\n .name {\n font-weight: 600;\n font-size: 16px;\n color: @text-normal;\n }\n .reply-date {\n color: @text-secondary;\n }\n}\n\n.wrap-textarea {\n .input {\n height: 100%;\n }\n\n textarea {\n font-size: 14px;\n margin-top: 0;\n height: 100%;\n padding: 5px 0;\n color: @text-normal;\n }\n}\n\n#add-comment-dialog, #edit-comment-dialog, #add-reply-dialog, #edit-reply-dialog {\n .dialog {\n --f7-dialog-width: 400px;\n z-index: 13700;\n .dialog-inner {\n padding: 0;\n height: 400px;\n .wrap-comment {\n .name, .comment-date, .reply-date {\n text-align: left;\n }\n .wrap-textarea {\n textarea {\n color: @text-normal;\n width: 100%;\n }\n }\n }\n }\n }\n}\n\n.comment-list {\n .item-content .item-inner {\n padding-right: 0;\n padding-bottom: 0;\n padding-top: 16px;\n .comment-header {\n display: flex;\n justify-content: space-between;\n padding-right: 16px;\n .right {\n display: flex;\n justify-content: flex-end;\n width: 70px;\n .comment-resolve {\n margin-right: 10px;\n }\n }\n }\n .reply-header {\n display: flex;\n justify-content: space-between;\n padding-right: 16px;\n }\n }\n .item-title {\n width: 100%;\n }\n .user-name {\n font-size: 16px;\n line-height: 22px;\n color: @text-normal;\n margin: 0;\n font-weight: 700;\n }\n .comment-date, .reply-date {\n font-size: 12px;\n line-height: 18px;\n color: @text-secondary;\n margin: 0;\n }\n .comment-quote {\n color: @text-secondary;\n border-left: 1px solid @text-secondary;\n padding-left: 10px;\n padding-right: 16px;\n margin: 5px 0;\n font-size: 14px;\n }\n .comment-text, .reply-text {\n color: @text-normal;\n font-size: 14px;\n line-height: 25px;\n margin: 0;\n max-width: 100%;\n padding-right: 15px;\n word-break: break-all;\n pre {\n white-space: pre-wrap;\n overflow-wrap: break-word;\n }\n }\n .reply-list {\n padding-left: 26px;\n }\n .reply-item {\n padding-right: 26px;\n }\n}\n\n.edit-comment-popup, .add-reply-popup, .edit-reply-popup {\n z-index: 20000;\n}\n\n#view-comment-sheet {\n background-color: @fill-white;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n height: 45%;\n box-shadow: 0 1px 10px rgba(0, 0, 0, 0.2), 0 4px 5px rgba(0, 0, 0, 0.12);\n webkit-transition: height 200ms;\n transition: height 200ms;\n .top {\n height: 90%;\n }\n .swipe-container {\n display: flex;\n justify-content: center;\n height: 40px;\n background-color: @background-primary;\n .icon-swipe {\n margin-top: 8px;\n width: 40px;\n height: 4px;\n background: @background-menu-divider;\n border-radius: 2px;\n }\n }\n}\n\n#view-comment-popover, #view-comment-sheet {\n .toolbar {\n position: fixed;\n background-color: @background-primary;\n box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.2), 0px 4px 5px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14);\n .link {\n --f7-toolbar-link-color: @brandColor;\n }\n .toolbar-inner {\n padding: 0 16px;\n }\n .btn-add-reply {\n padding: 0;\n min-width: 80px;\n font-size: 16px;\n }\n .comment-navigation {\n min-width: 62px;\n display: flex;\n justify-content: space-between;\n .link {\n padding: 0 12px;\n }\n }\n }\n}\n\n#view-comment-popover {\n background-color: @background-primary;\n .pages {\n position: absolute;\n }\n .page {\n border-radius: var(--f7-popover-border-radius);\n .page-content {\n padding: 16px 16px 60px 0;\n border-radius: var(--f7-popover-border-radius);\n }\n }\n .comment-list {\n .item-content {\n .item-inner {\n .comment-header, .reply-header {\n padding-right: 0;\n }\n }\n }\n }\n .toolbar {\n position: absolute;\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n }\n}\n\n.page-current-comment {\n position: relative;\n .page-content {\n background-color: @background-primary;\n }\n .comment-list {\n ul {\n &:before, &:after {\n content: none;\n }\n .item-content .item-inner {\n padding-top: 0;\n .reply-list .item-content .item-inner {\n padding-top: 13px;\n }\n }\n }\n }\n}\n\n.dialog.modal-in {\n z-index: 14000;\n max-height: 100%;\n overflow: auto;\n\n .item-content .item-input-wrap::after {\n background-color: @brandColor;\n }\n}\n\n.dialog-backdrop.backdrop-in {\n z-index: 13600;\n}\n\n.no-comments {\n text-align: center;\n margin-top: 35px;\n color: @text-normal;\n}\n\n.actions-modal.modal-in {\n z-index: 13700;\n .actions-group::after {\n background-color: @background-menu-divider;\n }\n}\n\n.actions-backdrop.backdrop-in {\n z-index: 13600;\n}","\n// Colors\n@themeColorLight: #a2bdde;\n@navBarIconColor: #fff;\n@listButtonBorderColor: rgba(0,0,0,0.15);\n\n\n.device-android {\n --f7-navbar-bg-color: @brandColor;\n --f7-navbar-link-color: @text-link;\n --f7-navbar-text-color: @text-normal;\n --f7-list-button-border-color: @listButtonBorderColor;\n\n // Main Toolbar\n #editor-navbar.navbar .right {\n padding-right: 4px;\n }\n #editor-navbar.navbar .right a.link,\n #editor-navbar.navbar .left a.link {\n padding: 0 13px;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n width: auto;\n }\n\n // For filter options\n .radio-checkbox-item {\n .icon.icon-checkbox {\n width: 20px;\n height: 20px;\n border-radius: 20px;\n border: 2px solid var(--f7-checkbox-inactive-color);\n }\n label.item-checkbox input[type='checkbox']:checked ~ .icon-checkbox {\n border-color: @brandColor;\n background-color: transparent;\n }\n label.item-content i.icon.icon-checkbox:after {\n content: ' ';\n position: absolute;\n width: 10px;\n height: 10px;\n left: 50%;\n top: 50%;\n margin-left: -5px;\n margin-top: -5px;\n background-color: @brandColor;\n border-radius: 100%;\n }\n }\n\n .move-sheet {\n .navbar .navbar-inner {\n background: @background-primary;\n .title {\n color: @text-normal;\n }\n }\n }\n\n .tooltip-cell-data {\n border-radius: 0;\n }\n}","\n.device-ios {\n // For filter options\n .radio-checkbox-item {\n label.item-content input[type=checkbox]:checked ~ .item-inner {\n background: no-repeat center;\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2013%2010'%3E%3Cpolygon%20fill%3D'%2340865c'%20points%3D'11.6%2C0%204.4%2C7.2%201.4%2C4.2%200%2C5.6%204.4%2C10%204.4%2C10%204.4%2C10%2013%2C1.4%20'%2F%3E%3C%2Fsvg%3E\");\n background-position: calc(100% - 15px) center;\n background-size: 13px 10px;\n }\n .icon.icon-checkbox {\n display: none;\n }\n }\n\n .actions-move-sheet .actions-button-text{\n color: @brandColor;\n }\n\n .tooltip-cell-data {\n border-radius: 4px;\n }\n\n .all-list.popover {\n .view {\n border-radius: var(--f7-popover-border-radius);\n }\n .page-content {\n border-radius: var(--f7-popover-border-radius);\n\n & > .list:last-child {\n margin-bottom: 0;\n }\n }\n .list {\n overflow: hidden;\n }\n }\n}\n","// Icons\n\n.device-ios {\n i.icon {\n &.icon-edit-settings {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-undo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-redo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-reader {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-download {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-print {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-plus {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-list {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('')\n }\n &.icon-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n \n &.icon-feedback {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-versions {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-color {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-fill-color {\n width: 22px;\n height: 22px;\n background-size: 130%;\n .encoded-svg-mask('');\n }\n &.icon-text-align-center {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-jast {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-just {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-valign-top {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-valign-middle {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-valign-bottom {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-expand-down {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-link {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-insimage {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-sort {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-image-library {\n width: 22px;\n height: 22px;\n .encoded-svg-background('icons_for_svg');\n }\n &.icon-cell-wrap {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n &.icon-function {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @text-normal);\n }\n // Reorder\n\n &.icon-move-backward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-forward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-background {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-foreground {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-cell-style {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n\n // Presets of table borders\n\n &.icon-table-borders-all {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-none {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-inner {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-outer {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-left {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-center {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-right {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-top {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-middle {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-bottom {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-dup {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-ddown {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n // Cell formats\n\n &.icon-format-general {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-number {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-integer {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-scientific {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-accounting {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-currency {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-date {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-time {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-percentage {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-text {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n // Filter sort\n\n &.sortdown {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.sortup {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n // Collaboration\n \n &.icon-users {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-app-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-table-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask(' ');\n }\n //Comments\n &.icon-menu-comment {\n width: 30px;\n height: 30px;\n .encoded-svg-mask('', @text-tertiary);\n }\n &.icon-resolve-comment {\n width: 30px;\n height: 30px;\n .encoded-svg-mask('', @text-tertiary);\n }\n &.icon-resolve-comment.check {\n width: 30px;\n height: 30px;\n .encoded-svg-mask('', @brandColor);\n }\n &.icon-insert-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n //Insert\n &.icon-add-chart {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-formula {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-shape {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-other {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n }\n\n .tab-link-active {\n i.icon {\n &.icon-add-chart {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-formula {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-shape {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-add-other {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-link {\n background: #fff;\n }\n }\n }\n}\n","// Icons\n\n.device-android {\n i.icon {\n &.icon-expand-up {\n width: 17px;\n height: 17px;\n .encoded-svg-mask('');\n }\n &.icon-expand-down {\n width: 17px;\n height: 17px;\n .encoded-svg-mask('');\n }\n &.icon-edit {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-edit-settings {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-reader {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-download {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-print {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-feedback {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n } \n &.icon-versions {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-color {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-center {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-jast {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-left {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-right {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-align-just {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-valign-top {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-valign-middle {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-text-valign-bottom {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-link {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-insimage, &.icon-image-library {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-sort {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-function {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @text-normal);\n }\n &.icon-app-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-table-settings {\n width: 24px;\n height: 24px;\n .encoded-svg-mask(' ');\n }\n\n\n // Reorder\n\n &.icon-move-backward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-forward {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-background {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-move-foreground {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n // Presets of table borders\n\n &.icon-table-borders-all {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-none {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-inner {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-outer {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-left {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-center {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-right {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-top {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-middle {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-bottom {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-dup {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n &.icon-table-borders-ddown {\n width: 28px;\n height: 28px;\n .encoded-svg-mask('');\n }\n\n // Cell formats\n\n &.icon-format-general {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-number {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-integer {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-scientific {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-accounting {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-currency {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-date {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-time {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-percentage {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.icon-format-text {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n // Filter sort\n\n &.sortdown {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n &.sortup {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('');\n }\n\n // Collaboration\n \n &.icon-users {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n //Comments\n &.icon-menu-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-tertiary);\n }\n &.icon-resolve-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @text-tertiary);\n }\n &.icon-resolve-comment.check {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-done-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-insert-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('');\n }\n &.icon-done-comment-white {\n width: 24px;\n height: 24px;\n .encoded-svg-background('');\n }\n &.icon-plus {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @fill-white);\n }\n &.icon-add-custom-format {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @brandColor);\n }\n &.icon-check {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @fill-white);\n }\n }\n\n .tabbar {\n .link.tab-link {\n i.icon {\n &.icon-link {\n background: #fff;\n }\n }\n }\n }\n\n // Overwrite color for toolbar\n .navbar {\n i.icon {\n &.icon-logo {\n width: 100px;\n height: 14px;\n //background: url('../../../../common/mobile/resources/img/header/logo-android.svg') no-repeat center;\n }\n &.icon-undo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-redo {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-burger {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-plus {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-settings {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-prev {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-next {\n width: 20px;\n height: 20px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-expand-down {\n width: 22px;\n height: 22px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-add-chart {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-add-formula {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-add-shape {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-add-image {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-add-other {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n &.icon-close-comment {\n width: 24px;\n height: 24px;\n .encoded-svg-mask('', @toolbar-icons);\n }\n }\n }\n}\n","\n.chart-types .thumb {\n //@relativepath: '../../resources/img';\n &.bar-normal {\n background-image: url('@{app-image-path}/charts/chart-03.png');\n }\n &.bar-stacked {\n background-image: url('@{app-image-path}/charts/chart-02.png');\n }\n &.bar-pstacked {\n background-image: url('@{app-image-path}/charts/chart-01.png');\n }\n &.line-normal {\n background-image: url('@{app-image-path}/charts/chart-06.png');\n }\n &.line-stacked {\n background-image: url('@{app-image-path}/charts/chart-05.png');\n }\n &.line-pstacked {\n background-image: url('@{app-image-path}/charts/chart-04.png');\n }\n &.hbar-normal {\n background-image: url('@{app-image-path}/charts/chart-09.png');\n }\n &.hbar-stacked {\n background-image: url('@{app-image-path}/charts/chart-08.png');\n }\n &.hbar-pstacked {\n background-image: url('@{app-image-path}/charts/chart-07.png');\n }\n &.area-normal {\n background-image: url('@{app-image-path}/charts/chart-12.png');\n }\n &.area-stacked {\n background-image: url('@{app-image-path}/charts/chart-11.png');\n }\n &.area-pstacked {\n background-image: url('@{app-image-path}/charts/chart-10.png');\n }\n &.pie {\n background-image: url('@{app-image-path}/charts/chart-13.png');\n }\n &.doughnut {\n background-image: url('@{app-image-path}/charts/chart-14.png');\n }\n &.pie3d {\n background-image: url('@{app-image-path}/charts/chart-22.png');\n }\n &.scatter {\n background-image: url('@{app-image-path}/charts/chart-15.png');\n }\n &.stock {\n background-image: url('@{app-image-path}/charts/chart-16.png');\n }\n &.line3d {\n background-image: url('@{app-image-path}/charts/chart-21.png');\n }\n &.bar3dnormal {\n background-image: url('@{app-image-path}/charts/chart-17.png');\n }\n &.bar3dstack {\n background-image: url('@{app-image-path}/charts/chart-18.png');\n }\n &.bar3dpstack {\n background-image: url('@{app-image-path}/charts/chart-19.png');\n }\n &.hbar3dnormal {\n background-image: url('@{app-image-path}/charts/chart-25.png');\n }\n &.hbar3dstack {\n background-image: url('@{app-image-path}/charts/chart-24.png');\n }\n &.hbar3dpstack {\n background-image: url('@{app-image-path}/charts/chart-23.png');\n }\n &.bar3dpsnormal {\n background-image: url('@{app-image-path}/charts/chart-20.png');\n }\n}\n\ni.icon {\n // Formats\n\n &.icon-format-xlsx {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n &.icon-format-xltx {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n &.icon-format-ods {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n &.icon-format-ots {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n &.icon-format-csv {\n width: 22px;\n height: 22px;\n .encoded-svg-background('');\n }\n}\n","\n@cellEditorHeight: 30px;\n@cellEditorExpandedHeight: 70px;\n@contentBackColor: #fff;\n@gray-light: #f1f1f1;\n@gray-darker: #848484; //rgb(132, 132, 132)\n@statusBarBorderColor: #cbcbcb;\n\n#idx-celleditor {\n box-sizing: border-box;\n * {\n box-sizing: border-box;\n }\n\n display: flex;\n z-index: 5001;\n\n height: @cellEditorHeight;\n min-height: @cellEditorHeight;\n background-color: @contentBackColor;\n\n &.expanded {\n min-height: @cellEditorExpandedHeight;\n //height: @cellEditorExpandedHeight;\n transition: min-height .1s;\n }\n\n &:after {\n content: '';\n position: absolute;\n // background-color: @border-regular-control;\n background-color: @background-menu-divider;\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n\n #box-cell-name {\n display: inline-flex;\n // background-color: var(--f7-navbar-bg-color);\n // background-color: @fill-white;\n\n // .md & {\n // background-color: @gray-light;\n // }\n }\n\n #idx-cell-name {\n display: inline-block;\n width: 90px;\n padding: 0 4px;\n border: 0 none;\n line-height: 30px;\n //font-size: 17px;\n text-align: center;\n\n color: @text-normal;\n\n &[disabled] {\n color: @gray-darker;\n opacity: 0.5;\n }\n }\n\n .phone & {\n #idx-cell-name {\n display: none;\n }\n }\n\n #idx-btn-function {\n height: @cellEditorHeight;\n line-height: @cellEditorHeight;\n padding: 0 10px;\n }\n\n #idx-cell-content {\n padding: 3px 3px;\n line-height: 1.428571429;\n // color: #000;\n color: @text-normal;\n vertical-align: middle;\n // background-color: @contentBackColor;\n min-height: @cellEditorHeight;\n height: 100%;\n width: 100%;\n }\n\n .caret {\n &::after {\n content: '';\n position: absolute;\n top: 8px;\n left: 6px;\n width: 8px;\n height: 8px;\n background-color: transparent;\n // border: solid 1px black;\n border: solid 1px @brandColor;\n border-bottom: none;\n border-right: none;\n\n transition: transform 0.2s ease;\n transform: rotate(-135deg);\n }\n\n width: 30px;\n height: 16px;\n }\n\n &.expanded {\n .caret {\n &::after {\n transform: rotate(45deg) translate(3px, 3px);\n }\n }\n }\n\n .ce-group {\n background-color: @background-secondary;\n }\n\n .group--content {\n position: relative;\n .hairline(left, @background-menu-divider);\n }\n}\n","@statusbar-height: 30px;\n@fontColor: #000;\n\n.statusbar {\n .hairline(top, @background-menu-divider);\n height: @statusbar-height;\n min-height: @statusbar-height;\n background-color: @background-tertiary;\n display: flex;\n\n transition: top 400ms;\n .box-tab {\n display: flex;\n }\n\n .tab {\n border: 0 none;\n border-radius: 0;\n font-size: 18px;\n line-height: inherit;\n min-width: 48px;\n\n display: inline-block;\n // padding: 0 10px;\n text-align: center;\n height: 100%;\n position: relative;\n \n &.active {\n background-color: @background-secondary;\n font-weight: 600;\n a {\n box-shadow: 0px 2px 0 #49795d inset;\n }\n }\n\n .hairline(right, @background-menu-divider);\n }\n\n .statusbar--box-tabs {\n overflow-x: auto;\n overflow-y: hidden;\n &::-webkit-scrollbar {\n -webkit-appearance: none;\n display: none;\n // width: 0;\n // height: 0;\n }\n > ul {\n padding: 0;\n margin: 0;\n height: 100%;\n white-space: nowrap;\n overflow-x: scroll;\n // position: absolute;\n // left: 0;\n // top: 0;\n > li {\n a {\n font-size: 12px;\n padding: 0 10px 0;\n line-height: @statusbar-height;\n color: @text-normal;\n height: 100%;\n display: block;\n }\n }\n }\n }\n\n .tab {\n i.icon {\n width: 18px;\n height: 18px;\n &.icon-plus.bold{\n \n // @source: '';\n // .encoded-svg-mask(@source, @fontColor);\n // background-image: none;\n .encoded-svg-mask('')\n }\n\n &.icon-list.bold {\n .encoded-svg-mask('')\n }\n }\n }\n \n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/apps/spreadsheeteditor/mobile/css/app.css b/apps/spreadsheeteditor/mobile/css/app.css new file mode 100644 index 0000000000..68bba445d4 --- /dev/null +++ b/apps/spreadsheeteditor/mobile/css/app.css @@ -0,0 +1,6 @@ +/*! + * + * * Version: 8.0.1 (build: 0) + * + */#ws-canvas-outer{bottom:0;left:0;position:absolute;right:0;top:0}#ws-canvas{border:0}#ws-canvas-graphic,#ws-canvas-graphic-overlay,#ws-canvas-overlay{border:0;left:0;position:absolute;top:0;z-index:1}#ws-v-scrollbar{bottom:18px;overflow:hidden;position:absolute;right:0;top:-1px;width:19px;z-index:10}#ws-v-scroll-helper{width:1px}#ws-h-scrollbar{bottom:0;height:19px;left:0;overflow:hidden;position:absolute;right:18px;z-index:10}#ws-h-scroll-helper{height:1px}#ws-scrollbar-corner{border:0;bottom:0;height:18px;position:absolute;right:0;width:18px;z-index:10}#ws-h-scrollbar .jspHorizontalBar,#ws-h-scrollbar .jspTrack,#ws-scrollbar-corner,#ws-v-scrollbar .jspTrack,#ws-v-scrollbar .jspVerticalBar{background-color:#DCE2E8}#ws-h-scrollbar .jspDrag,#ws-v-scrollbar .jspDrag{background-color:#C0C0C0}#ws-h-scrollbar .jspDrag.jspActive,#ws-h-scrollbar .jspDrag.jspHover,#ws-v-scrollbar .jspDrag.jspActive,#ws-v-scrollbar .jspDrag.jspHover{background-color:#808080}#ws-v-scrollbar .jspVerticalBar{border-left:1px solid #c1c6cc;width:7px}#ws-v-scrollbar .jspTrack{width:8px}#ws-h-scrollbar .jspHorizontalBar{border-top:1px solid #c1c6cc;height:7px}#ws-h-scrollbar .jspTrack{height:8px} +/*# sourceMappingURL=app.css.map*/ \ No newline at end of file diff --git a/apps/spreadsheeteditor/mobile/css/app.css.map b/apps/spreadsheeteditor/mobile/css/app.css.map new file mode 100644 index 0000000000..8989be3a90 --- /dev/null +++ b/apps/spreadsheeteditor/mobile/css/app.css.map @@ -0,0 +1 @@ +{"version":3,"file":"css/app.css","mappings":";;;;GAOA,iBAKC,QAAS,CAHT,MAAO,CADP,iBAAkB,CAGlB,OAAQ,CADR,KAGD,CAEA,WACC,QACD,CAEA,iEACC,QAAS,CAET,MAAO,CADP,iBAAkB,CAElB,KAAM,CACN,SACD,CAOA,gBAKC,WAAY,CACZ,eAAgB,CALhB,iBAAkB,CAClB,OAAQ,CAER,QAAS,CADT,UAAW,CAIX,UACD,CAEA,oBACC,SACD,CAEA,gBAEC,QAAS,CACT,WAAY,CACZ,MAAO,CAEP,eAAgB,CALhB,iBAAkB,CAIlB,UAAW,CAEX,UACD,CAEA,oBACC,UACD,CAEA,qBAOC,QAAS,CAJT,QAAS,CAET,WAAY,CAJZ,iBAAkB,CAClB,OAAQ,CAER,UAAW,CAIX,UACD,CAIA,2IAPC,wBAYD,CAEA,kDAEC,wBACD,CACA,0IAIC,wBACD,CAIA,gCAEC,6BAA8B,CAD9B,SAED,CACA,0BACC,SACD,CAIA,kCAEC,4BAA6B,CAD7B,UAED,CACA,0BACC,UACD","sources":["webpack://documenteditor/../../../sdkjs/cell/css/main-mobile.css"],"sourcesContent":["@charset \"UTF-8\";\n\n/*\n * Worksheet canvas\n * --------------------------------------------------------\n */\n\n#ws-canvas-outer {\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n}\n\n#ws-canvas {\n\tborder: 0;\n}\n\n#ws-canvas-overlay, #ws-canvas-graphic, #ws-canvas-graphic-overlay {\n\tborder: 0;\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tz-index: 1;\n}\n\n/*\n * Worksheet scroll bars\n * --------------------------------------------------------\n */\n\n#ws-v-scrollbar {\n\tposition: absolute;\n\tright: 0;\n\twidth: 19px;\n\ttop: -1px;\n\tbottom: 18px;\n\toverflow: hidden;\n\tz-index: 10;\n}\n\n#ws-v-scroll-helper {\n\twidth: 1px;\n}\n\n#ws-h-scrollbar {\n\tposition: absolute;\n\tbottom: 0;\n\theight: 19px;\n\tleft: 0;\n\tright: 18px;\n\toverflow: hidden;\n\tz-index: 10;\n}\n\n#ws-h-scroll-helper {\n\theight: 1px;\n}\n\n#ws-scrollbar-corner {\n\tposition: absolute;\n\tright: 0;\n\tbottom: 0;\n\twidth: 18px;\n\theight: 18px;\n\tbackground-color: #DCE2E8;\n\tborder: 0;\n\tz-index: 10;\n}\n\n/* Scrollbars common */\n\n#ws-v-scrollbar .jspVerticalBar,\n#ws-h-scrollbar .jspHorizontalBar,\n#ws-v-scrollbar .jspTrack,\n#ws-h-scrollbar .jspTrack {\n\tbackground-color: #DCE2E8;\n}\n\n#ws-v-scrollbar .jspDrag,\n#ws-h-scrollbar .jspDrag {\n\tbackground-color: #C0C0C0;\n}\n#ws-v-scrollbar .jspDrag.jspHover,\n#ws-v-scrollbar .jspDrag.jspActive,\n#ws-h-scrollbar .jspDrag.jspHover,\n#ws-h-scrollbar .jspDrag.jspActive {\n\tbackground-color: #808080;\n}\n\n/* Vertical scrollbar */\n\n#ws-v-scrollbar .jspVerticalBar {\n\twidth: 7px;\n\tborder-left: 1px solid #C1C6CC;\n}\n#ws-v-scrollbar .jspTrack {\n\twidth: 8px;\n}\n\n/* Horizontal scrollbar */\n\n#ws-h-scrollbar .jspHorizontalBar {\n\theight: 7px;\n\tborder-top: 1px solid #C1C6CC;\n}\n#ws-h-scrollbar .jspTrack {\n\theight: 8px;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/apps/spreadsheeteditor/mobile/css/framework7-rtl.css b/apps/spreadsheeteditor/mobile/css/framework7-rtl.css new file mode 100644 index 0000000000..39f8e8d492 --- /dev/null +++ b/apps/spreadsheeteditor/mobile/css/framework7-rtl.css @@ -0,0 +1,3 @@ +:root{--f7-safe-area-left:0px;--f7-safe-area-right:0px;--f7-safe-area-top:0px;--f7-safe-area-bottom:0px;--f7-safe-area-outer-left:0px;--f7-safe-area-outer-right:0px;--f7-device-pixel-ratio:1}@supports (left:env(safe-area-inset-left)){:root{--f7-safe-area-top:env(safe-area-inset-top);--f7-safe-area-bottom:env(safe-area-inset-bottom)}:root .ios-edges,:root .ios-left-edge,:root .panel-left,:root .popup,:root .safe-area-left,:root .safe-areas,:root .sheet-modal{--f7-safe-area-left:env(safe-area-inset-left);--f7-safe-area-outer-left:env(safe-area-inset-left)}:root .ios-edges,:root .ios-right-edge,:root .panel-right,:root .popup,:root .safe-area-right,:root .safe-areas,:root .sheet-modal{--f7-safe-area-right:env(safe-area-inset-right);--f7-safe-area-outer-right:env(safe-area-inset-right)}:root .no-ios-edges,:root .no-ios-left-edge,:root .no-safe-area-left,:root .no-safe-areas{--f7-safe-area-left:0px;--f7-safe-area-outer-left:0px}:root .no-ios-edges,:root .no-ios-right-edge,:root .no-safe-area-right,:root .no-safe-areas{--f7-safe-area-right:0px;--f7-safe-area-outer-right:0px}}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){:root{--f7-device-pixel-ratio:2}}@media (-webkit-min-device-pixel-ratio:3),(min-resolution:3dppx){:root{--f7-device-pixel-ratio:3}}:root{--f7-font-size:14px;--f7-bars-translucent-opacity:0.8;--f7-bars-translucent-blur:20px}.ios{--f7-font-family:-apple-system,SF Pro Text,SF UI Text,system-ui,Helvetica Neue,Helvetica,Arial,sans-serif;--f7-line-height:1.4;--f7-bars-text-color:#000;--f7-text-color:#000;--f7-bars-bg-color:#f7f7f8;--f7-bars-bg-color-rgb:247,247,248;--f7-bars-border-color:rgba(0,0,0,0.25)}.ios .dark,.ios.dark{--f7-bars-text-color:#fff;--f7-text-color:#fff;--f7-bars-bg-color:#121212;--f7-bars-bg-color-rgb:22,22,22;--f7-bars-border-color:rgba(255,255,255,0.16)}.md{--f7-font-family:Roboto,system-ui,Noto,Helvetica,Arial,sans-serif;--f7-line-height:1.5;--f7-bars-border-color:transparent;--f7-text-color:#212121}.md .dark,.md.dark{--f7-text-color:rgba(255,255,255,0.87)}.md,.md .dark,.md [class*=color-]{--f7-bars-link-color:var(--f7-md-on-surface);--f7-bars-bg-color:var(--f7-md-surface-2);--f7-bars-bg-color-rgb:var(--f7-md-surface-2-rgb)}.text-color-primary{--f7-theme-color-text-color:var(--f7-theme-color)}.bg-color-primary{--f7-theme-color-bg-color:var(--f7-theme-color)}.border-color-primary{--f7-theme-color-border-color:var(--f7-theme-color)}.ripple-color-primary{--f7-theme-color-ripple-color:rgba(var(--f7-theme-color-rgb),0.3)}@font-face{font-family:framework7-core-icons;font-style:normal;font-weight:400;src:url("data:application/font-woff;charset=utf-8;base64, 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") format("woff")}html{direction:rtl;overscroll-behavior:none}.framework7-root,body,html{height:100%;overflow-x:hidden;position:relative;width:100%}body{-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;background:#fff;color:var(--f7-text-color);font-family:var(--f7-font-family);font-size:var(--f7-font-size);line-height:var(--f7-line-height);margin:0;overflow:hidden;overflow-y:scroll;padding:0;scrollbar-color:transparent;scrollbar-width:none;width:100%}body::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}body::-webkit-scrollbar-track{background:transparent;box-shadow:none}body::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.dark body,body.dark{background:#000}.dark{color:var(--f7-text-color)}.framework7-root{box-sizing:border-box;overflow:hidden}.framework7-initializing *,.framework7-initializing :after,.framework7-initializing :before{transition-duration:0ms!important}.device-android,.device-ios{cursor:pointer}.device-ios{touch-action:manipulation}@media (width:1024px) and (height:691px) and (orientation:landscape){.framework7-root,body,html{height:671px}}@media (width:1024px) and (height:692px) and (orientation:landscape){.framework7-root,body,html{height:672px}}*{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:none}a,input,select,textarea{outline:0}a{color:var(--f7-theme-color);text-decoration:none}.item-link,.link,a{cursor:pointer}p{margin:1em 0}.disabled{opacity:.55!important;pointer-events:none!important}html.device-full-viewport,html.device-full-viewport body{height:100vh}.ios .if-md,.ios .if-not-ios,.ios .md-only,.ios .not-ios{display:none!important}@media (width:1024px) and (height:691px) and (orientation:landscape){.ios,.ios .framework7-root,.ios body{height:671px}}@media (width:1024px) and (height:692px) and (orientation:landscape){.ios,.ios .framework7-root,.ios body{height:672px}}.md .if-ios,.md .if-not-md,.md .ios-only,.md .not-md{display:none!important}.view,.views{box-sizing:border-box;height:100%;overflow:hidden;position:relative;z-index:5000}.framework7-root>.view,.framework7-root>.views{height:100%}.view-resize-handler{cursor:col-resize;display:none;height:100%;left:var(--f7-page-master-width);margin-left:-3px;position:absolute;top:0;width:6px;z-index:1000}.view-master-detail .view-resize-handler{display:block}:root{--f7-page-master-width:320px;--f7-page-master-border-color:rgba(0,0,0,0.1);--f7-page-master-border-width:1px;--f7-page-swipeback-transition-duration:300ms;--f7-page-parallax-transition-duration:500ms;--f7-page-cover-transition-duration:450ms;--f7-page-dive-transition-duration:500ms;--f7-page-fade-transition-duration:500ms;--f7-page-flip-transition-duration:700ms;--f7-page-push-transition-duration:500ms;--f7-page-title-line-height:1.2;--f7-page-title-text-color:inherit;--f7-page-title-padding-left:16px;--f7-page-title-padding-right:16px}.ios{--f7-page-transition-duration:400ms;--f7-page-title-font-size:34px;--f7-page-title-font-weight:700;--f7-page-title-letter-spacing:-0.03em;--f7-page-title-padding-vertical:6px;--f7-page-bg-color:#efeff4}.ios .dark,.ios.dark{--f7-page-bg-color:#000}.md{--f7-page-transition-duration:400ms;--f7-page-title-font-size:34px;--f7-page-title-font-weight:500;--f7-page-title-letter-spacing:0;--f7-page-title-padding-vertical:8px}.md,.md .dark,.md [class*=color-]{--f7-page-bg-color:var(--f7-md-surface)}.dark{--f7-page-master-border-color:rgba(255,255,255,0.2)}.pages{overflow:hidden;position:relative}.page,.pages{height:100%;width:100%}.page{background-color:var(--f7-page-bg-color);box-sizing:border-box;left:0;position:absolute;top:0;transform:none;z-index:1}.page-with-navbar-large-collapsed{--f7-navbar-large-collapse-progress:1}.page-previous{pointer-events:none}.page-content{-webkit-overflow-scrolling:touch;box-sizing:border-box;height:100%;overflow:auto;padding-bottom:calc(var(--f7-page-toolbar-bottom-offset, 0px) + var(--f7-safe-area-bottom) + var(--f7-page-content-extra-padding-bottom, 0px));padding-top:calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-toolbar-top-offset, 0px) + var(--f7-page-subnavbar-offset, 0px) + var(--f7-page-searchbar-offset, 0px) + var(--f7-page-content-extra-padding-top, 0px));position:relative;z-index:1}.page-transitioning,.page-transitioning .page-opacity-effect,.page-transitioning .page-shadow-effect{transition-duration:var(--f7-page-transition-duration)}.page-transitioning-swipeback,.page-transitioning-swipeback .page-opacity-effect,.page-transitioning-swipeback .page-shadow-effect{transition-duration:var(--f7-page-swipeback-transition-duration)}.router-transition-backward .page-current,.router-transition-backward .page-next,.router-transition-forward .page-current,.router-transition-forward .page-next{pointer-events:none}.page-shadow-effect{background:linear-gradient(270deg,rgba(0,0,0,0) 0,rgba(0,0,0,0) 10%,rgba(0,0,0,.01) 50%,rgba(0,0,0,.2));left:100%;width:16px;z-index:-1}.page-opacity-effect,.page-shadow-effect{bottom:0;content:"";opacity:0;position:absolute;top:0}.page-opacity-effect{background:rgba(0,0,0,.1);left:0;width:100%;z-index:10000}.ios .page-previous{transform:translate3d(20%,0,0)}.ios .page-next{transform:translate3d(-100%,0,0)}.ios .page-current .page-shadow-effect,.ios .page-previous .page-opacity-effect,.ios .page-previous:after{opacity:1}.ios .router-transition-forward .page-next{animation:ios-page-next-to-current var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .page-next:before{animation:ios-page-element-fade-in var(--f7-page-transition-duration) forwards;background:linear-gradient(270deg,rgba(0,0,0,0) 0,rgba(0,0,0,0) 10%,rgba(0,0,0,.01) 50%,rgba(0,0,0,.2));bottom:0;content:"";left:100%;opacity:0;position:absolute;top:0;width:16px;z-index:-1}.ios .router-transition-forward .page-current{animation:ios-page-current-to-previous var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .page-current:after{animation:ios-page-element-fade-in var(--f7-page-transition-duration) forwards;background:rgba(0,0,0,.1);bottom:0;content:"";left:0;opacity:0;position:absolute;top:0;width:100%;z-index:10000}.ios .router-transition-backward .page-previous{animation:ios-page-previous-to-current var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .page-previous:after{animation:ios-page-element-fade-out var(--f7-page-transition-duration) forwards;background:rgba(0,0,0,.1);bottom:0;content:"";left:0;opacity:0;position:absolute;top:0;width:100%;z-index:10000}.ios .router-transition-backward .page-current{animation:ios-page-current-to-next var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .page-current:before{animation:ios-page-element-fade-out var(--f7-page-transition-duration) forwards;background:linear-gradient(270deg,rgba(0,0,0,0) 0,rgba(0,0,0,0) 10%,rgba(0,0,0,.01) 50%,rgba(0,0,0,.2));bottom:0;content:"";left:100%;opacity:0;position:absolute;top:0;width:16px;z-index:-1}@keyframes ios-page-next-to-current{0%{transform:translate3d(-100%,0,0)}to{transform:translateZ(0)}}@keyframes ios-page-previous-to-current{0%{transform:translate3d(20%,0,0)}to{transform:translateZ(0)}}@keyframes ios-page-current-to-previous{0%{transform:translateZ(0)}to{transform:translate3d(20%,0,0)}}@keyframes ios-page-current-to-next{0%{transform:translateZ(0)}to{transform:translate3d(-100%,0,0)}}@keyframes ios-page-element-fade-in{0%{opacity:0}to{opacity:1}}@keyframes ios-page-element-fade-out{0%{opacity:1}to{opacity:0}}.md .page-previous{transform:translate3d(0,-20px,0)}.md .page-next{opacity:0;pointer-events:none;transform:translate3d(0,128px,0)}.md .page-next.page-next-on-right{opacity:1;transform:translate3d(-100%,0,0)}.md .router-transition-forward .page-next{animation:md-page-next-to-current var(--f7-page-transition-duration) forwards cubic-bezier(0,.8,.3,1);opacity:1}.md .router-transition-forward .page-current{animation:md-page-current-to-previous var(--f7-page-transition-duration) forwards cubic-bezier(0,.8,.3,1)}.md .router-transition-backward .page-current{animation:md-page-current-to-next calc(var(--f7-page-transition-duration)/4) forwards cubic-bezier(.8,0,1,.3),md-page-current-to-next-opacity 0ms calc(var(--f7-page-transition-duration)/4) forwards}.md .router-transition-backward .page-previous{animation:md-page-previous-to-current var(--f7-page-transition-duration) forwards}@keyframes md-page-next-to-current{0%{transform:translate3d(0,128px,0)}to{transform:translateZ(0)}}@keyframes md-page-current-to-next{0%{transform:translateZ(0)}to{transform:translate3d(0,128px,0)}}@keyframes md-page-current-to-next-opacity{0%{opacity:1}to{opacity:0}}@keyframes md-page-current-to-previous{0%{transform:translateZ(0)}to{transform:translate3d(0,-20px,0)}}@keyframes md-page-previous-to-current{0%{transform:translate3d(0,-20px,0)}to{transform:translateZ(0)}}.view:not(.view-master-detail) .navbar-master-stacked,.view:not(.view-master-detail) .page-master-stacked{display:none}.view-master-detail .navbar-master,.view-master-detail .page-master{--f7-safe-area-left:0px;--f7-safe-area-outer-left:0px;border-left:var(--f7-page-master-border-width) solid var(--f7-page-master-border-color);left:auto;right:0;width:var(--f7-page-master-width)}.view-master-detail .navbar-master-detail,.view-master-detail .page-master-detail{--f7-safe-area-right:0px;--f7-safe-area-outer-right:0px;right:var(--f7-page-master-width);width:calc(100% - var(--f7-page-master-width))}.view-master-detail .page-master-detail>.navbar-master-detail{left:0;right:0;width:100%}.view-master-detail .page-master{pointer-events:auto;transform:none;z-index:2}.view-master-detail .page-master:after,.view-master-detail .page-master:before{display:none}.view-master-detail.router-transition .page-master{animation:none}.ios .router-transition-custom .page-next,.ios .router-transition-custom .page-previous,.md .router-transition-custom .page-next,.md .router-transition-custom .page-previous{opacity:1;transform:none}.ios .router-transition-custom.view-master-detail .page-master,.md .router-transition-custom.view-master-detail .page-master{animation:none}.page-title{box-sizing:border-box;color:var(--f7-page-title-text-color);font-size:var(--f7-page-title-font-size);font-weight:var(--f7-page-title-font-weight);letter-spacing:var(--f7-page-title-letter-spacing);line-height:var(--f7-page-title-line-height);overflow:hidden;padding:var(--f7-page-title-padding-vertical) calc(var(--f7-page-title-padding-right) + var(--f7-safe-area-right)) var(--f7-page-title-padding-vertical) calc(var(--f7-page-title-padding-left) + var(--f7-safe-area-left));position:relative;text-overflow:ellipsis;white-space:nowrap;width:100%;z-index:10}.router-transition-f7-circle-backward:after,.router-transition-f7-circle-forward:after{background:var(--f7-page-bg-color);content:"";height:100vmax;left:50%;margin-left:-50vmax;margin-top:-50vmax;position:absolute;top:50%;width:100vmax;z-index:100}.router-transition-f7-circle-backward .page,.router-transition-f7-circle-forward .page{pointer-events:none}.router-transition-f7-circle-forward:after{animation:f7-circle-circle-in .4s forwards;border-radius:50%;transform:scale(0)}.ios .router-transition-f7-circle-forward .page-next,.md .router-transition-f7-circle-forward .page-next{animation:f7-circle-next-to-current .3s forwards;animation-delay:.3s;opacity:0;transform:scale(.9);z-index:150}.router-transition-f7-circle-backward:after{animation:f7-circle-circle-out .3s forwards;animation-delay:.35s}.ios .router-transition-f7-circle-backward .page-current,.md .router-transition-f7-circle-backward .page-current{animation:f7-circle-current-to-next .7s forwards;z-index:150}@keyframes f7-circle-circle-in{0%{border-radius:50%;transform:scale(0)}50%{border-radius:50%}to{border-radius:0;transform:scale(1)}}@keyframes f7-circle-circle-out{0%{border-radius:0;transform:scale(1)}50%{border-radius:50%}to{border-radius:50%;transform:scale(0)}}@keyframes f7-circle-next-to-current{0%{opacity:0;transform:scale(.9)}40%{opacity:1;transform:scale(1.035)}to{opacity:1;transform:scale(1)}}@keyframes f7-circle-current-to-next{0%{opacity:1;transform:scale(1)}34%{opacity:1;transform:scale(1.035)}57%{opacity:0;transform:scale(.9)}to{opacity:0;transform:scale(.9)}}.router-transition-f7-cover-v-backward,.router-transition-f7-cover-v-forward{background:#000;perspective:1200px}.router-transition-f7-cover-v-backward .page,.router-transition-f7-cover-v-forward .page{pointer-events:none}.router-transition-f7-cover-v-forward .page-next{animation:f7-cover-v-next-to-current var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-v-forward .page-current{animation:f7-cover-v-current-to-prev var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-v-backward .page-current{animation:f7-cover-v-current-to-next var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-v-backward .page-previous{animation:f7-cover-v-prev-to-current var(--f7-page-cover-transition-duration) forwards}@keyframes f7-cover-v-next-to-current{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes f7-cover-v-current-to-next{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes f7-cover-v-current-to-prev{0%{opacity:1;transform:translateZ(0)}to{opacity:.5;transform:translateZ(-300px)}}@keyframes f7-cover-v-prev-to-current{0%{opacity:.5;transform:translateZ(-300px)}to{opacity:1;transform:translateZ(0)}}.router-transition-f7-cover-backward,.router-transition-f7-cover-forward{background:#000;perspective:1200px}.router-transition-f7-cover-backward .page,.router-transition-f7-cover-forward .page{pointer-events:none}.router-transition-f7-cover-forward .page-next{animation:f7-cover-next-to-current var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-forward .page-current{animation:f7-cover-current-to-prev var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-backward .page-current{animation:f7-cover-current-to-next var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-backward .page-previous{animation:f7-cover-prev-to-current var(--f7-page-cover-transition-duration) forwards}@keyframes f7-cover-next-to-current{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes f7-cover-current-to-next{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes f7-cover-current-to-prev{0%{opacity:1;transform:translateZ(0)}to{opacity:.5;transform:translateZ(-300px)}}@keyframes f7-cover-prev-to-current{0%{opacity:.5;transform:translateZ(-300px)}to{opacity:1;transform:translateZ(0)}}.router-transition-f7-dive-backward,.router-transition-f7-dive-forward{background:var(--f7-page-bg-color);perspective:1200px}.router-transition-f7-dive-backward .page,.router-transition-f7-dive-forward .page{pointer-events:none}.router-transition-f7-dive-forward .page-next{animation:f7-dive-next-to-current var(--f7-page-dive-transition-duration) forwards}.router-transition-f7-dive-forward .page-current{animation:f7-dive-current-to-prev var(--f7-page-dive-transition-duration) forwards}.router-transition-f7-dive-backward .page-current{animation:f7-dive-current-to-next var(--f7-page-dive-transition-duration) forwards}.router-transition-f7-dive-backward .page-previous{animation:f7-dive-prev-to-current var(--f7-page-dive-transition-duration) forwards}@keyframes f7-dive-next-to-current{0%{opacity:0;transform:translateZ(-150px)}50%{opacity:0}to{opacity:1;transform:translateZ(0)}}@keyframes f7-dive-current-to-next{0%{opacity:1;transform:translateZ(0)}50%{opacity:0}to{opacity:0;transform:translateZ(-150px)}}@keyframes f7-dive-current-to-prev{0%{opacity:1;transform:translateZ(0)}50%{opacity:0}to{opacity:0;transform:translateZ(150px)}}@keyframes f7-dive-prev-to-current{0%{opacity:0;transform:translateZ(150px)}50%{opacity:0}to{opacity:1;transform:translateZ(0)}}.router-transition-f7-fade-backward,.router-transition-f7-fade-forward{background:var(--f7-page-bg-color)}.router-transition-f7-fade-backward .page,.router-transition-f7-fade-forward .page{pointer-events:none}.ios .router-transition-f7-fade-forward .page-next,.md .router-transition-f7-fade-forward .page-next{animation:f7-fade-in var(--f7-page-fade-transition-duration) forwards;opacity:0}.ios .router-transition-f7-fade-backward .page-current,.ios .router-transition-f7-fade-forward .page-current,.md .router-transition-f7-fade-backward .page-current,.md .router-transition-f7-fade-forward .page-current{animation:f7-fade-out var(--f7-page-fade-transition-duration) forwards}.ios .router-transition-f7-fade-backward .page-previous,.md .router-transition-f7-fade-backward .page-previous{animation:f7-fade-in var(--f7-page-fade-transition-duration) forwards}@keyframes f7-fade-in{0%{opacity:0}50%{opacity:0}to{opacity:1}}@keyframes f7-fade-out{0%{opacity:1}50%{opacity:0}to{opacity:0}}.router-transition-f7-flip-backward,.router-transition-f7-flip-forward{background:#000;perspective:1200px}.router-transition-f7-flip-backward .page,.router-transition-f7-flip-forward .page{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;pointer-events:none}.router-transition-f7-flip-forward .page-next{animation:f7-flip-next-to-current var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}.router-transition-f7-flip-forward .page-current{animation:f7-flip-current-to-prev var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}.router-transition-f7-flip-backward .page-current{animation:f7-flip-current-to-next var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}.router-transition-f7-flip-backward .page-previous{animation:f7-flip-prev-to-current var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}@keyframes f7-flip-next-to-current{0%{border-radius:32px;transform:translateZ(-100vmax) rotateY(-180deg)}to{border-radius:0;transform:translateZ(0) rotateY(0deg)}}@keyframes f7-flip-current-to-next{0%{border-radius:0;transform:translateZ(0) rotateY(0deg)}to{border-radius:32px;transform:translateZ(-100vmax) rotateY(-180deg)}}@keyframes f7-flip-current-to-prev{0%{border-radius:0;transform:translateZ(0) rotateY(0deg)}to{border-radius:32px;transform:translateZ(-100vmax) rotateY(180deg)}}@keyframes f7-flip-prev-to-current{0%{border-radius:32px;transform:translateZ(-100vmax) rotateY(180deg)}to{border-radius:0;transform:translateZ(0) rotateY(0deg)}}.router-transition-f7-parallax-forward .page{pointer-events:none}.router-transition-f7-parallax-forward .page-next{animation:f7-parallax-next-to-current var(--f7-page-parallax-transition-duration) forwards}.router-transition-f7-parallax-forward .page-current{animation:f7-parallax-current-to-prev var(--f7-page-parallax-transition-duration) forwards}.router-transition-f7-parallax-backward .page{pointer-events:none}.router-transition-f7-parallax-backward .page-current{animation:f7-parallax-current-to-next var(--f7-page-parallax-transition-duration) forwards}.router-transition-f7-parallax-backward .page-previous{animation:f7-parallax-prev-to-current var(--f7-page-parallax-transition-duration) forwards}@keyframes f7-parallax-next-to-current{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes f7-parallax-current-to-next{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes f7-parallax-current-to-prev{0%{transform:translateX(0)}to{transform:translateX(20%)}}@keyframes f7-parallax-prev-to-current{0%{transform:translateX(20%)}to{transform:translateX(0)}}.router-transition-f7-push-forward .page{pointer-events:none}.router-transition-f7-push-forward .page-next{animation:f7-push-next-to-current var(--f7-page-push-transition-duration) forwards}.router-transition-f7-push-forward .page-current{animation:f7-push-current-to-prev var(--f7-page-push-transition-duration) forwards}.router-transition-f7-push-backward .page{pointer-events:none}.router-transition-f7-push-backward .page-current{animation:f7-push-current-to-next var(--f7-page-push-transition-duration) forwards}.router-transition-f7-push-backward .page-previous{animation:f7-push-prev-to-current var(--f7-page-push-transition-duration) forwards}@keyframes f7-push-next-to-current{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes f7-push-current-to-next{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes f7-push-current-to-prev{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes f7-push-prev-to-current{0%{transform:translateX(100%)}to{transform:translateX(0)}}:root{--f7-link-highlight-black:rgba(0,0,0,0.1);--f7-link-highlight-white:rgba(255,255,255,0.15);--f7-link-highlight-color:rgba(var(--f7-theme-color-rgb),0.15)}.ios{--f7-link-pressed-opacity:0.3}.link,.tab-link{--f7-touch-ripple-color:var(--f7-link-touch-ripple-color,rgba(var(--f7-theme-color-rgb),0.25));align-content:center;align-items:center;box-sizing:border-box;display:inline-flex;justify-content:center;position:relative;z-index:1}.link i+i,.link i+span,.link span+i,.link span+span{margin-right:4px}.link[class*=color-]{color:var(--f7-theme-color)}.ios .link{transition:opacity .3s}.ios .link.active-state{opacity:var(--f7-link-pressed-opacity);transition-duration:0ms}:root{--f7-navbar-hide-show-transition-duration:400ms;--f7-navbar-title-line-height:1.2;--f7-navbar-subtitle-text-align:inherit;--f7-navbar-large-title-line-height:1.2;--f7-navbar-large-title-text-color:inherit;--f7-navbar-large-title-padding-left:16px;--f7-navbar-large-title-padding-right:16px}.ios{--f7-navbar-height:44px;--f7-navbar-font-size:17px;--f7-navbar-title-font-size:inherit;--f7-navbar-inner-padding-left:8px;--f7-navbar-inner-padding-right:8px;--f7-navbar-title-font-weight:600;--f7-navbar-title-margin-left:0;--f7-navbar-title-margin-right:0;--f7-navbar-title-text-align:center;--f7-navbar-subtitle-font-size:10px;--f7-navbar-subtitle-line-height:1;--f7-navbar-large-title-height:52px;--f7-navbar-large-title-font-size:34px;--f7-navbar-large-title-font-weight:700;--f7-navbar-large-title-letter-spacing:-0.03em;--f7-navbar-large-title-padding-vertical:6px;--f7-navbar-subtitle-text-color:rgba(0,0,0,0.55)}.ios .dark,.ios.dark{--f7-navbar-subtitle-text-color:rgba(255,255,255,0.55)}.md{--f7-navbar-height:64px;--f7-navbar-font-size:16px;--f7-navbar-title-font-size:22px;--f7-navbar-inner-padding-left:0px;--f7-navbar-inner-padding-right:0px;--f7-navbar-title-font-weight:400;--f7-navbar-title-margin-left:0px;--f7-navbar-title-margin-right:16px;--f7-navbar-title-text-align:left;--f7-navbar-subtitle-font-size:14px;--f7-navbar-subtitle-line-height:1.2;--f7-navbar-large-title-font-size:28px;--f7-navbar-large-title-height:88px;--f7-navbar-large-title-font-weight:400;--f7-navbar-large-title-letter-spacing:0;--f7-navbar-large-title-padding-vertical:8px;--f7-navbar-link-height:48px;--f7-navbar-link-line-height:48px}.md,.md .dark,.md [class*=color-]{--f7-navbar-link-color:var(--f7-md-on-surface);--f7-navbar-text-color:var(--f7-md-on-surface);--f7-navbar-subtitle-text-color:var(--f7-md-on-surface-variant)}.navbar,.navbars{left:0;top:0;width:100%;z-index:500}.navbars{position:absolute}.navbars .navbar{z-index:auto}.navbars .navbar-transitioning{z-index:500}.navbar{--f7-navbar-large-collapse-progress:0;-webkit-backface-visibility:hidden;backface-visibility:hidden;box-sizing:border-box;color:var(--f7-navbar-text-color,var(--f7-bars-text-color));font-size:var(--f7-navbar-font-size);height:calc(var(--f7-navbar-height) + var(--f7-safe-area-top));margin:0;position:relative}.navbar b{font-weight:500}.navbar a{color:var(--f7-navbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.navbar a.link{display:flex;height:var(--f7-navbar-link-height,var(--f7-navbar-height));justify-content:flex-start;line-height:var(--f7-navbar-link-line-height,var(--f7-navbar-height))}.navbar .left,.navbar .right,.navbar .title{position:relative;z-index:10}.navbar .title{display:inline-block;flex-shrink:10;font-size:var(--f7-navbar-title-font-size);font-weight:var(--f7-navbar-title-font-weight);line-height:var(--f7-navbar-title-line-height);margin-left:var(--f7-navbar-title-margin-left);margin-right:var(--f7-navbar-title-margin-left);overflow:hidden;position:relative;text-align:var(--f7-navbar-title-text-align);text-overflow:ellipsis;white-space:nowrap}.navbar .subtitle{color:var(--f7-navbar-subtitle-text-color);display:block;font-size:var(--f7-navbar-subtitle-font-size);font-weight:400;line-height:var(--f7-navbar-subtitle-line-height);text-align:var(--f7-navbar-subtitle-text-align)}.navbar .left,.navbar .right{align-items:center;display:flex;flex-shrink:0;justify-content:flex-start}.navbar .right:first-child{height:100%;position:absolute}.navbar .no-outline .navbar-bg:after,.navbar .no-outline .title-large:after,.navbar.no-outline .navbar-bg:after,.navbar.no-outline .title-large:after{display:none!important}.navbar-hidden .navbar .navbar-bg:before,.navbar.navbar-hidden .navbar-bg:before{opacity:0!important}.navbar-bg{background:var(--f7-navbar-bg-color);background-color:var(--f7-navbar-bg-color,var(--f7-bars-bg-color));height:100%;left:0;pointer-events:none;position:absolute;top:0;transition-property:transform;width:100%;z-index:0}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .navbar-bg{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-navbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.navbar-bg:after,.navbar-bg:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.navbar-bg:after{background-color:var(--f7-navbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15;z-index:1}.navbar-transitioning,.navbar-transitioning .left,.navbar-transitioning .navbar-bg,.navbar-transitioning .navbar-bg:before,.navbar-transitioning .right,.navbar-transitioning .subnavbar,.navbar-transitioning .title,.navbar-transitioning .title-large-text{transition-duration:var(--f7-navbar-hide-show-transition-duration)}.navbar-page-transitioning,.navbar-page-transitioning .navbar-bg,.navbar-page-transitioning .title-large-text{transition-duration:var(--f7-page-swipeback-transition-duration)!important}.navbar-hidden{transform:translate3d(0,calc(var(--f7-navbar-height)*-1),0)}.navbar-hidden .navbar-inner{pointer-events:none}.navbar-hidden .navbar-inner>.left,.navbar-hidden .navbar-inner>.right,.navbar-hidden .navbar-inner>.title{opacity:0!important}.navbar-hidden .subnavbar{pointer-events:auto}.navbar-hidden-statusbar{transform:translate3d(0,calc(var(--f7-navbar-height)*-1 - var(--f7-safe-area-top)),0)}.navbar-large-hidden .navbar-large{--f7-navbar-large-collapse-progress:1}.navbar-inner{align-items:center;bottom:0;box-sizing:border-box;display:flex;height:100%;left:0;padding:var(--f7-safe-area-top) calc(var(--f7-navbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-navbar-inner-padding-left) + var(--f7-safe-area-left));transform:translateZ(0);width:100%;z-index:10}.navbar-inner,.navbars>.navbar,.page>.navbar,.view>.navbar,.views>.navbar{position:absolute}.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(.with-searchbar-expandable-enabled) .navbar-bg,.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(.with-searchbar-expandable-enabled) .title{opacity:0}.navbar-large .navbar-bg{height:calc(100% + var(--f7-navbar-large-title-height));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.navbar-large-transparent .navbar-bg,.navbar-large.navbar-transparent .navbar-bg{opacity:var(--f7-navbar-large-collapse-progress)}.ios .router-navbar-transition-from-large .navbar-bg,.ios .router-navbar-transition-to-large .navbar-bg,.navbar-bg.ios-swipeback-navbar-bg-large,.navbar-large-transparent .navbar-bg.ios-swipeback-navbar-bg-large,.navbar-large.navbar-transparent .navbar-bg.ios-swipeback-navbar-bg-large{height:calc(100% + var(--f7-navbar-large-title-height));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.ios .navbar:not(.navbar-large) .navbar-bg{--f7-navbar-large-collapse-progress:1}.navbar-large .title{opacity:var(--f7-navbar-large-collapse-progress)}.navbar-large-collapsed{--f7-navbar-large-collapse-progress:1}.navbar-large-collapsed .title-large{pointer-events:none}.navbar .title-large{display:flex;height:var(--f7-navbar-large-title-height);left:0;position:absolute;right:0;top:100%;z-index:5}.navbar .title-large,.navbar .title-large-text{box-sizing:border-box;overflow:hidden;white-space:nowrap}.navbar .title-large-text{color:var(--f7-navbar-large-title-text-color);font-size:var(--f7-navbar-large-title-font-size);font-weight:var(--f7-navbar-large-title-font-weight);letter-spacing:var(--f7-navbar-large-title-letter-spacing);line-height:var(--f7-navbar-large-title-line-height);padding:var(--f7-navbar-large-title-padding-vertical) calc(var(--f7-navbar-large-title-padding-right) + var(--f7-safe-area-right)) var(--f7-navbar-large-title-padding-vertical) calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left));text-overflow:ellipsis;transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0);transform-origin:calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center;width:100%}.navbar-no-title-large-transition .title-large-text{transition-duration:0ms}.navbars~*,.navbar~*{--f7-page-navbar-offset:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbars~* .page-with-navbar-large,.navbars~.page-with-navbar-large,.navbar~* .page-with-navbar-large,.navbar~.page-with-navbar-large,.page-with-navbar-large .navbar~*{--f7-page-navbar-offset:calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top))}.page.no-navbar,.page.no-navbar .navbar~*{--f7-page-navbar-offset:var(--f7-safe-area-top)}.ios{--f7-navbarLeftTextOffset:calc(16px + var(--f7-navbar-inner-padding-left));--f7-navbarTitleLargeOffset:var(--f7-navbar-large-title-padding-left);--f7-navbar-large-bg-center-top:translateX(0) translateY(calc(var(--f7-navbar-large-title-height)*-1));--f7-navbar-large-bg-center-bottom:translateX(0) translateY(0);--f7-navbar-large-bg-left-top:translateX(100%) translateY(calc(var(--f7-navbar-large-title-height)*-1));--f7-navbar-large-bg-left-bottom:translateX(100%) translateY(0);--f7-navbar-large-bg-right-top:translateX(-100%) translateY(calc(var(--f7-navbar-large-title-height)*-1));--f7-navbar-large-bg-right-bottom:translateX(-100%) translateY(0)}.ios .navbar .title-large{align-items:flex-end}.ios .navbar a.icon-only{justify-content:center;margin:0;width:44px}.ios .navbar .left a+a,.ios .navbar .right a+a{margin-right:16px}.ios .navbar b{font-weight:600}.ios .navbar .left{margin-left:10px}.ios .navbar .right{margin-right:10px}.ios .navbar .right:first-child{left:calc(8px + var(--f7-safe-area-left))}.ios .navbar-inner{justify-content:space-between}.ios .navbar-inner-left-title{justify-content:flex-start}.ios .navbar-inner-left-title .right{margin-right:auto}.ios .navbar-inner-left-title .title{margin-left:10px;text-align:left}.ios .navbar-next .fading,.ios .navbar-next .left,.ios .navbar-next .right,.ios .navbar-next .subnavbar,.ios .navbar-next .title,.ios .view-master-detail .navbar-previous:not(.navbar-master) .fading,.ios .view-master-detail .navbar-previous:not(.navbar-master) .left,.ios .view-master-detail .navbar-previous:not(.navbar-master) .right,.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar,.ios .view-master-detail .navbar-previous:not(.navbar-master) .title,.ios .view:not(.view-master-detail) .navbar-previous .fading,.ios .view:not(.view-master-detail) .navbar-previous .left,.ios .view:not(.view-master-detail) .navbar-previous .right,.ios .view:not(.view-master-detail) .navbar-previous .subnavbar,.ios .view:not(.view-master-detail) .navbar-previous .title{opacity:0}.ios .view-master-detail .navbar-previous:not(.navbar-master),.ios .view:not(.view-master-detail) .navbar-previous{pointer-events:none}.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large,.ios .view:not(.view-master-detail) .navbar-previous .title-large{opacity:0;transition-duration:0ms}.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large .title-large-text,.ios .view:not(.view-master-detail) .navbar-previous .title-large .title-large-text{transform:scale(.5);transition-duration:0ms}.ios .view-master-detail .navbar-previous:not(.navbar-master) .sliding .subnavbar,.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar.sliding,.ios .view:not(.view-master-detail) .navbar-previous .sliding .subnavbar,.ios .view:not(.view-master-detail) .navbar-previous .subnavbar.sliding{opacity:1;transform:translate3d(100%,0,0)}.ios .view-master-detail .navbar-previous:not(.navbar-master) .navbar-bg,.ios .view:not(.view-master-detail) .navbar-previous .navbar-bg{transform:translateX(-100%)}.ios .navbar-next{pointer-events:none}.ios .navbar-next .navbar-bg{transform:translateX(-100%)}.ios .navbar-next .title-large .title-large-text{transform:translateX(-100%) translateY(calc(var(--f7-navbar-large-title-height)*-1));transition-duration:0ms}.ios .navbar-next .sliding .subnavbar,.ios .navbar-next .subnavbar.sliding{opacity:1;transform:translate3d(-100%,0,0)}.ios .router-transition .navbar,.ios .router-transition .navbar-bg{transition-duration:var(--f7-page-transition-duration)}.ios .router-transition .navbar-bg{animation-duration:var(--f7-page-transition-duration);animation-fill-mode:forwards}.ios .router-transition .title-large,.ios .router-transition .title-large-text{transition-duration:0ms}.ios .router-transition .navbar-current .left,.ios .router-transition .navbar-current .right,.ios .router-transition .navbar-current .subnavbar,.ios .router-transition .navbar-current .title{animation:ios-navbar-element-fade-out var(--f7-page-transition-duration) forwards}.ios .router-transition .navbar-current .sliding .left,.ios .router-transition .navbar-current .sliding .left .icon+span,.ios .router-transition .navbar-current .sliding .right,.ios .router-transition .navbar-current .sliding .title,.ios .router-transition .navbar-current .sliding.left,.ios .router-transition .navbar-current .sliding.left .icon+span,.ios .router-transition .navbar-current .sliding.right,.ios .router-transition .navbar-current .sliding.title{animation:none;opacity:0!important;transition-duration:var(--f7-page-transition-duration)}.ios .router-transition .navbar-current .sliding .subnavbar,.ios .router-transition .navbar-current .sliding.subnavbar{animation:none;opacity:1;transition-duration:var(--f7-page-transition-duration)}.ios .router-transition-backward .navbar-previous .left,.ios .router-transition-backward .navbar-previous .right,.ios .router-transition-backward .navbar-previous .subnavbar,.ios .router-transition-backward .navbar-previous .title,.ios .router-transition-forward .navbar-next .left,.ios .router-transition-forward .navbar-next .right,.ios .router-transition-forward .navbar-next .subnavbar,.ios .router-transition-forward .navbar-next .title{animation:ios-navbar-element-fade-in var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .navbar-previous .sliding .left,.ios .router-transition-backward .navbar-previous .sliding .left .icon+span,.ios .router-transition-backward .navbar-previous .sliding .right,.ios .router-transition-backward .navbar-previous .sliding .subnavbar,.ios .router-transition-backward .navbar-previous .sliding .title,.ios .router-transition-backward .navbar-previous .sliding.left,.ios .router-transition-backward .navbar-previous .sliding.left .icon+span,.ios .router-transition-backward .navbar-previous .sliding.right,.ios .router-transition-backward .navbar-previous .sliding.title,.ios .router-transition-forward .navbar-next .sliding .left,.ios .router-transition-forward .navbar-next .sliding .left .icon+span,.ios .router-transition-forward .navbar-next .sliding .right,.ios .router-transition-forward .navbar-next .sliding .subnavbar,.ios .router-transition-forward .navbar-next .sliding .title,.ios .router-transition-forward .navbar-next .sliding.left,.ios .router-transition-forward .navbar-next .sliding.left .icon+span,.ios .router-transition-forward .navbar-next .sliding.right,.ios .router-transition-forward .navbar-next .sliding.title{animation:none;opacity:1!important;transform:translateZ(0)!important;transition-duration:var(--f7-page-transition-duration)}.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title,.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title{animation:none}.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title,.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title,.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title,.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title{opacity:0!important}.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .left,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .right,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .subnavbar,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .title,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .left,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .right,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .subnavbar,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .title{animation:none}.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large{overflow:visible}.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-up var(--f7-page-transition-duration) forwards,ios-navbar-large-title-text-fade-out var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large .left .back span{animation:ios-navbar-back-text-next-to-current var(--f7-page-transition-duration) forwards;transform-origin:right center;transition:none}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large{overflow:visible}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-forward .navbar-next.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-left var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title,.ios .router-transition-forward .navbar-next.navbar-large:not(.navbar-large-collapsed) .title{animation:none;opacity:0!important;transition-duration:0}.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large .left .back span{animation:ios-navbar-back-text-current-to-previous var(--f7-page-transition-duration) forwards;transform-origin:right center;transition:none}.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large{overflow:visible}.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-right var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large{opacity:0}.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large{opacity:1;overflow:visible}.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-down var(--f7-page-transition-duration) forwards,ios-navbar-large-title-text-fade-in var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title,.ios .router-transition-backward .navbar-previous.navbar-large:not(.navbar-large-collapsed) .title{animation:none;opacity:0!important;transition-duration:0}.ios .router-transition-forward .navbar-current .navbar-bg,.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-lb}.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-lt}.ios .router-transition-forward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-lb}.ios .router-transition-forward .navbar-current.navbar-large-collapsed:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-lt}.ios .router-transition-forward .navbar-next .navbar-bg,.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-rb-to-cb}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-rb-to-ct}.ios .router-transition-forward .navbar-next:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-rt-to-cb}.ios .router-transition-backward .navbar-current .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-rb}.ios .router-transition-backward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-rb}.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-rt}.ios .router-transition-backward .navbar-current.navbar-large-collapsed .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-rt}.ios .router-transition-backward .navbar-current.navbar-large-collapsed.router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-rb}.ios .router-transition-backward .navbar-previous .navbar-bg{animation-name:ios-navbar-bg-from-lb-to-cb}.ios .router-transition-backward .navbar-previous:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-lt-to-cb}.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-lb-to-ct}.ios .router-transition-backward .navbar-previous.navbar-large-collapsed .navbar-bg{animation-name:ios-navbar-bg-from-lt-to-ct}.view-master-detail .navbars{z-index:auto}.view-master-detail .page-master{z-index:525}.view-master-detail .navbar-master .navbar-bg,.view-master-detail .navbar-master .navbar-inner{z-index:550}.view-master-detail .navbar-master-detail .navbar-bg,.view-master-detail .navbar-master-detail .navbar-inner{z-index:500}.view-master-detail .navbar-master.navbar-previous{pointer-events:auto}.view-master-detail .navbar-master.navbar-previous .left,.view-master-detail .navbar-master.navbar-previous .right,.view-master-detail .navbar-master.navbar-previous .subnavbar,.view-master-detail .navbar-master.navbar-previous:not(.navbar-large) .title{opacity:1}.view-master-detail.router-transition .navbar-master .fading,.view-master-detail.router-transition .navbar-master .left,.view-master-detail.router-transition .navbar-master .left .icon+span,.view-master-detail.router-transition .navbar-master .right,.view-master-detail.router-transition .navbar-master .subnavbar,.view-master-detail.router-transition .navbar-master:not(.navbar-large) .title{animation:none!important;opacity:1!important;transform:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master .navbar-bg{animation:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master.navbar-large .title{animation:none!important;opacity:calc(-1 + var(--f7-navbar-large-collapse-progress)*2)!important;transform:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master.navbar-large .title-large,.view-master-detail.router-transition .navbar-master.navbar-large .title-large-text{animation:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master.navbar-large-transparent .navbar-bg,.view-master-detail.router-transition .navbar-master.navbar-large.navbar-transparent .navbar-bg{height:100%!important;opacity:var(--f7-navbar-large-collapse-progress)!important}@keyframes ios-navbar-element-fade-in{0%{opacity:0}25%{opacity:0}to{opacity:1}}@keyframes ios-navbar-element-fade-out{0%{opacity:1}75%{opacity:0}to{opacity:0}}@keyframes ios-navbar-large-title-text-slide-up{0%{transform:translateX(0) translateY(0) scale(1)}to{transform:translateX(calc((var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset))*-1)) translateY(calc(var(--f7-navbar-large-title-height)*-1 + var(--f7-navbar-large-title-padding-vertical))) scale(.5)}}@keyframes ios-navbar-large-title-text-slide-down{0%{transform:translateX(calc((var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset))*-1)) translateY(calc(var(--f7-navbar-large-title-height)*-1 + var(--f7-navbar-large-title-padding-vertical)/2)) scale(.5)}to{transform:translateX(0) translateY(0) scale(1)}}@keyframes ios-navbar-large-title-text-slide-left{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes ios-navbar-large-title-text-slide-right{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes ios-navbar-large-title-text-fade-out{0%{opacity:1}80%{opacity:0}to{opacity:0}}@keyframes ios-navbar-large-title-text-fade-in{0%{opacity:0}20%{opacity:0}to{opacity:1}}@keyframes ios-navbar-back-text-current-to-previous{0%{opacity:1;transform:translateY(0) translateX(0) scale(1)}80%{opacity:0}to{opacity:0;transform:translateX(calc((var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset))*-1)) translateY(calc(var(--f7-navbar-large-title-height)*1 - var(--f7-navbar-large-title-padding-vertical)/2)) scale(2)}}@keyframes ios-navbar-back-text-next-to-current{0%{opacity:0;transform:translateX(calc((var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset))*-1)) translateY(calc(var(--f7-navbar-large-title-height)*1 + var(--f7-navbar-large-title-padding-vertical)/2)) scale(2)}20%{opacity:0}to{opacity:1;transform:translateX(0) translateY(0) scale(1)}}@keyframes ios-navbar-bg-from-cb-to-lb{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-left-bottom)}}@keyframes ios-navbar-bg-from-cb-to-lt{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-left-top)}}@keyframes ios-navbar-bg-from-ct-to-lb{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-left-bottom)}}@keyframes ios-navbar-bg-from-ct-to-lt{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-left-top)}}@keyframes ios-navbar-bg-from-rb-to-cb{0%{transform:var(--f7-navbar-large-bg-right-bottom)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-rb-to-ct{0%{transform:var(--f7-navbar-large-bg-right-bottom)}to{transform:var(--f7-navbar-large-bg-center-top)}}@keyframes ios-navbar-bg-from-rt-to-cb{0%{transform:var(--f7-navbar-large-bg-right-top)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-cb-to-rb{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-right-bottom)}}@keyframes ios-navbar-bg-from-ct-to-rb{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-right-bottom)}}@keyframes ios-navbar-bg-from-cb-to-rt{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-right-top)}}@keyframes ios-navbar-bg-from-ct-to-rt{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-right-top)}}@keyframes ios-navbar-bg-from-lb-to-cb{0%{transform:var(--f7-navbar-large-bg-left-bottom)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-lt-to-cb{0%{transform:var(--f7-navbar-large-bg-left-top)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-lb-to-ct{0%{transform:var(--f7-navbar-large-bg-left-bottom)}to{transform:var(--f7-navbar-large-bg-center-top)}}@keyframes ios-navbar-bg-from-lt-to-ct{0%{transform:var(--f7-navbar-large-bg-left-top)}to{transform:var(--f7-navbar-large-bg-center-top)}}.md .navbar .title-large{align-items:center}.md .navbar .left{margin-left:4px;margin-right:4px}.md .navbar a.link{min-width:48px;padding:0 12px}.md .navbar a.icon-only{flex-shrink:0;min-width:0;width:48px}.md .navbar .right{margin-left:4px;margin-right:auto}.md .navbar .right:first-child{left:var(--f7-safe-area-left)}.md .navbar-inner{justify-content:flex-start;overflow:hidden}.md .navbar-large:not(.navbar-large-collapsed) .navbar-inner,.md .page.page-with-subnavbar .navbar-inner{overflow:visible}.md .navbar-inner:not(.navbar-inner-centered-title) .title:first-child{margin-left:16px}.md .navbar-inner-centered-title{justify-content:space-between}.md .navbar-inner-centered-title .right{margin-right:0}.md .navbar-inner-centered-title .title{text-align:center}:root{--f7-tabbar-link-active-bg-color:transparent;--f7-tabbar-label-text-transform:none;--f7-toolbar-hide-show-transition-duration:400ms}.ios{--f7-toolbar-height:44px;--f7-toolbar-font-size:17px;--f7-toolbar-inner-padding-left:8px;--f7-toolbar-inner-padding-right:8px;--f7-toolbar-link-font-weight:400;--f7-tabbar-icons-height:50px;--f7-tabbar-icons-tablet-height:50px;--f7-tabbar-icon-size:28px;--f7-tabbar-link-text-transform:none;--f7-tabbar-link-font-weight:400;--f7-tabbar-link-letter-spacing:0;--f7-tabbar-label-font-size:12px;--f7-tabbar-label-tablet-font-size:14px;--f7-tabbar-label-font-weight:500;--f7-tabbar-label-letter-spacing:0.01;--f7-tabbar-link-inactive-color:rgba(0,0,0,0.4)}.ios .dark,.ios.dark{--f7-tabbar-link-inactive-color:rgba(255,255,255,0.54)}.md{--f7-toolbar-height:56px;--f7-toolbar-font-size:14px;--f7-toolbar-inner-padding-left:0px;--f7-toolbar-inner-padding-right:0px;--f7-tabbar-icons-height:80px;--f7-tabbar-icons-tablet-height:80px;--f7-tabbar-icon-size:24px;--f7-tabbar-link-text-transform:none;--f7-tabbar-link-font-weight:500;--f7-tabbar-link-letter-spacing:0;--f7-toolbar-link-font-weight:500;--f7-tabbar-label-font-size:12px;--f7-tabbar-label-tablet-font-size:12px;--f7-tabbar-label-font-weight:500;--f7-tabbar-label-letter-spacing:0}.md,.md .dark,.md [class*=color-]{--f7-tabbar-link-active-color:var(--f7-md-on-secondary-container);--f7-tabbar-link-active-border-color:var(--f7-md-primary);--f7-tabbar-link-inactive-color:var(--f7-md-on-surface-variant);--f7-tabbar-link-active-icon-bg-color:var(--f7-md-secondary-container)}.toolbar{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-toolbar-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-toolbar-text-color,var(--f7-bars-text-color));font-size:var(--f7-toolbar-font-size);height:var(--f7-toolbar-height);left:0;margin:0;position:relative;transform:translateZ(0);width:100%;z-index:600}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .toolbar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-toolbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.toolbar b{font-weight:600}.toolbar a{box-sizing:border-box;color:var(--f7-toolbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)));flex-shrink:1;position:relative;text-overflow:ellipsis;white-space:nowrap}.toolbar .link{display:flex;font-weight:var(--f7-toolbar-link-font-weight);height:var(--f7-toolbar-link-height,var(--f7-toolbar-height));line-height:var(--f7-toolbar-link-line-height,var(--f7-toolbar-height))}.toolbar i.icon{display:block}.toolbar:after,.toolbar:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.page>.toolbar,.view>.toolbar,.views>.toolbar{position:absolute}.ios .toolbar-top-ios,.md .toolbar-top-md,.toolbar-top{top:0}.ios .toolbar-top-ios .tab-link-highlight,.md .toolbar-top-md .tab-link-highlight,.toolbar-top .tab-link-highlight{bottom:0}.ios .toolbar-top-ios.no-outline:after,.ios .toolbar-top-ios.toolbar-hidden:before,.md .toolbar-top-md.no-outline:after,.md .toolbar-top-md.toolbar-hidden:before,.toolbar-top.no-outline:after,.toolbar-top.toolbar-hidden:before{display:none!important}.ios .toolbar-top-ios:after,.ios .toolbar-top-ios:before,.md .toolbar-top-md:after,.md .toolbar-top-md:before,.toolbar-top:after,.toolbar-top:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.ios .toolbar-top-ios:after,.md .toolbar-top-md:after,.toolbar-top:after{background-color:var(--f7-toolbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .toolbar-bottom-ios,.md .toolbar-bottom-md,.toolbar-bottom{bottom:0;height:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.ios .toolbar-bottom-ios .tab-link-highlight,.md .toolbar-bottom-md .tab-link-highlight,.toolbar-bottom .tab-link-highlight{top:0}.ios .toolbar-bottom-ios .toolbar-inner,.md .toolbar-bottom-md .toolbar-inner,.toolbar-bottom .toolbar-inner{bottom:var(--f7-safe-area-bottom);height:auto;top:0}.ios .toolbar-bottom-ios.no-outline:before,.ios .toolbar-bottom-ios.toolbar-hidden:after,.md .toolbar-bottom-md.no-outline:before,.md .toolbar-bottom-md.toolbar-hidden:after,.toolbar-bottom.no-outline:before,.toolbar-bottom.toolbar-hidden:after{display:none!important}.ios .toolbar-bottom-ios:before,.md .toolbar-bottom-md:before,.toolbar-bottom:before{background-color:var(--f7-toolbar-border-color,var(--f7-bars-border-color));bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.toolbar-inner{align-content:center;align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:space-between;left:0;overflow:hidden;padding:0 calc(var(--f7-toolbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-toolbar-inner-padding-left) + var(--f7-safe-area-left));position:absolute;top:0;width:100%}.views>.tabbar,.views>.tabbar-icons{z-index:5001}.tabbar a,.tabbar-icons a{color:var(--f7-tabbar-link-inactive-color)}.tabbar .link,.tabbar-icons .link{line-height:1.4}.tabbar .link,.tabbar .tab-link,.tabbar-icons .link,.tabbar-icons .tab-link{align-items:center;box-sizing:border-box;display:flex;flex-direction:column;font-weight:var(--f7-tabbar-link-font-weight);height:100%;justify-content:center;letter-spacing:var(--f7-tabbar-link-letter-spacing);overflow:hidden;text-transform:var(--f7-tabbar-link-text-transform);width:100%}.tabbar .tab-link-active,.tabbar-icons .tab-link-active{background-color:var(--f7-tabbar-link-active-bg-color,transparent);color:var(--f7-tabbar-link-active-color,var(--f7-theme-color))}.tabbar i.icon,.tabbar-icons i.icon{font-size:var(--f7-tabbar-icon-size);height:var(--f7-tabbar-icon-size);line-height:var(--f7-tabbar-icon-size)}.md .tabbar-icons.tabbar-icons .tab-link-highlight,.md .tabbar.tabbar-icons .tab-link-highlight{display:none}.md .tabbar-icons:not(.tabbar-icons) .tab-link-highlight,.md .tabbar:not(.tabbar-icons) .tab-link-highlight{background:var(--f7-tabbar-link-active-border-color,var(--f7-theme-color));height:2px;left:0;position:absolute;right:0;transition-duration:.3s}.tabbar-icons{--f7-toolbar-height:var(--f7-tabbar-icons-height)}.tabbar-icons .link,.tabbar-icons .tab-link{align-items:center;height:100%;justify-content:center}.tabbar-icons .tabbar-label{display:block;font-size:var(--f7-tabbar-label-font-size);font-weight:var(--f7-tabbar-label-font-weight);letter-spacing:var(--f7-tabbar-label-letter-spacing);line-height:1;margin:0;position:relative;text-overflow:ellipsis;text-transform:var(--f7-tabbar-label-text-transform);white-space:nowrap}@media (min-width:768px) and (min-height:600px){:root{--f7-tabbar-icons-height:var(--f7-tabbar-icons-tablet-height);--f7-tabbar-label-font-size:var(--f7-tabbar-label-tablet-font-size)}}.tabbar-scrollable .toolbar-inner{-webkit-overflow-scrolling:touch;justify-content:flex-start;overflow:auto;scrollbar-color:transparent;scrollbar-width:none}.tabbar-scrollable .toolbar-inner::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-track{background:transparent;box-shadow:none}.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.tabbar-scrollable .link,.tabbar-scrollable .tab-link{flex-shrink:0;width:auto}.navbar-transitioning+.toolbar,.navbar-transitioning~* .toolbar,.toolbar-transitioning{transition-duration:var(--f7-toolbar-hide-show-transition-duration)}.ios .toolbar-bottom-ios~*,.md .toolbar-bottom-md~*,.toolbar-bottom~*{--f7-page-toolbar-bottom-offset:var(--f7-toolbar-height)}.ios .toolbar-bottom-ios.tabbar-icons~*,.md .toolbar-bottom-md.tabbar-icons~*,.toolbar-bottom.tabbar-icons~*{--f7-page-toolbar-bottom-offset:var(--f7-tabbar-icons-height)}.ios .toolbar-bottom-ios.toolbar-hidden,.md .toolbar-bottom-md.toolbar-hidden,.toolbar-bottom.toolbar-hidden{transform:translate3d(0,100%,0)}.ios .toolbar-top-ios~*,.md .toolbar-top-md~*,.toolbar-top~*{--f7-page-toolbar-top-offset:var(--f7-toolbar-height)}.ios .toolbar-top-ios.tabbar-icons~*,.md .toolbar-top-md.tabbar-icons~*,.toolbar-top.tabbar-icons~*{--f7-page-toolbar-top-offset:var(--f7-tabbar-icons-height)}.ios .toolbar-top-ios.toolbar-hidden,.md .toolbar-top-md.toolbar-hidden,.toolbar-top.toolbar-hidden{transform:translate3d(0,-100%,0)}.ios .navbars~* .toolbar-top-ios,.ios .navbars~.page:not(.no-navbar) .toolbar-top-ios,.ios .navbars~.toolbar-top-ios,.ios .navbar~* .toolbar-top-ios,.ios .navbar~.page:not(.no-navbar) .toolbar-top-ios,.ios .navbar~.toolbar-top-ios,.md .navbar~* .toolbar-top-md,.md .navbar~.page:not(.no-navbar) .toolbar-top-md,.md .navbar~.toolbar-top-md,.navbars~* .toolbar-top,.navbars~.page:not(.no-navbar) .toolbar-top,.navbars~.toolbar-top,.navbar~* .toolbar-top,.navbar~.page:not(.no-navbar) .toolbar-top,.navbar~.toolbar-top{top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars~* .toolbar-top-ios.toolbar-hidden,.ios .navbars~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,.ios .navbars~.toolbar-top-ios.toolbar-hidden,.ios .navbar~* .toolbar-top-ios.toolbar-hidden,.ios .navbar~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,.ios .navbar~.toolbar-top-ios.toolbar-hidden,.md .navbar~* .toolbar-top-md.toolbar-hidden,.md .navbar~.page:not(.no-navbar) .toolbar-top-md.toolbar-hidden,.md .navbar~.toolbar-top-md.toolbar-hidden,.navbars~* .toolbar-top.toolbar-hidden,.navbars~.page:not(.no-navbar) .toolbar-top.toolbar-hidden,.navbars~.toolbar-top.toolbar-hidden,.navbar~* .toolbar-top.toolbar-hidden,.navbar~.page:not(.no-navbar) .toolbar-top.toolbar-hidden,.navbar~.toolbar-top.toolbar-hidden{transform:translate3d(0,calc((var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top))*-1),0)}.ios .navbars~* .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbars~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbars~.toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbar~* .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbar~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbar~.toolbar-top-ios.toolbar-hidden.tabbar-icons,.md .navbar~* .toolbar-top-md.toolbar-hidden.tabbar-icons,.md .navbar~.page:not(.no-navbar) .toolbar-top-md.toolbar-hidden.tabbar-icons,.md .navbar~.toolbar-top-md.toolbar-hidden.tabbar-icons,.navbars~* .toolbar-top.toolbar-hidden.tabbar-icons,.navbars~.page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,.navbars~.toolbar-top.toolbar-hidden.tabbar-icons,.navbar~* .toolbar-top.toolbar-hidden.tabbar-icons,.navbar~.page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,.navbar~.toolbar-top.toolbar-hidden.tabbar-icons{transform:translate3d(0,calc((var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top))*-1),0)}.ios .navbar-hidden+.toolbar-top-ios:not(.toolbar-hidden),.ios .navbar-hidden~* .toolbar-top-ios:not(.toolbar-hidden),.md .navbar-hidden+.toolbar-top-md:not(.toolbar-hidden),.md .navbar-hidden~* .toolbar-top-md:not(.toolbar-hidden),.navbar-hidden+.toolbar-top:not(.toolbar-hidden),.navbar-hidden~* .toolbar-top:not(.toolbar-hidden){transform:translate3d(0,calc(0px - var(--f7-navbar-height)),0)}.ios .navbar-large-hidden+.toolbar-top-ios:not(.toolbar-hidden),.ios .navbar-large-hidden~* .toolbar-top-ios:not(.toolbar-hidden),.md .navbar-large-hidden+.toolbar-top-md:not(.toolbar-hidden),.md .navbar-large-hidden~* .toolbar-top-md:not(.toolbar-hidden),.navbar-large-hidden+.toolbar-top:not(.toolbar-hidden),.navbar-large-hidden~* .toolbar-top:not(.toolbar-hidden){transform:translate3d(0,calc(0px - var(--f7-navbar-height) - var(--f7-navbar-large-title-height)),0)}.ios .toolbar a.icon-only{align-items:center;display:flex;justify-content:center;margin:0;min-height:var(--f7-toolbar-height);min-width:44px}.ios .tabbar-icons .link,.ios .tabbar-icons .tab-link{padding-bottom:4px;padding-top:4px}.ios .tabbar-icons .link i+span,.ios .tabbar-icons .tab-link i+span{margin:4px 0 0}@media (min-width:768px) and (min-height:600px){.ios .tabbar .link,.ios .tabbar .tab-link,.ios .tabbar-icons .link,.ios .tabbar-icons .tab-link{flex-direction:row;justify-content:center}.ios .tabbar .link i+span,.ios .tabbar .tab-link i+span,.ios .tabbar-icons .link i+span,.ios .tabbar-icons .tab-link i+span{margin-left:5px}}.ios .tabbar-scrollable .toolbar-inner{justify-content:flex-start}.ios .tabbar-scrollable .link,.ios .tabbar-scrollable .tab-link{padding:0 8px}.md .toolbar .link{justify-content:center;min-width:48px;padding:0 12px}.md .toolbar a.icon-only{flex-shrink:0;min-width:0}.md .tabbar .link,.md .tabbar .tab-link,.md .tabbar-icons .link,.md .tabbar-icons .tab-link{padding-left:0;padding-right:0}.md .tabbar a.icon-only,.md .tabbar-icons a.icon-only{flex-shrink:1}.md .tabbar .tab-link,.md .tabbar-icons .tab-link{overflow:hidden;position:relative;transition-duration:.3s}.md .tabbar i.icon,.md .tabbar-icons i.icon{position:relative}.md .tabbar i.icon:before,.md .tabbar-icons i.icon:before{background:var(--f7-tabbar-link-active-icon-bg-color);border-radius:32px;content:"";height:32px;left:50%;opacity:0;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) scaleX(.5);transition-duration:.2s;width:64px;z-index:-1}.md .tabbar i.icon+.tabbar-label,.md .tabbar-icons i.icon+.tabbar-label{margin-top:8px}.md .tabbar .tab-link-active i.icon:before,.md .tabbar-icons .tab-link-active i.icon:before{opacity:1;transform:translateX(-50%) translateY(-50%) scaleX(1)}.md .tabbar-icons .link,.md .tabbar-icons .tab-link{padding-bottom:8px;padding-top:8px}.md .tabbar-label{line-height:1.2;max-width:100%;overflow:hidden}.md .tabbar-scrollable .toolbar-inner{overflow:auto}.md .tabbar-scrollable .link,.md .tabbar-scrollable .tab-link{padding:0 12px}:root{--f7-subnavbar-title-line-height:1.2}.ios{--f7-subnavbar-height:44px;--f7-subnavbar-inner-padding-left:8px;--f7-subnavbar-inner-padding-right:8px;--f7-subnavbar-title-font-size:34px;--f7-subnavbar-title-font-weight:700;--f7-subnavbar-title-letter-spacing:-0.03em;--f7-subnavbar-title-margin-left:8px}.md{--f7-subnavbar-height:64px;--f7-subnavbar-inner-padding-left:16px;--f7-subnavbar-inner-padding-right:16px;--f7-subnavbar-title-font-size:22px;--f7-subnavbar-title-font-weight:400;--f7-subnavbar-title-letter-spacing:0;--f7-subnavbar-title-margin-left:0px}.subnavbar{align-items:center;background-color:var(--f7-subnavbar-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-subnavbar-text-color,var(--f7-bars-text-color));display:flex;justify-content:space-between;left:0;position:absolute;top:0;width:100%;z-index:600}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .subnavbar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-subnavbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.subnavbar .subnavbar-title{display:inline-block;font-size:var(--f7-subnavbar-title-font-size);font-weight:var(--f7-subnavbar-title-font-weight);letter-spacing:var(--f7-subnavbar-title-letter-spacing);line-height:var(--f7-subnavbar-title-line-height);margin-right:var(--f7-subnavbar-title-margin-left);overflow:hidden;position:relative;text-align:left;text-overflow:ellpsis;white-space:nowrap}.subnavbar .left,.subnavbar .right{align-items:center;display:flex;flex-shrink:0;justify-content:flex-start}.subnavbar .right:first-child{height:100%;position:absolute}.subnavbar a{color:var(--f7-subnavbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.subnavbar a.link{height:var(--f7-subnavbar-link-height,var(--f7-subnavbar-height));line-height:var(--f7-subnavbar-link-line-height,var(--f7-subnavbar-height))}.subnavbar a.icon-only{min-width:var(--f7-subnavbar-height)}.subnavbar.navbar-hidden:before,.subnavbar.no-outline:after{display:none!important}.subnavbar:after,.subnavbar:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.subnavbar:after{background-color:var(--f7-subnavbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.subnavbar-inner{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:space-between;overflow:hidden;padding:0 calc(var(--f7-subnavbar-inner-padding-left) + var(--f7-safe-area-right)) 0 calc(var(--f7-subnavbar-inner-padding-right) + var(--f7-safe-area-left));width:100%}.navbar .subnavbar{top:100%}.page>.subnavbar,.view>.subnavbar,.views>.subnavbar{position:absolute}.navbars~* .subnavbar,.navbars~.page-with-subnavbar:not(.no-navbar) .subnavbar,.navbars~.subnavbar,.navbar~* .subnavbar,.navbar~.page-with-subnavbar:not(.no-navbar) .subnavbar,.navbar~.subnavbar,.page-with-subnavbar .navbar~* .subnavbar,.page-with-subnavbar .navbar~.subnavbar{top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbar .title-large~.subnavbar,.navbars~.page-with-navbar-large:not(.no-navbar) .subnavbar,.navbar~.page-with-navbar-large:not(.no-navbar) .subnavbar,.page-with-subnavbar.page-with-navbar-large .navbar~* .subnavbar,.page-with-subnavbar.page-with-navbar-large .navbar~.subnavbar{top:calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.page-with-subnavbar,.subnavbar~*{--f7-page-subnavbar-offset:var(--f7-subnavbar-height)}.ios .subnavbar{height:calc(var(--f7-subnavbar-height) + 1px);margin-top:-1px;padding-top:1px}.ios .subnavbar .title{align-self:flex-start;flex-shrink:10}.ios .subnavbar .left a+a,.ios .subnavbar .right a+a{margin-right:16px}.ios .subnavbar .left{margin-left:10px}.ios .subnavbar .right{margin-right:10px}.ios .subnavbar .right:first-child{left:8px}.ios .subnavbar a.link{justify-content:flex-start}.ios .subnavbar a.icon-only{justify-content:center;margin:0}.md .subnavbar{height:var(--f7-subnavbar-height)}.md .subnavbar .right{margin-right:auto}.md .subnavbar .right:first-child{left:16px}.md .subnavbar a.link{justify-content:center;padding:0 12px}.md .subnavbar a.icon-only{flex-shrink:0;padding:0 12px}.md .subnavbar-inner>a.link:first-child{margin-right:calc(var(--f7-subnavbar-inner-padding-right)*-1)}.md .subnavbar-inner>a.link:last-child{margin-left:calc(var(--f7-subnavbar-inner-padding-left)*-1)}:root{--f7-block-padding-horizontal:16px;--f7-block-padding-vertical:16px;--f7-block-font-size:inherit;--f7-block-header-margin:10px;--f7-block-footer-margin:10px;--f7-block-header-font-size:14px;--f7-block-footer-font-size:14px;--f7-block-title-text-transform:none;--f7-block-title-white-space:nowrap;--f7-block-title-medium-text-transform:none;--f7-block-title-large-text-transform:none;--f7-block-inset-side-margin:16px}:root .dark,:root.dark{--f7-block-outline-border-color:rgba(255,255,255,0.15)}.ios{--f7-block-text-color:inherit;--f7-block-margin-vertical:35px;--f7-block-outline-border-color:rgba(0,0,0,0.22);--f7-block-title-font-size:16px;--f7-block-title-font-weight:600;--f7-block-title-line-height:20px;--f7-block-title-margin-bottom:10px;--f7-block-title-medium-font-size:22px;--f7-block-title-medium-font-weight:bold;--f7-block-title-medium-line-height:1.4;--f7-block-title-large-font-size:30px;--f7-block-title-large-font-weight:bold;--f7-block-title-large-line-height:1.3;--f7-block-inset-border-radius:8px;--f7-block-title-text-color:#000;--f7-block-strong-text-color:#000;--f7-block-header-text-color:rgba(0,0,0,0.45);--f7-block-footer-text-color:rgba(0,0,0,0.45);--f7-block-strong-bg-color:#fff;--f7-block-title-medium-text-color:#000;--f7-block-title-large-text-color:#000}.ios .dark,.ios.dark{--f7-block-title-text-color:#fff;--f7-block-header-text-color:rgba(255,255,255,0.55);--f7-block-footer-text-color:rgba(255,255,255,0.55);--f7-block-strong-text-color:#fff;--f7-block-strong-bg-color:#1c1c1d;--f7-block-title-medium-text-color:#fff;--f7-block-title-large-text-color:#fff}.md{--f7-block-margin-vertical:32px;--f7-block-title-font-size:inherit;--f7-block-title-font-weight:500;--f7-block-title-line-height:16px;--f7-block-title-margin-bottom:16px;--f7-block-title-medium-font-size:16px;--f7-block-title-medium-font-weight:500;--f7-block-title-medium-line-height:1.3;--f7-block-title-large-font-size:22px;--f7-block-title-large-font-weight:500;--f7-block-title-large-line-height:1.2;--f7-block-inset-border-radius:16px}.md,.md .dark,.md [class*=color-]{--f7-block-text-color:var(--f7-md-on-surface);--f7-block-strong-text-color:var(--f7-md-on-surface);--f7-block-outline-border-color:var(--f7-md-outline);--f7-block-title-text-color:var(--f7-theme-color);--f7-block-title-medium-text-color:var(--f7-theme-color);--f7-block-title-large-text-color:var(--f7-theme-color);--f7-block-strong-bg-color:var(--f7-md-surface-1);--f7-block-header-text-color:var(--f7-md-on-surface-variant);--f7-block-footer-text-color:var(--f7-md-on-surface-variant)}.block{box-sizing:border-box;color:var(--f7-block-text-color);font-size:var(--f7-block-font-size);margin:var(--f7-block-margin-vertical) 0;padding-bottom:0;padding-left:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));padding-top:0;position:relative;z-index:1}.block>h1:first-child,.block>h2:first-child,.block>h3:first-child,.block>h4:first-child,.block>p:first-child{margin-top:0}.block>h1:last-child,.block>h2:last-child,.block>h3:last-child,.block>h4:last-child,.block>p:last-child{margin-bottom:0}.block-strong,.ios .block-strong-ios,.md .block-strong-md{background-color:var(--f7-block-strong-bg-color);color:var(--f7-block-strong-text-color);padding-bottom:var(--f7-block-padding-vertical);padding-top:var(--f7-block-padding-vertical)}.block-outline:not(.inset):before,.ios .block-outline-ios:not(.inset):not(.inset-ios):before,.md .block-outline-md:not(.inset):not(.inset-md):before{background-color:var(--f7-block-outline-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.block-outline:not(.inset):after,.ios .block-outline-ios:not(.inset):not(.inset-ios):after,.md .block-outline-md:not(.inset):not(.inset-md):after{background-color:var(--f7-block-outline-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.block-outline.inset,.ios .block-outline-ios.inset,.ios .block-outline-ios.inset-ios,.md .block-outline-md.inset,.md .block-outline-md.inset-md{border:1px solid var(--f7-block-outline-border-color)}.block-title{color:var(--f7-block-title-text-color);font-size:var(--f7-block-title-font-size,inherit);font-weight:var(--f7-block-title-font-weight);line-height:var(--f7-block-title-line-height);margin:0;margin:var(--f7-block-margin-vertical) calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right)) var(--f7-block-title-margin-bottom) calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));overflow:hidden;position:relative;text-overflow:ellipsis;text-transform:var(--f7-block-title-text-transform);white-space:var(--f7-block-title-white-space)}.block-title+.block,.block-title+.block-header,.block-title+.card,.block-title+.list,.block-title+.timeline{margin-top:0}.block-title-medium{color:var(--f7-block-title-medium-text-color);font-size:var(--f7-block-title-medium-font-size);font-weight:var(--f7-block-title-medium-font-weight);line-height:var(--f7-block-title-medium-line-height);text-transform:var(--f7-block-title-medium-text-transform)}.block-title-large{color:var(--f7-block-title-large-text-color);font-size:var(--f7-block-title-large-font-size);font-weight:var(--f7-block-title-large-font-weight);line-height:var(--f7-block-title-large-line-height);text-transform:var(--f7-block-title-large-text-transform)}.block>.block-title:first-child,.list>.block-title:first-child{margin-left:0;margin-right:0;margin-top:0}.block-header{color:var(--f7-block-header-text-color);font-size:var(--f7-block-header-font-size);margin-bottom:var(--f7-block-header-margin);margin-top:var(--f7-block-margin-vertical)}.block-header+.block,.block-header+.card,.block-header+.list,.block-header+.timeline{margin-top:var(--f7-block-header-margin)}.block-footer{color:var(--f7-block-footer-text-color);font-size:var(--f7-block-footer-font-size);margin-bottom:var(--f7-block-margin-vertical);margin-top:var(--f7-block-footer-margin)}.block-footer,.block-header{padding-bottom:0;padding-left:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));padding-top:0}.block-footer h1:first-child,.block-footer h2:first-child,.block-footer h3:first-child,.block-footer h4:first-child,.block-footer p:first-child,.block-footer ul:first-child,.block-header h1:first-child,.block-header h2:first-child,.block-header h3:first-child,.block-header h4:first-child,.block-header p:first-child,.block-header ul:first-child{margin-top:0}.block-footer h1:last-child,.block-footer h2:last-child,.block-footer h3:last-child,.block-footer h4:last-child,.block-footer p:last-child,.block-footer ul:last-child,.block-header h1:last-child,.block-header h2:last-child,.block-header h3:last-child,.block-header h4:last-child,.block-header p:last-child,.block-header ul:last-child{margin-bottom:0}.block-footer h1:first-child:last-child,.block-footer h2:first-child:last-child,.block-footer h3:first-child:last-child,.block-footer h4:first-child:last-child,.block-footer p:first-child:last-child,.block-footer ul:first-child:last-child,.block-header h1:first-child:last-child,.block-header h2:first-child:last-child,.block-header h3:first-child:last-child,.block-header h4:first-child:last-child,.block-header p:first-child:last-child,.block-header ul:first-child:last-child{margin-bottom:0;margin-top:0}.block .block-header,.card .block-header,.list .block-header,.timeline .block-header{margin-top:0}.block .block-footer,.card .block-footer,.list .block-footer,.timeline .block-footer{margin-bottom:0}.block+.block-footer,.card+.block-footer,.list+.block-footer,.timeline+.block-footer{margin-top:calc((var(--f7-block-margin-vertical) - var(--f7-block-footer-margin))*-1)}.block+.block-footer{margin-bottom:var(--f7-block-margin-vertical)}.block .block-footer,.block .block-header{padding:0}.block.inset,.ios .block.inset-ios,.md .block.inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block-strong.inset:after,.block-strong.inset:before,.ios .block-strong-ios.inset-ios:after,.ios .block-strong-ios.inset-ios:before,.ios .block-strong-ios.inset:after,.ios .block-strong-ios.inset:before,.ios .block-strong.inset-ios:after,.ios .block-strong.inset-ios:before,.md .block-strong-md.inset-md:after,.md .block-strong-md.inset-md:before,.md .block-strong-md.inset:after,.md .block-strong-md.inset:before,.md .block-strong.inset-md:after,.md .block-strong.inset-md:before{display:none!important}@media (min-width:480px){.block.xsmall-inset,.ios .block.xsmall-inset-ios,.md .block.xsmall-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.xsmall-inset:after,.block.xsmall-inset:before,.ios .block.xsmall-inset-ios:after,.ios .block.xsmall-inset-ios:before,.md .block.xsmall-inset-md:after,.md .block.xsmall-inset-md:before{display:none!important}.block.xsmall-inset.block-outline,.ios .block.xsmall-inset-ios.block-outline,.ios .block.xsmall-inset-ios.block-outline-ios,.md .block.xsmall-inset-md.block-outline,.md .block.xsmall-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:568px){.block.small-inset,.ios .block.small-inset-ios,.md .block.small-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.small-inset:after,.block.small-inset:before,.ios .block.small-inset-ios:after,.ios .block.small-inset-ios:before,.md .block.small-inset-md:after,.md .block.small-inset-md:before{display:none!important}.block.small-inset.block-outline,.ios .block.small-inset-ios.block-outline,.ios .block.small-inset-ios.block-outline-ios,.md .block.small-inset-md.block-outline,.md .block.small-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:768px){.block.medium-inset,.ios .block.medium-inset-ios,.md .block.medium-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.medium-inset:after,.block.medium-inset:before,.ios .block.medium-inset-ios:after,.ios .block.medium-inset-ios:before,.md .block.medium-inset-md:after,.md .block.medium-inset-md:before{display:none!important}.block.medium-inset.block-outline,.ios .block.medium-inset-ios.block-outline,.ios .block.medium-inset-ios.block-outline-ios,.md .block.medium-inset-md.block-outline,.md .block.medium-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:1024px){.block.large-inset,.ios .block.large-inset-ios,.md .block.large-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.large-inset:after,.block.large-inset:before,.ios .block.large-inset-ios:after,.ios .block.large-inset-ios:before,.md .block.large-inset-md:after,.md .block.large-inset-md:before{display:none!important}.block.large-inset.block-outline,.ios .block.large-inset-ios.block-outline,.ios .block.large-inset-ios.block-outline-ios,.md .block.large-inset-md.block-outline,.md .block.large-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:1200px){.block.xlarge-inset,.ios .block.xlarge-inset-ios,.md .block.xlarge-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.xlarge-inset:after,.block.xlarge-inset:before,.ios .block.xlarge-inset-ios:after,.ios .block.xlarge-inset-ios:before,.md .block.xlarge-inset-md:after,.md .block.xlarge-inset-md:before{display:none!important}.block.xlarge-inset.block-outline,.ios .block.xlarge-inset-ios.block-outline,.ios .block.xlarge-inset-ios.block-outline-ios,.md .block.xlarge-inset-md.block-outline,.md .block.xlarge-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}:root{--f7-list-inset-side-margin:16px;--f7-list-item-padding-horizontal:16px;--f7-list-item-padding-vertical:8px;--f7-list-media-item-padding-horizontal:16px;--f7-list-item-text-max-lines:2;--f7-list-chevron-icon-font-size:20px;--f7-list-item-media-margin:16px;--f7-list-item-title-font-size:inherit;--f7-list-item-title-font-weight:400;--f7-list-item-title-line-height:inherit;--f7-list-item-title-white-space:nowrap;--f7-list-item-subtitle-font-weight:400;--f7-list-item-subtitle-line-height:inherit;--f7-list-item-text-font-weight:400;--f7-list-item-after-font-weight:400;--f7-list-item-after-line-height:inherit;--f7-list-item-header-font-size:12px;--f7-list-item-header-font-weight:400;--f7-list-item-header-line-height:1.2;--f7-list-item-footer-font-size:12px;--f7-list-item-footer-font-weight:400;--f7-list-item-footer-line-height:1.2;--f7-list-button-font-size:inherit;--f7-list-button-font-weight:400;--f7-list-button-text-align:center;--f7-list-group-title-line-height:inherit;--f7-menu-list-font-size:14px;--f7-menu-list-item-title-font-size:14px;--f7-menu-list-item-title-font-weight:500;--f7-menu-list-item-subtitle-font-size:14px;--f7-menu-list-item-text-font-size:14px;--f7-menu-list-item-after-font-size:14px;--f7-list-outline-border-color:rgba(0,0,0,0.22);--f7-list-chevron-icon-color:rgba(0,0,0,0.2)}:root .dark,:root.dark{--f7-list-button-border-color:rgba(255,255,255,0.15);--f7-list-outline-border-color:rgba(255,255,255,0.15);--f7-list-group-title-border-color:rgba(255,255,255,0.15);--f7-list-chevron-icon-color:rgba(255,255,255,0.3)}.ios{--f7-list-in-list-padding-left:30px;--f7-list-inset-border-radius:8px;--f7-list-margin-vertical:35px;--f7-list-font-size:17px;--f7-list-chevron-icon-area:20px;--f7-list-item-title-text-color:inherit;--f7-list-item-subtitle-text-color:inherit;--f7-list-link-pressed-bg-color:rgba(0,0,0,0.15);--f7-list-item-subtitle-font-size:15px;--f7-list-item-text-font-size:15px;--f7-list-item-text-line-height:21px;--f7-list-item-after-font-size:inherit;--f7-list-item-after-padding:5px;--f7-list-item-min-height:44px;--f7-list-item-media-icons-margin:5px;--f7-list-media-item-padding-vertical:10px;--f7-list-media-item-title-font-weight:600;--f7-list-button-border-color:rgba(0,0,0,0.22);--f7-list-group-title-border-color:rgba(0,0,0,0.22);--f7-list-group-title-height:31px;--f7-list-group-title-font-size:inherit;--f7-list-group-title-font-weight:400;--f7-menu-list-offset:8px;--f7-menu-list-border-radius:8px;--f7-menu-list-item-bg-color:transparent;--f7-menu-list-item-text-color:inherit;--f7-menu-list-item-min-height:44px;--f7-list-item-border-color:rgba(0,0,0,0.22);--f7-list-outline-inset-border-color:rgba(0,0,0,0.22);--f7-list-strong-bg-color:#fff;--f7-list-item-after-text-color:rgba(0,0,0,0.45);--f7-list-item-header-text-color:inherit;--f7-list-item-footer-text-color:rgba(0,0,0,0.45);--f7-list-item-text-text-color:rgba(0,0,0,0.45);--f7-list-group-title-text-color:rgba(0,0,0,0.45);--f7-list-group-title-bg-color:#f7f7f7;--f7-menu-list-item-selected-text-color:var(--f7-theme-color);--f7-menu-list-item-selected-bg-color:rgba(var(--f7-theme-color-rgb),0.15)}.ios .dark,.ios.dark{--f7-list-item-border-color:rgba(255,255,255,0.15);--f7-list-outline-inset-color:rgba(255,255,255,0.15);--f7-list-strong-bg-color:#1c1c1d;--f7-list-item-after-text-color:rgba(255,255,255,0.55);--f7-list-item-header-text-color:rgba(255,255,255,0.55);--f7-list-item-footer-text-color:rgba(255,255,255,0.55);--f7-list-item-text-text-color:rgba(255,255,255,0.55);--f7-list-group-title-text-color:rgba(255,255,255,0.55);--f7-list-group-title-bg-color:#232323;--f7-list-link-pressed-bg-color:rgba(255,255,255,0.08);--f7-menu-list-item-selected-text-color:inherit;--f7-menu-list-item-selected-bg-color:var(--f7-theme-color)}.md{--f7-list-in-list-padding-left:24px;--f7-list-inset-border-radius:16px;--f7-list-margin-vertical:32px;--f7-list-font-size:16px;--f7-list-chevron-icon-area:26px;--f7-list-item-subtitle-font-size:14px;--f7-list-item-text-font-size:14px;--f7-list-item-text-line-height:20px;--f7-list-item-after-font-size:14px;--f7-list-item-after-padding:8px;--f7-list-item-min-height:48px;--f7-list-item-media-icons-margin:8px;--f7-list-media-item-padding-vertical:12px;--f7-list-media-item-title-font-weight:500;--f7-list-button-border-color:transparent;--f7-list-group-title-border-color:transparent;--f7-list-group-title-height:48px;--f7-list-group-title-font-size:16px;--f7-list-group-title-font-weight:400;--f7-menu-list-offset:16px;--f7-menu-list-border-radius:999px;--f7-menu-list-item-min-height:56px;--f7-list-link-pressed-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-list-outline-inset-border-color:var(--f7-md-outline);--f7-list-item-border-color:var(--f7-md-outline);--f7-list-item-title-text-color:var(--f7-md-on-surface);--f7-list-item-subtitle-text-color:var(--f7-md-on-surface);--f7-list-group-title-bg-color:var(--f7-md-surface-2);--f7-list-group-title-text-color:var(--f7-md-on-surface-variant);--f7-list-strong-bg-color:var(--f7-md-surface-1);--f7-list-item-after-text-color:var(--f7-md-on-surface-variant);--f7-list-item-text-text-color:var(--f7-md-on-surface-variant);--f7-list-item-header-text-color:var(--f7-md-on-surface-variant);--f7-list-item-footer-text-color:var(--f7-md-on-surface-variant);--f7-menu-list-item-text-color:var(--f7-md-on-surface-variant);--f7-menu-list-item-bg-color:var(--f7-md-surface-1);--f7-menu-list-item-selected-text-color:var(--f7-md-on-secondary-container);--f7-menu-list-item-selected-bg-color:var(--f7-md-secondary-container)}:root{--f7-list-chevron-icon-left:"chevron_left";--f7-list-chevron-icon-right:"chevron_right"}.list{font-size:var(--f7-list-font-size);margin:var(--f7-list-margin-vertical) 0;position:relative;z-index:1}.ios .list-strong-ios ul,.list-strong ul,.md .list-strong-md ul{background:var(--f7-list-strong-bg-color)}.ios .list-outline-ios ul:before,.list-outline ul:before,.md .list-outline-md ul:before{background-color:var(--f7-list-outline-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.ios .list-outline-ios ul:after,.list-outline ul:after,.md .list-outline-md ul:after{background-color:var(--f7-list-outline-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .list-outline-ios.inset,.ios .list-outline-ios.inset-ios,.list-outline.inset,.md .list-outline-md.inset,.md .list-outline-md.inset-md{border:1px solid var(--f7-list-outline-inset-border-color)}.list ul{list-style:none;margin:0;padding:0;position:relative}.list ul ul{padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-list-in-list-padding-left))}.list ul ul:after,.list ul ul:before{display:none!important}.list .item-media,.list li{box-sizing:border-box;position:relative}.list .item-media{align-items:center;display:flex;flex-shrink:0;flex-wrap:nowrap;padding-bottom:var(--f7-list-item-padding-vertical);padding-top:var(--f7-list-item-padding-vertical)}.list .item-media+.item-inner{margin-right:var(--f7-list-item-media-margin)}.list .item-media i+i,.list .item-media i+img{margin-right:var(--f7-list-item-media-icons-margin)}.list .item-after{padding-right:var(--f7-list-item-after-padding)}.list .item-inner{align-items:center;align-self:stretch;box-sizing:border-box;display:flex;justify-content:space-between;min-height:calc(var(--f7-list-item-min-height));min-width:0;padding-bottom:var(--f7-list-item-padding-vertical);padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));padding-top:var(--f7-list-item-padding-vertical);position:relative;width:100%}.list .item-title{color:var(--f7-list-item-title-text-color);flex-shrink:1;font-size:var(--f7-list-item-title-font-size);font-weight:var(--f7-list-item-title-font-weight);line-height:var(--f7-list-item-title-line-height);max-width:100%;min-width:0;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:var(--f7-list-item-title-white-space)}.list .item-after{color:var(--f7-list-item-after-text-color);display:flex;flex-shrink:0;font-size:var(--f7-list-item-after-font-size);font-weight:var(--f7-list-item-after-font-weight);line-height:var(--f7-list-item-after-line-height);margin-right:auto;white-space:nowrap}.list .item-footer,.list .item-header{white-space:normal}.list .item-header{color:var(--f7-list-item-header-text-color);font-size:var(--f7-list-item-header-font-size);font-weight:var(--f7-list-item-header-font-weight);line-height:var(--f7-list-item-header-line-height)}.list .item-footer{color:var(--f7-list-item-footer-text-color);font-size:var(--f7-list-item-footer-font-size);font-weight:var(--f7-list-item-footer-font-weight);line-height:var(--f7-list-item-footer-line-height)}.list .item-link,.list .list-button,.list label.item-content{cursor:pointer;overflow:hidden;position:relative;transition-duration:.3s;transition-property:background-color,color;z-index:0}.list .item-link,.list .list-button{display:block}.list .item-link,.list label.item-content{color:inherit}.list .item-link.active-state,.list label.item-content.active-state{background-color:var(--f7-list-link-pressed-bg-color)}.list .item-link .item-inner{padding-left:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left))}.list .item-content{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;min-height:calc(var(--f7-list-item-min-height));padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.list .item-subtitle{color:var(--f7-list-item-subtitle-text-color);font-size:var(--f7-list-item-subtitle-font-size);font-weight:var(--f7-list-item-subtitle-font-weight);line-height:var(--f7-list-item-subtitle-line-height);max-width:100%;white-space:nowrap}.list .item-subtitle,.list .item-text{overflow:hidden;position:relative;text-overflow:ellipsis}.list .item-text{-webkit-line-clamp:var(--f7-list-item-text-max-lines);-webkit-box-orient:vertical;color:var(--f7-list-item-text-text-color);display:-webkit-box;font-size:var(--f7-list-item-text-font-size);font-weight:var(--f7-list-item-text-font-weight);line-height:var(--f7-list-item-text-line-height);max-height:calc(var(--f7-list-item-text-line-height)*var(--f7-list-item-text-max-lines))}.list .item-title-row{box-sizing:border-box;display:flex;justify-content:space-between;position:relative}.list .item-title-row .item-after{align-self:center}.list li:last-child .list-button:after,.list li:last-child li:last-child>.item-content>.item-inner:after,.list li:last-child li:last-child>.item-inner:after,.list li:last-child li:last-child>.item-link>.item-content>.item-inner:after,.list li:last-child li:last-child>.swipeout-content>.item-content>.item-inner:after,.list li:last-child>.item-content>.item-inner:after,.list li:last-child>.item-inner:after,.list li:last-child>.item-link>.item-content>.item-inner:after,.list li:last-child>.swipeout-content>.item-content>.item-inner:after{display:none!important}.list li li:last-child .item-inner:after,.list li:last-child li .item-inner:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.list-button{--f7-touch-ripple-color:var(--f7-link-touch-ripple-color,rgba(var(--f7-theme-color-rgb),0.25));color:var(--f7-list-button-text-color,var(--f7-theme-color));font-size:var(--f7-list-button-font-size);font-weight:var(--f7-list-button-font-weight);line-height:var(--f7-list-item-min-height);padding:0 var(--f7-list-item-padding-horizontal);text-align:var(--f7-list-button-text-align)}.ios .list-button.active-state{background-color:var(--f7-list-button-pressed-bg-color,rgba(var(--f7-theme-color-rgb),.15))}.md .list-button.active-state{background-color:var(--f7-list-button-pressed-bg-color,transparent)}.ios .list-dividers-ios .list-button:after,.list-dividers .list-button:after,.md .list-dividers-md .list-button:after{background-color:var(--f7-list-button-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.list-button[class*=color-]{--f7-list-button-text-color:var(--f7-theme-color)}.simple-list li{align-content:center;align-items:center;box-sizing:border-box;display:flex;height:var(--f7-list-item-min-height);justify-content:space-between;line-height:var(--f7-list-item-min-height);max-width:100%;padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));position:relative;text-overflow:ellipsis;white-space:nowrap}.simple-list li:after{left:var(--f7-list-item-padding-horizontal);left:0;right:0;right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));width:auto}.simple-list li:last-child:after{display:none!important}.links-list li{z-index:1}.links-list a{align-content:center;align-items:center;box-sizing:border-box;color:inherit;display:block;display:flex;height:var(--f7-list-item-min-height);justify-content:space-between;max-width:100%;overflow:hidden;position:relative;text-overflow:ellipsis;transition-duration:.3s;transition-property:background-color;white-space:nowrap}.links-list a .ripple-wave{z-index:0}.links-list a:after{width:auto}.links-list a.active-state{background-color:var(--f7-list-link-pressed-bg-color)}.links-list a{padding-left:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.links-list a:after{left:0;right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.links-list li:last-child a:after{display:none!important}.ios .list-dividers-ios .item-inner:after,.ios .list-dividers-ios.links-list a:after,.ios .list-dividers-ios.simple-list li:after,.list-dividers .item-inner:after,.list-dividers.links-list a:after,.list-dividers.simple-list li:after,.md .list-dividers-md .item-inner:after,.md .list-dividers-md.links-list a:after,.md .list-dividers-md.simple-list li:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item>.item-link,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li>.item-link{border-radius:16px;margin-left:calc(var(--f7-list-item-padding-horizontal)/2);margin-right:calc(var(--f7-list-item-padding-horizontal)/2)}.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item>.item-link>.item-content,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li>.item-link>.item-content{margin-left:0;margin-right:0}.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content{padding-right:calc(var(--f7-list-item-padding-horizontal)/2 + var(--f7-safe-area-right))}.media-list,li.media-item{--f7-list-item-padding-vertical:var(--f7-list-media-item-padding-vertical);--f7-list-item-padding-horizontal:var(--f7-list-media-item-padding-horizontal)}.media-list .item-title,li.media-item .item-title{font-weight:var(--f7-list-media-item-title-font-weight,var(--f7-list-item-title-font-weight,inherit))}.media-list .item-inner,li.media-item .item-inner{align-self:stretch;display:block}.media-list .item-media img,li.media-item .item-media img{display:block}.media-list .item-link .item-inner,li.media-item .item-link .item-inner{padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left))}.media-list .item-link .item-title-row,li.media-item .item-link .item-title-row{padding-left:calc(var(--f7-list-chevron-icon-area))}.media-list .chevron-center .item-link .item-inner,.media-list .item-link.chevron-center .item-inner,.media-list.chevron-center .item-link .item-inner,li.media-item .chevron-center .item-link .item-inner,li.media-item .item-link.chevron-center .item-inner,li.media-item.chevron-center .item-link .item-inner{padding-left:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left))}.media-list .chevron-center .item-title-row,.media-list.chevron-center .item-title-row,li.media-item .chevron-center .item-title-row,li.media-item.chevron-center .item-title-row{padding-left:0}.links-list a:before,.list .item-link .item-inner:before,.media-list .chevron-center .item-link .item-inner:before,.media-list .item-link .item-title-row:before,.media-list .item-link.chevron-center .item-inner:before,.media-list.chevron-center .item-link .item-inner:before,li.media-item .chevron-center .item-link .item-inner:before,li.media-item .item-link .item-title-row:before,li.media-item .item-link.chevron-center .item-inner:before,li.media-item.chevron-center .item-link .item-inner:before{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-list-chevron-icon-color);content:var(--f7-list-chevron-icon-left);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-size:var(--f7-list-chevron-icon-font-size);font-style:normal;font-weight:400;height:100%;height:14px;left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));letter-spacing:normal;line-height:1;line-height:14px;margin-top:-7px;pointer-events:none;position:absolute;text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;white-space:nowrap;width:100%;width:8px}.media-list .chevron-center .item-title-row:before,.media-list .item-link .item-inner:before,.media-list.chevron-center .item-title-row:before,li.media-item .chevron-center .item-title-row:before,li.media-item .item-link .item-inner:before,li.media-item.chevron-center .item-title-row:before{display:none}.media-list .item-link .item-title-row:before,li.media-item .item-link .item-title-row:before{left:0}.list-group ul:after,.list-group ul:before{z-index:25!important}.list-group+.list-group ul:before{display:none!important}.list-group-title,li.list-group-title{align-content:center;align-items:center;background-color:var(--f7-list-group-title-bg-color);box-sizing:border-box;color:var(--f7-list-group-title-text-color);display:flex;font-size:var(--f7-list-group-title-font-size);font-weight:var(--f7-list-group-title-font-weight);height:var(--f7-list-group-title-height);line-height:var(--f7-list-group-title-line-height);margin-top:-1px;max-width:100%;overflow:hidden;padding-bottom:0;padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));padding-top:0;position:relative;text-overflow:ellipsis;white-space:nowrap;z-index:15}.list-group-title:before,li.list-group-title:before{background-color:var(--f7-list-group-title-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.list-group-title:after,li.list-group-title:after{display:none!important}.list-group>.list-group-title,.list-group>ul>.list-group-title{margin-top:0;position:sticky;top:0;z-index:20}.page-with-navbar-large .list-group>.list-group-title,.page-with-navbar-large .list-group>ul>.list-group-title{top:calc(var(--f7-navbar-large-title-height)*-1)}.ios .list.inset-ios,.list.inset,.md .list.inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.inset-ios .block-title,.list.inset .block-title,.md .list.inset-md .block-title{margin-left:0;margin-right:0}.ios .list.inset-ios ul,.list.inset ul,.md .list.inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.inset-ios ul:after,.ios .list.inset-ios ul:before,.list.inset ul:after,.list.inset ul:before,.md .list.inset-md ul:after,.md .list.inset-md ul:before{display:none!important}.ios .list.inset-ios li.swipeout:first-child,.ios .list.inset-ios li:first-child>a,.list.inset li.swipeout:first-child,.list.inset li:first-child>a,.md .list.inset-md li.swipeout:first-child,.md .list.inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.inset-ios li.swipeout:last-child,.ios .list.inset-ios li:last-child>a,.list.inset li.swipeout:last-child,.list.inset li:last-child>a,.md .list.inset-md li.swipeout:last-child,.md .list.inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.inset-ios li.swipeout:first-child:last-child,.ios .list.inset-ios li:first-child:last-child>a,.list.inset li.swipeout:first-child:last-child,.list.inset li:first-child:last-child>a,.md .list.inset-md li.swipeout:first-child:last-child,.md .list.inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}@media (min-width:480px){.ios .list.xsmall-inset-ios,.list.xsmall-inset,.md .list.xsmall-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.xsmall-inset-ios .block-title,.list.xsmall-inset .block-title,.md .list.xsmall-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.xsmall-inset-ios ul,.list.xsmall-inset ul,.md .list.xsmall-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xsmall-inset-ios ul:after,.ios .list.xsmall-inset-ios ul:before,.list.xsmall-inset ul:after,.list.xsmall-inset ul:before,.md .list.xsmall-inset-md ul:after,.md .list.xsmall-inset-md ul:before{display:none!important}.ios .list.xsmall-inset-ios li:first-child>a,.list.xsmall-inset li:first-child>a,.md .list.xsmall-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.xsmall-inset-ios li:last-child>a,.list.xsmall-inset li:last-child>a,.md .list.xsmall-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.xsmall-inset-ios li:first-child:last-child>a,.list.xsmall-inset li:first-child:last-child>a,.md .list.xsmall-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xsmall-inset-ios.list-outline ul,.ios .list.xsmall-inset-ios.list-outline-ios ul,.list.xsmall-inset.list-outline ul,.md .list.xsmall-inset-md.list-outline ul,.md .list.xsmall-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:568px){.ios .list.small-inset-ios,.list.small-inset,.md .list.small-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.small-inset-ios .block-title,.list.small-inset .block-title,.md .list.small-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.small-inset-ios ul,.list.small-inset ul,.md .list.small-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.small-inset-ios ul:after,.ios .list.small-inset-ios ul:before,.list.small-inset ul:after,.list.small-inset ul:before,.md .list.small-inset-md ul:after,.md .list.small-inset-md ul:before{display:none!important}.ios .list.small-inset-ios li:first-child>a,.list.small-inset li:first-child>a,.md .list.small-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.small-inset-ios li:last-child>a,.list.small-inset li:last-child>a,.md .list.small-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.small-inset-ios li:first-child:last-child>a,.list.small-inset li:first-child:last-child>a,.md .list.small-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.small-inset-ios.list-outline ul,.ios .list.small-inset-ios.list-outline-ios ul,.list.small-inset.list-outline ul,.md .list.small-inset-md.list-outline ul,.md .list.small-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:768px){.ios .list.medium-inset-ios,.list.medium-inset,.md .list.medium-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.medium-inset-ios .block-title,.list.medium-inset .block-title,.md .list.medium-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.medium-inset-ios ul,.list.medium-inset ul,.md .list.medium-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.medium-inset-ios ul:after,.ios .list.medium-inset-ios ul:before,.list.medium-inset ul:after,.list.medium-inset ul:before,.md .list.medium-inset-md ul:after,.md .list.medium-inset-md ul:before{display:none!important}.ios .list.medium-inset-ios li:first-child>a,.list.medium-inset li:first-child>a,.md .list.medium-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.medium-inset-ios li:last-child>a,.list.medium-inset li:last-child>a,.md .list.medium-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.medium-inset-ios li:first-child:last-child>a,.list.medium-inset li:first-child:last-child>a,.md .list.medium-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.medium-inset-ios.list-outline ul,.ios .list.medium-inset-ios.list-outline-ios ul,.list.medium-inset.list-outline ul,.md .list.medium-inset-md.list-outline ul,.md .list.medium-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:1024px){.ios .list.large-inset-ios,.list.large-inset,.md .list.large-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.large-inset-ios .block-title,.list.large-inset .block-title,.md .list.large-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.large-inset-ios ul,.list.large-inset ul,.md .list.large-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.large-inset-ios ul:after,.ios .list.large-inset-ios ul:before,.list.large-inset ul:after,.list.large-inset ul:before,.md .list.large-inset-md ul:after,.md .list.large-inset-md ul:before{display:none!important}.ios .list.large-inset-ios li:first-child>a,.list.large-inset li:first-child>a,.md .list.large-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.large-inset-ios li:last-child>a,.list.large-inset li:last-child>a,.md .list.large-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.large-inset-ios li:first-child:last-child>a,.list.large-inset li:first-child:last-child>a,.md .list.large-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.large-inset-ios.list-outline ul,.ios .list.large-inset-ios.list-outline-ios ul,.list.large-inset.list-outline ul,.md .list.large-inset-md.list-outline ul,.md .list.large-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:1200px){.ios .list.xlarge-inset-ios,.list.xlarge-inset,.md .list.xlarge-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.xlarge-inset-ios .block-title,.list.xlarge-inset .block-title,.md .list.xlarge-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.xlarge-inset-ios ul,.list.xlarge-inset ul,.md .list.xlarge-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xlarge-inset-ios ul:after,.ios .list.xlarge-inset-ios ul:before,.list.xlarge-inset ul:after,.list.xlarge-inset ul:before,.md .list.xlarge-inset-md ul:after,.md .list.xlarge-inset-md ul:before{display:none!important}.ios .list.xlarge-inset-ios li:first-child>a,.list.xlarge-inset li:first-child>a,.md .list.xlarge-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.xlarge-inset-ios li:last-child>a,.list.xlarge-inset li:last-child>a,.md .list.xlarge-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.xlarge-inset-ios li:first-child:last-child>a,.list.xlarge-inset li:first-child:last-child>a,.md .list.xlarge-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xlarge-inset-ios.list-outline ul,.ios .list.xlarge-inset-ios.list-outline-ios ul,.list.xlarge-inset.list-outline ul,.md .list.xlarge-inset-md.list-outline ul,.md .list.xlarge-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}.list .no-chevron,.list.no-chevron,.menu-list{--f7-list-chevron-icon-color:transparent;--f7-list-chevron-icon-area:0px}.menu-list{--f7-list-font-size:var(--f7-menu-list-font-size);--f7-list-item-title-font-size:var(--f7-menu-list-item-title-font-size);--f7-list-item-title-font-weight:var(--f7-menu-list-item-title-font-weight);--f7-list-item-subtitle-font-size:var(--f7-menu-list-item-subtitle-font-size);--f7-list-item-text-font-size:var(--f7-menu-list-item-text-font-size);--f7-list-item-after-font-size:var(--f7-menu-list-item-after-font-size);--f7-list-item-min-height:var(--f7-menu-list-item-min-height)}.menu-list .item-after,.menu-list .item-footer,.menu-list .item-header,.menu-list .item-subtitle,.menu-list .item-text,.menu-list .item-title{transition-duration:.3s}.menu-list li:not(.list-group-title){padding-bottom:4px;padding-top:4px}.menu-list li:not(.list-group-title):first-child{padding-top:4px}.menu-list li:not(.list-group-title):last-child{padding-bottom:4px}.menu-list .item-link{background-color:var(--f7-menu-list-item-bg-color);border-radius:var(--f7-menu-list-border-radius)!important;color:var(--f7-menu-list-item-text-color);margin-left:var(--f7-menu-list-offset);margin-right:var(--f7-menu-list-offset)}.menu-list .item-inner:after{display:none}.menu-list .item-selected .item-link,.menu-list .item-selected.item-link,.menu-list .tab-link-active .item-link,.menu-list .tab-link-active.item-link{background-color:var(--f7-menu-list-item-selected-bg-color);color:var(--f7-menu-list-item-selected-text-color)}.menu-list .item-selected .item-after,.menu-list .item-selected .item-footer,.menu-list .item-selected .item-header,.menu-list .item-selected .item-subtitle,.menu-list .item-selected .item-text,.menu-list .item-selected .item-title{color:var(--f7-menu-list-item-selected-text-color)}.ios .item-link.active-state .item-inner:after,.ios .links-list a.active-state:after,.ios .list-button.active-state:after{background-color:initial}.ios .links-list a.active-state,.ios .list .item-link.active-state,.ios .list .list-button.active-state{transition-duration:0ms}.md .menu-list .item-link.active-state{background-color:var(--f7-menu-list-item-bg-color)}:root{--f7-badge-text-color:#fff;--f7-badge-bg-color:#8e8e93;--f7-badge-in-icon-size:16px;--f7-badge-in-icon-font-size:10px;--f7-badge-font-weight:normal;--f7-badge-font-size:12px}.ios{--f7-badge-padding:0 4px;--f7-badge-size:20px;--f7-badge-font-weight:600}.md{--f7-badge-padding:2px 6px;--f7-badge-size:20px;--f7-badge-font-weight:500}.badge{align-content:center;align-items:center;background:var(--f7-badge-bg-color);border-radius:var(--f7-badge-size);box-sizing:border-box;color:var(--f7-badge-text-color);display:inline-flex;font-size:var(--f7-badge-font-size);font-weight:var(--f7-badge-font-weight);height:var(--f7-badge-size);justify-content:center;min-width:var(--f7-badge-size);padding:var(--f7-badge-padding);position:relative;text-align:center;vertical-align:middle}.f7-icons .badge,.framework7-icons .badge,.icon .badge,.material-icons .badge{--f7-badge-font-size:var(--f7-badge-in-icon-font-size);--f7-badge-size:var(--f7-badge-in-icon-size);--f7-badge-padding:0px 2px;font-family:var(--f7-font-family);left:100%;margin-left:-10px;position:absolute;top:-2px}.badge[class*=color-]{--f7-badge-bg-color:var(--f7-theme-color)}:root{--f7-button-font-size:14px;--f7-button-min-width:32px;--f7-button-bg-color:transparent;--f7-button-border-width:0px;--f7-button-raised-box-shadow:0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);--f7-button-raised-pressed-box-shadow:0 3px 6px rgba(0,0,0,0.16),0 3px 6px rgba(0,0,0,0.23);--f7-segmented-raised-divider-color:rgba(0,0,0,0.1);--f7-segmented-strong-padding:2px;--f7-segmented-strong-between-buttons:4px;--f7-segmented-strong-button-font-weight:500;--f7-segmented-strong-button-active-box-shadow:0px 2px 2px rgba(0,0,0,0.25);--f7-segmented-strong-button-text-color:#000;--f7-segmented-strong-button-hover-bg-color:rgba(0,0,0,0.04);--f7-segmented-strong-button-active-text-color:#000;--f7-segmented-strong-button-active-bg-color:#fff}:root .dark,:root.dark{--f7-segmented-strong-button-hover-bg-color:rgba(255,255,255,0.02);--f7-segmented-strong-button-active-bg-color:rgba(255,255,255,0.14);--f7-segmented-strong-button-text-color:#fff;--f7-segmented-strong-button-active-text-color:#fff}.ios{--f7-button-fill-text-color:#fff;--f7-button-text-transform:uppercase;--f7-button-height:28px;--f7-button-padding-horizontal:10px;--f7-button-border-radius:4px;--f7-button-font-weight:600;--f7-button-letter-spacing:0;--f7-button-outline-border-width:2px;--f7-button-large-text-transform:uppercase;--f7-button-large-height:44px;--f7-button-large-font-size:17px;--f7-button-large-font-weight:500;--f7-button-small-outline-border-width:2px;--f7-button-small-text-transform:uppercase;--f7-button-small-height:26px;--f7-button-small-font-size:13px;--f7-button-small-font-weight:600;--f7-segmented-strong-button-text-transform:none;--f7-segmented-strong-button-active-font-weight:600;--f7-button-tonal-bg-color:rgba(var(--f7-theme-color-rgb),0.15);--f7-button-tonal-pressed-bg-color:rgba(var(--f7-theme-color-rgb),0.25);--f7-button-tonal-text-color:var(--f7-theme-color);--f7-segmented-strong-bg-color:rgba(0,0,0,0.07);--f7-segmented-strong-button-pressed-bg-color:rgba(0,0,0,0.07)}.ios .dark,.ios.dark{--f7-segmented-strong-bg-color:rgba(255,255,255,0.1);--f7-segmented-strong-button-pressed-bg-color:rgba(255,255,255,0.04)}.md{--f7-button-text-transform:none;--f7-button-height:40px;--f7-button-padding-horizontal:16px;--f7-button-border-radius:8px;--f7-button-font-weight:500;--f7-button-letter-spacing:normal;--f7-button-outline-border-width:1px;--f7-button-large-text-transform:none;--f7-button-large-height:48px;--f7-button-large-font-size:14px;--f7-button-large-font-weight:500;--f7-button-small-text-transform:none;--f7-button-small-outline-border-width:1px;--f7-button-small-height:32px;--f7-button-small-font-size:14px;--f7-button-small-font-weight:500;--f7-segmented-strong-button-text-transform:none;--f7-segmented-strong-button-active-font-weight:500;--f7-segmented-strong-button-pressed-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-button-fill-pressed-bg-color:transparent;--f7-button-fill-text-color:var(--f7-md-on-primary);--f7-button-outline-border-color:var(--f7-md-outline);--f7-segmented-strong-bg-color:var(--f7-md-surface-variant);--f7-button-tonal-bg-color:var(--f7-md-secondary-container);--f7-button-tonal-pressed-bg-color:transparent;--f7-button-tonal-text-color:var(--f7-md-on-secondary-container)}button{width:100%}.button,button{-webkit-appearance:none;appearance:none}.button{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25);align-items:center;background:none;background-color:var(--f7-button-bg-color);border:var(--f7-button-border-width,0) solid var(--f7-button-border-color,var(--f7-theme-color));border-radius:var(--f7-button-border-radius);box-shadow:var(--f7-button-box-shadow);box-sizing:border-box;color:var(--f7-button-text-color,var(--f7-theme-color));cursor:pointer;display:flex;font-family:inherit;font-size:var(--f7-button-font-size);font-weight:var(--f7-button-font-weight);height:var(--f7-button-height);justify-content:center;letter-spacing:var(--f7-button-letter-spacing);line-height:calc(var(--f7-button-height) - var(--f7-button-border-width, 0)*2);margin:0;min-width:var(--f7-button-min-width);outline:0;overflow:hidden;padding:var(--f7-button-padding-vertical,0) var(--f7-button-padding-horizontal);position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:var(--f7-button-text-transform);vertical-align:middle;white-space:nowrap}.button.active-state{color:var(--f7-button-pressed-text-color,var(--f7-button-text-color,var(--f7-theme-color)))}input[type=button].button,input[type=reset].button,input[type=submit].button{width:100%}.button>i+span,.button>span+span,.button>span~i{margin-right:4px}.navbar .button,.searchbar .button,.subnavbar .button,.toolbar .button{color:var(--f7-button-text-color,var(--f7-theme-color))}.button-round,.ios .button-round-ios,.md .button-round-md{--f7-button-border-radius:var(--f7-button-height)}.button-active,.button-fill,.button.tab-link-active,.ios .button-fill-ios,.md .button-fill-md{--f7-button-bg-color:var(--f7-button-fill-bg-color,var(--f7-theme-color));--f7-button-text-color:var(--f7-button-fill-text-color,#fff);--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.ios .button-active.color-white,.ios .button-fill.color-white,.ios .button.tab-link-active.color-white,.ios .color-white .button-active,.ios .color-white .button-fill,.ios .color-white .button.tab-link-active,.ios .color-white .ios .button-fill-ios,.ios .color-white .md .button-fill-md,.ios .ios .button-fill-ios.color-white,.ios .md .button-fill-md.color-white{--f7-button-text-color:#000}.button-fill,.ios .button-fill-ios,.md .button-fill-md{--f7-button-pressed-bg-color:var(--f7-button-fill-pressed-bg-color)}.button-active,.button.tab-link-active{--f7-button-pressed-bg-color:var(--f7-button-bg-color)}.button-outline,.ios .button-outline-ios,.md .button-outline-md{--f7-button-border-color:var(--f7-button-outline-border-color,var(--f7-theme-color));--f7-button-border-width:var(--f7-button-outline-border-width)}.button-tonal,.ios .button-tonal-ios,.md .button-tonal-md{--f7-button-bg-color:var(--f7-button-tonal-bg-color);--f7-button-text-color:var(--f7-button-tonal-text-color);--f7-button-pressed-bg-color:var(--f7-button-tonal-pressed-bg-color)}.button-large,.ios .button-large-ios,.md .button-large-md{--f7-button-height:var(--f7-button-large-height);--f7-button-font-size:var(--f7-button-large-font-size);--f7-button-font-weight:var(--f7-button-large-font-weight);--f7-button-text-transform:var(--f7-button-large-text-transform)}.button-small,.ios .button-small-ios,.md .button-small-md{--f7-button-outline-border-width:var(--f7-button-small-outline-border-width);--f7-button-height:var(--f7-button-small-height);--f7-button-font-size:var(--f7-button-small-font-size);--f7-button-font-weight:var(--f7-button-small-font-weight);--f7-button-text-transform:var(--f7-button-small-text-transform)}.ios .button-small-ios.button-fill,.ios .button-small.button-fill,.ios .button-small.button-fill-ios{--f7-button-border-width:var(--f7-button-small-outline-border-width);--f7-button-pressed-text-color:var(--f7-theme-color);--f7-button-pressed-bg-color:transparent}.segmented{align-self:center;border-radius:var(--f7-button-border-radius);box-shadow:var(--f7-button-box-shadow);box-sizing:border-box;display:flex;flex-wrap:nowrap}.segmented .button,.segmented button{border-radius:0;flex-shrink:1;min-width:0;width:100%}.segmented .button:first-child{border-radius:0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0}.segmented .button.button-outline:nth-child(n+2),.segmented .button:not(.button-outline):first-child{border-right:none}.segmented .button:last-child{border-radius:var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius)}.segmented .button-round:first-child{border-radius:0 var(--f7-button-height) var(--f7-button-height) 0}.segmented .button-round:last-child{border-radius:var(--f7-button-height) 0 0 var(--f7-button-height)}.segmented .button:first-child:last-child{border-radius:var(--f7-button-border-radius)}.ios .segmented-raised-ios,.md .segmented-raised-md,.segmented-raised{box-shadow:var(--f7-button-raised-box-shadow)}.ios .segmented-raised-ios .button:not(.button-outline),.md .segmented-raised-md .button:not(.button-outline),.segmented-raised .button:not(.button-outline){border-right:1px solid var(--f7-segmented-raised-divider-color)}.button-raised,.ios .button-raised-ios,.md .button-raised-md{--f7-button-box-shadow:var(--f7-button-raised-box-shadow)}.button-raised.active-state,.ios .button-raised-ios.active-state,.md .button-raised-md.active-state{--f7-button-box-shadow:var(--f7-button-raised-pressed-box-shadow)}.ios .segmented-strong-ios,.md .segmented-strong-md,.segmented-strong{--f7-button-bg-color:transparent;--f7-button-hover-bg-color:var(--f7-segmented-strong-button-hover-bg-color);--f7-button-text-color:var(--f7-segmented-strong-button-text-color);--f7-button-font-weight:var(--f7-segmented-strong-button-font-weight);--f7-button-text-transform:var(--f7-segmented-strong-button-text-transform);--f7-button-pressed-bg-color:var(--f7-segmented-strong-button-pressed-bg-color);background:var(--f7-segmented-strong-bg-color);border-radius:calc(var(--f7-button-border-radius) + 2px);box-shadow:none;overflow:hidden;padding:var(--f7-segmented-strong-padding);position:relative}.ios .segmented-strong-ios .button,.md .segmented-strong-md .button,.segmented-strong .button{transform:translateZ(0);z-index:1}.ios .segmented-strong-ios .button,.ios .segmented-strong-ios .button:first-child,.ios .segmented-strong-ios .button:last-child,.md .segmented-strong-md .button,.md .segmented-strong-md .button:first-child,.md .segmented-strong-md .button:last-child,.segmented-strong .button,.segmented-strong .button:first-child,.segmented-strong .button:last-child{border-radius:var(--f7-button-border-radius)}.ios .segmented-strong-ios .button+.button,.md .segmented-strong-md .button+.button,.segmented-strong .button+.button{margin-right:var(--f7-segmented-strong-between-buttons)}.ios .segmented-strong-ios .button.button-active,.ios .segmented-strong-ios .button.tab-link-active,.md .segmented-strong-md .button.button-active,.md .segmented-strong-md .button.tab-link-active,.segmented-strong .button.button-active,.segmented-strong .button.tab-link-active{--f7-button-hover-bg-color:transparent;--f7-button-bg-color:transparent;--f7-button-text-color:var(--f7-segmented-strong-button-active-text-color);--f7-button-font-weight:var(--f7-segmented-strong-button-active-font-weight)}.ios .segmented-strong-ios .segmented-highlight,.md .segmented-strong-md .segmented-highlight,.segmented-strong .segmented-highlight{--f7-segmented-highlight-num:1;--f7-segmented-highlight-active:0;--f7-segmented-highlight-padding:calc(var(--f7-segmented-strong-padding)*2);--f7-segmented-highlight-between:var(--f7-segmented-strong-between-buttons);--f7-segmented-highlight-width:calc((100% - var(--f7-segmented-highlight-padding) - var(--f7-segmented-highlight-between)*(var(--f7-segmented-highlight-num) - 1))/var(--f7-segmented-highlight-num));background-color:var(--f7-segmented-strong-button-active-bg-color);border-radius:var(--f7-button-border-radius);box-shadow:var(--f7-segmented-strong-button-active-box-shadow);height:calc(100% - var(--f7-segmented-strong-padding)*2);left:var(--f7-segmented-strong-padding);position:absolute;top:var(--f7-segmented-strong-padding);transform:translateX(calc(var(--f7-segmented-highlight-active)*100% + var(--f7-segmented-highlight-active)*var(--f7-segmented-highlight-between)));transition:.2s;width:var(--f7-segmented-highlight-width);z-index:0}.button:nth-child(2)~.segmented-highlight{--f7-segmented-highlight-num:2}.button:nth-child(3)~.segmented-highlight{--f7-segmented-highlight-num:3}.button:nth-child(4)~.segmented-highlight{--f7-segmented-highlight-num:4}.button:nth-child(5)~.segmented-highlight{--f7-segmented-highlight-num:5}.button:nth-child(6)~.segmented-highlight{--f7-segmented-highlight-num:6}.button:nth-child(7)~.segmented-highlight{--f7-segmented-highlight-num:7}.button:nth-child(8)~.segmented-highlight{--f7-segmented-highlight-num:8}.button:nth-child(9)~.segmented-highlight{--f7-segmented-highlight-num:9}.button:nth-child(10)~.segmented-highlight{--f7-segmented-highlight-num:10}.button-active:nth-child(2)~.segmented-highlight,.tab-link-active:nth-child(2)~.segmented-highlight{--f7-segmented-highlight-active:1}.button-active:nth-child(3)~.segmented-highlight,.tab-link-active:nth-child(3)~.segmented-highlight{--f7-segmented-highlight-active:2}.button-active:nth-child(4)~.segmented-highlight,.tab-link-active:nth-child(4)~.segmented-highlight{--f7-segmented-highlight-active:3}.button-active:nth-child(5)~.segmented-highlight,.tab-link-active:nth-child(5)~.segmented-highlight{--f7-segmented-highlight-active:4}.button-active:nth-child(6)~.segmented-highlight,.tab-link-active:nth-child(6)~.segmented-highlight{--f7-segmented-highlight-active:5}.button-active:nth-child(7)~.segmented-highlight,.tab-link-active:nth-child(7)~.segmented-highlight{--f7-segmented-highlight-active:6}.button-active:nth-child(8)~.segmented-highlight,.tab-link-active:nth-child(8)~.segmented-highlight{--f7-segmented-highlight-active:7}.button-active:nth-child(9)~.segmented-highlight,.tab-link-active:nth-child(9)~.segmented-highlight{--f7-segmented-highlight-active:8}.button-active:nth-child(10)~.segmented-highlight,.tab-link-active:nth-child(10)~.segmented-highlight{--f7-segmented-highlight-active:9}.ios .segmented-round-ios,.ios .segmented-round-ios .segmented-highlight,.md .segmented-round-md,.md .segmented-round-md .segmented-highlight,.segmented-round,.segmented-round .segmented-highlight{border-radius:var(--f7-button-height)}.subnavbar .segmented{width:100%}.button-preloader{--f7-preloader-color:var(--f7-button-text-color,var(--f7-theme-color));position:relative}.button-preloader:not(.button-large){--f7-preloader-size:calc(var(--f7-button-height) - 6px)}.button-preloader.button-fill{--f7-preloader-color:#fff}.button-preloader>span:not(.preloader){align-content:center;align-items:center;display:inline-flex;justify-content:center;transform:scale(1);transition:.2s}.button-preloader>.preloader{left:50%;margin-left:calc(var(--f7-preloader-size)*-1/2);margin-top:calc(var(--f7-preloader-size)*-1/2);opacity:0;position:absolute;top:50%;transition:.2s;transition-property:opacity;visibility:hidden}.button-preloader.button-loading>span:not(.preloader){opacity:0;transform:scale(0)}.button-preloader.button-loading>.preloader{opacity:1;visibility:visible}.ios .button{transition-duration:.1s}.ios .button.active-state{background-color:var(--f7-button-pressed-bg-color,rgba(var(--f7-theme-color-rgb),.15))}.ios .button-fill,.ios .button-fill-ios{--f7-button-pressed-bg-color:var(--f7-button-fill-pressed-bg-color,var(--f7-theme-color-tint))}.ios .button-small,.ios .button-small-ios{transition-duration:.2s}.md .button{transform:translateZ(0);transition-duration:.3s}.md .button-fill,.md .button-fill-md{--f7-button-pressed-bg-color:var(--f7-button-fill-pressed-bg-color,transparent)}:root{--f7-touch-ripple-black:rgba(0,0,0,0.1);--f7-touch-ripple-white:rgba(255,255,255,0.15);--f7-touch-ripple-color:var(--f7-touch-ripple-black)}.dark{--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.actions-button,.button,.checkbox,.dialog-button,.fab a,.item-link,.link,.list-button,.radio,.ripple,.speed-dial-buttons a,.tab-link{-webkit-user-select:none;user-select:none}.ripple-wave{animation:touch-ripple-in .2s forwards;border-radius:50%;font-size:0;left:0;margin:0;padding:0;pointer-events:none;position:absolute!important;top:0;transform:translateZ(0) scale(0);z-index:-1}.ripple-wave,.ripple-wave.ripple-wave-inset{background-color:var(--f7-touch-ripple-color)}.ripple-wave.ripple-wave-inset{background-image:none}.ripple-wave.ripple-wave-out{animation:touch-ripple-out .25s forwards!important;transform:var(--f7-ripple-transform)}.actions-button .ripple-wave,.button .ripple-wave,.dialog-button .ripple-wave,.fab a .ripple-wave,.item-checkbox .ripple-wave,.item-link .ripple-wave,.item-radio .ripple-wave,.links-list a .ripple-wave,.list label.item-content .ripple-wave,.list-button .ripple-wave,.list.accordion-list .accordion-item-toggle .ripple-wave,.photo-browser .toolbar .link .ripple-wave,.ripple-blur .ripple-wave,.stepper-button .ripple-wave,.stepper-button-minus .ripple-wave,.stepper-button-plus .ripple-wave,.tab-link .ripple-wave,button .ripple-wave{animation:touch-ripple-in-blurred .25s forwards;background-color:initial;background-image:radial-gradient(closest-side circle at 50% 50%,var(--f7-touch-ripple-color) 50%,rgba(255,255,255,0))}.checkbox .ripple-wave,.data-table .sortable-cell .ripple-wave,.radio .ripple-wave{z-index:0}[class*=ripple-color-]{--f7-touch-ripple-color:var(--f7-theme-color-ripple-color)}@keyframes touch-ripple-in-blurred{0%{transform:translateZ(0) scale(.5)}to{transform:var(--f7-ripple-transform)}}@keyframes touch-ripple-in{0%{transform:translateZ(0) scale(0)}to{transform:var(--f7-ripple-transform)}}@keyframes touch-ripple-out{0%{opacity:1}to{opacity:0}}.f7-icons,.material-icons{height:1em;width:1em}i.icon{background-position:50%;background-repeat:no-repeat;background-size:100% auto;display:inline-block;font-style:normal;position:relative;vertical-align:middle}.icon-back:after,.icon-forward:after,.icon-next:after,.icon-prev:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.icon[class*=color-]{color:var(--f7-theme-color)}.ios .icon-back,.ios .icon-forward,.ios .icon-next,.ios .icon-prev{height:20px;line-height:20px;width:12px}.ios .icon-back:after,.ios .icon-forward:after,.ios .icon-next:after,.ios .icon-prev:after{line-height:inherit}.ios .icon-next:after,.ios .icon-prev:after{font-size:16px}.ios .icon-back:after,.ios .icon-prev:after{content:"chevron_right_ios"}.ios .icon-forward:after,.ios .icon-next:after{content:"chevron_left_ios"}.md .icon-back,.md .icon-forward,.md .icon-next,.md .icon-prev{height:24px;width:24px}.md .icon-back:after,.md .icon-forward:after,.md .icon-next:after,.md .icon-prev:after{line-height:1.2}.md .icon-back:after{content:"arrow_right_md"}.md .icon-forward:after{content:"arrow_left_md"}.md .icon-next:after{content:"chevron_left_md"}.md .icon-prev:after{content:"chevron_right_md"}.custom-modal-backdrop{z-index:10500}.actions-backdrop,.custom-modal-backdrop,.dialog-backdrop,.fab-backdrop,.popover-backdrop,.popup-backdrop,.preloader-backdrop,.sheet-backdrop{background:rgba(0,0,0,.4);height:100%;left:0;opacity:0;position:absolute;top:0;transition-duration:.4s;visibility:hidden;width:100%;z-index:13000}.actions-backdrop.not-animated,.custom-modal-backdrop.not-animated,.dialog-backdrop.not-animated,.fab-backdrop.not-animated,.popover-backdrop.not-animated,.popup-backdrop.not-animated,.preloader-backdrop.not-animated,.sheet-backdrop.not-animated{transition-duration:0ms}.actions-backdrop.backdrop-in,.custom-modal-backdrop.backdrop-in,.dialog-backdrop.backdrop-in,.fab-backdrop.backdrop-in,.popover-backdrop.backdrop-in,.popup-backdrop.backdrop-in,.preloader-backdrop.backdrop-in,.sheet-backdrop.backdrop-in{opacity:1;visibility:visible}:root{--f7-dialog-button-text-color:var(--f7-theme-color);--f7-dialog-button-text-align:center}.ios{--f7-dialog-width:270px;--f7-dialog-inner-padding:16px;--f7-dialog-border-radius:13px;--f7-dialog-text-align:center;--f7-dialog-font-size:14px;--f7-dialog-title-text-color:inherit;--f7-dialog-title-font-size:18px;--f7-dialog-title-font-weight:600;--f7-dialog-title-line-height:inherit;--f7-dialog-button-font-size:17px;--f7-dialog-button-height:44px;--f7-dialog-button-letter-spacing:0;--f7-dialog-button-font-weight:400;--f7-dialog-button-text-transform:none;--f7-dialog-button-strong-bg-color:transparent;--f7-dialog-button-strong-text-color:var(--f7-theme-color);--f7-dialog-button-strong-font-weight:500;--f7-dialog-input-border-radius:4px;--f7-dialog-input-font-size:14px;--f7-dialog-input-height:32px;--f7-dialog-input-border-width:1px;--f7-dialog-input-placeholder-color:#a9a9a9;--f7-dialog-preloader-size:34px;--f7-dialog-input-bg-color:#fff;--f7-dialog-bg-color:rgba(255,255,255,0.95);--f7-dialog-bg-color-rgb:255,255,255;--f7-dialog-text-color:#000;--f7-dialog-button-pressed-bg-color:rgba(0,0,0,0.1);--f7-dialog-button-strong-pressed-bg-color:rgba(0,0,0,0.1);--f7-dialog-input-border-color:rgba(0,0,0,0.3);--f7-dialog-border-divider-color:rgba(0,0,0,0.2)}.ios .dark,.ios.dark{--f7-dialog-text-color:#fff;--f7-dialog-bg-color:rgba(45,45,45,0.95);--f7-dialog-bg-color-rgb:45,45,45;--f7-dialog-button-pressed-bg-color:rgba(0,0,0,0.2);--f7-dialog-button-strong-pressed-bg-color:rgba(0,0,0,0.2);--f7-dialog-border-divider-color:rgba(255,255,255,0.15);--f7-dialog-input-border-color:rgba(255,255,255,0.15);--f7-dialog-input-bg-color:rgba(0,0,0,0.5)}.md{--f7-dialog-width:280px;--f7-dialog-inner-padding:24px;--f7-dialog-border-radius:28px;--f7-dialog-text-align:right;--f7-dialog-font-size:14px;--f7-dialog-title-font-size:24px;--f7-dialog-title-font-weight:400;--f7-dialog-title-line-height:1.3;--f7-dialog-button-font-size:14px;--f7-dialog-button-height:40px;--f7-dialog-button-letter-spacing:normal;--f7-dialog-button-font-weight:500;--f7-dialog-button-text-transform:none;--f7-dialog-button-strong-font-weight:500;--f7-dialog-input-border-radius:0px;--f7-dialog-input-font-size:16px;--f7-dialog-input-height:36px;--f7-dialog-input-border-color:transparent;--f7-dialog-input-border-width:0px;--f7-dialog-preloader-size:32px;--f7-dialog-input-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-dialog-button-pressed-bg-color:transparent;--f7-dialog-button-strong-bg-color:var(--f7-theme-color);--f7-dialog-button-strong-text-color:var(--f7-md-on-primary);--f7-dialog-button-strong-pressed-bg-color:transparent;--f7-dialog-bg-color:var(--f7-md-surface-3);--f7-dialog-input-placeholder-color:var(--f7-md-on-surface-variant);--f7-dialog-text-color:var(--f7-md-on-surface-variant);--f7-dialog-title-text-color:var(--f7-md-on-surface)}.dialog{background:var(--f7-dialog-bg-color);border-radius:var(--f7-dialog-border-radius);color:var(--f7-dialog-text-color);display:none;font-size:var(--f7-dialog-font-size);left:50%;margin-left:calc(var(--f7-dialog-width)*-1/2);margin-top:0;opacity:0;overflow:hidden;position:absolute;text-align:var(--f7-dialog-text-align);top:50%;transform:translate3d(0,-50%,0) scale(1.185);transition-duration:.4s;transition-property:transform,opacity;width:var(--f7-dialog-width);will-change:transform,opacity;z-index:13500}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .dialog{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-dialog-bg-color-rgb),.8)}}.dialog.modal-in{opacity:1;transform:translate3d(0,-50%,0) scale(1)}.dialog.modal-out{opacity:0;z-index:13499}.dialog.not-animated{transition-duration:0ms}.dialog-inner{padding:var(--f7-dialog-inner-padding);position:relative}.dialog-title{color:var(--f7-dialog-title-text-color);font-size:var(--f7-dialog-title-font-size);font-weight:var(--f7-dialog-title-font-weight);line-height:var(--f7-dialog-title-line-height)}.dialog-buttons{display:flex;flex-direction:row-reverse;position:relative}.dialog-buttons-vertical .dialog-buttons{display:block;height:auto!important}.dialog-button{box-sizing:border-box;color:var(--f7-dialog-button-text-color);cursor:pointer;display:block;font-size:var(--f7-dialog-button-font-size);font-weight:var(--f7-dialog-button-font-weight);height:var(--f7-dialog-button-height);letter-spacing:var(--f7-dialog-button-letter-spacing);line-height:var(--f7-dialog-button-height);overflow:hidden;position:relative;text-align:var(--f7-dialog-button-text-align);text-overflow:ellipsis;text-transform:var(--f7-dialog-button-text-transform);white-space:nowrap}.dialog-button.active-state{background-color:var(--f7-dialog-button-pressed-bg-color)}.dialog-button-strong{background-color:var(--f7-dialog-button-strong-bg-color);color:var(--f7-dialog-button-strong-text-color);font-weight:var(--f7-dialog-button-strong-font-weight)}.dialog-button-strong.active-state{background-color:var(--f7-dialog-button-strong-pressed-bg-color)}.dialog-no-buttons .dialog-buttons{display:none}.dialog-input-field{position:relative}input.dialog-input[type]{-webkit-appearance:none;appearance:none;background-color:var(--f7-dialog-input-bg-color);border:var(--f7-dialog-input-border-width) solid var(--f7-dialog-input-border-color);border-radius:var(--f7-dialog-input-border-radius);box-shadow:none;box-sizing:border-box;display:block;font-family:inherit;font-size:var(--f7-dialog-input-font-size);height:var(--f7-dialog-input-height);margin:15px 0 0;width:100%}input.dialog-input[type]::placeholder{color:var(--f7-dialog-input-placeholder-color)}.dialog-input-double input.dialog-input{border-radius:var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius) 0 0}.dialog-input-double+.dialog-input-double input.dialog-input{border-radius:0 0 var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius)}.dialog-preloader .preloader{--f7-preloader-size:var(--f7-dialog-preloader-size)}html.with-modal-dialog .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}.ios .dialog.modal-out{transform:translate3d(0,-50%,0) scale(1)}.ios .dialog-inner{border-radius:var(--f7-dialog-border-radius) var(--f7-dialog-border-radius) 0 0}.ios .dialog-inner:after{background-color:var(--f7-dialog-border-divider-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .dialog-title+.dialog-text{margin-top:5px}.ios .dialog-buttons{height:44px;justify-content:center}.ios .dialog-button{-webkit-box-flex:1;-ms-flex:1;padding:0 5px;width:100%}.ios .dialog-button:after{background-color:var(--f7-dialog-border-divider-color);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.ios .dialog-button:first-child{border-radius:0 0 0 var(--f7-dialog-border-radius)}.ios .dialog-button:last-child{border-radius:0 0 var(--f7-dialog-border-radius) 0}.ios .dialog-button:last-child:after{display:none!important}.ios .dialog-button:first-child:last-child{border-radius:0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius)}.ios .dialog-button[class*=color-]{--f7-dialog-button-text-color:var(--f7-theme-color)}.ios .dialog-buttons-vertical .dialog-buttons{height:auto}.ios .dialog-buttons-vertical .dialog-button{border-radius:0}.ios .dialog-buttons-vertical .dialog-button:after{background-color:var(--f7-dialog-border-divider-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .dialog-buttons-vertical .dialog-button:last-child{border-radius:0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius)}.ios .dialog-buttons-vertical .dialog-button:last-child:after{display:none!important}.ios .dialog-no-buttons .dialog-inner{border-radius:var(--f7-dialog-border-radius)}.ios .dialog-no-buttons .dialog-inner:after{display:none!important}.ios .dialog-input-field{margin-top:15px}.ios .dialog-input{padding:0 5px}.ios .dialog-input+.dialog-input{margin-top:5px}.ios .dialog-input-double+.dialog-input-double{margin-top:0}.ios .dialog-input-double+.dialog-input-double .dialog-input{border-top:0;margin-top:0}.ios .dialog-preloader .dialog-text~.preloader,.ios .dialog-preloader .dialog-title~.preloader,.ios .dialog-progress .dialog-text~.progressbar,.ios .dialog-progress .dialog-text~.progressbar-infinite,.ios .dialog-progress .dialog-title~.progressbar,.ios .dialog-progress .dialog-title~.progressbar-infinite{margin-top:15px}.md .dialog.modal-out{transform:translate3d(0,-50%,0) scale(.815)}.md .dialog-title+.dialog-text{margin-top:20px}.md .dialog-text{line-height:1.5}.md .dialog-buttons{box-sizing:border-box;height:64px;justify-content:flex-end;overflow:hidden;padding:0 24px 24px}.md .dialog-button{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25);border:none;border-radius:99px;min-width:64px;padding:0 16px;transform:translateZ(0);transition-duration:.3s}.md .dialog-button+.dialog-button{margin-left:8px}.md .dialog-button-strong{--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.md .dialog-button[class*=color-]{--f7-dialog-button-text-color:var(--f7-theme-color)}.md .dialog-buttons-vertical .dialog-buttons{align-items:flex-end;display:flex;flex-direction:column}.md .dialog-buttons-vertical .dialog-button+.dialog-button{margin-left:0;margin-top:8px}.md .dialog-input{padding:0;position:relative;transition-duration:.2s}.md .dialog-input+.dialog-input{margin-top:16px}.md .dialog-preloader .dialog-inner,.md .dialog-preloader .dialog-title,.md .dialog-progress .dialog-inner,.md .dialog-progress .dialog-title{text-align:center}.md .dialog-preloader .dialog-text~.preloader,.md .dialog-preloader .dialog-title~.preloader{margin-top:20px}.md .dialog-progress .dialog-text~.progressbar,.md .dialog-progress .dialog-text~.progressbar-infinite,.md .dialog-progress .dialog-title~.progressbar,.md .dialog-progress .dialog-title~.progressbar-infinite{margin-top:16px}:root{--f7-popup-border-radius:0px;--f7-popup-tablet-width:630px;--f7-popup-tablet-height:630px;--f7-popup-push-offset:var(--f7-safe-area-top)}.ios{--f7-popup-tablet-border-radius:5px;--f7-popup-transition-duration:400ms;--f7-popup-transition-timing-function:initial;--f7-popup-push-border-radius:10px}.md{--f7-popup-tablet-border-radius:28px;--f7-popup-transition-duration:600ms;--f7-popup-transition-timing-function:cubic-bezier(0,1,0.2,1);--f7-popup-push-border-radius:28px}.popup-backdrop{z-index:10500}.popup,.popup-backdrop-unique{z-index:11000}.popup{background:#fff;border-radius:var(--f7-popup-border-radius);box-sizing:border-box;display:none;height:100%;left:0;overflow:hidden;position:absolute;top:0;transform:translate3d(0,100vh,0);transition-property:transform;transition-timing-function:var(--f7-popup-transition-timing-function);width:100%}.dark .popup,.popup.dark{background:#000}.popup.modal-in,.popup.modal-out{transition-duration:var(--f7-popup-transition-duration)}.popup.not-animated{transition-duration:0ms}.popup.modal-in{display:block;transform:translateZ(0)}.popup.modal-out{transform:translate3d(0,100vh,0)}.popup.swipe-close-to-top.modal-out{transform:translate3d(0,-100vh,0)}@media (min-width:630px) and (min-height:630px){.popup:not(.popup-tablet-fullscreen){--f7-safe-area-top:0px;--f7-safe-area-bottom:0px;border-radius:var(--f7-popup-tablet-border-radius,var(--f7-popup-border-radius));height:var(--f7-popup-tablet-height);left:50%;margin-left:calc(var(--f7-popup-tablet-width)*-1/2);margin-top:calc(var(--f7-popup-tablet-height)*-1/2);top:50%;transform:translate3d(0,100vh,0);width:var(--f7-popup-tablet-width)}.popup:not(.popup-tablet-fullscreen).modal-in{transform:translateZ(0)}.popup:not(.popup-tablet-fullscreen).modal-out{transform:translate3d(0,100vh,0)}.popup:not(.popup-tablet-fullscreen).swipe-close-to-top.modal-out{transform:translate3d(0,-100vh,0)}.popup:not(.popup-tablet-fullscreen).popup-behind{pointer-events:none;transform:translateZ(0) scale(.9)}.popup:not(.popup-tablet-fullscreen).popup-behind.modal-out{transform:translate3d(0,100vh,0) scale(.9)}html.with-modal-popup-push .popup-push:not(.popup-tablet-fullscreen){margin-top:0}}html.with-modal-popup .framework7-root>.panel .page-content,html.with-modal-popup .framework7-root>.view .page-content,html.with-modal-popup .framework7-root>.views .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}html.with-modal-popup-push .popup-push,html.with-modal-popup-push-closing .popup-push{--f7-safe-area-top:0px;border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;height:calc(100% - var(--f7-popup-push-offset) - 10px);top:calc(var(--f7-popup-push-offset) + 10px)}html.with-modal-popup-push .popup-push .page,html.with-modal-popup-push .popup-push .view,html.with-modal-popup-push-closing .popup-push .page,html.with-modal-popup-push-closing .popup-push .view{--f7-safe-area-top:0px}html.with-modal-popup-push .framework7-root,html.with-modal-popup-push-closing .framework7-root{background:#000}html.with-modal-popup-push .framework7-root>.view,html.with-modal-popup-push .framework7-root>.views,html.with-modal-popup-push-closing .framework7-root>.view,html.with-modal-popup-push-closing .framework7-root>.views{transition-duration:var(--f7-popup-transition-duration);transition-timing-function:var(--f7-popup-transition-timing-function)}html.with-modal-popup-push .dark .framework7-root>.view:after,html.with-modal-popup-push .dark .framework7-root>.views:after,html.with-modal-popup-push .dark.framework7-root>.view:after,html.with-modal-popup-push .dark.framework7-root>.views:after,html.with-modal-popup-push .framework7-root>.view.dark:after,html.with-modal-popup-push .framework7-root>.views.dark:after,html.with-modal-popup-push-closing .dark .framework7-root>.view:after,html.with-modal-popup-push-closing .dark .framework7-root>.views:after,html.with-modal-popup-push-closing .dark.framework7-root>.view:after,html.with-modal-popup-push-closing .dark.framework7-root>.views:after,html.with-modal-popup-push-closing .framework7-root>.view.dark:after,html.with-modal-popup-push-closing .framework7-root>.views.dark:after,html.with-modal-popup-push-closing.dark .framework7-root>.view:after,html.with-modal-popup-push-closing.dark .framework7-root>.views:after,html.with-modal-popup-push.dark .framework7-root>.view:after,html.with-modal-popup-push.dark .framework7-root>.views:after{animation:popup-dark-push-overlay-fade-in var(--f7-popup-transition-duration) forwards;background:rgba(255,255,255,.1);border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;content:"";height:100%;left:0;opacity:1;pointer-events:none;position:absolute;top:0;width:100%;z-index:13000}html.with-modal-popup-push .framework7-root>.view,html.with-modal-popup-push .framework7-root>.views{border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;transform:translateZ(0) scale(var(--f7-popup-push-scale,1))!important}html.with-modal-popup-push .popup:after{background:rgba(0,0,0,.4);border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;content:"";height:100%;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transition-duration:var(--f7-popup-transition-duration);transition-timing-function:var(--f7-popup-transition-timing-function);width:100%;z-index:13000}html.with-modal-popup-push .dark .popup:after,html.with-modal-popup-push .dark.popup:after,html.with-modal-popup-push.dark .popup:after{background:rgba(255,255,255,.05)}html.with-modal-popup-push .popup-behind{transform:translateZ(0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind.modal-out{transform:translate3d(0,100vh,0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind:not(.popup-push){border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0}html.with-modal-popup-push .popup-behind.popup-push{transform:translate3d(0,calc(-10px - var(--f7-popup-push-offset)),0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind.popup-push.modal-out{transform:translate3d(0,calc(-10px - var(--f7-popup-push-offset) + 100vh),0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind:after{opacity:1;pointer-events:auto}html.with-modal-popup-push-closing .dark .framework7-root>.view:after,html.with-modal-popup-push-closing .dark .framework7-root>.views:after,html.with-modal-popup-push-closing .dark.framework7-root>.view:after,html.with-modal-popup-push-closing .dark.framework7-root>.views:after,html.with-modal-popup-push-closing .framework7-root>.view.dark:after,html.with-modal-popup-push-closing .framework7-root>.views.dark:after,html.with-modal-popup-push-closing.dark .framework7-root>.view:after,html.with-modal-popup-push-closing.dark .framework7-root>.views:after{animation:popup-dark-push-overlay-fade-out var(--f7-popup-transition-duration) forwards;animation-timing-function:var(--f7-popup-transition-timing-function)}@keyframes popup-dark-push-overlay-fade-in{0%{opacity:0}to{opacity:1}}@keyframes popup-dark-push-overlay-fade-out{0%{opacity:1}to{opacity:0}}:root{--f7-login-screen-blocks-max-width:480px;--f7-login-screen-title-text-align:center;--f7-login-screen-title-text-color:inherit;--f7-login-screen-title-letter-spacing:0}.ios{--f7-login-screen-blocks-margin-vertical:25px;--f7-login-screen-transition-timing-function:initial;--f7-login-screen-transition-duration:400ms;--f7-login-screen-title-font-weight:600;--f7-login-screen-title-font-size:28px;--f7-login-screen-content-bg-color:#fff;--f7-login-screen-bg-color:#fff}.ios .dark,.ios.dark{--f7-login-screen-bg-color:#000;--f7-login-screen-content-bg-color:#000}.md{--f7-login-screen-transition-duration:600ms;--f7-login-screen-transition-timing-function:cubic-bezier(0,1,0.2,1);--f7-login-screen-blocks-margin-vertical:24px;--f7-login-screen-title-font-weight:400;--f7-login-screen-title-font-size:28px}.md,.md .dark,.md [class*=color-]{--f7-login-screen-content-bg-color:var(--f7-md-surface);--f7-login-screen-bg-color:var(--f7-md-surface)}.login-screen{background:var(--f7-login-screen-bg-color);box-sizing:border-box;display:none;height:100%;left:0;position:absolute;top:0;transform:translate3d(0,100vh,0);transition-property:transform;transition-timing-function:var(--f7-login-screen-transition-timing-function);width:100%;z-index:11000}.login-screen.modal-in,.login-screen.modal-out{transition-duration:var(--f7-login-screen-transition-duration)}.login-screen.not-animated{transition-duration:0ms}.login-screen.modal-in{display:block;transform:translateZ(0)}.login-screen.modal-out{transform:translate3d(0,100%,0)}.login-screen .page,.login-screen-content,.login-screen-page{background:var(--f7-login-screen-content-bg-color)}.login-screen-content .block,.login-screen-content .list,.login-screen-content .login-screen-title,.login-screen-page .block,.login-screen-page .list,.login-screen-page .login-screen-title{margin:var(--f7-login-screen-blocks-margin-vertical) auto}.login-screen-content .block,.login-screen-content .block-footer,.login-screen-content .block-header,.login-screen-content .list,.login-screen-content .login-screen-title,.login-screen-page .block,.login-screen-page .block-footer,.login-screen-page .block-header,.login-screen-page .list,.login-screen-page .login-screen-title{max-width:var(--f7-login-screen-blocks-max-width)}.login-screen-content .list ul,.login-screen-page .list ul{background:none}.login-screen-content .list ul:after,.login-screen-content .list ul:before,.login-screen-page .list ul:after,.login-screen-page .list ul:before{display:none!important}.login-screen-content .block-footer,.login-screen-content .block-header,.login-screen-page .block-footer,.login-screen-page .block-header{margin-left:auto;margin-right:auto;text-align:center}.login-screen-title{color:var(--f7-login-screen-title-text-color);font-size:var(--f7-login-screen-title-font-size);font-weight:var(--f7-login-screen-title-font-weight);letter-spacing:var(--f7-login-screen-title-letter-spacing);text-align:var(--f7-login-screen-title-text-align)}.login-screen-page,.login-screen>.page,.login-screen>.view>.page{display:flex;flex-direction:column}.login-screen-page .login-screen-content,.login-screen-page .page-content,.login-screen>.page .login-screen-content,.login-screen>.page .page-content,.login-screen>.view>.page .login-screen-content,.login-screen>.view>.page .page-content{height:auto;margin-bottom:auto;margin-top:auto;max-height:100%;width:100%}.dark .login-screen-content .block-strong,.dark .login-screen-content .list ul,.dark .login-screen-page .block-strong,.dark .login-screen-page .list ul,.dark.login-screen-page .block-strong,.dark.login-screen-page .list ul{background-color:initial}:root{--f7-popover-width:260px}.ios{--f7-popover-border-radius:13px;--f7-popover-actions-icon-size:28px;--f7-popover-transition-timing-function:initial;--f7-popover-bg-color:rgba(255,255,255,0.95);--f7-popover-actions-label-text-color:rgba(0,0,0,0.45)}.ios .dark,.ios.dark{--f7-popover-bg-color:rgba(30,30,30,0.95);--f7-popover-actions-label-text-color:rgba(255,255,255,0.55)}.md{--f7-popover-transition-timing-function:cubic-bezier(0,0.8,0.34,1);--f7-popover-border-radius:28px;--f7-popover-actions-icon-size:24px}.md,.md .dark,.md [class*=color-]{--f7-popover-bg-color:var(--f7-md-surface-3);--f7-popover-actions-label-text-color:var(--f7-md-on-surface-variant)}.popover,.popover-backdrop-unique{z-index:13500}.popover{--f7-safe-area-top:0px;--f7-safe-area-left:0px;--f7-safe-area-right:0px;--f7-safe-area-bottom:0px;background-color:var(--f7-popover-bg-color);border-radius:var(--f7-popover-border-radius);display:none;left:0;margin:0;opacity:0;position:absolute;top:0;transition-duration:.3s;width:var(--f7-popover-width);will-change:transform,opacity}.popover .list{margin:0}.popover .list ul{background:none}.popover .list:first-child ul:before,.popover .list:last-child ul:after{display:none!important}.popover .list:first-child li:first-child,.popover .list:first-child li:first-child a,.popover .list:first-child li:first-child>label,.popover .list:first-child ul{border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0}.popover .list:last-child li:last-child,.popover .list:last-child li:last-child a,.popover .list:last-child li:last-child>label,.popover .list:last-child ul{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.popover .list:first-child:last-child li:first-child:last-child,.popover .list:first-child:last-child li:first-child:last-child a,.popover .list:first-child:last-child li:first-child:last-child>label,.popover .list:first-child:last-child ul{border-radius:var(--f7-popover-border-radius)}.popover .list+.list{margin-top:var(--f7-list-margin-vertical)}.popover.modal-in{opacity:1}.popover.not-animated{transition-duration:0ms}.popover,.popover-backdrop{transition-timing-function:var(--f7-popover-transition-timing-function)}.popover-inner{-webkit-overflow-scrolling:touch;overflow:auto}.popover-from-actions .item-link i.icon{font-size:var(--f7-popover-actions-icon-size);height:var(--f7-popover-actions-icon-size);width:var(--f7-popover-actions-icon-size)}.ios .popover-from-actions-strong{font-weight:600}.md .popover-from-actions-strong{font-weight:500}.popover-from-actions-label{align-items:center;color:var(--f7-popover-actions-label-text-color);display:flex;font-size:var(--f7-actions-label-font-size);justify-content:var(--f7-actions-label-justify-content);line-height:1.3;padding:var(--f7-actions-label-padding);position:relative}.popover-from-actions-label:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.popover-from-actions-label:last-child:after{display:none!important}.md .popover-from-actions-label{justify-content:center}.popover-arrow{left:-26px;overflow:hidden;z-index:100}.popover-arrow,.popover-arrow:after{height:26px;position:absolute;top:0;width:26px}.popover-arrow:after{background:var(--f7-popover-bg-color);border-radius:3px;content:"";left:0;transform:rotate(45deg)}.popover-arrow.on-left{left:-26px}.popover-arrow.on-left:after{left:19px;top:0}.popover-arrow.on-right{left:100%}.popover-arrow.on-right:after{left:-19px;top:0}.popover-arrow.on-top{left:0;top:-26px}.popover-arrow.on-top:after{left:0;top:19px}.popover-arrow.on-bottom{left:0;top:100%}.popover-arrow.on-bottom:after{left:0;top:-19px}.ios .popover{transform:none;transition-property:opacity}.md .popover{transform:scale(.85,.6);transition-property:opacity,transform}.md .popover.modal-in{opacity:1;transform:scale(1)}.md .popover.modal-out{opacity:0;transform:scale(1)}.md .popover-on-top{transform-origin:center bottom}.md .popover-on-top.popover-on-right{transform-origin:left bottom}.md .popover-on-top.popover-on-left{transform-origin:right bottom}.md .popover-on-middle{transform-origin:center center}.md .popover-on-middle.popover-on-right{transform-origin:left center}.md .popover-on-middle.popover-on-left{transform-origin:right center}.md .popover-on-bottom{transform-origin:center top}.md .popover-on-bottom.popover-on-right{transform-origin:left top}.md .popover-on-bottom.popover-on-left{transform-origin:right top}:root{--f7-actions-grid-button-font-size:12px;--f7-actions-grid-button-icon-size:48px}.ios{--f7-actions-transition-timing-function:initial;--f7-actions-border-radius:13px;--f7-actions-grid-button-text-color:#757575;--f7-actions-button-padding:0px;--f7-actions-button-text-align:center;--f7-actions-button-height:57px;--f7-actions-button-height-landscape:44px;--f7-actions-button-font-size:20px;--f7-actions-button-icon-size:28px;--f7-actions-button-justify-content:center;--f7-actions-label-padding:8px 10px;--f7-actions-label-font-weight:400;--f7-actions-label-font-size:13px;--f7-actions-label-justify-content:center;--f7-actions-group-border-color:transparent;--f7-actions-group-margin:8px;--f7-actions-bg-color:rgba(255,255,255,0.95);--f7-actions-bg-color-rgb:255,255,255;--f7-actions-button-border-color:rgba(0,0,0,0.2);--f7-actions-button-pressed-bg-color:rgba(230,230,230,0.9);--f7-actions-button-pressed-bg-color-rgb:230,230,230;--f7-actions-label-text-color:#8a8a8a}.ios .dark,.ios.dark{--f7-actions-bg-color:rgba(45,45,45,0.95);--f7-actions-bg-color-rgb:45,45,45;--f7-actions-button-border-color:rgba(255,255,255,0.15);--f7-actions-button-pressed-bg-color:rgba(50,50,50,0.9);--f7-actions-button-pressed-bg-color-rgb:50,50,50;--f7-actions-label-text-color:rgba(255,255,255,0.55)}.md{--f7-actions-transition-timing-function:cubic-bezier(0,0.8,0.34,1);--f7-actions-border-radius:16px;--f7-actions-button-border-color:transparent;--f7-actions-button-padding:0 16px;--f7-actions-button-text-align:left;--f7-actions-button-height:48px;--f7-actions-button-height-landscape:48px;--f7-actions-button-font-size:16px;--f7-actions-button-icon-size:24px;--f7-actions-button-justify-content:space-between;--f7-actions-label-padding:12px 16px;--f7-actions-label-font-size:14px;--f7-actions-label-font-weight:500;--f7-actions-label-justify-content:flex-start;--f7-actions-group-margin:0px;--f7-actions-button-pressed-bg-color:#e5e5e5}.md .dark,.md.dark{--f7-actions-button-pressed-bg-color:#2e2e2e}.md,.md .dark,.md [class*=color-]{--f7-actions-button-text-color:var(--f7-md-on-surface);--f7-actions-bg-color:var(--f7-md-surface-3);--f7-actions-group-border-color:var(--f7-md-outline);--f7-actions-label-text-color:var(--f7-theme-color);--f7-actions-grid-button-text-color:var(--f7-md-on-surface)}.actions-backdrop-unique{z-index:13500}.actions-modal{-webkit-overflow-scrolling:touch;bottom:0;display:none;left:0;max-height:100%;overflow:auto;position:absolute;transform:translate3d(0,100%,0);transition-property:transform;width:100%;will-change:transform;z-index:13500}.actions-modal.modal-in,.actions-modal.modal-out{transition-duration:.3s}.actions-modal.not-animated{transition-duration:0ms}.ios .actions-modal.modal-in{transform:translate3d(0,calc(var(--f7-safe-area-bottom)*-1),0)}.md .actions-modal.modal-in{transform:translateZ(0)}.actions-modal.modal-out{transform:translate3d(0,100%,0);z-index:13499}@media (min-width:496px){.actions-modal{left:50%;margin-left:-240px;width:480px}}@media (orientation:landscape){.actions-modal{--f7-actions-button-height:var(--f7-actions-button-height-landscape)}}.actions-backdrop,.actions-modal{transition-timing-function:var(--f7-actions-transition-timing-function)}.actions-group{margin:var(--f7-actions-group-margin);overflow:hidden;position:relative;transform:translateZ(0)}.actions-group:after{background-color:var(--f7-actions-group-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.actions-group:last-child:after{display:none!important}.actions-button,.actions-label{box-sizing:border-box;display:block;font-weight:400;margin:0;overflow:hidden;position:relative;text-align:var(--f7-actions-button-text-align);width:100%}.actions-button:after,.actions-label:after{background-color:var(--f7-actions-button-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.actions-button a,.actions-label a{color:inherit;display:block;text-decoration:none}.actions-button{color:var(--f7-actions-button-text-color,var(--f7-theme-color));cursor:pointer;display:flex;font-size:var(--f7-actions-button-font-size);height:var(--f7-actions-button-height);justify-content:var(--f7-actions-button-justify-content);line-height:var(--f7-actions-button-height);padding:var(--f7-actions-button-padding);z-index:10}.actions-button.active-state{background-color:var(--f7-actions-button-pressed-bg-color)!important}.actions-button[class*=color-]{color:var(--f7-theme-color)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .actions-button.active-state{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-actions-button-pressed-bg-color-rgb),.8)}}.actions-button-media{align-items:center;display:flex;flex-shrink:0}.actions-button-media i.icon{font-size:var(--f7-actions-button-icon-size);height:var(--f7-actions-button-icon-size);width:var(--f7-actions-button-icon-size)}.actions-button a,.actions-button-text{overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}.actions-button-text{flex-shrink:1;text-align:var(--f7-actions-button-text-align);width:100%}.actions-label{align-items:center;color:var(--f7-actions-label-text-color);display:flex;font-size:var(--f7-actions-label-font-size);font-weight:var(--f7-actions-label-font-weight);justify-content:var(--f7-actions-label-justify-content);line-height:1.3;min-height:var(--f7-actions-label-min-height,var(--f7-actions-button-height));padding:var(--f7-actions-label-padding)}.actions-label[class*=" color-"]{--f7-actions-label-text-color:var(--f7-theme-color)}.actions-grid .actions-group{display:flex;flex-wrap:wrap;justify-content:flex-start;margin-top:0}.actions-grid .actions-group:not(:last-child){margin-bottom:0}.actions-grid .actions-button,.actions-grid .actions-label{background:none}.actions-grid .actions-button{color:var(--f7-actions-grid-button-text-color);display:block;height:auto;line-height:1;padding:16px;width:33.33333333%}.actions-grid .actions-button:after{display:none!important}.actions-grid .actions-button-media{margin-left:auto!important;margin-right:auto!important}.actions-grid .actions-button-media,.actions-grid .actions-button-media i.icon{height:var(--f7-actions-grid-button-icon-size);width:var(--f7-actions-grid-button-icon-size)}.actions-grid .actions-button-media i.icon{font-size:var(--f7-actions-grid-button-icon-size)}.actions-grid .actions-button-text{font-size:var(--f7-actions-grid-button-font-size);height:1.33em;line-height:1.33em;margin-left:0!important;margin-top:8px;text-align:center!important}.ios .actions-group{border-radius:var(--f7-actions-border-radius)}.ios .actions-button,.ios .actions-label{background:var(--f7-actions-bg-color)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .ios .actions-button,.ios-translucent-modals .ios .actions-label{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-actions-bg-color-rgb),.8)}}.ios .actions-button:first-child,.ios .actions-label:first-child{border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0}.ios .actions-button:last-child,.ios .actions-label:last-child{border-radius:0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius)}.ios .actions-button:last-child:after,.ios .actions-label:last-child:after{display:none!important}.ios .actions-button:first-child:last-child,.ios .actions-label:first-child:last-child{border-radius:var(--f7-actions-border-radius)}.ios .actions-button b,.ios .actions-button.actions-button-strong,.ios .actions-label b,.ios .actions-label.actions-button-strong{font-weight:600}.ios .actions-grid .actions-group{background:var(--f7-actions-bg-color);border-radius:0}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .ios .actions-grid .actions-group{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-actions-bg-color-rgb),.8)}}.ios .actions-grid .actions-group:first-child{border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0}.ios .actions-grid .actions-group:last-child{border-radius:0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius)}.ios .actions-grid .actions-group:first-child:last-child{border-radius:var(--f7-actions-border-radius)}.ios .actions-grid .actions-button,.ios .actions-grid .actions-label{border-radius:0!important}.ios .actions-button-media{margin-left:16px}.ios .actions-button-media+.actions-button-text{margin-left:16px;text-align:left}.md .actions-modal{background-color:var(--f7-actions-bg-color);border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;padding-bottom:var(--f7-safe-area-bottom)}.md .actions-button{transition-duration:.3s}.md .actions-button b,.md .actions-button.actions-button-strong,.md .actions-label b,.md .actions-label.actions-button-strong{font-weight:500}.md .actions-button-media{min-width:40px}.md .actions-button-media+.actions-button-text{margin-left:16px}:root{--f7-sheet-height:260px;--f7-sheet-push-offset:var(--f7-safe-area-top)}.ios{--f7-sheet-border-radius:0px;--f7-sheet-border-color:var(--f7-bars-border-color);--f7-sheet-transition-timing-function:initial;--f7-sheet-push-border-radius:10px;--f7-sheet-transition-duration:300ms;--f7-sheet-bg-color:#fff}.ios .dark,.ios.dark{--f7-sheet-bg-color:#202020}.md{--f7-sheet-border-radius:16px;--f7-sheet-push-border-radius:16px;--f7-sheet-border-color:transparent;--f7-sheet-transition-timing-function:cubic-bezier(0,0.8,0.34,1);--f7-sheet-transition-duration:400ms}.md,.md .dark,.md [class*=color-]{--f7-sheet-bg-color:var(--f7-md-surface)}.sheet-backdrop{z-index:11000}.sheet-backdrop-unique,.sheet-modal{z-index:12500}.sheet-modal{background:var(--f7-sheet-bg-color);bottom:0;box-sizing:border-box;display:none;height:var(--f7-sheet-height);left:0;overflow:hidden;position:absolute;transform:translate3d(0,100%,0);transition-property:transform;width:100%;will-change:transform,opacity}.sheet-modal.modal-in,.sheet-modal.modal-out{transition-duration:var(--f7-sheet-transition-duration)}.sheet-modal.not-animated{transition-duration:0ms}.sheet-modal.modal-in{display:block;transform:translateZ(0)}.sheet-modal.modal-in-breakpoint,.sheet-modal.modal-in-swipe-step{display:block;transform:translate3d(0,var(--f7-sheet-breakpoint,var(--f7-sheet-swipe-step,0)),0)}.sheet-modal.modal-out{transform:translate3d(0,100%,0)}.sheet-modal .sheet-modal-inner{height:100%;overflow:hidden;position:relative}.sheet-modal .toolbar{--f7-safe-area-bottom:0px;position:relative;width:100%}.sheet-modal .toolbar:after,.sheet-modal .toolbar:before{display:none}.sheet-modal .toolbar+.sheet-modal-inner{height:calc(100% - var(--f7-toolbar-height))}.sheet-modal .toolbar+.sheet-modal-inner .page-content{--f7-page-toolbar-top-offset:0px;--f7-page-toolbar-bottom-offset:0px}.sheet-backdrop,.sheet-modal{transition-timing-function:var(--f7-sheet-transition-timing-function)}.sheet-modal-top{border-radius:0 0 var(--f7-sheet-border-radius) var(--f7-sheet-border-radius)}.sheet-modal-top:after{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-sheet-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;transform-style:preserve-3d;width:100%;z-index:15;z-index:700}.sheet-modal-bottom,.sheet-modal:not(.sheet-modal-top){--f7-safe-area-top:0px;border-radius:var(--f7-sheet-border-radius) var(--f7-sheet-border-radius) 0 0}.sheet-modal-bottom:before,.sheet-modal:not(.sheet-modal-top):before{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-sheet-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;transform-style:preserve-3d;width:100%;z-index:15;z-index:700}.sheet-modal-top{--f7-safe-area-bottom:0px;bottom:auto;top:0}.sheet-modal-top,.sheet-modal-top.modal-out{transform:translate3d(0,-100%,0)}.sheet-modal-top .toolbar-bottom{position:absolute}.sheet-modal-top .page-content{padding-top:var(--f7-safe-area-top)}html.with-modal-sheet-push .sheet-modal-push,html.with-modal-sheet-push-closing .sheet-modal-push{--f7-sheet-border-color:transparent;border-radius:var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius) 0 0;overflow:hidden}html.with-modal-sheet-push .sheet-modal-push .page,html.with-modal-sheet-push .sheet-modal-push .view,html.with-modal-sheet-push-closing .sheet-modal-push .page,html.with-modal-sheet-push-closing .sheet-modal-push .view{--f7-safe-area-top:0px}html.with-modal-sheet-push .sheet-modal-push.sheet-modal-top,html.with-modal-sheet-push-closing .sheet-modal-push.sheet-modal-top{border-radius:0 0 var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius)}html.with-modal-sheet-push .framework7-root,html.with-modal-sheet-push-closing .framework7-root{background:#000}html.with-modal-sheet-push .framework7-root>.view,html.with-modal-sheet-push .framework7-root>.views,html.with-modal-sheet-push-closing .framework7-root>.view,html.with-modal-sheet-push-closing .framework7-root>.views{transition-duration:var(--f7-sheet-transition-duration);transition-timing-function:var(--f7-sheet-transition-timing-function)}html.with-modal-sheet-push .dark .framework7-root>.view:after,html.with-modal-sheet-push .dark .framework7-root>.views:after,html.with-modal-sheet-push .dark.framework7-root>.view:after,html.with-modal-sheet-push .dark.framework7-root>.views:after,html.with-modal-sheet-push .framework7-root>.view.dark:after,html.with-modal-sheet-push .framework7-root>.views.dark:after,html.with-modal-sheet-push-closing .dark .framework7-root>.view:after,html.with-modal-sheet-push-closing .dark .framework7-root>.views:after,html.with-modal-sheet-push-closing .dark.framework7-root>.view:after,html.with-modal-sheet-push-closing .dark.framework7-root>.views:after,html.with-modal-sheet-push-closing .framework7-root>.view.dark:after,html.with-modal-sheet-push-closing .framework7-root>.views.dark:after,html.with-modal-sheet-push-closing.dark .framework7-root>.view:after,html.with-modal-sheet-push-closing.dark .framework7-root>.views:after,html.with-modal-sheet-push.dark .framework7-root>.view:after,html.with-modal-sheet-push.dark .framework7-root>.views:after{animation:sheet-dark-push-overlay-fade-in var(--f7-sheet-transition-duration);animation-timing-function:var(--f7-sheet-transition-timing-function);background:rgba(255,255,255,.1);content:"";height:100%;left:0;opacity:1;pointer-events:none;position:absolute;top:0;transition-duration:var(--f7-sheet-transition-duration);transition-timing-function:var(--f7-sheet-transition-timing-function);width:100%;z-index:13000}html.with-modal-sheet-push .framework7-root>.view,html.with-modal-sheet-push .framework7-root>.views{border-radius:var(--f7-sheet-push-border-radius);transform:translateZ(0) scale(var(--f7-sheet-push-scale,1))!important}html.with-modal-sheet-push-closing .dark .framework7-root>.view:after,html.with-modal-sheet-push-closing .dark .framework7-root>.views:after,html.with-modal-sheet-push-closing .dark.framework7-root>.view:after,html.with-modal-sheet-push-closing .dark.framework7-root>.views:after,html.with-modal-sheet-push-closing .framework7-root>.view.dark:after,html.with-modal-sheet-push-closing .framework7-root>.views.dark:after,html.with-modal-sheet-push-closing.dark .framework7-root>.view:after,html.with-modal-sheet-push-closing.dark .framework7-root>.views:after{animation:none;opacity:0}@keyframes sheet-dark-push-overlay-fade-in{0%{opacity:0}to{opacity:1}}.md .sheet-modal .toolbar a.link:not(.tab-link){flex-shrink:0}:root{--f7-toast-font-size:14px;--f7-toast-icon-size:48px;--f7-toast-max-width:568px}.ios{--f7-toast-text-color:#fff;--f7-toast-bg-color:rgba(0,0,0,0.75);--f7-toast-bg-color-rgb:0,0,0;--f7-toast-padding-horizontal:16px;--f7-toast-padding-vertical:12px;--f7-toast-border-radius:8px;--f7-toast-button-min-width:64px}.md{--f7-toast-padding-horizontal:24px;--f7-toast-padding-vertical:14px;--f7-toast-border-radius:16px;--f7-toast-button-min-width:64px}.md,.md .dark,.md [class*=color-]{--f7-toast-text-color:var(--f7-md-on-surface);--f7-toast-bg-color:var(--f7-md-surface-5)}.toast{background-color:var(--f7-toast-bg-color);box-sizing:border-box;color:var(--f7-toast-text-color);font-size:var(--f7-toast-font-size);max-width:var(--f7-toast-max-width);opacity:0;position:absolute;transition-property:transform,opacity;z-index:20000}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .toast{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-toast-bg-color-rgb),.8)}}.toast.modal-in{opacity:1}.toast .toast-content{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;padding:var(--f7-toast-padding-vertical) var(--f7-toast-padding-horizontal)}.toast .toast-text{flex-shrink:1;line-height:20px;min-width:0}.toast .toast-button{flex-shrink:0;margin-bottom:-8px;margin-top:-8px;min-width:var(--f7-toast-button-min-width)}.toast.toast-with-icon .toast-content{display:block;text-align:center}.toast.toast-with-icon .toast-text{text-align:center}.toast.toast-with-icon .toast-icon .f7-icons,.toast.toast-with-icon .toast-icon .material-icons{font-size:var(--f7-toast-icon-size)}.toast.toast-center{top:50%}.toast.toast-top{margin-top:var(--f7-safe-area-top)}.ios .toast{left:0;transition-duration:.3s;width:100%}.ios .toast.toast-top{top:0;transform:translate3d(0,-100%,0)}.ios .toast.toast-top.modal-in{transform:translateZ(0)}.ios .toast.toast-center{border-radius:var(--f7-toast-border-radius);left:50%;width:auto}.ios .toast.toast-center,.ios .toast.toast-center.modal-in{transform:translate3d(-50%,-50%,0)}.ios .toast.toast-bottom{bottom:0;transform:translate3d(0,100%,0)}.ios .toast.toast-bottom.modal-in{transform:translateZ(0)}@media (max-width:568px){.ios .toast.toast-top{margin-top:0}.ios .toast.toast-top .toast-content{padding-top:calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-top))}.ios .toast.toast-bottom .toast-content{padding-bottom:calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-bottom))}}@media (min-width:569px){.ios .toast{border-radius:var(--f7-toast-border-radius);left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2)}.ios .toast.toast-top{top:16px}.ios .toast.toast-center{margin-left:0}.ios .toast.toast-bottom{margin-bottom:calc(16px + var(--f7-safe-area-bottom))}}@media (min-width:1024px){.ios .toast{margin-left:0;width:auto}.ios .toast.toast-horizontal-left{left:16px}.ios .toast.toast-horizontal-right{left:auto;right:16px}.ios .toast.toast-horizontal-center{left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2);width:var(--f7-toast-max-width)}}.ios .toast-button{margin-left:calc(var(--f7-button-padding-horizontal)*-1);margin-right:16px}.md .toast{border-radius:var(--f7-toast-border-radius);left:8px;transform:scale(.9);transition-duration:.2s;width:calc(100% - 16px)}.md .toast.modal-in,.md .toast.modal-out{transform:scale(1)}.md .toast.toast-top{top:8px}.md .toast.toast-center{left:50%;transform:scale(.9) translate3d(-55%,-55%,0);width:auto}.md .toast.toast-center.modal-in,.md .toast.toast-center.modal-out{transform:scale(1) translate3d(-50%,-50%,0)}.md .toast.toast-bottom{bottom:calc(8px + var(--f7-safe-area-bottom))}@media (min-width:584px){.md .toast{left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2)}.md .toast.toast-center{margin-left:0}}@media (min-width:1024px){.md .toast{margin-left:0;width:auto}.md .toast.toast-horizontal-left{left:24px}.md .toast.toast-horizontal-right{left:auto;right:24px}.md .toast.toast-horizontal-center{left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2);width:var(--f7-toast-max-width)}.md .toast.toast-bottom{bottom:calc(24px + var(--f7-safe-area-bottom))}.md .toast.toast-top{top:24px}}.md .toast-button{margin-left:-8px;margin-right:16px}:root{--f7-preloader-modal-padding:8px;--f7-preloader-modal-bg-color:rgba(0,0,0,0.8)}.ios{--f7-preloader-color:#6c6c6c;--f7-preloader-size:20px;--f7-preloader-modal-preloader-size:34px;--f7-preloader-modal-border-radius:5px}.md{--f7-preloader-color:#757575;--f7-preloader-size:32px;--f7-preloader-modal-preloader-size:32px;--f7-preloader-modal-border-radius:4px}.preloader{display:inline-block;font-size:0;height:var(--f7-preloader-size);position:relative;vertical-align:middle;width:var(--f7-preloader-size)}.preloader .preloader-inner{display:block;height:100%;position:relative;width:100%}.preloader-backdrop{background:none;opacity:0;visibility:visible;z-index:14000}.preloader-modal{background:var(--f7-preloader-modal-bg-color);border-radius:var(--f7-preloader-modal-border-radius);left:50%;padding:var(--f7-preloader-modal-padding);position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);z-index:14500}.preloader-modal .preloader{--f7-preloader-size:var(--f7-preloader-modal-preloader-size);display:block!important}.with-modal-preloader .page-content,.with-modal-preloader.page-content,html.with-modal-preloader .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}.preloader[class*=color-]{--f7-preloader-color:var(--f7-theme-color)}.preloader.color-white{--f7-preloader-color:#fff}.preloader.color-black{--f7-preloader-color:#000}.ios .preloader{color:var(--f7-preloader-color)}.ios .preloader-inner{animation:ios-preloader-spin 1s steps(8) infinite}.ios .preloader-inner-line{background:currentColor;border-radius:100px;display:block;height:33.33%;left:50%;position:absolute;top:50%;transform-origin:center 150%;width:11.6%}.ios .preloader-multi-color .preloader-inner-line,.ios .preloader.color-multi .preloader-inner-line{animation:ios-preloader-multicolor 3s linear infinite}.ios .preloader-inner-line:first-child{opacity:.27;transform:translate(-50%,-150%) rotate(0deg)}.ios .preloader-inner-line:nth-child(2){opacity:.35285714;transform:translate(-50%,-150%) rotate(45deg)}.ios .preloader-inner-line:nth-child(3){opacity:.43571429;transform:translate(-50%,-150%) rotate(90deg)}.ios .preloader-inner-line:nth-child(4){opacity:.51857143;transform:translate(-50%,-150%) rotate(135deg)}.ios .preloader-inner-line:nth-child(5){opacity:.60142857;transform:translate(-50%,-150%) rotate(180deg)}.ios .preloader-inner-line:nth-child(6){opacity:.68428571;transform:translate(-50%,-150%) rotate(225deg)}.ios .preloader-inner-line:nth-child(7){opacity:.76714286;transform:translate(-50%,-150%) rotate(270deg)}.ios .preloader-inner-line:nth-child(8){opacity:.85;transform:translate(-50%,-150%) rotate(315deg)}@keyframes ios-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes ios-preloader-multicolor{0%,to{background-color:#2196f3}25%{background-color:#ff3b30}50%{background-color:#4cd964}75%{background-color:#ff9500}}.md .preloader{color:var(--f7-preloader-color)}.md .preloader-inner{animation:md-preloader-rotate 1.4s linear infinite}.md .preloader-inner circle{fill:none;stroke:currentColor;stroke-dasharray:100px;stroke-dashoffset:80px;stroke-width:4;animation:md-preloader-circle-rotate 5.6s ease-in-out infinite;transform:rotate(-90deg);transform-origin:18px 18px}.md .preloader-multi-color circle,.md .preloader.color-multi circle{animation:md-preloader-circle-rotate 5.6s ease-in-out infinite,md-preloader-multicolor 5.6s ease-in-out infinite}@keyframes md-preloader-multicolor{0%,to{stroke:#4285f4}75%{stroke:#1b9a59}50%{stroke:#f7c223}25%{stroke:#de3e35}}@keyframes md-preloader-rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes md-preloader-circle-rotate{0%{stroke-dashoffset:100px;transform:rotate(-90deg)}12.5%{stroke-dashoffset:25px;transform:rotate(-90deg)}25%{stroke-dashoffset:100px;transform:rotate(180deg)}25.1%{stroke-dashoffset:100px;transform:rotate(-180deg)}37.5%{stroke-dashoffset:25px;transform:rotate(-180deg)}50%{stroke-dashoffset:100px;transform:rotate(90deg)}50.1%{stroke-dashoffset:100px;transform:rotate(90deg)}62.5%{stroke-dashoffset:25px;transform:rotate(90deg)}75%{stroke-dashoffset:100px;transform:rotate(1turn)}75.1%{stroke-dashoffset:100px;transform:rotate(0deg)}87.5%{stroke-dashoffset:25px;transform:rotate(0deg)}to{stroke-dashoffset:100px;transform:rotate(270deg)}}.ios{--f7-progressbar-height:4px;--f7-progressbar-border-radius:4px;--f7-progressbar-bg-color:rgba(0,0,0,0.3)}.ios .dark,.ios.dark{--f7-progressbar-bg-color:rgba(255,255,255,0.3)}.md{--f7-progressbar-height:4px;--f7-progressbar-border-radius:0px}.md,.md .dark,.md [class*=color-]{--f7-progressbar-bg-color:rgba(var(--f7-theme-color-rgb),0.5)}.progressbar,.progressbar-infinite{background:var(--f7-progressbar-bg-color,rgba(var(--f7-theme-color-rgb),.5));border-radius:var(--f7-progressbar-border-radius);display:block;height:var(--f7-progressbar-height);overflow:hidden;position:relative;transform-origin:center top;transform-style:preserve-3d;width:100%}.progressbar{vertical-align:middle}.progressbar span{background-color:var(--f7-progressbar-progress-color,var(--f7-theme-color));height:100%;position:absolute;right:0;top:0;transform:translate3d(100%,0,0);transition-duration:.15s;width:100%}.progressbar-infinite{z-index:15000}.progressbar-infinite:after,.progressbar-infinite:before{background-color:var(--f7-progressbar-progress-color,var(--f7-theme-color));content:"";display:block;height:100%;position:absolute;right:0;top:0;transform:translateZ(0);transform-origin:right center;width:100%}.progressbar-infinite.color-multi{background:none!important}.progressbar-in{animation:progressbar-in .15s forwards}.progressbar-out{animation:progressbar-out .15s forwards}.framework7-root>.progressbar,.framework7-root>.progressbar-infinite,.page>.progressbar,.page>.progressbar-infinite,.panel>.progressbar,.panel>.progressbar-infinite,.popup>.progressbar,.popup>.progressbar-infinite,.view>.progressbar,.view>.progressbar-infinite,.views>.progressbar,.views>.progressbar-infinite,body>.progressbar,body>.progressbar-infinite{border-radius:0!important;left:0;position:absolute;top:0;transform-origin:center top!important;z-index:15000}@keyframes progressbar-in{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes progressbar-out{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}.ios .progressbar-infinite:before{animation:ios-progressbar-infinite 1s linear infinite}.ios .progressbar-infinite:after{display:none}.ios .progressbar-infinite.color-multi:before{animation:ios-progressbar-infinite-multicolor 3s linear infinite;background-image:linear-gradient(90deg,#4cd964,#5ac8fa,#007aff,#34aadc,#5856d6,#ff2d55,#5856d6,#34aadc,#007aff,#5ac8fa,#4cd964);background-repeat:repeat-x;background-size:25% 100%;width:400%}@keyframes ios-progressbar-infinite{0%{transform:translate3d(100%,0,0)}to{transform:translate3d(-100%,0,0)}}@keyframes ios-progressbar-infinite-multicolor{0%{transform:translateZ(0)}to{transform:translate3d(-50%,0,0)}}.md .progressbar-infinite:before{animation:md-progressbar-infinite-1 2s linear infinite}.md .progressbar-infinite:after{animation:md-progressbar-infinite-2 2s linear infinite}.md .progressbar-infinite.color-multi:before{animation:md-progressbar-infinite-multicolor-bg 3s step-end infinite;background:none}.md .progressbar-infinite.color-multi:after{animation:md-progressbar-infinite-multicolor-fill 3s linear infinite;background:none;transform-origin:center center}@keyframes md-progressbar-infinite-1{0%{transform:translateX(10%) scaleX(.1)}25%{transform:translateX(-30%) scaleX(.6)}50%{transform:translateX(-100%) scaleX(1)}to{transform:translateX(-100%) scaleX(1)}}@keyframes md-progressbar-infinite-2{0%{transform:translateX(100%) scaleX(1)}40%{transform:translateX(100%) scaleX(1)}75%{transform:translateX(-60%) scaleX(.35)}90%{transform:translateX(-100%) scaleX(.1)}to{transform:translateX(-100%) scaleX(.1)}}@keyframes md-progressbar-infinite-multicolor-bg{0%{background-color:#4caf50}25%{background-color:#f44336}50%{background-color:#2196f3}75%{background-color:#ffeb3b}}@keyframes md-progressbar-infinite-multicolor-fill{0%{background-color:#f44336;transform:scaleX(0)}24.9%{background-color:#f44336;transform:scaleX(1)}25%{background-color:#2196f3;transform:scaleX(0)}49.9%{background-color:#2196f3;transform:scaleX(1)}50%{background-color:#ffeb3b;transform:scaleX(0)}74.9%{background-color:#ffeb3b;transform:scaleX(1)}75%{background-color:#4caf50;transform:scaleX(0)}to{background-color:#4caf50;transform:scaleX(1)}}.ios{--f7-sortable-handler-width:36px;--f7-sortable-sorting-item-box-shadow:0px 2px 8px rgba(0,0,0,0.6);--f7-sortable-handler-color:rgba(0,0,0,0.22);--f7-sortable-sorting-item-bg-color:rgba(255,255,255,0.8)}.ios .dark,.ios.dark{--f7-sortable-sorting-item-bg-color:rgba(50,50,50,0.8);--f7-sortable-handler-color:rgba(255,255,255,0.55)}.md{--f7-sortable-handler-width:42px;--f7-sortable-sorting-item-box-shadow:none}.md,.md .dark,.md [class*=color-]{--f7-sortable-handler-color:var(--f7-md-on-surface-variant);--f7-sortable-sorting-item-bg-color:var(--f7-md-surface-3)}.sortable .sortable-handler{align-items:center;cursor:move;display:flex;height:100%;justify-content:center;left:var(--f7-safe-area-left);opacity:0;overflow:hidden;pointer-events:none;position:absolute;top:0;transition-duration:.3s;width:var(--f7-sortable-handler-width);z-index:10}.sortable .sortable-handler:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-sortable-handler-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;height:20px;letter-spacing:normal;line-height:1;overflow:hidden;text-align:center;text-rendering:optimizeLegibility;text-transform:none;transform:translateX(10px);transition-duration:.3s;white-space:nowrap;width:100%;width:18px}.sortable li.sorting{background:var(--f7-sortable-sorting-item-bg-color);box-shadow:var(--f7-sortable-sorting-item-box-shadow);transition-duration:0ms;z-index:50}.sortable li.sorting .item-inner:after{display:none!important}.sortable-opposite .sortable-handler{left:auto;right:var(--f7-safe-area-left)}.sortable-opposite .sortable-handler:after{transform:translateX(-10px)}.sortable-opposite .item-content,.sortable-opposite.links-list li a,.sortable.simple-list li,.sortable:not(.sortable-opposite) .item-inner{transition-duration:.3s;transition-property:all}.sortable-sorting li{transition-duration:.3s}.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler{opacity:1;pointer-events:auto;touch-action:none}.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler:after{transform:translateX(0)}.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner:before,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-title-row:before,.sortable-enabled:not(.sortable-opposite).links-list li:not(.no-sorting):not(.disallow-sorting)>a:before{display:none}.links-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) a,.no-chevron .sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,.simple-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting),.sortable-enabled :not(.sortable-opposite).no-chevron .item-link .item-inner,.sortable-enabled.no-chevron:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-inner,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link.no-chevron .item-inner{padding-left:calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right))}.links-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) a,.simple-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting),.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .item-content{padding-right:calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right))}.ios .sortable-handler:after{content:"sort_ios"}.md .sortable-handler:after{content:"sort_md"}:root{--f7-swipeout-delete-button-bg-color:#ff3b30;--f7-swipeout-button-text-color:#fff;--f7-swipeout-button-padding-vertical:0px;--f7-swipeout-button-bg-color:rgba(0,0,0,0.22)}:root .dark,:root.dark{--f7-swipeout-button-bg-color:rgba(255,255,255,0.55)}.ios{--f7-swipeout-button-padding-horizontal:30px;--f7-swipeout-button-font-size:inherit;--f7-swipeout-button-font-weight:inherit}.md{--f7-swipeout-button-padding-horizontal:24px;--f7-swipeout-button-font-size:14px;--f7-swipeout-button-font-weight:500}.md .dark,.md.dark{--f7-swipeout-button-text-color:#000}.swipeout{overflow:hidden;transform-style:preserve-3d}.swipeout-deleting{transition-duration:.3s}.swipeout-deleting .swipeout-content{transform:translateX(-100%)}.swipeout-transitioning .swipeout-actions-left a,.swipeout-transitioning .swipeout-actions-right a,.swipeout-transitioning .swipeout-content,.swipeout-transitioning .swipeout-overswipe{transition-duration:.3s;transition-property:transform,left}.swipeout-content{position:relative;z-index:10}.swipeout-overswipe{transition-duration:.2s;transition-property:left}.swipeout-actions-left,.swipeout-actions-right{direction:ltr;display:flex;height:100%;position:absolute;top:0}.swipeout-actions-left>a,.swipeout-actions-left>button,.swipeout-actions-left>div,.swipeout-actions-left>span,.swipeout-actions-right>a,.swipeout-actions-right>button,.swipeout-actions-right>div,.swipeout-actions-right>span{align-items:center;background:var(--f7-swipeout-button-bg-color);color:var(--f7-swipeout-button-text-color);display:flex;font-size:var(--f7-swipeout-button-font-size);font-weight:var(--f7-swipeout-button-font-weight);left:0;padding:var(--f7-swipeout-button-padding-vertical) var(--f7-swipeout-button-padding-horizontal);position:relative}.swipeout-actions-left>a:after,.swipeout-actions-left>button:after,.swipeout-actions-left>div:after,.swipeout-actions-left>span:after,.swipeout-actions-right>a:after,.swipeout-actions-right>button:after,.swipeout-actions-right>div:after,.swipeout-actions-right>span:after{background:inherit;content:"";height:100%;pointer-events:none;position:absolute;top:0;transform:translateZ(0);width:600%;z-index:-1}.swipeout-actions-left .swipeout-delete,.swipeout-actions-right .swipeout-delete{background:var(--f7-swipeout-delete-button-bg-color)}.swipeout-actions-right{right:0;transform:translateX(calc(100% + 1px))}.swipeout-actions-right>a:after,.swipeout-actions-right>button:after,.swipeout-actions-right>div:after,.swipeout-actions-right>span:after{left:100%}.swipeout-actions-right>a:last-child,.swipeout-actions-right>button:last-child,.swipeout-actions-right>div:last-child,.swipeout-actions-right>span:last-child{padding-right:calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-right))}.swipeout-actions-left{left:0;transform:translateX(calc(-100% - 1px))}.swipeout-actions-left>a:after,.swipeout-actions-left>button:after,.swipeout-actions-left>div:after,.swipeout-actions-left>span:after{right:100%}.swipeout-actions-left>a:first-child,.swipeout-actions-left>button:first-child,.swipeout-actions-left>div:first-child,.swipeout-actions-left>span:first-child{padding-left:calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-left))}.swipeout-actions-left [class*=color-],.swipeout-actions-right [class*=color-]{--f7-swipeout-button-bg-color:var(--f7-theme-color)}:root{--f7-accordion-chevron-icon-down:"chevron_down";--f7-accordion-chevron-icon-up:"chevron_up"}.accordion-item-toggle{cursor:pointer}.list.accordion-list .accordion-item-toggle{overflow:hidden;position:relative;transition-duration:.3s}.list.accordion-list .accordion-item-toggle.active-state{background-color:var(--f7-list-link-pressed-bg-color);transition-duration:.3s}.list.accordion-list .accordion-item-toggle.active-state>.item-inner:after{background-color:initial}.list.accordion-list .accordion-item-toggle .item-inner{transition-duration:.3s;transition-property:background-color}.list.accordion-list .accordion-item-toggle .item-inner:after{transition-duration:.3s}.list.accordion-list .accordion-item-toggle .ripple-wave{z-index:0}.accordion-item .item-link .item-inner:after{transition-duration:.3s}.accordion-item .block,.accordion-item .list{margin-bottom:0;margin-top:0}.accordion-item .block>h1:first-child,.accordion-item .block>h2:first-child,.accordion-item .block>h3:first-child,.accordion-item .block>h4:first-child,.accordion-item .block>p:first-child{margin-top:10px}.accordion-item .block>h1:last-child,.accordion-item .block>h2:last-child,.accordion-item .block>h3:last-child,.accordion-item .block>h4:last-child,.accordion-item .block>p:last-child{margin-bottom:10px}.accordion-item-opened .accordion-item-toggle .item-inner:after,.accordion-item-opened>.item-link .item-inner:after{background-color:initial}.list li.accordion-item ul{padding-right:0}.accordion-item-content{font-size:14px;height:0;overflow:hidden;position:relative;transition-duration:.3s}.accordion-item-opened>.accordion-item-content{height:auto}html.device-android-4 .accordion-item-content{transform:none}.list .accordion-item-toggle .item-inner:before{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-list-chevron-icon-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-size:var(--f7-list-chevron-icon-font-size);font-style:normal;font-weight:400;height:100%;left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));letter-spacing:normal;line-height:1;pointer-events:none;position:absolute;text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;white-space:nowrap;width:100%}.list:not(.accordion-opposite) .accordion-item-toggle .item-inner{padding-left:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left))}.accordion-opposite .accordion-item-toggle .item-inner,.accordion-opposite .accordion-item-toggle.item-link .item-inner,.accordion-opposite .accordion-item>.item-link>.item-content>.item-inner,.accordion-opposite .accordion-item>.item-link>.item-inner{padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left))}.accordion-opposite .accordion-item>.item-link>.item-title-row{padding-right:0}.accordion-opposite .accordion-item-toggle .item-inner:before,.accordion-opposite .accordion-item-toggle.item-link .item-inner:before,.accordion-opposite .accordion-item>.item-link .item-title-row:before,.accordion-opposite .accordion-item>.item-link>.item-content>.item-inner:before,.accordion-opposite .accordion-item>.item-link>.item-inner:before{display:none}.accordion-opposite .accordion-item-toggle.item-content,.accordion-opposite .accordion-item-toggle>.item-content,.accordion-opposite .accordion-item>.item-content,.accordion-opposite .accordion-item>.item-link>.item-content,.accordion-opposite.links-list .accordion-item>a{padding-right:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));position:relative}.accordion-opposite .accordion-item-toggle.item-content:before,.accordion-opposite .accordion-item-toggle>.item-content:before,.accordion-opposite .accordion-item>.item-content:before,.accordion-opposite .accordion-item>.item-link>.item-content:before,.accordion-opposite.links-list .accordion-item>a:before{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-list-chevron-icon-color);content:var(--f7-accordion-chevron-icon-down);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-size:var(--f7-list-chevron-icon-font-size);font-style:normal;font-weight:400;height:100%;height:8px;letter-spacing:normal;line-height:1;line-height:8px;margin-top:-4px;pointer-events:none;position:absolute;right:calc((var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal))/2 + var(--f7-safe-area-right));text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;transform:translateX(-50%);white-space:nowrap;width:100%;width:14px}.list .accordion-item-toggle.active-state{background-color:var(--f7-list-link-pressed-bg-color)}.accordion-item.media-item .accordion-item-toggle .item-title-row:before,.accordion-item.media-item>.item-link .item-title-row:before,.links-list .accordion-item>a:before,.list .accordion-item-toggle .item-inner:before,.list:not(.media-list) .accordion-item:not(.media-item) .accordion-item-toggle .item-inner:before,.list:not(.media-list) .accordion-item:not(.media-item)>.item-link .item-inner:before,.media-list .accordion-item .accordion-item-toggle .item-title-row:before,.media-list .accordion-item>.item-link .item-title-row:before{content:var(--f7-accordion-chevron-icon-down);height:8px;line-height:8px;margin-top:-4px;width:14px}.accordion-item-opened.media-item .accordion-item-toggle .item-title-row:before,.accordion-item-opened.media-item>.item-link .item-title-row:before,.accordion-opposite .accordion-item-opened .accordion-item-toggle.item-content:before,.accordion-opposite .accordion-item-opened .accordion-item-toggle>.item-content:before,.accordion-opposite .accordion-item-opened>.item-content:before,.accordion-opposite .accordion-item-opened>.item-link>.item-content:before,.accordion-opposite .links-list .accordion-item-opened>a:before,.links-list .accordion-item-opened>a:before,.list .accordion-item-toggle.accordion-item-opened .item-inner:before,.list:not(.media-list) .accordion-item-opened:not(.media-item) .accordion-item-toggle .item-inner:before,.list:not(.media-list) .accordion-item-opened:not(.media-item)>.item-link .item-inner:before,.media-list .accordion-item-opened .accordion-item-toggle .item-title-row:before,.media-list .accordion-item-opened>.item-link .item-title-row:before{content:var(--f7-accordion-chevron-icon-up);height:8px;line-height:8px;margin-top:-4px;width:14px}.ios{--f7-contacts-list-title-font-size:inherit;--f7-contacts-list-title-font-weight:600;--f7-contacts-list-title-height:22px;--f7-contacts-list-title-text-color:#000;--f7-contacts-list-title-bg-color:#f7f7f7}.ios .dark,.ios.dark{--f7-contacts-list-title-text-color:#fff;--f7-contacts-list-title-bg-color:#323234}.md{--f7-contacts-list-title-font-size:20px;--f7-contacts-list-title-font-weight:500;--f7-contacts-list-title-height:48px;--f7-contacts-list-title-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-contacts-list-title-text-color:var(--f7-theme-color)}.contacts-list{--f7-list-margin-vertical:0px}.contacts-list .list-group-title,.contacts-list li.list-group-title{background-color:var(--f7-contacts-list-title-bg-color,var(--f7-list-group-title-bg-color));color:var(--f7-contacts-list-title-text-color,var(--f7-theme-color));font-size:var(--f7-contacts-list-title-font-size,var(--f7-list-group-title-font-size));font-weight:var(--f7-contacts-list-title-font-weight,var(--f7-list-group-title-font-weight));height:var(--f7-contacts-list-title-height,var(--f7-list-group-title-height));line-height:var(--f7-contacts-list-title-height,var(--f7-list-group-title-height))}.contacts-list .list-group:first-child ul:before,.contacts-list .list-group:last-child ul:after{display:none!important}.md .contacts-list .list-group-title{overflow:visible;pointer-events:none;width:40px}.md .contacts-list .list-group-title+li{margin-top:calc(var(--f7-contacts-list-title-height)*-1)}.md .contacts-list .list-group-title:before{display:none!important}.md .contacts-list li:not(.list-group-title){padding-right:40px}:root{--f7-list-index-width:16px;--f7-list-index-font-size:11px;--f7-list-index-font-weight:600;--f7-list-index-item-height:14px;--f7-list-index-label-font-weight:500}.ios{--f7-list-index-label-text-color:#fff;--f7-list-index-label-size:44px;--f7-list-index-label-font-size:17px;--f7-list-index-skip-dot-size:6px}.md{--f7-list-index-label-size:56px;--f7-list-index-label-font-size:20px;--f7-list-index-skip-dot-size:4px}.md,.md .dark,.md [class*=color-]{--f7-list-index-label-bg-color:var(--f7-md-primary);--f7-list-index-label-text-color:var(--f7-md-on-primary)}.list-index{bottom:0;cursor:pointer;left:var(--f7-safe-area-left);position:absolute;text-align:center;top:0;-webkit-user-select:none;user-select:none;width:var(--f7-list-index-width);z-index:10}.list-index:before{content:"";height:100%;position:absolute;right:100%;top:0;width:20px}.list-index ul{align-items:center;color:var(--f7-list-index-text-color,var(--f7-theme-color));display:flex;flex-direction:column;font-size:var(--f7-list-index-font-size);font-weight:var(--f7-list-index-font-weight);height:100%;justify-content:center}.list-index li,.list-index ul{flex-shrink:0;list-style:none;margin:0;padding:0;position:relative;width:100%}.list-index li{display:block;height:var(--f7-list-index-item-height);line-height:var(--f7-list-index-item-height)}.list-index .list-index-skip-placeholder:after{background:var(--f7-list-index-text-color,var(--f7-theme-color));border-radius:50%;content:"";height:var(--f7-list-index-skip-dot-size);left:50%;margin-left:calc(var(--f7-list-index-skip-dot-size)*-1/2);margin-top:calc(var(--f7-list-index-skip-dot-size)*-1/2);position:absolute;top:50%;width:var(--f7-list-index-skip-dot-size)}.list-index .list-index-label{background-color:var(--f7-list-index-label-bg-color,var(--f7-theme-color));bottom:0;color:var(--f7-list-index-label-text-color);font-size:var(--f7-list-index-label-font-size);font-weight:var(--f7-list-index-label-font-weight);height:var(--f7-list-index-label-size);line-height:var(--f7-list-index-label-size);position:absolute;right:100%;text-align:center;width:var(--f7-list-index-label-size)}.navbars~.page>.list-index,.navbar~.list-index,.navbar~.page>.list-index{top:var(--f7-navbar-height)}.ios .navbars~.toolbar-top-ios .md .navbar~.toolbar-top-md~.list-index,.ios .navbar~.toolbar-top-ios~.list-index,.navbars~.toolbar-top~.list-index,.navbar~.toolbar-top~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-toolbar-height))}.ios .navbars~.toolbar-top-ios .md .navbar~.toolbar-top-md.tabbar-icons~.list-index,.ios .navbar~.toolbar-top-ios.tabbar-icons~.list-index,.navbars~.toolbar-top.tabbar-icons~.list-index,.navbar~.toolbar-top.tabbar-icons~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height))}.navbars~.subnavbar~.list-index,.navbar~.subnavbar~.list-index,.page-with-subnavbar .navbar~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-subnavbar-height))}.ios .toolbar-bottom-ios~* .page>.list-index,.ios .toolbar-bottom-ios~.list-index,.ios .toolbar-bottom-ios~.page>.list-index,.md .toolbar-bottom-md~* .page>.list-index,.md .toolbar-bottom-md~.list-index,.md .toolbar-bottom-md~.page>.list-index,.toolbar-bottom~* .page>.list-index,.toolbar-bottom~.list-index,.toolbar-bottom~.page>.list-index{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.ios .toolbar-bottom-ios.tabbar-icons~* .page>.list-index,.ios .toolbar-bottom-ios.tabbar-icons~.list-index,.ios .toolbar-bottom-ios.tabbar-icons~.page>.list-index,.md .toolbar-bottom-md.tabbar-icons~* .page>.list-index,.md .toolbar-bottom-md.tabbar-icons~.list-index,.md .toolbar-bottom-md.tabbar-icons~.page>.list-index,.toolbar-bottom.tabbar-icons~* .page>.list-index,.toolbar-bottom.tabbar-icons~.list-index,.toolbar-bottom.tabbar-icons~.page>.list-index{bottom:calc(var(--f7-tabbar-icons-height) + var(--f7-safe-area-bottom))}.ios .list-index .list-index-label{border-radius:50%;margin-bottom:calc(var(--f7-list-index-label-size)*-1/2);margin-right:calc(var(--f7-list-index-width) - 1px)}.ios .list-index .list-index-label:before{background-color:inherit;border-radius:50% 0 50% 50%;content:"";height:100%;left:0;position:absolute;top:0;transform:rotate(45deg);width:100%;z-index:-1}.md .list-index .list-index-label{border-radius:50% 50% 0 50%}:root{--f7-timeline-inner-block-margin-vertical:16px;--f7-timeline-divider-margin-horizontal:16px;--f7-timeline-horizontal-date-height:34px;--f7-timeline-year-height:24px;--f7-timeline-year-font-weight:inherit;--f7-timeline-month-height:24px;--f7-timeline-month-font-size:inherit;--f7-timeline-month-font-weight:inherit;--f7-timeline-item-text-font-weight:inherit;--f7-timeline-item-subtitle-font-weight:inherit}.ios{--f7-timeline-divider-color:#bbb;--f7-timeline-padding-horizontal:16px;--f7-timeline-margin-vertical:35px;--f7-timeline-item-inner-border-radius:7px;--f7-timeline-item-time-font-size:13px;--f7-timeline-item-title-font-size:17px;--f7-timeline-item-title-line-height:inherit;--f7-timeline-item-title-font-weight:600;--f7-timeline-item-subtitle-font-size:15px;--f7-timeline-item-subtitle-line-height:inherit;--f7-timeline-item-text-font-size:inherit;--f7-timeline-item-text-color:inherit;--f7-timeline-item-text-line-height:inherit;--f7-timeline-year-font-size:16px;--f7-timeline-horizontal-item-padding:10px;--f7-timeline-item-inner-bg-color:#fff;--f7-timeline-item-time-text-color:rgba(0,0,0,0.45);--f7-timeline-horizontal-item-border-color:rgba(0,0,0,0.22);--f7-timeline-horizontal-item-date-border-color:rgba(0,0,0,0.22)}.ios .dark,.ios.dark{--f7-timeline-horizontal-item-border-color:rgba(255,255,255,0.15);--f7-timeline-horizontal-item-date-border-color:rgba(255,255,255,0.15);--f7-timeline-item-inner-bg-color:#1c1c1d;--f7-timeline-item-time-text-color:rgba(255,255,255,0.55)}.md{--f7-timeline-padding-horizontal:16px;--f7-timeline-margin-vertical:32px;--f7-timeline-item-inner-border-radius:16px;--f7-timeline-item-time-font-size:13px;--f7-timeline-item-title-font-size:16px;--f7-timeline-item-title-line-height:inherit;--f7-timeline-item-title-font-weight:400;--f7-timeline-item-subtitle-font-size:inherit;--f7-timeline-item-subtitle-line-height:inherit;--f7-timeline-item-text-font-size:inherit;--f7-timeline-item-text-line-height:inherit;--f7-timeline-year-font-size:16px;--f7-timeline-horizontal-item-padding:12px;--f7-timeline-horizontal-item-date-border-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-timeline-divider-color:var(--f7-md-outline);--f7-timeline-item-text-color:var(--f7-md-on-surface);--f7-timeline-horizontal-item-border-color:var(--f7-md-outline);--f7-timeline-item-inner-bg-color:var(--f7-md-surface-1);--f7-timeline-item-time-text-color:var(--f7-md-on-surface-variant)}.timeline{box-sizing:border-box;margin:var(--f7-timeline-margin-vertical) 0;padding:0 var(--f7-timeline-padding-horizontal);padding-bottom:0;padding-left:calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-right));padding-top:0}.block-strong .timeline{margin:0;padding:0}.timeline-item{box-sizing:border-box;display:flex;justify-content:flex-start;overflow:hidden;padding:2px 0 var(--f7-timeline-padding-horizontal);position:relative}.timeline-item:last-child{padding-bottom:2px}.timeline-item-date{box-sizing:border-box;flex-shrink:0;text-align:right;width:50px}.timeline-item-date small{font-size:10px}.timeline-item-content{flex-shrink:10;margin:2px;min-width:0;position:relative}.timeline-item-content .block,.timeline-item-content .card,.timeline-item-content .list,.timeline-item-content.block,.timeline-item-content.card,.timeline-item-content.list{margin:0;width:100%}.timeline-item-content .block+.block,.timeline-item-content .block+.card,.timeline-item-content .block+.list,.timeline-item-content .card+.block,.timeline-item-content .card+.card,.timeline-item-content .card+.list,.timeline-item-content .list+.block,.timeline-item-content .list+.card,.timeline-item-content .list+.list{margin:var(--f7-timeline-inner-block-margin-vertical) 0 0}.timeline-item-content h1:first-child,.timeline-item-content h2:first-child,.timeline-item-content h3:first-child,.timeline-item-content h4:first-child,.timeline-item-content ol:first-child,.timeline-item-content p:first-child,.timeline-item-content ul:first-child{margin-top:0}.timeline-item-content h1:last-child,.timeline-item-content h2:last-child,.timeline-item-content h3:last-child,.timeline-item-content h4:last-child,.timeline-item-content ol:last-child,.timeline-item-content p:last-child,.timeline-item-content ul:last-child{margin-bottom:0}.timeline-item-inner{background:var(--f7-timeline-item-inner-bg-color);border-radius:var(--f7-timeline-item-inner-border-radius);box-sizing:border-box;padding:8px var(--f7-timeline-padding-horizontal)}.timeline-item-inner+.timeline-item-inner{margin-top:var(--f7-timeline-inner-block-margin-vertical)}.timeline-item-inner .block{color:inherit;padding:0}.timeline-item-inner .block-strong{margin:0;padding-left:0;padding-right:0}.timeline-item-inner .block-strong:after,.timeline-item-inner .block-strong:before,.timeline-item-inner .list ul:after,.timeline-item-inner .list ul:before{display:none!important}.timeline-item-divider{background:var(--f7-timeline-divider-color);border-radius:50%;flex-shrink:0;height:10px;margin:3px var(--f7-timeline-divider-margin-horizontal) 0;position:relative;width:1px;width:10px}.timeline-item-divider:after,.timeline-item-divider:before{background:inherit;content:" ";height:100vh;left:50%;position:absolute;transform:translate3d(-50%,0,0);width:1px}.timeline-item-divider:after{top:100%}.timeline-item-divider:before{bottom:100%}.timeline-item:first-child .timeline-item-divider:before,.timeline-item:last-child .timeline-item-divider:after{display:none}.timeline-item-time{color:var(--f7-timeline-item-time-text-color);font-size:var(--f7-timeline-item-time-font-size);margin-top:var(--f7-timeline-inner-block-margin-vertical)}.timeline-item-time:first-child,.timeline-item-time:last-child,.timeline-item-title+.timeline-item-time{margin-top:0}.timeline-item-title{font-size:var(--f7-timeline-item-title-font-size);font-weight:var(--f7-timeline-item-title-font-weight);line-height:var(--f7-timeline-item-title-line-height)}.timeline-item-subtitle{font-size:var(--f7-timeline-item-subtitle-font-size);font-weight:var(--f7-timeline-item-subtitle-font-weight);line-height:var(--f7-timeline-item-subtitle-line-height)}.timeline-item-text{color:var(--f7-timeline-item-text-color);font-size:var(--f7-timeline-item-text-font-size);font-weight:var(--f7-timeline-item-text-font-weight);line-height:var(--f7-timeline-item-text-line-height)}.timeline-sides .timeline-item,.timeline-sides .timeline-item-right{margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.timeline-sides .timeline-item .timeline-item-date,.timeline-sides .timeline-item-right .timeline-item-date{text-align:left}.timeline-sides .timeline-item-left,.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.timeline-sides .timeline-item-left .timeline-item-date,.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:right}@media (min-width:480px){.xsmall-sides .timeline-item,.xsmall-sides .timeline-item-right{margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.xsmall-sides .timeline-item .timeline-item-date,.xsmall-sides .timeline-item-right .timeline-item-date{text-align:left}.xsmall-sides .timeline-item-left,.xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.xsmall-sides .timeline-item-left .timeline-item-date,.xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:right}}@media (min-width:568px){.small-sides .timeline-item,.small-sides .timeline-item-right{margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.small-sides .timeline-item .timeline-item-date,.small-sides .timeline-item-right .timeline-item-date{text-align:left}.small-sides .timeline-item-left,.small-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.small-sides .timeline-item-left .timeline-item-date,.small-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:right}}@media (min-width:768px){.medium-sides .timeline-item,.medium-sides .timeline-item-right{margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.medium-sides .timeline-item .timeline-item-date,.medium-sides .timeline-item-right .timeline-item-date{text-align:left}.medium-sides .timeline-item-left,.medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.medium-sides .timeline-item-left .timeline-item-date,.medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:right}}@media (min-width:1024px){.large-sides .timeline-item,.large-sides .timeline-item-right{margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.large-sides .timeline-item .timeline-item-date,.large-sides .timeline-item-right .timeline-item-date{text-align:left}.large-sides .timeline-item-left,.large-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.large-sides .timeline-item-left .timeline-item-date,.large-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:right}}@media (min-width:1200px){.xlarge-sides .timeline-item,.xlarge-sides .timeline-item-right{margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.xlarge-sides .timeline-item .timeline-item-date,.xlarge-sides .timeline-item-right .timeline-item-date{text-align:left}.xlarge-sides .timeline-item-left,.xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.xlarge-sides .timeline-item-left .timeline-item-date,.xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:right}}.timeline-horizontal{display:flex;height:100%;margin:0;padding:0;padding-left:var(--f7-safe-area-left);padding-right:0;position:relative}.timeline-horizontal .timeline-item{display:block;flex-shrink:0;height:100%;margin:0;padding:0;padding-bottom:var(--f7-timeline-horizontal-item-padding);padding-top:var(--f7-timeline-horizontal-date-height)!important;position:relative;width:100/3vw}.timeline-horizontal .timeline-item:after{background-color:var(--f7-timeline-horizontal-item-border-color);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.timeline-horizontal .timeline-item-date{background-color:var(--f7-bars-bg-color);color:var(--f7-bars-text-color);height:var(--f7-timeline-horizontal-date-height);left:0;line-height:var(--f7-timeline-horizontal-date-height);padding:0 var(--f7-timeline-horizontal-item-padding);position:absolute;text-align:left;text-align:right;top:0;width:auto;width:100%}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .timeline-horizontal .timeline-item-date{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-bars-bg-color-rgb),var(--f7-bars-translucent-opacity))}}.timeline-horizontal .timeline-item-date:after{background-color:var(--f7-timeline-horizontal-item-date-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.timeline-horizontal .timeline-item-content{-webkit-overflow-scrolling:touch;height:calc(100vw - var(--f7-timeline-horizontal-item-padding));margin:0;overflow:auto;padding:var(--f7-timeline-horizontal-item-padding)}.timeline-horizontal .timeline-item-divider{display:none}.timeline-horizontal .timeline-month:last-child .timeline-item:last-child:after,.timeline-horizontal>.timeline-item:last-child:after{display:none!important}.timeline-horizontal.timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.timeline-cols-20 .timeline-item{width:5vw}@media (min-width:480px){.timeline-horizontal.xsmall-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.xsmall-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.xsmall-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.xsmall-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.xsmall-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.xsmall-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.xsmall-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.xsmall-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.xsmall-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.xsmall-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.xsmall-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.xsmall-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.xsmall-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.xsmall-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.xsmall-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.xsmall-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.xsmall-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.xsmall-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.xsmall-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.xsmall-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:568px){.timeline-horizontal.small-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.small-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.small-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.small-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.small-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.small-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.small-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.small-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.small-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.small-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.small-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.small-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.small-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.small-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.small-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.small-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.small-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.small-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.small-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.small-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:768px){.timeline-horizontal.medium-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.medium-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.medium-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.medium-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.medium-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.medium-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.medium-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.medium-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.medium-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.medium-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.medium-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.medium-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.medium-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.medium-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.medium-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.medium-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.medium-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.medium-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.medium-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.medium-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:1024px){.timeline-horizontal.large-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.large-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.large-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.large-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.large-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.large-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.large-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.large-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.large-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.large-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.large-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.large-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.large-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.large-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.large-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.large-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.large-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.large-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.large-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.large-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:1200px){.timeline-horizontal.xlarge-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.xlarge-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.xlarge-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.xlarge-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.xlarge-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.xlarge-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.xlarge-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.xlarge-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.xlarge-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.xlarge-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.xlarge-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.xlarge-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.xlarge-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.xlarge-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.xlarge-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.xlarge-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.xlarge-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.xlarge-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.xlarge-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.xlarge-timeline-cols-20 .timeline-item{width:5vw}}.timeline-year{padding-top:var(--f7-timeline-year-height)}.timeline-year:after{background-color:var(--f7-timeline-horizontal-item-border-color);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.timeline-year:last-child:after{display:none!important}.timeline-month{padding-top:var(--f7-timeline-month-height)}.timeline-month .timeline-item:before{background-color:var(--f7-timeline-horizontal-item-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.timeline-month,.timeline-year{box-sizing:border-box;display:flex;flex-shrink:0;height:100%;position:relative}.timeline-year-title{font-size:var(--f7-timeline-year-font-size);font-weight:var(--f7-timeline-year-font-weight);height:var(--f7-timeline-year-height);line-height:var(--f7-timeline-year-height)}.timeline-month-title{font-size:var(--f7-timeline-month-font-size);font-weight:var(--f7-timeline-month-font-weight);height:var(--f7-timeline-month-height);line-height:var(--f7-timeline-month-height)}.timeline-month-title,.timeline-year-title{background-color:var(--f7-bars-bg-color);box-sizing:border-box;color:var(--f7-bars-text-color);left:0;padding:0 var(--f7-timeline-horizontal-item-padding);position:absolute;top:0;width:100%}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .timeline-month-title,.ios-translucent-bars .timeline-year-title{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-bars-bg-color-rgb),var(--f7-bars-translucent-opacity))}}.timeline-month-title span,.timeline-year-title span{display:inline-block;position:sticky;right:calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-right))}.timeline-month-title span{margin-top:-2px}.timeline-year:first-child .timeline-month:first-child .timeline-month-title,.timeline-year:first-child .timeline-year-title,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-month-title{left:calc(var(--f7-safe-area-left)*-1);right:0;width:auto}.timeline-horizontal .timeline-item:first-child,.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-item:first-child,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-month-title+.timeline-item{overflow:visible}.timeline-horizontal .timeline-item:first-child .timeline-item-date,.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child .timeline-item-date,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-item:first-child .timeline-item-date,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-month-title+.timeline-item .timeline-item-date{left:calc(0px - var(--f7-safe-area-left));padding-left:calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-left));right:0;width:auto}.timeline-year:last-child .timeline-month:last-child .timeline-month-title,.timeline-year:last-child .timeline-year-title{right:calc(0px - var(--f7-safe-area-right));width:auto}.timeline-horizontal .timeline-item:last-child,.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child{overflow:visible}.timeline-horizontal .timeline-item:last-child .timeline-item-date,.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child .timeline-item-date{left:0;right:calc(0px - var(--f7-safe-area-right));width:auto}.ios .block-strong .timeline-item-inner{border:1px solid rgba(0,0,0,.1);border-radius:3px}.ios .timeline-year-title span{margin-top:3px}.md .timeline-year-title span{margin-top:2px}.tabs .tab{display:none}.tabs .tab-active{display:block}.tabs-animated-wrap{height:100%;overflow:hidden;position:relative;width:100%}.tabs-animated-wrap>.tabs{display:flex;height:100%;transition-duration:.3s}.tabs-animated-wrap>.tabs>.tab{display:block;flex-shrink:0;width:100%}.tabs-animated-wrap.not-animated>.tabs{transition-duration:0ms}swiper-container.tabs{height:100%}swiper-container.tabs>.tab{display:block;touch-action:pan-y}.page>.tabs{height:100%}:root{--f7-panel-width:260px;--f7-panel-backdrop-bg-color:rgba(0,0,0,0.3);--f7-panel-bg-color:#fff}:root .dark,:root.dark{--f7-panel-bg-color:#000}.ios{--f7-panel-collapsed-width:58px;--f7-panel-transition-duration:400ms;--f7-panel-transition-timing-function:initial}.md{--f7-panel-collapsed-width:60px;--f7-panel-transition-duration:400ms;--f7-panel-transition-timing-function:cubic-bezier(0,0.8,0.34,1)}.panel-backdrop{background-color:var(--f7-panel-backdrop-bg-color);height:100%;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transform:translateZ(0);transition-duration:var(--f7-panel-transition-duration);transition-property:transform,opacity;visibility:hidden;width:100%;z-index:5999}.panel-backdrop .with-panel,.panel-backdrop .with-panel-closing{visibility:visible}.panel-backdrop.not-animated{transition-duration:0ms!important}.panel{background-color:var(--f7-panel-bg-color);box-sizing:border-box;height:100%;overflow:visible;position:absolute;top:0;transform:translateZ(0);transition-duration:var(--f7-panel-transition-duration);transition-property:transform;width:var(--f7-panel-width);z-index:1000}.panel:not(.panel-in):not(.panel-out):not(.panel-in-breakpoint):not(.panel-in-collapsed):not(.panel-in-swipe){display:none}.panel:after{content:"";height:100%;opacity:0;pointer-events:none;position:absolute;top:0;transition-duration:var(--f7-panel-transition-duration);transition-property:transform,opacity;width:20px;z-index:5999}.panel.not-animated,.panel.not-animated:after,.panel.panel-reveal.not-animated~.view,.panel.panel-reveal.not-animated~.views{transition-duration:0ms!important}.panel.panel-resizing{-webkit-user-select:none;user-select:none}.panel.panel-resizing,.panel.panel-resizing:after,.panel.panel-resizing~.view,.panel.panel-resizing~.views{transition-duration:0ms!important}.panel-cover,.panel-floating{z-index:6000}.panel-floating{border-radius:16px;bottom:calc(8px + var(--f7-safe-area-bottom, 0px));height:auto;overflow:hidden;top:calc(8px + var(--f7-safe-area-top, 0px))}.panel-floating .view,.panel-floating .views{--f7-safe-area-top:0px;--f7-safe-area-bottom:0px}.page .panel-floating{bottom:calc(8px + var(--f7-safe-area-bottom, 0px));top:calc(8px + var(--f7-page-navbar-offset, 0px))}.page .panel-floating .page{--f7-page-navbar-offset:0px}.page .panel-floating .navbars~*,.page .panel-floating .navbar~*{--f7-page-navbar-offset:calc(var(--f7-navbar-height))}.panel-left{left:0;width:var(--f7-panel-left-width,var(--f7-panel-width))}.panel-left.panel-cover,.panel-left.panel-floating,.panel-left.panel-push{transform:translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width))*-1),0,0)}.panel-right{right:0;width:var(--f7-panel-right-width,var(--f7-panel-width))}.panel-right.panel-cover,.panel-right.panel-floating,.panel-right.panel-push{transform:translate3d(var(--f7-panel-right-width,var(--f7-panel-width)),0,0)}.panel-in-breakpoint{transform:translateZ(0)!important;transition-duration:0ms}.panel-in-breakpoint:after{display:none}.panel-in-breakpoint.panel-cover,.panel-in-breakpoint.panel-floating{z-index:5900}.panel,.panel-backdrop{transition-timing-function:var(--f7-panel-transition-timing-function)}html.with-panel-closing .framework7-root>.view,html.with-panel-closing .views,html.with-panel-left-push .framework7-root>.view,html.with-panel-left-push .views,html.with-panel-left-reveal .framework7-root>.view,html.with-panel-left-reveal .views,html.with-panel-right-push .framework7-root>.view,html.with-panel-right-push .views,html.with-panel-right-reveal .framework7-root>.view,html.with-panel-right-reveal .views{transition-duration:var(--f7-panel-transition-duration);transition-property:transform;transition-timing-function:var(--f7-panel-transition-timing-function)}html.with-panel .framework7-root>.view .page-content,html.with-panel .framework7-root>.views .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}html.with-panel-left-push .framework7-root>.view,html.with-panel-left-push .views,html.with-panel-left-reveal .framework7-root>.view,html.with-panel-left-reveal .views{transform:translate3d(var(--f7-panel-left-width,var(--f7-panel-width)),0,0)}html.with-panel-right-push .framework7-root>.view,html.with-panel-right-push .views,html.with-panel-right-reveal .framework7-root>.view,html.with-panel-right-reveal .views{transform:translate3d(calc(var(--f7-panel-right-width, var(--f7-panel-width))*-1),0,0)}.page>.panel-backdrop{z-index:290}.page .panel-push,.page>.panel-reveal{z-index:1}.page>.panel-cover,.page>.panel-floating{z-index:300}.page.with-panel-closing>.page-content,.page.with-panel-closing>.tabs,.page.with-panel-left-push>.page-content,.page.with-panel-left-push>.tabs,.page.with-panel-left-reveal>.page-content,.page.with-panel-left-reveal>.tabs,.page.with-panel-right-push>.page-content,.page.with-panel-right-push>.tabs,.page.with-panel-right-reveal>.page-content,.page.with-panel-right-reveal>.tabs{transition-duration:var(--f7-panel-transition-duration);transition-property:transform;transition-timing-function:var(--f7-panel-transition-timing-function)}.page.with-panel-left-push>.page-content,.page.with-panel-left-push>.tabs,.page.with-panel-left-reveal>.page-content,.page.with-panel-left-reveal>.tabs{transform:translate3d(var(--f7-panel-left-width,var(--f7-panel-width)),0,0)}.page.with-panel-right-push>.page-content,.page.with-panel-right-push>.tabs,.page.with-panel-right-reveal>.page-content,.page.with-panel-right-reveal>.tabs{transform:translate3d(calc(var(--f7-panel-right-width, var(--f7-panel-width))*-1),0,0)}.with-panel-closing .panel-backdrop-in{opacity:0;pointer-events:auto;visibility:visible}.with-panel-left-cover .panel-backdrop-in,.with-panel-left-floating .panel-backdrop-in,.with-panel-left-push .panel-backdrop-in,.with-panel-left-reveal .panel-backdrop-in,.with-panel-right-cover .panel-backdrop-in,.with-panel-right-floating .panel-backdrop-in,.with-panel-right-push .panel-backdrop-in,.with-panel-right-reveal .panel-backdrop-in{opacity:1;pointer-events:auto;visibility:visible}.with-panel-left-push .panel-backdrop-in,.with-panel-left-reveal .panel-backdrop-in{transform:translate3d(var(--f7-panel-left-width,var(--f7-panel-width)),0,0)}.with-panel-right-push .panel-backdrop-in,.with-panel-right-reveal .panel-backdrop-in{transform:translate3d(calc(var(--f7-panel-right-width, var(--f7-panel-width))*-1),0,0)}.with-panel-left-cover .panel-left,.with-panel-left-push .panel-left{transform:translateZ(0)}.with-panel-left-floating .panel-left{transform:translate3d(8px,0,0)}.with-panel-right-cover .panel-right,.with-panel-right-push .panel-right{transform:translateZ(0)}.with-panel-right-floating .panel-right{transform:translate3d(-8px,0,0)}.panel-resizable{max-width:100%}.panel-resize-handler{cursor:col-resize;display:none;height:100%;position:absolute;top:0;width:6px;z-index:6000}.panel-resizable .panel-resize-handler{display:block}.panel-left.panel-cover .panel-resize-handler,.panel-left.panel-floating .panel-resize-handler{right:-3px}.panel-left.panel-push .panel-resize-handler,.panel-left.panel-reveal .panel-resize-handler{right:0}.panel-right.panel-cover .panel-resize-handler,.panel-right.panel-floating .panel-resize-handler{left:-3px}.panel-right.panel-push .panel-resize-handler,.panel-right.panel-reveal .panel-resize-handler{left:0}.panel-left.panel-in-collapsed~.page-content,.panel-left.panel-in-collapsed~.tabs,.panel-left.panel-in-collapsed~.view,.panel-left.panel-in-collapsed~.views{margin-left:var(--f7-panel-left-collapsed-width,var(--f7-panel-collapsed-width))}.page.with-panel-left-reveal .panel-left.panel-in-collapsed~.page-content,.page.with-panel-left-reveal .panel-left.panel-in-collapsed~.tabs,html.with-panel-left-reveal .panel-left.panel-in-collapsed~.view,html.with-panel-left-reveal .panel-left.panel-in-collapsed~.views{transform:translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width)) - var(--f7-panel-left-collapsed-width, var(--f7-panel-collapsed-width))),0,0)}.panel-right.panel-in-collapsed~.page-content,.panel-right.panel-in-collapsed~.tabs,.panel-right.panel-in-collapsed~.view,.panel-right.panel-in-collapsed~.views{margin-right:var(--f7-panel-right-collapsed-width,var(--f7-panel-collapsed-width))}.page.with-panel-right-reveal .panel-right.panel-in-collapsed~.page-content,.page.with-panel-right-reveal .panel-right.panel-in-collapsed~.tabs,html.with-panel-right-reveal .panel-right.panel-in-collapsed~.view,html.with-panel-right-reveal .panel-right.panel-in-collapsed~.views{transform:translate3d(calc(var(--f7-panel-right-collapsed-width, var(--f7-panel-collapsed-width)) - var(--f7-panel-right-width, var(--f7-panel-width))),0,0)}html.with-modal-popup-push .framework7-root,html.with-modal-popup-push-closing .framework7-root{--f7-panelPushScale:var(--f7-popup-push-scale);--f7-panelPushTransitionDuration:var(--f7-popup-transition-duration);--f7-panelPushTransitionTimingFunction:var(--f7-popup-transition-timing-function);--f7-panelPushBorderRadius:var(--f7-popup-push-border-radius)}html.with-modal-sheet-push .framework7-root,html.with-modal-sheet-push-closing .framework7-root{--f7-panelPushScale:var(--f7-sheet-push-scale);--f7-panelPushTransitionDuration:var(--f7-sheet-transition-duration);--f7-panelPushTransitionTimingFunction:var(--f7-sheet-transition-timing-function);--f7-panelPushBorderRadius:var(--f7-sheet-push-border-radius)}html.with-modal-popup-push .framework7-root>.panel-in,html.with-modal-popup-push .framework7-root>.panel-out,html.with-modal-sheet-push .framework7-root>.panel-in,html.with-modal-sheet-push .framework7-root>.panel-out{transition-duration:var(--f7-panelPushTransitionDuration);transition-timing-function:var(--f7-panelPushTransitionTimingFunction)}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-left,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-left,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-left,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-left,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-left,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-left{border-top-left-radius:var(--f7-panelPushBorderRadius);transform:scale(var(--f7-panelPushScale,1));transform-origin:50vw center}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-left .view,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-left .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-left .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-left .view{border-top-left-radius:var(--f7-panelPushBorderRadius)}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-right,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-right,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-right,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-right,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-right,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-right{border-top-right-radius:var(--f7-panelPushBorderRadius);transform:scale(var(--f7-panelPushScale,1));transform-origin:calc(var(--f7-panel-left-width, var(--f7-panel-width)) - 50vw) center}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-right .view,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-right .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-right .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-right .view{border-top-right-radius:var(--f7-panelPushBorderRadius)}html.with-modal-popup-push .framework7-root>.panel-in.panel-cover.panel-left,html.with-modal-popup-push .framework7-root>.panel-out.panel-cover.panel-left,html.with-modal-sheet-push .framework7-root>.panel-in.panel-cover.panel-left,html.with-modal-sheet-push .framework7-root>.panel-out.panel-cover.panel-left{transform:translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width))*-1),0,0)}html.with-modal-popup-push .framework7-root>.panel-in.panel-cover.panel-right,html.with-modal-popup-push .framework7-root>.panel-out.panel-cover.panel-right,html.with-modal-sheet-push .framework7-root>.panel-in.panel-cover.panel-right,html.with-modal-sheet-push .framework7-root>.panel-out.panel-cover.panel-right{transform:translate3d(var(--f7-panel-right-width,var(--f7-panel-width)),0,0)}html.with-modal-popup-push-closing .framework7-root>.panel-in,html.with-modal-sheet-push-closing .framework7-root>.panel-in{transition-duration:var(--f7-panelPushTransitionDuration);transition-timing-function:var(--f7-panelPushTransitionTimingFunction)}html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-reveal.panel-left,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-reveal.panel-left{transform-origin:50vw center}html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-reveal.panel-right,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-reveal.panel-right{transform-origin:calc(var(--f7-panel-right-width, var(--f7-panel-width)) - 50vw) center}.md .panel-cover{overflow:hidden}.md .panel-cover.panel-left{border-radius:0 16px 16px 0}.md .panel-cover.panel-right{border-radius:16px 0 0 16px}:root{--f7-card-margin-horizontal:16px;--f7-card-margin-vertical:16px;--f7-card-content-padding-horizontal:16px;--f7-card-content-padding-vertical:16px;--f7-card-font-size:inherit;--f7-card-header-text-color:inherit;--f7-card-header-font-weight:400;--f7-card-header-padding-horizontal:16px;--f7-card-footer-font-weight:400;--f7-card-footer-font-size:inherit;--f7-card-footer-padding-horizontal:16px;--f7-card-expandable-font-size:16px;--f7-card-expandable-tablet-width:670px;--f7-card-expandable-tablet-height:670px}.ios{--f7-card-border-radius:8px;--f7-card-box-shadow:0px 1px 2px rgba(0,0,0,0.2);--f7-card-header-font-size:17px;--f7-card-header-padding-vertical:10px;--f7-card-header-min-height:44px;--f7-card-footer-text-color:rgba(0,0,0,0.45);--f7-card-footer-padding-vertical:10px;--f7-card-footer-min-height:44px;--f7-card-expandable-margin-horizontal:20px;--f7-card-expandable-margin-vertical:30px;--f7-card-expandable-box-shadow:0px 20px 40px rgba(0,0,0,0.3);--f7-card-expandable-border-radius:16px;--f7-card-expandable-tablet-border-radius:16px;--f7-card-expandable-header-font-size:27px;--f7-card-expandable-header-font-weight:bold;--f7-card-text-color:inherit;--f7-card-bg-color:#fff;--f7-card-expandable-bg-color:#fff;--f7-card-outline-border-color:rgba(0,0,0,0.12);--f7-card-header-border-color:rgba(0,0,0,0.1);--f7-card-footer-border-color:rgba(0,0,0,0.1)}.ios .dark,.ios.dark{--f7-card-bg-color:#1c1c1d;--f7-card-expandable-bg-color:#1c1c1d;--f7-card-outline-border-color:rgba(255,255,255,0.15);--f7-card-header-border-color:rgba(255,255,255,0.15);--f7-card-footer-border-color:rgba(255,255,255,0.15);--f7-card-footer-text-color:rgba(255,255,255,0.55)}.md{--f7-card-border-radius:16px;--f7-card-box-shadow:0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);--f7-card-header-font-size:22px;--f7-card-header-padding-vertical:16px;--f7-card-header-min-height:48px;--f7-card-footer-padding-vertical:16px;--f7-card-footer-min-height:48px;--f7-card-expandable-margin-horizontal:12px;--f7-card-expandable-margin-vertical:24px;--f7-card-expandable-box-shadow:0px 6px 6px -3px rgba(0,0,0,0.2),0px 10px 14px 1px rgba(0,0,0,0.14),0px 4px 18px 3px rgba(0,0,0,0.12);--f7-card-expandable-border-radius:16px;--f7-card-expandable-tablet-border-radius:16px;--f7-card-expandable-header-font-size:22px;--f7-card-expandable-header-font-weight:500}.md,.md .dark,.md [class*=color-]{--f7-card-bg-color:var(--f7-md-surface-1);--f7-card-expandable-bg-color:var(--f7-md-surface-1);--f7-card-outline-border-color:var(--f7-md-outline);--f7-card-header-border-color:var(--f7-md-outline);--f7-card-footer-border-color:var(--f7-md-outline);--f7-card-text-color:var(--f7-md-on-surface);--f7-card-footer-text-color:var(--f7-md-on-surface-variant)}.card .list>ul:after,.card .list>ul:before,.cards-list>ul:after,.cards-list>ul:before{display:none!important}.card .list ul,.cards-list ul{background:none}.card{background:var(--f7-card-bg-color);border-radius:var(--f7-card-border-radius);color:var(--f7-card-text-color);font-size:var(--f7-card-font-size);margin:var(--f7-card-margin-vertical) calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-right)) var(--f7-card-margin-vertical) calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-left));position:relative}.card .block,.card .list{margin:0}.row:not(.no-gap) .col>.card{margin-left:0;margin-right:0}.card-raised{box-shadow:var(--f7-card-box-shadow)}.card-outline,.ios .card-outline-ios,.md .card-outline-md{border:1px solid var(--f7-card-outline-border-color)}.card-content{position:relative}.card-content-padding{padding:var(--f7-card-content-padding-vertical) var(--f7-card-content-padding-horizontal);position:relative}.card-content-padding>.block,.card-content-padding>.list{margin:calc(var(--f7-card-content-padding-vertical)*-1) calc(var(--f7-card-content-padding-horizontal)*-1)}.card-content-padding>p:first-child{margin-top:0}.card-content-padding>p:last-child{margin-bottom:0}.card-header{color:var(--f7-card-header-text-color);font-size:var(--f7-card-header-font-size);font-weight:var(--f7-card-header-font-weight);min-height:var(--f7-card-header-min-height);padding:var(--f7-card-header-padding-vertical) var(--f7-card-header-padding-horizontal)}.card-dividers .card-header,.card-header-divider .card-header,.card-header.card-header-divider{border-bottom:1px solid var(--f7-card-header-border-color)}.card-footer{color:var(--f7-card-footer-text-color);font-size:var(--f7-card-footer-font-size);font-weight:var(--f7-card-footer-font-weight);min-height:var(--f7-card-footer-min-height);padding:var(--f7-card-footer-padding-vertical) var(--f7-card-footer-padding-horizontal)}.card-dividers .card-footer,.card-footer-divider .card-footer,.card-footer.card-footer-divider{border-top:1px solid var(--f7-card-header-border-color)}.card-footer a.link{overflow:hidden}.card-footer,.card-header{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;position:relative}.card-footer[valign=top],.card-header[valign=top]{align-items:flex-start}.card-footer[valign=bottom],.card-header[valign=bottom]{align-items:flex-end}.card-footer a.link,.card-header a.link{position:relative}.card-footer a.link i.icon,.card-header a.link i.icon{display:block}.card-footer a.icon-only,.card-header a.icon-only{align-items:center;display:flex;justify-content:center;margin:0}.card-header{border-radius:var(--f7-card-border-radius) var(--f7-card-border-radius) 0 0}.card-footer{border-radius:0 0 var(--f7-card-border-radius) var(--f7-card-border-radius)}.card-expandable{background:var(--f7-card-expandable-bg-color);border-radius:var(--f7-card-expandable-border-radius);font-size:var(--f7-card-expandable-font-size);height:300px;margin:var(--f7-card-expandable-margin-vertical) calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-right)) var(--f7-card-expandable-margin-vertical) calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-left));overflow:hidden;position:relative;transform-origin:center center;transition-duration:.2s;transition-property:transform,border-radius;z-index:2}.card-expandable.card-raised{box-shadow:var(--f7-card-expandable-box-shadow)}.card-expandable:not(.card-opened){-webkit-user-select:none;user-select:none}.card-expandable.card-no-transition{transition-duration:0ms}.card-expandable.card-expandable-animate-width .card-content{transition-property:width,transform;width:100%}.card-expandable.active-state{transform:scale(.97) translateZ(0)}.card-expandable .card-opened-fade-in,.card-expandable .card-opened-fade-out{transition-duration:.4s}.card-expandable .card-opened-fade-in{opacity:0;pointer-events:none}.card-expandable .card-content{box-sizing:border-box;height:100vh;overflow:hidden;pointer-events:none;position:absolute;right:0;top:0;transform-origin:center top;transition-property:transform;width:100vw}.card-expandable .card-content .card-content-padding{padding-left:calc(var(--f7-safe-area-left) + var(--f7-card-content-padding-horizontal));padding-right:calc(var(--f7-safe-area-right) + var(--f7-card-content-padding-horizontal))}.card-expandable.card-opened{transition-duration:0ms}.card-expandable.card-closing,.card-expandable.card-opening,.card-expandable.card-transitioning{transition-duration:.4s}.card-expandable.card-opening .card-content{transition-duration:.3s}.card-expandable.card-closing .card-content{transition-duration:.5s}.card-expandable.card-closing,.card-expandable.card-opened,.card-expandable.card-opening{z-index:300}.card-expandable.card-opened,.card-expandable.card-opening{border-radius:0}.card-expandable.card-opened .card-opened-fade-in,.card-expandable.card-opening .card-opened-fade-in{opacity:1;pointer-events:auto}.card-expandable.card-opened .card-opened-fade-out,.card-expandable.card-opening .card-opened-fade-out{opacity:0;pointer-events:none}.card-expandable.card-opened .card-content{-webkit-overflow-scrolling:touch;overflow:auto;pointer-events:auto}.card-expandable .card-header{font-size:var(--f7-card-expandable-header-font-size);font-weight:var(--f7-card-expandable-header-font-weight)}.card-prevent-open{pointer-events:auto}.card-expandable-size{height:0;left:0;opacity:0;pointer-events:none;position:absolute;top:0;visibility:hidden;width:0}@media (min-width:768px) and (min-height:670px){.card-expandable:not(.card-tablet-fullscreen){max-width:var(--f7-card-expandable-tablet-width)}.card-expandable:not(.card-tablet-fullscreen).card-opened,.card-expandable:not(.card-tablet-fullscreen).card-opening{border-radius:var(--f7-card-expandable-tablet-border-radius)}.card-expandable:not(.card-tablet-fullscreen):not(.card-expandable-animate-width) .card-content{width:var(--f7-card-expandable-tablet-width)}.card-expandable:not(.card-tablet-fullscreen) .card-expandable-size{height:var(--f7-card-expandable-tablet-height);width:var(--f7-card-expandable-tablet-width)}}.page.page-with-card-opened .page-content{overflow:hidden}.card-backdrop{background:rgba(0,0,0,.2);height:100%;left:0;opacity:0;pointer-events:none;position:fixed;top:0;width:100%;z-index:299}.card-backdrop-in{animation:card-backdrop-fade-in .4s forwards;pointer-events:auto}.card-backdrop-out{animation:card-backdrop-fade-out .4s forwards}@supports ((-webkit-backdrop-filter:blur(15px)) or (backdrop-filter:blur(15px))){.card-backdrop{-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background:transparent}}@keyframes card-backdrop-fade-in{0%{opacity:0}to{opacity:1}}@keyframes card-backdrop-fade-out{0%{opacity:1}to{opacity:0}}:root{--f7-chip-font-size:14px;--f7-chip-media-font-size:16px;--f7-chip-delete-button-color:#000}:root .dark,:root.dark{--f7-chip-delete-button-color:#fff}.ios{--f7-chip-height:28px;--f7-chip-media-size:28px;--f7-chip-padding-horizontal:10px;--f7-chip-border-radius:28px;--f7-chip-font-weight:normal;--f7-chip-outline-border-color:rgba(0,0,0,0.12);--f7-chip-bg-color:rgba(0,0,0,0.12);--f7-chip-text-color:#000;--f7-chip-outline-text-color:#000}.ios .dark,.ios.dark{--f7-chip-bg-color:#333;--f7-chip-text-color:#fff;--f7-chip-outline-text-color:#fff;--f7-chip-outline-border-color:rgba(255,255,255,0.12)}.md{--f7-chip-font-weight:500;--f7-chip-media-size:24px;--f7-chip-height:32px;--f7-chip-padding-horizontal:12px;--f7-chip-border-radius:8px}.md,.md .dark,.md [class*=color-]{--f7-chip-bg-color:var(--f7-md-secondary-container);--f7-chip-text-color:var(--f7-md-on-secondary-container);--f7-chip-outline-text-color:var(--f7-md-on-surface);--f7-chip-outline-border-color:var(--f7-md-outline)}.chip{background-color:var(--f7-chip-bg-color);border-radius:var(--f7-chip-border-radius);color:var(--f7-chip-text-color);display:inline-flex;font-size:var(--f7-chip-font-size);font-weight:var(--f7-chip-font-weight);height:var(--f7-chip-height);line-height:var(--f7-chip-height);margin:2px 0;padding-left:var(--f7-chip-padding-horizontal);padding-right:var(--f7-chip-padding-horizontal);position:relative}.chip,.chip-media{align-items:center;box-sizing:border-box;vertical-align:middle}.chip-media{border-radius:50%;border-radius:var(--f7-chip-media-size);color:#fff;display:flex;flex-shrink:0;font-size:var(--f7-chip-media-font-size);height:var(--f7-chip-media-size);justify-content:center;line-height:var(--f7-chip-media-size);text-align:center;width:var(--f7-chip-media-size)}.chip-media i.icon{font-size:calc(var(--f7-chip-media-size) - 8px);height:calc(var(--f7-chip-media-size) - 8px)}.chip-media img{border-radius:50%;display:block;height:auto;max-height:100%;max-width:100%;width:auto}.chip-media+.chip-label{margin-right:4px}.chip-label{flex-shrink:1;min-width:0;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}.chip-delete{background-repeat:no-repeat;color:var(--f7-chip-delete-button-color);cursor:pointer;flex-shrink:0;height:24px;opacity:.54;position:relative;text-align:center;width:24px}.chip-delete:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;line-height:24px;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.chip .chip-delete.active-state{opacity:1}.chip-outline,.ios .chip-outline-ios,.md .chip-outline-md{background:none;border:1px solid var(--f7-chip-outline-border-color);color:var(--f7-chip-outline-text-color)}.ios .chip[class*=color-]{--f7-chip-bg-color:var(--f7-theme-color);--f7-chip-text-color:#fff}.ios .chip-outline-ios[class*=color-],.ios .chip-outline[class*=color-]{--f7-chip-outline-border-color:var(--f7-theme-color);--f7-chip-outline-text-color:var(--f7-theme-color)}.ios .chip-media{margin-right:calc(var(--f7-chip-padding-horizontal)*-1)}.ios .chip-delete{margin-left:calc(var(--f7-chip-padding-horizontal)*-1)}.ios .chip-delete:after{content:"delete_round_ios";font-size:10px}.md .chip-media{margin-right:calc(var(--f7-chip-padding-horizontal)*-1 + 4px)}.md .chip-label+.chip-delete{margin-right:4px}.md .chip-delete{margin-left:calc(var(--f7-chip-padding-horizontal)*-1 + 4px)}.md .chip-delete:after{content:"delete_round_md";font-size:16px}:root{--f7-input-bg-color:transparent;--f7-label-font-weight:400;--f7-label-height:16px;--f7-label-font-size:12px;--f7-floating-label-scale:1.33333;--f7-input-padding-left:0px;--f7-input-padding-right:0px;--f7-input-error-text-color:#ff3b30;--f7-input-error-font-size:12px;--f7-input-error-line-height:1.4;--f7-input-error-font-weight:400;--f7-input-info-font-size:12px;--f7-input-info-line-height:1.4;--f7-textarea-height:100px}.ios{--f7-input-item-bg-color:transparent;--f7-input-item-border-radius:0px;--f7-input-height:40px;--f7-input-font-size:16px;--f7-input-placeholder-color:#a9a9a9;--f7-textarea-padding-vertical:8px;--f7-label-text-color:inherit;--f7-input-clear-button-size:14px;--f7-input-outline-border-radius:8px;--f7-input-text-color:#000000;--f7-input-info-text-color:rgba(0,0,0,0.45);--f7-input-clear-button-color:rgba(0,0,0,0.45);--f7-input-outline-border-color:#bbb}.ios .dark,.ios.dark{--f7-input-text-color:#fff;--f7-input-info-text-color:rgba(255,255,255,0.55);--f7-input-clear-button-color:rgba(255,255,255,0.5);--f7-input-outline-border-color:#444}.md{--f7-input-item-border-radius:4px 4px 0 0;--f7-input-height:24px;--f7-input-font-size:16px;--f7-textarea-padding-vertical:0px;--f7-input-outline-border-radius:4px;--f7-floating-label-scale:1.33333;--f7-input-clear-button-size:24px;--f7-input-info-text-color:rgba(0,0,0,0.45)}.md .dark,.md.dark{--f7-input-info-text-color:rgba(255,255,255,0.45)}.md,.md .dark,.md [class*=color-]{--f7-input-placeholder-color:var(--f7-md-on-surface-variant);--f7-input-item-bg-color:var(--f7-md-surface-variant);--f7-input-border-color:var(--f7-md-outline);--f7-input-clear-button-color:var(--f7-md-on-surface-variant);--f7-input-outline-border-color:var(--f7-md-outline);--f7-input-text-color:var(--f7-md-on-surface);--f7-label-text-color:var(--f7-md-on-surface-variant)}input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],select,textarea{-webkit-appearance:none;appearance:none;background:none;border:none;border-radius:0;box-shadow:none;box-sizing:border-box;color:inherit;display:block;font-family:inherit;font-size:inherit;margin:0;outline:0;padding:0;resize:none}input[type=date]:-internal-autofill-selected,input[type=datetime-local]:-internal-autofill-selected,input[type=email]:-internal-autofill-selected,input[type=month]:-internal-autofill-selected,input[type=number]:-internal-autofill-selected,input[type=password]:-internal-autofill-selected,input[type=search]:-internal-autofill-selected,input[type=tel]:-internal-autofill-selected,input[type=text]:-internal-autofill-selected,input[type=time]:-internal-autofill-selected,input[type=url]:-internal-autofill-selected,select:-internal-autofill-selected,textarea:-internal-autofill-selected{background-color:initial!important;transition:background-color 5000s ease-in-out 0s!important}input[type=date]:-webkit-autofill,input[type=datetime-local]:-webkit-autofill,input[type=email]:-webkit-autofill,input[type=month]:-webkit-autofill,input[type=number]:-webkit-autofill,input[type=password]:-webkit-autofill,input[type=search]:-webkit-autofill,input[type=tel]:-webkit-autofill,input[type=text]:-webkit-autofill,input[type=time]:-webkit-autofill,input[type=url]:-webkit-autofill,select:-webkit-autofill,textarea:-webkit-autofill{background-color:initial!important;-webkit-transition:background-color 5000s ease-in-out 0s!important;transition:background-color 5000s ease-in-out 0s!important}input[type=date]:-webkit-autofill-and-obscured,input[type=date]:autofill,input[type=datetime-local]:-webkit-autofill-and-obscured,input[type=datetime-local]:autofill,input[type=email]:-webkit-autofill-and-obscured,input[type=email]:autofill,input[type=month]:-webkit-autofill-and-obscured,input[type=month]:autofill,input[type=number]:-webkit-autofill-and-obscured,input[type=number]:autofill,input[type=password]:-webkit-autofill-and-obscured,input[type=password]:autofill,input[type=search]:-webkit-autofill-and-obscured,input[type=search]:autofill,input[type=tel]:-webkit-autofill-and-obscured,input[type=tel]:autofill,input[type=text]:-webkit-autofill-and-obscured,input[type=text]:autofill,input[type=time]:-webkit-autofill-and-obscured,input[type=time]:autofill,input[type=url]:-webkit-autofill-and-obscured,input[type=url]:autofill,select:-webkit-autofill-and-obscured,select:autofill,textarea:-webkit-autofill-and-obscured,textarea:autofill{background-color:initial!important;-webkit-transition:background-color 5000s ease-in-out 0s!important;transition:background-color 5000s ease-in-out 0s!important}.textarea-resizable-shadow{left:-1000px;opacity:0;pointer-events:none;position:absolute;top:-1000px;visibility:hidden;z-index:-1000}.list input[type=date],.list input[type=datetime-local],.list input[type=email],.list input[type=month],.list input[type=number],.list input[type=password],.list input[type=search],.list input[type=tel],.list input[type=text],.list input[type=time],.list input[type=url],.list select{background-color:var(--f7-input-bg-color,transparent);color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);height:var(--f7-input-height);padding-left:var(--f7-input-padding-left);padding-right:var(--f7-input-padding-right);width:100%}.list input[type=date]::placeholder,.list input[type=datetime-local]::placeholder,.list input[type=email]::placeholder,.list input[type=month]::placeholder,.list input[type=number]::placeholder,.list input[type=password]::placeholder,.list input[type=search]::placeholder,.list input[type=tel]::placeholder,.list input[type=text]::placeholder,.list input[type=time]::placeholder,.list input[type=url]::placeholder,.list select::placeholder{color:var(--f7-input-placeholder-color)}.list textarea{background-color:var(--f7-input-bg-color,transparent);color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);height:var(--f7-textarea-height);line-height:1.4;padding:var(--f7-textarea-padding-vertical) var(--f7-input-padding-right) var(--f7-textarea-padding-vertical) var(--f7-input-padding-left);resize:none;width:100%}.list textarea::placeholder{color:var(--f7-input-placeholder-color)}.list textarea.resizable{height:calc(var(--f7-input-height) + var(--f7-textarea-padding-vertical)*2)}.list input[type=date],.list input[type=datetime-local],.list input[type=month],.list input[type=time]{line-height:var(--f7-input-height)}.list input[type=date],.list input[type=datetime-local],.list input[type=month]{flex-direction:row-reverse;text-align:right;width:auto}.list .item-floating-label,.list .item-label{color:var(--f7-label-text-color);flex-shrink:0;font-size:var(--f7-label-font-size);font-weight:var(--f7-label-font-weight);line-height:var(--f7-label-height);transition-duration:.2s;transition-property:transform,color;vertical-align:top;width:auto}.list .item-floating-label{color:var(--f7-input-placeholder-color);max-width:calc(100%/var(--f7-floating-label-scale));pointer-events:none;right:var(--f7-input-padding-right);transform-origin:right center}.list .item-floating-label~.item-input-wrap input::placeholder,.list .item-floating-label~.item-input-wrap textarea::placeholder{opacity:0;transition-duration:.1s}.list .item-floating-label~.item-input-wrap input.input-focused::placeholder,.list .item-floating-label~.item-input-wrap textarea.input-focused::placeholder{opacity:1;transition-duration:.3s}.list .item-input-with-value .item-floating-label{color:var(--f7-label-text-color)}.list .item-input-focused .item-floating-label,.list .item-input-with-value .item-floating-label{transform:scale(1) translateY(0)!important}.list .item-input-wrap{flex-shrink:1;position:relative;width:100%}.input,.item-input{position:relative}.item-input .item-inner{align-items:flex-start;display:flex;flex-direction:column;justify-content:center}.input-error-message,.item-input-error-message{box-sizing:border-box;color:var(--f7-input-error-text-color);display:none;font-size:var(--f7-input-error-font-size);font-weight:var(--f7-input-error-font-weight);line-height:var(--f7-input-error-line-height)}.input-info,.item-input-info{color:var(--f7-input-info-text-color);font-size:var(--f7-input-info-font-size);line-height:var(--f7-input-info-line-height)}.input-invalid .input-error-message,.input-invalid .item-input-error-message,.item-input-invalid .input-error-message,.item-input-invalid .item-input-error-message{display:block}.input-invalid .input-info,.input-invalid .item-input-info,.item-input-invalid .input-info,.item-input-invalid .item-input-info{display:none}.input{position:relative}.input input,.input select,.input textarea{width:100%}.input-clear-button{background:none;border:none;color:var(--f7-input-clear-button-color);cursor:pointer;height:var(--f7-input-clear-button-size);left:0;margin:0;margin-top:calc(var(--f7-input-clear-button-size)*-1/2);opacity:0;outline:0;padding:0;pointer-events:none;position:absolute;top:50%;transition-duration:.1s;visibility:hidden;width:var(--f7-input-clear-button-size);z-index:1}.input-clear-button:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.input-clear-button:before{content:"";left:50%;position:absolute;top:50%}.item-input-wrap .input-clear-button{top:calc(var(--f7-input-height)/2)}.input-clear-button.active-state{opacity:.75!important}.input-with-value .input-clear-button,.input-with-value~.input-clear-button,.item-input-with-value .input-clear-button{opacity:1;pointer-events:auto;visibility:visible}.input-dropdown,.input-dropdown-wrap{position:relative}.input-dropdown-wrap:before,.input-dropdown:before{border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #727272;content:"";height:0;left:6px;margin-top:-2px;pointer-events:none;position:absolute;top:50%;width:0}.input-dropdown input,.input-dropdown select,.input-dropdown textarea,.input-dropdown-wrap input,.input-dropdown-wrap select,.input-dropdown-wrap textarea{padding-left:calc(20px + var(--f7-input-padding-left))}.input-outline:after,.item-input-outline .item-content:after,.item-input-outline.item-content:after{border:1px solid var(--f7-input-outline-border-color);border-radius:var(--f7-input-outline-border-radius);bottom:8px;box-sizing:border-box;content:"";left:0;pointer-events:none;position:absolute;right:0;top:8px;transition-duration:.2s}.input-outline .item-floating-label,.input-outline .item-label,.item-input-outline .item-content .item-floating-label,.item-input-outline .item-content .item-label,.item-input-outline.item-content .item-floating-label,.item-input-outline.item-content .item-label{background:var(--f7-page-bg-color);padding:4px;pointer-events:none;z-index:1}.input-outline.input-focused:after,.input-outline.item-input-focused:after,.item-input-outline .item-content.input-focused:after,.item-input-outline .item-content.item-input-focused:after,.item-input-outline.item-content.input-focused:after,.item-input-outline.item-content.item-input-focused:after{border-color:var(--f7-input-outline-invalid-border-color,var(--f7-theme-color));border-width:2px}.input-outline.input-invalid:after,.input-outline.item-input-invalid:after,.item-input-outline .item-content.input-invalid:after,.item-input-outline .item-content.item-input-invalid:after,.item-input-outline.item-content.input-invalid:after,.item-input-outline.item-content.item-input-invalid:after{border-color:var(--f7-input-outline-invalid-border-color,var(--f7-input-error-text-color));border-width:2px}.block-strong .item-input-outline .item-floating-label,.block-strong .item-input-outline .item-label,.ios .block-strong-ios .item-input-outline .item-floating-label,.ios .block-strong-ios .item-input-outline .item-label,.md .block-strong-md .item-input-outline .item-floating-label,.md .block-strong-md .item-input-outline .item-label{background:var(--f7-block-strong-bg-color)!important}.ios .list-strong-ios .item-input-outline .item-floating-label,.ios .list-strong-ios .item-input-outline .item-label,.list-strong .item-input-outline .item-floating-label,.list-strong .item-input-outline .item-label,.md .list-strong-md .item-input-outline .item-floating-label,.md .list-strong-md .item-input-outline .item-label{background:var(--f7-list-strong-bg-color)!important}.dark option{background-color:var(--f7-page-bg-color)}.ios .item-floating-label+.item-input-wrap,.ios .item-label+.item-input-wrap{margin-top:0}.ios .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height) + 25%))}.ios .item-input-focused .item-floating-label{color:var(--f7-label-text-color)}.ios .item-input .item-media{align-self:flex-start}.ios .item-input-wrap{margin-bottom:calc(var(--f7-list-item-padding-vertical)*-1);margin-top:calc(var(--f7-list-item-padding-vertical)*-1)}.ios .item-input:not(.item-input-outline) .item-content,.ios .item-input:not(.item-input-outline).item-content{background:var(--f7-input-item-bg-color)}.ios .input-error-message,.ios .input-info,.ios .item-input-error-message,.ios .item-input-info{margin-bottom:6px;margin-top:-8px;position:relative}.ios .item-input-focused .item-floating-label,.ios .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-label-text-color))}.ios .item-input-focused .item-inner:after{background:var(--f7-input-focused-border-color,var(--f7-list-item-border-color))}.ios .item-input-invalid .item-floating-label,.ios .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-label-text-color))}.ios .item-input-invalid .item-inner:after{background:var(--f7-input-invalid-border-color,var(--f7-list-item-border-color))}.ios .input-invalid input,.ios .input-invalid select,.ios .input-invalid textarea,.ios .item-input-invalid input,.ios .item-input-invalid select,.ios .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-error-text-color))}.ios .input-clear-button:after{content:"delete_round_ios";font-size:calc(var(--f7-input-clear-button-size)/1.4);line-height:1.4}.ios .input-clear-button:before{height:44px;margin-left:-22px;margin-top:-22px;width:44px}.ios .item-input-outline .item-content,.ios .item-input-outline.item-content{margin-left:16px;margin-right:16px;padding-bottom:8px;padding-top:8px}.ios li.item-input-outline:first-child,.ios li:first-child>.item-input-outline{padding-top:16px}.ios li.item-input-outline:first-child:after,.ios li:first-child>.item-input-outline:after{top:16px}.ios li.item-input-outline:last-child,.ios li:last-child>.item-input-outline{padding-bottom:16px}.ios li.item-input-outline:last-child:after,.ios li:last-child>.item-input-outline:after{bottom:16px}.ios .input-outline .item-inner,.ios .item-input-outline .item-content .item-inner,.ios .item-input-outline.item-content .item-inner{display:block;padding-bottom:0;padding-top:0}.ios .input-outline .item-input-wrap,.ios .item-input-outline .item-content .item-input-wrap,.ios .item-input-outline.item-content .item-input-wrap{margin-top:2px}.ios .input-outline .item-title+.item-input-wrap,.ios .item-input-outline .item-content .item-title+.item-input-wrap,.ios .item-input-outline.item-content .item-title+.item-input-wrap{margin-top:-22px}.ios .input-outline .item-floating-label,.ios .input-outline .item-label,.ios .item-input-outline .item-content .item-floating-label,.ios .item-input-outline .item-content .item-label,.ios .item-input-outline.item-content .item-floating-label,.ios .item-input-outline.item-content .item-label{display:inline-flex;margin:-8px -4px -4px;top:-4px}.ios .input-outline .item-floating-label,.ios .item-input-outline .item-content .item-floating-label,.ios .item-input-outline.item-content .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height)))}.md .item-input-wrap{min-height:var(--f7-input-height)}.md .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc((var(--f7-input-height)/2)/var(--f7-floating-label-scale)))}.md .item-input .item-inner:after{display:none!important}.md .item-input .item-content,.md .item-input.item-content{margin-left:16px;margin-right:16px;padding-bottom:8px;padding-top:8px}.md .input:after{background-color:var(--f7-input-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform:scaleY(1)!important;transform-origin:50% 100%;transition-duration:.2s;width:100%;z-index:15}.md .input.input-focused:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color));transform:scaleY(2)!important}.md .input.input-invalid:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color));transform:scaleY(2)!important}.md .item-input:not(.item-input-outline) .item-content:after,.md .item-input:not(.item-input-outline).item-content:after{background-color:var(--f7-input-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.md .item-input:not(.item-input-outline) .item-content:before,.md .item-input:not(.item-input-outline).item-content:before{background:var(--f7-input-item-bg-color);border-radius:var(--f7-input-item-border-radius);bottom:8px;content:"";left:0;pointer-events:none;position:absolute;right:0;top:8px}.md .item-input:not(.item-input-outline) .item-content:after,.md .item-input:not(.item-input-outline).item-content:after{bottom:8px;transform:scaleY(1)!important;transition-duration:.2s}.md .item-input:not(.item-input-outline) .item-content.item-input-focused:after,.md .item-input:not(.item-input-outline).item-content.item-input-focused:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color));transform:scaleY(2)!important}.md .item-input:not(.item-input-outline) .item-content.input-invalid:after,.md .item-input:not(.item-input-outline) .item-content.item-input-invalid:after,.md .item-input:not(.item-input-outline).item-content.input-invalid:after,.md .item-input:not(.item-input-outline).item-content.item-input-invalid:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color));transform:scaleY(2)!important}.md .input-outline .item-inner,.md .item-input-outline .item-content .item-inner,.md .item-input-outline.item-content .item-inner{padding-bottom:16px;padding-top:16px}.md .input-outline .item-floating-label,.md .input-outline .item-label,.md .item-input-outline .item-content .item-floating-label,.md .item-input-outline .item-content .item-label,.md .item-input-outline.item-content .item-floating-label,.md .item-input-outline.item-content .item-label{--label-height:calc(var(--f7-label-height) + 8px);margin:calc(-16px - var(--label-height)/2) -4px 4px}.md .input-outline .item-floating-label,.md .item-input-outline .item-content .item-floating-label,.md .item-input-outline.item-content .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-input-height)/2 + 8px))}.md .input-with-error-message,.md .input-with-info,.md .item-input-with-error-message,.md .item-input-with-info{padding-bottom:24px!important}.md .input-error-message,.md .input-info,.md .item-input-error-message,.md .item-input-info{overflow:hidden;position:absolute;right:0;text-overflow:ellipsis;top:100%;white-space:nowrap;width:100%}.md .item-input-focused .item-floating-label,.md .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-theme-color))}.md .input-focused:not(.input-outline):after,.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color))}.md .input-focused:not(.input-outline):after,.md .input-invalid:not(.input-outline):after,.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after,.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after{transform:scaleY(2)!important}.md .input-invalid:not(.input-outline):after,.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color))}.md .item-input-invalid .item-floating-label,.md .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-input-error-text-color))}.md .input-invalid input,.md .input-invalid select,.md .input-invalid textarea,.md .item-input-invalid input,.md .item-input-invalid select,.md .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-text-color))}.md .input-clear-button:after{content:"delete_round_md";font-size:var(--f7-input-clear-button-size);line-height:1}.md .input-clear-button:before{height:48px;margin-left:-24px;margin-top:-24px;width:48px}:root{--f7-checkbox-icon-color:#fff;--f7-checkbox-extra-margin:0px}:root .dark,:root.dark{--f7-checkbox-inactive-color:rgba(255,255,255,0.3);--f7-checkbox-icon-color:#000}.ios{--f7-checkbox-size:22px;--f7-checkbox-border-radius:50%;--f7-checkbox-border-width:1px;--f7-checkbox-inactive-color:#c7c7cc}.md{--f7-checkbox-size:18px;--f7-checkbox-border-radius:2px;--f7-checkbox-border-width:2px;--f7-checkbox-inactive-color:#6d6d6d}.checkbox{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.5);background-color:initial;display:inline-block;position:relative;vertical-align:middle;z-index:1}.checkbox i,.icon-checkbox{border:var(--f7-checkbox-border-width) solid var(--f7-checkbox-inactive-color);border-radius:var(--f7-checkbox-border-radius);box-sizing:border-box;display:block;flex-shrink:0;height:var(--f7-checkbox-size);position:relative;width:var(--f7-checkbox-size)}.checkbox i:after,.icon-checkbox:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-checkbox-icon-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;height:var(--f7-checkbox-size);letter-spacing:normal;line-height:1;line-height:var(--f7-checkbox-size);opacity:0;position:relative;right:calc(0px - var(--f7-checkbox-border-width));text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:calc(0px - var(--f7-checkbox-border-width));transition-property:opacity;white-space:nowrap;width:100%;width:var(--f7-checkbox-size)}.checkbox i.color-white,.color-white .checkbox i,.color-white .icon-checkbox,.icon-checkbox.color-white{--f7-theme-color:#fff;--f7-checkbox-icon-color:#000}.checkbox i.color-black,.color-black .checkbox i,.color-black .icon-checkbox,.icon-checkbox.color-black{--f7-theme-color:#000;--f7-checkbox-icon-color:#fff}.checkbox input[type=checkbox]:not(:checked)~i:after,label.item-checkbox input[type=checkbox]:not(:checked)~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:not(:checked)~.icon-checkbox:after{font-size:0}.checkbox input[type=checkbox]:checked~i,.checkbox input[type=checkbox]:indeterminate~i,label.item-checkbox input[type=checkbox]:checked~* .icon-checkbox,label.item-checkbox input[type=checkbox]:checked~.icon-checkbox,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox{background-color:var(--f7-checkbox-active-color,var(--f7-theme-color));border-color:var(--f7-checkbox-active-color,var(--f7-theme-color))}.checkbox input[type=checkbox]:checked~i:after,.checkbox input[type=checkbox]:indeterminate~i:after,label.item-checkbox input[type=checkbox]:checked~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:checked~.icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{opacity:1}.checkbox input[type=checkbox]:indeterminate~i:after,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{background:var(--f7-checkbox-icon-color);border-radius:2px;content:"";font-size:0;height:2px;margin-top:-1px;position:absolute;right:15%;top:50%;transition:0ms;width:70%}.checkbox,label.item-checkbox{cursor:pointer}.checkbox input[type=checkbox],.checkbox input[type=radio],label.item-checkbox input[type=checkbox],label.item-checkbox input[type=radio]{display:none}label.item-checkbox{transition-duration:.3s}label.item-checkbox .item-content .item-media,label.item-checkbox.item-content .item-media{align-self:center}label.item-checkbox>.icon-checkbox{margin-left:calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin))}label.item-checkbox.active-state{background-color:var(--f7-list-link-pressed-bg-color)}label.item-checkbox.active-state:after{background-color:initial}.disabled label.item-checkbox,label.item-checkbox.disabled{opacity:.55;opacity:.55!important;pointer-events:none;pointer-events:none!important}label.item-checkbox.item-checkbox-icon-end .item-inner{padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right) + var(--f7-checkbox-size) + 16px)}label.item-checkbox.item-checkbox-icon-end input[type=checkbox]~.icon-checkbox{left:calc(var(--f7-safe-area-left) + 16px);margin-left:0;position:absolute}.ios .checkbox i:after,.ios .icon-checkbox:after{content:"checkbox_ios";font-size:21px}.ios label.item-checkbox.active-state{transition-duration:0ms}.ios .checkbox input[type=checkbox]:indeterminate~i:after,.ios label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,.ios label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{height:2px;margin-top:-1px}.md .checkbox i,.md .icon-checkbox{transition-duration:.2s}.md .checkbox i:after,.md .icon-checkbox:after{content:"checkbox_md";font-size:15px;transition-duration:.2s}.md label.item-checkbox{overflow:hidden;position:relative;z-index:0}:root{--f7-radio-border-radius:50%;--f7-radio-extra-margin:0px}:root .dark,:root.dark{--f7-radio-inactive-color:rgba(255,255,255,0.3)}.ios{--f7-radio-size:22px;--f7-radio-border-width:1px;--f7-radio-inactive-color:#c7c7cc}.md{--f7-radio-size:20px;--f7-radio-border-width:2px;--f7-radio-inactive-color:#6d6d6d}.radio{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.5);display:inline-block;position:relative;vertical-align:middle;z-index:1}.icon-radio{border-radius:var(--f7-radio-border-radius);box-sizing:border-box;display:block;flex-shrink:0;height:var(--f7-radio-size);position:relative;width:var(--f7-radio-size)}.color-white .icon-radio,.color-white .radio,.icon-radio.color-white,.radio.color-white{--f7-theme-color:#fff}.color-black .icon-radio,.color-black .radio,.icon-radio.color-black,.radio.color-black{--f7-theme-color:#000}.md .icon-radio,.radio .icon-radio{border:var(--f7-radio-border-width) solid var(--f7-radio-inactive-color)}.radio,label.item-radio{cursor:pointer}.radio input[type=checkbox],.radio input[type=radio],label.item-radio input[type=checkbox],label.item-radio input[type=radio]{display:none}label.item-radio{transition-duration:.3s}label.item-radio .item-content .item-media,label.item-radio.item-content .item-media{align-self:center}label.item-radio.active-state{background-color:var(--f7-list-link-pressed-bg-color)}label.item-radio.active-state:after{background-color:initial}.disabled label.item-radio,label.item-radio.disabled{opacity:.55;opacity:.55!important;pointer-events:none;pointer-events:none!important}.ios .icon-radio:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-radio-active-color,var(--f7-theme-color));content:"radio_ios";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;height:calc(var(--f7-radio-size) - var(--f7-radio-border-width)*2);letter-spacing:normal;line-height:1;line-height:calc(var(--f7-radio-size) - var(--f7-radio-border-width)*2 + 1px);opacity:0;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%;width:calc(var(--f7-radio-size) - var(--f7-radio-border-width)*2)}.ios .radio input[type=radio]:checked~.icon-radio:after,.ios label.item-radio input[type=radio]:checked~* .icon-radio:after,.ios label.item-radio input[type=radio]:checked~.icon-radio:after{opacity:1}.ios .radio input[type=radio]:checked~.icon-radio{border-color:var(--f7-radio-active-color,var(--f7-theme-color))}.ios label.item-radio:not(.item-radio-icon-start) input[type=radio]~.icon-radio{left:calc(var(--f7-safe-area-left) + 10px);margin-top:-11px;position:absolute;top:50%}.ios label.item-radio:not(.item-radio-icon-start) .item-inner{padding-left:calc(var(--f7-safe-area-left) + 36px)}.ios label.item-radio-icon-start>.icon-radio{margin-left:calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin))}.ios label.item-radio.active-state{transition-duration:0ms}.md .icon-radio,.md .icon-radio:after{transition-duration:.2s}.md .icon-radio:after{background-color:var(--f7-radio-active-color,var(--f7-theme-color));border-radius:50%;content:"";height:10px;left:50%;margin-left:-5px;margin-top:-5px;position:absolute;top:50%;transform:scale(0);width:10px}.md .radio input[type=radio]:checked~.icon-radio,.md label.item-radio input[type=radio]:checked~* .icon-radio,.md label.item-radio input[type=radio]:checked~.icon-radio{border-color:var(--f7-radio-active-color,var(--f7-theme-color))}.md .radio input[type=radio]:checked~.icon-radio:after,.md label.item-radio input[type=radio]:checked~* .icon-radio:after,.md label.item-radio input[type=radio]:checked~.icon-radio:after{background-color:var(--f7-radio-active-color,var(--f7-theme-color));transform:scale(1)}.md label.item-radio{overflow:hidden;position:relative;z-index:0}.md label.item-radio:not(.item-radio-icon-end)>.icon-radio{margin-left:calc(var(--f7-list-item-media-margin) + var(--f7-radio-extra-margin))}.md label.item-radio-icon-end input[type=radio]~.icon-radio{left:calc(var(--f7-safe-area-left) + 16px);margin-top:-10px;position:absolute;top:50%}.md label.item-radio-icon-end .item-inner{padding-left:calc(var(--f7-safe-area-left) + 52px)}.ios{--f7-toggle-width:52px;--f7-toggle-height:32px;--f7-toggle-inactive-knob-bg-color:#fff;--f7-toggle-active-knob-bg-color:#fff;--f7-toggle-inactive-border-color:#e5e5e5;--f7-toggle-inactive-bg-color:#fff}.ios .dark,.ios.dark{--f7-toggle-inactive-border-color:#555;--f7-toggle-inactive-bg-color:#555}.md{--f7-toggle-width:52px;--f7-toggle-height:32px}.md,.md .dark,.md [class*=color-]{--f7-toggle-inactive-bg-color:var(--f7-md-surface-variant);--f7-toggle-active-bg-color:var(--f7-theme-color);--f7-toggle-inactive-knob-bg-color:var(--f7-md-outline);--f7-toggle-active-knob-bg-color:var(--f7-md-on-primary);--f7-toggle-inactive-border-color:var(--f7-md-outline);--f7-toggle-active-border-color:var(--f7-theme-color)}.toggle,.toggle-icon{border-radius:var(--f7-toggle-height);height:var(--f7-toggle-height);width:var(--f7-toggle-width)}.toggle{align-self:center;box-sizing:border-box;display:inline-block;position:relative;-webkit-user-select:none;user-select:none;vertical-align:middle}.toggle input[type=checkbox]{display:none}.toggle input[disabled]~.toggle-icon{pointer-events:none}.toggle-icon{-webkit-appearance:none;appearance:none;border:none;box-sizing:border-box;cursor:pointer;display:block;margin:0;padding:0;position:relative;transition:.3s;z-index:0}.toggle-icon:after,.toggle-icon:before{content:""}.toggle-icon:after{position:absolute;transform:translateX(0);transition-duration:.3s;z-index:2}.ios .toggle{background:var(--f7-toggle-inactive-border-color)}.ios .toggle input[type=checkbox]:checked+.toggle-icon{background:var(--f7-toggle-active-color,var(--f7-theme-color))}.ios .toggle input[type=checkbox]:checked+.toggle-icon:before{background:var(--f7-toggle-active-bg-color,var(--f7-theme-color));transform:scale(0)}.ios .toggle input[type=checkbox]:checked+.toggle-icon:after{background:var(--f7-toggle-active-knob-bg-color);transform:translateX(calc((var(--f7-toggle-width) - var(--f7-toggle-height))*-1))}.ios .toggle-icon{background:var(--f7-toggle-border-color)}.ios .toggle-icon:before{background:var(--f7-toggle-inactive-bg-color);border-radius:var(--f7-toggle-height);box-sizing:border-box;position:absolute;transform:scale(1);transition-duration:.3s;width:calc(var(--f7-toggle-width) - 4px);z-index:1}.ios .toggle-icon:after,.ios .toggle-icon:before{height:calc(var(--f7-toggle-height) - 4px);right:2px;top:2px}.ios .toggle-icon:after{background:var(--f7-toggle-inactive-knob-bg-color);border-radius:calc(var(--f7-toggle-height) - 4px);box-shadow:0 2px 4px rgba(0,0,0,.3);width:calc(var(--f7-toggle-height) - 4px)}.ios .toggle-active-state input[type=checkbox]:not(:checked)+.toggle-icon:before{transform:scale(0)}.ios .toggle-active-state input[type=checkbox]+.toggle-icon:after{width:calc(var(--f7-toggle-height) + 4px)}.ios .toggle-active-state input[type=checkbox]:checked+.toggle-icon:after{transform:translateX(calc(var(--f7-toggle-width)*-1 - var(--f7-toggle-height)*-1 - -8px))}.md .toggle input[type=checkbox]:checked+.toggle-icon{background:var(--f7-toggle-active-bg-color);border-color:var(--f7-toggle-active-border-color)}.md .toggle input[type=checkbox]:checked+.toggle-icon:after{background:var(--f7-toggle-active-knob-bg-color);transform:translateX(calc((var(--f7-toggle-width) - var(--f7-toggle-height))*-1)) scale(1)}.md .toggle.active-state input[type=checkbox]:checked+.toggle-icon:after{transform:translateX(calc((var(--f7-toggle-width) - var(--f7-toggle-height))*-1)) scale(1.1)}.md .toggle-icon{background:var(--f7-toggle-inactive-bg-color);border:2px solid var(--f7-toggle-inactive-border-color)}.md .toggle-icon:after{background:var(--f7-toggle-inactive-knob-bg-color);border-radius:var(--f7-toggle-height);height:calc(var(--f7-toggle-height) - 8px);right:2px;top:2px;transform:scale(.666);width:calc(var(--f7-toggle-height) - 8px)}.md .toggle-icon.active-state:after{transform:scale(1.1)}:root{--f7-range-scale-step-height:5px;--f7-range-scale-substep-width:1px;--f7-range-scale-substep-height:4px;--f7-range-bar-bg-color:rgba(0,0,0,0.2)}:root .dark,:root.dark{--f7-range-bar-bg-color:rgba(255,255,255,0.2)}.ios{--f7-range-size:28px;--f7-range-bar-size:4px;--f7-range-bar-border-radius:2px;--f7-range-knob-size:28px;--f7-range-knob-color:#fff;--f7-range-knob-box-shadow:0 2px 4px rgba(0,0,0,0.3);--f7-range-label-size:24px;--f7-range-label-text-color:#000;--f7-range-label-bg-color:#fff;--f7-range-label-font-size:12px;--f7-range-label-font-weight:500;--f7-range-label-border-radius:5px;--f7-range-label-padding:0px 2px;--f7-range-scale-text-color:#666;--f7-range-scale-step-width:1px;--f7-range-scale-font-size:12px;--f7-range-scale-font-weight:400;--f7-range-scale-label-offset:4px}.md{--f7-range-size:20px;--f7-range-bar-size:2px;--f7-range-bar-border-radius:0px;--f7-range-knob-size:12px;--f7-range-knob-box-shadow:none;--f7-range-label-size:26px;--f7-range-label-font-weight:normal;--f7-range-label-font-size:10px;--f7-range-label-border-radius:50%;--f7-range-label-padding:0px;--f7-range-scale-step-width:2px;--f7-range-scale-font-size:12px;--f7-range-scale-font-weight:400;--f7-range-scale-label-offset:4px}.md,.md .dark,.md [class*=color-]{--f7-range-knob-color:var(--f7-theme-color);--f7-range-label-text-color:var(--f7-md-on-primary);--f7-range-label-bg-color:var(--f7-theme-color);--f7-range-scale-text-color:var(--f7-md-on-surface-variant)}.range-slider{align-self:center;cursor:pointer;display:block;position:relative;-webkit-user-select:none;user-select:none}.range-slider input[type=range]{display:none}.range-slider.range-slider-horizontal{height:var(--f7-range-size);touch-action:pan-y;width:100%}.range-slider.range-slider-vertical{height:100%;touch-action:pan-x;width:var(--f7-range-size)}.range-bar{background:var(--f7-range-bar-bg-color);border-radius:var(--f7-range-bar-border-radius);overflow:hidden;position:absolute}.range-slider-vertical .range-bar{height:100%;left:50%;margin-left:calc(var(--f7-range-bar-size)*-1/2);top:0;width:var(--f7-range-bar-size)}.range-slider-horizontal .range-bar{height:var(--f7-range-bar-size);left:0;margin-top:calc(var(--f7-range-bar-size)*-1/2);top:50%;width:100%}.range-bar-active{background:var(--f7-range-bar-active-bg-color,var(--f7-theme-color));position:absolute}.range-slider-horizontal .range-bar-active{height:100%;right:0;top:0}.range-slider-vertical .range-bar-active{bottom:0;left:0;width:100%}.range-slider-vertical-reversed .range-bar-active{bottom:auto;top:0}.range-knob-wrap{height:var(--f7-range-knob-size);position:absolute;width:var(--f7-range-knob-size);z-index:20}.range-slider-horizontal .range-knob-wrap{margin-right:calc(var(--f7-range-knob-size)*-1/2);margin-top:calc(var(--f7-range-knob-size)*-1/2);right:0;top:50%}.range-slider-vertical .range-knob-wrap{bottom:0;left:50%;margin-bottom:calc(var(--f7-range-knob-size)*-1/2);margin-left:calc(var(--f7-range-knob-size)*-1/2)}.range-slider-vertical-reversed .range-knob-wrap{bottom:auto;margin-bottom:0;margin-top:calc(var(--f7-range-knob-size)*-1/2);top:0}.range-knob{background:var(--f7-range-knob-color,var(--f7-range-knob-bg-color,var(--f7-theme-color)));border-radius:50%;box-shadow:var(--f7-range-knob-box-shadow);box-sizing:border-box;height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}.range-knob:after{content:"";height:44px;left:50%;margin-left:-22px;margin-top:-22px;position:absolute;top:50%;width:44px}.range-knob-label{background-color:var(--f7-range-label-bg-color,var(--f7-theme-color));border-radius:var(--f7-range-label-border-radius);bottom:100%;box-sizing:border-box;color:var(--f7-range-label-text-color);font-size:var(--f7-range-label-font-size);font-weight:var(--f7-range-label-font-weight);height:var(--f7-range-label-size);left:50%;line-height:var(--f7-range-label-size);min-width:var(--f7-range-label-size);padding:var(--f7-range-label-padding);position:absolute;text-align:center;transform:translateY(100%) scale(0);transition-duration:.12s;transition-property:transform}.range-knob-active-state .range-knob-label{transform:translateY(0) scale(1)}.range-scale{position:absolute}.range-slider-horizontal .range-scale{left:0;margin-top:calc(var(--f7-range-bar-size)/2);top:50%;width:100%}.range-slider-vertical .range-scale{height:100%;margin-right:calc(var(--f7-range-bar-size)/2);right:50%;top:0}.range-scale-step{box-sizing:border-box;color:var(--f7-range-scale-text-color,var(--f7-range-bar-bg-color));display:flex;font-size:var(--f7-range-scale-font-size);font-weight:var(--f7-range-scale-font-weight);line-height:1;position:absolute}.range-scale-step:before{background:var(--f7-range-scale-step-bg-color,var(--f7-range-bar-bg-color));content:"";position:absolute}.range-slider-horizontal .range-scale-step{align-items:flex-start;height:var(--f7-range-scale-step-height);justify-content:center;margin-right:calc(var(--f7-range-scale-step-width)*-1/2);padding-top:calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));top:0;width:var(--f7-range-scale-step-width)}.range-slider-horizontal .range-scale-step:before{height:var(--f7-range-scale-step-height);left:0;top:0;width:100%}.range-slider-horizontal .range-scale-step:first-child{margin-right:0}.range-slider-horizontal .range-scale-step:last-child{margin-right:calc(var(--f7-range-scale-step-width)*-1)}.range-slider-vertical .range-scale-step{align-items:center;height:var(--f7-range-scale-step-width);justify-content:flex-end;line-height:1;margin-bottom:calc(var(--f7-range-scale-step-width)*-1/2);padding-right:calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));right:0;width:var(--f7-range-scale-step-height)}.range-slider-vertical .range-scale-step:first-child{margin-bottom:0}.range-slider-vertical .range-scale-step:last-child{margin-bottom:calc(var(--f7-range-scale-step-width)*-1)}.range-slider-vertical .range-scale-step:before{height:100%;right:0;top:0;width:var(--f7-range-scale-step-height)}.range-scale-substep{--f7-range-scale-step-bg-color:var(--f7-range-scale-substep-bg-color,var(--f7-range-bar-bg-color));--f7-range-scale-step-width:var(--f7-range-scale-substep-width);--f7-range-scale-step-height:var(--f7-range-scale-substep-height)}.ios .range-knob-label{margin-bottom:6px;transform:translateX(-50%) translateY(100%) scale(0)}.ios .range-knob-active-state .range-knob-label{transform:translateX(-50%) translateY(0) scale(1)}.md .range-knob{transition-duration:.2s;transition-property:transform,background-color}.md .range-knob-active-state .range-knob{transform:scale(1.5)}.md .range-slider-min:not(.range-slider-dual) .range-knob{background:#fff!important;border:2px solid var(--f7-range-bar-bg-color)}.md .range-knob-label{margin-bottom:8px}.md .range-knob-label,.md .range-knob-label:before{margin-left:calc(var(--f7-range-label-size)*-1/2);width:var(--f7-range-label-size)}.md .range-knob-label:before{background:var(--f7-range-label-bg-color,var(--f7-theme-color));border-radius:50% 50% 50% 0;content:"";height:var(--f7-range-label-size);left:50%;position:absolute;top:0;transform:rotate(-45deg);z-index:-1}.md .range-knob-active-state .range-knob-label{transform:translateY(0) scale(1)}.md .range-slider-label .range-knob-active-state .range-knob{transform:scale(0)}:root{--f7-stepper-raised-box-shadow:0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);--f7-stepper-value-font-weight:500}.ios{--f7-stepper-height:28px;--f7-stepper-border-radius:5px;--f7-stepper-fill-button-text-color:#fff;--f7-stepper-large-height:44px;--f7-stepper-small-height:26px;--f7-stepper-value-font-size:17px;--f7-stepper-border-width:2px;--f7-stepper-border-color:var(--f7-theme-color);--f7-stepper-small-border-width:2px}.md{--f7-stepper-height:40px;--f7-stepper-border-radius:8px;--f7-stepper-large-height:48px;--f7-stepper-small-height:32px;--f7-stepper-value-font-size:14px;--f7-stepper-border-width:1px;--f7-stepper-small-border-width:1px;--f7-stepper-button-pressed-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-stepper-fill-button-text-color:var(--f7-md-on-primary);--f7-stepper-fill-button-pressed-bg-color:var(--f7-theme-color);--f7-stepper-border-color:var(--f7-md-outline)}.stepper{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25);align-items:stretch;border-radius:var(--f7-stepper-border-radius);display:inline-flex;flex-direction:row-reverse;height:var(--f7-stepper-height)}.stepper-button,.stepper-button-minus,.stepper-button-plus{align-content:center;align-items:center;background-color:var(--f7-stepper-button-bg-color);border:var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);border-radius:var(--f7-stepper-border-radius);box-sizing:border-box;color:var(--f7-stepper-button-text-color,var(--f7-theme-color));cursor:pointer;display:flex;flex-shrink:0;justify-content:center;line-height:calc(var(--f7-stepper-height) - var(--f7-stepper-border-width, 0px));position:relative;text-align:center;width:40px}.stepper-button-minus.active-state,.stepper-button-plus.active-state,.stepper-button.active-state{background-color:var(--f7-stepper-button-pressed-bg-color,rgba(var(--f7-theme-color-rgb),.15));color:var(--f7-stepper-button-pressed-text-color,var(--f7-stepper-button-text-color,var(--f7-theme-color)))}.stepper-button-minus:first-child,.stepper-button-plus:first-child,.stepper-button:first-child{border-radius:var(--f7-stepper-border-radius) 0 0 var(--f7-stepper-border-radius)}.stepper-button-minus:last-child,.stepper-button-plus:last-child,.stepper-button:last-child{border-radius:0 var(--f7-stepper-border-radius) var(--f7-stepper-border-radius) 0}.stepper-button .icon,.stepper-button-minus .icon,.stepper-button-plus .icon{pointer-events:none}.stepper-button+.stepper-button,.stepper-button+.stepper-button-minus,.stepper-button+.stepper-button-plus,.stepper-button-minus+.stepper-button,.stepper-button-minus+.stepper-button-minus,.stepper-button-minus+.stepper-button-plus,.stepper-button-plus+.stepper-button,.stepper-button-plus+.stepper-button-minus,.stepper-button-plus+.stepper-button-plus{border-left:none}.stepper-button-minus,.stepper-button-plus{-webkit-user-select:none;user-select:none}.stepper-button-minus:after,.stepper-button-minus:before,.stepper-button-plus:after,.stepper-button-plus:before{background-color:var(--f7-stepper-button-text-color,var(--f7-theme-color));border-radius:2px;content:"";left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.stepper-button-minus:after,.stepper-button-plus:after{height:2px;width:15px}.stepper-button-plus:before{height:15px;width:2px}.stepper-value{align-content:center;align-items:center;display:flex;justify-content:center}.stepper-input-wrap,.stepper-value{border-bottom:var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);border-top:var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);flex-shrink:1;text-align:center}.stepper .stepper-input-wrap input,.stepper-value{color:var(--f7-stepper-value-text-color,var(--f7-theme-color));font-size:var(--f7-stepper-value-font-size);font-weight:var(--f7-stepper-value-font-weight);text-align:center;width:45px}.stepper .stepper-input-wrap input{height:100%}.ios .stepper-round-ios,.md .stepper-round-md,.stepper-round{--f7-stepper-border-radius:var(--f7-stepper-height)}.ios .stepper-fill-ios,.md .stepper-fill-md,.stepper-fill{--f7-stepper-border-color:var(--f7-stepper-fill-button-bg-color,var(--f7-theme-color));--f7-stepper-button-bg-color:var(--f7-stepper-fill-button-bg-color,var(--f7-theme-color));--f7-stepper-button-text-color:var(--f7-stepper-fill-button-text-color);--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.ios .stepper-fill-ios .stepper-button+.stepper-button,.ios .stepper-fill-ios .stepper-button-minus+.stepper-button-plus,.ios .stepper-raised-ios .stepper-button+.stepper-button,.ios .stepper-raised-ios .stepper-button-minus+.stepper-button-plus,.md .stepper-fill-md .stepper-button+.stepper-button,.md .stepper-fill-md .stepper-button-minus+.stepper-button-plus,.md .stepper-raised-md .stepper-button+.stepper-button,.md .stepper-raised-md .stepper-button-minus+.stepper-button-plus,.stepper-fill .stepper-button+.stepper-button,.stepper-fill .stepper-button-minus+.stepper-button-plus,.stepper-raised .stepper-button+.stepper-button,.stepper-raised .stepper-button-minus+.stepper-button-plus{border-left:1px solid rgba(0,0,0,.1)}.ios .stepper-fill-ios .stepper-button+.stepper-button.active-state,.ios .stepper-fill-ios .stepper-button-minus+.stepper-button-plus.active-state,.md .stepper-fill-md .stepper-button+.stepper-button.active-state,.md .stepper-fill-md .stepper-button-minus+.stepper-button-plus.active-state,.stepper-fill .stepper-button+.stepper-button.active-state,.stepper-fill .stepper-button-minus+.stepper-button-plus.active-state{border-left-color:var(--f7-stepper-button-pressed-bg-color)}.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-input-wrap,.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-value,.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-input-wrap,.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-value,.stepper-raised:not(.stepper-fill) .stepper-input-wrap,.stepper-raised:not(.stepper-fill) .stepper-value{border-left:1px solid rgba(0,0,0,.1);border-right:1px solid rgba(0,0,0,.1)}.ios .stepper-large-ios,.md .stepper-large-md,.stepper-large{--f7-stepper-height:var(--f7-stepper-large-height)}.ios .stepper-small-ios,.md .stepper-small-md,.stepper-small{--f7-stepper-border-width:var(--f7-stepper-small-border-width);--f7-stepper-height:var(--f7-stepper-small-height)}.ios .stepper-fill.stepper-small,.ios .stepper-fill.stepper-small-ios{--f7-stepper-button-pressed-bg-color:transparent;--f7-stepper-button-pressed-text-color:var(--f7-theme-color)}.ios .stepper-raised-ios,.md .stepper-raised-md,.stepper-raised{--f7-stepper-border-width:0;box-shadow:var(--f7-stepper-raised-box-shadow)}.ios .stepper-button .f7-icons,.ios .stepper-button-minus .f7-icons,.ios .stepper-button-plus .f7-icons{font-size:22px}.ios .stepper-fill,.ios .stepper-fill-ios{--f7-stepper-button-pressed-bg-color:var(--f7-stepper-fill-button-pressed-bg-color,var(--f7-theme-color-tint))}.ios .stepper-small-ios.stepper-raised,.ios .stepper-small-ios.stepper-raised-ios,.ios .stepper-small.stepper-raised,.ios .stepper-small.stepper-raised-ios{--f7-stepper-border-width:0px}.ios .stepper-small .stepper-button,.ios .stepper-small .stepper-button-minus,.ios .stepper-small .stepper-button-plus,.ios .stepper-small-ios .stepper-button,.ios .stepper-small-ios .stepper-button-minus,.ios .stepper-small-ios .stepper-button-plus{transition-duration:.2s}.ios .stepper-small .stepper-button-minus.active-state:after,.ios .stepper-small .stepper-button-minus.active-state:before,.ios .stepper-small .stepper-button-plus.active-state:after,.ios .stepper-small .stepper-button-plus.active-state:before,.ios .stepper-small .stepper-button.active-state:after,.ios .stepper-small .stepper-button.active-state:before,.ios .stepper-small-ios .stepper-button-minus.active-state:after,.ios .stepper-small-ios .stepper-button-minus.active-state:before,.ios .stepper-small-ios .stepper-button-plus.active-state:after,.ios .stepper-small-ios .stepper-button-plus.active-state:before,.ios .stepper-small-ios .stepper-button.active-state:after,.ios .stepper-small-ios .stepper-button.active-state:before{background-color:var(--f7-theme-color);transition-duration:.2s}.md .stepper-button,.md .stepper-button-minus,.md .stepper-button-plus{overflow:hidden;transform:translateZ(0);transition-duration:.3s}.md .stepper-fill,.md .stepper-fill-md{--f7-stepper-button-pressed-bg-color:var(--f7-stepper-fill-button-bg-color,var(--f7-theme-color))}.smart-select select{display:none}.smart-select .item-after{display:block;max-width:70%;overflow:hidden;position:relative;text-overflow:ellipsis}.smart-select-sheet .list ul,.smart-select-sheet .page,.smart-select-sheet .sheet-modal-inner{background:var(--f7-smart-select-sheet-bg,var(--f7-list-bg-color))}.smart-select-sheet .toolbar:after{background-color:var(--f7-smart-select-sheet-toolbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.smart-select-sheet .list{margin:0}.smart-select-sheet .list ul:after,.smart-select-sheet .list ul:before{display:none!important}.smart-select-popover .popover-inner{max-height:40vh}:root{--f7-grid-gap:16px}.grid{display:grid}.grid.grid-gap{gap:var(--f7-grid-gap)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}@media (min-width:480px){.xsmall-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xsmall-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.xsmall-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xsmall-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.xsmall-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xsmall-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.xsmall-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xsmall-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.xsmall-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xsmall-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.xsmall-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xsmall-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.xsmall-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xsmall-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.xsmall-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xsmall-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.xsmall-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xsmall-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.xsmall-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xsmall-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.xsmall-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xsmall-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.xsmall-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xsmall-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.xsmall-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.xsmall-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.xsmall-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.xsmall-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.xsmall-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.xsmall-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.xsmall-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.xsmall-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.xsmall-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.xsmall-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.xsmall-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.xsmall-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.xsmall-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.xsmall-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.xsmall-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.xsmall-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:568px){.small-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.small-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.small-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.small-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.small-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.small-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.small-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.small-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.small-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.small-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.small-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.small-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.small-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.small-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.small-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.small-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.small-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.small-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.small-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.small-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.small-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.small-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.small-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.small-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.small-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.small-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.small-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.small-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.small-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.small-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.small-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.small-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.small-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.small-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.small-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.small-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.small-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.small-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.small-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.small-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:768px){.medium-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.medium-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.medium-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.medium-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.medium-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.medium-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.medium-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.medium-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.medium-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.medium-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.medium-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.medium-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.medium-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.medium-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.medium-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.medium-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.medium-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.medium-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.medium-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.medium-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.medium-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.medium-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.medium-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.medium-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.medium-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.medium-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.medium-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.medium-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.medium-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.medium-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.medium-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.medium-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.medium-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.medium-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.medium-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.medium-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.medium-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.medium-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.medium-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.medium-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:1024px){.large-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.large-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.large-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.large-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.large-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.large-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.large-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.large-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.large-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.large-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.large-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.large-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.large-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.large-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.large-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.large-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.large-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.large-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.large-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.large-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.large-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.large-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.large-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.large-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.large-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.large-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.large-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.large-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.large-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.large-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.large-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.large-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.large-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.large-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.large-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.large-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.large-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.large-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.large-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.large-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:1200px){.xlarge-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xlarge-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.xlarge-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xlarge-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.xlarge-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xlarge-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.xlarge-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xlarge-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.xlarge-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xlarge-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.xlarge-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xlarge-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.xlarge-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xlarge-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.xlarge-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xlarge-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.xlarge-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xlarge-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.xlarge-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xlarge-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.xlarge-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xlarge-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.xlarge-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xlarge-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.xlarge-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.xlarge-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.xlarge-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.xlarge-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.xlarge-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.xlarge-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.xlarge-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.xlarge-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.xlarge-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.xlarge-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.xlarge-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.xlarge-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.xlarge-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.xlarge-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.xlarge-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.xlarge-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}:root{--f7-calendar-height:340px;--f7-calendar-sheet-landscape-height:220px;--f7-calendar-popover-width:320px;--f7-calendar-popover-height:320px;--f7-calendar-modal-height:420px;--f7-calendar-modal-max-width:380px;--f7-calendar-week-header-bg-color:transparent;--f7-calendar-footer-padding:0 8px;--f7-calendar-week-header-font-size:11px;--f7-calendar-disabled-text-color:#d4d4d4;--f7-calendar-event-dot-size:4px;--f7-calendar-time-selector-height:28px;--f7-calendar-picker-pressed-bg-color:rgba(0,0,0,0.1);--f7-calendar-picker-hover-bg-color:rgba(0,0,0,0.03);--f7-calendar-time-selector-bg-color:rgba(0,0,0,0.05)}:root .dark,:root.dark{--f7-calendar-picker-pressed-bg-color:rgba(255,255,255,0.08);--f7-calendar-picker-hover-bg-color:rgba(255,255,255,0.03);--f7-calendar-time-selector-bg-color:rgba(255,255,255,0.1)}.ios{--f7-calendar-selected-text-color:#fff;--f7-calendar-header-height:44px;--f7-calendar-header-font-size:17px;--f7-calendar-header-font-weight:600;--f7-calendar-header-padding:0 8px;--f7-calendar-footer-height:44px;--f7-calendar-footer-font-size:17px;--f7-calendar-week-header-height:18px;--f7-calendar-day-font-size:15px;--f7-calendar-day-size:30px;--f7-calendar-picker-font-size:17px;--f7-calendar-time-selector-font-size:17px;--f7-calendar-modal-border-radius:4px;--f7-calendar-modal-box-shadow:0px 11px 15px -7px rgba(0,0,0,0.2),0px 24px 38px 3px rgba(0,0,0,0.14),0px 9px 46px 8px rgba(0,0,0,0.12);--f7-calendar-prev-next-text-color:#c8c8c8;--f7-calendar-sheet-border-color:#929499;--f7-calendar-sheet-bg-color:#fff;--f7-calendar-week-header-text-color:#5e5e5e;--f7-calendar-modal-bg-color:#fff;--f7-calendar-day-text-color:#000;--f7-calendar-today-text-color:#000;--f7-calendar-today-bg-color:#e3e3e3}.ios .dark,.ios.dark{--f7-calendar-prev-next-text-color:#5e5e5e;--f7-calendar-sheet-border-color:var(--f7-bars-border-color);--f7-calendar-sheet-bg-color:#121212;--f7-calendar-week-header-text-color:#aaa;--f7-calendar-modal-bg-color:#121212;--f7-calendar-day-text-color:#fff;--f7-calendar-today-text-color:#fff;--f7-calendar-today-bg-color:#333}.md{--f7-calendar-sheet-border-color:transparent;--f7-calendar-header-height:64px;--f7-calendar-header-font-size:24px;--f7-calendar-header-font-weight:400;--f7-calendar-header-padding:0 24px;--f7-calendar-footer-height:56px;--f7-calendar-footer-font-size:14px;--f7-calendar-week-header-height:24px;--f7-calendar-day-font-size:14px;--f7-calendar-today-bg-color:none;--f7-calendar-day-size:32px;--f7-calendar-picker-font-size:14px;--f7-calendar-time-selector-font-size:14px;--f7-calendar-modal-border-radius:28px;--f7-calendar-modal-box-shadow:none}.md,.md .dark,.md [class*=color-]{--f7-calendar-sheet-bg-color:var(--f7-md-surface-1);--f7-calendar-selected-text-color:var(--f7-md-on-primary);--f7-calendar-week-header-text-color:var(--f7-md-on-surface-variant);--f7-calendar-day-text-color:var(--f7-md-on-surface);--f7-calendar-prev-next-text-color:rgba(var(--f7-md-on-surface-variant-rgb),0.55);--f7-calendar-today-text-color:var(--f7-theme-color);--f7-calendar-modal-bg-color:var(--f7-md-surface-1)}.calendar{flex-direction:column;height:var(--f7-calendar-height);overflow:hidden;width:100%}.calendar,.calendar.modal-in{display:flex}@media (orientation:landscape) and (max-height:415px){.calendar.calendar-sheet{height:var(--f7-calendar-sheet-landscape-height)}.calendar.calendar-modal{height:calc(100vh - var(--f7-navbar-height))}}.calendar.calendar-inline,.calendar.calendar-popover .calendar{position:relative}.calendar-sheet{--f7-sheet-border-color:var(--f7-calendar-sheet-border-color);background:var(--f7-calendar-sheet-bg-color);height:calc(var(--f7-calendar-height) + var(--f7-safe-area-bottom));padding-bottom:var(--f7-safe-area-bottom)}.calendar-sheet:before{z-index:600}.calendar-modal .toolbar:before,.calendar-popover .toolbar:before,.calendar-sheet .toolbar:before{display:none}.calendar-popover{width:var(--f7-calendar-popover-width)}.calendar-popover .calendar-header,.calendar-popover .toolbar-top{border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;overflow:hidden}.calendar-popover .calendar-header+.toolbar-top{border-radius:0}.calendar-popover .calendar-footer,.calendar-popover .toolbar-bottom{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.calendar-popover .calendar{height:var(--f7-calendar-popover-height);position:relative;z-index:1}.calendar-popover .calendar-month-picker,.calendar-popover .calendar-time-picker,.calendar-popover .calendar-year-picker{border-radius:var(--f7-popover-border-radius)}.calendar-popover .calendar-month-picker .picker,.calendar-popover .calendar-time-picker .picker,.calendar-popover .calendar-year-picker .picker{display:flex;flex-direction:column;height:100%}.calendar-header{background-color:var(--f7-calendar-header-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-calendar-header-text-color,var(--f7-bars-text-color));flex-shrink:0;font-size:var(--f7-calendar-header-font-size);font-weight:var(--f7-calendar-header-font-weight);height:var(--f7-calendar-header-height);line-height:var(--f7-calendar-header-height);overflow:hidden;padding:var(--f7-calendar-header-padding);position:relative;text-overflow:ellipsis;white-space:nowrap;width:100%}.calendar-header a{color:var(--f7-calendar-header-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer{align-items:center;background-color:var(--f7-calendar-footer-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-calendar-footer-text-color,var(--f7-bars-text-color));display:flex;flex-shrink:0;font-size:var(--f7-calendar-header-font-size);height:var(--f7-calendar-footer-height);justify-content:flex-end;padding:var(--f7-calendar-footer-padding);position:relative;width:100%}.calendar-footer a{color:var(--f7-calendar-footer-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer:before{background-color:var(--f7-calendar-footer-border-color,var(--f7-bars-border-color));bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.calendar-modal{background:var(--f7-calendar-modal-bg-color);border-radius:var(--f7-calendar-modal-border-radius);box-shadow:var(--f7-calendar-modal-box-shadow);display:flex;height:var(--f7-calendar-modal-height);left:50%;max-width:var(--f7-calendar-modal-max-width);min-width:300px;overflow:hidden;position:absolute;top:50%;transform:translate3d(-50%,100vh,0);transition-property:transform;transition-timing-function:cubic-bezier(0,1,.2,1);width:90%;z-index:13500}.calendar-modal.modal-in,.calendar-modal.modal-out{transition-duration:.4s}.calendar-modal.modal-in{transform:translate3d(-50%,-50%,0)}.calendar-modal.modal-out{transform:translate3d(-50%,100vh,0)}.calendar-week-header{background-color:var(--f7-calendar-week-header-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-calendar-week-header-text-color,var(--f7-bars-text-color));display:flex;font-size:var(--f7-calendar-week-header-font-size);height:var(--f7-calendar-week-header-height);padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right);position:relative}.calendar-week-header .calendar-week-day{flex-shrink:1;line-height:var(--f7-calendar-week-header-height);text-align:center;width:14.28571%}.calendar-months{flex-shrink:10;height:100%;overflow:hidden;position:relative;width:100%}.calendar-months-wrapper{height:100%;position:relative;transition:.3s;width:100%}.calendar-month{display:flex;flex-direction:column;height:100%;left:0;position:absolute;top:0;width:100%}.calendar-row{box-sizing:border-box;display:flex;flex-shrink:1;height:16.66666667%;padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right);position:relative;width:100%}.calendar-modal .calendar-months:first-child .calendar-row:first-child:before,.calendar-popover .calendar-months:first-child .calendar-row:first-child:before{display:none!important}.calendar-day{align-items:center;box-sizing:border-box;color:var(--f7-calendar-day-text-color);cursor:pointer;display:flex;flex-shrink:1;font-size:var(--f7-calendar-day-font-size);height:100%;justify-content:center;text-align:center;width:14.28571429%;z-index:20}.calendar-day-today .calendar-day-number{background-color:var(--f7-calendar-today-bg-color);color:var(--f7-calendar-today-text-color,var(--f7-theme-color))}.calendar-day-next,.calendar-day-prev{color:var(--f7-calendar-prev-next-text-color)}.calendar-day-disabled{color:var(--f7-calendar-disabled-text-color);cursor:auto}.calendar-day-selected .calendar-day-number{background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color));color:var(--f7-calendar-selected-text-color)}.calendar-day-number{border-radius:50%;display:inline-block;height:var(--f7-calendar-day-size);line-height:var(--f7-calendar-day-size);position:relative;width:var(--f7-calendar-day-size)}.calendar-day-events{align-items:center;display:flex;justify-content:center;left:0;margin-top:1px;position:absolute;top:100%;width:100%}.calendar-day-event{background-color:var(--f7-calendar-event-bg-color);border-radius:calc(var(--f7-calendar-event-dot-size)/2);height:var(--f7-calendar-event-dot-size);width:var(--f7-calendar-event-dot-size)}.calendar-day-event+.calendar-day-event{margin-left:2px}.calendar-day-selected-left,.calendar-day-selected-range,.calendar-day-selected-right{position:relative}.calendar-day-selected-left:before,.calendar-day-selected-range:before,.calendar-day-selected-right:before{background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color));content:"";height:var(--f7-calendar-day-size);left:0;opacity:.2;position:absolute;top:50%;transform:translateY(-50%);width:100%;z-index:-1}.calendar-day-selected-left:before,.calendar-day-selected-range:first-child:before{border-radius:var(--f7-calendar-day-size) 0 0 var(--f7-calendar-day-size);left:auto;right:0;width:calc(50% + var(--f7-calendar-day-size)/2)}.calendar-day-selected-range:last-child:before,.calendar-day-selected-right:before{border-radius:0 var(--f7-calendar-day-size) var(--f7-calendar-day-size) 0;width:calc(50% + var(--f7-calendar-day-size)/2)}.calendar-day-selected-left:last-child:before,.calendar-day-selected-right:first-child:before{display:none}.calendar-day-selected-left.calendar-day-selected-right:before{content:none;display:none}.calendar-day-selected-range .calendar-day-number{background-color:initial;color:inherit}.calendar-month-selector,.calendar-year-selector{align-items:center;display:flex;flex-shrink:10;justify-content:space-between;margin-left:auto;margin-right:auto;max-width:200px;width:50%}.calendar-month-selector .calendar-day-number,.calendar-year-selector .calendar-day-number{flex-shrink:1;overflow:hidden;position:relative;text-overflow:ellipsis}.calendar-month-selector a.icon-only,.calendar-year-selector a.icon-only{min-width:36px}.calendar-month-picker,.calendar-time-picker,.calendar-year-picker{background:transparent;height:100%;position:relative;-webkit-user-select:none;user-select:none;width:100%}.calendar-month-picker .picker-columns,.calendar-year-picker .picker-columns{text-align:center}.calendar-month-picker-item,.calendar-year-picker-item{align-items:center;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;overflow:hidden;position:relative;transition-duration:.1s}.calendar-month-picker-item span,.calendar-year-picker-item span{box-sizing:border-box;overflow:hidden;pointer-events:none;position:relative;text-overflow:ellipsis;white-space:nowrap}.calendar-month-picker-item.active-state,.calendar-year-picker-item.active-state{background:var(--f7-calendar-picker-pressed-bg-color)}.calendar-month-picker-item{padding:5px}.sheet-modal .calendar-month-picker-item{height:33.33333333%;width:25%}.sheet-modal .calendar-month-picker-item:nth-child(4n+1):before,.sheet-modal .calendar-month-picker-item:nth-child(n+9):after{display:none!important}.calendar-modal .calendar-month-picker-item,.popover .calendar-month-picker-item{height:25%;width:33.33333333%}.calendar-modal .calendar-month-picker-item:nth-child(3n+1):before,.calendar-modal .calendar-month-picker-item:nth-child(n+10):after,.popover .calendar-month-picker-item:nth-child(3n+1):before,.popover .calendar-month-picker-item:nth-child(n+10):after{display:none!important}.calendar-month-picker-item-current,.calendar-year-picker-item-current{color:var(--f7-calendar-picker-selected-text-color,var(--f7-theme-color))}.calendar-year-picker{--webkit-overflow-scrolling:touch;overflow:auto}.calendar-year-picker-item{height:34px;line-height:34px;width:100%}.calendar-time-selector{align-items:center;display:flex;flex-shrink:0;font-size:var(--f7-calendar-time-selector-font-size);justify-content:space-between;padding:12px 16px;position:relative}.calendar-time-selector a{align-items:center;background-color:var(--f7-calendar-time-selector-bg-color);border-radius:8px;box-sizing:border-box;display:flex;height:var(--f7-calendar-time-selector-height);justify-content:center;overflow:hidden;padding:0 16px;position:relative}.calendar-time-selector>span{font-weight:500}.calendar-time-selector .segmented{margin-left:8px}.calendar-month-picker-popover,.calendar-time-picker-popover,.calendar-year-picker-popover{height:240px;width:240px}.calendar-month-picker-popover .popover-inner,.calendar-time-picker-popover .popover-inner,.calendar-year-picker-popover .popover-inner{height:100%;overflow:hidden}.calendar-time-picker{--f7-picker-popover-height:100%;--f7-picker-inline-height:100%}.calendar-time-picker .toolbar{flex-shrink:0;top:0!important}.calendar-time-picker .picker{display:flex;flex-direction:column;height:100%}:root{--f7-picker-height:260px;--f7-picker-inline-height:200px;--f7-picker-popover-height:260px;--f7-picker-popover-width:280px;--f7-picker-landscape-height:200px;--f7-picker-item-height:36px}.ios{--f7-picker-column-font-size:20px;--f7-picker-item-selected-text-color:#000;--f7-picker-item-selected-bg-color:rgba(0,0,0,0.12);--f7-picker-divider-text-color:#000;--f7-picker-item-text-color:rgba(0,0,0,0.45)}.ios .dark,.ios.dark{--f7-picker-item-selected-text-color:#fff;--f7-picker-item-selected-bg-color:rgba(255,255,255,0.1);--f7-picker-divider-text-color:#fff;--f7-picker-item-text-color:rgba(255,255,255,0.55)}.md{--f7-picker-column-font-size:20px}.md,.md .dark,.md [class*=color-]{--f7-picker-item-selected-text-color:var(--f7-md-on-surface);--f7-picker-item-text-color:var(--f7-md-on-surface-variant);--f7-picker-divider-text-color:var(--f7-md-on-surface);--f7-picker-item-selected-border-color:var(--f7-md-outline)}.picker{height:var(--f7-picker-height);width:100%}.picker.picker-inline{height:var(--f7-picker-inline-height)}.popover .picker{height:var(--f7-picker-popover-height)}@media (orientation:landscape) and (max-height:415px){.picker:not(.picker-inline){height:var(--f7-picker-landscape-height)}}.picker.sheet-modal{background:var(--f7-picker-sheet-bg-color,var(--f7-sheet-bg-color))}.picker-popover{width:var(--f7-picker-popover-width)}.picker-popover .toolbar{background:none;border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0}.picker-popover .toolbar:before{display:none!important}.picker-popover .toolbar+.picker-columns{height:calc(100% - var(--f7-toolbar-height))}.picker-columns{--f7-picker-mask-bg-color:transparent;display:flex;font-size:var(--f7-picker-column-font-size);height:100%;justify-content:center;overflow:hidden;padding:0;position:relative;text-align:right}.popover .picker-columns{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.picker-columns:after,.picker-columns:before{content:"";height:20%;left:0;pointer-events:none;position:absolute;width:100%;z-index:100}.page .picker-columns{--f7-picker-mask-bg-color:var(--f7-page-bg-color)}.block-strong .picker-columns{--f7-picker-mask-bg-color:var(--f7-block-strong-bg-color)}.picker-sheet .picker-columns{--f7-picker-mask-bg-color:var(--f7-picker-sheet-bg-color,var(--f7-sheet-bg-color))}.picker-popover .picker-columns{--f7-picker-mask-bg-color:var(--f7-popover-bg-color)}.picker-columns:before{background-image:linear-gradient(to bottom,var(--f7-picker-mask-bg-color),transparent);top:0}.picker-columns:after{background-image:linear-gradient(to top,var(--f7-picker-mask-bg-color),transparent);bottom:0}.picker-column{max-height:100%;position:relative;z-index:10}.picker-column.picker-column-first.picker-column-last{width:100%}.picker-column.picker-column-left{text-align:left}.picker-column.picker-column-center{text-align:center}.picker-column.picker-column-right{text-align:right}.picker-column.picker-column-divider{align-items:center;color:var(--f7-picker-divider-text-color);display:flex}.picker-items{box-sizing:border-box;height:100%;overflow:auto;padding:var(--f7-picker-scroll-padding,0) 0;scroll-snap-type:y mandatory;scrollbar-color:transparent;scrollbar-width:none}.picker-items::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.picker-items::-webkit-scrollbar-track{background:transparent;box-shadow:none}.picker-items::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.picker-item{box-sizing:border-box;color:var(--f7-picker-item-text-color);cursor:pointer;height:var(--f7-picker-item-height);left:0;line-height:var(--f7-picker-item-height);overflow:hidden;position:relative;scroll-snap-align:center;text-overflow:ellipsis;top:0;white-space:nowrap;width:100%}.picker-item span{padding:0 10px}.picker-item.picker-item-far{pointer-events:none}.picker-item.picker-item-selected{color:var(--f7-picker-item-selected-text-color);transform:translateZ(0) rotateX(0deg)}.picker-column-free-mode .picker-item{scroll-snap-align:none}.picker-center-highlight{box-sizing:border-box;height:var(--f7-picker-item-height);margin-top:calc(var(--f7-picker-item-height)*-1/2);pointer-events:none;position:absolute;top:50%}.picker-3d .picker-columns{overflow:hidden}.picker-3d .picker-column,.picker-3d .picker-item,.picker-3d .picker-items{transform-style:preserve-3d}.picker-3d .picker-column{overflow:visible}.picker-3d .picker-item{overflow:visible;perspective:1200px}.picker-3d .picker-item>span{-webkit-backface-visibility:hidden;backface-visibility:hidden;box-sizing:border-box;display:block;max-width:100%;overflow:hidden;position:relative;text-overflow:ellipsis;transform-origin:center center -100px;transform-style:preserve-3d}.ios .picker-center-highlight{background-color:var(--f7-picker-item-selected-bg-color);border-radius:8px;left:16px;right:16px}.popover .ios .picker-center-highlight{left:8px;right:8px}.md .picker-center-highlight{border-bottom:1px solid var(--f7-md-outline);border-top:1px solid var(--f7-md-outline);left:0;right:0}.infinite-scroll-preloader{margin-left:auto;margin-right:auto;text-align:center}.infinite-scroll-preloader.preloader{display:block}.ios .infinite-scroll-preloader{margin-bottom:35px;margin-top:35px}.ios .infinite-scroll-preloader .preloader,.ios .infinite-scroll-preloader.preloader{height:27px;width:27px}.md .infinite-scroll-preloader{margin-bottom:32px;margin-top:32px}.ios{--f7-ptr-preloader-size:28px;--f7-ptr-size:44px}.md{--f7-ptr-preloader-size:22px;--f7-ptr-size:40px}.md,.md .dark,.md [class*=color-]{--f7-ptr-preloader-bg-color:var(--f7-md-surface-1);--f7-ptr-preloader-color:var(--f7-md-primary)}.ptr-preloader{height:var(--f7-ptr-size);pointer-events:none;position:relative;top:var(--f7-ptr-top,0)}.ptr-preloader .preloader{height:var(--f7-ptr-preloader-size);left:50%;margin-left:calc(var(--f7-ptr-preloader-size)*-1/2);margin-top:calc(var(--f7-ptr-preloader-size)*-1/2);position:absolute;top:50%;visibility:hidden;width:var(--f7-ptr-preloader-size)}.ptr-bottom .ptr-preloader{bottom:0;position:fixed;top:auto}.ptr-with-navbar-large-transparent .ptr-preloader,.ptr-with-navbar-transparent .ptr-preloader{top:calc(var(--f7-page-navbar-offset, 0px)*-1 + var(--f7-safe-area-top))}.ios .ptr-preloader{left:0;margin-bottom:calc(var(--f7-ptr-size)*-1);position:relative;top:0;width:100%}.ios .ptr-preloader .preloader{visibility:visible}.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner{animation:none}.ios .ptr-content.ptr-closing .ptr-preloader .preloader-inner-line,.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up):not(.ptr-pull-down) .ptr-preloader .preloader-inner-line{opacity:0!important}.ios .ptr-refreshing>*,.ios .ptr-transitioning>*{transition-duration:.2s;transition-property:transform}.ios .ptr-transitioning .ptr-preloader .preloader-inner-line{transition-duration:.2s}.ios .ptr-pull-up .ptr-preloader .preloader{animation:ios-ptr-preloader-spin 1s ease-out forwards}.ios .ptr-refreshing:not(.ptr-bottom){transform:none}.ios .ptr-refreshing:not(.ptr-bottom)>*{transform:translate3d(0,var(--f7-ptr-size),0)}.ios .ptr-refreshing:not(.ptr-bottom)>.ptr-preloader{transform:translateZ(0)}.ios .ptr-bottom .ptr-preloader{margin-bottom:0;margin-top:calc(var(--f7-ptr-size)*-1);position:relative}.ios .ptr-bottom.ptr-refreshing>*,.ios .ptr-bottom.ptr-transitioning>*{transition-duration:.3s;transition-property:transform}.ios .ptr-bottom.ptr-refreshing{transform:none}.ios .ptr-bottom.ptr-refreshing>*{transform:translate3d(0,calc(var(--f7-ptr-size)*-1),0)}.ios .ptr-bottom.ptr-refreshing>.ptr-preloader{transform:translateZ(0)}@keyframes ios-ptr-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(135deg)}}.md{--f7-ptr-top:-4px}.md .ptr-preloader{--f7-preloader-color:var(--f7-ptr-preloader-color);background:var(--f7-ptr-preloader-bg-color);border-radius:50%;box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);margin-right:calc(var(--f7-ptr-size)*-1/2);margin-top:calc(var(--f7-ptr-size)*-1);right:50%;width:var(--f7-ptr-size);z-index:100}.md .ptr-preloader .preloader circle{stroke-width:4}.md .ptr-arrow{border:3px solid var(--f7-preloader-color);border-left:3px solid transparent;border-radius:50%;box-sizing:border-box;height:22px;left:50%;margin-left:-11px;margin-top:-11px;opacity:1;position:absolute;top:50%;transform:rotate(150deg);width:22px}.md .ptr-arrow:after{border-bottom-color:inherit;border-bottom-style:solid;border-bottom-width:6px;border-left:5px solid transparent;border-right:5px solid transparent;bottom:0;content:"";height:0;left:-5px;position:absolute;transform:rotate(-40deg);width:0}.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner,.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader circle{animation:none}.md .ptr-pull-up .ptr-preloader .preloader,.md .ptr-refreshing .ptr-preloader .preloader{visibility:visible}.md .ptr-pull-up .ptr-arrow,.md .ptr-refreshing .ptr-arrow{visibility:hidden}.md .ptr-refreshing .ptr-preloader{transform:translate3d(0,66px,0)}.md .ptr-transitioning .ptr-arrow{transition:.3s}.md .ptr-pull-up .ptr-arrow{opacity:0;transform:rotate(620deg)!important;transition:.4s}.md .ptr-refreshing .ptr-preloader,.md .ptr-transitioning .ptr-preloader{transition-duration:.3s;transition-property:transform,opacity}.md .ptr-bottom .ptr-preloader{margin-bottom:calc(var(--f7-ptr-size)*-1 - 4px);margin-top:0}.md .ptr-bottom.ptr-refreshing .ptr-preloader{transform:translate3d(0,-66px,0)}.md .ptr-with-navbar-large-transparent .ptr-preloader,.md .ptr-with-navbar-transparent .ptr-preloader{opacity:0}.md .ptr-with-navbar-large-transparent.ptr-pull-down .ptr-preloader,.md .ptr-with-navbar-large-transparent.ptr-pull-up .ptr-preloader,.md .ptr-with-navbar-large-transparent.ptr-refreshing .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-pull-down .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-pull-up .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-refreshing .ptr-preloader{opacity:1}.md .ptr-with-navbar-large-transparent.ptr-closing .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-closing .ptr-preloader{opacity:0;transition-duration:.3s}:root{--f7-table-head-font-size:12px;--f7-table-body-font-size:14px;--f7-table-footer-font-size:12px;--f7-table-input-height:24px;--f7-table-input-font-size:14px;--f7-table-collapsible-cell-padding:16px;--f7-table-link-icon-only-icon-size:20px;--f7-table-head-bg-color:transparent;--f7-table-card-header-bg-color:transparent;--f7-table-card-header-height:64px;--f7-table-cell-padding-vertical:0px;--f7-table-sortable-icon-color:#000}:root .dark,:root.dark{--f7-table-sortable-icon-color:#fff;--f7-table-input-text-color:#fff}.ios{--f7-table-head-font-weight:600;--f7-table-head-cell-height:44px;--f7-table-head-icon-size:18px;--f7-table-body-cell-height:44px;--f7-table-cell-padding-horizontal:16px;--f7-table-edge-cell-padding-horizontal:16px;--f7-table-label-cell-padding-horizontal:16px;--f7-table-checkbox-cell-width:22px;--f7-table-title-font-size:17px;--f7-table-title-font-weight:600;--f7-table-footer-height:44px;--f7-table-head-text-color:rgba(0,0,0,0.45);--f7-table-cell-border-color:rgba(0,0,0,0.22);--f7-table-selected-row-bg-color:rgba(0,0,0,0.03);--f7-table-footer-text-color:rgba(0,0,0,0.45);--f7-table-input-text-color:#000}.ios .dark,.ios.dark{--f7-table-head-text-color:rgba(255,255,255,0.55);--f7-table-cell-border-color:rgba(255,255,255,0.15);--f7-table-footer-text-color:rgba(255,255,255,0.55);--f7-table-selected-row-bg-color:rgba(255,255,255,0.08)}.md{--f7-table-head-font-weight:500;--f7-table-head-cell-height:56px;--f7-table-head-icon-size:16px;--f7-table-body-cell-height:48px;--f7-table-cell-padding-horizontal:28px;--f7-table-edge-cell-padding-horizontal:24px;--f7-table-label-cell-padding-horizontal:24px;--f7-table-checkbox-cell-width:18px;--f7-table-title-font-size:20px;--f7-table-title-font-weight:400;--f7-table-footer-height:56px;--f7-table-actions-cell-link-color:rgba(0,0,0,0.54);--f7-table-actions-link-color:rgba(0,0,0,0.54);--f7-table-input-text-color:#212121}.md .dark,.md.dark{--f7-table-actions-cell-link-color:rgba(255,255,255,0.54);--f7-table-actions-link-color:rgba(255,255,255,0.54)}.md,.md .dark,.md [class*=color-]{--f7-table-head-text-color:var(--f7-md-on-surface-variant);--f7-table-footer-text-color:var(--f7-md-on-surface-variant);--f7-table-selected-row-bg-color:var(--f7-md-secondary-container);--f7-table-cell-border-color:var(--f7-md-outline)}.data-table{overflow-x:auto}.data-table table,table.data-table{border:none;border-collapse:collapse;margin:0;padding:0;text-align:right;width:100%}.data-table thead td,.data-table thead th{background-color:var(--f7-table-head-bg-color);font-size:var(--f7-table-head-font-size);font-weight:var(--f7-table-head-font-weight);height:var(--f7-table-head-cell-height);line-height:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table thead td:not(.sortable-cell-active),.data-table thead th:not(.sortable-cell-active){color:var(--f7-table-head-text-color)}.data-table thead i.f7-icons,.data-table thead i.icon,.data-table thead i.material-icons{font-size:var(--f7-table-head-icon-size);vertical-align:top}.data-table tbody{font-size:var(--f7-table-body-font-size)}.data-table tbody td,.data-table tbody th{height:var(--f7-table-body-cell-height)}.data-table tbody tr.data-table-row-selected,.device-desktop .data-table tbody tr:hover{background:var(--f7-table-selected-row-bg-color)}.data-table tbody td:before,.data-table tbody th:before{background-color:var(--f7-table-cell-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.data-table td,.data-table th{--f7-table-cell-padding-left:var(--f7-table-cell-padding-horizontal);--f7-table-cell-padding-right:var(--f7-table-cell-padding-horizontal);box-sizing:border-box;padding:var(--f7-table-cell-padding-vertical) var(--f7-table-cell-padding-right) var(--f7-table-cell-padding-vertical) var(--f7-table-cell-padding-left);position:relative}.data-table td:first-child,.data-table th:first-child{--f7-table-cell-padding-right:var(--f7-table-edge-cell-padding-horizontal)}.data-table td:last-child,.data-table th:last-child{--f7-table-cell-padding-left:var(--f7-table-edge-cell-padding-horizontal)}.data-table td.label-cell,.data-table th.label-cell{--f7-table-cell-padding-left:var(--f7-table-label-cell-padding-horizontal);--f7-table-cell-padding-right:var(--f7-table-label-cell-padding-horizontal)}.data-table td.numeric-cell,.data-table th.numeric-cell{text-align:left}.data-table td.checkbox-cell,.data-table th.checkbox-cell{overflow:visible;width:var(--f7-table-checkbox-cell-width)}.data-table td.checkbox-cell label+span,.data-table th.checkbox-cell label+span{margin-right:8px}.data-table td.checkbox-cell:first-child,.data-table th.checkbox-cell:first-child{padding-left:calc(var(--f7-table-cell-padding-left)/2)}.data-table td.checkbox-cell:first-child+td,.data-table td.checkbox-cell:first-child+th,.data-table td.checkbox-cell:last-child,.data-table th.checkbox-cell:first-child+td,.data-table th.checkbox-cell:first-child+th,.data-table th.checkbox-cell:last-child{padding-right:calc(var(--f7-table-cell-padding-right)/2)}.data-table td.actions-cell,.data-table th.actions-cell{text-align:left;white-space:nowrap}.data-table td.actions-cell a.link,.data-table th.actions-cell a.link{color:var(--f7-table-actions-cell-link-color,var(--f7-theme-color))}.card .data-table td a.icon-only,.card .data-table th a.icon-only,.card.data-table td a.icon-only,.card.data-table th a.icon-only,.data-table td a.icon-only,.data-table th a.icon-only{display:inline-block;font-size:0;min-width:0;text-align:center;vertical-align:middle}.card .data-table td a.icon-only i,.card .data-table th a.icon-only i,.card.data-table td a.icon-only i,.card.data-table th a.icon-only i,.data-table td a.icon-only i,.data-table th a.icon-only i{font-size:var(--f7-table-link-icon-only-icon-size);vertical-align:middle}.data-table .sortable-cell.input-cell .table-head-label,.data-table .sortable-cell:not(.input-cell){cursor:pointer;position:relative}.data-table .sortable-cell.numeric-cell.input-cell>.table-head-label:before,.data-table .sortable-cell.numeric-cell:not(.input-cell):before,.data-table .sortable-cell:not(.numeric-cell).input-cell>.table-head-label:after,.data-table .sortable-cell:not(.numeric-cell):not(.input-cell):after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-table-sortable-icon-color);content:"arrow_bottom_md";direction:ltr;display:block;display:inline-block;font-family:framework7-core-icons;font-size:20px;font-size:13px;font-style:normal;font-weight:400;height:100%;height:16px;letter-spacing:normal;line-height:1;line-height:16px;opacity:0;text-align:center;text-rendering:optimizeLegibility;text-transform:none;transform:rotate(0);transition-duration:.3s;vertical-align:top;white-space:nowrap;width:100%;width:16px}.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:after,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:before,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:after,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:before{opacity:.54}.data-table .sortable-cell.sortable-cell-active .table-head-label:after,.data-table .sortable-cell.sortable-cell-active .table-head-label:before,.data-table .sortable-cell.sortable-cell-active:after,.data-table .sortable-cell.sortable-cell-active:before{opacity:.87!important}.data-table .sortable-cell.sortable-desc:after,.data-table .sortable-cell.sortable-desc:before,.data-table .table-head-label:after,.data-table .table-head-label:before{transform:rotate(180deg)!important}.card .data-table .card-footer,.card .data-table .card-header,.data-table.card .card-footer,.data-table.card .card-header{padding-left:var(--f7-table-edge-cell-padding-horizontal);padding-right:var(--f7-table-edge-cell-padding-horizontal)}.card .data-table .card-header,.data-table.card .card-header{background-color:var(--f7-table-card-header-bg-color);min-height:var(--f7-table-card-header-height)}.card .data-table .card-content,.data-table.card .card-content{overflow-x:auto}.card .data-table .card-footer,.data-table.card .card-footer{min-height:var(--f7-table-footer-height)}.data-table .data-table-title{font-size:var(--f7-table-title-font-size);font-weight:var(--f7-table-title-font-weight)}.data-table .data-table-actions,.data-table .data-table-links{display:flex}.data-table .data-table-links .button{min-width:64px}.data-table .data-table-actions{align-items:center;margin-right:auto}.data-table .data-table-actions a.link{color:var(--f7-table-actions-link-color,var(--f7-theme-color));min-width:0}.data-table .data-table-actions a.link.icon-only{justify-content:center;line-height:1;padding:0}.data-table .data-table-header,.data-table .data-table-header-selected{align-items:center;display:flex;justify-content:space-between;width:100%}.data-table .card-header>.data-table-header,.data-table .card-header>.data-table-header-selected{height:100%;margin:calc(var(--f7-card-header-padding-vertical)*-1) calc(var(--f7-table-edge-cell-padding-horizontal)*-1);min-height:var(--f7-table-card-header-height);padding:var(--f7-card-header-padding-vertical) var(--f7-table-edge-cell-padding-horizontal)}.data-table .data-table-header-selected{background:rgba(var(--f7-theme-color-rgb),.1);display:none}.data-table.data-table-has-checked .data-table-header{display:none}.data-table.data-table-has-checked .data-table-header-selected{display:flex}.data-table .data-table-title-selected{color:var(--f7-theme-color);font-size:14px}.data-table .data-table-footer{align-items:center;box-sizing:border-box;color:var(--f7-table-footer-text-color);display:flex;font-size:var(--f7-table-footer-font-size);justify-content:flex-start;min-height:var(--f7-table-footer-height);overflow:hidden;position:relative}.data-table .data-table-footer:before{background-color:var(--f7-table-cell-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.data-table .data-table-pagination,.data-table .data-table-rows-select{align-items:center;display:flex}.data-table .input-cell{height:auto;padding-bottom:8px;padding-top:8px;vertical-align:top}.data-table .input-cell .table-head-label+.input{margin-top:4px}.data-table .input-cell .input{height:var(--f7-table-input-height)}.data-table .input-cell .input input,.data-table .input-cell .input select,.data-table .input-cell .input textarea{color:var(--f7-table-input-text-color);font-size:var(--f7-table-input-font-size);height:var(--f7-table-input-height)}@media (max-width:480px) and (orientation:portrait){.data-table.data-table-collapsible thead{display:none}.data-table.data-table-collapsible tbody,.data-table.data-table-collapsible td,.data-table.data-table-collapsible tr{display:block}.data-table.data-table-collapsible tr{position:relative}.data-table.data-table-collapsible tr:before{background-color:var(--f7-table-cell-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.data-table.data-table-collapsible tr:hover{background-color:inherit}.data-table.data-table-collapsible td{--f7-table-cell-padding-left:var(--f7-table-collapsible-cell-padding);--f7-table-cell-padding-right:var(--f7-table-collapsible-cell-padding);align-content:center;align-items:center;display:flex;height:auto;justify-content:flex-start;min-height:var(--f7-table-body-cell-height);text-align:right}.data-table.data-table-collapsible td:before{display:none!important}.data-table.data-table-collapsible td:not(.checkbox-cell):before{background:none!important;color:var(--f7-table-head-text-color);content:attr(data-collapsible-title);display:block!important;flex-shrink:0;font-size:var(--f7-table-head-font-size);font-weight:var(--f7-table-head-font-weight);height:auto;margin-left:16px;position:relative;transform:none!important;width:40%}.data-table.data-table-collapsible td.checkbox-cell{position:absolute;right:0;top:0}.data-table.data-table-collapsible td.checkbox-cell+td{padding-right:16px}.data-table.data-table-collapsible td.checkbox-cell~td{margin-right:32px}}.data-table .xsmall-landscape-only,.data-table .xsmall-only{display:none}@media (min-width:480px){.data-table .xsmall-only{display:table-cell}}@media (min-width:480px) and (orientation:landscape){.data-table .xsmall-landscape-only{display:table-cell}}.data-table .small-landscape-only,.data-table .small-only{display:none}@media (min-width:568px){.data-table .small-only{display:table-cell}}@media (min-width:568px) and (orientation:landscape){.data-table .small-landscape-only{display:table-cell}}.data-table .medium-landscape-only,.data-table .medium-only{display:none}@media (min-width:768px){.data-table .medium-only{display:table-cell}}@media (min-width:768px) and (orientation:landscape){.data-table .medium-landscape-only{display:table-cell}}.data-table .large-landscape-only,.data-table .large-only{display:none}@media (min-width:1024px){.data-table .large-only{display:table-cell}}@media (min-width:1024px) and (orientation:landscape){.data-table .large-landscape-only{display:table-cell}}.data-table .xlarge-landscape-only,.data-table .xlarge-only{display:none}@media (min-width:1200px){.data-table .xlarge-only{display:table-cell}}@media (min-width:1200px) and (orientation:landscape){.data-table .xlarge-landscape-only{display:table-cell}}.ios .data-table td.actions-cell a.link+a.link,.ios .data-table th.actions-cell a.link+a.link{margin-right:16px}.ios .sortable-cell:not(.numeric-cell):after{margin-right:5px}.ios .sortable-cell.numeric-cell:before{margin-left:5px}.ios .data-table-actions .button+.button,.ios .data-table-actions a.link+a.link,.ios .data-table-links .button+.button,.ios .data-table-links a.link+a.link{margin-right:16px}.ios .data-table-actions a.link.icon-only,.ios .data-table-pagination a.link,.ios .data-table-rows-select a.link{height:44px;width:44px}.ios .data-table-rows-select+.data-table-pagination{margin-right:30px}.ios .data-table-rows-select .input{margin-right:20px}.ios .data-table-pagination-label{margin-left:16px}.md .data-table td.actions-cell a.link+a.link,.md .data-table th.actions-cell a.link+a.link{margin-right:24px}.md .data-table td.actions-cell a.icon-only,.md .data-table th.actions-cell a.icon-only{height:24px;line-height:24px;width:24px}.md .sortable-cell:not(.numeric-cell):after{margin-right:8px}.md .sortable-cell.numeric-cell:before{margin-left:8px}.md .data-table-actions .button+.button,.md .data-table-actions a.link+a.link,.md .data-table-links .button+.button,.md .data-table-links a.link+a.link{margin-right:24px}.md .data-table-actions a.link.icon-only{height:24px;overflow:visible;width:24px}.md .data-table-actions a.link.icon-only.active-state{background:none}.md .data-table-pagination a.link,.md .data-table-rows-select a.link{height:48px;width:48px}.md .data-table-rows-select+.data-table-pagination{margin-right:32px}.md .data-table-rows-select .input{margin-right:24px}.md .data-table-pagination-label{margin-left:20px}.md .input-cell .input-clear-button{transform:scale(.8)}:root{--f7-fab-margin:16px;--f7-fab-extended-text-font-size:14px;--f7-fab-label-padding:4px 12px;--f7-fab-label-font-size:inherit;--f7-fab-button-size:40px}.ios{--f7-fab-text-color:#fff;--f7-fab-border-radius:50px;--f7-fab-size:50px;--f7-fab-box-shadow:0px 2px 4px rgba(0,0,0,0.4);--f7-fab-extended-text-transform:uppercase;--f7-fab-extended-size:50px;--f7-fab-extended-text-padding:0 20px;--f7-fab-extended-text-font-weight:600;--f7-fab-extended-text-letter-spacing:0;--f7-fab-label-border-radius:4px;--f7-fab-label-box-shadow:0px 1px 2px rgba(0,0,0,0.4);--f7-fab-label-text-color:#333;--f7-fab-label-bg-color:#fff}.md{--f7-fab-border-radius:16px;--f7-fab-size:56px;--f7-fab-box-shadow:0px 1px 2px rgba(0,0,0,0.25);--f7-fab-extended-size:56px;--f7-fab-extended-text-padding:0 16px;--f7-fab-extended-text-font-weight:500;--f7-fab-extended-text-letter-spacing:0;--f7-fab-extended-text-transform:none;--f7-fab-label-border-radius:8px;--f7-fab-label-box-shadow:0px 1px 2px rgba(0,0,0,0.25)}.md,.md .dark,.md [class*=color-]{--f7-fab-bg-color:var(--f7-md-primary-container);--f7-fab-text-color:var(--f7-md-on-primary-container);--f7-fab-label-text-color:var(--f7-md-on-surface);--f7-fab-label-bg-color:var(--f7-md-surface-5)}.fab-backdrop{z-index:1400}.fab{position:absolute;z-index:1500}.fab a{--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.fab-left-bottom,.fab-left-center,.fab-left-top{left:calc(var(--f7-fab-margin) + var(--f7-safe-area-left))}.fab-right-bottom,.fab-right-center,.fab-right-top{right:calc(var(--f7-fab-margin) + var(--f7-safe-area-right))}.fab-center-top,.fab-left-top,.fab-right-top{top:var(--f7-fab-margin)}.fab-center-bottom,.fab-left-bottom,.fab-right-bottom{bottom:calc(var(--f7-fab-margin) + var(--f7-safe-area-bottom))}.fab-center-bottom,.fab-center-center,.fab-center-top{left:50%;transform:translateX(-50%)}.fab-center-center,.fab-left-center,.fab-right-center{top:50%;transform:translateY(-50%)}.fab-center-center{left:50%;top:50%;transform:translateX(-50%) translateY(-50%)}.fab-buttons a,.fab>a{align-items:center;background-color:var(--f7-fab-bg-color,var(--f7-theme-color));border-radius:var(--f7-fab-border-radius);box-shadow:var(--f7-fab-box-shadow);color:var(--f7-fab-text-color);display:flex;height:var(--f7-fab-size);justify-content:center;overflow:hidden;position:relative;transition-duration:.3s;width:var(--f7-fab-size);z-index:1}.fab>a i{left:50%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0) rotate(0deg) scale(1);transition:.3s}.fab>a i+i{opacity:0;transform:translate3d(-50%,-50%,0) rotate(-90deg) scale(.5)}.fab-buttons a{border-radius:var(--f7-fab-border-radius);height:var(--f7-fab-button-size);width:var(--f7-fab-button-size)}.fab-buttons{display:flex;pointer-events:none;position:absolute;visibility:hidden}.fab-buttons a{opacity:0}.fab-opened:not(.fab-morph)>a i{opacity:0;transform:translate3d(-50%,-50%,0) rotate(90deg) scale(.5)}.fab-opened:not(.fab-morph)>a i+i{opacity:1;transform:translate3d(-50%,-50%,0) rotate(0deg) scale(1)}.fab-opened .fab-buttons{pointer-events:auto;visibility:visible}.fab-opened .fab-buttons a{opacity:1;transform:translateZ(0) scale(1)!important}.fab-opened .fab-buttons a:nth-child(2){transition-delay:50ms}.fab-opened .fab-buttons a:nth-child(3){transition-delay:.1s}.fab-opened .fab-buttons a:nth-child(4){transition-delay:.15s}.fab-opened .fab-buttons a:nth-child(5){transition-delay:.2s}.fab-opened .fab-buttons a:nth-child(6){transition-delay:.25s}.fab-buttons-bottom,.fab-buttons-top{left:50%;margin-left:calc(var(--f7-fab-button-size)*-1/2);width:var(--f7-fab-button-size)}.fab-buttons-top{bottom:100%;flex-direction:column-reverse;margin-bottom:16px}.fab-buttons-top a{transform:translate3d(0,8px,0) scale(.3);transform-origin:center bottom}.fab-buttons-top a+a{margin-bottom:16px}.fab-buttons-bottom{flex-direction:column;margin-top:16px;top:100%}.fab-buttons-bottom a{transform:translate3d(0,-8px,0) scale(.3);transform-origin:center top}.fab-buttons-bottom a+a{margin-top:16px}.fab-buttons-left,.fab-buttons-right{height:var(--f7-fab-button-size);margin-top:calc(var(--f7-fab-button-size)*-1/2);top:50%}.fab-buttons-left{margin-right:16px;right:100%}.fab-buttons-left a{transform:translate3d(8px,0,0) scale(.3);transform-origin:right center}.fab-buttons-left a+a{margin-right:16px}.fab-buttons-right{flex-direction:row-reverse;left:100%;margin-left:16px}.fab-buttons-right a{transform:translate3d(-8px,0,0) scale(.3);transform-origin:left center}.fab-buttons-right a+a{margin-left:16px}.fab-buttons-center{height:100%;left:0;top:0;width:100%}.fab-buttons-center a{position:absolute}.fab-buttons-center a:first-child{bottom:100%;left:50%;margin-bottom:16px;margin-left:calc(var(--f7-fab-button-size)*-1/2);transform:translateY(-8px) scale(.3);transform-origin:center bottom}.fab-buttons-center a:nth-child(2){left:100%;margin-left:16px;margin-top:calc(var(--f7-fab-button-size)*-1/2);top:50%;transform:translateX(-8px) scale(.3);transform-origin:left center}.fab-buttons-center a:nth-child(3){left:50%;margin-left:calc(var(--f7-fab-button-size)*-1/2);margin-top:16px;top:100%;transform:translateY(8px) scale(.3);transform-origin:center top}.fab-buttons-center a:nth-child(4){margin-right:16px;margin-top:calc(var(--f7-fab-button-size)*-1/2);right:100%;top:50%;transform:translateX(8px) scale(.3);transform-origin:right center}.fab-morph{background:var(--f7-fab-bg-color,var(--f7-theme-color));border-radius:var(--f7-fab-border-radius);box-shadow:var(--f7-fab-box-shadow)}.fab-morph>a{background:none!important;box-shadow:none}.fab-opened.fab-morph>a i{opacity:0}.fab-morph,.fab-morph-target,.fab-morph>a{transition-duration:.25s}.fab-morph-target:not(.fab-morph-target-visible){display:none}.fab-extended{min-width:var(--f7-fab-extended-size);width:auto}.fab-extended>a{height:var(--f7-fab-extended-size);width:100%}.fab-extended>a i{left:calc(var(--f7-fab-extended-size)/2)}.fab-extended i~.fab-text{padding-left:var(--f7-fab-extended-size)}.fab-extended>a{width:100%!important}.fab-text{box-sizing:border-box;font-size:var(--f7-fab-extended-text-font-size);font-weight:var(--f7-fab-extended-text-font-weight);letter-spacing:var(--f7-fab-extended-text-letter-spacing);padding:var(--f7-fab-extended-text-padding);text-transform:var(--f7-fab-extended-text-transform)}.fab-label-button{overflow:visible!important}.fab-label{background:var(--f7-fab-label-bg-color);border-radius:var(--f7-fab-label-border-radius);box-shadow:var(--f7-fab-label-box-shadow);color:var(--f7-fab-label-text-color);font-size:var(--f7-fab-label-font-size);padding:var(--f7-fab-label-padding);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);white-space:nowrap}.fab-right-bottom .fab-label,.fab-right-center .fab-label,.fab-right-top .fab-label{margin-right:8px;right:100%}.fab-left-bottom .fab-label,.fab-left-center .fab-label,.fab-left-top .fab-label{left:100%;margin-left:8px}.navbars~* .fab-center-top,.navbars~* .fab-left-top,.navbars~* .fab-right-top,.navbars~.fab-center-top,.navbars~.fab-left-top,.navbars~.fab-right-top,.navbar~* .fab-center-top,.navbar~* .fab-left-top,.navbar~* .fab-right-top,.navbar~.fab-center-top,.navbar~.fab-left-top,.navbar~.fab-right-top{margin-top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .toolbar-top-ios~* .fab-center-top,.ios .toolbar-top-ios~* .fab-left-top,.ios .toolbar-top-ios~* .fab-right-top,.ios .toolbar-top-ios~.fab-center-top,.ios .toolbar-top-ios~.fab-left-top,.ios .toolbar-top-ios~.fab-right-top,.md .toolbar-top-md~* .fab-center-top,.md .toolbar-top-md~* .fab-left-top,.md .toolbar-top-md~* .fab-right-top,.md .toolbar-top-md~.fab-center-top,.md .toolbar-top-md~.fab-left-top,.md .toolbar-top-md~.fab-right-top,.toolbar-top~* .fab-center-top,.toolbar-top~* .fab-left-top,.toolbar-top~* .fab-right-top,.toolbar-top~.fab-center-top,.toolbar-top~.fab-left-top,.toolbar-top~.fab-right-top{margin-top:var(--f7-toolbar-height)}.ios .toolbar-bottom-ios~* .fab-center-bottom,.ios .toolbar-bottom-ios~* .fab-left-bottom,.ios .toolbar-bottom-ios~* .fab-right-bottom,.ios .toolbar-bottom-ios~.fab-center-bottom,.ios .toolbar-bottom-ios~.fab-left-bottom,.ios .toolbar-bottom-ios~.fab-right-bottom,.md .toolbar-bottom-md~* .fab-center-bottom,.md .toolbar-bottom-md~* .fab-left-bottom,.md .toolbar-bottom-md~* .fab-right-bottom,.md .toolbar-bottom-md~.fab-center-bottom,.md .toolbar-bottom-md~.fab-left-bottom,.md .toolbar-bottom-md~.fab-right-bottom,.toolbar-bottom~* .fab-center-bottom,.toolbar-bottom~* .fab-left-bottom,.toolbar-bottom~* .fab-right-bottom,.toolbar-bottom~.fab-center-bottom,.toolbar-bottom~.fab-left-bottom,.toolbar-bottom~.fab-right-bottom{margin-bottom:var(--f7-toolbar-height)}.ios .tabbar-icons.toolbar-bottom-ios~* .fab-center-bottom,.ios .tabbar-icons.toolbar-bottom-ios~* .fab-left-bottom,.ios .tabbar-icons.toolbar-bottom-ios~* .fab-right-bottom,.ios .tabbar-icons.toolbar-bottom-ios~.fab-center-bottom,.ios .tabbar-icons.toolbar-bottom-ios~.fab-left-bottom,.ios .tabbar-icons.toolbar-bottom-ios~.fab-right-bottom,.md .tabbar-icons.toolbar-bottom-md~* .fab-center-bottom,.md .tabbar-icons.toolbar-bottom-md~* .fab-left-bottom,.md .tabbar-icons.toolbar-bottom-md~* .fab-right-bottom,.md .tabbar-icons.toolbar-bottom-md~.fab-center-bottom,.md .tabbar-icons.toolbar-bottom-md~.fab-left-bottom,.md .tabbar-icons.toolbar-bottom-md~.fab-right-bottom,.tabbar-icons.toolbar-bottom~* .fab-center-bottom,.tabbar-icons.toolbar-bottom~* .fab-left-bottom,.tabbar-icons.toolbar-bottom~* .fab-right-bottom,.tabbar-icons.toolbar-bottom~.fab-center-bottom,.tabbar-icons.toolbar-bottom~.fab-left-bottom,.tabbar-icons.toolbar-bottom~.fab-right-bottom{margin-bottom:var(--f7-tabbar-icons-height)}.ios .tabbar-icons.toolbar-top-ios~* .fab-center-bottom,.ios .tabbar-icons.toolbar-top-ios~* .fab-left-bottom,.ios .tabbar-icons.toolbar-top-ios~* .fab-right-bottom,.ios .tabbar-icons.toolbar-top-ios~.fab-center-bottom,.ios .tabbar-icons.toolbar-top-ios~.fab-left-bottom,.ios .tabbar-icons.toolbar-top-ios~.fab-right-bottom,.md .tabbar-icons.toolbar-top-md~* .fab-center-bottom,.md .tabbar-icons.toolbar-top-md~* .fab-left-bottom,.md .tabbar-icons.toolbar-top-md~* .fab-right-bottom,.md .tabbar-icons.toolbar-top-md~.fab-center-bottom,.md .tabbar-icons.toolbar-top-md~.fab-left-bottom,.md .tabbar-icons.toolbar-top-md~.fab-right-bottom,.tabbar-icons.toolbar-top~* .fab-center-bottom,.tabbar-icons.toolbar-top~* .fab-left-bottom,.tabbar-icons.toolbar-top~* .fab-right-bottom,.tabbar-icons.toolbar-top~.fab-center-bottom,.tabbar-icons.toolbar-top~.fab-left-bottom,.tabbar-icons.toolbar-top~.fab-right-bottom{margin-top:var(--f7-tabbar-icons-height)}.messagebar~* .fab-center-bottom,.messagebar~* .fab-left-bottom,.messagebar~* .fab-right-bottom,.messagebar~.fab-center-bottom,.messagebar~.fab-left-bottom,.messagebar~.fab-right-bottom{margin-bottom:var(--f7-messagebar-height)}.ios .navbar+.toolbar-top-ios~* .fab-center-top,.ios .navbar+.toolbar-top-ios~* .fab-left-top,.ios .navbar+.toolbar-top-ios~* .fab-right-top,.ios .navbar+.toolbar-top-ios~.fab-center-top,.ios .navbar+.toolbar-top-ios~.fab-left-top,.ios .navbar+.toolbar-top-ios~.fab-right-top,.md .navbar+.toolbar-top-ios~* .fab-center-top,.md .navbar+.toolbar-top-ios~* .fab-left-top,.md .navbar+.toolbar-top-ios~* .fab-right-top,.md .navbar+.toolbar-top-ios~.fab-center-top,.md .navbar+.toolbar-top-ios~.fab-left-top,.md .navbar+.toolbar-top-ios~.fab-right-top,.navbar+.toolbar-top~* .fab-center-top,.navbar+.toolbar-top~* .fab-left-top,.navbar+.toolbar-top~* .fab-right-top,.navbar+.toolbar-top~.fab-center-top,.navbar+.toolbar-top~.fab-left-top,.navbar+.toolbar-top~.fab-right-top{margin-top:calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbar+.toolbar-top-ios.tabbar-icons~* .fab-center-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~* .fab-left-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~* .fab-right-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~.fab-center-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~.fab-left-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~.fab-right-top,.md .navbar+.toolbar-top-ios.tabbar-icons~* .fab-center-top,.md .navbar+.toolbar-top-ios.tabbar-icons~* .fab-left-top,.md .navbar+.toolbar-top-ios.tabbar-icons~* .fab-right-top,.md .navbar+.toolbar-top-ios.tabbar-icons~.fab-center-top,.md .navbar+.toolbar-top-ios.tabbar-icons~.fab-left-top,.md .navbar+.toolbar-top-ios.tabbar-icons~.fab-right-top,.navbar+.toolbar-top.tabbar-icons~* .fab-center-top,.navbar+.toolbar-top.tabbar-icons~* .fab-left-top,.navbar+.toolbar-top.tabbar-icons~* .fab-right-top,.navbar+.toolbar-top.tabbar-icons~.fab-center-top,.navbar+.toolbar-top.tabbar-icons~.fab-left-top,.navbar+.toolbar-top.tabbar-icons~.fab-right-top{margin-top:calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars+.toolbar-top-ios~* .fab-center-top,.ios .navbars+.toolbar-top-ios~* .fab-left-top,.ios .navbars+.toolbar-top-ios~* .fab-right-top,.ios .navbars+.toolbar-top-ios~.fab-center-top,.ios .navbars+.toolbar-top-ios~.fab-left-top,.ios .navbars+.toolbar-top-ios~.fab-right-top,.navbars+.toolbar-top~* .fab-center-top,.navbars+.toolbar-top~* .fab-left-top,.navbars+.toolbar-top~* .fab-right-top,.navbars+.toolbar-top~.fab-center-top,.navbars+.toolbar-top~.fab-left-top,.navbars+.toolbar-top~.fab-right-top{margin-top:calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars+.toolbar-top-ios.tabbar-icons~* .fab-center-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~* .fab-left-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~* .fab-right-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~.fab-center-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~.fab-left-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~.fab-right-top,.navbars+.toolbar-top.tabbar-icons~* .fab-center-top,.navbars+.toolbar-top.tabbar-icons~* .fab-left-top,.navbars+.toolbar-top.tabbar-icons~* .fab-right-top,.navbars+.toolbar-top.tabbar-icons~.fab-center-top,.navbars+.toolbar-top.tabbar-icons~.fab-left-top,.navbars+.toolbar-top.tabbar-icons~.fab-right-top{margin-top:calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .fab-buttons a.active-state,.ios .fab>a.active-state{background-color:var(--f7-fab-pressed-bg-color,var(--f7-theme-color-shade));transition-duration:0ms}.md .fab-buttons a.active-state,.md .fab>a.active-state{background-color:var(--f7-fab-pressed-bg-color,var(--f7-fab-bg-color,var(--f7-theme-color)))}:root{--f7-searchbar-input-border-width:0px;--f7-searchbar-input-border-color:transparent}.ios{--f7-searchbar-height:44px;--f7-searchbar-inner-padding-left:8px;--f7-searchbar-inner-padding-right:8px;--f7-searchbar-input-font-size:17px;--f7-searchbar-input-border-radius:8px;--f7-searchbar-input-height:32px;--f7-searchbar-inline-input-height:32px;--f7-searchbar-input-padding-horizontal:28px;--f7-searchbar-backdrop-bg-color:rgba(0,0,0,0.4);--f7-searchbar-in-page-content-margin:0px;--f7-searchbar-in-page-content-box-shadow:none;--f7-searchbar-in-page-content-border-radius:0;--f7-searchbar-in-page-content-input-border-radius:0;--f7-searchbar-placeholder-color:rgba(0,0,0,0.4);--f7-searchbar-input-text-color:#000;--f7-searchbar-search-icon-color:rgba(0,0,0,0.4);--f7-searchbar-input-bg-color:#e4e4e4}.ios .dark,.ios.dark{--f7-searchbar-placeholder-color:rgba(255,255,255,0.4);--f7-searchbar-input-text-color:#fff;--f7-searchbar-search-icon-color:rgba(255,255,255,0.4);--f7-searchbar-input-bg-color:#2a2a2a}.md{--f7-searchbar-border-color:transparent;--f7-searchbar-height:48px;--f7-searchbar-inner-padding-left:8px;--f7-searchbar-inner-padding-right:8px;--f7-searchbar-input-font-size:16px;--f7-searchbar-input-border-radius:24px;--f7-searchbar-input-height:48px;--f7-searchbar-inline-input-height:48px;--f7-searchbar-inline-input-border-radius:24px;--f7-searchbar-input-padding-horizontal:16px;--f7-searchbar-inline-input-padding-horizontal:16px;--f7-searchbar-backdrop-bg-color:rgba(0,0,0,0.25);--f7-searchbar-in-page-content-margin:16px 0;--f7-searchbar-in-page-content-box-shadow:none;--f7-searchbar-in-page-content-border-radius:24px;--f7-searchbar-in-page-content-input-border-radius:24px;--f7-searchbar-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-searchbar-link-color:var(--f7-md-on-surface);--f7-searchbar-search-icon-color:var(--f7-md-on-surface);--f7-searchbar-input-clear-button-color:var(--f7-md-on-surface);--f7-searchbar-placeholder-color:var(--f7-md-on-surface-variant);--f7-searchbar-input-bg-color:var(--f7-md-secondary-container);--f7-searchbar-input-text-color:var(--f7-md-on-surface)}.searchbar{--f7-link-highlight-color:var(--f7-link-highlight-black);background-color:var(--f7-searchbar-bg-color,var(--f7-bars-bg-color));height:var(--f7-searchbar-height);position:relative;width:100%;z-index:200}.dark .searchbar{--f7-link-highlight-color:var(--f7-link-highlight-white)}.searchbar input[type=search]::-webkit-search-decoration{display:none}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .searchbar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-searchbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.ios .subnavbar .searchbar{-webkit-backdrop-filter:none;backdrop-filter:none;background-color:initial}.ios .subnavbar .searchbar:after,.searchbar.no-outline:after{display:none!important}.searchbar:after{background-color:var(--f7-searchbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.page>.searchbar:not(.searchbar-inline){z-index:600}.searchbar input[type=search],.searchbar input[type=text]{-webkit-appearance:none;appearance:none;background-color:var(--f7-searchbar-input-bg-color);border:var(--f7-searchbar-input-border-width) solid var(--f7-searchbar-input-border-color);border-radius:var(--f7-searchbar-input-border-radius);box-sizing:border-box;color:var(--f7-searchbar-input-text-color);display:block;font-family:inherit;font-size:var(--f7-searchbar-input-font-size);font-weight:400;height:100%;padding:0;padding-left:calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-right, 0px));padding-right:calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px));position:relative;width:100%}.searchbar input[type=search]::placeholder,.searchbar input[type=text]::placeholder{color:var(--f7-searchbar-placeholder-color);opacity:1}.searchbar input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}.searchbar .searchbar-input-wrap{flex-shrink:1;height:var(--f7-searchbar-input-height);position:relative;width:100%}.searchbar a{color:var(--f7-searchbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.page>.searchbar:not(.searchbar-inline){left:0;position:absolute;top:0}.page-content .searchbar:not(.searchbar-inline){border-radius:var(--f7-searchbar-in-page-content-border-radius);box-shadow:var(--f7-searchbar-in-page-content-box-shadow);margin:var(--f7-searchbar-in-page-content-margin);width:auto}.page-content .searchbar:not(.searchbar-inline) .searchbar-inner,.page-content .searchbar:not(.searchbar-inline) input[type=search],.page-content .searchbar:not(.searchbar-inline) input[type=text]{border-radius:var(--f7-searchbar-in-page-content-input-border-radius,var(--f7-searchbar-input-border-radius))}.searchbar .input-clear-button{color:var(--f7-searchbar-input-clear-button-color,var(--f7-input-clear-button-color))}.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-searchbar-height);pointer-events:none;position:absolute;transition-duration:.3s}.navbar .searchbar-expandable{background:transparent}.navbar .searchbar-expandable:after{display:none!important}.navbar .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbar .searchbar.searchbar-expandable .searchbar-inner{height:calc(100% - var(--f7-safe-area-top));top:var(--f7-safe-area-top)}.toolbar .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-toolbar-height)}.subnavbar .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-subnavbar-height)}.tabbar-icons .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-tabbar-icons-height)}.searchbar-inner{align-items:center;box-sizing:border-box;display:flex;height:100%;left:0;padding:0 calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left));position:absolute;top:0;width:100%}.searchbar-disable-button{-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;margin:0;opacity:0;outline:0;padding:0;pointer-events:none;width:auto}.searchbar-icon{background-position:50%;background-repeat:no-repeat;pointer-events:none}.searchbar-icon:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-searchbar-search-icon-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.searchbar-backdrop{background:var(--f7-searchbar-backdrop-bg-color);height:100%;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transform:translateZ(0);transition-duration:.3s;width:100%;z-index:100}.searchbar-backdrop.searchbar-backdrop-in{opacity:1;pointer-events:auto}.page-content>.searchbar-backdrop{position:fixed}.searchbar-not-found{display:none}.hidden-by-searchbar,.list .hidden-by-searchbar,.list li.hidden-by-searchbar,.list.li.hidden-by-searchbar{display:none!important}.navbar.with-searchbar-expandable-enabled,.navbar.with-searchbar-expandable-enabled-no-transition{--f7-navbar-large-collapse-progress:1}.navbar.with-searchbar-expandable-closing .navbar-bg,.navbar.with-searchbar-expandable-closing .title-large,.navbar.with-searchbar-expandable-closing .title-large-text,.navbar.with-searchbar-expandable-enabled .navbar-bg,.navbar.with-searchbar-expandable-enabled .title-large,.navbar.with-searchbar-expandable-enabled .title-large-text{transition-duration:.3s}.page-content.with-searchbar-expandable-enabled{height:calc(100% + var(--f7-navbar-large-title-height));transform:translateY(calc(var(--f7-navbar-large-title-height)*-1));transition-duration:.3s;transition-property:transform}.page-content.with-searchbar-expandable-closing{transition-duration:.3s}.navbars~.page:not(.no-navbar)>.searchbar,.navbar~.page:not(.no-navbar)>.searchbar,.page>.navbar~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbars~.page-with-navbar-large:not(.no-navbar) .searchbar,.navbar~.page-with-navbar-large:not(.no-navbar) .searchbar,.page-with-navbar-large .navbar~* .searchbar,.page-with-navbar-large .navbar~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.navbars~.page-with-navbar-large:not(.no-navbar) .page-content .searchbar,.page-with-navbar-large .page-content .searchbar{top:0;transform:none}.searchbar~*{--f7-page-searchbar-offset:var(--f7-searchbar-height)}.ios .page>.toolbar-top-ios~.searchbar,.md .page>.toolbar-top-md~.searchbar,.page>.toolbar-top~.searchbar{top:var(--f7-toolbar-height)}.ios .page>.tabbar-icons.toolbar-top-ios~.searchbar,.md .page>.tabbar-icons.toolbar-top-md~.searchbar,.page>.tabbar-icons.toolbar-top~.searchbar{top:var(--f7-tabbar-icons-height)}.ios .page>.navbar~.toolbar-top-ios~.searchbar,.md .page>.navbar~.toolbar-top-md~.searchbar,.page>.navbar~.toolbar-top~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top))}.ios .page>.navbar~.tabbar-icons.toolbar-top-ios~.searchbar,.md .page>.navbar~.tabbar-icons.toolbar-top-md~.searchbar,.page>.navbar~.tabbar-icons.toolbar-top~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top))}.searchbar.searchbar-inline{background-color:initial;background-image:none;height:auto;width:auto}.searchbar.searchbar-inline:after,.searchbar.searchbar-inline:before{display:none!important}.searchbar.searchbar-inline .searchbar-input-wrap{height:var(--f7-searchbar-inline-input-height,var(--f7-searchbar-input-height))}.searchbar.searchbar-inline .searchbar-inner{height:auto;padding:0;position:static;width:auto}.searchbar.searchbar-inline input[type=search],.searchbar.searchbar-inline input[type=text]{border-radius:var(--f7-searchbar-inline-input-border-radius,var(--f7-searchbar-input-border-radius));font-size:var(--f7-searchbar-inline-input-font-size,var(--f7-searchbar-input-font-size));padding-left:calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-right, 0px));padding-right:calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-left, 0px))}.ios .searchbar input[type=search],.ios .searchbar input[type=text]{z-index:30}.ios .searchbar .input-clear-button{left:7px;z-index:40}.ios .searchbar-icon{height:13px;margin-top:-6px;position:absolute;right:8px;top:50%;width:13px;z-index:40}.ios .searchbar-icon:after{content:"search_ios";line-height:13px}.ios .searchbar-disable-button{color:var(--f7-searchbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)));display:none;flex-shrink:0;font-size:17px;transform:translateZ(0);transition-duration:.3s}.ios .searchbar-disable-button.active-state{opacity:.3!important;transition-duration:0ms}.ios .searchbar-enabled .searchbar-disable-button{margin-right:8px;opacity:1;pointer-events:auto}.ios .searchbar:not(.searchbar-enabled) .searchbar-disable-button{transition-duration:.3s!important}.ios .searchbar-expandable{bottom:0;height:0;opacity:1;overflow:hidden;right:0;transform:translateZ(0);width:100%}.ios .searchbar-expandable .searchbar-disable-button{display:block;margin-right:8px;opacity:1}.ios .searchbar-expandable .searchbar-inner{height:var(--f7-searchbar-expandable-size)}.ios .navbar.with-searchbar-expandable-closing .navbar-bg,.ios .navbar.with-searchbar-expandable-enabled .navbar-bg{transition-property:transform,opacity}.ios .navbar.with-searchbar-expandable-closing .left,.ios .navbar.with-searchbar-expandable-closing .navbar-bg,.ios .navbar.with-searchbar-expandable-closing .right,.ios .navbar.with-searchbar-expandable-closing .title,.ios .navbar.with-searchbar-expandable-enabled .left,.ios .navbar.with-searchbar-expandable-enabled .navbar-bg,.ios .navbar.with-searchbar-expandable-enabled .right,.ios .navbar.with-searchbar-expandable-enabled .title{transition-duration:.3s}.ios .navbar.with-searchbar-expandable-enabled .left,.ios .navbar.with-searchbar-expandable-enabled .right,.ios .navbar.with-searchbar-expandable-enabled .title,.ios .navbar.with-searchbar-expandable-enabled-no-transition .left,.ios .navbar.with-searchbar-expandable-enabled-no-transition .right,.ios .navbar.with-searchbar-expandable-enabled-no-transition .title{opacity:0!important;transform:translateY(calc(var(--f7-navbar-height)*-1))}.ios .searchbar-expandable.searchbar-enabled{height:var(--f7-searchbar-expandable-size);opacity:1;pointer-events:auto}.md .searchbar-disable-button,.md .searchbar-icon{position:absolute;top:50%;transition-duration:.3s}.md .searchbar-icon{align-items:center;display:flex;height:48px;justify-content:center;left:0;right:var(--f7-safe-area-right);top:0;width:48px}.md .searchbar-icon:after{content:"search_md";height:auto;line-height:1.2;width:auto}.md .searchbar-disable-button{color:var(--f7-searchbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)));display:block;font-size:0!important;height:48px;margin-top:-24px;right:calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right));transform:rotate(-90deg) scale(.5);width:48px}.md .searchbar-disable-button:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";content:"arrow_right_md";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;line-height:48px;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-disable-button{opacity:1;pointer-events:auto;transform:rotate(0deg) scale(1)}.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-icon{opacity:0;transform:rotate(90deg) scale(.5)}.md .searchbar{--f7-searchbar-input-extra-padding-left:34px}.md .searchbar .input-clear-button{height:48px;left:0;margin-top:-24px;width:48px}.md .searchbar .input-clear-button:after{content:"delete_round_md";line-height:48px;opacity:1}.md .searchbar .input-clear-button:before{display:none}.md .searchbar-inline{--f7-searchbar-input-extra-padding-left:32px}.md .page>.searchbar,.md .searchbar-expandable,.md .subnavbar .searchbar{--f7-searchbar-input-extra-padding-left:34px}.md .page>.searchbar .searchbar-disable-button,.md .searchbar-expandable .searchbar-disable-button,.md .subnavbar .searchbar .searchbar-disable-button{right:calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right))}.md .page>.searchbar .searchbar-icon,.md .searchbar-expandable .searchbar-icon,.md .subnavbar .searchbar .searchbar-icon{right:var(--f7-safe-area-right)}.md .searchbar-expandable{--f7-searchbar-inner-padding-left:4px;--f7-searchbar-inner-padding-right:4px;background-color:var(--f7-searchbar-input-bg-color);border-radius:calc(var(--f7-searchbar-expandable-size));bottom:0;height:var(--f7-searchbar-expandable-size);margin-right:calc(var(--f7-searchbar-expandable-size)*-1);margin-top:calc(var(--f7-searchbar-expandable-size)*-1/2);opacity:0;right:100%;transform:translateZ(0);width:calc(var(--f7-searchbar-expandable-size))}.md .searchbar-expandable.searchbar-enabled{border-radius:0;margin-right:0;margin-top:0;opacity:1;pointer-events:auto;right:0;width:100%}:root{--f7-message-text-header-opacity:0.65;--f7-message-text-header-font-size:12px;--f7-message-text-footer-opacity:0.65;--f7-message-text-footer-font-size:12px;--f7-message-bubble-line-height:1.2;--f7-message-header-font-size:12px;--f7-message-footer-font-size:11px;--f7-message-name-font-size:12px;--f7-message-name-font-weight:inherit;--f7-message-avatar-border-radius:50%;--f7-messages-title-font-weight:inherit;--f7-message-typing-indicator-bg-color:#000}:root .dark,:root.dark{--f7-message-typing-indicator-bg-color:#fff}.ios{--f7-message-text-header-text-color:inherit;--f7-message-text-footer-text-color:inherit;--f7-messages-title-font-size:11px;--f7-message-avatar-size:29px;--f7-message-margin:10px;--f7-message-bubble-min-height:32px;--f7-message-bubble-font-size:17px;--f7-message-bubble-border-radius:16px;--f7-message-bubble-padding-vertical:6px;--f7-message-bubble-padding-horizontal:16px;--f7-message-typing-indicator-opacity:0.35;--f7-message-sent-text-color:#fff;--f7-messages-content-bg-color:#fff;--f7-message-received-text-color:#000;--f7-message-received-bg-color:#e5e5ea;--f7-messages-title-text-color:rgba(0,0,0,0.45);--f7-message-header-text-color:rgba(0,0,0,0.45);--f7-message-footer-text-color:rgba(0,0,0,0.45);--f7-message-name-text-color:rgba(0,0,0,0.45)}.ios .dark,.ios.dark{--f7-message-received-bg-color:#252525;--f7-message-received-text-color:#fff;--f7-messages-content-bg-color:transparent;--f7-messages-title-text-color:rgba(255,255,255,0.54);--f7-message-header-text-color:rgba(255,255,255,0.54);--f7-message-name-text-color:rgba(255,255,255,0.54);--f7-message-footer-text-color:rgba(255,255,255,0.54)}.md{--f7-messages-content-bg-color:transparent;--f7-messages-title-font-size:12px;--f7-message-avatar-size:32px;--f7-message-margin:16px;--f7-message-bubble-min-height:40px;--f7-message-bubble-font-size:16px;--f7-message-bubble-border-radius:20px;--f7-message-bubble-padding-vertical:10px;--f7-message-bubble-padding-horizontal:16px;--f7-message-typing-indicator-opacity:0.6}.md,.md .dark,.md [class*=color-]{--f7-message-sent-bg-color:var(--f7-md-primary);--f7-message-sent-text-color:var(--f7-md-on-primary);--f7-message-received-bg-color:var(--f7-md-surface-variant);--f7-message-received-text-color:var(--f7-md-on-surface);--f7-message-text-header-text-color:var(--f7-md-on-surface-variant);--f7-message-text-footer-text-color:var(--f7-md-on-surface-variant);--f7-messages-title-text-color:var(--f7-md-on-surface-variant);--f7-message-header-text-color:var(--f7-md-on-surface-variant);--f7-message-footer-text-color:var(--f7-md-on-surface-variant);--f7-message-name-text-color:var(--f7-md-on-surface-variant)}.messages,.messages-content{background:var(--f7-messages-content-bg-color)}.messages{display:flex;flex-direction:column;min-height:100%;position:relative;z-index:1}.message,.messages-title{margin-top:var(--f7-message-margin)}.message:last-child,.messages-title:last-child{margin-bottom:var(--f7-message-margin)}.messages-title{color:var(--f7-messages-title-text-color);font-size:var(--f7-messages-title-font-size);font-weight:var(--f7-messages-title-font-weight);line-height:1;text-align:center;width:100%}.message{align-items:flex-end;box-sizing:border-box;display:flex;max-width:70%;position:relative;transform:translateZ(0);z-index:1}.message-avatar{align-self:flex-end;background-size:cover;border-radius:var(--f7-message-avatar-border-radius);flex-shrink:0;height:var(--f7-message-avatar-size);position:relative;width:var(--f7-message-avatar-size)}.message-content{display:flex;flex-direction:column;position:relative}.message-footer,.message-header,.message-name{line-height:1}.message-header{color:var(--f7-message-header-text-color);font-size:var(--f7-message-header-font-size)}.message-footer{color:var(--f7-message-footer-text-color);font-size:var(--f7-message-footer-font-size);margin-bottom:-1em}.message-name{color:var(--f7-message-name-text-color);font-size:var(--f7-message-name-font-size);font-weight:var(--f7-message-name-font-weight)}.message-bubble{border-radius:var(--f7-message-bubble-border-radius);box-sizing:border-box;display:flex;flex-direction:column;font-size:var(--f7-message-bubble-font-size);line-height:var(--f7-message-bubble-line-height);min-height:var(--f7-message-bubble-min-height);padding:var(--f7-message-bubble-padding-vertical) var(--f7-message-bubble-padding-horizontal);position:relative;word-break:break-word}.message-image img{display:block;height:auto;max-width:100%;width:auto}.message-text-footer,.message-text-header{line-height:1}.message-text-header{color:var(--f7-message-text-header-text-color);font-size:var(--f7-message-text-header-font-size);opacity:var(--f7-message-text-header-opacity)}.message-text-footer{color:var(--f7-message-text-footer-text-color);font-size:var(--f7-message-text-footer-font-size);opacity:var(--f7-message-text-footer-opacity)}.message-text{text-align:left}.message-sent{align-self:flex-start;flex-direction:row;text-align:right}.message-sent .message-bubble{background:var(--f7-message-sent-bg-color,var(--f7-theme-color));color:var(--f7-message-sent-text-color)}.message-sent .message-content{align-items:flex-start}.message-received{align-self:flex-end;flex-direction:row-reverse}.message-received .message-bubble{background:var(--f7-message-received-bg-color);color:var(--f7-message-received-text-color)}.message-received .message-content{align-items:flex-end}.message:not(.message-last) .message-avatar{opacity:0}.message.message-same-footer .message-footer,.message.message-same-header .message-header,.message.message-same-name .message-name,.message:not(.message-first) .message-name{display:none}.message-appear-from-bottom{animation:message-appear-from-bottom .3s}.message-appear-from-top{animation:message-appear-from-top .3s}.message-typing-indicator{display:inline-block;font-size:0;vertical-align:middle}.message-typing-indicator>div{background:var(--f7-message-typing-indicator-bg-color);border-radius:50%;display:inline-block;opacity:var(--f7-message-typing-indicator-opacity);position:relative;vertical-align:middle}@keyframes message-appear-from-bottom{0%{transform:translate3d(0,100%,0)}to{transform:translateZ(0)}}@keyframes message-appear-from-top{0%{transform:translate3d(0,-100%,0)}to{transform:translateZ(0)}}.ios .message-footer b,.ios .message-header b,.ios .message-name b,.ios .messages-title b{font-weight:600}.ios .message-header,.ios .message-name{margin-bottom:3px}.ios .message-footer{margin-top:3px}.ios .message-bubble{min-width:48px}.ios .message-image{margin:var(--f7-message-bubble-padding-vertical) calc(var(--f7-message-bubble-padding-horizontal)*-1)}.ios .message-image:first-child{margin-top:calc(var(--f7-message-bubble-padding-vertical)*-1)}.ios .message-image:first-child img{border-top-left-radius:var(--f7-message-bubble-border-radius);border-top-right-radius:var(--f7-message-bubble-border-radius)}.ios .message-image:last-child{margin-bottom:calc(var(--f7-message-bubble-padding-vertical)*-1)}.ios .message-image:last-child img{border-bottom-left-radius:var(--f7-message-bubble-border-radius);border-bottom-right-radius:var(--f7-message-bubble-border-radius)}.ios .message-text-header{margin-bottom:3px}.ios .message-text-footer{margin-top:3px}.ios .message-received{margin-left:calc(10px + var(--f7-safe-area-left))}.ios .message-received .message-footer,.ios .message-received .message-header,.ios .message-received .message-name{margin-left:var(--f7-message-bubble-padding-horizontal)}.ios .message-received .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 42% 46% 56%;padding-left:calc(var(--f7-message-bubble-padding-horizontal) + 6px)}.ios .message-received .message-image{margin-left:calc((var(--f7-message-bubble-padding-horizontal) + 6px)*-1)}.ios .message-received.message-tail .message-bubble{border-radius:var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0}.ios .message-received.message-tail:not(.message-typing) .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 42% 46% 56%}.ios .message-received.message-tail:not(.message-typing) .message-bubble .message-image:last-child img{border-bottom-left-radius:0}.ios .message-sent{margin-right:calc(10px + var(--f7-safe-area-right))}.ios .message-sent .message-footer,.ios .message-sent .message-header,.ios .message-sent .message-name{margin-right:var(--f7-message-bubble-padding-horizontal)}.ios .message-sent .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 56% 46% 42%;padding-right:calc(var(--f7-message-bubble-padding-horizontal) + 6px)}.ios .message-sent .message-image{margin-right:calc((var(--f7-message-bubble-padding-horizontal) + 6px)*-1)}.ios .message-sent.message-tail .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 56% 46% 42%;border-radius:var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0 var(--f7-message-bubble-border-radius)}.ios .message-sent.message-tail .message-bubble .message-image:last-child img{border-bottom-right-radius:0}.ios .message+.message:not(.message-first){margin-top:1px}.ios .message-received.message-typing .message-content:after,.ios .message-received.message-typing .message-content:before{background:var(--f7-message-received-bg-color);border-radius:50%;content:"";position:absolute}.ios .message-received.message-typing .message-content:after{bottom:0;height:11px;left:4px;width:11px}.ios .message-received.message-typing .message-content:before{bottom:-4px;height:6px;left:-1px;width:6px}.ios .message-typing-indicator>div{height:9px;width:9px}.ios .message-typing-indicator>div+div{margin-right:4px}.ios .message-typing-indicator>div:first-child{animation:ios-message-typing-indicator .9s infinite}.ios .message-typing-indicator>div:nth-child(2){animation:ios-message-typing-indicator .9s .15s infinite}.ios .message-typing-indicator>div:nth-child(3){animation:ios-message-typing-indicator .9s .3s infinite}@keyframes ios-message-typing-indicator{0%{opacity:.35}25%{opacity:.2}50%{opacity:.2}}.md .message-footer b,.md .message-header b,.md .message-name b,.md .messages-title b{font-weight:500}.md .message-header,.md .message-name{margin-bottom:2px}.md .message-footer{margin-top:2px}.md .message-text-header{margin-bottom:4px}.md .message-text-footer{margin-top:4px}.md .message-image{margin:calc(var(--f7-message-bubble-padding-vertical)*-1) calc(var(--f7-message-bubble-padding-horizontal)*-1)}.md .message-image,.md .message-image img{border-radius:var(--f7-message-bubble-border-radius)}.md .message-received{margin-left:calc(8px + var(--f7-safe-area-left))}.md .message-received .message-footer,.md .message-received .message-header,.md .message-received .message-name{margin-left:16px}.md .message-received.message-first:not(.message-last) .message-bubble,.md .message-received.message-first:not(.message-last) .message-image,.md .message-received.message-first:not(.message-last) .message-image img{border-bottom-left-radius:4px}.md .message-received.message-last:not(.message-first) .message-bubble,.md .message-received.message-last:not(.message-first) .message-image,.md .message-received.message-last:not(.message-first) .message-image img{border-top-left-radius:4px}.md .message-received:not(.message-last):not(.message-first) .message-bubble,.md .message-received:not(.message-last):not(.message-first) .message-image,.md .message-received:not(.message-last):not(.message-first) .message-image img{border-bottom-left-radius:4px;border-top-left-radius:4px}.md .message-received .message-avatar+.message-content{margin-left:8px}.md .message-sent{margin-right:calc(8px + var(--f7-safe-area-right))}.md .message-sent .message-footer,.md .message-sent .message-header,.md .message-sent .message-name{margin-right:16px}.md .message-sent.message-first:not(.message-last) .message-bubble,.md .message-sent.message-first:not(.message-last) .message-image,.md .message-sent.message-first:not(.message-last) .message-image img{border-bottom-right-radius:4px}.md .message-sent.message-last:not(.message-first) .message-bubble,.md .message-sent.message-last:not(.message-first) .message-image,.md .message-sent.message-last:not(.message-first) .message-image img{border-top-right-radius:4px}.md .message-sent:not(.message-last):not(.message-first) .message-bubble,.md .message-sent:not(.message-last):not(.message-first) .message-image,.md .message-sent:not(.message-last):not(.message-first) .message-image img{border-bottom-right-radius:4px;border-top-right-radius:4px}.md .message-sent .message-avatar+.message-content{margin-right:var(--f7-message-bubble-padding-horizontal)}.md .message+.message:not(.message-first){margin-top:2px}.md .message-typing-indicator>div{height:6px;width:6px}.md .message-typing-indicator>div+div{margin-right:6px}.md .message-typing-indicator>div:first-child{animation:md-message-typing-indicator .9s infinite}.md .message-typing-indicator>div:nth-child(2){animation:md-message-typing-indicator .9s .15s infinite}.md .message-typing-indicator>div:nth-child(3){animation:md-message-typing-indicator .9s .3s infinite}@keyframes md-message-typing-indicator{0%{transform:translateY(0)}25%{transform:translateY(-5px)}50%{transform:translateY(0)}}:root{--f7-messagebar-attachments-height:155px;--f7-messagebar-sheet-height:252px;--f7-messagebar-sheet-landscape-height:192px}.ios{--f7-messagebar-height:44px;--f7-messagebar-font-size:17px;--f7-messagebar-textarea-bg-color:transparent;--f7-messagebar-border-color:transparent;--f7-messagebar-textarea-border-radius:17px;--f7-messagebar-textarea-padding:6px 16px;--f7-messagebar-textarea-height:34px;--f7-messagebar-textarea-font-size:17px;--f7-messagebar-textarea-line-height:20px;--f7-messagebar-sheet-bg-color:#d1d5da;--f7-messagebar-sheet-border-color:transparent;--f7-messagebar-attachment-border-radius:12px;--f7-messagebar-attachment-height:155px;--f7-messagebar-attachment-landscape-height:120px;--f7-messagebar-textarea-placeholder-color:rgba(0,0,0,0.4);--f7-messagebar-textarea-text-color:#000;--f7-messagebar-textarea-border:1px solid #c8c8cd;--f7-messagebar-attachments-border-color:#c8c8cd;--f7-messagebar-bg-color:#fff;--f7-messagebar-bg-color-rgb:255,255,255}.ios .dark,.ios.dark{--f7-messagebar-textarea-placeholder-color:rgba(255,255,255,0.4);--f7-messagebar-textarea-text-color:#fff;--f7-messagebar-textarea-border:1px solid var(--f7-bars-border-color);--f7-messagebar-attachments-border-color:var(--f7-bars-border-color);--f7-messagebar-bg-color:var(--f7-bars-bg-color);--f7-messagebar-bg-color-rgb:var(--f7-bars-bg-color-rgb)}.md{--f7-messagebar-height:64px;--f7-messagebar-font-size:16px;--f7-messagebar-textarea-border-radius:24px;--f7-messagebar-textarea-padding:12px 16px;--f7-messagebar-textarea-height:48px;--f7-messagebar-textarea-font-size:16px;--f7-messagebar-textarea-line-height:22px;--f7-messagebar-textarea-border:1px solid transparent;--f7-messagebar-attachment-border-radius:12px;--f7-messagebar-attachment-height:72px;--f7-messagebar-attachment-landscape-height:72px;--f7-messagebar-border-color:transparent;--f7-messagebar-attachments-border-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-messagebar-textarea-placeholder-color:var(--f7-md-on-surface-variant);--f7-messagebar-textarea-bg-color:var(--f7-md-surface-variant);--f7-messagebar-bg-color:var(--f7-md-surface);--f7-messagebar-textarea-text-color:var(--f7-md-on-surface);--f7-messagebar-sheet-bg-color:var(--f7-md-surface);--f7-messagebar-sheet-border-color:var(--f7-md-outline-variant);--f7-messagebar-link-color:var(--f7-md-on-surface)}.messagebar{background:var(--f7-messagebar-bg-color);bottom:0;font-size:var(--f7-messagebar-font-size);height:auto;min-height:var(--f7-messagebar-height);padding-bottom:var(--f7-safe-area-bottom);transform:translateZ(0)}.messagebar:before{background-color:var(--f7-messagebar-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .messagebar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-messagebar-bg-color-rgb),var(--f7-bars-translucent-opacity))}}.messagebar.no-outline:before,.messagebar.toolbar-hidden:after{display:none!important}.messagebar .toolbar-inner{bottom:auto;flex-direction:row-reverse;height:auto;padding-left:calc(var(--f7-messagebar-inner-padding-left, var(--f7-toolbar-inner-padding-left)) + var(--f7-safe-area-left));padding-right:calc(var(--f7-messagebar-inner-padding-right, var(--f7-toolbar-inner-padding-right)) + var(--f7-safe-area-right));position:relative;top:auto}.messagebar.messagebar-sheet-visible>.toolbar-inner{bottom:0}.messagebar .messagebar-area{flex-shrink:1;overflow:hidden;position:relative;width:100%}.messagebar textarea{background-color:var(--f7-messagebar-textarea-bg-color);border:var(--f7-messagebar-textarea-border);border-radius:var(--f7-messagebar-textarea-border-radius);color:var(--f7-messagebar-textarea-text-color);flex-shrink:1;font-size:var(--f7-messagebar-textarea-font-size);height:var(--f7-messagebar-textarea-height);line-height:var(--f7-messagebar-textarea-line-height);padding:var(--f7-messagebar-textarea-padding);width:100%}.messagebar textarea::placeholder{color:var(--f7-messagebar-textarea-placeholder-color)}.messagebar a.link{align-self:flex-end;color:var(--f7-messagebar-link-color,var(--f7-theme-color));flex-shrink:0}.messagebar-attachments{-webkit-overflow-scrolling:touch;box-sizing:border-box;font-size:0;overflow:auto;position:relative;white-space:nowrap;width:100%}.messagebar:not(.messagebar-attachments-visible) .messagebar-attachments{display:none}.messagebar-attachment{background-position:50%;background-repeat:no-repeat;background-size:cover;border-radius:var(--f7-messagebar-attachment-border-radius);display:inline-block;height:var(--f7-messagebar-attachment-height);position:relative;vertical-align:middle;white-space:normal}@media (orientation:landscape){.messagebar-attachment{height:var(--f7-messagebar-attachment-landscape-height)}}.messagebar-attachment img{border-radius:var(--f7-messagebar-attachment-border-radius);display:block;height:100%;width:auto}.messagebar-sheet{-webkit-overflow-scrolling:touch;align-content:flex-start;background-color:var(--f7-messagebar-sheet-bg-color);border-top:1px solid var(--f7-messagebar-sheet-border-color);display:flex;flex-direction:column;flex-wrap:wrap;height:var(--f7-messagebar-sheet-height);overflow:auto;padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right)}@media (orientation:landscape){.messagebar-sheet{height:var(--f7-messagebar-sheet-landscape-height)}}.messagebar-sheet-image{background-position:50%;background-repeat:no-repeat;background-size:cover}.messagebar-sheet-image>img{border-radius:inherit;height:100%;object-fit:cover;object-position:center;transition-duration:.2s;width:100%}.messagebar-attachment-delete{border-radius:50%;box-sizing:border-box;cursor:pointer;display:block;position:absolute}.messagebar-attachment-delete:after,.messagebar-attachment-delete:before{content:"";left:50%;position:absolute;top:50%}.messagebar-attachment-delete:after{transform:rotate(45deg)}.messagebar-attachment-delete:before{transform:rotate(-45deg)}.messagebar:not(.messagebar-sheet-visible) .messagebar-sheet{display:none}.messagebar~*{--f7-page-toolbar-bottom-offset:var(--f7-messagebar-height)}.ios .messagebar a.link.icon-only:first-child{margin-left:-8px}.ios .messagebar a.link.icon-only:last-child{margin-right:-8px}.ios .messagebar .messagebar-area+a.link:not(.icon-only),.ios .messagebar a.link:not(.icon-only)+.messagebar-area{margin-left:8px}.ios .messagebar-area{margin-bottom:5px;margin-top:5px}.ios .messagebar-attachments{border:1px solid var(--f7-messagebar-attachments-border-color);border-bottom:none;border-radius:var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;padding:5px}.ios .messagebar-attachments-visible .messagebar-attachments+textarea{border-radius:0 0 var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius)}.ios .messagebar-attachment{font-size:14px}.ios .messagebar-attachment+.messagebar-attachment{margin-right:8px}.ios .messagebar-attachment-delete{background:#7d7e80;border:2px solid #fff;box-shadow:0 0 2px rgba(0,0,0,.2);height:20px;right:5px;top:5px;width:20px}.ios .messagebar-attachment-delete:after,.ios .messagebar-attachment-delete:before{background:#fff;height:2px;margin-left:-5px;margin-top:-1px;width:10px}.ios .messagebar-sheet-image,.ios .messagebar-sheet-item{box-sizing:border-box;flex-shrink:0;height:calc((var(--f7-messagebar-sheet-height) - 2px)/2);margin-right:1px;margin-top:1px;overflow:hidden;position:relative;width:calc((var(--f7-messagebar-sheet-height) - 2px)/2)}@media (orientation:landscape){.ios .messagebar-sheet-image,.ios .messagebar-sheet-item{height:calc((var(--f7-messagebar-sheet-landscape-height) - 2px)/2);width:calc((var(--f7-messagebar-sheet-landscape-height) - 2px)/2)}}.ios .messagebar-sheet-image .icon-checkbox,.ios .messagebar-sheet-image .icon-radio,.ios .messagebar-sheet-item .icon-checkbox,.ios .messagebar-sheet-item .icon-radio{bottom:8px;position:absolute;right:8px;z-index:1}.md .messagebar{--f7-toolbar-link-height:var(--f7-messagebar-height)}.md .messagebar-attachments{border-bottom:1px solid var(--f7-messagebar-attachments-border-color);padding:16px 16px 0}.md .messagebar-attachment img{height:var(--f7-messagebar-attachment-height);object-fit:cover;object-position:center;width:var(--f7-messagebar-attachment-height)}.md .messagebar-attachment+.messagebar-attachment{margin-right:16px}.md .messagebar-attachments-visible .messagebar-attachments{background:var(--f7-messagebar-textarea-bg-color);border-radius:var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0}.md .messagebar-attachments-visible textarea{border-top-left-radius:0;border-top-right-radius:0}.md .messagebar-area{margin-bottom:8px;margin-top:8px}.md .messagebar-attachment-delete{background-color:var(--f7-md-inverse-surface);border:2px solid var(--f7-messagebar-textarea-bg-color);border-radius:24px;height:24px;right:-6px;top:-6px;width:24px}.md .messagebar-attachment-delete:after,.md .messagebar-attachment-delete:before{background:var(--f7-messagebar-textarea-bg-color);height:2px;margin-left:-6px;margin-top:-1px;width:12px}.md .messagebar-sheet-image,.md .messagebar-sheet-item{--f7-touch-ripple-color:transparent;border-radius:4px;box-sizing:border-box;flex-shrink:0;height:calc((var(--f7-messagebar-sheet-height) - 24px)/2);margin-right:8px;margin-top:8px;overflow:hidden;position:relative;width:calc((var(--f7-messagebar-sheet-height) - 24px)/2)}@media (orientation:landscape){.md .messagebar-sheet-image,.md .messagebar-sheet-item{height:calc((var(--f7-messagebar-sheet-landscape-height) - 24px)/2);width:calc((var(--f7-messagebar-sheet-landscape-height) - 8px)/2)}}.md .messagebar-sheet-image input:checked~img,.md .messagebar-sheet-item input:checked~img{transform:scale(.85)}.md .messagebar-sheet-image input:checked~.icon-checkbox,.md .messagebar-sheet-image input:checked~.icon-radio,.md .messagebar-sheet-item input:checked~.icon-checkbox,.md .messagebar-sheet-item input:checked~.icon-radio{transform:translate(-50%,-50%) scale(1)}.md .messagebar-sheet-image .icon-checkbox,.md .messagebar-sheet-image .icon-radio,.md .messagebar-sheet-item .icon-checkbox,.md .messagebar-sheet-item .icon-radio{--f7-checkbox-inactive-color:var(--f7-md-surface);--f7-checkbox-active-color:var(--f7-md-surface);align-items:center;border:none;border-radius:50%;display:flex;height:32px;justify-content:center;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(.85);width:32px;z-index:1}.md .messagebar-sheet-image .icon-checkbox:after,.md .messagebar-sheet-image .icon-radio:after,.md .messagebar-sheet-item .icon-checkbox:after,.md .messagebar-sheet-item .icon-radio:after{color:var(--f7-md-on-surface);font-size:18px;height:100%;left:0;line-height:32px;position:static;width:auto}@font-face{font-family:swiper-icons;font-style:normal;font-weight:400;src:url("data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA")}:root{--swiper-theme-color:#007aff}:host{display:block;margin-left:auto;margin-right:auto;position:relative;z-index:1}.swiper{display:block;list-style:none;margin-left:auto;margin-right:auto;overflow:hidden;overflow:clip;padding:0;position:relative;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{box-sizing:initial;display:flex;height:100%;position:relative;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);width:100%;z-index:1}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{display:block;flex-shrink:0;height:100%;position:relative;transition-property:transform;width:100%}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{-ms-overflow-style:none;overflow:auto;scrollbar-width:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);min-width:1px;width:100%}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(270deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(90deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(0deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(180deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top:4px solid transparent;box-sizing:border-box;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;transform-origin:50%;width:42px;z-index:10}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s linear infinite}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper:after{content:"";left:0;pointer-events:none;position:absolute;top:0}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper:after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper:after{height:var(--swiper-virtual-size);width:1px}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{align-items:center;color:var(--swiper-navigation-color,var(--swiper-theme-color));cursor:pointer;display:flex;height:var(--swiper-navigation-size);justify-content:center;margin-top:calc(0px - var(--swiper-navigation-size)/2);position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/44*27);z-index:10}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{cursor:auto;opacity:.35;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{cursor:auto;opacity:0;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{height:100%;object-fit:contain;transform-origin:center;width:100%}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);font-variant:normal;letter-spacing:0;line-height:1;text-transform:none!important}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:"prev"}.swiper-button-next,.swiper-rtl .swiper-button-prev{left:auto;right:var(--swiper-navigation-sides-offset,10px)}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:"next"}.swiper-pagination{position:absolute;text-align:center;transform:translateZ(0);transition:opacity .3s;z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);left:0;top:var(--swiper-pagination-top,auto);width:100%}.swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{position:relative;transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{background:var(--swiper-pagination-bullet-inactive-color,#000);border-radius:var(--swiper-pagination-bullet-border-radius,50%);display:inline-block;height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px))}button.swiper-pagination-bullet{-webkit-appearance:none;appearance:none;border:none;box-shadow:none;margin:0;padding:0}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{background:var(--swiper-pagination-color,var(--swiper-theme-color));opacity:var(--swiper-pagination-bullet-opacity,1)}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{left:var(--swiper-pagination-left,auto);right:var(--swiper-pagination-right,8px);top:50%;transform:translate3d(0,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{display:block;margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:transform .2s,top .2s}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,left .2s}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));height:100%;left:0;position:absolute;top:0;transform:scale(0);transform-origin:left top;width:100%}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0;width:100%}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{height:100%;left:0;top:0;width:var(--swiper-pagination-progressbar-size,4px)}.swiper-pagination-lock{display:none}.swiper-scrollbar{background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1));border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;-ms-touch-action:none}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{bottom:var(--swiper-scrollbar-bottom,4px);height:var(--swiper-scrollbar-size,4px);left:var(--swiper-scrollbar-sides-offset,1%);position:absolute;top:var(--swiper-scrollbar-top,auto);width:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);z-index:50}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{height:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);left:var(--swiper-scrollbar-left,auto);position:absolute;right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);width:var(--swiper-scrollbar-size,4px);z-index:50}.swiper-scrollbar-drag{background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);height:100%;left:0;position:relative;top:0;width:100%}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{align-items:center;display:flex;height:100%;justify-content:center;text-align:center;width:100%}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-height:100%;max-width:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none}.swiper .swiper-notification{left:0;opacity:0;pointer-events:none;position:absolute;top:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{margin:0 auto;transition-timing-function:ease-out}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-direction:column;flex-wrap:wrap}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;height:100%;pointer-events:none;transform-origin:0 0;visibility:hidden;width:100%;z-index:1}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{bottom:0;height:100%;left:0;opacity:.6;position:absolute;width:100%;z-index:0}.swiper-cube .swiper-cube-shadow:before{background:#000;bottom:0;content:"";filter:blur(50px);left:0;position:absolute;right:0;top:0}.swiper-cube .swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top{-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:0}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:none;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top{-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:0}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transform-origin:center bottom}:root{--f7-photobrowser-bg-color:#fff;--f7-photobrowser-bars-bg-color:rgba(var(--f7-bars-bg-color-rgb),0.95);--f7-photobrowser-bars-text-color:var(--f7-bars-text-color);--f7-photobrowser-bars-link-color:var(--f7-bars-link-color);--f7-photobrowser-caption-font-size:13px;--f7-photobrowser-caption-font-weight:500;--f7-photobrowser-caption-light-text-color:#000;--f7-photobrowser-caption-dark-text-color:#fff;--f7-photobrowser-exposed-bg-color:#000;--f7-photobrowser-dark-bg-color:#000;--f7-photobrowser-dark-bars-bg-color:rgba(27,27,27,0.8);--f7-photobrowser-dark-bars-text-color:#fff;--f7-photobrowser-dark-bars-link-color:#fff}.photo-browser{height:100%;left:0;position:absolute;top:0;width:100%;z-index:400}.photo-browser-standalone.modal-in{animation:photo-browser-in .4s;transition-duration:0ms}.photo-browser-standalone.modal-out{animation:photo-browser-out .4s!important;transition-duration:0ms}.photo-browser-standalone.modal-out.swipe-close-to-bottom,.photo-browser-standalone.modal-out.swipe-close-to-top{animation:none!important}.photo-browser-standalone.photo-browser-transitioning{animation:none!important;transition:.4s}.photo-browser-popup.modal-out.swipe-close-to-bottom,.photo-browser-popup.modal-out.swipe-close-to-top{transition-duration:.3s}.photo-browser-popup.modal-out.swipe-close-to-bottom{transform:translate3d(0,100vh,0)}.photo-browser-popup.modal-out.swipe-close-to-top{transform:translate3d(0,-100vh,0)}.photo-browser-page{background:none}.photo-browser-page .toolbar{transform:none}.photo-browser-popup{background:none}.photo-browser-of{margin:0 5px}.photo-browser-captions{bottom:var(--f7-safe-area-bottom);left:0;opacity:1;pointer-events:none;position:absolute;transition-duration:.4s;width:100%;z-index:10}.photo-browser-captions.photo-browser-captions-exposed{opacity:0}.toolbar~.toolbar.photo-browser-thumbs{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.page~.photo-browser-page:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs,.photo-browser-popup:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs,.photo-browser-standalone:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs{height:var(--f7-toolbar-height)}.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs{transform:translate3d(0,calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom, 0)),0)}.navbar+.toolbar.photo-browser-thumbs .swiper,.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs .swiper{height:calc(100% - var(--f7-safe-area-bottom, 0))}.toolbar~.photo-browser-captions{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));transform:translateZ(0)}.toolbar~.photo-browser-captions.photo-browser-captions-exposed{transform:translateZ(0)}.toolbar~.toolbar~.photo-browser-captions{bottom:calc(var(--f7-toolbar-height)*2 + var(--f7-safe-area-bottom))}.toolbar~.toolbar~.photo-browser-captions.photo-browser-captions-exposed{transform:translate3d(0,var(--f7-toolbar-height),0)}.photo-browser-thumbs{transition-property:transform,background-color,color}.photo-browser-thumbs .swiper{height:100%;width:100%}.photo-browser-thumbs .swiper-slide{align-items:center;display:flex;justify-content:center;width:auto}.photo-browser-thumbs img{border-radius:2px;display:block;height:75%;min-width:4px;width:auto}.photo-browser-thumbs .swiper-slide img{transform:translateX(-4px);transition-duration:.15s}.photo-browser-thumbs .swiper-slide-active img{transform:scale(1.2)}.photo-browser-thumbs .swiper-slide-active~.swiper-slide img{transform:translateX(4px)}.photo-browser-caption{bottom:0;box-sizing:border-box;font-size:var(--f7-photobrowser-caption-font-size);font-weight:var(--f7-photobrowser-caption-font-weight);left:0;opacity:0;padding:4px 5px;position:absolute;text-align:center;transition-duration:.4s;width:100%}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .photo-browser-caption{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur))}}.photo-browser-caption:empty{display:none}.photo-browser-caption.photo-browser-caption-active{opacity:1}.photo-browser-captions-light .photo-browser-caption{color:var(--f7-photobrowser-caption-light-text-color)}.dark .photo-browser-caption,.photo-browser-captions-dark .photo-browser-caption{color:var(--f7-photobrowser-caption-dark-text-color)}.photo-browser-swiper-container{background:var(--f7-photobrowser-bg-color);height:100%;left:0;overflow:hidden;position:absolute;top:0;touch-action:none;transition:.4s;transition-property:background-color;width:100%}.photo-browser-next.swiper-button-disabled,.photo-browser-prev.swiper-button-disabled{opacity:.3;pointer-events:none}.photo-browser-slide{align-items:center;box-sizing:border-box;display:flex;flex-shrink:0;height:100%;justify-content:center;overflow:hidden;position:relative;width:100%}.photo-browser-slide span.swiper-zoom-container{display:none}.photo-browser-slide img{display:none;height:auto;max-height:100%;max-width:100%;width:auto}.photo-browser-slide.swiper-slide-active span.swiper-zoom-container,.photo-browser-slide.swiper-slide-next span.swiper-zoom-container,.photo-browser-slide.swiper-slide-prev span.swiper-zoom-container{display:flex}.photo-browser-slide.swiper-slide-active img,.photo-browser-slide.swiper-slide-next img,.photo-browser-slide.swiper-slide-prev img{display:inline}.photo-browser-slide.swiper-slide-active.photo-browser-slide-lazy .preloader,.photo-browser-slide.swiper-slide-next.photo-browser-slide-lazy .preloader,.photo-browser-slide.swiper-slide-prev.photo-browser-slide-lazy .preloader{display:block}.photo-browser-slide iframe{height:100%;width:100%}.photo-browser-slide .preloader{display:none;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;width:42px}.navbar-photo-browser .right .link i,.navbar-photo-browser .right .link svg{display:block;height:24px;width:24px}.navbar-photo-browser .navbar-bg,.photo-browser-caption,.photo-browser-page .navbar-bg,.photo-browser-page .toolbar{background-color:var(--f7-photobrowser-bars-bg-color,rgba(var(--f7-bars-bg-color-rgb),.95))}.photo-browser-page{touch-action:none}.photo-browser-page .navbar,.photo-browser-page .toolbar{color:var(--f7-photobrowser-bars-text-color,var(--f7-bars-text-color));transform:translateZ(0);transition-duration:.4s}.photo-browser-page .navbar a,.photo-browser-page .toolbar a{color:var(--f7-photobrowser-bars-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.photo-browser-exposed .navbar,.photo-browser-exposed .toolbar:not(.photo-browser-thumbs){opacity:0;pointer-events:none;visibility:hidden}.photo-browser-exposed .toolbar:not(.photo-browser-thumbs)~.photo-browser-captions,.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs~.photo-browser-captions{transform:translate3d(0,var(--f7-toolbar-height),0)}.photo-browser-exposed .photo-browser-swiper-container{background:var(--f7-photobrowser-exposed-bg-color)}.photo-browser-dark .photo-browser-thumbs,.photo-browser-dark .toolbar,.photo-browser-exposed .photo-browser-thumbs,.photo-browser-exposed .toolbar{background-color:var(--f7-photobrowser-dark-bars-bg-color)}.photo-browser-dark .photo-browser-caption,.photo-browser-exposed .photo-browser-caption{background-color:var(--f7-photobrowser-dark-bars-bg-color);color:var(--f7-photobrowser-caption-dark-text-color)}.view.with-photo-browser-page-exposed .navbar{opacity:0;pointer-events:none}.photo-browser-page .toolbar:after,.photo-browser-page .toolbar:before{display:none!important}.navbar-photo-browser-dark .navbar-bg,.photo-browser-page-dark .navbar-bg{background:var(--f7-photobrowser-dark-bars-bg-color)}.navbar-photo-browser-dark .navbar-bg:after,.navbar-photo-browser-dark .navbar-bg:before,.photo-browser-page-dark .navbar-bg:after,.photo-browser-page-dark .navbar-bg:before{display:none!important}.navbar-photo-browser-dark,.photo-browser-dark .navbar,.photo-browser-dark .toolbar,.photo-browser-page-dark .navbar,.photo-browser-page-dark .toolbar{color:var(--f7-photobrowser-dark-bars-text-color)}.navbar-photo-browser-dark a,.photo-browser-dark .navbar a,.photo-browser-dark .toolbar a,.photo-browser-page-dark .navbar a,.photo-browser-page-dark .toolbar a{color:var(--f7-photobrowser-dark-bars-link-color)}.photo-browser-dark .photo-browser-swiper-container,.photo-browser-page-dark .photo-browser-swiper-container{background:var(--f7-photobrowser-dark-bg-color)}@keyframes photo-browser-in{0%{opacity:0;transform:translateZ(0) scale(.5)}50%{opacity:1;transform:translateZ(0) scale(1.05)}to{opacity:1;transform:translateZ(0) scale(1)}}@keyframes photo-browser-out{0%{opacity:1;transform:translateZ(0) scale(1)}50%{opacity:1;transform:translateZ(0) scale(1.05)}to{opacity:0;transform:translateZ(0) scale(.5)}}:root{--f7-notification-max-width:568px;--f7-notification-subtitle-text-transform:none;--f7-notification-subtitle-line-height:1.35;--f7-notification-text-text-transform:none;--f7-notification-text-font-weight:400}.ios{--f7-notification-margin:8px;--f7-notification-padding-horizontal:10px;--f7-notification-padding-vertical:10px;--f7-notification-border-radius:12px;--f7-notification-box-shadow:0px 5px 25px -10px rgba(0,0,0,0.7);--f7-notification-icon-size:20px;--f7-notification-title-font-size:13px;--f7-notification-title-text-transform:uppercase;--f7-notification-title-line-height:1.4;--f7-notification-title-font-weight:400;--f7-notification-title-letter-spacing:0.02em;--f7-notification-title-right-font-size:13px;--f7-notification-subtitle-font-size:15px;--f7-notification-subtitle-font-weight:600;--f7-notification-text-font-size:15px;--f7-notification-text-line-height:1.2;--f7-notification-bg-color:rgba(250,250,250,0.95);--f7-notification-bg-color-rgb:255,255,255;--f7-notification-title-color:#000;--f7-notification-title-right-color:rgba(0,0,0,0.45);--f7-notification-subtitle-color:#000;--f7-notification-text-color:#000}.ios .dark,.ios.dark{--f7-notification-bg-color:rgba(30,30,30,0.95);--f7-notification-bg-color-rgb:30,30,30;--f7-notification-title-color:#fff;--f7-notification-text-color:#fff;--f7-notification-subtitle-color:#fff;--f7-notification-title-right-color:rgba(255,255,255,0.55)}.md{--f7-notification-margin:16px;--f7-notification-padding-vertical:20px;--f7-notification-padding-horizontal:16px;--f7-notification-border-radius:16px;--f7-notification-box-shadow:none;--f7-notification-icon-size:24px;--f7-notification-title-font-size:16px;--f7-notification-title-text-transform:none;--f7-notification-title-line-height:1.35;--f7-notification-title-font-weight:500;--f7-notification-title-right-font-size:12px;--f7-notification-subtitle-font-size:14px;--f7-notification-subtitle-font-weight:400;--f7-notification-text-font-size:14px;--f7-notification-text-line-height:1.35}.md,.md .dark,.md [class*=color-]{--f7-notification-title-color:var(--f7-md-on-surface);--f7-notification-bg-color:var(--f7-md-surface-5);--f7-notification-text-color:var(--f7-md-on-surface-variant);--f7-notification-title-right-color:var(--f7-md-on-surface-variant);--f7-notification-subtitle-color:var(--f7-md-on-surface)}.notification{background:var(--f7-notification-bg-color);border:none;border-radius:var(--f7-notification-border-radius);box-shadow:var(--f7-notification-box-shadow);box-sizing:border-box;direction:ltr;display:none;font-size:14px;left:var(--f7-notification-margin);margin:0;margin-top:var(--f7-safe-area-top);max-width:var(--f7-notification-max-width);padding:var(--f7-notification-padding-vertical) var(--f7-notification-padding-horizontal);position:absolute;top:var(--f7-notification-margin);transition-property:transform;width:calc(100% - var(--f7-notification-margin)*2);z-index:20000}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .notification{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-notification-bg-color-rgb),.8)}}@media (min-width:568px){.notification{left:50%;margin-left:calc(var(--f7-notification-max-width)*-1/2);width:var(--f7-notification-max-width)}}.notification-title{color:var(--f7-notification-title-color,var(--f7-theme-color));font-size:var(--f7-notification-title-font-size);font-weight:var(--f7-notification-title-font-weight);letter-spacing:var(--f7-notification-title-letter-spacing);line-height:var(--f7-notification-title-line-height);text-transform:var(--f7-notification-title-text-transform)}.notification-subtitle{color:var(--f7-notification-subtitle-color);font-size:var(--f7-notification-subtitle-font-size);font-weight:var(--f7-notification-subtitle-font-weight);line-height:var(--f7-notification-subtitle-line-height);text-transform:var(--f7-notification-subtitle-text-transform)}.notification-text{color:var(--f7-notification-text-color);font-size:var(--f7-notification-text-font-size);font-weight:var(--f7-notification-text-font-weight);line-height:var(--f7-notification-text-line-height);text-transform:var(--f7-notification-text-text-transform)}.notification-title-right-text{color:var(--f7-notification-title-right-color);font-size:var(--f7-notification-title-right-font-size)}.notification-icon{font-size:0;line-height:var(--f7-notification-icon-size)}.notification-icon,.notification-icon i{height:var(--f7-notification-icon-size)!important;width:var(--f7-notification-icon-size)!important}.notification-icon i{font-size:var(--f7-notification-icon-size)}.notification-icon img{height:var(--f7-notification-icon-size)}.notification-header{align-items:center;display:flex;justify-content:flex-start}.notification-close-button{cursor:pointer;margin-left:auto;position:relative}.notification-close-button:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;left:50%;letter-spacing:normal;line-height:1;position:absolute;text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;white-space:nowrap;width:100%}.ios .notification{transform:translate3d(0,-200%,0);transition-duration:.45s}.ios .notification.modal-in{opacity:1;transform:translateZ(0)}.ios .notification.modal-out{transform:translate3d(0,-200%,0)}.ios .notification-icon{margin-right:8px}.ios .notification-header+.notification-content{margin-top:10px}.ios .notification-title-right-text{margin-left:auto;margin-right:6px}.ios .notification-title-right-text+.notification-close-button{margin-left:10px}.ios .notification-close-button{font-size:14px;height:20px;opacity:.3;transition-duration:.3s;width:20px}.ios .notification-close-button.active-state{opacity:.1;transition-duration:0ms}.ios .notification-close-button:after{color:#000;content:"notification_close_ios";font-size:.65em;height:44px;line-height:44px;margin-left:-22px;margin-top:-22px;width:44px}.ios .dark .notification-close-button:after,.ios.dark .notification-close-button:after{color:#fff}.md .notification{transform:translate3d(0,-150%,0)}.md .notification.modal-in{transform:translateZ(0);transition-duration:.5s;transition-timing-function:cubic-bezier(0,.8,.34,1)}.md .notification.modal-in.notification-transitioning{transition-duration:.2s}.md .notification.modal-out{animation:none;transform:translate3d(0,-150%,0);transition-duration:.2s;transition-timing-function:ease-in}.md .notification-with-icon .notification-icon{left:var(--f7-notification-padding-horizontal);position:absolute;top:var(--f7-notification-padding-vertical)}.md .notification-with-icon .notification-content,.md .notification-with-icon .notification-header{margin-left:calc(var(--f7-notification-icon-size) + 16px)}.md .notification-icon{margin-right:8px}.md .notification-subtitle+.notification-text{margin-top:4px}.md .notification-header+.notification-content{margin-top:8px}.md .notification-title-right-text{margin-left:4px}.md .notification-title-right-text:before{background:var(--f7-notification-title-right-color);border-radius:50%;content:"";display:inline-block;height:3px;margin-right:4px;vertical-align:middle;width:3px}.md .notification-close-button{height:16px;transition-duration:.3s;width:16px}.md .notification-close-button:after,.md .notification-close-button:before{height:48px;left:50%;margin-left:-24px;margin-top:-24px;top:50%;width:48px}.md .notification-close-button:after{color:var(--f7-md-on-surface-variant);content:"delete_round_md";font-size:24px;line-height:48px}@keyframes notification-md-in{0%{transform:translate3d(0,-150%,0)}50%{transform:translate3d(0,10%,0)}to{transform:translateZ(0)}}:root{--f7-autocomplete-dropdown-placeholder-color:#a9a9a9;--f7-autocomplete-dropdown-preloader-size:20px;--f7-autocomplete-dropdown-font-size:var(--f7-list-font-size)}.ios{--f7-autocomplete-dropdown-box-shadow:0px 3px 3px rgba(0,0,0,0.2);--f7-autocomplete-dropdown-text-matching-font-weight:600;--f7-autocomplete-dropdown-bg-color:#fff;--f7-autocomplete-dropdown-text-color:#000;--f7-autocomplete-dropdown-text-matching-color:#000}.ios .dark,.ios.dark{--f7-autocomplete-dropdown-bg-color:#1c1c1d;--f7-autocomplete-dropdown-text-color:#fff;--f7-autocomplete-dropdown-text-matching-color:#fff}.md{--f7-autocomplete-dropdown-box-shadow:none;--f7-autocomplete-dropdown-text-matching-font-weight:500;--f7-autocomplete-dropdown-text-matching-color:#000}.md .dark,.md.dark{--f7-autocomplete-dropdown-text-matching-color:#fff}.md,.md .dark,.md [class*=color-]{--f7-autocomplete-dropdown-bg-color:var(--f7-md-surface-2);--f7-autocomplete-dropdown-text-color:var(--f7-md-on-surface)}.autocomplete-page .autocomplete-found{display:block}.autocomplete-page .autocomplete-not-found{display:none}.autocomplete-page .autocomplete-values{display:block}.autocomplete-page .list ul:empty{display:none}.autocomplete-preloader:not(.autocomplete-preloader-visible){visibility:hidden}.autocomplete-preloader:not(.autocomplete-preloader-visible),.autocomplete-preloader:not(.autocomplete-preloader-visible) *{animation:none}.autocomplete-dropdown{background:var(--f7-autocomplete-dropdown-bg-color);box-shadow:var(--f7-autocomplete-dropdown-box-shadow);box-sizing:border-box;position:absolute;right:0;width:100%;z-index:500}.autocomplete-dropdown .autocomplete-dropdown-inner{-webkit-overflow-scrolling:touch;height:100%;overflow:auto;position:relative;z-index:1}.autocomplete-dropdown .autocomplete-preloader{bottom:100%;display:none;height:var(--f7-autocomplete-dropdown-preloader-size);position:absolute;width:var(--f7-autocomplete-dropdown-preloader-size)}.autocomplete-dropdown .autocomplete-preloader-visible{display:block}.autocomplete-dropdown .autocomplete-dropdown-placeholder{color:var(--f7-autocomplete-dropdown-placeholder-color)}.autocomplete-dropdown .list{color:var(--f7-autocomplete-dropdown-text-color);font-size:var(--f7-autocomplete-dropdown-font-size);margin:0}.autocomplete-dropdown .list b{color:var(--f7-autocomplete-dropdown-text-matching-color);font-weight:var(--f7-autocomplete-dropdown-text-matching-font-weight)}.autocomplete-dropdown .list ul{background:none!important}.autocomplete-dropdown .list ul:after,.autocomplete-dropdown .list ul:before{display:none!important}.autocomplete-dropdown .autocomplete-dropdown-selected{background:var(--f7-autocomplete-dropdown-selected-bg-color,rgba(var(--f7-theme-color-rgb),.2))}.searchbar-input-wrap .autocomplete-dropdown{background-color:var(--f7-searchbar-input-bg-color,var(--f7-searchbar-bg-color));border-radius:var(--f7-searchbar-input-border-radius);margin-top:calc(var(--f7-searchbar-input-height)*-1);top:100%;z-index:-1}.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-inner{padding-top:var(--f7-searchbar-input-height)}.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-placeholder{color:var(--f7-searchbar-placeholder-color)}.searchbar-input-wrap .autocomplete-dropdown li:last-child{border-radius:0 0 var(--f7-searchbar-input-border-radius) var(--f7-searchbar-input-border-radius);overflow:hidden;position:relative}.searchbar-input-wrap .autocomplete-dropdown .item-content{padding-right:calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px))}.ios .autocomplete-dropdown .autocomplete-preloader{left:16px;margin-bottom:12px}.md .autocomplete-page .navbar .autocomplete-preloader{margin-left:8px}.md .autocomplete-popup .navbar .autocomplete-preloader{margin-left:16px;margin-right:8px}.md .autocomplete-dropdown .autocomplete-preloader{left:16px;margin-bottom:8px}.md .autocomplete-dropdown .autocomplete-preloader circle{stroke-width:3}:root{--f7-tooltip-padding:8px 16px;--f7-tooltip-font-size:14px;--f7-tooltip-font-weight:500;--f7-tooltip-desktop-padding:6px 8px;--f7-tooltip-desktop-font-size:12px}.ios{--f7-tooltip-border-radius:4px;--f7-tooltip-bg-color:rgba(0,0,0,0.87);--f7-tooltip-text-color:#fff}.md{--f7-tooltip-border-radius:8px}.md,.md .dark,.md [class*=color-]{--f7-tooltip-bg-color:var(--f7-md-secondary);--f7-tooltip-text-color:var(--f7-md-on-secondary)}.tooltip{background:var(--f7-tooltip-bg-color);border-radius:var(--f7-tooltip-border-radius);box-sizing:border-box;color:var(--f7-tooltip-text-color);font-size:var(--f7-tooltip-font-size);font-weight:var(--f7-tooltip-font-weight);line-height:1.2;opacity:0;padding:var(--f7-tooltip-padding);position:absolute;transform:scale(.9);transition-duration:.15s;transition-property:opacity,transform;z-index:20000;z-index:99000}.tooltip.tooltip-in{opacity:1;transform:scale(1)}.tooltip.tooltip-out{opacity:0;transform:scale(1)}.device-desktop .tooltip{font-size:var(--f7-tooltip-desktop-font-size);padding:var(--f7-tooltip-desktop-padding)}.gauge{display:inline-block;margin-left:auto;margin-right:auto;position:relative;text-align:center}.gauge svg,.gauge-svg{height:auto;max-width:100%}.gauge svg circle,.gauge svg path,.gauge-svg circle,.gauge-svg path{transition-duration:.4s}.skeleton-block{background:var(--skeleton-color)!important;display:block;height:1em;width:100%}@font-face{font-display:block;font-family:skeleton;font-style:normal,italic;font-weight:100,200,300,400,500,600,700,800,900;src:url("data:application/font-woff;charset=utf-8;base64,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") format("woff")}.skeleton-text{font-family:skeleton!important;-webkit-user-select:none;user-select:none}.skeleton-text,.skeleton-text *{color:var(--skeleton-color)!important;letter-spacing:-.03em!important}.skeleton-image{display:inline-block}.skeleton-image svg{height:auto;max-width:100%}.skeleton-image polygon{fill:var(--skeleton-color)}.skeleton-image path{fill:var(--skeleton-icon-color)}.skeleton-avatar{display:inline-block}.skeleton-avatar svg{height:auto;max-width:100%}.skeleton-avatar rect{fill:var(--skeleton-color)}.skeleton-avatar path{fill:var(--skeleton-icon-color)}.skeleton-effect-blink,.skeleton-effect-wave{animation:skeleton-effect-wave 1s infinite;-webkit-mask-image:linear-gradient(90deg,transparent 0,black 25%,black 75%,transparent);mask-image:linear-gradient(90deg,transparent 0,black 25%,black 75%,transparent);-webkit-mask-position:50% top;mask-position:50% top;-webkit-mask-repeat:repeat;mask-repeat:repeat;-webkit-mask-size:200% 100%;mask-size:200% 100%}.skeleton-effect-fade{animation:skeleton-effect-fade 1s infinite}.skeleton-effect-pulse{animation:skeleton-effect-pulse 1s infinite}@keyframes skeleton-effect-fade{0%{opacity:1}50%{opacity:.2}to{opacity:1}}@keyframes skeleton-effect-wave{0%{-webkit-mask-position:50% top;mask-position:50% top}to{-webkit-mask-position:-150% top;mask-position:-150% top}}@keyframes skeleton-effect-pulse{0%{transform:scale(1)}40%{transform:scale(1)}50%{transform:scale(.975)}to{transform:scale(1)}}:root{--skeleton-color:#ccc;--skeleton-icon-color:rgba(0,0,0,0.25)}.dark{--skeleton-color:#515151;--skeleton-icon-color:rgba(255,255,255,0.25)}:root{--f7-color-picker-popover-width:350px;--f7-color-picker-slider-size:6px;--f7-color-picker-slider-knob-size:16px;--f7-color-picker-bar-size:50px;--f7-color-picker-bar-min-height:260px;--f7-color-picker-value-width:64px;--f7-color-picker-value-height:32px;--f7-color-picker-value-font-size:16px;--f7-color-picker-value-border-radius:4px;--f7-color-picker-hex-value-width:84px;--f7-color-picker-label-font-size:14px;--f7-color-picker-label-width:10px;--f7-color-picker-label-height:14px;--f7-color-picker-sb-spectrum-height:260px;--f7-color-picker-sb-spectrum-handle-size:16px;--f7-color-picker-wheel-width:330px;--f7-color-picker-palette-value-width:36px;--f7-color-picker-palette-value-height:36px;--f7-color-picker-initial-current-color-height:40px;--f7-color-picker-initial-current-color-border-radius:4px;--f7-color-picker-sheet-bg-color:#fff;--f7-color-picker-popup-bg-color:#fff;--f7-color-picker-value-bg-color:rgba(0,0,0,0.05);--f7-color-picker-group-bg-color:rgba(0,0,0,0.05);--f7-color-picker-group-value-bg-color:#fff}:root .dark,:root.dark{--f7-color-picker-sheet-bg-color:#121212;--f7-color-picker-popup-bg-color:#121212;--f7-color-picker-value-bg-color:rgba(255,255,255,0.1);--f7-color-picker-group-bg-color:#000;--f7-color-picker-group-value-bg-color:rgba(255,255,255,0.12)}.color-picker{display:flex;flex-direction:column;overflow:hidden;width:100%}.color-picker-popover .color-picker,.color-picker-popup .color-picker,.color-picker.color-picker-inline{position:relative}.color-picker-sheet-modal{background:var(--f7-color-picker-sheet-bg-color)}.color-picker-sheet-modal:before{z-index:600}.color-picker-sheet-modal .sheet-modal-inner{margin-bottom:var(--f7-safe-area-bottom)}.color-picker-popup .page{background:var(--f7-color-picker-popup-bg-color)}.color-picker-popup .page-content{padding-bottom:var(--f7-safe-area-bottom)}.color-picker-page .color-picker,.color-picker-popover .color-picker,.color-picker-popup .color-picker{height:100%}.color-picker-page .color-picker .toolbar,.color-picker-popover .color-picker .toolbar,.color-picker-popup .color-picker .toolbar{position:absolute}.color-picker-popover{max-height:80vh;max-width:90vw;width:var(--f7-color-picker-popover-width)}.md .color-picker-popover .popover-inner{padding:8px}.color-picker-popover .color-picker{max-height:80vh}.color-picker-popover .toolbar-top{border-top-left-radius:var(--f7-popover-border-radius);border-top-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette{flex-shrink:0;overflow:hidden}.color-picker-popover .color-picker-module-palette:first-child{border-top-left-radius:var(--f7-popover-border-radius);border-top-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette:last-child{border-bottom-left-radius:var(--f7-popover-border-radius);border-bottom-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette:first-child:last-child{border-radius:var(--f7-popover-border-radius)}.color-picker-popover .toolbar~.page-content .color-picker-module-palette:first-child{border-top-left-radius:0;border-top-right-radius:0}.color-picker-page .page-content,.color-picker-popover .page-content,.color-picker-popup .page-content,.color-picker-sheet-modal .page-content{align-items:stretch;display:flex;flex-direction:column;justify-content:flex-start;overflow-x:hidden}.color-picker-module{margin-top:5px}.color-picker-module:last-child{margin-bottom:5px}.color-picker-module-hs-spectrum,.color-picker-module-sb-spectrum{margin-left:10px;margin-right:10px}.color-picker-module-hs-spectrum:first-child,.color-picker-module-sb-spectrum:first-child{margin-top:10px}.color-picker-module-hs-spectrum .color-picker-hs-spectrum,.color-picker-module-hs-spectrum .color-picker-sb-spectrum,.color-picker-module-sb-spectrum .color-picker-hs-spectrum,.color-picker-module-sb-spectrum .color-picker-sb-spectrum{height:var(--f7-color-picker-sb-spectrum-height)}.ios .color-picker-module-hs-spectrum .color-picker-hs-spectrum,.ios .color-picker-module-hs-spectrum .color-picker-sb-spectrum,.ios .color-picker-module-sb-spectrum .color-picker-hs-spectrum,.ios .color-picker-module-sb-spectrum .color-picker-sb-spectrum{border-radius:4px}.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum,.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum,.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum,.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum{border-radius:12px}.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum:after,.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum:after,.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum:after,.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum:after{border-radius:inherit}.color-picker-sb-spectrum{background-color:#000;background-image:linear-gradient(180deg,rgba(0,0,0,0) 0,#000),linear-gradient(270deg,rgba(255,255,255,0) 0,#fff);position:relative}.color-picker-hs-spectrum{background-image:linear-gradient(90deg,hsl(0,100%,50%),hsl(60,100%,50%),hsl(120,100%,50%),hsl(180,100%,50%),hsl(240,100%,50%),hsl(300,100%,50%),hsl(0,100%,50%));position:relative}.color-picker-hs-spectrum:after{background-image:linear-gradient(180deg,rgba(255,255,255,0),#ffffff);content:"";height:100%;left:0;position:absolute;top:0;width:100%}.color-picker-hs-spectrum-handle,.color-picker-sb-spectrum-handle{height:4px;left:-2px;position:absolute;top:-2px;width:4px;z-index:1}.color-picker-hs-spectrum-handle:after,.color-picker-sb-spectrum-handle:after{background-color:inherit;border:1px solid #fff;border-radius:50%;box-shadow:0 0 2px rgba(0,0,0,.5);box-sizing:border-box;content:"";height:var(--f7-color-picker-sb-spectrum-handle-size);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);transform-origin:center;transition:.15s;transition-property:transform;width:var(--f7-color-picker-sb-spectrum-handle-size)}.color-picker-hs-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,.color-picker-hs-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after,.color-picker-sb-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,.color-picker-sb-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after{transform:scale(1.5) translate(-33.333%,-33.333%)}.color-picker-module-wheel{margin-left:10px;margin-right:10px}.color-picker-wheel{font-size:0;height:auto;margin-left:auto;margin-right:auto;max-width:100%;position:relative;width:var(--f7-color-picker-wheel-width)}.color-picker-wheel svg{height:auto;width:100%}.color-picker-wheel .color-picker-wheel-handle{background:red;border:2px solid #fff;border-radius:50%;box-shadow:0 0 5px rgba(0,0,0,.5);box-sizing:border-box;height:16.66666667%;left:0;position:absolute;top:0;width:16.66666667%}.color-picker-wheel .color-picker-sb-spectrum{height:45%;left:50%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0);width:45%}.color-picker-slider-wrap{align-items:center;display:flex;margin-bottom:2px}.color-picker-slider-wrap+.color-picker-slider-wrap{margin-top:5px}.color-picker-hex-wrap{align-items:center;display:flex;justify-content:space-between}.color-picker-hex-label,.color-picker-slider-label{flex-shrink:0;font-size:var(--f7-color-picker-label-font-size);margin-left:12px;width:var(--f7-color-picker-label-size)}.color-picker-hex-label{width:auto}.color-picker-bar-value,.color-picker-hex-value,.color-picker-slider-value{align-items:center;background:var(--f7-color-picker-value-bg-color);border-radius:var(--f7-color-picker-value-border-radius);display:flex;flex-shrink:0;font-size:var(--f7-color-picker-value-font-size);height:var(--f7-color-picker-value-height);justify-content:center;margin-right:10px;text-align:center;width:var(--f7-color-picker-value-width)}.color-picker-bar-value input,.color-picker-hex-value input,.color-picker-slider-value input{-webkit-appearance:none;appearance:none;background:transparent;border:none;border-radius:4px;color:inherit;display:block;font-family:inherit;font-size:inherit;height:100%;outline:0;text-align:center;width:100%}.color-picker-bar-value input::-webkit-inner-spin-button,.color-picker-bar-value input::-webkit-outer-spin-button,.color-picker-hex-value input::-webkit-inner-spin-button,.color-picker-hex-value input::-webkit-outer-spin-button,.color-picker-slider-value input::-webkit-inner-spin-button,.color-picker-slider-value input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;display:none;margin:0}.color-picker-hex-value{width:var(--f7-color-picker-hex-value-width)}.color-picker-hex-value:first-child{margin-right:auto}.color-picker-slider{--f7-range-bar-active-bg-color:transparent;--f7-range-bar-size:var(--f7-color-picker-slider-size);--f7-range-bar-border-radius:var(--f7-color-picker-slider-size);--f7-range-knob-size:var(--f7-color-picker-slider-knob-size);--f7-range-knob-box-shadow:0 1px 2px rgba(0,0,0,0.3)}.color-picker-slider .range-knob{transition-duration:.2s;transition-property:transform}.color-picker-slider .range-knob:after{height:30px;margin-left:-16px;margin-top:-16px;width:30px}.color-picker-slider .range-knob-active-state .range-knob{transform:scale(1.5)}.md .color-picker-slider.range-slider-min:not(.range-slider-dual) .range-knob{background:var(--f7-range-knob-color)!important;border:none}.color-picker-module-rgb-bars{align-items:stretch;box-sizing:border-box;display:flex;height:100%;justify-content:space-around;justify-content:space-evenly;min-height:var(--f7-color-picker-bar-min-height);padding-bottom:10px;padding-top:10px}.color-picker-bar-wrap{align-items:center;display:flex;flex-direction:column-reverse}.color-picker-bar{--f7-range-bar-active-bg-color:transparent;--f7-range-bar-size:var(--f7-color-picker-bar-size);--f7-range-bar-border-radius:2px;--f7-range-knob-size:6px;--f7-range-knob-box-shadow:0 0px 3px rgba(0,0,0,0.3);--f7-range-knob-color:#fff}.color-picker-bar .range-knob{border-radius:3px;transition-duration:0ms;transition-property:transform}.color-picker-bar .range-knob-wrap{height:6px;margin-left:calc((var(--f7-color-picker-bar-size) - 4px)*-.5);width:calc(var(--f7-color-picker-bar-size) - 4px)}.color-picker-bar .range-knob-active-state .range-knob{transform:scale(1)}.md .color-picker-bar.range-slider-min:not(.range-slider-dual) .range-knob{background:var(--f7-range-knob-color)!important;border:none}.color-picker-bar-label{flex-shrink:0;font-size:var(--f7-color-picker-label-size);height:var(--f7-color-picker-label-height);line-height:1;margin-top:12px}.color-picker-bar-value{margin-bottom:10px;margin-left:0}.color-picker-slider-alpha{--f7-range-knob-color:#fff}.color-picker-slider-alpha .range-bar{background-image:linear-gradient(270deg,rgba(0,0,0,0),#000),linear-gradient(90deg,rgba(255,255,255,.2) 50%,rgba(0,0,0,.2) 0),linear-gradient(270deg,rgba(255,255,255,.2) 50%,rgba(0,0,0,.2) 0);background-position:0 0,0 3px,0 0;background-repeat:repeat-y,repeat-x,repeat-x;background-size:100% 100%,6px 3px,6px 3px}.color-picker-slider-hue .range-bar{background-image:linear-gradient(270deg,hsl(0,100%,50%),hsl(60,100%,50%),hsl(120,100%,50%),hsl(180,100%,50%),hsl(240,100%,50%),hsl(300,100%,50%),hsl(0,100%,50%))}.color-picker-slider-brightness .range-bar{background-image:linear-gradient(270deg,#000,#fff)}.color-picker-module-palette{margin-top:16px}.color-picker-module-palette:first-child{margin-top:0}.color-picker-module-palette:last-child{margin-bottom:0}.color-picker-module-palette:first-child:last-child{margin:0}.color-picker-palette{display:flex;flex-wrap:wrap}.color-picker-palette-row{display:flex;flex-wrap:nowrap;width:100%}.color-picker-palette-row .color-picker-palette-value{width:100%}.color-picker-palette-value{cursor:pointer;height:var(--f7-color-picker-palette-value-height);width:var(--f7-color-picker-palette-value-width)}.color-picker-module-current-color,.color-picker-module-initial-current-colors{border-radius:var(--f7-color-picker-initial-current-color-border-radius);flex-shrink:0;margin-left:10px;margin-right:10px;overflow:hidden}.color-picker-current-color,.color-picker-initial-color{height:var(--f7-color-picker-initial-current-color-height)}.color-picker-initial-current-colors{display:flex}.color-picker-initial-current-colors .color-picker-current-color,.color-picker-initial-current-colors .color-picker-initial-color{width:50%}.color-picker-module-alpha-slider,.color-picker-module-brightness-slider,.color-picker-module-hex,.color-picker-module-hsb-sliders,.color-picker-module-hue-slider,.color-picker-module-rgb-sliders{margin-left:10px;margin-right:10px}.color-picker-grouped-modules .color-picker-module-alpha-slider,.color-picker-grouped-modules .color-picker-module-brightness-slider,.color-picker-grouped-modules .color-picker-module-hex,.color-picker-grouped-modules .color-picker-module-hsb-sliders,.color-picker-grouped-modules .color-picker-module-hue-slider,.color-picker-grouped-modules .color-picker-module-rgb-sliders{background:var(--f7-color-picker-group-bg-color);border-radius:8px;margin-left:8px;margin-right:8px;margin-top:16px;padding:8px}.color-picker-grouped-modules .color-picker-module-alpha-slider:last-child,.color-picker-grouped-modules .color-picker-module-brightness-slider:last-child,.color-picker-grouped-modules .color-picker-module-hex:last-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders:last-child,.color-picker-grouped-modules .color-picker-module-hue-slider:last-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders:last-child{margin-bottom:16px}.color-picker-grouped-modules .color-picker-hex-value,.color-picker-grouped-modules .color-picker-slider-value{background:var(--f7-color-picker-group-value-bg-color)}.color-picker-grouped-modules .color-picker-hex-label,.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:first-child,.color-picker-grouped-modules .color-picker-slider-label{margin-right:5px}.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:last-child{margin-left:5px}:root{--f7-treeview-item-height:34px;--f7-treeview-item-padding-left:16px;--f7-treeview-item-padding-right:16px;--f7-treeview-toggle-size:24px;--f7-treeview-children-offset:29px;--f7-treeview-label-font-weight:400;--f7-treeview-label-text-color:inherit;--f7-treeview-icon-size:24px;--f7-treeview-toggle-color:rgba(0,0,0,0.5);--f7-treeview-toggle-hover-bg-color:rgba(0,0,0,0.1);--f7-treeview-toggle-pressed-bg-color:rgba(0,0,0,0.15);--f7-treeview-icon-color:rgba(0,0,0,0.5);--f7-treeview-selectable-hover-bg-color:rgba(0,0,0,0.1);--f7-treeview-link-hover-bg-color:rgba(0,0,0,0.1);--f7-treeview-link-pressed-bg-color:rgba(0,0,0,0.15)}:root .dark,:root.dark{--f7-treeview-toggle-color:rgba(255,255,255,0.5);--f7-treeview-toggle-hover-bg-color:rgba(255,255,255,0.03);--f7-treeview-toggle-pressed-bg-color:rgba(255,255,255,0.1);--f7-treeview-icon-color:rgba(255,255,255,0.75);--f7-treeview-selectable-hover-bg-color:rgba(255,255,255,0.03);--f7-treeview-link-hover-bg-color:rgba(255,255,255,0.03);--f7-treeview-link-pressed-bg-color:rgba(255,255,255,0.11)}.ios{--f7-treeview-label-font-size:17px}.md{--f7-treeview-label-font-size:16px}.treeview-item-root{min-height:var(--f7-treeview-item-height);padding-left:var(--f7-treeview-item-padding-right);padding-right:var(--f7-treeview-item-padding-left)}.treeview-item-content,.treeview-item-root{align-items:center;display:flex;justify-content:flex-start}.treeview-item-content>.f7-icons,.treeview-item-content>.material-icons,.treeview-item-content>i{color:var(--f7-treeview-icon-color);font-size:var(--f7-treeview-icon-size)}.treeview-item-content:first-child{margin-right:calc(var(--f7-treeview-toggle-size) + 5px)}.treeview-item-content>*+*{margin-right:5px}.treeview-item-label{color:var(--f7-treeview-label-text-color);font-size:var(--f7-treeview-label-font-size);font-weight:var(--f7-treeview-label-font-weight)}.treeview-toggle{background-color:rgba(0,0,0,0);border-radius:4px;cursor:pointer;height:var(--f7-treeview-toggle-size);margin-left:5px;position:relative;transition-duration:.2s;width:var(--f7-treeview-toggle-size)}.treeview-toggle.active-state{background-color:var(--f7-treeview-toggle-pressed-bg-color)}.treeview-toggle:after{border-bottom:5px solid transparent;border-right:6px solid var(--f7-treeview-toggle-color);border-top:5px solid transparent;content:"";height:0;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);transition-duration:.2s;width:0}.treeview-toggle-hidden{opacity:0;pointer-events:none;visibility:hidden}.treeview-preloader{--f7-preloader-size:var(--f7-treeview-toggle-size);margin-left:calc(var(--f7-treeview-toggle-size)*-1)}.treeview-item-children{display:none}.treeview-item-opened>.treeview-item-children{display:block}.treeview-item-opened>.treeview-item-root .treeview-toggle:after{transform:translate(-50%,-50%) rotate(-90deg)}a.treeview-item-root{color:var(--f7-treeview-label-text-color)}.treeview-item-selectable.treeview-item-root,.treeview-item-selectable>.treeview-item-root{cursor:pointer;transition-duration:.15s}a.treeview-item-root{transition-duration:.15s}a.treeview-item-root.active-state{background:var(--f7-treeview-link-pressed-bg-color)}.treeview-item-toggle.treeview-item-root,.treeview-item-toggle>.treeview-item-root{cursor:pointer}.treeview-item-selected.treeview-item-root,.treeview-item-selected>.treeview-item-root{background:var(--f7-treeview-selectable-selected-bg-color,rgba(var(--f7-theme-color-rgb),.2))}.treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*1)}.treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*2)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*3)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*4)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*5)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*6)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*7)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*8)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*9)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-right:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*10)}:root{--f7-text-editor-font-size:inherit;--f7-text-editor-font-weight:inherit;--f7-text-editor-border-width:1px;--f7-text-editor-height:250px;--f7-text-editor-margin:16px;--f7-text-editor-padding:8px;--f7-text-editor-button-bg-color:transparent;--f7-text-editor-button-size:28px;--f7-text-editor-button-icon-size:20px;--f7-text-editor-button-margin:2px;--f7-text-editor-text-color:#000;--f7-text-editor-bg-color:#fff;--f7-text-editor-button-divider-color:rgba(0,0,0,0.15)}:root .dark,:root.dark{--f7-text-editor-bg-color:#121212;--f7-text-editor-text-color:#fff;--f7-text-editor-button-divider-color:rgba(255,255,255,0.15)}.ios{--f7-text-editor-toolbar-padding:6px;--f7-text-editor-button-border-radius:2px;--f7-text-editor-placeholder-color:rgba(0,0,0,0.35);--f7-text-editor-toolbar-border-color:rgba(0,0,0,0.25);--f7-text-editor-toolbar-bg-color:#fff;--f7-text-editor-border-color:rgba(0,0,0,0.1);--f7-text-editor-button-text-color:#333}.ios .dark,.ios.dark{--f7-text-editor-placeholder-color:rgba(255,255,255,0.35);--f7-text-editor-toolbar-bg-color:#121212;--f7-text-editor-toolbar-border-color:rgba(255,255,255,0.1);--f7-text-editor-toolbar-bg-color:#202020;--f7-text-editor-border-color:rgba(255,255,255,0.1);--f7-text-editor-button-text-color:#fff}.md{--f7-text-editor-button-border-radius:8px;--f7-text-editor-toolbar-padding:8px}.md,.md .dark,.md [class*=color-]{--f7-text-editor-placeholder-color:var(--f7-md-on-surface-variant);--f7-text-editor-toolbar-bg-color:var(--f7-md-surface-1);--f7-text-editor-border-color:var(--f7-md-outline);--f7-text-editor-button-text-color:var(--f7-md-on-surface)}.text-editor{align-items:stretch;background-color:var(--f7-text-editor-bg-color);border:var(--f7-text-editor-border-width) solid var(--f7-text-editor-border-color);box-sizing:border-box;display:block;display:flex;flex-direction:column;height:var(--f7-text-editor-height);margin:var(--f7-text-editor-margin);position:relative}.text-editor.text-editor-resizable{height:auto}.text-editor-toolbar{background:var(--f7-text-editor-toolbar-bg-color);box-sizing:border-box;display:flex;flex-shrink:0;flex-wrap:wrap;left:0;padding:var(--f7-text-editor-toolbar-padding);position:relative;position:sticky;top:0;z-index:100}.text-editor-toolbar:after{background-color:var(--f7-text-editor-toolbar-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}button.text-editor-button{align-items:center;-webkit-appearance:none;appearance:none;background:transparent;background-color:var(--f7-text-editor-button-bg-color);border:none;border-radius:var(--f7-text-editor-button-border-radius);box-shadow:none;box-sizing:border-box;color:var(--f7-text-editor-button-text-color);cursor:pointer;display:flex;flex-shrink:0;font-family:inherit;height:var(--f7-text-editor-button-size);justify-content:center;margin:0;margin:var(--f7-text-editor-button-margin);outline:0;overflow:hidden;padding:0;position:relative;width:auto;width:var(--f7-text-editor-button-size);z-index:1}button.text-editor-button .f7-icons,button.text-editor-button .material-icons,button.text-editor-button i{font-size:var(--f7-text-editor-button-icon-size);font-style:normal}button.text-editor-button .f7-icons sub,button.text-editor-button .f7-icons sup,button.text-editor-button .material-icons sub,button.text-editor-button .material-icons sup,button.text-editor-button i sub,button.text-editor-button i sup{font-size:60%}.text-editor-button-divider{background:var(--f7-text-editor-button-divider-color);flex-shrink:0;margin:0 2px;width:1px}.text-editor-content{-webkit-user-modify:read-write;-webkit-appearance:none;appearance:none;border:none;box-sizing:border-box;color:var(--f7-text-editor-text-color);flex-shrink:10;font-size:var(--f7-text-editor-font-size);font-weight:var(--f7-text-editor-font-weight);height:100%;outline:0;overflow:auto;padding:var(--f7-text-editor-padding);-webkit-user-select:text;user-select:text}.text-editor-content .text-editor-placeholder{color:var(--f7-text-editor-placeholder-color);pointer-events:none}.text-editor-content img{max-width:100%}.text-editor-content a{pointer-events:none}.text-editor-popover{max-width:80vw;width:auto;z-index:12500}.text-editor-popover .popover-inner{display:flex;flex-wrap:wrap;padding:3px}.text-editor-keyboard-toolbar{--f7-safe-area-bottom:0px;position:absolute;z-index:6000}.text-editor-keyboard-toolbar .toolbar-inner{-webkit-overflow-scrolling:touch;justify-content:flex-start!important;overflow:auto;scrollbar-color:transparent;scrollbar-width:none}.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-track{background:transparent;box-shadow:none}.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.text-editor-keyboard-toolbar .toolbar-inner .text-editor-button-divider{height:100%}.item-input .text-editor{background-color:var(--f7-input-bg-color,transparent);border:none;margin:0}.item-input .text-editor-content{color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);padding:var(--f7-textarea-padding-vertical) var(--f7-input-padding-right) var(--f7-textarea-padding-vertical) var(--f7-input-padding-left)}.item-input .text-editor-toolbar{box-shadow:none}.item-input .text-editor-toolbar:after{display:none!important}.item-input-outline .text-editor-content{border-radius:var(--f7-input-outline-border-radius)}.ios button.text-editor-button{transition:opacity .3s}.ios button.text-editor-button.active-state{opacity:.3;transition-duration:0ms}.md button.text-editor-button{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25)}.md .text-editor-keyboard-toolbar .toolbar-inner{padding-left:8px;padding-right:8px}.pie-chart{position:relative}.pie-chart svg{display:block;font-size:0;height:auto;margin:0 auto;width:100%}.pie-chart path{transition-duration:.15s}.pie-chart-hidden{opacity:.4}.pie-chart-tooltip{font-size:12px;line-height:1.4;max-width:none;pointer-events:none;text-align:left;white-space:nowrap;width:auto}.pie-chart-tooltip-label{align-items:center;display:flex}.pie-chart-tooltip-color{border-radius:50%;display:inline-block;height:10px;margin-right:4px;width:10px}:root{--f7-area-chart-current-line-stroke-width:2px;--f7-area-chart-current-line-stroke:rgba(0,0,0,0.15);--f7-area-chart-axis-text-color:inherit;--f7-area-chart-axis-height:1px;--f7-area-chart-axis-font-size:10px;--f7-area-chart-axis-font-weight:500;--f7-area-chart-tooltip-font-size:12px;--f7-area-chart-tooltip-total-font-size:16px;--f7-area-chart-tooltip-total-font-weight:bold;--f7-area-chart-tooltip-color-size:10px;--f7-area-chart-legend-font-size:14px;--f7-area-chart-legend-font-weight:500;--f7-area-chart-legend-text-color:inherit;--f7-area-chart-legend-padding:4px 8px;--f7-area-chart-legend-border-radius:4px;--f7-area-chart-legend-color-size:14px;--f7-area-chart-line-stroke-width:2px;--f7-area-chart-axis-bg-color:rgba(0,0,0,0.15);--f7-area-chart-legend-disabled-text-color:rgba(0,0,0,0.22)}:root .dark,:root.dark{--f7-area-chart-axis-bg-color:rgba(255,255,255,0.15);--f7-area-chart-legend-disabled-text-color:rgba(255,255,255,0.22)}.ios{--f7-area-chart-tooltip-total-label-text-color:rgba(255,255,255,0.75)}.md{--f7-area-chart-tooltip-total-label-text-color:inherit}.area-chart{position:relative}.area-chart svg{display:block;font-size:0;height:auto;margin:0 auto;width:100%}.area-chart path{fill:none;stroke-width:var(--f7-area-chart-line-stroke-width)}.area-chart-current-line{stroke:var(--f7-area-chart-current-line-stroke);stroke-width:var(--f7-area-chart-current-line-stroke-width)}.area-chart-axis{background:var(--f7-area-chart-axis-bg-color);color:var(--f7-area-chart-axis-text-color);display:flex;font-size:var(--f7-area-chart-axis-font-size);font-weight:var(--f7-area-chart-axis-font-weight);height:var(--f7-area-chart-axis-height);justify-content:space-between;line-height:1;margin-bottom:2em}.area-chart-axis>span{align-items:flex-start;display:flex;justify-content:center;padding-top:10px;white-space:nowrap;width:0}.area-chart-axis>span:first-child{justify-content:flex-start}.area-chart-axis>span:last-child{justify-content:flex-end}.area-chart-tooltip{font-size:var(--f7-area-chart-tooltip-font-size);line-height:1.4;pointer-events:none;text-align:left}.area-chart-tooltip-label{color:var(--f7-area-chart-tooltip-total-label-text-color)}.area-chart-tooltip-total{font-size:var(--f7-area-chart-tooltip-total-font-size);font-weight:var(--f7-area-chart-tooltip-total-font-weight)}.area-chart-tooltip-list{list-style:none;margin:0;padding:0}.area-chart-tooltip-list li{white-space:nowrap}.area-chart-tooltip-list span{border-radius:50%;display:inline-block;height:var(--f7-area-chart-tooltip-color-size);margin-right:4px;width:var(--f7-area-chart-tooltip-color-size)}.area-chart-axis~.area-chart-legend{margin-top:2em}.area-chart-legend{align-items:center;display:flex;flex-wrap:wrap;font-size:var(--f7-area-chart-legend-font-size);justify-content:center;margin-top:1em;width:100%}.area-chart-legend-button{-webkit-appearance:none!important;appearance:none!important;background-color:initial;border:none;border-radius:0;box-shadow:none!important;cursor:pointer;font-family:inherit;font-size:inherit;outline:0!important}.area-chart-legend-item{align-items:center;border-radius:var(--f7-area-chart-legend-border-radius);color:var(--f7-area-chart-legend-text-color);display:flex;font-weight:var(--f7-area-chart-legend-font-weight);overflow:hidden;padding:var(--f7-area-chart-legend-padding);position:relative;transition-duration:.2s;width:auto}.area-chart-legend-item span{border-radius:50%;height:var(--f7-area-chart-legend-color-size);margin-right:4px;transition-duration:.2s;width:var(--f7-area-chart-legend-color-size)}.area-chart-legend-item-hidden{color:var(--f7-area-chart-legend-disabled-text-color)}.area-chart-legend-item-hidden span{background-color:var(--f7-area-chart-legend-disabled-text-color)!important}:root{--f7-breadcrumbs-spacing:12px;--f7-breadcrumbs-padding:2px 0;--f7-breadcrumbs-icon-size:24px;--f7-breadcrumbs-separator-color:rgba(0,0,0,0.35)}:root .dark,:root.dark{--f7-breadcrumbs-separator-color:rgba(255,255,255,0.35)}.ios{--f7-breadcrumbs-item-bg-color:transparent;--f7-breadcrumbs-collapsed-border-radius:4px;--f7-breadcrumbs-collapsed-padding:0px 6px;--f7-breadcrumbs-separator-icon:"chevron_right_ios";--f7-breadcrumbs-font-size:17px;--f7-breadcrumbs-item-border-radius:0px;--f7-breadcrumbs-item-padding:0px;--f7-breadcrumbs-item-font-weight:normal;--f7-breadcrumbs-item-active-font-weight:600;--f7-breadcrumbs-item-color:rgba(0,0,0,0.55);--f7-breadcrumbs-item-active-color:#000;--f7-breadcrumbs-collapsed-bg-color:rgba(0,0,0,0.15);--f7-breadcrumbs-collapsed-color:rgba(0,0,0,0.75)}.ios .dark,.ios.dark{--f7-breadcrumbs-item-color:rgba(255,255,255,0.75);--f7-breadcrumbs-item-active-color:#fff;--f7-breadcrumbs-collapsed-bg-color:rgba(255,255,255,0.15);--f7-breadcrumbs-collapsed-color:rgba(255,255,255,0.75)}.md{--f7-breadcrumbs-collapsed-border-radius:8px;--f7-breadcrumbs-collapsed-padding:12px 8px;--f7-breadcrumbs-separator-icon:"chevron_right_md";--f7-breadcrumbs-font-size:14px;--f7-breadcrumbs-item-border-radius:8px;--f7-breadcrumbs-item-padding:4px 8px;--f7-breadcrumbs-item-font-weight:500;--f7-breadcrumbs-item-active-font-weight:500}.md,.md .dark,.md [class*=color-]{--f7-breadcrumbs-item-color:var(--f7-theme-color);--f7-breadcrumbs-item-bg-color:var(--f7-md-secondary-container);--f7-breadcrumbs-item-active-color:var(--f7-md-on-secondary-container);--f7-breadcrumbs-collapsed-color:var(--f7-theme-color);--f7-breadcrumbs-collapsed-bg-color:var(--f7-md-secondary-container)}.breadcrumbs{align-items:center;display:flex;font-size:var(--f7-breadcrumbs-font-size);justify-content:flex-start;overflow:auto;padding:var(--f7-breadcrumbs-padding);scrollbar-color:transparent;scrollbar-width:none;white-space:nowrap}.breadcrumbs::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.breadcrumbs::-webkit-scrollbar-track{background:transparent;box-shadow:none}.breadcrumbs::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.breadcrumbs-collapsed,.breadcrumbs-item,.breadcrumbs-separator{--f7-touch-ripple-color:transparent!important;flex-shrink:0}.breadcrumbs-collapsed+.breadcrumbs-collapsed,.breadcrumbs-collapsed+.breadcrumbs-item,.breadcrumbs-collapsed+.breadcrumbs-separator,.breadcrumbs-item+.breadcrumbs-collapsed,.breadcrumbs-item+.breadcrumbs-item,.breadcrumbs-item+.breadcrumbs-separator,.breadcrumbs-separator+.breadcrumbs-collapsed,.breadcrumbs-separator+.breadcrumbs-item,.breadcrumbs-separator+.breadcrumbs-separator{margin-left:var(--f7-breadcrumbs-spacing)}.breadcrumbs-item{align-items:center;background-color:var(--f7-breadcrumbs-item-bg-color);border-radius:var(--f7-breadcrumbs-item-border-radius);color:var(--f7-breadcrumbs-item-color);display:flex;font-weight:var(--f7-breadcrumbs-item-font-weight);padding:var(--f7-breadcrumbs-item-padding)}.breadcrumbs-item .icon{font-size:var(--f7-breadcrumbs-icon-size);height:var(--f7-breadcrumbs-icon-size);width:var(--f7-breadcrumbs-icon-size)}.breadcrumbs-item a{--f7-touch-ripple-color:transparent!important;color:inherit}.breadcrumbs-item-active{color:var(--f7-breadcrumbs-item-active-color,var(--f7-breadcrumbs-item-color));font-weight:var(--f7-breadcrumbs-item-active-font-weight)}.breadcrumbs-separator{align-items:center;color:var(--f7-breadcrumbs-separator-color);display:flex;height:24px;overflow:hidden}.breadcrumbs-separator:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";content:var(--f7-breadcrumbs-separator-icon);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%;width:12px}.ios .breadcrumbs-separator:after{font-size:12px;height:11px}.md .breadcrumbs-separator:after{font-size:18px;height:18px}.breadcrumbs-collapsed{align-items:center;background:var(--f7-breadcrumbs-collapsed-bg-color);border-radius:var(--f7-breadcrumbs-collapsed-border-radius);cursor:pointer;display:flex;min-height:1em;padding:var(--f7-breadcrumbs-collapsed-padding)}.breadcrumbs-collapsed span,.breadcrumbs-collapsed:after,.breadcrumbs-collapsed:before{background:var(--f7-breadcrumbs-collapsed-color);border-radius:50%;content:"";height:4px;width:4px}.breadcrumbs-collapsed span{margin:0 3px}:root{--f7-typography-padding:16px;--f7-typography-margin:16px}.display-flex{display:flex!important}.display-block{display:block!important}.display-inline-flex{display:inline-flex!important}.display-inline-block{display:inline-block!important}.display-inline{display:inline!important}.display-none{display:none!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-shrink-2{flex-shrink:2!important}.flex-shrink-3{flex-shrink:3!important}.flex-shrink-4{flex-shrink:4!important}.flex-shrink-5{flex-shrink:5!important}.flex-shrink-6{flex-shrink:6!important}.flex-shrink-7{flex-shrink:7!important}.flex-shrink-8{flex-shrink:8!important}.flex-shrink-9{flex-shrink:9!important}.flex-shrink-10{flex-shrink:10!important}.flex-direction-row{flex-direction:row!important}.flex-direction-row-reverse{flex-direction:row-reverse!important}.flex-direction-column{flex-direction:column!important}.flex-direction-column-reverse{flex-direction:column-reverse!important}.justify-content-flex-start{justify-content:flex-start!important}.justify-content-center{justify-content:center!important}.justify-content-flex-end{justify-content:flex-end!important}.justify-content-space-between{justify-content:space-between!important}.justify-content-space-around{justify-content:space-around!important}.justify-content-space-evenly{justify-content:space-evenly!important}.justify-content-stretch{justify-content:stretch!important}.justify-content-start{justify-content:start!important}.justify-content-end{justify-content:end!important}.justify-content-left{justify-content:left!important}.justify-content-right{justify-content:right!important}.align-content-flex-start{align-content:flex-start!important}.align-content-flex-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-space-between{align-content:space-between!important}.align-content-space-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-items-baseline{align-items:baseline!important}.align-items-flex-start{align-items:flex-start!important}.align-items-flex-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-stretch{align-items:stretch!important}.align-self-flex-start{align-self:flex-start!important}.align-self-flex-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-stretch{align-self:stretch!important}.text-align-left{text-align:left!important}.text-align-center{text-align:center!important}.text-align-right{text-align:right!important}.text-align-justify{text-align:justify!important}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}.vertical-align-bottom{vertical-align:bottom!important}.vertical-align-middle{vertical-align:middle!important}.vertical-align-top{vertical-align:top!important}.no-padding{padding:0!important}.no-padding-left{padding-left:0!important}.no-padding-horizontal,.no-padding-right{padding-right:0!important}.no-padding-horizontal{padding-left:0!important}.no-padding-top{padding-top:0!important}.no-padding-bottom,.no-padding-vertical{padding-bottom:0!important}.no-padding-vertical{padding-top:0!important}.no-margin{margin:0!important}.no-margin-left{margin-left:0!important}.no-margin-horizontal,.no-margin-right{margin-right:0!important}.no-margin-horizontal{margin-left:0!important}.no-margin-top{margin-top:0!important}.no-margin-bottom,.no-margin-vertical{margin-bottom:0!important}.no-margin-vertical{margin-top:0!important}.width-auto{width:auto!important}.width-100{width:100%!important}.padding{padding:var(--f7-typography-padding)!important}.padding-half{padding:calc(var(--f7-typography-padding)/2)!important}.padding-top{padding-top:var(--f7-typography-padding)!important}.padding-top-half{padding-top:calc(var(--f7-typography-padding)/2)!important}.padding-bottom{padding-bottom:var(--f7-typography-padding)!important}.padding-bottom-half{padding-bottom:calc(var(--f7-typography-padding)/2)!important}.padding-left{padding-left:var(--f7-typography-padding)!important}.padding-left-half{padding-left:calc(var(--f7-typography-padding)/2)!important}.padding-right{padding-right:var(--f7-typography-padding)!important}.padding-right-half{padding-right:calc(var(--f7-typography-padding)/2)!important}.padding-vertical{padding-bottom:var(--f7-typography-padding)!important;padding-top:var(--f7-typography-padding)!important}.padding-vertical-half{padding-bottom:calc(var(--f7-typography-padding)/2)!important;padding-top:calc(var(--f7-typography-padding)/2)!important}.padding-horizontal{padding-left:var(--f7-typography-padding)!important;padding-right:var(--f7-typography-padding)!important}.padding-horizontal-half{padding-left:calc(var(--f7-typography-padding)/2)!important;padding-right:calc(var(--f7-typography-padding)/2)!important}.margin{margin:var(--f7-typography-margin)!important}.margin-half{margin:calc(var(--f7-typography-margin)/2)!important}.margin-top{margin-top:var(--f7-typography-margin)!important}.margin-top-half{margin-top:calc(var(--f7-typography-margin)/2)!important}.margin-bottom{margin-bottom:var(--f7-typography-margin)!important}.margin-bottom-half{margin-bottom:calc(var(--f7-typography-margin)/2)!important}.margin-left{margin-left:var(--f7-typography-margin)!important}.margin-left-half{margin-left:calc(var(--f7-typography-margin)/2)!important}.margin-right{margin-right:var(--f7-typography-margin)!important}.margin-right-half{margin-right:calc(var(--f7-typography-margin)/2)!important}.margin-vertical{margin-bottom:var(--f7-typography-margin)!important;margin-top:var(--f7-typography-margin)!important}.margin-vertical-half{margin-bottom:calc(var(--f7-typography-margin)/2)!important;margin-top:calc(var(--f7-typography-margin)/2)!important}.margin-horizontal{margin-left:var(--f7-typography-margin)!important;margin-right:var(--f7-typography-margin)!important}.margin-horizontal-half{margin-left:calc(var(--f7-typography-margin)/2)!important;margin-right:calc(var(--f7-typography-margin)/2)!important}[class*=text-color-]{color:var(--f7-theme-color-text-color)!important}[class*=bg-color-]{background-color:var(--f7-theme-color-bg-color)!important}[class*=border-color-]{border-color:var(--f7-theme-color-border-color)!important} +/*# sourceMappingURL=../../spreadsheeteditor/mobile/css/framework7-rtl.css.map */ +/*# sourceMappingURL=framework7-rtl.css.map*/ \ No newline at end of file diff --git a/apps/spreadsheeteditor/mobile/css/framework7-rtl.css.map b/apps/spreadsheeteditor/mobile/css/framework7-rtl.css.map new file mode 100644 index 0000000000..121f666647 --- /dev/null +++ b/apps/spreadsheeteditor/mobile/css/framework7-rtl.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://documenteditor/../../spreadsheeteditor/mobile/css/framework7-rtl.css"],"names":[],"mappings":"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N,iBAAkB,CAClB,SAGF,CACA,qGAGE,sDACF,CACA,mIAGE,gEACF,CACA,gKAIE,mBACF,CACA,oBASE,uGAAiI,CADjI,SAAU,CALV,UAAW,CAEX,UAKF,CACA,yCAPE,QAAS,CAET,UAAW,CACX,SAAU,CANV,iBAAkB,CAClB,KAmBF,CAVA,qBAIE,yBAA8B,CAF9B,MAAO,CAGP,UAAW,CAIX,aACF,CACA,oBACE,8BACF,CACA,gBACE,gCACF,CAOA,0GACE,SACF,CACA,2CACE,8EACF,CACA,kDAUE,8EAA+E,CAD/E,uGAAiI,CALjI,QAAS,CAET,UAAW,CAEX,SAAU,CADV,SAAU,CANV,iBAAkB,CAClB,KAAM,CACN,UAAW,CAEX,UAMF,CACA,8CACE,kFACF,CACA,oDAUE,8EAA+E,CAN/E,yBAA8B,CAE9B,QAAS,CACT,UAAW,CALX,MAAO,CAMP,SAAU,CAPV,iBAAkB,CAElB,KAAM,CAEN,UAAW,CAIX,aAEF,CACA,gDACE,kFACF,CACA,sDAUE,+EAAgF,CANhF,yBAA8B,CAE9B,QAAS,CACT,UAAW,CALX,MAAO,CAMP,SAAU,CAPV,iBAAkB,CAElB,KAAM,CAEN,UAAW,CAIX,aAEF,CACA,+CACE,8EACF,CACA,sDAUE,+EAAgF,CADhF,uGAAiI,CALjI,QAAS,CAET,UAAW,CAEX,SAAU,CADV,SAAU,CANV,iBAAkB,CAClB,KAAM,CACN,UAAW,CAEX,UAMF,CACA,oCACE,GACE,gCACF,CACA,GACE,uBACF,CACF,CACA,wCACE,GACE,8BACF,CACA,GACE,uBACF,CACF,CACA,wCACE,GACE,uBACF,CACA,GACE,8BACF,CACF,CACA,oCACE,GACE,uBACF,CACA,GACE,gCACF,CACF,CACA,oCACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,qCACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,mBACE,gCACF,CACA,eAGE,SAAU,CAFV,mBAAoB,CACpB,gCAEF,CACA,kCAEE,SAAU,CADV,gCAEF,CACA,0CAEE,qGAA2G,CAD3G,SAEF,CACA,6CACE,yGACF,CACA,8CACE,qMACF,CACA,+CACE,iFACF,CACA,mCACE,GACE,gCACF,CACA,GACE,uBACF,CACF,CACA,mCACE,GACE,uBACF,CACA,GACE,gCACF,CACF,CACA,2CACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,uCACE,GACE,uBACF,CACA,GACE,gCACF,CACF,CACA,uCACE,GACE,gCACF,CACA,GACE,uBACF,CACF,CAIA,0GACE,YACF,CACA,oEAKE,uBAAwB,CACxB,6BAA8B,CAC9B,uFAAwF,CAJxF,SAAU,CACV,OAAQ,CAFR,iCAMF,CACA,kFAGE,wBAAyB,CACzB,8BAA+B,CAC/B,iCAAkC,CAHlC,8CAIF,CACA,8DACE,MAAO,CACP,OAAQ,CACR,UACF,CACA,iCAGE,mBAAoB,CADpB,cAAe,CADf,SAGF,CACA,+EAEE,YACF,CACA,mDACE,cACF,CACA,8KAIE,SAAU,CACV,cACF,CACA,6HAEE,cACF,CACA,YAcE,qBAAsB,CATtB,qCAAsC,CAEtC,wCAAyC,CACzC,4CAA6C,CAF7C,kDAAmD,CAGnD,4CAA6C,CAM7C,eAAgB,CAFhB,2NAAqD,CAZrD,iBAAkB,CAElB,sBAAuB,CACvB,kBAAmB,CAYnB,UAAW,CAdX,UAeF,CACA,uFAUE,kCAAmC,CARnC,UAAW,CAKX,cAAe,CAHf,QAAS,CAIT,mBAAoB,CACpB,kBAAmB,CANnB,iBAAkB,CAElB,OAAQ,CACR,aAAc,CAKd,WACF,CACA,uFAEE,mBACF,CACA,2CAGE,0CAA6C,CAD7C,iBAAkB,CADlB,kBAGF,CACA,yGAIE,gDAAmD,CACnD,mBAAsB,CAHtB,SAAU,CACV,mBAAqB,CAGrB,WACF,CACA,4CACE,2CAA8C,CAC9C,oBACF,CACA,iHAEE,gDAAmD,CACnD,WACF,CACA,+BACE,GAEE,iBAAkB,CADlB,kBAEF,CACA,IACE,iBACF,CACA,GAEE,eAAiB,CADjB,kBAEF,CACF,CACA,gCACE,GAEE,eAAiB,CADjB,kBAEF,CACA,IACE,iBACF,CACA,GAEE,iBAAkB,CADlB,kBAEF,CACF,CACA,qCACE,GAEE,SAAU,CADV,mBAEF,CACA,IAEE,SAAU,CADV,sBAEF,CACA,GAEE,SAAU,CADV,kBAEF,CACF,CACA,qCACE,GAEE,SAAU,CADV,kBAEF,CACA,IAEE,SAAU,CADV,sBAEF,CACA,IAEE,SAAU,CADV,mBAEF,CACA,GAEE,SAAU,CADV,mBAEF,CACF,CACA,6EAEE,eAAgB,CAChB,kBACF,CACA,yFAEE,mBACF,CACA,iDACE,sFACF,CACA,oDACE,sFACF,CACA,qDACE,sFACF,CACA,sDACE,sFACF,CACA,sCACE,GACE,0BACF,CACA,GACE,uBACF,CACF,CACA,sCACE,GACE,uBACF,CACA,GACE,0BACF,CACF,CACA,sCACE,GAEE,SAAU,CADV,uBAEF,CACA,GAEE,UAAY,CADZ,4BAEF,CACF,CACA,sCACE,GAEE,UAAY,CADZ,4BAEF,CACA,GAEE,SAAU,CADV,uBAEF,CACF,CACA,yEAEE,eAAgB,CAChB,kBACF,CACA,qFAEE,mBACF,CACA,+CACE,oFACF,CACA,kDACE,oFACF,CACA,mDACE,oFACF,CACA,oDACE,oFACF,CACA,oCACE,GACE,2BACF,CACA,GACE,uBACF,CACF,CACA,oCACE,GACE,uBACF,CACA,GACE,2BACF,CACF,CACA,oCACE,GAEE,SAAU,CADV,uBAEF,CACA,GAEE,UAAY,CADZ,4BAEF,CACF,CACA,oCACE,GAEE,UAAY,CADZ,4BAEF,CACA,GAEE,SAAU,CADV,uBAEF,CACF,CACA,uEAEE,kCAAmC,CACnC,kBACF,CACA,mFAEE,mBACF,CACA,8CACE,kFACF,CACA,iDACE,kFACF,CACA,kDACE,kFACF,CACA,mDACE,kFACF,CACA,mCACE,GACE,SAAU,CACV,4BACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,uBACF,CACF,CACA,mCACE,GACE,SAAU,CACV,uBACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,4BACF,CACF,CACA,mCACE,GAEE,SAAU,CADV,uBAEF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,2BACF,CACF,CACA,mCACE,GACE,SAAU,CACV,2BACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,uBACF,CACF,CACA,uEAEE,kCACF,CACA,mFAEE,mBACF,CACA,qGAGE,qEAAsE,CADtE,SAEF,CAKA,wNAEE,sEACF,CACA,+GAEE,qEACF,CACA,sBACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,uBACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,uEAEE,eAAgB,CAChB,kBACF,CACA,mFAEE,kCAAmC,CAC3B,0BAA2B,CACnC,eAAgB,CAChB,mBACF,CACA,8CAEE,kFAAmF,CADnF,2BAEF,CACA,iDAEE,kFAAmF,CADnF,2BAEF,CACA,kDAEE,kFAAmF,CADnF,2BAEF,CACA,mDAEE,kFAAmF,CADnF,2BAEF,CACA,mCACE,GACE,kBAAmB,CACnB,+CACF,CACA,GACE,eAAgB,CAChB,qCACF,CACF,CACA,mCACE,GACE,eAAkB,CAClB,qCACF,CACA,GACE,kBAAmB,CACnB,+CACF,CACF,CACA,mCACE,GACE,eAAkB,CAClB,qCACF,CACA,GACE,kBAAmB,CACnB,8CACF,CACF,CACA,mCACE,GACE,kBAAmB,CACnB,8CACF,CACA,GACE,eAAkB,CAClB,qCACF,CACF,CACA,6CACE,mBACF,CACA,kDACE,0FACF,CACA,qDACE,0FACF,CACA,8CACE,mBACF,CACA,sDACE,0FACF,CACA,uDACE,0FACF,CACA,uCACE,GACE,2BACF,CACA,GACE,uBACF,CACF,CACA,uCACE,GACE,uBACF,CACA,GACE,2BACF,CACF,CACA,uCACE,GACE,uBACF,CACA,GACE,yBACF,CACF,CACA,uCACE,GACE,yBACF,CACA,GACE,uBACF,CACF,CACA,yCACE,mBACF,CACA,8CACE,kFACF,CACA,iDACE,kFACF,CACA,0CACE,mBACF,CACA,kDACE,kFACF,CACA,mDACE,kFACF,CACA,mCACE,GACE,2BACF,CACA,GACE,uBACF,CACF,CACA,mCACE,GACE,uBACF,CACA,GACE,2BACF,CACF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,mBACF,CACA,qBAME,YAAa,CAGb,0CAA2C,CAN3C,MAAO,CADP,iBAAkB,CAElB,OAAQ,CACR,QAAS,CAKT,SACF,CACA,+CAXE,qBAAsB,CAOtB,eAAgB,CADhB,kBAsBF,CAjBA,0BAGE,6CAA8C,CAE9C,gDAAiD,CACjD,oDAAqD,CAFrD,0DAA2D,CAG3D,oDAAqD,CAIrD,2PAA6D,CAV7D,sBAAuB,CAcvB,gHAAyH,CACzH,yGAA0G,CAF1G,UAGF,CACA,oDACE,uBACF,CACA,qBAEE,+EACF,CACA,wKAKE,qHACF,CACA,0CAEE,+CACF,CACA,KACE,0EAAiF,CACjF,qEAAsE,CACtE,sGAAyG,CACzG,8DAA+D,CAC/D,uGAA0G,CAC1G,+DAAgE,CAChE,yGAA4G,CAC5G,iEACF,CACA,0BACE,oBACF,CACA,yBAGE,sBAAuB,CADvB,QAAS,CADT,UAGF,CACA,+CAEE,iBACF,CACA,eACE,eACF,CACA,mBACE,gBACF,CACA,oBACE,iBACF,CACA,gCACE,yCACF,CACA,mBACE,6BACF,CACA,8BACE,0BACF,CACA,qCACE,iBACF,CACA,qCAEE,gBAAiB,CADjB,eAEF,CACA,8wBAeE,SACF,CACA,mHAEE,mBACF,CACA,6IAEE,SAAU,CACV,uBACF,CACA,iLAEE,mBAAqB,CACrB,uBACF,CACA,oTAIE,SAAU,CACV,+BACF,CACA,yIAEE,2BACF,CACA,kBACE,mBACF,CACA,6BACE,2BACF,CACA,iDAEE,oFAAuF,CADvF,uBAEF,CACA,2EAEE,SAAU,CACV,gCACF,CACA,mEAEE,sDACF,CACA,mCACE,qDAAsD,CACtD,4BACF,CACA,+EAEE,uBACF,CACA,+LAIE,iFACF,CACA,8cAUE,cAAe,CADf,mBAAqB,CADrB,sDAGF,CACA,uHAGE,cAAe,CACf,SAAU,CAFV,sDAGF,CACA,0bAQE,gFACF,CACA,2pCAmBE,cAAe,CAEf,mBAAqB,CADrB,iCAA0C,CAF1C,sDAIF,CACA,2PAEE,cACF,CACA,whBAIE,mBACF,CACA,sxBAQE,cACF,CACA,4QAEE,gBACF,CACA,gTAEE,2KACF,CACA,kGACE,0FAA2F,CAE3F,6BAA8B,CAD9B,eAEF,CACA,gIACE,gBACF,CAIA,0SACE,4FACF,CACA,+LAEE,cAAe,CACf,mBAAqB,CACrB,qBACF,CACA,oGACE,8FAA+F,CAE/F,6BAA8B,CAD9B,eAEF,CACA,oIACE,gBACF,CAIA,kTACE,6FACF,CACA,0IACE,SACF,CACA,gRAGE,SAAU,CADV,gBAEF,CACA,oTAEE,4KACF,CACA,qMAEE,cAAe,CACf,mBAAqB,CACrB,qBACF,CAIA,4LACE,0CACF,CACA,uIACE,0CACF,CACA,uIACE,0CACF,CACA,0HACE,0CACF,CAIA,sLACE,0CACF,CACA,oIACE,0CACF,CACA,oIACE,0CACF,CACA,4DACE,0CACF,CACA,wIACE,0CACF,CACA,wIACE,0CACF,CACA,mFACE,0CACF,CACA,qHACE,0CACF,CACA,6DACE,0CACF,CACA,yIACE,0CACF,CACA,yIACE,0CACF,CACA,oFACE,0CACF,CACA,6BACE,YACF,CACA,iCACE,WACF,CACA,+FAEE,WACF,CACA,6GAEE,WACF,CACA,mDACE,mBACF,CACA,8PAIE,SACF,CACA,yYASE,wBAA0B,CAH1B,mBAAqB,CAErB,wBAA0B,CAD1B,uBAGF,CACA,gEAEE,wBAA0B,CAD1B,uBAEF,CACA,yEAIE,wBAA0B,CAH1B,uEAA2E,CAE3E,wBAA0B,CAD1B,uBAGF,CACA,mKAGE,wBAA0B,CAD1B,uBAEF,CACA,yLAEE,qBAAuB,CACvB,0DACF,CACA,sCACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,uCACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,gDACE,GACE,8CACF,CACA,GACE,qNACF,CACF,CACA,kDACE,GACE,uNACF,CACA,GACE,8CACF,CACF,CACA,kDACE,GACE,2BACF,CACA,GACE,uBACF,CACF,CACA,mDACE,GACE,uBACF,CACA,GACE,2BACF,CACF,CACA,gDACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,+CACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,oDACE,GACE,SAAU,CACV,8CACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,qNACF,CACF,CACA,gDACE,GACE,SAAU,CACV,qNACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,8CACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,+CACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,4CACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,+CACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,4CACF,CACF,CACA,uCACE,GACE,gDACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,gDACF,CACA,GACE,8CACF,CACF,CACA,uCACE,GACE,6CACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,gDACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,gDACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,6CACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,6CACF,CACF,CACA,uCACE,GACE,+CACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,4CACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,+CACF,CACA,GACE,8CACF,CACF,CACA,uCACE,GACE,4CACF,CACA,GACE,8CACF,CACF,CACA,yBACE,kBACF,CACA,kBACE,eAAgB,CAChB,gBACF,CACA,mBAEE,cAAe,CADf,cAEF,CACA,wBAEE,aAAc,CADd,WAAY,CAEZ,UACF,CACA,mBACE,eAAgB,CAChB,iBACF,CACA,+BACE,6BACF,CACA,kBACE,0BAA2B,CAC3B,eACF,CAIA,yGACE,gBACF,CACA,uEACE,gBACF,CACA,iCACE,6BACF,CACA,wCACE,cACF,CACA,wCACE,iBACF,CAEA,MAQE,4CAA6C,CAC7C,qCAAsC,CACtC,gDACF,CACA,KACE,wBAAyB,CACzB,2BAA4B,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aAAc,CACd,cACF,CACA,kFAGE,gDACF,CACA,2MAME,sBACF,CACA,4HAGE,uFACF,CACA,yHAGE,uFACF,CACA,6JAGE,gDACF,CACA,sNAKE,0DACF,CACF,CACA,yBACE,sEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,6GAGE,aAAc,CACd,cACF,CACA,+EAGE,gDACF,CACA,qMAME,sBACF,CACA,yHAGE,uFACF,CACA,sHAGE,uFACF,CACA,0JAGE,gDACF,CACA,iNAKE,0DACF,CACF,CACA,yBACE,yEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,gHAGE,aAAc,CACd,cACF,CACA,kFAGE,gDACF,CACA,2MAME,sBACF,CACA,4HAGE,uFACF,CACA,yHAGE,uFACF,CACA,6JAGE,gDACF,CACA,sNAKE,0DACF,CACF,CACA,0BACE,sEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,6GAGE,aAAc,CACd,cACF,CACA,+EAGE,gDACF,CACA,qMAME,sBACF,CACA,yHAGE,uFACF,CACA,sHAGE,uFACF,CACA,0JAGE,gDACF,CACA,iNAKE,0DACF,CACF,CACA,0BACE,yEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,gHAGE,aAAc,CACd,cACF,CACA,kFAGE,gDACF,CACA,2MAME,sBACF,CACA,4HAGE,uFACF,CACA,yHAGE,uFACF,CACA,6JAGE,gDACF,CACA,sNAKE,0DACF,CACF,CACA,8CAGE,wCAAyC,CACzC,+BACF,CACA,WACE,iDAAkD,CAClD,uEAAwE,CACxE,2EAA4E,CAC5E,6EAA8E,CAC9E,qEAAsE,CACtE,uEAAwE,CACxE,6DACF,CACA,8IAME,uBACF,CACA,qCAEE,kBAAmB,CADnB,eAEF,CACA,iDACE,eACF,CACA,gDACE,kBACF,CACA,sBAKE,kDAAmD,CAFnD,yDAA2D,CAC3D,yCAA0C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AAO,CASP,SAAU,CAXV,mBAAoB,CACpB,iBAAkB,CAElB,KAAM,CAKN,uDAAwD,CACxD,qEAAsE,CALtE,UAAW,CAGX,aAKF,CACA,wIAGE,gCACF,CACA,yCACE,2DACF,CACA,mDACE,oEACF,CACA,0DACE,uFACF,CACA,oDACE,wGACF,CACA,8DACE,gHACF,CACA,+CACE,SAAU,CACV,mBACF,CACA,8iBAQE,uFAAwF,CACxF,oEACF,CACA,2CACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,4CACE,GACE,SACF,CACA,GACE,SACF,CACF,CAEA,MACE,wCAAyC,CACzC,yCAA0C,CAC1C,0CAA2C,CAC3C,wCACF,CACA,KACE,6CAA8C,CAC9C,oDAAqD,CACrD,2CAA4C,CAC5C,uCAAwC,CACxC,sCAAuC,CACvC,uCAAwC,CACxC,+BACF,CACA,qBAEE,+BAAgC,CAChC,uCACF,CACA,IACE,2CAA4C,CAC5C,oEAAwE,CACxE,6CAA8C,CAC9C,uCAAwC,CACxC,sCACF,CACA,kCAGE,uDAAwD,CACxD,+CACF,CACA,cAUE,0CAA2C,CAH3C,qBAAsB,CADtB,YAAa,CADb,WAAY,CAHZ,MAAO,CADP,iBAAkB,CAElB,KAAM,CAMN,gCAAmC,CADnC,6BAA8B,CAG9B,4EAA6E,CAP7E,UAAW,CAQX,aACF,CACA,+CAEE,8DACF,CACA,2BACE,uBACF,CACA,uBACE,aAAc,CACd,uBACF,CACA,wBACE,+BACF,CACA,6DAGE,kDACF,CACA,6LAME,yDACF,CACA,uUAUE,iDACF,CACA,2DAEE,eACF,CACA,gJAIE,sBACF,CACA,0IAKE,gBAAiB,CACjB,iBAAkB,CAFlB,iBAGF,CACA,oBAIE,6CAA8C,CAF9C,gDAAiD,CACjD,oDAAqD,CAErD,0DAA2D,CAJ3D,kDAKF,CACA,iEAGE,YAAa,CACb,qBACF,CACA,8OAQE,WAAY,CADZ,kBAAmB,CADnB,eAAgB,CAGhB,eAAgB,CAChB,UACF,CACA,+NAME,wBACF,CAEA,MACE,wBACF,CACA,KACE,+BAAgC,CAChC,mCAAoC,CACpC,+CAAgD,CA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oCAAwC,CACxC,6BAAgC,CAChC,kCAAmC,CACnC,gCAAiC,CACjC,4BAA6B,CAC7B,gCACF,CACA,IACE,kCAAmC,CACnC,gCAAiC,CACjC,6BAA8B,CAC9B,gCACF,CACA,kCAGE,6CAA8C,CAC9C,0CACF,CACA,OAQE,yCAA0C,CAD1C,qBAAsB,CAFtB,gCAAiC,CACjC,mCAAoC,CAHpC,mCAAoC,CAMpC,SAAU,CAPV,iBAAkB,CADlB,qCAAuC,CAGvC,aAMF,CACA,iFACE,+BAEE,iDAAkD,CAC1C,yCAA0C,CAFlD,sDAGF,CACF,CACA,gBACE,SACF,CACA,sBAGE,kBAAmB,CACnB,qBAAsB,CAHtB,YAAa,CACb,6BAA8B,CAG9B,2EACF,CACA,mBAEE,aAAc,CADd,gBAAiB,CAEjB,WACF,CACA,qBACE,aAAc,CAGd,kBAAmB,CADnB,eAAgB,CADhB,0CAGF,CACA,sCACE,aAAc,CACd,iBACF,CACA,mCACE,iBACF,CACA,gGAEE,mCACF,CACA,oBACE,OACF,CACA,iBACE,kCACF,CACA,YAGE,MAAO,CAFP,uBAA0B,CAC1B,UAEF,CACA,sBACE,KAAM,CACN,gCACF,CACA,+BACE,uBACF,CACA,yBAGE,2CAA4C,CAD5C,QAAS,CADT,UAIF,CACA,2DAFE,kCAIF,CACA,yBACE,QAAS,CACT,+BACF,CACA,kCACE,uBACF,CACA,yBACE,sBACE,YACF,CACA,qCACE,4EACF,CACA,wCACE,kFACF,CACF,CACA,yBACE,YAGE,2CAA4C,CAF5C,QAAS,CACT,gDAEF,CACA,sBACE,QACF,CACA,yBACE,aACF,CACA,yBACE,qDACF,CACF,CACA,0BACE,YACE,aAAc,CACd,UACF,CACA,kCACE,SACF,CACA,mCACE,SAAU,CACV,UACF,CACA,oCACE,QAAS,CAET,gDAAqD,CADrD,+BAEF,CACF,CACA,mBAEE,wDAA2D,CAD3D,iBAEF,CACA,WAEE,2CAA4C,CAG5C,QAAS,CADT,mBAAqB,CAHrB,uBAA0B,CAE1B,uBAGF,CAIA,yCACE,kBACF,CACA,qBACE,OACF,CACA,wBACE,QAAS,CAET,4CAAgD,CADhD,UAEF,CAIA,mEACE,2CACF,CACA,wBACE,6CACF,CACA,yBACE,WACE,QAAS,CACT,gDACF,CACA,wBACE,aACF,CACF,CACA,0BACE,WACE,aAAc,CACd,UACF,CACA,iCACE,SACF,CACA,kCACE,SAAU,CACV,UACF,CACA,mCACE,QAAS,CAET,gDAAqD,CADrD,+BAEF,CACA,wBACE,8CACF,CACA,qBACE,QACF,CACF,CACA,kBAEE,gBAAiB,CADjB,iBAEF,CAEA,MACE,gCAAiC,CACjC,6CACF,CACA,KACE,4BAA6B,CAC7B,wBAAyB,CACzB,wCAAyC,CACzC,sCACF,CACA,IACE,4BAA6B,CAC7B,wBAAyB,CACzB,wCAAyC,CACzC,sCACF,CACA,WACE,oBAAqB,CAIrB,WAAY,CADZ,+BAAgC,CAEhC,iBAAkB,CAJlB,qBAAsB,CACtB,8BAIF,CACA,4BAGE,aAAc,CADd,WAAY,CAEZ,iBAAkB,CAHlB,UAIF,CAEA,oBAGE,eAAgB,CADhB,SAAU,CADV,kBAAmB,CAGnB,aACF,CACA,iBAKE,6CAA8C,CAG9C,qDAAsD,CANtD,QAAS,CAET,yCAA0C,CAH1C,iBAAkB,CAElB,OAAQ,CAIR,2CAA4C,CAD5C,aAGF,CACA,4BACE,4DAA6D,CAC7D,uBACF,CACA,+GAIE,+BAAgC,CADhC,eAEF,CACA,0BACE,0CACF,CACA,uBACE,yBACF,CACA,uBACE,yBACF,CACA,gBACE,+BACF,CACA,sBACE,iDACF,CACA,2BAKE,uBAAwB,CADxB,mBAAoB,CAHpB,aAAc,CAEd,aAAc,CAId,QAAS,CADT,iBAAkB,CAElB,OAAQ,CACR,4BAA6B,CAP7B,WAQF,CACA,oGAEE,qDACF,CACA,uCAEE,WAAa,CADb,4CAEF,CACA,wCAEE,iBAAmB,CADnB,6CAEF,CACA,wCAEE,iBAAmB,CADnB,6CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,WAAa,CADb,8CAEF,CACA,8BACE,GACE,sBACF,CACA,GACE,uBACF,CACF,CACA,oCACE,MAEE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACF,CACA,eACE,+BACF,CACA,qBACE,kDACF,CACA,4BACE,SAAU,CACV,mBAAoB,CAEpB,sBAAuB,CACvB,sBAAuB,CACvB,cAAe,CAHf,8DAA+D,CAI/D,wBAAyB,CACzB,0BACF,CACA,oEAEE,gHACF,CACA,mCACE,MAEE,cACF,CACA,IACE,cACF,CACA,IACE,cACF,CACA,IACE,cACF,CACF,CACA,+BACE,GACE,sBACF,CACA,GACE,uBACF,CACF,CACA,sCACE,GAEE,uBAAwB,CADxB,wBAEF,CACA,MAEE,sBAAuB,CADvB,wBAEF,CACA,IACE,uBAAwB,CACxB,wBACF,CACA,MAEE,uBAAwB,CADxB,yBAEF,CACA,MAEE,sBAAuB,CADvB,yBAEF,CACA,IACE,uBAAwB,CACxB,uBACF,CACA,MAEE,uBAAwB,CADxB,uBAEF,CACA,MAEE,sBAAuB,CADvB,uBAEF,CACA,IACE,uBAAwB,CACxB,uBACF,CACA,MAEE,uBAAwB,CADxB,sBAEF,CACA,MAEE,sBAAuB,CADvB,sBAEF,CACA,GACE,uBAAwB,CACxB,wBACF,CACF,CAOA,KACE,2BAA4B,CAC5B,kCAAmC,CACnC,yCACF,CACA,qBAEE,+CACF,CACA,IACE,2BAA4B,CAC5B,kCACF,CACA,kCAGE,6DACF,CACA,mCAOE,4EAAgF,CAGhF,iDAAkD,CALlD,aAAc,CAId,mCAAoC,CANpC,eAAgB,CAChB,iBAAkB,CAIlB,2BAA4B,CAF5B,2BAA4B,CAJ5B,UASF,CACA,aACE,qBACF,CACA,kBACE,2EAA6E,CAE7E,WAAY,CACZ,iBAAkB,CAGlB,OAAQ,CAFR,KAAM,CAGN,+BAAkC,CAFlC,wBAA0B,CAJ1B,UAOF,CACA,sBACE,aACF,CACA,yDASE,2EAA6E,CAP7E,UAAW,CAMX,aAAc,CAFd,WAAY,CAHZ,iBAAkB,CAOlB,OAAQ,CANR,KAAM,CAGN,uBAA+B,CAI/B,6BAA8B,CAN9B,UAOF,CACA,kCACE,yBACF,CACA,gBACE,sCACF,CACA,iBACE,uCACF,CACA,mWAkBE,yBAA2B,CAH3B,MAAO,CADP,iBAAkB,CAElB,KAAM,CAGN,qCAAuC,CAFvC,aAGF,CACA,0BACE,GACE,SAAU,CACV,mBACF,CACA,GACE,SAAU,CACV,mBACF,CACF,CACA,2BACE,GACE,SAAU,CACV,mBACF,CACA,GACE,SAAU,CACV,mBACF,CACF,CACA,kCACE,qDACF,CACA,iCACE,YACF,CACA,8CAKE,gEAAiE,CAHjE,+HAA8I,CAE9I,0BAA2B,CAD3B,wBAAyB,CAFzB,UAKF,CACA,oCACE,GACE,+BACF,CACA,GACE,gCACF,CACF,CACA,+CACE,GACE,uBACF,CACA,GACE,+BACF,CACF,CACA,iCACE,sDACF,CACA,gCACE,sDACF,CACA,6CAEE,oEAAqE,CADrE,eAEF,CACA,4CAEE,oEAAqE,CADrE,eAAgB,CAEhB,8BACF,CACA,qCACE,GACE,oCACF,CACA,IACE,qCACF,CACA,IACE,qCACF,CACA,GACE,qCACF,CACF,CACA,qCACE,GACE,oCACF,CACA,IACE,oCACF,CACA,IACE,sCACF,CACA,IACE,sCACF,CACA,GACE,sCACF,CACF,CACA,iDACE,GACE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACF,CACA,mDACE,GAEE,wBAAyB,CADzB,mBAEF,CACA,MAEE,wBAAyB,CADzB,mBAEF,CACA,IAEE,wBAAyB,CADzB,mBAEF,CACA,MAEE,wBAAyB,CADzB,mBAEF,CACA,IAEE,wBAAyB,CADzB,mBAEF,CACA,MAEE,wBAAyB,CADzB,mBAEF,CACA,IAEE,wBAAyB,CADzB,mBAEF,CACA,GAEE,wBAAyB,CADzB,mBAEF,CACF,CAEA,KACE,gCAAiC,CACjC,iEAAqE,CACrE,4CAAgD,CAChD,yDACF,CACA,qBAEE,sDAA0D,CAC1D,kDACF,CACA,IACE,gCAAiC,CACjC,0CACF,CACA,kCAGE,2DAA4D,CAC5D,0DACF,CACA,4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E,+DAEE,4EAA6E,CACrE,oEAAqE,CAF7E,qFAGF,CACF,CACA,+CAGE,qEAAsE,CAKtE,QAAS,CAPT,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,QAAS,CAOT,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CANX,UASF,CACA,4CAIE,gCAAiC,CAFjC,+DAAgE,CAGhE,QAAS,CAFT,aAAc,CAFd,kDAKF,CACA,4CACE,YACF,CACA,qIAEE,sBACF,CACA,oDACE,WACF,CACA,oDACE,UACF,CACA,oDACE,gBACF,CACA,oDACE,UACF,CACA,oDACE,UACF,CACA,oDACE,gBACF,CACA,oDACE,gBACF,CACA,oDACE,YACF,CACA,oDACE,gBACF,CACA,qDACE,UACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,YACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,SACF,CACA,yBACE,2DACE,WACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,gBACF,CACA,2DACE,YACF,CACA,2DACE,gBACF,CACA,4DACE,UACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,YACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,SACF,CACF,CACA,yBACE,0DACE,WACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,UACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,gBACF,CACA,0DACE,YACF,CACA,0DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,YACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,SACF,CACF,CACA,yBACE,2DACE,WACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,gBACF,CACA,2DACE,YACF,CACA,2DACE,gBACF,CACA,4DACE,UACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,YACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,SACF,CACF,CACA,0BACE,0DACE,WACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,UACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,gBACF,CACA,0DACE,YACF,CACA,0DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,YACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,SACF,CACF,CACA,0BACE,2DACE,WACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,gBACF,CACA,2DACE,YACF,CACA,2DACE,gBACF,CACA,4DACE,UACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,YACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,SACF,CACF,CACA,eACE,0CACF,CACA,qBAGE,gEAAiE,CAKjE,WAAY,CAPZ,UAAW,CAGX,aAAc,CAOd,WAAY,CAFZ,SAAU,CAPV,iBAAkB,CAKlB,OAAQ,CADR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B,CAI/B,uBAA0B,CAH1B,2CAA6C,CAE7C,SAOF,CACA,6BACE,+CACF,CACA,mCACE,wBAAyB,CACjB,gBACV,CACA,oCACE,uBACF,CACA,6DACE,mCAAqC,CACrC,UACF,CACA,8BACE,kCACF,CACA,6EAEE,uBACF,CACA,sCACE,SAAU,CACV,mBACF,CACA,+BAQE,qBAAsB,CAJtB,YAAa,CAEb,eAAgB,CAGhB,mBAAoB,CARpB,iBAAkB,CASlB,OAAQ,CARR,KAAM,CAGN,2BAA4B,CAE5B,6BAA8B,CAJ9B,WAQF,CACA,qDACE,uFAAwF,CACxF,yFACF,CACA,6BACE,uBACF,CACA,gGAGE,uBACF,CACA,4CACE,uBACF,CACA,4CACE,uBACF,CACA,yFAGE,WACF,CACA,2DAEE,eACF,CACA,qGAEE,SAAU,CACV,mBACF,CACA,uGAEE,SAAU,CACV,mBACF,CACA,2CAEE,gCAAiC,CADjC,aAAc,CAEd,mBACF,CACA,8BACE,oDAAqD,CACrD,wDACF,CACA,mBACE,mBACF,CACA,sBAEE,QAAS,CAET,MAAO,CAEP,SAAU,CACV,mBAAoB,CAJpB,iBAAkB,CAElB,KAAM,CAGN,iBAAkB,CAPlB,OAQF,CACA,gDACE,8CACE,gDACF,CACA,qHAEE,4DACF,CACA,gGACE,4CACF,CACA,oEAEE,8CAA+C,CAD/C,4CAEF,CACF,CACA,0CACE,eACF,CACA,eAQE,yBAA8B,CAH9B,WAAY,CAHZ,MAAO,CAOP,SAAU,CAFV,mBAAoB,CANpB,cAAe,CAEf,KAAM,CACN,UAAW,CAEX,WAIF,CACA,kBACE,4CAA+C,CAC/C,mBACF,CACA,mBACE,6CACF,CACA,iFACE,eAEE,kCAAmC,CAC3B,0BAA2B,CAFnC,sBAGF,CACF,CACA,iCACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,kCACE,GACE,SACF,CACA,GACE,SACF,CACF,CAEA,MACE,wBAAyB,CACzB,8BAA+B,CAC/B,kCACF,CACA,uBAEE,kCACF,CACA,KACE,qBAAsB,CACtB,yBAA0B,CAC1B,iCAAkC,CAClC,4BAA6B,CAC7B,4BAA6B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B,YAAa,CAGb,sBACF,CACA,mCAKE,iFAAkF,CADlF,8EAA+E,CAF/E,aAAc,CACd,iBAGF,CACA,kDAGE,8DAAgE,CAChE,2CAA4C,CAC5C,+CAAgD,CAChD,iBAAkB,CAJlB,UAKF,CACA,mCACE,WACF,CACA,6DAGE,mDACF,CACA,0DAGE,sFAAwF,CACxF,yFAA2F,CAC3F,uEAAwE,CACxE,oDACF,CACA,srBAYE,oCACF,CACA,maAME,2DACF,CACA,qbAME,oCAAyC,CACzC,qCACF,CACA,6DAGE,kDACF,CACA,6DAGE,8DAA+D,CAC/D,kDACF,CACA,sEAEE,gDAAiD,CACjD,4DACF,CACA,gEAGE,2BAA4B,CAC5B,8CACF,CACA,wGAGE,cACF,CACA,0CAEE,8GACF,CACA,4JAIE,6BACF,CACA,0PAME,uBACF,CACA,8tBAaE,sCAAuC,CADvC,uBAEF,CACA,uEAKE,eAAgB,CADhB,uBAA+B,CAD/B,uBAGF,CACA,uCAEE,iGACF,CAQA,qBACE,YACF,CACA,0BAKE,aAAc,CAJd,aAAc,CACd,eAAgB,CAEhB,iBAAkB,CADlB,sBAGF,CACA,8FAGE,kEACF,CACA,mCAGE,8FAAgG,CAKhG,QAAS,CAPT,UAAW,CAeX,aAAc,CANd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,QAAS,CAOT,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CANX,UASF,CAIA,0BACE,QACF,CACA,uEAEE,sBACF,CACA,qCACE,eACF,CAEA,MACE,kBACF,CACA,MACE,YACF,CACA,eACE,sBACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,yBACE,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACF,CACA,yBACE,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACF,CACA,yBACE,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACF,CACA,0BACE,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACF,CACA,0BACE,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,C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IE,sCAAuC,CACvC,yCAA0C,CAF1C,mCAGF,CACA,oDACE,yCACE,YACF,CACA,qHAGE,aACF,CACA,sCACE,iBACF,CACA,6CAGE,kDAAmD,CAKnD,WAAY,CAPZ,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,KAAM,CAON,sDAAyD,CADzD,sBAAwB,CADxB,UAAW,CANX,UASF,CACA,4CACE,wBACF,CACA,sCACE,qEAAsE,CACtE,sEAAuE,CAIvE,oBAAqB,CACrB,kBAAmB,CAFnB,YAAa,CAFb,WAAY,CAKZ,0BAA2B,CAJ3B,2CAA4C,CAK5C,gBACF,CACA,6CACE,sBACF,CACA,iEAME,yBAA2B,CAI3B,qCAAsC,CAPtC,oCAAqC,CADrC,uBAAyB,CAUzB,aAAc,CAJd,wCAAyC,CACzC,4CAA6C,CAJ7C,WAAY,CAMZ,gBAAiB,CAPjB,iBAAkB,CAGlB,wBAA0B,CAN1B,SAYF,CACA,oDACE,iBAAkB,CAElB,OAAQ,CADR,KAEF,CACA,uDACE,kBACF,CACA,uDACE,iBACF,CACF,CACA,4DAEE,YACF,CACA,yBACE,yBACE,kBACF,CACF,CACA,qDACE,mCACE,kBACF,CACF,CACA,0DAEE,YACF,CACA,yBACE,wBACE,kBACF,CACF,CACA,qDACE,kCACE,kBACF,CACF,CACA,4DAEE,YACF,CACA,yBACE,yBACE,kBACF,CACF,CACA,qDACE,mCACE,kBACF,CACF,CACA,0DAEE,YACF,CACA,0BACE,wBACE,kBACF,CACF,CACA,sDACE,kCACE,kBACF,CACF,CACA,4DAEE,YACF,CACA,0BACE,yBACE,kBACF,CACF,CACA,sDACE,mCACE,kBACF,CACF,CACA,8FAEE,iBACF,CACA,6CACE,gBACF,CACA,wCACE,eACF,CACA,4JAIE,iBACF,CAKA,iHAGE,WAAY,CADZ,UAEF,CACA,oDACE,iBACF,CACA,oCACE,iBACF,CACA,kCACE,gBACF,CACA,4FAEE,iBACF,CACA,wFAGE,WAAY,CACZ,gBAAiB,CAFjB,UAGF,CACA,4CACE,gBACF,CACA,uCACE,eACF,CACA,wJAIE,iBACF,CACA,yCAEE,WAAY,CACZ,gBAAiB,CAFjB,UAGF,CACA,sDACE,eACF,CACA,qEAGE,WAAY,CADZ,UAEF,CACA,mDACE,iBACF,CACA,mCACE,iBACF,CACA,iCACE,gBACF,CACA,oCACE,mBACF,CAEA,MACE,oBAAqB,CACrB,qCAAsC,CACtC,+BAAgC,CAChC,gCAAiC,CACjC,yBACF,CACA,KAGE,wBAAyB,CACzB,2BAA4B,CAC5B,kBAAmB,CACnB,+CAAmD,CACnD,0CAA2C,CAC3C,2BAA4B,CAC5B,qCAAsC,CACtC,sCAAuC,CACvC,uCAAwC,CACxC,gCAAiC,CACjC,qDAAyD,CACzD,8BAA+B,CAC/B,4BACF,CACA,IAIE,2BAA4B,CAC5B,kBAAmB,CACnB,gDAAoD,CACpD,2BAA4B,CAC5B,qCAAsC,CACtC,sCAAuC,CACvC,uCAAwC,CACxC,qCAAsC,CACtC,gCAAiC,CACjC,sDACF,CACA,kCAGE,gDAAiD,CACjD,qDAAsD,CACtD,iDAAkD,CAClD,8CACF,CACA,cACE,YACF,CACA,KACE,iBAAkB,CAClB,YACF,CACA,OACE,oDACF,CACA,gDAGE,0DACF,CACA,mDAGE,4DACF,CACA,6CAGE,wBACF,CACA,sDAGE,8DACF,CACA,sDAGE,QAAS,CACT,0BACF,CACA,sDAGE,OAAQ,CACR,0BACF,CACA,mBAEE,QAAS,CADT,OAAQ,CAER,2CACF,CACA,sBAUE,kBAAmB,CARnB,6DAA+D,CAI/D,yCAA0C,CAD1C,mCAAoC,CASpC,8BAA+B,CAL/B,YAAa,CALb,yBAA0B,CAO1B,sBAAuB,CACvB,eAAgB,CALhB,iBAAkB,CAClB,uBAA0B,CAL1B,wBAAyB,CAUzB,SAEF,CACA,SAEE,QAAS,CADT,iBAAkB,CAElB,OAAQ,CACR,wDAA2D,CAC3D,cACF,CACA,WAEE,SAAU,CADV,2DAEF,CACA,eACE,yCAA0C,CAE1C,gCAAiC,CADjC,+BAEF,CACA,aACE,YAAa,CAEb,mBAAoB,CACpB,iBAAkB,CAFlB,iBAGF,CACA,eACE,SACF,CACA,gCAEE,SAAU,CADV,0DAEF,CACA,kCAEE,SAAU,CADV,wDAEF,CACA,yBAEE,mBAAoB,CADpB,kBAEF,CACA,2BACE,SAAU,CACV,0CACF,CACA,wCACE,qBACF,CACA,wCACE,oBACF,CACA,wCACE,qBACF,CACA,wCACE,oBACF,CACA,wCACE,qBACF,CACA,qCAEE,QAAS,CAET,gDAAqD,CADrD,+BAEF,CACA,iBACE,WAAY,CAEZ,6BAA8B,CAD9B,kBAEF,CACA,mBACE,wCAA4C,CAC5C,8BACF,CACA,qBACE,kBACF,CACA,oBAGE,qBAAsB,CADtB,eAAgB,CADhB,QAGF,CACA,sBACE,yCAA6C,CAC7C,2BACF,CACA,wBACE,eACF,CACA,qCAGE,gCAAiC,CACjC,+CAAoD,CAFpD,OAGF,CACA,kBAEE,iBAAkB,CADlB,UAEF,CACA,oBACE,wCAA8C,CAC9C,6BACF,CACA,sBACE,iBACF,CACA,mBAGE,0BAA2B,CAF3B,SAAU,CACV,gBAEF,CACA,qBACE,yCAA6C,CAC7C,4BACF,CACA,uBACE,gBACF,CACA,oBAIE,WAAY,CAHZ,MAAQ,CACR,KAAO,CACP,UAEF,CACA,sBACE,iBACF,CACA,kCAGE,WAAY,CAFZ,QAAS,CAGT,kBAAmB,CAFnB,gDAAqD,CAGrD,oCAAsC,CACtC,8BACF,CACA,mCACE,SAAU,CAGV,gBAAiB,CAFjB,+CAAoD,CACpD,OAAQ,CAER,oCAAsC,CACtC,4BACF,CACA,mCACE,QAAS,CACT,gDAAqD,CAErD,eAAgB,CADhB,QAAS,CAET,mCAAqC,CACrC,2BACF,CACA,mCAIE,iBAAkB,CAFlB,+CAAoD,CADpD,UAAW,CAEX,OAAQ,CAER,mCAAqC,CACrC,6BACF,CACA,WAEE,uDAAyD,CADzD,yCAA0C,CAE1C,mCACF,CACA,aAEE,yBAA2B,CAD3B,eAEF,CACA,0BACE,SACF,CACA,0CAGE,wBACF,CACA,iDACE,YACF,CACA,cAEE,qCAAsC,CADtC,UAEF,CACA,gBAEE,kCAAmC,CADnC,UAEF,CACA,kBACE,wCACF,CACA,0BACE,wCACF,CACA,gBACE,oBACF,CACA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CACA,gBAIE,mBAAoB,CADpB,qBAAsB,CAFtB,oDAAqD,CAIrD,aAAc,CAEd,oCAAqC,CALrC,iBAAkB,CAIlB,mCAEF,CACA,iBAEE,YAAa,CACb,qBAAsB,CAFtB,iBAGF,CACA,8CAGE,aACF,CACA,gBACE,yCAA0C,CAC1C,4CACF,CACA,gBACE,yCAA0C,CAC1C,4CAA6C,CAC7C,kBACF,CACA,cACE,uCAAwC,CACxC,0CAA2C,CAC3C,8CACF,CACA,gBAQE,oDAAqD,CAPrD,qBAAsB,CAEtB,YAAa,CACb,qBAAsB,CAGtB,4CAA6C,CAD7C,gDAAiD,CAIjD,8CAA+C,CAD/C,6FAA8F,CAJ9F,iBAAkB,CAHlB,qBASF,CACA,mBACE,aAAc,CAEd,WAAY,CADZ,cAAe,CAEf,UACF,CACA,0CAEE,aACF,CACA,qBACE,8CAA+C,CAE/C,iDAAkD,CADlD,6CAEF,CACA,qBACE,8CAA+C,CAE/C,iDAAkD,CADlD,6CAEF,CACA,cACE,eACF,CACA,cAGE,qBAAsB,CADtB,kBAAmB,CADnB,gBAGF,CACA,8BAEE,gEAAkE,CADlE,uCAEF,CACA,+BACE,sBACF,CACA,kBAEE,mBAAoB,CADpB,0BAEF,CACA,kCAEE,8CAA+C,CAD/C,2CAEF,CACA,mCACE,oBACF,CACA,4CACE,SACF,CAUA,8KACE,YACF,CACA,4BACE,wCACF,CACA,yBACE,qCACF,CACA,0BACE,oBAAqB,CACrB,WAAY,CACZ,qBACF,CACA,8BAGE,sDAAuD,CAGvD,iBAAkB,CALlB,oBAAqB,CAGrB,kDAAmD,CAFnD,iBAAkB,CAGlB,qBAEF,CACA,sCACE,GACE,+BACF,CACA,GACE,uBACF,CACF,CACA,mCACE,GACE,gCACF,CACA,GACE,uBACF,CACF,CACA,0FAIE,eACF,CACA,wCAEE,iBACF,CACA,qBACE,cACF,CACA,qBACE,cACF,CACA,oBACE,qGACF,CACA,gCACE,6DACF,CACA,oCACE,6DAA8D,CAC9D,8DACF,CACA,+BACE,gEACF,CACA,mCACE,gEAAiE,CACjE,iEACF,CACA,0BACE,iBACF,CACA,0BACE,cACF,CACA,uBACE,iDACF,CACA,mHAGE,uDACF,CACA,uCAEE,2PAA4P,CAD5P,oEAEF,CACA,sCACE,wEACF,CACA,oDACE,oIACF,CACA,yEACE,gTACF,CACA,uGACE,2BACF,CACA,mBACE,mDACF,CACA,uGAGE,wDACF,CACA,mCAEE,wPAA4P,CAD5P,qEAEF,CACA,kCACE,yEACF,CACA,gDAIE,8SAAoT,CAHpT,oIACF,CAIA,8EACE,4BACF,CACA,2CACE,cACF,CACA,2HAIE,8CAA+C,CAC/C,iBAAkB,CAHlB,UAAW,CACX,iBAGF,CACA,6DAIE,QAAW,CAFX,WAAY,CACZ,QAAS,CAFT,UAIF,CACA,8DAIE,WAAY,CAFZ,UAAW,CACX,SAAU,CAFV,SAIF,CACA,mCAEE,UAAW,CADX,SAEF,CACA,uCACE,gBACF,CACA,+CACE,mDACF,CACA,gDACE,wDACF,CACA,gDACE,uDACF,CACA,wCACE,GACE,WACF,CACA,IACE,UACF,CACA,IACE,UACF,CACF,CACA,sFAIE,eACF,CACA,sCAEE,iBACF,CACA,oBACE,cACF,CACA,yBACE,iBACF,CACA,yBACE,cACF,CACA,mBACE,8GACF,CACA,0CAEE,oDACF,CACA,sBACE,gDACF,CACA,gHAGE,gBACF,CACA,uNAGE,6BACF,CACA,uNAGE,0BACF,CACA,yOAGE,6BAA8B,CAC9B,0BACF,CACA,uDACE,eACF,CACA,kBACE,kDACF,CACA,oGAGE,iBACF,CACA,2MAGE,8BACF,CACA,2MAGE,2BACF,CACA,6NAGE,8BAA+B,CAC/B,2BACF,CACA,mDACE,wDACF,CACA,0CACE,cACF,CACA,kCAEE,UAAW,CADX,SAEF,CACA,sCACE,gBACF,CACA,8CACE,kDACF,CACA,+CACE,uDACF,CACA,+CACE,sDACF,CACA,uCACE,GACE,uBACF,CACA,IACE,0BACF,CACA,IACE,uBACF,CACF,CAEA,MACE,wCAAyC,CACzC,kCAAmC,CACnC,4CAKF,CACA,KACE,2BAA4B,CAC5B,8BAA+B,CAC/B,6CAA8C,CAI9C,wCAAyC,CACzC,2CAA4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Z,iBAAkB,CAKlB,6BAA8B,CAC9B,mFAAqF,CALrF,UAAW,CAEX,SAKF,CACA,wEAGE,uBACF,CACA,mBACE,kBACF,CACA,iBACE,kBACF,CACA,cAME,aAAc,CALd,aAAc,CAEd,WAAY,CACZ,iBAAkB,CAClB,6BAA8B,CAH9B,UAKF,CACA,8BACE,iBACF,CAEA,oDAEE,WACF,CACA,mCACE,sBAAuB,CACvB,oCACF,CACA,sCAEE,kCAAmC,CAC3B,0BAA2B,CAFnC,uBAGF,CAEA,2CACE,kBACF,CACA,2BACE,2BACF,CACA,WACE,kBACF,CACA,wDAEE,2BACF,CAEA,iCAIE,uBAAwB,CAHxB,aAAc,CACd,oBAIF,CACA,oDACE,YACF,CACA,+CACE,6BACF,CACA,mDACE,4BACF,CACA,iDACE,4BACF,CACA,kDACE,qBACF,CACA,gEACE,sBACF,CACA,wDACE,UAAW,CACX,aAAc,CACd,UACF,CACA,+DACE,+BAAgC,CAChC,uBACF,CACA,6FACE,wDACF,CACA,0EACE,WAAY,CACZ,cAAe,CACf,yCACF,CACA,2FACE,uDACF,CACA,wEAGE,0CAA2C,CAD3C,aAAc,CADd,UAGF,CAGA,sLAcE,WAAY,CAHZ,MAAO,CAIP,mBAAoB,CALpB,iBAAkB,CAElB,KAAM,CACN,UAAW,CAGX,UACF,CACA,gCACE,0BACF,CACA,qCACE,qEACF,CACA,sCACE,oEACF,CACA,oCACE,mEACF,CACA,uCACE,qEACF,CACA,uBAaE,wEAA6B,CAD7B,iBAAkB,CAClB,gCAA6B,CAH7B,qBAAsB,CARtB,WAAY,CAEZ,QAAS,CAET,iBAAkB,CAClB,gBAAiB,CAJjB,iBAAkB,CAElB,OAAQ,CAIR,oBAAqB,CARrB,UAAW,CAOX,UAMF,CACA,+HAEE,kDACF,CACA,6BACE,6BACF,CACA,6BACE,6BACF,CACA,iCACE,GACE,sBACF,CACA,GACE,uBACF,CACF,CAEA,8BACE,kCAAmC,CACnC,uBACF,CACA,sDACE,UAAW,CAEX,MAAO,CAEP,mBAAoB,CAHpB,iBAAkB,CAElB,KAEF,CACA,wEACE,UAAW,CAC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CACE,qCAAuC,CACvC,+BACF,CAEA,gBACE,oBACF,CACA,oBAEE,WAAY,CADZ,cAEF,CACA,wBACE,0BACF,CACA,qBACE,+BACF,CAEA,iBACE,oBACF,CACA,qBAEE,WAAY,CADZ,cAEF,CACA,sBACE,0BACF,CACA,sBACE,+BACF,CAEA,6CASE,0CAA2C,CAR3C,uFAAqG,CACrG,+EAA6F,CAK7F,6BAA8B,CAC9B,qBAAsB,CAHtB,0BAA2B,CAC3B,kBAAmB,CAHnB,2BAA4B,CAC5B,mBAMF,CACA,sBACE,0CACF,CACA,uBACE,2CACF,CAEA,gCACE,GACE,SACF,CACA,IACE,UACF,CACA,GACE,SACF,CACF,CACA,gCACE,GACE,6BAA8B,CAC9B,qBACF,CACA,GACE,+BAAgC,CAChC,uBACF,CACF,CACA,iCACE,GACE,kBACF,CACA,IACE,kBACF,CACA,IACE,qBACF,CACA,GACE,kBACF,CACF,CACA,MACE,qBAAsB,CACtB,sCACF,CACA,MACE,wBAAyB,CACzB,4CACF,CAEA,MACE,qCAAsC,CACtC,iCAAkC,CAClC,uCAAwC,CACxC,+BAAgC,CAChC,sCAAuC,CACvC,kCAAmC,CACnC,mCAAoC,CACpC,sCAAuC,CACvC,yCAA0C,CAC1C,sCAAuC,CACvC,sCAAuC,CACvC,kCAAmC,CACnC,mCAAoC,CACpC,0CAA2C,CAC3C,8CAA+C,CAC/C,mCAAoC,CACpC,0CAA2C,CAC3C,2CAA4C,CAC5C,mDAAoD,CACpD,yDAA0D,CAC1D,qCAAsC,CACtC,qCAAsC,CACtC,iDAAqD,CACrD,iDAAqD,CACrD,2CACF,CACA,uBAEE,wCAAyC,CACzC,wCAAyC,CACzC,sDAA0D,CAC1D,qCAAsC,CACtC,6DACF,CACA,cAGE,YAAa,CACb,qBAAsB,CAHtB,eAAgB,CAChB,UAGF,CACA,wGAGE,iBACF,CACA,0BACE,gDACF,CACA,iCACE,WACF,CACA,6CACE,wCACF,CACA,0BACE,gDACF,CACA,kCACE,yCACF,CACA,uGAGE,WACF,CACA,kIAGE,iBACF,CACA,sBAGE,eAAgB,CADhB,cAAe,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CA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,gBACE,wBACF,CACA,oBACE,4BACF,CACA,4BACE,oCACF,CACA,uBACE,+BACF,CACA,+BACE,uCACF,CACA,4BACE,oCACF,CACA,wBACE,gCACF,CACA,0BACE,kCACF,CACA,+BACE,uCACF,CACA,8BACE,sCACF,CACA,8BACE,sCACF,CACA,yBACE,iCACF,CACA,uBACE,+BACF,CACA,qBACE,6BACF,CACA,sBACE,8BACF,CACA,uBACE,+BACF,CACA,0BACE,kCACF,CACA,wBACE,gCACF,CACA,sBACE,8BACF,CACA,6BACE,qCACF,CACA,4BACE,oCACF,CACA,uBACE,+BACF,CACA,sBACE,8BACF,CACA,wBACE,gCACF,CACA,sBACE,8BACF,CACA,oBACE,4BACF,CACA,qBACE,6BACF,CACA,uBACE,+BACF,CACA,qBACE,6BACF,CACA,mBACE,2BACF,CACA,oBACE,4BACF,CACA,iBACE,yBACF,CACA,mBACE,2BACF,CACA,kBACE,0BACF,CACA,oBACE,4BACF,CACA,YACE,oBACF,CACA,aACE,qBACF,CACA,YACE,oBACF,CACA,uBACE,+BACF,CACA,uBACE,+BACF,CACA,oBACE,4BACF,CACA,YACE,mBACF,CACA,iBACE,wBACF,CAIA,yCAFE,yBAKF,CAHA,uBACE,wBAEF,CACA,gBACE,uBACF,CAIA,wCAFE,0BAKF,CAHA,qBACE,uBAEF,CACA,WACE,kBACF,CACA,gBACE,uBACF,CAIA,uCAFE,wBAKF,CAHA,sBACE,uBAEF,CACA,eACE,sBACF,CAIA,sCAFE,yBAKF,CAHA,oBACE,sBAEF,CACA,YACE,oBACF,CACA,WACE,oBACF,CACA,SACE,8CACF,CACA,cACE,sDACF,CACA,aACE,kDACF,CACA,kBACE,0DACF,CACA,gBACE,qDACF,CACA,qBACE,6DACF,CACA,cACE,mDACF,CACA,mBACE,2DACF,CACA,eACE,oDACF,CACA,oBACE,4DACF,CACA,kBAEE,qDAAuD,CADvD,kDAEF,CACA,uBAEE,6DAAiE,CADjE,0DAEF,CACA,oBACE,mDAAqD,CACrD,oDACF,CACA,yBACE,2DAA+D,CAC/D,4DACF,CACA,QACE,4CACF,CACA,aACE,oDACF,CACA,YACE,gDACF,CACA,iBACE,wDACF,CACA,eACE,mDACF,CACA,oBACE,2DACF,CACA,aACE,iDACF,CACA,kBACE,yDACF,CACA,cACE,kDACF,CACA,mBACE,0DACF,CACA,iBAEE,mDAAqD,CADrD,gDAEF,CACA,sBAEE,2DAA+D,CAD/D,wDAEF,CACA,mBACE,iDAAmD,CACnD,kDACF,CACA,wBACE,yDAA6D,CAC7D,0DACF,CACA,qBACE,gDACF,CACA,mBACE,yDACF,CACA,uBACE,yDACF","file":"../../spreadsheeteditor/mobile/css/framework7-rtl.css","sourcesContent":["/**\n * Framework7 8.3.2\n * Full featured mobile HTML framework for building iOS & Android apps\n * https://framework7.io/\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 27, 2024\n */\n\n/*====================\n Core\n ==================== */\n:root {\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n --f7-safe-area-top: 0px;\n --f7-safe-area-bottom: 0px;\n --f7-safe-area-outer-left: 0px;\n --f7-safe-area-outer-right: 0px;\n --f7-device-pixel-ratio: 1;\n}\n@supports (left: env(safe-area-inset-left)) {\n :root {\n --f7-safe-area-top: env(safe-area-inset-top);\n --f7-safe-area-bottom: env(safe-area-inset-bottom);\n }\n :root .ios-left-edge,\n :root .ios-edges,\n :root .safe-area-left,\n :root .safe-areas,\n :root .popup,\n :root .sheet-modal,\n :root .panel-left {\n --f7-safe-area-left: env(safe-area-inset-left);\n --f7-safe-area-outer-left: env(safe-area-inset-left);\n }\n :root .ios-right-edge,\n :root .ios-edges,\n :root .safe-area-right,\n :root .safe-areas,\n :root .popup,\n :root .sheet-modal,\n :root .panel-right {\n --f7-safe-area-right: env(safe-area-inset-right);\n --f7-safe-area-outer-right: env(safe-area-inset-right);\n }\n :root .no-safe-areas,\n :root .no-safe-area-left,\n :root .no-ios-edges,\n :root .no-ios-left-edge {\n --f7-safe-area-left: 0px;\n --f7-safe-area-outer-left: 0px;\n }\n :root .no-safe-areas,\n :root .no-safe-area-right,\n :root .no-ios-edges,\n :root .no-ios-right-edge {\n --f7-safe-area-right: 0px;\n --f7-safe-area-outer-right: 0px;\n }\n}\n@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 2dppx) {\n :root {\n --f7-device-pixel-ratio: 2;\n }\n}\n@media (-webkit-min-device-pixel-ratio: 3), (min-resolution: 3dppx) {\n :root {\n --f7-device-pixel-ratio: 3;\n }\n}\n/*====================\n Fonts & Bars\n ==================== */\n:root {\n --f7-font-size: 14px;\n --f7-bars-translucent-opacity: 0.8;\n --f7-bars-translucent-blur: 20px;\n}\n.ios {\n --f7-font-family: -apple-system, SF Pro Text, SF UI Text, system-ui, Helvetica Neue, Helvetica, Arial, sans-serif;\n --f7-line-height: 1.4;\n /*\n --f7-bars-link-color: var(--f7-theme-color);\n */\n --f7-bars-text-color: #000;\n --f7-text-color: #000;\n --f7-bars-bg-color: #f7f7f8;\n --f7-bars-bg-color-rgb: 247, 247, 248;\n --f7-bars-border-color: rgba(0, 0, 0, 0.25);\n}\n.ios .dark,\n.ios.dark {\n --f7-bars-text-color: #fff;\n --f7-text-color: #fff;\n --f7-bars-bg-color: #121212;\n --f7-bars-bg-color-rgb: 22, 22, 22;\n --f7-bars-border-color: rgba(255, 255, 255, 0.16);\n}\n.md {\n --f7-font-family: Roboto, system-ui, Noto, Helvetica, Arial, sans-serif;\n --f7-line-height: 1.5;\n --f7-bars-border-color: transparent;\n --f7-text-color: #212121;\n}\n.md .dark,\n.md.dark {\n --f7-text-color: rgba(255, 255, 255, 0.87);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-bars-link-color: var(--f7-md-on-surface);\n --f7-bars-bg-color: var(--f7-md-surface-2);\n --f7-bars-bg-color-rgb: var(--f7-md-surface-2-rgb);\n}\n/*====================\n Color Themes\n ==================== */\n.text-color-primary {\n --f7-theme-color-text-color: var(--f7-theme-color);\n}\n.bg-color-primary {\n --f7-theme-color-bg-color: var(--f7-theme-color);\n}\n.border-color-primary {\n --f7-theme-color-border-color: var(--f7-theme-color);\n}\n.ripple-color-primary {\n --f7-theme-color-ripple-color: rgba(var(--f7-theme-color-rgb), 0.3);\n}\n@font-face {\n font-family: 'framework7-core-icons';\n src: url('data:application/font-woff;charset=utf-8;base64, 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') format('woff');\n font-weight: 400;\n font-style: normal;\n}\nhtml {\n overscroll-behavior: none;\n}\nhtml {\n direction: rtl;\n}\nhtml,\nbody,\n.framework7-root {\n position: relative;\n height: 100%;\n width: 100%;\n overflow-x: hidden;\n}\nbody {\n margin: 0;\n padding: 0;\n width: 100%;\n background: #fff;\n overflow: hidden;\n overflow-y: scroll;\n -webkit-text-size-adjust: 100%;\n -webkit-font-smoothing: antialiased;\n font-family: var(--f7-font-family);\n font-size: var(--f7-font-size);\n line-height: var(--f7-line-height);\n color: var(--f7-text-color);\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\nbody::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\nbody::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\nbody::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.dark body,\nbody.dark {\n background: #000;\n}\n.dark {\n color: var(--f7-text-color);\n}\n.framework7-root {\n overflow: hidden;\n box-sizing: border-box;\n}\n.framework7-initializing *,\n.framework7-initializing *:before,\n.framework7-initializing *:after {\n transition-duration: 0ms !important;\n}\n.device-ios,\n.device-android {\n cursor: pointer;\n}\n.device-ios {\n touch-action: manipulation;\n}\n@media (width: 1024px) and (height: 691px) and (orientation: landscape) {\n html,\n body,\n .framework7-root {\n height: 671px;\n }\n}\n@media (width: 1024px) and (height: 692px) and (orientation: landscape) {\n html,\n body,\n .framework7-root {\n height: 672px;\n }\n}\n* {\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n -webkit-touch-callout: none;\n}\na,\ninput,\ntextarea,\nselect {\n outline: 0;\n}\na {\n cursor: pointer;\n text-decoration: none;\n color: var(--f7-theme-color);\n}\n.link,\n.item-link {\n cursor: pointer;\n}\np {\n margin: 1em 0;\n}\n.disabled {\n opacity: 0.55 !important;\n pointer-events: none !important;\n}\nhtml.device-full-viewport,\nhtml.device-full-viewport body {\n height: 100vh;\n}\n.ios .md-only,\n.ios .if-md,\n.ios .if-not-ios,\n.ios .not-ios {\n display: none !important;\n}\n@media (width: 1024px) and (height: 691px) and (orientation: landscape) {\n .ios,\n .ios body,\n .ios .framework7-root {\n height: 671px;\n }\n}\n@media (width: 1024px) and (height: 692px) and (orientation: landscape) {\n .ios,\n .ios body,\n .ios .framework7-root {\n height: 672px;\n }\n}\n.md .ios-only,\n.md .if-ios,\n.md .if-not-md,\n.md .not-md {\n display: none !important;\n}\n/* === Statusbar === */\n/* === Views === */\n.views,\n.view {\n position: relative;\n height: 100%;\n z-index: 5000;\n overflow: hidden;\n box-sizing: border-box;\n}\n.framework7-root > .view,\n.framework7-root > .views {\n height: 100%;\n}\n.view-resize-handler {\n width: 6px;\n height: 100%;\n position: absolute;\n left: var(--f7-page-master-width);\n margin-left: -3px;\n top: 0;\n cursor: col-resize;\n z-index: 1000;\n display: none;\n}\n.view-master-detail .view-resize-handler {\n display: block;\n}\n/* === Pages === */\n:root {\n --f7-page-master-width: 320px;\n --f7-page-master-border-color: rgba(0, 0, 0, 0.1);\n --f7-page-master-border-width: 1px;\n --f7-page-swipeback-transition-duration: 300ms;\n --f7-page-parallax-transition-duration: 500ms;\n --f7-page-cover-transition-duration: 450ms;\n --f7-page-dive-transition-duration: 500ms;\n --f7-page-fade-transition-duration: 500ms;\n --f7-page-flip-transition-duration: 700ms;\n --f7-page-push-transition-duration: 500ms;\n /*\n --f7-page-content-extra-padding-top: 0px;\n --f7-page-content-extra-padding-bottom: 0px;\n */\n --f7-page-title-line-height: 1.2;\n --f7-page-title-text-color: inherit;\n --f7-page-title-padding-left: 16px;\n --f7-page-title-padding-right: 16px;\n}\n.ios {\n --f7-page-transition-duration: 400ms;\n --f7-page-title-font-size: 34px;\n --f7-page-title-font-weight: 700;\n --f7-page-title-letter-spacing: -0.03em;\n --f7-page-title-padding-vertical: 6px;\n --f7-page-bg-color: #efeff4;\n}\n.ios .dark,\n.ios.dark {\n --f7-page-bg-color: #000;\n}\n.md {\n --f7-page-transition-duration: 400ms;\n --f7-page-title-font-size: 34px;\n --f7-page-title-font-weight: 500;\n --f7-page-title-letter-spacing: 0;\n --f7-page-title-padding-vertical: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-page-bg-color: var(--f7-md-surface);\n}\n.dark {\n --f7-page-master-border-color: rgba(255, 255, 255, 0.2);\n}\n.pages {\n position: relative;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n.page {\n box-sizing: border-box;\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n transform: none;\n background-color: var(--f7-page-bg-color);\n z-index: 1;\n}\n.page-with-navbar-large-collapsed {\n --f7-navbar-large-collapse-progress: 1;\n}\n.page-previous {\n pointer-events: none;\n}\n.page-content {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n box-sizing: border-box;\n height: 100%;\n position: relative;\n z-index: 1;\n padding-top: calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-toolbar-top-offset, 0px) + var(--f7-page-subnavbar-offset, 0px) + var(--f7-page-searchbar-offset, 0px) + var(--f7-page-content-extra-padding-top, 0px));\n padding-bottom: calc(var(--f7-page-toolbar-bottom-offset, 0px) + var(--f7-safe-area-bottom) + var(--f7-page-content-extra-padding-bottom, 0px));\n}\n.page-transitioning,\n.page-transitioning .page-shadow-effect,\n.page-transitioning .page-opacity-effect {\n transition-duration: var(--f7-page-transition-duration);\n}\n.page-transitioning-swipeback,\n.page-transitioning-swipeback .page-shadow-effect,\n.page-transitioning-swipeback .page-opacity-effect {\n transition-duration: var(--f7-page-swipeback-transition-duration);\n}\n.router-transition-forward .page-next,\n.router-transition-backward .page-next,\n.router-transition-forward .page-current,\n.router-transition-backward .page-current {\n pointer-events: none;\n}\n.page-shadow-effect {\n position: absolute;\n top: 0;\n width: 16px;\n bottom: 0;\n z-index: -1;\n content: '';\n opacity: 0;\n left: 100%;\n background: linear-gradient(to left, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);\n}\n.page-opacity-effect {\n position: absolute;\n left: 0;\n top: 0;\n background: rgba(0, 0, 0, 0.1);\n width: 100%;\n bottom: 0;\n content: '';\n opacity: 0;\n z-index: 10000;\n}\n.ios .page-previous {\n transform: translate3d(20%, 0, 0);\n}\n.ios .page-next {\n transform: translate3d(-100%, 0, 0);\n}\n.ios .page-previous .page-opacity-effect {\n opacity: 1;\n}\n.ios .page-previous:after {\n opacity: 1;\n}\n.ios .page-current .page-shadow-effect {\n opacity: 1;\n}\n.ios .router-transition-forward .page-next {\n animation: ios-page-next-to-current var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .page-next:before {\n position: absolute;\n top: 0;\n width: 16px;\n bottom: 0;\n z-index: -1;\n content: '';\n opacity: 0;\n left: 100%;\n background: linear-gradient(to left, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);\n animation: ios-page-element-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .page-current {\n animation: ios-page-current-to-previous var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .page-current:after {\n position: absolute;\n left: 0;\n top: 0;\n background: rgba(0, 0, 0, 0.1);\n width: 100%;\n bottom: 0;\n content: '';\n opacity: 0;\n z-index: 10000;\n animation: ios-page-element-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-previous {\n animation: ios-page-previous-to-current var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-previous:after {\n position: absolute;\n left: 0;\n top: 0;\n background: rgba(0, 0, 0, 0.1);\n width: 100%;\n bottom: 0;\n content: '';\n opacity: 0;\n z-index: 10000;\n animation: ios-page-element-fade-out var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-current {\n animation: ios-page-current-to-next var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-current:before {\n position: absolute;\n top: 0;\n width: 16px;\n bottom: 0;\n z-index: -1;\n content: '';\n opacity: 0;\n left: 100%;\n background: linear-gradient(to left, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);\n animation: ios-page-element-fade-out var(--f7-page-transition-duration) forwards;\n}\n@keyframes ios-page-next-to-current {\n from {\n transform: translate3d(-100%, 0, 0);\n }\n to {\n transform: translate3d(0%, 0, 0);\n }\n}\n@keyframes ios-page-previous-to-current {\n from {\n transform: translate3d(20%, 0, 0);\n }\n to {\n transform: translate3d(0%, 0, 0);\n }\n}\n@keyframes ios-page-current-to-previous {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(20%, 0, 0);\n }\n}\n@keyframes ios-page-current-to-next {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(-100%, 0, 0);\n }\n}\n@keyframes ios-page-element-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes ios-page-element-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n.md .page-previous {\n transform: translate3d(0, -20px, 0);\n}\n.md .page-next {\n pointer-events: none;\n transform: translate3d(0, 128px, 0);\n opacity: 0;\n}\n.md .page-next.page-next-on-right {\n transform: translate3d(-100%, 0, 0);\n opacity: 1;\n}\n.md .router-transition-forward .page-next {\n opacity: 1;\n animation: md-page-next-to-current var(--f7-page-transition-duration) forwards cubic-bezier(0, 0.8, 0.3, 1);\n}\n.md .router-transition-forward .page-current {\n animation: md-page-current-to-previous var(--f7-page-transition-duration) forwards cubic-bezier(0, 0.8, 0.3, 1);\n}\n.md .router-transition-backward .page-current {\n animation: md-page-current-to-next calc(var(--f7-page-transition-duration) / 4) forwards cubic-bezier(0.8, 0, 1, 0.3), md-page-current-to-next-opacity 0ms calc(var(--f7-page-transition-duration) / 4) forwards;\n}\n.md .router-transition-backward .page-previous {\n animation: md-page-previous-to-current var(--f7-page-transition-duration) forwards;\n}\n@keyframes md-page-next-to-current {\n from {\n transform: translate3d(0, 128px, 0);\n }\n to {\n transform: translate3d(0, 0px, 0);\n }\n}\n@keyframes md-page-current-to-next {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(0, 128px, 0);\n }\n}\n@keyframes md-page-current-to-next-opacity {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes md-page-current-to-previous {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(0, -20px, 0);\n }\n}\n@keyframes md-page-previous-to-current {\n from {\n transform: translate3d(0, -20px, 0);\n }\n to {\n transform: translate3d(0, 0px, 0);\n }\n}\n.view:not(.view-master-detail) .page-master-stacked {\n display: none;\n}\n.view:not(.view-master-detail) .navbar-master-stacked {\n display: none;\n}\n.view-master-detail .page-master,\n.view-master-detail .navbar-master {\n width: var(--f7-page-master-width);\n left: auto;\n right: 0;\n --f7-safe-area-left: 0px;\n --f7-safe-area-outer-left: 0px;\n border-left: var(--f7-page-master-border-width) solid var(--f7-page-master-border-color);\n}\n.view-master-detail .page-master-detail,\n.view-master-detail .navbar-master-detail {\n width: calc(100% - var(--f7-page-master-width));\n --f7-safe-area-right: 0px;\n --f7-safe-area-outer-right: 0px;\n right: var(--f7-page-master-width);\n}\n.view-master-detail .page-master-detail > .navbar-master-detail {\n left: 0;\n right: 0;\n width: 100%;\n}\n.view-master-detail .page-master {\n z-index: 2;\n transform: none;\n pointer-events: auto;\n}\n.view-master-detail .page-master:before,\n.view-master-detail .page-master:after {\n display: none;\n}\n.view-master-detail.router-transition .page-master {\n animation: none;\n}\n.md .router-transition-custom .page-previous,\n.ios .router-transition-custom .page-previous,\n.md .router-transition-custom .page-next,\n.ios .router-transition-custom .page-next {\n opacity: 1;\n transform: none;\n}\n.md .router-transition-custom.view-master-detail .page-master,\n.ios .router-transition-custom.view-master-detail .page-master {\n animation: none;\n}\n.page-title {\n position: relative;\n z-index: 10;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--f7-page-title-text-color);\n letter-spacing: var(--f7-page-title-letter-spacing);\n font-size: var(--f7-page-title-font-size);\n font-weight: var(--f7-page-title-font-weight);\n line-height: var(--f7-page-title-line-height);\n padding-left: calc(var(--f7-page-title-padding-left) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-page-title-padding-right) + var(--f7-safe-area-right));\n padding-top: var(--f7-page-title-padding-vertical);\n padding-bottom: var(--f7-page-title-padding-vertical);\n box-sizing: border-box;\n overflow: hidden;\n width: 100%;\n}\n.router-transition-f7-circle-forward:after,\n.router-transition-f7-circle-backward:after {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n width: 100vmax;\n height: 100vmax;\n margin-left: -50vmax;\n margin-top: -50vmax;\n background: var(--f7-page-bg-color);\n z-index: 100;\n}\n.router-transition-f7-circle-forward .page,\n.router-transition-f7-circle-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-circle-forward:after {\n transform: scale(0);\n border-radius: 50%;\n animation: f7-circle-circle-in 400ms forwards;\n}\n.ios .router-transition-f7-circle-forward .page-next,\n.md .router-transition-f7-circle-forward .page-next {\n opacity: 0;\n transform: scale(0.9);\n animation: f7-circle-next-to-current 300ms forwards;\n animation-delay: 300ms;\n z-index: 150;\n}\n.router-transition-f7-circle-backward:after {\n animation: f7-circle-circle-out 300ms forwards;\n animation-delay: 350ms;\n}\n.ios .router-transition-f7-circle-backward .page-current,\n.md .router-transition-f7-circle-backward .page-current {\n animation: f7-circle-current-to-next 700ms forwards;\n z-index: 150;\n}\n@keyframes f7-circle-circle-in {\n from {\n transform: scale(0);\n border-radius: 50%;\n }\n 50% {\n border-radius: 50%;\n }\n to {\n transform: scale(1);\n border-radius: 0%;\n }\n}\n@keyframes f7-circle-circle-out {\n from {\n transform: scale(1);\n border-radius: 0%;\n }\n 50% {\n border-radius: 50%;\n }\n to {\n transform: scale(0);\n border-radius: 50%;\n }\n}\n@keyframes f7-circle-next-to-current {\n from {\n transform: scale(0.9);\n opacity: 0;\n }\n 40% {\n transform: scale(1.035);\n opacity: 1;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n@keyframes f7-circle-current-to-next {\n from {\n transform: scale(1);\n opacity: 1;\n }\n 34% {\n transform: scale(1.035);\n opacity: 1;\n }\n 57% {\n transform: scale(0.9);\n opacity: 0;\n }\n to {\n transform: scale(0.9);\n opacity: 0;\n }\n}\n.router-transition-f7-cover-v-forward,\n.router-transition-f7-cover-v-backward {\n background: #000;\n perspective: 1200px;\n}\n.router-transition-f7-cover-v-forward .page,\n.router-transition-f7-cover-v-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-cover-v-forward .page-next {\n animation: f7-cover-v-next-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-v-forward .page-current {\n animation: f7-cover-v-current-to-prev var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-v-backward .page-current {\n animation: f7-cover-v-current-to-next var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-v-backward .page-previous {\n animation: f7-cover-v-prev-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n@keyframes f7-cover-v-next-to-current {\n from {\n transform: translateY(100%);\n }\n to {\n transform: translateY(0%);\n }\n}\n@keyframes f7-cover-v-current-to-next {\n from {\n transform: translateY(0%);\n }\n to {\n transform: translateY(100%);\n }\n}\n@keyframes f7-cover-v-current-to-prev {\n from {\n transform: translateZ(0);\n opacity: 1;\n }\n to {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n}\n@keyframes f7-cover-v-prev-to-current {\n from {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n to {\n transform: translateZ(0);\n opacity: 1;\n }\n}\n.router-transition-f7-cover-forward,\n.router-transition-f7-cover-backward {\n background: #000;\n perspective: 1200px;\n}\n.router-transition-f7-cover-forward .page,\n.router-transition-f7-cover-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-cover-forward .page-next {\n animation: f7-cover-next-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-forward .page-current {\n animation: f7-cover-current-to-prev var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-backward .page-current {\n animation: f7-cover-current-to-next var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-backward .page-previous {\n animation: f7-cover-prev-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n@keyframes f7-cover-next-to-current {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n@keyframes f7-cover-current-to-next {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(-100%);\n }\n}\n@keyframes f7-cover-current-to-prev {\n from {\n transform: translateZ(0);\n opacity: 1;\n }\n to {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n}\n@keyframes f7-cover-prev-to-current {\n from {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n to {\n transform: translateZ(0);\n opacity: 1;\n }\n}\n.router-transition-f7-dive-forward,\n.router-transition-f7-dive-backward {\n background: var(--f7-page-bg-color);\n perspective: 1200px;\n}\n.router-transition-f7-dive-forward .page,\n.router-transition-f7-dive-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-dive-forward .page-next {\n animation: f7-dive-next-to-current var(--f7-page-dive-transition-duration) forwards;\n}\n.router-transition-f7-dive-forward .page-current {\n animation: f7-dive-current-to-prev var(--f7-page-dive-transition-duration) forwards;\n}\n.router-transition-f7-dive-backward .page-current {\n animation: f7-dive-current-to-next var(--f7-page-dive-transition-duration) forwards;\n}\n.router-transition-f7-dive-backward .page-previous {\n animation: f7-dive-prev-to-current var(--f7-page-dive-transition-duration) forwards;\n}\n@keyframes f7-dive-next-to-current {\n from {\n opacity: 0;\n transform: translateZ(-150px);\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 1;\n transform: translateZ(0px);\n }\n}\n@keyframes f7-dive-current-to-next {\n from {\n opacity: 1;\n transform: translateZ(0px);\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 0;\n transform: translateZ(-150px);\n }\n}\n@keyframes f7-dive-current-to-prev {\n from {\n transform: translateZ(0px);\n opacity: 1;\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 0;\n transform: translateZ(150px);\n }\n}\n@keyframes f7-dive-prev-to-current {\n from {\n opacity: 0;\n transform: translateZ(150px);\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 1;\n transform: translateZ(0px);\n }\n}\n.router-transition-f7-fade-forward,\n.router-transition-f7-fade-backward {\n background: var(--f7-page-bg-color);\n}\n.router-transition-f7-fade-forward .page,\n.router-transition-f7-fade-backward .page {\n pointer-events: none;\n}\n.ios .router-transition-f7-fade-forward .page-next,\n.md .router-transition-f7-fade-forward .page-next {\n opacity: 0;\n animation: f7-fade-in var(--f7-page-fade-transition-duration) forwards;\n}\n.ios .router-transition-f7-fade-forward .page-current,\n.md .router-transition-f7-fade-forward .page-current {\n animation: f7-fade-out var(--f7-page-fade-transition-duration) forwards;\n}\n.ios .router-transition-f7-fade-backward .page-current,\n.md .router-transition-f7-fade-backward .page-current {\n animation: f7-fade-out var(--f7-page-fade-transition-duration) forwards;\n}\n.ios .router-transition-f7-fade-backward .page-previous,\n.md .router-transition-f7-fade-backward .page-previous {\n animation: f7-fade-in var(--f7-page-fade-transition-duration) forwards;\n}\n@keyframes f7-fade-in {\n from {\n opacity: 0;\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes f7-fade-out {\n from {\n opacity: 1;\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 0;\n }\n}\n.router-transition-f7-flip-forward,\n.router-transition-f7-flip-backward {\n background: #000;\n perspective: 1200px;\n}\n.router-transition-f7-flip-forward .page,\n.router-transition-f7-flip-backward .page {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n overflow: hidden;\n pointer-events: none;\n}\n.router-transition-f7-flip-forward .page-next {\n transform-style: preserve-3d;\n animation: f7-flip-next-to-current var(--f7-page-flip-transition-duration) forwards;\n}\n.router-transition-f7-flip-forward .page-current {\n transform-style: preserve-3d;\n animation: f7-flip-current-to-prev var(--f7-page-flip-transition-duration) forwards;\n}\n.router-transition-f7-flip-backward .page-current {\n transform-style: preserve-3d;\n animation: f7-flip-current-to-next var(--f7-page-flip-transition-duration) forwards;\n}\n.router-transition-f7-flip-backward .page-previous {\n transform-style: preserve-3d;\n animation: f7-flip-prev-to-current var(--f7-page-flip-transition-duration) forwards;\n}\n@keyframes f7-flip-next-to-current {\n from {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(-180deg);\n }\n to {\n border-radius: 0;\n transform: translateZ(0px) rotateY(0deg);\n }\n}\n@keyframes f7-flip-current-to-next {\n from {\n border-radius: 0px;\n transform: translateZ(0px) rotateY(0deg);\n }\n to {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(-180deg);\n }\n}\n@keyframes f7-flip-current-to-prev {\n from {\n border-radius: 0px;\n transform: translateZ(0px) rotateY(0deg);\n }\n to {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(180deg);\n }\n}\n@keyframes f7-flip-prev-to-current {\n from {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(180deg);\n }\n to {\n border-radius: 0px;\n transform: translateZ(0px) rotateY(0deg);\n }\n}\n.router-transition-f7-parallax-forward .page {\n pointer-events: none;\n}\n.router-transition-f7-parallax-forward .page-next {\n animation: f7-parallax-next-to-current var(--f7-page-parallax-transition-duration) forwards;\n}\n.router-transition-f7-parallax-forward .page-current {\n animation: f7-parallax-current-to-prev var(--f7-page-parallax-transition-duration) forwards;\n}\n.router-transition-f7-parallax-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-parallax-backward .page-current {\n animation: f7-parallax-current-to-next var(--f7-page-parallax-transition-duration) forwards;\n}\n.router-transition-f7-parallax-backward .page-previous {\n animation: f7-parallax-prev-to-current var(--f7-page-parallax-transition-duration) forwards;\n}\n@keyframes f7-parallax-next-to-current {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n@keyframes f7-parallax-current-to-next {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(-100%);\n }\n}\n@keyframes f7-parallax-current-to-prev {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(20%);\n }\n}\n@keyframes f7-parallax-prev-to-current {\n from {\n transform: translateX(20%);\n }\n to {\n transform: translateX(0%);\n }\n}\n.router-transition-f7-push-forward .page {\n pointer-events: none;\n}\n.router-transition-f7-push-forward .page-next {\n animation: f7-push-next-to-current var(--f7-page-push-transition-duration) forwards;\n}\n.router-transition-f7-push-forward .page-current {\n animation: f7-push-current-to-prev var(--f7-page-push-transition-duration) forwards;\n}\n.router-transition-f7-push-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-push-backward .page-current {\n animation: f7-push-current-to-next var(--f7-page-push-transition-duration) forwards;\n}\n.router-transition-f7-push-backward .page-previous {\n animation: f7-push-prev-to-current var(--f7-page-push-transition-duration) forwards;\n}\n@keyframes f7-push-next-to-current {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n@keyframes f7-push-current-to-next {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(-100%);\n }\n}\n@keyframes f7-push-current-to-prev {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(100%);\n }\n}\n@keyframes f7-push-prev-to-current {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n/* === Link === */\n:root {\n --f7-link-highlight-black: rgba(0, 0, 0, 0.1);\n --f7-link-highlight-white: rgba(255, 255, 255, 0.15);\n --f7-link-highlight-color: rgba(var(--f7-theme-color-rgb), 0.15);\n}\n.ios {\n --f7-link-pressed-opacity: 0.3;\n}\n.link,\n.tab-link {\n display: inline-flex;\n align-items: center;\n align-content: center;\n justify-content: center;\n position: relative;\n box-sizing: border-box;\n z-index: 1;\n --f7-touch-ripple-color: var(--f7-link-touch-ripple-color, rgba(var(--f7-theme-color-rgb), 0.25));\n}\n.link i + span,\n.link i + i,\n.link span + i,\n.link span + span {\n margin-right: 4px;\n}\n.link[class*='color-'] {\n color: var(--f7-theme-color);\n}\n.ios .link {\n transition: opacity 300ms;\n}\n.ios .link.active-state {\n opacity: var(--f7-link-pressed-opacity);\n transition-duration: 0ms;\n}\n/* === Navbar === */\n:root {\n /*\n --f7-navbar-bg-color: var(--f7-bars-bg-color);\n --f7-navbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-navbar-border-color: var(--f7-bars-border-color);\n */\n --f7-navbar-hide-show-transition-duration: 400ms;\n --f7-navbar-title-line-height: 1.2;\n --f7-navbar-subtitle-text-align: inherit;\n --f7-navbar-large-title-line-height: 1.2;\n --f7-navbar-large-title-text-color: inherit;\n --f7-navbar-large-title-padding-left: 16px;\n --f7-navbar-large-title-padding-right: 16px;\n}\n.ios {\n /*\n --f7-navbar-link-color: var(--f7-bars-link-color);\n --f7-navbar-text-color: var(--f7-bars-text-color);\n */\n --f7-navbar-height: 44px;\n --f7-navbar-font-size: 17px;\n --f7-navbar-title-font-size: inherit;\n --f7-navbar-inner-padding-left: 8px;\n --f7-navbar-inner-padding-right: 8px;\n --f7-navbar-title-font-weight: 600;\n --f7-navbar-title-margin-left: 0;\n --f7-navbar-title-margin-right: 0;\n --f7-navbar-title-text-align: center;\n --f7-navbar-subtitle-font-size: 10px;\n --f7-navbar-subtitle-line-height: 1;\n --f7-navbar-large-title-height: 52px;\n --f7-navbar-large-title-font-size: 34px;\n --f7-navbar-large-title-font-weight: 700;\n --f7-navbar-large-title-letter-spacing: -0.03em;\n --f7-navbar-large-title-padding-vertical: 6px;\n /*\n --f7-navbar-link-height: var(--f7-navbar-height);\n --f7-navbar-link-line-height: var(--f7-navbar-height);\n */\n --f7-navbar-subtitle-text-color: rgba(0, 0, 0, 0.55);\n}\n.ios .dark,\n.ios.dark {\n --f7-navbar-subtitle-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-navbar-height: 64px;\n --f7-navbar-font-size: 16px;\n --f7-navbar-title-font-size: 22px;\n --f7-navbar-inner-padding-left: 0px;\n --f7-navbar-inner-padding-right: 0px;\n --f7-navbar-title-font-weight: 400;\n --f7-navbar-title-margin-left: 0px;\n --f7-navbar-title-margin-right: 16px;\n --f7-navbar-title-text-align: left;\n --f7-navbar-subtitle-font-size: 14px;\n --f7-navbar-subtitle-line-height: 1.2;\n --f7-navbar-large-title-font-size: 28px;\n --f7-navbar-large-title-height: 88px;\n --f7-navbar-large-title-font-weight: 400;\n --f7-navbar-large-title-letter-spacing: 0;\n --f7-navbar-large-title-padding-vertical: 8px;\n --f7-navbar-link-height: 48px;\n --f7-navbar-link-line-height: 48px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-navbar-link-color: var(--f7-md-on-surface);\n --f7-navbar-text-color: var(--f7-md-on-surface);\n --f7-navbar-subtitle-text-color: var(--f7-md-on-surface-variant);\n}\n.navbars,\n.navbar {\n z-index: 500;\n left: 0;\n top: 0;\n width: 100%;\n}\n.navbars {\n position: absolute;\n}\n.navbars .navbar {\n z-index: auto;\n}\n.navbars .navbar-transitioning {\n z-index: 500;\n}\n.navbar {\n --f7-navbar-large-collapse-progress: 0;\n position: relative;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n box-sizing: border-box;\n margin: 0;\n height: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n color: var(--f7-navbar-text-color, var(--f7-bars-text-color));\n font-size: var(--f7-navbar-font-size);\n}\n.navbar b {\n font-weight: 500;\n}\n.navbar a {\n color: var(--f7-navbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.navbar a.link {\n display: flex;\n justify-content: flex-start;\n line-height: var(--f7-navbar-link-line-height, var(--f7-navbar-height));\n height: var(--f7-navbar-link-height, var(--f7-navbar-height));\n}\n.navbar .title,\n.navbar .left,\n.navbar .right {\n position: relative;\n z-index: 10;\n}\n.navbar .title {\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex-shrink: 10;\n font-weight: var(--f7-navbar-title-font-weight);\n display: inline-block;\n line-height: var(--f7-navbar-title-line-height);\n text-align: var(--f7-navbar-title-text-align);\n font-size: var(--f7-navbar-title-font-size);\n margin-right: var(--f7-navbar-title-margin-left);\n margin-left: var(--f7-navbar-title-margin-left);\n}\n.navbar .subtitle {\n display: block;\n color: var(--f7-navbar-subtitle-text-color);\n font-weight: normal;\n font-size: var(--f7-navbar-subtitle-font-size);\n line-height: var(--f7-navbar-subtitle-line-height);\n text-align: var(--f7-navbar-subtitle-text-align);\n}\n.navbar .left,\n.navbar .right {\n flex-shrink: 0;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.navbar .right:first-child {\n position: absolute;\n height: 100%;\n}\n.navbar.no-outline .navbar-bg:after,\n.navbar .no-outline .navbar-bg:after {\n display: none !important;\n}\n.navbar.no-outline .title-large:after,\n.navbar .no-outline .title-large:after {\n display: none !important;\n}\n.navbar.navbar-hidden .navbar-bg:before,\n.navbar-hidden .navbar .navbar-bg:before {\n opacity: 0 !important;\n}\n.navbar-bg {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 0;\n background: var(--f7-navbar-bg-color);\n background-color: var(--f7-navbar-bg-color, var(--f7-bars-bg-color));\n transition-property: transform;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .navbar-bg {\n background-color: rgba(var(--f7-navbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.navbar-bg:after,\n.navbar-bg:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.navbar-bg:after {\n content: '';\n position: absolute;\n background-color: var(--f7-navbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.navbar-bg:after {\n z-index: 1;\n}\n.navbar-transitioning,\n.navbar-transitioning .left,\n.navbar-transitioning .title,\n.navbar-transitioning .right,\n.navbar-transitioning .title-large-text,\n.navbar-transitioning .navbar-bg,\n.navbar-transitioning .subnavbar,\n.navbar-transitioning .navbar-bg:before {\n transition-duration: var(--f7-navbar-hide-show-transition-duration);\n}\n.navbar-page-transitioning {\n transition-duration: var(--f7-page-swipeback-transition-duration) !important;\n}\n.navbar-page-transitioning .title-large-text,\n.navbar-page-transitioning .navbar-bg {\n transition-duration: var(--f7-page-swipeback-transition-duration) !important;\n}\n.navbar-hidden {\n transform: translate3d(0, calc(-1 * var(--f7-navbar-height)), 0);\n}\n.navbar-hidden .navbar-inner {\n pointer-events: none;\n}\n.navbar-hidden .navbar-inner > .left,\n.navbar-hidden .navbar-inner > .title,\n.navbar-hidden .navbar-inner > .right {\n opacity: 0 !important;\n}\n.navbar-hidden .subnavbar {\n pointer-events: auto;\n}\n.navbar-hidden-statusbar {\n transform: translate3d(0, calc(-1 * var(--f7-navbar-height) - var(--f7-safe-area-top)), 0);\n}\n.navbar-large-hidden .navbar-large {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar-inner {\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n padding: var(--f7-safe-area-top) calc(var(--f7-navbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-navbar-inner-padding-left) + var(--f7-safe-area-left));\n transform: translate3d(0, 0, 0);\n z-index: 10;\n}\n.views > .navbar,\n.view > .navbar,\n.page > .navbar,\n.navbars > .navbar {\n position: absolute;\n}\n.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(\n .with-searchbar-expandable-enabled\n ) .navbar-bg,\n.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(\n .with-searchbar-expandable-enabled\n ) .title {\n opacity: 0;\n}\n.navbar-large .navbar-bg {\n height: calc(100% + var(--f7-navbar-large-title-height));\n transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.navbar-large-transparent .navbar-bg,\n.navbar-large.navbar-transparent .navbar-bg {\n opacity: var(--f7-navbar-large-collapse-progress);\n}\n.ios .router-navbar-transition-to-large .navbar-bg,\n.ios .router-navbar-transition-from-large .navbar-bg,\n.navbar-bg.ios-swipeback-navbar-bg-large,\n.navbar-large-transparent .navbar-bg.ios-swipeback-navbar-bg-large,\n.navbar-large.navbar-transparent .navbar-bg.ios-swipeback-navbar-bg-large {\n height: calc(100% + var(--f7-navbar-large-title-height));\n transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.ios .navbar:not(.navbar-large) .navbar-bg {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar-large .title {\n opacity: var(--f7-navbar-large-collapse-progress);\n}\n.navbar-large-collapsed {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar-large-collapsed .title-large {\n pointer-events: none;\n}\n.navbar .title-large {\n box-sizing: border-box;\n position: absolute;\n left: 0;\n right: 0;\n top: 100%;\n display: flex;\n white-space: nowrap;\n overflow: hidden;\n height: var(--f7-navbar-large-title-height);\n z-index: 5;\n}\n.navbar .title-large-text {\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--f7-navbar-large-title-text-color);\n letter-spacing: var(--f7-navbar-large-title-letter-spacing);\n font-size: var(--f7-navbar-large-title-font-size);\n font-weight: var(--f7-navbar-large-title-font-weight);\n line-height: var(--f7-navbar-large-title-line-height);\n padding-left: calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-navbar-large-title-padding-right) + var(--f7-safe-area-right));\n padding-top: var(--f7-navbar-large-title-padding-vertical);\n padding-bottom: var(--f7-navbar-large-title-padding-vertical);\n box-sizing: border-box;\n overflow: hidden;\n width: 100%;\n transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n transform-origin: calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center;\n}\n.navbar-no-title-large-transition .title-large-text {\n transition-duration: 0ms;\n}\n.navbar ~ *,\n.navbars ~ * {\n --f7-page-navbar-offset: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ * .page-with-navbar-large,\n.navbar ~ .page-with-navbar-large,\n.navbars ~ * .page-with-navbar-large,\n.navbars ~ .page-with-navbar-large,\n.page-with-navbar-large .navbar ~ * {\n --f7-page-navbar-offset: calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));\n}\n.page.no-navbar,\n.page.no-navbar .navbar ~ * {\n --f7-page-navbar-offset: var(--f7-safe-area-top);\n}\n.ios {\n --f7-navbarLeftTextOffset: calc(4px + 12px + var(--f7-navbar-inner-padding-left));\n --f7-navbarTitleLargeOffset: var(--f7-navbar-large-title-padding-left);\n --f7-navbar-large-bg-center-top: translateX(0) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n --f7-navbar-large-bg-center-bottom: translateX(0) translateY(0);\n --f7-navbar-large-bg-left-top: translateX(100%) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n --f7-navbar-large-bg-left-bottom: translateX(100%) translateY(0);\n --f7-navbar-large-bg-right-top: translateX(-100%) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n --f7-navbar-large-bg-right-bottom: translateX(-100%) translateY(0);\n}\n.ios .navbar .title-large {\n align-items: flex-end;\n}\n.ios .navbar a.icon-only {\n width: 44px;\n margin: 0;\n justify-content: center;\n}\n.ios .navbar .left a + a,\n.ios .navbar .right a + a {\n margin-right: 16px;\n}\n.ios .navbar b {\n font-weight: 600;\n}\n.ios .navbar .left {\n margin-left: 10px;\n}\n.ios .navbar .right {\n margin-right: 10px;\n}\n.ios .navbar .right:first-child {\n left: calc(8px + var(--f7-safe-area-left));\n}\n.ios .navbar-inner {\n justify-content: space-between;\n}\n.ios .navbar-inner-left-title {\n justify-content: flex-start;\n}\n.ios .navbar-inner-left-title .right {\n margin-right: auto;\n}\n.ios .navbar-inner-left-title .title {\n text-align: left;\n margin-left: 10px;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .left,\n.ios .view:not(.view-master-detail) .navbar-previous .left,\n.ios .navbar-next .left,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .title,\n.ios .view:not(.view-master-detail) .navbar-previous .title,\n.ios .navbar-next .title,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .right,\n.ios .view:not(.view-master-detail) .navbar-previous .right,\n.ios .navbar-next .right,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar,\n.ios .view:not(.view-master-detail) .navbar-previous .subnavbar,\n.ios .navbar-next .subnavbar,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .fading,\n.ios .view:not(.view-master-detail) .navbar-previous .fading,\n.ios .navbar-next .fading {\n opacity: 0;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master),\n.ios .view:not(.view-master-detail) .navbar-previous {\n pointer-events: none;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large,\n.ios .view:not(.view-master-detail) .navbar-previous .title-large {\n opacity: 0;\n transition-duration: 0ms;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large .title-large-text,\n.ios .view:not(.view-master-detail) .navbar-previous .title-large .title-large-text {\n transform: scale(0.5);\n transition-duration: 0ms;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar.sliding,\n.ios .view:not(.view-master-detail) .navbar-previous .subnavbar.sliding,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .sliding .subnavbar,\n.ios .view:not(.view-master-detail) .navbar-previous .sliding .subnavbar {\n opacity: 1;\n transform: translate3d(100%, 0, 0);\n}\n.ios .view:not(.view-master-detail) .navbar-previous .navbar-bg,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .navbar-bg {\n transform: translateX(-100%);\n}\n.ios .navbar-next {\n pointer-events: none;\n}\n.ios .navbar-next .navbar-bg {\n transform: translateX(-100%);\n}\n.ios .navbar-next .title-large .title-large-text {\n transition-duration: 0ms;\n transform: translateX(-100%) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n}\n.ios .navbar-next .subnavbar.sliding,\n.ios .navbar-next .sliding .subnavbar {\n opacity: 1;\n transform: translate3d(-100%, 0, 0);\n}\n.ios .router-transition .navbar,\n.ios .router-transition .navbar-bg {\n transition-duration: var(--f7-page-transition-duration);\n}\n.ios .router-transition .navbar-bg {\n animation-duration: var(--f7-page-transition-duration);\n animation-fill-mode: forwards;\n}\n.ios .router-transition .title-large,\n.ios .router-transition .title-large-text {\n transition-duration: 0ms;\n}\n.ios .router-transition .navbar-current .left,\n.ios .router-transition .navbar-current .title,\n.ios .router-transition .navbar-current .right,\n.ios .router-transition .navbar-current .subnavbar {\n animation: ios-navbar-element-fade-out var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition .navbar-current .sliding.left,\n.ios .router-transition .navbar-current .sliding.left .icon + span,\n.ios .router-transition .navbar-current .sliding.title,\n.ios .router-transition .navbar-current .sliding.right,\n.ios .router-transition .navbar-current .sliding .left,\n.ios .router-transition .navbar-current .sliding .left .icon + span,\n.ios .router-transition .navbar-current .sliding .title,\n.ios .router-transition .navbar-current .sliding .right {\n transition-duration: var(--f7-page-transition-duration);\n opacity: 0 !important;\n animation: none;\n}\n.ios .router-transition .navbar-current .sliding .subnavbar,\n.ios .router-transition .navbar-current .sliding.subnavbar {\n transition-duration: var(--f7-page-transition-duration);\n animation: none;\n opacity: 1;\n}\n.ios .router-transition-forward .navbar-next .left,\n.ios .router-transition-backward .navbar-previous .left,\n.ios .router-transition-forward .navbar-next .title,\n.ios .router-transition-backward .navbar-previous .title,\n.ios .router-transition-forward .navbar-next .right,\n.ios .router-transition-backward .navbar-previous .right,\n.ios .router-transition-forward .navbar-next .subnavbar,\n.ios .router-transition-backward .navbar-previous .subnavbar {\n animation: ios-navbar-element-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next .sliding.left,\n.ios .router-transition-backward .navbar-previous .sliding.left,\n.ios .router-transition-forward .navbar-next .sliding.left .icon + span,\n.ios .router-transition-backward .navbar-previous .sliding.left .icon + span,\n.ios .router-transition-forward .navbar-next .sliding.title,\n.ios .router-transition-backward .navbar-previous .sliding.title,\n.ios .router-transition-forward .navbar-next .sliding.right,\n.ios .router-transition-backward .navbar-previous .sliding.right,\n.ios .router-transition-forward .navbar-next .sliding .left,\n.ios .router-transition-backward .navbar-previous .sliding .left,\n.ios .router-transition-forward .navbar-next .sliding .left .icon + span,\n.ios .router-transition-backward .navbar-previous .sliding .left .icon + span,\n.ios .router-transition-forward .navbar-next .sliding .title,\n.ios .router-transition-backward .navbar-previous .sliding .title,\n.ios .router-transition-forward .navbar-next .sliding .right,\n.ios .router-transition-backward .navbar-previous .sliding .right,\n.ios .router-transition-forward .navbar-next .sliding .subnavbar,\n.ios .router-transition-backward .navbar-previous .sliding .subnavbar {\n transition-duration: var(--f7-page-transition-duration);\n animation: none;\n transform: translate3d(0, 0, 0) !important;\n opacity: 1 !important;\n}\n.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title,\n.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title {\n animation: none;\n}\n.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title,\n.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title,\n.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title,\n.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title {\n opacity: 0 !important;\n}\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .left,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .left,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .title,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .title,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .right,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .right,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .subnavbar,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .subnavbar {\n animation: none;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large {\n overflow: visible;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-up var(--f7-page-transition-duration) forwards, ios-navbar-large-title-text-fade-out var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large .left .back span {\n animation: ios-navbar-back-text-next-to-current var(--f7-page-transition-duration) forwards;\n transition: none;\n transform-origin: right center;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large {\n overflow: visible;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-left var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-left var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next.navbar-large:not(.navbar-large-collapsed) .title,\n.ios .router-transition-forward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title {\n animation: none;\n opacity: 0 !important;\n transition-duration: 0;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large .left .back span {\n animation: ios-navbar-back-text-current-to-previous var(--f7-page-transition-duration) forwards;\n transition: none;\n transform-origin: right center;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large {\n overflow: visible;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-right var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-right var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large {\n opacity: 0;\n}\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large {\n overflow: visible;\n opacity: 1;\n}\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-down var(--f7-page-transition-duration) forwards, ios-navbar-large-title-text-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title,\n.ios .router-transition-backward .navbar-previous.navbar-large:not(.navbar-large-collapsed) .title {\n animation: none;\n opacity: 0 !important;\n transition-duration: 0;\n}\n.ios .router-transition-forward .navbar-current .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-lb;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-lb;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-lt;\n}\n.ios .router-transition-forward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-lb;\n}\n.ios .router-transition-forward .navbar-current.navbar-large-collapsed:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-lt;\n}\n.ios .router-transition-forward .navbar-next .navbar-bg {\n animation-name: ios-navbar-bg-from-rb-to-cb;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-rb-to-cb;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-rb-to-ct;\n}\n.ios .router-transition-forward .navbar-next:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-rt-to-cb;\n}\n.ios .router-transition-backward .navbar-current .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-rb;\n}\n.ios .router-transition-backward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-rb;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-rt;\n}\n.ios .router-transition-backward .navbar-current.navbar-large-collapsed .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-rt;\n}\n.ios .router-transition-backward .navbar-current.navbar-large-collapsed.router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-rb;\n}\n.ios .router-transition-backward .navbar-previous .navbar-bg {\n animation-name: ios-navbar-bg-from-lb-to-cb;\n}\n.ios .router-transition-backward .navbar-previous:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-lt-to-cb;\n}\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-lb-to-ct;\n}\n.ios .router-transition-backward .navbar-previous.navbar-large-collapsed .navbar-bg {\n animation-name: ios-navbar-bg-from-lt-to-ct;\n}\n.view-master-detail .navbars {\n z-index: auto;\n}\n.view-master-detail .page-master {\n z-index: 525;\n}\n.view-master-detail .navbar-master .navbar-inner,\n.view-master-detail .navbar-master .navbar-bg {\n z-index: 550;\n}\n.view-master-detail .navbar-master-detail .navbar-inner,\n.view-master-detail .navbar-master-detail .navbar-bg {\n z-index: 500;\n}\n.view-master-detail .navbar-master.navbar-previous {\n pointer-events: auto;\n}\n.view-master-detail .navbar-master.navbar-previous .left,\n.view-master-detail .navbar-master.navbar-previous:not(.navbar-large) .title,\n.view-master-detail .navbar-master.navbar-previous .right,\n.view-master-detail .navbar-master.navbar-previous .subnavbar {\n opacity: 1;\n}\n.view-master-detail.router-transition .navbar-master .left,\n.view-master-detail.router-transition .navbar-master .left .icon + span,\n.view-master-detail.router-transition .navbar-master:not(.navbar-large) .title,\n.view-master-detail.router-transition .navbar-master .right,\n.view-master-detail.router-transition .navbar-master .subnavbar,\n.view-master-detail.router-transition .navbar-master .fading {\n opacity: 1 !important;\n transition-duration: 0ms;\n transform: none !important;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master .navbar-bg {\n transition-duration: 0ms;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master.navbar-large .title {\n opacity: calc(-1 + 2 * var(--f7-navbar-large-collapse-progress)) !important;\n transition-duration: 0ms;\n transform: none !important;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master.navbar-large .title-large,\n.view-master-detail.router-transition .navbar-master.navbar-large .title-large-text {\n transition-duration: 0ms;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master.navbar-large-transparent .navbar-bg,\n.view-master-detail.router-transition .navbar-master.navbar-large.navbar-transparent .navbar-bg {\n height: 100% !important;\n opacity: var(--f7-navbar-large-collapse-progress) !important;\n}\n@keyframes ios-navbar-element-fade-in {\n 0% {\n opacity: 0;\n }\n 25% {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes ios-navbar-element-fade-out {\n from {\n opacity: 1;\n }\n 75% {\n opacity: 0;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes ios-navbar-large-title-text-slide-up {\n 0% {\n transform: translateX(0px) translateY(0%) scale(1);\n }\n 100% {\n transform: translateX(calc(-1 * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(-1 * var(--f7-navbar-large-title-height) + var(--f7-navbar-large-title-padding-vertical))) scale(0.5);\n }\n}\n@keyframes ios-navbar-large-title-text-slide-down {\n 0% {\n transform: translateX(calc(-1 * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(-1 * var(--f7-navbar-large-title-height) + var(--f7-navbar-large-title-padding-vertical) / 2)) scale(0.5);\n }\n 100% {\n transform: translateX(0px) translateY(0%) scale(1);\n }\n}\n@keyframes ios-navbar-large-title-text-slide-left {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(0%);\n }\n}\n@keyframes ios-navbar-large-title-text-slide-right {\n 0% {\n transform: translateX(0%);\n }\n 100% {\n transform: translateX(-100%);\n }\n}\n@keyframes ios-navbar-large-title-text-fade-out {\n 0% {\n opacity: 1;\n }\n 80% {\n opacity: 0;\n }\n 100% {\n opacity: 0;\n }\n}\n@keyframes ios-navbar-large-title-text-fade-in {\n 0% {\n opacity: 0;\n }\n 20% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes ios-navbar-back-text-current-to-previous {\n 0% {\n opacity: 1;\n transform: translateY(0px) translateX(0px) scale(1);\n }\n 80% {\n opacity: 0;\n }\n 100% {\n opacity: 0;\n transform: translateX(calc(-1 * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(1 * var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2)) scale(2);\n }\n}\n@keyframes ios-navbar-back-text-next-to-current {\n 0% {\n opacity: 0;\n transform: translateX(calc(-1 * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(1 * var(--f7-navbar-large-title-height) + var(--f7-navbar-large-title-padding-vertical) / 2)) scale(2);\n }\n 20% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n transform: translateX(0px) translateY(0px) scale(1);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-lb {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-lt {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-lb {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-lt {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n}\n@keyframes ios-navbar-bg-from-rb-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-rb-to-ct {\n from {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n}\n@keyframes ios-navbar-bg-from-rt-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-right-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-rb {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-rb {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-rt {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-top);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-rt {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-top);\n }\n}\n@keyframes ios-navbar-bg-from-lb-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-lt-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-lb-to-ct {\n from {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n}\n@keyframes ios-navbar-bg-from-lt-to-ct {\n from {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n}\n.md .navbar .title-large {\n align-items: center;\n}\n.md .navbar .left {\n margin-left: 4px;\n margin-right: 4px;\n}\n.md .navbar a.link {\n padding: 0 12px;\n min-width: 48px;\n}\n.md .navbar a.icon-only {\n min-width: 0;\n flex-shrink: 0;\n width: 48px;\n}\n.md .navbar .right {\n margin-left: 4px;\n margin-right: auto;\n}\n.md .navbar .right:first-child {\n left: var(--f7-safe-area-left);\n}\n.md .navbar-inner {\n justify-content: flex-start;\n overflow: hidden;\n}\n.md .navbar-large:not(.navbar-large-collapsed) .navbar-inner {\n overflow: visible;\n}\n.md .page.page-with-subnavbar .navbar-inner {\n overflow: visible;\n}\n.md .navbar-inner:not(.navbar-inner-centered-title) .title:first-child {\n margin-left: 16px;\n}\n.md .navbar-inner-centered-title {\n justify-content: space-between;\n}\n.md .navbar-inner-centered-title .right {\n margin-right: 0;\n}\n.md .navbar-inner-centered-title .title {\n text-align: center;\n}\n/* === Toolbar === */\n:root {\n /*\n --f7-toolbar-bg-color: var(--f7-bars-bg-color);\n --f7-toolbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-toolbar-border-color: var(--f7-bars-border-color);\n --f7-toolbar-link-color: var(--f7-bars-link-color);\n --f7-toolbar-text-color: var(--f7-bars-text-color);\n */\n --f7-tabbar-link-active-bg-color: transparent;\n --f7-tabbar-label-text-transform: none;\n --f7-toolbar-hide-show-transition-duration: 400ms;\n}\n.ios {\n --f7-toolbar-height: 44px;\n --f7-toolbar-font-size: 17px;\n --f7-toolbar-inner-padding-left: 8px;\n --f7-toolbar-inner-padding-right: 8px;\n --f7-toolbar-link-font-weight: 400;\n /*\n --f7-toolbar-link-height: var(--f7-toolbar-height);\n --f7-toolbar-link-line-height: var(--f7-toolbar-height);\n --f7-tabbar-link-active-color: var(--f7-theme-color);\n */\n --f7-tabbar-icons-height: 50px;\n --f7-tabbar-icons-tablet-height: 50px;\n --f7-tabbar-icon-size: 28px;\n --f7-tabbar-link-text-transform: none;\n --f7-tabbar-link-font-weight: 400;\n --f7-tabbar-link-letter-spacing: 0;\n --f7-tabbar-label-font-size: 12px;\n --f7-tabbar-label-tablet-font-size: 14px;\n --f7-tabbar-label-font-weight: 500;\n --f7-tabbar-label-letter-spacing: 0.01;\n --f7-tabbar-link-inactive-color: rgba(0, 0, 0, 0.4);\n}\n.ios .dark,\n.ios.dark {\n --f7-tabbar-link-inactive-color: rgba(255, 255, 255, 0.54);\n}\n.md {\n --f7-toolbar-height: 56px;\n --f7-toolbar-font-size: 14px;\n --f7-toolbar-inner-padding-left: 0px;\n --f7-toolbar-inner-padding-right: 0px;\n /*\n --f7-toolbar-link-height: var(--f7-toolbar-height);\n --f7-toolbar-link-line-height: var(--f7-toolbar-height);\n */\n --f7-tabbar-icons-height: 80px;\n --f7-tabbar-icons-tablet-height: 80px;\n --f7-tabbar-icon-size: 24px;\n --f7-tabbar-link-text-transform: none;\n --f7-tabbar-link-font-weight: 500;\n --f7-tabbar-link-letter-spacing: 0;\n --f7-toolbar-link-font-weight: 500;\n --f7-tabbar-label-font-size: 12px;\n --f7-tabbar-label-tablet-font-size: 12px;\n --f7-tabbar-label-font-weight: 500;\n --f7-tabbar-label-letter-spacing: 0;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-tabbar-link-active-color: var(--f7-md-on-secondary-container);\n --f7-tabbar-link-active-border-color: var(--f7-md-primary);\n --f7-tabbar-link-inactive-color: var(--f7-md-on-surface-variant);\n --f7-tabbar-link-active-icon-bg-color: var(--f7-md-secondary-container);\n}\n.toolbar {\n width: 100%;\n position: relative;\n margin: 0;\n transform: translate3d(0, 0, 0);\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n z-index: 600;\n box-sizing: border-box;\n left: 0;\n height: var(--f7-toolbar-height);\n background-color: var(--f7-toolbar-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-toolbar-text-color, var(--f7-bars-text-color));\n font-size: var(--f7-toolbar-font-size);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .toolbar {\n background-color: rgba(var(--f7-toolbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.toolbar b {\n font-weight: 600;\n}\n.toolbar a {\n color: var(--f7-toolbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n box-sizing: border-box;\n flex-shrink: 1;\n position: relative;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.toolbar .link {\n display: flex;\n line-height: var(--f7-toolbar-link-line-height, var(--f7-toolbar-height));\n height: var(--f7-toolbar-link-height, var(--f7-toolbar-height));\n font-weight: var(--f7-toolbar-link-font-weight);\n}\n.toolbar i.icon {\n display: block;\n}\n.toolbar:after,\n.toolbar:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.views > .toolbar,\n.view > .toolbar,\n.page > .toolbar {\n position: absolute;\n}\n.toolbar-top,\n.ios .toolbar-top-ios,\n.md .toolbar-top-md {\n top: 0;\n}\n.toolbar-top .tab-link-highlight,\n.ios .toolbar-top-ios .tab-link-highlight,\n.md .toolbar-top-md .tab-link-highlight {\n bottom: 0;\n}\n.toolbar-top.no-outline:after,\n.ios .toolbar-top-ios.no-outline:after,\n.md .toolbar-top-md.no-outline:after {\n display: none !important;\n}\n.toolbar-top.toolbar-hidden:before,\n.ios .toolbar-top-ios.toolbar-hidden:before,\n.md .toolbar-top-md.toolbar-hidden:before {\n display: none !important;\n}\n.toolbar-top:after,\n.ios .toolbar-top-ios:after,\n.md .toolbar-top-md:after,\n.toolbar-top:before,\n.ios .toolbar-top-ios:before,\n.md .toolbar-top-md:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.toolbar-top:after,\n.ios .toolbar-top-ios:after,\n.md .toolbar-top-md:after {\n content: '';\n position: absolute;\n background-color: var(--f7-toolbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.toolbar-bottom,\n.ios .toolbar-bottom-ios,\n.md .toolbar-bottom-md {\n bottom: 0;\n height: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n}\n.toolbar-bottom .tab-link-highlight,\n.ios .toolbar-bottom-ios .tab-link-highlight,\n.md .toolbar-bottom-md .tab-link-highlight {\n top: 0;\n}\n.toolbar-bottom .toolbar-inner,\n.ios .toolbar-bottom-ios .toolbar-inner,\n.md .toolbar-bottom-md .toolbar-inner {\n height: auto;\n top: 0;\n bottom: var(--f7-safe-area-bottom);\n}\n.toolbar-bottom.no-outline:before,\n.ios .toolbar-bottom-ios.no-outline:before,\n.md .toolbar-bottom-md.no-outline:before {\n display: none !important;\n}\n.toolbar-bottom.toolbar-hidden:after,\n.ios .toolbar-bottom-ios.toolbar-hidden:after,\n.md .toolbar-bottom-md.toolbar-hidden:after {\n display: none !important;\n}\n.toolbar-bottom:before,\n.ios .toolbar-bottom-ios:before,\n.md .toolbar-bottom-md:before {\n content: '';\n position: absolute;\n background-color: var(--f7-toolbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.toolbar-inner {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n align-content: center;\n overflow: hidden;\n padding: 0 calc(var(--f7-toolbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-toolbar-inner-padding-left) + var(--f7-safe-area-left));\n}\n.views > .tabbar,\n.views > .tabbar-icons {\n z-index: 5001;\n}\n.tabbar a,\n.tabbar-icons a {\n color: var(--f7-tabbar-link-inactive-color);\n}\n.tabbar .link,\n.tabbar-icons .link {\n line-height: 1.4;\n}\n.tabbar .tab-link,\n.tabbar-icons .tab-link,\n.tabbar .link,\n.tabbar-icons .link {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n text-transform: var(--f7-tabbar-link-text-transform);\n font-weight: var(--f7-tabbar-link-font-weight);\n letter-spacing: var(--f7-tabbar-link-letter-spacing);\n overflow: hidden;\n}\n.tabbar .tab-link-active,\n.tabbar-icons .tab-link-active {\n color: var(--f7-tabbar-link-active-color, var(--f7-theme-color));\n background-color: var(--f7-tabbar-link-active-bg-color, transparent);\n}\n.tabbar i.icon,\n.tabbar-icons i.icon {\n font-size: var(--f7-tabbar-icon-size);\n height: var(--f7-tabbar-icon-size);\n line-height: var(--f7-tabbar-icon-size);\n}\n.md .tabbar.tabbar-icons .tab-link-highlight,\n.md .tabbar-icons.tabbar-icons .tab-link-highlight {\n display: none;\n}\n.md .tabbar:not(.tabbar-icons) .tab-link-highlight,\n.md .tabbar-icons:not(.tabbar-icons) .tab-link-highlight {\n position: absolute;\n left: 0;\n height: 2px;\n background: var(--f7-tabbar-link-active-border-color, var(--f7-theme-color));\n transition-duration: 300ms;\n right: 0;\n}\n.tabbar-icons {\n --f7-toolbar-height: var(--f7-tabbar-icons-height);\n}\n.tabbar-icons .tab-link,\n.tabbar-icons .link {\n height: 100%;\n justify-content: center;\n align-items: center;\n}\n.tabbar-icons .tabbar-label {\n display: block;\n line-height: 1;\n margin: 0;\n position: relative;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--f7-tabbar-label-font-size);\n text-transform: var(--f7-tabbar-label-text-transform);\n font-weight: var(--f7-tabbar-label-font-weight);\n letter-spacing: var(--f7-tabbar-label-letter-spacing);\n}\n@media (min-width: 768px) and (min-height: 600px) {\n :root {\n --f7-tabbar-icons-height: var(--f7-tabbar-icons-tablet-height);\n --f7-tabbar-label-font-size: var(--f7-tabbar-label-tablet-font-size);\n }\n}\n.tabbar-scrollable .toolbar-inner {\n justify-content: flex-start;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.tabbar-scrollable .toolbar-inner::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.tabbar-scrollable .tab-link,\n.tabbar-scrollable .link {\n width: auto;\n flex-shrink: 0;\n}\n.toolbar-transitioning,\n.navbar-transitioning + .toolbar,\n.navbar-transitioning ~ * .toolbar {\n transition-duration: var(--f7-toolbar-hide-show-transition-duration);\n}\n.toolbar-bottom ~ *,\n.ios .toolbar-bottom-ios ~ *,\n.md .toolbar-bottom-md ~ * {\n --f7-page-toolbar-bottom-offset: var(--f7-toolbar-height);\n}\n.toolbar-bottom.tabbar-icons ~ *,\n.ios .toolbar-bottom-ios.tabbar-icons ~ *,\n.md .toolbar-bottom-md.tabbar-icons ~ * {\n --f7-page-toolbar-bottom-offset: var(--f7-tabbar-icons-height);\n}\n.toolbar-bottom.toolbar-hidden,\n.ios .toolbar-bottom-ios.toolbar-hidden,\n.md .toolbar-bottom-md.toolbar-hidden {\n transform: translate3d(0, 100%, 0);\n}\n.toolbar-top ~ *,\n.ios .toolbar-top-ios ~ *,\n.md .toolbar-top-md ~ * {\n --f7-page-toolbar-top-offset: var(--f7-toolbar-height);\n}\n.toolbar-top.tabbar-icons ~ *,\n.ios .toolbar-top-ios.tabbar-icons ~ *,\n.md .toolbar-top-md.tabbar-icons ~ * {\n --f7-page-toolbar-top-offset: var(--f7-tabbar-icons-height);\n}\n.toolbar-top.toolbar-hidden,\n.ios .toolbar-top-ios.toolbar-hidden,\n.md .toolbar-top-md.toolbar-hidden {\n transform: translate3d(0, -100%, 0);\n}\n.navbar ~ .toolbar-top,\n.navbars ~ .toolbar-top,\n.ios .navbar ~ .toolbar-top-ios,\n.ios .navbars ~ .toolbar-top-ios,\n.md .navbar ~ .toolbar-top-md,\n.navbar ~ * .toolbar-top,\n.navbars ~ * .toolbar-top,\n.ios .navbar ~ * .toolbar-top-ios,\n.ios .navbars ~ * .toolbar-top-ios,\n.md .navbar ~ * .toolbar-top-md,\n.navbar ~ .page:not(.no-navbar) .toolbar-top,\n.navbars ~ .page:not(.no-navbar) .toolbar-top,\n.ios .navbar ~ .page:not(.no-navbar) .toolbar-top-ios,\n.ios .navbars ~ .page:not(.no-navbar) .toolbar-top-ios,\n.md .navbar ~ .page:not(.no-navbar) .toolbar-top-md {\n top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ .toolbar-top.toolbar-hidden,\n.navbars ~ .toolbar-top.toolbar-hidden,\n.ios .navbar ~ .toolbar-top-ios.toolbar-hidden,\n.ios .navbars ~ .toolbar-top-ios.toolbar-hidden,\n.md .navbar ~ .toolbar-top-md.toolbar-hidden,\n.navbar ~ * .toolbar-top.toolbar-hidden,\n.navbars ~ * .toolbar-top.toolbar-hidden,\n.ios .navbar ~ * .toolbar-top-ios.toolbar-hidden,\n.ios .navbars ~ * .toolbar-top-ios.toolbar-hidden,\n.md .navbar ~ * .toolbar-top-md.toolbar-hidden,\n.navbar ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden,\n.navbars ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden,\n.ios .navbar ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,\n.ios .navbars ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,\n.md .navbar ~ .page:not(.no-navbar) .toolbar-top-md.toolbar-hidden {\n transform: translate3d(0, calc(-1 * (var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top))), 0);\n}\n.navbar ~ .toolbar-top.toolbar-hidden.tabbar-icons,\n.navbars ~ .toolbar-top.toolbar-hidden.tabbar-icons,\n.ios .navbar ~ .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.ios .navbars ~ .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.md .navbar ~ .toolbar-top-md.toolbar-hidden.tabbar-icons,\n.navbar ~ * .toolbar-top.toolbar-hidden.tabbar-icons,\n.navbars ~ * .toolbar-top.toolbar-hidden.tabbar-icons,\n.ios .navbar ~ * .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.ios .navbars ~ * .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.md .navbar ~ * .toolbar-top-md.toolbar-hidden.tabbar-icons,\n.navbar ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,\n.navbars ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,\n.ios .navbar ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.ios .navbars ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.md .navbar ~ .page:not(.no-navbar) .toolbar-top-md.toolbar-hidden.tabbar-icons {\n transform: translate3d(0, calc(-1 * (var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top))), 0);\n}\n.navbar-hidden + .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-hidden + .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-hidden + .toolbar-top-md:not(.toolbar-hidden),\n.navbar-hidden ~ * .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-hidden ~ * .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-hidden ~ * .toolbar-top-md:not(.toolbar-hidden) {\n transform: translate3d(0, calc(0px - var(--f7-navbar-height)), 0);\n}\n.navbar-large-hidden + .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-large-hidden + .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-large-hidden + .toolbar-top-md:not(.toolbar-hidden),\n.navbar-large-hidden ~ * .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-large-hidden ~ * .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-large-hidden ~ * .toolbar-top-md:not(.toolbar-hidden) {\n transform: translate3d(0, calc(0px - var(--f7-navbar-height) - var(--f7-navbar-large-title-height)), 0);\n}\n.ios .toolbar a.icon-only {\n min-height: var(--f7-toolbar-height);\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 0;\n min-width: 44px;\n}\n.ios .tabbar-icons .tab-link,\n.ios .tabbar-icons .link {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n.ios .tabbar-icons .tab-link i + span,\n.ios .tabbar-icons .link i + span {\n margin: 0;\n margin-top: 4px;\n}\n@media (min-width: 768px) and (min-height: 600px) {\n .ios .tabbar .tab-link,\n .ios .tabbar-icons .tab-link,\n .ios .tabbar .link,\n .ios .tabbar-icons .link {\n justify-content: center;\n flex-direction: row;\n }\n .ios .tabbar .tab-link i + span,\n .ios .tabbar-icons .tab-link i + span,\n .ios .tabbar .link i + span,\n .ios .tabbar-icons .link i + span {\n margin-left: 5px;\n }\n}\n.ios .tabbar-scrollable .toolbar-inner {\n justify-content: flex-start;\n}\n.ios .tabbar-scrollable .tab-link,\n.ios .tabbar-scrollable .link {\n padding: 0 8px;\n}\n.md .toolbar .link {\n justify-content: center;\n padding: 0 12px;\n min-width: 48px;\n}\n.md .toolbar a.icon-only {\n min-width: 0;\n flex-shrink: 0;\n}\n.md .tabbar .tab-link,\n.md .tabbar-icons .tab-link,\n.md .tabbar .link,\n.md .tabbar-icons .link {\n padding-left: 0;\n padding-right: 0;\n}\n.md .tabbar a.icon-only,\n.md .tabbar-icons a.icon-only {\n flex-shrink: initial;\n}\n.md .tabbar .tab-link,\n.md .tabbar-icons .tab-link {\n transition-duration: 300ms;\n overflow: hidden;\n position: relative;\n}\n.md .tabbar i.icon,\n.md .tabbar-icons i.icon {\n position: relative;\n}\n.md .tabbar i.icon::before,\n.md .tabbar-icons i.icon::before {\n content: '';\n width: 64px;\n height: 32px;\n border-radius: 32px;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translateX(-50%) translateY(-50%) scaleX(0.5);\n background: var(--f7-tabbar-link-active-icon-bg-color);\n opacity: 0;\n transition-duration: 200ms;\n z-index: -1;\n}\n.md .tabbar i.icon + .tabbar-label,\n.md .tabbar-icons i.icon + .tabbar-label {\n margin-top: 8px;\n}\n.md .tabbar .tab-link-active i.icon::before,\n.md .tabbar-icons .tab-link-active i.icon::before {\n opacity: 1;\n transform: translateX(-50%) translateY(-50%) scaleX(1);\n}\n.md .tabbar-icons .tab-link,\n.md .tabbar-icons .link {\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.md .tabbar-label {\n max-width: 100%;\n overflow: hidden;\n line-height: 1.2;\n}\n.md .tabbar-scrollable .toolbar-inner {\n overflow: auto;\n}\n.md .tabbar-scrollable .tab-link,\n.md .tabbar-scrollable .link {\n padding: 0 12px;\n}\n/* === Subnavbar === */\n:root {\n /*\n --f7-subnavbar-bg-color: var(--f7-bars-bg-color);\n --f7-subnavbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-subnavbar-border-color: var(--f7-bars-border-color);\n --f7-subnavbar-link-color: var(--f7-bars-link-color);\n --f7-subnavbar-text-color: var(--f7-bars-text-color);\n */\n --f7-subnavbar-title-line-height: 1.2;\n}\n.ios {\n --f7-subnavbar-height: 44px;\n --f7-subnavbar-inner-padding-left: 8px;\n --f7-subnavbar-inner-padding-right: 8px;\n --f7-subnavbar-title-font-size: 34px;\n --f7-subnavbar-title-font-weight: 700;\n --f7-subnavbar-title-letter-spacing: -0.03em;\n --f7-subnavbar-title-margin-left: 8px;\n /*\n --f7-subnavbar-link-height: var(--f7-subnavbar-height);\n --f7-subnavbar-link-line-height: var(--f7-subnavbar-height);\n */\n}\n.md {\n --f7-subnavbar-height: 64px;\n --f7-subnavbar-inner-padding-left: 16px;\n --f7-subnavbar-inner-padding-right: 16px;\n --f7-subnavbar-title-font-size: 22px;\n --f7-subnavbar-title-font-weight: 400;\n --f7-subnavbar-title-letter-spacing: 0;\n --f7-subnavbar-title-margin-left: 0px;\n /*\n --f7-subnavbar-link-height: var(--f7-subnavbar-height);\n --f7-subnavbar-link-line-height: var(--f7-subnavbar-height);\n */\n}\n.subnavbar {\n width: 100%;\n position: absolute;\n left: 0;\n top: 0;\n z-index: 600;\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background-color: var(--f7-subnavbar-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-subnavbar-text-color, var(--f7-bars-text-color));\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .subnavbar {\n background-color: rgba(var(--f7-subnavbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.subnavbar .subnavbar-title {\n position: relative;\n overflow: hidden;\n text-overflow: ellpsis;\n white-space: nowrap;\n font-size: var(--f7-subnavbar-title-font-size);\n font-weight: var(--f7-subnavbar-title-font-weight);\n text-align: left;\n display: inline-block;\n line-height: var(--f7-subnavbar-title-line-height);\n letter-spacing: var(--f7-subnavbar-title-letter-spacing);\n margin-right: var(--f7-subnavbar-title-margin-left);\n}\n.subnavbar .left,\n.subnavbar .right {\n flex-shrink: 0;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.subnavbar .right:first-child {\n position: absolute;\n height: 100%;\n}\n.subnavbar a {\n color: var(--f7-subnavbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.subnavbar a.link {\n line-height: var(--f7-subnavbar-link-line-height, var(--f7-subnavbar-height));\n height: var(--f7-subnavbar-link-height, var(--f7-subnavbar-height));\n}\n.subnavbar a.icon-only {\n min-width: var(--f7-subnavbar-height);\n}\n.subnavbar.no-outline:after {\n display: none !important;\n}\n.subnavbar.navbar-hidden:before {\n display: none !important;\n}\n.subnavbar:after,\n.subnavbar:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.subnavbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-subnavbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.subnavbar-inner {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n justify-content: space-between;\n overflow: hidden;\n padding: 0 calc(var(--f7-subnavbar-inner-padding-left) + var(--f7-safe-area-right)) 0 calc(var(--f7-subnavbar-inner-padding-right) + var(--f7-safe-area-left));\n}\n.navbar .subnavbar {\n top: 100%;\n}\n.views > .subnavbar,\n.view > .subnavbar,\n.page > .subnavbar {\n position: absolute;\n}\n.navbar ~ * .subnavbar,\n.navbars ~ * .subnavbar,\n.page-with-subnavbar .navbar ~ .subnavbar,\n.page-with-subnavbar .navbar ~ * .subnavbar,\n.navbar ~ .page-with-subnavbar:not(.no-navbar) .subnavbar,\n.navbar ~ .subnavbar,\n.navbars ~ .page-with-subnavbar:not(.no-navbar) .subnavbar,\n.navbars ~ .subnavbar {\n top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ .page-with-navbar-large:not(.no-navbar) .subnavbar,\n.navbars ~ .page-with-navbar-large:not(.no-navbar) .subnavbar,\n.page-with-subnavbar.page-with-navbar-large .navbar ~ .subnavbar,\n.page-with-subnavbar.page-with-navbar-large .navbar ~ * .subnavbar,\n.navbar .title-large ~ .subnavbar {\n top: calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));\n transform: translate3d(0, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.page-with-subnavbar,\n.subnavbar ~ * {\n --f7-page-subnavbar-offset: var(--f7-subnavbar-height);\n}\n.ios .subnavbar {\n height: calc(var(--f7-subnavbar-height) + 1px);\n margin-top: -1px;\n padding-top: 1px;\n}\n.ios .subnavbar .title {\n align-self: flex-start;\n flex-shrink: 10;\n}\n.ios .subnavbar .left a + a,\n.ios .subnavbar .right a + a {\n margin-right: 16px;\n}\n.ios .subnavbar .left {\n margin-left: 10px;\n}\n.ios .subnavbar .right {\n margin-right: 10px;\n}\n.ios .subnavbar .right:first-child {\n left: 8px;\n}\n.ios .subnavbar a.link {\n justify-content: flex-start;\n}\n.ios .subnavbar a.icon-only {\n justify-content: center;\n margin: 0;\n}\n.md .subnavbar {\n height: var(--f7-subnavbar-height);\n}\n.md .subnavbar .right {\n margin-right: auto;\n}\n.md .subnavbar .right:first-child {\n left: 16px;\n}\n.md .subnavbar a.link {\n justify-content: center;\n padding: 0 12px;\n}\n.md .subnavbar a.icon-only {\n flex-shrink: 0;\n padding: 0 12px;\n}\n.md .subnavbar-inner > a.link:first-child {\n margin-right: calc(-1 * var(--f7-subnavbar-inner-padding-right));\n}\n.md .subnavbar-inner > a.link:last-child {\n margin-left: calc(-1 * var(--f7-subnavbar-inner-padding-left));\n}\n/* === Content Block === */\n:root {\n --f7-block-padding-horizontal: 16px;\n --f7-block-padding-vertical: 16px;\n --f7-block-font-size: inherit;\n --f7-block-header-margin: 10px;\n --f7-block-footer-margin: 10px;\n --f7-block-header-font-size: 14px;\n --f7-block-footer-font-size: 14px;\n --f7-block-title-text-transform: none;\n --f7-block-title-white-space: nowrap;\n --f7-block-title-medium-text-transform: none;\n --f7-block-title-large-text-transform: none;\n --f7-block-inset-side-margin: 16px;\n}\n:root .dark,\n:root.dark {\n --f7-block-outline-border-color: rgba(255, 255, 255, 0.15);\n}\n.ios {\n --f7-block-text-color: inherit;\n --f7-block-margin-vertical: 35px;\n --f7-block-outline-border-color: rgba(0, 0, 0, 0.22);\n --f7-block-title-font-size: 16px;\n --f7-block-title-font-weight: 600;\n --f7-block-title-line-height: 20px;\n --f7-block-title-margin-bottom: 10px;\n --f7-block-title-medium-font-size: 22px;\n --f7-block-title-medium-font-weight: bold;\n --f7-block-title-medium-line-height: 1.4;\n --f7-block-title-large-font-size: 30px;\n --f7-block-title-large-font-weight: bold;\n --f7-block-title-large-line-height: 1.3;\n --f7-block-inset-border-radius: 8px;\n --f7-block-title-text-color: #000;\n --f7-block-strong-text-color: #000;\n --f7-block-header-text-color: rgba(0, 0, 0, 0.45);\n --f7-block-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-block-strong-bg-color: #fff;\n --f7-block-title-medium-text-color: #000;\n --f7-block-title-large-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-block-title-text-color: #fff;\n --f7-block-header-text-color: rgba(255, 255, 255, 0.55);\n --f7-block-footer-text-color: rgba(255, 255, 255, 0.55);\n --f7-block-strong-text-color: #fff;\n --f7-block-strong-bg-color: #1c1c1d;\n --f7-block-title-medium-text-color: #fff;\n --f7-block-title-large-text-color: #fff;\n}\n.md {\n --f7-block-margin-vertical: 32px;\n --f7-block-title-font-size: inherit;\n --f7-block-title-font-weight: 500;\n --f7-block-title-line-height: 16px;\n --f7-block-title-margin-bottom: 16px;\n --f7-block-title-medium-font-size: 16px;\n --f7-block-title-medium-font-weight: 500;\n --f7-block-title-medium-line-height: 1.3;\n --f7-block-title-large-font-size: 22px;\n --f7-block-title-large-font-weight: 500;\n --f7-block-title-large-line-height: 1.2;\n --f7-block-inset-border-radius: 16px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-block-text-color: var(--f7-md-on-surface);\n --f7-block-strong-text-color: var(--f7-md-on-surface);\n --f7-block-outline-border-color: var(--f7-md-outline);\n --f7-block-title-text-color: var(--f7-theme-color);\n --f7-block-title-medium-text-color: var(--f7-theme-color);\n --f7-block-title-large-text-color: var(--f7-theme-color);\n --f7-block-strong-bg-color: var(--f7-md-surface-1);\n --f7-block-header-text-color: var(--f7-md-on-surface-variant);\n --f7-block-footer-text-color: var(--f7-md-on-surface-variant);\n}\n.block {\n box-sizing: border-box;\n position: relative;\n z-index: 1;\n color: var(--f7-block-text-color);\n margin: var(--f7-block-margin-vertical) 0;\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));\n font-size: var(--f7-block-font-size);\n}\n.block > h1:first-child,\n.block > h2:first-child,\n.block > h3:first-child,\n.block > h4:first-child,\n.block > p:first-child {\n margin-top: 0;\n}\n.block > h1:last-child,\n.block > h2:last-child,\n.block > h3:last-child,\n.block > h4:last-child,\n.block > p:last-child {\n margin-bottom: 0;\n}\n.block-strong,\n.ios .block-strong-ios,\n.md .block-strong-md {\n color: var(--f7-block-strong-text-color);\n padding-top: var(--f7-block-padding-vertical);\n padding-bottom: var(--f7-block-padding-vertical);\n background-color: var(--f7-block-strong-bg-color);\n}\n.block-outline:not(.inset):before,\n.ios .block-outline-ios:not(.inset):not(.inset-ios):before,\n.md .block-outline-md:not(.inset):not(.inset-md):before {\n content: '';\n position: absolute;\n background-color: var(--f7-block-outline-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.block-outline:not(.inset):after,\n.ios .block-outline-ios:not(.inset):not(.inset-ios):after,\n.md .block-outline-md:not(.inset):not(.inset-md):after {\n content: '';\n position: absolute;\n background-color: var(--f7-block-outline-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.block-outline.inset,\n.ios .block-outline-ios.inset,\n.ios .block-outline-ios.inset-ios,\n.md .block-outline-md.inset,\n.md .block-outline-md.inset-md {\n border: 1px solid var(--f7-block-outline-border-color);\n}\n.block-title {\n position: relative;\n overflow: hidden;\n margin: 0;\n white-space: var(--f7-block-title-white-space);\n text-overflow: ellipsis;\n text-transform: var(--f7-block-title-text-transform);\n color: var(--f7-block-title-text-color);\n font-size: var(--f7-block-title-font-size, inherit);\n font-weight: var(--f7-block-title-font-weight);\n line-height: var(--f7-block-title-line-height);\n margin-top: var(--f7-block-margin-vertical);\n margin-bottom: var(--f7-block-title-margin-bottom);\n margin-left: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));\n margin-right: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));\n}\n.block-title + .list,\n.block-title + .block,\n.block-title + .card,\n.block-title + .timeline,\n.block-title + .block-header {\n margin-top: 0px;\n}\n.block-title-medium {\n font-size: var(--f7-block-title-medium-font-size);\n text-transform: var(--f7-block-title-medium-text-transform);\n color: var(--f7-block-title-medium-text-color);\n font-weight: var(--f7-block-title-medium-font-weight);\n line-height: var(--f7-block-title-medium-line-height);\n}\n.block-title-large {\n font-size: var(--f7-block-title-large-font-size);\n text-transform: var(--f7-block-title-large-text-transform);\n color: var(--f7-block-title-large-text-color);\n font-weight: var(--f7-block-title-large-font-weight);\n line-height: var(--f7-block-title-large-line-height);\n}\n.block > .block-title:first-child,\n.list > .block-title:first-child {\n margin-top: 0;\n margin-left: 0;\n margin-right: 0;\n}\n.block-header {\n color: var(--f7-block-header-text-color);\n font-size: var(--f7-block-header-font-size);\n margin-bottom: var(--f7-block-header-margin);\n margin-top: var(--f7-block-margin-vertical);\n}\n.block-header + .list,\n.block-header + .block,\n.block-header + .card,\n.block-header + .timeline {\n margin-top: var(--f7-block-header-margin);\n}\n.block-footer {\n color: var(--f7-block-footer-text-color);\n font-size: var(--f7-block-footer-font-size);\n margin-top: var(--f7-block-footer-margin);\n margin-bottom: var(--f7-block-margin-vertical);\n}\n.block-footer,\n.block-header {\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));\n}\n.block-footer ul:first-child,\n.block-header ul:first-child,\n.block-footer p:first-child,\n.block-header p:first-child,\n.block-footer h1:first-child,\n.block-header h1:first-child,\n.block-footer h2:first-child,\n.block-header h2:first-child,\n.block-footer h3:first-child,\n.block-header h3:first-child,\n.block-footer h4:first-child,\n.block-header h4:first-child {\n margin-top: 0;\n}\n.block-footer ul:last-child,\n.block-header ul:last-child,\n.block-footer p:last-child,\n.block-header p:last-child,\n.block-footer h1:last-child,\n.block-header h1:last-child,\n.block-footer h2:last-child,\n.block-header h2:last-child,\n.block-footer h3:last-child,\n.block-header h3:last-child,\n.block-footer h4:last-child,\n.block-header h4:last-child {\n margin-bottom: 0;\n}\n.block-footer ul:first-child:last-child,\n.block-header ul:first-child:last-child,\n.block-footer p:first-child:last-child,\n.block-header p:first-child:last-child,\n.block-footer h1:first-child:last-child,\n.block-header h1:first-child:last-child,\n.block-footer h2:first-child:last-child,\n.block-header h2:first-child:last-child,\n.block-footer h3:first-child:last-child,\n.block-header h3:first-child:last-child,\n.block-footer h4:first-child:last-child,\n.block-header h4:first-child:last-child {\n margin-top: 0;\n margin-bottom: 0;\n}\n.list .block-header,\n.block .block-header,\n.card .block-header,\n.timeline .block-header {\n margin-top: 0;\n}\n.list .block-footer,\n.block .block-footer,\n.card .block-footer,\n.timeline .block-footer {\n margin-bottom: 0;\n}\n.list + .block-footer,\n.block + .block-footer,\n.card + .block-footer,\n.timeline + .block-footer {\n margin-top: calc(-1 * (var(--f7-block-margin-vertical) - var(--f7-block-footer-margin)));\n}\n.block + .block-footer {\n margin-top: calc(-1 * (var(--f7-block-margin-vertical) - var(--f7-block-footer-margin)));\n margin-bottom: var(--f7-block-margin-vertical);\n}\n.block .block-header,\n.block .block-footer {\n padding: 0;\n}\n.block.inset,\n.ios .block.inset-ios,\n.md .block.inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n}\n.block-strong.inset:before,\n.ios .block-strong-ios.inset:before,\n.md .block-strong-md.inset:before,\n.ios .block-strong.inset-ios:before,\n.md .block-strong.inset-md:before,\n.ios .block-strong-ios.inset-ios:before,\n.md .block-strong-md.inset-md:before,\n.block-strong.inset:after,\n.ios .block-strong-ios.inset:after,\n.md .block-strong-md.inset:after,\n.ios .block-strong.inset-ios:after,\n.md .block-strong.inset-md:after,\n.ios .block-strong-ios.inset-ios:after,\n.md .block-strong-md.inset-md:after {\n display: none !important;\n}\n@media (min-width: 480px) {\n .block.xsmall-inset,\n .ios .block.xsmall-inset-ios,\n .md .block.xsmall-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.xsmall-inset:before,\n .ios .block.xsmall-inset-ios:before,\n .md .block.xsmall-inset-md:before,\n .block.xsmall-inset:after,\n .ios .block.xsmall-inset-ios:after,\n .md .block.xsmall-inset-md:after {\n display: none !important;\n }\n .block.xsmall-inset.block-outline,\n .ios .block.xsmall-inset-ios.block-outline,\n .ios .block.xsmall-inset-ios.block-outline-ios,\n .md .block.xsmall-inset-md.block-outline,\n .md .block.xsmall-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 568px) {\n .block.small-inset,\n .ios .block.small-inset-ios,\n .md .block.small-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.small-inset:before,\n .ios .block.small-inset-ios:before,\n .md .block.small-inset-md:before,\n .block.small-inset:after,\n .ios .block.small-inset-ios:after,\n .md .block.small-inset-md:after {\n display: none !important;\n }\n .block.small-inset.block-outline,\n .ios .block.small-inset-ios.block-outline,\n .ios .block.small-inset-ios.block-outline-ios,\n .md .block.small-inset-md.block-outline,\n .md .block.small-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 768px) {\n .block.medium-inset,\n .ios .block.medium-inset-ios,\n .md .block.medium-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.medium-inset:before,\n .ios .block.medium-inset-ios:before,\n .md .block.medium-inset-md:before,\n .block.medium-inset:after,\n .ios .block.medium-inset-ios:after,\n .md .block.medium-inset-md:after {\n display: none !important;\n }\n .block.medium-inset.block-outline,\n .ios .block.medium-inset-ios.block-outline,\n .ios .block.medium-inset-ios.block-outline-ios,\n .md .block.medium-inset-md.block-outline,\n .md .block.medium-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 1024px) {\n .block.large-inset,\n .ios .block.large-inset-ios,\n .md .block.large-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.large-inset:before,\n .ios .block.large-inset-ios:before,\n .md .block.large-inset-md:before,\n .block.large-inset:after,\n .ios .block.large-inset-ios:after,\n .md .block.large-inset-md:after {\n display: none !important;\n }\n .block.large-inset.block-outline,\n .ios .block.large-inset-ios.block-outline,\n .ios .block.large-inset-ios.block-outline-ios,\n .md .block.large-inset-md.block-outline,\n .md .block.large-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 1200px) {\n .block.xlarge-inset,\n .ios .block.xlarge-inset-ios,\n .md .block.xlarge-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.xlarge-inset:before,\n .ios .block.xlarge-inset-ios:before,\n .md .block.xlarge-inset-md:before,\n .block.xlarge-inset:after,\n .ios .block.xlarge-inset-ios:after,\n .md .block.xlarge-inset-md:after {\n display: none !important;\n }\n .block.xlarge-inset.block-outline,\n .ios .block.xlarge-inset-ios.block-outline,\n .ios .block.xlarge-inset-ios.block-outline-ios,\n .md .block.xlarge-inset-md.block-outline,\n .md .block.xlarge-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n/* === List View === */\n:root {\n --f7-list-inset-side-margin: 16px;\n --f7-list-item-padding-horizontal: 16px;\n --f7-list-item-padding-vertical: 8px;\n --f7-list-media-item-padding-horizontal: 16px;\n --f7-list-item-text-max-lines: 2;\n --f7-list-chevron-icon-font-size: 20px;\n --f7-list-item-media-margin: 16px;\n --f7-list-item-title-font-size: inherit;\n --f7-list-item-title-font-weight: 400;\n --f7-list-item-title-line-height: inherit;\n --f7-list-item-title-white-space: nowrap;\n --f7-list-item-subtitle-font-weight: 400;\n --f7-list-item-subtitle-line-height: inherit;\n --f7-list-item-text-font-weight: 400;\n --f7-list-item-after-font-weight: 400;\n --f7-list-item-after-line-height: inherit;\n --f7-list-item-header-font-size: 12px;\n --f7-list-item-header-font-weight: 400;\n --f7-list-item-header-line-height: 1.2;\n --f7-list-item-footer-font-size: 12px;\n --f7-list-item-footer-font-weight: 400;\n --f7-list-item-footer-line-height: 1.2;\n /*\n --f7-list-button-text-color: var(--f7-theme-color);\n */\n --f7-list-button-font-size: inherit;\n --f7-list-button-font-weight: 400;\n --f7-list-button-text-align: center;\n --f7-list-group-title-line-height: inherit;\n --f7-menu-list-font-size: 14px;\n --f7-menu-list-item-title-font-size: 14px;\n --f7-menu-list-item-title-font-weight: 500;\n --f7-menu-list-item-subtitle-font-size: 14px;\n --f7-menu-list-item-text-font-size: 14px;\n --f7-menu-list-item-after-font-size: 14px;\n --f7-list-outline-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-chevron-icon-color: rgba(0, 0, 0, 0.2);\n}\n:root .dark,\n:root.dark {\n --f7-list-button-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-outline-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-group-title-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-chevron-icon-color: rgba(255, 255, 255, 0.3);\n}\n.ios {\n --f7-list-in-list-padding-left: 30px;\n --f7-list-inset-border-radius: 8px;\n --f7-list-margin-vertical: 35px;\n --f7-list-font-size: 17px;\n --f7-list-chevron-icon-area: 20px;\n --f7-list-item-title-text-color: inherit;\n --f7-list-item-subtitle-text-color: inherit;\n --f7-list-link-pressed-bg-color: rgba(0, 0, 0, 0.15);\n --f7-list-item-subtitle-font-size: 15px;\n --f7-list-item-text-font-size: 15px;\n --f7-list-item-text-line-height: 21px;\n --f7-list-item-after-font-size: inherit;\n --f7-list-item-after-padding: 5px;\n --f7-list-item-min-height: 44px;\n --f7-list-item-media-icons-margin: 5px;\n --f7-list-media-item-padding-vertical: 10px;\n --f7-list-media-item-title-font-weight: 600;\n --f7-list-button-border-color: rgba(0, 0, 0, 0.22);\n /*\n --f7-list-button-pressed-bg-color: rgba(var(--f7-theme-color-rgb), .15);\n */\n --f7-list-group-title-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-group-title-height: 31px;\n --f7-list-group-title-font-size: inherit;\n --f7-list-group-title-font-weight: 400;\n --f7-menu-list-offset: 8px;\n --f7-menu-list-border-radius: 8px;\n --f7-menu-list-item-bg-color: transparent;\n --f7-menu-list-item-text-color: inherit;\n --f7-menu-list-item-min-height: 44px;\n --f7-list-item-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-outline-inset-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-strong-bg-color: #fff;\n --f7-list-item-after-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-item-header-text-color: inherit;\n --f7-list-item-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-item-text-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-group-title-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-group-title-bg-color: #f7f7f7;\n --f7-menu-list-item-selected-text-color: var(--f7-theme-color);\n --f7-menu-list-item-selected-bg-color: rgba(var(--f7-theme-color-rgb), 0.15);\n}\n.ios .dark,\n.ios.dark {\n --f7-list-item-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-outline-inset-color: rgba(255, 255, 255, 0.15);\n --f7-list-strong-bg-color: #1c1c1d;\n --f7-list-item-after-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-item-header-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-item-footer-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-item-text-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-group-title-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-group-title-bg-color: #232323;\n --f7-list-link-pressed-bg-color: rgba(255, 255, 255, 0.08);\n --f7-menu-list-item-selected-text-color: inherit;\n --f7-menu-list-item-selected-bg-color: var(--f7-theme-color);\n}\n.md {\n --f7-list-in-list-padding-left: 24px;\n --f7-list-inset-border-radius: 16px;\n --f7-list-margin-vertical: 32px;\n --f7-list-font-size: 16px;\n --f7-list-chevron-icon-area: 26px;\n --f7-list-item-subtitle-font-size: 14px;\n --f7-list-item-text-font-size: 14px;\n --f7-list-item-text-line-height: 20px;\n --f7-list-item-after-font-size: 14px;\n --f7-list-item-after-padding: 8px;\n --f7-list-item-min-height: 48px;\n --f7-list-item-media-icons-margin: 8px;\n --f7-list-media-item-padding-vertical: 12px;\n --f7-list-media-item-title-font-weight: 500;\n --f7-list-button-border-color: transparent;\n /*\n --f7-list-button-pressed-bg-color: transparent;\n */\n --f7-list-group-title-border-color: transparent;\n --f7-list-group-title-height: 48px;\n --f7-list-group-title-font-size: 16px;\n --f7-list-group-title-font-weight: 400;\n --f7-menu-list-offset: 16px;\n --f7-menu-list-border-radius: 999px;\n --f7-menu-list-item-min-height: 56px;\n --f7-list-link-pressed-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-list-outline-inset-border-color: var(--f7-md-outline);\n --f7-list-item-border-color: var(--f7-md-outline);\n --f7-list-item-title-text-color: var(--f7-md-on-surface);\n --f7-list-item-subtitle-text-color: var(--f7-md-on-surface);\n --f7-list-group-title-bg-color: var(--f7-md-surface-2);\n --f7-list-group-title-text-color: var(--f7-md-on-surface-variant);\n --f7-list-strong-bg-color: var(--f7-md-surface-1);\n --f7-list-item-after-text-color: var(--f7-md-on-surface-variant);\n --f7-list-item-text-text-color: var(--f7-md-on-surface-variant);\n --f7-list-item-header-text-color: var(--f7-md-on-surface-variant);\n --f7-list-item-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-menu-list-item-text-color: var(--f7-md-on-surface-variant);\n --f7-menu-list-item-bg-color: var(--f7-md-surface-1);\n --f7-menu-list-item-selected-text-color: var(--f7-md-on-secondary-container);\n --f7-menu-list-item-selected-bg-color: var(--f7-md-secondary-container);\n}\n:root {\n --f7-list-chevron-icon-left: 'chevron_left';\n --f7-list-chevron-icon-right: 'chevron_right';\n}\n.list {\n position: relative;\n z-index: 1;\n font-size: var(--f7-list-font-size);\n margin: var(--f7-list-margin-vertical) 0;\n}\n.list-strong ul,\n.ios .list-strong-ios ul,\n.md .list-strong-md ul {\n background: var(--f7-list-strong-bg-color);\n}\n.list-outline ul:before,\n.ios .list-outline-ios ul:before,\n.md .list-outline-md ul:before {\n content: '';\n position: absolute;\n background-color: var(--f7-list-outline-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-outline ul:after,\n.ios .list-outline-ios ul:after,\n.md .list-outline-md ul:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-outline-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-outline.inset,\n.ios .list-outline-ios.inset,\n.ios .list-outline-ios.inset-ios,\n.md .list-outline-md.inset,\n.md .list-outline-md.inset-md {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n}\n.list ul {\n list-style: none;\n margin: 0;\n padding: 0;\n position: relative;\n}\n.list ul ul {\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-list-in-list-padding-left));\n}\n.list ul ul:before,\n.list ul ul:after {\n display: none !important;\n}\n.list li {\n position: relative;\n box-sizing: border-box;\n}\n.list .item-media {\n display: flex;\n flex-shrink: 0;\n flex-wrap: nowrap;\n align-items: center;\n box-sizing: border-box;\n padding-bottom: var(--f7-list-item-padding-vertical);\n padding-top: var(--f7-list-item-padding-vertical);\n position: relative;\n}\n.list .item-media + .item-inner {\n margin-right: var(--f7-list-item-media-margin);\n}\n.list .item-media i + i,\n.list .item-media i + img {\n margin-right: var(--f7-list-item-media-icons-margin);\n}\n.list .item-after {\n padding-right: var(--f7-list-item-after-padding);\n}\n.list .item-inner {\n position: relative;\n width: 100%;\n min-width: 0;\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n align-self: stretch;\n padding-top: var(--f7-list-item-padding-vertical);\n padding-bottom: var(--f7-list-item-padding-vertical);\n min-height: calc(var(--f7-list-item-min-height));\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.list .item-title {\n min-width: 0;\n flex-shrink: 1;\n white-space: var(--f7-list-item-title-white-space);\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n font-size: var(--f7-list-item-title-font-size);\n font-weight: var(--f7-list-item-title-font-weight);\n color: var(--f7-list-item-title-text-color);\n line-height: var(--f7-list-item-title-line-height);\n}\n.list .item-after {\n white-space: nowrap;\n flex-shrink: 0;\n display: flex;\n font-size: var(--f7-list-item-after-font-size);\n font-weight: var(--f7-list-item-after-font-weight);\n color: var(--f7-list-item-after-text-color);\n line-height: var(--f7-list-item-after-line-height);\n margin-right: auto;\n}\n.list .item-header,\n.list .item-footer {\n white-space: normal;\n}\n.list .item-header {\n color: var(--f7-list-item-header-text-color);\n font-size: var(--f7-list-item-header-font-size);\n font-weight: var(--f7-list-item-header-font-weight);\n line-height: var(--f7-list-item-header-line-height);\n}\n.list .item-footer {\n color: var(--f7-list-item-footer-text-color);\n font-size: var(--f7-list-item-footer-font-size);\n font-weight: var(--f7-list-item-footer-font-weight);\n line-height: var(--f7-list-item-footer-line-height);\n}\n.list .item-link,\n.list label.item-content,\n.list .list-button {\n transition-duration: 300ms;\n transition-property: background-color, color;\n position: relative;\n overflow: hidden;\n z-index: 0;\n cursor: pointer;\n}\n.list .item-link,\n.list .list-button {\n display: block;\n}\n.list .item-link,\n.list label.item-content {\n color: inherit;\n}\n.list .item-link.active-state,\n.list label.item-content.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.list .item-link .item-inner {\n padding-left: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.list .item-content {\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n min-height: calc(var(--f7-list-item-min-height));\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.list .item-subtitle {\n position: relative;\n overflow: hidden;\n white-space: nowrap;\n max-width: 100%;\n text-overflow: ellipsis;\n font-size: var(--f7-list-item-subtitle-font-size);\n font-weight: var(--f7-list-item-subtitle-font-weight);\n color: var(--f7-list-item-subtitle-text-color);\n line-height: var(--f7-list-item-subtitle-line-height);\n}\n.list .item-text {\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n /* autoprefixer: ignore next */\n -webkit-line-clamp: var(--f7-list-item-text-max-lines);\n /* autoprefixer: ignore next */\n -webkit-box-orient: vertical;\n display: -webkit-box;\n font-size: var(--f7-list-item-text-font-size);\n font-weight: var(--f7-list-item-text-font-weight);\n color: var(--f7-list-item-text-text-color);\n line-height: var(--f7-list-item-text-line-height);\n max-height: calc(var(--f7-list-item-text-line-height) * var(--f7-list-item-text-max-lines));\n}\n.list .item-title-row {\n position: relative;\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n}\n.list .item-title-row .item-after {\n align-self: center;\n}\n.list li:last-child .list-button:after {\n display: none !important;\n}\n.list li:last-child > .item-inner:after,\n.list li:last-child li:last-child > .item-inner:after,\n.list li:last-child > .item-content > .item-inner:after,\n.list li:last-child li:last-child > .item-content > .item-inner:after,\n.list li:last-child > .swipeout-content > .item-content > .item-inner:after,\n.list li:last-child li:last-child > .swipeout-content > .item-content > .item-inner:after,\n.list li:last-child > .item-link > .item-content > .item-inner:after,\n.list li:last-child li:last-child > .item-link > .item-content > .item-inner:after {\n display: none !important;\n}\n.list li li:last-child .item-inner:after,\n.list li:last-child li .item-inner:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-button {\n --f7-touch-ripple-color: var(--f7-link-touch-ripple-color, rgba(var(--f7-theme-color-rgb), 0.25));\n padding: 0 var(--f7-list-item-padding-horizontal);\n line-height: var(--f7-list-item-min-height);\n color: var(--f7-list-button-text-color, var(--f7-theme-color));\n font-size: var(--f7-list-button-font-size);\n font-weight: var(--f7-list-button-font-weight);\n text-align: var(--f7-list-button-text-align);\n}\n.ios .list-button.active-state {\n background-color: var(--f7-list-button-pressed-bg-color, rgba(var(--f7-theme-color-rgb), 0.15));\n}\n.md .list-button.active-state {\n background-color: var(--f7-list-button-pressed-bg-color, transparent);\n}\n.list-dividers .list-button:after,\n.ios .list-dividers-ios .list-button:after,\n.md .list-dividers-md .list-button:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-button-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-button[class*='color-'] {\n --f7-list-button-text-color: var(--f7-theme-color);\n}\n.simple-list li {\n position: relative;\n white-space: nowrap;\n text-overflow: ellipsis;\n max-width: 100%;\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n align-items: center;\n align-content: center;\n line-height: var(--f7-list-item-min-height);\n height: var(--f7-list-item-min-height);\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.simple-list li:after {\n left: var(--f7-list-item-padding-horizontal);\n right: 0;\n width: auto;\n right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n left: 0;\n}\n.simple-list li:last-child:after {\n display: none !important;\n}\n.links-list li {\n z-index: 1;\n}\n.links-list a {\n transition-duration: 300ms;\n transition-property: background-color;\n display: block;\n position: relative;\n overflow: hidden;\n display: flex;\n align-items: center;\n align-content: center;\n justify-content: space-between;\n box-sizing: border-box;\n white-space: nowrap;\n text-overflow: ellipsis;\n max-width: 100%;\n height: var(--f7-list-item-min-height);\n color: inherit;\n}\n.links-list a .ripple-wave {\n z-index: 0;\n}\n.links-list a:after {\n width: auto;\n}\n.links-list a.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.links-list a {\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n padding-left: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.links-list a:after {\n right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n left: 0;\n}\n.links-list li:last-child a:after {\n display: none !important;\n}\n.list-dividers.simple-list li:after,\n.ios .list-dividers-ios.simple-list li:after,\n.md .list-dividers-md.simple-list li:after,\n.list-dividers.links-list a:after,\n.ios .list-dividers-ios.links-list a:after,\n.md .list-dividers-md.links-list a:after,\n.list-dividers .item-inner:after,\n.ios .list-dividers-ios .item-inner:after,\n.md .list-dividers-md .item-inner:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li > .item-link,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item > .item-link {\n margin-left: calc(var(--f7-list-item-padding-horizontal) / 2);\n margin-right: calc(var(--f7-list-item-padding-horizontal) / 2);\n border-radius: 16px;\n}\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li > .item-link > .item-content,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item > .item-link > .item-content {\n margin-left: 0;\n margin-right: 0;\n}\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content {\n padding-right: calc(var(--f7-list-item-padding-horizontal) / 2 + var(--f7-safe-area-right));\n}\n.media-list,\nli.media-item {\n --f7-list-item-padding-vertical: var(--f7-list-media-item-padding-vertical);\n --f7-list-item-padding-horizontal: var(--f7-list-media-item-padding-horizontal);\n}\n.media-list .item-title,\nli.media-item .item-title {\n font-weight: var(--f7-list-media-item-title-font-weight, var(--f7-list-item-title-font-weight, inherit));\n}\n.media-list .item-inner,\nli.media-item .item-inner {\n display: block;\n align-self: stretch;\n}\n.media-list .item-media img,\nli.media-item .item-media img {\n display: block;\n}\n.media-list .item-link .item-inner,\nli.media-item .item-link .item-inner {\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.media-list .item-link .item-title-row,\nli.media-item .item-link .item-title-row {\n padding-left: calc(var(--f7-list-chevron-icon-area));\n}\n.media-list.chevron-center .item-link .item-inner,\n.media-list .chevron-center .item-link .item-inner,\n.media-list .item-link.chevron-center .item-inner,\nli.media-item.chevron-center .item-link .item-inner,\nli.media-item .item-link.chevron-center .item-inner,\nli.media-item .chevron-center .item-link .item-inner {\n padding-left: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.media-list.chevron-center .item-title-row,\n.media-list .chevron-center .item-title-row,\nli.media-item.chevron-center .item-title-row,\nli.media-item .chevron-center .item-title-row {\n padding-left: 0;\n}\n.list .item-link .item-inner:before,\n.links-list a:before,\n.media-list .item-link .item-title-row:before,\nli.media-item .item-link .item-title-row:before,\n.media-list.chevron-center .item-link .item-inner:before,\n.media-list .chevron-center .item-link .item-inner:before,\n.media-list .item-link.chevron-center .item-inner:before,\nli.media-item.chevron-center .item-link .item-inner:before,\nli.media-item .chevron-center .item-link .item-inner:before,\nli.media-item .item-link.chevron-center .item-inner:before {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n top: 50%;\n width: 8px;\n height: 14px;\n margin-top: -7px;\n font-size: var(--f7-list-chevron-icon-font-size);\n line-height: 14px;\n color: var(--f7-list-chevron-icon-color);\n pointer-events: none;\n left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n content: var(--f7-list-chevron-icon-left);\n}\n.media-list.chevron-center .item-title-row:before,\n.media-list .chevron-center .item-title-row:before,\nli.media-item.chevron-center .item-title-row:before,\nli.media-item .chevron-center .item-title-row:before {\n display: none;\n}\n.media-list .item-link .item-inner:before,\nli.media-item .item-link .item-inner:before {\n display: none;\n}\n.media-list .item-link .item-title-row:before,\nli.media-item .item-link .item-title-row:before {\n left: 0;\n}\n.list-group ul:after,\n.list-group ul:before {\n z-index: 25 !important;\n}\n.list-group + .list-group ul:before {\n display: none !important;\n}\nli.list-group-title,\n.list-group-title {\n margin-top: -1px;\n white-space: nowrap;\n position: relative;\n max-width: 100%;\n text-overflow: ellipsis;\n overflow: hidden;\n z-index: 15;\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n box-sizing: border-box;\n display: flex;\n align-items: center;\n align-content: center;\n height: var(--f7-list-group-title-height);\n color: var(--f7-list-group-title-text-color);\n font-size: var(--f7-list-group-title-font-size);\n font-weight: var(--f7-list-group-title-font-weight);\n background-color: var(--f7-list-group-title-bg-color);\n line-height: var(--f7-list-group-title-line-height);\n}\nli.list-group-title:before,\n.list-group-title:before {\n content: '';\n position: absolute;\n background-color: var(--f7-list-group-title-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\nli.list-group-title:after,\n.list-group-title:after {\n display: none !important;\n}\n.list-group > .list-group-title,\n.list-group > ul > .list-group-title {\n top: 0;\n margin-top: 0;\n position: sticky;\n z-index: 20;\n}\n.page-with-navbar-large .list-group > .list-group-title,\n.page-with-navbar-large .list-group > ul > .list-group-title {\n top: calc(-1 * var(--f7-navbar-large-title-height));\n}\n.list.inset,\n.ios .list.inset-ios,\n.md .list.inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n}\n.list.inset .block-title,\n.ios .list.inset-ios .block-title,\n.md .list.inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n}\n.list.inset ul,\n.ios .list.inset-ios ul,\n.md .list.inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n}\n.list.inset ul:before,\n.ios .list.inset-ios ul:before,\n.md .list.inset-md ul:before,\n.list.inset ul:after,\n.ios .list.inset-ios ul:after,\n.md .list.inset-md ul:after {\n display: none !important;\n}\n.list.inset li.swipeout:first-child,\n.ios .list.inset-ios li.swipeout:first-child,\n.md .list.inset-md li.swipeout:first-child,\n.list.inset li:first-child > a,\n.ios .list.inset-ios li:first-child > a,\n.md .list.inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n}\n.list.inset li.swipeout:last-child,\n.ios .list.inset-ios li.swipeout:last-child,\n.md .list.inset-md li.swipeout:last-child,\n.list.inset li:last-child > a,\n.ios .list.inset-ios li:last-child > a,\n.md .list.inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n}\n.list.inset li.swipeout:first-child:last-child,\n.ios .list.inset-ios li.swipeout:first-child:last-child,\n.md .list.inset-md li.swipeout:first-child:last-child,\n.list.inset li:first-child:last-child > a,\n.ios .list.inset-ios li:first-child:last-child > a,\n.md .list.inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n}\n@media (min-width: 480px) {\n .list.xsmall-inset,\n .ios .list.xsmall-inset-ios,\n .md .list.xsmall-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.xsmall-inset .block-title,\n .ios .list.xsmall-inset-ios .block-title,\n .md .list.xsmall-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.xsmall-inset ul,\n .ios .list.xsmall-inset-ios ul,\n .md .list.xsmall-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xsmall-inset ul:before,\n .ios .list.xsmall-inset-ios ul:before,\n .md .list.xsmall-inset-md ul:before,\n .list.xsmall-inset ul:after,\n .ios .list.xsmall-inset-ios ul:after,\n .md .list.xsmall-inset-md ul:after {\n display: none !important;\n }\n .list.xsmall-inset li:first-child > a,\n .ios .list.xsmall-inset-ios li:first-child > a,\n .md .list.xsmall-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.xsmall-inset li:last-child > a,\n .ios .list.xsmall-inset-ios li:last-child > a,\n .md .list.xsmall-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.xsmall-inset li:first-child:last-child > a,\n .ios .list.xsmall-inset-ios li:first-child:last-child > a,\n .md .list.xsmall-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xsmall-inset.list-outline ul,\n .ios .list.xsmall-inset-ios.list-outline ul,\n .ios .list.xsmall-inset-ios.list-outline-ios ul,\n .md .list.xsmall-inset-md.list-outline ul,\n .md .list.xsmall-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 568px) {\n .list.small-inset,\n .ios .list.small-inset-ios,\n .md .list.small-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.small-inset .block-title,\n .ios .list.small-inset-ios .block-title,\n .md .list.small-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.small-inset ul,\n .ios .list.small-inset-ios ul,\n .md .list.small-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.small-inset ul:before,\n .ios .list.small-inset-ios ul:before,\n .md .list.small-inset-md ul:before,\n .list.small-inset ul:after,\n .ios .list.small-inset-ios ul:after,\n .md .list.small-inset-md ul:after {\n display: none !important;\n }\n .list.small-inset li:first-child > a,\n .ios .list.small-inset-ios li:first-child > a,\n .md .list.small-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.small-inset li:last-child > a,\n .ios .list.small-inset-ios li:last-child > a,\n .md .list.small-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.small-inset li:first-child:last-child > a,\n .ios .list.small-inset-ios li:first-child:last-child > a,\n .md .list.small-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.small-inset.list-outline ul,\n .ios .list.small-inset-ios.list-outline ul,\n .ios .list.small-inset-ios.list-outline-ios ul,\n .md .list.small-inset-md.list-outline ul,\n .md .list.small-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 768px) {\n .list.medium-inset,\n .ios .list.medium-inset-ios,\n .md .list.medium-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.medium-inset .block-title,\n .ios .list.medium-inset-ios .block-title,\n .md .list.medium-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.medium-inset ul,\n .ios .list.medium-inset-ios ul,\n .md .list.medium-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.medium-inset ul:before,\n .ios .list.medium-inset-ios ul:before,\n .md .list.medium-inset-md ul:before,\n .list.medium-inset ul:after,\n .ios .list.medium-inset-ios ul:after,\n .md .list.medium-inset-md ul:after {\n display: none !important;\n }\n .list.medium-inset li:first-child > a,\n .ios .list.medium-inset-ios li:first-child > a,\n .md .list.medium-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.medium-inset li:last-child > a,\n .ios .list.medium-inset-ios li:last-child > a,\n .md .list.medium-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.medium-inset li:first-child:last-child > a,\n .ios .list.medium-inset-ios li:first-child:last-child > a,\n .md .list.medium-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.medium-inset.list-outline ul,\n .ios .list.medium-inset-ios.list-outline ul,\n .ios .list.medium-inset-ios.list-outline-ios ul,\n .md .list.medium-inset-md.list-outline ul,\n .md .list.medium-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 1024px) {\n .list.large-inset,\n .ios .list.large-inset-ios,\n .md .list.large-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.large-inset .block-title,\n .ios .list.large-inset-ios .block-title,\n .md .list.large-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.large-inset ul,\n .ios .list.large-inset-ios ul,\n .md .list.large-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.large-inset ul:before,\n .ios .list.large-inset-ios ul:before,\n .md .list.large-inset-md ul:before,\n .list.large-inset ul:after,\n .ios .list.large-inset-ios ul:after,\n .md .list.large-inset-md ul:after {\n display: none !important;\n }\n .list.large-inset li:first-child > a,\n .ios .list.large-inset-ios li:first-child > a,\n .md .list.large-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.large-inset li:last-child > a,\n .ios .list.large-inset-ios li:last-child > a,\n .md .list.large-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.large-inset li:first-child:last-child > a,\n .ios .list.large-inset-ios li:first-child:last-child > a,\n .md .list.large-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.large-inset.list-outline ul,\n .ios .list.large-inset-ios.list-outline ul,\n .ios .list.large-inset-ios.list-outline-ios ul,\n .md .list.large-inset-md.list-outline ul,\n .md .list.large-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 1200px) {\n .list.xlarge-inset,\n .ios .list.xlarge-inset-ios,\n .md .list.xlarge-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.xlarge-inset .block-title,\n .ios .list.xlarge-inset-ios .block-title,\n .md .list.xlarge-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.xlarge-inset ul,\n .ios .list.xlarge-inset-ios ul,\n .md .list.xlarge-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xlarge-inset ul:before,\n .ios .list.xlarge-inset-ios ul:before,\n .md .list.xlarge-inset-md ul:before,\n .list.xlarge-inset ul:after,\n .ios .list.xlarge-inset-ios ul:after,\n .md .list.xlarge-inset-md ul:after {\n display: none !important;\n }\n .list.xlarge-inset li:first-child > a,\n .ios .list.xlarge-inset-ios li:first-child > a,\n .md .list.xlarge-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.xlarge-inset li:last-child > a,\n .ios .list.xlarge-inset-ios li:last-child > a,\n .md .list.xlarge-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.xlarge-inset li:first-child:last-child > a,\n .ios .list.xlarge-inset-ios li:first-child:last-child > a,\n .md .list.xlarge-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xlarge-inset.list-outline ul,\n .ios .list.xlarge-inset-ios.list-outline ul,\n .ios .list.xlarge-inset-ios.list-outline-ios ul,\n .md .list.xlarge-inset-md.list-outline ul,\n .md .list.xlarge-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n.list.no-chevron,\n.list .no-chevron,\n.menu-list {\n --f7-list-chevron-icon-color: transparent;\n --f7-list-chevron-icon-area: 0px;\n}\n.menu-list {\n --f7-list-font-size: var(--f7-menu-list-font-size);\n --f7-list-item-title-font-size: var(--f7-menu-list-item-title-font-size);\n --f7-list-item-title-font-weight: var(--f7-menu-list-item-title-font-weight);\n --f7-list-item-subtitle-font-size: var(--f7-menu-list-item-subtitle-font-size);\n --f7-list-item-text-font-size: var(--f7-menu-list-item-text-font-size);\n --f7-list-item-after-font-size: var(--f7-menu-list-item-after-font-size);\n --f7-list-item-min-height: var(--f7-menu-list-item-min-height);\n}\n.menu-list .item-header,\n.menu-list .item-footer,\n.menu-list .item-title,\n.menu-list .item-after,\n.menu-list .item-text,\n.menu-list .item-subtitle {\n transition-duration: 300ms;\n}\n.menu-list li:not(.list-group-title) {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n.menu-list li:not(.list-group-title):first-child {\n padding-top: 4px;\n}\n.menu-list li:not(.list-group-title):last-child {\n padding-bottom: 4px;\n}\n.menu-list .item-link {\n margin-left: var(--f7-menu-list-offset);\n margin-right: var(--f7-menu-list-offset);\n border-radius: var(--f7-menu-list-border-radius) !important;\n color: var(--f7-menu-list-item-text-color);\n background-color: var(--f7-menu-list-item-bg-color);\n}\n.menu-list .item-inner:after {\n display: none;\n}\n.menu-list .item-selected .item-link,\n.menu-list .item-selected.item-link,\n.menu-list .tab-link-active .item-link,\n.menu-list .tab-link-active.item-link {\n color: var(--f7-menu-list-item-selected-text-color);\n background-color: var(--f7-menu-list-item-selected-bg-color);\n}\n.menu-list .item-selected .item-header,\n.menu-list .item-selected .item-footer,\n.menu-list .item-selected .item-title,\n.menu-list .item-selected .item-after,\n.menu-list .item-selected .item-text,\n.menu-list .item-selected .item-subtitle {\n color: var(--f7-menu-list-item-selected-text-color);\n}\n.ios .item-link.active-state .item-inner:after,\n.ios .list-button.active-state:after,\n.ios .links-list a.active-state:after {\n background-color: transparent;\n}\n.ios .links-list a.active-state,\n.ios .list .item-link.active-state,\n.ios .list .list-button.active-state {\n transition-duration: 0ms;\n}\n.md .menu-list .item-link.active-state {\n background-color: var(--f7-menu-list-item-bg-color);\n}\n/* === Badge === */\n:root {\n --f7-badge-text-color: #fff;\n --f7-badge-bg-color: #8e8e93;\n --f7-badge-in-icon-size: 16px;\n --f7-badge-in-icon-font-size: 10px;\n --f7-badge-font-weight: normal;\n --f7-badge-font-size: 12px;\n}\n.ios {\n --f7-badge-padding: 0 4px;\n --f7-badge-size: 20px;\n --f7-badge-font-weight: 600;\n}\n.md {\n --f7-badge-padding: 2px 6px;\n --f7-badge-size: 20px;\n --f7-badge-font-weight: 500;\n}\n.badge {\n display: inline-flex;\n align-items: center;\n align-content: center;\n justify-content: center;\n color: var(--f7-badge-text-color);\n background: var(--f7-badge-bg-color);\n position: relative;\n box-sizing: border-box;\n text-align: center;\n vertical-align: middle;\n font-weight: var(--f7-badge-font-weight);\n font-size: var(--f7-badge-font-size);\n border-radius: var(--f7-badge-size);\n padding: var(--f7-badge-padding);\n height: var(--f7-badge-size);\n min-width: var(--f7-badge-size);\n}\n.icon .badge,\n.f7-icons .badge,\n.framework7-icons .badge,\n.material-icons .badge {\n position: absolute;\n left: 100%;\n margin-left: -10px;\n top: -2px;\n font-family: var(--f7-font-family);\n --f7-badge-font-size: var(--f7-badge-in-icon-font-size);\n --f7-badge-size: var(--f7-badge-in-icon-size);\n --f7-badge-padding: 0px 2px;\n}\n.badge[class*='color-'] {\n --f7-badge-bg-color: var(--f7-theme-color);\n}\n:root {\n --f7-button-font-size: 14px;\n --f7-button-min-width: 32px;\n --f7-button-bg-color: transparent;\n --f7-button-border-width: 0px;\n /*\n --f7-button-text-color: var(--f7-theme-color);\n --f7-button-pressed-text-color: var(--f7-button-text-color, var(--f7-theme-color));\n --f7-button-border-color: var(--f7-theme-color);\n --f7-button-fill-bg-color: var(--f7-theme-color);\n --f7-button-padding-vertical: 0px;\n */\n --f7-button-raised-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);\n --f7-button-raised-pressed-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16),\n 0 3px 6px rgba(0, 0, 0, 0.23);\n --f7-segmented-raised-divider-color: rgba(0, 0, 0, 0.1);\n --f7-segmented-strong-padding: 2px;\n --f7-segmented-strong-between-buttons: 4px;\n --f7-segmented-strong-button-font-weight: 500;\n --f7-segmented-strong-button-active-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.25);\n --f7-segmented-strong-button-text-color: #000;\n --f7-segmented-strong-button-hover-bg-color: rgba(0, 0, 0, 0.04);\n --f7-segmented-strong-button-active-text-color: #000;\n --f7-segmented-strong-button-active-bg-color: #fff;\n}\n:root .dark,\n:root.dark {\n --f7-segmented-strong-button-hover-bg-color: rgba(255, 255, 255, 0.02);\n --f7-segmented-strong-button-active-bg-color: rgba(255, 255, 255, 0.14);\n --f7-segmented-strong-button-text-color: #fff;\n --f7-segmented-strong-button-active-text-color: #fff;\n}\n.ios {\n --f7-button-fill-text-color: #fff;\n --f7-button-text-transform: uppercase;\n --f7-button-height: 28px;\n --f7-button-padding-horizontal: 10px;\n --f7-button-border-radius: 4px;\n --f7-button-font-weight: 600;\n --f7-button-letter-spacing: 0;\n /*\n --f7-button-outline-border-color: var(--f7-theme-color);\n */\n --f7-button-outline-border-width: 2px;\n /*\n --f7-button-pressed-bg-color: rgba(var(--f7-theme-color-rgb), .15);\n --f7-button-fill-pressed-bg-color: var(--f7-theme-color-tint);\n */\n --f7-button-large-text-transform: uppercase;\n --f7-button-large-height: 44px;\n --f7-button-large-font-size: 17px;\n --f7-button-large-font-weight: 500;\n --f7-button-small-outline-border-width: 2px;\n --f7-button-small-text-transform: uppercase;\n --f7-button-small-height: 26px;\n --f7-button-small-font-size: 13px;\n --f7-button-small-font-weight: 600;\n --f7-segmented-strong-button-text-transform: none;\n --f7-segmented-strong-button-active-font-weight: 600;\n --f7-button-tonal-bg-color: rgba(var(--f7-theme-color-rgb), 0.15);\n --f7-button-tonal-pressed-bg-color: rgba(var(--f7-theme-color-rgb), 0.25);\n --f7-button-tonal-text-color: var(--f7-theme-color);\n --f7-segmented-strong-bg-color: rgba(0, 0, 0, 0.07);\n --f7-segmented-strong-button-pressed-bg-color: rgba(0, 0, 0, 0.07);\n}\n.ios .dark,\n.ios.dark {\n --f7-segmented-strong-bg-color: rgba(255, 255, 255, 0.1);\n --f7-segmented-strong-button-pressed-bg-color: rgba(255, 255, 255, 0.04);\n}\n.md {\n /*\n --f7-button-pressed-bg-color: transparent;\n */\n --f7-button-text-transform: none;\n --f7-button-height: 40px;\n --f7-button-padding-horizontal: 16px;\n --f7-button-border-radius: 8px;\n --f7-button-font-weight: 500;\n --f7-button-letter-spacing: normal;\n --f7-button-outline-border-width: 1px;\n --f7-button-large-text-transform: none;\n --f7-button-large-height: 48px;\n --f7-button-large-font-size: 14px;\n --f7-button-large-font-weight: 500;\n --f7-button-small-text-transform: none;\n --f7-button-small-outline-border-width: 1px;\n --f7-button-small-height: 32px;\n --f7-button-small-font-size: 14px;\n --f7-button-small-font-weight: 500;\n --f7-segmented-strong-button-text-transform: none;\n --f7-segmented-strong-button-active-font-weight: 500;\n --f7-segmented-strong-button-pressed-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-button-fill-pressed-bg-color: transparent;\n --f7-button-fill-text-color: var(--f7-md-on-primary);\n --f7-button-outline-border-color: var(--f7-md-outline);\n --f7-segmented-strong-bg-color: var(--f7-md-surface-variant);\n --f7-button-tonal-bg-color: var(--f7-md-secondary-container);\n --f7-button-tonal-pressed-bg-color: transparent;\n --f7-button-tonal-text-color: var(--f7-md-on-secondary-container);\n}\nbutton {\n -webkit-appearance: none;\n appearance: none;\n width: 100%;\n}\n.button {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n text-decoration: none;\n text-align: center;\n display: flex;\n -webkit-appearance: none;\n appearance: none;\n background: none;\n margin: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n position: relative;\n overflow: hidden;\n font-family: inherit;\n cursor: pointer;\n outline: 0;\n box-sizing: border-box;\n vertical-align: middle;\n justify-content: center;\n align-items: center;\n border: var(--f7-button-border-width, 0px) solid var(--f7-button-border-color, var(--f7-theme-color));\n font-size: var(--f7-button-font-size);\n color: var(--f7-button-text-color, var(--f7-theme-color));\n height: var(--f7-button-height);\n line-height: calc(var(--f7-button-height) - var(--f7-button-border-width, 0) * 2);\n padding: var(--f7-button-padding-vertical, 0px) var(--f7-button-padding-horizontal);\n border-radius: var(--f7-button-border-radius);\n min-width: var(--f7-button-min-width);\n font-weight: var(--f7-button-font-weight);\n letter-spacing: var(--f7-button-letter-spacing);\n text-transform: var(--f7-button-text-transform);\n background-color: var(--f7-button-bg-color);\n box-shadow: var(--f7-button-box-shadow);\n}\n.button.active-state {\n color: var(--f7-button-pressed-text-color, var(--f7-button-text-color, var(--f7-theme-color)));\n}\ninput[type='submit'].button,\ninput[type='button'].button,\ninput[type='reset'].button {\n width: 100%;\n}\n.button > i + span,\n.button > span + span,\n.button > span ~ i {\n margin-right: 4px;\n}\n.subnavbar .button,\n.navbar .button,\n.toolbar .button,\n.searchbar .button {\n color: var(--f7-button-text-color, var(--f7-theme-color));\n}\n.button-round,\n.ios .button-round-ios,\n.md .button-round-md {\n --f7-button-border-radius: var(--f7-button-height);\n}\n.button-fill,\n.ios .button-fill-ios,\n.md .button-fill-md,\n.button-active,\n.button.tab-link-active {\n --f7-button-bg-color: var(--f7-button-fill-bg-color, var(--f7-theme-color));\n --f7-button-text-color: var(--f7-button-fill-text-color, #fff);\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.ios .color-white .button-fill,\n.ios .color-white .ios .button-fill-ios,\n.ios .color-white .md .button-fill-md,\n.ios .color-white .button-active,\n.ios .color-white .button.tab-link-active,\n.ios .button-fill.color-white,\n.ios .ios .button-fill-ios.color-white,\n.ios .md .button-fill-md.color-white,\n.ios .button-active.color-white,\n.ios .button.tab-link-active.color-white {\n --f7-button-text-color: #000;\n}\n.button-fill,\n.ios .button-fill-ios,\n.md .button-fill-md {\n --f7-button-pressed-bg-color: var(--f7-button-fill-pressed-bg-color);\n}\n.button-active,\n.button.tab-link-active {\n --f7-button-pressed-bg-color: var(--f7-button-bg-color);\n}\n.button-outline,\n.ios .button-outline-ios,\n.md .button-outline-md {\n --f7-button-border-color: var(--f7-button-outline-border-color, var(--f7-theme-color));\n --f7-button-border-width: var(--f7-button-outline-border-width);\n}\n.button-tonal,\n.ios .button-tonal-ios,\n.md .button-tonal-md {\n --f7-button-bg-color: var(--f7-button-tonal-bg-color);\n --f7-button-text-color: var(--f7-button-tonal-text-color);\n --f7-button-pressed-bg-color: var(--f7-button-tonal-pressed-bg-color);\n}\n.button-large,\n.ios .button-large-ios,\n.md .button-large-md {\n --f7-button-height: var(--f7-button-large-height);\n --f7-button-font-size: var(--f7-button-large-font-size);\n --f7-button-font-weight: var(--f7-button-large-font-weight);\n --f7-button-text-transform: var(--f7-button-large-text-transform);\n}\n.button-small,\n.ios .button-small-ios,\n.md .button-small-md {\n --f7-button-outline-border-width: var(--f7-button-small-outline-border-width);\n --f7-button-height: var(--f7-button-small-height);\n --f7-button-font-size: var(--f7-button-small-font-size);\n --f7-button-font-weight: var(--f7-button-small-font-weight);\n --f7-button-text-transform: var(--f7-button-small-text-transform);\n}\n.ios .button-small.button-fill,\n.ios .button-small-ios.button-fill,\n.ios .button-small.button-fill-ios {\n --f7-button-border-width: var(--f7-button-small-outline-border-width);\n --f7-button-pressed-text-color: var(--f7-theme-color);\n --f7-button-pressed-bg-color: transparent;\n}\n.segmented {\n align-self: center;\n display: flex;\n flex-wrap: nowrap;\n border-radius: var(--f7-button-border-radius);\n box-shadow: var(--f7-button-box-shadow);\n box-sizing: border-box;\n}\n.segmented .button,\n.segmented button {\n width: 100%;\n flex-shrink: 1;\n min-width: 0;\n border-radius: 0;\n}\n.segmented .button:first-child {\n border-radius: 0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0;\n}\n.segmented .button:not(.button-outline):first-child {\n border-right: none;\n}\n.segmented .button.button-outline:nth-child(n + 2) {\n border-right: none;\n}\n.segmented .button:last-child {\n border-radius: var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius);\n}\n.segmented .button-round:first-child {\n border-radius: 0 var(--f7-button-height) var(--f7-button-height) 0;\n}\n.segmented .button-round:last-child {\n border-radius: var(--f7-button-height) 0 0 var(--f7-button-height);\n}\n.segmented .button:first-child:last-child {\n border-radius: var(--f7-button-border-radius);\n}\n.segmented-raised,\n.ios .segmented-raised-ios,\n.md .segmented-raised-md {\n box-shadow: var(--f7-button-raised-box-shadow);\n}\n.segmented-raised .button:not(.button-outline),\n.ios .segmented-raised-ios .button:not(.button-outline),\n.md .segmented-raised-md .button:not(.button-outline) {\n border-right: 1px solid var(--f7-segmented-raised-divider-color);\n}\n.button-raised,\n.ios .button-raised-ios,\n.md .button-raised-md {\n --f7-button-box-shadow: var(--f7-button-raised-box-shadow);\n}\n.button-raised.active-state,\n.ios .button-raised-ios.active-state,\n.md .button-raised-md.active-state {\n --f7-button-box-shadow: var(--f7-button-raised-pressed-box-shadow);\n}\n.segmented-strong,\n.ios .segmented-strong-ios,\n.md .segmented-strong-md {\n --f7-button-bg-color: transparent;\n --f7-button-hover-bg-color: var(--f7-segmented-strong-button-hover-bg-color);\n --f7-button-text-color: var(--f7-segmented-strong-button-text-color);\n --f7-button-font-weight: var(--f7-segmented-strong-button-font-weight);\n --f7-button-text-transform: var(--f7-segmented-strong-button-text-transform);\n --f7-button-pressed-bg-color: var(--f7-segmented-strong-button-pressed-bg-color);\n position: relative;\n background: var(--f7-segmented-strong-bg-color);\n border-radius: calc(var(--f7-button-border-radius) + 2px);\n box-shadow: none;\n padding: var(--f7-segmented-strong-padding);\n overflow: hidden;\n}\n.segmented-strong .button,\n.ios .segmented-strong-ios .button,\n.md .segmented-strong-md .button {\n z-index: 1;\n transform: translate3d(0, 0, 0);\n}\n.segmented-strong .button,\n.ios .segmented-strong-ios .button,\n.md .segmented-strong-md .button,\n.segmented-strong .button:first-child,\n.ios .segmented-strong-ios .button:first-child,\n.md .segmented-strong-md .button:first-child,\n.segmented-strong .button:last-child,\n.ios .segmented-strong-ios .button:last-child,\n.md .segmented-strong-md .button:last-child {\n border-radius: var(--f7-button-border-radius);\n}\n.segmented-strong .button + .button,\n.ios .segmented-strong-ios .button + .button,\n.md .segmented-strong-md .button + .button {\n margin-right: var(--f7-segmented-strong-between-buttons);\n}\n.segmented-strong .button.button-active,\n.ios .segmented-strong-ios .button.button-active,\n.md .segmented-strong-md .button.button-active,\n.segmented-strong .button.tab-link-active,\n.ios .segmented-strong-ios .button.tab-link-active,\n.md .segmented-strong-md .button.tab-link-active {\n --f7-button-hover-bg-color: transparent;\n --f7-button-bg-color: transparent;\n --f7-button-text-color: var(--f7-segmented-strong-button-active-text-color);\n --f7-button-font-weight: var(--f7-segmented-strong-button-active-font-weight);\n}\n.segmented-strong .segmented-highlight,\n.ios .segmented-strong-ios .segmented-highlight,\n.md .segmented-strong-md .segmented-highlight {\n --f7-segmented-highlight-num: 1;\n --f7-segmented-highlight-active: 0;\n --f7-segmented-highlight-padding: calc(var(--f7-segmented-strong-padding) * 2);\n --f7-segmented-highlight-between: var(--f7-segmented-strong-between-buttons);\n --f7-segmented-highlight-width: calc((100% - var(--f7-segmented-highlight-padding) - var(--f7-segmented-highlight-between) * (var(--f7-segmented-highlight-num) - 1)) / var(--f7-segmented-highlight-num));\n position: absolute;\n background-color: var(--f7-segmented-strong-button-active-bg-color);\n border-radius: var(--f7-button-border-radius);\n box-shadow: var(--f7-segmented-strong-button-active-box-shadow);\n left: var(--f7-segmented-strong-padding);\n top: var(--f7-segmented-strong-padding);\n height: calc(100% - var(--f7-segmented-strong-padding) * 2);\n width: var(--f7-segmented-highlight-width);\n z-index: 0;\n transform: translateX(calc(var(--f7-segmented-highlight-active) * 100% + var(--f7-segmented-highlight-active) * var(--f7-segmented-highlight-between)));\n transition: 200ms;\n}\n.button:nth-child(2) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 2;\n}\n.button:nth-child(3) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 3;\n}\n.button:nth-child(4) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 4;\n}\n.button:nth-child(5) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 5;\n}\n.button:nth-child(6) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 6;\n}\n.button:nth-child(7) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 7;\n}\n.button:nth-child(8) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 8;\n}\n.button:nth-child(9) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 9;\n}\n.button:nth-child(10) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 10;\n}\n.button-active:nth-child(2) ~ .segmented-highlight,\n.tab-link-active:nth-child(2) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 1;\n}\n.button-active:nth-child(3) ~ .segmented-highlight,\n.tab-link-active:nth-child(3) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 2;\n}\n.button-active:nth-child(4) ~ .segmented-highlight,\n.tab-link-active:nth-child(4) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 3;\n}\n.button-active:nth-child(5) ~ .segmented-highlight,\n.tab-link-active:nth-child(5) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 4;\n}\n.button-active:nth-child(6) ~ .segmented-highlight,\n.tab-link-active:nth-child(6) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 5;\n}\n.button-active:nth-child(7) ~ .segmented-highlight,\n.tab-link-active:nth-child(7) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 6;\n}\n.button-active:nth-child(8) ~ .segmented-highlight,\n.tab-link-active:nth-child(8) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 7;\n}\n.button-active:nth-child(9) ~ .segmented-highlight,\n.tab-link-active:nth-child(9) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 8;\n}\n.button-active:nth-child(10) ~ .segmented-highlight,\n.tab-link-active:nth-child(10) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 9;\n}\n.segmented-round,\n.ios .segmented-round-ios,\n.md .segmented-round-md {\n border-radius: var(--f7-button-height);\n}\n.segmented-round .segmented-highlight,\n.ios .segmented-round-ios .segmented-highlight,\n.md .segmented-round-md .segmented-highlight {\n border-radius: var(--f7-button-height);\n}\n.subnavbar .segmented {\n width: 100%;\n}\n.button-preloader {\n position: relative;\n --f7-preloader-color: var(--f7-button-text-color, var(--f7-theme-color));\n}\n.button-preloader:not(.button-large) {\n --f7-preloader-size: calc(var(--f7-button-height) - 6px);\n}\n.button-preloader.button-fill {\n --f7-preloader-color: #fff;\n}\n.button-preloader > span:not(.preloader) {\n transition: 0.2s;\n display: inline-flex;\n align-items: center;\n align-content: center;\n justify-content: center;\n transform: scale(1);\n}\n.button-preloader > .preloader {\n position: absolute;\n left: 50%;\n top: 50%;\n transition: 0.2s;\n transition-property: opacity;\n opacity: 0;\n visibility: hidden;\n margin-left: calc(-1 * var(--f7-preloader-size) / 2);\n margin-top: calc(-1 * var(--f7-preloader-size) / 2);\n}\n.button-preloader.button-loading > span:not(.preloader) {\n opacity: 0;\n transform: scale(0);\n}\n.button-preloader.button-loading > .preloader {\n opacity: 1;\n visibility: visible;\n}\n.ios .button {\n transition-duration: 100ms;\n}\n.ios .button.active-state {\n background-color: var(--f7-button-pressed-bg-color, rgba(var(--f7-theme-color-rgb), 0.15));\n}\n.ios .button-fill,\n.ios .button-fill-ios {\n --f7-button-pressed-bg-color: var(--f7-button-fill-pressed-bg-color, var(--f7-theme-color-tint));\n}\n.ios .button-small,\n.ios .button-small-ios {\n transition-duration: 200ms;\n}\n.md .button {\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n}\n.md .button-fill,\n.md .button-fill-md {\n --f7-button-pressed-bg-color: var(--f7-button-fill-pressed-bg-color, transparent);\n}\n/* === Touch Ripple === */\n:root {\n --f7-touch-ripple-black: rgba(0, 0, 0, 0.1);\n --f7-touch-ripple-white: rgba(255, 255, 255, 0.15);\n --f7-touch-ripple-color: var(--f7-touch-ripple-black);\n}\n.dark {\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.ripple,\n.fab a,\n.link,\n.item-link,\n.list-button,\n.button,\n.dialog-button,\n.tab-link,\n.radio,\n.checkbox,\n.actions-button,\n.speed-dial-buttons a {\n -webkit-user-select: none;\n user-select: none;\n}\n.ripple-wave {\n left: 0;\n top: 0;\n position: absolute !important;\n border-radius: 50%;\n pointer-events: none;\n z-index: -1;\n padding: 0;\n margin: 0;\n font-size: 0;\n transform: translate3d(0px, 0px, 0) scale(0);\n background-color: var(--f7-touch-ripple-color);\n animation: touch-ripple-in 200ms forwards;\n}\n.ripple-wave.ripple-wave-inset {\n background-image: none;\n background-color: var(--f7-touch-ripple-color);\n}\n.ripple-wave.ripple-wave-out {\n transform: var(--f7-ripple-transform);\n animation: touch-ripple-out 250ms forwards !important;\n}\n.item-link .ripple-wave,\n.list label.item-content .ripple-wave,\n.list-button .ripple-wave,\n.links-list a .ripple-wave,\n.button .ripple-wave,\nbutton .ripple-wave,\n.dialog-button .ripple-wave,\n.tab-link .ripple-wave,\n.item-radio .ripple-wave,\n.item-checkbox .ripple-wave,\n.actions-button .ripple-wave,\n.fab a .ripple-wave,\n.stepper-button .ripple-wave,\n.stepper-button-minus .ripple-wave,\n.stepper-button-plus .ripple-wave,\n.list.accordion-list .accordion-item-toggle .ripple-wave,\n.photo-browser .toolbar .link .ripple-wave,\n.ripple-blur .ripple-wave {\n animation: touch-ripple-in-blurred 250ms forwards;\n background-image: radial-gradient(closest-side circle at 50% 50%, var(--f7-touch-ripple-color) 50%, rgba(255, 255, 255, 0));\n background-color: transparent;\n}\n.checkbox .ripple-wave,\n.radio .ripple-wave,\n.data-table .sortable-cell .ripple-wave {\n z-index: 0;\n}\n[class*='ripple-color-'] {\n --f7-touch-ripple-color: var(--f7-theme-color-ripple-color);\n}\n@keyframes touch-ripple-in-blurred {\n from {\n transform: translate3d(0px, 0px, 0) scale(0.5);\n }\n to {\n transform: var(--f7-ripple-transform);\n }\n}\n@keyframes touch-ripple-in {\n from {\n transform: translate3d(0px, 0px, 0) scale(0);\n }\n to {\n transform: var(--f7-ripple-transform);\n }\n}\n@keyframes touch-ripple-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n/* === Icon === */\n.f7-icons,\n.material-icons {\n width: 1em;\n height: 1em;\n}\ni.icon {\n display: inline-block;\n vertical-align: middle;\n background-size: 100% auto;\n background-position: center;\n background-repeat: no-repeat;\n font-style: normal;\n position: relative;\n}\n.icon-back:after,\n.icon-prev:after,\n.icon-forward:after,\n.icon-next:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n.icon[class*='color-'] {\n color: var(--f7-theme-color);\n}\n.ios .icon-back,\n.ios .icon-prev,\n.ios .icon-forward,\n.ios .icon-next {\n width: 12px;\n height: 20px;\n line-height: 20px;\n}\n.ios .icon-back:after,\n.ios .icon-prev:after,\n.ios .icon-forward:after,\n.ios .icon-next:after {\n line-height: inherit;\n}\n.ios .icon-prev:after,\n.ios .icon-next:after {\n font-size: 16px;\n}\n.ios .icon-back:after,\n.ios .icon-prev:after {\n content: 'chevron_right_ios';\n}\n.ios .icon-forward:after,\n.ios .icon-next:after {\n content: 'chevron_left_ios';\n}\n.md .icon-back,\n.md .icon-forward,\n.md .icon-next,\n.md .icon-prev {\n width: 24px;\n height: 24px;\n}\n.md .icon-back:after,\n.md .icon-forward:after,\n.md .icon-next:after,\n.md .icon-prev:after {\n line-height: 1.2;\n}\n.md .icon-back:after {\n content: 'arrow_right_md';\n}\n.md .icon-forward:after {\n content: 'arrow_left_md';\n}\n.md .icon-next:after {\n content: 'chevron_left_md';\n}\n.md .icon-prev:after {\n content: 'chevron_right_md';\n}\n.custom-modal-backdrop {\n z-index: 10500;\n}\n.custom-modal-backdrop,\n.actions-backdrop,\n.dialog-backdrop,\n.popover-backdrop,\n.popup-backdrop,\n.preloader-backdrop,\n.sheet-backdrop,\n.fab-backdrop {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.4);\n z-index: 13000;\n visibility: hidden;\n opacity: 0;\n transition-duration: 400ms;\n}\n.custom-modal-backdrop.not-animated,\n.actions-backdrop.not-animated,\n.dialog-backdrop.not-animated,\n.popover-backdrop.not-animated,\n.popup-backdrop.not-animated,\n.preloader-backdrop.not-animated,\n.sheet-backdrop.not-animated,\n.fab-backdrop.not-animated {\n transition-duration: 0ms;\n}\n.custom-modal-backdrop.backdrop-in,\n.actions-backdrop.backdrop-in,\n.dialog-backdrop.backdrop-in,\n.popover-backdrop.backdrop-in,\n.popup-backdrop.backdrop-in,\n.preloader-backdrop.backdrop-in,\n.sheet-backdrop.backdrop-in,\n.fab-backdrop.backdrop-in {\n visibility: visible;\n opacity: 1;\n}\n/* === Dialog === */\n:root {\n --f7-dialog-button-text-color: var(--f7-theme-color);\n --f7-dialog-button-text-align: center;\n}\n.ios {\n --f7-dialog-width: 270px;\n --f7-dialog-inner-padding: 16px;\n --f7-dialog-border-radius: 13px;\n --f7-dialog-text-align: center;\n --f7-dialog-font-size: 14px;\n --f7-dialog-title-text-color: inherit;\n --f7-dialog-title-font-size: 18px;\n --f7-dialog-title-font-weight: 600;\n --f7-dialog-title-line-height: inherit;\n --f7-dialog-button-font-size: 17px;\n --f7-dialog-button-height: 44px;\n --f7-dialog-button-letter-spacing: 0;\n --f7-dialog-button-font-weight: 400;\n --f7-dialog-button-text-transform: none;\n --f7-dialog-button-strong-bg-color: transparent;\n --f7-dialog-button-strong-text-color: var(--f7-theme-color);\n --f7-dialog-button-strong-font-weight: 500;\n --f7-dialog-input-border-radius: 4px;\n --f7-dialog-input-font-size: 14px;\n --f7-dialog-input-height: 32px;\n --f7-dialog-input-border-width: 1px;\n --f7-dialog-input-placeholder-color: #a9a9a9;\n --f7-dialog-preloader-size: 34px;\n --f7-dialog-input-bg-color: #fff;\n --f7-dialog-bg-color: rgba(255, 255, 255, 0.95);\n --f7-dialog-bg-color-rgb: 255, 255, 255;\n --f7-dialog-text-color: #000;\n --f7-dialog-button-pressed-bg-color: rgba(0, 0, 0, 0.1);\n --f7-dialog-button-strong-pressed-bg-color: rgba(0, 0, 0, 0.1);\n --f7-dialog-input-border-color: rgba(0, 0, 0, 0.3);\n --f7-dialog-border-divider-color: rgba(0, 0, 0, 0.2);\n}\n.ios .dark,\n.ios.dark {\n --f7-dialog-text-color: #fff;\n --f7-dialog-bg-color: rgba(45, 45, 45, 0.95);\n --f7-dialog-bg-color-rgb: 45, 45, 45;\n --f7-dialog-button-pressed-bg-color: rgba(0, 0, 0, 0.2);\n --f7-dialog-button-strong-pressed-bg-color: rgba(0, 0, 0, 0.2);\n --f7-dialog-border-divider-color: rgba(255, 255, 255, 0.15);\n --f7-dialog-input-border-color: rgba(255, 255, 255, 0.15);\n --f7-dialog-input-bg-color: rgba(0, 0, 0, 0.5);\n}\n.md {\n --f7-dialog-width: 280px;\n --f7-dialog-inner-padding: 24px;\n --f7-dialog-border-radius: 28px;\n --f7-dialog-text-align: right;\n --f7-dialog-font-size: 14px;\n --f7-dialog-title-font-size: 24px;\n --f7-dialog-title-font-weight: 400;\n --f7-dialog-title-line-height: 1.3;\n --f7-dialog-button-font-size: 14px;\n --f7-dialog-button-height: 40px;\n --f7-dialog-button-letter-spacing: normal;\n --f7-dialog-button-font-weight: 500;\n --f7-dialog-button-text-transform: none;\n --f7-dialog-button-strong-font-weight: 500;\n --f7-dialog-input-border-radius: 0px;\n --f7-dialog-input-font-size: 16px;\n --f7-dialog-input-height: 36px;\n --f7-dialog-input-border-color: transparent;\n --f7-dialog-input-border-width: 0px;\n --f7-dialog-preloader-size: 32px;\n --f7-dialog-input-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-dialog-button-pressed-bg-color: transparent;\n --f7-dialog-button-strong-bg-color: var(--f7-theme-color);\n --f7-dialog-button-strong-text-color: var(--f7-md-on-primary);\n --f7-dialog-button-strong-pressed-bg-color: transparent;\n --f7-dialog-bg-color: var(--f7-md-surface-3);\n --f7-dialog-input-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-dialog-text-color: var(--f7-md-on-surface-variant);\n --f7-dialog-title-text-color: var(--f7-md-on-surface);\n}\n.dialog {\n position: absolute;\n z-index: 13500;\n left: 50%;\n margin-top: 0;\n top: 50%;\n overflow: hidden;\n opacity: 0;\n transform: translate3d(0, -50%, 0) scale(1.185);\n transition-property: transform, opacity;\n display: none;\n transition-duration: 400ms;\n width: var(--f7-dialog-width);\n margin-left: calc(-1 * var(--f7-dialog-width) / 2);\n border-radius: var(--f7-dialog-border-radius);\n text-align: var(--f7-dialog-text-align);\n color: var(--f7-dialog-text-color);\n font-size: var(--f7-dialog-font-size);\n background: var(--f7-dialog-bg-color);\n will-change: transform, opacity;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .dialog {\n background-color: rgba(var(--f7-dialog-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.dialog.modal-in {\n opacity: 1;\n transform: translate3d(0, -50%, 0) scale(1);\n}\n.dialog.modal-out {\n opacity: 0;\n z-index: 13499;\n}\n.dialog.not-animated {\n transition-duration: 0ms;\n}\n.dialog-inner {\n position: relative;\n padding: var(--f7-dialog-inner-padding);\n}\n.dialog-title {\n color: var(--f7-dialog-title-text-color);\n font-size: var(--f7-dialog-title-font-size);\n font-weight: var(--f7-dialog-title-font-weight);\n line-height: var(--f7-dialog-title-line-height);\n}\n.dialog-buttons {\n position: relative;\n display: flex;\n flex-direction: row-reverse;\n}\n.dialog-buttons-vertical .dialog-buttons {\n display: block;\n height: auto !important;\n}\n.dialog-button {\n box-sizing: border-box;\n overflow: hidden;\n position: relative;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: var(--f7-dialog-button-text-color);\n font-size: var(--f7-dialog-button-font-size);\n height: var(--f7-dialog-button-height);\n line-height: var(--f7-dialog-button-height);\n letter-spacing: var(--f7-dialog-button-letter-spacing);\n text-align: var(--f7-dialog-button-text-align);\n font-weight: var(--f7-dialog-button-font-weight);\n text-transform: var(--f7-dialog-button-text-transform);\n display: block;\n cursor: pointer;\n}\n.dialog-button.active-state {\n background-color: var(--f7-dialog-button-pressed-bg-color);\n}\n.dialog-button-strong {\n background-color: var(--f7-dialog-button-strong-bg-color);\n color: var(--f7-dialog-button-strong-text-color);\n font-weight: var(--f7-dialog-button-strong-font-weight);\n}\n.dialog-button-strong.active-state {\n background-color: var(--f7-dialog-button-strong-pressed-bg-color);\n}\n.dialog-no-buttons .dialog-buttons {\n display: none;\n}\n.dialog-input-field {\n position: relative;\n}\ninput.dialog-input[type] {\n box-sizing: border-box;\n margin: 0;\n margin-top: 15px;\n border-radius: var(--f7-dialog-input-border-radius);\n -webkit-appearance: none;\n appearance: none;\n width: 100%;\n display: block;\n font-family: inherit;\n box-shadow: none;\n font-size: var(--f7-dialog-input-font-size);\n height: var(--f7-dialog-input-height);\n background-color: var(--f7-dialog-input-bg-color);\n border: var(--f7-dialog-input-border-width) solid var(--f7-dialog-input-border-color);\n}\ninput.dialog-input[type]::placeholder {\n color: var(--f7-dialog-input-placeholder-color);\n}\n.dialog-input-double input.dialog-input {\n border-radius: var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius) 0 0;\n}\n.dialog-input-double + .dialog-input-double input.dialog-input {\n border-radius: 0 0 var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius);\n}\n.dialog-preloader .preloader {\n --f7-preloader-size: var(--f7-dialog-preloader-size);\n}\nhtml.with-modal-dialog .page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\n.ios .dialog.modal-out {\n transform: translate3d(0, -50%, 0) scale(1);\n}\n.ios .dialog-inner {\n border-radius: var(--f7-dialog-border-radius) var(--f7-dialog-border-radius) 0 0;\n}\n.ios .dialog-inner:after {\n content: '';\n position: absolute;\n background-color: var(--f7-dialog-border-divider-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.ios .dialog-title + .dialog-text {\n margin-top: 5px;\n}\n.ios .dialog-buttons {\n height: 44px;\n justify-content: center;\n}\n.ios .dialog-button {\n width: 100%;\n padding: 0 5px;\n -webkit-box-flex: 1;\n -ms-flex: 1;\n}\n.ios .dialog-button:after {\n content: '';\n position: absolute;\n background-color: var(--f7-dialog-border-divider-color);\n display: block;\n z-index: 15;\n top: 0;\n right: 0;\n bottom: auto;\n left: auto;\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.ios .dialog-button:first-child {\n border-radius: 0 0 0 var(--f7-dialog-border-radius);\n}\n.ios .dialog-button:last-child {\n border-radius: 0 0 var(--f7-dialog-border-radius) 0;\n}\n.ios .dialog-button:last-child:after {\n display: none !important;\n}\n.ios .dialog-button:first-child:last-child {\n border-radius: 0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius);\n}\n.ios .dialog-button[class*='color-'] {\n --f7-dialog-button-text-color: var(--f7-theme-color);\n}\n.ios .dialog-buttons-vertical .dialog-buttons {\n height: auto;\n}\n.ios .dialog-buttons-vertical .dialog-button {\n border-radius: 0;\n}\n.ios .dialog-buttons-vertical .dialog-button:after {\n content: '';\n position: absolute;\n background-color: var(--f7-dialog-border-divider-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.ios .dialog-buttons-vertical .dialog-button:last-child {\n border-radius: 0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius);\n}\n.ios .dialog-buttons-vertical .dialog-button:last-child:after {\n display: none !important;\n}\n.ios .dialog-no-buttons .dialog-inner {\n border-radius: var(--f7-dialog-border-radius);\n}\n.ios .dialog-no-buttons .dialog-inner:after {\n display: none !important;\n}\n.ios .dialog-input-field {\n margin-top: 15px;\n}\n.ios .dialog-input {\n padding: 0 5px;\n}\n.ios .dialog-input + .dialog-input {\n margin-top: 5px;\n}\n.ios .dialog-input-double + .dialog-input-double {\n margin-top: 0;\n}\n.ios .dialog-input-double + .dialog-input-double .dialog-input {\n border-top: 0;\n margin-top: 0;\n}\n.ios .dialog-preloader .dialog-title ~ .preloader,\n.ios .dialog-preloader .dialog-text ~ .preloader {\n margin-top: 15px;\n}\n.ios .dialog-progress .dialog-title ~ .progressbar,\n.ios .dialog-progress .dialog-text ~ .progressbar,\n.ios .dialog-progress .dialog-title ~ .progressbar-infinite,\n.ios .dialog-progress .dialog-text ~ .progressbar-infinite {\n margin-top: 15px;\n}\n.md .dialog.modal-out {\n transform: translate3d(0, -50%, 0) scale(0.815);\n}\n.md .dialog-title + .dialog-text {\n margin-top: 20px;\n}\n.md .dialog-text {\n line-height: 1.5;\n}\n.md .dialog-buttons {\n height: 64px;\n padding: 0px 24px 24px;\n overflow: hidden;\n box-sizing: border-box;\n justify-content: flex-end;\n}\n.md .dialog-button {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n border-radius: 99px;\n min-width: 64px;\n padding: 0px 16px;\n border: none;\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n}\n.md .dialog-button + .dialog-button {\n margin-left: 8px;\n}\n.md .dialog-button-strong {\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.md .dialog-button[class*='color-'] {\n --f7-dialog-button-text-color: var(--f7-theme-color);\n}\n.md .dialog-buttons-vertical .dialog-buttons {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n}\n.md .dialog-buttons-vertical .dialog-button + .dialog-button {\n margin-top: 8px;\n margin-left: 0;\n}\n.md .dialog-input {\n padding: 0;\n transition-duration: 200ms;\n position: relative;\n}\n.md .dialog-input + .dialog-input {\n margin-top: 16px;\n}\n.md .dialog-preloader .dialog-title,\n.md .dialog-progress .dialog-title,\n.md .dialog-preloader .dialog-inner,\n.md .dialog-progress .dialog-inner {\n text-align: center;\n}\n.md .dialog-preloader .dialog-title ~ .preloader,\n.md .dialog-preloader .dialog-text ~ .preloader {\n margin-top: 20px;\n}\n.md .dialog-progress .dialog-title ~ .progressbar,\n.md .dialog-progress .dialog-text ~ .progressbar,\n.md .dialog-progress .dialog-title ~ .progressbar-infinite,\n.md .dialog-progress .dialog-text ~ .progressbar-infinite {\n margin-top: 16px;\n}\n/* === Popup === */\n:root {\n --f7-popup-border-radius: 0px;\n --f7-popup-tablet-width: 630px;\n --f7-popup-tablet-height: 630px;\n --f7-popup-push-offset: var(--f7-safe-area-top);\n /*\n --f7-popup-tablet-border-radius: var(--f7-popup-border-radius);\n */\n}\n.ios {\n --f7-popup-tablet-border-radius: 5px;\n --f7-popup-transition-duration: 400ms;\n --f7-popup-transition-timing-function: initial;\n --f7-popup-push-border-radius: 10px;\n}\n.md {\n --f7-popup-tablet-border-radius: 28px;\n --f7-popup-transition-duration: 600ms;\n --f7-popup-transition-timing-function: cubic-bezier(0, 1, 0.2, 1);\n --f7-popup-push-border-radius: 28px;\n}\n.popup-backdrop {\n z-index: 10500;\n}\n.popup-backdrop-unique {\n z-index: 11000;\n}\n.popup {\n position: absolute;\n left: 0;\n top: 0px;\n width: 100%;\n height: 100%;\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n transition-timing-function: var(--f7-popup-transition-timing-function);\n transform: translate3d(0, 100vh, 0);\n background: #fff;\n z-index: 11000;\n overflow: hidden;\n border-radius: var(--f7-popup-border-radius);\n}\n.dark .popup,\n.popup.dark {\n background: #000;\n}\n.popup.modal-in,\n.popup.modal-out {\n transition-duration: var(--f7-popup-transition-duration);\n}\n.popup.not-animated {\n transition-duration: 0ms;\n}\n.popup.modal-in {\n display: block;\n transform: translate3d(0, 0, 0);\n}\n.popup.modal-out {\n transform: translate3d(0, 100vh, 0);\n}\n.popup.swipe-close-to-top.modal-out {\n transform: translate3d(0, -100vh, 0);\n}\n@media (min-width: 630px) and (min-height: 630px) {\n .popup:not(.popup-tablet-fullscreen) {\n --f7-safe-area-top: 0px;\n --f7-safe-area-bottom: 0px;\n width: var(--f7-popup-tablet-width);\n height: var(--f7-popup-tablet-height);\n left: 50%;\n top: 50%;\n margin-left: calc(-1 * var(--f7-popup-tablet-width) / 2);\n margin-top: calc(-1 * var(--f7-popup-tablet-height) / 2);\n transform: translate3d(0, 100vh, 0);\n border-radius: var(--f7-popup-tablet-border-radius, var(--f7-popup-border-radius));\n }\n .popup:not(.popup-tablet-fullscreen).modal-in {\n transform: translate3d(0, 0, 0);\n }\n .popup:not(.popup-tablet-fullscreen).modal-out {\n transform: translate3d(0, 100vh, 0);\n }\n .popup:not(.popup-tablet-fullscreen).swipe-close-to-top.modal-out {\n transform: translate3d(0, -100vh, 0);\n }\n .popup:not(.popup-tablet-fullscreen).popup-behind {\n transform: translate3d(0, 0, 0) scale(0.9);\n pointer-events: none;\n }\n .popup:not(.popup-tablet-fullscreen).popup-behind.modal-out {\n transform: translate3d(0, 100vh, 0) scale(0.9);\n }\n html.with-modal-popup-push .popup-push:not(.popup-tablet-fullscreen) {\n margin-top: 0;\n }\n}\nhtml.with-modal-popup .framework7-root > .views .page-content,\nhtml.with-modal-popup .framework7-root > .view .page-content,\nhtml.with-modal-popup .framework7-root > .panel .page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\nhtml.with-modal-popup-push .popup-push,\nhtml.with-modal-popup-push-closing .popup-push {\n top: calc(var(--f7-popup-push-offset) + 10px);\n height: calc(100% - var(--f7-popup-push-offset) - 10px);\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n --f7-safe-area-top: 0px;\n}\nhtml.with-modal-popup-push .popup-push .view,\nhtml.with-modal-popup-push-closing .popup-push .view,\nhtml.with-modal-popup-push .popup-push .page,\nhtml.with-modal-popup-push-closing .popup-push .page {\n --f7-safe-area-top: 0px;\n}\nhtml.with-modal-popup-push .framework7-root,\nhtml.with-modal-popup-push-closing .framework7-root {\n background: #000;\n}\nhtml.with-modal-popup-push .framework7-root > .views,\nhtml.with-modal-popup-push-closing .framework7-root > .views,\nhtml.with-modal-popup-push .framework7-root > .view,\nhtml.with-modal-popup-push-closing .framework7-root > .view {\n transition-duration: var(--f7-popup-transition-duration);\n transition-timing-function: var(--f7-popup-transition-timing-function);\n}\nhtml.with-modal-popup-push.dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-popup-push.dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-popup-push .dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-popup-push .dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-popup-push .dark.framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-popup-push .dark.framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-popup-push .framework7-root > .views.dark:after,\nhtml.with-modal-popup-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-popup-push .framework7-root > .view.dark:after,\nhtml.with-modal-popup-push-closing .framework7-root > .view.dark:after {\n content: '';\n position: absolute;\n pointer-events: none;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(255, 255, 255, 0.1);\n z-index: 13000;\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n opacity: 1;\n animation: popup-dark-push-overlay-fade-in var(--f7-popup-transition-duration) forwards;\n}\nhtml.with-modal-popup-push .framework7-root > .views,\nhtml.with-modal-popup-push .framework7-root > .view {\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n transform: translate3d(0, 0, 0px) scale(var(--f7-popup-push-scale, 1)) !important;\n}\nhtml.with-modal-popup-push .popup:after {\n content: '';\n pointer-events: none;\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.4);\n z-index: 13000;\n transition-duration: var(--f7-popup-transition-duration);\n transition-timing-function: var(--f7-popup-transition-timing-function);\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n opacity: 0;\n}\nhtml.with-modal-popup-push.dark .popup:after,\nhtml.with-modal-popup-push .dark .popup:after,\nhtml.with-modal-popup-push .dark.popup:after {\n background: rgba(255, 255, 255, 0.05);\n}\nhtml.with-modal-popup-push .popup-behind {\n transform: translate3d(0, 0px, 0px) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind.modal-out {\n transform: translate3d(0, 100vh, 0) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind:not(.popup-push) {\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n}\nhtml.with-modal-popup-push .popup-behind.popup-push {\n transform: translate3d(0, calc(0px - var(--f7-popup-push-offset) - 10px), 0px) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind.popup-push.modal-out {\n transform: translate3d(0, calc(0px - var(--f7-popup-push-offset) - 10px + 100vh), 0px) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind:after {\n opacity: 1;\n pointer-events: auto;\n}\nhtml.with-modal-popup-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-popup-push-closing .framework7-root > .view.dark:after {\n animation: popup-dark-push-overlay-fade-out var(--f7-popup-transition-duration) forwards;\n animation-timing-function: var(--f7-popup-transition-timing-function);\n}\n@keyframes popup-dark-push-overlay-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes popup-dark-push-overlay-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n/* === Login Screen === */\n:root {\n --f7-login-screen-blocks-max-width: 480px;\n --f7-login-screen-title-text-align: center;\n --f7-login-screen-title-text-color: inherit;\n --f7-login-screen-title-letter-spacing: 0;\n}\n.ios {\n --f7-login-screen-blocks-margin-vertical: 25px;\n --f7-login-screen-transition-timing-function: initial;\n --f7-login-screen-transition-duration: 400ms;\n --f7-login-screen-title-font-weight: 600;\n --f7-login-screen-title-font-size: 28px;\n --f7-login-screen-content-bg-color: #fff;\n --f7-login-screen-bg-color: #fff;\n}\n.ios .dark,\n.ios.dark {\n --f7-login-screen-bg-color: #000;\n --f7-login-screen-content-bg-color: #000;\n}\n.md {\n --f7-login-screen-transition-duration: 600ms;\n --f7-login-screen-transition-timing-function: cubic-bezier(0, 1, 0.2, 1);\n --f7-login-screen-blocks-margin-vertical: 24px;\n --f7-login-screen-title-font-weight: 400;\n --f7-login-screen-title-font-size: 28px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-login-screen-content-bg-color: var(--f7-md-surface);\n --f7-login-screen-bg-color: var(--f7-md-surface);\n}\n.login-screen {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n transform: translate3d(0, 100vh, 0);\n background: var(--f7-login-screen-bg-color);\n transition-timing-function: var(--f7-login-screen-transition-timing-function);\n z-index: 11000;\n}\n.login-screen.modal-in,\n.login-screen.modal-out {\n transition-duration: var(--f7-login-screen-transition-duration);\n}\n.login-screen.not-animated {\n transition-duration: 0ms;\n}\n.login-screen.modal-in {\n display: block;\n transform: translate3d(0, 0, 0);\n}\n.login-screen.modal-out {\n transform: translate3d(0, 100%, 0);\n}\n.login-screen-content,\n.login-screen-page,\n.login-screen .page {\n background: var(--f7-login-screen-content-bg-color);\n}\n.login-screen-content .login-screen-title,\n.login-screen-page .login-screen-title,\n.login-screen-content .list,\n.login-screen-page .list,\n.login-screen-content .block,\n.login-screen-page .block {\n margin: var(--f7-login-screen-blocks-margin-vertical) auto;\n}\n.login-screen-content .login-screen-title,\n.login-screen-page .login-screen-title,\n.login-screen-content .list,\n.login-screen-page .list,\n.login-screen-content .block,\n.login-screen-page .block,\n.login-screen-content .block-footer,\n.login-screen-page .block-footer,\n.login-screen-content .block-header,\n.login-screen-page .block-header {\n max-width: var(--f7-login-screen-blocks-max-width);\n}\n.login-screen-content .list ul,\n.login-screen-page .list ul {\n background: none;\n}\n.login-screen-content .list ul:before,\n.login-screen-page .list ul:before,\n.login-screen-content .list ul:after,\n.login-screen-page .list ul:after {\n display: none !important;\n}\n.login-screen-content .block-footer,\n.login-screen-page .block-footer,\n.login-screen-content .block-header,\n.login-screen-page .block-header {\n text-align: center;\n margin-left: auto;\n margin-right: auto;\n}\n.login-screen-title {\n text-align: var(--f7-login-screen-title-text-align);\n font-size: var(--f7-login-screen-title-font-size);\n font-weight: var(--f7-login-screen-title-font-weight);\n color: var(--f7-login-screen-title-text-color);\n letter-spacing: var(--f7-login-screen-title-letter-spacing);\n}\n.login-screen-page,\n.login-screen > .view > .page,\n.login-screen > .page {\n display: flex;\n flex-direction: column;\n}\n.login-screen-page .page-content,\n.login-screen > .view > .page .page-content,\n.login-screen > .page .page-content,\n.login-screen-page .login-screen-content,\n.login-screen > .view > .page .login-screen-content,\n.login-screen > .page .login-screen-content {\n margin-top: auto;\n margin-bottom: auto;\n height: auto;\n max-height: 100%;\n width: 100%;\n}\n.dark .login-screen-content .list ul,\n.dark .login-screen-content .block-strong,\n.dark .login-screen-page .list ul,\n.dark .login-screen-page .block-strong,\n.dark.login-screen-page .list ul,\n.dark.login-screen-page .block-strong {\n background-color: transparent;\n}\n/* === Popover === */\n:root {\n --f7-popover-width: 260px;\n}\n.ios {\n --f7-popover-border-radius: 13px;\n --f7-popover-actions-icon-size: 28px;\n --f7-popover-transition-timing-function: initial;\n --f7-popover-bg-color: rgba(255, 255, 255, 0.95);\n --f7-popover-actions-label-text-color: rgba(0, 0, 0, 0.45);\n}\n.ios .dark,\n.ios.dark {\n --f7-popover-bg-color: rgba(30, 30, 30, 0.95);\n --f7-popover-actions-label-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-popover-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n --f7-popover-border-radius: 28px;\n --f7-popover-actions-icon-size: 24px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-popover-bg-color: var(--f7-md-surface-3);\n --f7-popover-actions-label-text-color: var(--f7-md-on-surface-variant);\n}\n.popover-backdrop-unique {\n z-index: 13500;\n}\n.popover {\n width: var(--f7-popover-width);\n z-index: 13500;\n margin: 0;\n top: 0;\n opacity: 0;\n left: 0;\n position: absolute;\n display: none;\n transition-duration: 300ms;\n background-color: var(--f7-popover-bg-color);\n border-radius: var(--f7-popover-border-radius);\n will-change: transform, opacity;\n --f7-safe-area-top: 0px;\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n --f7-safe-area-bottom: 0px;\n}\n.popover .list {\n margin: 0;\n}\n.popover .list ul {\n background: none;\n}\n.popover .list:first-child ul:before {\n display: none !important;\n}\n.popover .list:last-child ul:after {\n display: none !important;\n}\n.popover .list:first-child ul {\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n}\n.popover .list:first-child li:first-child,\n.popover .list:first-child li:first-child a,\n.popover .list:first-child li:first-child > label {\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n}\n.popover .list:last-child ul {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.popover .list:last-child li:last-child,\n.popover .list:last-child li:last-child a,\n.popover .list:last-child li:last-child > label {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.popover .list:first-child:last-child li:first-child:last-child,\n.popover .list:first-child:last-child li:first-child:last-child a,\n.popover .list:first-child:last-child li:first-child:last-child > label,\n.popover .list:first-child:last-child ul {\n border-radius: var(--f7-popover-border-radius);\n}\n.popover .list + .list {\n margin-top: var(--f7-list-margin-vertical);\n}\n.popover.modal-in {\n opacity: 1;\n}\n.popover.not-animated {\n transition-duration: 0ms;\n}\n.popover,\n.popover-backdrop {\n transition-timing-function: var(--f7-popover-transition-timing-function);\n}\n.popover-inner {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n}\n.popover-from-actions .item-link i.icon {\n width: var(--f7-popover-actions-icon-size);\n height: var(--f7-popover-actions-icon-size);\n font-size: var(--f7-popover-actions-icon-size);\n}\n.ios .popover-from-actions-strong {\n font-weight: 600;\n}\n.md .popover-from-actions-strong {\n font-weight: 500;\n}\n.popover-from-actions-label {\n line-height: 1.3;\n position: relative;\n display: flex;\n align-items: center;\n padding: var(--f7-actions-label-padding);\n color: var(--f7-popover-actions-label-text-color);\n font-size: var(--f7-actions-label-font-size);\n justify-content: var(--f7-actions-label-justify-content);\n}\n.popover-from-actions-label:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.popover-from-actions-label:last-child:after {\n display: none !important;\n}\n.md .popover-from-actions-label {\n justify-content: center;\n}\n.popover-arrow {\n width: 26px;\n height: 26px;\n position: absolute;\n left: -26px;\n top: 0;\n z-index: 100;\n overflow: hidden;\n}\n.popover-arrow:after {\n content: '';\n background: var(--f7-popover-bg-color);\n width: 26px;\n height: 26px;\n position: absolute;\n left: 0;\n top: 0;\n border-radius: 3px;\n transform: rotate(45deg);\n}\n.popover-arrow.on-left {\n left: -26px;\n}\n.popover-arrow.on-left:after {\n left: 19px;\n top: 0;\n}\n.popover-arrow.on-right {\n left: 100%;\n}\n.popover-arrow.on-right:after {\n left: -19px;\n top: 0;\n}\n.popover-arrow.on-top {\n left: 0;\n top: -26px;\n}\n.popover-arrow.on-top:after {\n left: 0;\n top: 19px;\n}\n.popover-arrow.on-bottom {\n left: 0;\n top: 100%;\n}\n.popover-arrow.on-bottom:after {\n left: 0;\n top: -19px;\n}\n.ios .popover {\n transform: none;\n transition-property: opacity;\n}\n.md .popover {\n transform: scale(0.85, 0.6);\n transition-property: opacity, transform;\n}\n.md .popover.modal-in {\n opacity: 1;\n transform: scale(1);\n}\n.md .popover.modal-out {\n opacity: 0;\n transform: scale(1);\n}\n.md .popover-on-top {\n transform-origin: center bottom;\n}\n.md .popover-on-top.popover-on-right {\n transform-origin: left bottom;\n}\n.md .popover-on-top.popover-on-left {\n transform-origin: right bottom;\n}\n.md .popover-on-middle {\n transform-origin: center center;\n}\n.md .popover-on-middle.popover-on-right {\n transform-origin: left center;\n}\n.md .popover-on-middle.popover-on-left {\n transform-origin: right center;\n}\n.md .popover-on-bottom {\n transform-origin: center top;\n}\n.md .popover-on-bottom.popover-on-right {\n transform-origin: left top;\n}\n.md .popover-on-bottom.popover-on-left {\n transform-origin: right top;\n}\n/* === Actions === */\n:root {\n --f7-actions-grid-button-font-size: 12px;\n --f7-actions-grid-button-icon-size: 48px;\n}\n.ios {\n --f7-actions-transition-timing-function: initial;\n --f7-actions-border-radius: 13px;\n /*\n --f7-actions-button-text-color: var(--f7-theme-color);\n */\n --f7-actions-grid-button-text-color: #757575;\n --f7-actions-button-padding: 0px;\n --f7-actions-button-text-align: center;\n --f7-actions-button-height: 57px;\n --f7-actions-button-height-landscape: 44px;\n --f7-actions-button-font-size: 20px;\n --f7-actions-button-icon-size: 28px;\n --f7-actions-button-justify-content: center;\n --f7-actions-label-padding: 8px 10px;\n --f7-actions-label-font-weight: 400;\n --f7-actions-label-font-size: 13px;\n --f7-actions-label-justify-content: center;\n --f7-actions-group-border-color: transparent;\n --f7-actions-group-margin: 8px;\n --f7-actions-bg-color: rgba(255, 255, 255, 0.95);\n --f7-actions-bg-color-rgb: 255, 255, 255;\n --f7-actions-button-border-color: rgba(0, 0, 0, 0.2);\n --f7-actions-button-pressed-bg-color: rgba(230, 230, 230, 0.9);\n --f7-actions-button-pressed-bg-color-rgb: 230, 230, 230;\n --f7-actions-label-text-color: #8a8a8a;\n}\n.ios .dark,\n.ios.dark {\n --f7-actions-bg-color: rgba(45, 45, 45, 0.95);\n --f7-actions-bg-color-rgb: 45, 45, 45;\n --f7-actions-button-border-color: rgba(255, 255, 255, 0.15);\n --f7-actions-button-pressed-bg-color: rgba(50, 50, 50, 0.9);\n --f7-actions-button-pressed-bg-color-rgb: 50, 50, 50;\n --f7-actions-label-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-actions-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n --f7-actions-border-radius: 16px;\n --f7-actions-button-border-color: transparent;\n --f7-actions-button-padding: 0 16px;\n --f7-actions-button-text-align: left;\n --f7-actions-button-height: 48px;\n --f7-actions-button-height-landscape: 48px;\n --f7-actions-button-font-size: 16px;\n --f7-actions-button-icon-size: 24px;\n --f7-actions-button-justify-content: space-between;\n --f7-actions-label-padding: 12px 16px;\n --f7-actions-label-font-size: 14px;\n --f7-actions-label-font-weight: 500;\n --f7-actions-label-justify-content: flex-start;\n --f7-actions-group-margin: 0px;\n --f7-actions-button-pressed-bg-color: #e5e5e5;\n}\n.md .dark,\n.md.dark {\n --f7-actions-button-pressed-bg-color: #2e2e2e;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-actions-button-text-color: var(--f7-md-on-surface);\n --f7-actions-bg-color: var(--f7-md-surface-3);\n --f7-actions-group-border-color: var(--f7-md-outline);\n --f7-actions-label-text-color: var(--f7-theme-color);\n --f7-actions-grid-button-text-color: var(--f7-md-on-surface);\n}\n.actions-backdrop-unique {\n z-index: 13500;\n}\n.actions-modal {\n position: absolute;\n left: 0;\n bottom: 0;\n z-index: 13500;\n width: 100%;\n transform: translate3d(0, 100%, 0);\n display: none;\n max-height: 100%;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n transition-property: transform;\n will-change: transform;\n}\n.actions-modal.modal-in,\n.actions-modal.modal-out {\n transition-duration: 300ms;\n}\n.actions-modal.not-animated {\n transition-duration: 0ms;\n}\n.ios .actions-modal.modal-in {\n transform: translate3d(0, calc(-1 * var(--f7-safe-area-bottom)), 0);\n}\n.md .actions-modal.modal-in {\n transform: translate3d(0, 0, 0);\n}\n.actions-modal.modal-out {\n z-index: 13499;\n transform: translate3d(0, 100%, 0);\n}\n@media (min-width: 496px) {\n .actions-modal {\n width: 480px;\n left: 50%;\n margin-left: -240px;\n }\n}\n@media (orientation: landscape) {\n .actions-modal {\n --f7-actions-button-height: var(--f7-actions-button-height-landscape);\n }\n}\n.actions-backdrop,\n.actions-modal {\n transition-timing-function: var(--f7-actions-transition-timing-function);\n}\n.actions-group {\n overflow: hidden;\n position: relative;\n margin: var(--f7-actions-group-margin);\n transform: translate3d(0, 0, 0);\n}\n.actions-group:after {\n content: '';\n position: absolute;\n background-color: var(--f7-actions-group-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.actions-group:last-child:after {\n display: none !important;\n}\n.actions-button,\n.actions-label {\n width: 100%;\n font-weight: normal;\n margin: 0;\n box-sizing: border-box;\n display: block;\n position: relative;\n overflow: hidden;\n text-align: var(--f7-actions-button-text-align);\n}\n.actions-button:after,\n.actions-label:after {\n content: '';\n position: absolute;\n background-color: var(--f7-actions-button-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.actions-button a,\n.actions-label a {\n text-decoration: none;\n color: inherit;\n display: block;\n}\n.actions-button {\n cursor: pointer;\n display: flex;\n color: var(--f7-actions-button-text-color, var(--f7-theme-color));\n font-size: var(--f7-actions-button-font-size);\n height: var(--f7-actions-button-height);\n line-height: var(--f7-actions-button-height);\n padding: var(--f7-actions-button-padding);\n justify-content: var(--f7-actions-button-justify-content);\n z-index: 10;\n}\n.actions-button.active-state {\n background-color: var(--f7-actions-button-pressed-bg-color) !important;\n}\n.actions-button[class*='color-'] {\n color: var(--f7-theme-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .actions-button.active-state {\n background-color: rgba(var(--f7-actions-button-pressed-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.actions-button-media {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n}\n.actions-button-media i.icon {\n width: var(--f7-actions-button-icon-size);\n height: var(--f7-actions-button-icon-size);\n font-size: var(--f7-actions-button-icon-size);\n}\n.actions-button a,\n.actions-button-text {\n position: relative;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.actions-button-text {\n width: 100%;\n flex-shrink: 1;\n text-align: var(--f7-actions-button-text-align);\n}\n.actions-label {\n line-height: 1.3;\n display: flex;\n align-items: center;\n font-size: var(--f7-actions-label-font-size);\n font-weight: var(--f7-actions-label-font-weight);\n color: var(--f7-actions-label-text-color);\n padding: var(--f7-actions-label-padding);\n justify-content: var(--f7-actions-label-justify-content);\n min-height: var(--f7-actions-label-min-height, var(--f7-actions-button-height));\n}\n.actions-label[class*=' color-'] {\n --f7-actions-label-text-color: var(--f7-theme-color);\n}\n.actions-grid .actions-group {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n margin-top: 0;\n}\n.actions-grid .actions-group:not(:last-child) {\n margin-bottom: 0;\n}\n.actions-grid .actions-button,\n.actions-grid .actions-label {\n background: none;\n}\n.actions-grid .actions-button {\n width: 33.33333333%;\n display: block;\n color: var(--f7-actions-grid-button-text-color);\n height: auto;\n line-height: 1;\n padding: 16px;\n}\n.actions-grid .actions-button:after {\n display: none !important;\n}\n.actions-grid .actions-button-media {\n margin-left: auto !important;\n margin-right: auto !important;\n width: var(--f7-actions-grid-button-icon-size);\n height: var(--f7-actions-grid-button-icon-size);\n}\n.actions-grid .actions-button-media i.icon {\n width: var(--f7-actions-grid-button-icon-size);\n height: var(--f7-actions-grid-button-icon-size);\n font-size: var(--f7-actions-grid-button-icon-size);\n}\n.actions-grid .actions-button-text {\n margin-left: 0 !important;\n text-align: center !important;\n margin-top: 8px;\n line-height: 1.33em;\n height: 1.33em;\n font-size: var(--f7-actions-grid-button-font-size);\n}\n.ios .actions-group {\n border-radius: var(--f7-actions-border-radius);\n}\n.ios .actions-button,\n.ios .actions-label {\n background: var(--f7-actions-bg-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .ios .actions-button,\n .ios-translucent-modals .ios .actions-label {\n background-color: rgba(var(--f7-actions-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.ios .actions-button:first-child,\n.ios .actions-label:first-child {\n border-radius: var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;\n}\n.ios .actions-button:last-child,\n.ios .actions-label:last-child {\n border-radius: 0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius);\n}\n.ios .actions-button:last-child:after,\n.ios .actions-label:last-child:after {\n display: none !important;\n}\n.ios .actions-button:first-child:last-child,\n.ios .actions-label:first-child:last-child {\n border-radius: var(--f7-actions-border-radius);\n}\n.ios .actions-button b,\n.ios .actions-label b,\n.ios .actions-button.actions-button-strong,\n.ios .actions-label.actions-button-strong {\n font-weight: 600;\n}\n.ios .actions-grid .actions-group {\n border-radius: 0;\n background: var(--f7-actions-bg-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .ios .actions-grid .actions-group {\n background-color: rgba(var(--f7-actions-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.ios .actions-grid .actions-group:first-child {\n border-radius: var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;\n}\n.ios .actions-grid .actions-group:last-child {\n border-radius: 0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius);\n}\n.ios .actions-grid .actions-group:first-child:last-child {\n border-radius: var(--f7-actions-border-radius);\n}\n.ios .actions-grid .actions-button,\n.ios .actions-grid .actions-label {\n border-radius: 0 !important;\n}\n.ios .actions-button-media {\n margin-left: 16px;\n}\n.ios .actions-button-media + .actions-button-text {\n text-align: left;\n margin-left: 16px;\n}\n.md .actions-modal {\n background-color: var(--f7-actions-bg-color);\n border-radius: var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;\n padding-bottom: var(--f7-safe-area-bottom);\n}\n.md .actions-button {\n transition-duration: 300ms;\n}\n.md .actions-button b,\n.md .actions-label b,\n.md .actions-button.actions-button-strong,\n.md .actions-label.actions-button-strong {\n font-weight: 500;\n}\n.md .actions-button-media {\n min-width: 40px;\n}\n.md .actions-button-media + .actions-button-text {\n margin-left: 16px;\n}\n/* === Sheet Modal === */\n:root {\n --f7-sheet-height: 260px;\n --f7-sheet-push-offset: var(--f7-safe-area-top);\n}\n.ios {\n --f7-sheet-border-radius: 0px;\n --f7-sheet-border-color: var(--f7-bars-border-color);\n --f7-sheet-transition-timing-function: initial;\n --f7-sheet-push-border-radius: 10px;\n --f7-sheet-transition-duration: 300ms;\n --f7-sheet-bg-color: #fff;\n}\n.ios .dark,\n.ios.dark {\n --f7-sheet-bg-color: #202020;\n}\n.md {\n --f7-sheet-border-radius: 16px;\n --f7-sheet-push-border-radius: 16px;\n --f7-sheet-border-color: transparent;\n --f7-sheet-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n --f7-sheet-transition-duration: 400ms;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-sheet-bg-color: var(--f7-md-surface);\n}\n.sheet-backdrop {\n z-index: 11000;\n}\n.sheet-backdrop-unique {\n z-index: 12500;\n}\n.sheet-modal {\n overflow: hidden;\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n height: var(--f7-sheet-height);\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n transform: translate3d(0, 100%, 0);\n background: var(--f7-sheet-bg-color);\n z-index: 12500;\n will-change: transform, opacity;\n}\n.sheet-modal.modal-in,\n.sheet-modal.modal-out {\n transition-duration: var(--f7-sheet-transition-duration);\n}\n.sheet-modal.not-animated {\n transition-duration: 0ms;\n}\n.sheet-modal.modal-in {\n display: block;\n transform: translate3d(0, 0, 0);\n}\n.sheet-modal.modal-in-swipe-step,\n.sheet-modal.modal-in-breakpoint {\n display: block;\n transform: translate3d(0, var(--f7-sheet-breakpoint, var(--f7-sheet-swipe-step, 0)), 0);\n}\n.sheet-modal.modal-out {\n transform: translate3d(0, 100%, 0);\n}\n.sheet-modal .sheet-modal-inner {\n height: 100%;\n position: relative;\n overflow: hidden;\n}\n.sheet-modal .toolbar {\n --f7-safe-area-bottom: 0px;\n position: relative;\n width: 100%;\n}\n.sheet-modal .toolbar:after,\n.sheet-modal .toolbar:before {\n display: none;\n}\n.sheet-modal .toolbar + .sheet-modal-inner {\n height: calc(100% - var(--f7-toolbar-height));\n}\n.sheet-modal .toolbar + .sheet-modal-inner .page-content {\n --f7-page-toolbar-top-offset: 0px;\n --f7-page-toolbar-bottom-offset: 0px;\n}\n.sheet-backdrop,\n.sheet-modal {\n transition-timing-function: var(--f7-sheet-transition-timing-function);\n}\n.sheet-modal-top {\n border-radius: 0 0 var(--f7-sheet-border-radius) var(--f7-sheet-border-radius);\n}\n.sheet-modal-top:after {\n content: '';\n position: absolute;\n background-color: var(--f7-sheet-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.sheet-modal-top:after {\n z-index: 700;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n transform-style: preserve-3d;\n}\n.sheet-modal-bottom,\n.sheet-modal:not(.sheet-modal-top) {\n --f7-safe-area-top: 0px;\n border-radius: var(--f7-sheet-border-radius) var(--f7-sheet-border-radius) 0 0;\n}\n.sheet-modal-bottom:before,\n.sheet-modal:not(.sheet-modal-top):before {\n content: '';\n position: absolute;\n background-color: var(--f7-sheet-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.sheet-modal-bottom:before,\n.sheet-modal:not(.sheet-modal-top):before {\n z-index: 700;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n transform-style: preserve-3d;\n}\n.sheet-modal-top {\n --f7-safe-area-bottom: 0px;\n bottom: auto;\n top: 0;\n transform: translate3d(0, -100%, 0);\n}\n.sheet-modal-top.modal-out {\n transform: translate3d(0, -100%, 0);\n}\n.sheet-modal-top .toolbar-bottom {\n position: absolute;\n}\n.sheet-modal-top .page-content {\n padding-top: var(--f7-safe-area-top);\n}\nhtml.with-modal-sheet-push .sheet-modal-push,\nhtml.with-modal-sheet-push-closing .sheet-modal-push {\n --f7-sheet-border-color: transparent;\n border-radius: var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius) 0 0;\n overflow: hidden;\n}\nhtml.with-modal-sheet-push .sheet-modal-push .view,\nhtml.with-modal-sheet-push-closing .sheet-modal-push .view,\nhtml.with-modal-sheet-push .sheet-modal-push .page,\nhtml.with-modal-sheet-push-closing .sheet-modal-push .page {\n --f7-safe-area-top: 0px;\n}\nhtml.with-modal-sheet-push .sheet-modal-push.sheet-modal-top,\nhtml.with-modal-sheet-push-closing .sheet-modal-push.sheet-modal-top {\n border-radius: 0 0 var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius);\n}\nhtml.with-modal-sheet-push .framework7-root,\nhtml.with-modal-sheet-push-closing .framework7-root {\n background: #000;\n}\nhtml.with-modal-sheet-push .framework7-root > .views,\nhtml.with-modal-sheet-push-closing .framework7-root > .views,\nhtml.with-modal-sheet-push .framework7-root > .view,\nhtml.with-modal-sheet-push-closing .framework7-root > .view {\n transition-duration: var(--f7-sheet-transition-duration);\n transition-timing-function: var(--f7-sheet-transition-timing-function);\n}\nhtml.with-modal-sheet-push.dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push.dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push .dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push .dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push .dark.framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-sheet-push .dark.framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-sheet-push .framework7-root > .views.dark:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-sheet-push .framework7-root > .view.dark:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .view.dark:after {\n content: '';\n position: absolute;\n pointer-events: none;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(255, 255, 255, 0.1);\n z-index: 13000;\n opacity: 1;\n transition-duration: var(--f7-sheet-transition-duration);\n transition-timing-function: var(--f7-sheet-transition-timing-function);\n animation: sheet-dark-push-overlay-fade-in var(--f7-sheet-transition-duration);\n animation-timing-function: var(--f7-sheet-transition-timing-function);\n}\nhtml.with-modal-sheet-push .framework7-root > .views,\nhtml.with-modal-sheet-push .framework7-root > .view {\n border-radius: var(--f7-sheet-push-border-radius);\n transform: translate3d(0, 0, 0px) scale(var(--f7-sheet-push-scale, 1)) !important;\n}\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .view.dark:after {\n opacity: 0;\n animation: none;\n}\n@keyframes sheet-dark-push-overlay-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n.md .sheet-modal .toolbar a.link:not(.tab-link) {\n flex-shrink: 0;\n}\n/* === Toast === */\n:root {\n --f7-toast-font-size: 14px;\n --f7-toast-icon-size: 48px;\n --f7-toast-max-width: 568px;\n}\n.ios {\n --f7-toast-text-color: #fff;\n --f7-toast-bg-color: rgba(0, 0, 0, 0.75);\n --f7-toast-bg-color-rgb: 0, 0, 0;\n --f7-toast-padding-horizontal: 16px;\n --f7-toast-padding-vertical: 12px;\n --f7-toast-border-radius: 8px;\n --f7-toast-button-min-width: 64px;\n}\n.md {\n --f7-toast-padding-horizontal: 24px;\n --f7-toast-padding-vertical: 14px;\n --f7-toast-border-radius: 16px;\n --f7-toast-button-min-width: 64px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-toast-text-color: var(--f7-md-on-surface);\n --f7-toast-bg-color: var(--f7-md-surface-5);\n}\n.toast {\n transition-property: transform, opacity;\n position: absolute;\n max-width: var(--f7-toast-max-width);\n z-index: 20000;\n color: var(--f7-toast-text-color);\n font-size: var(--f7-toast-font-size);\n box-sizing: border-box;\n background-color: var(--f7-toast-bg-color);\n opacity: 0;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .toast {\n background-color: rgba(var(--f7-toast-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.toast.modal-in {\n opacity: 1;\n}\n.toast .toast-content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-sizing: border-box;\n padding: var(--f7-toast-padding-vertical) var(--f7-toast-padding-horizontal);\n}\n.toast .toast-text {\n line-height: 20px;\n flex-shrink: 1;\n min-width: 0;\n}\n.toast .toast-button {\n flex-shrink: 0;\n min-width: var(--f7-toast-button-min-width);\n margin-top: -8px;\n margin-bottom: -8px;\n}\n.toast.toast-with-icon .toast-content {\n display: block;\n text-align: center;\n}\n.toast.toast-with-icon .toast-text {\n text-align: center;\n}\n.toast.toast-with-icon .toast-icon .f7-icons,\n.toast.toast-with-icon .toast-icon .material-icons {\n font-size: var(--f7-toast-icon-size);\n}\n.toast.toast-center {\n top: 50%;\n}\n.toast.toast-top {\n margin-top: var(--f7-safe-area-top);\n}\n.ios .toast {\n transition-duration: 300ms;\n width: 100%;\n left: 0;\n}\n.ios .toast.toast-top {\n top: 0;\n transform: translate3d(0, -100%, 0);\n}\n.ios .toast.toast-top.modal-in {\n transform: translate3d(0, 0%, 0);\n}\n.ios .toast.toast-center {\n width: auto;\n left: 50%;\n border-radius: var(--f7-toast-border-radius);\n transform: translate3d(-50%, -50%, 0);\n}\n.ios .toast.toast-center.modal-in {\n transform: translate3d(-50%, -50%, 0);\n}\n.ios .toast.toast-bottom {\n bottom: 0;\n transform: translate3d(0, 100%, 0);\n}\n.ios .toast.toast-bottom.modal-in {\n transform: translate3d(0, 0%, 0);\n}\n@media (max-width: 568px) {\n .ios .toast.toast-top {\n margin-top: 0;\n }\n .ios .toast.toast-top .toast-content {\n padding-top: calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-top));\n }\n .ios .toast.toast-bottom .toast-content {\n padding-bottom: calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-bottom));\n }\n}\n@media (min-width: 569px) {\n .ios .toast {\n left: 50%;\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n border-radius: var(--f7-toast-border-radius);\n }\n .ios .toast.toast-top {\n top: 16px;\n }\n .ios .toast.toast-center {\n margin-left: 0;\n }\n .ios .toast.toast-bottom {\n margin-bottom: calc(16px + var(--f7-safe-area-bottom));\n }\n}\n@media (min-width: 1024px) {\n .ios .toast {\n margin-left: 0;\n width: auto;\n }\n .ios .toast.toast-horizontal-left {\n left: 16px;\n }\n .ios .toast.toast-horizontal-right {\n left: auto;\n right: 16px;\n }\n .ios .toast.toast-horizontal-center {\n left: 50%;\n width: var(--f7-toast-max-width);\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n }\n}\n.ios .toast-button {\n margin-right: 16px;\n margin-left: calc(-1 * var(--f7-button-padding-horizontal));\n}\n.md .toast {\n transition-duration: 200ms;\n border-radius: var(--f7-toast-border-radius);\n width: calc(100% - 16px);\n transform: scale(0.9);\n left: 8px;\n}\n.md .toast.modal-in {\n transform: scale(1);\n}\n.md .toast.modal-out {\n transform: scale(1);\n}\n.md .toast.toast-top {\n top: 8px;\n}\n.md .toast.toast-center {\n left: 50%;\n width: auto;\n transform: scale(0.9) translate3d(-55%, -55%, 0);\n}\n.md .toast.toast-center.modal-in {\n transform: scale(1) translate3d(-50%, -50%, 0);\n}\n.md .toast.toast-center.modal-out {\n transform: scale(1) translate3d(-50%, -50%, 0);\n}\n.md .toast.toast-bottom {\n bottom: calc(8px + var(--f7-safe-area-bottom));\n}\n@media (min-width: 584px) {\n .md .toast {\n left: 50%;\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n }\n .md .toast.toast-center {\n margin-left: 0;\n }\n}\n@media (min-width: 1024px) {\n .md .toast {\n margin-left: 0;\n width: auto;\n }\n .md .toast.toast-horizontal-left {\n left: 24px;\n }\n .md .toast.toast-horizontal-right {\n left: auto;\n right: 24px;\n }\n .md .toast.toast-horizontal-center {\n left: 50%;\n width: var(--f7-toast-max-width);\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n }\n .md .toast.toast-bottom {\n bottom: calc(24px + var(--f7-safe-area-bottom));\n }\n .md .toast.toast-top {\n top: 24px;\n }\n}\n.md .toast-button {\n margin-right: 16px;\n margin-left: -8px;\n}\n/* === Preloader === */\n:root {\n --f7-preloader-modal-padding: 8px;\n --f7-preloader-modal-bg-color: rgba(0, 0, 0, 0.8);\n}\n.ios {\n --f7-preloader-color: #6c6c6c;\n --f7-preloader-size: 20px;\n --f7-preloader-modal-preloader-size: 34px;\n --f7-preloader-modal-border-radius: 5px;\n}\n.md {\n --f7-preloader-color: #757575;\n --f7-preloader-size: 32px;\n --f7-preloader-modal-preloader-size: 32px;\n --f7-preloader-modal-border-radius: 4px;\n}\n.preloader {\n display: inline-block;\n vertical-align: middle;\n width: var(--f7-preloader-size);\n height: var(--f7-preloader-size);\n font-size: 0;\n position: relative;\n}\n.preloader .preloader-inner {\n width: 100%;\n height: 100%;\n display: block;\n position: relative;\n}\n/* === Preloader Modal === */\n.preloader-backdrop {\n visibility: visible;\n opacity: 0;\n background: none;\n z-index: 14000;\n}\n.preloader-modal {\n position: absolute;\n left: 50%;\n top: 50%;\n padding: var(--f7-preloader-modal-padding);\n background: var(--f7-preloader-modal-bg-color);\n z-index: 14500;\n transform: translateX(-50%) translateY(-50%);\n border-radius: var(--f7-preloader-modal-border-radius);\n}\n.preloader-modal .preloader {\n --f7-preloader-size: var(--f7-preloader-modal-preloader-size);\n display: block !important;\n}\nhtml.with-modal-preloader .page-content,\n.with-modal-preloader .page-content,\n.with-modal-preloader.page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\n.preloader[class*='color-'] {\n --f7-preloader-color: var(--f7-theme-color);\n}\n.preloader.color-white {\n --f7-preloader-color: #fff;\n}\n.preloader.color-black {\n --f7-preloader-color: #000;\n}\n.ios .preloader {\n color: var(--f7-preloader-color);\n}\n.ios .preloader-inner {\n animation: ios-preloader-spin 1s steps(8, end) infinite;\n}\n.ios .preloader-inner-line {\n display: block;\n width: 11.6%;\n height: 33.33%;\n border-radius: 100px;\n background: currentColor;\n position: absolute;\n left: 50%;\n top: 50%;\n transform-origin: center 150%;\n}\n.ios .preloader-multi-color .preloader-inner-line,\n.ios .preloader.color-multi .preloader-inner-line {\n animation: ios-preloader-multicolor 3s linear infinite;\n}\n.ios .preloader-inner-line:nth-child(1) {\n transform: translate(-50%, -150%) rotate(0deg);\n opacity: 0.27;\n}\n.ios .preloader-inner-line:nth-child(2) {\n transform: translate(-50%, -150%) rotate(45deg);\n opacity: 0.35285714;\n}\n.ios .preloader-inner-line:nth-child(3) {\n transform: translate(-50%, -150%) rotate(90deg);\n opacity: 0.43571429;\n}\n.ios .preloader-inner-line:nth-child(4) {\n transform: translate(-50%, -150%) rotate(135deg);\n opacity: 0.51857143;\n}\n.ios .preloader-inner-line:nth-child(5) {\n transform: translate(-50%, -150%) rotate(180deg);\n opacity: 0.60142857;\n}\n.ios .preloader-inner-line:nth-child(6) {\n transform: translate(-50%, -150%) rotate(225deg);\n opacity: 0.68428571;\n}\n.ios .preloader-inner-line:nth-child(7) {\n transform: translate(-50%, -150%) rotate(270deg);\n opacity: 0.76714286;\n}\n.ios .preloader-inner-line:nth-child(8) {\n transform: translate(-50%, -150%) rotate(315deg);\n opacity: 0.85;\n}\n@keyframes ios-preloader-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n@keyframes ios-preloader-multicolor {\n 0%,\n 100% {\n background-color: #2196f3;\n }\n 25% {\n background-color: #ff3b30;\n }\n 50% {\n background-color: #4cd964;\n }\n 75% {\n background-color: #ff9500;\n }\n}\n.md .preloader {\n color: var(--f7-preloader-color);\n}\n.md .preloader-inner {\n animation: md-preloader-rotate 1.4s linear infinite;\n}\n.md .preloader-inner circle {\n fill: none;\n stroke: currentColor;\n animation: md-preloader-circle-rotate 5.6s ease-in-out infinite;\n stroke-dasharray: 100px;\n stroke-dashoffset: 80px;\n stroke-width: 4;\n transform: rotate(-90deg);\n transform-origin: 18px 18px;\n}\n.md .preloader-multi-color circle,\n.md .preloader.color-multi circle {\n animation: md-preloader-circle-rotate 5.6s ease-in-out infinite, md-preloader-multicolor 5.6s ease-in-out infinite;\n}\n@keyframes md-preloader-multicolor {\n 0%,\n 100% {\n stroke: #4285f4;\n }\n 75% {\n stroke: #1b9a59;\n }\n 50% {\n stroke: #f7c223;\n }\n 25% {\n stroke: #de3e35;\n }\n}\n@keyframes md-preloader-rotate {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n@keyframes md-preloader-circle-rotate {\n 0% {\n transform: rotate(-90deg);\n stroke-dashoffset: 100px;\n }\n 12.5% {\n transform: rotate(-90deg);\n stroke-dashoffset: 25px;\n }\n 25% {\n stroke-dashoffset: 100px;\n transform: rotate(180deg);\n }\n 25.1% {\n transform: rotate(-180deg);\n stroke-dashoffset: 100px;\n }\n 37.5% {\n transform: rotate(-180deg);\n stroke-dashoffset: 25px;\n }\n 50% {\n stroke-dashoffset: 100px;\n transform: rotate(90deg);\n }\n 50.1% {\n transform: rotate(90deg);\n stroke-dashoffset: 100px;\n }\n 62.5% {\n transform: rotate(90deg);\n stroke-dashoffset: 25px;\n }\n 75% {\n stroke-dashoffset: 100px;\n transform: rotate(360deg);\n }\n 75.1% {\n transform: rotate(0deg);\n stroke-dashoffset: 100px;\n }\n 87.5% {\n transform: rotate(0deg);\n stroke-dashoffset: 25px;\n }\n 100% {\n stroke-dashoffset: 100px;\n transform: rotate(270deg);\n }\n}\n/* === Progressbar === */\n:root {\n /*\n --f7-progressbar-progress-color: var(--f7-theme-color);\n */\n}\n.ios {\n --f7-progressbar-height: 4px;\n --f7-progressbar-border-radius: 4px;\n --f7-progressbar-bg-color: rgba(0, 0, 0, 0.3);\n}\n.ios .dark,\n.ios.dark {\n --f7-progressbar-bg-color: rgba(255, 255, 255, 0.3);\n}\n.md {\n --f7-progressbar-height: 4px;\n --f7-progressbar-border-radius: 0px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-progressbar-bg-color: rgba(var(--f7-theme-color-rgb), 0.5);\n}\n.progressbar,\n.progressbar-infinite {\n width: 100%;\n overflow: hidden;\n position: relative;\n display: block;\n transform-style: preserve-3d;\n background: var(--f7-progressbar-bg-color, rgba(var(--f7-theme-color-rgb), 0.5));\n transform-origin: center top;\n height: var(--f7-progressbar-height);\n border-radius: var(--f7-progressbar-border-radius);\n}\n.progressbar {\n vertical-align: middle;\n}\n.progressbar span {\n background-color: var(--f7-progressbar-progress-color, var(--f7-theme-color));\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n transition-duration: 150ms;\n right: 0;\n transform: translate3d(100%, 0, 0);\n}\n.progressbar-infinite {\n z-index: 15000;\n}\n.progressbar-infinite:before,\n.progressbar-infinite:after {\n content: '';\n position: absolute;\n top: 0;\n width: 100%;\n height: 100%;\n transform: translate3d(0, 0, 0);\n display: block;\n background-color: var(--f7-progressbar-progress-color, var(--f7-theme-color));\n right: 0;\n transform-origin: right center;\n}\n.progressbar-infinite.color-multi {\n background: none !important;\n}\n.progressbar-in {\n animation: progressbar-in 150ms forwards;\n}\n.progressbar-out {\n animation: progressbar-out 150ms forwards;\n}\nbody > .progressbar,\n.view > .progressbar,\n.views > .progressbar,\n.page > .progressbar,\n.panel > .progressbar,\n.popup > .progressbar,\n.framework7-root > .progressbar,\nbody > .progressbar-infinite,\n.view > .progressbar-infinite,\n.views > .progressbar-infinite,\n.page > .progressbar-infinite,\n.panel > .progressbar-infinite,\n.popup > .progressbar-infinite,\n.framework7-root > .progressbar-infinite {\n position: absolute;\n left: 0;\n top: 0;\n z-index: 15000;\n border-radius: 0 !important;\n transform-origin: center top !important;\n}\n@keyframes progressbar-in {\n from {\n opacity: 0;\n transform: scaleY(0);\n }\n to {\n opacity: 1;\n transform: scaleY(1);\n }\n}\n@keyframes progressbar-out {\n from {\n opacity: 1;\n transform: scaleY(1);\n }\n to {\n opacity: 0;\n transform: scaleY(0);\n }\n}\n.ios .progressbar-infinite:before {\n animation: ios-progressbar-infinite 1s linear infinite;\n}\n.ios .progressbar-infinite:after {\n display: none;\n}\n.ios .progressbar-infinite.color-multi:before {\n width: 400%;\n background-image: linear-gradient(to right, #4cd964, #5ac8fa, #007aff, #34aadc, #5856d6, #ff2d55, #5856d6, #34aadc, #007aff, #5ac8fa, #4cd964);\n background-size: 25% 100%;\n background-repeat: repeat-x;\n animation: ios-progressbar-infinite-multicolor 3s linear infinite;\n}\n@keyframes ios-progressbar-infinite {\n 0% {\n transform: translate3d(100%, 0, 0);\n }\n 100% {\n transform: translate3d(-100%, 0, 0);\n }\n}\n@keyframes ios-progressbar-infinite-multicolor {\n 0% {\n transform: translate3d(0%, 0, 0);\n }\n 100% {\n transform: translate3d(-50%, 0, 0);\n }\n}\n.md .progressbar-infinite:before {\n animation: md-progressbar-infinite-1 2s linear infinite;\n}\n.md .progressbar-infinite:after {\n animation: md-progressbar-infinite-2 2s linear infinite;\n}\n.md .progressbar-infinite.color-multi:before {\n background: none;\n animation: md-progressbar-infinite-multicolor-bg 3s step-end infinite;\n}\n.md .progressbar-infinite.color-multi:after {\n background: none;\n animation: md-progressbar-infinite-multicolor-fill 3s linear infinite;\n transform-origin: center center;\n}\n@keyframes md-progressbar-infinite-1 {\n 0% {\n transform: translateX(10%) scaleX(0.1);\n }\n 25% {\n transform: translateX(-30%) scaleX(0.6);\n }\n 50% {\n transform: translateX(-100%) scaleX(1);\n }\n 100% {\n transform: translateX(-100%) scaleX(1);\n }\n}\n@keyframes md-progressbar-infinite-2 {\n 0% {\n transform: translateX(100%) scaleX(1);\n }\n 40% {\n transform: translateX(100%) scaleX(1);\n }\n 75% {\n transform: translateX(-60%) scaleX(0.35);\n }\n 90% {\n transform: translateX(-100%) scaleX(0.1);\n }\n 100% {\n transform: translateX(-100%) scaleX(0.1);\n }\n}\n@keyframes md-progressbar-infinite-multicolor-bg {\n 0% {\n background-color: #4caf50;\n }\n 25% {\n background-color: #f44336;\n }\n 50% {\n background-color: #2196f3;\n }\n 75% {\n background-color: #ffeb3b;\n }\n}\n@keyframes md-progressbar-infinite-multicolor-fill {\n 0% {\n transform: scaleX(0);\n background-color: #f44336;\n }\n 24.9% {\n transform: scaleX(1);\n background-color: #f44336;\n }\n 25% {\n transform: scaleX(0);\n background-color: #2196f3;\n }\n 49.9% {\n transform: scaleX(1);\n background-color: #2196f3;\n }\n 50% {\n transform: scaleX(0);\n background-color: #ffeb3b;\n }\n 74.9% {\n transform: scaleX(1);\n background-color: #ffeb3b;\n }\n 75% {\n transform: scaleX(0);\n background-color: #4caf50;\n }\n 100% {\n transform: scaleX(1);\n background-color: #4caf50;\n }\n}\n/* === Sortable === */\n.ios {\n --f7-sortable-handler-width: 36px;\n --f7-sortable-sorting-item-box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.6);\n --f7-sortable-handler-color: rgba(0, 0, 0, 0.22);\n --f7-sortable-sorting-item-bg-color: rgba(255, 255, 255, 0.8);\n}\n.ios .dark,\n.ios.dark {\n --f7-sortable-sorting-item-bg-color: rgba(50, 50, 50, 0.8);\n --f7-sortable-handler-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-sortable-handler-width: 42px;\n --f7-sortable-sorting-item-box-shadow: none;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-sortable-handler-color: var(--f7-md-on-surface-variant);\n --f7-sortable-sorting-item-bg-color: var(--f7-md-surface-3);\n}\n.sortable .sortable-handler {\n width: var(--f7-sortable-handler-width);\n height: 100%;\n position: absolute;\n top: 0;\n z-index: 10;\n opacity: 0;\n pointer-events: none;\n cursor: move;\n transition-duration: 300ms;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n left: var(--f7-safe-area-left);\n}\n.sortable .sortable-handler:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n transition-duration: 300ms;\n transform: translateX(10px);\n color: var(--f7-sortable-handler-color);\n overflow: hidden;\n height: 20px;\n width: 18px;\n}\n.sortable li.sorting {\n z-index: 50;\n background: var(--f7-sortable-sorting-item-bg-color);\n transition-duration: 0ms;\n box-shadow: var(--f7-sortable-sorting-item-box-shadow);\n}\n.sortable li.sorting .item-inner:after {\n display: none !important;\n}\n.sortable-opposite .sortable-handler {\n right: var(--f7-safe-area-left);\n left: auto;\n}\n.sortable-opposite .sortable-handler:after {\n transform: translateX(-10px);\n}\n.sortable:not(.sortable-opposite) .item-inner,\n.sortable-opposite .item-content,\n.sortable.simple-list li,\n.sortable-opposite.links-list li a {\n transition-duration: 300ms;\n transition-property: all;\n}\n.sortable-sorting li {\n transition-duration: 300ms;\n}\n.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler {\n pointer-events: auto;\n touch-action: none;\n opacity: 1;\n}\n.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler:after {\n transform: translateX(0px);\n}\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner:before,\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-title-row:before,\n.sortable-enabled:not(.sortable-opposite).links-list li:not(.no-sorting):not(.disallow-sorting) > a:before {\n display: none;\n}\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-inner,\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link.no-chevron .item-inner,\n.sortable-enabled.no-chevron:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,\n.sortable-enabled :not(.sortable-opposite).no-chevron .item-link .item-inner,\n.no-chevron .sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,\n.simple-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting),\n.links-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) a {\n padding-left: calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right));\n}\n.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .item-content,\n.simple-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting),\n.links-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) a {\n padding-right: calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right));\n}\n.ios .sortable-handler:after {\n content: 'sort_ios';\n}\n.md .sortable-handler:after {\n content: 'sort_md';\n}\n/* === Swipeout === */\n:root {\n --f7-swipeout-delete-button-bg-color: #ff3b30;\n --f7-swipeout-button-text-color: #fff;\n --f7-swipeout-button-padding-vertical: 0px;\n --f7-swipeout-button-bg-color: rgba(0, 0, 0, 0.22);\n}\n:root .dark,\n:root.dark {\n --f7-swipeout-button-bg-color: rgba(255, 255, 255, 0.55);\n}\n.ios {\n --f7-swipeout-button-padding-horizontal: 30px;\n --f7-swipeout-button-font-size: inherit;\n --f7-swipeout-button-font-weight: inherit;\n}\n.md {\n --f7-swipeout-button-padding-horizontal: 24px;\n --f7-swipeout-button-font-size: 14px;\n --f7-swipeout-button-font-weight: 500;\n}\n.md .dark,\n.md.dark {\n --f7-swipeout-button-text-color: #000;\n}\n.swipeout {\n overflow: hidden;\n transform-style: preserve-3d;\n}\n.swipeout-deleting {\n transition-duration: 300ms;\n}\n.swipeout-deleting .swipeout-content {\n transform: translateX(-100%);\n}\n.swipeout-transitioning .swipeout-content,\n.swipeout-transitioning .swipeout-actions-right a,\n.swipeout-transitioning .swipeout-actions-left a,\n.swipeout-transitioning .swipeout-overswipe {\n transition-duration: 300ms;\n transition-property: transform, left;\n}\n.swipeout-content {\n position: relative;\n z-index: 10;\n}\n.swipeout-overswipe {\n transition-duration: 200ms;\n transition-property: left;\n}\n.swipeout-actions-left,\n.swipeout-actions-right {\n position: absolute;\n top: 0;\n height: 100%;\n display: flex;\n direction: ltr;\n}\n.swipeout-actions-left > a,\n.swipeout-actions-right > a,\n.swipeout-actions-left > button,\n.swipeout-actions-right > button,\n.swipeout-actions-left > span,\n.swipeout-actions-right > span,\n.swipeout-actions-left > div,\n.swipeout-actions-right > div {\n color: var(--f7-swipeout-button-text-color);\n background: var(--f7-swipeout-button-bg-color);\n padding: var(--f7-swipeout-button-padding-vertical) var(--f7-swipeout-button-padding-horizontal);\n display: flex;\n align-items: center;\n position: relative;\n left: 0;\n font-size: var(--f7-swipeout-button-font-size);\n font-weight: var(--f7-swipeout-button-font-weight);\n}\n.swipeout-actions-left > a:after,\n.swipeout-actions-right > a:after,\n.swipeout-actions-left > button:after,\n.swipeout-actions-right > button:after,\n.swipeout-actions-left > span:after,\n.swipeout-actions-right > span:after,\n.swipeout-actions-left > div:after,\n.swipeout-actions-right > div:after {\n content: '';\n position: absolute;\n top: 0;\n width: 600%;\n height: 100%;\n background: inherit;\n z-index: -1;\n transform: translate3d(0, 0, 0);\n pointer-events: none;\n}\n.swipeout-actions-left .swipeout-delete,\n.swipeout-actions-right .swipeout-delete {\n background: var(--f7-swipeout-delete-button-bg-color);\n}\n.swipeout-actions-right {\n right: 0%;\n transform: translateX(calc(100% + 1px));\n}\n.swipeout-actions-right > a:after,\n.swipeout-actions-right > button:after,\n.swipeout-actions-right > span:after,\n.swipeout-actions-right > div:after {\n left: 100%;\n}\n.swipeout-actions-right > a:last-child,\n.swipeout-actions-right > button:last-child,\n.swipeout-actions-right > span:last-child,\n.swipeout-actions-right > div:last-child {\n padding-right: calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-right));\n}\n.swipeout-actions-left {\n left: 0%;\n transform: translateX(calc(-100% - 1px));\n}\n.swipeout-actions-left > a:after,\n.swipeout-actions-left > button:after,\n.swipeout-actions-left > span:after,\n.swipeout-actions-left > div:after {\n right: 100%;\n}\n.swipeout-actions-left > a:first-child,\n.swipeout-actions-left > button:first-child,\n.swipeout-actions-left > span:first-child,\n.swipeout-actions-left > div:first-child {\n padding-left: calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-left));\n}\n.swipeout-actions-left [class*='color-'],\n.swipeout-actions-right [class*='color-'] {\n --f7-swipeout-button-bg-color: var(--f7-theme-color);\n}\n/* === Accordion === */\n:root {\n --f7-accordion-chevron-icon-down: 'chevron_down';\n --f7-accordion-chevron-icon-up: 'chevron_up';\n}\n.accordion-item-toggle {\n cursor: pointer;\n}\n.list.accordion-list .accordion-item-toggle {\n transition-duration: 300ms;\n position: relative;\n overflow: hidden;\n}\n.list.accordion-list .accordion-item-toggle.active-state {\n transition-duration: 300ms;\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.list.accordion-list .accordion-item-toggle.active-state > .item-inner:after {\n background-color: transparent;\n}\n.list.accordion-list .accordion-item-toggle .item-inner {\n transition-duration: 300ms;\n transition-property: background-color;\n}\n.list.accordion-list .accordion-item-toggle .item-inner:after {\n transition-duration: 300ms;\n}\n.list.accordion-list .accordion-item-toggle .ripple-wave {\n z-index: 0;\n}\n.accordion-item .item-link .item-inner:after {\n transition-duration: 300ms;\n}\n.accordion-item .list,\n.accordion-item .block {\n margin-top: 0;\n margin-bottom: 0;\n}\n.accordion-item .block > h1:first-child,\n.accordion-item .block > h2:first-child,\n.accordion-item .block > h3:first-child,\n.accordion-item .block > h4:first-child,\n.accordion-item .block > p:first-child {\n margin-top: 10px;\n}\n.accordion-item .block > h1:last-child,\n.accordion-item .block > h2:last-child,\n.accordion-item .block > h3:last-child,\n.accordion-item .block > h4:last-child,\n.accordion-item .block > p:last-child {\n margin-bottom: 10px;\n}\n.accordion-item-opened .accordion-item-toggle .item-inner:after,\n.accordion-item-opened > .item-link .item-inner:after {\n background-color: transparent;\n}\n.list li.accordion-item ul {\n padding-right: 0;\n}\n.accordion-item-content {\n position: relative;\n overflow: hidden;\n height: 0;\n font-size: 14px;\n transition-duration: 300ms;\n}\n.accordion-item-opened > .accordion-item-content {\n height: auto;\n}\nhtml.device-android-4 .accordion-item-content {\n transform: none;\n}\n.list .accordion-item-toggle .item-inner:before {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n top: 50%;\n font-size: var(--f7-list-chevron-icon-font-size);\n color: var(--f7-list-chevron-icon-color);\n pointer-events: none;\n left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.list:not(.accordion-opposite) .accordion-item-toggle .item-inner {\n padding-left: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.accordion-opposite .accordion-item-toggle.item-link .item-inner,\n.accordion-opposite .accordion-item-toggle .item-inner,\n.accordion-opposite .accordion-item > .item-link > .item-inner,\n.accordion-opposite .accordion-item > .item-link > .item-content > .item-inner {\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.accordion-opposite .accordion-item > .item-link > .item-title-row {\n padding-right: 0;\n}\n.accordion-opposite .accordion-item-toggle.item-link .item-inner:before,\n.accordion-opposite .accordion-item-toggle .item-inner:before,\n.accordion-opposite .accordion-item > .item-link > .item-inner:before,\n.accordion-opposite .accordion-item > .item-link > .item-content > .item-inner:before,\n.accordion-opposite .accordion-item > .item-link .item-title-row:before {\n display: none;\n}\n.accordion-opposite .accordion-item-toggle > .item-content,\n.accordion-opposite .accordion-item-toggle.item-content,\n.accordion-opposite .accordion-item > .item-content,\n.accordion-opposite .accordion-item > .item-link > .item-content,\n.accordion-opposite.links-list .accordion-item > a {\n position: relative;\n padding-right: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.accordion-opposite .accordion-item-toggle > .item-content:before,\n.accordion-opposite .accordion-item-toggle.item-content:before,\n.accordion-opposite .accordion-item > .item-content:before,\n.accordion-opposite .accordion-item > .item-link > .item-content:before,\n.accordion-opposite.links-list .accordion-item > a:before {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n top: 50%;\n font-size: var(--f7-list-chevron-icon-font-size);\n color: var(--f7-list-chevron-icon-color);\n pointer-events: none;\n content: var(--f7-accordion-chevron-icon-down);\n width: 14px;\n height: 8px;\n margin-top: -4px;\n line-height: 8px;\n transform: translateX(-50%);\n right: calc((var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal)) / 2 + var(--f7-safe-area-right));\n}\n.list .accordion-item-toggle.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.list .accordion-item-toggle .item-inner:before,\n.list:not(.media-list) .accordion-item:not(.media-item) .accordion-item-toggle .item-inner:before,\n.list:not(.media-list) .accordion-item:not(.media-item) > .item-link .item-inner:before,\n.media-list .accordion-item .accordion-item-toggle .item-title-row:before,\n.media-list .accordion-item > .item-link .item-title-row:before,\n.accordion-item.media-item .accordion-item-toggle .item-title-row:before,\n.accordion-item.media-item > .item-link .item-title-row:before,\n.links-list .accordion-item > a:before {\n content: var(--f7-accordion-chevron-icon-down);\n width: 14px;\n height: 8px;\n margin-top: -4px;\n line-height: 8px;\n}\n.list .accordion-item-toggle.accordion-item-opened .item-inner:before,\n.list:not(.media-list) .accordion-item-opened:not(.media-item) .accordion-item-toggle .item-inner:before,\n.list:not(.media-list) .accordion-item-opened:not(.media-item) > .item-link .item-inner:before,\n.media-list .accordion-item-opened .accordion-item-toggle .item-title-row:before,\n.media-list .accordion-item-opened > .item-link .item-title-row:before,\n.accordion-item-opened.media-item .accordion-item-toggle .item-title-row:before,\n.accordion-item-opened.media-item > .item-link .item-title-row:before,\n.links-list .accordion-item-opened > a:before,\n.accordion-opposite .accordion-item-opened .accordion-item-toggle > .item-content:before,\n.accordion-opposite .accordion-item-opened .accordion-item-toggle.item-content:before,\n.accordion-opposite .accordion-item-opened > .item-content:before,\n.accordion-opposite .accordion-item-opened > .item-link > .item-content:before,\n.accordion-opposite .links-list .accordion-item-opened > a:before {\n content: var(--f7-accordion-chevron-icon-up);\n width: 14px;\n height: 8px;\n margin-top: -4px;\n line-height: 8px;\n}\n/* === Contacts === */\n.ios {\n --f7-contacts-list-title-font-size: inherit;\n --f7-contacts-list-title-font-weight: 600;\n --f7-contacts-list-title-height: 22px;\n --f7-contacts-list-title-text-color: #000;\n --f7-contacts-list-title-bg-color: #f7f7f7;\n}\n.ios .dark,\n.ios.dark {\n --f7-contacts-list-title-text-color: #fff;\n --f7-contacts-list-title-bg-color: #323234;\n}\n.md {\n --f7-contacts-list-title-font-size: 20px;\n --f7-contacts-list-title-font-weight: 500;\n --f7-contacts-list-title-height: 48px;\n --f7-contacts-list-title-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-contacts-list-title-text-color: var(--f7-theme-color);\n}\n.contacts-list {\n --f7-list-margin-vertical: 0px;\n}\n.contacts-list .list-group-title,\n.contacts-list li.list-group-title {\n background-color: var(--f7-contacts-list-title-bg-color, var(--f7-list-group-title-bg-color));\n font-weight: var(--f7-contacts-list-title-font-weight, var(--f7-list-group-title-font-weight));\n font-size: var(--f7-contacts-list-title-font-size, var(--f7-list-group-title-font-size));\n color: var(--f7-contacts-list-title-text-color, var(--f7-theme-color));\n line-height: var(--f7-contacts-list-title-height, var(--f7-list-group-title-height));\n height: var(--f7-contacts-list-title-height, var(--f7-list-group-title-height));\n}\n.contacts-list .list-group:first-child ul:before {\n display: none !important;\n}\n.contacts-list .list-group:last-child ul:after {\n display: none !important;\n}\n.md .contacts-list .list-group-title {\n pointer-events: none;\n overflow: visible;\n width: 40px;\n}\n.md .contacts-list .list-group-title + li {\n margin-top: calc(var(--f7-contacts-list-title-height) * -1);\n}\n.md .contacts-list .list-group-title:before {\n display: none !important;\n}\n.md .contacts-list li:not(.list-group-title) {\n padding-right: 40px;\n}\n/* === Virtual List === */\n/* === Indexed List === */\n:root {\n --f7-list-index-width: 16px;\n --f7-list-index-font-size: 11px;\n --f7-list-index-font-weight: 600;\n /* --f7-list-index-text-color: var(--f7-theme-color); */\n --f7-list-index-item-height: 14px;\n --f7-list-index-label-font-weight: 500;\n}\n.ios {\n --f7-list-index-label-text-color: #fff;\n /* --f7-list-index-label-bg-color: var(--f7-theme-color); */\n --f7-list-index-label-size: 44px;\n --f7-list-index-label-font-size: 17px;\n --f7-list-index-skip-dot-size: 6px;\n}\n.md {\n --f7-list-index-label-size: 56px;\n --f7-list-index-label-font-size: 20px;\n --f7-list-index-skip-dot-size: 4px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-list-index-label-bg-color: var(--f7-md-primary);\n --f7-list-index-label-text-color: var(--f7-md-on-primary);\n}\n.list-index {\n position: absolute;\n top: 0;\n bottom: 0;\n text-align: center;\n z-index: 10;\n width: var(--f7-list-index-width);\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n left: var(--f7-safe-area-left);\n}\n.list-index:before {\n content: '';\n position: absolute;\n width: 20px;\n top: 0;\n right: 100%;\n height: 100%;\n}\n.list-index ul {\n color: var(--f7-list-index-text-color, var(--f7-theme-color));\n font-size: var(--f7-list-index-font-size);\n font-weight: var(--f7-list-index-font-weight);\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n height: 100%;\n width: 100%;\n position: relative;\n}\n.list-index li {\n margin: 0;\n padding: 0;\n list-style: none;\n position: relative;\n height: var(--f7-list-index-item-height);\n line-height: var(--f7-list-index-item-height);\n flex-shrink: 0;\n display: block;\n width: 100%;\n}\n.list-index .list-index-skip-placeholder:after {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n border-radius: 50%;\n width: var(--f7-list-index-skip-dot-size);\n height: var(--f7-list-index-skip-dot-size);\n margin-left: calc(-1 * var(--f7-list-index-skip-dot-size) / 2);\n margin-top: calc(-1 * var(--f7-list-index-skip-dot-size) / 2);\n background: var(--f7-list-index-text-color, var(--f7-theme-color));\n}\n.list-index .list-index-label {\n position: absolute;\n bottom: 0;\n right: 100%;\n text-align: center;\n background-color: var(--f7-list-index-label-bg-color, var(--f7-theme-color));\n color: var(--f7-list-index-label-text-color);\n width: var(--f7-list-index-label-size);\n height: var(--f7-list-index-label-size);\n line-height: var(--f7-list-index-label-size);\n font-size: var(--f7-list-index-label-font-size);\n font-weight: var(--f7-list-index-label-font-weight);\n}\n.navbar ~ .page > .list-index,\n.navbars ~ .page > .list-index,\n.navbar ~ .list-index {\n top: var(--f7-navbar-height);\n}\n.navbar ~ .toolbar-top ~ .list-index,\n.navbars ~ .toolbar-top ~ .list-index,\n.ios .navbar ~ .toolbar-top-ios ~ .list-index,\n.ios .navbars ~ .toolbar-top-ios .md .navbar ~ .toolbar-top-md ~ .list-index {\n top: calc(var(--f7-navbar-height) + var(--f7-toolbar-height));\n}\n.navbar ~ .toolbar-top.tabbar-icons ~ .list-index,\n.navbars ~ .toolbar-top.tabbar-icons ~ .list-index,\n.ios .navbar ~ .toolbar-top-ios.tabbar-icons ~ .list-index,\n.ios .navbars ~ .toolbar-top-ios .md .navbar ~ .toolbar-top-md.tabbar-icons ~ .list-index {\n top: calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height));\n}\n.navbar ~ .subnavbar ~ .list-index,\n.navbars ~ .subnavbar ~ .list-index,\n.page-with-subnavbar .navbar ~ .list-index {\n top: calc(var(--f7-navbar-height) + var(--f7-subnavbar-height));\n}\n.toolbar-bottom ~ .page > .list-index,\n.ios .toolbar-bottom-ios ~ .page > .list-index,\n.md .toolbar-bottom-md ~ .page > .list-index,\n.toolbar-bottom ~ * .page > .list-index,\n.ios .toolbar-bottom-ios ~ * .page > .list-index,\n.md .toolbar-bottom-md ~ * .page > .list-index,\n.toolbar-bottom ~ .list-index,\n.ios .toolbar-bottom-ios ~ .list-index,\n.md .toolbar-bottom-md ~ .list-index {\n bottom: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n}\n.toolbar-bottom.tabbar-icons ~ .page > .list-index,\n.ios .toolbar-bottom-ios.tabbar-icons ~ .page > .list-index,\n.md .toolbar-bottom-md.tabbar-icons ~ .page > .list-index,\n.toolbar-bottom.tabbar-icons ~ * .page > .list-index,\n.ios .toolbar-bottom-ios.tabbar-icons ~ * .page > .list-index,\n.md .toolbar-bottom-md.tabbar-icons ~ * .page > .list-index,\n.toolbar-bottom.tabbar-icons ~ .list-index,\n.ios .toolbar-bottom-ios.tabbar-icons ~ .list-index,\n.md .toolbar-bottom-md.tabbar-icons ~ .list-index {\n bottom: calc(var(--f7-tabbar-icons-height) + var(--f7-safe-area-bottom));\n}\n.ios .list-index .list-index-label {\n margin-bottom: calc(-1 * var(--f7-list-index-label-size) / 2);\n margin-right: calc(var(--f7-list-index-width) - 1px);\n border-radius: 50%;\n}\n.ios .list-index .list-index-label:before {\n position: absolute;\n width: 100%;\n height: 100%;\n border-radius: 50% 0% 50% 50%;\n content: '';\n background-color: inherit;\n left: 0;\n top: 0;\n transform: rotate(45deg);\n z-index: -1;\n}\n.md .list-index .list-index-label {\n border-radius: 50% 50% 0 50%;\n}\n/* === Timeline === */\n:root {\n --f7-timeline-inner-block-margin-vertical: 16px;\n --f7-timeline-divider-margin-horizontal: 16px;\n --f7-timeline-horizontal-date-height: 34px;\n --f7-timeline-year-height: 24px;\n --f7-timeline-year-font-weight: inherit;\n --f7-timeline-month-height: 24px;\n --f7-timeline-month-font-size: inherit;\n --f7-timeline-month-font-weight: inherit;\n --f7-timeline-item-text-font-weight: inherit;\n --f7-timeline-item-subtitle-font-weight: inherit;\n}\n.ios {\n --f7-timeline-divider-color: #bbb;\n --f7-timeline-padding-horizontal: 16px;\n --f7-timeline-margin-vertical: 35px;\n --f7-timeline-item-inner-border-radius: 7px;\n --f7-timeline-item-time-font-size: 13px;\n --f7-timeline-item-title-font-size: 17px;\n --f7-timeline-item-title-line-height: inherit;\n --f7-timeline-item-title-font-weight: 600;\n --f7-timeline-item-subtitle-font-size: 15px;\n --f7-timeline-item-subtitle-line-height: inherit;\n --f7-timeline-item-text-font-size: inherit;\n --f7-timeline-item-text-color: inherit;\n --f7-timeline-item-text-line-height: inherit;\n --f7-timeline-year-font-size: 16px;\n --f7-timeline-horizontal-item-padding: 10px;\n --f7-timeline-item-inner-bg-color: #fff;\n --f7-timeline-item-time-text-color: rgba(0, 0, 0, 0.45);\n --f7-timeline-horizontal-item-border-color: rgba(0, 0, 0, 0.22);\n --f7-timeline-horizontal-item-date-border-color: rgba(0, 0, 0, 0.22);\n}\n.ios .dark,\n.ios.dark {\n --f7-timeline-horizontal-item-border-color: rgba(255, 255, 255, 0.15);\n --f7-timeline-horizontal-item-date-border-color: rgba(255, 255, 255, 0.15);\n --f7-timeline-item-inner-bg-color: #1c1c1d;\n --f7-timeline-item-time-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-timeline-padding-horizontal: 16px;\n --f7-timeline-margin-vertical: 32px;\n --f7-timeline-item-inner-border-radius: 16px;\n --f7-timeline-item-time-font-size: 13px;\n --f7-timeline-item-title-font-size: 16px;\n --f7-timeline-item-title-line-height: inherit;\n --f7-timeline-item-title-font-weight: 400;\n --f7-timeline-item-subtitle-font-size: inherit;\n --f7-timeline-item-subtitle-line-height: inherit;\n --f7-timeline-item-text-font-size: inherit;\n --f7-timeline-item-text-line-height: inherit;\n --f7-timeline-year-font-size: 16px;\n --f7-timeline-horizontal-item-padding: 12px;\n --f7-timeline-horizontal-item-date-border-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-timeline-divider-color: var(--f7-md-outline);\n --f7-timeline-item-text-color: var(--f7-md-on-surface);\n --f7-timeline-horizontal-item-border-color: var(--f7-md-outline);\n --f7-timeline-item-inner-bg-color: var(--f7-md-surface-1);\n --f7-timeline-item-time-text-color: var(--f7-md-on-surface-variant);\n}\n.timeline {\n box-sizing: border-box;\n margin: var(--f7-timeline-margin-vertical) 0;\n padding: 0 var(--f7-timeline-padding-horizontal);\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-right));\n}\n.block-strong .timeline {\n padding: 0;\n margin: 0;\n}\n.timeline-item {\n display: flex;\n justify-content: flex-start;\n overflow: hidden;\n box-sizing: border-box;\n position: relative;\n padding: 2px 0px var(--f7-timeline-padding-horizontal);\n}\n.timeline-item:last-child {\n padding-bottom: 2px;\n}\n.timeline-item-date {\n flex-shrink: 0;\n width: 50px;\n text-align: right;\n box-sizing: border-box;\n}\n.timeline-item-date small {\n font-size: 10px;\n}\n.timeline-item-content {\n margin: 2px;\n min-width: 0;\n position: relative;\n flex-shrink: 10;\n}\n.timeline-item-content .card,\n.timeline-item-content.card,\n.timeline-item-content .list,\n.timeline-item-content.list,\n.timeline-item-content .block,\n.timeline-item-content.block {\n margin: 0;\n width: 100%;\n}\n.timeline-item-content .card + .card,\n.timeline-item-content .list + .card,\n.timeline-item-content .block + .card,\n.timeline-item-content .card + .list,\n.timeline-item-content .list + .list,\n.timeline-item-content .block + .list,\n.timeline-item-content .card + .block,\n.timeline-item-content .list + .block,\n.timeline-item-content .block + .block {\n margin: var(--f7-timeline-inner-block-margin-vertical) 0 0;\n}\n.timeline-item-content p:first-child,\n.timeline-item-content ul:first-child,\n.timeline-item-content ol:first-child,\n.timeline-item-content h1:first-child,\n.timeline-item-content h2:first-child,\n.timeline-item-content h3:first-child,\n.timeline-item-content h4:first-child {\n margin-top: 0;\n}\n.timeline-item-content p:last-child,\n.timeline-item-content ul:last-child,\n.timeline-item-content ol:last-child,\n.timeline-item-content h1:last-child,\n.timeline-item-content h2:last-child,\n.timeline-item-content h3:last-child,\n.timeline-item-content h4:last-child {\n margin-bottom: 0;\n}\n.timeline-item-inner {\n background: var(--f7-timeline-item-inner-bg-color);\n box-sizing: border-box;\n border-radius: var(--f7-timeline-item-inner-border-radius);\n padding: 8px var(--f7-timeline-padding-horizontal);\n}\n.timeline-item-inner + .timeline-item-inner {\n margin-top: var(--f7-timeline-inner-block-margin-vertical);\n}\n.timeline-item-inner .block {\n padding: 0;\n color: inherit;\n}\n.timeline-item-inner .block-strong {\n padding-left: 0;\n padding-right: 0;\n margin: 0;\n}\n.timeline-item-inner .block-strong:before,\n.timeline-item-inner .block-strong:after {\n display: none !important;\n}\n.timeline-item-inner .list ul:before,\n.timeline-item-inner .list ul:after {\n display: none !important;\n}\n.timeline-item-divider {\n width: 1px;\n position: relative;\n width: 10px;\n height: 10px;\n background: var(--f7-timeline-divider-color);\n border-radius: 50%;\n flex-shrink: 0;\n margin: 3px var(--f7-timeline-divider-margin-horizontal) 0;\n}\n.timeline-item-divider:after,\n.timeline-item-divider:before {\n content: ' ';\n width: 1px;\n height: 100vh;\n position: absolute;\n left: 50%;\n background: inherit;\n transform: translate3d(-50%, 0, 0);\n}\n.timeline-item-divider:after {\n top: 100%;\n}\n.timeline-item-divider:before {\n bottom: 100%;\n}\n.timeline-item:last-child .timeline-item-divider:after {\n display: none;\n}\n.timeline-item:first-child .timeline-item-divider:before {\n display: none;\n}\n.timeline-item-time {\n font-size: var(--f7-timeline-item-time-font-size);\n margin-top: var(--f7-timeline-inner-block-margin-vertical);\n color: var(--f7-timeline-item-time-text-color);\n}\n.timeline-item-time:first-child,\n.timeline-item-time:last-child {\n margin-top: 0;\n}\n.timeline-item-title + .timeline-item-time {\n margin-top: 0;\n}\n.timeline-item-title {\n font-size: var(--f7-timeline-item-title-font-size);\n font-weight: var(--f7-timeline-item-title-font-weight);\n line-height: var(--f7-timeline-item-title-line-height);\n}\n.timeline-item-subtitle {\n font-size: var(--f7-timeline-item-subtitle-font-size);\n font-weight: var(--f7-timeline-item-subtitle-font-weight);\n line-height: var(--f7-timeline-item-subtitle-line-height);\n}\n.timeline-item-text {\n color: var(--f7-timeline-item-text-color);\n font-size: var(--f7-timeline-item-text-font-size);\n font-weight: var(--f7-timeline-item-text-font-weight);\n line-height: var(--f7-timeline-item-text-line-height);\n}\n.timeline-sides .timeline-item-right,\n.timeline-sides .timeline-item {\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n}\n.timeline-sides .timeline-item-right .timeline-item-date,\n.timeline-sides .timeline-item .timeline-item-date {\n text-align: left;\n}\n.timeline-sides .timeline-item-left,\n.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n}\n.timeline-sides .timeline-item-left .timeline-item-date,\n.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: right;\n}\n@media (min-width: 480px) {\n .xsmall-sides .timeline-item-right,\n .xsmall-sides .timeline-item {\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .xsmall-sides .timeline-item-right .timeline-item-date,\n .xsmall-sides .timeline-item .timeline-item-date {\n text-align: left;\n }\n .xsmall-sides .timeline-item-left,\n .xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .xsmall-sides .timeline-item-left .timeline-item-date,\n .xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: right;\n }\n}\n@media (min-width: 568px) {\n .small-sides .timeline-item-right,\n .small-sides .timeline-item {\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .small-sides .timeline-item-right .timeline-item-date,\n .small-sides .timeline-item .timeline-item-date {\n text-align: left;\n }\n .small-sides .timeline-item-left,\n .small-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .small-sides .timeline-item-left .timeline-item-date,\n .small-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: right;\n }\n}\n@media (min-width: 768px) {\n .medium-sides .timeline-item-right,\n .medium-sides .timeline-item {\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .medium-sides .timeline-item-right .timeline-item-date,\n .medium-sides .timeline-item .timeline-item-date {\n text-align: left;\n }\n .medium-sides .timeline-item-left,\n .medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .medium-sides .timeline-item-left .timeline-item-date,\n .medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: right;\n }\n}\n@media (min-width: 1024px) {\n .large-sides .timeline-item-right,\n .large-sides .timeline-item {\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .large-sides .timeline-item-right .timeline-item-date,\n .large-sides .timeline-item .timeline-item-date {\n text-align: left;\n }\n .large-sides .timeline-item-left,\n .large-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .large-sides .timeline-item-left .timeline-item-date,\n .large-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: right;\n }\n}\n@media (min-width: 1200px) {\n .xlarge-sides .timeline-item-right,\n .xlarge-sides .timeline-item {\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .xlarge-sides .timeline-item-right .timeline-item-date,\n .xlarge-sides .timeline-item .timeline-item-date {\n text-align: left;\n }\n .xlarge-sides .timeline-item-left,\n .xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .xlarge-sides .timeline-item-left .timeline-item-date,\n .xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: right;\n }\n}\n.timeline-horizontal {\n height: 100%;\n display: flex;\n padding: 0;\n margin: 0;\n position: relative;\n padding-left: var(--f7-safe-area-left);\n padding-right: 0;\n}\n.timeline-horizontal .timeline-item {\n display: block;\n width: 100/3vw;\n margin: 0;\n padding: 0;\n flex-shrink: 0;\n position: relative;\n height: 100%;\n padding-top: var(--f7-timeline-horizontal-date-height) !important;\n padding-bottom: var(--f7-timeline-horizontal-item-padding);\n}\n.timeline-horizontal .timeline-item:after {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: 0;\n bottom: auto;\n left: auto;\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-horizontal .timeline-item-date {\n padding: 0px var(--f7-timeline-horizontal-item-padding);\n width: auto;\n text-align: left;\n line-height: var(--f7-timeline-horizontal-date-height);\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: var(--f7-timeline-horizontal-date-height);\n background-color: var(--f7-bars-bg-color);\n color: var(--f7-bars-text-color);\n text-align: right;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .timeline-horizontal .timeline-item-date {\n background-color: rgba(var(--f7-bars-bg-color-rgb), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.timeline-horizontal .timeline-item-date:after {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-date-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-horizontal .timeline-item-content {\n padding: var(--f7-timeline-horizontal-item-padding);\n height: calc(100vw - var(--f7-timeline-horizontal-item-padding));\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n margin: 0;\n}\n.timeline-horizontal .timeline-item-divider {\n display: none;\n}\n.timeline-horizontal > .timeline-item:last-child:after,\n.timeline-horizontal .timeline-month:last-child .timeline-item:last-child:after {\n display: none !important;\n}\n.timeline-horizontal.timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n}\n.timeline-horizontal.timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n}\n.timeline-horizontal.timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n}\n.timeline-horizontal.timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n}\n.timeline-horizontal.timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n}\n.timeline-horizontal.timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n}\n.timeline-horizontal.timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n}\n.timeline-horizontal.timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n}\n.timeline-horizontal.timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n}\n.timeline-horizontal.timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n}\n.timeline-horizontal.timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n}\n.timeline-horizontal.timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n}\n.timeline-horizontal.timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n}\n.timeline-horizontal.timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n}\n.timeline-horizontal.timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n}\n.timeline-horizontal.timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n}\n.timeline-horizontal.timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n}\n.timeline-horizontal.timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n}\n.timeline-horizontal.timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n}\n.timeline-horizontal.timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n}\n@media (min-width: 480px) {\n .timeline-horizontal.xsmall-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.xsmall-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.xsmall-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.xsmall-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.xsmall-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.xsmall-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.xsmall-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.xsmall-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.xsmall-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.xsmall-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.xsmall-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.xsmall-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.xsmall-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.xsmall-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.xsmall-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.xsmall-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.xsmall-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.xsmall-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.xsmall-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.xsmall-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 568px) {\n .timeline-horizontal.small-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.small-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.small-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.small-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.small-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.small-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.small-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.small-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.small-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.small-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.small-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.small-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.small-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.small-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.small-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.small-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.small-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.small-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.small-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.small-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 768px) {\n .timeline-horizontal.medium-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.medium-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.medium-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.medium-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.medium-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.medium-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.medium-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.medium-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.medium-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.medium-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.medium-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.medium-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.medium-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.medium-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.medium-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.medium-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.medium-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.medium-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.medium-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.medium-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 1024px) {\n .timeline-horizontal.large-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.large-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.large-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.large-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.large-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.large-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.large-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.large-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.large-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.large-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.large-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.large-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.large-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.large-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.large-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.large-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.large-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.large-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.large-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.large-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 1200px) {\n .timeline-horizontal.xlarge-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.xlarge-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.xlarge-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.xlarge-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.xlarge-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.xlarge-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.xlarge-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.xlarge-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.xlarge-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.xlarge-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.xlarge-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.xlarge-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.xlarge-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.xlarge-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.xlarge-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.xlarge-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.xlarge-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.xlarge-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.xlarge-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.xlarge-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n.timeline-year {\n padding-top: var(--f7-timeline-year-height);\n}\n.timeline-year:after {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: 0;\n bottom: auto;\n left: auto;\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-year:last-child:after {\n display: none !important;\n}\n.timeline-month {\n padding-top: var(--f7-timeline-month-height);\n}\n.timeline-month .timeline-item:before {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-year,\n.timeline-month {\n display: flex;\n flex-shrink: 0;\n position: relative;\n box-sizing: border-box;\n height: 100%;\n}\n.timeline-year-title {\n line-height: var(--f7-timeline-year-height);\n height: var(--f7-timeline-year-height);\n font-size: var(--f7-timeline-year-font-size);\n font-weight: var(--f7-timeline-year-font-weight);\n}\n.timeline-month-title {\n line-height: var(--f7-timeline-month-height);\n height: var(--f7-timeline-month-height);\n font-size: var(--f7-timeline-month-font-size);\n font-weight: var(--f7-timeline-month-font-weight);\n}\n.timeline-year-title,\n.timeline-month-title {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n box-sizing: border-box;\n padding: 0 var(--f7-timeline-horizontal-item-padding);\n background-color: var(--f7-bars-bg-color);\n color: var(--f7-bars-text-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .timeline-year-title,\n .ios-translucent-bars .timeline-month-title {\n background-color: rgba(var(--f7-bars-bg-color-rgb), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.timeline-year-title span,\n.timeline-month-title span {\n display: inline-block;\n position: sticky;\n right: calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-right));\n}\n.timeline-month-title span {\n margin-top: -2px;\n}\n.timeline-year:first-child .timeline-year-title,\n.timeline-year:first-child .timeline-month:first-child .timeline-month-title,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-month-title {\n left: calc(var(--f7-safe-area-left) * -1);\n right: 0;\n width: auto;\n}\n.timeline-horizontal .timeline-item:first-child,\n.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-item:first-child,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-month-title + .timeline-item {\n overflow: visible;\n}\n.timeline-horizontal .timeline-item:first-child .timeline-item-date,\n.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child .timeline-item-date,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-item:first-child .timeline-item-date,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-month-title + .timeline-item .timeline-item-date {\n width: auto;\n padding-left: calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-left));\n left: calc(0px - var(--f7-safe-area-left));\n right: 0;\n}\n.timeline-year:last-child .timeline-year-title,\n.timeline-year:last-child .timeline-month:last-child .timeline-month-title {\n width: auto;\n right: calc(0px - var(--f7-safe-area-right));\n}\n.timeline-horizontal .timeline-item:last-child,\n.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child {\n overflow: visible;\n}\n.timeline-horizontal .timeline-item:last-child .timeline-item-date,\n.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child .timeline-item-date {\n width: auto;\n right: calc(0px - var(--f7-safe-area-right));\n left: 0;\n}\n.ios .block-strong .timeline-item-inner {\n border-radius: 3px;\n border: 1px solid rgba(0, 0, 0, 0.1);\n}\n.ios .timeline-year-title span {\n margin-top: 3px;\n}\n.md .timeline-year-title span {\n margin-top: 2px;\n}\n/* === Tabs === */\n.tabs .tab {\n display: none;\n}\n.tabs .tab-active {\n display: block;\n}\n.tabs-animated-wrap {\n position: relative;\n width: 100%;\n overflow: hidden;\n height: 100%;\n}\n.tabs-animated-wrap > .tabs {\n display: flex;\n height: 100%;\n transition-duration: 300ms;\n}\n.tabs-animated-wrap > .tabs > .tab {\n width: 100%;\n display: block;\n flex-shrink: 0;\n}\n.tabs-animated-wrap.not-animated > .tabs {\n transition-duration: 0ms;\n}\nswiper-container.tabs {\n height: 100%;\n}\nswiper-container.tabs > .tab {\n display: block;\n touch-action: pan-y;\n}\n.page > .tabs {\n height: 100%;\n}\n/* === Panels === */\n:root {\n --f7-panel-width: 260px;\n --f7-panel-backdrop-bg-color: rgba(0, 0, 0, 0.3);\n /*\n --f7-panel-left-width: var(--f7-panel-width);\n --f7-panel-right-width: var(--f7-panel-width);\n --f7-panel-left-collapsed-width: var(--f7-panel-collapsed-width);\n --f7-panel-right-collapsed-width: var(--f7-panel-collapsed-width);\n */\n --f7-panel-bg-color: #fff;\n}\n:root .dark,\n:root.dark {\n --f7-panel-bg-color: #000;\n}\n.ios {\n --f7-panel-collapsed-width: 58px;\n --f7-panel-transition-duration: 400ms;\n --f7-panel-transition-timing-function: initial;\n}\n.md {\n --f7-panel-collapsed-width: 60px;\n --f7-panel-transition-duration: 400ms;\n --f7-panel-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n}\n.panel-backdrop {\n position: absolute;\n left: 0;\n top: 0px;\n width: 100%;\n height: 100%;\n opacity: 0;\n z-index: 5999;\n visibility: hidden;\n pointer-events: none;\n transform: translate3d(0, 0, 0);\n background-color: var(--f7-panel-backdrop-bg-color);\n transition-property: transform, opacity;\n transition-duration: var(--f7-panel-transition-duration);\n}\n.panel-backdrop .with-panel,\n.panel-backdrop .with-panel-closing {\n visibility: visible;\n}\n.panel-backdrop.not-animated {\n transition-duration: 0ms !important;\n}\n.panel {\n z-index: 1000;\n box-sizing: border-box;\n position: absolute;\n top: 0px;\n height: 100%;\n transform: translate3d(0, 0, 0);\n width: var(--f7-panel-width);\n background-color: var(--f7-panel-bg-color);\n overflow: visible;\n transition-property: transform;\n transition-duration: var(--f7-panel-transition-duration);\n}\n.panel:not(.panel-in):not(.panel-out):not(.panel-in-breakpoint):not(.panel-in-collapsed):not(\n .panel-in-swipe\n ) {\n display: none;\n}\n.panel:after {\n pointer-events: none;\n opacity: 0;\n z-index: 5999;\n position: absolute;\n content: '';\n top: 0;\n width: 20px;\n height: 100%;\n transition-property: transform, opacity;\n transition-duration: var(--f7-panel-transition-duration);\n}\n.panel.not-animated,\n.panel.not-animated:after {\n transition-duration: 0ms !important;\n}\n.panel.panel-reveal.not-animated ~ .views,\n.panel.panel-reveal.not-animated ~ .view {\n transition-duration: 0ms !important;\n}\n.panel.panel-resizing {\n -webkit-user-select: none;\n user-select: none;\n}\n.panel.panel-resizing,\n.panel.panel-resizing:after,\n.panel.panel-resizing ~ .views,\n.panel.panel-resizing ~ .view {\n transition-duration: 0ms !important;\n}\n.panel-cover,\n.panel-floating {\n z-index: 6000;\n}\n.panel-floating {\n overflow: hidden;\n border-radius: 16px;\n height: auto;\n top: calc(8px + var(--f7-safe-area-top, 0px));\n bottom: calc(8px + var(--f7-safe-area-bottom, 0px));\n}\n.panel-floating .views,\n.panel-floating .view {\n --f7-safe-area-top: 0px;\n --f7-safe-area-bottom: 0px;\n}\n.page .panel-floating {\n top: calc(8px + var(--f7-page-navbar-offset, 0px));\n bottom: calc(8px + var(--f7-safe-area-bottom, 0px));\n}\n.page .panel-floating .page {\n --f7-page-navbar-offset: 0px;\n}\n.page .panel-floating .navbar ~ *,\n.page .panel-floating .navbars ~ * {\n --f7-page-navbar-offset: calc(var(--f7-navbar-height));\n}\n.panel-left {\n left: 0;\n width: var(--f7-panel-left-width, var(--f7-panel-width));\n}\n.panel-left.panel-cover,\n.panel-left.panel-floating,\n.panel-left.panel-push {\n transform: translate3d(calc(-1 * var(--f7-panel-left-width, var(--f7-panel-width))), 0, 0);\n}\n.panel-right {\n right: 0;\n width: var(--f7-panel-right-width, var(--f7-panel-width));\n}\n.panel-right.panel-cover,\n.panel-right.panel-floating,\n.panel-right.panel-push {\n transform: translate3d(var(--f7-panel-right-width, var(--f7-panel-width)), 0, 0);\n}\n.panel-in-breakpoint {\n transform: translate3d(0, 0, 0) !important;\n transition-duration: 0ms;\n}\n.panel-in-breakpoint:after {\n display: none;\n}\n.panel-in-breakpoint.panel-cover,\n.panel-in-breakpoint.panel-floating {\n z-index: 5900;\n}\n.panel,\n.panel-backdrop {\n transition-timing-function: var(--f7-panel-transition-timing-function);\n}\nhtml.with-panel-left-reveal .views,\nhtml.with-panel-right-reveal .views,\nhtml.with-panel-left-push .views,\nhtml.with-panel-right-push .views,\nhtml.with-panel-closing .views,\nhtml.with-panel-left-reveal .framework7-root > .view,\nhtml.with-panel-right-reveal .framework7-root > .view,\nhtml.with-panel-left-push .framework7-root > .view,\nhtml.with-panel-right-push .framework7-root > .view,\nhtml.with-panel-closing .framework7-root > .view {\n transition-duration: var(--f7-panel-transition-duration);\n transition-property: transform;\n transition-timing-function: var(--f7-panel-transition-timing-function);\n}\nhtml.with-panel .framework7-root > .views .page-content,\nhtml.with-panel .framework7-root > .view .page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\nhtml.with-panel-left-reveal .views,\nhtml.with-panel-left-push .views,\nhtml.with-panel-left-reveal .framework7-root > .view,\nhtml.with-panel-left-push .framework7-root > .view {\n transform: translate3d(var(--f7-panel-left-width, var(--f7-panel-width)), 0, 0);\n}\nhtml.with-panel-right-reveal .views,\nhtml.with-panel-right-push .views,\nhtml.with-panel-right-reveal .framework7-root > .view,\nhtml.with-panel-right-push .framework7-root > .view {\n transform: translate3d(calc(-1 * var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\n.page > .panel-backdrop {\n z-index: 290;\n}\n.page > .panel-reveal,\n.page .panel-push {\n z-index: 1;\n}\n.page > .panel-cover,\n.page > .panel-floating {\n z-index: 300;\n}\n.page.with-panel-left-reveal > .page-content,\n.page.with-panel-right-reveal > .page-content,\n.page.with-panel-left-push > .page-content,\n.page.with-panel-right-push > .page-content,\n.page.with-panel-closing > .page-content,\n.page.with-panel-left-reveal > .tabs,\n.page.with-panel-right-reveal > .tabs,\n.page.with-panel-left-push > .tabs,\n.page.with-panel-right-push > .tabs,\n.page.with-panel-closing > .tabs {\n transition-duration: var(--f7-panel-transition-duration);\n transition-property: transform;\n transition-timing-function: var(--f7-panel-transition-timing-function);\n}\n.page.with-panel-left-reveal > .page-content,\n.page.with-panel-left-push > .page-content,\n.page.with-panel-left-reveal > .tabs,\n.page.with-panel-left-push > .tabs {\n transform: translate3d(var(--f7-panel-left-width, var(--f7-panel-width)), 0, 0);\n}\n.page.with-panel-right-reveal > .page-content,\n.page.with-panel-right-push > .page-content,\n.page.with-panel-right-reveal > .tabs,\n.page.with-panel-right-push > .tabs {\n transform: translate3d(calc(-1 * var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\n.with-panel-closing .panel-backdrop-in {\n visibility: visible;\n pointer-events: auto;\n opacity: 0;\n}\n.with-panel-left-reveal .panel-backdrop-in,\n.with-panel-right-reveal .panel-backdrop-in,\n.with-panel-left-cover .panel-backdrop-in,\n.with-panel-right-cover .panel-backdrop-in,\n.with-panel-left-floating .panel-backdrop-in,\n.with-panel-right-floating .panel-backdrop-in,\n.with-panel-left-push .panel-backdrop-in,\n.with-panel-right-push .panel-backdrop-in {\n visibility: visible;\n pointer-events: auto;\n opacity: 1;\n}\n.with-panel-left-reveal .panel-backdrop-in,\n.with-panel-left-push .panel-backdrop-in {\n transform: translate3d(var(--f7-panel-left-width, var(--f7-panel-width)), 0, 0);\n}\n.with-panel-right-reveal .panel-backdrop-in,\n.with-panel-right-push .panel-backdrop-in {\n transform: translate3d(calc(-1 * var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\n.with-panel-left-cover .panel-left,\n.with-panel-left-push .panel-left {\n transform: translate3d(0px, 0, 0);\n}\n.with-panel-left-floating .panel-left {\n transform: translate3d(8px, 0, 0);\n}\n.with-panel-right-cover .panel-right,\n.with-panel-right-push .panel-right {\n transform: translate3d(0px, 0, 0);\n}\n.with-panel-right-floating .panel-right {\n transform: translate3d(-8px, 0, 0);\n}\n.panel-resizable {\n max-width: 100%;\n}\n.panel-resize-handler {\n position: absolute;\n top: 0;\n height: 100%;\n width: 6px;\n cursor: col-resize;\n z-index: 6000;\n display: none;\n}\n.panel-resizable .panel-resize-handler {\n display: block;\n}\n.panel-left.panel-cover .panel-resize-handler,\n.panel-left.panel-floating .panel-resize-handler {\n right: -3px;\n}\n.panel-left.panel-reveal .panel-resize-handler,\n.panel-left.panel-push .panel-resize-handler {\n right: 0;\n}\n.panel-right.panel-cover .panel-resize-handler,\n.panel-right.panel-floating .panel-resize-handler {\n left: -3px;\n}\n.panel-right.panel-reveal .panel-resize-handler,\n.panel-right.panel-push .panel-resize-handler {\n left: 0;\n}\n.panel-left.panel-in-collapsed ~ .views,\n.panel-left.panel-in-collapsed ~ .view,\n.panel-left.panel-in-collapsed ~ .page-content,\n.panel-left.panel-in-collapsed ~ .tabs {\n margin-left: var(--f7-panel-left-collapsed-width, var(--f7-panel-collapsed-width));\n}\n.page.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .page-content,\n.page.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .tabs,\nhtml.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .views,\nhtml.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .view {\n transform: translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width)) - var(--f7-panel-left-collapsed-width, var(--f7-panel-collapsed-width))), 0, 0);\n}\n.panel-right.panel-in-collapsed ~ .views,\n.panel-right.panel-in-collapsed ~ .view,\n.panel-right.panel-in-collapsed ~ .page-content,\n.panel-right.panel-in-collapsed ~ .tabs {\n margin-right: var(--f7-panel-right-collapsed-width, var(--f7-panel-collapsed-width));\n}\n.page.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .page-content,\n.page.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .tabs,\nhtml.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .views,\nhtml.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .view {\n transform: translate3d(calc(var(--f7-panel-right-collapsed-width, var(--f7-panel-collapsed-width)) - var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\nhtml.with-modal-popup-push .framework7-root,\nhtml.with-modal-popup-push-closing .framework7-root {\n --f7-panelPushScale: var(--f7-popup-push-scale);\n --f7-panelPushTransitionDuration: var(--f7-popup-transition-duration);\n --f7-panelPushTransitionTimingFunction: var(--f7-popup-transition-timing-function);\n --f7-panelPushBorderRadius: var(--f7-popup-push-border-radius);\n}\nhtml.with-modal-sheet-push .framework7-root,\nhtml.with-modal-sheet-push-closing .framework7-root {\n --f7-panelPushScale: var(--f7-sheet-push-scale);\n --f7-panelPushTransitionDuration: var(--f7-sheet-transition-duration);\n --f7-panelPushTransitionTimingFunction: var(--f7-sheet-transition-timing-function);\n --f7-panelPushBorderRadius: var(--f7-sheet-push-border-radius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in,\nhtml.with-modal-sheet-push .framework7-root > .panel-in,\nhtml.with-modal-popup-push .framework7-root > .panel-out,\nhtml.with-modal-sheet-push .framework7-root > .panel-out {\n transition-duration: var(--f7-panelPushTransitionDuration);\n transition-timing-function: var(--f7-panelPushTransitionTimingFunction);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-left {\n transform: scale(var(--f7-panelPushScale, 1));\n transform-origin: 50vw center;\n border-top-left-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-left .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-left .view,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-left .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-left .view {\n border-top-left-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-right {\n transform: scale(var(--f7-panelPushScale, 1));\n transform-origin: calc(var(--f7-panel-left-width, var(--f7-panel-width)) - 50vw) center;\n border-top-right-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-right .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-right .view,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-right .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-right .view {\n border-top-right-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-cover.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-cover.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-cover.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-cover.panel-left {\n transform: translate3d(calc(-1 * var(--f7-panel-left-width, var(--f7-panel-width))), 0, 0px);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-cover.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-cover.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-cover.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-cover.panel-right {\n transform: translate3d(var(--f7-panel-right-width, var(--f7-panel-width)), 0, 0px);\n}\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in {\n transition-duration: var(--f7-panelPushTransitionDuration);\n transition-timing-function: var(--f7-panelPushTransitionTimingFunction);\n}\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-push.panel-left,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-push.panel-left {\n transform-origin: 50vw center;\n}\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-push.panel-right,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-push.panel-right {\n transform-origin: calc(var(--f7-panel-right-width, var(--f7-panel-width)) - 50vw) center;\n}\n.md .panel-cover {\n overflow: hidden;\n}\n.md .panel-cover.panel-left {\n border-radius: 0 16px 16px 0;\n}\n.md .panel-cover.panel-right {\n border-radius: 16px 0 0 16px;\n}\n/* === Card === */\n:root {\n --f7-card-margin-horizontal: 16px;\n --f7-card-margin-vertical: 16px;\n --f7-card-content-padding-horizontal: 16px;\n --f7-card-content-padding-vertical: 16px;\n --f7-card-font-size: inherit;\n --f7-card-header-text-color: inherit;\n --f7-card-header-font-weight: 400;\n --f7-card-header-padding-horizontal: 16px;\n --f7-card-footer-font-weight: 400;\n --f7-card-footer-font-size: inherit;\n --f7-card-footer-padding-horizontal: 16px;\n --f7-card-expandable-font-size: 16px;\n --f7-card-expandable-tablet-width: 670px;\n --f7-card-expandable-tablet-height: 670px;\n}\n.ios {\n --f7-card-border-radius: 8px;\n --f7-card-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.2);\n --f7-card-header-font-size: 17px;\n --f7-card-header-padding-vertical: 10px;\n --f7-card-header-min-height: 44px;\n --f7-card-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-card-footer-padding-vertical: 10px;\n --f7-card-footer-min-height: 44px;\n --f7-card-expandable-margin-horizontal: 20px;\n --f7-card-expandable-margin-vertical: 30px;\n --f7-card-expandable-box-shadow: 0px 20px 40px rgba(0, 0, 0, 0.3);\n --f7-card-expandable-border-radius: 16px;\n --f7-card-expandable-tablet-border-radius: 16px;\n --f7-card-expandable-header-font-size: 27px;\n --f7-card-expandable-header-font-weight: bold;\n --f7-card-text-color: inherit;\n --f7-card-bg-color: #fff;\n --f7-card-expandable-bg-color: #fff;\n --f7-card-outline-border-color: rgba(0, 0, 0, 0.12);\n --f7-card-header-border-color: rgba(0, 0, 0, 0.1);\n --f7-card-footer-border-color: rgba(0, 0, 0, 0.1);\n}\n.ios .dark,\n.ios.dark {\n --f7-card-bg-color: #1c1c1d;\n --f7-card-expandable-bg-color: #1c1c1d;\n --f7-card-outline-border-color: rgba(255, 255, 255, 0.15);\n --f7-card-header-border-color: rgba(255, 255, 255, 0.15);\n --f7-card-footer-border-color: rgba(255, 255, 255, 0.15);\n --f7-card-footer-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-card-border-radius: 16px;\n --f7-card-box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2),\n 0px 1px 1px 0px rgba(0, 0, 0, 0.14),\n 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\n --f7-card-header-font-size: 22px;\n --f7-card-header-padding-vertical: 16px;\n --f7-card-header-min-height: 48px;\n --f7-card-footer-padding-vertical: 16px;\n --f7-card-footer-min-height: 48px;\n --f7-card-expandable-margin-horizontal: 12px;\n --f7-card-expandable-margin-vertical: 24px;\n --f7-card-expandable-box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2),\n 0px 10px 14px 1px rgba(0, 0, 0, 0.14),\n 0px 4px 18px 3px rgba(0, 0, 0, 0.12);\n --f7-card-expandable-border-radius: 16px;\n --f7-card-expandable-tablet-border-radius: 16px;\n --f7-card-expandable-header-font-size: 22px;\n --f7-card-expandable-header-font-weight: 500;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-card-bg-color: var(--f7-md-surface-1);\n --f7-card-expandable-bg-color: var(--f7-md-surface-1);\n --f7-card-outline-border-color: var(--f7-md-outline);\n --f7-card-header-border-color: var(--f7-md-outline);\n --f7-card-footer-border-color: var(--f7-md-outline);\n --f7-card-text-color: var(--f7-md-on-surface);\n --f7-card-footer-text-color: var(--f7-md-on-surface-variant);\n}\n.cards-list > ul:before,\n.card .list > ul:before,\n.cards-list > ul:after,\n.card .list > ul:after {\n display: none !important;\n}\n.cards-list ul,\n.card .list ul {\n background: none;\n}\n.card {\n background: var(--f7-card-bg-color);\n position: relative;\n border-radius: var(--f7-card-border-radius);\n font-size: var(--f7-card-font-size);\n margin-top: var(--f7-card-margin-vertical);\n margin-bottom: var(--f7-card-margin-vertical);\n margin-left: calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-left));\n margin-right: calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-right));\n color: var(--f7-card-text-color);\n}\n.card .list,\n.card .block {\n margin: 0;\n}\n.row:not(.no-gap) .col > .card {\n margin-left: 0;\n margin-right: 0;\n}\n.card-raised {\n box-shadow: var(--f7-card-box-shadow);\n}\n.card-outline,\n.ios .card-outline-ios,\n.md .card-outline-md {\n border: 1px solid var(--f7-card-outline-border-color);\n}\n.card-content {\n position: relative;\n}\n.card-content-padding {\n position: relative;\n padding: var(--f7-card-content-padding-vertical) var(--f7-card-content-padding-horizontal);\n}\n.card-content-padding > .list,\n.card-content-padding > .block {\n margin: calc(-1 * var(--f7-card-content-padding-vertical)) calc(-1 * var(--f7-card-content-padding-horizontal));\n}\n.card-content-padding > p:first-child {\n margin-top: 0;\n}\n.card-content-padding > p:last-child {\n margin-bottom: 0;\n}\n.card-header {\n min-height: var(--f7-card-header-min-height);\n color: var(--f7-card-header-text-color);\n font-size: var(--f7-card-header-font-size);\n font-weight: var(--f7-card-header-font-weight);\n padding: var(--f7-card-header-padding-vertical) var(--f7-card-header-padding-horizontal);\n}\n.card-header.card-header-divider,\n.card-header-divider .card-header,\n.card-dividers .card-header {\n border-bottom: 1px solid var(--f7-card-header-border-color);\n}\n.card-footer {\n min-height: var(--f7-card-footer-min-height);\n color: var(--f7-card-footer-text-color);\n font-size: var(--f7-card-footer-font-size);\n font-weight: var(--f7-card-footer-font-weight);\n padding: var(--f7-card-footer-padding-vertical) var(--f7-card-footer-padding-horizontal);\n}\n.card-footer.card-footer-divider,\n.card-footer-divider .card-footer,\n.card-dividers .card-footer {\n border-top: 1px solid var(--f7-card-header-border-color);\n}\n.card-footer a.link {\n overflow: hidden;\n}\n.card-header,\n.card-footer {\n position: relative;\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.card-header[valign='top'],\n.card-footer[valign='top'] {\n align-items: flex-start;\n}\n.card-header[valign='bottom'],\n.card-footer[valign='bottom'] {\n align-items: flex-end;\n}\n.card-header a.link,\n.card-footer a.link {\n position: relative;\n}\n.card-header a.link i.icon,\n.card-footer a.link i.icon {\n display: block;\n}\n.card-header a.icon-only,\n.card-footer a.icon-only {\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 0;\n}\n.card-header {\n border-radius: var(--f7-card-border-radius) var(--f7-card-border-radius) 0 0;\n}\n.card-footer {\n border-radius: 0 0 var(--f7-card-border-radius) var(--f7-card-border-radius);\n}\n.card-expandable {\n overflow: hidden;\n height: 300px;\n background: var(--f7-card-expandable-bg-color);\n position: relative;\n transform-origin: center center;\n transition-property: transform, border-radius;\n border-radius: var(--f7-card-expandable-border-radius);\n z-index: 2;\n transition-duration: 200ms;\n margin-left: calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-left));\n margin-right: calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-right));\n margin-top: var(--f7-card-expandable-margin-vertical);\n margin-bottom: var(--f7-card-expandable-margin-vertical);\n font-size: var(--f7-card-expandable-font-size);\n}\n.card-expandable.card-raised {\n box-shadow: var(--f7-card-expandable-box-shadow);\n}\n.card-expandable:not(.card-opened) {\n -webkit-user-select: none;\n user-select: none;\n}\n.card-expandable.card-no-transition {\n transition-duration: 0ms;\n}\n.card-expandable.card-expandable-animate-width .card-content {\n transition-property: width, transform;\n width: 100%;\n}\n.card-expandable.active-state {\n transform: scale(0.97) translate3d(0, 0, 0);\n}\n.card-expandable .card-opened-fade-in,\n.card-expandable .card-opened-fade-out {\n transition-duration: 400ms;\n}\n.card-expandable .card-opened-fade-in {\n opacity: 0;\n pointer-events: none;\n}\n.card-expandable .card-content {\n position: absolute;\n top: 0;\n width: 100vw;\n height: 100vh;\n transform-origin: center top;\n overflow: hidden;\n transition-property: transform;\n box-sizing: border-box;\n pointer-events: none;\n right: 0;\n}\n.card-expandable .card-content .card-content-padding {\n padding-left: calc(var(--f7-safe-area-left) + var(--f7-card-content-padding-horizontal));\n padding-right: calc(var(--f7-safe-area-right) + var(--f7-card-content-padding-horizontal));\n}\n.card-expandable.card-opened {\n transition-duration: 0ms;\n}\n.card-expandable.card-opening,\n.card-expandable.card-closing,\n.card-expandable.card-transitioning {\n transition-duration: 400ms;\n}\n.card-expandable.card-opening .card-content {\n transition-duration: 300ms;\n}\n.card-expandable.card-closing .card-content {\n transition-duration: 500ms;\n}\n.card-expandable.card-opening,\n.card-expandable.card-opened,\n.card-expandable.card-closing {\n z-index: 300;\n}\n.card-expandable.card-opening,\n.card-expandable.card-opened {\n border-radius: 0;\n}\n.card-expandable.card-opening .card-opened-fade-in,\n.card-expandable.card-opened .card-opened-fade-in {\n opacity: 1;\n pointer-events: auto;\n}\n.card-expandable.card-opening .card-opened-fade-out,\n.card-expandable.card-opened .card-opened-fade-out {\n opacity: 0;\n pointer-events: none;\n}\n.card-expandable.card-opened .card-content {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n pointer-events: auto;\n}\n.card-expandable .card-header {\n font-size: var(--f7-card-expandable-header-font-size);\n font-weight: var(--f7-card-expandable-header-font-weight);\n}\n.card-prevent-open {\n pointer-events: auto;\n}\n.card-expandable-size {\n width: 0;\n height: 0;\n position: absolute;\n left: 0;\n top: 0;\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n}\n@media (min-width: 768px) and (min-height: 670px) {\n .card-expandable:not(.card-tablet-fullscreen) {\n max-width: var(--f7-card-expandable-tablet-width);\n }\n .card-expandable:not(.card-tablet-fullscreen).card-opened,\n .card-expandable:not(.card-tablet-fullscreen).card-opening {\n border-radius: var(--f7-card-expandable-tablet-border-radius);\n }\n .card-expandable:not(.card-tablet-fullscreen):not(.card-expandable-animate-width) .card-content {\n width: var(--f7-card-expandable-tablet-width);\n }\n .card-expandable:not(.card-tablet-fullscreen) .card-expandable-size {\n width: var(--f7-card-expandable-tablet-width);\n height: var(--f7-card-expandable-tablet-height);\n }\n}\n.page.page-with-card-opened .page-content {\n overflow: hidden;\n}\n.card-backdrop {\n position: fixed;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 299;\n pointer-events: none;\n background: rgba(0, 0, 0, 0.2);\n opacity: 0;\n}\n.card-backdrop-in {\n animation: card-backdrop-fade-in 400ms forwards;\n pointer-events: auto;\n}\n.card-backdrop-out {\n animation: card-backdrop-fade-out 400ms forwards;\n}\n@supports ((-webkit-backdrop-filter: blur(15px)) or (backdrop-filter: blur(15px))) {\n .card-backdrop {\n background: transparent;\n -webkit-backdrop-filter: blur(15px);\n backdrop-filter: blur(15px);\n }\n}\n@keyframes card-backdrop-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes card-backdrop-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n/* === Chips === */\n:root {\n --f7-chip-font-size: 14px;\n --f7-chip-media-font-size: 16px;\n --f7-chip-delete-button-color: #000;\n}\n:root .dark,\n:root.dark {\n --f7-chip-delete-button-color: #fff;\n}\n.ios {\n --f7-chip-height: 28px;\n --f7-chip-media-size: 28px;\n --f7-chip-padding-horizontal: 10px;\n --f7-chip-border-radius: 28px;\n --f7-chip-font-weight: normal;\n --f7-chip-outline-border-color: rgba(0, 0, 0, 0.12);\n --f7-chip-bg-color: rgba(0, 0, 0, 0.12);\n --f7-chip-text-color: #000;\n --f7-chip-outline-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-chip-bg-color: #333;\n --f7-chip-text-color: #fff;\n --f7-chip-outline-text-color: #fff;\n --f7-chip-outline-border-color: rgba(255, 255, 255, 0.12);\n}\n.md {\n --f7-chip-font-weight: 500;\n --f7-chip-media-size: 24px;\n --f7-chip-height: 32px;\n --f7-chip-padding-horizontal: 12px;\n --f7-chip-border-radius: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-chip-bg-color: var(--f7-md-secondary-container);\n --f7-chip-text-color: var(--f7-md-on-secondary-container);\n --f7-chip-outline-text-color: var(--f7-md-on-surface);\n --f7-chip-outline-border-color: var(--f7-md-outline);\n}\n.chip {\n padding-left: var(--f7-chip-padding-horizontal);\n padding-right: var(--f7-chip-padding-horizontal);\n font-weight: var(--f7-chip-font-weight);\n display: inline-flex;\n box-sizing: border-box;\n vertical-align: middle;\n align-items: center;\n margin: 2px 0;\n background-color: var(--f7-chip-bg-color);\n font-size: var(--f7-chip-font-size);\n color: var(--f7-chip-text-color);\n height: var(--f7-chip-height);\n line-height: var(--f7-chip-height);\n border-radius: var(--f7-chip-border-radius);\n position: relative;\n}\n.chip-media {\n border-radius: 50%;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--f7-chip-media-size);\n width: var(--f7-chip-media-size);\n border-radius: var(--f7-chip-media-size);\n text-align: center;\n line-height: var(--f7-chip-media-size);\n box-sizing: border-box;\n color: #fff;\n font-size: var(--f7-chip-media-font-size);\n vertical-align: middle;\n}\n.chip-media i.icon {\n font-size: calc(var(--f7-chip-media-size) - 8px);\n height: calc(var(--f7-chip-media-size) - 8px);\n}\n.chip-media img {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n border-radius: 50%;\n display: block;\n}\n.chip-media + .chip-label {\n margin-right: 4px;\n}\n.chip-label {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n position: relative;\n flex-shrink: 1;\n min-width: 0;\n}\n.chip-delete {\n text-align: center;\n cursor: pointer;\n flex-shrink: 0;\n background-repeat: no-repeat;\n width: 24px;\n height: 24px;\n color: var(--f7-chip-delete-button-color);\n opacity: 0.54;\n position: relative;\n}\n.chip-delete:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n line-height: 24px;\n}\n.chip .chip-delete.active-state {\n opacity: 1;\n}\n.chip-outline,\n.ios .chip-outline-ios,\n.md .chip-outline-md {\n border: 1px solid var(--f7-chip-outline-border-color);\n color: var(--f7-chip-outline-text-color);\n background: none;\n}\n.ios .chip[class*='color-'] {\n --f7-chip-bg-color: var(--f7-theme-color);\n --f7-chip-text-color: #fff;\n}\n.ios .chip-outline[class*='color-'],\n.ios .chip-outline-ios[class*='color-'] {\n --f7-chip-outline-border-color: var(--f7-theme-color);\n --f7-chip-outline-text-color: var(--f7-theme-color);\n}\n.ios .chip-media {\n margin-right: calc(-1 * var(--f7-chip-padding-horizontal));\n}\n.ios .chip-delete {\n margin-left: calc(-1 * var(--f7-chip-padding-horizontal));\n}\n.ios .chip-delete::after {\n content: 'delete_round_ios';\n}\n.ios .chip-delete:after {\n font-size: 10px;\n}\n.md .chip-media {\n margin-right: calc(-1 * var(--f7-chip-padding-horizontal) + 4px);\n}\n.md .chip-label + .chip-delete {\n margin-right: 4px;\n}\n.md .chip-delete {\n margin-left: calc(-1 * var(--f7-chip-padding-horizontal) + 4px);\n}\n.md .chip-delete::after {\n content: 'delete_round_md';\n font-size: 16px;\n}\n/* === Form === */\n/* === Input === */\n:root {\n --f7-input-bg-color: transparent;\n --f7-label-font-weight: 400;\n --f7-label-height: 16px;\n --f7-label-font-size: 12px;\n --f7-floating-label-scale: calc(16 / 12);\n --f7-input-padding-left: 0px;\n --f7-input-padding-right: 0px;\n --f7-input-error-text-color: #ff3b30;\n --f7-input-error-font-size: 12px;\n --f7-input-error-line-height: 1.4;\n --f7-input-error-font-weight: 400;\n --f7-input-info-font-size: 12px;\n --f7-input-info-line-height: 1.4;\n --f7-textarea-height: 100px;\n /*\n --f7-input-outline-focused-border-color: var(--f7-theme-color);\n --f7-input-outline-invalid-border-color: var(--f7-input-error-text-color);\n */\n}\n.ios {\n --f7-input-item-bg-color: transparent;\n --f7-input-item-border-radius: 0px;\n --f7-input-height: 40px;\n --f7-input-font-size: 16px;\n --f7-input-placeholder-color: #a9a9a9;\n --f7-textarea-padding-vertical: 8px;\n /*\n --f7-input-focused-border-color: var(--f7-list-item-border-color);\n --f7-input-invalid-border-color: var(--f7-list-item-border-color);\n --f7-input-invalid-text-color: var(--f7-input-error-text-color);\n */\n --f7-label-text-color: inherit;\n /*\n --f7-label-focused-text-color: var(--f7-label-text-color);\n --f7-label-invalid-text-color: var(--f7-label-text-color);\n */\n --f7-input-clear-button-size: 14px;\n --f7-input-outline-border-radius: 8px;\n --f7-input-text-color: #000000;\n --f7-input-info-text-color: rgba(0, 0, 0, 0.45);\n --f7-input-clear-button-color: rgba(0, 0, 0, 0.45);\n --f7-input-outline-border-color: #bbb;\n}\n.ios .dark,\n.ios.dark {\n --f7-input-text-color: #fff;\n --f7-input-info-text-color: rgba(255, 255, 255, 0.55);\n --f7-input-clear-button-color: rgba(255, 255, 255, 0.5);\n --f7-input-outline-border-color: #444;\n}\n.md {\n --f7-input-item-border-radius: 4px 4px 0 0;\n --f7-input-height: 24px;\n --f7-input-font-size: 16px;\n --f7-textarea-padding-vertical: 0px;\n --f7-input-outline-border-radius: 4px;\n /*\n --f7-input-focused-border-color: var(--f7-theme-color);\n --f7-input-invalid-border-color: var(--f7-input-error-text-color);\n --f7-input-invalid-text-color: var(--f7-input-text-color);\n */\n /*\n --f7-label-focused-text-color: var(--f7-theme-color);\n --f7-label-invalid-text-color: var(--f7-input-error-text-color );\n */\n --f7-floating-label-scale: calc(16 / 12);\n --f7-input-clear-button-size: 24px;\n --f7-input-info-text-color: rgba(0, 0, 0, 0.45);\n}\n.md .dark,\n.md.dark {\n --f7-input-info-text-color: rgba(255, 255, 255, 0.45);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-input-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-input-item-bg-color: var(--f7-md-surface-variant);\n --f7-input-border-color: var(--f7-md-outline);\n --f7-input-clear-button-color: var(--f7-md-on-surface-variant);\n --f7-input-outline-border-color: var(--f7-md-outline);\n --f7-input-text-color: var(--f7-md-on-surface);\n --f7-label-text-color: var(--f7-md-on-surface-variant);\n}\ninput[type='text'],\ninput[type='password'],\ninput[type='search'],\ninput[type='email'],\ninput[type='tel'],\ninput[type='url'],\ninput[type='date'],\ninput[type='month'],\ninput[type='datetime-local'],\ninput[type='time'],\ninput[type='number'],\nselect,\ntextarea {\n box-sizing: border-box;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n box-shadow: none;\n border-radius: 0;\n outline: 0;\n display: block;\n padding: 0;\n margin: 0;\n font-family: inherit;\n background: none;\n resize: none;\n font-size: inherit;\n color: inherit;\n}\ninput[type='text']:-internal-autofill-selected,\ninput[type='password']:-internal-autofill-selected,\ninput[type='search']:-internal-autofill-selected,\ninput[type='email']:-internal-autofill-selected,\ninput[type='tel']:-internal-autofill-selected,\ninput[type='url']:-internal-autofill-selected,\ninput[type='date']:-internal-autofill-selected,\ninput[type='month']:-internal-autofill-selected,\ninput[type='datetime-local']:-internal-autofill-selected,\ninput[type='time']:-internal-autofill-selected,\ninput[type='number']:-internal-autofill-selected,\nselect:-internal-autofill-selected,\ntextarea:-internal-autofill-selected {\n background-color: transparent !important;\n transition: background-color 5000s ease-in-out 0s !important;\n}\ninput[type='text']:-webkit-autofill, input[type='password']:-webkit-autofill, input[type='search']:-webkit-autofill, input[type='email']:-webkit-autofill, input[type='tel']:-webkit-autofill, input[type='url']:-webkit-autofill, input[type='date']:-webkit-autofill, input[type='month']:-webkit-autofill, input[type='datetime-local']:-webkit-autofill, input[type='time']:-webkit-autofill, input[type='number']:-webkit-autofill, select:-webkit-autofill, textarea:-webkit-autofill {\n background-color: transparent !important;\n -webkit-transition: background-color 5000s ease-in-out 0s !important;\n transition: background-color 5000s ease-in-out 0s !important;\n}\ninput[type='text']:autofill,\ninput[type='password']:autofill,\ninput[type='search']:autofill,\ninput[type='email']:autofill,\ninput[type='tel']:autofill,\ninput[type='url']:autofill,\ninput[type='date']:autofill,\ninput[type='month']:autofill,\ninput[type='datetime-local']:autofill,\ninput[type='time']:autofill,\ninput[type='number']:autofill,\nselect:autofill,\ntextarea:autofill,\ninput[type='text']:-webkit-autofill-and-obscured,\ninput[type='password']:-webkit-autofill-and-obscured,\ninput[type='search']:-webkit-autofill-and-obscured,\ninput[type='email']:-webkit-autofill-and-obscured,\ninput[type='tel']:-webkit-autofill-and-obscured,\ninput[type='url']:-webkit-autofill-and-obscured,\ninput[type='date']:-webkit-autofill-and-obscured,\ninput[type='month']:-webkit-autofill-and-obscured,\ninput[type='datetime-local']:-webkit-autofill-and-obscured,\ninput[type='time']:-webkit-autofill-and-obscured,\ninput[type='number']:-webkit-autofill-and-obscured,\nselect:-webkit-autofill-and-obscured,\ntextarea:-webkit-autofill-and-obscured {\n background-color: transparent !important;\n -webkit-transition: background-color 5000s ease-in-out 0s !important;\n transition: background-color 5000s ease-in-out 0s !important;\n}\n.textarea-resizable-shadow {\n opacity: 0;\n position: absolute;\n z-index: -1000;\n pointer-events: none;\n left: -1000px;\n top: -1000px;\n visibility: hidden;\n}\n.list input[type='text'],\n.list input[type='password'],\n.list input[type='search'],\n.list input[type='email'],\n.list input[type='tel'],\n.list input[type='url'],\n.list input[type='date'],\n.list input[type='month'],\n.list input[type='datetime-local'],\n.list input[type='time'],\n.list input[type='number'],\n.list select {\n width: 100%;\n height: var(--f7-input-height);\n color: var(--f7-input-text-color);\n font-size: var(--f7-input-font-size);\n background-color: var(--f7-input-bg-color, transparent);\n padding-left: var(--f7-input-padding-left);\n padding-right: var(--f7-input-padding-right);\n}\n.list input[type='text']::placeholder,\n.list input[type='password']::placeholder,\n.list input[type='search']::placeholder,\n.list input[type='email']::placeholder,\n.list input[type='tel']::placeholder,\n.list input[type='url']::placeholder,\n.list input[type='date']::placeholder,\n.list input[type='month']::placeholder,\n.list input[type='datetime-local']::placeholder,\n.list input[type='time']::placeholder,\n.list input[type='number']::placeholder,\n.list select::placeholder {\n color: var(--f7-input-placeholder-color);\n}\n.list textarea {\n width: 100%;\n color: var(--f7-input-text-color);\n font-size: var(--f7-input-font-size);\n resize: none;\n line-height: 1.4;\n height: var(--f7-textarea-height);\n background-color: var(--f7-input-bg-color, transparent);\n padding-top: var(--f7-textarea-padding-vertical);\n padding-bottom: var(--f7-textarea-padding-vertical);\n padding-left: var(--f7-input-padding-left);\n padding-right: var(--f7-input-padding-right);\n}\n.list textarea::placeholder {\n color: var(--f7-input-placeholder-color);\n}\n.list textarea.resizable {\n height: calc(var(--f7-input-height) + var(--f7-textarea-padding-vertical) * 2);\n}\n.list input[type='time'],\n.list input[type='date'],\n.list input[type='month'],\n.list input[type='datetime-local'] {\n line-height: var(--f7-input-height);\n}\n.list input[type='date'],\n.list input[type='month'],\n.list input[type='datetime-local'] {\n text-align: right;\n flex-direction: row-reverse;\n width: auto;\n}\n.list .item-label,\n.list .item-floating-label {\n width: auto;\n vertical-align: top;\n flex-shrink: 0;\n font-size: var(--f7-label-font-size);\n font-weight: var(--f7-label-font-weight);\n line-height: var(--f7-label-height);\n color: var(--f7-label-text-color);\n transition-duration: 200ms;\n transition-property: transform, color;\n}\n.list .item-floating-label {\n color: var(--f7-input-placeholder-color);\n max-width: calc(100% / var(--f7-floating-label-scale));\n pointer-events: none;\n right: var(--f7-input-padding-right);\n transform-origin: right center;\n}\n.list .item-floating-label ~ .item-input-wrap input::placeholder,\n.list .item-floating-label ~ .item-input-wrap textarea::placeholder {\n opacity: 0;\n transition-duration: 100ms;\n}\n.list .item-floating-label ~ .item-input-wrap input.input-focused::placeholder,\n.list .item-floating-label ~ .item-input-wrap textarea.input-focused::placeholder {\n opacity: 1;\n transition-duration: 300ms;\n}\n.list .item-input-with-value .item-floating-label {\n color: var(--f7-label-text-color);\n}\n.list .item-input-with-value .item-floating-label,\n.list .item-input-focused .item-floating-label {\n transform: scale(1) translateY(0) !important;\n}\n.list .item-input-wrap {\n width: 100%;\n flex-shrink: 1;\n position: relative;\n}\n.item-input,\n.input {\n position: relative;\n}\n.item-input .item-inner {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n.item-input-error-message,\n.input-error-message {\n font-size: var(--f7-input-error-font-size);\n line-height: var(--f7-input-error-line-height);\n color: var(--f7-input-error-text-color);\n font-weight: var(--f7-input-error-font-weight);\n display: none;\n box-sizing: border-box;\n}\n.item-input-info,\n.input-info {\n font-size: var(--f7-input-info-font-size);\n line-height: var(--f7-input-info-line-height);\n color: var(--f7-input-info-text-color);\n}\n.item-input-invalid .item-input-error-message,\n.input-invalid .item-input-error-message,\n.item-input-invalid .input-error-message,\n.input-invalid .input-error-message {\n display: block;\n}\n.item-input-invalid .item-input-info,\n.input-invalid .item-input-info,\n.item-input-invalid .input-info,\n.input-invalid .input-info {\n display: none;\n}\n.input {\n position: relative;\n}\n.input input,\n.input select,\n.input textarea {\n width: 100%;\n}\n.input-clear-button {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n transition-duration: 100ms;\n position: absolute;\n top: 50%;\n border: none;\n padding: 0;\n margin: 0;\n outline: 0;\n z-index: 1;\n cursor: pointer;\n background: none;\n width: var(--f7-input-clear-button-size);\n height: var(--f7-input-clear-button-size);\n margin-top: calc(-1 * var(--f7-input-clear-button-size) / 2);\n color: var(--f7-input-clear-button-color);\n left: 0;\n}\n.input-clear-button:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n.input-clear-button:before {\n position: absolute;\n content: '';\n left: 50%;\n top: 50%;\n}\n.item-input-wrap .input-clear-button {\n top: calc(var(--f7-input-height) / 2);\n}\n.input-clear-button.active-state {\n opacity: 0.75 !important;\n}\n.input-with-value ~ .input-clear-button,\n.item-input-with-value .input-clear-button,\n.input-with-value .input-clear-button {\n opacity: 1;\n pointer-events: auto;\n visibility: visible;\n}\n.input-dropdown-wrap,\n.input-dropdown {\n position: relative;\n}\n.input-dropdown-wrap:before,\n.input-dropdown:before {\n content: '';\n pointer-events: none;\n position: absolute;\n top: 50%;\n margin-top: -2px;\n width: 0;\n height: 0;\n border-left: 4px solid transparent;\n border-right: 4px solid transparent;\n border-top: 5px solid #727272;\n left: 6px;\n}\n.input-dropdown-wrap select,\n.input-dropdown select,\n.input-dropdown-wrap input,\n.input-dropdown input,\n.input-dropdown-wrap textarea,\n.input-dropdown textarea {\n padding-left: calc(20px + var(--f7-input-padding-left));\n}\n.item-input-outline .item-content::after,\n.item-input-outline.item-content::after,\n.input-outline::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n top: 8px;\n bottom: 8px;\n border: 1px solid var(--f7-input-outline-border-color);\n border-radius: var(--f7-input-outline-border-radius);\n pointer-events: none;\n box-sizing: border-box;\n transition-duration: 200ms;\n}\n.item-input-outline .item-content .item-label,\n.item-input-outline.item-content .item-label,\n.input-outline .item-label,\n.item-input-outline .item-content .item-floating-label,\n.item-input-outline.item-content .item-floating-label,\n.input-outline .item-floating-label {\n pointer-events: none;\n background: var(--f7-page-bg-color);\n z-index: 1;\n padding: 4px;\n}\n.item-input-outline .item-content.item-input-focused::after,\n.item-input-outline.item-content.item-input-focused::after,\n.input-outline.item-input-focused::after,\n.item-input-outline .item-content.input-focused::after,\n.item-input-outline.item-content.input-focused::after,\n.input-outline.input-focused::after {\n border-width: 2px;\n border-color: var(--f7-input-outline-invalid-border-color, var(--f7-theme-color));\n}\n.item-input-outline .item-content.item-input-invalid::after,\n.item-input-outline.item-content.item-input-invalid::after,\n.input-outline.item-input-invalid::after,\n.item-input-outline .item-content.input-invalid::after,\n.item-input-outline.item-content.input-invalid::after,\n.input-outline.input-invalid::after {\n border-width: 2px;\n border-color: var(--f7-input-outline-invalid-border-color, var(--f7-input-error-text-color));\n}\n.block-strong .item-input-outline .item-label,\n.block-strong .item-input-outline .item-floating-label,\n.ios .block-strong-ios .item-input-outline .item-label,\n.ios .block-strong-ios .item-input-outline .item-floating-label,\n.md .block-strong-md .item-input-outline .item-label,\n.md .block-strong-md .item-input-outline .item-floating-label {\n background: var(--f7-block-strong-bg-color) !important;\n}\n.list-strong .item-input-outline .item-floating-label,\n.list-strong .item-input-outline .item-label,\n.ios .list-strong-ios .item-input-outline .item-floating-label,\n.ios .list-strong-ios .item-input-outline .item-label,\n.md .list-strong-md .item-input-outline .item-floating-label,\n.md .list-strong-md .item-input-outline .item-label {\n background: var(--f7-list-strong-bg-color) !important;\n}\n.dark option {\n background-color: var(--f7-page-bg-color);\n}\n.ios .item-label + .item-input-wrap,\n.ios .item-floating-label + .item-input-wrap {\n margin-top: 0;\n}\n.ios .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height) + 25%));\n}\n.ios .item-input-focused .item-floating-label {\n color: var(--f7-label-text-color);\n}\n.ios .item-input .item-media {\n align-self: flex-start;\n}\n.ios .item-input-wrap {\n margin-top: calc(-1 * var(--f7-list-item-padding-vertical));\n margin-bottom: calc(-1 * var(--f7-list-item-padding-vertical));\n}\n.ios .item-input:not(.item-input-outline) .item-content,\n.ios .item-input:not(.item-input-outline).item-content {\n background: var(--f7-input-item-bg-color);\n}\n.ios .item-input-error-message,\n.ios .item-input-info,\n.ios .input-error-message,\n.ios .input-info {\n position: relative;\n margin-bottom: 6px;\n margin-top: -8px;\n}\n.ios .item-input-focused .item-label,\n.ios .item-input-focused .item-floating-label {\n color: var(--f7-label-focused-text-color, var(--f7-label-text-color));\n}\n.ios .item-input-focused .item-inner:after {\n background: var(--f7-input-focused-border-color, var(--f7-list-item-border-color));\n}\n.ios .item-input-invalid .item-label,\n.ios .item-input-invalid .item-floating-label {\n color: var(--f7-label-invalid-text-color, var(--f7-label-text-color));\n}\n.ios .item-input-invalid .item-inner:after {\n background: var(--f7-input-invalid-border-color, var(--f7-list-item-border-color));\n}\n.ios .item-input-invalid input,\n.ios .input-invalid input,\n.ios .item-input-invalid select,\n.ios .input-invalid select,\n.ios .item-input-invalid textarea,\n.ios .input-invalid textarea {\n color: var(--f7-input-invalid-text-color, var(--f7-input-error-text-color));\n}\n.ios .input-clear-button:after {\n content: 'delete_round_ios';\n font-size: calc(var(--f7-input-clear-button-size) / (14 / 10));\n line-height: 1.4;\n}\n.ios .input-clear-button:before {\n width: 44px;\n height: 44px;\n margin-left: -22px;\n margin-top: -22px;\n}\n.ios .item-input-outline .item-content,\n.ios .item-input-outline.item-content {\n padding-top: 8px;\n padding-bottom: 8px;\n margin-left: 16px;\n margin-right: 16px;\n}\n.ios li.item-input-outline:first-child,\n.ios li:first-child > .item-input-outline {\n padding-top: 16px;\n}\n.ios li.item-input-outline:first-child::after,\n.ios li:first-child > .item-input-outline::after {\n top: 16px;\n}\n.ios li.item-input-outline:last-child,\n.ios li:last-child > .item-input-outline {\n padding-bottom: 16px;\n}\n.ios li.item-input-outline:last-child::after,\n.ios li:last-child > .item-input-outline::after {\n bottom: 16px;\n}\n.ios .item-input-outline .item-content .item-inner,\n.ios .item-input-outline.item-content .item-inner,\n.ios .input-outline .item-inner {\n display: block;\n padding-top: 0px;\n padding-bottom: 0px;\n}\n.ios .item-input-outline .item-content .item-input-wrap,\n.ios .item-input-outline.item-content .item-input-wrap,\n.ios .input-outline .item-input-wrap {\n margin-top: 2px;\n}\n.ios .item-input-outline .item-content .item-title + .item-input-wrap,\n.ios .item-input-outline.item-content .item-title + .item-input-wrap,\n.ios .input-outline .item-title + .item-input-wrap {\n margin-top: -22px;\n}\n.ios .item-input-outline .item-content .item-label,\n.ios .item-input-outline.item-content .item-label,\n.ios .input-outline .item-label,\n.ios .item-input-outline .item-content .item-floating-label,\n.ios .item-input-outline.item-content .item-floating-label,\n.ios .input-outline .item-floating-label {\n display: inline-flex;\n margin: -8px -4px -4px;\n top: -4px;\n}\n.ios .item-input-outline .item-content .item-floating-label,\n.ios .item-input-outline.item-content .item-floating-label,\n.ios .input-outline .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height)));\n}\n.md .item-input-wrap {\n min-height: var(--f7-input-height);\n}\n.md .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc((var(--f7-input-height) / 2) / var(--f7-floating-label-scale)));\n}\n.md .item-input .item-inner:after {\n display: none !important;\n}\n.md .item-input .item-content,\n.md .item-input.item-content {\n margin-left: 16px;\n margin-right: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.md .input:after {\n content: '';\n position: absolute;\n background-color: var(--f7-input-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.md .input::after {\n transform: scaleY(1) !important;\n transition-duration: 200ms;\n bottom: 0px;\n}\n.md .input.input-focused::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-focused-border-color, var(--f7-theme-color));\n}\n.md .input.input-invalid::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-invalid-border-color, var(--f7-input-error-text-color));\n}\n.md .item-input:not(.item-input-outline) .item-content:after,\n.md .item-input:not(.item-input-outline).item-content:after {\n content: '';\n position: absolute;\n background-color: var(--f7-input-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.md .item-input:not(.item-input-outline) .item-content::before,\n.md .item-input:not(.item-input-outline).item-content::before {\n content: '';\n position: absolute;\n left: 0;\n top: 8px;\n bottom: 8px;\n right: 0;\n border-radius: var(--f7-input-item-border-radius);\n background: var(--f7-input-item-bg-color);\n pointer-events: none;\n}\n.md .item-input:not(.item-input-outline) .item-content::after,\n.md .item-input:not(.item-input-outline).item-content::after {\n transform: scaleY(1) !important;\n transition-duration: 200ms;\n bottom: 8px;\n}\n.md .item-input:not(.item-input-outline) .item-content.item-input-focused::after,\n.md .item-input:not(.item-input-outline).item-content.item-input-focused::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-focused-border-color, var(--f7-theme-color));\n}\n.md .item-input:not(.item-input-outline) .item-content.item-input-invalid::after,\n.md .item-input:not(.item-input-outline).item-content.item-input-invalid::after,\n.md .item-input:not(.item-input-outline) .item-content.input-invalid::after,\n.md .item-input:not(.item-input-outline).item-content.input-invalid::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-invalid-border-color, var(--f7-input-error-text-color));\n}\n.md .item-input-outline .item-content .item-inner,\n.md .item-input-outline.item-content .item-inner,\n.md .input-outline .item-inner {\n padding-top: 16px;\n padding-bottom: 16px;\n}\n.md .item-input-outline .item-content .item-label,\n.md .item-input-outline.item-content .item-label,\n.md .input-outline .item-label,\n.md .item-input-outline .item-content .item-floating-label,\n.md .item-input-outline.item-content .item-floating-label,\n.md .input-outline .item-floating-label {\n --label-height: calc(var(--f7-label-height) + 8px);\n margin: calc(0px - 16px - var(--label-height) / 2) -4px 4px;\n}\n.md .item-input-outline .item-content .item-floating-label,\n.md .item-input-outline.item-content .item-floating-label,\n.md .input-outline .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc((var(--f7-input-height) / 2) + 8px));\n}\n.md .item-input-with-error-message,\n.md .item-input-with-info,\n.md .input-with-error-message,\n.md .input-with-info {\n padding-bottom: 24px !important;\n}\n.md .item-input-error-message,\n.md .item-input-info,\n.md .input-error-message,\n.md .input-info {\n position: absolute;\n top: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n width: 100%;\n right: 0;\n}\n.md .item-input-focused .item-label,\n.md .item-input-focused .item-floating-label {\n color: var(--f7-label-focused-text-color, var(--f7-theme-color));\n}\n.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after,\n.md .input-focused:not(.input-outline):after {\n background: var(--f7-input-focused-border-color, var(--f7-theme-color));\n}\n.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after,\n.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after,\n.md .input-invalid:not(.input-outline):after,\n.md .input-focused:not(.input-outline):after {\n transform: scaleY(2) !important;\n}\n.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after,\n.md .input-invalid:not(.input-outline):after {\n background: var(--f7-input-invalid-border-color, var(--f7-input-error-text-color));\n}\n.md .item-input-invalid .item-label,\n.md .item-input-invalid .item-floating-label {\n color: var(--f7-label-invalid-text-color, var(--f7-input-error-text-color));\n}\n.md .item-input-invalid input,\n.md .input-invalid input,\n.md .item-input-invalid select,\n.md .input-invalid select,\n.md .item-input-invalid textarea,\n.md .input-invalid textarea {\n color: var(--f7-input-invalid-text-color, var(--f7-input-text-color));\n}\n.md .input-clear-button:after {\n font-size: var(--f7-input-clear-button-size);\n content: 'delete_round_md';\n line-height: 1;\n}\n.md .input-clear-button:before {\n width: 48px;\n height: 48px;\n margin-left: -24px;\n margin-top: -24px;\n}\n/* === Checkbox === */\n:root {\n /* --f7-checkbox-active-color: var(--f7-theme-color); */\n --f7-checkbox-icon-color: #fff;\n --f7-checkbox-extra-margin: 0px;\n}\n:root .dark,\n:root.dark {\n --f7-checkbox-inactive-color: rgba(255, 255, 255, 0.3);\n --f7-checkbox-icon-color: #000;\n}\n.ios {\n --f7-checkbox-size: 22px;\n --f7-checkbox-border-radius: 50%;\n --f7-checkbox-border-width: 1px;\n --f7-checkbox-inactive-color: #c7c7cc;\n}\n.md {\n --f7-checkbox-size: 18px;\n --f7-checkbox-border-radius: 2px;\n --f7-checkbox-border-width: 2px;\n --f7-checkbox-inactive-color: #6d6d6d;\n}\n.checkbox {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n z-index: 1;\n background-color: transparent;\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.5);\n}\n.icon-checkbox,\n.checkbox i {\n flex-shrink: 0;\n border: var(--f7-checkbox-border-width) solid var(--f7-checkbox-inactive-color);\n width: var(--f7-checkbox-size);\n height: var(--f7-checkbox-size);\n border-radius: var(--f7-checkbox-border-radius);\n box-sizing: border-box;\n position: relative;\n display: block;\n}\n.icon-checkbox:after,\n.checkbox i:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n width: var(--f7-checkbox-size);\n height: var(--f7-checkbox-size);\n line-height: var(--f7-checkbox-size);\n top: calc(0px - var(--f7-checkbox-border-width));\n opacity: 0;\n color: var(--f7-checkbox-icon-color);\n position: relative;\n transition-property: opacity;\n right: calc(0px - var(--f7-checkbox-border-width));\n}\n.icon-checkbox.color-white,\n.checkbox i.color-white,\n.color-white .icon-checkbox,\n.color-white .checkbox i {\n --f7-theme-color: #fff;\n --f7-checkbox-icon-color: #000;\n}\n.icon-checkbox.color-black,\n.checkbox i.color-black,\n.color-black .icon-checkbox,\n.color-black .checkbox i {\n --f7-theme-color: #000;\n --f7-checkbox-icon-color: #fff;\n}\nlabel.item-checkbox input[type='checkbox']:not(:checked) ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:not(:checked) ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:not(:checked) ~ i:after {\n font-size: 0;\n}\nlabel.item-checkbox input[type='checkbox']:checked ~ .icon-checkbox,\nlabel.item-checkbox input[type='checkbox']:checked ~ * .icon-checkbox,\n.checkbox input[type='checkbox']:checked ~ i,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox,\n.checkbox input[type='checkbox']:indeterminate ~ i {\n border-color: var(--f7-checkbox-active-color, var(--f7-theme-color));\n background-color: var(--f7-checkbox-active-color, var(--f7-theme-color));\n}\nlabel.item-checkbox input[type='checkbox']:checked ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:checked ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:checked ~ i:after,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:indeterminate ~ i:after {\n opacity: 1;\n}\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:indeterminate ~ i:after {\n font-size: 0;\n content: '';\n position: absolute;\n top: 50%;\n width: 70%;\n background: var(--f7-checkbox-icon-color);\n height: 2px;\n border-radius: 2px;\n margin-top: -1px;\n transition: 0ms;\n right: 15%;\n}\nlabel.item-checkbox,\n.checkbox {\n cursor: pointer;\n}\nlabel.item-checkbox input[type='checkbox'],\n.checkbox input[type='checkbox'],\nlabel.item-checkbox input[type='radio'],\n.checkbox input[type='radio'] {\n display: none;\n}\nlabel.item-checkbox {\n transition-duration: 300ms;\n}\nlabel.item-checkbox .item-content .item-media,\nlabel.item-checkbox.item-content .item-media {\n align-self: center;\n}\nlabel.item-checkbox > .icon-checkbox {\n margin-left: calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin));\n}\nlabel.item-checkbox.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\nlabel.item-checkbox.active-state:after {\n background-color: transparent;\n}\nlabel.item-checkbox.disabled,\n.disabled label.item-checkbox {\n opacity: 0.55;\n pointer-events: none;\n opacity: 0.55 !important;\n pointer-events: none !important;\n}\nlabel.item-checkbox.item-checkbox-icon-end .item-inner {\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right) + var(--f7-checkbox-size) + 16px);\n}\nlabel.item-checkbox.item-checkbox-icon-end input[type='checkbox'] ~ .icon-checkbox {\n position: absolute;\n left: calc(var(--f7-safe-area-left) + 16px);\n margin-left: 0;\n}\n.ios .icon-checkbox:after,\n.ios .checkbox i:after {\n content: 'checkbox_ios';\n font-size: 21px;\n}\n.ios label.item-checkbox.active-state {\n transition-duration: 0ms;\n}\n.ios label.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox:after,\n.ios label.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox:after,\n.ios .checkbox input[type='checkbox']:indeterminate ~ i:after {\n height: 2px;\n margin-top: -1px;\n}\n.md .icon-checkbox,\n.md .checkbox i {\n transition-duration: 200ms;\n}\n.md .icon-checkbox:after,\n.md .checkbox i:after {\n content: 'checkbox_md';\n transition-duration: 200ms;\n font-size: 15px;\n}\n.md label.item-checkbox {\n position: relative;\n overflow: hidden;\n z-index: 0;\n}\n/* === Radio === */\n:root {\n /*\n --f7-radio-active-color: var(--f7-theme-color);\n */\n --f7-radio-border-radius: 50%;\n --f7-radio-extra-margin: 0px;\n}\n:root .dark,\n:root.dark {\n --f7-radio-inactive-color: rgba(255, 255, 255, 0.3);\n}\n.ios {\n --f7-radio-size: 22px;\n --f7-radio-border-width: 1px;\n --f7-radio-inactive-color: #c7c7cc;\n}\n.md {\n --f7-radio-size: 20px;\n --f7-radio-border-width: 2px;\n --f7-radio-inactive-color: #6d6d6d;\n}\n.radio {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n z-index: 1;\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.5);\n}\n.icon-radio {\n width: var(--f7-radio-size);\n height: var(--f7-radio-size);\n border-radius: var(--f7-radio-border-radius);\n position: relative;\n box-sizing: border-box;\n display: block;\n flex-shrink: 0;\n}\n.radio.color-white,\n.icon-radio.color-white,\n.color-white .radio,\n.color-white .icon-radio {\n --f7-theme-color: #fff;\n}\n.radio.color-black,\n.icon-radio.color-black,\n.color-black .radio,\n.color-black .icon-radio {\n --f7-theme-color: #000;\n}\n.radio .icon-radio,\n.md .icon-radio {\n border: var(--f7-radio-border-width) solid var(--f7-radio-inactive-color);\n}\nlabel.item-radio,\n.radio {\n cursor: pointer;\n}\nlabel.item-radio input[type='checkbox'],\n.radio input[type='checkbox'],\nlabel.item-radio input[type='radio'],\n.radio input[type='radio'] {\n display: none;\n}\nlabel.item-radio {\n transition-duration: 300ms;\n}\nlabel.item-radio .item-content .item-media,\nlabel.item-radio.item-content .item-media {\n align-self: center;\n}\nlabel.item-radio.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\nlabel.item-radio.active-state:after {\n background-color: transparent;\n}\nlabel.item-radio.disabled,\n.disabled label.item-radio {\n opacity: 0.55;\n pointer-events: none;\n opacity: 0.55 !important;\n pointer-events: none !important;\n}\n.ios .icon-radio:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n width: calc(var(--f7-radio-size) - var(--f7-radio-border-width) * 2);\n height: calc(var(--f7-radio-size) - var(--f7-radio-border-width) * 2);\n line-height: calc(var(--f7-radio-size) - var(--f7-radio-border-width) * 2 + 1px);\n font-size: 20px;\n content: 'radio_ios';\n color: var(--f7-radio-active-color, var(--f7-theme-color));\n opacity: 0;\n}\n.ios label.item-radio input[type='radio']:checked ~ .icon-radio:after,\n.ios label.item-radio input[type='radio']:checked ~ * .icon-radio:after,\n.ios .radio input[type='radio']:checked ~ .icon-radio:after {\n opacity: 1;\n}\n.ios .radio input[type='radio']:checked ~ .icon-radio {\n border-color: var(--f7-radio-active-color, var(--f7-theme-color));\n}\n.ios label.item-radio:not(.item-radio-icon-start) input[type='radio'] ~ .icon-radio {\n position: absolute;\n top: 50%;\n margin-top: -11px;\n left: calc(var(--f7-safe-area-left) + 10px);\n}\n.ios label.item-radio:not(.item-radio-icon-start) .item-inner {\n padding-left: calc(var(--f7-safe-area-left) + 36px);\n}\n.ios label.item-radio-icon-start > .icon-radio {\n margin-left: calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin));\n}\n.ios label.item-radio.active-state {\n transition-duration: 0ms;\n}\n.md .icon-radio {\n transition-duration: 200ms;\n}\n.md .icon-radio:after {\n content: '';\n position: absolute;\n width: 10px;\n height: 10px;\n left: 50%;\n top: 50%;\n margin-left: -5px;\n margin-top: -5px;\n background-color: var(--f7-radio-active-color, var(--f7-theme-color));\n border-radius: 50%;\n transform: scale(0);\n transition-duration: 200ms;\n}\n.md label.item-radio input[type='radio']:checked ~ .icon-radio,\n.md label.item-radio input[type='radio']:checked ~ * .icon-radio,\n.md .radio input[type='radio']:checked ~ .icon-radio {\n border-color: var(--f7-radio-active-color, var(--f7-theme-color));\n}\n.md label.item-radio input[type='radio']:checked ~ .icon-radio:after,\n.md label.item-radio input[type='radio']:checked ~ * .icon-radio:after,\n.md .radio input[type='radio']:checked ~ .icon-radio:after {\n background-color: var(--f7-radio-active-color, var(--f7-theme-color));\n transform: scale(1);\n}\n.md label.item-radio {\n position: relative;\n overflow: hidden;\n z-index: 0;\n}\n.md label.item-radio:not(.item-radio-icon-end) > .icon-radio {\n margin-left: calc(var(--f7-list-item-media-margin) + var(--f7-radio-extra-margin));\n}\n.md label.item-radio-icon-end input[type='radio'] ~ .icon-radio {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n left: calc(var(--f7-safe-area-left) + 16px);\n}\n.md label.item-radio-icon-end .item-inner {\n padding-left: calc(var(--f7-safe-area-left) + 52px);\n}\n/* === Toggle === */\n.ios {\n --f7-toggle-width: 52px;\n --f7-toggle-height: 32px;\n /*\n --f7-toggle-active-bg-color: var(--f7-theme-color);\n */\n --f7-toggle-inactive-knob-bg-color: #fff;\n --f7-toggle-active-knob-bg-color: #fff;\n --f7-toggle-inactive-border-color: #e5e5e5;\n --f7-toggle-inactive-bg-color: #fff;\n}\n.ios .dark,\n.ios.dark {\n --f7-toggle-inactive-border-color: #555;\n --f7-toggle-inactive-bg-color: #555;\n}\n.md {\n --f7-toggle-width: 52px;\n --f7-toggle-height: 32px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-toggle-inactive-bg-color: var(--f7-md-surface-variant);\n --f7-toggle-active-bg-color: var(--f7-theme-color);\n --f7-toggle-inactive-knob-bg-color: var(--f7-md-outline);\n --f7-toggle-active-knob-bg-color: var(--f7-md-on-primary);\n --f7-toggle-inactive-border-color: var(--f7-md-outline);\n --f7-toggle-active-border-color: var(--f7-theme-color);\n}\n.toggle,\n.toggle-icon {\n width: var(--f7-toggle-width);\n height: var(--f7-toggle-height);\n border-radius: var(--f7-toggle-height);\n}\n.toggle {\n display: inline-block;\n vertical-align: middle;\n position: relative;\n box-sizing: border-box;\n align-self: center;\n -webkit-user-select: none;\n user-select: none;\n}\n.toggle input[type='checkbox'] {\n display: none;\n}\n.toggle input[disabled] ~ .toggle-icon {\n pointer-events: none;\n}\n.toggle-icon {\n z-index: 0;\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n position: relative;\n transition: 300ms;\n box-sizing: border-box;\n display: block;\n cursor: pointer;\n}\n.toggle-icon:before,\n.toggle-icon:after {\n content: '';\n}\n.toggle-icon:after {\n position: absolute;\n z-index: 2;\n transform: translateX(0px);\n transition-duration: 300ms;\n}\n.ios .toggle {\n background: var(--f7-toggle-inactive-border-color);\n}\n.ios .toggle input[type='checkbox']:checked + .toggle-icon {\n background: var(--f7-toggle-active-color, var(--f7-theme-color));\n}\n.ios .toggle input[type='checkbox']:checked + .toggle-icon:before {\n background: var(--f7-toggle-active-bg-color, var(--f7-theme-color));\n transform: scale(0);\n}\n.ios .toggle input[type='checkbox']:checked + .toggle-icon:after {\n background: var(--f7-toggle-active-knob-bg-color);\n transform: translateX(calc(-1 * (var(--f7-toggle-width) - var(--f7-toggle-height))));\n}\n.ios .toggle-icon {\n background: var(--f7-toggle-border-color);\n}\n.ios .toggle-icon:before {\n position: absolute;\n right: 2px;\n top: 2px;\n width: calc(var(--f7-toggle-width) - 4px);\n height: calc(var(--f7-toggle-height) - 4px);\n border-radius: var(--f7-toggle-height);\n box-sizing: border-box;\n background: var(--f7-toggle-inactive-bg-color);\n z-index: 1;\n transition-duration: 300ms;\n transform: scale(1);\n}\n.ios .toggle-icon:after {\n background: var(--f7-toggle-inactive-knob-bg-color);\n height: calc(var(--f7-toggle-height) - 4px);\n width: calc(var(--f7-toggle-height) - 4px);\n top: 2px;\n right: 2px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n border-radius: calc(var(--f7-toggle-height) - 4px);\n}\n.ios .toggle-active-state input[type='checkbox']:not(:checked) + .toggle-icon:before {\n transform: scale(0);\n}\n.ios .toggle-active-state input[type='checkbox'] + .toggle-icon:after {\n width: calc(var(--f7-toggle-height) + 4px);\n}\n.ios .toggle-active-state input[type='checkbox']:checked + .toggle-icon:after {\n transform: translateX(calc(-1 * (var(--f7-toggle-width) - var(--f7-toggle-height) - 8px)));\n}\n.md .toggle input[type='checkbox']:checked + .toggle-icon {\n background: var(--f7-toggle-active-bg-color);\n border-color: var(--f7-toggle-active-border-color);\n}\n.md .toggle input[type='checkbox']:checked + .toggle-icon:after {\n transform: translateX(calc(-1 * (var(--f7-toggle-width) - var(--f7-toggle-height)))) scale(1);\n background: var(--f7-toggle-active-knob-bg-color);\n}\n.md .toggle.active-state input[type='checkbox']:checked + .toggle-icon:after {\n transform: translateX(calc(-1 * (var(--f7-toggle-width) - var(--f7-toggle-height)))) scale(1.1);\n}\n.md .toggle-icon {\n background: var(--f7-toggle-inactive-bg-color);\n border: 2px solid var(--f7-toggle-inactive-border-color);\n}\n.md .toggle-icon:after {\n background: var(--f7-toggle-inactive-knob-bg-color);\n height: calc(var(--f7-toggle-height) - 8px);\n width: calc(var(--f7-toggle-height) - 8px);\n top: 2px;\n border-radius: var(--f7-toggle-height);\n transform: scale(0.666);\n right: 2px;\n}\n.md .toggle-icon.active-state:after {\n transform: scale(1.1);\n}\n/* === Range Slider === */\n:root {\n /*\n --f7-range-bar-active-bg-color: var(--f7-theme-color);\n --f7-range-scale-bg-color: var(--f7-range-bar-bg-color);\n --f7-range-scale-substep-bg-color: var(--f7-range-bar-bg-color);\n */\n --f7-range-scale-step-height: 5px;\n --f7-range-scale-substep-width: 1px;\n --f7-range-scale-substep-height: 4px;\n --f7-range-bar-bg-color: rgba(0, 0, 0, 0.2);\n}\n:root .dark,\n:root.dark {\n --f7-range-bar-bg-color: rgba(255, 255, 255, 0.2);\n}\n.ios {\n --f7-range-size: 28px;\n --f7-range-bar-size: 4px;\n --f7-range-bar-border-radius: 2px;\n --f7-range-knob-size: 28px;\n --f7-range-knob-color: #fff;\n --f7-range-knob-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n --f7-range-label-size: 24px;\n --f7-range-label-text-color: #000;\n --f7-range-label-bg-color: #fff;\n --f7-range-label-font-size: 12px;\n --f7-range-label-font-weight: 500;\n --f7-range-label-border-radius: 5px;\n --f7-range-label-padding: 0px 2px;\n --f7-range-scale-text-color: #666;\n --f7-range-scale-step-width: 1px;\n --f7-range-scale-font-size: 12px;\n --f7-range-scale-font-weight: 400;\n --f7-range-scale-label-offset: 4px;\n}\n.md {\n --f7-range-size: 20px;\n --f7-range-bar-size: 2px;\n --f7-range-bar-border-radius: 0px;\n --f7-range-knob-size: 12px;\n --f7-range-knob-box-shadow: none;\n --f7-range-label-size: 26px;\n --f7-range-label-font-weight: normal;\n --f7-range-label-font-size: 10px;\n --f7-range-label-border-radius: 50%;\n --f7-range-label-padding: 0px;\n --f7-range-scale-step-width: 2px;\n --f7-range-scale-font-size: 12px;\n --f7-range-scale-font-weight: 400;\n --f7-range-scale-label-offset: 4px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-range-knob-color: var(--f7-theme-color);\n --f7-range-label-text-color: var(--f7-md-on-primary);\n --f7-range-label-bg-color: var(--f7-theme-color);\n --f7-range-scale-text-color: var(--f7-md-on-surface-variant);\n}\n.range-slider {\n display: block;\n position: relative;\n align-self: center;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n}\n.range-slider input[type='range'] {\n display: none;\n}\n.range-slider.range-slider-horizontal {\n width: 100%;\n height: var(--f7-range-size);\n touch-action: pan-y;\n}\n.range-slider.range-slider-vertical {\n height: 100%;\n width: var(--f7-range-size);\n touch-action: pan-x;\n}\n.range-bar {\n position: absolute;\n overflow: hidden;\n background: var(--f7-range-bar-bg-color);\n border-radius: var(--f7-range-bar-border-radius);\n}\n.range-slider-vertical .range-bar {\n left: 50%;\n top: 0;\n height: 100%;\n width: var(--f7-range-bar-size);\n margin-left: calc(-1 * var(--f7-range-bar-size) / 2);\n}\n.range-slider-horizontal .range-bar {\n left: 0;\n top: 50%;\n width: 100%;\n height: var(--f7-range-bar-size);\n margin-top: calc(-1 * var(--f7-range-bar-size) / 2);\n}\n.range-bar-active {\n position: absolute;\n background: var(--f7-range-bar-active-bg-color, var(--f7-theme-color));\n}\n.range-slider-horizontal .range-bar-active {\n right: 0;\n top: 0;\n height: 100%;\n}\n.range-slider-vertical .range-bar-active {\n left: 0;\n bottom: 0;\n width: 100%;\n}\n.range-slider-vertical-reversed .range-bar-active {\n top: 0;\n bottom: auto;\n}\n.range-knob-wrap {\n z-index: 20;\n position: absolute;\n height: var(--f7-range-knob-size);\n width: var(--f7-range-knob-size);\n}\n.range-slider-horizontal .range-knob-wrap {\n top: 50%;\n margin-top: calc(-1 * var(--f7-range-knob-size) / 2);\n margin-right: calc(-1 * var(--f7-range-knob-size) / 2);\n right: 0;\n}\n.range-slider-vertical .range-knob-wrap {\n left: 50%;\n margin-left: calc(-1 * var(--f7-range-knob-size) / 2);\n bottom: 0;\n margin-bottom: calc(-1 * var(--f7-range-knob-size) / 2);\n}\n.range-slider-vertical-reversed .range-knob-wrap {\n bottom: auto;\n top: 0;\n margin-bottom: 0;\n margin-top: calc(-1 * var(--f7-range-knob-size) / 2);\n}\n.range-knob {\n box-sizing: border-box;\n border-radius: 50%;\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 1;\n background: var(--f7-range-knob-color, var(--f7-range-knob-bg-color, var(--f7-theme-color)));\n box-shadow: var(--f7-range-knob-box-shadow);\n}\n.range-knob:after {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n width: 44px;\n height: 44px;\n margin-left: -22px;\n margin-top: -22px;\n}\n.range-knob-label {\n position: absolute;\n left: 50%;\n bottom: 100%;\n text-align: center;\n transition-duration: 120ms;\n transition-property: transform;\n box-sizing: border-box;\n transform: translateY(100%) scale(0);\n height: var(--f7-range-label-size);\n line-height: var(--f7-range-label-size);\n min-width: var(--f7-range-label-size);\n color: var(--f7-range-label-text-color);\n background-color: var(--f7-range-label-bg-color, var(--f7-theme-color));\n font-size: var(--f7-range-label-font-size);\n font-weight: var(--f7-range-label-font-weight);\n border-radius: var(--f7-range-label-border-radius);\n padding: var(--f7-range-label-padding);\n}\n.range-knob-active-state .range-knob-label {\n transform: translateY(0%) scale(1);\n}\n.range-scale {\n position: absolute;\n}\n.range-slider-horizontal .range-scale {\n top: 50%;\n left: 0;\n width: 100%;\n margin-top: calc(var(--f7-range-bar-size) / 2);\n}\n.range-slider-vertical .range-scale {\n right: 50%;\n top: 0;\n height: 100%;\n margin-right: calc(var(--f7-range-bar-size) / 2);\n}\n.range-scale-step {\n position: absolute;\n box-sizing: border-box;\n display: flex;\n font-size: var(--f7-range-scale-font-size);\n font-weight: var(--f7-range-scale-font-weight);\n color: var(--f7-range-scale-text-color, var(--f7-range-bar-bg-color));\n line-height: 1;\n}\n.range-scale-step:before {\n content: '';\n position: absolute;\n background: var(--f7-range-scale-step-bg-color, var(--f7-range-bar-bg-color));\n}\n.range-slider-horizontal .range-scale-step {\n justify-content: center;\n align-items: flex-start;\n width: var(--f7-range-scale-step-width);\n height: var(--f7-range-scale-step-height);\n padding-top: calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));\n top: 0;\n margin-right: calc(-1 * var(--f7-range-scale-step-width) / 2);\n}\n.range-slider-horizontal .range-scale-step:before {\n left: 0;\n top: 0;\n width: 100%;\n height: var(--f7-range-scale-step-height);\n}\n.range-slider-horizontal .range-scale-step:first-child {\n margin-right: 0;\n}\n.range-slider-horizontal .range-scale-step:last-child {\n margin-right: calc(-1 * var(--f7-range-scale-step-width));\n}\n.range-slider-vertical .range-scale-step {\n line-height: 1;\n justify-content: flex-end;\n align-items: center;\n height: var(--f7-range-scale-step-width);\n width: var(--f7-range-scale-step-height);\n padding-right: calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));\n right: 0;\n margin-bottom: calc(-1 * var(--f7-range-scale-step-width) / 2);\n}\n.range-slider-vertical .range-scale-step:first-child {\n margin-bottom: 0;\n}\n.range-slider-vertical .range-scale-step:last-child {\n margin-bottom: calc(-1 * var(--f7-range-scale-step-width));\n}\n.range-slider-vertical .range-scale-step:before {\n right: 0;\n top: 0;\n height: 100%;\n width: var(--f7-range-scale-step-height);\n}\n.range-scale-substep {\n --f7-range-scale-step-bg-color: var(--f7-range-scale-substep-bg-color, var(--f7-range-bar-bg-color));\n --f7-range-scale-step-width: var(--f7-range-scale-substep-width);\n --f7-range-scale-step-height: var(--f7-range-scale-substep-height);\n}\n.ios .range-knob-label {\n margin-bottom: 6px;\n transform: translateX(-50%) translateY(100%) scale(0);\n}\n.ios .range-knob-active-state .range-knob-label {\n transform: translateX(-50%) translateY(0%) scale(1);\n}\n.md .range-knob {\n transition-duration: 200ms;\n transition-property: transform, background-color;\n}\n.md .range-knob-active-state .range-knob {\n transform: scale(1.5);\n}\n.md .range-slider-min:not(.range-slider-dual) .range-knob {\n background: #fff !important;\n border: 2px solid var(--f7-range-bar-bg-color);\n}\n.md .range-knob-label {\n width: var(--f7-range-label-size);\n margin-left: calc(-1 * var(--f7-range-label-size) / 2);\n margin-bottom: 8px;\n}\n.md .range-knob-label:before {\n content: '';\n left: 50%;\n top: 0px;\n margin-left: calc(-1 * var(--f7-range-label-size) / 2);\n position: absolute;\n z-index: -1;\n width: var(--f7-range-label-size);\n height: var(--f7-range-label-size);\n background: var(--f7-range-label-bg-color, var(--f7-theme-color));\n transform: rotate(-45deg);\n border-radius: 50% 50% 50% 0;\n}\n.md .range-knob-active-state .range-knob-label {\n transform: translateY(0%) scale(1);\n}\n.md .range-slider-label .range-knob-active-state .range-knob {\n transform: scale(0);\n}\n/* === Stepper === */\n:root {\n /*\n --f7-stepper-button-text-color: var(--f7-theme-color);\n --f7-stepper-button-pressed-text-color: var(--f7-button-text-color, var(--f7-theme-color));\n --f7-stepper-value-text-color: var(--f7-theme-color);\n --f7-stepper-fill-button-bg-color: var(--f7-theme-color);\n */\n --f7-stepper-raised-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);\n --f7-stepper-value-font-weight: 500;\n}\n.ios {\n --f7-stepper-height: 28px;\n --f7-stepper-border-radius: 5px;\n --f7-stepper-fill-button-text-color: #fff;\n /*\n --f7-stepper-button-pressed-bg-color: rgba(var(--f7-theme-color-rgb), .15);\n --f7-stepper-fill-button-pressed-bg-color: var(--f7-theme-color-tint);\n */\n --f7-stepper-large-height: 44px;\n --f7-stepper-small-height: 26px;\n --f7-stepper-value-font-size: 17px;\n --f7-stepper-border-width: 2px;\n --f7-stepper-border-color: var(--f7-theme-color);\n --f7-stepper-small-border-width: 2px;\n}\n.md {\n --f7-stepper-height: 40px;\n --f7-stepper-border-radius: 8px;\n --f7-stepper-large-height: 48px;\n --f7-stepper-small-height: 32px;\n --f7-stepper-value-font-size: 14px;\n --f7-stepper-border-width: 1px;\n --f7-stepper-small-border-width: 1px;\n --f7-stepper-button-pressed-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-stepper-fill-button-text-color: var(--f7-md-on-primary);\n --f7-stepper-fill-button-pressed-bg-color: var(--f7-theme-color);\n --f7-stepper-border-color: var(--f7-md-outline);\n}\n.stepper {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n display: inline-flex;\n align-items: stretch;\n height: var(--f7-stepper-height);\n border-radius: var(--f7-stepper-border-radius);\n flex-direction: row-reverse;\n}\n.stepper-button,\n.stepper-button-minus,\n.stepper-button-plus {\n background-color: var(--f7-stepper-button-bg-color);\n width: 40px;\n border-radius: var(--f7-stepper-border-radius);\n border: var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);\n color: var(--f7-stepper-button-text-color, var(--f7-theme-color));\n line-height: calc(var(--f7-stepper-height) - var(--f7-stepper-border-width, 0px));\n text-align: center;\n display: flex;\n justify-content: center;\n align-content: center;\n align-items: center;\n flex-shrink: 0;\n box-sizing: border-box;\n position: relative;\n cursor: pointer;\n}\n.stepper-button.active-state,\n.stepper-button-minus.active-state,\n.stepper-button-plus.active-state {\n background-color: var(--f7-stepper-button-pressed-bg-color, rgba(var(--f7-theme-color-rgb), 0.15));\n color: var(--f7-stepper-button-pressed-text-color, var(--f7-stepper-button-text-color, var(--f7-theme-color)));\n}\n.stepper-button:first-child,\n.stepper-button-minus:first-child,\n.stepper-button-plus:first-child {\n border-radius: var(--f7-stepper-border-radius) 0 0 var(--f7-stepper-border-radius);\n}\n.stepper-button:last-child,\n.stepper-button-minus:last-child,\n.stepper-button-plus:last-child {\n border-radius: 0 var(--f7-stepper-border-radius) var(--f7-stepper-border-radius) 0;\n}\n.stepper-button .icon,\n.stepper-button-minus .icon,\n.stepper-button-plus .icon {\n pointer-events: none;\n}\n.stepper-button + .stepper-button,\n.stepper-button-minus + .stepper-button,\n.stepper-button-plus + .stepper-button,\n.stepper-button + .stepper-button-minus,\n.stepper-button-minus + .stepper-button-minus,\n.stepper-button-plus + .stepper-button-minus,\n.stepper-button + .stepper-button-plus,\n.stepper-button-minus + .stepper-button-plus,\n.stepper-button-plus + .stepper-button-plus {\n border-left: none;\n}\n.stepper-button-plus,\n.stepper-button-minus {\n -webkit-user-select: none;\n user-select: none;\n}\n.stepper-button-plus:after,\n.stepper-button-minus:after,\n.stepper-button-plus:before,\n.stepper-button-minus:before {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--f7-stepper-button-text-color, var(--f7-theme-color));\n border-radius: 2px;\n}\n.stepper-button-plus:after,\n.stepper-button-minus:after {\n width: 15px;\n height: 2px;\n}\n.stepper-button-plus:before {\n height: 15px;\n width: 2px;\n}\n.stepper-value {\n display: flex;\n align-content: center;\n align-items: center;\n justify-content: center;\n}\n.stepper-input-wrap,\n.stepper-value {\n flex-shrink: 1;\n text-align: center;\n border-top: var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);\n border-bottom: var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);\n}\n.stepper .stepper-input-wrap input,\n.stepper-value {\n width: 45px;\n color: var(--f7-stepper-value-text-color, var(--f7-theme-color));\n font-size: var(--f7-stepper-value-font-size);\n font-weight: var(--f7-stepper-value-font-weight);\n text-align: center;\n}\n.stepper .stepper-input-wrap input {\n height: 100%;\n}\n.stepper-round,\n.ios .stepper-round-ios,\n.md .stepper-round-md {\n --f7-stepper-border-radius: var(--f7-stepper-height);\n}\n.stepper-fill,\n.ios .stepper-fill-ios,\n.md .stepper-fill-md {\n --f7-stepper-border-color: var(--f7-stepper-fill-button-bg-color, var(--f7-theme-color));\n --f7-stepper-button-bg-color: var(--f7-stepper-fill-button-bg-color, var(--f7-theme-color));\n --f7-stepper-button-text-color: var(--f7-stepper-fill-button-text-color);\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.stepper-fill .stepper-button + .stepper-button,\n.ios .stepper-fill-ios .stepper-button + .stepper-button,\n.md .stepper-fill-md .stepper-button + .stepper-button,\n.stepper-raised .stepper-button + .stepper-button,\n.ios .stepper-raised-ios .stepper-button + .stepper-button,\n.md .stepper-raised-md .stepper-button + .stepper-button,\n.stepper-fill .stepper-button-minus + .stepper-button-plus,\n.ios .stepper-fill-ios .stepper-button-minus + .stepper-button-plus,\n.md .stepper-fill-md .stepper-button-minus + .stepper-button-plus,\n.stepper-raised .stepper-button-minus + .stepper-button-plus,\n.ios .stepper-raised-ios .stepper-button-minus + .stepper-button-plus,\n.md .stepper-raised-md .stepper-button-minus + .stepper-button-plus {\n border-left: 1px solid rgba(0, 0, 0, 0.1);\n}\n.stepper-fill .stepper-button + .stepper-button.active-state,\n.ios .stepper-fill-ios .stepper-button + .stepper-button.active-state,\n.md .stepper-fill-md .stepper-button + .stepper-button.active-state,\n.stepper-fill .stepper-button-minus + .stepper-button-plus.active-state,\n.ios .stepper-fill-ios .stepper-button-minus + .stepper-button-plus.active-state,\n.md .stepper-fill-md .stepper-button-minus + .stepper-button-plus.active-state {\n border-left-color: var(--f7-stepper-button-pressed-bg-color);\n}\n.stepper-raised:not(.stepper-fill) .stepper-input-wrap,\n.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-input-wrap,\n.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-input-wrap,\n.stepper-raised:not(.stepper-fill) .stepper-value,\n.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-value,\n.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-value {\n border-left: 1px solid rgba(0, 0, 0, 0.1);\n border-right: 1px solid rgba(0, 0, 0, 0.1);\n}\n.stepper-large,\n.ios .stepper-large-ios,\n.md .stepper-large-md {\n --f7-stepper-height: var(--f7-stepper-large-height);\n}\n.stepper-small,\n.ios .stepper-small-ios,\n.md .stepper-small-md {\n --f7-stepper-border-width: var(--f7-stepper-small-border-width);\n --f7-stepper-height: var(--f7-stepper-small-height);\n}\n.ios .stepper-fill.stepper-small-ios,\n.ios .stepper-fill.stepper-small {\n --f7-stepper-button-pressed-bg-color: transparent;\n --f7-stepper-button-pressed-text-color: var(--f7-theme-color);\n}\n.stepper-raised,\n.ios .stepper-raised-ios,\n.md .stepper-raised-md {\n --f7-stepper-border-width: 0;\n box-shadow: var(--f7-stepper-raised-box-shadow);\n}\n.ios .stepper-button .f7-icons,\n.ios .stepper-button-minus .f7-icons,\n.ios .stepper-button-plus .f7-icons {\n font-size: 22px;\n}\n.ios .stepper-fill,\n.ios .stepper-fill-ios {\n --f7-stepper-button-pressed-bg-color: var(--f7-stepper-fill-button-pressed-bg-color, var(--f7-theme-color-tint));\n}\n.ios .stepper-small.stepper-raised,\n.ios .stepper-small-ios.stepper-raised,\n.ios .stepper-small.stepper-raised-ios,\n.ios .stepper-small-ios.stepper-raised-ios {\n --f7-stepper-border-width: 0px;\n}\n.ios .stepper-small .stepper-button,\n.ios .stepper-small-ios .stepper-button,\n.ios .stepper-small .stepper-button-minus,\n.ios .stepper-small-ios .stepper-button-minus,\n.ios .stepper-small .stepper-button-plus,\n.ios .stepper-small-ios .stepper-button-plus {\n transition-duration: 200ms;\n}\n.ios .stepper-small .stepper-button.active-state:after,\n.ios .stepper-small-ios .stepper-button.active-state:after,\n.ios .stepper-small .stepper-button-minus.active-state:after,\n.ios .stepper-small-ios .stepper-button-minus.active-state:after,\n.ios .stepper-small .stepper-button-plus.active-state:after,\n.ios .stepper-small-ios .stepper-button-plus.active-state:after,\n.ios .stepper-small .stepper-button.active-state:before,\n.ios .stepper-small-ios .stepper-button.active-state:before,\n.ios .stepper-small .stepper-button-minus.active-state:before,\n.ios .stepper-small-ios .stepper-button-minus.active-state:before,\n.ios .stepper-small .stepper-button-plus.active-state:before,\n.ios .stepper-small-ios .stepper-button-plus.active-state:before {\n transition-duration: 200ms;\n background-color: var(--f7-theme-color);\n}\n.md .stepper-button,\n.md .stepper-button-minus,\n.md .stepper-button-plus {\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n overflow: hidden;\n}\n.md .stepper-fill,\n.md .stepper-fill-md {\n --f7-stepper-button-pressed-bg-color: var(--f7-stepper-fill-button-bg-color, var(--f7-theme-color));\n}\n/* === Smart Select === */\n.smart-select :root {\n /*\n --f7-smart-select-sheet-bg: var(--f7-list-bg-color);\n --f7-smart-select-sheet-toolbar-border-color: var(--f7-bars-border-color);\n */\n}\n.smart-select select {\n display: none;\n}\n.smart-select .item-after {\n max-width: 70%;\n overflow: hidden;\n text-overflow: ellipsis;\n position: relative;\n display: block;\n}\n.smart-select-sheet .page,\n.smart-select-sheet .sheet-modal-inner,\n.smart-select-sheet .list ul {\n background: var(--f7-smart-select-sheet-bg, var(--f7-list-bg-color));\n}\n.smart-select-sheet .toolbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-smart-select-sheet-toolbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.smart-select-sheet .toolbar:after {\n display: block;\n}\n.smart-select-sheet .list {\n margin: 0;\n}\n.smart-select-sheet .list ul:before,\n.smart-select-sheet .list ul:after {\n display: none !important;\n}\n.smart-select-popover .popover-inner {\n max-height: 40vh;\n}\n/* === Grid === */\n:root {\n --f7-grid-gap: 16px;\n}\n.grid {\n display: grid;\n}\n.grid.grid-gap {\n gap: var(--f7-grid-gap);\n}\n.grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n}\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n}\n.grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n}\n.grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n}\n.grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n}\n.grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n}\n.grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n}\n.grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n}\n.grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n}\n.grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n}\n.grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n}\n.grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n}\n.grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n}\n.grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n}\n.grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n}\n.grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n}\n.grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n}\n.grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n}\n.grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n}\n.grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n}\n.grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n}\n.grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n}\n.grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n}\n.grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n}\n.grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n}\n.grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n}\n.grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n}\n.grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n}\n.grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n}\n.grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n}\n.grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n}\n.grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n}\n.grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n}\n.grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n}\n.grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n}\n.grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n}\n.grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n}\n.grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n}\n.grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n}\n@media (min-width: 480px) {\n .xsmall-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .xsmall-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .xsmall-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .xsmall-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .xsmall-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .xsmall-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .xsmall-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .xsmall-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .xsmall-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .xsmall-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .xsmall-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .xsmall-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .xsmall-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .xsmall-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .xsmall-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .xsmall-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .xsmall-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .xsmall-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .xsmall-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .xsmall-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .xsmall-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .xsmall-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .xsmall-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .xsmall-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .xsmall-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .xsmall-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .xsmall-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .xsmall-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .xsmall-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .xsmall-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .xsmall-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .xsmall-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .xsmall-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .xsmall-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .xsmall-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .xsmall-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .xsmall-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .xsmall-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .xsmall-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .xsmall-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 568px) {\n .small-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .small-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .small-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .small-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .small-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .small-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .small-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .small-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .small-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .small-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .small-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .small-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .small-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .small-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .small-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .small-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .small-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .small-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .small-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .small-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .small-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .small-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .small-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .small-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .small-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .small-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .small-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .small-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .small-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .small-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .small-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .small-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .small-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .small-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .small-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .small-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .small-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .small-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .small-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .small-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 768px) {\n .medium-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .medium-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .medium-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .medium-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .medium-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .medium-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .medium-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .medium-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .medium-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .medium-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .medium-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .medium-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .medium-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .medium-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .medium-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .medium-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .medium-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .medium-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .medium-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .medium-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .medium-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .medium-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .medium-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .medium-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .medium-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .medium-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .medium-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .medium-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .medium-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .medium-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .medium-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .medium-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .medium-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .medium-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .medium-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .medium-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .medium-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .medium-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .medium-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .medium-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 1024px) {\n .large-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .large-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .large-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .large-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .large-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .large-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .large-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .large-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .large-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .large-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .large-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .large-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .large-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .large-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .large-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .large-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .large-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .large-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .large-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .large-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .large-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .large-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .large-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .large-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .large-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .large-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .large-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .large-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .large-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .large-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .large-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .large-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .large-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .large-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .large-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .large-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .large-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .large-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .large-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .large-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 1200px) {\n .xlarge-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .xlarge-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .xlarge-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .xlarge-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .xlarge-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .xlarge-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .xlarge-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .xlarge-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .xlarge-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .xlarge-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .xlarge-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .xlarge-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .xlarge-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .xlarge-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .xlarge-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .xlarge-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .xlarge-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .xlarge-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .xlarge-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .xlarge-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .xlarge-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .xlarge-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .xlarge-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .xlarge-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .xlarge-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .xlarge-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .xlarge-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .xlarge-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .xlarge-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .xlarge-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .xlarge-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .xlarge-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .xlarge-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .xlarge-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .xlarge-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .xlarge-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .xlarge-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .xlarge-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .xlarge-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .xlarge-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n/* === Calendar/Datepicker === */\n:root {\n --f7-calendar-height: 340px;\n --f7-calendar-sheet-landscape-height: 220px;\n --f7-calendar-popover-width: 320px;\n --f7-calendar-popover-height: 320px;\n --f7-calendar-modal-height: 420px;\n --f7-calendar-modal-max-width: 380px;\n /*\n --f7-calendar-header-bg-color: var(--f7-bars-bg-color);\n --f7-calendar-header-link-color: var(--f7-bars-link-color);\n --f7-calendar-header-text-color: var(--f7-bars-text-color);\n --f7-calendar-footer-bg-color: var(--f7-bars-bg-color);\n --f7-calendar-footer-border-color: var(--f7-bars-border-color);\n --f7-calendar-footer-link-color: var(--f7-bars-link-color);\n --f7-calendar-footer-text-color: var(--f7-bars-text-color);\n */\n --f7-calendar-week-header-bg-color: transparent;\n --f7-calendar-footer-padding: 0 8px;\n --f7-calendar-week-header-font-size: 11px;\n /*\n --f7-calendar-selected-bg-color: var(--f7-theme-color);\n */\n --f7-calendar-disabled-text-color: #d4d4d4;\n --f7-calendar-event-dot-size: 4px;\n /*\n --f7-calendar-event-bg-color: var(--f7-theme-color);\n */\n /*\n --f7-calendar-picker-selected-text-color: var(--f7-theme-color);\n */\n --f7-calendar-time-selector-height: 28px;\n --f7-calendar-picker-pressed-bg-color: rgba(0, 0, 0, 0.1);\n --f7-calendar-picker-hover-bg-color: rgba(0, 0, 0, 0.03);\n --f7-calendar-time-selector-bg-color: rgba(0, 0, 0, 0.05);\n}\n:root .dark,\n:root.dark {\n --f7-calendar-picker-pressed-bg-color: rgba(255, 255, 255, 0.08);\n --f7-calendar-picker-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-calendar-time-selector-bg-color: rgba(255, 255, 255, 0.1);\n}\n.ios {\n --f7-calendar-selected-text-color: #fff;\n --f7-calendar-header-height: 44px;\n --f7-calendar-header-font-size: 17px;\n --f7-calendar-header-font-weight: 600;\n --f7-calendar-header-padding: 0 8px;\n --f7-calendar-footer-height: 44px;\n --f7-calendar-footer-font-size: 17px;\n --f7-calendar-week-header-height: 18px;\n --f7-calendar-day-font-size: 15px;\n --f7-calendar-day-size: 30px;\n --f7-calendar-picker-font-size: 17px;\n --f7-calendar-time-selector-font-size: 17px;\n --f7-calendar-modal-border-radius: 4px;\n --f7-calendar-modal-box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2),\n 0px 24px 38px 3px rgba(0, 0, 0, 0.14),\n 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\n --f7-calendar-prev-next-text-color: #c8c8c8;\n --f7-calendar-sheet-border-color: #929499;\n --f7-calendar-sheet-bg-color: #fff;\n --f7-calendar-week-header-text-color: #5e5e5e;\n --f7-calendar-modal-bg-color: #fff;\n --f7-calendar-day-text-color: #000;\n --f7-calendar-today-text-color: #000;\n --f7-calendar-today-bg-color: #e3e3e3;\n}\n.ios .dark,\n.ios.dark {\n --f7-calendar-prev-next-text-color: #5e5e5e;\n --f7-calendar-sheet-border-color: var(--f7-bars-border-color);\n --f7-calendar-sheet-bg-color: #121212;\n --f7-calendar-week-header-text-color: #aaa;\n --f7-calendar-modal-bg-color: #121212;\n --f7-calendar-day-text-color: #fff;\n --f7-calendar-today-text-color: #fff;\n --f7-calendar-today-bg-color: #333;\n}\n.md {\n --f7-calendar-sheet-border-color: transparent;\n --f7-calendar-header-height: 64px;\n --f7-calendar-header-font-size: 24px;\n --f7-calendar-header-font-weight: 400;\n --f7-calendar-header-padding: 0 24px;\n --f7-calendar-footer-height: 56px;\n --f7-calendar-footer-font-size: 14px;\n --f7-calendar-week-header-height: 24px;\n --f7-calendar-day-font-size: 14px;\n --f7-calendar-today-bg-color: none;\n --f7-calendar-day-size: 32px;\n --f7-calendar-picker-font-size: 14px;\n --f7-calendar-time-selector-font-size: 14px;\n --f7-calendar-modal-border-radius: 28px;\n --f7-calendar-modal-box-shadow: none;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-calendar-sheet-bg-color: var(--f7-md-surface-1);\n --f7-calendar-selected-text-color: var(--f7-md-on-primary);\n --f7-calendar-week-header-text-color: var(--f7-md-on-surface-variant);\n --f7-calendar-day-text-color: var(--f7-md-on-surface);\n --f7-calendar-prev-next-text-color: rgba(var(--f7-md-on-surface-variant-rgb), 0.55);\n --f7-calendar-today-text-color: var(--f7-theme-color);\n --f7-calendar-modal-bg-color: var(--f7-md-surface-1);\n}\n.calendar {\n overflow: hidden;\n height: var(--f7-calendar-height);\n width: 100%;\n display: flex;\n flex-direction: column;\n}\n.calendar.modal-in {\n display: flex;\n}\n@media (orientation: landscape) and (max-height: 415px) {\n .calendar.calendar-sheet {\n height: var(--f7-calendar-sheet-landscape-height);\n }\n .calendar.calendar-modal {\n height: calc(100vh - var(--f7-navbar-height));\n }\n}\n.calendar.calendar-inline,\n.calendar.calendar-popover .calendar {\n position: relative;\n}\n.calendar-sheet {\n --f7-sheet-border-color: var(--f7-calendar-sheet-border-color);\n background: var(--f7-calendar-sheet-bg-color);\n padding-bottom: var(--f7-safe-area-bottom);\n height: calc(var(--f7-calendar-height) + var(--f7-safe-area-bottom));\n}\n.calendar-sheet:before {\n z-index: 600;\n}\n.calendar-sheet .toolbar:before,\n.calendar-modal .toolbar:before,\n.calendar-popover .toolbar:before {\n display: none;\n}\n.calendar-popover {\n width: var(--f7-calendar-popover-width);\n}\n.calendar-popover .toolbar-top,\n.calendar-popover .calendar-header {\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n overflow: hidden;\n}\n.calendar-popover .calendar-header + .toolbar-top {\n border-radius: 0;\n}\n.calendar-popover .toolbar-bottom,\n.calendar-popover .calendar-footer {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.calendar-popover .calendar {\n height: var(--f7-calendar-popover-height);\n position: relative;\n z-index: 1;\n}\n.calendar-popover .calendar-month-picker,\n.calendar-popover .calendar-year-picker,\n.calendar-popover .calendar-time-picker {\n border-radius: var(--f7-popover-border-radius);\n}\n.calendar-popover .calendar-month-picker .picker,\n.calendar-popover .calendar-year-picker .picker,\n.calendar-popover .calendar-time-picker .picker {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n.calendar-header {\n width: 100%;\n position: relative;\n overflow: hidden;\n flex-shrink: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n box-sizing: border-box;\n padding: var(--f7-calendar-header-padding);\n background-color: var(--f7-calendar-header-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-calendar-header-text-color, var(--f7-bars-text-color));\n height: var(--f7-calendar-header-height);\n line-height: var(--f7-calendar-header-height);\n font-size: var(--f7-calendar-header-font-size);\n font-weight: var(--f7-calendar-header-font-weight);\n}\n.calendar-header a {\n color: var(--f7-calendar-header-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.calendar-footer {\n width: 100%;\n flex-shrink: 0;\n padding: var(--f7-calendar-footer-padding);\n background-color: var(--f7-calendar-footer-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-calendar-footer-text-color, var(--f7-bars-text-color));\n height: var(--f7-calendar-footer-height);\n font-size: var(--f7-calendar-header-font-size);\n display: flex;\n justify-content: flex-end;\n box-sizing: border-box;\n align-items: center;\n position: relative;\n}\n.calendar-footer a {\n color: var(--f7-calendar-footer-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.calendar-footer:before {\n content: '';\n position: absolute;\n background-color: var(--f7-calendar-footer-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.calendar-modal {\n position: absolute;\n height: var(--f7-calendar-modal-height);\n overflow: hidden;\n top: 50%;\n left: 50%;\n min-width: 300px;\n max-width: var(--f7-calendar-modal-max-width);\n transform: translate3d(-50%, 100vh, 0);\n transition-property: transform;\n display: flex;\n z-index: 13500;\n background: var(--f7-calendar-modal-bg-color);\n width: 90%;\n border-radius: var(--f7-calendar-modal-border-radius);\n box-shadow: var(--f7-calendar-modal-box-shadow);\n transition-timing-function: cubic-bezier(0, 1, 0.2, 1);\n}\n.calendar-modal.modal-in,\n.calendar-modal.modal-out {\n transition-duration: 400ms;\n}\n.calendar-modal.modal-in {\n transform: translate3d(-50%, -50%, 0);\n}\n.calendar-modal.modal-out {\n transform: translate3d(-50%, 100vh, 0);\n}\n.calendar-week-header {\n display: flex;\n box-sizing: border-box;\n position: relative;\n font-size: var(--f7-calendar-week-header-font-size);\n background-color: var(--f7-calendar-week-header-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-calendar-week-header-text-color, var(--f7-bars-text-color));\n height: var(--f7-calendar-week-header-height);\n padding-left: var(--f7-safe-area-left);\n padding-right: var(--f7-safe-area-right);\n}\n.calendar-week-header .calendar-week-day {\n flex-shrink: 1;\n width: calc(100% / 7);\n text-align: center;\n line-height: var(--f7-calendar-week-header-height);\n}\n.calendar-months {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: relative;\n flex-shrink: 10;\n}\n.calendar-months-wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n transition: 300ms;\n}\n.calendar-month {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n}\n.calendar-row {\n height: 16.66666667%;\n display: flex;\n flex-shrink: 1;\n width: 100%;\n position: relative;\n box-sizing: border-box;\n padding-left: var(--f7-safe-area-left);\n padding-right: var(--f7-safe-area-right);\n}\n.calendar-modal .calendar-months:first-child .calendar-row:first-child:before,\n.calendar-popover .calendar-months:first-child .calendar-row:first-child:before {\n display: none !important;\n}\n.calendar-day {\n flex-shrink: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n box-sizing: border-box;\n width: 14.28571429%;\n text-align: center;\n cursor: pointer;\n z-index: 20;\n color: var(--f7-calendar-day-text-color);\n height: 100%;\n font-size: var(--f7-calendar-day-font-size);\n}\n.calendar-day-today .calendar-day-number {\n color: var(--f7-calendar-today-text-color, var(--f7-theme-color));\n background-color: var(--f7-calendar-today-bg-color);\n}\n.calendar-day-prev,\n.calendar-day-next {\n color: var(--f7-calendar-prev-next-text-color);\n}\n.calendar-day-disabled {\n color: var(--f7-calendar-disabled-text-color);\n cursor: auto;\n}\n.calendar-day-selected .calendar-day-number {\n color: var(--f7-calendar-selected-text-color);\n background-color: var(--f7-calendar-selected-bg-color, var(--f7-theme-color));\n}\n.calendar-day-number {\n display: inline-block;\n border-radius: 50%;\n position: relative;\n width: var(--f7-calendar-day-size);\n height: var(--f7-calendar-day-size);\n line-height: var(--f7-calendar-day-size);\n}\n.calendar-day-events {\n position: absolute;\n display: flex;\n left: 0;\n width: 100%;\n top: 100%;\n align-items: center;\n justify-content: center;\n margin-top: 1px;\n}\n.calendar-day-event {\n width: var(--f7-calendar-event-dot-size);\n height: var(--f7-calendar-event-dot-size);\n border-radius: calc(var(--f7-calendar-event-dot-size) / 2);\n background-color: var(--f7-calendar-event-bg-color);\n}\n.calendar-day-event + .calendar-day-event {\n margin-left: 2px;\n}\n.calendar-day-selected-range,\n.calendar-day-selected-left,\n.calendar-day-selected-right {\n position: relative;\n}\n.calendar-day-selected-range:before,\n.calendar-day-selected-left:before,\n.calendar-day-selected-right:before {\n width: 100%;\n height: var(--f7-calendar-day-size);\n content: '';\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n z-index: -1;\n background-color: var(--f7-calendar-selected-bg-color, var(--f7-theme-color));\n opacity: 0.2;\n}\n.calendar-day-selected-range:first-child:before,\n.calendar-day-selected-left:before {\n left: auto;\n right: 0;\n width: calc(50% + var(--f7-calendar-day-size) / 2);\n border-radius: var(--f7-calendar-day-size) 0 0 var(--f7-calendar-day-size);\n}\n.calendar-day-selected-range:last-child:before,\n.calendar-day-selected-right:before {\n width: calc(50% + var(--f7-calendar-day-size) / 2);\n border-radius: 0 var(--f7-calendar-day-size) var(--f7-calendar-day-size) 0;\n}\n.calendar-day-selected-left:last-child:before,\n.calendar-day-selected-right:first-child:before {\n display: none;\n}\n.calendar-day-selected-left.calendar-day-selected-right:before {\n content: none;\n display: none;\n}\n.calendar-day-selected-range .calendar-day-number {\n background-color: transparent;\n color: inherit;\n}\n.calendar-month-selector,\n.calendar-year-selector {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 50%;\n max-width: 200px;\n flex-shrink: 10;\n margin-left: auto;\n margin-right: auto;\n}\n.calendar-month-selector .calendar-day-number,\n.calendar-year-selector .calendar-day-number {\n flex-shrink: 1;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.calendar-month-selector a.icon-only,\n.calendar-year-selector a.icon-only {\n min-width: 36px;\n}\n.calendar-month-picker,\n.calendar-year-picker,\n.calendar-time-picker {\n position: relative;\n width: 100%;\n height: 100%;\n -webkit-user-select: none;\n user-select: none;\n background: transparent;\n}\n.calendar-month-picker .picker-columns,\n.calendar-year-picker .picker-columns {\n text-align: center;\n}\n.calendar-month-picker-item,\n.calendar-year-picker-item {\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n overflow: hidden;\n cursor: pointer;\n transition-duration: 100ms;\n box-sizing: border-box;\n}\n.calendar-month-picker-item span,\n.calendar-year-picker-item span {\n white-space: nowrap;\n text-overflow: ellipsis;\n box-sizing: border-box;\n position: relative;\n overflow: hidden;\n pointer-events: none;\n}\n.calendar-month-picker-item.active-state,\n.calendar-year-picker-item.active-state {\n background: var(--f7-calendar-picker-pressed-bg-color);\n}\n.calendar-month-picker-item {\n padding: 5px;\n}\n.sheet-modal .calendar-month-picker-item {\n width: 25%;\n height: 33.33333333%;\n}\n.sheet-modal .calendar-month-picker-item:nth-child(4n + 1):before {\n display: none !important;\n}\n.sheet-modal .calendar-month-picker-item:nth-child(n + 9):after {\n display: none !important;\n}\n.popover .calendar-month-picker-item,\n.calendar-modal .calendar-month-picker-item {\n width: 33.33333333%;\n height: 25%;\n}\n.popover .calendar-month-picker-item:nth-child(3n + 1):before,\n.calendar-modal .calendar-month-picker-item:nth-child(3n + 1):before {\n display: none !important;\n}\n.popover .calendar-month-picker-item:nth-child(n + 10):after,\n.calendar-modal .calendar-month-picker-item:nth-child(n + 10):after {\n display: none !important;\n}\n.calendar-month-picker-item-current,\n.calendar-year-picker-item-current {\n color: var(--f7-calendar-picker-selected-text-color, var(--f7-theme-color));\n}\n.calendar-year-picker {\n overflow: auto;\n --webkit-overflow-scrolling: touch;\n}\n.calendar-year-picker-item {\n height: 34px;\n line-height: 34px;\n width: 100%;\n}\n.calendar-time-selector {\n flex-shrink: 0;\n font-size: var(--f7-calendar-time-selector-font-size);\n position: relative;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n}\n.calendar-time-selector a {\n overflow: hidden;\n position: relative;\n justify-content: center;\n align-items: center;\n display: flex;\n box-sizing: border-box;\n height: var(--f7-calendar-time-selector-height);\n background-color: var(--f7-calendar-time-selector-bg-color);\n padding: 0 16px;\n border-radius: 8px;\n}\n.calendar-time-selector > span {\n font-weight: 500;\n}\n.calendar-time-selector .segmented {\n margin-left: 8px;\n}\n.calendar-time-picker-popover,\n.calendar-year-picker-popover,\n.calendar-month-picker-popover {\n height: 240px;\n width: 240px;\n}\n.calendar-time-picker-popover .popover-inner,\n.calendar-year-picker-popover .popover-inner,\n.calendar-month-picker-popover .popover-inner {\n height: 100%;\n overflow: hidden;\n}\n.calendar-time-picker {\n --f7-picker-popover-height: 100%;\n --f7-picker-inline-height: 100%;\n}\n.calendar-time-picker .toolbar {\n flex-shrink: 0;\n top: 0 !important;\n}\n.calendar-time-picker .picker {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n/* === Picker === */\n:root {\n --f7-picker-height: 260px;\n --f7-picker-inline-height: 200px;\n --f7-picker-popover-height: 260px;\n --f7-picker-popover-width: 280px;\n --f7-picker-landscape-height: 200px;\n --f7-picker-item-height: 36px;\n /*\n --f7-picker-sheet-bg-color: var(--f7-sheet-bg-color);\n */\n}\n.ios {\n --f7-picker-column-font-size: 20px;\n --f7-picker-item-selected-text-color: #000;\n --f7-picker-item-selected-bg-color: rgba(0, 0, 0, 0.12);\n --f7-picker-divider-text-color: #000;\n --f7-picker-item-text-color: rgba(0, 0, 0, 0.45);\n}\n.ios .dark,\n.ios.dark {\n --f7-picker-item-selected-text-color: #fff;\n --f7-picker-item-selected-bg-color: rgba(255, 255, 255, 0.1);\n --f7-picker-divider-text-color: #fff;\n --f7-picker-item-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-picker-column-font-size: 20px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-picker-item-selected-text-color: var(--f7-md-on-surface);\n --f7-picker-item-text-color: var(--f7-md-on-surface-variant);\n --f7-picker-divider-text-color: var(--f7-md-on-surface);\n --f7-picker-item-selected-border-color: var(--f7-md-outline);\n}\n.picker {\n width: 100%;\n height: var(--f7-picker-height);\n}\n.picker.picker-inline {\n height: var(--f7-picker-inline-height);\n}\n.popover .picker {\n height: var(--f7-picker-popover-height);\n}\n@media (orientation: landscape) and (max-height: 415px) {\n .picker:not(.picker-inline) {\n height: var(--f7-picker-landscape-height);\n }\n}\n.picker.sheet-modal {\n background: var(--f7-picker-sheet-bg-color, var(--f7-sheet-bg-color));\n}\n.picker-popover {\n width: var(--f7-picker-popover-width);\n}\n.picker-popover .toolbar {\n background: none;\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n}\n.picker-popover .toolbar:before {\n display: none !important;\n}\n.picker-popover .toolbar + .picker-columns {\n height: calc(100% - var(--f7-toolbar-height));\n}\n.picker-columns {\n display: flex;\n overflow: hidden;\n justify-content: center;\n padding: 0;\n text-align: right;\n height: 100%;\n position: relative;\n font-size: var(--f7-picker-column-font-size);\n --f7-picker-mask-bg-color: transparent;\n}\n.popover .picker-columns {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.picker-columns::before,\n.picker-columns::after {\n content: '';\n position: absolute;\n left: 0;\n width: 100%;\n height: 20%;\n z-index: 100;\n pointer-events: none;\n}\n.page .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-page-bg-color);\n}\n.block-strong .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-block-strong-bg-color);\n}\n.picker-sheet .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-picker-sheet-bg-color, var(--f7-sheet-bg-color));\n}\n.picker-popover .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-popover-bg-color);\n}\n.picker-columns::before {\n top: 0;\n background-image: linear-gradient(to bottom, var(--f7-picker-mask-bg-color), transparent);\n}\n.picker-columns::after {\n bottom: 0;\n background-image: linear-gradient(to top, var(--f7-picker-mask-bg-color), transparent);\n}\n.picker-column {\n position: relative;\n max-height: 100%;\n z-index: 10;\n}\n.picker-column.picker-column-first.picker-column-last {\n width: 100%;\n}\n.picker-column.picker-column-left {\n text-align: left;\n}\n.picker-column.picker-column-center {\n text-align: center;\n}\n.picker-column.picker-column-right {\n text-align: right;\n}\n.picker-column.picker-column-divider {\n display: flex;\n align-items: center;\n color: var(--f7-picker-divider-text-color);\n}\n.picker-items {\n overflow: auto;\n scroll-snap-type: y mandatory;\n height: 100%;\n box-sizing: border-box;\n padding: var(--f7-picker-scroll-padding, 0px) 0px;\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.picker-items::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.picker-items::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.picker-items::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.picker-item {\n height: var(--f7-picker-item-height);\n line-height: var(--f7-picker-item-height);\n white-space: nowrap;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n left: 0;\n top: 0;\n width: 100%;\n box-sizing: border-box;\n color: var(--f7-picker-item-text-color);\n cursor: pointer;\n scroll-snap-align: center;\n}\n.picker-item span {\n padding: 0 10px;\n}\n.picker-item.picker-item-far {\n pointer-events: none;\n}\n.picker-item.picker-item-selected {\n color: var(--f7-picker-item-selected-text-color);\n transform: translate3d(0, 0, 0) rotateX(0deg);\n}\n.picker-column-free-mode .picker-item {\n scroll-snap-align: none;\n}\n.picker-center-highlight {\n height: var(--f7-picker-item-height);\n box-sizing: border-box;\n position: absolute;\n top: 50%;\n margin-top: calc(-1 * var(--f7-picker-item-height) / 2);\n pointer-events: none;\n}\n.picker-3d .picker-columns {\n overflow: hidden;\n}\n.picker-3d .picker-column,\n.picker-3d .picker-items,\n.picker-3d .picker-item {\n transform-style: preserve-3d;\n}\n.picker-3d .picker-column {\n overflow: visible;\n}\n.picker-3d .picker-item {\n perspective: 1200px;\n overflow: visible;\n}\n.picker-3d .picker-item > span {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n display: block;\n transform-style: preserve-3d;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n box-sizing: border-box;\n max-width: 100%;\n transform-origin: center center -100px;\n}\n.ios .picker-center-highlight {\n left: 16px;\n right: 16px;\n background-color: var(--f7-picker-item-selected-bg-color);\n border-radius: 8px;\n}\n.popover .ios .picker-center-highlight {\n left: 8px;\n right: 8px;\n}\n.md .picker-center-highlight {\n left: 0;\n right: 0;\n border-top: 1px solid var(--f7-md-outline);\n border-bottom: 1px solid var(--f7-md-outline);\n}\n/* === Infinite === */\n.infinite-scroll-preloader {\n margin-left: auto;\n margin-right: auto;\n text-align: center;\n}\n.infinite-scroll-preloader.preloader {\n display: block;\n}\n.ios .infinite-scroll-preloader {\n margin-top: 35px;\n margin-bottom: 35px;\n}\n.ios .infinite-scroll-preloader .preloader,\n.ios .infinite-scroll-preloader.preloader {\n width: 27px;\n height: 27px;\n}\n.md .infinite-scroll-preloader {\n margin-top: 32px;\n margin-bottom: 32px;\n}\n/* === PTR === */\n.ios {\n --f7-ptr-preloader-size: 28px;\n --f7-ptr-size: 44px;\n}\n.md {\n --f7-ptr-preloader-size: 22px;\n --f7-ptr-size: 40px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-ptr-preloader-bg-color: var(--f7-md-surface-1);\n --f7-ptr-preloader-color: var(--f7-md-primary);\n}\n.ptr-preloader {\n position: relative;\n top: var(--f7-ptr-top, 0);\n height: var(--f7-ptr-size);\n pointer-events: none;\n}\n.ptr-preloader .preloader {\n position: absolute;\n left: 50%;\n width: var(--f7-ptr-preloader-size);\n height: var(--f7-ptr-preloader-size);\n margin-left: calc(-1 * var(--f7-ptr-preloader-size) / 2);\n margin-top: calc(-1 * var(--f7-ptr-preloader-size) / 2);\n top: 50%;\n visibility: hidden;\n}\n.ptr-bottom .ptr-preloader {\n top: auto;\n bottom: 0;\n position: fixed;\n}\n.ptr-with-navbar-large-transparent .ptr-preloader,\n.ptr-with-navbar-transparent .ptr-preloader {\n top: calc(-1 * var(--f7-page-navbar-offset, 0px) + var(--f7-safe-area-top));\n}\n.ios .ptr-preloader {\n margin-bottom: calc(-1 * var(--f7-ptr-size));\n width: 100%;\n left: 0;\n top: 0;\n position: relative;\n}\n.ios .ptr-preloader .preloader {\n visibility: visible;\n}\n.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,\n.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner {\n animation: none;\n}\n.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up):not(.ptr-pull-down) .ptr-preloader .preloader-inner-line,\n.ios .ptr-content.ptr-closing .ptr-preloader .preloader-inner-line {\n opacity: 0 !important;\n}\n.ios .ptr-transitioning > *,\n.ios .ptr-refreshing > * {\n transition-duration: 200ms;\n transition-property: transform;\n}\n.ios .ptr-transitioning .ptr-preloader .preloader-inner-line {\n transition-duration: 200ms;\n}\n.ios .ptr-pull-up .ptr-preloader .preloader {\n animation: ios-ptr-preloader-spin 1s ease-out forwards;\n}\n.ios .ptr-refreshing:not(.ptr-bottom) {\n transform: none;\n}\n.ios .ptr-refreshing:not(.ptr-bottom) > * {\n transform: translate3d(0, var(--f7-ptr-size), 0);\n}\n.ios .ptr-refreshing:not(.ptr-bottom) > .ptr-preloader {\n transform: translate3d(0, 0, 0);\n}\n.ios .ptr-bottom .ptr-preloader {\n margin-bottom: 0;\n margin-top: calc(-1 * var(--f7-ptr-size));\n position: relative;\n}\n.ios .ptr-bottom.ptr-transitioning > *,\n.ios .ptr-bottom.ptr-refreshing > * {\n transition-duration: 300ms;\n transition-property: transform;\n}\n.ios .ptr-bottom.ptr-refreshing {\n transform: none;\n}\n.ios .ptr-bottom.ptr-refreshing > * {\n transform: translate3d(0, calc(-1 * var(--f7-ptr-size)), 0);\n}\n.ios .ptr-bottom.ptr-refreshing > .ptr-preloader {\n transform: translate3d(0, 0, 0);\n}\n@keyframes ios-ptr-preloader-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(135deg);\n }\n}\n.md {\n --f7-ptr-top: -4px;\n}\n.md .ptr-preloader {\n width: var(--f7-ptr-size);\n border-radius: 50%;\n background: var(--f7-ptr-preloader-bg-color);\n --f7-preloader-color: var(--f7-ptr-preloader-color);\n margin-top: calc(-1 * var(--f7-ptr-size));\n z-index: 100;\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\n right: 50%;\n margin-right: calc(-1 * var(--f7-ptr-size) / 2);\n}\n.md .ptr-preloader .preloader circle {\n stroke-width: 4;\n}\n.md .ptr-arrow {\n width: 22px;\n height: 22px;\n box-sizing: border-box;\n border: 3px solid var(--f7-preloader-color);\n position: absolute;\n left: 50%;\n top: 50%;\n margin-left: -11px;\n margin-top: -11px;\n border-left-color: transparent;\n border-radius: 50%;\n opacity: 1;\n transform: rotate(150deg);\n}\n.md .ptr-arrow:after {\n content: '';\n width: 0px;\n height: 0px;\n position: absolute;\n left: -5px;\n bottom: 0px;\n border-bottom-width: 6px;\n border-bottom-style: solid;\n border-bottom-color: inherit;\n border-left: 5px solid transparent;\n border-right: 5px solid transparent;\n transform: rotate(-40deg);\n}\n.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,\n.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner,\n.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader circle {\n animation: none;\n}\n.md .ptr-refreshing .ptr-preloader .preloader,\n.md .ptr-pull-up .ptr-preloader .preloader {\n visibility: visible;\n}\n.md .ptr-refreshing .ptr-arrow,\n.md .ptr-pull-up .ptr-arrow {\n visibility: hidden;\n}\n.md .ptr-refreshing .ptr-preloader {\n transform: translate3d(0, 66px, 0);\n}\n.md .ptr-transitioning .ptr-arrow {\n transition: 300ms;\n}\n.md .ptr-pull-up .ptr-arrow {\n transition: 400ms;\n transform: rotate(620deg) !important;\n opacity: 0;\n}\n.md .ptr-transitioning .ptr-preloader,\n.md .ptr-refreshing .ptr-preloader {\n transition-duration: 300ms;\n transition-property: transform, opacity;\n}\n.md .ptr-bottom .ptr-preloader {\n margin-top: 0;\n margin-bottom: calc(-1 * var(--f7-ptr-size) - 4px);\n}\n.md .ptr-bottom.ptr-refreshing .ptr-preloader {\n transform: translate3d(0, -66px, 0);\n}\n.md .ptr-with-navbar-large-transparent .ptr-preloader,\n.md .ptr-with-navbar-transparent .ptr-preloader {\n opacity: 0;\n}\n.md .ptr-with-navbar-large-transparent.ptr-pull-down .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-pull-down .ptr-preloader,\n.md .ptr-with-navbar-large-transparent.ptr-pull-up .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-pull-up .ptr-preloader,\n.md .ptr-with-navbar-large-transparent.ptr-refreshing .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-refreshing .ptr-preloader {\n opacity: 1;\n}\n.md .ptr-with-navbar-large-transparent.ptr-closing .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-closing .ptr-preloader {\n opacity: 0;\n transition-duration: 300ms;\n}\n/* === Data Table === */\n:root {\n --f7-table-head-font-size: 12px;\n --f7-table-body-font-size: 14px;\n --f7-table-footer-font-size: 12px;\n --f7-table-input-height: 24px;\n --f7-table-input-font-size: 14px;\n --f7-table-collapsible-cell-padding: 16px;\n --f7-table-link-icon-only-icon-size: 20px;\n --f7-table-head-bg-color: transparent;\n --f7-table-card-header-bg-color: transparent;\n --f7-table-card-header-height: 64px;\n --f7-table-cell-padding-vertical: 0px;\n --f7-table-sortable-icon-color: #000;\n}\n:root .dark,\n:root.dark {\n --f7-table-sortable-icon-color: #fff;\n --f7-table-input-text-color: #fff;\n}\n.ios {\n --f7-table-head-font-weight: 600;\n --f7-table-head-cell-height: 44px;\n --f7-table-head-icon-size: 18px;\n --f7-table-body-cell-height: 44px;\n --f7-table-cell-padding-horizontal: 16px;\n --f7-table-edge-cell-padding-horizontal: 16px;\n --f7-table-label-cell-padding-horizontal: 16px;\n --f7-table-checkbox-cell-width: 22px;\n /* --f7-table-actions-cell-link-color: var(--f7-theme-color); */\n /* --f7-table-actions-link-color: var(--f7-theme-color); */\n --f7-table-title-font-size: 17px;\n --f7-table-title-font-weight: 600;\n --f7-table-footer-height: 44px;\n --f7-table-head-text-color: rgba(0, 0, 0, 0.45);\n --f7-table-cell-border-color: rgba(0, 0, 0, 0.22);\n --f7-table-selected-row-bg-color: rgba(0, 0, 0, 0.03);\n --f7-table-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-table-input-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-table-head-text-color: rgba(255, 255, 255, 0.55);\n --f7-table-cell-border-color: rgba(255, 255, 255, 0.15);\n --f7-table-footer-text-color: rgba(255, 255, 255, 0.55);\n --f7-table-selected-row-bg-color: rgba(255, 255, 255, 0.08);\n}\n.md {\n --f7-table-head-font-weight: 500;\n --f7-table-head-cell-height: 56px;\n --f7-table-head-icon-size: 16px;\n --f7-table-body-cell-height: 48px;\n --f7-table-cell-padding-horizontal: 28px;\n --f7-table-edge-cell-padding-horizontal: 24px;\n --f7-table-label-cell-padding-horizontal: 24px;\n --f7-table-checkbox-cell-width: 18px;\n --f7-table-title-font-size: 20px;\n --f7-table-title-font-weight: 400;\n --f7-table-footer-height: 56px;\n --f7-table-actions-cell-link-color: rgba(0, 0, 0, 0.54);\n --f7-table-actions-link-color: rgba(0, 0, 0, 0.54);\n --f7-table-input-text-color: #212121;\n}\n.md .dark,\n.md.dark {\n --f7-table-actions-cell-link-color: rgba(255, 255, 255, 0.54);\n --f7-table-actions-link-color: rgba(255, 255, 255, 0.54);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-table-head-text-color: var(--f7-md-on-surface-variant);\n --f7-table-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-table-selected-row-bg-color: var(--f7-md-secondary-container);\n --f7-table-cell-border-color: var(--f7-md-outline);\n}\n.data-table {\n overflow-x: auto;\n}\n.data-table table,\ntable.data-table {\n width: 100%;\n border: none;\n padding: 0;\n margin: 0;\n border-collapse: collapse;\n text-align: right;\n}\n.data-table thead th,\n.data-table thead td {\n font-size: var(--f7-table-head-font-size);\n font-weight: var(--f7-table-head-font-weight);\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n line-height: 16px;\n height: var(--f7-table-head-cell-height);\n background-color: var(--f7-table-head-bg-color);\n}\n.data-table thead th:not(.sortable-cell-active),\n.data-table thead td:not(.sortable-cell-active) {\n color: var(--f7-table-head-text-color);\n}\n.data-table thead i.icon,\n.data-table thead i.f7-icons,\n.data-table thead i.material-icons {\n vertical-align: top;\n font-size: var(--f7-table-head-icon-size);\n}\n.data-table tbody {\n font-size: var(--f7-table-body-font-size);\n}\n.data-table tbody th,\n.data-table tbody td {\n height: var(--f7-table-body-cell-height);\n}\n.data-table tbody tr.data-table-row-selected,\n.device-desktop .data-table tbody tr:hover {\n background: var(--f7-table-selected-row-bg-color);\n}\n.data-table tbody td:before,\n.data-table tbody th:before {\n content: '';\n position: absolute;\n background-color: var(--f7-table-cell-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.data-table th,\n.data-table td {\n --f7-table-cell-padding-left: var(--f7-table-cell-padding-horizontal);\n --f7-table-cell-padding-right: var(--f7-table-cell-padding-horizontal);\n padding-top: var(--f7-table-cell-padding-vertical);\n padding-bottom: var(--f7-table-cell-padding-vertical);\n padding-left: var(--f7-table-cell-padding-left);\n padding-right: var(--f7-table-cell-padding-right);\n position: relative;\n box-sizing: border-box;\n}\n.data-table th:first-child,\n.data-table td:first-child {\n --f7-table-cell-padding-right: var(--f7-table-edge-cell-padding-horizontal);\n}\n.data-table th:last-child,\n.data-table td:last-child {\n --f7-table-cell-padding-left: var(--f7-table-edge-cell-padding-horizontal);\n}\n.data-table th.label-cell,\n.data-table td.label-cell {\n --f7-table-cell-padding-left: var(--f7-table-label-cell-padding-horizontal);\n --f7-table-cell-padding-right: var(--f7-table-label-cell-padding-horizontal);\n}\n.data-table th.numeric-cell,\n.data-table td.numeric-cell {\n text-align: left;\n}\n.data-table th.checkbox-cell,\n.data-table td.checkbox-cell {\n overflow: visible;\n width: var(--f7-table-checkbox-cell-width);\n}\n.data-table th.checkbox-cell label + span,\n.data-table td.checkbox-cell label + span {\n margin-right: 8px;\n}\n.data-table th.checkbox-cell:first-child,\n.data-table td.checkbox-cell:first-child {\n padding-left: calc(var(--f7-table-cell-padding-left) / 2);\n}\n.data-table th.checkbox-cell:first-child + td,\n.data-table td.checkbox-cell:first-child + td,\n.data-table th.checkbox-cell:first-child + th,\n.data-table td.checkbox-cell:first-child + th {\n padding-right: calc(var(--f7-table-cell-padding-right) / 2);\n}\n.data-table th.checkbox-cell:last-child,\n.data-table td.checkbox-cell:last-child {\n padding-right: calc(var(--f7-table-cell-padding-right) / 2);\n}\n.data-table th.actions-cell,\n.data-table td.actions-cell {\n text-align: left;\n white-space: nowrap;\n}\n.data-table th.actions-cell a.link,\n.data-table td.actions-cell a.link {\n color: var(--f7-table-actions-cell-link-color, var(--f7-theme-color));\n}\n.data-table th a.icon-only,\n.data-table td a.icon-only,\n.card .data-table th a.icon-only,\n.card .data-table td a.icon-only,\n.card.data-table th a.icon-only,\n.card.data-table td a.icon-only {\n display: inline-block;\n vertical-align: middle;\n text-align: center;\n font-size: 0;\n min-width: 0;\n}\n.data-table th a.icon-only i,\n.data-table td a.icon-only i,\n.card .data-table th a.icon-only i,\n.card .data-table td a.icon-only i,\n.card.data-table th a.icon-only i,\n.card.data-table td a.icon-only i {\n font-size: var(--f7-table-link-icon-only-icon-size);\n vertical-align: middle;\n}\n.data-table .sortable-cell:not(.input-cell) {\n cursor: pointer;\n position: relative;\n}\n.data-table .sortable-cell.input-cell .table-head-label {\n cursor: pointer;\n position: relative;\n}\n.data-table .sortable-cell:not(.numeric-cell):not(.input-cell):after,\n.data-table .sortable-cell.numeric-cell:not(.input-cell):before,\n.data-table .sortable-cell:not(.numeric-cell).input-cell > .table-head-label:after,\n.data-table .sortable-cell.numeric-cell.input-cell > .table-head-label:before {\n content: 'arrow_bottom_md';\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n display: inline-block;\n vertical-align: top;\n width: 16px;\n height: 16px;\n color: var(--f7-table-sortable-icon-color);\n font-size: 13px;\n line-height: 16px;\n transition-duration: 300ms;\n transform: rotate(0);\n opacity: 0;\n}\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:after,\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:after,\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:before,\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:before {\n opacity: 0.54;\n}\n.data-table .sortable-cell.sortable-cell-active:after,\n.data-table .sortable-cell.sortable-cell-active .table-head-label:after,\n.data-table .sortable-cell.sortable-cell-active:before,\n.data-table .sortable-cell.sortable-cell-active .table-head-label:before {\n opacity: 0.87 !important;\n}\n.data-table .sortable-cell.sortable-desc:after,\n.data-table .sortable-cell.sortable-desc:after,\n.data-table .table-head-label:after,\n.data-table .sortable-cell.sortable-desc:before,\n.data-table .sortable-cell.sortable-desc:before,\n.data-table .table-head-label:before {\n transform: rotate(180deg) !important;\n}\n.data-table.card .card-header,\n.card .data-table .card-header,\n.data-table.card .card-footer,\n.card .data-table .card-footer {\n padding-left: var(--f7-table-edge-cell-padding-horizontal);\n padding-right: var(--f7-table-edge-cell-padding-horizontal);\n}\n.data-table.card .card-header,\n.card .data-table .card-header {\n min-height: var(--f7-table-card-header-height);\n background-color: var(--f7-table-card-header-bg-color);\n}\n.data-table.card .card-content,\n.card .data-table .card-content {\n overflow-x: auto;\n}\n.data-table.card .card-footer,\n.card .data-table .card-footer {\n min-height: var(--f7-table-footer-height);\n}\n.data-table .data-table-title {\n font-size: var(--f7-table-title-font-size);\n font-weight: var(--f7-table-title-font-weight);\n}\n.data-table .data-table-links,\n.data-table .data-table-actions {\n display: flex;\n}\n.data-table .data-table-links .button {\n min-width: 64px;\n}\n.data-table .data-table-actions {\n margin-right: auto;\n align-items: center;\n}\n.data-table .data-table-actions a.link {\n color: var(--f7-table-actions-link-color, var(--f7-theme-color));\n min-width: 0;\n}\n.data-table .data-table-actions a.link.icon-only {\n line-height: 1;\n justify-content: center;\n padding: 0;\n}\n.data-table .data-table-header,\n.data-table .data-table-header-selected {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n}\n.data-table .card-header > .data-table-header,\n.data-table .card-header > .data-table-header-selected {\n padding-top: var(--f7-card-header-padding-vertical);\n padding-bottom: var(--f7-card-header-padding-vertical);\n height: 100%;\n margin-top: calc(-1 * var(--f7-card-header-padding-vertical));\n margin-bottom: calc(-1 * var(--f7-card-header-padding-vertical));\n min-height: var(--f7-table-card-header-height);\n padding-right: var(--f7-table-edge-cell-padding-horizontal);\n padding-left: var(--f7-table-edge-cell-padding-horizontal);\n margin-right: calc(-1 * var(--f7-table-edge-cell-padding-horizontal));\n margin-left: calc(-1 * var(--f7-table-edge-cell-padding-horizontal));\n}\n.data-table .data-table-header-selected {\n background: rgba(var(--f7-theme-color-rgb), 0.1);\n display: none;\n}\n.data-table.data-table-has-checked .data-table-header {\n display: none;\n}\n.data-table.data-table-has-checked .data-table-header-selected {\n display: flex;\n}\n.data-table .data-table-title-selected {\n font-size: 14px;\n color: var(--f7-theme-color);\n}\n.data-table .data-table-footer {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n position: relative;\n font-size: var(--f7-table-footer-font-size);\n overflow: hidden;\n min-height: var(--f7-table-footer-height);\n color: var(--f7-table-footer-text-color);\n justify-content: flex-start;\n}\n.data-table .data-table-footer:before {\n content: '';\n position: absolute;\n background-color: var(--f7-table-cell-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.data-table .data-table-rows-select,\n.data-table .data-table-pagination {\n display: flex;\n align-items: center;\n}\n.data-table .input-cell {\n padding-top: 8px;\n padding-bottom: 8px;\n height: auto;\n vertical-align: top;\n}\n.data-table .input-cell .table-head-label + .input {\n margin-top: 4px;\n}\n.data-table .input-cell .input {\n height: var(--f7-table-input-height);\n}\n.data-table .input-cell .input input,\n.data-table .input-cell .input textarea,\n.data-table .input-cell .input select {\n height: var(--f7-table-input-height);\n color: var(--f7-table-input-text-color);\n font-size: var(--f7-table-input-font-size);\n}\n@media (max-width: 480px) and (orientation: portrait) {\n .data-table.data-table-collapsible thead {\n display: none;\n }\n .data-table.data-table-collapsible tbody,\n .data-table.data-table-collapsible tr,\n .data-table.data-table-collapsible td {\n display: block;\n }\n .data-table.data-table-collapsible tr {\n position: relative;\n }\n .data-table.data-table-collapsible tr:before {\n content: '';\n position: absolute;\n background-color: var(--f7-table-cell-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n .data-table.data-table-collapsible tr:hover {\n background-color: inherit;\n }\n .data-table.data-table-collapsible td {\n --f7-table-cell-padding-left: var(--f7-table-collapsible-cell-padding);\n --f7-table-cell-padding-right: var(--f7-table-collapsible-cell-padding);\n height: auto;\n min-height: var(--f7-table-body-cell-height);\n display: flex;\n align-content: center;\n align-items: center;\n justify-content: flex-start;\n text-align: right;\n }\n .data-table.data-table-collapsible td:before {\n display: none !important;\n }\n .data-table.data-table-collapsible td:not(.checkbox-cell):before {\n width: 40%;\n display: block !important;\n content: attr(data-collapsible-title);\n position: relative;\n height: auto;\n background: none !important;\n transform: none !important;\n font-size: var(--f7-table-head-font-size);\n font-weight: var(--f7-table-head-font-weight);\n color: var(--f7-table-head-text-color);\n margin-left: 16px;\n flex-shrink: 0;\n }\n .data-table.data-table-collapsible td.checkbox-cell {\n position: absolute;\n top: 0;\n right: 0;\n }\n .data-table.data-table-collapsible td.checkbox-cell + td {\n padding-right: 16px;\n }\n .data-table.data-table-collapsible td.checkbox-cell ~ td {\n margin-right: 32px;\n }\n}\n.data-table .xsmall-only,\n.data-table .xsmall-landscape-only {\n display: none;\n}\n@media (min-width: 480px) {\n .data-table .xsmall-only {\n display: table-cell;\n }\n}\n@media (min-width: 480px) and (orientation: landscape) {\n .data-table .xsmall-landscape-only {\n display: table-cell;\n }\n}\n.data-table .small-only,\n.data-table .small-landscape-only {\n display: none;\n}\n@media (min-width: 568px) {\n .data-table .small-only {\n display: table-cell;\n }\n}\n@media (min-width: 568px) and (orientation: landscape) {\n .data-table .small-landscape-only {\n display: table-cell;\n }\n}\n.data-table .medium-only,\n.data-table .medium-landscape-only {\n display: none;\n}\n@media (min-width: 768px) {\n .data-table .medium-only {\n display: table-cell;\n }\n}\n@media (min-width: 768px) and (orientation: landscape) {\n .data-table .medium-landscape-only {\n display: table-cell;\n }\n}\n.data-table .large-only,\n.data-table .large-landscape-only {\n display: none;\n}\n@media (min-width: 1024px) {\n .data-table .large-only {\n display: table-cell;\n }\n}\n@media (min-width: 1024px) and (orientation: landscape) {\n .data-table .large-landscape-only {\n display: table-cell;\n }\n}\n.data-table .xlarge-only,\n.data-table .xlarge-landscape-only {\n display: none;\n}\n@media (min-width: 1200px) {\n .data-table .xlarge-only {\n display: table-cell;\n }\n}\n@media (min-width: 1200px) and (orientation: landscape) {\n .data-table .xlarge-landscape-only {\n display: table-cell;\n }\n}\n.ios .data-table th.actions-cell a.link + a.link,\n.ios .data-table td.actions-cell a.link + a.link {\n margin-right: 16px;\n}\n.ios .sortable-cell:not(.numeric-cell):after {\n margin-right: 5px;\n}\n.ios .sortable-cell.numeric-cell:before {\n margin-left: 5px;\n}\n.ios .data-table-links a.link + a.link,\n.ios .data-table-actions a.link + a.link,\n.ios .data-table-links .button + .button,\n.ios .data-table-actions .button + .button {\n margin-right: 16px;\n}\n.ios .data-table-actions a.link.icon-only {\n width: 44px;\n height: 44px;\n}\n.ios .data-table-rows-select a.link,\n.ios .data-table-pagination a.link {\n width: 44px;\n height: 44px;\n}\n.ios .data-table-rows-select + .data-table-pagination {\n margin-right: 30px;\n}\n.ios .data-table-rows-select .input {\n margin-right: 20px;\n}\n.ios .data-table-pagination-label {\n margin-left: 16px;\n}\n.md .data-table th.actions-cell a.link + a.link,\n.md .data-table td.actions-cell a.link + a.link {\n margin-right: 24px;\n}\n.md .data-table th.actions-cell a.icon-only,\n.md .data-table td.actions-cell a.icon-only {\n width: 24px;\n height: 24px;\n line-height: 24px;\n}\n.md .sortable-cell:not(.numeric-cell):after {\n margin-right: 8px;\n}\n.md .sortable-cell.numeric-cell:before {\n margin-left: 8px;\n}\n.md .data-table-links a.link + a.link,\n.md .data-table-actions a.link + a.link,\n.md .data-table-links .button + .button,\n.md .data-table-actions .button + .button {\n margin-right: 24px;\n}\n.md .data-table-actions a.link.icon-only {\n width: 24px;\n height: 24px;\n overflow: visible;\n}\n.md .data-table-actions a.link.icon-only.active-state {\n background: none;\n}\n.md .data-table-rows-select a.link,\n.md .data-table-pagination a.link {\n width: 48px;\n height: 48px;\n}\n.md .data-table-rows-select + .data-table-pagination {\n margin-right: 32px;\n}\n.md .data-table-rows-select .input {\n margin-right: 24px;\n}\n.md .data-table-pagination-label {\n margin-left: 20px;\n}\n.md .input-cell .input-clear-button {\n transform: scale(0.8);\n}\n/* === FAB === */\n:root {\n --f7-fab-margin: 16px;\n --f7-fab-extended-text-font-size: 14px;\n --f7-fab-label-padding: 4px 12px;\n --f7-fab-label-font-size: inherit;\n --f7-fab-button-size: 40px;\n}\n.ios {\n /* --f7-fab-pressed-bg-color: var(--f7-theme-color-shade); */\n /* --f7-fab-bg-color: var(--f7-theme-color)); */\n --f7-fab-text-color: #fff;\n --f7-fab-border-radius: 50px;\n --f7-fab-size: 50px;\n --f7-fab-box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.4);\n --f7-fab-extended-text-transform: uppercase;\n --f7-fab-extended-size: 50px;\n --f7-fab-extended-text-padding: 0 20px;\n --f7-fab-extended-text-font-weight: 600;\n --f7-fab-extended-text-letter-spacing: 0;\n --f7-fab-label-border-radius: 4px;\n --f7-fab-label-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.4);\n --f7-fab-label-text-color: #333;\n --f7-fab-label-bg-color: #fff;\n}\n.md {\n /*\n --f7-fab-pressed-bg-color: var(--f7-fab-bg-color, var(--f7-theme-color));\n */\n --f7-fab-border-radius: 16px;\n --f7-fab-size: 56px;\n --f7-fab-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.25);\n --f7-fab-extended-size: 56px;\n --f7-fab-extended-text-padding: 0 16px;\n --f7-fab-extended-text-font-weight: 500;\n --f7-fab-extended-text-letter-spacing: 0;\n --f7-fab-extended-text-transform: none;\n --f7-fab-label-border-radius: 8px;\n --f7-fab-label-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.25);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-fab-bg-color: var(--f7-md-primary-container);\n --f7-fab-text-color: var(--f7-md-on-primary-container);\n --f7-fab-label-text-color: var(--f7-md-on-surface);\n --f7-fab-label-bg-color: var(--f7-md-surface-5);\n}\n.fab-backdrop {\n z-index: 1400;\n}\n.fab {\n position: absolute;\n z-index: 1500;\n}\n.fab a {\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.fab-left-top,\n.fab-left-center,\n.fab-left-bottom {\n left: calc(var(--f7-fab-margin) + var(--f7-safe-area-left));\n}\n.fab-right-top,\n.fab-right-center,\n.fab-right-bottom {\n right: calc(var(--f7-fab-margin) + var(--f7-safe-area-right));\n}\n.fab-left-top,\n.fab-center-top,\n.fab-right-top {\n top: var(--f7-fab-margin);\n}\n.fab-left-bottom,\n.fab-center-bottom,\n.fab-right-bottom {\n bottom: calc(var(--f7-fab-margin) + var(--f7-safe-area-bottom));\n}\n.fab-center-top,\n.fab-center-center,\n.fab-center-bottom {\n left: 50%;\n transform: translateX(-50%);\n}\n.fab-left-center,\n.fab-center-center,\n.fab-right-center {\n top: 50%;\n transform: translateY(-50%);\n}\n.fab-center-center {\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n}\n.fab > a,\n.fab-buttons a {\n background-color: var(--f7-fab-bg-color, var(--f7-theme-color));\n width: var(--f7-fab-size);\n height: var(--f7-fab-size);\n box-shadow: var(--f7-fab-box-shadow);\n border-radius: var(--f7-fab-border-radius);\n position: relative;\n transition-duration: 300ms;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n z-index: 1;\n color: var(--f7-fab-text-color);\n}\n.fab > a i {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate3d(-50%, -50%, 0) rotate(0deg) scale(1);\n transition: 300ms;\n}\n.fab > a i + i {\n transform: translate3d(-50%, -50%, 0) rotate(-90deg) scale(0.5);\n opacity: 0;\n}\n.fab-buttons a {\n border-radius: var(--f7-fab-border-radius);\n width: var(--f7-fab-button-size);\n height: var(--f7-fab-button-size);\n}\n.fab-buttons {\n display: flex;\n visibility: hidden;\n pointer-events: none;\n position: absolute;\n}\n.fab-buttons a {\n opacity: 0;\n}\n.fab-opened:not(.fab-morph) > a i {\n transform: translate3d(-50%, -50%, 0) rotate(90deg) scale(0.5);\n opacity: 0;\n}\n.fab-opened:not(.fab-morph) > a i + i {\n transform: translate3d(-50%, -50%, 0) rotate(0deg) scale(1);\n opacity: 1;\n}\n.fab-opened .fab-buttons {\n visibility: visible;\n pointer-events: auto;\n}\n.fab-opened .fab-buttons a {\n opacity: 1;\n transform: translate3d(0, 0px, 0) scale(1) !important;\n}\n.fab-opened .fab-buttons a:nth-child(2) {\n transition-delay: 50ms;\n}\n.fab-opened .fab-buttons a:nth-child(3) {\n transition-delay: 100ms;\n}\n.fab-opened .fab-buttons a:nth-child(4) {\n transition-delay: 150ms;\n}\n.fab-opened .fab-buttons a:nth-child(5) {\n transition-delay: 200ms;\n}\n.fab-opened .fab-buttons a:nth-child(6) {\n transition-delay: 250ms;\n}\n.fab-buttons-top,\n.fab-buttons-bottom {\n left: 50%;\n width: var(--f7-fab-button-size);\n margin-left: calc(-1 * var(--f7-fab-button-size) / 2);\n}\n.fab-buttons-top {\n bottom: 100%;\n margin-bottom: 16px;\n flex-direction: column-reverse;\n}\n.fab-buttons-top a {\n transform: translate3d(0, 8px, 0) scale(0.3);\n transform-origin: center bottom;\n}\n.fab-buttons-top a + a {\n margin-bottom: 16px;\n}\n.fab-buttons-bottom {\n top: 100%;\n margin-top: 16px;\n flex-direction: column;\n}\n.fab-buttons-bottom a {\n transform: translate3d(0, -8px, 0) scale(0.3);\n transform-origin: center top;\n}\n.fab-buttons-bottom a + a {\n margin-top: 16px;\n}\n.fab-buttons-left,\n.fab-buttons-right {\n top: 50%;\n height: var(--f7-fab-button-size);\n margin-top: calc(-1 * var(--f7-fab-button-size) / 2);\n}\n.fab-buttons-left {\n right: 100%;\n margin-right: 16px;\n}\n.fab-buttons-left a {\n transform: translate3d(8px, 0px, 0) scale(0.3);\n transform-origin: right center;\n}\n.fab-buttons-left a + a {\n margin-right: 16px;\n}\n.fab-buttons-right {\n left: 100%;\n margin-left: 16px;\n flex-direction: row-reverse;\n}\n.fab-buttons-right a {\n transform: translate3d(-8px, 0, 0) scale(0.3);\n transform-origin: left center;\n}\n.fab-buttons-right a + a {\n margin-left: 16px;\n}\n.fab-buttons-center {\n left: 0%;\n top: 0%;\n width: 100%;\n height: 100%;\n}\n.fab-buttons-center a {\n position: absolute;\n}\n.fab-buttons-center a:nth-child(1) {\n left: 50%;\n margin-left: calc(-1 * var(--f7-fab-button-size) / 2);\n bottom: 100%;\n margin-bottom: 16px;\n transform: translateY(-8px) scale(0.3);\n transform-origin: center bottom;\n}\n.fab-buttons-center a:nth-child(2) {\n left: 100%;\n margin-top: calc(-1 * var(--f7-fab-button-size) / 2);\n top: 50%;\n margin-left: 16px;\n transform: translateX(-8px) scale(0.3);\n transform-origin: left center;\n}\n.fab-buttons-center a:nth-child(3) {\n left: 50%;\n margin-left: calc(-1 * var(--f7-fab-button-size) / 2);\n top: 100%;\n margin-top: 16px;\n transform: translateY(8px) scale(0.3);\n transform-origin: center top;\n}\n.fab-buttons-center a:nth-child(4) {\n right: 100%;\n margin-top: calc(-1 * var(--f7-fab-button-size) / 2);\n top: 50%;\n margin-right: 16px;\n transform: translateX(8px) scale(0.3);\n transform-origin: right center;\n}\n.fab-morph {\n border-radius: var(--f7-fab-border-radius);\n background: var(--f7-fab-bg-color, var(--f7-theme-color));\n box-shadow: var(--f7-fab-box-shadow);\n}\n.fab-morph > a {\n box-shadow: none;\n background: none !important;\n}\n.fab-opened.fab-morph > a i {\n opacity: 0;\n}\n.fab-morph,\n.fab-morph > a,\n.fab-morph-target {\n transition-duration: 250ms;\n}\n.fab-morph-target:not(.fab-morph-target-visible) {\n display: none;\n}\n.fab-extended {\n width: auto;\n min-width: var(--f7-fab-extended-size);\n}\n.fab-extended > a {\n width: 100%;\n height: var(--f7-fab-extended-size);\n}\n.fab-extended > a i {\n left: calc(var(--f7-fab-extended-size) / 2);\n}\n.fab-extended i ~ .fab-text {\n padding-left: var(--f7-fab-extended-size);\n}\n.fab-extended > a {\n width: 100% !important;\n}\n.fab-text {\n box-sizing: border-box;\n font-size: var(--f7-fab-extended-text-font-size);\n padding: var(--f7-fab-extended-text-padding);\n font-weight: var(--f7-fab-extended-text-font-weight);\n letter-spacing: var(--f7-fab-extended-text-letter-spacing);\n text-transform: var(--f7-fab-extended-text-transform);\n}\n.fab-label-button {\n overflow: visible !important;\n}\n.fab-label {\n position: absolute;\n top: 50%;\n padding: var(--f7-fab-label-padding);\n border-radius: var(--f7-fab-label-border-radius);\n background: var(--f7-fab-label-bg-color);\n color: var(--f7-fab-label-text-color);\n box-shadow: var(--f7-fab-label-box-shadow);\n white-space: nowrap;\n transform: translateY(-50%);\n pointer-events: none;\n font-size: var(--f7-fab-label-font-size);\n}\n.fab-right-top .fab-label,\n.fab-right-center .fab-label,\n.fab-right-bottom .fab-label {\n right: 100%;\n margin-right: 8px;\n}\n.fab-left-top .fab-label,\n.fab-left-center .fab-label,\n.fab-left-bottom .fab-label {\n left: 100%;\n margin-left: 8px;\n}\n.navbar ~ * .fab-left-top,\n.navbar ~ * .fab-center-top,\n.navbar ~ * .fab-right-top,\n.navbar ~ .fab-left-top,\n.navbar ~ .fab-center-top,\n.navbar ~ .fab-right-top,\n.navbars ~ * .fab-left-top,\n.navbars ~ * .fab-center-top,\n.navbars ~ * .fab-right-top,\n.navbars ~ .fab-left-top,\n.navbars ~ .fab-center-top,\n.navbars ~ .fab-right-top {\n margin-top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.toolbar-top ~ * .fab-left-top,\n.toolbar-top ~ * .fab-center-top,\n.toolbar-top ~ * .fab-right-top,\n.toolbar-top ~ .fab-left-top,\n.toolbar-top ~ .fab-center-top,\n.toolbar-top ~ .fab-right-top,\n.ios .toolbar-top-ios ~ * .fab-left-top,\n.ios .toolbar-top-ios ~ * .fab-center-top,\n.ios .toolbar-top-ios ~ * .fab-right-top,\n.ios .toolbar-top-ios ~ .fab-left-top,\n.ios .toolbar-top-ios ~ .fab-center-top,\n.ios .toolbar-top-ios ~ .fab-right-top,\n.md .toolbar-top-md ~ * .fab-left-top,\n.md .toolbar-top-md ~ * .fab-center-top,\n.md .toolbar-top-md ~ * .fab-right-top,\n.md .toolbar-top-md ~ .fab-left-top,\n.md .toolbar-top-md ~ .fab-center-top,\n.md .toolbar-top-md ~ .fab-right-top {\n margin-top: var(--f7-toolbar-height);\n}\n.toolbar-bottom ~ * .fab-left-bottom,\n.toolbar-bottom ~ * .fab-center-bottom,\n.toolbar-bottom ~ * .fab-right-bottom,\n.toolbar-bottom ~ .fab-left-bottom,\n.toolbar-bottom ~ .fab-center-bottom,\n.toolbar-bottom ~ .fab-right-bottom,\n.ios .toolbar-bottom-ios ~ * .fab-left-bottom,\n.ios .toolbar-bottom-ios ~ * .fab-center-bottom,\n.ios .toolbar-bottom-ios ~ * .fab-right-bottom,\n.ios .toolbar-bottom-ios ~ .fab-left-bottom,\n.ios .toolbar-bottom-ios ~ .fab-center-bottom,\n.ios .toolbar-bottom-ios ~ .fab-right-bottom,\n.md .toolbar-bottom-md ~ * .fab-left-bottom,\n.md .toolbar-bottom-md ~ * .fab-center-bottom,\n.md .toolbar-bottom-md ~ * .fab-right-bottom,\n.md .toolbar-bottom-md ~ .fab-left-bottom,\n.md .toolbar-bottom-md ~ .fab-center-bottom,\n.md .toolbar-bottom-md ~ .fab-right-bottom {\n margin-bottom: var(--f7-toolbar-height);\n}\n.tabbar-icons.toolbar-bottom ~ * .fab-left-bottom,\n.tabbar-icons.toolbar-bottom ~ * .fab-center-bottom,\n.tabbar-icons.toolbar-bottom ~ * .fab-right-bottom,\n.tabbar-icons.toolbar-bottom ~ .fab-left-bottom,\n.tabbar-icons.toolbar-bottom ~ .fab-center-bottom,\n.tabbar-icons.toolbar-bottom ~ .fab-right-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ * .fab-left-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ * .fab-center-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ * .fab-right-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ .fab-left-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ .fab-center-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ .fab-right-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ * .fab-left-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ * .fab-center-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ * .fab-right-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ .fab-left-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ .fab-center-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ .fab-right-bottom {\n margin-bottom: var(--f7-tabbar-icons-height);\n}\n.tabbar-icons.toolbar-top ~ * .fab-left-bottom,\n.tabbar-icons.toolbar-top ~ * .fab-center-bottom,\n.tabbar-icons.toolbar-top ~ * .fab-right-bottom,\n.tabbar-icons.toolbar-top ~ .fab-left-bottom,\n.tabbar-icons.toolbar-top ~ .fab-center-bottom,\n.tabbar-icons.toolbar-top ~ .fab-right-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ * .fab-left-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ * .fab-center-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ * .fab-right-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ .fab-left-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ .fab-center-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ .fab-right-bottom,\n.md .tabbar-icons.toolbar-top-md ~ * .fab-left-bottom,\n.md .tabbar-icons.toolbar-top-md ~ * .fab-center-bottom,\n.md .tabbar-icons.toolbar-top-md ~ * .fab-right-bottom,\n.md .tabbar-icons.toolbar-top-md ~ .fab-left-bottom,\n.md .tabbar-icons.toolbar-top-md ~ .fab-center-bottom,\n.md .tabbar-icons.toolbar-top-md ~ .fab-right-bottom {\n margin-top: var(--f7-tabbar-icons-height);\n}\n.messagebar ~ * .fab-left-bottom,\n.messagebar ~ * .fab-center-bottom,\n.messagebar ~ * .fab-right-bottom,\n.messagebar ~ .fab-left-bottom,\n.messagebar ~ .fab-center-bottom,\n.messagebar ~ .fab-right-bottom {\n margin-bottom: var(--f7-messagebar-height);\n}\n.navbar + .toolbar-top ~ * .fab-left-top,\n.ios .navbar + .toolbar-top-ios ~ * .fab-left-top,\n.md .navbar + .toolbar-top-ios ~ * .fab-left-top,\n.navbar + .toolbar-top ~ * .fab-center-top,\n.ios .navbar + .toolbar-top-ios ~ * .fab-center-top,\n.md .navbar + .toolbar-top-ios ~ * .fab-center-top,\n.navbar + .toolbar-top ~ * .fab-right-top,\n.ios .navbar + .toolbar-top-ios ~ * .fab-right-top,\n.md .navbar + .toolbar-top-ios ~ * .fab-right-top,\n.navbar + .toolbar-top ~ .fab-left-top,\n.ios .navbar + .toolbar-top-ios ~ .fab-left-top,\n.md .navbar + .toolbar-top-ios ~ .fab-left-top,\n.navbar + .toolbar-top ~ .fab-center-top,\n.ios .navbar + .toolbar-top-ios ~ .fab-center-top,\n.md .navbar + .toolbar-top-ios ~ .fab-center-top,\n.navbar + .toolbar-top ~ .fab-right-top,\n.ios .navbar + .toolbar-top-ios ~ .fab-right-top,\n.md .navbar + .toolbar-top-ios ~ .fab-right-top {\n margin-top: calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar + .toolbar-top.tabbar-icons ~ * .fab-left-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-left-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-left-top,\n.navbar + .toolbar-top.tabbar-icons ~ * .fab-center-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-center-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-center-top,\n.navbar + .toolbar-top.tabbar-icons ~ * .fab-right-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-right-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-right-top,\n.navbar + .toolbar-top.tabbar-icons ~ .fab-left-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-left-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-left-top,\n.navbar + .toolbar-top.tabbar-icons ~ .fab-center-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-center-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-center-top,\n.navbar + .toolbar-top.tabbar-icons ~ .fab-right-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-right-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-right-top {\n margin-top: calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbars + .toolbar-top ~ * .fab-left-top,\n.ios .navbars + .toolbar-top-ios ~ * .fab-left-top,\n.navbars + .toolbar-top ~ * .fab-center-top,\n.ios .navbars + .toolbar-top-ios ~ * .fab-center-top,\n.navbars + .toolbar-top ~ * .fab-right-top,\n.ios .navbars + .toolbar-top-ios ~ * .fab-right-top,\n.navbars + .toolbar-top ~ .fab-left-top,\n.ios .navbars + .toolbar-top-ios ~ .fab-left-top,\n.navbars + .toolbar-top ~ .fab-center-top,\n.ios .navbars + .toolbar-top-ios ~ .fab-center-top,\n.navbars + .toolbar-top ~ .fab-right-top,\n.ios .navbars + .toolbar-top-ios ~ .fab-right-top {\n margin-top: calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbars + .toolbar-top.tabbar-icons ~ * .fab-left-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ * .fab-left-top,\n.navbars + .toolbar-top.tabbar-icons ~ * .fab-center-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ * .fab-center-top,\n.navbars + .toolbar-top.tabbar-icons ~ * .fab-right-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ * .fab-right-top,\n.navbars + .toolbar-top.tabbar-icons ~ .fab-left-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ .fab-left-top,\n.navbars + .toolbar-top.tabbar-icons ~ .fab-center-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ .fab-center-top,\n.navbars + .toolbar-top.tabbar-icons ~ .fab-right-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ .fab-right-top {\n margin-top: calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.ios .fab > a.active-state,\n.ios .fab-buttons a.active-state {\n transition-duration: 0ms;\n background-color: var(--f7-fab-pressed-bg-color, var(--f7-theme-color-shade));\n}\n.md .fab > a.active-state,\n.md .fab-buttons a.active-state {\n background-color: var(--f7-fab-pressed-bg-color, var(--f7-fab-bg-color, var(--f7-theme-color)));\n}\n/* === Searchbar === */\n:root {\n /*\n --f7-searchbar-link-color: var(--f7-bars-link-color);\n --f7-searchbar-inline-input-font-size: var(--f7-searchbar-input-font-size);\n */\n --f7-searchbar-input-border-width: 0px;\n --f7-searchbar-input-border-color: transparent;\n}\n.ios {\n /*\n --f7-searchbar-bg-color: var(--f7-bars-bg-color);\n --f7-searchbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-searchbar-border-color: var(--f7-bars-border-color);\n */\n --f7-searchbar-height: 44px;\n --f7-searchbar-inner-padding-left: 8px;\n --f7-searchbar-inner-padding-right: 8px;\n /*\n --f7-searchbar-link-color: var(--f7-bars-link-color, var(--f7-theme-color));\n */\n --f7-searchbar-input-font-size: 17px;\n --f7-searchbar-input-border-radius: 8px;\n --f7-searchbar-input-height: 32px;\n --f7-searchbar-inline-input-height: 32px;\n /*\n --f7-searchbar-inline-input-border-radius: var(--f7-searchbar-input-border-radius);\n */\n --f7-searchbar-input-padding-horizontal: 28px;\n /*\n --f7-searchbar-inline-input-padding-horizontal: var(--f7-searchbar-input-padding-horizontal);\n --f7-searchbar-input-clear-button-color: var(--f7-input-clear-button-color);\n */\n --f7-searchbar-backdrop-bg-color: rgba(0, 0, 0, 0.4);\n --f7-searchbar-in-page-content-margin: 0px;\n --f7-searchbar-in-page-content-box-shadow: none;\n --f7-searchbar-in-page-content-border-radius: 0;\n --f7-searchbar-in-page-content-input-border-radius: 0;\n --f7-searchbar-placeholder-color: rgba(0, 0, 0, 0.4);\n --f7-searchbar-input-text-color: #000;\n --f7-searchbar-search-icon-color: rgba(0, 0, 0, 0.4);\n --f7-searchbar-input-bg-color: #e4e4e4;\n}\n.ios .dark,\n.ios.dark {\n --f7-searchbar-placeholder-color: rgba(255, 255, 255, 0.4);\n --f7-searchbar-input-text-color: #fff;\n --f7-searchbar-search-icon-color: rgba(255, 255, 255, 0.4);\n --f7-searchbar-input-bg-color: #2a2a2a;\n}\n.md {\n --f7-searchbar-border-color: transparent;\n --f7-searchbar-height: 48px;\n --f7-searchbar-inner-padding-left: 8px;\n --f7-searchbar-inner-padding-right: 8px;\n --f7-searchbar-input-font-size: 16px;\n --f7-searchbar-input-border-radius: 24px;\n --f7-searchbar-input-height: 48px;\n --f7-searchbar-inline-input-height: 48px;\n --f7-searchbar-inline-input-border-radius: 24px;\n --f7-searchbar-input-padding-horizontal: 16px;\n --f7-searchbar-inline-input-padding-horizontal: 16px;\n --f7-searchbar-backdrop-bg-color: rgba(0, 0, 0, 0.25);\n --f7-searchbar-in-page-content-margin: 16px 0;\n --f7-searchbar-in-page-content-box-shadow: none;\n --f7-searchbar-in-page-content-border-radius: 24px;\n --f7-searchbar-in-page-content-input-border-radius: 24px;\n --f7-searchbar-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-searchbar-link-color: var(--f7-md-on-surface);\n --f7-searchbar-search-icon-color: var(--f7-md-on-surface);\n --f7-searchbar-input-clear-button-color: var(--f7-md-on-surface);\n --f7-searchbar-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-searchbar-input-bg-color: var(--f7-md-secondary-container);\n --f7-searchbar-input-text-color: var(--f7-md-on-surface);\n}\n.searchbar {\n --f7-link-highlight-color: var(--f7-link-highlight-black);\n width: 100%;\n position: relative;\n z-index: 200;\n height: var(--f7-searchbar-height);\n background-color: var(--f7-searchbar-bg-color, var(--f7-bars-bg-color));\n}\n.dark .searchbar {\n --f7-link-highlight-color: var(--f7-link-highlight-white);\n}\n.searchbar input[type='search']::-webkit-search-decoration {\n display: none;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .searchbar {\n background-color: rgba(var(--f7-searchbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.ios .subnavbar .searchbar {\n background-color: transparent;\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n}\n.ios .subnavbar .searchbar:after {\n display: none !important;\n}\n.searchbar.no-outline:after {\n display: none !important;\n}\n.searchbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-searchbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.page > .searchbar:not(.searchbar-inline) {\n z-index: 600;\n}\n.searchbar input[type='text'],\n.searchbar input[type='search'] {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n display: block;\n border: var(--f7-searchbar-input-border-width) solid var(--f7-searchbar-input-border-color);\n -webkit-appearance: none;\n appearance: none;\n font-family: inherit;\n font-weight: normal;\n color: var(--f7-searchbar-input-text-color);\n font-size: var(--f7-searchbar-input-font-size);\n background-color: var(--f7-searchbar-input-bg-color);\n border-radius: var(--f7-searchbar-input-border-radius);\n position: relative;\n padding: 0;\n padding-left: calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-right, 0px));\n padding-right: calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px));\n}\n.searchbar input[type='text']::placeholder,\n.searchbar input[type='search']::placeholder {\n color: var(--f7-searchbar-placeholder-color);\n opacity: 1;\n}\n.searchbar input::-webkit-search-cancel-button {\n -webkit-appearance: none;\n appearance: none;\n}\n.searchbar .searchbar-input-wrap {\n flex-shrink: 1;\n width: 100%;\n height: var(--f7-searchbar-input-height);\n position: relative;\n}\n.searchbar a {\n color: var(--f7-searchbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.page > .searchbar:not(.searchbar-inline) {\n position: absolute;\n left: 0;\n top: 0;\n}\n.page-content .searchbar:not(.searchbar-inline) {\n border-radius: var(--f7-searchbar-in-page-content-border-radius);\n margin: var(--f7-searchbar-in-page-content-margin);\n width: auto;\n box-shadow: var(--f7-searchbar-in-page-content-box-shadow);\n}\n.page-content .searchbar:not(.searchbar-inline) .searchbar-inner,\n.page-content .searchbar:not(.searchbar-inline) input[type='text'],\n.page-content .searchbar:not(.searchbar-inline) input[type='search'] {\n border-radius: var(--f7-searchbar-in-page-content-input-border-radius, var(--f7-searchbar-input-border-radius));\n}\n.searchbar .input-clear-button {\n color: var(--f7-searchbar-input-clear-button-color, var(--f7-input-clear-button-color));\n}\n.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-searchbar-height);\n position: absolute;\n transition-duration: 300ms;\n pointer-events: none;\n}\n.navbar .searchbar-expandable {\n background: transparent;\n}\n.navbar .searchbar-expandable:after {\n display: none !important;\n}\n.navbar .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar .searchbar.searchbar-expandable .searchbar-inner {\n top: var(--f7-safe-area-top);\n height: calc(100% - var(--f7-safe-area-top));\n}\n.toolbar .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-toolbar-height);\n}\n.subnavbar .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-subnavbar-height);\n}\n.tabbar-icons .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-tabbar-icons-height);\n}\n.searchbar-inner {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n padding: 0 calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left));\n}\n.searchbar-disable-button {\n cursor: pointer;\n pointer-events: none;\n -webkit-appearance: none;\n appearance: none;\n background: none;\n border: none;\n outline: 0;\n padding: 0;\n margin: 0;\n width: auto;\n opacity: 0;\n}\n.searchbar-icon {\n pointer-events: none;\n background-position: center;\n background-repeat: no-repeat;\n}\n.searchbar-icon:after {\n color: var(--f7-searchbar-search-icon-color);\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n.searchbar-backdrop {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 100;\n opacity: 0;\n pointer-events: none;\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n background: var(--f7-searchbar-backdrop-bg-color);\n}\n.searchbar-backdrop.searchbar-backdrop-in {\n opacity: 1;\n pointer-events: auto;\n}\n.page-content > .searchbar-backdrop {\n position: fixed;\n}\n.searchbar-not-found {\n display: none;\n}\n.hidden-by-searchbar,\n.list .hidden-by-searchbar,\n.list.li.hidden-by-searchbar,\n.list li.hidden-by-searchbar {\n display: none !important;\n}\n.navbar.with-searchbar-expandable-enabled-no-transition,\n.navbar.with-searchbar-expandable-enabled-no-transition {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar.with-searchbar-expandable-enabled,\n.navbar.with-searchbar-expandable-enabled {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar.with-searchbar-expandable-enabled .navbar-bg,\n.navbar.with-searchbar-expandable-enabled .navbar-bg,\n.navbar.with-searchbar-expandable-enabled .title-large,\n.navbar.with-searchbar-expandable-enabled .title-large,\n.navbar.with-searchbar-expandable-enabled .title-large-text,\n.navbar.with-searchbar-expandable-enabled .title-large-text {\n transition-duration: 300ms;\n}\n.navbar.with-searchbar-expandable-closing .navbar-bg,\n.navbar.with-searchbar-expandable-closing .navbar-bg,\n.navbar.with-searchbar-expandable-closing .title-large,\n.navbar.with-searchbar-expandable-closing .title-large,\n.navbar.with-searchbar-expandable-closing .title-large-text,\n.navbar.with-searchbar-expandable-closing .title-large-text {\n transition-duration: 300ms;\n}\n.page-content.with-searchbar-expandable-enabled {\n height: calc(100% + var(--f7-navbar-large-title-height));\n transform: translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n transition-duration: 300ms;\n transition-property: transform;\n}\n.page-content.with-searchbar-expandable-closing {\n transition-duration: 300ms;\n}\n.navbar ~ .page:not(.no-navbar) > .searchbar,\n.navbars ~ .page:not(.no-navbar) > .searchbar,\n.page > .navbar ~ .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ .page-with-navbar-large:not(.no-navbar) .searchbar,\n.navbars ~ .page-with-navbar-large:not(.no-navbar) .searchbar,\n.page-with-navbar-large .navbar ~ .searchbar,\n.page-with-navbar-large .navbar ~ * .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));\n transform: translate3d(0, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.navbars ~ .page-with-navbar-large:not(.no-navbar) .page-content .searchbar,\n.page-with-navbar-large .page-content .searchbar {\n top: 0;\n transform: none;\n}\n.searchbar ~ * {\n --f7-page-searchbar-offset: var(--f7-searchbar-height);\n}\n.page > .toolbar-top ~ .searchbar,\n.ios .page > .toolbar-top-ios ~ .searchbar,\n.md .page > .toolbar-top-md ~ .searchbar {\n top: var(--f7-toolbar-height);\n}\n.page > .tabbar-icons.toolbar-top ~ .searchbar,\n.ios .page > .tabbar-icons.toolbar-top-ios ~ .searchbar,\n.md .page > .tabbar-icons.toolbar-top-md ~ .searchbar {\n top: var(--f7-tabbar-icons-height);\n}\n.page > .navbar ~ .toolbar-top ~ .searchbar,\n.ios .page > .navbar ~ .toolbar-top-ios ~ .searchbar,\n.md .page > .navbar ~ .toolbar-top-md ~ .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top));\n}\n.page > .navbar ~ .tabbar-icons.toolbar-top ~ .searchbar,\n.ios .page > .navbar ~ .tabbar-icons.toolbar-top-ios ~ .searchbar,\n.md .page > .navbar ~ .tabbar-icons.toolbar-top-md ~ .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top));\n}\n.searchbar.searchbar-inline {\n width: auto;\n height: auto;\n background-color: transparent;\n background-image: none;\n}\n.searchbar.searchbar-inline:after,\n.searchbar.searchbar-inline:before {\n display: none !important;\n}\n.searchbar.searchbar-inline .searchbar-input-wrap {\n height: var(--f7-searchbar-inline-input-height, var(--f7-searchbar-input-height));\n}\n.searchbar.searchbar-inline .searchbar-inner {\n padding: 0;\n position: static;\n width: auto;\n height: auto;\n}\n.searchbar.searchbar-inline input[type='text'],\n.searchbar.searchbar-inline input[type='search'] {\n font-size: var(--f7-searchbar-inline-input-font-size, var(--f7-searchbar-input-font-size));\n border-radius: var(--f7-searchbar-inline-input-border-radius, var(--f7-searchbar-input-border-radius));\n padding-left: calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-right, 0px));\n padding-right: calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-left, 0px));\n}\n.ios .searchbar input[type='search'],\n.ios .searchbar input[type='text'] {\n z-index: 30;\n}\n.ios .searchbar .input-clear-button {\n z-index: 40;\n left: 7px;\n}\n.ios .searchbar-icon {\n width: 13px;\n height: 13px;\n position: absolute;\n top: 50%;\n margin-top: -6px;\n z-index: 40;\n right: 8px;\n}\n.ios .searchbar-icon:after {\n content: 'search_ios';\n line-height: 13px;\n}\n.ios .searchbar-disable-button {\n font-size: 17px;\n flex-shrink: 0;\n transform: translate3d(0, 0, 0);\n transition-duration: 300ms;\n color: var(--f7-searchbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n display: none;\n}\n.ios .searchbar-disable-button.active-state {\n transition-duration: 0ms;\n opacity: 0.3 !important;\n}\n.ios .searchbar-enabled .searchbar-disable-button {\n pointer-events: auto;\n opacity: 1;\n margin-right: 8px;\n}\n.ios .searchbar:not(.searchbar-enabled) .searchbar-disable-button {\n transition-duration: 300ms !important;\n}\n.ios .searchbar-expandable {\n right: 0;\n bottom: 0;\n opacity: 1;\n width: 100%;\n height: 0%;\n transform: translate3d(0, 0, 0);\n overflow: hidden;\n}\n.ios .searchbar-expandable .searchbar-disable-button {\n margin-right: 8px;\n opacity: 1;\n display: block;\n}\n.ios .searchbar-expandable .searchbar-inner {\n height: var(--f7-searchbar-expandable-size);\n}\n.ios .navbar.with-searchbar-expandable-enabled .navbar-bg,\n.ios .navbar.with-searchbar-expandable-closing .navbar-bg {\n transition-property: transform, opacity;\n}\n.ios .navbar.with-searchbar-expandable-enabled .navbar-bg,\n.ios .navbar.with-searchbar-expandable-closing .navbar-bg,\n.ios .navbar.with-searchbar-expandable-enabled .left,\n.ios .navbar.with-searchbar-expandable-closing .left,\n.ios .navbar.with-searchbar-expandable-enabled .title,\n.ios .navbar.with-searchbar-expandable-closing .title,\n.ios .navbar.with-searchbar-expandable-enabled .right,\n.ios .navbar.with-searchbar-expandable-closing .right {\n transition-duration: 300ms;\n}\n.ios .navbar.with-searchbar-expandable-enabled .left,\n.ios .navbar.with-searchbar-expandable-enabled-no-transition .left,\n.ios .navbar.with-searchbar-expandable-enabled .title,\n.ios .navbar.with-searchbar-expandable-enabled-no-transition .title,\n.ios .navbar.with-searchbar-expandable-enabled .right,\n.ios .navbar.with-searchbar-expandable-enabled-no-transition .right {\n transform: translateY(calc(-1 * var(--f7-navbar-height)));\n opacity: 0 !important;\n}\n.ios .searchbar-expandable.searchbar-enabled {\n opacity: 1;\n height: var(--f7-searchbar-expandable-size);\n pointer-events: auto;\n}\n.md .searchbar-icon,\n.md .searchbar-disable-button {\n position: absolute;\n top: 50%;\n transition-duration: 300ms;\n}\n.md .searchbar-icon {\n width: 48px;\n height: 48px;\n left: 0;\n top: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n right: var(--f7-safe-area-right);\n}\n.md .searchbar-icon:after {\n width: auto;\n height: auto;\n content: 'search_md';\n line-height: 1.2;\n}\n.md .searchbar-disable-button {\n width: 48px;\n height: 48px;\n transform: rotate(-90deg) scale(0.5);\n font-size: 0 !important;\n display: block;\n margin-top: -24px;\n color: var(--f7-searchbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n right: calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right));\n}\n.md .searchbar-disable-button:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n line-height: 48px;\n content: 'arrow_right_md';\n}\n.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-disable-button {\n transform: rotate(0deg) scale(1);\n pointer-events: auto;\n opacity: 1;\n}\n.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-icon {\n opacity: 0;\n transform: rotate(90deg) scale(0.5);\n}\n.md .searchbar {\n --f7-searchbar-input-extra-padding-left: 34px;\n}\n.md .searchbar .input-clear-button {\n width: 48px;\n height: 48px;\n margin-top: -24px;\n left: 0;\n}\n.md .searchbar .input-clear-button:after {\n line-height: 48px;\n content: 'delete_round_md';\n opacity: 1;\n}\n.md .searchbar .input-clear-button:before {\n display: none;\n}\n.md .searchbar-inline {\n --f7-searchbar-input-extra-padding-left: 32px;\n}\n.md .page > .searchbar,\n.md .subnavbar .searchbar,\n.md .searchbar-expandable {\n --f7-searchbar-input-extra-padding-left: 34px;\n}\n.md .page > .searchbar .searchbar-disable-button,\n.md .subnavbar .searchbar .searchbar-disable-button,\n.md .searchbar-expandable .searchbar-disable-button {\n right: calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right));\n}\n.md .page > .searchbar .searchbar-icon,\n.md .subnavbar .searchbar .searchbar-icon,\n.md .searchbar-expandable .searchbar-icon {\n right: var(--f7-safe-area-right);\n}\n.md .searchbar-expandable {\n --f7-searchbar-inner-padding-left: 4px;\n --f7-searchbar-inner-padding-right: 4px;\n height: var(--f7-searchbar-expandable-size);\n opacity: 0;\n bottom: 0;\n border-radius: calc(var(--f7-searchbar-expandable-size));\n width: calc(var(--f7-searchbar-expandable-size));\n margin-top: calc(var(--f7-searchbar-expandable-size) * -1 / 2);\n transform: translate3d(0px, 0px, 0px);\n background-color: var(--f7-searchbar-input-bg-color);\n right: 100%;\n margin-right: calc(var(--f7-searchbar-expandable-size) * -1);\n}\n.md .searchbar-expandable.searchbar-enabled {\n width: 100%;\n border-radius: 0;\n opacity: 1;\n pointer-events: auto;\n margin-top: 0;\n right: 0;\n margin-right: 0;\n}\n/* === Messages === */\n:root {\n --f7-message-text-header-opacity: 0.65;\n --f7-message-text-header-font-size: 12px;\n --f7-message-text-footer-opacity: 0.65;\n --f7-message-text-footer-font-size: 12px;\n --f7-message-bubble-line-height: 1.2;\n --f7-message-header-font-size: 12px;\n --f7-message-footer-font-size: 11px;\n --f7-message-name-font-size: 12px;\n --f7-message-name-font-weight: inherit;\n --f7-message-avatar-border-radius: 50%;\n --f7-messages-title-font-weight: inherit;\n --f7-message-typing-indicator-bg-color: #000;\n}\n:root .dark,\n:root.dark {\n --f7-message-typing-indicator-bg-color: #fff;\n}\n.ios {\n --f7-message-text-header-text-color: inherit;\n --f7-message-text-footer-text-color: inherit;\n --f7-messages-title-font-size: 11px;\n --f7-message-avatar-size: 29px;\n --f7-message-margin: 10px;\n --f7-message-bubble-min-height: 32px;\n --f7-message-bubble-font-size: 17px;\n --f7-message-bubble-border-radius: 16px;\n --f7-message-bubble-padding-vertical: 6px;\n --f7-message-bubble-padding-horizontal: 16px;\n --f7-message-typing-indicator-opacity: 0.35;\n /*\n --f7-message-sent-bg-color: var(--f7-theme-color);\n */\n --f7-message-sent-text-color: #fff;\n --f7-messages-content-bg-color: #fff;\n --f7-message-received-text-color: #000;\n --f7-message-received-bg-color: #e5e5ea;\n --f7-messages-title-text-color: rgba(0, 0, 0, 0.45);\n --f7-message-header-text-color: rgba(0, 0, 0, 0.45);\n --f7-message-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-message-name-text-color: rgba(0, 0, 0, 0.45);\n}\n.ios .dark,\n.ios.dark {\n --f7-message-received-bg-color: #252525;\n --f7-message-received-text-color: #fff;\n --f7-messages-content-bg-color: transparent;\n --f7-messages-title-text-color: rgba(255, 255, 255, 0.54);\n --f7-message-header-text-color: rgba(255, 255, 255, 0.54);\n --f7-message-name-text-color: rgba(255, 255, 255, 0.54);\n --f7-message-footer-text-color: rgba(255, 255, 255, 0.54);\n}\n.md {\n --f7-messages-content-bg-color: transparent;\n --f7-messages-title-font-size: 12px;\n --f7-message-avatar-size: 32px;\n --f7-message-margin: 16px;\n --f7-message-bubble-min-height: 40px;\n --f7-message-bubble-font-size: 16px;\n --f7-message-bubble-border-radius: 20px;\n --f7-message-bubble-padding-vertical: 10px;\n --f7-message-bubble-padding-horizontal: 16px;\n --f7-message-typing-indicator-opacity: 0.6;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-message-sent-bg-color: var(--f7-md-primary);\n --f7-message-sent-text-color: var(--f7-md-on-primary);\n --f7-message-received-bg-color: var(--f7-md-surface-variant);\n --f7-message-received-text-color: var(--f7-md-on-surface);\n --f7-message-text-header-text-color: var(--f7-md-on-surface-variant);\n --f7-message-text-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-messages-title-text-color: var(--f7-md-on-surface-variant);\n --f7-message-header-text-color: var(--f7-md-on-surface-variant);\n --f7-message-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-message-name-text-color: var(--f7-md-on-surface-variant);\n}\n.messages-content,\n.messages {\n background: var(--f7-messages-content-bg-color);\n}\n.messages {\n display: flex;\n flex-direction: column;\n min-height: 100%;\n position: relative;\n z-index: 1;\n}\n.messages-title,\n.message {\n margin-top: var(--f7-message-margin);\n}\n.messages-title:last-child,\n.message:last-child {\n margin-bottom: var(--f7-message-margin);\n}\n.messages-title {\n text-align: center;\n width: 100%;\n line-height: 1;\n color: var(--f7-messages-title-text-color);\n font-size: var(--f7-messages-title-font-size);\n font-weight: var(--f7-messages-title-font-weight);\n}\n.message {\n max-width: 70%;\n box-sizing: border-box;\n display: flex;\n align-items: flex-end;\n position: relative;\n z-index: 1;\n transform: translate3d(0, 0, 0);\n}\n.message-avatar {\n border-radius: var(--f7-message-avatar-border-radius);\n position: relative;\n background-size: cover;\n align-self: flex-end;\n flex-shrink: 0;\n width: var(--f7-message-avatar-size);\n height: var(--f7-message-avatar-size);\n}\n.message-content {\n position: relative;\n display: flex;\n flex-direction: column;\n}\n.message-header,\n.message-footer,\n.message-name {\n line-height: 1;\n}\n.message-header {\n color: var(--f7-message-header-text-color);\n font-size: var(--f7-message-header-font-size);\n}\n.message-footer {\n color: var(--f7-message-footer-text-color);\n font-size: var(--f7-message-footer-font-size);\n margin-bottom: -1em;\n}\n.message-name {\n color: var(--f7-message-name-text-color);\n font-size: var(--f7-message-name-font-size);\n font-weight: var(--f7-message-name-font-weight);\n}\n.message-bubble {\n box-sizing: border-box;\n word-break: break-word;\n display: flex;\n flex-direction: column;\n position: relative;\n line-height: var(--f7-message-bubble-line-height);\n font-size: var(--f7-message-bubble-font-size);\n border-radius: var(--f7-message-bubble-border-radius);\n padding: var(--f7-message-bubble-padding-vertical) var(--f7-message-bubble-padding-horizontal);\n min-height: var(--f7-message-bubble-min-height);\n}\n.message-image img {\n display: block;\n max-width: 100%;\n height: auto;\n width: auto;\n}\n.message-text-header,\n.message-text-footer {\n line-height: 1;\n}\n.message-text-header {\n color: var(--f7-message-text-header-text-color);\n opacity: var(--f7-message-text-header-opacity);\n font-size: var(--f7-message-text-header-font-size);\n}\n.message-text-footer {\n color: var(--f7-message-text-footer-text-color);\n opacity: var(--f7-message-text-footer-opacity);\n font-size: var(--f7-message-text-footer-font-size);\n}\n.message-text {\n text-align: left;\n}\n.message-sent {\n text-align: right;\n flex-direction: row;\n align-self: flex-start;\n}\n.message-sent .message-bubble {\n color: var(--f7-message-sent-text-color);\n background: var(--f7-message-sent-bg-color, var(--f7-theme-color));\n}\n.message-sent .message-content {\n align-items: flex-start;\n}\n.message-received {\n flex-direction: row-reverse;\n align-self: flex-end;\n}\n.message-received .message-bubble {\n color: var(--f7-message-received-text-color);\n background: var(--f7-message-received-bg-color);\n}\n.message-received .message-content {\n align-items: flex-end;\n}\n.message:not(.message-last) .message-avatar {\n opacity: 0;\n}\n.message:not(.message-first) .message-name {\n display: none;\n}\n.message.message-same-name .message-name {\n display: none;\n}\n.message.message-same-header .message-header {\n display: none;\n}\n.message.message-same-footer .message-footer {\n display: none;\n}\n.message-appear-from-bottom {\n animation: message-appear-from-bottom 300ms;\n}\n.message-appear-from-top {\n animation: message-appear-from-top 300ms;\n}\n.message-typing-indicator {\n display: inline-block;\n font-size: 0;\n vertical-align: middle;\n}\n.message-typing-indicator > div {\n display: inline-block;\n position: relative;\n background: var(--f7-message-typing-indicator-bg-color);\n opacity: var(--f7-message-typing-indicator-opacity);\n vertical-align: middle;\n border-radius: 50%;\n}\n@keyframes message-appear-from-bottom {\n from {\n transform: translate3d(0, 100%, 0);\n }\n to {\n transform: translate3d(0, 0, 0);\n }\n}\n@keyframes message-appear-from-top {\n from {\n transform: translate3d(0, -100%, 0);\n }\n to {\n transform: translate3d(0, 0, 0);\n }\n}\n.ios .messages-title b,\n.ios .message-header b,\n.ios .message-footer b,\n.ios .message-name b {\n font-weight: 600;\n}\n.ios .message-header,\n.ios .message-name {\n margin-bottom: 3px;\n}\n.ios .message-footer {\n margin-top: 3px;\n}\n.ios .message-bubble {\n min-width: 48px;\n}\n.ios .message-image {\n margin: var(--f7-message-bubble-padding-vertical) calc(-1 * var(--f7-message-bubble-padding-horizontal));\n}\n.ios .message-image:first-child {\n margin-top: calc(-1 * var(--f7-message-bubble-padding-vertical));\n}\n.ios .message-image:first-child img {\n border-top-left-radius: var(--f7-message-bubble-border-radius);\n border-top-right-radius: var(--f7-message-bubble-border-radius);\n}\n.ios .message-image:last-child {\n margin-bottom: calc(-1 * var(--f7-message-bubble-padding-vertical));\n}\n.ios .message-image:last-child img {\n border-bottom-left-radius: var(--f7-message-bubble-border-radius);\n border-bottom-right-radius: var(--f7-message-bubble-border-radius);\n}\n.ios .message-text-header {\n margin-bottom: 3px;\n}\n.ios .message-text-footer {\n margin-top: 3px;\n}\n.ios .message-received {\n margin-left: calc(10px + var(--f7-safe-area-left));\n}\n.ios .message-received .message-header,\n.ios .message-received .message-footer,\n.ios .message-received .message-name {\n margin-left: var(--f7-message-bubble-padding-horizontal);\n}\n.ios .message-received .message-bubble {\n padding-left: calc(var(--f7-message-bubble-padding-horizontal) + 6px);\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 42% 46% 56%;\n}\n.ios .message-received .message-image {\n margin-left: calc(-1 * (var(--f7-message-bubble-padding-horizontal) + 6px));\n}\n.ios .message-received.message-tail .message-bubble {\n border-radius: var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0;\n}\n.ios .message-received.message-tail:not(.message-typing) .message-bubble {\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 42% 46% 56%;\n}\n.ios .message-received.message-tail:not(.message-typing) .message-bubble .message-image:last-child img {\n border-bottom-left-radius: 0px;\n}\n.ios .message-sent {\n margin-right: calc(10px + var(--f7-safe-area-right));\n}\n.ios .message-sent .message-header,\n.ios .message-sent .message-footer,\n.ios .message-sent .message-name {\n margin-right: var(--f7-message-bubble-padding-horizontal);\n}\n.ios .message-sent .message-bubble {\n padding-right: calc(var(--f7-message-bubble-padding-horizontal) + 6px);\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 56% 46% 42%;\n}\n.ios .message-sent .message-image {\n margin-right: calc(-1 * (var(--f7-message-bubble-padding-horizontal) + 6px));\n}\n.ios .message-sent.message-tail .message-bubble {\n border-radius: var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0 var(--f7-message-bubble-border-radius);\n}\n.ios .message-sent.message-tail .message-bubble {\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 56% 46% 42%;\n}\n.ios .message-sent.message-tail .message-bubble .message-image:last-child img {\n border-bottom-right-radius: 0px;\n}\n.ios .message + .message:not(.message-first) {\n margin-top: 1px;\n}\n.ios .message-received.message-typing .message-content:after,\n.ios .message-received.message-typing .message-content:before {\n content: '';\n position: absolute;\n background: var(--f7-message-received-bg-color);\n border-radius: 50%;\n}\n.ios .message-received.message-typing .message-content:after {\n width: 11px;\n height: 11px;\n left: 4px;\n bottom: 0px;\n}\n.ios .message-received.message-typing .message-content:before {\n width: 6px;\n height: 6px;\n left: -1px;\n bottom: -4px;\n}\n.ios .message-typing-indicator > div {\n width: 9px;\n height: 9px;\n}\n.ios .message-typing-indicator > div + div {\n margin-right: 4px;\n}\n.ios .message-typing-indicator > div:nth-child(1) {\n animation: ios-message-typing-indicator 900ms infinite;\n}\n.ios .message-typing-indicator > div:nth-child(2) {\n animation: ios-message-typing-indicator 900ms 150ms infinite;\n}\n.ios .message-typing-indicator > div:nth-child(3) {\n animation: ios-message-typing-indicator 900ms 300ms infinite;\n}\n@keyframes ios-message-typing-indicator {\n 0% {\n opacity: 0.35;\n }\n 25% {\n opacity: 0.2;\n }\n 50% {\n opacity: 0.2;\n }\n}\n.md .messages-title b,\n.md .message-header b,\n.md .message-footer b,\n.md .message-name b {\n font-weight: 500;\n}\n.md .message-header,\n.md .message-name {\n margin-bottom: 2px;\n}\n.md .message-footer {\n margin-top: 2px;\n}\n.md .message-text-header {\n margin-bottom: 4px;\n}\n.md .message-text-footer {\n margin-top: 4px;\n}\n.md .message-image {\n margin: calc(-1 * var(--f7-message-bubble-padding-vertical)) calc(-1 * var(--f7-message-bubble-padding-horizontal));\n}\n.md .message-image,\n.md .message-image img {\n border-radius: var(--f7-message-bubble-border-radius);\n}\n.md .message-received {\n margin-left: calc(8px + var(--f7-safe-area-left));\n}\n.md .message-received .message-name,\n.md .message-received .message-header,\n.md .message-received .message-footer {\n margin-left: 16px;\n}\n.md .message-received.message-first:not(.message-last) .message-bubble,\n.md .message-received.message-first:not(.message-last) .message-image,\n.md .message-received.message-first:not(.message-last) .message-image img {\n border-bottom-left-radius: 4px;\n}\n.md .message-received.message-last:not(.message-first) .message-bubble,\n.md .message-received.message-last:not(.message-first) .message-image,\n.md .message-received.message-last:not(.message-first) .message-image img {\n border-top-left-radius: 4px;\n}\n.md .message-received:not(.message-last):not(.message-first) .message-bubble,\n.md .message-received:not(.message-last):not(.message-first) .message-image,\n.md .message-received:not(.message-last):not(.message-first) .message-image img {\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.md .message-received .message-avatar + .message-content {\n margin-left: 8px;\n}\n.md .message-sent {\n margin-right: calc(8px + var(--f7-safe-area-right));\n}\n.md .message-sent .message-name,\n.md .message-sent .message-header,\n.md .message-sent .message-footer {\n margin-right: 16px;\n}\n.md .message-sent.message-first:not(.message-last) .message-bubble,\n.md .message-sent.message-first:not(.message-last) .message-image,\n.md .message-sent.message-first:not(.message-last) .message-image img {\n border-bottom-right-radius: 4px;\n}\n.md .message-sent.message-last:not(.message-first) .message-bubble,\n.md .message-sent.message-last:not(.message-first) .message-image,\n.md .message-sent.message-last:not(.message-first) .message-image img {\n border-top-right-radius: 4px;\n}\n.md .message-sent:not(.message-last):not(.message-first) .message-bubble,\n.md .message-sent:not(.message-last):not(.message-first) .message-image,\n.md .message-sent:not(.message-last):not(.message-first) .message-image img {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.md .message-sent .message-avatar + .message-content {\n margin-right: var(--f7-message-bubble-padding-horizontal);\n}\n.md .message + .message:not(.message-first) {\n margin-top: 2px;\n}\n.md .message-typing-indicator > div {\n width: 6px;\n height: 6px;\n}\n.md .message-typing-indicator > div + div {\n margin-right: 6px;\n}\n.md .message-typing-indicator > div:nth-child(1) {\n animation: md-message-typing-indicator 900ms infinite;\n}\n.md .message-typing-indicator > div:nth-child(2) {\n animation: md-message-typing-indicator 900ms 150ms infinite;\n}\n.md .message-typing-indicator > div:nth-child(3) {\n animation: md-message-typing-indicator 900ms 300ms infinite;\n}\n@keyframes md-message-typing-indicator {\n 0% {\n transform: translateY(0%);\n }\n 25% {\n transform: translateY(-5px);\n }\n 50% {\n transform: translateY(0%);\n }\n}\n/* === Messagebar === */\n:root {\n --f7-messagebar-attachments-height: 155px;\n --f7-messagebar-sheet-height: 252px;\n --f7-messagebar-sheet-landscape-height: 192px;\n /*\n --f7-messagebar-inner-padding-left: var(--f7-toolbar-inner-padding-left);\n --f7-messagebar-inner-padding-right: var(--f7-toolbar-inner-padding-right);\n */\n}\n.ios {\n --f7-messagebar-height: 44px;\n --f7-messagebar-font-size: 17px;\n --f7-messagebar-textarea-bg-color: transparent;\n /*\n --f7-messagebar-link-color: var(--f7-theme-color);\n */\n --f7-messagebar-border-color: transparent;\n --f7-messagebar-textarea-border-radius: 17px;\n --f7-messagebar-textarea-padding: 6px 16px;\n --f7-messagebar-textarea-height: 34px;\n --f7-messagebar-textarea-font-size: 17px;\n --f7-messagebar-textarea-line-height: 20px;\n --f7-messagebar-sheet-bg-color: #d1d5da;\n --f7-messagebar-sheet-border-color: transparent;\n --f7-messagebar-attachment-border-radius: 12px;\n --f7-messagebar-attachment-height: 155px;\n --f7-messagebar-attachment-landscape-height: 120px;\n --f7-messagebar-textarea-placeholder-color: rgba(0, 0, 0, 0.4);\n --f7-messagebar-textarea-text-color: #000;\n --f7-messagebar-textarea-border: 1px solid #c8c8cd;\n --f7-messagebar-attachments-border-color: #c8c8cd;\n --f7-messagebar-bg-color: #fff;\n --f7-messagebar-bg-color-rgb: 255, 255, 255;\n}\n.ios .dark,\n.ios.dark {\n --f7-messagebar-textarea-placeholder-color: rgba(255, 255, 255, 0.4);\n --f7-messagebar-textarea-text-color: #fff;\n --f7-messagebar-textarea-border: 1px solid var(--f7-bars-border-color);\n --f7-messagebar-attachments-border-color: var(--f7-bars-border-color);\n --f7-messagebar-bg-color: var(--f7-bars-bg-color);\n --f7-messagebar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n}\n.md {\n --f7-messagebar-height: 64px;\n --f7-messagebar-font-size: 16px;\n --f7-messagebar-textarea-border-radius: 24px;\n --f7-messagebar-textarea-padding: 12px 16px;\n --f7-messagebar-textarea-height: 48px;\n --f7-messagebar-textarea-font-size: 16px;\n --f7-messagebar-textarea-line-height: 22px;\n --f7-messagebar-textarea-border: 1px solid transparent;\n --f7-messagebar-attachment-border-radius: 12px;\n --f7-messagebar-attachment-height: 72px;\n --f7-messagebar-attachment-landscape-height: 72px;\n --f7-messagebar-border-color: transparent;\n --f7-messagebar-attachments-border-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-messagebar-textarea-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-messagebar-textarea-bg-color: var(--f7-md-surface-variant);\n --f7-messagebar-bg-color: var(--f7-md-surface);\n --f7-messagebar-textarea-text-color: var(--f7-md-on-surface);\n --f7-messagebar-sheet-bg-color: var(--f7-md-surface);\n --f7-messagebar-sheet-border-color: var(--f7-md-outline-variant);\n --f7-messagebar-link-color: var(--f7-md-on-surface);\n}\n.messagebar {\n transform: translate3d(0, 0, 0);\n background: var(--f7-messagebar-bg-color);\n height: auto;\n min-height: var(--f7-messagebar-height);\n font-size: var(--f7-messagebar-font-size);\n padding-bottom: var(--f7-safe-area-bottom);\n bottom: 0;\n}\n.messagebar:before {\n content: '';\n position: absolute;\n background-color: var(--f7-messagebar-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .messagebar {\n background-color: rgba(var(--f7-messagebar-bg-color-rgb), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.messagebar.no-outline:before {\n display: none !important;\n}\n.messagebar.toolbar-hidden:after {\n display: none !important;\n}\n.messagebar .toolbar-inner {\n top: auto;\n position: relative;\n height: auto;\n bottom: auto;\n padding-left: calc(var(--f7-messagebar-inner-padding-left, var(--f7-toolbar-inner-padding-left)) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-messagebar-inner-padding-right, var(--f7-toolbar-inner-padding-right)) + var(--f7-safe-area-right));\n flex-direction: row-reverse;\n}\n.messagebar.messagebar-sheet-visible > .toolbar-inner {\n bottom: 0;\n}\n.messagebar .messagebar-area {\n width: 100%;\n flex-shrink: 1;\n overflow: hidden;\n position: relative;\n}\n.messagebar textarea {\n width: 100%;\n flex-shrink: 1;\n background-color: var(--f7-messagebar-textarea-bg-color);\n border-radius: var(--f7-messagebar-textarea-border-radius);\n padding: var(--f7-messagebar-textarea-padding);\n height: var(--f7-messagebar-textarea-height);\n color: var(--f7-messagebar-textarea-text-color);\n font-size: var(--f7-messagebar-textarea-font-size);\n line-height: var(--f7-messagebar-textarea-line-height);\n border: var(--f7-messagebar-textarea-border);\n}\n.messagebar textarea::placeholder {\n color: var(--f7-messagebar-textarea-placeholder-color);\n}\n.messagebar a.link {\n align-self: flex-end;\n flex-shrink: 0;\n color: var(--f7-messagebar-link-color, var(--f7-theme-color));\n}\n.messagebar-attachments {\n width: 100%;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n font-size: 0;\n white-space: nowrap;\n box-sizing: border-box;\n position: relative;\n}\n.messagebar:not(.messagebar-attachments-visible) .messagebar-attachments {\n display: none;\n}\n.messagebar-attachment {\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n display: inline-block;\n vertical-align: middle;\n white-space: normal;\n height: var(--f7-messagebar-attachment-height);\n position: relative;\n border-radius: var(--f7-messagebar-attachment-border-radius);\n}\n@media (orientation: landscape) {\n .messagebar-attachment {\n height: var(--f7-messagebar-attachment-landscape-height);\n }\n}\n.messagebar-attachment img {\n display: block;\n width: auto;\n height: 100%;\n border-radius: var(--f7-messagebar-attachment-border-radius);\n}\n.messagebar-sheet {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n display: flex;\n flex-wrap: wrap;\n flex-direction: column;\n align-content: flex-start;\n height: var(--f7-messagebar-sheet-height);\n background-color: var(--f7-messagebar-sheet-bg-color);\n border-top: 1px solid var(--f7-messagebar-sheet-border-color);\n padding-left: var(--f7-safe-area-left);\n padding-right: var(--f7-safe-area-right);\n}\n@media (orientation: landscape) {\n .messagebar-sheet {\n height: var(--f7-messagebar-sheet-landscape-height);\n }\n}\n.messagebar-sheet-image {\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n}\n.messagebar-sheet-image > img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n border-radius: inherit;\n transition-duration: 200ms;\n}\n.messagebar-attachment-delete {\n display: block;\n position: absolute;\n border-radius: 50%;\n box-sizing: border-box;\n cursor: pointer;\n}\n.messagebar-attachment-delete:after,\n.messagebar-attachment-delete:before {\n position: absolute;\n content: '';\n left: 50%;\n top: 50%;\n}\n.messagebar-attachment-delete:after {\n transform: rotate(45deg);\n}\n.messagebar-attachment-delete:before {\n transform: rotate(-45deg);\n}\n.messagebar:not(.messagebar-sheet-visible) .messagebar-sheet {\n display: none;\n}\n.messagebar ~ * {\n --f7-page-toolbar-bottom-offset: var(--f7-messagebar-height);\n}\n.ios .messagebar a.link.icon-only:first-child {\n margin-left: -8px;\n}\n.ios .messagebar a.link.icon-only:last-child {\n margin-right: -8px;\n}\n.ios .messagebar a.link:not(.icon-only) + .messagebar-area {\n margin-left: 8px;\n}\n.ios .messagebar .messagebar-area + a.link:not(.icon-only) {\n margin-left: 8px;\n}\n.ios .messagebar-area {\n margin-top: 5px;\n margin-bottom: 5px;\n}\n.ios .messagebar-attachments {\n padding: 5px;\n border-radius: var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;\n border: 1px solid var(--f7-messagebar-attachments-border-color);\n border-bottom: none;\n}\n.ios .messagebar-attachments-visible .messagebar-attachments + textarea {\n border-radius: 0 0 var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius);\n}\n.ios .messagebar-attachment {\n font-size: 14px;\n}\n.ios .messagebar-attachment + .messagebar-attachment {\n margin-right: 8px;\n}\n.ios .messagebar-attachment-delete {\n right: 5px;\n top: 5px;\n width: 20px;\n height: 20px;\n background: #7d7e80;\n border: 2px solid #fff;\n box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);\n}\n.ios .messagebar-attachment-delete:after,\n.ios .messagebar-attachment-delete:before {\n width: 10px;\n height: 2px;\n background: #fff;\n margin-left: -5px;\n margin-top: -1px;\n}\n.ios .messagebar-sheet-image,\n.ios .messagebar-sheet-item {\n box-sizing: border-box;\n flex-shrink: 0;\n margin-top: 1px;\n position: relative;\n overflow: hidden;\n height: calc((var(--f7-messagebar-sheet-height) - 2px) / 2);\n width: calc((var(--f7-messagebar-sheet-height) - 2px) / 2);\n margin-right: 1px;\n}\n@media (orientation: landscape) {\n .ios .messagebar-sheet-image,\n .ios .messagebar-sheet-item {\n width: calc((var(--f7-messagebar-sheet-landscape-height) - 2px) / 2);\n height: calc((var(--f7-messagebar-sheet-landscape-height) - 2px) / 2);\n }\n}\n.ios .messagebar-sheet-image .icon-checkbox,\n.ios .messagebar-sheet-item .icon-checkbox,\n.ios .messagebar-sheet-image .icon-radio,\n.ios .messagebar-sheet-item .icon-radio {\n position: absolute;\n right: 8px;\n bottom: 8px;\n z-index: 1;\n}\n.md .messagebar {\n --f7-toolbar-link-height: var(--f7-messagebar-height);\n}\n.md .messagebar-attachments {\n padding: 16px 16px 0;\n border-bottom: 1px solid var(--f7-messagebar-attachments-border-color);\n}\n.md .messagebar-attachment img {\n width: var(--f7-messagebar-attachment-height);\n height: var(--f7-messagebar-attachment-height);\n object-fit: cover;\n object-position: center;\n}\n.md .messagebar-attachment + .messagebar-attachment {\n margin-right: 16px;\n}\n.md .messagebar-attachments-visible .messagebar-attachments {\n background: var(--f7-messagebar-textarea-bg-color);\n border-radius: var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;\n}\n.md .messagebar-attachments-visible textarea {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.md .messagebar-area {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.md .messagebar-attachment-delete {\n right: -6px;\n top: -6px;\n width: 24px;\n height: 24px;\n background-color: var(--f7-md-inverse-surface);\n border-radius: 24px;\n border: 2px solid var(--f7-messagebar-textarea-bg-color);\n}\n.md .messagebar-attachment-delete:after,\n.md .messagebar-attachment-delete:before {\n width: 12px;\n height: 2px;\n background: var(--f7-messagebar-textarea-bg-color);\n margin-left: -6px;\n margin-top: -1px;\n}\n.md .messagebar-sheet-image,\n.md .messagebar-sheet-item {\n --f7-touch-ripple-color: transparent;\n box-sizing: border-box;\n flex-shrink: 0;\n margin-top: 8px;\n position: relative;\n overflow: hidden;\n height: calc((var(--f7-messagebar-sheet-height) - 24px) / 2);\n width: calc((var(--f7-messagebar-sheet-height) - 24px) / 2);\n border-radius: 4px;\n margin-right: 8px;\n}\n@media (orientation: landscape) {\n .md .messagebar-sheet-image,\n .md .messagebar-sheet-item {\n width: calc((var(--f7-messagebar-sheet-landscape-height) - 8px) / 2);\n height: calc((var(--f7-messagebar-sheet-landscape-height) - 24px) / 2);\n }\n}\n.md .messagebar-sheet-image input:checked ~ img,\n.md .messagebar-sheet-item input:checked ~ img {\n transform: scale(0.85);\n}\n.md .messagebar-sheet-image input:checked ~ .icon-checkbox,\n.md .messagebar-sheet-item input:checked ~ .icon-checkbox,\n.md .messagebar-sheet-image input:checked ~ .icon-radio,\n.md .messagebar-sheet-item input:checked ~ .icon-radio {\n transform: translate(-50%, -50%) scale(1);\n}\n.md .messagebar-sheet-image .icon-checkbox,\n.md .messagebar-sheet-item .icon-checkbox,\n.md .messagebar-sheet-image .icon-radio,\n.md .messagebar-sheet-item .icon-radio {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%) scale(0.85);\n border: none;\n z-index: 1;\n --f7-checkbox-inactive-color: var(--f7-md-surface);\n --f7-checkbox-active-color: var(--f7-md-surface);\n}\n.md .messagebar-sheet-image .icon-checkbox::after,\n.md .messagebar-sheet-item .icon-checkbox::after,\n.md .messagebar-sheet-image .icon-radio::after,\n.md .messagebar-sheet-item .icon-radio::after {\n color: var(--f7-md-on-surface);\n font-size: 18px;\n width: auto;\n height: 100%;\n line-height: 32px;\n left: 0;\n position: static;\n}\n/* === Swiper === */\n/**\n * Swiper 10.2.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: August 17, 2023\n */\n\n/* FONT_START */\n@font-face {\n font-family: 'swiper-icons';\n src: url('data:application/font-woff;charset=utf-8;base64, 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');\n font-weight: 400;\n font-style: normal;\n}\n/* FONT_END */\n:root {\n --swiper-theme-color: #007aff;\n /*\n --swiper-preloader-color: var(--swiper-theme-color);\n --swiper-wrapper-transition-timing-function: initial;\n */\n}\n:host {\n position: relative;\n display: block;\n margin-left: auto;\n margin-right: auto;\n z-index: 1;\n}\n.swiper {\n margin-left: auto;\n margin-right: auto;\n position: relative;\n overflow: hidden;\n overflow: clip;\n list-style: none;\n padding: 0;\n /* Fix of Webkit flickering */\n z-index: 1;\n display: block;\n}\n.swiper-vertical > .swiper-wrapper {\n flex-direction: column;\n}\n.swiper-wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n z-index: 1;\n display: flex;\n transition-property: transform;\n transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial);\n box-sizing: content-box;\n}\n.swiper-android .swiper-slide,\n.swiper-ios .swiper-slide,\n.swiper-wrapper {\n transform: translate3d(0px, 0, 0);\n}\n.swiper-horizontal {\n touch-action: pan-y;\n}\n.swiper-vertical {\n touch-action: pan-x;\n}\n.swiper-slide {\n flex-shrink: 0;\n width: 100%;\n height: 100%;\n position: relative;\n transition-property: transform;\n display: block;\n}\n.swiper-slide-invisible-blank {\n visibility: hidden;\n}\n/* Auto Height */\n.swiper-autoheight,\n.swiper-autoheight .swiper-slide {\n height: auto;\n}\n.swiper-autoheight .swiper-wrapper {\n align-items: flex-start;\n transition-property: transform, height;\n}\n.swiper-backface-hidden .swiper-slide {\n transform: translateZ(0);\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n/* 3D Effects */\n.swiper-3d.swiper-css-mode .swiper-wrapper {\n perspective: 1200px;\n}\n.swiper-3d .swiper-wrapper {\n transform-style: preserve-3d;\n}\n.swiper-3d {\n perspective: 1200px;\n}\n.swiper-3d .swiper-slide,\n.swiper-3d .swiper-cube-shadow {\n transform-style: preserve-3d;\n}\n/* CSS Mode */\n.swiper-css-mode > .swiper-wrapper {\n overflow: auto;\n scrollbar-width: none;\n /* For Firefox */\n -ms-overflow-style: none;\n /* For Internet Explorer and Edge */\n}\n.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar {\n display: none;\n}\n.swiper-css-mode > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: start start;\n}\n.swiper-css-mode.swiper-horizontal > .swiper-wrapper {\n scroll-snap-type: x mandatory;\n}\n.swiper-css-mode.swiper-vertical > .swiper-wrapper {\n scroll-snap-type: y mandatory;\n}\n.swiper-css-mode.swiper-free-mode > .swiper-wrapper {\n scroll-snap-type: none;\n}\n.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: none;\n}\n.swiper-css-mode.swiper-centered > .swiper-wrapper::before {\n content: '';\n flex-shrink: 0;\n order: 9999;\n}\n.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: center center;\n scroll-snap-stop: always;\n}\n.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child {\n margin-inline-start: var(--swiper-centered-offset-before);\n}\n.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before {\n height: 100%;\n min-height: 1px;\n width: var(--swiper-centered-offset-after);\n}\n.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child {\n margin-block-start: var(--swiper-centered-offset-before);\n}\n.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before {\n width: 100%;\n min-width: 1px;\n height: var(--swiper-centered-offset-after);\n}\n/* Slide styles start */\n/* 3D Shadows */\n.swiper-3d .swiper-slide-shadow,\n.swiper-3d .swiper-slide-shadow-left,\n.swiper-3d .swiper-slide-shadow-right,\n.swiper-3d .swiper-slide-shadow-top,\n.swiper-3d .swiper-slide-shadow-bottom,\n.swiper-3d .swiper-slide-shadow,\n.swiper-3d .swiper-slide-shadow-left,\n.swiper-3d .swiper-slide-shadow-right,\n.swiper-3d .swiper-slide-shadow-top,\n.swiper-3d .swiper-slide-shadow-bottom {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 10;\n}\n.swiper-3d .swiper-slide-shadow {\n background: rgba(0, 0, 0, 0.15);\n}\n.swiper-3d .swiper-slide-shadow-left {\n background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-right {\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-top {\n background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-bottom {\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-lazy-preloader {\n width: 42px;\n height: 42px;\n position: absolute;\n left: 50%;\n top: 50%;\n margin-left: -21px;\n margin-top: -21px;\n z-index: 10;\n transform-origin: 50%;\n box-sizing: border-box;\n border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));\n border-radius: 50%;\n border-top-color: transparent;\n}\n.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader,\n.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader {\n animation: swiper-preloader-spin 1s infinite linear;\n}\n.swiper-lazy-preloader-white {\n --swiper-preloader-color: #fff;\n}\n.swiper-lazy-preloader-black {\n --swiper-preloader-color: #000;\n}\n@keyframes swiper-preloader-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n/* Slide styles end */\n.swiper-virtual .swiper-slide {\n -webkit-backface-visibility: hidden;\n transform: translateZ(0);\n}\n.swiper-virtual.swiper-css-mode .swiper-wrapper::after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n pointer-events: none;\n}\n.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after {\n height: 1px;\n width: var(--swiper-virtual-size);\n}\n.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after {\n width: 1px;\n height: var(--swiper-virtual-size);\n}\n:root {\n --swiper-navigation-size: 44px;\n /*\n --swiper-navigation-top-offset: 50%;\n --swiper-navigation-sides-offset: 10px;\n --swiper-navigation-color: var(--swiper-theme-color);\n */\n}\n.swiper-button-prev,\n.swiper-button-next {\n position: absolute;\n top: var(--swiper-navigation-top-offset, 50%);\n width: calc(var(--swiper-navigation-size) / 44 * 27);\n height: var(--swiper-navigation-size);\n margin-top: calc(0px - (var(--swiper-navigation-size) / 2));\n z-index: 10;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--swiper-navigation-color, var(--swiper-theme-color));\n}\n.swiper-button-prev.swiper-button-disabled,\n.swiper-button-next.swiper-button-disabled {\n opacity: 0.35;\n cursor: auto;\n pointer-events: none;\n}\n.swiper-button-prev.swiper-button-hidden,\n.swiper-button-next.swiper-button-hidden {\n opacity: 0;\n cursor: auto;\n pointer-events: none;\n}\n.swiper-navigation-disabled .swiper-button-prev,\n.swiper-navigation-disabled .swiper-button-next {\n display: none !important;\n}\n.swiper-button-prev svg,\n.swiper-button-next svg {\n width: 100%;\n height: 100%;\n object-fit: contain;\n transform-origin: center;\n}\n.swiper-rtl .swiper-button-prev svg,\n.swiper-rtl .swiper-button-next svg {\n transform: rotate(180deg);\n}\n.swiper-button-prev,\n.swiper-rtl .swiper-button-next {\n left: var(--swiper-navigation-sides-offset, 10px);\n right: auto;\n}\n.swiper-button-next,\n.swiper-rtl .swiper-button-prev {\n right: var(--swiper-navigation-sides-offset, 10px);\n left: auto;\n}\n.swiper-button-lock {\n display: none;\n}\n/* Navigation font start */\n.swiper-button-prev:after,\n.swiper-button-next:after {\n font-family: swiper-icons;\n font-size: var(--swiper-navigation-size);\n text-transform: none !important;\n letter-spacing: 0;\n font-variant: initial;\n line-height: 1;\n}\n.swiper-button-prev:after,\n.swiper-rtl .swiper-button-next:after {\n content: 'prev';\n}\n.swiper-button-next,\n.swiper-rtl .swiper-button-prev {\n right: var(--swiper-navigation-sides-offset, 10px);\n left: auto;\n}\n.swiper-button-next:after,\n.swiper-rtl .swiper-button-prev:after {\n content: 'next';\n}\n/* Navigation font end */\n:root {\n /*\n --swiper-pagination-color: var(--swiper-theme-color);\n --swiper-pagination-left: auto;\n --swiper-pagination-right: 8px;\n --swiper-pagination-bottom: 8px;\n --swiper-pagination-top: auto;\n --swiper-pagination-fraction-color: inherit;\n --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25);\n --swiper-pagination-progressbar-size: 4px;\n --swiper-pagination-bullet-size: 8px;\n --swiper-pagination-bullet-width: 8px;\n --swiper-pagination-bullet-height: 8px;\n --swiper-pagination-bullet-border-radius: 50%;\n --swiper-pagination-bullet-inactive-color: #000;\n --swiper-pagination-bullet-inactive-opacity: 0.2;\n --swiper-pagination-bullet-opacity: 1;\n --swiper-pagination-bullet-horizontal-gap: 4px;\n --swiper-pagination-bullet-vertical-gap: 6px;\n */\n}\n.swiper-pagination {\n position: absolute;\n text-align: center;\n transition: 300ms opacity;\n transform: translate3d(0, 0, 0);\n z-index: 10;\n}\n.swiper-pagination.swiper-pagination-hidden {\n opacity: 0;\n}\n.swiper-pagination-disabled > .swiper-pagination,\n.swiper-pagination.swiper-pagination-disabled {\n display: none !important;\n}\n/* Common Styles */\n.swiper-pagination-fraction,\n.swiper-pagination-custom,\n.swiper-horizontal > .swiper-pagination-bullets,\n.swiper-pagination-bullets.swiper-pagination-horizontal {\n bottom: var(--swiper-pagination-bottom, 8px);\n top: var(--swiper-pagination-top, auto);\n left: 0;\n width: 100%;\n}\n/* Bullets */\n.swiper-pagination-bullets-dynamic {\n overflow: hidden;\n font-size: 0;\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transform: scale(0.33);\n position: relative;\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {\n transform: scale(1);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {\n transform: scale(1);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {\n transform: scale(0.66);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {\n transform: scale(0.33);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {\n transform: scale(0.66);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {\n transform: scale(0.33);\n}\n.swiper-pagination-bullet {\n width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px));\n height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px));\n display: inline-block;\n border-radius: var(--swiper-pagination-bullet-border-radius, 50%);\n background: var(--swiper-pagination-bullet-inactive-color, #000);\n opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2);\n}\nbutton.swiper-pagination-bullet {\n border: none;\n margin: 0;\n padding: 0;\n box-shadow: none;\n -webkit-appearance: none;\n appearance: none;\n}\n.swiper-pagination-clickable .swiper-pagination-bullet {\n cursor: pointer;\n}\n.swiper-pagination-bullet:only-child {\n display: none !important;\n}\n.swiper-pagination-bullet-active {\n opacity: var(--swiper-pagination-bullet-opacity, 1);\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\n}\n.swiper-vertical > .swiper-pagination-bullets,\n.swiper-pagination-vertical.swiper-pagination-bullets {\n right: var(--swiper-pagination-right, 8px);\n left: var(--swiper-pagination-left, auto);\n top: 50%;\n transform: translate3d(0px, -50%, 0);\n}\n.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet,\n.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet {\n margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0;\n display: block;\n}\n.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,\n.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\n top: 50%;\n transform: translateY(-50%);\n width: 8px;\n}\n.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,\n.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n display: inline-block;\n transition: 200ms transform, 200ms top;\n}\n.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet,\n.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet {\n margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px);\n}\n.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,\n.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\n left: 50%;\n transform: translateX(-50%);\n white-space: nowrap;\n}\n.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,\n.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transition: 200ms transform, 200ms left;\n}\n.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transition: 200ms transform, 200ms right;\n}\n/* Fraction */\n.swiper-pagination-fraction {\n color: var(--swiper-pagination-fraction-color, inherit);\n}\n/* Progress */\n.swiper-pagination-progressbar {\n background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25));\n position: absolute;\n}\n.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n transform: scale(0);\n transform-origin: left top;\n}\n.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n transform-origin: right top;\n}\n.swiper-horizontal > .swiper-pagination-progressbar,\n.swiper-pagination-progressbar.swiper-pagination-horizontal,\n.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,\n.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite {\n width: 100%;\n height: var(--swiper-pagination-progressbar-size, 4px);\n left: 0;\n top: 0;\n}\n.swiper-vertical > .swiper-pagination-progressbar,\n.swiper-pagination-progressbar.swiper-pagination-vertical,\n.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,\n.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite {\n width: var(--swiper-pagination-progressbar-size, 4px);\n height: 100%;\n left: 0;\n top: 0;\n}\n.swiper-pagination-lock {\n display: none;\n}\n:root {\n /*\n --swiper-scrollbar-border-radius: 10px;\n --swiper-scrollbar-top: auto;\n --swiper-scrollbar-bottom: 4px;\n --swiper-scrollbar-left: auto;\n --swiper-scrollbar-right: 4px;\n --swiper-scrollbar-sides-offset: 1%;\n --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1);\n --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5);\n --swiper-scrollbar-size: 4px;\n */\n}\n.swiper-scrollbar {\n border-radius: var(--swiper-scrollbar-border-radius, 10px);\n position: relative;\n -ms-touch-action: none;\n background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1));\n}\n.swiper-scrollbar-disabled > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-disabled {\n display: none !important;\n}\n.swiper-horizontal > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-horizontal {\n position: absolute;\n left: var(--swiper-scrollbar-sides-offset, 1%);\n bottom: var(--swiper-scrollbar-bottom, 4px);\n top: var(--swiper-scrollbar-top, auto);\n z-index: 50;\n height: var(--swiper-scrollbar-size, 4px);\n width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%));\n}\n.swiper-vertical > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-vertical {\n position: absolute;\n left: var(--swiper-scrollbar-left, auto);\n right: var(--swiper-scrollbar-right, 4px);\n top: var(--swiper-scrollbar-sides-offset, 1%);\n z-index: 50;\n width: var(--swiper-scrollbar-size, 4px);\n height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%));\n}\n.swiper-scrollbar-drag {\n height: 100%;\n width: 100%;\n position: relative;\n background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5));\n border-radius: var(--swiper-scrollbar-border-radius, 10px);\n left: 0;\n top: 0;\n}\n.swiper-scrollbar-cursor-drag {\n cursor: move;\n}\n.swiper-scrollbar-lock {\n display: none;\n}\n/* Zoom container styles start */\n.swiper-zoom-container {\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n}\n.swiper-zoom-container > img,\n.swiper-zoom-container > svg,\n.swiper-zoom-container > canvas {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n}\n/* Zoom container styles end */\n.swiper-slide-zoomed {\n cursor: move;\n touch-action: none;\n}\n/* a11y */\n.swiper .swiper-notification {\n position: absolute;\n left: 0;\n top: 0;\n pointer-events: none;\n opacity: 0;\n z-index: -1000;\n}\n.swiper-free-mode > .swiper-wrapper {\n transition-timing-function: ease-out;\n margin: 0 auto;\n}\n.swiper-grid > .swiper-wrapper {\n flex-wrap: wrap;\n}\n.swiper-grid-column > .swiper-wrapper {\n flex-wrap: wrap;\n flex-direction: column;\n}\n.swiper-fade.swiper-free-mode .swiper-slide {\n transition-timing-function: ease-out;\n}\n.swiper-fade .swiper-slide {\n pointer-events: none;\n transition-property: opacity;\n}\n.swiper-fade .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-fade .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-fade .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-cube {\n overflow: visible;\n}\n.swiper-cube .swiper-slide {\n pointer-events: none;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n z-index: 1;\n visibility: hidden;\n transform-origin: 0 0;\n width: 100%;\n height: 100%;\n}\n.swiper-cube .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-cube.swiper-rtl .swiper-slide {\n transform-origin: 100% 0;\n}\n.swiper-cube .swiper-slide-active,\n.swiper-cube .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-cube .swiper-slide-active,\n.swiper-cube .swiper-slide-next,\n.swiper-cube .swiper-slide-prev {\n pointer-events: auto;\n visibility: visible;\n}\n.swiper-cube .swiper-cube-shadow {\n position: absolute;\n left: 0;\n bottom: 0px;\n width: 100%;\n height: 100%;\n opacity: 0.6;\n z-index: 0;\n}\n.swiper-cube .swiper-cube-shadow:before {\n content: '';\n background: #000;\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n filter: blur(50px);\n}\n.swiper-cube .swiper-slide-next + .swiper-slide {\n pointer-events: auto;\n visibility: visible;\n}\n/* Cube slide shadows start */\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top,\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right {\n z-index: 0;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n/* Cube slide shadows end */\n.swiper-flip {\n overflow: visible;\n}\n.swiper-flip .swiper-slide {\n pointer-events: none;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n z-index: 1;\n}\n.swiper-flip .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-flip .swiper-slide-active,\n.swiper-flip .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n/* Flip slide shadows start */\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top,\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right {\n z-index: 0;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n/* Flip slide shadows end */\n.swiper-creative .swiper-slide {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n overflow: hidden;\n transition-property: transform, opacity, height;\n}\n.swiper-cards {\n overflow: visible;\n}\n.swiper-cards .swiper-slide {\n transform-origin: center bottom;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n overflow: hidden;\n}\n\n/* === Photo Browser === */\n:root {\n --f7-photobrowser-bg-color: #fff;\n --f7-photobrowser-bars-bg-color: rgba(var(--f7-bars-bg-color-rgb), 0.95);\n --f7-photobrowser-bars-text-color: var(--f7-bars-text-color);\n --f7-photobrowser-bars-link-color: var(--f7-bars-link-color);\n --f7-photobrowser-caption-font-size: 13px;\n --f7-photobrowser-caption-font-weight: 500;\n --f7-photobrowser-caption-light-text-color: #000;\n --f7-photobrowser-caption-dark-text-color: #fff;\n --f7-photobrowser-exposed-bg-color: #000;\n --f7-photobrowser-dark-bg-color: #000;\n --f7-photobrowser-dark-bars-bg-color: rgba(27, 27, 27, 0.8);\n --f7-photobrowser-dark-bars-text-color: #fff;\n --f7-photobrowser-dark-bars-link-color: #fff;\n}\n.photo-browser {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 400;\n}\n.photo-browser-standalone.modal-in {\n transition-duration: 0ms;\n animation: photo-browser-in 400ms;\n}\n.photo-browser-standalone.modal-out {\n transition-duration: 0ms;\n animation: photo-browser-out 400ms !important;\n}\n.photo-browser-standalone.modal-out.swipe-close-to-bottom,\n.photo-browser-standalone.modal-out.swipe-close-to-top {\n animation: none !important;\n}\n.photo-browser-standalone.photo-browser-transitioning {\n transition: 400ms;\n animation: none !important;\n}\n.photo-browser-popup.modal-out.swipe-close-to-bottom,\n.photo-browser-popup.modal-out.swipe-close-to-top {\n transition-duration: 300ms;\n}\n.photo-browser-popup.modal-out.swipe-close-to-bottom {\n transform: translate3d(0, 100vh, 0);\n}\n.photo-browser-popup.modal-out.swipe-close-to-top {\n transform: translate3d(0, -100vh, 0);\n}\n.photo-browser-page {\n background: none;\n}\n.photo-browser-page .toolbar {\n transform: none;\n}\n.photo-browser-popup {\n background: none;\n}\n.photo-browser-of {\n margin: 0 5px;\n}\n.photo-browser-captions {\n pointer-events: none;\n position: absolute;\n left: 0;\n width: 100%;\n bottom: var(--f7-safe-area-bottom);\n z-index: 10;\n opacity: 1;\n transition-duration: 400ms;\n}\n.photo-browser-captions.photo-browser-captions-exposed {\n opacity: 0;\n}\n.toolbar ~ .toolbar.photo-browser-thumbs {\n bottom: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n}\n.page ~ .photo-browser-page:not(.photo-browser-exposed) .toolbar ~ .toolbar.photo-browser-thumbs,\n.photo-browser-popup:not(.photo-browser-exposed) .toolbar ~ .toolbar.photo-browser-thumbs,\n.photo-browser-standalone:not(.photo-browser-exposed) .toolbar ~ .toolbar.photo-browser-thumbs {\n height: var(--f7-toolbar-height);\n}\n.photo-browser-exposed .toolbar ~ .toolbar.photo-browser-thumbs {\n transform: translate3d(0, calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom, 0)), 0);\n}\n.photo-browser-exposed .toolbar ~ .toolbar.photo-browser-thumbs .swiper {\n height: calc(100% - var(--f7-safe-area-bottom, 0));\n}\n.navbar + .toolbar.photo-browser-thumbs .swiper {\n height: calc(100% - var(--f7-safe-area-bottom, 0));\n}\n.toolbar ~ .photo-browser-captions {\n bottom: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n transform: translate3d(0, 0px, 0);\n}\n.toolbar ~ .photo-browser-captions.photo-browser-captions-exposed {\n transform: translate3d(0, 0px, 0);\n}\n.toolbar ~ .toolbar ~ .photo-browser-captions {\n bottom: calc(var(--f7-toolbar-height) * 2 + var(--f7-safe-area-bottom));\n}\n.toolbar ~ .toolbar ~ .photo-browser-captions.photo-browser-captions-exposed {\n transform: translate3d(0, var(--f7-toolbar-height), 0);\n}\n.photo-browser-thumbs {\n transition-property: transform, background-color, color;\n}\n.photo-browser-thumbs .swiper {\n width: 100%;\n height: 100%;\n}\n.photo-browser-thumbs .swiper-slide {\n width: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.photo-browser-thumbs img {\n width: auto;\n height: 75%;\n display: block;\n border-radius: 2px;\n min-width: 4px;\n}\n.photo-browser-thumbs .swiper-slide img {\n transform: translateX(-4px);\n transition-duration: 150ms;\n}\n.photo-browser-thumbs .swiper-slide-active img {\n transform: scale(1.2);\n}\n.photo-browser-thumbs .swiper-slide-active ~ .swiper-slide img {\n transform: translateX(4px);\n}\n.photo-browser-caption {\n box-sizing: border-box;\n transition-duration: 400ms;\n position: absolute;\n bottom: 0;\n left: 0;\n opacity: 0;\n padding: 4px 5px;\n width: 100%;\n text-align: center;\n font-size: var(--f7-photobrowser-caption-font-size);\n font-weight: var(--f7-photobrowser-caption-font-weight);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .photo-browser-caption {\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.photo-browser-caption:empty {\n display: none;\n}\n.photo-browser-caption.photo-browser-caption-active {\n opacity: 1;\n}\n.photo-browser-captions-light .photo-browser-caption {\n color: var(--f7-photobrowser-caption-light-text-color);\n}\n.photo-browser-captions-dark .photo-browser-caption,\n.dark .photo-browser-caption {\n color: var(--f7-photobrowser-caption-dark-text-color);\n}\n.photo-browser-swiper-container {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n background: var(--f7-photobrowser-bg-color);\n transition: 400ms;\n transition-property: background-color;\n touch-action: none;\n}\n.photo-browser-prev.swiper-button-disabled,\n.photo-browser-next.swiper-button-disabled {\n opacity: 0.3;\n pointer-events: none;\n}\n.photo-browser-slide {\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n box-sizing: border-box;\n}\n.photo-browser-slide span.swiper-zoom-container {\n display: none;\n}\n.photo-browser-slide img {\n width: auto;\n height: auto;\n max-width: 100%;\n max-height: 100%;\n display: none;\n}\n.photo-browser-slide.swiper-slide-active span.swiper-zoom-container,\n.photo-browser-slide.swiper-slide-next span.swiper-zoom-container,\n.photo-browser-slide.swiper-slide-prev span.swiper-zoom-container {\n display: flex;\n}\n.photo-browser-slide.swiper-slide-active img,\n.photo-browser-slide.swiper-slide-next img,\n.photo-browser-slide.swiper-slide-prev img {\n display: inline;\n}\n.photo-browser-slide.swiper-slide-active.photo-browser-slide-lazy .preloader,\n.photo-browser-slide.swiper-slide-next.photo-browser-slide-lazy .preloader,\n.photo-browser-slide.swiper-slide-prev.photo-browser-slide-lazy .preloader {\n display: block;\n}\n.photo-browser-slide iframe {\n width: 100%;\n height: 100%;\n}\n.photo-browser-slide .preloader {\n display: none;\n position: absolute;\n width: 42px;\n height: 42px;\n margin-left: -21px;\n margin-top: -21px;\n left: 50%;\n top: 50%;\n}\n.navbar-photo-browser .right .link svg,\n.navbar-photo-browser .right .link i {\n width: 24px;\n height: 24px;\n display: block;\n}\n.photo-browser-page .navbar-bg,\n.navbar-photo-browser .navbar-bg,\n.photo-browser-page .toolbar,\n.photo-browser-caption {\n background-color: var(--f7-photobrowser-bars-bg-color, rgba(var(--f7-bars-bg-color-rgb), 0.95));\n}\n.photo-browser-page {\n touch-action: none;\n}\n.photo-browser-page .navbar,\n.photo-browser-page .toolbar {\n transform: translate3d(0, 0, 0);\n transition-duration: 400ms;\n color: var(--f7-photobrowser-bars-text-color, var(--f7-bars-text-color));\n}\n.photo-browser-page .navbar a,\n.photo-browser-page .toolbar a {\n color: var(--f7-photobrowser-bars-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.photo-browser-exposed .navbar,\n.photo-browser-exposed .toolbar:not(.photo-browser-thumbs) {\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n}\n.photo-browser-exposed .toolbar:not(.photo-browser-thumbs) ~ .photo-browser-captions,\n.photo-browser-exposed .toolbar ~ .toolbar.photo-browser-thumbs ~ .photo-browser-captions {\n transform: translate3d(0, var(--f7-toolbar-height), 0);\n}\n.photo-browser-exposed .photo-browser-swiper-container {\n background: var(--f7-photobrowser-exposed-bg-color);\n}\n.photo-browser-exposed .photo-browser-thumbs,\n.photo-browser-dark .photo-browser-thumbs,\n.photo-browser-exposed .toolbar,\n.photo-browser-dark .toolbar {\n background-color: var(--f7-photobrowser-dark-bars-bg-color);\n}\n.photo-browser-exposed .photo-browser-caption,\n.photo-browser-dark .photo-browser-caption {\n color: var(--f7-photobrowser-caption-dark-text-color);\n background-color: var(--f7-photobrowser-dark-bars-bg-color);\n}\n.view.with-photo-browser-page-exposed .navbar {\n opacity: 0;\n pointer-events: none;\n}\n.photo-browser-page .toolbar:before,\n.photo-browser-page .toolbar:after {\n display: none !important;\n}\n.photo-browser-page-dark .navbar-bg,\n.navbar-photo-browser-dark .navbar-bg {\n background: var(--f7-photobrowser-dark-bars-bg-color);\n}\n.photo-browser-page-dark .navbar-bg:before,\n.navbar-photo-browser-dark .navbar-bg:before,\n.photo-browser-page-dark .navbar-bg:after,\n.navbar-photo-browser-dark .navbar-bg:after {\n display: none !important;\n}\n.navbar-photo-browser-dark,\n.photo-browser-dark .navbar,\n.photo-browser-dark .toolbar,\n.photo-browser-page-dark .navbar,\n.photo-browser-page-dark .toolbar {\n color: var(--f7-photobrowser-dark-bars-text-color);\n}\n.navbar-photo-browser-dark a,\n.photo-browser-dark .navbar a,\n.photo-browser-dark .toolbar a,\n.photo-browser-page-dark .navbar a,\n.photo-browser-page-dark .toolbar a {\n color: var(--f7-photobrowser-dark-bars-link-color);\n}\n.photo-browser-dark .photo-browser-swiper-container,\n.photo-browser-page-dark .photo-browser-swiper-container {\n background: var(--f7-photobrowser-dark-bg-color);\n}\n@keyframes photo-browser-in {\n 0% {\n transform: translate3d(0, 0, 0) scale(0.5);\n opacity: 0;\n }\n 50% {\n transform: translate3d(0, 0, 0) scale(1.05);\n opacity: 1;\n }\n 100% {\n transform: translate3d(0, 0, 0) scale(1);\n opacity: 1;\n }\n}\n@keyframes photo-browser-out {\n 0% {\n transform: translate3d(0, 0, 0) scale(1);\n opacity: 1;\n }\n 50% {\n transform: translate3d(0, 0, 0) scale(1.05);\n opacity: 1;\n }\n 100% {\n transform: translate3d(0, 0, 0) scale(0.5);\n opacity: 0;\n }\n}\n/* === Notifications === */\n:root {\n --f7-notification-max-width: 568px;\n --f7-notification-subtitle-text-transform: none;\n --f7-notification-subtitle-line-height: 1.35;\n --f7-notification-text-text-transform: none;\n --f7-notification-text-font-weight: 400;\n}\n.ios {\n --f7-notification-margin: 8px;\n --f7-notification-padding-horizontal: 10px;\n --f7-notification-padding-vertical: 10px;\n --f7-notification-border-radius: 12px;\n --f7-notification-box-shadow: 0px 5px 25px -10px rgba(0, 0, 0, 0.7);\n --f7-notification-icon-size: 20px;\n --f7-notification-title-font-size: 13px;\n --f7-notification-title-text-transform: uppercase;\n --f7-notification-title-line-height: 1.4;\n --f7-notification-title-font-weight: 400;\n --f7-notification-title-letter-spacing: 0.02em;\n --f7-notification-title-right-font-size: 13px;\n --f7-notification-subtitle-font-size: 15px;\n --f7-notification-subtitle-font-weight: 600;\n --f7-notification-text-font-size: 15px;\n --f7-notification-text-line-height: 1.2;\n --f7-notification-bg-color: rgba(250, 250, 250, 0.95);\n --f7-notification-bg-color-rgb: 255, 255, 255;\n --f7-notification-title-color: #000;\n --f7-notification-title-right-color: rgba(0, 0, 0, 0.45);\n --f7-notification-subtitle-color: #000;\n --f7-notification-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-notification-bg-color: rgba(30, 30, 30, 0.95);\n --f7-notification-bg-color-rgb: 30, 30, 30;\n --f7-notification-title-color: #fff;\n --f7-notification-text-color: #fff;\n --f7-notification-subtitle-color: #fff;\n --f7-notification-title-right-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-notification-margin: 16px;\n --f7-notification-padding-vertical: 20px;\n --f7-notification-padding-horizontal: 16px;\n --f7-notification-border-radius: 16px;\n --f7-notification-box-shadow: none;\n --f7-notification-icon-size: 24px;\n --f7-notification-title-font-size: 16px;\n --f7-notification-title-text-transform: none;\n --f7-notification-title-line-height: 1.35;\n --f7-notification-title-font-weight: 500;\n --f7-notification-title-right-font-size: 12px;\n --f7-notification-subtitle-font-size: 14px;\n --f7-notification-subtitle-font-weight: 400;\n --f7-notification-text-font-size: 14px;\n --f7-notification-text-line-height: 1.35;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-notification-title-color: var(--f7-md-on-surface);\n --f7-notification-bg-color: var(--f7-md-surface-5);\n --f7-notification-text-color: var(--f7-md-on-surface-variant);\n --f7-notification-title-right-color: var(--f7-md-on-surface-variant);\n --f7-notification-subtitle-color: var(--f7-md-on-surface);\n}\n.notification {\n position: absolute;\n left: var(--f7-notification-margin);\n top: var(--f7-notification-margin);\n width: calc(100% - var(--f7-notification-margin) * 2);\n z-index: 20000;\n font-size: 14px;\n margin: 0;\n border: none;\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n direction: ltr;\n max-width: var(--f7-notification-max-width);\n padding: var(--f7-notification-padding-vertical) var(--f7-notification-padding-horizontal);\n border-radius: var(--f7-notification-border-radius);\n box-shadow: var(--f7-notification-box-shadow);\n background: var(--f7-notification-bg-color);\n margin-top: var(--f7-safe-area-top);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .notification {\n background-color: rgba(var(--f7-notification-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n@media (min-width: 568px) {\n .notification {\n left: 50%;\n width: var(--f7-notification-max-width);\n margin-left: calc(-1 * var(--f7-notification-max-width) / 2);\n }\n}\n.notification-title {\n color: var(--f7-notification-title-color, var(--f7-theme-color));\n font-size: var(--f7-notification-title-font-size);\n text-transform: var(--f7-notification-title-text-transform);\n line-height: var(--f7-notification-title-line-height);\n font-weight: var(--f7-notification-title-font-weight);\n letter-spacing: var(--f7-notification-title-letter-spacing);\n}\n.notification-subtitle {\n color: var(--f7-notification-subtitle-color);\n font-size: var(--f7-notification-subtitle-font-size);\n text-transform: var(--f7-notification-subtitle-text-transform);\n line-height: var(--f7-notification-subtitle-line-height);\n font-weight: var(--f7-notification-subtitle-font-weight);\n}\n.notification-text {\n color: var(--f7-notification-text-color);\n font-size: var(--f7-notification-text-font-size);\n text-transform: var(--f7-notification-text-text-transform);\n line-height: var(--f7-notification-text-line-height);\n font-weight: var(--f7-notification-text-font-weight);\n}\n.notification-title-right-text {\n color: var(--f7-notification-title-right-color);\n font-size: var(--f7-notification-title-right-font-size);\n}\n.notification-icon {\n font-size: 0;\n line-height: var(--f7-notification-icon-size);\n}\n.notification-icon i,\n.notification-icon {\n width: var(--f7-notification-icon-size) !important;\n height: var(--f7-notification-icon-size) !important;\n}\n.notification-icon i {\n font-size: var(--f7-notification-icon-size);\n}\n.notification-icon img {\n height: var(--f7-notification-icon-size);\n}\n.notification-header {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.notification-close-button {\n margin-left: auto;\n cursor: pointer;\n position: relative;\n}\n.notification-close-button:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n left: 50%;\n top: 50%;\n text-align: center;\n}\n.ios .notification {\n transition-duration: 450ms;\n transform: translate3d(0%, -200%, 0);\n}\n.ios .notification.modal-in {\n transform: translate3d(0%, 0%, 0);\n opacity: 1;\n}\n.ios .notification.modal-out {\n transform: translate3d(0%, -200%, 0);\n}\n.ios .notification-icon {\n margin-right: 8px;\n}\n.ios .notification-header + .notification-content {\n margin-top: 10px;\n}\n.ios .notification-title-right-text {\n margin-right: 6px;\n margin-left: auto;\n}\n.ios .notification-title-right-text + .notification-close-button {\n margin-left: 10px;\n}\n.ios .notification-close-button {\n font-size: 14px;\n width: 20px;\n height: 20px;\n opacity: 0.3;\n transition-duration: 300ms;\n}\n.ios .notification-close-button.active-state {\n transition-duration: 0ms;\n opacity: 0.1;\n}\n.ios .notification-close-button:after {\n color: #000;\n content: 'notification_close_ios';\n font-size: 0.65em;\n line-height: 44px;\n width: 44px;\n height: 44px;\n margin-left: -22px;\n margin-top: -22px;\n}\n.ios .dark .notification-close-button:after,\n.ios.dark .notification-close-button:after {\n color: #fff;\n}\n.md .notification {\n transform: translate3d(0, -150%, 0);\n}\n.md .notification.modal-in {\n transition-duration: 500ms;\n transform: translate3d(0, 0%, 0);\n transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n}\n.md .notification.modal-in.notification-transitioning {\n transition-duration: 200ms;\n}\n.md .notification.modal-out {\n animation: none;\n transition-duration: 200ms;\n transition-timing-function: ease-in;\n transform: translate3d(0, -150%, 0);\n}\n.md .notification-with-icon .notification-icon {\n position: absolute;\n left: var(--f7-notification-padding-horizontal);\n top: var(--f7-notification-padding-vertical);\n}\n.md .notification-with-icon .notification-content,\n.md .notification-with-icon .notification-header {\n margin-left: calc(var(--f7-notification-icon-size) + 16px);\n}\n.md .notification-icon {\n margin-right: 8px;\n}\n.md .notification-subtitle + .notification-text {\n margin-top: 4px;\n}\n.md .notification-header + .notification-content {\n margin-top: 8px;\n}\n.md .notification-title-right-text {\n margin-left: 4px;\n}\n.md .notification-title-right-text:before {\n content: '';\n width: 3px;\n height: 3px;\n border-radius: 50%;\n display: inline-block;\n vertical-align: middle;\n margin-right: 4px;\n background: var(--f7-notification-title-right-color);\n}\n.md .notification-close-button {\n width: 16px;\n height: 16px;\n transition-duration: 300ms;\n}\n.md .notification-close-button:before,\n.md .notification-close-button:after {\n width: 48px;\n height: 48px;\n left: 50%;\n top: 50%;\n margin-left: -24px;\n margin-top: -24px;\n}\n.md .notification-close-button:after {\n color: var(--f7-md-on-surface-variant);\n content: 'delete_round_md';\n line-height: 48px;\n font-size: 24px;\n}\n@keyframes notification-md-in {\n 0% {\n transform: translate3d(0, -150%, 0);\n }\n 50% {\n transform: translate3d(0, 10%, 0);\n }\n 100% {\n transform: translate3d(0, 0%, 0);\n }\n}\n/* === Autocomplete === */\n:root {\n --f7-autocomplete-dropdown-placeholder-color: #a9a9a9;\n --f7-autocomplete-dropdown-preloader-size: 20px;\n --f7-autocomplete-dropdown-font-size: var(--f7-list-font-size);\n /*\n --f7-autocomplete-dropdown-selected-bg-color: rgba(var(--f7-theme-color-rgb), 0.2);\n */\n}\n.ios {\n --f7-autocomplete-dropdown-box-shadow: 0px 3px 3px rgba(0, 0, 0, 0.2);\n --f7-autocomplete-dropdown-text-matching-font-weight: 600;\n --f7-autocomplete-dropdown-bg-color: #fff;\n --f7-autocomplete-dropdown-text-color: #000;\n --f7-autocomplete-dropdown-text-matching-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-autocomplete-dropdown-bg-color: #1c1c1d;\n --f7-autocomplete-dropdown-text-color: #fff;\n --f7-autocomplete-dropdown-text-matching-color: #fff;\n}\n.md {\n --f7-autocomplete-dropdown-box-shadow: none;\n --f7-autocomplete-dropdown-text-matching-font-weight: 500;\n --f7-autocomplete-dropdown-text-matching-color: #000;\n}\n.md .dark,\n.md.dark {\n --f7-autocomplete-dropdown-text-matching-color: #fff;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-autocomplete-dropdown-bg-color: var(--f7-md-surface-2);\n --f7-autocomplete-dropdown-text-color: var(--f7-md-on-surface);\n}\n.autocomplete-page .autocomplete-found {\n display: block;\n}\n.autocomplete-page .autocomplete-not-found {\n display: none;\n}\n.autocomplete-page .autocomplete-values {\n display: block;\n}\n.autocomplete-page .list ul:empty {\n display: none;\n}\n.autocomplete-preloader:not(.autocomplete-preloader-visible) {\n visibility: hidden;\n}\n.autocomplete-preloader:not(.autocomplete-preloader-visible),\n.autocomplete-preloader:not(.autocomplete-preloader-visible) * {\n animation: none;\n}\n.autocomplete-dropdown {\n background: var(--f7-autocomplete-dropdown-bg-color);\n box-shadow: var(--f7-autocomplete-dropdown-box-shadow);\n box-sizing: border-box;\n position: absolute;\n z-index: 500;\n width: 100%;\n right: 0;\n}\n.autocomplete-dropdown .autocomplete-dropdown-inner {\n position: relative;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n height: 100%;\n z-index: 1;\n}\n.autocomplete-dropdown .autocomplete-preloader {\n display: none;\n position: absolute;\n bottom: 100%;\n width: var(--f7-autocomplete-dropdown-preloader-size);\n height: var(--f7-autocomplete-dropdown-preloader-size);\n}\n.autocomplete-dropdown .autocomplete-preloader-visible {\n display: block;\n}\n.autocomplete-dropdown .autocomplete-dropdown-placeholder {\n color: var(--f7-autocomplete-dropdown-placeholder-color);\n}\n.autocomplete-dropdown .list {\n margin: 0;\n color: var(--f7-autocomplete-dropdown-text-color);\n font-size: var(--f7-autocomplete-dropdown-font-size);\n}\n.autocomplete-dropdown .list b {\n color: var(--f7-autocomplete-dropdown-text-matching-color);\n font-weight: var(--f7-autocomplete-dropdown-text-matching-font-weight);\n}\n.autocomplete-dropdown .list ul {\n background: none !important;\n}\n.autocomplete-dropdown .list ul:before,\n.autocomplete-dropdown .list ul:after {\n display: none !important;\n}\n.autocomplete-dropdown .autocomplete-dropdown-selected {\n background: var(--f7-autocomplete-dropdown-selected-bg-color, rgba(var(--f7-theme-color-rgb), 0.2));\n}\n.searchbar-input-wrap .autocomplete-dropdown {\n background-color: var(--f7-searchbar-input-bg-color, var(--f7-searchbar-bg-color));\n border-radius: var(--f7-searchbar-input-border-radius);\n margin-top: calc(-1 * var(--f7-searchbar-input-height));\n top: 100%;\n z-index: -1;\n}\n.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-inner {\n padding-top: var(--f7-searchbar-input-height);\n}\n.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-placeholder {\n color: var(--f7-searchbar-placeholder-color);\n}\n.searchbar-input-wrap .autocomplete-dropdown li:last-child {\n border-radius: 0 0 var(--f7-searchbar-input-border-radius) var(--f7-searchbar-input-border-radius);\n position: relative;\n overflow: hidden;\n}\n.searchbar-input-wrap .autocomplete-dropdown .item-content {\n padding-right: calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px));\n}\n.ios .autocomplete-dropdown .autocomplete-preloader {\n left: 16px;\n margin-bottom: 12px;\n}\n.md .autocomplete-page .navbar .autocomplete-preloader {\n margin-left: 8px;\n}\n.md .autocomplete-popup .navbar .autocomplete-preloader {\n margin-right: 8px;\n margin-left: 16px;\n}\n.md .autocomplete-dropdown .autocomplete-preloader {\n left: 16px;\n margin-bottom: 8px;\n}\n.md .autocomplete-dropdown .autocomplete-preloader circle {\n stroke-width: 3;\n}\n/* === Tooltip === */\n:root {\n --f7-tooltip-padding: 8px 16px;\n --f7-tooltip-font-size: 14px;\n --f7-tooltip-font-weight: 500;\n --f7-tooltip-desktop-padding: 6px 8px;\n --f7-tooltip-desktop-font-size: 12px;\n}\n.ios {\n --f7-tooltip-border-radius: 4px;\n --f7-tooltip-bg-color: rgba(0, 0, 0, 0.87);\n --f7-tooltip-text-color: #fff;\n}\n.md {\n --f7-tooltip-border-radius: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-tooltip-bg-color: var(--f7-md-secondary);\n --f7-tooltip-text-color: var(--f7-md-on-secondary);\n}\n.tooltip {\n position: absolute;\n z-index: 20000;\n background: var(--f7-tooltip-bg-color);\n border-radius: var(--f7-tooltip-border-radius);\n padding: var(--f7-tooltip-padding);\n color: var(--f7-tooltip-text-color);\n font-size: var(--f7-tooltip-font-size);\n font-weight: var(--f7-tooltip-font-weight);\n box-sizing: border-box;\n line-height: 1.2;\n opacity: 0;\n transform: scale(0.9);\n transition-duration: 150ms;\n transition-property: opacity, transform;\n z-index: 99000;\n}\n.tooltip.tooltip-in {\n transform: scale(1);\n opacity: 1;\n}\n.tooltip.tooltip-out {\n opacity: 0;\n transform: scale(1);\n}\n.device-desktop .tooltip {\n font-size: var(--f7-tooltip-desktop-font-size);\n padding: var(--f7-tooltip-desktop-padding);\n}\n/* === Gauge === */\n.gauge {\n position: relative;\n text-align: center;\n margin-left: auto;\n margin-right: auto;\n display: inline-block;\n}\n.gauge-svg,\n.gauge svg {\n max-width: 100%;\n height: auto;\n}\n.gauge-svg circle,\n.gauge svg circle,\n.gauge-svg path,\n.gauge svg path {\n transition-duration: 400ms;\n}\n/* === Skeleton === */\n:root {\n --skeleton-color: #ccc;\n --skeleton-icon-color: rgba(0, 0, 0, 0.25);\n}\n\n.skeleton-block {\n height: 1em;\n background: var(--skeleton-color) !important;\n width: 100%;\n display: block;\n}\n\n@font-face {\n font-family: \"skeleton\";\n src: url(\"data:application/font-woff;charset=utf-8;base64,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\") format(\"woff\");\n font-weight: 100, 200, 300, 400, 500, 600, 700, 800, 900;\n font-style: normal, italic;\n font-display: block;\n}\n.skeleton-text {\n font-family: \"skeleton\" !important;\n -webkit-user-select: none;\n user-select: none;\n}\n.skeleton-text, .skeleton-text * {\n color: var(--skeleton-color) !important;\n letter-spacing: -0.03em !important;\n}\n\n.skeleton-image {\n display: inline-block;\n}\n.skeleton-image svg {\n max-width: 100%;\n height: auto;\n}\n.skeleton-image polygon {\n fill: var(--skeleton-color);\n}\n.skeleton-image path {\n fill: var(--skeleton-icon-color);\n}\n\n.skeleton-avatar {\n display: inline-block;\n}\n.skeleton-avatar svg {\n max-width: 100%;\n height: auto;\n}\n.skeleton-avatar rect {\n fill: var(--skeleton-color);\n}\n.skeleton-avatar path {\n fill: var(--skeleton-icon-color);\n}\n\n.skeleton-effect-blink, .skeleton-effect-wave {\n -webkit-mask-image: linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%);\n mask-image: linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%);\n -webkit-mask-size: 200% 100%;\n mask-size: 200% 100%;\n -webkit-mask-repeat: repeat;\n mask-repeat: repeat;\n -webkit-mask-position: 50% top;\n mask-position: 50% top;\n animation: skeleton-effect-wave 1s infinite;\n}\n.skeleton-effect-fade {\n animation: skeleton-effect-fade 1s infinite;\n}\n.skeleton-effect-pulse {\n animation: skeleton-effect-pulse 1s infinite;\n}\n\n@keyframes skeleton-effect-fade {\n 0% {\n opacity: 1;\n }\n 50% {\n opacity: 0.2;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes skeleton-effect-wave {\n 0% {\n -webkit-mask-position: 50% top;\n mask-position: 50% top;\n }\n 100% {\n -webkit-mask-position: -150% top;\n mask-position: -150% top;\n }\n}\n@keyframes skeleton-effect-pulse {\n 0% {\n transform: scale(1);\n }\n 40% {\n transform: scale(1);\n }\n 50% {\n transform: scale(0.975);\n }\n 100% {\n transform: scale(1);\n }\n}\n:root {\n --skeleton-color: #ccc;\n --skeleton-icon-color: rgba(0, 0, 0, 0.25);\n}\n.dark {\n --skeleton-color: #515151;\n --skeleton-icon-color: rgba(255, 255, 255, 0.25);\n}\n/* === Color Picker === */\n:root {\n --f7-color-picker-popover-width: 350px;\n --f7-color-picker-slider-size: 6px;\n --f7-color-picker-slider-knob-size: 16px;\n --f7-color-picker-bar-size: 50px;\n --f7-color-picker-bar-min-height: 260px;\n --f7-color-picker-value-width: 64px;\n --f7-color-picker-value-height: 32px;\n --f7-color-picker-value-font-size: 16px;\n --f7-color-picker-value-border-radius: 4px;\n --f7-color-picker-hex-value-width: 84px;\n --f7-color-picker-label-font-size: 14px;\n --f7-color-picker-label-width: 10px;\n --f7-color-picker-label-height: 14px;\n --f7-color-picker-sb-spectrum-height: 260px;\n --f7-color-picker-sb-spectrum-handle-size: 16px;\n --f7-color-picker-wheel-width: 330px;\n --f7-color-picker-palette-value-width: 36px;\n --f7-color-picker-palette-value-height: 36px;\n --f7-color-picker-initial-current-color-height: 40px;\n --f7-color-picker-initial-current-color-border-radius: 4px;\n --f7-color-picker-sheet-bg-color: #fff;\n --f7-color-picker-popup-bg-color: #fff;\n --f7-color-picker-value-bg-color: rgba(0, 0, 0, 0.05);\n --f7-color-picker-group-bg-color: rgba(0, 0, 0, 0.05);\n --f7-color-picker-group-value-bg-color: #fff;\n}\n:root .dark,\n:root.dark {\n --f7-color-picker-sheet-bg-color: #121212;\n --f7-color-picker-popup-bg-color: #121212;\n --f7-color-picker-value-bg-color: rgba(255, 255, 255, 0.1);\n --f7-color-picker-group-bg-color: #000;\n --f7-color-picker-group-value-bg-color: rgba(255, 255, 255, 0.12);\n}\n.color-picker {\n overflow: hidden;\n width: 100%;\n display: flex;\n flex-direction: column;\n}\n.color-picker.color-picker-inline,\n.color-picker-popover .color-picker,\n.color-picker-popup .color-picker {\n position: relative;\n}\n.color-picker-sheet-modal {\n background: var(--f7-color-picker-sheet-bg-color);\n}\n.color-picker-sheet-modal:before {\n z-index: 600;\n}\n.color-picker-sheet-modal .sheet-modal-inner {\n margin-bottom: var(--f7-safe-area-bottom);\n}\n.color-picker-popup .page {\n background: var(--f7-color-picker-popup-bg-color);\n}\n.color-picker-popup .page-content {\n padding-bottom: var(--f7-safe-area-bottom);\n}\n.color-picker-popover .color-picker,\n.color-picker-popup .color-picker,\n.color-picker-page .color-picker {\n height: 100%;\n}\n.color-picker-popover .color-picker .toolbar,\n.color-picker-popup .color-picker .toolbar,\n.color-picker-page .color-picker .toolbar {\n position: absolute;\n}\n.color-picker-popover {\n width: var(--f7-color-picker-popover-width);\n max-width: 90vw;\n max-height: 80vh;\n}\n.md .color-picker-popover .popover-inner {\n padding: 8px;\n}\n.color-picker-popover .color-picker {\n max-height: 80vh;\n}\n.color-picker-popover .toolbar-top {\n border-top-left-radius: var(--f7-popover-border-radius);\n border-top-right-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .color-picker-module-palette {\n overflow: hidden;\n flex-shrink: 0;\n}\n.color-picker-popover .color-picker-module-palette:first-child {\n border-top-left-radius: var(--f7-popover-border-radius);\n border-top-right-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .color-picker-module-palette:last-child {\n border-bottom-left-radius: var(--f7-popover-border-radius);\n border-bottom-right-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .color-picker-module-palette:first-child:last-child {\n border-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .toolbar ~ .page-content .color-picker-module-palette:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.color-picker-popup .page-content,\n.color-picker-popover .page-content,\n.color-picker-sheet-modal .page-content,\n.color-picker-page .page-content {\n display: flex;\n justify-content: flex-start;\n align-items: stretch;\n flex-direction: column;\n overflow-x: hidden;\n}\n.color-picker-module {\n margin-top: 5px;\n}\n.color-picker-module:last-child {\n margin-bottom: 5px;\n}\n.color-picker-module-sb-spectrum,\n.color-picker-module-hs-spectrum {\n margin-left: 10px;\n margin-right: 10px;\n}\n.color-picker-module-sb-spectrum:first-child,\n.color-picker-module-hs-spectrum:first-child {\n margin-top: 10px;\n}\n.color-picker-module-sb-spectrum .color-picker-sb-spectrum,\n.color-picker-module-hs-spectrum .color-picker-sb-spectrum,\n.color-picker-module-sb-spectrum .color-picker-hs-spectrum,\n.color-picker-module-hs-spectrum .color-picker-hs-spectrum {\n height: var(--f7-color-picker-sb-spectrum-height);\n}\n.ios .color-picker-module-sb-spectrum .color-picker-sb-spectrum,\n.ios .color-picker-module-hs-spectrum .color-picker-sb-spectrum,\n.ios .color-picker-module-sb-spectrum .color-picker-hs-spectrum,\n.ios .color-picker-module-hs-spectrum .color-picker-hs-spectrum {\n border-radius: 4px;\n}\n.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum,\n.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum,\n.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum,\n.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum {\n border-radius: 12px;\n}\n.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum::after,\n.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum::after,\n.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum::after,\n.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum::after {\n border-radius: inherit;\n}\n.color-picker-sb-spectrum {\n background-color: #000;\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, #000 100%), linear-gradient(to left, rgba(255, 255, 255, 0) 0%, #fff 100%);\n position: relative;\n}\n.color-picker-hs-spectrum {\n position: relative;\n background-image: linear-gradient(to right, hsl(0, 100%, 50%), hsl(60, 100%, 50%), hsl(120, 100%, 50%), hsl(180, 100%, 50%), hsl(240, 100%, 50%), hsl(300, 100%, 50%), hsl(0, 100%, 50%));\n}\n.color-picker-hs-spectrum:after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), #ffffff);\n}\n.color-picker-sb-spectrum-handle,\n.color-picker-hs-spectrum-handle {\n width: 4px;\n height: 4px;\n position: absolute;\n left: -2px;\n top: -2px;\n z-index: 1;\n}\n.color-picker-sb-spectrum-handle:after,\n.color-picker-hs-spectrum-handle:after {\n background-color: inherit;\n content: '';\n position: absolute;\n width: var(--f7-color-picker-sb-spectrum-handle-size);\n height: var(--f7-color-picker-sb-spectrum-handle-size);\n border: 1px solid #fff;\n border-radius: 50%;\n box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.5);\n box-sizing: border-box;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n transition: 150ms;\n transition-property: transform;\n transform-origin: center;\n}\n.color-picker-sb-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after,\n.color-picker-hs-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after,\n.color-picker-sb-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,\n.color-picker-hs-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after {\n transform: scale(1.5) translate(-33.333%, -33.333%);\n}\n.color-picker-module-wheel {\n margin-left: 10px;\n margin-right: 10px;\n}\n.color-picker-wheel {\n position: relative;\n width: var(--f7-color-picker-wheel-width);\n max-width: 100%;\n height: auto;\n font-size: 0;\n margin-left: auto;\n margin-right: auto;\n}\n.color-picker-wheel svg {\n width: 100%;\n height: auto;\n}\n.color-picker-wheel .color-picker-wheel-handle {\n width: 16.66666667%;\n height: 16.66666667%;\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #fff;\n box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5);\n background: red;\n border-radius: 50%;\n left: 0;\n top: 0;\n}\n.color-picker-wheel .color-picker-sb-spectrum {\n width: 45%;\n height: 45%;\n left: 50%;\n top: 50%;\n transform: translate3d(-50%, -50%, 0);\n position: absolute;\n}\n.color-picker-slider-wrap {\n display: flex;\n align-items: center;\n margin-bottom: 2px;\n}\n.color-picker-slider-wrap + .color-picker-slider-wrap {\n margin-top: 5px;\n}\n.color-picker-hex-wrap {\n justify-content: space-between;\n display: flex;\n align-items: center;\n}\n.color-picker-slider-label,\n.color-picker-hex-label {\n font-size: var(--f7-color-picker-label-font-size);\n width: var(--f7-color-picker-label-size);\n flex-shrink: 0;\n margin-left: 12px;\n}\n.color-picker-hex-label {\n width: auto;\n}\n.color-picker-bar-value,\n.color-picker-slider-value,\n.color-picker-hex-value {\n width: var(--f7-color-picker-value-width);\n height: var(--f7-color-picker-value-height);\n background: var(--f7-color-picker-value-bg-color);\n border-radius: var(--f7-color-picker-value-border-radius);\n text-align: center;\n font-size: var(--f7-color-picker-value-font-size);\n display: flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n margin-right: 10px;\n}\n.color-picker-bar-value input,\n.color-picker-slider-value input,\n.color-picker-hex-value input {\n width: 100%;\n height: 100%;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n outline: 0;\n background: transparent;\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n text-align: center;\n display: block;\n border-radius: 4px;\n}\n.color-picker-bar-value input::-webkit-inner-spin-button,\n.color-picker-slider-value input::-webkit-inner-spin-button,\n.color-picker-hex-value input::-webkit-inner-spin-button,\n.color-picker-bar-value input::-webkit-outer-spin-button,\n.color-picker-slider-value input::-webkit-outer-spin-button,\n.color-picker-hex-value input::-webkit-outer-spin-button {\n -webkit-appearance: none;\n appearance: none;\n margin: 0;\n display: none;\n}\n.color-picker-hex-value {\n width: var(--f7-color-picker-hex-value-width);\n}\n.color-picker-hex-value:first-child {\n margin-right: auto;\n}\n.color-picker-slider {\n --f7-range-bar-active-bg-color: transparent;\n --f7-range-bar-size: var(--f7-color-picker-slider-size);\n --f7-range-bar-border-radius: var(--f7-color-picker-slider-size);\n --f7-range-knob-size: var(--f7-color-picker-slider-knob-size);\n --f7-range-knob-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n}\n.color-picker-slider .range-knob {\n transition-duration: 200ms;\n transition-property: transform;\n}\n.color-picker-slider .range-knob:after {\n width: 30px;\n height: 30px;\n margin-left: -16px;\n margin-top: -16px;\n}\n.color-picker-slider .range-knob-active-state .range-knob {\n transform: scale(1.5);\n}\n.md .color-picker-slider.range-slider-min:not(.range-slider-dual) .range-knob {\n background: var(--f7-range-knob-color) !important;\n border: none;\n}\n.color-picker-module-rgb-bars {\n display: flex;\n justify-content: space-around;\n justify-content: space-evenly;\n align-items: stretch;\n height: 100%;\n min-height: var(--f7-color-picker-bar-min-height);\n padding-bottom: 10px;\n padding-top: 10px;\n box-sizing: border-box;\n}\n.color-picker-bar-wrap {\n display: flex;\n align-items: center;\n flex-direction: column-reverse;\n}\n.color-picker-bar {\n --f7-range-bar-active-bg-color: transparent;\n --f7-range-bar-size: var(--f7-color-picker-bar-size);\n --f7-range-bar-border-radius: 2px;\n --f7-range-knob-size: 6px;\n --f7-range-knob-box-shadow: 0 0px 3px rgba(0, 0, 0, 0.3);\n --f7-range-knob-color: #fff;\n}\n.color-picker-bar .range-knob {\n transition-duration: 0ms;\n transition-property: transform;\n border-radius: 3px;\n}\n.color-picker-bar .range-knob-wrap {\n height: 6px;\n width: calc(var(--f7-color-picker-bar-size) - 4px);\n margin-left: calc(-0.5 * (var(--f7-color-picker-bar-size) - 4px));\n}\n.color-picker-bar .range-knob-active-state .range-knob {\n transform: scale(1);\n}\n.md .color-picker-bar.range-slider-min:not(.range-slider-dual) .range-knob {\n background: var(--f7-range-knob-color) !important;\n border: none;\n}\n.color-picker-bar-label {\n font-size: var(--f7-color-picker-label-size);\n margin-top: 12px;\n line-height: 1;\n height: var(--f7-color-picker-label-height);\n flex-shrink: 0;\n}\n.color-picker-bar-value {\n margin-left: 0;\n margin-bottom: 10px;\n}\n.color-picker-slider-alpha {\n --f7-range-knob-color: #fff;\n}\n.color-picker-slider-alpha .range-bar {\n background-image: linear-gradient(to left, rgba(0, 0, 0, 0), #000), linear-gradient(to right, rgba(255, 255, 255, 0.2) 50%, rgba(0, 0, 0, 0.2) 50%), linear-gradient(to left, rgba(255, 255, 255, 0.2) 50%, rgba(0, 0, 0, 0.2) 50%);\n background-size: 100% 100%,\n 6px 3px,\n 6px 3px;\n background-position: 0 0,\n 0px 3px,\n 0 0;\n background-repeat: repeat-y, repeat-x, repeat-x;\n}\n.color-picker-slider-hue .range-bar {\n background-image: linear-gradient(to left, hsl(0, 100%, 50%), hsl(60, 100%, 50%), hsl(120, 100%, 50%), hsl(180, 100%, 50%), hsl(240, 100%, 50%), hsl(300, 100%, 50%), hsl(0, 100%, 50%));\n}\n.color-picker-slider-brightness .range-bar {\n background-image: linear-gradient(to left, #000, #fff);\n}\n.color-picker-module-palette {\n margin-top: 16px;\n}\n.color-picker-module-palette:first-child {\n margin-top: 0;\n}\n.color-picker-module-palette:last-child {\n margin-bottom: 0;\n}\n.color-picker-module-palette:first-child:last-child {\n margin: 0;\n}\n.color-picker-palette {\n display: flex;\n flex-wrap: wrap;\n}\n.color-picker-palette-row {\n width: 100%;\n display: flex;\n flex-wrap: nowrap;\n}\n.color-picker-palette-row .color-picker-palette-value {\n width: 100%;\n}\n.color-picker-palette-value {\n width: var(--f7-color-picker-palette-value-width);\n height: var(--f7-color-picker-palette-value-height);\n cursor: pointer;\n}\n.color-picker-module-initial-current-colors,\n.color-picker-module-current-color {\n margin-left: 10px;\n margin-right: 10px;\n border-radius: var(--f7-color-picker-initial-current-color-border-radius);\n overflow: hidden;\n flex-shrink: 0;\n}\n.color-picker-initial-color,\n.color-picker-current-color {\n height: var(--f7-color-picker-initial-current-color-height);\n}\n.color-picker-initial-current-colors {\n display: flex;\n}\n.color-picker-initial-current-colors .color-picker-initial-color,\n.color-picker-initial-current-colors .color-picker-current-color {\n width: 50%;\n}\n.color-picker-module-rgb-sliders,\n.color-picker-module-hsb-sliders,\n.color-picker-module-alpha-slider,\n.color-picker-module-hue-slider,\n.color-picker-module-brightness-slider,\n.color-picker-module-hex {\n margin-left: 10px;\n margin-right: 10px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders,\n.color-picker-grouped-modules .color-picker-module-alpha-slider,\n.color-picker-grouped-modules .color-picker-module-hue-slider,\n.color-picker-grouped-modules .color-picker-module-brightness-slider,\n.color-picker-grouped-modules .color-picker-module-hex {\n background: var(--f7-color-picker-group-bg-color);\n padding: 8px;\n border-radius: 8px;\n margin-top: 16px;\n margin-left: 8px;\n margin-right: 8px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders:last-child,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders:last-child,\n.color-picker-grouped-modules .color-picker-module-alpha-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hue-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-brightness-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hex:last-child {\n margin-bottom: 16px;\n}\n.color-picker-grouped-modules .color-picker-slider-value,\n.color-picker-grouped-modules .color-picker-hex-value {\n background: var(--f7-color-picker-group-value-bg-color);\n}\n.color-picker-grouped-modules .color-picker-slider-label,\n.color-picker-grouped-modules .color-picker-hex-label {\n margin-right: 5px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:first-child {\n margin-right: 5px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:last-child {\n margin-left: 5px;\n}\n/* === Treeview === */\n:root {\n --f7-treeview-item-height: 34px;\n --f7-treeview-item-padding-left: 16px;\n --f7-treeview-item-padding-right: 16px;\n --f7-treeview-toggle-size: 24px;\n --f7-treeview-children-offset: 29px;\n --f7-treeview-label-font-weight: 400;\n --f7-treeview-label-text-color: inherit;\n --f7-treeview-icon-size: 24px;\n /*\n --f7-treeview-selectable-selected-bg-color: rgba(var(--f7-theme-color-rgb), 0.2);\n */\n --f7-treeview-toggle-color: rgba(0, 0, 0, 0.5);\n --f7-treeview-toggle-hover-bg-color: rgba(0, 0, 0, 0.1);\n --f7-treeview-toggle-pressed-bg-color: rgba(0, 0, 0, 0.15);\n --f7-treeview-icon-color: rgba(0, 0, 0, 0.5);\n --f7-treeview-selectable-hover-bg-color: rgba(0, 0, 0, 0.1);\n --f7-treeview-link-hover-bg-color: rgba(0, 0, 0, 0.1);\n --f7-treeview-link-pressed-bg-color: rgba(0, 0, 0, 0.15);\n}\n:root .dark,\n:root.dark {\n --f7-treeview-toggle-color: rgba(255, 255, 255, 0.5);\n --f7-treeview-toggle-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-treeview-toggle-pressed-bg-color: rgba(255, 255, 255, 0.1);\n --f7-treeview-icon-color: rgba(255, 255, 255, 0.75);\n --f7-treeview-selectable-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-treeview-link-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-treeview-link-pressed-bg-color: rgba(255, 255, 255, 0.11);\n}\n.ios {\n --f7-treeview-label-font-size: 17px;\n}\n.md {\n --f7-treeview-label-font-size: 16px;\n}\n.treeview-item-root {\n padding-right: var(--f7-treeview-item-padding-left);\n padding-left: var(--f7-treeview-item-padding-right);\n min-height: var(--f7-treeview-item-height);\n display: flex;\n align-items: center;\n justify-content: flex-start;\n}\n.treeview-item-content {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.treeview-item-content > i,\n.treeview-item-content > .f7-icons,\n.treeview-item-content > .material-icons {\n font-size: var(--f7-treeview-icon-size);\n color: var(--f7-treeview-icon-color);\n}\n.treeview-item-content:first-child {\n margin-right: calc(var(--f7-treeview-toggle-size) + 5px);\n}\n.treeview-item-content > * + * {\n margin-right: 5px;\n}\n.treeview-item-label {\n font-size: var(--f7-treeview-label-font-size);\n font-weight: var(--f7-treeview-label-font-weight);\n color: var(--f7-treeview-label-text-color);\n}\n.treeview-toggle {\n width: var(--f7-treeview-toggle-size);\n height: var(--f7-treeview-toggle-size);\n cursor: pointer;\n border-radius: 4px;\n background-color: rgba(0, 0, 0, 0);\n transition-duration: 200ms;\n position: relative;\n margin-left: 5px;\n}\n.treeview-toggle.active-state {\n background-color: var(--f7-treeview-toggle-pressed-bg-color);\n}\n.treeview-toggle:after {\n transition-duration: 200ms;\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n width: 0;\n height: 0;\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n transform: translate(-50%, -50%);\n border-right: 6px solid var(--f7-treeview-toggle-color);\n}\n.treeview-toggle-hidden {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n}\n.treeview-preloader {\n --f7-preloader-size: var(--f7-treeview-toggle-size);\n margin-left: calc(-1 * var(--f7-treeview-toggle-size));\n}\n.treeview-item-children {\n display: none;\n}\n.treeview-item-opened > .treeview-item-children {\n display: block;\n}\n.treeview-item-opened > .treeview-item-root .treeview-toggle:after {\n transform: translate(-50%, -50%) rotate(-90deg);\n}\na.treeview-item-root {\n color: var(--f7-treeview-label-text-color);\n}\n.treeview-item-selectable > .treeview-item-root,\n.treeview-item-selectable.treeview-item-root {\n cursor: pointer;\n transition-duration: 150ms;\n}\na.treeview-item-root {\n transition-duration: 150ms;\n}\na.treeview-item-root.active-state {\n background: var(--f7-treeview-link-pressed-bg-color);\n}\n.treeview-item-toggle > .treeview-item-root,\n.treeview-item-toggle.treeview-item-root {\n cursor: pointer;\n}\n.treeview-item-selected > .treeview-item-root,\n.treeview-item-selected.treeview-item-root {\n background: var(--f7-treeview-selectable-selected-bg-color, rgba(var(--f7-theme-color-rgb), 0.2));\n}\n.treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 1);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 2);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 3);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 4);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 5);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 6);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 7);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 8);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 9);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-right: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 10);\n}\n/* === Stepper === */\n:root {\n --f7-text-editor-font-size: inherit;\n --f7-text-editor-font-weight: inherit;\n --f7-text-editor-border-width: 1px;\n --f7-text-editor-height: 250px;\n --f7-text-editor-margin: 16px;\n --f7-text-editor-padding: 8px;\n --f7-text-editor-button-bg-color: transparent;\n --f7-text-editor-button-size: 28px;\n --f7-text-editor-button-icon-size: 20px;\n --f7-text-editor-button-margin: 2px;\n --f7-text-editor-text-color: #000;\n --f7-text-editor-bg-color: #fff;\n --f7-text-editor-button-divider-color: rgba(0, 0, 0, 0.15);\n}\n:root .dark,\n:root.dark {\n --f7-text-editor-bg-color: #121212;\n --f7-text-editor-text-color: #fff;\n --f7-text-editor-button-divider-color: rgba(255, 255, 255, 0.15);\n}\n.ios {\n --f7-text-editor-toolbar-padding: 6px;\n --f7-text-editor-button-border-radius: 2px;\n --f7-text-editor-placeholder-color: rgba(0, 0, 0, 0.35);\n --f7-text-editor-toolbar-border-color: rgba(0, 0, 0, 0.25);\n --f7-text-editor-toolbar-bg-color: #fff;\n --f7-text-editor-border-color: rgba(0, 0, 0, 0.1);\n --f7-text-editor-button-text-color: #333;\n}\n.ios .dark,\n.ios.dark {\n --f7-text-editor-placeholder-color: rgba(255, 255, 255, 0.35);\n --f7-text-editor-toolbar-bg-color: #121212;\n --f7-text-editor-toolbar-border-color: rgba(255, 255, 255, 0.1);\n --f7-text-editor-toolbar-bg-color: #202020;\n --f7-text-editor-border-color: rgba(255, 255, 255, 0.1);\n --f7-text-editor-button-text-color: #fff;\n}\n.md {\n --f7-text-editor-button-border-radius: 8px;\n --f7-text-editor-toolbar-padding: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-text-editor-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-text-editor-toolbar-bg-color: var(--f7-md-surface-1);\n --f7-text-editor-border-color: var(--f7-md-outline);\n --f7-text-editor-button-text-color: var(--f7-md-on-surface);\n}\n.text-editor {\n margin: var(--f7-text-editor-margin);\n background-color: var(--f7-text-editor-bg-color);\n display: block;\n position: relative;\n border: var(--f7-text-editor-border-width) solid var(--f7-text-editor-border-color);\n display: flex;\n flex-direction: column;\n align-items: stretch;\n height: var(--f7-text-editor-height);\n box-sizing: border-box;\n}\n.text-editor.text-editor-resizable {\n height: auto;\n}\n.text-editor-toolbar {\n display: flex;\n flex-wrap: wrap;\n background: var(--f7-text-editor-toolbar-bg-color);\n z-index: 100;\n position: relative;\n position: sticky;\n left: 0;\n top: 0;\n padding: var(--f7-text-editor-toolbar-padding);\n flex-shrink: 0;\n box-sizing: border-box;\n}\n.text-editor-toolbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-text-editor-toolbar-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\nbutton.text-editor-button {\n -webkit-appearance: none;\n appearance: none;\n border: none;\n padding: 0;\n margin: 0;\n outline: 0;\n font-family: inherit;\n background: transparent;\n cursor: pointer;\n box-shadow: none;\n border-radius: var(--f7-text-editor-button-border-radius);\n position: relative;\n z-index: 1;\n display: flex;\n width: auto;\n overflow: hidden;\n width: var(--f7-text-editor-button-size);\n height: var(--f7-text-editor-button-size);\n align-items: center;\n justify-content: center;\n margin: var(--f7-text-editor-button-margin);\n box-sizing: border-box;\n color: var(--f7-text-editor-button-text-color);\n background-color: var(--f7-text-editor-button-bg-color);\n flex-shrink: 0;\n}\nbutton.text-editor-button i,\nbutton.text-editor-button .f7-icons,\nbutton.text-editor-button .material-icons {\n font-size: var(--f7-text-editor-button-icon-size);\n font-style: normal;\n}\nbutton.text-editor-button i sup,\nbutton.text-editor-button .f7-icons sup,\nbutton.text-editor-button .material-icons sup,\nbutton.text-editor-button i sub,\nbutton.text-editor-button .f7-icons sub,\nbutton.text-editor-button .material-icons sub {\n font-size: 60%;\n}\n.text-editor-button-divider {\n width: 1px;\n background: var(--f7-text-editor-button-divider-color);\n margin: 0 2px;\n flex-shrink: 0;\n}\n.text-editor-content {\n -webkit-user-modify: read-write;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n outline: 0;\n height: 100%;\n -webkit-user-select: text;\n user-select: text;\n padding: var(--f7-text-editor-padding);\n overflow: auto;\n flex-shrink: 10;\n box-sizing: border-box;\n color: var(--f7-text-editor-text-color);\n font-size: var(--f7-text-editor-font-size);\n font-weight: var(--f7-text-editor-font-weight);\n}\n.text-editor-content .text-editor-placeholder {\n pointer-events: none;\n color: var(--f7-text-editor-placeholder-color);\n}\n.text-editor-content img {\n max-width: 100%;\n}\n.text-editor-content a {\n pointer-events: none;\n}\n.text-editor-popover {\n z-index: 12500;\n width: auto;\n max-width: 80vw;\n}\n.text-editor-popover .popover-inner {\n display: flex;\n flex-wrap: wrap;\n padding: 3px;\n}\n.text-editor-keyboard-toolbar {\n position: absolute;\n z-index: 6000;\n --f7-safe-area-bottom: 0px;\n}\n.text-editor-keyboard-toolbar .toolbar-inner {\n justify-content: flex-start !important;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.text-editor-keyboard-toolbar .toolbar-inner .text-editor-button-divider {\n height: 100%;\n}\n.item-input .text-editor {\n border: none;\n margin: 0;\n background-color: var(--f7-input-bg-color, transparent);\n}\n.item-input .text-editor-content {\n padding-top: var(--f7-textarea-padding-vertical);\n padding-bottom: var(--f7-textarea-padding-vertical);\n padding-left: var(--f7-input-padding-left);\n padding-right: var(--f7-input-padding-right);\n color: var(--f7-input-text-color);\n font-size: var(--f7-input-font-size);\n}\n.item-input .text-editor-toolbar {\n box-shadow: none;\n}\n.item-input .text-editor-toolbar:after {\n display: none !important;\n}\n.item-input-outline .text-editor-content {\n border-radius: var(--f7-input-outline-border-radius);\n}\n.ios button.text-editor-button {\n transition: opacity 300ms;\n}\n.ios button.text-editor-button.active-state {\n opacity: 0.3;\n transition-duration: 0ms;\n}\n.md button.text-editor-button {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n}\n.md .text-editor-keyboard-toolbar .toolbar-inner {\n padding-left: 8px;\n padding-right: 8px;\n}\n.pie-chart {\n position: relative;\n}\n.pie-chart svg {\n display: block;\n width: 100%;\n font-size: 0;\n height: auto;\n margin: 0 auto;\n}\n.pie-chart path {\n transition-duration: 150ms;\n}\n.pie-chart-hidden {\n opacity: 0.4;\n}\n.pie-chart-tooltip {\n pointer-events: none;\n text-align: left;\n font-size: 12px;\n line-height: 1.4;\n white-space: nowrap;\n width: auto;\n max-width: none;\n}\n.pie-chart-tooltip-label {\n display: flex;\n align-items: center;\n}\n.pie-chart-tooltip-color {\n display: inline-block;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n margin-right: 4px;\n}\n:root {\n --f7-area-chart-current-line-stroke-width: 2px;\n --f7-area-chart-current-line-stroke: rgba(0, 0, 0, 0.15);\n --f7-area-chart-axis-text-color: inherit;\n --f7-area-chart-axis-height: 1px;\n --f7-area-chart-axis-font-size: 10px;\n --f7-area-chart-axis-font-weight: 500;\n --f7-area-chart-tooltip-font-size: 12px;\n --f7-area-chart-tooltip-total-font-size: 16px;\n --f7-area-chart-tooltip-total-font-weight: bold;\n --f7-area-chart-tooltip-color-size: 10px;\n --f7-area-chart-legend-font-size: 14px;\n --f7-area-chart-legend-font-weight: 500;\n --f7-area-chart-legend-text-color: inherit;\n --f7-area-chart-legend-padding: 4px 8px;\n --f7-area-chart-legend-border-radius: 4px;\n --f7-area-chart-legend-color-size: 14px;\n --f7-area-chart-line-stroke-width: 2px;\n --f7-area-chart-axis-bg-color: rgba(0, 0, 0, 0.15);\n --f7-area-chart-legend-disabled-text-color: rgba(0, 0, 0, 0.22);\n}\n:root .dark,\n:root.dark {\n --f7-area-chart-axis-bg-color: rgba(255, 255, 255, 0.15);\n --f7-area-chart-legend-disabled-text-color: rgba(255, 255, 255, 0.22);\n}\n.ios {\n --f7-area-chart-tooltip-total-label-text-color: rgba(255, 255, 255, 0.75);\n}\n.md {\n --f7-area-chart-tooltip-total-label-text-color: inherit;\n}\n.area-chart {\n position: relative;\n}\n.area-chart svg {\n display: block;\n width: 100%;\n font-size: 0;\n height: auto;\n margin: 0 auto;\n}\n.area-chart path {\n fill: none;\n stroke-width: var(--f7-area-chart-line-stroke-width);\n}\n.area-chart-current-line {\n stroke: var(--f7-area-chart-current-line-stroke);\n stroke-width: var(--f7-area-chart-current-line-stroke-width);\n}\n.area-chart-axis {\n height: var(--f7-area-chart-axis-height);\n background: var(--f7-area-chart-axis-bg-color);\n color: var(--f7-area-chart-axis-text-color);\n display: flex;\n font-size: var(--f7-area-chart-axis-font-size);\n font-weight: var(--f7-area-chart-axis-font-weight);\n justify-content: space-between;\n line-height: 1;\n margin-bottom: 2em;\n}\n.area-chart-axis > span {\n padding-top: 10px;\n width: 0;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n white-space: nowrap;\n}\n.area-chart-axis > span:first-child {\n justify-content: flex-start;\n}\n.area-chart-axis > span:last-child {\n justify-content: flex-end;\n}\n.area-chart-tooltip {\n pointer-events: none;\n text-align: left;\n font-size: var(--f7-area-chart-tooltip-font-size);\n line-height: 1.4;\n}\n.area-chart-tooltip-label {\n color: var(--f7-area-chart-tooltip-total-label-text-color);\n}\n.area-chart-tooltip-total {\n font-size: var(--f7-area-chart-tooltip-total-font-size);\n font-weight: var(--f7-area-chart-tooltip-total-font-weight);\n}\n.area-chart-tooltip-list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n.area-chart-tooltip-list li {\n white-space: nowrap;\n}\n.area-chart-tooltip-list span {\n display: inline-block;\n width: var(--f7-area-chart-tooltip-color-size);\n height: var(--f7-area-chart-tooltip-color-size);\n border-radius: 50%;\n margin-right: 4px;\n}\n.area-chart-axis ~ .area-chart-legend {\n margin-top: 2em;\n}\n.area-chart-legend {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n font-size: var(--f7-area-chart-legend-font-size);\n width: 100%;\n margin-top: 1em;\n}\n.area-chart-legend-button {\n -webkit-appearance: none !important;\n appearance: none !important;\n background-color: transparent;\n border-radius: 0;\n border: none;\n outline: 0 !important;\n cursor: pointer;\n font-family: inherit;\n font-size: inherit;\n box-shadow: none !important;\n}\n.area-chart-legend-item {\n position: relative;\n color: var(--f7-area-chart-legend-text-color);\n width: auto;\n display: flex;\n align-items: center;\n font-weight: var(--f7-area-chart-legend-font-weight);\n transition-duration: 200ms;\n padding: var(--f7-area-chart-legend-padding);\n border-radius: var(--f7-area-chart-legend-border-radius);\n overflow: hidden;\n}\n.area-chart-legend-item span {\n width: var(--f7-area-chart-legend-color-size);\n height: var(--f7-area-chart-legend-color-size);\n margin-right: 4px;\n border-radius: 50%;\n transition-duration: 200ms;\n}\n.area-chart-legend-item-hidden {\n color: var(--f7-area-chart-legend-disabled-text-color);\n}\n.area-chart-legend-item-hidden span {\n background-color: var(--f7-area-chart-legend-disabled-text-color) !important;\n}\n/* === Breadcrumbs === */\n:root {\n --f7-breadcrumbs-spacing: 12px;\n --f7-breadcrumbs-padding: 2px 0;\n --f7-breadcrumbs-icon-size: 24px;\n --f7-breadcrumbs-separator-color: rgba(0, 0, 0, 0.35);\n}\n:root .dark,\n:root.dark {\n --f7-breadcrumbs-separator-color: rgba(255, 255, 255, 0.35);\n}\n.ios {\n --f7-breadcrumbs-item-bg-color: transparent;\n --f7-breadcrumbs-collapsed-border-radius: 4px;\n --f7-breadcrumbs-collapsed-padding: 0px 6px;\n --f7-breadcrumbs-separator-icon: 'chevron_right_ios';\n --f7-breadcrumbs-font-size: 17px;\n --f7-breadcrumbs-item-border-radius: 0px;\n --f7-breadcrumbs-item-padding: 0px;\n --f7-breadcrumbs-item-font-weight: normal;\n --f7-breadcrumbs-item-active-font-weight: 600;\n --f7-breadcrumbs-item-color: rgba(0, 0, 0, 0.55);\n --f7-breadcrumbs-item-active-color: #000;\n --f7-breadcrumbs-collapsed-bg-color: rgba(0, 0, 0, 0.15);\n --f7-breadcrumbs-collapsed-color: rgba(0, 0, 0, 0.75);\n}\n.ios .dark,\n.ios.dark {\n --f7-breadcrumbs-item-color: rgba(255, 255, 255, 0.75);\n --f7-breadcrumbs-item-active-color: #fff;\n --f7-breadcrumbs-collapsed-bg-color: rgba(255, 255, 255, 0.15);\n --f7-breadcrumbs-collapsed-color: rgba(255, 255, 255, 0.75);\n}\n.md {\n --f7-breadcrumbs-collapsed-border-radius: 8px;\n --f7-breadcrumbs-collapsed-padding: 12px 8px;\n --f7-breadcrumbs-separator-icon: 'chevron_right_md';\n --f7-breadcrumbs-font-size: 14px;\n --f7-breadcrumbs-item-border-radius: 8px;\n --f7-breadcrumbs-item-padding: 4px 8px;\n --f7-breadcrumbs-item-font-weight: 500;\n --f7-breadcrumbs-item-active-font-weight: 500;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-breadcrumbs-item-color: var(--f7-theme-color);\n --f7-breadcrumbs-item-bg-color: var(--f7-md-secondary-container);\n --f7-breadcrumbs-item-active-color: var(--f7-md-on-secondary-container);\n --f7-breadcrumbs-collapsed-color: var(--f7-theme-color);\n --f7-breadcrumbs-collapsed-bg-color: var(--f7-md-secondary-container);\n}\n.breadcrumbs {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n font-size: var(--f7-breadcrumbs-font-size);\n overflow: auto;\n white-space: nowrap;\n padding: var(--f7-breadcrumbs-padding);\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.breadcrumbs::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.breadcrumbs::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.breadcrumbs::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.breadcrumbs-separator,\n.breadcrumbs-item,\n.breadcrumbs-collapsed {\n flex-shrink: 0;\n --f7-touch-ripple-color: transparent !important;\n}\n.breadcrumbs-separator + .breadcrumbs-separator,\n.breadcrumbs-separator + .breadcrumbs-item,\n.breadcrumbs-separator + .breadcrumbs-collapsed,\n.breadcrumbs-item + .breadcrumbs-separator,\n.breadcrumbs-item + .breadcrumbs-item,\n.breadcrumbs-item + .breadcrumbs-collapsed,\n.breadcrumbs-collapsed + .breadcrumbs-separator,\n.breadcrumbs-collapsed + .breadcrumbs-item,\n.breadcrumbs-collapsed + .breadcrumbs-collapsed {\n margin-left: var(--f7-breadcrumbs-spacing);\n}\n.breadcrumbs-item {\n color: var(--f7-breadcrumbs-item-color);\n font-weight: var(--f7-breadcrumbs-item-font-weight);\n padding: var(--f7-breadcrumbs-item-padding);\n background-color: var(--f7-breadcrumbs-item-bg-color);\n display: flex;\n align-items: center;\n border-radius: var(--f7-breadcrumbs-item-border-radius);\n}\n.breadcrumbs-item .icon {\n font-size: var(--f7-breadcrumbs-icon-size);\n width: var(--f7-breadcrumbs-icon-size);\n height: var(--f7-breadcrumbs-icon-size);\n}\n.breadcrumbs-item a {\n color: inherit;\n --f7-touch-ripple-color: transparent !important;\n}\n.breadcrumbs-item-active {\n color: var(--f7-breadcrumbs-item-active-color, var(--f7-breadcrumbs-item-color));\n font-weight: var(--f7-breadcrumbs-item-active-font-weight);\n}\n.breadcrumbs-separator {\n color: var(--f7-breadcrumbs-separator-color);\n height: 24px;\n overflow: hidden;\n display: flex;\n align-items: center;\n}\n.breadcrumbs-separator::after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n content: var(--f7-breadcrumbs-separator-icon);\n width: 12px;\n}\n.ios .breadcrumbs-separator::after {\n font-size: 12px;\n height: 11px;\n}\n.md .breadcrumbs-separator::after {\n font-size: 18px;\n height: 18px;\n}\n.breadcrumbs-collapsed {\n display: flex;\n align-items: center;\n padding: var(--f7-breadcrumbs-collapsed-padding);\n background: var(--f7-breadcrumbs-collapsed-bg-color);\n min-height: 1em;\n border-radius: var(--f7-breadcrumbs-collapsed-border-radius);\n cursor: pointer;\n}\n.breadcrumbs-collapsed::before,\n.breadcrumbs-collapsed::after,\n.breadcrumbs-collapsed span {\n content: '';\n width: 4px;\n height: 4px;\n background: var(--f7-breadcrumbs-collapsed-color);\n border-radius: 50%;\n}\n.breadcrumbs-collapsed span {\n margin: 0 3px;\n}\n/* === Typography === */\n:root {\n --f7-typography-padding: 16px;\n --f7-typography-margin: 16px;\n}\n.display-flex {\n display: flex !important;\n}\n.display-block {\n display: block !important;\n}\n.display-inline-flex {\n display: inline-flex !important;\n}\n.display-inline-block {\n display: inline-block !important;\n}\n.display-inline {\n display: inline !important;\n}\n.display-none {\n display: none !important;\n}\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n.flex-shrink-2 {\n flex-shrink: 2 !important;\n}\n.flex-shrink-3 {\n flex-shrink: 3 !important;\n}\n.flex-shrink-4 {\n flex-shrink: 4 !important;\n}\n.flex-shrink-5 {\n flex-shrink: 5 !important;\n}\n.flex-shrink-6 {\n flex-shrink: 6 !important;\n}\n.flex-shrink-7 {\n flex-shrink: 7 !important;\n}\n.flex-shrink-8 {\n flex-shrink: 8 !important;\n}\n.flex-shrink-9 {\n flex-shrink: 9 !important;\n}\n.flex-shrink-10 {\n flex-shrink: 10 !important;\n}\n.flex-direction-row {\n flex-direction: row !important;\n}\n.flex-direction-row-reverse {\n flex-direction: row-reverse !important;\n}\n.flex-direction-column {\n flex-direction: column !important;\n}\n.flex-direction-column-reverse {\n flex-direction: column-reverse !important;\n}\n.justify-content-flex-start {\n justify-content: flex-start !important;\n}\n.justify-content-center {\n justify-content: center !important;\n}\n.justify-content-flex-end {\n justify-content: flex-end !important;\n}\n.justify-content-space-between {\n justify-content: space-between !important;\n}\n.justify-content-space-around {\n justify-content: space-around !important;\n}\n.justify-content-space-evenly {\n justify-content: space-evenly !important;\n}\n.justify-content-stretch {\n justify-content: stretch !important;\n}\n.justify-content-start {\n justify-content: start !important;\n}\n.justify-content-end {\n justify-content: end !important;\n}\n.justify-content-left {\n justify-content: left !important;\n}\n.justify-content-right {\n justify-content: right !important;\n}\n.align-content-flex-start {\n align-content: flex-start !important;\n}\n.align-content-flex-end {\n align-content: flex-end !important;\n}\n.align-content-center {\n align-content: center !important;\n}\n.align-content-space-between {\n align-content: space-between !important;\n}\n.align-content-space-around {\n align-content: space-around !important;\n}\n.align-content-stretch {\n align-content: stretch !important;\n}\n.align-items-baseline {\n align-items: baseline !important;\n}\n.align-items-flex-start {\n align-items: flex-start !important;\n}\n.align-items-flex-end {\n align-items: flex-end !important;\n}\n.align-items-center {\n align-items: center !important;\n}\n.align-items-stretch {\n align-items: stretch !important;\n}\n.align-self-flex-start {\n align-self: flex-start !important;\n}\n.align-self-flex-end {\n align-self: flex-end !important;\n}\n.align-self-center {\n align-self: center !important;\n}\n.align-self-stretch {\n align-self: stretch !important;\n}\n.text-align-left {\n text-align: left !important;\n}\n.text-align-center {\n text-align: center !important;\n}\n.text-align-right {\n text-align: right !important;\n}\n.text-align-justify {\n text-align: justify !important;\n}\n.float-left {\n float: left !important;\n}\n.float-right {\n float: right !important;\n}\n.float-none {\n float: none !important;\n}\n.vertical-align-bottom {\n vertical-align: bottom !important;\n}\n.vertical-align-middle {\n vertical-align: middle !important;\n}\n.vertical-align-top {\n vertical-align: top !important;\n}\n.no-padding {\n padding: 0 !important;\n}\n.no-padding-left {\n padding-left: 0 !important;\n}\n.no-padding-right {\n padding-right: 0 !important;\n}\n.no-padding-horizontal {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n.no-padding-top {\n padding-top: 0 !important;\n}\n.no-padding-bottom {\n padding-bottom: 0 !important;\n}\n.no-padding-vertical {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n.no-margin {\n margin: 0 !important;\n}\n.no-margin-left {\n margin-left: 0 !important;\n}\n.no-margin-right {\n margin-right: 0 !important;\n}\n.no-margin-horizontal {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n.no-margin-top {\n margin-top: 0 !important;\n}\n.no-margin-bottom {\n margin-bottom: 0 !important;\n}\n.no-margin-vertical {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n.width-auto {\n width: auto !important;\n}\n.width-100 {\n width: 100% !important;\n}\n.padding {\n padding: var(--f7-typography-padding) !important;\n}\n.padding-half {\n padding: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-top {\n padding-top: var(--f7-typography-padding) !important;\n}\n.padding-top-half {\n padding-top: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-bottom {\n padding-bottom: var(--f7-typography-padding) !important;\n}\n.padding-bottom-half {\n padding-bottom: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-left {\n padding-left: var(--f7-typography-padding) !important;\n}\n.padding-left-half {\n padding-left: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-right {\n padding-right: var(--f7-typography-padding) !important;\n}\n.padding-right-half {\n padding-right: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-vertical {\n padding-top: var(--f7-typography-padding) !important;\n padding-bottom: var(--f7-typography-padding) !important;\n}\n.padding-vertical-half {\n padding-top: calc(var(--f7-typography-padding) / 2) !important;\n padding-bottom: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-horizontal {\n padding-left: var(--f7-typography-padding) !important;\n padding-right: var(--f7-typography-padding) !important;\n}\n.padding-horizontal-half {\n padding-left: calc(var(--f7-typography-padding) / 2) !important;\n padding-right: calc(var(--f7-typography-padding) / 2) !important;\n}\n.margin {\n margin: var(--f7-typography-margin) !important;\n}\n.margin-half {\n margin: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-top {\n margin-top: var(--f7-typography-margin) !important;\n}\n.margin-top-half {\n margin-top: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-bottom {\n margin-bottom: var(--f7-typography-margin) !important;\n}\n.margin-bottom-half {\n margin-bottom: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-left {\n margin-left: var(--f7-typography-margin) !important;\n}\n.margin-left-half {\n margin-left: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-right {\n margin-right: var(--f7-typography-margin) !important;\n}\n.margin-right-half {\n margin-right: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-vertical {\n margin-top: var(--f7-typography-margin) !important;\n margin-bottom: var(--f7-typography-margin) !important;\n}\n.margin-vertical-half {\n margin-top: calc(var(--f7-typography-margin) / 2) !important;\n margin-bottom: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-horizontal {\n margin-left: var(--f7-typography-margin) !important;\n margin-right: var(--f7-typography-margin) !important;\n}\n.margin-horizontal-half {\n margin-left: calc(var(--f7-typography-margin) / 2) !important;\n margin-right: calc(var(--f7-typography-margin) / 2) !important;\n}\n[class*='text-color-'] {\n color: var(--f7-theme-color-text-color) !important;\n}\n[class*='bg-color-'] {\n background-color: var(--f7-theme-color-bg-color) !important;\n}\n[class*='border-color-'] {\n border-color: var(--f7-theme-color-border-color) !important;\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/apps/spreadsheeteditor/mobile/css/framework7.css b/apps/spreadsheeteditor/mobile/css/framework7.css new file mode 100644 index 0000000000..e5e7aec0e0 --- /dev/null +++ b/apps/spreadsheeteditor/mobile/css/framework7.css @@ -0,0 +1,3 @@ +:root{--f7-safe-area-left:0px;--f7-safe-area-right:0px;--f7-safe-area-top:0px;--f7-safe-area-bottom:0px;--f7-safe-area-outer-left:0px;--f7-safe-area-outer-right:0px;--f7-device-pixel-ratio:1}@supports (left:env(safe-area-inset-left)){:root{--f7-safe-area-top:env(safe-area-inset-top);--f7-safe-area-bottom:env(safe-area-inset-bottom)}:root .ios-edges,:root .ios-left-edge,:root .panel-left,:root .popup,:root .safe-area-left,:root .safe-areas,:root .sheet-modal{--f7-safe-area-left:env(safe-area-inset-left);--f7-safe-area-outer-left:env(safe-area-inset-left)}:root .ios-edges,:root .ios-right-edge,:root .panel-right,:root .popup,:root .safe-area-right,:root .safe-areas,:root .sheet-modal{--f7-safe-area-right:env(safe-area-inset-right);--f7-safe-area-outer-right:env(safe-area-inset-right)}:root .no-ios-edges,:root .no-ios-left-edge,:root .no-safe-area-left,:root .no-safe-areas{--f7-safe-area-left:0px;--f7-safe-area-outer-left:0px}:root .no-ios-edges,:root .no-ios-right-edge,:root .no-safe-area-right,:root .no-safe-areas{--f7-safe-area-right:0px;--f7-safe-area-outer-right:0px}}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){:root{--f7-device-pixel-ratio:2}}@media (-webkit-min-device-pixel-ratio:3),(min-resolution:3dppx){:root{--f7-device-pixel-ratio:3}}:root{--f7-font-size:14px;--f7-bars-translucent-opacity:0.8;--f7-bars-translucent-blur:20px}.ios{--f7-font-family:-apple-system,SF Pro Text,SF UI Text,system-ui,Helvetica Neue,Helvetica,Arial,sans-serif;--f7-line-height:1.4;--f7-bars-text-color:#000;--f7-text-color:#000;--f7-bars-bg-color:#f7f7f8;--f7-bars-bg-color-rgb:247,247,248;--f7-bars-border-color:rgba(0,0,0,0.25)}.ios .dark,.ios.dark{--f7-bars-text-color:#fff;--f7-text-color:#fff;--f7-bars-bg-color:#121212;--f7-bars-bg-color-rgb:22,22,22;--f7-bars-border-color:rgba(255,255,255,0.16)}.md{--f7-font-family:Roboto,system-ui,Noto,Helvetica,Arial,sans-serif;--f7-line-height:1.5;--f7-bars-border-color:transparent;--f7-text-color:#212121}.md .dark,.md.dark{--f7-text-color:rgba(255,255,255,0.87)}.md,.md .dark,.md [class*=color-]{--f7-bars-link-color:var(--f7-md-on-surface);--f7-bars-bg-color:var(--f7-md-surface-2);--f7-bars-bg-color-rgb:var(--f7-md-surface-2-rgb)}.text-color-primary{--f7-theme-color-text-color:var(--f7-theme-color)}.bg-color-primary{--f7-theme-color-bg-color:var(--f7-theme-color)}.border-color-primary{--f7-theme-color-border-color:var(--f7-theme-color)}.ripple-color-primary{--f7-theme-color-ripple-color:rgba(var(--f7-theme-color-rgb),0.3)}@font-face{font-family:framework7-core-icons;font-style:normal;font-weight:400;src:url("data:application/font-woff;charset=utf-8;base64, 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") format("woff")}html{overscroll-behavior:none}.framework7-root,body,html{height:100%;overflow-x:hidden;position:relative;width:100%}body{-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;background:#fff;color:var(--f7-text-color);font-family:var(--f7-font-family);font-size:var(--f7-font-size);line-height:var(--f7-line-height);margin:0;overflow:hidden;overflow-y:scroll;padding:0;scrollbar-color:transparent;scrollbar-width:none;width:100%}body::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}body::-webkit-scrollbar-track{background:transparent;box-shadow:none}body::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.dark body,body.dark{background:#000}.dark{color:var(--f7-text-color)}.framework7-root{box-sizing:border-box;overflow:hidden}.framework7-initializing *,.framework7-initializing :after,.framework7-initializing :before{transition-duration:0ms!important}.device-android,.device-ios{cursor:pointer}.device-ios{touch-action:manipulation}@media (width:1024px) and (height:691px) and (orientation:landscape){.framework7-root,body,html{height:671px}}@media (width:1024px) and (height:692px) and (orientation:landscape){.framework7-root,body,html{height:672px}}*{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:none}a,input,select,textarea{outline:0}a{color:var(--f7-theme-color);text-decoration:none}.item-link,.link,a{cursor:pointer}p{margin:1em 0}.disabled{opacity:.55!important;pointer-events:none!important}html.device-full-viewport,html.device-full-viewport body{height:100vh}.ios .if-md,.ios .if-not-ios,.ios .md-only,.ios .not-ios{display:none!important}@media (width:1024px) and (height:691px) and (orientation:landscape){.ios,.ios .framework7-root,.ios body{height:671px}}@media (width:1024px) and (height:692px) and (orientation:landscape){.ios,.ios .framework7-root,.ios body{height:672px}}.md .if-ios,.md .if-not-md,.md .ios-only,.md .not-md{display:none!important}.view,.views{box-sizing:border-box;height:100%;overflow:hidden;position:relative;z-index:5000}.framework7-root>.view,.framework7-root>.views{height:100%}.view-resize-handler{cursor:col-resize;display:none;height:100%;left:var(--f7-page-master-width);margin-left:-3px;position:absolute;top:0;width:6px;z-index:1000}.view-master-detail .view-resize-handler{display:block}:root{--f7-page-master-width:320px;--f7-page-master-border-color:rgba(0,0,0,0.1);--f7-page-master-border-width:1px;--f7-page-swipeback-transition-duration:300ms;--f7-page-parallax-transition-duration:500ms;--f7-page-cover-transition-duration:450ms;--f7-page-dive-transition-duration:500ms;--f7-page-fade-transition-duration:500ms;--f7-page-flip-transition-duration:700ms;--f7-page-push-transition-duration:500ms;--f7-page-title-line-height:1.2;--f7-page-title-text-color:inherit;--f7-page-title-padding-left:16px;--f7-page-title-padding-right:16px}.ios{--f7-page-transition-duration:400ms;--f7-page-title-font-size:34px;--f7-page-title-font-weight:700;--f7-page-title-letter-spacing:-0.03em;--f7-page-title-padding-vertical:6px;--f7-page-bg-color:#efeff4}.ios .dark,.ios.dark{--f7-page-bg-color:#000}.md{--f7-page-transition-duration:400ms;--f7-page-title-font-size:34px;--f7-page-title-font-weight:500;--f7-page-title-letter-spacing:0;--f7-page-title-padding-vertical:8px}.md,.md .dark,.md [class*=color-]{--f7-page-bg-color:var(--f7-md-surface)}.dark{--f7-page-master-border-color:rgba(255,255,255,0.2)}.pages{overflow:hidden;position:relative}.page,.pages{height:100%;width:100%}.page{background-color:var(--f7-page-bg-color);box-sizing:border-box;left:0;position:absolute;top:0;transform:none;z-index:1}.page-with-navbar-large-collapsed{--f7-navbar-large-collapse-progress:1}.page-previous{pointer-events:none}.page-content{-webkit-overflow-scrolling:touch;box-sizing:border-box;height:100%;overflow:auto;padding-bottom:calc(var(--f7-page-toolbar-bottom-offset, 0px) + var(--f7-safe-area-bottom) + var(--f7-page-content-extra-padding-bottom, 0px));padding-top:calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-toolbar-top-offset, 0px) + var(--f7-page-subnavbar-offset, 0px) + var(--f7-page-searchbar-offset, 0px) + var(--f7-page-content-extra-padding-top, 0px));position:relative;z-index:1}.page-transitioning,.page-transitioning .page-opacity-effect,.page-transitioning .page-shadow-effect{transition-duration:var(--f7-page-transition-duration)}.page-transitioning-swipeback,.page-transitioning-swipeback .page-opacity-effect,.page-transitioning-swipeback .page-shadow-effect{transition-duration:var(--f7-page-swipeback-transition-duration)}.router-transition-backward .page-current,.router-transition-backward .page-next,.router-transition-forward .page-current,.router-transition-forward .page-next{pointer-events:none}.page-shadow-effect{background:linear-gradient(90deg,rgba(0,0,0,0) 0,rgba(0,0,0,0) 10%,rgba(0,0,0,.01) 50%,rgba(0,0,0,.2));right:100%;width:16px;z-index:-1}.page-opacity-effect,.page-shadow-effect{bottom:0;content:"";opacity:0;position:absolute;top:0}.page-opacity-effect{background:rgba(0,0,0,.1);left:0;width:100%;z-index:10000}.ios .page-previous{transform:translate3d(-20%,0,0)}.ios .page-next{transform:translate3d(100%,0,0)}.ios .page-current .page-shadow-effect,.ios .page-previous .page-opacity-effect,.ios .page-previous:after{opacity:1}.ios .router-transition-forward .page-next{animation:ios-page-next-to-current var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .page-next:before{animation:ios-page-element-fade-in var(--f7-page-transition-duration) forwards;background:linear-gradient(90deg,rgba(0,0,0,0) 0,rgba(0,0,0,0) 10%,rgba(0,0,0,.01) 50%,rgba(0,0,0,.2));bottom:0;content:"";opacity:0;position:absolute;right:100%;top:0;width:16px;z-index:-1}.ios .router-transition-forward .page-current{animation:ios-page-current-to-previous var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .page-current:after{animation:ios-page-element-fade-in var(--f7-page-transition-duration) forwards;background:rgba(0,0,0,.1);bottom:0;content:"";left:0;opacity:0;position:absolute;top:0;width:100%;z-index:10000}.ios .router-transition-backward .page-previous{animation:ios-page-previous-to-current var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .page-previous:after{animation:ios-page-element-fade-out var(--f7-page-transition-duration) forwards;background:rgba(0,0,0,.1);bottom:0;content:"";left:0;opacity:0;position:absolute;top:0;width:100%;z-index:10000}.ios .router-transition-backward .page-current{animation:ios-page-current-to-next var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .page-current:before{animation:ios-page-element-fade-out var(--f7-page-transition-duration) forwards;background:linear-gradient(90deg,rgba(0,0,0,0) 0,rgba(0,0,0,0) 10%,rgba(0,0,0,.01) 50%,rgba(0,0,0,.2));bottom:0;content:"";opacity:0;position:absolute;right:100%;top:0;width:16px;z-index:-1}@keyframes ios-page-next-to-current{0%{transform:translate3d(100%,0,0)}to{transform:translateZ(0)}}@keyframes ios-page-previous-to-current{0%{transform:translate3d(-20%,0,0)}to{transform:translateZ(0)}}@keyframes ios-page-current-to-previous{0%{transform:translateZ(0)}to{transform:translate3d(-20%,0,0)}}@keyframes ios-page-current-to-next{0%{transform:translateZ(0)}to{transform:translate3d(100%,0,0)}}@keyframes ios-page-element-fade-in{0%{opacity:0}to{opacity:1}}@keyframes ios-page-element-fade-out{0%{opacity:1}to{opacity:0}}.md .page-previous{transform:translate3d(0,-20px,0)}.md .page-next{opacity:0;pointer-events:none;transform:translate3d(0,128px,0)}.md .page-next.page-next-on-right{opacity:1;transform:translate3d(100%,0,0)}.md .router-transition-forward .page-next{animation:md-page-next-to-current var(--f7-page-transition-duration) forwards cubic-bezier(0,.8,.3,1);opacity:1}.md .router-transition-forward .page-current{animation:md-page-current-to-previous var(--f7-page-transition-duration) forwards cubic-bezier(0,.8,.3,1)}.md .router-transition-backward .page-current{animation:md-page-current-to-next calc(var(--f7-page-transition-duration)/4) forwards cubic-bezier(.8,0,1,.3),md-page-current-to-next-opacity 0ms calc(var(--f7-page-transition-duration)/4) forwards}.md .router-transition-backward .page-previous{animation:md-page-previous-to-current var(--f7-page-transition-duration) forwards}@keyframes md-page-next-to-current{0%{transform:translate3d(0,128px,0)}to{transform:translateZ(0)}}@keyframes md-page-current-to-next{0%{transform:translateZ(0)}to{transform:translate3d(0,128px,0)}}@keyframes md-page-current-to-next-opacity{0%{opacity:1}to{opacity:0}}@keyframes md-page-current-to-previous{0%{transform:translateZ(0)}to{transform:translate3d(0,-20px,0)}}@keyframes md-page-previous-to-current{0%{transform:translate3d(0,-20px,0)}to{transform:translateZ(0)}}.view:not(.view-master-detail) .navbar-master-stacked,.view:not(.view-master-detail) .page-master-stacked{display:none}.view-master-detail .navbar-master,.view-master-detail .page-master{--f7-safe-area-right:0px;--f7-safe-area-outer-right:0px;border-right:var(--f7-page-master-border-width) solid var(--f7-page-master-border-color);width:var(--f7-page-master-width)}.view-master-detail .navbar-master-detail,.view-master-detail .page-master-detail{--f7-safe-area-left:0px;--f7-safe-area-outer-left:0px;left:var(--f7-page-master-width);width:calc(100% - var(--f7-page-master-width))}.view-master-detail .page-master-detail>.navbar-master-detail{left:0;right:0;width:100%}.view-master-detail .page-master{pointer-events:auto;transform:none;z-index:2}.view-master-detail .page-master:after,.view-master-detail .page-master:before{display:none}.view-master-detail.router-transition .page-master{animation:none}.ios .router-transition-custom .page-next,.ios .router-transition-custom .page-previous,.md .router-transition-custom .page-next,.md .router-transition-custom .page-previous{opacity:1;transform:none}.ios .router-transition-custom.view-master-detail .page-master,.md .router-transition-custom.view-master-detail .page-master{animation:none}.page-title{box-sizing:border-box;color:var(--f7-page-title-text-color);font-size:var(--f7-page-title-font-size);font-weight:var(--f7-page-title-font-weight);letter-spacing:var(--f7-page-title-letter-spacing);line-height:var(--f7-page-title-line-height);overflow:hidden;padding:var(--f7-page-title-padding-vertical) calc(var(--f7-page-title-padding-right) + var(--f7-safe-area-right)) var(--f7-page-title-padding-vertical) calc(var(--f7-page-title-padding-left) + var(--f7-safe-area-left));position:relative;text-overflow:ellipsis;white-space:nowrap;width:100%;z-index:10}.router-transition-f7-circle-backward:after,.router-transition-f7-circle-forward:after{background:var(--f7-page-bg-color);content:"";height:100vmax;left:50%;margin-left:-50vmax;margin-top:-50vmax;position:absolute;top:50%;width:100vmax;z-index:100}.router-transition-f7-circle-backward .page,.router-transition-f7-circle-forward .page{pointer-events:none}.router-transition-f7-circle-forward:after{animation:f7-circle-circle-in .4s forwards;border-radius:50%;transform:scale(0)}.ios .router-transition-f7-circle-forward .page-next,.md .router-transition-f7-circle-forward .page-next{animation:f7-circle-next-to-current .3s forwards;animation-delay:.3s;opacity:0;transform:scale(.9);z-index:150}.router-transition-f7-circle-backward:after{animation:f7-circle-circle-out .3s forwards;animation-delay:.35s}.ios .router-transition-f7-circle-backward .page-current,.md .router-transition-f7-circle-backward .page-current{animation:f7-circle-current-to-next .7s forwards;z-index:150}@keyframes f7-circle-circle-in{0%{border-radius:50%;transform:scale(0)}50%{border-radius:50%}to{border-radius:0;transform:scale(1)}}@keyframes f7-circle-circle-out{0%{border-radius:0;transform:scale(1)}50%{border-radius:50%}to{border-radius:50%;transform:scale(0)}}@keyframes f7-circle-next-to-current{0%{opacity:0;transform:scale(.9)}40%{opacity:1;transform:scale(1.035)}to{opacity:1;transform:scale(1)}}@keyframes f7-circle-current-to-next{0%{opacity:1;transform:scale(1)}34%{opacity:1;transform:scale(1.035)}57%{opacity:0;transform:scale(.9)}to{opacity:0;transform:scale(.9)}}.router-transition-f7-cover-v-backward,.router-transition-f7-cover-v-forward{background:#000;perspective:1200px}.router-transition-f7-cover-v-backward .page,.router-transition-f7-cover-v-forward .page{pointer-events:none}.router-transition-f7-cover-v-forward .page-next{animation:f7-cover-v-next-to-current var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-v-forward .page-current{animation:f7-cover-v-current-to-prev var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-v-backward .page-current{animation:f7-cover-v-current-to-next var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-v-backward .page-previous{animation:f7-cover-v-prev-to-current var(--f7-page-cover-transition-duration) forwards}@keyframes f7-cover-v-next-to-current{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes f7-cover-v-current-to-next{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes f7-cover-v-current-to-prev{0%{opacity:1;transform:translateZ(0)}to{opacity:.5;transform:translateZ(-300px)}}@keyframes f7-cover-v-prev-to-current{0%{opacity:.5;transform:translateZ(-300px)}to{opacity:1;transform:translateZ(0)}}.router-transition-f7-cover-backward,.router-transition-f7-cover-forward{background:#000;perspective:1200px}.router-transition-f7-cover-backward .page,.router-transition-f7-cover-forward .page{pointer-events:none}.router-transition-f7-cover-forward .page-next{animation:f7-cover-next-to-current var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-forward .page-current{animation:f7-cover-current-to-prev var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-backward .page-current{animation:f7-cover-current-to-next var(--f7-page-cover-transition-duration) forwards}.router-transition-f7-cover-backward .page-previous{animation:f7-cover-prev-to-current var(--f7-page-cover-transition-duration) forwards}@keyframes f7-cover-next-to-current{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes f7-cover-current-to-next{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes f7-cover-current-to-prev{0%{opacity:1;transform:translateZ(0)}to{opacity:.5;transform:translateZ(-300px)}}@keyframes f7-cover-prev-to-current{0%{opacity:.5;transform:translateZ(-300px)}to{opacity:1;transform:translateZ(0)}}.router-transition-f7-dive-backward,.router-transition-f7-dive-forward{background:var(--f7-page-bg-color);perspective:1200px}.router-transition-f7-dive-backward .page,.router-transition-f7-dive-forward .page{pointer-events:none}.router-transition-f7-dive-forward .page-next{animation:f7-dive-next-to-current var(--f7-page-dive-transition-duration) forwards}.router-transition-f7-dive-forward .page-current{animation:f7-dive-current-to-prev var(--f7-page-dive-transition-duration) forwards}.router-transition-f7-dive-backward .page-current{animation:f7-dive-current-to-next var(--f7-page-dive-transition-duration) forwards}.router-transition-f7-dive-backward .page-previous{animation:f7-dive-prev-to-current var(--f7-page-dive-transition-duration) forwards}@keyframes f7-dive-next-to-current{0%{opacity:0;transform:translateZ(-150px)}50%{opacity:0}to{opacity:1;transform:translateZ(0)}}@keyframes f7-dive-current-to-next{0%{opacity:1;transform:translateZ(0)}50%{opacity:0}to{opacity:0;transform:translateZ(-150px)}}@keyframes f7-dive-current-to-prev{0%{opacity:1;transform:translateZ(0)}50%{opacity:0}to{opacity:0;transform:translateZ(150px)}}@keyframes f7-dive-prev-to-current{0%{opacity:0;transform:translateZ(150px)}50%{opacity:0}to{opacity:1;transform:translateZ(0)}}.router-transition-f7-fade-backward,.router-transition-f7-fade-forward{background:var(--f7-page-bg-color)}.router-transition-f7-fade-backward .page,.router-transition-f7-fade-forward .page{pointer-events:none}.ios .router-transition-f7-fade-forward .page-next,.md .router-transition-f7-fade-forward .page-next{animation:f7-fade-in var(--f7-page-fade-transition-duration) forwards;opacity:0}.ios .router-transition-f7-fade-backward .page-current,.ios .router-transition-f7-fade-forward .page-current,.md .router-transition-f7-fade-backward .page-current,.md .router-transition-f7-fade-forward .page-current{animation:f7-fade-out var(--f7-page-fade-transition-duration) forwards}.ios .router-transition-f7-fade-backward .page-previous,.md .router-transition-f7-fade-backward .page-previous{animation:f7-fade-in var(--f7-page-fade-transition-duration) forwards}@keyframes f7-fade-in{0%{opacity:0}50%{opacity:0}to{opacity:1}}@keyframes f7-fade-out{0%{opacity:1}50%{opacity:0}to{opacity:0}}.router-transition-f7-flip-backward,.router-transition-f7-flip-forward{background:#000;perspective:1200px}.router-transition-f7-flip-backward .page,.router-transition-f7-flip-forward .page{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;pointer-events:none}.router-transition-f7-flip-forward .page-next{animation:f7-flip-next-to-current var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}.router-transition-f7-flip-forward .page-current{animation:f7-flip-current-to-prev var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}.router-transition-f7-flip-backward .page-current{animation:f7-flip-current-to-next var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}.router-transition-f7-flip-backward .page-previous{animation:f7-flip-prev-to-current var(--f7-page-flip-transition-duration) forwards;transform-style:preserve-3d}@keyframes f7-flip-next-to-current{0%{border-radius:32px;transform:translateZ(-100vmax) rotateY(180deg)}to{border-radius:0;transform:translateZ(0) rotateY(0deg)}}@keyframes f7-flip-current-to-next{0%{border-radius:0;transform:translateZ(0) rotateY(0deg)}to{border-radius:32px;transform:translateZ(-100vmax) rotateY(180deg)}}@keyframes f7-flip-current-to-prev{0%{border-radius:0;transform:translateZ(0) rotateY(0deg)}to{border-radius:32px;transform:translateZ(-100vmax) rotateY(-180deg)}}@keyframes f7-flip-prev-to-current{0%{border-radius:32px;transform:translateZ(-100vmax) rotateY(-180deg)}to{border-radius:0;transform:translateZ(0) rotateY(0deg)}}.router-transition-f7-parallax-forward .page{pointer-events:none}.router-transition-f7-parallax-forward .page-next{animation:f7-parallax-next-to-current var(--f7-page-parallax-transition-duration) forwards}.router-transition-f7-parallax-forward .page-current{animation:f7-parallax-current-to-prev var(--f7-page-parallax-transition-duration) forwards}.router-transition-f7-parallax-backward .page{pointer-events:none}.router-transition-f7-parallax-backward .page-current{animation:f7-parallax-current-to-next var(--f7-page-parallax-transition-duration) forwards}.router-transition-f7-parallax-backward .page-previous{animation:f7-parallax-prev-to-current var(--f7-page-parallax-transition-duration) forwards}@keyframes f7-parallax-next-to-current{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes f7-parallax-current-to-next{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes f7-parallax-current-to-prev{0%{transform:translateX(0)}to{transform:translateX(-20%)}}@keyframes f7-parallax-prev-to-current{0%{transform:translateX(-20%)}to{transform:translateX(0)}}.router-transition-f7-push-forward .page{pointer-events:none}.router-transition-f7-push-forward .page-next{animation:f7-push-next-to-current var(--f7-page-push-transition-duration) forwards}.router-transition-f7-push-forward .page-current{animation:f7-push-current-to-prev var(--f7-page-push-transition-duration) forwards}.router-transition-f7-push-backward .page{pointer-events:none}.router-transition-f7-push-backward .page-current{animation:f7-push-current-to-next var(--f7-page-push-transition-duration) forwards}.router-transition-f7-push-backward .page-previous{animation:f7-push-prev-to-current var(--f7-page-push-transition-duration) forwards}@keyframes f7-push-next-to-current{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes f7-push-current-to-next{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes f7-push-current-to-prev{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes f7-push-prev-to-current{0%{transform:translateX(-100%)}to{transform:translateX(0)}}:root{--f7-link-highlight-black:rgba(0,0,0,0.1);--f7-link-highlight-white:rgba(255,255,255,0.15);--f7-link-highlight-color:rgba(var(--f7-theme-color-rgb),0.15)}.ios{--f7-link-pressed-opacity:0.3}.link,.tab-link{--f7-touch-ripple-color:var(--f7-link-touch-ripple-color,rgba(var(--f7-theme-color-rgb),0.25));align-content:center;align-items:center;box-sizing:border-box;display:inline-flex;justify-content:center;position:relative;z-index:1}.link i+i,.link i+span,.link span+i,.link span+span{margin-left:4px}.link[class*=color-]{color:var(--f7-theme-color)}.ios .link{transition:opacity .3s}.ios .link.active-state{opacity:var(--f7-link-pressed-opacity);transition-duration:0ms}:root{--f7-navbar-hide-show-transition-duration:400ms;--f7-navbar-title-line-height:1.2;--f7-navbar-subtitle-text-align:inherit;--f7-navbar-large-title-line-height:1.2;--f7-navbar-large-title-text-color:inherit;--f7-navbar-large-title-padding-left:16px;--f7-navbar-large-title-padding-right:16px}.ios{--f7-navbar-height:44px;--f7-navbar-font-size:17px;--f7-navbar-title-font-size:inherit;--f7-navbar-inner-padding-left:8px;--f7-navbar-inner-padding-right:8px;--f7-navbar-title-font-weight:600;--f7-navbar-title-margin-left:0;--f7-navbar-title-margin-right:0;--f7-navbar-title-text-align:center;--f7-navbar-subtitle-font-size:10px;--f7-navbar-subtitle-line-height:1;--f7-navbar-large-title-height:52px;--f7-navbar-large-title-font-size:34px;--f7-navbar-large-title-font-weight:700;--f7-navbar-large-title-letter-spacing:-0.03em;--f7-navbar-large-title-padding-vertical:6px;--f7-navbar-subtitle-text-color:rgba(0,0,0,0.55)}.ios .dark,.ios.dark{--f7-navbar-subtitle-text-color:rgba(255,255,255,0.55)}.md{--f7-navbar-height:64px;--f7-navbar-font-size:16px;--f7-navbar-title-font-size:22px;--f7-navbar-inner-padding-left:0px;--f7-navbar-inner-padding-right:0px;--f7-navbar-title-font-weight:400;--f7-navbar-title-margin-left:0px;--f7-navbar-title-margin-right:16px;--f7-navbar-title-text-align:left;--f7-navbar-subtitle-font-size:14px;--f7-navbar-subtitle-line-height:1.2;--f7-navbar-large-title-font-size:28px;--f7-navbar-large-title-height:88px;--f7-navbar-large-title-font-weight:400;--f7-navbar-large-title-letter-spacing:0;--f7-navbar-large-title-padding-vertical:8px;--f7-navbar-link-height:48px;--f7-navbar-link-line-height:48px}.md,.md .dark,.md [class*=color-]{--f7-navbar-link-color:var(--f7-md-on-surface);--f7-navbar-text-color:var(--f7-md-on-surface);--f7-navbar-subtitle-text-color:var(--f7-md-on-surface-variant)}.navbar,.navbars{left:0;top:0;width:100%;z-index:500}.navbars{position:absolute}.navbars .navbar{z-index:auto}.navbars .navbar-transitioning{z-index:500}.navbar{--f7-navbar-large-collapse-progress:0;-webkit-backface-visibility:hidden;backface-visibility:hidden;box-sizing:border-box;color:var(--f7-navbar-text-color,var(--f7-bars-text-color));font-size:var(--f7-navbar-font-size);height:calc(var(--f7-navbar-height) + var(--f7-safe-area-top));margin:0;position:relative}.navbar b{font-weight:500}.navbar a{color:var(--f7-navbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.navbar a.link{display:flex;height:var(--f7-navbar-link-height,var(--f7-navbar-height));justify-content:flex-start;line-height:var(--f7-navbar-link-line-height,var(--f7-navbar-height))}.navbar .left,.navbar .right,.navbar .title{position:relative;z-index:10}.navbar .title{display:inline-block;flex-shrink:10;font-size:var(--f7-navbar-title-font-size);font-weight:var(--f7-navbar-title-font-weight);line-height:var(--f7-navbar-title-line-height);margin-left:var(--f7-navbar-title-margin-left);margin-right:var(--f7-navbar-title-margin-left);overflow:hidden;position:relative;text-align:var(--f7-navbar-title-text-align);text-overflow:ellipsis;white-space:nowrap}.navbar .subtitle{color:var(--f7-navbar-subtitle-text-color);display:block;font-size:var(--f7-navbar-subtitle-font-size);font-weight:400;line-height:var(--f7-navbar-subtitle-line-height);text-align:var(--f7-navbar-subtitle-text-align)}.navbar .left,.navbar .right{align-items:center;display:flex;flex-shrink:0;justify-content:flex-start}.navbar .right:first-child{height:100%;position:absolute}.navbar .no-outline .navbar-bg:after,.navbar .no-outline .title-large:after,.navbar.no-outline .navbar-bg:after,.navbar.no-outline .title-large:after{display:none!important}.navbar-hidden .navbar .navbar-bg:before,.navbar.navbar-hidden .navbar-bg:before{opacity:0!important}.navbar-bg{background:var(--f7-navbar-bg-color);background-color:var(--f7-navbar-bg-color,var(--f7-bars-bg-color));height:100%;left:0;pointer-events:none;position:absolute;top:0;transition-property:transform;width:100%;z-index:0}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .navbar-bg{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-navbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.navbar-bg:after,.navbar-bg:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.navbar-bg:after{background-color:var(--f7-navbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15;z-index:1}.navbar-transitioning,.navbar-transitioning .left,.navbar-transitioning .navbar-bg,.navbar-transitioning .navbar-bg:before,.navbar-transitioning .right,.navbar-transitioning .subnavbar,.navbar-transitioning .title,.navbar-transitioning .title-large-text{transition-duration:var(--f7-navbar-hide-show-transition-duration)}.navbar-page-transitioning,.navbar-page-transitioning .navbar-bg,.navbar-page-transitioning .title-large-text{transition-duration:var(--f7-page-swipeback-transition-duration)!important}.navbar-hidden{transform:translate3d(0,calc(var(--f7-navbar-height)*-1),0)}.navbar-hidden .navbar-inner{pointer-events:none}.navbar-hidden .navbar-inner>.left,.navbar-hidden .navbar-inner>.right,.navbar-hidden .navbar-inner>.title{opacity:0!important}.navbar-hidden .subnavbar{pointer-events:auto}.navbar-hidden-statusbar{transform:translate3d(0,calc(var(--f7-navbar-height)*-1 - var(--f7-safe-area-top)),0)}.navbar-large-hidden .navbar-large{--f7-navbar-large-collapse-progress:1}.navbar-inner{align-items:center;bottom:0;box-sizing:border-box;display:flex;height:100%;left:0;padding:var(--f7-safe-area-top) calc(var(--f7-navbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-navbar-inner-padding-left) + var(--f7-safe-area-left));transform:translateZ(0);width:100%;z-index:10}.navbar-inner,.navbars>.navbar,.page>.navbar,.view>.navbar,.views>.navbar{position:absolute}.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(.with-searchbar-expandable-enabled) .navbar-bg,.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(.with-searchbar-expandable-enabled) .title{opacity:0}.navbar-large .navbar-bg{height:calc(100% + var(--f7-navbar-large-title-height));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.navbar-large-transparent .navbar-bg,.navbar-large.navbar-transparent .navbar-bg{opacity:var(--f7-navbar-large-collapse-progress)}.ios .router-navbar-transition-from-large .navbar-bg,.ios .router-navbar-transition-to-large .navbar-bg,.navbar-bg.ios-swipeback-navbar-bg-large,.navbar-large-transparent .navbar-bg.ios-swipeback-navbar-bg-large,.navbar-large.navbar-transparent .navbar-bg.ios-swipeback-navbar-bg-large{height:calc(100% + var(--f7-navbar-large-title-height));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.ios .navbar:not(.navbar-large) .navbar-bg{--f7-navbar-large-collapse-progress:1}.navbar-large .title{opacity:var(--f7-navbar-large-collapse-progress)}.navbar-large-collapsed{--f7-navbar-large-collapse-progress:1}.navbar-large-collapsed .title-large{pointer-events:none}.navbar .title-large{display:flex;height:var(--f7-navbar-large-title-height);left:0;position:absolute;right:0;top:100%;z-index:5}.navbar .title-large,.navbar .title-large-text{box-sizing:border-box;overflow:hidden;white-space:nowrap}.navbar .title-large-text{color:var(--f7-navbar-large-title-text-color);font-size:var(--f7-navbar-large-title-font-size);font-weight:var(--f7-navbar-large-title-font-weight);letter-spacing:var(--f7-navbar-large-title-letter-spacing);line-height:var(--f7-navbar-large-title-line-height);padding:var(--f7-navbar-large-title-padding-vertical) calc(var(--f7-navbar-large-title-padding-right) + var(--f7-safe-area-right)) var(--f7-navbar-large-title-padding-vertical) calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left));text-overflow:ellipsis;transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0);transform-origin:calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center;width:100%}.navbar-no-title-large-transition .title-large-text{transition-duration:0ms}.navbars~*,.navbar~*{--f7-page-navbar-offset:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbars~* .page-with-navbar-large,.navbars~.page-with-navbar-large,.navbar~* .page-with-navbar-large,.navbar~.page-with-navbar-large,.page-with-navbar-large .navbar~*{--f7-page-navbar-offset:calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top))}.page.no-navbar,.page.no-navbar .navbar~*{--f7-page-navbar-offset:var(--f7-safe-area-top)}.ios{--f7-navbarLeftTextOffset:calc(16px + var(--f7-navbar-inner-padding-left));--f7-navbarTitleLargeOffset:var(--f7-navbar-large-title-padding-left);--f7-navbar-large-bg-center-top:translateX(0) translateY(calc(var(--f7-navbar-large-title-height)*-1));--f7-navbar-large-bg-center-bottom:translateX(0) translateY(0);--f7-navbar-large-bg-left-top:translateX(-100%) translateY(calc(var(--f7-navbar-large-title-height)*-1));--f7-navbar-large-bg-left-bottom:translateX(-100%) translateY(0);--f7-navbar-large-bg-right-top:translateX(100%) translateY(calc(var(--f7-navbar-large-title-height)*-1));--f7-navbar-large-bg-right-bottom:translateX(100%) translateY(0)}.ios .navbar .title-large{align-items:flex-end}.ios .navbar a.icon-only{justify-content:center;margin:0;width:44px}.ios .navbar .left a+a,.ios .navbar .right a+a{margin-left:16px}.ios .navbar b{font-weight:600}.ios .navbar .left{margin-right:10px}.ios .navbar .right{margin-left:10px}.ios .navbar .right:first-child{right:calc(8px + var(--f7-safe-area-right))}.ios .navbar-inner{justify-content:space-between}.ios .navbar-inner-left-title{justify-content:flex-start}.ios .navbar-inner-left-title .right{margin-left:auto}.ios .navbar-inner-left-title .title{margin-right:10px;text-align:left}.ios .navbar-next .fading,.ios .navbar-next .left,.ios .navbar-next .right,.ios .navbar-next .subnavbar,.ios .navbar-next .title,.ios .view-master-detail .navbar-previous:not(.navbar-master) .fading,.ios .view-master-detail .navbar-previous:not(.navbar-master) .left,.ios .view-master-detail .navbar-previous:not(.navbar-master) .right,.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar,.ios .view-master-detail .navbar-previous:not(.navbar-master) .title,.ios .view:not(.view-master-detail) .navbar-previous .fading,.ios .view:not(.view-master-detail) .navbar-previous .left,.ios .view:not(.view-master-detail) .navbar-previous .right,.ios .view:not(.view-master-detail) .navbar-previous .subnavbar,.ios .view:not(.view-master-detail) .navbar-previous .title{opacity:0}.ios .view-master-detail .navbar-previous:not(.navbar-master),.ios .view:not(.view-master-detail) .navbar-previous{pointer-events:none}.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large,.ios .view:not(.view-master-detail) .navbar-previous .title-large{opacity:0;transition-duration:0ms}.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large .title-large-text,.ios .view:not(.view-master-detail) .navbar-previous .title-large .title-large-text{transform:scale(.5);transition-duration:0ms}.ios .view-master-detail .navbar-previous:not(.navbar-master) .sliding .subnavbar,.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar.sliding,.ios .view:not(.view-master-detail) .navbar-previous .sliding .subnavbar,.ios .view:not(.view-master-detail) .navbar-previous .subnavbar.sliding{opacity:1;transform:translate3d(-100%,0,0)}.ios .view-master-detail .navbar-previous:not(.navbar-master) .navbar-bg,.ios .view:not(.view-master-detail) .navbar-previous .navbar-bg{transform:translateX(-100%)}.ios .navbar-next{pointer-events:none}.ios .navbar-next .navbar-bg{transform:translateX(100%)}.ios .navbar-next .title-large .title-large-text{transform:translateX(100%) translateY(calc(var(--f7-navbar-large-title-height)*-1));transition-duration:0ms}.ios .navbar-next .sliding .subnavbar,.ios .navbar-next .subnavbar.sliding{opacity:1;transform:translate3d(100%,0,0)}.ios .router-transition .navbar,.ios .router-transition .navbar-bg{transition-duration:var(--f7-page-transition-duration)}.ios .router-transition .navbar-bg{animation-duration:var(--f7-page-transition-duration);animation-fill-mode:forwards}.ios .router-transition .title-large,.ios .router-transition .title-large-text{transition-duration:0ms}.ios .router-transition .navbar-current .left,.ios .router-transition .navbar-current .right,.ios .router-transition .navbar-current .subnavbar,.ios .router-transition .navbar-current .title{animation:ios-navbar-element-fade-out var(--f7-page-transition-duration) forwards}.ios .router-transition .navbar-current .sliding .left,.ios .router-transition .navbar-current .sliding .left .icon+span,.ios .router-transition .navbar-current .sliding .right,.ios .router-transition .navbar-current .sliding .title,.ios .router-transition .navbar-current .sliding.left,.ios .router-transition .navbar-current .sliding.left .icon+span,.ios .router-transition .navbar-current .sliding.right,.ios .router-transition .navbar-current .sliding.title{animation:none;opacity:0!important;transition-duration:var(--f7-page-transition-duration)}.ios .router-transition .navbar-current .sliding .subnavbar,.ios .router-transition .navbar-current .sliding.subnavbar{animation:none;opacity:1;transition-duration:var(--f7-page-transition-duration)}.ios .router-transition-backward .navbar-previous .left,.ios .router-transition-backward .navbar-previous .right,.ios .router-transition-backward .navbar-previous .subnavbar,.ios .router-transition-backward .navbar-previous .title,.ios .router-transition-forward .navbar-next .left,.ios .router-transition-forward .navbar-next .right,.ios .router-transition-forward .navbar-next .subnavbar,.ios .router-transition-forward .navbar-next .title{animation:ios-navbar-element-fade-in var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .navbar-previous .sliding .left,.ios .router-transition-backward .navbar-previous .sliding .left .icon+span,.ios .router-transition-backward .navbar-previous .sliding .right,.ios .router-transition-backward .navbar-previous .sliding .subnavbar,.ios .router-transition-backward .navbar-previous .sliding .title,.ios .router-transition-backward .navbar-previous .sliding.left,.ios .router-transition-backward .navbar-previous .sliding.left .icon+span,.ios .router-transition-backward .navbar-previous .sliding.right,.ios .router-transition-backward .navbar-previous .sliding.title,.ios .router-transition-forward .navbar-next .sliding .left,.ios .router-transition-forward .navbar-next .sliding .left .icon+span,.ios .router-transition-forward .navbar-next .sliding .right,.ios .router-transition-forward .navbar-next .sliding .subnavbar,.ios .router-transition-forward .navbar-next .sliding .title,.ios .router-transition-forward .navbar-next .sliding.left,.ios .router-transition-forward .navbar-next .sliding.left .icon+span,.ios .router-transition-forward .navbar-next .sliding.right,.ios .router-transition-forward .navbar-next .sliding.title{animation:none;opacity:1!important;transform:translateZ(0)!important;transition-duration:var(--f7-page-transition-duration)}.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title,.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title{animation:none}.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title,.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title,.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title,.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title{opacity:0!important}.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .left,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .right,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .subnavbar,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .title,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .left,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .right,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .subnavbar,.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .title{animation:none}.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large{overflow:visible}.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-up var(--f7-page-transition-duration) forwards,ios-navbar-large-title-text-fade-out var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large .left .back span{animation:ios-navbar-back-text-next-to-current var(--f7-page-transition-duration) forwards;transform-origin:left center;transition:none}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large{overflow:visible}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-forward .navbar-next.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-left var(--f7-page-transition-duration) forwards}.ios .router-transition-forward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title,.ios .router-transition-forward .navbar-next.navbar-large:not(.navbar-large-collapsed) .title{animation:none;opacity:0!important;transition-duration:0}.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large .left .back span{animation:ios-navbar-back-text-current-to-previous var(--f7-page-transition-duration) forwards;transform-origin:left center;transition:none}.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large{overflow:visible}.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-right var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large{opacity:0}.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large{opacity:1;overflow:visible}.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text{animation:ios-navbar-large-title-text-slide-down var(--f7-page-transition-duration) forwards,ios-navbar-large-title-text-fade-in var(--f7-page-transition-duration) forwards}.ios .router-transition-backward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title,.ios .router-transition-backward .navbar-previous.navbar-large:not(.navbar-large-collapsed) .title{animation:none;opacity:0!important;transition-duration:0}.ios .router-transition-forward .navbar-current .navbar-bg,.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-lb}.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-lt}.ios .router-transition-forward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-lb}.ios .router-transition-forward .navbar-current.navbar-large-collapsed:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-lt}.ios .router-transition-forward .navbar-next .navbar-bg,.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-rb-to-cb}.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-rb-to-ct}.ios .router-transition-forward .navbar-next:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-rt-to-cb}.ios .router-transition-backward .navbar-current .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-rb}.ios .router-transition-backward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-rb}.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-cb-to-rt}.ios .router-transition-backward .navbar-current.navbar-large-collapsed .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-rt}.ios .router-transition-backward .navbar-current.navbar-large-collapsed.router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-ct-to-rb}.ios .router-transition-backward .navbar-previous .navbar-bg{animation-name:ios-navbar-bg-from-lb-to-cb}.ios .router-transition-backward .navbar-previous:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg{animation-name:ios-navbar-bg-from-lt-to-cb}.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg{animation-name:ios-navbar-bg-from-lb-to-ct}.ios .router-transition-backward .navbar-previous.navbar-large-collapsed .navbar-bg{animation-name:ios-navbar-bg-from-lt-to-ct}.view-master-detail .navbars{z-index:auto}.view-master-detail .page-master{z-index:525}.view-master-detail .navbar-master .navbar-bg,.view-master-detail .navbar-master .navbar-inner{z-index:550}.view-master-detail .navbar-master-detail .navbar-bg,.view-master-detail .navbar-master-detail .navbar-inner{z-index:500}.view-master-detail .navbar-master.navbar-previous{pointer-events:auto}.view-master-detail .navbar-master.navbar-previous .left,.view-master-detail .navbar-master.navbar-previous .right,.view-master-detail .navbar-master.navbar-previous .subnavbar,.view-master-detail .navbar-master.navbar-previous:not(.navbar-large) .title{opacity:1}.view-master-detail.router-transition .navbar-master .fading,.view-master-detail.router-transition .navbar-master .left,.view-master-detail.router-transition .navbar-master .left .icon+span,.view-master-detail.router-transition .navbar-master .right,.view-master-detail.router-transition .navbar-master .subnavbar,.view-master-detail.router-transition .navbar-master:not(.navbar-large) .title{animation:none!important;opacity:1!important;transform:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master .navbar-bg{animation:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master.navbar-large .title{animation:none!important;opacity:calc(-1 + var(--f7-navbar-large-collapse-progress)*2)!important;transform:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master.navbar-large .title-large,.view-master-detail.router-transition .navbar-master.navbar-large .title-large-text{animation:none!important;transition-duration:0ms}.view-master-detail.router-transition .navbar-master.navbar-large-transparent .navbar-bg,.view-master-detail.router-transition .navbar-master.navbar-large.navbar-transparent .navbar-bg{height:100%!important;opacity:var(--f7-navbar-large-collapse-progress)!important}@keyframes ios-navbar-element-fade-in{0%{opacity:0}25%{opacity:0}to{opacity:1}}@keyframes ios-navbar-element-fade-out{0%{opacity:1}75%{opacity:0}to{opacity:0}}@keyframes ios-navbar-large-title-text-slide-up{0%{transform:translateX(0) translateY(0) scale(1)}to{transform:translateX(calc(var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset))) translateY(calc(var(--f7-navbar-large-title-height)*-1 + var(--f7-navbar-large-title-padding-vertical))) scale(.5)}}@keyframes ios-navbar-large-title-text-slide-down{0%{transform:translateX(calc(var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset))) translateY(calc(var(--f7-navbar-large-title-height)*-1 + var(--f7-navbar-large-title-padding-vertical)/2)) scale(.5)}to{transform:translateX(0) translateY(0) scale(1)}}@keyframes ios-navbar-large-title-text-slide-left{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes ios-navbar-large-title-text-slide-right{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes ios-navbar-large-title-text-fade-out{0%{opacity:1}80%{opacity:0}to{opacity:0}}@keyframes ios-navbar-large-title-text-fade-in{0%{opacity:0}20%{opacity:0}to{opacity:1}}@keyframes ios-navbar-back-text-current-to-previous{0%{opacity:1;transform:translateY(0) translateX(0) scale(1)}80%{opacity:0}to{opacity:0;transform:translateX(calc(var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset))) translateY(calc(var(--f7-navbar-large-title-height)*1 - var(--f7-navbar-large-title-padding-vertical)/2)) scale(2)}}@keyframes ios-navbar-back-text-next-to-current{0%{opacity:0;transform:translateX(calc(var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset))) translateY(calc(var(--f7-navbar-large-title-height)*1 + var(--f7-navbar-large-title-padding-vertical)/2)) scale(2)}20%{opacity:0}to{opacity:1;transform:translateX(0) translateY(0) scale(1)}}@keyframes ios-navbar-bg-from-cb-to-lb{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-left-bottom)}}@keyframes ios-navbar-bg-from-cb-to-lt{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-left-top)}}@keyframes ios-navbar-bg-from-ct-to-lb{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-left-bottom)}}@keyframes ios-navbar-bg-from-ct-to-lt{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-left-top)}}@keyframes ios-navbar-bg-from-rb-to-cb{0%{transform:var(--f7-navbar-large-bg-right-bottom)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-rb-to-ct{0%{transform:var(--f7-navbar-large-bg-right-bottom)}to{transform:var(--f7-navbar-large-bg-center-top)}}@keyframes ios-navbar-bg-from-rt-to-cb{0%{transform:var(--f7-navbar-large-bg-right-top)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-cb-to-rb{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-right-bottom)}}@keyframes ios-navbar-bg-from-ct-to-rb{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-right-bottom)}}@keyframes ios-navbar-bg-from-cb-to-rt{0%{transform:var(--f7-navbar-large-bg-center-bottom)}to{transform:var(--f7-navbar-large-bg-right-top)}}@keyframes ios-navbar-bg-from-ct-to-rt{0%{transform:var(--f7-navbar-large-bg-center-top)}to{transform:var(--f7-navbar-large-bg-right-top)}}@keyframes ios-navbar-bg-from-lb-to-cb{0%{transform:var(--f7-navbar-large-bg-left-bottom)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-lt-to-cb{0%{transform:var(--f7-navbar-large-bg-left-top)}to{transform:var(--f7-navbar-large-bg-center-bottom)}}@keyframes ios-navbar-bg-from-lb-to-ct{0%{transform:var(--f7-navbar-large-bg-left-bottom)}to{transform:var(--f7-navbar-large-bg-center-top)}}@keyframes ios-navbar-bg-from-lt-to-ct{0%{transform:var(--f7-navbar-large-bg-left-top)}to{transform:var(--f7-navbar-large-bg-center-top)}}.md .navbar .title-large{align-items:center}.md .navbar .left{margin-left:4px;margin-right:4px}.md .navbar a.link{min-width:48px;padding:0 12px}.md .navbar a.icon-only{flex-shrink:0;min-width:0;width:48px}.md .navbar .right{margin-left:auto;margin-right:4px}.md .navbar .right:first-child{right:var(--f7-safe-area-right)}.md .navbar-inner{justify-content:flex-start;overflow:hidden}.md .navbar-large:not(.navbar-large-collapsed) .navbar-inner,.md .page.page-with-subnavbar .navbar-inner{overflow:visible}.md .navbar-inner:not(.navbar-inner-centered-title) .title:first-child{margin-left:16px}.md .navbar-inner-centered-title{justify-content:space-between}.md .navbar-inner-centered-title .right{margin-left:0}.md .navbar-inner-centered-title .title{text-align:center}:root{--f7-tabbar-link-active-bg-color:transparent;--f7-tabbar-label-text-transform:none;--f7-toolbar-hide-show-transition-duration:400ms}.ios{--f7-toolbar-height:44px;--f7-toolbar-font-size:17px;--f7-toolbar-inner-padding-left:8px;--f7-toolbar-inner-padding-right:8px;--f7-toolbar-link-font-weight:400;--f7-tabbar-icons-height:50px;--f7-tabbar-icons-tablet-height:50px;--f7-tabbar-icon-size:28px;--f7-tabbar-link-text-transform:none;--f7-tabbar-link-font-weight:400;--f7-tabbar-link-letter-spacing:0;--f7-tabbar-label-font-size:12px;--f7-tabbar-label-tablet-font-size:14px;--f7-tabbar-label-font-weight:500;--f7-tabbar-label-letter-spacing:0.01;--f7-tabbar-link-inactive-color:rgba(0,0,0,0.4)}.ios .dark,.ios.dark{--f7-tabbar-link-inactive-color:rgba(255,255,255,0.54)}.md{--f7-toolbar-height:56px;--f7-toolbar-font-size:14px;--f7-toolbar-inner-padding-left:0px;--f7-toolbar-inner-padding-right:0px;--f7-tabbar-icons-height:80px;--f7-tabbar-icons-tablet-height:80px;--f7-tabbar-icon-size:24px;--f7-tabbar-link-text-transform:none;--f7-tabbar-link-font-weight:500;--f7-tabbar-link-letter-spacing:0;--f7-toolbar-link-font-weight:500;--f7-tabbar-label-font-size:12px;--f7-tabbar-label-tablet-font-size:12px;--f7-tabbar-label-font-weight:500;--f7-tabbar-label-letter-spacing:0}.md,.md .dark,.md [class*=color-]{--f7-tabbar-link-active-color:var(--f7-md-on-secondary-container);--f7-tabbar-link-active-border-color:var(--f7-md-primary);--f7-tabbar-link-inactive-color:var(--f7-md-on-surface-variant);--f7-tabbar-link-active-icon-bg-color:var(--f7-md-secondary-container)}.toolbar{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-toolbar-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-toolbar-text-color,var(--f7-bars-text-color));font-size:var(--f7-toolbar-font-size);height:var(--f7-toolbar-height);left:0;margin:0;position:relative;transform:translateZ(0);width:100%;z-index:600}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .toolbar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-toolbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.toolbar b{font-weight:600}.toolbar a{box-sizing:border-box;color:var(--f7-toolbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)));flex-shrink:1;position:relative;text-overflow:ellipsis;white-space:nowrap}.toolbar .link{display:flex;font-weight:var(--f7-toolbar-link-font-weight);height:var(--f7-toolbar-link-height,var(--f7-toolbar-height));line-height:var(--f7-toolbar-link-line-height,var(--f7-toolbar-height))}.toolbar i.icon{display:block}.toolbar:after,.toolbar:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.page>.toolbar,.view>.toolbar,.views>.toolbar{position:absolute}.ios .toolbar-top-ios,.md .toolbar-top-md,.toolbar-top{top:0}.ios .toolbar-top-ios .tab-link-highlight,.md .toolbar-top-md .tab-link-highlight,.toolbar-top .tab-link-highlight{bottom:0}.ios .toolbar-top-ios.no-outline:after,.ios .toolbar-top-ios.toolbar-hidden:before,.md .toolbar-top-md.no-outline:after,.md .toolbar-top-md.toolbar-hidden:before,.toolbar-top.no-outline:after,.toolbar-top.toolbar-hidden:before{display:none!important}.ios .toolbar-top-ios:after,.ios .toolbar-top-ios:before,.md .toolbar-top-md:after,.md .toolbar-top-md:before,.toolbar-top:after,.toolbar-top:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.ios .toolbar-top-ios:after,.md .toolbar-top-md:after,.toolbar-top:after{background-color:var(--f7-toolbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .toolbar-bottom-ios,.md .toolbar-bottom-md,.toolbar-bottom{bottom:0;height:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.ios .toolbar-bottom-ios .tab-link-highlight,.md .toolbar-bottom-md .tab-link-highlight,.toolbar-bottom .tab-link-highlight{top:0}.ios .toolbar-bottom-ios .toolbar-inner,.md .toolbar-bottom-md .toolbar-inner,.toolbar-bottom .toolbar-inner{bottom:var(--f7-safe-area-bottom);height:auto;top:0}.ios .toolbar-bottom-ios.no-outline:before,.ios .toolbar-bottom-ios.toolbar-hidden:after,.md .toolbar-bottom-md.no-outline:before,.md .toolbar-bottom-md.toolbar-hidden:after,.toolbar-bottom.no-outline:before,.toolbar-bottom.toolbar-hidden:after{display:none!important}.ios .toolbar-bottom-ios:before,.md .toolbar-bottom-md:before,.toolbar-bottom:before{background-color:var(--f7-toolbar-border-color,var(--f7-bars-border-color));bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.toolbar-inner{align-content:center;align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:space-between;left:0;overflow:hidden;padding:0 calc(var(--f7-toolbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-toolbar-inner-padding-left) + var(--f7-safe-area-left));position:absolute;top:0;width:100%}.views>.tabbar,.views>.tabbar-icons{z-index:5001}.tabbar a,.tabbar-icons a{color:var(--f7-tabbar-link-inactive-color)}.tabbar .link,.tabbar-icons .link{line-height:1.4}.tabbar .link,.tabbar .tab-link,.tabbar-icons .link,.tabbar-icons .tab-link{align-items:center;box-sizing:border-box;display:flex;flex-direction:column;font-weight:var(--f7-tabbar-link-font-weight);height:100%;justify-content:center;letter-spacing:var(--f7-tabbar-link-letter-spacing);overflow:hidden;text-transform:var(--f7-tabbar-link-text-transform);width:100%}.tabbar .tab-link-active,.tabbar-icons .tab-link-active{background-color:var(--f7-tabbar-link-active-bg-color,transparent);color:var(--f7-tabbar-link-active-color,var(--f7-theme-color))}.tabbar i.icon,.tabbar-icons i.icon{font-size:var(--f7-tabbar-icon-size);height:var(--f7-tabbar-icon-size);line-height:var(--f7-tabbar-icon-size)}.md .tabbar-icons.tabbar-icons .tab-link-highlight,.md .tabbar.tabbar-icons .tab-link-highlight{display:none}.md .tabbar-icons:not(.tabbar-icons) .tab-link-highlight,.md .tabbar:not(.tabbar-icons) .tab-link-highlight{background:var(--f7-tabbar-link-active-border-color,var(--f7-theme-color));height:2px;left:0;position:absolute;transition-duration:.3s}.tabbar-icons{--f7-toolbar-height:var(--f7-tabbar-icons-height)}.tabbar-icons .link,.tabbar-icons .tab-link{align-items:center;height:100%;justify-content:center}.tabbar-icons .tabbar-label{display:block;font-size:var(--f7-tabbar-label-font-size);font-weight:var(--f7-tabbar-label-font-weight);letter-spacing:var(--f7-tabbar-label-letter-spacing);line-height:1;margin:0;position:relative;text-overflow:ellipsis;text-transform:var(--f7-tabbar-label-text-transform);white-space:nowrap}@media (min-width:768px) and (min-height:600px){:root{--f7-tabbar-icons-height:var(--f7-tabbar-icons-tablet-height);--f7-tabbar-label-font-size:var(--f7-tabbar-label-tablet-font-size)}}.tabbar-scrollable .toolbar-inner{-webkit-overflow-scrolling:touch;justify-content:flex-start;overflow:auto;scrollbar-color:transparent;scrollbar-width:none}.tabbar-scrollable .toolbar-inner::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-track{background:transparent;box-shadow:none}.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.tabbar-scrollable .link,.tabbar-scrollable .tab-link{flex-shrink:0;width:auto}.navbar-transitioning+.toolbar,.navbar-transitioning~* .toolbar,.toolbar-transitioning{transition-duration:var(--f7-toolbar-hide-show-transition-duration)}.ios .toolbar-bottom-ios~*,.md .toolbar-bottom-md~*,.toolbar-bottom~*{--f7-page-toolbar-bottom-offset:var(--f7-toolbar-height)}.ios .toolbar-bottom-ios.tabbar-icons~*,.md .toolbar-bottom-md.tabbar-icons~*,.toolbar-bottom.tabbar-icons~*{--f7-page-toolbar-bottom-offset:var(--f7-tabbar-icons-height)}.ios .toolbar-bottom-ios.toolbar-hidden,.md .toolbar-bottom-md.toolbar-hidden,.toolbar-bottom.toolbar-hidden{transform:translate3d(0,100%,0)}.ios .toolbar-top-ios~*,.md .toolbar-top-md~*,.toolbar-top~*{--f7-page-toolbar-top-offset:var(--f7-toolbar-height)}.ios .toolbar-top-ios.tabbar-icons~*,.md .toolbar-top-md.tabbar-icons~*,.toolbar-top.tabbar-icons~*{--f7-page-toolbar-top-offset:var(--f7-tabbar-icons-height)}.ios .toolbar-top-ios.toolbar-hidden,.md .toolbar-top-md.toolbar-hidden,.toolbar-top.toolbar-hidden{transform:translate3d(0,-100%,0)}.ios .navbars~* .toolbar-top-ios,.ios .navbars~.page:not(.no-navbar) .toolbar-top-ios,.ios .navbars~.toolbar-top-ios,.ios .navbar~* .toolbar-top-ios,.ios .navbar~.page:not(.no-navbar) .toolbar-top-ios,.ios .navbar~.toolbar-top-ios,.md .navbar~* .toolbar-top-md,.md .navbar~.page:not(.no-navbar) .toolbar-top-md,.md .navbar~.toolbar-top-md,.navbars~* .toolbar-top,.navbars~.page:not(.no-navbar) .toolbar-top,.navbars~.toolbar-top,.navbar~* .toolbar-top,.navbar~.page:not(.no-navbar) .toolbar-top,.navbar~.toolbar-top{top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars~* .toolbar-top-ios.toolbar-hidden,.ios .navbars~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,.ios .navbars~.toolbar-top-ios.toolbar-hidden,.ios .navbar~* .toolbar-top-ios.toolbar-hidden,.ios .navbar~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,.ios .navbar~.toolbar-top-ios.toolbar-hidden,.md .navbar~* .toolbar-top-md.toolbar-hidden,.md .navbar~.page:not(.no-navbar) .toolbar-top-md.toolbar-hidden,.md .navbar~.toolbar-top-md.toolbar-hidden,.navbars~* .toolbar-top.toolbar-hidden,.navbars~.page:not(.no-navbar) .toolbar-top.toolbar-hidden,.navbars~.toolbar-top.toolbar-hidden,.navbar~* .toolbar-top.toolbar-hidden,.navbar~.page:not(.no-navbar) .toolbar-top.toolbar-hidden,.navbar~.toolbar-top.toolbar-hidden{transform:translate3d(0,calc((var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top))*-1),0)}.ios .navbars~* .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbars~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbars~.toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbar~* .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbar~.page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,.ios .navbar~.toolbar-top-ios.toolbar-hidden.tabbar-icons,.md .navbar~* .toolbar-top-md.toolbar-hidden.tabbar-icons,.md .navbar~.page:not(.no-navbar) .toolbar-top-md.toolbar-hidden.tabbar-icons,.md .navbar~.toolbar-top-md.toolbar-hidden.tabbar-icons,.navbars~* .toolbar-top.toolbar-hidden.tabbar-icons,.navbars~.page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,.navbars~.toolbar-top.toolbar-hidden.tabbar-icons,.navbar~* .toolbar-top.toolbar-hidden.tabbar-icons,.navbar~.page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,.navbar~.toolbar-top.toolbar-hidden.tabbar-icons{transform:translate3d(0,calc((var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top))*-1),0)}.ios .navbar-hidden+.toolbar-top-ios:not(.toolbar-hidden),.ios .navbar-hidden~* .toolbar-top-ios:not(.toolbar-hidden),.md .navbar-hidden+.toolbar-top-md:not(.toolbar-hidden),.md .navbar-hidden~* .toolbar-top-md:not(.toolbar-hidden),.navbar-hidden+.toolbar-top:not(.toolbar-hidden),.navbar-hidden~* .toolbar-top:not(.toolbar-hidden){transform:translate3d(0,calc(0px - var(--f7-navbar-height)),0)}.ios .navbar-large-hidden+.toolbar-top-ios:not(.toolbar-hidden),.ios .navbar-large-hidden~* .toolbar-top-ios:not(.toolbar-hidden),.md .navbar-large-hidden+.toolbar-top-md:not(.toolbar-hidden),.md .navbar-large-hidden~* .toolbar-top-md:not(.toolbar-hidden),.navbar-large-hidden+.toolbar-top:not(.toolbar-hidden),.navbar-large-hidden~* .toolbar-top:not(.toolbar-hidden){transform:translate3d(0,calc(0px - var(--f7-navbar-height) - var(--f7-navbar-large-title-height)),0)}.ios .toolbar a.icon-only{align-items:center;display:flex;justify-content:center;margin:0;min-height:var(--f7-toolbar-height);min-width:44px}.ios .tabbar-icons .link,.ios .tabbar-icons .tab-link{padding-bottom:4px;padding-top:4px}.ios .tabbar-icons .link i+span,.ios .tabbar-icons .tab-link i+span{margin:4px 0 0}@media (min-width:768px) and (min-height:600px){.ios .tabbar .link,.ios .tabbar .tab-link,.ios .tabbar-icons .link,.ios .tabbar-icons .tab-link{flex-direction:row;justify-content:center}.ios .tabbar .link i+span,.ios .tabbar .tab-link i+span,.ios .tabbar-icons .link i+span,.ios .tabbar-icons .tab-link i+span{margin-left:5px}}.ios .tabbar-scrollable .toolbar-inner{justify-content:flex-start}.ios .tabbar-scrollable .link,.ios .tabbar-scrollable .tab-link{padding:0 8px}.md .toolbar .link{justify-content:center;min-width:48px;padding:0 12px}.md .toolbar a.icon-only{flex-shrink:0;min-width:0}.md .tabbar .link,.md .tabbar .tab-link,.md .tabbar-icons .link,.md .tabbar-icons .tab-link{padding-left:0;padding-right:0}.md .tabbar a.icon-only,.md .tabbar-icons a.icon-only{flex-shrink:1}.md .tabbar .tab-link,.md .tabbar-icons .tab-link{overflow:hidden;position:relative;transition-duration:.3s}.md .tabbar i.icon,.md .tabbar-icons i.icon{position:relative}.md .tabbar i.icon:before,.md .tabbar-icons i.icon:before{background:var(--f7-tabbar-link-active-icon-bg-color);border-radius:32px;content:"";height:32px;left:50%;opacity:0;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) scaleX(.5);transition-duration:.2s;width:64px;z-index:-1}.md .tabbar i.icon+.tabbar-label,.md .tabbar-icons i.icon+.tabbar-label{margin-top:8px}.md .tabbar .tab-link-active i.icon:before,.md .tabbar-icons .tab-link-active i.icon:before{opacity:1;transform:translateX(-50%) translateY(-50%) scaleX(1)}.md .tabbar-icons .link,.md .tabbar-icons .tab-link{padding-bottom:8px;padding-top:8px}.md .tabbar-label{line-height:1.2;max-width:100%;overflow:hidden}.md .tabbar-scrollable .toolbar-inner{overflow:auto}.md .tabbar-scrollable .link,.md .tabbar-scrollable .tab-link{padding:0 12px}:root{--f7-subnavbar-title-line-height:1.2}.ios{--f7-subnavbar-height:44px;--f7-subnavbar-inner-padding-left:8px;--f7-subnavbar-inner-padding-right:8px;--f7-subnavbar-title-font-size:34px;--f7-subnavbar-title-font-weight:700;--f7-subnavbar-title-letter-spacing:-0.03em;--f7-subnavbar-title-margin-left:8px}.md{--f7-subnavbar-height:64px;--f7-subnavbar-inner-padding-left:16px;--f7-subnavbar-inner-padding-right:16px;--f7-subnavbar-title-font-size:22px;--f7-subnavbar-title-font-weight:400;--f7-subnavbar-title-letter-spacing:0;--f7-subnavbar-title-margin-left:0px}.subnavbar{align-items:center;background-color:var(--f7-subnavbar-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-subnavbar-text-color,var(--f7-bars-text-color));display:flex;justify-content:space-between;left:0;position:absolute;top:0;width:100%;z-index:600}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .subnavbar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-subnavbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.subnavbar .subnavbar-title{display:inline-block;font-size:var(--f7-subnavbar-title-font-size);font-weight:var(--f7-subnavbar-title-font-weight);letter-spacing:var(--f7-subnavbar-title-letter-spacing);line-height:var(--f7-subnavbar-title-line-height);margin-left:var(--f7-subnavbar-title-margin-left);overflow:hidden;position:relative;text-align:left;text-overflow:ellpsis;white-space:nowrap}.subnavbar .left,.subnavbar .right{align-items:center;display:flex;flex-shrink:0;justify-content:flex-start}.subnavbar .right:first-child{height:100%;position:absolute}.subnavbar a{color:var(--f7-subnavbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.subnavbar a.link{height:var(--f7-subnavbar-link-height,var(--f7-subnavbar-height));line-height:var(--f7-subnavbar-link-line-height,var(--f7-subnavbar-height))}.subnavbar a.icon-only{min-width:var(--f7-subnavbar-height)}.subnavbar.navbar-hidden:before,.subnavbar.no-outline:after{display:none!important}.subnavbar:after,.subnavbar:before{-webkit-backface-visibility:hidden;backface-visibility:hidden}.subnavbar:after{background-color:var(--f7-subnavbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.subnavbar-inner{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:space-between;overflow:hidden;padding:0 calc(var(--f7-subnavbar-inner-padding-left) + var(--f7-safe-area-right)) 0 calc(var(--f7-subnavbar-inner-padding-right) + var(--f7-safe-area-left));width:100%}.navbar .subnavbar{top:100%}.page>.subnavbar,.view>.subnavbar,.views>.subnavbar{position:absolute}.navbars~* .subnavbar,.navbars~.page-with-subnavbar:not(.no-navbar) .subnavbar,.navbars~.subnavbar,.navbar~* .subnavbar,.navbar~.page-with-subnavbar:not(.no-navbar) .subnavbar,.navbar~.subnavbar,.page-with-subnavbar .navbar~* .subnavbar,.page-with-subnavbar .navbar~.subnavbar{top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbar .title-large~.subnavbar,.navbars~.page-with-navbar-large:not(.no-navbar) .subnavbar,.navbar~.page-with-navbar-large:not(.no-navbar) .subnavbar,.page-with-subnavbar.page-with-navbar-large .navbar~* .subnavbar,.page-with-subnavbar.page-with-navbar-large .navbar~.subnavbar{top:calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.page-with-subnavbar,.subnavbar~*{--f7-page-subnavbar-offset:var(--f7-subnavbar-height)}.ios .subnavbar{height:calc(var(--f7-subnavbar-height) + 1px);margin-top:-1px;padding-top:1px}.ios .subnavbar .title{align-self:flex-start;flex-shrink:10}.ios .subnavbar .left a+a,.ios .subnavbar .right a+a{margin-left:16px}.ios .subnavbar .left{margin-right:10px}.ios .subnavbar .right{margin-left:10px}.ios .subnavbar .right:first-child{right:8px}.ios .subnavbar a.link{justify-content:flex-start}.ios .subnavbar a.icon-only{justify-content:center;margin:0}.md .subnavbar{height:var(--f7-subnavbar-height)}.md .subnavbar .right{margin-left:auto}.md .subnavbar .right:first-child{right:16px}.md .subnavbar a.link{justify-content:center;padding:0 12px}.md .subnavbar a.icon-only{flex-shrink:0;padding:0 12px}.md .subnavbar-inner>a.link:first-child{margin-left:calc(var(--f7-subnavbar-inner-padding-left)*-1)}.md .subnavbar-inner>a.link:last-child{margin-right:calc(var(--f7-subnavbar-inner-padding-right)*-1)}:root{--f7-block-padding-horizontal:16px;--f7-block-padding-vertical:16px;--f7-block-font-size:inherit;--f7-block-header-margin:10px;--f7-block-footer-margin:10px;--f7-block-header-font-size:14px;--f7-block-footer-font-size:14px;--f7-block-title-text-transform:none;--f7-block-title-white-space:nowrap;--f7-block-title-medium-text-transform:none;--f7-block-title-large-text-transform:none;--f7-block-inset-side-margin:16px}:root .dark,:root.dark{--f7-block-outline-border-color:rgba(255,255,255,0.15)}.ios{--f7-block-text-color:inherit;--f7-block-margin-vertical:35px;--f7-block-outline-border-color:rgba(0,0,0,0.22);--f7-block-title-font-size:16px;--f7-block-title-font-weight:600;--f7-block-title-line-height:20px;--f7-block-title-margin-bottom:10px;--f7-block-title-medium-font-size:22px;--f7-block-title-medium-font-weight:bold;--f7-block-title-medium-line-height:1.4;--f7-block-title-large-font-size:30px;--f7-block-title-large-font-weight:bold;--f7-block-title-large-line-height:1.3;--f7-block-inset-border-radius:8px;--f7-block-title-text-color:#000;--f7-block-strong-text-color:#000;--f7-block-header-text-color:rgba(0,0,0,0.45);--f7-block-footer-text-color:rgba(0,0,0,0.45);--f7-block-strong-bg-color:#fff;--f7-block-title-medium-text-color:#000;--f7-block-title-large-text-color:#000}.ios .dark,.ios.dark{--f7-block-title-text-color:#fff;--f7-block-header-text-color:rgba(255,255,255,0.55);--f7-block-footer-text-color:rgba(255,255,255,0.55);--f7-block-strong-text-color:#fff;--f7-block-strong-bg-color:#1c1c1d;--f7-block-title-medium-text-color:#fff;--f7-block-title-large-text-color:#fff}.md{--f7-block-margin-vertical:32px;--f7-block-title-font-size:inherit;--f7-block-title-font-weight:500;--f7-block-title-line-height:16px;--f7-block-title-margin-bottom:16px;--f7-block-title-medium-font-size:16px;--f7-block-title-medium-font-weight:500;--f7-block-title-medium-line-height:1.3;--f7-block-title-large-font-size:22px;--f7-block-title-large-font-weight:500;--f7-block-title-large-line-height:1.2;--f7-block-inset-border-radius:16px}.md,.md .dark,.md [class*=color-]{--f7-block-text-color:var(--f7-md-on-surface);--f7-block-strong-text-color:var(--f7-md-on-surface);--f7-block-outline-border-color:var(--f7-md-outline);--f7-block-title-text-color:var(--f7-theme-color);--f7-block-title-medium-text-color:var(--f7-theme-color);--f7-block-title-large-text-color:var(--f7-theme-color);--f7-block-strong-bg-color:var(--f7-md-surface-1);--f7-block-header-text-color:var(--f7-md-on-surface-variant);--f7-block-footer-text-color:var(--f7-md-on-surface-variant)}.block{box-sizing:border-box;color:var(--f7-block-text-color);font-size:var(--f7-block-font-size);margin:var(--f7-block-margin-vertical) 0;padding-bottom:0;padding-left:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));padding-top:0;position:relative;z-index:1}.block>h1:first-child,.block>h2:first-child,.block>h3:first-child,.block>h4:first-child,.block>p:first-child{margin-top:0}.block>h1:last-child,.block>h2:last-child,.block>h3:last-child,.block>h4:last-child,.block>p:last-child{margin-bottom:0}.block-strong,.ios .block-strong-ios,.md .block-strong-md{background-color:var(--f7-block-strong-bg-color);color:var(--f7-block-strong-text-color);padding-bottom:var(--f7-block-padding-vertical);padding-top:var(--f7-block-padding-vertical)}.block-outline:not(.inset):before,.ios .block-outline-ios:not(.inset):not(.inset-ios):before,.md .block-outline-md:not(.inset):not(.inset-md):before{background-color:var(--f7-block-outline-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.block-outline:not(.inset):after,.ios .block-outline-ios:not(.inset):not(.inset-ios):after,.md .block-outline-md:not(.inset):not(.inset-md):after{background-color:var(--f7-block-outline-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.block-outline.inset,.ios .block-outline-ios.inset,.ios .block-outline-ios.inset-ios,.md .block-outline-md.inset,.md .block-outline-md.inset-md{border:1px solid var(--f7-block-outline-border-color)}.block-title{color:var(--f7-block-title-text-color);font-size:var(--f7-block-title-font-size,inherit);font-weight:var(--f7-block-title-font-weight);line-height:var(--f7-block-title-line-height);margin:0;margin:var(--f7-block-margin-vertical) calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right)) var(--f7-block-title-margin-bottom) calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));overflow:hidden;position:relative;text-overflow:ellipsis;text-transform:var(--f7-block-title-text-transform);white-space:var(--f7-block-title-white-space)}.block-title+.block,.block-title+.block-header,.block-title+.card,.block-title+.list,.block-title+.timeline{margin-top:0}.block-title-medium{color:var(--f7-block-title-medium-text-color);font-size:var(--f7-block-title-medium-font-size);font-weight:var(--f7-block-title-medium-font-weight);line-height:var(--f7-block-title-medium-line-height);text-transform:var(--f7-block-title-medium-text-transform)}.block-title-large{color:var(--f7-block-title-large-text-color);font-size:var(--f7-block-title-large-font-size);font-weight:var(--f7-block-title-large-font-weight);line-height:var(--f7-block-title-large-line-height);text-transform:var(--f7-block-title-large-text-transform)}.block>.block-title:first-child,.list>.block-title:first-child{margin-left:0;margin-right:0;margin-top:0}.block-header{color:var(--f7-block-header-text-color);font-size:var(--f7-block-header-font-size);margin-bottom:var(--f7-block-header-margin);margin-top:var(--f7-block-margin-vertical)}.block-header+.block,.block-header+.card,.block-header+.list,.block-header+.timeline{margin-top:var(--f7-block-header-margin)}.block-footer{color:var(--f7-block-footer-text-color);font-size:var(--f7-block-footer-font-size);margin-bottom:var(--f7-block-margin-vertical);margin-top:var(--f7-block-footer-margin)}.block-footer,.block-header{padding-bottom:0;padding-left:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));padding-top:0}.block-footer h1:first-child,.block-footer h2:first-child,.block-footer h3:first-child,.block-footer h4:first-child,.block-footer p:first-child,.block-footer ul:first-child,.block-header h1:first-child,.block-header h2:first-child,.block-header h3:first-child,.block-header h4:first-child,.block-header p:first-child,.block-header ul:first-child{margin-top:0}.block-footer h1:last-child,.block-footer h2:last-child,.block-footer h3:last-child,.block-footer h4:last-child,.block-footer p:last-child,.block-footer ul:last-child,.block-header h1:last-child,.block-header h2:last-child,.block-header h3:last-child,.block-header h4:last-child,.block-header p:last-child,.block-header ul:last-child{margin-bottom:0}.block-footer h1:first-child:last-child,.block-footer h2:first-child:last-child,.block-footer h3:first-child:last-child,.block-footer h4:first-child:last-child,.block-footer p:first-child:last-child,.block-footer ul:first-child:last-child,.block-header h1:first-child:last-child,.block-header h2:first-child:last-child,.block-header h3:first-child:last-child,.block-header h4:first-child:last-child,.block-header p:first-child:last-child,.block-header ul:first-child:last-child{margin-bottom:0;margin-top:0}.block .block-header,.card .block-header,.list .block-header,.timeline .block-header{margin-top:0}.block .block-footer,.card .block-footer,.list .block-footer,.timeline .block-footer{margin-bottom:0}.block+.block-footer,.card+.block-footer,.list+.block-footer,.timeline+.block-footer{margin-top:calc((var(--f7-block-margin-vertical) - var(--f7-block-footer-margin))*-1)}.block+.block-footer{margin-bottom:var(--f7-block-margin-vertical)}.block .block-footer,.block .block-header{padding:0}.block.inset,.ios .block.inset-ios,.md .block.inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block-strong.inset:after,.block-strong.inset:before,.ios .block-strong-ios.inset-ios:after,.ios .block-strong-ios.inset-ios:before,.ios .block-strong-ios.inset:after,.ios .block-strong-ios.inset:before,.ios .block-strong.inset-ios:after,.ios .block-strong.inset-ios:before,.md .block-strong-md.inset-md:after,.md .block-strong-md.inset-md:before,.md .block-strong-md.inset:after,.md .block-strong-md.inset:before,.md .block-strong.inset-md:after,.md .block-strong.inset-md:before{display:none!important}@media (min-width:480px){.block.xsmall-inset,.ios .block.xsmall-inset-ios,.md .block.xsmall-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.xsmall-inset:after,.block.xsmall-inset:before,.ios .block.xsmall-inset-ios:after,.ios .block.xsmall-inset-ios:before,.md .block.xsmall-inset-md:after,.md .block.xsmall-inset-md:before{display:none!important}.block.xsmall-inset.block-outline,.ios .block.xsmall-inset-ios.block-outline,.ios .block.xsmall-inset-ios.block-outline-ios,.md .block.xsmall-inset-md.block-outline,.md .block.xsmall-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:568px){.block.small-inset,.ios .block.small-inset-ios,.md .block.small-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.small-inset:after,.block.small-inset:before,.ios .block.small-inset-ios:after,.ios .block.small-inset-ios:before,.md .block.small-inset-md:after,.md .block.small-inset-md:before{display:none!important}.block.small-inset.block-outline,.ios .block.small-inset-ios.block-outline,.ios .block.small-inset-ios.block-outline-ios,.md .block.small-inset-md.block-outline,.md .block.small-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:768px){.block.medium-inset,.ios .block.medium-inset-ios,.md .block.medium-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.medium-inset:after,.block.medium-inset:before,.ios .block.medium-inset-ios:after,.ios .block.medium-inset-ios:before,.md .block.medium-inset-md:after,.md .block.medium-inset-md:before{display:none!important}.block.medium-inset.block-outline,.ios .block.medium-inset-ios.block-outline,.ios .block.medium-inset-ios.block-outline-ios,.md .block.medium-inset-md.block-outline,.md .block.medium-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:1024px){.block.large-inset,.ios .block.large-inset-ios,.md .block.large-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.large-inset:after,.block.large-inset:before,.ios .block.large-inset-ios:after,.ios .block.large-inset-ios:before,.md .block.large-inset-md:after,.md .block.large-inset-md:before{display:none!important}.block.large-inset.block-outline,.ios .block.large-inset-ios.block-outline,.ios .block.large-inset-ios.block-outline-ios,.md .block.large-inset-md.block-outline,.md .block.large-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}@media (min-width:1200px){.block.xlarge-inset,.ios .block.xlarge-inset-ios,.md .block.xlarge-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-block-inset-border-radius);margin-left:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right))}.block.xlarge-inset:after,.block.xlarge-inset:before,.ios .block.xlarge-inset-ios:after,.ios .block.xlarge-inset-ios:before,.md .block.xlarge-inset-md:after,.md .block.xlarge-inset-md:before{display:none!important}.block.xlarge-inset.block-outline,.ios .block.xlarge-inset-ios.block-outline,.ios .block.xlarge-inset-ios.block-outline-ios,.md .block.xlarge-inset-md.block-outline,.md .block.xlarge-inset-md.block-outline-md{border:1px solid var(--f7-block-outline-border-color)}}:root{--f7-list-inset-side-margin:16px;--f7-list-item-padding-horizontal:16px;--f7-list-item-padding-vertical:8px;--f7-list-media-item-padding-horizontal:16px;--f7-list-item-text-max-lines:2;--f7-list-chevron-icon-font-size:20px;--f7-list-item-media-margin:16px;--f7-list-item-title-font-size:inherit;--f7-list-item-title-font-weight:400;--f7-list-item-title-line-height:inherit;--f7-list-item-title-white-space:nowrap;--f7-list-item-subtitle-font-weight:400;--f7-list-item-subtitle-line-height:inherit;--f7-list-item-text-font-weight:400;--f7-list-item-after-font-weight:400;--f7-list-item-after-line-height:inherit;--f7-list-item-header-font-size:12px;--f7-list-item-header-font-weight:400;--f7-list-item-header-line-height:1.2;--f7-list-item-footer-font-size:12px;--f7-list-item-footer-font-weight:400;--f7-list-item-footer-line-height:1.2;--f7-list-button-font-size:inherit;--f7-list-button-font-weight:400;--f7-list-button-text-align:center;--f7-list-group-title-line-height:inherit;--f7-menu-list-font-size:14px;--f7-menu-list-item-title-font-size:14px;--f7-menu-list-item-title-font-weight:500;--f7-menu-list-item-subtitle-font-size:14px;--f7-menu-list-item-text-font-size:14px;--f7-menu-list-item-after-font-size:14px;--f7-list-outline-border-color:rgba(0,0,0,0.22);--f7-list-chevron-icon-color:rgba(0,0,0,0.2)}:root .dark,:root.dark{--f7-list-button-border-color:rgba(255,255,255,0.15);--f7-list-outline-border-color:rgba(255,255,255,0.15);--f7-list-group-title-border-color:rgba(255,255,255,0.15);--f7-list-chevron-icon-color:rgba(255,255,255,0.3)}.ios{--f7-list-in-list-padding-left:30px;--f7-list-inset-border-radius:8px;--f7-list-margin-vertical:35px;--f7-list-font-size:17px;--f7-list-chevron-icon-area:20px;--f7-list-item-title-text-color:inherit;--f7-list-item-subtitle-text-color:inherit;--f7-list-link-pressed-bg-color:rgba(0,0,0,0.15);--f7-list-item-subtitle-font-size:15px;--f7-list-item-text-font-size:15px;--f7-list-item-text-line-height:21px;--f7-list-item-after-font-size:inherit;--f7-list-item-after-padding:5px;--f7-list-item-min-height:44px;--f7-list-item-media-icons-margin:5px;--f7-list-media-item-padding-vertical:10px;--f7-list-media-item-title-font-weight:600;--f7-list-button-border-color:rgba(0,0,0,0.22);--f7-list-group-title-border-color:rgba(0,0,0,0.22);--f7-list-group-title-height:31px;--f7-list-group-title-font-size:inherit;--f7-list-group-title-font-weight:400;--f7-menu-list-offset:8px;--f7-menu-list-border-radius:8px;--f7-menu-list-item-bg-color:transparent;--f7-menu-list-item-text-color:inherit;--f7-menu-list-item-min-height:44px;--f7-list-item-border-color:rgba(0,0,0,0.22);--f7-list-outline-inset-border-color:rgba(0,0,0,0.22);--f7-list-strong-bg-color:#fff;--f7-list-item-after-text-color:rgba(0,0,0,0.45);--f7-list-item-header-text-color:inherit;--f7-list-item-footer-text-color:rgba(0,0,0,0.45);--f7-list-item-text-text-color:rgba(0,0,0,0.45);--f7-list-group-title-text-color:rgba(0,0,0,0.45);--f7-list-group-title-bg-color:#f7f7f7;--f7-menu-list-item-selected-text-color:var(--f7-theme-color);--f7-menu-list-item-selected-bg-color:rgba(var(--f7-theme-color-rgb),0.15)}.ios .dark,.ios.dark{--f7-list-item-border-color:rgba(255,255,255,0.15);--f7-list-outline-inset-color:rgba(255,255,255,0.15);--f7-list-strong-bg-color:#1c1c1d;--f7-list-item-after-text-color:rgba(255,255,255,0.55);--f7-list-item-header-text-color:rgba(255,255,255,0.55);--f7-list-item-footer-text-color:rgba(255,255,255,0.55);--f7-list-item-text-text-color:rgba(255,255,255,0.55);--f7-list-group-title-text-color:rgba(255,255,255,0.55);--f7-list-group-title-bg-color:#232323;--f7-list-link-pressed-bg-color:rgba(255,255,255,0.08);--f7-menu-list-item-selected-text-color:inherit;--f7-menu-list-item-selected-bg-color:var(--f7-theme-color)}.md{--f7-list-in-list-padding-left:24px;--f7-list-inset-border-radius:16px;--f7-list-margin-vertical:32px;--f7-list-font-size:16px;--f7-list-chevron-icon-area:26px;--f7-list-item-subtitle-font-size:14px;--f7-list-item-text-font-size:14px;--f7-list-item-text-line-height:20px;--f7-list-item-after-font-size:14px;--f7-list-item-after-padding:8px;--f7-list-item-min-height:48px;--f7-list-item-media-icons-margin:8px;--f7-list-media-item-padding-vertical:12px;--f7-list-media-item-title-font-weight:500;--f7-list-button-border-color:transparent;--f7-list-group-title-border-color:transparent;--f7-list-group-title-height:48px;--f7-list-group-title-font-size:16px;--f7-list-group-title-font-weight:400;--f7-menu-list-offset:16px;--f7-menu-list-border-radius:999px;--f7-menu-list-item-min-height:56px;--f7-list-link-pressed-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-list-outline-inset-border-color:var(--f7-md-outline);--f7-list-item-border-color:var(--f7-md-outline);--f7-list-item-title-text-color:var(--f7-md-on-surface);--f7-list-item-subtitle-text-color:var(--f7-md-on-surface);--f7-list-group-title-bg-color:var(--f7-md-surface-2);--f7-list-group-title-text-color:var(--f7-md-on-surface-variant);--f7-list-strong-bg-color:var(--f7-md-surface-1);--f7-list-item-after-text-color:var(--f7-md-on-surface-variant);--f7-list-item-text-text-color:var(--f7-md-on-surface-variant);--f7-list-item-header-text-color:var(--f7-md-on-surface-variant);--f7-list-item-footer-text-color:var(--f7-md-on-surface-variant);--f7-menu-list-item-text-color:var(--f7-md-on-surface-variant);--f7-menu-list-item-bg-color:var(--f7-md-surface-1);--f7-menu-list-item-selected-text-color:var(--f7-md-on-secondary-container);--f7-menu-list-item-selected-bg-color:var(--f7-md-secondary-container)}:root{--f7-list-chevron-icon-left:"chevron_left";--f7-list-chevron-icon-right:"chevron_right"}.list{font-size:var(--f7-list-font-size);margin:var(--f7-list-margin-vertical) 0;position:relative;z-index:1}.ios .list-strong-ios ul,.list-strong ul,.md .list-strong-md ul{background:var(--f7-list-strong-bg-color)}.ios .list-outline-ios ul:before,.list-outline ul:before,.md .list-outline-md ul:before{background-color:var(--f7-list-outline-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.ios .list-outline-ios ul:after,.list-outline ul:after,.md .list-outline-md ul:after{background-color:var(--f7-list-outline-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .list-outline-ios.inset,.ios .list-outline-ios.inset-ios,.list-outline.inset,.md .list-outline-md.inset,.md .list-outline-md.inset-md{border:1px solid var(--f7-list-outline-inset-border-color)}.list ul{list-style:none;margin:0;padding:0;position:relative}.list ul ul{padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-list-in-list-padding-left))}.list ul ul:after,.list ul ul:before{display:none!important}.list .item-media,.list li{box-sizing:border-box;position:relative}.list .item-media{align-items:center;display:flex;flex-shrink:0;flex-wrap:nowrap;padding-bottom:var(--f7-list-item-padding-vertical);padding-top:var(--f7-list-item-padding-vertical)}.list .item-media+.item-inner{margin-left:var(--f7-list-item-media-margin)}.list .item-media i+i,.list .item-media i+img{margin-left:var(--f7-list-item-media-icons-margin)}.list .item-after{padding-left:var(--f7-list-item-after-padding)}.list .item-inner{align-items:center;align-self:stretch;box-sizing:border-box;display:flex;justify-content:space-between;min-height:calc(var(--f7-list-item-min-height));min-width:0;padding-bottom:var(--f7-list-item-padding-vertical);padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));padding-top:var(--f7-list-item-padding-vertical);position:relative;width:100%}.list .item-title{color:var(--f7-list-item-title-text-color);flex-shrink:1;font-size:var(--f7-list-item-title-font-size);font-weight:var(--f7-list-item-title-font-weight);line-height:var(--f7-list-item-title-line-height);max-width:100%;min-width:0;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:var(--f7-list-item-title-white-space)}.list .item-after{color:var(--f7-list-item-after-text-color);display:flex;flex-shrink:0;font-size:var(--f7-list-item-after-font-size);font-weight:var(--f7-list-item-after-font-weight);line-height:var(--f7-list-item-after-line-height);margin-left:auto;white-space:nowrap}.list .item-footer,.list .item-header{white-space:normal}.list .item-header{color:var(--f7-list-item-header-text-color);font-size:var(--f7-list-item-header-font-size);font-weight:var(--f7-list-item-header-font-weight);line-height:var(--f7-list-item-header-line-height)}.list .item-footer{color:var(--f7-list-item-footer-text-color);font-size:var(--f7-list-item-footer-font-size);font-weight:var(--f7-list-item-footer-font-weight);line-height:var(--f7-list-item-footer-line-height)}.list .item-link,.list .list-button,.list label.item-content{cursor:pointer;overflow:hidden;position:relative;transition-duration:.3s;transition-property:background-color,color;z-index:0}.list .item-link,.list .list-button{display:block}.list .item-link,.list label.item-content{color:inherit}.list .item-link.active-state,.list label.item-content.active-state{background-color:var(--f7-list-link-pressed-bg-color)}.list .item-link .item-inner{padding-right:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.list .item-content{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;min-height:calc(var(--f7-list-item-min-height));padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left))}.list .item-subtitle{color:var(--f7-list-item-subtitle-text-color);font-size:var(--f7-list-item-subtitle-font-size);font-weight:var(--f7-list-item-subtitle-font-weight);line-height:var(--f7-list-item-subtitle-line-height);max-width:100%;white-space:nowrap}.list .item-subtitle,.list .item-text{overflow:hidden;position:relative;text-overflow:ellipsis}.list .item-text{-webkit-line-clamp:var(--f7-list-item-text-max-lines);-webkit-box-orient:vertical;color:var(--f7-list-item-text-text-color);display:-webkit-box;font-size:var(--f7-list-item-text-font-size);font-weight:var(--f7-list-item-text-font-weight);line-height:var(--f7-list-item-text-line-height);max-height:calc(var(--f7-list-item-text-line-height)*var(--f7-list-item-text-max-lines))}.list .item-title-row{box-sizing:border-box;display:flex;justify-content:space-between;position:relative}.list .item-title-row .item-after{align-self:center}.list li:last-child .list-button:after,.list li:last-child li:last-child>.item-content>.item-inner:after,.list li:last-child li:last-child>.item-inner:after,.list li:last-child li:last-child>.item-link>.item-content>.item-inner:after,.list li:last-child li:last-child>.swipeout-content>.item-content>.item-inner:after,.list li:last-child>.item-content>.item-inner:after,.list li:last-child>.item-inner:after,.list li:last-child>.item-link>.item-content>.item-inner:after,.list li:last-child>.swipeout-content>.item-content>.item-inner:after{display:none!important}.list li li:last-child .item-inner:after,.list li:last-child li .item-inner:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.list-button{--f7-touch-ripple-color:var(--f7-link-touch-ripple-color,rgba(var(--f7-theme-color-rgb),0.25));color:var(--f7-list-button-text-color,var(--f7-theme-color));font-size:var(--f7-list-button-font-size);font-weight:var(--f7-list-button-font-weight);line-height:var(--f7-list-item-min-height);padding:0 var(--f7-list-item-padding-horizontal);text-align:var(--f7-list-button-text-align)}.ios .list-button.active-state{background-color:var(--f7-list-button-pressed-bg-color,rgba(var(--f7-theme-color-rgb),.15))}.md .list-button.active-state{background-color:var(--f7-list-button-pressed-bg-color,transparent)}.ios .list-dividers-ios .list-button:after,.list-dividers .list-button:after,.md .list-dividers-md .list-button:after{background-color:var(--f7-list-button-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.list-button[class*=color-]{--f7-list-button-text-color:var(--f7-theme-color)}.simple-list li{align-content:center;align-items:center;box-sizing:border-box;display:flex;height:var(--f7-list-item-min-height);justify-content:space-between;line-height:var(--f7-list-item-min-height);max-width:100%;padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));position:relative;text-overflow:ellipsis;white-space:nowrap}.simple-list li:after{left:var(--f7-list-item-padding-horizontal);left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));right:0;width:auto}.simple-list li:last-child:after{display:none!important}.links-list li{z-index:1}.links-list a{align-content:center;align-items:center;box-sizing:border-box;color:inherit;display:block;display:flex;height:var(--f7-list-item-min-height);justify-content:space-between;max-width:100%;overflow:hidden;position:relative;text-overflow:ellipsis;transition-duration:.3s;transition-property:background-color;white-space:nowrap}.links-list a .ripple-wave{z-index:0}.links-list a:after{width:auto}.links-list a.active-state{background-color:var(--f7-list-link-pressed-bg-color)}.links-list a{padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.links-list a:after{left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));right:0}.links-list li:last-child a:after{display:none!important}.ios .list-dividers-ios .item-inner:after,.ios .list-dividers-ios.links-list a:after,.ios .list-dividers-ios.simple-list li:after,.list-dividers .item-inner:after,.list-dividers.links-list a:after,.list-dividers.simple-list li:after,.md .list-dividers-md .item-inner:after,.md .list-dividers-md.links-list a:after,.md .list-dividers-md.simple-list li:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item>.item-link,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li>.item-link{border-radius:16px;margin-left:calc(var(--f7-list-item-padding-horizontal)/2);margin-right:calc(var(--f7-list-item-padding-horizontal)/2)}.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item>.item-link>.item-content,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li>.item-link>.item-content{margin-left:0;margin-right:0}.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content{padding-left:calc(var(--f7-list-item-padding-horizontal)/2 + var(--f7-safe-area-left))}.media-list,li.media-item{--f7-list-item-padding-vertical:var(--f7-list-media-item-padding-vertical);--f7-list-item-padding-horizontal:var(--f7-list-media-item-padding-horizontal)}.media-list .item-title,li.media-item .item-title{font-weight:var(--f7-list-media-item-title-font-weight,var(--f7-list-item-title-font-weight,inherit))}.media-list .item-inner,li.media-item .item-inner{align-self:stretch;display:block}.media-list .item-media img,li.media-item .item-media img{display:block}.media-list .item-link .item-inner,li.media-item .item-link .item-inner{padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.media-list .item-link .item-title-row,li.media-item .item-link .item-title-row{padding-right:calc(var(--f7-list-chevron-icon-area))}.media-list .chevron-center .item-link .item-inner,.media-list .item-link.chevron-center .item-inner,.media-list.chevron-center .item-link .item-inner,li.media-item .chevron-center .item-link .item-inner,li.media-item .item-link.chevron-center .item-inner,li.media-item.chevron-center .item-link .item-inner{padding-right:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.media-list .chevron-center .item-title-row,.media-list.chevron-center .item-title-row,li.media-item .chevron-center .item-title-row,li.media-item.chevron-center .item-title-row{padding-right:0}.links-list a:before,.list .item-link .item-inner:before,.media-list .chevron-center .item-link .item-inner:before,.media-list .item-link .item-title-row:before,.media-list .item-link.chevron-center .item-inner:before,.media-list.chevron-center .item-link .item-inner:before,li.media-item .chevron-center .item-link .item-inner:before,li.media-item .item-link .item-title-row:before,li.media-item .item-link.chevron-center .item-inner:before,li.media-item.chevron-center .item-link .item-inner:before{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-list-chevron-icon-color);content:var(--f7-list-chevron-icon-right);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-size:var(--f7-list-chevron-icon-font-size);font-style:normal;font-weight:400;height:100%;height:14px;letter-spacing:normal;line-height:1;line-height:14px;margin-top:-7px;pointer-events:none;position:absolute;right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;white-space:nowrap;width:100%;width:8px}.media-list .chevron-center .item-title-row:before,.media-list .item-link .item-inner:before,.media-list.chevron-center .item-title-row:before,li.media-item .chevron-center .item-title-row:before,li.media-item .item-link .item-inner:before,li.media-item.chevron-center .item-title-row:before{display:none}.media-list .item-link .item-title-row:before,li.media-item .item-link .item-title-row:before{right:0}.list-group ul:after,.list-group ul:before{z-index:25!important}.list-group+.list-group ul:before{display:none!important}.list-group-title,li.list-group-title{align-content:center;align-items:center;background-color:var(--f7-list-group-title-bg-color);box-sizing:border-box;color:var(--f7-list-group-title-text-color);display:flex;font-size:var(--f7-list-group-title-font-size);font-weight:var(--f7-list-group-title-font-weight);height:var(--f7-list-group-title-height);line-height:var(--f7-list-group-title-line-height);margin-top:-1px;max-width:100%;overflow:hidden;padding-bottom:0;padding-left:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));padding-top:0;position:relative;text-overflow:ellipsis;white-space:nowrap;z-index:15}.list-group-title:before,li.list-group-title:before{background-color:var(--f7-list-group-title-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.list-group-title:after,li.list-group-title:after{display:none!important}.list-group>.list-group-title,.list-group>ul>.list-group-title{margin-top:0;position:sticky;top:0;z-index:20}.page-with-navbar-large .list-group>.list-group-title,.page-with-navbar-large .list-group>ul>.list-group-title{top:calc(var(--f7-navbar-large-title-height)*-1)}.ios .list.inset-ios,.list.inset,.md .list.inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.inset-ios .block-title,.list.inset .block-title,.md .list.inset-md .block-title{margin-left:0;margin-right:0}.ios .list.inset-ios ul,.list.inset ul,.md .list.inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.inset-ios ul:after,.ios .list.inset-ios ul:before,.list.inset ul:after,.list.inset ul:before,.md .list.inset-md ul:after,.md .list.inset-md ul:before{display:none!important}.ios .list.inset-ios li.swipeout:first-child,.ios .list.inset-ios li:first-child>a,.list.inset li.swipeout:first-child,.list.inset li:first-child>a,.md .list.inset-md li.swipeout:first-child,.md .list.inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.inset-ios li.swipeout:last-child,.ios .list.inset-ios li:last-child>a,.list.inset li.swipeout:last-child,.list.inset li:last-child>a,.md .list.inset-md li.swipeout:last-child,.md .list.inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.inset-ios li.swipeout:first-child:last-child,.ios .list.inset-ios li:first-child:last-child>a,.list.inset li.swipeout:first-child:last-child,.list.inset li:first-child:last-child>a,.md .list.inset-md li.swipeout:first-child:last-child,.md .list.inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}@media (min-width:480px){.ios .list.xsmall-inset-ios,.list.xsmall-inset,.md .list.xsmall-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.xsmall-inset-ios .block-title,.list.xsmall-inset .block-title,.md .list.xsmall-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.xsmall-inset-ios ul,.list.xsmall-inset ul,.md .list.xsmall-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xsmall-inset-ios ul:after,.ios .list.xsmall-inset-ios ul:before,.list.xsmall-inset ul:after,.list.xsmall-inset ul:before,.md .list.xsmall-inset-md ul:after,.md .list.xsmall-inset-md ul:before{display:none!important}.ios .list.xsmall-inset-ios li:first-child>a,.list.xsmall-inset li:first-child>a,.md .list.xsmall-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.xsmall-inset-ios li:last-child>a,.list.xsmall-inset li:last-child>a,.md .list.xsmall-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.xsmall-inset-ios li:first-child:last-child>a,.list.xsmall-inset li:first-child:last-child>a,.md .list.xsmall-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xsmall-inset-ios.list-outline ul,.ios .list.xsmall-inset-ios.list-outline-ios ul,.list.xsmall-inset.list-outline ul,.md .list.xsmall-inset-md.list-outline ul,.md .list.xsmall-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:568px){.ios .list.small-inset-ios,.list.small-inset,.md .list.small-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.small-inset-ios .block-title,.list.small-inset .block-title,.md .list.small-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.small-inset-ios ul,.list.small-inset ul,.md .list.small-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.small-inset-ios ul:after,.ios .list.small-inset-ios ul:before,.list.small-inset ul:after,.list.small-inset ul:before,.md .list.small-inset-md ul:after,.md .list.small-inset-md ul:before{display:none!important}.ios .list.small-inset-ios li:first-child>a,.list.small-inset li:first-child>a,.md .list.small-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.small-inset-ios li:last-child>a,.list.small-inset li:last-child>a,.md .list.small-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.small-inset-ios li:first-child:last-child>a,.list.small-inset li:first-child:last-child>a,.md .list.small-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.small-inset-ios.list-outline ul,.ios .list.small-inset-ios.list-outline-ios ul,.list.small-inset.list-outline ul,.md .list.small-inset-md.list-outline ul,.md .list.small-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:768px){.ios .list.medium-inset-ios,.list.medium-inset,.md .list.medium-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.medium-inset-ios .block-title,.list.medium-inset .block-title,.md .list.medium-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.medium-inset-ios ul,.list.medium-inset ul,.md .list.medium-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.medium-inset-ios ul:after,.ios .list.medium-inset-ios ul:before,.list.medium-inset ul:after,.list.medium-inset ul:before,.md .list.medium-inset-md ul:after,.md .list.medium-inset-md ul:before{display:none!important}.ios .list.medium-inset-ios li:first-child>a,.list.medium-inset li:first-child>a,.md .list.medium-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.medium-inset-ios li:last-child>a,.list.medium-inset li:last-child>a,.md .list.medium-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.medium-inset-ios li:first-child:last-child>a,.list.medium-inset li:first-child:last-child>a,.md .list.medium-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.medium-inset-ios.list-outline ul,.ios .list.medium-inset-ios.list-outline-ios ul,.list.medium-inset.list-outline ul,.md .list.medium-inset-md.list-outline ul,.md .list.medium-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:1024px){.ios .list.large-inset-ios,.list.large-inset,.md .list.large-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.large-inset-ios .block-title,.list.large-inset .block-title,.md .list.large-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.large-inset-ios ul,.list.large-inset ul,.md .list.large-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.large-inset-ios ul:after,.ios .list.large-inset-ios ul:before,.list.large-inset ul:after,.list.large-inset ul:before,.md .list.large-inset-md ul:after,.md .list.large-inset-md ul:before{display:none!important}.ios .list.large-inset-ios li:first-child>a,.list.large-inset li:first-child>a,.md .list.large-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.large-inset-ios li:last-child>a,.list.large-inset li:last-child>a,.md .list.large-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.large-inset-ios li:first-child:last-child>a,.list.large-inset li:first-child:last-child>a,.md .list.large-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.large-inset-ios.list-outline ul,.ios .list.large-inset-ios.list-outline-ios ul,.list.large-inset.list-outline ul,.md .list.large-inset-md.list-outline ul,.md .list.large-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}@media (min-width:1200px){.ios .list.xlarge-inset-ios,.list.xlarge-inset,.md .list.xlarge-inset-md{--f7-safe-area-left:0px;--f7-safe-area-right:0px;border-radius:var(--f7-list-inset-border-radius);margin-left:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));margin-right:calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right))}.ios .list.xlarge-inset-ios .block-title,.list.xlarge-inset .block-title,.md .list.xlarge-inset-md .block-title{margin-left:0;margin-right:0}.ios .list.xlarge-inset-ios ul,.list.xlarge-inset ul,.md .list.xlarge-inset-md ul{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xlarge-inset-ios ul:after,.ios .list.xlarge-inset-ios ul:before,.list.xlarge-inset ul:after,.list.xlarge-inset ul:before,.md .list.xlarge-inset-md ul:after,.md .list.xlarge-inset-md ul:before{display:none!important}.ios .list.xlarge-inset-ios li:first-child>a,.list.xlarge-inset li:first-child>a,.md .list.xlarge-inset-md li:first-child>a{border-radius:var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0}.ios .list.xlarge-inset-ios li:last-child>a,.list.xlarge-inset li:last-child>a,.md .list.xlarge-inset-md li:last-child>a{border-radius:0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius)}.ios .list.xlarge-inset-ios li:first-child:last-child>a,.list.xlarge-inset li:first-child:last-child>a,.md .list.xlarge-inset-md li:first-child:last-child>a{border-radius:var(--f7-list-inset-border-radius)}.ios .list.xlarge-inset-ios.list-outline ul,.ios .list.xlarge-inset-ios.list-outline-ios ul,.list.xlarge-inset.list-outline ul,.md .list.xlarge-inset-md.list-outline ul,.md .list.xlarge-inset-md.list-outline-md ul{border:1px solid var(--f7-list-outline-inset-border-color)}}.list .no-chevron,.list.no-chevron,.menu-list{--f7-list-chevron-icon-color:transparent;--f7-list-chevron-icon-area:0px}.menu-list{--f7-list-font-size:var(--f7-menu-list-font-size);--f7-list-item-title-font-size:var(--f7-menu-list-item-title-font-size);--f7-list-item-title-font-weight:var(--f7-menu-list-item-title-font-weight);--f7-list-item-subtitle-font-size:var(--f7-menu-list-item-subtitle-font-size);--f7-list-item-text-font-size:var(--f7-menu-list-item-text-font-size);--f7-list-item-after-font-size:var(--f7-menu-list-item-after-font-size);--f7-list-item-min-height:var(--f7-menu-list-item-min-height)}.menu-list .item-after,.menu-list .item-footer,.menu-list .item-header,.menu-list .item-subtitle,.menu-list .item-text,.menu-list .item-title{transition-duration:.3s}.menu-list li:not(.list-group-title){padding-bottom:4px;padding-top:4px}.menu-list li:not(.list-group-title):first-child{padding-top:4px}.menu-list li:not(.list-group-title):last-child{padding-bottom:4px}.menu-list .item-link{background-color:var(--f7-menu-list-item-bg-color);border-radius:var(--f7-menu-list-border-radius)!important;color:var(--f7-menu-list-item-text-color);margin-left:var(--f7-menu-list-offset);margin-right:var(--f7-menu-list-offset)}.menu-list .item-inner:after{display:none}.menu-list .item-selected .item-link,.menu-list .item-selected.item-link,.menu-list .tab-link-active .item-link,.menu-list .tab-link-active.item-link{background-color:var(--f7-menu-list-item-selected-bg-color);color:var(--f7-menu-list-item-selected-text-color)}.menu-list .item-selected .item-after,.menu-list .item-selected .item-footer,.menu-list .item-selected .item-header,.menu-list .item-selected .item-subtitle,.menu-list .item-selected .item-text,.menu-list .item-selected .item-title{color:var(--f7-menu-list-item-selected-text-color)}.ios .item-link.active-state .item-inner:after,.ios .links-list a.active-state:after,.ios .list-button.active-state:after{background-color:initial}.ios .links-list a.active-state,.ios .list .item-link.active-state,.ios .list .list-button.active-state{transition-duration:0ms}.md .menu-list .item-link.active-state{background-color:var(--f7-menu-list-item-bg-color)}:root{--f7-badge-text-color:#fff;--f7-badge-bg-color:#8e8e93;--f7-badge-in-icon-size:16px;--f7-badge-in-icon-font-size:10px;--f7-badge-font-weight:normal;--f7-badge-font-size:12px}.ios{--f7-badge-padding:0 4px;--f7-badge-size:20px;--f7-badge-font-weight:600}.md{--f7-badge-padding:2px 6px;--f7-badge-size:20px;--f7-badge-font-weight:500}.badge{align-content:center;align-items:center;background:var(--f7-badge-bg-color);border-radius:var(--f7-badge-size);box-sizing:border-box;color:var(--f7-badge-text-color);display:inline-flex;font-size:var(--f7-badge-font-size);font-weight:var(--f7-badge-font-weight);height:var(--f7-badge-size);justify-content:center;min-width:var(--f7-badge-size);padding:var(--f7-badge-padding);position:relative;text-align:center;vertical-align:middle}.f7-icons .badge,.framework7-icons .badge,.icon .badge,.material-icons .badge{--f7-badge-font-size:var(--f7-badge-in-icon-font-size);--f7-badge-size:var(--f7-badge-in-icon-size);--f7-badge-padding:0px 2px;font-family:var(--f7-font-family);left:100%;margin-left:-10px;position:absolute;top:-2px}.badge[class*=color-]{--f7-badge-bg-color:var(--f7-theme-color)}:root{--f7-button-font-size:14px;--f7-button-min-width:32px;--f7-button-bg-color:transparent;--f7-button-border-width:0px;--f7-button-raised-box-shadow:0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);--f7-button-raised-pressed-box-shadow:0 3px 6px rgba(0,0,0,0.16),0 3px 6px rgba(0,0,0,0.23);--f7-segmented-raised-divider-color:rgba(0,0,0,0.1);--f7-segmented-strong-padding:2px;--f7-segmented-strong-between-buttons:4px;--f7-segmented-strong-button-font-weight:500;--f7-segmented-strong-button-active-box-shadow:0px 2px 2px rgba(0,0,0,0.25);--f7-segmented-strong-button-text-color:#000;--f7-segmented-strong-button-hover-bg-color:rgba(0,0,0,0.04);--f7-segmented-strong-button-active-text-color:#000;--f7-segmented-strong-button-active-bg-color:#fff}:root .dark,:root.dark{--f7-segmented-strong-button-hover-bg-color:rgba(255,255,255,0.02);--f7-segmented-strong-button-active-bg-color:rgba(255,255,255,0.14);--f7-segmented-strong-button-text-color:#fff;--f7-segmented-strong-button-active-text-color:#fff}.ios{--f7-button-fill-text-color:#fff;--f7-button-text-transform:uppercase;--f7-button-height:28px;--f7-button-padding-horizontal:10px;--f7-button-border-radius:4px;--f7-button-font-weight:600;--f7-button-letter-spacing:0;--f7-button-outline-border-width:2px;--f7-button-large-text-transform:uppercase;--f7-button-large-height:44px;--f7-button-large-font-size:17px;--f7-button-large-font-weight:500;--f7-button-small-outline-border-width:2px;--f7-button-small-text-transform:uppercase;--f7-button-small-height:26px;--f7-button-small-font-size:13px;--f7-button-small-font-weight:600;--f7-segmented-strong-button-text-transform:none;--f7-segmented-strong-button-active-font-weight:600;--f7-button-tonal-bg-color:rgba(var(--f7-theme-color-rgb),0.15);--f7-button-tonal-pressed-bg-color:rgba(var(--f7-theme-color-rgb),0.25);--f7-button-tonal-text-color:var(--f7-theme-color);--f7-segmented-strong-bg-color:rgba(0,0,0,0.07);--f7-segmented-strong-button-pressed-bg-color:rgba(0,0,0,0.07)}.ios .dark,.ios.dark{--f7-segmented-strong-bg-color:rgba(255,255,255,0.1);--f7-segmented-strong-button-pressed-bg-color:rgba(255,255,255,0.04)}.md{--f7-button-text-transform:none;--f7-button-height:40px;--f7-button-padding-horizontal:16px;--f7-button-border-radius:8px;--f7-button-font-weight:500;--f7-button-letter-spacing:normal;--f7-button-outline-border-width:1px;--f7-button-large-text-transform:none;--f7-button-large-height:48px;--f7-button-large-font-size:14px;--f7-button-large-font-weight:500;--f7-button-small-text-transform:none;--f7-button-small-outline-border-width:1px;--f7-button-small-height:32px;--f7-button-small-font-size:14px;--f7-button-small-font-weight:500;--f7-segmented-strong-button-text-transform:none;--f7-segmented-strong-button-active-font-weight:500;--f7-segmented-strong-button-pressed-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-button-fill-pressed-bg-color:transparent;--f7-button-fill-text-color:var(--f7-md-on-primary);--f7-button-outline-border-color:var(--f7-md-outline);--f7-segmented-strong-bg-color:var(--f7-md-surface-variant);--f7-button-tonal-bg-color:var(--f7-md-secondary-container);--f7-button-tonal-pressed-bg-color:transparent;--f7-button-tonal-text-color:var(--f7-md-on-secondary-container)}button{width:100%}.button,button{-webkit-appearance:none;appearance:none}.button{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25);align-items:center;background:none;background-color:var(--f7-button-bg-color);border:var(--f7-button-border-width,0) solid var(--f7-button-border-color,var(--f7-theme-color));border-radius:var(--f7-button-border-radius);box-shadow:var(--f7-button-box-shadow);box-sizing:border-box;color:var(--f7-button-text-color,var(--f7-theme-color));cursor:pointer;display:flex;font-family:inherit;font-size:var(--f7-button-font-size);font-weight:var(--f7-button-font-weight);height:var(--f7-button-height);justify-content:center;letter-spacing:var(--f7-button-letter-spacing);line-height:calc(var(--f7-button-height) - var(--f7-button-border-width, 0)*2);margin:0;min-width:var(--f7-button-min-width);outline:0;overflow:hidden;padding:var(--f7-button-padding-vertical,0) var(--f7-button-padding-horizontal);position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:var(--f7-button-text-transform);vertical-align:middle;white-space:nowrap}.button.active-state{color:var(--f7-button-pressed-text-color,var(--f7-button-text-color,var(--f7-theme-color)))}input[type=button].button,input[type=reset].button,input[type=submit].button{width:100%}.button>i+span,.button>span+span,.button>span~i{margin-left:4px}.navbar .button,.searchbar .button,.subnavbar .button,.toolbar .button{color:var(--f7-button-text-color,var(--f7-theme-color))}.button-round,.ios .button-round-ios,.md .button-round-md{--f7-button-border-radius:var(--f7-button-height)}.button-active,.button-fill,.button.tab-link-active,.ios .button-fill-ios,.md .button-fill-md{--f7-button-bg-color:var(--f7-button-fill-bg-color,var(--f7-theme-color));--f7-button-text-color:var(--f7-button-fill-text-color,#fff);--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.ios .button-active.color-white,.ios .button-fill.color-white,.ios .button.tab-link-active.color-white,.ios .color-white .button-active,.ios .color-white .button-fill,.ios .color-white .button.tab-link-active,.ios .color-white .ios .button-fill-ios,.ios .color-white .md .button-fill-md,.ios .ios .button-fill-ios.color-white,.ios .md .button-fill-md.color-white{--f7-button-text-color:#000}.button-fill,.ios .button-fill-ios,.md .button-fill-md{--f7-button-pressed-bg-color:var(--f7-button-fill-pressed-bg-color)}.button-active,.button.tab-link-active{--f7-button-pressed-bg-color:var(--f7-button-bg-color)}.button-outline,.ios .button-outline-ios,.md .button-outline-md{--f7-button-border-color:var(--f7-button-outline-border-color,var(--f7-theme-color));--f7-button-border-width:var(--f7-button-outline-border-width)}.button-tonal,.ios .button-tonal-ios,.md .button-tonal-md{--f7-button-bg-color:var(--f7-button-tonal-bg-color);--f7-button-text-color:var(--f7-button-tonal-text-color);--f7-button-pressed-bg-color:var(--f7-button-tonal-pressed-bg-color)}.button-large,.ios .button-large-ios,.md .button-large-md{--f7-button-height:var(--f7-button-large-height);--f7-button-font-size:var(--f7-button-large-font-size);--f7-button-font-weight:var(--f7-button-large-font-weight);--f7-button-text-transform:var(--f7-button-large-text-transform)}.button-small,.ios .button-small-ios,.md .button-small-md{--f7-button-outline-border-width:var(--f7-button-small-outline-border-width);--f7-button-height:var(--f7-button-small-height);--f7-button-font-size:var(--f7-button-small-font-size);--f7-button-font-weight:var(--f7-button-small-font-weight);--f7-button-text-transform:var(--f7-button-small-text-transform)}.ios .button-small-ios.button-fill,.ios .button-small.button-fill,.ios .button-small.button-fill-ios{--f7-button-border-width:var(--f7-button-small-outline-border-width);--f7-button-pressed-text-color:var(--f7-theme-color);--f7-button-pressed-bg-color:transparent}.segmented{align-self:center;border-radius:var(--f7-button-border-radius);box-shadow:var(--f7-button-box-shadow);box-sizing:border-box;display:flex;flex-wrap:nowrap}.segmented .button,.segmented button{border-radius:0;flex-shrink:1;min-width:0;width:100%}.segmented .button:first-child{border-radius:var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius)}.segmented .button.button-outline:nth-child(n+2),.segmented .button:not(.button-outline):first-child{border-left:none}.segmented .button:last-child{border-radius:0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0}.segmented .button-round:first-child{border-radius:var(--f7-button-height) 0 0 var(--f7-button-height)}.segmented .button-round:last-child{border-radius:0 var(--f7-button-height) var(--f7-button-height) 0}.segmented .button:first-child:last-child{border-radius:var(--f7-button-border-radius)}.ios .segmented-raised-ios,.md .segmented-raised-md,.segmented-raised{box-shadow:var(--f7-button-raised-box-shadow)}.ios .segmented-raised-ios .button:not(.button-outline),.md .segmented-raised-md .button:not(.button-outline),.segmented-raised .button:not(.button-outline){border-left:1px solid var(--f7-segmented-raised-divider-color)}.button-raised,.ios .button-raised-ios,.md .button-raised-md{--f7-button-box-shadow:var(--f7-button-raised-box-shadow)}.button-raised.active-state,.ios .button-raised-ios.active-state,.md .button-raised-md.active-state{--f7-button-box-shadow:var(--f7-button-raised-pressed-box-shadow)}.ios .segmented-strong-ios,.md .segmented-strong-md,.segmented-strong{--f7-button-bg-color:transparent;--f7-button-hover-bg-color:var(--f7-segmented-strong-button-hover-bg-color);--f7-button-text-color:var(--f7-segmented-strong-button-text-color);--f7-button-font-weight:var(--f7-segmented-strong-button-font-weight);--f7-button-text-transform:var(--f7-segmented-strong-button-text-transform);--f7-button-pressed-bg-color:var(--f7-segmented-strong-button-pressed-bg-color);background:var(--f7-segmented-strong-bg-color);border-radius:calc(var(--f7-button-border-radius) + 2px);box-shadow:none;overflow:hidden;padding:var(--f7-segmented-strong-padding);position:relative}.ios .segmented-strong-ios .button,.md .segmented-strong-md .button,.segmented-strong .button{transform:translateZ(0);z-index:1}.ios .segmented-strong-ios .button,.ios .segmented-strong-ios .button:first-child,.ios .segmented-strong-ios .button:last-child,.md .segmented-strong-md .button,.md .segmented-strong-md .button:first-child,.md .segmented-strong-md .button:last-child,.segmented-strong .button,.segmented-strong .button:first-child,.segmented-strong .button:last-child{border-radius:var(--f7-button-border-radius)}.ios .segmented-strong-ios .button+.button,.md .segmented-strong-md .button+.button,.segmented-strong .button+.button{margin-left:var(--f7-segmented-strong-between-buttons)}.ios .segmented-strong-ios .button.button-active,.ios .segmented-strong-ios .button.tab-link-active,.md .segmented-strong-md .button.button-active,.md .segmented-strong-md .button.tab-link-active,.segmented-strong .button.button-active,.segmented-strong .button.tab-link-active{--f7-button-hover-bg-color:transparent;--f7-button-bg-color:transparent;--f7-button-text-color:var(--f7-segmented-strong-button-active-text-color);--f7-button-font-weight:var(--f7-segmented-strong-button-active-font-weight)}.ios .segmented-strong-ios .segmented-highlight,.md .segmented-strong-md .segmented-highlight,.segmented-strong .segmented-highlight{--f7-segmented-highlight-num:1;--f7-segmented-highlight-active:0;--f7-segmented-highlight-padding:calc(var(--f7-segmented-strong-padding)*2);--f7-segmented-highlight-between:var(--f7-segmented-strong-between-buttons);--f7-segmented-highlight-width:calc((100% - var(--f7-segmented-highlight-padding) - var(--f7-segmented-highlight-between)*(var(--f7-segmented-highlight-num) - 1))/var(--f7-segmented-highlight-num));background-color:var(--f7-segmented-strong-button-active-bg-color);border-radius:var(--f7-button-border-radius);box-shadow:var(--f7-segmented-strong-button-active-box-shadow);height:calc(100% - var(--f7-segmented-strong-padding)*2);left:var(--f7-segmented-strong-padding);position:absolute;top:var(--f7-segmented-strong-padding);transform:translateX(calc(var(--f7-segmented-highlight-active)*100% + var(--f7-segmented-highlight-active)*var(--f7-segmented-highlight-between)));transition:.2s;width:var(--f7-segmented-highlight-width);z-index:0}.button:nth-child(2)~.segmented-highlight{--f7-segmented-highlight-num:2}.button:nth-child(3)~.segmented-highlight{--f7-segmented-highlight-num:3}.button:nth-child(4)~.segmented-highlight{--f7-segmented-highlight-num:4}.button:nth-child(5)~.segmented-highlight{--f7-segmented-highlight-num:5}.button:nth-child(6)~.segmented-highlight{--f7-segmented-highlight-num:6}.button:nth-child(7)~.segmented-highlight{--f7-segmented-highlight-num:7}.button:nth-child(8)~.segmented-highlight{--f7-segmented-highlight-num:8}.button:nth-child(9)~.segmented-highlight{--f7-segmented-highlight-num:9}.button:nth-child(10)~.segmented-highlight{--f7-segmented-highlight-num:10}.button-active:nth-child(2)~.segmented-highlight,.tab-link-active:nth-child(2)~.segmented-highlight{--f7-segmented-highlight-active:1}.button-active:nth-child(3)~.segmented-highlight,.tab-link-active:nth-child(3)~.segmented-highlight{--f7-segmented-highlight-active:2}.button-active:nth-child(4)~.segmented-highlight,.tab-link-active:nth-child(4)~.segmented-highlight{--f7-segmented-highlight-active:3}.button-active:nth-child(5)~.segmented-highlight,.tab-link-active:nth-child(5)~.segmented-highlight{--f7-segmented-highlight-active:4}.button-active:nth-child(6)~.segmented-highlight,.tab-link-active:nth-child(6)~.segmented-highlight{--f7-segmented-highlight-active:5}.button-active:nth-child(7)~.segmented-highlight,.tab-link-active:nth-child(7)~.segmented-highlight{--f7-segmented-highlight-active:6}.button-active:nth-child(8)~.segmented-highlight,.tab-link-active:nth-child(8)~.segmented-highlight{--f7-segmented-highlight-active:7}.button-active:nth-child(9)~.segmented-highlight,.tab-link-active:nth-child(9)~.segmented-highlight{--f7-segmented-highlight-active:8}.button-active:nth-child(10)~.segmented-highlight,.tab-link-active:nth-child(10)~.segmented-highlight{--f7-segmented-highlight-active:9}.ios .segmented-round-ios,.ios .segmented-round-ios .segmented-highlight,.md .segmented-round-md,.md .segmented-round-md .segmented-highlight,.segmented-round,.segmented-round .segmented-highlight{border-radius:var(--f7-button-height)}.subnavbar .segmented{width:100%}.button-preloader{--f7-preloader-color:var(--f7-button-text-color,var(--f7-theme-color));position:relative}.button-preloader:not(.button-large){--f7-preloader-size:calc(var(--f7-button-height) - 6px)}.button-preloader.button-fill{--f7-preloader-color:#fff}.button-preloader>span:not(.preloader){align-content:center;align-items:center;display:inline-flex;justify-content:center;transform:scale(1);transition:.2s}.button-preloader>.preloader{left:50%;margin-left:calc(var(--f7-preloader-size)*-1/2);margin-top:calc(var(--f7-preloader-size)*-1/2);opacity:0;position:absolute;top:50%;transition:.2s;transition-property:opacity;visibility:hidden}.button-preloader.button-loading>span:not(.preloader){opacity:0;transform:scale(0)}.button-preloader.button-loading>.preloader{opacity:1;visibility:visible}.ios .button{transition-duration:.1s}.ios .button.active-state{background-color:var(--f7-button-pressed-bg-color,rgba(var(--f7-theme-color-rgb),.15))}.ios .button-fill,.ios .button-fill-ios{--f7-button-pressed-bg-color:var(--f7-button-fill-pressed-bg-color,var(--f7-theme-color-tint))}.ios .button-small,.ios .button-small-ios{transition-duration:.2s}.md .button{transform:translateZ(0);transition-duration:.3s}.md .button-fill,.md .button-fill-md{--f7-button-pressed-bg-color:var(--f7-button-fill-pressed-bg-color,transparent)}:root{--f7-touch-ripple-black:rgba(0,0,0,0.1);--f7-touch-ripple-white:rgba(255,255,255,0.15);--f7-touch-ripple-color:var(--f7-touch-ripple-black)}.dark{--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.actions-button,.button,.checkbox,.dialog-button,.fab a,.item-link,.link,.list-button,.radio,.ripple,.speed-dial-buttons a,.tab-link{-webkit-user-select:none;user-select:none}.ripple-wave{animation:touch-ripple-in .2s forwards;border-radius:50%;font-size:0;left:0;margin:0;padding:0;pointer-events:none;position:absolute!important;top:0;transform:translateZ(0) scale(0);z-index:-1}.ripple-wave,.ripple-wave.ripple-wave-inset{background-color:var(--f7-touch-ripple-color)}.ripple-wave.ripple-wave-inset{background-image:none}.ripple-wave.ripple-wave-out{animation:touch-ripple-out .25s forwards!important;transform:var(--f7-ripple-transform)}.actions-button .ripple-wave,.button .ripple-wave,.dialog-button .ripple-wave,.fab a .ripple-wave,.item-checkbox .ripple-wave,.item-link .ripple-wave,.item-radio .ripple-wave,.links-list a .ripple-wave,.list label.item-content .ripple-wave,.list-button .ripple-wave,.list.accordion-list .accordion-item-toggle .ripple-wave,.photo-browser .toolbar .link .ripple-wave,.ripple-blur .ripple-wave,.stepper-button .ripple-wave,.stepper-button-minus .ripple-wave,.stepper-button-plus .ripple-wave,.tab-link .ripple-wave,button .ripple-wave{animation:touch-ripple-in-blurred .25s forwards;background-color:initial;background-image:radial-gradient(closest-side circle at 50% 50%,var(--f7-touch-ripple-color) 50%,rgba(255,255,255,0))}.checkbox .ripple-wave,.data-table .sortable-cell .ripple-wave,.radio .ripple-wave{z-index:0}[class*=ripple-color-]{--f7-touch-ripple-color:var(--f7-theme-color-ripple-color)}@keyframes touch-ripple-in-blurred{0%{transform:translateZ(0) scale(.5)}to{transform:var(--f7-ripple-transform)}}@keyframes touch-ripple-in{0%{transform:translateZ(0) scale(0)}to{transform:var(--f7-ripple-transform)}}@keyframes touch-ripple-out{0%{opacity:1}to{opacity:0}}.f7-icons,.material-icons{height:1em;width:1em}i.icon{background-position:50%;background-repeat:no-repeat;background-size:100% auto;display:inline-block;font-style:normal;position:relative;vertical-align:middle}.icon-back:after,.icon-forward:after,.icon-next:after,.icon-prev:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.icon[class*=color-]{color:var(--f7-theme-color)}.ios .icon-back,.ios .icon-forward,.ios .icon-next,.ios .icon-prev{height:20px;line-height:20px;width:12px}.ios .icon-back:after,.ios .icon-forward:after,.ios .icon-next:after,.ios .icon-prev:after{line-height:inherit}.ios .icon-next:after,.ios .icon-prev:after{font-size:16px}.ios .icon-back:after,.ios .icon-prev:after{content:"chevron_left_ios"}.ios .icon-forward:after,.ios .icon-next:after{content:"chevron_right_ios"}.md .icon-back,.md .icon-forward,.md .icon-next,.md .icon-prev{height:24px;width:24px}.md .icon-back:after,.md .icon-forward:after,.md .icon-next:after,.md .icon-prev:after{line-height:1.2}.md .icon-back:after{content:"arrow_left_md"}.md .icon-forward:after{content:"arrow_right_md"}.md .icon-next:after{content:"chevron_right_md"}.md .icon-prev:after{content:"chevron_left_md"}.custom-modal-backdrop{z-index:10500}.actions-backdrop,.custom-modal-backdrop,.dialog-backdrop,.fab-backdrop,.popover-backdrop,.popup-backdrop,.preloader-backdrop,.sheet-backdrop{background:rgba(0,0,0,.4);height:100%;left:0;opacity:0;position:absolute;top:0;transition-duration:.4s;visibility:hidden;width:100%;z-index:13000}.actions-backdrop.not-animated,.custom-modal-backdrop.not-animated,.dialog-backdrop.not-animated,.fab-backdrop.not-animated,.popover-backdrop.not-animated,.popup-backdrop.not-animated,.preloader-backdrop.not-animated,.sheet-backdrop.not-animated{transition-duration:0ms}.actions-backdrop.backdrop-in,.custom-modal-backdrop.backdrop-in,.dialog-backdrop.backdrop-in,.fab-backdrop.backdrop-in,.popover-backdrop.backdrop-in,.popup-backdrop.backdrop-in,.preloader-backdrop.backdrop-in,.sheet-backdrop.backdrop-in{opacity:1;visibility:visible}:root{--f7-dialog-button-text-color:var(--f7-theme-color);--f7-dialog-button-text-align:center}.ios{--f7-dialog-width:270px;--f7-dialog-inner-padding:16px;--f7-dialog-border-radius:13px;--f7-dialog-text-align:center;--f7-dialog-font-size:14px;--f7-dialog-title-text-color:inherit;--f7-dialog-title-font-size:18px;--f7-dialog-title-font-weight:600;--f7-dialog-title-line-height:inherit;--f7-dialog-button-font-size:17px;--f7-dialog-button-height:44px;--f7-dialog-button-letter-spacing:0;--f7-dialog-button-font-weight:400;--f7-dialog-button-text-transform:none;--f7-dialog-button-strong-bg-color:transparent;--f7-dialog-button-strong-text-color:var(--f7-theme-color);--f7-dialog-button-strong-font-weight:500;--f7-dialog-input-border-radius:4px;--f7-dialog-input-font-size:14px;--f7-dialog-input-height:32px;--f7-dialog-input-border-width:1px;--f7-dialog-input-placeholder-color:#a9a9a9;--f7-dialog-preloader-size:34px;--f7-dialog-input-bg-color:#fff;--f7-dialog-bg-color:rgba(255,255,255,0.95);--f7-dialog-bg-color-rgb:255,255,255;--f7-dialog-text-color:#000;--f7-dialog-button-pressed-bg-color:rgba(0,0,0,0.1);--f7-dialog-button-strong-pressed-bg-color:rgba(0,0,0,0.1);--f7-dialog-input-border-color:rgba(0,0,0,0.3);--f7-dialog-border-divider-color:rgba(0,0,0,0.2)}.ios .dark,.ios.dark{--f7-dialog-text-color:#fff;--f7-dialog-bg-color:rgba(45,45,45,0.95);--f7-dialog-bg-color-rgb:45,45,45;--f7-dialog-button-pressed-bg-color:rgba(0,0,0,0.2);--f7-dialog-button-strong-pressed-bg-color:rgba(0,0,0,0.2);--f7-dialog-border-divider-color:rgba(255,255,255,0.15);--f7-dialog-input-border-color:rgba(255,255,255,0.15);--f7-dialog-input-bg-color:rgba(0,0,0,0.5)}.md{--f7-dialog-width:280px;--f7-dialog-inner-padding:24px;--f7-dialog-border-radius:28px;--f7-dialog-text-align:left;--f7-dialog-font-size:14px;--f7-dialog-title-font-size:24px;--f7-dialog-title-font-weight:400;--f7-dialog-title-line-height:1.3;--f7-dialog-button-font-size:14px;--f7-dialog-button-height:40px;--f7-dialog-button-letter-spacing:normal;--f7-dialog-button-font-weight:500;--f7-dialog-button-text-transform:none;--f7-dialog-button-strong-font-weight:500;--f7-dialog-input-border-radius:0px;--f7-dialog-input-font-size:16px;--f7-dialog-input-height:36px;--f7-dialog-input-border-color:transparent;--f7-dialog-input-border-width:0px;--f7-dialog-preloader-size:32px;--f7-dialog-input-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-dialog-button-pressed-bg-color:transparent;--f7-dialog-button-strong-bg-color:var(--f7-theme-color);--f7-dialog-button-strong-text-color:var(--f7-md-on-primary);--f7-dialog-button-strong-pressed-bg-color:transparent;--f7-dialog-bg-color:var(--f7-md-surface-3);--f7-dialog-input-placeholder-color:var(--f7-md-on-surface-variant);--f7-dialog-text-color:var(--f7-md-on-surface-variant);--f7-dialog-title-text-color:var(--f7-md-on-surface)}.dialog{background:var(--f7-dialog-bg-color);border-radius:var(--f7-dialog-border-radius);color:var(--f7-dialog-text-color);display:none;font-size:var(--f7-dialog-font-size);left:50%;margin-left:calc(var(--f7-dialog-width)*-1/2);margin-top:0;opacity:0;overflow:hidden;position:absolute;text-align:var(--f7-dialog-text-align);top:50%;transform:translate3d(0,-50%,0) scale(1.185);transition-duration:.4s;transition-property:transform,opacity;width:var(--f7-dialog-width);will-change:transform,opacity;z-index:13500}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .dialog{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-dialog-bg-color-rgb),.8)}}.dialog.modal-in{opacity:1;transform:translate3d(0,-50%,0) scale(1)}.dialog.modal-out{opacity:0;z-index:13499}.dialog.not-animated{transition-duration:0ms}.dialog-inner{padding:var(--f7-dialog-inner-padding);position:relative}.dialog-title{color:var(--f7-dialog-title-text-color);font-size:var(--f7-dialog-title-font-size);font-weight:var(--f7-dialog-title-font-weight);line-height:var(--f7-dialog-title-line-height)}.dialog-buttons{display:flex;position:relative}.dialog-buttons-vertical .dialog-buttons{display:block;height:auto!important}.dialog-button{box-sizing:border-box;color:var(--f7-dialog-button-text-color);cursor:pointer;display:block;font-size:var(--f7-dialog-button-font-size);font-weight:var(--f7-dialog-button-font-weight);height:var(--f7-dialog-button-height);letter-spacing:var(--f7-dialog-button-letter-spacing);line-height:var(--f7-dialog-button-height);overflow:hidden;position:relative;text-align:var(--f7-dialog-button-text-align);text-overflow:ellipsis;text-transform:var(--f7-dialog-button-text-transform);white-space:nowrap}.dialog-button.active-state{background-color:var(--f7-dialog-button-pressed-bg-color)}.dialog-button-strong{background-color:var(--f7-dialog-button-strong-bg-color);color:var(--f7-dialog-button-strong-text-color);font-weight:var(--f7-dialog-button-strong-font-weight)}.dialog-button-strong.active-state{background-color:var(--f7-dialog-button-strong-pressed-bg-color)}.dialog-no-buttons .dialog-buttons{display:none}.dialog-input-field{position:relative}input.dialog-input[type]{-webkit-appearance:none;appearance:none;background-color:var(--f7-dialog-input-bg-color);border:var(--f7-dialog-input-border-width) solid var(--f7-dialog-input-border-color);border-radius:var(--f7-dialog-input-border-radius);box-shadow:none;box-sizing:border-box;display:block;font-family:inherit;font-size:var(--f7-dialog-input-font-size);height:var(--f7-dialog-input-height);margin:15px 0 0;width:100%}input.dialog-input[type]::placeholder{color:var(--f7-dialog-input-placeholder-color)}.dialog-input-double input.dialog-input{border-radius:var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius) 0 0}.dialog-input-double+.dialog-input-double input.dialog-input{border-radius:0 0 var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius)}.dialog-preloader .preloader{--f7-preloader-size:var(--f7-dialog-preloader-size)}html.with-modal-dialog .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}.ios .dialog.modal-out{transform:translate3d(0,-50%,0) scale(1)}.ios .dialog-inner{border-radius:var(--f7-dialog-border-radius) var(--f7-dialog-border-radius) 0 0}.ios .dialog-inner:after{background-color:var(--f7-dialog-border-divider-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .dialog-title+.dialog-text{margin-top:5px}.ios .dialog-buttons{height:44px;justify-content:center}.ios .dialog-button{-webkit-box-flex:1;-ms-flex:1;padding:0 5px;width:100%}.ios .dialog-button:after{background-color:var(--f7-dialog-border-divider-color);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.ios .dialog-button:first-child{border-radius:0 0 0 var(--f7-dialog-border-radius)}.ios .dialog-button:last-child{border-radius:0 0 var(--f7-dialog-border-radius) 0}.ios .dialog-button:last-child:after{display:none!important}.ios .dialog-button:first-child:last-child{border-radius:0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius)}.ios .dialog-button[class*=color-]{--f7-dialog-button-text-color:var(--f7-theme-color)}.ios .dialog-buttons-vertical .dialog-buttons{height:auto}.ios .dialog-buttons-vertical .dialog-button{border-radius:0}.ios .dialog-buttons-vertical .dialog-button:after{background-color:var(--f7-dialog-border-divider-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.ios .dialog-buttons-vertical .dialog-button:last-child{border-radius:0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius)}.ios .dialog-buttons-vertical .dialog-button:last-child:after{display:none!important}.ios .dialog-no-buttons .dialog-inner{border-radius:var(--f7-dialog-border-radius)}.ios .dialog-no-buttons .dialog-inner:after{display:none!important}.ios .dialog-input-field{margin-top:15px}.ios .dialog-input{padding:0 5px}.ios .dialog-input+.dialog-input{margin-top:5px}.ios .dialog-input-double+.dialog-input-double{margin-top:0}.ios .dialog-input-double+.dialog-input-double .dialog-input{border-top:0;margin-top:0}.ios .dialog-preloader .dialog-text~.preloader,.ios .dialog-preloader .dialog-title~.preloader,.ios .dialog-progress .dialog-text~.progressbar,.ios .dialog-progress .dialog-text~.progressbar-infinite,.ios .dialog-progress .dialog-title~.progressbar,.ios .dialog-progress .dialog-title~.progressbar-infinite{margin-top:15px}.md .dialog.modal-out{transform:translate3d(0,-50%,0) scale(.815)}.md .dialog-title+.dialog-text{margin-top:20px}.md .dialog-text{line-height:1.5}.md .dialog-buttons{box-sizing:border-box;height:64px;justify-content:flex-end;overflow:hidden;padding:0 24px 24px}.md .dialog-button{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25);border:none;border-radius:99px;min-width:64px;padding:0 16px;transform:translateZ(0);transition-duration:.3s}.md .dialog-button+.dialog-button{margin-left:8px}.md .dialog-button-strong{--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.md .dialog-button[class*=color-]{--f7-dialog-button-text-color:var(--f7-theme-color)}.md .dialog-buttons-vertical .dialog-buttons{align-items:flex-end;display:flex;flex-direction:column}.md .dialog-buttons-vertical .dialog-button+.dialog-button{margin-left:0;margin-top:8px}.md .dialog-input{padding:0;position:relative;transition-duration:.2s}.md .dialog-input+.dialog-input{margin-top:16px}.md .dialog-preloader .dialog-inner,.md .dialog-preloader .dialog-title,.md .dialog-progress .dialog-inner,.md .dialog-progress .dialog-title{text-align:center}.md .dialog-preloader .dialog-text~.preloader,.md .dialog-preloader .dialog-title~.preloader{margin-top:20px}.md .dialog-progress .dialog-text~.progressbar,.md .dialog-progress .dialog-text~.progressbar-infinite,.md .dialog-progress .dialog-title~.progressbar,.md .dialog-progress .dialog-title~.progressbar-infinite{margin-top:16px}:root{--f7-popup-border-radius:0px;--f7-popup-tablet-width:630px;--f7-popup-tablet-height:630px;--f7-popup-push-offset:var(--f7-safe-area-top)}.ios{--f7-popup-tablet-border-radius:5px;--f7-popup-transition-duration:400ms;--f7-popup-transition-timing-function:initial;--f7-popup-push-border-radius:10px}.md{--f7-popup-tablet-border-radius:28px;--f7-popup-transition-duration:600ms;--f7-popup-transition-timing-function:cubic-bezier(0,1,0.2,1);--f7-popup-push-border-radius:28px}.popup-backdrop{z-index:10500}.popup,.popup-backdrop-unique{z-index:11000}.popup{background:#fff;border-radius:var(--f7-popup-border-radius);box-sizing:border-box;display:none;height:100%;left:0;overflow:hidden;position:absolute;top:0;transform:translate3d(0,100vh,0);transition-property:transform;transition-timing-function:var(--f7-popup-transition-timing-function);width:100%}.dark .popup,.popup.dark{background:#000}.popup.modal-in,.popup.modal-out{transition-duration:var(--f7-popup-transition-duration)}.popup.not-animated{transition-duration:0ms}.popup.modal-in{display:block;transform:translateZ(0)}.popup.modal-out{transform:translate3d(0,100vh,0)}.popup.swipe-close-to-top.modal-out{transform:translate3d(0,-100vh,0)}@media (min-width:630px) and (min-height:630px){.popup:not(.popup-tablet-fullscreen){--f7-safe-area-top:0px;--f7-safe-area-bottom:0px;border-radius:var(--f7-popup-tablet-border-radius,var(--f7-popup-border-radius));height:var(--f7-popup-tablet-height);left:50%;margin-left:calc(var(--f7-popup-tablet-width)*-1/2);margin-top:calc(var(--f7-popup-tablet-height)*-1/2);top:50%;transform:translate3d(0,100vh,0);width:var(--f7-popup-tablet-width)}.popup:not(.popup-tablet-fullscreen).modal-in{transform:translateZ(0)}.popup:not(.popup-tablet-fullscreen).modal-out{transform:translate3d(0,100vh,0)}.popup:not(.popup-tablet-fullscreen).swipe-close-to-top.modal-out{transform:translate3d(0,-100vh,0)}.popup:not(.popup-tablet-fullscreen).popup-behind{pointer-events:none;transform:translateZ(0) scale(.9)}.popup:not(.popup-tablet-fullscreen).popup-behind.modal-out{transform:translate3d(0,100vh,0) scale(.9)}html.with-modal-popup-push .popup-push:not(.popup-tablet-fullscreen){margin-top:0}}html.with-modal-popup .framework7-root>.panel .page-content,html.with-modal-popup .framework7-root>.view .page-content,html.with-modal-popup .framework7-root>.views .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}html.with-modal-popup-push .popup-push,html.with-modal-popup-push-closing .popup-push{--f7-safe-area-top:0px;border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;height:calc(100% - var(--f7-popup-push-offset) - 10px);top:calc(var(--f7-popup-push-offset) + 10px)}html.with-modal-popup-push .popup-push .page,html.with-modal-popup-push .popup-push .view,html.with-modal-popup-push-closing .popup-push .page,html.with-modal-popup-push-closing .popup-push .view{--f7-safe-area-top:0px}html.with-modal-popup-push .framework7-root,html.with-modal-popup-push-closing .framework7-root{background:#000}html.with-modal-popup-push .framework7-root>.view,html.with-modal-popup-push .framework7-root>.views,html.with-modal-popup-push-closing .framework7-root>.view,html.with-modal-popup-push-closing .framework7-root>.views{transition-duration:var(--f7-popup-transition-duration);transition-timing-function:var(--f7-popup-transition-timing-function)}html.with-modal-popup-push .dark .framework7-root>.view:after,html.with-modal-popup-push .dark .framework7-root>.views:after,html.with-modal-popup-push .dark.framework7-root>.view:after,html.with-modal-popup-push .dark.framework7-root>.views:after,html.with-modal-popup-push .framework7-root>.view.dark:after,html.with-modal-popup-push .framework7-root>.views.dark:after,html.with-modal-popup-push-closing .dark .framework7-root>.view:after,html.with-modal-popup-push-closing .dark .framework7-root>.views:after,html.with-modal-popup-push-closing .dark.framework7-root>.view:after,html.with-modal-popup-push-closing .dark.framework7-root>.views:after,html.with-modal-popup-push-closing .framework7-root>.view.dark:after,html.with-modal-popup-push-closing .framework7-root>.views.dark:after,html.with-modal-popup-push-closing.dark .framework7-root>.view:after,html.with-modal-popup-push-closing.dark .framework7-root>.views:after,html.with-modal-popup-push.dark .framework7-root>.view:after,html.with-modal-popup-push.dark .framework7-root>.views:after{animation:popup-dark-push-overlay-fade-in var(--f7-popup-transition-duration) forwards;background:rgba(255,255,255,.1);border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;content:"";height:100%;left:0;opacity:1;pointer-events:none;position:absolute;top:0;width:100%;z-index:13000}html.with-modal-popup-push .framework7-root>.view,html.with-modal-popup-push .framework7-root>.views{border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;transform:translateZ(0) scale(var(--f7-popup-push-scale,1))!important}html.with-modal-popup-push .popup:after{background:rgba(0,0,0,.4);border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;content:"";height:100%;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transition-duration:var(--f7-popup-transition-duration);transition-timing-function:var(--f7-popup-transition-timing-function);width:100%;z-index:13000}html.with-modal-popup-push .dark .popup:after,html.with-modal-popup-push .dark.popup:after,html.with-modal-popup-push.dark .popup:after{background:rgba(255,255,255,.05)}html.with-modal-popup-push .popup-behind{transform:translateZ(0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind.modal-out{transform:translate3d(0,100vh,0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind:not(.popup-push){border-radius:var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0}html.with-modal-popup-push .popup-behind.popup-push{transform:translate3d(0,calc(-10px - var(--f7-popup-push-offset)),0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind.popup-push.modal-out{transform:translate3d(0,calc(-10px - var(--f7-popup-push-offset) + 100vh),0) scale(var(--f7-popup-push-scale,1))}html.with-modal-popup-push .popup-behind:after{opacity:1;pointer-events:auto}html.with-modal-popup-push-closing .dark .framework7-root>.view:after,html.with-modal-popup-push-closing .dark .framework7-root>.views:after,html.with-modal-popup-push-closing .dark.framework7-root>.view:after,html.with-modal-popup-push-closing .dark.framework7-root>.views:after,html.with-modal-popup-push-closing .framework7-root>.view.dark:after,html.with-modal-popup-push-closing .framework7-root>.views.dark:after,html.with-modal-popup-push-closing.dark .framework7-root>.view:after,html.with-modal-popup-push-closing.dark .framework7-root>.views:after{animation:popup-dark-push-overlay-fade-out var(--f7-popup-transition-duration) forwards;animation-timing-function:var(--f7-popup-transition-timing-function)}@keyframes popup-dark-push-overlay-fade-in{0%{opacity:0}to{opacity:1}}@keyframes popup-dark-push-overlay-fade-out{0%{opacity:1}to{opacity:0}}:root{--f7-login-screen-blocks-max-width:480px;--f7-login-screen-title-text-align:center;--f7-login-screen-title-text-color:inherit;--f7-login-screen-title-letter-spacing:0}.ios{--f7-login-screen-blocks-margin-vertical:25px;--f7-login-screen-transition-timing-function:initial;--f7-login-screen-transition-duration:400ms;--f7-login-screen-title-font-weight:600;--f7-login-screen-title-font-size:28px;--f7-login-screen-content-bg-color:#fff;--f7-login-screen-bg-color:#fff}.ios .dark,.ios.dark{--f7-login-screen-bg-color:#000;--f7-login-screen-content-bg-color:#000}.md{--f7-login-screen-transition-duration:600ms;--f7-login-screen-transition-timing-function:cubic-bezier(0,1,0.2,1);--f7-login-screen-blocks-margin-vertical:24px;--f7-login-screen-title-font-weight:400;--f7-login-screen-title-font-size:28px}.md,.md .dark,.md [class*=color-]{--f7-login-screen-content-bg-color:var(--f7-md-surface);--f7-login-screen-bg-color:var(--f7-md-surface)}.login-screen{background:var(--f7-login-screen-bg-color);box-sizing:border-box;display:none;height:100%;left:0;position:absolute;top:0;transform:translate3d(0,100vh,0);transition-property:transform;transition-timing-function:var(--f7-login-screen-transition-timing-function);width:100%;z-index:11000}.login-screen.modal-in,.login-screen.modal-out{transition-duration:var(--f7-login-screen-transition-duration)}.login-screen.not-animated{transition-duration:0ms}.login-screen.modal-in{display:block;transform:translateZ(0)}.login-screen.modal-out{transform:translate3d(0,100%,0)}.login-screen .page,.login-screen-content,.login-screen-page{background:var(--f7-login-screen-content-bg-color)}.login-screen-content .block,.login-screen-content .list,.login-screen-content .login-screen-title,.login-screen-page .block,.login-screen-page .list,.login-screen-page .login-screen-title{margin:var(--f7-login-screen-blocks-margin-vertical) auto}.login-screen-content .block,.login-screen-content .block-footer,.login-screen-content .block-header,.login-screen-content .list,.login-screen-content .login-screen-title,.login-screen-page .block,.login-screen-page .block-footer,.login-screen-page .block-header,.login-screen-page .list,.login-screen-page .login-screen-title{max-width:var(--f7-login-screen-blocks-max-width)}.login-screen-content .list ul,.login-screen-page .list ul{background:none}.login-screen-content .list ul:after,.login-screen-content .list ul:before,.login-screen-page .list ul:after,.login-screen-page .list ul:before{display:none!important}.login-screen-content .block-footer,.login-screen-content .block-header,.login-screen-page .block-footer,.login-screen-page .block-header{margin-left:auto;margin-right:auto;text-align:center}.login-screen-title{color:var(--f7-login-screen-title-text-color);font-size:var(--f7-login-screen-title-font-size);font-weight:var(--f7-login-screen-title-font-weight);letter-spacing:var(--f7-login-screen-title-letter-spacing);text-align:var(--f7-login-screen-title-text-align)}.login-screen-page,.login-screen>.page,.login-screen>.view>.page{display:flex;flex-direction:column}.login-screen-page .login-screen-content,.login-screen-page .page-content,.login-screen>.page .login-screen-content,.login-screen>.page .page-content,.login-screen>.view>.page .login-screen-content,.login-screen>.view>.page .page-content{height:auto;margin-bottom:auto;margin-top:auto;max-height:100%;width:100%}.dark .login-screen-content .block-strong,.dark .login-screen-content .list ul,.dark .login-screen-page .block-strong,.dark .login-screen-page .list ul,.dark.login-screen-page .block-strong,.dark.login-screen-page .list ul{background-color:initial}:root{--f7-popover-width:260px}.ios{--f7-popover-border-radius:13px;--f7-popover-actions-icon-size:28px;--f7-popover-transition-timing-function:initial;--f7-popover-bg-color:rgba(255,255,255,0.95);--f7-popover-actions-label-text-color:rgba(0,0,0,0.45)}.ios .dark,.ios.dark{--f7-popover-bg-color:rgba(30,30,30,0.95);--f7-popover-actions-label-text-color:rgba(255,255,255,0.55)}.md{--f7-popover-transition-timing-function:cubic-bezier(0,0.8,0.34,1);--f7-popover-border-radius:28px;--f7-popover-actions-icon-size:24px}.md,.md .dark,.md [class*=color-]{--f7-popover-bg-color:var(--f7-md-surface-3);--f7-popover-actions-label-text-color:var(--f7-md-on-surface-variant)}.popover,.popover-backdrop-unique{z-index:13500}.popover{--f7-safe-area-top:0px;--f7-safe-area-left:0px;--f7-safe-area-right:0px;--f7-safe-area-bottom:0px;background-color:var(--f7-popover-bg-color);border-radius:var(--f7-popover-border-radius);display:none;left:0;margin:0;opacity:0;position:absolute;top:0;transition-duration:.3s;width:var(--f7-popover-width);will-change:transform,opacity}.popover .list{margin:0}.popover .list ul{background:none}.popover .list:first-child ul:before,.popover .list:last-child ul:after{display:none!important}.popover .list:first-child li:first-child,.popover .list:first-child li:first-child a,.popover .list:first-child li:first-child>label,.popover .list:first-child ul{border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0}.popover .list:last-child li:last-child,.popover .list:last-child li:last-child a,.popover .list:last-child li:last-child>label,.popover .list:last-child ul{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.popover .list:first-child:last-child li:first-child:last-child,.popover .list:first-child:last-child li:first-child:last-child a,.popover .list:first-child:last-child li:first-child:last-child>label,.popover .list:first-child:last-child ul{border-radius:var(--f7-popover-border-radius)}.popover .list+.list{margin-top:var(--f7-list-margin-vertical)}.popover.modal-in{opacity:1}.popover.not-animated{transition-duration:0ms}.popover,.popover-backdrop{transition-timing-function:var(--f7-popover-transition-timing-function)}.popover-inner{-webkit-overflow-scrolling:touch;overflow:auto}.popover-from-actions .item-link i.icon{font-size:var(--f7-popover-actions-icon-size);height:var(--f7-popover-actions-icon-size);width:var(--f7-popover-actions-icon-size)}.ios .popover-from-actions-strong{font-weight:600}.md .popover-from-actions-strong{font-weight:500}.popover-from-actions-label{align-items:center;color:var(--f7-popover-actions-label-text-color);display:flex;font-size:var(--f7-actions-label-font-size);justify-content:var(--f7-actions-label-justify-content);line-height:1.3;padding:var(--f7-actions-label-padding);position:relative}.popover-from-actions-label:after{background-color:var(--f7-list-item-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.popover-from-actions-label:last-child:after{display:none!important}.md .popover-from-actions-label{justify-content:center}.popover-arrow{left:-26px;overflow:hidden;z-index:100}.popover-arrow,.popover-arrow:after{height:26px;position:absolute;top:0;width:26px}.popover-arrow:after{background:var(--f7-popover-bg-color);border-radius:3px;content:"";left:0;transform:rotate(45deg)}.popover-arrow.on-left{left:-26px}.popover-arrow.on-left:after{left:19px;top:0}.popover-arrow.on-right{left:100%}.popover-arrow.on-right:after{left:-19px;top:0}.popover-arrow.on-top{left:0;top:-26px}.popover-arrow.on-top:after{left:0;top:19px}.popover-arrow.on-bottom{left:0;top:100%}.popover-arrow.on-bottom:after{left:0;top:-19px}.ios .popover{transform:none;transition-property:opacity}.md .popover{transform:scale(.85,.6);transition-property:opacity,transform}.md .popover.modal-in{opacity:1;transform:scale(1)}.md .popover.modal-out{opacity:0;transform:scale(1)}.md .popover-on-top{transform-origin:center bottom}.md .popover-on-top.popover-on-right{transform-origin:left bottom}.md .popover-on-top.popover-on-left{transform-origin:right bottom}.md .popover-on-middle{transform-origin:center center}.md .popover-on-middle.popover-on-right{transform-origin:left center}.md .popover-on-middle.popover-on-left{transform-origin:right center}.md .popover-on-bottom{transform-origin:center top}.md .popover-on-bottom.popover-on-right{transform-origin:left top}.md .popover-on-bottom.popover-on-left{transform-origin:right top}:root{--f7-actions-grid-button-font-size:12px;--f7-actions-grid-button-icon-size:48px}.ios{--f7-actions-transition-timing-function:initial;--f7-actions-border-radius:13px;--f7-actions-grid-button-text-color:#757575;--f7-actions-button-padding:0px;--f7-actions-button-text-align:center;--f7-actions-button-height:57px;--f7-actions-button-height-landscape:44px;--f7-actions-button-font-size:20px;--f7-actions-button-icon-size:28px;--f7-actions-button-justify-content:center;--f7-actions-label-padding:8px 10px;--f7-actions-label-font-weight:400;--f7-actions-label-font-size:13px;--f7-actions-label-justify-content:center;--f7-actions-group-border-color:transparent;--f7-actions-group-margin:8px;--f7-actions-bg-color:rgba(255,255,255,0.95);--f7-actions-bg-color-rgb:255,255,255;--f7-actions-button-border-color:rgba(0,0,0,0.2);--f7-actions-button-pressed-bg-color:rgba(230,230,230,0.9);--f7-actions-button-pressed-bg-color-rgb:230,230,230;--f7-actions-label-text-color:#8a8a8a}.ios .dark,.ios.dark{--f7-actions-bg-color:rgba(45,45,45,0.95);--f7-actions-bg-color-rgb:45,45,45;--f7-actions-button-border-color:rgba(255,255,255,0.15);--f7-actions-button-pressed-bg-color:rgba(50,50,50,0.9);--f7-actions-button-pressed-bg-color-rgb:50,50,50;--f7-actions-label-text-color:rgba(255,255,255,0.55)}.md{--f7-actions-transition-timing-function:cubic-bezier(0,0.8,0.34,1);--f7-actions-border-radius:16px;--f7-actions-button-border-color:transparent;--f7-actions-button-padding:0 16px;--f7-actions-button-text-align:left;--f7-actions-button-height:48px;--f7-actions-button-height-landscape:48px;--f7-actions-button-font-size:16px;--f7-actions-button-icon-size:24px;--f7-actions-button-justify-content:space-between;--f7-actions-label-padding:12px 16px;--f7-actions-label-font-size:14px;--f7-actions-label-font-weight:500;--f7-actions-label-justify-content:flex-start;--f7-actions-group-margin:0px;--f7-actions-button-pressed-bg-color:#e5e5e5}.md .dark,.md.dark{--f7-actions-button-pressed-bg-color:#2e2e2e}.md,.md .dark,.md [class*=color-]{--f7-actions-button-text-color:var(--f7-md-on-surface);--f7-actions-bg-color:var(--f7-md-surface-3);--f7-actions-group-border-color:var(--f7-md-outline);--f7-actions-label-text-color:var(--f7-theme-color);--f7-actions-grid-button-text-color:var(--f7-md-on-surface)}.actions-backdrop-unique{z-index:13500}.actions-modal{-webkit-overflow-scrolling:touch;bottom:0;display:none;left:0;max-height:100%;overflow:auto;position:absolute;transform:translate3d(0,100%,0);transition-property:transform;width:100%;will-change:transform;z-index:13500}.actions-modal.modal-in,.actions-modal.modal-out{transition-duration:.3s}.actions-modal.not-animated{transition-duration:0ms}.ios .actions-modal.modal-in{transform:translate3d(0,calc(var(--f7-safe-area-bottom)*-1),0)}.md .actions-modal.modal-in{transform:translateZ(0)}.actions-modal.modal-out{transform:translate3d(0,100%,0);z-index:13499}@media (min-width:496px){.actions-modal{left:50%;margin-left:-240px;width:480px}}@media (orientation:landscape){.actions-modal{--f7-actions-button-height:var(--f7-actions-button-height-landscape)}}.actions-backdrop,.actions-modal{transition-timing-function:var(--f7-actions-transition-timing-function)}.actions-group{margin:var(--f7-actions-group-margin);overflow:hidden;position:relative;transform:translateZ(0)}.actions-group:after{background-color:var(--f7-actions-group-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.actions-group:last-child:after{display:none!important}.actions-button,.actions-label{box-sizing:border-box;display:block;font-weight:400;margin:0;overflow:hidden;position:relative;text-align:var(--f7-actions-button-text-align);width:100%}.actions-button:after,.actions-label:after{background-color:var(--f7-actions-button-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.actions-button a,.actions-label a{color:inherit;display:block;text-decoration:none}.actions-button{color:var(--f7-actions-button-text-color,var(--f7-theme-color));cursor:pointer;display:flex;font-size:var(--f7-actions-button-font-size);height:var(--f7-actions-button-height);justify-content:var(--f7-actions-button-justify-content);line-height:var(--f7-actions-button-height);padding:var(--f7-actions-button-padding);z-index:10}.actions-button.active-state{background-color:var(--f7-actions-button-pressed-bg-color)!important}.actions-button[class*=color-]{color:var(--f7-theme-color)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .actions-button.active-state{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-actions-button-pressed-bg-color-rgb),.8)}}.actions-button-media{align-items:center;display:flex;flex-shrink:0}.actions-button-media i.icon{font-size:var(--f7-actions-button-icon-size);height:var(--f7-actions-button-icon-size);width:var(--f7-actions-button-icon-size)}.actions-button a,.actions-button-text{overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}.actions-button-text{flex-shrink:1;text-align:var(--f7-actions-button-text-align);width:100%}.actions-label{align-items:center;color:var(--f7-actions-label-text-color);display:flex;font-size:var(--f7-actions-label-font-size);font-weight:var(--f7-actions-label-font-weight);justify-content:var(--f7-actions-label-justify-content);line-height:1.3;min-height:var(--f7-actions-label-min-height,var(--f7-actions-button-height));padding:var(--f7-actions-label-padding)}.actions-label[class*=" color-"]{--f7-actions-label-text-color:var(--f7-theme-color)}.actions-grid .actions-group{display:flex;flex-wrap:wrap;justify-content:flex-start;margin-top:0}.actions-grid .actions-group:not(:last-child){margin-bottom:0}.actions-grid .actions-button,.actions-grid .actions-label{background:none}.actions-grid .actions-button{color:var(--f7-actions-grid-button-text-color);display:block;height:auto;line-height:1;padding:16px;width:33.33333333%}.actions-grid .actions-button:after{display:none!important}.actions-grid .actions-button-media{margin-left:auto!important;margin-right:auto!important}.actions-grid .actions-button-media,.actions-grid .actions-button-media i.icon{height:var(--f7-actions-grid-button-icon-size);width:var(--f7-actions-grid-button-icon-size)}.actions-grid .actions-button-media i.icon{font-size:var(--f7-actions-grid-button-icon-size)}.actions-grid .actions-button-text{font-size:var(--f7-actions-grid-button-font-size);height:1.33em;line-height:1.33em;margin-left:0!important;margin-top:8px;text-align:center!important}.ios .actions-group{border-radius:var(--f7-actions-border-radius)}.ios .actions-button,.ios .actions-label{background:var(--f7-actions-bg-color)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .ios .actions-button,.ios-translucent-modals .ios .actions-label{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-actions-bg-color-rgb),.8)}}.ios .actions-button:first-child,.ios .actions-label:first-child{border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0}.ios .actions-button:last-child,.ios .actions-label:last-child{border-radius:0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius)}.ios .actions-button:last-child:after,.ios .actions-label:last-child:after{display:none!important}.ios .actions-button:first-child:last-child,.ios .actions-label:first-child:last-child{border-radius:var(--f7-actions-border-radius)}.ios .actions-button b,.ios .actions-button.actions-button-strong,.ios .actions-label b,.ios .actions-label.actions-button-strong{font-weight:600}.ios .actions-grid .actions-group{background:var(--f7-actions-bg-color);border-radius:0}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .ios .actions-grid .actions-group{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-actions-bg-color-rgb),.8)}}.ios .actions-grid .actions-group:first-child{border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0}.ios .actions-grid .actions-group:last-child{border-radius:0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius)}.ios .actions-grid .actions-group:first-child:last-child{border-radius:var(--f7-actions-border-radius)}.ios .actions-grid .actions-button,.ios .actions-grid .actions-label{border-radius:0!important}.ios .actions-button-media{margin-left:16px}.ios .actions-button-media+.actions-button-text{margin-left:16px;text-align:left}.md .actions-modal{background-color:var(--f7-actions-bg-color);border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;padding-bottom:var(--f7-safe-area-bottom)}.md .actions-button{transition-duration:.3s}.md .actions-button b,.md .actions-button.actions-button-strong,.md .actions-label b,.md .actions-label.actions-button-strong{font-weight:500}.md .actions-button-media{min-width:40px}.md .actions-button-media+.actions-button-text{margin-left:16px}:root{--f7-sheet-height:260px;--f7-sheet-push-offset:var(--f7-safe-area-top)}.ios{--f7-sheet-border-radius:0px;--f7-sheet-border-color:var(--f7-bars-border-color);--f7-sheet-transition-timing-function:initial;--f7-sheet-push-border-radius:10px;--f7-sheet-transition-duration:300ms;--f7-sheet-bg-color:#fff}.ios .dark,.ios.dark{--f7-sheet-bg-color:#202020}.md{--f7-sheet-border-radius:16px;--f7-sheet-push-border-radius:16px;--f7-sheet-border-color:transparent;--f7-sheet-transition-timing-function:cubic-bezier(0,0.8,0.34,1);--f7-sheet-transition-duration:400ms}.md,.md .dark,.md [class*=color-]{--f7-sheet-bg-color:var(--f7-md-surface)}.sheet-backdrop{z-index:11000}.sheet-backdrop-unique,.sheet-modal{z-index:12500}.sheet-modal{background:var(--f7-sheet-bg-color);bottom:0;box-sizing:border-box;display:none;height:var(--f7-sheet-height);left:0;overflow:hidden;position:absolute;transform:translate3d(0,100%,0);transition-property:transform;width:100%;will-change:transform,opacity}.sheet-modal.modal-in,.sheet-modal.modal-out{transition-duration:var(--f7-sheet-transition-duration)}.sheet-modal.not-animated{transition-duration:0ms}.sheet-modal.modal-in{display:block;transform:translateZ(0)}.sheet-modal.modal-in-breakpoint,.sheet-modal.modal-in-swipe-step{display:block;transform:translate3d(0,var(--f7-sheet-breakpoint,var(--f7-sheet-swipe-step,0)),0)}.sheet-modal.modal-out{transform:translate3d(0,100%,0)}.sheet-modal .sheet-modal-inner{height:100%;overflow:hidden;position:relative}.sheet-modal .toolbar{--f7-safe-area-bottom:0px;position:relative;width:100%}.sheet-modal .toolbar:after,.sheet-modal .toolbar:before{display:none}.sheet-modal .toolbar+.sheet-modal-inner{height:calc(100% - var(--f7-toolbar-height))}.sheet-modal .toolbar+.sheet-modal-inner .page-content{--f7-page-toolbar-top-offset:0px;--f7-page-toolbar-bottom-offset:0px}.sheet-backdrop,.sheet-modal{transition-timing-function:var(--f7-sheet-transition-timing-function)}.sheet-modal-top{border-radius:0 0 var(--f7-sheet-border-radius) var(--f7-sheet-border-radius)}.sheet-modal-top:after{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-sheet-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;transform-style:preserve-3d;width:100%;z-index:15;z-index:700}.sheet-modal-bottom,.sheet-modal:not(.sheet-modal-top){--f7-safe-area-top:0px;border-radius:var(--f7-sheet-border-radius) var(--f7-sheet-border-radius) 0 0}.sheet-modal-bottom:before,.sheet-modal:not(.sheet-modal-top):before{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--f7-sheet-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;transform-style:preserve-3d;width:100%;z-index:15;z-index:700}.sheet-modal-top{--f7-safe-area-bottom:0px;bottom:auto;top:0}.sheet-modal-top,.sheet-modal-top.modal-out{transform:translate3d(0,-100%,0)}.sheet-modal-top .toolbar-bottom{position:absolute}.sheet-modal-top .page-content{padding-top:var(--f7-safe-area-top)}html.with-modal-sheet-push .sheet-modal-push,html.with-modal-sheet-push-closing .sheet-modal-push{--f7-sheet-border-color:transparent;border-radius:var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius) 0 0;overflow:hidden}html.with-modal-sheet-push .sheet-modal-push .page,html.with-modal-sheet-push .sheet-modal-push .view,html.with-modal-sheet-push-closing .sheet-modal-push .page,html.with-modal-sheet-push-closing .sheet-modal-push .view{--f7-safe-area-top:0px}html.with-modal-sheet-push .sheet-modal-push.sheet-modal-top,html.with-modal-sheet-push-closing .sheet-modal-push.sheet-modal-top{border-radius:0 0 var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius)}html.with-modal-sheet-push .framework7-root,html.with-modal-sheet-push-closing .framework7-root{background:#000}html.with-modal-sheet-push .framework7-root>.view,html.with-modal-sheet-push .framework7-root>.views,html.with-modal-sheet-push-closing .framework7-root>.view,html.with-modal-sheet-push-closing .framework7-root>.views{transition-duration:var(--f7-sheet-transition-duration);transition-timing-function:var(--f7-sheet-transition-timing-function)}html.with-modal-sheet-push .dark .framework7-root>.view:after,html.with-modal-sheet-push .dark .framework7-root>.views:after,html.with-modal-sheet-push .dark.framework7-root>.view:after,html.with-modal-sheet-push .dark.framework7-root>.views:after,html.with-modal-sheet-push .framework7-root>.view.dark:after,html.with-modal-sheet-push .framework7-root>.views.dark:after,html.with-modal-sheet-push-closing .dark .framework7-root>.view:after,html.with-modal-sheet-push-closing .dark .framework7-root>.views:after,html.with-modal-sheet-push-closing .dark.framework7-root>.view:after,html.with-modal-sheet-push-closing .dark.framework7-root>.views:after,html.with-modal-sheet-push-closing .framework7-root>.view.dark:after,html.with-modal-sheet-push-closing .framework7-root>.views.dark:after,html.with-modal-sheet-push-closing.dark .framework7-root>.view:after,html.with-modal-sheet-push-closing.dark .framework7-root>.views:after,html.with-modal-sheet-push.dark .framework7-root>.view:after,html.with-modal-sheet-push.dark .framework7-root>.views:after{animation:sheet-dark-push-overlay-fade-in var(--f7-sheet-transition-duration);animation-timing-function:var(--f7-sheet-transition-timing-function);background:rgba(255,255,255,.1);content:"";height:100%;left:0;opacity:1;pointer-events:none;position:absolute;top:0;transition-duration:var(--f7-sheet-transition-duration);transition-timing-function:var(--f7-sheet-transition-timing-function);width:100%;z-index:13000}html.with-modal-sheet-push .framework7-root>.view,html.with-modal-sheet-push .framework7-root>.views{border-radius:var(--f7-sheet-push-border-radius);transform:translateZ(0) scale(var(--f7-sheet-push-scale,1))!important}html.with-modal-sheet-push-closing .dark .framework7-root>.view:after,html.with-modal-sheet-push-closing .dark .framework7-root>.views:after,html.with-modal-sheet-push-closing .dark.framework7-root>.view:after,html.with-modal-sheet-push-closing .dark.framework7-root>.views:after,html.with-modal-sheet-push-closing .framework7-root>.view.dark:after,html.with-modal-sheet-push-closing .framework7-root>.views.dark:after,html.with-modal-sheet-push-closing.dark .framework7-root>.view:after,html.with-modal-sheet-push-closing.dark .framework7-root>.views:after{animation:none;opacity:0}@keyframes sheet-dark-push-overlay-fade-in{0%{opacity:0}to{opacity:1}}.md .sheet-modal .toolbar a.link:not(.tab-link){flex-shrink:0}:root{--f7-toast-font-size:14px;--f7-toast-icon-size:48px;--f7-toast-max-width:568px}.ios{--f7-toast-text-color:#fff;--f7-toast-bg-color:rgba(0,0,0,0.75);--f7-toast-bg-color-rgb:0,0,0;--f7-toast-padding-horizontal:16px;--f7-toast-padding-vertical:12px;--f7-toast-border-radius:8px;--f7-toast-button-min-width:64px}.md{--f7-toast-padding-horizontal:24px;--f7-toast-padding-vertical:14px;--f7-toast-border-radius:16px;--f7-toast-button-min-width:64px}.md,.md .dark,.md [class*=color-]{--f7-toast-text-color:var(--f7-md-on-surface);--f7-toast-bg-color:var(--f7-md-surface-5)}.toast{background-color:var(--f7-toast-bg-color);box-sizing:border-box;color:var(--f7-toast-text-color);font-size:var(--f7-toast-font-size);max-width:var(--f7-toast-max-width);opacity:0;position:absolute;transition-property:transform,opacity;z-index:20000}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .toast{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-toast-bg-color-rgb),.8)}}.toast.modal-in{opacity:1}.toast .toast-content{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;padding:var(--f7-toast-padding-vertical) var(--f7-toast-padding-horizontal)}.toast .toast-text{flex-shrink:1;line-height:20px;min-width:0}.toast .toast-button{flex-shrink:0;margin-bottom:-8px;margin-top:-8px;min-width:var(--f7-toast-button-min-width)}.toast.toast-with-icon .toast-content{display:block;text-align:center}.toast.toast-with-icon .toast-text{text-align:center}.toast.toast-with-icon .toast-icon .f7-icons,.toast.toast-with-icon .toast-icon .material-icons{font-size:var(--f7-toast-icon-size)}.toast.toast-center{top:50%}.toast.toast-top{margin-top:var(--f7-safe-area-top)}.ios .toast{left:0;transition-duration:.3s;width:100%}.ios .toast.toast-top{top:0;transform:translate3d(0,-100%,0)}.ios .toast.toast-top.modal-in{transform:translateZ(0)}.ios .toast.toast-center{border-radius:var(--f7-toast-border-radius);left:50%;width:auto}.ios .toast.toast-center,.ios .toast.toast-center.modal-in{transform:translate3d(-50%,-50%,0)}.ios .toast.toast-bottom{bottom:0;transform:translate3d(0,100%,0)}.ios .toast.toast-bottom.modal-in{transform:translateZ(0)}@media (max-width:568px){.ios .toast.toast-top{margin-top:0}.ios .toast.toast-top .toast-content{padding-top:calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-top))}.ios .toast.toast-bottom .toast-content{padding-bottom:calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-bottom))}}@media (min-width:569px){.ios .toast{border-radius:var(--f7-toast-border-radius);left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2)}.ios .toast.toast-top{top:16px}.ios .toast.toast-center{margin-left:0}.ios .toast.toast-bottom{margin-bottom:calc(16px + var(--f7-safe-area-bottom))}}@media (min-width:1024px){.ios .toast{margin-left:0;width:auto}.ios .toast.toast-horizontal-left{left:16px}.ios .toast.toast-horizontal-right{left:auto;right:16px}.ios .toast.toast-horizontal-center{left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2);width:var(--f7-toast-max-width)}}.ios .toast-button{margin-left:16px;margin-right:calc(var(--f7-button-padding-horizontal)*-1)}.md .toast{border-radius:var(--f7-toast-border-radius);left:8px;transform:scale(.9);transition-duration:.2s;width:calc(100% - 16px)}.md .toast.modal-in,.md .toast.modal-out{transform:scale(1)}.md .toast.toast-top{top:8px}.md .toast.toast-center{left:50%;transform:scale(.9) translate3d(-55%,-55%,0);width:auto}.md .toast.toast-center.modal-in,.md .toast.toast-center.modal-out{transform:scale(1) translate3d(-50%,-50%,0)}.md .toast.toast-bottom{bottom:calc(8px + var(--f7-safe-area-bottom))}@media (min-width:584px){.md .toast{left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2)}.md .toast.toast-center{margin-left:0}}@media (min-width:1024px){.md .toast{margin-left:0;width:auto}.md .toast.toast-horizontal-left{left:24px}.md .toast.toast-horizontal-right{left:auto;right:24px}.md .toast.toast-horizontal-center{left:50%;margin-left:calc(var(--f7-toast-max-width)*-1/2);width:var(--f7-toast-max-width)}.md .toast.toast-bottom{bottom:calc(24px + var(--f7-safe-area-bottom))}.md .toast.toast-top{top:24px}}.md .toast-button{margin-left:16px;margin-right:-8px}:root{--f7-preloader-modal-padding:8px;--f7-preloader-modal-bg-color:rgba(0,0,0,0.8)}.ios{--f7-preloader-color:#6c6c6c;--f7-preloader-size:20px;--f7-preloader-modal-preloader-size:34px;--f7-preloader-modal-border-radius:5px}.md{--f7-preloader-color:#757575;--f7-preloader-size:32px;--f7-preloader-modal-preloader-size:32px;--f7-preloader-modal-border-radius:4px}.preloader{display:inline-block;font-size:0;height:var(--f7-preloader-size);position:relative;vertical-align:middle;width:var(--f7-preloader-size)}.preloader .preloader-inner{display:block;height:100%;position:relative;width:100%}.preloader-backdrop{background:none;opacity:0;visibility:visible;z-index:14000}.preloader-modal{background:var(--f7-preloader-modal-bg-color);border-radius:var(--f7-preloader-modal-border-radius);left:50%;padding:var(--f7-preloader-modal-padding);position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);z-index:14500}.preloader-modal .preloader{--f7-preloader-size:var(--f7-preloader-modal-preloader-size);display:block!important}.with-modal-preloader .page-content,.with-modal-preloader.page-content,html.with-modal-preloader .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}.preloader[class*=color-]{--f7-preloader-color:var(--f7-theme-color)}.preloader.color-white{--f7-preloader-color:#fff}.preloader.color-black{--f7-preloader-color:#000}.ios .preloader{color:var(--f7-preloader-color)}.ios .preloader-inner{animation:ios-preloader-spin 1s steps(8) infinite}.ios .preloader-inner-line{background:currentColor;border-radius:100px;display:block;height:33.33%;left:50%;position:absolute;top:50%;transform-origin:center 150%;width:11.6%}.ios .preloader-multi-color .preloader-inner-line,.ios .preloader.color-multi .preloader-inner-line{animation:ios-preloader-multicolor 3s linear infinite}.ios .preloader-inner-line:first-child{opacity:.27;transform:translate(-50%,-150%) rotate(0deg)}.ios .preloader-inner-line:nth-child(2){opacity:.35285714;transform:translate(-50%,-150%) rotate(45deg)}.ios .preloader-inner-line:nth-child(3){opacity:.43571429;transform:translate(-50%,-150%) rotate(90deg)}.ios .preloader-inner-line:nth-child(4){opacity:.51857143;transform:translate(-50%,-150%) rotate(135deg)}.ios .preloader-inner-line:nth-child(5){opacity:.60142857;transform:translate(-50%,-150%) rotate(180deg)}.ios .preloader-inner-line:nth-child(6){opacity:.68428571;transform:translate(-50%,-150%) rotate(225deg)}.ios .preloader-inner-line:nth-child(7){opacity:.76714286;transform:translate(-50%,-150%) rotate(270deg)}.ios .preloader-inner-line:nth-child(8){opacity:.85;transform:translate(-50%,-150%) rotate(315deg)}@keyframes ios-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes ios-preloader-multicolor{0%,to{background-color:#2196f3}25%{background-color:#ff3b30}50%{background-color:#4cd964}75%{background-color:#ff9500}}.md .preloader{color:var(--f7-preloader-color)}.md .preloader-inner{animation:md-preloader-rotate 1.4s linear infinite}.md .preloader-inner circle{fill:none;stroke:currentColor;stroke-dasharray:100px;stroke-dashoffset:80px;stroke-width:4;animation:md-preloader-circle-rotate 5.6s ease-in-out infinite;transform:rotate(-90deg);transform-origin:18px 18px}.md .preloader-multi-color circle,.md .preloader.color-multi circle{animation:md-preloader-circle-rotate 5.6s ease-in-out infinite,md-preloader-multicolor 5.6s ease-in-out infinite}@keyframes md-preloader-multicolor{0%,to{stroke:#4285f4}75%{stroke:#1b9a59}50%{stroke:#f7c223}25%{stroke:#de3e35}}@keyframes md-preloader-rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes md-preloader-circle-rotate{0%{stroke-dashoffset:100px;transform:rotate(-90deg)}12.5%{stroke-dashoffset:25px;transform:rotate(-90deg)}25%{stroke-dashoffset:100px;transform:rotate(180deg)}25.1%{stroke-dashoffset:100px;transform:rotate(-180deg)}37.5%{stroke-dashoffset:25px;transform:rotate(-180deg)}50%{stroke-dashoffset:100px;transform:rotate(90deg)}50.1%{stroke-dashoffset:100px;transform:rotate(90deg)}62.5%{stroke-dashoffset:25px;transform:rotate(90deg)}75%{stroke-dashoffset:100px;transform:rotate(1turn)}75.1%{stroke-dashoffset:100px;transform:rotate(0deg)}87.5%{stroke-dashoffset:25px;transform:rotate(0deg)}to{stroke-dashoffset:100px;transform:rotate(270deg)}}.ios{--f7-progressbar-height:4px;--f7-progressbar-border-radius:4px;--f7-progressbar-bg-color:rgba(0,0,0,0.3)}.ios .dark,.ios.dark{--f7-progressbar-bg-color:rgba(255,255,255,0.3)}.md{--f7-progressbar-height:4px;--f7-progressbar-border-radius:0px}.md,.md .dark,.md [class*=color-]{--f7-progressbar-bg-color:rgba(var(--f7-theme-color-rgb),0.5)}.progressbar,.progressbar-infinite{background:var(--f7-progressbar-bg-color,rgba(var(--f7-theme-color-rgb),.5));border-radius:var(--f7-progressbar-border-radius);display:block;height:var(--f7-progressbar-height);overflow:hidden;position:relative;transform-origin:center top;transform-style:preserve-3d;width:100%}.progressbar{vertical-align:middle}.progressbar span{background-color:var(--f7-progressbar-progress-color,var(--f7-theme-color));height:100%;left:0;position:absolute;top:0;transform:translate3d(-100%,0,0);transition-duration:.15s;width:100%}.progressbar-infinite{z-index:15000}.progressbar-infinite:after,.progressbar-infinite:before{background-color:var(--f7-progressbar-progress-color,var(--f7-theme-color));content:"";display:block;height:100%;left:0;position:absolute;top:0;transform:translateZ(0);transform-origin:left center;width:100%}.progressbar-infinite.color-multi{background:none!important}.progressbar-in{animation:progressbar-in .15s forwards}.progressbar-out{animation:progressbar-out .15s forwards}.framework7-root>.progressbar,.framework7-root>.progressbar-infinite,.page>.progressbar,.page>.progressbar-infinite,.panel>.progressbar,.panel>.progressbar-infinite,.popup>.progressbar,.popup>.progressbar-infinite,.view>.progressbar,.view>.progressbar-infinite,.views>.progressbar,.views>.progressbar-infinite,body>.progressbar,body>.progressbar-infinite{border-radius:0!important;left:0;position:absolute;top:0;transform-origin:center top!important;z-index:15000}@keyframes progressbar-in{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes progressbar-out{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}.ios .progressbar-infinite:before{animation:ios-progressbar-infinite 1s linear infinite}.ios .progressbar-infinite:after{display:none}.ios .progressbar-infinite.color-multi:before{animation:ios-progressbar-infinite-multicolor 3s linear infinite;background-image:linear-gradient(90deg,#4cd964,#5ac8fa,#007aff,#34aadc,#5856d6,#ff2d55,#5856d6,#34aadc,#007aff,#5ac8fa,#4cd964);background-repeat:repeat-x;background-size:25% 100%;width:400%}@keyframes ios-progressbar-infinite{0%{transform:translate3d(-100%,0,0)}to{transform:translate3d(100%,0,0)}}@keyframes ios-progressbar-infinite-multicolor{0%{transform:translateZ(0)}to{transform:translate3d(-50%,0,0)}}.md .progressbar-infinite:before{animation:md-progressbar-infinite-1 2s linear infinite}.md .progressbar-infinite:after{animation:md-progressbar-infinite-2 2s linear infinite}.md .progressbar-infinite.color-multi:before{animation:md-progressbar-infinite-multicolor-bg 3s step-end infinite;background:none}.md .progressbar-infinite.color-multi:after{animation:md-progressbar-infinite-multicolor-fill 3s linear infinite;background:none;transform-origin:center center}@keyframes md-progressbar-infinite-1{0%{transform:translateX(-10%) scaleX(.1)}25%{transform:translateX(30%) scaleX(.6)}50%{transform:translateX(100%) scaleX(1)}to{transform:translateX(100%) scaleX(1)}}@keyframes md-progressbar-infinite-2{0%{transform:translateX(-100%) scaleX(1)}40%{transform:translateX(-100%) scaleX(1)}75%{transform:translateX(60%) scaleX(.35)}90%{transform:translateX(100%) scaleX(.1)}to{transform:translateX(100%) scaleX(.1)}}@keyframes md-progressbar-infinite-multicolor-bg{0%{background-color:#4caf50}25%{background-color:#f44336}50%{background-color:#2196f3}75%{background-color:#ffeb3b}}@keyframes md-progressbar-infinite-multicolor-fill{0%{background-color:#f44336;transform:scaleX(0)}24.9%{background-color:#f44336;transform:scaleX(1)}25%{background-color:#2196f3;transform:scaleX(0)}49.9%{background-color:#2196f3;transform:scaleX(1)}50%{background-color:#ffeb3b;transform:scaleX(0)}74.9%{background-color:#ffeb3b;transform:scaleX(1)}75%{background-color:#4caf50;transform:scaleX(0)}to{background-color:#4caf50;transform:scaleX(1)}}.ios{--f7-sortable-handler-width:36px;--f7-sortable-sorting-item-box-shadow:0px 2px 8px rgba(0,0,0,0.6);--f7-sortable-handler-color:rgba(0,0,0,0.22);--f7-sortable-sorting-item-bg-color:rgba(255,255,255,0.8)}.ios .dark,.ios.dark{--f7-sortable-sorting-item-bg-color:rgba(50,50,50,0.8);--f7-sortable-handler-color:rgba(255,255,255,0.55)}.md{--f7-sortable-handler-width:42px;--f7-sortable-sorting-item-box-shadow:none}.md,.md .dark,.md [class*=color-]{--f7-sortable-handler-color:var(--f7-md-on-surface-variant);--f7-sortable-sorting-item-bg-color:var(--f7-md-surface-3)}.sortable .sortable-handler{align-items:center;cursor:move;display:flex;height:100%;justify-content:center;opacity:0;overflow:hidden;pointer-events:none;position:absolute;right:var(--f7-safe-area-right);top:0;transition-duration:.3s;width:var(--f7-sortable-handler-width);z-index:10}.sortable .sortable-handler:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-sortable-handler-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;height:20px;letter-spacing:normal;line-height:1;overflow:hidden;text-align:center;text-rendering:optimizeLegibility;text-transform:none;transform:translateX(10px);transition-duration:.3s;white-space:nowrap;width:100%;width:18px}.sortable li.sorting{background:var(--f7-sortable-sorting-item-bg-color);box-shadow:var(--f7-sortable-sorting-item-box-shadow);transition-duration:0ms;z-index:50}.sortable li.sorting .item-inner:after{display:none!important}.sortable-opposite .sortable-handler{left:var(--f7-safe-area-right);right:auto}.sortable-opposite .sortable-handler:after{transform:translateX(-10px)}.sortable-opposite .item-content,.sortable-opposite.links-list li a,.sortable.simple-list li,.sortable:not(.sortable-opposite) .item-inner{transition-duration:.3s;transition-property:all}.sortable-sorting li{transition-duration:.3s}.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler{opacity:1;pointer-events:auto;touch-action:none}.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler:after{transform:translateX(0)}.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner:before,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-title-row:before,.sortable-enabled:not(.sortable-opposite).links-list li:not(.no-sorting):not(.disallow-sorting)>a:before{display:none}.links-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) a,.no-chevron .sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,.simple-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting),.sortable-enabled :not(.sortable-opposite).no-chevron .item-link .item-inner,.sortable-enabled.no-chevron:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-inner,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link.no-chevron .item-inner{padding-right:calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right))}.links-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) a,.simple-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting),.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .item-content{padding-left:calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right))}.ios .sortable-handler:after{content:"sort_ios"}.md .sortable-handler:after{content:"sort_md"}:root{--f7-swipeout-delete-button-bg-color:#ff3b30;--f7-swipeout-button-text-color:#fff;--f7-swipeout-button-padding-vertical:0px;--f7-swipeout-button-bg-color:rgba(0,0,0,0.22)}:root .dark,:root.dark{--f7-swipeout-button-bg-color:rgba(255,255,255,0.55)}.ios{--f7-swipeout-button-padding-horizontal:30px;--f7-swipeout-button-font-size:inherit;--f7-swipeout-button-font-weight:inherit}.md{--f7-swipeout-button-padding-horizontal:24px;--f7-swipeout-button-font-size:14px;--f7-swipeout-button-font-weight:500}.md .dark,.md.dark{--f7-swipeout-button-text-color:#000}.swipeout{overflow:hidden;transform-style:preserve-3d}.swipeout-deleting{transition-duration:.3s}.swipeout-deleting .swipeout-content{transform:translateX(-100%)}.swipeout-transitioning .swipeout-actions-left a,.swipeout-transitioning .swipeout-actions-right a,.swipeout-transitioning .swipeout-content,.swipeout-transitioning .swipeout-overswipe{transition-duration:.3s;transition-property:transform,left}.swipeout-content{position:relative;z-index:10}.swipeout-overswipe{transition-duration:.2s;transition-property:left}.swipeout-actions-left,.swipeout-actions-right{direction:ltr;display:flex;height:100%;position:absolute;top:0}.swipeout-actions-left>a,.swipeout-actions-left>button,.swipeout-actions-left>div,.swipeout-actions-left>span,.swipeout-actions-right>a,.swipeout-actions-right>button,.swipeout-actions-right>div,.swipeout-actions-right>span{align-items:center;background:var(--f7-swipeout-button-bg-color);color:var(--f7-swipeout-button-text-color);display:flex;font-size:var(--f7-swipeout-button-font-size);font-weight:var(--f7-swipeout-button-font-weight);left:0;padding:var(--f7-swipeout-button-padding-vertical) var(--f7-swipeout-button-padding-horizontal);position:relative}.swipeout-actions-left>a:after,.swipeout-actions-left>button:after,.swipeout-actions-left>div:after,.swipeout-actions-left>span:after,.swipeout-actions-right>a:after,.swipeout-actions-right>button:after,.swipeout-actions-right>div:after,.swipeout-actions-right>span:after{background:inherit;content:"";height:100%;pointer-events:none;position:absolute;top:0;transform:translateZ(0);width:600%;z-index:-1}.swipeout-actions-left .swipeout-delete,.swipeout-actions-right .swipeout-delete{background:var(--f7-swipeout-delete-button-bg-color)}.swipeout-actions-right{right:0;transform:translateX(calc(100% + 1px))}.swipeout-actions-right>a:after,.swipeout-actions-right>button:after,.swipeout-actions-right>div:after,.swipeout-actions-right>span:after{left:100%}.swipeout-actions-right>a:last-child,.swipeout-actions-right>button:last-child,.swipeout-actions-right>div:last-child,.swipeout-actions-right>span:last-child{padding-right:calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-right))}.swipeout-actions-left{left:0;transform:translateX(calc(-100% - 1px))}.swipeout-actions-left>a:after,.swipeout-actions-left>button:after,.swipeout-actions-left>div:after,.swipeout-actions-left>span:after{right:100%}.swipeout-actions-left>a:first-child,.swipeout-actions-left>button:first-child,.swipeout-actions-left>div:first-child,.swipeout-actions-left>span:first-child{padding-left:calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-left))}.swipeout-actions-left [class*=color-],.swipeout-actions-right [class*=color-]{--f7-swipeout-button-bg-color:var(--f7-theme-color)}:root{--f7-accordion-chevron-icon-down:"chevron_down";--f7-accordion-chevron-icon-up:"chevron_up"}.accordion-item-toggle{cursor:pointer}.list.accordion-list .accordion-item-toggle{overflow:hidden;position:relative;transition-duration:.3s}.list.accordion-list .accordion-item-toggle.active-state{background-color:var(--f7-list-link-pressed-bg-color);transition-duration:.3s}.list.accordion-list .accordion-item-toggle.active-state>.item-inner:after{background-color:initial}.list.accordion-list .accordion-item-toggle .item-inner{transition-duration:.3s;transition-property:background-color}.list.accordion-list .accordion-item-toggle .item-inner:after{transition-duration:.3s}.list.accordion-list .accordion-item-toggle .ripple-wave{z-index:0}.accordion-item .item-link .item-inner:after{transition-duration:.3s}.accordion-item .block,.accordion-item .list{margin-bottom:0;margin-top:0}.accordion-item .block>h1:first-child,.accordion-item .block>h2:first-child,.accordion-item .block>h3:first-child,.accordion-item .block>h4:first-child,.accordion-item .block>p:first-child{margin-top:10px}.accordion-item .block>h1:last-child,.accordion-item .block>h2:last-child,.accordion-item .block>h3:last-child,.accordion-item .block>h4:last-child,.accordion-item .block>p:last-child{margin-bottom:10px}.accordion-item-opened .accordion-item-toggle .item-inner:after,.accordion-item-opened>.item-link .item-inner:after{background-color:initial}.list li.accordion-item ul{padding-left:0}.accordion-item-content{font-size:14px;height:0;overflow:hidden;position:relative;transition-duration:.3s}.accordion-item-opened>.accordion-item-content{height:auto}html.device-android-4 .accordion-item-content{transform:none}.list .accordion-item-toggle .item-inner:before{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-list-chevron-icon-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-size:var(--f7-list-chevron-icon-font-size);font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;pointer-events:none;position:absolute;right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;white-space:nowrap;width:100%}.list:not(.accordion-opposite) .accordion-item-toggle .item-inner{padding-right:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.accordion-opposite .accordion-item-toggle .item-inner,.accordion-opposite .accordion-item-toggle.item-link .item-inner,.accordion-opposite .accordion-item>.item-link>.item-content>.item-inner,.accordion-opposite .accordion-item>.item-link>.item-inner{padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right))}.accordion-opposite .accordion-item>.item-link>.item-title-row{padding-right:0}.accordion-opposite .accordion-item-toggle .item-inner:before,.accordion-opposite .accordion-item-toggle.item-link .item-inner:before,.accordion-opposite .accordion-item>.item-link .item-title-row:before,.accordion-opposite .accordion-item>.item-link>.item-content>.item-inner:before,.accordion-opposite .accordion-item>.item-link>.item-inner:before{display:none}.accordion-opposite .accordion-item-toggle.item-content,.accordion-opposite .accordion-item-toggle>.item-content,.accordion-opposite .accordion-item>.item-content,.accordion-opposite .accordion-item>.item-link>.item-content,.accordion-opposite.links-list .accordion-item>a{padding-left:calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));position:relative}.accordion-opposite .accordion-item-toggle.item-content:before,.accordion-opposite .accordion-item-toggle>.item-content:before,.accordion-opposite .accordion-item>.item-content:before,.accordion-opposite .accordion-item>.item-link>.item-content:before,.accordion-opposite.links-list .accordion-item>a:before{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-list-chevron-icon-color);content:var(--f7-accordion-chevron-icon-down);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-size:var(--f7-list-chevron-icon-font-size);font-style:normal;font-weight:400;height:100%;height:8px;left:calc((var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal))/2 + var(--f7-safe-area-left));letter-spacing:normal;line-height:1;line-height:8px;margin-top:-4px;pointer-events:none;position:absolute;text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;transform:translateX(-50%);white-space:nowrap;width:100%;width:14px}.list .accordion-item-toggle.active-state{background-color:var(--f7-list-link-pressed-bg-color)}.accordion-item.media-item .accordion-item-toggle .item-title-row:before,.accordion-item.media-item>.item-link .item-title-row:before,.links-list .accordion-item>a:before,.list .accordion-item-toggle .item-inner:before,.list:not(.media-list) .accordion-item:not(.media-item) .accordion-item-toggle .item-inner:before,.list:not(.media-list) .accordion-item:not(.media-item)>.item-link .item-inner:before,.media-list .accordion-item .accordion-item-toggle .item-title-row:before,.media-list .accordion-item>.item-link .item-title-row:before{content:var(--f7-accordion-chevron-icon-down);height:8px;line-height:8px;margin-top:-4px;width:14px}.accordion-item-opened.media-item .accordion-item-toggle .item-title-row:before,.accordion-item-opened.media-item>.item-link .item-title-row:before,.accordion-opposite .accordion-item-opened .accordion-item-toggle.item-content:before,.accordion-opposite .accordion-item-opened .accordion-item-toggle>.item-content:before,.accordion-opposite .accordion-item-opened>.item-content:before,.accordion-opposite .accordion-item-opened>.item-link>.item-content:before,.accordion-opposite .links-list .accordion-item-opened>a:before,.links-list .accordion-item-opened>a:before,.list .accordion-item-toggle.accordion-item-opened .item-inner:before,.list:not(.media-list) .accordion-item-opened:not(.media-item) .accordion-item-toggle .item-inner:before,.list:not(.media-list) .accordion-item-opened:not(.media-item)>.item-link .item-inner:before,.media-list .accordion-item-opened .accordion-item-toggle .item-title-row:before,.media-list .accordion-item-opened>.item-link .item-title-row:before{content:var(--f7-accordion-chevron-icon-up);height:8px;line-height:8px;margin-top:-4px;width:14px}.ios{--f7-contacts-list-title-font-size:inherit;--f7-contacts-list-title-font-weight:600;--f7-contacts-list-title-height:22px;--f7-contacts-list-title-text-color:#000;--f7-contacts-list-title-bg-color:#f7f7f7}.ios .dark,.ios.dark{--f7-contacts-list-title-text-color:#fff;--f7-contacts-list-title-bg-color:#323234}.md{--f7-contacts-list-title-font-size:20px;--f7-contacts-list-title-font-weight:500;--f7-contacts-list-title-height:48px;--f7-contacts-list-title-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-contacts-list-title-text-color:var(--f7-theme-color)}.contacts-list{--f7-list-margin-vertical:0px}.contacts-list .list-group-title,.contacts-list li.list-group-title{background-color:var(--f7-contacts-list-title-bg-color,var(--f7-list-group-title-bg-color));color:var(--f7-contacts-list-title-text-color,var(--f7-theme-color));font-size:var(--f7-contacts-list-title-font-size,var(--f7-list-group-title-font-size));font-weight:var(--f7-contacts-list-title-font-weight,var(--f7-list-group-title-font-weight));height:var(--f7-contacts-list-title-height,var(--f7-list-group-title-height));line-height:var(--f7-contacts-list-title-height,var(--f7-list-group-title-height))}.contacts-list .list-group:first-child ul:before,.contacts-list .list-group:last-child ul:after{display:none!important}.md .contacts-list .list-group-title{overflow:visible;pointer-events:none;width:40px}.md .contacts-list .list-group-title+li{margin-top:calc(var(--f7-contacts-list-title-height)*-1)}.md .contacts-list .list-group-title:before{display:none!important}.md .contacts-list li:not(.list-group-title){padding-left:40px}:root{--f7-list-index-width:16px;--f7-list-index-font-size:11px;--f7-list-index-font-weight:600;--f7-list-index-item-height:14px;--f7-list-index-label-font-weight:500}.ios{--f7-list-index-label-text-color:#fff;--f7-list-index-label-size:44px;--f7-list-index-label-font-size:17px;--f7-list-index-skip-dot-size:6px}.md{--f7-list-index-label-size:56px;--f7-list-index-label-font-size:20px;--f7-list-index-skip-dot-size:4px}.md,.md .dark,.md [class*=color-]{--f7-list-index-label-bg-color:var(--f7-md-primary);--f7-list-index-label-text-color:var(--f7-md-on-primary)}.list-index{bottom:0;cursor:pointer;position:absolute;right:var(--f7-safe-area-right);text-align:center;top:0;-webkit-user-select:none;user-select:none;width:var(--f7-list-index-width);z-index:10}.list-index:before{content:"";height:100%;position:absolute;right:100%;top:0;width:20px}.list-index ul{align-items:center;color:var(--f7-list-index-text-color,var(--f7-theme-color));display:flex;flex-direction:column;font-size:var(--f7-list-index-font-size);font-weight:var(--f7-list-index-font-weight);height:100%;justify-content:center}.list-index li,.list-index ul{flex-shrink:0;list-style:none;margin:0;padding:0;position:relative;width:100%}.list-index li{display:block;height:var(--f7-list-index-item-height);line-height:var(--f7-list-index-item-height)}.list-index .list-index-skip-placeholder:after{background:var(--f7-list-index-text-color,var(--f7-theme-color));border-radius:50%;content:"";height:var(--f7-list-index-skip-dot-size);left:50%;margin-left:calc(var(--f7-list-index-skip-dot-size)*-1/2);margin-top:calc(var(--f7-list-index-skip-dot-size)*-1/2);position:absolute;top:50%;width:var(--f7-list-index-skip-dot-size)}.list-index .list-index-label{background-color:var(--f7-list-index-label-bg-color,var(--f7-theme-color));bottom:0;color:var(--f7-list-index-label-text-color);font-size:var(--f7-list-index-label-font-size);font-weight:var(--f7-list-index-label-font-weight);height:var(--f7-list-index-label-size);line-height:var(--f7-list-index-label-size);position:absolute;right:100%;text-align:center;width:var(--f7-list-index-label-size)}.navbars~.page>.list-index,.navbar~.list-index,.navbar~.page>.list-index{top:var(--f7-navbar-height)}.ios .navbars~.toolbar-top-ios .md .navbar~.toolbar-top-md~.list-index,.ios .navbar~.toolbar-top-ios~.list-index,.navbars~.toolbar-top~.list-index,.navbar~.toolbar-top~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-toolbar-height))}.ios .navbars~.toolbar-top-ios .md .navbar~.toolbar-top-md.tabbar-icons~.list-index,.ios .navbar~.toolbar-top-ios.tabbar-icons~.list-index,.navbars~.toolbar-top.tabbar-icons~.list-index,.navbar~.toolbar-top.tabbar-icons~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height))}.navbars~.subnavbar~.list-index,.navbar~.subnavbar~.list-index,.page-with-subnavbar .navbar~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-subnavbar-height))}.ios .toolbar-bottom-ios~* .page>.list-index,.ios .toolbar-bottom-ios~.list-index,.ios .toolbar-bottom-ios~.page>.list-index,.md .toolbar-bottom-md~* .page>.list-index,.md .toolbar-bottom-md~.list-index,.md .toolbar-bottom-md~.page>.list-index,.toolbar-bottom~* .page>.list-index,.toolbar-bottom~.list-index,.toolbar-bottom~.page>.list-index{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.ios .toolbar-bottom-ios.tabbar-icons~* .page>.list-index,.ios .toolbar-bottom-ios.tabbar-icons~.list-index,.ios .toolbar-bottom-ios.tabbar-icons~.page>.list-index,.md .toolbar-bottom-md.tabbar-icons~* .page>.list-index,.md .toolbar-bottom-md.tabbar-icons~.list-index,.md .toolbar-bottom-md.tabbar-icons~.page>.list-index,.toolbar-bottom.tabbar-icons~* .page>.list-index,.toolbar-bottom.tabbar-icons~.list-index,.toolbar-bottom.tabbar-icons~.page>.list-index{bottom:calc(var(--f7-tabbar-icons-height) + var(--f7-safe-area-bottom))}.ios .list-index .list-index-label{border-radius:50%;margin-bottom:calc(var(--f7-list-index-label-size)*-1/2);margin-right:calc(var(--f7-list-index-width) - 1px)}.ios .list-index .list-index-label:before{background-color:inherit;border-radius:50% 0 50% 50%;content:"";height:100%;left:0;position:absolute;top:0;transform:rotate(45deg);width:100%;z-index:-1}.md .list-index .list-index-label{border-radius:50% 50% 0 50%}:root{--f7-timeline-inner-block-margin-vertical:16px;--f7-timeline-divider-margin-horizontal:16px;--f7-timeline-horizontal-date-height:34px;--f7-timeline-year-height:24px;--f7-timeline-year-font-weight:inherit;--f7-timeline-month-height:24px;--f7-timeline-month-font-size:inherit;--f7-timeline-month-font-weight:inherit;--f7-timeline-item-text-font-weight:inherit;--f7-timeline-item-subtitle-font-weight:inherit}.ios{--f7-timeline-divider-color:#bbb;--f7-timeline-padding-horizontal:16px;--f7-timeline-margin-vertical:35px;--f7-timeline-item-inner-border-radius:7px;--f7-timeline-item-time-font-size:13px;--f7-timeline-item-title-font-size:17px;--f7-timeline-item-title-line-height:inherit;--f7-timeline-item-title-font-weight:600;--f7-timeline-item-subtitle-font-size:15px;--f7-timeline-item-subtitle-line-height:inherit;--f7-timeline-item-text-font-size:inherit;--f7-timeline-item-text-color:inherit;--f7-timeline-item-text-line-height:inherit;--f7-timeline-year-font-size:16px;--f7-timeline-horizontal-item-padding:10px;--f7-timeline-item-inner-bg-color:#fff;--f7-timeline-item-time-text-color:rgba(0,0,0,0.45);--f7-timeline-horizontal-item-border-color:rgba(0,0,0,0.22);--f7-timeline-horizontal-item-date-border-color:rgba(0,0,0,0.22)}.ios .dark,.ios.dark{--f7-timeline-horizontal-item-border-color:rgba(255,255,255,0.15);--f7-timeline-horizontal-item-date-border-color:rgba(255,255,255,0.15);--f7-timeline-item-inner-bg-color:#1c1c1d;--f7-timeline-item-time-text-color:rgba(255,255,255,0.55)}.md{--f7-timeline-padding-horizontal:16px;--f7-timeline-margin-vertical:32px;--f7-timeline-item-inner-border-radius:16px;--f7-timeline-item-time-font-size:13px;--f7-timeline-item-title-font-size:16px;--f7-timeline-item-title-line-height:inherit;--f7-timeline-item-title-font-weight:400;--f7-timeline-item-subtitle-font-size:inherit;--f7-timeline-item-subtitle-line-height:inherit;--f7-timeline-item-text-font-size:inherit;--f7-timeline-item-text-line-height:inherit;--f7-timeline-year-font-size:16px;--f7-timeline-horizontal-item-padding:12px;--f7-timeline-horizontal-item-date-border-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-timeline-divider-color:var(--f7-md-outline);--f7-timeline-item-text-color:var(--f7-md-on-surface);--f7-timeline-horizontal-item-border-color:var(--f7-md-outline);--f7-timeline-item-inner-bg-color:var(--f7-md-surface-1);--f7-timeline-item-time-text-color:var(--f7-md-on-surface-variant)}.timeline{box-sizing:border-box;margin:var(--f7-timeline-margin-vertical) 0;padding:0 var(--f7-timeline-padding-horizontal);padding-bottom:0;padding-left:calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-left));padding-right:calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-right));padding-top:0}.block-strong .timeline{margin:0;padding:0}.timeline-item{box-sizing:border-box;display:flex;justify-content:flex-start;overflow:hidden;padding:2px 0 var(--f7-timeline-padding-horizontal);position:relative}.timeline-item:last-child{padding-bottom:2px}.timeline-item-date{box-sizing:border-box;flex-shrink:0;text-align:right;width:50px}.timeline-item-date small{font-size:10px}.timeline-item-content{flex-shrink:10;margin:2px;min-width:0;position:relative}.timeline-item-content .block,.timeline-item-content .card,.timeline-item-content .list,.timeline-item-content.block,.timeline-item-content.card,.timeline-item-content.list{margin:0;width:100%}.timeline-item-content .block+.block,.timeline-item-content .block+.card,.timeline-item-content .block+.list,.timeline-item-content .card+.block,.timeline-item-content .card+.card,.timeline-item-content .card+.list,.timeline-item-content .list+.block,.timeline-item-content .list+.card,.timeline-item-content .list+.list{margin:var(--f7-timeline-inner-block-margin-vertical) 0 0}.timeline-item-content h1:first-child,.timeline-item-content h2:first-child,.timeline-item-content h3:first-child,.timeline-item-content h4:first-child,.timeline-item-content ol:first-child,.timeline-item-content p:first-child,.timeline-item-content ul:first-child{margin-top:0}.timeline-item-content h1:last-child,.timeline-item-content h2:last-child,.timeline-item-content h3:last-child,.timeline-item-content h4:last-child,.timeline-item-content ol:last-child,.timeline-item-content p:last-child,.timeline-item-content ul:last-child{margin-bottom:0}.timeline-item-inner{background:var(--f7-timeline-item-inner-bg-color);border-radius:var(--f7-timeline-item-inner-border-radius);box-sizing:border-box;padding:8px var(--f7-timeline-padding-horizontal)}.timeline-item-inner+.timeline-item-inner{margin-top:var(--f7-timeline-inner-block-margin-vertical)}.timeline-item-inner .block{color:inherit;padding:0}.timeline-item-inner .block-strong{margin:0;padding-left:0;padding-right:0}.timeline-item-inner .block-strong:after,.timeline-item-inner .block-strong:before,.timeline-item-inner .list ul:after,.timeline-item-inner .list ul:before{display:none!important}.timeline-item-divider{background:var(--f7-timeline-divider-color);border-radius:50%;flex-shrink:0;height:10px;margin:3px var(--f7-timeline-divider-margin-horizontal) 0;position:relative;width:1px;width:10px}.timeline-item-divider:after,.timeline-item-divider:before{background:inherit;content:" ";height:100vh;left:50%;position:absolute;transform:translate3d(-50%,0,0);width:1px}.timeline-item-divider:after{top:100%}.timeline-item-divider:before{bottom:100%}.timeline-item:first-child .timeline-item-divider:before,.timeline-item:last-child .timeline-item-divider:after{display:none}.timeline-item-time{color:var(--f7-timeline-item-time-text-color);font-size:var(--f7-timeline-item-time-font-size);margin-top:var(--f7-timeline-inner-block-margin-vertical)}.timeline-item-time:first-child,.timeline-item-time:last-child,.timeline-item-title+.timeline-item-time{margin-top:0}.timeline-item-title{font-size:var(--f7-timeline-item-title-font-size);font-weight:var(--f7-timeline-item-title-font-weight);line-height:var(--f7-timeline-item-title-line-height)}.timeline-item-subtitle{font-size:var(--f7-timeline-item-subtitle-font-size);font-weight:var(--f7-timeline-item-subtitle-font-weight);line-height:var(--f7-timeline-item-subtitle-line-height)}.timeline-item-text{color:var(--f7-timeline-item-text-color);font-size:var(--f7-timeline-item-text-font-size);font-weight:var(--f7-timeline-item-text-font-weight);line-height:var(--f7-timeline-item-text-line-height)}.timeline-sides .timeline-item,.timeline-sides .timeline-item-right{margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.timeline-sides .timeline-item .timeline-item-date,.timeline-sides .timeline-item-right .timeline-item-date{text-align:right}.timeline-sides .timeline-item-left,.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.timeline-sides .timeline-item-left .timeline-item-date,.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:left}@media (min-width:480px){.xsmall-sides .timeline-item,.xsmall-sides .timeline-item-right{margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.xsmall-sides .timeline-item .timeline-item-date,.xsmall-sides .timeline-item-right .timeline-item-date{text-align:right}.xsmall-sides .timeline-item-left,.xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.xsmall-sides .timeline-item-left .timeline-item-date,.xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:left}}@media (min-width:568px){.small-sides .timeline-item,.small-sides .timeline-item-right{margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.small-sides .timeline-item .timeline-item-date,.small-sides .timeline-item-right .timeline-item-date{text-align:right}.small-sides .timeline-item-left,.small-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.small-sides .timeline-item-left .timeline-item-date,.small-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:left}}@media (min-width:768px){.medium-sides .timeline-item,.medium-sides .timeline-item-right{margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.medium-sides .timeline-item .timeline-item-date,.medium-sides .timeline-item-right .timeline-item-date{text-align:right}.medium-sides .timeline-item-left,.medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.medium-sides .timeline-item-left .timeline-item-date,.medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:left}}@media (min-width:1024px){.large-sides .timeline-item,.large-sides .timeline-item-right{margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.large-sides .timeline-item .timeline-item-date,.large-sides .timeline-item-right .timeline-item-date{text-align:right}.large-sides .timeline-item-left,.large-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.large-sides .timeline-item-left .timeline-item-date,.large-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:left}}@media (min-width:1200px){.xlarge-sides .timeline-item,.xlarge-sides .timeline-item-right{margin-left:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px);margin-right:0}.xlarge-sides .timeline-item .timeline-item-date,.xlarge-sides .timeline-item-right .timeline-item-date{text-align:right}.xlarge-sides .timeline-item-left,.xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n){flex-direction:row-reverse;margin-left:0;margin-right:calc(50% - var(--f7-timeline-divider-margin-horizontal)*2/2 - 55px)}.xlarge-sides .timeline-item-left .timeline-item-date,.xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date{text-align:left}}.timeline-horizontal{display:flex;height:100%;margin:0;padding:0;padding-left:var(--f7-safe-area-left);padding-right:0;position:relative}.timeline-horizontal .timeline-item{display:block;flex-shrink:0;height:100%;margin:0;padding:0;padding-bottom:var(--f7-timeline-horizontal-item-padding);padding-top:var(--f7-timeline-horizontal-date-height)!important;position:relative;width:100/3vw}.timeline-horizontal .timeline-item:after{background-color:var(--f7-timeline-horizontal-item-border-color);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.timeline-horizontal .timeline-item-date{background-color:var(--f7-bars-bg-color);color:var(--f7-bars-text-color);height:var(--f7-timeline-horizontal-date-height);left:0;line-height:var(--f7-timeline-horizontal-date-height);padding:0 var(--f7-timeline-horizontal-item-padding);position:absolute;text-align:left;top:0;width:auto;width:100%}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .timeline-horizontal .timeline-item-date{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-bars-bg-color-rgb),var(--f7-bars-translucent-opacity))}}.timeline-horizontal .timeline-item-date:after{background-color:var(--f7-timeline-horizontal-item-date-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.timeline-horizontal .timeline-item-content{-webkit-overflow-scrolling:touch;height:calc(100vw - var(--f7-timeline-horizontal-item-padding));margin:0;overflow:auto;padding:var(--f7-timeline-horizontal-item-padding)}.timeline-horizontal .timeline-item-divider{display:none}.timeline-horizontal .timeline-month:last-child .timeline-item:last-child:after,.timeline-horizontal>.timeline-item:last-child:after{display:none!important}.timeline-horizontal.timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.timeline-cols-20 .timeline-item{width:5vw}@media (min-width:480px){.timeline-horizontal.xsmall-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.xsmall-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.xsmall-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.xsmall-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.xsmall-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.xsmall-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.xsmall-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.xsmall-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.xsmall-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.xsmall-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.xsmall-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.xsmall-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.xsmall-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.xsmall-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.xsmall-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.xsmall-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.xsmall-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.xsmall-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.xsmall-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.xsmall-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:568px){.timeline-horizontal.small-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.small-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.small-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.small-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.small-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.small-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.small-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.small-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.small-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.small-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.small-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.small-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.small-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.small-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.small-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.small-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.small-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.small-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.small-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.small-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:768px){.timeline-horizontal.medium-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.medium-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.medium-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.medium-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.medium-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.medium-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.medium-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.medium-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.medium-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.medium-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.medium-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.medium-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.medium-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.medium-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.medium-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.medium-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.medium-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.medium-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.medium-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.medium-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:1024px){.timeline-horizontal.large-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.large-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.large-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.large-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.large-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.large-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.large-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.large-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.large-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.large-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.large-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.large-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.large-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.large-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.large-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.large-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.large-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.large-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.large-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.large-timeline-cols-20 .timeline-item{width:5vw}}@media (min-width:1200px){.timeline-horizontal.xlarge-timeline-cols-1 .timeline-item{width:100vw}.timeline-horizontal.xlarge-timeline-cols-2 .timeline-item{width:50vw}.timeline-horizontal.xlarge-timeline-cols-3 .timeline-item{width:33.33333vw}.timeline-horizontal.xlarge-timeline-cols-4 .timeline-item{width:25vw}.timeline-horizontal.xlarge-timeline-cols-5 .timeline-item{width:20vw}.timeline-horizontal.xlarge-timeline-cols-6 .timeline-item{width:16.66667vw}.timeline-horizontal.xlarge-timeline-cols-7 .timeline-item{width:14.28571vw}.timeline-horizontal.xlarge-timeline-cols-8 .timeline-item{width:12.5vw}.timeline-horizontal.xlarge-timeline-cols-9 .timeline-item{width:11.11111vw}.timeline-horizontal.xlarge-timeline-cols-10 .timeline-item{width:10vw}.timeline-horizontal.xlarge-timeline-cols-11 .timeline-item{width:9.09091vw}.timeline-horizontal.xlarge-timeline-cols-12 .timeline-item{width:8.33333vw}.timeline-horizontal.xlarge-timeline-cols-13 .timeline-item{width:7.69231vw}.timeline-horizontal.xlarge-timeline-cols-14 .timeline-item{width:7.14286vw}.timeline-horizontal.xlarge-timeline-cols-15 .timeline-item{width:6.66667vw}.timeline-horizontal.xlarge-timeline-cols-16 .timeline-item{width:6.25vw}.timeline-horizontal.xlarge-timeline-cols-17 .timeline-item{width:5.88235vw}.timeline-horizontal.xlarge-timeline-cols-18 .timeline-item{width:5.55556vw}.timeline-horizontal.xlarge-timeline-cols-19 .timeline-item{width:5.26316vw}.timeline-horizontal.xlarge-timeline-cols-20 .timeline-item{width:5vw}}.timeline-year{padding-top:var(--f7-timeline-year-height)}.timeline-year:after{background-color:var(--f7-timeline-horizontal-item-border-color);bottom:auto;content:"";display:block;height:100%;left:auto;position:absolute;right:0;top:0;transform:scaleX(calc(1/var(--f7-device-pixel-ratio)));transform-origin:100% 50%;width:1px;z-index:15}.timeline-year:last-child:after{display:none!important}.timeline-month{padding-top:var(--f7-timeline-month-height)}.timeline-month .timeline-item:before{background-color:var(--f7-timeline-horizontal-item-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.timeline-month,.timeline-year{box-sizing:border-box;display:flex;flex-shrink:0;height:100%;position:relative}.timeline-year-title{font-size:var(--f7-timeline-year-font-size);font-weight:var(--f7-timeline-year-font-weight);height:var(--f7-timeline-year-height);line-height:var(--f7-timeline-year-height)}.timeline-month-title{font-size:var(--f7-timeline-month-font-size);font-weight:var(--f7-timeline-month-font-weight);height:var(--f7-timeline-month-height);line-height:var(--f7-timeline-month-height)}.timeline-month-title,.timeline-year-title{background-color:var(--f7-bars-bg-color);box-sizing:border-box;color:var(--f7-bars-text-color);left:0;padding:0 var(--f7-timeline-horizontal-item-padding);position:absolute;top:0;width:100%}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .timeline-month-title,.ios-translucent-bars .timeline-year-title{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-bars-bg-color-rgb),var(--f7-bars-translucent-opacity))}}.timeline-month-title span,.timeline-year-title span{display:inline-block;left:calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-left));position:sticky}.timeline-month-title span{margin-top:-2px}.timeline-year:first-child .timeline-month:first-child .timeline-month-title,.timeline-year:first-child .timeline-year-title,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-month-title{left:calc(var(--f7-safe-area-left)*-1);right:0;width:auto}.timeline-horizontal .timeline-item:first-child,.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-item:first-child,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-month-title+.timeline-item{overflow:visible}.timeline-horizontal .timeline-item:first-child .timeline-item-date,.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child .timeline-item-date,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-item:first-child .timeline-item-date,.timeline-year:first-child .timeline-year-title+.timeline-month .timeline-month-title+.timeline-item .timeline-item-date{left:calc(0px - var(--f7-safe-area-left));padding-left:calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-left));right:0;width:auto}.timeline-year:last-child .timeline-month:last-child .timeline-month-title,.timeline-year:last-child .timeline-year-title{right:calc(0px - var(--f7-safe-area-right));width:auto}.timeline-horizontal .timeline-item:last-child,.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child{overflow:visible}.timeline-horizontal .timeline-item:last-child .timeline-item-date,.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child .timeline-item-date{left:0;right:calc(0px - var(--f7-safe-area-right));width:auto}.ios .block-strong .timeline-item-inner{border:1px solid rgba(0,0,0,.1);border-radius:3px}.ios .timeline-year-title span{margin-top:3px}.md .timeline-year-title span{margin-top:2px}.tabs .tab{display:none}.tabs .tab-active{display:block}.tabs-animated-wrap{height:100%;overflow:hidden;position:relative;width:100%}.tabs-animated-wrap>.tabs{display:flex;height:100%;transition-duration:.3s}.tabs-animated-wrap>.tabs>.tab{display:block;flex-shrink:0;width:100%}.tabs-animated-wrap.not-animated>.tabs{transition-duration:0ms}swiper-container.tabs{height:100%}swiper-container.tabs>.tab{display:block;touch-action:pan-y}.page>.tabs{height:100%}:root{--f7-panel-width:260px;--f7-panel-backdrop-bg-color:rgba(0,0,0,0.3);--f7-panel-bg-color:#fff}:root .dark,:root.dark{--f7-panel-bg-color:#000}.ios{--f7-panel-collapsed-width:58px;--f7-panel-transition-duration:400ms;--f7-panel-transition-timing-function:initial}.md{--f7-panel-collapsed-width:60px;--f7-panel-transition-duration:400ms;--f7-panel-transition-timing-function:cubic-bezier(0,0.8,0.34,1)}.panel-backdrop{background-color:var(--f7-panel-backdrop-bg-color);height:100%;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transform:translateZ(0);transition-duration:var(--f7-panel-transition-duration);transition-property:transform,opacity;visibility:hidden;width:100%;z-index:5999}.panel-backdrop .with-panel,.panel-backdrop .with-panel-closing{visibility:visible}.panel-backdrop.not-animated{transition-duration:0ms!important}.panel{background-color:var(--f7-panel-bg-color);box-sizing:border-box;height:100%;overflow:visible;position:absolute;top:0;transform:translateZ(0);transition-duration:var(--f7-panel-transition-duration);transition-property:transform;width:var(--f7-panel-width);z-index:1000}.panel:not(.panel-in):not(.panel-out):not(.panel-in-breakpoint):not(.panel-in-collapsed):not(.panel-in-swipe){display:none}.panel:after{content:"";height:100%;opacity:0;pointer-events:none;position:absolute;top:0;transition-duration:var(--f7-panel-transition-duration);transition-property:transform,opacity;width:20px;z-index:5999}.panel.not-animated,.panel.not-animated:after,.panel.panel-reveal.not-animated~.view,.panel.panel-reveal.not-animated~.views{transition-duration:0ms!important}.panel.panel-resizing{-webkit-user-select:none;user-select:none}.panel.panel-resizing,.panel.panel-resizing:after,.panel.panel-resizing~.view,.panel.panel-resizing~.views{transition-duration:0ms!important}.panel-cover,.panel-floating{z-index:6000}.panel-floating{border-radius:16px;bottom:calc(8px + var(--f7-safe-area-bottom, 0px));height:auto;overflow:hidden;top:calc(8px + var(--f7-safe-area-top, 0px))}.panel-floating .view,.panel-floating .views{--f7-safe-area-top:0px;--f7-safe-area-bottom:0px}.page .panel-floating{bottom:calc(8px + var(--f7-safe-area-bottom, 0px));top:calc(8px + var(--f7-page-navbar-offset, 0px))}.page .panel-floating .page{--f7-page-navbar-offset:0px}.page .panel-floating .navbars~*,.page .panel-floating .navbar~*{--f7-page-navbar-offset:calc(var(--f7-navbar-height))}.panel-left{left:0;width:var(--f7-panel-left-width,var(--f7-panel-width))}.panel-left.panel-cover,.panel-left.panel-floating,.panel-left.panel-push{transform:translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width))*-1),0,0)}.panel-right{right:0;width:var(--f7-panel-right-width,var(--f7-panel-width))}.panel-right.panel-cover,.panel-right.panel-floating,.panel-right.panel-push{transform:translate3d(var(--f7-panel-right-width,var(--f7-panel-width)),0,0)}.panel-in-breakpoint{transform:translateZ(0)!important;transition-duration:0ms}.panel-in-breakpoint:after{display:none}.panel-in-breakpoint.panel-cover,.panel-in-breakpoint.panel-floating{z-index:5900}.panel,.panel-backdrop{transition-timing-function:var(--f7-panel-transition-timing-function)}html.with-panel-closing .framework7-root>.view,html.with-panel-closing .views,html.with-panel-left-push .framework7-root>.view,html.with-panel-left-push .views,html.with-panel-left-reveal .framework7-root>.view,html.with-panel-left-reveal .views,html.with-panel-right-push .framework7-root>.view,html.with-panel-right-push .views,html.with-panel-right-reveal .framework7-root>.view,html.with-panel-right-reveal .views{transition-duration:var(--f7-panel-transition-duration);transition-property:transform;transition-timing-function:var(--f7-panel-transition-timing-function)}html.with-panel .framework7-root>.view .page-content,html.with-panel .framework7-root>.views .page-content{-webkit-overflow-scrolling:auto;overflow:hidden}html.with-panel-left-push .framework7-root>.view,html.with-panel-left-push .views,html.with-panel-left-reveal .framework7-root>.view,html.with-panel-left-reveal .views{transform:translate3d(var(--f7-panel-left-width,var(--f7-panel-width)),0,0)}html.with-panel-right-push .framework7-root>.view,html.with-panel-right-push .views,html.with-panel-right-reveal .framework7-root>.view,html.with-panel-right-reveal .views{transform:translate3d(calc(var(--f7-panel-right-width, var(--f7-panel-width))*-1),0,0)}.page>.panel-backdrop{z-index:290}.page .panel-push,.page>.panel-reveal{z-index:1}.page>.panel-cover,.page>.panel-floating{z-index:300}.page.with-panel-closing>.page-content,.page.with-panel-closing>.tabs,.page.with-panel-left-push>.page-content,.page.with-panel-left-push>.tabs,.page.with-panel-left-reveal>.page-content,.page.with-panel-left-reveal>.tabs,.page.with-panel-right-push>.page-content,.page.with-panel-right-push>.tabs,.page.with-panel-right-reveal>.page-content,.page.with-panel-right-reveal>.tabs{transition-duration:var(--f7-panel-transition-duration);transition-property:transform;transition-timing-function:var(--f7-panel-transition-timing-function)}.page.with-panel-left-push>.page-content,.page.with-panel-left-push>.tabs,.page.with-panel-left-reveal>.page-content,.page.with-panel-left-reveal>.tabs{transform:translate3d(var(--f7-panel-left-width,var(--f7-panel-width)),0,0)}.page.with-panel-right-push>.page-content,.page.with-panel-right-push>.tabs,.page.with-panel-right-reveal>.page-content,.page.with-panel-right-reveal>.tabs{transform:translate3d(calc(var(--f7-panel-right-width, var(--f7-panel-width))*-1),0,0)}.with-panel-closing .panel-backdrop-in{opacity:0;pointer-events:auto;visibility:visible}.with-panel-left-cover .panel-backdrop-in,.with-panel-left-floating .panel-backdrop-in,.with-panel-left-push .panel-backdrop-in,.with-panel-left-reveal .panel-backdrop-in,.with-panel-right-cover .panel-backdrop-in,.with-panel-right-floating .panel-backdrop-in,.with-panel-right-push .panel-backdrop-in,.with-panel-right-reveal .panel-backdrop-in{opacity:1;pointer-events:auto;visibility:visible}.with-panel-left-push .panel-backdrop-in,.with-panel-left-reveal .panel-backdrop-in{transform:translate3d(var(--f7-panel-left-width,var(--f7-panel-width)),0,0)}.with-panel-right-push .panel-backdrop-in,.with-panel-right-reveal .panel-backdrop-in{transform:translate3d(calc(var(--f7-panel-right-width, var(--f7-panel-width))*-1),0,0)}.with-panel-left-cover .panel-left,.with-panel-left-push .panel-left{transform:translateZ(0)}.with-panel-left-floating .panel-left{transform:translate3d(8px,0,0)}.with-panel-right-cover .panel-right,.with-panel-right-push .panel-right{transform:translateZ(0)}.with-panel-right-floating .panel-right{transform:translate3d(-8px,0,0)}.panel-resizable{max-width:100%}.panel-resize-handler{cursor:col-resize;display:none;height:100%;position:absolute;top:0;width:6px;z-index:6000}.panel-resizable .panel-resize-handler{display:block}.panel-left.panel-cover .panel-resize-handler,.panel-left.panel-floating .panel-resize-handler{right:-3px}.panel-left.panel-push .panel-resize-handler,.panel-left.panel-reveal .panel-resize-handler{right:0}.panel-right.panel-cover .panel-resize-handler,.panel-right.panel-floating .panel-resize-handler{left:-3px}.panel-right.panel-push .panel-resize-handler,.panel-right.panel-reveal .panel-resize-handler{left:0}.panel-left.panel-in-collapsed~.page-content,.panel-left.panel-in-collapsed~.tabs,.panel-left.panel-in-collapsed~.view,.panel-left.panel-in-collapsed~.views{margin-left:var(--f7-panel-left-collapsed-width,var(--f7-panel-collapsed-width))}.page.with-panel-left-reveal .panel-left.panel-in-collapsed~.page-content,.page.with-panel-left-reveal .panel-left.panel-in-collapsed~.tabs,html.with-panel-left-reveal .panel-left.panel-in-collapsed~.view,html.with-panel-left-reveal .panel-left.panel-in-collapsed~.views{transform:translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width)) - var(--f7-panel-left-collapsed-width, var(--f7-panel-collapsed-width))),0,0)}.panel-right.panel-in-collapsed~.page-content,.panel-right.panel-in-collapsed~.tabs,.panel-right.panel-in-collapsed~.view,.panel-right.panel-in-collapsed~.views{margin-right:var(--f7-panel-right-collapsed-width,var(--f7-panel-collapsed-width))}.page.with-panel-right-reveal .panel-right.panel-in-collapsed~.page-content,.page.with-panel-right-reveal .panel-right.panel-in-collapsed~.tabs,html.with-panel-right-reveal .panel-right.panel-in-collapsed~.view,html.with-panel-right-reveal .panel-right.panel-in-collapsed~.views{transform:translate3d(calc(var(--f7-panel-right-collapsed-width, var(--f7-panel-collapsed-width)) - var(--f7-panel-right-width, var(--f7-panel-width))),0,0)}html.with-modal-popup-push .framework7-root,html.with-modal-popup-push-closing .framework7-root{--f7-panelPushScale:var(--f7-popup-push-scale);--f7-panelPushTransitionDuration:var(--f7-popup-transition-duration);--f7-panelPushTransitionTimingFunction:var(--f7-popup-transition-timing-function);--f7-panelPushBorderRadius:var(--f7-popup-push-border-radius)}html.with-modal-sheet-push .framework7-root,html.with-modal-sheet-push-closing .framework7-root{--f7-panelPushScale:var(--f7-sheet-push-scale);--f7-panelPushTransitionDuration:var(--f7-sheet-transition-duration);--f7-panelPushTransitionTimingFunction:var(--f7-sheet-transition-timing-function);--f7-panelPushBorderRadius:var(--f7-sheet-push-border-radius)}html.with-modal-popup-push .framework7-root>.panel-in,html.with-modal-popup-push .framework7-root>.panel-out,html.with-modal-sheet-push .framework7-root>.panel-in,html.with-modal-sheet-push .framework7-root>.panel-out{transition-duration:var(--f7-panelPushTransitionDuration);transition-timing-function:var(--f7-panelPushTransitionTimingFunction)}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-left,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-left,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-left,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-left,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-left,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-left{border-top-left-radius:var(--f7-panelPushBorderRadius);transform:scale(var(--f7-panelPushScale,1));transform-origin:50vw center}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-left .view,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-left .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-left .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-left .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-left .view{border-top-left-radius:var(--f7-panelPushBorderRadius)}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-right,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-right,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-right,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-right,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-right,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-right{border-top-right-radius:var(--f7-panelPushBorderRadius);transform:scale(var(--f7-panelPushScale,1));transform-origin:calc(var(--f7-panel-left-width, var(--f7-panel-width)) - 50vw) center}html.with-modal-popup-push .framework7-root>.panel-in.panel-push.panel-right .view,html.with-modal-popup-push .framework7-root>.panel-in.panel-reveal.panel-right .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-push.panel-right .view,html.with-modal-popup-push .framework7-root>.panel-out.panel-reveal.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-push.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-in.panel-reveal.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-push.panel-right .view,html.with-modal-sheet-push .framework7-root>.panel-out.panel-reveal.panel-right .view{border-top-right-radius:var(--f7-panelPushBorderRadius)}html.with-modal-popup-push .framework7-root>.panel-in.panel-cover.panel-left,html.with-modal-popup-push .framework7-root>.panel-out.panel-cover.panel-left,html.with-modal-sheet-push .framework7-root>.panel-in.panel-cover.panel-left,html.with-modal-sheet-push .framework7-root>.panel-out.panel-cover.panel-left{transform:translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width))*-1),0,0)}html.with-modal-popup-push .framework7-root>.panel-in.panel-cover.panel-right,html.with-modal-popup-push .framework7-root>.panel-out.panel-cover.panel-right,html.with-modal-sheet-push .framework7-root>.panel-in.panel-cover.panel-right,html.with-modal-sheet-push .framework7-root>.panel-out.panel-cover.panel-right{transform:translate3d(var(--f7-panel-right-width,var(--f7-panel-width)),0,0)}html.with-modal-popup-push-closing .framework7-root>.panel-in,html.with-modal-sheet-push-closing .framework7-root>.panel-in{transition-duration:var(--f7-panelPushTransitionDuration);transition-timing-function:var(--f7-panelPushTransitionTimingFunction)}html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-reveal.panel-left,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-push.panel-left,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-reveal.panel-left{transform-origin:50vw center}html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-popup-push-closing .framework7-root>.panel-in.panel-reveal.panel-right,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-push.panel-right,html.with-modal-sheet-push-closing .framework7-root>.panel-in.panel-reveal.panel-right{transform-origin:calc(var(--f7-panel-right-width, var(--f7-panel-width)) - 50vw) center}.md .panel-cover{overflow:hidden}.md .panel-cover.panel-left{border-radius:0 16px 16px 0}.md .panel-cover.panel-right{border-radius:16px 0 0 16px}:root{--f7-card-margin-horizontal:16px;--f7-card-margin-vertical:16px;--f7-card-content-padding-horizontal:16px;--f7-card-content-padding-vertical:16px;--f7-card-font-size:inherit;--f7-card-header-text-color:inherit;--f7-card-header-font-weight:400;--f7-card-header-padding-horizontal:16px;--f7-card-footer-font-weight:400;--f7-card-footer-font-size:inherit;--f7-card-footer-padding-horizontal:16px;--f7-card-expandable-font-size:16px;--f7-card-expandable-tablet-width:670px;--f7-card-expandable-tablet-height:670px}.ios{--f7-card-border-radius:8px;--f7-card-box-shadow:0px 1px 2px rgba(0,0,0,0.2);--f7-card-header-font-size:17px;--f7-card-header-padding-vertical:10px;--f7-card-header-min-height:44px;--f7-card-footer-text-color:rgba(0,0,0,0.45);--f7-card-footer-padding-vertical:10px;--f7-card-footer-min-height:44px;--f7-card-expandable-margin-horizontal:20px;--f7-card-expandable-margin-vertical:30px;--f7-card-expandable-box-shadow:0px 20px 40px rgba(0,0,0,0.3);--f7-card-expandable-border-radius:16px;--f7-card-expandable-tablet-border-radius:16px;--f7-card-expandable-header-font-size:27px;--f7-card-expandable-header-font-weight:bold;--f7-card-text-color:inherit;--f7-card-bg-color:#fff;--f7-card-expandable-bg-color:#fff;--f7-card-outline-border-color:rgba(0,0,0,0.12);--f7-card-header-border-color:rgba(0,0,0,0.1);--f7-card-footer-border-color:rgba(0,0,0,0.1)}.ios .dark,.ios.dark{--f7-card-bg-color:#1c1c1d;--f7-card-expandable-bg-color:#1c1c1d;--f7-card-outline-border-color:rgba(255,255,255,0.15);--f7-card-header-border-color:rgba(255,255,255,0.15);--f7-card-footer-border-color:rgba(255,255,255,0.15);--f7-card-footer-text-color:rgba(255,255,255,0.55)}.md{--f7-card-border-radius:16px;--f7-card-box-shadow:0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);--f7-card-header-font-size:22px;--f7-card-header-padding-vertical:16px;--f7-card-header-min-height:48px;--f7-card-footer-padding-vertical:16px;--f7-card-footer-min-height:48px;--f7-card-expandable-margin-horizontal:12px;--f7-card-expandable-margin-vertical:24px;--f7-card-expandable-box-shadow:0px 6px 6px -3px rgba(0,0,0,0.2),0px 10px 14px 1px rgba(0,0,0,0.14),0px 4px 18px 3px rgba(0,0,0,0.12);--f7-card-expandable-border-radius:16px;--f7-card-expandable-tablet-border-radius:16px;--f7-card-expandable-header-font-size:22px;--f7-card-expandable-header-font-weight:500}.md,.md .dark,.md [class*=color-]{--f7-card-bg-color:var(--f7-md-surface-1);--f7-card-expandable-bg-color:var(--f7-md-surface-1);--f7-card-outline-border-color:var(--f7-md-outline);--f7-card-header-border-color:var(--f7-md-outline);--f7-card-footer-border-color:var(--f7-md-outline);--f7-card-text-color:var(--f7-md-on-surface);--f7-card-footer-text-color:var(--f7-md-on-surface-variant)}.card .list>ul:after,.card .list>ul:before,.cards-list>ul:after,.cards-list>ul:before{display:none!important}.card .list ul,.cards-list ul{background:none}.card{background:var(--f7-card-bg-color);border-radius:var(--f7-card-border-radius);color:var(--f7-card-text-color);font-size:var(--f7-card-font-size);margin:var(--f7-card-margin-vertical) calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-right)) var(--f7-card-margin-vertical) calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-left));position:relative}.card .block,.card .list{margin:0}.row:not(.no-gap) .col>.card{margin-left:0;margin-right:0}.card-raised{box-shadow:var(--f7-card-box-shadow)}.card-outline,.ios .card-outline-ios,.md .card-outline-md{border:1px solid var(--f7-card-outline-border-color)}.card-content{position:relative}.card-content-padding{padding:var(--f7-card-content-padding-vertical) var(--f7-card-content-padding-horizontal);position:relative}.card-content-padding>.block,.card-content-padding>.list{margin:calc(var(--f7-card-content-padding-vertical)*-1) calc(var(--f7-card-content-padding-horizontal)*-1)}.card-content-padding>p:first-child{margin-top:0}.card-content-padding>p:last-child{margin-bottom:0}.card-header{color:var(--f7-card-header-text-color);font-size:var(--f7-card-header-font-size);font-weight:var(--f7-card-header-font-weight);min-height:var(--f7-card-header-min-height);padding:var(--f7-card-header-padding-vertical) var(--f7-card-header-padding-horizontal)}.card-dividers .card-header,.card-header-divider .card-header,.card-header.card-header-divider{border-bottom:1px solid var(--f7-card-header-border-color)}.card-footer{color:var(--f7-card-footer-text-color);font-size:var(--f7-card-footer-font-size);font-weight:var(--f7-card-footer-font-weight);min-height:var(--f7-card-footer-min-height);padding:var(--f7-card-footer-padding-vertical) var(--f7-card-footer-padding-horizontal)}.card-dividers .card-footer,.card-footer-divider .card-footer,.card-footer.card-footer-divider{border-top:1px solid var(--f7-card-header-border-color)}.card-footer a.link{overflow:hidden}.card-footer,.card-header{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;position:relative}.card-footer[valign=top],.card-header[valign=top]{align-items:flex-start}.card-footer[valign=bottom],.card-header[valign=bottom]{align-items:flex-end}.card-footer a.link,.card-header a.link{position:relative}.card-footer a.link i.icon,.card-header a.link i.icon{display:block}.card-footer a.icon-only,.card-header a.icon-only{align-items:center;display:flex;justify-content:center;margin:0}.card-header{border-radius:var(--f7-card-border-radius) var(--f7-card-border-radius) 0 0}.card-footer{border-radius:0 0 var(--f7-card-border-radius) var(--f7-card-border-radius)}.card-expandable{background:var(--f7-card-expandable-bg-color);border-radius:var(--f7-card-expandable-border-radius);font-size:var(--f7-card-expandable-font-size);height:300px;margin:var(--f7-card-expandable-margin-vertical) calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-right)) var(--f7-card-expandable-margin-vertical) calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-left));overflow:hidden;position:relative;transform-origin:center center;transition-duration:.2s;transition-property:transform,border-radius;z-index:2}.card-expandable.card-raised{box-shadow:var(--f7-card-expandable-box-shadow)}.card-expandable:not(.card-opened){-webkit-user-select:none;user-select:none}.card-expandable.card-no-transition{transition-duration:0ms}.card-expandable.card-expandable-animate-width .card-content{transition-property:width,transform;width:100%}.card-expandable.active-state{transform:scale(.97) translateZ(0)}.card-expandable .card-opened-fade-in,.card-expandable .card-opened-fade-out{transition-duration:.4s}.card-expandable .card-opened-fade-in{opacity:0;pointer-events:none}.card-expandable .card-content{box-sizing:border-box;height:100vh;left:0;overflow:hidden;pointer-events:none;position:absolute;top:0;transform-origin:center top;transition-property:transform;width:100vw}.card-expandable .card-content .card-content-padding{padding-left:calc(var(--f7-safe-area-left) + var(--f7-card-content-padding-horizontal));padding-right:calc(var(--f7-safe-area-right) + var(--f7-card-content-padding-horizontal))}.card-expandable.card-opened{transition-duration:0ms}.card-expandable.card-closing,.card-expandable.card-opening,.card-expandable.card-transitioning{transition-duration:.4s}.card-expandable.card-opening .card-content{transition-duration:.3s}.card-expandable.card-closing .card-content{transition-duration:.5s}.card-expandable.card-closing,.card-expandable.card-opened,.card-expandable.card-opening{z-index:300}.card-expandable.card-opened,.card-expandable.card-opening{border-radius:0}.card-expandable.card-opened .card-opened-fade-in,.card-expandable.card-opening .card-opened-fade-in{opacity:1;pointer-events:auto}.card-expandable.card-opened .card-opened-fade-out,.card-expandable.card-opening .card-opened-fade-out{opacity:0;pointer-events:none}.card-expandable.card-opened .card-content{-webkit-overflow-scrolling:touch;overflow:auto;pointer-events:auto}.card-expandable .card-header{font-size:var(--f7-card-expandable-header-font-size);font-weight:var(--f7-card-expandable-header-font-weight)}.card-prevent-open{pointer-events:auto}.card-expandable-size{height:0;left:0;opacity:0;pointer-events:none;position:absolute;top:0;visibility:hidden;width:0}@media (min-width:768px) and (min-height:670px){.card-expandable:not(.card-tablet-fullscreen){max-width:var(--f7-card-expandable-tablet-width)}.card-expandable:not(.card-tablet-fullscreen).card-opened,.card-expandable:not(.card-tablet-fullscreen).card-opening{border-radius:var(--f7-card-expandable-tablet-border-radius)}.card-expandable:not(.card-tablet-fullscreen):not(.card-expandable-animate-width) .card-content{width:var(--f7-card-expandable-tablet-width)}.card-expandable:not(.card-tablet-fullscreen) .card-expandable-size{height:var(--f7-card-expandable-tablet-height);width:var(--f7-card-expandable-tablet-width)}}.page.page-with-card-opened .page-content{overflow:hidden}.card-backdrop{background:rgba(0,0,0,.2);height:100%;left:0;opacity:0;pointer-events:none;position:fixed;top:0;width:100%;z-index:299}.card-backdrop-in{animation:card-backdrop-fade-in .4s forwards;pointer-events:auto}.card-backdrop-out{animation:card-backdrop-fade-out .4s forwards}@supports ((-webkit-backdrop-filter:blur(15px)) or (backdrop-filter:blur(15px))){.card-backdrop{-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background:transparent}}@keyframes card-backdrop-fade-in{0%{opacity:0}to{opacity:1}}@keyframes card-backdrop-fade-out{0%{opacity:1}to{opacity:0}}:root{--f7-chip-font-size:14px;--f7-chip-media-font-size:16px;--f7-chip-delete-button-color:#000}:root .dark,:root.dark{--f7-chip-delete-button-color:#fff}.ios{--f7-chip-height:28px;--f7-chip-media-size:28px;--f7-chip-padding-horizontal:10px;--f7-chip-border-radius:28px;--f7-chip-font-weight:normal;--f7-chip-outline-border-color:rgba(0,0,0,0.12);--f7-chip-bg-color:rgba(0,0,0,0.12);--f7-chip-text-color:#000;--f7-chip-outline-text-color:#000}.ios .dark,.ios.dark{--f7-chip-bg-color:#333;--f7-chip-text-color:#fff;--f7-chip-outline-text-color:#fff;--f7-chip-outline-border-color:rgba(255,255,255,0.12)}.md{--f7-chip-font-weight:500;--f7-chip-media-size:24px;--f7-chip-height:32px;--f7-chip-padding-horizontal:12px;--f7-chip-border-radius:8px}.md,.md .dark,.md [class*=color-]{--f7-chip-bg-color:var(--f7-md-secondary-container);--f7-chip-text-color:var(--f7-md-on-secondary-container);--f7-chip-outline-text-color:var(--f7-md-on-surface);--f7-chip-outline-border-color:var(--f7-md-outline)}.chip{background-color:var(--f7-chip-bg-color);border-radius:var(--f7-chip-border-radius);color:var(--f7-chip-text-color);display:inline-flex;font-size:var(--f7-chip-font-size);font-weight:var(--f7-chip-font-weight);height:var(--f7-chip-height);line-height:var(--f7-chip-height);margin:2px 0;padding-left:var(--f7-chip-padding-horizontal);padding-right:var(--f7-chip-padding-horizontal);position:relative}.chip,.chip-media{align-items:center;box-sizing:border-box;vertical-align:middle}.chip-media{border-radius:50%;border-radius:var(--f7-chip-media-size);color:#fff;display:flex;flex-shrink:0;font-size:var(--f7-chip-media-font-size);height:var(--f7-chip-media-size);justify-content:center;line-height:var(--f7-chip-media-size);text-align:center;width:var(--f7-chip-media-size)}.chip-media i.icon{font-size:calc(var(--f7-chip-media-size) - 8px);height:calc(var(--f7-chip-media-size) - 8px)}.chip-media img{border-radius:50%;display:block;height:auto;max-height:100%;max-width:100%;width:auto}.chip-media+.chip-label{margin-left:4px}.chip-label{flex-shrink:1;min-width:0;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}.chip-delete{background-repeat:no-repeat;color:var(--f7-chip-delete-button-color);cursor:pointer;flex-shrink:0;height:24px;opacity:.54;position:relative;text-align:center;width:24px}.chip-delete:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;line-height:24px;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.chip .chip-delete.active-state{opacity:1}.chip-outline,.ios .chip-outline-ios,.md .chip-outline-md{background:none;border:1px solid var(--f7-chip-outline-border-color);color:var(--f7-chip-outline-text-color)}.ios .chip[class*=color-]{--f7-chip-bg-color:var(--f7-theme-color);--f7-chip-text-color:#fff}.ios .chip-outline-ios[class*=color-],.ios .chip-outline[class*=color-]{--f7-chip-outline-border-color:var(--f7-theme-color);--f7-chip-outline-text-color:var(--f7-theme-color)}.ios .chip-media{margin-left:calc(var(--f7-chip-padding-horizontal)*-1)}.ios .chip-delete{margin-right:calc(var(--f7-chip-padding-horizontal)*-1)}.ios .chip-delete:after{content:"delete_round_ios";font-size:10px}.md .chip-media{margin-left:calc(var(--f7-chip-padding-horizontal)*-1 + 4px)}.md .chip-label+.chip-delete{margin-left:4px}.md .chip-delete{margin-right:calc(var(--f7-chip-padding-horizontal)*-1 + 4px)}.md .chip-delete:after{content:"delete_round_md";font-size:16px}:root{--f7-input-bg-color:transparent;--f7-label-font-weight:400;--f7-label-height:16px;--f7-label-font-size:12px;--f7-floating-label-scale:1.33333;--f7-input-padding-left:0px;--f7-input-padding-right:0px;--f7-input-error-text-color:#ff3b30;--f7-input-error-font-size:12px;--f7-input-error-line-height:1.4;--f7-input-error-font-weight:400;--f7-input-info-font-size:12px;--f7-input-info-line-height:1.4;--f7-textarea-height:100px}.ios{--f7-input-item-bg-color:transparent;--f7-input-item-border-radius:0px;--f7-input-height:40px;--f7-input-font-size:16px;--f7-input-placeholder-color:#a9a9a9;--f7-textarea-padding-vertical:8px;--f7-label-text-color:inherit;--f7-input-clear-button-size:14px;--f7-input-outline-border-radius:8px;--f7-input-text-color:#000000;--f7-input-info-text-color:rgba(0,0,0,0.45);--f7-input-clear-button-color:rgba(0,0,0,0.45);--f7-input-outline-border-color:#bbb}.ios .dark,.ios.dark{--f7-input-text-color:#fff;--f7-input-info-text-color:rgba(255,255,255,0.55);--f7-input-clear-button-color:rgba(255,255,255,0.5);--f7-input-outline-border-color:#444}.md{--f7-input-item-border-radius:4px 4px 0 0;--f7-input-height:24px;--f7-input-font-size:16px;--f7-textarea-padding-vertical:0px;--f7-input-outline-border-radius:4px;--f7-floating-label-scale:1.33333;--f7-input-clear-button-size:24px;--f7-input-info-text-color:rgba(0,0,0,0.45)}.md .dark,.md.dark{--f7-input-info-text-color:rgba(255,255,255,0.45)}.md,.md .dark,.md [class*=color-]{--f7-input-placeholder-color:var(--f7-md-on-surface-variant);--f7-input-item-bg-color:var(--f7-md-surface-variant);--f7-input-border-color:var(--f7-md-outline);--f7-input-clear-button-color:var(--f7-md-on-surface-variant);--f7-input-outline-border-color:var(--f7-md-outline);--f7-input-text-color:var(--f7-md-on-surface);--f7-label-text-color:var(--f7-md-on-surface-variant)}input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],select,textarea{-webkit-appearance:none;appearance:none;background:none;border:none;border-radius:0;box-shadow:none;box-sizing:border-box;color:inherit;display:block;font-family:inherit;font-size:inherit;margin:0;outline:0;padding:0;resize:none}input[type=date]:-internal-autofill-selected,input[type=datetime-local]:-internal-autofill-selected,input[type=email]:-internal-autofill-selected,input[type=month]:-internal-autofill-selected,input[type=number]:-internal-autofill-selected,input[type=password]:-internal-autofill-selected,input[type=search]:-internal-autofill-selected,input[type=tel]:-internal-autofill-selected,input[type=text]:-internal-autofill-selected,input[type=time]:-internal-autofill-selected,input[type=url]:-internal-autofill-selected,select:-internal-autofill-selected,textarea:-internal-autofill-selected{background-color:initial!important;transition:background-color 5000s ease-in-out 0s!important}input[type=date]:-webkit-autofill,input[type=datetime-local]:-webkit-autofill,input[type=email]:-webkit-autofill,input[type=month]:-webkit-autofill,input[type=number]:-webkit-autofill,input[type=password]:-webkit-autofill,input[type=search]:-webkit-autofill,input[type=tel]:-webkit-autofill,input[type=text]:-webkit-autofill,input[type=time]:-webkit-autofill,input[type=url]:-webkit-autofill,select:-webkit-autofill,textarea:-webkit-autofill{background-color:initial!important;-webkit-transition:background-color 5000s ease-in-out 0s!important;transition:background-color 5000s ease-in-out 0s!important}input[type=date]:-webkit-autofill-and-obscured,input[type=date]:autofill,input[type=datetime-local]:-webkit-autofill-and-obscured,input[type=datetime-local]:autofill,input[type=email]:-webkit-autofill-and-obscured,input[type=email]:autofill,input[type=month]:-webkit-autofill-and-obscured,input[type=month]:autofill,input[type=number]:-webkit-autofill-and-obscured,input[type=number]:autofill,input[type=password]:-webkit-autofill-and-obscured,input[type=password]:autofill,input[type=search]:-webkit-autofill-and-obscured,input[type=search]:autofill,input[type=tel]:-webkit-autofill-and-obscured,input[type=tel]:autofill,input[type=text]:-webkit-autofill-and-obscured,input[type=text]:autofill,input[type=time]:-webkit-autofill-and-obscured,input[type=time]:autofill,input[type=url]:-webkit-autofill-and-obscured,input[type=url]:autofill,select:-webkit-autofill-and-obscured,select:autofill,textarea:-webkit-autofill-and-obscured,textarea:autofill{background-color:initial!important;-webkit-transition:background-color 5000s ease-in-out 0s!important;transition:background-color 5000s ease-in-out 0s!important}.textarea-resizable-shadow{left:-1000px;opacity:0;pointer-events:none;position:absolute;top:-1000px;visibility:hidden;z-index:-1000}.list input[type=date],.list input[type=datetime-local],.list input[type=email],.list input[type=month],.list input[type=number],.list input[type=password],.list input[type=search],.list input[type=tel],.list input[type=text],.list input[type=time],.list input[type=url],.list select{background-color:var(--f7-input-bg-color,transparent);color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);height:var(--f7-input-height);padding-left:var(--f7-input-padding-left);padding-right:var(--f7-input-padding-right);width:100%}.list input[type=date]::placeholder,.list input[type=datetime-local]::placeholder,.list input[type=email]::placeholder,.list input[type=month]::placeholder,.list input[type=number]::placeholder,.list input[type=password]::placeholder,.list input[type=search]::placeholder,.list input[type=tel]::placeholder,.list input[type=text]::placeholder,.list input[type=time]::placeholder,.list input[type=url]::placeholder,.list select::placeholder{color:var(--f7-input-placeholder-color)}.list textarea{background-color:var(--f7-input-bg-color,transparent);color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);height:var(--f7-textarea-height);line-height:1.4;padding:var(--f7-textarea-padding-vertical) var(--f7-input-padding-right) var(--f7-textarea-padding-vertical) var(--f7-input-padding-left);resize:none;width:100%}.list textarea::placeholder{color:var(--f7-input-placeholder-color)}.list textarea.resizable{height:calc(var(--f7-input-height) + var(--f7-textarea-padding-vertical)*2)}.list input[type=date],.list input[type=datetime-local],.list input[type=month],.list input[type=time]{line-height:var(--f7-input-height)}.list .item-floating-label,.list .item-label{color:var(--f7-label-text-color);flex-shrink:0;font-size:var(--f7-label-font-size);font-weight:var(--f7-label-font-weight);line-height:var(--f7-label-height);transition-duration:.2s;transition-property:transform,color;vertical-align:top;width:auto}.list .item-floating-label{color:var(--f7-input-placeholder-color);left:var(--f7-input-padding-left);max-width:calc(100%/var(--f7-floating-label-scale));pointer-events:none;transform-origin:left center}.list .item-floating-label~.item-input-wrap input::placeholder,.list .item-floating-label~.item-input-wrap textarea::placeholder{opacity:0;transition-duration:.1s}.list .item-floating-label~.item-input-wrap input.input-focused::placeholder,.list .item-floating-label~.item-input-wrap textarea.input-focused::placeholder{opacity:1;transition-duration:.3s}.list .item-input-with-value .item-floating-label{color:var(--f7-label-text-color)}.list .item-input-focused .item-floating-label,.list .item-input-with-value .item-floating-label{transform:scale(1) translateY(0)!important}.list .item-input-wrap{flex-shrink:1;position:relative;width:100%}.input,.item-input{position:relative}.item-input .item-inner{align-items:flex-start;display:flex;flex-direction:column;justify-content:center}.input-error-message,.item-input-error-message{box-sizing:border-box;color:var(--f7-input-error-text-color);display:none;font-size:var(--f7-input-error-font-size);font-weight:var(--f7-input-error-font-weight);line-height:var(--f7-input-error-line-height)}.input-info,.item-input-info{color:var(--f7-input-info-text-color);font-size:var(--f7-input-info-font-size);line-height:var(--f7-input-info-line-height)}.input-invalid .input-error-message,.input-invalid .item-input-error-message,.item-input-invalid .input-error-message,.item-input-invalid .item-input-error-message{display:block}.input-invalid .input-info,.input-invalid .item-input-info,.item-input-invalid .input-info,.item-input-invalid .item-input-info{display:none}.input{position:relative}.input input,.input select,.input textarea{width:100%}.input-clear-button{background:none;border:none;color:var(--f7-input-clear-button-color);cursor:pointer;height:var(--f7-input-clear-button-size);margin:0;margin-top:calc(var(--f7-input-clear-button-size)*-1/2);opacity:0;outline:0;padding:0;pointer-events:none;position:absolute;right:0;top:50%;transition-duration:.1s;visibility:hidden;width:var(--f7-input-clear-button-size);z-index:1}.input-clear-button:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.input-clear-button:before{content:"";left:50%;position:absolute;top:50%}.item-input-wrap .input-clear-button{top:calc(var(--f7-input-height)/2)}.input-clear-button.active-state{opacity:.75!important}.input-with-value .input-clear-button,.input-with-value~.input-clear-button,.item-input-with-value .input-clear-button{opacity:1;pointer-events:auto;visibility:visible}.input-dropdown,.input-dropdown-wrap{position:relative}.input-dropdown-wrap:before,.input-dropdown:before{border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #727272;content:"";height:0;margin-top:-2px;pointer-events:none;position:absolute;right:6px;top:50%;width:0}.input-dropdown input,.input-dropdown select,.input-dropdown textarea,.input-dropdown-wrap input,.input-dropdown-wrap select,.input-dropdown-wrap textarea{padding-right:calc(20px + var(--f7-input-padding-right))}.input-outline:after,.item-input-outline .item-content:after,.item-input-outline.item-content:after{border:1px solid var(--f7-input-outline-border-color);border-radius:var(--f7-input-outline-border-radius);bottom:8px;box-sizing:border-box;content:"";left:0;pointer-events:none;position:absolute;right:0;top:8px;transition-duration:.2s}.input-outline .item-floating-label,.input-outline .item-label,.item-input-outline .item-content .item-floating-label,.item-input-outline .item-content .item-label,.item-input-outline.item-content .item-floating-label,.item-input-outline.item-content .item-label{background:var(--f7-page-bg-color);padding:4px;pointer-events:none;z-index:1}.input-outline.input-focused:after,.input-outline.item-input-focused:after,.item-input-outline .item-content.input-focused:after,.item-input-outline .item-content.item-input-focused:after,.item-input-outline.item-content.input-focused:after,.item-input-outline.item-content.item-input-focused:after{border-color:var(--f7-input-outline-invalid-border-color,var(--f7-theme-color));border-width:2px}.input-outline.input-invalid:after,.input-outline.item-input-invalid:after,.item-input-outline .item-content.input-invalid:after,.item-input-outline .item-content.item-input-invalid:after,.item-input-outline.item-content.input-invalid:after,.item-input-outline.item-content.item-input-invalid:after{border-color:var(--f7-input-outline-invalid-border-color,var(--f7-input-error-text-color));border-width:2px}.block-strong .item-input-outline .item-floating-label,.block-strong .item-input-outline .item-label,.ios .block-strong-ios .item-input-outline .item-floating-label,.ios .block-strong-ios .item-input-outline .item-label,.md .block-strong-md .item-input-outline .item-floating-label,.md .block-strong-md .item-input-outline .item-label{background:var(--f7-block-strong-bg-color)!important}.ios .list-strong-ios .item-input-outline .item-floating-label,.ios .list-strong-ios .item-input-outline .item-label,.list-strong .item-input-outline .item-floating-label,.list-strong .item-input-outline .item-label,.md .list-strong-md .item-input-outline .item-floating-label,.md .list-strong-md .item-input-outline .item-label{background:var(--f7-list-strong-bg-color)!important}.dark option{background-color:var(--f7-page-bg-color)}.ios .item-floating-label+.item-input-wrap,.ios .item-label+.item-input-wrap{margin-top:0}.ios .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height) + 25%))}.ios .item-input-focused .item-floating-label{color:var(--f7-label-text-color)}.ios .item-input .item-media{align-self:flex-start}.ios .item-input-wrap{margin-bottom:calc(var(--f7-list-item-padding-vertical)*-1);margin-top:calc(var(--f7-list-item-padding-vertical)*-1)}.ios .item-input:not(.item-input-outline) .item-content,.ios .item-input:not(.item-input-outline).item-content{background:var(--f7-input-item-bg-color)}.ios .input-error-message,.ios .input-info,.ios .item-input-error-message,.ios .item-input-info{margin-bottom:6px;margin-top:-8px;position:relative}.ios .item-input-focused .item-floating-label,.ios .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-label-text-color))}.ios .item-input-focused .item-inner:after{background:var(--f7-input-focused-border-color,var(--f7-list-item-border-color))}.ios .item-input-invalid .item-floating-label,.ios .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-label-text-color))}.ios .item-input-invalid .item-inner:after{background:var(--f7-input-invalid-border-color,var(--f7-list-item-border-color))}.ios .input-invalid input,.ios .input-invalid select,.ios .input-invalid textarea,.ios .item-input-invalid input,.ios .item-input-invalid select,.ios .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-error-text-color))}.ios .input-clear-button:after{content:"delete_round_ios";font-size:calc(var(--f7-input-clear-button-size)/1.4);line-height:1.4}.ios .input-clear-button:before{height:44px;margin-left:-22px;margin-top:-22px;width:44px}.ios .item-input-outline .item-content,.ios .item-input-outline.item-content{margin-left:16px;margin-right:16px;padding-bottom:8px;padding-top:8px}.ios li.item-input-outline:first-child,.ios li:first-child>.item-input-outline{padding-top:16px}.ios li.item-input-outline:first-child:after,.ios li:first-child>.item-input-outline:after{top:16px}.ios li.item-input-outline:last-child,.ios li:last-child>.item-input-outline{padding-bottom:16px}.ios li.item-input-outline:last-child:after,.ios li:last-child>.item-input-outline:after{bottom:16px}.ios .input-outline .item-inner,.ios .item-input-outline .item-content .item-inner,.ios .item-input-outline.item-content .item-inner{display:block;padding-bottom:0;padding-top:0}.ios .input-outline .item-input-wrap,.ios .item-input-outline .item-content .item-input-wrap,.ios .item-input-outline.item-content .item-input-wrap{margin-top:2px}.ios .input-outline .item-title+.item-input-wrap,.ios .item-input-outline .item-content .item-title+.item-input-wrap,.ios .item-input-outline.item-content .item-title+.item-input-wrap{margin-top:-22px}.ios .input-outline .item-floating-label,.ios .input-outline .item-label,.ios .item-input-outline .item-content .item-floating-label,.ios .item-input-outline .item-content .item-label,.ios .item-input-outline.item-content .item-floating-label,.ios .item-input-outline.item-content .item-label{display:inline-flex;margin:-8px -4px -4px;top:-4px}.ios .input-outline .item-floating-label,.ios .item-input-outline .item-content .item-floating-label,.ios .item-input-outline.item-content .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height)))}.md .item-input-wrap{min-height:var(--f7-input-height)}.md .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc((var(--f7-input-height)/2)/var(--f7-floating-label-scale)))}.md .item-input .item-inner:after{display:none!important}.md .item-input .item-content,.md .item-input.item-content{margin-left:16px;margin-right:16px;padding-bottom:8px;padding-top:8px}.md .input:after{background-color:var(--f7-input-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform:scaleY(1)!important;transform-origin:50% 100%;transition-duration:.2s;width:100%;z-index:15}.md .input.input-focused:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color));transform:scaleY(2)!important}.md .input.input-invalid:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color));transform:scaleY(2)!important}.md .item-input:not(.item-input-outline) .item-content:after,.md .item-input:not(.item-input-outline).item-content:after{background-color:var(--f7-input-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.md .item-input:not(.item-input-outline) .item-content:before,.md .item-input:not(.item-input-outline).item-content:before{background:var(--f7-input-item-bg-color);border-radius:var(--f7-input-item-border-radius);bottom:8px;content:"";left:0;pointer-events:none;position:absolute;right:0;top:8px}.md .item-input:not(.item-input-outline) .item-content:after,.md .item-input:not(.item-input-outline).item-content:after{bottom:8px;transform:scaleY(1)!important;transition-duration:.2s}.md .item-input:not(.item-input-outline) .item-content.item-input-focused:after,.md .item-input:not(.item-input-outline).item-content.item-input-focused:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color));transform:scaleY(2)!important}.md .item-input:not(.item-input-outline) .item-content.input-invalid:after,.md .item-input:not(.item-input-outline) .item-content.item-input-invalid:after,.md .item-input:not(.item-input-outline).item-content.input-invalid:after,.md .item-input:not(.item-input-outline).item-content.item-input-invalid:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color));transform:scaleY(2)!important}.md .input-outline .item-inner,.md .item-input-outline .item-content .item-inner,.md .item-input-outline.item-content .item-inner{padding-bottom:16px;padding-top:16px}.md .input-outline .item-floating-label,.md .input-outline .item-label,.md .item-input-outline .item-content .item-floating-label,.md .item-input-outline .item-content .item-label,.md .item-input-outline.item-content .item-floating-label,.md .item-input-outline.item-content .item-label{--label-height:calc(var(--f7-label-height) + 8px);margin:calc(-16px - var(--label-height)/2) -4px 4px}.md .input-outline .item-floating-label,.md .item-input-outline .item-content .item-floating-label,.md .item-input-outline.item-content .item-floating-label{transform:scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-input-height)/2 + 8px))}.md .input-with-error-message,.md .input-with-info,.md .item-input-with-error-message,.md .item-input-with-info{padding-bottom:24px!important}.md .input-error-message,.md .input-info,.md .item-input-error-message,.md .item-input-info{left:0;overflow:hidden;position:absolute;text-overflow:ellipsis;top:100%;white-space:nowrap;width:100%}.md .item-input-focused .item-floating-label,.md .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-theme-color))}.md .input-focused:not(.input-outline):after,.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color))}.md .input-focused:not(.input-outline):after,.md .input-invalid:not(.input-outline):after,.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after,.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after{transform:scaleY(2)!important}.md .input-invalid:not(.input-outline):after,.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color))}.md .item-input-invalid .item-floating-label,.md .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-input-error-text-color))}.md .input-invalid input,.md .input-invalid select,.md .input-invalid textarea,.md .item-input-invalid input,.md .item-input-invalid select,.md .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-text-color))}.md .input-clear-button:after{content:"delete_round_md";font-size:var(--f7-input-clear-button-size);line-height:1}.md .input-clear-button:before{height:48px;margin-left:-24px;margin-top:-24px;width:48px}:root{--f7-checkbox-icon-color:#fff;--f7-checkbox-extra-margin:0px}:root .dark,:root.dark{--f7-checkbox-inactive-color:rgba(255,255,255,0.3);--f7-checkbox-icon-color:#000}.ios{--f7-checkbox-size:22px;--f7-checkbox-border-radius:50%;--f7-checkbox-border-width:1px;--f7-checkbox-inactive-color:#c7c7cc}.md{--f7-checkbox-size:18px;--f7-checkbox-border-radius:2px;--f7-checkbox-border-width:2px;--f7-checkbox-inactive-color:#6d6d6d}.checkbox{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.5);background-color:initial;display:inline-block;position:relative;vertical-align:middle;z-index:1}.checkbox i,.icon-checkbox{border:var(--f7-checkbox-border-width) solid var(--f7-checkbox-inactive-color);border-radius:var(--f7-checkbox-border-radius);box-sizing:border-box;display:block;flex-shrink:0;height:var(--f7-checkbox-size);position:relative;width:var(--f7-checkbox-size)}.checkbox i:after,.icon-checkbox:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-checkbox-icon-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;height:var(--f7-checkbox-size);left:calc(0px - var(--f7-checkbox-border-width));letter-spacing:normal;line-height:1;line-height:var(--f7-checkbox-size);opacity:0;position:relative;text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:calc(0px - var(--f7-checkbox-border-width));transition-property:opacity;white-space:nowrap;width:100%;width:var(--f7-checkbox-size)}.checkbox i.color-white,.color-white .checkbox i,.color-white .icon-checkbox,.icon-checkbox.color-white{--f7-theme-color:#fff;--f7-checkbox-icon-color:#000}.checkbox i.color-black,.color-black .checkbox i,.color-black .icon-checkbox,.icon-checkbox.color-black{--f7-theme-color:#000;--f7-checkbox-icon-color:#fff}.checkbox input[type=checkbox]:not(:checked)~i:after,label.item-checkbox input[type=checkbox]:not(:checked)~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:not(:checked)~.icon-checkbox:after{font-size:0}.checkbox input[type=checkbox]:checked~i,.checkbox input[type=checkbox]:indeterminate~i,label.item-checkbox input[type=checkbox]:checked~* .icon-checkbox,label.item-checkbox input[type=checkbox]:checked~.icon-checkbox,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox{background-color:var(--f7-checkbox-active-color,var(--f7-theme-color));border-color:var(--f7-checkbox-active-color,var(--f7-theme-color))}.checkbox input[type=checkbox]:checked~i:after,.checkbox input[type=checkbox]:indeterminate~i:after,label.item-checkbox input[type=checkbox]:checked~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:checked~.icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{opacity:1}.checkbox input[type=checkbox]:indeterminate~i:after,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{background:var(--f7-checkbox-icon-color);border-radius:2px;content:"";font-size:0;height:2px;left:15%;margin-top:-1px;position:absolute;top:50%;transition:0ms;width:70%}.checkbox,label.item-checkbox{cursor:pointer}.checkbox input[type=checkbox],.checkbox input[type=radio],label.item-checkbox input[type=checkbox],label.item-checkbox input[type=radio]{display:none}label.item-checkbox{transition-duration:.3s}label.item-checkbox .item-content .item-media,label.item-checkbox.item-content .item-media{align-self:center}label.item-checkbox>.icon-checkbox{margin-right:calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin))}label.item-checkbox.active-state{background-color:var(--f7-list-link-pressed-bg-color)}label.item-checkbox.active-state:after{background-color:initial}.disabled label.item-checkbox,label.item-checkbox.disabled{opacity:.55;opacity:.55!important;pointer-events:none;pointer-events:none!important}label.item-checkbox.item-checkbox-icon-end .item-inner{padding-right:calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right) + var(--f7-checkbox-size) + 16px)}label.item-checkbox.item-checkbox-icon-end input[type=checkbox]~.icon-checkbox{margin-right:0;position:absolute;right:calc(var(--f7-safe-area-right) + 16px)}.ios .checkbox i:after,.ios .icon-checkbox:after{content:"checkbox_ios";font-size:21px}.ios label.item-checkbox.active-state{transition-duration:0ms}.ios .checkbox input[type=checkbox]:indeterminate~i:after,.ios label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,.ios label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{height:2px;margin-top:-1px}.md .checkbox i,.md .icon-checkbox{transition-duration:.2s}.md .checkbox i:after,.md .icon-checkbox:after{content:"checkbox_md";font-size:15px;transition-duration:.2s}.md label.item-checkbox{overflow:hidden;position:relative;z-index:0}:root{--f7-radio-border-radius:50%;--f7-radio-extra-margin:0px}:root .dark,:root.dark{--f7-radio-inactive-color:rgba(255,255,255,0.3)}.ios{--f7-radio-size:22px;--f7-radio-border-width:1px;--f7-radio-inactive-color:#c7c7cc}.md{--f7-radio-size:20px;--f7-radio-border-width:2px;--f7-radio-inactive-color:#6d6d6d}.radio{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.5);display:inline-block;position:relative;vertical-align:middle;z-index:1}.icon-radio{border-radius:var(--f7-radio-border-radius);box-sizing:border-box;display:block;flex-shrink:0;height:var(--f7-radio-size);position:relative;width:var(--f7-radio-size)}.color-white .icon-radio,.color-white .radio,.icon-radio.color-white,.radio.color-white{--f7-theme-color:#fff}.color-black .icon-radio,.color-black .radio,.icon-radio.color-black,.radio.color-black{--f7-theme-color:#000}.md .icon-radio,.radio .icon-radio{border:var(--f7-radio-border-width) solid var(--f7-radio-inactive-color)}.radio,label.item-radio{cursor:pointer}.radio input[type=checkbox],.radio input[type=radio],label.item-radio input[type=checkbox],label.item-radio input[type=radio]{display:none}label.item-radio{transition-duration:.3s}label.item-radio .item-content .item-media,label.item-radio.item-content .item-media{align-self:center}label.item-radio.active-state{background-color:var(--f7-list-link-pressed-bg-color)}label.item-radio.active-state:after{background-color:initial}.disabled label.item-radio,label.item-radio.disabled{opacity:.55;opacity:.55!important;pointer-events:none;pointer-events:none!important}.ios .icon-radio:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-radio-active-color,var(--f7-theme-color));content:"radio_ios";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;height:calc(var(--f7-radio-size) - var(--f7-radio-border-width)*2);letter-spacing:normal;line-height:1;line-height:calc(var(--f7-radio-size) - var(--f7-radio-border-width)*2 + 1px);opacity:0;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%;width:calc(var(--f7-radio-size) - var(--f7-radio-border-width)*2)}.ios .radio input[type=radio]:checked~.icon-radio:after,.ios label.item-radio input[type=radio]:checked~* .icon-radio:after,.ios label.item-radio input[type=radio]:checked~.icon-radio:after{opacity:1}.ios .radio input[type=radio]:checked~.icon-radio{border-color:var(--f7-radio-active-color,var(--f7-theme-color))}.ios label.item-radio:not(.item-radio-icon-start) input[type=radio]~.icon-radio{margin-top:-11px;position:absolute;right:calc(var(--f7-safe-area-right) + 10px);top:50%}.ios label.item-radio:not(.item-radio-icon-start) .item-inner{padding-right:calc(var(--f7-safe-area-right) + 36px)}.ios label.item-radio-icon-start>.icon-radio{margin-right:calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin))}.ios label.item-radio.active-state{transition-duration:0ms}.md .icon-radio,.md .icon-radio:after{transition-duration:.2s}.md .icon-radio:after{background-color:var(--f7-radio-active-color,var(--f7-theme-color));border-radius:50%;content:"";height:10px;left:50%;margin-left:-5px;margin-top:-5px;position:absolute;top:50%;transform:scale(0);width:10px}.md .radio input[type=radio]:checked~.icon-radio,.md label.item-radio input[type=radio]:checked~* .icon-radio,.md label.item-radio input[type=radio]:checked~.icon-radio{border-color:var(--f7-radio-active-color,var(--f7-theme-color))}.md .radio input[type=radio]:checked~.icon-radio:after,.md label.item-radio input[type=radio]:checked~* .icon-radio:after,.md label.item-radio input[type=radio]:checked~.icon-radio:after{background-color:var(--f7-radio-active-color,var(--f7-theme-color));transform:scale(1)}.md label.item-radio{overflow:hidden;position:relative;z-index:0}.md label.item-radio:not(.item-radio-icon-end)>.icon-radio{margin-right:calc(var(--f7-list-item-media-margin) + var(--f7-radio-extra-margin))}.md label.item-radio-icon-end input[type=radio]~.icon-radio{margin-top:-10px;position:absolute;right:calc(var(--f7-safe-area-right) + 16px);top:50%}.md label.item-radio-icon-end .item-inner{padding-right:calc(var(--f7-safe-area-right) + 52px)}.ios{--f7-toggle-width:52px;--f7-toggle-height:32px;--f7-toggle-inactive-knob-bg-color:#fff;--f7-toggle-active-knob-bg-color:#fff;--f7-toggle-inactive-border-color:#e5e5e5;--f7-toggle-inactive-bg-color:#fff}.ios .dark,.ios.dark{--f7-toggle-inactive-border-color:#555;--f7-toggle-inactive-bg-color:#555}.md{--f7-toggle-width:52px;--f7-toggle-height:32px}.md,.md .dark,.md [class*=color-]{--f7-toggle-inactive-bg-color:var(--f7-md-surface-variant);--f7-toggle-active-bg-color:var(--f7-theme-color);--f7-toggle-inactive-knob-bg-color:var(--f7-md-outline);--f7-toggle-active-knob-bg-color:var(--f7-md-on-primary);--f7-toggle-inactive-border-color:var(--f7-md-outline);--f7-toggle-active-border-color:var(--f7-theme-color)}.toggle,.toggle-icon{border-radius:var(--f7-toggle-height);height:var(--f7-toggle-height);width:var(--f7-toggle-width)}.toggle{align-self:center;box-sizing:border-box;display:inline-block;position:relative;-webkit-user-select:none;user-select:none;vertical-align:middle}.toggle input[type=checkbox]{display:none}.toggle input[disabled]~.toggle-icon{pointer-events:none}.toggle-icon{-webkit-appearance:none;appearance:none;border:none;box-sizing:border-box;cursor:pointer;display:block;margin:0;padding:0;position:relative;transition:.3s;z-index:0}.toggle-icon:after,.toggle-icon:before{content:""}.toggle-icon:after{position:absolute;transform:translateX(0);transition-duration:.3s;z-index:2}.ios .toggle{background:var(--f7-toggle-inactive-border-color)}.ios .toggle input[type=checkbox]:checked+.toggle-icon{background:var(--f7-toggle-active-color,var(--f7-theme-color))}.ios .toggle input[type=checkbox]:checked+.toggle-icon:before{background:var(--f7-toggle-active-bg-color,var(--f7-theme-color));transform:scale(0)}.ios .toggle input[type=checkbox]:checked+.toggle-icon:after{background:var(--f7-toggle-active-knob-bg-color);transform:translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height)))}.ios .toggle-icon{background:var(--f7-toggle-border-color)}.ios .toggle-icon:before{background:var(--f7-toggle-inactive-bg-color);border-radius:var(--f7-toggle-height);box-sizing:border-box;position:absolute;transform:scale(1);transition-duration:.3s;width:calc(var(--f7-toggle-width) - 4px);z-index:1}.ios .toggle-icon:after,.ios .toggle-icon:before{height:calc(var(--f7-toggle-height) - 4px);left:2px;top:2px}.ios .toggle-icon:after{background:var(--f7-toggle-inactive-knob-bg-color);border-radius:calc(var(--f7-toggle-height) - 4px);box-shadow:0 2px 4px rgba(0,0,0,.3);width:calc(var(--f7-toggle-height) - 4px)}.ios .toggle-active-state input[type=checkbox]:not(:checked)+.toggle-icon:before{transform:scale(0)}.ios .toggle-active-state input[type=checkbox]+.toggle-icon:after{width:calc(var(--f7-toggle-height) + 4px)}.ios .toggle-active-state input[type=checkbox]:checked+.toggle-icon:after{transform:translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height) - 8px))}.md .toggle input[type=checkbox]:checked+.toggle-icon{background:var(--f7-toggle-active-bg-color);border-color:var(--f7-toggle-active-border-color)}.md .toggle input[type=checkbox]:checked+.toggle-icon:after{background:var(--f7-toggle-active-knob-bg-color);transform:translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height))) scale(1)}.md .toggle.active-state input[type=checkbox]:checked+.toggle-icon:after{transform:translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height))) scale(1.1)}.md .toggle-icon{background:var(--f7-toggle-inactive-bg-color);border:2px solid var(--f7-toggle-inactive-border-color)}.md .toggle-icon:after{background:var(--f7-toggle-inactive-knob-bg-color);border-radius:var(--f7-toggle-height);height:calc(var(--f7-toggle-height) - 8px);left:2px;top:2px;transform:scale(.666);width:calc(var(--f7-toggle-height) - 8px)}.md .toggle-icon.active-state:after{transform:scale(1.1)}:root{--f7-range-scale-step-height:5px;--f7-range-scale-substep-width:1px;--f7-range-scale-substep-height:4px;--f7-range-bar-bg-color:rgba(0,0,0,0.2)}:root .dark,:root.dark{--f7-range-bar-bg-color:rgba(255,255,255,0.2)}.ios{--f7-range-size:28px;--f7-range-bar-size:4px;--f7-range-bar-border-radius:2px;--f7-range-knob-size:28px;--f7-range-knob-color:#fff;--f7-range-knob-box-shadow:0 2px 4px rgba(0,0,0,0.3);--f7-range-label-size:24px;--f7-range-label-text-color:#000;--f7-range-label-bg-color:#fff;--f7-range-label-font-size:12px;--f7-range-label-font-weight:500;--f7-range-label-border-radius:5px;--f7-range-label-padding:0px 2px;--f7-range-scale-text-color:#666;--f7-range-scale-step-width:1px;--f7-range-scale-font-size:12px;--f7-range-scale-font-weight:400;--f7-range-scale-label-offset:4px}.md{--f7-range-size:20px;--f7-range-bar-size:2px;--f7-range-bar-border-radius:0px;--f7-range-knob-size:12px;--f7-range-knob-box-shadow:none;--f7-range-label-size:26px;--f7-range-label-font-weight:normal;--f7-range-label-font-size:10px;--f7-range-label-border-radius:50%;--f7-range-label-padding:0px;--f7-range-scale-step-width:2px;--f7-range-scale-font-size:12px;--f7-range-scale-font-weight:400;--f7-range-scale-label-offset:4px}.md,.md .dark,.md [class*=color-]{--f7-range-knob-color:var(--f7-theme-color);--f7-range-label-text-color:var(--f7-md-on-primary);--f7-range-label-bg-color:var(--f7-theme-color);--f7-range-scale-text-color:var(--f7-md-on-surface-variant)}.range-slider{align-self:center;cursor:pointer;display:block;position:relative;-webkit-user-select:none;user-select:none}.range-slider input[type=range]{display:none}.range-slider.range-slider-horizontal{height:var(--f7-range-size);touch-action:pan-y;width:100%}.range-slider.range-slider-vertical{height:100%;touch-action:pan-x;width:var(--f7-range-size)}.range-bar{background:var(--f7-range-bar-bg-color);border-radius:var(--f7-range-bar-border-radius);overflow:hidden;position:absolute}.range-slider-vertical .range-bar{height:100%;left:50%;margin-left:calc(var(--f7-range-bar-size)*-1/2);top:0;width:var(--f7-range-bar-size)}.range-slider-horizontal .range-bar{height:var(--f7-range-bar-size);left:0;margin-top:calc(var(--f7-range-bar-size)*-1/2);top:50%;width:100%}.range-bar-active{background:var(--f7-range-bar-active-bg-color,var(--f7-theme-color));position:absolute}.range-slider-horizontal .range-bar-active{height:100%;left:0;top:0}.range-slider-vertical .range-bar-active{bottom:0;left:0;width:100%}.range-slider-vertical-reversed .range-bar-active{bottom:auto;top:0}.range-knob-wrap{height:var(--f7-range-knob-size);position:absolute;width:var(--f7-range-knob-size);z-index:20}.range-slider-horizontal .range-knob-wrap{left:0;margin-left:calc(var(--f7-range-knob-size)*-1/2);margin-top:calc(var(--f7-range-knob-size)*-1/2);top:50%}.range-slider-vertical .range-knob-wrap{bottom:0;left:50%;margin-bottom:calc(var(--f7-range-knob-size)*-1/2);margin-left:calc(var(--f7-range-knob-size)*-1/2)}.range-slider-vertical-reversed .range-knob-wrap{bottom:auto;margin-bottom:0;margin-top:calc(var(--f7-range-knob-size)*-1/2);top:0}.range-knob{background:var(--f7-range-knob-color,var(--f7-range-knob-bg-color,var(--f7-theme-color)));border-radius:50%;box-shadow:var(--f7-range-knob-box-shadow);box-sizing:border-box;height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}.range-knob:after{content:"";height:44px;left:50%;margin-left:-22px;margin-top:-22px;position:absolute;top:50%;width:44px}.range-knob-label{background-color:var(--f7-range-label-bg-color,var(--f7-theme-color));border-radius:var(--f7-range-label-border-radius);bottom:100%;box-sizing:border-box;color:var(--f7-range-label-text-color);font-size:var(--f7-range-label-font-size);font-weight:var(--f7-range-label-font-weight);height:var(--f7-range-label-size);left:50%;line-height:var(--f7-range-label-size);min-width:var(--f7-range-label-size);padding:var(--f7-range-label-padding);position:absolute;text-align:center;transform:translateY(100%) scale(0);transition-duration:.12s;transition-property:transform}.range-knob-active-state .range-knob-label{transform:translateY(0) scale(1)}.range-scale{position:absolute}.range-slider-horizontal .range-scale{left:0;margin-top:calc(var(--f7-range-bar-size)/2);top:50%;width:100%}.range-slider-vertical .range-scale{height:100%;margin-right:calc(var(--f7-range-bar-size)/2);right:50%;top:0}.range-scale-step{box-sizing:border-box;color:var(--f7-range-scale-text-color,var(--f7-range-bar-bg-color));display:flex;font-size:var(--f7-range-scale-font-size);font-weight:var(--f7-range-scale-font-weight);line-height:1;position:absolute}.range-scale-step:before{background:var(--f7-range-scale-step-bg-color,var(--f7-range-bar-bg-color));content:"";position:absolute}.range-slider-horizontal .range-scale-step{align-items:flex-start;height:var(--f7-range-scale-step-height);justify-content:center;margin-left:calc(var(--f7-range-scale-step-width)*-1/2);padding-top:calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));top:0;width:var(--f7-range-scale-step-width)}.range-slider-horizontal .range-scale-step:before{height:var(--f7-range-scale-step-height);left:0;top:0;width:100%}.range-slider-horizontal .range-scale-step:first-child{margin-left:0}.range-slider-horizontal .range-scale-step:last-child{margin-left:calc(var(--f7-range-scale-step-width)*-1)}.range-slider-vertical .range-scale-step{align-items:center;height:var(--f7-range-scale-step-width);justify-content:flex-end;line-height:1;margin-bottom:calc(var(--f7-range-scale-step-width)*-1/2);padding-right:calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));right:0;width:var(--f7-range-scale-step-height)}.range-slider-vertical .range-scale-step:first-child{margin-bottom:0}.range-slider-vertical .range-scale-step:last-child{margin-bottom:calc(var(--f7-range-scale-step-width)*-1)}.range-slider-vertical .range-scale-step:before{height:100%;right:0;top:0;width:var(--f7-range-scale-step-height)}.range-scale-substep{--f7-range-scale-step-bg-color:var(--f7-range-scale-substep-bg-color,var(--f7-range-bar-bg-color));--f7-range-scale-step-width:var(--f7-range-scale-substep-width);--f7-range-scale-step-height:var(--f7-range-scale-substep-height)}.ios .range-knob-label{margin-bottom:6px;transform:translateX(-50%) translateY(100%) scale(0)}.ios .range-knob-active-state .range-knob-label{transform:translateX(-50%) translateY(0) scale(1)}.md .range-knob{transition-duration:.2s;transition-property:transform,background-color}.md .range-knob-active-state .range-knob{transform:scale(1.5)}.md .range-slider-min:not(.range-slider-dual) .range-knob{background:#fff!important;border:2px solid var(--f7-range-bar-bg-color)}.md .range-knob-label{margin-bottom:8px}.md .range-knob-label,.md .range-knob-label:before{margin-left:calc(var(--f7-range-label-size)*-1/2);width:var(--f7-range-label-size)}.md .range-knob-label:before{background:var(--f7-range-label-bg-color,var(--f7-theme-color));border-radius:50% 50% 50% 0;content:"";height:var(--f7-range-label-size);left:50%;position:absolute;top:0;transform:rotate(-45deg);z-index:-1}.md .range-knob-active-state .range-knob-label{transform:translateY(0) scale(1)}.md .range-slider-label .range-knob-active-state .range-knob{transform:scale(0)}:root{--f7-stepper-raised-box-shadow:0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);--f7-stepper-value-font-weight:500}.ios{--f7-stepper-height:28px;--f7-stepper-border-radius:5px;--f7-stepper-fill-button-text-color:#fff;--f7-stepper-large-height:44px;--f7-stepper-small-height:26px;--f7-stepper-value-font-size:17px;--f7-stepper-border-width:2px;--f7-stepper-border-color:var(--f7-theme-color);--f7-stepper-small-border-width:2px}.md{--f7-stepper-height:40px;--f7-stepper-border-radius:8px;--f7-stepper-large-height:48px;--f7-stepper-small-height:32px;--f7-stepper-value-font-size:14px;--f7-stepper-border-width:1px;--f7-stepper-small-border-width:1px;--f7-stepper-button-pressed-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-stepper-fill-button-text-color:var(--f7-md-on-primary);--f7-stepper-fill-button-pressed-bg-color:var(--f7-theme-color);--f7-stepper-border-color:var(--f7-md-outline)}.stepper{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25);align-items:stretch;border-radius:var(--f7-stepper-border-radius);display:inline-flex;height:var(--f7-stepper-height)}.stepper-button,.stepper-button-minus,.stepper-button-plus{align-content:center;align-items:center;background-color:var(--f7-stepper-button-bg-color);border:var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);border-radius:var(--f7-stepper-border-radius);box-sizing:border-box;color:var(--f7-stepper-button-text-color,var(--f7-theme-color));cursor:pointer;display:flex;flex-shrink:0;justify-content:center;line-height:calc(var(--f7-stepper-height) - var(--f7-stepper-border-width, 0px));position:relative;text-align:center;width:40px}.stepper-button-minus.active-state,.stepper-button-plus.active-state,.stepper-button.active-state{background-color:var(--f7-stepper-button-pressed-bg-color,rgba(var(--f7-theme-color-rgb),.15));color:var(--f7-stepper-button-pressed-text-color,var(--f7-stepper-button-text-color,var(--f7-theme-color)))}.stepper-button-minus:first-child,.stepper-button-plus:first-child,.stepper-button:first-child{border-radius:var(--f7-stepper-border-radius) 0 0 var(--f7-stepper-border-radius)}.stepper-button-minus:last-child,.stepper-button-plus:last-child,.stepper-button:last-child{border-radius:0 var(--f7-stepper-border-radius) var(--f7-stepper-border-radius) 0}.stepper-button .icon,.stepper-button-minus .icon,.stepper-button-plus .icon{pointer-events:none}.stepper-button+.stepper-button,.stepper-button+.stepper-button-minus,.stepper-button+.stepper-button-plus,.stepper-button-minus+.stepper-button,.stepper-button-minus+.stepper-button-minus,.stepper-button-minus+.stepper-button-plus,.stepper-button-plus+.stepper-button,.stepper-button-plus+.stepper-button-minus,.stepper-button-plus+.stepper-button-plus{border-left:none}.stepper-button-minus,.stepper-button-plus{-webkit-user-select:none;user-select:none}.stepper-button-minus:after,.stepper-button-minus:before,.stepper-button-plus:after,.stepper-button-plus:before{background-color:var(--f7-stepper-button-text-color,var(--f7-theme-color));border-radius:2px;content:"";left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.stepper-button-minus:after,.stepper-button-plus:after{height:2px;width:15px}.stepper-button-plus:before{height:15px;width:2px}.stepper-value{align-content:center;align-items:center;display:flex;justify-content:center}.stepper-input-wrap,.stepper-value{border-bottom:var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);border-top:var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);flex-shrink:1;text-align:center}.stepper .stepper-input-wrap input,.stepper-value{color:var(--f7-stepper-value-text-color,var(--f7-theme-color));font-size:var(--f7-stepper-value-font-size);font-weight:var(--f7-stepper-value-font-weight);text-align:center;width:45px}.stepper .stepper-input-wrap input{height:100%}.ios .stepper-round-ios,.md .stepper-round-md,.stepper-round{--f7-stepper-border-radius:var(--f7-stepper-height)}.ios .stepper-fill-ios,.md .stepper-fill-md,.stepper-fill{--f7-stepper-border-color:var(--f7-stepper-fill-button-bg-color,var(--f7-theme-color));--f7-stepper-button-bg-color:var(--f7-stepper-fill-button-bg-color,var(--f7-theme-color));--f7-stepper-button-text-color:var(--f7-stepper-fill-button-text-color);--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.ios .stepper-fill-ios .stepper-button+.stepper-button,.ios .stepper-fill-ios .stepper-button-minus+.stepper-button-plus,.ios .stepper-raised-ios .stepper-button+.stepper-button,.ios .stepper-raised-ios .stepper-button-minus+.stepper-button-plus,.md .stepper-fill-md .stepper-button+.stepper-button,.md .stepper-fill-md .stepper-button-minus+.stepper-button-plus,.md .stepper-raised-md .stepper-button+.stepper-button,.md .stepper-raised-md .stepper-button-minus+.stepper-button-plus,.stepper-fill .stepper-button+.stepper-button,.stepper-fill .stepper-button-minus+.stepper-button-plus,.stepper-raised .stepper-button+.stepper-button,.stepper-raised .stepper-button-minus+.stepper-button-plus{border-left:1px solid rgba(0,0,0,.1)}.ios .stepper-fill-ios .stepper-button+.stepper-button.active-state,.ios .stepper-fill-ios .stepper-button-minus+.stepper-button-plus.active-state,.md .stepper-fill-md .stepper-button+.stepper-button.active-state,.md .stepper-fill-md .stepper-button-minus+.stepper-button-plus.active-state,.stepper-fill .stepper-button+.stepper-button.active-state,.stepper-fill .stepper-button-minus+.stepper-button-plus.active-state{border-left-color:var(--f7-stepper-button-pressed-bg-color)}.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-input-wrap,.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-value,.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-input-wrap,.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-value,.stepper-raised:not(.stepper-fill) .stepper-input-wrap,.stepper-raised:not(.stepper-fill) .stepper-value{border-left:1px solid rgba(0,0,0,.1);border-right:1px solid rgba(0,0,0,.1)}.ios .stepper-large-ios,.md .stepper-large-md,.stepper-large{--f7-stepper-height:var(--f7-stepper-large-height)}.ios .stepper-small-ios,.md .stepper-small-md,.stepper-small{--f7-stepper-border-width:var(--f7-stepper-small-border-width);--f7-stepper-height:var(--f7-stepper-small-height)}.ios .stepper-fill.stepper-small,.ios .stepper-fill.stepper-small-ios{--f7-stepper-button-pressed-bg-color:transparent;--f7-stepper-button-pressed-text-color:var(--f7-theme-color)}.ios .stepper-raised-ios,.md .stepper-raised-md,.stepper-raised{--f7-stepper-border-width:0;box-shadow:var(--f7-stepper-raised-box-shadow)}.ios .stepper-button .f7-icons,.ios .stepper-button-minus .f7-icons,.ios .stepper-button-plus .f7-icons{font-size:22px}.ios .stepper-fill,.ios .stepper-fill-ios{--f7-stepper-button-pressed-bg-color:var(--f7-stepper-fill-button-pressed-bg-color,var(--f7-theme-color-tint))}.ios .stepper-small-ios.stepper-raised,.ios .stepper-small-ios.stepper-raised-ios,.ios .stepper-small.stepper-raised,.ios .stepper-small.stepper-raised-ios{--f7-stepper-border-width:0px}.ios .stepper-small .stepper-button,.ios .stepper-small .stepper-button-minus,.ios .stepper-small .stepper-button-plus,.ios .stepper-small-ios .stepper-button,.ios .stepper-small-ios .stepper-button-minus,.ios .stepper-small-ios .stepper-button-plus{transition-duration:.2s}.ios .stepper-small .stepper-button-minus.active-state:after,.ios .stepper-small .stepper-button-minus.active-state:before,.ios .stepper-small .stepper-button-plus.active-state:after,.ios .stepper-small .stepper-button-plus.active-state:before,.ios .stepper-small .stepper-button.active-state:after,.ios .stepper-small .stepper-button.active-state:before,.ios .stepper-small-ios .stepper-button-minus.active-state:after,.ios .stepper-small-ios .stepper-button-minus.active-state:before,.ios .stepper-small-ios .stepper-button-plus.active-state:after,.ios .stepper-small-ios .stepper-button-plus.active-state:before,.ios .stepper-small-ios .stepper-button.active-state:after,.ios .stepper-small-ios .stepper-button.active-state:before{background-color:var(--f7-theme-color);transition-duration:.2s}.md .stepper-button,.md .stepper-button-minus,.md .stepper-button-plus{overflow:hidden;transform:translateZ(0);transition-duration:.3s}.md .stepper-fill,.md .stepper-fill-md{--f7-stepper-button-pressed-bg-color:var(--f7-stepper-fill-button-bg-color,var(--f7-theme-color))}.smart-select select{display:none}.smart-select .item-after{display:block;max-width:70%;overflow:hidden;position:relative;text-overflow:ellipsis}.smart-select-sheet .list ul,.smart-select-sheet .page,.smart-select-sheet .sheet-modal-inner{background:var(--f7-smart-select-sheet-bg,var(--f7-list-bg-color))}.smart-select-sheet .toolbar:after{background-color:var(--f7-smart-select-sheet-toolbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.smart-select-sheet .list{margin:0}.smart-select-sheet .list ul:after,.smart-select-sheet .list ul:before{display:none!important}.smart-select-popover .popover-inner{max-height:40vh}:root{--f7-grid-gap:16px}.grid{display:grid}.grid.grid-gap{gap:var(--f7-grid-gap)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}@media (min-width:480px){.xsmall-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xsmall-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.xsmall-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xsmall-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.xsmall-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xsmall-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.xsmall-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xsmall-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.xsmall-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xsmall-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.xsmall-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xsmall-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.xsmall-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xsmall-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.xsmall-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xsmall-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.xsmall-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xsmall-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.xsmall-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xsmall-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.xsmall-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xsmall-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.xsmall-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xsmall-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.xsmall-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.xsmall-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.xsmall-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.xsmall-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.xsmall-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.xsmall-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.xsmall-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.xsmall-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.xsmall-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.xsmall-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.xsmall-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.xsmall-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.xsmall-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.xsmall-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.xsmall-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.xsmall-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:568px){.small-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.small-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.small-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.small-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.small-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.small-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.small-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.small-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.small-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.small-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.small-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.small-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.small-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.small-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.small-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.small-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.small-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.small-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.small-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.small-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.small-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.small-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.small-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.small-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.small-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.small-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.small-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.small-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.small-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.small-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.small-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.small-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.small-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.small-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.small-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.small-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.small-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.small-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.small-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.small-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:768px){.medium-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.medium-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.medium-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.medium-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.medium-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.medium-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.medium-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.medium-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.medium-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.medium-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.medium-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.medium-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.medium-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.medium-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.medium-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.medium-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.medium-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.medium-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.medium-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.medium-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.medium-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.medium-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.medium-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.medium-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.medium-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.medium-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.medium-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.medium-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.medium-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.medium-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.medium-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.medium-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.medium-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.medium-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.medium-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.medium-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.medium-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.medium-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.medium-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.medium-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:1024px){.large-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.large-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.large-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.large-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.large-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.large-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.large-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.large-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.large-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.large-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.large-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.large-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.large-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.large-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.large-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.large-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.large-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.large-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.large-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.large-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.large-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.large-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.large-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.large-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.large-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.large-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.large-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.large-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.large-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.large-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.large-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.large-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.large-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.large-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.large-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.large-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.large-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.large-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.large-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.large-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}@media (min-width:1200px){.xlarge-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xlarge-grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.xlarge-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xlarge-grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.xlarge-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xlarge-grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.xlarge-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xlarge-grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.xlarge-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xlarge-grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.xlarge-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xlarge-grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.xlarge-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xlarge-grid-rows-7{grid-template-rows:repeat(7,minmax(0,1fr))}.xlarge-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xlarge-grid-rows-8{grid-template-rows:repeat(8,minmax(0,1fr))}.xlarge-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.xlarge-grid-rows-9{grid-template-rows:repeat(9,minmax(0,1fr))}.xlarge-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xlarge-grid-rows-10{grid-template-rows:repeat(10,minmax(0,1fr))}.xlarge-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.xlarge-grid-rows-11{grid-template-rows:repeat(11,minmax(0,1fr))}.xlarge-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.xlarge-grid-rows-12{grid-template-rows:repeat(12,minmax(0,1fr))}.xlarge-grid-cols-13{grid-template-columns:repeat(13,minmax(0,1fr))}.xlarge-grid-rows-13{grid-template-rows:repeat(13,minmax(0,1fr))}.xlarge-grid-cols-14{grid-template-columns:repeat(14,minmax(0,1fr))}.xlarge-grid-rows-14{grid-template-rows:repeat(14,minmax(0,1fr))}.xlarge-grid-cols-15{grid-template-columns:repeat(15,minmax(0,1fr))}.xlarge-grid-rows-15{grid-template-rows:repeat(15,minmax(0,1fr))}.xlarge-grid-cols-16{grid-template-columns:repeat(16,minmax(0,1fr))}.xlarge-grid-rows-16{grid-template-rows:repeat(16,minmax(0,1fr))}.xlarge-grid-cols-17{grid-template-columns:repeat(17,minmax(0,1fr))}.xlarge-grid-rows-17{grid-template-rows:repeat(17,minmax(0,1fr))}.xlarge-grid-cols-18{grid-template-columns:repeat(18,minmax(0,1fr))}.xlarge-grid-rows-18{grid-template-rows:repeat(18,minmax(0,1fr))}.xlarge-grid-cols-19{grid-template-columns:repeat(19,minmax(0,1fr))}.xlarge-grid-rows-19{grid-template-rows:repeat(19,minmax(0,1fr))}.xlarge-grid-cols-20{grid-template-columns:repeat(20,minmax(0,1fr))}.xlarge-grid-rows-20{grid-template-rows:repeat(20,minmax(0,1fr))}}:root{--f7-calendar-height:340px;--f7-calendar-sheet-landscape-height:220px;--f7-calendar-popover-width:320px;--f7-calendar-popover-height:320px;--f7-calendar-modal-height:420px;--f7-calendar-modal-max-width:380px;--f7-calendar-week-header-bg-color:transparent;--f7-calendar-footer-padding:0 8px;--f7-calendar-week-header-font-size:11px;--f7-calendar-disabled-text-color:#d4d4d4;--f7-calendar-event-dot-size:4px;--f7-calendar-time-selector-height:28px;--f7-calendar-picker-pressed-bg-color:rgba(0,0,0,0.1);--f7-calendar-picker-hover-bg-color:rgba(0,0,0,0.03);--f7-calendar-time-selector-bg-color:rgba(0,0,0,0.05)}:root .dark,:root.dark{--f7-calendar-picker-pressed-bg-color:rgba(255,255,255,0.08);--f7-calendar-picker-hover-bg-color:rgba(255,255,255,0.03);--f7-calendar-time-selector-bg-color:rgba(255,255,255,0.1)}.ios{--f7-calendar-selected-text-color:#fff;--f7-calendar-header-height:44px;--f7-calendar-header-font-size:17px;--f7-calendar-header-font-weight:600;--f7-calendar-header-padding:0 8px;--f7-calendar-footer-height:44px;--f7-calendar-footer-font-size:17px;--f7-calendar-week-header-height:18px;--f7-calendar-day-font-size:15px;--f7-calendar-day-size:30px;--f7-calendar-picker-font-size:17px;--f7-calendar-time-selector-font-size:17px;--f7-calendar-modal-border-radius:4px;--f7-calendar-modal-box-shadow:0px 11px 15px -7px rgba(0,0,0,0.2),0px 24px 38px 3px rgba(0,0,0,0.14),0px 9px 46px 8px rgba(0,0,0,0.12);--f7-calendar-prev-next-text-color:#c8c8c8;--f7-calendar-sheet-border-color:#929499;--f7-calendar-sheet-bg-color:#fff;--f7-calendar-week-header-text-color:#5e5e5e;--f7-calendar-modal-bg-color:#fff;--f7-calendar-day-text-color:#000;--f7-calendar-today-text-color:#000;--f7-calendar-today-bg-color:#e3e3e3}.ios .dark,.ios.dark{--f7-calendar-prev-next-text-color:#5e5e5e;--f7-calendar-sheet-border-color:var(--f7-bars-border-color);--f7-calendar-sheet-bg-color:#121212;--f7-calendar-week-header-text-color:#aaa;--f7-calendar-modal-bg-color:#121212;--f7-calendar-day-text-color:#fff;--f7-calendar-today-text-color:#fff;--f7-calendar-today-bg-color:#333}.md{--f7-calendar-sheet-border-color:transparent;--f7-calendar-header-height:64px;--f7-calendar-header-font-size:24px;--f7-calendar-header-font-weight:400;--f7-calendar-header-padding:0 24px;--f7-calendar-footer-height:56px;--f7-calendar-footer-font-size:14px;--f7-calendar-week-header-height:24px;--f7-calendar-day-font-size:14px;--f7-calendar-today-bg-color:none;--f7-calendar-day-size:32px;--f7-calendar-picker-font-size:14px;--f7-calendar-time-selector-font-size:14px;--f7-calendar-modal-border-radius:28px;--f7-calendar-modal-box-shadow:none}.md,.md .dark,.md [class*=color-]{--f7-calendar-sheet-bg-color:var(--f7-md-surface-1);--f7-calendar-selected-text-color:var(--f7-md-on-primary);--f7-calendar-week-header-text-color:var(--f7-md-on-surface-variant);--f7-calendar-day-text-color:var(--f7-md-on-surface);--f7-calendar-prev-next-text-color:rgba(var(--f7-md-on-surface-variant-rgb),0.55);--f7-calendar-today-text-color:var(--f7-theme-color);--f7-calendar-modal-bg-color:var(--f7-md-surface-1)}.calendar{flex-direction:column;height:var(--f7-calendar-height);overflow:hidden;width:100%}.calendar,.calendar.modal-in{display:flex}@media (orientation:landscape) and (max-height:415px){.calendar.calendar-sheet{height:var(--f7-calendar-sheet-landscape-height)}.calendar.calendar-modal{height:calc(100vh - var(--f7-navbar-height))}}.calendar.calendar-inline,.calendar.calendar-popover .calendar{position:relative}.calendar-sheet{--f7-sheet-border-color:var(--f7-calendar-sheet-border-color);background:var(--f7-calendar-sheet-bg-color);height:calc(var(--f7-calendar-height) + var(--f7-safe-area-bottom));padding-bottom:var(--f7-safe-area-bottom)}.calendar-sheet:before{z-index:600}.calendar-modal .toolbar:before,.calendar-popover .toolbar:before,.calendar-sheet .toolbar:before{display:none}.calendar-popover{width:var(--f7-calendar-popover-width)}.calendar-popover .calendar-header,.calendar-popover .toolbar-top{border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;overflow:hidden}.calendar-popover .calendar-header+.toolbar-top{border-radius:0}.calendar-popover .calendar-footer,.calendar-popover .toolbar-bottom{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.calendar-popover .calendar{height:var(--f7-calendar-popover-height);position:relative;z-index:1}.calendar-popover .calendar-month-picker,.calendar-popover .calendar-time-picker,.calendar-popover .calendar-year-picker{border-radius:var(--f7-popover-border-radius)}.calendar-popover .calendar-month-picker .picker,.calendar-popover .calendar-time-picker .picker,.calendar-popover .calendar-year-picker .picker{display:flex;flex-direction:column;height:100%}.calendar-header{background-color:var(--f7-calendar-header-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-calendar-header-text-color,var(--f7-bars-text-color));flex-shrink:0;font-size:var(--f7-calendar-header-font-size);font-weight:var(--f7-calendar-header-font-weight);height:var(--f7-calendar-header-height);line-height:var(--f7-calendar-header-height);overflow:hidden;padding:var(--f7-calendar-header-padding);position:relative;text-overflow:ellipsis;white-space:nowrap;width:100%}.calendar-header a{color:var(--f7-calendar-header-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer{align-items:center;background-color:var(--f7-calendar-footer-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-calendar-footer-text-color,var(--f7-bars-text-color));display:flex;flex-shrink:0;font-size:var(--f7-calendar-header-font-size);height:var(--f7-calendar-footer-height);justify-content:flex-end;padding:var(--f7-calendar-footer-padding);position:relative;width:100%}.calendar-footer a{color:var(--f7-calendar-footer-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer:before{background-color:var(--f7-calendar-footer-border-color,var(--f7-bars-border-color));bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.calendar-modal{background:var(--f7-calendar-modal-bg-color);border-radius:var(--f7-calendar-modal-border-radius);box-shadow:var(--f7-calendar-modal-box-shadow);display:flex;height:var(--f7-calendar-modal-height);left:50%;max-width:var(--f7-calendar-modal-max-width);min-width:300px;overflow:hidden;position:absolute;top:50%;transform:translate3d(-50%,100vh,0);transition-property:transform;transition-timing-function:cubic-bezier(0,1,.2,1);width:90%;z-index:13500}.calendar-modal.modal-in,.calendar-modal.modal-out{transition-duration:.4s}.calendar-modal.modal-in{transform:translate3d(-50%,-50%,0)}.calendar-modal.modal-out{transform:translate3d(-50%,100vh,0)}.calendar-week-header{background-color:var(--f7-calendar-week-header-bg-color,var(--f7-bars-bg-color));box-sizing:border-box;color:var(--f7-calendar-week-header-text-color,var(--f7-bars-text-color));display:flex;font-size:var(--f7-calendar-week-header-font-size);height:var(--f7-calendar-week-header-height);padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right);position:relative}.calendar-week-header .calendar-week-day{flex-shrink:1;line-height:var(--f7-calendar-week-header-height);text-align:center;width:14.28571%}.calendar-months{flex-shrink:10;height:100%;overflow:hidden;position:relative;width:100%}.calendar-months-wrapper{height:100%;position:relative;transition:.3s;width:100%}.calendar-month{display:flex;flex-direction:column;height:100%;left:0;position:absolute;top:0;width:100%}.calendar-row{box-sizing:border-box;display:flex;flex-shrink:1;height:16.66666667%;padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right);position:relative;width:100%}.calendar-modal .calendar-months:first-child .calendar-row:first-child:before,.calendar-popover .calendar-months:first-child .calendar-row:first-child:before{display:none!important}.calendar-day{align-items:center;box-sizing:border-box;color:var(--f7-calendar-day-text-color);cursor:pointer;display:flex;flex-shrink:1;font-size:var(--f7-calendar-day-font-size);height:100%;justify-content:center;text-align:center;width:14.28571429%;z-index:20}.calendar-day-today .calendar-day-number{background-color:var(--f7-calendar-today-bg-color);color:var(--f7-calendar-today-text-color,var(--f7-theme-color))}.calendar-day-next,.calendar-day-prev{color:var(--f7-calendar-prev-next-text-color)}.calendar-day-disabled{color:var(--f7-calendar-disabled-text-color);cursor:auto}.calendar-day-selected .calendar-day-number{background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color));color:var(--f7-calendar-selected-text-color)}.calendar-day-number{border-radius:50%;display:inline-block;height:var(--f7-calendar-day-size);line-height:var(--f7-calendar-day-size);position:relative;width:var(--f7-calendar-day-size)}.calendar-day-events{align-items:center;display:flex;justify-content:center;left:0;margin-top:1px;position:absolute;top:100%;width:100%}.calendar-day-event{background-color:var(--f7-calendar-event-bg-color);border-radius:calc(var(--f7-calendar-event-dot-size)/2);height:var(--f7-calendar-event-dot-size);width:var(--f7-calendar-event-dot-size)}.calendar-day-event+.calendar-day-event{margin-left:2px}.calendar-day-selected-left,.calendar-day-selected-range,.calendar-day-selected-right{position:relative}.calendar-day-selected-left:before,.calendar-day-selected-range:before,.calendar-day-selected-right:before{background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color));content:"";height:var(--f7-calendar-day-size);left:0;opacity:.2;position:absolute;top:50%;transform:translateY(-50%);width:100%;z-index:-1}.calendar-day-selected-left:before,.calendar-day-selected-range:first-child:before{border-radius:var(--f7-calendar-day-size) 0 0 var(--f7-calendar-day-size);left:auto;right:0;width:calc(50% + var(--f7-calendar-day-size)/2)}.calendar-day-selected-range:last-child:before,.calendar-day-selected-right:before{border-radius:0 var(--f7-calendar-day-size) var(--f7-calendar-day-size) 0;width:calc(50% + var(--f7-calendar-day-size)/2)}.calendar-day-selected-left:last-child:before,.calendar-day-selected-right:first-child:before{display:none}.calendar-day-selected-left.calendar-day-selected-right:before{content:none;display:none}.calendar-day-selected-range .calendar-day-number{background-color:initial;color:inherit}.calendar-month-selector,.calendar-year-selector{align-items:center;display:flex;flex-shrink:10;justify-content:space-between;margin-left:auto;margin-right:auto;max-width:200px;width:50%}.calendar-month-selector .calendar-day-number,.calendar-year-selector .calendar-day-number{flex-shrink:1;overflow:hidden;position:relative;text-overflow:ellipsis}.calendar-month-selector a.icon-only,.calendar-year-selector a.icon-only{min-width:36px}.calendar-month-picker,.calendar-time-picker,.calendar-year-picker{background:transparent;height:100%;position:relative;-webkit-user-select:none;user-select:none;width:100%}.calendar-month-picker .picker-columns,.calendar-year-picker .picker-columns{text-align:center}.calendar-month-picker-item,.calendar-year-picker-item{align-items:center;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;overflow:hidden;position:relative;transition-duration:.1s}.calendar-month-picker-item span,.calendar-year-picker-item span{box-sizing:border-box;overflow:hidden;pointer-events:none;position:relative;text-overflow:ellipsis;white-space:nowrap}.calendar-month-picker-item.active-state,.calendar-year-picker-item.active-state{background:var(--f7-calendar-picker-pressed-bg-color)}.calendar-month-picker-item{padding:5px}.sheet-modal .calendar-month-picker-item{height:33.33333333%;width:25%}.sheet-modal .calendar-month-picker-item:nth-child(4n+1):before,.sheet-modal .calendar-month-picker-item:nth-child(n+9):after{display:none!important}.calendar-modal .calendar-month-picker-item,.popover .calendar-month-picker-item{height:25%;width:33.33333333%}.calendar-modal .calendar-month-picker-item:nth-child(3n+1):before,.calendar-modal .calendar-month-picker-item:nth-child(n+10):after,.popover .calendar-month-picker-item:nth-child(3n+1):before,.popover .calendar-month-picker-item:nth-child(n+10):after{display:none!important}.calendar-month-picker-item-current,.calendar-year-picker-item-current{color:var(--f7-calendar-picker-selected-text-color,var(--f7-theme-color))}.calendar-year-picker{--webkit-overflow-scrolling:touch;overflow:auto}.calendar-year-picker-item{height:34px;line-height:34px;width:100%}.calendar-time-selector{align-items:center;display:flex;flex-shrink:0;font-size:var(--f7-calendar-time-selector-font-size);justify-content:space-between;padding:12px 16px;position:relative}.calendar-time-selector a{align-items:center;background-color:var(--f7-calendar-time-selector-bg-color);border-radius:8px;box-sizing:border-box;display:flex;height:var(--f7-calendar-time-selector-height);justify-content:center;overflow:hidden;padding:0 16px;position:relative}.calendar-time-selector>span{font-weight:500}.calendar-time-selector .segmented{margin-left:8px}.calendar-month-picker-popover,.calendar-time-picker-popover,.calendar-year-picker-popover{height:240px;width:240px}.calendar-month-picker-popover .popover-inner,.calendar-time-picker-popover .popover-inner,.calendar-year-picker-popover .popover-inner{height:100%;overflow:hidden}.calendar-time-picker{--f7-picker-popover-height:100%;--f7-picker-inline-height:100%}.calendar-time-picker .toolbar{flex-shrink:0;top:0!important}.calendar-time-picker .picker{display:flex;flex-direction:column;height:100%}:root{--f7-picker-height:260px;--f7-picker-inline-height:200px;--f7-picker-popover-height:260px;--f7-picker-popover-width:280px;--f7-picker-landscape-height:200px;--f7-picker-item-height:36px}.ios{--f7-picker-column-font-size:20px;--f7-picker-item-selected-text-color:#000;--f7-picker-item-selected-bg-color:rgba(0,0,0,0.12);--f7-picker-divider-text-color:#000;--f7-picker-item-text-color:rgba(0,0,0,0.45)}.ios .dark,.ios.dark{--f7-picker-item-selected-text-color:#fff;--f7-picker-item-selected-bg-color:rgba(255,255,255,0.1);--f7-picker-divider-text-color:#fff;--f7-picker-item-text-color:rgba(255,255,255,0.55)}.md{--f7-picker-column-font-size:20px}.md,.md .dark,.md [class*=color-]{--f7-picker-item-selected-text-color:var(--f7-md-on-surface);--f7-picker-item-text-color:var(--f7-md-on-surface-variant);--f7-picker-divider-text-color:var(--f7-md-on-surface);--f7-picker-item-selected-border-color:var(--f7-md-outline)}.picker{height:var(--f7-picker-height);width:100%}.picker.picker-inline{height:var(--f7-picker-inline-height)}.popover .picker{height:var(--f7-picker-popover-height)}@media (orientation:landscape) and (max-height:415px){.picker:not(.picker-inline){height:var(--f7-picker-landscape-height)}}.picker.sheet-modal{background:var(--f7-picker-sheet-bg-color,var(--f7-sheet-bg-color))}.picker-popover{width:var(--f7-picker-popover-width)}.picker-popover .toolbar{background:none;border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0}.picker-popover .toolbar:before{display:none!important}.picker-popover .toolbar+.picker-columns{height:calc(100% - var(--f7-toolbar-height))}.picker-columns{--f7-picker-mask-bg-color:transparent;display:flex;font-size:var(--f7-picker-column-font-size);height:100%;justify-content:center;overflow:hidden;padding:0;position:relative;text-align:right}.popover .picker-columns{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.picker-columns:after,.picker-columns:before{content:"";height:20%;left:0;pointer-events:none;position:absolute;width:100%;z-index:100}.page .picker-columns{--f7-picker-mask-bg-color:var(--f7-page-bg-color)}.block-strong .picker-columns{--f7-picker-mask-bg-color:var(--f7-block-strong-bg-color)}.picker-sheet .picker-columns{--f7-picker-mask-bg-color:var(--f7-picker-sheet-bg-color,var(--f7-sheet-bg-color))}.picker-popover .picker-columns{--f7-picker-mask-bg-color:var(--f7-popover-bg-color)}.picker-columns:before{background-image:linear-gradient(to bottom,var(--f7-picker-mask-bg-color),transparent);top:0}.picker-columns:after{background-image:linear-gradient(to top,var(--f7-picker-mask-bg-color),transparent);bottom:0}.picker-column{max-height:100%;position:relative;z-index:10}.picker-column.picker-column-first.picker-column-last{width:100%}.picker-column.picker-column-left{text-align:left}.picker-column.picker-column-center{text-align:center}.picker-column.picker-column-right{text-align:right}.picker-column.picker-column-divider{align-items:center;color:var(--f7-picker-divider-text-color);display:flex}.picker-items{box-sizing:border-box;height:100%;overflow:auto;padding:var(--f7-picker-scroll-padding,0) 0;scroll-snap-type:y mandatory;scrollbar-color:transparent;scrollbar-width:none}.picker-items::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.picker-items::-webkit-scrollbar-track{background:transparent;box-shadow:none}.picker-items::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.picker-item{box-sizing:border-box;color:var(--f7-picker-item-text-color);cursor:pointer;height:var(--f7-picker-item-height);left:0;line-height:var(--f7-picker-item-height);overflow:hidden;position:relative;scroll-snap-align:center;text-overflow:ellipsis;top:0;white-space:nowrap;width:100%}.picker-item span{padding:0 10px}.picker-item.picker-item-far{pointer-events:none}.picker-item.picker-item-selected{color:var(--f7-picker-item-selected-text-color);transform:translateZ(0) rotateX(0deg)}.picker-column-free-mode .picker-item{scroll-snap-align:none}.picker-center-highlight{box-sizing:border-box;height:var(--f7-picker-item-height);margin-top:calc(var(--f7-picker-item-height)*-1/2);pointer-events:none;position:absolute;top:50%}.picker-3d .picker-columns{overflow:hidden}.picker-3d .picker-column,.picker-3d .picker-item,.picker-3d .picker-items{transform-style:preserve-3d}.picker-3d .picker-column{overflow:visible}.picker-3d .picker-item{overflow:visible;perspective:1200px}.picker-3d .picker-item>span{-webkit-backface-visibility:hidden;backface-visibility:hidden;box-sizing:border-box;display:block;max-width:100%;overflow:hidden;position:relative;text-overflow:ellipsis;transform-origin:center center -100px;transform-style:preserve-3d}.ios .picker-center-highlight{background-color:var(--f7-picker-item-selected-bg-color);border-radius:8px;left:16px;right:16px}.popover .ios .picker-center-highlight{left:8px;right:8px}.md .picker-center-highlight{border-bottom:1px solid var(--f7-md-outline);border-top:1px solid var(--f7-md-outline);left:0;right:0}.infinite-scroll-preloader{margin-left:auto;margin-right:auto;text-align:center}.infinite-scroll-preloader.preloader{display:block}.ios .infinite-scroll-preloader{margin-bottom:35px;margin-top:35px}.ios .infinite-scroll-preloader .preloader,.ios .infinite-scroll-preloader.preloader{height:27px;width:27px}.md .infinite-scroll-preloader{margin-bottom:32px;margin-top:32px}.ios{--f7-ptr-preloader-size:28px;--f7-ptr-size:44px}.md{--f7-ptr-preloader-size:22px;--f7-ptr-size:40px}.md,.md .dark,.md [class*=color-]{--f7-ptr-preloader-bg-color:var(--f7-md-surface-1);--f7-ptr-preloader-color:var(--f7-md-primary)}.ptr-preloader{height:var(--f7-ptr-size);pointer-events:none;position:relative;top:var(--f7-ptr-top,0)}.ptr-preloader .preloader{height:var(--f7-ptr-preloader-size);left:50%;margin-left:calc(var(--f7-ptr-preloader-size)*-1/2);margin-top:calc(var(--f7-ptr-preloader-size)*-1/2);position:absolute;top:50%;visibility:hidden;width:var(--f7-ptr-preloader-size)}.ptr-bottom .ptr-preloader{bottom:0;position:fixed;top:auto}.ptr-with-navbar-large-transparent .ptr-preloader,.ptr-with-navbar-transparent .ptr-preloader{top:calc(var(--f7-page-navbar-offset, 0px)*-1 + var(--f7-safe-area-top))}.ios .ptr-preloader{left:0;margin-bottom:calc(var(--f7-ptr-size)*-1);position:relative;top:0;width:100%}.ios .ptr-preloader .preloader{visibility:visible}.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner{animation:none}.ios .ptr-content.ptr-closing .ptr-preloader .preloader-inner-line,.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up):not(.ptr-pull-down) .ptr-preloader .preloader-inner-line{opacity:0!important}.ios .ptr-refreshing>*,.ios .ptr-transitioning>*{transition-duration:.2s;transition-property:transform}.ios .ptr-transitioning .ptr-preloader .preloader-inner-line{transition-duration:.2s}.ios .ptr-pull-up .ptr-preloader .preloader{animation:ios-ptr-preloader-spin 1s ease-out forwards}.ios .ptr-refreshing:not(.ptr-bottom){transform:none}.ios .ptr-refreshing:not(.ptr-bottom)>*{transform:translate3d(0,var(--f7-ptr-size),0)}.ios .ptr-refreshing:not(.ptr-bottom)>.ptr-preloader{transform:translateZ(0)}.ios .ptr-bottom .ptr-preloader{margin-bottom:0;margin-top:calc(var(--f7-ptr-size)*-1);position:relative}.ios .ptr-bottom.ptr-refreshing>*,.ios .ptr-bottom.ptr-transitioning>*{transition-duration:.3s;transition-property:transform}.ios .ptr-bottom.ptr-refreshing{transform:none}.ios .ptr-bottom.ptr-refreshing>*{transform:translate3d(0,calc(var(--f7-ptr-size)*-1),0)}.ios .ptr-bottom.ptr-refreshing>.ptr-preloader{transform:translateZ(0)}@keyframes ios-ptr-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(135deg)}}.md{--f7-ptr-top:-4px}.md .ptr-preloader{--f7-preloader-color:var(--f7-ptr-preloader-color);background:var(--f7-ptr-preloader-bg-color);border-radius:50%;box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);left:50%;margin-left:calc(var(--f7-ptr-size)*-1/2);margin-top:calc(var(--f7-ptr-size)*-1);width:var(--f7-ptr-size);z-index:100}.md .ptr-preloader .preloader circle{stroke-width:4}.md .ptr-arrow{border:3px solid var(--f7-preloader-color);border-left:3px solid transparent;border-radius:50%;box-sizing:border-box;height:22px;left:50%;margin-left:-11px;margin-top:-11px;opacity:1;position:absolute;top:50%;transform:rotate(150deg);width:22px}.md .ptr-arrow:after{border-bottom-color:inherit;border-bottom-style:solid;border-bottom-width:6px;border-left:5px solid transparent;border-right:5px solid transparent;bottom:0;content:"";height:0;left:-5px;position:absolute;transform:rotate(-40deg);width:0}.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner,.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader circle{animation:none}.md .ptr-pull-up .ptr-preloader .preloader,.md .ptr-refreshing .ptr-preloader .preloader{visibility:visible}.md .ptr-pull-up .ptr-arrow,.md .ptr-refreshing .ptr-arrow{visibility:hidden}.md .ptr-refreshing .ptr-preloader{transform:translate3d(0,66px,0)}.md .ptr-transitioning .ptr-arrow{transition:.3s}.md .ptr-pull-up .ptr-arrow{opacity:0;transform:rotate(620deg)!important;transition:.4s}.md .ptr-refreshing .ptr-preloader,.md .ptr-transitioning .ptr-preloader{transition-duration:.3s;transition-property:transform,opacity}.md .ptr-bottom .ptr-preloader{margin-bottom:calc(var(--f7-ptr-size)*-1 - 4px);margin-top:0}.md .ptr-bottom.ptr-refreshing .ptr-preloader{transform:translate3d(0,-66px,0)}.md .ptr-with-navbar-large-transparent .ptr-preloader,.md .ptr-with-navbar-transparent .ptr-preloader{opacity:0}.md .ptr-with-navbar-large-transparent.ptr-pull-down .ptr-preloader,.md .ptr-with-navbar-large-transparent.ptr-pull-up .ptr-preloader,.md .ptr-with-navbar-large-transparent.ptr-refreshing .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-pull-down .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-pull-up .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-refreshing .ptr-preloader{opacity:1}.md .ptr-with-navbar-large-transparent.ptr-closing .ptr-preloader,.md .ptr-with-navbar-transparent.ptr-closing .ptr-preloader{opacity:0;transition-duration:.3s}:root{--f7-table-head-font-size:12px;--f7-table-body-font-size:14px;--f7-table-footer-font-size:12px;--f7-table-input-height:24px;--f7-table-input-font-size:14px;--f7-table-collapsible-cell-padding:16px;--f7-table-link-icon-only-icon-size:20px;--f7-table-head-bg-color:transparent;--f7-table-card-header-bg-color:transparent;--f7-table-card-header-height:64px;--f7-table-cell-padding-vertical:0px;--f7-table-sortable-icon-color:#000}:root .dark,:root.dark{--f7-table-sortable-icon-color:#fff;--f7-table-input-text-color:#fff}.ios{--f7-table-head-font-weight:600;--f7-table-head-cell-height:44px;--f7-table-head-icon-size:18px;--f7-table-body-cell-height:44px;--f7-table-cell-padding-horizontal:16px;--f7-table-edge-cell-padding-horizontal:16px;--f7-table-label-cell-padding-horizontal:16px;--f7-table-checkbox-cell-width:22px;--f7-table-title-font-size:17px;--f7-table-title-font-weight:600;--f7-table-footer-height:44px;--f7-table-head-text-color:rgba(0,0,0,0.45);--f7-table-cell-border-color:rgba(0,0,0,0.22);--f7-table-selected-row-bg-color:rgba(0,0,0,0.03);--f7-table-footer-text-color:rgba(0,0,0,0.45);--f7-table-input-text-color:#000}.ios .dark,.ios.dark{--f7-table-head-text-color:rgba(255,255,255,0.55);--f7-table-cell-border-color:rgba(255,255,255,0.15);--f7-table-footer-text-color:rgba(255,255,255,0.55);--f7-table-selected-row-bg-color:rgba(255,255,255,0.08)}.md{--f7-table-head-font-weight:500;--f7-table-head-cell-height:56px;--f7-table-head-icon-size:16px;--f7-table-body-cell-height:48px;--f7-table-cell-padding-horizontal:28px;--f7-table-edge-cell-padding-horizontal:24px;--f7-table-label-cell-padding-horizontal:24px;--f7-table-checkbox-cell-width:18px;--f7-table-title-font-size:20px;--f7-table-title-font-weight:400;--f7-table-footer-height:56px;--f7-table-actions-cell-link-color:rgba(0,0,0,0.54);--f7-table-actions-link-color:rgba(0,0,0,0.54);--f7-table-input-text-color:#212121}.md .dark,.md.dark{--f7-table-actions-cell-link-color:rgba(255,255,255,0.54);--f7-table-actions-link-color:rgba(255,255,255,0.54)}.md,.md .dark,.md [class*=color-]{--f7-table-head-text-color:var(--f7-md-on-surface-variant);--f7-table-footer-text-color:var(--f7-md-on-surface-variant);--f7-table-selected-row-bg-color:var(--f7-md-secondary-container);--f7-table-cell-border-color:var(--f7-md-outline)}.data-table{overflow-x:auto}.data-table table,table.data-table{border:none;border-collapse:collapse;margin:0;padding:0;text-align:left;width:100%}.data-table thead td,.data-table thead th{background-color:var(--f7-table-head-bg-color);font-size:var(--f7-table-head-font-size);font-weight:var(--f7-table-head-font-weight);height:var(--f7-table-head-cell-height);line-height:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table thead td:not(.sortable-cell-active),.data-table thead th:not(.sortable-cell-active){color:var(--f7-table-head-text-color)}.data-table thead i.f7-icons,.data-table thead i.icon,.data-table thead i.material-icons{font-size:var(--f7-table-head-icon-size);vertical-align:top}.data-table tbody{font-size:var(--f7-table-body-font-size)}.data-table tbody td,.data-table tbody th{height:var(--f7-table-body-cell-height)}.data-table tbody tr.data-table-row-selected,.device-desktop .data-table tbody tr:hover{background:var(--f7-table-selected-row-bg-color)}.data-table tbody td:before,.data-table tbody th:before{background-color:var(--f7-table-cell-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.data-table td,.data-table th{--f7-table-cell-padding-left:var(--f7-table-cell-padding-horizontal);--f7-table-cell-padding-right:var(--f7-table-cell-padding-horizontal);box-sizing:border-box;padding:var(--f7-table-cell-padding-vertical) var(--f7-table-cell-padding-right) var(--f7-table-cell-padding-vertical) var(--f7-table-cell-padding-left);position:relative}.data-table td:first-child,.data-table th:first-child{--f7-table-cell-padding-left:var(--f7-table-edge-cell-padding-horizontal)}.data-table td:last-child,.data-table th:last-child{--f7-table-cell-padding-right:var(--f7-table-edge-cell-padding-horizontal)}.data-table td.label-cell,.data-table th.label-cell{--f7-table-cell-padding-left:var(--f7-table-label-cell-padding-horizontal);--f7-table-cell-padding-right:var(--f7-table-label-cell-padding-horizontal)}.data-table td.numeric-cell,.data-table th.numeric-cell{text-align:right}.data-table td.checkbox-cell,.data-table th.checkbox-cell{overflow:visible;width:var(--f7-table-checkbox-cell-width)}.data-table td.checkbox-cell label+span,.data-table th.checkbox-cell label+span{margin-left:8px}.data-table td.checkbox-cell:first-child,.data-table th.checkbox-cell:first-child{padding-right:calc(var(--f7-table-cell-padding-right)/2)}.data-table td.checkbox-cell:first-child+td,.data-table td.checkbox-cell:first-child+th,.data-table td.checkbox-cell:last-child,.data-table th.checkbox-cell:first-child+td,.data-table th.checkbox-cell:first-child+th,.data-table th.checkbox-cell:last-child{padding-left:calc(var(--f7-table-cell-padding-left)/2)}.data-table td.actions-cell,.data-table th.actions-cell{text-align:right;white-space:nowrap}.data-table td.actions-cell a.link,.data-table th.actions-cell a.link{color:var(--f7-table-actions-cell-link-color,var(--f7-theme-color))}.card .data-table td a.icon-only,.card .data-table th a.icon-only,.card.data-table td a.icon-only,.card.data-table th a.icon-only,.data-table td a.icon-only,.data-table th a.icon-only{display:inline-block;font-size:0;min-width:0;text-align:center;vertical-align:middle}.card .data-table td a.icon-only i,.card .data-table th a.icon-only i,.card.data-table td a.icon-only i,.card.data-table th a.icon-only i,.data-table td a.icon-only i,.data-table th a.icon-only i{font-size:var(--f7-table-link-icon-only-icon-size);vertical-align:middle}.data-table .sortable-cell.input-cell .table-head-label,.data-table .sortable-cell:not(.input-cell){cursor:pointer;position:relative}.data-table .sortable-cell.numeric-cell.input-cell>.table-head-label:before,.data-table .sortable-cell.numeric-cell:not(.input-cell):before,.data-table .sortable-cell:not(.numeric-cell).input-cell>.table-head-label:after,.data-table .sortable-cell:not(.numeric-cell):not(.input-cell):after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-table-sortable-icon-color);content:"arrow_bottom_md";direction:ltr;display:block;display:inline-block;font-family:framework7-core-icons;font-size:20px;font-size:13px;font-style:normal;font-weight:400;height:100%;height:16px;letter-spacing:normal;line-height:1;line-height:16px;opacity:0;text-align:center;text-rendering:optimizeLegibility;text-transform:none;transform:rotate(0);transition-duration:.3s;vertical-align:top;white-space:nowrap;width:100%;width:16px}.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:after,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:before,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:after,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:before{opacity:.54}.data-table .sortable-cell.sortable-cell-active .table-head-label:after,.data-table .sortable-cell.sortable-cell-active .table-head-label:before,.data-table .sortable-cell.sortable-cell-active:after,.data-table .sortable-cell.sortable-cell-active:before{opacity:.87!important}.data-table .sortable-cell.sortable-desc:after,.data-table .sortable-cell.sortable-desc:before,.data-table .table-head-label:after,.data-table .table-head-label:before{transform:rotate(180deg)!important}.card .data-table .card-footer,.card .data-table .card-header,.data-table.card .card-footer,.data-table.card .card-header{padding-left:var(--f7-table-edge-cell-padding-horizontal);padding-right:var(--f7-table-edge-cell-padding-horizontal)}.card .data-table .card-header,.data-table.card .card-header{background-color:var(--f7-table-card-header-bg-color);min-height:var(--f7-table-card-header-height)}.card .data-table .card-content,.data-table.card .card-content{overflow-x:auto}.card .data-table .card-footer,.data-table.card .card-footer{min-height:var(--f7-table-footer-height)}.data-table .data-table-title{font-size:var(--f7-table-title-font-size);font-weight:var(--f7-table-title-font-weight)}.data-table .data-table-actions,.data-table .data-table-links{display:flex}.data-table .data-table-links .button{min-width:64px}.data-table .data-table-actions{align-items:center;margin-left:auto}.data-table .data-table-actions a.link{color:var(--f7-table-actions-link-color,var(--f7-theme-color));min-width:0}.data-table .data-table-actions a.link.icon-only{justify-content:center;line-height:1;padding:0}.data-table .data-table-header,.data-table .data-table-header-selected{align-items:center;display:flex;justify-content:space-between;width:100%}.data-table .card-header>.data-table-header,.data-table .card-header>.data-table-header-selected{height:100%;margin:calc(var(--f7-card-header-padding-vertical)*-1) calc(var(--f7-table-edge-cell-padding-horizontal)*-1);min-height:var(--f7-table-card-header-height);padding:var(--f7-card-header-padding-vertical) var(--f7-table-edge-cell-padding-horizontal)}.data-table .data-table-header-selected{background:rgba(var(--f7-theme-color-rgb),.1);display:none}.data-table.data-table-has-checked .data-table-header{display:none}.data-table.data-table-has-checked .data-table-header-selected{display:flex}.data-table .data-table-title-selected{color:var(--f7-theme-color);font-size:14px}.data-table .data-table-footer{align-items:center;box-sizing:border-box;color:var(--f7-table-footer-text-color);display:flex;font-size:var(--f7-table-footer-font-size);justify-content:flex-end;min-height:var(--f7-table-footer-height);overflow:hidden;position:relative}.data-table .data-table-footer:before{background-color:var(--f7-table-cell-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.data-table .data-table-pagination,.data-table .data-table-rows-select{align-items:center;display:flex}.data-table .input-cell{height:auto;padding-bottom:8px;padding-top:8px;vertical-align:top}.data-table .input-cell .table-head-label+.input{margin-top:4px}.data-table .input-cell .input{height:var(--f7-table-input-height)}.data-table .input-cell .input input,.data-table .input-cell .input select,.data-table .input-cell .input textarea{color:var(--f7-table-input-text-color);font-size:var(--f7-table-input-font-size);height:var(--f7-table-input-height)}@media (max-width:480px) and (orientation:portrait){.data-table.data-table-collapsible thead{display:none}.data-table.data-table-collapsible tbody,.data-table.data-table-collapsible td,.data-table.data-table-collapsible tr{display:block}.data-table.data-table-collapsible tr{position:relative}.data-table.data-table-collapsible tr:before{background-color:var(--f7-table-cell-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}.data-table.data-table-collapsible tr:hover{background-color:inherit}.data-table.data-table-collapsible td{--f7-table-cell-padding-left:var(--f7-table-collapsible-cell-padding);--f7-table-cell-padding-right:var(--f7-table-collapsible-cell-padding);align-content:center;align-items:center;display:flex;height:auto;justify-content:flex-start;min-height:var(--f7-table-body-cell-height);text-align:left}.data-table.data-table-collapsible td:before{display:none!important}.data-table.data-table-collapsible td:not(.checkbox-cell):before{background:none!important;color:var(--f7-table-head-text-color);content:attr(data-collapsible-title);display:block!important;flex-shrink:0;font-size:var(--f7-table-head-font-size);font-weight:var(--f7-table-head-font-weight);height:auto;margin-right:16px;position:relative;transform:none!important;width:40%}.data-table.data-table-collapsible td.checkbox-cell{left:0;position:absolute;top:0}.data-table.data-table-collapsible td.checkbox-cell+td{padding-left:16px}.data-table.data-table-collapsible td.checkbox-cell~td{margin-left:32px}}.data-table .xsmall-landscape-only,.data-table .xsmall-only{display:none}@media (min-width:480px){.data-table .xsmall-only{display:table-cell}}@media (min-width:480px) and (orientation:landscape){.data-table .xsmall-landscape-only{display:table-cell}}.data-table .small-landscape-only,.data-table .small-only{display:none}@media (min-width:568px){.data-table .small-only{display:table-cell}}@media (min-width:568px) and (orientation:landscape){.data-table .small-landscape-only{display:table-cell}}.data-table .medium-landscape-only,.data-table .medium-only{display:none}@media (min-width:768px){.data-table .medium-only{display:table-cell}}@media (min-width:768px) and (orientation:landscape){.data-table .medium-landscape-only{display:table-cell}}.data-table .large-landscape-only,.data-table .large-only{display:none}@media (min-width:1024px){.data-table .large-only{display:table-cell}}@media (min-width:1024px) and (orientation:landscape){.data-table .large-landscape-only{display:table-cell}}.data-table .xlarge-landscape-only,.data-table .xlarge-only{display:none}@media (min-width:1200px){.data-table .xlarge-only{display:table-cell}}@media (min-width:1200px) and (orientation:landscape){.data-table .xlarge-landscape-only{display:table-cell}}.ios .data-table td.actions-cell a.link+a.link,.ios .data-table th.actions-cell a.link+a.link{margin-left:16px}.ios .sortable-cell:not(.numeric-cell):after{margin-left:5px}.ios .sortable-cell.numeric-cell:before{margin-right:5px}.ios .data-table-actions .button+.button,.ios .data-table-actions a.link+a.link,.ios .data-table-links .button+.button,.ios .data-table-links a.link+a.link{margin-left:16px}.ios .data-table-actions a.link.icon-only,.ios .data-table-pagination a.link,.ios .data-table-rows-select a.link{height:44px;width:44px}.ios .data-table-rows-select+.data-table-pagination{margin-left:30px}.ios .data-table-rows-select .input{margin-left:20px}.ios .data-table-pagination-label{margin-right:16px}.md .data-table td.actions-cell a.link+a.link,.md .data-table th.actions-cell a.link+a.link{margin-left:24px}.md .data-table td.actions-cell a.icon-only,.md .data-table th.actions-cell a.icon-only{height:24px;line-height:24px;width:24px}.md .sortable-cell:not(.numeric-cell):after{margin-left:8px}.md .sortable-cell.numeric-cell:before{margin-right:8px}.md .data-table-actions .button+.button,.md .data-table-actions a.link+a.link,.md .data-table-links .button+.button,.md .data-table-links a.link+a.link{margin-left:24px}.md .data-table-actions a.link.icon-only{height:24px;overflow:visible;width:24px}.md .data-table-actions a.link.icon-only.active-state{background:none}.md .data-table-pagination a.link,.md .data-table-rows-select a.link{height:48px;width:48px}.md .data-table-rows-select+.data-table-pagination{margin-left:32px}.md .data-table-rows-select .input{margin-left:24px}.md .data-table-pagination-label{margin-right:20px}.md .input-cell .input-clear-button{transform:scale(.8)}:root{--f7-fab-margin:16px;--f7-fab-extended-text-font-size:14px;--f7-fab-label-padding:4px 12px;--f7-fab-label-font-size:inherit;--f7-fab-button-size:40px}.ios{--f7-fab-text-color:#fff;--f7-fab-border-radius:50px;--f7-fab-size:50px;--f7-fab-box-shadow:0px 2px 4px rgba(0,0,0,0.4);--f7-fab-extended-text-transform:uppercase;--f7-fab-extended-size:50px;--f7-fab-extended-text-padding:0 20px;--f7-fab-extended-text-font-weight:600;--f7-fab-extended-text-letter-spacing:0;--f7-fab-label-border-radius:4px;--f7-fab-label-box-shadow:0px 1px 2px rgba(0,0,0,0.4);--f7-fab-label-text-color:#333;--f7-fab-label-bg-color:#fff}.md{--f7-fab-border-radius:16px;--f7-fab-size:56px;--f7-fab-box-shadow:0px 1px 2px rgba(0,0,0,0.25);--f7-fab-extended-size:56px;--f7-fab-extended-text-padding:0 16px;--f7-fab-extended-text-font-weight:500;--f7-fab-extended-text-letter-spacing:0;--f7-fab-extended-text-transform:none;--f7-fab-label-border-radius:8px;--f7-fab-label-box-shadow:0px 1px 2px rgba(0,0,0,0.25)}.md,.md .dark,.md [class*=color-]{--f7-fab-bg-color:var(--f7-md-primary-container);--f7-fab-text-color:var(--f7-md-on-primary-container);--f7-fab-label-text-color:var(--f7-md-on-surface);--f7-fab-label-bg-color:var(--f7-md-surface-5)}.fab-backdrop{z-index:1400}.fab{position:absolute;z-index:1500}.fab a{--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.fab-left-bottom,.fab-left-center,.fab-left-top{left:calc(var(--f7-fab-margin) + var(--f7-safe-area-left))}.fab-right-bottom,.fab-right-center,.fab-right-top{right:calc(var(--f7-fab-margin) + var(--f7-safe-area-right))}.fab-center-top,.fab-left-top,.fab-right-top{top:var(--f7-fab-margin)}.fab-center-bottom,.fab-left-bottom,.fab-right-bottom{bottom:calc(var(--f7-fab-margin) + var(--f7-safe-area-bottom))}.fab-center-bottom,.fab-center-center,.fab-center-top{left:50%;transform:translateX(-50%)}.fab-center-center,.fab-left-center,.fab-right-center{top:50%;transform:translateY(-50%)}.fab-center-center{left:50%;top:50%;transform:translateX(-50%) translateY(-50%)}.fab-buttons a,.fab>a{align-items:center;background-color:var(--f7-fab-bg-color,var(--f7-theme-color));border-radius:var(--f7-fab-border-radius);box-shadow:var(--f7-fab-box-shadow);color:var(--f7-fab-text-color);display:flex;height:var(--f7-fab-size);justify-content:center;overflow:hidden;position:relative;transition-duration:.3s;width:var(--f7-fab-size);z-index:1}.fab>a i{left:50%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0) rotate(0deg) scale(1);transition:.3s}.fab>a i+i{opacity:0;transform:translate3d(-50%,-50%,0) rotate(-90deg) scale(.5)}.fab-buttons a{border-radius:var(--f7-fab-border-radius);height:var(--f7-fab-button-size);width:var(--f7-fab-button-size)}.fab-buttons{display:flex;pointer-events:none;position:absolute;visibility:hidden}.fab-buttons a{opacity:0}.fab-opened:not(.fab-morph)>a i{opacity:0;transform:translate3d(-50%,-50%,0) rotate(90deg) scale(.5)}.fab-opened:not(.fab-morph)>a i+i{opacity:1;transform:translate3d(-50%,-50%,0) rotate(0deg) scale(1)}.fab-opened .fab-buttons{pointer-events:auto;visibility:visible}.fab-opened .fab-buttons a{opacity:1;transform:translateZ(0) scale(1)!important}.fab-opened .fab-buttons a:nth-child(2){transition-delay:50ms}.fab-opened .fab-buttons a:nth-child(3){transition-delay:.1s}.fab-opened .fab-buttons a:nth-child(4){transition-delay:.15s}.fab-opened .fab-buttons a:nth-child(5){transition-delay:.2s}.fab-opened .fab-buttons a:nth-child(6){transition-delay:.25s}.fab-buttons-bottom,.fab-buttons-top{left:50%;margin-left:calc(var(--f7-fab-button-size)*-1/2);width:var(--f7-fab-button-size)}.fab-buttons-top{bottom:100%;flex-direction:column-reverse;margin-bottom:16px}.fab-buttons-top a{transform:translate3d(0,8px,0) scale(.3);transform-origin:center bottom}.fab-buttons-top a+a{margin-bottom:16px}.fab-buttons-bottom{flex-direction:column;margin-top:16px;top:100%}.fab-buttons-bottom a{transform:translate3d(0,-8px,0) scale(.3);transform-origin:center top}.fab-buttons-bottom a+a{margin-top:16px}.fab-buttons-left,.fab-buttons-right{height:var(--f7-fab-button-size);margin-top:calc(var(--f7-fab-button-size)*-1/2);top:50%}.fab-buttons-left{flex-direction:row-reverse;margin-right:16px;right:100%}.fab-buttons-left a{transform:translate3d(8px,0,0) scale(.3);transform-origin:right center}.fab-buttons-left a+a{margin-right:16px}.fab-buttons-right{left:100%;margin-left:16px}.fab-buttons-right a{transform:translate3d(-8px,0,0) scale(.3);transform-origin:left center}.fab-buttons-right a+a{margin-left:16px}.fab-buttons-center{height:100%;left:0;top:0;width:100%}.fab-buttons-center a{position:absolute}.fab-buttons-center a:first-child{bottom:100%;left:50%;margin-bottom:16px;margin-left:calc(var(--f7-fab-button-size)*-1/2);transform:translateY(-8px) scale(.3);transform-origin:center bottom}.fab-buttons-center a:nth-child(2){left:100%;margin-left:16px;margin-top:calc(var(--f7-fab-button-size)*-1/2);top:50%;transform:translateX(-8px) scale(.3);transform-origin:left center}.fab-buttons-center a:nth-child(3){left:50%;margin-left:calc(var(--f7-fab-button-size)*-1/2);margin-top:16px;top:100%;transform:translateY(8px) scale(.3);transform-origin:center top}.fab-buttons-center a:nth-child(4){margin-right:16px;margin-top:calc(var(--f7-fab-button-size)*-1/2);right:100%;top:50%;transform:translateX(8px) scale(.3);transform-origin:right center}.fab-morph{background:var(--f7-fab-bg-color,var(--f7-theme-color));border-radius:var(--f7-fab-border-radius);box-shadow:var(--f7-fab-box-shadow)}.fab-morph>a{background:none!important;box-shadow:none}.fab-opened.fab-morph>a i{opacity:0}.fab-morph,.fab-morph-target,.fab-morph>a{transition-duration:.25s}.fab-morph-target:not(.fab-morph-target-visible){display:none}.fab-extended{min-width:var(--f7-fab-extended-size);width:auto}.fab-extended>a{height:var(--f7-fab-extended-size);width:100%}.fab-extended>a i{left:calc(var(--f7-fab-extended-size)/2)}.fab-extended i~.fab-text{padding-left:var(--f7-fab-extended-size)}.fab-extended>a{width:100%!important}.fab-text{box-sizing:border-box;font-size:var(--f7-fab-extended-text-font-size);font-weight:var(--f7-fab-extended-text-font-weight);letter-spacing:var(--f7-fab-extended-text-letter-spacing);padding:var(--f7-fab-extended-text-padding);text-transform:var(--f7-fab-extended-text-transform)}.fab-label-button{overflow:visible!important}.fab-label{background:var(--f7-fab-label-bg-color);border-radius:var(--f7-fab-label-border-radius);box-shadow:var(--f7-fab-label-box-shadow);color:var(--f7-fab-label-text-color);font-size:var(--f7-fab-label-font-size);padding:var(--f7-fab-label-padding);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);white-space:nowrap}.fab-right-bottom .fab-label,.fab-right-center .fab-label,.fab-right-top .fab-label{margin-right:8px;right:100%}.fab-left-bottom .fab-label,.fab-left-center .fab-label,.fab-left-top .fab-label{left:100%;margin-left:8px}.navbars~* .fab-center-top,.navbars~* .fab-left-top,.navbars~* .fab-right-top,.navbars~.fab-center-top,.navbars~.fab-left-top,.navbars~.fab-right-top,.navbar~* .fab-center-top,.navbar~* .fab-left-top,.navbar~* .fab-right-top,.navbar~.fab-center-top,.navbar~.fab-left-top,.navbar~.fab-right-top{margin-top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .toolbar-top-ios~* .fab-center-top,.ios .toolbar-top-ios~* .fab-left-top,.ios .toolbar-top-ios~* .fab-right-top,.ios .toolbar-top-ios~.fab-center-top,.ios .toolbar-top-ios~.fab-left-top,.ios .toolbar-top-ios~.fab-right-top,.md .toolbar-top-md~* .fab-center-top,.md .toolbar-top-md~* .fab-left-top,.md .toolbar-top-md~* .fab-right-top,.md .toolbar-top-md~.fab-center-top,.md .toolbar-top-md~.fab-left-top,.md .toolbar-top-md~.fab-right-top,.toolbar-top~* .fab-center-top,.toolbar-top~* .fab-left-top,.toolbar-top~* .fab-right-top,.toolbar-top~.fab-center-top,.toolbar-top~.fab-left-top,.toolbar-top~.fab-right-top{margin-top:var(--f7-toolbar-height)}.ios .toolbar-bottom-ios~* .fab-center-bottom,.ios .toolbar-bottom-ios~* .fab-left-bottom,.ios .toolbar-bottom-ios~* .fab-right-bottom,.ios .toolbar-bottom-ios~.fab-center-bottom,.ios .toolbar-bottom-ios~.fab-left-bottom,.ios .toolbar-bottom-ios~.fab-right-bottom,.md .toolbar-bottom-md~* .fab-center-bottom,.md .toolbar-bottom-md~* .fab-left-bottom,.md .toolbar-bottom-md~* .fab-right-bottom,.md .toolbar-bottom-md~.fab-center-bottom,.md .toolbar-bottom-md~.fab-left-bottom,.md .toolbar-bottom-md~.fab-right-bottom,.toolbar-bottom~* .fab-center-bottom,.toolbar-bottom~* .fab-left-bottom,.toolbar-bottom~* .fab-right-bottom,.toolbar-bottom~.fab-center-bottom,.toolbar-bottom~.fab-left-bottom,.toolbar-bottom~.fab-right-bottom{margin-bottom:var(--f7-toolbar-height)}.ios .tabbar-icons.toolbar-bottom-ios~* .fab-center-bottom,.ios .tabbar-icons.toolbar-bottom-ios~* .fab-left-bottom,.ios .tabbar-icons.toolbar-bottom-ios~* .fab-right-bottom,.ios .tabbar-icons.toolbar-bottom-ios~.fab-center-bottom,.ios .tabbar-icons.toolbar-bottom-ios~.fab-left-bottom,.ios .tabbar-icons.toolbar-bottom-ios~.fab-right-bottom,.md .tabbar-icons.toolbar-bottom-md~* .fab-center-bottom,.md .tabbar-icons.toolbar-bottom-md~* .fab-left-bottom,.md .tabbar-icons.toolbar-bottom-md~* .fab-right-bottom,.md .tabbar-icons.toolbar-bottom-md~.fab-center-bottom,.md .tabbar-icons.toolbar-bottom-md~.fab-left-bottom,.md .tabbar-icons.toolbar-bottom-md~.fab-right-bottom,.tabbar-icons.toolbar-bottom~* .fab-center-bottom,.tabbar-icons.toolbar-bottom~* .fab-left-bottom,.tabbar-icons.toolbar-bottom~* .fab-right-bottom,.tabbar-icons.toolbar-bottom~.fab-center-bottom,.tabbar-icons.toolbar-bottom~.fab-left-bottom,.tabbar-icons.toolbar-bottom~.fab-right-bottom{margin-bottom:var(--f7-tabbar-icons-height)}.ios .tabbar-icons.toolbar-top-ios~* .fab-center-bottom,.ios .tabbar-icons.toolbar-top-ios~* .fab-left-bottom,.ios .tabbar-icons.toolbar-top-ios~* .fab-right-bottom,.ios .tabbar-icons.toolbar-top-ios~.fab-center-bottom,.ios .tabbar-icons.toolbar-top-ios~.fab-left-bottom,.ios .tabbar-icons.toolbar-top-ios~.fab-right-bottom,.md .tabbar-icons.toolbar-top-md~* .fab-center-bottom,.md .tabbar-icons.toolbar-top-md~* .fab-left-bottom,.md .tabbar-icons.toolbar-top-md~* .fab-right-bottom,.md .tabbar-icons.toolbar-top-md~.fab-center-bottom,.md .tabbar-icons.toolbar-top-md~.fab-left-bottom,.md .tabbar-icons.toolbar-top-md~.fab-right-bottom,.tabbar-icons.toolbar-top~* .fab-center-bottom,.tabbar-icons.toolbar-top~* .fab-left-bottom,.tabbar-icons.toolbar-top~* .fab-right-bottom,.tabbar-icons.toolbar-top~.fab-center-bottom,.tabbar-icons.toolbar-top~.fab-left-bottom,.tabbar-icons.toolbar-top~.fab-right-bottom{margin-top:var(--f7-tabbar-icons-height)}.messagebar~* .fab-center-bottom,.messagebar~* .fab-left-bottom,.messagebar~* .fab-right-bottom,.messagebar~.fab-center-bottom,.messagebar~.fab-left-bottom,.messagebar~.fab-right-bottom{margin-bottom:var(--f7-messagebar-height)}.ios .navbar+.toolbar-top-ios~* .fab-center-top,.ios .navbar+.toolbar-top-ios~* .fab-left-top,.ios .navbar+.toolbar-top-ios~* .fab-right-top,.ios .navbar+.toolbar-top-ios~.fab-center-top,.ios .navbar+.toolbar-top-ios~.fab-left-top,.ios .navbar+.toolbar-top-ios~.fab-right-top,.md .navbar+.toolbar-top-ios~* .fab-center-top,.md .navbar+.toolbar-top-ios~* .fab-left-top,.md .navbar+.toolbar-top-ios~* .fab-right-top,.md .navbar+.toolbar-top-ios~.fab-center-top,.md .navbar+.toolbar-top-ios~.fab-left-top,.md .navbar+.toolbar-top-ios~.fab-right-top,.navbar+.toolbar-top~* .fab-center-top,.navbar+.toolbar-top~* .fab-left-top,.navbar+.toolbar-top~* .fab-right-top,.navbar+.toolbar-top~.fab-center-top,.navbar+.toolbar-top~.fab-left-top,.navbar+.toolbar-top~.fab-right-top{margin-top:calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbar+.toolbar-top-ios.tabbar-icons~* .fab-center-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~* .fab-left-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~* .fab-right-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~.fab-center-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~.fab-left-top,.ios .navbar+.toolbar-top-ios.tabbar-icons~.fab-right-top,.md .navbar+.toolbar-top-ios.tabbar-icons~* .fab-center-top,.md .navbar+.toolbar-top-ios.tabbar-icons~* .fab-left-top,.md .navbar+.toolbar-top-ios.tabbar-icons~* .fab-right-top,.md .navbar+.toolbar-top-ios.tabbar-icons~.fab-center-top,.md .navbar+.toolbar-top-ios.tabbar-icons~.fab-left-top,.md .navbar+.toolbar-top-ios.tabbar-icons~.fab-right-top,.navbar+.toolbar-top.tabbar-icons~* .fab-center-top,.navbar+.toolbar-top.tabbar-icons~* .fab-left-top,.navbar+.toolbar-top.tabbar-icons~* .fab-right-top,.navbar+.toolbar-top.tabbar-icons~.fab-center-top,.navbar+.toolbar-top.tabbar-icons~.fab-left-top,.navbar+.toolbar-top.tabbar-icons~.fab-right-top{margin-top:calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars+.toolbar-top-ios~* .fab-center-top,.ios .navbars+.toolbar-top-ios~* .fab-left-top,.ios .navbars+.toolbar-top-ios~* .fab-right-top,.ios .navbars+.toolbar-top-ios~.fab-center-top,.ios .navbars+.toolbar-top-ios~.fab-left-top,.ios .navbars+.toolbar-top-ios~.fab-right-top,.navbars+.toolbar-top~* .fab-center-top,.navbars+.toolbar-top~* .fab-left-top,.navbars+.toolbar-top~* .fab-right-top,.navbars+.toolbar-top~.fab-center-top,.navbars+.toolbar-top~.fab-left-top,.navbars+.toolbar-top~.fab-right-top{margin-top:calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars+.toolbar-top-ios.tabbar-icons~* .fab-center-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~* .fab-left-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~* .fab-right-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~.fab-center-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~.fab-left-top,.ios .navbars+.toolbar-top-ios.tabbar-icons~.fab-right-top,.navbars+.toolbar-top.tabbar-icons~* .fab-center-top,.navbars+.toolbar-top.tabbar-icons~* .fab-left-top,.navbars+.toolbar-top.tabbar-icons~* .fab-right-top,.navbars+.toolbar-top.tabbar-icons~.fab-center-top,.navbars+.toolbar-top.tabbar-icons~.fab-left-top,.navbars+.toolbar-top.tabbar-icons~.fab-right-top{margin-top:calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .fab-buttons a.active-state,.ios .fab>a.active-state{background-color:var(--f7-fab-pressed-bg-color,var(--f7-theme-color-shade));transition-duration:0ms}.md .fab-buttons a.active-state,.md .fab>a.active-state{background-color:var(--f7-fab-pressed-bg-color,var(--f7-fab-bg-color,var(--f7-theme-color)))}:root{--f7-searchbar-input-border-width:0px;--f7-searchbar-input-border-color:transparent}.ios{--f7-searchbar-height:44px;--f7-searchbar-inner-padding-left:8px;--f7-searchbar-inner-padding-right:8px;--f7-searchbar-input-font-size:17px;--f7-searchbar-input-border-radius:8px;--f7-searchbar-input-height:32px;--f7-searchbar-inline-input-height:32px;--f7-searchbar-input-padding-horizontal:28px;--f7-searchbar-backdrop-bg-color:rgba(0,0,0,0.4);--f7-searchbar-in-page-content-margin:0px;--f7-searchbar-in-page-content-box-shadow:none;--f7-searchbar-in-page-content-border-radius:0;--f7-searchbar-in-page-content-input-border-radius:0;--f7-searchbar-placeholder-color:rgba(0,0,0,0.4);--f7-searchbar-input-text-color:#000;--f7-searchbar-search-icon-color:rgba(0,0,0,0.4);--f7-searchbar-input-bg-color:#e4e4e4}.ios .dark,.ios.dark{--f7-searchbar-placeholder-color:rgba(255,255,255,0.4);--f7-searchbar-input-text-color:#fff;--f7-searchbar-search-icon-color:rgba(255,255,255,0.4);--f7-searchbar-input-bg-color:#2a2a2a}.md{--f7-searchbar-border-color:transparent;--f7-searchbar-height:48px;--f7-searchbar-inner-padding-left:8px;--f7-searchbar-inner-padding-right:8px;--f7-searchbar-input-font-size:16px;--f7-searchbar-input-border-radius:24px;--f7-searchbar-input-height:48px;--f7-searchbar-inline-input-height:48px;--f7-searchbar-inline-input-border-radius:24px;--f7-searchbar-input-padding-horizontal:16px;--f7-searchbar-inline-input-padding-horizontal:16px;--f7-searchbar-backdrop-bg-color:rgba(0,0,0,0.25);--f7-searchbar-in-page-content-margin:16px 0;--f7-searchbar-in-page-content-box-shadow:none;--f7-searchbar-in-page-content-border-radius:24px;--f7-searchbar-in-page-content-input-border-radius:24px;--f7-searchbar-bg-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-searchbar-link-color:var(--f7-md-on-surface);--f7-searchbar-search-icon-color:var(--f7-md-on-surface);--f7-searchbar-input-clear-button-color:var(--f7-md-on-surface);--f7-searchbar-placeholder-color:var(--f7-md-on-surface-variant);--f7-searchbar-input-bg-color:var(--f7-md-secondary-container);--f7-searchbar-input-text-color:var(--f7-md-on-surface)}.searchbar{--f7-link-highlight-color:var(--f7-link-highlight-black);background-color:var(--f7-searchbar-bg-color,var(--f7-bars-bg-color));height:var(--f7-searchbar-height);position:relative;width:100%;z-index:200}.dark .searchbar{--f7-link-highlight-color:var(--f7-link-highlight-white)}.searchbar input[type=search]::-webkit-search-decoration{display:none}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .searchbar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-searchbar-bg-color-rgb,var(--f7-bars-bg-color-rgb)),var(--f7-bars-translucent-opacity))}}.ios .subnavbar .searchbar{-webkit-backdrop-filter:none;backdrop-filter:none;background-color:initial}.ios .subnavbar .searchbar:after,.searchbar.no-outline:after{display:none!important}.searchbar:after{background-color:var(--f7-searchbar-border-color,var(--f7-bars-border-color));bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}.page>.searchbar:not(.searchbar-inline){z-index:600}.searchbar input[type=search],.searchbar input[type=text]{-webkit-appearance:none;appearance:none;background-color:var(--f7-searchbar-input-bg-color);border:var(--f7-searchbar-input-border-width) solid var(--f7-searchbar-input-border-color);border-radius:var(--f7-searchbar-input-border-radius);box-sizing:border-box;color:var(--f7-searchbar-input-text-color);display:block;font-family:inherit;font-size:var(--f7-searchbar-input-font-size);font-weight:400;height:100%;padding:0;padding-left:calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px));padding-right:calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-right, 0px));position:relative;width:100%}.searchbar input[type=search]::placeholder,.searchbar input[type=text]::placeholder{color:var(--f7-searchbar-placeholder-color);opacity:1}.searchbar input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}.searchbar .searchbar-input-wrap{flex-shrink:1;height:var(--f7-searchbar-input-height);position:relative;width:100%}.searchbar a{color:var(--f7-searchbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.page>.searchbar:not(.searchbar-inline){left:0;position:absolute;top:0}.page-content .searchbar:not(.searchbar-inline){border-radius:var(--f7-searchbar-in-page-content-border-radius);box-shadow:var(--f7-searchbar-in-page-content-box-shadow);margin:var(--f7-searchbar-in-page-content-margin);width:auto}.page-content .searchbar:not(.searchbar-inline) .searchbar-inner,.page-content .searchbar:not(.searchbar-inline) input[type=search],.page-content .searchbar:not(.searchbar-inline) input[type=text]{border-radius:var(--f7-searchbar-in-page-content-input-border-radius,var(--f7-searchbar-input-border-radius))}.searchbar .input-clear-button{color:var(--f7-searchbar-input-clear-button-color,var(--f7-input-clear-button-color))}.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-searchbar-height);pointer-events:none;position:absolute;transition-duration:.3s}.navbar .searchbar-expandable{background:transparent}.navbar .searchbar-expandable:after{display:none!important}.navbar .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbar .searchbar.searchbar-expandable .searchbar-inner{height:calc(100% - var(--f7-safe-area-top));top:var(--f7-safe-area-top)}.toolbar .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-toolbar-height)}.subnavbar .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-subnavbar-height)}.tabbar-icons .searchbar.searchbar-expandable{--f7-searchbar-expandable-size:var(--f7-tabbar-icons-height)}.searchbar-inner{align-items:center;box-sizing:border-box;display:flex;height:100%;left:0;padding:0 calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left));position:absolute;top:0;width:100%}.searchbar-disable-button{-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;margin:0;opacity:0;outline:0;padding:0;pointer-events:none;width:auto}.searchbar-icon{background-position:50%;background-repeat:no-repeat;pointer-events:none}.searchbar-icon:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";color:var(--f7-searchbar-search-icon-color);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.searchbar-backdrop{background:var(--f7-searchbar-backdrop-bg-color);height:100%;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transform:translateZ(0);transition-duration:.3s;width:100%;z-index:100}.searchbar-backdrop.searchbar-backdrop-in{opacity:1;pointer-events:auto}.page-content>.searchbar-backdrop{position:fixed}.searchbar-not-found{display:none}.hidden-by-searchbar,.list .hidden-by-searchbar,.list li.hidden-by-searchbar,.list.li.hidden-by-searchbar{display:none!important}.navbar.with-searchbar-expandable-enabled,.navbar.with-searchbar-expandable-enabled-no-transition{--f7-navbar-large-collapse-progress:1}.navbar.with-searchbar-expandable-closing .navbar-bg,.navbar.with-searchbar-expandable-closing .title-large,.navbar.with-searchbar-expandable-closing .title-large-text,.navbar.with-searchbar-expandable-enabled .navbar-bg,.navbar.with-searchbar-expandable-enabled .title-large,.navbar.with-searchbar-expandable-enabled .title-large-text{transition-duration:.3s}.page-content.with-searchbar-expandable-enabled{height:calc(100% + var(--f7-navbar-large-title-height));transform:translateY(calc(var(--f7-navbar-large-title-height)*-1));transition-duration:.3s;transition-property:transform}.page-content.with-searchbar-expandable-closing{transition-duration:.3s}.navbars~.page:not(.no-navbar)>.searchbar,.navbar~.page:not(.no-navbar)>.searchbar,.page>.navbar~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.navbars~.page-with-navbar-large:not(.no-navbar) .searchbar,.navbar~.page-with-navbar-large:not(.no-navbar) .searchbar,.page-with-navbar-large .navbar~* .searchbar,.page-with-navbar-large .navbar~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));transform:translate3d(0,calc(var(--f7-navbar-large-collapse-progress)*-1*var(--f7-navbar-large-title-height)),0)}.navbars~.page-with-navbar-large:not(.no-navbar) .page-content .searchbar,.page-with-navbar-large .page-content .searchbar{top:0;transform:none}.searchbar~*{--f7-page-searchbar-offset:var(--f7-searchbar-height)}.ios .page>.toolbar-top-ios~.searchbar,.md .page>.toolbar-top-md~.searchbar,.page>.toolbar-top~.searchbar{top:var(--f7-toolbar-height)}.ios .page>.tabbar-icons.toolbar-top-ios~.searchbar,.md .page>.tabbar-icons.toolbar-top-md~.searchbar,.page>.tabbar-icons.toolbar-top~.searchbar{top:var(--f7-tabbar-icons-height)}.ios .page>.navbar~.toolbar-top-ios~.searchbar,.md .page>.navbar~.toolbar-top-md~.searchbar,.page>.navbar~.toolbar-top~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top))}.ios .page>.navbar~.tabbar-icons.toolbar-top-ios~.searchbar,.md .page>.navbar~.tabbar-icons.toolbar-top-md~.searchbar,.page>.navbar~.tabbar-icons.toolbar-top~.searchbar{top:calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top))}.searchbar.searchbar-inline{background-color:initial;background-image:none;height:auto;width:auto}.searchbar.searchbar-inline:after,.searchbar.searchbar-inline:before{display:none!important}.searchbar.searchbar-inline .searchbar-input-wrap{height:var(--f7-searchbar-inline-input-height,var(--f7-searchbar-input-height))}.searchbar.searchbar-inline .searchbar-inner{height:auto;padding:0;position:static;width:auto}.searchbar.searchbar-inline input[type=search],.searchbar.searchbar-inline input[type=text]{border-radius:var(--f7-searchbar-inline-input-border-radius,var(--f7-searchbar-input-border-radius));font-size:var(--f7-searchbar-inline-input-font-size,var(--f7-searchbar-input-font-size));padding-left:calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-left, 0px));padding-right:calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-right, 0px))}.ios .searchbar input[type=search],.ios .searchbar input[type=text]{z-index:30}.ios .searchbar .input-clear-button{right:7px;z-index:40}.ios .searchbar-icon{height:13px;left:8px;margin-top:-6px;position:absolute;top:50%;width:13px;z-index:40}.ios .searchbar-icon:after{content:"search_ios";line-height:13px}.ios .searchbar-disable-button{color:var(--f7-searchbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)));display:none;flex-shrink:0;font-size:17px;transform:translateZ(0);transition-duration:.3s}.ios .searchbar-disable-button.active-state{opacity:.3!important;transition-duration:0ms}.ios .searchbar-enabled .searchbar-disable-button{margin-left:8px;opacity:1;pointer-events:auto}.ios .searchbar:not(.searchbar-enabled) .searchbar-disable-button{transition-duration:.3s!important}.ios .searchbar-expandable{bottom:0;height:0;left:0;opacity:1;overflow:hidden;transform:translateZ(0);width:100%}.ios .searchbar-expandable .searchbar-disable-button{display:block;margin-left:8px;opacity:1}.ios .searchbar-expandable .searchbar-inner{height:var(--f7-searchbar-expandable-size)}.ios .navbar.with-searchbar-expandable-closing .navbar-bg,.ios .navbar.with-searchbar-expandable-enabled .navbar-bg{transition-property:transform,opacity}.ios .navbar.with-searchbar-expandable-closing .left,.ios .navbar.with-searchbar-expandable-closing .navbar-bg,.ios .navbar.with-searchbar-expandable-closing .right,.ios .navbar.with-searchbar-expandable-closing .title,.ios .navbar.with-searchbar-expandable-enabled .left,.ios .navbar.with-searchbar-expandable-enabled .navbar-bg,.ios .navbar.with-searchbar-expandable-enabled .right,.ios .navbar.with-searchbar-expandable-enabled .title{transition-duration:.3s}.ios .navbar.with-searchbar-expandable-enabled .left,.ios .navbar.with-searchbar-expandable-enabled .right,.ios .navbar.with-searchbar-expandable-enabled .title,.ios .navbar.with-searchbar-expandable-enabled-no-transition .left,.ios .navbar.with-searchbar-expandable-enabled-no-transition .right,.ios .navbar.with-searchbar-expandable-enabled-no-transition .title{opacity:0!important;transform:translateY(calc(var(--f7-navbar-height)*-1))}.ios .searchbar-expandable.searchbar-enabled{height:var(--f7-searchbar-expandable-size);opacity:1;pointer-events:auto}.md .searchbar-disable-button,.md .searchbar-icon{position:absolute;top:50%;transition-duration:.3s}.md .searchbar-icon{align-items:center;display:flex;height:48px;justify-content:center;left:0;left:var(--f7-safe-area-left);top:0;width:48px}.md .searchbar-icon:after{content:"search_md";height:auto;line-height:1.2;width:auto}.md .searchbar-disable-button{color:var(--f7-searchbar-link-color,var(--f7-bars-link-color,var(--f7-theme-color)));display:block;font-size:0!important;height:48px;left:calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left));margin-top:-24px;transform:rotate(-90deg) scale(.5);width:48px}.md .searchbar-disable-button:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";content:"arrow_left_md";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;line-height:48px;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%}.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-disable-button{opacity:1;pointer-events:auto;transform:rotate(0deg) scale(1)}.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-icon{opacity:0;transform:rotate(90deg) scale(.5)}.md .searchbar{--f7-searchbar-input-extra-padding-left:34px}.md .searchbar .input-clear-button{height:48px;margin-top:-24px;right:0;width:48px}.md .searchbar .input-clear-button:after{content:"delete_round_md";line-height:48px;opacity:1}.md .searchbar .input-clear-button:before{display:none}.md .searchbar-inline{--f7-searchbar-input-extra-padding-left:32px}.md .page>.searchbar,.md .searchbar-expandable,.md .subnavbar .searchbar{--f7-searchbar-input-extra-padding-left:34px}.md .page>.searchbar .searchbar-disable-button,.md .searchbar-expandable .searchbar-disable-button,.md .subnavbar .searchbar .searchbar-disable-button{left:calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left))}.md .page>.searchbar .searchbar-icon,.md .searchbar-expandable .searchbar-icon,.md .subnavbar .searchbar .searchbar-icon{left:var(--f7-safe-area-left)}.md .searchbar-expandable{--f7-searchbar-inner-padding-left:4px;--f7-searchbar-inner-padding-right:4px;background-color:var(--f7-searchbar-input-bg-color);border-radius:calc(var(--f7-searchbar-expandable-size));bottom:0;height:var(--f7-searchbar-expandable-size);left:100%;margin-left:calc(var(--f7-searchbar-expandable-size)*-1);margin-top:calc(var(--f7-searchbar-expandable-size)*-1/2);opacity:0;transform:translateZ(0);width:calc(var(--f7-searchbar-expandable-size))}.md .searchbar-expandable.searchbar-enabled{border-radius:0;left:0;margin-left:0;margin-top:0;opacity:1;pointer-events:auto;width:100%}:root{--f7-message-text-header-opacity:0.65;--f7-message-text-header-font-size:12px;--f7-message-text-footer-opacity:0.65;--f7-message-text-footer-font-size:12px;--f7-message-bubble-line-height:1.2;--f7-message-header-font-size:12px;--f7-message-footer-font-size:11px;--f7-message-name-font-size:12px;--f7-message-name-font-weight:inherit;--f7-message-avatar-border-radius:50%;--f7-messages-title-font-weight:inherit;--f7-message-typing-indicator-bg-color:#000}:root .dark,:root.dark{--f7-message-typing-indicator-bg-color:#fff}.ios{--f7-message-text-header-text-color:inherit;--f7-message-text-footer-text-color:inherit;--f7-messages-title-font-size:11px;--f7-message-avatar-size:29px;--f7-message-margin:10px;--f7-message-bubble-min-height:32px;--f7-message-bubble-font-size:17px;--f7-message-bubble-border-radius:16px;--f7-message-bubble-padding-vertical:6px;--f7-message-bubble-padding-horizontal:16px;--f7-message-typing-indicator-opacity:0.35;--f7-message-sent-text-color:#fff;--f7-messages-content-bg-color:#fff;--f7-message-received-text-color:#000;--f7-message-received-bg-color:#e5e5ea;--f7-messages-title-text-color:rgba(0,0,0,0.45);--f7-message-header-text-color:rgba(0,0,0,0.45);--f7-message-footer-text-color:rgba(0,0,0,0.45);--f7-message-name-text-color:rgba(0,0,0,0.45)}.ios .dark,.ios.dark{--f7-message-received-bg-color:#252525;--f7-message-received-text-color:#fff;--f7-messages-content-bg-color:transparent;--f7-messages-title-text-color:rgba(255,255,255,0.54);--f7-message-header-text-color:rgba(255,255,255,0.54);--f7-message-name-text-color:rgba(255,255,255,0.54);--f7-message-footer-text-color:rgba(255,255,255,0.54)}.md{--f7-messages-content-bg-color:transparent;--f7-messages-title-font-size:12px;--f7-message-avatar-size:32px;--f7-message-margin:16px;--f7-message-bubble-min-height:40px;--f7-message-bubble-font-size:16px;--f7-message-bubble-border-radius:20px;--f7-message-bubble-padding-vertical:10px;--f7-message-bubble-padding-horizontal:16px;--f7-message-typing-indicator-opacity:0.6}.md,.md .dark,.md [class*=color-]{--f7-message-sent-bg-color:var(--f7-md-primary);--f7-message-sent-text-color:var(--f7-md-on-primary);--f7-message-received-bg-color:var(--f7-md-surface-variant);--f7-message-received-text-color:var(--f7-md-on-surface);--f7-message-text-header-text-color:var(--f7-md-on-surface-variant);--f7-message-text-footer-text-color:var(--f7-md-on-surface-variant);--f7-messages-title-text-color:var(--f7-md-on-surface-variant);--f7-message-header-text-color:var(--f7-md-on-surface-variant);--f7-message-footer-text-color:var(--f7-md-on-surface-variant);--f7-message-name-text-color:var(--f7-md-on-surface-variant)}.messages,.messages-content{background:var(--f7-messages-content-bg-color)}.messages{display:flex;flex-direction:column;min-height:100%;position:relative;z-index:1}.message,.messages-title{margin-top:var(--f7-message-margin)}.message:last-child,.messages-title:last-child{margin-bottom:var(--f7-message-margin)}.messages-title{color:var(--f7-messages-title-text-color);font-size:var(--f7-messages-title-font-size);font-weight:var(--f7-messages-title-font-weight);line-height:1;text-align:center;width:100%}.message{align-items:flex-end;box-sizing:border-box;display:flex;max-width:70%;position:relative;transform:translateZ(0);z-index:1}.message-avatar{align-self:flex-end;background-size:cover;border-radius:var(--f7-message-avatar-border-radius);flex-shrink:0;height:var(--f7-message-avatar-size);position:relative;width:var(--f7-message-avatar-size)}.message-content{display:flex;flex-direction:column;position:relative}.message-footer,.message-header,.message-name{line-height:1}.message-header{color:var(--f7-message-header-text-color);font-size:var(--f7-message-header-font-size)}.message-footer{color:var(--f7-message-footer-text-color);font-size:var(--f7-message-footer-font-size);margin-bottom:-1em}.message-name{color:var(--f7-message-name-text-color);font-size:var(--f7-message-name-font-size);font-weight:var(--f7-message-name-font-weight)}.message-bubble{border-radius:var(--f7-message-bubble-border-radius);box-sizing:border-box;display:flex;flex-direction:column;font-size:var(--f7-message-bubble-font-size);line-height:var(--f7-message-bubble-line-height);min-height:var(--f7-message-bubble-min-height);padding:var(--f7-message-bubble-padding-vertical) var(--f7-message-bubble-padding-horizontal);position:relative;word-break:break-word}.message-image img{display:block;height:auto;max-width:100%;width:auto}.message-text-footer,.message-text-header{line-height:1}.message-text-header{color:var(--f7-message-text-header-text-color);font-size:var(--f7-message-text-header-font-size);opacity:var(--f7-message-text-header-opacity)}.message-text-footer{color:var(--f7-message-text-footer-text-color);font-size:var(--f7-message-text-footer-font-size);opacity:var(--f7-message-text-footer-opacity)}.message-text{text-align:left}.message-sent{align-self:flex-end;flex-direction:row-reverse;text-align:right}.message-sent .message-bubble{background:var(--f7-message-sent-bg-color,var(--f7-theme-color));color:var(--f7-message-sent-text-color)}.message-sent .message-content{align-items:flex-end}.message-received{flex-direction:row}.message-received .message-bubble{background:var(--f7-message-received-bg-color);color:var(--f7-message-received-text-color)}.message-received .message-content{align-items:flex-start}.message:not(.message-last) .message-avatar{opacity:0}.message.message-same-footer .message-footer,.message.message-same-header .message-header,.message.message-same-name .message-name,.message:not(.message-first) .message-name{display:none}.message-appear-from-bottom{animation:message-appear-from-bottom .3s}.message-appear-from-top{animation:message-appear-from-top .3s}.message-typing-indicator{display:inline-block;font-size:0;vertical-align:middle}.message-typing-indicator>div{background:var(--f7-message-typing-indicator-bg-color);border-radius:50%;display:inline-block;opacity:var(--f7-message-typing-indicator-opacity);position:relative;vertical-align:middle}@keyframes message-appear-from-bottom{0%{transform:translate3d(0,100%,0)}to{transform:translateZ(0)}}@keyframes message-appear-from-top{0%{transform:translate3d(0,-100%,0)}to{transform:translateZ(0)}}.ios .message-footer b,.ios .message-header b,.ios .message-name b,.ios .messages-title b{font-weight:600}.ios .message-header,.ios .message-name{margin-bottom:3px}.ios .message-footer{margin-top:3px}.ios .message-bubble{min-width:48px}.ios .message-image{margin:var(--f7-message-bubble-padding-vertical) calc(var(--f7-message-bubble-padding-horizontal)*-1)}.ios .message-image:first-child{margin-top:calc(var(--f7-message-bubble-padding-vertical)*-1)}.ios .message-image:first-child img{border-top-left-radius:var(--f7-message-bubble-border-radius);border-top-right-radius:var(--f7-message-bubble-border-radius)}.ios .message-image:last-child{margin-bottom:calc(var(--f7-message-bubble-padding-vertical)*-1)}.ios .message-image:last-child img{border-bottom-left-radius:var(--f7-message-bubble-border-radius);border-bottom-right-radius:var(--f7-message-bubble-border-radius)}.ios .message-text-header{margin-bottom:3px}.ios .message-text-footer{margin-top:3px}.ios .message-received{margin-left:calc(10px + var(--f7-safe-area-left))}.ios .message-received .message-footer,.ios .message-received .message-header,.ios .message-received .message-name{margin-left:var(--f7-message-bubble-padding-horizontal)}.ios .message-received .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 42% 46% 56%;padding-left:calc(var(--f7-message-bubble-padding-horizontal) + 6px)}.ios .message-received .message-image{margin-left:calc((var(--f7-message-bubble-padding-horizontal) + 6px)*-1)}.ios .message-received.message-tail .message-bubble{border-radius:var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0}.ios .message-received.message-tail:not(.message-typing) .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 42% 46% 56%}.ios .message-received.message-tail:not(.message-typing) .message-bubble .message-image:last-child img{border-bottom-left-radius:0}.ios .message-sent{margin-right:calc(10px + var(--f7-safe-area-right))}.ios .message-sent .message-footer,.ios .message-sent .message-header,.ios .message-sent .message-name{margin-right:var(--f7-message-bubble-padding-horizontal)}.ios .message-sent .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 56% 46% 42%;padding-right:calc(var(--f7-message-bubble-padding-horizontal) + 6px)}.ios .message-sent .message-image{margin-right:calc((var(--f7-message-bubble-padding-horizontal) + 6px)*-1)}.ios .message-sent.message-tail .message-bubble{-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 50% 56% 46% 42%;border-radius:var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0 var(--f7-message-bubble-border-radius)}.ios .message-sent.message-tail .message-bubble .message-image:last-child img{border-bottom-right-radius:0}.ios .message+.message:not(.message-first){margin-top:1px}.ios .message-received.message-typing .message-content:after,.ios .message-received.message-typing .message-content:before{background:var(--f7-message-received-bg-color);border-radius:50%;content:"";position:absolute}.ios .message-received.message-typing .message-content:after{bottom:0;height:11px;left:4px;width:11px}.ios .message-received.message-typing .message-content:before{bottom:-4px;height:6px;left:-1px;width:6px}.ios .message-typing-indicator>div{height:9px;width:9px}.ios .message-typing-indicator>div+div{margin-left:4px}.ios .message-typing-indicator>div:first-child{animation:ios-message-typing-indicator .9s infinite}.ios .message-typing-indicator>div:nth-child(2){animation:ios-message-typing-indicator .9s .15s infinite}.ios .message-typing-indicator>div:nth-child(3){animation:ios-message-typing-indicator .9s .3s infinite}@keyframes ios-message-typing-indicator{0%{opacity:.35}25%{opacity:.2}50%{opacity:.2}}.md .message-footer b,.md .message-header b,.md .message-name b,.md .messages-title b{font-weight:500}.md .message-header,.md .message-name{margin-bottom:2px}.md .message-footer{margin-top:2px}.md .message-text-header{margin-bottom:4px}.md .message-text-footer{margin-top:4px}.md .message-image{margin:calc(var(--f7-message-bubble-padding-vertical)*-1) calc(var(--f7-message-bubble-padding-horizontal)*-1)}.md .message-image,.md .message-image img{border-radius:var(--f7-message-bubble-border-radius)}.md .message-received{margin-left:calc(8px + var(--f7-safe-area-left))}.md .message-received .message-footer,.md .message-received .message-header,.md .message-received .message-name{margin-left:16px}.md .message-received.message-first:not(.message-last) .message-bubble,.md .message-received.message-first:not(.message-last) .message-image,.md .message-received.message-first:not(.message-last) .message-image img{border-bottom-left-radius:4px}.md .message-received.message-last:not(.message-first) .message-bubble,.md .message-received.message-last:not(.message-first) .message-image,.md .message-received.message-last:not(.message-first) .message-image img{border-top-left-radius:4px}.md .message-received:not(.message-last):not(.message-first) .message-bubble,.md .message-received:not(.message-last):not(.message-first) .message-image,.md .message-received:not(.message-last):not(.message-first) .message-image img{border-bottom-left-radius:4px;border-top-left-radius:4px}.md .message-received .message-avatar+.message-content{margin-left:8px}.md .message-sent{margin-right:calc(8px + var(--f7-safe-area-right))}.md .message-sent .message-footer,.md .message-sent .message-header,.md .message-sent .message-name{margin-right:16px}.md .message-sent.message-first:not(.message-last) .message-bubble,.md .message-sent.message-first:not(.message-last) .message-image,.md .message-sent.message-first:not(.message-last) .message-image img{border-bottom-right-radius:4px}.md .message-sent.message-last:not(.message-first) .message-bubble,.md .message-sent.message-last:not(.message-first) .message-image,.md .message-sent.message-last:not(.message-first) .message-image img{border-top-right-radius:4px}.md .message-sent:not(.message-last):not(.message-first) .message-bubble,.md .message-sent:not(.message-last):not(.message-first) .message-image,.md .message-sent:not(.message-last):not(.message-first) .message-image img{border-bottom-right-radius:4px;border-top-right-radius:4px}.md .message-sent .message-avatar+.message-content{margin-right:var(--f7-message-bubble-padding-horizontal)}.md .message+.message:not(.message-first){margin-top:2px}.md .message-typing-indicator>div{height:6px;width:6px}.md .message-typing-indicator>div+div{margin-left:6px}.md .message-typing-indicator>div:first-child{animation:md-message-typing-indicator .9s infinite}.md .message-typing-indicator>div:nth-child(2){animation:md-message-typing-indicator .9s .15s infinite}.md .message-typing-indicator>div:nth-child(3){animation:md-message-typing-indicator .9s .3s infinite}@keyframes md-message-typing-indicator{0%{transform:translateY(0)}25%{transform:translateY(-5px)}50%{transform:translateY(0)}}:root{--f7-messagebar-attachments-height:155px;--f7-messagebar-sheet-height:252px;--f7-messagebar-sheet-landscape-height:192px}.ios{--f7-messagebar-height:44px;--f7-messagebar-font-size:17px;--f7-messagebar-textarea-bg-color:transparent;--f7-messagebar-border-color:transparent;--f7-messagebar-textarea-border-radius:17px;--f7-messagebar-textarea-padding:6px 16px;--f7-messagebar-textarea-height:34px;--f7-messagebar-textarea-font-size:17px;--f7-messagebar-textarea-line-height:20px;--f7-messagebar-sheet-bg-color:#d1d5da;--f7-messagebar-sheet-border-color:transparent;--f7-messagebar-attachment-border-radius:12px;--f7-messagebar-attachment-height:155px;--f7-messagebar-attachment-landscape-height:120px;--f7-messagebar-textarea-placeholder-color:rgba(0,0,0,0.4);--f7-messagebar-textarea-text-color:#000;--f7-messagebar-textarea-border:1px solid #c8c8cd;--f7-messagebar-attachments-border-color:#c8c8cd;--f7-messagebar-bg-color:#fff;--f7-messagebar-bg-color-rgb:255,255,255}.ios .dark,.ios.dark{--f7-messagebar-textarea-placeholder-color:rgba(255,255,255,0.4);--f7-messagebar-textarea-text-color:#fff;--f7-messagebar-textarea-border:1px solid var(--f7-bars-border-color);--f7-messagebar-attachments-border-color:var(--f7-bars-border-color);--f7-messagebar-bg-color:var(--f7-bars-bg-color);--f7-messagebar-bg-color-rgb:var(--f7-bars-bg-color-rgb)}.md{--f7-messagebar-height:64px;--f7-messagebar-font-size:16px;--f7-messagebar-textarea-border-radius:24px;--f7-messagebar-textarea-padding:12px 16px;--f7-messagebar-textarea-height:48px;--f7-messagebar-textarea-font-size:16px;--f7-messagebar-textarea-line-height:22px;--f7-messagebar-textarea-border:1px solid transparent;--f7-messagebar-attachment-border-radius:12px;--f7-messagebar-attachment-height:72px;--f7-messagebar-attachment-landscape-height:72px;--f7-messagebar-border-color:transparent;--f7-messagebar-attachments-border-color:transparent}.md,.md .dark,.md [class*=color-]{--f7-messagebar-textarea-placeholder-color:var(--f7-md-on-surface-variant);--f7-messagebar-textarea-bg-color:var(--f7-md-surface-variant);--f7-messagebar-bg-color:var(--f7-md-surface);--f7-messagebar-textarea-text-color:var(--f7-md-on-surface);--f7-messagebar-sheet-bg-color:var(--f7-md-surface);--f7-messagebar-sheet-border-color:var(--f7-md-outline-variant);--f7-messagebar-link-color:var(--f7-md-on-surface)}.messagebar{background:var(--f7-messagebar-bg-color);bottom:0;font-size:var(--f7-messagebar-font-size);height:auto;min-height:var(--f7-messagebar-height);padding-bottom:var(--f7-safe-area-bottom);transform:translateZ(0)}.messagebar:before{background-color:var(--f7-messagebar-border-color);bottom:auto;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:0;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 0;width:100%;z-index:15}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .messagebar{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));background-color:rgba(var(--f7-messagebar-bg-color-rgb),var(--f7-bars-translucent-opacity))}}.messagebar.no-outline:before,.messagebar.toolbar-hidden:after{display:none!important}.messagebar .toolbar-inner{bottom:auto;height:auto;padding-left:calc(var(--f7-messagebar-inner-padding-left, var(--f7-toolbar-inner-padding-left)) + var(--f7-safe-area-left));padding-right:calc(var(--f7-messagebar-inner-padding-right, var(--f7-toolbar-inner-padding-right)) + var(--f7-safe-area-right));position:relative;top:auto}.messagebar.messagebar-sheet-visible>.toolbar-inner{bottom:0}.messagebar .messagebar-area{flex-shrink:1;overflow:hidden;position:relative;width:100%}.messagebar textarea{background-color:var(--f7-messagebar-textarea-bg-color);border:var(--f7-messagebar-textarea-border);border-radius:var(--f7-messagebar-textarea-border-radius);color:var(--f7-messagebar-textarea-text-color);flex-shrink:1;font-size:var(--f7-messagebar-textarea-font-size);height:var(--f7-messagebar-textarea-height);line-height:var(--f7-messagebar-textarea-line-height);padding:var(--f7-messagebar-textarea-padding);width:100%}.messagebar textarea::placeholder{color:var(--f7-messagebar-textarea-placeholder-color)}.messagebar a.link{align-self:flex-end;color:var(--f7-messagebar-link-color,var(--f7-theme-color));flex-shrink:0}.messagebar-attachments{-webkit-overflow-scrolling:touch;box-sizing:border-box;font-size:0;overflow:auto;position:relative;white-space:nowrap;width:100%}.messagebar:not(.messagebar-attachments-visible) .messagebar-attachments{display:none}.messagebar-attachment{background-position:50%;background-repeat:no-repeat;background-size:cover;border-radius:var(--f7-messagebar-attachment-border-radius);display:inline-block;height:var(--f7-messagebar-attachment-height);position:relative;vertical-align:middle;white-space:normal}@media (orientation:landscape){.messagebar-attachment{height:var(--f7-messagebar-attachment-landscape-height)}}.messagebar-attachment img{border-radius:var(--f7-messagebar-attachment-border-radius);display:block;height:100%;width:auto}.messagebar-sheet{-webkit-overflow-scrolling:touch;align-content:flex-start;background-color:var(--f7-messagebar-sheet-bg-color);border-top:1px solid var(--f7-messagebar-sheet-border-color);display:flex;flex-direction:column;flex-wrap:wrap;height:var(--f7-messagebar-sheet-height);overflow:auto;padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right)}@media (orientation:landscape){.messagebar-sheet{height:var(--f7-messagebar-sheet-landscape-height)}}.messagebar-sheet-image{background-position:50%;background-repeat:no-repeat;background-size:cover}.messagebar-sheet-image>img{border-radius:inherit;height:100%;object-fit:cover;object-position:center;transition-duration:.2s;width:100%}.messagebar-attachment-delete{border-radius:50%;box-sizing:border-box;cursor:pointer;display:block;position:absolute}.messagebar-attachment-delete:after,.messagebar-attachment-delete:before{content:"";left:50%;position:absolute;top:50%}.messagebar-attachment-delete:after{transform:rotate(45deg)}.messagebar-attachment-delete:before{transform:rotate(-45deg)}.messagebar:not(.messagebar-sheet-visible) .messagebar-sheet{display:none}.messagebar~*{--f7-page-toolbar-bottom-offset:var(--f7-messagebar-height)}.ios .messagebar a.link.icon-only:first-child{margin-left:-8px}.ios .messagebar a.link.icon-only:last-child{margin-right:-8px}.ios .messagebar .messagebar-area+a.link:not(.icon-only),.ios .messagebar a.link:not(.icon-only)+.messagebar-area{margin-left:8px}.ios .messagebar-area{margin-bottom:5px;margin-top:5px}.ios .messagebar-attachments{border:1px solid var(--f7-messagebar-attachments-border-color);border-bottom:none;border-radius:var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;padding:5px}.ios .messagebar-attachments-visible .messagebar-attachments+textarea{border-radius:0 0 var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius)}.ios .messagebar-attachment{font-size:14px}.ios .messagebar-attachment+.messagebar-attachment{margin-left:8px}.ios .messagebar-attachment-delete{background:#7d7e80;border:2px solid #fff;box-shadow:0 0 2px rgba(0,0,0,.2);height:20px;right:5px;top:5px;width:20px}.ios .messagebar-attachment-delete:after,.ios .messagebar-attachment-delete:before{background:#fff;height:2px;margin-left:-5px;margin-top:-1px;width:10px}.ios .messagebar-sheet-image,.ios .messagebar-sheet-item{box-sizing:border-box;flex-shrink:0;height:calc((var(--f7-messagebar-sheet-height) - 2px)/2);margin-left:1px;margin-top:1px;overflow:hidden;position:relative;width:calc((var(--f7-messagebar-sheet-height) - 2px)/2)}@media (orientation:landscape){.ios .messagebar-sheet-image,.ios .messagebar-sheet-item{height:calc((var(--f7-messagebar-sheet-landscape-height) - 2px)/2);width:calc((var(--f7-messagebar-sheet-landscape-height) - 2px)/2)}}.ios .messagebar-sheet-image .icon-checkbox,.ios .messagebar-sheet-image .icon-radio,.ios .messagebar-sheet-item .icon-checkbox,.ios .messagebar-sheet-item .icon-radio{bottom:8px;position:absolute;right:8px;z-index:1}.md .messagebar{--f7-toolbar-link-height:var(--f7-messagebar-height)}.md .messagebar-attachments{border-bottom:1px solid var(--f7-messagebar-attachments-border-color);padding:16px 16px 0}.md .messagebar-attachment img{height:var(--f7-messagebar-attachment-height);object-fit:cover;object-position:center;width:var(--f7-messagebar-attachment-height)}.md .messagebar-attachment+.messagebar-attachment{margin-left:16px}.md .messagebar-attachments-visible .messagebar-attachments{background:var(--f7-messagebar-textarea-bg-color);border-radius:var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0}.md .messagebar-attachments-visible textarea{border-top-left-radius:0;border-top-right-radius:0}.md .messagebar-area{margin-bottom:8px;margin-top:8px}.md .messagebar-attachment-delete{background-color:var(--f7-md-inverse-surface);border:2px solid var(--f7-messagebar-textarea-bg-color);border-radius:24px;height:24px;right:-6px;top:-6px;width:24px}.md .messagebar-attachment-delete:after,.md .messagebar-attachment-delete:before{background:var(--f7-messagebar-textarea-bg-color);height:2px;margin-left:-6px;margin-top:-1px;width:12px}.md .messagebar-sheet-image,.md .messagebar-sheet-item{--f7-touch-ripple-color:transparent;border-radius:4px;box-sizing:border-box;flex-shrink:0;height:calc((var(--f7-messagebar-sheet-height) - 24px)/2);margin-left:8px;margin-top:8px;overflow:hidden;position:relative;width:calc((var(--f7-messagebar-sheet-height) - 24px)/2)}@media (orientation:landscape){.md .messagebar-sheet-image,.md .messagebar-sheet-item{height:calc((var(--f7-messagebar-sheet-landscape-height) - 24px)/2);width:calc((var(--f7-messagebar-sheet-landscape-height) - 8px)/2)}}.md .messagebar-sheet-image input:checked~img,.md .messagebar-sheet-item input:checked~img{transform:scale(.85)}.md .messagebar-sheet-image input:checked~.icon-checkbox,.md .messagebar-sheet-image input:checked~.icon-radio,.md .messagebar-sheet-item input:checked~.icon-checkbox,.md .messagebar-sheet-item input:checked~.icon-radio{transform:translate(-50%,-50%) scale(1)}.md .messagebar-sheet-image .icon-checkbox,.md .messagebar-sheet-image .icon-radio,.md .messagebar-sheet-item .icon-checkbox,.md .messagebar-sheet-item .icon-radio{--f7-checkbox-inactive-color:var(--f7-md-surface);--f7-checkbox-active-color:var(--f7-md-surface);align-items:center;border:none;border-radius:50%;display:flex;height:32px;justify-content:center;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(.85);width:32px;z-index:1}.md .messagebar-sheet-image .icon-checkbox:after,.md .messagebar-sheet-image .icon-radio:after,.md .messagebar-sheet-item .icon-checkbox:after,.md .messagebar-sheet-item .icon-radio:after{color:var(--f7-md-on-surface);font-size:18px;height:100%;left:0;line-height:32px;position:static;width:auto}@font-face{font-family:swiper-icons;font-style:normal;font-weight:400;src:url("data:application/font-woff;charset=utf-8;base64, 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")}:root{--swiper-theme-color:#007aff}:host{display:block;margin-left:auto;margin-right:auto;position:relative;z-index:1}.swiper{display:block;list-style:none;margin-left:auto;margin-right:auto;overflow:hidden;overflow:clip;padding:0;position:relative;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{box-sizing:initial;display:flex;height:100%;position:relative;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);width:100%;z-index:1}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{display:block;flex-shrink:0;height:100%;position:relative;transition-property:transform;width:100%}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{-ms-overflow-style:none;overflow:auto;scrollbar-width:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);min-width:1px;width:100%}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(270deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(90deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(0deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(180deg,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top:4px solid transparent;box-sizing:border-box;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;transform-origin:50%;width:42px;z-index:10}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s linear infinite}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper:after{content:"";left:0;pointer-events:none;position:absolute;top:0}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper:after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper:after{height:var(--swiper-virtual-size);width:1px}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{align-items:center;color:var(--swiper-navigation-color,var(--swiper-theme-color));cursor:pointer;display:flex;height:var(--swiper-navigation-size);justify-content:center;margin-top:calc(0px - var(--swiper-navigation-size)/2);position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/44*27);z-index:10}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{cursor:auto;opacity:.35;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{cursor:auto;opacity:0;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{height:100%;object-fit:contain;transform-origin:center;width:100%}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);font-variant:normal;letter-spacing:0;line-height:1;text-transform:none!important}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:"prev"}.swiper-button-next,.swiper-rtl .swiper-button-prev{left:auto;right:var(--swiper-navigation-sides-offset,10px)}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:"next"}.swiper-pagination{position:absolute;text-align:center;transform:translateZ(0);transition:opacity .3s;z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);left:0;top:var(--swiper-pagination-top,auto);width:100%}.swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{position:relative;transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{background:var(--swiper-pagination-bullet-inactive-color,#000);border-radius:var(--swiper-pagination-bullet-border-radius,50%);display:inline-block;height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px))}button.swiper-pagination-bullet{-webkit-appearance:none;appearance:none;border:none;box-shadow:none;margin:0;padding:0}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{background:var(--swiper-pagination-color,var(--swiper-theme-color));opacity:var(--swiper-pagination-bullet-opacity,1)}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{left:var(--swiper-pagination-left,auto);right:var(--swiper-pagination-right,8px);top:50%;transform:translate3d(0,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{display:block;margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:transform .2s,top .2s}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,left .2s}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));height:100%;left:0;position:absolute;top:0;transform:scale(0);transform-origin:left top;width:100%}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0;width:100%}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{height:100%;left:0;top:0;width:var(--swiper-pagination-progressbar-size,4px)}.swiper-pagination-lock{display:none}.swiper-scrollbar{background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1));border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;-ms-touch-action:none}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{bottom:var(--swiper-scrollbar-bottom,4px);height:var(--swiper-scrollbar-size,4px);left:var(--swiper-scrollbar-sides-offset,1%);position:absolute;top:var(--swiper-scrollbar-top,auto);width:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);z-index:50}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{height:calc(100% - var(--swiper-scrollbar-sides-offset, 1%)*2);left:var(--swiper-scrollbar-left,auto);position:absolute;right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);width:var(--swiper-scrollbar-size,4px);z-index:50}.swiper-scrollbar-drag{background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);height:100%;left:0;position:relative;top:0;width:100%}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{align-items:center;display:flex;height:100%;justify-content:center;text-align:center;width:100%}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-height:100%;max-width:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none}.swiper .swiper-notification{left:0;opacity:0;pointer-events:none;position:absolute;top:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{margin:0 auto;transition-timing-function:ease-out}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-direction:column;flex-wrap:wrap}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;height:100%;pointer-events:none;transform-origin:0 0;visibility:hidden;width:100%;z-index:1}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{bottom:0;height:100%;left:0;opacity:.6;position:absolute;width:100%;z-index:0}.swiper-cube .swiper-cube-shadow:before{background:#000;bottom:0;content:"";filter:blur(50px);left:0;position:absolute;right:0;top:0}.swiper-cube .swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top{-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:0}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:none;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top{-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:0}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transform-origin:center bottom}:root{--f7-photobrowser-bg-color:#fff;--f7-photobrowser-bars-bg-color:rgba(var(--f7-bars-bg-color-rgb),0.95);--f7-photobrowser-bars-text-color:var(--f7-bars-text-color);--f7-photobrowser-bars-link-color:var(--f7-bars-link-color);--f7-photobrowser-caption-font-size:13px;--f7-photobrowser-caption-font-weight:500;--f7-photobrowser-caption-light-text-color:#000;--f7-photobrowser-caption-dark-text-color:#fff;--f7-photobrowser-exposed-bg-color:#000;--f7-photobrowser-dark-bg-color:#000;--f7-photobrowser-dark-bars-bg-color:rgba(27,27,27,0.8);--f7-photobrowser-dark-bars-text-color:#fff;--f7-photobrowser-dark-bars-link-color:#fff}.photo-browser{height:100%;left:0;position:absolute;top:0;width:100%;z-index:400}.photo-browser-standalone.modal-in{animation:photo-browser-in .4s;transition-duration:0ms}.photo-browser-standalone.modal-out{animation:photo-browser-out .4s!important;transition-duration:0ms}.photo-browser-standalone.modal-out.swipe-close-to-bottom,.photo-browser-standalone.modal-out.swipe-close-to-top{animation:none!important}.photo-browser-standalone.photo-browser-transitioning{animation:none!important;transition:.4s}.photo-browser-popup.modal-out.swipe-close-to-bottom,.photo-browser-popup.modal-out.swipe-close-to-top{transition-duration:.3s}.photo-browser-popup.modal-out.swipe-close-to-bottom{transform:translate3d(0,100vh,0)}.photo-browser-popup.modal-out.swipe-close-to-top{transform:translate3d(0,-100vh,0)}.photo-browser-page{background:none}.photo-browser-page .toolbar{transform:none}.photo-browser-popup{background:none}.photo-browser-of{margin:0 5px}.photo-browser-captions{bottom:var(--f7-safe-area-bottom);left:0;opacity:1;pointer-events:none;position:absolute;transition-duration:.4s;width:100%;z-index:10}.photo-browser-captions.photo-browser-captions-exposed{opacity:0}.toolbar~.toolbar.photo-browser-thumbs{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.page~.photo-browser-page:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs,.photo-browser-popup:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs,.photo-browser-standalone:not(.photo-browser-exposed) .toolbar~.toolbar.photo-browser-thumbs{height:var(--f7-toolbar-height)}.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs{transform:translate3d(0,calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom, 0)),0)}.navbar+.toolbar.photo-browser-thumbs .swiper,.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs .swiper{height:calc(100% - var(--f7-safe-area-bottom, 0))}.toolbar~.photo-browser-captions{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));transform:translateZ(0)}.toolbar~.photo-browser-captions.photo-browser-captions-exposed{transform:translateZ(0)}.toolbar~.toolbar~.photo-browser-captions{bottom:calc(var(--f7-toolbar-height)*2 + var(--f7-safe-area-bottom))}.toolbar~.toolbar~.photo-browser-captions.photo-browser-captions-exposed{transform:translate3d(0,var(--f7-toolbar-height),0)}.photo-browser-thumbs{transition-property:transform,background-color,color}.photo-browser-thumbs .swiper{height:100%;width:100%}.photo-browser-thumbs .swiper-slide{align-items:center;display:flex;justify-content:center;width:auto}.photo-browser-thumbs img{border-radius:2px;display:block;height:75%;min-width:4px;width:auto}.photo-browser-thumbs .swiper-slide img{transform:translateX(-4px);transition-duration:.15s}.photo-browser-thumbs .swiper-slide-active img{transform:scale(1.2)}.photo-browser-thumbs .swiper-slide-active~.swiper-slide img{transform:translateX(4px)}.photo-browser-caption{bottom:0;box-sizing:border-box;font-size:var(--f7-photobrowser-caption-font-size);font-weight:var(--f7-photobrowser-caption-font-weight);left:0;opacity:0;padding:4px 5px;position:absolute;text-align:center;transition-duration:.4s;width:100%}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .photo-browser-caption{-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur))}}.photo-browser-caption:empty{display:none}.photo-browser-caption.photo-browser-caption-active{opacity:1}.photo-browser-captions-light .photo-browser-caption{color:var(--f7-photobrowser-caption-light-text-color)}.dark .photo-browser-caption,.photo-browser-captions-dark .photo-browser-caption{color:var(--f7-photobrowser-caption-dark-text-color)}.photo-browser-swiper-container{background:var(--f7-photobrowser-bg-color);height:100%;left:0;overflow:hidden;position:absolute;top:0;touch-action:none;transition:.4s;transition-property:background-color;width:100%}.photo-browser-next.swiper-button-disabled,.photo-browser-prev.swiper-button-disabled{opacity:.3;pointer-events:none}.photo-browser-slide{align-items:center;box-sizing:border-box;display:flex;flex-shrink:0;height:100%;justify-content:center;overflow:hidden;position:relative;width:100%}.photo-browser-slide span.swiper-zoom-container{display:none}.photo-browser-slide img{display:none;height:auto;max-height:100%;max-width:100%;width:auto}.photo-browser-slide.swiper-slide-active span.swiper-zoom-container,.photo-browser-slide.swiper-slide-next span.swiper-zoom-container,.photo-browser-slide.swiper-slide-prev span.swiper-zoom-container{display:flex}.photo-browser-slide.swiper-slide-active img,.photo-browser-slide.swiper-slide-next img,.photo-browser-slide.swiper-slide-prev img{display:inline}.photo-browser-slide.swiper-slide-active.photo-browser-slide-lazy .preloader,.photo-browser-slide.swiper-slide-next.photo-browser-slide-lazy .preloader,.photo-browser-slide.swiper-slide-prev.photo-browser-slide-lazy .preloader{display:block}.photo-browser-slide iframe{height:100%;width:100%}.photo-browser-slide .preloader{display:none;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;width:42px}.navbar-photo-browser .right .link i,.navbar-photo-browser .right .link svg{display:block;height:24px;width:24px}.navbar-photo-browser .navbar-bg,.photo-browser-caption,.photo-browser-page .navbar-bg,.photo-browser-page .toolbar{background-color:var(--f7-photobrowser-bars-bg-color,rgba(var(--f7-bars-bg-color-rgb),.95))}.photo-browser-page{touch-action:none}.photo-browser-page .navbar,.photo-browser-page .toolbar{color:var(--f7-photobrowser-bars-text-color,var(--f7-bars-text-color));transform:translateZ(0);transition-duration:.4s}.photo-browser-page .navbar a,.photo-browser-page .toolbar a{color:var(--f7-photobrowser-bars-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.photo-browser-exposed .navbar,.photo-browser-exposed .toolbar:not(.photo-browser-thumbs){opacity:0;pointer-events:none;visibility:hidden}.photo-browser-exposed .toolbar:not(.photo-browser-thumbs)~.photo-browser-captions,.photo-browser-exposed .toolbar~.toolbar.photo-browser-thumbs~.photo-browser-captions{transform:translate3d(0,var(--f7-toolbar-height),0)}.photo-browser-exposed .photo-browser-swiper-container{background:var(--f7-photobrowser-exposed-bg-color)}.photo-browser-dark .photo-browser-thumbs,.photo-browser-dark .toolbar,.photo-browser-exposed .photo-browser-thumbs,.photo-browser-exposed .toolbar{background-color:var(--f7-photobrowser-dark-bars-bg-color)}.photo-browser-dark .photo-browser-caption,.photo-browser-exposed .photo-browser-caption{background-color:var(--f7-photobrowser-dark-bars-bg-color);color:var(--f7-photobrowser-caption-dark-text-color)}.view.with-photo-browser-page-exposed .navbar{opacity:0;pointer-events:none}.photo-browser-page .toolbar:after,.photo-browser-page .toolbar:before{display:none!important}.navbar-photo-browser-dark .navbar-bg,.photo-browser-page-dark .navbar-bg{background:var(--f7-photobrowser-dark-bars-bg-color)}.navbar-photo-browser-dark .navbar-bg:after,.navbar-photo-browser-dark .navbar-bg:before,.photo-browser-page-dark .navbar-bg:after,.photo-browser-page-dark .navbar-bg:before{display:none!important}.navbar-photo-browser-dark,.photo-browser-dark .navbar,.photo-browser-dark .toolbar,.photo-browser-page-dark .navbar,.photo-browser-page-dark .toolbar{color:var(--f7-photobrowser-dark-bars-text-color)}.navbar-photo-browser-dark a,.photo-browser-dark .navbar a,.photo-browser-dark .toolbar a,.photo-browser-page-dark .navbar a,.photo-browser-page-dark .toolbar a{color:var(--f7-photobrowser-dark-bars-link-color)}.photo-browser-dark .photo-browser-swiper-container,.photo-browser-page-dark .photo-browser-swiper-container{background:var(--f7-photobrowser-dark-bg-color)}@keyframes photo-browser-in{0%{opacity:0;transform:translateZ(0) scale(.5)}50%{opacity:1;transform:translateZ(0) scale(1.05)}to{opacity:1;transform:translateZ(0) scale(1)}}@keyframes photo-browser-out{0%{opacity:1;transform:translateZ(0) scale(1)}50%{opacity:1;transform:translateZ(0) scale(1.05)}to{opacity:0;transform:translateZ(0) scale(.5)}}:root{--f7-notification-max-width:568px;--f7-notification-subtitle-text-transform:none;--f7-notification-subtitle-line-height:1.35;--f7-notification-text-text-transform:none;--f7-notification-text-font-weight:400}.ios{--f7-notification-margin:8px;--f7-notification-padding-horizontal:10px;--f7-notification-padding-vertical:10px;--f7-notification-border-radius:12px;--f7-notification-box-shadow:0px 5px 25px -10px rgba(0,0,0,0.7);--f7-notification-icon-size:20px;--f7-notification-title-font-size:13px;--f7-notification-title-text-transform:uppercase;--f7-notification-title-line-height:1.4;--f7-notification-title-font-weight:400;--f7-notification-title-letter-spacing:0.02em;--f7-notification-title-right-font-size:13px;--f7-notification-subtitle-font-size:15px;--f7-notification-subtitle-font-weight:600;--f7-notification-text-font-size:15px;--f7-notification-text-line-height:1.2;--f7-notification-bg-color:rgba(250,250,250,0.95);--f7-notification-bg-color-rgb:255,255,255;--f7-notification-title-color:#000;--f7-notification-title-right-color:rgba(0,0,0,0.45);--f7-notification-subtitle-color:#000;--f7-notification-text-color:#000}.ios .dark,.ios.dark{--f7-notification-bg-color:rgba(30,30,30,0.95);--f7-notification-bg-color-rgb:30,30,30;--f7-notification-title-color:#fff;--f7-notification-text-color:#fff;--f7-notification-subtitle-color:#fff;--f7-notification-title-right-color:rgba(255,255,255,0.55)}.md{--f7-notification-margin:16px;--f7-notification-padding-vertical:20px;--f7-notification-padding-horizontal:16px;--f7-notification-border-radius:16px;--f7-notification-box-shadow:none;--f7-notification-icon-size:24px;--f7-notification-title-font-size:16px;--f7-notification-title-text-transform:none;--f7-notification-title-line-height:1.35;--f7-notification-title-font-weight:500;--f7-notification-title-right-font-size:12px;--f7-notification-subtitle-font-size:14px;--f7-notification-subtitle-font-weight:400;--f7-notification-text-font-size:14px;--f7-notification-text-line-height:1.35}.md,.md .dark,.md [class*=color-]{--f7-notification-title-color:var(--f7-md-on-surface);--f7-notification-bg-color:var(--f7-md-surface-5);--f7-notification-text-color:var(--f7-md-on-surface-variant);--f7-notification-title-right-color:var(--f7-md-on-surface-variant);--f7-notification-subtitle-color:var(--f7-md-on-surface)}.notification{background:var(--f7-notification-bg-color);border:none;border-radius:var(--f7-notification-border-radius);box-shadow:var(--f7-notification-box-shadow);box-sizing:border-box;direction:ltr;display:none;font-size:14px;left:var(--f7-notification-margin);margin:0;margin-top:var(--f7-safe-area-top);max-width:var(--f7-notification-max-width);padding:var(--f7-notification-padding-vertical) var(--f7-notification-padding-horizontal);position:absolute;top:var(--f7-notification-margin);transition-property:transform;width:calc(100% - var(--f7-notification-margin)*2);z-index:20000}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .notification{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:rgba(var(--f7-notification-bg-color-rgb),.8)}}@media (min-width:568px){.notification{left:50%;margin-left:calc(var(--f7-notification-max-width)*-1/2);width:var(--f7-notification-max-width)}}.notification-title{color:var(--f7-notification-title-color,var(--f7-theme-color));font-size:var(--f7-notification-title-font-size);font-weight:var(--f7-notification-title-font-weight);letter-spacing:var(--f7-notification-title-letter-spacing);line-height:var(--f7-notification-title-line-height);text-transform:var(--f7-notification-title-text-transform)}.notification-subtitle{color:var(--f7-notification-subtitle-color);font-size:var(--f7-notification-subtitle-font-size);font-weight:var(--f7-notification-subtitle-font-weight);line-height:var(--f7-notification-subtitle-line-height);text-transform:var(--f7-notification-subtitle-text-transform)}.notification-text{color:var(--f7-notification-text-color);font-size:var(--f7-notification-text-font-size);font-weight:var(--f7-notification-text-font-weight);line-height:var(--f7-notification-text-line-height);text-transform:var(--f7-notification-text-text-transform)}.notification-title-right-text{color:var(--f7-notification-title-right-color);font-size:var(--f7-notification-title-right-font-size)}.notification-icon{font-size:0;line-height:var(--f7-notification-icon-size)}.notification-icon,.notification-icon i{height:var(--f7-notification-icon-size)!important;width:var(--f7-notification-icon-size)!important}.notification-icon i{font-size:var(--f7-notification-icon-size)}.notification-icon img{height:var(--f7-notification-icon-size)}.notification-header{align-items:center;display:flex;justify-content:flex-start}.notification-close-button{cursor:pointer;margin-left:auto;position:relative}.notification-close-button:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;left:50%;letter-spacing:normal;line-height:1;position:absolute;text-align:center;text-rendering:optimizeLegibility;text-transform:none;top:50%;white-space:nowrap;width:100%}.ios .notification{transform:translate3d(0,-200%,0);transition-duration:.45s}.ios .notification.modal-in{opacity:1;transform:translateZ(0)}.ios .notification.modal-out{transform:translate3d(0,-200%,0)}.ios .notification-icon{margin-right:8px}.ios .notification-header+.notification-content{margin-top:10px}.ios .notification-title-right-text{margin-left:auto;margin-right:6px}.ios .notification-title-right-text+.notification-close-button{margin-left:10px}.ios .notification-close-button{font-size:14px;height:20px;opacity:.3;transition-duration:.3s;width:20px}.ios .notification-close-button.active-state{opacity:.1;transition-duration:0ms}.ios .notification-close-button:after{color:#000;content:"notification_close_ios";font-size:.65em;height:44px;line-height:44px;margin-left:-22px;margin-top:-22px;width:44px}.ios .dark .notification-close-button:after,.ios.dark .notification-close-button:after{color:#fff}.md .notification{transform:translate3d(0,-150%,0)}.md .notification.modal-in{transform:translateZ(0);transition-duration:.5s;transition-timing-function:cubic-bezier(0,.8,.34,1)}.md .notification.modal-in.notification-transitioning{transition-duration:.2s}.md .notification.modal-out{animation:none;transform:translate3d(0,-150%,0);transition-duration:.2s;transition-timing-function:ease-in}.md .notification-with-icon .notification-icon{left:var(--f7-notification-padding-horizontal);position:absolute;top:var(--f7-notification-padding-vertical)}.md .notification-with-icon .notification-content,.md .notification-with-icon .notification-header{margin-left:calc(var(--f7-notification-icon-size) + 16px)}.md .notification-icon{margin-right:8px}.md .notification-subtitle+.notification-text{margin-top:4px}.md .notification-header+.notification-content{margin-top:8px}.md .notification-title-right-text{margin-left:4px}.md .notification-title-right-text:before{background:var(--f7-notification-title-right-color);border-radius:50%;content:"";display:inline-block;height:3px;margin-right:4px;vertical-align:middle;width:3px}.md .notification-close-button{height:16px;transition-duration:.3s;width:16px}.md .notification-close-button:after,.md .notification-close-button:before{height:48px;left:50%;margin-left:-24px;margin-top:-24px;top:50%;width:48px}.md .notification-close-button:after{color:var(--f7-md-on-surface-variant);content:"delete_round_md";font-size:24px;line-height:48px}@keyframes notification-md-in{0%{transform:translate3d(0,-150%,0)}50%{transform:translate3d(0,10%,0)}to{transform:translateZ(0)}}:root{--f7-autocomplete-dropdown-placeholder-color:#a9a9a9;--f7-autocomplete-dropdown-preloader-size:20px;--f7-autocomplete-dropdown-font-size:var(--f7-list-font-size)}.ios{--f7-autocomplete-dropdown-box-shadow:0px 3px 3px rgba(0,0,0,0.2);--f7-autocomplete-dropdown-text-matching-font-weight:600;--f7-autocomplete-dropdown-bg-color:#fff;--f7-autocomplete-dropdown-text-color:#000;--f7-autocomplete-dropdown-text-matching-color:#000}.ios .dark,.ios.dark{--f7-autocomplete-dropdown-bg-color:#1c1c1d;--f7-autocomplete-dropdown-text-color:#fff;--f7-autocomplete-dropdown-text-matching-color:#fff}.md{--f7-autocomplete-dropdown-box-shadow:none;--f7-autocomplete-dropdown-text-matching-font-weight:500;--f7-autocomplete-dropdown-text-matching-color:#000}.md .dark,.md.dark{--f7-autocomplete-dropdown-text-matching-color:#fff}.md,.md .dark,.md [class*=color-]{--f7-autocomplete-dropdown-bg-color:var(--f7-md-surface-2);--f7-autocomplete-dropdown-text-color:var(--f7-md-on-surface)}.autocomplete-page .autocomplete-found{display:block}.autocomplete-page .autocomplete-not-found{display:none}.autocomplete-page .autocomplete-values{display:block}.autocomplete-page .list ul:empty{display:none}.autocomplete-preloader:not(.autocomplete-preloader-visible){visibility:hidden}.autocomplete-preloader:not(.autocomplete-preloader-visible),.autocomplete-preloader:not(.autocomplete-preloader-visible) *{animation:none}.autocomplete-dropdown{background:var(--f7-autocomplete-dropdown-bg-color);box-shadow:var(--f7-autocomplete-dropdown-box-shadow);box-sizing:border-box;left:0;position:absolute;width:100%;z-index:500}.autocomplete-dropdown .autocomplete-dropdown-inner{-webkit-overflow-scrolling:touch;height:100%;overflow:auto;position:relative;z-index:1}.autocomplete-dropdown .autocomplete-preloader{bottom:100%;display:none;height:var(--f7-autocomplete-dropdown-preloader-size);position:absolute;width:var(--f7-autocomplete-dropdown-preloader-size)}.autocomplete-dropdown .autocomplete-preloader-visible{display:block}.autocomplete-dropdown .autocomplete-dropdown-placeholder{color:var(--f7-autocomplete-dropdown-placeholder-color)}.autocomplete-dropdown .list{color:var(--f7-autocomplete-dropdown-text-color);font-size:var(--f7-autocomplete-dropdown-font-size);margin:0}.autocomplete-dropdown .list b{color:var(--f7-autocomplete-dropdown-text-matching-color);font-weight:var(--f7-autocomplete-dropdown-text-matching-font-weight)}.autocomplete-dropdown .list ul{background:none!important}.autocomplete-dropdown .list ul:after,.autocomplete-dropdown .list ul:before{display:none!important}.autocomplete-dropdown .autocomplete-dropdown-selected{background:var(--f7-autocomplete-dropdown-selected-bg-color,rgba(var(--f7-theme-color-rgb),.2))}.searchbar-input-wrap .autocomplete-dropdown{background-color:var(--f7-searchbar-input-bg-color,var(--f7-searchbar-bg-color));border-radius:var(--f7-searchbar-input-border-radius);margin-top:calc(var(--f7-searchbar-input-height)*-1);top:100%;z-index:-1}.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-inner{padding-top:var(--f7-searchbar-input-height)}.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-placeholder{color:var(--f7-searchbar-placeholder-color)}.searchbar-input-wrap .autocomplete-dropdown li:last-child{border-radius:0 0 var(--f7-searchbar-input-border-radius) var(--f7-searchbar-input-border-radius);overflow:hidden;position:relative}.searchbar-input-wrap .autocomplete-dropdown .item-content{padding-left:calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px))}.ios .autocomplete-dropdown .autocomplete-preloader{margin-bottom:12px;right:16px}.md .autocomplete-page .navbar .autocomplete-preloader{margin-right:8px}.md .autocomplete-popup .navbar .autocomplete-preloader{margin-left:8px;margin-right:16px}.md .autocomplete-dropdown .autocomplete-preloader{margin-bottom:8px;right:16px}.md .autocomplete-dropdown .autocomplete-preloader circle{stroke-width:3}:root{--f7-tooltip-padding:8px 16px;--f7-tooltip-font-size:14px;--f7-tooltip-font-weight:500;--f7-tooltip-desktop-padding:6px 8px;--f7-tooltip-desktop-font-size:12px}.ios{--f7-tooltip-border-radius:4px;--f7-tooltip-bg-color:rgba(0,0,0,0.87);--f7-tooltip-text-color:#fff}.md{--f7-tooltip-border-radius:8px}.md,.md .dark,.md [class*=color-]{--f7-tooltip-bg-color:var(--f7-md-secondary);--f7-tooltip-text-color:var(--f7-md-on-secondary)}.tooltip{background:var(--f7-tooltip-bg-color);border-radius:var(--f7-tooltip-border-radius);box-sizing:border-box;color:var(--f7-tooltip-text-color);font-size:var(--f7-tooltip-font-size);font-weight:var(--f7-tooltip-font-weight);line-height:1.2;opacity:0;padding:var(--f7-tooltip-padding);position:absolute;transform:scale(.9);transition-duration:.15s;transition-property:opacity,transform;z-index:20000;z-index:99000}.tooltip.tooltip-in{opacity:1;transform:scale(1)}.tooltip.tooltip-out{opacity:0;transform:scale(1)}.device-desktop .tooltip{font-size:var(--f7-tooltip-desktop-font-size);padding:var(--f7-tooltip-desktop-padding)}.gauge{display:inline-block;margin-left:auto;margin-right:auto;position:relative;text-align:center}.gauge svg,.gauge-svg{height:auto;max-width:100%}.gauge svg circle,.gauge svg path,.gauge-svg circle,.gauge-svg path{transition-duration:.4s}.skeleton-block{background:var(--skeleton-color)!important;display:block;height:1em;width:100%}@font-face{font-display:block;font-family:skeleton;font-style:normal,italic;font-weight:100,200,300,400,500,600,700,800,900;src:url("data:application/font-woff;charset=utf-8;base64,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") format("woff")}.skeleton-text{font-family:skeleton!important;-webkit-user-select:none;user-select:none}.skeleton-text,.skeleton-text *{color:var(--skeleton-color)!important;letter-spacing:-.03em!important}.skeleton-image{display:inline-block}.skeleton-image svg{height:auto;max-width:100%}.skeleton-image polygon{fill:var(--skeleton-color)}.skeleton-image path{fill:var(--skeleton-icon-color)}.skeleton-avatar{display:inline-block}.skeleton-avatar svg{height:auto;max-width:100%}.skeleton-avatar rect{fill:var(--skeleton-color)}.skeleton-avatar path{fill:var(--skeleton-icon-color)}.skeleton-effect-blink,.skeleton-effect-wave{animation:skeleton-effect-wave 1s infinite;-webkit-mask-image:linear-gradient(90deg,transparent 0,black 25%,black 75%,transparent);mask-image:linear-gradient(90deg,transparent 0,black 25%,black 75%,transparent);-webkit-mask-position:50% top;mask-position:50% top;-webkit-mask-repeat:repeat;mask-repeat:repeat;-webkit-mask-size:200% 100%;mask-size:200% 100%}.skeleton-effect-fade{animation:skeleton-effect-fade 1s infinite}.skeleton-effect-pulse{animation:skeleton-effect-pulse 1s infinite}@keyframes skeleton-effect-fade{0%{opacity:1}50%{opacity:.2}to{opacity:1}}@keyframes skeleton-effect-wave{0%{-webkit-mask-position:50% top;mask-position:50% top}to{-webkit-mask-position:-150% top;mask-position:-150% top}}@keyframes skeleton-effect-pulse{0%{transform:scale(1)}40%{transform:scale(1)}50%{transform:scale(.975)}to{transform:scale(1)}}:root{--skeleton-color:#ccc;--skeleton-icon-color:rgba(0,0,0,0.25)}.dark{--skeleton-color:#515151;--skeleton-icon-color:rgba(255,255,255,0.25)}:root{--f7-color-picker-popover-width:350px;--f7-color-picker-slider-size:6px;--f7-color-picker-slider-knob-size:16px;--f7-color-picker-bar-size:50px;--f7-color-picker-bar-min-height:260px;--f7-color-picker-value-width:64px;--f7-color-picker-value-height:32px;--f7-color-picker-value-font-size:16px;--f7-color-picker-value-border-radius:4px;--f7-color-picker-hex-value-width:84px;--f7-color-picker-label-font-size:14px;--f7-color-picker-label-width:10px;--f7-color-picker-label-height:14px;--f7-color-picker-sb-spectrum-height:260px;--f7-color-picker-sb-spectrum-handle-size:16px;--f7-color-picker-wheel-width:330px;--f7-color-picker-palette-value-width:36px;--f7-color-picker-palette-value-height:36px;--f7-color-picker-initial-current-color-height:40px;--f7-color-picker-initial-current-color-border-radius:4px;--f7-color-picker-sheet-bg-color:#fff;--f7-color-picker-popup-bg-color:#fff;--f7-color-picker-value-bg-color:rgba(0,0,0,0.05);--f7-color-picker-group-bg-color:rgba(0,0,0,0.05);--f7-color-picker-group-value-bg-color:#fff}:root .dark,:root.dark{--f7-color-picker-sheet-bg-color:#121212;--f7-color-picker-popup-bg-color:#121212;--f7-color-picker-value-bg-color:rgba(255,255,255,0.1);--f7-color-picker-group-bg-color:#000;--f7-color-picker-group-value-bg-color:rgba(255,255,255,0.12)}.color-picker{display:flex;flex-direction:column;overflow:hidden;width:100%}.color-picker-popover .color-picker,.color-picker-popup .color-picker,.color-picker.color-picker-inline{position:relative}.color-picker-sheet-modal{background:var(--f7-color-picker-sheet-bg-color)}.color-picker-sheet-modal:before{z-index:600}.color-picker-sheet-modal .sheet-modal-inner{margin-bottom:var(--f7-safe-area-bottom)}.color-picker-popup .page{background:var(--f7-color-picker-popup-bg-color)}.color-picker-popup .page-content{padding-bottom:var(--f7-safe-area-bottom)}.color-picker-page .color-picker,.color-picker-popover .color-picker,.color-picker-popup .color-picker{height:100%}.color-picker-page .color-picker .toolbar,.color-picker-popover .color-picker .toolbar,.color-picker-popup .color-picker .toolbar{position:absolute}.color-picker-popover{max-height:80vh;max-width:90vw;width:var(--f7-color-picker-popover-width)}.md .color-picker-popover .popover-inner{padding:8px}.color-picker-popover .color-picker{max-height:80vh}.color-picker-popover .toolbar-top{border-top-left-radius:var(--f7-popover-border-radius);border-top-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette{flex-shrink:0;overflow:hidden}.color-picker-popover .color-picker-module-palette:first-child{border-top-left-radius:var(--f7-popover-border-radius);border-top-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette:last-child{border-bottom-left-radius:var(--f7-popover-border-radius);border-bottom-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette:first-child:last-child{border-radius:var(--f7-popover-border-radius)}.color-picker-popover .toolbar~.page-content .color-picker-module-palette:first-child{border-top-left-radius:0;border-top-right-radius:0}.color-picker-page .page-content,.color-picker-popover .page-content,.color-picker-popup .page-content,.color-picker-sheet-modal .page-content{align-items:stretch;display:flex;flex-direction:column;justify-content:flex-start;overflow-x:hidden}.color-picker-module{margin-top:5px}.color-picker-module:last-child{margin-bottom:5px}.color-picker-module-hs-spectrum,.color-picker-module-sb-spectrum{margin-left:10px;margin-right:10px}.color-picker-module-hs-spectrum:first-child,.color-picker-module-sb-spectrum:first-child{margin-top:10px}.color-picker-module-hs-spectrum .color-picker-hs-spectrum,.color-picker-module-hs-spectrum .color-picker-sb-spectrum,.color-picker-module-sb-spectrum .color-picker-hs-spectrum,.color-picker-module-sb-spectrum .color-picker-sb-spectrum{height:var(--f7-color-picker-sb-spectrum-height)}.ios .color-picker-module-hs-spectrum .color-picker-hs-spectrum,.ios .color-picker-module-hs-spectrum .color-picker-sb-spectrum,.ios .color-picker-module-sb-spectrum .color-picker-hs-spectrum,.ios .color-picker-module-sb-spectrum .color-picker-sb-spectrum{border-radius:4px}.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum,.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum,.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum,.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum{border-radius:12px}.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum:after,.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum:after,.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum:after,.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum:after{border-radius:inherit}.color-picker-sb-spectrum{background-color:#000;background-image:linear-gradient(180deg,rgba(0,0,0,0) 0,#000),linear-gradient(270deg,rgba(255,255,255,0) 0,#fff);position:relative}.color-picker-hs-spectrum{background-image:linear-gradient(90deg,hsl(0,100%,50%),hsl(60,100%,50%),hsl(120,100%,50%),hsl(180,100%,50%),hsl(240,100%,50%),hsl(300,100%,50%),hsl(0,100%,50%));position:relative}.color-picker-hs-spectrum:after{background-image:linear-gradient(180deg,rgba(255,255,255,0),#ffffff);content:"";height:100%;left:0;position:absolute;top:0;width:100%}.color-picker-hs-spectrum-handle,.color-picker-sb-spectrum-handle{height:4px;left:-2px;position:absolute;top:-2px;width:4px;z-index:1}.color-picker-hs-spectrum-handle:after,.color-picker-sb-spectrum-handle:after{background-color:inherit;border:1px solid #fff;border-radius:50%;box-shadow:0 0 2px rgba(0,0,0,.5);box-sizing:border-box;content:"";height:var(--f7-color-picker-sb-spectrum-handle-size);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);transform-origin:center;transition:.15s;transition-property:transform;width:var(--f7-color-picker-sb-spectrum-handle-size)}.color-picker-hs-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,.color-picker-hs-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after,.color-picker-sb-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,.color-picker-sb-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after{transform:scale(1.5) translate(-33.333%,-33.333%)}.color-picker-module-wheel{margin-left:10px;margin-right:10px}.color-picker-wheel{font-size:0;height:auto;margin-left:auto;margin-right:auto;max-width:100%;position:relative;width:var(--f7-color-picker-wheel-width)}.color-picker-wheel svg{height:auto;width:100%}.color-picker-wheel .color-picker-wheel-handle{background:red;border:2px solid #fff;border-radius:50%;box-shadow:0 0 5px rgba(0,0,0,.5);box-sizing:border-box;height:16.66666667%;left:0;position:absolute;top:0;width:16.66666667%}.color-picker-wheel .color-picker-sb-spectrum{height:45%;left:50%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0);width:45%}.color-picker-slider-wrap{align-items:center;display:flex;margin-bottom:2px}.color-picker-slider-wrap+.color-picker-slider-wrap{margin-top:5px}.color-picker-hex-wrap{align-items:center;display:flex;justify-content:space-between}.color-picker-hex-label,.color-picker-slider-label{flex-shrink:0;font-size:var(--f7-color-picker-label-font-size);margin-right:12px;width:var(--f7-color-picker-label-size)}.color-picker-hex-label{width:auto}.color-picker-bar-value,.color-picker-hex-value,.color-picker-slider-value{align-items:center;background:var(--f7-color-picker-value-bg-color);border-radius:var(--f7-color-picker-value-border-radius);display:flex;flex-shrink:0;font-size:var(--f7-color-picker-value-font-size);height:var(--f7-color-picker-value-height);justify-content:center;margin-left:10px;text-align:center;width:var(--f7-color-picker-value-width)}.color-picker-bar-value input,.color-picker-hex-value input,.color-picker-slider-value input{-webkit-appearance:none;appearance:none;background:transparent;border:none;border-radius:4px;color:inherit;display:block;font-family:inherit;font-size:inherit;height:100%;outline:0;text-align:center;width:100%}.color-picker-bar-value input::-webkit-inner-spin-button,.color-picker-bar-value input::-webkit-outer-spin-button,.color-picker-hex-value input::-webkit-inner-spin-button,.color-picker-hex-value input::-webkit-outer-spin-button,.color-picker-slider-value input::-webkit-inner-spin-button,.color-picker-slider-value input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;display:none;margin:0}.color-picker-hex-value{width:var(--f7-color-picker-hex-value-width)}.color-picker-hex-value:first-child{margin-left:auto}.color-picker-slider{--f7-range-bar-active-bg-color:transparent;--f7-range-bar-size:var(--f7-color-picker-slider-size);--f7-range-bar-border-radius:var(--f7-color-picker-slider-size);--f7-range-knob-size:var(--f7-color-picker-slider-knob-size);--f7-range-knob-box-shadow:0 1px 2px rgba(0,0,0,0.3)}.color-picker-slider .range-knob{transition-duration:.2s;transition-property:transform}.color-picker-slider .range-knob:after{height:30px;margin-left:-16px;margin-top:-16px;width:30px}.color-picker-slider .range-knob-active-state .range-knob{transform:scale(1.5)}.md .color-picker-slider.range-slider-min:not(.range-slider-dual) .range-knob{background:var(--f7-range-knob-color)!important;border:none}.color-picker-module-rgb-bars{align-items:stretch;box-sizing:border-box;display:flex;height:100%;justify-content:space-around;justify-content:space-evenly;min-height:var(--f7-color-picker-bar-min-height);padding-bottom:10px;padding-top:10px}.color-picker-bar-wrap{align-items:center;display:flex;flex-direction:column-reverse}.color-picker-bar{--f7-range-bar-active-bg-color:transparent;--f7-range-bar-size:var(--f7-color-picker-bar-size);--f7-range-bar-border-radius:2px;--f7-range-knob-size:6px;--f7-range-knob-box-shadow:0 0px 3px rgba(0,0,0,0.3);--f7-range-knob-color:#fff}.color-picker-bar .range-knob{border-radius:3px;transition-duration:0ms;transition-property:transform}.color-picker-bar .range-knob-wrap{height:6px;margin-left:calc((var(--f7-color-picker-bar-size) - 4px)*-.5);width:calc(var(--f7-color-picker-bar-size) - 4px)}.color-picker-bar .range-knob-active-state .range-knob{transform:scale(1)}.md .color-picker-bar.range-slider-min:not(.range-slider-dual) .range-knob{background:var(--f7-range-knob-color)!important;border:none}.color-picker-bar-label{flex-shrink:0;font-size:var(--f7-color-picker-label-size);height:var(--f7-color-picker-label-height);line-height:1;margin-top:12px}.color-picker-bar-value{margin-bottom:10px;margin-left:0}.color-picker-slider-alpha{--f7-range-knob-color:#fff}.color-picker-slider-alpha .range-bar{background-image:linear-gradient(90deg,rgba(0,0,0,0),#000),linear-gradient(90deg,rgba(255,255,255,.2) 50%,rgba(0,0,0,.2) 0),linear-gradient(270deg,rgba(255,255,255,.2) 50%,rgba(0,0,0,.2) 0);background-position:0 0,0 3px,0 0;background-repeat:repeat-y,repeat-x,repeat-x;background-size:100% 100%,6px 3px,6px 3px}.color-picker-slider-hue .range-bar{background-image:linear-gradient(90deg,hsl(0,100%,50%),hsl(60,100%,50%),hsl(120,100%,50%),hsl(180,100%,50%),hsl(240,100%,50%),hsl(300,100%,50%),hsl(0,100%,50%))}.color-picker-slider-brightness .range-bar{background-image:linear-gradient(90deg,#000,#fff)}.color-picker-module-palette{margin-top:16px}.color-picker-module-palette:first-child{margin-top:0}.color-picker-module-palette:last-child{margin-bottom:0}.color-picker-module-palette:first-child:last-child{margin:0}.color-picker-palette{display:flex;flex-wrap:wrap}.color-picker-palette-row{display:flex;flex-wrap:nowrap;width:100%}.color-picker-palette-row .color-picker-palette-value{width:100%}.color-picker-palette-value{cursor:pointer;height:var(--f7-color-picker-palette-value-height);width:var(--f7-color-picker-palette-value-width)}.color-picker-module-current-color,.color-picker-module-initial-current-colors{border-radius:var(--f7-color-picker-initial-current-color-border-radius);flex-shrink:0;margin-left:10px;margin-right:10px;overflow:hidden}.color-picker-current-color,.color-picker-initial-color{height:var(--f7-color-picker-initial-current-color-height)}.color-picker-initial-current-colors{display:flex}.color-picker-initial-current-colors .color-picker-current-color,.color-picker-initial-current-colors .color-picker-initial-color{width:50%}.color-picker-module-alpha-slider,.color-picker-module-brightness-slider,.color-picker-module-hex,.color-picker-module-hsb-sliders,.color-picker-module-hue-slider,.color-picker-module-rgb-sliders{margin-left:10px;margin-right:10px}.color-picker-grouped-modules .color-picker-module-alpha-slider,.color-picker-grouped-modules .color-picker-module-brightness-slider,.color-picker-grouped-modules .color-picker-module-hex,.color-picker-grouped-modules .color-picker-module-hsb-sliders,.color-picker-grouped-modules .color-picker-module-hue-slider,.color-picker-grouped-modules .color-picker-module-rgb-sliders{background:var(--f7-color-picker-group-bg-color);border-radius:8px;margin-left:8px;margin-right:8px;margin-top:16px;padding:8px}.color-picker-grouped-modules .color-picker-module-alpha-slider:last-child,.color-picker-grouped-modules .color-picker-module-brightness-slider:last-child,.color-picker-grouped-modules .color-picker-module-hex:last-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders:last-child,.color-picker-grouped-modules .color-picker-module-hue-slider:last-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders:last-child{margin-bottom:16px}.color-picker-grouped-modules .color-picker-hex-value,.color-picker-grouped-modules .color-picker-slider-value{background:var(--f7-color-picker-group-value-bg-color)}.color-picker-grouped-modules .color-picker-hex-label,.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:first-child,.color-picker-grouped-modules .color-picker-slider-label{margin-left:5px}.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:last-child{margin-right:5px}:root{--f7-treeview-item-height:34px;--f7-treeview-item-padding-left:16px;--f7-treeview-item-padding-right:16px;--f7-treeview-toggle-size:24px;--f7-treeview-children-offset:29px;--f7-treeview-label-font-weight:400;--f7-treeview-label-text-color:inherit;--f7-treeview-icon-size:24px;--f7-treeview-toggle-color:rgba(0,0,0,0.5);--f7-treeview-toggle-hover-bg-color:rgba(0,0,0,0.1);--f7-treeview-toggle-pressed-bg-color:rgba(0,0,0,0.15);--f7-treeview-icon-color:rgba(0,0,0,0.5);--f7-treeview-selectable-hover-bg-color:rgba(0,0,0,0.1);--f7-treeview-link-hover-bg-color:rgba(0,0,0,0.1);--f7-treeview-link-pressed-bg-color:rgba(0,0,0,0.15)}:root .dark,:root.dark{--f7-treeview-toggle-color:rgba(255,255,255,0.5);--f7-treeview-toggle-hover-bg-color:rgba(255,255,255,0.03);--f7-treeview-toggle-pressed-bg-color:rgba(255,255,255,0.1);--f7-treeview-icon-color:rgba(255,255,255,0.75);--f7-treeview-selectable-hover-bg-color:rgba(255,255,255,0.03);--f7-treeview-link-hover-bg-color:rgba(255,255,255,0.03);--f7-treeview-link-pressed-bg-color:rgba(255,255,255,0.11)}.ios{--f7-treeview-label-font-size:17px}.md{--f7-treeview-label-font-size:16px}.treeview-item-root{min-height:var(--f7-treeview-item-height);padding-left:var(--f7-treeview-item-padding-left);padding-right:var(--f7-treeview-item-padding-right)}.treeview-item-content,.treeview-item-root{align-items:center;display:flex;justify-content:flex-start}.treeview-item-content>.f7-icons,.treeview-item-content>.material-icons,.treeview-item-content>i{color:var(--f7-treeview-icon-color);font-size:var(--f7-treeview-icon-size)}.treeview-item-content:first-child{margin-left:calc(var(--f7-treeview-toggle-size) + 5px)}.treeview-item-content>*+*{margin-left:5px}.treeview-item-label{color:var(--f7-treeview-label-text-color);font-size:var(--f7-treeview-label-font-size);font-weight:var(--f7-treeview-label-font-weight)}.treeview-toggle{background-color:rgba(0,0,0,0);border-radius:4px;cursor:pointer;height:var(--f7-treeview-toggle-size);margin-right:5px;position:relative;transition-duration:.2s;width:var(--f7-treeview-toggle-size)}.treeview-toggle.active-state{background-color:var(--f7-treeview-toggle-pressed-bg-color)}.treeview-toggle:after{border-bottom:5px solid transparent;border-left:6px solid var(--f7-treeview-toggle-color);border-top:5px solid transparent;content:"";height:0;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);transition-duration:.2s;width:0}.treeview-toggle-hidden{opacity:0;pointer-events:none;visibility:hidden}.treeview-preloader{--f7-preloader-size:var(--f7-treeview-toggle-size);margin-right:calc(var(--f7-treeview-toggle-size)*-1)}.treeview-item-children{display:none}.treeview-item-opened>.treeview-item-children{display:block}.treeview-item-opened>.treeview-item-root .treeview-toggle:after{transform:translate(-50%,-50%) rotate(90deg)}a.treeview-item-root{color:var(--f7-treeview-label-text-color)}.treeview-item-selectable.treeview-item-root,.treeview-item-selectable>.treeview-item-root{cursor:pointer;transition-duration:.15s}a.treeview-item-root{transition-duration:.15s}a.treeview-item-root.active-state{background:var(--f7-treeview-link-pressed-bg-color)}.treeview-item-toggle.treeview-item-root,.treeview-item-toggle>.treeview-item-root{cursor:pointer}.treeview-item-selected.treeview-item-root,.treeview-item-selected>.treeview-item-root{background:var(--f7-treeview-selectable-selected-bg-color,rgba(var(--f7-theme-color-rgb),.2))}.treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*1)}.treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*2)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*3)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*4)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*5)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*6)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*7)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*8)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*9)}.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root{padding-left:calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset)*10)}:root{--f7-text-editor-font-size:inherit;--f7-text-editor-font-weight:inherit;--f7-text-editor-border-width:1px;--f7-text-editor-height:250px;--f7-text-editor-margin:16px;--f7-text-editor-padding:8px;--f7-text-editor-button-bg-color:transparent;--f7-text-editor-button-size:28px;--f7-text-editor-button-icon-size:20px;--f7-text-editor-button-margin:2px;--f7-text-editor-text-color:#000;--f7-text-editor-bg-color:#fff;--f7-text-editor-button-divider-color:rgba(0,0,0,0.15)}:root .dark,:root.dark{--f7-text-editor-bg-color:#121212;--f7-text-editor-text-color:#fff;--f7-text-editor-button-divider-color:rgba(255,255,255,0.15)}.ios{--f7-text-editor-toolbar-padding:6px;--f7-text-editor-button-border-radius:2px;--f7-text-editor-placeholder-color:rgba(0,0,0,0.35);--f7-text-editor-toolbar-border-color:rgba(0,0,0,0.25);--f7-text-editor-toolbar-bg-color:#fff;--f7-text-editor-border-color:rgba(0,0,0,0.1);--f7-text-editor-button-text-color:#333}.ios .dark,.ios.dark{--f7-text-editor-placeholder-color:rgba(255,255,255,0.35);--f7-text-editor-toolbar-bg-color:#121212;--f7-text-editor-toolbar-border-color:rgba(255,255,255,0.1);--f7-text-editor-toolbar-bg-color:#202020;--f7-text-editor-border-color:rgba(255,255,255,0.1);--f7-text-editor-button-text-color:#fff}.md{--f7-text-editor-button-border-radius:8px;--f7-text-editor-toolbar-padding:8px}.md,.md .dark,.md [class*=color-]{--f7-text-editor-placeholder-color:var(--f7-md-on-surface-variant);--f7-text-editor-toolbar-bg-color:var(--f7-md-surface-1);--f7-text-editor-border-color:var(--f7-md-outline);--f7-text-editor-button-text-color:var(--f7-md-on-surface)}.text-editor{align-items:stretch;background-color:var(--f7-text-editor-bg-color);border:var(--f7-text-editor-border-width) solid var(--f7-text-editor-border-color);box-sizing:border-box;display:block;display:flex;flex-direction:column;height:var(--f7-text-editor-height);margin:var(--f7-text-editor-margin);position:relative}.text-editor.text-editor-resizable{height:auto}.text-editor-toolbar{background:var(--f7-text-editor-toolbar-bg-color);box-sizing:border-box;display:flex;flex-shrink:0;flex-wrap:wrap;left:0;padding:var(--f7-text-editor-toolbar-padding);position:relative;position:sticky;top:0;z-index:100}.text-editor-toolbar:after{background-color:var(--f7-text-editor-toolbar-border-color);bottom:0;content:"";display:block;height:1px;left:0;position:absolute;right:auto;top:auto;transform:scaleY(calc(1/var(--f7-device-pixel-ratio)));transform-origin:50% 100%;width:100%;z-index:15}button.text-editor-button{align-items:center;-webkit-appearance:none;appearance:none;background:transparent;background-color:var(--f7-text-editor-button-bg-color);border:none;border-radius:var(--f7-text-editor-button-border-radius);box-shadow:none;box-sizing:border-box;color:var(--f7-text-editor-button-text-color);cursor:pointer;display:flex;flex-shrink:0;font-family:inherit;height:var(--f7-text-editor-button-size);justify-content:center;margin:0;margin:var(--f7-text-editor-button-margin);outline:0;overflow:hidden;padding:0;position:relative;width:auto;width:var(--f7-text-editor-button-size);z-index:1}button.text-editor-button .f7-icons,button.text-editor-button .material-icons,button.text-editor-button i{font-size:var(--f7-text-editor-button-icon-size);font-style:normal}button.text-editor-button .f7-icons sub,button.text-editor-button .f7-icons sup,button.text-editor-button .material-icons sub,button.text-editor-button .material-icons sup,button.text-editor-button i sub,button.text-editor-button i sup{font-size:60%}.text-editor-button-divider{background:var(--f7-text-editor-button-divider-color);flex-shrink:0;margin:0 2px;width:1px}.text-editor-content{-webkit-user-modify:read-write;-webkit-appearance:none;appearance:none;border:none;box-sizing:border-box;color:var(--f7-text-editor-text-color);flex-shrink:10;font-size:var(--f7-text-editor-font-size);font-weight:var(--f7-text-editor-font-weight);height:100%;outline:0;overflow:auto;padding:var(--f7-text-editor-padding);-webkit-user-select:text;user-select:text}.text-editor-content .text-editor-placeholder{color:var(--f7-text-editor-placeholder-color);pointer-events:none}.text-editor-content img{max-width:100%}.text-editor-content a{pointer-events:none}.text-editor-popover{max-width:80vw;width:auto;z-index:12500}.text-editor-popover .popover-inner{display:flex;flex-wrap:wrap;padding:3px}.text-editor-keyboard-toolbar{--f7-safe-area-bottom:0px;position:absolute;z-index:6000}.text-editor-keyboard-toolbar .toolbar-inner{-webkit-overflow-scrolling:touch;justify-content:flex-start!important;overflow:auto;scrollbar-color:transparent;scrollbar-width:none}.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-track{background:transparent;box-shadow:none}.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.text-editor-keyboard-toolbar .toolbar-inner .text-editor-button-divider{height:100%}.item-input .text-editor{background-color:var(--f7-input-bg-color,transparent);border:none;margin:0}.item-input .text-editor-content{color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);padding:var(--f7-textarea-padding-vertical) var(--f7-input-padding-right) var(--f7-textarea-padding-vertical) var(--f7-input-padding-left)}.item-input .text-editor-toolbar{box-shadow:none}.item-input .text-editor-toolbar:after{display:none!important}.item-input-outline .text-editor-content{border-radius:var(--f7-input-outline-border-radius)}.ios button.text-editor-button{transition:opacity .3s}.ios button.text-editor-button.active-state{opacity:.3;transition-duration:0ms}.md button.text-editor-button{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb),0.25)}.md .text-editor-keyboard-toolbar .toolbar-inner{padding-left:8px;padding-right:8px}.pie-chart{position:relative}.pie-chart svg{display:block;font-size:0;height:auto;margin:0 auto;width:100%}.pie-chart path{transition-duration:.15s}.pie-chart-hidden{opacity:.4}.pie-chart-tooltip{font-size:12px;line-height:1.4;max-width:none;pointer-events:none;text-align:left;white-space:nowrap;width:auto}.pie-chart-tooltip-label{align-items:center;display:flex}.pie-chart-tooltip-color{border-radius:50%;display:inline-block;height:10px;margin-right:4px;width:10px}:root{--f7-area-chart-current-line-stroke-width:2px;--f7-area-chart-current-line-stroke:rgba(0,0,0,0.15);--f7-area-chart-axis-text-color:inherit;--f7-area-chart-axis-height:1px;--f7-area-chart-axis-font-size:10px;--f7-area-chart-axis-font-weight:500;--f7-area-chart-tooltip-font-size:12px;--f7-area-chart-tooltip-total-font-size:16px;--f7-area-chart-tooltip-total-font-weight:bold;--f7-area-chart-tooltip-color-size:10px;--f7-area-chart-legend-font-size:14px;--f7-area-chart-legend-font-weight:500;--f7-area-chart-legend-text-color:inherit;--f7-area-chart-legend-padding:4px 8px;--f7-area-chart-legend-border-radius:4px;--f7-area-chart-legend-color-size:14px;--f7-area-chart-line-stroke-width:2px;--f7-area-chart-axis-bg-color:rgba(0,0,0,0.15);--f7-area-chart-legend-disabled-text-color:rgba(0,0,0,0.22)}:root .dark,:root.dark{--f7-area-chart-axis-bg-color:rgba(255,255,255,0.15);--f7-area-chart-legend-disabled-text-color:rgba(255,255,255,0.22)}.ios{--f7-area-chart-tooltip-total-label-text-color:rgba(255,255,255,0.75)}.md{--f7-area-chart-tooltip-total-label-text-color:inherit}.area-chart{position:relative}.area-chart svg{display:block;font-size:0;height:auto;margin:0 auto;width:100%}.area-chart path{fill:none;stroke-width:var(--f7-area-chart-line-stroke-width)}.area-chart-current-line{stroke:var(--f7-area-chart-current-line-stroke);stroke-width:var(--f7-area-chart-current-line-stroke-width)}.area-chart-axis{background:var(--f7-area-chart-axis-bg-color);color:var(--f7-area-chart-axis-text-color);display:flex;font-size:var(--f7-area-chart-axis-font-size);font-weight:var(--f7-area-chart-axis-font-weight);height:var(--f7-area-chart-axis-height);justify-content:space-between;line-height:1;margin-bottom:2em}.area-chart-axis>span{align-items:flex-start;display:flex;justify-content:center;padding-top:10px;white-space:nowrap;width:0}.area-chart-axis>span:first-child{justify-content:flex-start}.area-chart-axis>span:last-child{justify-content:flex-end}.area-chart-tooltip{font-size:var(--f7-area-chart-tooltip-font-size);line-height:1.4;pointer-events:none;text-align:left}.area-chart-tooltip-label{color:var(--f7-area-chart-tooltip-total-label-text-color)}.area-chart-tooltip-total{font-size:var(--f7-area-chart-tooltip-total-font-size);font-weight:var(--f7-area-chart-tooltip-total-font-weight)}.area-chart-tooltip-list{list-style:none;margin:0;padding:0}.area-chart-tooltip-list li{white-space:nowrap}.area-chart-tooltip-list span{border-radius:50%;display:inline-block;height:var(--f7-area-chart-tooltip-color-size);margin-right:4px;width:var(--f7-area-chart-tooltip-color-size)}.area-chart-axis~.area-chart-legend{margin-top:2em}.area-chart-legend{align-items:center;display:flex;flex-wrap:wrap;font-size:var(--f7-area-chart-legend-font-size);justify-content:center;margin-top:1em;width:100%}.area-chart-legend-button{-webkit-appearance:none!important;appearance:none!important;background-color:initial;border:none;border-radius:0;box-shadow:none!important;cursor:pointer;font-family:inherit;font-size:inherit;outline:0!important}.area-chart-legend-item{align-items:center;border-radius:var(--f7-area-chart-legend-border-radius);color:var(--f7-area-chart-legend-text-color);display:flex;font-weight:var(--f7-area-chart-legend-font-weight);overflow:hidden;padding:var(--f7-area-chart-legend-padding);position:relative;transition-duration:.2s;width:auto}.area-chart-legend-item span{border-radius:50%;height:var(--f7-area-chart-legend-color-size);margin-right:4px;transition-duration:.2s;width:var(--f7-area-chart-legend-color-size)}.area-chart-legend-item-hidden{color:var(--f7-area-chart-legend-disabled-text-color)}.area-chart-legend-item-hidden span{background-color:var(--f7-area-chart-legend-disabled-text-color)!important}:root{--f7-breadcrumbs-spacing:12px;--f7-breadcrumbs-padding:2px 0;--f7-breadcrumbs-icon-size:24px;--f7-breadcrumbs-separator-color:rgba(0,0,0,0.35)}:root .dark,:root.dark{--f7-breadcrumbs-separator-color:rgba(255,255,255,0.35)}.ios{--f7-breadcrumbs-item-bg-color:transparent;--f7-breadcrumbs-collapsed-border-radius:4px;--f7-breadcrumbs-collapsed-padding:0px 6px;--f7-breadcrumbs-separator-icon:"chevron_right_ios";--f7-breadcrumbs-font-size:17px;--f7-breadcrumbs-item-border-radius:0px;--f7-breadcrumbs-item-padding:0px;--f7-breadcrumbs-item-font-weight:normal;--f7-breadcrumbs-item-active-font-weight:600;--f7-breadcrumbs-item-color:rgba(0,0,0,0.55);--f7-breadcrumbs-item-active-color:#000;--f7-breadcrumbs-collapsed-bg-color:rgba(0,0,0,0.15);--f7-breadcrumbs-collapsed-color:rgba(0,0,0,0.75)}.ios .dark,.ios.dark{--f7-breadcrumbs-item-color:rgba(255,255,255,0.75);--f7-breadcrumbs-item-active-color:#fff;--f7-breadcrumbs-collapsed-bg-color:rgba(255,255,255,0.15);--f7-breadcrumbs-collapsed-color:rgba(255,255,255,0.75)}.md{--f7-breadcrumbs-collapsed-border-radius:8px;--f7-breadcrumbs-collapsed-padding:12px 8px;--f7-breadcrumbs-separator-icon:"chevron_right_md";--f7-breadcrumbs-font-size:14px;--f7-breadcrumbs-item-border-radius:8px;--f7-breadcrumbs-item-padding:4px 8px;--f7-breadcrumbs-item-font-weight:500;--f7-breadcrumbs-item-active-font-weight:500}.md,.md .dark,.md [class*=color-]{--f7-breadcrumbs-item-color:var(--f7-theme-color);--f7-breadcrumbs-item-bg-color:var(--f7-md-secondary-container);--f7-breadcrumbs-item-active-color:var(--f7-md-on-secondary-container);--f7-breadcrumbs-collapsed-color:var(--f7-theme-color);--f7-breadcrumbs-collapsed-bg-color:var(--f7-md-secondary-container)}.breadcrumbs{align-items:center;display:flex;font-size:var(--f7-breadcrumbs-font-size);justify-content:flex-start;overflow:auto;padding:var(--f7-breadcrumbs-padding);scrollbar-color:transparent;scrollbar-width:none;white-space:nowrap}.breadcrumbs::-webkit-scrollbar{-webkit-appearance:none;appearance:none;background:transparent;display:none;opacity:0;width:0}.breadcrumbs::-webkit-scrollbar-track{background:transparent;box-shadow:none}.breadcrumbs::-webkit-scrollbar-thumb{background-color:initial;border-radius:9999px;outline:none;position:relative}.breadcrumbs-collapsed,.breadcrumbs-item,.breadcrumbs-separator{--f7-touch-ripple-color:transparent!important;flex-shrink:0}.breadcrumbs-collapsed+.breadcrumbs-collapsed,.breadcrumbs-collapsed+.breadcrumbs-item,.breadcrumbs-collapsed+.breadcrumbs-separator,.breadcrumbs-item+.breadcrumbs-collapsed,.breadcrumbs-item+.breadcrumbs-item,.breadcrumbs-item+.breadcrumbs-separator,.breadcrumbs-separator+.breadcrumbs-collapsed,.breadcrumbs-separator+.breadcrumbs-item,.breadcrumbs-separator+.breadcrumbs-separator{margin-left:var(--f7-breadcrumbs-spacing)}.breadcrumbs-item{align-items:center;background-color:var(--f7-breadcrumbs-item-bg-color);border-radius:var(--f7-breadcrumbs-item-border-radius);color:var(--f7-breadcrumbs-item-color);display:flex;font-weight:var(--f7-breadcrumbs-item-font-weight);padding:var(--f7-breadcrumbs-item-padding)}.breadcrumbs-item .icon{font-size:var(--f7-breadcrumbs-icon-size);height:var(--f7-breadcrumbs-icon-size);width:var(--f7-breadcrumbs-icon-size)}.breadcrumbs-item a{--f7-touch-ripple-color:transparent!important;color:inherit}.breadcrumbs-item-active{color:var(--f7-breadcrumbs-item-active-color,var(--f7-breadcrumbs-item-color));font-weight:var(--f7-breadcrumbs-item-active-font-weight)}.breadcrumbs-separator{align-items:center;color:var(--f7-breadcrumbs-separator-color);display:flex;height:24px;overflow:hidden}.breadcrumbs-separator:after{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";content:var(--f7-breadcrumbs-separator-icon);direction:ltr;display:block;font-family:framework7-core-icons;font-size:20px;font-style:normal;font-weight:400;height:100%;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap;width:100%;width:12px}.ios .breadcrumbs-separator:after{font-size:12px;height:11px}.md .breadcrumbs-separator:after{font-size:18px;height:18px}.breadcrumbs-collapsed{align-items:center;background:var(--f7-breadcrumbs-collapsed-bg-color);border-radius:var(--f7-breadcrumbs-collapsed-border-radius);cursor:pointer;display:flex;min-height:1em;padding:var(--f7-breadcrumbs-collapsed-padding)}.breadcrumbs-collapsed span,.breadcrumbs-collapsed:after,.breadcrumbs-collapsed:before{background:var(--f7-breadcrumbs-collapsed-color);border-radius:50%;content:"";height:4px;width:4px}.breadcrumbs-collapsed span{margin:0 3px}:root{--f7-typography-padding:16px;--f7-typography-margin:16px}.display-flex{display:flex!important}.display-block{display:block!important}.display-inline-flex{display:inline-flex!important}.display-inline-block{display:inline-block!important}.display-inline{display:inline!important}.display-none{display:none!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-shrink-2{flex-shrink:2!important}.flex-shrink-3{flex-shrink:3!important}.flex-shrink-4{flex-shrink:4!important}.flex-shrink-5{flex-shrink:5!important}.flex-shrink-6{flex-shrink:6!important}.flex-shrink-7{flex-shrink:7!important}.flex-shrink-8{flex-shrink:8!important}.flex-shrink-9{flex-shrink:9!important}.flex-shrink-10{flex-shrink:10!important}.flex-direction-row{flex-direction:row!important}.flex-direction-row-reverse{flex-direction:row-reverse!important}.flex-direction-column{flex-direction:column!important}.flex-direction-column-reverse{flex-direction:column-reverse!important}.justify-content-flex-start{justify-content:flex-start!important}.justify-content-center{justify-content:center!important}.justify-content-flex-end{justify-content:flex-end!important}.justify-content-space-between{justify-content:space-between!important}.justify-content-space-around{justify-content:space-around!important}.justify-content-space-evenly{justify-content:space-evenly!important}.justify-content-stretch{justify-content:stretch!important}.justify-content-start{justify-content:start!important}.justify-content-end{justify-content:end!important}.justify-content-left{justify-content:left!important}.justify-content-right{justify-content:right!important}.align-content-flex-start{align-content:flex-start!important}.align-content-flex-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-space-between{align-content:space-between!important}.align-content-space-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-items-baseline{align-items:baseline!important}.align-items-flex-start{align-items:flex-start!important}.align-items-flex-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-stretch{align-items:stretch!important}.align-self-flex-start{align-self:flex-start!important}.align-self-flex-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-stretch{align-self:stretch!important}.text-align-left{text-align:left!important}.text-align-center{text-align:center!important}.text-align-right{text-align:right!important}.text-align-justify{text-align:justify!important}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}.vertical-align-bottom{vertical-align:bottom!important}.vertical-align-middle{vertical-align:middle!important}.vertical-align-top{vertical-align:top!important}.no-padding{padding:0!important}.no-padding-left{padding-left:0!important}.no-padding-horizontal,.no-padding-right{padding-right:0!important}.no-padding-horizontal{padding-left:0!important}.no-padding-top{padding-top:0!important}.no-padding-bottom,.no-padding-vertical{padding-bottom:0!important}.no-padding-vertical{padding-top:0!important}.no-margin{margin:0!important}.no-margin-left{margin-left:0!important}.no-margin-horizontal,.no-margin-right{margin-right:0!important}.no-margin-horizontal{margin-left:0!important}.no-margin-top{margin-top:0!important}.no-margin-bottom,.no-margin-vertical{margin-bottom:0!important}.no-margin-vertical{margin-top:0!important}.width-auto{width:auto!important}.width-100{width:100%!important}.padding{padding:var(--f7-typography-padding)!important}.padding-half{padding:calc(var(--f7-typography-padding)/2)!important}.padding-top{padding-top:var(--f7-typography-padding)!important}.padding-top-half{padding-top:calc(var(--f7-typography-padding)/2)!important}.padding-bottom{padding-bottom:var(--f7-typography-padding)!important}.padding-bottom-half{padding-bottom:calc(var(--f7-typography-padding)/2)!important}.padding-left{padding-left:var(--f7-typography-padding)!important}.padding-left-half{padding-left:calc(var(--f7-typography-padding)/2)!important}.padding-right{padding-right:var(--f7-typography-padding)!important}.padding-right-half{padding-right:calc(var(--f7-typography-padding)/2)!important}.padding-vertical{padding-bottom:var(--f7-typography-padding)!important;padding-top:var(--f7-typography-padding)!important}.padding-vertical-half{padding-bottom:calc(var(--f7-typography-padding)/2)!important;padding-top:calc(var(--f7-typography-padding)/2)!important}.padding-horizontal{padding-left:var(--f7-typography-padding)!important;padding-right:var(--f7-typography-padding)!important}.padding-horizontal-half{padding-left:calc(var(--f7-typography-padding)/2)!important;padding-right:calc(var(--f7-typography-padding)/2)!important}.margin{margin:var(--f7-typography-margin)!important}.margin-half{margin:calc(var(--f7-typography-margin)/2)!important}.margin-top{margin-top:var(--f7-typography-margin)!important}.margin-top-half{margin-top:calc(var(--f7-typography-margin)/2)!important}.margin-bottom{margin-bottom:var(--f7-typography-margin)!important}.margin-bottom-half{margin-bottom:calc(var(--f7-typography-margin)/2)!important}.margin-left{margin-left:var(--f7-typography-margin)!important}.margin-left-half{margin-left:calc(var(--f7-typography-margin)/2)!important}.margin-right{margin-right:var(--f7-typography-margin)!important}.margin-right-half{margin-right:calc(var(--f7-typography-margin)/2)!important}.margin-vertical{margin-bottom:var(--f7-typography-margin)!important;margin-top:var(--f7-typography-margin)!important}.margin-vertical-half{margin-bottom:calc(var(--f7-typography-margin)/2)!important;margin-top:calc(var(--f7-typography-margin)/2)!important}.margin-horizontal{margin-left:var(--f7-typography-margin)!important;margin-right:var(--f7-typography-margin)!important}.margin-horizontal-half{margin-left:calc(var(--f7-typography-margin)/2)!important;margin-right:calc(var(--f7-typography-margin)/2)!important}[class*=text-color-]{color:var(--f7-theme-color-text-color)!important}[class*=bg-color-]{background-color:var(--f7-theme-color-bg-color)!important}[class*=border-color-]{border-color:var(--f7-theme-color-border-color)!important} +/*# sourceMappingURL=../../spreadsheeteditor/mobile/css/framework7.css.map */ +/*# sourceMappingURL=framework7.css.map*/ \ No newline at end of file diff --git a/apps/spreadsheeteditor/mobile/css/framework7.css.map b/apps/spreadsheeteditor/mobile/css/framework7.css.map new file mode 100644 index 0000000000..665b15e3c3 --- /dev/null +++ b/apps/spreadsheeteditor/mobile/css/framework7.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://documenteditor/../../spreadsheeteditor/mobile/css/framework7.css"],"names":[],"mappings":"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AClB,SAGF,CACA,qGAGE,sDACF,CACA,mIAGE,gEACF,CACA,gKAIE,mBACF,CACA,oBASE,sGAAkI,CADlI,UAAW,CALX,UAAW,CAEX,UAKF,CACA,yCAPE,QAAS,CAET,UAAW,CACX,SAAU,CANV,iBAAkB,CAClB,KAmBF,CAVA,qBAIE,yBAA8B,CAF9B,MAAO,CAGP,UAAW,CAIX,aACF,CACA,oBACE,+BACF,CACA,gBACE,+BACF,CAOA,0GACE,SACF,CACA,2CACE,8EACF,CACA,kDAUE,8EAA+E,CAD/E,sGAAkI,CALlI,QAAS,CAET,UAAW,CACX,SAAU,CANV,iBAAkB,CAOlB,UAAW,CANX,KAAM,CACN,UAAW,CAEX,UAMF,CACA,8CACE,kFACF,CACA,oDAUE,8EAA+E,CAN/E,yBAA8B,CAE9B,QAAS,CACT,UAAW,CALX,MAAO,CAMP,SAAU,CAPV,iBAAkB,CAElB,KAAM,CAEN,UAAW,CAIX,aAEF,CACA,gDACE,kFACF,CACA,sDAUE,+EAAgF,CANhF,yBAA8B,CAE9B,QAAS,CACT,UAAW,CALX,MAAO,CAMP,SAAU,CAPV,iBAAkB,CAElB,KAAM,CAEN,UAAW,CAIX,aAEF,CACA,+CACE,8EACF,CACA,sDAUE,+EAAgF,CADhF,sGAAkI,CALlI,QAAS,CAET,UAAW,CACX,SAAU,CANV,iBAAkB,CAOlB,UAAW,CANX,KAAM,CACN,UAAW,CAEX,UAMF,CACA,oCACE,GACE,+BACF,CACA,GACE,uBACF,CACF,CACA,wCACE,GACE,+BACF,CACA,GACE,uBACF,CACF,CACA,wCACE,GACE,uBACF,CACA,GACE,+BACF,CACF,CACA,oCACE,GACE,uBACF,CACA,GACE,+BACF,CACF,CACA,oCACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,qCACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,mBACE,gCACF,CACA,eAGE,SAAU,CAFV,mBAAoB,CACpB,gCAEF,CACA,kCAEE,SAAU,CADV,+BAEF,CACA,0CAEE,qGAA2G,CAD3G,SAEF,CACA,6CACE,yGACF,CACA,8CACE,qMACF,CACA,+CACE,iFACF,CACA,mCACE,GACE,gCACF,CACA,GACE,uBACF,CACF,CACA,mCACE,GACE,uBACF,CACA,GACE,gCACF,CACF,CACA,2CACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,uCACE,GACE,uBACF,CACA,GACE,gCACF,CACF,CACA,uCACE,GACE,gCACF,CACA,GACE,uBACF,CACF,CAIA,0GACE,YACF,CACA,oEAGE,wBAAyB,CACzB,8BAA+B,CAC/B,wFAAyF,CAHzF,iCAIF,CACA,kFAGE,uBAAwB,CACxB,6BAA8B,CAC9B,gCAAiC,CAHjC,8CAIF,CACA,8DACE,MAAO,CACP,OAAQ,CACR,UACF,CACA,iCAGE,mBAAoB,CADpB,cAAe,CADf,SAGF,CACA,+EAEE,YACF,CACA,mDACE,cACF,CACA,8KAIE,SAAU,CACV,cACF,CACA,6HAEE,cACF,CACA,YAcE,qBAAsB,CATtB,qCAAsC,CAEtC,wCAAyC,CACzC,4CAA6C,CAF7C,kDAAmD,CAGnD,4CAA6C,CAM7C,eAAgB,CAFhB,2NAAqD,CAZrD,iBAAkB,CAElB,sBAAuB,CACvB,kBAAmB,CAYnB,UAAW,CAdX,UAeF,CACA,uFAUE,kCAAmC,CARnC,UAAW,CAKX,cAAe,CAHf,QAAS,CAIT,mBAAoB,CACpB,kBAAmB,CANnB,iBAAkB,CAElB,OAAQ,CACR,aAAc,CAKd,WACF,CACA,uFAEE,mBACF,CACA,2CAGE,0CAA6C,CAD7C,iBAAkB,CADlB,kBAGF,CACA,yGAIE,gDAAmD,CACnD,mBAAsB,CAHtB,SAAU,CACV,mBAAqB,CAGrB,WACF,CACA,4CACE,2CAA8C,CAC9C,oBACF,CACA,iHAEE,gDAAmD,CACnD,WACF,CACA,+BACE,GAEE,iBAAkB,CADlB,kBAEF,CACA,IACE,iBACF,CACA,GAEE,eAAiB,CADjB,kBAEF,CACF,CACA,gCACE,GAEE,eAAiB,CADjB,kBAEF,CACA,IACE,iBACF,CACA,GAEE,iBAAkB,CADlB,kBAEF,CACF,CACA,qCACE,GAEE,SAAU,CADV,mBAEF,CACA,IAEE,SAAU,CADV,sBAEF,CACA,GAEE,SAAU,CADV,kBAEF,CACF,CACA,qCACE,GAEE,SAAU,CADV,kBAEF,CACA,IAEE,SAAU,CADV,sBAEF,CACA,IAEE,SAAU,CADV,mBAEF,CACA,GAEE,SAAU,CADV,mBAEF,CACF,CACA,6EAEE,eAAgB,CAChB,kBACF,CACA,yFAEE,mBACF,CACA,iDACE,sFACF,CACA,oDACE,sFACF,CACA,qDACE,sFACF,CACA,sDACE,sFACF,CACA,sCACE,GACE,0BACF,CACA,GACE,uBACF,CACF,CACA,sCACE,GACE,uBACF,CACA,GACE,0BACF,CACF,CACA,sCACE,GAEE,SAAU,CADV,uBAEF,CACA,GAEE,UAAY,CADZ,4BAEF,CACF,CACA,sCACE,GAEE,UAAY,CADZ,4BAEF,CACA,GAEE,SAAU,CADV,uBAEF,CACF,CACA,yEAEE,eAAgB,CAChB,kBACF,CACA,qFAEE,mBACF,CACA,+CACE,oFACF,CACA,kDACE,oFACF,CACA,mDACE,oFACF,CACA,oDACE,oFACF,CACA,oCACE,GACE,0BACF,CACA,GACE,uBACF,CACF,CACA,oCACE,GACE,uBACF,CACA,GACE,0BACF,CACF,CACA,oCACE,GAEE,SAAU,CADV,uBAEF,CACA,GAEE,UAAY,CADZ,4BAEF,CACF,CACA,oCACE,GAEE,UAAY,CADZ,4BAEF,CACA,GAEE,SAAU,CADV,uBAEF,CACF,CACA,uEAEE,kCAAmC,CACnC,kBACF,CACA,mFAEE,mBACF,CACA,8CACE,kFACF,CACA,iDACE,kFACF,CACA,kDACE,kFACF,CACA,mDACE,kFACF,CACA,mCACE,GACE,SAAU,CACV,4BACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,uBACF,CACF,CACA,mCACE,GACE,SAAU,CACV,uBACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,4BACF,CACF,CACA,mCACE,GAEE,SAAU,CADV,uBAEF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,2BACF,CACF,CACA,mCACE,GACE,SAAU,CACV,2BACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,uBACF,CACF,CACA,uEAEE,kCACF,CACA,mFAEE,mBACF,CACA,qGAGE,qEAAsE,CADtE,SAEF,CAKA,wNAEE,sEACF,CACA,+GAEE,qEACF,CACA,sBACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,uBACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,uEAEE,eAAgB,CAChB,kBACF,CACA,mFAEE,kCAAmC,CAC3B,0BAA2B,CACnC,eAAgB,CAChB,mBACF,CACA,8CAEE,kFAAmF,CADnF,2BAEF,CACA,iDAEE,kFAAmF,CADnF,2BAEF,CACA,kDAEE,kFAAmF,CADnF,2BAEF,CACA,mDAEE,kFAAmF,CADnF,2BAEF,CACA,mCACE,GACE,kBAAmB,CACnB,8CACF,CACA,GACE,eAAgB,CAChB,qCACF,CACF,CACA,mCACE,GACE,eAAkB,CAClB,qCACF,CACA,GACE,kBAAmB,CACnB,8CACF,CACF,CACA,mCACE,GACE,eAAkB,CAClB,qCACF,CACA,GACE,kBAAmB,CACnB,+CACF,CACF,CACA,mCACE,GACE,kBAAmB,CACnB,+CACF,CACA,GACE,eAAkB,CAClB,qCACF,CACF,CACA,6CACE,mBACF,CACA,kDACE,0FACF,CACA,qDACE,0FACF,CACA,8CACE,mBACF,CACA,sDACE,0FACF,CACA,uDACE,0FACF,CACA,uCACE,GACE,0BACF,CACA,GACE,uBACF,CACF,CACA,uCACE,GACE,uBACF,CACA,GACE,0BACF,CACF,CACA,uCACE,GACE,uBACF,CACA,GACE,0BACF,CACF,CACA,uCACE,GACE,0BACF,CACA,GACE,uBACF,CACF,CACA,yCACE,mBACF,CACA,8CACE,kFACF,CACA,iDACE,kFACF,CACA,0CACE,mBACF,CACA,kDACE,kFACF,CACA,mDACE,kFACF,CACA,mCACE,GACE,0BACF,CACA,GACE,uBACF,CACF,CACA,mCACE,GACE,uBACF,CACA,GACE,0BACF,CACF,CACA,mCACE,GACE,uBACF,CACA,GACE,2BACF,CACF,CACA,mCACE,GACE,2BACF,CACA,GACE,uBACF,CACF,CAEA,MACE,yCAA6C,CAC7C,gDAAoD,CACpD,8DACF,CACA,KACE,6BACF,CACA,gBASE,8FAAiG,CALjG,oBAAqB,CADrB,kBAAmB,CAInB,qBAAsB,CALtB,mBAAoB,CAGpB,sBAAuB,CACvB,iBAAkB,CAElB,SAEF,CACA,oDAIE,eACF,CACA,qBACE,2BACF,CACA,WACE,sBACF,CACA,wBACE,sCAAuC,CACvC,uBACF,CAEA,MAME,+CAAgD,CAChD,iCAAkC,CAClC,uCAAwC,CACxC,uCAAwC,CACxC,0CAA2C,CAC3C,yCAA0C,CAC1C,0CACF,CACA,KAKE,uBAAwB,CACxB,0BAA2B,CAC3B,mCAAoC,CACpC,kCAAmC,CACnC,mCAAoC,CACpC,iCAAkC,CAClC,+BAAgC,CAChC,gCAAiC,CACjC,mCAAoC,CACpC,mCAAoC,CACpC,kCAAmC,CACnC,mCAAoC,CACpC,sCAAuC,CACvC,uCAAwC,CACxC,8CAA+C,CAC/C,4CAA6C,CAK7C,gDACF,CACA,qBAEE,sDACF,CACA,IACE,uBAAwB,CACxB,0BAA2B,CAC3B,gCAAiC,CACjC,kCAAmC,CACnC,mCAAoC,CACpC,iCAAkC,CAClC,iCAAkC,CAClC,mCAAoC,CACpC,iCAAkC,CAClC,mCAAoC,CACpC,oCAAqC,CACrC,sCAAuC,CACvC,mCAAoC,CACpC,uCAAwC,CACxC,wCAAyC,CACzC,4CAA6C,CAC7C,4BAA6B,CAC7B,iCACF,CACA,kCAGE,8CAA+C,CAC/C,8CAA+C,CAC/C,+DACF,CACA,iBAGE,MAAO,CACP,KAAM,CACN,UAAW,CAHX,WAIF,CACA,SACE,iBACF,CACA,iBACE,YACF,CACA,+BACE,WACF,CACA,QACE,qCAAsC,CAEtC,kCAAmC,CAC3B,0BAA2B,CACnC,qBAAsB,CAGtB,2DAA6D,CAC7D,oCAAqC,CAFrC,8DAA+D,CAD/D,QAAS,CAJT,iBAQF,CACA,UACE,eACF,CACA,UACE,iFACF,CACA,eACE,YAAa,CAGb,2DAA6D,CAF7D,0BAA2B,CAC3B,qEAEF,CACA,4CAGE,iBAAkB,CAClB,UACF,CACA,eAOE,oBAAqB,CAFrB,cAAe,CAKf,0CAA2C,CAJ3C,8CAA+C,CAE/C,8CAA+C,CAG/C,8CAA+C,CAC/C,+CAAgD,CAVhD,eAAgB,CADhB,iBAAkB,CAQlB,4CAA6C,CAN7C,sBAAuB,CACvB,kBASF,CACA,kBAEE,0CAA2C,CAD3C,aAAc,CAGd,6CAA8C,CAD9C,eAAmB,CAEnB,iDAAkD,CAClD,+CACF,CACA,6BAKE,kBAAmB,CAFnB,YAAa,CADb,aAAc,CAEd,0BAEF,CACA,2BAEE,WAAY,CADZ,iBAEF,CAKA,sJAEE,sBACF,CACA,iFAEE,mBACF,CACA,WAQE,oCAAqC,CACrC,kEAAoE,CAJpE,WAAY,CAHZ,MAAO,CAIP,mBAAoB,CALpB,iBAAkB,CAElB,KAAM,CAON,6BAA8B,CAN9B,UAAW,CAGX,SAIF,CACA,iFACE,iCAEE,4EAA6E,CACrE,oEAAqE,CAF7E,mHAGF,CACF,CACA,mCAEE,kCAAmC,CAC3B,0BACV,CACA,iBAGE,0EAA4E,CAK5E,QAAS,CAPT,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,QAAS,CAOT,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CANX,UAAW,CAWX,SAFF,CAIA,8PAQE,kEACF,CAIA,8GAEE,0EACF,CACA,eACE,2DACF,CACA,6BACE,mBACF,CACA,2GAGE,mBACF,CACA,0BACE,mBACF,CACA,yBACE,qFACF,CACA,mCACE,qCACF,CACA,cAOE,kBAAmB,CAJnB,QAAS,CAKT,qBAAsB,CAFtB,YAAa,CADb,WAAY,CAHZ,MAAO,CAOP,6KAA8K,CAC9K,uBAA+B,CAN/B,UAAW,CAOX,UACF,CACA,0EAZE,iBAiBF,CACA,kPAME,SACF,CACA,yBACE,uDAAwD,CACxD,gHACF,CACA,iFAEE,gDACF,CACA,8RAKE,uDAAwD,CACxD,gHACF,CACA,2CACE,qCACF,CACA,qBACE,gDACF,CACA,wBACE,qCACF,CACA,qCACE,mBACF,CACA,qBAME,YAAa,CAGb,0CAA2C,CAN3C,MAAO,CADP,iBAAkB,CAElB,OAAQ,CACR,QAAS,CAKT,SACF,CACA,+CAXE,qBAAsB,CAOtB,eAAgB,CADhB,kBAsBF,CAjBA,0BAGE,6CAA8C,CAE9C,gDAAiD,CACjD,oDAAqD,CAFrD,0DAA2D,CAG3D,oDAAqD,CAIrD,2PAA6D,CAV7D,sBAAuB,CAcvB,gHAAyH,CACzH,kGAAmG,CAFnG,UAGF,CACA,oDACE,uBACF,CACA,qBAEE,+EACF,CACA,wKAKE,qHACF,CACA,0CAEE,+CACF,CACA,KACE,0EAAiF,CACjF,qEAAsE,CACtE,sGAAyG,CACzG,8DAA+D,CAC/D,wGAA2G,CAC3G,gEAAiE,CACjE,wGAA2G,CAC3G,gEACF,CACA,0BACE,oBACF,CACA,yBAGE,sBAAuB,CADvB,QAAS,CADT,UAGF,CACA,+CAEE,gBACF,CACA,eACE,eACF,CACA,mBACE,iBACF,CACA,oBACE,gBACF,CACA,gCACE,2CACF,CACA,mBACE,6BACF,CACA,8BACE,0BACF,CACA,qCACE,gBACF,CACA,qCAEE,iBAAkB,CADlB,eAEF,CACA,8wBAeE,SACF,CACA,mHAEE,mBACF,CACA,6IAEE,SAAU,CACV,uBACF,CACA,iLAEE,mBAAqB,CACrB,uBACF,CACA,oTAIE,SAAU,CACV,gCACF,CACA,yIAEE,2BACF,CACA,kBACE,mBACF,CACA,6BACE,0BACF,CACA,iDAEE,mFAAsF,CADtF,uBAEF,CACA,2EAEE,SAAU,CACV,+BACF,CACA,mEAEE,sDACF,CACA,mCACE,qDAAsD,CACtD,4BACF,CACA,+EAEE,uBACF,CACA,+LAIE,iFACF,CACA,8cAUE,cAAe,CADf,mBAAqB,CADrB,sDAGF,CACA,uHAGE,cAAe,CACf,SAAU,CAFV,sDAGF,CACA,0bAQE,gFACF,CACA,2pCAmBE,cAAe,CAEf,mBAAqB,CADrB,iCAA0C,CAF1C,sDAIF,CACA,2PAEE,cACF,CACA,whBAIE,mBACF,CACA,sxBAQE,cACF,CACA,4QAEE,gBACF,CACA,gTAEE,2KACF,CACA,kGACE,0FAA2F,CAE3F,4BAA6B,CAD7B,eAEF,CACA,gIACE,gBACF,CAIA,0SACE,4FACF,CACA,+LAEE,cAAe,CACf,mBAAqB,CACrB,qBACF,CACA,oGACE,8FAA+F,CAE/F,4BAA6B,CAD7B,eAEF,CACA,oIACE,gBACF,CAIA,kTACE,6FACF,CACA,0IACE,SACF,CACA,gRAGE,SAAU,CADV,gBAEF,CACA,oTAEE,4KACF,CACA,qMAEE,cAAe,CACf,mBAAqB,CACrB,qBACF,CAIA,4LACE,0CACF,CACA,uIACE,0CACF,CACA,uIACE,0CACF,CACA,0HACE,0CACF,CAIA,sLACE,0CACF,CACA,oIACE,0CACF,CACA,oIACE,0CACF,CACA,4DACE,0CACF,CACA,wIACE,0CACF,CACA,wIACE,0CACF,CACA,mFACE,0CACF,CACA,qHACE,0CACF,CACA,6DACE,0CACF,CACA,yIACE,0CACF,CACA,yIACE,0CACF,CACA,oFACE,0CACF,CACA,6BACE,YACF,CACA,iCACE,WACF,CACA,+FAEE,WACF,CACA,6GAEE,WACF,CACA,mDACE,mBACF,CACA,8PAIE,SACF,CACA,yYASE,wBAA0B,CAH1B,mBAAqB,CAErB,wBAA0B,CAD1B,uBAGF,CACA,gEAEE,wBAA0B,CAD1B,uBAEF,CACA,yEAIE,wBAA0B,CAH1B,uEAA2E,CAE3E,wBAA0B,CAD1B,uBAGF,CACA,mKAGE,wBAA0B,CAD1B,uBAEF,CACA,yLAEE,qBAAuB,CACvB,0DACF,CACA,sCACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,uCACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,gDACE,GACE,8CACF,CACA,GACE,gNACF,CACF,CACA,kDACE,GACE,kNACF,CACA,GACE,8CACF,CACF,CACA,kDACE,GACE,0BACF,CACA,GACE,uBACF,CACF,CACA,mDACE,GACE,uBACF,CACA,GACE,0BACF,CACF,CACA,gDACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,+CACE,GACE,SACF,CACA,IACE,SACF,CACA,GACE,SACF,CACF,CACA,oDACE,GACE,SAAU,CACV,8CACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,gNACF,CACF,CACA,gDACE,GACE,SAAU,CACV,gNACF,CACA,IACE,SACF,CACA,GACE,SAAU,CACV,8CACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,+CACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,4CACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,+CACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,4CACF,CACF,CACA,uCACE,GACE,gDACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,gDACF,CACA,GACE,8CACF,CACF,CACA,uCACE,GACE,6CACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,gDACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,gDACF,CACF,CACA,uCACE,GACE,iDACF,CACA,GACE,6CACF,CACF,CACA,uCACE,GACE,8CACF,CACA,GACE,6CACF,CACF,CACA,uCACE,GACE,+CACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,4CACF,CACA,GACE,iDACF,CACF,CACA,uCACE,GACE,+CACF,CACA,GACE,8CACF,CACF,CACA,uCACE,GACE,4CACF,CACA,GACE,8CACF,CACF,CACA,yBACE,kBACF,CACA,kBACE,eAAgB,CAChB,gBACF,CACA,mBAEE,cAAe,CADf,cAEF,CACA,wBAEE,aAAc,CADd,WAAY,CAEZ,UACF,CACA,mBACE,gBAAiB,CACjB,gBACF,CACA,+BACE,+BACF,CACA,kBACE,0BAA2B,CAC3B,eACF,CAIA,yGACE,gBACF,CACA,uEACE,gBACF,CACA,iCACE,6BACF,CACA,wCACE,aACF,CACA,wCACE,iBACF,CAEA,MAQE,4CAA6C,CAC7C,qCAAsC,CACtC,gDACF,CACA,KACE,wBAAyB,CACzB,2BAA4B,CAC5B,mCAAoC,CACpC,oCAAqC,CACr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,CACA,4HAGE,uFACF,CACA,yHAGE,uFACF,CACA,6JAGE,gDACF,CACA,sNAKE,0DACF,CACF,CACA,yBACE,sEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,6GAGE,aAAc,CACd,cACF,CACA,+EAGE,gDACF,CACA,qMAME,sBACF,CACA,yHAGE,uFACF,CACA,sHAGE,uFACF,CACA,0JAGE,gDACF,CACA,iNAKE,0DACF,CACF,CACA,yBACE,yEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,gHAGE,aAAc,CACd,cACF,CACA,kFAGE,gDACF,CACA,2MAME,sBACF,CACA,4HAGE,uFACF,CACA,yHAGE,uFACF,CACA,6JAGE,gDACF,CACA,sNAKE,0DACF,CACF,CACA,0BACE,sEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,6GAGE,aAAc,CACd,cACF,CACA,+EAGE,gDACF,CACA,qMAME,sBACF,CACA,yHAGE,uFACF,CACA,sHAGE,uFACF,CACA,0JAGE,gDACF,CACA,iNAKE,0DACF,CACF,CACA,0BACE,yEAME,uBAAwB,CACxB,wBAAyB,CAFzB,gDAAiD,CAFjD,mFAAoF,CACpF,qFAIF,CACA,gHAGE,aAAc,CACd,cACF,CACA,kFAGE,gDACF,CACA,2MAME,sBACF,CACA,4HAGE,uFACF,CACA,yHAGE,uFACF,CACA,6JAGE,gDACF,CACA,sNAKE,0DACF,CACF,CACA,8CAGE,wCAAyC,CACzC,+BACF,CACA,WACE,iDAAkD,CAClD,uEAAwE,CACxE,2EAA4E,CAC5E,6EAA8E,CAC9E,qEAAsE,CACtE,uEAAwE,CACxE,6DACF,CACA,8IAME,uBACF,CACA,qCAEE,kBAAmB,CADnB,eAEF,CACA,iDACE,eACF,CACA,gDACE,kBACF,CACA,sBAKE,kDAAmD,CAFnD,yDAA2D,CAC3D,yCAA0C,CAH1C,sCAAuC,CACvC,uCAIF,CACA,6BACE,YACF,CACA,s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CACxD,qEAAsE,CALtE,UAAW,CAGX,aAKF,CACA,wIAGE,gCACF,CACA,yCACE,2DACF,CACA,mDACE,oEACF,CACA,0DACE,uFACF,CACA,oDACE,wGACF,CACA,8DACE,gHACF,CACA,+CACE,SAAU,CACV,mBACF,CACA,8iBAQE,uFAAwF,CACxF,oEACF,CACA,2CACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,4CACE,GACE,SACF,CACA,GACE,SACF,CACF,CAEA,MACE,wCAAyC,CACzC,yCAA0C,CAC1C,0CAA2C,CAC3C,wCACF,CACA,KACE,6CAA8C,CAC9C,oDAAqD,CACrD,2CAA4C,CAC5C,uCAAwC,CACxC,sCAAuC,CACvC,uCAAwC,CACxC,+BACF,CACA,qBAEE,+BAAgC,CAChC,uCACF,CACA,IACE,2CAA4C,CAC5C,oEAAwE,CACxE,6CAA8C,CAC9C,uCAAwC,CACxC,sCACF,CACA,kCAGE,uDAAwD,CACxD,+CACF,CACA,cAUE,0CAA2C,CAH3C,qBAAsB,CADtB,YAAa,CADb,WAAY,CAHZ,MAAO,CADP,iBAAkB,CAElB,KAAM,CAMN,gCAAmC,CADnC,6BAA8B,CAG9B,4EAA6E,CAP7E,UAAW,CAQX,aACF,CACA,+CAEE,8DACF,CACA,2BACE,uBACF,CACA,uBACE,aAAc,CACd,uBACF,CACA,wBACE,+BACF,CACA,6DAGE,kDACF,CACA,6LAME,yDACF,CACA,uUAUE,iDACF,CACA,2DAEE,eACF,CACA,gJAIE,sBACF,CACA,0IAKE,gBAAiB,CACjB,iBAAkB,CAFlB,iBAGF,CACA,oBAIE,6CAA8C,CAF9C,gDAAiD,CACjD,oDAAqD,CAErD,0DAA2D,CAJ3D,kDAKF,CACA,iEAGE,YAAa,CACb,qBACF,CACA,8OAQE,WAAY,CADZ,kBAAmB,CADnB,eAAgB,CAGhB,eAAgB,CAChB,UACF,CACA,+NAME,wBACF,CAEA,MACE,wBACF,CACA,KACE,+BAAgC,CAChC,mCAAoC,CACpC,+CAAgD,CAChD,4CAAgD,CAChD,sDACF,CACA,qBAEE,yCAA6C,CAC7C,4DACF,CACA,IACE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7B,gCACF,CACA,IACE,kCAAmC,CACnC,gCAAiC,CACjC,6BAA8B,CAC9B,gCACF,CACA,kCAGE,6CAA8C,CAC9C,0CACF,CACA,OAQE,yCAA0C,CAD1C,qBAAsB,CAFtB,gCAAiC,CACjC,mCAAoC,CAHpC,mCAAoC,CAMpC,SAAU,CAPV,iBAAkB,CADlB,qCAAuC,CAGvC,aAMF,CACA,iFACE,+BAEE,iDAAkD,CAC1C,yCAA0C,CAFlD,sDAGF,CACF,CACA,gBACE,SACF,CACA,sBAGE,kBAAmB,CACnB,qBAAsB,CAHtB,YAAa,CACb,6BAA8B,CAG9B,2EACF,CACA,mBAEE,aAAc,CADd,gBAAiB,CAEjB,WACF,CACA,qBACE,aAAc,CAGd,kBAAmB,CADnB,eAAgB,CADhB,0CAGF,CACA,sCACE,aAAc,CACd,iBACF,CACA,mCACE,iBACF,CACA,gGAEE,mCACF,CACA,oBACE,OACF,CACA,iBACE,kCACF,CACA,YAGE,MAAO,CAFP,uBAA0B,CAC1B,UAEF,CACA,sBACE,KAAM,CACN,gCACF,CACA,+BACE,uBACF,CACA,yBAGE,2CAA4C,CAD5C,QAAS,CADT,UAIF,CACA,2DAFE,kCAIF,CACA,yBACE,QAAS,CACT,+BACF,CACA,kCACE,uBACF,CACA,yBACE,sBACE,YACF,CACA,qCACE,4EACF,CACA,wCACE,kFACF,CACF,CACA,yBACE,YAGE,2CAA4C,CAF5C,QAAS,CACT,gDAEF,CACA,sBACE,QACF,CACA,yBACE,aACF,CACA,yBACE,qDACF,CACF,CACA,0BACE,YACE,aAAc,CACd,UACF,CACA,kCACE,SACF,CACA,mCACE,SAAU,CACV,UACF,CACA,oCACE,QAAS,CAET,gDAAqD,CADrD,+BAEF,CACF,CACA,mBACE,gBAAiB,CACjB,yDACF,CACA,WAEE,2CAA4C,CAG5C,QAAS,CADT,mBAAqB,CAHrB,uBAA0B,CAE1B,uBAGF,CAIA,yCACE,kBACF,CACA,qBACE,OACF,CACA,wBACE,QAAS,CAET,4CAAgD,CADhD,UAEF,CAIA,mEACE,2CACF,CACA,wBACE,6CACF,CACA,yBACE,WACE,QAAS,CACT,gDACF,CACA,wBACE,aACF,CACF,CACA,0BACE,WACE,aAAc,CACd,UACF,CACA,iCACE,SACF,CACA,kCACE,SAAU,CACV,UACF,CACA,mCACE,QAAS,CAET,gDAAqD,CADrD,+BAEF,CACA,wBACE,8CACF,CACA,qBACE,QACF,CACF,CACA,kBACE,gBAAiB,CACjB,iBACF,CAEA,MACE,gCAAiC,CACjC,6CACF,CACA,KACE,4BAA6B,CAC7B,wBAAyB,CACzB,wCAAyC,CACzC,sCACF,CACA,IACE,4BAA6B,CAC7B,wBAAyB,CACzB,wCAAyC,CACzC,sCACF,CACA,WACE,oBAAqB,CAIrB,WAAY,CADZ,+BAAgC,CAEhC,iBAAkB,CAJlB,qBAAsB,CACtB,8BAIF,CACA,4BAGE,aAAc,CADd,WAAY,CAEZ,iBAAkB,CAHlB,UAIF,CAEA,oBAGE,eAAgB,CADhB,SAAU,CADV,kBAAmB,CAGnB,aACF,CACA,iBAKE,6CAA8C,CAG9C,qDAAsD,CANtD,QAAS,CAET,yCAA0C,CAH1C,iBAAkB,CAElB,OAAQ,CAIR,2CAA4C,CAD5C,aAGF,CACA,4BACE,4DAA6D,CAC7D,uBACF,CACA,+GAIE,+BAAgC,CADhC,eAEF,CACA,0BACE,0CACF,CACA,uBACE,yBACF,CACA,uBACE,yBACF,CACA,gBACE,+BACF,CACA,sBACE,iDACF,CACA,2BAKE,uBAAwB,CADxB,mBAAoB,CAHpB,aAAc,CAEd,aAAc,CAId,QAAS,CADT,iBAAkB,CAElB,OAAQ,CACR,4BAA6B,CAP7B,WAQF,CACA,oGAEE,qDACF,CACA,uCAEE,WAAa,CADb,4CAEF,CACA,wCAEE,iBAAmB,CADnB,6CAEF,CACA,wCAEE,iBAAmB,CADnB,6CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,iBAAmB,CADnB,8CAEF,CACA,wCAEE,WAAa,CADb,8CAEF,CACA,8BACE,GACE,sBACF,CACA,GACE,uBACF,CACF,CACA,oCACE,MAEE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACF,CACA,eACE,+BACF,CACA,qBACE,kDACF,CACA,4BACE,SAAU,CACV,mBAAoB,CAEpB,sBAAuB,CACvB,sBAAuB,CACvB,cAAe,CAHf,8DAA+D,CAI/D,wBAAyB,CACzB,0BACF,CACA,oEAEE,gHACF,CACA,mCACE,MAEE,cACF,CACA,IACE,cACF,CACA,IACE,cACF,CACA,IACE,cACF,CACF,CACA,+BACE,GACE,sBACF,CACA,GACE,uBACF,CACF,CACA,sCACE,GAEE,uBAAwB,CADxB,wBAEF,CACA,MAEE,sBAAuB,CADvB,wBAEF,CACA,IACE,uBAAwB,CACxB,wBACF,CACA,MAEE,uBAAwB,CADxB,yBAEF,CACA,MAEE,sBAAuB,CADvB,yBAEF,CACA,IACE,uBAAwB,CACxB,uBACF,CACA,MAEE,uBAAwB,CADxB,uBAEF,CACA,MAEE,sBAAuB,CADvB,uBAEF,CACA,IACE,uBAAwB,CACxB,uBACF,CACA,MAEE,uBAAwB,CADxB,sBAEF,CACA,MAEE,sBAAuB,CADvB,sBAEF,CACA,GACE,uBAAwB,CACxB,wBACF,CACF,CAOA,KACE,2BAA4B,CAC5B,kCAAmC,CACnC,yCACF,CACA,qBAEE,+CACF,CACA,IACE,2BAA4B,CAC5B,kCACF,CACA,kCAGE,6DACF,CACA,mCAOE,4EAAgF,CAGhF,iDAAkD,CALlD,aAAc,CAId,mCAAoC,CANpC,eAAgB,CAChB,iBAAkB,CAIlB,2BAA4B,CAF5B,2BAA4B,CAJ5B,UASF,CACA,aACE,qBACF,CACA,kBACE,2EAA6E,CAE7E,WAAY,CAIZ,MAAO,CAHP,iBAAkB,CAClB,KAAM,CAGN,gCAAmC,CAFnC,wBAA0B,CAJ1B,UAOF,CACA,sBACE,aACF,CACA,yDASE,2EAA6E,CAP7E,UAAW,CAMX,aAAc,CAFd,WAAY,CAIZ,MAAO,CAPP,iBAAkB,CAClB,KAAM,CAGN,uBAA+B,CAI/B,4BAA6B,CAN7B,UAOF,CACA,kCACE,yBACF,CACA,gBACE,sCACF,CACA,iBACE,uCACF,CACA,mWAkBE,yBAA2B,CAH3B,MAAO,CADP,iBAAkB,CAElB,KAAM,CAGN,qCAAuC,CAFvC,aAGF,CACA,0BACE,GACE,SAAU,CACV,mBACF,CACA,GACE,SAAU,CACV,mBACF,CACF,CACA,2BACE,GACE,SAAU,CACV,mBACF,CACA,GACE,SAAU,CACV,mBACF,CACF,CACA,kCACE,qDACF,CACA,iCACE,YACF,CACA,8CAKE,gEAAiE,CAHjE,+HAA8I,CAE9I,0BAA2B,CAD3B,wBAAyB,CAFzB,UAKF,CACA,oCACE,GACE,gCACF,CACA,GACE,+BACF,CACF,CACA,+CACE,GACE,uBACF,CACA,GACE,+BACF,CACF,CACA,iCACE,sDACF,CACA,gCACE,sDACF,CACA,6CAEE,oEAAqE,CADrE,eAEF,CACA,4CAEE,oEAAqE,CADrE,eAAgB,CAEhB,8BACF,CACA,qCACE,GACE,qCACF,CACA,IACE,oCACF,CACA,IACE,oCACF,CACA,GACE,oCACF,CACF,CACA,qCACE,GACE,qCACF,CACA,IACE,qCACF,CACA,IACE,qCACF,CACA,IACE,qCACF,CACA,GACE,qCACF,CACF,CACA,iDACE,GACE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACA,IACE,wBACF,CACF,CACA,mDACE,GAEE,wBAAyB,CADzB,mBAEF,CACA,MAEE,wBAAyB,CADzB,mBAEF,CACA,IAEE,wBAAyB,CADzB,mBAEF,CACA,MAEE,wBAAyB,CADzB,mBAEF,CACA,IAEE,wBAAyB,CADzB,mBAEF,CACA,MAEE,wBAAyB,CADzB,mBAEF,CACA,IAEE,wBAAyB,CADzB,mBAEF,CACA,GAEE,wBAAyB,CADzB,mBAEF,CACF,CAEA,KACE,gCAAiC,CACjC,iEAAqE,CACrE,4CAAgD,CAChD,yDACF,CACA,qBAEE,sDAA0D,CAC1D,kDACF,CACA,IACE,gCAAiC,CACjC,0CACF,CACA,kCAGE,2DAA4D,CAC5D,0DACF,CACA,4BAWE,kBAAmB,CAHnB,WAAY,CAEZ,YAAa,CARb,WAAY,CAUZ,sBAAuB,CANvB,S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APT,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,QAAS,CAOT,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CANX,UASF,CACA,4CAIE,gCAAiC,CAFjC,+DAAgE,CAGhE,QAAS,CAFT,aAAc,CAFd,kDAKF,CACA,4CACE,YACF,CACA,qIAEE,sBACF,CACA,oDACE,WACF,CACA,oDACE,UACF,CACA,oDACE,gBACF,CACA,oDACE,UACF,CACA,oDACE,UACF,CACA,oDACE,gBACF,CACA,oDACE,gBACF,CACA,oDACE,YACF,CACA,oDACE,gBACF,CACA,qDACE,UACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,YACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,eACF,CACA,qDACE,SACF,CACA,yBACE,2DACE,WACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,gBACF,CACA,2DACE,YACF,CACA,2DACE,gBACF,CACA,4DACE,UACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,YACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,SACF,CACF,CACA,yBACE,0DACE,WACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,UACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,gBACF,CACA,0DACE,YACF,CACA,0DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,YACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,SACF,CACF,CACA,yBACE,2DACE,WACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,gBACF,CACA,2DACE,YACF,CACA,2DACE,gBACF,CACA,4DACE,UACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,YACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,SACF,CACF,CACA,0BACE,0DACE,WACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,UACF,CACA,0DACE,UACF,CACA,0DACE,gBACF,CACA,0DACE,gBACF,CACA,0DACE,YACF,CACA,0DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,YACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,eACF,CACA,2DACE,SACF,CACF,CACA,0BACE,2DACE,WACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,UACF,CACA,2DACE,UACF,CACA,2DACE,gBACF,CACA,2DACE,gBACF,CACA,2DACE,YACF,CACA,2DACE,gBACF,CACA,4DACE,UACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,YACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,eACF,CACA,4DACE,SACF,CACF,CACA,eACE,0CACF,CACA,qBAGE,gEAAiE,CAKjE,WAAY,CAPZ,UAAW,CAGX,aAAc,CAOd,WAAY,CAFZ,SAAU,CAPV,iBAAkB,CAKlB,OAAQ,CADR,KAAM,CAON,sDAAyD,CADzD,yBAA0B,CAF1B,SAAU,CALV,UASF,CACA,gCACE,sBACF,CACA,gBACE,2CACF,CACA,sCAGE,gEAAiE,CAKjE,WAAY,CAPZ,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,KAAM,CAON,sDAAyD,CADzD,sBAAwB,CADxB,UAAW,CANX,UASF,CACA,+BAKE,qBAAsB,CAHtB,YAAa,CACb,aAAc,CAGd,WAAY,CAFZ,iBAGF,CACA,qBAGE,2CAA4C,CAC5C,+CAAgD,CAFhD,qCAAsC,CADtC,0CAIF,CACA,sBAGE,4CAA6C,CAC7C,gDAAiD,CAFjD,sCAAuC,CADvC,2CAIF,CACA,2CAQE,wCAAyC,CAFzC,qBAAsB,CAGtB,+BAAgC,CANhC,MAAO,CAIP,oDAAqD,CALrD,iBAAkB,CAElB,KAAM,CACN,UAKF,CACA,iFACE,uFAGE,4EAA6E,CACrE,oEAAqE,CAF7E,qFAGF,CACF,CACA,qDAEE,oBAAqB,CAErB,gFAAiF,CADjF,eAEF,CACA,2BACE,eACF,CACA,mNAGE,sCAAyC,CACzC,OAAQ,CACR,UACF,CACA,kUAIE,gBACF,CACA,kZAME,yCAA0C,CAD1C,wFAAyF,CAEzF,OAAQ,CAHR,UAIF,CACA,0HAGE,2CAA4C,CAD5C,UAEF,CACA,8HAEE,gBACF,CACA,sKAIE,MAAO,CADP,2CAA4C,CAD5C,UAGF,CACA,wCAEE,+BAAoC,CADpC,iBAEF,CACA,+BACE,cACF,CACA,8BACE,cACF,CAEA,WACE,YACF,CACA,kBACE,aACF,CACA,oBAIE,WAAY,CADZ,eAAgB,CAFhB,iBAAkB,CAClB,UAGF,CACA,0BACE,YAAa,CACb,WAAY,CACZ,uBACF,CACA,+BAEE,aAAc,CACd,aAAc,CAFd,UAGF,CACA,uCACE,uBACF,CACA,sBACE,WACF,CACA,2BACE,aAAc,CACd,kBACF,CACA,YACE,WACF,CAEA,MACE,sBAAuB,CACvB,4CAAgD,CAOhD,wBACF,CACA,uBAEE,wBACF,CACA,KACE,+BAAgC,CAChC,oCAAqC,CACrC,6CACF,CACA,IACE,+BAAgC,CAChC,oCAAqC,CACrC,gEACF,CACA,gBAWE,kDAAmD,CANnD,WAAY,CAHZ,MAAO,CAIP,SAAU,CAGV,mBAAoB,CARpB,iBAAkB,CAElB,KAAQ,CAOR,uBAA+B,CAG/B,uDAAwD,CADxD,qCAAuC,CAJvC,iBAAkB,CAJlB,UAAW,CAGX,YAOF,CACA,gEAEE,kBACF,CACA,6BACE,iCACF,CACA,OAQE,yCAA0C,CAN1C,qBAAsB,CAGtB,WAAY,CAIZ,gBAAiB,CANjB,iBAAkB,CAClB,KAAQ,CAER,uBAA+B,CAK/B,uDAAwD,CADxD,6BAA8B,CAH9B,2BAA4B,CAN5B,YAWF,CACA,8GAGE,YACF,CACA,aAKE,UAAW,CAGX,WAAY,CANZ,SAAU,CADV,mBAAoB,CAGpB,iBAAkB,CAElB,KAAM,CAIN,uDAAwD,CADxD,qCAAuC,CAFvC,UAAW,CAJX,YAQF,CAKA,6HAEE,iCACF,CACA,sBACE,wBAAyB,CACjB,gBACV,CACA,2GAIE,iCACF,CACA,6BAEE,YACF,CACA,gBAEE,kBAAmB,CAGnB,kDAAmD,CAFnD,WAAY,CAFZ,eAAgB,CAGhB,4CAEF,CACA,6CAEE,sBAAuB,CACvB,yBACF,CACA,sBAEE,kDAAmD,CADnD,iDAEF,CACA,4BACE,2BACF,CACA,iEAEE,qDACF,CACA,YACE,MAAO,CACP,sDACF,CACA,0EAGE,qFACF,CACA,aACE,OAAQ,CACR,uDACF,CACA,6EAGE,4EACF,CACA,qBACE,iCAA0C,CAC1C,uBACF,CACA,2BACE,YACF,CACA,qEAEE,YACF,CACA,uBAEE,qEACF,CACA,kaAUE,uDAAwD,CACxD,6BAA8B,CAC9B,qEACF,CACA,2GAGE,+BAAgC,CADhC,eAEF,CACA,wKAIE,2EACF,CACA,4KAIE,sFACF,CACA,sBACE,WACF,CACA,sCAEE,SACF,CACA,yCAEE,WACF,CACA,0XAUE,uDAAwD,CACxD,6BAA8B,CAC9B,qEACF,CACA,wJAIE,2EACF,CACA,4JAIE,sFACF,CACA,uCAGE,SAAU,CADV,mBAAoB,CADpB,kBAGF,CACA,0VAUE,SAAU,CADV,mBAAoB,CADpB,kBAGF,CACA,oFAEE,2EACF,CACA,sFAEE,sFACF,CACA,qEAEE,uBACF,CACA,sCACE,8BACF,CACA,yEAEE,uBACF,CACA,wCACE,+BACF,CACA,iBACE,cACF,CACA,sBAKE,iBAAkB,CAElB,YAAa,CAJb,WAAY,CAFZ,iBAAkB,CAClB,KAAM,CAEN,SAAU,CAEV,YAEF,CACA,uCACE,aACF,CACA,+FAEE,UACF,CACA,4FAEE,OACF,CACA,iGAEE,SACF,CACA,8FAEE,MACF,CACA,6JAIE,gFACF,CACA,+QAIE,0JACF,CACA,iKAIE,kFACF,CACA,uRAIE,4JACF,CACA,gGAEE,8CAA+C,CAC/C,oEAAqE,CACrE,iFAAkF,CAClF,6DACF,CACA,gGAEE,8CAA+C,CAC/C,oEAAqE,CACrE,iFAAkF,CAClF,6DACF,CACA,0NAIE,yDAA0D,CAC1D,sEACF,CACA,4mBAUE,sDAAuD,CAFvD,2CAA6C,CAC7C,4BAEF,CACA,4pBAQE,sDACF,CACA,onBAUE,uDAAwD,CAFxD,2CAA6C,CAC7C,sFAEF,CACA,oqBAQE,uDACF,CACA,sTAIE,qFACF,CACA,0TAIE,4EACF,CACA,4HAEE,yDAA0D,CAC1D,sEACF,CACA,oVAIE,4BACF,CACA,wVAIE,uFACF,CACA,iBACE,eACF,CACA,4BACE,2BACF,CACA,6BACE,2BACF,CAEA,MACE,gCAAiC,CACjC,8BAA+B,CAC/B,yCAA0C,CAC1C,uCAAwC,CACxC,2BAA4B,CAC5B,mCAAoC,CACpC,gCAAiC,CACjC,wCAAyC,CACzC,gCAAiC,CACjC,kCAAmC,CACnC,wCAAyC,CACzC,mCAAoC,CACpC,uCAAwC,CACxC,wCACF,CACA,KACE,2BAA4B,CAC5B,gDAAoD,CACpD,+BAAgC,CAChC,sCAAuC,CACvC,gCAAiC,CACjC,4CAAgD,CAChD,sCAAuC,CACvC,gCAAiC,CACjC,2CAA4C,CAC5C,yCAA0C,CAC1C,6DAAiE,CACjE,uCAAwC,CACxC,8CAA+C,CAC/C,0CAA2C,CAC3C,4CAA6C,CAC7C,4BAA6B,CAC7B,uBAAwB,CACxB,kCAAmC,CACnC,+CAAmD,CACnD,6CAAiD,CACjD,6CACF,CACA,qBAEE,0BAA2B,CAC3B,qCAAsC,CACtC,qDAAyD,CACzD,oDAAwD,CACxD,oDAAwD,CACxD,kDACF,CACA,IACE,4BAA6B,CAC7B,uHAEyD,CACzD,+BAAgC,CAChC,sCAAuC,CACvC,gCAAiC,CACjC,sCAAuC,CACvC,gCAAiC,CACjC,2CAA4C,CAC5C,yCAA0C,CAC1C,qIAEqE,CACrE,uCAAwC,CACxC,8CAA+C,CAC/C,0CAA2C,CAC3C,2CACF,CACA,kCAGE,yCAA0C,CAC1C,oDAAqD,CACrD,mDAAoD,CACpD,kDAAmD,CACnD,kDAAmD,CACnD,4CAA6C,CAC7C,2DACF,CACA,sFAIE,sBACF,CACA,8BAEE,eACF,CACA,MACE,kCAAmC,CAEnC,0CAA2C,CAM3C,+BAAgC,CALhC,kCAAmC,CAInC,yMAAgF,CANhF,iBAQF,CACA,yBAEE,QACF,CACA,6BACE,aAAc,CACd,cACF,CACA,aACE,oCACF,CACA,0DAGE,oDACF,CACA,cACE,iBACF,CACA,sBAEE,yFAA0F,CAD1F,iBAEF,CACA,yDAEE,0GACF,CACA,oCACE,YACF,CACA,mCACE,eACF,CACA,aAEE,sCAAuC,CACvC,yCAA0C,CAC1C,6CAA8C,CAH9C,2CAA4C,CAI5C,uFACF,CACA,+FAGE,0DACF,CACA,aAEE,sCAAuC,CACvC,yCAA0C,CAC1C,6CAA8C,CAH9C,2CAA4C,CAI5C,uFACF,CACA,+FAGE,uDACF,CACA,oBACE,eACF,CACA,0BAME,kBAAmB,CAHnB,qBAAsB,CACtB,YAAa,CACb,6BAA8B,CAH9B,iBAKF,CACA,kDAEE,sBACF,CACA,wDAEE,oBACF,CACA,wCAEE,iBACF,CACA,sDAEE,aACF,CACA,kDAIE,kBAAmB,CAFnB,YAAa,CACb,sBAAuB,CAEvB,QACF,CACA,aACE,2EACF,CACA,aACE,2EACF,CACA,iBAGE,6CAA8C,CAI9C,qDAAsD,CAOtD,6CAA8C,CAZ9C,YAAa,CAWb,qPAAwD,CAZxD,eAAgB,CAGhB,iBAAkB,CAClB,8BAA+B,CAI/B,uBAA0B,CAH1B,2CAA6C,CAE7C,SAOF,CACA,6BACE,+CACF,CACA,mCACE,wBAAyB,CACjB,gBACV,CACA,oCACE,uBACF,CACA,6DACE,mCAAqC,CACrC,UACF,CACA,8BACE,kCACF,CACA,6EAEE,uBACF,CACA,sCACE,SAAU,CACV,mBACF,CACA,+BAQE,qBAAsB,CAJtB,YAAa,CAMb,MAAO,CAJP,eAAgB,CAGhB,mBAAoB,CARpB,iBAAkB,CAClB,KAAM,CAGN,2BAA4B,CAE5B,6BAA8B,CAJ9B,WAQF,CACA,qDACE,uFAAwF,CACxF,yFACF,CACA,6BACE,uBACF,CACA,gGAGE,uBACF,CACA,4CACE,uBACF,CACA,4CACE,uBACF,CACA,yFAGE,WACF,CACA,2DAEE,eACF,CACA,qGAEE,SAAU,CACV,mBACF,CACA,uGAEE,SAAU,CACV,mBACF,CACA,2CAEE,gCAAiC,CADjC,aAAc,CAEd,mBACF,CACA,8BACE,oDAAqD,CACrD,wDACF,CACA,mBACE,mBACF,CACA,sBAEE,QAAS,CAET,MAAO,CAEP,SAAU,CACV,mBAAoB,CAJpB,iBAAkB,CAElB,KAAM,CAGN,iBAAkB,CAPlB,OAQF,CACA,gDACE,8CACE,gDACF,CACA,qHAEE,4DACF,CACA,gGACE,4CACF,CACA,oEAEE,8CAA+C,CAD/C,4CAEF,CACF,CACA,0CACE,eACF,CACA,eAQE,yBAA8B,CAH9B,WAAY,CAHZ,MAAO,CAOP,SAAU,CAFV,mBAAoB,CANpB,cAAe,CAEf,KAAM,CACN,UAAW,CAEX,WAIF,CACA,kBACE,4CAA+C,CAC/C,mBACF,CACA,mBACE,6CACF,CACA,iFACE,eAEE,kCAAmC,CAC3B,0BAA2B,CAFnC,sBAGF,CACF,CACA,iCACE,GACE,SACF,CACA,GACE,SACF,CACF,CACA,kCACE,GACE,SACF,CACA,GACE,SACF,CACF,CAEA,MACE,wBAAyB,CACzB,8BAA+B,CAC/B,kCACF,CACA,uBAEE,kCACF,CACA,KACE,qBAAsB,CACtB,yBAA0B,CAC1B,iCAAkC,CAClC,4BAA6B,CAC7B,4BAA6B,CAC7B,+CAAmD,CACnD,mCAAuC,CACvC,yBAA0B,CAC1B,iCACF,CACA,qBAEE,uBAAwB,CACxB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lB,UAKF,CACA,mCACE,WACF,CACA,6DAGE,mDACF,CACA,0DAGE,sFAAwF,CACxF,yFAA2F,CAC3F,uEAAwE,CACxE,oDACF,CACA,srBAYE,oCACF,CACA,maAME,2DACF,CACA,qbAME,oCAAyC,CACzC,qCACF,CACA,6DAGE,kDACF,CACA,6DAGE,8DAA+D,CAC/D,kDACF,CACA,sEAEE,gDAAiD,CACjD,4DACF,CACA,gEAGE,2BAA4B,CAC5B,8CACF,CACA,wGAGE,cACF,CACA,0CAEE,8GACF,CACA,4JAIE,6BACF,CACA,0PAME,uBACF,CACA,8tBAaE,sCAAuC,CADvC,uBAEF,CACA,uEAKE,eAAgB,CADhB,uBAA+B,CAD/B,uBAGF,CACA,uCAEE,iGACF,CAQA,qBACE,YACF,CACA,0BAKE,aAAc,CAJd,aAAc,CACd,eAAgB,CAEhB,iBAAkB,CADlB,sBAGF,CACA,8FAGE,kEACF,CACA,mCAGE,8FAAgG,CAKhG,QAAS,CAPT,UAAW,CAeX,aAAc,CANd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,QAAS,CAOT,sDAAyD,CADzD,yBAA0B,CAD1B,UAAW,CANX,UASF,CAIA,0BACE,QACF,CACA,uEAEE,sBACF,CACA,qCACE,eACF,CAEA,MACE,kBACF,CACA,MACE,YACF,CACA,eACE,sBACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,aACE,6CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,cACE,8CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,aACE,0CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,cACE,2CACF,CACA,yBACE,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACF,CACA,yBACE,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACF,CACA,yBACE,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACF,CACA,0BACE,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,mBACE,6CACF,CACA,mBACE,0CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACA,oBACE,8CACF,CACA,oBACE,2CACF,CACF,CACA,0BACE,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,oBACE,6CACF,CACA,oBACE,0CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACA,qBACE,8CACF,CACA,qBACE,2CACF,CACF,CAEA,MACE,0BAA2B,CAC3B,0CAA2C,CAC3C,iCAAkC,CAClC,kCAAmC,CACnC,gCAAiC,CACjC,mCAAoC,CAUpC,8CAA+C,CAC/C,kCAAmC,CACnC,wCAAyC,CAIzC,yCAA0C,CAC1C,gCAAiC,CAOjC,uCAAwC,CACxC,qDAAyD,CACzD,oDAAwD,CACxD,qDACF,CACA,uBAEE,4DAAgE,CAChE,0DAA8D,CAC9D,0DACF,CACA,KACE,sCAAuC,CACvC,gCAAiC,CACjC,mCAAoC,CACpC,oCAAqC,CACrC,kCAAmC,CACnC,gCAAiC,CACjC,mCAAoC,CACpC,qCAAsC,CACtC,gCAAiC,CACjC,2BAA4B,CAC5B,mCAAoC,CACpC,0CAA2C,CAC3C,qCAAsC,CACtC,sIAEoE,CACpE,0CAA2C,CAC3C,wCAAyC,CACzC,iCAAkC,CAClC,4CAA6C,CAC7C,iCAAkC,CAClC,iCAAkC,CAClC,mCAAoC,CACpC,oCACF,CACA,qBAEE,0CAA2C,CAC3C,4DAA6D,CAC7D,oCAAqC,CACrC,yCAA0C,CAC1C,oCAAqC,CACrC,iCAAkC,CAClC,mCAAoC,CACpC,iCACF,CACA,IACE,4CAA6C,CAC7C,gCAAiC,CACjC,mCAAoC,CACpC,oCAAqC,CACrC,mCAAoC,CACpC,gCAAiC,CACjC,mCAAoC,CACpC,qCAAsC,CACtC,gCAAiC,CACjC,iCAAkC,CAClC,2BAA4B,CAC5B,mCAAoC,CACpC,0CAA2C,CAC3C,sCAAuC,CACvC,mCACF,CACA,kCAGE,mDAAoD,CACpD,yDAA0D,CAC1D,oEAAqE,CACrE,oDAAqD,CACrD,iFAAmF,CACnF,oDAAqD,CACrD,mDACF,CACA,UAKE,qBAAsB,CAHtB,gCAAiC,CADjC,eAAgB,CAEhB,UAGF,CACA,6BAHE,YAKF,CACA,sDACE,yBACE,gDACF,CACA,yBACE,4CACF,CACF,CACA,+DAEE,iBACF,CACA,gBACE,6DAA8D,CAC9D,4CAA6C,CAE7C,mEAAoE,CADpE,yCAEF,CACA,uBACE,WACF,CACA,kGAGE,YACF,CACA,kBACE,sCACF,CACA,kEAEE,iFAAkF,CAClF,eACF,CACA,gDACE,eACF,CACA,qEAEE,iFACF,CACA,4BACE,wCAAyC,CACzC,iBAAkB,CAClB,SACF,CACA,yHAGE,6CACF,CACA,iJAIE,YAAa,CACb,qBAAsB,CAFtB,WAGF,CACA,iBASE,2EAA6E,CAF7E,qBAAsB,CAGtB,oEAAsE,CANtE,aAAc,CASd,6CAA8C,CAC9C,iDAAkD,CAHlD,uCAAwC,CACxC,4CAA6C,CAT7C,eAAgB,CAKhB,yCAA0C,CAN1C,iBAAkB,CAIlB,sBAAuB,CADvB,kBAAmB,CAJnB,UAcF,CACA,mBACE,0FACF,CACA,iBAWE,kBAAmB,CAPnB,2EAA6E,CAM7E,qBAAsB,CALtB,oEAAsE,CAGtE,YAAa,CANb,aAAc,CAKd,6CAA8C,CAD9C,uCAAwC,CAGxC,wBAAyB,CANzB,yCAA0C,CAS1C,iBAAkB,CAXlB,UAYF,CACA,mBACE,0FACF,CACA,wBAGE,mFAAqF,CAKrF,WAAY,CAPZ,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,KAAM,CAON,sDAAyD,CADzD,sBAAwB,CADxB,UAAW,CANX,UASF,CACA,gBAYE,4CAA6C,CAE7C,oDAAqD,CACrD,8CAA+C,CAL/C,YAAa,CARb,sCAAuC,CAGvC,QAAS,CAET,4CAA6C,CAD7C,eAAgB,CAHhB,eAAgB,CAFhB,iBAAkB,CAGlB,OAAQ,CAIR,mCAAsC,CACtC,6BAA8B,CAO9B,iDAAsD,CAHtD,SAAU,CAFV,aAMF,CACA,mDAEE,uBACF,CACA,yBACE,kCACF,CACA,0BACE,mCACF,CACA,sBAKE,gFAAkF,CAHlF,qBAAsB,CAItB,yEAA2E,CAL3E,YAAa,CAGb,kDAAmD,CAGnD,4CAA6C,CAC7C,qCAAsC,CACtC,uCAAwC,CANxC,iBAOF,CACA,yCACE,aAAc,CAGd,iDAAkD,CADlD,iBAAkB,CADlB,eAGF,CACA,iBAKE,cAAe,CAHf,WAAY,CACZ,eAAgB,CAChB,iBAAkB,CAHlB,UAKF,CACA,yBAGE,WAAY,CAFZ,iBAAkB,CAGlB,cAAiB,CAFjB,UAGF,CACA,gBACE,YAAa,CACb,qBAAsB,CAEtB,WAAY,CAEZ,MAAO,CADP,iBAAkB,CAElB,KAAM,CAJN,UAKF,CACA,cAME,qBAAsB,CAJtB,YAAa,CACb,aAAc,CAFd,mBAAoB,CAMpB,qCAAsC,CACtC,uCAAwC,CAHxC,iBAAkB,CADlB,UAKF,CACA,8JAEE,sBACF,CACA,cAIE,kBAAmB,CACnB,qBAAsB,CAKtB,uCAAwC,CAFxC,cAAe,CANf,YAAa,CADb,aAAc,CAWd,0CAA2C,CAD3C,WAAY,CARZ,sBAAuB,CAIvB,iBAAkB,CADlB,kBAAmB,CAGnB,UAIF,CACA,yCAEE,kDAAmD,CADnD,+DAEF,CACA,sCAEE,6CACF,CACA,uBACE,4CAA6C,CAC7C,WACF,CACA,4CAEE,2EAA6E,CAD7E,4CAEF,CACA,qBAEE,iBAAkB,CADlB,oBAAqB,CAIrB,kCAAmC,CACnC,uCAAwC,CAHxC,iBAAkB,CAClB,iCAGF,CACA,qBAME,kBAAmB,CAJnB,YAAa,CAKb,sBAAuB,CAJvB,MAAO,CAKP,cAAe,CAPf,iBAAkB,CAIlB,QAAS,CADT,UAKF,CACA,oBAIE,kDAAmD,CADnD,uDAA0D,CAD1D,wCAAyC,CADzC,uCAIF,CACA,wCACE,eACF,CACA,sFAGE,iBACF,CACA,2GAWE,2EAA6E,CAN7E,UAAW,CADX,kCAAmC,CAGnC,MAAO,CAKP,UAAY,CANZ,iBAAkB,CAElB,OAAQ,CACR,0BAA2B,CAN3B,UAAW,CAOX,UAGF,CACA,mFAKE,yEAA0E,CAH1E,SAAU,CACV,OAAQ,CACR,+CAEF,CACA,mFAGE,yEAA0E,CAD1E,+CAEF,CACA,8FAEE,YACF,CACA,+DACE,YAAa,CACb,YACF,CACA,kDACE,wBAA6B,CAC7B,aACF,CACA,iDAIE,kBAAmB,CAFnB,YAAa,CAKb,cAAe,CAJf,6BAA8B,CAK9B,gBAAiB,CACjB,iBAAkB,CAHlB,eAAgB,CADhB,SAKF,CACA,2FAEE,aAAc,CAEd,eAAgB,CADhB,iBAAkB,CAElB,sBACF,CACA,yEAEE,cACF,CACA,mEAQE,sBAAuB,CAHvB,WAAY,CAFZ,iBAAkB,CAGlB,wBAAyB,CACjB,gBAAiB,CAHzB,UAKF,CACA,6EAEE,iBACF,CACA,uDAIE,kBAAmB,CAKnB,qBAAsB,CAFtB,cAAe,CALf,YAAa,CACb,sBAAuB,CAGvB,eAAgB,CADhB,iBAAkB,CAGlB,uBAEF,CACA,iEAIE,qBAAsB,CAEtB,eAAgB,CAChB,mBAAoB,CAFpB,iBAAkB,CAFlB,sBAAuB,CADvB,kBAMF,CACA,iFAEE,qDACF,CACA,4BACE,WACF,CACA,yCAEE,mBAAoB,CADpB,SAEF,CAIA,8HACE,sBACF,CACA,iFAGE,UAAW,CADX,kBAEF,CAKA,4PAEE,sBACF,CACA,uEAEE,yEACF,CACA,sBAEE,iCAAkC,CADlC,aAEF,CACA,2BACE,WAAY,CACZ,gBAAiB,CACjB,UACF,CACA,wBAME,kBAAmB,CAFnB,YAAa,CAHb,aAAc,CACd,oDAAqD,CAGrD,6BAA8B,CAE9B,iBAAkB,CAJlB,iBAKF,CACA,0BAIE,kBAAmB,CAInB,0DAA2D,CAE3D,iBAAkB,CAJlB,qBAAsB,CADtB,YAAa,CAEb,8CAA+C,CAJ/C,sBAAuB,CAFvB,eAAgB,CAQhB,cAAe,CAPf,iBASF,CACA,6BACE,eACF,CACA,mCACE,eACF,CACA,2FAGE,YAAa,CACb,WACF,CACA,wIAGE,WAAY,CACZ,eACF,CACA,sBACE,+BAAgC,CAChC,8BACF,CACA,+BACE,aAAc,CACd,eACF,CACA,8BAEE,YAAa,CACb,qBAAsB,CAFtB,WAGF,CAEA,MACE,wBAAyB,CACzB,+BAAgC,CAChC,gCAAiC,CACjC,+BAAgC,CAChC,kCAAmC,CACnC,4BAIF,CACA,KACE,iCAAkC,CAClC,yCAA0C,CAC1C,mDAAuD,CACvD,mCAAoC,CACpC,4CACF,CACA,qBAEE,yCAA0C,CAC1C,wDAA4D,CAC5D,mCAAoC,CACpC,kDACF,CACA,IACE,iCACF,CACA,kCAGE,4DAA6D,CAC7D,2DAA4D,CAC5D,sDAAuD,CACvD,2DACF,CACA,QAEE,8BAA+B,CAD/B,UAEF,CACA,sBACE,qCACF,CACA,iBACE,sCACF,CACA,sDACE,4BACE,wCACF,CACF,CACA,oBACE,mEACF,CACA,gBACE,oCACF,CACA,yBACE,eAAgB,CAChB,iFACF,CACA,gCACE,sBACF,CACA,yCACE,4CACF,CACA,gBASE,qCAAsC,CARtC,YAAa,CAOb,2CAA4C,CAF5C,WAAY,CAHZ,sBAAuB,CADvB,eAAgB,CAEhB,SAAU,CAGV,iBAAkB,CAFlB,gBAKF,CACA,yBACE,iFACF,CACA,6CAEE,UAAW,CAIX,UAAW,CAFX,MAAO,CAIP,mBAAoB,CALpB,iBAAkB,CAElB,UAAW,CAEX,WAEF,CACA,sBACE,iDACF,CACA,8BACE,yDACF,CACA,8BACE,kFACF,CACA,gCACE,oDACF,CACA,uBAEE,sFAAyF,CADzF,KAEF,CACA,sBAEE,mFAAsF,CADtF,QAEF,CACA,eAEE,eAAgB,CADhB,iBAAkB,CAElB,UACF,CACA,sDACE,UACF,CACA,kCACE,eACF,CACA,oCACE,iBACF,CACA,mCACE,gBACF,CACA,qCAEE,kBAAmB,CACnB,yCAA0C,CAF1C,YAGF,CACA,cAIE,qBAAsB,CADtB,WAAY,CAFZ,aAAc,CAId,2CAAiD,CAHjD,4BAA6B,CAK7B,2BAA4B,CAD5B,oBAEF,CACA,iCACE,uBAAwB,CAChB,eAAgB,CAIxB,sBAAuB,CAFvB,YAAa,CACb,SAAU,CAFV,OAIF,CACA,uCAEE,sBAAuB,CADvB,eAEF,CACA,uCACE,wBAA6B,CAE7B,oBAAqB,CADrB,YAAa,CAEb,iBACF,CACA,aAUE,qBAAsB,CACtB,sCAAuC,CACvC,cAAe,CAXf,mCAAoC,CAMpC,MAAO,CALP,wCAAyC,CAGzC,eAAgB,CADhB,iBAAkB,CASlB,wBAAyB,CAPzB,sBAAuB,CAEvB,KAAM,CALN,kBAAmB,CAMnB,UAKF,CACA,kBACE,cACF,CACA,6BACE,mBACF,CACA,kCACE,+CAAgD,CAChD,qCACF,CACA,sCACE,sBACF,CACA,yBAEE,qBAAsB,CADtB,mCAAoC,CAIpC,kDAAuD,CACvD,mBAAoB,CAHpB,iBAAkB,CAClB,OAGF,CACA,2BACE,eACF,CACA,2EAGE,2BACF,CACA,0BACE,gBACF,CACA,wBAEE,gBAAiB,CADjB,kBAEF,CACA,6BACE,kCAAmC,CAC3B,0BAA2B,CAMnC,qBAAsB,CALtB,aAAc,CAMd,cAAe,CAHf,eAAgB,CADhB,iBAAkB,CAElB,sBAAuB,CAGvB,qCAAsC,CANtC,2BAOF,CACA,8BAGE,wDAAyD,CACzD,iBAAkB,CAHlB,SAAU,CACV,UAGF,CACA,uCACE,QAAS,CACT,SACF,CACA,6BAIE,4CAA6C,CAD7C,yCAA0C,CAF1C,MAAO,CACP,OAGF,CAEA,2BACE,gBAAiB,CACjB,iBAAkB,CAClB,iBACF,CACA,qCACE,aACF,CACA,gCAEE,kBAAmB,CADnB,eAEF,CACA,qFAGE,WAAY,CADZ,UAEF,CACA,+BAEE,kBAAmB,CADnB,eAEF,CAEA,KACE,4BAA6B,CAC7B,kBACF,CACA,IACE,4BAA6B,CAC7B,kBACF,CACA,kCAGE,kDAAmD,CACnD,6CACF,CACA,eAGE,yBAA0B,CAC1B,mBAAoB,CAHpB,iBAAkB,CAClB,uBAGF,CACA,0BAIE,mCAAoC,CAFpC,QAAS,CAGT,mDAAwD,CACxD,kDAAuD,CALvD,iBAAkB,CAMlB,OAAQ,CACR,iBAAkB,CALlB,kCAMF,CACA,2BAEE,QAAS,CACT,cAAe,CAFf,QAGF,CACA,8FAEE,wEACF,CACA,oBAGE,MAAO,CAFP,yCAA4C,CAI5C,iBAAkB,CADlB,KAAM,CAFN,UAIF,CACA,+BACE,kBACF,CACA,4KAEE,cACF,CACA,qLAEE,mBACF,CACA,iDAEE,uBAA0B,CAC1B,6BACF,CACA,6DACE,uBACF,CACA,4CACE,qDACF,CACA,sCACE,cACF,CACA,wCACE,6CACF,CACA,qDACE,uBACF,CACA,gCACE,eAAgB,CAChB,sCAAyC,CACzC,iBACF,CACA,uEAEE,uBAA0B,CAC1B,6BACF,CACA,gCACE,cACF,CACA,kCACE,sDACF,CACA,+CACE,uBACF,CACA,kCACE,GACE,sBACF,CACA,GACE,wBACF,CACF,CACA,IACE,iBACF,CACA,mBAIE,kDAAmD,CADnD,2CAA4C,CAD5C,iBAAkB,CAKlB,gGAAyH,CACzH,QAAS,CACT,yCAA8C,CAJ9C,sCAAyC,CAJzC,wBAAyB,CAKzB,WAIF,CACA,qCACE,cACF,CACA,eAUE,0CAA8B,CAA9B,iCAA8B,CAC9B,iBAAkB,CARlB,qBAAsB,CADtB,WAAY,CAIZ,QAAS,CAET,iBAAkB,CAClB,gBAAiB,CAGjB,SAAU,CAPV,iBAAkB,CAElB,OAAQ,CAMR,wBAAyB,CAZzB,UAaF,CACA,qBASE,2BAA4B,CAD5B,yBAA0B,CAD1B,uBAAwB,CAGxB,iCAAkC,CAClC,kCAAmC,CALnC,QAAW,CALX,UAAW,CAEX,QAAW,CAEX,SAAU,CADV,iBAAkB,CAQlB,wBAAyB,CAVzB,OAWF,CACA,wPAGE,cACF,CACA,yFAEE,kBACF,CACA,2DAEE,iBACF,CACA,mCACE,+BACF,CACA,kCACE,cACF,CACA,4BAGE,SAAU,CADV,kCAAoC,CADpC,cAGF,CACA,yEAEE,uBAA0B,CAC1B,qCACF,CACA,+BAEE,+CAAkD,CADlD,YAEF,CACA,8CACE,gCACF,CACA,sGAEE,SACF,CACA,oYAME,SACF,CACA,8HAEE,SAAU,CACV,uBACF,CAEA,MACE,8BAA+B,CAC/B,8BAA+B,CAC/B,gCAAiC,CACjC,4BAA6B,CAC7B,+BAAgC,CAChC,wCAAyC,CACzC,wCAAyC,CACzC,oCAAqC,CACrC,2CAA4C,CAC5C,kCAAmC,CACnC,oCAAqC,CACrC,mCACF,CACA,uBAEE,mCAAoC,CACpC,gCACF,CACA,KACE,+BAAgC,CAChC,gCAAiC,CACjC,8BAA+B,CAC/B,gCAAiC,CACjC,uCAAwC,CACxC,4CAA6C,CAC7C,6CAA8C,CAC9C,mCAAoC,CAGpC,+BAAgC,CAChC,gCAAiC,CACjC,6BAA8B,CAC9B,2CAA+C,CAC/C,6CAAiD,CACjD,iDAAqD,CACrD,6CAAiD,CACjD,gCACF,CACA,qBAEE,iDAAqD,CACrD,mDAAuD,CACvD,mDAAuD,CACvD,uDACF,CACA,IACE,+BAAgC,CAChC,gCAAiC,CACjC,8BAA+B,CAC/B,gCAAiC,CACjC,uCAAwC,CACxC,4CAA6C,CAC7C,6CAA8C,CAC9C,mCAAoC,CACpC,+BAAgC,CAChC,gCAAiC,CACjC,6BAA8B,CAC9B,mDAAuD,CACvD,8CAAkD,CAClD,mCACF,CACA,mBAEE,yDAA6D,CAC7D,oDACF,CACA,kCAGE,0DAA2D,CAC3D,4DAA6D,CAC7D,iEAAkE,CAClE,iDACF,CACA,YACE,eACF,CACA,mCAGE,WAAY,CAGZ,wBAAyB,CADzB,QAAS,CADT,SAAU,CAGV,eAAgB,CALhB,UAMF,CACA,0CASE,8CAA+C,CAP/C,wCAAyC,CACzC,4CAA6C,CAK7C,uCAAwC,CADxC,gBAAiB,CAHjB,eAAgB,CAEhB,sBAAuB,CADvB,kBAKF,CACA,gGAEE,qCACF,CACA,yFAIE,wCAAyC,CADzC,kBAEF,CACA,kBACE,wCACF,CACA,0CAEE,uCACF,CACA,wFAEE,gDACF,CACA,wDAIE,kDAAmD,CAKnD,WAAY,CAPZ,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,KAAM,CAON,sDAAyD,CADzD,sBAAwB,CADxB,UAAW,CANX,UASF,CACA,8BAEE,oEAAqE,CACrE,qEAAsE,CAMtE,qBAAsB,CAFtB,wJAAiD,CACjD,iBAEF,CACA,sDAEE,yEACF,CACA,oDAEE,0EACF,CACA,oDAEE,0EAA2E,CAC3E,2EACF,CACA,wDAEE,gBACF,CACA,0DAEE,gBAAiB,CACjB,yCACF,CACA,gFAEE,eACF,CACA,kFAEE,wDACF,CAOA,gQAEE,sDACF,CACA,wDAEE,gBAAiB,CACjB,kBACF,CACA,sEAEE,mEACF,CACA,wLAME,oBAAqB,CAGrB,WAAY,CACZ,WAAY,CAFZ,iBAAkB,CADlB,qBAIF,CACA,oMAME,kDAAmD,CACnD,qBACF,CAKA,oGACE,cAAe,CACf,iBACF,CACA,kSAYE,gBAAiB,CAEjB,kCAAmC,CAEnC,iCAAkC,CAClC,4BAA6B,CAU7B,yCAA0C,CAvB1C,yBAA0B,CAS1B,aAAc,CAMd,aAAc,CAId,oBAAqB,CAlBrB,iCAAoC,CAiBpC,cAAe,CAMf,cAAe,CArBf,iBAAkB,CADlB,eAAmB,CAenB,WAAY,CAKZ,WAAY,CAjBZ,qBAAsB,CADtB,aAAc,CAqBd,gBAAiB,CAGjB,SAAU,CAdV,iBAAkB,CAHlB,iCAAkC,CALlC,mBAAoB,CAqBpB,mBAAoB,CADpB,uBAA0B,CAN1B,kBAAmB,CAbnB,kBAAmB,CASnB,UAAW,CAKX,UAQF,CACA,8WAIE,WACF,CACA,8PAIE,qBACF,CACA,wKAME,kCACF,CACA,0HAIE,yDAA0D,CAC1D,0DACF,CACA,6DAGE,qDAAsD,CADtD,6CAEF,CACA,+DAEE,eACF,CACA,6DAEE,wCACF,CACA,8BACE,yCAA0C,CAC1C,6CACF,CACA,8DAEE,YACF,CACA,sCACE,cACF,CACA,gCAEE,kBAAmB,CADnB,gBAEF,CACA,uCACE,8DAAgE,CAChE,WACF,CACA,iDAEE,sBAAuB,CADvB,aAAc,CAEd,SACF,CACA,uEAIE,kBAAmB,CAFnB,YAAa,CACb,6BAA8B,CAE9B,UACF,CACA,iGAIE,WAAY,CAOZ,4GAAqE,CAJrE,6CAA8C,CAE9C,2FAGF,CACA,wCACE,6CAAgD,CAChD,YACF,CACA,sDACE,YACF,CACA,+DACE,YACF,CACA,uCAEE,2BAA4B,CAD5B,cAEF,CACA,+BAEE,kBAAmB,CACnB,qBAAsB,CAKtB,uCAAwC,CAPxC,YAAa,CAIb,0CAA2C,CAI3C,wBAAyB,CAFzB,wCAAyC,CADzC,eAAgB,CAFhB,iBAMF,CACA,sCAGE,kDAAmD,CAKnD,WAAY,CAPZ,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,KAAM,CAON,sDAAyD,CADzD,sBAAwB,CADxB,UAAW,CANX,UASF,CACA,uEAGE,kBAAmB,CADnB,YAEF,CACA,wBAGE,WAAY,CADZ,kBAAmB,CADnB,eAAgB,CAGhB,kBACF,CACA,iDACE,cACF,CACA,+BACE,mCACF,CACA,mHAIE,sCAAuC,CACvC,yCAA0C,CAF1C,mCAGF,CACA,oDACE,yCACE,YACF,CACA,qHAGE,aACF,CACA,sCACE,iBACF,CACA,6CAGE,kDAAmD,CAKnD,WAAY,CAPZ,UAAW,CAGX,aAAc,CAMd,UAAW,CADX,MAAO,CAPP,iBAAkB,CAKlB,UAAW,CADX,KAAM,CAON,sDAAyD,CADzD,sBAAwB,CADxB,UAAW,CANX,UASF,CACA,4CACE,wBACF,CACA,sCACE,qEAAsE,CACtE,sEAAuE,CAIvE,oBAAqB,CACrB,kBAAmB,CAFnB,YAAa,CAFb,WAAY,CAKZ,0BAA2B,CAJ3B,2CAA4C,CAK5C,eACF,CACA,6CACE,sBACF,CACA,iEAME,yBAA2B,CAI3B,qCAAsC,CAPtC,oCAAqC,CADrC,uBAAyB,CAUzB,aAAc,CAJd,wCAAyC,CACzC,4CAA6C,CAJ7C,WAAY,CAMZ,iBAAkB,CAPlB,iBAAkB,CAGlB,wBAA0B,CAN1B,SAYF,CACA,oDAGE,MAAO,CAFP,iBAAkB,CAClB,KAEF,CACA,uDACE,iBACF,CACA,uDACE,gBACF,CACF,CACA,4DAEE,YACF,CACA,yBACE,yBACE,kBACF,CACF,CACA,qDACE,mCACE,kBACF,CACF,CACA,0DAEE,YACF,CACA,yBACE,wBACE,kBACF,CACF,CACA,qDACE,kCACE,kBACF,CACF,CACA,4DAEE,YACF,CACA,yBACE,yBACE,kBACF,CACF,CACA,qDACE,mCACE,kBACF,CACF,CACA,0DAEE,YACF,CACA,0BACE,wBACE,kBACF,CACF,CACA,sDACE,kCACE,kBACF,CACF,CACA,4DAEE,YACF,CACA,0BACE,yBACE,kBACF,CACF,CACA,sDACE,mCACE,kBACF,CACF,CACA,8FAEE,gBACF,CACA,6CACE,eACF,CACA,wCACE,gBACF,CACA,4JAIE,gBACF,CAKA,iHAGE,WAAY,CADZ,UAEF,CACA,oDACE,gBACF,CACA,oCACE,gBACF,CACA,kCACE,iBACF,CACA,4FAEE,gBACF,CACA,wFAGE,WAAY,CACZ,gBAAiB,CAFjB,UAGF,CACA,4CACE,eACF,CACA,uCACE,gBACF,CACA,wJAIE,gBACF,CACA,yCAEE,WAAY,CACZ,gBAAiB,CAFjB,UAGF,CACA,sDACE,eACF,CACA,qEAGE,WAAY,CADZ,UAEF,CACA,mDACE,gBACF,CACA,m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CA,8CAGE,aACF,CACA,gBACE,yCAA0C,CAC1C,4CACF,CACA,gBACE,yCAA0C,CAC1C,4CAA6C,CAC7C,kBACF,CACA,cACE,uCAAwC,CACxC,0CAA2C,CAC3C,8CACF,CACA,gBAQE,oDAAqD,CAPrD,qBAAsB,CAEtB,YAAa,CACb,qBAAsB,CAGtB,4CAA6C,CAD7C,gDAAiD,CAIjD,8CAA+C,CAD/C,6FAA8F,CAJ9F,iBAAkB,CAHlB,qBASF,CACA,mBACE,aAAc,CAEd,WAAY,CADZ,cAAe,CAEf,UACF,CACA,0CAEE,aACF,CACA,qBACE,8CAA+C,CAE/C,iDAAkD,CADlD,6CAEF,CACA,qBACE,8CAA+C,CAE/C,iDAAkD,CADlD,6CAEF,CACA,cACE,eACF,CACA,cAGE,mBAAoB,CADpB,0BAA2B,CAD3B,gBAGF,CACA,8BAEE,gEAAkE,CADlE,uCAEF,CACA,+BACE,oBACF,CACA,kBACE,kBACF,CACA,kCAEE,8CAA+C,CAD/C,2CAEF,CACA,mCACE,sBACF,CACA,4CACE,SACF,CAUA,8KACE,YACF,CACA,4BACE,wCACF,CACA,yBACE,qCACF,CACA,0BACE,oBAAqB,CACrB,WAAY,CACZ,qBACF,CACA,8BAGE,sDAAuD,CAGvD,iBAAkB,CALlB,oBAAqB,CAGrB,kDAAmD,CAFnD,iBAAkB,CAGlB,qBAEF,CACA,sCACE,GACE,+BACF,CACA,GACE,uBACF,CACF,CACA,mCACE,GACE,gCACF,CACA,GACE,uBACF,CACF,CACA,0FAIE,eACF,CACA,wCAEE,iBACF,CACA,qBACE,cACF,CACA,qBACE,cACF,CACA,oBACE,qGACF,CACA,gCACE,6DACF,CACA,oCACE,6DAA8D,CAC9D,8DACF,CACA,+BACE,gEACF,CACA,mCACE,gEAAiE,CACjE,iEACF,CACA,0BACE,iBACF,CACA,0BACE,cACF,CACA,uBACE,iDACF,CACA,mHAGE,uDACF,CACA,uCAEE,2PAA4P,CAD5P,oEAEF,CACA,sCACE,wEACF,CACA,oDACE,oIACF,CACA,yEACE,gTACF,CACA,uGACE,2BACF,CACA,mBACE,mDACF,CACA,uGAGE,wDACF,CACA,mCAEE,wPAA4P,CAD5P,qEAEF,CACA,kCACE,yEACF,CACA,gDAIE,8SAAoT,CAHpT,oIACF,CAIA,8EACE,4BACF,CACA,2CACE,cACF,CACA,2HAIE,8CAA+C,CAC/C,iBAAkB,CAHlB,UAAW,CACX,iBAGF,CACA,6DAIE,QAAW,CAFX,WAAY,CACZ,QAAS,CAFT,UAIF,CACA,8DAIE,WAAY,CAFZ,UAAW,CACX,SAAU,CAFV,SAIF,CACA,mCAEE,UAAW,CADX,SAEF,CACA,uCACE,eACF,CACA,+CACE,mDACF,CACA,gDACE,wDACF,CACA,gDACE,uDACF,CACA,wCACE,GACE,WACF,CACA,IACE,UACF,CACA,IACE,UACF,CACF,CACA,sFAIE,eACF,CACA,sCAEE,iBACF,CACA,oBACE,cACF,CACA,yBACE,iBACF,CACA,yBACE,cACF,CACA,mBACE,8GACF,CACA,0CAEE,oDACF,CACA,sBACE,gDACF,CACA,gHAGE,gBACF,CACA,uNAGE,6BACF,CACA,uNAGE,0BACF,CACA,yOAGE,6BAA8B,CAC9B,0BACF,CACA,uDACE,eACF,CACA,kBACE,kDACF,CACA,oGAGE,iBACF,CACA,2MAGE,8BACF,CACA,2MAGE,2BACF,CACA,6NAGE,8BAA+B,CAC/B,2BACF,CACA,mDACE,wDACF,CACA,0CACE,cACF,CACA,kCAEE,UAAW,CADX,SAEF,CACA,sCACE,eACF,CACA,8CACE,kDACF,CACA,+CACE,uDACF,CACA,+CACE,sDACF,CACA,uCACE,GACE,uBACF,CACA,IACE,0BACF,CACA,IACE,uBACF,CACF,CAEA,MACE,wCAAyC,CACzC,kCAAmC,CACnC,4CAKF,CACA,KACE,2BAA4B,CAC5B,8BAA+B,CAC/B,6CAA8C,CAI9C,wCAAyC,CACzC,2CAA4C,CAC5C,yCAA0C,CAC1C,oCAAqC,CACrC,uCAAwC,CACxC,yCAA0C,CAC1C,sCAAuC,CACvC,8CAA+C,CAC/C,6CAA8C,CAC9C,uCAAwC,CACxC,iDAAkD,CAClD,0DAA8D,CAC9D,wCAAyC,CACz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B,CAH9B,UAKF,CACA,8BACE,iBACF,CAEA,oDAEE,WACF,CACA,mCACE,sBAAuB,CACvB,oCACF,CACA,sCAEE,kCAAmC,CAC3B,0BAA2B,CAFnC,uBAGF,CAEA,2CACE,kBACF,CACA,2BACE,2BACF,CACA,WACE,kBACF,CACA,wDAEE,2BACF,CAEA,iCAIE,uBAAwB,CAHxB,aAAc,CACd,oBAIF,CACA,oDACE,YACF,CACA,+CACE,6BACF,CACA,mDACE,4BACF,CACA,iDACE,4BACF,CACA,kDACE,qBACF,CACA,gEACE,sBACF,CACA,wDACE,UAAW,CACX,aAAc,CACd,UACF,CACA,+DACE,+BAAgC,CAChC,uBACF,CACA,6FACE,wDACF,CACA,0EACE,WAAY,CACZ,cAAe,CACf,yCACF,CACA,2FACE,uDACF,CACA,wEAGE,0CAA2C,CAD3C,aAAc,CADd,UAGF,CAGA,sLAcE,WAAY,CAHZ,MAAO,CAIP,mBAAoB,CALpB,iBAAkB,CAElB,KAAM,CACN,UAAW,CAGX,UACF,CACA,gCACE,0BACF,CACA,qCACE,qEACF,CACA,sCACE,oEACF,CACA,oCACE,mEACF,CACA,uCACE,qEACF,CACA,uBAaE,wEAA6B,CAD7B,iBAAkB,CAClB,gCAA6B,CAH7B,qBAAsB,CARtB,WAAY,CAEZ,QAAS,CAET,iBAAkB,CAClB,gBAAiB,CAJjB,iBAAkB,CAElB,OAAQ,CAIR,oBAAqB,CARrB,UAAW,CAOX,UAMF,CACA,+HAEE,kDACF,CACA,6BACE,6BACF,CACA,6BACE,6BACF,CACA,iCACE,GACE,sBACF,CACA,GACE,uBACF,CACF,CAEA,8BACE,kCAAmC,CACnC,uBACF,CACA,sDACE,UAAW,CAEX,MAAO,CAEP,mBAAoB,CAHpB,iBAAkB,CAElB,KAEF,CACA,wEACE,UAAW,CACX,gCACF,CACA,sEAEE,iCAAkC,CADlC,SAEF,CACA,MACE,6BAMF,CACA,wCAUE,kBAAmB,CAEnB,8DAAgE,CAJhE,cAAe,CACf,YAAa,CAJb,oCAAqC,CAMrC,sBAAuB,CALvB,sDAA2D,CAJ3D,iBAAkB,CAClB,2CA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CACA,sBACE,+BACF,CAEA,6CASE,0CAA2C,CAR3C,uFAAqG,CACrG,+EAA6F,CAK7F,6BAA8B,CAC9B,qBAAsB,CAHtB,0BAA2B,CAC3B,kBAAmB,CAHnB,2BAA4B,CAC5B,mBAMF,CACA,sBACE,0CACF,CACA,uBACE,2CACF,CAEA,gCACE,GACE,SACF,CACA,IACE,UACF,CACA,GACE,SACF,CACF,CACA,gCACE,GACE,6BAA8B,CAC9B,qBACF,CACA,GACE,+BAAgC,CAChC,uBACF,CACF,CACA,iCACE,GACE,kBACF,CACA,IACE,kBACF,CACA,IACE,qBACF,CACA,GACE,kBACF,CACF,CACA,MACE,qBAAsB,CACtB,sCACF,CACA,MACE,wBAAyB,CACzB,4CACF,CAEA,MACE,qCAAsC,CACtC,iCAAkC,CAClC,uCAAwC,CACxC,+BAAgC,CAChC,sCAAuC,CACvC,kCAAmC,CACnC,mCAAoC,CACpC,sCAAuC,CACvC,yCAA0C,CAC1C,sCAAuC,CACvC,sCAAuC,CACvC,kCAAmC,CACnC,mCAAoC,CACpC,0CAA2C,CAC3C,8CAA+C,CAC/C,mCAAoC,CACpC,0CAA2C,CAC3C,2CAA4C,CAC5C,mDAAoD,CACpD,yDAA0D,CAC1D,qCAAsC,CACtC,qCAAsC,CACtC,iDAAqD,CACrD,iDAAqD,CACrD,2CACF,CACA,uBAEE,wCAAyC,CACzC,wCAAyC,CACzC,sDAA0D,CAC1D,qCAAsC,CACtC,6DACF,CACA,cAGE,YAAa,CACb,qBAAsB,CAHtB,eAAgB,CAChB,UAGF,CACA,wGAGE,iBACF,CACA,0BACE,gDACF,CACA,iCACE,WACF,CACA,6CACE,wCACF,CACA,0BACE,gDACF,CACA,kCACE,yCACF,CACA,uGAGE,WACF,CACA,kIAGE,iBACF,CACA,sBAGE,eAAgB,CADhB,cAAe,CADf,0CAGF,CACA,yCACE,WACF,CACA,oCACE,eACF,CACA,mCACE,sDAAuD,CACvD,uDACF,CACA,mDAEE,aAAc,CADd,eAEF,CACA,+DACE,sDAAuD,CACvD,uDACF,CACA,8DACE,yDAA0D,CAC1D,0DACF,CA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CACA,sCAEE,sBAAuB,CADvB,eAEF,CACA,sCACE,wBAA6B,CAE7B,oBAAqB,CADrB,YAAa,CAEb,iBACF,CACA,gEAIE,6CAA+C,CAD/C,aAEF,CACA,gYASE,yCACF,CACA,kBAME,kBAAmB,CAFnB,oDAAqD,CAGrD,sDAAuD,CANvD,sCAAuC,CAIvC,YAAa,CAHb,kDAAmD,CACnD,0CAKF,CACA,wBACE,yCAA0C,CAE1C,sCAAuC,CADvC,qCAEF,CACA,oBAEE,6CAA+C,CAD/C,aAEF,CACA,yBACE,8EAAgF,CAChF,yDACF,CACA,uBAKE,kBAAmB,CAJnB,2CAA4C,CAG5C,YAAa,CAFb,WAAY,CACZ,eAGF,CACA,6BAQE,gBAAiB,CAEjB,kCAAmC,CAEnC,iCAAkC,CAClC,4BAA6B,CAM7B,4CAA6C,CAV7C,aAAc,CAMd,aAAc,CAdd,iCAAoC,CAiBpC,cAAe,CAff,iBAAkB,CADlB,eAAmB,CAenB,WAAY,CAZZ,qBAAsB,CADtB,aAAc,CAUd,iBAAkB,CAHlB,iCAAkC,CALlC,mBAAoB,CACpB,kBAAmB,CASnB,UAAW,CAIX,UACF,CACA,kCACE,cAAe,CACf,WACF,CACA,iCACE,cAAe,CACf,WACF,CACA,uBAEE,kBAAmB,CAEnB,mDAAoD,CAEpD,2DAA4D,CAC5D,cAAe,CANf,YAAa,CAIb,cAAe,CAFf,+CAKF,CACA,uFAME,gDAAiD,CACjD,iBAAkB,CAJlB,UAAW,CAEX,UAAW,CADX,SAIF,CACA,4BACE,YACF,CAEA,MACE,4BAA6B,CAC7B,2BACF,CACA,cACE,sBACF,CACA,eACE,uBACF,CACA,qBACE,6BACF,CACA,sBACE,8BACF,CACA,gBACE,wBACF,CACA,cACE,sBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,eACE,uBACF,CACA,gBACE,wBACF,CACA,oBACE,4BACF,CACA,4BACE,oCACF,CACA,uBACE,+BACF,CACA,+BACE,uCACF,CACA,4BACE,oCACF,CACA,wBACE,gCACF,CACA,0BACE,kCACF,CACA,+BACE,uCACF,CACA,8BACE,sCACF,CACA,8BACE,sCACF,CACA,yBACE,iCACF,CACA,uBACE,+BACF,CACA,qBACE,6BACF,CACA,sBACE,8BACF,CACA,uBACE,+BACF,CACA,0BACE,kCACF,CACA,wBACE,gCACF,CACA,sBACE,8BACF,CACA,6BACE,qCACF,CACA,4BACE,oCACF,CACA,uBACE,+BACF,CACA,sBACE,8BACF,CACA,wBACE,gCACF,CACA,sBACE,8BACF,CACA,oBACE,4BACF,CACA,qBACE,6BACF,CACA,uBACE,+BACF,CACA,qBACE,6BACF,CACA,mBACE,2BACF,CACA,oBACE,4BACF,CACA,iBACE,yBACF,CACA,mBACE,2BACF,CACA,kBACE,0BACF,CACA,oBACE,4BACF,CACA,YACE,oBACF,CACA,aACE,qBACF,CACA,YACE,oBACF,CACA,uBACE,+BACF,CACA,uBACE,+BACF,CACA,oBACE,4BACF,CACA,YACE,mBACF,CACA,iBACE,wBACF,CAIA,yCAFE,yBAKF,CAHA,uBACE,wBAEF,CACA,gBACE,uBACF,CAIA,wCAFE,0BAKF,CAHA,qBACE,uBAEF,CACA,WACE,kBACF,CACA,gBACE,uBACF,CAIA,uCAFE,wBAKF,CAHA,sBACE,uBAEF,CACA,eACE,sBACF,CAIA,sCAFE,yBAKF,CAHA,oBACE,sBAEF,CACA,YACE,oBACF,CACA,WACE,oBACF,CACA,SACE,8CACF,CACA,cACE,sDACF,CACA,aACE,kDACF,CACA,kBACE,0DACF,CACA,gBACE,qDACF,CACA,qBACE,6DACF,CACA,cACE,mDACF,CACA,mBACE,2DACF,CACA,eACE,oDACF,CACA,oBACE,4DACF,CACA,kBAEE,qDAAuD,CADvD,kDAEF,CACA,uBAEE,6DAAiE,CADjE,0DAEF,CACA,oBACE,mDAAqD,CACrD,oDACF,CACA,yBACE,2DAA+D,CAC/D,4DACF,CACA,QACE,4CACF,CACA,aACE,oDACF,CACA,YACE,gDACF,CACA,iBACE,wDACF,CACA,eACE,mDACF,CACA,oBACE,2DACF,CACA,aACE,iDACF,CACA,kBACE,yDACF,CACA,cACE,kDACF,CACA,mBACE,0DACF,CACA,iBAEE,mDAAqD,CADrD,gDAEF,CACA,sBAEE,2DAA+D,CAD/D,wDAEF,CACA,mBACE,iDAAmD,CACnD,kDACF,CACA,wBACE,yDAA6D,CAC7D,0DACF,CACA,qBACE,gDACF,CACA,mBACE,yDACF,CACA,uBACE,yDACF","file":"../../spreadsheeteditor/mobile/css/framework7.css","sourcesContent":["/**\n * Framework7 8.3.2\n * Full featured mobile HTML framework for building iOS & Android apps\n * https://framework7.io/\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 27, 2024\n */\n\n/*====================\n Core\n ==================== */\n:root {\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n --f7-safe-area-top: 0px;\n --f7-safe-area-bottom: 0px;\n --f7-safe-area-outer-left: 0px;\n --f7-safe-area-outer-right: 0px;\n --f7-device-pixel-ratio: 1;\n}\n@supports (left: env(safe-area-inset-left)) {\n :root {\n --f7-safe-area-top: env(safe-area-inset-top);\n --f7-safe-area-bottom: env(safe-area-inset-bottom);\n }\n :root .ios-left-edge,\n :root .ios-edges,\n :root .safe-area-left,\n :root .safe-areas,\n :root .popup,\n :root .sheet-modal,\n :root .panel-left {\n --f7-safe-area-left: env(safe-area-inset-left);\n --f7-safe-area-outer-left: env(safe-area-inset-left);\n }\n :root .ios-right-edge,\n :root .ios-edges,\n :root .safe-area-right,\n :root .safe-areas,\n :root .popup,\n :root .sheet-modal,\n :root .panel-right {\n --f7-safe-area-right: env(safe-area-inset-right);\n --f7-safe-area-outer-right: env(safe-area-inset-right);\n }\n :root .no-safe-areas,\n :root .no-safe-area-left,\n :root .no-ios-edges,\n :root .no-ios-left-edge {\n --f7-safe-area-left: 0px;\n --f7-safe-area-outer-left: 0px;\n }\n :root .no-safe-areas,\n :root .no-safe-area-right,\n :root .no-ios-edges,\n :root .no-ios-right-edge {\n --f7-safe-area-right: 0px;\n --f7-safe-area-outer-right: 0px;\n }\n}\n@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 2dppx) {\n :root {\n --f7-device-pixel-ratio: 2;\n }\n}\n@media (-webkit-min-device-pixel-ratio: 3), (min-resolution: 3dppx) {\n :root {\n --f7-device-pixel-ratio: 3;\n }\n}\n/*====================\n Fonts & Bars\n ==================== */\n:root {\n --f7-font-size: 14px;\n --f7-bars-translucent-opacity: 0.8;\n --f7-bars-translucent-blur: 20px;\n}\n.ios {\n --f7-font-family: -apple-system, SF Pro Text, SF UI Text, system-ui, Helvetica Neue, Helvetica, Arial, sans-serif;\n --f7-line-height: 1.4;\n /*\n --f7-bars-link-color: var(--f7-theme-color);\n */\n --f7-bars-text-color: #000;\n --f7-text-color: #000;\n --f7-bars-bg-color: #f7f7f8;\n --f7-bars-bg-color-rgb: 247, 247, 248;\n --f7-bars-border-color: rgba(0, 0, 0, 0.25);\n}\n.ios .dark,\n.ios.dark {\n --f7-bars-text-color: #fff;\n --f7-text-color: #fff;\n --f7-bars-bg-color: #121212;\n --f7-bars-bg-color-rgb: 22, 22, 22;\n --f7-bars-border-color: rgba(255, 255, 255, 0.16);\n}\n.md {\n --f7-font-family: Roboto, system-ui, Noto, Helvetica, Arial, sans-serif;\n --f7-line-height: 1.5;\n --f7-bars-border-color: transparent;\n --f7-text-color: #212121;\n}\n.md .dark,\n.md.dark {\n --f7-text-color: rgba(255, 255, 255, 0.87);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-bars-link-color: var(--f7-md-on-surface);\n --f7-bars-bg-color: var(--f7-md-surface-2);\n --f7-bars-bg-color-rgb: var(--f7-md-surface-2-rgb);\n}\n/*====================\n Color Themes\n ==================== */\n.text-color-primary {\n --f7-theme-color-text-color: var(--f7-theme-color);\n}\n.bg-color-primary {\n --f7-theme-color-bg-color: var(--f7-theme-color);\n}\n.border-color-primary {\n --f7-theme-color-border-color: var(--f7-theme-color);\n}\n.ripple-color-primary {\n --f7-theme-color-ripple-color: rgba(var(--f7-theme-color-rgb), 0.3);\n}\n@font-face {\n font-family: 'framework7-core-icons';\n src: url('data:application/font-woff;charset=utf-8;base64, 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') format('woff');\n font-weight: 400;\n font-style: normal;\n}\nhtml {\n overscroll-behavior: none;\n}\nhtml,\nbody,\n.framework7-root {\n position: relative;\n height: 100%;\n width: 100%;\n overflow-x: hidden;\n}\nbody {\n margin: 0;\n padding: 0;\n width: 100%;\n background: #fff;\n overflow: hidden;\n overflow-y: scroll;\n -webkit-text-size-adjust: 100%;\n -webkit-font-smoothing: antialiased;\n font-family: var(--f7-font-family);\n font-size: var(--f7-font-size);\n line-height: var(--f7-line-height);\n color: var(--f7-text-color);\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\nbody::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\nbody::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\nbody::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.dark body,\nbody.dark {\n background: #000;\n}\n.dark {\n color: var(--f7-text-color);\n}\n.framework7-root {\n overflow: hidden;\n box-sizing: border-box;\n}\n.framework7-initializing *,\n.framework7-initializing *:before,\n.framework7-initializing *:after {\n transition-duration: 0ms !important;\n}\n.device-ios,\n.device-android {\n cursor: pointer;\n}\n.device-ios {\n touch-action: manipulation;\n}\n@media (width: 1024px) and (height: 691px) and (orientation: landscape) {\n html,\n body,\n .framework7-root {\n height: 671px;\n }\n}\n@media (width: 1024px) and (height: 692px) and (orientation: landscape) {\n html,\n body,\n .framework7-root {\n height: 672px;\n }\n}\n* {\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n -webkit-touch-callout: none;\n}\na,\ninput,\ntextarea,\nselect {\n outline: 0;\n}\na {\n cursor: pointer;\n text-decoration: none;\n color: var(--f7-theme-color);\n}\n.link,\n.item-link {\n cursor: pointer;\n}\np {\n margin: 1em 0;\n}\n.disabled {\n opacity: 0.55 !important;\n pointer-events: none !important;\n}\nhtml.device-full-viewport,\nhtml.device-full-viewport body {\n height: 100vh;\n}\n.ios .md-only,\n.ios .if-md,\n.ios .if-not-ios,\n.ios .not-ios {\n display: none !important;\n}\n@media (width: 1024px) and (height: 691px) and (orientation: landscape) {\n .ios,\n .ios body,\n .ios .framework7-root {\n height: 671px;\n }\n}\n@media (width: 1024px) and (height: 692px) and (orientation: landscape) {\n .ios,\n .ios body,\n .ios .framework7-root {\n height: 672px;\n }\n}\n.md .ios-only,\n.md .if-ios,\n.md .if-not-md,\n.md .not-md {\n display: none !important;\n}\n/* === Statusbar === */\n/* === Views === */\n.views,\n.view {\n position: relative;\n height: 100%;\n z-index: 5000;\n overflow: hidden;\n box-sizing: border-box;\n}\n.framework7-root > .view,\n.framework7-root > .views {\n height: 100%;\n}\n.view-resize-handler {\n width: 6px;\n height: 100%;\n position: absolute;\n left: var(--f7-page-master-width);\n margin-left: -3px;\n top: 0;\n cursor: col-resize;\n z-index: 1000;\n display: none;\n}\n.view-master-detail .view-resize-handler {\n display: block;\n}\n/* === Pages === */\n:root {\n --f7-page-master-width: 320px;\n --f7-page-master-border-color: rgba(0, 0, 0, 0.1);\n --f7-page-master-border-width: 1px;\n --f7-page-swipeback-transition-duration: 300ms;\n --f7-page-parallax-transition-duration: 500ms;\n --f7-page-cover-transition-duration: 450ms;\n --f7-page-dive-transition-duration: 500ms;\n --f7-page-fade-transition-duration: 500ms;\n --f7-page-flip-transition-duration: 700ms;\n --f7-page-push-transition-duration: 500ms;\n /*\n --f7-page-content-extra-padding-top: 0px;\n --f7-page-content-extra-padding-bottom: 0px;\n */\n --f7-page-title-line-height: 1.2;\n --f7-page-title-text-color: inherit;\n --f7-page-title-padding-left: 16px;\n --f7-page-title-padding-right: 16px;\n}\n.ios {\n --f7-page-transition-duration: 400ms;\n --f7-page-title-font-size: 34px;\n --f7-page-title-font-weight: 700;\n --f7-page-title-letter-spacing: -0.03em;\n --f7-page-title-padding-vertical: 6px;\n --f7-page-bg-color: #efeff4;\n}\n.ios .dark,\n.ios.dark {\n --f7-page-bg-color: #000;\n}\n.md {\n --f7-page-transition-duration: 400ms;\n --f7-page-title-font-size: 34px;\n --f7-page-title-font-weight: 500;\n --f7-page-title-letter-spacing: 0;\n --f7-page-title-padding-vertical: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-page-bg-color: var(--f7-md-surface);\n}\n.dark {\n --f7-page-master-border-color: rgba(255, 255, 255, 0.2);\n}\n.pages {\n position: relative;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n.page {\n box-sizing: border-box;\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n transform: none;\n background-color: var(--f7-page-bg-color);\n z-index: 1;\n}\n.page-with-navbar-large-collapsed {\n --f7-navbar-large-collapse-progress: 1;\n}\n.page-previous {\n pointer-events: none;\n}\n.page-content {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n box-sizing: border-box;\n height: 100%;\n position: relative;\n z-index: 1;\n padding-top: calc(var(--f7-page-navbar-offset, 0px) + var(--f7-page-toolbar-top-offset, 0px) + var(--f7-page-subnavbar-offset, 0px) + var(--f7-page-searchbar-offset, 0px) + var(--f7-page-content-extra-padding-top, 0px));\n padding-bottom: calc(var(--f7-page-toolbar-bottom-offset, 0px) + var(--f7-safe-area-bottom) + var(--f7-page-content-extra-padding-bottom, 0px));\n}\n.page-transitioning,\n.page-transitioning .page-shadow-effect,\n.page-transitioning .page-opacity-effect {\n transition-duration: var(--f7-page-transition-duration);\n}\n.page-transitioning-swipeback,\n.page-transitioning-swipeback .page-shadow-effect,\n.page-transitioning-swipeback .page-opacity-effect {\n transition-duration: var(--f7-page-swipeback-transition-duration);\n}\n.router-transition-forward .page-next,\n.router-transition-backward .page-next,\n.router-transition-forward .page-current,\n.router-transition-backward .page-current {\n pointer-events: none;\n}\n.page-shadow-effect {\n position: absolute;\n top: 0;\n width: 16px;\n bottom: 0;\n z-index: -1;\n content: '';\n opacity: 0;\n right: 100%;\n background: linear-gradient(to right, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);\n}\n.page-opacity-effect {\n position: absolute;\n left: 0;\n top: 0;\n background: rgba(0, 0, 0, 0.1);\n width: 100%;\n bottom: 0;\n content: '';\n opacity: 0;\n z-index: 10000;\n}\n.ios .page-previous {\n transform: translate3d(-20%, 0, 0);\n}\n.ios .page-next {\n transform: translate3d(100%, 0, 0);\n}\n.ios .page-previous .page-opacity-effect {\n opacity: 1;\n}\n.ios .page-previous:after {\n opacity: 1;\n}\n.ios .page-current .page-shadow-effect {\n opacity: 1;\n}\n.ios .router-transition-forward .page-next {\n animation: ios-page-next-to-current var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .page-next:before {\n position: absolute;\n top: 0;\n width: 16px;\n bottom: 0;\n z-index: -1;\n content: '';\n opacity: 0;\n right: 100%;\n background: linear-gradient(to right, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);\n animation: ios-page-element-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .page-current {\n animation: ios-page-current-to-previous var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .page-current:after {\n position: absolute;\n left: 0;\n top: 0;\n background: rgba(0, 0, 0, 0.1);\n width: 100%;\n bottom: 0;\n content: '';\n opacity: 0;\n z-index: 10000;\n animation: ios-page-element-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-previous {\n animation: ios-page-previous-to-current var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-previous:after {\n position: absolute;\n left: 0;\n top: 0;\n background: rgba(0, 0, 0, 0.1);\n width: 100%;\n bottom: 0;\n content: '';\n opacity: 0;\n z-index: 10000;\n animation: ios-page-element-fade-out var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-current {\n animation: ios-page-current-to-next var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .page-current:before {\n position: absolute;\n top: 0;\n width: 16px;\n bottom: 0;\n z-index: -1;\n content: '';\n opacity: 0;\n right: 100%;\n background: linear-gradient(to right, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.01) 50%, rgba(0, 0, 0, 0.2) 100%);\n animation: ios-page-element-fade-out var(--f7-page-transition-duration) forwards;\n}\n@keyframes ios-page-next-to-current {\n from {\n transform: translate3d(100%, 0, 0);\n }\n to {\n transform: translate3d(0%, 0, 0);\n }\n}\n@keyframes ios-page-previous-to-current {\n from {\n transform: translate3d(-20%, 0, 0);\n }\n to {\n transform: translate3d(0%, 0, 0);\n }\n}\n@keyframes ios-page-current-to-previous {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(-20%, 0, 0);\n }\n}\n@keyframes ios-page-current-to-next {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(100%, 0, 0);\n }\n}\n@keyframes ios-page-element-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes ios-page-element-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n.md .page-previous {\n transform: translate3d(0, -20px, 0);\n}\n.md .page-next {\n pointer-events: none;\n transform: translate3d(0, 128px, 0);\n opacity: 0;\n}\n.md .page-next.page-next-on-right {\n transform: translate3d(100%, 0, 0);\n opacity: 1;\n}\n.md .router-transition-forward .page-next {\n opacity: 1;\n animation: md-page-next-to-current var(--f7-page-transition-duration) forwards cubic-bezier(0, 0.8, 0.3, 1);\n}\n.md .router-transition-forward .page-current {\n animation: md-page-current-to-previous var(--f7-page-transition-duration) forwards cubic-bezier(0, 0.8, 0.3, 1);\n}\n.md .router-transition-backward .page-current {\n animation: md-page-current-to-next calc(var(--f7-page-transition-duration) / 4) forwards cubic-bezier(0.8, 0, 1, 0.3), md-page-current-to-next-opacity 0ms calc(var(--f7-page-transition-duration) / 4) forwards;\n}\n.md .router-transition-backward .page-previous {\n animation: md-page-previous-to-current var(--f7-page-transition-duration) forwards;\n}\n@keyframes md-page-next-to-current {\n from {\n transform: translate3d(0, 128px, 0);\n }\n to {\n transform: translate3d(0, 0px, 0);\n }\n}\n@keyframes md-page-current-to-next {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(0, 128px, 0);\n }\n}\n@keyframes md-page-current-to-next-opacity {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes md-page-current-to-previous {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(0, -20px, 0);\n }\n}\n@keyframes md-page-previous-to-current {\n from {\n transform: translate3d(0, -20px, 0);\n }\n to {\n transform: translate3d(0, 0px, 0);\n }\n}\n.view:not(.view-master-detail) .page-master-stacked {\n display: none;\n}\n.view:not(.view-master-detail) .navbar-master-stacked {\n display: none;\n}\n.view-master-detail .page-master,\n.view-master-detail .navbar-master {\n width: var(--f7-page-master-width);\n --f7-safe-area-right: 0px;\n --f7-safe-area-outer-right: 0px;\n border-right: var(--f7-page-master-border-width) solid var(--f7-page-master-border-color);\n}\n.view-master-detail .page-master-detail,\n.view-master-detail .navbar-master-detail {\n width: calc(100% - var(--f7-page-master-width));\n --f7-safe-area-left: 0px;\n --f7-safe-area-outer-left: 0px;\n left: var(--f7-page-master-width);\n}\n.view-master-detail .page-master-detail > .navbar-master-detail {\n left: 0;\n right: 0;\n width: 100%;\n}\n.view-master-detail .page-master {\n z-index: 2;\n transform: none;\n pointer-events: auto;\n}\n.view-master-detail .page-master:before,\n.view-master-detail .page-master:after {\n display: none;\n}\n.view-master-detail.router-transition .page-master {\n animation: none;\n}\n.md .router-transition-custom .page-previous,\n.ios .router-transition-custom .page-previous,\n.md .router-transition-custom .page-next,\n.ios .router-transition-custom .page-next {\n opacity: 1;\n transform: none;\n}\n.md .router-transition-custom.view-master-detail .page-master,\n.ios .router-transition-custom.view-master-detail .page-master {\n animation: none;\n}\n.page-title {\n position: relative;\n z-index: 10;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--f7-page-title-text-color);\n letter-spacing: var(--f7-page-title-letter-spacing);\n font-size: var(--f7-page-title-font-size);\n font-weight: var(--f7-page-title-font-weight);\n line-height: var(--f7-page-title-line-height);\n padding-left: calc(var(--f7-page-title-padding-left) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-page-title-padding-right) + var(--f7-safe-area-right));\n padding-top: var(--f7-page-title-padding-vertical);\n padding-bottom: var(--f7-page-title-padding-vertical);\n box-sizing: border-box;\n overflow: hidden;\n width: 100%;\n}\n.router-transition-f7-circle-forward:after,\n.router-transition-f7-circle-backward:after {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n width: 100vmax;\n height: 100vmax;\n margin-left: -50vmax;\n margin-top: -50vmax;\n background: var(--f7-page-bg-color);\n z-index: 100;\n}\n.router-transition-f7-circle-forward .page,\n.router-transition-f7-circle-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-circle-forward:after {\n transform: scale(0);\n border-radius: 50%;\n animation: f7-circle-circle-in 400ms forwards;\n}\n.ios .router-transition-f7-circle-forward .page-next,\n.md .router-transition-f7-circle-forward .page-next {\n opacity: 0;\n transform: scale(0.9);\n animation: f7-circle-next-to-current 300ms forwards;\n animation-delay: 300ms;\n z-index: 150;\n}\n.router-transition-f7-circle-backward:after {\n animation: f7-circle-circle-out 300ms forwards;\n animation-delay: 350ms;\n}\n.ios .router-transition-f7-circle-backward .page-current,\n.md .router-transition-f7-circle-backward .page-current {\n animation: f7-circle-current-to-next 700ms forwards;\n z-index: 150;\n}\n@keyframes f7-circle-circle-in {\n from {\n transform: scale(0);\n border-radius: 50%;\n }\n 50% {\n border-radius: 50%;\n }\n to {\n transform: scale(1);\n border-radius: 0%;\n }\n}\n@keyframes f7-circle-circle-out {\n from {\n transform: scale(1);\n border-radius: 0%;\n }\n 50% {\n border-radius: 50%;\n }\n to {\n transform: scale(0);\n border-radius: 50%;\n }\n}\n@keyframes f7-circle-next-to-current {\n from {\n transform: scale(0.9);\n opacity: 0;\n }\n 40% {\n transform: scale(1.035);\n opacity: 1;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n@keyframes f7-circle-current-to-next {\n from {\n transform: scale(1);\n opacity: 1;\n }\n 34% {\n transform: scale(1.035);\n opacity: 1;\n }\n 57% {\n transform: scale(0.9);\n opacity: 0;\n }\n to {\n transform: scale(0.9);\n opacity: 0;\n }\n}\n.router-transition-f7-cover-v-forward,\n.router-transition-f7-cover-v-backward {\n background: #000;\n perspective: 1200px;\n}\n.router-transition-f7-cover-v-forward .page,\n.router-transition-f7-cover-v-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-cover-v-forward .page-next {\n animation: f7-cover-v-next-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-v-forward .page-current {\n animation: f7-cover-v-current-to-prev var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-v-backward .page-current {\n animation: f7-cover-v-current-to-next var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-v-backward .page-previous {\n animation: f7-cover-v-prev-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n@keyframes f7-cover-v-next-to-current {\n from {\n transform: translateY(100%);\n }\n to {\n transform: translateY(0%);\n }\n}\n@keyframes f7-cover-v-current-to-next {\n from {\n transform: translateY(0%);\n }\n to {\n transform: translateY(100%);\n }\n}\n@keyframes f7-cover-v-current-to-prev {\n from {\n transform: translateZ(0);\n opacity: 1;\n }\n to {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n}\n@keyframes f7-cover-v-prev-to-current {\n from {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n to {\n transform: translateZ(0);\n opacity: 1;\n }\n}\n.router-transition-f7-cover-forward,\n.router-transition-f7-cover-backward {\n background: #000;\n perspective: 1200px;\n}\n.router-transition-f7-cover-forward .page,\n.router-transition-f7-cover-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-cover-forward .page-next {\n animation: f7-cover-next-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-forward .page-current {\n animation: f7-cover-current-to-prev var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-backward .page-current {\n animation: f7-cover-current-to-next var(--f7-page-cover-transition-duration) forwards;\n}\n.router-transition-f7-cover-backward .page-previous {\n animation: f7-cover-prev-to-current var(--f7-page-cover-transition-duration) forwards;\n}\n@keyframes f7-cover-next-to-current {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n@keyframes f7-cover-current-to-next {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(100%);\n }\n}\n@keyframes f7-cover-current-to-prev {\n from {\n transform: translateZ(0);\n opacity: 1;\n }\n to {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n}\n@keyframes f7-cover-prev-to-current {\n from {\n transform: translateZ(-300px);\n opacity: 0.5;\n }\n to {\n transform: translateZ(0);\n opacity: 1;\n }\n}\n.router-transition-f7-dive-forward,\n.router-transition-f7-dive-backward {\n background: var(--f7-page-bg-color);\n perspective: 1200px;\n}\n.router-transition-f7-dive-forward .page,\n.router-transition-f7-dive-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-dive-forward .page-next {\n animation: f7-dive-next-to-current var(--f7-page-dive-transition-duration) forwards;\n}\n.router-transition-f7-dive-forward .page-current {\n animation: f7-dive-current-to-prev var(--f7-page-dive-transition-duration) forwards;\n}\n.router-transition-f7-dive-backward .page-current {\n animation: f7-dive-current-to-next var(--f7-page-dive-transition-duration) forwards;\n}\n.router-transition-f7-dive-backward .page-previous {\n animation: f7-dive-prev-to-current var(--f7-page-dive-transition-duration) forwards;\n}\n@keyframes f7-dive-next-to-current {\n from {\n opacity: 0;\n transform: translateZ(-150px);\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 1;\n transform: translateZ(0px);\n }\n}\n@keyframes f7-dive-current-to-next {\n from {\n opacity: 1;\n transform: translateZ(0px);\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 0;\n transform: translateZ(-150px);\n }\n}\n@keyframes f7-dive-current-to-prev {\n from {\n transform: translateZ(0px);\n opacity: 1;\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 0;\n transform: translateZ(150px);\n }\n}\n@keyframes f7-dive-prev-to-current {\n from {\n opacity: 0;\n transform: translateZ(150px);\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 1;\n transform: translateZ(0px);\n }\n}\n.router-transition-f7-fade-forward,\n.router-transition-f7-fade-backward {\n background: var(--f7-page-bg-color);\n}\n.router-transition-f7-fade-forward .page,\n.router-transition-f7-fade-backward .page {\n pointer-events: none;\n}\n.ios .router-transition-f7-fade-forward .page-next,\n.md .router-transition-f7-fade-forward .page-next {\n opacity: 0;\n animation: f7-fade-in var(--f7-page-fade-transition-duration) forwards;\n}\n.ios .router-transition-f7-fade-forward .page-current,\n.md .router-transition-f7-fade-forward .page-current {\n animation: f7-fade-out var(--f7-page-fade-transition-duration) forwards;\n}\n.ios .router-transition-f7-fade-backward .page-current,\n.md .router-transition-f7-fade-backward .page-current {\n animation: f7-fade-out var(--f7-page-fade-transition-duration) forwards;\n}\n.ios .router-transition-f7-fade-backward .page-previous,\n.md .router-transition-f7-fade-backward .page-previous {\n animation: f7-fade-in var(--f7-page-fade-transition-duration) forwards;\n}\n@keyframes f7-fade-in {\n from {\n opacity: 0;\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes f7-fade-out {\n from {\n opacity: 1;\n }\n 50% {\n opacity: 0;\n }\n to {\n opacity: 0;\n }\n}\n.router-transition-f7-flip-forward,\n.router-transition-f7-flip-backward {\n background: #000;\n perspective: 1200px;\n}\n.router-transition-f7-flip-forward .page,\n.router-transition-f7-flip-backward .page {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n overflow: hidden;\n pointer-events: none;\n}\n.router-transition-f7-flip-forward .page-next {\n transform-style: preserve-3d;\n animation: f7-flip-next-to-current var(--f7-page-flip-transition-duration) forwards;\n}\n.router-transition-f7-flip-forward .page-current {\n transform-style: preserve-3d;\n animation: f7-flip-current-to-prev var(--f7-page-flip-transition-duration) forwards;\n}\n.router-transition-f7-flip-backward .page-current {\n transform-style: preserve-3d;\n animation: f7-flip-current-to-next var(--f7-page-flip-transition-duration) forwards;\n}\n.router-transition-f7-flip-backward .page-previous {\n transform-style: preserve-3d;\n animation: f7-flip-prev-to-current var(--f7-page-flip-transition-duration) forwards;\n}\n@keyframes f7-flip-next-to-current {\n from {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(180deg);\n }\n to {\n border-radius: 0;\n transform: translateZ(0px) rotateY(0deg);\n }\n}\n@keyframes f7-flip-current-to-next {\n from {\n border-radius: 0px;\n transform: translateZ(0px) rotateY(0deg);\n }\n to {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(180deg);\n }\n}\n@keyframes f7-flip-current-to-prev {\n from {\n border-radius: 0px;\n transform: translateZ(0px) rotateY(0deg);\n }\n to {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(-180deg);\n }\n}\n@keyframes f7-flip-prev-to-current {\n from {\n border-radius: 32px;\n transform: translateZ(-100vmax) rotateY(-180deg);\n }\n to {\n border-radius: 0px;\n transform: translateZ(0px) rotateY(0deg);\n }\n}\n.router-transition-f7-parallax-forward .page {\n pointer-events: none;\n}\n.router-transition-f7-parallax-forward .page-next {\n animation: f7-parallax-next-to-current var(--f7-page-parallax-transition-duration) forwards;\n}\n.router-transition-f7-parallax-forward .page-current {\n animation: f7-parallax-current-to-prev var(--f7-page-parallax-transition-duration) forwards;\n}\n.router-transition-f7-parallax-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-parallax-backward .page-current {\n animation: f7-parallax-current-to-next var(--f7-page-parallax-transition-duration) forwards;\n}\n.router-transition-f7-parallax-backward .page-previous {\n animation: f7-parallax-prev-to-current var(--f7-page-parallax-transition-duration) forwards;\n}\n@keyframes f7-parallax-next-to-current {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n@keyframes f7-parallax-current-to-next {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(100%);\n }\n}\n@keyframes f7-parallax-current-to-prev {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(-20%);\n }\n}\n@keyframes f7-parallax-prev-to-current {\n from {\n transform: translateX(-20%);\n }\n to {\n transform: translateX(0%);\n }\n}\n.router-transition-f7-push-forward .page {\n pointer-events: none;\n}\n.router-transition-f7-push-forward .page-next {\n animation: f7-push-next-to-current var(--f7-page-push-transition-duration) forwards;\n}\n.router-transition-f7-push-forward .page-current {\n animation: f7-push-current-to-prev var(--f7-page-push-transition-duration) forwards;\n}\n.router-transition-f7-push-backward .page {\n pointer-events: none;\n}\n.router-transition-f7-push-backward .page-current {\n animation: f7-push-current-to-next var(--f7-page-push-transition-duration) forwards;\n}\n.router-transition-f7-push-backward .page-previous {\n animation: f7-push-prev-to-current var(--f7-page-push-transition-duration) forwards;\n}\n@keyframes f7-push-next-to-current {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n@keyframes f7-push-current-to-next {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(100%);\n }\n}\n@keyframes f7-push-current-to-prev {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(-100%);\n }\n}\n@keyframes f7-push-prev-to-current {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0%);\n }\n}\n/* === Link === */\n:root {\n --f7-link-highlight-black: rgba(0, 0, 0, 0.1);\n --f7-link-highlight-white: rgba(255, 255, 255, 0.15);\n --f7-link-highlight-color: rgba(var(--f7-theme-color-rgb), 0.15);\n}\n.ios {\n --f7-link-pressed-opacity: 0.3;\n}\n.link,\n.tab-link {\n display: inline-flex;\n align-items: center;\n align-content: center;\n justify-content: center;\n position: relative;\n box-sizing: border-box;\n z-index: 1;\n --f7-touch-ripple-color: var(--f7-link-touch-ripple-color, rgba(var(--f7-theme-color-rgb), 0.25));\n}\n.link i + span,\n.link i + i,\n.link span + i,\n.link span + span {\n margin-left: 4px;\n}\n.link[class*='color-'] {\n color: var(--f7-theme-color);\n}\n.ios .link {\n transition: opacity 300ms;\n}\n.ios .link.active-state {\n opacity: var(--f7-link-pressed-opacity);\n transition-duration: 0ms;\n}\n/* === Navbar === */\n:root {\n /*\n --f7-navbar-bg-color: var(--f7-bars-bg-color);\n --f7-navbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-navbar-border-color: var(--f7-bars-border-color);\n */\n --f7-navbar-hide-show-transition-duration: 400ms;\n --f7-navbar-title-line-height: 1.2;\n --f7-navbar-subtitle-text-align: inherit;\n --f7-navbar-large-title-line-height: 1.2;\n --f7-navbar-large-title-text-color: inherit;\n --f7-navbar-large-title-padding-left: 16px;\n --f7-navbar-large-title-padding-right: 16px;\n}\n.ios {\n /*\n --f7-navbar-link-color: var(--f7-bars-link-color);\n --f7-navbar-text-color: var(--f7-bars-text-color);\n */\n --f7-navbar-height: 44px;\n --f7-navbar-font-size: 17px;\n --f7-navbar-title-font-size: inherit;\n --f7-navbar-inner-padding-left: 8px;\n --f7-navbar-inner-padding-right: 8px;\n --f7-navbar-title-font-weight: 600;\n --f7-navbar-title-margin-left: 0;\n --f7-navbar-title-margin-right: 0;\n --f7-navbar-title-text-align: center;\n --f7-navbar-subtitle-font-size: 10px;\n --f7-navbar-subtitle-line-height: 1;\n --f7-navbar-large-title-height: 52px;\n --f7-navbar-large-title-font-size: 34px;\n --f7-navbar-large-title-font-weight: 700;\n --f7-navbar-large-title-letter-spacing: -0.03em;\n --f7-navbar-large-title-padding-vertical: 6px;\n /*\n --f7-navbar-link-height: var(--f7-navbar-height);\n --f7-navbar-link-line-height: var(--f7-navbar-height);\n */\n --f7-navbar-subtitle-text-color: rgba(0, 0, 0, 0.55);\n}\n.ios .dark,\n.ios.dark {\n --f7-navbar-subtitle-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-navbar-height: 64px;\n --f7-navbar-font-size: 16px;\n --f7-navbar-title-font-size: 22px;\n --f7-navbar-inner-padding-left: 0px;\n --f7-navbar-inner-padding-right: 0px;\n --f7-navbar-title-font-weight: 400;\n --f7-navbar-title-margin-left: 0px;\n --f7-navbar-title-margin-right: 16px;\n --f7-navbar-title-text-align: left;\n --f7-navbar-subtitle-font-size: 14px;\n --f7-navbar-subtitle-line-height: 1.2;\n --f7-navbar-large-title-font-size: 28px;\n --f7-navbar-large-title-height: 88px;\n --f7-navbar-large-title-font-weight: 400;\n --f7-navbar-large-title-letter-spacing: 0;\n --f7-navbar-large-title-padding-vertical: 8px;\n --f7-navbar-link-height: 48px;\n --f7-navbar-link-line-height: 48px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-navbar-link-color: var(--f7-md-on-surface);\n --f7-navbar-text-color: var(--f7-md-on-surface);\n --f7-navbar-subtitle-text-color: var(--f7-md-on-surface-variant);\n}\n.navbars,\n.navbar {\n z-index: 500;\n left: 0;\n top: 0;\n width: 100%;\n}\n.navbars {\n position: absolute;\n}\n.navbars .navbar {\n z-index: auto;\n}\n.navbars .navbar-transitioning {\n z-index: 500;\n}\n.navbar {\n --f7-navbar-large-collapse-progress: 0;\n position: relative;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n box-sizing: border-box;\n margin: 0;\n height: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n color: var(--f7-navbar-text-color, var(--f7-bars-text-color));\n font-size: var(--f7-navbar-font-size);\n}\n.navbar b {\n font-weight: 500;\n}\n.navbar a {\n color: var(--f7-navbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.navbar a.link {\n display: flex;\n justify-content: flex-start;\n line-height: var(--f7-navbar-link-line-height, var(--f7-navbar-height));\n height: var(--f7-navbar-link-height, var(--f7-navbar-height));\n}\n.navbar .title,\n.navbar .left,\n.navbar .right {\n position: relative;\n z-index: 10;\n}\n.navbar .title {\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex-shrink: 10;\n font-weight: var(--f7-navbar-title-font-weight);\n display: inline-block;\n line-height: var(--f7-navbar-title-line-height);\n text-align: var(--f7-navbar-title-text-align);\n font-size: var(--f7-navbar-title-font-size);\n margin-left: var(--f7-navbar-title-margin-left);\n margin-right: var(--f7-navbar-title-margin-left);\n}\n.navbar .subtitle {\n display: block;\n color: var(--f7-navbar-subtitle-text-color);\n font-weight: normal;\n font-size: var(--f7-navbar-subtitle-font-size);\n line-height: var(--f7-navbar-subtitle-line-height);\n text-align: var(--f7-navbar-subtitle-text-align);\n}\n.navbar .left,\n.navbar .right {\n flex-shrink: 0;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.navbar .right:first-child {\n position: absolute;\n height: 100%;\n}\n.navbar.no-outline .navbar-bg:after,\n.navbar .no-outline .navbar-bg:after {\n display: none !important;\n}\n.navbar.no-outline .title-large:after,\n.navbar .no-outline .title-large:after {\n display: none !important;\n}\n.navbar.navbar-hidden .navbar-bg:before,\n.navbar-hidden .navbar .navbar-bg:before {\n opacity: 0 !important;\n}\n.navbar-bg {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 0;\n background: var(--f7-navbar-bg-color);\n background-color: var(--f7-navbar-bg-color, var(--f7-bars-bg-color));\n transition-property: transform;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .navbar-bg {\n background-color: rgba(var(--f7-navbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.navbar-bg:after,\n.navbar-bg:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.navbar-bg:after {\n content: '';\n position: absolute;\n background-color: var(--f7-navbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.navbar-bg:after {\n z-index: 1;\n}\n.navbar-transitioning,\n.navbar-transitioning .left,\n.navbar-transitioning .title,\n.navbar-transitioning .right,\n.navbar-transitioning .title-large-text,\n.navbar-transitioning .navbar-bg,\n.navbar-transitioning .subnavbar,\n.navbar-transitioning .navbar-bg:before {\n transition-duration: var(--f7-navbar-hide-show-transition-duration);\n}\n.navbar-page-transitioning {\n transition-duration: var(--f7-page-swipeback-transition-duration) !important;\n}\n.navbar-page-transitioning .title-large-text,\n.navbar-page-transitioning .navbar-bg {\n transition-duration: var(--f7-page-swipeback-transition-duration) !important;\n}\n.navbar-hidden {\n transform: translate3d(0, calc(-1 * var(--f7-navbar-height)), 0);\n}\n.navbar-hidden .navbar-inner {\n pointer-events: none;\n}\n.navbar-hidden .navbar-inner > .left,\n.navbar-hidden .navbar-inner > .title,\n.navbar-hidden .navbar-inner > .right {\n opacity: 0 !important;\n}\n.navbar-hidden .subnavbar {\n pointer-events: auto;\n}\n.navbar-hidden-statusbar {\n transform: translate3d(0, calc(-1 * var(--f7-navbar-height) - var(--f7-safe-area-top)), 0);\n}\n.navbar-large-hidden .navbar-large {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar-inner {\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n padding: var(--f7-safe-area-top) calc(var(--f7-navbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-navbar-inner-padding-left) + var(--f7-safe-area-left));\n transform: translate3d(0, 0, 0);\n z-index: 10;\n}\n.views > .navbar,\n.view > .navbar,\n.page > .navbar,\n.navbars > .navbar {\n position: absolute;\n}\n.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(\n .with-searchbar-expandable-enabled\n ) .navbar-bg,\n.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(\n .with-searchbar-expandable-enabled\n ) .title {\n opacity: 0;\n}\n.navbar-large .navbar-bg {\n height: calc(100% + var(--f7-navbar-large-title-height));\n transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.navbar-large-transparent .navbar-bg,\n.navbar-large.navbar-transparent .navbar-bg {\n opacity: var(--f7-navbar-large-collapse-progress);\n}\n.ios .router-navbar-transition-to-large .navbar-bg,\n.ios .router-navbar-transition-from-large .navbar-bg,\n.navbar-bg.ios-swipeback-navbar-bg-large,\n.navbar-large-transparent .navbar-bg.ios-swipeback-navbar-bg-large,\n.navbar-large.navbar-transparent .navbar-bg.ios-swipeback-navbar-bg-large {\n height: calc(100% + var(--f7-navbar-large-title-height));\n transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.ios .navbar:not(.navbar-large) .navbar-bg {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar-large .title {\n opacity: var(--f7-navbar-large-collapse-progress);\n}\n.navbar-large-collapsed {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar-large-collapsed .title-large {\n pointer-events: none;\n}\n.navbar .title-large {\n box-sizing: border-box;\n position: absolute;\n left: 0;\n right: 0;\n top: 100%;\n display: flex;\n white-space: nowrap;\n overflow: hidden;\n height: var(--f7-navbar-large-title-height);\n z-index: 5;\n}\n.navbar .title-large-text {\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--f7-navbar-large-title-text-color);\n letter-spacing: var(--f7-navbar-large-title-letter-spacing);\n font-size: var(--f7-navbar-large-title-font-size);\n font-weight: var(--f7-navbar-large-title-font-weight);\n line-height: var(--f7-navbar-large-title-line-height);\n padding-left: calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-navbar-large-title-padding-right) + var(--f7-safe-area-right));\n padding-top: var(--f7-navbar-large-title-padding-vertical);\n padding-bottom: var(--f7-navbar-large-title-padding-vertical);\n box-sizing: border-box;\n overflow: hidden;\n width: 100%;\n transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n transform-origin: calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center;\n}\n.navbar-no-title-large-transition .title-large-text {\n transition-duration: 0ms;\n}\n.navbar ~ *,\n.navbars ~ * {\n --f7-page-navbar-offset: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ * .page-with-navbar-large,\n.navbar ~ .page-with-navbar-large,\n.navbars ~ * .page-with-navbar-large,\n.navbars ~ .page-with-navbar-large,\n.page-with-navbar-large .navbar ~ * {\n --f7-page-navbar-offset: calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));\n}\n.page.no-navbar,\n.page.no-navbar .navbar ~ * {\n --f7-page-navbar-offset: var(--f7-safe-area-top);\n}\n.ios {\n --f7-navbarLeftTextOffset: calc(4px + 12px + var(--f7-navbar-inner-padding-left));\n --f7-navbarTitleLargeOffset: var(--f7-navbar-large-title-padding-left);\n --f7-navbar-large-bg-center-top: translateX(0) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n --f7-navbar-large-bg-center-bottom: translateX(0) translateY(0);\n --f7-navbar-large-bg-left-top: translateX(-100%) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n --f7-navbar-large-bg-left-bottom: translateX(-100%) translateY(0);\n --f7-navbar-large-bg-right-top: translateX(100%) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n --f7-navbar-large-bg-right-bottom: translateX(100%) translateY(0);\n}\n.ios .navbar .title-large {\n align-items: flex-end;\n}\n.ios .navbar a.icon-only {\n width: 44px;\n margin: 0;\n justify-content: center;\n}\n.ios .navbar .left a + a,\n.ios .navbar .right a + a {\n margin-left: 16px;\n}\n.ios .navbar b {\n font-weight: 600;\n}\n.ios .navbar .left {\n margin-right: 10px;\n}\n.ios .navbar .right {\n margin-left: 10px;\n}\n.ios .navbar .right:first-child {\n right: calc(8px + var(--f7-safe-area-right));\n}\n.ios .navbar-inner {\n justify-content: space-between;\n}\n.ios .navbar-inner-left-title {\n justify-content: flex-start;\n}\n.ios .navbar-inner-left-title .right {\n margin-left: auto;\n}\n.ios .navbar-inner-left-title .title {\n text-align: left;\n margin-right: 10px;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .left,\n.ios .view:not(.view-master-detail) .navbar-previous .left,\n.ios .navbar-next .left,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .title,\n.ios .view:not(.view-master-detail) .navbar-previous .title,\n.ios .navbar-next .title,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .right,\n.ios .view:not(.view-master-detail) .navbar-previous .right,\n.ios .navbar-next .right,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar,\n.ios .view:not(.view-master-detail) .navbar-previous .subnavbar,\n.ios .navbar-next .subnavbar,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .fading,\n.ios .view:not(.view-master-detail) .navbar-previous .fading,\n.ios .navbar-next .fading {\n opacity: 0;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master),\n.ios .view:not(.view-master-detail) .navbar-previous {\n pointer-events: none;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large,\n.ios .view:not(.view-master-detail) .navbar-previous .title-large {\n opacity: 0;\n transition-duration: 0ms;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .title-large .title-large-text,\n.ios .view:not(.view-master-detail) .navbar-previous .title-large .title-large-text {\n transform: scale(0.5);\n transition-duration: 0ms;\n}\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .subnavbar.sliding,\n.ios .view:not(.view-master-detail) .navbar-previous .subnavbar.sliding,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .sliding .subnavbar,\n.ios .view:not(.view-master-detail) .navbar-previous .sliding .subnavbar {\n opacity: 1;\n transform: translate3d(-100%, 0, 0);\n}\n.ios .view:not(.view-master-detail) .navbar-previous .navbar-bg,\n.ios .view-master-detail .navbar-previous:not(.navbar-master) .navbar-bg {\n transform: translateX(-100%);\n}\n.ios .navbar-next {\n pointer-events: none;\n}\n.ios .navbar-next .navbar-bg {\n transform: translateX(100%);\n}\n.ios .navbar-next .title-large .title-large-text {\n transition-duration: 0ms;\n transform: translateX(100%) translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n}\n.ios .navbar-next .subnavbar.sliding,\n.ios .navbar-next .sliding .subnavbar {\n opacity: 1;\n transform: translate3d(100%, 0, 0);\n}\n.ios .router-transition .navbar,\n.ios .router-transition .navbar-bg {\n transition-duration: var(--f7-page-transition-duration);\n}\n.ios .router-transition .navbar-bg {\n animation-duration: var(--f7-page-transition-duration);\n animation-fill-mode: forwards;\n}\n.ios .router-transition .title-large,\n.ios .router-transition .title-large-text {\n transition-duration: 0ms;\n}\n.ios .router-transition .navbar-current .left,\n.ios .router-transition .navbar-current .title,\n.ios .router-transition .navbar-current .right,\n.ios .router-transition .navbar-current .subnavbar {\n animation: ios-navbar-element-fade-out var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition .navbar-current .sliding.left,\n.ios .router-transition .navbar-current .sliding.left .icon + span,\n.ios .router-transition .navbar-current .sliding.title,\n.ios .router-transition .navbar-current .sliding.right,\n.ios .router-transition .navbar-current .sliding .left,\n.ios .router-transition .navbar-current .sliding .left .icon + span,\n.ios .router-transition .navbar-current .sliding .title,\n.ios .router-transition .navbar-current .sliding .right {\n transition-duration: var(--f7-page-transition-duration);\n opacity: 0 !important;\n animation: none;\n}\n.ios .router-transition .navbar-current .sliding .subnavbar,\n.ios .router-transition .navbar-current .sliding.subnavbar {\n transition-duration: var(--f7-page-transition-duration);\n animation: none;\n opacity: 1;\n}\n.ios .router-transition-forward .navbar-next .left,\n.ios .router-transition-backward .navbar-previous .left,\n.ios .router-transition-forward .navbar-next .title,\n.ios .router-transition-backward .navbar-previous .title,\n.ios .router-transition-forward .navbar-next .right,\n.ios .router-transition-backward .navbar-previous .right,\n.ios .router-transition-forward .navbar-next .subnavbar,\n.ios .router-transition-backward .navbar-previous .subnavbar {\n animation: ios-navbar-element-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next .sliding.left,\n.ios .router-transition-backward .navbar-previous .sliding.left,\n.ios .router-transition-forward .navbar-next .sliding.left .icon + span,\n.ios .router-transition-backward .navbar-previous .sliding.left .icon + span,\n.ios .router-transition-forward .navbar-next .sliding.title,\n.ios .router-transition-backward .navbar-previous .sliding.title,\n.ios .router-transition-forward .navbar-next .sliding.right,\n.ios .router-transition-backward .navbar-previous .sliding.right,\n.ios .router-transition-forward .navbar-next .sliding .left,\n.ios .router-transition-backward .navbar-previous .sliding .left,\n.ios .router-transition-forward .navbar-next .sliding .left .icon + span,\n.ios .router-transition-backward .navbar-previous .sliding .left .icon + span,\n.ios .router-transition-forward .navbar-next .sliding .title,\n.ios .router-transition-backward .navbar-previous .sliding .title,\n.ios .router-transition-forward .navbar-next .sliding .right,\n.ios .router-transition-backward .navbar-previous .sliding .right,\n.ios .router-transition-forward .navbar-next .sliding .subnavbar,\n.ios .router-transition-backward .navbar-previous .sliding .subnavbar {\n transition-duration: var(--f7-page-transition-duration);\n animation: none;\n transform: translate3d(0, 0, 0) !important;\n opacity: 1 !important;\n}\n.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title,\n.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .title {\n animation: none;\n}\n.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title,\n.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding.title,\n.ios .router-transition-forward .navbar-next.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title,\n.ios .router-transition-backward .navbar-previous.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible) .sliding .title {\n opacity: 0 !important;\n}\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .left,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .left,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .title,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .title,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .right,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .right,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled-no-transition .subnavbar,\n.ios .router-transition-backward .navbar-previous.with-searchbar-expandable-enabled .subnavbar {\n animation: none;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large {\n overflow: visible;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-up var(--f7-page-transition-duration) forwards, ios-navbar-large-title-text-fade-out var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large .left .back span {\n animation: ios-navbar-back-text-next-to-current var(--f7-page-transition-duration) forwards;\n transition: none;\n transform-origin: left center;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large {\n overflow: visible;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-left var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-left var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-forward .navbar-next.navbar-large:not(.navbar-large-collapsed) .title,\n.ios .router-transition-forward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title {\n animation: none;\n opacity: 0 !important;\n transition-duration: 0;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large .left .back span {\n animation: ios-navbar-back-text-current-to-previous var(--f7-page-transition-duration) forwards;\n transition: none;\n transform-origin: left center;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large {\n overflow: visible;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-right var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-right var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large {\n opacity: 0;\n}\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large,\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large {\n overflow: visible;\n opacity: 1;\n}\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large.router-navbar-transition-to-large .title-large .title-large-text,\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-to-large:not(.router-navbar-transition-from-large) .title-large .title-large-text {\n animation: ios-navbar-large-title-text-slide-down var(--f7-page-transition-duration) forwards, ios-navbar-large-title-text-fade-in var(--f7-page-transition-duration) forwards;\n}\n.ios .router-transition-backward .navbar-current.navbar-large:not(.navbar-large-collapsed) .title,\n.ios .router-transition-backward .navbar-previous.navbar-large:not(.navbar-large-collapsed) .title {\n animation: none;\n opacity: 0 !important;\n transition-duration: 0;\n}\n.ios .router-transition-forward .navbar-current .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-lb;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-lb;\n}\n.ios .router-transition-forward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-lt;\n}\n.ios .router-transition-forward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-lb;\n}\n.ios .router-transition-forward .navbar-current.navbar-large-collapsed:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-lt;\n}\n.ios .router-transition-forward .navbar-next .navbar-bg {\n animation-name: ios-navbar-bg-from-rb-to-cb;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large.router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-rb-to-cb;\n}\n.ios .router-transition-forward .navbar-next.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-rb-to-ct;\n}\n.ios .router-transition-forward .navbar-next:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-rt-to-cb;\n}\n.ios .router-transition-backward .navbar-current .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-rb;\n}\n.ios .router-transition-backward .navbar-current:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-rb;\n}\n.ios .router-transition-backward .navbar-current.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-cb-to-rt;\n}\n.ios .router-transition-backward .navbar-current.navbar-large-collapsed .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-rt;\n}\n.ios .router-transition-backward .navbar-current.navbar-large-collapsed.router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-ct-to-rb;\n}\n.ios .router-transition-backward .navbar-previous .navbar-bg {\n animation-name: ios-navbar-bg-from-lb-to-cb;\n}\n.ios .router-transition-backward .navbar-previous:not(.router-navbar-transition-from-large).router-navbar-transition-to-large .navbar-bg {\n animation-name: ios-navbar-bg-from-lt-to-cb;\n}\n.ios .router-transition-backward .navbar-previous.router-navbar-transition-from-large:not(.router-navbar-transition-to-large) .navbar-bg {\n animation-name: ios-navbar-bg-from-lb-to-ct;\n}\n.ios .router-transition-backward .navbar-previous.navbar-large-collapsed .navbar-bg {\n animation-name: ios-navbar-bg-from-lt-to-ct;\n}\n.view-master-detail .navbars {\n z-index: auto;\n}\n.view-master-detail .page-master {\n z-index: 525;\n}\n.view-master-detail .navbar-master .navbar-inner,\n.view-master-detail .navbar-master .navbar-bg {\n z-index: 550;\n}\n.view-master-detail .navbar-master-detail .navbar-inner,\n.view-master-detail .navbar-master-detail .navbar-bg {\n z-index: 500;\n}\n.view-master-detail .navbar-master.navbar-previous {\n pointer-events: auto;\n}\n.view-master-detail .navbar-master.navbar-previous .left,\n.view-master-detail .navbar-master.navbar-previous:not(.navbar-large) .title,\n.view-master-detail .navbar-master.navbar-previous .right,\n.view-master-detail .navbar-master.navbar-previous .subnavbar {\n opacity: 1;\n}\n.view-master-detail.router-transition .navbar-master .left,\n.view-master-detail.router-transition .navbar-master .left .icon + span,\n.view-master-detail.router-transition .navbar-master:not(.navbar-large) .title,\n.view-master-detail.router-transition .navbar-master .right,\n.view-master-detail.router-transition .navbar-master .subnavbar,\n.view-master-detail.router-transition .navbar-master .fading {\n opacity: 1 !important;\n transition-duration: 0ms;\n transform: none !important;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master .navbar-bg {\n transition-duration: 0ms;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master.navbar-large .title {\n opacity: calc(-1 + 2 * var(--f7-navbar-large-collapse-progress)) !important;\n transition-duration: 0ms;\n transform: none !important;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master.navbar-large .title-large,\n.view-master-detail.router-transition .navbar-master.navbar-large .title-large-text {\n transition-duration: 0ms;\n animation: none !important;\n}\n.view-master-detail.router-transition .navbar-master.navbar-large-transparent .navbar-bg,\n.view-master-detail.router-transition .navbar-master.navbar-large.navbar-transparent .navbar-bg {\n height: 100% !important;\n opacity: var(--f7-navbar-large-collapse-progress) !important;\n}\n@keyframes ios-navbar-element-fade-in {\n 0% {\n opacity: 0;\n }\n 25% {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes ios-navbar-element-fade-out {\n from {\n opacity: 1;\n }\n 75% {\n opacity: 0;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes ios-navbar-large-title-text-slide-up {\n 0% {\n transform: translateX(0px) translateY(0%) scale(1);\n }\n 100% {\n transform: translateX(calc(var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset))) translateY(calc(-1 * var(--f7-navbar-large-title-height) + var(--f7-navbar-large-title-padding-vertical))) scale(0.5);\n }\n}\n@keyframes ios-navbar-large-title-text-slide-down {\n 0% {\n transform: translateX(calc(var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset))) translateY(calc(-1 * var(--f7-navbar-large-title-height) + var(--f7-navbar-large-title-padding-vertical) / 2)) scale(0.5);\n }\n 100% {\n transform: translateX(0px) translateY(0%) scale(1);\n }\n}\n@keyframes ios-navbar-large-title-text-slide-left {\n 0% {\n transform: translateX(100%);\n }\n 100% {\n transform: translateX(0%);\n }\n}\n@keyframes ios-navbar-large-title-text-slide-right {\n 0% {\n transform: translateX(0%);\n }\n 100% {\n transform: translateX(100%);\n }\n}\n@keyframes ios-navbar-large-title-text-fade-out {\n 0% {\n opacity: 1;\n }\n 80% {\n opacity: 0;\n }\n 100% {\n opacity: 0;\n }\n}\n@keyframes ios-navbar-large-title-text-fade-in {\n 0% {\n opacity: 0;\n }\n 20% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes ios-navbar-back-text-current-to-previous {\n 0% {\n opacity: 1;\n transform: translateY(0px) translateX(0px) scale(1);\n }\n 80% {\n opacity: 0;\n }\n 100% {\n opacity: 0;\n transform: translateX(calc(var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset))) translateY(calc(1 * var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2)) scale(2);\n }\n}\n@keyframes ios-navbar-back-text-next-to-current {\n 0% {\n opacity: 0;\n transform: translateX(calc(var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset))) translateY(calc(1 * var(--f7-navbar-large-title-height) + var(--f7-navbar-large-title-padding-vertical) / 2)) scale(2);\n }\n 20% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n transform: translateX(0px) translateY(0px) scale(1);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-lb {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-lt {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-lb {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-lt {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n}\n@keyframes ios-navbar-bg-from-rb-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-rb-to-ct {\n from {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n}\n@keyframes ios-navbar-bg-from-rt-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-right-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-rb {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-rb {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-cb-to-rt {\n from {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-top);\n }\n}\n@keyframes ios-navbar-bg-from-ct-to-rt {\n from {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-right-top);\n }\n}\n@keyframes ios-navbar-bg-from-lb-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-lt-to-cb {\n from {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-bottom);\n }\n}\n@keyframes ios-navbar-bg-from-lb-to-ct {\n from {\n transform: var(--f7-navbar-large-bg-left-bottom);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n}\n@keyframes ios-navbar-bg-from-lt-to-ct {\n from {\n transform: var(--f7-navbar-large-bg-left-top);\n }\n to {\n transform: var(--f7-navbar-large-bg-center-top);\n }\n}\n.md .navbar .title-large {\n align-items: center;\n}\n.md .navbar .left {\n margin-left: 4px;\n margin-right: 4px;\n}\n.md .navbar a.link {\n padding: 0 12px;\n min-width: 48px;\n}\n.md .navbar a.icon-only {\n min-width: 0;\n flex-shrink: 0;\n width: 48px;\n}\n.md .navbar .right {\n margin-left: auto;\n margin-right: 4px;\n}\n.md .navbar .right:first-child {\n right: var(--f7-safe-area-right);\n}\n.md .navbar-inner {\n justify-content: flex-start;\n overflow: hidden;\n}\n.md .navbar-large:not(.navbar-large-collapsed) .navbar-inner {\n overflow: visible;\n}\n.md .page.page-with-subnavbar .navbar-inner {\n overflow: visible;\n}\n.md .navbar-inner:not(.navbar-inner-centered-title) .title:first-child {\n margin-left: 16px;\n}\n.md .navbar-inner-centered-title {\n justify-content: space-between;\n}\n.md .navbar-inner-centered-title .right {\n margin-left: 0;\n}\n.md .navbar-inner-centered-title .title {\n text-align: center;\n}\n/* === Toolbar === */\n:root {\n /*\n --f7-toolbar-bg-color: var(--f7-bars-bg-color);\n --f7-toolbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-toolbar-border-color: var(--f7-bars-border-color);\n --f7-toolbar-link-color: var(--f7-bars-link-color);\n --f7-toolbar-text-color: var(--f7-bars-text-color);\n */\n --f7-tabbar-link-active-bg-color: transparent;\n --f7-tabbar-label-text-transform: none;\n --f7-toolbar-hide-show-transition-duration: 400ms;\n}\n.ios {\n --f7-toolbar-height: 44px;\n --f7-toolbar-font-size: 17px;\n --f7-toolbar-inner-padding-left: 8px;\n --f7-toolbar-inner-padding-right: 8px;\n --f7-toolbar-link-font-weight: 400;\n /*\n --f7-toolbar-link-height: var(--f7-toolbar-height);\n --f7-toolbar-link-line-height: var(--f7-toolbar-height);\n --f7-tabbar-link-active-color: var(--f7-theme-color);\n */\n --f7-tabbar-icons-height: 50px;\n --f7-tabbar-icons-tablet-height: 50px;\n --f7-tabbar-icon-size: 28px;\n --f7-tabbar-link-text-transform: none;\n --f7-tabbar-link-font-weight: 400;\n --f7-tabbar-link-letter-spacing: 0;\n --f7-tabbar-label-font-size: 12px;\n --f7-tabbar-label-tablet-font-size: 14px;\n --f7-tabbar-label-font-weight: 500;\n --f7-tabbar-label-letter-spacing: 0.01;\n --f7-tabbar-link-inactive-color: rgba(0, 0, 0, 0.4);\n}\n.ios .dark,\n.ios.dark {\n --f7-tabbar-link-inactive-color: rgba(255, 255, 255, 0.54);\n}\n.md {\n --f7-toolbar-height: 56px;\n --f7-toolbar-font-size: 14px;\n --f7-toolbar-inner-padding-left: 0px;\n --f7-toolbar-inner-padding-right: 0px;\n /*\n --f7-toolbar-link-height: var(--f7-toolbar-height);\n --f7-toolbar-link-line-height: var(--f7-toolbar-height);\n */\n --f7-tabbar-icons-height: 80px;\n --f7-tabbar-icons-tablet-height: 80px;\n --f7-tabbar-icon-size: 24px;\n --f7-tabbar-link-text-transform: none;\n --f7-tabbar-link-font-weight: 500;\n --f7-tabbar-link-letter-spacing: 0;\n --f7-toolbar-link-font-weight: 500;\n --f7-tabbar-label-font-size: 12px;\n --f7-tabbar-label-tablet-font-size: 12px;\n --f7-tabbar-label-font-weight: 500;\n --f7-tabbar-label-letter-spacing: 0;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-tabbar-link-active-color: var(--f7-md-on-secondary-container);\n --f7-tabbar-link-active-border-color: var(--f7-md-primary);\n --f7-tabbar-link-inactive-color: var(--f7-md-on-surface-variant);\n --f7-tabbar-link-active-icon-bg-color: var(--f7-md-secondary-container);\n}\n.toolbar {\n width: 100%;\n position: relative;\n margin: 0;\n transform: translate3d(0, 0, 0);\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n z-index: 600;\n box-sizing: border-box;\n left: 0;\n height: var(--f7-toolbar-height);\n background-color: var(--f7-toolbar-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-toolbar-text-color, var(--f7-bars-text-color));\n font-size: var(--f7-toolbar-font-size);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .toolbar {\n background-color: rgba(var(--f7-toolbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.toolbar b {\n font-weight: 600;\n}\n.toolbar a {\n color: var(--f7-toolbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n box-sizing: border-box;\n flex-shrink: 1;\n position: relative;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.toolbar .link {\n display: flex;\n line-height: var(--f7-toolbar-link-line-height, var(--f7-toolbar-height));\n height: var(--f7-toolbar-link-height, var(--f7-toolbar-height));\n font-weight: var(--f7-toolbar-link-font-weight);\n}\n.toolbar i.icon {\n display: block;\n}\n.toolbar:after,\n.toolbar:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.views > .toolbar,\n.view > .toolbar,\n.page > .toolbar {\n position: absolute;\n}\n.toolbar-top,\n.ios .toolbar-top-ios,\n.md .toolbar-top-md {\n top: 0;\n}\n.toolbar-top .tab-link-highlight,\n.ios .toolbar-top-ios .tab-link-highlight,\n.md .toolbar-top-md .tab-link-highlight {\n bottom: 0;\n}\n.toolbar-top.no-outline:after,\n.ios .toolbar-top-ios.no-outline:after,\n.md .toolbar-top-md.no-outline:after {\n display: none !important;\n}\n.toolbar-top.toolbar-hidden:before,\n.ios .toolbar-top-ios.toolbar-hidden:before,\n.md .toolbar-top-md.toolbar-hidden:before {\n display: none !important;\n}\n.toolbar-top:after,\n.ios .toolbar-top-ios:after,\n.md .toolbar-top-md:after,\n.toolbar-top:before,\n.ios .toolbar-top-ios:before,\n.md .toolbar-top-md:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.toolbar-top:after,\n.ios .toolbar-top-ios:after,\n.md .toolbar-top-md:after {\n content: '';\n position: absolute;\n background-color: var(--f7-toolbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.toolbar-bottom,\n.ios .toolbar-bottom-ios,\n.md .toolbar-bottom-md {\n bottom: 0;\n height: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n}\n.toolbar-bottom .tab-link-highlight,\n.ios .toolbar-bottom-ios .tab-link-highlight,\n.md .toolbar-bottom-md .tab-link-highlight {\n top: 0;\n}\n.toolbar-bottom .toolbar-inner,\n.ios .toolbar-bottom-ios .toolbar-inner,\n.md .toolbar-bottom-md .toolbar-inner {\n height: auto;\n top: 0;\n bottom: var(--f7-safe-area-bottom);\n}\n.toolbar-bottom.no-outline:before,\n.ios .toolbar-bottom-ios.no-outline:before,\n.md .toolbar-bottom-md.no-outline:before {\n display: none !important;\n}\n.toolbar-bottom.toolbar-hidden:after,\n.ios .toolbar-bottom-ios.toolbar-hidden:after,\n.md .toolbar-bottom-md.toolbar-hidden:after {\n display: none !important;\n}\n.toolbar-bottom:before,\n.ios .toolbar-bottom-ios:before,\n.md .toolbar-bottom-md:before {\n content: '';\n position: absolute;\n background-color: var(--f7-toolbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.toolbar-inner {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n align-content: center;\n overflow: hidden;\n padding: 0 calc(var(--f7-toolbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-toolbar-inner-padding-left) + var(--f7-safe-area-left));\n}\n.views > .tabbar,\n.views > .tabbar-icons {\n z-index: 5001;\n}\n.tabbar a,\n.tabbar-icons a {\n color: var(--f7-tabbar-link-inactive-color);\n}\n.tabbar .link,\n.tabbar-icons .link {\n line-height: 1.4;\n}\n.tabbar .tab-link,\n.tabbar-icons .tab-link,\n.tabbar .link,\n.tabbar-icons .link {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n text-transform: var(--f7-tabbar-link-text-transform);\n font-weight: var(--f7-tabbar-link-font-weight);\n letter-spacing: var(--f7-tabbar-link-letter-spacing);\n overflow: hidden;\n}\n.tabbar .tab-link-active,\n.tabbar-icons .tab-link-active {\n color: var(--f7-tabbar-link-active-color, var(--f7-theme-color));\n background-color: var(--f7-tabbar-link-active-bg-color, transparent);\n}\n.tabbar i.icon,\n.tabbar-icons i.icon {\n font-size: var(--f7-tabbar-icon-size);\n height: var(--f7-tabbar-icon-size);\n line-height: var(--f7-tabbar-icon-size);\n}\n.md .tabbar.tabbar-icons .tab-link-highlight,\n.md .tabbar-icons.tabbar-icons .tab-link-highlight {\n display: none;\n}\n.md .tabbar:not(.tabbar-icons) .tab-link-highlight,\n.md .tabbar-icons:not(.tabbar-icons) .tab-link-highlight {\n position: absolute;\n height: 2px;\n background: var(--f7-tabbar-link-active-border-color, var(--f7-theme-color));\n transition-duration: 300ms;\n left: 0;\n}\n.tabbar-icons {\n --f7-toolbar-height: var(--f7-tabbar-icons-height);\n}\n.tabbar-icons .tab-link,\n.tabbar-icons .link {\n height: 100%;\n justify-content: center;\n align-items: center;\n}\n.tabbar-icons .tabbar-label {\n display: block;\n line-height: 1;\n margin: 0;\n position: relative;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--f7-tabbar-label-font-size);\n text-transform: var(--f7-tabbar-label-text-transform);\n font-weight: var(--f7-tabbar-label-font-weight);\n letter-spacing: var(--f7-tabbar-label-letter-spacing);\n}\n@media (min-width: 768px) and (min-height: 600px) {\n :root {\n --f7-tabbar-icons-height: var(--f7-tabbar-icons-tablet-height);\n --f7-tabbar-label-font-size: var(--f7-tabbar-label-tablet-font-size);\n }\n}\n.tabbar-scrollable .toolbar-inner {\n justify-content: flex-start;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.tabbar-scrollable .toolbar-inner::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.tabbar-scrollable .toolbar-inner::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.tabbar-scrollable .tab-link,\n.tabbar-scrollable .link {\n width: auto;\n flex-shrink: 0;\n}\n.toolbar-transitioning,\n.navbar-transitioning + .toolbar,\n.navbar-transitioning ~ * .toolbar {\n transition-duration: var(--f7-toolbar-hide-show-transition-duration);\n}\n.toolbar-bottom ~ *,\n.ios .toolbar-bottom-ios ~ *,\n.md .toolbar-bottom-md ~ * {\n --f7-page-toolbar-bottom-offset: var(--f7-toolbar-height);\n}\n.toolbar-bottom.tabbar-icons ~ *,\n.ios .toolbar-bottom-ios.tabbar-icons ~ *,\n.md .toolbar-bottom-md.tabbar-icons ~ * {\n --f7-page-toolbar-bottom-offset: var(--f7-tabbar-icons-height);\n}\n.toolbar-bottom.toolbar-hidden,\n.ios .toolbar-bottom-ios.toolbar-hidden,\n.md .toolbar-bottom-md.toolbar-hidden {\n transform: translate3d(0, 100%, 0);\n}\n.toolbar-top ~ *,\n.ios .toolbar-top-ios ~ *,\n.md .toolbar-top-md ~ * {\n --f7-page-toolbar-top-offset: var(--f7-toolbar-height);\n}\n.toolbar-top.tabbar-icons ~ *,\n.ios .toolbar-top-ios.tabbar-icons ~ *,\n.md .toolbar-top-md.tabbar-icons ~ * {\n --f7-page-toolbar-top-offset: var(--f7-tabbar-icons-height);\n}\n.toolbar-top.toolbar-hidden,\n.ios .toolbar-top-ios.toolbar-hidden,\n.md .toolbar-top-md.toolbar-hidden {\n transform: translate3d(0, -100%, 0);\n}\n.navbar ~ .toolbar-top,\n.navbars ~ .toolbar-top,\n.ios .navbar ~ .toolbar-top-ios,\n.ios .navbars ~ .toolbar-top-ios,\n.md .navbar ~ .toolbar-top-md,\n.navbar ~ * .toolbar-top,\n.navbars ~ * .toolbar-top,\n.ios .navbar ~ * .toolbar-top-ios,\n.ios .navbars ~ * .toolbar-top-ios,\n.md .navbar ~ * .toolbar-top-md,\n.navbar ~ .page:not(.no-navbar) .toolbar-top,\n.navbars ~ .page:not(.no-navbar) .toolbar-top,\n.ios .navbar ~ .page:not(.no-navbar) .toolbar-top-ios,\n.ios .navbars ~ .page:not(.no-navbar) .toolbar-top-ios,\n.md .navbar ~ .page:not(.no-navbar) .toolbar-top-md {\n top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ .toolbar-top.toolbar-hidden,\n.navbars ~ .toolbar-top.toolbar-hidden,\n.ios .navbar ~ .toolbar-top-ios.toolbar-hidden,\n.ios .navbars ~ .toolbar-top-ios.toolbar-hidden,\n.md .navbar ~ .toolbar-top-md.toolbar-hidden,\n.navbar ~ * .toolbar-top.toolbar-hidden,\n.navbars ~ * .toolbar-top.toolbar-hidden,\n.ios .navbar ~ * .toolbar-top-ios.toolbar-hidden,\n.ios .navbars ~ * .toolbar-top-ios.toolbar-hidden,\n.md .navbar ~ * .toolbar-top-md.toolbar-hidden,\n.navbar ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden,\n.navbars ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden,\n.ios .navbar ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,\n.ios .navbars ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden,\n.md .navbar ~ .page:not(.no-navbar) .toolbar-top-md.toolbar-hidden {\n transform: translate3d(0, calc(-1 * (var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top))), 0);\n}\n.navbar ~ .toolbar-top.toolbar-hidden.tabbar-icons,\n.navbars ~ .toolbar-top.toolbar-hidden.tabbar-icons,\n.ios .navbar ~ .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.ios .navbars ~ .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.md .navbar ~ .toolbar-top-md.toolbar-hidden.tabbar-icons,\n.navbar ~ * .toolbar-top.toolbar-hidden.tabbar-icons,\n.navbars ~ * .toolbar-top.toolbar-hidden.tabbar-icons,\n.ios .navbar ~ * .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.ios .navbars ~ * .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.md .navbar ~ * .toolbar-top-md.toolbar-hidden.tabbar-icons,\n.navbar ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,\n.navbars ~ .page:not(.no-navbar) .toolbar-top.toolbar-hidden.tabbar-icons,\n.ios .navbar ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.ios .navbars ~ .page:not(.no-navbar) .toolbar-top-ios.toolbar-hidden.tabbar-icons,\n.md .navbar ~ .page:not(.no-navbar) .toolbar-top-md.toolbar-hidden.tabbar-icons {\n transform: translate3d(0, calc(-1 * (var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top))), 0);\n}\n.navbar-hidden + .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-hidden + .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-hidden + .toolbar-top-md:not(.toolbar-hidden),\n.navbar-hidden ~ * .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-hidden ~ * .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-hidden ~ * .toolbar-top-md:not(.toolbar-hidden) {\n transform: translate3d(0, calc(0px - var(--f7-navbar-height)), 0);\n}\n.navbar-large-hidden + .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-large-hidden + .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-large-hidden + .toolbar-top-md:not(.toolbar-hidden),\n.navbar-large-hidden ~ * .toolbar-top:not(.toolbar-hidden),\n.ios .navbar-large-hidden ~ * .toolbar-top-ios:not(.toolbar-hidden),\n.md .navbar-large-hidden ~ * .toolbar-top-md:not(.toolbar-hidden) {\n transform: translate3d(0, calc(0px - var(--f7-navbar-height) - var(--f7-navbar-large-title-height)), 0);\n}\n.ios .toolbar a.icon-only {\n min-height: var(--f7-toolbar-height);\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 0;\n min-width: 44px;\n}\n.ios .tabbar-icons .tab-link,\n.ios .tabbar-icons .link {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n.ios .tabbar-icons .tab-link i + span,\n.ios .tabbar-icons .link i + span {\n margin: 0;\n margin-top: 4px;\n}\n@media (min-width: 768px) and (min-height: 600px) {\n .ios .tabbar .tab-link,\n .ios .tabbar-icons .tab-link,\n .ios .tabbar .link,\n .ios .tabbar-icons .link {\n justify-content: center;\n flex-direction: row;\n }\n .ios .tabbar .tab-link i + span,\n .ios .tabbar-icons .tab-link i + span,\n .ios .tabbar .link i + span,\n .ios .tabbar-icons .link i + span {\n margin-left: 5px;\n }\n}\n.ios .tabbar-scrollable .toolbar-inner {\n justify-content: flex-start;\n}\n.ios .tabbar-scrollable .tab-link,\n.ios .tabbar-scrollable .link {\n padding: 0 8px;\n}\n.md .toolbar .link {\n justify-content: center;\n padding: 0 12px;\n min-width: 48px;\n}\n.md .toolbar a.icon-only {\n min-width: 0;\n flex-shrink: 0;\n}\n.md .tabbar .tab-link,\n.md .tabbar-icons .tab-link,\n.md .tabbar .link,\n.md .tabbar-icons .link {\n padding-left: 0;\n padding-right: 0;\n}\n.md .tabbar a.icon-only,\n.md .tabbar-icons a.icon-only {\n flex-shrink: initial;\n}\n.md .tabbar .tab-link,\n.md .tabbar-icons .tab-link {\n transition-duration: 300ms;\n overflow: hidden;\n position: relative;\n}\n.md .tabbar i.icon,\n.md .tabbar-icons i.icon {\n position: relative;\n}\n.md .tabbar i.icon::before,\n.md .tabbar-icons i.icon::before {\n content: '';\n width: 64px;\n height: 32px;\n border-radius: 32px;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translateX(-50%) translateY(-50%) scaleX(0.5);\n background: var(--f7-tabbar-link-active-icon-bg-color);\n opacity: 0;\n transition-duration: 200ms;\n z-index: -1;\n}\n.md .tabbar i.icon + .tabbar-label,\n.md .tabbar-icons i.icon + .tabbar-label {\n margin-top: 8px;\n}\n.md .tabbar .tab-link-active i.icon::before,\n.md .tabbar-icons .tab-link-active i.icon::before {\n opacity: 1;\n transform: translateX(-50%) translateY(-50%) scaleX(1);\n}\n.md .tabbar-icons .tab-link,\n.md .tabbar-icons .link {\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.md .tabbar-label {\n max-width: 100%;\n overflow: hidden;\n line-height: 1.2;\n}\n.md .tabbar-scrollable .toolbar-inner {\n overflow: auto;\n}\n.md .tabbar-scrollable .tab-link,\n.md .tabbar-scrollable .link {\n padding: 0 12px;\n}\n/* === Subnavbar === */\n:root {\n /*\n --f7-subnavbar-bg-color: var(--f7-bars-bg-color);\n --f7-subnavbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-subnavbar-border-color: var(--f7-bars-border-color);\n --f7-subnavbar-link-color: var(--f7-bars-link-color);\n --f7-subnavbar-text-color: var(--f7-bars-text-color);\n */\n --f7-subnavbar-title-line-height: 1.2;\n}\n.ios {\n --f7-subnavbar-height: 44px;\n --f7-subnavbar-inner-padding-left: 8px;\n --f7-subnavbar-inner-padding-right: 8px;\n --f7-subnavbar-title-font-size: 34px;\n --f7-subnavbar-title-font-weight: 700;\n --f7-subnavbar-title-letter-spacing: -0.03em;\n --f7-subnavbar-title-margin-left: 8px;\n /*\n --f7-subnavbar-link-height: var(--f7-subnavbar-height);\n --f7-subnavbar-link-line-height: var(--f7-subnavbar-height);\n */\n}\n.md {\n --f7-subnavbar-height: 64px;\n --f7-subnavbar-inner-padding-left: 16px;\n --f7-subnavbar-inner-padding-right: 16px;\n --f7-subnavbar-title-font-size: 22px;\n --f7-subnavbar-title-font-weight: 400;\n --f7-subnavbar-title-letter-spacing: 0;\n --f7-subnavbar-title-margin-left: 0px;\n /*\n --f7-subnavbar-link-height: var(--f7-subnavbar-height);\n --f7-subnavbar-link-line-height: var(--f7-subnavbar-height);\n */\n}\n.subnavbar {\n width: 100%;\n position: absolute;\n left: 0;\n top: 0;\n z-index: 600;\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background-color: var(--f7-subnavbar-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-subnavbar-text-color, var(--f7-bars-text-color));\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .subnavbar {\n background-color: rgba(var(--f7-subnavbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.subnavbar .subnavbar-title {\n position: relative;\n overflow: hidden;\n text-overflow: ellpsis;\n white-space: nowrap;\n font-size: var(--f7-subnavbar-title-font-size);\n font-weight: var(--f7-subnavbar-title-font-weight);\n text-align: left;\n display: inline-block;\n line-height: var(--f7-subnavbar-title-line-height);\n letter-spacing: var(--f7-subnavbar-title-letter-spacing);\n margin-left: var(--f7-subnavbar-title-margin-left);\n}\n.subnavbar .left,\n.subnavbar .right {\n flex-shrink: 0;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.subnavbar .right:first-child {\n position: absolute;\n height: 100%;\n}\n.subnavbar a {\n color: var(--f7-subnavbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.subnavbar a.link {\n line-height: var(--f7-subnavbar-link-line-height, var(--f7-subnavbar-height));\n height: var(--f7-subnavbar-link-height, var(--f7-subnavbar-height));\n}\n.subnavbar a.icon-only {\n min-width: var(--f7-subnavbar-height);\n}\n.subnavbar.no-outline:after {\n display: none !important;\n}\n.subnavbar.navbar-hidden:before {\n display: none !important;\n}\n.subnavbar:after,\n.subnavbar:before {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.subnavbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-subnavbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.subnavbar-inner {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n justify-content: space-between;\n overflow: hidden;\n padding: 0 calc(var(--f7-subnavbar-inner-padding-left) + var(--f7-safe-area-right)) 0 calc(var(--f7-subnavbar-inner-padding-right) + var(--f7-safe-area-left));\n}\n.navbar .subnavbar {\n top: 100%;\n}\n.views > .subnavbar,\n.view > .subnavbar,\n.page > .subnavbar {\n position: absolute;\n}\n.navbar ~ * .subnavbar,\n.navbars ~ * .subnavbar,\n.page-with-subnavbar .navbar ~ .subnavbar,\n.page-with-subnavbar .navbar ~ * .subnavbar,\n.navbar ~ .page-with-subnavbar:not(.no-navbar) .subnavbar,\n.navbar ~ .subnavbar,\n.navbars ~ .page-with-subnavbar:not(.no-navbar) .subnavbar,\n.navbars ~ .subnavbar {\n top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ .page-with-navbar-large:not(.no-navbar) .subnavbar,\n.navbars ~ .page-with-navbar-large:not(.no-navbar) .subnavbar,\n.page-with-subnavbar.page-with-navbar-large .navbar ~ .subnavbar,\n.page-with-subnavbar.page-with-navbar-large .navbar ~ * .subnavbar,\n.navbar .title-large ~ .subnavbar {\n top: calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));\n transform: translate3d(0, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.page-with-subnavbar,\n.subnavbar ~ * {\n --f7-page-subnavbar-offset: var(--f7-subnavbar-height);\n}\n.ios .subnavbar {\n height: calc(var(--f7-subnavbar-height) + 1px);\n margin-top: -1px;\n padding-top: 1px;\n}\n.ios .subnavbar .title {\n align-self: flex-start;\n flex-shrink: 10;\n}\n.ios .subnavbar .left a + a,\n.ios .subnavbar .right a + a {\n margin-left: 16px;\n}\n.ios .subnavbar .left {\n margin-right: 10px;\n}\n.ios .subnavbar .right {\n margin-left: 10px;\n}\n.ios .subnavbar .right:first-child {\n right: 8px;\n}\n.ios .subnavbar a.link {\n justify-content: flex-start;\n}\n.ios .subnavbar a.icon-only {\n justify-content: center;\n margin: 0;\n}\n.md .subnavbar {\n height: var(--f7-subnavbar-height);\n}\n.md .subnavbar .right {\n margin-left: auto;\n}\n.md .subnavbar .right:first-child {\n right: 16px;\n}\n.md .subnavbar a.link {\n justify-content: center;\n padding: 0 12px;\n}\n.md .subnavbar a.icon-only {\n flex-shrink: 0;\n padding: 0 12px;\n}\n.md .subnavbar-inner > a.link:first-child {\n margin-left: calc(-1 * var(--f7-subnavbar-inner-padding-left));\n}\n.md .subnavbar-inner > a.link:last-child {\n margin-right: calc(-1 * var(--f7-subnavbar-inner-padding-right));\n}\n/* === Content Block === */\n:root {\n --f7-block-padding-horizontal: 16px;\n --f7-block-padding-vertical: 16px;\n --f7-block-font-size: inherit;\n --f7-block-header-margin: 10px;\n --f7-block-footer-margin: 10px;\n --f7-block-header-font-size: 14px;\n --f7-block-footer-font-size: 14px;\n --f7-block-title-text-transform: none;\n --f7-block-title-white-space: nowrap;\n --f7-block-title-medium-text-transform: none;\n --f7-block-title-large-text-transform: none;\n --f7-block-inset-side-margin: 16px;\n}\n:root .dark,\n:root.dark {\n --f7-block-outline-border-color: rgba(255, 255, 255, 0.15);\n}\n.ios {\n --f7-block-text-color: inherit;\n --f7-block-margin-vertical: 35px;\n --f7-block-outline-border-color: rgba(0, 0, 0, 0.22);\n --f7-block-title-font-size: 16px;\n --f7-block-title-font-weight: 600;\n --f7-block-title-line-height: 20px;\n --f7-block-title-margin-bottom: 10px;\n --f7-block-title-medium-font-size: 22px;\n --f7-block-title-medium-font-weight: bold;\n --f7-block-title-medium-line-height: 1.4;\n --f7-block-title-large-font-size: 30px;\n --f7-block-title-large-font-weight: bold;\n --f7-block-title-large-line-height: 1.3;\n --f7-block-inset-border-radius: 8px;\n --f7-block-title-text-color: #000;\n --f7-block-strong-text-color: #000;\n --f7-block-header-text-color: rgba(0, 0, 0, 0.45);\n --f7-block-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-block-strong-bg-color: #fff;\n --f7-block-title-medium-text-color: #000;\n --f7-block-title-large-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-block-title-text-color: #fff;\n --f7-block-header-text-color: rgba(255, 255, 255, 0.55);\n --f7-block-footer-text-color: rgba(255, 255, 255, 0.55);\n --f7-block-strong-text-color: #fff;\n --f7-block-strong-bg-color: #1c1c1d;\n --f7-block-title-medium-text-color: #fff;\n --f7-block-title-large-text-color: #fff;\n}\n.md {\n --f7-block-margin-vertical: 32px;\n --f7-block-title-font-size: inherit;\n --f7-block-title-font-weight: 500;\n --f7-block-title-line-height: 16px;\n --f7-block-title-margin-bottom: 16px;\n --f7-block-title-medium-font-size: 16px;\n --f7-block-title-medium-font-weight: 500;\n --f7-block-title-medium-line-height: 1.3;\n --f7-block-title-large-font-size: 22px;\n --f7-block-title-large-font-weight: 500;\n --f7-block-title-large-line-height: 1.2;\n --f7-block-inset-border-radius: 16px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-block-text-color: var(--f7-md-on-surface);\n --f7-block-strong-text-color: var(--f7-md-on-surface);\n --f7-block-outline-border-color: var(--f7-md-outline);\n --f7-block-title-text-color: var(--f7-theme-color);\n --f7-block-title-medium-text-color: var(--f7-theme-color);\n --f7-block-title-large-text-color: var(--f7-theme-color);\n --f7-block-strong-bg-color: var(--f7-md-surface-1);\n --f7-block-header-text-color: var(--f7-md-on-surface-variant);\n --f7-block-footer-text-color: var(--f7-md-on-surface-variant);\n}\n.block {\n box-sizing: border-box;\n position: relative;\n z-index: 1;\n color: var(--f7-block-text-color);\n margin: var(--f7-block-margin-vertical) 0;\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));\n font-size: var(--f7-block-font-size);\n}\n.block > h1:first-child,\n.block > h2:first-child,\n.block > h3:first-child,\n.block > h4:first-child,\n.block > p:first-child {\n margin-top: 0;\n}\n.block > h1:last-child,\n.block > h2:last-child,\n.block > h3:last-child,\n.block > h4:last-child,\n.block > p:last-child {\n margin-bottom: 0;\n}\n.block-strong,\n.ios .block-strong-ios,\n.md .block-strong-md {\n color: var(--f7-block-strong-text-color);\n padding-top: var(--f7-block-padding-vertical);\n padding-bottom: var(--f7-block-padding-vertical);\n background-color: var(--f7-block-strong-bg-color);\n}\n.block-outline:not(.inset):before,\n.ios .block-outline-ios:not(.inset):not(.inset-ios):before,\n.md .block-outline-md:not(.inset):not(.inset-md):before {\n content: '';\n position: absolute;\n background-color: var(--f7-block-outline-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.block-outline:not(.inset):after,\n.ios .block-outline-ios:not(.inset):not(.inset-ios):after,\n.md .block-outline-md:not(.inset):not(.inset-md):after {\n content: '';\n position: absolute;\n background-color: var(--f7-block-outline-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.block-outline.inset,\n.ios .block-outline-ios.inset,\n.ios .block-outline-ios.inset-ios,\n.md .block-outline-md.inset,\n.md .block-outline-md.inset-md {\n border: 1px solid var(--f7-block-outline-border-color);\n}\n.block-title {\n position: relative;\n overflow: hidden;\n margin: 0;\n white-space: var(--f7-block-title-white-space);\n text-overflow: ellipsis;\n text-transform: var(--f7-block-title-text-transform);\n color: var(--f7-block-title-text-color);\n font-size: var(--f7-block-title-font-size, inherit);\n font-weight: var(--f7-block-title-font-weight);\n line-height: var(--f7-block-title-line-height);\n margin-top: var(--f7-block-margin-vertical);\n margin-bottom: var(--f7-block-title-margin-bottom);\n margin-left: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));\n margin-right: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));\n}\n.block-title + .list,\n.block-title + .block,\n.block-title + .card,\n.block-title + .timeline,\n.block-title + .block-header {\n margin-top: 0px;\n}\n.block-title-medium {\n font-size: var(--f7-block-title-medium-font-size);\n text-transform: var(--f7-block-title-medium-text-transform);\n color: var(--f7-block-title-medium-text-color);\n font-weight: var(--f7-block-title-medium-font-weight);\n line-height: var(--f7-block-title-medium-line-height);\n}\n.block-title-large {\n font-size: var(--f7-block-title-large-font-size);\n text-transform: var(--f7-block-title-large-text-transform);\n color: var(--f7-block-title-large-text-color);\n font-weight: var(--f7-block-title-large-font-weight);\n line-height: var(--f7-block-title-large-line-height);\n}\n.block > .block-title:first-child,\n.list > .block-title:first-child {\n margin-top: 0;\n margin-left: 0;\n margin-right: 0;\n}\n.block-header {\n color: var(--f7-block-header-text-color);\n font-size: var(--f7-block-header-font-size);\n margin-bottom: var(--f7-block-header-margin);\n margin-top: var(--f7-block-margin-vertical);\n}\n.block-header + .list,\n.block-header + .block,\n.block-header + .card,\n.block-header + .timeline {\n margin-top: var(--f7-block-header-margin);\n}\n.block-footer {\n color: var(--f7-block-footer-text-color);\n font-size: var(--f7-block-footer-font-size);\n margin-top: var(--f7-block-footer-margin);\n margin-bottom: var(--f7-block-margin-vertical);\n}\n.block-footer,\n.block-header {\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-block-padding-horizontal) + var(--f7-safe-area-right));\n}\n.block-footer ul:first-child,\n.block-header ul:first-child,\n.block-footer p:first-child,\n.block-header p:first-child,\n.block-footer h1:first-child,\n.block-header h1:first-child,\n.block-footer h2:first-child,\n.block-header h2:first-child,\n.block-footer h3:first-child,\n.block-header h3:first-child,\n.block-footer h4:first-child,\n.block-header h4:first-child {\n margin-top: 0;\n}\n.block-footer ul:last-child,\n.block-header ul:last-child,\n.block-footer p:last-child,\n.block-header p:last-child,\n.block-footer h1:last-child,\n.block-header h1:last-child,\n.block-footer h2:last-child,\n.block-header h2:last-child,\n.block-footer h3:last-child,\n.block-header h3:last-child,\n.block-footer h4:last-child,\n.block-header h4:last-child {\n margin-bottom: 0;\n}\n.block-footer ul:first-child:last-child,\n.block-header ul:first-child:last-child,\n.block-footer p:first-child:last-child,\n.block-header p:first-child:last-child,\n.block-footer h1:first-child:last-child,\n.block-header h1:first-child:last-child,\n.block-footer h2:first-child:last-child,\n.block-header h2:first-child:last-child,\n.block-footer h3:first-child:last-child,\n.block-header h3:first-child:last-child,\n.block-footer h4:first-child:last-child,\n.block-header h4:first-child:last-child {\n margin-top: 0;\n margin-bottom: 0;\n}\n.list .block-header,\n.block .block-header,\n.card .block-header,\n.timeline .block-header {\n margin-top: 0;\n}\n.list .block-footer,\n.block .block-footer,\n.card .block-footer,\n.timeline .block-footer {\n margin-bottom: 0;\n}\n.list + .block-footer,\n.block + .block-footer,\n.card + .block-footer,\n.timeline + .block-footer {\n margin-top: calc(-1 * (var(--f7-block-margin-vertical) - var(--f7-block-footer-margin)));\n}\n.block + .block-footer {\n margin-top: calc(-1 * (var(--f7-block-margin-vertical) - var(--f7-block-footer-margin)));\n margin-bottom: var(--f7-block-margin-vertical);\n}\n.block .block-header,\n.block .block-footer {\n padding: 0;\n}\n.block.inset,\n.ios .block.inset-ios,\n.md .block.inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n}\n.block-strong.inset:before,\n.ios .block-strong-ios.inset:before,\n.md .block-strong-md.inset:before,\n.ios .block-strong.inset-ios:before,\n.md .block-strong.inset-md:before,\n.ios .block-strong-ios.inset-ios:before,\n.md .block-strong-md.inset-md:before,\n.block-strong.inset:after,\n.ios .block-strong-ios.inset:after,\n.md .block-strong-md.inset:after,\n.ios .block-strong.inset-ios:after,\n.md .block-strong.inset-md:after,\n.ios .block-strong-ios.inset-ios:after,\n.md .block-strong-md.inset-md:after {\n display: none !important;\n}\n@media (min-width: 480px) {\n .block.xsmall-inset,\n .ios .block.xsmall-inset-ios,\n .md .block.xsmall-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.xsmall-inset:before,\n .ios .block.xsmall-inset-ios:before,\n .md .block.xsmall-inset-md:before,\n .block.xsmall-inset:after,\n .ios .block.xsmall-inset-ios:after,\n .md .block.xsmall-inset-md:after {\n display: none !important;\n }\n .block.xsmall-inset.block-outline,\n .ios .block.xsmall-inset-ios.block-outline,\n .ios .block.xsmall-inset-ios.block-outline-ios,\n .md .block.xsmall-inset-md.block-outline,\n .md .block.xsmall-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 568px) {\n .block.small-inset,\n .ios .block.small-inset-ios,\n .md .block.small-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.small-inset:before,\n .ios .block.small-inset-ios:before,\n .md .block.small-inset-md:before,\n .block.small-inset:after,\n .ios .block.small-inset-ios:after,\n .md .block.small-inset-md:after {\n display: none !important;\n }\n .block.small-inset.block-outline,\n .ios .block.small-inset-ios.block-outline,\n .ios .block.small-inset-ios.block-outline-ios,\n .md .block.small-inset-md.block-outline,\n .md .block.small-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 768px) {\n .block.medium-inset,\n .ios .block.medium-inset-ios,\n .md .block.medium-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.medium-inset:before,\n .ios .block.medium-inset-ios:before,\n .md .block.medium-inset-md:before,\n .block.medium-inset:after,\n .ios .block.medium-inset-ios:after,\n .md .block.medium-inset-md:after {\n display: none !important;\n }\n .block.medium-inset.block-outline,\n .ios .block.medium-inset-ios.block-outline,\n .ios .block.medium-inset-ios.block-outline-ios,\n .md .block.medium-inset-md.block-outline,\n .md .block.medium-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 1024px) {\n .block.large-inset,\n .ios .block.large-inset-ios,\n .md .block.large-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.large-inset:before,\n .ios .block.large-inset-ios:before,\n .md .block.large-inset-md:before,\n .block.large-inset:after,\n .ios .block.large-inset-ios:after,\n .md .block.large-inset-md:after {\n display: none !important;\n }\n .block.large-inset.block-outline,\n .ios .block.large-inset-ios.block-outline,\n .ios .block.large-inset-ios.block-outline-ios,\n .md .block.large-inset-md.block-outline,\n .md .block.large-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n@media (min-width: 1200px) {\n .block.xlarge-inset,\n .ios .block.xlarge-inset-ios,\n .md .block.xlarge-inset-md {\n border-radius: var(--f7-block-inset-border-radius);\n margin-left: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-block-inset-side-margin) + var(--f7-safe-area-outer-right));\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .block.xlarge-inset:before,\n .ios .block.xlarge-inset-ios:before,\n .md .block.xlarge-inset-md:before,\n .block.xlarge-inset:after,\n .ios .block.xlarge-inset-ios:after,\n .md .block.xlarge-inset-md:after {\n display: none !important;\n }\n .block.xlarge-inset.block-outline,\n .ios .block.xlarge-inset-ios.block-outline,\n .ios .block.xlarge-inset-ios.block-outline-ios,\n .md .block.xlarge-inset-md.block-outline,\n .md .block.xlarge-inset-md.block-outline-md {\n border: 1px solid var(--f7-block-outline-border-color);\n }\n}\n/* === List View === */\n:root {\n --f7-list-inset-side-margin: 16px;\n --f7-list-item-padding-horizontal: 16px;\n --f7-list-item-padding-vertical: 8px;\n --f7-list-media-item-padding-horizontal: 16px;\n --f7-list-item-text-max-lines: 2;\n --f7-list-chevron-icon-font-size: 20px;\n --f7-list-item-media-margin: 16px;\n --f7-list-item-title-font-size: inherit;\n --f7-list-item-title-font-weight: 400;\n --f7-list-item-title-line-height: inherit;\n --f7-list-item-title-white-space: nowrap;\n --f7-list-item-subtitle-font-weight: 400;\n --f7-list-item-subtitle-line-height: inherit;\n --f7-list-item-text-font-weight: 400;\n --f7-list-item-after-font-weight: 400;\n --f7-list-item-after-line-height: inherit;\n --f7-list-item-header-font-size: 12px;\n --f7-list-item-header-font-weight: 400;\n --f7-list-item-header-line-height: 1.2;\n --f7-list-item-footer-font-size: 12px;\n --f7-list-item-footer-font-weight: 400;\n --f7-list-item-footer-line-height: 1.2;\n /*\n --f7-list-button-text-color: var(--f7-theme-color);\n */\n --f7-list-button-font-size: inherit;\n --f7-list-button-font-weight: 400;\n --f7-list-button-text-align: center;\n --f7-list-group-title-line-height: inherit;\n --f7-menu-list-font-size: 14px;\n --f7-menu-list-item-title-font-size: 14px;\n --f7-menu-list-item-title-font-weight: 500;\n --f7-menu-list-item-subtitle-font-size: 14px;\n --f7-menu-list-item-text-font-size: 14px;\n --f7-menu-list-item-after-font-size: 14px;\n --f7-list-outline-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-chevron-icon-color: rgba(0, 0, 0, 0.2);\n}\n:root .dark,\n:root.dark {\n --f7-list-button-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-outline-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-group-title-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-chevron-icon-color: rgba(255, 255, 255, 0.3);\n}\n.ios {\n --f7-list-in-list-padding-left: 30px;\n --f7-list-inset-border-radius: 8px;\n --f7-list-margin-vertical: 35px;\n --f7-list-font-size: 17px;\n --f7-list-chevron-icon-area: 20px;\n --f7-list-item-title-text-color: inherit;\n --f7-list-item-subtitle-text-color: inherit;\n --f7-list-link-pressed-bg-color: rgba(0, 0, 0, 0.15);\n --f7-list-item-subtitle-font-size: 15px;\n --f7-list-item-text-font-size: 15px;\n --f7-list-item-text-line-height: 21px;\n --f7-list-item-after-font-size: inherit;\n --f7-list-item-after-padding: 5px;\n --f7-list-item-min-height: 44px;\n --f7-list-item-media-icons-margin: 5px;\n --f7-list-media-item-padding-vertical: 10px;\n --f7-list-media-item-title-font-weight: 600;\n --f7-list-button-border-color: rgba(0, 0, 0, 0.22);\n /*\n --f7-list-button-pressed-bg-color: rgba(var(--f7-theme-color-rgb), .15);\n */\n --f7-list-group-title-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-group-title-height: 31px;\n --f7-list-group-title-font-size: inherit;\n --f7-list-group-title-font-weight: 400;\n --f7-menu-list-offset: 8px;\n --f7-menu-list-border-radius: 8px;\n --f7-menu-list-item-bg-color: transparent;\n --f7-menu-list-item-text-color: inherit;\n --f7-menu-list-item-min-height: 44px;\n --f7-list-item-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-outline-inset-border-color: rgba(0, 0, 0, 0.22);\n --f7-list-strong-bg-color: #fff;\n --f7-list-item-after-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-item-header-text-color: inherit;\n --f7-list-item-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-item-text-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-group-title-text-color: rgba(0, 0, 0, 0.45);\n --f7-list-group-title-bg-color: #f7f7f7;\n --f7-menu-list-item-selected-text-color: var(--f7-theme-color);\n --f7-menu-list-item-selected-bg-color: rgba(var(--f7-theme-color-rgb), 0.15);\n}\n.ios .dark,\n.ios.dark {\n --f7-list-item-border-color: rgba(255, 255, 255, 0.15);\n --f7-list-outline-inset-color: rgba(255, 255, 255, 0.15);\n --f7-list-strong-bg-color: #1c1c1d;\n --f7-list-item-after-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-item-header-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-item-footer-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-item-text-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-group-title-text-color: rgba(255, 255, 255, 0.55);\n --f7-list-group-title-bg-color: #232323;\n --f7-list-link-pressed-bg-color: rgba(255, 255, 255, 0.08);\n --f7-menu-list-item-selected-text-color: inherit;\n --f7-menu-list-item-selected-bg-color: var(--f7-theme-color);\n}\n.md {\n --f7-list-in-list-padding-left: 24px;\n --f7-list-inset-border-radius: 16px;\n --f7-list-margin-vertical: 32px;\n --f7-list-font-size: 16px;\n --f7-list-chevron-icon-area: 26px;\n --f7-list-item-subtitle-font-size: 14px;\n --f7-list-item-text-font-size: 14px;\n --f7-list-item-text-line-height: 20px;\n --f7-list-item-after-font-size: 14px;\n --f7-list-item-after-padding: 8px;\n --f7-list-item-min-height: 48px;\n --f7-list-item-media-icons-margin: 8px;\n --f7-list-media-item-padding-vertical: 12px;\n --f7-list-media-item-title-font-weight: 500;\n --f7-list-button-border-color: transparent;\n /*\n --f7-list-button-pressed-bg-color: transparent;\n */\n --f7-list-group-title-border-color: transparent;\n --f7-list-group-title-height: 48px;\n --f7-list-group-title-font-size: 16px;\n --f7-list-group-title-font-weight: 400;\n --f7-menu-list-offset: 16px;\n --f7-menu-list-border-radius: 999px;\n --f7-menu-list-item-min-height: 56px;\n --f7-list-link-pressed-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-list-outline-inset-border-color: var(--f7-md-outline);\n --f7-list-item-border-color: var(--f7-md-outline);\n --f7-list-item-title-text-color: var(--f7-md-on-surface);\n --f7-list-item-subtitle-text-color: var(--f7-md-on-surface);\n --f7-list-group-title-bg-color: var(--f7-md-surface-2);\n --f7-list-group-title-text-color: var(--f7-md-on-surface-variant);\n --f7-list-strong-bg-color: var(--f7-md-surface-1);\n --f7-list-item-after-text-color: var(--f7-md-on-surface-variant);\n --f7-list-item-text-text-color: var(--f7-md-on-surface-variant);\n --f7-list-item-header-text-color: var(--f7-md-on-surface-variant);\n --f7-list-item-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-menu-list-item-text-color: var(--f7-md-on-surface-variant);\n --f7-menu-list-item-bg-color: var(--f7-md-surface-1);\n --f7-menu-list-item-selected-text-color: var(--f7-md-on-secondary-container);\n --f7-menu-list-item-selected-bg-color: var(--f7-md-secondary-container);\n}\n:root {\n --f7-list-chevron-icon-left: 'chevron_left';\n --f7-list-chevron-icon-right: 'chevron_right';\n}\n.list {\n position: relative;\n z-index: 1;\n font-size: var(--f7-list-font-size);\n margin: var(--f7-list-margin-vertical) 0;\n}\n.list-strong ul,\n.ios .list-strong-ios ul,\n.md .list-strong-md ul {\n background: var(--f7-list-strong-bg-color);\n}\n.list-outline ul:before,\n.ios .list-outline-ios ul:before,\n.md .list-outline-md ul:before {\n content: '';\n position: absolute;\n background-color: var(--f7-list-outline-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-outline ul:after,\n.ios .list-outline-ios ul:after,\n.md .list-outline-md ul:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-outline-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-outline.inset,\n.ios .list-outline-ios.inset,\n.ios .list-outline-ios.inset-ios,\n.md .list-outline-md.inset,\n.md .list-outline-md.inset-md {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n}\n.list ul {\n list-style: none;\n margin: 0;\n padding: 0;\n position: relative;\n}\n.list ul ul {\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-list-in-list-padding-left));\n}\n.list ul ul:before,\n.list ul ul:after {\n display: none !important;\n}\n.list li {\n position: relative;\n box-sizing: border-box;\n}\n.list .item-media {\n display: flex;\n flex-shrink: 0;\n flex-wrap: nowrap;\n align-items: center;\n box-sizing: border-box;\n padding-bottom: var(--f7-list-item-padding-vertical);\n padding-top: var(--f7-list-item-padding-vertical);\n position: relative;\n}\n.list .item-media + .item-inner {\n margin-left: var(--f7-list-item-media-margin);\n}\n.list .item-media i + i,\n.list .item-media i + img {\n margin-left: var(--f7-list-item-media-icons-margin);\n}\n.list .item-after {\n padding-left: var(--f7-list-item-after-padding);\n}\n.list .item-inner {\n position: relative;\n width: 100%;\n min-width: 0;\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n align-self: stretch;\n padding-top: var(--f7-list-item-padding-vertical);\n padding-bottom: var(--f7-list-item-padding-vertical);\n min-height: calc(var(--f7-list-item-min-height));\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.list .item-title {\n min-width: 0;\n flex-shrink: 1;\n white-space: var(--f7-list-item-title-white-space);\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n font-size: var(--f7-list-item-title-font-size);\n font-weight: var(--f7-list-item-title-font-weight);\n color: var(--f7-list-item-title-text-color);\n line-height: var(--f7-list-item-title-line-height);\n}\n.list .item-after {\n white-space: nowrap;\n flex-shrink: 0;\n display: flex;\n font-size: var(--f7-list-item-after-font-size);\n font-weight: var(--f7-list-item-after-font-weight);\n color: var(--f7-list-item-after-text-color);\n line-height: var(--f7-list-item-after-line-height);\n margin-left: auto;\n}\n.list .item-header,\n.list .item-footer {\n white-space: normal;\n}\n.list .item-header {\n color: var(--f7-list-item-header-text-color);\n font-size: var(--f7-list-item-header-font-size);\n font-weight: var(--f7-list-item-header-font-weight);\n line-height: var(--f7-list-item-header-line-height);\n}\n.list .item-footer {\n color: var(--f7-list-item-footer-text-color);\n font-size: var(--f7-list-item-footer-font-size);\n font-weight: var(--f7-list-item-footer-font-weight);\n line-height: var(--f7-list-item-footer-line-height);\n}\n.list .item-link,\n.list label.item-content,\n.list .list-button {\n transition-duration: 300ms;\n transition-property: background-color, color;\n position: relative;\n overflow: hidden;\n z-index: 0;\n cursor: pointer;\n}\n.list .item-link,\n.list .list-button {\n display: block;\n}\n.list .item-link,\n.list label.item-content {\n color: inherit;\n}\n.list .item-link.active-state,\n.list label.item-content.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.list .item-link .item-inner {\n padding-right: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.list .item-content {\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n align-items: center;\n min-height: calc(var(--f7-list-item-min-height));\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.list .item-subtitle {\n position: relative;\n overflow: hidden;\n white-space: nowrap;\n max-width: 100%;\n text-overflow: ellipsis;\n font-size: var(--f7-list-item-subtitle-font-size);\n font-weight: var(--f7-list-item-subtitle-font-weight);\n color: var(--f7-list-item-subtitle-text-color);\n line-height: var(--f7-list-item-subtitle-line-height);\n}\n.list .item-text {\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n /* autoprefixer: ignore next */\n -webkit-line-clamp: var(--f7-list-item-text-max-lines);\n /* autoprefixer: ignore next */\n -webkit-box-orient: vertical;\n display: -webkit-box;\n font-size: var(--f7-list-item-text-font-size);\n font-weight: var(--f7-list-item-text-font-weight);\n color: var(--f7-list-item-text-text-color);\n line-height: var(--f7-list-item-text-line-height);\n max-height: calc(var(--f7-list-item-text-line-height) * var(--f7-list-item-text-max-lines));\n}\n.list .item-title-row {\n position: relative;\n display: flex;\n justify-content: space-between;\n box-sizing: border-box;\n}\n.list .item-title-row .item-after {\n align-self: center;\n}\n.list li:last-child .list-button:after {\n display: none !important;\n}\n.list li:last-child > .item-inner:after,\n.list li:last-child li:last-child > .item-inner:after,\n.list li:last-child > .item-content > .item-inner:after,\n.list li:last-child li:last-child > .item-content > .item-inner:after,\n.list li:last-child > .swipeout-content > .item-content > .item-inner:after,\n.list li:last-child li:last-child > .swipeout-content > .item-content > .item-inner:after,\n.list li:last-child > .item-link > .item-content > .item-inner:after,\n.list li:last-child li:last-child > .item-link > .item-content > .item-inner:after {\n display: none !important;\n}\n.list li li:last-child .item-inner:after,\n.list li:last-child li .item-inner:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-button {\n --f7-touch-ripple-color: var(--f7-link-touch-ripple-color, rgba(var(--f7-theme-color-rgb), 0.25));\n padding: 0 var(--f7-list-item-padding-horizontal);\n line-height: var(--f7-list-item-min-height);\n color: var(--f7-list-button-text-color, var(--f7-theme-color));\n font-size: var(--f7-list-button-font-size);\n font-weight: var(--f7-list-button-font-weight);\n text-align: var(--f7-list-button-text-align);\n}\n.ios .list-button.active-state {\n background-color: var(--f7-list-button-pressed-bg-color, rgba(var(--f7-theme-color-rgb), 0.15));\n}\n.md .list-button.active-state {\n background-color: var(--f7-list-button-pressed-bg-color, transparent);\n}\n.list-dividers .list-button:after,\n.ios .list-dividers-ios .list-button:after,\n.md .list-dividers-md .list-button:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-button-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.list-button[class*='color-'] {\n --f7-list-button-text-color: var(--f7-theme-color);\n}\n.simple-list li {\n position: relative;\n white-space: nowrap;\n text-overflow: ellipsis;\n max-width: 100%;\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n align-items: center;\n align-content: center;\n line-height: var(--f7-list-item-min-height);\n height: var(--f7-list-item-min-height);\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.simple-list li:after {\n left: var(--f7-list-item-padding-horizontal);\n width: auto;\n left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n right: 0;\n}\n.simple-list li:last-child:after {\n display: none !important;\n}\n.links-list li {\n z-index: 1;\n}\n.links-list a {\n transition-duration: 300ms;\n transition-property: background-color;\n display: block;\n position: relative;\n overflow: hidden;\n display: flex;\n align-items: center;\n align-content: center;\n justify-content: space-between;\n box-sizing: border-box;\n white-space: nowrap;\n text-overflow: ellipsis;\n max-width: 100%;\n height: var(--f7-list-item-min-height);\n color: inherit;\n}\n.links-list a .ripple-wave {\n z-index: 0;\n}\n.links-list a:after {\n width: auto;\n}\n.links-list a.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.links-list a {\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.links-list a:after {\n left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n right: 0;\n}\n.links-list li:last-child a:after {\n display: none !important;\n}\n.list-dividers.simple-list li:after,\n.ios .list-dividers-ios.simple-list li:after,\n.md .list-dividers-md.simple-list li:after,\n.list-dividers.links-list a:after,\n.ios .list-dividers-ios.links-list a:after,\n.md .list-dividers-md.links-list a:after,\n.list-dividers .item-inner:after,\n.ios .list-dividers-ios .item-inner:after,\n.md .list-dividers-md .item-inner:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li > .item-link,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item > .item-link {\n margin-left: calc(var(--f7-list-item-padding-horizontal) / 2);\n margin-right: calc(var(--f7-list-item-padding-horizontal) / 2);\n border-radius: 16px;\n}\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) li > .item-link > .item-content,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item > .item-link > .item-content {\n margin-left: 0;\n margin-right: 0;\n}\n.md .media-list:not(.inset):not(.inset-md):not(.menu-list) .item-content,\n.md .list:not(.inset):not(.inset-md):not(.menu-list) .media-item .item-content {\n padding-left: calc(var(--f7-list-item-padding-horizontal) / 2 + var(--f7-safe-area-left));\n}\n.media-list,\nli.media-item {\n --f7-list-item-padding-vertical: var(--f7-list-media-item-padding-vertical);\n --f7-list-item-padding-horizontal: var(--f7-list-media-item-padding-horizontal);\n}\n.media-list .item-title,\nli.media-item .item-title {\n font-weight: var(--f7-list-media-item-title-font-weight, var(--f7-list-item-title-font-weight, inherit));\n}\n.media-list .item-inner,\nli.media-item .item-inner {\n display: block;\n align-self: stretch;\n}\n.media-list .item-media img,\nli.media-item .item-media img {\n display: block;\n}\n.media-list .item-link .item-inner,\nli.media-item .item-link .item-inner {\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.media-list .item-link .item-title-row,\nli.media-item .item-link .item-title-row {\n padding-right: calc(var(--f7-list-chevron-icon-area));\n}\n.media-list.chevron-center .item-link .item-inner,\n.media-list .chevron-center .item-link .item-inner,\n.media-list .item-link.chevron-center .item-inner,\nli.media-item.chevron-center .item-link .item-inner,\nli.media-item .item-link.chevron-center .item-inner,\nli.media-item .chevron-center .item-link .item-inner {\n padding-right: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.media-list.chevron-center .item-title-row,\n.media-list .chevron-center .item-title-row,\nli.media-item.chevron-center .item-title-row,\nli.media-item .chevron-center .item-title-row {\n padding-right: 0;\n}\n.list .item-link .item-inner:before,\n.links-list a:before,\n.media-list .item-link .item-title-row:before,\nli.media-item .item-link .item-title-row:before,\n.media-list.chevron-center .item-link .item-inner:before,\n.media-list .chevron-center .item-link .item-inner:before,\n.media-list .item-link.chevron-center .item-inner:before,\nli.media-item.chevron-center .item-link .item-inner:before,\nli.media-item .chevron-center .item-link .item-inner:before,\nli.media-item .item-link.chevron-center .item-inner:before {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n top: 50%;\n width: 8px;\n height: 14px;\n margin-top: -7px;\n font-size: var(--f7-list-chevron-icon-font-size);\n line-height: 14px;\n color: var(--f7-list-chevron-icon-color);\n pointer-events: none;\n right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n content: var(--f7-list-chevron-icon-right);\n}\n.media-list.chevron-center .item-title-row:before,\n.media-list .chevron-center .item-title-row:before,\nli.media-item.chevron-center .item-title-row:before,\nli.media-item .chevron-center .item-title-row:before {\n display: none;\n}\n.media-list .item-link .item-inner:before,\nli.media-item .item-link .item-inner:before {\n display: none;\n}\n.media-list .item-link .item-title-row:before,\nli.media-item .item-link .item-title-row:before {\n right: 0;\n}\n.list-group ul:after,\n.list-group ul:before {\n z-index: 25 !important;\n}\n.list-group + .list-group ul:before {\n display: none !important;\n}\nli.list-group-title,\n.list-group-title {\n margin-top: -1px;\n white-space: nowrap;\n position: relative;\n max-width: 100%;\n text-overflow: ellipsis;\n overflow: hidden;\n z-index: 15;\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n box-sizing: border-box;\n display: flex;\n align-items: center;\n align-content: center;\n height: var(--f7-list-group-title-height);\n color: var(--f7-list-group-title-text-color);\n font-size: var(--f7-list-group-title-font-size);\n font-weight: var(--f7-list-group-title-font-weight);\n background-color: var(--f7-list-group-title-bg-color);\n line-height: var(--f7-list-group-title-line-height);\n}\nli.list-group-title:before,\n.list-group-title:before {\n content: '';\n position: absolute;\n background-color: var(--f7-list-group-title-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\nli.list-group-title:after,\n.list-group-title:after {\n display: none !important;\n}\n.list-group > .list-group-title,\n.list-group > ul > .list-group-title {\n top: 0;\n margin-top: 0;\n position: sticky;\n z-index: 20;\n}\n.page-with-navbar-large .list-group > .list-group-title,\n.page-with-navbar-large .list-group > ul > .list-group-title {\n top: calc(-1 * var(--f7-navbar-large-title-height));\n}\n.list.inset,\n.ios .list.inset-ios,\n.md .list.inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n}\n.list.inset .block-title,\n.ios .list.inset-ios .block-title,\n.md .list.inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n}\n.list.inset ul,\n.ios .list.inset-ios ul,\n.md .list.inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n}\n.list.inset ul:before,\n.ios .list.inset-ios ul:before,\n.md .list.inset-md ul:before,\n.list.inset ul:after,\n.ios .list.inset-ios ul:after,\n.md .list.inset-md ul:after {\n display: none !important;\n}\n.list.inset li.swipeout:first-child,\n.ios .list.inset-ios li.swipeout:first-child,\n.md .list.inset-md li.swipeout:first-child,\n.list.inset li:first-child > a,\n.ios .list.inset-ios li:first-child > a,\n.md .list.inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n}\n.list.inset li.swipeout:last-child,\n.ios .list.inset-ios li.swipeout:last-child,\n.md .list.inset-md li.swipeout:last-child,\n.list.inset li:last-child > a,\n.ios .list.inset-ios li:last-child > a,\n.md .list.inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n}\n.list.inset li.swipeout:first-child:last-child,\n.ios .list.inset-ios li.swipeout:first-child:last-child,\n.md .list.inset-md li.swipeout:first-child:last-child,\n.list.inset li:first-child:last-child > a,\n.ios .list.inset-ios li:first-child:last-child > a,\n.md .list.inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n}\n@media (min-width: 480px) {\n .list.xsmall-inset,\n .ios .list.xsmall-inset-ios,\n .md .list.xsmall-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.xsmall-inset .block-title,\n .ios .list.xsmall-inset-ios .block-title,\n .md .list.xsmall-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.xsmall-inset ul,\n .ios .list.xsmall-inset-ios ul,\n .md .list.xsmall-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xsmall-inset ul:before,\n .ios .list.xsmall-inset-ios ul:before,\n .md .list.xsmall-inset-md ul:before,\n .list.xsmall-inset ul:after,\n .ios .list.xsmall-inset-ios ul:after,\n .md .list.xsmall-inset-md ul:after {\n display: none !important;\n }\n .list.xsmall-inset li:first-child > a,\n .ios .list.xsmall-inset-ios li:first-child > a,\n .md .list.xsmall-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.xsmall-inset li:last-child > a,\n .ios .list.xsmall-inset-ios li:last-child > a,\n .md .list.xsmall-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.xsmall-inset li:first-child:last-child > a,\n .ios .list.xsmall-inset-ios li:first-child:last-child > a,\n .md .list.xsmall-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xsmall-inset.list-outline ul,\n .ios .list.xsmall-inset-ios.list-outline ul,\n .ios .list.xsmall-inset-ios.list-outline-ios ul,\n .md .list.xsmall-inset-md.list-outline ul,\n .md .list.xsmall-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 568px) {\n .list.small-inset,\n .ios .list.small-inset-ios,\n .md .list.small-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.small-inset .block-title,\n .ios .list.small-inset-ios .block-title,\n .md .list.small-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.small-inset ul,\n .ios .list.small-inset-ios ul,\n .md .list.small-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.small-inset ul:before,\n .ios .list.small-inset-ios ul:before,\n .md .list.small-inset-md ul:before,\n .list.small-inset ul:after,\n .ios .list.small-inset-ios ul:after,\n .md .list.small-inset-md ul:after {\n display: none !important;\n }\n .list.small-inset li:first-child > a,\n .ios .list.small-inset-ios li:first-child > a,\n .md .list.small-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.small-inset li:last-child > a,\n .ios .list.small-inset-ios li:last-child > a,\n .md .list.small-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.small-inset li:first-child:last-child > a,\n .ios .list.small-inset-ios li:first-child:last-child > a,\n .md .list.small-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.small-inset.list-outline ul,\n .ios .list.small-inset-ios.list-outline ul,\n .ios .list.small-inset-ios.list-outline-ios ul,\n .md .list.small-inset-md.list-outline ul,\n .md .list.small-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 768px) {\n .list.medium-inset,\n .ios .list.medium-inset-ios,\n .md .list.medium-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.medium-inset .block-title,\n .ios .list.medium-inset-ios .block-title,\n .md .list.medium-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.medium-inset ul,\n .ios .list.medium-inset-ios ul,\n .md .list.medium-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.medium-inset ul:before,\n .ios .list.medium-inset-ios ul:before,\n .md .list.medium-inset-md ul:before,\n .list.medium-inset ul:after,\n .ios .list.medium-inset-ios ul:after,\n .md .list.medium-inset-md ul:after {\n display: none !important;\n }\n .list.medium-inset li:first-child > a,\n .ios .list.medium-inset-ios li:first-child > a,\n .md .list.medium-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.medium-inset li:last-child > a,\n .ios .list.medium-inset-ios li:last-child > a,\n .md .list.medium-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.medium-inset li:first-child:last-child > a,\n .ios .list.medium-inset-ios li:first-child:last-child > a,\n .md .list.medium-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.medium-inset.list-outline ul,\n .ios .list.medium-inset-ios.list-outline ul,\n .ios .list.medium-inset-ios.list-outline-ios ul,\n .md .list.medium-inset-md.list-outline ul,\n .md .list.medium-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 1024px) {\n .list.large-inset,\n .ios .list.large-inset-ios,\n .md .list.large-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.large-inset .block-title,\n .ios .list.large-inset-ios .block-title,\n .md .list.large-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.large-inset ul,\n .ios .list.large-inset-ios ul,\n .md .list.large-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.large-inset ul:before,\n .ios .list.large-inset-ios ul:before,\n .md .list.large-inset-md ul:before,\n .list.large-inset ul:after,\n .ios .list.large-inset-ios ul:after,\n .md .list.large-inset-md ul:after {\n display: none !important;\n }\n .list.large-inset li:first-child > a,\n .ios .list.large-inset-ios li:first-child > a,\n .md .list.large-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.large-inset li:last-child > a,\n .ios .list.large-inset-ios li:last-child > a,\n .md .list.large-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.large-inset li:first-child:last-child > a,\n .ios .list.large-inset-ios li:first-child:last-child > a,\n .md .list.large-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.large-inset.list-outline ul,\n .ios .list.large-inset-ios.list-outline ul,\n .ios .list.large-inset-ios.list-outline-ios ul,\n .md .list.large-inset-md.list-outline ul,\n .md .list.large-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n@media (min-width: 1200px) {\n .list.xlarge-inset,\n .ios .list.xlarge-inset-ios,\n .md .list.xlarge-inset-md {\n margin-left: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-left));\n margin-right: calc(var(--f7-list-inset-side-margin) + var(--f7-safe-area-outer-right));\n border-radius: var(--f7-list-inset-border-radius);\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n }\n .list.xlarge-inset .block-title,\n .ios .list.xlarge-inset-ios .block-title,\n .md .list.xlarge-inset-md .block-title {\n margin-left: 0;\n margin-right: 0;\n }\n .list.xlarge-inset ul,\n .ios .list.xlarge-inset-ios ul,\n .md .list.xlarge-inset-md ul {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xlarge-inset ul:before,\n .ios .list.xlarge-inset-ios ul:before,\n .md .list.xlarge-inset-md ul:before,\n .list.xlarge-inset ul:after,\n .ios .list.xlarge-inset-ios ul:after,\n .md .list.xlarge-inset-md ul:after {\n display: none !important;\n }\n .list.xlarge-inset li:first-child > a,\n .ios .list.xlarge-inset-ios li:first-child > a,\n .md .list.xlarge-inset-md li:first-child > a {\n border-radius: var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius) 0 0;\n }\n .list.xlarge-inset li:last-child > a,\n .ios .list.xlarge-inset-ios li:last-child > a,\n .md .list.xlarge-inset-md li:last-child > a {\n border-radius: 0 0 var(--f7-list-inset-border-radius) var(--f7-list-inset-border-radius);\n }\n .list.xlarge-inset li:first-child:last-child > a,\n .ios .list.xlarge-inset-ios li:first-child:last-child > a,\n .md .list.xlarge-inset-md li:first-child:last-child > a {\n border-radius: var(--f7-list-inset-border-radius);\n }\n .list.xlarge-inset.list-outline ul,\n .ios .list.xlarge-inset-ios.list-outline ul,\n .ios .list.xlarge-inset-ios.list-outline-ios ul,\n .md .list.xlarge-inset-md.list-outline ul,\n .md .list.xlarge-inset-md.list-outline-md ul {\n border: 1px solid var(--f7-list-outline-inset-border-color);\n }\n}\n.list.no-chevron,\n.list .no-chevron,\n.menu-list {\n --f7-list-chevron-icon-color: transparent;\n --f7-list-chevron-icon-area: 0px;\n}\n.menu-list {\n --f7-list-font-size: var(--f7-menu-list-font-size);\n --f7-list-item-title-font-size: var(--f7-menu-list-item-title-font-size);\n --f7-list-item-title-font-weight: var(--f7-menu-list-item-title-font-weight);\n --f7-list-item-subtitle-font-size: var(--f7-menu-list-item-subtitle-font-size);\n --f7-list-item-text-font-size: var(--f7-menu-list-item-text-font-size);\n --f7-list-item-after-font-size: var(--f7-menu-list-item-after-font-size);\n --f7-list-item-min-height: var(--f7-menu-list-item-min-height);\n}\n.menu-list .item-header,\n.menu-list .item-footer,\n.menu-list .item-title,\n.menu-list .item-after,\n.menu-list .item-text,\n.menu-list .item-subtitle {\n transition-duration: 300ms;\n}\n.menu-list li:not(.list-group-title) {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n.menu-list li:not(.list-group-title):first-child {\n padding-top: 4px;\n}\n.menu-list li:not(.list-group-title):last-child {\n padding-bottom: 4px;\n}\n.menu-list .item-link {\n margin-left: var(--f7-menu-list-offset);\n margin-right: var(--f7-menu-list-offset);\n border-radius: var(--f7-menu-list-border-radius) !important;\n color: var(--f7-menu-list-item-text-color);\n background-color: var(--f7-menu-list-item-bg-color);\n}\n.menu-list .item-inner:after {\n display: none;\n}\n.menu-list .item-selected .item-link,\n.menu-list .item-selected.item-link,\n.menu-list .tab-link-active .item-link,\n.menu-list .tab-link-active.item-link {\n color: var(--f7-menu-list-item-selected-text-color);\n background-color: var(--f7-menu-list-item-selected-bg-color);\n}\n.menu-list .item-selected .item-header,\n.menu-list .item-selected .item-footer,\n.menu-list .item-selected .item-title,\n.menu-list .item-selected .item-after,\n.menu-list .item-selected .item-text,\n.menu-list .item-selected .item-subtitle {\n color: var(--f7-menu-list-item-selected-text-color);\n}\n.ios .item-link.active-state .item-inner:after,\n.ios .list-button.active-state:after,\n.ios .links-list a.active-state:after {\n background-color: transparent;\n}\n.ios .links-list a.active-state,\n.ios .list .item-link.active-state,\n.ios .list .list-button.active-state {\n transition-duration: 0ms;\n}\n.md .menu-list .item-link.active-state {\n background-color: var(--f7-menu-list-item-bg-color);\n}\n/* === Badge === */\n:root {\n --f7-badge-text-color: #fff;\n --f7-badge-bg-color: #8e8e93;\n --f7-badge-in-icon-size: 16px;\n --f7-badge-in-icon-font-size: 10px;\n --f7-badge-font-weight: normal;\n --f7-badge-font-size: 12px;\n}\n.ios {\n --f7-badge-padding: 0 4px;\n --f7-badge-size: 20px;\n --f7-badge-font-weight: 600;\n}\n.md {\n --f7-badge-padding: 2px 6px;\n --f7-badge-size: 20px;\n --f7-badge-font-weight: 500;\n}\n.badge {\n display: inline-flex;\n align-items: center;\n align-content: center;\n justify-content: center;\n color: var(--f7-badge-text-color);\n background: var(--f7-badge-bg-color);\n position: relative;\n box-sizing: border-box;\n text-align: center;\n vertical-align: middle;\n font-weight: var(--f7-badge-font-weight);\n font-size: var(--f7-badge-font-size);\n border-radius: var(--f7-badge-size);\n padding: var(--f7-badge-padding);\n height: var(--f7-badge-size);\n min-width: var(--f7-badge-size);\n}\n.icon .badge,\n.f7-icons .badge,\n.framework7-icons .badge,\n.material-icons .badge {\n position: absolute;\n left: 100%;\n margin-left: -10px;\n top: -2px;\n font-family: var(--f7-font-family);\n --f7-badge-font-size: var(--f7-badge-in-icon-font-size);\n --f7-badge-size: var(--f7-badge-in-icon-size);\n --f7-badge-padding: 0px 2px;\n}\n.badge[class*='color-'] {\n --f7-badge-bg-color: var(--f7-theme-color);\n}\n:root {\n --f7-button-font-size: 14px;\n --f7-button-min-width: 32px;\n --f7-button-bg-color: transparent;\n --f7-button-border-width: 0px;\n /*\n --f7-button-text-color: var(--f7-theme-color);\n --f7-button-pressed-text-color: var(--f7-button-text-color, var(--f7-theme-color));\n --f7-button-border-color: var(--f7-theme-color);\n --f7-button-fill-bg-color: var(--f7-theme-color);\n --f7-button-padding-vertical: 0px;\n */\n --f7-button-raised-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);\n --f7-button-raised-pressed-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16),\n 0 3px 6px rgba(0, 0, 0, 0.23);\n --f7-segmented-raised-divider-color: rgba(0, 0, 0, 0.1);\n --f7-segmented-strong-padding: 2px;\n --f7-segmented-strong-between-buttons: 4px;\n --f7-segmented-strong-button-font-weight: 500;\n --f7-segmented-strong-button-active-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.25);\n --f7-segmented-strong-button-text-color: #000;\n --f7-segmented-strong-button-hover-bg-color: rgba(0, 0, 0, 0.04);\n --f7-segmented-strong-button-active-text-color: #000;\n --f7-segmented-strong-button-active-bg-color: #fff;\n}\n:root .dark,\n:root.dark {\n --f7-segmented-strong-button-hover-bg-color: rgba(255, 255, 255, 0.02);\n --f7-segmented-strong-button-active-bg-color: rgba(255, 255, 255, 0.14);\n --f7-segmented-strong-button-text-color: #fff;\n --f7-segmented-strong-button-active-text-color: #fff;\n}\n.ios {\n --f7-button-fill-text-color: #fff;\n --f7-button-text-transform: uppercase;\n --f7-button-height: 28px;\n --f7-button-padding-horizontal: 10px;\n --f7-button-border-radius: 4px;\n --f7-button-font-weight: 600;\n --f7-button-letter-spacing: 0;\n /*\n --f7-button-outline-border-color: var(--f7-theme-color);\n */\n --f7-button-outline-border-width: 2px;\n /*\n --f7-button-pressed-bg-color: rgba(var(--f7-theme-color-rgb), .15);\n --f7-button-fill-pressed-bg-color: var(--f7-theme-color-tint);\n */\n --f7-button-large-text-transform: uppercase;\n --f7-button-large-height: 44px;\n --f7-button-large-font-size: 17px;\n --f7-button-large-font-weight: 500;\n --f7-button-small-outline-border-width: 2px;\n --f7-button-small-text-transform: uppercase;\n --f7-button-small-height: 26px;\n --f7-button-small-font-size: 13px;\n --f7-button-small-font-weight: 600;\n --f7-segmented-strong-button-text-transform: none;\n --f7-segmented-strong-button-active-font-weight: 600;\n --f7-button-tonal-bg-color: rgba(var(--f7-theme-color-rgb), 0.15);\n --f7-button-tonal-pressed-bg-color: rgba(var(--f7-theme-color-rgb), 0.25);\n --f7-button-tonal-text-color: var(--f7-theme-color);\n --f7-segmented-strong-bg-color: rgba(0, 0, 0, 0.07);\n --f7-segmented-strong-button-pressed-bg-color: rgba(0, 0, 0, 0.07);\n}\n.ios .dark,\n.ios.dark {\n --f7-segmented-strong-bg-color: rgba(255, 255, 255, 0.1);\n --f7-segmented-strong-button-pressed-bg-color: rgba(255, 255, 255, 0.04);\n}\n.md {\n /*\n --f7-button-pressed-bg-color: transparent;\n */\n --f7-button-text-transform: none;\n --f7-button-height: 40px;\n --f7-button-padding-horizontal: 16px;\n --f7-button-border-radius: 8px;\n --f7-button-font-weight: 500;\n --f7-button-letter-spacing: normal;\n --f7-button-outline-border-width: 1px;\n --f7-button-large-text-transform: none;\n --f7-button-large-height: 48px;\n --f7-button-large-font-size: 14px;\n --f7-button-large-font-weight: 500;\n --f7-button-small-text-transform: none;\n --f7-button-small-outline-border-width: 1px;\n --f7-button-small-height: 32px;\n --f7-button-small-font-size: 14px;\n --f7-button-small-font-weight: 500;\n --f7-segmented-strong-button-text-transform: none;\n --f7-segmented-strong-button-active-font-weight: 500;\n --f7-segmented-strong-button-pressed-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-button-fill-pressed-bg-color: transparent;\n --f7-button-fill-text-color: var(--f7-md-on-primary);\n --f7-button-outline-border-color: var(--f7-md-outline);\n --f7-segmented-strong-bg-color: var(--f7-md-surface-variant);\n --f7-button-tonal-bg-color: var(--f7-md-secondary-container);\n --f7-button-tonal-pressed-bg-color: transparent;\n --f7-button-tonal-text-color: var(--f7-md-on-secondary-container);\n}\nbutton {\n -webkit-appearance: none;\n appearance: none;\n width: 100%;\n}\n.button {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n text-decoration: none;\n text-align: center;\n display: flex;\n -webkit-appearance: none;\n appearance: none;\n background: none;\n margin: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n position: relative;\n overflow: hidden;\n font-family: inherit;\n cursor: pointer;\n outline: 0;\n box-sizing: border-box;\n vertical-align: middle;\n justify-content: center;\n align-items: center;\n border: var(--f7-button-border-width, 0px) solid var(--f7-button-border-color, var(--f7-theme-color));\n font-size: var(--f7-button-font-size);\n color: var(--f7-button-text-color, var(--f7-theme-color));\n height: var(--f7-button-height);\n line-height: calc(var(--f7-button-height) - var(--f7-button-border-width, 0) * 2);\n padding: var(--f7-button-padding-vertical, 0px) var(--f7-button-padding-horizontal);\n border-radius: var(--f7-button-border-radius);\n min-width: var(--f7-button-min-width);\n font-weight: var(--f7-button-font-weight);\n letter-spacing: var(--f7-button-letter-spacing);\n text-transform: var(--f7-button-text-transform);\n background-color: var(--f7-button-bg-color);\n box-shadow: var(--f7-button-box-shadow);\n}\n.button.active-state {\n color: var(--f7-button-pressed-text-color, var(--f7-button-text-color, var(--f7-theme-color)));\n}\ninput[type='submit'].button,\ninput[type='button'].button,\ninput[type='reset'].button {\n width: 100%;\n}\n.button > i + span,\n.button > span + span,\n.button > span ~ i {\n margin-left: 4px;\n}\n.subnavbar .button,\n.navbar .button,\n.toolbar .button,\n.searchbar .button {\n color: var(--f7-button-text-color, var(--f7-theme-color));\n}\n.button-round,\n.ios .button-round-ios,\n.md .button-round-md {\n --f7-button-border-radius: var(--f7-button-height);\n}\n.button-fill,\n.ios .button-fill-ios,\n.md .button-fill-md,\n.button-active,\n.button.tab-link-active {\n --f7-button-bg-color: var(--f7-button-fill-bg-color, var(--f7-theme-color));\n --f7-button-text-color: var(--f7-button-fill-text-color, #fff);\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.ios .color-white .button-fill,\n.ios .color-white .ios .button-fill-ios,\n.ios .color-white .md .button-fill-md,\n.ios .color-white .button-active,\n.ios .color-white .button.tab-link-active,\n.ios .button-fill.color-white,\n.ios .ios .button-fill-ios.color-white,\n.ios .md .button-fill-md.color-white,\n.ios .button-active.color-white,\n.ios .button.tab-link-active.color-white {\n --f7-button-text-color: #000;\n}\n.button-fill,\n.ios .button-fill-ios,\n.md .button-fill-md {\n --f7-button-pressed-bg-color: var(--f7-button-fill-pressed-bg-color);\n}\n.button-active,\n.button.tab-link-active {\n --f7-button-pressed-bg-color: var(--f7-button-bg-color);\n}\n.button-outline,\n.ios .button-outline-ios,\n.md .button-outline-md {\n --f7-button-border-color: var(--f7-button-outline-border-color, var(--f7-theme-color));\n --f7-button-border-width: var(--f7-button-outline-border-width);\n}\n.button-tonal,\n.ios .button-tonal-ios,\n.md .button-tonal-md {\n --f7-button-bg-color: var(--f7-button-tonal-bg-color);\n --f7-button-text-color: var(--f7-button-tonal-text-color);\n --f7-button-pressed-bg-color: var(--f7-button-tonal-pressed-bg-color);\n}\n.button-large,\n.ios .button-large-ios,\n.md .button-large-md {\n --f7-button-height: var(--f7-button-large-height);\n --f7-button-font-size: var(--f7-button-large-font-size);\n --f7-button-font-weight: var(--f7-button-large-font-weight);\n --f7-button-text-transform: var(--f7-button-large-text-transform);\n}\n.button-small,\n.ios .button-small-ios,\n.md .button-small-md {\n --f7-button-outline-border-width: var(--f7-button-small-outline-border-width);\n --f7-button-height: var(--f7-button-small-height);\n --f7-button-font-size: var(--f7-button-small-font-size);\n --f7-button-font-weight: var(--f7-button-small-font-weight);\n --f7-button-text-transform: var(--f7-button-small-text-transform);\n}\n.ios .button-small.button-fill,\n.ios .button-small-ios.button-fill,\n.ios .button-small.button-fill-ios {\n --f7-button-border-width: var(--f7-button-small-outline-border-width);\n --f7-button-pressed-text-color: var(--f7-theme-color);\n --f7-button-pressed-bg-color: transparent;\n}\n.segmented {\n align-self: center;\n display: flex;\n flex-wrap: nowrap;\n border-radius: var(--f7-button-border-radius);\n box-shadow: var(--f7-button-box-shadow);\n box-sizing: border-box;\n}\n.segmented .button,\n.segmented button {\n width: 100%;\n flex-shrink: 1;\n min-width: 0;\n border-radius: 0;\n}\n.segmented .button:first-child {\n border-radius: var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius);\n}\n.segmented .button:not(.button-outline):first-child {\n border-left: none;\n}\n.segmented .button.button-outline:nth-child(n + 2) {\n border-left: none;\n}\n.segmented .button:last-child {\n border-radius: 0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0;\n}\n.segmented .button-round:first-child {\n border-radius: var(--f7-button-height) 0 0 var(--f7-button-height);\n}\n.segmented .button-round:last-child {\n border-radius: 0 var(--f7-button-height) var(--f7-button-height) 0;\n}\n.segmented .button:first-child:last-child {\n border-radius: var(--f7-button-border-radius);\n}\n.segmented-raised,\n.ios .segmented-raised-ios,\n.md .segmented-raised-md {\n box-shadow: var(--f7-button-raised-box-shadow);\n}\n.segmented-raised .button:not(.button-outline),\n.ios .segmented-raised-ios .button:not(.button-outline),\n.md .segmented-raised-md .button:not(.button-outline) {\n border-left: 1px solid var(--f7-segmented-raised-divider-color);\n}\n.button-raised,\n.ios .button-raised-ios,\n.md .button-raised-md {\n --f7-button-box-shadow: var(--f7-button-raised-box-shadow);\n}\n.button-raised.active-state,\n.ios .button-raised-ios.active-state,\n.md .button-raised-md.active-state {\n --f7-button-box-shadow: var(--f7-button-raised-pressed-box-shadow);\n}\n.segmented-strong,\n.ios .segmented-strong-ios,\n.md .segmented-strong-md {\n --f7-button-bg-color: transparent;\n --f7-button-hover-bg-color: var(--f7-segmented-strong-button-hover-bg-color);\n --f7-button-text-color: var(--f7-segmented-strong-button-text-color);\n --f7-button-font-weight: var(--f7-segmented-strong-button-font-weight);\n --f7-button-text-transform: var(--f7-segmented-strong-button-text-transform);\n --f7-button-pressed-bg-color: var(--f7-segmented-strong-button-pressed-bg-color);\n position: relative;\n background: var(--f7-segmented-strong-bg-color);\n border-radius: calc(var(--f7-button-border-radius) + 2px);\n box-shadow: none;\n padding: var(--f7-segmented-strong-padding);\n overflow: hidden;\n}\n.segmented-strong .button,\n.ios .segmented-strong-ios .button,\n.md .segmented-strong-md .button {\n z-index: 1;\n transform: translate3d(0, 0, 0);\n}\n.segmented-strong .button,\n.ios .segmented-strong-ios .button,\n.md .segmented-strong-md .button,\n.segmented-strong .button:first-child,\n.ios .segmented-strong-ios .button:first-child,\n.md .segmented-strong-md .button:first-child,\n.segmented-strong .button:last-child,\n.ios .segmented-strong-ios .button:last-child,\n.md .segmented-strong-md .button:last-child {\n border-radius: var(--f7-button-border-radius);\n}\n.segmented-strong .button + .button,\n.ios .segmented-strong-ios .button + .button,\n.md .segmented-strong-md .button + .button {\n margin-left: var(--f7-segmented-strong-between-buttons);\n}\n.segmented-strong .button.button-active,\n.ios .segmented-strong-ios .button.button-active,\n.md .segmented-strong-md .button.button-active,\n.segmented-strong .button.tab-link-active,\n.ios .segmented-strong-ios .button.tab-link-active,\n.md .segmented-strong-md .button.tab-link-active {\n --f7-button-hover-bg-color: transparent;\n --f7-button-bg-color: transparent;\n --f7-button-text-color: var(--f7-segmented-strong-button-active-text-color);\n --f7-button-font-weight: var(--f7-segmented-strong-button-active-font-weight);\n}\n.segmented-strong .segmented-highlight,\n.ios .segmented-strong-ios .segmented-highlight,\n.md .segmented-strong-md .segmented-highlight {\n --f7-segmented-highlight-num: 1;\n --f7-segmented-highlight-active: 0;\n --f7-segmented-highlight-padding: calc(var(--f7-segmented-strong-padding) * 2);\n --f7-segmented-highlight-between: var(--f7-segmented-strong-between-buttons);\n --f7-segmented-highlight-width: calc((100% - var(--f7-segmented-highlight-padding) - var(--f7-segmented-highlight-between) * (var(--f7-segmented-highlight-num) - 1)) / var(--f7-segmented-highlight-num));\n position: absolute;\n background-color: var(--f7-segmented-strong-button-active-bg-color);\n border-radius: var(--f7-button-border-radius);\n box-shadow: var(--f7-segmented-strong-button-active-box-shadow);\n left: var(--f7-segmented-strong-padding);\n top: var(--f7-segmented-strong-padding);\n height: calc(100% - var(--f7-segmented-strong-padding) * 2);\n width: var(--f7-segmented-highlight-width);\n z-index: 0;\n transform: translateX(calc(var(--f7-segmented-highlight-active) * 100% + var(--f7-segmented-highlight-active) * var(--f7-segmented-highlight-between)));\n transition: 200ms;\n}\n.button:nth-child(2) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 2;\n}\n.button:nth-child(3) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 3;\n}\n.button:nth-child(4) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 4;\n}\n.button:nth-child(5) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 5;\n}\n.button:nth-child(6) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 6;\n}\n.button:nth-child(7) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 7;\n}\n.button:nth-child(8) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 8;\n}\n.button:nth-child(9) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 9;\n}\n.button:nth-child(10) ~ .segmented-highlight {\n --f7-segmented-highlight-num: 10;\n}\n.button-active:nth-child(2) ~ .segmented-highlight,\n.tab-link-active:nth-child(2) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 1;\n}\n.button-active:nth-child(3) ~ .segmented-highlight,\n.tab-link-active:nth-child(3) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 2;\n}\n.button-active:nth-child(4) ~ .segmented-highlight,\n.tab-link-active:nth-child(4) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 3;\n}\n.button-active:nth-child(5) ~ .segmented-highlight,\n.tab-link-active:nth-child(5) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 4;\n}\n.button-active:nth-child(6) ~ .segmented-highlight,\n.tab-link-active:nth-child(6) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 5;\n}\n.button-active:nth-child(7) ~ .segmented-highlight,\n.tab-link-active:nth-child(7) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 6;\n}\n.button-active:nth-child(8) ~ .segmented-highlight,\n.tab-link-active:nth-child(8) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 7;\n}\n.button-active:nth-child(9) ~ .segmented-highlight,\n.tab-link-active:nth-child(9) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 8;\n}\n.button-active:nth-child(10) ~ .segmented-highlight,\n.tab-link-active:nth-child(10) ~ .segmented-highlight {\n --f7-segmented-highlight-active: 9;\n}\n.segmented-round,\n.ios .segmented-round-ios,\n.md .segmented-round-md {\n border-radius: var(--f7-button-height);\n}\n.segmented-round .segmented-highlight,\n.ios .segmented-round-ios .segmented-highlight,\n.md .segmented-round-md .segmented-highlight {\n border-radius: var(--f7-button-height);\n}\n.subnavbar .segmented {\n width: 100%;\n}\n.button-preloader {\n position: relative;\n --f7-preloader-color: var(--f7-button-text-color, var(--f7-theme-color));\n}\n.button-preloader:not(.button-large) {\n --f7-preloader-size: calc(var(--f7-button-height) - 6px);\n}\n.button-preloader.button-fill {\n --f7-preloader-color: #fff;\n}\n.button-preloader > span:not(.preloader) {\n transition: 0.2s;\n display: inline-flex;\n align-items: center;\n align-content: center;\n justify-content: center;\n transform: scale(1);\n}\n.button-preloader > .preloader {\n position: absolute;\n left: 50%;\n top: 50%;\n transition: 0.2s;\n transition-property: opacity;\n opacity: 0;\n visibility: hidden;\n margin-left: calc(-1 * var(--f7-preloader-size) / 2);\n margin-top: calc(-1 * var(--f7-preloader-size) / 2);\n}\n.button-preloader.button-loading > span:not(.preloader) {\n opacity: 0;\n transform: scale(0);\n}\n.button-preloader.button-loading > .preloader {\n opacity: 1;\n visibility: visible;\n}\n.ios .button {\n transition-duration: 100ms;\n}\n.ios .button.active-state {\n background-color: var(--f7-button-pressed-bg-color, rgba(var(--f7-theme-color-rgb), 0.15));\n}\n.ios .button-fill,\n.ios .button-fill-ios {\n --f7-button-pressed-bg-color: var(--f7-button-fill-pressed-bg-color, var(--f7-theme-color-tint));\n}\n.ios .button-small,\n.ios .button-small-ios {\n transition-duration: 200ms;\n}\n.md .button {\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n}\n.md .button-fill,\n.md .button-fill-md {\n --f7-button-pressed-bg-color: var(--f7-button-fill-pressed-bg-color, transparent);\n}\n/* === Touch Ripple === */\n:root {\n --f7-touch-ripple-black: rgba(0, 0, 0, 0.1);\n --f7-touch-ripple-white: rgba(255, 255, 255, 0.15);\n --f7-touch-ripple-color: var(--f7-touch-ripple-black);\n}\n.dark {\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.ripple,\n.fab a,\n.link,\n.item-link,\n.list-button,\n.button,\n.dialog-button,\n.tab-link,\n.radio,\n.checkbox,\n.actions-button,\n.speed-dial-buttons a {\n -webkit-user-select: none;\n user-select: none;\n}\n.ripple-wave {\n left: 0;\n top: 0;\n position: absolute !important;\n border-radius: 50%;\n pointer-events: none;\n z-index: -1;\n padding: 0;\n margin: 0;\n font-size: 0;\n transform: translate3d(0px, 0px, 0) scale(0);\n background-color: var(--f7-touch-ripple-color);\n animation: touch-ripple-in 200ms forwards;\n}\n.ripple-wave.ripple-wave-inset {\n background-image: none;\n background-color: var(--f7-touch-ripple-color);\n}\n.ripple-wave.ripple-wave-out {\n transform: var(--f7-ripple-transform);\n animation: touch-ripple-out 250ms forwards !important;\n}\n.item-link .ripple-wave,\n.list label.item-content .ripple-wave,\n.list-button .ripple-wave,\n.links-list a .ripple-wave,\n.button .ripple-wave,\nbutton .ripple-wave,\n.dialog-button .ripple-wave,\n.tab-link .ripple-wave,\n.item-radio .ripple-wave,\n.item-checkbox .ripple-wave,\n.actions-button .ripple-wave,\n.fab a .ripple-wave,\n.stepper-button .ripple-wave,\n.stepper-button-minus .ripple-wave,\n.stepper-button-plus .ripple-wave,\n.list.accordion-list .accordion-item-toggle .ripple-wave,\n.photo-browser .toolbar .link .ripple-wave,\n.ripple-blur .ripple-wave {\n animation: touch-ripple-in-blurred 250ms forwards;\n background-image: radial-gradient(closest-side circle at 50% 50%, var(--f7-touch-ripple-color) 50%, rgba(255, 255, 255, 0));\n background-color: transparent;\n}\n.checkbox .ripple-wave,\n.radio .ripple-wave,\n.data-table .sortable-cell .ripple-wave {\n z-index: 0;\n}\n[class*='ripple-color-'] {\n --f7-touch-ripple-color: var(--f7-theme-color-ripple-color);\n}\n@keyframes touch-ripple-in-blurred {\n from {\n transform: translate3d(0px, 0px, 0) scale(0.5);\n }\n to {\n transform: var(--f7-ripple-transform);\n }\n}\n@keyframes touch-ripple-in {\n from {\n transform: translate3d(0px, 0px, 0) scale(0);\n }\n to {\n transform: var(--f7-ripple-transform);\n }\n}\n@keyframes touch-ripple-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n/* === Icon === */\n.f7-icons,\n.material-icons {\n width: 1em;\n height: 1em;\n}\ni.icon {\n display: inline-block;\n vertical-align: middle;\n background-size: 100% auto;\n background-position: center;\n background-repeat: no-repeat;\n font-style: normal;\n position: relative;\n}\n.icon-back:after,\n.icon-prev:after,\n.icon-forward:after,\n.icon-next:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n.icon[class*='color-'] {\n color: var(--f7-theme-color);\n}\n.ios .icon-back,\n.ios .icon-prev,\n.ios .icon-forward,\n.ios .icon-next {\n width: 12px;\n height: 20px;\n line-height: 20px;\n}\n.ios .icon-back:after,\n.ios .icon-prev:after,\n.ios .icon-forward:after,\n.ios .icon-next:after {\n line-height: inherit;\n}\n.ios .icon-prev:after,\n.ios .icon-next:after {\n font-size: 16px;\n}\n.ios .icon-back:after,\n.ios .icon-prev:after {\n content: 'chevron_left_ios';\n}\n.ios .icon-forward:after,\n.ios .icon-next:after {\n content: 'chevron_right_ios';\n}\n.md .icon-back,\n.md .icon-forward,\n.md .icon-next,\n.md .icon-prev {\n width: 24px;\n height: 24px;\n}\n.md .icon-back:after,\n.md .icon-forward:after,\n.md .icon-next:after,\n.md .icon-prev:after {\n line-height: 1.2;\n}\n.md .icon-back:after {\n content: 'arrow_left_md';\n}\n.md .icon-forward:after {\n content: 'arrow_right_md';\n}\n.md .icon-next:after {\n content: 'chevron_right_md';\n}\n.md .icon-prev:after {\n content: 'chevron_left_md';\n}\n.custom-modal-backdrop {\n z-index: 10500;\n}\n.custom-modal-backdrop,\n.actions-backdrop,\n.dialog-backdrop,\n.popover-backdrop,\n.popup-backdrop,\n.preloader-backdrop,\n.sheet-backdrop,\n.fab-backdrop {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.4);\n z-index: 13000;\n visibility: hidden;\n opacity: 0;\n transition-duration: 400ms;\n}\n.custom-modal-backdrop.not-animated,\n.actions-backdrop.not-animated,\n.dialog-backdrop.not-animated,\n.popover-backdrop.not-animated,\n.popup-backdrop.not-animated,\n.preloader-backdrop.not-animated,\n.sheet-backdrop.not-animated,\n.fab-backdrop.not-animated {\n transition-duration: 0ms;\n}\n.custom-modal-backdrop.backdrop-in,\n.actions-backdrop.backdrop-in,\n.dialog-backdrop.backdrop-in,\n.popover-backdrop.backdrop-in,\n.popup-backdrop.backdrop-in,\n.preloader-backdrop.backdrop-in,\n.sheet-backdrop.backdrop-in,\n.fab-backdrop.backdrop-in {\n visibility: visible;\n opacity: 1;\n}\n/* === Dialog === */\n:root {\n --f7-dialog-button-text-color: var(--f7-theme-color);\n --f7-dialog-button-text-align: center;\n}\n.ios {\n --f7-dialog-width: 270px;\n --f7-dialog-inner-padding: 16px;\n --f7-dialog-border-radius: 13px;\n --f7-dialog-text-align: center;\n --f7-dialog-font-size: 14px;\n --f7-dialog-title-text-color: inherit;\n --f7-dialog-title-font-size: 18px;\n --f7-dialog-title-font-weight: 600;\n --f7-dialog-title-line-height: inherit;\n --f7-dialog-button-font-size: 17px;\n --f7-dialog-button-height: 44px;\n --f7-dialog-button-letter-spacing: 0;\n --f7-dialog-button-font-weight: 400;\n --f7-dialog-button-text-transform: none;\n --f7-dialog-button-strong-bg-color: transparent;\n --f7-dialog-button-strong-text-color: var(--f7-theme-color);\n --f7-dialog-button-strong-font-weight: 500;\n --f7-dialog-input-border-radius: 4px;\n --f7-dialog-input-font-size: 14px;\n --f7-dialog-input-height: 32px;\n --f7-dialog-input-border-width: 1px;\n --f7-dialog-input-placeholder-color: #a9a9a9;\n --f7-dialog-preloader-size: 34px;\n --f7-dialog-input-bg-color: #fff;\n --f7-dialog-bg-color: rgba(255, 255, 255, 0.95);\n --f7-dialog-bg-color-rgb: 255, 255, 255;\n --f7-dialog-text-color: #000;\n --f7-dialog-button-pressed-bg-color: rgba(0, 0, 0, 0.1);\n --f7-dialog-button-strong-pressed-bg-color: rgba(0, 0, 0, 0.1);\n --f7-dialog-input-border-color: rgba(0, 0, 0, 0.3);\n --f7-dialog-border-divider-color: rgba(0, 0, 0, 0.2);\n}\n.ios .dark,\n.ios.dark {\n --f7-dialog-text-color: #fff;\n --f7-dialog-bg-color: rgba(45, 45, 45, 0.95);\n --f7-dialog-bg-color-rgb: 45, 45, 45;\n --f7-dialog-button-pressed-bg-color: rgba(0, 0, 0, 0.2);\n --f7-dialog-button-strong-pressed-bg-color: rgba(0, 0, 0, 0.2);\n --f7-dialog-border-divider-color: rgba(255, 255, 255, 0.15);\n --f7-dialog-input-border-color: rgba(255, 255, 255, 0.15);\n --f7-dialog-input-bg-color: rgba(0, 0, 0, 0.5);\n}\n.md {\n --f7-dialog-width: 280px;\n --f7-dialog-inner-padding: 24px;\n --f7-dialog-border-radius: 28px;\n --f7-dialog-text-align: left;\n --f7-dialog-font-size: 14px;\n --f7-dialog-title-font-size: 24px;\n --f7-dialog-title-font-weight: 400;\n --f7-dialog-title-line-height: 1.3;\n --f7-dialog-button-font-size: 14px;\n --f7-dialog-button-height: 40px;\n --f7-dialog-button-letter-spacing: normal;\n --f7-dialog-button-font-weight: 500;\n --f7-dialog-button-text-transform: none;\n --f7-dialog-button-strong-font-weight: 500;\n --f7-dialog-input-border-radius: 0px;\n --f7-dialog-input-font-size: 16px;\n --f7-dialog-input-height: 36px;\n --f7-dialog-input-border-color: transparent;\n --f7-dialog-input-border-width: 0px;\n --f7-dialog-preloader-size: 32px;\n --f7-dialog-input-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-dialog-button-pressed-bg-color: transparent;\n --f7-dialog-button-strong-bg-color: var(--f7-theme-color);\n --f7-dialog-button-strong-text-color: var(--f7-md-on-primary);\n --f7-dialog-button-strong-pressed-bg-color: transparent;\n --f7-dialog-bg-color: var(--f7-md-surface-3);\n --f7-dialog-input-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-dialog-text-color: var(--f7-md-on-surface-variant);\n --f7-dialog-title-text-color: var(--f7-md-on-surface);\n}\n.dialog {\n position: absolute;\n z-index: 13500;\n left: 50%;\n margin-top: 0;\n top: 50%;\n overflow: hidden;\n opacity: 0;\n transform: translate3d(0, -50%, 0) scale(1.185);\n transition-property: transform, opacity;\n display: none;\n transition-duration: 400ms;\n width: var(--f7-dialog-width);\n margin-left: calc(-1 * var(--f7-dialog-width) / 2);\n border-radius: var(--f7-dialog-border-radius);\n text-align: var(--f7-dialog-text-align);\n color: var(--f7-dialog-text-color);\n font-size: var(--f7-dialog-font-size);\n background: var(--f7-dialog-bg-color);\n will-change: transform, opacity;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .dialog {\n background-color: rgba(var(--f7-dialog-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.dialog.modal-in {\n opacity: 1;\n transform: translate3d(0, -50%, 0) scale(1);\n}\n.dialog.modal-out {\n opacity: 0;\n z-index: 13499;\n}\n.dialog.not-animated {\n transition-duration: 0ms;\n}\n.dialog-inner {\n position: relative;\n padding: var(--f7-dialog-inner-padding);\n}\n.dialog-title {\n color: var(--f7-dialog-title-text-color);\n font-size: var(--f7-dialog-title-font-size);\n font-weight: var(--f7-dialog-title-font-weight);\n line-height: var(--f7-dialog-title-line-height);\n}\n.dialog-buttons {\n position: relative;\n display: flex;\n}\n.dialog-buttons-vertical .dialog-buttons {\n display: block;\n height: auto !important;\n}\n.dialog-button {\n box-sizing: border-box;\n overflow: hidden;\n position: relative;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: var(--f7-dialog-button-text-color);\n font-size: var(--f7-dialog-button-font-size);\n height: var(--f7-dialog-button-height);\n line-height: var(--f7-dialog-button-height);\n letter-spacing: var(--f7-dialog-button-letter-spacing);\n text-align: var(--f7-dialog-button-text-align);\n font-weight: var(--f7-dialog-button-font-weight);\n text-transform: var(--f7-dialog-button-text-transform);\n display: block;\n cursor: pointer;\n}\n.dialog-button.active-state {\n background-color: var(--f7-dialog-button-pressed-bg-color);\n}\n.dialog-button-strong {\n background-color: var(--f7-dialog-button-strong-bg-color);\n color: var(--f7-dialog-button-strong-text-color);\n font-weight: var(--f7-dialog-button-strong-font-weight);\n}\n.dialog-button-strong.active-state {\n background-color: var(--f7-dialog-button-strong-pressed-bg-color);\n}\n.dialog-no-buttons .dialog-buttons {\n display: none;\n}\n.dialog-input-field {\n position: relative;\n}\ninput.dialog-input[type] {\n box-sizing: border-box;\n margin: 0;\n margin-top: 15px;\n border-radius: var(--f7-dialog-input-border-radius);\n -webkit-appearance: none;\n appearance: none;\n width: 100%;\n display: block;\n font-family: inherit;\n box-shadow: none;\n font-size: var(--f7-dialog-input-font-size);\n height: var(--f7-dialog-input-height);\n background-color: var(--f7-dialog-input-bg-color);\n border: var(--f7-dialog-input-border-width) solid var(--f7-dialog-input-border-color);\n}\ninput.dialog-input[type]::placeholder {\n color: var(--f7-dialog-input-placeholder-color);\n}\n.dialog-input-double input.dialog-input {\n border-radius: var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius) 0 0;\n}\n.dialog-input-double + .dialog-input-double input.dialog-input {\n border-radius: 0 0 var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius);\n}\n.dialog-preloader .preloader {\n --f7-preloader-size: var(--f7-dialog-preloader-size);\n}\nhtml.with-modal-dialog .page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\n.ios .dialog.modal-out {\n transform: translate3d(0, -50%, 0) scale(1);\n}\n.ios .dialog-inner {\n border-radius: var(--f7-dialog-border-radius) var(--f7-dialog-border-radius) 0 0;\n}\n.ios .dialog-inner:after {\n content: '';\n position: absolute;\n background-color: var(--f7-dialog-border-divider-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.ios .dialog-title + .dialog-text {\n margin-top: 5px;\n}\n.ios .dialog-buttons {\n height: 44px;\n justify-content: center;\n}\n.ios .dialog-button {\n width: 100%;\n padding: 0 5px;\n -webkit-box-flex: 1;\n -ms-flex: 1;\n}\n.ios .dialog-button:after {\n content: '';\n position: absolute;\n background-color: var(--f7-dialog-border-divider-color);\n display: block;\n z-index: 15;\n top: 0;\n right: 0;\n bottom: auto;\n left: auto;\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.ios .dialog-button:first-child {\n border-radius: 0 0 0 var(--f7-dialog-border-radius);\n}\n.ios .dialog-button:last-child {\n border-radius: 0 0 var(--f7-dialog-border-radius) 0;\n}\n.ios .dialog-button:last-child:after {\n display: none !important;\n}\n.ios .dialog-button:first-child:last-child {\n border-radius: 0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius);\n}\n.ios .dialog-button[class*='color-'] {\n --f7-dialog-button-text-color: var(--f7-theme-color);\n}\n.ios .dialog-buttons-vertical .dialog-buttons {\n height: auto;\n}\n.ios .dialog-buttons-vertical .dialog-button {\n border-radius: 0;\n}\n.ios .dialog-buttons-vertical .dialog-button:after {\n content: '';\n position: absolute;\n background-color: var(--f7-dialog-border-divider-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.ios .dialog-buttons-vertical .dialog-button:last-child {\n border-radius: 0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius);\n}\n.ios .dialog-buttons-vertical .dialog-button:last-child:after {\n display: none !important;\n}\n.ios .dialog-no-buttons .dialog-inner {\n border-radius: var(--f7-dialog-border-radius);\n}\n.ios .dialog-no-buttons .dialog-inner:after {\n display: none !important;\n}\n.ios .dialog-input-field {\n margin-top: 15px;\n}\n.ios .dialog-input {\n padding: 0 5px;\n}\n.ios .dialog-input + .dialog-input {\n margin-top: 5px;\n}\n.ios .dialog-input-double + .dialog-input-double {\n margin-top: 0;\n}\n.ios .dialog-input-double + .dialog-input-double .dialog-input {\n border-top: 0;\n margin-top: 0;\n}\n.ios .dialog-preloader .dialog-title ~ .preloader,\n.ios .dialog-preloader .dialog-text ~ .preloader {\n margin-top: 15px;\n}\n.ios .dialog-progress .dialog-title ~ .progressbar,\n.ios .dialog-progress .dialog-text ~ .progressbar,\n.ios .dialog-progress .dialog-title ~ .progressbar-infinite,\n.ios .dialog-progress .dialog-text ~ .progressbar-infinite {\n margin-top: 15px;\n}\n.md .dialog.modal-out {\n transform: translate3d(0, -50%, 0) scale(0.815);\n}\n.md .dialog-title + .dialog-text {\n margin-top: 20px;\n}\n.md .dialog-text {\n line-height: 1.5;\n}\n.md .dialog-buttons {\n height: 64px;\n padding: 0px 24px 24px;\n overflow: hidden;\n box-sizing: border-box;\n justify-content: flex-end;\n}\n.md .dialog-button {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n border-radius: 99px;\n min-width: 64px;\n padding: 0px 16px;\n border: none;\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n}\n.md .dialog-button + .dialog-button {\n margin-left: 8px;\n}\n.md .dialog-button-strong {\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.md .dialog-button[class*='color-'] {\n --f7-dialog-button-text-color: var(--f7-theme-color);\n}\n.md .dialog-buttons-vertical .dialog-buttons {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n}\n.md .dialog-buttons-vertical .dialog-button + .dialog-button {\n margin-top: 8px;\n margin-left: 0;\n}\n.md .dialog-input {\n padding: 0;\n transition-duration: 200ms;\n position: relative;\n}\n.md .dialog-input + .dialog-input {\n margin-top: 16px;\n}\n.md .dialog-preloader .dialog-title,\n.md .dialog-progress .dialog-title,\n.md .dialog-preloader .dialog-inner,\n.md .dialog-progress .dialog-inner {\n text-align: center;\n}\n.md .dialog-preloader .dialog-title ~ .preloader,\n.md .dialog-preloader .dialog-text ~ .preloader {\n margin-top: 20px;\n}\n.md .dialog-progress .dialog-title ~ .progressbar,\n.md .dialog-progress .dialog-text ~ .progressbar,\n.md .dialog-progress .dialog-title ~ .progressbar-infinite,\n.md .dialog-progress .dialog-text ~ .progressbar-infinite {\n margin-top: 16px;\n}\n/* === Popup === */\n:root {\n --f7-popup-border-radius: 0px;\n --f7-popup-tablet-width: 630px;\n --f7-popup-tablet-height: 630px;\n --f7-popup-push-offset: var(--f7-safe-area-top);\n /*\n --f7-popup-tablet-border-radius: var(--f7-popup-border-radius);\n */\n}\n.ios {\n --f7-popup-tablet-border-radius: 5px;\n --f7-popup-transition-duration: 400ms;\n --f7-popup-transition-timing-function: initial;\n --f7-popup-push-border-radius: 10px;\n}\n.md {\n --f7-popup-tablet-border-radius: 28px;\n --f7-popup-transition-duration: 600ms;\n --f7-popup-transition-timing-function: cubic-bezier(0, 1, 0.2, 1);\n --f7-popup-push-border-radius: 28px;\n}\n.popup-backdrop {\n z-index: 10500;\n}\n.popup-backdrop-unique {\n z-index: 11000;\n}\n.popup {\n position: absolute;\n left: 0;\n top: 0px;\n width: 100%;\n height: 100%;\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n transition-timing-function: var(--f7-popup-transition-timing-function);\n transform: translate3d(0, 100vh, 0);\n background: #fff;\n z-index: 11000;\n overflow: hidden;\n border-radius: var(--f7-popup-border-radius);\n}\n.dark .popup,\n.popup.dark {\n background: #000;\n}\n.popup.modal-in,\n.popup.modal-out {\n transition-duration: var(--f7-popup-transition-duration);\n}\n.popup.not-animated {\n transition-duration: 0ms;\n}\n.popup.modal-in {\n display: block;\n transform: translate3d(0, 0, 0);\n}\n.popup.modal-out {\n transform: translate3d(0, 100vh, 0);\n}\n.popup.swipe-close-to-top.modal-out {\n transform: translate3d(0, -100vh, 0);\n}\n@media (min-width: 630px) and (min-height: 630px) {\n .popup:not(.popup-tablet-fullscreen) {\n --f7-safe-area-top: 0px;\n --f7-safe-area-bottom: 0px;\n width: var(--f7-popup-tablet-width);\n height: var(--f7-popup-tablet-height);\n left: 50%;\n top: 50%;\n margin-left: calc(-1 * var(--f7-popup-tablet-width) / 2);\n margin-top: calc(-1 * var(--f7-popup-tablet-height) / 2);\n transform: translate3d(0, 100vh, 0);\n border-radius: var(--f7-popup-tablet-border-radius, var(--f7-popup-border-radius));\n }\n .popup:not(.popup-tablet-fullscreen).modal-in {\n transform: translate3d(0, 0, 0);\n }\n .popup:not(.popup-tablet-fullscreen).modal-out {\n transform: translate3d(0, 100vh, 0);\n }\n .popup:not(.popup-tablet-fullscreen).swipe-close-to-top.modal-out {\n transform: translate3d(0, -100vh, 0);\n }\n .popup:not(.popup-tablet-fullscreen).popup-behind {\n transform: translate3d(0, 0, 0) scale(0.9);\n pointer-events: none;\n }\n .popup:not(.popup-tablet-fullscreen).popup-behind.modal-out {\n transform: translate3d(0, 100vh, 0) scale(0.9);\n }\n html.with-modal-popup-push .popup-push:not(.popup-tablet-fullscreen) {\n margin-top: 0;\n }\n}\nhtml.with-modal-popup .framework7-root > .views .page-content,\nhtml.with-modal-popup .framework7-root > .view .page-content,\nhtml.with-modal-popup .framework7-root > .panel .page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\nhtml.with-modal-popup-push .popup-push,\nhtml.with-modal-popup-push-closing .popup-push {\n top: calc(var(--f7-popup-push-offset) + 10px);\n height: calc(100% - var(--f7-popup-push-offset) - 10px);\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n --f7-safe-area-top: 0px;\n}\nhtml.with-modal-popup-push .popup-push .view,\nhtml.with-modal-popup-push-closing .popup-push .view,\nhtml.with-modal-popup-push .popup-push .page,\nhtml.with-modal-popup-push-closing .popup-push .page {\n --f7-safe-area-top: 0px;\n}\nhtml.with-modal-popup-push .framework7-root,\nhtml.with-modal-popup-push-closing .framework7-root {\n background: #000;\n}\nhtml.with-modal-popup-push .framework7-root > .views,\nhtml.with-modal-popup-push-closing .framework7-root > .views,\nhtml.with-modal-popup-push .framework7-root > .view,\nhtml.with-modal-popup-push-closing .framework7-root > .view {\n transition-duration: var(--f7-popup-transition-duration);\n transition-timing-function: var(--f7-popup-transition-timing-function);\n}\nhtml.with-modal-popup-push.dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-popup-push.dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-popup-push .dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-popup-push .dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-popup-push .dark.framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-popup-push .dark.framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-popup-push .framework7-root > .views.dark:after,\nhtml.with-modal-popup-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-popup-push .framework7-root > .view.dark:after,\nhtml.with-modal-popup-push-closing .framework7-root > .view.dark:after {\n content: '';\n position: absolute;\n pointer-events: none;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(255, 255, 255, 0.1);\n z-index: 13000;\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n opacity: 1;\n animation: popup-dark-push-overlay-fade-in var(--f7-popup-transition-duration) forwards;\n}\nhtml.with-modal-popup-push .framework7-root > .views,\nhtml.with-modal-popup-push .framework7-root > .view {\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n transform: translate3d(0, 0, 0px) scale(var(--f7-popup-push-scale, 1)) !important;\n}\nhtml.with-modal-popup-push .popup:after {\n content: '';\n pointer-events: none;\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.4);\n z-index: 13000;\n transition-duration: var(--f7-popup-transition-duration);\n transition-timing-function: var(--f7-popup-transition-timing-function);\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n opacity: 0;\n}\nhtml.with-modal-popup-push.dark .popup:after,\nhtml.with-modal-popup-push .dark .popup:after,\nhtml.with-modal-popup-push .dark.popup:after {\n background: rgba(255, 255, 255, 0.05);\n}\nhtml.with-modal-popup-push .popup-behind {\n transform: translate3d(0, 0px, 0px) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind.modal-out {\n transform: translate3d(0, 100vh, 0) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind:not(.popup-push) {\n border-radius: var(--f7-popup-push-border-radius) var(--f7-popup-push-border-radius) 0 0;\n}\nhtml.with-modal-popup-push .popup-behind.popup-push {\n transform: translate3d(0, calc(0px - var(--f7-popup-push-offset) - 10px), 0px) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind.popup-push.modal-out {\n transform: translate3d(0, calc(0px - var(--f7-popup-push-offset) - 10px + 100vh), 0px) scale(var(--f7-popup-push-scale, 1));\n}\nhtml.with-modal-popup-push .popup-behind:after {\n opacity: 1;\n pointer-events: auto;\n}\nhtml.with-modal-popup-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-popup-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-popup-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-popup-push-closing .framework7-root > .view.dark:after {\n animation: popup-dark-push-overlay-fade-out var(--f7-popup-transition-duration) forwards;\n animation-timing-function: var(--f7-popup-transition-timing-function);\n}\n@keyframes popup-dark-push-overlay-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes popup-dark-push-overlay-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n/* === Login Screen === */\n:root {\n --f7-login-screen-blocks-max-width: 480px;\n --f7-login-screen-title-text-align: center;\n --f7-login-screen-title-text-color: inherit;\n --f7-login-screen-title-letter-spacing: 0;\n}\n.ios {\n --f7-login-screen-blocks-margin-vertical: 25px;\n --f7-login-screen-transition-timing-function: initial;\n --f7-login-screen-transition-duration: 400ms;\n --f7-login-screen-title-font-weight: 600;\n --f7-login-screen-title-font-size: 28px;\n --f7-login-screen-content-bg-color: #fff;\n --f7-login-screen-bg-color: #fff;\n}\n.ios .dark,\n.ios.dark {\n --f7-login-screen-bg-color: #000;\n --f7-login-screen-content-bg-color: #000;\n}\n.md {\n --f7-login-screen-transition-duration: 600ms;\n --f7-login-screen-transition-timing-function: cubic-bezier(0, 1, 0.2, 1);\n --f7-login-screen-blocks-margin-vertical: 24px;\n --f7-login-screen-title-font-weight: 400;\n --f7-login-screen-title-font-size: 28px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-login-screen-content-bg-color: var(--f7-md-surface);\n --f7-login-screen-bg-color: var(--f7-md-surface);\n}\n.login-screen {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n transform: translate3d(0, 100vh, 0);\n background: var(--f7-login-screen-bg-color);\n transition-timing-function: var(--f7-login-screen-transition-timing-function);\n z-index: 11000;\n}\n.login-screen.modal-in,\n.login-screen.modal-out {\n transition-duration: var(--f7-login-screen-transition-duration);\n}\n.login-screen.not-animated {\n transition-duration: 0ms;\n}\n.login-screen.modal-in {\n display: block;\n transform: translate3d(0, 0, 0);\n}\n.login-screen.modal-out {\n transform: translate3d(0, 100%, 0);\n}\n.login-screen-content,\n.login-screen-page,\n.login-screen .page {\n background: var(--f7-login-screen-content-bg-color);\n}\n.login-screen-content .login-screen-title,\n.login-screen-page .login-screen-title,\n.login-screen-content .list,\n.login-screen-page .list,\n.login-screen-content .block,\n.login-screen-page .block {\n margin: var(--f7-login-screen-blocks-margin-vertical) auto;\n}\n.login-screen-content .login-screen-title,\n.login-screen-page .login-screen-title,\n.login-screen-content .list,\n.login-screen-page .list,\n.login-screen-content .block,\n.login-screen-page .block,\n.login-screen-content .block-footer,\n.login-screen-page .block-footer,\n.login-screen-content .block-header,\n.login-screen-page .block-header {\n max-width: var(--f7-login-screen-blocks-max-width);\n}\n.login-screen-content .list ul,\n.login-screen-page .list ul {\n background: none;\n}\n.login-screen-content .list ul:before,\n.login-screen-page .list ul:before,\n.login-screen-content .list ul:after,\n.login-screen-page .list ul:after {\n display: none !important;\n}\n.login-screen-content .block-footer,\n.login-screen-page .block-footer,\n.login-screen-content .block-header,\n.login-screen-page .block-header {\n text-align: center;\n margin-left: auto;\n margin-right: auto;\n}\n.login-screen-title {\n text-align: var(--f7-login-screen-title-text-align);\n font-size: var(--f7-login-screen-title-font-size);\n font-weight: var(--f7-login-screen-title-font-weight);\n color: var(--f7-login-screen-title-text-color);\n letter-spacing: var(--f7-login-screen-title-letter-spacing);\n}\n.login-screen-page,\n.login-screen > .view > .page,\n.login-screen > .page {\n display: flex;\n flex-direction: column;\n}\n.login-screen-page .page-content,\n.login-screen > .view > .page .page-content,\n.login-screen > .page .page-content,\n.login-screen-page .login-screen-content,\n.login-screen > .view > .page .login-screen-content,\n.login-screen > .page .login-screen-content {\n margin-top: auto;\n margin-bottom: auto;\n height: auto;\n max-height: 100%;\n width: 100%;\n}\n.dark .login-screen-content .list ul,\n.dark .login-screen-content .block-strong,\n.dark .login-screen-page .list ul,\n.dark .login-screen-page .block-strong,\n.dark.login-screen-page .list ul,\n.dark.login-screen-page .block-strong {\n background-color: transparent;\n}\n/* === Popover === */\n:root {\n --f7-popover-width: 260px;\n}\n.ios {\n --f7-popover-border-radius: 13px;\n --f7-popover-actions-icon-size: 28px;\n --f7-popover-transition-timing-function: initial;\n --f7-popover-bg-color: rgba(255, 255, 255, 0.95);\n --f7-popover-actions-label-text-color: rgba(0, 0, 0, 0.45);\n}\n.ios .dark,\n.ios.dark {\n --f7-popover-bg-color: rgba(30, 30, 30, 0.95);\n --f7-popover-actions-label-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-popover-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n --f7-popover-border-radius: 28px;\n --f7-popover-actions-icon-size: 24px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-popover-bg-color: var(--f7-md-surface-3);\n --f7-popover-actions-label-text-color: var(--f7-md-on-surface-variant);\n}\n.popover-backdrop-unique {\n z-index: 13500;\n}\n.popover {\n width: var(--f7-popover-width);\n z-index: 13500;\n margin: 0;\n top: 0;\n opacity: 0;\n left: 0;\n position: absolute;\n display: none;\n transition-duration: 300ms;\n background-color: var(--f7-popover-bg-color);\n border-radius: var(--f7-popover-border-radius);\n will-change: transform, opacity;\n --f7-safe-area-top: 0px;\n --f7-safe-area-left: 0px;\n --f7-safe-area-right: 0px;\n --f7-safe-area-bottom: 0px;\n}\n.popover .list {\n margin: 0;\n}\n.popover .list ul {\n background: none;\n}\n.popover .list:first-child ul:before {\n display: none !important;\n}\n.popover .list:last-child ul:after {\n display: none !important;\n}\n.popover .list:first-child ul {\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n}\n.popover .list:first-child li:first-child,\n.popover .list:first-child li:first-child a,\n.popover .list:first-child li:first-child > label {\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n}\n.popover .list:last-child ul {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.popover .list:last-child li:last-child,\n.popover .list:last-child li:last-child a,\n.popover .list:last-child li:last-child > label {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.popover .list:first-child:last-child li:first-child:last-child,\n.popover .list:first-child:last-child li:first-child:last-child a,\n.popover .list:first-child:last-child li:first-child:last-child > label,\n.popover .list:first-child:last-child ul {\n border-radius: var(--f7-popover-border-radius);\n}\n.popover .list + .list {\n margin-top: var(--f7-list-margin-vertical);\n}\n.popover.modal-in {\n opacity: 1;\n}\n.popover.not-animated {\n transition-duration: 0ms;\n}\n.popover,\n.popover-backdrop {\n transition-timing-function: var(--f7-popover-transition-timing-function);\n}\n.popover-inner {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n}\n.popover-from-actions .item-link i.icon {\n width: var(--f7-popover-actions-icon-size);\n height: var(--f7-popover-actions-icon-size);\n font-size: var(--f7-popover-actions-icon-size);\n}\n.ios .popover-from-actions-strong {\n font-weight: 600;\n}\n.md .popover-from-actions-strong {\n font-weight: 500;\n}\n.popover-from-actions-label {\n line-height: 1.3;\n position: relative;\n display: flex;\n align-items: center;\n padding: var(--f7-actions-label-padding);\n color: var(--f7-popover-actions-label-text-color);\n font-size: var(--f7-actions-label-font-size);\n justify-content: var(--f7-actions-label-justify-content);\n}\n.popover-from-actions-label:after {\n content: '';\n position: absolute;\n background-color: var(--f7-list-item-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.popover-from-actions-label:last-child:after {\n display: none !important;\n}\n.md .popover-from-actions-label {\n justify-content: center;\n}\n.popover-arrow {\n width: 26px;\n height: 26px;\n position: absolute;\n left: -26px;\n top: 0;\n z-index: 100;\n overflow: hidden;\n}\n.popover-arrow:after {\n content: '';\n background: var(--f7-popover-bg-color);\n width: 26px;\n height: 26px;\n position: absolute;\n left: 0;\n top: 0;\n border-radius: 3px;\n transform: rotate(45deg);\n}\n.popover-arrow.on-left {\n left: -26px;\n}\n.popover-arrow.on-left:after {\n left: 19px;\n top: 0;\n}\n.popover-arrow.on-right {\n left: 100%;\n}\n.popover-arrow.on-right:after {\n left: -19px;\n top: 0;\n}\n.popover-arrow.on-top {\n left: 0;\n top: -26px;\n}\n.popover-arrow.on-top:after {\n left: 0;\n top: 19px;\n}\n.popover-arrow.on-bottom {\n left: 0;\n top: 100%;\n}\n.popover-arrow.on-bottom:after {\n left: 0;\n top: -19px;\n}\n.ios .popover {\n transform: none;\n transition-property: opacity;\n}\n.md .popover {\n transform: scale(0.85, 0.6);\n transition-property: opacity, transform;\n}\n.md .popover.modal-in {\n opacity: 1;\n transform: scale(1);\n}\n.md .popover.modal-out {\n opacity: 0;\n transform: scale(1);\n}\n.md .popover-on-top {\n transform-origin: center bottom;\n}\n.md .popover-on-top.popover-on-right {\n transform-origin: left bottom;\n}\n.md .popover-on-top.popover-on-left {\n transform-origin: right bottom;\n}\n.md .popover-on-middle {\n transform-origin: center center;\n}\n.md .popover-on-middle.popover-on-right {\n transform-origin: left center;\n}\n.md .popover-on-middle.popover-on-left {\n transform-origin: right center;\n}\n.md .popover-on-bottom {\n transform-origin: center top;\n}\n.md .popover-on-bottom.popover-on-right {\n transform-origin: left top;\n}\n.md .popover-on-bottom.popover-on-left {\n transform-origin: right top;\n}\n/* === Actions === */\n:root {\n --f7-actions-grid-button-font-size: 12px;\n --f7-actions-grid-button-icon-size: 48px;\n}\n.ios {\n --f7-actions-transition-timing-function: initial;\n --f7-actions-border-radius: 13px;\n /*\n --f7-actions-button-text-color: var(--f7-theme-color);\n */\n --f7-actions-grid-button-text-color: #757575;\n --f7-actions-button-padding: 0px;\n --f7-actions-button-text-align: center;\n --f7-actions-button-height: 57px;\n --f7-actions-button-height-landscape: 44px;\n --f7-actions-button-font-size: 20px;\n --f7-actions-button-icon-size: 28px;\n --f7-actions-button-justify-content: center;\n --f7-actions-label-padding: 8px 10px;\n --f7-actions-label-font-weight: 400;\n --f7-actions-label-font-size: 13px;\n --f7-actions-label-justify-content: center;\n --f7-actions-group-border-color: transparent;\n --f7-actions-group-margin: 8px;\n --f7-actions-bg-color: rgba(255, 255, 255, 0.95);\n --f7-actions-bg-color-rgb: 255, 255, 255;\n --f7-actions-button-border-color: rgba(0, 0, 0, 0.2);\n --f7-actions-button-pressed-bg-color: rgba(230, 230, 230, 0.9);\n --f7-actions-button-pressed-bg-color-rgb: 230, 230, 230;\n --f7-actions-label-text-color: #8a8a8a;\n}\n.ios .dark,\n.ios.dark {\n --f7-actions-bg-color: rgba(45, 45, 45, 0.95);\n --f7-actions-bg-color-rgb: 45, 45, 45;\n --f7-actions-button-border-color: rgba(255, 255, 255, 0.15);\n --f7-actions-button-pressed-bg-color: rgba(50, 50, 50, 0.9);\n --f7-actions-button-pressed-bg-color-rgb: 50, 50, 50;\n --f7-actions-label-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-actions-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n --f7-actions-border-radius: 16px;\n --f7-actions-button-border-color: transparent;\n --f7-actions-button-padding: 0 16px;\n --f7-actions-button-text-align: left;\n --f7-actions-button-height: 48px;\n --f7-actions-button-height-landscape: 48px;\n --f7-actions-button-font-size: 16px;\n --f7-actions-button-icon-size: 24px;\n --f7-actions-button-justify-content: space-between;\n --f7-actions-label-padding: 12px 16px;\n --f7-actions-label-font-size: 14px;\n --f7-actions-label-font-weight: 500;\n --f7-actions-label-justify-content: flex-start;\n --f7-actions-group-margin: 0px;\n --f7-actions-button-pressed-bg-color: #e5e5e5;\n}\n.md .dark,\n.md.dark {\n --f7-actions-button-pressed-bg-color: #2e2e2e;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-actions-button-text-color: var(--f7-md-on-surface);\n --f7-actions-bg-color: var(--f7-md-surface-3);\n --f7-actions-group-border-color: var(--f7-md-outline);\n --f7-actions-label-text-color: var(--f7-theme-color);\n --f7-actions-grid-button-text-color: var(--f7-md-on-surface);\n}\n.actions-backdrop-unique {\n z-index: 13500;\n}\n.actions-modal {\n position: absolute;\n left: 0;\n bottom: 0;\n z-index: 13500;\n width: 100%;\n transform: translate3d(0, 100%, 0);\n display: none;\n max-height: 100%;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n transition-property: transform;\n will-change: transform;\n}\n.actions-modal.modal-in,\n.actions-modal.modal-out {\n transition-duration: 300ms;\n}\n.actions-modal.not-animated {\n transition-duration: 0ms;\n}\n.ios .actions-modal.modal-in {\n transform: translate3d(0, calc(-1 * var(--f7-safe-area-bottom)), 0);\n}\n.md .actions-modal.modal-in {\n transform: translate3d(0, 0, 0);\n}\n.actions-modal.modal-out {\n z-index: 13499;\n transform: translate3d(0, 100%, 0);\n}\n@media (min-width: 496px) {\n .actions-modal {\n width: 480px;\n left: 50%;\n margin-left: -240px;\n }\n}\n@media (orientation: landscape) {\n .actions-modal {\n --f7-actions-button-height: var(--f7-actions-button-height-landscape);\n }\n}\n.actions-backdrop,\n.actions-modal {\n transition-timing-function: var(--f7-actions-transition-timing-function);\n}\n.actions-group {\n overflow: hidden;\n position: relative;\n margin: var(--f7-actions-group-margin);\n transform: translate3d(0, 0, 0);\n}\n.actions-group:after {\n content: '';\n position: absolute;\n background-color: var(--f7-actions-group-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.actions-group:last-child:after {\n display: none !important;\n}\n.actions-button,\n.actions-label {\n width: 100%;\n font-weight: normal;\n margin: 0;\n box-sizing: border-box;\n display: block;\n position: relative;\n overflow: hidden;\n text-align: var(--f7-actions-button-text-align);\n}\n.actions-button:after,\n.actions-label:after {\n content: '';\n position: absolute;\n background-color: var(--f7-actions-button-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.actions-button a,\n.actions-label a {\n text-decoration: none;\n color: inherit;\n display: block;\n}\n.actions-button {\n cursor: pointer;\n display: flex;\n color: var(--f7-actions-button-text-color, var(--f7-theme-color));\n font-size: var(--f7-actions-button-font-size);\n height: var(--f7-actions-button-height);\n line-height: var(--f7-actions-button-height);\n padding: var(--f7-actions-button-padding);\n justify-content: var(--f7-actions-button-justify-content);\n z-index: 10;\n}\n.actions-button.active-state {\n background-color: var(--f7-actions-button-pressed-bg-color) !important;\n}\n.actions-button[class*='color-'] {\n color: var(--f7-theme-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .actions-button.active-state {\n background-color: rgba(var(--f7-actions-button-pressed-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.actions-button-media {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n}\n.actions-button-media i.icon {\n width: var(--f7-actions-button-icon-size);\n height: var(--f7-actions-button-icon-size);\n font-size: var(--f7-actions-button-icon-size);\n}\n.actions-button a,\n.actions-button-text {\n position: relative;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.actions-button-text {\n width: 100%;\n flex-shrink: 1;\n text-align: var(--f7-actions-button-text-align);\n}\n.actions-label {\n line-height: 1.3;\n display: flex;\n align-items: center;\n font-size: var(--f7-actions-label-font-size);\n font-weight: var(--f7-actions-label-font-weight);\n color: var(--f7-actions-label-text-color);\n padding: var(--f7-actions-label-padding);\n justify-content: var(--f7-actions-label-justify-content);\n min-height: var(--f7-actions-label-min-height, var(--f7-actions-button-height));\n}\n.actions-label[class*=' color-'] {\n --f7-actions-label-text-color: var(--f7-theme-color);\n}\n.actions-grid .actions-group {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n margin-top: 0;\n}\n.actions-grid .actions-group:not(:last-child) {\n margin-bottom: 0;\n}\n.actions-grid .actions-button,\n.actions-grid .actions-label {\n background: none;\n}\n.actions-grid .actions-button {\n width: 33.33333333%;\n display: block;\n color: var(--f7-actions-grid-button-text-color);\n height: auto;\n line-height: 1;\n padding: 16px;\n}\n.actions-grid .actions-button:after {\n display: none !important;\n}\n.actions-grid .actions-button-media {\n margin-left: auto !important;\n margin-right: auto !important;\n width: var(--f7-actions-grid-button-icon-size);\n height: var(--f7-actions-grid-button-icon-size);\n}\n.actions-grid .actions-button-media i.icon {\n width: var(--f7-actions-grid-button-icon-size);\n height: var(--f7-actions-grid-button-icon-size);\n font-size: var(--f7-actions-grid-button-icon-size);\n}\n.actions-grid .actions-button-text {\n margin-left: 0 !important;\n text-align: center !important;\n margin-top: 8px;\n line-height: 1.33em;\n height: 1.33em;\n font-size: var(--f7-actions-grid-button-font-size);\n}\n.ios .actions-group {\n border-radius: var(--f7-actions-border-radius);\n}\n.ios .actions-button,\n.ios .actions-label {\n background: var(--f7-actions-bg-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .ios .actions-button,\n .ios-translucent-modals .ios .actions-label {\n background-color: rgba(var(--f7-actions-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.ios .actions-button:first-child,\n.ios .actions-label:first-child {\n border-radius: var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;\n}\n.ios .actions-button:last-child,\n.ios .actions-label:last-child {\n border-radius: 0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius);\n}\n.ios .actions-button:last-child:after,\n.ios .actions-label:last-child:after {\n display: none !important;\n}\n.ios .actions-button:first-child:last-child,\n.ios .actions-label:first-child:last-child {\n border-radius: var(--f7-actions-border-radius);\n}\n.ios .actions-button b,\n.ios .actions-label b,\n.ios .actions-button.actions-button-strong,\n.ios .actions-label.actions-button-strong {\n font-weight: 600;\n}\n.ios .actions-grid .actions-group {\n border-radius: 0;\n background: var(--f7-actions-bg-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .ios .actions-grid .actions-group {\n background-color: rgba(var(--f7-actions-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.ios .actions-grid .actions-group:first-child {\n border-radius: var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;\n}\n.ios .actions-grid .actions-group:last-child {\n border-radius: 0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius);\n}\n.ios .actions-grid .actions-group:first-child:last-child {\n border-radius: var(--f7-actions-border-radius);\n}\n.ios .actions-grid .actions-button,\n.ios .actions-grid .actions-label {\n border-radius: 0 !important;\n}\n.ios .actions-button-media {\n margin-left: 16px;\n}\n.ios .actions-button-media + .actions-button-text {\n text-align: left;\n margin-left: 16px;\n}\n.md .actions-modal {\n background-color: var(--f7-actions-bg-color);\n border-radius: var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0;\n padding-bottom: var(--f7-safe-area-bottom);\n}\n.md .actions-button {\n transition-duration: 300ms;\n}\n.md .actions-button b,\n.md .actions-label b,\n.md .actions-button.actions-button-strong,\n.md .actions-label.actions-button-strong {\n font-weight: 500;\n}\n.md .actions-button-media {\n min-width: 40px;\n}\n.md .actions-button-media + .actions-button-text {\n margin-left: 16px;\n}\n/* === Sheet Modal === */\n:root {\n --f7-sheet-height: 260px;\n --f7-sheet-push-offset: var(--f7-safe-area-top);\n}\n.ios {\n --f7-sheet-border-radius: 0px;\n --f7-sheet-border-color: var(--f7-bars-border-color);\n --f7-sheet-transition-timing-function: initial;\n --f7-sheet-push-border-radius: 10px;\n --f7-sheet-transition-duration: 300ms;\n --f7-sheet-bg-color: #fff;\n}\n.ios .dark,\n.ios.dark {\n --f7-sheet-bg-color: #202020;\n}\n.md {\n --f7-sheet-border-radius: 16px;\n --f7-sheet-push-border-radius: 16px;\n --f7-sheet-border-color: transparent;\n --f7-sheet-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n --f7-sheet-transition-duration: 400ms;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-sheet-bg-color: var(--f7-md-surface);\n}\n.sheet-backdrop {\n z-index: 11000;\n}\n.sheet-backdrop-unique {\n z-index: 12500;\n}\n.sheet-modal {\n overflow: hidden;\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n height: var(--f7-sheet-height);\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n transform: translate3d(0, 100%, 0);\n background: var(--f7-sheet-bg-color);\n z-index: 12500;\n will-change: transform, opacity;\n}\n.sheet-modal.modal-in,\n.sheet-modal.modal-out {\n transition-duration: var(--f7-sheet-transition-duration);\n}\n.sheet-modal.not-animated {\n transition-duration: 0ms;\n}\n.sheet-modal.modal-in {\n display: block;\n transform: translate3d(0, 0, 0);\n}\n.sheet-modal.modal-in-swipe-step,\n.sheet-modal.modal-in-breakpoint {\n display: block;\n transform: translate3d(0, var(--f7-sheet-breakpoint, var(--f7-sheet-swipe-step, 0)), 0);\n}\n.sheet-modal.modal-out {\n transform: translate3d(0, 100%, 0);\n}\n.sheet-modal .sheet-modal-inner {\n height: 100%;\n position: relative;\n overflow: hidden;\n}\n.sheet-modal .toolbar {\n --f7-safe-area-bottom: 0px;\n position: relative;\n width: 100%;\n}\n.sheet-modal .toolbar:after,\n.sheet-modal .toolbar:before {\n display: none;\n}\n.sheet-modal .toolbar + .sheet-modal-inner {\n height: calc(100% - var(--f7-toolbar-height));\n}\n.sheet-modal .toolbar + .sheet-modal-inner .page-content {\n --f7-page-toolbar-top-offset: 0px;\n --f7-page-toolbar-bottom-offset: 0px;\n}\n.sheet-backdrop,\n.sheet-modal {\n transition-timing-function: var(--f7-sheet-transition-timing-function);\n}\n.sheet-modal-top {\n border-radius: 0 0 var(--f7-sheet-border-radius) var(--f7-sheet-border-radius);\n}\n.sheet-modal-top:after {\n content: '';\n position: absolute;\n background-color: var(--f7-sheet-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.sheet-modal-top:after {\n z-index: 700;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n transform-style: preserve-3d;\n}\n.sheet-modal-bottom,\n.sheet-modal:not(.sheet-modal-top) {\n --f7-safe-area-top: 0px;\n border-radius: var(--f7-sheet-border-radius) var(--f7-sheet-border-radius) 0 0;\n}\n.sheet-modal-bottom:before,\n.sheet-modal:not(.sheet-modal-top):before {\n content: '';\n position: absolute;\n background-color: var(--f7-sheet-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.sheet-modal-bottom:before,\n.sheet-modal:not(.sheet-modal-top):before {\n z-index: 700;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n transform-style: preserve-3d;\n}\n.sheet-modal-top {\n --f7-safe-area-bottom: 0px;\n bottom: auto;\n top: 0;\n transform: translate3d(0, -100%, 0);\n}\n.sheet-modal-top.modal-out {\n transform: translate3d(0, -100%, 0);\n}\n.sheet-modal-top .toolbar-bottom {\n position: absolute;\n}\n.sheet-modal-top .page-content {\n padding-top: var(--f7-safe-area-top);\n}\nhtml.with-modal-sheet-push .sheet-modal-push,\nhtml.with-modal-sheet-push-closing .sheet-modal-push {\n --f7-sheet-border-color: transparent;\n border-radius: var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius) 0 0;\n overflow: hidden;\n}\nhtml.with-modal-sheet-push .sheet-modal-push .view,\nhtml.with-modal-sheet-push-closing .sheet-modal-push .view,\nhtml.with-modal-sheet-push .sheet-modal-push .page,\nhtml.with-modal-sheet-push-closing .sheet-modal-push .page {\n --f7-safe-area-top: 0px;\n}\nhtml.with-modal-sheet-push .sheet-modal-push.sheet-modal-top,\nhtml.with-modal-sheet-push-closing .sheet-modal-push.sheet-modal-top {\n border-radius: 0 0 var(--f7-sheet-push-border-radius) var(--f7-sheet-push-border-radius);\n}\nhtml.with-modal-sheet-push .framework7-root,\nhtml.with-modal-sheet-push-closing .framework7-root {\n background: #000;\n}\nhtml.with-modal-sheet-push .framework7-root > .views,\nhtml.with-modal-sheet-push-closing .framework7-root > .views,\nhtml.with-modal-sheet-push .framework7-root > .view,\nhtml.with-modal-sheet-push-closing .framework7-root > .view {\n transition-duration: var(--f7-sheet-transition-duration);\n transition-timing-function: var(--f7-sheet-transition-timing-function);\n}\nhtml.with-modal-sheet-push.dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push.dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push .dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push .dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push .dark.framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-sheet-push .dark.framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-sheet-push .framework7-root > .views.dark:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-sheet-push .framework7-root > .view.dark:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .view.dark:after {\n content: '';\n position: absolute;\n pointer-events: none;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(255, 255, 255, 0.1);\n z-index: 13000;\n opacity: 1;\n transition-duration: var(--f7-sheet-transition-duration);\n transition-timing-function: var(--f7-sheet-transition-timing-function);\n animation: sheet-dark-push-overlay-fade-in var(--f7-sheet-transition-duration);\n animation-timing-function: var(--f7-sheet-transition-timing-function);\n}\nhtml.with-modal-sheet-push .framework7-root > .views,\nhtml.with-modal-sheet-push .framework7-root > .view {\n border-radius: var(--f7-sheet-push-border-radius);\n transform: translate3d(0, 0, 0px) scale(var(--f7-sheet-push-scale, 1)) !important;\n}\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing.dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark .framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .views:after,\nhtml.with-modal-sheet-push-closing .dark.framework7-root > .view:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .views.dark:after,\nhtml.with-modal-sheet-push-closing .framework7-root > .view.dark:after {\n opacity: 0;\n animation: none;\n}\n@keyframes sheet-dark-push-overlay-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n.md .sheet-modal .toolbar a.link:not(.tab-link) {\n flex-shrink: 0;\n}\n/* === Toast === */\n:root {\n --f7-toast-font-size: 14px;\n --f7-toast-icon-size: 48px;\n --f7-toast-max-width: 568px;\n}\n.ios {\n --f7-toast-text-color: #fff;\n --f7-toast-bg-color: rgba(0, 0, 0, 0.75);\n --f7-toast-bg-color-rgb: 0, 0, 0;\n --f7-toast-padding-horizontal: 16px;\n --f7-toast-padding-vertical: 12px;\n --f7-toast-border-radius: 8px;\n --f7-toast-button-min-width: 64px;\n}\n.md {\n --f7-toast-padding-horizontal: 24px;\n --f7-toast-padding-vertical: 14px;\n --f7-toast-border-radius: 16px;\n --f7-toast-button-min-width: 64px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-toast-text-color: var(--f7-md-on-surface);\n --f7-toast-bg-color: var(--f7-md-surface-5);\n}\n.toast {\n transition-property: transform, opacity;\n position: absolute;\n max-width: var(--f7-toast-max-width);\n z-index: 20000;\n color: var(--f7-toast-text-color);\n font-size: var(--f7-toast-font-size);\n box-sizing: border-box;\n background-color: var(--f7-toast-bg-color);\n opacity: 0;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .toast {\n background-color: rgba(var(--f7-toast-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n.toast.modal-in {\n opacity: 1;\n}\n.toast .toast-content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-sizing: border-box;\n padding: var(--f7-toast-padding-vertical) var(--f7-toast-padding-horizontal);\n}\n.toast .toast-text {\n line-height: 20px;\n flex-shrink: 1;\n min-width: 0;\n}\n.toast .toast-button {\n flex-shrink: 0;\n min-width: var(--f7-toast-button-min-width);\n margin-top: -8px;\n margin-bottom: -8px;\n}\n.toast.toast-with-icon .toast-content {\n display: block;\n text-align: center;\n}\n.toast.toast-with-icon .toast-text {\n text-align: center;\n}\n.toast.toast-with-icon .toast-icon .f7-icons,\n.toast.toast-with-icon .toast-icon .material-icons {\n font-size: var(--f7-toast-icon-size);\n}\n.toast.toast-center {\n top: 50%;\n}\n.toast.toast-top {\n margin-top: var(--f7-safe-area-top);\n}\n.ios .toast {\n transition-duration: 300ms;\n width: 100%;\n left: 0;\n}\n.ios .toast.toast-top {\n top: 0;\n transform: translate3d(0, -100%, 0);\n}\n.ios .toast.toast-top.modal-in {\n transform: translate3d(0, 0%, 0);\n}\n.ios .toast.toast-center {\n width: auto;\n left: 50%;\n border-radius: var(--f7-toast-border-radius);\n transform: translate3d(-50%, -50%, 0);\n}\n.ios .toast.toast-center.modal-in {\n transform: translate3d(-50%, -50%, 0);\n}\n.ios .toast.toast-bottom {\n bottom: 0;\n transform: translate3d(0, 100%, 0);\n}\n.ios .toast.toast-bottom.modal-in {\n transform: translate3d(0, 0%, 0);\n}\n@media (max-width: 568px) {\n .ios .toast.toast-top {\n margin-top: 0;\n }\n .ios .toast.toast-top .toast-content {\n padding-top: calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-top));\n }\n .ios .toast.toast-bottom .toast-content {\n padding-bottom: calc(var(--f7-toast-padding-vertical) + var(--f7-safe-area-bottom));\n }\n}\n@media (min-width: 569px) {\n .ios .toast {\n left: 50%;\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n border-radius: var(--f7-toast-border-radius);\n }\n .ios .toast.toast-top {\n top: 16px;\n }\n .ios .toast.toast-center {\n margin-left: 0;\n }\n .ios .toast.toast-bottom {\n margin-bottom: calc(16px + var(--f7-safe-area-bottom));\n }\n}\n@media (min-width: 1024px) {\n .ios .toast {\n margin-left: 0;\n width: auto;\n }\n .ios .toast.toast-horizontal-left {\n left: 16px;\n }\n .ios .toast.toast-horizontal-right {\n left: auto;\n right: 16px;\n }\n .ios .toast.toast-horizontal-center {\n left: 50%;\n width: var(--f7-toast-max-width);\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n }\n}\n.ios .toast-button {\n margin-left: 16px;\n margin-right: calc(-1 * var(--f7-button-padding-horizontal));\n}\n.md .toast {\n transition-duration: 200ms;\n border-radius: var(--f7-toast-border-radius);\n width: calc(100% - 16px);\n transform: scale(0.9);\n left: 8px;\n}\n.md .toast.modal-in {\n transform: scale(1);\n}\n.md .toast.modal-out {\n transform: scale(1);\n}\n.md .toast.toast-top {\n top: 8px;\n}\n.md .toast.toast-center {\n left: 50%;\n width: auto;\n transform: scale(0.9) translate3d(-55%, -55%, 0);\n}\n.md .toast.toast-center.modal-in {\n transform: scale(1) translate3d(-50%, -50%, 0);\n}\n.md .toast.toast-center.modal-out {\n transform: scale(1) translate3d(-50%, -50%, 0);\n}\n.md .toast.toast-bottom {\n bottom: calc(8px + var(--f7-safe-area-bottom));\n}\n@media (min-width: 584px) {\n .md .toast {\n left: 50%;\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n }\n .md .toast.toast-center {\n margin-left: 0;\n }\n}\n@media (min-width: 1024px) {\n .md .toast {\n margin-left: 0;\n width: auto;\n }\n .md .toast.toast-horizontal-left {\n left: 24px;\n }\n .md .toast.toast-horizontal-right {\n left: auto;\n right: 24px;\n }\n .md .toast.toast-horizontal-center {\n left: 50%;\n width: var(--f7-toast-max-width);\n margin-left: calc(-1 * var(--f7-toast-max-width) / 2);\n }\n .md .toast.toast-bottom {\n bottom: calc(24px + var(--f7-safe-area-bottom));\n }\n .md .toast.toast-top {\n top: 24px;\n }\n}\n.md .toast-button {\n margin-left: 16px;\n margin-right: -8px;\n}\n/* === Preloader === */\n:root {\n --f7-preloader-modal-padding: 8px;\n --f7-preloader-modal-bg-color: rgba(0, 0, 0, 0.8);\n}\n.ios {\n --f7-preloader-color: #6c6c6c;\n --f7-preloader-size: 20px;\n --f7-preloader-modal-preloader-size: 34px;\n --f7-preloader-modal-border-radius: 5px;\n}\n.md {\n --f7-preloader-color: #757575;\n --f7-preloader-size: 32px;\n --f7-preloader-modal-preloader-size: 32px;\n --f7-preloader-modal-border-radius: 4px;\n}\n.preloader {\n display: inline-block;\n vertical-align: middle;\n width: var(--f7-preloader-size);\n height: var(--f7-preloader-size);\n font-size: 0;\n position: relative;\n}\n.preloader .preloader-inner {\n width: 100%;\n height: 100%;\n display: block;\n position: relative;\n}\n/* === Preloader Modal === */\n.preloader-backdrop {\n visibility: visible;\n opacity: 0;\n background: none;\n z-index: 14000;\n}\n.preloader-modal {\n position: absolute;\n left: 50%;\n top: 50%;\n padding: var(--f7-preloader-modal-padding);\n background: var(--f7-preloader-modal-bg-color);\n z-index: 14500;\n transform: translateX(-50%) translateY(-50%);\n border-radius: var(--f7-preloader-modal-border-radius);\n}\n.preloader-modal .preloader {\n --f7-preloader-size: var(--f7-preloader-modal-preloader-size);\n display: block !important;\n}\nhtml.with-modal-preloader .page-content,\n.with-modal-preloader .page-content,\n.with-modal-preloader.page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\n.preloader[class*='color-'] {\n --f7-preloader-color: var(--f7-theme-color);\n}\n.preloader.color-white {\n --f7-preloader-color: #fff;\n}\n.preloader.color-black {\n --f7-preloader-color: #000;\n}\n.ios .preloader {\n color: var(--f7-preloader-color);\n}\n.ios .preloader-inner {\n animation: ios-preloader-spin 1s steps(8, end) infinite;\n}\n.ios .preloader-inner-line {\n display: block;\n width: 11.6%;\n height: 33.33%;\n border-radius: 100px;\n background: currentColor;\n position: absolute;\n left: 50%;\n top: 50%;\n transform-origin: center 150%;\n}\n.ios .preloader-multi-color .preloader-inner-line,\n.ios .preloader.color-multi .preloader-inner-line {\n animation: ios-preloader-multicolor 3s linear infinite;\n}\n.ios .preloader-inner-line:nth-child(1) {\n transform: translate(-50%, -150%) rotate(0deg);\n opacity: 0.27;\n}\n.ios .preloader-inner-line:nth-child(2) {\n transform: translate(-50%, -150%) rotate(45deg);\n opacity: 0.35285714;\n}\n.ios .preloader-inner-line:nth-child(3) {\n transform: translate(-50%, -150%) rotate(90deg);\n opacity: 0.43571429;\n}\n.ios .preloader-inner-line:nth-child(4) {\n transform: translate(-50%, -150%) rotate(135deg);\n opacity: 0.51857143;\n}\n.ios .preloader-inner-line:nth-child(5) {\n transform: translate(-50%, -150%) rotate(180deg);\n opacity: 0.60142857;\n}\n.ios .preloader-inner-line:nth-child(6) {\n transform: translate(-50%, -150%) rotate(225deg);\n opacity: 0.68428571;\n}\n.ios .preloader-inner-line:nth-child(7) {\n transform: translate(-50%, -150%) rotate(270deg);\n opacity: 0.76714286;\n}\n.ios .preloader-inner-line:nth-child(8) {\n transform: translate(-50%, -150%) rotate(315deg);\n opacity: 0.85;\n}\n@keyframes ios-preloader-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n@keyframes ios-preloader-multicolor {\n 0%,\n 100% {\n background-color: #2196f3;\n }\n 25% {\n background-color: #ff3b30;\n }\n 50% {\n background-color: #4cd964;\n }\n 75% {\n background-color: #ff9500;\n }\n}\n.md .preloader {\n color: var(--f7-preloader-color);\n}\n.md .preloader-inner {\n animation: md-preloader-rotate 1.4s linear infinite;\n}\n.md .preloader-inner circle {\n fill: none;\n stroke: currentColor;\n animation: md-preloader-circle-rotate 5.6s ease-in-out infinite;\n stroke-dasharray: 100px;\n stroke-dashoffset: 80px;\n stroke-width: 4;\n transform: rotate(-90deg);\n transform-origin: 18px 18px;\n}\n.md .preloader-multi-color circle,\n.md .preloader.color-multi circle {\n animation: md-preloader-circle-rotate 5.6s ease-in-out infinite, md-preloader-multicolor 5.6s ease-in-out infinite;\n}\n@keyframes md-preloader-multicolor {\n 0%,\n 100% {\n stroke: #4285f4;\n }\n 75% {\n stroke: #1b9a59;\n }\n 50% {\n stroke: #f7c223;\n }\n 25% {\n stroke: #de3e35;\n }\n}\n@keyframes md-preloader-rotate {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n@keyframes md-preloader-circle-rotate {\n 0% {\n transform: rotate(-90deg);\n stroke-dashoffset: 100px;\n }\n 12.5% {\n transform: rotate(-90deg);\n stroke-dashoffset: 25px;\n }\n 25% {\n stroke-dashoffset: 100px;\n transform: rotate(180deg);\n }\n 25.1% {\n transform: rotate(-180deg);\n stroke-dashoffset: 100px;\n }\n 37.5% {\n transform: rotate(-180deg);\n stroke-dashoffset: 25px;\n }\n 50% {\n stroke-dashoffset: 100px;\n transform: rotate(90deg);\n }\n 50.1% {\n transform: rotate(90deg);\n stroke-dashoffset: 100px;\n }\n 62.5% {\n transform: rotate(90deg);\n stroke-dashoffset: 25px;\n }\n 75% {\n stroke-dashoffset: 100px;\n transform: rotate(360deg);\n }\n 75.1% {\n transform: rotate(0deg);\n stroke-dashoffset: 100px;\n }\n 87.5% {\n transform: rotate(0deg);\n stroke-dashoffset: 25px;\n }\n 100% {\n stroke-dashoffset: 100px;\n transform: rotate(270deg);\n }\n}\n/* === Progressbar === */\n:root {\n /*\n --f7-progressbar-progress-color: var(--f7-theme-color);\n */\n}\n.ios {\n --f7-progressbar-height: 4px;\n --f7-progressbar-border-radius: 4px;\n --f7-progressbar-bg-color: rgba(0, 0, 0, 0.3);\n}\n.ios .dark,\n.ios.dark {\n --f7-progressbar-bg-color: rgba(255, 255, 255, 0.3);\n}\n.md {\n --f7-progressbar-height: 4px;\n --f7-progressbar-border-radius: 0px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-progressbar-bg-color: rgba(var(--f7-theme-color-rgb), 0.5);\n}\n.progressbar,\n.progressbar-infinite {\n width: 100%;\n overflow: hidden;\n position: relative;\n display: block;\n transform-style: preserve-3d;\n background: var(--f7-progressbar-bg-color, rgba(var(--f7-theme-color-rgb), 0.5));\n transform-origin: center top;\n height: var(--f7-progressbar-height);\n border-radius: var(--f7-progressbar-border-radius);\n}\n.progressbar {\n vertical-align: middle;\n}\n.progressbar span {\n background-color: var(--f7-progressbar-progress-color, var(--f7-theme-color));\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n transition-duration: 150ms;\n left: 0;\n transform: translate3d(-100%, 0, 0);\n}\n.progressbar-infinite {\n z-index: 15000;\n}\n.progressbar-infinite:before,\n.progressbar-infinite:after {\n content: '';\n position: absolute;\n top: 0;\n width: 100%;\n height: 100%;\n transform: translate3d(0, 0, 0);\n display: block;\n background-color: var(--f7-progressbar-progress-color, var(--f7-theme-color));\n left: 0;\n transform-origin: left center;\n}\n.progressbar-infinite.color-multi {\n background: none !important;\n}\n.progressbar-in {\n animation: progressbar-in 150ms forwards;\n}\n.progressbar-out {\n animation: progressbar-out 150ms forwards;\n}\nbody > .progressbar,\n.view > .progressbar,\n.views > .progressbar,\n.page > .progressbar,\n.panel > .progressbar,\n.popup > .progressbar,\n.framework7-root > .progressbar,\nbody > .progressbar-infinite,\n.view > .progressbar-infinite,\n.views > .progressbar-infinite,\n.page > .progressbar-infinite,\n.panel > .progressbar-infinite,\n.popup > .progressbar-infinite,\n.framework7-root > .progressbar-infinite {\n position: absolute;\n left: 0;\n top: 0;\n z-index: 15000;\n border-radius: 0 !important;\n transform-origin: center top !important;\n}\n@keyframes progressbar-in {\n from {\n opacity: 0;\n transform: scaleY(0);\n }\n to {\n opacity: 1;\n transform: scaleY(1);\n }\n}\n@keyframes progressbar-out {\n from {\n opacity: 1;\n transform: scaleY(1);\n }\n to {\n opacity: 0;\n transform: scaleY(0);\n }\n}\n.ios .progressbar-infinite:before {\n animation: ios-progressbar-infinite 1s linear infinite;\n}\n.ios .progressbar-infinite:after {\n display: none;\n}\n.ios .progressbar-infinite.color-multi:before {\n width: 400%;\n background-image: linear-gradient(to right, #4cd964, #5ac8fa, #007aff, #34aadc, #5856d6, #ff2d55, #5856d6, #34aadc, #007aff, #5ac8fa, #4cd964);\n background-size: 25% 100%;\n background-repeat: repeat-x;\n animation: ios-progressbar-infinite-multicolor 3s linear infinite;\n}\n@keyframes ios-progressbar-infinite {\n 0% {\n transform: translate3d(-100%, 0, 0);\n }\n 100% {\n transform: translate3d(100%, 0, 0);\n }\n}\n@keyframes ios-progressbar-infinite-multicolor {\n 0% {\n transform: translate3d(0%, 0, 0);\n }\n 100% {\n transform: translate3d(-50%, 0, 0);\n }\n}\n.md .progressbar-infinite:before {\n animation: md-progressbar-infinite-1 2s linear infinite;\n}\n.md .progressbar-infinite:after {\n animation: md-progressbar-infinite-2 2s linear infinite;\n}\n.md .progressbar-infinite.color-multi:before {\n background: none;\n animation: md-progressbar-infinite-multicolor-bg 3s step-end infinite;\n}\n.md .progressbar-infinite.color-multi:after {\n background: none;\n animation: md-progressbar-infinite-multicolor-fill 3s linear infinite;\n transform-origin: center center;\n}\n@keyframes md-progressbar-infinite-1 {\n 0% {\n transform: translateX(-10%) scaleX(0.1);\n }\n 25% {\n transform: translateX(30%) scaleX(0.6);\n }\n 50% {\n transform: translateX(100%) scaleX(1);\n }\n 100% {\n transform: translateX(100%) scaleX(1);\n }\n}\n@keyframes md-progressbar-infinite-2 {\n 0% {\n transform: translateX(-100%) scaleX(1);\n }\n 40% {\n transform: translateX(-100%) scaleX(1);\n }\n 75% {\n transform: translateX(60%) scaleX(0.35);\n }\n 90% {\n transform: translateX(100%) scaleX(0.1);\n }\n 100% {\n transform: translateX(100%) scaleX(0.1);\n }\n}\n@keyframes md-progressbar-infinite-multicolor-bg {\n 0% {\n background-color: #4caf50;\n }\n 25% {\n background-color: #f44336;\n }\n 50% {\n background-color: #2196f3;\n }\n 75% {\n background-color: #ffeb3b;\n }\n}\n@keyframes md-progressbar-infinite-multicolor-fill {\n 0% {\n transform: scaleX(0);\n background-color: #f44336;\n }\n 24.9% {\n transform: scaleX(1);\n background-color: #f44336;\n }\n 25% {\n transform: scaleX(0);\n background-color: #2196f3;\n }\n 49.9% {\n transform: scaleX(1);\n background-color: #2196f3;\n }\n 50% {\n transform: scaleX(0);\n background-color: #ffeb3b;\n }\n 74.9% {\n transform: scaleX(1);\n background-color: #ffeb3b;\n }\n 75% {\n transform: scaleX(0);\n background-color: #4caf50;\n }\n 100% {\n transform: scaleX(1);\n background-color: #4caf50;\n }\n}\n/* === Sortable === */\n.ios {\n --f7-sortable-handler-width: 36px;\n --f7-sortable-sorting-item-box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.6);\n --f7-sortable-handler-color: rgba(0, 0, 0, 0.22);\n --f7-sortable-sorting-item-bg-color: rgba(255, 255, 255, 0.8);\n}\n.ios .dark,\n.ios.dark {\n --f7-sortable-sorting-item-bg-color: rgba(50, 50, 50, 0.8);\n --f7-sortable-handler-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-sortable-handler-width: 42px;\n --f7-sortable-sorting-item-box-shadow: none;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-sortable-handler-color: var(--f7-md-on-surface-variant);\n --f7-sortable-sorting-item-bg-color: var(--f7-md-surface-3);\n}\n.sortable .sortable-handler {\n width: var(--f7-sortable-handler-width);\n height: 100%;\n position: absolute;\n top: 0;\n z-index: 10;\n opacity: 0;\n pointer-events: none;\n cursor: move;\n transition-duration: 300ms;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n right: var(--f7-safe-area-right);\n}\n.sortable .sortable-handler:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n transition-duration: 300ms;\n transform: translateX(10px);\n color: var(--f7-sortable-handler-color);\n overflow: hidden;\n height: 20px;\n width: 18px;\n}\n.sortable li.sorting {\n z-index: 50;\n background: var(--f7-sortable-sorting-item-bg-color);\n transition-duration: 0ms;\n box-shadow: var(--f7-sortable-sorting-item-box-shadow);\n}\n.sortable li.sorting .item-inner:after {\n display: none !important;\n}\n.sortable-opposite .sortable-handler {\n left: var(--f7-safe-area-right);\n right: auto;\n}\n.sortable-opposite .sortable-handler:after {\n transform: translateX(-10px);\n}\n.sortable:not(.sortable-opposite) .item-inner,\n.sortable-opposite .item-content,\n.sortable.simple-list li,\n.sortable-opposite.links-list li a {\n transition-duration: 300ms;\n transition-property: all;\n}\n.sortable-sorting li {\n transition-duration: 300ms;\n}\n.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler {\n pointer-events: auto;\n touch-action: none;\n opacity: 1;\n}\n.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .sortable-handler:after {\n transform: translateX(0px);\n}\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner:before,\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-title-row:before,\n.sortable-enabled:not(.sortable-opposite).links-list li:not(.no-sorting):not(.disallow-sorting) > a:before {\n display: none;\n}\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-inner,\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,\n.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link.no-chevron .item-inner,\n.sortable-enabled.no-chevron:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,\n.sortable-enabled :not(.sortable-opposite).no-chevron .item-link .item-inner,\n.no-chevron .sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) .item-link .item-inner,\n.simple-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting),\n.links-list.sortable-enabled:not(.sortable-opposite) li:not(.no-sorting):not(.disallow-sorting) a {\n padding-right: calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right));\n}\n.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) .item-content,\n.simple-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting),\n.links-list.sortable-opposite.sortable-enabled li:not(.no-sorting):not(.disallow-sorting) a {\n padding-left: calc(var(--f7-sortable-handler-width) + var(--f7-safe-area-right));\n}\n.ios .sortable-handler:after {\n content: 'sort_ios';\n}\n.md .sortable-handler:after {\n content: 'sort_md';\n}\n/* === Swipeout === */\n:root {\n --f7-swipeout-delete-button-bg-color: #ff3b30;\n --f7-swipeout-button-text-color: #fff;\n --f7-swipeout-button-padding-vertical: 0px;\n --f7-swipeout-button-bg-color: rgba(0, 0, 0, 0.22);\n}\n:root .dark,\n:root.dark {\n --f7-swipeout-button-bg-color: rgba(255, 255, 255, 0.55);\n}\n.ios {\n --f7-swipeout-button-padding-horizontal: 30px;\n --f7-swipeout-button-font-size: inherit;\n --f7-swipeout-button-font-weight: inherit;\n}\n.md {\n --f7-swipeout-button-padding-horizontal: 24px;\n --f7-swipeout-button-font-size: 14px;\n --f7-swipeout-button-font-weight: 500;\n}\n.md .dark,\n.md.dark {\n --f7-swipeout-button-text-color: #000;\n}\n.swipeout {\n overflow: hidden;\n transform-style: preserve-3d;\n}\n.swipeout-deleting {\n transition-duration: 300ms;\n}\n.swipeout-deleting .swipeout-content {\n transform: translateX(-100%);\n}\n.swipeout-transitioning .swipeout-content,\n.swipeout-transitioning .swipeout-actions-right a,\n.swipeout-transitioning .swipeout-actions-left a,\n.swipeout-transitioning .swipeout-overswipe {\n transition-duration: 300ms;\n transition-property: transform, left;\n}\n.swipeout-content {\n position: relative;\n z-index: 10;\n}\n.swipeout-overswipe {\n transition-duration: 200ms;\n transition-property: left;\n}\n.swipeout-actions-left,\n.swipeout-actions-right {\n position: absolute;\n top: 0;\n height: 100%;\n display: flex;\n direction: ltr;\n}\n.swipeout-actions-left > a,\n.swipeout-actions-right > a,\n.swipeout-actions-left > button,\n.swipeout-actions-right > button,\n.swipeout-actions-left > span,\n.swipeout-actions-right > span,\n.swipeout-actions-left > div,\n.swipeout-actions-right > div {\n color: var(--f7-swipeout-button-text-color);\n background: var(--f7-swipeout-button-bg-color);\n padding: var(--f7-swipeout-button-padding-vertical) var(--f7-swipeout-button-padding-horizontal);\n display: flex;\n align-items: center;\n position: relative;\n left: 0;\n font-size: var(--f7-swipeout-button-font-size);\n font-weight: var(--f7-swipeout-button-font-weight);\n}\n.swipeout-actions-left > a:after,\n.swipeout-actions-right > a:after,\n.swipeout-actions-left > button:after,\n.swipeout-actions-right > button:after,\n.swipeout-actions-left > span:after,\n.swipeout-actions-right > span:after,\n.swipeout-actions-left > div:after,\n.swipeout-actions-right > div:after {\n content: '';\n position: absolute;\n top: 0;\n width: 600%;\n height: 100%;\n background: inherit;\n z-index: -1;\n transform: translate3d(0, 0, 0);\n pointer-events: none;\n}\n.swipeout-actions-left .swipeout-delete,\n.swipeout-actions-right .swipeout-delete {\n background: var(--f7-swipeout-delete-button-bg-color);\n}\n.swipeout-actions-right {\n right: 0%;\n transform: translateX(calc(100% + 1px));\n}\n.swipeout-actions-right > a:after,\n.swipeout-actions-right > button:after,\n.swipeout-actions-right > span:after,\n.swipeout-actions-right > div:after {\n left: 100%;\n}\n.swipeout-actions-right > a:last-child,\n.swipeout-actions-right > button:last-child,\n.swipeout-actions-right > span:last-child,\n.swipeout-actions-right > div:last-child {\n padding-right: calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-right));\n}\n.swipeout-actions-left {\n left: 0%;\n transform: translateX(calc(-100% - 1px));\n}\n.swipeout-actions-left > a:after,\n.swipeout-actions-left > button:after,\n.swipeout-actions-left > span:after,\n.swipeout-actions-left > div:after {\n right: 100%;\n}\n.swipeout-actions-left > a:first-child,\n.swipeout-actions-left > button:first-child,\n.swipeout-actions-left > span:first-child,\n.swipeout-actions-left > div:first-child {\n padding-left: calc(var(--f7-swipeout-button-padding-horizontal) + var(--f7-safe-area-left));\n}\n.swipeout-actions-left [class*='color-'],\n.swipeout-actions-right [class*='color-'] {\n --f7-swipeout-button-bg-color: var(--f7-theme-color);\n}\n/* === Accordion === */\n:root {\n --f7-accordion-chevron-icon-down: 'chevron_down';\n --f7-accordion-chevron-icon-up: 'chevron_up';\n}\n.accordion-item-toggle {\n cursor: pointer;\n}\n.list.accordion-list .accordion-item-toggle {\n transition-duration: 300ms;\n position: relative;\n overflow: hidden;\n}\n.list.accordion-list .accordion-item-toggle.active-state {\n transition-duration: 300ms;\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.list.accordion-list .accordion-item-toggle.active-state > .item-inner:after {\n background-color: transparent;\n}\n.list.accordion-list .accordion-item-toggle .item-inner {\n transition-duration: 300ms;\n transition-property: background-color;\n}\n.list.accordion-list .accordion-item-toggle .item-inner:after {\n transition-duration: 300ms;\n}\n.list.accordion-list .accordion-item-toggle .ripple-wave {\n z-index: 0;\n}\n.accordion-item .item-link .item-inner:after {\n transition-duration: 300ms;\n}\n.accordion-item .list,\n.accordion-item .block {\n margin-top: 0;\n margin-bottom: 0;\n}\n.accordion-item .block > h1:first-child,\n.accordion-item .block > h2:first-child,\n.accordion-item .block > h3:first-child,\n.accordion-item .block > h4:first-child,\n.accordion-item .block > p:first-child {\n margin-top: 10px;\n}\n.accordion-item .block > h1:last-child,\n.accordion-item .block > h2:last-child,\n.accordion-item .block > h3:last-child,\n.accordion-item .block > h4:last-child,\n.accordion-item .block > p:last-child {\n margin-bottom: 10px;\n}\n.accordion-item-opened .accordion-item-toggle .item-inner:after,\n.accordion-item-opened > .item-link .item-inner:after {\n background-color: transparent;\n}\n.list li.accordion-item ul {\n padding-left: 0;\n}\n.accordion-item-content {\n position: relative;\n overflow: hidden;\n height: 0;\n font-size: 14px;\n transition-duration: 300ms;\n}\n.accordion-item-opened > .accordion-item-content {\n height: auto;\n}\nhtml.device-android-4 .accordion-item-content {\n transform: none;\n}\n.list .accordion-item-toggle .item-inner:before {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n top: 50%;\n font-size: var(--f7-list-chevron-icon-font-size);\n color: var(--f7-list-chevron-icon-color);\n pointer-events: none;\n right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.list:not(.accordion-opposite) .accordion-item-toggle .item-inner {\n padding-right: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.accordion-opposite .accordion-item-toggle.item-link .item-inner,\n.accordion-opposite .accordion-item-toggle .item-inner,\n.accordion-opposite .accordion-item > .item-link > .item-inner,\n.accordion-opposite .accordion-item > .item-link > .item-content > .item-inner {\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right));\n}\n.accordion-opposite .accordion-item > .item-link > .item-title-row {\n padding-right: 0;\n}\n.accordion-opposite .accordion-item-toggle.item-link .item-inner:before,\n.accordion-opposite .accordion-item-toggle .item-inner:before,\n.accordion-opposite .accordion-item > .item-link > .item-inner:before,\n.accordion-opposite .accordion-item > .item-link > .item-content > .item-inner:before,\n.accordion-opposite .accordion-item > .item-link .item-title-row:before {\n display: none;\n}\n.accordion-opposite .accordion-item-toggle > .item-content,\n.accordion-opposite .accordion-item-toggle.item-content,\n.accordion-opposite .accordion-item > .item-content,\n.accordion-opposite .accordion-item > .item-link > .item-content,\n.accordion-opposite.links-list .accordion-item > a {\n position: relative;\n padding-left: calc(var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-left));\n}\n.accordion-opposite .accordion-item-toggle > .item-content:before,\n.accordion-opposite .accordion-item-toggle.item-content:before,\n.accordion-opposite .accordion-item > .item-content:before,\n.accordion-opposite .accordion-item > .item-link > .item-content:before,\n.accordion-opposite.links-list .accordion-item > a:before {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n top: 50%;\n font-size: var(--f7-list-chevron-icon-font-size);\n color: var(--f7-list-chevron-icon-color);\n pointer-events: none;\n content: var(--f7-accordion-chevron-icon-down);\n width: 14px;\n height: 8px;\n margin-top: -4px;\n line-height: 8px;\n transform: translateX(-50%);\n left: calc((var(--f7-list-chevron-icon-area) + var(--f7-list-item-padding-horizontal)) / 2 + var(--f7-safe-area-left));\n}\n.list .accordion-item-toggle.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\n.list .accordion-item-toggle .item-inner:before,\n.list:not(.media-list) .accordion-item:not(.media-item) .accordion-item-toggle .item-inner:before,\n.list:not(.media-list) .accordion-item:not(.media-item) > .item-link .item-inner:before,\n.media-list .accordion-item .accordion-item-toggle .item-title-row:before,\n.media-list .accordion-item > .item-link .item-title-row:before,\n.accordion-item.media-item .accordion-item-toggle .item-title-row:before,\n.accordion-item.media-item > .item-link .item-title-row:before,\n.links-list .accordion-item > a:before {\n content: var(--f7-accordion-chevron-icon-down);\n width: 14px;\n height: 8px;\n margin-top: -4px;\n line-height: 8px;\n}\n.list .accordion-item-toggle.accordion-item-opened .item-inner:before,\n.list:not(.media-list) .accordion-item-opened:not(.media-item) .accordion-item-toggle .item-inner:before,\n.list:not(.media-list) .accordion-item-opened:not(.media-item) > .item-link .item-inner:before,\n.media-list .accordion-item-opened .accordion-item-toggle .item-title-row:before,\n.media-list .accordion-item-opened > .item-link .item-title-row:before,\n.accordion-item-opened.media-item .accordion-item-toggle .item-title-row:before,\n.accordion-item-opened.media-item > .item-link .item-title-row:before,\n.links-list .accordion-item-opened > a:before,\n.accordion-opposite .accordion-item-opened .accordion-item-toggle > .item-content:before,\n.accordion-opposite .accordion-item-opened .accordion-item-toggle.item-content:before,\n.accordion-opposite .accordion-item-opened > .item-content:before,\n.accordion-opposite .accordion-item-opened > .item-link > .item-content:before,\n.accordion-opposite .links-list .accordion-item-opened > a:before {\n content: var(--f7-accordion-chevron-icon-up);\n width: 14px;\n height: 8px;\n margin-top: -4px;\n line-height: 8px;\n}\n/* === Contacts === */\n.ios {\n --f7-contacts-list-title-font-size: inherit;\n --f7-contacts-list-title-font-weight: 600;\n --f7-contacts-list-title-height: 22px;\n --f7-contacts-list-title-text-color: #000;\n --f7-contacts-list-title-bg-color: #f7f7f7;\n}\n.ios .dark,\n.ios.dark {\n --f7-contacts-list-title-text-color: #fff;\n --f7-contacts-list-title-bg-color: #323234;\n}\n.md {\n --f7-contacts-list-title-font-size: 20px;\n --f7-contacts-list-title-font-weight: 500;\n --f7-contacts-list-title-height: 48px;\n --f7-contacts-list-title-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-contacts-list-title-text-color: var(--f7-theme-color);\n}\n.contacts-list {\n --f7-list-margin-vertical: 0px;\n}\n.contacts-list .list-group-title,\n.contacts-list li.list-group-title {\n background-color: var(--f7-contacts-list-title-bg-color, var(--f7-list-group-title-bg-color));\n font-weight: var(--f7-contacts-list-title-font-weight, var(--f7-list-group-title-font-weight));\n font-size: var(--f7-contacts-list-title-font-size, var(--f7-list-group-title-font-size));\n color: var(--f7-contacts-list-title-text-color, var(--f7-theme-color));\n line-height: var(--f7-contacts-list-title-height, var(--f7-list-group-title-height));\n height: var(--f7-contacts-list-title-height, var(--f7-list-group-title-height));\n}\n.contacts-list .list-group:first-child ul:before {\n display: none !important;\n}\n.contacts-list .list-group:last-child ul:after {\n display: none !important;\n}\n.md .contacts-list .list-group-title {\n pointer-events: none;\n overflow: visible;\n width: 40px;\n}\n.md .contacts-list .list-group-title + li {\n margin-top: calc(var(--f7-contacts-list-title-height) * -1);\n}\n.md .contacts-list .list-group-title:before {\n display: none !important;\n}\n.md .contacts-list li:not(.list-group-title) {\n padding-left: 40px;\n}\n/* === Virtual List === */\n/* === Indexed List === */\n:root {\n --f7-list-index-width: 16px;\n --f7-list-index-font-size: 11px;\n --f7-list-index-font-weight: 600;\n /* --f7-list-index-text-color: var(--f7-theme-color); */\n --f7-list-index-item-height: 14px;\n --f7-list-index-label-font-weight: 500;\n}\n.ios {\n --f7-list-index-label-text-color: #fff;\n /* --f7-list-index-label-bg-color: var(--f7-theme-color); */\n --f7-list-index-label-size: 44px;\n --f7-list-index-label-font-size: 17px;\n --f7-list-index-skip-dot-size: 6px;\n}\n.md {\n --f7-list-index-label-size: 56px;\n --f7-list-index-label-font-size: 20px;\n --f7-list-index-skip-dot-size: 4px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-list-index-label-bg-color: var(--f7-md-primary);\n --f7-list-index-label-text-color: var(--f7-md-on-primary);\n}\n.list-index {\n position: absolute;\n top: 0;\n bottom: 0;\n text-align: center;\n z-index: 10;\n width: var(--f7-list-index-width);\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n right: var(--f7-safe-area-right);\n}\n.list-index:before {\n content: '';\n position: absolute;\n width: 20px;\n top: 0;\n right: 100%;\n height: 100%;\n}\n.list-index ul {\n color: var(--f7-list-index-text-color, var(--f7-theme-color));\n font-size: var(--f7-list-index-font-size);\n font-weight: var(--f7-list-index-font-weight);\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n height: 100%;\n width: 100%;\n position: relative;\n}\n.list-index li {\n margin: 0;\n padding: 0;\n list-style: none;\n position: relative;\n height: var(--f7-list-index-item-height);\n line-height: var(--f7-list-index-item-height);\n flex-shrink: 0;\n display: block;\n width: 100%;\n}\n.list-index .list-index-skip-placeholder:after {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n border-radius: 50%;\n width: var(--f7-list-index-skip-dot-size);\n height: var(--f7-list-index-skip-dot-size);\n margin-left: calc(-1 * var(--f7-list-index-skip-dot-size) / 2);\n margin-top: calc(-1 * var(--f7-list-index-skip-dot-size) / 2);\n background: var(--f7-list-index-text-color, var(--f7-theme-color));\n}\n.list-index .list-index-label {\n position: absolute;\n bottom: 0;\n right: 100%;\n text-align: center;\n background-color: var(--f7-list-index-label-bg-color, var(--f7-theme-color));\n color: var(--f7-list-index-label-text-color);\n width: var(--f7-list-index-label-size);\n height: var(--f7-list-index-label-size);\n line-height: var(--f7-list-index-label-size);\n font-size: var(--f7-list-index-label-font-size);\n font-weight: var(--f7-list-index-label-font-weight);\n}\n.navbar ~ .page > .list-index,\n.navbars ~ .page > .list-index,\n.navbar ~ .list-index {\n top: var(--f7-navbar-height);\n}\n.navbar ~ .toolbar-top ~ .list-index,\n.navbars ~ .toolbar-top ~ .list-index,\n.ios .navbar ~ .toolbar-top-ios ~ .list-index,\n.ios .navbars ~ .toolbar-top-ios .md .navbar ~ .toolbar-top-md ~ .list-index {\n top: calc(var(--f7-navbar-height) + var(--f7-toolbar-height));\n}\n.navbar ~ .toolbar-top.tabbar-icons ~ .list-index,\n.navbars ~ .toolbar-top.tabbar-icons ~ .list-index,\n.ios .navbar ~ .toolbar-top-ios.tabbar-icons ~ .list-index,\n.ios .navbars ~ .toolbar-top-ios .md .navbar ~ .toolbar-top-md.tabbar-icons ~ .list-index {\n top: calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height));\n}\n.navbar ~ .subnavbar ~ .list-index,\n.navbars ~ .subnavbar ~ .list-index,\n.page-with-subnavbar .navbar ~ .list-index {\n top: calc(var(--f7-navbar-height) + var(--f7-subnavbar-height));\n}\n.toolbar-bottom ~ .page > .list-index,\n.ios .toolbar-bottom-ios ~ .page > .list-index,\n.md .toolbar-bottom-md ~ .page > .list-index,\n.toolbar-bottom ~ * .page > .list-index,\n.ios .toolbar-bottom-ios ~ * .page > .list-index,\n.md .toolbar-bottom-md ~ * .page > .list-index,\n.toolbar-bottom ~ .list-index,\n.ios .toolbar-bottom-ios ~ .list-index,\n.md .toolbar-bottom-md ~ .list-index {\n bottom: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n}\n.toolbar-bottom.tabbar-icons ~ .page > .list-index,\n.ios .toolbar-bottom-ios.tabbar-icons ~ .page > .list-index,\n.md .toolbar-bottom-md.tabbar-icons ~ .page > .list-index,\n.toolbar-bottom.tabbar-icons ~ * .page > .list-index,\n.ios .toolbar-bottom-ios.tabbar-icons ~ * .page > .list-index,\n.md .toolbar-bottom-md.tabbar-icons ~ * .page > .list-index,\n.toolbar-bottom.tabbar-icons ~ .list-index,\n.ios .toolbar-bottom-ios.tabbar-icons ~ .list-index,\n.md .toolbar-bottom-md.tabbar-icons ~ .list-index {\n bottom: calc(var(--f7-tabbar-icons-height) + var(--f7-safe-area-bottom));\n}\n.ios .list-index .list-index-label {\n margin-bottom: calc(-1 * var(--f7-list-index-label-size) / 2);\n margin-right: calc(var(--f7-list-index-width) - 1px);\n border-radius: 50%;\n}\n.ios .list-index .list-index-label:before {\n position: absolute;\n width: 100%;\n height: 100%;\n border-radius: 50% 0% 50% 50%;\n content: '';\n background-color: inherit;\n left: 0;\n top: 0;\n transform: rotate(45deg);\n z-index: -1;\n}\n.md .list-index .list-index-label {\n border-radius: 50% 50% 0 50%;\n}\n/* === Timeline === */\n:root {\n --f7-timeline-inner-block-margin-vertical: 16px;\n --f7-timeline-divider-margin-horizontal: 16px;\n --f7-timeline-horizontal-date-height: 34px;\n --f7-timeline-year-height: 24px;\n --f7-timeline-year-font-weight: inherit;\n --f7-timeline-month-height: 24px;\n --f7-timeline-month-font-size: inherit;\n --f7-timeline-month-font-weight: inherit;\n --f7-timeline-item-text-font-weight: inherit;\n --f7-timeline-item-subtitle-font-weight: inherit;\n}\n.ios {\n --f7-timeline-divider-color: #bbb;\n --f7-timeline-padding-horizontal: 16px;\n --f7-timeline-margin-vertical: 35px;\n --f7-timeline-item-inner-border-radius: 7px;\n --f7-timeline-item-time-font-size: 13px;\n --f7-timeline-item-title-font-size: 17px;\n --f7-timeline-item-title-line-height: inherit;\n --f7-timeline-item-title-font-weight: 600;\n --f7-timeline-item-subtitle-font-size: 15px;\n --f7-timeline-item-subtitle-line-height: inherit;\n --f7-timeline-item-text-font-size: inherit;\n --f7-timeline-item-text-color: inherit;\n --f7-timeline-item-text-line-height: inherit;\n --f7-timeline-year-font-size: 16px;\n --f7-timeline-horizontal-item-padding: 10px;\n --f7-timeline-item-inner-bg-color: #fff;\n --f7-timeline-item-time-text-color: rgba(0, 0, 0, 0.45);\n --f7-timeline-horizontal-item-border-color: rgba(0, 0, 0, 0.22);\n --f7-timeline-horizontal-item-date-border-color: rgba(0, 0, 0, 0.22);\n}\n.ios .dark,\n.ios.dark {\n --f7-timeline-horizontal-item-border-color: rgba(255, 255, 255, 0.15);\n --f7-timeline-horizontal-item-date-border-color: rgba(255, 255, 255, 0.15);\n --f7-timeline-item-inner-bg-color: #1c1c1d;\n --f7-timeline-item-time-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-timeline-padding-horizontal: 16px;\n --f7-timeline-margin-vertical: 32px;\n --f7-timeline-item-inner-border-radius: 16px;\n --f7-timeline-item-time-font-size: 13px;\n --f7-timeline-item-title-font-size: 16px;\n --f7-timeline-item-title-line-height: inherit;\n --f7-timeline-item-title-font-weight: 400;\n --f7-timeline-item-subtitle-font-size: inherit;\n --f7-timeline-item-subtitle-line-height: inherit;\n --f7-timeline-item-text-font-size: inherit;\n --f7-timeline-item-text-line-height: inherit;\n --f7-timeline-year-font-size: 16px;\n --f7-timeline-horizontal-item-padding: 12px;\n --f7-timeline-horizontal-item-date-border-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-timeline-divider-color: var(--f7-md-outline);\n --f7-timeline-item-text-color: var(--f7-md-on-surface);\n --f7-timeline-horizontal-item-border-color: var(--f7-md-outline);\n --f7-timeline-item-inner-bg-color: var(--f7-md-surface-1);\n --f7-timeline-item-time-text-color: var(--f7-md-on-surface-variant);\n}\n.timeline {\n box-sizing: border-box;\n margin: var(--f7-timeline-margin-vertical) 0;\n padding: 0 var(--f7-timeline-padding-horizontal);\n padding-top: 0;\n padding-bottom: 0;\n padding-left: calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-right));\n}\n.block-strong .timeline {\n padding: 0;\n margin: 0;\n}\n.timeline-item {\n display: flex;\n justify-content: flex-start;\n overflow: hidden;\n box-sizing: border-box;\n position: relative;\n padding: 2px 0px var(--f7-timeline-padding-horizontal);\n}\n.timeline-item:last-child {\n padding-bottom: 2px;\n}\n.timeline-item-date {\n flex-shrink: 0;\n width: 50px;\n text-align: right;\n box-sizing: border-box;\n}\n.timeline-item-date small {\n font-size: 10px;\n}\n.timeline-item-content {\n margin: 2px;\n min-width: 0;\n position: relative;\n flex-shrink: 10;\n}\n.timeline-item-content .card,\n.timeline-item-content.card,\n.timeline-item-content .list,\n.timeline-item-content.list,\n.timeline-item-content .block,\n.timeline-item-content.block {\n margin: 0;\n width: 100%;\n}\n.timeline-item-content .card + .card,\n.timeline-item-content .list + .card,\n.timeline-item-content .block + .card,\n.timeline-item-content .card + .list,\n.timeline-item-content .list + .list,\n.timeline-item-content .block + .list,\n.timeline-item-content .card + .block,\n.timeline-item-content .list + .block,\n.timeline-item-content .block + .block {\n margin: var(--f7-timeline-inner-block-margin-vertical) 0 0;\n}\n.timeline-item-content p:first-child,\n.timeline-item-content ul:first-child,\n.timeline-item-content ol:first-child,\n.timeline-item-content h1:first-child,\n.timeline-item-content h2:first-child,\n.timeline-item-content h3:first-child,\n.timeline-item-content h4:first-child {\n margin-top: 0;\n}\n.timeline-item-content p:last-child,\n.timeline-item-content ul:last-child,\n.timeline-item-content ol:last-child,\n.timeline-item-content h1:last-child,\n.timeline-item-content h2:last-child,\n.timeline-item-content h3:last-child,\n.timeline-item-content h4:last-child {\n margin-bottom: 0;\n}\n.timeline-item-inner {\n background: var(--f7-timeline-item-inner-bg-color);\n box-sizing: border-box;\n border-radius: var(--f7-timeline-item-inner-border-radius);\n padding: 8px var(--f7-timeline-padding-horizontal);\n}\n.timeline-item-inner + .timeline-item-inner {\n margin-top: var(--f7-timeline-inner-block-margin-vertical);\n}\n.timeline-item-inner .block {\n padding: 0;\n color: inherit;\n}\n.timeline-item-inner .block-strong {\n padding-left: 0;\n padding-right: 0;\n margin: 0;\n}\n.timeline-item-inner .block-strong:before,\n.timeline-item-inner .block-strong:after {\n display: none !important;\n}\n.timeline-item-inner .list ul:before,\n.timeline-item-inner .list ul:after {\n display: none !important;\n}\n.timeline-item-divider {\n width: 1px;\n position: relative;\n width: 10px;\n height: 10px;\n background: var(--f7-timeline-divider-color);\n border-radius: 50%;\n flex-shrink: 0;\n margin: 3px var(--f7-timeline-divider-margin-horizontal) 0;\n}\n.timeline-item-divider:after,\n.timeline-item-divider:before {\n content: ' ';\n width: 1px;\n height: 100vh;\n position: absolute;\n left: 50%;\n background: inherit;\n transform: translate3d(-50%, 0, 0);\n}\n.timeline-item-divider:after {\n top: 100%;\n}\n.timeline-item-divider:before {\n bottom: 100%;\n}\n.timeline-item:last-child .timeline-item-divider:after {\n display: none;\n}\n.timeline-item:first-child .timeline-item-divider:before {\n display: none;\n}\n.timeline-item-time {\n font-size: var(--f7-timeline-item-time-font-size);\n margin-top: var(--f7-timeline-inner-block-margin-vertical);\n color: var(--f7-timeline-item-time-text-color);\n}\n.timeline-item-time:first-child,\n.timeline-item-time:last-child {\n margin-top: 0;\n}\n.timeline-item-title + .timeline-item-time {\n margin-top: 0;\n}\n.timeline-item-title {\n font-size: var(--f7-timeline-item-title-font-size);\n font-weight: var(--f7-timeline-item-title-font-weight);\n line-height: var(--f7-timeline-item-title-line-height);\n}\n.timeline-item-subtitle {\n font-size: var(--f7-timeline-item-subtitle-font-size);\n font-weight: var(--f7-timeline-item-subtitle-font-weight);\n line-height: var(--f7-timeline-item-subtitle-line-height);\n}\n.timeline-item-text {\n color: var(--f7-timeline-item-text-color);\n font-size: var(--f7-timeline-item-text-font-size);\n font-weight: var(--f7-timeline-item-text-font-weight);\n line-height: var(--f7-timeline-item-text-line-height);\n}\n.timeline-sides .timeline-item-right,\n.timeline-sides .timeline-item {\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n}\n.timeline-sides .timeline-item-right .timeline-item-date,\n.timeline-sides .timeline-item .timeline-item-date {\n text-align: right;\n}\n.timeline-sides .timeline-item-left,\n.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n}\n.timeline-sides .timeline-item-left .timeline-item-date,\n.timeline-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: left;\n}\n@media (min-width: 480px) {\n .xsmall-sides .timeline-item-right,\n .xsmall-sides .timeline-item {\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .xsmall-sides .timeline-item-right .timeline-item-date,\n .xsmall-sides .timeline-item .timeline-item-date {\n text-align: right;\n }\n .xsmall-sides .timeline-item-left,\n .xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .xsmall-sides .timeline-item-left .timeline-item-date,\n .xsmall-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: left;\n }\n}\n@media (min-width: 568px) {\n .small-sides .timeline-item-right,\n .small-sides .timeline-item {\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .small-sides .timeline-item-right .timeline-item-date,\n .small-sides .timeline-item .timeline-item-date {\n text-align: right;\n }\n .small-sides .timeline-item-left,\n .small-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .small-sides .timeline-item-left .timeline-item-date,\n .small-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: left;\n }\n}\n@media (min-width: 768px) {\n .medium-sides .timeline-item-right,\n .medium-sides .timeline-item {\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .medium-sides .timeline-item-right .timeline-item-date,\n .medium-sides .timeline-item .timeline-item-date {\n text-align: right;\n }\n .medium-sides .timeline-item-left,\n .medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .medium-sides .timeline-item-left .timeline-item-date,\n .medium-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: left;\n }\n}\n@media (min-width: 1024px) {\n .large-sides .timeline-item-right,\n .large-sides .timeline-item {\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .large-sides .timeline-item-right .timeline-item-date,\n .large-sides .timeline-item .timeline-item-date {\n text-align: right;\n }\n .large-sides .timeline-item-left,\n .large-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .large-sides .timeline-item-left .timeline-item-date,\n .large-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: left;\n }\n}\n@media (min-width: 1200px) {\n .xlarge-sides .timeline-item-right,\n .xlarge-sides .timeline-item {\n margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-right: 0;\n }\n .xlarge-sides .timeline-item-right .timeline-item-date,\n .xlarge-sides .timeline-item .timeline-item-date {\n text-align: right;\n }\n .xlarge-sides .timeline-item-left,\n .xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n) {\n flex-direction: row-reverse;\n margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);\n margin-left: 0;\n }\n .xlarge-sides .timeline-item-left .timeline-item-date,\n .xlarge-sides .timeline-item:not(.timeline-item-right):nth-child(2n) .timeline-item-date {\n text-align: left;\n }\n}\n.timeline-horizontal {\n height: 100%;\n display: flex;\n padding: 0;\n margin: 0;\n position: relative;\n padding-left: var(--f7-safe-area-left);\n padding-right: 0;\n}\n.timeline-horizontal .timeline-item {\n display: block;\n width: 100/3vw;\n margin: 0;\n padding: 0;\n flex-shrink: 0;\n position: relative;\n height: 100%;\n padding-top: var(--f7-timeline-horizontal-date-height) !important;\n padding-bottom: var(--f7-timeline-horizontal-item-padding);\n}\n.timeline-horizontal .timeline-item:after {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: 0;\n bottom: auto;\n left: auto;\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-horizontal .timeline-item-date {\n padding: 0px var(--f7-timeline-horizontal-item-padding);\n width: auto;\n line-height: var(--f7-timeline-horizontal-date-height);\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: var(--f7-timeline-horizontal-date-height);\n background-color: var(--f7-bars-bg-color);\n color: var(--f7-bars-text-color);\n text-align: left;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .timeline-horizontal .timeline-item-date {\n background-color: rgba(var(--f7-bars-bg-color-rgb), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.timeline-horizontal .timeline-item-date:after {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-date-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-horizontal .timeline-item-content {\n padding: var(--f7-timeline-horizontal-item-padding);\n height: calc(100vw - var(--f7-timeline-horizontal-item-padding));\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n margin: 0;\n}\n.timeline-horizontal .timeline-item-divider {\n display: none;\n}\n.timeline-horizontal > .timeline-item:last-child:after,\n.timeline-horizontal .timeline-month:last-child .timeline-item:last-child:after {\n display: none !important;\n}\n.timeline-horizontal.timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n}\n.timeline-horizontal.timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n}\n.timeline-horizontal.timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n}\n.timeline-horizontal.timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n}\n.timeline-horizontal.timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n}\n.timeline-horizontal.timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n}\n.timeline-horizontal.timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n}\n.timeline-horizontal.timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n}\n.timeline-horizontal.timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n}\n.timeline-horizontal.timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n}\n.timeline-horizontal.timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n}\n.timeline-horizontal.timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n}\n.timeline-horizontal.timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n}\n.timeline-horizontal.timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n}\n.timeline-horizontal.timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n}\n.timeline-horizontal.timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n}\n.timeline-horizontal.timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n}\n.timeline-horizontal.timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n}\n.timeline-horizontal.timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n}\n.timeline-horizontal.timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n}\n@media (min-width: 480px) {\n .timeline-horizontal.xsmall-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.xsmall-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.xsmall-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.xsmall-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.xsmall-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.xsmall-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.xsmall-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.xsmall-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.xsmall-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.xsmall-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.xsmall-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.xsmall-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.xsmall-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.xsmall-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.xsmall-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.xsmall-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.xsmall-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.xsmall-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.xsmall-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.xsmall-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 568px) {\n .timeline-horizontal.small-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.small-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.small-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.small-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.small-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.small-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.small-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.small-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.small-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.small-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.small-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.small-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.small-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.small-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.small-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.small-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.small-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.small-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.small-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.small-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 768px) {\n .timeline-horizontal.medium-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.medium-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.medium-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.medium-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.medium-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.medium-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.medium-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.medium-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.medium-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.medium-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.medium-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.medium-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.medium-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.medium-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.medium-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.medium-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.medium-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.medium-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.medium-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.medium-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 1024px) {\n .timeline-horizontal.large-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.large-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.large-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.large-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.large-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.large-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.large-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.large-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.large-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.large-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.large-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.large-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.large-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.large-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.large-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.large-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.large-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.large-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.large-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.large-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n@media (min-width: 1200px) {\n .timeline-horizontal.xlarge-timeline-cols-1 .timeline-item {\n width: calc(100vw / 1);\n }\n .timeline-horizontal.xlarge-timeline-cols-2 .timeline-item {\n width: calc(100vw / 2);\n }\n .timeline-horizontal.xlarge-timeline-cols-3 .timeline-item {\n width: calc(100vw / 3);\n }\n .timeline-horizontal.xlarge-timeline-cols-4 .timeline-item {\n width: calc(100vw / 4);\n }\n .timeline-horizontal.xlarge-timeline-cols-5 .timeline-item {\n width: calc(100vw / 5);\n }\n .timeline-horizontal.xlarge-timeline-cols-6 .timeline-item {\n width: calc(100vw / 6);\n }\n .timeline-horizontal.xlarge-timeline-cols-7 .timeline-item {\n width: calc(100vw / 7);\n }\n .timeline-horizontal.xlarge-timeline-cols-8 .timeline-item {\n width: calc(100vw / 8);\n }\n .timeline-horizontal.xlarge-timeline-cols-9 .timeline-item {\n width: calc(100vw / 9);\n }\n .timeline-horizontal.xlarge-timeline-cols-10 .timeline-item {\n width: calc(100vw / 10);\n }\n .timeline-horizontal.xlarge-timeline-cols-11 .timeline-item {\n width: calc(100vw / 11);\n }\n .timeline-horizontal.xlarge-timeline-cols-12 .timeline-item {\n width: calc(100vw / 12);\n }\n .timeline-horizontal.xlarge-timeline-cols-13 .timeline-item {\n width: calc(100vw / 13);\n }\n .timeline-horizontal.xlarge-timeline-cols-14 .timeline-item {\n width: calc(100vw / 14);\n }\n .timeline-horizontal.xlarge-timeline-cols-15 .timeline-item {\n width: calc(100vw / 15);\n }\n .timeline-horizontal.xlarge-timeline-cols-16 .timeline-item {\n width: calc(100vw / 16);\n }\n .timeline-horizontal.xlarge-timeline-cols-17 .timeline-item {\n width: calc(100vw / 17);\n }\n .timeline-horizontal.xlarge-timeline-cols-18 .timeline-item {\n width: calc(100vw / 18);\n }\n .timeline-horizontal.xlarge-timeline-cols-19 .timeline-item {\n width: calc(100vw / 19);\n }\n .timeline-horizontal.xlarge-timeline-cols-20 .timeline-item {\n width: calc(100vw / 20);\n }\n}\n.timeline-year {\n padding-top: var(--f7-timeline-year-height);\n}\n.timeline-year:after {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: 0;\n bottom: auto;\n left: auto;\n width: 1px;\n height: 100%;\n transform-origin: 100% 50%;\n transform: scaleX(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-year:last-child:after {\n display: none !important;\n}\n.timeline-month {\n padding-top: var(--f7-timeline-month-height);\n}\n.timeline-month .timeline-item:before {\n content: '';\n position: absolute;\n background-color: var(--f7-timeline-horizontal-item-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.timeline-year,\n.timeline-month {\n display: flex;\n flex-shrink: 0;\n position: relative;\n box-sizing: border-box;\n height: 100%;\n}\n.timeline-year-title {\n line-height: var(--f7-timeline-year-height);\n height: var(--f7-timeline-year-height);\n font-size: var(--f7-timeline-year-font-size);\n font-weight: var(--f7-timeline-year-font-weight);\n}\n.timeline-month-title {\n line-height: var(--f7-timeline-month-height);\n height: var(--f7-timeline-month-height);\n font-size: var(--f7-timeline-month-font-size);\n font-weight: var(--f7-timeline-month-font-weight);\n}\n.timeline-year-title,\n.timeline-month-title {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n box-sizing: border-box;\n padding: 0 var(--f7-timeline-horizontal-item-padding);\n background-color: var(--f7-bars-bg-color);\n color: var(--f7-bars-text-color);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .timeline-year-title,\n .ios-translucent-bars .timeline-month-title {\n background-color: rgba(var(--f7-bars-bg-color-rgb), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.timeline-year-title span,\n.timeline-month-title span {\n display: inline-block;\n position: sticky;\n left: calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-left));\n}\n.timeline-month-title span {\n margin-top: -2px;\n}\n.timeline-year:first-child .timeline-year-title,\n.timeline-year:first-child .timeline-month:first-child .timeline-month-title,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-month-title {\n left: calc(var(--f7-safe-area-left) * -1);\n right: 0;\n width: auto;\n}\n.timeline-horizontal .timeline-item:first-child,\n.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-item:first-child,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-month-title + .timeline-item {\n overflow: visible;\n}\n.timeline-horizontal .timeline-item:first-child .timeline-item-date,\n.timeline-year:first-child .timeline-month:first-child .timeline-item:first-child .timeline-item-date,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-item:first-child .timeline-item-date,\n.timeline-year:first-child .timeline-year-title + .timeline-month .timeline-month-title + .timeline-item .timeline-item-date {\n width: auto;\n padding-left: calc(var(--f7-timeline-horizontal-item-padding) + var(--f7-safe-area-left));\n left: calc(0px - var(--f7-safe-area-left));\n right: 0;\n}\n.timeline-year:last-child .timeline-year-title,\n.timeline-year:last-child .timeline-month:last-child .timeline-month-title {\n width: auto;\n right: calc(0px - var(--f7-safe-area-right));\n}\n.timeline-horizontal .timeline-item:last-child,\n.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child {\n overflow: visible;\n}\n.timeline-horizontal .timeline-item:last-child .timeline-item-date,\n.timeline-year:last-child .timeline-month:last-child .timeline-item:last-child .timeline-item-date {\n width: auto;\n right: calc(0px - var(--f7-safe-area-right));\n left: 0;\n}\n.ios .block-strong .timeline-item-inner {\n border-radius: 3px;\n border: 1px solid rgba(0, 0, 0, 0.1);\n}\n.ios .timeline-year-title span {\n margin-top: 3px;\n}\n.md .timeline-year-title span {\n margin-top: 2px;\n}\n/* === Tabs === */\n.tabs .tab {\n display: none;\n}\n.tabs .tab-active {\n display: block;\n}\n.tabs-animated-wrap {\n position: relative;\n width: 100%;\n overflow: hidden;\n height: 100%;\n}\n.tabs-animated-wrap > .tabs {\n display: flex;\n height: 100%;\n transition-duration: 300ms;\n}\n.tabs-animated-wrap > .tabs > .tab {\n width: 100%;\n display: block;\n flex-shrink: 0;\n}\n.tabs-animated-wrap.not-animated > .tabs {\n transition-duration: 0ms;\n}\nswiper-container.tabs {\n height: 100%;\n}\nswiper-container.tabs > .tab {\n display: block;\n touch-action: pan-y;\n}\n.page > .tabs {\n height: 100%;\n}\n/* === Panels === */\n:root {\n --f7-panel-width: 260px;\n --f7-panel-backdrop-bg-color: rgba(0, 0, 0, 0.3);\n /*\n --f7-panel-left-width: var(--f7-panel-width);\n --f7-panel-right-width: var(--f7-panel-width);\n --f7-panel-left-collapsed-width: var(--f7-panel-collapsed-width);\n --f7-panel-right-collapsed-width: var(--f7-panel-collapsed-width);\n */\n --f7-panel-bg-color: #fff;\n}\n:root .dark,\n:root.dark {\n --f7-panel-bg-color: #000;\n}\n.ios {\n --f7-panel-collapsed-width: 58px;\n --f7-panel-transition-duration: 400ms;\n --f7-panel-transition-timing-function: initial;\n}\n.md {\n --f7-panel-collapsed-width: 60px;\n --f7-panel-transition-duration: 400ms;\n --f7-panel-transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n}\n.panel-backdrop {\n position: absolute;\n left: 0;\n top: 0px;\n width: 100%;\n height: 100%;\n opacity: 0;\n z-index: 5999;\n visibility: hidden;\n pointer-events: none;\n transform: translate3d(0, 0, 0);\n background-color: var(--f7-panel-backdrop-bg-color);\n transition-property: transform, opacity;\n transition-duration: var(--f7-panel-transition-duration);\n}\n.panel-backdrop .with-panel,\n.panel-backdrop .with-panel-closing {\n visibility: visible;\n}\n.panel-backdrop.not-animated {\n transition-duration: 0ms !important;\n}\n.panel {\n z-index: 1000;\n box-sizing: border-box;\n position: absolute;\n top: 0px;\n height: 100%;\n transform: translate3d(0, 0, 0);\n width: var(--f7-panel-width);\n background-color: var(--f7-panel-bg-color);\n overflow: visible;\n transition-property: transform;\n transition-duration: var(--f7-panel-transition-duration);\n}\n.panel:not(.panel-in):not(.panel-out):not(.panel-in-breakpoint):not(.panel-in-collapsed):not(\n .panel-in-swipe\n ) {\n display: none;\n}\n.panel:after {\n pointer-events: none;\n opacity: 0;\n z-index: 5999;\n position: absolute;\n content: '';\n top: 0;\n width: 20px;\n height: 100%;\n transition-property: transform, opacity;\n transition-duration: var(--f7-panel-transition-duration);\n}\n.panel.not-animated,\n.panel.not-animated:after {\n transition-duration: 0ms !important;\n}\n.panel.panel-reveal.not-animated ~ .views,\n.panel.panel-reveal.not-animated ~ .view {\n transition-duration: 0ms !important;\n}\n.panel.panel-resizing {\n -webkit-user-select: none;\n user-select: none;\n}\n.panel.panel-resizing,\n.panel.panel-resizing:after,\n.panel.panel-resizing ~ .views,\n.panel.panel-resizing ~ .view {\n transition-duration: 0ms !important;\n}\n.panel-cover,\n.panel-floating {\n z-index: 6000;\n}\n.panel-floating {\n overflow: hidden;\n border-radius: 16px;\n height: auto;\n top: calc(8px + var(--f7-safe-area-top, 0px));\n bottom: calc(8px + var(--f7-safe-area-bottom, 0px));\n}\n.panel-floating .views,\n.panel-floating .view {\n --f7-safe-area-top: 0px;\n --f7-safe-area-bottom: 0px;\n}\n.page .panel-floating {\n top: calc(8px + var(--f7-page-navbar-offset, 0px));\n bottom: calc(8px + var(--f7-safe-area-bottom, 0px));\n}\n.page .panel-floating .page {\n --f7-page-navbar-offset: 0px;\n}\n.page .panel-floating .navbar ~ *,\n.page .panel-floating .navbars ~ * {\n --f7-page-navbar-offset: calc(var(--f7-navbar-height));\n}\n.panel-left {\n left: 0;\n width: var(--f7-panel-left-width, var(--f7-panel-width));\n}\n.panel-left.panel-cover,\n.panel-left.panel-floating,\n.panel-left.panel-push {\n transform: translate3d(calc(-1 * var(--f7-panel-left-width, var(--f7-panel-width))), 0, 0);\n}\n.panel-right {\n right: 0;\n width: var(--f7-panel-right-width, var(--f7-panel-width));\n}\n.panel-right.panel-cover,\n.panel-right.panel-floating,\n.panel-right.panel-push {\n transform: translate3d(var(--f7-panel-right-width, var(--f7-panel-width)), 0, 0);\n}\n.panel-in-breakpoint {\n transform: translate3d(0, 0, 0) !important;\n transition-duration: 0ms;\n}\n.panel-in-breakpoint:after {\n display: none;\n}\n.panel-in-breakpoint.panel-cover,\n.panel-in-breakpoint.panel-floating {\n z-index: 5900;\n}\n.panel,\n.panel-backdrop {\n transition-timing-function: var(--f7-panel-transition-timing-function);\n}\nhtml.with-panel-left-reveal .views,\nhtml.with-panel-right-reveal .views,\nhtml.with-panel-left-push .views,\nhtml.with-panel-right-push .views,\nhtml.with-panel-closing .views,\nhtml.with-panel-left-reveal .framework7-root > .view,\nhtml.with-panel-right-reveal .framework7-root > .view,\nhtml.with-panel-left-push .framework7-root > .view,\nhtml.with-panel-right-push .framework7-root > .view,\nhtml.with-panel-closing .framework7-root > .view {\n transition-duration: var(--f7-panel-transition-duration);\n transition-property: transform;\n transition-timing-function: var(--f7-panel-transition-timing-function);\n}\nhtml.with-panel .framework7-root > .views .page-content,\nhtml.with-panel .framework7-root > .view .page-content {\n overflow: hidden;\n -webkit-overflow-scrolling: auto;\n}\nhtml.with-panel-left-reveal .views,\nhtml.with-panel-left-push .views,\nhtml.with-panel-left-reveal .framework7-root > .view,\nhtml.with-panel-left-push .framework7-root > .view {\n transform: translate3d(var(--f7-panel-left-width, var(--f7-panel-width)), 0, 0);\n}\nhtml.with-panel-right-reveal .views,\nhtml.with-panel-right-push .views,\nhtml.with-panel-right-reveal .framework7-root > .view,\nhtml.with-panel-right-push .framework7-root > .view {\n transform: translate3d(calc(-1 * var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\n.page > .panel-backdrop {\n z-index: 290;\n}\n.page > .panel-reveal,\n.page .panel-push {\n z-index: 1;\n}\n.page > .panel-cover,\n.page > .panel-floating {\n z-index: 300;\n}\n.page.with-panel-left-reveal > .page-content,\n.page.with-panel-right-reveal > .page-content,\n.page.with-panel-left-push > .page-content,\n.page.with-panel-right-push > .page-content,\n.page.with-panel-closing > .page-content,\n.page.with-panel-left-reveal > .tabs,\n.page.with-panel-right-reveal > .tabs,\n.page.with-panel-left-push > .tabs,\n.page.with-panel-right-push > .tabs,\n.page.with-panel-closing > .tabs {\n transition-duration: var(--f7-panel-transition-duration);\n transition-property: transform;\n transition-timing-function: var(--f7-panel-transition-timing-function);\n}\n.page.with-panel-left-reveal > .page-content,\n.page.with-panel-left-push > .page-content,\n.page.with-panel-left-reveal > .tabs,\n.page.with-panel-left-push > .tabs {\n transform: translate3d(var(--f7-panel-left-width, var(--f7-panel-width)), 0, 0);\n}\n.page.with-panel-right-reveal > .page-content,\n.page.with-panel-right-push > .page-content,\n.page.with-panel-right-reveal > .tabs,\n.page.with-panel-right-push > .tabs {\n transform: translate3d(calc(-1 * var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\n.with-panel-closing .panel-backdrop-in {\n visibility: visible;\n pointer-events: auto;\n opacity: 0;\n}\n.with-panel-left-reveal .panel-backdrop-in,\n.with-panel-right-reveal .panel-backdrop-in,\n.with-panel-left-cover .panel-backdrop-in,\n.with-panel-right-cover .panel-backdrop-in,\n.with-panel-left-floating .panel-backdrop-in,\n.with-panel-right-floating .panel-backdrop-in,\n.with-panel-left-push .panel-backdrop-in,\n.with-panel-right-push .panel-backdrop-in {\n visibility: visible;\n pointer-events: auto;\n opacity: 1;\n}\n.with-panel-left-reveal .panel-backdrop-in,\n.with-panel-left-push .panel-backdrop-in {\n transform: translate3d(var(--f7-panel-left-width, var(--f7-panel-width)), 0, 0);\n}\n.with-panel-right-reveal .panel-backdrop-in,\n.with-panel-right-push .panel-backdrop-in {\n transform: translate3d(calc(-1 * var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\n.with-panel-left-cover .panel-left,\n.with-panel-left-push .panel-left {\n transform: translate3d(0px, 0, 0);\n}\n.with-panel-left-floating .panel-left {\n transform: translate3d(8px, 0, 0);\n}\n.with-panel-right-cover .panel-right,\n.with-panel-right-push .panel-right {\n transform: translate3d(0px, 0, 0);\n}\n.with-panel-right-floating .panel-right {\n transform: translate3d(-8px, 0, 0);\n}\n.panel-resizable {\n max-width: 100%;\n}\n.panel-resize-handler {\n position: absolute;\n top: 0;\n height: 100%;\n width: 6px;\n cursor: col-resize;\n z-index: 6000;\n display: none;\n}\n.panel-resizable .panel-resize-handler {\n display: block;\n}\n.panel-left.panel-cover .panel-resize-handler,\n.panel-left.panel-floating .panel-resize-handler {\n right: -3px;\n}\n.panel-left.panel-reveal .panel-resize-handler,\n.panel-left.panel-push .panel-resize-handler {\n right: 0;\n}\n.panel-right.panel-cover .panel-resize-handler,\n.panel-right.panel-floating .panel-resize-handler {\n left: -3px;\n}\n.panel-right.panel-reveal .panel-resize-handler,\n.panel-right.panel-push .panel-resize-handler {\n left: 0;\n}\n.panel-left.panel-in-collapsed ~ .views,\n.panel-left.panel-in-collapsed ~ .view,\n.panel-left.panel-in-collapsed ~ .page-content,\n.panel-left.panel-in-collapsed ~ .tabs {\n margin-left: var(--f7-panel-left-collapsed-width, var(--f7-panel-collapsed-width));\n}\n.page.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .page-content,\n.page.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .tabs,\nhtml.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .views,\nhtml.with-panel-left-reveal .panel-left.panel-in-collapsed ~ .view {\n transform: translate3d(calc(var(--f7-panel-left-width, var(--f7-panel-width)) - var(--f7-panel-left-collapsed-width, var(--f7-panel-collapsed-width))), 0, 0);\n}\n.panel-right.panel-in-collapsed ~ .views,\n.panel-right.panel-in-collapsed ~ .view,\n.panel-right.panel-in-collapsed ~ .page-content,\n.panel-right.panel-in-collapsed ~ .tabs {\n margin-right: var(--f7-panel-right-collapsed-width, var(--f7-panel-collapsed-width));\n}\n.page.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .page-content,\n.page.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .tabs,\nhtml.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .views,\nhtml.with-panel-right-reveal .panel-right.panel-in-collapsed ~ .view {\n transform: translate3d(calc(var(--f7-panel-right-collapsed-width, var(--f7-panel-collapsed-width)) - var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);\n}\nhtml.with-modal-popup-push .framework7-root,\nhtml.with-modal-popup-push-closing .framework7-root {\n --f7-panelPushScale: var(--f7-popup-push-scale);\n --f7-panelPushTransitionDuration: var(--f7-popup-transition-duration);\n --f7-panelPushTransitionTimingFunction: var(--f7-popup-transition-timing-function);\n --f7-panelPushBorderRadius: var(--f7-popup-push-border-radius);\n}\nhtml.with-modal-sheet-push .framework7-root,\nhtml.with-modal-sheet-push-closing .framework7-root {\n --f7-panelPushScale: var(--f7-sheet-push-scale);\n --f7-panelPushTransitionDuration: var(--f7-sheet-transition-duration);\n --f7-panelPushTransitionTimingFunction: var(--f7-sheet-transition-timing-function);\n --f7-panelPushBorderRadius: var(--f7-sheet-push-border-radius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in,\nhtml.with-modal-sheet-push .framework7-root > .panel-in,\nhtml.with-modal-popup-push .framework7-root > .panel-out,\nhtml.with-modal-sheet-push .framework7-root > .panel-out {\n transition-duration: var(--f7-panelPushTransitionDuration);\n transition-timing-function: var(--f7-panelPushTransitionTimingFunction);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-left {\n transform: scale(var(--f7-panelPushScale, 1));\n transform-origin: 50vw center;\n border-top-left-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-left .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-left .view,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-left .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-left .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-left .view {\n border-top-left-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-right {\n transform: scale(var(--f7-panelPushScale, 1));\n transform-origin: calc(var(--f7-panel-left-width, var(--f7-panel-width)) - 50vw) center;\n border-top-right-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-reveal.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-reveal.panel-right .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-reveal.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-reveal.panel-right .view,\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-push.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-push.panel-right .view,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-push.panel-right .view,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-push.panel-right .view {\n border-top-right-radius: var(--f7-panelPushBorderRadius);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-cover.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-cover.panel-left,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-cover.panel-left,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-cover.panel-left {\n transform: translate3d(calc(-1 * var(--f7-panel-left-width, var(--f7-panel-width))), 0, 0px);\n}\nhtml.with-modal-popup-push .framework7-root > .panel-in.panel-cover.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-in.panel-cover.panel-right,\nhtml.with-modal-popup-push .framework7-root > .panel-out.panel-cover.panel-right,\nhtml.with-modal-sheet-push .framework7-root > .panel-out.panel-cover.panel-right {\n transform: translate3d(var(--f7-panel-right-width, var(--f7-panel-width)), 0, 0px);\n}\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in {\n transition-duration: var(--f7-panelPushTransitionDuration);\n transition-timing-function: var(--f7-panelPushTransitionTimingFunction);\n}\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-reveal.panel-left,\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-push.panel-left,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-push.panel-left {\n transform-origin: 50vw center;\n}\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-reveal.panel-right,\nhtml.with-modal-popup-push-closing .framework7-root > .panel-in.panel-push.panel-right,\nhtml.with-modal-sheet-push-closing .framework7-root > .panel-in.panel-push.panel-right {\n transform-origin: calc(var(--f7-panel-right-width, var(--f7-panel-width)) - 50vw) center;\n}\n.md .panel-cover {\n overflow: hidden;\n}\n.md .panel-cover.panel-left {\n border-radius: 0 16px 16px 0;\n}\n.md .panel-cover.panel-right {\n border-radius: 16px 0 0 16px;\n}\n/* === Card === */\n:root {\n --f7-card-margin-horizontal: 16px;\n --f7-card-margin-vertical: 16px;\n --f7-card-content-padding-horizontal: 16px;\n --f7-card-content-padding-vertical: 16px;\n --f7-card-font-size: inherit;\n --f7-card-header-text-color: inherit;\n --f7-card-header-font-weight: 400;\n --f7-card-header-padding-horizontal: 16px;\n --f7-card-footer-font-weight: 400;\n --f7-card-footer-font-size: inherit;\n --f7-card-footer-padding-horizontal: 16px;\n --f7-card-expandable-font-size: 16px;\n --f7-card-expandable-tablet-width: 670px;\n --f7-card-expandable-tablet-height: 670px;\n}\n.ios {\n --f7-card-border-radius: 8px;\n --f7-card-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.2);\n --f7-card-header-font-size: 17px;\n --f7-card-header-padding-vertical: 10px;\n --f7-card-header-min-height: 44px;\n --f7-card-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-card-footer-padding-vertical: 10px;\n --f7-card-footer-min-height: 44px;\n --f7-card-expandable-margin-horizontal: 20px;\n --f7-card-expandable-margin-vertical: 30px;\n --f7-card-expandable-box-shadow: 0px 20px 40px rgba(0, 0, 0, 0.3);\n --f7-card-expandable-border-radius: 16px;\n --f7-card-expandable-tablet-border-radius: 16px;\n --f7-card-expandable-header-font-size: 27px;\n --f7-card-expandable-header-font-weight: bold;\n --f7-card-text-color: inherit;\n --f7-card-bg-color: #fff;\n --f7-card-expandable-bg-color: #fff;\n --f7-card-outline-border-color: rgba(0, 0, 0, 0.12);\n --f7-card-header-border-color: rgba(0, 0, 0, 0.1);\n --f7-card-footer-border-color: rgba(0, 0, 0, 0.1);\n}\n.ios .dark,\n.ios.dark {\n --f7-card-bg-color: #1c1c1d;\n --f7-card-expandable-bg-color: #1c1c1d;\n --f7-card-outline-border-color: rgba(255, 255, 255, 0.15);\n --f7-card-header-border-color: rgba(255, 255, 255, 0.15);\n --f7-card-footer-border-color: rgba(255, 255, 255, 0.15);\n --f7-card-footer-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-card-border-radius: 16px;\n --f7-card-box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2),\n 0px 1px 1px 0px rgba(0, 0, 0, 0.14),\n 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\n --f7-card-header-font-size: 22px;\n --f7-card-header-padding-vertical: 16px;\n --f7-card-header-min-height: 48px;\n --f7-card-footer-padding-vertical: 16px;\n --f7-card-footer-min-height: 48px;\n --f7-card-expandable-margin-horizontal: 12px;\n --f7-card-expandable-margin-vertical: 24px;\n --f7-card-expandable-box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2),\n 0px 10px 14px 1px rgba(0, 0, 0, 0.14),\n 0px 4px 18px 3px rgba(0, 0, 0, 0.12);\n --f7-card-expandable-border-radius: 16px;\n --f7-card-expandable-tablet-border-radius: 16px;\n --f7-card-expandable-header-font-size: 22px;\n --f7-card-expandable-header-font-weight: 500;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-card-bg-color: var(--f7-md-surface-1);\n --f7-card-expandable-bg-color: var(--f7-md-surface-1);\n --f7-card-outline-border-color: var(--f7-md-outline);\n --f7-card-header-border-color: var(--f7-md-outline);\n --f7-card-footer-border-color: var(--f7-md-outline);\n --f7-card-text-color: var(--f7-md-on-surface);\n --f7-card-footer-text-color: var(--f7-md-on-surface-variant);\n}\n.cards-list > ul:before,\n.card .list > ul:before,\n.cards-list > ul:after,\n.card .list > ul:after {\n display: none !important;\n}\n.cards-list ul,\n.card .list ul {\n background: none;\n}\n.card {\n background: var(--f7-card-bg-color);\n position: relative;\n border-radius: var(--f7-card-border-radius);\n font-size: var(--f7-card-font-size);\n margin-top: var(--f7-card-margin-vertical);\n margin-bottom: var(--f7-card-margin-vertical);\n margin-left: calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-left));\n margin-right: calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-right));\n color: var(--f7-card-text-color);\n}\n.card .list,\n.card .block {\n margin: 0;\n}\n.row:not(.no-gap) .col > .card {\n margin-left: 0;\n margin-right: 0;\n}\n.card-raised {\n box-shadow: var(--f7-card-box-shadow);\n}\n.card-outline,\n.ios .card-outline-ios,\n.md .card-outline-md {\n border: 1px solid var(--f7-card-outline-border-color);\n}\n.card-content {\n position: relative;\n}\n.card-content-padding {\n position: relative;\n padding: var(--f7-card-content-padding-vertical) var(--f7-card-content-padding-horizontal);\n}\n.card-content-padding > .list,\n.card-content-padding > .block {\n margin: calc(-1 * var(--f7-card-content-padding-vertical)) calc(-1 * var(--f7-card-content-padding-horizontal));\n}\n.card-content-padding > p:first-child {\n margin-top: 0;\n}\n.card-content-padding > p:last-child {\n margin-bottom: 0;\n}\n.card-header {\n min-height: var(--f7-card-header-min-height);\n color: var(--f7-card-header-text-color);\n font-size: var(--f7-card-header-font-size);\n font-weight: var(--f7-card-header-font-weight);\n padding: var(--f7-card-header-padding-vertical) var(--f7-card-header-padding-horizontal);\n}\n.card-header.card-header-divider,\n.card-header-divider .card-header,\n.card-dividers .card-header {\n border-bottom: 1px solid var(--f7-card-header-border-color);\n}\n.card-footer {\n min-height: var(--f7-card-footer-min-height);\n color: var(--f7-card-footer-text-color);\n font-size: var(--f7-card-footer-font-size);\n font-weight: var(--f7-card-footer-font-weight);\n padding: var(--f7-card-footer-padding-vertical) var(--f7-card-footer-padding-horizontal);\n}\n.card-footer.card-footer-divider,\n.card-footer-divider .card-footer,\n.card-dividers .card-footer {\n border-top: 1px solid var(--f7-card-header-border-color);\n}\n.card-footer a.link {\n overflow: hidden;\n}\n.card-header,\n.card-footer {\n position: relative;\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.card-header[valign='top'],\n.card-footer[valign='top'] {\n align-items: flex-start;\n}\n.card-header[valign='bottom'],\n.card-footer[valign='bottom'] {\n align-items: flex-end;\n}\n.card-header a.link,\n.card-footer a.link {\n position: relative;\n}\n.card-header a.link i.icon,\n.card-footer a.link i.icon {\n display: block;\n}\n.card-header a.icon-only,\n.card-footer a.icon-only {\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 0;\n}\n.card-header {\n border-radius: var(--f7-card-border-radius) var(--f7-card-border-radius) 0 0;\n}\n.card-footer {\n border-radius: 0 0 var(--f7-card-border-radius) var(--f7-card-border-radius);\n}\n.card-expandable {\n overflow: hidden;\n height: 300px;\n background: var(--f7-card-expandable-bg-color);\n position: relative;\n transform-origin: center center;\n transition-property: transform, border-radius;\n border-radius: var(--f7-card-expandable-border-radius);\n z-index: 2;\n transition-duration: 200ms;\n margin-left: calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-left));\n margin-right: calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-right));\n margin-top: var(--f7-card-expandable-margin-vertical);\n margin-bottom: var(--f7-card-expandable-margin-vertical);\n font-size: var(--f7-card-expandable-font-size);\n}\n.card-expandable.card-raised {\n box-shadow: var(--f7-card-expandable-box-shadow);\n}\n.card-expandable:not(.card-opened) {\n -webkit-user-select: none;\n user-select: none;\n}\n.card-expandable.card-no-transition {\n transition-duration: 0ms;\n}\n.card-expandable.card-expandable-animate-width .card-content {\n transition-property: width, transform;\n width: 100%;\n}\n.card-expandable.active-state {\n transform: scale(0.97) translate3d(0, 0, 0);\n}\n.card-expandable .card-opened-fade-in,\n.card-expandable .card-opened-fade-out {\n transition-duration: 400ms;\n}\n.card-expandable .card-opened-fade-in {\n opacity: 0;\n pointer-events: none;\n}\n.card-expandable .card-content {\n position: absolute;\n top: 0;\n width: 100vw;\n height: 100vh;\n transform-origin: center top;\n overflow: hidden;\n transition-property: transform;\n box-sizing: border-box;\n pointer-events: none;\n left: 0;\n}\n.card-expandable .card-content .card-content-padding {\n padding-left: calc(var(--f7-safe-area-left) + var(--f7-card-content-padding-horizontal));\n padding-right: calc(var(--f7-safe-area-right) + var(--f7-card-content-padding-horizontal));\n}\n.card-expandable.card-opened {\n transition-duration: 0ms;\n}\n.card-expandable.card-opening,\n.card-expandable.card-closing,\n.card-expandable.card-transitioning {\n transition-duration: 400ms;\n}\n.card-expandable.card-opening .card-content {\n transition-duration: 300ms;\n}\n.card-expandable.card-closing .card-content {\n transition-duration: 500ms;\n}\n.card-expandable.card-opening,\n.card-expandable.card-opened,\n.card-expandable.card-closing {\n z-index: 300;\n}\n.card-expandable.card-opening,\n.card-expandable.card-opened {\n border-radius: 0;\n}\n.card-expandable.card-opening .card-opened-fade-in,\n.card-expandable.card-opened .card-opened-fade-in {\n opacity: 1;\n pointer-events: auto;\n}\n.card-expandable.card-opening .card-opened-fade-out,\n.card-expandable.card-opened .card-opened-fade-out {\n opacity: 0;\n pointer-events: none;\n}\n.card-expandable.card-opened .card-content {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n pointer-events: auto;\n}\n.card-expandable .card-header {\n font-size: var(--f7-card-expandable-header-font-size);\n font-weight: var(--f7-card-expandable-header-font-weight);\n}\n.card-prevent-open {\n pointer-events: auto;\n}\n.card-expandable-size {\n width: 0;\n height: 0;\n position: absolute;\n left: 0;\n top: 0;\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n}\n@media (min-width: 768px) and (min-height: 670px) {\n .card-expandable:not(.card-tablet-fullscreen) {\n max-width: var(--f7-card-expandable-tablet-width);\n }\n .card-expandable:not(.card-tablet-fullscreen).card-opened,\n .card-expandable:not(.card-tablet-fullscreen).card-opening {\n border-radius: var(--f7-card-expandable-tablet-border-radius);\n }\n .card-expandable:not(.card-tablet-fullscreen):not(.card-expandable-animate-width) .card-content {\n width: var(--f7-card-expandable-tablet-width);\n }\n .card-expandable:not(.card-tablet-fullscreen) .card-expandable-size {\n width: var(--f7-card-expandable-tablet-width);\n height: var(--f7-card-expandable-tablet-height);\n }\n}\n.page.page-with-card-opened .page-content {\n overflow: hidden;\n}\n.card-backdrop {\n position: fixed;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 299;\n pointer-events: none;\n background: rgba(0, 0, 0, 0.2);\n opacity: 0;\n}\n.card-backdrop-in {\n animation: card-backdrop-fade-in 400ms forwards;\n pointer-events: auto;\n}\n.card-backdrop-out {\n animation: card-backdrop-fade-out 400ms forwards;\n}\n@supports ((-webkit-backdrop-filter: blur(15px)) or (backdrop-filter: blur(15px))) {\n .card-backdrop {\n background: transparent;\n -webkit-backdrop-filter: blur(15px);\n backdrop-filter: blur(15px);\n }\n}\n@keyframes card-backdrop-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes card-backdrop-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n/* === Chips === */\n:root {\n --f7-chip-font-size: 14px;\n --f7-chip-media-font-size: 16px;\n --f7-chip-delete-button-color: #000;\n}\n:root .dark,\n:root.dark {\n --f7-chip-delete-button-color: #fff;\n}\n.ios {\n --f7-chip-height: 28px;\n --f7-chip-media-size: 28px;\n --f7-chip-padding-horizontal: 10px;\n --f7-chip-border-radius: 28px;\n --f7-chip-font-weight: normal;\n --f7-chip-outline-border-color: rgba(0, 0, 0, 0.12);\n --f7-chip-bg-color: rgba(0, 0, 0, 0.12);\n --f7-chip-text-color: #000;\n --f7-chip-outline-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-chip-bg-color: #333;\n --f7-chip-text-color: #fff;\n --f7-chip-outline-text-color: #fff;\n --f7-chip-outline-border-color: rgba(255, 255, 255, 0.12);\n}\n.md {\n --f7-chip-font-weight: 500;\n --f7-chip-media-size: 24px;\n --f7-chip-height: 32px;\n --f7-chip-padding-horizontal: 12px;\n --f7-chip-border-radius: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-chip-bg-color: var(--f7-md-secondary-container);\n --f7-chip-text-color: var(--f7-md-on-secondary-container);\n --f7-chip-outline-text-color: var(--f7-md-on-surface);\n --f7-chip-outline-border-color: var(--f7-md-outline);\n}\n.chip {\n padding-left: var(--f7-chip-padding-horizontal);\n padding-right: var(--f7-chip-padding-horizontal);\n font-weight: var(--f7-chip-font-weight);\n display: inline-flex;\n box-sizing: border-box;\n vertical-align: middle;\n align-items: center;\n margin: 2px 0;\n background-color: var(--f7-chip-bg-color);\n font-size: var(--f7-chip-font-size);\n color: var(--f7-chip-text-color);\n height: var(--f7-chip-height);\n line-height: var(--f7-chip-height);\n border-radius: var(--f7-chip-border-radius);\n position: relative;\n}\n.chip-media {\n border-radius: 50%;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--f7-chip-media-size);\n width: var(--f7-chip-media-size);\n border-radius: var(--f7-chip-media-size);\n text-align: center;\n line-height: var(--f7-chip-media-size);\n box-sizing: border-box;\n color: #fff;\n font-size: var(--f7-chip-media-font-size);\n vertical-align: middle;\n}\n.chip-media i.icon {\n font-size: calc(var(--f7-chip-media-size) - 8px);\n height: calc(var(--f7-chip-media-size) - 8px);\n}\n.chip-media img {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n border-radius: 50%;\n display: block;\n}\n.chip-media + .chip-label {\n margin-left: 4px;\n}\n.chip-label {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n position: relative;\n flex-shrink: 1;\n min-width: 0;\n}\n.chip-delete {\n text-align: center;\n cursor: pointer;\n flex-shrink: 0;\n background-repeat: no-repeat;\n width: 24px;\n height: 24px;\n color: var(--f7-chip-delete-button-color);\n opacity: 0.54;\n position: relative;\n}\n.chip-delete:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n line-height: 24px;\n}\n.chip .chip-delete.active-state {\n opacity: 1;\n}\n.chip-outline,\n.ios .chip-outline-ios,\n.md .chip-outline-md {\n border: 1px solid var(--f7-chip-outline-border-color);\n color: var(--f7-chip-outline-text-color);\n background: none;\n}\n.ios .chip[class*='color-'] {\n --f7-chip-bg-color: var(--f7-theme-color);\n --f7-chip-text-color: #fff;\n}\n.ios .chip-outline[class*='color-'],\n.ios .chip-outline-ios[class*='color-'] {\n --f7-chip-outline-border-color: var(--f7-theme-color);\n --f7-chip-outline-text-color: var(--f7-theme-color);\n}\n.ios .chip-media {\n margin-left: calc(-1 * var(--f7-chip-padding-horizontal));\n}\n.ios .chip-delete {\n margin-right: calc(-1 * var(--f7-chip-padding-horizontal));\n}\n.ios .chip-delete::after {\n content: 'delete_round_ios';\n}\n.ios .chip-delete:after {\n font-size: 10px;\n}\n.md .chip-media {\n margin-left: calc(-1 * var(--f7-chip-padding-horizontal) + 4px);\n}\n.md .chip-label + .chip-delete {\n margin-left: 4px;\n}\n.md .chip-delete {\n margin-right: calc(-1 * var(--f7-chip-padding-horizontal) + 4px);\n}\n.md .chip-delete::after {\n content: 'delete_round_md';\n font-size: 16px;\n}\n/* === Form === */\n/* === Input === */\n:root {\n --f7-input-bg-color: transparent;\n --f7-label-font-weight: 400;\n --f7-label-height: 16px;\n --f7-label-font-size: 12px;\n --f7-floating-label-scale: calc(16 / 12);\n --f7-input-padding-left: 0px;\n --f7-input-padding-right: 0px;\n --f7-input-error-text-color: #ff3b30;\n --f7-input-error-font-size: 12px;\n --f7-input-error-line-height: 1.4;\n --f7-input-error-font-weight: 400;\n --f7-input-info-font-size: 12px;\n --f7-input-info-line-height: 1.4;\n --f7-textarea-height: 100px;\n /*\n --f7-input-outline-focused-border-color: var(--f7-theme-color);\n --f7-input-outline-invalid-border-color: var(--f7-input-error-text-color);\n */\n}\n.ios {\n --f7-input-item-bg-color: transparent;\n --f7-input-item-border-radius: 0px;\n --f7-input-height: 40px;\n --f7-input-font-size: 16px;\n --f7-input-placeholder-color: #a9a9a9;\n --f7-textarea-padding-vertical: 8px;\n /*\n --f7-input-focused-border-color: var(--f7-list-item-border-color);\n --f7-input-invalid-border-color: var(--f7-list-item-border-color);\n --f7-input-invalid-text-color: var(--f7-input-error-text-color);\n */\n --f7-label-text-color: inherit;\n /*\n --f7-label-focused-text-color: var(--f7-label-text-color);\n --f7-label-invalid-text-color: var(--f7-label-text-color);\n */\n --f7-input-clear-button-size: 14px;\n --f7-input-outline-border-radius: 8px;\n --f7-input-text-color: #000000;\n --f7-input-info-text-color: rgba(0, 0, 0, 0.45);\n --f7-input-clear-button-color: rgba(0, 0, 0, 0.45);\n --f7-input-outline-border-color: #bbb;\n}\n.ios .dark,\n.ios.dark {\n --f7-input-text-color: #fff;\n --f7-input-info-text-color: rgba(255, 255, 255, 0.55);\n --f7-input-clear-button-color: rgba(255, 255, 255, 0.5);\n --f7-input-outline-border-color: #444;\n}\n.md {\n --f7-input-item-border-radius: 4px 4px 0 0;\n --f7-input-height: 24px;\n --f7-input-font-size: 16px;\n --f7-textarea-padding-vertical: 0px;\n --f7-input-outline-border-radius: 4px;\n /*\n --f7-input-focused-border-color: var(--f7-theme-color);\n --f7-input-invalid-border-color: var(--f7-input-error-text-color);\n --f7-input-invalid-text-color: var(--f7-input-text-color);\n */\n /*\n --f7-label-focused-text-color: var(--f7-theme-color);\n --f7-label-invalid-text-color: var(--f7-input-error-text-color );\n */\n --f7-floating-label-scale: calc(16 / 12);\n --f7-input-clear-button-size: 24px;\n --f7-input-info-text-color: rgba(0, 0, 0, 0.45);\n}\n.md .dark,\n.md.dark {\n --f7-input-info-text-color: rgba(255, 255, 255, 0.45);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-input-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-input-item-bg-color: var(--f7-md-surface-variant);\n --f7-input-border-color: var(--f7-md-outline);\n --f7-input-clear-button-color: var(--f7-md-on-surface-variant);\n --f7-input-outline-border-color: var(--f7-md-outline);\n --f7-input-text-color: var(--f7-md-on-surface);\n --f7-label-text-color: var(--f7-md-on-surface-variant);\n}\ninput[type='text'],\ninput[type='password'],\ninput[type='search'],\ninput[type='email'],\ninput[type='tel'],\ninput[type='url'],\ninput[type='date'],\ninput[type='month'],\ninput[type='datetime-local'],\ninput[type='time'],\ninput[type='number'],\nselect,\ntextarea {\n box-sizing: border-box;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n box-shadow: none;\n border-radius: 0;\n outline: 0;\n display: block;\n padding: 0;\n margin: 0;\n font-family: inherit;\n background: none;\n resize: none;\n font-size: inherit;\n color: inherit;\n}\ninput[type='text']:-internal-autofill-selected,\ninput[type='password']:-internal-autofill-selected,\ninput[type='search']:-internal-autofill-selected,\ninput[type='email']:-internal-autofill-selected,\ninput[type='tel']:-internal-autofill-selected,\ninput[type='url']:-internal-autofill-selected,\ninput[type='date']:-internal-autofill-selected,\ninput[type='month']:-internal-autofill-selected,\ninput[type='datetime-local']:-internal-autofill-selected,\ninput[type='time']:-internal-autofill-selected,\ninput[type='number']:-internal-autofill-selected,\nselect:-internal-autofill-selected,\ntextarea:-internal-autofill-selected {\n background-color: transparent !important;\n transition: background-color 5000s ease-in-out 0s !important;\n}\ninput[type='text']:-webkit-autofill, input[type='password']:-webkit-autofill, input[type='search']:-webkit-autofill, input[type='email']:-webkit-autofill, input[type='tel']:-webkit-autofill, input[type='url']:-webkit-autofill, input[type='date']:-webkit-autofill, input[type='month']:-webkit-autofill, input[type='datetime-local']:-webkit-autofill, input[type='time']:-webkit-autofill, input[type='number']:-webkit-autofill, select:-webkit-autofill, textarea:-webkit-autofill {\n background-color: transparent !important;\n -webkit-transition: background-color 5000s ease-in-out 0s !important;\n transition: background-color 5000s ease-in-out 0s !important;\n}\ninput[type='text']:autofill,\ninput[type='password']:autofill,\ninput[type='search']:autofill,\ninput[type='email']:autofill,\ninput[type='tel']:autofill,\ninput[type='url']:autofill,\ninput[type='date']:autofill,\ninput[type='month']:autofill,\ninput[type='datetime-local']:autofill,\ninput[type='time']:autofill,\ninput[type='number']:autofill,\nselect:autofill,\ntextarea:autofill,\ninput[type='text']:-webkit-autofill-and-obscured,\ninput[type='password']:-webkit-autofill-and-obscured,\ninput[type='search']:-webkit-autofill-and-obscured,\ninput[type='email']:-webkit-autofill-and-obscured,\ninput[type='tel']:-webkit-autofill-and-obscured,\ninput[type='url']:-webkit-autofill-and-obscured,\ninput[type='date']:-webkit-autofill-and-obscured,\ninput[type='month']:-webkit-autofill-and-obscured,\ninput[type='datetime-local']:-webkit-autofill-and-obscured,\ninput[type='time']:-webkit-autofill-and-obscured,\ninput[type='number']:-webkit-autofill-and-obscured,\nselect:-webkit-autofill-and-obscured,\ntextarea:-webkit-autofill-and-obscured {\n background-color: transparent !important;\n -webkit-transition: background-color 5000s ease-in-out 0s !important;\n transition: background-color 5000s ease-in-out 0s !important;\n}\n.textarea-resizable-shadow {\n opacity: 0;\n position: absolute;\n z-index: -1000;\n pointer-events: none;\n left: -1000px;\n top: -1000px;\n visibility: hidden;\n}\n.list input[type='text'],\n.list input[type='password'],\n.list input[type='search'],\n.list input[type='email'],\n.list input[type='tel'],\n.list input[type='url'],\n.list input[type='date'],\n.list input[type='month'],\n.list input[type='datetime-local'],\n.list input[type='time'],\n.list input[type='number'],\n.list select {\n width: 100%;\n height: var(--f7-input-height);\n color: var(--f7-input-text-color);\n font-size: var(--f7-input-font-size);\n background-color: var(--f7-input-bg-color, transparent);\n padding-left: var(--f7-input-padding-left);\n padding-right: var(--f7-input-padding-right);\n}\n.list input[type='text']::placeholder,\n.list input[type='password']::placeholder,\n.list input[type='search']::placeholder,\n.list input[type='email']::placeholder,\n.list input[type='tel']::placeholder,\n.list input[type='url']::placeholder,\n.list input[type='date']::placeholder,\n.list input[type='month']::placeholder,\n.list input[type='datetime-local']::placeholder,\n.list input[type='time']::placeholder,\n.list input[type='number']::placeholder,\n.list select::placeholder {\n color: var(--f7-input-placeholder-color);\n}\n.list textarea {\n width: 100%;\n color: var(--f7-input-text-color);\n font-size: var(--f7-input-font-size);\n resize: none;\n line-height: 1.4;\n height: var(--f7-textarea-height);\n background-color: var(--f7-input-bg-color, transparent);\n padding-top: var(--f7-textarea-padding-vertical);\n padding-bottom: var(--f7-textarea-padding-vertical);\n padding-left: var(--f7-input-padding-left);\n padding-right: var(--f7-input-padding-right);\n}\n.list textarea::placeholder {\n color: var(--f7-input-placeholder-color);\n}\n.list textarea.resizable {\n height: calc(var(--f7-input-height) + var(--f7-textarea-padding-vertical) * 2);\n}\n.list input[type='time'],\n.list input[type='date'],\n.list input[type='month'],\n.list input[type='datetime-local'] {\n line-height: var(--f7-input-height);\n}\n.list .item-label,\n.list .item-floating-label {\n width: auto;\n vertical-align: top;\n flex-shrink: 0;\n font-size: var(--f7-label-font-size);\n font-weight: var(--f7-label-font-weight);\n line-height: var(--f7-label-height);\n color: var(--f7-label-text-color);\n transition-duration: 200ms;\n transition-property: transform, color;\n}\n.list .item-floating-label {\n color: var(--f7-input-placeholder-color);\n max-width: calc(100% / var(--f7-floating-label-scale));\n pointer-events: none;\n left: var(--f7-input-padding-left);\n transform-origin: left center;\n}\n.list .item-floating-label ~ .item-input-wrap input::placeholder,\n.list .item-floating-label ~ .item-input-wrap textarea::placeholder {\n opacity: 0;\n transition-duration: 100ms;\n}\n.list .item-floating-label ~ .item-input-wrap input.input-focused::placeholder,\n.list .item-floating-label ~ .item-input-wrap textarea.input-focused::placeholder {\n opacity: 1;\n transition-duration: 300ms;\n}\n.list .item-input-with-value .item-floating-label {\n color: var(--f7-label-text-color);\n}\n.list .item-input-with-value .item-floating-label,\n.list .item-input-focused .item-floating-label {\n transform: scale(1) translateY(0) !important;\n}\n.list .item-input-wrap {\n width: 100%;\n flex-shrink: 1;\n position: relative;\n}\n.item-input,\n.input {\n position: relative;\n}\n.item-input .item-inner {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n.item-input-error-message,\n.input-error-message {\n font-size: var(--f7-input-error-font-size);\n line-height: var(--f7-input-error-line-height);\n color: var(--f7-input-error-text-color);\n font-weight: var(--f7-input-error-font-weight);\n display: none;\n box-sizing: border-box;\n}\n.item-input-info,\n.input-info {\n font-size: var(--f7-input-info-font-size);\n line-height: var(--f7-input-info-line-height);\n color: var(--f7-input-info-text-color);\n}\n.item-input-invalid .item-input-error-message,\n.input-invalid .item-input-error-message,\n.item-input-invalid .input-error-message,\n.input-invalid .input-error-message {\n display: block;\n}\n.item-input-invalid .item-input-info,\n.input-invalid .item-input-info,\n.item-input-invalid .input-info,\n.input-invalid .input-info {\n display: none;\n}\n.input {\n position: relative;\n}\n.input input,\n.input select,\n.input textarea {\n width: 100%;\n}\n.input-clear-button {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n transition-duration: 100ms;\n position: absolute;\n top: 50%;\n border: none;\n padding: 0;\n margin: 0;\n outline: 0;\n z-index: 1;\n cursor: pointer;\n background: none;\n width: var(--f7-input-clear-button-size);\n height: var(--f7-input-clear-button-size);\n margin-top: calc(-1 * var(--f7-input-clear-button-size) / 2);\n color: var(--f7-input-clear-button-color);\n right: 0;\n}\n.input-clear-button:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n.input-clear-button:before {\n position: absolute;\n content: '';\n left: 50%;\n top: 50%;\n}\n.item-input-wrap .input-clear-button {\n top: calc(var(--f7-input-height) / 2);\n}\n.input-clear-button.active-state {\n opacity: 0.75 !important;\n}\n.input-with-value ~ .input-clear-button,\n.item-input-with-value .input-clear-button,\n.input-with-value .input-clear-button {\n opacity: 1;\n pointer-events: auto;\n visibility: visible;\n}\n.input-dropdown-wrap,\n.input-dropdown {\n position: relative;\n}\n.input-dropdown-wrap:before,\n.input-dropdown:before {\n content: '';\n pointer-events: none;\n position: absolute;\n top: 50%;\n margin-top: -2px;\n width: 0;\n height: 0;\n border-left: 4px solid transparent;\n border-right: 4px solid transparent;\n border-top: 5px solid #727272;\n right: 6px;\n}\n.input-dropdown-wrap select,\n.input-dropdown select,\n.input-dropdown-wrap input,\n.input-dropdown input,\n.input-dropdown-wrap textarea,\n.input-dropdown textarea {\n padding-right: calc(20px + var(--f7-input-padding-right));\n}\n.item-input-outline .item-content::after,\n.item-input-outline.item-content::after,\n.input-outline::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n top: 8px;\n bottom: 8px;\n border: 1px solid var(--f7-input-outline-border-color);\n border-radius: var(--f7-input-outline-border-radius);\n pointer-events: none;\n box-sizing: border-box;\n transition-duration: 200ms;\n}\n.item-input-outline .item-content .item-label,\n.item-input-outline.item-content .item-label,\n.input-outline .item-label,\n.item-input-outline .item-content .item-floating-label,\n.item-input-outline.item-content .item-floating-label,\n.input-outline .item-floating-label {\n pointer-events: none;\n background: var(--f7-page-bg-color);\n z-index: 1;\n padding: 4px;\n}\n.item-input-outline .item-content.item-input-focused::after,\n.item-input-outline.item-content.item-input-focused::after,\n.input-outline.item-input-focused::after,\n.item-input-outline .item-content.input-focused::after,\n.item-input-outline.item-content.input-focused::after,\n.input-outline.input-focused::after {\n border-width: 2px;\n border-color: var(--f7-input-outline-invalid-border-color, var(--f7-theme-color));\n}\n.item-input-outline .item-content.item-input-invalid::after,\n.item-input-outline.item-content.item-input-invalid::after,\n.input-outline.item-input-invalid::after,\n.item-input-outline .item-content.input-invalid::after,\n.item-input-outline.item-content.input-invalid::after,\n.input-outline.input-invalid::after {\n border-width: 2px;\n border-color: var(--f7-input-outline-invalid-border-color, var(--f7-input-error-text-color));\n}\n.block-strong .item-input-outline .item-label,\n.block-strong .item-input-outline .item-floating-label,\n.ios .block-strong-ios .item-input-outline .item-label,\n.ios .block-strong-ios .item-input-outline .item-floating-label,\n.md .block-strong-md .item-input-outline .item-label,\n.md .block-strong-md .item-input-outline .item-floating-label {\n background: var(--f7-block-strong-bg-color) !important;\n}\n.list-strong .item-input-outline .item-floating-label,\n.list-strong .item-input-outline .item-label,\n.ios .list-strong-ios .item-input-outline .item-floating-label,\n.ios .list-strong-ios .item-input-outline .item-label,\n.md .list-strong-md .item-input-outline .item-floating-label,\n.md .list-strong-md .item-input-outline .item-label {\n background: var(--f7-list-strong-bg-color) !important;\n}\n.dark option {\n background-color: var(--f7-page-bg-color);\n}\n.ios .item-label + .item-input-wrap,\n.ios .item-floating-label + .item-input-wrap {\n margin-top: 0;\n}\n.ios .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height) + 25%));\n}\n.ios .item-input-focused .item-floating-label {\n color: var(--f7-label-text-color);\n}\n.ios .item-input .item-media {\n align-self: flex-start;\n}\n.ios .item-input-wrap {\n margin-top: calc(-1 * var(--f7-list-item-padding-vertical));\n margin-bottom: calc(-1 * var(--f7-list-item-padding-vertical));\n}\n.ios .item-input:not(.item-input-outline) .item-content,\n.ios .item-input:not(.item-input-outline).item-content {\n background: var(--f7-input-item-bg-color);\n}\n.ios .item-input-error-message,\n.ios .item-input-info,\n.ios .input-error-message,\n.ios .input-info {\n position: relative;\n margin-bottom: 6px;\n margin-top: -8px;\n}\n.ios .item-input-focused .item-label,\n.ios .item-input-focused .item-floating-label {\n color: var(--f7-label-focused-text-color, var(--f7-label-text-color));\n}\n.ios .item-input-focused .item-inner:after {\n background: var(--f7-input-focused-border-color, var(--f7-list-item-border-color));\n}\n.ios .item-input-invalid .item-label,\n.ios .item-input-invalid .item-floating-label {\n color: var(--f7-label-invalid-text-color, var(--f7-label-text-color));\n}\n.ios .item-input-invalid .item-inner:after {\n background: var(--f7-input-invalid-border-color, var(--f7-list-item-border-color));\n}\n.ios .item-input-invalid input,\n.ios .input-invalid input,\n.ios .item-input-invalid select,\n.ios .input-invalid select,\n.ios .item-input-invalid textarea,\n.ios .input-invalid textarea {\n color: var(--f7-input-invalid-text-color, var(--f7-input-error-text-color));\n}\n.ios .input-clear-button:after {\n content: 'delete_round_ios';\n font-size: calc(var(--f7-input-clear-button-size) / (14 / 10));\n line-height: 1.4;\n}\n.ios .input-clear-button:before {\n width: 44px;\n height: 44px;\n margin-left: -22px;\n margin-top: -22px;\n}\n.ios .item-input-outline .item-content,\n.ios .item-input-outline.item-content {\n padding-top: 8px;\n padding-bottom: 8px;\n margin-left: 16px;\n margin-right: 16px;\n}\n.ios li.item-input-outline:first-child,\n.ios li:first-child > .item-input-outline {\n padding-top: 16px;\n}\n.ios li.item-input-outline:first-child::after,\n.ios li:first-child > .item-input-outline::after {\n top: 16px;\n}\n.ios li.item-input-outline:last-child,\n.ios li:last-child > .item-input-outline {\n padding-bottom: 16px;\n}\n.ios li.item-input-outline:last-child::after,\n.ios li:last-child > .item-input-outline::after {\n bottom: 16px;\n}\n.ios .item-input-outline .item-content .item-inner,\n.ios .item-input-outline.item-content .item-inner,\n.ios .input-outline .item-inner {\n display: block;\n padding-top: 0px;\n padding-bottom: 0px;\n}\n.ios .item-input-outline .item-content .item-input-wrap,\n.ios .item-input-outline.item-content .item-input-wrap,\n.ios .input-outline .item-input-wrap {\n margin-top: 2px;\n}\n.ios .item-input-outline .item-content .item-title + .item-input-wrap,\n.ios .item-input-outline.item-content .item-title + .item-input-wrap,\n.ios .input-outline .item-title + .item-input-wrap {\n margin-top: -22px;\n}\n.ios .item-input-outline .item-content .item-label,\n.ios .item-input-outline.item-content .item-label,\n.ios .input-outline .item-label,\n.ios .item-input-outline .item-content .item-floating-label,\n.ios .item-input-outline.item-content .item-floating-label,\n.ios .input-outline .item-floating-label {\n display: inline-flex;\n margin: -8px -4px -4px;\n top: -4px;\n}\n.ios .item-input-outline .item-content .item-floating-label,\n.ios .item-input-outline.item-content .item-floating-label,\n.ios .input-outline .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc(var(--f7-label-height)));\n}\n.md .item-input-wrap {\n min-height: var(--f7-input-height);\n}\n.md .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc((var(--f7-input-height) / 2) / var(--f7-floating-label-scale)));\n}\n.md .item-input .item-inner:after {\n display: none !important;\n}\n.md .item-input .item-content,\n.md .item-input.item-content {\n margin-left: 16px;\n margin-right: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.md .input:after {\n content: '';\n position: absolute;\n background-color: var(--f7-input-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.md .input::after {\n transform: scaleY(1) !important;\n transition-duration: 200ms;\n bottom: 0px;\n}\n.md .input.input-focused::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-focused-border-color, var(--f7-theme-color));\n}\n.md .input.input-invalid::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-invalid-border-color, var(--f7-input-error-text-color));\n}\n.md .item-input:not(.item-input-outline) .item-content:after,\n.md .item-input:not(.item-input-outline).item-content:after {\n content: '';\n position: absolute;\n background-color: var(--f7-input-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.md .item-input:not(.item-input-outline) .item-content::before,\n.md .item-input:not(.item-input-outline).item-content::before {\n content: '';\n position: absolute;\n left: 0;\n top: 8px;\n bottom: 8px;\n right: 0;\n border-radius: var(--f7-input-item-border-radius);\n background: var(--f7-input-item-bg-color);\n pointer-events: none;\n}\n.md .item-input:not(.item-input-outline) .item-content::after,\n.md .item-input:not(.item-input-outline).item-content::after {\n transform: scaleY(1) !important;\n transition-duration: 200ms;\n bottom: 8px;\n}\n.md .item-input:not(.item-input-outline) .item-content.item-input-focused::after,\n.md .item-input:not(.item-input-outline).item-content.item-input-focused::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-focused-border-color, var(--f7-theme-color));\n}\n.md .item-input:not(.item-input-outline) .item-content.item-input-invalid::after,\n.md .item-input:not(.item-input-outline).item-content.item-input-invalid::after,\n.md .item-input:not(.item-input-outline) .item-content.input-invalid::after,\n.md .item-input:not(.item-input-outline).item-content.input-invalid::after {\n transform: scaleY(2) !important;\n background: var(--f7-input-invalid-border-color, var(--f7-input-error-text-color));\n}\n.md .item-input-outline .item-content .item-inner,\n.md .item-input-outline.item-content .item-inner,\n.md .input-outline .item-inner {\n padding-top: 16px;\n padding-bottom: 16px;\n}\n.md .item-input-outline .item-content .item-label,\n.md .item-input-outline.item-content .item-label,\n.md .input-outline .item-label,\n.md .item-input-outline .item-content .item-floating-label,\n.md .item-input-outline.item-content .item-floating-label,\n.md .input-outline .item-floating-label {\n --label-height: calc(var(--f7-label-height) + 8px);\n margin: calc(0px - 16px - var(--label-height) / 2) -4px 4px;\n}\n.md .item-input-outline .item-content .item-floating-label,\n.md .item-input-outline.item-content .item-floating-label,\n.md .input-outline .item-floating-label {\n transform: scale(var(--f7-floating-label-scale)) translateY(calc((var(--f7-input-height) / 2) + 8px));\n}\n.md .item-input-with-error-message,\n.md .item-input-with-info,\n.md .input-with-error-message,\n.md .input-with-info {\n padding-bottom: 24px !important;\n}\n.md .item-input-error-message,\n.md .item-input-info,\n.md .input-error-message,\n.md .input-info {\n position: absolute;\n top: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n width: 100%;\n left: 0;\n}\n.md .item-input-focused .item-label,\n.md .item-input-focused .item-floating-label {\n color: var(--f7-label-focused-text-color, var(--f7-theme-color));\n}\n.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after,\n.md .input-focused:not(.input-outline):after {\n background: var(--f7-input-focused-border-color, var(--f7-theme-color));\n}\n.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after,\n.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after,\n.md .input-invalid:not(.input-outline):after,\n.md .input-focused:not(.input-outline):after {\n transform: scaleY(2) !important;\n}\n.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after,\n.md .input-invalid:not(.input-outline):after {\n background: var(--f7-input-invalid-border-color, var(--f7-input-error-text-color));\n}\n.md .item-input-invalid .item-label,\n.md .item-input-invalid .item-floating-label {\n color: var(--f7-label-invalid-text-color, var(--f7-input-error-text-color));\n}\n.md .item-input-invalid input,\n.md .input-invalid input,\n.md .item-input-invalid select,\n.md .input-invalid select,\n.md .item-input-invalid textarea,\n.md .input-invalid textarea {\n color: var(--f7-input-invalid-text-color, var(--f7-input-text-color));\n}\n.md .input-clear-button:after {\n font-size: var(--f7-input-clear-button-size);\n content: 'delete_round_md';\n line-height: 1;\n}\n.md .input-clear-button:before {\n width: 48px;\n height: 48px;\n margin-left: -24px;\n margin-top: -24px;\n}\n/* === Checkbox === */\n:root {\n /* --f7-checkbox-active-color: var(--f7-theme-color); */\n --f7-checkbox-icon-color: #fff;\n --f7-checkbox-extra-margin: 0px;\n}\n:root .dark,\n:root.dark {\n --f7-checkbox-inactive-color: rgba(255, 255, 255, 0.3);\n --f7-checkbox-icon-color: #000;\n}\n.ios {\n --f7-checkbox-size: 22px;\n --f7-checkbox-border-radius: 50%;\n --f7-checkbox-border-width: 1px;\n --f7-checkbox-inactive-color: #c7c7cc;\n}\n.md {\n --f7-checkbox-size: 18px;\n --f7-checkbox-border-radius: 2px;\n --f7-checkbox-border-width: 2px;\n --f7-checkbox-inactive-color: #6d6d6d;\n}\n.checkbox {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n z-index: 1;\n background-color: transparent;\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.5);\n}\n.icon-checkbox,\n.checkbox i {\n flex-shrink: 0;\n border: var(--f7-checkbox-border-width) solid var(--f7-checkbox-inactive-color);\n width: var(--f7-checkbox-size);\n height: var(--f7-checkbox-size);\n border-radius: var(--f7-checkbox-border-radius);\n box-sizing: border-box;\n position: relative;\n display: block;\n}\n.icon-checkbox:after,\n.checkbox i:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n width: var(--f7-checkbox-size);\n height: var(--f7-checkbox-size);\n line-height: var(--f7-checkbox-size);\n top: calc(0px - var(--f7-checkbox-border-width));\n opacity: 0;\n color: var(--f7-checkbox-icon-color);\n position: relative;\n transition-property: opacity;\n left: calc(0px - var(--f7-checkbox-border-width));\n}\n.icon-checkbox.color-white,\n.checkbox i.color-white,\n.color-white .icon-checkbox,\n.color-white .checkbox i {\n --f7-theme-color: #fff;\n --f7-checkbox-icon-color: #000;\n}\n.icon-checkbox.color-black,\n.checkbox i.color-black,\n.color-black .icon-checkbox,\n.color-black .checkbox i {\n --f7-theme-color: #000;\n --f7-checkbox-icon-color: #fff;\n}\nlabel.item-checkbox input[type='checkbox']:not(:checked) ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:not(:checked) ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:not(:checked) ~ i:after {\n font-size: 0;\n}\nlabel.item-checkbox input[type='checkbox']:checked ~ .icon-checkbox,\nlabel.item-checkbox input[type='checkbox']:checked ~ * .icon-checkbox,\n.checkbox input[type='checkbox']:checked ~ i,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox,\n.checkbox input[type='checkbox']:indeterminate ~ i {\n border-color: var(--f7-checkbox-active-color, var(--f7-theme-color));\n background-color: var(--f7-checkbox-active-color, var(--f7-theme-color));\n}\nlabel.item-checkbox input[type='checkbox']:checked ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:checked ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:checked ~ i:after,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:indeterminate ~ i:after {\n opacity: 1;\n}\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox:after,\nlabel.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox:after,\n.checkbox input[type='checkbox']:indeterminate ~ i:after {\n font-size: 0;\n content: '';\n position: absolute;\n top: 50%;\n width: 70%;\n background: var(--f7-checkbox-icon-color);\n height: 2px;\n border-radius: 2px;\n margin-top: -1px;\n transition: 0ms;\n left: 15%;\n}\nlabel.item-checkbox,\n.checkbox {\n cursor: pointer;\n}\nlabel.item-checkbox input[type='checkbox'],\n.checkbox input[type='checkbox'],\nlabel.item-checkbox input[type='radio'],\n.checkbox input[type='radio'] {\n display: none;\n}\nlabel.item-checkbox {\n transition-duration: 300ms;\n}\nlabel.item-checkbox .item-content .item-media,\nlabel.item-checkbox.item-content .item-media {\n align-self: center;\n}\nlabel.item-checkbox > .icon-checkbox {\n margin-right: calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin));\n}\nlabel.item-checkbox.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\nlabel.item-checkbox.active-state:after {\n background-color: transparent;\n}\nlabel.item-checkbox.disabled,\n.disabled label.item-checkbox {\n opacity: 0.55;\n pointer-events: none;\n opacity: 0.55 !important;\n pointer-events: none !important;\n}\nlabel.item-checkbox.item-checkbox-icon-end .item-inner {\n padding-right: calc(var(--f7-list-item-padding-horizontal) + var(--f7-safe-area-right) + var(--f7-checkbox-size) + 16px);\n}\nlabel.item-checkbox.item-checkbox-icon-end input[type='checkbox'] ~ .icon-checkbox {\n position: absolute;\n right: calc(var(--f7-safe-area-right) + 16px);\n margin-right: 0;\n}\n.ios .icon-checkbox:after,\n.ios .checkbox i:after {\n content: 'checkbox_ios';\n font-size: 21px;\n}\n.ios label.item-checkbox.active-state {\n transition-duration: 0ms;\n}\n.ios label.item-checkbox input[type='checkbox']:indeterminate ~ .icon-checkbox:after,\n.ios label.item-checkbox input[type='checkbox']:indeterminate ~ * .icon-checkbox:after,\n.ios .checkbox input[type='checkbox']:indeterminate ~ i:after {\n height: 2px;\n margin-top: -1px;\n}\n.md .icon-checkbox,\n.md .checkbox i {\n transition-duration: 200ms;\n}\n.md .icon-checkbox:after,\n.md .checkbox i:after {\n content: 'checkbox_md';\n transition-duration: 200ms;\n font-size: 15px;\n}\n.md label.item-checkbox {\n position: relative;\n overflow: hidden;\n z-index: 0;\n}\n/* === Radio === */\n:root {\n /*\n --f7-radio-active-color: var(--f7-theme-color);\n */\n --f7-radio-border-radius: 50%;\n --f7-radio-extra-margin: 0px;\n}\n:root .dark,\n:root.dark {\n --f7-radio-inactive-color: rgba(255, 255, 255, 0.3);\n}\n.ios {\n --f7-radio-size: 22px;\n --f7-radio-border-width: 1px;\n --f7-radio-inactive-color: #c7c7cc;\n}\n.md {\n --f7-radio-size: 20px;\n --f7-radio-border-width: 2px;\n --f7-radio-inactive-color: #6d6d6d;\n}\n.radio {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n z-index: 1;\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.5);\n}\n.icon-radio {\n width: var(--f7-radio-size);\n height: var(--f7-radio-size);\n border-radius: var(--f7-radio-border-radius);\n position: relative;\n box-sizing: border-box;\n display: block;\n flex-shrink: 0;\n}\n.radio.color-white,\n.icon-radio.color-white,\n.color-white .radio,\n.color-white .icon-radio {\n --f7-theme-color: #fff;\n}\n.radio.color-black,\n.icon-radio.color-black,\n.color-black .radio,\n.color-black .icon-radio {\n --f7-theme-color: #000;\n}\n.radio .icon-radio,\n.md .icon-radio {\n border: var(--f7-radio-border-width) solid var(--f7-radio-inactive-color);\n}\nlabel.item-radio,\n.radio {\n cursor: pointer;\n}\nlabel.item-radio input[type='checkbox'],\n.radio input[type='checkbox'],\nlabel.item-radio input[type='radio'],\n.radio input[type='radio'] {\n display: none;\n}\nlabel.item-radio {\n transition-duration: 300ms;\n}\nlabel.item-radio .item-content .item-media,\nlabel.item-radio.item-content .item-media {\n align-self: center;\n}\nlabel.item-radio.active-state {\n background-color: var(--f7-list-link-pressed-bg-color);\n}\nlabel.item-radio.active-state:after {\n background-color: transparent;\n}\nlabel.item-radio.disabled,\n.disabled label.item-radio {\n opacity: 0.55;\n pointer-events: none;\n opacity: 0.55 !important;\n pointer-events: none !important;\n}\n.ios .icon-radio:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n width: calc(var(--f7-radio-size) - var(--f7-radio-border-width) * 2);\n height: calc(var(--f7-radio-size) - var(--f7-radio-border-width) * 2);\n line-height: calc(var(--f7-radio-size) - var(--f7-radio-border-width) * 2 + 1px);\n font-size: 20px;\n content: 'radio_ios';\n color: var(--f7-radio-active-color, var(--f7-theme-color));\n opacity: 0;\n}\n.ios label.item-radio input[type='radio']:checked ~ .icon-radio:after,\n.ios label.item-radio input[type='radio']:checked ~ * .icon-radio:after,\n.ios .radio input[type='radio']:checked ~ .icon-radio:after {\n opacity: 1;\n}\n.ios .radio input[type='radio']:checked ~ .icon-radio {\n border-color: var(--f7-radio-active-color, var(--f7-theme-color));\n}\n.ios label.item-radio:not(.item-radio-icon-start) input[type='radio'] ~ .icon-radio {\n position: absolute;\n top: 50%;\n margin-top: -11px;\n right: calc(var(--f7-safe-area-right) + 10px);\n}\n.ios label.item-radio:not(.item-radio-icon-start) .item-inner {\n padding-right: calc(var(--f7-safe-area-right) + 36px);\n}\n.ios label.item-radio-icon-start > .icon-radio {\n margin-right: calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin));\n}\n.ios label.item-radio.active-state {\n transition-duration: 0ms;\n}\n.md .icon-radio {\n transition-duration: 200ms;\n}\n.md .icon-radio:after {\n content: '';\n position: absolute;\n width: 10px;\n height: 10px;\n left: 50%;\n top: 50%;\n margin-left: -5px;\n margin-top: -5px;\n background-color: var(--f7-radio-active-color, var(--f7-theme-color));\n border-radius: 50%;\n transform: scale(0);\n transition-duration: 200ms;\n}\n.md label.item-radio input[type='radio']:checked ~ .icon-radio,\n.md label.item-radio input[type='radio']:checked ~ * .icon-radio,\n.md .radio input[type='radio']:checked ~ .icon-radio {\n border-color: var(--f7-radio-active-color, var(--f7-theme-color));\n}\n.md label.item-radio input[type='radio']:checked ~ .icon-radio:after,\n.md label.item-radio input[type='radio']:checked ~ * .icon-radio:after,\n.md .radio input[type='radio']:checked ~ .icon-radio:after {\n background-color: var(--f7-radio-active-color, var(--f7-theme-color));\n transform: scale(1);\n}\n.md label.item-radio {\n position: relative;\n overflow: hidden;\n z-index: 0;\n}\n.md label.item-radio:not(.item-radio-icon-end) > .icon-radio {\n margin-right: calc(var(--f7-list-item-media-margin) + var(--f7-radio-extra-margin));\n}\n.md label.item-radio-icon-end input[type='radio'] ~ .icon-radio {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n right: calc(var(--f7-safe-area-right) + 16px);\n}\n.md label.item-radio-icon-end .item-inner {\n padding-right: calc(var(--f7-safe-area-right) + 52px);\n}\n/* === Toggle === */\n.ios {\n --f7-toggle-width: 52px;\n --f7-toggle-height: 32px;\n /*\n --f7-toggle-active-bg-color: var(--f7-theme-color);\n */\n --f7-toggle-inactive-knob-bg-color: #fff;\n --f7-toggle-active-knob-bg-color: #fff;\n --f7-toggle-inactive-border-color: #e5e5e5;\n --f7-toggle-inactive-bg-color: #fff;\n}\n.ios .dark,\n.ios.dark {\n --f7-toggle-inactive-border-color: #555;\n --f7-toggle-inactive-bg-color: #555;\n}\n.md {\n --f7-toggle-width: 52px;\n --f7-toggle-height: 32px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-toggle-inactive-bg-color: var(--f7-md-surface-variant);\n --f7-toggle-active-bg-color: var(--f7-theme-color);\n --f7-toggle-inactive-knob-bg-color: var(--f7-md-outline);\n --f7-toggle-active-knob-bg-color: var(--f7-md-on-primary);\n --f7-toggle-inactive-border-color: var(--f7-md-outline);\n --f7-toggle-active-border-color: var(--f7-theme-color);\n}\n.toggle,\n.toggle-icon {\n width: var(--f7-toggle-width);\n height: var(--f7-toggle-height);\n border-radius: var(--f7-toggle-height);\n}\n.toggle {\n display: inline-block;\n vertical-align: middle;\n position: relative;\n box-sizing: border-box;\n align-self: center;\n -webkit-user-select: none;\n user-select: none;\n}\n.toggle input[type='checkbox'] {\n display: none;\n}\n.toggle input[disabled] ~ .toggle-icon {\n pointer-events: none;\n}\n.toggle-icon {\n z-index: 0;\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n position: relative;\n transition: 300ms;\n box-sizing: border-box;\n display: block;\n cursor: pointer;\n}\n.toggle-icon:before,\n.toggle-icon:after {\n content: '';\n}\n.toggle-icon:after {\n position: absolute;\n z-index: 2;\n transform: translateX(0px);\n transition-duration: 300ms;\n}\n.ios .toggle {\n background: var(--f7-toggle-inactive-border-color);\n}\n.ios .toggle input[type='checkbox']:checked + .toggle-icon {\n background: var(--f7-toggle-active-color, var(--f7-theme-color));\n}\n.ios .toggle input[type='checkbox']:checked + .toggle-icon:before {\n background: var(--f7-toggle-active-bg-color, var(--f7-theme-color));\n transform: scale(0);\n}\n.ios .toggle input[type='checkbox']:checked + .toggle-icon:after {\n background: var(--f7-toggle-active-knob-bg-color);\n transform: translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height)));\n}\n.ios .toggle-icon {\n background: var(--f7-toggle-border-color);\n}\n.ios .toggle-icon:before {\n position: absolute;\n left: 2px;\n top: 2px;\n width: calc(var(--f7-toggle-width) - 4px);\n height: calc(var(--f7-toggle-height) - 4px);\n border-radius: var(--f7-toggle-height);\n box-sizing: border-box;\n background: var(--f7-toggle-inactive-bg-color);\n z-index: 1;\n transition-duration: 300ms;\n transform: scale(1);\n}\n.ios .toggle-icon:after {\n background: var(--f7-toggle-inactive-knob-bg-color);\n height: calc(var(--f7-toggle-height) - 4px);\n width: calc(var(--f7-toggle-height) - 4px);\n top: 2px;\n left: 2px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n border-radius: calc(var(--f7-toggle-height) - 4px);\n}\n.ios .toggle-active-state input[type='checkbox']:not(:checked) + .toggle-icon:before {\n transform: scale(0);\n}\n.ios .toggle-active-state input[type='checkbox'] + .toggle-icon:after {\n width: calc(var(--f7-toggle-height) + 4px);\n}\n.ios .toggle-active-state input[type='checkbox']:checked + .toggle-icon:after {\n transform: translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height) - 8px));\n}\n.md .toggle input[type='checkbox']:checked + .toggle-icon {\n background: var(--f7-toggle-active-bg-color);\n border-color: var(--f7-toggle-active-border-color);\n}\n.md .toggle input[type='checkbox']:checked + .toggle-icon:after {\n transform: translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height))) scale(1);\n background: var(--f7-toggle-active-knob-bg-color);\n}\n.md .toggle.active-state input[type='checkbox']:checked + .toggle-icon:after {\n transform: translateX(calc(var(--f7-toggle-width) - var(--f7-toggle-height))) scale(1.1);\n}\n.md .toggle-icon {\n background: var(--f7-toggle-inactive-bg-color);\n border: 2px solid var(--f7-toggle-inactive-border-color);\n}\n.md .toggle-icon:after {\n background: var(--f7-toggle-inactive-knob-bg-color);\n height: calc(var(--f7-toggle-height) - 8px);\n width: calc(var(--f7-toggle-height) - 8px);\n top: 2px;\n border-radius: var(--f7-toggle-height);\n transform: scale(0.666);\n left: 2px;\n}\n.md .toggle-icon.active-state:after {\n transform: scale(1.1);\n}\n/* === Range Slider === */\n:root {\n /*\n --f7-range-bar-active-bg-color: var(--f7-theme-color);\n --f7-range-scale-bg-color: var(--f7-range-bar-bg-color);\n --f7-range-scale-substep-bg-color: var(--f7-range-bar-bg-color);\n */\n --f7-range-scale-step-height: 5px;\n --f7-range-scale-substep-width: 1px;\n --f7-range-scale-substep-height: 4px;\n --f7-range-bar-bg-color: rgba(0, 0, 0, 0.2);\n}\n:root .dark,\n:root.dark {\n --f7-range-bar-bg-color: rgba(255, 255, 255, 0.2);\n}\n.ios {\n --f7-range-size: 28px;\n --f7-range-bar-size: 4px;\n --f7-range-bar-border-radius: 2px;\n --f7-range-knob-size: 28px;\n --f7-range-knob-color: #fff;\n --f7-range-knob-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n --f7-range-label-size: 24px;\n --f7-range-label-text-color: #000;\n --f7-range-label-bg-color: #fff;\n --f7-range-label-font-size: 12px;\n --f7-range-label-font-weight: 500;\n --f7-range-label-border-radius: 5px;\n --f7-range-label-padding: 0px 2px;\n --f7-range-scale-text-color: #666;\n --f7-range-scale-step-width: 1px;\n --f7-range-scale-font-size: 12px;\n --f7-range-scale-font-weight: 400;\n --f7-range-scale-label-offset: 4px;\n}\n.md {\n --f7-range-size: 20px;\n --f7-range-bar-size: 2px;\n --f7-range-bar-border-radius: 0px;\n --f7-range-knob-size: 12px;\n --f7-range-knob-box-shadow: none;\n --f7-range-label-size: 26px;\n --f7-range-label-font-weight: normal;\n --f7-range-label-font-size: 10px;\n --f7-range-label-border-radius: 50%;\n --f7-range-label-padding: 0px;\n --f7-range-scale-step-width: 2px;\n --f7-range-scale-font-size: 12px;\n --f7-range-scale-font-weight: 400;\n --f7-range-scale-label-offset: 4px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-range-knob-color: var(--f7-theme-color);\n --f7-range-label-text-color: var(--f7-md-on-primary);\n --f7-range-label-bg-color: var(--f7-theme-color);\n --f7-range-scale-text-color: var(--f7-md-on-surface-variant);\n}\n.range-slider {\n display: block;\n position: relative;\n align-self: center;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n}\n.range-slider input[type='range'] {\n display: none;\n}\n.range-slider.range-slider-horizontal {\n width: 100%;\n height: var(--f7-range-size);\n touch-action: pan-y;\n}\n.range-slider.range-slider-vertical {\n height: 100%;\n width: var(--f7-range-size);\n touch-action: pan-x;\n}\n.range-bar {\n position: absolute;\n overflow: hidden;\n background: var(--f7-range-bar-bg-color);\n border-radius: var(--f7-range-bar-border-radius);\n}\n.range-slider-vertical .range-bar {\n left: 50%;\n top: 0;\n height: 100%;\n width: var(--f7-range-bar-size);\n margin-left: calc(-1 * var(--f7-range-bar-size) / 2);\n}\n.range-slider-horizontal .range-bar {\n left: 0;\n top: 50%;\n width: 100%;\n height: var(--f7-range-bar-size);\n margin-top: calc(-1 * var(--f7-range-bar-size) / 2);\n}\n.range-bar-active {\n position: absolute;\n background: var(--f7-range-bar-active-bg-color, var(--f7-theme-color));\n}\n.range-slider-horizontal .range-bar-active {\n left: 0;\n top: 0;\n height: 100%;\n}\n.range-slider-vertical .range-bar-active {\n left: 0;\n bottom: 0;\n width: 100%;\n}\n.range-slider-vertical-reversed .range-bar-active {\n top: 0;\n bottom: auto;\n}\n.range-knob-wrap {\n z-index: 20;\n position: absolute;\n height: var(--f7-range-knob-size);\n width: var(--f7-range-knob-size);\n}\n.range-slider-horizontal .range-knob-wrap {\n top: 50%;\n margin-top: calc(-1 * var(--f7-range-knob-size) / 2);\n margin-left: calc(-1 * var(--f7-range-knob-size) / 2);\n left: 0;\n}\n.range-slider-vertical .range-knob-wrap {\n left: 50%;\n margin-left: calc(-1 * var(--f7-range-knob-size) / 2);\n bottom: 0;\n margin-bottom: calc(-1 * var(--f7-range-knob-size) / 2);\n}\n.range-slider-vertical-reversed .range-knob-wrap {\n bottom: auto;\n top: 0;\n margin-bottom: 0;\n margin-top: calc(-1 * var(--f7-range-knob-size) / 2);\n}\n.range-knob {\n box-sizing: border-box;\n border-radius: 50%;\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 1;\n background: var(--f7-range-knob-color, var(--f7-range-knob-bg-color, var(--f7-theme-color)));\n box-shadow: var(--f7-range-knob-box-shadow);\n}\n.range-knob:after {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n width: 44px;\n height: 44px;\n margin-left: -22px;\n margin-top: -22px;\n}\n.range-knob-label {\n position: absolute;\n left: 50%;\n bottom: 100%;\n text-align: center;\n transition-duration: 120ms;\n transition-property: transform;\n box-sizing: border-box;\n transform: translateY(100%) scale(0);\n height: var(--f7-range-label-size);\n line-height: var(--f7-range-label-size);\n min-width: var(--f7-range-label-size);\n color: var(--f7-range-label-text-color);\n background-color: var(--f7-range-label-bg-color, var(--f7-theme-color));\n font-size: var(--f7-range-label-font-size);\n font-weight: var(--f7-range-label-font-weight);\n border-radius: var(--f7-range-label-border-radius);\n padding: var(--f7-range-label-padding);\n}\n.range-knob-active-state .range-knob-label {\n transform: translateY(0%) scale(1);\n}\n.range-scale {\n position: absolute;\n}\n.range-slider-horizontal .range-scale {\n top: 50%;\n left: 0;\n width: 100%;\n margin-top: calc(var(--f7-range-bar-size) / 2);\n}\n.range-slider-vertical .range-scale {\n right: 50%;\n top: 0;\n height: 100%;\n margin-right: calc(var(--f7-range-bar-size) / 2);\n}\n.range-scale-step {\n position: absolute;\n box-sizing: border-box;\n display: flex;\n font-size: var(--f7-range-scale-font-size);\n font-weight: var(--f7-range-scale-font-weight);\n color: var(--f7-range-scale-text-color, var(--f7-range-bar-bg-color));\n line-height: 1;\n}\n.range-scale-step:before {\n content: '';\n position: absolute;\n background: var(--f7-range-scale-step-bg-color, var(--f7-range-bar-bg-color));\n}\n.range-slider-horizontal .range-scale-step {\n justify-content: center;\n align-items: flex-start;\n width: var(--f7-range-scale-step-width);\n height: var(--f7-range-scale-step-height);\n padding-top: calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));\n top: 0;\n margin-left: calc(-1 * var(--f7-range-scale-step-width) / 2);\n}\n.range-slider-horizontal .range-scale-step:before {\n left: 0;\n top: 0;\n width: 100%;\n height: var(--f7-range-scale-step-height);\n}\n.range-slider-horizontal .range-scale-step:first-child {\n margin-left: 0;\n}\n.range-slider-horizontal .range-scale-step:last-child {\n margin-left: calc(-1 * var(--f7-range-scale-step-width));\n}\n.range-slider-vertical .range-scale-step {\n line-height: 1;\n justify-content: flex-end;\n align-items: center;\n height: var(--f7-range-scale-step-width);\n width: var(--f7-range-scale-step-height);\n padding-right: calc(var(--f7-range-scale-step-height) + var(--f7-range-scale-label-offset));\n right: 0;\n margin-bottom: calc(-1 * var(--f7-range-scale-step-width) / 2);\n}\n.range-slider-vertical .range-scale-step:first-child {\n margin-bottom: 0;\n}\n.range-slider-vertical .range-scale-step:last-child {\n margin-bottom: calc(-1 * var(--f7-range-scale-step-width));\n}\n.range-slider-vertical .range-scale-step:before {\n right: 0;\n top: 0;\n height: 100%;\n width: var(--f7-range-scale-step-height);\n}\n.range-scale-substep {\n --f7-range-scale-step-bg-color: var(--f7-range-scale-substep-bg-color, var(--f7-range-bar-bg-color));\n --f7-range-scale-step-width: var(--f7-range-scale-substep-width);\n --f7-range-scale-step-height: var(--f7-range-scale-substep-height);\n}\n.ios .range-knob-label {\n margin-bottom: 6px;\n transform: translateX(-50%) translateY(100%) scale(0);\n}\n.ios .range-knob-active-state .range-knob-label {\n transform: translateX(-50%) translateY(0%) scale(1);\n}\n.md .range-knob {\n transition-duration: 200ms;\n transition-property: transform, background-color;\n}\n.md .range-knob-active-state .range-knob {\n transform: scale(1.5);\n}\n.md .range-slider-min:not(.range-slider-dual) .range-knob {\n background: #fff !important;\n border: 2px solid var(--f7-range-bar-bg-color);\n}\n.md .range-knob-label {\n width: var(--f7-range-label-size);\n margin-left: calc(-1 * var(--f7-range-label-size) / 2);\n margin-bottom: 8px;\n}\n.md .range-knob-label:before {\n content: '';\n left: 50%;\n top: 0px;\n margin-left: calc(-1 * var(--f7-range-label-size) / 2);\n position: absolute;\n z-index: -1;\n width: var(--f7-range-label-size);\n height: var(--f7-range-label-size);\n background: var(--f7-range-label-bg-color, var(--f7-theme-color));\n transform: rotate(-45deg);\n border-radius: 50% 50% 50% 0;\n}\n.md .range-knob-active-state .range-knob-label {\n transform: translateY(0%) scale(1);\n}\n.md .range-slider-label .range-knob-active-state .range-knob {\n transform: scale(0);\n}\n/* === Stepper === */\n:root {\n /*\n --f7-stepper-button-text-color: var(--f7-theme-color);\n --f7-stepper-button-pressed-text-color: var(--f7-button-text-color, var(--f7-theme-color));\n --f7-stepper-value-text-color: var(--f7-theme-color);\n --f7-stepper-fill-button-bg-color: var(--f7-theme-color);\n */\n --f7-stepper-raised-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);\n --f7-stepper-value-font-weight: 500;\n}\n.ios {\n --f7-stepper-height: 28px;\n --f7-stepper-border-radius: 5px;\n --f7-stepper-fill-button-text-color: #fff;\n /*\n --f7-stepper-button-pressed-bg-color: rgba(var(--f7-theme-color-rgb), .15);\n --f7-stepper-fill-button-pressed-bg-color: var(--f7-theme-color-tint);\n */\n --f7-stepper-large-height: 44px;\n --f7-stepper-small-height: 26px;\n --f7-stepper-value-font-size: 17px;\n --f7-stepper-border-width: 2px;\n --f7-stepper-border-color: var(--f7-theme-color);\n --f7-stepper-small-border-width: 2px;\n}\n.md {\n --f7-stepper-height: 40px;\n --f7-stepper-border-radius: 8px;\n --f7-stepper-large-height: 48px;\n --f7-stepper-small-height: 32px;\n --f7-stepper-value-font-size: 14px;\n --f7-stepper-border-width: 1px;\n --f7-stepper-small-border-width: 1px;\n --f7-stepper-button-pressed-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-stepper-fill-button-text-color: var(--f7-md-on-primary);\n --f7-stepper-fill-button-pressed-bg-color: var(--f7-theme-color);\n --f7-stepper-border-color: var(--f7-md-outline);\n}\n.stepper {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n display: inline-flex;\n align-items: stretch;\n height: var(--f7-stepper-height);\n border-radius: var(--f7-stepper-border-radius);\n}\n.stepper-button,\n.stepper-button-minus,\n.stepper-button-plus {\n background-color: var(--f7-stepper-button-bg-color);\n width: 40px;\n border-radius: var(--f7-stepper-border-radius);\n border: var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);\n color: var(--f7-stepper-button-text-color, var(--f7-theme-color));\n line-height: calc(var(--f7-stepper-height) - var(--f7-stepper-border-width, 0px));\n text-align: center;\n display: flex;\n justify-content: center;\n align-content: center;\n align-items: center;\n flex-shrink: 0;\n box-sizing: border-box;\n position: relative;\n cursor: pointer;\n}\n.stepper-button.active-state,\n.stepper-button-minus.active-state,\n.stepper-button-plus.active-state {\n background-color: var(--f7-stepper-button-pressed-bg-color, rgba(var(--f7-theme-color-rgb), 0.15));\n color: var(--f7-stepper-button-pressed-text-color, var(--f7-stepper-button-text-color, var(--f7-theme-color)));\n}\n.stepper-button:first-child,\n.stepper-button-minus:first-child,\n.stepper-button-plus:first-child {\n border-radius: var(--f7-stepper-border-radius) 0 0 var(--f7-stepper-border-radius);\n}\n.stepper-button:last-child,\n.stepper-button-minus:last-child,\n.stepper-button-plus:last-child {\n border-radius: 0 var(--f7-stepper-border-radius) var(--f7-stepper-border-radius) 0;\n}\n.stepper-button .icon,\n.stepper-button-minus .icon,\n.stepper-button-plus .icon {\n pointer-events: none;\n}\n.stepper-button + .stepper-button,\n.stepper-button-minus + .stepper-button,\n.stepper-button-plus + .stepper-button,\n.stepper-button + .stepper-button-minus,\n.stepper-button-minus + .stepper-button-minus,\n.stepper-button-plus + .stepper-button-minus,\n.stepper-button + .stepper-button-plus,\n.stepper-button-minus + .stepper-button-plus,\n.stepper-button-plus + .stepper-button-plus {\n border-left: none;\n}\n.stepper-button-plus,\n.stepper-button-minus {\n -webkit-user-select: none;\n user-select: none;\n}\n.stepper-button-plus:after,\n.stepper-button-minus:after,\n.stepper-button-plus:before,\n.stepper-button-minus:before {\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--f7-stepper-button-text-color, var(--f7-theme-color));\n border-radius: 2px;\n}\n.stepper-button-plus:after,\n.stepper-button-minus:after {\n width: 15px;\n height: 2px;\n}\n.stepper-button-plus:before {\n height: 15px;\n width: 2px;\n}\n.stepper-value {\n display: flex;\n align-content: center;\n align-items: center;\n justify-content: center;\n}\n.stepper-input-wrap,\n.stepper-value {\n flex-shrink: 1;\n text-align: center;\n border-top: var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);\n border-bottom: var(--f7-stepper-border-width) solid var(--f7-stepper-border-color);\n}\n.stepper .stepper-input-wrap input,\n.stepper-value {\n width: 45px;\n color: var(--f7-stepper-value-text-color, var(--f7-theme-color));\n font-size: var(--f7-stepper-value-font-size);\n font-weight: var(--f7-stepper-value-font-weight);\n text-align: center;\n}\n.stepper .stepper-input-wrap input {\n height: 100%;\n}\n.stepper-round,\n.ios .stepper-round-ios,\n.md .stepper-round-md {\n --f7-stepper-border-radius: var(--f7-stepper-height);\n}\n.stepper-fill,\n.ios .stepper-fill-ios,\n.md .stepper-fill-md {\n --f7-stepper-border-color: var(--f7-stepper-fill-button-bg-color, var(--f7-theme-color));\n --f7-stepper-button-bg-color: var(--f7-stepper-fill-button-bg-color, var(--f7-theme-color));\n --f7-stepper-button-text-color: var(--f7-stepper-fill-button-text-color);\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.stepper-fill .stepper-button + .stepper-button,\n.ios .stepper-fill-ios .stepper-button + .stepper-button,\n.md .stepper-fill-md .stepper-button + .stepper-button,\n.stepper-raised .stepper-button + .stepper-button,\n.ios .stepper-raised-ios .stepper-button + .stepper-button,\n.md .stepper-raised-md .stepper-button + .stepper-button,\n.stepper-fill .stepper-button-minus + .stepper-button-plus,\n.ios .stepper-fill-ios .stepper-button-minus + .stepper-button-plus,\n.md .stepper-fill-md .stepper-button-minus + .stepper-button-plus,\n.stepper-raised .stepper-button-minus + .stepper-button-plus,\n.ios .stepper-raised-ios .stepper-button-minus + .stepper-button-plus,\n.md .stepper-raised-md .stepper-button-minus + .stepper-button-plus {\n border-left: 1px solid rgba(0, 0, 0, 0.1);\n}\n.stepper-fill .stepper-button + .stepper-button.active-state,\n.ios .stepper-fill-ios .stepper-button + .stepper-button.active-state,\n.md .stepper-fill-md .stepper-button + .stepper-button.active-state,\n.stepper-fill .stepper-button-minus + .stepper-button-plus.active-state,\n.ios .stepper-fill-ios .stepper-button-minus + .stepper-button-plus.active-state,\n.md .stepper-fill-md .stepper-button-minus + .stepper-button-plus.active-state {\n border-left-color: var(--f7-stepper-button-pressed-bg-color);\n}\n.stepper-raised:not(.stepper-fill) .stepper-input-wrap,\n.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-input-wrap,\n.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-input-wrap,\n.stepper-raised:not(.stepper-fill) .stepper-value,\n.ios .stepper-raised-ios:not(.stepper-fill-ios):not(.stepper-fill) .stepper-value,\n.md .stepper-raised-md:not(.stepper-fill-md):not(.stepper-fill) .stepper-value {\n border-left: 1px solid rgba(0, 0, 0, 0.1);\n border-right: 1px solid rgba(0, 0, 0, 0.1);\n}\n.stepper-large,\n.ios .stepper-large-ios,\n.md .stepper-large-md {\n --f7-stepper-height: var(--f7-stepper-large-height);\n}\n.stepper-small,\n.ios .stepper-small-ios,\n.md .stepper-small-md {\n --f7-stepper-border-width: var(--f7-stepper-small-border-width);\n --f7-stepper-height: var(--f7-stepper-small-height);\n}\n.ios .stepper-fill.stepper-small-ios,\n.ios .stepper-fill.stepper-small {\n --f7-stepper-button-pressed-bg-color: transparent;\n --f7-stepper-button-pressed-text-color: var(--f7-theme-color);\n}\n.stepper-raised,\n.ios .stepper-raised-ios,\n.md .stepper-raised-md {\n --f7-stepper-border-width: 0;\n box-shadow: var(--f7-stepper-raised-box-shadow);\n}\n.ios .stepper-button .f7-icons,\n.ios .stepper-button-minus .f7-icons,\n.ios .stepper-button-plus .f7-icons {\n font-size: 22px;\n}\n.ios .stepper-fill,\n.ios .stepper-fill-ios {\n --f7-stepper-button-pressed-bg-color: var(--f7-stepper-fill-button-pressed-bg-color, var(--f7-theme-color-tint));\n}\n.ios .stepper-small.stepper-raised,\n.ios .stepper-small-ios.stepper-raised,\n.ios .stepper-small.stepper-raised-ios,\n.ios .stepper-small-ios.stepper-raised-ios {\n --f7-stepper-border-width: 0px;\n}\n.ios .stepper-small .stepper-button,\n.ios .stepper-small-ios .stepper-button,\n.ios .stepper-small .stepper-button-minus,\n.ios .stepper-small-ios .stepper-button-minus,\n.ios .stepper-small .stepper-button-plus,\n.ios .stepper-small-ios .stepper-button-plus {\n transition-duration: 200ms;\n}\n.ios .stepper-small .stepper-button.active-state:after,\n.ios .stepper-small-ios .stepper-button.active-state:after,\n.ios .stepper-small .stepper-button-minus.active-state:after,\n.ios .stepper-small-ios .stepper-button-minus.active-state:after,\n.ios .stepper-small .stepper-button-plus.active-state:after,\n.ios .stepper-small-ios .stepper-button-plus.active-state:after,\n.ios .stepper-small .stepper-button.active-state:before,\n.ios .stepper-small-ios .stepper-button.active-state:before,\n.ios .stepper-small .stepper-button-minus.active-state:before,\n.ios .stepper-small-ios .stepper-button-minus.active-state:before,\n.ios .stepper-small .stepper-button-plus.active-state:before,\n.ios .stepper-small-ios .stepper-button-plus.active-state:before {\n transition-duration: 200ms;\n background-color: var(--f7-theme-color);\n}\n.md .stepper-button,\n.md .stepper-button-minus,\n.md .stepper-button-plus {\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n overflow: hidden;\n}\n.md .stepper-fill,\n.md .stepper-fill-md {\n --f7-stepper-button-pressed-bg-color: var(--f7-stepper-fill-button-bg-color, var(--f7-theme-color));\n}\n/* === Smart Select === */\n.smart-select :root {\n /*\n --f7-smart-select-sheet-bg: var(--f7-list-bg-color);\n --f7-smart-select-sheet-toolbar-border-color: var(--f7-bars-border-color);\n */\n}\n.smart-select select {\n display: none;\n}\n.smart-select .item-after {\n max-width: 70%;\n overflow: hidden;\n text-overflow: ellipsis;\n position: relative;\n display: block;\n}\n.smart-select-sheet .page,\n.smart-select-sheet .sheet-modal-inner,\n.smart-select-sheet .list ul {\n background: var(--f7-smart-select-sheet-bg, var(--f7-list-bg-color));\n}\n.smart-select-sheet .toolbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-smart-select-sheet-toolbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.smart-select-sheet .toolbar:after {\n display: block;\n}\n.smart-select-sheet .list {\n margin: 0;\n}\n.smart-select-sheet .list ul:before,\n.smart-select-sheet .list ul:after {\n display: none !important;\n}\n.smart-select-popover .popover-inner {\n max-height: 40vh;\n}\n/* === Grid === */\n:root {\n --f7-grid-gap: 16px;\n}\n.grid {\n display: grid;\n}\n.grid.grid-gap {\n gap: var(--f7-grid-gap);\n}\n.grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n}\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n}\n.grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n}\n.grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n}\n.grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n}\n.grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n}\n.grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n}\n.grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n}\n.grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n}\n.grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n}\n.grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n}\n.grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n}\n.grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n}\n.grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n}\n.grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n}\n.grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n}\n.grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n}\n.grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n}\n.grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n}\n.grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n}\n.grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n}\n.grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n}\n.grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n}\n.grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n}\n.grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n}\n.grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n}\n.grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n}\n.grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n}\n.grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n}\n.grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n}\n.grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n}\n.grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n}\n.grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n}\n.grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n}\n.grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n}\n.grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n}\n.grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n}\n.grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n}\n.grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n}\n@media (min-width: 480px) {\n .xsmall-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .xsmall-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .xsmall-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .xsmall-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .xsmall-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .xsmall-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .xsmall-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .xsmall-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .xsmall-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .xsmall-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .xsmall-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .xsmall-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .xsmall-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .xsmall-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .xsmall-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .xsmall-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .xsmall-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .xsmall-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .xsmall-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .xsmall-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .xsmall-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .xsmall-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .xsmall-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .xsmall-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .xsmall-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .xsmall-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .xsmall-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .xsmall-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .xsmall-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .xsmall-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .xsmall-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .xsmall-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .xsmall-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .xsmall-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .xsmall-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .xsmall-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .xsmall-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .xsmall-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .xsmall-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .xsmall-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 568px) {\n .small-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .small-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .small-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .small-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .small-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .small-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .small-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .small-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .small-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .small-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .small-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .small-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .small-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .small-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .small-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .small-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .small-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .small-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .small-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .small-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .small-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .small-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .small-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .small-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .small-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .small-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .small-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .small-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .small-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .small-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .small-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .small-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .small-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .small-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .small-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .small-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .small-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .small-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .small-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .small-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 768px) {\n .medium-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .medium-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .medium-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .medium-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .medium-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .medium-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .medium-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .medium-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .medium-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .medium-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .medium-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .medium-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .medium-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .medium-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .medium-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .medium-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .medium-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .medium-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .medium-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .medium-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .medium-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .medium-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .medium-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .medium-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .medium-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .medium-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .medium-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .medium-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .medium-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .medium-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .medium-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .medium-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .medium-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .medium-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .medium-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .medium-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .medium-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .medium-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .medium-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .medium-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 1024px) {\n .large-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .large-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .large-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .large-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .large-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .large-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .large-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .large-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .large-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .large-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .large-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .large-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .large-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .large-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .large-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .large-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .large-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .large-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .large-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .large-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .large-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .large-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .large-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .large-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .large-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .large-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .large-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .large-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .large-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .large-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .large-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .large-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .large-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .large-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .large-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .large-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .large-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .large-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .large-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .large-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n@media (min-width: 1200px) {\n .xlarge-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .xlarge-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n }\n .xlarge-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .xlarge-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .xlarge-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .xlarge-grid-rows-3 {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n }\n .xlarge-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .xlarge-grid-rows-4 {\n grid-template-rows: repeat(4, minmax(0, 1fr));\n }\n .xlarge-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .xlarge-grid-rows-5 {\n grid-template-rows: repeat(5, minmax(0, 1fr));\n }\n .xlarge-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n .xlarge-grid-rows-6 {\n grid-template-rows: repeat(6, minmax(0, 1fr));\n }\n .xlarge-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n .xlarge-grid-rows-7 {\n grid-template-rows: repeat(7, minmax(0, 1fr));\n }\n .xlarge-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n .xlarge-grid-rows-8 {\n grid-template-rows: repeat(8, minmax(0, 1fr));\n }\n .xlarge-grid-cols-9 {\n grid-template-columns: repeat(9, minmax(0, 1fr));\n }\n .xlarge-grid-rows-9 {\n grid-template-rows: repeat(9, minmax(0, 1fr));\n }\n .xlarge-grid-cols-10 {\n grid-template-columns: repeat(10, minmax(0, 1fr));\n }\n .xlarge-grid-rows-10 {\n grid-template-rows: repeat(10, minmax(0, 1fr));\n }\n .xlarge-grid-cols-11 {\n grid-template-columns: repeat(11, minmax(0, 1fr));\n }\n .xlarge-grid-rows-11 {\n grid-template-rows: repeat(11, minmax(0, 1fr));\n }\n .xlarge-grid-cols-12 {\n grid-template-columns: repeat(12, minmax(0, 1fr));\n }\n .xlarge-grid-rows-12 {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n }\n .xlarge-grid-cols-13 {\n grid-template-columns: repeat(13, minmax(0, 1fr));\n }\n .xlarge-grid-rows-13 {\n grid-template-rows: repeat(13, minmax(0, 1fr));\n }\n .xlarge-grid-cols-14 {\n grid-template-columns: repeat(14, minmax(0, 1fr));\n }\n .xlarge-grid-rows-14 {\n grid-template-rows: repeat(14, minmax(0, 1fr));\n }\n .xlarge-grid-cols-15 {\n grid-template-columns: repeat(15, minmax(0, 1fr));\n }\n .xlarge-grid-rows-15 {\n grid-template-rows: repeat(15, minmax(0, 1fr));\n }\n .xlarge-grid-cols-16 {\n grid-template-columns: repeat(16, minmax(0, 1fr));\n }\n .xlarge-grid-rows-16 {\n grid-template-rows: repeat(16, minmax(0, 1fr));\n }\n .xlarge-grid-cols-17 {\n grid-template-columns: repeat(17, minmax(0, 1fr));\n }\n .xlarge-grid-rows-17 {\n grid-template-rows: repeat(17, minmax(0, 1fr));\n }\n .xlarge-grid-cols-18 {\n grid-template-columns: repeat(18, minmax(0, 1fr));\n }\n .xlarge-grid-rows-18 {\n grid-template-rows: repeat(18, minmax(0, 1fr));\n }\n .xlarge-grid-cols-19 {\n grid-template-columns: repeat(19, minmax(0, 1fr));\n }\n .xlarge-grid-rows-19 {\n grid-template-rows: repeat(19, minmax(0, 1fr));\n }\n .xlarge-grid-cols-20 {\n grid-template-columns: repeat(20, minmax(0, 1fr));\n }\n .xlarge-grid-rows-20 {\n grid-template-rows: repeat(20, minmax(0, 1fr));\n }\n}\n/* === Calendar/Datepicker === */\n:root {\n --f7-calendar-height: 340px;\n --f7-calendar-sheet-landscape-height: 220px;\n --f7-calendar-popover-width: 320px;\n --f7-calendar-popover-height: 320px;\n --f7-calendar-modal-height: 420px;\n --f7-calendar-modal-max-width: 380px;\n /*\n --f7-calendar-header-bg-color: var(--f7-bars-bg-color);\n --f7-calendar-header-link-color: var(--f7-bars-link-color);\n --f7-calendar-header-text-color: var(--f7-bars-text-color);\n --f7-calendar-footer-bg-color: var(--f7-bars-bg-color);\n --f7-calendar-footer-border-color: var(--f7-bars-border-color);\n --f7-calendar-footer-link-color: var(--f7-bars-link-color);\n --f7-calendar-footer-text-color: var(--f7-bars-text-color);\n */\n --f7-calendar-week-header-bg-color: transparent;\n --f7-calendar-footer-padding: 0 8px;\n --f7-calendar-week-header-font-size: 11px;\n /*\n --f7-calendar-selected-bg-color: var(--f7-theme-color);\n */\n --f7-calendar-disabled-text-color: #d4d4d4;\n --f7-calendar-event-dot-size: 4px;\n /*\n --f7-calendar-event-bg-color: var(--f7-theme-color);\n */\n /*\n --f7-calendar-picker-selected-text-color: var(--f7-theme-color);\n */\n --f7-calendar-time-selector-height: 28px;\n --f7-calendar-picker-pressed-bg-color: rgba(0, 0, 0, 0.1);\n --f7-calendar-picker-hover-bg-color: rgba(0, 0, 0, 0.03);\n --f7-calendar-time-selector-bg-color: rgba(0, 0, 0, 0.05);\n}\n:root .dark,\n:root.dark {\n --f7-calendar-picker-pressed-bg-color: rgba(255, 255, 255, 0.08);\n --f7-calendar-picker-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-calendar-time-selector-bg-color: rgba(255, 255, 255, 0.1);\n}\n.ios {\n --f7-calendar-selected-text-color: #fff;\n --f7-calendar-header-height: 44px;\n --f7-calendar-header-font-size: 17px;\n --f7-calendar-header-font-weight: 600;\n --f7-calendar-header-padding: 0 8px;\n --f7-calendar-footer-height: 44px;\n --f7-calendar-footer-font-size: 17px;\n --f7-calendar-week-header-height: 18px;\n --f7-calendar-day-font-size: 15px;\n --f7-calendar-day-size: 30px;\n --f7-calendar-picker-font-size: 17px;\n --f7-calendar-time-selector-font-size: 17px;\n --f7-calendar-modal-border-radius: 4px;\n --f7-calendar-modal-box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2),\n 0px 24px 38px 3px rgba(0, 0, 0, 0.14),\n 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\n --f7-calendar-prev-next-text-color: #c8c8c8;\n --f7-calendar-sheet-border-color: #929499;\n --f7-calendar-sheet-bg-color: #fff;\n --f7-calendar-week-header-text-color: #5e5e5e;\n --f7-calendar-modal-bg-color: #fff;\n --f7-calendar-day-text-color: #000;\n --f7-calendar-today-text-color: #000;\n --f7-calendar-today-bg-color: #e3e3e3;\n}\n.ios .dark,\n.ios.dark {\n --f7-calendar-prev-next-text-color: #5e5e5e;\n --f7-calendar-sheet-border-color: var(--f7-bars-border-color);\n --f7-calendar-sheet-bg-color: #121212;\n --f7-calendar-week-header-text-color: #aaa;\n --f7-calendar-modal-bg-color: #121212;\n --f7-calendar-day-text-color: #fff;\n --f7-calendar-today-text-color: #fff;\n --f7-calendar-today-bg-color: #333;\n}\n.md {\n --f7-calendar-sheet-border-color: transparent;\n --f7-calendar-header-height: 64px;\n --f7-calendar-header-font-size: 24px;\n --f7-calendar-header-font-weight: 400;\n --f7-calendar-header-padding: 0 24px;\n --f7-calendar-footer-height: 56px;\n --f7-calendar-footer-font-size: 14px;\n --f7-calendar-week-header-height: 24px;\n --f7-calendar-day-font-size: 14px;\n --f7-calendar-today-bg-color: none;\n --f7-calendar-day-size: 32px;\n --f7-calendar-picker-font-size: 14px;\n --f7-calendar-time-selector-font-size: 14px;\n --f7-calendar-modal-border-radius: 28px;\n --f7-calendar-modal-box-shadow: none;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-calendar-sheet-bg-color: var(--f7-md-surface-1);\n --f7-calendar-selected-text-color: var(--f7-md-on-primary);\n --f7-calendar-week-header-text-color: var(--f7-md-on-surface-variant);\n --f7-calendar-day-text-color: var(--f7-md-on-surface);\n --f7-calendar-prev-next-text-color: rgba(var(--f7-md-on-surface-variant-rgb), 0.55);\n --f7-calendar-today-text-color: var(--f7-theme-color);\n --f7-calendar-modal-bg-color: var(--f7-md-surface-1);\n}\n.calendar {\n overflow: hidden;\n height: var(--f7-calendar-height);\n width: 100%;\n display: flex;\n flex-direction: column;\n}\n.calendar.modal-in {\n display: flex;\n}\n@media (orientation: landscape) and (max-height: 415px) {\n .calendar.calendar-sheet {\n height: var(--f7-calendar-sheet-landscape-height);\n }\n .calendar.calendar-modal {\n height: calc(100vh - var(--f7-navbar-height));\n }\n}\n.calendar.calendar-inline,\n.calendar.calendar-popover .calendar {\n position: relative;\n}\n.calendar-sheet {\n --f7-sheet-border-color: var(--f7-calendar-sheet-border-color);\n background: var(--f7-calendar-sheet-bg-color);\n padding-bottom: var(--f7-safe-area-bottom);\n height: calc(var(--f7-calendar-height) + var(--f7-safe-area-bottom));\n}\n.calendar-sheet:before {\n z-index: 600;\n}\n.calendar-sheet .toolbar:before,\n.calendar-modal .toolbar:before,\n.calendar-popover .toolbar:before {\n display: none;\n}\n.calendar-popover {\n width: var(--f7-calendar-popover-width);\n}\n.calendar-popover .toolbar-top,\n.calendar-popover .calendar-header {\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n overflow: hidden;\n}\n.calendar-popover .calendar-header + .toolbar-top {\n border-radius: 0;\n}\n.calendar-popover .toolbar-bottom,\n.calendar-popover .calendar-footer {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.calendar-popover .calendar {\n height: var(--f7-calendar-popover-height);\n position: relative;\n z-index: 1;\n}\n.calendar-popover .calendar-month-picker,\n.calendar-popover .calendar-year-picker,\n.calendar-popover .calendar-time-picker {\n border-radius: var(--f7-popover-border-radius);\n}\n.calendar-popover .calendar-month-picker .picker,\n.calendar-popover .calendar-year-picker .picker,\n.calendar-popover .calendar-time-picker .picker {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n.calendar-header {\n width: 100%;\n position: relative;\n overflow: hidden;\n flex-shrink: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n box-sizing: border-box;\n padding: var(--f7-calendar-header-padding);\n background-color: var(--f7-calendar-header-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-calendar-header-text-color, var(--f7-bars-text-color));\n height: var(--f7-calendar-header-height);\n line-height: var(--f7-calendar-header-height);\n font-size: var(--f7-calendar-header-font-size);\n font-weight: var(--f7-calendar-header-font-weight);\n}\n.calendar-header a {\n color: var(--f7-calendar-header-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.calendar-footer {\n width: 100%;\n flex-shrink: 0;\n padding: var(--f7-calendar-footer-padding);\n background-color: var(--f7-calendar-footer-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-calendar-footer-text-color, var(--f7-bars-text-color));\n height: var(--f7-calendar-footer-height);\n font-size: var(--f7-calendar-header-font-size);\n display: flex;\n justify-content: flex-end;\n box-sizing: border-box;\n align-items: center;\n position: relative;\n}\n.calendar-footer a {\n color: var(--f7-calendar-footer-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.calendar-footer:before {\n content: '';\n position: absolute;\n background-color: var(--f7-calendar-footer-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.calendar-modal {\n position: absolute;\n height: var(--f7-calendar-modal-height);\n overflow: hidden;\n top: 50%;\n left: 50%;\n min-width: 300px;\n max-width: var(--f7-calendar-modal-max-width);\n transform: translate3d(-50%, 100vh, 0);\n transition-property: transform;\n display: flex;\n z-index: 13500;\n background: var(--f7-calendar-modal-bg-color);\n width: 90%;\n border-radius: var(--f7-calendar-modal-border-radius);\n box-shadow: var(--f7-calendar-modal-box-shadow);\n transition-timing-function: cubic-bezier(0, 1, 0.2, 1);\n}\n.calendar-modal.modal-in,\n.calendar-modal.modal-out {\n transition-duration: 400ms;\n}\n.calendar-modal.modal-in {\n transform: translate3d(-50%, -50%, 0);\n}\n.calendar-modal.modal-out {\n transform: translate3d(-50%, 100vh, 0);\n}\n.calendar-week-header {\n display: flex;\n box-sizing: border-box;\n position: relative;\n font-size: var(--f7-calendar-week-header-font-size);\n background-color: var(--f7-calendar-week-header-bg-color, var(--f7-bars-bg-color));\n color: var(--f7-calendar-week-header-text-color, var(--f7-bars-text-color));\n height: var(--f7-calendar-week-header-height);\n padding-left: var(--f7-safe-area-left);\n padding-right: var(--f7-safe-area-right);\n}\n.calendar-week-header .calendar-week-day {\n flex-shrink: 1;\n width: calc(100% / 7);\n text-align: center;\n line-height: var(--f7-calendar-week-header-height);\n}\n.calendar-months {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: relative;\n flex-shrink: 10;\n}\n.calendar-months-wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n transition: 300ms;\n}\n.calendar-month {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n}\n.calendar-row {\n height: 16.66666667%;\n display: flex;\n flex-shrink: 1;\n width: 100%;\n position: relative;\n box-sizing: border-box;\n padding-left: var(--f7-safe-area-left);\n padding-right: var(--f7-safe-area-right);\n}\n.calendar-modal .calendar-months:first-child .calendar-row:first-child:before,\n.calendar-popover .calendar-months:first-child .calendar-row:first-child:before {\n display: none !important;\n}\n.calendar-day {\n flex-shrink: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n box-sizing: border-box;\n width: 14.28571429%;\n text-align: center;\n cursor: pointer;\n z-index: 20;\n color: var(--f7-calendar-day-text-color);\n height: 100%;\n font-size: var(--f7-calendar-day-font-size);\n}\n.calendar-day-today .calendar-day-number {\n color: var(--f7-calendar-today-text-color, var(--f7-theme-color));\n background-color: var(--f7-calendar-today-bg-color);\n}\n.calendar-day-prev,\n.calendar-day-next {\n color: var(--f7-calendar-prev-next-text-color);\n}\n.calendar-day-disabled {\n color: var(--f7-calendar-disabled-text-color);\n cursor: auto;\n}\n.calendar-day-selected .calendar-day-number {\n color: var(--f7-calendar-selected-text-color);\n background-color: var(--f7-calendar-selected-bg-color, var(--f7-theme-color));\n}\n.calendar-day-number {\n display: inline-block;\n border-radius: 50%;\n position: relative;\n width: var(--f7-calendar-day-size);\n height: var(--f7-calendar-day-size);\n line-height: var(--f7-calendar-day-size);\n}\n.calendar-day-events {\n position: absolute;\n display: flex;\n left: 0;\n width: 100%;\n top: 100%;\n align-items: center;\n justify-content: center;\n margin-top: 1px;\n}\n.calendar-day-event {\n width: var(--f7-calendar-event-dot-size);\n height: var(--f7-calendar-event-dot-size);\n border-radius: calc(var(--f7-calendar-event-dot-size) / 2);\n background-color: var(--f7-calendar-event-bg-color);\n}\n.calendar-day-event + .calendar-day-event {\n margin-left: 2px;\n}\n.calendar-day-selected-range,\n.calendar-day-selected-left,\n.calendar-day-selected-right {\n position: relative;\n}\n.calendar-day-selected-range:before,\n.calendar-day-selected-left:before,\n.calendar-day-selected-right:before {\n width: 100%;\n height: var(--f7-calendar-day-size);\n content: '';\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n z-index: -1;\n background-color: var(--f7-calendar-selected-bg-color, var(--f7-theme-color));\n opacity: 0.2;\n}\n.calendar-day-selected-range:first-child:before,\n.calendar-day-selected-left:before {\n left: auto;\n right: 0;\n width: calc(50% + var(--f7-calendar-day-size) / 2);\n border-radius: var(--f7-calendar-day-size) 0 0 var(--f7-calendar-day-size);\n}\n.calendar-day-selected-range:last-child:before,\n.calendar-day-selected-right:before {\n width: calc(50% + var(--f7-calendar-day-size) / 2);\n border-radius: 0 var(--f7-calendar-day-size) var(--f7-calendar-day-size) 0;\n}\n.calendar-day-selected-left:last-child:before,\n.calendar-day-selected-right:first-child:before {\n display: none;\n}\n.calendar-day-selected-left.calendar-day-selected-right:before {\n content: none;\n display: none;\n}\n.calendar-day-selected-range .calendar-day-number {\n background-color: transparent;\n color: inherit;\n}\n.calendar-month-selector,\n.calendar-year-selector {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 50%;\n max-width: 200px;\n flex-shrink: 10;\n margin-left: auto;\n margin-right: auto;\n}\n.calendar-month-selector .calendar-day-number,\n.calendar-year-selector .calendar-day-number {\n flex-shrink: 1;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.calendar-month-selector a.icon-only,\n.calendar-year-selector a.icon-only {\n min-width: 36px;\n}\n.calendar-month-picker,\n.calendar-year-picker,\n.calendar-time-picker {\n position: relative;\n width: 100%;\n height: 100%;\n -webkit-user-select: none;\n user-select: none;\n background: transparent;\n}\n.calendar-month-picker .picker-columns,\n.calendar-year-picker .picker-columns {\n text-align: center;\n}\n.calendar-month-picker-item,\n.calendar-year-picker-item {\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n overflow: hidden;\n cursor: pointer;\n transition-duration: 100ms;\n box-sizing: border-box;\n}\n.calendar-month-picker-item span,\n.calendar-year-picker-item span {\n white-space: nowrap;\n text-overflow: ellipsis;\n box-sizing: border-box;\n position: relative;\n overflow: hidden;\n pointer-events: none;\n}\n.calendar-month-picker-item.active-state,\n.calendar-year-picker-item.active-state {\n background: var(--f7-calendar-picker-pressed-bg-color);\n}\n.calendar-month-picker-item {\n padding: 5px;\n}\n.sheet-modal .calendar-month-picker-item {\n width: 25%;\n height: 33.33333333%;\n}\n.sheet-modal .calendar-month-picker-item:nth-child(4n + 1):before {\n display: none !important;\n}\n.sheet-modal .calendar-month-picker-item:nth-child(n + 9):after {\n display: none !important;\n}\n.popover .calendar-month-picker-item,\n.calendar-modal .calendar-month-picker-item {\n width: 33.33333333%;\n height: 25%;\n}\n.popover .calendar-month-picker-item:nth-child(3n + 1):before,\n.calendar-modal .calendar-month-picker-item:nth-child(3n + 1):before {\n display: none !important;\n}\n.popover .calendar-month-picker-item:nth-child(n + 10):after,\n.calendar-modal .calendar-month-picker-item:nth-child(n + 10):after {\n display: none !important;\n}\n.calendar-month-picker-item-current,\n.calendar-year-picker-item-current {\n color: var(--f7-calendar-picker-selected-text-color, var(--f7-theme-color));\n}\n.calendar-year-picker {\n overflow: auto;\n --webkit-overflow-scrolling: touch;\n}\n.calendar-year-picker-item {\n height: 34px;\n line-height: 34px;\n width: 100%;\n}\n.calendar-time-selector {\n flex-shrink: 0;\n font-size: var(--f7-calendar-time-selector-font-size);\n position: relative;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n}\n.calendar-time-selector a {\n overflow: hidden;\n position: relative;\n justify-content: center;\n align-items: center;\n display: flex;\n box-sizing: border-box;\n height: var(--f7-calendar-time-selector-height);\n background-color: var(--f7-calendar-time-selector-bg-color);\n padding: 0 16px;\n border-radius: 8px;\n}\n.calendar-time-selector > span {\n font-weight: 500;\n}\n.calendar-time-selector .segmented {\n margin-left: 8px;\n}\n.calendar-time-picker-popover,\n.calendar-year-picker-popover,\n.calendar-month-picker-popover {\n height: 240px;\n width: 240px;\n}\n.calendar-time-picker-popover .popover-inner,\n.calendar-year-picker-popover .popover-inner,\n.calendar-month-picker-popover .popover-inner {\n height: 100%;\n overflow: hidden;\n}\n.calendar-time-picker {\n --f7-picker-popover-height: 100%;\n --f7-picker-inline-height: 100%;\n}\n.calendar-time-picker .toolbar {\n flex-shrink: 0;\n top: 0 !important;\n}\n.calendar-time-picker .picker {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n/* === Picker === */\n:root {\n --f7-picker-height: 260px;\n --f7-picker-inline-height: 200px;\n --f7-picker-popover-height: 260px;\n --f7-picker-popover-width: 280px;\n --f7-picker-landscape-height: 200px;\n --f7-picker-item-height: 36px;\n /*\n --f7-picker-sheet-bg-color: var(--f7-sheet-bg-color);\n */\n}\n.ios {\n --f7-picker-column-font-size: 20px;\n --f7-picker-item-selected-text-color: #000;\n --f7-picker-item-selected-bg-color: rgba(0, 0, 0, 0.12);\n --f7-picker-divider-text-color: #000;\n --f7-picker-item-text-color: rgba(0, 0, 0, 0.45);\n}\n.ios .dark,\n.ios.dark {\n --f7-picker-item-selected-text-color: #fff;\n --f7-picker-item-selected-bg-color: rgba(255, 255, 255, 0.1);\n --f7-picker-divider-text-color: #fff;\n --f7-picker-item-text-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-picker-column-font-size: 20px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-picker-item-selected-text-color: var(--f7-md-on-surface);\n --f7-picker-item-text-color: var(--f7-md-on-surface-variant);\n --f7-picker-divider-text-color: var(--f7-md-on-surface);\n --f7-picker-item-selected-border-color: var(--f7-md-outline);\n}\n.picker {\n width: 100%;\n height: var(--f7-picker-height);\n}\n.picker.picker-inline {\n height: var(--f7-picker-inline-height);\n}\n.popover .picker {\n height: var(--f7-picker-popover-height);\n}\n@media (orientation: landscape) and (max-height: 415px) {\n .picker:not(.picker-inline) {\n height: var(--f7-picker-landscape-height);\n }\n}\n.picker.sheet-modal {\n background: var(--f7-picker-sheet-bg-color, var(--f7-sheet-bg-color));\n}\n.picker-popover {\n width: var(--f7-picker-popover-width);\n}\n.picker-popover .toolbar {\n background: none;\n border-radius: var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0;\n}\n.picker-popover .toolbar:before {\n display: none !important;\n}\n.picker-popover .toolbar + .picker-columns {\n height: calc(100% - var(--f7-toolbar-height));\n}\n.picker-columns {\n display: flex;\n overflow: hidden;\n justify-content: center;\n padding: 0;\n text-align: right;\n height: 100%;\n position: relative;\n font-size: var(--f7-picker-column-font-size);\n --f7-picker-mask-bg-color: transparent;\n}\n.popover .picker-columns {\n border-radius: 0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius);\n}\n.picker-columns::before,\n.picker-columns::after {\n content: '';\n position: absolute;\n left: 0;\n width: 100%;\n height: 20%;\n z-index: 100;\n pointer-events: none;\n}\n.page .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-page-bg-color);\n}\n.block-strong .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-block-strong-bg-color);\n}\n.picker-sheet .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-picker-sheet-bg-color, var(--f7-sheet-bg-color));\n}\n.picker-popover .picker-columns {\n --f7-picker-mask-bg-color: var(--f7-popover-bg-color);\n}\n.picker-columns::before {\n top: 0;\n background-image: linear-gradient(to bottom, var(--f7-picker-mask-bg-color), transparent);\n}\n.picker-columns::after {\n bottom: 0;\n background-image: linear-gradient(to top, var(--f7-picker-mask-bg-color), transparent);\n}\n.picker-column {\n position: relative;\n max-height: 100%;\n z-index: 10;\n}\n.picker-column.picker-column-first.picker-column-last {\n width: 100%;\n}\n.picker-column.picker-column-left {\n text-align: left;\n}\n.picker-column.picker-column-center {\n text-align: center;\n}\n.picker-column.picker-column-right {\n text-align: right;\n}\n.picker-column.picker-column-divider {\n display: flex;\n align-items: center;\n color: var(--f7-picker-divider-text-color);\n}\n.picker-items {\n overflow: auto;\n scroll-snap-type: y mandatory;\n height: 100%;\n box-sizing: border-box;\n padding: var(--f7-picker-scroll-padding, 0px) 0px;\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.picker-items::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.picker-items::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.picker-items::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.picker-item {\n height: var(--f7-picker-item-height);\n line-height: var(--f7-picker-item-height);\n white-space: nowrap;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n left: 0;\n top: 0;\n width: 100%;\n box-sizing: border-box;\n color: var(--f7-picker-item-text-color);\n cursor: pointer;\n scroll-snap-align: center;\n}\n.picker-item span {\n padding: 0 10px;\n}\n.picker-item.picker-item-far {\n pointer-events: none;\n}\n.picker-item.picker-item-selected {\n color: var(--f7-picker-item-selected-text-color);\n transform: translate3d(0, 0, 0) rotateX(0deg);\n}\n.picker-column-free-mode .picker-item {\n scroll-snap-align: none;\n}\n.picker-center-highlight {\n height: var(--f7-picker-item-height);\n box-sizing: border-box;\n position: absolute;\n top: 50%;\n margin-top: calc(-1 * var(--f7-picker-item-height) / 2);\n pointer-events: none;\n}\n.picker-3d .picker-columns {\n overflow: hidden;\n}\n.picker-3d .picker-column,\n.picker-3d .picker-items,\n.picker-3d .picker-item {\n transform-style: preserve-3d;\n}\n.picker-3d .picker-column {\n overflow: visible;\n}\n.picker-3d .picker-item {\n perspective: 1200px;\n overflow: visible;\n}\n.picker-3d .picker-item > span {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n display: block;\n transform-style: preserve-3d;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n box-sizing: border-box;\n max-width: 100%;\n transform-origin: center center -100px;\n}\n.ios .picker-center-highlight {\n left: 16px;\n right: 16px;\n background-color: var(--f7-picker-item-selected-bg-color);\n border-radius: 8px;\n}\n.popover .ios .picker-center-highlight {\n left: 8px;\n right: 8px;\n}\n.md .picker-center-highlight {\n left: 0;\n right: 0;\n border-top: 1px solid var(--f7-md-outline);\n border-bottom: 1px solid var(--f7-md-outline);\n}\n/* === Infinite === */\n.infinite-scroll-preloader {\n margin-left: auto;\n margin-right: auto;\n text-align: center;\n}\n.infinite-scroll-preloader.preloader {\n display: block;\n}\n.ios .infinite-scroll-preloader {\n margin-top: 35px;\n margin-bottom: 35px;\n}\n.ios .infinite-scroll-preloader .preloader,\n.ios .infinite-scroll-preloader.preloader {\n width: 27px;\n height: 27px;\n}\n.md .infinite-scroll-preloader {\n margin-top: 32px;\n margin-bottom: 32px;\n}\n/* === PTR === */\n.ios {\n --f7-ptr-preloader-size: 28px;\n --f7-ptr-size: 44px;\n}\n.md {\n --f7-ptr-preloader-size: 22px;\n --f7-ptr-size: 40px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-ptr-preloader-bg-color: var(--f7-md-surface-1);\n --f7-ptr-preloader-color: var(--f7-md-primary);\n}\n.ptr-preloader {\n position: relative;\n top: var(--f7-ptr-top, 0);\n height: var(--f7-ptr-size);\n pointer-events: none;\n}\n.ptr-preloader .preloader {\n position: absolute;\n left: 50%;\n width: var(--f7-ptr-preloader-size);\n height: var(--f7-ptr-preloader-size);\n margin-left: calc(-1 * var(--f7-ptr-preloader-size) / 2);\n margin-top: calc(-1 * var(--f7-ptr-preloader-size) / 2);\n top: 50%;\n visibility: hidden;\n}\n.ptr-bottom .ptr-preloader {\n top: auto;\n bottom: 0;\n position: fixed;\n}\n.ptr-with-navbar-large-transparent .ptr-preloader,\n.ptr-with-navbar-transparent .ptr-preloader {\n top: calc(-1 * var(--f7-page-navbar-offset, 0px) + var(--f7-safe-area-top));\n}\n.ios .ptr-preloader {\n margin-bottom: calc(-1 * var(--f7-ptr-size));\n width: 100%;\n left: 0;\n top: 0;\n position: relative;\n}\n.ios .ptr-preloader .preloader {\n visibility: visible;\n}\n.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,\n.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner {\n animation: none;\n}\n.ios .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up):not(.ptr-pull-down) .ptr-preloader .preloader-inner-line,\n.ios .ptr-content.ptr-closing .ptr-preloader .preloader-inner-line {\n opacity: 0 !important;\n}\n.ios .ptr-transitioning > *,\n.ios .ptr-refreshing > * {\n transition-duration: 200ms;\n transition-property: transform;\n}\n.ios .ptr-transitioning .ptr-preloader .preloader-inner-line {\n transition-duration: 200ms;\n}\n.ios .ptr-pull-up .ptr-preloader .preloader {\n animation: ios-ptr-preloader-spin 1s ease-out forwards;\n}\n.ios .ptr-refreshing:not(.ptr-bottom) {\n transform: none;\n}\n.ios .ptr-refreshing:not(.ptr-bottom) > * {\n transform: translate3d(0, var(--f7-ptr-size), 0);\n}\n.ios .ptr-refreshing:not(.ptr-bottom) > .ptr-preloader {\n transform: translate3d(0, 0, 0);\n}\n.ios .ptr-bottom .ptr-preloader {\n margin-bottom: 0;\n margin-top: calc(-1 * var(--f7-ptr-size));\n position: relative;\n}\n.ios .ptr-bottom.ptr-transitioning > *,\n.ios .ptr-bottom.ptr-refreshing > * {\n transition-duration: 300ms;\n transition-property: transform;\n}\n.ios .ptr-bottom.ptr-refreshing {\n transform: none;\n}\n.ios .ptr-bottom.ptr-refreshing > * {\n transform: translate3d(0, calc(-1 * var(--f7-ptr-size)), 0);\n}\n.ios .ptr-bottom.ptr-refreshing > .ptr-preloader {\n transform: translate3d(0, 0, 0);\n}\n@keyframes ios-ptr-preloader-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(135deg);\n }\n}\n.md {\n --f7-ptr-top: -4px;\n}\n.md .ptr-preloader {\n width: var(--f7-ptr-size);\n border-radius: 50%;\n background: var(--f7-ptr-preloader-bg-color);\n --f7-preloader-color: var(--f7-ptr-preloader-color);\n margin-top: calc(-1 * var(--f7-ptr-size));\n z-index: 100;\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\n left: 50%;\n margin-left: calc(-1 * var(--f7-ptr-size) / 2);\n}\n.md .ptr-preloader .preloader circle {\n stroke-width: 4;\n}\n.md .ptr-arrow {\n width: 22px;\n height: 22px;\n box-sizing: border-box;\n border: 3px solid var(--f7-preloader-color);\n position: absolute;\n left: 50%;\n top: 50%;\n margin-left: -11px;\n margin-top: -11px;\n border-left-color: transparent;\n border-radius: 50%;\n opacity: 1;\n transform: rotate(150deg);\n}\n.md .ptr-arrow:after {\n content: '';\n width: 0px;\n height: 0px;\n position: absolute;\n left: -5px;\n bottom: 0px;\n border-bottom-width: 6px;\n border-bottom-style: solid;\n border-bottom-color: inherit;\n border-left: 5px solid transparent;\n border-right: 5px solid transparent;\n transform: rotate(-40deg);\n}\n.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader,\n.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader .preloader-inner,\n.md .ptr-content:not(.ptr-refreshing):not(.ptr-pull-up) .ptr-preloader circle {\n animation: none;\n}\n.md .ptr-refreshing .ptr-preloader .preloader,\n.md .ptr-pull-up .ptr-preloader .preloader {\n visibility: visible;\n}\n.md .ptr-refreshing .ptr-arrow,\n.md .ptr-pull-up .ptr-arrow {\n visibility: hidden;\n}\n.md .ptr-refreshing .ptr-preloader {\n transform: translate3d(0, 66px, 0);\n}\n.md .ptr-transitioning .ptr-arrow {\n transition: 300ms;\n}\n.md .ptr-pull-up .ptr-arrow {\n transition: 400ms;\n transform: rotate(620deg) !important;\n opacity: 0;\n}\n.md .ptr-transitioning .ptr-preloader,\n.md .ptr-refreshing .ptr-preloader {\n transition-duration: 300ms;\n transition-property: transform, opacity;\n}\n.md .ptr-bottom .ptr-preloader {\n margin-top: 0;\n margin-bottom: calc(-1 * var(--f7-ptr-size) - 4px);\n}\n.md .ptr-bottom.ptr-refreshing .ptr-preloader {\n transform: translate3d(0, -66px, 0);\n}\n.md .ptr-with-navbar-large-transparent .ptr-preloader,\n.md .ptr-with-navbar-transparent .ptr-preloader {\n opacity: 0;\n}\n.md .ptr-with-navbar-large-transparent.ptr-pull-down .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-pull-down .ptr-preloader,\n.md .ptr-with-navbar-large-transparent.ptr-pull-up .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-pull-up .ptr-preloader,\n.md .ptr-with-navbar-large-transparent.ptr-refreshing .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-refreshing .ptr-preloader {\n opacity: 1;\n}\n.md .ptr-with-navbar-large-transparent.ptr-closing .ptr-preloader,\n.md .ptr-with-navbar-transparent.ptr-closing .ptr-preloader {\n opacity: 0;\n transition-duration: 300ms;\n}\n/* === Data Table === */\n:root {\n --f7-table-head-font-size: 12px;\n --f7-table-body-font-size: 14px;\n --f7-table-footer-font-size: 12px;\n --f7-table-input-height: 24px;\n --f7-table-input-font-size: 14px;\n --f7-table-collapsible-cell-padding: 16px;\n --f7-table-link-icon-only-icon-size: 20px;\n --f7-table-head-bg-color: transparent;\n --f7-table-card-header-bg-color: transparent;\n --f7-table-card-header-height: 64px;\n --f7-table-cell-padding-vertical: 0px;\n --f7-table-sortable-icon-color: #000;\n}\n:root .dark,\n:root.dark {\n --f7-table-sortable-icon-color: #fff;\n --f7-table-input-text-color: #fff;\n}\n.ios {\n --f7-table-head-font-weight: 600;\n --f7-table-head-cell-height: 44px;\n --f7-table-head-icon-size: 18px;\n --f7-table-body-cell-height: 44px;\n --f7-table-cell-padding-horizontal: 16px;\n --f7-table-edge-cell-padding-horizontal: 16px;\n --f7-table-label-cell-padding-horizontal: 16px;\n --f7-table-checkbox-cell-width: 22px;\n /* --f7-table-actions-cell-link-color: var(--f7-theme-color); */\n /* --f7-table-actions-link-color: var(--f7-theme-color); */\n --f7-table-title-font-size: 17px;\n --f7-table-title-font-weight: 600;\n --f7-table-footer-height: 44px;\n --f7-table-head-text-color: rgba(0, 0, 0, 0.45);\n --f7-table-cell-border-color: rgba(0, 0, 0, 0.22);\n --f7-table-selected-row-bg-color: rgba(0, 0, 0, 0.03);\n --f7-table-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-table-input-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-table-head-text-color: rgba(255, 255, 255, 0.55);\n --f7-table-cell-border-color: rgba(255, 255, 255, 0.15);\n --f7-table-footer-text-color: rgba(255, 255, 255, 0.55);\n --f7-table-selected-row-bg-color: rgba(255, 255, 255, 0.08);\n}\n.md {\n --f7-table-head-font-weight: 500;\n --f7-table-head-cell-height: 56px;\n --f7-table-head-icon-size: 16px;\n --f7-table-body-cell-height: 48px;\n --f7-table-cell-padding-horizontal: 28px;\n --f7-table-edge-cell-padding-horizontal: 24px;\n --f7-table-label-cell-padding-horizontal: 24px;\n --f7-table-checkbox-cell-width: 18px;\n --f7-table-title-font-size: 20px;\n --f7-table-title-font-weight: 400;\n --f7-table-footer-height: 56px;\n --f7-table-actions-cell-link-color: rgba(0, 0, 0, 0.54);\n --f7-table-actions-link-color: rgba(0, 0, 0, 0.54);\n --f7-table-input-text-color: #212121;\n}\n.md .dark,\n.md.dark {\n --f7-table-actions-cell-link-color: rgba(255, 255, 255, 0.54);\n --f7-table-actions-link-color: rgba(255, 255, 255, 0.54);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-table-head-text-color: var(--f7-md-on-surface-variant);\n --f7-table-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-table-selected-row-bg-color: var(--f7-md-secondary-container);\n --f7-table-cell-border-color: var(--f7-md-outline);\n}\n.data-table {\n overflow-x: auto;\n}\n.data-table table,\ntable.data-table {\n width: 100%;\n border: none;\n padding: 0;\n margin: 0;\n border-collapse: collapse;\n text-align: left;\n}\n.data-table thead th,\n.data-table thead td {\n font-size: var(--f7-table-head-font-size);\n font-weight: var(--f7-table-head-font-weight);\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n line-height: 16px;\n height: var(--f7-table-head-cell-height);\n background-color: var(--f7-table-head-bg-color);\n}\n.data-table thead th:not(.sortable-cell-active),\n.data-table thead td:not(.sortable-cell-active) {\n color: var(--f7-table-head-text-color);\n}\n.data-table thead i.icon,\n.data-table thead i.f7-icons,\n.data-table thead i.material-icons {\n vertical-align: top;\n font-size: var(--f7-table-head-icon-size);\n}\n.data-table tbody {\n font-size: var(--f7-table-body-font-size);\n}\n.data-table tbody th,\n.data-table tbody td {\n height: var(--f7-table-body-cell-height);\n}\n.data-table tbody tr.data-table-row-selected,\n.device-desktop .data-table tbody tr:hover {\n background: var(--f7-table-selected-row-bg-color);\n}\n.data-table tbody td:before,\n.data-table tbody th:before {\n content: '';\n position: absolute;\n background-color: var(--f7-table-cell-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.data-table th,\n.data-table td {\n --f7-table-cell-padding-left: var(--f7-table-cell-padding-horizontal);\n --f7-table-cell-padding-right: var(--f7-table-cell-padding-horizontal);\n padding-top: var(--f7-table-cell-padding-vertical);\n padding-bottom: var(--f7-table-cell-padding-vertical);\n padding-left: var(--f7-table-cell-padding-left);\n padding-right: var(--f7-table-cell-padding-right);\n position: relative;\n box-sizing: border-box;\n}\n.data-table th:first-child,\n.data-table td:first-child {\n --f7-table-cell-padding-left: var(--f7-table-edge-cell-padding-horizontal);\n}\n.data-table th:last-child,\n.data-table td:last-child {\n --f7-table-cell-padding-right: var(--f7-table-edge-cell-padding-horizontal);\n}\n.data-table th.label-cell,\n.data-table td.label-cell {\n --f7-table-cell-padding-left: var(--f7-table-label-cell-padding-horizontal);\n --f7-table-cell-padding-right: var(--f7-table-label-cell-padding-horizontal);\n}\n.data-table th.numeric-cell,\n.data-table td.numeric-cell {\n text-align: right;\n}\n.data-table th.checkbox-cell,\n.data-table td.checkbox-cell {\n overflow: visible;\n width: var(--f7-table-checkbox-cell-width);\n}\n.data-table th.checkbox-cell label + span,\n.data-table td.checkbox-cell label + span {\n margin-left: 8px;\n}\n.data-table th.checkbox-cell:first-child,\n.data-table td.checkbox-cell:first-child {\n padding-right: calc(var(--f7-table-cell-padding-right) / 2);\n}\n.data-table th.checkbox-cell:first-child + td,\n.data-table td.checkbox-cell:first-child + td,\n.data-table th.checkbox-cell:first-child + th,\n.data-table td.checkbox-cell:first-child + th {\n padding-left: calc(var(--f7-table-cell-padding-left) / 2);\n}\n.data-table th.checkbox-cell:last-child,\n.data-table td.checkbox-cell:last-child {\n padding-left: calc(var(--f7-table-cell-padding-left) / 2);\n}\n.data-table th.actions-cell,\n.data-table td.actions-cell {\n text-align: right;\n white-space: nowrap;\n}\n.data-table th.actions-cell a.link,\n.data-table td.actions-cell a.link {\n color: var(--f7-table-actions-cell-link-color, var(--f7-theme-color));\n}\n.data-table th a.icon-only,\n.data-table td a.icon-only,\n.card .data-table th a.icon-only,\n.card .data-table td a.icon-only,\n.card.data-table th a.icon-only,\n.card.data-table td a.icon-only {\n display: inline-block;\n vertical-align: middle;\n text-align: center;\n font-size: 0;\n min-width: 0;\n}\n.data-table th a.icon-only i,\n.data-table td a.icon-only i,\n.card .data-table th a.icon-only i,\n.card .data-table td a.icon-only i,\n.card.data-table th a.icon-only i,\n.card.data-table td a.icon-only i {\n font-size: var(--f7-table-link-icon-only-icon-size);\n vertical-align: middle;\n}\n.data-table .sortable-cell:not(.input-cell) {\n cursor: pointer;\n position: relative;\n}\n.data-table .sortable-cell.input-cell .table-head-label {\n cursor: pointer;\n position: relative;\n}\n.data-table .sortable-cell:not(.numeric-cell):not(.input-cell):after,\n.data-table .sortable-cell.numeric-cell:not(.input-cell):before,\n.data-table .sortable-cell:not(.numeric-cell).input-cell > .table-head-label:after,\n.data-table .sortable-cell.numeric-cell.input-cell > .table-head-label:before {\n content: 'arrow_bottom_md';\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n display: inline-block;\n vertical-align: top;\n width: 16px;\n height: 16px;\n color: var(--f7-table-sortable-icon-color);\n font-size: 13px;\n line-height: 16px;\n transition-duration: 300ms;\n transform: rotate(0);\n opacity: 0;\n}\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:after,\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:after,\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:before,\n.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:before {\n opacity: 0.54;\n}\n.data-table .sortable-cell.sortable-cell-active:after,\n.data-table .sortable-cell.sortable-cell-active .table-head-label:after,\n.data-table .sortable-cell.sortable-cell-active:before,\n.data-table .sortable-cell.sortable-cell-active .table-head-label:before {\n opacity: 0.87 !important;\n}\n.data-table .sortable-cell.sortable-desc:after,\n.data-table .sortable-cell.sortable-desc:after,\n.data-table .table-head-label:after,\n.data-table .sortable-cell.sortable-desc:before,\n.data-table .sortable-cell.sortable-desc:before,\n.data-table .table-head-label:before {\n transform: rotate(180deg) !important;\n}\n.data-table.card .card-header,\n.card .data-table .card-header,\n.data-table.card .card-footer,\n.card .data-table .card-footer {\n padding-left: var(--f7-table-edge-cell-padding-horizontal);\n padding-right: var(--f7-table-edge-cell-padding-horizontal);\n}\n.data-table.card .card-header,\n.card .data-table .card-header {\n min-height: var(--f7-table-card-header-height);\n background-color: var(--f7-table-card-header-bg-color);\n}\n.data-table.card .card-content,\n.card .data-table .card-content {\n overflow-x: auto;\n}\n.data-table.card .card-footer,\n.card .data-table .card-footer {\n min-height: var(--f7-table-footer-height);\n}\n.data-table .data-table-title {\n font-size: var(--f7-table-title-font-size);\n font-weight: var(--f7-table-title-font-weight);\n}\n.data-table .data-table-links,\n.data-table .data-table-actions {\n display: flex;\n}\n.data-table .data-table-links .button {\n min-width: 64px;\n}\n.data-table .data-table-actions {\n margin-left: auto;\n align-items: center;\n}\n.data-table .data-table-actions a.link {\n color: var(--f7-table-actions-link-color, var(--f7-theme-color));\n min-width: 0;\n}\n.data-table .data-table-actions a.link.icon-only {\n line-height: 1;\n justify-content: center;\n padding: 0;\n}\n.data-table .data-table-header,\n.data-table .data-table-header-selected {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n}\n.data-table .card-header > .data-table-header,\n.data-table .card-header > .data-table-header-selected {\n padding-top: var(--f7-card-header-padding-vertical);\n padding-bottom: var(--f7-card-header-padding-vertical);\n height: 100%;\n margin-top: calc(-1 * var(--f7-card-header-padding-vertical));\n margin-bottom: calc(-1 * var(--f7-card-header-padding-vertical));\n min-height: var(--f7-table-card-header-height);\n padding-left: var(--f7-table-edge-cell-padding-horizontal);\n padding-right: var(--f7-table-edge-cell-padding-horizontal);\n margin-left: calc(-1 * var(--f7-table-edge-cell-padding-horizontal));\n margin-right: calc(-1 * var(--f7-table-edge-cell-padding-horizontal));\n}\n.data-table .data-table-header-selected {\n background: rgba(var(--f7-theme-color-rgb), 0.1);\n display: none;\n}\n.data-table.data-table-has-checked .data-table-header {\n display: none;\n}\n.data-table.data-table-has-checked .data-table-header-selected {\n display: flex;\n}\n.data-table .data-table-title-selected {\n font-size: 14px;\n color: var(--f7-theme-color);\n}\n.data-table .data-table-footer {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n position: relative;\n font-size: var(--f7-table-footer-font-size);\n overflow: hidden;\n min-height: var(--f7-table-footer-height);\n color: var(--f7-table-footer-text-color);\n justify-content: flex-end;\n}\n.data-table .data-table-footer:before {\n content: '';\n position: absolute;\n background-color: var(--f7-table-cell-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.data-table .data-table-rows-select,\n.data-table .data-table-pagination {\n display: flex;\n align-items: center;\n}\n.data-table .input-cell {\n padding-top: 8px;\n padding-bottom: 8px;\n height: auto;\n vertical-align: top;\n}\n.data-table .input-cell .table-head-label + .input {\n margin-top: 4px;\n}\n.data-table .input-cell .input {\n height: var(--f7-table-input-height);\n}\n.data-table .input-cell .input input,\n.data-table .input-cell .input textarea,\n.data-table .input-cell .input select {\n height: var(--f7-table-input-height);\n color: var(--f7-table-input-text-color);\n font-size: var(--f7-table-input-font-size);\n}\n@media (max-width: 480px) and (orientation: portrait) {\n .data-table.data-table-collapsible thead {\n display: none;\n }\n .data-table.data-table-collapsible tbody,\n .data-table.data-table-collapsible tr,\n .data-table.data-table-collapsible td {\n display: block;\n }\n .data-table.data-table-collapsible tr {\n position: relative;\n }\n .data-table.data-table-collapsible tr:before {\n content: '';\n position: absolute;\n background-color: var(--f7-table-cell-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n }\n .data-table.data-table-collapsible tr:hover {\n background-color: inherit;\n }\n .data-table.data-table-collapsible td {\n --f7-table-cell-padding-left: var(--f7-table-collapsible-cell-padding);\n --f7-table-cell-padding-right: var(--f7-table-collapsible-cell-padding);\n height: auto;\n min-height: var(--f7-table-body-cell-height);\n display: flex;\n align-content: center;\n align-items: center;\n justify-content: flex-start;\n text-align: left;\n }\n .data-table.data-table-collapsible td:before {\n display: none !important;\n }\n .data-table.data-table-collapsible td:not(.checkbox-cell):before {\n width: 40%;\n display: block !important;\n content: attr(data-collapsible-title);\n position: relative;\n height: auto;\n background: none !important;\n transform: none !important;\n font-size: var(--f7-table-head-font-size);\n font-weight: var(--f7-table-head-font-weight);\n color: var(--f7-table-head-text-color);\n margin-right: 16px;\n flex-shrink: 0;\n }\n .data-table.data-table-collapsible td.checkbox-cell {\n position: absolute;\n top: 0;\n left: 0;\n }\n .data-table.data-table-collapsible td.checkbox-cell + td {\n padding-left: 16px;\n }\n .data-table.data-table-collapsible td.checkbox-cell ~ td {\n margin-left: 32px;\n }\n}\n.data-table .xsmall-only,\n.data-table .xsmall-landscape-only {\n display: none;\n}\n@media (min-width: 480px) {\n .data-table .xsmall-only {\n display: table-cell;\n }\n}\n@media (min-width: 480px) and (orientation: landscape) {\n .data-table .xsmall-landscape-only {\n display: table-cell;\n }\n}\n.data-table .small-only,\n.data-table .small-landscape-only {\n display: none;\n}\n@media (min-width: 568px) {\n .data-table .small-only {\n display: table-cell;\n }\n}\n@media (min-width: 568px) and (orientation: landscape) {\n .data-table .small-landscape-only {\n display: table-cell;\n }\n}\n.data-table .medium-only,\n.data-table .medium-landscape-only {\n display: none;\n}\n@media (min-width: 768px) {\n .data-table .medium-only {\n display: table-cell;\n }\n}\n@media (min-width: 768px) and (orientation: landscape) {\n .data-table .medium-landscape-only {\n display: table-cell;\n }\n}\n.data-table .large-only,\n.data-table .large-landscape-only {\n display: none;\n}\n@media (min-width: 1024px) {\n .data-table .large-only {\n display: table-cell;\n }\n}\n@media (min-width: 1024px) and (orientation: landscape) {\n .data-table .large-landscape-only {\n display: table-cell;\n }\n}\n.data-table .xlarge-only,\n.data-table .xlarge-landscape-only {\n display: none;\n}\n@media (min-width: 1200px) {\n .data-table .xlarge-only {\n display: table-cell;\n }\n}\n@media (min-width: 1200px) and (orientation: landscape) {\n .data-table .xlarge-landscape-only {\n display: table-cell;\n }\n}\n.ios .data-table th.actions-cell a.link + a.link,\n.ios .data-table td.actions-cell a.link + a.link {\n margin-left: 16px;\n}\n.ios .sortable-cell:not(.numeric-cell):after {\n margin-left: 5px;\n}\n.ios .sortable-cell.numeric-cell:before {\n margin-right: 5px;\n}\n.ios .data-table-links a.link + a.link,\n.ios .data-table-actions a.link + a.link,\n.ios .data-table-links .button + .button,\n.ios .data-table-actions .button + .button {\n margin-left: 16px;\n}\n.ios .data-table-actions a.link.icon-only {\n width: 44px;\n height: 44px;\n}\n.ios .data-table-rows-select a.link,\n.ios .data-table-pagination a.link {\n width: 44px;\n height: 44px;\n}\n.ios .data-table-rows-select + .data-table-pagination {\n margin-left: 30px;\n}\n.ios .data-table-rows-select .input {\n margin-left: 20px;\n}\n.ios .data-table-pagination-label {\n margin-right: 16px;\n}\n.md .data-table th.actions-cell a.link + a.link,\n.md .data-table td.actions-cell a.link + a.link {\n margin-left: 24px;\n}\n.md .data-table th.actions-cell a.icon-only,\n.md .data-table td.actions-cell a.icon-only {\n width: 24px;\n height: 24px;\n line-height: 24px;\n}\n.md .sortable-cell:not(.numeric-cell):after {\n margin-left: 8px;\n}\n.md .sortable-cell.numeric-cell:before {\n margin-right: 8px;\n}\n.md .data-table-links a.link + a.link,\n.md .data-table-actions a.link + a.link,\n.md .data-table-links .button + .button,\n.md .data-table-actions .button + .button {\n margin-left: 24px;\n}\n.md .data-table-actions a.link.icon-only {\n width: 24px;\n height: 24px;\n overflow: visible;\n}\n.md .data-table-actions a.link.icon-only.active-state {\n background: none;\n}\n.md .data-table-rows-select a.link,\n.md .data-table-pagination a.link {\n width: 48px;\n height: 48px;\n}\n.md .data-table-rows-select + .data-table-pagination {\n margin-left: 32px;\n}\n.md .data-table-rows-select .input {\n margin-left: 24px;\n}\n.md .data-table-pagination-label {\n margin-right: 20px;\n}\n.md .input-cell .input-clear-button {\n transform: scale(0.8);\n}\n/* === FAB === */\n:root {\n --f7-fab-margin: 16px;\n --f7-fab-extended-text-font-size: 14px;\n --f7-fab-label-padding: 4px 12px;\n --f7-fab-label-font-size: inherit;\n --f7-fab-button-size: 40px;\n}\n.ios {\n /* --f7-fab-pressed-bg-color: var(--f7-theme-color-shade); */\n /* --f7-fab-bg-color: var(--f7-theme-color)); */\n --f7-fab-text-color: #fff;\n --f7-fab-border-radius: 50px;\n --f7-fab-size: 50px;\n --f7-fab-box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.4);\n --f7-fab-extended-text-transform: uppercase;\n --f7-fab-extended-size: 50px;\n --f7-fab-extended-text-padding: 0 20px;\n --f7-fab-extended-text-font-weight: 600;\n --f7-fab-extended-text-letter-spacing: 0;\n --f7-fab-label-border-radius: 4px;\n --f7-fab-label-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.4);\n --f7-fab-label-text-color: #333;\n --f7-fab-label-bg-color: #fff;\n}\n.md {\n /*\n --f7-fab-pressed-bg-color: var(--f7-fab-bg-color, var(--f7-theme-color));\n */\n --f7-fab-border-radius: 16px;\n --f7-fab-size: 56px;\n --f7-fab-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.25);\n --f7-fab-extended-size: 56px;\n --f7-fab-extended-text-padding: 0 16px;\n --f7-fab-extended-text-font-weight: 500;\n --f7-fab-extended-text-letter-spacing: 0;\n --f7-fab-extended-text-transform: none;\n --f7-fab-label-border-radius: 8px;\n --f7-fab-label-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.25);\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-fab-bg-color: var(--f7-md-primary-container);\n --f7-fab-text-color: var(--f7-md-on-primary-container);\n --f7-fab-label-text-color: var(--f7-md-on-surface);\n --f7-fab-label-bg-color: var(--f7-md-surface-5);\n}\n.fab-backdrop {\n z-index: 1400;\n}\n.fab {\n position: absolute;\n z-index: 1500;\n}\n.fab a {\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n}\n.fab-left-top,\n.fab-left-center,\n.fab-left-bottom {\n left: calc(var(--f7-fab-margin) + var(--f7-safe-area-left));\n}\n.fab-right-top,\n.fab-right-center,\n.fab-right-bottom {\n right: calc(var(--f7-fab-margin) + var(--f7-safe-area-right));\n}\n.fab-left-top,\n.fab-center-top,\n.fab-right-top {\n top: var(--f7-fab-margin);\n}\n.fab-left-bottom,\n.fab-center-bottom,\n.fab-right-bottom {\n bottom: calc(var(--f7-fab-margin) + var(--f7-safe-area-bottom));\n}\n.fab-center-top,\n.fab-center-center,\n.fab-center-bottom {\n left: 50%;\n transform: translateX(-50%);\n}\n.fab-left-center,\n.fab-center-center,\n.fab-right-center {\n top: 50%;\n transform: translateY(-50%);\n}\n.fab-center-center {\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n}\n.fab > a,\n.fab-buttons a {\n background-color: var(--f7-fab-bg-color, var(--f7-theme-color));\n width: var(--f7-fab-size);\n height: var(--f7-fab-size);\n box-shadow: var(--f7-fab-box-shadow);\n border-radius: var(--f7-fab-border-radius);\n position: relative;\n transition-duration: 300ms;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n z-index: 1;\n color: var(--f7-fab-text-color);\n}\n.fab > a i {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate3d(-50%, -50%, 0) rotate(0deg) scale(1);\n transition: 300ms;\n}\n.fab > a i + i {\n transform: translate3d(-50%, -50%, 0) rotate(-90deg) scale(0.5);\n opacity: 0;\n}\n.fab-buttons a {\n border-radius: var(--f7-fab-border-radius);\n width: var(--f7-fab-button-size);\n height: var(--f7-fab-button-size);\n}\n.fab-buttons {\n display: flex;\n visibility: hidden;\n pointer-events: none;\n position: absolute;\n}\n.fab-buttons a {\n opacity: 0;\n}\n.fab-opened:not(.fab-morph) > a i {\n transform: translate3d(-50%, -50%, 0) rotate(90deg) scale(0.5);\n opacity: 0;\n}\n.fab-opened:not(.fab-morph) > a i + i {\n transform: translate3d(-50%, -50%, 0) rotate(0deg) scale(1);\n opacity: 1;\n}\n.fab-opened .fab-buttons {\n visibility: visible;\n pointer-events: auto;\n}\n.fab-opened .fab-buttons a {\n opacity: 1;\n transform: translate3d(0, 0px, 0) scale(1) !important;\n}\n.fab-opened .fab-buttons a:nth-child(2) {\n transition-delay: 50ms;\n}\n.fab-opened .fab-buttons a:nth-child(3) {\n transition-delay: 100ms;\n}\n.fab-opened .fab-buttons a:nth-child(4) {\n transition-delay: 150ms;\n}\n.fab-opened .fab-buttons a:nth-child(5) {\n transition-delay: 200ms;\n}\n.fab-opened .fab-buttons a:nth-child(6) {\n transition-delay: 250ms;\n}\n.fab-buttons-top,\n.fab-buttons-bottom {\n left: 50%;\n width: var(--f7-fab-button-size);\n margin-left: calc(-1 * var(--f7-fab-button-size) / 2);\n}\n.fab-buttons-top {\n bottom: 100%;\n margin-bottom: 16px;\n flex-direction: column-reverse;\n}\n.fab-buttons-top a {\n transform: translate3d(0, 8px, 0) scale(0.3);\n transform-origin: center bottom;\n}\n.fab-buttons-top a + a {\n margin-bottom: 16px;\n}\n.fab-buttons-bottom {\n top: 100%;\n margin-top: 16px;\n flex-direction: column;\n}\n.fab-buttons-bottom a {\n transform: translate3d(0, -8px, 0) scale(0.3);\n transform-origin: center top;\n}\n.fab-buttons-bottom a + a {\n margin-top: 16px;\n}\n.fab-buttons-left,\n.fab-buttons-right {\n top: 50%;\n height: var(--f7-fab-button-size);\n margin-top: calc(-1 * var(--f7-fab-button-size) / 2);\n}\n.fab-buttons-left {\n right: 100%;\n margin-right: 16px;\n flex-direction: row-reverse;\n}\n.fab-buttons-left a {\n transform: translate3d(8px, 0px, 0) scale(0.3);\n transform-origin: right center;\n}\n.fab-buttons-left a + a {\n margin-right: 16px;\n}\n.fab-buttons-right {\n left: 100%;\n margin-left: 16px;\n}\n.fab-buttons-right a {\n transform: translate3d(-8px, 0, 0) scale(0.3);\n transform-origin: left center;\n}\n.fab-buttons-right a + a {\n margin-left: 16px;\n}\n.fab-buttons-center {\n left: 0%;\n top: 0%;\n width: 100%;\n height: 100%;\n}\n.fab-buttons-center a {\n position: absolute;\n}\n.fab-buttons-center a:nth-child(1) {\n left: 50%;\n margin-left: calc(-1 * var(--f7-fab-button-size) / 2);\n bottom: 100%;\n margin-bottom: 16px;\n transform: translateY(-8px) scale(0.3);\n transform-origin: center bottom;\n}\n.fab-buttons-center a:nth-child(2) {\n left: 100%;\n margin-top: calc(-1 * var(--f7-fab-button-size) / 2);\n top: 50%;\n margin-left: 16px;\n transform: translateX(-8px) scale(0.3);\n transform-origin: left center;\n}\n.fab-buttons-center a:nth-child(3) {\n left: 50%;\n margin-left: calc(-1 * var(--f7-fab-button-size) / 2);\n top: 100%;\n margin-top: 16px;\n transform: translateY(8px) scale(0.3);\n transform-origin: center top;\n}\n.fab-buttons-center a:nth-child(4) {\n right: 100%;\n margin-top: calc(-1 * var(--f7-fab-button-size) / 2);\n top: 50%;\n margin-right: 16px;\n transform: translateX(8px) scale(0.3);\n transform-origin: right center;\n}\n.fab-morph {\n border-radius: var(--f7-fab-border-radius);\n background: var(--f7-fab-bg-color, var(--f7-theme-color));\n box-shadow: var(--f7-fab-box-shadow);\n}\n.fab-morph > a {\n box-shadow: none;\n background: none !important;\n}\n.fab-opened.fab-morph > a i {\n opacity: 0;\n}\n.fab-morph,\n.fab-morph > a,\n.fab-morph-target {\n transition-duration: 250ms;\n}\n.fab-morph-target:not(.fab-morph-target-visible) {\n display: none;\n}\n.fab-extended {\n width: auto;\n min-width: var(--f7-fab-extended-size);\n}\n.fab-extended > a {\n width: 100%;\n height: var(--f7-fab-extended-size);\n}\n.fab-extended > a i {\n left: calc(var(--f7-fab-extended-size) / 2);\n}\n.fab-extended i ~ .fab-text {\n padding-left: var(--f7-fab-extended-size);\n}\n.fab-extended > a {\n width: 100% !important;\n}\n.fab-text {\n box-sizing: border-box;\n font-size: var(--f7-fab-extended-text-font-size);\n padding: var(--f7-fab-extended-text-padding);\n font-weight: var(--f7-fab-extended-text-font-weight);\n letter-spacing: var(--f7-fab-extended-text-letter-spacing);\n text-transform: var(--f7-fab-extended-text-transform);\n}\n.fab-label-button {\n overflow: visible !important;\n}\n.fab-label {\n position: absolute;\n top: 50%;\n padding: var(--f7-fab-label-padding);\n border-radius: var(--f7-fab-label-border-radius);\n background: var(--f7-fab-label-bg-color);\n color: var(--f7-fab-label-text-color);\n box-shadow: var(--f7-fab-label-box-shadow);\n white-space: nowrap;\n transform: translateY(-50%);\n pointer-events: none;\n font-size: var(--f7-fab-label-font-size);\n}\n.fab-right-top .fab-label,\n.fab-right-center .fab-label,\n.fab-right-bottom .fab-label {\n right: 100%;\n margin-right: 8px;\n}\n.fab-left-top .fab-label,\n.fab-left-center .fab-label,\n.fab-left-bottom .fab-label {\n left: 100%;\n margin-left: 8px;\n}\n.navbar ~ * .fab-left-top,\n.navbar ~ * .fab-center-top,\n.navbar ~ * .fab-right-top,\n.navbar ~ .fab-left-top,\n.navbar ~ .fab-center-top,\n.navbar ~ .fab-right-top,\n.navbars ~ * .fab-left-top,\n.navbars ~ * .fab-center-top,\n.navbars ~ * .fab-right-top,\n.navbars ~ .fab-left-top,\n.navbars ~ .fab-center-top,\n.navbars ~ .fab-right-top {\n margin-top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.toolbar-top ~ * .fab-left-top,\n.toolbar-top ~ * .fab-center-top,\n.toolbar-top ~ * .fab-right-top,\n.toolbar-top ~ .fab-left-top,\n.toolbar-top ~ .fab-center-top,\n.toolbar-top ~ .fab-right-top,\n.ios .toolbar-top-ios ~ * .fab-left-top,\n.ios .toolbar-top-ios ~ * .fab-center-top,\n.ios .toolbar-top-ios ~ * .fab-right-top,\n.ios .toolbar-top-ios ~ .fab-left-top,\n.ios .toolbar-top-ios ~ .fab-center-top,\n.ios .toolbar-top-ios ~ .fab-right-top,\n.md .toolbar-top-md ~ * .fab-left-top,\n.md .toolbar-top-md ~ * .fab-center-top,\n.md .toolbar-top-md ~ * .fab-right-top,\n.md .toolbar-top-md ~ .fab-left-top,\n.md .toolbar-top-md ~ .fab-center-top,\n.md .toolbar-top-md ~ .fab-right-top {\n margin-top: var(--f7-toolbar-height);\n}\n.toolbar-bottom ~ * .fab-left-bottom,\n.toolbar-bottom ~ * .fab-center-bottom,\n.toolbar-bottom ~ * .fab-right-bottom,\n.toolbar-bottom ~ .fab-left-bottom,\n.toolbar-bottom ~ .fab-center-bottom,\n.toolbar-bottom ~ .fab-right-bottom,\n.ios .toolbar-bottom-ios ~ * .fab-left-bottom,\n.ios .toolbar-bottom-ios ~ * .fab-center-bottom,\n.ios .toolbar-bottom-ios ~ * .fab-right-bottom,\n.ios .toolbar-bottom-ios ~ .fab-left-bottom,\n.ios .toolbar-bottom-ios ~ .fab-center-bottom,\n.ios .toolbar-bottom-ios ~ .fab-right-bottom,\n.md .toolbar-bottom-md ~ * .fab-left-bottom,\n.md .toolbar-bottom-md ~ * .fab-center-bottom,\n.md .toolbar-bottom-md ~ * .fab-right-bottom,\n.md .toolbar-bottom-md ~ .fab-left-bottom,\n.md .toolbar-bottom-md ~ .fab-center-bottom,\n.md .toolbar-bottom-md ~ .fab-right-bottom {\n margin-bottom: var(--f7-toolbar-height);\n}\n.tabbar-icons.toolbar-bottom ~ * .fab-left-bottom,\n.tabbar-icons.toolbar-bottom ~ * .fab-center-bottom,\n.tabbar-icons.toolbar-bottom ~ * .fab-right-bottom,\n.tabbar-icons.toolbar-bottom ~ .fab-left-bottom,\n.tabbar-icons.toolbar-bottom ~ .fab-center-bottom,\n.tabbar-icons.toolbar-bottom ~ .fab-right-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ * .fab-left-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ * .fab-center-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ * .fab-right-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ .fab-left-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ .fab-center-bottom,\n.ios .tabbar-icons.toolbar-bottom-ios ~ .fab-right-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ * .fab-left-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ * .fab-center-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ * .fab-right-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ .fab-left-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ .fab-center-bottom,\n.md .tabbar-icons.toolbar-bottom-md ~ .fab-right-bottom {\n margin-bottom: var(--f7-tabbar-icons-height);\n}\n.tabbar-icons.toolbar-top ~ * .fab-left-bottom,\n.tabbar-icons.toolbar-top ~ * .fab-center-bottom,\n.tabbar-icons.toolbar-top ~ * .fab-right-bottom,\n.tabbar-icons.toolbar-top ~ .fab-left-bottom,\n.tabbar-icons.toolbar-top ~ .fab-center-bottom,\n.tabbar-icons.toolbar-top ~ .fab-right-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ * .fab-left-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ * .fab-center-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ * .fab-right-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ .fab-left-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ .fab-center-bottom,\n.ios .tabbar-icons.toolbar-top-ios ~ .fab-right-bottom,\n.md .tabbar-icons.toolbar-top-md ~ * .fab-left-bottom,\n.md .tabbar-icons.toolbar-top-md ~ * .fab-center-bottom,\n.md .tabbar-icons.toolbar-top-md ~ * .fab-right-bottom,\n.md .tabbar-icons.toolbar-top-md ~ .fab-left-bottom,\n.md .tabbar-icons.toolbar-top-md ~ .fab-center-bottom,\n.md .tabbar-icons.toolbar-top-md ~ .fab-right-bottom {\n margin-top: var(--f7-tabbar-icons-height);\n}\n.messagebar ~ * .fab-left-bottom,\n.messagebar ~ * .fab-center-bottom,\n.messagebar ~ * .fab-right-bottom,\n.messagebar ~ .fab-left-bottom,\n.messagebar ~ .fab-center-bottom,\n.messagebar ~ .fab-right-bottom {\n margin-bottom: var(--f7-messagebar-height);\n}\n.navbar + .toolbar-top ~ * .fab-left-top,\n.ios .navbar + .toolbar-top-ios ~ * .fab-left-top,\n.md .navbar + .toolbar-top-ios ~ * .fab-left-top,\n.navbar + .toolbar-top ~ * .fab-center-top,\n.ios .navbar + .toolbar-top-ios ~ * .fab-center-top,\n.md .navbar + .toolbar-top-ios ~ * .fab-center-top,\n.navbar + .toolbar-top ~ * .fab-right-top,\n.ios .navbar + .toolbar-top-ios ~ * .fab-right-top,\n.md .navbar + .toolbar-top-ios ~ * .fab-right-top,\n.navbar + .toolbar-top ~ .fab-left-top,\n.ios .navbar + .toolbar-top-ios ~ .fab-left-top,\n.md .navbar + .toolbar-top-ios ~ .fab-left-top,\n.navbar + .toolbar-top ~ .fab-center-top,\n.ios .navbar + .toolbar-top-ios ~ .fab-center-top,\n.md .navbar + .toolbar-top-ios ~ .fab-center-top,\n.navbar + .toolbar-top ~ .fab-right-top,\n.ios .navbar + .toolbar-top-ios ~ .fab-right-top,\n.md .navbar + .toolbar-top-ios ~ .fab-right-top {\n margin-top: calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar + .toolbar-top.tabbar-icons ~ * .fab-left-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-left-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-left-top,\n.navbar + .toolbar-top.tabbar-icons ~ * .fab-center-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-center-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-center-top,\n.navbar + .toolbar-top.tabbar-icons ~ * .fab-right-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-right-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ * .fab-right-top,\n.navbar + .toolbar-top.tabbar-icons ~ .fab-left-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-left-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-left-top,\n.navbar + .toolbar-top.tabbar-icons ~ .fab-center-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-center-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-center-top,\n.navbar + .toolbar-top.tabbar-icons ~ .fab-right-top,\n.ios .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-right-top,\n.md .navbar + .toolbar-top-ios.tabbar-icons ~ .fab-right-top {\n margin-top: calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbars + .toolbar-top ~ * .fab-left-top,\n.ios .navbars + .toolbar-top-ios ~ * .fab-left-top,\n.navbars + .toolbar-top ~ * .fab-center-top,\n.ios .navbars + .toolbar-top-ios ~ * .fab-center-top,\n.navbars + .toolbar-top ~ * .fab-right-top,\n.ios .navbars + .toolbar-top-ios ~ * .fab-right-top,\n.navbars + .toolbar-top ~ .fab-left-top,\n.ios .navbars + .toolbar-top-ios ~ .fab-left-top,\n.navbars + .toolbar-top ~ .fab-center-top,\n.ios .navbars + .toolbar-top-ios ~ .fab-center-top,\n.navbars + .toolbar-top ~ .fab-right-top,\n.ios .navbars + .toolbar-top-ios ~ .fab-right-top {\n margin-top: calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbars + .toolbar-top.tabbar-icons ~ * .fab-left-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ * .fab-left-top,\n.navbars + .toolbar-top.tabbar-icons ~ * .fab-center-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ * .fab-center-top,\n.navbars + .toolbar-top.tabbar-icons ~ * .fab-right-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ * .fab-right-top,\n.navbars + .toolbar-top.tabbar-icons ~ .fab-left-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ .fab-left-top,\n.navbars + .toolbar-top.tabbar-icons ~ .fab-center-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ .fab-center-top,\n.navbars + .toolbar-top.tabbar-icons ~ .fab-right-top,\n.ios .navbars + .toolbar-top-ios.tabbar-icons ~ .fab-right-top {\n margin-top: calc(var(--f7-tabbar-icons-height) + var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.ios .fab > a.active-state,\n.ios .fab-buttons a.active-state {\n transition-duration: 0ms;\n background-color: var(--f7-fab-pressed-bg-color, var(--f7-theme-color-shade));\n}\n.md .fab > a.active-state,\n.md .fab-buttons a.active-state {\n background-color: var(--f7-fab-pressed-bg-color, var(--f7-fab-bg-color, var(--f7-theme-color)));\n}\n/* === Searchbar === */\n:root {\n /*\n --f7-searchbar-link-color: var(--f7-bars-link-color);\n --f7-searchbar-inline-input-font-size: var(--f7-searchbar-input-font-size);\n */\n --f7-searchbar-input-border-width: 0px;\n --f7-searchbar-input-border-color: transparent;\n}\n.ios {\n /*\n --f7-searchbar-bg-color: var(--f7-bars-bg-color);\n --f7-searchbar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n --f7-searchbar-border-color: var(--f7-bars-border-color);\n */\n --f7-searchbar-height: 44px;\n --f7-searchbar-inner-padding-left: 8px;\n --f7-searchbar-inner-padding-right: 8px;\n /*\n --f7-searchbar-link-color: var(--f7-bars-link-color, var(--f7-theme-color));\n */\n --f7-searchbar-input-font-size: 17px;\n --f7-searchbar-input-border-radius: 8px;\n --f7-searchbar-input-height: 32px;\n --f7-searchbar-inline-input-height: 32px;\n /*\n --f7-searchbar-inline-input-border-radius: var(--f7-searchbar-input-border-radius);\n */\n --f7-searchbar-input-padding-horizontal: 28px;\n /*\n --f7-searchbar-inline-input-padding-horizontal: var(--f7-searchbar-input-padding-horizontal);\n --f7-searchbar-input-clear-button-color: var(--f7-input-clear-button-color);\n */\n --f7-searchbar-backdrop-bg-color: rgba(0, 0, 0, 0.4);\n --f7-searchbar-in-page-content-margin: 0px;\n --f7-searchbar-in-page-content-box-shadow: none;\n --f7-searchbar-in-page-content-border-radius: 0;\n --f7-searchbar-in-page-content-input-border-radius: 0;\n --f7-searchbar-placeholder-color: rgba(0, 0, 0, 0.4);\n --f7-searchbar-input-text-color: #000;\n --f7-searchbar-search-icon-color: rgba(0, 0, 0, 0.4);\n --f7-searchbar-input-bg-color: #e4e4e4;\n}\n.ios .dark,\n.ios.dark {\n --f7-searchbar-placeholder-color: rgba(255, 255, 255, 0.4);\n --f7-searchbar-input-text-color: #fff;\n --f7-searchbar-search-icon-color: rgba(255, 255, 255, 0.4);\n --f7-searchbar-input-bg-color: #2a2a2a;\n}\n.md {\n --f7-searchbar-border-color: transparent;\n --f7-searchbar-height: 48px;\n --f7-searchbar-inner-padding-left: 8px;\n --f7-searchbar-inner-padding-right: 8px;\n --f7-searchbar-input-font-size: 16px;\n --f7-searchbar-input-border-radius: 24px;\n --f7-searchbar-input-height: 48px;\n --f7-searchbar-inline-input-height: 48px;\n --f7-searchbar-inline-input-border-radius: 24px;\n --f7-searchbar-input-padding-horizontal: 16px;\n --f7-searchbar-inline-input-padding-horizontal: 16px;\n --f7-searchbar-backdrop-bg-color: rgba(0, 0, 0, 0.25);\n --f7-searchbar-in-page-content-margin: 16px 0;\n --f7-searchbar-in-page-content-box-shadow: none;\n --f7-searchbar-in-page-content-border-radius: 24px;\n --f7-searchbar-in-page-content-input-border-radius: 24px;\n --f7-searchbar-bg-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-searchbar-link-color: var(--f7-md-on-surface);\n --f7-searchbar-search-icon-color: var(--f7-md-on-surface);\n --f7-searchbar-input-clear-button-color: var(--f7-md-on-surface);\n --f7-searchbar-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-searchbar-input-bg-color: var(--f7-md-secondary-container);\n --f7-searchbar-input-text-color: var(--f7-md-on-surface);\n}\n.searchbar {\n --f7-link-highlight-color: var(--f7-link-highlight-black);\n width: 100%;\n position: relative;\n z-index: 200;\n height: var(--f7-searchbar-height);\n background-color: var(--f7-searchbar-bg-color, var(--f7-bars-bg-color));\n}\n.dark .searchbar {\n --f7-link-highlight-color: var(--f7-link-highlight-white);\n}\n.searchbar input[type='search']::-webkit-search-decoration {\n display: none;\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .searchbar {\n background-color: rgba(var(--f7-searchbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.ios .subnavbar .searchbar {\n background-color: transparent;\n -webkit-backdrop-filter: none;\n backdrop-filter: none;\n}\n.ios .subnavbar .searchbar:after {\n display: none !important;\n}\n.searchbar.no-outline:after {\n display: none !important;\n}\n.searchbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-searchbar-border-color, var(--f7-bars-border-color));\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n.page > .searchbar:not(.searchbar-inline) {\n z-index: 600;\n}\n.searchbar input[type='text'],\n.searchbar input[type='search'] {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n display: block;\n border: var(--f7-searchbar-input-border-width) solid var(--f7-searchbar-input-border-color);\n -webkit-appearance: none;\n appearance: none;\n font-family: inherit;\n font-weight: normal;\n color: var(--f7-searchbar-input-text-color);\n font-size: var(--f7-searchbar-input-font-size);\n background-color: var(--f7-searchbar-input-bg-color);\n border-radius: var(--f7-searchbar-input-border-radius);\n position: relative;\n padding: 0;\n padding-left: calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px));\n padding-right: calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-right, 0px));\n}\n.searchbar input[type='text']::placeholder,\n.searchbar input[type='search']::placeholder {\n color: var(--f7-searchbar-placeholder-color);\n opacity: 1;\n}\n.searchbar input::-webkit-search-cancel-button {\n -webkit-appearance: none;\n appearance: none;\n}\n.searchbar .searchbar-input-wrap {\n flex-shrink: 1;\n width: 100%;\n height: var(--f7-searchbar-input-height);\n position: relative;\n}\n.searchbar a {\n color: var(--f7-searchbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.page > .searchbar:not(.searchbar-inline) {\n position: absolute;\n left: 0;\n top: 0;\n}\n.page-content .searchbar:not(.searchbar-inline) {\n border-radius: var(--f7-searchbar-in-page-content-border-radius);\n margin: var(--f7-searchbar-in-page-content-margin);\n width: auto;\n box-shadow: var(--f7-searchbar-in-page-content-box-shadow);\n}\n.page-content .searchbar:not(.searchbar-inline) .searchbar-inner,\n.page-content .searchbar:not(.searchbar-inline) input[type='text'],\n.page-content .searchbar:not(.searchbar-inline) input[type='search'] {\n border-radius: var(--f7-searchbar-in-page-content-input-border-radius, var(--f7-searchbar-input-border-radius));\n}\n.searchbar .input-clear-button {\n color: var(--f7-searchbar-input-clear-button-color, var(--f7-input-clear-button-color));\n}\n.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-searchbar-height);\n position: absolute;\n transition-duration: 300ms;\n pointer-events: none;\n}\n.navbar .searchbar-expandable {\n background: transparent;\n}\n.navbar .searchbar-expandable:after {\n display: none !important;\n}\n.navbar .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar .searchbar.searchbar-expandable .searchbar-inner {\n top: var(--f7-safe-area-top);\n height: calc(100% - var(--f7-safe-area-top));\n}\n.toolbar .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-toolbar-height);\n}\n.subnavbar .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-subnavbar-height);\n}\n.tabbar-icons .searchbar.searchbar-expandable {\n --f7-searchbar-expandable-size: var(--f7-tabbar-icons-height);\n}\n.searchbar-inner {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n padding: 0 calc(var(--f7-searchbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left));\n}\n.searchbar-disable-button {\n cursor: pointer;\n pointer-events: none;\n -webkit-appearance: none;\n appearance: none;\n background: none;\n border: none;\n outline: 0;\n padding: 0;\n margin: 0;\n width: auto;\n opacity: 0;\n}\n.searchbar-icon {\n pointer-events: none;\n background-position: center;\n background-repeat: no-repeat;\n}\n.searchbar-icon:after {\n color: var(--f7-searchbar-search-icon-color);\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n}\n.searchbar-backdrop {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 100;\n opacity: 0;\n pointer-events: none;\n transition-duration: 300ms;\n transform: translate3d(0, 0, 0);\n background: var(--f7-searchbar-backdrop-bg-color);\n}\n.searchbar-backdrop.searchbar-backdrop-in {\n opacity: 1;\n pointer-events: auto;\n}\n.page-content > .searchbar-backdrop {\n position: fixed;\n}\n.searchbar-not-found {\n display: none;\n}\n.hidden-by-searchbar,\n.list .hidden-by-searchbar,\n.list.li.hidden-by-searchbar,\n.list li.hidden-by-searchbar {\n display: none !important;\n}\n.navbar.with-searchbar-expandable-enabled-no-transition,\n.navbar.with-searchbar-expandable-enabled-no-transition {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar.with-searchbar-expandable-enabled,\n.navbar.with-searchbar-expandable-enabled {\n --f7-navbar-large-collapse-progress: 1;\n}\n.navbar.with-searchbar-expandable-enabled .navbar-bg,\n.navbar.with-searchbar-expandable-enabled .navbar-bg,\n.navbar.with-searchbar-expandable-enabled .title-large,\n.navbar.with-searchbar-expandable-enabled .title-large,\n.navbar.with-searchbar-expandable-enabled .title-large-text,\n.navbar.with-searchbar-expandable-enabled .title-large-text {\n transition-duration: 300ms;\n}\n.navbar.with-searchbar-expandable-closing .navbar-bg,\n.navbar.with-searchbar-expandable-closing .navbar-bg,\n.navbar.with-searchbar-expandable-closing .title-large,\n.navbar.with-searchbar-expandable-closing .title-large,\n.navbar.with-searchbar-expandable-closing .title-large-text,\n.navbar.with-searchbar-expandable-closing .title-large-text {\n transition-duration: 300ms;\n}\n.page-content.with-searchbar-expandable-enabled {\n height: calc(100% + var(--f7-navbar-large-title-height));\n transform: translateY(calc(-1 * var(--f7-navbar-large-title-height)));\n transition-duration: 300ms;\n transition-property: transform;\n}\n.page-content.with-searchbar-expandable-closing {\n transition-duration: 300ms;\n}\n.navbar ~ .page:not(.no-navbar) > .searchbar,\n.navbars ~ .page:not(.no-navbar) > .searchbar,\n.page > .navbar ~ .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));\n}\n.navbar ~ .page-with-navbar-large:not(.no-navbar) .searchbar,\n.navbars ~ .page-with-navbar-large:not(.no-navbar) .searchbar,\n.page-with-navbar-large .navbar ~ .searchbar,\n.page-with-navbar-large .navbar ~ * .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));\n transform: translate3d(0, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);\n}\n.navbars ~ .page-with-navbar-large:not(.no-navbar) .page-content .searchbar,\n.page-with-navbar-large .page-content .searchbar {\n top: 0;\n transform: none;\n}\n.searchbar ~ * {\n --f7-page-searchbar-offset: var(--f7-searchbar-height);\n}\n.page > .toolbar-top ~ .searchbar,\n.ios .page > .toolbar-top-ios ~ .searchbar,\n.md .page > .toolbar-top-md ~ .searchbar {\n top: var(--f7-toolbar-height);\n}\n.page > .tabbar-icons.toolbar-top ~ .searchbar,\n.ios .page > .tabbar-icons.toolbar-top-ios ~ .searchbar,\n.md .page > .tabbar-icons.toolbar-top-md ~ .searchbar {\n top: var(--f7-tabbar-icons-height);\n}\n.page > .navbar ~ .toolbar-top ~ .searchbar,\n.ios .page > .navbar ~ .toolbar-top-ios ~ .searchbar,\n.md .page > .navbar ~ .toolbar-top-md ~ .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-toolbar-height) + var(--f7-safe-area-top));\n}\n.page > .navbar ~ .tabbar-icons.toolbar-top ~ .searchbar,\n.ios .page > .navbar ~ .tabbar-icons.toolbar-top-ios ~ .searchbar,\n.md .page > .navbar ~ .tabbar-icons.toolbar-top-md ~ .searchbar {\n top: calc(var(--f7-navbar-height) + var(--f7-tabbar-icons-height) + var(--f7-safe-area-top));\n}\n.searchbar.searchbar-inline {\n width: auto;\n height: auto;\n background-color: transparent;\n background-image: none;\n}\n.searchbar.searchbar-inline:after,\n.searchbar.searchbar-inline:before {\n display: none !important;\n}\n.searchbar.searchbar-inline .searchbar-input-wrap {\n height: var(--f7-searchbar-inline-input-height, var(--f7-searchbar-input-height));\n}\n.searchbar.searchbar-inline .searchbar-inner {\n padding: 0;\n position: static;\n width: auto;\n height: auto;\n}\n.searchbar.searchbar-inline input[type='text'],\n.searchbar.searchbar-inline input[type='search'] {\n font-size: var(--f7-searchbar-inline-input-font-size, var(--f7-searchbar-input-font-size));\n border-radius: var(--f7-searchbar-inline-input-border-radius, var(--f7-searchbar-input-border-radius));\n padding-left: calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-left, 0px));\n padding-right: calc(var(--f7-searchbar-inline-input-padding-horizontal, var(--f7-searchbar-input-padding-horizontal)) + var(--f7-searchbar-input-extra-padding-right, 0px));\n}\n.ios .searchbar input[type='search'],\n.ios .searchbar input[type='text'] {\n z-index: 30;\n}\n.ios .searchbar .input-clear-button {\n z-index: 40;\n right: 7px;\n}\n.ios .searchbar-icon {\n width: 13px;\n height: 13px;\n position: absolute;\n top: 50%;\n margin-top: -6px;\n z-index: 40;\n left: 8px;\n}\n.ios .searchbar-icon:after {\n content: 'search_ios';\n line-height: 13px;\n}\n.ios .searchbar-disable-button {\n font-size: 17px;\n flex-shrink: 0;\n transform: translate3d(0, 0, 0);\n transition-duration: 300ms;\n color: var(--f7-searchbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n display: none;\n}\n.ios .searchbar-disable-button.active-state {\n transition-duration: 0ms;\n opacity: 0.3 !important;\n}\n.ios .searchbar-enabled .searchbar-disable-button {\n pointer-events: auto;\n opacity: 1;\n margin-left: 8px;\n}\n.ios .searchbar:not(.searchbar-enabled) .searchbar-disable-button {\n transition-duration: 300ms !important;\n}\n.ios .searchbar-expandable {\n left: 0;\n bottom: 0;\n opacity: 1;\n width: 100%;\n height: 0%;\n transform: translate3d(0, 0, 0);\n overflow: hidden;\n}\n.ios .searchbar-expandable .searchbar-disable-button {\n margin-left: 8px;\n opacity: 1;\n display: block;\n}\n.ios .searchbar-expandable .searchbar-inner {\n height: var(--f7-searchbar-expandable-size);\n}\n.ios .navbar.with-searchbar-expandable-enabled .navbar-bg,\n.ios .navbar.with-searchbar-expandable-closing .navbar-bg {\n transition-property: transform, opacity;\n}\n.ios .navbar.with-searchbar-expandable-enabled .navbar-bg,\n.ios .navbar.with-searchbar-expandable-closing .navbar-bg,\n.ios .navbar.with-searchbar-expandable-enabled .left,\n.ios .navbar.with-searchbar-expandable-closing .left,\n.ios .navbar.with-searchbar-expandable-enabled .title,\n.ios .navbar.with-searchbar-expandable-closing .title,\n.ios .navbar.with-searchbar-expandable-enabled .right,\n.ios .navbar.with-searchbar-expandable-closing .right {\n transition-duration: 300ms;\n}\n.ios .navbar.with-searchbar-expandable-enabled .left,\n.ios .navbar.with-searchbar-expandable-enabled-no-transition .left,\n.ios .navbar.with-searchbar-expandable-enabled .title,\n.ios .navbar.with-searchbar-expandable-enabled-no-transition .title,\n.ios .navbar.with-searchbar-expandable-enabled .right,\n.ios .navbar.with-searchbar-expandable-enabled-no-transition .right {\n transform: translateY(calc(-1 * var(--f7-navbar-height)));\n opacity: 0 !important;\n}\n.ios .searchbar-expandable.searchbar-enabled {\n opacity: 1;\n height: var(--f7-searchbar-expandable-size);\n pointer-events: auto;\n}\n.md .searchbar-icon,\n.md .searchbar-disable-button {\n position: absolute;\n top: 50%;\n transition-duration: 300ms;\n}\n.md .searchbar-icon {\n width: 48px;\n height: 48px;\n left: 0;\n top: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n left: var(--f7-safe-area-left);\n}\n.md .searchbar-icon:after {\n width: auto;\n height: auto;\n content: 'search_md';\n line-height: 1.2;\n}\n.md .searchbar-disable-button {\n width: 48px;\n height: 48px;\n transform: rotate(-90deg) scale(0.5);\n font-size: 0 !important;\n display: block;\n margin-top: -24px;\n color: var(--f7-searchbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n left: calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left));\n}\n.md .searchbar-disable-button:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n line-height: 48px;\n content: 'arrow_left_md';\n}\n.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-disable-button {\n transform: rotate(0deg) scale(1);\n pointer-events: auto;\n opacity: 1;\n}\n.md .searchbar-enabled:not(.searchbar-enabled-no-disable-button) .searchbar-icon {\n opacity: 0;\n transform: rotate(90deg) scale(0.5);\n}\n.md .searchbar {\n --f7-searchbar-input-extra-padding-left: 34px;\n}\n.md .searchbar .input-clear-button {\n width: 48px;\n height: 48px;\n margin-top: -24px;\n right: 0;\n}\n.md .searchbar .input-clear-button:after {\n line-height: 48px;\n content: 'delete_round_md';\n opacity: 1;\n}\n.md .searchbar .input-clear-button:before {\n display: none;\n}\n.md .searchbar-inline {\n --f7-searchbar-input-extra-padding-left: 32px;\n}\n.md .page > .searchbar,\n.md .subnavbar .searchbar,\n.md .searchbar-expandable {\n --f7-searchbar-input-extra-padding-left: 34px;\n}\n.md .page > .searchbar .searchbar-disable-button,\n.md .subnavbar .searchbar .searchbar-disable-button,\n.md .searchbar-expandable .searchbar-disable-button {\n left: calc(var(--f7-searchbar-inner-padding-left) + var(--f7-safe-area-left));\n}\n.md .page > .searchbar .searchbar-icon,\n.md .subnavbar .searchbar .searchbar-icon,\n.md .searchbar-expandable .searchbar-icon {\n left: var(--f7-safe-area-left);\n}\n.md .searchbar-expandable {\n --f7-searchbar-inner-padding-left: 4px;\n --f7-searchbar-inner-padding-right: 4px;\n height: var(--f7-searchbar-expandable-size);\n opacity: 0;\n bottom: 0;\n border-radius: calc(var(--f7-searchbar-expandable-size));\n width: calc(var(--f7-searchbar-expandable-size));\n margin-top: calc(var(--f7-searchbar-expandable-size) * -1 / 2);\n transform: translate3d(0px, 0px, 0px);\n background-color: var(--f7-searchbar-input-bg-color);\n left: 100%;\n margin-left: calc(var(--f7-searchbar-expandable-size) * -1);\n}\n.md .searchbar-expandable.searchbar-enabled {\n width: 100%;\n border-radius: 0;\n opacity: 1;\n pointer-events: auto;\n margin-top: 0;\n left: 0;\n margin-left: 0;\n}\n/* === Messages === */\n:root {\n --f7-message-text-header-opacity: 0.65;\n --f7-message-text-header-font-size: 12px;\n --f7-message-text-footer-opacity: 0.65;\n --f7-message-text-footer-font-size: 12px;\n --f7-message-bubble-line-height: 1.2;\n --f7-message-header-font-size: 12px;\n --f7-message-footer-font-size: 11px;\n --f7-message-name-font-size: 12px;\n --f7-message-name-font-weight: inherit;\n --f7-message-avatar-border-radius: 50%;\n --f7-messages-title-font-weight: inherit;\n --f7-message-typing-indicator-bg-color: #000;\n}\n:root .dark,\n:root.dark {\n --f7-message-typing-indicator-bg-color: #fff;\n}\n.ios {\n --f7-message-text-header-text-color: inherit;\n --f7-message-text-footer-text-color: inherit;\n --f7-messages-title-font-size: 11px;\n --f7-message-avatar-size: 29px;\n --f7-message-margin: 10px;\n --f7-message-bubble-min-height: 32px;\n --f7-message-bubble-font-size: 17px;\n --f7-message-bubble-border-radius: 16px;\n --f7-message-bubble-padding-vertical: 6px;\n --f7-message-bubble-padding-horizontal: 16px;\n --f7-message-typing-indicator-opacity: 0.35;\n /*\n --f7-message-sent-bg-color: var(--f7-theme-color);\n */\n --f7-message-sent-text-color: #fff;\n --f7-messages-content-bg-color: #fff;\n --f7-message-received-text-color: #000;\n --f7-message-received-bg-color: #e5e5ea;\n --f7-messages-title-text-color: rgba(0, 0, 0, 0.45);\n --f7-message-header-text-color: rgba(0, 0, 0, 0.45);\n --f7-message-footer-text-color: rgba(0, 0, 0, 0.45);\n --f7-message-name-text-color: rgba(0, 0, 0, 0.45);\n}\n.ios .dark,\n.ios.dark {\n --f7-message-received-bg-color: #252525;\n --f7-message-received-text-color: #fff;\n --f7-messages-content-bg-color: transparent;\n --f7-messages-title-text-color: rgba(255, 255, 255, 0.54);\n --f7-message-header-text-color: rgba(255, 255, 255, 0.54);\n --f7-message-name-text-color: rgba(255, 255, 255, 0.54);\n --f7-message-footer-text-color: rgba(255, 255, 255, 0.54);\n}\n.md {\n --f7-messages-content-bg-color: transparent;\n --f7-messages-title-font-size: 12px;\n --f7-message-avatar-size: 32px;\n --f7-message-margin: 16px;\n --f7-message-bubble-min-height: 40px;\n --f7-message-bubble-font-size: 16px;\n --f7-message-bubble-border-radius: 20px;\n --f7-message-bubble-padding-vertical: 10px;\n --f7-message-bubble-padding-horizontal: 16px;\n --f7-message-typing-indicator-opacity: 0.6;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-message-sent-bg-color: var(--f7-md-primary);\n --f7-message-sent-text-color: var(--f7-md-on-primary);\n --f7-message-received-bg-color: var(--f7-md-surface-variant);\n --f7-message-received-text-color: var(--f7-md-on-surface);\n --f7-message-text-header-text-color: var(--f7-md-on-surface-variant);\n --f7-message-text-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-messages-title-text-color: var(--f7-md-on-surface-variant);\n --f7-message-header-text-color: var(--f7-md-on-surface-variant);\n --f7-message-footer-text-color: var(--f7-md-on-surface-variant);\n --f7-message-name-text-color: var(--f7-md-on-surface-variant);\n}\n.messages-content,\n.messages {\n background: var(--f7-messages-content-bg-color);\n}\n.messages {\n display: flex;\n flex-direction: column;\n min-height: 100%;\n position: relative;\n z-index: 1;\n}\n.messages-title,\n.message {\n margin-top: var(--f7-message-margin);\n}\n.messages-title:last-child,\n.message:last-child {\n margin-bottom: var(--f7-message-margin);\n}\n.messages-title {\n text-align: center;\n width: 100%;\n line-height: 1;\n color: var(--f7-messages-title-text-color);\n font-size: var(--f7-messages-title-font-size);\n font-weight: var(--f7-messages-title-font-weight);\n}\n.message {\n max-width: 70%;\n box-sizing: border-box;\n display: flex;\n align-items: flex-end;\n position: relative;\n z-index: 1;\n transform: translate3d(0, 0, 0);\n}\n.message-avatar {\n border-radius: var(--f7-message-avatar-border-radius);\n position: relative;\n background-size: cover;\n align-self: flex-end;\n flex-shrink: 0;\n width: var(--f7-message-avatar-size);\n height: var(--f7-message-avatar-size);\n}\n.message-content {\n position: relative;\n display: flex;\n flex-direction: column;\n}\n.message-header,\n.message-footer,\n.message-name {\n line-height: 1;\n}\n.message-header {\n color: var(--f7-message-header-text-color);\n font-size: var(--f7-message-header-font-size);\n}\n.message-footer {\n color: var(--f7-message-footer-text-color);\n font-size: var(--f7-message-footer-font-size);\n margin-bottom: -1em;\n}\n.message-name {\n color: var(--f7-message-name-text-color);\n font-size: var(--f7-message-name-font-size);\n font-weight: var(--f7-message-name-font-weight);\n}\n.message-bubble {\n box-sizing: border-box;\n word-break: break-word;\n display: flex;\n flex-direction: column;\n position: relative;\n line-height: var(--f7-message-bubble-line-height);\n font-size: var(--f7-message-bubble-font-size);\n border-radius: var(--f7-message-bubble-border-radius);\n padding: var(--f7-message-bubble-padding-vertical) var(--f7-message-bubble-padding-horizontal);\n min-height: var(--f7-message-bubble-min-height);\n}\n.message-image img {\n display: block;\n max-width: 100%;\n height: auto;\n width: auto;\n}\n.message-text-header,\n.message-text-footer {\n line-height: 1;\n}\n.message-text-header {\n color: var(--f7-message-text-header-text-color);\n opacity: var(--f7-message-text-header-opacity);\n font-size: var(--f7-message-text-header-font-size);\n}\n.message-text-footer {\n color: var(--f7-message-text-footer-text-color);\n opacity: var(--f7-message-text-footer-opacity);\n font-size: var(--f7-message-text-footer-font-size);\n}\n.message-text {\n text-align: left;\n}\n.message-sent {\n text-align: right;\n flex-direction: row-reverse;\n align-self: flex-end;\n}\n.message-sent .message-bubble {\n color: var(--f7-message-sent-text-color);\n background: var(--f7-message-sent-bg-color, var(--f7-theme-color));\n}\n.message-sent .message-content {\n align-items: flex-end;\n}\n.message-received {\n flex-direction: row;\n}\n.message-received .message-bubble {\n color: var(--f7-message-received-text-color);\n background: var(--f7-message-received-bg-color);\n}\n.message-received .message-content {\n align-items: flex-start;\n}\n.message:not(.message-last) .message-avatar {\n opacity: 0;\n}\n.message:not(.message-first) .message-name {\n display: none;\n}\n.message.message-same-name .message-name {\n display: none;\n}\n.message.message-same-header .message-header {\n display: none;\n}\n.message.message-same-footer .message-footer {\n display: none;\n}\n.message-appear-from-bottom {\n animation: message-appear-from-bottom 300ms;\n}\n.message-appear-from-top {\n animation: message-appear-from-top 300ms;\n}\n.message-typing-indicator {\n display: inline-block;\n font-size: 0;\n vertical-align: middle;\n}\n.message-typing-indicator > div {\n display: inline-block;\n position: relative;\n background: var(--f7-message-typing-indicator-bg-color);\n opacity: var(--f7-message-typing-indicator-opacity);\n vertical-align: middle;\n border-radius: 50%;\n}\n@keyframes message-appear-from-bottom {\n from {\n transform: translate3d(0, 100%, 0);\n }\n to {\n transform: translate3d(0, 0, 0);\n }\n}\n@keyframes message-appear-from-top {\n from {\n transform: translate3d(0, -100%, 0);\n }\n to {\n transform: translate3d(0, 0, 0);\n }\n}\n.ios .messages-title b,\n.ios .message-header b,\n.ios .message-footer b,\n.ios .message-name b {\n font-weight: 600;\n}\n.ios .message-header,\n.ios .message-name {\n margin-bottom: 3px;\n}\n.ios .message-footer {\n margin-top: 3px;\n}\n.ios .message-bubble {\n min-width: 48px;\n}\n.ios .message-image {\n margin: var(--f7-message-bubble-padding-vertical) calc(-1 * var(--f7-message-bubble-padding-horizontal));\n}\n.ios .message-image:first-child {\n margin-top: calc(-1 * var(--f7-message-bubble-padding-vertical));\n}\n.ios .message-image:first-child img {\n border-top-left-radius: var(--f7-message-bubble-border-radius);\n border-top-right-radius: var(--f7-message-bubble-border-radius);\n}\n.ios .message-image:last-child {\n margin-bottom: calc(-1 * var(--f7-message-bubble-padding-vertical));\n}\n.ios .message-image:last-child img {\n border-bottom-left-radius: var(--f7-message-bubble-border-radius);\n border-bottom-right-radius: var(--f7-message-bubble-border-radius);\n}\n.ios .message-text-header {\n margin-bottom: 3px;\n}\n.ios .message-text-footer {\n margin-top: 3px;\n}\n.ios .message-received {\n margin-left: calc(10px + var(--f7-safe-area-left));\n}\n.ios .message-received .message-header,\n.ios .message-received .message-footer,\n.ios .message-received .message-name {\n margin-left: var(--f7-message-bubble-padding-horizontal);\n}\n.ios .message-received .message-bubble {\n padding-left: calc(var(--f7-message-bubble-padding-horizontal) + 6px);\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 42% 46% 56%;\n}\n.ios .message-received .message-image {\n margin-left: calc(-1 * (var(--f7-message-bubble-padding-horizontal) + 6px));\n}\n.ios .message-received.message-tail .message-bubble {\n border-radius: var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0;\n}\n.ios .message-received.message-tail:not(.message-typing) .message-bubble {\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 42% 46% 56%;\n}\n.ios .message-received.message-tail:not(.message-typing) .message-bubble .message-image:last-child img {\n border-bottom-left-radius: 0px;\n}\n.ios .message-sent {\n margin-right: calc(10px + var(--f7-safe-area-right));\n}\n.ios .message-sent .message-header,\n.ios .message-sent .message-footer,\n.ios .message-sent .message-name {\n margin-right: var(--f7-message-bubble-padding-horizontal);\n}\n.ios .message-sent .message-bubble {\n padding-right: calc(var(--f7-message-bubble-padding-horizontal) + 6px);\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 56% 46% 42%;\n}\n.ios .message-sent .message-image {\n margin-right: calc(-1 * (var(--f7-message-bubble-padding-horizontal) + 6px));\n}\n.ios .message-sent.message-tail .message-bubble {\n border-radius: var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0 var(--f7-message-bubble-border-radius);\n}\n.ios .message-sent.message-tail .message-bubble {\n -webkit-mask-box-image: url(\"data:image/svg+xml;charset=utf-8,\") 50% 56% 46% 42%;\n}\n.ios .message-sent.message-tail .message-bubble .message-image:last-child img {\n border-bottom-right-radius: 0px;\n}\n.ios .message + .message:not(.message-first) {\n margin-top: 1px;\n}\n.ios .message-received.message-typing .message-content:after,\n.ios .message-received.message-typing .message-content:before {\n content: '';\n position: absolute;\n background: var(--f7-message-received-bg-color);\n border-radius: 50%;\n}\n.ios .message-received.message-typing .message-content:after {\n width: 11px;\n height: 11px;\n left: 4px;\n bottom: 0px;\n}\n.ios .message-received.message-typing .message-content:before {\n width: 6px;\n height: 6px;\n left: -1px;\n bottom: -4px;\n}\n.ios .message-typing-indicator > div {\n width: 9px;\n height: 9px;\n}\n.ios .message-typing-indicator > div + div {\n margin-left: 4px;\n}\n.ios .message-typing-indicator > div:nth-child(1) {\n animation: ios-message-typing-indicator 900ms infinite;\n}\n.ios .message-typing-indicator > div:nth-child(2) {\n animation: ios-message-typing-indicator 900ms 150ms infinite;\n}\n.ios .message-typing-indicator > div:nth-child(3) {\n animation: ios-message-typing-indicator 900ms 300ms infinite;\n}\n@keyframes ios-message-typing-indicator {\n 0% {\n opacity: 0.35;\n }\n 25% {\n opacity: 0.2;\n }\n 50% {\n opacity: 0.2;\n }\n}\n.md .messages-title b,\n.md .message-header b,\n.md .message-footer b,\n.md .message-name b {\n font-weight: 500;\n}\n.md .message-header,\n.md .message-name {\n margin-bottom: 2px;\n}\n.md .message-footer {\n margin-top: 2px;\n}\n.md .message-text-header {\n margin-bottom: 4px;\n}\n.md .message-text-footer {\n margin-top: 4px;\n}\n.md .message-image {\n margin: calc(-1 * var(--f7-message-bubble-padding-vertical)) calc(-1 * var(--f7-message-bubble-padding-horizontal));\n}\n.md .message-image,\n.md .message-image img {\n border-radius: var(--f7-message-bubble-border-radius);\n}\n.md .message-received {\n margin-left: calc(8px + var(--f7-safe-area-left));\n}\n.md .message-received .message-name,\n.md .message-received .message-header,\n.md .message-received .message-footer {\n margin-left: 16px;\n}\n.md .message-received.message-first:not(.message-last) .message-bubble,\n.md .message-received.message-first:not(.message-last) .message-image,\n.md .message-received.message-first:not(.message-last) .message-image img {\n border-bottom-left-radius: 4px;\n}\n.md .message-received.message-last:not(.message-first) .message-bubble,\n.md .message-received.message-last:not(.message-first) .message-image,\n.md .message-received.message-last:not(.message-first) .message-image img {\n border-top-left-radius: 4px;\n}\n.md .message-received:not(.message-last):not(.message-first) .message-bubble,\n.md .message-received:not(.message-last):not(.message-first) .message-image,\n.md .message-received:not(.message-last):not(.message-first) .message-image img {\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.md .message-received .message-avatar + .message-content {\n margin-left: 8px;\n}\n.md .message-sent {\n margin-right: calc(8px + var(--f7-safe-area-right));\n}\n.md .message-sent .message-name,\n.md .message-sent .message-header,\n.md .message-sent .message-footer {\n margin-right: 16px;\n}\n.md .message-sent.message-first:not(.message-last) .message-bubble,\n.md .message-sent.message-first:not(.message-last) .message-image,\n.md .message-sent.message-first:not(.message-last) .message-image img {\n border-bottom-right-radius: 4px;\n}\n.md .message-sent.message-last:not(.message-first) .message-bubble,\n.md .message-sent.message-last:not(.message-first) .message-image,\n.md .message-sent.message-last:not(.message-first) .message-image img {\n border-top-right-radius: 4px;\n}\n.md .message-sent:not(.message-last):not(.message-first) .message-bubble,\n.md .message-sent:not(.message-last):not(.message-first) .message-image,\n.md .message-sent:not(.message-last):not(.message-first) .message-image img {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.md .message-sent .message-avatar + .message-content {\n margin-right: var(--f7-message-bubble-padding-horizontal);\n}\n.md .message + .message:not(.message-first) {\n margin-top: 2px;\n}\n.md .message-typing-indicator > div {\n width: 6px;\n height: 6px;\n}\n.md .message-typing-indicator > div + div {\n margin-left: 6px;\n}\n.md .message-typing-indicator > div:nth-child(1) {\n animation: md-message-typing-indicator 900ms infinite;\n}\n.md .message-typing-indicator > div:nth-child(2) {\n animation: md-message-typing-indicator 900ms 150ms infinite;\n}\n.md .message-typing-indicator > div:nth-child(3) {\n animation: md-message-typing-indicator 900ms 300ms infinite;\n}\n@keyframes md-message-typing-indicator {\n 0% {\n transform: translateY(0%);\n }\n 25% {\n transform: translateY(-5px);\n }\n 50% {\n transform: translateY(0%);\n }\n}\n/* === Messagebar === */\n:root {\n --f7-messagebar-attachments-height: 155px;\n --f7-messagebar-sheet-height: 252px;\n --f7-messagebar-sheet-landscape-height: 192px;\n /*\n --f7-messagebar-inner-padding-left: var(--f7-toolbar-inner-padding-left);\n --f7-messagebar-inner-padding-right: var(--f7-toolbar-inner-padding-right);\n */\n}\n.ios {\n --f7-messagebar-height: 44px;\n --f7-messagebar-font-size: 17px;\n --f7-messagebar-textarea-bg-color: transparent;\n /*\n --f7-messagebar-link-color: var(--f7-theme-color);\n */\n --f7-messagebar-border-color: transparent;\n --f7-messagebar-textarea-border-radius: 17px;\n --f7-messagebar-textarea-padding: 6px 16px;\n --f7-messagebar-textarea-height: 34px;\n --f7-messagebar-textarea-font-size: 17px;\n --f7-messagebar-textarea-line-height: 20px;\n --f7-messagebar-sheet-bg-color: #d1d5da;\n --f7-messagebar-sheet-border-color: transparent;\n --f7-messagebar-attachment-border-radius: 12px;\n --f7-messagebar-attachment-height: 155px;\n --f7-messagebar-attachment-landscape-height: 120px;\n --f7-messagebar-textarea-placeholder-color: rgba(0, 0, 0, 0.4);\n --f7-messagebar-textarea-text-color: #000;\n --f7-messagebar-textarea-border: 1px solid #c8c8cd;\n --f7-messagebar-attachments-border-color: #c8c8cd;\n --f7-messagebar-bg-color: #fff;\n --f7-messagebar-bg-color-rgb: 255, 255, 255;\n}\n.ios .dark,\n.ios.dark {\n --f7-messagebar-textarea-placeholder-color: rgba(255, 255, 255, 0.4);\n --f7-messagebar-textarea-text-color: #fff;\n --f7-messagebar-textarea-border: 1px solid var(--f7-bars-border-color);\n --f7-messagebar-attachments-border-color: var(--f7-bars-border-color);\n --f7-messagebar-bg-color: var(--f7-bars-bg-color);\n --f7-messagebar-bg-color-rgb: var(--f7-bars-bg-color-rgb);\n}\n.md {\n --f7-messagebar-height: 64px;\n --f7-messagebar-font-size: 16px;\n --f7-messagebar-textarea-border-radius: 24px;\n --f7-messagebar-textarea-padding: 12px 16px;\n --f7-messagebar-textarea-height: 48px;\n --f7-messagebar-textarea-font-size: 16px;\n --f7-messagebar-textarea-line-height: 22px;\n --f7-messagebar-textarea-border: 1px solid transparent;\n --f7-messagebar-attachment-border-radius: 12px;\n --f7-messagebar-attachment-height: 72px;\n --f7-messagebar-attachment-landscape-height: 72px;\n --f7-messagebar-border-color: transparent;\n --f7-messagebar-attachments-border-color: transparent;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-messagebar-textarea-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-messagebar-textarea-bg-color: var(--f7-md-surface-variant);\n --f7-messagebar-bg-color: var(--f7-md-surface);\n --f7-messagebar-textarea-text-color: var(--f7-md-on-surface);\n --f7-messagebar-sheet-bg-color: var(--f7-md-surface);\n --f7-messagebar-sheet-border-color: var(--f7-md-outline-variant);\n --f7-messagebar-link-color: var(--f7-md-on-surface);\n}\n.messagebar {\n transform: translate3d(0, 0, 0);\n background: var(--f7-messagebar-bg-color);\n height: auto;\n min-height: var(--f7-messagebar-height);\n font-size: var(--f7-messagebar-font-size);\n padding-bottom: var(--f7-safe-area-bottom);\n bottom: 0;\n}\n.messagebar:before {\n content: '';\n position: absolute;\n background-color: var(--f7-messagebar-border-color);\n display: block;\n z-index: 15;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 0%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .messagebar {\n background-color: rgba(var(--f7-messagebar-bg-color-rgb), var(--f7-bars-translucent-opacity));\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.messagebar.no-outline:before {\n display: none !important;\n}\n.messagebar.toolbar-hidden:after {\n display: none !important;\n}\n.messagebar .toolbar-inner {\n top: auto;\n position: relative;\n height: auto;\n bottom: auto;\n padding-left: calc(var(--f7-messagebar-inner-padding-left, var(--f7-toolbar-inner-padding-left)) + var(--f7-safe-area-left));\n padding-right: calc(var(--f7-messagebar-inner-padding-right, var(--f7-toolbar-inner-padding-right)) + var(--f7-safe-area-right));\n}\n.messagebar.messagebar-sheet-visible > .toolbar-inner {\n bottom: 0;\n}\n.messagebar .messagebar-area {\n width: 100%;\n flex-shrink: 1;\n overflow: hidden;\n position: relative;\n}\n.messagebar textarea {\n width: 100%;\n flex-shrink: 1;\n background-color: var(--f7-messagebar-textarea-bg-color);\n border-radius: var(--f7-messagebar-textarea-border-radius);\n padding: var(--f7-messagebar-textarea-padding);\n height: var(--f7-messagebar-textarea-height);\n color: var(--f7-messagebar-textarea-text-color);\n font-size: var(--f7-messagebar-textarea-font-size);\n line-height: var(--f7-messagebar-textarea-line-height);\n border: var(--f7-messagebar-textarea-border);\n}\n.messagebar textarea::placeholder {\n color: var(--f7-messagebar-textarea-placeholder-color);\n}\n.messagebar a.link {\n align-self: flex-end;\n flex-shrink: 0;\n color: var(--f7-messagebar-link-color, var(--f7-theme-color));\n}\n.messagebar-attachments {\n width: 100%;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n font-size: 0;\n white-space: nowrap;\n box-sizing: border-box;\n position: relative;\n}\n.messagebar:not(.messagebar-attachments-visible) .messagebar-attachments {\n display: none;\n}\n.messagebar-attachment {\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n display: inline-block;\n vertical-align: middle;\n white-space: normal;\n height: var(--f7-messagebar-attachment-height);\n position: relative;\n border-radius: var(--f7-messagebar-attachment-border-radius);\n}\n@media (orientation: landscape) {\n .messagebar-attachment {\n height: var(--f7-messagebar-attachment-landscape-height);\n }\n}\n.messagebar-attachment img {\n display: block;\n width: auto;\n height: 100%;\n border-radius: var(--f7-messagebar-attachment-border-radius);\n}\n.messagebar-sheet {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n display: flex;\n flex-wrap: wrap;\n flex-direction: column;\n align-content: flex-start;\n height: var(--f7-messagebar-sheet-height);\n background-color: var(--f7-messagebar-sheet-bg-color);\n border-top: 1px solid var(--f7-messagebar-sheet-border-color);\n padding-left: var(--f7-safe-area-left);\n padding-right: var(--f7-safe-area-right);\n}\n@media (orientation: landscape) {\n .messagebar-sheet {\n height: var(--f7-messagebar-sheet-landscape-height);\n }\n}\n.messagebar-sheet-image {\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n}\n.messagebar-sheet-image > img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n border-radius: inherit;\n transition-duration: 200ms;\n}\n.messagebar-attachment-delete {\n display: block;\n position: absolute;\n border-radius: 50%;\n box-sizing: border-box;\n cursor: pointer;\n}\n.messagebar-attachment-delete:after,\n.messagebar-attachment-delete:before {\n position: absolute;\n content: '';\n left: 50%;\n top: 50%;\n}\n.messagebar-attachment-delete:after {\n transform: rotate(45deg);\n}\n.messagebar-attachment-delete:before {\n transform: rotate(-45deg);\n}\n.messagebar:not(.messagebar-sheet-visible) .messagebar-sheet {\n display: none;\n}\n.messagebar ~ * {\n --f7-page-toolbar-bottom-offset: var(--f7-messagebar-height);\n}\n.ios .messagebar a.link.icon-only:first-child {\n margin-left: -8px;\n}\n.ios .messagebar a.link.icon-only:last-child {\n margin-right: -8px;\n}\n.ios .messagebar a.link:not(.icon-only) + .messagebar-area {\n margin-left: 8px;\n}\n.ios .messagebar .messagebar-area + a.link:not(.icon-only) {\n margin-left: 8px;\n}\n.ios .messagebar-area {\n margin-top: 5px;\n margin-bottom: 5px;\n}\n.ios .messagebar-attachments {\n padding: 5px;\n border-radius: var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;\n border: 1px solid var(--f7-messagebar-attachments-border-color);\n border-bottom: none;\n}\n.ios .messagebar-attachments-visible .messagebar-attachments + textarea {\n border-radius: 0 0 var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius);\n}\n.ios .messagebar-attachment {\n font-size: 14px;\n}\n.ios .messagebar-attachment + .messagebar-attachment {\n margin-left: 8px;\n}\n.ios .messagebar-attachment-delete {\n right: 5px;\n top: 5px;\n width: 20px;\n height: 20px;\n background: #7d7e80;\n border: 2px solid #fff;\n box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);\n}\n.ios .messagebar-attachment-delete:after,\n.ios .messagebar-attachment-delete:before {\n width: 10px;\n height: 2px;\n background: #fff;\n margin-left: -5px;\n margin-top: -1px;\n}\n.ios .messagebar-sheet-image,\n.ios .messagebar-sheet-item {\n box-sizing: border-box;\n flex-shrink: 0;\n margin-top: 1px;\n position: relative;\n overflow: hidden;\n height: calc((var(--f7-messagebar-sheet-height) - 2px) / 2);\n width: calc((var(--f7-messagebar-sheet-height) - 2px) / 2);\n margin-left: 1px;\n}\n@media (orientation: landscape) {\n .ios .messagebar-sheet-image,\n .ios .messagebar-sheet-item {\n width: calc((var(--f7-messagebar-sheet-landscape-height) - 2px) / 2);\n height: calc((var(--f7-messagebar-sheet-landscape-height) - 2px) / 2);\n }\n}\n.ios .messagebar-sheet-image .icon-checkbox,\n.ios .messagebar-sheet-item .icon-checkbox,\n.ios .messagebar-sheet-image .icon-radio,\n.ios .messagebar-sheet-item .icon-radio {\n position: absolute;\n right: 8px;\n bottom: 8px;\n z-index: 1;\n}\n.md .messagebar {\n --f7-toolbar-link-height: var(--f7-messagebar-height);\n}\n.md .messagebar-attachments {\n padding: 16px 16px 0;\n border-bottom: 1px solid var(--f7-messagebar-attachments-border-color);\n}\n.md .messagebar-attachment img {\n width: var(--f7-messagebar-attachment-height);\n height: var(--f7-messagebar-attachment-height);\n object-fit: cover;\n object-position: center;\n}\n.md .messagebar-attachment + .messagebar-attachment {\n margin-left: 16px;\n}\n.md .messagebar-attachments-visible .messagebar-attachments {\n background: var(--f7-messagebar-textarea-bg-color);\n border-radius: var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;\n}\n.md .messagebar-attachments-visible textarea {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.md .messagebar-area {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.md .messagebar-attachment-delete {\n right: -6px;\n top: -6px;\n width: 24px;\n height: 24px;\n background-color: var(--f7-md-inverse-surface);\n border-radius: 24px;\n border: 2px solid var(--f7-messagebar-textarea-bg-color);\n}\n.md .messagebar-attachment-delete:after,\n.md .messagebar-attachment-delete:before {\n width: 12px;\n height: 2px;\n background: var(--f7-messagebar-textarea-bg-color);\n margin-left: -6px;\n margin-top: -1px;\n}\n.md .messagebar-sheet-image,\n.md .messagebar-sheet-item {\n --f7-touch-ripple-color: transparent;\n box-sizing: border-box;\n flex-shrink: 0;\n margin-top: 8px;\n position: relative;\n overflow: hidden;\n height: calc((var(--f7-messagebar-sheet-height) - 24px) / 2);\n width: calc((var(--f7-messagebar-sheet-height) - 24px) / 2);\n border-radius: 4px;\n margin-left: 8px;\n}\n@media (orientation: landscape) {\n .md .messagebar-sheet-image,\n .md .messagebar-sheet-item {\n width: calc((var(--f7-messagebar-sheet-landscape-height) - 8px) / 2);\n height: calc((var(--f7-messagebar-sheet-landscape-height) - 24px) / 2);\n }\n}\n.md .messagebar-sheet-image input:checked ~ img,\n.md .messagebar-sheet-item input:checked ~ img {\n transform: scale(0.85);\n}\n.md .messagebar-sheet-image input:checked ~ .icon-checkbox,\n.md .messagebar-sheet-item input:checked ~ .icon-checkbox,\n.md .messagebar-sheet-image input:checked ~ .icon-radio,\n.md .messagebar-sheet-item input:checked ~ .icon-radio {\n transform: translate(-50%, -50%) scale(1);\n}\n.md .messagebar-sheet-image .icon-checkbox,\n.md .messagebar-sheet-item .icon-checkbox,\n.md .messagebar-sheet-image .icon-radio,\n.md .messagebar-sheet-item .icon-radio {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%) scale(0.85);\n border: none;\n z-index: 1;\n --f7-checkbox-inactive-color: var(--f7-md-surface);\n --f7-checkbox-active-color: var(--f7-md-surface);\n}\n.md .messagebar-sheet-image .icon-checkbox::after,\n.md .messagebar-sheet-item .icon-checkbox::after,\n.md .messagebar-sheet-image .icon-radio::after,\n.md .messagebar-sheet-item .icon-radio::after {\n color: var(--f7-md-on-surface);\n font-size: 18px;\n width: auto;\n height: 100%;\n line-height: 32px;\n left: 0;\n position: static;\n}\n/* === Swiper === */\n/**\n * Swiper 10.2.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: August 17, 2023\n */\n\n/* FONT_START */\n@font-face {\n font-family: 'swiper-icons';\n src: url('data:application/font-woff;charset=utf-8;base64, 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');\n font-weight: 400;\n font-style: normal;\n}\n/* FONT_END */\n:root {\n --swiper-theme-color: #007aff;\n /*\n --swiper-preloader-color: var(--swiper-theme-color);\n --swiper-wrapper-transition-timing-function: initial;\n */\n}\n:host {\n position: relative;\n display: block;\n margin-left: auto;\n margin-right: auto;\n z-index: 1;\n}\n.swiper {\n margin-left: auto;\n margin-right: auto;\n position: relative;\n overflow: hidden;\n overflow: clip;\n list-style: none;\n padding: 0;\n /* Fix of Webkit flickering */\n z-index: 1;\n display: block;\n}\n.swiper-vertical > .swiper-wrapper {\n flex-direction: column;\n}\n.swiper-wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n z-index: 1;\n display: flex;\n transition-property: transform;\n transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial);\n box-sizing: content-box;\n}\n.swiper-android .swiper-slide,\n.swiper-ios .swiper-slide,\n.swiper-wrapper {\n transform: translate3d(0px, 0, 0);\n}\n.swiper-horizontal {\n touch-action: pan-y;\n}\n.swiper-vertical {\n touch-action: pan-x;\n}\n.swiper-slide {\n flex-shrink: 0;\n width: 100%;\n height: 100%;\n position: relative;\n transition-property: transform;\n display: block;\n}\n.swiper-slide-invisible-blank {\n visibility: hidden;\n}\n/* Auto Height */\n.swiper-autoheight,\n.swiper-autoheight .swiper-slide {\n height: auto;\n}\n.swiper-autoheight .swiper-wrapper {\n align-items: flex-start;\n transition-property: transform, height;\n}\n.swiper-backface-hidden .swiper-slide {\n transform: translateZ(0);\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n/* 3D Effects */\n.swiper-3d.swiper-css-mode .swiper-wrapper {\n perspective: 1200px;\n}\n.swiper-3d .swiper-wrapper {\n transform-style: preserve-3d;\n}\n.swiper-3d {\n perspective: 1200px;\n}\n.swiper-3d .swiper-slide,\n.swiper-3d .swiper-cube-shadow {\n transform-style: preserve-3d;\n}\n/* CSS Mode */\n.swiper-css-mode > .swiper-wrapper {\n overflow: auto;\n scrollbar-width: none;\n /* For Firefox */\n -ms-overflow-style: none;\n /* For Internet Explorer and Edge */\n}\n.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar {\n display: none;\n}\n.swiper-css-mode > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: start start;\n}\n.swiper-css-mode.swiper-horizontal > .swiper-wrapper {\n scroll-snap-type: x mandatory;\n}\n.swiper-css-mode.swiper-vertical > .swiper-wrapper {\n scroll-snap-type: y mandatory;\n}\n.swiper-css-mode.swiper-free-mode > .swiper-wrapper {\n scroll-snap-type: none;\n}\n.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: none;\n}\n.swiper-css-mode.swiper-centered > .swiper-wrapper::before {\n content: '';\n flex-shrink: 0;\n order: 9999;\n}\n.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: center center;\n scroll-snap-stop: always;\n}\n.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child {\n margin-inline-start: var(--swiper-centered-offset-before);\n}\n.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before {\n height: 100%;\n min-height: 1px;\n width: var(--swiper-centered-offset-after);\n}\n.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child {\n margin-block-start: var(--swiper-centered-offset-before);\n}\n.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before {\n width: 100%;\n min-width: 1px;\n height: var(--swiper-centered-offset-after);\n}\n/* Slide styles start */\n/* 3D Shadows */\n.swiper-3d .swiper-slide-shadow,\n.swiper-3d .swiper-slide-shadow-left,\n.swiper-3d .swiper-slide-shadow-right,\n.swiper-3d .swiper-slide-shadow-top,\n.swiper-3d .swiper-slide-shadow-bottom,\n.swiper-3d .swiper-slide-shadow,\n.swiper-3d .swiper-slide-shadow-left,\n.swiper-3d .swiper-slide-shadow-right,\n.swiper-3d .swiper-slide-shadow-top,\n.swiper-3d .swiper-slide-shadow-bottom {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 10;\n}\n.swiper-3d .swiper-slide-shadow {\n background: rgba(0, 0, 0, 0.15);\n}\n.swiper-3d .swiper-slide-shadow-left {\n background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-right {\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-top {\n background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-3d .swiper-slide-shadow-bottom {\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n}\n.swiper-lazy-preloader {\n width: 42px;\n height: 42px;\n position: absolute;\n left: 50%;\n top: 50%;\n margin-left: -21px;\n margin-top: -21px;\n z-index: 10;\n transform-origin: 50%;\n box-sizing: border-box;\n border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));\n border-radius: 50%;\n border-top-color: transparent;\n}\n.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader,\n.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader {\n animation: swiper-preloader-spin 1s infinite linear;\n}\n.swiper-lazy-preloader-white {\n --swiper-preloader-color: #fff;\n}\n.swiper-lazy-preloader-black {\n --swiper-preloader-color: #000;\n}\n@keyframes swiper-preloader-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n/* Slide styles end */\n.swiper-virtual .swiper-slide {\n -webkit-backface-visibility: hidden;\n transform: translateZ(0);\n}\n.swiper-virtual.swiper-css-mode .swiper-wrapper::after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n pointer-events: none;\n}\n.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after {\n height: 1px;\n width: var(--swiper-virtual-size);\n}\n.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after {\n width: 1px;\n height: var(--swiper-virtual-size);\n}\n:root {\n --swiper-navigation-size: 44px;\n /*\n --swiper-navigation-top-offset: 50%;\n --swiper-navigation-sides-offset: 10px;\n --swiper-navigation-color: var(--swiper-theme-color);\n */\n}\n.swiper-button-prev,\n.swiper-button-next {\n position: absolute;\n top: var(--swiper-navigation-top-offset, 50%);\n width: calc(var(--swiper-navigation-size) / 44 * 27);\n height: var(--swiper-navigation-size);\n margin-top: calc(0px - (var(--swiper-navigation-size) / 2));\n z-index: 10;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--swiper-navigation-color, var(--swiper-theme-color));\n}\n.swiper-button-prev.swiper-button-disabled,\n.swiper-button-next.swiper-button-disabled {\n opacity: 0.35;\n cursor: auto;\n pointer-events: none;\n}\n.swiper-button-prev.swiper-button-hidden,\n.swiper-button-next.swiper-button-hidden {\n opacity: 0;\n cursor: auto;\n pointer-events: none;\n}\n.swiper-navigation-disabled .swiper-button-prev,\n.swiper-navigation-disabled .swiper-button-next {\n display: none !important;\n}\n.swiper-button-prev svg,\n.swiper-button-next svg {\n width: 100%;\n height: 100%;\n object-fit: contain;\n transform-origin: center;\n}\n.swiper-rtl .swiper-button-prev svg,\n.swiper-rtl .swiper-button-next svg {\n transform: rotate(180deg);\n}\n.swiper-button-prev,\n.swiper-rtl .swiper-button-next {\n left: var(--swiper-navigation-sides-offset, 10px);\n right: auto;\n}\n.swiper-button-next,\n.swiper-rtl .swiper-button-prev {\n right: var(--swiper-navigation-sides-offset, 10px);\n left: auto;\n}\n.swiper-button-lock {\n display: none;\n}\n/* Navigation font start */\n.swiper-button-prev:after,\n.swiper-button-next:after {\n font-family: swiper-icons;\n font-size: var(--swiper-navigation-size);\n text-transform: none !important;\n letter-spacing: 0;\n font-variant: initial;\n line-height: 1;\n}\n.swiper-button-prev:after,\n.swiper-rtl .swiper-button-next:after {\n content: 'prev';\n}\n.swiper-button-next,\n.swiper-rtl .swiper-button-prev {\n right: var(--swiper-navigation-sides-offset, 10px);\n left: auto;\n}\n.swiper-button-next:after,\n.swiper-rtl .swiper-button-prev:after {\n content: 'next';\n}\n/* Navigation font end */\n:root {\n /*\n --swiper-pagination-color: var(--swiper-theme-color);\n --swiper-pagination-left: auto;\n --swiper-pagination-right: 8px;\n --swiper-pagination-bottom: 8px;\n --swiper-pagination-top: auto;\n --swiper-pagination-fraction-color: inherit;\n --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25);\n --swiper-pagination-progressbar-size: 4px;\n --swiper-pagination-bullet-size: 8px;\n --swiper-pagination-bullet-width: 8px;\n --swiper-pagination-bullet-height: 8px;\n --swiper-pagination-bullet-border-radius: 50%;\n --swiper-pagination-bullet-inactive-color: #000;\n --swiper-pagination-bullet-inactive-opacity: 0.2;\n --swiper-pagination-bullet-opacity: 1;\n --swiper-pagination-bullet-horizontal-gap: 4px;\n --swiper-pagination-bullet-vertical-gap: 6px;\n */\n}\n.swiper-pagination {\n position: absolute;\n text-align: center;\n transition: 300ms opacity;\n transform: translate3d(0, 0, 0);\n z-index: 10;\n}\n.swiper-pagination.swiper-pagination-hidden {\n opacity: 0;\n}\n.swiper-pagination-disabled > .swiper-pagination,\n.swiper-pagination.swiper-pagination-disabled {\n display: none !important;\n}\n/* Common Styles */\n.swiper-pagination-fraction,\n.swiper-pagination-custom,\n.swiper-horizontal > .swiper-pagination-bullets,\n.swiper-pagination-bullets.swiper-pagination-horizontal {\n bottom: var(--swiper-pagination-bottom, 8px);\n top: var(--swiper-pagination-top, auto);\n left: 0;\n width: 100%;\n}\n/* Bullets */\n.swiper-pagination-bullets-dynamic {\n overflow: hidden;\n font-size: 0;\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transform: scale(0.33);\n position: relative;\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {\n transform: scale(1);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {\n transform: scale(1);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {\n transform: scale(0.66);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {\n transform: scale(0.33);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {\n transform: scale(0.66);\n}\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {\n transform: scale(0.33);\n}\n.swiper-pagination-bullet {\n width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px));\n height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px));\n display: inline-block;\n border-radius: var(--swiper-pagination-bullet-border-radius, 50%);\n background: var(--swiper-pagination-bullet-inactive-color, #000);\n opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2);\n}\nbutton.swiper-pagination-bullet {\n border: none;\n margin: 0;\n padding: 0;\n box-shadow: none;\n -webkit-appearance: none;\n appearance: none;\n}\n.swiper-pagination-clickable .swiper-pagination-bullet {\n cursor: pointer;\n}\n.swiper-pagination-bullet:only-child {\n display: none !important;\n}\n.swiper-pagination-bullet-active {\n opacity: var(--swiper-pagination-bullet-opacity, 1);\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\n}\n.swiper-vertical > .swiper-pagination-bullets,\n.swiper-pagination-vertical.swiper-pagination-bullets {\n right: var(--swiper-pagination-right, 8px);\n left: var(--swiper-pagination-left, auto);\n top: 50%;\n transform: translate3d(0px, -50%, 0);\n}\n.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet,\n.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet {\n margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0;\n display: block;\n}\n.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,\n.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\n top: 50%;\n transform: translateY(-50%);\n width: 8px;\n}\n.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,\n.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n display: inline-block;\n transition: 200ms transform, 200ms top;\n}\n.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet,\n.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet {\n margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px);\n}\n.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,\n.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\n left: 50%;\n transform: translateX(-50%);\n white-space: nowrap;\n}\n.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,\n.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transition: 200ms transform, 200ms left;\n}\n.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transition: 200ms transform, 200ms right;\n}\n/* Fraction */\n.swiper-pagination-fraction {\n color: var(--swiper-pagination-fraction-color, inherit);\n}\n/* Progress */\n.swiper-pagination-progressbar {\n background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25));\n position: absolute;\n}\n.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n transform: scale(0);\n transform-origin: left top;\n}\n.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n transform-origin: right top;\n}\n.swiper-horizontal > .swiper-pagination-progressbar,\n.swiper-pagination-progressbar.swiper-pagination-horizontal,\n.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,\n.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite {\n width: 100%;\n height: var(--swiper-pagination-progressbar-size, 4px);\n left: 0;\n top: 0;\n}\n.swiper-vertical > .swiper-pagination-progressbar,\n.swiper-pagination-progressbar.swiper-pagination-vertical,\n.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,\n.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite {\n width: var(--swiper-pagination-progressbar-size, 4px);\n height: 100%;\n left: 0;\n top: 0;\n}\n.swiper-pagination-lock {\n display: none;\n}\n:root {\n /*\n --swiper-scrollbar-border-radius: 10px;\n --swiper-scrollbar-top: auto;\n --swiper-scrollbar-bottom: 4px;\n --swiper-scrollbar-left: auto;\n --swiper-scrollbar-right: 4px;\n --swiper-scrollbar-sides-offset: 1%;\n --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1);\n --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5);\n --swiper-scrollbar-size: 4px;\n */\n}\n.swiper-scrollbar {\n border-radius: var(--swiper-scrollbar-border-radius, 10px);\n position: relative;\n -ms-touch-action: none;\n background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1));\n}\n.swiper-scrollbar-disabled > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-disabled {\n display: none !important;\n}\n.swiper-horizontal > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-horizontal {\n position: absolute;\n left: var(--swiper-scrollbar-sides-offset, 1%);\n bottom: var(--swiper-scrollbar-bottom, 4px);\n top: var(--swiper-scrollbar-top, auto);\n z-index: 50;\n height: var(--swiper-scrollbar-size, 4px);\n width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%));\n}\n.swiper-vertical > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-vertical {\n position: absolute;\n left: var(--swiper-scrollbar-left, auto);\n right: var(--swiper-scrollbar-right, 4px);\n top: var(--swiper-scrollbar-sides-offset, 1%);\n z-index: 50;\n width: var(--swiper-scrollbar-size, 4px);\n height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%));\n}\n.swiper-scrollbar-drag {\n height: 100%;\n width: 100%;\n position: relative;\n background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5));\n border-radius: var(--swiper-scrollbar-border-radius, 10px);\n left: 0;\n top: 0;\n}\n.swiper-scrollbar-cursor-drag {\n cursor: move;\n}\n.swiper-scrollbar-lock {\n display: none;\n}\n/* Zoom container styles start */\n.swiper-zoom-container {\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n}\n.swiper-zoom-container > img,\n.swiper-zoom-container > svg,\n.swiper-zoom-container > canvas {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n}\n/* Zoom container styles end */\n.swiper-slide-zoomed {\n cursor: move;\n touch-action: none;\n}\n/* a11y */\n.swiper .swiper-notification {\n position: absolute;\n left: 0;\n top: 0;\n pointer-events: none;\n opacity: 0;\n z-index: -1000;\n}\n.swiper-free-mode > .swiper-wrapper {\n transition-timing-function: ease-out;\n margin: 0 auto;\n}\n.swiper-grid > .swiper-wrapper {\n flex-wrap: wrap;\n}\n.swiper-grid-column > .swiper-wrapper {\n flex-wrap: wrap;\n flex-direction: column;\n}\n.swiper-fade.swiper-free-mode .swiper-slide {\n transition-timing-function: ease-out;\n}\n.swiper-fade .swiper-slide {\n pointer-events: none;\n transition-property: opacity;\n}\n.swiper-fade .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-fade .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-fade .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-cube {\n overflow: visible;\n}\n.swiper-cube .swiper-slide {\n pointer-events: none;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n z-index: 1;\n visibility: hidden;\n transform-origin: 0 0;\n width: 100%;\n height: 100%;\n}\n.swiper-cube .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-cube.swiper-rtl .swiper-slide {\n transform-origin: 100% 0;\n}\n.swiper-cube .swiper-slide-active,\n.swiper-cube .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-cube .swiper-slide-active,\n.swiper-cube .swiper-slide-next,\n.swiper-cube .swiper-slide-prev {\n pointer-events: auto;\n visibility: visible;\n}\n.swiper-cube .swiper-cube-shadow {\n position: absolute;\n left: 0;\n bottom: 0px;\n width: 100%;\n height: 100%;\n opacity: 0.6;\n z-index: 0;\n}\n.swiper-cube .swiper-cube-shadow:before {\n content: '';\n background: #000;\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n filter: blur(50px);\n}\n.swiper-cube .swiper-slide-next + .swiper-slide {\n pointer-events: auto;\n visibility: visible;\n}\n/* Cube slide shadows start */\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top,\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,\n.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right {\n z-index: 0;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n/* Cube slide shadows end */\n.swiper-flip {\n overflow: visible;\n}\n.swiper-flip .swiper-slide {\n pointer-events: none;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n z-index: 1;\n}\n.swiper-flip .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-flip .swiper-slide-active,\n.swiper-flip .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n/* Flip slide shadows start */\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top,\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,\n.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right {\n z-index: 0;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n/* Flip slide shadows end */\n.swiper-creative .swiper-slide {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n overflow: hidden;\n transition-property: transform, opacity, height;\n}\n.swiper-cards {\n overflow: visible;\n}\n.swiper-cards .swiper-slide {\n transform-origin: center bottom;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n overflow: hidden;\n}\n\n/* === Photo Browser === */\n:root {\n --f7-photobrowser-bg-color: #fff;\n --f7-photobrowser-bars-bg-color: rgba(var(--f7-bars-bg-color-rgb), 0.95);\n --f7-photobrowser-bars-text-color: var(--f7-bars-text-color);\n --f7-photobrowser-bars-link-color: var(--f7-bars-link-color);\n --f7-photobrowser-caption-font-size: 13px;\n --f7-photobrowser-caption-font-weight: 500;\n --f7-photobrowser-caption-light-text-color: #000;\n --f7-photobrowser-caption-dark-text-color: #fff;\n --f7-photobrowser-exposed-bg-color: #000;\n --f7-photobrowser-dark-bg-color: #000;\n --f7-photobrowser-dark-bars-bg-color: rgba(27, 27, 27, 0.8);\n --f7-photobrowser-dark-bars-text-color: #fff;\n --f7-photobrowser-dark-bars-link-color: #fff;\n}\n.photo-browser {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 400;\n}\n.photo-browser-standalone.modal-in {\n transition-duration: 0ms;\n animation: photo-browser-in 400ms;\n}\n.photo-browser-standalone.modal-out {\n transition-duration: 0ms;\n animation: photo-browser-out 400ms !important;\n}\n.photo-browser-standalone.modal-out.swipe-close-to-bottom,\n.photo-browser-standalone.modal-out.swipe-close-to-top {\n animation: none !important;\n}\n.photo-browser-standalone.photo-browser-transitioning {\n transition: 400ms;\n animation: none !important;\n}\n.photo-browser-popup.modal-out.swipe-close-to-bottom,\n.photo-browser-popup.modal-out.swipe-close-to-top {\n transition-duration: 300ms;\n}\n.photo-browser-popup.modal-out.swipe-close-to-bottom {\n transform: translate3d(0, 100vh, 0);\n}\n.photo-browser-popup.modal-out.swipe-close-to-top {\n transform: translate3d(0, -100vh, 0);\n}\n.photo-browser-page {\n background: none;\n}\n.photo-browser-page .toolbar {\n transform: none;\n}\n.photo-browser-popup {\n background: none;\n}\n.photo-browser-of {\n margin: 0 5px;\n}\n.photo-browser-captions {\n pointer-events: none;\n position: absolute;\n left: 0;\n width: 100%;\n bottom: var(--f7-safe-area-bottom);\n z-index: 10;\n opacity: 1;\n transition-duration: 400ms;\n}\n.photo-browser-captions.photo-browser-captions-exposed {\n opacity: 0;\n}\n.toolbar ~ .toolbar.photo-browser-thumbs {\n bottom: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n}\n.page ~ .photo-browser-page:not(.photo-browser-exposed) .toolbar ~ .toolbar.photo-browser-thumbs,\n.photo-browser-popup:not(.photo-browser-exposed) .toolbar ~ .toolbar.photo-browser-thumbs,\n.photo-browser-standalone:not(.photo-browser-exposed) .toolbar ~ .toolbar.photo-browser-thumbs {\n height: var(--f7-toolbar-height);\n}\n.photo-browser-exposed .toolbar ~ .toolbar.photo-browser-thumbs {\n transform: translate3d(0, calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom, 0)), 0);\n}\n.photo-browser-exposed .toolbar ~ .toolbar.photo-browser-thumbs .swiper {\n height: calc(100% - var(--f7-safe-area-bottom, 0));\n}\n.navbar + .toolbar.photo-browser-thumbs .swiper {\n height: calc(100% - var(--f7-safe-area-bottom, 0));\n}\n.toolbar ~ .photo-browser-captions {\n bottom: calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom));\n transform: translate3d(0, 0px, 0);\n}\n.toolbar ~ .photo-browser-captions.photo-browser-captions-exposed {\n transform: translate3d(0, 0px, 0);\n}\n.toolbar ~ .toolbar ~ .photo-browser-captions {\n bottom: calc(var(--f7-toolbar-height) * 2 + var(--f7-safe-area-bottom));\n}\n.toolbar ~ .toolbar ~ .photo-browser-captions.photo-browser-captions-exposed {\n transform: translate3d(0, var(--f7-toolbar-height), 0);\n}\n.photo-browser-thumbs {\n transition-property: transform, background-color, color;\n}\n.photo-browser-thumbs .swiper {\n width: 100%;\n height: 100%;\n}\n.photo-browser-thumbs .swiper-slide {\n width: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.photo-browser-thumbs img {\n width: auto;\n height: 75%;\n display: block;\n border-radius: 2px;\n min-width: 4px;\n}\n.photo-browser-thumbs .swiper-slide img {\n transform: translateX(-4px);\n transition-duration: 150ms;\n}\n.photo-browser-thumbs .swiper-slide-active img {\n transform: scale(1.2);\n}\n.photo-browser-thumbs .swiper-slide-active ~ .swiper-slide img {\n transform: translateX(4px);\n}\n.photo-browser-caption {\n box-sizing: border-box;\n transition-duration: 400ms;\n position: absolute;\n bottom: 0;\n left: 0;\n opacity: 0;\n padding: 4px 5px;\n width: 100%;\n text-align: center;\n font-size: var(--f7-photobrowser-caption-font-size);\n font-weight: var(--f7-photobrowser-caption-font-weight);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-bars .photo-browser-caption {\n -webkit-backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n backdrop-filter: saturate(180%) blur(var(--f7-bars-translucent-blur));\n }\n}\n.photo-browser-caption:empty {\n display: none;\n}\n.photo-browser-caption.photo-browser-caption-active {\n opacity: 1;\n}\n.photo-browser-captions-light .photo-browser-caption {\n color: var(--f7-photobrowser-caption-light-text-color);\n}\n.photo-browser-captions-dark .photo-browser-caption,\n.dark .photo-browser-caption {\n color: var(--f7-photobrowser-caption-dark-text-color);\n}\n.photo-browser-swiper-container {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n background: var(--f7-photobrowser-bg-color);\n transition: 400ms;\n transition-property: background-color;\n touch-action: none;\n}\n.photo-browser-prev.swiper-button-disabled,\n.photo-browser-next.swiper-button-disabled {\n opacity: 0.3;\n pointer-events: none;\n}\n.photo-browser-slide {\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n box-sizing: border-box;\n}\n.photo-browser-slide span.swiper-zoom-container {\n display: none;\n}\n.photo-browser-slide img {\n width: auto;\n height: auto;\n max-width: 100%;\n max-height: 100%;\n display: none;\n}\n.photo-browser-slide.swiper-slide-active span.swiper-zoom-container,\n.photo-browser-slide.swiper-slide-next span.swiper-zoom-container,\n.photo-browser-slide.swiper-slide-prev span.swiper-zoom-container {\n display: flex;\n}\n.photo-browser-slide.swiper-slide-active img,\n.photo-browser-slide.swiper-slide-next img,\n.photo-browser-slide.swiper-slide-prev img {\n display: inline;\n}\n.photo-browser-slide.swiper-slide-active.photo-browser-slide-lazy .preloader,\n.photo-browser-slide.swiper-slide-next.photo-browser-slide-lazy .preloader,\n.photo-browser-slide.swiper-slide-prev.photo-browser-slide-lazy .preloader {\n display: block;\n}\n.photo-browser-slide iframe {\n width: 100%;\n height: 100%;\n}\n.photo-browser-slide .preloader {\n display: none;\n position: absolute;\n width: 42px;\n height: 42px;\n margin-left: -21px;\n margin-top: -21px;\n left: 50%;\n top: 50%;\n}\n.navbar-photo-browser .right .link svg,\n.navbar-photo-browser .right .link i {\n width: 24px;\n height: 24px;\n display: block;\n}\n.photo-browser-page .navbar-bg,\n.navbar-photo-browser .navbar-bg,\n.photo-browser-page .toolbar,\n.photo-browser-caption {\n background-color: var(--f7-photobrowser-bars-bg-color, rgba(var(--f7-bars-bg-color-rgb), 0.95));\n}\n.photo-browser-page {\n touch-action: none;\n}\n.photo-browser-page .navbar,\n.photo-browser-page .toolbar {\n transform: translate3d(0, 0, 0);\n transition-duration: 400ms;\n color: var(--f7-photobrowser-bars-text-color, var(--f7-bars-text-color));\n}\n.photo-browser-page .navbar a,\n.photo-browser-page .toolbar a {\n color: var(--f7-photobrowser-bars-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));\n}\n.photo-browser-exposed .navbar,\n.photo-browser-exposed .toolbar:not(.photo-browser-thumbs) {\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n}\n.photo-browser-exposed .toolbar:not(.photo-browser-thumbs) ~ .photo-browser-captions,\n.photo-browser-exposed .toolbar ~ .toolbar.photo-browser-thumbs ~ .photo-browser-captions {\n transform: translate3d(0, var(--f7-toolbar-height), 0);\n}\n.photo-browser-exposed .photo-browser-swiper-container {\n background: var(--f7-photobrowser-exposed-bg-color);\n}\n.photo-browser-exposed .photo-browser-thumbs,\n.photo-browser-dark .photo-browser-thumbs,\n.photo-browser-exposed .toolbar,\n.photo-browser-dark .toolbar {\n background-color: var(--f7-photobrowser-dark-bars-bg-color);\n}\n.photo-browser-exposed .photo-browser-caption,\n.photo-browser-dark .photo-browser-caption {\n color: var(--f7-photobrowser-caption-dark-text-color);\n background-color: var(--f7-photobrowser-dark-bars-bg-color);\n}\n.view.with-photo-browser-page-exposed .navbar {\n opacity: 0;\n pointer-events: none;\n}\n.photo-browser-page .toolbar:before,\n.photo-browser-page .toolbar:after {\n display: none !important;\n}\n.photo-browser-page-dark .navbar-bg,\n.navbar-photo-browser-dark .navbar-bg {\n background: var(--f7-photobrowser-dark-bars-bg-color);\n}\n.photo-browser-page-dark .navbar-bg:before,\n.navbar-photo-browser-dark .navbar-bg:before,\n.photo-browser-page-dark .navbar-bg:after,\n.navbar-photo-browser-dark .navbar-bg:after {\n display: none !important;\n}\n.navbar-photo-browser-dark,\n.photo-browser-dark .navbar,\n.photo-browser-dark .toolbar,\n.photo-browser-page-dark .navbar,\n.photo-browser-page-dark .toolbar {\n color: var(--f7-photobrowser-dark-bars-text-color);\n}\n.navbar-photo-browser-dark a,\n.photo-browser-dark .navbar a,\n.photo-browser-dark .toolbar a,\n.photo-browser-page-dark .navbar a,\n.photo-browser-page-dark .toolbar a {\n color: var(--f7-photobrowser-dark-bars-link-color);\n}\n.photo-browser-dark .photo-browser-swiper-container,\n.photo-browser-page-dark .photo-browser-swiper-container {\n background: var(--f7-photobrowser-dark-bg-color);\n}\n@keyframes photo-browser-in {\n 0% {\n transform: translate3d(0, 0, 0) scale(0.5);\n opacity: 0;\n }\n 50% {\n transform: translate3d(0, 0, 0) scale(1.05);\n opacity: 1;\n }\n 100% {\n transform: translate3d(0, 0, 0) scale(1);\n opacity: 1;\n }\n}\n@keyframes photo-browser-out {\n 0% {\n transform: translate3d(0, 0, 0) scale(1);\n opacity: 1;\n }\n 50% {\n transform: translate3d(0, 0, 0) scale(1.05);\n opacity: 1;\n }\n 100% {\n transform: translate3d(0, 0, 0) scale(0.5);\n opacity: 0;\n }\n}\n/* === Notifications === */\n:root {\n --f7-notification-max-width: 568px;\n --f7-notification-subtitle-text-transform: none;\n --f7-notification-subtitle-line-height: 1.35;\n --f7-notification-text-text-transform: none;\n --f7-notification-text-font-weight: 400;\n}\n.ios {\n --f7-notification-margin: 8px;\n --f7-notification-padding-horizontal: 10px;\n --f7-notification-padding-vertical: 10px;\n --f7-notification-border-radius: 12px;\n --f7-notification-box-shadow: 0px 5px 25px -10px rgba(0, 0, 0, 0.7);\n --f7-notification-icon-size: 20px;\n --f7-notification-title-font-size: 13px;\n --f7-notification-title-text-transform: uppercase;\n --f7-notification-title-line-height: 1.4;\n --f7-notification-title-font-weight: 400;\n --f7-notification-title-letter-spacing: 0.02em;\n --f7-notification-title-right-font-size: 13px;\n --f7-notification-subtitle-font-size: 15px;\n --f7-notification-subtitle-font-weight: 600;\n --f7-notification-text-font-size: 15px;\n --f7-notification-text-line-height: 1.2;\n --f7-notification-bg-color: rgba(250, 250, 250, 0.95);\n --f7-notification-bg-color-rgb: 255, 255, 255;\n --f7-notification-title-color: #000;\n --f7-notification-title-right-color: rgba(0, 0, 0, 0.45);\n --f7-notification-subtitle-color: #000;\n --f7-notification-text-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-notification-bg-color: rgba(30, 30, 30, 0.95);\n --f7-notification-bg-color-rgb: 30, 30, 30;\n --f7-notification-title-color: #fff;\n --f7-notification-text-color: #fff;\n --f7-notification-subtitle-color: #fff;\n --f7-notification-title-right-color: rgba(255, 255, 255, 0.55);\n}\n.md {\n --f7-notification-margin: 16px;\n --f7-notification-padding-vertical: 20px;\n --f7-notification-padding-horizontal: 16px;\n --f7-notification-border-radius: 16px;\n --f7-notification-box-shadow: none;\n --f7-notification-icon-size: 24px;\n --f7-notification-title-font-size: 16px;\n --f7-notification-title-text-transform: none;\n --f7-notification-title-line-height: 1.35;\n --f7-notification-title-font-weight: 500;\n --f7-notification-title-right-font-size: 12px;\n --f7-notification-subtitle-font-size: 14px;\n --f7-notification-subtitle-font-weight: 400;\n --f7-notification-text-font-size: 14px;\n --f7-notification-text-line-height: 1.35;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-notification-title-color: var(--f7-md-on-surface);\n --f7-notification-bg-color: var(--f7-md-surface-5);\n --f7-notification-text-color: var(--f7-md-on-surface-variant);\n --f7-notification-title-right-color: var(--f7-md-on-surface-variant);\n --f7-notification-subtitle-color: var(--f7-md-on-surface);\n}\n.notification {\n position: absolute;\n left: var(--f7-notification-margin);\n top: var(--f7-notification-margin);\n width: calc(100% - var(--f7-notification-margin) * 2);\n z-index: 20000;\n font-size: 14px;\n margin: 0;\n border: none;\n display: none;\n box-sizing: border-box;\n transition-property: transform;\n direction: ltr;\n max-width: var(--f7-notification-max-width);\n padding: var(--f7-notification-padding-vertical) var(--f7-notification-padding-horizontal);\n border-radius: var(--f7-notification-border-radius);\n box-shadow: var(--f7-notification-box-shadow);\n background: var(--f7-notification-bg-color);\n margin-top: var(--f7-safe-area-top);\n}\n@supports ((-webkit-backdrop-filter: blur(20px)) or (backdrop-filter: blur(20px))) {\n .ios-translucent-modals .notification {\n background-color: rgba(var(--f7-notification-bg-color-rgb), 0.8);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n }\n}\n@media (min-width: 568px) {\n .notification {\n left: 50%;\n width: var(--f7-notification-max-width);\n margin-left: calc(-1 * var(--f7-notification-max-width) / 2);\n }\n}\n.notification-title {\n color: var(--f7-notification-title-color, var(--f7-theme-color));\n font-size: var(--f7-notification-title-font-size);\n text-transform: var(--f7-notification-title-text-transform);\n line-height: var(--f7-notification-title-line-height);\n font-weight: var(--f7-notification-title-font-weight);\n letter-spacing: var(--f7-notification-title-letter-spacing);\n}\n.notification-subtitle {\n color: var(--f7-notification-subtitle-color);\n font-size: var(--f7-notification-subtitle-font-size);\n text-transform: var(--f7-notification-subtitle-text-transform);\n line-height: var(--f7-notification-subtitle-line-height);\n font-weight: var(--f7-notification-subtitle-font-weight);\n}\n.notification-text {\n color: var(--f7-notification-text-color);\n font-size: var(--f7-notification-text-font-size);\n text-transform: var(--f7-notification-text-text-transform);\n line-height: var(--f7-notification-text-line-height);\n font-weight: var(--f7-notification-text-font-weight);\n}\n.notification-title-right-text {\n color: var(--f7-notification-title-right-color);\n font-size: var(--f7-notification-title-right-font-size);\n}\n.notification-icon {\n font-size: 0;\n line-height: var(--f7-notification-icon-size);\n}\n.notification-icon i,\n.notification-icon {\n width: var(--f7-notification-icon-size) !important;\n height: var(--f7-notification-icon-size) !important;\n}\n.notification-icon i {\n font-size: var(--f7-notification-icon-size);\n}\n.notification-icon img {\n height: var(--f7-notification-icon-size);\n}\n.notification-header {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.notification-close-button {\n margin-left: auto;\n cursor: pointer;\n position: relative;\n}\n.notification-close-button:after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n position: absolute;\n left: 50%;\n top: 50%;\n text-align: center;\n}\n.ios .notification {\n transition-duration: 450ms;\n transform: translate3d(0%, -200%, 0);\n}\n.ios .notification.modal-in {\n transform: translate3d(0%, 0%, 0);\n opacity: 1;\n}\n.ios .notification.modal-out {\n transform: translate3d(0%, -200%, 0);\n}\n.ios .notification-icon {\n margin-right: 8px;\n}\n.ios .notification-header + .notification-content {\n margin-top: 10px;\n}\n.ios .notification-title-right-text {\n margin-right: 6px;\n margin-left: auto;\n}\n.ios .notification-title-right-text + .notification-close-button {\n margin-left: 10px;\n}\n.ios .notification-close-button {\n font-size: 14px;\n width: 20px;\n height: 20px;\n opacity: 0.3;\n transition-duration: 300ms;\n}\n.ios .notification-close-button.active-state {\n transition-duration: 0ms;\n opacity: 0.1;\n}\n.ios .notification-close-button:after {\n color: #000;\n content: 'notification_close_ios';\n font-size: 0.65em;\n line-height: 44px;\n width: 44px;\n height: 44px;\n margin-left: -22px;\n margin-top: -22px;\n}\n.ios .dark .notification-close-button:after,\n.ios.dark .notification-close-button:after {\n color: #fff;\n}\n.md .notification {\n transform: translate3d(0, -150%, 0);\n}\n.md .notification.modal-in {\n transition-duration: 500ms;\n transform: translate3d(0, 0%, 0);\n transition-timing-function: cubic-bezier(0, 0.8, 0.34, 1);\n}\n.md .notification.modal-in.notification-transitioning {\n transition-duration: 200ms;\n}\n.md .notification.modal-out {\n animation: none;\n transition-duration: 200ms;\n transition-timing-function: ease-in;\n transform: translate3d(0, -150%, 0);\n}\n.md .notification-with-icon .notification-icon {\n position: absolute;\n left: var(--f7-notification-padding-horizontal);\n top: var(--f7-notification-padding-vertical);\n}\n.md .notification-with-icon .notification-content,\n.md .notification-with-icon .notification-header {\n margin-left: calc(var(--f7-notification-icon-size) + 16px);\n}\n.md .notification-icon {\n margin-right: 8px;\n}\n.md .notification-subtitle + .notification-text {\n margin-top: 4px;\n}\n.md .notification-header + .notification-content {\n margin-top: 8px;\n}\n.md .notification-title-right-text {\n margin-left: 4px;\n}\n.md .notification-title-right-text:before {\n content: '';\n width: 3px;\n height: 3px;\n border-radius: 50%;\n display: inline-block;\n vertical-align: middle;\n margin-right: 4px;\n background: var(--f7-notification-title-right-color);\n}\n.md .notification-close-button {\n width: 16px;\n height: 16px;\n transition-duration: 300ms;\n}\n.md .notification-close-button:before,\n.md .notification-close-button:after {\n width: 48px;\n height: 48px;\n left: 50%;\n top: 50%;\n margin-left: -24px;\n margin-top: -24px;\n}\n.md .notification-close-button:after {\n color: var(--f7-md-on-surface-variant);\n content: 'delete_round_md';\n line-height: 48px;\n font-size: 24px;\n}\n@keyframes notification-md-in {\n 0% {\n transform: translate3d(0, -150%, 0);\n }\n 50% {\n transform: translate3d(0, 10%, 0);\n }\n 100% {\n transform: translate3d(0, 0%, 0);\n }\n}\n/* === Autocomplete === */\n:root {\n --f7-autocomplete-dropdown-placeholder-color: #a9a9a9;\n --f7-autocomplete-dropdown-preloader-size: 20px;\n --f7-autocomplete-dropdown-font-size: var(--f7-list-font-size);\n /*\n --f7-autocomplete-dropdown-selected-bg-color: rgba(var(--f7-theme-color-rgb), 0.2);\n */\n}\n.ios {\n --f7-autocomplete-dropdown-box-shadow: 0px 3px 3px rgba(0, 0, 0, 0.2);\n --f7-autocomplete-dropdown-text-matching-font-weight: 600;\n --f7-autocomplete-dropdown-bg-color: #fff;\n --f7-autocomplete-dropdown-text-color: #000;\n --f7-autocomplete-dropdown-text-matching-color: #000;\n}\n.ios .dark,\n.ios.dark {\n --f7-autocomplete-dropdown-bg-color: #1c1c1d;\n --f7-autocomplete-dropdown-text-color: #fff;\n --f7-autocomplete-dropdown-text-matching-color: #fff;\n}\n.md {\n --f7-autocomplete-dropdown-box-shadow: none;\n --f7-autocomplete-dropdown-text-matching-font-weight: 500;\n --f7-autocomplete-dropdown-text-matching-color: #000;\n}\n.md .dark,\n.md.dark {\n --f7-autocomplete-dropdown-text-matching-color: #fff;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-autocomplete-dropdown-bg-color: var(--f7-md-surface-2);\n --f7-autocomplete-dropdown-text-color: var(--f7-md-on-surface);\n}\n.autocomplete-page .autocomplete-found {\n display: block;\n}\n.autocomplete-page .autocomplete-not-found {\n display: none;\n}\n.autocomplete-page .autocomplete-values {\n display: block;\n}\n.autocomplete-page .list ul:empty {\n display: none;\n}\n.autocomplete-preloader:not(.autocomplete-preloader-visible) {\n visibility: hidden;\n}\n.autocomplete-preloader:not(.autocomplete-preloader-visible),\n.autocomplete-preloader:not(.autocomplete-preloader-visible) * {\n animation: none;\n}\n.autocomplete-dropdown {\n background: var(--f7-autocomplete-dropdown-bg-color);\n box-shadow: var(--f7-autocomplete-dropdown-box-shadow);\n box-sizing: border-box;\n position: absolute;\n z-index: 500;\n width: 100%;\n left: 0;\n}\n.autocomplete-dropdown .autocomplete-dropdown-inner {\n position: relative;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n height: 100%;\n z-index: 1;\n}\n.autocomplete-dropdown .autocomplete-preloader {\n display: none;\n position: absolute;\n bottom: 100%;\n width: var(--f7-autocomplete-dropdown-preloader-size);\n height: var(--f7-autocomplete-dropdown-preloader-size);\n}\n.autocomplete-dropdown .autocomplete-preloader-visible {\n display: block;\n}\n.autocomplete-dropdown .autocomplete-dropdown-placeholder {\n color: var(--f7-autocomplete-dropdown-placeholder-color);\n}\n.autocomplete-dropdown .list {\n margin: 0;\n color: var(--f7-autocomplete-dropdown-text-color);\n font-size: var(--f7-autocomplete-dropdown-font-size);\n}\n.autocomplete-dropdown .list b {\n color: var(--f7-autocomplete-dropdown-text-matching-color);\n font-weight: var(--f7-autocomplete-dropdown-text-matching-font-weight);\n}\n.autocomplete-dropdown .list ul {\n background: none !important;\n}\n.autocomplete-dropdown .list ul:before,\n.autocomplete-dropdown .list ul:after {\n display: none !important;\n}\n.autocomplete-dropdown .autocomplete-dropdown-selected {\n background: var(--f7-autocomplete-dropdown-selected-bg-color, rgba(var(--f7-theme-color-rgb), 0.2));\n}\n.searchbar-input-wrap .autocomplete-dropdown {\n background-color: var(--f7-searchbar-input-bg-color, var(--f7-searchbar-bg-color));\n border-radius: var(--f7-searchbar-input-border-radius);\n margin-top: calc(-1 * var(--f7-searchbar-input-height));\n top: 100%;\n z-index: -1;\n}\n.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-inner {\n padding-top: var(--f7-searchbar-input-height);\n}\n.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-placeholder {\n color: var(--f7-searchbar-placeholder-color);\n}\n.searchbar-input-wrap .autocomplete-dropdown li:last-child {\n border-radius: 0 0 var(--f7-searchbar-input-border-radius) var(--f7-searchbar-input-border-radius);\n position: relative;\n overflow: hidden;\n}\n.searchbar-input-wrap .autocomplete-dropdown .item-content {\n padding-left: calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left, 0px));\n}\n.ios .autocomplete-dropdown .autocomplete-preloader {\n right: 16px;\n margin-bottom: 12px;\n}\n.md .autocomplete-page .navbar .autocomplete-preloader {\n margin-right: 8px;\n}\n.md .autocomplete-popup .navbar .autocomplete-preloader {\n margin-left: 8px;\n margin-right: 16px;\n}\n.md .autocomplete-dropdown .autocomplete-preloader {\n right: 16px;\n margin-bottom: 8px;\n}\n.md .autocomplete-dropdown .autocomplete-preloader circle {\n stroke-width: 3;\n}\n/* === Tooltip === */\n:root {\n --f7-tooltip-padding: 8px 16px;\n --f7-tooltip-font-size: 14px;\n --f7-tooltip-font-weight: 500;\n --f7-tooltip-desktop-padding: 6px 8px;\n --f7-tooltip-desktop-font-size: 12px;\n}\n.ios {\n --f7-tooltip-border-radius: 4px;\n --f7-tooltip-bg-color: rgba(0, 0, 0, 0.87);\n --f7-tooltip-text-color: #fff;\n}\n.md {\n --f7-tooltip-border-radius: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-tooltip-bg-color: var(--f7-md-secondary);\n --f7-tooltip-text-color: var(--f7-md-on-secondary);\n}\n.tooltip {\n position: absolute;\n z-index: 20000;\n background: var(--f7-tooltip-bg-color);\n border-radius: var(--f7-tooltip-border-radius);\n padding: var(--f7-tooltip-padding);\n color: var(--f7-tooltip-text-color);\n font-size: var(--f7-tooltip-font-size);\n font-weight: var(--f7-tooltip-font-weight);\n box-sizing: border-box;\n line-height: 1.2;\n opacity: 0;\n transform: scale(0.9);\n transition-duration: 150ms;\n transition-property: opacity, transform;\n z-index: 99000;\n}\n.tooltip.tooltip-in {\n transform: scale(1);\n opacity: 1;\n}\n.tooltip.tooltip-out {\n opacity: 0;\n transform: scale(1);\n}\n.device-desktop .tooltip {\n font-size: var(--f7-tooltip-desktop-font-size);\n padding: var(--f7-tooltip-desktop-padding);\n}\n/* === Gauge === */\n.gauge {\n position: relative;\n text-align: center;\n margin-left: auto;\n margin-right: auto;\n display: inline-block;\n}\n.gauge-svg,\n.gauge svg {\n max-width: 100%;\n height: auto;\n}\n.gauge-svg circle,\n.gauge svg circle,\n.gauge-svg path,\n.gauge svg path {\n transition-duration: 400ms;\n}\n/* === Skeleton === */\n:root {\n --skeleton-color: #ccc;\n --skeleton-icon-color: rgba(0, 0, 0, 0.25);\n}\n\n.skeleton-block {\n height: 1em;\n background: var(--skeleton-color) !important;\n width: 100%;\n display: block;\n}\n\n@font-face {\n font-family: \"skeleton\";\n src: url(\"data:application/font-woff;charset=utf-8;base64,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\") format(\"woff\");\n font-weight: 100, 200, 300, 400, 500, 600, 700, 800, 900;\n font-style: normal, italic;\n font-display: block;\n}\n.skeleton-text {\n font-family: \"skeleton\" !important;\n -webkit-user-select: none;\n user-select: none;\n}\n.skeleton-text, .skeleton-text * {\n color: var(--skeleton-color) !important;\n letter-spacing: -0.03em !important;\n}\n\n.skeleton-image {\n display: inline-block;\n}\n.skeleton-image svg {\n max-width: 100%;\n height: auto;\n}\n.skeleton-image polygon {\n fill: var(--skeleton-color);\n}\n.skeleton-image path {\n fill: var(--skeleton-icon-color);\n}\n\n.skeleton-avatar {\n display: inline-block;\n}\n.skeleton-avatar svg {\n max-width: 100%;\n height: auto;\n}\n.skeleton-avatar rect {\n fill: var(--skeleton-color);\n}\n.skeleton-avatar path {\n fill: var(--skeleton-icon-color);\n}\n\n.skeleton-effect-blink, .skeleton-effect-wave {\n -webkit-mask-image: linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%);\n mask-image: linear-gradient(to right, transparent 0%, black 25%, black 75%, transparent 100%);\n -webkit-mask-size: 200% 100%;\n mask-size: 200% 100%;\n -webkit-mask-repeat: repeat;\n mask-repeat: repeat;\n -webkit-mask-position: 50% top;\n mask-position: 50% top;\n animation: skeleton-effect-wave 1s infinite;\n}\n.skeleton-effect-fade {\n animation: skeleton-effect-fade 1s infinite;\n}\n.skeleton-effect-pulse {\n animation: skeleton-effect-pulse 1s infinite;\n}\n\n@keyframes skeleton-effect-fade {\n 0% {\n opacity: 1;\n }\n 50% {\n opacity: 0.2;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes skeleton-effect-wave {\n 0% {\n -webkit-mask-position: 50% top;\n mask-position: 50% top;\n }\n 100% {\n -webkit-mask-position: -150% top;\n mask-position: -150% top;\n }\n}\n@keyframes skeleton-effect-pulse {\n 0% {\n transform: scale(1);\n }\n 40% {\n transform: scale(1);\n }\n 50% {\n transform: scale(0.975);\n }\n 100% {\n transform: scale(1);\n }\n}\n:root {\n --skeleton-color: #ccc;\n --skeleton-icon-color: rgba(0, 0, 0, 0.25);\n}\n.dark {\n --skeleton-color: #515151;\n --skeleton-icon-color: rgba(255, 255, 255, 0.25);\n}\n/* === Color Picker === */\n:root {\n --f7-color-picker-popover-width: 350px;\n --f7-color-picker-slider-size: 6px;\n --f7-color-picker-slider-knob-size: 16px;\n --f7-color-picker-bar-size: 50px;\n --f7-color-picker-bar-min-height: 260px;\n --f7-color-picker-value-width: 64px;\n --f7-color-picker-value-height: 32px;\n --f7-color-picker-value-font-size: 16px;\n --f7-color-picker-value-border-radius: 4px;\n --f7-color-picker-hex-value-width: 84px;\n --f7-color-picker-label-font-size: 14px;\n --f7-color-picker-label-width: 10px;\n --f7-color-picker-label-height: 14px;\n --f7-color-picker-sb-spectrum-height: 260px;\n --f7-color-picker-sb-spectrum-handle-size: 16px;\n --f7-color-picker-wheel-width: 330px;\n --f7-color-picker-palette-value-width: 36px;\n --f7-color-picker-palette-value-height: 36px;\n --f7-color-picker-initial-current-color-height: 40px;\n --f7-color-picker-initial-current-color-border-radius: 4px;\n --f7-color-picker-sheet-bg-color: #fff;\n --f7-color-picker-popup-bg-color: #fff;\n --f7-color-picker-value-bg-color: rgba(0, 0, 0, 0.05);\n --f7-color-picker-group-bg-color: rgba(0, 0, 0, 0.05);\n --f7-color-picker-group-value-bg-color: #fff;\n}\n:root .dark,\n:root.dark {\n --f7-color-picker-sheet-bg-color: #121212;\n --f7-color-picker-popup-bg-color: #121212;\n --f7-color-picker-value-bg-color: rgba(255, 255, 255, 0.1);\n --f7-color-picker-group-bg-color: #000;\n --f7-color-picker-group-value-bg-color: rgba(255, 255, 255, 0.12);\n}\n.color-picker {\n overflow: hidden;\n width: 100%;\n display: flex;\n flex-direction: column;\n}\n.color-picker.color-picker-inline,\n.color-picker-popover .color-picker,\n.color-picker-popup .color-picker {\n position: relative;\n}\n.color-picker-sheet-modal {\n background: var(--f7-color-picker-sheet-bg-color);\n}\n.color-picker-sheet-modal:before {\n z-index: 600;\n}\n.color-picker-sheet-modal .sheet-modal-inner {\n margin-bottom: var(--f7-safe-area-bottom);\n}\n.color-picker-popup .page {\n background: var(--f7-color-picker-popup-bg-color);\n}\n.color-picker-popup .page-content {\n padding-bottom: var(--f7-safe-area-bottom);\n}\n.color-picker-popover .color-picker,\n.color-picker-popup .color-picker,\n.color-picker-page .color-picker {\n height: 100%;\n}\n.color-picker-popover .color-picker .toolbar,\n.color-picker-popup .color-picker .toolbar,\n.color-picker-page .color-picker .toolbar {\n position: absolute;\n}\n.color-picker-popover {\n width: var(--f7-color-picker-popover-width);\n max-width: 90vw;\n max-height: 80vh;\n}\n.md .color-picker-popover .popover-inner {\n padding: 8px;\n}\n.color-picker-popover .color-picker {\n max-height: 80vh;\n}\n.color-picker-popover .toolbar-top {\n border-top-left-radius: var(--f7-popover-border-radius);\n border-top-right-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .color-picker-module-palette {\n overflow: hidden;\n flex-shrink: 0;\n}\n.color-picker-popover .color-picker-module-palette:first-child {\n border-top-left-radius: var(--f7-popover-border-radius);\n border-top-right-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .color-picker-module-palette:last-child {\n border-bottom-left-radius: var(--f7-popover-border-radius);\n border-bottom-right-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .color-picker-module-palette:first-child:last-child {\n border-radius: var(--f7-popover-border-radius);\n}\n.color-picker-popover .toolbar ~ .page-content .color-picker-module-palette:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.color-picker-popup .page-content,\n.color-picker-popover .page-content,\n.color-picker-sheet-modal .page-content,\n.color-picker-page .page-content {\n display: flex;\n justify-content: flex-start;\n align-items: stretch;\n flex-direction: column;\n overflow-x: hidden;\n}\n.color-picker-module {\n margin-top: 5px;\n}\n.color-picker-module:last-child {\n margin-bottom: 5px;\n}\n.color-picker-module-sb-spectrum,\n.color-picker-module-hs-spectrum {\n margin-left: 10px;\n margin-right: 10px;\n}\n.color-picker-module-sb-spectrum:first-child,\n.color-picker-module-hs-spectrum:first-child {\n margin-top: 10px;\n}\n.color-picker-module-sb-spectrum .color-picker-sb-spectrum,\n.color-picker-module-hs-spectrum .color-picker-sb-spectrum,\n.color-picker-module-sb-spectrum .color-picker-hs-spectrum,\n.color-picker-module-hs-spectrum .color-picker-hs-spectrum {\n height: var(--f7-color-picker-sb-spectrum-height);\n}\n.ios .color-picker-module-sb-spectrum .color-picker-sb-spectrum,\n.ios .color-picker-module-hs-spectrum .color-picker-sb-spectrum,\n.ios .color-picker-module-sb-spectrum .color-picker-hs-spectrum,\n.ios .color-picker-module-hs-spectrum .color-picker-hs-spectrum {\n border-radius: 4px;\n}\n.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum,\n.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum,\n.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum,\n.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum {\n border-radius: 12px;\n}\n.md .color-picker-module-sb-spectrum .color-picker-sb-spectrum::after,\n.md .color-picker-module-hs-spectrum .color-picker-sb-spectrum::after,\n.md .color-picker-module-sb-spectrum .color-picker-hs-spectrum::after,\n.md .color-picker-module-hs-spectrum .color-picker-hs-spectrum::after {\n border-radius: inherit;\n}\n.color-picker-sb-spectrum {\n background-color: #000;\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, #000 100%), linear-gradient(to left, rgba(255, 255, 255, 0) 0%, #fff 100%);\n position: relative;\n}\n.color-picker-hs-spectrum {\n position: relative;\n background-image: linear-gradient(to right, hsl(0, 100%, 50%), hsl(60, 100%, 50%), hsl(120, 100%, 50%), hsl(180, 100%, 50%), hsl(240, 100%, 50%), hsl(300, 100%, 50%), hsl(0, 100%, 50%));\n}\n.color-picker-hs-spectrum:after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), #ffffff);\n}\n.color-picker-sb-spectrum-handle,\n.color-picker-hs-spectrum-handle {\n width: 4px;\n height: 4px;\n position: absolute;\n left: -2px;\n top: -2px;\n z-index: 1;\n}\n.color-picker-sb-spectrum-handle:after,\n.color-picker-hs-spectrum-handle:after {\n background-color: inherit;\n content: '';\n position: absolute;\n width: var(--f7-color-picker-sb-spectrum-handle-size);\n height: var(--f7-color-picker-sb-spectrum-handle-size);\n border: 1px solid #fff;\n border-radius: 50%;\n box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.5);\n box-sizing: border-box;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n transition: 150ms;\n transition-property: transform;\n transform-origin: center;\n}\n.color-picker-sb-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after,\n.color-picker-hs-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after,\n.color-picker-sb-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,\n.color-picker-hs-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after {\n transform: scale(1.5) translate(-33.333%, -33.333%);\n}\n.color-picker-module-wheel {\n margin-left: 10px;\n margin-right: 10px;\n}\n.color-picker-wheel {\n position: relative;\n width: var(--f7-color-picker-wheel-width);\n max-width: 100%;\n height: auto;\n font-size: 0;\n margin-left: auto;\n margin-right: auto;\n}\n.color-picker-wheel svg {\n width: 100%;\n height: auto;\n}\n.color-picker-wheel .color-picker-wheel-handle {\n width: 16.66666667%;\n height: 16.66666667%;\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #fff;\n box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5);\n background: red;\n border-radius: 50%;\n left: 0;\n top: 0;\n}\n.color-picker-wheel .color-picker-sb-spectrum {\n width: 45%;\n height: 45%;\n left: 50%;\n top: 50%;\n transform: translate3d(-50%, -50%, 0);\n position: absolute;\n}\n.color-picker-slider-wrap {\n display: flex;\n align-items: center;\n margin-bottom: 2px;\n}\n.color-picker-slider-wrap + .color-picker-slider-wrap {\n margin-top: 5px;\n}\n.color-picker-hex-wrap {\n justify-content: space-between;\n display: flex;\n align-items: center;\n}\n.color-picker-slider-label,\n.color-picker-hex-label {\n font-size: var(--f7-color-picker-label-font-size);\n width: var(--f7-color-picker-label-size);\n flex-shrink: 0;\n margin-right: 12px;\n}\n.color-picker-hex-label {\n width: auto;\n}\n.color-picker-bar-value,\n.color-picker-slider-value,\n.color-picker-hex-value {\n width: var(--f7-color-picker-value-width);\n height: var(--f7-color-picker-value-height);\n background: var(--f7-color-picker-value-bg-color);\n border-radius: var(--f7-color-picker-value-border-radius);\n text-align: center;\n font-size: var(--f7-color-picker-value-font-size);\n display: flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n margin-left: 10px;\n}\n.color-picker-bar-value input,\n.color-picker-slider-value input,\n.color-picker-hex-value input {\n width: 100%;\n height: 100%;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n outline: 0;\n background: transparent;\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n text-align: center;\n display: block;\n border-radius: 4px;\n}\n.color-picker-bar-value input::-webkit-inner-spin-button,\n.color-picker-slider-value input::-webkit-inner-spin-button,\n.color-picker-hex-value input::-webkit-inner-spin-button,\n.color-picker-bar-value input::-webkit-outer-spin-button,\n.color-picker-slider-value input::-webkit-outer-spin-button,\n.color-picker-hex-value input::-webkit-outer-spin-button {\n -webkit-appearance: none;\n appearance: none;\n margin: 0;\n display: none;\n}\n.color-picker-hex-value {\n width: var(--f7-color-picker-hex-value-width);\n}\n.color-picker-hex-value:first-child {\n margin-left: auto;\n}\n.color-picker-slider {\n --f7-range-bar-active-bg-color: transparent;\n --f7-range-bar-size: var(--f7-color-picker-slider-size);\n --f7-range-bar-border-radius: var(--f7-color-picker-slider-size);\n --f7-range-knob-size: var(--f7-color-picker-slider-knob-size);\n --f7-range-knob-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n}\n.color-picker-slider .range-knob {\n transition-duration: 200ms;\n transition-property: transform;\n}\n.color-picker-slider .range-knob:after {\n width: 30px;\n height: 30px;\n margin-left: -16px;\n margin-top: -16px;\n}\n.color-picker-slider .range-knob-active-state .range-knob {\n transform: scale(1.5);\n}\n.md .color-picker-slider.range-slider-min:not(.range-slider-dual) .range-knob {\n background: var(--f7-range-knob-color) !important;\n border: none;\n}\n.color-picker-module-rgb-bars {\n display: flex;\n justify-content: space-around;\n justify-content: space-evenly;\n align-items: stretch;\n height: 100%;\n min-height: var(--f7-color-picker-bar-min-height);\n padding-bottom: 10px;\n padding-top: 10px;\n box-sizing: border-box;\n}\n.color-picker-bar-wrap {\n display: flex;\n align-items: center;\n flex-direction: column-reverse;\n}\n.color-picker-bar {\n --f7-range-bar-active-bg-color: transparent;\n --f7-range-bar-size: var(--f7-color-picker-bar-size);\n --f7-range-bar-border-radius: 2px;\n --f7-range-knob-size: 6px;\n --f7-range-knob-box-shadow: 0 0px 3px rgba(0, 0, 0, 0.3);\n --f7-range-knob-color: #fff;\n}\n.color-picker-bar .range-knob {\n transition-duration: 0ms;\n transition-property: transform;\n border-radius: 3px;\n}\n.color-picker-bar .range-knob-wrap {\n height: 6px;\n width: calc(var(--f7-color-picker-bar-size) - 4px);\n margin-left: calc(-0.5 * (var(--f7-color-picker-bar-size) - 4px));\n}\n.color-picker-bar .range-knob-active-state .range-knob {\n transform: scale(1);\n}\n.md .color-picker-bar.range-slider-min:not(.range-slider-dual) .range-knob {\n background: var(--f7-range-knob-color) !important;\n border: none;\n}\n.color-picker-bar-label {\n font-size: var(--f7-color-picker-label-size);\n margin-top: 12px;\n line-height: 1;\n height: var(--f7-color-picker-label-height);\n flex-shrink: 0;\n}\n.color-picker-bar-value {\n margin-left: 0;\n margin-bottom: 10px;\n}\n.color-picker-slider-alpha {\n --f7-range-knob-color: #fff;\n}\n.color-picker-slider-alpha .range-bar {\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0), #000), linear-gradient(to right, rgba(255, 255, 255, 0.2) 50%, rgba(0, 0, 0, 0.2) 50%), linear-gradient(to left, rgba(255, 255, 255, 0.2) 50%, rgba(0, 0, 0, 0.2) 50%);\n background-size: 100% 100%,\n 6px 3px,\n 6px 3px;\n background-position: 0 0,\n 0px 3px,\n 0 0;\n background-repeat: repeat-y, repeat-x, repeat-x;\n}\n.color-picker-slider-hue .range-bar {\n background-image: linear-gradient(to right, hsl(0, 100%, 50%), hsl(60, 100%, 50%), hsl(120, 100%, 50%), hsl(180, 100%, 50%), hsl(240, 100%, 50%), hsl(300, 100%, 50%), hsl(0, 100%, 50%));\n}\n.color-picker-slider-brightness .range-bar {\n background-image: linear-gradient(to right, #000, #fff);\n}\n.color-picker-module-palette {\n margin-top: 16px;\n}\n.color-picker-module-palette:first-child {\n margin-top: 0;\n}\n.color-picker-module-palette:last-child {\n margin-bottom: 0;\n}\n.color-picker-module-palette:first-child:last-child {\n margin: 0;\n}\n.color-picker-palette {\n display: flex;\n flex-wrap: wrap;\n}\n.color-picker-palette-row {\n width: 100%;\n display: flex;\n flex-wrap: nowrap;\n}\n.color-picker-palette-row .color-picker-palette-value {\n width: 100%;\n}\n.color-picker-palette-value {\n width: var(--f7-color-picker-palette-value-width);\n height: var(--f7-color-picker-palette-value-height);\n cursor: pointer;\n}\n.color-picker-module-initial-current-colors,\n.color-picker-module-current-color {\n margin-left: 10px;\n margin-right: 10px;\n border-radius: var(--f7-color-picker-initial-current-color-border-radius);\n overflow: hidden;\n flex-shrink: 0;\n}\n.color-picker-initial-color,\n.color-picker-current-color {\n height: var(--f7-color-picker-initial-current-color-height);\n}\n.color-picker-initial-current-colors {\n display: flex;\n}\n.color-picker-initial-current-colors .color-picker-initial-color,\n.color-picker-initial-current-colors .color-picker-current-color {\n width: 50%;\n}\n.color-picker-module-rgb-sliders,\n.color-picker-module-hsb-sliders,\n.color-picker-module-alpha-slider,\n.color-picker-module-hue-slider,\n.color-picker-module-brightness-slider,\n.color-picker-module-hex {\n margin-left: 10px;\n margin-right: 10px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders,\n.color-picker-grouped-modules .color-picker-module-alpha-slider,\n.color-picker-grouped-modules .color-picker-module-hue-slider,\n.color-picker-grouped-modules .color-picker-module-brightness-slider,\n.color-picker-grouped-modules .color-picker-module-hex {\n background: var(--f7-color-picker-group-bg-color);\n padding: 8px;\n border-radius: 8px;\n margin-top: 16px;\n margin-left: 8px;\n margin-right: 8px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders:last-child,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders:last-child,\n.color-picker-grouped-modules .color-picker-module-alpha-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hue-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-brightness-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hex:last-child {\n margin-bottom: 16px;\n}\n.color-picker-grouped-modules .color-picker-slider-value,\n.color-picker-grouped-modules .color-picker-hex-value {\n background: var(--f7-color-picker-group-value-bg-color);\n}\n.color-picker-grouped-modules .color-picker-slider-label,\n.color-picker-grouped-modules .color-picker-hex-label {\n margin-left: 5px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:first-child,\n.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:first-child {\n margin-left: 5px;\n}\n.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:last-child,\n.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:last-child {\n margin-right: 5px;\n}\n/* === Treeview === */\n:root {\n --f7-treeview-item-height: 34px;\n --f7-treeview-item-padding-left: 16px;\n --f7-treeview-item-padding-right: 16px;\n --f7-treeview-toggle-size: 24px;\n --f7-treeview-children-offset: 29px;\n --f7-treeview-label-font-weight: 400;\n --f7-treeview-label-text-color: inherit;\n --f7-treeview-icon-size: 24px;\n /*\n --f7-treeview-selectable-selected-bg-color: rgba(var(--f7-theme-color-rgb), 0.2);\n */\n --f7-treeview-toggle-color: rgba(0, 0, 0, 0.5);\n --f7-treeview-toggle-hover-bg-color: rgba(0, 0, 0, 0.1);\n --f7-treeview-toggle-pressed-bg-color: rgba(0, 0, 0, 0.15);\n --f7-treeview-icon-color: rgba(0, 0, 0, 0.5);\n --f7-treeview-selectable-hover-bg-color: rgba(0, 0, 0, 0.1);\n --f7-treeview-link-hover-bg-color: rgba(0, 0, 0, 0.1);\n --f7-treeview-link-pressed-bg-color: rgba(0, 0, 0, 0.15);\n}\n:root .dark,\n:root.dark {\n --f7-treeview-toggle-color: rgba(255, 255, 255, 0.5);\n --f7-treeview-toggle-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-treeview-toggle-pressed-bg-color: rgba(255, 255, 255, 0.1);\n --f7-treeview-icon-color: rgba(255, 255, 255, 0.75);\n --f7-treeview-selectable-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-treeview-link-hover-bg-color: rgba(255, 255, 255, 0.03);\n --f7-treeview-link-pressed-bg-color: rgba(255, 255, 255, 0.11);\n}\n.ios {\n --f7-treeview-label-font-size: 17px;\n}\n.md {\n --f7-treeview-label-font-size: 16px;\n}\n.treeview-item-root {\n padding-left: var(--f7-treeview-item-padding-left);\n padding-right: var(--f7-treeview-item-padding-right);\n min-height: var(--f7-treeview-item-height);\n display: flex;\n align-items: center;\n justify-content: flex-start;\n}\n.treeview-item-content {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.treeview-item-content > i,\n.treeview-item-content > .f7-icons,\n.treeview-item-content > .material-icons {\n font-size: var(--f7-treeview-icon-size);\n color: var(--f7-treeview-icon-color);\n}\n.treeview-item-content:first-child {\n margin-left: calc(var(--f7-treeview-toggle-size) + 5px);\n}\n.treeview-item-content > * + * {\n margin-left: 5px;\n}\n.treeview-item-label {\n font-size: var(--f7-treeview-label-font-size);\n font-weight: var(--f7-treeview-label-font-weight);\n color: var(--f7-treeview-label-text-color);\n}\n.treeview-toggle {\n width: var(--f7-treeview-toggle-size);\n height: var(--f7-treeview-toggle-size);\n cursor: pointer;\n border-radius: 4px;\n background-color: rgba(0, 0, 0, 0);\n transition-duration: 200ms;\n position: relative;\n margin-right: 5px;\n}\n.treeview-toggle.active-state {\n background-color: var(--f7-treeview-toggle-pressed-bg-color);\n}\n.treeview-toggle:after {\n transition-duration: 200ms;\n content: '';\n position: absolute;\n left: 50%;\n top: 50%;\n width: 0;\n height: 0;\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n transform: translate(-50%, -50%);\n border-left: 6px solid var(--f7-treeview-toggle-color);\n}\n.treeview-toggle-hidden {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n}\n.treeview-preloader {\n --f7-preloader-size: var(--f7-treeview-toggle-size);\n margin-right: calc(-1 * var(--f7-treeview-toggle-size));\n}\n.treeview-item-children {\n display: none;\n}\n.treeview-item-opened > .treeview-item-children {\n display: block;\n}\n.treeview-item-opened > .treeview-item-root .treeview-toggle:after {\n transform: translate(-50%, -50%) rotate(90deg);\n}\na.treeview-item-root {\n color: var(--f7-treeview-label-text-color);\n}\n.treeview-item-selectable > .treeview-item-root,\n.treeview-item-selectable.treeview-item-root {\n cursor: pointer;\n transition-duration: 150ms;\n}\na.treeview-item-root {\n transition-duration: 150ms;\n}\na.treeview-item-root.active-state {\n background: var(--f7-treeview-link-pressed-bg-color);\n}\n.treeview-item-toggle > .treeview-item-root,\n.treeview-item-toggle.treeview-item-root {\n cursor: pointer;\n}\n.treeview-item-selected > .treeview-item-root,\n.treeview-item-selected.treeview-item-root {\n background: var(--f7-treeview-selectable-selected-bg-color, rgba(var(--f7-theme-color-rgb), 0.2));\n}\n.treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 1);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 2);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 3);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 4);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 5);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 6);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 7);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 8);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 9);\n}\n.treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item .treeview-item-root {\n padding-left: calc(var(--f7-treeview-item-padding-left) + var(--f7-treeview-children-offset) * 10);\n}\n/* === Stepper === */\n:root {\n --f7-text-editor-font-size: inherit;\n --f7-text-editor-font-weight: inherit;\n --f7-text-editor-border-width: 1px;\n --f7-text-editor-height: 250px;\n --f7-text-editor-margin: 16px;\n --f7-text-editor-padding: 8px;\n --f7-text-editor-button-bg-color: transparent;\n --f7-text-editor-button-size: 28px;\n --f7-text-editor-button-icon-size: 20px;\n --f7-text-editor-button-margin: 2px;\n --f7-text-editor-text-color: #000;\n --f7-text-editor-bg-color: #fff;\n --f7-text-editor-button-divider-color: rgba(0, 0, 0, 0.15);\n}\n:root .dark,\n:root.dark {\n --f7-text-editor-bg-color: #121212;\n --f7-text-editor-text-color: #fff;\n --f7-text-editor-button-divider-color: rgba(255, 255, 255, 0.15);\n}\n.ios {\n --f7-text-editor-toolbar-padding: 6px;\n --f7-text-editor-button-border-radius: 2px;\n --f7-text-editor-placeholder-color: rgba(0, 0, 0, 0.35);\n --f7-text-editor-toolbar-border-color: rgba(0, 0, 0, 0.25);\n --f7-text-editor-toolbar-bg-color: #fff;\n --f7-text-editor-border-color: rgba(0, 0, 0, 0.1);\n --f7-text-editor-button-text-color: #333;\n}\n.ios .dark,\n.ios.dark {\n --f7-text-editor-placeholder-color: rgba(255, 255, 255, 0.35);\n --f7-text-editor-toolbar-bg-color: #121212;\n --f7-text-editor-toolbar-border-color: rgba(255, 255, 255, 0.1);\n --f7-text-editor-toolbar-bg-color: #202020;\n --f7-text-editor-border-color: rgba(255, 255, 255, 0.1);\n --f7-text-editor-button-text-color: #fff;\n}\n.md {\n --f7-text-editor-button-border-radius: 8px;\n --f7-text-editor-toolbar-padding: 8px;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-text-editor-placeholder-color: var(--f7-md-on-surface-variant);\n --f7-text-editor-toolbar-bg-color: var(--f7-md-surface-1);\n --f7-text-editor-border-color: var(--f7-md-outline);\n --f7-text-editor-button-text-color: var(--f7-md-on-surface);\n}\n.text-editor {\n margin: var(--f7-text-editor-margin);\n background-color: var(--f7-text-editor-bg-color);\n display: block;\n position: relative;\n border: var(--f7-text-editor-border-width) solid var(--f7-text-editor-border-color);\n display: flex;\n flex-direction: column;\n align-items: stretch;\n height: var(--f7-text-editor-height);\n box-sizing: border-box;\n}\n.text-editor.text-editor-resizable {\n height: auto;\n}\n.text-editor-toolbar {\n display: flex;\n flex-wrap: wrap;\n background: var(--f7-text-editor-toolbar-bg-color);\n z-index: 100;\n position: relative;\n position: sticky;\n left: 0;\n top: 0;\n padding: var(--f7-text-editor-toolbar-padding);\n flex-shrink: 0;\n box-sizing: border-box;\n}\n.text-editor-toolbar:after {\n content: '';\n position: absolute;\n background-color: var(--f7-text-editor-toolbar-border-color);\n display: block;\n z-index: 15;\n top: auto;\n right: auto;\n bottom: 0;\n left: 0;\n height: 1px;\n width: 100%;\n transform-origin: 50% 100%;\n transform: scaleY(calc(1 / var(--f7-device-pixel-ratio)));\n}\nbutton.text-editor-button {\n -webkit-appearance: none;\n appearance: none;\n border: none;\n padding: 0;\n margin: 0;\n outline: 0;\n font-family: inherit;\n background: transparent;\n cursor: pointer;\n box-shadow: none;\n border-radius: var(--f7-text-editor-button-border-radius);\n position: relative;\n z-index: 1;\n display: flex;\n width: auto;\n overflow: hidden;\n width: var(--f7-text-editor-button-size);\n height: var(--f7-text-editor-button-size);\n align-items: center;\n justify-content: center;\n margin: var(--f7-text-editor-button-margin);\n box-sizing: border-box;\n color: var(--f7-text-editor-button-text-color);\n background-color: var(--f7-text-editor-button-bg-color);\n flex-shrink: 0;\n}\nbutton.text-editor-button i,\nbutton.text-editor-button .f7-icons,\nbutton.text-editor-button .material-icons {\n font-size: var(--f7-text-editor-button-icon-size);\n font-style: normal;\n}\nbutton.text-editor-button i sup,\nbutton.text-editor-button .f7-icons sup,\nbutton.text-editor-button .material-icons sup,\nbutton.text-editor-button i sub,\nbutton.text-editor-button .f7-icons sub,\nbutton.text-editor-button .material-icons sub {\n font-size: 60%;\n}\n.text-editor-button-divider {\n width: 1px;\n background: var(--f7-text-editor-button-divider-color);\n margin: 0 2px;\n flex-shrink: 0;\n}\n.text-editor-content {\n -webkit-user-modify: read-write;\n -webkit-appearance: none;\n appearance: none;\n border: none;\n outline: 0;\n height: 100%;\n -webkit-user-select: text;\n user-select: text;\n padding: var(--f7-text-editor-padding);\n overflow: auto;\n flex-shrink: 10;\n box-sizing: border-box;\n color: var(--f7-text-editor-text-color);\n font-size: var(--f7-text-editor-font-size);\n font-weight: var(--f7-text-editor-font-weight);\n}\n.text-editor-content .text-editor-placeholder {\n pointer-events: none;\n color: var(--f7-text-editor-placeholder-color);\n}\n.text-editor-content img {\n max-width: 100%;\n}\n.text-editor-content a {\n pointer-events: none;\n}\n.text-editor-popover {\n z-index: 12500;\n width: auto;\n max-width: 80vw;\n}\n.text-editor-popover .popover-inner {\n display: flex;\n flex-wrap: wrap;\n padding: 3px;\n}\n.text-editor-keyboard-toolbar {\n position: absolute;\n z-index: 6000;\n --f7-safe-area-bottom: 0px;\n}\n.text-editor-keyboard-toolbar .toolbar-inner {\n justify-content: flex-start !important;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.text-editor-keyboard-toolbar .toolbar-inner::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.text-editor-keyboard-toolbar .toolbar-inner .text-editor-button-divider {\n height: 100%;\n}\n.item-input .text-editor {\n border: none;\n margin: 0;\n background-color: var(--f7-input-bg-color, transparent);\n}\n.item-input .text-editor-content {\n padding-top: var(--f7-textarea-padding-vertical);\n padding-bottom: var(--f7-textarea-padding-vertical);\n padding-left: var(--f7-input-padding-left);\n padding-right: var(--f7-input-padding-right);\n color: var(--f7-input-text-color);\n font-size: var(--f7-input-font-size);\n}\n.item-input .text-editor-toolbar {\n box-shadow: none;\n}\n.item-input .text-editor-toolbar:after {\n display: none !important;\n}\n.item-input-outline .text-editor-content {\n border-radius: var(--f7-input-outline-border-radius);\n}\n.ios button.text-editor-button {\n transition: opacity 300ms;\n}\n.ios button.text-editor-button.active-state {\n opacity: 0.3;\n transition-duration: 0ms;\n}\n.md button.text-editor-button {\n --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);\n}\n.md .text-editor-keyboard-toolbar .toolbar-inner {\n padding-left: 8px;\n padding-right: 8px;\n}\n.pie-chart {\n position: relative;\n}\n.pie-chart svg {\n display: block;\n width: 100%;\n font-size: 0;\n height: auto;\n margin: 0 auto;\n}\n.pie-chart path {\n transition-duration: 150ms;\n}\n.pie-chart-hidden {\n opacity: 0.4;\n}\n.pie-chart-tooltip {\n pointer-events: none;\n text-align: left;\n font-size: 12px;\n line-height: 1.4;\n white-space: nowrap;\n width: auto;\n max-width: none;\n}\n.pie-chart-tooltip-label {\n display: flex;\n align-items: center;\n}\n.pie-chart-tooltip-color {\n display: inline-block;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n margin-right: 4px;\n}\n:root {\n --f7-area-chart-current-line-stroke-width: 2px;\n --f7-area-chart-current-line-stroke: rgba(0, 0, 0, 0.15);\n --f7-area-chart-axis-text-color: inherit;\n --f7-area-chart-axis-height: 1px;\n --f7-area-chart-axis-font-size: 10px;\n --f7-area-chart-axis-font-weight: 500;\n --f7-area-chart-tooltip-font-size: 12px;\n --f7-area-chart-tooltip-total-font-size: 16px;\n --f7-area-chart-tooltip-total-font-weight: bold;\n --f7-area-chart-tooltip-color-size: 10px;\n --f7-area-chart-legend-font-size: 14px;\n --f7-area-chart-legend-font-weight: 500;\n --f7-area-chart-legend-text-color: inherit;\n --f7-area-chart-legend-padding: 4px 8px;\n --f7-area-chart-legend-border-radius: 4px;\n --f7-area-chart-legend-color-size: 14px;\n --f7-area-chart-line-stroke-width: 2px;\n --f7-area-chart-axis-bg-color: rgba(0, 0, 0, 0.15);\n --f7-area-chart-legend-disabled-text-color: rgba(0, 0, 0, 0.22);\n}\n:root .dark,\n:root.dark {\n --f7-area-chart-axis-bg-color: rgba(255, 255, 255, 0.15);\n --f7-area-chart-legend-disabled-text-color: rgba(255, 255, 255, 0.22);\n}\n.ios {\n --f7-area-chart-tooltip-total-label-text-color: rgba(255, 255, 255, 0.75);\n}\n.md {\n --f7-area-chart-tooltip-total-label-text-color: inherit;\n}\n.area-chart {\n position: relative;\n}\n.area-chart svg {\n display: block;\n width: 100%;\n font-size: 0;\n height: auto;\n margin: 0 auto;\n}\n.area-chart path {\n fill: none;\n stroke-width: var(--f7-area-chart-line-stroke-width);\n}\n.area-chart-current-line {\n stroke: var(--f7-area-chart-current-line-stroke);\n stroke-width: var(--f7-area-chart-current-line-stroke-width);\n}\n.area-chart-axis {\n height: var(--f7-area-chart-axis-height);\n background: var(--f7-area-chart-axis-bg-color);\n color: var(--f7-area-chart-axis-text-color);\n display: flex;\n font-size: var(--f7-area-chart-axis-font-size);\n font-weight: var(--f7-area-chart-axis-font-weight);\n justify-content: space-between;\n line-height: 1;\n margin-bottom: 2em;\n}\n.area-chart-axis > span {\n padding-top: 10px;\n width: 0;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n white-space: nowrap;\n}\n.area-chart-axis > span:first-child {\n justify-content: flex-start;\n}\n.area-chart-axis > span:last-child {\n justify-content: flex-end;\n}\n.area-chart-tooltip {\n pointer-events: none;\n text-align: left;\n font-size: var(--f7-area-chart-tooltip-font-size);\n line-height: 1.4;\n}\n.area-chart-tooltip-label {\n color: var(--f7-area-chart-tooltip-total-label-text-color);\n}\n.area-chart-tooltip-total {\n font-size: var(--f7-area-chart-tooltip-total-font-size);\n font-weight: var(--f7-area-chart-tooltip-total-font-weight);\n}\n.area-chart-tooltip-list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n.area-chart-tooltip-list li {\n white-space: nowrap;\n}\n.area-chart-tooltip-list span {\n display: inline-block;\n width: var(--f7-area-chart-tooltip-color-size);\n height: var(--f7-area-chart-tooltip-color-size);\n border-radius: 50%;\n margin-right: 4px;\n}\n.area-chart-axis ~ .area-chart-legend {\n margin-top: 2em;\n}\n.area-chart-legend {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n font-size: var(--f7-area-chart-legend-font-size);\n width: 100%;\n margin-top: 1em;\n}\n.area-chart-legend-button {\n -webkit-appearance: none !important;\n appearance: none !important;\n background-color: transparent;\n border-radius: 0;\n border: none;\n outline: 0 !important;\n cursor: pointer;\n font-family: inherit;\n font-size: inherit;\n box-shadow: none !important;\n}\n.area-chart-legend-item {\n position: relative;\n color: var(--f7-area-chart-legend-text-color);\n width: auto;\n display: flex;\n align-items: center;\n font-weight: var(--f7-area-chart-legend-font-weight);\n transition-duration: 200ms;\n padding: var(--f7-area-chart-legend-padding);\n border-radius: var(--f7-area-chart-legend-border-radius);\n overflow: hidden;\n}\n.area-chart-legend-item span {\n width: var(--f7-area-chart-legend-color-size);\n height: var(--f7-area-chart-legend-color-size);\n margin-right: 4px;\n border-radius: 50%;\n transition-duration: 200ms;\n}\n.area-chart-legend-item-hidden {\n color: var(--f7-area-chart-legend-disabled-text-color);\n}\n.area-chart-legend-item-hidden span {\n background-color: var(--f7-area-chart-legend-disabled-text-color) !important;\n}\n/* === Breadcrumbs === */\n:root {\n --f7-breadcrumbs-spacing: 12px;\n --f7-breadcrumbs-padding: 2px 0;\n --f7-breadcrumbs-icon-size: 24px;\n --f7-breadcrumbs-separator-color: rgba(0, 0, 0, 0.35);\n}\n:root .dark,\n:root.dark {\n --f7-breadcrumbs-separator-color: rgba(255, 255, 255, 0.35);\n}\n.ios {\n --f7-breadcrumbs-item-bg-color: transparent;\n --f7-breadcrumbs-collapsed-border-radius: 4px;\n --f7-breadcrumbs-collapsed-padding: 0px 6px;\n --f7-breadcrumbs-separator-icon: 'chevron_right_ios';\n --f7-breadcrumbs-font-size: 17px;\n --f7-breadcrumbs-item-border-radius: 0px;\n --f7-breadcrumbs-item-padding: 0px;\n --f7-breadcrumbs-item-font-weight: normal;\n --f7-breadcrumbs-item-active-font-weight: 600;\n --f7-breadcrumbs-item-color: rgba(0, 0, 0, 0.55);\n --f7-breadcrumbs-item-active-color: #000;\n --f7-breadcrumbs-collapsed-bg-color: rgba(0, 0, 0, 0.15);\n --f7-breadcrumbs-collapsed-color: rgba(0, 0, 0, 0.75);\n}\n.ios .dark,\n.ios.dark {\n --f7-breadcrumbs-item-color: rgba(255, 255, 255, 0.75);\n --f7-breadcrumbs-item-active-color: #fff;\n --f7-breadcrumbs-collapsed-bg-color: rgba(255, 255, 255, 0.15);\n --f7-breadcrumbs-collapsed-color: rgba(255, 255, 255, 0.75);\n}\n.md {\n --f7-breadcrumbs-collapsed-border-radius: 8px;\n --f7-breadcrumbs-collapsed-padding: 12px 8px;\n --f7-breadcrumbs-separator-icon: 'chevron_right_md';\n --f7-breadcrumbs-font-size: 14px;\n --f7-breadcrumbs-item-border-radius: 8px;\n --f7-breadcrumbs-item-padding: 4px 8px;\n --f7-breadcrumbs-item-font-weight: 500;\n --f7-breadcrumbs-item-active-font-weight: 500;\n}\n.md,\n.md .dark,\n.md [class*='color-'] {\n --f7-breadcrumbs-item-color: var(--f7-theme-color);\n --f7-breadcrumbs-item-bg-color: var(--f7-md-secondary-container);\n --f7-breadcrumbs-item-active-color: var(--f7-md-on-secondary-container);\n --f7-breadcrumbs-collapsed-color: var(--f7-theme-color);\n --f7-breadcrumbs-collapsed-bg-color: var(--f7-md-secondary-container);\n}\n.breadcrumbs {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n font-size: var(--f7-breadcrumbs-font-size);\n overflow: auto;\n white-space: nowrap;\n padding: var(--f7-breadcrumbs-padding);\n scrollbar-width: none;\n scrollbar-color: transparent;\n}\n.breadcrumbs::-webkit-scrollbar {\n -webkit-appearance: none;\n appearance: none;\n width: 0px;\n display: none;\n opacity: 0;\n background: transparent;\n}\n.breadcrumbs::-webkit-scrollbar-track {\n box-shadow: none;\n background: transparent;\n}\n.breadcrumbs::-webkit-scrollbar-thumb {\n background-color: transparent;\n outline: none;\n border-radius: 9999px;\n position: relative;\n}\n.breadcrumbs-separator,\n.breadcrumbs-item,\n.breadcrumbs-collapsed {\n flex-shrink: 0;\n --f7-touch-ripple-color: transparent !important;\n}\n.breadcrumbs-separator + .breadcrumbs-separator,\n.breadcrumbs-separator + .breadcrumbs-item,\n.breadcrumbs-separator + .breadcrumbs-collapsed,\n.breadcrumbs-item + .breadcrumbs-separator,\n.breadcrumbs-item + .breadcrumbs-item,\n.breadcrumbs-item + .breadcrumbs-collapsed,\n.breadcrumbs-collapsed + .breadcrumbs-separator,\n.breadcrumbs-collapsed + .breadcrumbs-item,\n.breadcrumbs-collapsed + .breadcrumbs-collapsed {\n margin-left: var(--f7-breadcrumbs-spacing);\n}\n.breadcrumbs-item {\n color: var(--f7-breadcrumbs-item-color);\n font-weight: var(--f7-breadcrumbs-item-font-weight);\n padding: var(--f7-breadcrumbs-item-padding);\n background-color: var(--f7-breadcrumbs-item-bg-color);\n display: flex;\n align-items: center;\n border-radius: var(--f7-breadcrumbs-item-border-radius);\n}\n.breadcrumbs-item .icon {\n font-size: var(--f7-breadcrumbs-icon-size);\n width: var(--f7-breadcrumbs-icon-size);\n height: var(--f7-breadcrumbs-icon-size);\n}\n.breadcrumbs-item a {\n color: inherit;\n --f7-touch-ripple-color: transparent !important;\n}\n.breadcrumbs-item-active {\n color: var(--f7-breadcrumbs-item-active-color, var(--f7-breadcrumbs-item-color));\n font-weight: var(--f7-breadcrumbs-item-active-font-weight);\n}\n.breadcrumbs-separator {\n color: var(--f7-breadcrumbs-separator-color);\n height: 24px;\n overflow: hidden;\n display: flex;\n align-items: center;\n}\n.breadcrumbs-separator::after {\n font-family: 'framework7-core-icons';\n font-weight: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'liga';\n text-align: center;\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n content: var(--f7-breadcrumbs-separator-icon);\n width: 12px;\n}\n.ios .breadcrumbs-separator::after {\n font-size: 12px;\n height: 11px;\n}\n.md .breadcrumbs-separator::after {\n font-size: 18px;\n height: 18px;\n}\n.breadcrumbs-collapsed {\n display: flex;\n align-items: center;\n padding: var(--f7-breadcrumbs-collapsed-padding);\n background: var(--f7-breadcrumbs-collapsed-bg-color);\n min-height: 1em;\n border-radius: var(--f7-breadcrumbs-collapsed-border-radius);\n cursor: pointer;\n}\n.breadcrumbs-collapsed::before,\n.breadcrumbs-collapsed::after,\n.breadcrumbs-collapsed span {\n content: '';\n width: 4px;\n height: 4px;\n background: var(--f7-breadcrumbs-collapsed-color);\n border-radius: 50%;\n}\n.breadcrumbs-collapsed span {\n margin: 0 3px;\n}\n/* === Typography === */\n:root {\n --f7-typography-padding: 16px;\n --f7-typography-margin: 16px;\n}\n.display-flex {\n display: flex !important;\n}\n.display-block {\n display: block !important;\n}\n.display-inline-flex {\n display: inline-flex !important;\n}\n.display-inline-block {\n display: inline-block !important;\n}\n.display-inline {\n display: inline !important;\n}\n.display-none {\n display: none !important;\n}\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n.flex-shrink-2 {\n flex-shrink: 2 !important;\n}\n.flex-shrink-3 {\n flex-shrink: 3 !important;\n}\n.flex-shrink-4 {\n flex-shrink: 4 !important;\n}\n.flex-shrink-5 {\n flex-shrink: 5 !important;\n}\n.flex-shrink-6 {\n flex-shrink: 6 !important;\n}\n.flex-shrink-7 {\n flex-shrink: 7 !important;\n}\n.flex-shrink-8 {\n flex-shrink: 8 !important;\n}\n.flex-shrink-9 {\n flex-shrink: 9 !important;\n}\n.flex-shrink-10 {\n flex-shrink: 10 !important;\n}\n.flex-direction-row {\n flex-direction: row !important;\n}\n.flex-direction-row-reverse {\n flex-direction: row-reverse !important;\n}\n.flex-direction-column {\n flex-direction: column !important;\n}\n.flex-direction-column-reverse {\n flex-direction: column-reverse !important;\n}\n.justify-content-flex-start {\n justify-content: flex-start !important;\n}\n.justify-content-center {\n justify-content: center !important;\n}\n.justify-content-flex-end {\n justify-content: flex-end !important;\n}\n.justify-content-space-between {\n justify-content: space-between !important;\n}\n.justify-content-space-around {\n justify-content: space-around !important;\n}\n.justify-content-space-evenly {\n justify-content: space-evenly !important;\n}\n.justify-content-stretch {\n justify-content: stretch !important;\n}\n.justify-content-start {\n justify-content: start !important;\n}\n.justify-content-end {\n justify-content: end !important;\n}\n.justify-content-left {\n justify-content: left !important;\n}\n.justify-content-right {\n justify-content: right !important;\n}\n.align-content-flex-start {\n align-content: flex-start !important;\n}\n.align-content-flex-end {\n align-content: flex-end !important;\n}\n.align-content-center {\n align-content: center !important;\n}\n.align-content-space-between {\n align-content: space-between !important;\n}\n.align-content-space-around {\n align-content: space-around !important;\n}\n.align-content-stretch {\n align-content: stretch !important;\n}\n.align-items-baseline {\n align-items: baseline !important;\n}\n.align-items-flex-start {\n align-items: flex-start !important;\n}\n.align-items-flex-end {\n align-items: flex-end !important;\n}\n.align-items-center {\n align-items: center !important;\n}\n.align-items-stretch {\n align-items: stretch !important;\n}\n.align-self-flex-start {\n align-self: flex-start !important;\n}\n.align-self-flex-end {\n align-self: flex-end !important;\n}\n.align-self-center {\n align-self: center !important;\n}\n.align-self-stretch {\n align-self: stretch !important;\n}\n.text-align-left {\n text-align: left !important;\n}\n.text-align-center {\n text-align: center !important;\n}\n.text-align-right {\n text-align: right !important;\n}\n.text-align-justify {\n text-align: justify !important;\n}\n.float-left {\n float: left !important;\n}\n.float-right {\n float: right !important;\n}\n.float-none {\n float: none !important;\n}\n.vertical-align-bottom {\n vertical-align: bottom !important;\n}\n.vertical-align-middle {\n vertical-align: middle !important;\n}\n.vertical-align-top {\n vertical-align: top !important;\n}\n.no-padding {\n padding: 0 !important;\n}\n.no-padding-left {\n padding-left: 0 !important;\n}\n.no-padding-right {\n padding-right: 0 !important;\n}\n.no-padding-horizontal {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n.no-padding-top {\n padding-top: 0 !important;\n}\n.no-padding-bottom {\n padding-bottom: 0 !important;\n}\n.no-padding-vertical {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n.no-margin {\n margin: 0 !important;\n}\n.no-margin-left {\n margin-left: 0 !important;\n}\n.no-margin-right {\n margin-right: 0 !important;\n}\n.no-margin-horizontal {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n.no-margin-top {\n margin-top: 0 !important;\n}\n.no-margin-bottom {\n margin-bottom: 0 !important;\n}\n.no-margin-vertical {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n.width-auto {\n width: auto !important;\n}\n.width-100 {\n width: 100% !important;\n}\n.padding {\n padding: var(--f7-typography-padding) !important;\n}\n.padding-half {\n padding: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-top {\n padding-top: var(--f7-typography-padding) !important;\n}\n.padding-top-half {\n padding-top: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-bottom {\n padding-bottom: var(--f7-typography-padding) !important;\n}\n.padding-bottom-half {\n padding-bottom: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-left {\n padding-left: var(--f7-typography-padding) !important;\n}\n.padding-left-half {\n padding-left: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-right {\n padding-right: var(--f7-typography-padding) !important;\n}\n.padding-right-half {\n padding-right: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-vertical {\n padding-top: var(--f7-typography-padding) !important;\n padding-bottom: var(--f7-typography-padding) !important;\n}\n.padding-vertical-half {\n padding-top: calc(var(--f7-typography-padding) / 2) !important;\n padding-bottom: calc(var(--f7-typography-padding) / 2) !important;\n}\n.padding-horizontal {\n padding-left: var(--f7-typography-padding) !important;\n padding-right: var(--f7-typography-padding) !important;\n}\n.padding-horizontal-half {\n padding-left: calc(var(--f7-typography-padding) / 2) !important;\n padding-right: calc(var(--f7-typography-padding) / 2) !important;\n}\n.margin {\n margin: var(--f7-typography-margin) !important;\n}\n.margin-half {\n margin: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-top {\n margin-top: var(--f7-typography-margin) !important;\n}\n.margin-top-half {\n margin-top: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-bottom {\n margin-bottom: var(--f7-typography-margin) !important;\n}\n.margin-bottom-half {\n margin-bottom: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-left {\n margin-left: var(--f7-typography-margin) !important;\n}\n.margin-left-half {\n margin-left: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-right {\n margin-right: var(--f7-typography-margin) !important;\n}\n.margin-right-half {\n margin-right: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-vertical {\n margin-top: var(--f7-typography-margin) !important;\n margin-bottom: var(--f7-typography-margin) !important;\n}\n.margin-vertical-half {\n margin-top: calc(var(--f7-typography-margin) / 2) !important;\n margin-bottom: calc(var(--f7-typography-margin) / 2) !important;\n}\n.margin-horizontal {\n margin-left: var(--f7-typography-margin) !important;\n margin-right: var(--f7-typography-margin) !important;\n}\n.margin-horizontal-half {\n margin-left: calc(var(--f7-typography-margin) / 2) !important;\n margin-right: calc(var(--f7-typography-margin) / 2) !important;\n}\n[class*='text-color-'] {\n color: var(--f7-theme-color-text-color) !important;\n}\n[class*='bg-color-'] {\n background-color: var(--f7-theme-color-bg-color) !important;\n}\n[class*='border-color-'] {\n border-color: var(--f7-theme-color-border-color) !important;\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/apps/spreadsheeteditor/mobile/dist/js/611.js b/apps/spreadsheeteditor/mobile/dist/js/611.js new file mode 100644 index 0000000000..16b6348e53 --- /dev/null +++ b/apps/spreadsheeteditor/mobile/dist/js/611.js @@ -0,0 +1,2 @@ +/*! For license information please see 611.js.LICENSE.txt */ +"use strict";(self.webpackChunkdocumenteditor=self.webpackChunkdocumenteditor||[]).push([[611],{"../../apps/spreadsheeteditor/mobile/src/less/app.less":function(e,s,t){t.r(s)}}]); \ No newline at end of file diff --git a/apps/spreadsheeteditor/mobile/dist/js/611.js.LICENSE.txt b/apps/spreadsheeteditor/mobile/dist/js/611.js.LICENSE.txt new file mode 100644 index 0000000000..a09e9e3ef9 --- /dev/null +++ b/apps/spreadsheeteditor/mobile/dist/js/611.js.LICENSE.txt @@ -0,0 +1,5 @@ +/*! + * + * * Version: 8.0.1 (build: 0) + * + */ diff --git a/apps/spreadsheeteditor/mobile/dist/js/887.js b/apps/spreadsheeteditor/mobile/dist/js/887.js new file mode 100644 index 0000000000..cc4b5dbeb5 --- /dev/null +++ b/apps/spreadsheeteditor/mobile/dist/js/887.js @@ -0,0 +1,2 @@ +/*! For license information please see 887.js.LICENSE.txt */ +"use strict";(self.webpackChunkdocumenteditor=self.webpackChunkdocumenteditor||[]).push([[887],{"../../apps/spreadsheeteditor/mobile/src/less/app.less":function(e,s,t){t.r(s)}}]); \ No newline at end of file diff --git a/apps/spreadsheeteditor/mobile/dist/js/887.js.LICENSE.txt b/apps/spreadsheeteditor/mobile/dist/js/887.js.LICENSE.txt new file mode 100644 index 0000000000..a09e9e3ef9 --- /dev/null +++ b/apps/spreadsheeteditor/mobile/dist/js/887.js.LICENSE.txt @@ -0,0 +1,5 @@ +/*! + * + * * Version: 8.0.1 (build: 0) + * + */ diff --git a/apps/spreadsheeteditor/mobile/dist/js/app.js b/apps/spreadsheeteditor/mobile/dist/js/app.js new file mode 100644 index 0000000000..ab92d8f9d3 --- /dev/null +++ b/apps/spreadsheeteditor/mobile/dist/js/app.js @@ -0,0 +1,3 @@ +/*! For license information please see app.js.LICENSE.txt */ +(function(){var __webpack_modules__={"../../apps/common/Analytics.js":function(){void 0===window.Common&&(window.Common={}),Common.component=Common.component||{},Common.Analytics=Common.component.Analytics=new function(){var e;return{initialize:function(t,n){if(void 0===t)throw"Analytics: invalid id.";if(void 0===n||"[object String]"!==Object.prototype.toString.apply(n))throw"Analytics: invalid category type.";e=n,$("head").append(''\n );\n },\n\n trackEvent: function(action, label, value) {\n\n if (typeof action !== 'undefined' && Object.prototype.toString.apply(action) !== '[object String]')\n throw 'Analytics: invalid action type.';\n\n if (typeof label !== 'undefined' && Object.prototype.toString.apply(label) !== '[object String]')\n throw 'Analytics: invalid label type.';\n\n if (typeof value !== 'undefined' && !(Object.prototype.toString.apply(value) === '[object Number]' && isFinite(value)))\n throw 'Analytics: invalid value type.';\n\n if (typeof _gaq === 'undefined')\n return;\n\n if (_category === 'undefined')\n throw 'Analytics is not initialized.';\n\n _gaq.push(['_trackEvent', _category, action, label, value]);\n }\n }\n })();\n","/*\n * (c) Copyright Ascensio System SIA 2010-2023\n *\n * This program is a free software product. You can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License (AGPL)\n * version 3 as published by the Free Software Foundation. In accordance with\n * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect\n * that Ascensio System SIA expressly excludes the warranty of non-infringement\n * of any third-party rights.\n *\n * This program is distributed WITHOUT ANY WARRANTY; without even the implied\n * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For\n * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html\n *\n * You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish\n * street, Riga, Latvia, EU, LV-1050.\n *\n * The interactive user interfaces in modified source and object code versions\n * of the Program must display Appropriate Legal Notices, as required under\n * Section 5 of the GNU AGPL version 3.\n *\n * Pursuant to Section 7(b) of the License you must retain the original Product\n * logo when distributing the program. Pursuant to Section 7(e) we decline to\n * grant you any rights under trademark law for use of our trademarks.\n *\n * All the Product's GUI elements, including illustrations and icon sets, as\n * well as technical writing content are licensed under the terms of the\n * Creative Commons Attribution-ShareAlike 4.0 International. See the License\n * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode\n *\n */\n\nif (window.Common === undefined) {\n window.Common = {};\n}\n\n Common.Gateway = new(function() {\n var me = this,\n $me = $(me);\n\n var commandMap = {\n 'init': function(data) {\n $me.trigger('init', data);\n },\n\n 'openDocument': function(data) {\n $me.trigger('opendocument', data);\n },\n\n 'openDocumentFromBinary': function(data) {\n $me.trigger('opendocumentfrombinary', data);\n },\n\n 'showMessage': function(data) {\n $me.trigger('showmessage', data);\n },\n\n 'applyEditRights': function(data) {\n $me.trigger('applyeditrights', data);\n },\n\n 'processSaveResult': function(data) {\n $me.trigger('processsaveresult', data);\n },\n\n 'processRightsChange': function(data) {\n $me.trigger('processrightschange', data);\n },\n\n 'refreshHistory': function(data) {\n $me.trigger('refreshhistory', data);\n },\n\n 'setHistoryData': function(data) {\n $me.trigger('sethistorydata', data);\n },\n\n 'setEmailAddresses': function(data) {\n $me.trigger('setemailaddresses', data);\n },\n\n 'setActionLink': function (data) {\n $me.trigger('setactionlink', data.url);\n },\n\n 'processMailMerge': function(data) {\n $me.trigger('processmailmerge', data);\n },\n\n 'downloadAs': function(data) {\n $me.trigger('downloadas', data);\n },\n\n 'processMouse': function(data) {\n $me.trigger('processmouse', data);\n },\n\n 'internalCommand': function(data) {\n $me.trigger('internalcommand', data);\n },\n\n 'resetFocus': function(data) {\n $me.trigger('resetfocus', data);\n },\n\n 'setUsers': function(data) {\n $me.trigger('setusers', data);\n },\n\n 'showSharingSettings': function(data) {\n $me.trigger('showsharingsettings', data);\n },\n\n 'setSharingSettings': function(data) {\n $me.trigger('setsharingsettings', data);\n },\n\n 'insertImage': function(data) {\n $me.trigger('insertimage', data);\n },\n\n 'setMailMergeRecipients': function(data) {\n $me.trigger('setmailmergerecipients', data);\n },\n\n 'setRevisedFile': function(data) {\n $me.trigger('setrevisedfile', data);\n },\n\n 'setFavorite': function(data) {\n $me.trigger('setfavorite', data);\n },\n\n 'requestClose': function(data) {\n $me.trigger('requestclose', data);\n },\n\n 'blurFocus': function(data) {\n $me.trigger('blurfocus', data);\n },\n\n 'grabFocus': function(data) {\n $me.trigger('grabfocus', data);\n },\n\n 'setReferenceData': function(data) {\n $me.trigger('setreferencedata', data);\n },\n\n 'setRequestedDocument': function(data) {\n $me.trigger('setrequesteddocument', data);\n },\n\n 'setRequestedSpreadsheet': function(data) {\n $me.trigger('setrequestedspreadsheet', data);\n },\n\n 'setReferenceSource': function(data) {\n $me.trigger('setreferencesource', data);\n },\n\n 'startFilling': function(data) {\n $me.trigger('startfilling', data);\n }\n };\n\n var _postMessage = function(msg, buffer) {\n // TODO: specify explicit origin\n if (window.parent && window.JSON) {\n msg.frameEditorId = window.frameEditorId;\n buffer ? window.parent.postMessage(msg, \"*\", [buffer]) : window.parent.postMessage(window.JSON.stringify(msg), \"*\");\n }\n };\n\n var _onMessage = function(msg) {\n // TODO: check message origin\n if (msg.origin !== window.parentOrigin && msg.origin !== window.location.origin && !(msg.origin===\"null\" && (window.parentOrigin===\"file://\" || window.location.origin===\"file://\"))) return;\n\n var data = msg.data;\n if (data && data.command === 'openDocumentFromBinary') {\n handler = commandMap[data.command];\n if (handler) {\n handler.call(this, data.data);\n }\n return;\n }\n\n if (Object.prototype.toString.apply(data) !== '[object String]' || !window.JSON) {\n return;\n }\n\n var cmd, handler;\n\n try {\n cmd = window.JSON.parse(data)\n } catch(e) {\n cmd = '';\n }\n\n if (cmd) {\n handler = commandMap[cmd.command];\n if (handler) {\n handler.call(this, cmd.data);\n }\n }\n };\n\n var fn = function(e) { _onMessage(e); };\n\n if (window.attachEvent) {\n window.attachEvent('onmessage', fn);\n } else {\n window.addEventListener('message', fn, false);\n }\n\n return {\n\n appReady: function() {\n _postMessage({ event: 'onAppReady' });\n },\n\n requestEditRights: function() {\n _postMessage({ event: 'onRequestEditRights' });\n },\n\n requestHistory: function() {\n _postMessage({ event: 'onRequestHistory' });\n },\n\n requestHistoryData: function(revision) {\n _postMessage({\n event: 'onRequestHistoryData',\n data: revision\n });\n },\n\n requestRestore: function(version, url, fileType) {\n _postMessage({\n event: 'onRequestRestore',\n data: {\n version: version,\n url: url,\n fileType: fileType\n }\n });\n },\n\n requestEmailAddresses: function() {\n _postMessage({ event: 'onRequestEmailAddresses' });\n },\n\n requestStartMailMerge: function() {\n _postMessage({event: 'onRequestStartMailMerge'});\n },\n\n requestHistoryClose: function(revision) {\n _postMessage({event: 'onRequestHistoryClose'});\n },\n\n reportError: function(code, description) {\n _postMessage({\n event: 'onError',\n data: {\n errorCode: code,\n errorDescription: description\n }\n });\n },\n\n reportWarning: function(code, description) {\n _postMessage({\n event: 'onWarning',\n data: {\n warningCode: code,\n warningDescription: description\n }\n });\n },\n\n sendInfo: function(info) {\n _postMessage({\n event: 'onInfo',\n data: info\n });\n },\n\n setDocumentModified: function(modified) {\n _postMessage({\n event: 'onDocumentStateChange',\n data: modified\n });\n },\n\n internalMessage: function(type, data) {\n _postMessage({\n event: 'onInternalMessage',\n data: {\n type: type,\n data: data\n }\n });\n },\n\n updateVersion: function() {\n _postMessage({ event: 'onOutdatedVersion' });\n },\n\n downloadAs: function(url, fileType) {\n _postMessage({\n event: 'onDownloadAs',\n data: {\n url: url,\n fileType: fileType\n }\n });\n },\n\n requestSaveAs: function(url, title, fileType) {\n _postMessage({\n event: 'onRequestSaveAs',\n data: {\n url: url,\n title: title,\n fileType: fileType\n }\n });\n },\n\n collaborativeChanges: function() {\n _postMessage({event: 'onCollaborativeChanges'});\n },\n\n requestRename: function(title) {\n _postMessage({event: 'onRequestRename', data: title});\n },\n\n metaChange: function(meta) {\n _postMessage({event: 'onMetaChange', data: meta});\n },\n\n documentReady: function() {\n _postMessage({ event: 'onDocumentReady' });\n },\n\n requestClose: function() {\n _postMessage({event: 'onRequestClose'});\n },\n\n requestMakeActionLink: function (config) {\n _postMessage({event:'onMakeActionLink', data: config});\n },\n\n requestUsers: function (command, id) {\n _postMessage({event:'onRequestUsers', data: {c: command, id: id}});\n },\n\n requestSendNotify: function (emails) {\n _postMessage({event:'onRequestSendNotify', data: emails});\n },\n\n requestInsertImage: function (command) {\n _postMessage({event:'onRequestInsertImage', data: {c: command}});\n },\n\n requestMailMergeRecipients: function () {\n _postMessage({event:'onRequestMailMergeRecipients'});\n },\n\n requestCompareFile: function () {\n _postMessage({event:'onRequestCompareFile'});\n },\n\n requestSharingSettings: function () {\n _postMessage({event:'onRequestSharingSettings'});\n },\n\n requestCreateNew: function () {\n _postMessage({event:'onRequestCreateNew'});\n },\n\n requestReferenceData: function (data) {\n _postMessage({event:'onRequestReferenceData', data: data});\n },\n\n requestOpen: function (data) {\n _postMessage({event:'onRequestOpen', data: data});\n },\n\n requestSelectDocument: function (command) {\n _postMessage({event:'onRequestSelectDocument', data: {c: command}});\n },\n\n requestSelectSpreadsheet: function (command) {\n _postMessage({event:'onRequestSelectSpreadsheet', data: {c: command}});\n },\n\n requestReferenceSource: function () {\n _postMessage({event:'onRequestReferenceSource'});\n },\n\n requestStartFilling: function () {\n _postMessage({event:'onRequestStartFilling'});\n },\n\n pluginsReady: function() {\n _postMessage({ event: 'onPluginsReady' });\n },\n\n saveDocument: function(data) {\n data && _postMessage({\n event: 'onSaveDocument',\n data: data.buffer\n }, data.buffer);\n },\n\n submitForm: function() {\n _postMessage({event: 'onSubmit'});\n },\n\n on: function(event, handler){\n var localHandler = function(event, data){\n handler.call(me, data)\n };\n\n $me.on(event, localHandler);\n }\n }\n\n })();\n","/*\n * (c) Copyright Ascensio System SIA 2010-2023\n *\n * This program is a free software product. You can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License (AGPL)\n * version 3 as published by the Free Software Foundation. In accordance with\n * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect\n * that Ascensio System SIA expressly excludes the warranty of non-infringement\n * of any third-party rights.\n *\n * This program is distributed WITHOUT ANY WARRANTY; without even the implied\n * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For\n * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html\n *\n * You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish\n * street, Riga, Latvia, EU, LV-1050.\n *\n * The interactive user interfaces in modified source and object code versions\n * of the Program must display Appropriate Legal Notices, as required under\n * Section 5 of the GNU AGPL version 3.\n *\n * Pursuant to Section 7(b) of the License you must retain the original Product\n * logo when distributing the program. Pursuant to Section 7(e) we decline to\n * grant you any rights under trademark law for use of our trademarks.\n *\n * All the Product's GUI elements, including illustrations and icon sets, as\n * well as technical writing content are licensed under the terms of the\n * Creative Commons Attribution-ShareAlike 4.0 International. See the License\n * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode\n *\n */\n/**\n * LanguageInfo.js\n *\n * Created on 31 January 2014\n *\n */\n\nif ( window.Common === undefined ) {\n window.Common = {};\n}\n\n// TODO: move to Common.Utils\nCommon.util = Common.util||{};\n\nCommon.util.LanguageInfo = new(function() {\n var localLanguageName = { // code: [short-name, native-name, english-name] - fill 3 field when need to add language to editor interface\n 0x0036 : [\"af\", \"Afrikaans\"],\n 0x0436 : [\"af-ZA\", \"Afrikaans (Suid Afrika)\", \"Afrikaans (South Africa)\"],\n 0x001C : [\"sq\", \"Shqipe\"],\n 0x041C : [\"sq-AL\", \"Shqipe (Shqipëria)\", \"Albanian (Albania)\"],\n 0x0084 : [\"gsw\", \"Elsässisch\"],\n 0x0484 : [\"gsw-FR\", \"Elsässisch (Frànkrisch)\", \"Alsatian (France)\"],\n 0x005E : [\"am\", \"አማርኛ\"],\n 0x045E : [\"am-ET\", \"አማርኛ (ኢትዮጵያ)\", \"Amharic (Ethiopia)\"],\n 0x0001 : [\"ar\", \"العربية‏\"],\n 0x1401 : [\"ar-DZ\", \"العربية (الجزائر)‏\", \"Arabic (Algeria)\"],\n 0x3C01 : [\"ar-BH\", \"العربية (البحرين)‏\", \"Arabic (Bahrain)\"],\n 0x0C01 : [\"ar-EG\", \"العربية (مصر)‏\", \"Arabic (Egypt)\"],\n 0x0801 : [\"ar-IQ\", \"العربية (العراق)‏\", \"Arabic (Iraq)\"],\n 0x2C01 : [\"ar-JO\", \"العربية (الأردن)‏\", \"Arabic (Jordan)\"],\n 0x3401 : [\"ar-KW\", \"العربية (الكويت)‏\", \"Arabic (Kuwait)\"],\n 0x3001 : [\"ar-LB\", \"العربية (لبنان)‏\", \"Arabic (Lebanon)\"],\n 0x1001 : [\"ar-LY\", \"العربية (ليبيا)‏\", \"Arabic (Libya)\"],\n 0x1801 : [\"ar-MA\", \"العربية (المملكة المغربية)‏\", \"Arabic (Morocco)\"],\n 0x2001 : [\"ar-OM\", \"العربية (عمان)‏\", \"Arabic (Oman)\"],\n 0x4001 : [\"ar-QA\", \"العربية (قطر)‏\", \"Arabic (Qatar)\"],\n 0x0401 : [\"ar-SA\", \"العربية (المملكة العربية السعودية)‏\", \"Arabic (Saudi Arabia)\"],\n 0x2801 : [\"ar-SY\", \"العربية (سوريا)‏\", \"Arabic (Syria)\"],\n 0x1C01 : [\"ar-TN\", \"العربية (تونس)‏\", \"Arabic (Tunisia)\"],\n 0x3801 : [\"ar-AE\", \"العربية (الإمارات العربية المتحدة)‏\", \"Arabic (U.A.E.)\"],\n 0x2401 : [\"ar-YE\", \"العربية (اليمن)‏\", \"Arabic (Yemen)\"],\n 0x002B : [\"hy\", \"Հայերեն\"],\n 0x042B : [\"hy-AM\", \"Հայերեն (Հայաստան)\", \"Armenian (Armenia)\"],\n 0x004D : [\"as\", \"অসমীয়া\"],\n 0x044D : [\"as-IN\", \"অসমীয়া (ভাৰত)\", \"Assamese (India)\"],\n 0x002C : [\"az\", \"Azərbaycan­ılı\"],\n 0x742C : [\"az-Cyrl\", \"Азәрбајҹан дили\"],\n 0x082C : [\"az-Cyrl-AZ\", \"Азәрбајҹан (Азәрбајҹан)\", \"Azeri (Cyrillic, Azerbaijan)\"],\n 0x782C : [\"az-Latn\", \"Azərbaycan­ılı\"],\n 0x042C : [\"az-Latn-AZ\", \"Azərbaycan­ılı (Azərbaycan)\", \"Azeri (Latin, Azerbaijan)\"],\n 0x006D : [\"ba\", \"Башҡорт\"],\n 0x046D : [\"ba-RU\", \"Башҡорт (Россия)\", \"Bashkir (Russia)\"],\n 0x002D : [\"eu\", \"Euskara\"],\n 0x042D : [\"eu-ES\", \"Euskara (Euskara)\", \"Basque (Basque)\"],\n 0x0023 : [\"be\", \"Беларускі\"],\n 0x0423 : [\"be-BY\", \"Беларускі (Беларусь)\", \"Belarusian (Belarus)\"],\n 0x0045 : [\"bn\", \"বাংলা\"],\n 0x0845 : [\"bn-BD\", \"বাংলা (বাংলাদেশ)\", \"Bengali (Bangladesh)\"],\n 0x0445 : [\"bn-IN\", \"বাংলা (ভারত)\", \"Bengali (India)\"],\n 0x781A : [\"bs\", \"bosanski\"],\n 0x641A : [\"bs-Cyrl\", \"Босански (Ћирилица)\"],\n 0x201A : [\"bs-Cyrl-BA\", \"Босански (Босна и Херцеговина)\", \"Bosnian (Cyrillic) (Bosnia and Herzegovina)\"],\n 0x681A : [\"bs-Latn\", \"Bosanski (Latinica)\"],\n 0x141A : [\"bs-Latn-BA\", \"Bosanski (Bosna i Hercegovina)\", \"Bosnian (Latin) (Bosnia and Herzegovina)\"],\n 0x007E : [\"br\", \"Brezhoneg\"],\n 0x047E : [\"br-FR\", \"Brezhoneg (Frañs)\", \"Breton (France)\"],\n 0x0002 : [\"bg\", \"Български\"],\n 0x0402 : [\"bg-BG\", \"Български (България)\", \"Bulgarian (Bulgaria)\"],\n 0x0003 : [\"ca\", \"Català\"],\n 0x0403 : [\"ca-ES\", \"Català (Català)\", \"Catalan (Catalan)\"],\n 0x0803 : [\"ca-ES-valencia\", \"Català (Valencià)\", \"Catalan (Valencia)\"],\n 0x7804 : [\"zh\", \"中文\"],\n 0x0004 : [\"zh-Hans\", \"中文(简体)\", \"Chinese (Simplified)\"],\n 0x0804 : [\"zh-CN\", \"中文(中华人民共和国)\", \"Chinese (People's Republic of China)\"],\n 0x1004 : [\"zh-SG\", \"中文(新加坡)\", \"Chinese (Simplified, Singapore)\"],\n 0x7C04 : [\"zh-Hant\", \"中文(繁體)\", \"Chinese (Traditional)\"],\n 0x0C04 : [\"zh-HK\", \"中文(香港特別行政區)\", \"Chinese (Traditional, Hong Kong S.A.R.)\"],\n 0x1404 : [\"zh-MO\", \"中文(澳門特別行政區)\", \"Chinese (Traditional, Macao S.A.R.)\"],\n 0x0404 : [\"zh-TW\", \"中文(台灣)\", \"Chinese (Traditional, Taiwan)\"],\n 0x0083 : [\"co\", \"Corsu\"],\n 0x0483 : [\"co-FR\", \"Corsu (France)\", \"Corsican (France)\"],\n 0x001A : [\"hr\", \"Hrvatski\"],\n 0x041A : [\"hr-HR\", \"Hrvatski (Hrvatska)\", \"Croatian (Croatia)\"],\n 0x101A : [\"hr-BA\", \"Hrvatski (Bosna i Hercegovina)\", \"Croatian (Bosnia and Herzegovina)\"],\n 0x0005 : [\"cs\", \"Čeština\"],\n 0x0405 : [\"cs-CZ\", \"Čeština (Česká republika)\", \"Czech (Czech Republic)\"],\n 0x0006 : [\"da\", \"Dansk\"],\n 0x0406 : [\"da-DK\", \"Dansk (Danmark)\", \"Danish (Denmark)\"],\n 0x008C : [\"prs\", \"درى‏\"],\n 0x048C : [\"prs-AF\", \"درى (افغانستان)‏\", \"Dari (Afghanistan)\"],\n 0x0065 : [\"dv\", \"ދިވެހިބަސް‏\"],\n 0x0465 : [\"dv-MV\", \"ދިވެހިބަސް (ދިވެހި ރާއްޖެ)‏\", \"Divehi (Maldives)\"],\n 0x0013 : [\"nl\", \"Nederlands\"],\n 0x0813 : [\"nl-BE\", \"Nederlands (België)\", \"Dutch (Belgium)\"],\n 0x0413 : [\"nl-NL\", \"Nederlands (Nederland)\", \"Dutch (Netherlands)\"],\n 0x0009 : [\"en\", \"English\"],\n 0x0C09 : [\"en-AU\", \"English (Australia)\", \"English (Australia)\"],\n 0x2809 : [\"en-BZ\", \"English (Belize)\", \"English (Belize)\"],\n 0x1009 : [\"en-CA\", \"English (Canada)\", \"English (Canada)\"],\n 0x2409 : [\"en-029\", \"English (Caribbean)\", \"English (Caribbean)\"],\n 0x4009 : [\"en-IN\", \"English (India)\", \"English (India)\"],\n 0x1809 : [\"en-IE\", \"English (Ireland)\", \"English (Ireland)\"],\n 0x2009 : [\"en-JM\", \"English (Jamaica)\", \"English (Jamaica)\"],\n 0x4409 : [\"en-MY\", \"English (Malaysia)\", \"English (Malaysia)\"],\n 0x1409 : [\"en-NZ\", \"English (New Zealand)\", \"English (New Zealand)\"],\n 0x3409 : [\"en-PH\", \"English (Philippines)\", \"English (Philippines)\"],\n 0x4809 : [\"en-SG\", \"English (Singapore)\", \"English (Singapore)\"],\n 0x1C09 : [\"en-ZA\", \"English (South Africa)\", \"English (South Africa)\"],\n 0x2C09 : [\"en-TT\", \"English (Trinidad y Tobago)\", \"English (Trinidad y Tobago)\"],\n 0x0809 : [\"en-GB\", \"English (United Kingdom)\", \"English (United Kingdom)\"],\n 0x0409 : [\"en-US\", \"English (United States)\", \"English (United States)\"],\n 0x3009 : [\"en-ZW\", \"English (Zimbabwe)\", \"English (Zimbabwe)\"],\n 0x3c09 : [\"en-HK\", \"English (Hong Kong)\", \"English (Hong Kong)\"],\n 0x3809 : [\"en-ID\", \"English (Indonesia)\", \"English (Indonesia)\"],\n 0x0025 : [\"et\", \"Eesti\"],\n 0x0425 : [\"et-EE\", \"Eesti (Eesti)\", \"Estonian (Estonia)\"],\n 0x0038 : [\"fo\", \"Føroyskt\"],\n 0x0438 : [\"fo-FO\", \"Føroyskt (Føroyar)\", \"Faroese (Faroe Islands)\"],\n 0x0064 : [\"fil\", \"Filipino\"],\n 0x0464 : [\"fil-PH\", \"Filipino (Pilipinas)\", \"Filipino (Philippines)\"],\n 0x000B : [\"fi\", \"Suomi\"],\n 0x040B : [\"fi-FI\", \"Suomi (Suomi)\", \"Finnish (Finland)\"],\n 0x000C : [\"fr\", \"Français\"],\n 0x080C : [\"fr-BE\", \"Français (Belgique)\", \"French (Belgium)\"],\n 0x0C0C : [\"fr-CA\", \"Français (Canada)\", \"French (Canada)\"],\n 0x040C : [\"fr-FR\", \"Français (France)\", \"French (France)\"],\n 0x140C : [\"fr-LU\", \"Français (Luxembourg)\", \"French (Luxembourg)\"],\n 0x180C : [\"fr-MC\", \"Français (Principauté de Monaco)\", \"French (Principality of Monaco)\"],\n 0x100C : [\"fr-CH\", \"Français (Suisse)\", \"French (Switzerland)\"],\n 0x3c0c : [\"fr-HT\", \"Français (Haïti)\", \"French (Haiti)\"],\n 0x240c : [\"fr-CG\", \"Français (Congo-Brazzaville)\", \"French (Congo)\"],\n 0x300c : [\"fr-CI\", \"Français (Côte d’Ivoire)\", \"French (Cote d'Ivoire)\"],\n 0x2c0c : [\"fr-CM\", \"Français (Cameroun)\", \"French (Cameroon)\"],\n 0x380c : [\"fr-MA\", \"Français (Maroc)\", \"French (Morocco)\"],\n 0x340c : [\"fr-ML\", \"Français (Mali)\", \"French (Mali)\"],\n 0x200c : [\"fr-RE\", \"Français (La Réunion)\", \"French (Reunion)\"],\n 0x280c : [\"fr-SN\", \"Français (Sénégal)\", \"French (Senegal)\"],\n 0x1c0c : [\"fr-West\", \"French\"],\n 0x0062 : [\"fy\", \"Frysk\"],\n 0x0462 : [\"fy-NL\", \"Frysk (Nederlân)\", \"Frisian (Netherlands)\"],\n 0x0056 : [\"gl\", \"Galego\"],\n 0x0456 : [\"gl-ES\", \"Galego (Galego)\", \"Galician (Galician)\"],\n 0x0037 : [\"ka\", \"ქართული\"],\n 0x0437 : [\"ka-GE\", \"ქართული (საქართველო)\", \"Georgian (Georgia)\"],\n 0x0007 : [\"de\", \"Deutsch\"],\n 0x0C07 : [\"de-AT\", \"Deutsch (Österreich)\", \"German (Austria)\"],\n 0x0407 : [\"de-DE\", \"Deutsch (Deutschland)\", \"German (Germany)\"],\n 0x1407 : [\"de-LI\", \"Deutsch (Liechtenstein)\", \"German (Liechtenstein)\"],\n 0x1007 : [\"de-LU\", \"Deutsch (Luxemburg)\", \"German (Luxembourg)\"],\n 0x0807 : [\"de-CH\", \"Deutsch (Schweiz)\", \"German (Switzerland)\"],\n 0x0008 : [\"el\", \"Ελληνικά\"],\n 0x0408 : [\"el-GR\", \"Ελληνικά (Ελλάδα)\", \"Greek (Greece)\"],\n 0x006F : [\"kl\", \"Kalaallisut\"],\n 0x046F : [\"kl-GL\", \"Kalaallisut (Kalaallit Nunaat)\", \"Greenlandic (Greenland)\"],\n 0x0047 : [\"gu\", \"ગુજરાતી\"],\n 0x0447 : [\"gu-IN\", \"ગુજરાતી (ભારત)\", \"Gujarati (India)\"],\n 0x0068 : [\"ha\", \"Hausa\"],\n 0x7C68 : [\"ha-Latn\", \"Hausa (Latin)\"],\n 0x0468 : [\"ha-Latn-NG\", \"Hausa (Nigeria)\", \"Hausa (Latin) (Nigeria)\"],\n 0x000D : [\"he\", \"עברית‏\"],\n 0x040D : [\"he-IL\", \"עברית (ישראל)‏\", \"Hebrew (Israel)\"],\n 0x0039 : [\"hi\", \"हिंदी\"],\n 0x0439 : [\"hi-IN\", \"हिंदी (भारत)\", \"Hindi (India)\"],\n 0x000E : [\"hu\", \"Magyar\"],\n 0x040E : [\"hu-HU\", \"Magyar (Magyarország)\", \"Hungarian (Hungary)\"],\n 0x000F : [\"is\", \"Íslenska\"],\n 0x040F : [\"is-IS\", \"Íslenska (Ísland)\", \"Icelandic (Iceland)\"],\n 0x0070 : [\"ig\", \"Igbo\"],\n 0x0470 : [\"ig-NG\", \"Igbo (Nigeria)\", \"Igbo (Nigeria)\"],\n 0x0021 : [\"id\", \"Bahasa Indonesia\"],\n 0x0421 : [\"id-ID\", \"Bahasa Indonesia (Indonesia)\", \"Indonesian (Indonesia)\"],\n 0x005D : [\"iu\", \"Inuktitut\"],\n 0x7C5D : [\"iu-Latn\", \"Inuktitut (Qaliujaaqpait)\"],\n 0x085D : [\"iu-Latn-CA\", \"Inuktitut (Kanatami) (kanata)\", \"Inuktitut (Latin) (Canada)\"],\n 0x785D : [\"iu-Cans\", \"ᐃᓄᒃᑎᑐᑦ (ᖃᓂᐅᔮᖅᐸᐃᑦ)\"],\n 0x045D : [\"iu-Cans-CA\", \"ᐃᓄᒃᑎᑐᑦ (ᑲᓇᑕᒥ)\", \"Inuktitut (Canada)\"],\n 0x003C : [\"ga\", \"Gaeilge\"],\n 0x083C : [\"ga-IE\", \"Gaeilge (Éire)\", \"Irish (Ireland)\"],\n 0x0034 : [\"xh\", \"isiXhosa\"],\n 0x0434 : [\"xh-ZA\", \"isiXhosa (uMzantsi Afrika)\", \"isiXhosa (South Africa)\"],\n 0x0035 : [\"zu\", \"isiZulu\"],\n 0x0435 : [\"zu-ZA\", \"isiZulu (iNingizimu Afrika)\", \"isiZulu (South Africa)\"],\n 0x0010 : [\"it\", \"Italiano\"],\n 0x0410 : [\"it-IT\", \"Italiano (Italia)\", \"Italian (Italy)\"],\n 0x0810 : [\"it-CH\", \"Italiano (Svizzera)\", \"Italian (Switzerland)\"],\n 0x0011 : [\"ja\", \"日本語\"],\n 0x0411 : [\"ja-JP\", \"日本語 (日本)\", \"Japanese (Japan)\"],\n 0x004B : [\"kn\", \"ಕನ್ನಡ\"],\n 0x044B : [\"kn-IN\", \"ಕನ್ನಡ (ಭಾರತ)\", \"Kannada (India)\"],\n 0x003F : [\"kk\", \"Қазақ\"],\n 0x043F : [\"kk-KZ\", \"Қазақ (Қазақстан)\", \"Kazakh (Kazakhstan)\"],\n 0x0053 : [\"km\", \"ខ្មែរ\"],\n 0x0453 : [\"km-KH\", \"ខ្មែរ (កម្ពុជា)\", \"Khmer (Cambodia)\"],\n 0x0086 : [\"qut\", \"K'iche\"],\n 0x0486 : [\"qut-GT\", \"K'iche (Guatemala)\", \"K'iche (Guatemala)\"],\n 0x0087 : [\"rw\", \"Kinyarwanda\"],\n 0x0487 : [\"rw-RW\", \"Kinyarwanda (Rwanda)\", \"Kinyarwanda (Rwanda)\"],\n 0x0041 : [\"sw\", \"Kiswahili\"],\n 0x0441 : [\"sw-KE\", \"Kiswahili (Kenya)\", \"Kiswahili (Kenya)\"],\n 0x0057 : [\"kok\", \"कोंकणी\"],\n 0x0457 : [\"kok-IN\", \"कोंकणी (भारत)\", \"Konkani (India)\"],\n 0x0012 : [\"ko\", \"한국어\"],\n 0x0412 : [\"ko-KR\", \"한국어 (대한민국)\", \"Korean (Korea)\"],\n 0x0040 : [\"ky\", \"Кыргыз\"],\n 0x0440 : [\"ky-KG\", \"Кыргыз (Кыргызстан)\", \"Kyrgyz (Kyrgyzstan)\"],\n 0x0054 : [\"lo\", \"ລາວ\"],\n 0x0454 : [\"lo-LA\", \"ລາວ (ສ.ປ.ປ. ລາວ)\", \"Lao (Lao P.D.R.)\"],\n 0x0026 : [\"lv\", \"Latviešu\"],\n 0x0426 : [\"lv-LV\", \"Latviešu (Latvija)\", \"Latvian (Latvia)\"],\n 0x0027 : [\"lt\", \"Lietuvių\"],\n 0x0427 : [\"lt-LT\", \"Lietuvių (Lietuva)\", \"Lithuanian (Lithuania)\"],\n 0x7C2E : [\"dsb\", \"Dolnoserbšćina\"],\n 0x082E : [\"dsb-DE\", \"Dolnoserbšćina (Nimska)\", \"Lower Sorbian (Germany)\"],\n 0x006E : [\"lb\", \"Lëtzebuergesch\"],\n 0x046E : [\"lb-LU\", \"Lëtzebuergesch (Luxembourg)\", \"Luxembourgish (Luxembourg)\"],\n 0x042F : [\"mk-MK\", \"Македонски јазик (Македонија)\", \"Macedonian (Former Yugoslav Republic of Macedonia)\"],\n 0x002F : [\"mk\", \"Македонски јазик\"],\n 0x003E : [\"ms\", \"Bahasa Melayu\"],\n 0x083E : [\"ms-BN\", \"Bahasa Melayu (Brunei Darussalam)\", \"Malay (Brunei Darussalam)\"],\n 0x043E : [\"ms-MY\", \"Bahasa Melayu (Malaysia)\", \"Malay (Malaysia)\"],\n 0x004C : [\"ml\", \"മലയാളം\"],\n 0x044C : [\"ml-IN\", \"മലയാളം (ഭാരതം)\", \"Malayalam (India)\"],\n 0x003A : [\"mt\", \"Malti\"],\n 0x043A : [\"mt-MT\", \"Malti (Malta)\", \"Maltese (Malta)\"],\n 0x0081 : [\"mi\", \"Reo Māori\"],\n 0x0481 : [\"mi-NZ\", \"Reo Māori (Aotearoa)\", \"Maori (New Zealand)\"],\n 0x007A : [\"arn\", \"Mapudungun\"],\n 0x047A : [\"arn-CL\", \"Mapudungun (Chile)\", \"Mapudungun (Chile)\"],\n 0x004E : [\"mr\", \"मराठी\"],\n 0x044E : [\"mr-IN\", \"मराठी (भारत)\", \"Marathi (India)\"],\n 0x007C : [\"moh\", \"Kanien'kéha\"],\n 0x047C : [\"moh-CA\", \"Kanien'kéha (Canada)\", \"Mohawk (Canada)\"],\n 0x0050 : [\"mn\", \"Монгол хэл\"],\n 0x7850 : [\"mn-Cyrl\", \"Монгол хэл\"],\n 0x0450 : [\"mn-MN\", \"Монгол хэл (Монгол улс)\", \"Mongolian (Cyrillic, Mongolia)\"],\n 0x7C50 : [\"mn-Mong\", \"ᠮᠤᠨᠭᠭᠤᠯ ᠬᠡᠯᠡ\"],\n 0x0850 : [\"mn-Mong-CN\", \"ᠮᠤᠨᠭᠭᠤᠯ ᠬᠡᠯᠡ (ᠪᠦᠭᠦᠳᠡ ᠨᠠᠢᠷᠠᠮᠳᠠᠬᠤ ᠳᠤᠮᠳᠠᠳᠤ ᠠᠷᠠᠳ ᠣᠯᠣᠰ)\", \"Mongolian (Traditional Mongolian) (People's Republic of China)\"],\n 0x0061 : [\"ne\", \"नेपाली\"],\n 0x0461 : [\"ne-NP\", \"नेपाली (नेपाल)\", \"Nepali (Nepal)\"],\n 0x0861 : [\"ne-IN\", \"नेपाली (भारत)\", \"Nepali (India)\"],\n 0x0014 : [\"no\", \"Norsk\"],\n 0x7C14 : [\"nb\", \"Norsk (bokmål)\"],\n 0x0414 : [\"nb-NO\", \"Norsk, bokmål (Norge)\", \"Norwegian, Bokmål (Norway)\"],\n 0x7814 : [\"nn\", \"Norsk (Nynorsk)\"],\n 0x0814 : [\"nn-NO\", \"Norsk, nynorsk (Noreg)\", \"Norwegian, Nynorsk (Norway)\"],\n 0x0082 : [\"oc\", \"Occitan\"],\n 0x0482 : [\"oc-FR\", \"Occitan (França)\", \"Occitan (France)\"],\n 0x0048 : [\"or\", \"ଓଡ଼ିଆ\"],\n 0x0448 : [\"or-IN\", \"ଓଡ଼ିଆ (ଭାରତ)\", \"Oriya (India)\"],\n 0x0063 : [\"ps\", \"پښتو‏\"],\n 0x0463 : [\"ps-AF\", \"پښتو (افغانستان)‏\", \"Pashto (Afghanistan)\"],\n 0x0029 : [\"fa\", \"فارسى‏\"],\n 0x0429 : [\"fa-IR\", \"فارسى (ایران)‏\", \"Persian (Iran)\"],\n 0x0015 : [\"pl\", \"Polski\"],\n 0x0415 : [\"pl-PL\", \"Polski (Polska)\", \"Polish (Poland)\"],\n 0x0016 : [\"pt\", \"Português\"],\n 0x0416 : [\"pt-BR\", \"Português (Brasil)\", \"Portuguese (Brazil)\"],\n 0x0816 : [\"pt-PT\", \"Português (Portugal)\", \"Portuguese (Portugal)\"],\n 0x0046 : [\"pa\", \"ਪੰਜਾਬੀ\"],\n 0x0446 : [\"pa-IN\", \"ਪੰਜਾਬੀ (ਭਾਰਤ)\", \"Punjabi (India)\"],\n 0x006B : [\"quz\", \"Runasimi\"],\n 0x046B : [\"quz-BO\", \"Runasimi (Qullasuyu)\", \"Quechua (Bolivia)\"],\n 0x086B : [\"quz-EC\", \"Runasimi (Ecuador)\", \"Quechua (Ecuador)\"],\n 0x0C6B : [\"quz-PE\", \"Runasimi (Piruw)\", \"Quechua (Peru)\"],\n 0x0018 : [\"ro\", \"Română\"],\n 0x0418 : [\"ro-RO\", \"Română (România)\", \"Romanian (Romania)\"],\n 0x0818 : [\"ro-MD\", \"Română (Moldova)\", \"Romanian (Republic of Moldova)\"],\n 0x0017 : [\"rm\", \"Rumantsch\"],\n 0x0417 : [\"rm-CH\", \"Rumantsch (Svizra)\", \"Romansh (Switzerland)\"],\n 0x0019 : [\"ru\", \"Русский\"],\n 0x0419 : [\"ru-RU\", \"Русский (Россия)\", \"Russian (Russia)\"],\n 0x0819 : [\"ru-MD\", \"Русский (Молдавия)\", \"Russian (Republic of Moldova)\"],\n 0x703B : [\"smn\", \"Sämikielâ\"],\n 0x243B : [\"smn-FI\", \"Sämikielâ (Suomâ)\", \"Sami (Inari) (Finland)\"],\n 0x7C3B : [\"smj\", \"Julevusámegiella\"],\n 0x103B : [\"smj-NO\", \"Julevusámegiella (Vuodna)\", \"Sami (Lule) (Norway)\"],\n 0x143B : [\"smj-SE\", \"Julevusámegiella (Svierik)\", \"Sami (Lule) (Sweden)\"],\n 0x003B : [\"se\", \"Davvisámegiella\"],\n 0x0C3B : [\"se-FI\", \"Davvisámegiella (Suopma)\", \"Sami (Northern) (Finland)\"],\n 0x043B : [\"se-NO\", \"Davvisámegiella (Norga)\", \"Sami (Northern) (Norway)\"],\n 0x083B : [\"se-SE\", \"Davvisámegiella (Ruoŧŧa)\", \"Sami (Northern) (Sweden)\"],\n 0x743B : [\"sms\", \"Sääm´ǩiõll\"],\n 0x203B : [\"sms-FI\", \"Sääm´ǩiõll (Lää´ddjânnam)\", \"Sami (Skolt) (Finland)\"],\n 0x783B : [\"sma\", \"åarjelsaemiengiele\"],\n 0x183B : [\"sma-NO\", \"åarjelsaemiengiele (Nöörje)\", \"Sami (Southern) (Norway)\"],\n 0x1C3B : [\"sma-SE\", \"åarjelsaemiengiele (Sveerje)\", \"Sami (Southern) (Sweden)\"],\n 0x004F : [\"sa\", \"संस्कृत\"],\n 0x044F : [\"sa-IN\", \"संस्कृत (भारतम्)\", \"Sanskrit (India)\"],\n 0x0091 : [\"gd\", \"Gàidhlig\"],\n 0x0491 : [\"gd-GB\", \"Gàidhlig (An Rìoghachd Aonaichte)\", \"Scottish Gaelic (United Kingdom)\"],\n 0x7C1A : [\"sr\", \"Srpski\"],\n 0x6C1A : [\"sr-Cyrl\", \"Српски (Ћирилица)\"],\n 0x1C1A : [\"sr-Cyrl-BA\", \"Српски (Босна и Херцеговина)\", \"Serbian (Cyrillic) (Bosnia and Herzegovina)\"],\n 0x301A : [\"sr-Cyrl-ME\", \"Српски (Црна Гора)\", \"Serbian (Cyrillic, Montenegro)\"],\n 0x0C1A : [\"sr-Cyrl-CS\", \"Српски (Србија и Црна Гора (Претходно))\", \"Serbian (Cyrillic, Serbia and Montenegro (Former))\"],\n 0x281A : [\"sr-Cyrl-RS\", \"Српски (Србија)\", \"Serbian (Cyrillic, Serbia)\"],\n 0x701A : [\"sr-Latn\", \"Srpski (Latinica)\"],\n 0x181A : [\"sr-Latn-BA\", \"Srpski (Bosna i Hercegovina)\", \"Serbian (Latin, Bosnia and Herzegovina)\"],\n 0x2C1A : [\"sr-Latn-ME\", \"Srpski (Crna Gora)\", \"Serbian (Latin, Montenegro)\"],\n 0x081A : [\"sr-Latn-CS\", \"Srpski (Srbija i Crna Gora (Prethodno))\", \"Serbian (Latin, Serbia and Montenegro (Former))\"],\n 0x241A : [\"sr-Latn-RS\", \"Srpski (Srbija, Latinica)\", \"Serbian (Latin, Serbia)\"],\n 0x006C : [\"nso\", \"Sesotho sa Leboa\"],\n 0x046C : [\"nso-ZA\", \"Sesotho sa Leboa (Afrika Borwa)\", \"Sesotho sa Leboa (South Africa)\"],\n 0x0032 : [\"tn\", \"Setswana\"],\n 0x0432 : [\"tn-ZA\", \"Setswana (Aforika Borwa)\", \"Setswana (South Africa)\"],\n 0x005B : [\"si\", \"සිංහ\"],\n 0x045B : [\"si-LK\", \"සිංහල (ශ්‍රී ලංකාව)\", \"Sinhala (Sri Lanka)\"],\n 0x001B : [\"sk\", \"Slovenčina\"],\n 0x041B : [\"sk-SK\", \"Slovenčina (Slovenská republika)\", \"Slovak (Slovakia)\"],\n 0x0024 : [\"sl\", \"Slovenski\"],\n 0x0424 : [\"sl-SI\", \"Slovenski (Slovenija)\", \"Slovenian (Slovenia)\"],\n 0x000A : [\"es\", \"Español\"],\n 0x2C0A : [\"es-AR\", \"Español (Argentina)\", \"Spanish (Argentina)\"],\n 0x400A : [\"es-BO\", \"Español (Bolivia)\", \"Spanish (Bolivia)\"],\n 0x340A : [\"es-CL\", \"Español (Chile)\", \"Spanish (Chile)\"],\n 0x240A : [\"es-CO\", \"Español (Colombia)\", \"Spanish (Colombia)\"],\n 0x140A : [\"es-CR\", \"Español (Costa Rica)\", \"Spanish (Costa Rica)\"],\n 0x1C0A : [\"es-DO\", \"Español (República Dominicana)\", \"Spanish (Dominican Republic)\"],\n 0x300A : [\"es-EC\", \"Español (Ecuador)\", \"Spanish (Ecuador)\"],\n 0x440A : [\"es-SV\", \"Español (El Salvador)\", \"Spanish (El Salvador)\"],\n 0x100A : [\"es-GT\", \"Español (Guatemala)\", \"Spanish (Guatemala)\"],\n 0x480A : [\"es-HN\", \"Español (Honduras)\", \"Spanish (Honduras)\"],\n 0x080A : [\"es-MX\", \"Español (México)\", \"Spanish (Mexico)\"],\n 0x4C0A : [\"es-NI\", \"Español (Nicaragua)\", \"Spanish (Nicaragua)\"],\n 0x180A : [\"es-PA\", \"Español (Panamá)\", \"Spanish (Panama)\"],\n 0x3C0A : [\"es-PY\", \"Español (Paraguay)\", \"Spanish (Paraguay)\"],\n 0x280A : [\"es-PE\", \"Español (Perú)\", \"Spanish (Peru)\"],\n 0x500A : [\"es-PR\", \"Español (Puerto Rico)\", \"Spanish (Puerto Rico)\"],\n 0x0C0A : [\"es-ES\", \"Español (España, alfabetización internacional)\", \"Spanish (Spain)\"],\n 0x540A : [\"es-US\", \"Español (Estados Unidos)\", \"Spanish (United States)\"],\n 0x380A : [\"es-UY\", \"Español (Uruguay)\", \"Spanish (Uruguay)\"],\n 0x200A : [\"es-VE\", \"Español (Republica Bolivariana de Venezuela)\", \"Spanish (Venezuela)\"],\n 0x040a : [\"es-ES_tradnl\", \"Spanish\"],\n 0x580a : [\"es-419\", \"Español (América Latina y el Caribe)\", \"Spanish (Latin America and the Caribbean)\"],\n 0x5C0a : [\"es-CU\", \"Español (Cuba)\", \"Spanish (Cuba)\"],\n 0x001D : [\"sv\", \"Svenska\"],\n 0x081D : [\"sv-FI\", \"Svenska (Finland)\", \"Swedish (Finland)\"],\n 0x041D : [\"sv-SE\", \"Svenska (Sverige)\", \"Swedish (Sweden)\"],\n 0x005A : [\"syr\", \"ܣܘܪܝܝܐ‏\"],\n 0x045A : [\"syr-SY\", \"ܣܘܪܝܝܐ (سوريا)‏\", \"Syriac (Syria)\"],\n 0x0028 : [\"tg\", \"Тоҷикӣ\"],\n 0x7C28 : [\"tg-Cyrl\", \"Тоҷикӣ\"],\n 0x0428 : [\"tg-Cyrl-TJ\", \"Тоҷикӣ (Тоҷикистон)\", \"Tajik (Cyrillic) (Tajikistan)\"],\n 0x005F : [\"tzm\", \"Tamazight\"],\n 0x7C5F : [\"tzm-Latn\", \"Tamazight (Latin)\"],\n 0x085F : [\"tzm-Latn-DZ\", \"Tamazight (Djazaïr)\", \"Tamazight (Latin) (Algeria)\"],\n 0x0049 : [\"ta\", \"தமிழ்\"],\n 0x0449 : [\"ta-IN\", \"தமிழ் (இந்தியா)\", \"Tamil (India)\"],\n 0x0044 : [\"tt\", \"Татар\"],\n 0x0444 : [\"tt-RU\", \"Татар (Россия)\", \"Tatar (Russia)\"],\n 0x004A : [\"te\", \"తెలుగు\"],\n 0x044A : [\"te-IN\", \"తెలుగు (భారత దేశం)\", \"Telugu (India)\"],\n 0x001E : [\"th\", \"ไทย\"],\n 0x041E : [\"th-TH\", \"ไทย (ไทย)\", \"Thai (Thailand)\"],\n 0x0051 : [\"bo\", \"བོད་ཡིག\"],\n 0x0451 : [\"bo-CN\", \"བོད་ཡིག (ཀྲུང་ཧྭ་མི་དམངས་སྤྱི་མཐུན་རྒྱལ་ཁབ།)\", \"Tibetan (People's Republic of China)\"],\n 0x0851 : [\"bo-BT\", \"Tibetan (Bhutan)\", \"Tibetan (Bhutan)\"],\n 0x001F : [\"tr\", \"Türkçe\"],\n 0x041F : [\"tr-TR\", \"Türkçe (Türkiye)\", \"Turkish (Turkey)\"],\n 0x0042 : [\"tk\", \"Türkmençe\"],\n 0x0442 : [\"tk-TM\", \"Türkmençe (Türkmenistan)\", \"Turkmen (Turkmenistan)\"],\n 0x0022 : [\"uk\", \"Українська\"],\n 0x0422 : [\"uk-UA\", \"Українська (Україна)\", \"Ukrainian (Ukraine)\"],\n 0x002E : [\"hsb\", \"Hornjoserbšćina\"],\n 0x042E : [\"hsb-DE\", \"Hornjoserbšćina (Němska)\", \"Upper Sorbian (Germany)\"],\n 0x0020 : [\"ur\", \"اُردو‏\"],\n 0x0420 : [\"ur-PK\", \"اُردو (پاکستان)‏\", \"Urdu (Islamic Republic of Pakistan)\"],\n 0x0820 : [\"ur-IN\", \"اُردو (بھارت)‏\", \"Urdu (India)\"],\n 0x0080 : [\"ug\", \"ئۇيغۇر يېزىقى‏\"],\n 0x0480 : [\"ug-CN\", \"(ئۇيغۇر يېزىقى (جۇڭخۇا خەلق جۇمھۇرىيىتى‏\", \"Uighur (People's Republic of China)\"],\n 0x7843 : [\"uz-Cyrl\", \"Ўзбек\"],\n 0x0843 : [\"uz-Cyrl-UZ\", \"Ўзбек (Ўзбекистон)\", \"Uzbek (Cyrillic, Uzbekistan)\"],\n 0x0043 : [\"uz\", \"U'zbek\"],\n 0x7C43 : [\"uz-Latn\", \"U'zbek\"],\n 0x0443 : [\"uz-Latn-UZ\", \"U'zbek (U'zbekiston Respublikasi)\", \"Uzbek (Latin, Uzbekistan)\"],\n 0x002A : [\"vi\", \"Tiếng Việt\"],\n 0x042A : [\"vi-VN\", \"Tiếng Việt (Việt Nam)\", \"Vietnamese (Vietnam)\"],\n 0x0052 : [\"cy\", \"Cymraeg\"],\n 0x0452 : [\"cy-GB\", \"Cymraeg (y Deyrnas Unedig)\", \"Welsh (United Kingdom)\"],\n 0x0088 : [\"wo\", \"Wolof\"],\n 0x0488 : [\"wo-SN\", \"Wolof (Sénégal)\", \"Wolof (Senegal)\"],\n 0x0085 : [\"sah\", \"Саха\"],\n 0x0485 : [\"sah-RU\", \"Саха (Россия)\", \"Yakut (Russia)\"],\n 0x0078 : [\"ii\", \"ꆈꌠꁱꂷ\"],\n 0x0478 : [\"ii-CN\", \"ꆈꌠꁱꂷ (ꍏꉸꏓꂱꇭꉼꇩ)\", \"Yi (People's Republic of China)\"],\n 0x006A : [\"yo\", \"Yoruba\"],\n 0x046A : [\"yo-NG\", \"Yoruba (Nigeria)\", \"Yoruba (Nigeria)\"],\n 0x0466 : [\"bin-NG\", \"Bini (Nigeria)\", \"Bini (Nigeria)\"],\n 0x045c : [\"chr-US\", \"ᏣᎳᎩ (ᏌᏊ ᎢᏳᎾᎵᏍᏔᏅ ᏍᎦᏚᎩ)\", \"Cherokee (United States)\"],\n 0x0467 : [\"fuv-NG\", \"Nigerian Fulfulde (Nigeria)\", \"Nigerian Fulfulde (Nigeria)\"],\n 0x0472 : [\"gaz-ET\", \"West Central Oromo (Ethiopia)\", \"West Central Oromo (Ethiopia)\"],\n 0x0474 : [\"gn-PY\", \"Guarani (Paraguay)\", \"Guarani (Paraguay)\"],\n 0x0475 : [\"haw-US\", \"ʻŌlelo Hawaiʻi (ʻAmelika Hui Pū ʻIa)\", \"Hawaiian (United States)\"],\n 0x0469 : [\"ibb-NG\", \"Ibibio (Nigeria)\", \"Ibibio (Nigeria)\"],\n 0x0471 : [\"kr-NG\", \"Kanuri (Nigeria)\", \"Kanuri (Nigeria)\"],\n 0x0458 : [\"mni\", \"Manipuri\", \"Manipuri\"],\n 0x0455 : [\"my-MM\", \"Burmese (Myanmar)\", \"Burmese (Myanmar)\"],\n 0x0479 : [\"pap-AN\", \"Papiamento, Netherlands Antilles\", \"Papiamento, Netherlands Antilles\"],\n 0x0846 : [\"pa-PK\", \"Panjabi (Pakistan)\", \"Panjabi (Pakistan)\"],\n 0x048d : [\"plt-MG\", \"Plateau Malagasy (Madagascar)\", \"Plateau Malagasy (Madagascar)\"],\n 0x0459 : [\"sd-IN\", \"Sindhi (India)\", \"Sindhi (India)\"],\n 0x0859 : [\"sd-PK\", \"Sindhi (Pakistan)\", \"Sindhi (Pakistan)\"],\n 0x0477 : [\"so-SO\", \"Soomaali (Soomaaliya)\", \"Somali (Somalia)\"],\n 0x0430 : [\"st-ZA\", \"Southern Sotho (South Africa)\", \"Southern Sotho (South Africa)\"],\n 0x0473 : [\"ti-ER\", \"ትግርኛ (ኤርትራ)\", \"Tigrinya (Eritrea)\"],\n 0x0873 : [\"ti-ET\", \"ትግርኛ (ኢትዮጵያ)\", \"Tigrinya (Ethiopia)\"],\n 0x045f : [\"tmz\", \"Tamanaku\"],\n 0x0c5f : [\"tmz-MA\", \"Tamaziɣt n laṭlaṣ (Meṛṛuk)\", \"Tamanaku (Morocco)\"],\n 0x0431 : [\"ts-ZA\", \"Tsonga (South Africa)\", \"Tsonga (South Africa)\"],\n 0x0433 : [\"ven-ZA\", \"South Africa\", \"South Africa\"]\n };\n\n return {\n getLocalLanguageName: function(code) {\n return localLanguageName[code] || ['', code];\n },\n\n getLocalLanguageCode: function(name) {\n if (name) {\n for (var code in localLanguageName) {\n if (localLanguageName[code][0].toLowerCase()===name.toLowerCase())\n return code;\n }\n }\n return null;\n },\n\n getLanguages: function() {\n return localLanguageName;\n }\n }\n})();","/*\n * (c) Copyright Ascensio System SIA 2010-2023\n *\n * This program is a free software product. You can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License (AGPL)\n * version 3 as published by the Free Software Foundation. In accordance with\n * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect\n * that Ascensio System SIA expressly excludes the warranty of non-infringement\n * of any third-party rights.\n *\n * This program is distributed WITHOUT ANY WARRANTY; without even the implied\n * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For\n * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html\n *\n * You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish\n * street, Riga, Latvia, EU, LV-1050.\n *\n * The interactive user interfaces in modified source and object code versions\n * of the Program must display Appropriate Legal Notices, as required under\n * Section 5 of the GNU AGPL version 3.\n *\n * Pursuant to Section 7(b) of the License you must retain the original Product\n * logo when distributing the program. Pursuant to Section 7(e) we decline to\n * grant you any rights under trademark law for use of our trademarks.\n *\n * All the Product's GUI elements, including illustrations and icon sets, as\n * well as technical writing content are licensed under the terms of the\n * Creative Commons Attribution-ShareAlike 4.0 International. See the License\n * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode\n *\n */\nif (window.Common === undefined) {\n window.Common = {};\n}\n\nif (Common.Utils === undefined) {\n Common.Utils = {};\n}\n\nfunction _extend_object(dest, source) {\n if ( typeof _ != \"undefined\" ) {\n return _.extend({}, dest, source);\n } else\n if ( !!Object ) {\n return Object.assign({}, dest, source);\n }\n\n return source;\n}\n\nvar utils = new(function() {\n var userAgent = navigator.userAgent.toLowerCase(),\n check = function(regex){\n return regex.test(userAgent);\n },\n isStrict = document.compatMode == \"CSS1Compat\",\n version = function (is, regex) {\n var m;\n return (is && (m = regex.exec(userAgent))) ? parseFloat(m[1]) : 0;\n },\n docMode = document.documentMode,\n isEdge = check(/edge/),\n isOpera = check(/opera/),\n isOpera10_5 = isOpera && check(/version\\/10\\.5/),\n isIE = !isOpera && (check(/msie/) || check(/trident/) || check(/edge/)),\n isIE7 = isIE && ((check(/msie 7/) && docMode != 8 && docMode != 9 && docMode != 10) || docMode == 7),\n isIE8 = isIE && ((check(/msie 8/) && docMode != 7 && docMode != 9 && docMode != 10) || docMode == 8),\n isIE9 = isIE && ((check(/msie 9/) && docMode != 7 && docMode != 8 && docMode != 10) || docMode == 9),\n isIE10 = isIE && ((check(/msie 10/) && docMode != 7 && docMode != 8 && docMode != 9) || docMode == 10),\n isIE11 = isIE && ((check(/trident\\/7\\.0/) && docMode != 7 && docMode != 8 && docMode != 9 && docMode != 10) || docMode == 11),\n isIE6 = isIE && check(/msie 6/),\n isChrome = !isIE && check(/\\bchrome\\b/),\n isWebKit = !isIE && check(/webkit/),\n isSafari = !isIE && !isChrome && check(/safari/),\n isSafari2 = isSafari && check(/applewebkit\\/4/), // unique to Safari 2\n isSafari3 = isSafari && check(/version\\/3/),\n isSafari4 = isSafari && check(/version\\/4/),\n isSafari5_0 = isSafari && check(/version\\/5\\.0/),\n isSafari5 = isSafari && check(/version\\/5/),\n isGecko = !isWebKit && !isIE && check(/gecko/), // IE11 adds \"like gecko\" into the user agent string\n isGecko3 = isGecko && check(/rv:1\\.9/),\n isGecko4 = isGecko && check(/rv:2\\.0/),\n isGecko5 = isGecko && check(/rv:5\\./),\n isGecko10 = isGecko && check(/rv:10\\./),\n isFF3_0 = isGecko3 && check(/rv:1\\.9\\.0/),\n isFF3_5 = isGecko3 && check(/rv:1\\.9\\.1/),\n isFF3_6 = isGecko3 && check(/rv:1\\.9\\.2/),\n isWindows = check(/windows|win32/),\n isMac = check(/macintosh|mac os x/),\n isLinux = check(/linux/),\n chromeVersion = version(true, /\\bchrome\\/(\\d+\\.\\d+)/),\n firefoxVersion = version(true, /\\bfirefox\\/(\\d+\\.\\d+)/),\n ieVersion = version(isIE, /msie (\\d+\\.\\d+)/),\n operaVersion = version(isOpera, /version\\/(\\d+\\.\\d+)/),\n safariVersion = version(isSafari, /version\\/(\\d+\\.\\d+)/),\n webKitVersion = version(isWebKit, /webkit\\/(\\d+\\.\\d+)/),\n isSecure = /^https/i.test(window.location.protocol),\n emailRe = /^(mailto:)?([a-z0-9'\\._-]+@[a-z0-9\\.-]+\\.[a-z0-9]{2,4})([a-яё0-9\\._%+-=\\? :&]*)/i,\n ipRe = /^(((https?)|(ftps?)):\\/\\/)?([\\-\\wа-яё]*:?[\\-\\wа-яё]*@)?(((1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])\\.){3}(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9]))(:\\d+)?(\\/[%\\-\\wа-яё]*(\\.[\\wа-яё]{2,})?(([\\wа-яё\\-\\.\\?\\\\\\/+@&#;:`~=%!,\\(\\)]*)(\\.[\\wа-яё]{2,})?)*)*\\/?/i,\n hostnameRe = /^(((https?)|(ftps?)):\\/\\/)?([\\-\\wа-яё]*:?[\\-\\wа-яё]*@)?(([\\-\\wа-яё]+\\.)+[\\wа-яё\\-]{2,}(:\\d+)?(\\/[%\\-\\wа-яё]*(\\.[\\wа-яё]{2,})?(([\\wа-яё\\-\\.\\?\\\\\\/\\+@&#;:`'~=%!,\\(\\)]*)(\\.[\\wа-яё]{2,})?)*)*\\/?)/i,\n localRe = /^(((https?)|(ftps?)):\\/\\/)([\\-\\wа-яё]*:?[\\-\\wа-яё]*@)?(([\\-\\wа-яё]+)(:\\d+)?(\\/[%\\-\\wа-яё]*(\\.[\\wа-яё]{2,})?(([\\wа-яё\\-\\.\\?\\\\\\/\\+@&#;:`'~=%!,\\(\\)]*)(\\.[\\wа-яё]{2,})?)*)*\\/?)/i,\n emailStrongRe = /(mailto:)?([a-z0-9'\\._-]+@[a-z0-9\\.-]+\\.[a-z0-9]{2,4})([a-яё0-9\\._%+-=\\?:&]*)/ig,\n emailAddStrongRe = /(mailto:|\\s[@]|\\s[+])?([a-z0-9'\\._-]+@[a-z0-9\\.-]+\\.[a-z0-9]{2,4})([a-яё0-9\\._%\\+-=\\?:&]*)/ig,\n ipStrongRe = /(((https?)|(ftps?)):\\/\\/([\\-\\wа-яё]*:?[\\-\\wа-яё]*@)?)(((1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])\\.){3}(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9]))(:\\d+)?(\\/[%\\-\\wа-яё]*(\\.[\\wа-яё]{2,})?(([\\wа-яё\\-\\.\\?\\\\\\/\\+@&#;:`~=%!,\\(\\)]*)(\\.[\\wа-яё]{2,})?)*)*\\/?/ig,\n hostnameStrongRe = /((((https?)|(ftps?)):\\/\\/([\\-\\wа-яё]*:?[\\-\\wа-яё]*@)?)|(([\\-\\wа-яё]*:?[\\-\\wа-яё]*@)?www\\.))((([\\-\\wа-яё]+\\.)+[\\wа-яё\\-]{2,}|([\\-\\wа-яё]+))(:\\d+)?(\\/[%\\-\\wа-яё]*(\\.[\\wа-яё]{2,})?(([\\wа-яё\\-\\.\\?\\\\\\/\\+@&#;:`~=%!,\\(\\)]*)(\\.[\\wа-яё]{2,})?)*)*\\/?)/ig,\n documentSettingsType = {\n \tParagraph : 0,\n Table : 1,\n Header : 2,\n TextArt : 3,\n Shape : 4,\n Image : 5,\n Slide : 6,\n Chart : 7,\n MailMerge : 8,\n Signature : 9,\n Pivot : 10,\n Cell : 11,\n Slicer : 12,\n Form : 13\n },\n importTextType = {\n DRM: 0,\n CSV: 1,\n TXT: 2,\n Paste: 3,\n Columns: 4,\n Data: 5\n },\n isMobile = /android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent || navigator.vendor || window.opera),\n me = this,\n checkSize = function() {\n var scale = {};\n if ( !!window.AscCommon && !!window.AscCommon.checkDeviceScale ) {\n scale = window.AscCommon.checkDeviceScale();\n AscCommon.correctApplicationScale(scale);\n } else {\n var str_mq_125 = \"screen and (-webkit-min-device-pixel-ratio: 1.25) and (-webkit-max-device-pixel-ratio: 1.49), \" +\n \"screen and (min-resolution: 1.25dppx) and (max-resolution: 1.49dppx)\";\n var str_mq_150 = \"screen and (-webkit-min-device-pixel-ratio: 1.5) and (-webkit-max-device-pixel-ratio: 1.74), \" +\n \"screen and (min-resolution: 1.5dppx) and (max-resolution: 1.74dppx)\";\n var str_mq_175 = \"screen and (-webkit-min-device-pixel-ratio: 1.75) and (-webkit-max-device-pixel-ratio: 1.99), \" +\n \"screen and (min-resolution: 1.75dppx) and (max-resolution: 1.99dppx)\";\n var str_mq_200 = \"screen and (-webkit-min-device-pixel-ratio: 2), \" +\n \"screen and (min-resolution: 2dppx), screen and (min-resolution: 192dpi)\";\n const str_mq_225 = \"screen and (-webkit-min-device-pixel-ratio: 2.25), \" +\n \"screen and (min-resolution: 2.25dppx), screen and (min-resolution: 216dpi)\";\n\n if ( window.matchMedia(str_mq_125).matches ) {\n scale.devicePixelRatio = 1.5;\n } else\n if ( window.matchMedia(str_mq_150).matches ) {\n scale.devicePixelRatio = 1.5;\n } else\n if ( window.matchMedia(str_mq_175).matches ) {\n scale.devicePixelRatio = 1.75;\n } else\n if ( window.matchMedia(str_mq_200).matches )\n scale.devicePixelRatio = 2;\n else scale.devicePixelRatio = 1;\n\n if ( window.matchMedia(str_mq_225).matches ) {\n scale.devicePixelRatio = 2.25;\n }\n }\n\n var $root = $(document.body);\n var classes = document.body.className;\n var clear_list = classes.replace(/pixel-ratio__[\\w-]+/gi,'').trim();\n if ( scale.devicePixelRatio < 1.25 ) {\n if ( /pixel-ratio__/.test(classes) ) {\n document.body.className = clear_list;\n }\n } else\n if ( scale.devicePixelRatio < 1.5 ) {\n if ( !/pixel-ratio__1_25/.test(classes) ) {\n document.body.className = clear_list + ' pixel-ratio__1_25';\n }\n } else\n if ( scale.devicePixelRatio < 1.75 ) {\n if ( !/pixel-ratio__1_5/.test(classes) ) {\n document.body.className = clear_list + ' pixel-ratio__1_5';\n }\n } else\n if ( !(scale.devicePixelRatio < 1.75) && scale.devicePixelRatio < 2 ) {\n if ( !/pixel-ratio__1_75/.test(classes) ) {\n document.body.className = clear_list + ' pixel-ratio__1_75';\n }\n } else\n if ( !(scale.devicePixelRatio < 2) && scale.devicePixelRatio < 2.25 ) {\n if ( !/pixel-ratio__2\\b/.test(classes) ) {\n document.body.className = clear_list + ' pixel-ratio__2';\n }\n } else {\n // $root.addClass('pixel-ratio__2_5');\n if ( !/pixel-ratio__2_5/.test(classes) ) {\n document.body.className = clear_list + ' pixel-ratio__2_5';\n }\n }\n\n me.zoom = scale.correct ? scale.zoom : 1;\n me.innerWidth = window.innerWidth * me.zoom;\n me.innerHeight = window.innerHeight * me.zoom;\n me.applicationPixelRatio = scale.applicationPixelRatio || scale.devicePixelRatio;\n };\n checkSizeIE = function() {\n me.innerWidth = window.innerWidth;\n me.innerHeight = window.innerHeight;\n },\n isOffsetUsedZoom = function() {\n if (isChrome && 128 <= chromeVersion)\n return (me.zoom === 1) ? false : true;\n return false;\n },\n getBoundingClientRect = function(element) {\n let rect = element.getBoundingClientRect();\n if (!isOffsetUsedZoom())\n return rect;\n\n let koef = me.zoom;\n let newRect = {}\n if (rect.x!==undefined) newRect.x = rect.x * koef;\n if (rect.y!==undefined) newRect.y = rect.y * koef;\n if (rect.width!==undefined) newRect.width = rect.width * koef;\n if (rect.height!==undefined) newRect.height = rect.height * koef;\n\n if (rect.left!==undefined) newRect.left = rect.left * koef;\n if (rect.top!==undefined) newRect.top = rect.top * koef;\n if (rect.right!==undefined) newRect.right = rect.right * koef;\n if (rect.bottom!==undefined) newRect.bottom = rect.bottom * koef;\n return newRect;\n },\n getOffsetLeft = function(element) {\n if (!isOffsetUsedZoom())\n return element.offsetLeft;\n return element.offsetLeft * me.zoom;\n },\n getOffsetTop = function(element) {\n if (!isOffsetUsedZoom())\n return element.offsetTop;\n return element.offsetTop * me.zoom;\n },\n getOffset = function($element) {\n let pos = $element.offset();\n if (!isOffsetUsedZoom())\n return pos;\n return {left: pos.left * me.zoom, top: pos.top * me.zoom};\n },\n getPosition = function($element) {\n let pos = $element.position();\n if (!isOffsetUsedZoom())\n return pos;\n return {left: pos.left * me.zoom, top: pos.top * me.zoom};\n };\n\n me.zoom = 1;\n me.applicationPixelRatio = 1;\n me.innerWidth = window.innerWidth;\n me.innerHeight = window.innerHeight;\n if ( isIE ) {\n $(document.body).addClass('ie');\n $(window).on('resize', checkSizeIE);\n } else {\n checkSize();\n $(window).on('resize', checkSize);\n }\n\n return {\n checkSize: checkSize,\n\n userAgent: userAgent,\n isStrict: isStrict,\n isIEQuirks: isIE && (!isStrict && (isIE6 || isIE7 || isIE8 || isIE9)),\n isOpera : isOpera,\n isOpera10_5 : isOpera10_5,\n isWebKit : isWebKit,\n isChrome : isChrome,\n isSafari : isSafari,\n isSafari3 : isSafari3,\n isSafari4 : isSafari4,\n isSafari5 : isSafari5,\n isSafari5_0 : isSafari5_0,\n isSafari2 : isSafari2,\n isIE : isIE,\n isIE6 : isIE6,\n isIE7 : isIE7,\n isIE7m : isIE6 || isIE7,\n isIE7p : isIE && !isIE6,\n isIE8 : isIE8,\n isIE8m : isIE6 || isIE7 || isIE8,\n isIE8p : isIE && !(isIE6 || isIE7),\n isIE9 : isIE9,\n isIE9m : isIE6 || isIE7 || isIE8 || isIE9,\n isIE9p : isIE && !(isIE6 || isIE7 || isIE8),\n isIE10 : isIE10,\n isIE10m : isIE6 || isIE7 || isIE8 || isIE9 || isIE10,\n isIE10p : isIE && !(isIE6 || isIE7 || isIE8 || isIE9),\n isIE11: isIE11,\n isIE11m : isIE6 || isIE7 || isIE8 || isIE9 || isIE10 || isIE11,\n isIE11p : isIE && !(isIE6 || isIE7 || isIE8 || isIE9 || isIE10),\n isGecko : isGecko,\n isGecko3 : isGecko3,\n isGecko4 : isGecko4,\n isGecko5 : isGecko5,\n isGecko10 : isGecko10,\n isFF3_0 : isFF3_0,\n isFF3_5 : isFF3_5,\n isFF3_6 : isFF3_6,\n isFF4 : 4 <= firefoxVersion && firefoxVersion < 5,\n isFF5 : 5 <= firefoxVersion && firefoxVersion < 6,\n isFF10 : 10 <= firefoxVersion && firefoxVersion < 11,\n isLinux : isLinux,\n isWindows : isWindows,\n isMac : isMac,\n chromeVersion: chromeVersion,\n firefoxVersion: firefoxVersion,\n ieVersion: ieVersion,\n operaVersion: operaVersion,\n safariVersion: safariVersion,\n webKitVersion: webKitVersion,\n isSecure: isSecure,\n emailRe: emailRe,\n ipRe: ipRe,\n hostnameRe: hostnameRe,\n localRe: localRe,\n emailStrongRe: emailStrongRe,\n emailAddStrongRe: emailAddStrongRe,\n ipStrongRe: ipStrongRe,\n hostnameStrongRe: hostnameStrongRe,\n documentSettingsType: documentSettingsType,\n importTextType: importTextType,\n zoom: function() {return me.zoom;},\n applicationPixelRatio: function() {return me.applicationPixelRatio;},\n topOffset: 0,\n innerWidth: function() {return me.innerWidth;},\n innerHeight: function() {return me.innerHeight;},\n croppedGeometry: function() {return {left:0, top: Common.Utils.InternalSettings.get('window-inactive-area-top'),\n width: me.innerWidth, height: me.innerHeight - Common.Utils.InternalSettings.get('window-inactive-area-top')}},\n getBoundingClientRect: getBoundingClientRect,\n getOffsetLeft: getOffsetLeft,\n getOffsetTop: getOffsetTop,\n getOffset: getOffset,\n getPosition: getPosition\n }\n})();\n\nCommon.Utils = _extend_object(Common.Utils, utils);\n\nvar themecolor = new(function() {\n var initnames = true;\n\n return {\n txtBlack: 'Black',\n txtWhite: 'White',\n txtRed: 'Red',\n txtGreen: 'Green',\n txtBlue: 'Blue',\n txtYellow: 'Yellow',\n txtPurple: 'Purple',\n txtAqua: 'Aqua',\n txtDarkRed: 'Dark red',\n txtDarkGreen: 'Dark green',\n txtDarkBlue: 'Dark blue',\n txtDarkYellow: 'Dark yellow',\n txtDarkPurple: 'Dark purple',\n txtDarkTeal: 'Dark teal',\n txtLightGray: 'Light gray',\n txtGray: 'Gray',\n txtLightBlue: 'Light blue',\n txtPink: 'Pink',\n txtLightYellow: 'Light yellow',\n txtSkyBlue: 'Sky blue',\n txtRose: 'Rose',\n txtTurquosie: 'Turquosie',\n txtLightGreen: 'Light green',\n txtLavender: 'Lavender',\n txtLightOrange: 'Light orange',\n txtTeal: 'Teal',\n txtGold: 'Gold',\n txtOrange: 'Orange',\n txtIndigo: 'Indigo',\n txtBrown: 'Brown',\n txtDarkGray: 'Dark gray',\n txtbackground: 'Background',\n txttext: 'Text',\n txtaccent: 'Accent',\n txtDarker: 'Darker',\n txtLighter: 'Lighter',\n txtBrightGreen: 'Bright green',\n txtViolet: 'Violet',\n\n ThemeValues: [6, 15, 7, 16, 0, 1, 2, 3, 4, 5],\n\n getTranslation: function(name) {\n if (!name) return '';\n\n return this['txt' + name.replace(' ', '')] || name\n },\n\n getEffectTranslation: function(value) {\n value = parseInt(value*100);\n if (value !== 0) {\n return (value>0 ? this.txtLighter : this.txtDarker) + ' ' + Math.abs(value) + '%';\n }\n return '';\n },\n\n setColors: function(colors, standart_colors) {\n if (initnames) {\n for (var i=1; i<3; i++) {\n this['txtbackground'+i] = this.txtbackground + ' ' + i;\n this['txttext'+i] = this.txttext + ' ' + i;\n }\n for (var i=1; i<7; i++) {\n this['txtaccent'+i] = this.txtaccent + ' ' + i;\n }\n initnames = false;\n }\n\n var i, j, item;\n\n if (standart_colors && standart_colors.length > 0) {\n var standartcolors = [];\n\n for (i = 0; i < standart_colors.length; i++) {\n item = {\n color: this.getHexColor(standart_colors[i].get_r(), standart_colors[i].get_g(), standart_colors[i].get_b()),\n tip: this.getTranslation(standart_colors[i].asc_getName())\n };\n standartcolors.push(item);\n }\n\n this.standartcolors = standartcolors;\n }\n\n var effectСolors= [];\n\n for (i = 0; i < 6; i++) {\n for (j = 0; j < 10; j++) {\n var idx = i + j * 6;\n var colorName = this.getTranslation(colors[idx].asc_getName()),\n schemeName = this.getTranslation(colors[idx].asc_getNameInColorScheme()),\n effectName = this.getEffectTranslation(colors[idx].asc_getEffectValue());\n if (colorName) {\n schemeName && (colorName += Common.Utils.String.textComma + ' ' + schemeName);\n effectName && (colorName += Common.Utils.String.textComma + ' ' + effectName);\n }\n item = {\n color: this.getHexColor(colors[idx].get_r(), colors[idx].get_g(), colors[idx].get_b()),\n effectId: idx,\n effectValue: this.ThemeValues[j],\n tip: colorName\n };\n effectСolors.push(item);\n }\n }\n this.effectcolors = effectСolors;\n },\n\n getEffectColors: function() {\n return this.effectcolors;\n },\n\n getStandartColors: function() {\n return this.standartcolors;\n },\n\n getHexColor: function(r, g, b){\n r = r.toString(16);\n g = g.toString(16);\n b = b.toString(16);\n if (r.length == 1) r = '0' + r;\n if (g.length == 1) g = '0' + g;\n if (b.length == 1) b = '0' + b;\n return r + g + b;\n },\n\n getRgbColor: function(clr){\n var color = (typeof(clr) == 'object') ? clr.color : clr;\n\n color=color.replace(/#/,'');\n if(color.length==3) color=color.replace(/(.)/g,'$1$1');\n color=parseInt(color,16);\n var c = new Asc.asc_CColor();\n c.put_type( (typeof(clr) == 'object' && clr.effectId !== undefined)? Asc.c_oAscColor.COLOR_TYPE_SCHEME : Asc.c_oAscColor.COLOR_TYPE_SRGB);\n c.put_r(color>>16);\n c.put_g((color&0xff00)>>8);\n c.put_b(color&0xff);\n c.put_a(0xff);\n if (clr.effectId !== undefined)\n c.put_value(clr.effectId);\n return c;\n },\n\n colorValue2EffectId: function(clr){\n if (typeof(clr) == 'object' && clr && clr.effectValue !== undefined && this.effectcolors) {\n for (var i = 0; i < this.effectcolors.length; i++) {\n if (this.effectcolors[i].effectValue===clr.effectValue && clr.color.toUpperCase()===this.effectcolors[i].color.toUpperCase()) {\n clr.effectId = this.effectcolors[i].effectId;\n break;\n }\n }\n }\n return clr;\n }\n }\n})();\nCommon.Utils.ThemeColor = _extend_object(themecolor, Common.Utils.ThemeColor);\n\nvar metrics = new(function() {\n var me = this;\n\n me.c_MetricUnits = {\n cm: 0,\n pt: 1,\n inch: 2\n };\n\n me.currentMetric = me.c_MetricUnits.pt;\n me.metricName = ['Cm', 'Pt', 'Inch'];\n me.defaultMetric = me.c_MetricUnits.cm;\n\n return {\n c_MetricUnits: me.c_MetricUnits,\n txtCm : 'cm',\n txtPt : 'pt',\n txtInch : '\\\"',\n\n setCurrentMetric: function(value) {\n me.currentMetric = value;\n },\n\n getCurrentMetric: function() {\n return me.currentMetric;\n },\n\n getCurrentMetricName: function() {\n return this['txt' + me.metricName[me.currentMetric]];\n },\n\n getMetricName: function(unit) {\n return this['txt' + me.metricName[(unit !== undefined) ? unit : 0]];\n },\n \n setDefaultMetric: function(value) {\n me.defaultMetric = value;\n },\n\n getDefaultMetric: function() {\n return me.defaultMetric;\n },\n\n fnRecalcToMM: function(value) {\n // value in pt/cm/inch. need to convert to mm\n if (value!==null && value!==undefined) {\n switch (me.currentMetric) {\n case me.c_MetricUnits.cm:\n return value * 10;\n case me.c_MetricUnits.pt:\n return value * 25.4 / 72.0;\n case me.c_MetricUnits.inch:\n return value * 25.4;\n }\n }\n return value;\n },\n\n fnRecalcFromMM: function(value) {\n // value in mm. need to convert to pt/cm/inch\n switch (me.currentMetric) {\n case me.c_MetricUnits.cm:\n return parseFloat((value/10.).toFixed(4));\n case me.c_MetricUnits.pt:\n return parseFloat((value * 72.0 / 25.4).toFixed(3));\n case me.c_MetricUnits.inch:\n return parseFloat((value / 25.4).toFixed(3));\n }\n return value;\n }\n }\n})();\n\nCommon.Utils.Metric = _extend_object(metrics, Common.Utils.Metric);\n\nCommon.Utils.RGBColor = function(colorString) {\n var r, g, b;\n\n if (colorString.charAt(0) == '#') {\n colorString = colorString.substr(1,6);\n }\n\n colorString = colorString.replace(/ /g,'');\n colorString = colorString.toLowerCase();\n\n var colorDefinitions = [\n {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n// example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],\n process: function (bits){\n return [\n parseInt(bits[1]),\n parseInt(bits[2]),\n parseInt(bits[3])\n ];\n }\n },\n {\n re: /^hsb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n// example: ['hsb(123, 34, 100)'],\n process: function (bits){\n var rgb = {};\n var h = Math.round(bits[1]);\n var s = Math.round(bits[2] * 255 / 100);\n var v = Math.round(bits[3] * 255 / 100);\n if(s == 0) {\n rgb.r = rgb.g = rgb.b = v;\n } else {\n var t1 = v;\n var t2 = (255 - s) * v / 255;\n var t3 = (t1 - t2) * (h % 60) / 60;\n\n if (h == 360) h = 0;\n if (h < 60) {rgb.r = t1; rgb.b = t2; rgb.g = t2 + t3}\n else if (h < 120) {rgb.g = t1; rgb.b = t2; rgb.r = t1 - t3}\n else if (h < 180) {rgb.g = t1; rgb.r = t2; rgb.b = t2 + t3}\n else if (h < 240) {rgb.b = t1; rgb.r = t2; rgb.g = t1 - t3}\n else if (h < 300) {rgb.b = t1; rgb.g = t2; rgb.r = t2 + t3}\n else if (h < 360) {rgb.r = t1; rgb.g = t2; rgb.b = t1 - t3}\n else {rgb.r = 0; rgb.g = 0; rgb.b = 0}\n }\n return [\n Math.round(rgb.r),\n Math.round(rgb.g),\n Math.round(rgb.b)\n ];\n }\n },\n {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n// example: ['#00ff00', '336699'],\n process: function (bits){\n return [\n parseInt(bits[1], 16),\n parseInt(bits[2], 16),\n parseInt(bits[3], 16)\n ];\n }\n },\n {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n// example: ['#fb0', 'f0f'],\n process: function (bits){\n return [\n parseInt(bits[1] + bits[1], 16),\n parseInt(bits[2] + bits[2], 16),\n parseInt(bits[3] + bits[3], 16)\n ];\n }\n }\n ];\n\n for (var i = 0; i < colorDefinitions.length; i++) {\n var re = colorDefinitions[i].re;\n var processor = colorDefinitions[i].process;\n var bits = re.exec(colorString);\n if (bits) {\n var channels = processor(bits);\n r = channels[0];\n g = channels[1];\n b = channels[2];\n }\n }\n\n r = (r < 0 || isNaN(r)) ? 0 : ((r > 255) ? 255 : r);\n g = (g < 0 || isNaN(g)) ? 0 : ((g > 255) ? 255 : g);\n b = (b < 0 || isNaN(b)) ? 0 : ((b > 255) ? 255 : b);\n\n var isEqual = function(color){\n return ((r == color.r) && (g == color.g) && (b == color.b));\n };\n\n var toRGB = function() {\n return 'rgb(' + r + ', ' + g + ', ' + b + ')';\n };\n\n var toRGBA = function(alfa) {\n if (alfa===undefined) alfa = 1;\n return 'rgba(' + r + ', ' + g + ', ' + b + ', ' + alfa + ')';\n };\n\n var toHex = function() {\n var _r = r.toString(16);\n var _g = g.toString(16);\n var _b = b.toString(16);\n if (_r.length == 1) _r = '0' + _r;\n if (_g.length == 1) _g = '0' + _g;\n if (_b.length == 1) _b = '0' + _b;\n return '#' + _r + _g + _b;\n };\n\n var toHSB = function() {\n var hsb = {\n h: 0,\n s: 0,\n b: 0\n };\n\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n hsb.b = max;\n hsb.s = max != 0 ? 255 * delta / max : 0;\n if (hsb.s != 0) {\n if (r == max) {\n hsb.h = 0 + (g - b) / delta;\n } else if (g == max) {\n hsb.h = 2 + (b - r) / delta;\n } else {\n hsb.h = 4 + (r - g) / delta;\n }\n } else {\n hsb.h = 0;\n }\n hsb.h *= 60;\n if (hsb.h < 0) {\n hsb.h += 360;\n }\n hsb.s *= 100 / 255;\n hsb.b *= 100 / 255;\n\n hsb.h = parseInt(hsb.h);\n hsb.s = parseInt(hsb.s);\n hsb.b = parseInt(hsb.b);\n\n return hsb;\n };\n\n return {\n r : r,\n g : g,\n b : b,\n isEqual : isEqual,\n toRGB : toRGB,\n toRGBA : toRGBA,\n toHex : toHex,\n toHSB : toHSB\n }\n};\n\nvar utilsString = new (function() {\n return {\n textCtrl: 'Ctrl',\n textShift: 'Shift',\n textAlt: 'Alt',\n textComma: ',',\n\n format: function(format) {\n var args = _.toArray(arguments).slice(1);\n if (args.length && typeof args[0] == 'object')\n args = args[0];\n return format.replace(/\\{(\\d+)\\}/g, function(s, i) {\n return args[i];\n });\n },\n\n htmlEncode: function(string) {\n return (typeof _ !== 'undefined') ? _.escape(string) :\n string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n },\n\n htmlDecode: function(string) {\n return _.unescape(string);\n },\n\n ellipsis: function(value, len, word) {\n if (value && value.length > len) {\n if (word) {\n var vs = value.substr(0, len - 2),\n index = Math.max(vs.lastIndexOf(' '), vs.lastIndexOf('.'), vs.lastIndexOf('!'), vs.lastIndexOf('?'));\n if (index !== -1 && index >= (len - 15)) {\n return vs.substr(0, index) + \"...\";\n }\n }\n return value.substr(0, len - 3) + \"...\";\n }\n return value;\n },\n\n platformKey: function(string, template, hookFn) {\n if (_.isEmpty(template))\n template = ' ({0})';\n\n if (Common.Utils.isMac) {\n if (_.isFunction(hookFn)) {\n string = hookFn.call(this, string);\n }\n return Common.Utils.String.format(template, string.replace(/\\+(?=\\S)/g, '').replace(/Ctrl|ctrl/g, '⌘').replace(/Alt|alt/g, '⌥').replace(/Shift|shift/g, '⇧'));\n }\n\n return Common.Utils.String.format(template, string.replace(/Ctrl|ctrl/g, this.textCtrl).replace(/Alt|alt/g, this.textAlt).replace(/Shift|shift/g, this.textShift));\n },\n\n parseFloat: function(string) {\n (typeof string === 'string') && (string = string.replace(',', '.'));\n return parseFloat(string)\n },\n\n encodeSurrogateChar: function(nUnicode) {\n if (nUnicode < 0x10000)\n {\n return String.fromCharCode(nUnicode);\n }\n else\n {\n nUnicode = nUnicode - 0x10000;\n var nLeadingChar = 0xD800 | (nUnicode >> 10);\n var nTrailingChar = 0xDC00 | (nUnicode & 0x3FF);\n return String.fromCharCode(nLeadingChar) + String.fromCharCode(nTrailingChar);\n }\n },\n\n fixedDigits: function(num, digits, fill) {\n (fill===undefined) && (fill = '0');\n var strfill = \"\",\n str = num.toString();\n for (var i=str.length; i0) return;\n var editor = (window.DE ? 'Document' : window.SSE ? 'Spreadsheet' : window.PE ? 'Presentation' : window.PDFE ? 'PDF' : 'that');\n var newDiv = document.createElement(\"div\");\n newDiv.innerHTML = '
                ' +\n '
                ' +\n '
                ' +\n '
                Your browser is not supported.
                ' +\n '
                Sorry, ' + editor + ' Editor is currently only supported in the latest versions of the Chrome, Firefox, Safari or Internet Explorer web browsers.
                ' +\n '
                ' +\n '
                ' +\n '
                ' +\n '
                ';\n\n document.body.appendChild(newDiv);\n\n $('#loading-mask').hide().remove();\n $('#viewport').hide().remove();\n};\n\nCommon.Utils.applyCustomization = function(config, elmap) {\n for (var name in config) {\n var $el;\n if (!!elmap[name]) {\n $el = $(elmap[name]);\n\n if ($el.length) {\n var item = config[name];\n if (item === false || item.visible === false) {\n $el.hide()\n } else {\n if (!!item.text) {\n $el.text(item.text);\n }\n\n if (item.visible === false) {\n $el.hide();\n }\n }\n }\n }\n }\n};\n\nCommon.Utils.applyCustomizationPlugins = function(plugins) {\n if (!plugins || plugins.length<1) return;\n\n var _createXMLHTTPObject = function() {\n var xmlhttp;\n if (typeof XMLHttpRequest != 'undefined') {\n xmlhttp = new XMLHttpRequest();\n } else {\n try {\n xmlhttp = new ActiveXObject(\"Msxml2.XMLHTTP\");\n }\n catch (e) {\n try {\n xmlhttp = new ActiveXObject(\"Microsoft.XMLHTTP\");\n }\n catch (E) {\n xmlhttp = false;\n }\n }\n }\n\n return xmlhttp;\n };\n\n var _getPluginCode = function(url) {\n if (!url) return '';\n try {\n var xhrObj = _createXMLHTTPObject();\n if (xhrObj && url) {\n xhrObj.open('GET', url, false);\n xhrObj.send('');\n if (xhrObj.status == 200)\n eval(xhrObj.responseText);\n }\n }\n catch (e) {}\n return null;\n };\n\n plugins.forEach(function(url){\n if (url) _getPluginCode(url);\n });\n};\n\nCommon.Utils.fillUserInfo = function(info, lang, defname, defid) {\n var _user = info || {};\n _user.anonymous = !_user.id;\n !_user.id && (_user.id = defid);\n _user.fullname = !_user.name ? defname : _user.name;\n _user.group && (_user.fullname = (_user.group).toString() + AscCommon.UserInfoParser.getSeparator() + _user.fullname);\n _user.guest = !_user.name;\n return _user;\n};\n\n\nCommon.Utils.createXhr = function () {\n var xmlhttp;\n\n if (typeof XMLHttpRequest != 'undefined') {\n xmlhttp = new XMLHttpRequest();\n } else {\n try {\n xmlhttp = new ActiveXObject(\"Msxml2.XMLHTTP\");\n } catch (e) {\n try {\n xmlhttp = new ActiveXObject(\"Microsoft.XMLHTTP\");\n } catch (E) {\n xmlhttp = false;\n }\n }\n }\n\n return xmlhttp;\n};\n\nCommon.Utils.getConfigJson = function (url) {\n if ( url ) {\n try {\n var xhrObj = Common.Utils.createXhr();\n if ( xhrObj ) {\n xhrObj.open('GET', url, false);\n xhrObj.send('');\n\n return JSON.parse(xhrObj.responseText);\n }\n } catch (e) {}\n }\n\n return null;\n};\n\nCommon.Utils.loadConfig = function(url, callback) {\n fetch(url, {\n method: 'get',\n headers: {\n 'Accept': 'application/json',\n },\n }).then(function(response){\n if ( response.ok )\n return response.json();\n else return 'error';\n }).then(function(json){\n callback(json);\n }).catch(function(e) {\n callback('error');\n });\n};\n\nCommon.Utils.asyncCall = function (callback, scope, args) {\n (new Promise(function (resolve, reject) {\n resolve();\n })).then(function () {\n callback.call(scope, args);\n });\n};\n\n// Extend javascript String type\nString.prototype.strongMatch = function(regExp){\n if (regExp && regExp instanceof RegExp) {\n var arr = this.toString().match(regExp);\n return !!(arr && arr.length > 0 && arr[0].length == this.length);\n }\n\n return false;\n};\n\nCommon.Utils.InternalSettings = new(function() {\n var settings = {};\n\n var _get = function(name) {\n return settings[name];\n },\n _set = function(name, value) {\n settings[name] = value;\n };\n\n return {\n get: _get,\n set: _set\n }\n});\n\nCommon.Utils.lockControls = function(causes, lock, opts, defControls) {\n !opts && (opts = {});\n\n var controls = opts.array || defControls;\n opts.merge && (controls = _.union(defControls,controls));\n\n function doLock(cmp, cause) {\n if ( cmp && cmp.options && _.contains(cmp.options.lock, cause) ) {\n var index = cmp.keepState.indexOf(cause);\n if (lock) {\n if (index < 0) {\n cmp.keepState.push(cause);\n }\n } else {\n if (!(index < 0)) {\n cmp.keepState.splice(index, 1);\n }\n }\n }\n }\n\n _.each(controls, function(item) {\n if (item && _.isFunction(item.setDisabled)) {\n !item.keepState && (item.keepState = []);\n if (opts.clear && opts.clear.length > 0 && item.keepState.length > 0) {\n item.keepState = _.difference(item.keepState, opts.clear);\n }\n\n _.isArray(causes) ? _.each(causes, function(c) {doLock(item, c)}) : doLock(item, causes);\n\n if (!(item.keepState.length > 0)) {\n item.isDisabled() && item.setDisabled(false);\n } else {\n !item.isDisabled() && item.setDisabled(true);\n }\n }\n });\n};\n\nCommon.Utils.injectButtons = function($slots, id, iconCls, caption, lock, split, menu, toggle, dataHint, dataHintDirection, dataHintOffset, dataHintTitle) {\n var btnsArr = createButtonSet();\n btnsArr.setDisabled(true);\n id = id || (\"id-toolbar-\" + iconCls);\n $slots.each(function(index, el) {\n var _cls = 'btn-toolbar';\n /x-huge/.test(el.className) && (_cls += ' x-huge icon-top');\n\n var button = new Common.UI.Button({\n parentEl: $slots.eq(index),\n id: id + index,\n cls: _cls,\n iconCls: iconCls,\n caption: caption,\n split: split || false,\n menu: menu || false,\n enableToggle: toggle || false,\n lock: lock,\n disabled: true,\n dataHint: dataHint,\n dataHintDirection: dataHintDirection,\n dataHintOffset: dataHintOffset,\n dataHintTitle: dataHintTitle\n });\n\n btnsArr.add(button);\n });\n return btnsArr;\n};\n\nCommon.Utils.injectComponent = function ($slot, cmp) {\n if (cmp && $slot.length) {\n cmp.rendered ? $slot.append(cmp.$el) : cmp.render($slot);\n }\n};\n\nCommon.Utils.startFullscreenForElement = function (element) {\n if (element) {\n if(element.requestFullscreen) {\n element.requestFullscreen();\n } else if(element.webkitRequestFullscreen) {\n element.webkitRequestFullscreen();\n } else if(element.mozRequestFullScreen) {\n element.mozRequestFullScreen();\n } else if(element.msRequestFullscreen) {\n element.msRequestFullscreen();\n }\n }\n}\n\nCommon.Utils.cancelFullscreen = function () {\n if(document.cancelFullScreen) {\n document.cancelFullScreen();\n } else if(document.webkitCancelFullScreen ) {\n document.webkitCancelFullScreen();\n } else if(document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if(document.msExitFullscreen) {\n document.msExitFullscreen();\n }\n}\n\nCommon.Utils.warningDocumentIsLocked = function (opts) {\n if ( opts.disablefunc )\n opts.disablefunc(true);\n\n var app = window.DE || window.PE || window.SSE || window.PDFE;\n\n Common.UI.warning({\n msg: Common.Locale.get(\"warnFileLocked\",{name:\"Common.Translation\", default: \"You can't edit this file. Document is in use by another application.\"}),\n buttons: [{\n value: 'view',\n caption: Common.Locale.get(\"warnFileLockedBtnView\",{name:\"Common.Translation\", default: \"Open for viewing\"})\n }, {\n value: 'edit',\n caption: Common.Locale.get(\"warnFileLockedBtnEdit\",{name:\"Common.Translation\", default: \"Create a copy\"})\n }],\n primary: 'view',\n callback: function(btn){\n if (btn == 'edit') {\n if ( opts.disablefunc ) opts.disablefunc(false);\n app.getController('Main').api.asc_setLocalRestrictions(Asc.c_oAscLocalRestrictionType.None);\n }\n }\n });\n};\n\njQuery.fn.extend({\n elementById: function (id, parent) {\n /**\n * usage: $obj.findById('#id')\n * $().findById('#id', $obj | node)\n * $.fn.findById('#id', $obj | node)\n *\n * return: dom element\n * */\n var _el = document.getElementById(id.substring(1));\n if ( !_el ) {\n parent = parent || this;\n if ( parent && parent.length > 0 ) {\n parent.each(function (i, node) {\n if (node.querySelectorAll) {\n _el = node.querySelectorAll(id);\n if ( _el.length == 0 ) {\n if ( ('#' + node.id) == id ) {\n _el = node;\n return false;\n }\n } else\n if ( _el.length ) {\n _el = _el[0];\n return false;\n }\n }\n })\n } else {\n if (parent && parent.querySelectorAll) {\n _el = parent.querySelectorAll(id);\n if ( _el && _el.length ) return _el[0];\n }\n }\n }\n\n return _el;\n },\n\n findById: function (id, parent) {\n var _el = $.fn.elementById.apply(this, arguments);\n return !!_el ? $(_el) : $();\n }\n});\n\nCommon.Utils.InternalSettings.set('toolbar-height-tabs', 32);\nCommon.Utils.InternalSettings.set('toolbar-height-tabs-top-title', 28);\nCommon.Utils.InternalSettings.set('toolbar-height-controls', 67);\nCommon.Utils.InternalSettings.set('document-title-height', 28);\nCommon.Utils.InternalSettings.set('window-inactive-area-top', 0);\n\nCommon.Utils.InternalSettings.set('toolbar-height-compact', Common.Utils.InternalSettings.get('toolbar-height-tabs'));\nCommon.Utils.InternalSettings.set('toolbar-height-normal', Common.Utils.InternalSettings.get('toolbar-height-tabs') + Common.Utils.InternalSettings.get('toolbar-height-controls'));\n\nCommon.Utils.ModalWindow = new(function() {\n var count = 0;\n return {\n show: function() {\n count++;\n },\n\n close: function() {\n count--;\n },\n\n isVisible: function() {\n return count>0;\n }\n }\n})();\n\nCommon.Utils.UserInfoParser = new(function() {\n var parse = false;\n var separator = String.fromCharCode(160);\n return {\n setParser: function(value) {\n parse = !!value;\n },\n\n getSeparator: function() {\n return separator;\n },\n\n getParsedName: function(username) {\n if (parse && username) {\n return username.substring(username.indexOf(separator)+1);\n } else\n return username;\n },\n\n getParsedGroups: function(username) {\n if (parse && username) {\n var idx = username.indexOf(separator),\n groups = (idx>-1) ? username.substring(0, idx).split(',') : [];\n for (var i=0; i0; i--) {\n if (fio[i][0]!=='(' && fio[i][0]!==')') {\n if (/[\\u0600-\\u06FF]/.test(initials))\n initials += '\\u2009';\n initials += fio[i].substring(0, 1).toUpperCase();\n break;\n }\n }\n return initials;\n};\n\nCommon.Utils.getKeyByValue = function(obj, value) {\n for(var prop in obj) {\n if(obj.hasOwnProperty(prop)) {\n if(obj[prop] === value)\n return prop;\n }\n }\n};\n\n!Common.UI && (Common.UI = {});\nCommon.UI.isRTL = function () {\n if ( window.isrtl === undefined ) {\n if ( window.nativeprocvars && window.nativeprocvars.rtl !== undefined )\n window.isrtl = window.nativeprocvars.rtl;\n else window.isrtl = !Common.Utils.isIE && Common.localStorage.getBool(\"ui-rtl\", Common.Locale.isCurrentLanguageRtl());\n }\n\n return window.isrtl;\n};\n\nCommon.UI.iconsStr2IconsObj = function(icons) {\n let result = icons;\n if (typeof result === 'string') {\n if (result.indexOf('%') !== -1) {\n /*\n valid params:\n theme-type - {string} theme type (light|dark|common)\n theme-name - {string} the name of theme\n state - {string} state of icons for different situations (normal|hover|active)\n scale - {string} list of avaliable scales (100|125|150|175|200|default|extended)\n extension - {string} use it after symbol \".\" (png|jpeg|svg)\n\n Example: \"resources/%theme-type%(light|dark)/%state%(normal)icon%scale%(default).%extension%(png)\"\n */\n let scaleValue = {\n '100%' : '.',\n '125%' : '@1.25x.',\n '150%' : '@1.5x.',\n '175%' : '@1.75x.',\n '200%' : '@2x.'\n }\n let arrParams = ['theme-type', 'theme-name' ,'state', 'scale', 'extension'],\n start = result.indexOf('%'),\n template = result.substring(start).replace(/[/.]/g, ('')),\n commonPart = result.substring(0, start),\n end = 0,\n param = null,\n values = null,\n iconName = '',\n tempObj = {};\n\n result = [];\n\n for (let index = 0; index < arrParams.length; index++) {\n param = arrParams[index];\n start = template.indexOf(param) - 1;\n if (start < 0 )\n continue;\n\n end = param.length + 2;\n template = template.substring(0, start) + template.substring(start + end);\n start = template.indexOf('(', 0);\n end = template.indexOf(')', 0);\n values = template.substring((start + 1), end);\n template = template.substring(0, start) + template.substring(++end);\n tempObj[param] = values.split('|');\n }\n\n if (template.length) {\n iconName = template;\n } else {\n let arr = commonPart.split('/');\n iconName = arr.pop().replace(/\\./g, '');\n commonPart = arr.join('/') + '/';\n }\n\n // we don't work with svg yet. Change it when we will work with it (extended variant).\n if (tempObj['scale'] && (tempObj['scale'] == 'default' || tempObj['scale'] == 'extended') ) {\n tempObj['scale'] = ['100', '125', '150', '175', '200'];\n } else if (!tempObj['scale']) {\n tempObj['scale'] = ['100'];\n }\n\n if (!tempObj['state']) {\n tempObj['state'] = ['normal'];\n }\n\n if (!iconName) {\n iconName = 'icon';\n }\n\n let bHasName = !!tempObj['theme-name'];\n let bHasType = (tempObj['theme-type'] && tempObj['theme-type'][0] !== 'common');\n let arrThemes = bHasName ? tempObj['theme-name'] : (bHasType ? tempObj['theme-type'] : []);\n let paramName = bHasName ? 'theme' : 'style';\n if (arrThemes.length) {\n for (let thInd = 0; thInd < arrThemes.length; thInd++) {\n let obj = {};\n obj[paramName] = arrThemes[thInd];\n result.push(obj);\n }\n } else {\n result.push({});\n }\n\n for (let index = 0; index < result.length; index++) {\n for (let scaleInd = 0; scaleInd < tempObj['scale'].length; scaleInd++) {\n let themePath = (result[index][paramName] || 'img') + '/';\n let scale = tempObj['scale'][scaleInd] + '%';\n let obj = {};\n for (let stateInd = 0; stateInd < tempObj['state'].length; stateInd++) {\n let state = tempObj['state'][stateInd];\n obj[state] = commonPart + themePath + (state == 'normal' ? '' : (state + '_')) + iconName + (scaleValue[scale] || '.') + tempObj['extension'][0];\n }\n result[index][scale] = obj;\n }\n }\n } else {\n return [icons];\n }\n }\n return result;\n}\n\nCommon.UI.getSuitableIcons = function(icons) {\n if (!icons) return;\n\n icons = Common.UI.iconsStr2IconsObj(icons);\n if (icons.length && typeof icons[0] !== 'string') {\n var theme = Common.UI.Themes.currentThemeId().toLowerCase(),\n style = Common.UI.Themes.isDarkTheme() ? 'dark' : 'light',\n idx = -1;\n for (var i=0; i0.01 && defUrl) && (bestUrl = defUrl);\n return {\n 'normal': bestUrl ? bestUrl['normal'] : '',\n 'hover': bestUrl ? bestUrl['hover'] || bestUrl['normal'] : '',\n 'active': bestUrl ? bestUrl['active'] || bestUrl['normal'] : ''\n };\n } else { // old version\n var url = icons[((Common.Utils.applicationPixelRatio() > 1 && icons.length > 1) ? 1 : 0) + (icons.length > 2 ? 2 : 0)];\n return {\n 'normal': url,\n 'hover': url,\n 'active': url\n };\n }\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * This file automatically generated from `pre-publish.js`.\n * Do not manually edit.\n */\n\nmodule.exports = {\n \"area\": true,\n \"base\": true,\n \"br\": true,\n \"col\": true,\n \"embed\": true,\n \"hr\": true,\n \"img\": true,\n \"input\": true,\n \"link\": true,\n \"meta\": true,\n \"param\": true,\n \"source\": true,\n \"track\": true,\n \"wbr\": true\n};\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw new Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw new Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var inProgress = {};\nvar dataWebpackPrefix = \"documenteditor:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"dist/js/\" + chunkId + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"611\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkdocumenteditor\"] = self[\"webpackChunkdocumenteditor\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(t, e, r) {\n if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);\n var o = [null];\n o.push.apply(o, e);\n var p = new (t.bind.apply(t, o))();\n return r && setPrototypeOf(p, r.prototype), p;\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n try {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n } catch (e) {\n return typeof fn === \"function\";\n }\n}","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionStart(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionstart', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionstart', fireCallBack);\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, transitionStart, trigger, val, value, width };\n","// eslint-disable-next-line\nimport * as methods from 'dom7';\nObject.keys(methods).forEach(methodName => {\n if (methodName === '$') return;\n methods.$.fn[methodName] = methods[methodName];\n});\nexport default methods.$;","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","/* eslint-disable */\nfunction signum(num) {\n return num < 0 ? -1 : 0 === num ? 0 : 1;\n}\nfunction lerp(start, stop, amount) {\n return (1 - amount) * start + amount * stop;\n}\nfunction clampInt(min, max, input) {\n return input < min ? min : input > max ? max : input;\n}\nfunction clampDouble(min, max, input) {\n return input < min ? min : input > max ? max : input;\n}\nfunction sanitizeDegreesDouble(degrees) {\n return (degrees %= 360) < 0 && (degrees += 360), degrees;\n}\nfunction rotationDirection(from, to) {\n return sanitizeDegreesDouble(to - from) <= 180 ? 1 : -1;\n}\nfunction differenceDegrees(a, b) {\n return 180 - Math.abs(Math.abs(a - b) - 180);\n}\nfunction matrixMultiply(row, matrix) {\n return [row[0] * matrix[0][0] + row[1] * matrix[0][1] + row[2] * matrix[0][2], row[0] * matrix[1][0] + row[1] * matrix[1][1] + row[2] * matrix[1][2], row[0] * matrix[2][0] + row[1] * matrix[2][1] + row[2] * matrix[2][2]];\n}\nconst SRGB_TO_XYZ = [[.41233895, .35762064, .18051042], [.2126, .7152, .0722], [.01932141, .11916382, .95034478]],\n XYZ_TO_SRGB = [[3.2413774792388685, -1.5376652402851851, -.49885366846268053], [-.9691452513005321, 1.8758853451067872, .04156585616912061], [.05562093689691305, -.20395524564742123, 1.0571799111220335]],\n WHITE_POINT_D65 = [95.047, 100, 108.883];\nfunction argbFromRgb(red, green, blue) {\n return (255 << 24 | (255 & red) << 16 | (255 & green) << 8 | 255 & blue) >>> 0;\n}\nfunction argbFromLinrgb(linrgb) {\n return argbFromRgb(delinearized(linrgb[0]), delinearized(linrgb[1]), delinearized(linrgb[2]));\n}\nfunction redFromArgb(argb) {\n return argb >> 16 & 255;\n}\nfunction greenFromArgb(argb) {\n return argb >> 8 & 255;\n}\nfunction blueFromArgb(argb) {\n return 255 & argb;\n}\nfunction argbFromXyz(x, y, z) {\n const matrix = XYZ_TO_SRGB,\n linearR = matrix[0][0] * x + matrix[0][1] * y + matrix[0][2] * z,\n linearG = matrix[1][0] * x + matrix[1][1] * y + matrix[1][2] * z,\n linearB = matrix[2][0] * x + matrix[2][1] * y + matrix[2][2] * z;\n return argbFromRgb(delinearized(linearR), delinearized(linearG), delinearized(linearB));\n}\nfunction xyzFromArgb(argb) {\n return matrixMultiply([linearized(redFromArgb(argb)), linearized(greenFromArgb(argb)), linearized(blueFromArgb(argb))], SRGB_TO_XYZ);\n}\nfunction argbFromLstar(lstar) {\n const component = delinearized(yFromLstar(lstar));\n return argbFromRgb(component, component, component);\n}\nfunction lstarFromArgb(argb) {\n return 116 * labF(xyzFromArgb(argb)[1] / 100) - 16;\n}\nfunction yFromLstar(lstar) {\n return 100 * labInvf((lstar + 16) / 116);\n}\nfunction lstarFromY(y) {\n return 116 * labF(y / 100) - 16;\n}\nfunction linearized(rgbComponent) {\n const normalized = rgbComponent / 255;\n return normalized <= .040449936 ? normalized / 12.92 * 100 : 100 * Math.pow((normalized + .055) / 1.055, 2.4);\n}\nfunction delinearized(rgbComponent) {\n const normalized = rgbComponent / 100;\n let delinearized = 0;\n return delinearized = normalized <= .0031308 ? 12.92 * normalized : 1.055 * Math.pow(normalized, 1 / 2.4) - .055, clampInt(0, 255, Math.round(255 * delinearized));\n}\nfunction whitePointD65() {\n return WHITE_POINT_D65;\n}\nfunction labF(t) {\n return t > 216 / 24389 ? Math.pow(t, 1 / 3) : (903.2962962962963 * t + 16) / 116;\n}\nfunction labInvf(ft) {\n const ft3 = ft * ft * ft;\n return ft3 > 216 / 24389 ? ft3 : (116 * ft - 16) / 903.2962962962963;\n}\nclass ViewingConditions {\n static make(whitePoint, adaptingLuminance, backgroundLstar, surround, discountingIlluminant) {\n if (whitePoint === void 0) {\n whitePoint = whitePointD65();\n }\n if (adaptingLuminance === void 0) {\n adaptingLuminance = 200 / Math.PI * yFromLstar(50) / 100;\n }\n if (backgroundLstar === void 0) {\n backgroundLstar = 50;\n }\n if (surround === void 0) {\n surround = 2;\n }\n if (discountingIlluminant === void 0) {\n discountingIlluminant = !1;\n }\n const xyz = whitePoint,\n rW = .401288 * xyz[0] + .650173 * xyz[1] + -.051461 * xyz[2],\n gW = -.250268 * xyz[0] + 1.204414 * xyz[1] + .045854 * xyz[2],\n bW = -.002079 * xyz[0] + .048952 * xyz[1] + .953127 * xyz[2],\n f = .8 + surround / 10,\n c = f >= .9 ? lerp(.59, .69, 10 * (f - .9)) : lerp(.525, .59, 10 * (f - .8));\n let d = discountingIlluminant ? 1 : f * (1 - 1 / 3.6 * Math.exp((-adaptingLuminance - 42) / 92));\n d = d > 1 ? 1 : d < 0 ? 0 : d;\n const nc = f,\n rgbD = [d * (100 / rW) + 1 - d, d * (100 / gW) + 1 - d, d * (100 / bW) + 1 - d],\n k = 1 / (5 * adaptingLuminance + 1),\n k4 = k * k * k * k,\n k4F = 1 - k4,\n fl = k4 * adaptingLuminance + .1 * k4F * k4F * Math.cbrt(5 * adaptingLuminance),\n n = yFromLstar(backgroundLstar) / whitePoint[1],\n z = 1.48 + Math.sqrt(n),\n nbb = .725 / Math.pow(n, .2),\n ncb = nbb,\n rgbAFactors = [Math.pow(fl * rgbD[0] * rW / 100, .42), Math.pow(fl * rgbD[1] * gW / 100, .42), Math.pow(fl * rgbD[2] * bW / 100, .42)],\n rgbA = [400 * rgbAFactors[0] / (rgbAFactors[0] + 27.13), 400 * rgbAFactors[1] / (rgbAFactors[1] + 27.13), 400 * rgbAFactors[2] / (rgbAFactors[2] + 27.13)];\n return new ViewingConditions(n, (2 * rgbA[0] + rgbA[1] + .05 * rgbA[2]) * nbb, nbb, ncb, c, nc, rgbD, fl, Math.pow(fl, .25), z);\n }\n constructor(n, aw, nbb, ncb, c, nc, rgbD, fl, fLRoot, z) {\n this.n = n, this.aw = aw, this.nbb = nbb, this.ncb = ncb, this.c = c, this.nc = nc, this.rgbD = rgbD, this.fl = fl, this.fLRoot = fLRoot, this.z = z;\n }\n}\nViewingConditions.DEFAULT = ViewingConditions.make();\nclass Cam16 {\n constructor(hue, chroma, j, q, m, s, jstar, astar, bstar) {\n this.hue = hue, this.chroma = chroma, this.j = j, this.q = q, this.m = m, this.s = s, this.jstar = jstar, this.astar = astar, this.bstar = bstar;\n }\n distance(other) {\n const dJ = this.jstar - other.jstar,\n dA = this.astar - other.astar,\n dB = this.bstar - other.bstar,\n dEPrime = Math.sqrt(dJ * dJ + dA * dA + dB * dB);\n return 1.41 * Math.pow(dEPrime, .63);\n }\n static fromInt(argb) {\n return Cam16.fromIntInViewingConditions(argb, ViewingConditions.DEFAULT);\n }\n static fromIntInViewingConditions(argb, viewingConditions) {\n const green = (65280 & argb) >> 8,\n blue = 255 & argb,\n redL = linearized((16711680 & argb) >> 16),\n greenL = linearized(green),\n blueL = linearized(blue),\n x = .41233895 * redL + .35762064 * greenL + .18051042 * blueL,\n y = .2126 * redL + .7152 * greenL + .0722 * blueL,\n z = .01932141 * redL + .11916382 * greenL + .95034478 * blueL,\n rC = .401288 * x + .650173 * y - .051461 * z,\n gC = -.250268 * x + 1.204414 * y + .045854 * z,\n bC = -.002079 * x + .048952 * y + .953127 * z,\n rD = viewingConditions.rgbD[0] * rC,\n gD = viewingConditions.rgbD[1] * gC,\n bD = viewingConditions.rgbD[2] * bC,\n rAF = Math.pow(viewingConditions.fl * Math.abs(rD) / 100, .42),\n gAF = Math.pow(viewingConditions.fl * Math.abs(gD) / 100, .42),\n bAF = Math.pow(viewingConditions.fl * Math.abs(bD) / 100, .42),\n rA = 400 * signum(rD) * rAF / (rAF + 27.13),\n gA = 400 * signum(gD) * gAF / (gAF + 27.13),\n bA = 400 * signum(bD) * bAF / (bAF + 27.13),\n a = (11 * rA + -12 * gA + bA) / 11,\n b = (rA + gA - 2 * bA) / 9,\n u = (20 * rA + 20 * gA + 21 * bA) / 20,\n p2 = (40 * rA + 20 * gA + bA) / 20,\n atanDegrees = 180 * Math.atan2(b, a) / Math.PI,\n hue = atanDegrees < 0 ? atanDegrees + 360 : atanDegrees >= 360 ? atanDegrees - 360 : atanDegrees,\n hueRadians = hue * Math.PI / 180,\n ac = p2 * viewingConditions.nbb,\n j = 100 * Math.pow(ac / viewingConditions.aw, viewingConditions.c * viewingConditions.z),\n q = 4 / viewingConditions.c * Math.sqrt(j / 100) * (viewingConditions.aw + 4) * viewingConditions.fLRoot,\n huePrime = hue < 20.14 ? hue + 360 : hue,\n t = 5e4 / 13 * (.25 * (Math.cos(huePrime * Math.PI / 180 + 2) + 3.8)) * viewingConditions.nc * viewingConditions.ncb * Math.sqrt(a * a + b * b) / (u + .305),\n alpha = Math.pow(t, .9) * Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73),\n c = alpha * Math.sqrt(j / 100),\n m = c * viewingConditions.fLRoot,\n s = 50 * Math.sqrt(alpha * viewingConditions.c / (viewingConditions.aw + 4)),\n jstar = (1 + 100 * .007) * j / (1 + .007 * j),\n mstar = 1 / .0228 * Math.log(1 + .0228 * m),\n astar = mstar * Math.cos(hueRadians),\n bstar = mstar * Math.sin(hueRadians);\n return new Cam16(hue, c, j, q, m, s, jstar, astar, bstar);\n }\n static fromJch(j, c, h) {\n return Cam16.fromJchInViewingConditions(j, c, h, ViewingConditions.DEFAULT);\n }\n static fromJchInViewingConditions(j, c, h, viewingConditions) {\n const q = 4 / viewingConditions.c * Math.sqrt(j / 100) * (viewingConditions.aw + 4) * viewingConditions.fLRoot,\n m = c * viewingConditions.fLRoot,\n alpha = c / Math.sqrt(j / 100),\n s = 50 * Math.sqrt(alpha * viewingConditions.c / (viewingConditions.aw + 4)),\n hueRadians = h * Math.PI / 180,\n jstar = (1 + 100 * .007) * j / (1 + .007 * j),\n mstar = 1 / .0228 * Math.log(1 + .0228 * m),\n astar = mstar * Math.cos(hueRadians),\n bstar = mstar * Math.sin(hueRadians);\n return new Cam16(h, c, j, q, m, s, jstar, astar, bstar);\n }\n static fromUcs(jstar, astar, bstar) {\n return Cam16.fromUcsInViewingConditions(jstar, astar, bstar, ViewingConditions.DEFAULT);\n }\n static fromUcsInViewingConditions(jstar, astar, bstar, viewingConditions) {\n const a = astar,\n b = bstar,\n m = Math.sqrt(a * a + b * b),\n c = (Math.exp(.0228 * m) - 1) / .0228 / viewingConditions.fLRoot;\n let h = Math.atan2(b, a) * (180 / Math.PI);\n h < 0 && (h += 360);\n const j = jstar / (1 - .007 * (jstar - 100));\n return Cam16.fromJchInViewingConditions(j, c, h, viewingConditions);\n }\n toInt() {\n return this.viewed(ViewingConditions.DEFAULT);\n }\n viewed(viewingConditions) {\n const alpha = 0 === this.chroma || 0 === this.j ? 0 : this.chroma / Math.sqrt(this.j / 100),\n t = Math.pow(alpha / Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73), 1 / .9),\n hRad = this.hue * Math.PI / 180,\n eHue = .25 * (Math.cos(hRad + 2) + 3.8),\n ac = viewingConditions.aw * Math.pow(this.j / 100, 1 / viewingConditions.c / viewingConditions.z),\n p1 = eHue * (5e4 / 13) * viewingConditions.nc * viewingConditions.ncb,\n p2 = ac / viewingConditions.nbb,\n hSin = Math.sin(hRad),\n hCos = Math.cos(hRad),\n gamma = 23 * (p2 + .305) * t / (23 * p1 + 11 * t * hCos + 108 * t * hSin),\n a = gamma * hCos,\n b = gamma * hSin,\n rA = (460 * p2 + 451 * a + 288 * b) / 1403,\n gA = (460 * p2 - 891 * a - 261 * b) / 1403,\n bA = (460 * p2 - 220 * a - 6300 * b) / 1403,\n rCBase = Math.max(0, 27.13 * Math.abs(rA) / (400 - Math.abs(rA))),\n rC = signum(rA) * (100 / viewingConditions.fl) * Math.pow(rCBase, 1 / .42),\n gCBase = Math.max(0, 27.13 * Math.abs(gA) / (400 - Math.abs(gA))),\n gC = signum(gA) * (100 / viewingConditions.fl) * Math.pow(gCBase, 1 / .42),\n bCBase = Math.max(0, 27.13 * Math.abs(bA) / (400 - Math.abs(bA))),\n bC = signum(bA) * (100 / viewingConditions.fl) * Math.pow(bCBase, 1 / .42),\n rF = rC / viewingConditions.rgbD[0],\n gF = gC / viewingConditions.rgbD[1],\n bF = bC / viewingConditions.rgbD[2];\n return argbFromXyz(1.86206786 * rF - 1.01125463 * gF + .14918677 * bF, .38752654 * rF + .62144744 * gF - .00897398 * bF, -.0158415 * rF - .03412294 * gF + 1.04996444 * bF);\n }\n static fromXyzInViewingConditions(x, y, z, viewingConditions) {\n const rC = .401288 * x + .650173 * y - .051461 * z,\n gC = -.250268 * x + 1.204414 * y + .045854 * z,\n bC = -.002079 * x + .048952 * y + .953127 * z,\n rD = viewingConditions.rgbD[0] * rC,\n gD = viewingConditions.rgbD[1] * gC,\n bD = viewingConditions.rgbD[2] * bC,\n rAF = Math.pow(viewingConditions.fl * Math.abs(rD) / 100, .42),\n gAF = Math.pow(viewingConditions.fl * Math.abs(gD) / 100, .42),\n bAF = Math.pow(viewingConditions.fl * Math.abs(bD) / 100, .42),\n rA = 400 * signum(rD) * rAF / (rAF + 27.13),\n gA = 400 * signum(gD) * gAF / (gAF + 27.13),\n bA = 400 * signum(bD) * bAF / (bAF + 27.13),\n a = (11 * rA + -12 * gA + bA) / 11,\n b = (rA + gA - 2 * bA) / 9,\n u = (20 * rA + 20 * gA + 21 * bA) / 20,\n p2 = (40 * rA + 20 * gA + bA) / 20,\n atanDegrees = 180 * Math.atan2(b, a) / Math.PI,\n hue = atanDegrees < 0 ? atanDegrees + 360 : atanDegrees >= 360 ? atanDegrees - 360 : atanDegrees,\n hueRadians = hue * Math.PI / 180,\n ac = p2 * viewingConditions.nbb,\n J = 100 * Math.pow(ac / viewingConditions.aw, viewingConditions.c * viewingConditions.z),\n Q = 4 / viewingConditions.c * Math.sqrt(J / 100) * (viewingConditions.aw + 4) * viewingConditions.fLRoot,\n huePrime = hue < 20.14 ? hue + 360 : hue,\n t = 5e4 / 13 * (1 / 4 * (Math.cos(huePrime * Math.PI / 180 + 2) + 3.8)) * viewingConditions.nc * viewingConditions.ncb * Math.sqrt(a * a + b * b) / (u + .305),\n alpha = Math.pow(t, .9) * Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73),\n C = alpha * Math.sqrt(J / 100),\n M = C * viewingConditions.fLRoot,\n s = 50 * Math.sqrt(alpha * viewingConditions.c / (viewingConditions.aw + 4)),\n jstar = (1 + 100 * .007) * J / (1 + .007 * J),\n mstar = Math.log(1 + .0228 * M) / .0228,\n astar = mstar * Math.cos(hueRadians),\n bstar = mstar * Math.sin(hueRadians);\n return new Cam16(hue, C, J, Q, M, s, jstar, astar, bstar);\n }\n xyzInViewingConditions(viewingConditions) {\n const alpha = 0 === this.chroma || 0 === this.j ? 0 : this.chroma / Math.sqrt(this.j / 100),\n t = Math.pow(alpha / Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73), 1 / .9),\n hRad = this.hue * Math.PI / 180,\n eHue = .25 * (Math.cos(hRad + 2) + 3.8),\n ac = viewingConditions.aw * Math.pow(this.j / 100, 1 / viewingConditions.c / viewingConditions.z),\n p1 = eHue * (5e4 / 13) * viewingConditions.nc * viewingConditions.ncb,\n p2 = ac / viewingConditions.nbb,\n hSin = Math.sin(hRad),\n hCos = Math.cos(hRad),\n gamma = 23 * (p2 + .305) * t / (23 * p1 + 11 * t * hCos + 108 * t * hSin),\n a = gamma * hCos,\n b = gamma * hSin,\n rA = (460 * p2 + 451 * a + 288 * b) / 1403,\n gA = (460 * p2 - 891 * a - 261 * b) / 1403,\n bA = (460 * p2 - 220 * a - 6300 * b) / 1403,\n rCBase = Math.max(0, 27.13 * Math.abs(rA) / (400 - Math.abs(rA))),\n rC = signum(rA) * (100 / viewingConditions.fl) * Math.pow(rCBase, 1 / .42),\n gCBase = Math.max(0, 27.13 * Math.abs(gA) / (400 - Math.abs(gA))),\n gC = signum(gA) * (100 / viewingConditions.fl) * Math.pow(gCBase, 1 / .42),\n bCBase = Math.max(0, 27.13 * Math.abs(bA) / (400 - Math.abs(bA))),\n bC = signum(bA) * (100 / viewingConditions.fl) * Math.pow(bCBase, 1 / .42),\n rF = rC / viewingConditions.rgbD[0],\n gF = gC / viewingConditions.rgbD[1],\n bF = bC / viewingConditions.rgbD[2];\n return [1.86206786 * rF - 1.01125463 * gF + .14918677 * bF, .38752654 * rF + .62144744 * gF - .00897398 * bF, -.0158415 * rF - .03412294 * gF + 1.04996444 * bF];\n }\n}\nclass HctSolver {\n static sanitizeRadians(angle) {\n return (angle + 8 * Math.PI) % (2 * Math.PI);\n }\n static trueDelinearized(rgbComponent) {\n const normalized = rgbComponent / 100;\n let delinearized = 0;\n return delinearized = normalized <= .0031308 ? 12.92 * normalized : 1.055 * Math.pow(normalized, 1 / 2.4) - .055, 255 * delinearized;\n }\n static chromaticAdaptation(component) {\n const af = Math.pow(Math.abs(component), .42);\n return 400 * signum(component) * af / (af + 27.13);\n }\n static hueOf(linrgb) {\n const scaledDiscount = matrixMultiply(linrgb, HctSolver.SCALED_DISCOUNT_FROM_LINRGB),\n rA = HctSolver.chromaticAdaptation(scaledDiscount[0]),\n gA = HctSolver.chromaticAdaptation(scaledDiscount[1]),\n bA = HctSolver.chromaticAdaptation(scaledDiscount[2]),\n a = (11 * rA + -12 * gA + bA) / 11,\n b = (rA + gA - 2 * bA) / 9;\n return Math.atan2(b, a);\n }\n static areInCyclicOrder(a, b, c) {\n return HctSolver.sanitizeRadians(b - a) < HctSolver.sanitizeRadians(c - a);\n }\n static intercept(source, mid, target) {\n return (mid - source) / (target - source);\n }\n static lerpPoint(source, t, target) {\n return [source[0] + (target[0] - source[0]) * t, source[1] + (target[1] - source[1]) * t, source[2] + (target[2] - source[2]) * t];\n }\n static setCoordinate(source, coordinate, target, axis) {\n const t = HctSolver.intercept(source[axis], coordinate, target[axis]);\n return HctSolver.lerpPoint(source, t, target);\n }\n static isBounded(x) {\n return 0 <= x && x <= 100;\n }\n static nthVertex(y, n) {\n const kR = HctSolver.Y_FROM_LINRGB[0],\n kG = HctSolver.Y_FROM_LINRGB[1],\n kB = HctSolver.Y_FROM_LINRGB[2],\n coordA = n % 4 <= 1 ? 0 : 100,\n coordB = n % 2 == 0 ? 0 : 100;\n if (n < 4) {\n const g = coordA,\n b = coordB,\n r = (y - g * kG - b * kB) / kR;\n return HctSolver.isBounded(r) ? [r, g, b] : [-1, -1, -1];\n }\n if (n < 8) {\n const b = coordA,\n r = coordB,\n g = (y - r * kR - b * kB) / kG;\n return HctSolver.isBounded(g) ? [r, g, b] : [-1, -1, -1];\n }\n {\n const r = coordA,\n g = coordB,\n b = (y - r * kR - g * kG) / kB;\n return HctSolver.isBounded(b) ? [r, g, b] : [-1, -1, -1];\n }\n }\n static bisectToSegment(y, targetHue) {\n let left = [-1, -1, -1],\n right = left,\n leftHue = 0,\n rightHue = 0,\n initialized = !1,\n uncut = !0;\n for (let n = 0; n < 12; n++) {\n const mid = HctSolver.nthVertex(y, n);\n if (mid[0] < 0) continue;\n const midHue = HctSolver.hueOf(mid);\n initialized ? (uncut || HctSolver.areInCyclicOrder(leftHue, midHue, rightHue)) && (uncut = !1, HctSolver.areInCyclicOrder(leftHue, targetHue, midHue) ? (right = mid, rightHue = midHue) : (left = mid, leftHue = midHue)) : (left = mid, right = mid, leftHue = midHue, rightHue = midHue, initialized = !0);\n }\n return [left, right];\n }\n static midpoint(a, b) {\n return [(a[0] + b[0]) / 2, (a[1] + b[1]) / 2, (a[2] + b[2]) / 2];\n }\n static criticalPlaneBelow(x) {\n return Math.floor(x - .5);\n }\n static criticalPlaneAbove(x) {\n return Math.ceil(x - .5);\n }\n static bisectToLimit(y, targetHue) {\n const segment = HctSolver.bisectToSegment(y, targetHue);\n let left = segment[0],\n leftHue = HctSolver.hueOf(left),\n right = segment[1];\n for (let axis = 0; axis < 3; axis++) if (left[axis] !== right[axis]) {\n let lPlane = -1,\n rPlane = 255;\n left[axis] < right[axis] ? (lPlane = HctSolver.criticalPlaneBelow(HctSolver.trueDelinearized(left[axis])), rPlane = HctSolver.criticalPlaneAbove(HctSolver.trueDelinearized(right[axis]))) : (lPlane = HctSolver.criticalPlaneAbove(HctSolver.trueDelinearized(left[axis])), rPlane = HctSolver.criticalPlaneBelow(HctSolver.trueDelinearized(right[axis])));\n for (let i = 0; i < 8 && !(Math.abs(rPlane - lPlane) <= 1); i++) {\n const mPlane = Math.floor((lPlane + rPlane) / 2),\n midPlaneCoordinate = HctSolver.CRITICAL_PLANES[mPlane],\n mid = HctSolver.setCoordinate(left, midPlaneCoordinate, right, axis),\n midHue = HctSolver.hueOf(mid);\n HctSolver.areInCyclicOrder(leftHue, targetHue, midHue) ? (right = mid, rPlane = mPlane) : (left = mid, leftHue = midHue, lPlane = mPlane);\n }\n }\n return HctSolver.midpoint(left, right);\n }\n static inverseChromaticAdaptation(adapted) {\n const adaptedAbs = Math.abs(adapted),\n base = Math.max(0, 27.13 * adaptedAbs / (400 - adaptedAbs));\n return signum(adapted) * Math.pow(base, 1 / .42);\n }\n static findResultByJ(hueRadians, chroma, y) {\n let j = 11 * Math.sqrt(y);\n const viewingConditions = ViewingConditions.DEFAULT,\n tInnerCoeff = 1 / Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73),\n p1 = .25 * (Math.cos(hueRadians + 2) + 3.8) * (5e4 / 13) * viewingConditions.nc * viewingConditions.ncb,\n hSin = Math.sin(hueRadians),\n hCos = Math.cos(hueRadians);\n for (let iterationRound = 0; iterationRound < 5; iterationRound++) {\n const jNormalized = j / 100,\n alpha = 0 === chroma || 0 === j ? 0 : chroma / Math.sqrt(jNormalized),\n t = Math.pow(alpha * tInnerCoeff, 1 / .9),\n p2 = viewingConditions.aw * Math.pow(jNormalized, 1 / viewingConditions.c / viewingConditions.z) / viewingConditions.nbb,\n gamma = 23 * (p2 + .305) * t / (23 * p1 + 11 * t * hCos + 108 * t * hSin),\n a = gamma * hCos,\n b = gamma * hSin,\n rA = (460 * p2 + 451 * a + 288 * b) / 1403,\n gA = (460 * p2 - 891 * a - 261 * b) / 1403,\n bA = (460 * p2 - 220 * a - 6300 * b) / 1403,\n linrgb = matrixMultiply([HctSolver.inverseChromaticAdaptation(rA), HctSolver.inverseChromaticAdaptation(gA), HctSolver.inverseChromaticAdaptation(bA)], HctSolver.LINRGB_FROM_SCALED_DISCOUNT);\n if (linrgb[0] < 0 || linrgb[1] < 0 || linrgb[2] < 0) return 0;\n const kR = HctSolver.Y_FROM_LINRGB[0],\n kG = HctSolver.Y_FROM_LINRGB[1],\n kB = HctSolver.Y_FROM_LINRGB[2],\n fnj = kR * linrgb[0] + kG * linrgb[1] + kB * linrgb[2];\n if (fnj <= 0) return 0;\n if (4 === iterationRound || Math.abs(fnj - y) < .002) return linrgb[0] > 100.01 || linrgb[1] > 100.01 || linrgb[2] > 100.01 ? 0 : argbFromLinrgb(linrgb);\n j -= (fnj - y) * j / (2 * fnj);\n }\n return 0;\n }\n static solveToInt(hueDegrees, chroma, lstar) {\n if (chroma < 1e-4 || lstar < 1e-4 || lstar > 99.9999) return argbFromLstar(lstar);\n const hueRadians = (hueDegrees = sanitizeDegreesDouble(hueDegrees)) / 180 * Math.PI,\n y = yFromLstar(lstar),\n exactAnswer = HctSolver.findResultByJ(hueRadians, chroma, y);\n if (0 !== exactAnswer) return exactAnswer;\n return argbFromLinrgb(HctSolver.bisectToLimit(y, hueRadians));\n }\n static solveToCam(hueDegrees, chroma, lstar) {\n return Cam16.fromInt(HctSolver.solveToInt(hueDegrees, chroma, lstar));\n }\n}\nHctSolver.SCALED_DISCOUNT_FROM_LINRGB = [[.001200833568784504, .002389694492170889, .0002795742885861124], [.0005891086651375999, .0029785502573438758, .0003270666104008398], [.00010146692491640572, .0005364214359186694, .0032979401770712076]], HctSolver.LINRGB_FROM_SCALED_DISCOUNT = [[1373.2198709594231, -1100.4251190754821, -7.278681089101213], [-271.815969077903, 559.6580465940733, -32.46047482791194], [1.9622899599665666, -57.173814538844006, 308.7233197812385]], HctSolver.Y_FROM_LINRGB = [.2126, .7152, .0722], HctSolver.CRITICAL_PLANES = [.015176349177441876, .045529047532325624, .07588174588720938, .10623444424209313, .13658714259697685, .16693984095186062, .19729253930674434, .2276452376616281, .2579979360165119, .28835063437139563, .3188300904430532, .350925934958123, .3848314933096426, .42057480301049466, .458183274052838, .4976837250274023, .5391024159806381, .5824650784040898, .6277969426914107, .6751227633498623, .7244668422128921, .775853049866786, .829304845476233, .8848452951698498, .942497089126609, 1.0022825574869039, 1.0642236851973577, 1.1283421258858297, 1.1946592148522128, 1.2631959812511864, 1.3339731595349034, 1.407011200216447, 1.4823302800086415, 1.5599503113873272, 1.6398909516233677, 1.7221716113234105, 1.8068114625156377, 1.8938294463134073, 1.9832442801866852, 2.075074464868551, 2.1693382909216234, 2.2660538449872063, 2.36523901573795, 2.4669114995532007, 2.5710888059345764, 2.6777882626779785, 2.7870270208169257, 2.898822059350997, 3.0131901897720907, 3.1301480604002863, 3.2497121605402226, 3.3718988244681087, 3.4967242352587946, 3.624204428461639, 3.754355295633311, 3.887192587735158, 4.022731918402185, 4.160988767090289, 4.301978482107941, 4.445716283538092, 4.592217266055746, 4.741496401646282, 4.893568542229298, 5.048448422192488, 5.20615066083972, 5.3666897647573375, 5.5300801301023865, 5.696336044816294, 5.865471690767354, 6.037501145825082, 6.212438385869475, 6.390297286737924, 6.571091626112461, 6.7548350853498045, 6.941541251256611, 7.131223617812143, 7.323895587840543, 7.5195704746346665, 7.7182615035334345, 7.919981813454504, 8.124744458384042, 8.332562408825165, 8.543448553206703, 8.757415699253682, 8.974476575321063, 9.194643831691977, 9.417930041841839, 9.644347703669503, 9.873909240696694, 10.106627003236781, 10.342513269534024, 10.58158024687427, 10.8238400726681, 11.069304815507364, 11.317986476196008, 11.569896988756009, 11.825048221409341, 12.083451977536606, 12.345119996613247, 12.610063955123938, 12.878295467455942, 13.149826086772048, 13.42466730586372, 13.702830557985108, 13.984327217668513, 14.269168601521828, 14.55736596900856, 14.848930523210871, 15.143873411576273, 15.44220572664832, 15.743938506781891, 16.04908273684337, 16.35764934889634, 16.66964922287304, 16.985093187232053, 17.30399201960269, 17.62635644741625, 17.95219714852476, 18.281524751807332, 18.614349837764564, 18.95068293910138, 19.290534541298456, 19.633915083172692, 19.98083495742689, 20.331304511189067, 20.685334046541502, 21.042933821039977, 21.404114048223256, 21.76888489811322, 22.137256497705877, 22.50923893145328, 22.884842241736916, 23.264076429332462, 23.6469514538663, 24.033477234264016, 24.42366364919083, 24.817520537484558, 25.21505769858089, 25.61628489293138, 26.021211842414342, 26.429848230738664, 26.842203703840827, 27.258287870275353, 27.678110301598522, 28.10168053274597, 28.529008062403893, 28.96010235337422, 29.39497283293396, 29.83362889318845, 30.276079891419332, 30.722335150426627, 31.172403958865512, 31.62629557157785, 32.08401920991837, 32.54558406207592, 33.010999283389665, 33.4802739966603, 33.953417292456834, 34.430438229418264, 34.911345834551085, 35.39614910352207, 35.88485700094671, 36.37747846067349, 36.87402238606382, 37.37449765026789, 37.87891309649659, 38.38727753828926, 38.89959975977785, 39.41588851594697, 39.93615253289054, 40.460400508064545, 40.98864111053629, 41.520882981230194, 42.05713473317016, 42.597404951718396, 43.141702194811224, 43.6900349931913, 44.24241185063697, 44.798841244188324, 45.35933162437017, 45.92389141541209, 46.49252901546552, 47.065252796817916, 47.64207110610409, 48.22299226451468, 48.808024568002054, 49.3971762874833, 49.9904556690408, 50.587870934119984, 51.189430279724725, 51.79514187861014, 52.40501387947288, 53.0190544071392, 53.637271562750364, 54.259673423945976, 54.88626804504493, 55.517063457223934, 56.15206766869424, 56.79128866487574, 57.43473440856916, 58.08241284012621, 58.734331877617365, 59.39049941699807, 60.05092333227251, 60.715611475655585, 61.38457167773311, 62.057811747619894, 62.7353394731159, 63.417162620860914, 64.10328893648692, 64.79372614476921, 65.48848194977529, 66.18756403501224, 66.89098006357258, 67.59873767827808, 68.31084450182222, 69.02730813691093, 69.74813616640164, 70.47333615344107, 71.20291564160104, 71.93688215501312, 72.67524319850172, 73.41800625771542, 74.16517879925733, 74.9167682708136, 75.67278210128072, 76.43322770089146, 77.1981124613393, 77.96744375590167, 78.74122893956174, 79.51947534912904, 80.30219030335869, 81.08938110306934, 81.88105503125999, 82.67721935322541, 83.4778813166706, 84.28304815182372, 85.09272707154808, 85.90692527145302, 86.72564993000343, 87.54890820862819, 88.3767072518277, 89.2090541872801, 90.04595612594655, 90.88742016217518, 91.73345337380438, 92.58406282226491, 93.43925555268066, 94.29903859396902, 95.16341895893969, 96.03240364439274, 96.9059996312159, 97.78421388448044, 98.6670533535366, 99.55452497210776];\nclass Hct {\n static from(hue, chroma, tone) {\n return new Hct(HctSolver.solveToInt(hue, chroma, tone));\n }\n static fromInt(argb) {\n return new Hct(argb);\n }\n toInt() {\n return this.argb;\n }\n get hue() {\n return this.internalHue;\n }\n set hue(newHue) {\n this.setInternalState(HctSolver.solveToInt(newHue, this.internalChroma, this.internalTone));\n }\n get chroma() {\n return this.internalChroma;\n }\n set chroma(newChroma) {\n this.setInternalState(HctSolver.solveToInt(this.internalHue, newChroma, this.internalTone));\n }\n get tone() {\n return this.internalTone;\n }\n set tone(newTone) {\n this.setInternalState(HctSolver.solveToInt(this.internalHue, this.internalChroma, newTone));\n }\n constructor(argb) {\n this.argb = argb;\n const cam = Cam16.fromInt(argb);\n this.internalHue = cam.hue, this.internalChroma = cam.chroma, this.internalTone = lstarFromArgb(argb), this.argb = argb;\n }\n setInternalState(argb) {\n const cam = Cam16.fromInt(argb);\n this.internalHue = cam.hue, this.internalChroma = cam.chroma, this.internalTone = lstarFromArgb(argb), this.argb = argb;\n }\n inViewingConditions(vc) {\n const viewedInVc = Cam16.fromInt(this.toInt()).xyzInViewingConditions(vc),\n recastInVc = Cam16.fromXyzInViewingConditions(viewedInVc[0], viewedInVc[1], viewedInVc[2], ViewingConditions.make());\n return Hct.from(recastInVc.hue, recastInVc.chroma, lstarFromY(viewedInVc[1]));\n }\n}\nclass Blend {\n static harmonize(designColor, sourceColor) {\n const fromHct = Hct.fromInt(designColor),\n toHct = Hct.fromInt(sourceColor),\n differenceDegrees$1 = differenceDegrees(fromHct.hue, toHct.hue),\n rotationDegrees = Math.min(.5 * differenceDegrees$1, 15),\n outputHue = sanitizeDegreesDouble(fromHct.hue + rotationDegrees * rotationDirection(fromHct.hue, toHct.hue));\n return Hct.from(outputHue, fromHct.chroma, fromHct.tone).toInt();\n }\n static hctHue(from, to, amount) {\n const ucs = Blend.cam16Ucs(from, to, amount),\n ucsCam = Cam16.fromInt(ucs),\n fromCam = Cam16.fromInt(from);\n return Hct.from(ucsCam.hue, fromCam.chroma, lstarFromArgb(from)).toInt();\n }\n static cam16Ucs(from, to, amount) {\n const fromCam = Cam16.fromInt(from),\n toCam = Cam16.fromInt(to),\n fromJ = fromCam.jstar,\n fromA = fromCam.astar,\n fromB = fromCam.bstar,\n jstar = fromJ + (toCam.jstar - fromJ) * amount,\n astar = fromA + (toCam.astar - fromA) * amount,\n bstar = fromB + (toCam.bstar - fromB) * amount;\n return Cam16.fromUcs(jstar, astar, bstar).toInt();\n }\n}\nclass Contrast {\n static ratioOfTones(toneA, toneB) {\n return toneA = clampDouble(0, 100, toneA), toneB = clampDouble(0, 100, toneB), Contrast.ratioOfYs(yFromLstar(toneA), yFromLstar(toneB));\n }\n static ratioOfYs(y1, y2) {\n const lighter = y1 > y2 ? y1 : y2;\n return (lighter + 5) / ((lighter === y2 ? y1 : y2) + 5);\n }\n static lighter(tone, ratio) {\n if (tone < 0 || tone > 100) return -1;\n const darkY = yFromLstar(tone),\n lightY = ratio * (darkY + 5) - 5,\n realContrast = Contrast.ratioOfYs(lightY, darkY),\n delta = Math.abs(realContrast - ratio);\n if (realContrast < ratio && delta > .04) return -1;\n const returnValue = lstarFromY(lightY) + .4;\n return returnValue < 0 || returnValue > 100 ? -1 : returnValue;\n }\n static darker(tone, ratio) {\n if (tone < 0 || tone > 100) return -1;\n const lightY = yFromLstar(tone),\n darkY = (lightY + 5) / ratio - 5,\n realContrast = Contrast.ratioOfYs(lightY, darkY),\n delta = Math.abs(realContrast - ratio);\n if (realContrast < ratio && delta > .04) return -1;\n const returnValue = lstarFromY(darkY) - .4;\n return returnValue < 0 || returnValue > 100 ? -1 : returnValue;\n }\n static lighterUnsafe(tone, ratio) {\n const lighterSafe = Contrast.lighter(tone, ratio);\n return lighterSafe < 0 ? 100 : lighterSafe;\n }\n static darkerUnsafe(tone, ratio) {\n const darkerSafe = Contrast.darker(tone, ratio);\n return darkerSafe < 0 ? 0 : darkerSafe;\n }\n}\nclass DislikeAnalyzer {\n static isDisliked(hct) {\n const huePasses = Math.round(hct.hue) >= 90 && Math.round(hct.hue) <= 111,\n chromaPasses = Math.round(hct.chroma) > 16,\n tonePasses = Math.round(hct.tone) < 65;\n return huePasses && chromaPasses && tonePasses;\n }\n static fixIfDisliked(hct) {\n return DislikeAnalyzer.isDisliked(hct) ? Hct.from(hct.hue, hct.chroma, 70) : hct;\n }\n}\nclass DynamicColor {\n static fromPalette(args) {\n return new DynamicColor(args.name ?? \"\", args.palette, args.tone, args.isBackground ?? !1, args.background, args.secondBackground, args.contrastCurve, args.toneDeltaPair);\n }\n constructor(name, palette, tone, isBackground, background, secondBackground, contrastCurve, toneDeltaPair) {\n if (this.name = name, this.palette = palette, this.tone = tone, this.isBackground = isBackground, this.background = background, this.secondBackground = secondBackground, this.contrastCurve = contrastCurve, this.toneDeltaPair = toneDeltaPair, this.hctCache = new Map(), !background && secondBackground) throw new Error(`Color ${name} has secondBackgrounddefined, but background is not defined.`);\n if (!background && contrastCurve) throw new Error(`Color ${name} has contrastCurvedefined, but background is not defined.`);\n if (background && !contrastCurve) throw new Error(`Color ${name} has backgrounddefined, but contrastCurve is not defined.`);\n }\n getArgb(scheme) {\n return this.getHct(scheme).toInt();\n }\n getHct(scheme) {\n const cachedAnswer = this.hctCache.get(scheme);\n if (null != cachedAnswer) return cachedAnswer;\n const tone = this.getTone(scheme),\n answer = this.palette(scheme).getHct(tone);\n return this.hctCache.size > 4 && this.hctCache.clear(), this.hctCache.set(scheme, answer), answer;\n }\n getTone(scheme) {\n const decreasingContrast = scheme.contrastLevel < 0;\n if (this.toneDeltaPair) {\n const toneDeltaPair = this.toneDeltaPair(scheme),\n roleA = toneDeltaPair.roleA,\n roleB = toneDeltaPair.roleB,\n delta = toneDeltaPair.delta,\n polarity = toneDeltaPair.polarity,\n stayTogether = toneDeltaPair.stayTogether,\n bgTone = this.background(scheme).getTone(scheme),\n aIsNearer = \"nearer\" === polarity || \"lighter\" === polarity && !scheme.isDark || \"darker\" === polarity && scheme.isDark,\n nearer = aIsNearer ? roleA : roleB,\n farther = aIsNearer ? roleB : roleA,\n amNearer = this.name === nearer.name,\n expansionDir = scheme.isDark ? 1 : -1,\n nContrast = nearer.contrastCurve.getContrast(scheme.contrastLevel),\n fContrast = farther.contrastCurve.getContrast(scheme.contrastLevel),\n nInitialTone = nearer.tone(scheme);\n let nTone = Contrast.ratioOfTones(bgTone, nInitialTone) >= nContrast ? nInitialTone : DynamicColor.foregroundTone(bgTone, nContrast);\n const fInitialTone = farther.tone(scheme);\n let fTone = Contrast.ratioOfTones(bgTone, fInitialTone) >= fContrast ? fInitialTone : DynamicColor.foregroundTone(bgTone, fContrast);\n return decreasingContrast && (nTone = DynamicColor.foregroundTone(bgTone, nContrast), fTone = DynamicColor.foregroundTone(bgTone, fContrast)), (fTone - nTone) * expansionDir >= delta || (fTone = clampDouble(0, 100, nTone + delta * expansionDir), (fTone - nTone) * expansionDir >= delta || (nTone = clampDouble(0, 100, fTone - delta * expansionDir))), 50 <= nTone && nTone < 60 ? expansionDir > 0 ? (nTone = 60, fTone = Math.max(fTone, nTone + delta * expansionDir)) : (nTone = 49, fTone = Math.min(fTone, nTone + delta * expansionDir)) : 50 <= fTone && fTone < 60 && (stayTogether ? expansionDir > 0 ? (nTone = 60, fTone = Math.max(fTone, nTone + delta * expansionDir)) : (nTone = 49, fTone = Math.min(fTone, nTone + delta * expansionDir)) : fTone = expansionDir > 0 ? 60 : 49), amNearer ? nTone : fTone;\n }\n {\n let answer = this.tone(scheme);\n if (null == this.background) return answer;\n const bgTone = this.background(scheme).getTone(scheme),\n desiredRatio = this.contrastCurve.getContrast(scheme.contrastLevel);\n if (Contrast.ratioOfTones(bgTone, answer) >= desiredRatio || (answer = DynamicColor.foregroundTone(bgTone, desiredRatio)), decreasingContrast && (answer = DynamicColor.foregroundTone(bgTone, desiredRatio)), this.isBackground && 50 <= answer && answer < 60 && (answer = Contrast.ratioOfTones(49, bgTone) >= desiredRatio ? 49 : 60), this.secondBackground) {\n const [bg1, bg2] = [this.background, this.secondBackground],\n [bgTone1, bgTone2] = [bg1(scheme).getTone(scheme), bg2(scheme).getTone(scheme)],\n [upper, lower] = [Math.max(bgTone1, bgTone2), Math.min(bgTone1, bgTone2)];\n if (Contrast.ratioOfTones(upper, answer) >= desiredRatio && Contrast.ratioOfTones(lower, answer) >= desiredRatio) return answer;\n const lightOption = Contrast.lighter(upper, desiredRatio),\n darkOption = Contrast.darker(lower, desiredRatio),\n availables = [];\n -1 !== lightOption && availables.push(lightOption), -1 !== darkOption && availables.push(darkOption);\n return DynamicColor.tonePrefersLightForeground(bgTone1) || DynamicColor.tonePrefersLightForeground(bgTone2) ? lightOption < 0 ? 100 : lightOption : 1 === availables.length ? availables[0] : darkOption < 0 ? 0 : darkOption;\n }\n return answer;\n }\n }\n static foregroundTone(bgTone, ratio) {\n const lighterTone = Contrast.lighterUnsafe(bgTone, ratio),\n darkerTone = Contrast.darkerUnsafe(bgTone, ratio),\n lighterRatio = Contrast.ratioOfTones(lighterTone, bgTone),\n darkerRatio = Contrast.ratioOfTones(darkerTone, bgTone);\n if (DynamicColor.tonePrefersLightForeground(bgTone)) {\n const negligibleDifference = Math.abs(lighterRatio - darkerRatio) < .1 && lighterRatio < ratio && darkerRatio < ratio;\n return lighterRatio >= ratio || lighterRatio >= darkerRatio || negligibleDifference ? lighterTone : darkerTone;\n }\n return darkerRatio >= ratio || darkerRatio >= lighterRatio ? darkerTone : lighterTone;\n }\n static tonePrefersLightForeground(tone) {\n return Math.round(tone) < 60;\n }\n static toneAllowsLightForeground(tone) {\n return Math.round(tone) <= 49;\n }\n static enableLightForeground(tone) {\n return DynamicColor.tonePrefersLightForeground(tone) && !DynamicColor.toneAllowsLightForeground(tone) ? 49 : tone;\n }\n}\nvar Variant;\n!function (Variant) {\n Variant[Variant.MONOCHROME = 0] = \"MONOCHROME\", Variant[Variant.NEUTRAL = 1] = \"NEUTRAL\", Variant[Variant.TONAL_SPOT = 2] = \"TONAL_SPOT\", Variant[Variant.VIBRANT = 3] = \"VIBRANT\", Variant[Variant.EXPRESSIVE = 4] = \"EXPRESSIVE\", Variant[Variant.FIDELITY = 5] = \"FIDELITY\", Variant[Variant.CONTENT = 6] = \"CONTENT\", Variant[Variant.RAINBOW = 7] = \"RAINBOW\", Variant[Variant.FRUIT_SALAD = 8] = \"FRUIT_SALAD\";\n}(Variant || (Variant = {}));\nclass ContrastCurve {\n constructor(low, normal, medium, high) {\n this.low = low, this.normal = normal, this.medium = medium, this.high = high;\n }\n getContrast(contrastLevel) {\n return contrastLevel <= -1 ? this.low : contrastLevel < 0 ? lerp(this.low, this.normal, (contrastLevel - -1) / 1) : contrastLevel < .5 ? lerp(this.normal, this.medium, (contrastLevel - 0) / .5) : contrastLevel < 1 ? lerp(this.medium, this.high, (contrastLevel - .5) / .5) : this.high;\n }\n}\nclass ToneDeltaPair {\n constructor(roleA, roleB, delta, polarity, stayTogether) {\n this.roleA = roleA, this.roleB = roleB, this.delta = delta, this.polarity = polarity, this.stayTogether = stayTogether;\n }\n}\nfunction isFidelity(scheme) {\n return scheme.variant === Variant.FIDELITY || scheme.variant === Variant.CONTENT;\n}\nfunction isMonochrome(scheme) {\n return scheme.variant === Variant.MONOCHROME;\n}\nfunction findDesiredChromaByTone(hue, chroma, tone, byDecreasingTone) {\n let answer = tone,\n closestToChroma = Hct.from(hue, chroma, tone);\n if (closestToChroma.chroma < chroma) {\n let chromaPeak = closestToChroma.chroma;\n for (; closestToChroma.chroma < chroma;) {\n answer += byDecreasingTone ? -1 : 1;\n const potentialSolution = Hct.from(hue, chroma, answer);\n if (chromaPeak > potentialSolution.chroma) break;\n if (Math.abs(potentialSolution.chroma - chroma) < .4) break;\n Math.abs(potentialSolution.chroma - chroma) < Math.abs(closestToChroma.chroma - chroma) && (closestToChroma = potentialSolution), chromaPeak = Math.max(chromaPeak, potentialSolution.chroma);\n }\n }\n return answer;\n}\nfunction viewingConditionsForAlbers(scheme) {\n return ViewingConditions.make(void 0, void 0, scheme.isDark ? 30 : 80, void 0, void 0);\n}\nfunction performAlbers(prealbers, scheme) {\n const albersd = prealbers.inViewingConditions(viewingConditionsForAlbers(scheme));\n return DynamicColor.tonePrefersLightForeground(prealbers.tone) && !DynamicColor.toneAllowsLightForeground(albersd.tone) ? DynamicColor.enableLightForeground(prealbers.tone) : DynamicColor.enableLightForeground(albersd.tone);\n}\nclass MaterialDynamicColors {\n static highestSurface(s) {\n return s.isDark ? MaterialDynamicColors.surfaceBright : MaterialDynamicColors.surfaceDim;\n }\n}\nMaterialDynamicColors.contentAccentToneDelta = 15, MaterialDynamicColors.primaryPaletteKeyColor = DynamicColor.fromPalette({\n name: \"primary_palette_key_color\",\n palette: s => s.primaryPalette,\n tone: s => s.primaryPalette.keyColor.tone\n}), MaterialDynamicColors.secondaryPaletteKeyColor = DynamicColor.fromPalette({\n name: \"secondary_palette_key_color\",\n palette: s => s.secondaryPalette,\n tone: s => s.secondaryPalette.keyColor.tone\n}), MaterialDynamicColors.tertiaryPaletteKeyColor = DynamicColor.fromPalette({\n name: \"tertiary_palette_key_color\",\n palette: s => s.tertiaryPalette,\n tone: s => s.tertiaryPalette.keyColor.tone\n}), MaterialDynamicColors.neutralPaletteKeyColor = DynamicColor.fromPalette({\n name: \"neutral_palette_key_color\",\n palette: s => s.neutralPalette,\n tone: s => s.neutralPalette.keyColor.tone\n}), MaterialDynamicColors.neutralVariantPaletteKeyColor = DynamicColor.fromPalette({\n name: \"neutral_variant_palette_key_color\",\n palette: s => s.neutralVariantPalette,\n tone: s => s.neutralVariantPalette.keyColor.tone\n}), MaterialDynamicColors.background = DynamicColor.fromPalette({\n name: \"background\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 6 : 98,\n isBackground: !0\n}), MaterialDynamicColors.onBackground = DynamicColor.fromPalette({\n name: \"on_background\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.background,\n contrastCurve: new ContrastCurve(3, 3, 4.5, 7)\n}), MaterialDynamicColors.surface = DynamicColor.fromPalette({\n name: \"surface\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 6 : 98,\n isBackground: !0\n}), MaterialDynamicColors.surfaceDim = DynamicColor.fromPalette({\n name: \"surface_dim\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 6 : 87,\n isBackground: !0\n}), MaterialDynamicColors.surfaceBright = DynamicColor.fromPalette({\n name: \"surface_bright\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 24 : 98,\n isBackground: !0\n}), MaterialDynamicColors.surfaceContainerLowest = DynamicColor.fromPalette({\n name: \"surface_container_lowest\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 4 : 100,\n isBackground: !0\n}), MaterialDynamicColors.surfaceContainerLow = DynamicColor.fromPalette({\n name: \"surface_container_low\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 10 : 96,\n isBackground: !0\n}), MaterialDynamicColors.surfaceContainer = DynamicColor.fromPalette({\n name: \"surface_container\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 12 : 94,\n isBackground: !0\n}), MaterialDynamicColors.surfaceContainerHigh = DynamicColor.fromPalette({\n name: \"surface_container_high\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 17 : 92,\n isBackground: !0\n}), MaterialDynamicColors.surfaceContainerHighest = DynamicColor.fromPalette({\n name: \"surface_container_highest\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 22 : 90,\n isBackground: !0\n}), MaterialDynamicColors.onSurface = DynamicColor.fromPalette({\n name: \"on_surface\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.surfaceVariant = DynamicColor.fromPalette({\n name: \"surface_variant\",\n palette: s => s.neutralVariantPalette,\n tone: s => s.isDark ? 30 : 90,\n isBackground: !0\n}), MaterialDynamicColors.onSurfaceVariant = DynamicColor.fromPalette({\n name: \"on_surface_variant\",\n palette: s => s.neutralVariantPalette,\n tone: s => s.isDark ? 80 : 30,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.inverseSurface = DynamicColor.fromPalette({\n name: \"inverse_surface\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 90 : 20\n}), MaterialDynamicColors.inverseOnSurface = DynamicColor.fromPalette({\n name: \"inverse_on_surface\",\n palette: s => s.neutralPalette,\n tone: s => s.isDark ? 20 : 95,\n background: s => MaterialDynamicColors.inverseSurface,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.outline = DynamicColor.fromPalette({\n name: \"outline\",\n palette: s => s.neutralVariantPalette,\n tone: s => s.isDark ? 60 : 50,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1.5, 3, 4.5, 7)\n}), MaterialDynamicColors.outlineVariant = DynamicColor.fromPalette({\n name: \"outline_variant\",\n palette: s => s.neutralVariantPalette,\n tone: s => s.isDark ? 30 : 80,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7)\n}), MaterialDynamicColors.shadow = DynamicColor.fromPalette({\n name: \"shadow\",\n palette: s => s.neutralPalette,\n tone: s => 0\n}), MaterialDynamicColors.scrim = DynamicColor.fromPalette({\n name: \"scrim\",\n palette: s => s.neutralPalette,\n tone: s => 0\n}), MaterialDynamicColors.surfaceTint = DynamicColor.fromPalette({\n name: \"surface_tint\",\n palette: s => s.primaryPalette,\n tone: s => s.isDark ? 80 : 40,\n isBackground: !0\n}), MaterialDynamicColors.primary = DynamicColor.fromPalette({\n name: \"primary\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 100 : 0 : s.isDark ? 80 : 40,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryContainer, MaterialDynamicColors.primary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onPrimary = DynamicColor.fromPalette({\n name: \"on_primary\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 10 : 90 : s.isDark ? 20 : 100,\n background: s => MaterialDynamicColors.primary,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.primaryContainer = DynamicColor.fromPalette({\n name: \"primary_container\",\n palette: s => s.primaryPalette,\n tone: s => isFidelity(s) ? performAlbers(s.sourceColorHct, s) : isMonochrome(s) ? s.isDark ? 85 : 25 : s.isDark ? 30 : 90,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryContainer, MaterialDynamicColors.primary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onPrimaryContainer = DynamicColor.fromPalette({\n name: \"on_primary_container\",\n palette: s => s.primaryPalette,\n tone: s => isFidelity(s) ? DynamicColor.foregroundTone(MaterialDynamicColors.primaryContainer.tone(s), 4.5) : isMonochrome(s) ? s.isDark ? 0 : 100 : s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.primaryContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.inversePrimary = DynamicColor.fromPalette({\n name: \"inverse_primary\",\n palette: s => s.primaryPalette,\n tone: s => s.isDark ? 40 : 80,\n background: s => MaterialDynamicColors.inverseSurface,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.secondary = DynamicColor.fromPalette({\n name: \"secondary\",\n palette: s => s.secondaryPalette,\n tone: s => s.isDark ? 80 : 40,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryContainer, MaterialDynamicColors.secondary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onSecondary = DynamicColor.fromPalette({\n name: \"on_secondary\",\n palette: s => s.secondaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 10 : 100 : s.isDark ? 20 : 100,\n background: s => MaterialDynamicColors.secondary,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.secondaryContainer = DynamicColor.fromPalette({\n name: \"secondary_container\",\n palette: s => s.secondaryPalette,\n tone: s => {\n const initialTone = s.isDark ? 30 : 90;\n if (isMonochrome(s)) return s.isDark ? 30 : 85;\n if (!isFidelity(s)) return initialTone;\n let answer = findDesiredChromaByTone(s.secondaryPalette.hue, s.secondaryPalette.chroma, initialTone, !s.isDark);\n return answer = performAlbers(s.secondaryPalette.getHct(answer), s), answer;\n },\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryContainer, MaterialDynamicColors.secondary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onSecondaryContainer = DynamicColor.fromPalette({\n name: \"on_secondary_container\",\n palette: s => s.secondaryPalette,\n tone: s => isFidelity(s) ? DynamicColor.foregroundTone(MaterialDynamicColors.secondaryContainer.tone(s), 4.5) : s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.secondaryContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.tertiary = DynamicColor.fromPalette({\n name: \"tertiary\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 90 : 25 : s.isDark ? 80 : 40,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryContainer, MaterialDynamicColors.tertiary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onTertiary = DynamicColor.fromPalette({\n name: \"on_tertiary\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 10 : 90 : s.isDark ? 20 : 100,\n background: s => MaterialDynamicColors.tertiary,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.tertiaryContainer = DynamicColor.fromPalette({\n name: \"tertiary_container\",\n palette: s => s.tertiaryPalette,\n tone: s => {\n if (isMonochrome(s)) return s.isDark ? 60 : 49;\n if (!isFidelity(s)) return s.isDark ? 30 : 90;\n const albersTone = performAlbers(s.tertiaryPalette.getHct(s.sourceColorHct.tone), s),\n proposedHct = s.tertiaryPalette.getHct(albersTone);\n return DislikeAnalyzer.fixIfDisliked(proposedHct).tone;\n },\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryContainer, MaterialDynamicColors.tertiary, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onTertiaryContainer = DynamicColor.fromPalette({\n name: \"on_tertiary_container\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? s.isDark ? 0 : 100 : isFidelity(s) ? DynamicColor.foregroundTone(MaterialDynamicColors.tertiaryContainer.tone(s), 4.5) : s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.tertiaryContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.error = DynamicColor.fromPalette({\n name: \"error\",\n palette: s => s.errorPalette,\n tone: s => s.isDark ? 80 : 40,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.errorContainer, MaterialDynamicColors.error, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onError = DynamicColor.fromPalette({\n name: \"on_error\",\n palette: s => s.errorPalette,\n tone: s => s.isDark ? 20 : 100,\n background: s => MaterialDynamicColors.error,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.errorContainer = DynamicColor.fromPalette({\n name: \"error_container\",\n palette: s => s.errorPalette,\n tone: s => s.isDark ? 30 : 90,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.errorContainer, MaterialDynamicColors.error, 15, \"nearer\", !1)\n}), MaterialDynamicColors.onErrorContainer = DynamicColor.fromPalette({\n name: \"on_error_container\",\n palette: s => s.errorPalette,\n tone: s => s.isDark ? 90 : 10,\n background: s => MaterialDynamicColors.errorContainer,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.primaryFixed = DynamicColor.fromPalette({\n name: \"primary_fixed\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? 40 : 90,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryFixed, MaterialDynamicColors.primaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.primaryFixedDim = DynamicColor.fromPalette({\n name: \"primary_fixed_dim\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? 30 : 80,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryFixed, MaterialDynamicColors.primaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.onPrimaryFixed = DynamicColor.fromPalette({\n name: \"on_primary_fixed\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? 100 : 10,\n background: s => MaterialDynamicColors.primaryFixedDim,\n secondBackground: s => MaterialDynamicColors.primaryFixed,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.onPrimaryFixedVariant = DynamicColor.fromPalette({\n name: \"on_primary_fixed_variant\",\n palette: s => s.primaryPalette,\n tone: s => isMonochrome(s) ? 90 : 30,\n background: s => MaterialDynamicColors.primaryFixedDim,\n secondBackground: s => MaterialDynamicColors.primaryFixed,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.secondaryFixed = DynamicColor.fromPalette({\n name: \"secondary_fixed\",\n palette: s => s.secondaryPalette,\n tone: s => isMonochrome(s) ? 80 : 90,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryFixed, MaterialDynamicColors.secondaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.secondaryFixedDim = DynamicColor.fromPalette({\n name: \"secondary_fixed_dim\",\n palette: s => s.secondaryPalette,\n tone: s => isMonochrome(s) ? 70 : 80,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryFixed, MaterialDynamicColors.secondaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.onSecondaryFixed = DynamicColor.fromPalette({\n name: \"on_secondary_fixed\",\n palette: s => s.secondaryPalette,\n tone: s => 10,\n background: s => MaterialDynamicColors.secondaryFixedDim,\n secondBackground: s => MaterialDynamicColors.secondaryFixed,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.onSecondaryFixedVariant = DynamicColor.fromPalette({\n name: \"on_secondary_fixed_variant\",\n palette: s => s.secondaryPalette,\n tone: s => isMonochrome(s) ? 25 : 30,\n background: s => MaterialDynamicColors.secondaryFixedDim,\n secondBackground: s => MaterialDynamicColors.secondaryFixed,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n}), MaterialDynamicColors.tertiaryFixed = DynamicColor.fromPalette({\n name: \"tertiary_fixed\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? 40 : 90,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryFixed, MaterialDynamicColors.tertiaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.tertiaryFixedDim = DynamicColor.fromPalette({\n name: \"tertiary_fixed_dim\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? 30 : 80,\n isBackground: !0,\n background: s => MaterialDynamicColors.highestSurface(s),\n contrastCurve: new ContrastCurve(1, 1, 3, 7),\n toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryFixed, MaterialDynamicColors.tertiaryFixedDim, 10, \"lighter\", !0)\n}), MaterialDynamicColors.onTertiaryFixed = DynamicColor.fromPalette({\n name: \"on_tertiary_fixed\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? 100 : 10,\n background: s => MaterialDynamicColors.tertiaryFixedDim,\n secondBackground: s => MaterialDynamicColors.tertiaryFixed,\n contrastCurve: new ContrastCurve(4.5, 7, 11, 21)\n}), MaterialDynamicColors.onTertiaryFixedVariant = DynamicColor.fromPalette({\n name: \"on_tertiary_fixed_variant\",\n palette: s => s.tertiaryPalette,\n tone: s => isMonochrome(s) ? 90 : 30,\n background: s => MaterialDynamicColors.tertiaryFixedDim,\n secondBackground: s => MaterialDynamicColors.tertiaryFixed,\n contrastCurve: new ContrastCurve(3, 4.5, 7, 11)\n});\nclass TonalPalette {\n static fromInt(argb) {\n const hct = Hct.fromInt(argb);\n return TonalPalette.fromHct(hct);\n }\n static fromHct(hct) {\n return new TonalPalette(hct.hue, hct.chroma, hct);\n }\n static fromHueAndChroma(hue, chroma) {\n return new TonalPalette(hue, chroma, TonalPalette.createKeyColor(hue, chroma));\n }\n constructor(hue, chroma, keyColor) {\n this.hue = hue, this.chroma = chroma, this.keyColor = keyColor, this.cache = new Map();\n }\n static createKeyColor(hue, chroma) {\n let smallestDeltaHct = Hct.from(hue, chroma, 50),\n smallestDelta = Math.abs(smallestDeltaHct.chroma - chroma);\n for (let delta = 1; delta < 50; delta += 1) {\n if (Math.round(chroma) === Math.round(smallestDeltaHct.chroma)) return smallestDeltaHct;\n const hctAdd = Hct.from(hue, chroma, 50 + delta),\n hctAddDelta = Math.abs(hctAdd.chroma - chroma);\n hctAddDelta < smallestDelta && (smallestDelta = hctAddDelta, smallestDeltaHct = hctAdd);\n const hctSubtract = Hct.from(hue, chroma, 50 - delta),\n hctSubtractDelta = Math.abs(hctSubtract.chroma - chroma);\n hctSubtractDelta < smallestDelta && (smallestDelta = hctSubtractDelta, smallestDeltaHct = hctSubtract);\n }\n return smallestDeltaHct;\n }\n tone(tone) {\n let argb = this.cache.get(tone);\n return void 0 === argb && (argb = Hct.from(this.hue, this.chroma, tone).toInt(), this.cache.set(tone, argb)), argb;\n }\n getHct(tone) {\n return Hct.fromInt(this.tone(tone));\n }\n}\nclass CorePalette {\n static of(argb) {\n return new CorePalette(argb, !1);\n }\n static contentOf(argb) {\n return new CorePalette(argb, !0);\n }\n static fromColors(colors) {\n return CorePalette.createPaletteFromColors(!1, colors);\n }\n static contentFromColors(colors) {\n return CorePalette.createPaletteFromColors(!0, colors);\n }\n static createPaletteFromColors(content, colors) {\n const palette = new CorePalette(colors.primary, content);\n if (colors.secondary) {\n const p = new CorePalette(colors.secondary, content);\n palette.a2 = p.a1;\n }\n if (colors.tertiary) {\n const p = new CorePalette(colors.tertiary, content);\n palette.a3 = p.a1;\n }\n if (colors.error) {\n const p = new CorePalette(colors.error, content);\n palette.error = p.a1;\n }\n if (colors.neutral) {\n const p = new CorePalette(colors.neutral, content);\n palette.n1 = p.n1;\n }\n if (colors.neutralVariant) {\n const p = new CorePalette(colors.neutralVariant, content);\n palette.n2 = p.n2;\n }\n return palette;\n }\n constructor(argb, isContent) {\n const hct = Hct.fromInt(argb),\n hue = hct.hue,\n chroma = hct.chroma;\n isContent ? (this.a1 = TonalPalette.fromHueAndChroma(hue, chroma), this.a2 = TonalPalette.fromHueAndChroma(hue, chroma / 3), this.a3 = TonalPalette.fromHueAndChroma(hue + 60, chroma / 2), this.n1 = TonalPalette.fromHueAndChroma(hue, Math.min(chroma / 12, 4)), this.n2 = TonalPalette.fromHueAndChroma(hue, Math.min(chroma / 6, 8))) : (this.a1 = TonalPalette.fromHueAndChroma(hue, Math.max(48, chroma)), this.a2 = TonalPalette.fromHueAndChroma(hue, 16), this.a3 = TonalPalette.fromHueAndChroma(hue + 60, 24), this.n1 = TonalPalette.fromHueAndChroma(hue, 4), this.n2 = TonalPalette.fromHueAndChroma(hue, 8)), this.error = TonalPalette.fromHueAndChroma(25, 84);\n }\n}\nclass Scheme {\n get primary() {\n return this.props.primary;\n }\n get onPrimary() {\n return this.props.onPrimary;\n }\n get primaryContainer() {\n return this.props.primaryContainer;\n }\n get onPrimaryContainer() {\n return this.props.onPrimaryContainer;\n }\n get secondary() {\n return this.props.secondary;\n }\n get onSecondary() {\n return this.props.onSecondary;\n }\n get secondaryContainer() {\n return this.props.secondaryContainer;\n }\n get onSecondaryContainer() {\n return this.props.onSecondaryContainer;\n }\n get tertiary() {\n return this.props.tertiary;\n }\n get onTertiary() {\n return this.props.onTertiary;\n }\n get tertiaryContainer() {\n return this.props.tertiaryContainer;\n }\n get onTertiaryContainer() {\n return this.props.onTertiaryContainer;\n }\n get error() {\n return this.props.error;\n }\n get onError() {\n return this.props.onError;\n }\n get errorContainer() {\n return this.props.errorContainer;\n }\n get onErrorContainer() {\n return this.props.onErrorContainer;\n }\n get background() {\n return this.props.background;\n }\n get onBackground() {\n return this.props.onBackground;\n }\n get surface() {\n return this.props.surface;\n }\n get onSurface() {\n return this.props.onSurface;\n }\n get surfaceVariant() {\n return this.props.surfaceVariant;\n }\n get onSurfaceVariant() {\n return this.props.onSurfaceVariant;\n }\n get outline() {\n return this.props.outline;\n }\n get outlineVariant() {\n return this.props.outlineVariant;\n }\n get shadow() {\n return this.props.shadow;\n }\n get scrim() {\n return this.props.scrim;\n }\n get inverseSurface() {\n return this.props.inverseSurface;\n }\n get inverseOnSurface() {\n return this.props.inverseOnSurface;\n }\n get inversePrimary() {\n return this.props.inversePrimary;\n }\n static light(argb) {\n return Scheme.lightFromCorePalette(CorePalette.of(argb));\n }\n static dark(argb) {\n return Scheme.darkFromCorePalette(CorePalette.of(argb));\n }\n static lightContent(argb) {\n return Scheme.lightFromCorePalette(CorePalette.contentOf(argb));\n }\n static darkContent(argb) {\n return Scheme.darkFromCorePalette(CorePalette.contentOf(argb));\n }\n static lightFromCorePalette(core) {\n return new Scheme({\n primary: core.a1.tone(40),\n onPrimary: core.a1.tone(100),\n primaryContainer: core.a1.tone(90),\n onPrimaryContainer: core.a1.tone(10),\n secondary: core.a2.tone(40),\n onSecondary: core.a2.tone(100),\n secondaryContainer: core.a2.tone(90),\n onSecondaryContainer: core.a2.tone(10),\n tertiary: core.a3.tone(40),\n onTertiary: core.a3.tone(100),\n tertiaryContainer: core.a3.tone(90),\n onTertiaryContainer: core.a3.tone(10),\n error: core.error.tone(40),\n onError: core.error.tone(100),\n errorContainer: core.error.tone(90),\n onErrorContainer: core.error.tone(10),\n background: core.n1.tone(99),\n onBackground: core.n1.tone(10),\n surface: core.n1.tone(99),\n onSurface: core.n1.tone(10),\n surfaceVariant: core.n2.tone(90),\n onSurfaceVariant: core.n2.tone(30),\n outline: core.n2.tone(50),\n outlineVariant: core.n2.tone(80),\n shadow: core.n1.tone(0),\n scrim: core.n1.tone(0),\n inverseSurface: core.n1.tone(20),\n inverseOnSurface: core.n1.tone(95),\n inversePrimary: core.a1.tone(80)\n });\n }\n static darkFromCorePalette(core) {\n return new Scheme({\n primary: core.a1.tone(80),\n onPrimary: core.a1.tone(20),\n primaryContainer: core.a1.tone(30),\n onPrimaryContainer: core.a1.tone(90),\n secondary: core.a2.tone(80),\n onSecondary: core.a2.tone(20),\n secondaryContainer: core.a2.tone(30),\n onSecondaryContainer: core.a2.tone(90),\n tertiary: core.a3.tone(80),\n onTertiary: core.a3.tone(20),\n tertiaryContainer: core.a3.tone(30),\n onTertiaryContainer: core.a3.tone(90),\n error: core.error.tone(80),\n onError: core.error.tone(20),\n errorContainer: core.error.tone(30),\n onErrorContainer: core.error.tone(80),\n background: core.n1.tone(10),\n onBackground: core.n1.tone(90),\n surface: core.n1.tone(10),\n onSurface: core.n1.tone(90),\n surfaceVariant: core.n2.tone(30),\n onSurfaceVariant: core.n2.tone(80),\n outline: core.n2.tone(60),\n outlineVariant: core.n2.tone(30),\n shadow: core.n1.tone(0),\n scrim: core.n1.tone(0),\n inverseSurface: core.n1.tone(90),\n inverseOnSurface: core.n1.tone(20),\n inversePrimary: core.a1.tone(40)\n });\n }\n constructor(props) {\n this.props = props;\n }\n toJSON() {\n return {\n ...this.props\n };\n }\n}\nfunction hexFromArgb(argb) {\n const r = redFromArgb(argb),\n g = greenFromArgb(argb),\n b = blueFromArgb(argb),\n outParts = [r.toString(16), g.toString(16), b.toString(16)];\n for (const [i, part] of outParts.entries()) 1 === part.length && (outParts[i] = \"0\" + part);\n return \"#\" + outParts.join(\"\");\n}\nfunction argbFromHex(hex) {\n const isThree = 3 === (hex = hex.replace(\"#\", \"\")).length,\n isSix = 6 === hex.length,\n isEight = 8 === hex.length;\n if (!isThree && !isSix && !isEight) throw new Error(\"unexpected hex \" + hex);\n let r = 0,\n g = 0,\n b = 0;\n return isThree ? (r = parseIntHex(hex.slice(0, 1).repeat(2)), g = parseIntHex(hex.slice(1, 2).repeat(2)), b = parseIntHex(hex.slice(2, 3).repeat(2))) : isSix ? (r = parseIntHex(hex.slice(0, 2)), g = parseIntHex(hex.slice(2, 4)), b = parseIntHex(hex.slice(4, 6))) : isEight && (r = parseIntHex(hex.slice(2, 4)), g = parseIntHex(hex.slice(4, 6)), b = parseIntHex(hex.slice(6, 8))), (255 << 24 | (255 & r) << 16 | (255 & g) << 8 | 255 & b) >>> 0;\n}\nfunction parseIntHex(value) {\n return parseInt(value, 16);\n}\nfunction themeFromSourceColor(source, customColors) {\n if (customColors === void 0) {\n customColors = [];\n }\n const palette = CorePalette.of(source);\n return {\n source: source,\n schemes: {\n light: Scheme.light(source),\n dark: Scheme.dark(source)\n },\n palettes: {\n primary: palette.a1,\n secondary: palette.a2,\n tertiary: palette.a3,\n neutral: palette.n1,\n neutralVariant: palette.n2,\n error: palette.error\n },\n customColors: customColors.map(c => customColor(source, c))\n };\n}\nfunction customColor(source, color) {\n let value = color.value;\n const from = value,\n to = source;\n color.blend && (value = Blend.harmonize(from, to));\n const tones = CorePalette.of(value).a1;\n return {\n color: color,\n value: value,\n light: {\n color: tones.tone(40),\n onColor: tones.tone(100),\n colorContainer: tones.tone(90),\n onColorContainer: tones.tone(10)\n },\n dark: {\n color: tones.tone(80),\n onColor: tones.tone(20),\n colorContainer: tones.tone(30),\n onColorContainer: tones.tone(90)\n }\n };\n}\nexport { argbFromHex, hexFromArgb, themeFromSourceColor };","// eslint-disable-next-line\nimport { argbFromHex, hexFromArgb, themeFromSourceColor } from './material-color-utils.js';\n\n/* eslint-disable */\n// prettier-ignore\nfunction toRGBA(d) {\n const r = Math.round;\n const l = d.length;\n const rgba = {};\n if (d.slice(0, 3).toLowerCase() === 'rgb') {\n d = d.replace(' ', '').split(',');\n rgba[0] = parseInt(d[0].slice(d[3].toLowerCase() === 'a' ? 5 : 4), 10);\n rgba[1] = parseInt(d[1], 10);\n rgba[2] = parseInt(d[2], 10);\n rgba[3] = d[3] ? parseFloat(d[3]) : -1;\n } else {\n if (l < 6) d = parseInt(String(d[1]) + d[1] + d[2] + d[2] + d[3] + d[3] + (l > 4 ? String(d[4]) + d[4] : ''), 16);else d = parseInt(d.slice(1), 16);\n rgba[0] = d >> 16 & 255;\n rgba[1] = d >> 8 & 255;\n rgba[2] = d & 255;\n rgba[3] = l === 9 || l === 5 ? r((d >> 24 & 255) / 255 * 10000) / 10000 : -1;\n }\n return rgba;\n}\n\n// prettier-ignore\nfunction blend(from, to, p) {\n if (p === void 0) {\n p = 0.5;\n }\n const r = Math.round;\n from = from.trim();\n to = to.trim();\n const b = p < 0;\n p = b ? p * -1 : p;\n const f = toRGBA(from);\n const t = toRGBA(to);\n if (to[0] === 'r') {\n return 'rgb' + (to[3] === 'a' ? 'a(' : '(') + r((t[0] - f[0]) * p + f[0]) + ',' + r((t[1] - f[1]) * p + f[1]) + ',' + r((t[2] - f[2]) * p + f[2]) + (f[3] < 0 && t[3] < 0 ? '' : ',' + (f[3] > -1 && t[3] > -1 ? r(((t[3] - f[3]) * p + f[3]) * 10000) / 10000 : t[3] < 0 ? f[3] : t[3])) + ')';\n }\n return '#' + (0x100000000 + (f[3] > -1 && t[3] > -1 ? r(((t[3] - f[3]) * p + f[3]) * 255) : t[3] > -1 ? r(t[3] * 255) : f[3] > -1 ? r(f[3] * 255) : 255) * 0x1000000 + r((t[0] - f[0]) * p + f[0]) * 0x10000 + r((t[1] - f[1]) * p + f[1]) * 0x100 + r((t[2] - f[2]) * p + f[2])).toString(16).slice(f[3] > -1 || t[3] > -1 ? 1 : 3);\n}\n/* eslint-enable */\n\nexport const materialColors = function (hexColor) {\n if (hexColor === void 0) {\n hexColor = '';\n }\n const theme = themeFromSourceColor(argbFromHex(`#${hexColor.replace('#', '')}`));\n [0.05, 0.08, 0.11, 0.12, 0.14].forEach((amount, index) => {\n theme.schemes.light.props[`surface${index + 1}`] = argbFromHex(blend(hexFromArgb(theme.schemes.light.props.surface), hexFromArgb(theme.schemes.light.props.primary), amount));\n theme.schemes.dark.props[`surface${index + 1}`] = argbFromHex(blend(hexFromArgb(theme.schemes.dark.props.surface), hexFromArgb(theme.schemes.dark.props.primary), amount));\n });\n const name = n => {\n return n.split('').map(char => char.toUpperCase() === char && char !== '-' && char !== '7' ? `-${char.toLowerCase()}` : char).join('');\n };\n const shouldSkip = prop => {\n const skip = ['tertiary', 'shadow', 'scrim', 'error', 'background'];\n return skip.filter(v => prop.toLowerCase().includes(v)).length > 0;\n };\n const light = {};\n const dark = {};\n Object.keys(theme.schemes.light.props).forEach(prop => {\n if (shouldSkip(prop)) return;\n light[name(`--f7-md-${prop}`)] = hexFromArgb(theme.schemes.light.props[prop]);\n });\n Object.keys(theme.schemes.dark.props).forEach(prop => {\n if (shouldSkip(prop)) return;\n dark[name(`--f7-md-${prop}`)] = hexFromArgb(theme.schemes.dark.props[prop]);\n });\n return {\n light,\n dark\n };\n};","import { getWindow } from 'ssr-window';\nimport { materialColors } from './material-colors.js';\nlet uniqueNum = 0;\nexport function uniqueNumber() {\n uniqueNum += 1;\n return uniqueNum;\n}\nexport function id(mask, map) {\n if (mask === void 0) {\n mask = 'xxxxxxxxxx';\n }\n if (map === void 0) {\n map = '0123456789abcdef';\n }\n const length = map.length;\n return mask.replace(/x/g, () => map[Math.floor(Math.random() * length)]);\n}\nexport const mdPreloaderContent = `\n \n \n \n \n \n`.trim();\nexport const iosPreloaderContent = `\n \n ${[0, 1, 2, 3, 4, 5, 6, 7].map(() => '').join('')}\n \n`.trim();\nexport function eventNameToColonCase(eventName) {\n let hasColon;\n return eventName.split('').map((char, index) => {\n if (char.match(/[A-Z]/) && index !== 0 && !hasColon) {\n hasColon = true;\n return `:${char.toLowerCase()}`;\n }\n return char.toLowerCase();\n }).join('');\n}\nexport function deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no setter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nexport function requestAnimationFrame(callback) {\n const window = getWindow();\n return window.requestAnimationFrame(callback);\n}\nexport function cancelAnimationFrame(frameId) {\n const window = getWindow();\n return window.cancelAnimationFrame(frameId);\n}\nexport function nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nexport function nextFrame(callback) {\n return requestAnimationFrame(() => {\n requestAnimationFrame(callback);\n });\n}\nexport function now() {\n return Date.now();\n}\nexport function parseUrlQuery(url) {\n const window = getWindow();\n const query = {};\n let urlToParse = url || window.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter(paramsPart => paramsPart !== '');\n length = params.length;\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param.slice(1).join('=')) || '';\n }\n }\n return query;\n}\nexport function getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = window.getComputedStyle(el, null);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nexport function serializeObject(obj, parents) {\n if (parents === void 0) {\n parents = [];\n }\n if (typeof obj === 'string') return obj;\n const resultArray = [];\n const separator = '&';\n let newParents;\n function varName(name) {\n if (parents.length > 0) {\n let parentParts = '';\n for (let j = 0; j < parents.length; j += 1) {\n if (j === 0) parentParts += parents[j];else parentParts += `[${encodeURIComponent(parents[j])}]`;\n }\n return `${parentParts}[${encodeURIComponent(name)}]`;\n }\n return encodeURIComponent(name);\n }\n function varValue(value) {\n return encodeURIComponent(value);\n }\n Object.keys(obj).forEach(prop => {\n let toPush;\n if (Array.isArray(obj[prop])) {\n toPush = [];\n for (let i = 0; i < obj[prop].length; i += 1) {\n if (!Array.isArray(obj[prop][i]) && typeof obj[prop][i] === 'object') {\n newParents = parents.slice();\n newParents.push(prop);\n newParents.push(String(i));\n toPush.push(serializeObject(obj[prop][i], newParents));\n } else {\n toPush.push(`${varName(prop)}[]=${varValue(obj[prop][i])}`);\n }\n }\n if (toPush.length > 0) resultArray.push(toPush.join(separator));\n } else if (obj[prop] === null || obj[prop] === '') {\n resultArray.push(`${varName(prop)}=`);\n } else if (typeof obj[prop] === 'object') {\n // Object, convert to named array\n newParents = parents.slice();\n newParents.push(prop);\n toPush = serializeObject(obj[prop], newParents);\n if (toPush !== '') resultArray.push(toPush);\n } else if (typeof obj[prop] !== 'undefined' && obj[prop] !== '') {\n // Should be string or plain value\n resultArray.push(`${varName(prop)}=${varValue(obj[prop])}`);\n } else if (obj[prop] === '') resultArray.push(varName(prop)); // eslint-disable-line\n });\n\n return resultArray.join(separator);\n}\nexport function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n}\nexport function merge() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n const to = args[0];\n args.splice(0, 1);\n const from = args;\n for (let i = 0; i < from.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n}\nexport function extend() {\n let deep = true;\n let to;\n let from;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'boolean') {\n deep = args[0];\n to = args[1];\n args.splice(0, 2);\n from = args;\n } else {\n to = args[0];\n args.splice(0, 1);\n from = args;\n }\n for (let i = 0; i < from.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (!deep) {\n to[nextKey] = nextSource[nextKey];\n } else if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n extend(to[nextKey], nextSource[nextKey]);\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nexport function colorHexToRgb(hex) {\n const h = hex.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i, (m, r, g, b) => r + r + g + g + b + b);\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(h);\n return result ? result.slice(1).map(n => parseInt(n, 16)) : null;\n}\nexport function colorRgbToHex(r, g, b) {\n const result = [r, g, b].map(n => {\n const hex = n.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n }).join('');\n return `#${result}`;\n}\nexport function colorRgbToHsl(r, g, b) {\n r /= 255; // eslint-disable-line\n g /= 255; // eslint-disable-line\n b /= 255; // eslint-disable-line\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const d = max - min;\n let h;\n if (d === 0) h = 0;else if (max === r) h = (g - b) / d % 6;else if (max === g) h = (b - r) / d + 2;else if (max === b) h = (r - g) / d + 4;\n const l = (min + max) / 2;\n const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));\n if (h < 0) h = 360 / 60 + h;\n return [h * 60, s, l];\n}\nexport function colorHslToRgb(h, s, l) {\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const hp = h / 60;\n const x = c * (1 - Math.abs(hp % 2 - 1));\n let rgb1;\n if (Number.isNaN(h) || typeof h === 'undefined') {\n rgb1 = [0, 0, 0];\n } else if (hp <= 1) rgb1 = [c, x, 0];else if (hp <= 2) rgb1 = [x, c, 0];else if (hp <= 3) rgb1 = [0, c, x];else if (hp <= 4) rgb1 = [0, x, c];else if (hp <= 5) rgb1 = [x, 0, c];else if (hp <= 6) rgb1 = [c, 0, x];\n const m = l - c / 2;\n return rgb1.map(n => Math.max(0, Math.min(255, Math.round(255 * (n + m)))));\n}\nexport function colorHsbToHsl(h, s, b) {\n const HSL = {\n h,\n s: 0,\n l: 0\n };\n const HSB = {\n h,\n s,\n b\n };\n HSL.l = (2 - HSB.s) * HSB.b / 2;\n HSL.s = HSL.l && HSL.l < 1 ? HSB.s * HSB.b / (HSL.l < 0.5 ? HSL.l * 2 : 2 - HSL.l * 2) : HSL.s;\n return [HSL.h, HSL.s, HSL.l];\n}\nexport function colorHslToHsb(h, s, l) {\n const HSB = {\n h,\n s: 0,\n b: 0\n };\n const HSL = {\n h,\n s,\n l\n };\n const t = HSL.s * (HSL.l < 0.5 ? HSL.l : 1 - HSL.l);\n HSB.b = HSL.l + t;\n HSB.s = HSL.l > 0 ? 2 * t / HSB.b : HSB.s;\n return [HSB.h, HSB.s, HSB.b];\n}\nconst getShadeTintColors = rgb => {\n const hsl = colorRgbToHsl(...rgb);\n const hslShade = [hsl[0], hsl[1], Math.max(0, hsl[2] - 0.08)];\n const hslTint = [hsl[0], hsl[1], Math.max(0, hsl[2] + 0.08)];\n const shade = colorRgbToHex(...colorHslToRgb(...hslShade));\n const tint = colorRgbToHex(...colorHslToRgb(...hslTint));\n return {\n shade,\n tint\n };\n};\nexport function colorThemeCSSProperties() {\n let hex;\n let rgb;\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n if (args.length === 1) {\n hex = args[0];\n rgb = colorHexToRgb(hex);\n } else if (args.length === 3) {\n rgb = args;\n hex = colorRgbToHex(...rgb);\n }\n if (!rgb) return {};\n const {\n light,\n dark\n } = materialColors(hex);\n const shadeTintIos = getShadeTintColors(rgb);\n const shadeTintMdLight = getShadeTintColors(colorHexToRgb(light['--f7-md-primary']));\n const shadeTintMdDark = getShadeTintColors(colorHexToRgb(dark['--f7-md-primary']));\n Object.keys(light).forEach(key => {\n if (key.includes('surface-')) {\n light[`${key}-rgb`] = colorHexToRgb(light[key]);\n }\n });\n Object.keys(dark).forEach(key => {\n if (key.includes('surface-')) {\n dark[`${key}-rgb`] = colorHexToRgb(dark[key]);\n }\n });\n return {\n ios: {\n '--f7-theme-color': 'var(--f7-ios-primary)',\n '--f7-theme-color-rgb': 'var(--f7-ios-primary-rgb)',\n '--f7-theme-color-shade': 'var(--f7-ios-primary-shade)',\n '--f7-theme-color-tint': 'var(--f7-ios-primary-tint)'\n },\n md: {\n '--f7-theme-color': 'var(--f7-md-primary)',\n '--f7-theme-color-rgb': 'var(--f7-md-primary-rgb)',\n '--f7-theme-color-shade': 'var(--f7-md-primary-shade)',\n '--f7-theme-color-tint': 'var(--f7-md-primary-tint)'\n },\n light: {\n '--f7-ios-primary': hex,\n '--f7-ios-primary-shade': shadeTintIos.shade,\n '--f7-ios-primary-tint': shadeTintIos.tint,\n '--f7-ios-primary-rgb': rgb.join(', '),\n '--f7-md-primary-shade': shadeTintMdLight.shade,\n '--f7-md-primary-tint': shadeTintMdLight.tint,\n '--f7-md-primary-rgb': colorHexToRgb(light['--f7-md-primary']).join(', '),\n ...light\n },\n dark: {\n '--f7-md-primary-shade': shadeTintMdDark.shade,\n '--f7-md-primary-tint': shadeTintMdDark.tint,\n '--f7-md-primary-rgb': colorHexToRgb(dark['--f7-md-primary']).join(', '),\n ...dark\n }\n };\n}\nexport function bindMethods(instance, obj) {\n Object.keys(obj).forEach(key => {\n if (isObject(obj[key])) {\n Object.keys(obj[key]).forEach(subKey => {\n if (typeof obj[key][subKey] === 'function') {\n obj[key][subKey] = obj[key][subKey].bind(instance);\n }\n });\n }\n instance[key] = obj[key];\n });\n}\nexport function flattenArray() {\n const arr = [];\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n args.forEach(arg => {\n if (Array.isArray(arg)) arr.push(...flattenArray(...arg));else arr.push(arg);\n });\n return arr;\n}\nexport function colorThemeCSSStyles(colors) {\n if (colors === void 0) {\n colors = {};\n }\n const stringifyObject = obj => {\n let res = '';\n Object.keys(obj).forEach(key => {\n res += `${key}:${obj[key]};`;\n });\n return res;\n };\n const colorVars = colorThemeCSSProperties(colors.primary);\n const primary = [`:root{`, stringifyObject(colorVars.light), `--swiper-theme-color:var(--f7-theme-color);`, ...Object.keys(colors).map(colorName => `--f7-color-${colorName}: ${colors[colorName]};`), `}`, `.dark{`, stringifyObject(colorVars.dark), `}`, `.ios, .ios .dark{`, stringifyObject(colorVars.ios), '}', `.md, .md .dark{`, stringifyObject(colorVars.md), '}'].join('');\n const restVars = {};\n Object.keys(colors).forEach(colorName => {\n const colorValue = colors[colorName];\n restVars[colorName] = colorThemeCSSProperties(colorValue);\n });\n\n // rest\n let rest = '';\n Object.keys(colors).forEach(colorName => {\n const {\n light,\n dark,\n ios,\n md\n } = restVars[colorName];\n const whiteColorVars = `\n --f7-ios-primary: #ffffff;\n --f7-ios-primary-shade: #ebebeb;\n --f7-ios-primary-tint: #ffffff;\n --f7-ios-primary-rgb: 255, 255, 255;\n --f7-md-primary-shade: #eee;\n --f7-md-primary-tint: #fff;\n --f7-md-primary-rgb: 255, 255, 255;\n --f7-md-primary: #fff;\n --f7-md-on-primary: #000;\n --f7-md-primary-container: #fff;\n --f7-md-on-primary-container: #000;\n --f7-md-secondary: #fff;\n --f7-md-on-secondary: #000;\n --f7-md-secondary-container: #555;\n --f7-md-on-secondary-container: #fff;\n --f7-md-surface: #fff;\n --f7-md-on-surface: #000;\n --f7-md-surface-variant: #333;\n --f7-md-on-surface-variant: #fff;\n --f7-md-outline: #fff;\n --f7-md-outline-variant: #fff;\n --f7-md-inverse-surface: #000;\n --f7-md-inverse-on-surface: #fff;\n --f7-md-inverse-primary: #000;\n --f7-md-surface-1: #f8f8f8;\n --f7-md-surface-2: #f1f1f1;\n --f7-md-surface-3: #e7e7e7;\n --f7-md-surface-4: #e1e1e1;\n --f7-md-surface-5: #d7d7d7;\n --f7-md-surface-variant-rgb: 51, 51, 51;\n --f7-md-on-surface-variant-rgb: 255, 255, 255;\n --f7-md-surface-1-rgb: 248, 248, 248;\n --f7-md-surface-2-rgb: 241, 241, 241;\n --f7-md-surface-3-rgb: 231, 231, 231;\n --f7-md-surface-4-rgb: 225, 225, 225;\n --f7-md-surface-5-rgb: 215, 215, 215;\n `;\n const blackColorVars = `\n --f7-ios-primary: #000;\n --f7-ios-primary-shade: #000;\n --f7-ios-primary-tint: #232323;\n --f7-ios-primary-rgb: 0, 0, 0;\n --f7-md-primary-shade: #000;\n --f7-md-primary-tint: #232323;\n --f7-md-primary-rgb: 0, 0, 0;\n --f7-md-primary: #000;\n --f7-md-on-primary: #fff;\n --f7-md-primary-container: #000;\n --f7-md-on-primary-container: #fff;\n --f7-md-secondary: #000;\n --f7-md-on-secondary: #fff;\n --f7-md-secondary-container: #aaa;\n --f7-md-on-secondary-container: #000;\n --f7-md-surface: #000;\n --f7-md-on-surface: #fff;\n --f7-md-surface-variant: #ccc;\n --f7-md-on-surface-variant: #000;\n --f7-md-outline: #000;\n --f7-md-outline-variant: #000;\n --f7-md-inverse-surface: #fff;\n --f7-md-inverse-on-surface: #000;\n --f7-md-inverse-primary: #fff;\n --f7-md-surface-1: #070707;\n --f7-md-surface-2: #161616;\n --f7-md-surface-3: #232323;\n --f7-md-surface-4: #303030;\n --f7-md-surface-5: #373737;\n --f7-md-surface-variant-rgb: 204, 204, 204;\n --f7-md-on-surface-variant-rgb: 0, 0, 0;\n --f7-md-surface-1-rgb: 7, 7, 7;\n --f7-md-surface-2-rgb: 22, 22, 22;\n --f7-md-surface-3-rgb: 35, 35, 35;\n --f7-md-surface-4-rgb: 48, 48, 48;\n --f7-md-surface-5-rgb: 55, 55, 55;\n `;\n /* eslint-disable */\n const lightString = colorName === 'white' ? whiteColorVars : colorName === 'black' ? blackColorVars : stringifyObject(light);\n const darkString = colorName === 'white' ? whiteColorVars : colorName === 'black' ? blackColorVars : stringifyObject(dark);\n /* eslint-enable */\n rest += [`.color-${colorName} {`, lightString, `--swiper-theme-color: var(--f7-theme-color);`, `}`, `.color-${colorName}.dark, .color-${colorName} .dark, .dark .color-${colorName} {`, darkString, `--swiper-theme-color: var(--f7-theme-color);`, `}`, `.ios .color-${colorName}, .ios.color-${colorName}, .ios .dark .color-${colorName}, .ios .dark.color-${colorName} {`, stringifyObject(ios), `}`, `.md .color-${colorName}, .md.color-${colorName}, .md .dark .color-${colorName}, .md .dark.color-${colorName} {`, stringifyObject(md), `}`,\n // text color\n `.text-color-${colorName} {`, `--f7-theme-color-text-color: ${colors[colorName]};`, `}`,\n // bg color\n `.bg-color-${colorName} {`, `--f7-theme-color-bg-color: ${colors[colorName]};`, `}`,\n // border color\n `.border-color-${colorName} {`, `--f7-theme-color-border-color: ${colors[colorName]};`, `}`,\n // ripple color\n `.ripple-color-${colorName} {`, `--f7-theme-color-ripple-color: rgba(${light['--f7-ios-primary-rgb']}, 0.3);`, `}`].join('');\n });\n return `${primary}${rest}`;\n}","import { getWindow, getDocument } from 'ssr-window';\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n pointerEvents: !!window.PointerEvent && 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints >= 0,\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }(),\n intersectionObserver: function checkObserver() {\n return 'IntersectionObserver' in window;\n }()\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCalculated;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!window.cordova,\n electron: false,\n capacitor: !!window.Capacitor,\n nwjs: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS|iPhone;\\sCPU\\sOS)\\s([\\d_]+)/);\n const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n const nwjs = typeof nw !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && typeof process.versions.nw !== 'undefined';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone)) || window.matchMedia && window.matchMedia('(display-mode: standalone)').matches;\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron || nwjs;\n if (device.desktop) {\n device.electron = electron;\n device.nwjs = nwjs;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Color Scheme\n const DARK = '(prefers-color-scheme: dark)';\n const LIGHT = '(prefers-color-scheme: light)';\n device.prefersColorScheme = function prefersColorTheme() {\n let theme;\n if (window.matchMedia && window.matchMedia(LIGHT).matches) {\n theme = 'light';\n }\n if (window.matchMedia && window.matchMedia(DARK).matches) {\n theme = 'dark';\n }\n return theme;\n };\n\n // Export object\n return device;\n}\nfunction getDevice(overrides, reset) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCalculated || reset) {\n deviceCalculated = calcDevice(overrides);\n }\n return deviceCalculated;\n}\nexport { getDevice };","class EventsClass {\n constructor(parents) {\n if (parents === void 0) {\n parents = [];\n }\n const self = this;\n self.eventsParents = parents;\n self.eventsListeners = {};\n }\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n }\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n }\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.f7proxy && eventHandler.f7proxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n }\n emit() {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n let eventsParents;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n eventsParents = self.eventsParents;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n eventsParents = args[0].local ? [] : args[0].parents || self.eventsParents;\n }\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n const localEvents = eventsArray.map(eventName => eventName.replace('local::', ''));\n const parentEvents = eventsArray.filter(eventName => eventName.indexOf('local::') < 0);\n localEvents.forEach(event => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach(eventHandler => {\n handlers.push(eventHandler);\n });\n handlers.forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n if (eventsParents && eventsParents.length > 0) {\n eventsParents.forEach(eventsParent => {\n eventsParent.emit(parentEvents, ...data);\n });\n }\n return self;\n }\n}\nexport default EventsClass;","import { extend, now } from './utils.js';\nimport EventsClass from './events-class.js';\nclass Framework7Class extends EventsClass {\n constructor(params, parents) {\n if (params === void 0) {\n params = {};\n }\n if (parents === void 0) {\n parents = [];\n }\n super(parents);\n const self = this;\n self.params = params;\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach(eventName => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n // eslint-disable-next-line\n useModuleParams(module, instanceParams) {\n if (module.params) {\n const originalParams = {};\n Object.keys(module.params).forEach(paramKey => {\n if (typeof instanceParams[paramKey] === 'undefined') return;\n originalParams[paramKey] = extend({}, instanceParams[paramKey]);\n });\n extend(instanceParams, module.params);\n Object.keys(originalParams).forEach(paramKey => {\n extend(instanceParams[paramKey], originalParams[paramKey]);\n });\n }\n }\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach(moduleName => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n extend(instanceParams, module.params);\n }\n });\n }\n useModule(moduleName, moduleParams) {\n if (moduleName === void 0) {\n moduleName = '';\n }\n if (moduleParams === void 0) {\n moduleParams = {};\n }\n const instance = this;\n if (!instance.modules) return;\n const module = typeof moduleName === 'string' ? instance.modules[moduleName] : moduleName;\n if (!module) return;\n\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach(modulePropName => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach(moduleEventName => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n // Add vnode hooks\n if (module.vnode) {\n if (!instance.vnodeHooks) instance.vnodeHooks = {};\n Object.keys(module.vnode).forEach(vnodeId => {\n Object.keys(module.vnode[vnodeId]).forEach(hookName => {\n const handler = module.vnode[vnodeId][hookName];\n if (!instance.vnodeHooks[hookName]) instance.vnodeHooks[hookName] = {};\n if (!instance.vnodeHooks[hookName][vnodeId]) instance.vnodeHooks[hookName][vnodeId] = [];\n instance.vnodeHooks[hookName][vnodeId].push(handler.bind(instance));\n });\n });\n }\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n }\n useModules(modulesParams) {\n if (modulesParams === void 0) {\n modulesParams = {};\n }\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach(moduleName => {\n const moduleParams = modulesParams[moduleName] || {};\n instance.useModule(moduleName, moduleParams);\n });\n }\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n static installModule(module) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || `${Object.keys(Class.prototype.modules).length}_${now()}`;\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach(key => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach(key => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n module.install.apply(Class, params);\n }\n return Class;\n }\n static use(module) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach(m => Class.installModule(m));\n return Class;\n }\n for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n params[_key2 - 1] = arguments[_key2];\n }\n return Class.installModule(module, ...params);\n }\n}\nexport default Framework7Class;","import $ from './dom7.js';\nexport default function ConstructorMethods(parameters) {\n if (parameters === void 0) {\n parameters = {};\n }\n const {\n defaultSelector,\n constructor: Constructor,\n domProp,\n app,\n addMethods\n } = parameters;\n const methods = {\n create() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (app) return new Constructor(app, ...args);\n return new Constructor(...args);\n },\n get(el) {\n if (el === void 0) {\n el = defaultSelector;\n }\n if (el instanceof Constructor) return el;\n const $el = $(el);\n if ($el.length === 0) return undefined;\n return $el[0][domProp];\n },\n destroy(el) {\n const instance = methods.get(el);\n if (instance && instance.destroy) return instance.destroy();\n return undefined;\n }\n };\n if (addMethods && Array.isArray(addMethods)) {\n addMethods.forEach(methodName => {\n methods[methodName] = function (el) {\n if (el === void 0) {\n el = defaultSelector;\n }\n const instance = methods.get(el);\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n if (instance && instance[methodName]) return instance[methodName](...args);\n return undefined;\n };\n });\n }\n return methods;\n}","import $ from './dom7.js';\nimport { extend } from './utils.js';\nimport ConstructorMethods from './constructor-methods.js';\nexport default function ModalMethods(parameters) {\n if (parameters === void 0) {\n parameters = {};\n }\n const {\n defaultSelector,\n constructor: Constructor,\n app\n } = parameters;\n const methods = extend(ConstructorMethods({\n defaultSelector,\n constructor: Constructor,\n app,\n domProp: 'f7Modal'\n }), {\n open(el, animate, targetEl) {\n let $el = $(el);\n if ($el.length > 1 && targetEl) {\n // check if same modal in other page\n const $targetPage = $(targetEl).parents('.page');\n if ($targetPage.length) {\n $el.each(modalEl => {\n const $modalEl = $(modalEl);\n if ($modalEl.parents($targetPage)[0] === $targetPage[0]) {\n $el = $modalEl;\n }\n });\n }\n }\n if ($el.length > 1) {\n $el = $el.eq($el.length - 1);\n }\n if (!$el.length) return undefined;\n let instance = $el[0].f7Modal;\n if (!instance) {\n const params = $el.dataset();\n instance = new Constructor(app, {\n el: $el,\n ...params\n });\n }\n return instance.open(animate);\n },\n close(el, animate, targetEl) {\n if (el === void 0) {\n el = defaultSelector;\n }\n let $el = $(el);\n if (!$el.length) return undefined;\n if ($el.length > 1) {\n // check if close link (targetEl) in this modal\n let $parentEl;\n if (targetEl) {\n const $targetEl = $(targetEl);\n if ($targetEl.length) {\n $parentEl = $targetEl.parents($el);\n }\n }\n if ($parentEl && $parentEl.length > 0) {\n $el = $parentEl;\n } else {\n $el = $el.eq($el.length - 1);\n }\n }\n let instance = $el[0].f7Modal;\n if (!instance) {\n const params = $el.dataset();\n instance = new Constructor(app, {\n el: $el,\n ...params\n });\n }\n return instance.close(animate);\n }\n });\n return methods;\n}","import { getWindow, getDocument } from 'ssr-window';\nimport { id } from '../../shared/utils.js';\nimport $ from '../../shared/dom7.js';\nconst fetchedModules = [];\nfunction loadModule(moduleToLoad) {\n const Framework7 = this;\n const window = getWindow();\n const document = getDocument();\n return new Promise((resolve, reject) => {\n const app = Framework7.instance;\n let modulePath;\n let moduleObj;\n let moduleFunc;\n if (!moduleToLoad) {\n reject(new Error('Framework7: Lazy module must be specified'));\n return;\n }\n function install(module) {\n Framework7.use(module);\n if (app) {\n app.useModuleParams(module, app.params);\n app.useModule(module);\n }\n }\n if (typeof moduleToLoad === 'string') {\n const matchNamePattern = moduleToLoad.match(/([a-z0-9-]*)/i);\n if (moduleToLoad.indexOf('.') < 0 && matchNamePattern && matchNamePattern[0].length === moduleToLoad.length) {\n if (!app || app && !app.params.lazyModulesPath) {\n reject(new Error('Framework7: \"lazyModulesPath\" app parameter must be specified to fetch module by name'));\n return;\n }\n modulePath = `${app.params.lazyModulesPath}/${moduleToLoad}/${moduleToLoad}.lazy.js`;\n } else {\n modulePath = moduleToLoad;\n }\n } else if (typeof moduleToLoad === 'function') {\n moduleFunc = moduleToLoad;\n } else {\n // considering F7-Plugin object\n moduleObj = moduleToLoad;\n }\n if (moduleFunc) {\n const module = moduleFunc(Framework7, false);\n if (!module) {\n reject(new Error(\"Framework7: Can't find Framework7 component in specified component function\"));\n return;\n }\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolve();\n return;\n }\n // Install It\n install(module);\n resolve();\n }\n if (moduleObj) {\n const module = moduleObj;\n if (!module) {\n reject(new Error(\"Framework7: Can't find Framework7 component in specified component\"));\n return;\n }\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolve();\n return;\n }\n // Install It\n install(module);\n resolve();\n }\n if (modulePath) {\n if (fetchedModules.indexOf(modulePath) >= 0) {\n resolve();\n return;\n }\n fetchedModules.push(modulePath);\n const scriptLoad = new Promise((resolveScript, rejectScript) => {\n fetch(modulePath).then(res => res.text()).then(scriptContent => {\n const callbackId = id();\n const callbackLoadName = `f7_component_loader_callback_${callbackId}`;\n const scriptEl = document.createElement('script');\n scriptEl.innerHTML = `window.${callbackLoadName} = function (Framework7, Framework7AutoInstallComponent) {return ${scriptContent.trim()}}`;\n $('head').append(scriptEl);\n const componentLoader = window[callbackLoadName];\n delete window[callbackLoadName];\n $(scriptEl).remove();\n const module = componentLoader(Framework7, false);\n if (!module) {\n rejectScript(new Error(`Framework7: Can't find Framework7 component in ${modulePath} file`));\n return;\n }\n\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolveScript();\n return;\n }\n\n // Install It\n install(module);\n resolveScript();\n }).catch(err => {\n rejectScript(err);\n });\n });\n const styleLoad = new Promise(resolveStyle => {\n fetch(modulePath.replace('.lazy.js', app.rtl ? '.rtl.css' : '.css').replace('.js', app.rtl ? '.rtl.css' : '.css')).then(res => res.text()).then(styleContent => {\n const styleEl = document.createElement('style');\n styleEl.innerHTML = styleContent;\n $('head').append(styleEl);\n resolveStyle();\n }).catch(() => {\n resolveStyle();\n });\n });\n Promise.all([scriptLoad, styleLoad]).then(() => {\n resolve();\n }).catch(err => {\n reject(err);\n });\n }\n });\n}\nexport default loadModule;","/* eslint-disable prefer-rest-params */\nconst $jsx = function (tag, props) {\n const attrs = props || {};\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n const children = args || [];\n const attrsString = Object.keys(attrs).map(attr => {\n if (attr[0] === '_') {\n if (attrs[attr]) return attr.replace('_', '');\n return '';\n }\n return `${attr}=\"${attrs[attr]}\"`;\n }).filter(attr => !!attr).join(' ');\n if (['path', 'img', 'circle', 'polygon', 'line', 'input'].indexOf(tag) >= 0) {\n return `<${tag} ${attrsString} />`.trim();\n }\n const childrenContent = children.filter(c => !!c).map(c => Array.isArray(c) ? c.join('') : c).join('');\n return `<${tag} ${attrsString}>${childrenContent}`.trim();\n};\nexport default $jsx;","/* eslint-disable no-underscore-dangle */\n\nimport { getWindow, getDocument } from 'ssr-window';\nimport { extend, nextFrame } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport Framework7Class from '../../shared/class.js';\nimport EventsClass from '../../shared/events-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nimport $ from '../../shared/dom7.js';\nimport loadModule from './load-module.js';\nimport $jsx from '../../shared/$jsx.js';\nclass Framework7 extends Framework7Class {\n constructor(params) {\n if (params === void 0) {\n params = {};\n }\n super(params);\n // eslint-disable-next-line\n if (Framework7.instance && typeof window !== 'undefined') {\n throw new Error(\"Framework7 is already initialized and can't be initialized more than once\");\n }\n const device = getDevice({\n userAgent: params.userAgent || undefined\n });\n const support = getSupport();\n const passedParams = extend({}, params);\n\n // App Instance\n const app = this;\n app.device = device;\n app.support = support;\n const w = getWindow();\n const d = getDocument();\n Framework7.instance = app;\n\n // Default\n const defaults = {\n el: 'body',\n theme: 'auto',\n routes: [],\n name: 'Framework7',\n lazyModulesPath: null,\n initOnDeviceReady: true,\n init: true,\n darkMode: undefined,\n iosTranslucentBars: true,\n iosTranslucentModals: true,\n component: undefined,\n componentUrl: undefined,\n userAgent: null,\n url: null,\n colors: {\n primary: '#007aff',\n red: '#ff3b30',\n green: '#4cd964',\n blue: '#2196f3',\n pink: '#ff2d55',\n yellow: '#ffcc00',\n orange: '#ff9500',\n purple: '#9c27b0',\n deeppurple: '#673ab7',\n lightblue: '#5ac8fa',\n teal: '#009688',\n lime: '#cddc39',\n deeporange: '#ff6b22',\n white: '#ffffff',\n black: '#000000'\n }\n };\n\n // Extend defaults with modules params\n app.useModulesParams(defaults);\n\n // Extend defaults with passed params\n app.params = extend(defaults, params);\n extend(app, {\n // App Name\n name: app.params.name,\n // Routes\n routes: app.params.routes,\n // Theme\n theme: function getTheme() {\n if (app.params.theme === 'auto') {\n if (device.ios) return 'ios';\n return 'md';\n }\n return app.params.theme;\n }(),\n // Initially passed parameters\n passedParams,\n online: w.navigator.onLine,\n colors: app.params.colors,\n darkMode: app.params.darkMode\n });\n if (params.store) app.params.store = params.store;\n\n // Save Root\n if (app.$el && app.$el[0]) {\n app.$el[0].f7 = app;\n }\n\n // Install Modules\n app.useModules();\n\n // Init Store\n app.initStore();\n\n // Init\n if (app.params.init) {\n if (device.cordova && app.params.initOnDeviceReady) {\n $(d).on('deviceready', () => {\n app.init();\n });\n } else {\n app.init();\n }\n }\n\n // Return app instance\n return app;\n }\n setColorTheme(color) {\n if (!color) return;\n const app = this;\n app.colors.primary = color;\n app.setColors();\n }\n setColors() {\n const app = this;\n const document = getDocument();\n if (!app.colorsStyleEl) {\n app.colorsStyleEl = document.createElement('style');\n document.head.prepend(app.colorsStyleEl);\n }\n app.colorsStyleEl.textContent = app.utils.colorThemeCSSStyles(app.colors);\n }\n mount(rootEl) {\n const app = this;\n const window = getWindow();\n const document = getDocument();\n const $rootEl = $(rootEl || app.params.el).eq(0);\n app.$el = $rootEl;\n if (app.$el && app.$el[0]) {\n app.el = app.$el[0];\n app.el.f7 = app;\n app.rtl = $rootEl.css('direction') === 'rtl';\n }\n\n // Auto Dark Mode\n const DARK = '(prefers-color-scheme: dark)';\n const LIGHT = '(prefers-color-scheme: light)';\n app.mq = {};\n if (window.matchMedia) {\n app.mq.dark = window.matchMedia(DARK);\n app.mq.light = window.matchMedia(LIGHT);\n }\n app.colorSchemeListener = function colorSchemeListener(_ref) {\n let {\n matches,\n media\n } = _ref;\n if (!matches) {\n return;\n }\n const html = document.querySelector('html');\n if (media === DARK) {\n html.classList.add('dark');\n app.darkMode = true;\n app.emit('darkModeChange', true);\n } else if (media === LIGHT) {\n html.classList.remove('dark');\n app.darkMode = false;\n app.emit('darkModeChange', false);\n }\n };\n app.emit('mount');\n }\n initStore() {\n const app = this;\n if (typeof app.params.store !== 'undefined' && app.params.store.__store) {\n app.store = app.params.store;\n } else {\n app.store = app.createStore(app.params.store);\n }\n }\n enableAutoDarkMode() {\n const window = getWindow();\n const document = getDocument();\n if (!window.matchMedia) return;\n const app = this;\n const html = document.querySelector('html');\n if (app.mq.dark && app.mq.light) {\n app.mq.dark.addEventListener('change', app.colorSchemeListener);\n app.mq.light.addEventListener('change', app.colorSchemeListener);\n }\n if (app.mq.dark && app.mq.dark.matches) {\n html.classList.add('dark');\n app.darkMode = true;\n app.emit('darkModeChange', true);\n } else if (app.mq.light && app.mq.light.matches) {\n html.classList.remove('dark');\n app.darkMode = false;\n app.emit('darkModeChange', false);\n }\n }\n disableAutoDarkMode() {\n const window = getWindow();\n if (!window.matchMedia) return;\n const app = this;\n if (app.mq.dark) app.mq.dark.removeEventListener('change', app.colorSchemeListener);\n if (app.mq.light) app.mq.light.removeEventListener('change', app.colorSchemeListener);\n }\n setDarkMode(mode) {\n const app = this;\n if (mode === 'auto') {\n app.enableAutoDarkMode();\n } else {\n app.disableAutoDarkMode();\n $('html')[mode ? 'addClass' : 'removeClass']('dark');\n app.darkMode = mode;\n }\n }\n initAppComponent(callback) {\n const app = this;\n app.router.componentLoader(app.params.component, app.params.componentUrl, {\n componentOptions: {\n el: app.$el[0]\n }\n }, el => {\n app.$el = $(el);\n app.$el[0].f7 = app;\n app.$elComponent = el.f7Component;\n app.el = app.$el[0];\n if (callback) callback();\n }, () => {});\n }\n init(rootEl) {\n const app = this;\n app.setColors();\n app.mount(rootEl);\n const init = () => {\n if (app.initialized) return;\n app.$el.addClass('framework7-initializing');\n\n // RTL attr\n if (app.rtl) {\n $('html').attr('dir', 'rtl');\n }\n\n // Auto Dark Mode\n if (typeof app.params.darkMode === 'undefined') {\n app.darkMode = $('html').hasClass('dark');\n } else {\n app.setDarkMode(app.params.darkMode);\n }\n\n // Watch for online/offline state\n const window = getWindow();\n window.addEventListener('offline', () => {\n app.online = false;\n app.emit('offline');\n app.emit('connection', false);\n });\n window.addEventListener('online', () => {\n app.online = true;\n app.emit('online');\n app.emit('connection', true);\n });\n\n // Root class\n app.$el.addClass('framework7-root');\n\n // Theme class\n $('html').removeClass('ios md').addClass(app.theme);\n\n // iOS Translucent\n if (app.params.iosTranslucentBars && app.theme === 'ios') {\n $('html').addClass('ios-translucent-bars');\n }\n if (app.params.iosTranslucentModals && app.theme === 'ios') {\n $('html').addClass('ios-translucent-modals');\n }\n\n // Init class\n nextFrame(() => {\n app.$el.removeClass('framework7-initializing');\n });\n // Emit, init other modules\n app.initialized = true;\n app.emit('init');\n };\n if (app.params.component || app.params.componentUrl) {\n app.initAppComponent(() => {\n init();\n });\n } else {\n init();\n }\n return app;\n }\n\n // eslint-disable-next-line\n loadModule() {\n return Framework7.loadModule(...arguments);\n }\n\n // eslint-disable-next-line\n loadModules() {\n return Framework7.loadModules(...arguments);\n }\n getVnodeHooks(hook, id) {\n const app = this;\n if (!app.vnodeHooks || !app.vnodeHooks[hook]) return [];\n return app.vnodeHooks[hook][id] || [];\n }\n\n // eslint-disable-next-line\n get $() {\n return $;\n }\n static get Dom7() {\n return $;\n }\n static get $() {\n return $;\n }\n static get device() {\n return getDevice();\n }\n static get support() {\n return getSupport();\n }\n static get Class() {\n return Framework7Class;\n }\n static get Events() {\n return EventsClass;\n }\n}\nFramework7.$jsx = $jsx;\nFramework7.ModalMethods = ModalMethods;\nFramework7.ConstructorMethods = ConstructorMethods;\nFramework7.loadModule = loadModule;\nFramework7.loadModules = function loadModules(modules) {\n return Promise.all(modules.map(module => Framework7.loadModule(module)));\n};\nexport default Framework7;","import { getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\nexport default {\n name: 'device',\n static: {\n getDevice\n },\n on: {\n init() {\n const document = getDocument();\n const device = getDevice();\n const classNames = [];\n const html = document.querySelector('html');\n const metaStatusbar = document.querySelector('meta[name=\"apple-mobile-web-app-status-bar-style\"]');\n if (!html) return;\n if (device.standalone && device.ios && metaStatusbar && metaStatusbar.content === 'black-translucent') {\n classNames.push('device-full-viewport');\n }\n\n // Pixel Ratio\n classNames.push(`device-pixel-ratio-${Math.floor(device.pixelRatio)}`);\n // OS classes\n if (device.os && !device.desktop) {\n classNames.push(`device-${device.os}`);\n } else if (device.desktop) {\n classNames.push('device-desktop');\n if (device.os) {\n classNames.push(`device-${device.os}`);\n }\n }\n if (device.cordova) {\n classNames.push('device-cordova');\n }\n if (device.capacitor) {\n classNames.push('device-capacitor');\n }\n\n // Add html classes\n classNames.forEach(className => {\n html.classList.add(className);\n });\n }\n }\n};","import { getSupport } from '../../shared/get-support.js';\nexport default {\n name: 'support',\n static: {\n getSupport\n }\n};","import * as utils from '../../shared/utils.js';\nexport default {\n name: 'utils',\n proto: {\n utils\n },\n static: {\n utils\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\nexport default {\n name: 'resize',\n create() {\n const app = this;\n app.getSize = () => {\n if (!app.el) return {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n };\n const offset = app.$el.offset();\n const [width, height, left, top] = [app.el.offsetWidth, app.el.offsetHeight, offset.left, offset.top];\n app.width = width;\n app.height = height;\n app.left = left;\n app.top = top;\n return {\n width,\n height,\n left,\n top\n };\n };\n },\n on: {\n init() {\n const app = this;\n const window = getWindow();\n\n // Get Size\n app.getSize();\n\n // Emit resize\n window.addEventListener('resize', () => {\n app.emit('resize');\n }, false);\n\n // Emit orientationchange\n window.addEventListener('orientationchange', () => {\n app.emit('orientationchange');\n });\n },\n orientationchange() {\n const document = getDocument();\n const device = getDevice();\n // Fix iPad weird body scroll\n if (device.ipad) {\n document.body.scrollLeft = 0;\n setTimeout(() => {\n document.body.scrollLeft = 0;\n }, 0);\n }\n },\n resize() {\n const app = this;\n app.getSize();\n }\n }\n};","/* eslint-disable no-nested-ternary */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { extend } from '../../shared/utils.js';\nfunction initTouch() {\n const app = this;\n const device = getDevice();\n const support = getSupport();\n const window = getWindow();\n const document = getDocument();\n const params = app.params.touch;\n const useRipple = params[`${app.theme}TouchRipple`];\n if (device.ios && device.webView) {\n // Strange hack required for iOS 8 webview to work on inputs\n window.addEventListener('touchstart', () => {});\n }\n let touchStartX;\n let touchStartY;\n let targetElement;\n let isMoved;\n let tapHoldFired;\n let tapHoldTimeout;\n let preventClick;\n let activableElement;\n let activeTimeout;\n let rippleWave;\n let rippleTarget;\n let rippleTimeout;\n function findActivableElement(el) {\n const target = $(el);\n const parents = target.parents(params.activeStateElements);\n if (target.closest('.no-active-state').length) {\n return null;\n }\n let activable;\n if (target.is(params.activeStateElements)) {\n activable = target;\n }\n if (parents.length > 0) {\n activable = activable ? activable.add(parents) : parents;\n }\n if (activable && activable.length > 1) {\n const newActivable = [];\n let preventPropagation;\n for (let i = 0; i < activable.length; i += 1) {\n if (!preventPropagation) {\n newActivable.push(activable[i]);\n if (activable.eq(i).hasClass('prevent-active-state-propagation') || activable.eq(i).hasClass('no-active-state-propagation')) {\n preventPropagation = true;\n }\n }\n }\n activable = $(newActivable);\n }\n return activable || target;\n }\n function isInsideScrollableView(el) {\n const pageContent = el.parents('.page-content');\n return pageContent.length > 0;\n }\n function addActive() {\n if (!activableElement) return;\n activableElement.addClass('active-state');\n }\n function removeActive() {\n if (!activableElement) return;\n activableElement.removeClass('active-state');\n activableElement = null;\n }\n\n // Ripple handlers\n function findRippleElement(el) {\n const rippleElements = params.touchRippleElements;\n const $el = $(el);\n if ($el.is(rippleElements)) {\n if ($el.hasClass('no-ripple')) {\n return false;\n }\n return $el;\n }\n if ($el.parents(rippleElements).length > 0) {\n const rippleParent = $el.parents(rippleElements).eq(0);\n if (rippleParent.hasClass('no-ripple')) {\n return false;\n }\n return rippleParent;\n }\n return false;\n }\n function createRipple($el, x, y) {\n if (!$el) return;\n rippleWave = app.touchRipple.create(app, $el, x, y);\n }\n function removeRipple() {\n if (!rippleWave) return;\n rippleWave.remove();\n rippleWave = undefined;\n rippleTarget = undefined;\n }\n function rippleTouchStart(el) {\n rippleTarget = findRippleElement(el);\n if (!rippleTarget || rippleTarget.length === 0) {\n rippleTarget = undefined;\n return;\n }\n const inScrollable = isInsideScrollableView(rippleTarget);\n if (!inScrollable) {\n removeRipple();\n createRipple(rippleTarget, touchStartX, touchStartY);\n } else {\n clearTimeout(rippleTimeout);\n rippleTimeout = setTimeout(() => {\n removeRipple();\n createRipple(rippleTarget, touchStartX, touchStartY);\n }, 80);\n }\n }\n function rippleTouchMove() {\n clearTimeout(rippleTimeout);\n removeRipple();\n }\n function rippleTouchEnd() {\n if (!rippleWave && rippleTarget && !isMoved) {\n clearTimeout(rippleTimeout);\n createRipple(rippleTarget, touchStartX, touchStartY);\n setTimeout(removeRipple, 0);\n } else {\n removeRipple();\n }\n }\n\n // Mouse Handlers\n function handleMouseDown(e) {\n const $activableEl = findActivableElement(e.target);\n if ($activableEl) {\n $activableEl.addClass('active-state');\n if ('which' in e && e.which === 3) {\n setTimeout(() => {\n $('.active-state').removeClass('active-state');\n }, 0);\n }\n }\n if (useRipple) {\n touchStartX = e.pageX;\n touchStartY = e.pageY;\n rippleTouchStart(e.target, e.pageX, e.pageY);\n }\n }\n function handleMouseMove() {\n if (!params.activeStateOnMouseMove) {\n $('.active-state').removeClass('active-state');\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n function handleMouseUp() {\n $('.active-state').removeClass('active-state');\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n function handleTouchCancel() {\n targetElement = null;\n\n // Remove Active State\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (params.activeState) {\n removeActive();\n }\n\n // Remove Ripple\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n let isScrolling;\n let isSegmentedStrong = false;\n let segmentedStrongEl = null;\n const touchMoveActivableIos = '.dialog-button, .actions-button';\n let isTouchMoveActivable = false;\n let touchmoveActivableEl = null;\n function handleTouchStart(e) {\n if (!e.isTrusted) return true;\n isMoved = false;\n tapHoldFired = false;\n preventClick = false;\n isScrolling = undefined;\n if (e.targetTouches.length > 1) {\n if (activableElement) removeActive();\n return true;\n }\n if (e.touches.length > 1 && activableElement) {\n removeActive();\n }\n if (params.tapHold) {\n if (tapHoldTimeout) clearTimeout(tapHoldTimeout);\n tapHoldTimeout = setTimeout(() => {\n if (e && e.touches && e.touches.length > 1) return;\n tapHoldFired = true;\n e.preventDefault();\n preventClick = true;\n $(e.target).trigger('taphold', e);\n app.emit('taphold', e);\n }, params.tapHoldDelay);\n }\n targetElement = e.target;\n touchStartX = e.targetTouches[0].pageX;\n touchStartY = e.targetTouches[0].pageY;\n isSegmentedStrong = e.target.closest('.segmented-strong .button-active, .segmented-strong .tab-link-active');\n isTouchMoveActivable = app.theme === 'ios' && e.target.closest(touchMoveActivableIos);\n if (isSegmentedStrong) {\n segmentedStrongEl = isSegmentedStrong.closest('.segmented-strong');\n }\n if (params.activeState) {\n activableElement = findActivableElement(targetElement);\n if (activableElement && !isInsideScrollableView(activableElement)) {\n addActive();\n } else if (activableElement) {\n activeTimeout = setTimeout(addActive, 80);\n }\n }\n if (useRipple) {\n rippleTouchStart(targetElement, touchStartX, touchStartY);\n }\n return true;\n }\n function handleTouchMove(e) {\n if (!e.isTrusted) return;\n let touch;\n let distance;\n let shouldRemoveActive = true;\n if (e.type === 'touchmove') {\n touch = e.targetTouches[0];\n distance = params.touchClicksDistanceThreshold;\n }\n const touchCurrentX = e.targetTouches[0].pageX;\n const touchCurrentY = e.targetTouches[0].pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX));\n }\n if (isTouchMoveActivable || !isScrolling && isSegmentedStrong && segmentedStrongEl) {\n if (e.cancelable) e.preventDefault();\n }\n if (!isScrolling && isSegmentedStrong && segmentedStrongEl) {\n const elementFromPoint = document.elementFromPoint(e.targetTouches[0].clientX, e.targetTouches[0].clientY);\n const buttonEl = elementFromPoint.closest('.segmented-strong .button:not(.button-active):not(.tab-link-active)');\n if (buttonEl && segmentedStrongEl.contains(buttonEl)) {\n $(buttonEl).trigger('click', 'f7Segmented');\n targetElement = buttonEl;\n }\n }\n if (distance && touch) {\n const pageX = touch.pageX;\n const pageY = touch.pageY;\n if (Math.abs(pageX - touchStartX) > distance || Math.abs(pageY - touchStartY) > distance) {\n isMoved = true;\n }\n } else {\n isMoved = true;\n }\n if (isMoved) {\n preventClick = true;\n // Keep active state on touchMove (for dialog and actions buttons)\n if (isTouchMoveActivable) {\n const elementFromPoint = document.elementFromPoint(e.targetTouches[0].clientX, e.targetTouches[0].clientY);\n touchmoveActivableEl = elementFromPoint.closest(touchMoveActivableIos);\n if (touchmoveActivableEl && activableElement && activableElement[0] === touchmoveActivableEl) {\n shouldRemoveActive = false;\n } else if (touchmoveActivableEl) {\n setTimeout(() => {\n activableElement = findActivableElement(touchmoveActivableEl);\n addActive();\n });\n }\n }\n if (params.tapHold) {\n clearTimeout(tapHoldTimeout);\n }\n if (params.activeState && shouldRemoveActive) {\n clearTimeout(activeTimeout);\n removeActive();\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n }\n function handleTouchEnd(e) {\n if (!e.isTrusted) return true;\n isScrolling = undefined;\n isSegmentedStrong = false;\n segmentedStrongEl = null;\n isTouchMoveActivable = false;\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (touchmoveActivableEl) {\n $(touchmoveActivableEl).trigger('click', 'f7TouchMoveActivable');\n touchmoveActivableEl = null;\n }\n if (document.activeElement === e.target) {\n if (params.activeState) removeActive();\n if (useRipple) {\n rippleTouchEnd();\n }\n return true;\n }\n if (params.activeState) {\n addActive();\n setTimeout(removeActive, 0);\n }\n if (useRipple) {\n rippleTouchEnd();\n }\n if (params.tapHoldPreventClicks && tapHoldFired || preventClick) {\n if (e.cancelable) e.preventDefault();\n preventClick = true;\n return false;\n }\n return true;\n }\n function handleClick(e) {\n const isOverswipe = e && e.detail && e.detail === 'f7Overswipe';\n const isSegmented = e && e.detail && e.detail === 'f7Segmented';\n // eslint-disable-next-line\n const isTouchMoveActivable = e && e.detail && e.detail === 'f7TouchMoveActivable';\n let localPreventClick = preventClick;\n if (targetElement && e.target !== targetElement) {\n if (isOverswipe || isSegmented || isTouchMoveActivable) {\n localPreventClick = false;\n } else {\n localPreventClick = true;\n }\n } else if (isTouchMoveActivable) {\n localPreventClick = false;\n }\n if (params.tapHold && params.tapHoldPreventClicks && tapHoldFired) {\n localPreventClick = true;\n }\n if (localPreventClick) {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n }\n if (params.tapHold) {\n tapHoldTimeout = setTimeout(() => {\n tapHoldFired = false;\n }, device.ios || device.androidChrome ? 100 : 400);\n }\n preventClick = false;\n targetElement = null;\n return !localPreventClick;\n }\n function emitAppTouchEvent(name, e) {\n app.emit({\n events: name,\n data: [e]\n });\n }\n function appClick(e) {\n emitAppTouchEvent('click', e);\n }\n function appTouchStartActive(e) {\n emitAppTouchEvent('touchstart touchstart:active', e);\n }\n function appTouchMoveActive(e) {\n emitAppTouchEvent('touchmove touchmove:active', e);\n }\n function appTouchEndActive(e) {\n emitAppTouchEvent('touchend touchend:active', e);\n }\n function appTouchStartPassive(e) {\n emitAppTouchEvent('touchstart:passive', e);\n }\n function appTouchMovePassive(e) {\n emitAppTouchEvent('touchmove:passive', e);\n }\n function appTouchEndPassive(e) {\n emitAppTouchEvent('touchend:passive', e);\n }\n const passiveListener = support.passiveListener ? {\n passive: true\n } : false;\n const passiveListenerCapture = support.passiveListener ? {\n passive: true,\n capture: true\n } : true;\n const activeListener = support.passiveListener ? {\n passive: false\n } : false;\n const activeListenerCapture = support.passiveListener ? {\n passive: false,\n capture: true\n } : true;\n document.addEventListener('click', appClick, true);\n if (support.passiveListener) {\n document.addEventListener(app.touchEvents.start, appTouchStartActive, activeListenerCapture);\n document.addEventListener(app.touchEvents.move, appTouchMoveActive, activeListener);\n document.addEventListener(app.touchEvents.end, appTouchEndActive, activeListener);\n document.addEventListener(app.touchEvents.start, appTouchStartPassive, passiveListenerCapture);\n document.addEventListener(app.touchEvents.move, appTouchMovePassive, passiveListener);\n document.addEventListener(app.touchEvents.end, appTouchEndPassive, passiveListener);\n } else {\n document.addEventListener(app.touchEvents.start, e => {\n appTouchStartActive(e);\n appTouchStartPassive(e);\n }, true);\n document.addEventListener(app.touchEvents.move, e => {\n appTouchMoveActive(e);\n appTouchMovePassive(e);\n }, false);\n document.addEventListener(app.touchEvents.end, e => {\n appTouchEndActive(e);\n appTouchEndPassive(e);\n }, false);\n }\n if (support.touch) {\n app.on('click', handleClick);\n app.on('touchstart', handleTouchStart);\n app.on('touchmove', handleTouchMove);\n app.on('touchend', handleTouchEnd);\n document.addEventListener('touchcancel', handleTouchCancel, {\n passive: true\n });\n } else if (params.activeState) {\n app.on('touchstart', handleMouseDown);\n app.on('touchmove', handleMouseMove);\n app.on('touchend', handleMouseUp);\n document.addEventListener('pointercancel', handleMouseUp, {\n passive: true\n });\n }\n document.addEventListener('contextmenu', e => {\n if (params.disableContextMenu && (device.ios || device.android || device.cordova || window.Capacitor && window.Capacitor.isNative)) {\n e.preventDefault();\n }\n if (useRipple) {\n if (activableElement) removeActive();\n rippleTouchEnd();\n }\n });\n}\nexport default {\n name: 'touch',\n params: {\n touch: {\n // Clicks\n touchClicksDistanceThreshold: 5,\n // ContextMenu\n disableContextMenu: false,\n // Tap Hold\n tapHold: false,\n tapHoldDelay: 750,\n tapHoldPreventClicks: true,\n // Active State\n activeState: true,\n activeStateElements: 'a, button, label, span, .actions-button, .stepper-button, .stepper-button-plus, .stepper-button-minus, .card-expandable, .link, .item-link, .accordion-item-toggle',\n activeStateOnMouseMove: false,\n mdTouchRipple: true,\n iosTouchRipple: false,\n touchRippleElements: '.ripple, .link, .item-link, .list label.item-content, .list-button, .links-list a, .button, button, .input-clear-button, .dialog-button, .tab-link, .item-radio, .item-checkbox, .actions-button, .searchbar-disable-button, .fab a, .checkbox, .radio, .data-table .sortable-cell:not(.input-cell), .notification-close-button, .stepper-button, .stepper-button-minus, .stepper-button-plus, .list.accordion-list .accordion-item-toggle',\n touchRippleInsetElements: '.ripple-inset, .icon-only, .searchbar-disable-button, .input-clear-button, .notification-close-button, .md .navbar .link.back'\n }\n },\n create() {\n const app = this;\n const support = getSupport();\n extend(app, {\n touchEvents: {\n start: support.touch ? 'touchstart' : support.pointerEvents ? 'pointerdown' : 'mousedown',\n move: support.touch ? 'touchmove' : support.pointerEvents ? 'pointermove' : 'mousemove',\n end: support.touch ? 'touchend' : support.pointerEvents ? 'pointerup' : 'mouseup'\n }\n });\n },\n on: {\n init: initTouch\n }\n};","/**\n * Tokenize input string.\n */\nfunction lexer(str) {\n var tokens = [];\n var i = 0;\n while (i < str.length) {\n var char = str[i];\n if (char === \"*\" || char === \"+\" || char === \"?\") {\n tokens.push({ type: \"MODIFIER\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"\\\\\") {\n tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n continue;\n }\n if (char === \"{\") {\n tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"}\") {\n tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n continue;\n }\n if (char === \":\") {\n var name = \"\";\n var j = i + 1;\n while (j < str.length) {\n var code = str.charCodeAt(j);\n if (\n // `0-9`\n (code >= 48 && code <= 57) ||\n // `A-Z`\n (code >= 65 && code <= 90) ||\n // `a-z`\n (code >= 97 && code <= 122) ||\n // `_`\n code === 95) {\n name += str[j++];\n continue;\n }\n break;\n }\n if (!name)\n throw new TypeError(\"Missing parameter name at \".concat(i));\n tokens.push({ type: \"NAME\", index: i, value: name });\n i = j;\n continue;\n }\n if (char === \"(\") {\n var count = 1;\n var pattern = \"\";\n var j = i + 1;\n if (str[j] === \"?\") {\n throw new TypeError(\"Pattern cannot start with \\\"?\\\" at \".concat(j));\n }\n while (j < str.length) {\n if (str[j] === \"\\\\\") {\n pattern += str[j++] + str[j++];\n continue;\n }\n if (str[j] === \")\") {\n count--;\n if (count === 0) {\n j++;\n break;\n }\n }\n else if (str[j] === \"(\") {\n count++;\n if (str[j + 1] !== \"?\") {\n throw new TypeError(\"Capturing groups are not allowed at \".concat(j));\n }\n }\n pattern += str[j++];\n }\n if (count)\n throw new TypeError(\"Unbalanced pattern at \".concat(i));\n if (!pattern)\n throw new TypeError(\"Missing pattern at \".concat(i));\n tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n i = j;\n continue;\n }\n tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n }\n tokens.push({ type: \"END\", index: i, value: \"\" });\n return tokens;\n}\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str, options) {\n if (options === void 0) { options = {}; }\n var tokens = lexer(str);\n var _a = options.prefixes, prefixes = _a === void 0 ? \"./\" : _a;\n var defaultPattern = \"[^\".concat(escapeString(options.delimiter || \"/#?\"), \"]+?\");\n var result = [];\n var key = 0;\n var i = 0;\n var path = \"\";\n var tryConsume = function (type) {\n if (i < tokens.length && tokens[i].type === type)\n return tokens[i++].value;\n };\n var mustConsume = function (type) {\n var value = tryConsume(type);\n if (value !== undefined)\n return value;\n var _a = tokens[i], nextType = _a.type, index = _a.index;\n throw new TypeError(\"Unexpected \".concat(nextType, \" at \").concat(index, \", expected \").concat(type));\n };\n var consumeText = function () {\n var result = \"\";\n var value;\n while ((value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\"))) {\n result += value;\n }\n return result;\n };\n while (i < tokens.length) {\n var char = tryConsume(\"CHAR\");\n var name = tryConsume(\"NAME\");\n var pattern = tryConsume(\"PATTERN\");\n if (name || pattern) {\n var prefix = char || \"\";\n if (prefixes.indexOf(prefix) === -1) {\n path += prefix;\n prefix = \"\";\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n result.push({\n name: name || key++,\n prefix: prefix,\n suffix: \"\",\n pattern: pattern || defaultPattern,\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n var value = char || tryConsume(\"ESCAPED_CHAR\");\n if (value) {\n path += value;\n continue;\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n var open = tryConsume(\"OPEN\");\n if (open) {\n var prefix = consumeText();\n var name_1 = tryConsume(\"NAME\") || \"\";\n var pattern_1 = tryConsume(\"PATTERN\") || \"\";\n var suffix = consumeText();\n mustConsume(\"CLOSE\");\n result.push({\n name: name_1 || (pattern_1 ? key++ : \"\"),\n pattern: name_1 && !pattern_1 ? defaultPattern : pattern_1,\n prefix: prefix,\n suffix: suffix,\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n mustConsume(\"END\");\n }\n return result;\n}\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\nexport function tokensToFunction(tokens, options) {\n if (options === void 0) { options = {}; }\n var reFlags = flags(options);\n var _a = options.encode, encode = _a === void 0 ? function (x) { return x; } : _a, _b = options.validate, validate = _b === void 0 ? true : _b;\n // Compile all the tokens into regexps.\n var matches = tokens.map(function (token) {\n if (typeof token === \"object\") {\n return new RegExp(\"^(?:\".concat(token.pattern, \")$\"), reFlags);\n }\n });\n return function (data) {\n var path = \"\";\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === \"string\") {\n path += token;\n continue;\n }\n var value = data ? data[token.name] : undefined;\n var optional = token.modifier === \"?\" || token.modifier === \"*\";\n var repeat = token.modifier === \"*\" || token.modifier === \"+\";\n if (Array.isArray(value)) {\n if (!repeat) {\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not repeat, but got an array\"));\n }\n if (value.length === 0) {\n if (optional)\n continue;\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not be empty\"));\n }\n for (var j = 0; j < value.length; j++) {\n var segment = encode(value[j], token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected all \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n }\n path += token.prefix + segment + token.suffix;\n }\n continue;\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n var segment = encode(String(value), token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n }\n path += token.prefix + segment + token.suffix;\n continue;\n }\n if (optional)\n continue;\n var typeOfMessage = repeat ? \"an array\" : \"a string\";\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to be \").concat(typeOfMessage));\n }\n return path;\n };\n}\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nexport function match(str, options) {\n var keys = [];\n var re = pathToRegexp(str, keys, options);\n return regexpToFunction(re, keys, options);\n}\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nexport function regexpToFunction(re, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.decode, decode = _a === void 0 ? function (x) { return x; } : _a;\n return function (pathname) {\n var m = re.exec(pathname);\n if (!m)\n return false;\n var path = m[0], index = m.index;\n var params = Object.create(null);\n var _loop_1 = function (i) {\n if (m[i] === undefined)\n return \"continue\";\n var key = keys[i - 1];\n if (key.modifier === \"*\" || key.modifier === \"+\") {\n params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {\n return decode(value, key);\n });\n }\n else {\n params[key.name] = decode(m[i], key);\n }\n };\n for (var i = 1; i < m.length; i++) {\n _loop_1(i);\n }\n return { path: path, index: index, params: params };\n };\n}\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options) {\n return options && options.sensitive ? \"\" : \"i\";\n}\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path, keys) {\n if (!keys)\n return path;\n var groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n var index = 0;\n var execResult = groupsRegex.exec(path.source);\n while (execResult) {\n keys.push({\n // Use parenthesized substring match if available, index otherwise\n name: execResult[1] || index++,\n prefix: \"\",\n suffix: \"\",\n modifier: \"\",\n pattern: \"\",\n });\n execResult = groupsRegex.exec(path.source);\n }\n return path;\n}\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(paths, keys, options) {\n var parts = paths.map(function (path) { return pathToRegexp(path, keys, options).source; });\n return new RegExp(\"(?:\".concat(parts.join(\"|\"), \")\"), flags(options));\n}\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegexp(parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nexport function tokensToRegexp(tokens, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function (x) { return x; } : _d, _e = options.delimiter, delimiter = _e === void 0 ? \"/#?\" : _e, _f = options.endsWith, endsWith = _f === void 0 ? \"\" : _f;\n var endsWithRe = \"[\".concat(escapeString(endsWith), \"]|$\");\n var delimiterRe = \"[\".concat(escapeString(delimiter), \"]\");\n var route = start ? \"^\" : \"\";\n // Iterate over the tokens and create our regexp string.\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n if (typeof token === \"string\") {\n route += escapeString(encode(token));\n }\n else {\n var prefix = escapeString(encode(token.prefix));\n var suffix = escapeString(encode(token.suffix));\n if (token.pattern) {\n if (keys)\n keys.push(token);\n if (prefix || suffix) {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n var mod = token.modifier === \"*\" ? \"?\" : \"\";\n route += \"(?:\".concat(prefix, \"((?:\").concat(token.pattern, \")(?:\").concat(suffix).concat(prefix, \"(?:\").concat(token.pattern, \"))*)\").concat(suffix, \")\").concat(mod);\n }\n else {\n route += \"(?:\".concat(prefix, \"(\").concat(token.pattern, \")\").concat(suffix, \")\").concat(token.modifier);\n }\n }\n else {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n route += \"((?:\".concat(token.pattern, \")\").concat(token.modifier, \")\");\n }\n else {\n route += \"(\".concat(token.pattern, \")\").concat(token.modifier);\n }\n }\n }\n else {\n route += \"(?:\".concat(prefix).concat(suffix, \")\").concat(token.modifier);\n }\n }\n }\n if (end) {\n if (!strict)\n route += \"\".concat(delimiterRe, \"?\");\n route += !options.endsWith ? \"$\" : \"(?=\".concat(endsWithRe, \")\");\n }\n else {\n var endToken = tokens[tokens.length - 1];\n var isEndDelimited = typeof endToken === \"string\"\n ? delimiterRe.indexOf(endToken[endToken.length - 1]) > -1\n : endToken === undefined;\n if (!strict) {\n route += \"(?:\".concat(delimiterRe, \"(?=\").concat(endsWithRe, \"))?\");\n }\n if (!isEndDelimited) {\n route += \"(?=\".concat(delimiterRe, \"|\").concat(endsWithRe, \")\");\n }\n }\n return new RegExp(route, flags(options));\n}\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nexport function pathToRegexp(path, keys, options) {\n if (path instanceof RegExp)\n return regexpToRegexp(path, keys);\n if (Array.isArray(path))\n return arrayToRegexp(path, keys, options);\n return stringToRegexp(path, keys, options);\n}\n//# sourceMappingURL=index.js.map","import { getWindow, getDocument } from 'ssr-window';\nimport $ from './dom7.js';\nimport { extend } from './utils.js';\nconst History = {\n queue: [],\n clearQueue() {\n if (History.queue.length === 0) return;\n const currentQueue = History.queue.shift();\n currentQueue();\n },\n routerQueue: [],\n clearRouterQueue() {\n if (History.routerQueue.length === 0) return;\n const currentQueue = History.routerQueue.pop();\n const {\n router,\n stateUrl,\n action\n } = currentQueue;\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n if (action === 'back') {\n router.back({\n animate,\n browserHistory: false\n });\n }\n if (action === 'load') {\n router.navigate(stateUrl, {\n animate,\n browserHistory: false\n });\n }\n },\n handle(e) {\n if (History.blockPopstate) return;\n const app = this;\n // const mainView = app.views.main;\n let state = e.state;\n History.previousState = History.state;\n History.state = state;\n History.allowChange = true;\n History.clearQueue();\n state = History.state;\n if (!state) state = {};\n app.views.forEach(view => {\n const router = view.router;\n let viewState = state[view.id];\n if (!viewState && view.params.browserHistory) {\n viewState = {\n url: view.router.history[0]\n };\n }\n if (!viewState) return;\n const stateUrl = viewState.url || undefined;\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n if (stateUrl !== router.url) {\n if (router.history.indexOf(stateUrl) >= 0) {\n // Go Back\n if (router.allowPageChange) {\n router.back({\n animate,\n browserHistory: false\n });\n } else {\n History.routerQueue.push({\n action: 'back',\n router\n });\n }\n } else if (router.allowPageChange) {\n // Load page\n router.navigate(stateUrl, {\n animate,\n browserHistory: false\n });\n } else {\n History.routerQueue.unshift({\n action: 'load',\n stateUrl,\n router\n });\n }\n }\n });\n },\n initViewState(viewId, viewState) {\n const window = getWindow();\n const newState = extend({}, History.state || {}, {\n [viewId]: viewState\n });\n History.state = newState;\n window.history.replaceState(newState, '');\n },\n push(viewId, viewState, url) {\n const window = getWindow();\n const document = getDocument();\n /* eslint-disable no-param-reassign */\n if (url.substr(-3) === '#!/') {\n url = url.replace('#!/', '');\n if (url === '') {\n url = document.location.href;\n if (url.includes('#!/')) {\n url = document.location.href.split('#!/')[0];\n }\n }\n }\n /* eslint-enable no-param-reassign */\n if (!History.allowChange) {\n History.queue.push(() => {\n History.push(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState\n });\n History.state = newState;\n window.history.pushState(newState, '', url);\n },\n replace(viewId, viewState, url) {\n const window = getWindow();\n if (url.substr(-3) === '#!/') {\n // eslint-disable-next-line\n url = url.replace('#!/', '');\n }\n if (!History.allowChange) {\n History.queue.push(() => {\n History.replace(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState\n });\n History.state = newState;\n window.history.replaceState(newState, '', url);\n },\n go(index) {\n const window = getWindow();\n History.allowChange = false;\n window.history.go(index);\n },\n back() {\n const window = getWindow();\n History.allowChange = false;\n window.history.back();\n },\n allowChange: true,\n previousState: {},\n state: {},\n blockPopstate: true,\n init(app) {\n const window = getWindow();\n const document = getDocument();\n History.state = window.history.state;\n $(window).on('load', () => {\n setTimeout(() => {\n History.blockPopstate = false;\n }, 0);\n });\n if (document.readyState && document.readyState === 'complete') {\n History.blockPopstate = false;\n }\n $(window).on('popstate', History.handle.bind(app));\n }\n};\nexport default History;","import $ from '../../shared/dom7.js';\nimport History from '../../shared/history.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { now } from '../../shared/utils.js';\nfunction SwipeBack(r) {\n const router = r;\n const {\n $el,\n $navbarsEl,\n app,\n params\n } = router;\n const support = getSupport();\n const device = getDevice();\n let isTouched = false;\n let isMoved = false;\n const touchesStart = {};\n let isScrolling;\n let $currentPageEl = [];\n let $previousPageEl = [];\n let viewContainerWidth;\n let touchesDiff;\n let allowViewTouchMove = true;\n let touchStartTime;\n let $currentNavbarEl = [];\n let $previousNavbarEl = [];\n let dynamicNavbar;\n let $pageShadowEl;\n let $pageOpacityEl;\n let animatableNavEls;\n const paramsSwipeBackAnimateShadow = params[`${app.theme}SwipeBackAnimateShadow`];\n const paramsSwipeBackAnimateOpacity = params[`${app.theme}SwipeBackAnimateOpacity`];\n const paramsSwipeBackActiveArea = params[`${app.theme}SwipeBackActiveArea`];\n const paramsSwipeBackThreshold = params[`${app.theme}SwipeBackThreshold`];\n const transformOrigin = app.rtl ? 'right center' : 'left center';\n const transformOriginTitleLarge = app.rtl ? 'calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center' : 'calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center';\n function animatableNavElements() {\n const els = [];\n const inverter = app.rtl ? -1 : 1;\n const currentNavIsTransparent = $currentNavbarEl.hasClass('navbar-transparent') && !$currentNavbarEl.hasClass('navbar-large') && !$currentNavbarEl.hasClass('navbar-transparent-visible');\n const currentNavIsLarge = $currentNavbarEl.hasClass('navbar-large');\n const currentNavIsCollapsed = $currentNavbarEl.hasClass('navbar-large-collapsed');\n const currentNavIsLargeTransparent = $currentNavbarEl.hasClass('navbar-large-transparent') || $currentNavbarEl.hasClass('navbar-large') && $currentNavbarEl.hasClass('navbar-transparent');\n const previousNavIsTransparent = $previousNavbarEl.hasClass('navbar-transparent') && !$previousNavbarEl.hasClass('navbar-large') && !$previousNavbarEl.hasClass('navbar-transparent-visible');\n const previousNavIsLarge = $previousNavbarEl.hasClass('navbar-large');\n const previousNavIsCollapsed = $previousNavbarEl.hasClass('navbar-large-collapsed');\n const previousNavIsLargeTransparent = $previousNavbarEl.hasClass('navbar-large-transparent') || $previousNavbarEl.hasClass('navbar-large') && $previousNavbarEl.hasClass('navbar-transparent');\n const fromLarge = currentNavIsLarge && !currentNavIsCollapsed;\n const toLarge = previousNavIsLarge && !previousNavIsCollapsed;\n const $currentNavElements = $currentNavbarEl.find('.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg');\n const $previousNavElements = $previousNavbarEl.find('.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg');\n let activeNavBackIconText;\n let previousNavBackIconText;\n if (params.iosAnimateNavbarBackIcon) {\n if ($currentNavbarEl.hasClass('sliding') || $currentNavbarEl.find('.navbar-inner.sliding').length) {\n activeNavBackIconText = $currentNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n activeNavBackIconText = $currentNavbarEl.find('.left.sliding').find('.back .icon + span').eq(0);\n }\n if ($previousNavbarEl.hasClass('sliding') || $previousNavbarEl.find('.navbar-inner.sliding').length) {\n previousNavBackIconText = $previousNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n previousNavBackIconText = $previousNavbarEl.find('.left.sliding').find('.back .icon + span').eq(0);\n }\n if (activeNavBackIconText.length) {\n $previousNavElements.each(el => {\n if (!$(el).hasClass('title')) return;\n el.f7NavbarLeftOffset += activeNavBackIconText.prev('.icon')[0].offsetWidth;\n });\n }\n }\n $currentNavElements.each(navEl => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && currentNavIsTransparent) return;\n if (!fromLarge && $navEl.hasClass('.title-large')) return;\n const el = {\n el: navEl\n };\n if (fromLarge) {\n if (isTitle) return;\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each(subNavEl => {\n els.push({\n el: subNavEl,\n transform: progress => `translateX(${progress * 100 * inverter}%)`\n });\n });\n return;\n }\n }\n if (toLarge) {\n if (!fromLarge) {\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = 0;\n }\n }\n if (isLeft) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = progress => 1 - progress ** 0.33;\n $navEl.find('.back span').each(subNavEl => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOrigin,\n transform: progress => `translateX(calc(${progress} * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(${progress} * (var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2))) scale(${1 + 1 * progress})`\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (currentNavIsCollapsed) {\n if (currentNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = progress => `translateX(${100 * progress * inverter}%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = progress => `translateX(${100 * progress * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = progress => `translateX(${100 * progress * inverter}%) translateY(calc(-1 * ${1 - progress} * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = progress => `translateX(${100 * progress * inverter}%)`;\n }\n if (fromLarge && !toLarge) {\n el.transform = progress => `translateX(${100 * progress * inverter}%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding = $navEl.hasClass('sliding') || $navEl.parents('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || isSubnavbar && !isSliding) {\n el.opacity = progress => 1 - progress ** 0.33;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && activeNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = {\n el: activeNavBackIconText[0]\n };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = progress => {\n let activeNavTranslate = progress * transformTarget.el.f7NavbarRightOffset;\n if (device.pixelRatio === 1) activeNavTranslate = Math.round(activeNavTranslate);\n if (isSubnavbar && currentNavIsLarge) {\n return `translate3d(${activeNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${activeNavTranslate}px,0,0)`;\n };\n }\n });\n $previousNavElements.each(navEl => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && previousNavIsTransparent) return;\n const el = {\n el: navEl\n };\n if (toLarge) {\n if (isTitle) return;\n if (els.indexOf(el) < 0) els.push(el);\n if ($navEl.hasClass('title-large')) {\n el.opacity = 1;\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each(subNavEl => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOriginTitleLarge,\n opacity: progress => progress ** 3,\n transform: progress => `translateX(calc(${1 - progress} * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(${progress - 1} * var(--f7-navbar-large-title-height) + ${1 - progress} * var(--f7-navbar-large-title-padding-vertical))) scale(${0.5 + progress * 0.5})`\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (previousNavIsCollapsed) {\n if (previousNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-1 * ${1 - progress} * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && !toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding = $navEl.hasClass('sliding') || $previousNavbarEl.children('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || isSubnavbar && !isSliding) {\n el.opacity = progress => progress ** 3;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && previousNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = {\n el: previousNavBackIconText[0]\n };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = progress => {\n let previousNavTranslate = transformTarget.el.f7NavbarLeftOffset * (1 - progress);\n if (device.pixelRatio === 1) previousNavTranslate = Math.round(previousNavTranslate);\n if (isSubnavbar && previousNavIsLarge) {\n return `translate3d(${previousNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${previousNavTranslate}px,0,0)`;\n };\n }\n });\n return els;\n }\n function setAnimatableNavElements(_temp) {\n let {\n progress,\n reset,\n transition,\n reflow\n } = _temp === void 0 ? {} : _temp;\n const styles = ['overflow', 'transform', 'transform-origin', 'opacity'];\n if (transition === true || transition === false) {\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (transition === true) el.el.classList.add('navbar-page-transitioning');\n if (transition === false) el.el.classList.remove('navbar-page-transitioning');\n }\n }\n }\n if (reflow && animatableNavEls.length && animatableNavEls[0] && animatableNavEls[0].el) {\n // eslint-disable-next-line\n animatableNavEls[0].el._clientLeft = animatableNavEls[0].el.clientLeft;\n }\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (el.className && !el.classNameSet && !reset) {\n el.el.classList.add(el.className);\n el.classNameSet = true;\n }\n if (el.className && reset) {\n el.el.classList.remove(el.className);\n }\n for (let j = 0; j < styles.length; j += 1) {\n const styleProp = styles[j];\n if (el[styleProp]) {\n if (reset) {\n el.el.style[styleProp] = '';\n } else if (typeof el[styleProp] === 'function') {\n el.el.style[styleProp] = el[styleProp](progress);\n } else {\n el.el.style[styleProp] = el[styleProp];\n }\n }\n }\n }\n }\n }\n function handleTouchStart(e) {\n if (!e.isTrusted) return;\n const swipeBackEnabled = params[`${app.theme}SwipeBack`];\n if (!allowViewTouchMove || !swipeBackEnabled || isTouched || app.swipeout && app.swipeout.el || !router.allowPageChange) return;\n if ($(e.target).closest('.range-slider, .calendar-months').length > 0) return;\n if ($(e.target).closest('.page-master, .page-master-detail').length > 0 && params.masterDetailBreakpoint > 0 && app.width >= params.masterDetailBreakpoint) return;\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = now();\n dynamicNavbar = router.dynamicNavbar;\n }\n function handleTouchMove(e) {\n if (!e.isTrusted) return;\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)) || pageX < touchesStart.x && !app.rtl || pageX > touchesStart.x && app.rtl;\n }\n if (isScrolling || e.f7PreventSwipeBack || app.preventSwipeBack) {\n isTouched = false;\n return;\n }\n if (!isMoved) {\n // Calc values during first move fired\n let cancel = false;\n const target = $(e.target);\n const swipeout = target.closest('.swipeout');\n if (swipeout.length > 0) {\n if (!app.rtl && swipeout.find('.swipeout-actions-left').length > 0) cancel = true;\n if (app.rtl && swipeout.find('.swipeout-actions-right').length > 0) cancel = true;\n }\n $currentPageEl = target.closest('.page');\n if ($currentPageEl.hasClass('no-swipeback') || target.closest('.no-swipeback, .card-opened').length > 0) cancel = true;\n $previousPageEl = $el.find('.page-previous');\n if ($previousPageEl.length > 1) {\n $previousPageEl = $previousPageEl.eq($previousPageEl.length - 1);\n }\n let notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n viewContainerWidth = $el.width();\n if (app.rtl) {\n notFromBorder = touchesStart.x < $el.offset().left - $el[0].scrollLeft + (viewContainerWidth - paramsSwipeBackActiveArea);\n } else {\n notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n }\n if (notFromBorder) cancel = true;\n if ($previousPageEl.length === 0 || $currentPageEl.length === 0) cancel = true;\n if (cancel) {\n isTouched = false;\n return;\n }\n if (paramsSwipeBackAnimateShadow) {\n $pageShadowEl = $currentPageEl.find('.page-shadow-effect');\n if ($pageShadowEl.length === 0) {\n $pageShadowEl = $('
                ');\n $currentPageEl.append($pageShadowEl);\n }\n }\n if (paramsSwipeBackAnimateOpacity) {\n $pageOpacityEl = $previousPageEl.find('.page-opacity-effect');\n if ($pageOpacityEl.length === 0) {\n $pageOpacityEl = $('
                ');\n $previousPageEl.append($pageOpacityEl);\n }\n }\n if (dynamicNavbar) {\n $currentNavbarEl = $navbarsEl.find('.navbar-current');\n $previousNavbarEl = $navbarsEl.find('.navbar-previous');\n if ($previousNavbarEl.length > 1) {\n $previousNavbarEl = $previousNavbarEl.eq($previousNavbarEl.length - 1);\n }\n animatableNavEls = animatableNavElements($previousNavbarEl, $currentNavbarEl);\n }\n\n // Close/Hide Any Picker\n if ($('.sheet.modal-in').length > 0 && app.sheet) {\n app.sheet.close($('.sheet.modal-in'));\n }\n }\n e.f7PreventSwipePanel = true;\n isMoved = true;\n app.preventSwipePanelBySwipeBack = true;\n e.preventDefault();\n\n // RTL inverter\n const inverter = app.rtl ? -1 : 1;\n\n // Touches diff\n touchesDiff = (pageX - touchesStart.x - paramsSwipeBackThreshold) * inverter;\n if (touchesDiff < 0) touchesDiff = 0;\n const percentage = Math.min(Math.max(touchesDiff / viewContainerWidth, 0), 1);\n\n // Swipe Back Callback\n const callbackData = {\n percentage,\n progress: percentage,\n currentPageEl: $currentPageEl[0],\n previousPageEl: $previousPageEl[0],\n currentNavbarEl: $currentNavbarEl[0],\n previousNavbarEl: $previousNavbarEl[0]\n };\n $el.trigger('swipeback:move', callbackData);\n router.emit('swipebackMove', callbackData);\n\n // Transform pages\n let currentPageTranslate = touchesDiff * inverter;\n let previousPageTranslate = (touchesDiff / 5 - viewContainerWidth / 5) * inverter;\n if (!app.rtl) {\n currentPageTranslate = Math.min(currentPageTranslate, viewContainerWidth);\n previousPageTranslate = Math.min(previousPageTranslate, 0);\n } else {\n currentPageTranslate = Math.max(currentPageTranslate, -viewContainerWidth);\n previousPageTranslate = Math.max(previousPageTranslate, 0);\n }\n if (device.pixelRatio === 1) {\n currentPageTranslate = Math.round(currentPageTranslate);\n previousPageTranslate = Math.round(previousPageTranslate);\n }\n router.swipeBackActive = true;\n $([$currentPageEl[0], $previousPageEl[0]]).addClass('page-swipeback-active');\n $currentPageEl.transform(`translate3d(${currentPageTranslate}px,0,0)`);\n if (paramsSwipeBackAnimateShadow) $pageShadowEl[0].style.opacity = 1 - 1 * percentage;\n if (app.theme === 'ios') {\n $previousPageEl.transform(`translate3d(${previousPageTranslate}px,0,0)`);\n }\n if (paramsSwipeBackAnimateOpacity) $pageOpacityEl[0].style.opacity = 1 - 1 * percentage;\n\n // Dynamic Navbars Animation\n if (!dynamicNavbar) return;\n setAnimatableNavElements({\n progress: percentage\n });\n }\n function handleTouchEnd(e) {\n if (!e.isTrusted) return;\n app.preventSwipePanelBySwipeBack = false;\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n router.swipeBackActive = false;\n const $pages = $([$currentPageEl[0], $previousPageEl[0]]);\n $pages.removeClass('page-swipeback-active');\n if (touchesDiff === 0) {\n $pages.transform('');\n if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();\n if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();\n if (dynamicNavbar) {\n setAnimatableNavElements({\n reset: true\n });\n }\n return;\n }\n const timeDiff = now() - touchStartTime;\n let pageChanged = false;\n // Swipe back to previous page\n if (timeDiff < 300 && touchesDiff > 10 || timeDiff >= 300 && touchesDiff > viewContainerWidth / 2) {\n $currentPageEl.removeClass('page-current').addClass(`page-next${app.theme !== 'ios' ? ' page-next-on-right' : ''}`);\n $previousPageEl.removeClass('page-previous').addClass('page-current').removeAttr('aria-hidden');\n if ($pageShadowEl) $pageShadowEl[0].style.opacity = '';\n if ($pageOpacityEl) $pageOpacityEl[0].style.opacity = '';\n if (dynamicNavbar) {\n router.setNavbarPosition($currentNavbarEl, 'next');\n router.setNavbarPosition($previousNavbarEl, 'current', false);\n }\n pageChanged = true;\n }\n // Reset custom styles\n // Add transitioning class for transition-duration\n $pages.addClass('page-transitioning page-transitioning-swipeback');\n if (device.ios) {\n // eslint-disable-next-line\n $currentPageEl[0]._clientLeft = $currentPageEl[0].clientLeft;\n }\n $pages.transform('');\n if (dynamicNavbar) {\n setAnimatableNavElements({\n progress: pageChanged ? 1 : 0,\n transition: true,\n reflow: !!device.ios\n });\n }\n allowViewTouchMove = false;\n router.allowPageChange = false;\n\n // Swipe Back Callback\n const callbackData = {\n currentPageEl: $currentPageEl[0],\n previousPageEl: $previousPageEl[0],\n currentNavbarEl: $currentNavbarEl[0],\n previousNavbarEl: $previousNavbarEl[0]\n };\n if (pageChanged) {\n // Update Route\n router.currentRoute = $previousPageEl[0].f7Page.route;\n router.currentPage = $previousPageEl[0];\n\n // Page before animation callback\n router.pageCallback('beforeOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {\n route: $currentPageEl[0].f7Page.route,\n swipeBack: true\n });\n router.pageCallback('beforeIn', $previousPageEl, $previousNavbarEl, 'previous', 'current', {\n route: $previousPageEl[0].f7Page.route,\n swipeBack: true\n }, $currentPageEl[0]);\n $el.trigger('swipeback:beforechange', callbackData);\n router.emit('swipebackBeforeChange', callbackData);\n } else {\n $el.trigger('swipeback:beforereset', callbackData);\n router.emit('swipebackBeforeReset', callbackData);\n }\n $currentPageEl.transitionEnd(() => {\n $pages.removeClass('page-transitioning page-transitioning-swipeback');\n if (dynamicNavbar) {\n setAnimatableNavElements({\n reset: true,\n transition: false\n });\n }\n allowViewTouchMove = true;\n router.allowPageChange = true;\n if (pageChanged) {\n // Update History\n if (router.history.length === 1) {\n router.history.unshift(router.url);\n }\n router.history.pop();\n router.saveHistory();\n\n // Update push state\n if (params.browserHistory) {\n History.back();\n }\n\n // Page after animation callback\n router.pageCallback('afterOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {\n route: $currentPageEl[0].f7Page.route,\n swipeBack: true\n });\n router.pageCallback('afterIn', $previousPageEl, $previousNavbarEl, 'previous', 'current', {\n route: $previousPageEl[0].f7Page.route,\n swipeBack: true\n });\n\n // Remove Old Page\n\n router.pageCallback('beforeRemove', $currentPageEl, $currentNavbarEl, 'next', {\n swipeBack: true\n });\n router.removePage($currentPageEl);\n if (dynamicNavbar) {\n router.removeNavbar($currentNavbarEl);\n }\n $el.trigger('swipeback:afterchange', callbackData);\n router.emit('swipebackAfterChange', callbackData);\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (params.preloadPreviousPage) {\n router.back(router.history[router.history.length - 2], {\n preload: true\n });\n }\n } else {\n $el.trigger('swipeback:afterreset', callbackData);\n router.emit('swipebackAfterReset', callbackData);\n }\n if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();\n if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();\n });\n }\n function attachEvents() {\n const passiveListener = app.touchEvents.start === 'touchstart' && support.passiveListener ? {\n passive: true,\n capture: false\n } : false;\n $el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n function detachEvents() {\n const passiveListener = app.touchEvents.start === 'touchstart' && support.passiveListener ? {\n passive: true,\n capture: false\n } : false;\n $el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n attachEvents();\n router.on('routerDestroy', detachEvents);\n}\nexport default SwipeBack;","import { extend } from '../../shared/utils.js';\nexport default function redirect(direction, route, options) {\n const router = this;\n const r = route.route.redirect;\n const method = direction === 'forward' ? 'navigate' : 'back';\n if (options.initial && router.params.browserHistory) {\n options.replaceState = true; // eslint-disable-line\n options.history = true; // eslint-disable-line\n }\n\n function redirectResolve(redirectUrl, redirectOptions) {\n if (redirectOptions === void 0) {\n redirectOptions = {};\n }\n router.allowPageChange = true;\n router[method](redirectUrl, extend({}, options, redirectOptions));\n }\n function redirectReject() {\n router.allowPageChange = true;\n }\n if (typeof r === 'function') {\n router.allowPageChange = false;\n const redirectUrl = r.call(router, {\n router,\n to: route,\n resolve: redirectResolve,\n reject: redirectReject,\n direction,\n app: router.app\n });\n if (redirectUrl && typeof redirectUrl === 'string') {\n router.allowPageChange = true;\n return router[method](redirectUrl, options);\n }\n return router;\n }\n return router[method](r, options);\n}","function processQueue(router, routerQueue, routeQueue, to, from, resolve, reject, direction) {\n const queue = [];\n if (Array.isArray(routeQueue)) {\n queue.push(...routeQueue);\n } else if (routeQueue && typeof routeQueue === 'function') {\n queue.push(routeQueue);\n }\n if (routerQueue) {\n if (Array.isArray(routerQueue)) {\n queue.push(...routerQueue);\n } else {\n queue.push(routerQueue);\n }\n }\n function next() {\n if (queue.length === 0) {\n resolve();\n return;\n }\n const queueItem = queue.shift();\n queueItem.call(router, {\n router,\n to,\n from,\n resolve() {\n next();\n },\n reject() {\n reject();\n },\n direction,\n app: router.app\n });\n }\n next();\n}\nexport default function processRouteQueue(to, from, resolve, reject, direction) {\n const router = this;\n function enterNextRoute() {\n if (to && to.route && (router.params.routesBeforeEnter || to.route.beforeEnter)) {\n router.allowPageChange = false;\n processQueue(router, router.params.routesBeforeEnter, to.route.beforeEnter, to, from, () => {\n router.allowPageChange = true;\n resolve();\n }, () => {\n reject();\n }, direction);\n } else {\n resolve();\n }\n }\n function leaveCurrentRoute() {\n if (from && from.route && (router.params.routesBeforeLeave || from.route.beforeLeave)) {\n router.allowPageChange = false;\n processQueue(router, router.params.routesBeforeLeave, from.route.beforeLeave, to, from, () => {\n router.allowPageChange = true;\n enterNextRoute();\n }, () => {\n reject();\n }, direction);\n } else {\n enterNextRoute();\n }\n }\n leaveCurrentRoute();\n}","export default function appRouterCheck(router, method) {\n if (!router.view) {\n throw new Error(`Framework7: it is not allowed to use router methods on global app router. Use router methods only on related View, e.g. app.views.main.router.${method}(...)`);\n }\n}","export default function asyncComponent(router, component, resolve, reject) {\n function resolvePromise(componentPromise) {\n componentPromise.then(c => {\n // eslint-disable-next-line\n resolve({\n component: c.default || c._default || c\n });\n }).catch(err => {\n reject();\n throw new Error(err, {\n cause: err\n });\n });\n }\n if (component instanceof Promise) {\n resolvePromise(component);\n return;\n }\n const asyncComponentResult = component.call(router);\n if (asyncComponentResult instanceof Promise) {\n resolvePromise(asyncComponentResult);\n } else {\n resolve({\n component: asyncComponentResult\n });\n }\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, parseUrlQuery } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport redirect from './redirect.js';\nimport processRouteQueue from './process-route-queue.js';\nimport appRouterCheck from './app-router-check.js';\nimport asyncComponent from './async-component.js';\nfunction refreshPage(props) {\n if (props === void 0) {\n props = {};\n }\n const router = this;\n appRouterCheck(router, 'refreshPage');\n return router.navigate(router.currentRoute.url, {\n ignoreCache: true,\n reloadCurrent: true,\n props\n });\n}\nfunction forward(router, el, forwardOptions) {\n if (forwardOptions === void 0) {\n forwardOptions = {};\n }\n const document = getDocument();\n const $el = $(el);\n const app = router.app;\n const view = router.view;\n const options = extend(false, {\n animate: router.params.animate,\n browserHistory: true,\n replaceState: false,\n history: true,\n reloadCurrent: router.params.reloadPages,\n reloadPrevious: false,\n reloadAll: false,\n clearPreviousHistory: false,\n reloadDetail: router.params.reloadDetail,\n on: {}\n }, forwardOptions);\n const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n const isMaster = masterDetailEnabled && options.route && options.route.route && (options.route.route.master === true || typeof options.route.route.master === 'function' && options.route.route.master(app, router));\n let masterPageEl;\n let otherDetailPageEl;\n let detailsInBetweenRemoved = 0;\n let currentRouteIsModal = router.currentRoute.modal;\n let modalType;\n if (!currentRouteIsModal) {\n 'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(modalLoadProp => {\n if (router.currentRoute && router.currentRoute.route && router.currentRoute.route[modalLoadProp]) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n if (currentRouteIsModal) {\n const modalToClose = router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n const previousUrl = router.history[router.history.length - 2];\n let previousRoute = router.findMatchingRoute(previousUrl);\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl\n }\n };\n }\n router.modalRemove(modalToClose);\n }\n const dynamicNavbar = router.dynamicNavbar;\n const $viewEl = router.$el;\n const $newPage = $el;\n const reload = options.reloadPrevious || options.reloadCurrent || options.reloadAll;\n let $oldPage;\n let $navbarsEl;\n let $newNavbarEl;\n let $oldNavbarEl;\n router.allowPageChange = false;\n if ($newPage.length === 0) {\n router.allowPageChange = true;\n return router;\n }\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n if (dynamicNavbar) {\n $newNavbarEl = $newPage.children('.navbar');\n $navbarsEl = router.$navbarsEl;\n if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n }\n }\n\n // Save Keep Alive Cache\n if (options.route && options.route.route && options.route.route.keepAlive && !options.route.route.keepAliveData) {\n options.route.route.keepAliveData = {\n pageEl: $el[0]\n };\n }\n\n // Pages In View\n const $pagesInView = $viewEl.children('.page').filter(pageInView => pageInView !== $newPage[0]);\n\n // Navbars In View\n let $navbarsInView;\n if (dynamicNavbar) {\n $navbarsInView = $navbarsEl.children('.navbar').filter(navbarInView => navbarInView !== $newNavbarEl[0]);\n }\n\n // Exit when reload previous and only 1 page in view so nothing ro reload\n if (options.reloadPrevious && $pagesInView.length < 2) {\n router.allowPageChange = true;\n return router;\n }\n\n // Find Detail' master page\n let isDetail;\n let reloadDetail;\n let isDetailRoot;\n if (masterDetailEnabled && !options.reloadAll) {\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {\n masterPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n\n isDetail = !isMaster && masterPageEl;\n if (isDetail) {\n // Find Other Detail\n if (masterPageEl) {\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if ($pagesInView[i].classList.contains('page-master-detail')) {\n otherDetailPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n }\n }\n\n reloadDetail = isDetail && options.reloadDetail && app.width >= router.params.masterDetailBreakpoint && masterPageEl;\n }\n if (isDetail) {\n isDetailRoot = !otherDetailPageEl || reloadDetail || options.reloadAll || options.reloadCurrent;\n }\n\n // New Page\n let newPagePosition = 'next';\n if (options.reloadCurrent || options.reloadAll || reloadDetail) {\n newPagePosition = 'current';\n } else if (options.reloadPrevious) {\n newPagePosition = 'previous';\n }\n $newPage.removeClass('page-previous page-current page-next').addClass(`page-${newPagePosition}${isMaster ? ' page-master' : ''}${isDetail ? ' page-master-detail' : ''}${isDetailRoot ? ' page-master-detail-root' : ''}`).trigger('page:unstack').trigger('page:position', {\n position: newPagePosition\n });\n router.emit('pageUnstack', $newPage[0]);\n router.emit('pagePosition', $newPage[0], newPagePosition);\n if (isMaster || isDetail) {\n $newPage.trigger('page:role', {\n role: isMaster ? 'master' : 'detail',\n root: !!isDetailRoot\n });\n router.emit('pageRole', $newPage[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot\n });\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n $newNavbarEl.removeClass('navbar-previous navbar-current navbar-next').addClass(`navbar-${newPagePosition}${isMaster ? ' navbar-master' : ''}${isDetail ? ' navbar-master-detail' : ''}${isDetailRoot ? ' navbar-master-detail-root' : ''}`);\n $newNavbarEl.trigger('navbar:position', {\n position: newPagePosition\n });\n router.emit('navbarPosition', $newNavbarEl[0], newPagePosition);\n if (isMaster || isDetail) {\n router.emit('navbarRole', $newNavbarEl[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot\n });\n }\n }\n\n // Find Old Page\n if (options.reloadCurrent || reloadDetail) {\n if (reloadDetail) {\n $oldPage = $pagesInView.filter(pageEl => !pageEl.classList.contains('page-master'));\n if (dynamicNavbar) {\n $oldNavbarEl = $($oldPage.map(pageEl => app.navbar.getElByPage(pageEl)));\n }\n if ($oldPage.length > 1 && masterPageEl) {\n detailsInBetweenRemoved = $oldPage.length - 1;\n $(masterPageEl).removeClass('page-master-stacked').trigger('page:masterunstack');\n router.emit('pageMasterUnstack', masterPageEl);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage(masterPageEl)).removeClass('navbar-master-stacked');\n router.emit('navbarMasterUnstack', app.navbar.getElByPage(masterPageEl));\n }\n }\n } else {\n $oldPage = $pagesInView.eq($pagesInView.length - 1);\n if (dynamicNavbar) {\n $oldNavbarEl = $(app.navbar.getElByPage($oldPage));\n }\n }\n } else if (options.reloadPrevious) {\n $oldPage = $pagesInView.eq($pagesInView.length - 2);\n if (dynamicNavbar) {\n // $oldNavbarEl = $navbarsInView.eq($pagesInView.length - 2);\n $oldNavbarEl = $(app.navbar.getElByPage($oldPage));\n }\n } else if (options.reloadAll) {\n $oldPage = $pagesInView.filter(pageEl => pageEl !== $newPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl = $navbarsInView.filter(navbarEl => navbarEl !== $newNavbarEl[0]);\n }\n } else {\n let removedPageEls = [];\n let removedNavbarEls = [];\n if ($pagesInView.length > 1) {\n let i = 0;\n for (i = 0; i < $pagesInView.length - 1; i += 1) {\n if (masterPageEl && $pagesInView[i] === masterPageEl) {\n $pagesInView.eq(i).addClass('page-master-stacked');\n $pagesInView.eq(i).trigger('page:masterstack');\n router.emit('pageMasterStack', $pagesInView[i]);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage(masterPageEl)).addClass('navbar-master-stacked');\n router.emit('navbarMasterStack', app.navbar.getElByPage(masterPageEl));\n }\n continue; // eslint-disable-line\n }\n\n const oldNavbarEl = app.navbar.getElByPage($pagesInView.eq(i));\n\n // Page remove event\n removedPageEls.push($pagesInView[i]);\n router.pageCallback('beforeRemove', $pagesInView[i], $navbarsInView && $navbarsInView[i], 'previous', undefined, options);\n router.removePage($pagesInView[i]);\n if (dynamicNavbar && oldNavbarEl) {\n removedNavbarEls.push(oldNavbarEl);\n router.removeNavbar(oldNavbarEl);\n }\n }\n }\n $oldPage = $viewEl.children('.page').filter(pageEl => pageEl !== $newPage[0] && removedPageEls.indexOf(pageEl) < 0);\n if (dynamicNavbar) {\n $oldNavbarEl = $navbarsEl.children('.navbar').filter(navbarEl => navbarEl !== $newNavbarEl[0] && removedNavbarEls.indexOf(removedNavbarEls) < 0);\n }\n removedPageEls = [];\n removedNavbarEls = [];\n }\n if (isDetail && !options.reloadAll) {\n if ($oldPage.length > 1 || reloadDetail) {\n $oldPage = $oldPage.filter(pageEl => !pageEl.classList.contains('page-master'));\n }\n if ($oldNavbarEl && ($oldNavbarEl.length > 1 || reloadDetail)) {\n $oldNavbarEl = $oldNavbarEl.filter(navbarEl => !navbarEl.classList.contains('navbar-master'));\n }\n }\n\n // Push State\n if (router.params.browserHistory && (options.browserHistory || options.replaceState) && !options.reloadPrevious) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History[options.reloadCurrent || reloadDetail && otherDetailPageEl || options.reloadAll || options.replaceState ? 'replace' : 'push'](view.id, {\n url: options.route.url\n }, browserHistoryRoot + router.params.browserHistorySeparator + options.route.url);\n }\n if (!options.reloadPrevious) {\n // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarEl.length) {\n router.currentNavbarEl = $newNavbarEl[0];\n } else {\n delete router.currentNavbarEl;\n }\n\n // Current Route\n router.currentRoute = options.route;\n }\n\n // Update router history\n const url = options.route.url;\n if (options.history) {\n if (((options.reloadCurrent || reloadDetail && otherDetailPageEl) && router.history.length) > 0 || options.replaceState) {\n if (reloadDetail && detailsInBetweenRemoved > 0) {\n router.history = router.history.slice(0, router.history.length - detailsInBetweenRemoved);\n router.propsHistory = router.propsHistory.slice(0, router.propsHistory.length - detailsInBetweenRemoved);\n }\n router.history[router.history.length - (options.reloadPrevious ? 2 : 1)] = url;\n router.propsHistory[router.propsHistory.length - (options.reloadPrevious ? 2 : 1)] = options.props || {};\n } else if (options.reloadPrevious) {\n router.history[router.history.length - 2] = url;\n router.propsHistory[router.propsHistory.length - 2] = options.props || {};\n } else if (options.reloadAll) {\n router.history = [url];\n router.propsHistory = [options.props || {}];\n } else {\n router.history.push(url);\n router.propsHistory.push(options.props || {});\n }\n }\n router.saveHistory();\n\n // Insert new page and navbar\n const newPageInDom = $newPage.parents(document).length > 0;\n const f7Component = $newPage[0].f7Component;\n if (options.reloadPrevious) {\n if (f7Component && !newPageInDom) {\n f7Component.mount(componentEl => {\n $(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n if ($oldNavbarEl.length) {\n $newNavbarEl.insertBefore($oldNavbarEl);\n } else {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl);\n }\n }\n } else {\n if ($oldPage.next('.page')[0] !== $newPage[0]) {\n if (f7Component && !newPageInDom) {\n f7Component.mount(componentEl => {\n $viewEl.append(componentEl);\n });\n } else {\n $viewEl.append($newPage[0]);\n }\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl[0]);\n }\n }\n if (!newPageInDom) {\n router.pageCallback('mounted', $newPage, $newNavbarEl, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);\n } else if (options.route && options.route.route && options.route.route.keepAlive && !$newPage[0].f7PageMounted) {\n $newPage[0].f7PageMounted = true;\n router.pageCallback('mounted', $newPage, $newNavbarEl, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);\n }\n\n // Remove old page\n if ((options.reloadCurrent || reloadDetail) && $oldPage.length > 0) {\n // Page remove event\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n } else if (options.reloadAll) {\n $oldPage.each((pageEl, index) => {\n const $oldPageEl = $(pageEl);\n const $oldNavbarElEl = $(app.navbar.getElByPage($oldPageEl));\n\n // Page remove event\n if ($oldPageEl.hasClass('page-current')) {\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n }\n router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarEl && $oldNavbarEl.eq(index), 'previous', undefined, options);\n router.removePage($oldPageEl);\n if (dynamicNavbar && $oldNavbarElEl.length) {\n router.removeNavbar($oldNavbarElEl);\n }\n });\n } else if (options.reloadPrevious) {\n // Page remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(options.route.route.tab, extend({}, options, {\n history: false,\n browserHistory: false\n }));\n }\n\n // Check master detail\n if (masterDetailEnabled) {\n view.checkMasterDetailBreakpoint();\n }\n\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);\n if (options.reloadCurrent || options.reloadAll || reloadDetail) {\n router.allowPageChange = true;\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);\n $newPage.removeAttr('aria-hidden');\n if (dynamicNavbar && $newNavbarEl) {\n $newNavbarEl.removeAttr('aria-hidden');\n }\n router.pageCallback('afterIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);\n if (options.reloadCurrent && options.clearPreviousHistory) router.clearPreviousHistory();\n if (reloadDetail) {\n router.setPagePosition($(masterPageEl), 'previous');\n if (masterPageEl.f7Page && masterPageEl.f7Page.navbarEl) {\n router.setNavbarPosition($(masterPageEl.f7Page.navbarEl), 'previous');\n }\n }\n return router;\n }\n if (options.reloadPrevious) {\n router.allowPageChange = true;\n return router;\n }\n\n // Before animation event\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'next', 'current', options);\n\n // Animation\n function afterAnimation() {\n router.setPagePosition($newPage, 'current', false);\n router.setPagePosition($oldPage, 'previous', !$oldPage.hasClass('page-master'));\n if (dynamicNavbar) {\n router.setNavbarPosition($newNavbarEl, 'current', false);\n router.setNavbarPosition($oldNavbarEl, 'previous', !$oldNavbarEl.hasClass('navbar-master'));\n }\n // After animation event\n router.allowPageChange = true;\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'next', 'current', options);\n let keepOldPage = (router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`]) && !isMaster;\n if (!keepOldPage) {\n if ($newPage.hasClass('smart-select-page') || $newPage.hasClass('photo-browser-page') || $newPage.hasClass('autocomplete-page') || $newPage.hasClass('color-picker-page')) {\n keepOldPage = true;\n }\n }\n if (!keepOldPage) {\n if (!($newPage.attr('data-name') && $newPage.attr('data-name') === 'smart-select-page')) {\n // Remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n }\n if (options.clearPreviousHistory) router.clearPreviousHistory();\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.browserHistory) {\n History.clearRouterQueue();\n }\n }\n function setPositionClasses() {\n router.setPagePosition($oldPage, 'current', false);\n router.setPagePosition($newPage, 'next', false);\n if (dynamicNavbar) {\n router.setNavbarPosition($oldNavbarEl, 'current', false);\n router.setNavbarPosition($newNavbarEl, 'next', false);\n }\n }\n if (options.animate && !(isMaster && app.width >= router.params.masterDetailBreakpoint)) {\n const delay = router.params[`${router.app.theme}PageLoadDelay`];\n let transition = router.params.transition;\n if (options.transition) transition = options.transition;\n if (!transition && router.currentRoute && router.currentRoute.route) {\n transition = router.currentRoute.route.transition;\n }\n if (!transition && router.currentRoute && router.currentRoute.route.options) {\n transition = router.currentRoute.route.options.transition;\n }\n if (transition) {\n $newPage[0].f7PageTransition = transition;\n }\n if (delay) {\n setTimeout(() => {\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'forward', transition, () => {\n afterAnimation();\n });\n }, delay);\n } else {\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'forward', transition, () => {\n afterAnimation();\n });\n }\n } else {\n afterAnimation();\n }\n return router;\n}\nfunction load(router, loadParams, loadOptions, ignorePageChange) {\n if (loadParams === void 0) {\n loadParams = {};\n }\n if (loadOptions === void 0) {\n loadOptions = {};\n }\n if (!router.allowPageChange && !ignorePageChange) return router;\n const params = loadParams;\n const options = loadOptions;\n const {\n url,\n content,\n el,\n pageName,\n component,\n componentUrl\n } = params;\n if (!options.reloadCurrent && options.route && options.route.route && options.route.route.parentPath && router.currentRoute.route && router.currentRoute.route.parentPath === options.route.route.parentPath) {\n // Do something nested\n if (options.route.url === router.url) {\n router.allowPageChange = true;\n return false;\n }\n // Check for same params\n let sameParams = Object.keys(options.route.params).length === Object.keys(router.currentRoute.params).length;\n if (sameParams) {\n // Check for equal params name\n Object.keys(options.route.params).forEach(paramName => {\n if (!(paramName in router.currentRoute.params) || router.currentRoute.params[paramName] !== options.route.params[paramName]) {\n sameParams = false;\n }\n });\n }\n if (sameParams) {\n if (options.route.route.tab) {\n return router.tabLoad(options.route.route.tab, options);\n }\n return false;\n }\n if (!sameParams && options.route.route.tab && router.currentRoute.route.tab && router.currentRoute.parentPath === options.route.parentPath) {\n return router.tabLoad(options.route.route.tab, options);\n }\n }\n if (options.route && options.route.url && router.url === options.route.url && !(options.reloadCurrent || options.reloadPrevious) && !router.params.allowDuplicateUrls) {\n router.allowPageChange = true;\n return false;\n }\n if (!options.route && url) {\n options.route = router.parseRouteUrl(url);\n extend(options.route, {\n route: {\n url,\n path: url\n }\n });\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return forward(router, pageEl, extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n if (url || componentUrl || component) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n forward(router, router.getPageEl(content), options);\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n forward(router, router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n forward(router, router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.pageComponentLoader({\n routerEl: router.el,\n component,\n componentUrl,\n options,\n resolve,\n reject\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router.xhrRequest(url, options).then(pageContent => {\n forward(router, router.getPageEl(pageContent), options);\n }).catch(() => {\n router.allowPageChange = true;\n });\n }\n return router;\n}\nfunction navigate(navigateParams, navigateOptions) {\n if (navigateOptions === void 0) {\n navigateOptions = {};\n }\n const router = this;\n if (router.swipeBackActive) return router;\n let url;\n let createRoute;\n let name;\n let path;\n let query;\n let params;\n let route;\n if (typeof navigateParams === 'string') {\n url = navigateParams;\n } else {\n url = navigateParams.url;\n createRoute = navigateParams.route;\n name = navigateParams.name;\n path = navigateParams.path;\n query = navigateParams.query;\n params = navigateParams.params;\n }\n if (name || path) {\n url = router.generateUrl({\n path,\n name,\n params,\n query\n });\n if (url) {\n return router.navigate(url, navigateOptions);\n }\n return router;\n }\n const app = router.app;\n appRouterCheck(router, 'navigate');\n if (url === '#' || url === '') {\n return router;\n }\n let navigateUrl = url.replace('./', '');\n if (navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n const currentPath = router.currentRoute.parentPath || router.currentRoute.path;\n navigateUrl = ((currentPath ? `${currentPath}/` : '/') + navigateUrl).replace('///', '/').replace('//', '/');\n }\n if (createRoute) {\n route = extend(router.parseRouteUrl(navigateUrl), {\n route: extend({}, createRoute)\n });\n } else {\n route = router.findMatchingRoute(navigateUrl);\n }\n if (!route) {\n return router;\n }\n if (route.route && route.route.viewName) {\n const anotherViewName = route.route.viewName;\n const anotherView = app.views[anotherViewName];\n if (!anotherView) {\n throw new Error(`Framework7: There is no View with \"${anotherViewName}\" name that was specified in this route`);\n }\n if (anotherView !== router.view) {\n return anotherView.router.navigate(navigateParams, navigateOptions);\n }\n }\n if (route.route.redirect) {\n return redirect.call(router, 'forward', route, navigateOptions);\n }\n const options = {};\n if (route.route.options) {\n extend(options, route.route.options, navigateOptions);\n } else {\n extend(options, navigateOptions);\n }\n if (options.openIn && (!router.params.ignoreOpenIn || router.params.ignoreOpenIn && router.history.length > 0)) {\n return router.openIn(router, navigateUrl, options);\n }\n options.route = route;\n function resolve() {\n let routerLoaded = false;\n 'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(modalLoadProp => {\n if (route.route[modalLoadProp] && !routerLoaded) {\n routerLoaded = true;\n router.modalLoad(modalLoadProp, route, options, 'forward');\n }\n });\n if (route.route.keepAlive && route.route.keepAliveData) {\n load(router, {\n el: route.route.keepAliveData.pageEl\n }, options, false);\n routerLoaded = true;\n }\n 'url content component pageName el componentUrl'.split(' ').forEach(pageLoadProp => {\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n load(router, {\n [pageLoadProp]: route.route[pageLoadProp]\n }, options, false);\n }\n });\n if (routerLoaded) return;\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n let resolvedAsModal = false;\n 'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(modalLoadProp => {\n if (resolveParams[modalLoadProp]) {\n resolvedAsModal = true;\n const modalRoute = extend({}, route, {\n route: resolveParams\n });\n router.allowPageChange = true;\n router.modalLoad(modalLoadProp, modalRoute, extend(options, resolveOptions), 'forward');\n }\n });\n if (resolvedAsModal) return;\n load(router, resolveParams, extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n route.route.async.call(router, {\n router,\n to: options.route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction: 'forward',\n app\n });\n }\n if (route.route.asyncComponent) {\n asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n if (router.params.masterDetailBreakpoint > 0 && route.route.masterRoute) {\n // load detail route\n let preloadMaster = true;\n let masterLoaded = false;\n if (router.currentRoute && router.currentRoute.route) {\n if ((router.currentRoute.route.master === true || typeof router.currentRoute.route.master === 'function' && router.currentRoute.route.master(app, router)) && (router.currentRoute.route === route.route.masterRoute || router.currentRoute.route.path === route.route.masterRoute.path)) {\n preloadMaster = false;\n }\n if (router.currentRoute.route.masterRoute && (router.currentRoute.route.masterRoute === route.route.masterRoute || router.currentRoute.route.masterRoute.path === route.route.masterRoute.path)) {\n preloadMaster = false;\n masterLoaded = true;\n }\n }\n if (preloadMaster || masterLoaded && navigateOptions.reloadAll) {\n router.navigate({\n path: route.route.masterRoute.path,\n params: route.params || {}\n }, {\n animate: false,\n reloadAll: navigateOptions.reloadAll,\n reloadCurrent: navigateOptions.reloadCurrent,\n reloadPrevious: navigateOptions.reloadPrevious,\n browserHistory: !navigateOptions.initial,\n history: !navigateOptions.initial,\n once: {\n pageAfterIn() {\n router.navigate(navigateParams, extend({}, navigateOptions, {\n animate: false,\n reloadAll: false,\n reloadCurrent: false,\n reloadPrevious: false,\n history: !navigateOptions.initial,\n browserHistory: !navigateOptions.initial\n }));\n }\n }\n });\n return router;\n }\n }\n processRouteQueue.call(router, route, router.currentRoute, () => {\n if (route.route.modules) {\n app.loadModules(Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules]).then(() => {\n resolve();\n }).catch(() => {\n reject();\n });\n } else {\n resolve();\n }\n }, () => {\n reject();\n }, 'forward');\n\n // Return Router\n return router;\n}\nexport { refreshPage, navigate };","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, parseUrlQuery } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport History from '../../shared/history.js';\nimport redirect from './redirect.js';\nimport processRouteQueue from './process-route-queue.js';\nimport appRouterCheck from './app-router-check.js';\nimport asyncComponent from './async-component.js';\nfunction backward(router, el, backwardOptions) {\n const device = getDevice();\n const document = getDocument();\n const $el = $(el);\n const app = router.app;\n const view = router.view;\n const options = extend(false, {\n animate: router.params.animate,\n browserHistory: true,\n replaceState: false\n }, backwardOptions);\n const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n const isMaster = masterDetailEnabled && options.route && options.route.route && (options.route.route.master === true || typeof options.route.route.master === 'function' && options.route.route.master(app, router));\n let masterPageEl;\n let masterPageRemoved;\n const dynamicNavbar = router.dynamicNavbar;\n const $newPage = $el;\n const $oldPage = router.$el.children('.page-current');\n const initialPreload = $oldPage.length === 0 && options.preload;\n const currentIsMaster = masterDetailEnabled && $oldPage.hasClass('page-master');\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n let $navbarsEl;\n let $newNavbarEl;\n let $oldNavbarEl;\n if (dynamicNavbar) {\n $newNavbarEl = $newPage.children('.navbar');\n $navbarsEl = router.$navbarsEl;\n if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n }\n $oldNavbarEl = $navbarsEl.find('.navbar-current');\n }\n router.allowPageChange = false;\n if ($newPage.length === 0 || $oldPage.length === 0 && !options.preload) {\n router.allowPageChange = true;\n return router;\n }\n\n // Remove theme elements\n router.removeThemeElements($newPage);\n\n // Save Keep Alive Cache\n if (options.route && options.route.route && options.route.route.keepAlive && !options.route.route.keepAliveData) {\n options.route.route.keepAliveData = {\n pageEl: $el[0]\n };\n }\n\n // Pages In View\n let isDetail;\n let isDetailRoot;\n if (masterDetailEnabled) {\n const $pagesInView = router.$el.children('.page').filter(pageInView => pageInView !== $newPage[0]);\n\n // Find Detail' master page\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {\n masterPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n\n isDetail = !isMaster && masterPageEl && router.history.indexOf(options.route.url) > router.history.indexOf(masterPageEl.f7Page.route.url);\n if (!isDetail && !isMaster && masterPageEl && masterPageEl.f7Page && options.route.route.masterRoute) {\n isDetail = options.route.route.masterRoute.path === masterPageEl.f7Page.route.route.path;\n }\n }\n if (isDetail && masterPageEl && masterPageEl.f7Page) {\n isDetailRoot = router.history.indexOf(options.route.url) - router.history.indexOf(masterPageEl.f7Page.route.url) === 1;\n }\n\n // New Page\n $newPage.addClass(`page-${initialPreload ? 'current' : 'previous'}${isMaster ? ' page-master' : ''}${isDetail ? ' page-master-detail' : ''}${isDetailRoot ? ' page-master-detail-root' : ''}`).removeAttr('aria-hidden').trigger('page:unstack').trigger('page:position', {\n position: initialPreload ? 'current' : 'previous'\n });\n router.emit('pageUnstack', $newPage[0]);\n router.emit('pagePosition', $newPage[0], initialPreload ? 'current' : 'previous');\n if (isMaster || isDetail) {\n $newPage.trigger('page:role', {\n role: isMaster ? 'master' : 'detail',\n root: !!isDetailRoot\n });\n router.emit('pageRole', $newPage[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot\n });\n }\n if (dynamicNavbar && $newNavbarEl.length > 0) {\n $newNavbarEl.addClass(`navbar-${initialPreload ? 'current' : 'previous'}${isMaster ? ' navbar-master' : ''}${isDetail ? ' navbar-master-detail' : ''}${isDetailRoot ? ' navbar-master-detail-root' : ''}`).removeAttr('aria-hidden');\n $newNavbarEl.trigger('navbar:position', {\n position: initialPreload ? 'current' : 'previous'\n });\n router.emit('navbarPosition', $newNavbarEl[0], initialPreload ? 'current' : 'previous');\n if (isMaster || isDetailRoot) {\n router.emit('navbarRole', $newNavbarEl[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot\n });\n }\n }\n\n // Remove previous page in case of \"forced\"\n let backIndex;\n if (options.force) {\n if ($oldPage.prev('.page-previous').length >= 0) {\n if (router.history.indexOf(options.route.url) >= 0) {\n backIndex = router.history.length - router.history.indexOf(options.route.url) - 1;\n router.history = router.history.slice(0, router.history.indexOf(options.route.url) + 2);\n router.propsHistory = router.propsHistory.slice(0, router.history.indexOf(options.route.url) + 2);\n view.history = router.history;\n } else if (router.history[[router.history.length - 2]]) {\n router.propsHistory[router.propsHistory.length - 2] = options.props || {};\n } else {\n router.history.unshift(router.url);\n router.propsHistory.unshift(options.props || {});\n }\n const $pageToRemove = $oldPage.prev('.page-previous');\n let $navbarToRemove;\n if (dynamicNavbar) {\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if ($pageToRemove.length > 0) {\n router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined, options);\n if ($pageToRemove[0] === masterPageEl) {\n masterPageRemoved = true;\n }\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\n }\n }\n }\n\n // Insert new page\n const newPageInDom = $newPage.parents(document).length > 0;\n const f7Component = $newPage[0].f7Component;\n function insertPage() {\n if (initialPreload) {\n if (!newPageInDom && f7Component) {\n f7Component.mount(componentEl => {\n router.$el.append(componentEl);\n });\n } else {\n router.$el.append($newPage);\n }\n }\n if ($newPage.next($oldPage).length === 0) {\n if (!newPageInDom && f7Component) {\n f7Component.mount(componentEl => {\n $(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n $newNavbarEl.insertBefore($oldNavbarEl);\n if ($oldNavbarEl.length > 0) {\n $newNavbarEl.insertBefore($oldNavbarEl);\n } else {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl);\n }\n }\n if (!newPageInDom) {\n router.pageCallback('mounted', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n } else if (options.route && options.route.route && options.route.route.keepAlive && !$newPage[0].f7PageMounted) {\n $newPage[0].f7PageMounted = true;\n router.pageCallback('mounted', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n }\n }\n if (options.preload) {\n // Insert Page\n insertPage();\n // Tab route\n if (options.route.route.tab) {\n router.tabLoad(options.route.route.tab, extend({}, options, {\n history: false,\n browserHistory: false,\n preload: true\n }));\n }\n if (isMaster) {\n $newPage.removeClass('page-master-stacked').trigger('page:masterunstack');\n router.emit('pageMasterUnstack', $newPage[0]);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage($newPage)).removeClass('navbar-master-stacked');\n router.emit('navbarMasterUnstack', app.navbar.getElByPage($newPage));\n }\n }\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n if (initialPreload) {\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'current', undefined, options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'current', undefined, options);\n }\n const $previousPages = $newPage.prevAll('.page-previous:not(.page-master)');\n if ($previousPages.length > 0) {\n $previousPages.each(pageToRemove => {\n const $pageToRemove = $(pageToRemove);\n let $navbarToRemove;\n if (dynamicNavbar) {\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined);\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\n });\n }\n router.allowPageChange = true;\n return router;\n }\n\n // History State\n if (!(device.ie || device.edge || device.firefox && !device.ios)) {\n if (router.params.browserHistory && options.browserHistory) {\n if (options.replaceState) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(view.id, {\n url: options.route.url\n }, browserHistoryRoot + router.params.browserHistorySeparator + options.route.url);\n } else if (backIndex) {\n History.go(-backIndex);\n } else {\n History.back();\n }\n }\n }\n\n // Update History\n if (options.replaceState) {\n router.history[router.history.length - 1] = options.route.url;\n router.propsHistory[router.propsHistory.length - 1] = options.props || {};\n } else {\n if (router.history.length === 1) {\n router.history.unshift(router.url);\n router.propsHistory.unshift(options.props || {});\n }\n router.history.pop();\n router.propsHistory.pop();\n }\n router.saveHistory();\n\n // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarEl.length) {\n router.currentNavbarEl = $newNavbarEl[0];\n } else {\n delete router.currentNavbarEl;\n }\n\n // Current Route\n router.currentRoute = options.route;\n\n // History State\n if (device.ie || device.edge || device.firefox && !device.ios) {\n if (router.params.browserHistory && options.browserHistory) {\n if (options.replaceState) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(view.id, {\n url: options.route.url\n }, browserHistoryRoot + router.params.browserHistorySeparator + options.route.url);\n } else if (backIndex) {\n History.go(-backIndex);\n } else {\n History.back();\n }\n }\n }\n\n // Insert Page\n insertPage();\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(options.route.route.tab, extend({}, options, {\n history: false,\n browserHistory: false\n }));\n }\n\n // Check master detail\n\n if (masterDetailEnabled && (currentIsMaster || masterPageRemoved)) {\n view.checkMasterDetailBreakpoint(false);\n }\n\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n\n // Before animation callback\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n // Animation\n function afterAnimation() {\n // Set classes\n router.setPagePosition($newPage, 'current', false);\n router.setPagePosition($oldPage, 'next', true);\n if (dynamicNavbar) {\n router.setNavbarPosition($newNavbarEl, 'current', false);\n router.setNavbarPosition($oldNavbarEl, 'next', true);\n }\n\n // After animation event\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n // Remove Old Page\n\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'next', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n router.allowPageChange = true;\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n // Preload previous page\n const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history[router.history.length - 2] && !isMaster) {\n router.back(router.history[router.history.length - 2], {\n preload: true,\n props: router.propsHistory[router.propsHistory.length - 2] || {}\n });\n }\n if (router.params.browserHistory) {\n History.clearRouterQueue();\n }\n }\n function setPositionClasses() {\n router.setPagePosition($oldPage, 'current');\n router.setPagePosition($newPage, 'previous', false);\n if (dynamicNavbar) {\n router.setNavbarPosition($oldNavbarEl, 'current');\n router.setNavbarPosition($newNavbarEl, 'previous', false);\n }\n }\n if (options.animate && !(currentIsMaster && app.width >= router.params.masterDetailBreakpoint)) {\n let transition = router.params.transition;\n if ($oldPage[0] && $oldPage[0].f7PageTransition) {\n transition = $oldPage[0].f7PageTransition;\n delete $oldPage[0].f7PageTransition;\n }\n if (options.transition) transition = options.transition;\n if (!transition && router.previousRoute && router.previousRoute.route) {\n transition = router.previousRoute.route.transition;\n }\n if (!transition && router.previousRoute && router.previousRoute.route && router.previousRoute.route.options) {\n transition = router.previousRoute.route.options.transition;\n }\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'backward', transition, () => {\n afterAnimation();\n });\n } else {\n afterAnimation();\n }\n return router;\n}\nfunction loadBack(router, backParams, backOptions, ignorePageChange) {\n if (!router.allowPageChange && !ignorePageChange) return router;\n const params = backParams;\n const options = backOptions;\n const {\n url,\n content,\n el,\n pageName,\n component,\n componentUrl\n } = params;\n if (options.route.url && router.url === options.route.url && !(options.reloadCurrent || options.reloadPrevious) && !router.params.allowDuplicateUrls) {\n router.allowPageChange = true;\n return false;\n }\n if (!options.route && url) {\n options.route = router.parseRouteUrl(url);\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return backward(router, pageEl, extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n if (url || componentUrl || component) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n backward(router, router.getPageEl(content), options);\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n backward(router, router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n backward(router, router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.pageComponentLoader({\n routerEl: router.el,\n component,\n componentUrl,\n options,\n resolve,\n reject\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router.xhrRequest(url, options).then(pageContent => {\n backward(router, router.getPageEl(pageContent), options);\n }).catch(() => {\n router.allowPageChange = true;\n });\n }\n return router;\n}\nfunction back() {\n const router = this;\n const device = getDevice();\n if (router.swipeBackActive) return router;\n let navigateUrl;\n let navigateOptions;\n let navigateProps;\n let route;\n if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'object') {\n navigateOptions = (arguments.length <= 0 ? undefined : arguments[0]) || {};\n } else {\n navigateUrl = arguments.length <= 0 ? undefined : arguments[0];\n navigateOptions = (arguments.length <= 1 ? undefined : arguments[1]) || {};\n }\n const {\n name,\n params,\n query\n } = navigateOptions;\n if (name) {\n navigateUrl = router.generateUrl({\n name,\n params,\n query\n });\n if (navigateUrl) {\n return router.back(navigateUrl, extend({}, navigateOptions, {\n name: null,\n params: null,\n query: null\n }));\n }\n return router;\n }\n const app = router.app;\n appRouterCheck(router, 'back');\n let currentRouteIsModal = router.currentRoute.modal;\n let modalType;\n if (!currentRouteIsModal) {\n 'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(modalLoadProp => {\n if (router.currentRoute.route[modalLoadProp]) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n if (currentRouteIsModal && !navigateOptions.preload) {\n const modalToClose = router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n const previousUrl = router.history[router.history.length - 2];\n let previousRoute;\n // check if previous route is modal too\n if (modalToClose && modalToClose.$el) {\n const prevOpenedModals = modalToClose.$el.prevAll('.modal-in');\n if (prevOpenedModals.length && prevOpenedModals[0].f7Modal) {\n const modalEl = prevOpenedModals[0];\n // check if current router not inside of the modalEl\n if (!router.$el.parents(modalEl).length) {\n previousRoute = modalEl.f7Modal.route;\n }\n }\n }\n if (!previousRoute) {\n previousRoute = router.findMatchingRoute(previousUrl);\n }\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl\n }\n };\n }\n if (!navigateUrl || navigateUrl.replace(/[# ]/g, '').trim().length === 0) {\n if (!previousRoute || !modalToClose) {\n return router;\n }\n }\n const forceOtherUrl = navigateOptions.force && previousRoute && navigateUrl;\n if (previousRoute && modalToClose) {\n const isBrokenBrowserHistory = device.ie || device.edge || device.firefox && !device.ios;\n const needHistoryBack = router.params.browserHistory && navigateOptions.browserHistory !== false;\n const currentRouteWithoutBrowserHistory = router.currentRoute && router.currentRoute.route && router.currentRoute.route.options && router.currentRoute.route.options.browserHistory === false;\n if (needHistoryBack && !isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {\n History.back();\n }\n router.currentRoute = previousRoute;\n router.history.pop();\n router.propsHistory.pop();\n router.saveHistory();\n if (needHistoryBack && isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {\n History.back();\n }\n router.modalRemove(modalToClose);\n if (forceOtherUrl) {\n router.navigate(navigateUrl, {\n reloadCurrent: true\n });\n }\n } else if (modalToClose) {\n router.modalRemove(modalToClose);\n if (navigateUrl) {\n router.navigate(navigateUrl, {\n reloadCurrent: true\n });\n }\n }\n return router;\n }\n let $previousPage = router.$el.children('.page-current').prevAll('.page-previous:not(.page-master)').eq(0);\n let skipMaster;\n if (router.params.masterDetailBreakpoint > 0) {\n const classes = [];\n router.$el.children('.page').each(pageEl => {\n classes.push(pageEl.className);\n });\n const $previousMaster = router.$el.children('.page-current').prevAll('.page-master').eq(0);\n if ($previousMaster.length) {\n const expectedPreviousPageUrl = router.history[router.history.length - 2];\n const expectedPreviousPageRoute = router.findMatchingRoute(expectedPreviousPageUrl);\n if (expectedPreviousPageRoute && $previousMaster[0].f7Page && expectedPreviousPageRoute.route === $previousMaster[0].f7Page.route.route) {\n $previousPage = $previousMaster;\n if (!navigateOptions.preload) {\n skipMaster = app.width >= router.params.masterDetailBreakpoint;\n }\n }\n }\n }\n if (!navigateOptions.force && $previousPage.length && !skipMaster) {\n if (router.params.browserHistory && $previousPage[0].f7Page && router.history[router.history.length - 2] !== $previousPage[0].f7Page.route.url) {\n router.back(router.history[router.history.length - 2], extend(navigateOptions, {\n force: true,\n props: router.propsHistory[router.propsHistory.length - 2] || {}\n }));\n return router;\n }\n const previousPageRoute = $previousPage[0].f7Page.route;\n processRouteQueue.call(router, previousPageRoute, router.currentRoute, () => {\n loadBack(router, {\n el: $previousPage\n }, extend(navigateOptions, {\n route: previousPageRoute\n }));\n }, () => {}, 'backward');\n return router;\n }\n\n // Navigate URL\n if (navigateUrl === '#') {\n navigateUrl = undefined;\n }\n if (navigateUrl && navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n navigateUrl = ((router.path || '/') + navigateUrl).replace('//', '/');\n }\n if (!navigateUrl && router.history.length > 1) {\n navigateUrl = router.history[router.history.length - 2];\n navigateProps = router.propsHistory[router.propsHistory.length - 2] || {};\n }\n if (skipMaster && !navigateOptions.force && router.history[router.history.length - 3]) {\n return router.back(router.history[router.history.length - 3], extend({}, navigateOptions || {}, {\n force: true,\n animate: false,\n props: router.propsHistory[router.propsHistory.length - 3] || {}\n }));\n }\n if (skipMaster && !navigateOptions.force) {\n return router;\n }\n\n // Find route to load\n route = router.findMatchingRoute(navigateUrl);\n if (!route) {\n if (navigateUrl) {\n route = {\n url: navigateUrl,\n path: navigateUrl.split('?')[0],\n query: parseUrlQuery(navigateUrl),\n route: {\n path: navigateUrl.split('?')[0],\n url: navigateUrl\n }\n };\n }\n }\n if (!route) {\n return router;\n }\n if (route.route.redirect) {\n return redirect.call(router, 'backward', route, navigateOptions);\n }\n const options = {};\n if (route.route.options) {\n extend(options, route.route.options, navigateOptions, {\n props: navigateProps || {}\n });\n } else {\n extend(options, navigateOptions, {\n props: navigateProps || {}\n });\n }\n options.route = route;\n function resolve() {\n let routerLoaded = false;\n if (route.route.keepAlive && route.route.keepAliveData) {\n loadBack(router, {\n el: route.route.keepAliveData.pageEl\n }, options);\n routerLoaded = true;\n }\n 'url content component pageName el componentUrl'.split(' ').forEach(pageLoadProp => {\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n loadBack(router, {\n [pageLoadProp]: route.route[pageLoadProp]\n }, options);\n }\n });\n if (routerLoaded) return;\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n loadBack(router, resolveParams, extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n route.route.async.call(router, {\n router,\n to: route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction: 'backward',\n app\n });\n }\n if (route.route.asyncComponent) {\n asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n if (options.preload) {\n resolve();\n } else {\n processRouteQueue.call(router, route, router.currentRoute, () => {\n if (route.route.modules) {\n app.loadModules(Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules]).then(() => {\n resolve();\n }).catch(() => {\n reject();\n });\n } else {\n resolve();\n }\n }, () => {\n reject();\n }, 'backward');\n }\n\n // Return Router\n return router;\n}\nexport { back };","import { getWindow, getDocument } from 'ssr-window';\nimport { pathToRegexp, compile } from 'path-to-regexp';\nimport $ from '../../shared/dom7.js';\nimport Framework7Class from '../../shared/class.js';\nimport { extend, nextFrame, parseUrlQuery, serializeObject, now, eventNameToColonCase } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport SwipeBack from './swipe-back.js';\nimport { refreshPage, navigate } from './navigate.js';\nimport { tabLoad, tabRemove } from './tab.js';\nimport { modalLoad, modalRemove } from './modal.js';\nimport { back } from './back.js';\nimport { clearPreviousHistory } from './clear-previous-history.js';\nimport appRouterCheck from './app-router-check.js';\nclass Router extends Framework7Class {\n constructor(app, view) {\n super({}, [typeof view === 'undefined' ? app : view]);\n const router = this;\n\n // Is App Router\n router.isAppRouter = typeof view === 'undefined';\n if (router.isAppRouter) {\n // App Router\n extend(false, router, {\n app,\n params: app.params.view,\n routes: app.routes || [],\n cache: app.cache\n });\n } else {\n // View Router\n extend(false, router, {\n app,\n view,\n viewId: view.id,\n id: view.params.routerId,\n params: view.params,\n routes: view.routes,\n history: view.history,\n propsHistory: [],\n scrollHistory: view.scrollHistory,\n cache: app.cache,\n dynamicNavbar: app.theme === 'ios' && view.params.iosDynamicNavbar,\n initialPages: [],\n initialNavbars: []\n });\n }\n\n // Install Modules\n router.useModules();\n\n // AllowPageChage\n router.allowPageChange = true;\n\n // Current Route\n let currentRoute = {};\n let previousRoute = {};\n Object.defineProperty(router, 'currentRoute', {\n enumerable: true,\n configurable: true,\n set(newRoute) {\n if (newRoute === void 0) {\n newRoute = {};\n }\n previousRoute = extend({}, currentRoute);\n currentRoute = newRoute;\n if (!currentRoute) return;\n router.url = currentRoute.url;\n router.emit('routeChange', newRoute, previousRoute, router);\n },\n get() {\n return currentRoute;\n }\n });\n Object.defineProperty(router, 'previousRoute', {\n enumerable: true,\n configurable: true,\n get() {\n return previousRoute;\n },\n set(newRoute) {\n previousRoute = newRoute;\n }\n });\n return router;\n }\n mount() {\n const router = this;\n const view = router.view;\n const document = getDocument();\n extend(false, router, {\n tempDom: document.createElement('div'),\n $el: view.$el,\n el: view.el,\n $navbarsEl: view.$navbarsEl,\n navbarsEl: view.navbarsEl\n });\n router.emit('local::mount routerMount', router);\n }\n animatableNavElements($newNavbarEl, $oldNavbarEl, toLarge, fromLarge, direction) {\n const router = this;\n const dynamicNavbar = router.dynamicNavbar;\n const animateIcon = router.params.iosAnimateNavbarBackIcon;\n let newNavEls;\n let oldNavEls;\n function animatableNavEl($el, $navbarInner) {\n const isSliding = $el.hasClass('sliding') || $navbarInner.hasClass('sliding');\n const isSubnavbar = $el.hasClass('subnavbar');\n const needsOpacityTransition = isSliding ? !isSubnavbar : true;\n const $iconEl = $el.find('.back .icon');\n let isIconLabel;\n if (isSliding && animateIcon && $el.hasClass('left') && $iconEl.length > 0 && $iconEl.next('span').length) {\n $el = $iconEl.next('span'); // eslint-disable-line\n isIconLabel = true;\n }\n return {\n $el,\n isIconLabel,\n leftOffset: $el[0].f7NavbarLeftOffset,\n rightOffset: $el[0].f7NavbarRightOffset,\n isSliding,\n isSubnavbar,\n needsOpacityTransition\n };\n }\n if (dynamicNavbar) {\n newNavEls = [];\n oldNavEls = [];\n $newNavbarEl.children('.navbar-inner').children('.left, .right, .title, .subnavbar').each(navEl => {\n const $navEl = $(navEl);\n if ($navEl.hasClass('left') && fromLarge && direction === 'forward') return;\n if ($navEl.hasClass('title') && toLarge) return;\n newNavEls.push(animatableNavEl($navEl, $newNavbarEl.children('.navbar-inner')));\n });\n if (!($oldNavbarEl.hasClass('navbar-master') && router.params.masterDetailBreakpoint > 0 && router.app.width >= router.params.masterDetailBreakpoint)) {\n $oldNavbarEl.children('.navbar-inner').children('.left, .right, .title, .subnavbar').each(navEl => {\n const $navEl = $(navEl);\n if ($navEl.hasClass('left') && toLarge && !fromLarge && direction === 'forward') return;\n if ($navEl.hasClass('left') && toLarge && direction === 'backward') return;\n if ($navEl.hasClass('title') && fromLarge) {\n return;\n }\n oldNavEls.push(animatableNavEl($navEl, $oldNavbarEl.children('.navbar-inner')));\n });\n }\n [oldNavEls, newNavEls].forEach(navEls => {\n navEls.forEach(navEl => {\n const n = navEl;\n const {\n isSliding,\n $el\n } = navEl;\n const otherEls = navEls === oldNavEls ? newNavEls : oldNavEls;\n if (!(isSliding && $el.hasClass('title') && otherEls)) return;\n otherEls.forEach(otherNavEl => {\n if (otherNavEl.isIconLabel) {\n const iconTextEl = otherNavEl.$el[0];\n n.leftOffset += iconTextEl ? iconTextEl.offsetLeft || 0 : 0;\n }\n });\n });\n });\n }\n return {\n newNavEls,\n oldNavEls\n };\n }\n animate($oldPageEl, $newPageEl, $oldNavbarEl, $newNavbarEl, direction, transition, callback) {\n const router = this;\n if (router.params.animateCustom) {\n router.params.animateCustom.apply(router, [$oldPageEl, $newPageEl, $oldNavbarEl, $newNavbarEl, direction, callback]);\n return;\n }\n const dynamicNavbar = router.dynamicNavbar;\n const ios = router.app.theme === 'ios';\n if (transition) {\n const routerCustomTransitionClass = `router-transition-custom router-transition-${transition}-${direction}`;\n // Animate\n const onCustomTransitionDone = () => {\n router.$el.removeClass(routerCustomTransitionClass);\n if (dynamicNavbar && router.$navbarsEl.length) {\n if ($newNavbarEl) {\n router.$navbarsEl.prepend($newNavbarEl);\n }\n if ($oldNavbarEl) {\n router.$navbarsEl.prepend($oldNavbarEl);\n }\n }\n if (callback) callback();\n };\n (direction === 'forward' ? $newPageEl : $oldPageEl).animationEnd(onCustomTransitionDone);\n if (dynamicNavbar) {\n if ($newNavbarEl && $newPageEl) {\n router.setNavbarPosition($newNavbarEl, '');\n $newNavbarEl.removeClass('navbar-next navbar-previous navbar-current');\n $newPageEl.prepend($newNavbarEl);\n }\n if ($oldNavbarEl && $oldPageEl) {\n router.setNavbarPosition($oldNavbarEl, '');\n $oldNavbarEl.removeClass('navbar-next navbar-previous navbar-current');\n $oldPageEl.prepend($oldNavbarEl);\n }\n }\n router.$el.addClass(routerCustomTransitionClass);\n return;\n }\n\n // Router Animation class\n const routerTransitionClass = `router-transition-${direction} router-transition`;\n let newNavEls;\n let oldNavEls;\n let fromLarge;\n let toLarge;\n let toDifferent;\n let oldIsLarge;\n let newIsLarge;\n if (ios && dynamicNavbar) {\n const betweenMasterAndDetail = router.params.masterDetailBreakpoint > 0 && router.app.width >= router.params.masterDetailBreakpoint && ($oldNavbarEl.hasClass('navbar-master') && $newNavbarEl.hasClass('navbar-master-detail') || $oldNavbarEl.hasClass('navbar-master-detail') && $newNavbarEl.hasClass('navbar-master'));\n if (!betweenMasterAndDetail) {\n oldIsLarge = $oldNavbarEl && $oldNavbarEl.hasClass('navbar-large');\n newIsLarge = $newNavbarEl && $newNavbarEl.hasClass('navbar-large');\n fromLarge = oldIsLarge && !$oldNavbarEl.hasClass('navbar-large-collapsed');\n toLarge = newIsLarge && !$newNavbarEl.hasClass('navbar-large-collapsed');\n toDifferent = fromLarge && !toLarge || toLarge && !fromLarge;\n }\n const navEls = router.animatableNavElements($newNavbarEl, $oldNavbarEl, toLarge, fromLarge, direction);\n newNavEls = navEls.newNavEls;\n oldNavEls = navEls.oldNavEls;\n }\n function animateNavbars(progress) {\n if (!(ios && dynamicNavbar)) return;\n if (progress === 1) {\n if (toLarge) {\n $newNavbarEl.addClass('router-navbar-transition-to-large');\n $oldNavbarEl.addClass('router-navbar-transition-to-large');\n }\n if (fromLarge) {\n $newNavbarEl.addClass('router-navbar-transition-from-large');\n $oldNavbarEl.addClass('router-navbar-transition-from-large');\n }\n }\n newNavEls.forEach(navEl => {\n const $el = navEl.$el;\n const offset = direction === 'forward' ? navEl.rightOffset : navEl.leftOffset;\n if (navEl.isSliding) {\n if (navEl.isSubnavbar && newIsLarge) {\n // prettier-ignore\n $el[0].style.setProperty('transform', `translate3d(${offset * (1 - progress)}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`, 'important');\n } else {\n $el.transform(`translate3d(${offset * (1 - progress)}px,0,0)`);\n }\n }\n });\n oldNavEls.forEach(navEl => {\n const $el = navEl.$el;\n const offset = direction === 'forward' ? navEl.leftOffset : navEl.rightOffset;\n if (navEl.isSliding) {\n if (navEl.isSubnavbar && oldIsLarge) {\n $el.transform(`translate3d(${offset * progress}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`);\n } else {\n $el.transform(`translate3d(${offset * progress}px,0,0)`);\n }\n }\n });\n }\n\n // AnimationEnd Callback\n function onDone() {\n if (router.dynamicNavbar) {\n if ($newNavbarEl) {\n $newNavbarEl.removeClass('router-navbar-transition-to-large router-navbar-transition-from-large');\n $newNavbarEl.addClass('navbar-no-title-large-transition');\n nextFrame(() => {\n $newNavbarEl.removeClass('navbar-no-title-large-transition');\n });\n }\n if ($oldNavbarEl) {\n $oldNavbarEl.removeClass('router-navbar-transition-to-large router-navbar-transition-from-large');\n }\n if ($newNavbarEl.hasClass('sliding') || $newNavbarEl.children('.navbar-inner.sliding').length) {\n $newNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n } else {\n $newNavbarEl.find('.sliding').transform('');\n }\n if ($oldNavbarEl.hasClass('sliding') || $oldNavbarEl.children('.navbar-inner.sliding').length) {\n $oldNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n } else {\n $oldNavbarEl.find('.sliding').transform('');\n }\n }\n router.$el.removeClass(routerTransitionClass);\n if (callback) callback();\n }\n\n // eslint-disable-next-line\n (direction === 'forward' ? $newPageEl : ios ? $oldPageEl : $newPageEl).animationEnd(() => {\n onDone();\n });\n\n // Animate\n if (dynamicNavbar) {\n // Prepare Navbars\n animateNavbars(0);\n nextFrame(() => {\n // Add class, start animation\n router.$el.addClass(routerTransitionClass);\n if (toDifferent) {\n // eslint-disable-next-line\n router.el._clientLeft = router.el.clientLeft;\n }\n animateNavbars(1);\n });\n } else {\n // Add class, start animation\n router.$el.addClass(routerTransitionClass);\n }\n }\n removeModal(modalEl) {\n const router = this;\n router.removeEl(modalEl);\n }\n // eslint-disable-next-line\n removeTabContent(tabEl) {\n const $tabEl = $(tabEl);\n $tabEl.html('');\n }\n removeNavbar(el) {\n const router = this;\n router.removeEl(el);\n }\n removePage(el) {\n const $el = $(el);\n const f7Page = $el && $el[0] && $el[0].f7Page;\n const router = this;\n if (f7Page && f7Page.route && f7Page.route.route && f7Page.route.route.keepAlive) {\n $el.remove();\n return;\n }\n router.removeEl(el);\n }\n removeEl(el) {\n if (!el) return;\n const router = this;\n const $el = $(el);\n if ($el.length === 0) return;\n $el.find('.tab').each(tabEl => {\n $(tabEl).children().each(tabChild => {\n if (tabChild.f7Component) {\n $(tabChild).trigger('tab:beforeremove');\n tabChild.f7Component.destroy();\n }\n });\n });\n if ($el[0].f7Component && $el[0].f7Component.destroy) {\n $el[0].f7Component.destroy();\n }\n if (!router.params.removeElements) {\n return;\n }\n if (router.params.removeElementsWithTimeout) {\n setTimeout(() => {\n $el.remove();\n }, router.params.removeElementsTimeout);\n } else {\n $el.remove();\n }\n }\n getPageEl(content) {\n const router = this;\n if (typeof content === 'string') {\n router.tempDom.innerHTML = content;\n } else {\n if ($(content).hasClass('page')) {\n return content;\n }\n router.tempDom.innerHTML = '';\n $(router.tempDom).append(content);\n }\n return router.findElement('.page', router.tempDom);\n }\n findElement(stringSelector, container) {\n const router = this;\n const view = router.view;\n const app = router.app;\n\n // Modals Selector\n const modalsSelector = '.popup, .dialog, .popover, .actions-modal, .sheet-modal, .login-screen, .page';\n const $container = $(container);\n const selector = stringSelector;\n let found = $container.find(selector).filter(el => $(el).parents(modalsSelector).length === 0);\n if (found.length > 1) {\n if (typeof view.selector === 'string') {\n // Search in related view\n found = $container.find(`${view.selector} ${selector}`);\n }\n if (found.length > 1) {\n // Search in main view\n found = $container.find(`.${app.params.viewMainClass} ${selector}`);\n }\n }\n if (found.length === 1) return found;\n found = router.findElement(selector, $container);\n if (found && found.length === 1) return found;\n if (found && found.length > 1) return $(found[0]);\n return undefined;\n }\n flattenRoutes(routes) {\n if (routes === void 0) {\n routes = this.routes;\n }\n const router = this;\n let flattenedRoutes = [];\n routes.forEach(route => {\n let hasTabRoutes = false;\n if ('tabs' in route && route.tabs) {\n const mergedPathsRoutes = route.tabs.map(tabRoute => {\n const tRoute = extend({}, route, {\n path: `${route.path}/${tabRoute.path}`.replace('///', '/').replace('//', '/'),\n parentPath: route.path,\n tab: tabRoute\n });\n delete tRoute.tabs;\n delete tRoute.routes;\n return tRoute;\n });\n hasTabRoutes = true;\n flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));\n }\n if ('detailRoutes' in route) {\n const mergedPathsRoutes = route.detailRoutes.map(detailRoute => {\n const dRoute = extend({}, detailRoute);\n dRoute.masterRoute = route;\n dRoute.masterRoutePath = route.path;\n return dRoute;\n });\n flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(mergedPathsRoutes));\n }\n if ('routes' in route) {\n const mergedPathsRoutes = route.routes.map(childRoute => {\n const cRoute = extend({}, childRoute);\n cRoute.path = `${route.path}/${cRoute.path}`.replace('///', '/').replace('//', '/');\n return cRoute;\n });\n if (hasTabRoutes) {\n flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));\n } else {\n flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(mergedPathsRoutes));\n }\n }\n if (!('routes' in route) && !('tabs' in route && route.tabs) && !('detailRoutes' in route)) {\n flattenedRoutes.push(route);\n }\n });\n return flattenedRoutes;\n }\n\n // eslint-disable-next-line\n parseRouteUrl(url) {\n if (!url) return {};\n const query = parseUrlQuery(url);\n const hash = url.split('#')[1];\n const params = {};\n const path = url.split('#')[0].split('?')[0];\n return {\n query,\n hash,\n params,\n url,\n path\n };\n }\n generateUrl(parameters) {\n if (parameters === void 0) {\n parameters = {};\n }\n if (typeof parameters === 'string') {\n return parameters;\n }\n const {\n name,\n path,\n params,\n query\n } = parameters;\n if (!name && !path) {\n throw new Error('Framework7: \"name\" or \"path\" parameter is required');\n }\n const router = this;\n const route = name ? router.findRouteByKey('name', name) : router.findRouteByKey('path', path);\n if (!route) {\n if (name) {\n throw new Error(`Framework7: route with name \"${name}\" not found`);\n } else {\n throw new Error(`Framework7: route with path \"${path}\" not found`);\n }\n }\n const url = router.constructRouteUrl(route, {\n params,\n query\n });\n if (url === '') {\n return '/';\n }\n if (!url) {\n throw new Error(`Framework7: can't construct URL for route with name \"${name}\"`);\n }\n return url;\n }\n\n // eslint-disable-next-line\n constructRouteUrl(route, _temp) {\n let {\n params,\n query\n } = _temp === void 0 ? {} : _temp;\n const {\n path\n } = route;\n const toUrl = compile(path);\n let url;\n try {\n url = toUrl(params || {});\n } catch (error) {\n throw new Error(`Framework7: error constructing route URL from passed params:\\nRoute: ${path}\\n${error.toString()}`);\n }\n if (query) {\n if (typeof query === 'string') url += `?${query}`;else if (Object.keys(query).length) url += `?${serializeObject(query)}`;\n }\n return url;\n }\n findTabRouteUrl(tabEl) {\n const router = this;\n const $tabEl = $(tabEl);\n const parentPath = router.currentRoute.route.parentPath;\n const tabId = $tabEl.attr('id');\n const flattenedRoutes = router.flattenRoutes(router.routes);\n let foundTabRouteUrl;\n flattenedRoutes.forEach(route => {\n if (route.parentPath === parentPath && route.tab && route.tab.id === tabId) {\n if (router.currentRoute.params && Object.keys(router.currentRoute.params).length > 0) {\n foundTabRouteUrl = router.constructRouteUrl(route, {\n params: router.currentRoute.params,\n query: router.currentRoute.query\n });\n } else {\n foundTabRouteUrl = route.path;\n }\n }\n });\n return foundTabRouteUrl;\n }\n findRouteByKey(key, value) {\n const router = this;\n const routes = router.routes;\n const flattenedRoutes = router.flattenRoutes(routes);\n let matchingRoute;\n flattenedRoutes.forEach(route => {\n if (matchingRoute) return;\n if (route[key] === value) {\n matchingRoute = route;\n }\n });\n return matchingRoute;\n }\n findMatchingRoute(url) {\n if (!url) return undefined;\n const router = this;\n const routes = router.routes;\n const flattenedRoutes = router.flattenRoutes(routes);\n const {\n path,\n query,\n hash,\n params\n } = router.parseRouteUrl(url);\n let matchingRoute;\n flattenedRoutes.forEach(route => {\n if (matchingRoute) return;\n const keys = [];\n const pathsToMatch = [route.path || '/'];\n if (route.alias) {\n if (typeof route.alias === 'string') pathsToMatch.push(route.alias);else if (Array.isArray(route.alias)) {\n route.alias.forEach(aliasPath => {\n pathsToMatch.push(aliasPath);\n });\n }\n }\n let matched;\n pathsToMatch.forEach(pathToMatch => {\n if (matched) return;\n matched = pathToRegexp(pathToMatch, keys).exec(path || '/');\n });\n if (matched) {\n keys.forEach((keyObj, index) => {\n if (typeof keyObj.name === 'number') return;\n const paramValue = matched[index + 1];\n if (typeof paramValue === 'undefined' || paramValue === null) {\n params[keyObj.name] = paramValue;\n } else {\n params[keyObj.name] = decodeURIComponent(paramValue);\n }\n });\n let parentPath;\n if (route.parentPath) {\n parentPath = (path || '/').split('/').slice(0, route.parentPath.split('/').length - 1).join('/');\n }\n matchingRoute = {\n query,\n hash,\n params,\n url,\n path: path || '/',\n parentPath,\n route,\n name: route.name\n };\n }\n });\n return matchingRoute;\n }\n\n // eslint-disable-next-line\n replaceRequestUrlParams(url, options) {\n if (url === void 0) {\n url = '';\n }\n if (options === void 0) {\n options = {};\n }\n let compiledUrl = url;\n if (typeof compiledUrl === 'string' && compiledUrl.indexOf('{{') >= 0 && options && options.route && options.route.params && Object.keys(options.route.params).length) {\n Object.keys(options.route.params).forEach(paramName => {\n const regExp = new RegExp(`{{${paramName}}}`, 'g');\n compiledUrl = compiledUrl.replace(regExp, options.route.params[paramName] || '');\n });\n }\n return compiledUrl;\n }\n removeFromXhrCache(url) {\n const router = this;\n const xhrCache = router.cache.xhr;\n let index = false;\n for (let i = 0; i < xhrCache.length; i += 1) {\n if (xhrCache[i].url === url) index = i;\n }\n if (index !== false) xhrCache.splice(index, 1);\n }\n xhrRequest(requestUrl, options) {\n const router = this;\n const params = router.params;\n const {\n ignoreCache\n } = options;\n let url = requestUrl;\n let hasQuery = url.indexOf('?') >= 0;\n if (params.passRouteQueryToRequest && options && options.route && options.route.query && Object.keys(options.route.query).length) {\n url += `${hasQuery ? '&' : '?'}${serializeObject(options.route.query)}`;\n hasQuery = true;\n }\n if (params.passRouteParamsToRequest && options && options.route && options.route.params && Object.keys(options.route.params).length) {\n url += `${hasQuery ? '&' : '?'}${serializeObject(options.route.params)}`;\n hasQuery = true;\n }\n if (url.indexOf('{{') >= 0) {\n url = router.replaceRequestUrlParams(url, options);\n }\n // should we ignore get params or not\n if (params.xhrCacheIgnoreGetParameters && url.indexOf('?') >= 0) {\n url = url.split('?')[0];\n }\n return new Promise((resolve, reject) => {\n if (params.xhrCache && !ignoreCache && url.indexOf('nocache') < 0 && params.xhrCacheIgnore.indexOf(url) < 0) {\n for (let i = 0; i < router.cache.xhr.length; i += 1) {\n const cachedUrl = router.cache.xhr[i];\n if (cachedUrl.url === url) {\n // Check expiration\n if (now() - cachedUrl.time < params.xhrCacheDuration) {\n // Load from cache\n resolve(cachedUrl.content);\n return;\n }\n }\n }\n }\n router.xhrAbortController = new AbortController();\n let fetchRes;\n fetch(url, {\n signal: router.xhrAbortController.signal,\n method: 'GET'\n }).then(res => {\n fetchRes = res;\n return res.text();\n }).then(responseText => {\n const {\n status\n } = fetchRes;\n router.emit('routerAjaxComplete', fetchRes);\n if (status !== 'error' && status !== 'timeout' && status >= 200 && status < 300 || status === 0) {\n if (params.xhrCache && responseText !== '') {\n router.removeFromXhrCache(url);\n router.cache.xhr.push({\n url,\n time: now(),\n content: responseText\n });\n }\n router.emit('routerAjaxSuccess', fetchRes, options);\n resolve(responseText);\n } else {\n router.emit('routerAjaxError', fetchRes, options);\n reject(fetchRes);\n }\n }).catch(err => {\n reject(err);\n });\n });\n }\n setNavbarPosition($el, position, ariaHidden) {\n const router = this;\n $el.removeClass('navbar-previous navbar-current navbar-next');\n if (position) {\n $el.addClass(`navbar-${position}`);\n }\n if (ariaHidden === false) {\n $el.removeAttr('aria-hidden');\n } else if (ariaHidden === true) {\n $el.attr('aria-hidden', 'true');\n }\n $el.trigger('navbar:position', {\n position\n });\n router.emit('navbarPosition', $el[0], position);\n }\n setPagePosition($el, position, ariaHidden) {\n const router = this;\n $el.removeClass('page-previous page-current page-next');\n $el.addClass(`page-${position}`);\n if (ariaHidden === false) {\n $el.removeAttr('aria-hidden');\n } else if (ariaHidden === true) {\n $el.attr('aria-hidden', 'true');\n }\n $el.trigger('page:position', {\n position\n });\n router.emit('pagePosition', $el[0], position);\n }\n\n // Remove theme elements\n removeThemeElements(el) {\n const router = this;\n const theme = router.app.theme;\n let toRemove;\n if (theme === 'ios') {\n toRemove = '.md-only, .if-md, .if-not-ios, .not-ios';\n } else if (theme === 'md') {\n toRemove = '.ios-only, .if-ios, .if-not-md, .not-md';\n }\n $(el).find(toRemove).remove();\n }\n getPageData(pageEl, navbarEl, from, to, route, pageFromEl) {\n if (route === void 0) {\n route = {};\n }\n const router = this;\n const $pageEl = $(pageEl).eq(0);\n const $navbarEl = $(navbarEl).eq(0);\n const currentPage = $pageEl[0].f7Page || {};\n let direction;\n let pageFrom;\n if (from === 'next' && to === 'current' || from === 'current' && to === 'previous') direction = 'forward';\n if (from === 'current' && to === 'next' || from === 'previous' && to === 'current') direction = 'backward';\n if (currentPage && !currentPage.fromPage) {\n const $pageFromEl = $(pageFromEl);\n if ($pageFromEl.length) {\n pageFrom = $pageFromEl[0].f7Page;\n }\n }\n pageFrom = currentPage.pageFrom || pageFrom;\n if (pageFrom && pageFrom.pageFrom) {\n pageFrom.pageFrom = null;\n }\n const page = {\n app: router.app,\n view: router.view,\n router,\n $el: $pageEl,\n el: $pageEl[0],\n $pageEl,\n pageEl: $pageEl[0],\n $navbarEl,\n navbarEl: $navbarEl[0],\n name: $pageEl.attr('data-name'),\n position: from,\n from,\n to,\n direction,\n route: currentPage.route ? currentPage.route : route,\n pageFrom\n };\n $pageEl[0].f7Page = page;\n return page;\n }\n\n // Callbacks\n pageCallback(callback, pageEl, navbarEl, from, to, options, pageFromEl) {\n if (options === void 0) {\n options = {};\n }\n if (!pageEl) return;\n const router = this;\n const $pageEl = $(pageEl);\n if (!$pageEl.length) return;\n const $navbarEl = $(navbarEl);\n const {\n route\n } = options;\n const restoreScrollTopOnBack = router.params.restoreScrollTopOnBack && !(router.params.masterDetailBreakpoint > 0 && $pageEl.hasClass('page-master') && router.app.width >= router.params.masterDetailBreakpoint);\n const keepAlive = $pageEl[0].f7Page && $pageEl[0].f7Page.route && $pageEl[0].f7Page.route.route && $pageEl[0].f7Page.route.route.keepAlive;\n if (callback === 'beforeRemove' && keepAlive) {\n callback = 'beforeUnmount'; // eslint-disable-line\n }\n\n const camelName = `page${callback[0].toUpperCase() + callback.slice(1, callback.length)}`;\n const colonName = `page:${callback.toLowerCase()}`;\n let page = {};\n if (callback === 'beforeRemove' && $pageEl[0].f7Page) {\n page = extend($pageEl[0].f7Page, {\n from,\n to,\n position: from\n });\n } else {\n page = router.getPageData($pageEl[0], $navbarEl[0], from, to, route, pageFromEl);\n }\n page.swipeBack = !!options.swipeBack;\n const {\n on = {},\n once = {}\n } = options.route ? options.route.route : {};\n if (options.on) {\n extend(on, options.on);\n }\n if (options.once) {\n extend(once, options.once);\n }\n function attachEvents() {\n if ($pageEl[0].f7RouteEventsAttached) return;\n $pageEl[0].f7RouteEventsAttached = true;\n if (on && Object.keys(on).length > 0) {\n $pageEl[0].f7RouteEventsOn = on;\n Object.keys(on).forEach(eventName => {\n on[eventName] = on[eventName].bind(router);\n $pageEl.on(eventNameToColonCase(eventName), on[eventName]);\n });\n }\n if (once && Object.keys(once).length > 0) {\n $pageEl[0].f7RouteEventsOnce = once;\n Object.keys(once).forEach(eventName => {\n once[eventName] = once[eventName].bind(router);\n $pageEl.once(eventNameToColonCase(eventName), once[eventName]);\n });\n }\n }\n function detachEvents() {\n if (!$pageEl[0].f7RouteEventsAttached) return;\n if ($pageEl[0].f7RouteEventsOn) {\n Object.keys($pageEl[0].f7RouteEventsOn).forEach(eventName => {\n $pageEl.off(eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOn[eventName]);\n });\n }\n if ($pageEl[0].f7RouteEventsOnce) {\n Object.keys($pageEl[0].f7RouteEventsOnce).forEach(eventName => {\n $pageEl.off(eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOnce[eventName]);\n });\n }\n $pageEl[0].f7RouteEventsAttached = null;\n $pageEl[0].f7RouteEventsOn = null;\n $pageEl[0].f7RouteEventsOnce = null;\n delete $pageEl[0].f7RouteEventsAttached;\n delete $pageEl[0].f7RouteEventsOn;\n delete $pageEl[0].f7RouteEventsOnce;\n }\n if (callback === 'mounted') {\n attachEvents();\n }\n if (callback === 'init') {\n if (restoreScrollTopOnBack && (from === 'previous' || !from) && to === 'current' && router.scrollHistory[page.route.url] && !$pageEl.hasClass('no-restore-scroll')) {\n let $pageContent = $pageEl.find('.page-content');\n if ($pageContent.length > 0) {\n // eslint-disable-next-line\n $pageContent = $pageContent.filter(pageContentEl => {\n return $(pageContentEl).parents('.tab:not(.tab-active)').length === 0 && !$(pageContentEl).is('.tab:not(.tab-active)');\n });\n }\n $pageContent.scrollTop(router.scrollHistory[page.route.url]);\n }\n attachEvents();\n if ($pageEl[0].f7PageInitialized) {\n $pageEl.trigger('page:reinit', page);\n router.emit('pageReinit', page);\n return;\n }\n $pageEl[0].f7PageInitialized = true;\n }\n if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'previous') {\n // Save scroll position\n let $pageContent = $pageEl.find('.page-content');\n if ($pageContent.length > 0) {\n // eslint-disable-next-line\n $pageContent = $pageContent.filter(pageContentEl => {\n return $(pageContentEl).parents('.tab:not(.tab-active)').length === 0 && !$(pageContentEl).is('.tab:not(.tab-active)');\n });\n }\n router.scrollHistory[page.route.url] = $pageContent.scrollTop();\n }\n if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'next') {\n // Delete scroll position\n delete router.scrollHistory[page.route.url];\n }\n $pageEl.trigger(colonName, page);\n router.emit(camelName, page);\n if (callback === 'beforeRemove' || callback === 'beforeUnmount') {\n detachEvents();\n if (!keepAlive) {\n if ($pageEl[0].f7Page && $pageEl[0].f7Page.navbarEl) {\n delete $pageEl[0].f7Page.navbarEl.f7Page;\n }\n $pageEl[0].f7Page = null;\n }\n }\n }\n saveHistory() {\n const router = this;\n const window = getWindow();\n router.view.history = router.history;\n if (router.params.browserHistory && router.params.browserHistoryStoreHistory && window.localStorage) {\n window.localStorage[`f7router-${router.view.id}-history`] = JSON.stringify(router.history);\n }\n }\n restoreHistory() {\n const router = this;\n const window = getWindow();\n if (router.params.browserHistory && router.params.browserHistoryStoreHistory && window.localStorage && window.localStorage[`f7router-${router.view.id}-history`]) {\n router.history = JSON.parse(window.localStorage[`f7router-${router.view.id}-history`]);\n router.view.history = router.history;\n }\n }\n clearHistory() {\n const router = this;\n router.history = [];\n if (router.view) router.view.history = [];\n router.saveHistory();\n }\n updateCurrentUrl(newUrl) {\n const router = this;\n appRouterCheck(router, 'updateCurrentUrl');\n // Update history\n if (router.history.length) {\n router.history[router.history.length - 1] = newUrl;\n } else {\n router.history.push(newUrl);\n }\n\n // Update current route params\n const {\n query,\n hash,\n params,\n url,\n path\n } = router.parseRouteUrl(newUrl);\n if (router.currentRoute) {\n extend(router.currentRoute, {\n query,\n hash,\n params,\n url,\n path\n });\n }\n if (router.params.browserHistory) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(router.view.id, {\n url: newUrl\n }, browserHistoryRoot + router.params.browserHistorySeparator + newUrl);\n }\n\n // Save History\n router.saveHistory();\n router.emit('routeUrlUpdate', router.currentRoute, router);\n }\n getInitialUrl() {\n const router = this;\n if (router.initialUrl) {\n return {\n initialUrl: router.initialUrl,\n historyRestored: router.historyRestored\n };\n }\n const {\n app,\n view\n } = router;\n const document = getDocument();\n const window = getWindow();\n const location = app.params.url && typeof app.params.url === 'string' && typeof URL !== 'undefined' ? new URL(app.params.url) : document.location;\n let initialUrl = router.params.url;\n let documentUrl = location.href.split(location.origin)[1];\n let historyRestored;\n const {\n browserHistory,\n browserHistoryOnLoad,\n browserHistorySeparator\n } = router.params;\n let {\n browserHistoryRoot\n } = router.params;\n if ((window.cordova || window.Capacitor && window.Capacitor.isNative) && browserHistory && !browserHistorySeparator && !browserHistoryRoot && location.pathname.indexOf('index.html')) {\n // eslint-disable-next-line\n console.warn('Framework7: wrong or not complete browserHistory configuration, trying to guess browserHistoryRoot');\n browserHistoryRoot = location.pathname.split('index.html')[0];\n }\n if (!browserHistory || !browserHistoryOnLoad) {\n if (!initialUrl) {\n initialUrl = documentUrl;\n }\n if (location.search && initialUrl.indexOf('?') < 0) {\n initialUrl += location.search;\n }\n if (location.hash && initialUrl.indexOf('#') < 0) {\n initialUrl += location.hash;\n }\n } else {\n if (browserHistoryRoot && documentUrl.indexOf(browserHistoryRoot) >= 0) {\n documentUrl = documentUrl.substring(documentUrl.indexOf(browserHistoryRoot) + browserHistoryRoot.length);\n if (documentUrl === '') documentUrl = '/';\n }\n if (browserHistorySeparator.length > 0 && documentUrl.indexOf(browserHistorySeparator) >= 0) {\n initialUrl = documentUrl.substring(documentUrl.indexOf(browserHistorySeparator) + browserHistorySeparator.length);\n } else {\n initialUrl = documentUrl;\n }\n router.restoreHistory();\n if (router.history.indexOf(initialUrl) >= 0) {\n router.history = router.history.slice(0, router.history.indexOf(initialUrl) + 1);\n } else if (router.params.url === initialUrl) {\n router.history = [initialUrl];\n } else if (History.state && History.state[view.id] && History.state[view.id].url === router.history[router.history.length - 1]) {\n initialUrl = router.history[router.history.length - 1];\n } else {\n router.history = [documentUrl.split(browserHistorySeparator)[0] || '/', initialUrl];\n }\n if (router.history.length > 1) {\n historyRestored = true;\n } else {\n router.history = [];\n }\n router.saveHistory();\n }\n router.initialUrl = initialUrl;\n router.historyRestored = historyRestored;\n return {\n initialUrl,\n historyRestored\n };\n }\n init() {\n const router = this;\n const {\n app,\n view\n } = router;\n const document = getDocument();\n router.mount();\n const {\n initialUrl,\n historyRestored\n } = router.getInitialUrl();\n\n // Init Swipeback\n if (view && router.params.iosSwipeBack && app.theme === 'ios' || view && router.params.mdSwipeBack && app.theme === 'md') {\n SwipeBack(router);\n }\n const {\n browserHistory,\n browserHistoryOnLoad,\n browserHistoryAnimateOnLoad,\n browserHistoryInitialMatch\n } = router.params;\n let currentRoute;\n if (router.history.length > 1) {\n // Will load page\n const initUrl = browserHistoryInitialMatch ? initialUrl : router.history[0];\n currentRoute = router.findMatchingRoute(initUrl);\n if (!currentRoute) {\n currentRoute = extend(router.parseRouteUrl(initUrl), {\n route: {\n url: initUrl,\n path: initUrl.split('?')[0]\n }\n });\n }\n } else {\n // Don't load page\n currentRoute = router.findMatchingRoute(initialUrl);\n if (!currentRoute) {\n currentRoute = extend(router.parseRouteUrl(initialUrl), {\n route: {\n url: initialUrl,\n path: initialUrl.split('?')[0]\n }\n });\n }\n }\n if (router.$el.children('.page').length === 0 && initialUrl && router.params.loadInitialPage) {\n // No pages presented in DOM, reload new page\n router.navigate(initialUrl, {\n initial: true,\n reloadCurrent: true,\n browserHistory: false,\n animate: false,\n once: {\n modalOpen() {\n if (!historyRestored) return;\n const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 1) {\n router.back({\n preload: true\n });\n }\n },\n pageAfterIn() {\n if (!historyRestored) return;\n const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 1) {\n router.back({\n preload: true\n });\n }\n }\n }\n });\n } else if (router.$el.children('.page').length) {\n // Init current DOM page\n let hasTabRoute;\n router.currentRoute = currentRoute;\n router.$el.children('.page').each(pageEl => {\n const $pageEl = $(pageEl);\n let $navbarEl;\n router.setPagePosition($pageEl, 'current');\n if (router.dynamicNavbar) {\n $navbarEl = $pageEl.children('.navbar');\n if ($navbarEl.length > 0) {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n router.setNavbarPosition($navbarEl, 'current');\n router.$navbarsEl.append($navbarEl);\n if ($navbarEl.children('.title-large').length) {\n $navbarEl.addClass('navbar-large');\n }\n $pageEl.children('.navbar').remove();\n } else {\n router.$navbarsEl.addClass('navbar-hidden');\n if ($navbarEl.children('.title-large').length) {\n router.$navbarsEl.addClass('navbar-hidden navbar-large-hidden');\n }\n }\n }\n if (router.currentRoute && router.currentRoute.route && (router.currentRoute.route.master === true || typeof router.currentRoute.route.master === 'function' && router.currentRoute.route.master(app, router)) && router.params.masterDetailBreakpoint > 0) {\n $pageEl.addClass('page-master');\n $pageEl.trigger('page:role', {\n role: 'master'\n });\n if ($navbarEl && $navbarEl.length) {\n $navbarEl.addClass('navbar-master');\n }\n view.checkMasterDetailBreakpoint();\n }\n const initOptions = {\n route: router.currentRoute\n };\n if (router.currentRoute && router.currentRoute.route && router.currentRoute.route.options) {\n extend(initOptions, router.currentRoute.route.options);\n }\n router.currentPageEl = $pageEl[0];\n if (router.dynamicNavbar && $navbarEl.length) {\n router.currentNavbarEl = $navbarEl[0];\n }\n router.removeThemeElements($pageEl);\n if (router.dynamicNavbar && $navbarEl.length) {\n router.removeThemeElements($navbarEl);\n }\n if (initOptions.route.route.tab) {\n hasTabRoute = true;\n router.tabLoad(initOptions.route.route.tab, extend({}, initOptions));\n }\n router.pageCallback('init', $pageEl, $navbarEl, 'current', undefined, initOptions);\n router.pageCallback('beforeIn', $pageEl, $navbarEl, 'current', undefined, initOptions);\n router.pageCallback('afterIn', $pageEl, $navbarEl, 'current', undefined, initOptions);\n });\n if (historyRestored) {\n if (browserHistoryInitialMatch) {\n const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 1) {\n router.back({\n preload: true\n });\n }\n } else {\n router.navigate(initialUrl, {\n initial: true,\n browserHistory: false,\n history: false,\n animate: browserHistoryAnimateOnLoad,\n once: {\n pageAfterIn() {\n const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 2) {\n router.back({\n preload: true\n });\n }\n }\n }\n });\n }\n }\n if (!historyRestored && !hasTabRoute) {\n router.history.push(initialUrl);\n router.saveHistory();\n }\n }\n if (initialUrl && browserHistory && browserHistoryOnLoad && (!History.state || !History.state[view.id])) {\n History.initViewState(view.id, {\n url: initialUrl\n });\n }\n router.emit('local::init routerInit', router);\n }\n destroy() {\n let router = this;\n router.emit('local::destroy routerDestroy', router);\n\n // Delete props & methods\n Object.keys(router).forEach(routerProp => {\n router[routerProp] = null;\n delete router[routerProp];\n });\n router = null;\n }\n}\n\n// Load\nRouter.prototype.navigate = navigate;\nRouter.prototype.refreshPage = refreshPage;\n// Tab\nRouter.prototype.tabLoad = tabLoad;\nRouter.prototype.tabRemove = tabRemove;\n// Modal\nRouter.prototype.modalLoad = modalLoad;\nRouter.prototype.modalRemove = modalRemove;\n// Back\nRouter.prototype.back = back;\n// Clear history\nRouter.prototype.clearPreviousHistory = clearPreviousHistory;\nexport default Router;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport asyncComponent from './async-component.js';\nfunction tabLoad(tabRoute, loadOptions) {\n if (loadOptions === void 0) {\n loadOptions = {};\n }\n const router = this;\n const options = extend({\n animate: router.params.animate,\n browserHistory: true,\n history: true,\n parentPageEl: null,\n preload: false,\n on: {}\n }, loadOptions);\n let currentRoute;\n let previousRoute;\n if (options.route) {\n // Set Route\n if (!options.preload && options.route !== router.currentRoute) {\n previousRoute = router.previousRoute;\n router.currentRoute = options.route;\n }\n if (options.preload) {\n currentRoute = options.route;\n previousRoute = router.currentRoute;\n } else {\n currentRoute = router.currentRoute;\n if (!previousRoute) previousRoute = router.previousRoute;\n }\n\n // Update Browser History\n if (router.params.browserHistory && options.browserHistory && !options.reloadPrevious) {\n History[router.params.browserHistoryTabs](router.view.id, {\n url: options.route.url\n }, (router.params.browserHistoryRoot || '') + router.params.browserHistorySeparator + options.route.url);\n }\n\n // Update Router History\n if (options.history) {\n router.history[Math.max(router.history.length - 1, 0)] = options.route.url;\n router.saveHistory();\n }\n }\n\n // Show Tab\n const $parentPageEl = $(options.parentPageEl || router.currentPageEl);\n let tabEl;\n if ($parentPageEl.length && $parentPageEl.find(`#${tabRoute.id}`).length) {\n tabEl = $parentPageEl.find(`#${tabRoute.id}`).eq(0);\n } else if (router.view.selector) {\n tabEl = `${router.view.selector} #${tabRoute.id}`;\n } else {\n tabEl = `#${tabRoute.id}`;\n }\n const tabShowResult = router.app.tab.show({\n tabEl,\n animate: options.animate,\n tabRoute: options.route\n });\n const {\n $newTabEl,\n $oldTabEl,\n animated,\n onTabsChanged\n } = tabShowResult;\n if ($newTabEl && $newTabEl.parents('.page').length > 0 && options.route) {\n const tabParentPageData = $newTabEl.parents('.page')[0].f7Page;\n if (tabParentPageData && options.route) {\n tabParentPageData.route = options.route;\n }\n }\n\n // Tab Content Loaded\n function onTabLoaded(contentEl) {\n // Remove theme elements\n router.removeThemeElements($newTabEl);\n let tabEventTarget = $newTabEl;\n if (typeof contentEl !== 'string') tabEventTarget = $(contentEl);\n tabEventTarget.trigger('tab:init tab:mounted', tabRoute);\n router.emit('tabInit tabMounted', $newTabEl[0], tabRoute);\n if ($oldTabEl && $oldTabEl.length) {\n if (animated) {\n onTabsChanged(() => {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n }\n }\n }\n if ($newTabEl[0].f7RouterTabLoaded) {\n if (!$oldTabEl || !$oldTabEl.length) return router;\n if (animated) {\n onTabsChanged(() => {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n }\n return router;\n }\n\n // Load Tab Content\n function loadTab(loadTabParams, loadTabOptions) {\n // Load Tab Props\n const {\n url,\n content,\n el,\n component,\n componentUrl\n } = loadTabParams;\n // Component/Template Callbacks\n function resolve(contentEl) {\n router.allowPageChange = true;\n if (!contentEl) return;\n if (typeof contentEl === 'string') {\n $newTabEl.html(contentEl);\n } else {\n $newTabEl.html('');\n if (contentEl.f7Component) {\n contentEl.f7Component.mount(componentEl => {\n $newTabEl.append(componentEl);\n });\n } else {\n $newTabEl.append(contentEl);\n }\n }\n $newTabEl[0].f7RouterTabLoaded = true;\n onTabLoaded(contentEl);\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n if (content) {\n resolve(content);\n } else if (el) {\n resolve(el);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.tabComponentLoader({\n tabEl: $newTabEl[0],\n component,\n componentUrl,\n options: loadTabOptions,\n resolve,\n reject\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router.xhrRequest(url, loadTabOptions).then(tabContent => {\n resolve(tabContent);\n }).catch(() => {\n router.allowPageChange = true;\n });\n }\n }\n let hasContentLoadProp;\n 'url content component el componentUrl'.split(' ').forEach(tabLoadProp => {\n if (tabRoute[tabLoadProp]) {\n hasContentLoadProp = true;\n loadTab({\n [tabLoadProp]: tabRoute[tabLoadProp]\n }, options);\n }\n });\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadTab(resolveParams, extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (tabRoute.async) {\n tabRoute.async.call(router, {\n router,\n to: currentRoute,\n from: previousRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n app: router.app\n });\n } else if (tabRoute.asyncComponent) {\n asyncComponent(router, tabRoute.asyncComponent, asyncResolve, asyncReject);\n } else if (!hasContentLoadProp) {\n router.allowPageChange = true;\n }\n return router;\n}\nfunction tabRemove($oldTabEl, $newTabEl, tabRoute) {\n const router = this;\n let hasTabComponentChild;\n if ($oldTabEl[0]) {\n $oldTabEl[0].f7RouterTabLoaded = false;\n delete $oldTabEl[0].f7RouterTabLoaded;\n }\n $oldTabEl.children().each(tabChild => {\n if (tabChild.f7Component) {\n hasTabComponentChild = true;\n $(tabChild).trigger('tab:beforeremove', tabRoute);\n tabChild.f7Component.destroy();\n }\n });\n if (!hasTabComponentChild) {\n $oldTabEl.trigger('tab:beforeremove', tabRoute);\n }\n router.emit('tabBeforeRemove', $oldTabEl[0], $newTabEl[0], tabRoute);\n router.removeTabContent($oldTabEl[0], tabRoute);\n}\nexport { tabLoad, tabRemove };","import { extend, nextTick } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport asyncComponent from './async-component.js';\nfunction modalLoad(modalType, route, loadOptions, direction) {\n if (loadOptions === void 0) {\n loadOptions = {};\n }\n const router = this;\n const app = router.app;\n const isPanel = modalType === 'panel';\n const modalOrPanel = isPanel ? 'panel' : 'modal';\n const options = extend({\n animate: router.params.animate,\n browserHistory: true,\n history: true,\n on: {},\n once: {}\n }, loadOptions);\n const modalParams = extend({}, route.route[modalType]);\n const modalRoute = route.route;\n const routeCallback = (modal, name) => {\n const {\n on,\n once\n } = options;\n let callback;\n if (name === 'open') {\n callback = on.modalOpen || once.modalOpen || on.panelOpen || once.panelOpen;\n }\n if (name === 'close') {\n callback = on.modalClose || once.modalClose || on.panelClose || once.panelClose;\n }\n if (name === 'closed') {\n callback = on.modalClosed || once.modalClosed || on.panelClosed || once.panelClosed;\n }\n if (callback) callback(modal);\n };\n function onModalLoaded() {\n // Create Modal\n const modal = app[modalType].create(modalParams);\n modalRoute.modalInstance = modal;\n const hasEl = modal.el;\n function closeOnSwipeBack() {\n modal.close();\n }\n modal.on(`${modalOrPanel}Open`, () => {\n if (!hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(`${modalType.toLowerCase()}:init ${modalType.toLowerCase()}:mounted`, route, modal);\n router.emit(`${!isPanel ? 'modalInit' : ''} ${modalType}Init ${modalType}Mounted`, modal.el, route, modal);\n }\n router.once('swipeBackMove', closeOnSwipeBack);\n routeCallback(modal, 'open');\n });\n modal.on(`${modalOrPanel}Close`, () => {\n router.off('swipeBackMove', closeOnSwipeBack);\n if (!modal.closeByRouter) {\n router.back();\n }\n routeCallback(modal, 'close');\n });\n modal.on(`${modalOrPanel}Closed`, () => {\n modal.$el.trigger(`${modalType.toLowerCase()}:beforeremove`, route, modal);\n modal.emit(`${!isPanel ? 'modalBeforeRemove ' : ''}${modalType}BeforeRemove`, modal.el, route, modal);\n const modalComponent = modal.el.f7Component;\n routeCallback(modal, 'closed');\n if (modalComponent) {\n modalComponent.destroy();\n }\n nextTick(() => {\n if (modalComponent || modalParams.component || modalParams.asyncComponent || modalParams.async) {\n router.removeModal(modal.el);\n }\n modal.destroy();\n delete modal.route;\n delete modalRoute.modalInstance;\n });\n });\n if (options.route) {\n // Update Browser History\n if (router.params.browserHistory && options.browserHistory) {\n History.push(router.view.id, {\n url: options.route.url,\n modal: modalType\n }, (router.params.browserHistoryRoot || '') + router.params.browserHistorySeparator + options.route.url);\n }\n\n // Set Route\n if (options.route !== router.currentRoute) {\n modal.route = extend(options.route, {\n modal\n });\n router.currentRoute = modal.route;\n }\n\n // Update Router History\n if (options.history && !options.reloadCurrent) {\n router.history.push(options.route.url);\n router.saveHistory();\n }\n }\n if (hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(`${modalType.toLowerCase()}:init ${modalType.toLowerCase()}:mounted`, route, modal);\n router.emit(`${modalOrPanel}Init ${modalType}Init ${modalType}Mounted`, modal.el, route, modal);\n }\n\n // Open\n modal.open(options.animate === false || options.animate === true ? options.animate : undefined);\n }\n\n // Load Modal Content\n function loadModal(loadModalParams, loadModalOptions) {\n // Load Modal Props\n const {\n url,\n content,\n component,\n componentUrl\n } = loadModalParams;\n\n // Component/Template Callbacks\n function resolve(contentEl) {\n if (contentEl) {\n if (typeof contentEl === 'string') {\n modalParams.content = contentEl;\n } else if (contentEl.f7Component) {\n contentEl.f7Component.mount(componentEl => {\n modalParams.el = componentEl;\n app.$el.append(componentEl);\n });\n } else {\n modalParams.el = contentEl;\n }\n onModalLoaded();\n }\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n if (content) {\n resolve(content);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.modalComponentLoader({\n rootEl: app.el,\n component,\n componentUrl,\n options: loadModalOptions,\n resolve,\n reject\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router.xhrRequest(url, loadModalOptions).then(modalContent => {\n modalParams.content = modalContent;\n onModalLoaded();\n }).catch(() => {\n router.allowPageChange = true;\n });\n } else {\n onModalLoaded();\n }\n }\n let foundLoadProp;\n 'url content component el componentUrl template'.split(' ').forEach(modalLoadProp => {\n if (modalParams[modalLoadProp] && !foundLoadProp) {\n foundLoadProp = true;\n loadModal({\n [modalLoadProp]: modalParams[modalLoadProp]\n }, options);\n }\n });\n if (!foundLoadProp && modalType === 'actions') {\n onModalLoaded();\n }\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadModal(resolveParams, extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (modalParams.async) {\n modalParams.async.call(router, {\n router,\n to: options.route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction,\n app\n });\n }\n if (modalParams.asyncComponent) {\n asyncComponent(router, modalParams.asyncComponent, asyncResolve, asyncReject);\n }\n return router;\n}\nfunction modalRemove(modal) {\n extend(modal, {\n closeByRouter: true\n });\n modal.close();\n}\nexport { modalLoad, modalRemove };","import $ from '../../shared/dom7.js';\nimport appRouterCheck from './app-router-check.js';\nfunction clearPreviousPages(router) {\n appRouterCheck(router, 'clearPreviousPages');\n const app = router.app;\n const dynamicNavbar = router.dynamicNavbar;\n const $pagesToRemove = router.$el.children('.page').filter(pageInView => {\n if (router.currentRoute && (router.currentRoute.modal || router.currentRoute.panel)) return true;\n return pageInView !== router.currentPageEl;\n });\n $pagesToRemove.each(pageEl => {\n const $oldPageEl = $(pageEl);\n const $oldNavbarEl = $(app.navbar.getElByPage($oldPageEl));\n // Page remove event\n router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarEl, 'previous', undefined, {});\n router.removePage($oldPageEl);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n });\n}\nfunction clearPreviousHistory() {\n const router = this;\n appRouterCheck(router, 'clearPreviousHistory');\n const url = router.history[router.history.length - 1];\n clearPreviousPages(router);\n router.history = [url];\n router.view.history = [url];\n router.saveHistory();\n}\nexport { clearPreviousHistory }; // eslint-disable-line","import Router from './router-class.js';\nexport default {\n name: 'router',\n static: {\n Router\n },\n instance: {\n cache: {\n xhr: [],\n templates: [],\n components: []\n }\n },\n create() {\n const instance = this;\n if (instance.app) {\n // View Router\n if (instance.params.router) {\n instance.router = new Router(instance.app, instance);\n }\n } else {\n // App Router\n instance.router = new Router(instance);\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nfunction resizableView(view) {\n const app = view.app;\n const support = getSupport();\n if (view.resizableInitialized) return;\n extend(view, {\n resizable: true,\n resizableWidth: null,\n resizableInitialized: true\n });\n const $htmlEl = $('html');\n const {\n $el\n } = view;\n if (!$el) return;\n let $resizeHandlerEl;\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let touchesDiff;\n let width;\n let minWidth;\n let maxWidth;\n function transformCSSWidth(v) {\n if (!v) return null;\n if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {\n return parseInt(v, 10) / 100 * app.width;\n }\n const newV = parseInt(v, 10);\n if (Number.isNaN(newV)) return null;\n return newV;\n }\n function isResizable() {\n return view.resizable && $el.hasClass('view-resizable') && $el.hasClass('view-master-detail');\n }\n function handleTouchStart(e) {\n if (!isResizable()) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isMoved = false;\n isTouched = true;\n const $pageMasterEl = $el.children('.page-master');\n minWidth = transformCSSWidth($pageMasterEl.css('min-width'));\n maxWidth = transformCSSWidth($pageMasterEl.css('max-width'));\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n e.f7PreventSwipePanel = true;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n if (!isMoved) {\n width = $resizeHandlerEl[0].offsetLeft + $resizeHandlerEl[0].offsetWidth;\n $el.addClass('view-resizing');\n $htmlEl.css('cursor', 'col-resize');\n }\n isMoved = true;\n e.preventDefault();\n touchesDiff = pageX - touchesStart.x;\n let newWidth = width + touchesDiff;\n if (minWidth && !Number.isNaN(minWidth)) {\n newWidth = Math.max(newWidth, minWidth);\n }\n if (maxWidth && !Number.isNaN(maxWidth)) {\n newWidth = Math.min(newWidth, maxWidth);\n }\n newWidth = Math.min(Math.max(newWidth, 0), app.width);\n view.resizableWidth = newWidth;\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${newWidth}px`);\n $el.trigger('view:resize', newWidth);\n view.emit('local::resize viewResize', view, newWidth);\n }\n function handleTouchEnd() {\n $('html').css('cursor', '');\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n $el.removeClass('view-resizing');\n }\n function handleResize() {\n if (!view.resizableWidth) return;\n minWidth = transformCSSWidth($resizeHandlerEl.css('min-width'));\n maxWidth = transformCSSWidth($resizeHandlerEl.css('max-width'));\n if (minWidth && !Number.isNaN(minWidth) && view.resizableWidth < minWidth) {\n view.resizableWidth = Math.max(view.resizableWidth, minWidth);\n }\n if (maxWidth && !Number.isNaN(maxWidth) && view.resizableWidth > maxWidth) {\n view.resizableWidth = Math.min(view.resizableWidth, maxWidth);\n }\n view.resizableWidth = Math.min(Math.max(view.resizableWidth, 0), app.width);\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n }\n $resizeHandlerEl = view.$el.children('.view-resize-handler');\n if (!$resizeHandlerEl.length) {\n view.$el.append('
                ');\n $resizeHandlerEl = view.$el.children('.view-resize-handler');\n }\n view.$resizeHandlerEl = $resizeHandlerEl;\n $el.addClass('view-resizable');\n\n // Add Events\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n view.$el.on(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n view.on('beforeOpen', handleResize);\n view.once('viewDestroy', () => {\n $el.removeClass('view-resizable');\n view.$resizeHandlerEl.remove();\n view.$el.off(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n view.off('beforeOpen', handleResize);\n });\n}\nexport default resizableView;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Router from '../../modules/router/router.js';\nimport Framework7Class from '../../shared/class.js';\nimport resizableView from './resizable-view.js';\nclass View extends Framework7Class {\n constructor(app, el, viewParams) {\n if (viewParams === void 0) {\n viewParams = {};\n }\n super(viewParams, [app]);\n const view = this;\n const ssr = view.params.routerId;\n const defaults = {\n routes: [],\n routesAdd: []\n };\n if (!ssr) {\n const $el = $(el);\n if (!$el.length) {\n let message = \"Framework7: can't create a View instance because \";\n message += typeof el === 'string' ? `the selector \"${el}\" didn't match any element` : 'el must be an HTMLElement or Dom7 object';\n throw new Error(message);\n }\n }\n\n // Default View params\n view.params = extend({\n el\n }, defaults, app.params.view, viewParams);\n\n // Routes\n if (view.params.routes.length > 0) {\n view.routes = view.params.routes;\n } else {\n view.routes = [].concat(app.routes, view.params.routesAdd);\n }\n\n // View Props\n extend(false, view, {\n app,\n name: view.params.name,\n main: view.params.main,\n history: [],\n scrollHistory: {}\n });\n\n // Install Modules\n view.useModules();\n\n // Add to app\n app.views.push(view);\n if (view.main) {\n app.views.main = view;\n }\n if (view.name) {\n app.views[view.name] = view;\n }\n\n // Index\n view.index = app.views.indexOf(view);\n\n // View ID\n let viewId;\n if (view.name) {\n viewId = `view_${view.name}`;\n } else if (view.main) {\n viewId = 'view_main';\n } else {\n viewId = `view_${view.index}`;\n }\n view.id = viewId;\n if (!view.params.init) {\n return view;\n }\n // Init View\n if (app.initialized) {\n view.init();\n } else {\n app.on('init', () => {\n view.init();\n });\n }\n return view;\n }\n destroy() {\n let view = this;\n const app = view.app;\n view.$el.trigger('view:beforedestroy');\n view.emit('local::beforeDestroy viewBeforeDestroy', view);\n app.off('resize', view.checkMasterDetailBreakpoint);\n if (view.main) {\n app.views.main = null;\n delete app.views.main;\n } else if (view.name) {\n app.views[view.name] = null;\n delete app.views[view.name];\n }\n view.$el[0].f7View = null;\n delete view.$el[0].f7View;\n app.views.splice(app.views.indexOf(view), 1);\n\n // Destroy Router\n if (view.params.router && view.router) {\n view.router.destroy();\n }\n view.emit('local::destroy viewDestroy', view);\n\n // Delete props & methods\n Object.keys(view).forEach(viewProp => {\n view[viewProp] = null;\n delete view[viewProp];\n });\n view = null;\n }\n checkMasterDetailBreakpoint(force) {\n const view = this;\n const app = view.app;\n const wasMasterDetail = view.$el.hasClass('view-master-detail');\n const isMasterDetail = app.width >= view.params.masterDetailBreakpoint && view.$el.children('.page-master').length;\n if (typeof force === 'undefined' && isMasterDetail || force === true) {\n view.$el.addClass('view-master-detail');\n if (!wasMasterDetail) {\n view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n view.$el.trigger('view:masterDetailBreakpoint');\n }\n } else {\n view.$el.removeClass('view-master-detail');\n if (wasMasterDetail) {\n view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n view.$el.trigger('view:masterDetailBreakpoint');\n }\n }\n }\n initMasterDetail() {\n const view = this;\n const app = view.app;\n view.checkMasterDetailBreakpoint = view.checkMasterDetailBreakpoint.bind(view);\n view.checkMasterDetailBreakpoint();\n if (view.params.masterDetailResizable) {\n resizableView(view);\n }\n app.on('resize', view.checkMasterDetailBreakpoint);\n }\n mount(viewEl) {\n const view = this;\n const app = view.app;\n const el = view.params.el || viewEl;\n const $el = $(el);\n\n // Selector\n let selector;\n if (typeof el === 'string') selector = el;else {\n // Supposed to be HTMLElement or Dom7\n selector = ($el.attr('id') ? `#${$el.attr('id')}` : '') + ($el.attr('class') ? `.${$el.attr('class').replace(/ /g, '.').replace('.active', '')}` : '');\n }\n\n // DynamicNavbar\n let $navbarsEl;\n if (app.theme === 'ios' && view.params.iosDynamicNavbar) {\n $navbarsEl = $el.children('.navbars').eq(0);\n if ($navbarsEl.length === 0) {\n $navbarsEl = $('
                ');\n }\n }\n extend(view, {\n $el,\n el: $el[0],\n main: view.main || $el.hasClass('view-main'),\n $navbarsEl,\n navbarsEl: $navbarsEl ? $navbarsEl[0] : undefined,\n selector\n });\n if (view.main) {\n app.views.main = view;\n }\n\n // Save in DOM\n if ($el && $el[0]) {\n $el[0].f7View = view;\n }\n view.emit('local::mount viewMount', view);\n }\n init(viewEl) {\n const view = this;\n view.mount(viewEl);\n if (view.params.router) {\n if (view.params.masterDetailBreakpoint > 0) {\n view.initMasterDetail();\n }\n if (view.params.initRouterOnTabShow && view.$el.hasClass('tab') && !view.$el.hasClass('tab-active')) {\n view.$el.once('tab:show', () => {\n view.router.init();\n });\n } else {\n view.router.init();\n }\n view.$el.trigger('view:init');\n view.emit('local::init viewInit', view);\n }\n }\n}\n\n// Use Router\nView.use(Router);\nexport default View;","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport ViewClass from '../../components/view/view-class.js';\nfunction initClicks(app) {\n function handleClicks(e) {\n const window = getWindow();\n const $clickedEl = $(e.target);\n const $clickedLinkEl = $clickedEl.closest('a');\n const isLink = $clickedLinkEl.length > 0;\n const url = isLink && $clickedLinkEl.attr('href');\n\n // Check if link is external\n if (isLink) {\n if ($clickedLinkEl.is(app.params.clicks.externalLinks) ||\n // eslint-disable-next-line\n url && url.indexOf('javascript:') >= 0) {\n const target = $clickedLinkEl.attr('target');\n if (url && window.cordova && window.cordova.InAppBrowser && (target === '_system' || target === '_blank')) {\n e.preventDefault();\n window.cordova.InAppBrowser.open(url, target);\n } else if (url && window.Capacitor && window.Capacitor.Plugins && window.Capacitor.Plugins.Browser && (target === '_system' || target === '_blank')) {\n e.preventDefault();\n window.Capacitor.Plugins.Browser.open({\n url\n });\n }\n return;\n }\n }\n\n // Modules Clicks\n Object.keys(app.modules).forEach(moduleName => {\n const moduleClicks = app.modules[moduleName].clicks;\n if (!moduleClicks) return;\n if (e.preventF7Router) return;\n Object.keys(moduleClicks).forEach(clickSelector => {\n const matchingClickedElement = $clickedEl.closest(clickSelector).eq(0);\n if (matchingClickedElement.length > 0) {\n moduleClicks[clickSelector].call(app, matchingClickedElement, matchingClickedElement.dataset(), e);\n }\n });\n });\n\n // Load Page\n let clickedLinkData = {};\n if (isLink) {\n e.preventDefault();\n clickedLinkData = $clickedLinkEl.dataset();\n }\n clickedLinkData.clickedEl = $clickedLinkEl[0];\n\n // Prevent Router\n if (e.preventF7Router) return;\n if ($clickedLinkEl.hasClass('prevent-router') || $clickedLinkEl.hasClass('router-prevent')) return;\n const validUrl = url && url.length > 0 && url[0] !== '#';\n if (validUrl || $clickedLinkEl.hasClass('back')) {\n let view;\n if (clickedLinkData.view && clickedLinkData.view === 'current') {\n view = app.views.current;\n } else if (clickedLinkData.view) {\n view = $(clickedLinkData.view)[0].f7View;\n } else {\n view = $clickedEl.parents('.view')[0] && $clickedEl.parents('.view')[0].f7View;\n if (view && view.params.linksView && (!$clickedLinkEl.hasClass('back') || $clickedLinkEl.hasClass('back') && view.router.history.length === 1)) {\n if (typeof view.params.linksView === 'string') view = $(view.params.linksView)[0].f7View;else if (view.params.linksView instanceof ViewClass) view = view.params.linksView;\n }\n }\n if (!view) {\n if (app.views.main) view = app.views.main;\n }\n if (!view || !view.router) return;\n if ($clickedLinkEl[0].f7RouteProps) {\n clickedLinkData.props = $clickedLinkEl[0].f7RouteProps;\n }\n if ($clickedLinkEl.hasClass('back')) view.router.back(url, clickedLinkData);else view.router.navigate(url, clickedLinkData);\n }\n }\n app.on('click', handleClicks);\n}\nexport default {\n name: 'clicks',\n params: {\n clicks: {\n // External Links\n externalLinks: '.external'\n }\n },\n on: {\n init() {\n const app = this;\n initClicks(app);\n }\n }\n};","import History from '../../shared/history.js';\nexport default {\n name: 'history',\n static: {\n history: History\n },\n on: {\n init() {\n History.init(this);\n }\n }\n};","import { getWindow } from 'ssr-window';\nimport { extend } from '../../shared/utils.js';\nconst SW = {\n registrations: [],\n register(path, scope) {\n const app = this;\n const window = getWindow();\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n return new Promise((resolve, reject) => {\n app.serviceWorker.container.register(path, scope ? {\n scope\n } : {}).then(reg => {\n SW.registrations.push(reg);\n app.emit('serviceWorkerRegisterSuccess', reg);\n resolve(reg);\n }).catch(error => {\n app.emit('serviceWorkerRegisterError', error);\n reject(error);\n });\n });\n },\n unregister(registration) {\n const app = this;\n const window = getWindow();\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n let registrations;\n if (!registration) registrations = SW.registrations;else if (Array.isArray(registration)) registrations = registration;else registrations = [registration];\n return Promise.all(registrations.map(reg => new Promise((resolve, reject) => {\n reg.unregister().then(() => {\n if (SW.registrations.indexOf(reg) >= 0) {\n SW.registrations.splice(SW.registrations.indexOf(reg), 1);\n }\n app.emit('serviceWorkerUnregisterSuccess', reg);\n resolve();\n }).catch(error => {\n app.emit('serviceWorkerUnregisterError', reg, error);\n reject(error);\n });\n })));\n }\n};\nexport default {\n name: 'sw',\n params: {\n serviceWorker: {\n path: undefined,\n scope: undefined\n }\n },\n create() {\n const app = this;\n const window = getWindow();\n extend(app, {\n serviceWorker: {\n container: 'serviceWorker' in window.navigator ? window.navigator.serviceWorker : undefined,\n registrations: SW.registrations,\n register: SW.register.bind(app),\n unregister: SW.unregister.bind(app)\n }\n });\n },\n on: {\n init() {\n const window = getWindow();\n if (!('serviceWorker' in window.navigator)) return;\n const app = this;\n if (app.device.cordova || window.Capacitor && window.Capacitor.isNative) return;\n if (!app.serviceWorker.container) return;\n const paths = app.params.serviceWorker.path;\n const scope = app.params.serviceWorker.scope;\n if (!paths || Array.isArray(paths) && !paths.length) return;\n const toRegister = Array.isArray(paths) ? paths : [paths];\n toRegister.forEach(path => {\n app.serviceWorker.register(path, scope);\n });\n }\n }\n};","/* eslint-disable no-underscore-dangle */\nimport { extend } from '../../shared/utils.js';\nfunction createStore(storeParams) {\n if (storeParams === void 0) {\n storeParams = {};\n }\n const store = {\n __store: true\n };\n const originalState = {\n ...(storeParams.state || {})\n };\n const actions = {\n ...(storeParams.actions || {})\n };\n const getters = {\n ...(storeParams.getters || {})\n };\n const state = extend({}, originalState);\n let propsQueue = [];\n const gettersDependencies = {};\n const gettersCallbacks = {};\n Object.keys(getters).forEach(getterKey => {\n gettersDependencies[getterKey] = [];\n gettersCallbacks[getterKey] = [];\n });\n const getGetterValue = getterKey => {\n return getters[getterKey]({\n state: store.state\n });\n };\n const addGetterDependencies = (getterKey, deps) => {\n if (!gettersDependencies[getterKey]) gettersDependencies[getterKey] = [];\n deps.forEach(dep => {\n if (gettersDependencies[getterKey].indexOf(dep) < 0) {\n gettersDependencies[getterKey].push(dep);\n }\n });\n };\n const addGetterCallback = (getterKey, callback) => {\n if (!gettersCallbacks[getterKey]) gettersCallbacks[getterKey] = [];\n gettersCallbacks[getterKey].push(callback);\n };\n const runGetterCallbacks = stateKey => {\n const keys = Object.keys(gettersDependencies).filter(getterKey => {\n return gettersDependencies[getterKey].indexOf(stateKey) >= 0;\n });\n keys.forEach(getterKey => {\n if (!gettersCallbacks[getterKey] || !gettersCallbacks[getterKey].length) return;\n gettersCallbacks[getterKey].forEach(callback => {\n callback(getGetterValue(getterKey));\n });\n });\n };\n const removeGetterCallback = callback => {\n Object.keys(gettersCallbacks).forEach(stateKey => {\n const callbacks = gettersCallbacks[stateKey];\n if (callbacks.indexOf(callback) >= 0) {\n callbacks.splice(callbacks.indexOf(callback), 1);\n }\n });\n };\n\n // eslint-disable-next-line\n store.__removeCallback = callback => {\n removeGetterCallback(callback);\n };\n const getterValue = function (getterKey, addCallback) {\n if (addCallback === void 0) {\n addCallback = true;\n }\n if (getterKey === 'constructor') return undefined;\n propsQueue = [];\n const value = getGetterValue(getterKey);\n addGetterDependencies(getterKey, propsQueue);\n const onUpdated = callback => {\n addGetterCallback(getterKey, callback);\n };\n const obj = {\n value,\n onUpdated\n };\n if (!addCallback) {\n return obj;\n }\n const callback = v => {\n obj.value = v;\n };\n obj.__callback = callback;\n addGetterCallback(getterKey, callback);\n // eslint-disable-next-line\n return obj;\n };\n store.state = new Proxy(state, {\n set: (target, prop, value) => {\n target[prop] = value;\n runGetterCallbacks(prop);\n return true;\n },\n get: (target, prop) => {\n propsQueue.push(prop);\n return target[prop];\n }\n });\n store.getters = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, true);\n }\n });\n store._gettersPlain = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, false);\n }\n });\n store.dispatch = (actionName, data) => {\n return new Promise((resolve, reject) => {\n if (!actions[actionName]) {\n reject();\n throw new Error(`Framework7: Store action \"${actionName}\" is not found`);\n }\n const result = actions[actionName]({\n state: store.state,\n dispatch: store.dispatch\n }, data);\n resolve(result);\n });\n };\n return store;\n}\nexport default createStore;","import createStore from './create-store.js';\nexport { createStore };\nexport default {\n name: 'store',\n static: {\n createStore\n },\n proto: {\n createStore\n }\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nconst isCapacitor = () => {\n const window = getWindow();\n return window.Capacitor && window.Capacitor.isNative && window.Capacitor.Plugins && window.Capacitor.Plugins.StatusBar;\n};\nconst Statusbar = {\n hide() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.hide();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.hide();\n }\n },\n show() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.show();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.show();\n }\n },\n onClick() {\n const app = this;\n let pageContent;\n if ($('.popup.modal-in').length > 0) {\n // Check for opened popup\n pageContent = $('.popup.modal-in').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else if ($('.panel.panel-in').length > 0) {\n // Check for opened panel\n pageContent = $('.panel.panel-in').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else if ($('.views > .view.tab-active').length > 0) {\n // View in tab bar app layout\n pageContent = $('.views > .view.tab-active').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else if ($('.views').length > 0) {\n pageContent = $('.views').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else {\n pageContent = app.$el.children('.view').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n }\n if (pageContent && pageContent.length > 0) {\n // Check for tab\n if (pageContent.hasClass('tab')) {\n pageContent = pageContent.parent('.tabs').children('.page-content.tab-active');\n }\n if (pageContent.length > 0) pageContent.scrollTop(0, 300);\n }\n },\n setTextColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n if (color === 'white') {\n window.StatusBar.styleLightContent();\n } else {\n window.StatusBar.styleDefault();\n }\n }\n if (isCapacitor()) {\n if (color === 'white') {\n window.Capacitor.Plugins.StatusBar.setStyle({\n style: 'DARK'\n });\n } else {\n window.Capacitor.Plugins.StatusBar.setStyle({\n style: 'LIGHT'\n });\n }\n }\n },\n setBackgroundColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.backgroundColorByHexString(color);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setBackgroundColor({\n color\n });\n }\n },\n isVisible() {\n const window = getWindow();\n const device = getDevice();\n return new Promise(resolve => {\n if (device.cordova && window.StatusBar) {\n resolve(window.StatusBar.isVisible);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.getInfo().then(info => {\n resolve(info.visible);\n });\n }\n resolve(false);\n });\n },\n overlaysWebView(overlays) {\n if (overlays === void 0) {\n overlays = true;\n }\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.overlaysWebView(overlays);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setOverlaysWebView({\n overlay: overlays\n });\n }\n },\n init() {\n const app = this;\n const window = getWindow();\n const device = getDevice();\n const params = app.params.statusbar;\n if (!params.enabled) return;\n const isCordova = device.cordova && window.StatusBar;\n const isCap = isCapacitor();\n if (isCordova || isCap) {\n if (params.scrollTopOnClick) {\n $(window).on('statusTap', Statusbar.onClick.bind(app));\n }\n if (device.ios) {\n if (params.iosOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.iosTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n if (device.android) {\n if (params.androidOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.androidTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n }\n if (params.iosBackgroundColor && device.ios) {\n Statusbar.setBackgroundColor(params.iosBackgroundColor);\n }\n if (params.androidBackgroundColor && device.android) {\n Statusbar.setBackgroundColor(params.androidBackgroundColor);\n }\n }\n};\nexport default {\n name: 'statusbar',\n params: {\n statusbar: {\n enabled: true,\n scrollTopOnClick: true,\n iosOverlaysWebView: true,\n iosTextColor: 'black',\n iosBackgroundColor: null,\n androidOverlaysWebView: false,\n androidTextColor: 'black',\n androidBackgroundColor: null\n }\n },\n create() {\n const app = this;\n bindMethods(app, {\n statusbar: Statusbar\n });\n },\n on: {\n init() {\n const app = this;\n Statusbar.init.call(app);\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport View from './view-class.js';\nfunction getCurrentView(app) {\n const $popoverView = $('.popover.modal-in .view');\n const $popupView = $('.popup.modal-in .view');\n const $panelView = $('.panel.panel-in .view');\n let $viewsEl = $('.views');\n if ($viewsEl.length === 0) $viewsEl = app.$el;\n // Find active view as tab\n let $viewEl = $viewsEl.children('.view');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view');\n }\n // Propably in tabs or split view\n if ($viewEl.length > 1) {\n if ($viewEl.hasClass('tab')) {\n // Tabs\n $viewEl = $viewsEl.children('.view.tab-active');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view.tab-active');\n }\n } else {\n // Split View, leave appView intact\n }\n }\n if ($popoverView.length > 0 && $popoverView[0].f7View) return $popoverView[0].f7View;\n if ($popupView.length > 0 && $popupView[0].f7View) return $popupView[0].f7View;\n if ($panelView.length > 0 && $panelView[0].f7View) return $panelView[0].f7View;\n if ($viewEl.length > 0) {\n if ($viewEl.length === 1 && $viewEl[0].f7View) return $viewEl[0].f7View;\n if ($viewEl.length > 1) {\n return app.views.main;\n }\n }\n return undefined;\n}\nexport default {\n name: 'view',\n params: {\n view: {\n init: true,\n initRouterOnTabShow: false,\n name: undefined,\n main: false,\n router: true,\n linksView: null,\n xhrCache: true,\n xhrCacheIgnore: [],\n xhrCacheIgnoreGetParameters: false,\n xhrCacheDuration: 1000 * 60 * 10,\n // Ten minutes\n componentCache: true,\n preloadPreviousPage: true,\n allowDuplicateUrls: false,\n reloadPages: false,\n reloadDetail: false,\n masterDetailBreakpoint: 0,\n masterDetailResizable: false,\n removeElements: true,\n removeElementsWithTimeout: false,\n removeElementsTimeout: 0,\n restoreScrollTopOnBack: true,\n unloadTabContent: true,\n passRouteQueryToRequest: true,\n passRouteParamsToRequest: false,\n loadInitialPage: true,\n // Swipe Back\n iosSwipeBack: true,\n iosSwipeBackAnimateShadow: true,\n iosSwipeBackAnimateOpacity: true,\n iosSwipeBackActiveArea: 30,\n iosSwipeBackThreshold: 0,\n mdSwipeBack: false,\n mdSwipeBackAnimateShadow: true,\n mdSwipeBackAnimateOpacity: false,\n mdSwipeBackActiveArea: 30,\n mdSwipeBackThreshold: 0,\n // Push State\n browserHistory: false,\n browserHistoryRoot: undefined,\n browserHistoryAnimate: true,\n browserHistoryAnimateOnLoad: false,\n browserHistorySeparator: '#!',\n browserHistoryOnLoad: true,\n browserHistoryInitialMatch: false,\n browserHistoryStoreHistory: true,\n browserHistoryTabs: 'replace',\n // Animate Pages\n animate: true,\n // iOS Dynamic Navbar\n iosDynamicNavbar: true,\n // Animate iOS Navbar Back Icon\n iosAnimateNavbarBackIcon: true,\n // Delays\n iosPageLoadDelay: 0,\n mdPageLoadDelay: 0,\n // Routes hooks\n routesBeforeEnter: null,\n routesBeforeLeave: null\n }\n },\n static: {\n View\n },\n create() {\n const app = this;\n extend(app, {\n views: extend([], {\n create(el, params) {\n return new View(app, el, params);\n },\n get(viewEl) {\n const $viewEl = $(viewEl);\n if ($viewEl.length && $viewEl[0].f7View) return $viewEl[0].f7View;\n return undefined;\n }\n })\n });\n Object.defineProperty(app.views, 'current', {\n enumerable: true,\n configurable: true,\n get() {\n return getCurrentView(app);\n }\n });\n // Alias\n app.view = app.views;\n },\n on: {\n init() {\n const app = this;\n $('.view-init').each(viewEl => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n 'modalOpen panelOpen': function onOpen(instance) {\n const app = this;\n instance.$el.find('.view-init').each(viewEl => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n 'modalBeforeDestroy panelBeforeDestroy': function onClose(instance) {\n if (!instance || !instance.$el) return;\n instance.$el.find('.view-init').each(viewEl => {\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n });\n }\n },\n vnode: {\n 'view-init': {\n insert(vnode) {\n const app = this;\n const viewEl = vnode.elm;\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n },\n destroy(vnode) {\n const viewEl = vnode.elm;\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nconst Navbar = {\n size(el) {\n const app = this;\n let $el = $(el);\n if ($el.hasClass('navbars')) {\n $el = $el.children('.navbar').each(navbarEl => {\n app.navbar.size(navbarEl);\n });\n return;\n }\n const $innerEl = $el.children('.navbar-inner');\n if (!$innerEl.length) return;\n const needCenterTitle = $innerEl.hasClass('navbar-inner-centered-title') || app.params.navbar[`${app.theme}CenterTitle`];\n const needLeftTitle = app.theme === 'ios' && !app.params.navbar[`${app.theme}CenterTitle`];\n if (!needCenterTitle && !needLeftTitle) return;\n if ($el.parents('.tab:not(.tab-active)').length > 0 || $el.parents('.popup:not(.modal-in)').length > 0) {\n return;\n }\n if (app.theme !== 'ios' && app.params.navbar[`${app.theme}CenterTitle`]) {\n $innerEl.addClass('navbar-inner-centered-title');\n }\n if (app.theme === 'ios' && !app.params.navbar.iosCenterTitle) {\n $innerEl.addClass('navbar-inner-left-title');\n }\n const $viewEl = $el.parents('.view').eq(0);\n const left = app.rtl ? $innerEl.children('.right') : $innerEl.children('.left');\n const right = app.rtl ? $innerEl.children('.left') : $innerEl.children('.right');\n const title = $innerEl.children('.title');\n const subnavbar = $innerEl.children('.subnavbar');\n const noLeft = left.length === 0;\n const noRight = right.length === 0;\n const leftWidth = noLeft ? 0 : left.outerWidth(true);\n const rightWidth = noRight ? 0 : right.outerWidth(true);\n const titleWidth = title.outerWidth(true);\n const navbarStyles = $innerEl.styles();\n const navbarWidth = $innerEl[0].offsetWidth;\n const navbarInnerWidth = navbarWidth - parseInt(navbarStyles.paddingLeft, 10) - parseInt(navbarStyles.paddingRight, 10);\n const isPrevious = $el.hasClass('navbar-previous');\n const sliding = $innerEl.hasClass('sliding');\n let router;\n let dynamicNavbar;\n if ($viewEl.length > 0 && $viewEl[0].f7View) {\n router = $viewEl[0].f7View.router;\n dynamicNavbar = router && router.dynamicNavbar;\n }\n let currLeft;\n let diff;\n if (noRight) {\n currLeft = navbarInnerWidth - titleWidth;\n }\n if (noLeft) {\n currLeft = 0;\n }\n if (!noLeft && !noRight) {\n currLeft = (navbarInnerWidth - rightWidth - titleWidth + leftWidth) / 2;\n }\n let requiredLeft = (navbarInnerWidth - titleWidth) / 2;\n if (navbarInnerWidth - leftWidth - rightWidth > titleWidth) {\n if (requiredLeft < leftWidth) {\n requiredLeft = leftWidth;\n }\n if (requiredLeft + titleWidth > navbarInnerWidth - rightWidth) {\n requiredLeft = navbarInnerWidth - rightWidth - titleWidth;\n }\n diff = requiredLeft - currLeft;\n } else {\n diff = 0;\n }\n\n // RTL inverter\n const inverter = app.rtl ? -1 : 1;\n if (dynamicNavbar && app.theme === 'ios') {\n if (title.hasClass('sliding') || title.length > 0 && sliding) {\n let titleLeftOffset = -(currLeft + diff) * inverter;\n const titleRightOffset = (navbarInnerWidth - currLeft - diff - titleWidth) * inverter;\n if (isPrevious) {\n if (router && router.params.iosAnimateNavbarBackIcon) {\n const activeNavbarBackLink = $el.parent().find('.navbar-current').children('.left.sliding').find('.back .icon ~ span');\n if (activeNavbarBackLink.length > 0) {\n titleLeftOffset += activeNavbarBackLink[0].offsetLeft;\n }\n }\n }\n title[0].f7NavbarLeftOffset = titleLeftOffset;\n title[0].f7NavbarRightOffset = titleRightOffset;\n }\n if (!noLeft && (left.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n left[0].f7NavbarLeftOffset = -(navbarInnerWidth - left[0].offsetWidth) / 2 * inverter;\n left[0].f7NavbarRightOffset = leftWidth * inverter;\n } else {\n left[0].f7NavbarLeftOffset = -leftWidth;\n left[0].f7NavbarRightOffset = (navbarInnerWidth - left[0].offsetWidth) / 2;\n if (router && router.params.iosAnimateNavbarBackIcon && left.find('.back .icon').length > 0) {\n if (left.find('.back .icon ~ span').length) {\n const leftOffset = left[0].f7NavbarLeftOffset;\n const rightOffset = left[0].f7NavbarRightOffset;\n left[0].f7NavbarLeftOffset = 0;\n left[0].f7NavbarRightOffset = 0;\n left.find('.back .icon ~ span')[0].f7NavbarLeftOffset = leftOffset;\n left.find('.back .icon ~ span')[0].f7NavbarRightOffset = rightOffset - left.find('.back .icon')[0].offsetWidth;\n }\n }\n }\n }\n if (!noRight && (right.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n right[0].f7NavbarLeftOffset = -rightWidth * inverter;\n right[0].f7NavbarRightOffset = (navbarInnerWidth - right[0].offsetWidth) / 2 * inverter;\n } else {\n right[0].f7NavbarLeftOffset = -(navbarInnerWidth - right[0].offsetWidth) / 2;\n right[0].f7NavbarRightOffset = rightWidth;\n }\n }\n if (subnavbar.length && (subnavbar.hasClass('sliding') || sliding)) {\n subnavbar[0].f7NavbarLeftOffset = app.rtl ? subnavbar[0].offsetWidth : -subnavbar[0].offsetWidth;\n subnavbar[0].f7NavbarRightOffset = -subnavbar[0].f7NavbarLeftOffset;\n }\n }\n\n // Center title\n if (needCenterTitle) {\n let titleLeft = diff;\n if (app.rtl && noLeft && noRight && title.length > 0) titleLeft = -titleLeft;\n title.css({\n left: `${titleLeft}px`\n });\n }\n },\n hide(el, animate, hideStatusbar, hideOnlyCurrent) {\n if (animate === void 0) {\n animate = true;\n }\n if (hideStatusbar === void 0) {\n hideStatusbar = false;\n }\n if (hideOnlyCurrent === void 0) {\n hideOnlyCurrent = false;\n }\n const app = this;\n let $el = $(el);\n const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;\n if (isDynamic) $el = $el.parents('.navbars');\n if (!$el.length) return;\n if ($el.hasClass('navbar-hidden')) return;\n let className = `navbar-hidden${animate ? ' navbar-transitioning' : ''}`;\n const currentIsLarge = isDynamic ? $el.find('.navbar-current .title-large').length : $el.find('.title-large').length;\n if (currentIsLarge) {\n className += ' navbar-large-hidden';\n }\n if (hideStatusbar) {\n className += ' navbar-hidden-statusbar';\n }\n $el.transitionEnd(() => {\n $el.removeClass('navbar-transitioning');\n });\n $el.addClass(className);\n if (isDynamic) {\n $el.children('.navbar').each(subEl => {\n $(subEl).trigger('navbar:hide');\n app.emit('navbarHide', subEl);\n });\n } else {\n $el.trigger('navbar:hide');\n app.emit('navbarHide', $el[0]);\n }\n },\n show(el, animate, hideOnlyCurrent) {\n if (el === void 0) {\n el = '.navbar-hidden';\n }\n if (animate === void 0) {\n animate = true;\n }\n if (hideOnlyCurrent === void 0) {\n hideOnlyCurrent = false;\n }\n const app = this;\n let $el = $(el);\n const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;\n if (isDynamic) $el = $el.parents('.navbars');\n if (!$el.length) return;\n if (!$el.hasClass('navbar-hidden')) return;\n if (animate) {\n $el.addClass('navbar-transitioning');\n $el.transitionEnd(() => {\n $el.removeClass('navbar-transitioning');\n });\n }\n $el.removeClass('navbar-hidden navbar-large-hidden navbar-hidden-statusbar');\n if (isDynamic) {\n $el.children('.navbar').each(subEl => {\n $(subEl).trigger('navbar:show');\n app.emit('navbarShow', subEl);\n });\n } else {\n $el.trigger('navbar:show');\n app.emit('navbarShow', $el[0]);\n }\n },\n getElByPage(page) {\n let $pageEl;\n let $navbarEl;\n let pageData;\n if (page.$navbarEl || page.$el) {\n pageData = page;\n $pageEl = page.$el;\n } else {\n $pageEl = $(page);\n if ($pageEl.length > 0) pageData = $pageEl[0].f7Page;\n }\n if (pageData && pageData.$navbarEl && pageData.$navbarEl.length > 0) {\n $navbarEl = pageData.$navbarEl;\n } else if ($pageEl) {\n $navbarEl = $pageEl.children('.navbar');\n }\n if (!$navbarEl || $navbarEl && $navbarEl.length === 0) return undefined;\n return $navbarEl[0];\n },\n getPageByEl(navbarEl) {\n const $navbarEl = $(navbarEl);\n if ($navbarEl.parents('.page').length) {\n return $navbarEl.parents('.page')[0];\n }\n let pageEl;\n $navbarEl.parents('.view').find('.page').each(el => {\n if (el && el.f7Page && el.f7Page.navbarEl && $navbarEl[0] === el.f7Page.navbarEl) {\n pageEl = el;\n }\n });\n return pageEl;\n },\n collapseLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n $navbarEl.addClass('navbar-large-collapsed');\n $pageEl.eq(0).addClass('page-with-navbar-large-collapsed').trigger('page:navbarlargecollapsed');\n app.emit('pageNavbarLargeCollapsed', $pageEl[0]);\n $navbarEl.trigger('navbar:collapse');\n app.emit('navbarCollapse', $navbarEl[0]);\n },\n expandLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar-large');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n $navbarEl.removeClass('navbar-large-collapsed');\n $pageEl.eq(0).removeClass('page-with-navbar-large-collapsed').trigger('page:navbarlargeexpanded');\n app.emit('pageNavbarLargeExpanded', $pageEl[0]);\n $navbarEl.trigger('navbar:expand');\n app.emit('navbarExpand', $navbarEl[0]);\n },\n toggleLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar-large');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n if ($navbarEl.hasClass('navbar-large-collapsed')) {\n app.navbar.expandLargeTitle($navbarEl);\n } else {\n app.navbar.collapseLargeTitle($navbarEl);\n }\n },\n initNavbarOnScroll(pageEl, navbarEl, needHide, needCollapse, needTransparent) {\n const app = this;\n const support = getSupport();\n const $pageEl = $(pageEl);\n const $navbarEl = $(navbarEl);\n const $titleLargeEl = $navbarEl.find('.title-large');\n const isLarge = $titleLargeEl.length || $navbarEl.hasClass('.navbar-large');\n let navbarHideHeight = 44;\n const snapPageScrollToLargeTitle = app.params.navbar.snapPageScrollToLargeTitle;\n const snapPageScrollToTransparentNavbar = app.params.navbar.snapPageScrollToTransparentNavbar;\n let previousScrollTop;\n let currentScrollTop;\n let scrollHeight;\n let offsetHeight;\n let reachEnd;\n let action;\n let navbarHidden;\n let navbarCollapsed;\n let navbarTitleLargeHeight;\n let navbarOffsetHeight;\n if (needCollapse || needHide && isLarge) {\n navbarTitleLargeHeight = $navbarEl.css('--f7-navbar-large-title-height');\n if (navbarTitleLargeHeight && navbarTitleLargeHeight.indexOf('px') >= 0) {\n navbarTitleLargeHeight = parseInt(navbarTitleLargeHeight, 10);\n if (Number.isNaN(navbarTitleLargeHeight) && $titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else if (Number.isNaN(navbarTitleLargeHeight)) {\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;else if (app.theme === 'md') navbarTitleLargeHeight = 88;\n }\n } else if ($titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else {\n // eslint-disable-next-line\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;else if (app.theme === 'md') navbarTitleLargeHeight = 88;\n }\n }\n if (needHide && isLarge) {\n navbarHideHeight += navbarTitleLargeHeight;\n }\n let scrollChanged;\n let scrollContent;\n let scrollTimeoutId;\n let touchEndTimeoutId;\n const touchSnapTimeout = 70;\n const desktopSnapTimeout = 300;\n function calcScrollableDistance() {\n $pageEl.find('.page-content').each(pageContentEl => {\n pageContentEl.f7ScrollableDistance = pageContentEl.scrollHeight - pageContentEl.offsetHeight;\n });\n }\n function snapLargeNavbar() {\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n if (!scrollContent || currentScrollTop < 0) return;\n if (currentScrollTop >= navbarTitleLargeHeight / 2 && currentScrollTop < navbarTitleLargeHeight) {\n $(scrollContent).scrollTop(navbarTitleLargeHeight, 100);\n } else if (currentScrollTop < navbarTitleLargeHeight) {\n $(scrollContent).scrollTop(0, 200);\n }\n }\n function snapTransparentNavbar() {\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n if (!scrollContent || currentScrollTop < 0) return;\n if (currentScrollTop >= navbarOffsetHeight / 2 && currentScrollTop < navbarOffsetHeight) {\n $(scrollContent).scrollTop(navbarOffsetHeight, 100);\n } else if (currentScrollTop < navbarOffsetHeight) {\n $(scrollContent).scrollTop(0, 200);\n }\n }\n function handleNavbarTransparent() {\n const isHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded || isHidden) return;\n if (!navbarOffsetHeight) {\n navbarOffsetHeight = navbarEl.offsetHeight;\n }\n let opacity = currentScrollTop / navbarOffsetHeight;\n const notTransparent = $navbarEl.hasClass('navbar-transparent-visible');\n opacity = Math.max(Math.min(opacity, 1), 0);\n if (notTransparent && opacity === 1 || !notTransparent && opacity === 0) {\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n if (notTransparent && opacity === 0) {\n $navbarEl.trigger('navbar:transparenthide');\n app.emit('navbarTransparentHide', $navbarEl[0]);\n $navbarEl.removeClass('navbar-transparent-visible');\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n if (!notTransparent && opacity === 1) {\n $navbarEl.trigger('navbar:transparentshow');\n app.emit('navbarTransparentShow', $navbarEl[0]);\n $navbarEl.addClass('navbar-transparent-visible');\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n $navbarEl.find('.navbar-bg, .title').css('opacity', opacity);\n if (snapPageScrollToTransparentNavbar) {\n if (!support.touch) {\n clearTimeout(scrollTimeoutId);\n scrollTimeoutId = setTimeout(() => {\n snapTransparentNavbar();\n }, desktopSnapTimeout);\n } else if (touchEndTimeoutId) {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n snapTransparentNavbar();\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }, touchSnapTimeout);\n }\n }\n }\n let previousCollapseProgress = null;\n let collapseProgress = null;\n function handleLargeNavbarCollapse(pageContentEl) {\n const isHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n if (isHidden) return;\n const isLargeTransparent = $navbarEl.hasClass('navbar-large-transparent') || $navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-transparent');\n previousCollapseProgress = collapseProgress;\n const scrollableDistance = Math.min(navbarTitleLargeHeight, pageContentEl.f7ScrollableDistance || navbarTitleLargeHeight);\n collapseProgress = Math.min(Math.max(currentScrollTop / scrollableDistance, 0), 1);\n const previousCollapseWasInMiddle = previousCollapseProgress > 0 && previousCollapseProgress < 1;\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n navbarCollapsed = $navbarEl.hasClass('navbar-large-collapsed');\n const $bgEl = $navbarEl.find('.navbar-bg');\n if (collapseProgress === 0 && navbarCollapsed) {\n app.navbar.expandLargeTitle($navbarEl[0]);\n } else if (collapseProgress === 1 && !navbarCollapsed) {\n app.navbar.collapseLargeTitle($navbarEl[0]);\n }\n if (collapseProgress === 0 && navbarCollapsed || collapseProgress === 0 && previousCollapseWasInMiddle || collapseProgress === 1 && !navbarCollapsed || collapseProgress === 1 && previousCollapseWasInMiddle) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', '');\n }\n $navbarEl.find('.title').css('opacity', '');\n $navbarEl.find('.title-large-text, .subnavbar').css('transform', '');\n $navbarEl.find('.title-large-text').css('opacity', '');\n if (isLargeTransparent) {\n $bgEl.css('opacity', '');\n }\n $bgEl.css('transform', '');\n } else if (collapseProgress > 0 && collapseProgress < 1) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', 'visible');\n }\n $navbarEl.find('.title').css('opacity', -0.5 + collapseProgress * 1.5);\n $navbarEl.find('.title-large-text, .subnavbar').css('transform', `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`);\n $navbarEl.find('.title-large-text').css('opacity', 1 - collapseProgress * 2);\n if (isLargeTransparent) {\n $bgEl.css('opacity', collapseProgress);\n }\n $bgEl.css('transform', `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`);\n }\n if (snapPageScrollToLargeTitle) {\n if (!support.touch) {\n clearTimeout(scrollTimeoutId);\n scrollTimeoutId = setTimeout(() => {\n snapLargeNavbar();\n }, desktopSnapTimeout);\n } else if (touchEndTimeoutId) {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n snapLargeNavbar();\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }, touchSnapTimeout);\n }\n }\n }\n function handleTitleHideShow() {\n if ($pageEl.hasClass('page-with-card-opened')) return;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n navbarHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n if (reachEnd) {\n if (app.params.navbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.navbar.showOnPageScrollTop || currentScrollTop <= navbarHideHeight) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > navbarHideHeight) {\n action = 'hide';\n } else {\n action = 'show';\n }\n if (action === 'show' && navbarHidden) {\n app.navbar.show($navbarEl, true, true);\n navbarHidden = false;\n } else if (action === 'hide' && !navbarHidden) {\n app.navbar.hide($navbarEl, true, false, true);\n navbarHidden = true;\n }\n previousScrollTop = currentScrollTop;\n }\n function handleScroll(e) {\n scrollContent = this;\n if (e && e.target && e.target !== scrollContent) {\n return;\n }\n currentScrollTop = scrollContent.scrollTop;\n scrollChanged = currentScrollTop;\n if (needCollapse) {\n handleLargeNavbarCollapse(scrollContent);\n } else if (needTransparent) {\n handleNavbarTransparent();\n }\n if ($pageEl.hasClass('page-previous')) return;\n if (needHide) {\n handleTitleHideShow();\n }\n }\n function handeTouchStart() {\n scrollChanged = false;\n }\n function handleTouchEnd() {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n if (scrollChanged !== false) {\n if (needTransparent && !needCollapse) {\n snapTransparentNavbar();\n } else {\n snapLargeNavbar();\n }\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }\n }, touchSnapTimeout);\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n if (support.touch && (needCollapse && snapPageScrollToLargeTitle || needTransparent && snapPageScrollToTransparentNavbar)) {\n app.on('touchstart:passive', handeTouchStart);\n app.on('touchend:passive', handleTouchEnd);\n }\n calcScrollableDistance();\n if (needCollapse || needTransparent) {\n $pageEl.find('.page-content').each(pageContentEl => {\n if (pageContentEl.scrollTop > 0) handleScroll.call(pageContentEl);\n });\n }\n app.on('resize', calcScrollableDistance);\n $pageEl[0].f7DetachNavbarScrollHandlers = function f7DetachNavbarScrollHandlers() {\n app.off('resize', calcScrollableDistance);\n delete $pageEl[0].f7DetachNavbarScrollHandlers;\n $pageEl.off('scroll', '.page-content', handleScroll, true);\n if (support.touch && (needCollapse && snapPageScrollToLargeTitle || needTransparent && snapPageScrollToTransparentNavbar)) {\n app.off('touchstart:passive', handeTouchStart);\n app.off('touchend:passive', handleTouchEnd);\n }\n };\n }\n};\nexport default {\n name: 'navbar',\n create() {\n const app = this;\n bindMethods(app, {\n navbar: Navbar\n });\n },\n params: {\n navbar: {\n scrollTopOnTitleClick: true,\n iosCenterTitle: true,\n mdCenterTitle: false,\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n collapseLargeTitleOnScroll: true,\n snapPageScrollToLargeTitle: true,\n snapPageScrollToTransparentNavbar: true\n }\n },\n on: {\n 'panelBreakpoint panelCollapsedBreakpoint panelResize viewResize resize viewMasterDetailBreakpoint': function onPanelResize() {\n const app = this;\n $('.navbar').each(navbarEl => {\n app.navbar.size(navbarEl);\n });\n },\n pageBeforeRemove(page) {\n if (page.$el[0].f7DetachNavbarScrollHandlers) {\n page.$el[0].f7DetachNavbarScrollHandlers();\n }\n },\n pageBeforeIn(page) {\n const app = this;\n if (app.theme !== 'ios') return;\n let $navbarsEl;\n const view = page.$el.parents('.view')[0].f7View;\n const navbarEl = app.navbar.getElByPage(page);\n if (!navbarEl) {\n $navbarsEl = page.$el.parents('.view').children('.navbars');\n } else {\n $navbarsEl = $(navbarEl).parents('.navbars');\n }\n if (page.$el.hasClass('no-navbar') || view.router.dynamicNavbar && !navbarEl) {\n const animate = !!(page.pageFrom && page.router.history.length > 0);\n app.navbar.hide($navbarsEl, animate);\n } else {\n app.navbar.show($navbarsEl);\n }\n },\n pageReinit(page) {\n const app = this;\n const $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) return;\n app.navbar.size($navbarEl);\n },\n pageInit(page) {\n const app = this;\n const $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) return;\n\n // Size\n app.navbar.size($navbarEl);\n\n // Need Collapse On Scroll\n let needCollapseOnScrollHandler;\n if ($navbarEl.find('.title-large').length > 0) {\n $navbarEl.addClass('navbar-large');\n }\n if ($navbarEl.hasClass('navbar-large')) {\n if (app.params.navbar.collapseLargeTitleOnScroll) needCollapseOnScrollHandler = true;\n page.$el.addClass('page-with-navbar-large');\n }\n\n // Need transparent on scroll\n let needTransparentOnScroll;\n if (!needCollapseOnScrollHandler && $navbarEl.hasClass('navbar-transparent')) {\n needTransparentOnScroll = true;\n }\n\n // Need Hide On Scroll\n let needHideOnScrollHandler;\n if (app.params.navbar.hideOnPageScroll || page.$el.find('.hide-navbar-on-scroll').length || page.$el.hasClass('hide-navbar-on-scroll') || page.$el.find('.hide-bars-on-scroll').length || page.$el.hasClass('hide-bars-on-scroll')) {\n if (page.$el.find('.keep-navbar-on-scroll').length || page.$el.hasClass('keep-navbar-on-scroll') || page.$el.find('.keep-bars-on-scroll').length || page.$el.hasClass('keep-bars-on-scroll')) {\n needHideOnScrollHandler = false;\n } else {\n needHideOnScrollHandler = true;\n }\n }\n if (needCollapseOnScrollHandler || needHideOnScrollHandler || needTransparentOnScroll) {\n app.navbar.initNavbarOnScroll(page.el, $navbarEl[0], needHideOnScrollHandler, needCollapseOnScrollHandler, needTransparentOnScroll);\n }\n },\n 'panelOpen panelSwipeOpen modalOpen': function onPanelModalOpen(instance) {\n const app = this;\n instance.$el.find('.navbar:not(.navbar-previous)').each(navbarEl => {\n app.navbar.size(navbarEl);\n });\n },\n tabShow(tabEl) {\n const app = this;\n $(tabEl).find('.navbar:not(.navbar-previous)').each(navbarEl => {\n app.navbar.size(navbarEl);\n });\n }\n },\n clicks: {\n '.navbar .title': function onTitleClick($clickedEl, clickedData, e) {\n const app = this;\n if (!app.params.navbar.scrollTopOnTitleClick) return;\n if ($(e.target).closest('a, button').length > 0) {\n return;\n }\n let $pageContentEl;\n\n // Find active page\n const $navbarEl = $clickedEl.parents('.navbar');\n const $navbarsEl = $navbarEl.parents('.navbars');\n\n // Static Layout\n $pageContentEl = $navbarEl.parents('.page-content');\n if ($pageContentEl.length === 0) {\n // Fixed Layout\n if ($navbarEl.parents('.page').length > 0) {\n $pageContentEl = $navbarEl.parents('.page').find('.page-content');\n }\n // Through Layout iOS\n if ($pageContentEl.length === 0 && $navbarsEl.length) {\n if ($navbarsEl.nextAll('.page-current').length > 0) {\n $pageContentEl = $navbarsEl.nextAll('.page-current').find('.page-content');\n }\n }\n // Through Layout\n if ($pageContentEl.length === 0) {\n if ($navbarEl.nextAll('.page-current').length > 0) {\n $pageContentEl = $navbarEl.nextAll('.page-current').find('.page-content');\n }\n }\n }\n if ($pageContentEl && $pageContentEl.length > 0) {\n // Check for tab\n if ($pageContentEl.hasClass('tab')) {\n $pageContentEl = $pageContentEl.parent('.tabs').children('.page-content.tab-active');\n }\n if ($pageContentEl.length > 0) $pageContentEl.scrollTop(0, 300);\n }\n }\n },\n vnode: {\n navbar: {\n postpatch(vnode) {\n const app = this;\n app.navbar.size(vnode.elm);\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\nconst Toolbar = {\n setHighlight(tabbarEl) {\n const app = this;\n const $tabbarEl = $(tabbarEl);\n if (app.theme === 'ios' && !$tabbarEl.hasClass('tabbar-highlight')) return;\n if ($tabbarEl.length === 0 || !($tabbarEl.hasClass('tabbar') || $tabbarEl.hasClass('tabbar-icons'))) return;\n let $highlightEl = $tabbarEl.find('.tab-link-highlight');\n const tabLinksCount = $tabbarEl.find('.tab-link').length;\n if (tabLinksCount === 0) {\n $highlightEl.remove();\n return;\n }\n if ($highlightEl.length === 0) {\n $tabbarEl.children('.toolbar-inner').append('');\n $highlightEl = $tabbarEl.find('.tab-link-highlight');\n } else if ($highlightEl.next().length) {\n $tabbarEl.children('.toolbar-inner').append($highlightEl);\n }\n const $activeLink = $tabbarEl.find('.tab-link-active');\n let highlightWidth;\n let highlightTranslate;\n if ($tabbarEl.hasClass('tabbar-scrollable') && $activeLink && $activeLink[0]) {\n highlightWidth = `${$activeLink[0].offsetWidth}px`;\n highlightTranslate = `${$activeLink[0].offsetLeft}px`;\n } else {\n const activeIndex = $activeLink.index();\n highlightWidth = `${100 / tabLinksCount}%`;\n highlightTranslate = `${(app.rtl ? -activeIndex : activeIndex) * 100}%`;\n }\n nextFrame(() => {\n $highlightEl.css('width', highlightWidth).transform(`translate3d(${highlightTranslate},0,0)`);\n });\n },\n init(tabbarEl) {\n const app = this;\n app.toolbar.setHighlight(tabbarEl);\n },\n hide(el, animate) {\n if (animate === void 0) {\n animate = true;\n }\n const app = this;\n const $el = $(el);\n if ($el.hasClass('toolbar-hidden')) return;\n const className = `toolbar-hidden${animate ? ' toolbar-transitioning' : ''}`;\n $el.transitionEnd(() => {\n $el.removeClass('toolbar-transitioning');\n });\n $el.addClass(className);\n $el.trigger('toolbar:hide');\n app.emit('toolbarHide', $el[0]);\n },\n show(el, animate) {\n if (animate === void 0) {\n animate = true;\n }\n const app = this;\n const $el = $(el);\n if (!$el.hasClass('toolbar-hidden')) return;\n if (animate) {\n $el.addClass('toolbar-transitioning');\n $el.transitionEnd(() => {\n $el.removeClass('toolbar-transitioning');\n });\n }\n $el.removeClass('toolbar-hidden');\n $el.trigger('toolbar:show');\n app.emit('toolbarShow', $el[0]);\n },\n initToolbarOnScroll(pageEl) {\n const app = this;\n const $pageEl = $(pageEl);\n let $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.parents('.views').children('.tabbar, .tabbar-icons');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n let previousScrollTop;\n let currentScrollTop;\n let scrollHeight;\n let offsetHeight;\n let reachEnd;\n let action;\n let toolbarHidden;\n function handleScroll(e) {\n if ($pageEl.hasClass('page-with-card-opened')) return;\n if ($pageEl.hasClass('page-previous')) return;\n const scrollContent = this;\n if (e && e.target && e.target !== scrollContent) {\n return;\n }\n currentScrollTop = scrollContent.scrollTop;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n toolbarHidden = $toolbarEl.hasClass('toolbar-hidden');\n if (reachEnd) {\n if (app.params.toolbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.toolbar.showOnPageScrollTop || currentScrollTop <= 44) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > 44) {\n action = 'hide';\n } else {\n action = 'show';\n }\n if (action === 'show' && toolbarHidden) {\n app.toolbar.show($toolbarEl);\n toolbarHidden = false;\n } else if (action === 'hide' && !toolbarHidden) {\n app.toolbar.hide($toolbarEl);\n toolbarHidden = true;\n }\n previousScrollTop = currentScrollTop;\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n $pageEl[0].f7ScrollToolbarHandler = handleScroll;\n }\n};\nexport default {\n name: 'toolbar',\n create() {\n const app = this;\n bindMethods(app, {\n toolbar: Toolbar\n });\n },\n params: {\n toolbar: {\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true\n }\n },\n on: {\n pageBeforeRemove(page) {\n if (page.$el[0].f7ScrollToolbarHandler) {\n page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollToolbarHandler, true);\n }\n },\n pageBeforeIn(page) {\n const app = this;\n let $toolbarEl = page.$el.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.parents('.views').children('.tabbar, .tabbar-icons');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n if (page.$el.hasClass('no-toolbar')) {\n app.toolbar.hide($toolbarEl);\n } else {\n app.toolbar.show($toolbarEl);\n }\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.tabbar, .tabbar-icons').each(tabbarEl => {\n app.toolbar.init(tabbarEl);\n });\n if (app.params.toolbar.hideOnPageScroll || page.$el.find('.hide-toolbar-on-scroll').length || page.$el.hasClass('hide-toolbar-on-scroll') || page.$el.find('.hide-bars-on-scroll').length || page.$el.hasClass('hide-bars-on-scroll')) {\n if (page.$el.find('.keep-toolbar-on-scroll').length || page.$el.hasClass('keep-toolbar-on-scroll') || page.$el.find('.keep-bars-on-scroll').length || page.$el.hasClass('keep-bars-on-scroll')) {\n return;\n }\n app.toolbar.initToolbarOnScroll(page.el);\n }\n },\n init() {\n const app = this;\n app.$el.find('.tabbar, .tabbar-icons').each(tabbarEl => {\n app.toolbar.init(tabbarEl);\n });\n }\n },\n vnode: {\n tabbar: {\n insert(vnode) {\n const app = this;\n app.toolbar.init(vnode.elm);\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nexport default {\n name: 'subnavbar',\n on: {\n pageInit(page) {\n if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) {\n page.$el.addClass('page-with-subnavbar');\n }\n const $innerSubnavbars = page.$el.find('.subnavbar').filter(subnavbarEl => {\n return $(subnavbarEl).parents('.page')[0] === page.$el[0];\n });\n if ($innerSubnavbars.length) {\n page.$el.addClass('page-with-subnavbar');\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nexport default class TouchRipple {\n constructor(app, $el, x, y) {\n const ripple = this;\n if (!$el) return undefined;\n const {\n left,\n top,\n width,\n height\n } = $el[0].getBoundingClientRect();\n const center = {\n x: x - left,\n y: y - top\n };\n let diameter = Math.max((height ** 2 + width ** 2) ** 0.5, 48);\n let isInset = false;\n const insetElements = app.params.touch.touchRippleInsetElements || '';\n if (insetElements && $el.is(insetElements)) {\n isInset = true;\n }\n if (isInset) {\n diameter = Math.max(Math.min(width, height), 48);\n }\n if (!isInset && $el.css('overflow') === 'hidden') {\n const distanceFromCenter = ((center.x - width / 2) ** 2 + (center.y - height / 2) ** 2) ** 0.5;\n const scale = (diameter / 2 + distanceFromCenter) / (diameter / 2);\n ripple.rippleTransform = `translate3d(0px, 0px, 0) scale(${scale * 2})`;\n } else {\n // prettier-ignore\n ripple.rippleTransform = `translate3d(${-center.x + width / 2}px, ${-center.y + height / 2}px, 0) scale(1)`;\n }\n if (isInset) {\n $el.addClass('ripple-inset');\n }\n ripple.$rippleWaveEl = $(`
                `);\n $el.prepend(ripple.$rippleWaveEl);\n ripple.$rippleWaveEl.animationEnd(() => {\n if (!ripple.$rippleWaveEl) return;\n if (ripple.$rippleWaveEl.hasClass('ripple-wave-out')) return;\n ripple.$rippleWaveEl.addClass('ripple-wave-in');\n if (ripple.shouldBeRemoved) {\n ripple.out();\n }\n });\n return ripple;\n }\n destroy() {\n let ripple = this;\n if (ripple.$rippleWaveEl) {\n ripple.$rippleWaveEl.remove();\n }\n Object.keys(ripple).forEach(key => {\n ripple[key] = null;\n delete ripple[key];\n });\n ripple = null;\n }\n out() {\n const ripple = this;\n const {\n $rippleWaveEl\n } = this;\n clearTimeout(ripple.removeTimeout);\n $rippleWaveEl.addClass('ripple-wave-out');\n ripple.removeTimeout = setTimeout(() => {\n ripple.destroy();\n }, 300);\n $rippleWaveEl.animationEnd(() => {\n clearTimeout(ripple.removeTimeout);\n ripple.destroy();\n });\n }\n remove() {\n const ripple = this;\n if (ripple.shouldBeRemoved) return;\n ripple.removeTimeout = setTimeout(() => {\n ripple.destroy();\n }, 400);\n ripple.shouldBeRemoved = true;\n if (ripple.$rippleWaveEl.hasClass('ripple-wave-in')) {\n ripple.out();\n }\n }\n}","import TouchRipple from './touch-ripple-class.js';\nexport default {\n name: 'touch-ripple',\n static: {\n TouchRipple\n },\n create() {\n const app = this;\n app.touchRipple = {\n create() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return new TouchRipple(...args);\n }\n };\n }\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nconst openedModals = [];\nconst dialogsQueue = [];\nfunction clearDialogsQueue() {\n if (dialogsQueue.length === 0) return;\n const dialog = dialogsQueue.shift();\n dialog.open();\n}\nclass Modal extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n const modal = this;\n const defaults = {};\n\n // Extend defaults with modules params\n modal.useModulesParams(defaults);\n modal.params = extend(defaults, params);\n modal.opened = false;\n let $containerEl = modal.params.containerEl ? $(modal.params.containerEl).eq(0) : app.$el;\n if (!$containerEl.length) $containerEl = app.$el;\n modal.$containerEl = $containerEl;\n modal.containerEl = $containerEl[0];\n\n // Install Modules\n modal.useModules();\n return this;\n }\n onOpen() {\n const modal = this;\n modal.opened = true;\n openedModals.push(modal);\n $('html').addClass(`with-modal-${modal.type.toLowerCase()}`);\n modal.$el.trigger(`modal:open ${modal.type.toLowerCase()}:open`);\n modal.emit(`local::open modalOpen ${modal.type}Open`, modal);\n }\n onOpened() {\n const modal = this;\n modal.$el.trigger(`modal:opened ${modal.type.toLowerCase()}:opened`);\n modal.emit(`local::opened modalOpened ${modal.type}Opened`, modal);\n }\n onClose() {\n const modal = this;\n modal.opened = false;\n if (!modal.type || !modal.$el) return;\n openedModals.splice(openedModals.indexOf(modal), 1);\n $('html').removeClass(`with-modal-${modal.type.toLowerCase()}`);\n modal.$el.trigger(`modal:close ${modal.type.toLowerCase()}:close`);\n modal.emit(`local::close modalClose ${modal.type}Close`, modal);\n }\n onClosed() {\n const modal = this;\n if (!modal.type || !modal.$el) return;\n modal.$el.removeClass('modal-out');\n modal.$el.hide();\n if (modal.params.backdrop && (modal.params.backdropUnique || modal.forceBackdropUnique) && modal.$backdropEl) {\n modal.$backdropEl.remove();\n }\n modal.$el.trigger(`modal:closed ${modal.type.toLowerCase()}:closed`);\n modal.emit(`local::closed modalClosed ${modal.type}Closed`, modal);\n }\n open(animateModal, force) {\n const modal = this;\n const document = getDocument();\n const app = modal.app;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n const type = modal.type;\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n if (!$el || $el.hasClass('modal-in')) {\n if (animateModal === false && $el[0] && type !== 'dialog') {\n $el[0].style.display = 'block';\n }\n if (!force) return modal;\n }\n if (type === 'dialog' && app.params.modal.queueDialogs) {\n let pushToQueue;\n if ($('.dialog.modal-in').length > 0) {\n pushToQueue = true;\n } else if (openedModals.length > 0) {\n openedModals.forEach(openedModal => {\n if (openedModal.type === 'dialog') pushToQueue = true;\n });\n }\n if (pushToQueue) {\n dialogsQueue.push(modal);\n return modal;\n }\n }\n const $modalParentEl = $el.parent();\n const wasInDom = $el.parents(document).length > 0;\n if (!$modalParentEl.is(modal.$containerEl)) {\n modal.$containerEl.append($el);\n modal.once(`${type}Closed`, () => {\n if (wasInDom) {\n $modalParentEl.append($el);\n } else {\n $el.remove();\n }\n });\n }\n // Show Modal\n $el.show();\n if (modal.params.backdrop && (modal.params.backdropUnique || modal.forceBackdropUnique) && modal.$backdropEl) {\n modal.$backdropEl.insertBefore($el);\n }\n\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n modal._clientLeft = $el[0].clientLeft;\n\n // Modal\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n if ($backdropEl) {\n $backdropEl.removeClass('not-animated');\n $backdropEl.addClass('backdrop-in');\n }\n $el.animationEnd(() => {\n transitionEnd();\n });\n $el.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('modal-out not-animated').addClass('modal-in');\n modal.onOpen();\n } else {\n if ($backdropEl) {\n $backdropEl.addClass('backdrop-in not-animated');\n }\n $el.removeClass('modal-out').addClass('modal-in not-animated');\n modal.onOpen();\n modal.onOpened();\n }\n return modal;\n }\n close(animateModal) {\n const modal = this;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n if (!$el || !$el.hasClass('modal-in')) {\n if (dialogsQueue.indexOf(modal) >= 0) {\n dialogsQueue.splice(dialogsQueue.indexOf(modal), 1);\n }\n return modal;\n }\n\n // backdrop\n if ($backdropEl) {\n let needToHideBackdrop = true;\n if (modal.type === 'popup') {\n modal.$el.prevAll('.popup.modal-in').add(modal.$el.nextAll('.popup.modal-in')).each(popupEl => {\n const popupInstance = popupEl.f7Modal;\n if (!popupInstance) return;\n if (popupInstance.params.closeByBackdropClick && popupInstance.params.backdrop && popupInstance.backdropEl === modal.backdropEl) {\n needToHideBackdrop = false;\n }\n });\n }\n if (needToHideBackdrop) {\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n $backdropEl.removeClass('backdrop-in');\n }\n }\n\n // Modal\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n $el.animationEnd(() => {\n transitionEnd();\n });\n $el.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('modal-in').addClass('modal-out');\n // Emit close\n modal.onClose();\n } else {\n $el.addClass('not-animated').removeClass('modal-in').addClass('modal-out');\n // Emit close\n modal.onClose();\n modal.onClosed();\n }\n if (modal.type === 'dialog') {\n clearDialogsQueue();\n }\n return modal;\n }\n destroy() {\n const modal = this;\n if (modal.destroyed) return;\n modal.emit(`local::beforeDestroy modalBeforeDestroy ${modal.type}BeforeDestroy`, modal);\n if (modal.$el) {\n modal.$el.trigger(`modal:beforedestroy ${modal.type.toLowerCase()}:beforedestroy`);\n if (modal.$el.length && modal.$el[0].f7Modal) {\n delete modal.$el[0].f7Modal;\n }\n }\n deleteProps(modal);\n modal.destroyed = true;\n }\n}\nexport default Modal;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Modal from './modal-class.js';\nclass CustomModal extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n backdrop: true,\n closeByBackdropClick: true,\n on: {}\n }, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const customModal = this;\n customModal.params = extendedParams;\n\n // Find Element\n let $el;\n if (!customModal.params.el) {\n $el = $(customModal.params.content);\n } else {\n $el = $(customModal.params.el);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return customModal.destroy();\n }\n let $backdropEl;\n if (customModal.params.backdrop) {\n $backdropEl = app.$el.children('.custom-modal-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('
                ');\n app.$el.append($backdropEl);\n }\n }\n function handleClick(e) {\n if (!customModal || customModal.destroyed) return;\n if ($backdropEl && e.target === $backdropEl[0]) {\n customModal.close();\n }\n }\n customModal.on('customModalOpened', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.on('click', handleClick);\n }\n });\n customModal.on('customModalClose', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.off('click', handleClick);\n }\n });\n extend(customModal, {\n app,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'customModal'\n });\n $el[0].f7Modal = customModal;\n return customModal;\n }\n}\nexport default CustomModal;","import Modal from './modal-class.js';\nimport CustomModal from './custom-modal-class.js';\nexport default {\n name: 'modal',\n static: {\n Modal,\n CustomModal\n },\n create() {\n const app = this;\n app.customModal = {\n create(params) {\n return new CustomModal(app, params);\n }\n };\n },\n params: {\n modal: {\n queueDialogs: true\n }\n }\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Dialog extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n title: app.params.dialog.title,\n text: undefined,\n content: '',\n buttons: [],\n verticalButtons: false,\n onClick: undefined,\n cssClass: undefined,\n destroyOnClose: false,\n on: {}\n }, params);\n if (typeof extendedParams.closeByBackdropClick === 'undefined') {\n extendedParams.closeByBackdropClick = app.params.dialog.closeByBackdropClick;\n }\n if (typeof extendedParams.backdrop === 'undefined') {\n extendedParams.backdrop = app.params.dialog.backdrop;\n }\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const dialog = this;\n const device = getDevice();\n const document = getDocument();\n const {\n title,\n text,\n content,\n buttons,\n verticalButtons,\n cssClass,\n backdrop\n } = extendedParams;\n dialog.params = extendedParams;\n\n // Find Element\n let $el;\n if (!dialog.params.el) {\n const dialogClasses = ['dialog'];\n if (buttons.length === 0) dialogClasses.push('dialog-no-buttons');\n if (buttons.length > 0) dialogClasses.push(`dialog-buttons-${buttons.length}`);\n if (verticalButtons) dialogClasses.push('dialog-buttons-vertical');\n if (cssClass) dialogClasses.push(cssClass);\n let buttonsHTML = '';\n if (buttons.length > 0) {\n buttonsHTML = $jsx(\"div\", {\n class: \"dialog-buttons\"\n }, buttons.map(button => $jsx(\"span\", {\n class: `dialog-button${button.strong ? ' dialog-button-strong' : ''}${button.color ? ` color-${button.color}` : ''}${button.cssClass ? ` ${button.cssClass}` : ''}`\n }, button.text)));\n }\n const dialogHtml = $jsx(\"div\", {\n class: dialogClasses.join(' ')\n }, $jsx(\"div\", {\n class: \"dialog-inner\"\n }, title && $jsx(\"div\", {\n class: \"dialog-title\"\n }, title), text && $jsx(\"div\", {\n class: \"dialog-text\"\n }, text), content), buttonsHTML);\n $el = $(dialogHtml);\n } else {\n $el = $(dialog.params.el);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return dialog.destroy();\n }\n let $backdropEl;\n if (backdrop) {\n $backdropEl = app.$el.children('.dialog-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('
                ');\n app.$el.append($backdropEl);\n }\n }\n\n // Assign events\n function buttonOnClick(e) {\n const buttonEl = this;\n const index = $(buttonEl).index();\n const button = buttons[index];\n if (button.onClick) button.onClick(dialog, e);\n if (dialog.params.onClick) dialog.params.onClick(dialog, index);\n if (button.close !== false) dialog.close();\n }\n let addKeyboardHander;\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n buttons.forEach((button, index) => {\n if (button.keyCodes && button.keyCodes.indexOf(keyCode) >= 0) {\n if (document.activeElement) document.activeElement.blur();\n if (button.onClick) button.onClick(dialog, e);\n if (dialog.params.onClick) dialog.params.onClick(dialog, index);\n if (button.close !== false) dialog.close();\n }\n });\n }\n if (buttons && buttons.length > 0) {\n dialog.on('open', () => {\n $el.find('.dialog-button').each((buttonEl, index) => {\n const button = buttons[index];\n if (button.keyCodes) addKeyboardHander = true;\n $(buttonEl).on('click', buttonOnClick);\n });\n if (addKeyboardHander && !device.ios && !device.android && !device.cordova && !device.capacitor) {\n $(document).on('keydown', onKeyDown);\n }\n });\n dialog.on('close', () => {\n $el.find('.dialog-button').each(buttonEl => {\n $(buttonEl).off('click', buttonOnClick);\n });\n if (addKeyboardHander && !device.ios && !device.android && !device.cordova && !device.capacitor) {\n $(document).off('keydown', onKeyDown);\n }\n addKeyboardHander = false;\n });\n }\n extend(dialog, {\n app,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'dialog',\n setProgress(progress, duration) {\n app.progressbar.set($el.find('.progressbar'), progress, duration);\n return dialog;\n },\n setText(newText) {\n let $textEl = $el.find('.dialog-text');\n if ($textEl.length === 0) {\n $textEl = $('
                ');\n if (typeof title !== 'undefined') {\n $textEl.insertAfter($el.find('.dialog-title'));\n } else {\n $el.find('.dialog-inner').prepend($textEl);\n }\n }\n $textEl.html(newText);\n dialog.params.text = newText;\n return dialog;\n },\n setTitle(newTitle) {\n let $titleEl = $el.find('.dialog-title');\n if ($titleEl.length === 0) {\n $titleEl = $('
                ');\n $el.find('.dialog-inner').prepend($titleEl);\n }\n $titleEl.html(newTitle);\n dialog.params.title = newTitle;\n return dialog;\n }\n });\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n if ($target.closest(dialog.el).length === 0) {\n if (dialog.params.closeByBackdropClick && dialog.backdropEl && dialog.backdropEl === target) {\n dialog.close();\n }\n }\n }\n dialog.on('opened', () => {\n if (dialog.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n dialog.on('close', () => {\n if (dialog.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n });\n $el[0].f7Modal = dialog;\n if (dialog.params.destroyOnClose) {\n dialog.once('closed', () => {\n setTimeout(() => {\n dialog.destroy();\n }, 0);\n });\n }\n return dialog;\n }\n}\nexport default Dialog;","import { extend, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\nimport Dialog from './dialog-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'dialog',\n params: {\n dialog: {\n title: undefined,\n buttonOk: 'OK',\n buttonCancel: 'Cancel',\n usernamePlaceholder: 'Username',\n passwordPlaceholder: 'Password',\n preloaderTitle: 'Loading... ',\n progressTitle: 'Loading... ',\n backdrop: true,\n closeByBackdropClick: false,\n destroyPredefinedDialogs: true,\n keyboardActions: true,\n autoFocus: true\n }\n },\n static: {\n Dialog\n },\n create() {\n const app = this;\n function defaultDialogTitle() {\n return app.params.dialog.title || app.name;\n }\n const destroyOnClose = app.params.dialog.destroyPredefinedDialogs;\n const keyboardActions = app.params.dialog.keyboardActions;\n const autoFocus = app.params.dialog.autoFocus;\n const autoFocusHandler = autoFocus ? {\n on: {\n opened(dialog) {\n dialog.$el.find('input').eq(0).focus();\n }\n }\n } : {};\n const isIosTheme = app.theme === 'ios';\n app.dialog = extend(ModalMethods({\n app,\n constructor: Dialog,\n defaultSelector: '.dialog.modal-in'\n }), {\n // Shortcuts\n alert() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n let [text, title, callbackOk] = args;\n if (args.length === 2 && typeof args[1] === 'function') {\n [text, callbackOk, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n buttons: [{\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n onClick: callbackOk,\n keyCodes: keyboardActions ? [13, 27] : null\n }],\n destroyOnClose\n }).open();\n },\n prompt() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n let [text, title, callbackOk, callbackCancel, defaultValue] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, defaultValue, title] = args;\n }\n defaultValue = typeof defaultValue === 'undefined' || defaultValue === null ? '' : defaultValue;\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n content: `
                `,\n buttons: [{\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: null\n }, {\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n keyCodes: keyboardActions ? [13] : null\n }],\n onClick(dialog, index) {\n const inputValue = dialog.$el.find('.dialog-input').val();\n if (index === 0 && callbackCancel) callbackCancel(inputValue);\n if (index === 1 && callbackOk) callbackOk(inputValue);\n },\n destroyOnClose,\n ...autoFocusHandler\n }).open();\n },\n confirm() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n let [text, title, callbackOk, callbackCancel] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n buttons: [{\n text: app.params.dialog.buttonCancel,\n onClick: callbackCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: null\n }, {\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n onClick: callbackOk,\n keyCodes: keyboardActions ? [13] : null\n }],\n destroyOnClose\n }).open();\n },\n login() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n let [text, title, callbackOk, callbackCancel] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n // prettier-ignore\n content: `\n
                \n \n
                \n
                \n \n
                `,\n buttons: [{\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: null\n }, {\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n keyCodes: keyboardActions ? [13] : null\n }],\n onClick(dialog, index) {\n const username = dialog.$el.find('[name=\"dialog-username\"]').val();\n const password = dialog.$el.find('[name=\"dialog-password\"]').val();\n if (index === 0 && callbackCancel) callbackCancel(username, password);\n if (index === 1 && callbackOk) callbackOk(username, password);\n },\n destroyOnClose,\n ...autoFocusHandler\n }).open();\n },\n password() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n let [text, title, callbackOk, callbackCancel] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n // prettier-ignore\n content: `\n
                \n \n
                `,\n buttons: [{\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: null\n }, {\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n keyCodes: keyboardActions ? [13] : null\n }],\n onClick(dialog, index) {\n const password = dialog.$el.find('[name=\"dialog-password\"]').val();\n if (index === 0 && callbackCancel) callbackCancel(password);\n if (index === 1 && callbackOk) callbackOk(password);\n },\n destroyOnClose,\n ...autoFocusHandler\n }).open();\n },\n preloader(title, color) {\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';\n return new Dialog(app, {\n title: typeof title === 'undefined' || title === null ? app.params.dialog.preloaderTitle : title,\n // prettier-ignore\n content: `
                ${preloaderInner}
                `,\n cssClass: 'dialog-preloader',\n destroyOnClose\n }).open();\n },\n progress() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n let [title, progress, color] = args;\n if (args.length === 2) {\n if (typeof args[0] === 'number') {\n [progress, color, title] = args;\n } else if (typeof args[0] === 'string' && typeof args[1] === 'string') {\n [title, color, progress] = args;\n }\n } else if (args.length === 1) {\n if (typeof args[0] === 'number') {\n [progress, title, color] = args;\n }\n }\n const infinite = typeof progress === 'undefined';\n const dialog = new Dialog(app, {\n title: typeof title === 'undefined' ? app.params.dialog.progressTitle : title,\n cssClass: 'dialog-progress',\n // prettier-ignore\n content: `\n
                \n ${!infinite ? '' : ''}\n
                \n `,\n destroyOnClose\n });\n if (!infinite) dialog.setProgress(progress);\n return dialog.open();\n }\n });\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, now, nextTick } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\nclass Popup extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.popup, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const popup = this;\n const window = getWindow();\n const document = getDocument();\n const support = getSupport();\n const device = getDevice();\n popup.params = extendedParams;\n\n // Find Element\n let $el;\n if (!popup.params.el) {\n $el = $(popup.params.content).filter(node => node.nodeType === 1).eq(0);\n } else {\n $el = $(popup.params.el).eq(0);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return popup.destroy();\n }\n let $backdropEl;\n if (popup.params.backdrop && popup.params.backdropEl) {\n $backdropEl = $(popup.params.backdropEl);\n } else if (popup.params.backdrop) {\n if (popup.params.backdropUnique) {\n $backdropEl = $('
                ');\n popup.$containerEl.append($backdropEl);\n } else {\n $backdropEl = popup.$containerEl.children('.popup-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('
                ');\n popup.$containerEl.append($backdropEl);\n }\n }\n extend(popup, {\n app,\n push: $el.hasClass('popup-push') || popup.params.push,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'popup',\n $htmlEl: $('html')\n });\n if (popup.params.push) {\n $el.addClass('popup-push');\n }\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);\n if (keyboardOpened) return;\n if ($target.closest(popup.el).length === 0) {\n if (popup.params && popup.params.closeByBackdropClick && popup.params.backdrop && popup.backdropEl && popup.backdropEl === target) {\n let needToClose = true;\n popup.$el.nextAll('.popup.modal-in').each(popupEl => {\n const popupInstance = popupEl.f7Modal;\n if (!popupInstance) return;\n if (popupInstance.params.closeByBackdropClick && popupInstance.params.backdrop && popupInstance.backdropEl === popup.backdropEl) {\n needToClose = false;\n }\n });\n if (needToClose) {\n popup.close();\n }\n }\n }\n }\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && popup.params.closeOnEscape) {\n popup.close();\n }\n }\n let pushOffset;\n let isPush;\n function pushViewScale(offset) {\n return (app.height - offset * 2) / app.height;\n }\n let allowSwipeToClose = true;\n let isTouched = false;\n let startTouch;\n let currentTouch;\n let isScrolling;\n let touchStartTime;\n let touchesDiff;\n let isMoved = false;\n let pageContentEl;\n let pageContentScrollTop;\n let pageContentOffsetHeight;\n let pageContentScrollHeight;\n let popupHeight;\n let $pushEl;\n function handleTouchStart(e) {\n if (isTouched || !allowSwipeToClose || !popup.params.swipeToClose || !e.isTrusted) return;\n if (popup.params.swipeHandler && $(e.target).closest(popup.params.swipeHandler).length === 0) {\n return;\n }\n if ($(e.target).closest('.sortable-handler').length > 0) return;\n isTouched = true;\n isMoved = false;\n startTouch = {\n x: e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY\n };\n touchStartTime = now();\n isScrolling = undefined;\n if (!popup.params.swipeHandler && e.type === 'touchstart') {\n pageContentEl = $(e.target).closest('.page-content')[0];\n }\n }\n function handleTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n currentTouch = {\n x: e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY\n };\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(currentTouch.x - startTouch.x) > Math.abs(currentTouch.y - startTouch.y));\n }\n if (isScrolling) {\n isTouched = false;\n isMoved = false;\n return;\n }\n touchesDiff = startTouch.y - currentTouch.y;\n if (isPush && pushOffset && touchesDiff > 0) {\n touchesDiff = 0;\n }\n const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n $el.transition(0);\n if (typeof popup.params.swipeToClose === 'string' && direction !== popup.params.swipeToClose) {\n $el.transform('');\n $el.transition('');\n return;\n }\n if (!isMoved) {\n if (isPush && pushOffset) {\n popupHeight = $el[0].offsetHeight;\n $pushEl = $el.prevAll('.popup.modal-in').eq(0);\n if ($pushEl.length === 0) {\n $pushEl = app.$el.children('.view, .views');\n }\n }\n if (pageContentEl) {\n pageContentScrollTop = pageContentEl.scrollTop;\n pageContentScrollHeight = pageContentEl.scrollHeight;\n pageContentOffsetHeight = pageContentEl.offsetHeight;\n if (!(pageContentScrollHeight === pageContentOffsetHeight) && !(direction === 'to-bottom' && pageContentScrollTop === 0) && !(direction === 'to-top' && pageContentScrollTop === pageContentScrollHeight - pageContentOffsetHeight)) {\n $el.transform('');\n $el.transition('');\n isTouched = false;\n isMoved = false;\n return;\n }\n }\n isMoved = true;\n popup.emit('local::swipeStart popupSwipeStart', popup);\n popup.$el.trigger('popup:swipestart');\n } else {\n popup.emit('local::swipeMove popupSwipeMove', popup);\n popup.$el.trigger('popup:swipemove');\n }\n e.preventDefault();\n if (isPush && pushOffset) {\n const pushProgress = 1 - Math.abs(touchesDiff / popupHeight);\n const scale = 1 - (1 - pushViewScale(pushOffset)) * pushProgress;\n if ($pushEl.hasClass('popup')) {\n if ($pushEl.hasClass('popup-push')) {\n $pushEl.transition(0).forEach(el => {\n el.style.setProperty('transform', `translate3d(0, calc(-1 * ${pushProgress} * (var(--f7-popup-push-offset) + 10px)) , 0px) scale(${scale})`, 'important');\n });\n } else {\n $pushEl.transition(0).forEach(el => {\n el.style.setProperty('transform', `translate3d(0, 0px , 0px) scale(${scale})`, 'important');\n });\n }\n } else {\n $pushEl.transition(0).forEach(el => {\n el.style.setProperty('transform', `translate3d(0,0,0) scale(${scale})`, 'important');\n });\n }\n }\n $el.transition(0).transform(`translate3d(0,${-touchesDiff}px,0)`);\n }\n function handleTouchEnd(e) {\n if (!e.isTrusted) return;\n isTouched = false;\n if (!isMoved) {\n return;\n }\n popup.emit('local::swipeEnd popupSwipeEnd', popup);\n popup.$el.trigger('popup:swipeend');\n isMoved = false;\n allowSwipeToClose = false;\n $el.transition('');\n if (isPush && pushOffset) {\n $pushEl.transition('').transform('');\n }\n const direction = touchesDiff <= 0 ? 'to-bottom' : 'to-top';\n if (typeof popup.params.swipeToClose === 'string' && direction !== popup.params.swipeToClose) {\n $el.transform('');\n allowSwipeToClose = true;\n return;\n }\n const diff = Math.abs(touchesDiff);\n const timeDiff = new Date().getTime() - touchStartTime;\n if (timeDiff < 300 && diff > 20 || timeDiff >= 300 && diff > 100) {\n nextTick(() => {\n if (direction === 'to-bottom') {\n $el.addClass('swipe-close-to-bottom');\n } else {\n $el.addClass('swipe-close-to-top');\n }\n $el.transform('');\n popup.emit('local::swipeclose popupSwipeClose', popup);\n popup.$el.trigger('popup:swipeclose');\n popup.close();\n allowSwipeToClose = true;\n });\n return;\n }\n allowSwipeToClose = true;\n $el.transform('');\n }\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n if (popup.params.swipeToClose) {\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n popup.once('popupDestroy', () => {\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n });\n }\n let hasPreviousPushPopup;\n const updatePushOffset = () => {\n const wasPush = isPush;\n if (popup.push) {\n isPush = popup.push && (app.width < 630 || app.height < 630 || $el.hasClass('popup-tablet-fullscreen'));\n }\n if (isPush && !wasPush) {\n // eslint-disable-next-line\n setPushOffset();\n } else if (isPush && wasPush) {\n popup.$htmlEl[0].style.setProperty('--f7-popup-push-scale', pushViewScale(pushOffset));\n } else if (!isPush && wasPush) {\n popup.$htmlEl.removeClass('with-modal-popup-push');\n popup.$htmlEl[0].style.removeProperty('--f7-popup-push-scale');\n }\n };\n const setPushOffset = () => {\n app.off('resize', updatePushOffset);\n if (popup.push) {\n isPush = popup.push && (app.width < 630 || app.height < 630 || $el.hasClass('popup-tablet-fullscreen'));\n }\n if (isPush) {\n pushOffset = parseInt($el.css('--f7-popup-push-offset'), 10);\n if (Number.isNaN(pushOffset)) {\n pushOffset = 0;\n }\n if (!pushOffset) pushOffset = app.theme === 'ios' ? 44 : 48;\n popup.$htmlEl[0].style.setProperty('--f7-popup-push-offset', `${pushOffset}px`);\n $el.addClass('popup-push');\n popup.$htmlEl.addClass('with-modal-popup-push');\n popup.$htmlEl[0].style.setProperty('--f7-popup-push-scale', pushViewScale(pushOffset));\n }\n app.on('resize', updatePushOffset);\n };\n popup.on('open', () => {\n hasPreviousPushPopup = false;\n if (popup.params.closeOnEscape) {\n $(document).on('keydown', onKeyDown);\n }\n $el.prevAll('.popup.modal-in').addClass('popup-behind');\n setPushOffset();\n });\n popup.on('opened', () => {\n $el.removeClass('swipe-close-to-bottom swipe-close-to-top');\n if (popup.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n popup.on('close', () => {\n hasPreviousPushPopup = popup.$el.prevAll('.popup-push.modal-in').length > 0;\n if (popup.params.closeOnEscape) {\n $(document).off('keydown', onKeyDown);\n }\n if (popup.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n $el.prevAll('.popup.modal-in').eq(0).removeClass('popup-behind');\n if (isPush && pushOffset && !hasPreviousPushPopup) {\n popup.$htmlEl.removeClass('with-modal-popup-push');\n popup.$htmlEl.addClass('with-modal-popup-push-closing');\n }\n app.off('resize', updatePushOffset);\n });\n popup.on('closed', () => {\n $el.removeClass('popup-behind');\n if (isPush && pushOffset && !hasPreviousPushPopup) {\n popup.$htmlEl.removeClass('with-modal-popup-push-closing');\n popup.$htmlEl[0].style.removeProperty('--f7-popup-push-scale');\n popup.$htmlEl[0].style.removeProperty('--f7-popup-push-offset');\n }\n });\n $el[0].f7Modal = popup;\n return popup;\n }\n}\nexport default Popup;","import Popup from './popup-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'popup',\n params: {\n popup: {\n backdrop: true,\n backdropEl: undefined,\n backdropUnique: false,\n closeByBackdropClick: true,\n closeOnEscape: false,\n swipeToClose: false,\n swipeHandler: null,\n push: false,\n containerEl: null\n }\n },\n static: {\n Popup\n },\n create() {\n const app = this;\n app.popup = ModalMethods({\n app,\n constructor: Popup,\n defaultSelector: '.popup.modal-in',\n parentSelector: '.popup'\n });\n },\n clicks: {\n '.popup-open': function openPopup($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.popup.open(data.popup, data.animate, $clickedEl);\n },\n '.popup-close': function closePopup($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.popup.close(data.popup, data.animate, $clickedEl);\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\nclass LoginScreen extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const loginScreen = this;\n loginScreen.params = extendedParams;\n\n // Find Element\n let $el;\n if (!loginScreen.params.el) {\n $el = $(loginScreen.params.content).filter(node => node.nodeType === 1).eq(0);\n } else {\n $el = $(loginScreen.params.el).eq(0);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return loginScreen.destroy();\n }\n extend(loginScreen, {\n app,\n $el,\n el: $el[0],\n type: 'loginScreen'\n });\n $el[0].f7Modal = loginScreen;\n return loginScreen;\n }\n}\nexport default LoginScreen;","import LoginScreen from './login-screen-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'loginScreen',\n static: {\n LoginScreen\n },\n create() {\n const app = this;\n app.loginScreen = ModalMethods({\n app,\n constructor: LoginScreen,\n defaultSelector: '.login-screen.modal-in'\n });\n },\n clicks: {\n '.login-screen-open': function openLoginScreen($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.loginScreen.open(data.loginScreen, data.animate, $clickedEl);\n },\n '.login-screen-close': function closeLoginScreen($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.loginScreen.close(data.loginScreen, data.animate, $clickedEl);\n }\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\nclass Popover extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.popover, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const popover = this;\n const device = getDevice();\n const window = getWindow();\n const document = getDocument();\n popover.params = extendedParams;\n\n // Find Element\n let $el;\n if (!popover.params.el) {\n $el = $(popover.params.content).filter(node => node.nodeType === 1).eq(0);\n } else {\n $el = $(popover.params.el).eq(0);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n // Find Target\n const $targetEl = $(popover.params.targetEl).eq(0);\n if ($el.length === 0) {\n return popover.destroy();\n }\n\n // Backdrop\n let $backdropEl;\n const forceBackdropUnique = popover.params.backdrop && app.$el.find('.popover.modal-in').filter(anotherPopoverEl => anotherPopoverEl !== $el[0]).length > 0;\n if (popover.params.backdrop && popover.params.backdropEl) {\n $backdropEl = $(popover.params.backdropEl);\n } else if (popover.params.backdrop) {\n if (popover.params.backdropUnique || forceBackdropUnique) {\n $backdropEl = $('
                ');\n $backdropEl[0].f7PopoverRef = popover;\n popover.$containerEl.append($backdropEl);\n } else {\n $backdropEl = popover.$containerEl.children('.popover-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('
                ');\n popover.$containerEl.append($backdropEl);\n }\n }\n\n // Find Arrow\n let $arrowEl;\n if ($el.find('.popover-arrow').length === 0 && popover.params.arrow) {\n $arrowEl = $('
                ');\n $el.prepend($arrowEl);\n } else {\n $arrowEl = $el.find('.popover-arrow');\n }\n\n // Open\n const originalOpen = popover.open;\n extend(popover, {\n app,\n $el,\n el: $el[0],\n $targetEl,\n targetEl: $targetEl[0],\n $arrowEl,\n arrowEl: $arrowEl[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'popover',\n forceBackdropUnique,\n open() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n let [targetEl, animate] = args;\n if (typeof args[0] === 'boolean') [animate, targetEl] = args;\n if (targetEl) {\n popover.$targetEl = $(targetEl);\n popover.targetEl = popover.$targetEl[0];\n }\n return originalOpen.call(popover, animate);\n }\n });\n function handleResize() {\n popover.resize();\n }\n popover.on('popoverOpen', () => {\n popover.resize();\n app.on('resize', handleResize);\n $(window).on('keyboardDidShow keyboardDidHide', handleResize);\n popover.on('popoverClose popoverBeforeDestroy', () => {\n app.off('resize', handleResize);\n $(window).off('keyboardDidShow keyboardDidHide', handleResize);\n });\n });\n let touchStartTarget = null;\n function handleTouchStart(e) {\n touchStartTarget = e.target;\n }\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);\n if (keyboardOpened) return;\n if ($target.closest(popover.el).length === 0) {\n if (popover.params.closeByBackdropClick && popover.params.backdrop && popover.backdropEl && popover.backdropEl === target && touchStartTarget === target) {\n popover.close();\n } else if (popover.params.closeByOutsideClick && touchStartTarget === target) {\n const isAnotherPopoverBackdrop = $target.hasClass('popover-backdrop-unique') && target.f7PopoverRef !== popover || $target.hasClass('popover-backdrop') && target !== popover.backdropEl;\n const isAnotherPopoverTarget = target.closest('.popover') && target.closest('.popover') !== popover.$el[0];\n if (!isAnotherPopoverBackdrop && !isAnotherPopoverTarget) {\n popover.close();\n }\n }\n }\n }\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && popover.params.closeOnEscape) {\n popover.close();\n }\n }\n if (popover.params.closeOnEscape) {\n popover.on('popoverOpen', () => {\n $(document).on('keydown', onKeyDown);\n });\n popover.on('popoverClose', () => {\n $(document).off('keydown', onKeyDown);\n });\n }\n popover.on('popoverOpened', () => {\n if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {\n app.on('touchstart', handleTouchStart);\n app.on('click', handleClick);\n }\n });\n popover.on('popoverClose', () => {\n if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {\n app.off('touchstart', handleTouchStart);\n app.off('click', handleClick);\n }\n });\n $el[0].f7Modal = popover;\n return popover;\n }\n resize() {\n const popover = this;\n const {\n app,\n $el,\n $targetEl,\n $arrowEl\n } = popover;\n const {\n targetX,\n targetY,\n verticalPosition\n } = popover.params;\n $el.css({\n left: '',\n top: ''\n });\n const [width, height] = [$el.width(), $el.height()];\n let arrowSize = 0;\n let arrowLeft;\n let arrowTop;\n const hasArrow = $arrowEl.length > 0;\n const arrowMin = app.theme === 'ios' ? 13 : 24;\n if (hasArrow) {\n $arrowEl.removeClass('on-left on-right on-top on-bottom').css({\n left: '',\n top: ''\n });\n arrowSize = $arrowEl.width() / 2;\n }\n $el.removeClass('popover-on-left popover-on-right popover-on-top popover-on-bottom popover-on-middle').css({\n left: '',\n top: ''\n });\n let targetWidth;\n let targetHeight;\n let targetOffsetLeft;\n let targetOffsetTop;\n let safeAreaTop = parseInt($('html').css('--f7-safe-area-top'), 10);\n let safeAreaLeft = parseInt($('html').css('--f7-safe-area-left'), 10);\n let safeAreaRight = parseInt($('html').css('--f7-safe-area-right'), 10);\n if (Number.isNaN(safeAreaTop)) safeAreaTop = 0;\n if (Number.isNaN(safeAreaLeft)) safeAreaLeft = 0;\n if (Number.isNaN(safeAreaRight)) safeAreaRight = 0;\n if ($targetEl && $targetEl.length > 0) {\n targetWidth = $targetEl.outerWidth();\n targetHeight = $targetEl.outerHeight();\n const targetOffset = $targetEl.offset();\n targetOffsetLeft = targetOffset.left - app.left;\n targetOffsetTop = targetOffset.top - app.top;\n const targetParentPage = $targetEl.parents('.page');\n if (targetParentPage.length > 0) {\n targetOffsetTop -= targetParentPage[0].scrollTop;\n }\n } else if (typeof targetX !== 'undefined' && targetY !== 'undefined') {\n targetOffsetLeft = targetX;\n targetOffsetTop = targetY;\n targetWidth = popover.params.targetWidth || 0;\n targetHeight = popover.params.targetHeight || 0;\n }\n let [left, top, diff] = [0, 0, 0];\n // Top Position\n const forcedPosition = verticalPosition === 'auto' ? false : verticalPosition;\n let position = forcedPosition || 'top';\n if (forcedPosition === 'top' || !forcedPosition && height + arrowSize < targetOffsetTop - safeAreaTop) {\n // On top\n top = targetOffsetTop - height - arrowSize;\n } else if (forcedPosition === 'bottom' || !forcedPosition && height + arrowSize < app.height - targetOffsetTop - targetHeight) {\n // On bottom\n position = 'bottom';\n top = targetOffsetTop + targetHeight + arrowSize;\n } else {\n // On middle\n position = 'middle';\n top = targetHeight / 2 + targetOffsetTop - height / 2;\n diff = top;\n top = Math.max(5, Math.min(top, app.height - height - 5));\n diff -= top;\n }\n\n // Horizontal Position\n if (position === 'top' || position === 'bottom') {\n left = targetWidth / 2 + targetOffsetLeft - width / 2;\n diff = left;\n left = Math.max(5, Math.min(left, app.width - width - 5));\n if (safeAreaLeft) {\n left = Math.max(left, safeAreaLeft);\n }\n if (safeAreaRight && left + width > app.width - 5 - safeAreaRight) {\n left = app.width - 5 - safeAreaRight - width;\n }\n diff -= left;\n if (hasArrow) {\n if (position === 'top') {\n $arrowEl.addClass('on-bottom');\n }\n if (position === 'bottom') {\n $arrowEl.addClass('on-top');\n }\n arrowLeft = width / 2 - arrowSize + diff;\n arrowLeft = Math.max(Math.min(arrowLeft, width - arrowSize * 2 - arrowMin), arrowMin);\n $arrowEl.css({\n left: `${arrowLeft}px`\n });\n }\n } else if (position === 'middle') {\n left = targetOffsetLeft - width - arrowSize;\n if (hasArrow) $arrowEl.addClass('on-right');\n if (left < 5 || left + width + safeAreaRight > app.width || left < safeAreaLeft) {\n if (left < 5) left = targetOffsetLeft + targetWidth + arrowSize;\n if (left + width + safeAreaRight > app.width) left = app.width - width - 5 - safeAreaRight;\n if (left < safeAreaLeft) left = safeAreaLeft;\n if (hasArrow) $arrowEl.removeClass('on-right').addClass('on-left');\n }\n if (hasArrow) {\n arrowTop = height / 2 - arrowSize + diff;\n arrowTop = Math.max(Math.min(arrowTop, height - arrowSize * 2 - arrowMin), arrowMin);\n $arrowEl.css({\n top: `${arrowTop}px`\n });\n }\n }\n\n // Horizontal Position\n let hPosition;\n if (targetOffsetLeft < app.width / 2) {\n hPosition = 'right';\n } else {\n hPosition = 'left';\n }\n $el.addClass(`popover-on-${position} popover-on-${hPosition}`);\n\n // Apply Styles\n $el.css({\n top: `${top}px`,\n left: `${left}px`\n });\n }\n}\nexport default Popover;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Popover from './popover-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'popover',\n params: {\n popover: {\n verticalPosition: 'auto',\n arrow: true,\n backdrop: true,\n backdropEl: undefined,\n backdropUnique: false,\n closeByBackdropClick: true,\n closeByOutsideClick: true,\n closeOnEscape: false,\n containerEl: null\n }\n },\n static: {\n Popover\n },\n create() {\n const app = this;\n app.popover = extend(ModalMethods({\n app,\n constructor: Popover,\n defaultSelector: '.popover.modal-in'\n }), {\n open(popoverEl, targetEl, animate) {\n let $popoverEl = $(popoverEl);\n if ($popoverEl.length > 1) {\n // check if same popover in other page\n const $targetPage = $(targetEl).parents('.page');\n if ($targetPage.length) {\n $popoverEl.each(el => {\n const $el = $(el);\n if ($el.parents($targetPage)[0] === $targetPage[0]) {\n $popoverEl = $el;\n }\n });\n }\n }\n if ($popoverEl.length > 1) {\n $popoverEl = $popoverEl.eq($popoverEl.length - 1);\n }\n let popover = $popoverEl[0].f7Modal;\n const data = $popoverEl.dataset();\n if (!popover) {\n popover = new Popover(app, Object.assign({\n el: $popoverEl,\n targetEl\n }, data));\n }\n return popover.open(targetEl, animate);\n }\n });\n },\n clicks: {\n '.popover-open': function openPopover($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.popover.open(data.popover, $clickedEl, data.animate);\n },\n '.popover-close': function closePopover($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.popover.close(data.popover, data.animate, $clickedEl);\n }\n }\n};","/* eslint indent: [\"off\"] */\nimport { getWindow, getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\nimport { extend, nextTick } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\nimport $ from '../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Actions extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.actions, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const actions = this;\n const device = getDevice();\n const window = getWindow();\n const document = getDocument();\n actions.params = extendedParams;\n\n // Buttons\n let groups;\n if (actions.params.buttons) {\n groups = actions.params.buttons;\n if (!Array.isArray(groups[0])) groups = [groups];\n }\n actions.groups = groups;\n\n // Find Element\n let $el;\n if (actions.params.el) {\n $el = $(actions.params.el).eq(0);\n } else if (actions.params.content) {\n $el = $(actions.params.content).filter(node => node.nodeType === 1).eq(0);\n } else if (actions.params.buttons) {\n if (actions.params.convertToPopover) {\n actions.popoverHtml = actions.renderPopover();\n }\n actions.actionsHtml = actions.render();\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el && $el.length === 0 && !(actions.actionsHtml || actions.popoverHtml)) {\n return actions.destroy();\n }\n\n // Backdrop\n let $backdropEl;\n if (actions.params.backdrop && actions.params.backdropEl) {\n $backdropEl = $(actions.params.backdropEl);\n } else if (actions.params.backdrop) {\n if (actions.params.backdropUnique) {\n $backdropEl = $('
                ');\n actions.$containerEl.append($backdropEl);\n } else {\n $backdropEl = actions.$containerEl.children('.actions-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('
                ');\n actions.$containerEl.append($backdropEl);\n }\n }\n const originalOpen = actions.open;\n const originalClose = actions.close;\n let popover;\n function buttonOnClick(e) {\n const $buttonEl = $(this);\n let buttonIndex;\n let groupIndex;\n if ($buttonEl.hasClass('list-button') || $buttonEl.hasClass('item-link')) {\n buttonIndex = $buttonEl.parents('li').index();\n groupIndex = $buttonEl.parents('.list').index();\n } else {\n buttonIndex = $buttonEl.index();\n groupIndex = $buttonEl.parents('.actions-group').index();\n }\n if (typeof groups !== 'undefined') {\n const button = groups[groupIndex][buttonIndex];\n if (button.onClick) button.onClick(actions, e);\n if (actions.params.onClick) actions.params.onClick(actions, e);\n if (button.close !== false) actions.close();\n }\n }\n actions.open = function open(animate) {\n let convertToPopover = false;\n const {\n targetEl,\n targetX,\n targetY,\n targetWidth,\n targetHeight\n } = actions.params;\n if (actions.params.convertToPopover && (targetEl || targetX !== undefined && targetY !== undefined)) {\n // Popover\n if (actions.params.forceToPopover || device.ios && device.ipad || app.width >= 768 || device.desktop) {\n convertToPopover = true;\n }\n }\n if (convertToPopover && actions.popoverHtml) {\n popover = app.popover.create({\n containerEl: actions.params.containerEl,\n content: actions.popoverHtml,\n backdrop: actions.params.backdrop,\n targetEl,\n targetX,\n targetY,\n targetWidth,\n targetHeight,\n on: {\n open() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:open ${actions.type.toLowerCase()}:open`);\n actions.emit(`local::open modalOpen ${actions.type}Open`, actions);\n },\n opened() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:opened ${actions.type.toLowerCase()}:opened`);\n actions.emit(`local::opened modalOpened ${actions.type}Opened`, actions);\n },\n close() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:close ${actions.type.toLowerCase()}:close`);\n actions.emit(`local::close modalClose ${actions.type}Close`, actions);\n },\n closed() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:closed ${actions.type.toLowerCase()}:closed`);\n actions.emit(`local::closed modalClosed ${actions.type}Closed`, actions);\n }\n }\n });\n popover.open(animate);\n popover.once('popoverOpened', () => {\n popover.$el.find('.list-button, .item-link').each(buttonEl => {\n $(buttonEl).on('click', buttonOnClick);\n });\n });\n popover.once('popoverClosed', () => {\n popover.$el.find('.list-button, .item-link').each(buttonEl => {\n $(buttonEl).off('click', buttonOnClick);\n });\n nextTick(() => {\n popover.destroy();\n popover = undefined;\n });\n });\n } else {\n actions.$el = actions.actionsHtml ? $(actions.actionsHtml) : actions.$el;\n actions.$el[0].f7Modal = actions;\n if (actions.groups) {\n actions.$el.find('.actions-button').each(buttonEl => {\n $(buttonEl).on('click', buttonOnClick);\n });\n actions.once('actionsClosed', () => {\n actions.$el.find('.actions-button').each(buttonEl => {\n $(buttonEl).off('click', buttonOnClick);\n });\n });\n }\n actions.el = actions.$el[0];\n originalOpen.call(actions, animate);\n }\n return actions;\n };\n actions.close = function close(animate) {\n if (popover) {\n popover.close(animate);\n } else {\n originalClose.call(actions, animate);\n }\n return actions;\n };\n extend(actions, {\n app,\n $el,\n el: $el ? $el[0] : undefined,\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'actions'\n });\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);\n if (keyboardOpened) return;\n if ($target.closest(actions.el).length === 0) {\n if (actions.params.closeByBackdropClick && actions.params.backdrop && actions.backdropEl && actions.backdropEl === target) {\n actions.close();\n } else if (actions.params.closeByOutsideClick) {\n actions.close();\n }\n }\n }\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && actions.params.closeOnEscape) {\n actions.close();\n }\n }\n if (actions.params.closeOnEscape) {\n actions.on('open', () => {\n $(document).on('keydown', onKeyDown);\n });\n actions.on('close', () => {\n $(document).off('keydown', onKeyDown);\n });\n }\n actions.on('opened', () => {\n if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {\n app.on('click', handleClick);\n }\n });\n actions.on('close', () => {\n if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {\n app.off('click', handleClick);\n }\n });\n if ($el) {\n $el[0].f7Modal = actions;\n }\n return actions;\n }\n render() {\n const actions = this;\n if (actions.params.render) return actions.params.render.call(actions, actions);\n const {\n groups\n } = actions;\n const cssClass = actions.params.cssClass;\n return $jsx(\"div\", {\n class: `actions-modal${actions.params.grid ? ' actions-grid' : ''} ${cssClass || ''}`\n }, groups.map(group => $jsx(\"div\", {\n class: \"actions-group\"\n }, group.map(button => {\n const buttonClasses = [`actions-${button.label ? 'label' : 'button'}`];\n const {\n color,\n bg,\n strong,\n disabled,\n label,\n text,\n icon\n } = button;\n if (color) buttonClasses.push(`color-${color}`);\n if (bg) buttonClasses.push(`bg-color-${bg}`);\n if (strong) buttonClasses.push('actions-button-strong');\n if (disabled) buttonClasses.push('disabled');\n if (label) {\n return $jsx(\"div\", {\n class: buttonClasses.join(' ')\n }, text);\n }\n return $jsx(\"div\", {\n class: buttonClasses.join(' ')\n }, icon && $jsx(\"div\", {\n class: \"actions-button-media\"\n }, icon), $jsx(\"div\", {\n class: \"actions-button-text\"\n }, text));\n }))));\n }\n renderPopover() {\n const actions = this;\n if (actions.params.renderPopover) return actions.params.renderPopover.call(actions, actions);\n const {\n groups\n } = actions;\n const cssClass = actions.params.cssClass;\n return $jsx(\"div\", {\n class: `popover popover-from-actions ${cssClass || ''}`\n }, $jsx(\"div\", {\n class: \"popover-inner\"\n }, groups.map(group => $jsx(\"div\", {\n class: \"list\"\n }, $jsx(\"ul\", null, group.map(button => {\n const itemClasses = [];\n const {\n color,\n bg,\n strong,\n disabled,\n label,\n text,\n icon\n } = button;\n if (color) itemClasses.push(`color-${color}`);\n if (bg) itemClasses.push(`bg-color-${bg}`);\n if (strong) itemClasses.push('popover-from-actions-strong');\n if (disabled) itemClasses.push('disabled');\n if (label) {\n itemClasses.push('popover-from-actions-label');\n return `
              • ${text}
              • `;\n }\n if (icon) {\n itemClasses.push('item-link item-content');\n return $jsx(\"li\", null, $jsx(\"a\", {\n class: itemClasses.join(' ')\n }, $jsx(\"div\", {\n class: \"item-media\"\n }, icon), $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: \"item-title\"\n }, text))));\n }\n itemClasses.push('list-button');\n return $jsx(\"li\", null, $jsx(\"a\", {\n class: itemClasses.join(' ')\n }, text));\n }))))));\n }\n}\nexport default Actions;","import Actions from './actions-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'actions',\n params: {\n actions: {\n convertToPopover: true,\n forceToPopover: false,\n backdrop: true,\n backdropEl: undefined,\n backdropUnique: false,\n cssClass: null,\n closeByBackdropClick: true,\n closeOnEscape: false,\n render: null,\n renderPopover: null,\n containerEl: null\n }\n },\n static: {\n Actions\n },\n create() {\n const app = this;\n app.actions = ModalMethods({\n app,\n constructor: Actions,\n defaultSelector: '.actions-modal.modal-in'\n });\n },\n clicks: {\n '.actions-open': function openActions($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.actions.open(data.actions, data.animate, $clickedEl);\n },\n '.actions-close': function closeActions($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.actions.close(data.actions, data.animate, $clickedEl);\n }\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, now, getTranslate } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\nclass Sheet extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.sheet, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const sheet = this;\n const window = getWindow();\n const document = getDocument();\n const support = getSupport();\n const device = getDevice();\n sheet.params = extendedParams;\n if (typeof sheet.params.backdrop === 'undefined') {\n sheet.params.backdrop = app.theme !== 'ios';\n }\n\n // Find Element\n let $el;\n if (!sheet.params.el) {\n $el = $(sheet.params.content).filter(node => node.nodeType === 1).eq(0);\n } else {\n $el = $(sheet.params.el).eq(0);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return sheet.destroy();\n }\n let $backdropEl;\n if (sheet.params.backdrop && sheet.params.backdropEl) {\n $backdropEl = $(sheet.params.backdropEl);\n } else if (sheet.params.backdrop) {\n if (sheet.params.backdropUnique) {\n $backdropEl = $('
                ');\n sheet.$containerEl.append($backdropEl);\n } else {\n $backdropEl = sheet.$containerEl.children('.sheet-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('
                ');\n sheet.$containerEl.append($backdropEl);\n }\n }\n extend(sheet, {\n app,\n push: $el.hasClass('sheet-modal-push') || sheet.params.push,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'sheet',\n $htmlEl: $('html')\n });\n if (sheet.params.push) {\n $el.addClass('sheet-modal-push');\n }\n let $pageContentEl;\n function scrollToElementOnOpen() {\n const $scrollEl = $(sheet.params.scrollToEl).eq(0);\n if ($scrollEl.length === 0) return;\n $pageContentEl = $scrollEl.parents('.page-content');\n if ($pageContentEl.length === 0) return;\n const paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n const pageHeight = $pageContentEl[0].offsetHeight - paddingTop - $el.height();\n const pageScrollHeight = $pageContentEl[0].scrollHeight - paddingTop - $el.height();\n const pageScroll = $pageContentEl.scrollTop();\n let newPaddingBottom;\n const scrollElTop = $scrollEl.offset().top - paddingTop + $scrollEl[0].offsetHeight;\n if (scrollElTop > pageHeight) {\n const scrollTop = pageScroll + scrollElTop - pageHeight;\n if (scrollTop + pageHeight > pageScrollHeight) {\n newPaddingBottom = scrollTop + pageHeight - pageScrollHeight + paddingBottom;\n if (pageHeight === pageScrollHeight) {\n newPaddingBottom = $el.height();\n }\n $pageContentEl.css({\n 'padding-bottom': `${newPaddingBottom}px`\n });\n }\n $pageContentEl.scrollTop(scrollTop, 300);\n }\n }\n function scrollToElementOnClose() {\n if ($pageContentEl && $pageContentEl.length > 0) {\n $pageContentEl.css({\n 'padding-bottom': ''\n });\n }\n }\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);\n if (keyboardOpened) return;\n if ($target.closest(sheet.el).length === 0) {\n if (sheet.params.closeByBackdropClick && sheet.params.backdrop && sheet.backdropEl && sheet.backdropEl === target) {\n sheet.close();\n } else if (sheet.params.closeByOutsideClick) {\n sheet.close();\n }\n }\n }\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && sheet.params.closeOnEscape) {\n sheet.close();\n }\n }\n let pushOffset;\n function pushViewScale(offset) {\n return (app.height - offset * 2) / app.height;\n }\n const useBreakpoints = sheet.params.breakpoints && sheet.params.breakpoints.length > 0;\n let isTouched = false;\n let startTouch;\n let currentTouch;\n let isScrolling;\n let touchStartTime;\n let touchesDiff;\n let isMoved = false;\n let isTopSheetModal;\n let swipeStepTranslate;\n let startTranslate;\n let currentTranslate;\n let sheetElOffsetHeight;\n let minTranslate;\n let maxTranslate;\n let $pushViewEl;\n let pushBorderRadius;\n let sheetPageContentEl;\n let sheetPageContentScrollTop;\n let sheetPageContentScrollHeight;\n let sheetPageContentOffsetHeight;\n let breakpointsTranslate = [];\n let currentBreakpointIndex;\n let backdropBreakpointSet = true;\n function handleTouchStart(e) {\n if (isTouched || !(sheet.params.swipeToClose || sheet.params.swipeToStep) || !e.isTrusted) return;\n if (sheet.params.swipeHandler && $(e.target).closest(sheet.params.swipeHandler).length === 0) {\n return;\n }\n if ($(e.target).closest('.sortable-handler').length > 0) return;\n isTouched = true;\n isMoved = false;\n startTouch = {\n x: e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY\n };\n touchStartTime = now();\n isScrolling = undefined;\n isTopSheetModal = $el.hasClass('sheet-modal-top');\n if (!sheet.params.swipeHandler && e.type === 'touchstart') {\n sheetPageContentEl = $(e.target).closest('.page-content')[0];\n }\n }\n function handleTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n currentTouch = {\n x: e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY\n };\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(currentTouch.x - startTouch.x) > Math.abs(currentTouch.y - startTouch.y));\n }\n if (isScrolling) {\n isTouched = false;\n isMoved = false;\n return;\n }\n touchesDiff = startTouch.y - currentTouch.y;\n const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n if (!isMoved) {\n if (sheetPageContentEl && !$el.hasClass('modal-in-swipe-step')) {\n sheetPageContentScrollTop = sheetPageContentEl.scrollTop;\n sheetPageContentScrollHeight = sheetPageContentEl.scrollHeight;\n sheetPageContentOffsetHeight = sheetPageContentEl.offsetHeight;\n if (!(sheetPageContentScrollHeight === sheetPageContentOffsetHeight) && !(direction === 'to-bottom' && sheetPageContentScrollTop === 0) && !(direction === 'to-top' && sheetPageContentScrollTop === sheetPageContentScrollHeight - sheetPageContentOffsetHeight)) {\n $el.transform('');\n isTouched = false;\n isMoved = false;\n return;\n }\n }\n if (sheet.push && pushOffset) {\n $pushViewEl = app.$el.children('.view, .views');\n }\n sheetElOffsetHeight = $el[0].offsetHeight;\n startTranslate = getTranslate($el[0], 'y');\n if (isTopSheetModal) {\n minTranslate = sheet.params.swipeToClose ? -sheetElOffsetHeight : -swipeStepTranslate;\n maxTranslate = 0;\n } else {\n minTranslate = 0;\n maxTranslate = sheet.params.swipeToClose ? sheetElOffsetHeight : useBreakpoints ? breakpointsTranslate[0] : swipeStepTranslate;\n }\n isMoved = true;\n }\n currentTranslate = startTranslate - touchesDiff;\n currentTranslate = Math.min(Math.max(currentTranslate, minTranslate), maxTranslate);\n e.preventDefault();\n if (useBreakpoints) {\n let progress = isTopSheetModal ? 1 + currentTranslate / sheetElOffsetHeight : 1 - currentTranslate / sheetElOffsetHeight;\n progress = Math.abs(progress);\n progress = Math.min(Math.max(progress, 0), 1);\n // eslint-disable-next-line\n setBackdropBreakpoint(progress);\n // eslint-disable-next-line\n setPushBreakpoint(progress);\n }\n if (sheet.push && pushOffset && !useBreakpoints) {\n let progress = (currentTranslate - startTranslate) / sheetElOffsetHeight;\n if (sheet.params.swipeToStep) {\n if (isTopSheetModal) {\n progress = currentTranslate / swipeStepTranslate;\n } else {\n progress = 1 - (swipeStepTranslate - currentTranslate) / swipeStepTranslate;\n }\n }\n progress = Math.abs(progress);\n progress = Math.min(Math.max(progress, 0), 1);\n const pushProgress = 1 - progress;\n const scale = 1 - (1 - pushViewScale(pushOffset)) * pushProgress;\n $pushViewEl.transition(0).forEach(el => {\n el.style.setProperty('transform', `translate3d(0,0,0) scale(${scale})`, 'important');\n });\n if (sheet.params.swipeToStep) {\n $pushViewEl.css('border-radius', `${pushBorderRadius * pushProgress}px`);\n }\n }\n $el.transition(0).transform(`translate3d(0,${currentTranslate}px,0)`);\n if (sheet.params.swipeToStep) {\n let progress;\n if (isTopSheetModal) {\n progress = 1 - currentTranslate / swipeStepTranslate;\n } else {\n progress = (swipeStepTranslate - currentTranslate) / swipeStepTranslate;\n }\n progress = Math.min(Math.max(progress, 0), 1);\n $el.trigger('sheet:stepprogress', progress);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, progress);\n }\n }\n function handleTouchEnd() {\n isTouched = false;\n if (!isMoved) {\n return;\n }\n isMoved = false;\n $el.transform('').transition('');\n if (sheet.push && pushOffset) {\n $pushViewEl.transition('');\n if (!useBreakpoints) {\n $pushViewEl.transform('');\n $pushViewEl.css('border-radius', '');\n }\n }\n const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n const diff = Math.abs(touchesDiff);\n if (diff === 0 || currentTranslate === startTranslate) return;\n const timeDiff = new Date().getTime() - touchStartTime;\n if (!sheet.params.swipeToStep && !useBreakpoints) {\n if (direction !== (isTopSheetModal ? 'to-top' : 'to-bottom')) {\n return;\n }\n if (timeDiff < 300 && diff > 20 || timeDiff >= 300 && diff > sheetElOffsetHeight / 2) {\n sheet.close();\n }\n return;\n }\n const openDirection = isTopSheetModal ? 'to-bottom' : 'to-top';\n const closeDirection = isTopSheetModal ? 'to-top' : 'to-bottom';\n const absCurrentTranslate = Math.abs(currentTranslate);\n const absSwipeStepTranslate = Math.abs(swipeStepTranslate);\n if (timeDiff < 300 && diff > 10 && useBreakpoints) {\n // SHORT SWIPES BREAKPOINTS\n if (direction === openDirection && typeof currentBreakpointIndex !== 'undefined') {\n if (currentBreakpointIndex === params.breakpoints.length - 1) {\n // open\n sheet.setBreakpoint(1);\n } else {\n // move to next breakpoint\n currentBreakpointIndex = Math.min(breakpointsTranslate.length - 1, currentBreakpointIndex + 1);\n sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n }\n }\n if (direction === closeDirection) {\n if (currentBreakpointIndex === 0) {\n // close\n sheet.close();\n } else {\n // move to prev breakpoint\n if (typeof currentBreakpointIndex === 'undefined') {\n currentBreakpointIndex = params.breakpoints.length - 1;\n } else {\n currentBreakpointIndex = Math.max(0, currentBreakpointIndex - 1);\n }\n sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n }\n }\n } else if (timeDiff < 300 && diff > 10) {\n // SHORT SWIPES SWIPE STEP\n if (direction === openDirection && absCurrentTranslate < absSwipeStepTranslate) {\n // open step\n $el.removeClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 1);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 1);\n sheet.emit('local::_swipeStep', false);\n $el.trigger('sheet:stepopen');\n sheet.emit('local::stepOpen sheetStepOpen', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n $pushViewEl.css('border-radius', '');\n }\n }\n if (direction === closeDirection && absCurrentTranslate > absSwipeStepTranslate) {\n // close sheet\n if (sheet.params.swipeToClose) {\n sheet.close();\n } else {\n // close step\n $el.addClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 0);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n sheet.emit('local::_swipeStep', true);\n $el.trigger('sheet:stepclose');\n sheet.emit('local::stepClose sheetStepClose', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n $pushViewEl.css('border-radius', '0px');\n }\n }\n }\n if (direction === closeDirection && absCurrentTranslate <= absSwipeStepTranslate) {\n // close step\n $el.addClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 0);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n sheet.emit('local::_swipeStep', true);\n $el.trigger('sheet:stepclose');\n sheet.emit('local::stepClose sheetStepClose', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n $pushViewEl.css('border-radius', '0px');\n }\n }\n return;\n }\n if (timeDiff >= 300 && useBreakpoints) {\n // LONG SWIPES BREAKPOINTS\n const allBreakpoints = [sheetElOffsetHeight, ...breakpointsTranslate, 0];\n const closestTranslate = allBreakpoints.reduce((prev, curr) => {\n return Math.abs(curr - currentTranslate) < Math.abs(prev - currentTranslate) ? curr : prev;\n });\n const closestIndex = allBreakpoints.indexOf(closestTranslate);\n if (closestTranslate === 0) {\n // open\n sheet.setBreakpoint(1);\n } else if (closestIndex === 0) {\n // close\n sheet.close();\n } else {\n // set bp\n currentBreakpointIndex = closestIndex - 1;\n sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n }\n } else if (timeDiff >= 300) {\n // LONG SWIPES SWIPE STEP\n const stepOpened = !$el.hasClass('modal-in-swipe-step');\n if (!stepOpened) {\n if (absCurrentTranslate < absSwipeStepTranslate / 2) {\n // open step\n $el.removeClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 1);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 1);\n sheet.emit('local::_swipeStep', false);\n $el.trigger('sheet:stepopen');\n sheet.emit('local::stepOpen sheetStepOpen', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n $pushViewEl.css('border-radius', '');\n }\n } else if (absCurrentTranslate - absSwipeStepTranslate > (sheetElOffsetHeight - absSwipeStepTranslate) / 2) {\n // close sheet\n if (sheet.params.swipeToClose) sheet.close();\n }\n } else if (stepOpened) {\n if (absCurrentTranslate > absSwipeStepTranslate + (sheetElOffsetHeight - absSwipeStepTranslate) / 2) {\n // close sheet\n if (sheet.params.swipeToClose) sheet.close();\n } else if (absCurrentTranslate > absSwipeStepTranslate / 2) {\n // close step\n $el.addClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 0);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n sheet.emit('local::_swipeStep', true);\n $el.trigger('sheet:stepclose');\n sheet.emit('local::stepClose sheetStepClose', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n $pushViewEl.css('border-radius', '0px');\n }\n }\n }\n }\n }\n const setPushBreakpoint = breakpoint => {\n const {\n pushBreakpoint\n } = params;\n if (pushBreakpoint === null || typeof pushBreakpoint === 'undefined' || !sheet.push || !pushOffset) return;\n if (breakpoint >= pushBreakpoint) {\n sheet.$htmlEl.addClass('with-modal-sheet-push').removeClass('with-modal-sheet-push-closing');\n $pushViewEl.transition('').forEach(el => {\n el.style.setProperty('transform', `translate3d(0,0,0) scale(${pushViewScale(pushOffset)})`, 'important');\n });\n $pushViewEl.css('border-radius', `${pushBorderRadius * 1}px`);\n } else {\n const pushBreakpoints = [0, ...params.breakpoints, 1];\n const pushTransparentBreakpoint = pushBreakpoints[pushBreakpoints.indexOf(pushBreakpoint) - 1];\n if (breakpoint <= pushTransparentBreakpoint) {\n $pushViewEl.transition('').css('transform', '');\n $pushViewEl.css('border-radius', '');\n sheet.$htmlEl.removeClass('with-modal-sheet-push');\n if (breakpoint === pushTransparentBreakpoint) {\n sheet.$htmlEl.addClass('with-modal-sheet-push-closing');\n }\n } else {\n const progress = (breakpoint - pushTransparentBreakpoint) / (pushBreakpoint - pushTransparentBreakpoint);\n sheet.$htmlEl.addClass('with-modal-sheet-push').removeClass('with-modal-sheet-push-closing');\n $pushViewEl.transition(0).forEach(el => {\n el.style.setProperty('transform', `translate3d(0,0,0) scale(${1 - (1 - pushViewScale(pushOffset)) * progress})`, 'important');\n });\n $pushViewEl.css('border-radius', `${pushBorderRadius * progress}px`);\n }\n }\n };\n const setBackdropBreakpoint = breakpoint => {\n const {\n backdrop,\n backdropBreakpoint\n } = params;\n if (!backdropBreakpoint || !backdrop || !$backdropEl.length) return;\n if (breakpoint >= backdropBreakpoint) {\n if (!backdropBreakpointSet) {\n $backdropEl.transition('').css({\n opacity: '',\n pointerEvents: ''\n });\n }\n backdropBreakpointSet = true;\n } else {\n const backdropBreakpoints = [0, ...params.breakpoints, 1];\n const backdropTransparentBreakpoint = backdropBreakpoints[backdropBreakpoints.indexOf(backdropBreakpoint) - 1];\n if (breakpoint <= backdropTransparentBreakpoint) {\n if (backdropBreakpointSet) {\n $backdropEl.transition('').css({\n opacity: 0,\n pointerEvents: 'none'\n });\n }\n backdropBreakpointSet = false;\n } else {\n const progress = (breakpoint - backdropTransparentBreakpoint) / (backdropBreakpoint - backdropTransparentBreakpoint);\n $backdropEl.transition(0).css({\n opacity: progress,\n pointerEvents: 'auto'\n });\n }\n }\n };\n sheet.calcBreakpoints = () => {\n if (!useBreakpoints) {\n return;\n }\n const fullSize = $el[0].offsetHeight;\n // eslint-disable-next-line\n const isTopSheetModal = $el.hasClass('sheet-modal-top');\n breakpointsTranslate = [];\n sheet.params.breakpoints.forEach(ratio => {\n breakpointsTranslate.push((fullSize - fullSize * ratio) * (isTopSheetModal ? -1 : 1));\n });\n };\n sheet.setBreakpoint = value => {\n if (!useBreakpoints) {\n return sheet;\n }\n if (value === 1) {\n // open\n if (!sheet.opened) {\n sheet.open();\n }\n $el.removeClass('modal-in-breakpoint');\n currentBreakpointIndex = undefined;\n setBackdropBreakpoint(value);\n setPushBreakpoint(value);\n $el.trigger('sheet:breakpoint', value);\n sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);\n } else if (value === 0) {\n // close\n $el.trigger('sheet:breakpoint', value);\n sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);\n sheet.close();\n } else {\n const index = params.breakpoints.indexOf(value);\n if (index < 0) return sheet;\n if (!sheet.opened) {\n sheet.open();\n }\n setBackdropBreakpoint(value);\n setPushBreakpoint(value);\n $el.trigger('sheet:breakpoint', value);\n sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);\n currentBreakpointIndex = index;\n $el[0].style.setProperty('--f7-sheet-breakpoint', `${breakpointsTranslate[index]}px`);\n $el.addClass('modal-in-breakpoint');\n }\n return sheet;\n };\n const setBreakpointsOnResize = () => {\n sheet.calcBreakpoints();\n if (typeof currentBreakpointIndex !== 'undefined') {\n sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n }\n };\n sheet.setSwipeStep = function setSwipeStep(byResize) {\n if (byResize === void 0) {\n byResize = true;\n }\n const $swipeStepEl = $el.find('.sheet-modal-swipe-step').eq(0);\n if (!$swipeStepEl.length) return;\n\n // eslint-disable-next-line\n if ($el.hasClass('sheet-modal-top')) {\n swipeStepTranslate = -($swipeStepEl.offset().top - $el.offset().top + $swipeStepEl[0].offsetHeight);\n } else {\n swipeStepTranslate = $el[0].offsetHeight - ($swipeStepEl.offset().top - $el.offset().top + $swipeStepEl[0].offsetHeight);\n }\n $el[0].style.setProperty('--f7-sheet-swipe-step', `${swipeStepTranslate}px`);\n if (!byResize) {\n $el.addClass('modal-in-swipe-step');\n sheet.emit('local::_swipeStep', true);\n }\n };\n function onResize() {\n if (useBreakpoints) {\n setBreakpointsOnResize();\n } else {\n sheet.setSwipeStep(true);\n }\n }\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n if (sheet.params.swipeToClose || sheet.params.swipeToStep || useBreakpoints) {\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n sheet.once('sheetDestroy', () => {\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n });\n }\n sheet.on('open', () => {\n if (sheet.params.closeOnEscape) {\n $(document).on('keydown', onKeyDown);\n }\n $el.prevAll('.popup.modal-in').addClass('popup-behind');\n app.on('resize', onResize);\n if (sheet.params.scrollToEl) {\n scrollToElementOnOpen();\n }\n if (sheet.push) {\n pushOffset = parseInt($el.css('--f7-sheet-push-offset'), 10);\n if (Number.isNaN(pushOffset)) pushOffset = 0;\n if (!pushOffset) pushOffset = app.theme === 'ios' ? 44 : 48;\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-offset', `${pushOffset}px`);\n $el.addClass('sheet-modal-push');\n if (!useBreakpoints) {\n sheet.$htmlEl.addClass('with-modal-sheet-push');\n }\n if (!sheet.params.swipeToStep && !useBreakpoints) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n } else {\n $pushViewEl = app.$el.children('.view, .views');\n pushBorderRadius = app.theme === 'ios' ? 10 : 16;\n $pushViewEl.css('border-radius', '0px');\n }\n }\n if (useBreakpoints) {\n sheet.calcBreakpoints();\n sheet.setBreakpoint(params.breakpoints[0]);\n } else if (sheet.params.swipeToStep) {\n sheet.setSwipeStep(false);\n }\n });\n sheet.on('opened', () => {\n if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n sheet.on('close', () => {\n currentBreakpointIndex = undefined;\n if (sheet.params.swipeToStep || useBreakpoints) {\n $el.removeClass('modal-in-swipe-step modal-in-breakpoint');\n sheet.emit('local::_swipeStep', false);\n }\n app.off('resize', onResize);\n if (sheet.params.closeOnEscape) {\n $(document).off('keydown', onKeyDown);\n }\n if (sheet.params.scrollToEl) {\n scrollToElementOnClose();\n }\n if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n $el.prevAll('.popup.modal-in').eq(0).removeClass('popup-behind');\n if (sheet.push && pushOffset) {\n sheet.$htmlEl.removeClass('with-modal-sheet-push');\n sheet.$htmlEl.addClass('with-modal-sheet-push-closing');\n if ($pushViewEl) {\n $pushViewEl.transform('');\n $pushViewEl.css('border-radius', '');\n }\n }\n });\n sheet.on('closed', () => {\n if (sheet.push && pushOffset) {\n sheet.$htmlEl.removeClass('with-modal-sheet-push-closing');\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-offset');\n }\n });\n sheet.stepOpen = function stepOpen() {\n $el.removeClass('modal-in-swipe-step');\n sheet.emit('local::_swipeStep', false);\n if (sheet.push) {\n if (!pushOffset) {\n pushOffset = parseInt($el.css('--f7-sheet-push-offset'), 10);\n if (Number.isNaN(pushOffset)) pushOffset = 0;\n }\n if (pushOffset) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n }\n }\n };\n sheet.stepClose = function stepClose() {\n $el.addClass('modal-in-swipe-step');\n sheet.emit('local::_swipeStep', true);\n if (sheet.push) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n }\n };\n sheet.stepToggle = function stepToggle() {\n $el.toggleClass('modal-in-swipe-step');\n sheet.emit('local::_swipeStep', $el.hasClass('modal-in-swipe-step'));\n };\n $el[0].f7Modal = sheet;\n return sheet;\n }\n}\nexport default Sheet;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Sheet from './sheet-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'sheet',\n params: {\n sheet: {\n push: false,\n backdrop: undefined,\n backdropEl: undefined,\n backdropUnique: false,\n closeByBackdropClick: true,\n closeByOutsideClick: false,\n closeOnEscape: false,\n swipeToClose: false,\n swipeToStep: false,\n breakpoints: [],\n backdropBreakpoint: 0,\n pushBreakpoint: 0,\n swipeHandler: null,\n containerEl: null\n }\n },\n static: {\n Sheet\n },\n create() {\n const app = this;\n app.sheet = extend({}, ModalMethods({\n app,\n constructor: Sheet,\n defaultSelector: '.sheet-modal.modal-in'\n }), {\n stepOpen(sheet) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.stepOpen) return sheetInstance.stepOpen();\n return undefined;\n },\n stepClose(sheet) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.stepClose) return sheetInstance.stepClose();\n return undefined;\n },\n stepToggle(sheet) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.stepToggle) return sheetInstance.stepToggle();\n return undefined;\n },\n setBreakpoint(sheet, breakpoint) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.setBreakpoint) return sheetInstance.setBreakpoint(breakpoint);\n return undefined;\n }\n });\n },\n clicks: {\n '.sheet-open': function openSheet($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n if ($('.sheet-modal.modal-in').length > 0 && data.sheet && $(data.sheet)[0] !== $('.sheet-modal.modal-in')[0]) {\n app.sheet.close('.sheet-modal.modal-in');\n }\n app.sheet.open(data.sheet, data.animate, $clickedEl);\n },\n '.sheet-close': function closeSheet($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.sheet.close(data.sheet, data.animate, $clickedEl);\n }\n }\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, nextTick } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Toast extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.toast, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const toast = this;\n const window = getWindow();\n toast.app = app;\n toast.params = extendedParams;\n const {\n closeButton,\n closeTimeout\n } = toast.params;\n let $el;\n if (!toast.params.el) {\n // Find Element\n const toastHtml = toast.render();\n $el = $(toastHtml);\n } else {\n $el = $(toast.params.el);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return toast.destroy();\n }\n extend(toast, {\n $el,\n el: $el[0],\n type: 'toast'\n });\n $el[0].f7Modal = toast;\n if (closeButton) {\n $el.find('.toast-button').on('click', () => {\n toast.emit('local::closeButtonClick toastCloseButtonClick', toast);\n toast.close();\n });\n toast.on('beforeDestroy', () => {\n $el.find('.toast-button').off('click');\n });\n }\n let timeoutId;\n toast.on('open', () => {\n $('.toast.modal-in').each(openedEl => {\n const toastInstance = app.toast.get(openedEl);\n if (openedEl !== toast.el && toastInstance) {\n toastInstance.close();\n }\n });\n if (closeTimeout) {\n timeoutId = nextTick(() => {\n toast.close();\n }, closeTimeout);\n }\n });\n toast.on('close', () => {\n window.clearTimeout(timeoutId);\n });\n if (toast.params.destroyOnClose) {\n toast.once('closed', () => {\n setTimeout(() => {\n toast.destroy();\n }, 0);\n });\n }\n return toast;\n }\n render() {\n const toast = this;\n if (toast.params.render) return toast.params.render.call(toast, toast);\n const {\n position,\n horizontalPosition,\n cssClass,\n icon,\n text,\n closeButton,\n closeButtonColor,\n closeButtonText\n } = toast.params;\n const horizontalClass = position === 'top' || position === 'bottom' ? `toast-horizontal-${horizontalPosition}` : '';\n return $jsx(\"div\", {\n class: `toast toast-${position} ${horizontalClass} ${cssClass || ''} ${icon ? 'toast-with-icon' : ''}`\n }, $jsx(\"div\", {\n class: \"toast-content\"\n }, icon && $jsx(\"div\", {\n class: \"toast-icon\"\n }, icon), $jsx(\"div\", {\n class: \"toast-text\"\n }, text), closeButton && !icon && $jsx(\"a\", {\n class: `toast-button button ${closeButtonColor ? `color-${closeButtonColor}` : ''}`\n }, closeButtonText)));\n }\n}\nexport default Toast;","import { extend } from '../../shared/utils.js';\nimport Toast from './toast-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'toast',\n static: {\n Toast\n },\n create() {\n const app = this;\n app.toast = extend({}, ModalMethods({\n app,\n constructor: Toast,\n defaultSelector: '.toast.modal-in'\n }), {\n // Shortcuts\n show(params) {\n extend(params, {\n destroyOnClose: true\n });\n return new Toast(app, params).open();\n }\n });\n },\n params: {\n toast: {\n icon: null,\n text: null,\n position: 'bottom',\n horizontalPosition: 'left',\n closeButton: false,\n closeButtonColor: null,\n closeButtonText: 'Ok',\n closeTimeout: null,\n cssClass: null,\n render: null,\n containerEl: null\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { bindMethods, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\nconst Preloader = {\n init(el) {\n const app = this;\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n const $el = $(el);\n if ($el.length === 0 || $el.children('.preloader-inner').length > 0 || $el.children('.preloader-inner-line').length > 0) return;\n $el.append(preloaders[`${app.theme}PreloaderContent`]);\n },\n // Modal\n visible: false,\n show(color) {\n if (color === void 0) {\n color = 'white';\n }\n const app = this;\n if (Preloader.visible) return;\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';\n $('html').addClass('with-modal-preloader');\n // prettier-ignore\n app.$el.append(`\n
                \n
                \n
                ${preloaderInner}
                \n
                \n `);\n Preloader.visible = true;\n },\n showIn(el, color) {\n if (color === void 0) {\n color = 'white';\n }\n const app = this;\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';\n $(el || 'html').addClass('with-modal-preloader');\n // prettier-ignore\n $(el || app.$el).append(`\n
                \n
                \n
                ${preloaderInner}
                \n
                \n `);\n },\n hide() {\n const app = this;\n if (!Preloader.visible) return;\n $('html').removeClass('with-modal-preloader');\n app.$el.find('.preloader-backdrop, .preloader-modal').remove();\n Preloader.visible = false;\n },\n hideIn(el) {\n const app = this;\n $(el || 'html').removeClass('with-modal-preloader');\n $(el || app.$el).find('.preloader-backdrop, .preloader-modal').remove();\n }\n};\nexport default {\n name: 'preloader',\n create() {\n const app = this;\n bindMethods(app, {\n preloader: Preloader\n });\n },\n on: {\n photoBrowserOpen(pb) {\n const app = this;\n pb.$el.find('.preloader').each(preloaderEl => {\n app.preloader.init(preloaderEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.preloader').each(preloaderEl => {\n app.preloader.init(preloaderEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.preloader').each(preloaderEl => {\n app.preloader.init(preloaderEl);\n });\n }\n },\n vnode: {\n preloader: {\n insert(vnode) {\n const app = this;\n const preloaderEl = vnode.elm;\n app.preloader.init(preloaderEl);\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nconst Progressbar = {\n set() {\n const app = this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n let [el, progress, duration] = args;\n if (typeof args[0] === 'number') {\n [progress, duration] = args;\n el = app.$el;\n }\n if (typeof progress === 'undefined' || progress === null) return el;\n if (!progress) progress = 0;\n const $el = $(el || app.$el);\n if ($el.length === 0) {\n return el;\n }\n const progressNormalized = Math.min(Math.max(progress, 0), 100);\n let $progressbarEl;\n if ($el.hasClass('progressbar')) $progressbarEl = $el.eq(0);else {\n $progressbarEl = $el.children('.progressbar');\n }\n if ($progressbarEl.length === 0 || $progressbarEl.hasClass('progressbar-infinite')) {\n return $progressbarEl;\n }\n let $progressbarLine = $progressbarEl.children('span');\n if ($progressbarLine.length === 0) {\n $progressbarLine = $('');\n $progressbarEl.append($progressbarLine);\n }\n $progressbarLine.transition(typeof duration !== 'undefined' ? duration : '').transform(`translate3d(${(-100 + progressNormalized) * (app.rtl ? -1 : 1)}%,0,0)`);\n return $progressbarEl[0];\n },\n show() {\n const app = this;\n\n // '.page', 50, 'multi'\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n let [el, progress, color] = args;\n let type = 'determined';\n if (args.length === 2) {\n if ((typeof args[0] === 'string' || typeof args[0] === 'object') && typeof args[1] === 'string') {\n // '.page', 'multi'\n [el, color, progress] = args;\n type = 'infinite';\n } else if (typeof args[0] === 'number' && typeof args[1] === 'string') {\n // 50, 'multi'\n [progress, color] = args;\n el = app.$el;\n }\n } else if (args.length === 1) {\n if (typeof args[0] === 'number') {\n el = app.$el;\n progress = args[0];\n } else if (typeof args[0] === 'string') {\n type = 'infinite';\n el = app.$el;\n color = args[0];\n }\n } else if (args.length === 0) {\n type = 'infinite';\n el = app.$el;\n }\n const $el = $(el);\n if ($el.length === 0) return undefined;\n let $progressbarEl;\n if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {\n $progressbarEl = $el;\n } else {\n $progressbarEl = $el.children('.progressbar:not(.progressbar-out), .progressbar-infinite:not(.progressbar-out)');\n if ($progressbarEl.length === 0) {\n $progressbarEl = $(`\n \n ${type === 'infinite' ? '' : ''}\n `);\n $el.append($progressbarEl);\n }\n }\n if (typeof progress !== 'undefined') {\n app.progressbar.set($progressbarEl, progress);\n }\n return $progressbarEl[0];\n },\n hide(el, removeAfterHide) {\n if (removeAfterHide === void 0) {\n removeAfterHide = true;\n }\n const app = this;\n const $el = $(el || app.$el);\n if ($el.length === 0) return undefined;\n let $progressbarEl;\n if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {\n $progressbarEl = $el;\n } else {\n $progressbarEl = $el.children('.progressbar, .progressbar-infinite');\n }\n if ($progressbarEl.length === 0 || !$progressbarEl.hasClass('progressbar-in') || $progressbarEl.hasClass('progressbar-out')) {\n return $progressbarEl;\n }\n $progressbarEl.removeClass('progressbar-in').addClass('progressbar-out').animationEnd(() => {\n if (removeAfterHide) {\n $progressbarEl.remove();\n }\n });\n return $progressbarEl;\n }\n};\nexport default {\n name: 'progressbar',\n create() {\n const app = this;\n bindMethods(app, {\n progressbar: Progressbar\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.progressbar').each(progressbarEl => {\n const $progressbarEl = $(progressbarEl);\n app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.progressbar').each(progressbarEl => {\n const $progressbarEl = $(progressbarEl);\n app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));\n });\n }\n },\n vnode: {\n progressbar: {\n insert(vnode) {\n const app = this;\n const el = vnode.elm;\n app.progressbar.set(el, el.getAttribute('data-progress'));\n },\n update(vnode) {\n const app = this;\n const el = vnode.elm;\n app.progressbar.set(el, el.getAttribute('data-progress'));\n }\n }\n }\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nconst Sortable = {\n init() {\n const app = this;\n const document = getDocument();\n let isTouched;\n let isMoved;\n let touchStartY;\n let touchesDiff;\n let $sortingEl;\n let $sortingItems;\n let $sortableContainer;\n let sortingElHeight;\n let minTop;\n let maxTop;\n let $insertAfterEl;\n let $insertBeforeEl;\n let indexFrom;\n let $pageEl;\n let $pageContentEl;\n let pageHeight;\n let pageOffset;\n let sortingElOffsetLocal;\n let sortingElOffsetTop;\n let initialScrollTop;\n let wasTapHold;\n function handleTouchStart(e, isTapHold) {\n isMoved = false;\n isTouched = true;\n wasTapHold = false;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n $sortingEl = $(e.target).closest('li').eq(0);\n indexFrom = $sortingEl.index();\n $sortableContainer = $sortingEl.parents('.sortable');\n const $listGroup = $sortingEl.parents('.list-group');\n if ($listGroup.length && $listGroup.parents($sortableContainer).length) {\n $sortableContainer = $listGroup;\n }\n $sortingItems = $sortableContainer.children('ul').children('li:not(.disallow-sorting):not(.no-sorting)');\n if (app.panel) app.panel.allowOpen = false;\n if (app.swipeout) app.swipeout.allow = false;\n if (isTapHold) {\n $sortingEl.addClass('sorting');\n $sortableContainer.addClass('sortable-sorting');\n wasTapHold = true;\n }\n }\n function handleTouchMove(e) {\n if (!isTouched || !$sortingEl) return;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (!isMoved) {\n $pageEl = $sortingEl.parents('.page');\n $pageContentEl = $sortingEl.parents('.page-content');\n const paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n initialScrollTop = $pageContentEl[0].scrollTop;\n pageOffset = $pageEl.offset().top + paddingTop;\n pageHeight = $pageEl.height() - paddingTop - paddingBottom;\n $sortingEl.addClass('sorting');\n $sortableContainer.addClass('sortable-sorting');\n sortingElOffsetLocal = $sortingEl[0].offsetTop;\n minTop = $sortingEl[0].offsetTop;\n maxTop = $sortingEl.parent().height() - sortingElOffsetLocal - $sortingEl.height();\n sortingElHeight = $sortingEl[0].offsetHeight;\n sortingElOffsetTop = $sortingEl.offset().top;\n }\n isMoved = true;\n e.preventDefault();\n e.f7PreventSwipePanel = true;\n touchesDiff = pageY - touchStartY;\n const translateScrollOffset = $pageContentEl[0].scrollTop - initialScrollTop;\n const translate = Math.min(Math.max(touchesDiff + translateScrollOffset, -minTop), maxTop);\n $sortingEl.transform(`translate3d(0,${translate}px,0)`);\n const scrollAddition = 44;\n let allowScroll = true;\n if (touchesDiff + translateScrollOffset + scrollAddition < -minTop) {\n allowScroll = false;\n }\n if (touchesDiff + translateScrollOffset - scrollAddition > maxTop) {\n allowScroll = false;\n }\n $insertBeforeEl = undefined;\n $insertAfterEl = undefined;\n let scrollDiff;\n if (allowScroll) {\n if (sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition > pageOffset + pageHeight) {\n // To Bottom\n scrollDiff = sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition - (pageOffset + pageHeight);\n }\n if (sortingElOffsetTop + touchesDiff < pageOffset + scrollAddition) {\n // To Top\n scrollDiff = sortingElOffsetTop + touchesDiff - pageOffset - scrollAddition;\n }\n if (scrollDiff) {\n $pageContentEl[0].scrollTop += scrollDiff;\n }\n }\n $sortingItems.each(el => {\n const $currentEl = $(el);\n if ($currentEl[0] === $sortingEl[0]) return;\n const currentElOffset = $currentEl[0].offsetTop;\n const currentElHeight = $currentEl.height();\n const sortingElOffset = sortingElOffsetLocal + translate;\n let currentTranslate;\n const prevTranslate = $currentEl[0].f7Translate;\n if (sortingElOffset >= currentElOffset - currentElHeight / 2 && $sortingEl.index() < $currentEl.index()) {\n currentTranslate = -sortingElHeight;\n $currentEl.transform(`translate3d(0, ${currentTranslate}px,0)`);\n $insertAfterEl = $currentEl;\n $insertBeforeEl = undefined;\n } else if (sortingElOffset <= currentElOffset + currentElHeight / 2 && $sortingEl.index() > $currentEl.index()) {\n currentTranslate = sortingElHeight;\n $currentEl[0].f7Translate = currentTranslate;\n $currentEl.transform(`translate3d(0, ${currentTranslate}px,0)`);\n $insertAfterEl = undefined;\n if (!$insertBeforeEl) $insertBeforeEl = $currentEl;\n } else {\n currentTranslate = undefined;\n $currentEl.transform('translate3d(0, 0%,0)');\n }\n if (prevTranslate !== currentTranslate) {\n $currentEl.trigger('sortable:move');\n app.emit('sortableMove', $currentEl[0], $sortableContainer[0]);\n }\n $currentEl[0].f7Translate = currentTranslate;\n });\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n if (isTouched && !isMoved) {\n if (app.panel) app.panel.allowOpen = true;\n if (app.swipeout) app.swipeout.allow = true;\n if (wasTapHold) {\n $sortingEl.removeClass('sorting');\n $sortableContainer.removeClass('sortable-sorting');\n }\n }\n isTouched = false;\n isMoved = false;\n return;\n }\n if (app.panel) app.panel.allowOpen = true;\n if (app.swipeout) app.swipeout.allow = true;\n $sortingItems.transform('');\n $sortingEl.removeClass('sorting');\n $sortableContainer.removeClass('sortable-sorting');\n let indexTo;\n if ($insertAfterEl) indexTo = $insertAfterEl.index();else if ($insertBeforeEl) indexTo = $insertBeforeEl.index();\n let moveElements = $sortableContainer.dataset().sortableMoveElements;\n if (typeof moveElements === 'undefined') {\n moveElements = app.params.sortable.moveElements;\n }\n if (moveElements) {\n if ($insertAfterEl) {\n $sortingEl.insertAfter($insertAfterEl);\n }\n if ($insertBeforeEl) {\n $sortingEl.insertBefore($insertBeforeEl);\n }\n }\n if (($insertAfterEl || $insertBeforeEl) && $sortableContainer.hasClass('virtual-list')) {\n indexFrom = $sortingEl[0].f7VirtualListIndex;\n if (typeof indexFrom === 'undefined') indexFrom = $sortingEl.attr('data-virtual-list-index');\n if ($insertBeforeEl) {\n indexTo = $insertBeforeEl[0].f7VirtualListIndex;\n if (typeof indexTo === 'undefined') indexTo = $insertBeforeEl.attr('data-virtual-list-index');\n } else {\n indexTo = $insertAfterEl[0].f7VirtualListIndex;\n if (typeof indexTo === 'undefined') indexTo = $insertAfterEl.attr('data-virtual-list-index');\n }\n if (indexTo !== null) indexTo = parseInt(indexTo, 10);else indexTo = undefined;\n const virtualList = $sortableContainer[0].f7VirtualList;\n if (indexFrom) indexFrom = parseInt(indexFrom, 10);\n if (indexTo) indexTo = parseInt(indexTo, 10);\n if (virtualList) virtualList.moveItem(indexFrom, indexTo);\n }\n if (typeof indexTo !== 'undefined' && !Number.isNaN(indexTo) && indexTo !== indexFrom) {\n $sortingEl.trigger('sortable:sort', {\n from: indexFrom,\n to: indexTo\n });\n app.emit('sortableSort', $sortingEl[0], {\n from: indexFrom,\n to: indexTo,\n el: $sortingEl[0]\n }, $sortableContainer[0]);\n }\n $insertBeforeEl = undefined;\n $insertAfterEl = undefined;\n isTouched = false;\n isMoved = false;\n }\n const activeListener = getSupport().passiveListener ? {\n passive: false,\n capture: false\n } : false;\n $(document).on(app.touchEvents.start, '.list.sortable .sortable-handler', handleTouchStart, activeListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n $(document).on('taphold', '.sortable-tap-hold', (e, pointerEvent) => {\n handleTouchStart(pointerEvent, true);\n });\n },\n enable(el) {\n if (el === void 0) {\n el = '.list.sortable';\n }\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n $el.addClass('sortable-enabled');\n $el.trigger('sortable:enable');\n app.emit('sortableEnable', $el[0]);\n },\n disable(el) {\n if (el === void 0) {\n el = '.list.sortable';\n }\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n $el.removeClass('sortable-enabled');\n $el.trigger('sortable:disable');\n app.emit('sortableDisable', $el[0]);\n },\n toggle(el) {\n if (el === void 0) {\n el = '.list.sortable';\n }\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n if ($el.hasClass('sortable-enabled')) {\n app.sortable.disable($el);\n } else {\n app.sortable.enable($el);\n }\n }\n};\nexport default {\n name: 'sortable',\n params: {\n sortable: {\n moveElements: true\n }\n },\n create() {\n const app = this;\n bindMethods(app, {\n sortable: Sortable\n });\n },\n on: {\n init() {\n const app = this;\n if (!app.params.sortable) return;\n app.sortable.init();\n }\n },\n clicks: {\n '.sortable-enable': function enable($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.sortable.enable(data.sortable);\n },\n '.sortable-disable': function disable($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.sortable.disable(data.sortable);\n },\n '.sortable-toggle': function toggle($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.sortable.toggle(data.sortable);\n }\n }\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nconst Swipeout = {\n init() {\n const app = this;\n const document = getDocument();\n const touchesStart = {};\n let isTouched;\n let isMoved;\n let isScrolling;\n let touchStartTime;\n let touchesDiff;\n let $swipeoutEl;\n let $swipeoutContent;\n let $actionsRight;\n let $actionsLeft;\n let actionsLeftWidth;\n let actionsRightWidth;\n let translate;\n let opened;\n let openedActionsSide;\n let $leftButtons;\n let $rightButtons;\n let direction;\n let $overswipeLeftButton;\n let $overswipeRightButton;\n let overswipeLeft;\n let overswipeRight;\n function handleTouchStart(e) {\n if (!app.swipeout.allow) return;\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = new Date().getTime();\n $swipeoutEl = $(this);\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n if (!isMoved) {\n if ($('.list.sortable-opened').length > 0) return;\n $swipeoutContent = $swipeoutEl.find('.swipeout-content');\n $actionsRight = $swipeoutEl.find('.swipeout-actions-right');\n $actionsLeft = $swipeoutEl.find('.swipeout-actions-left');\n actionsLeftWidth = null;\n actionsRightWidth = null;\n $leftButtons = null;\n $rightButtons = null;\n $overswipeRightButton = null;\n $overswipeLeftButton = null;\n if ($actionsLeft.length > 0) {\n actionsLeftWidth = $actionsLeft.outerWidth();\n $leftButtons = $actionsLeft.children('a');\n $overswipeLeftButton = $actionsLeft.find('.swipeout-overswipe');\n }\n if ($actionsRight.length > 0) {\n actionsRightWidth = $actionsRight.outerWidth();\n $rightButtons = $actionsRight.children('a');\n $overswipeRightButton = $actionsRight.find('.swipeout-overswipe');\n }\n opened = $swipeoutEl.hasClass('swipeout-opened');\n if (opened) {\n openedActionsSide = $swipeoutEl.find('.swipeout-actions-left.swipeout-actions-opened').length > 0 ? 'left' : 'right';\n }\n $swipeoutEl.removeClass('swipeout-transitioning');\n if (!app.params.swipeout.noFollow) {\n $swipeoutEl.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');\n $swipeoutEl.removeClass('swipeout-opened');\n }\n }\n isMoved = true;\n if (e.cancelable) {\n e.preventDefault();\n }\n touchesDiff = pageX - touchesStart.x;\n translate = touchesDiff;\n if (opened) {\n if (openedActionsSide === 'right') translate -= actionsRightWidth;else translate += actionsLeftWidth;\n }\n if (translate > 0 && $actionsLeft.length === 0 || translate < 0 && $actionsRight.length === 0) {\n if (!opened) {\n isTouched = false;\n isMoved = false;\n $swipeoutContent.transform('');\n if ($rightButtons && $rightButtons.length > 0) {\n $rightButtons.transform('');\n }\n if ($leftButtons && $leftButtons.length > 0) {\n $leftButtons.transform('');\n }\n return;\n }\n translate = 0;\n }\n if (translate < 0) direction = 'to-left';else if (translate > 0) direction = 'to-right';else if (!direction) direction = 'to-left';\n let buttonOffset;\n let progress;\n e.f7PreventSwipePanel = true;\n if (app.params.swipeout.noFollow) {\n if (opened) {\n if (openedActionsSide === 'right' && touchesDiff > 0) {\n app.swipeout.close($swipeoutEl);\n }\n if (openedActionsSide === 'left' && touchesDiff < 0) {\n app.swipeout.close($swipeoutEl);\n }\n } else {\n if (touchesDiff < 0 && $actionsRight.length > 0) {\n app.swipeout.open($swipeoutEl, 'right');\n }\n if (touchesDiff > 0 && $actionsLeft.length > 0) {\n app.swipeout.open($swipeoutEl, 'left');\n }\n }\n isTouched = false;\n isMoved = false;\n return;\n }\n overswipeLeft = false;\n overswipeRight = false;\n if ($actionsRight.length > 0) {\n // Show right actions\n let buttonTranslate = translate;\n progress = buttonTranslate / actionsRightWidth;\n if (buttonTranslate < -actionsRightWidth) {\n const ratio = buttonTranslate / -actionsRightWidth;\n buttonTranslate = -actionsRightWidth - (-buttonTranslate - actionsRightWidth) ** 0.8;\n translate = buttonTranslate;\n if ($overswipeRightButton.length > 0 && ratio > app.params.swipeout.overswipeRatio) {\n overswipeRight = true;\n }\n }\n if (direction !== 'to-left') {\n progress = 0;\n buttonTranslate = 0;\n }\n $rightButtons.each(buttonEl => {\n const $buttonEl = $(buttonEl);\n if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;\n }\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if ($overswipeRightButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-left') {\n $buttonEl.css({\n left: `${overswipeRight ? -buttonOffset : 0}px`\n });\n if (overswipeRight) {\n if (!$buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeenter');\n app.emit('swipeoutOverswipeEnter', $swipeoutEl[0]);\n }\n $buttonEl.addClass('swipeout-overswipe-active');\n } else {\n if ($buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeexit');\n app.emit('swipeoutOverswipeExit', $swipeoutEl[0]);\n }\n $buttonEl.removeClass('swipeout-overswipe-active');\n }\n }\n $buttonEl.transform(`translate3d(${buttonTranslate - buttonOffset * (1 + Math.max(progress, -1))}px,0,0)`);\n });\n }\n if ($actionsLeft.length > 0) {\n // Show left actions\n let buttonTranslate = translate;\n progress = buttonTranslate / actionsLeftWidth;\n if (buttonTranslate > actionsLeftWidth) {\n const ratio = buttonTranslate / actionsRightWidth;\n buttonTranslate = actionsLeftWidth + (buttonTranslate - actionsLeftWidth) ** 0.8;\n translate = buttonTranslate;\n if ($overswipeLeftButton.length > 0 && ratio > app.params.swipeout.overswipeRatio) {\n overswipeLeft = true;\n }\n }\n if (direction !== 'to-right') {\n buttonTranslate = 0;\n progress = 0;\n }\n $leftButtons.each((buttonEl, index) => {\n const $buttonEl = $(buttonEl);\n if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;\n }\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if ($overswipeLeftButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-right') {\n $buttonEl.css({\n left: `${overswipeLeft ? buttonOffset : 0}px`\n });\n if (overswipeLeft) {\n if (!$buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeenter');\n app.emit('swipeoutOverswipeEnter', $swipeoutEl[0]);\n }\n $buttonEl.addClass('swipeout-overswipe-active');\n } else {\n if ($buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeexit');\n app.emit('swipeoutOverswipeExit', $swipeoutEl[0]);\n }\n $buttonEl.removeClass('swipeout-overswipe-active');\n }\n }\n if ($leftButtons.length > 1) {\n $buttonEl.css('z-index', $leftButtons.length - index);\n }\n $buttonEl.transform(`translate3d(${buttonTranslate + buttonOffset * (1 - Math.min(progress, 1))}px,0,0)`);\n });\n }\n $swipeoutEl.trigger('swipeout', progress);\n app.emit('swipeout', $swipeoutEl[0], progress);\n $swipeoutContent.transform(`translate3d(${translate}px,0,0)`);\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n const timeDiff = new Date().getTime() - touchStartTime;\n const $actions = direction === 'to-left' ? $actionsRight : $actionsLeft;\n const actionsWidth = direction === 'to-left' ? actionsRightWidth : actionsLeftWidth;\n let action;\n let $buttons;\n let i;\n if (timeDiff < 300 && (touchesDiff < -10 && direction === 'to-left' || touchesDiff > 10 && direction === 'to-right') || timeDiff >= 300 && Math.abs(translate) > actionsWidth / 2) {\n action = 'open';\n } else {\n action = 'close';\n }\n if (timeDiff < 300) {\n if (Math.abs(translate) === 0) action = 'close';\n if (Math.abs(translate) === actionsWidth) action = 'open';\n }\n if (action === 'open') {\n Swipeout.el = $swipeoutEl[0];\n $swipeoutEl.trigger('swipeout:open');\n app.emit('swipeoutOpen', $swipeoutEl[0]);\n $swipeoutEl.addClass('swipeout-opened swipeout-transitioning');\n const newTranslate = direction === 'to-left' ? -actionsWidth : actionsWidth;\n $swipeoutContent.transform(`translate3d(${newTranslate}px,0,0)`);\n $actions.addClass('swipeout-actions-opened');\n $buttons = direction === 'to-left' ? $rightButtons : $leftButtons;\n if ($buttons) {\n for (i = 0; i < $buttons.length; i += 1) {\n $($buttons[i]).transform(`translate3d(${newTranslate}px,0,0)`);\n }\n }\n if (overswipeRight) {\n $actionsRight.find('.swipeout-overswipe').trigger('click', 'f7Overswipe');\n }\n if (overswipeLeft) {\n $actionsLeft.find('.swipeout-overswipe').trigger('click', 'f7Overswipe');\n }\n } else {\n $swipeoutEl.trigger('swipeout:close');\n app.emit('swipeoutClose', $swipeoutEl[0]);\n Swipeout.el = undefined;\n $swipeoutEl.addClass('swipeout-transitioning').removeClass('swipeout-opened');\n $swipeoutContent.transform('');\n $actions.removeClass('swipeout-actions-opened');\n }\n let buttonOffset;\n if ($leftButtons && $leftButtons.length > 0 && $leftButtons !== $buttons) {\n $leftButtons.each(buttonEl => {\n const $buttonEl = $(buttonEl);\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if (typeof buttonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;\n }\n $buttonEl.transform(`translate3d(${buttonOffset}px,0,0)`);\n });\n }\n if ($rightButtons && $rightButtons.length > 0 && $rightButtons !== $buttons) {\n $rightButtons.each(buttonEl => {\n const $buttonEl = $(buttonEl);\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if (typeof buttonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;\n }\n $buttonEl.transform(`translate3d(${-buttonOffset}px,0,0)`);\n });\n }\n $swipeoutContent.transitionEnd(() => {\n if (opened && action === 'open' || !opened && action === 'close') return;\n $swipeoutEl.trigger(action === 'open' ? 'swipeout:opened' : 'swipeout:closed');\n app.emit(action === 'open' ? 'swipeoutOpened' : 'swipeoutClosed', $swipeoutEl[0]);\n $swipeoutEl.removeClass('swipeout-transitioning');\n if (opened && action === 'close') {\n if ($actionsRight.length > 0) {\n $rightButtons.transform('');\n }\n if ($actionsLeft.length > 0) {\n $leftButtons.transform('');\n }\n }\n });\n }\n const passiveListener = getSupport().passiveListener ? {\n passive: true\n } : false;\n app.on('touchstart', e => {\n if (Swipeout.el) {\n const $targetEl = $(e.target);\n if (!($(Swipeout.el).is($targetEl[0]) || $targetEl.parents('.swipeout').is(Swipeout.el) || $targetEl.hasClass('modal-in') || ($targetEl.attr('class') || '').indexOf('-backdrop') > 0 || $targetEl.hasClass('actions-modal') || $targetEl.parents('.actions-modal.modal-in, .dialog.modal-in').length > 0)) {\n app.swipeout.close(Swipeout.el);\n }\n }\n });\n $(document).on(app.touchEvents.start, 'li.swipeout', handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n },\n allow: true,\n el: undefined,\n open() {\n const app = this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n let [el, side, callback] = args;\n if (typeof args[1] === 'function') {\n [el, callback, side] = args;\n }\n const $el = $(el).eq(0);\n if ($el.length === 0) return;\n if (!$el.hasClass('swipeout') || $el.hasClass('swipeout-opened')) return;\n if (!side) {\n if ($el.find('.swipeout-actions-right').length > 0) side = 'right';else side = 'left';\n }\n const $swipeoutActions = $el.find(`.swipeout-actions-${side}`);\n const $swipeoutContent = $el.find('.swipeout-content');\n if ($swipeoutActions.length === 0) return;\n $el.trigger('swipeout:open').addClass('swipeout-opened').removeClass('swipeout-transitioning');\n app.emit('swipeoutOpen', $el[0]);\n $swipeoutActions.addClass('swipeout-actions-opened');\n const $buttons = $swipeoutActions.children('a');\n const swipeoutActionsWidth = $swipeoutActions.outerWidth();\n const translate = side === 'right' ? -swipeoutActionsWidth : swipeoutActionsWidth;\n if ($buttons.length > 1) {\n $buttons.each((buttonEl, buttonIndex) => {\n const $buttonEl = $(buttonEl);\n if (side === 'right') {\n $buttonEl.transform(`translate3d(${-buttonEl.offsetLeft}px,0,0)`);\n } else {\n $buttonEl.css('z-index', $buttons.length - buttonIndex).transform(`translate3d(${swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft}px,0,0)`);\n }\n });\n }\n $el.addClass('swipeout-transitioning');\n $swipeoutContent.transitionEnd(() => {\n $el.trigger('swipeout:opened');\n app.emit('swipeoutOpened', $el[0]);\n if (callback) callback.call($el[0]);\n });\n nextFrame(() => {\n $buttons.transform(`translate3d(${translate}px,0,0)`);\n $swipeoutContent.transform(`translate3d(${translate}px,0,0)`);\n });\n Swipeout.el = $el[0];\n },\n close(el, callback) {\n const app = this;\n const $el = $(el).eq(0);\n if ($el.length === 0) return;\n if (!$el.hasClass('swipeout-opened')) return;\n const side = $el.find('.swipeout-actions-opened').hasClass('swipeout-actions-right') ? 'right' : 'left';\n const $swipeoutActions = $el.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');\n const $buttons = $swipeoutActions.children('a');\n const swipeoutActionsWidth = $swipeoutActions.outerWidth();\n app.swipeout.allow = false;\n $el.trigger('swipeout:close');\n app.emit('swipeoutClose', $el[0]);\n $el.removeClass('swipeout-opened').addClass('swipeout-transitioning');\n let closeTimeout;\n function onSwipeoutClose() {\n app.swipeout.allow = true;\n if ($el.hasClass('swipeout-opened')) return;\n $el.removeClass('swipeout-transitioning');\n $buttons.transform('');\n $el.trigger('swipeout:closed');\n app.emit('swipeoutClosed', $el[0]);\n if (callback) callback.call($el[0]);\n if (closeTimeout) clearTimeout(closeTimeout);\n }\n $el.find('.swipeout-content').transform('').transitionEnd(onSwipeoutClose);\n closeTimeout = setTimeout(onSwipeoutClose, 500);\n $buttons.each(buttonEl => {\n const $buttonEl = $(buttonEl);\n if (side === 'right') {\n $buttonEl.transform(`translate3d(${-buttonEl.offsetLeft}px,0,0)`);\n } else {\n $buttonEl.transform(`translate3d(${swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft}px,0,0)`);\n }\n $buttonEl.css({\n left: '0px'\n }).removeClass('swipeout-overswipe-active');\n });\n if (Swipeout.el && Swipeout.el === $el[0]) Swipeout.el = undefined;\n },\n delete(el, callback) {\n const app = this;\n const $el = $(el).eq(0);\n if ($el.length === 0) return;\n Swipeout.el = undefined;\n $el.trigger('swipeout:delete');\n app.emit('swipeoutDelete', $el[0]);\n $el.css({\n height: `${$el.outerHeight()}px`\n });\n $el.transitionEnd(() => {\n $el.trigger('swipeout:deleted');\n app.emit('swipeoutDeleted', $el[0]);\n if (callback) callback.call($el[0]);\n if ($el.parents('.virtual-list').length > 0) {\n const virtualList = $el.parents('.virtual-list')[0].f7VirtualList;\n const virtualIndex = $el[0].f7VirtualListIndex;\n if (virtualList && typeof virtualIndex !== 'undefined') virtualList.deleteItem(virtualIndex);\n } else if (app.params.swipeout.removeElements) {\n if (app.params.swipeout.removeElementsWithTimeout) {\n setTimeout(() => {\n $el.remove();\n }, app.params.swipeout.removeElementsTimeout);\n } else {\n $el.remove();\n }\n } else {\n $el.removeClass('swipeout-deleting swipeout-transitioning');\n }\n });\n // eslint-disable-next-line\n // $el[0]._clientLeft = $el[0].clientLeft;\n nextFrame(() => {\n $el.addClass('swipeout-deleting swipeout-transitioning').css({\n height: '0px'\n }).find('.swipeout-content').transform('translate3d(-100%,0,0)');\n });\n }\n};\nexport default {\n name: 'swipeout',\n params: {\n swipeout: {\n actionsNoFold: false,\n noFollow: false,\n removeElements: true,\n removeElementsWithTimeout: false,\n removeElementsTimeout: 0,\n overswipeRatio: 1.2\n }\n },\n create() {\n const app = this;\n bindMethods(app, {\n swipeout: Swipeout\n });\n },\n clicks: {\n '.swipeout-open': function openSwipeout($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.swipeout.open(data.swipeout, data.side);\n },\n '.swipeout-close': function closeSwipeout($clickedEl) {\n const app = this;\n const $swipeoutEl = $clickedEl.closest('.swipeout');\n if ($swipeoutEl.length === 0) return;\n app.swipeout.close($swipeoutEl);\n },\n '.swipeout-delete': function deleteSwipeout($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n const $swipeoutEl = $clickedEl.closest('.swipeout');\n if ($swipeoutEl.length === 0) return;\n const {\n confirm,\n confirmTitle\n } = data;\n if (data.confirm) {\n app.dialog.confirm(confirm, confirmTitle, () => {\n app.swipeout.delete($swipeoutEl);\n });\n } else {\n app.swipeout.delete($swipeoutEl);\n }\n }\n },\n on: {\n init() {\n const app = this;\n if (!app.params.swipeout) return;\n app.swipeout.init();\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\nconst Accordion = {\n toggleClicked($clickedEl) {\n const app = this;\n let $accordionItemEl = $clickedEl.closest('.accordion-item').eq(0);\n if (!$accordionItemEl.length) $accordionItemEl = $clickedEl.parents('li').eq(0);\n const $accordionContent = $clickedEl.parents('.accordion-item-content').eq(0);\n if ($accordionContent.length) {\n if ($accordionContent.parents($accordionItemEl).length) return;\n }\n if ($clickedEl.parents('li').length > 1 && $clickedEl.parents('li')[0] !== $accordionItemEl[0]) return;\n app.accordion.toggle($accordionItemEl);\n },\n open(el) {\n const app = this;\n const $el = $(el);\n let prevented = false;\n function prevent() {\n prevented = true;\n }\n $el.trigger('accordion:beforeopen', {\n prevent\n }, prevent);\n app.emit('accordionBeforeOpen', $el[0], prevent);\n if (prevented) return;\n const $list = $el.parents('.accordion-list').eq(0);\n let $contentEl = $el.children('.accordion-item-content');\n $contentEl.removeAttr('aria-hidden');\n if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');\n if ($contentEl.length === 0) return;\n const $openedItem = $list.length > 0 && $el.parent().children('.accordion-item-opened');\n if ($openedItem.length > 0) {\n app.accordion.close($openedItem);\n }\n $contentEl.transitionEnd(() => {\n if ($el.hasClass('accordion-item-opened')) {\n $contentEl.transition(0);\n $contentEl.css('height', 'auto');\n nextFrame(() => {\n $contentEl.transition('');\n $el.trigger('accordion:opened');\n app.emit('accordionOpened', $el[0]);\n });\n } else {\n $contentEl.css('height', '');\n $el.trigger('accordion:closed');\n app.emit('accordionClosed', $el[0]);\n }\n });\n $contentEl.css('height', `${$contentEl[0].scrollHeight}px`);\n $el.trigger('accordion:open');\n $el.addClass('accordion-item-opened');\n app.emit('accordionOpen', $el[0]);\n },\n close(el) {\n const app = this;\n const $el = $(el);\n let prevented = false;\n function prevent() {\n prevented = true;\n }\n $el.trigger('accordion:beforeclose', {\n prevent\n }, prevent);\n app.emit('accordionBeforeClose', $el[0], prevent);\n if (prevented) return;\n let $contentEl = $el.children('.accordion-item-content');\n if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');\n $el.removeClass('accordion-item-opened');\n $contentEl.attr('aria-hidden', true);\n $contentEl.transition(0);\n $contentEl.css('height', `${$contentEl[0].scrollHeight}px`);\n // Close\n $contentEl.transitionEnd(() => {\n if ($el.hasClass('accordion-item-opened')) {\n $contentEl.transition(0);\n $contentEl.css('height', 'auto');\n nextFrame(() => {\n $contentEl.transition('');\n $el.trigger('accordion:opened');\n app.emit('accordionOpened', $el[0]);\n });\n } else {\n $contentEl.css('height', '');\n $el.trigger('accordion:closed');\n app.emit('accordionClosed', $el[0]);\n }\n });\n nextFrame(() => {\n $contentEl.transition('');\n $contentEl.css('height', '');\n $el.trigger('accordion:close');\n app.emit('accordionClose', $el[0]);\n });\n },\n toggle(el) {\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n if ($el.hasClass('accordion-item-opened')) app.accordion.close(el);else app.accordion.open(el);\n }\n};\nexport default {\n name: 'accordion',\n create() {\n const app = this;\n bindMethods(app, {\n accordion: Accordion\n });\n },\n clicks: {\n '.accordion-item .item-link, .accordion-item-toggle, .links-list.accordion-list > ul > li > a': function open($clickedEl) {\n const app = this;\n Accordion.toggleClicked.call(app, $clickedEl);\n }\n }\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\nclass VirtualList extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const vl = this;\n const device = getDevice();\n const document = getDocument();\n let defaultHeight;\n if (app.theme === 'md') {\n defaultHeight = 48;\n } else if (app.theme === 'ios') {\n defaultHeight = 44;\n }\n const defaults = {\n cols: 1,\n height: defaultHeight,\n cache: true,\n dynamicHeightBufferSize: 1,\n showFilteredItemsOnly: false,\n renderExternal: undefined,\n setListHeight: true,\n searchByItem: undefined,\n searchAll: undefined,\n ul: null,\n createUl: true,\n scrollableParentEl: undefined,\n renderItem(item) {\n return `\n
              • \n
                \n
                \n
                ${item}
                \n
                \n
                \n
              • \n `.trim();\n },\n on: {}\n };\n\n // Extend defaults with modules params\n vl.useModulesParams(defaults);\n vl.params = extend(defaults, params);\n if (vl.params.height === undefined || !vl.params.height) {\n vl.params.height = defaultHeight;\n }\n vl.$el = $(params.el);\n vl.el = vl.$el[0];\n if (vl.$el.length === 0) return undefined;\n vl.$el[0].f7VirtualList = vl;\n vl.items = vl.params.items;\n if (vl.params.showFilteredItemsOnly) {\n vl.filteredItems = [];\n }\n if (vl.params.renderItem) {\n vl.renderItem = vl.params.renderItem;\n }\n vl.$pageContentEl = vl.$el.parents('.page-content');\n vl.pageContentEl = vl.$pageContentEl[0];\n vl.$scrollableParentEl = vl.params.scrollableParentEl ? $(vl.params.scrollableParentEl).eq(0) : vl.$pageContentEl;\n if (!vl.$scrollableParentEl.length && vl.$pageContentEl.length) {\n vl.$scrollableParentEl = vl.$pageContentEl;\n }\n vl.scrollableParentEl = vl.$scrollableParentEl[0];\n\n // Bad scroll\n if (typeof vl.params.updatableScroll !== 'undefined') {\n vl.updatableScroll = vl.params.updatableScroll;\n } else {\n vl.updatableScroll = true;\n if (device.ios && device.osVersion.split('.')[0] < 8) {\n vl.updatableScroll = false;\n }\n }\n\n // Append
                  \n const ul = vl.params.ul;\n vl.$ul = ul ? $(vl.params.ul) : vl.$el.children('ul');\n if (vl.$ul.length === 0 && vl.params.createUl) {\n vl.$el.append('
                    ');\n vl.$ul = vl.$el.children('ul');\n }\n vl.ul = vl.$ul[0];\n let $itemsWrapEl;\n if (!vl.ul && !vl.params.createUl) $itemsWrapEl = vl.$el;else $itemsWrapEl = vl.$ul;\n extend(vl, {\n $itemsWrapEl,\n itemsWrapEl: $itemsWrapEl[0],\n // DOM cached items\n domCache: {},\n // Temporary DOM Element\n tempDomElement: document.createElement('ul'),\n // Last repain position\n lastRepaintY: null,\n // Fragment\n fragment: document.createDocumentFragment(),\n // Props\n pageHeight: undefined,\n rowsPerScreen: undefined,\n rowsBefore: undefined,\n rowsAfter: undefined,\n rowsToRender: undefined,\n maxBufferHeight: 0,\n listHeight: undefined,\n dynamicHeight: typeof vl.params.height === 'function',\n autoHeight: vl.params.height === 'auto'\n });\n\n // Install Modules\n vl.useModules();\n\n // Attach events\n const handleScrollBound = vl.handleScroll.bind(vl);\n const handleResizeBound = vl.handleResize.bind(vl);\n let $pageEl;\n let $tabEl;\n let $panelEl;\n let $popupEl;\n vl.attachEvents = function attachEvents() {\n $pageEl = vl.$el.parents('.page').eq(0);\n $tabEl = vl.$el.parents('.tab').filter(tabEl => {\n return $(tabEl).parent('.tabs').parent('.tabs-animated-wrap, swiper-container.tabs').length === 0;\n }).eq(0);\n $panelEl = vl.$el.parents('.panel').eq(0);\n $popupEl = vl.$el.parents('.popup').eq(0);\n vl.$scrollableParentEl.on('scroll', handleScrollBound);\n if ($pageEl.length) $pageEl.on('page:reinit', handleResizeBound);\n if ($tabEl.length) $tabEl.on('tab:show', handleResizeBound);\n if ($panelEl.length) $panelEl.on('panel:open', handleResizeBound);\n if ($popupEl.length) $popupEl.on('popup:open', handleResizeBound);\n app.on('resize', handleResizeBound);\n };\n vl.detachEvents = function attachEvents() {\n vl.$scrollableParentEl.off('scroll', handleScrollBound);\n if ($pageEl.length) $pageEl.off('page:reinit', handleResizeBound);\n if ($tabEl.length) $tabEl.off('tab:show', handleResizeBound);\n if ($panelEl.length) $panelEl.off('panel:open', handleResizeBound);\n if ($popupEl.length) $popupEl.off('popup:open', handleResizeBound);\n app.off('resize', handleResizeBound);\n };\n // Init\n vl.init();\n return vl;\n }\n setListSize(autoHeightRerender) {\n const vl = this;\n const items = vl.filteredItems || vl.items;\n if (!autoHeightRerender) {\n vl.pageHeight = vl.$scrollableParentEl[0].offsetHeight;\n }\n if (vl.dynamicHeight) {\n vl.listHeight = 0;\n vl.heights = [];\n for (let i = 0; i < items.length; i += 1) {\n const itemHeight = vl.params.height(items[i]);\n vl.listHeight += itemHeight;\n vl.heights.push(itemHeight);\n }\n } else if (vl.autoHeight) {\n vl.listHeight = 0;\n if (!vl.heights) vl.heights = [];\n if (!vl.heightsCalculated) vl.heightsCalculated = [];\n const renderedItems = {};\n vl.$itemsWrapEl.find(`[data-virtual-list-index]`).forEach(el => {\n renderedItems[parseInt(el.getAttribute('data-virtual-list-index'), 10)] = el;\n });\n for (let i = 0; i < items.length; i += 1) {\n const itemIndex = vl.items.indexOf(items[i]);\n const renderedItem = renderedItems[itemIndex];\n if (renderedItem) {\n if (!vl.heightsCalculated.includes(itemIndex)) {\n vl.heights[itemIndex] = renderedItem.offsetHeight;\n vl.heightsCalculated.push(itemIndex);\n }\n }\n if (typeof vl.heights[i] === 'undefined') {\n vl.heights[itemIndex] = 40;\n }\n vl.listHeight += vl.heights[itemIndex];\n }\n } else {\n vl.listHeight = Math.ceil(items.length / vl.params.cols) * vl.params.height;\n vl.rowsPerScreen = Math.ceil(vl.pageHeight / vl.params.height);\n vl.rowsBefore = vl.params.rowsBefore || vl.rowsPerScreen * 2;\n vl.rowsAfter = vl.params.rowsAfter || vl.rowsPerScreen;\n vl.rowsToRender = vl.rowsPerScreen + vl.rowsBefore + vl.rowsAfter;\n vl.maxBufferHeight = vl.rowsBefore / 2 * vl.params.height;\n }\n if (vl.updatableScroll || vl.params.setListHeight) {\n vl.$itemsWrapEl.css({\n height: `${vl.listHeight}px`\n });\n }\n }\n render(force, forceScrollTop) {\n const vl = this;\n if (force) vl.lastRepaintY = null;\n let scrollTop = -(vl.$el[0].getBoundingClientRect().top - vl.$scrollableParentEl[0].getBoundingClientRect().top);\n if (typeof forceScrollTop !== 'undefined') scrollTop = forceScrollTop;\n if (vl.lastRepaintY === null || Math.abs(scrollTop - vl.lastRepaintY) > vl.maxBufferHeight || !vl.updatableScroll && vl.$scrollableParentEl[0].scrollTop + vl.pageHeight >= vl.$scrollableParentEl[0].scrollHeight) {\n vl.lastRepaintY = scrollTop;\n } else {\n return;\n }\n const items = vl.filteredItems || vl.items;\n let fromIndex;\n let toIndex;\n let heightBeforeFirstItem = 0;\n let heightBeforeLastItem = 0;\n if (vl.dynamicHeight || vl.autoHeight) {\n let itemTop = 0;\n let itemHeight;\n vl.maxBufferHeight = vl.pageHeight;\n for (let j = 0; j < vl.heights.length; j += 1) {\n itemHeight = vl.heights[j];\n if (typeof fromIndex === 'undefined') {\n if (itemTop + itemHeight >= scrollTop - vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize) fromIndex = j;else heightBeforeFirstItem += itemHeight;\n }\n if (typeof toIndex === 'undefined') {\n if (itemTop + itemHeight >= scrollTop + vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize || j === vl.heights.length - 1) toIndex = j + 1;\n heightBeforeLastItem += itemHeight;\n }\n itemTop += itemHeight;\n }\n toIndex = Math.min(toIndex, items.length);\n } else {\n fromIndex = (parseInt(scrollTop / vl.params.height, 10) - vl.rowsBefore) * vl.params.cols;\n if (fromIndex < 0) {\n fromIndex = 0;\n }\n toIndex = Math.min(fromIndex + vl.rowsToRender * vl.params.cols, items.length);\n }\n let topPosition;\n const renderExternalItems = [];\n vl.reachEnd = false;\n let i;\n for (i = fromIndex; i < toIndex; i += 1) {\n let itemEl;\n // Define real item index\n const index = vl.items.indexOf(items[i]);\n if (i === fromIndex) vl.currentFromIndex = index;\n if (i === toIndex - 1) vl.currentToIndex = index;\n if (vl.filteredItems) {\n if (vl.items[index] === vl.filteredItems[vl.filteredItems.length - 1]) vl.reachEnd = true;\n } else if (index === vl.items.length - 1) vl.reachEnd = true;\n\n // Find items\n if (vl.params.renderExternal) {\n renderExternalItems.push(items[i]);\n } else if (vl.domCache[index]) {\n itemEl = vl.domCache[index];\n itemEl.f7VirtualListIndex = index;\n } else {\n if (vl.renderItem) {\n vl.tempDomElement.innerHTML = vl.renderItem(items[i], index).trim();\n } else {\n vl.tempDomElement.innerHTML = items[i].toString().trim();\n }\n itemEl = vl.tempDomElement.childNodes[0];\n if (vl.params.cache) vl.domCache[index] = itemEl;\n itemEl.f7VirtualListIndex = index;\n }\n\n // Set item top position\n if (i === fromIndex) {\n if (vl.dynamicHeight || vl.autoHeight) {\n topPosition = heightBeforeFirstItem;\n } else {\n topPosition = i * vl.params.height / vl.params.cols;\n }\n }\n if (!vl.params.renderExternal) {\n itemEl.style.top = `${topPosition}px`;\n\n // Before item insert\n vl.emit('local::itemBeforeInsert vlItemBeforeInsert', vl, itemEl, items[i]);\n\n // Append item to fragment\n vl.fragment.appendChild(itemEl);\n }\n }\n\n // Update list height with not updatable scroll\n if (!vl.updatableScroll) {\n if (vl.dynamicHeight || vl.autoHeight) {\n vl.itemsWrapEl.style.height = `${heightBeforeLastItem}px`;\n } else {\n vl.itemsWrapEl.style.height = `${i * vl.params.height / vl.params.cols}px`;\n }\n }\n\n // Update list html\n if (vl.params.renderExternal) {\n if (items && items.length === 0) {\n vl.reachEnd = true;\n }\n } else {\n vl.emit('local::beforeClear vlBeforeClear', vl, vl.fragment);\n vl.itemsWrapEl.innerHTML = '';\n vl.emit('local::itemsBeforeInsert vlItemsBeforeInsert', vl, vl.fragment);\n if (items && items.length === 0) {\n vl.reachEnd = true;\n if (vl.params.emptyTemplate) vl.itemsWrapEl.innerHTML = vl.params.emptyTemplate;\n } else {\n vl.itemsWrapEl.appendChild(vl.fragment);\n }\n vl.emit('local::itemsAfterInsert vlItemsAfterInsert', vl, vl.fragment);\n }\n if (typeof forceScrollTop !== 'undefined' && force) {\n vl.$scrollableParentEl.scrollTop(forceScrollTop, 0);\n }\n if (vl.params.renderExternal) {\n vl.params.renderExternal(vl, {\n fromIndex,\n toIndex,\n listHeight: vl.listHeight,\n topPosition,\n items: renderExternalItems\n });\n }\n if (vl.autoHeight) {\n requestAnimationFrame(() => {\n vl.setListSize(true);\n });\n }\n }\n\n // Filter\n filterItems(indexes, resetScrollTop) {\n if (resetScrollTop === void 0) {\n resetScrollTop = true;\n }\n const vl = this;\n vl.filteredItems = [];\n for (let i = 0; i < indexes.length; i += 1) {\n vl.filteredItems.push(vl.items[indexes[i]]);\n }\n if (resetScrollTop) {\n vl.$scrollableParentEl[0].scrollTop = 0;\n }\n vl.update();\n }\n resetFilter() {\n const vl = this;\n if (vl.params.showFilteredItemsOnly) {\n vl.filteredItems = [];\n } else {\n vl.filteredItems = null;\n delete vl.filteredItems;\n }\n vl.update();\n }\n scrollToItem(index) {\n const vl = this;\n if (index > vl.items.length) return false;\n let itemTop = 0;\n if (vl.dynamicHeight || vl.autoHeight) {\n for (let i = 0; i < index; i += 1) {\n itemTop += vl.heights[i];\n }\n } else {\n itemTop = index * vl.params.height;\n }\n const listTop = vl.$el[0].offsetTop;\n vl.render(true, listTop + itemTop - parseInt(vl.$scrollableParentEl.css('padding-top'), 10));\n return true;\n }\n handleScroll() {\n const vl = this;\n vl.render();\n }\n\n // Handle resize event\n isVisible() {\n const vl = this;\n return !!(vl.el.offsetWidth || vl.el.offsetHeight || vl.el.getClientRects().length);\n }\n handleResize() {\n const vl = this;\n if (vl.isVisible()) {\n vl.heightsCalculated = [];\n vl.setListSize();\n vl.render(true);\n }\n }\n\n // Append\n appendItems(items) {\n const vl = this;\n for (let i = 0; i < items.length; i += 1) {\n vl.items.push(items[i]);\n }\n vl.update();\n }\n appendItem(item) {\n const vl = this;\n vl.appendItems([item]);\n }\n\n // Replace\n replaceAllItems(items) {\n const vl = this;\n vl.items = items;\n delete vl.filteredItems;\n vl.domCache = {};\n vl.update();\n }\n replaceItem(index, item) {\n const vl = this;\n vl.items[index] = item;\n if (vl.params.cache) delete vl.domCache[index];\n vl.update();\n }\n\n // Prepend\n prependItems(items) {\n const vl = this;\n for (let i = items.length - 1; i >= 0; i -= 1) {\n vl.items.unshift(items[i]);\n }\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach(cached => {\n newCache[parseInt(cached, 10) + items.length] = vl.domCache[cached];\n });\n vl.domCache = newCache;\n }\n vl.update();\n }\n prependItem(item) {\n const vl = this;\n vl.prependItems([item]);\n }\n\n // Move\n moveItem(from, to) {\n const vl = this;\n const fromIndex = from;\n let toIndex = to;\n if (fromIndex === toIndex) return;\n // remove item from array\n const item = vl.items.splice(fromIndex, 1)[0];\n if (toIndex >= vl.items.length) {\n // Add item to the end\n vl.items.push(item);\n toIndex = vl.items.length - 1;\n } else {\n // Add item to new index\n vl.items.splice(toIndex, 0, item);\n }\n // Update cache\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach(cached => {\n const cachedIndex = parseInt(cached, 10);\n const leftIndex = fromIndex < toIndex ? fromIndex : toIndex;\n const rightIndex = fromIndex < toIndex ? toIndex : fromIndex;\n const indexShift = fromIndex < toIndex ? -1 : 1;\n if (cachedIndex < leftIndex || cachedIndex > rightIndex) newCache[cachedIndex] = vl.domCache[cachedIndex];\n if (cachedIndex === leftIndex) newCache[rightIndex] = vl.domCache[cachedIndex];\n if (cachedIndex > leftIndex && cachedIndex <= rightIndex) newCache[cachedIndex + indexShift] = vl.domCache[cachedIndex];\n });\n vl.domCache = newCache;\n }\n vl.update();\n }\n\n // Insert before\n insertItemBefore(index, item) {\n const vl = this;\n if (index === 0) {\n vl.prependItem(item);\n return;\n }\n if (index >= vl.items.length) {\n vl.appendItem(item);\n return;\n }\n vl.items.splice(index, 0, item);\n // Update cache\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach(cached => {\n const cachedIndex = parseInt(cached, 10);\n if (cachedIndex >= index) {\n newCache[cachedIndex + 1] = vl.domCache[cachedIndex];\n }\n });\n vl.domCache = newCache;\n }\n vl.update();\n }\n\n // Delete\n deleteItems(indexes) {\n const vl = this;\n let prevIndex;\n let indexShift = 0;\n for (let i = 0; i < indexes.length; i += 1) {\n let index = indexes[i];\n if (typeof prevIndex !== 'undefined') {\n if (index > prevIndex) {\n indexShift = -i;\n }\n }\n index += indexShift;\n prevIndex = indexes[i];\n // Delete item\n const deletedItem = vl.items.splice(index, 1)[0];\n\n // Delete from filtered\n if (vl.filteredItems && vl.filteredItems.indexOf(deletedItem) >= 0) {\n vl.filteredItems.splice(vl.filteredItems.indexOf(deletedItem), 1);\n }\n // Update cache\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach(cached => {\n const cachedIndex = parseInt(cached, 10);\n if (cachedIndex === index) {\n delete vl.domCache[index];\n } else if (parseInt(cached, 10) > index) {\n newCache[cachedIndex - 1] = vl.domCache[cached];\n } else {\n newCache[cachedIndex] = vl.domCache[cached];\n }\n });\n vl.domCache = newCache;\n }\n }\n vl.update();\n }\n deleteAllItems() {\n const vl = this;\n vl.items = [];\n delete vl.filteredItems;\n if (vl.params.cache) vl.domCache = {};\n vl.update();\n }\n deleteItem(index) {\n const vl = this;\n vl.deleteItems([index]);\n }\n\n // Clear cache\n clearCache() {\n const vl = this;\n vl.domCache = {};\n }\n\n // Update Virtual List\n update(deleteCache) {\n const vl = this;\n if (deleteCache && vl.params.cache) {\n vl.domCache = {};\n }\n vl.heightsCalculated = [];\n vl.setListSize();\n vl.render(true);\n }\n init() {\n const vl = this;\n vl.attachEvents();\n vl.setListSize();\n vl.render();\n }\n destroy() {\n let vl = this;\n vl.detachEvents();\n vl.$el[0].f7VirtualList = null;\n delete vl.$el[0].f7VirtualList;\n deleteProps(vl);\n vl = null;\n }\n}\nexport default VirtualList;","import VirtualList from './virtual-list-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'virtualList',\n static: {\n VirtualList\n },\n create() {\n const app = this;\n app.virtualList = ConstructorMethods({\n defaultSelector: '.virtual-list',\n constructor: VirtualList,\n app,\n domProp: 'f7VirtualList'\n });\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\nclass ListIndex extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const index = this;\n const defaults = {\n el: null,\n // where to render indexes\n listEl: null,\n // list el to generate indexes\n indexes: 'auto',\n // or array of indexes\n iosItemHeight: 14,\n mdItemHeight: 14,\n scrollList: true,\n label: false,\n // eslint-disable-next-line\n renderItem(itemContent, itemIndex) {\n return `\n
                  • ${itemContent}
                  • \n `.trim();\n },\n renderSkipPlaceholder() {\n return '
                  • ';\n },\n on: {}\n };\n\n // Extend defaults with modules params\n index.useModulesParams(defaults);\n index.params = extend(defaults, params);\n let $el;\n let $listEl;\n let $pageContentEl;\n let $ul;\n if (index.params.el) {\n $el = $(index.params.el);\n } else {\n return index;\n }\n if ($el[0].f7ListIndex) {\n return $el[0].f7ListIndex;\n }\n $ul = $el.find('ul');\n if ($ul.length === 0) {\n $ul = $('
                      ');\n $el.append($ul);\n }\n if (index.params.listEl) {\n $listEl = $(index.params.listEl);\n }\n if (index.params.indexes === 'auto' && !$listEl) {\n return index;\n }\n if ($listEl) {\n $pageContentEl = $listEl.parents('.page-content').eq(0);\n } else {\n $pageContentEl = $el.siblings('.page-content').eq(0);\n if ($pageContentEl.length === 0) {\n $pageContentEl = $el.parents('.page').eq(0).find('.page-content').eq(0);\n }\n }\n $el[0].f7ListIndex = index;\n extend(index, {\n app,\n $el,\n el: $el && $el[0],\n $ul,\n ul: $ul && $ul[0],\n $listEl,\n listEl: $listEl && $listEl[0],\n $pageContentEl,\n pageContentEl: $pageContentEl && $pageContentEl[0],\n indexes: params.indexes,\n height: 0,\n skipRate: 0\n });\n\n // Install Modules\n index.useModules();\n\n // Attach events\n function handleResize() {\n const height = {\n index\n };\n index.calcSize();\n if (height !== index.height) {\n index.render();\n }\n }\n function handleClick(e) {\n const $clickedLi = $(e.target).closest('li');\n if (!$clickedLi.length) return;\n let itemIndex = $clickedLi.index();\n if (index.skipRate > 0) {\n const percentage = itemIndex / ($clickedLi.siblings('li').length - 1);\n itemIndex = Math.round((index.indexes.length - 1) * percentage);\n }\n const itemContent = index.indexes[itemIndex];\n index.$el.trigger('listindex:click', {\n content: itemContent,\n index: itemIndex\n });\n index.emit('local::click listIndexClick', index, itemContent, itemIndex);\n index.$el.trigger('listindex:select', {\n content: itemContent,\n index: itemIndex\n });\n index.emit('local::select listIndexSelect', index, itemContent, itemIndex);\n if (index.$listEl && index.params.scrollList) {\n index.scrollListToIndex(itemContent, itemIndex);\n }\n }\n const touchesStart = {};\n let isTouched;\n let isMoved;\n let topPoint;\n let bottomPoint;\n let $labelEl;\n let previousIndex = null;\n function handleTouchStart(e) {\n const $children = $ul.children();\n if (!$children.length) return;\n topPoint = $children[0].getBoundingClientRect().top;\n bottomPoint = $children[$children.length - 1].getBoundingClientRect().top + $children[0].offsetHeight;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isTouched = true;\n isMoved = false;\n previousIndex = null;\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n if (!isMoved && index.params.label) {\n $labelEl = $('');\n $el.append($labelEl);\n }\n isMoved = true;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n let percentage = (pageY - topPoint) / (bottomPoint - topPoint);\n percentage = Math.min(Math.max(percentage, 0), 1);\n const itemIndex = Math.round((index.indexes.length - 1) * percentage);\n const itemContent = index.indexes[itemIndex];\n const ulHeight = bottomPoint - topPoint;\n const bubbleBottom = (index.height - ulHeight) / 2 + (1 - percentage) * ulHeight;\n if (itemIndex !== previousIndex) {\n if (index.params.label) {\n $labelEl.html(itemContent).transform(`translateY(-${bubbleBottom}px)`);\n }\n if (index.$listEl && index.params.scrollList) {\n index.scrollListToIndex(itemContent, itemIndex);\n }\n }\n previousIndex = itemIndex;\n index.$el.trigger('listindex:select');\n index.emit('local::select listIndexSelect', index, itemContent, itemIndex);\n }\n function handleTouchEnd() {\n if (!isTouched) return;\n isTouched = false;\n isMoved = false;\n if (index.params.label) {\n if ($labelEl) $labelEl.remove();\n $labelEl = undefined;\n }\n }\n const passiveListener = getSupport().passiveListener ? {\n passive: true\n } : false;\n index.attachEvents = function attachEvents() {\n $el.parents('.tab').on('tab:show', handleResize);\n $el.parents('.page').on('page:reinit', handleResize);\n $el.parents('.panel').on('panel:open', handleResize);\n $el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast').on('modal:open', handleResize);\n app.on('resize', handleResize);\n $el.on('click', handleClick);\n $el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n };\n index.detachEvents = function attachEvents() {\n $el.parents('.tab').off('tab:show', handleResize);\n $el.parents('.page').off('page:reinit', handleResize);\n $el.parents('.panel').off('panel:open', handleResize);\n $el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast').off('modal:open', handleResize);\n app.off('resize', handleResize);\n $el.off('click', handleClick);\n $el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n };\n // Init\n index.init();\n return index;\n }\n // eslint-disable-next-line\n scrollListToIndex(itemContent, itemIndex) {\n const index = this;\n const {\n $listEl,\n $pageContentEl,\n app\n } = index;\n if (!$listEl || !$pageContentEl || $pageContentEl.length === 0) return index;\n let $scrollToEl;\n $listEl.find('.list-group-title').each(el => {\n if ($scrollToEl) return;\n const $el = $(el);\n if ($el.text() === itemContent) {\n $scrollToEl = $el;\n }\n });\n if (!$scrollToEl || $scrollToEl.length === 0) return index;\n const parentTop = $scrollToEl.parent().offset().top;\n let paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const scrollTop = $pageContentEl[0].scrollTop;\n const scrollToElTop = $scrollToEl.offset().top;\n if ($pageContentEl.parents('.page-with-navbar-large').length) {\n const navbarInnerEl = app.navbar.getElByPage($pageContentEl.parents('.page-with-navbar-large').eq(0));\n const $titleLargeEl = $(navbarInnerEl).find('.title-large');\n if ($titleLargeEl.length) {\n paddingTop -= $titleLargeEl[0].offsetHeight || 0;\n }\n }\n if (parentTop <= paddingTop) {\n $pageContentEl.scrollTop(parentTop + scrollTop - paddingTop);\n } else {\n $pageContentEl.scrollTop(scrollToElTop + scrollTop - paddingTop);\n }\n return index;\n }\n renderSkipPlaceholder() {\n const index = this;\n return index.params.renderSkipPlaceholder.call(index);\n }\n renderItem(itemContent, itemIndex) {\n const index = this;\n return index.params.renderItem.call(index, itemContent, itemIndex);\n }\n render() {\n const index = this;\n const {\n $ul,\n indexes,\n skipRate\n } = index;\n let wasSkipped;\n const html = indexes.map((itemContent, itemIndex) => {\n if (itemIndex % skipRate !== 0 && skipRate > 0) {\n wasSkipped = true;\n return '';\n }\n let itemHtml = index.renderItem(itemContent, itemIndex);\n if (wasSkipped) {\n itemHtml = index.renderSkipPlaceholder() + itemHtml;\n }\n wasSkipped = false;\n return itemHtml;\n }).join('');\n $ul.html(html);\n return index;\n }\n calcSize() {\n const index = this;\n const {\n app,\n params,\n el,\n indexes\n } = index;\n const height = el.offsetHeight;\n const itemHeight = params[`${app.theme}ItemHeight`];\n const maxItems = Math.floor(height / itemHeight);\n const items = indexes.length;\n let skipRate = 0;\n if (items > maxItems) {\n skipRate = Math.ceil((items * 2 - 1) / maxItems);\n }\n index.height = height;\n index.skipRate = skipRate;\n return index;\n }\n calcIndexes() {\n const index = this;\n if (index.params.indexes === 'auto') {\n index.indexes = [];\n index.$listEl.find('.list-group-title').each(el => {\n const elContent = $(el).text();\n if (index.indexes.indexOf(elContent) < 0) {\n index.indexes.push(elContent);\n }\n });\n } else {\n index.indexes = index.params.indexes;\n }\n return index;\n }\n update() {\n const index = this;\n index.calcIndexes();\n index.calcSize();\n index.render();\n return index;\n }\n init() {\n const index = this;\n index.calcIndexes();\n index.calcSize();\n index.render();\n index.attachEvents();\n }\n destroy() {\n let index = this;\n index.$el.trigger('listindex:beforedestroy', index);\n index.emit('local::beforeDestroy listIndexBeforeDestroy');\n index.detachEvents();\n if (index.$el[0]) {\n index.$el[0].f7ListIndex = null;\n delete index.$el[0].f7ListIndex;\n }\n deleteProps(index);\n index = null;\n }\n}\nexport default ListIndex;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport ListIndex from './list-index-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'listIndex',\n static: {\n ListIndex\n },\n create() {\n const app = this;\n app.listIndex = ConstructorMethods({\n defaultSelector: '.list-index',\n constructor: ListIndex,\n app,\n domProp: 'f7ListIndex'\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.list-index-init').each(listIndexEl => {\n const params = extend($(listIndexEl).dataset(), {\n el: listIndexEl\n });\n app.listIndex.create(params);\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.list-index-init').each(listIndexEl => {\n if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.list-index-init').each(listIndexEl => {\n const params = extend($(listIndexEl).dataset(), {\n el: listIndexEl\n });\n app.listIndex.create(params);\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.list-index-init').each(listIndexEl => {\n if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n });\n }\n },\n vnode: {\n 'list-index-init': {\n insert(vnode) {\n const app = this;\n const listIndexEl = vnode.elm;\n const params = extend($(listIndexEl).dataset(), {\n el: listIndexEl\n });\n app.listIndex.create(params);\n },\n destroy(vnode) {\n const listIndexEl = vnode.elm;\n if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nconst Tab = {\n show() {\n const app = this;\n let tabEl;\n let tabLinkEl;\n let animate;\n let tabRoute;\n let animatedInit;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0] && args[0].constructor === Object) {\n tabEl = args[0].tabEl;\n tabLinkEl = args[0].tabLinkEl;\n animate = args[0].animate;\n tabRoute = args[0].tabRoute;\n animatedInit = args[0].animatedInit;\n } else {\n [tabEl, tabLinkEl, animate, tabRoute] = args;\n if (typeof args[1] === 'boolean') {\n [tabEl, animate, tabLinkEl, tabRoute] = args;\n if (args.length > 2 && tabLinkEl.constructor === Object) {\n [tabEl, animate, tabRoute, tabLinkEl] = args;\n }\n }\n }\n if (typeof animate === 'undefined') animate = true;\n const $newTabEl = $(tabEl);\n if (tabRoute && $newTabEl[0]) {\n $newTabEl[0].f7TabRoute = tabRoute;\n }\n if (!animatedInit && ($newTabEl.length === 0 || $newTabEl.hasClass('tab-active'))) {\n return {\n $newTabEl,\n newTabEl: $newTabEl[0]\n };\n }\n let $tabLinkEl;\n if (tabLinkEl) $tabLinkEl = $(tabLinkEl);\n const $tabsEl = $newTabEl.parent('.tabs');\n if ($tabsEl.length === 0) {\n return {\n $newTabEl,\n newTabEl: $newTabEl[0]\n };\n }\n\n // Release swipeouts in hidden tabs\n if (app.swipeout) app.swipeout.allowOpen = true;\n\n // Animated tabs\n const tabsChangedCallbacks = [];\n function onTabsChanged(callback) {\n tabsChangedCallbacks.push(callback);\n }\n function tabsChanged() {\n tabsChangedCallbacks.forEach(callback => {\n callback();\n });\n }\n let animated = false;\n if ($tabsEl.parent().hasClass('tabs-animated-wrap')) {\n $tabsEl.parent()[animate ? 'removeClass' : 'addClass']('not-animated');\n const transitionDuration = parseFloat($tabsEl.css('transition-duration').replace(',', '.'));\n if (animate && transitionDuration) {\n $tabsEl.transitionEnd(tabsChanged);\n animated = true;\n }\n const tabsTranslate = (app.rtl ? $newTabEl.index() : -$newTabEl.index()) * 100;\n $tabsEl.transform(`translate3d(${tabsTranslate}%,0,0)`);\n }\n\n // Swipeable tabs\n let swiper;\n if ($tabsEl[0].nodeName.toLowerCase() === 'swiper-container' && app.swiper) {\n swiper = $tabsEl[0].swiper;\n const newTabIndex = swiper.slides.indexOf($newTabEl[0]);\n if (swiper && swiper.activeIndex !== newTabIndex) {\n animated = true;\n swiper.once('slideChangeTransitionEnd', () => {\n tabsChanged();\n }).slideTo(newTabIndex, animate ? undefined : 0);\n } else if (swiper && swiper.animating) {\n animated = true;\n swiper.once('slideChangeTransitionEnd', () => {\n tabsChanged();\n });\n }\n }\n\n // Remove active class from old tabs\n const $oldTabEl = $tabsEl.children('.tab-active');\n $oldTabEl.removeClass('tab-active');\n if (!animatedInit && (!swiper || swiper && !swiper.animating || swiper && tabRoute)) {\n if ($oldTabEl.hasClass('view') && $oldTabEl.children('.page').length) {\n $oldTabEl.children('.page').each(pageEl => {\n $(pageEl).trigger('page:tabhide');\n app.emit('pageTabHide', pageEl);\n });\n }\n $oldTabEl.trigger('tab:hide');\n app.emit('tabHide', $oldTabEl[0]);\n }\n\n // Trigger 'show' event on new tab\n $newTabEl.addClass('tab-active');\n if (!animatedInit && (!swiper || swiper && !swiper.animating || swiper && tabRoute)) {\n if ($newTabEl.hasClass('view') && $newTabEl.children('.page').length) {\n $newTabEl.children('.page').each(pageEl => {\n $(pageEl).trigger('page:tabshow');\n app.emit('pageTabShow', pageEl);\n });\n }\n $newTabEl.trigger('tab:show');\n app.emit('tabShow', $newTabEl[0]);\n }\n\n // Find related link for new tab\n if (!$tabLinkEl) {\n // Search by id\n if (typeof tabEl === 'string') $tabLinkEl = $(`.tab-link[href=\"${tabEl}\"]`);else $tabLinkEl = $(`.tab-link[href=\"#${$newTabEl.attr('id')}\"]`);\n // Search by data-tab\n if (!$tabLinkEl || $tabLinkEl && $tabLinkEl.length === 0) {\n $('[data-tab]').each(el => {\n if ($newTabEl.is($(el).attr('data-tab'))) $tabLinkEl = $(el);\n });\n }\n if (tabRoute && (!$tabLinkEl || $tabLinkEl && $tabLinkEl.length === 0)) {\n $tabLinkEl = $(`[data-route-tab-id=\"${tabRoute.route.tab.id}\"]`);\n if ($tabLinkEl.length === 0) {\n $tabLinkEl = $(`.tab-link[href=\"${tabRoute.url}\"]`);\n }\n }\n if ($tabLinkEl.length > 1 && $newTabEl.parents('.page').length) {\n // eslint-disable-next-line\n $tabLinkEl = $tabLinkEl.filter(tabLinkElement => {\n return $(tabLinkElement).parents('.page')[0] === $newTabEl.parents('.page')[0];\n });\n if (app.theme === 'ios' && $tabLinkEl.length === 0 && tabRoute) {\n const $pageEl = $newTabEl.parents('.page');\n const $navbarEl = $(app.navbar.getElByPage($pageEl));\n $tabLinkEl = $navbarEl.find(`[data-route-tab-id=\"${tabRoute.route.tab.id}\"]`);\n if ($tabLinkEl.length === 0) {\n $tabLinkEl = $navbarEl.find(`.tab-link[href=\"${tabRoute.url}\"]`);\n }\n }\n }\n }\n if ($tabLinkEl.length > 0) {\n // Find related link for old tab\n let $oldTabLinkEl;\n if ($oldTabEl && $oldTabEl.length > 0) {\n // Search by id\n const oldTabId = $oldTabEl.attr('id');\n if (oldTabId) {\n $oldTabLinkEl = $(`.tab-link[href=\"#${oldTabId}\"]`);\n // Search by data-route-tab-id\n if (!$oldTabLinkEl || $oldTabLinkEl && $oldTabLinkEl.length === 0) {\n $oldTabLinkEl = $(`.tab-link[data-route-tab-id=\"${oldTabId}\"]`);\n }\n }\n // Search by data-tab\n if (!$oldTabLinkEl || $oldTabLinkEl && $oldTabLinkEl.length === 0) {\n $('[data-tab]').each(tabLinkElement => {\n if ($oldTabEl.is($(tabLinkElement).attr('data-tab'))) $oldTabLinkEl = $(tabLinkElement);\n });\n }\n if (!$oldTabLinkEl || $oldTabLinkEl && $oldTabLinkEl.length === 0) {\n $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');\n }\n } else if (tabRoute) {\n $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');\n }\n if ($oldTabLinkEl && $oldTabLinkEl.length > 1 && $oldTabEl && $oldTabEl.parents('.page').length) {\n // eslint-disable-next-line\n $oldTabLinkEl = $oldTabLinkEl.filter(tabLinkElement => {\n return $(tabLinkElement).parents('.page')[0] === $oldTabEl.parents('.page')[0];\n });\n }\n if ($oldTabLinkEl && $oldTabLinkEl.length > 0) $oldTabLinkEl.removeClass('tab-link-active');\n\n // Update links' classes\n if ($tabLinkEl && $tabLinkEl.length > 0) {\n $tabLinkEl.addClass('tab-link-active');\n // Material Highlight\n const $tabbarEl = $tabLinkEl.parents('.tabbar, .tabbar-icons');\n const hasHighlight = app.toolbar && $tabbarEl.length > 0 && ($tabbarEl.hasClass('tabbar-highlight') || app.theme !== 'ios');\n if (hasHighlight) {\n app.toolbar.setHighlight($tabbarEl);\n }\n }\n }\n return {\n $newTabEl,\n newTabEl: $newTabEl[0],\n $oldTabEl,\n oldTabEl: $oldTabEl[0],\n onTabsChanged,\n animated\n };\n }\n};\nexport default {\n name: 'tabs',\n create() {\n const app = this;\n extend(app, {\n tab: {\n show: Tab.show.bind(app)\n }\n });\n },\n on: {\n 'pageInit tabMounted': function onInit(pageOrTabEl) {\n const $el = $(pageOrTabEl.el || pageOrTabEl);\n const animatedTabEl = $el.find('.tabs-animated-wrap > .tabs > .tab-active')[0];\n if (!animatedTabEl) return;\n const app = this;\n app.tab.show({\n tabEl: animatedTabEl,\n animatedInit: true,\n animate: false\n });\n }\n },\n clicks: {\n '.tab-link': function tabLinkClick($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n if ($clickedEl.attr('href') && $clickedEl.attr('href').indexOf('#') === 0 || $clickedEl.attr('data-tab')) {\n const app = this;\n app.tab.show({\n tabEl: data.tab || $clickedEl.attr('href'),\n tabLinkEl: $clickedEl,\n animate: data.animate\n });\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, now, nextFrame } from '../../shared/utils.js';\nfunction swipePanel(panel) {\n const app = panel.app;\n if (panel.swipeInitialized) {\n return;\n }\n extend(panel, {\n swipeable: true,\n swipeInitialized: true\n });\n const params = panel.params;\n const {\n $el,\n $backdropEl,\n side,\n effect\n } = panel;\n let otherPanel;\n let isTouched;\n let isGestureStarted;\n let isMoved;\n let isScrolling;\n let isInterrupted;\n const touchesStart = {};\n let touchStartTime;\n let touchesDiff;\n let translate;\n let backdropOpacity;\n let panelWidth;\n let direction;\n let $viewEl;\n let touchMoves = 0;\n function handleTouchStart(e) {\n if (!panel.swipeable || isGestureStarted) return;\n if (!app.panel.allowOpen || !params.swipe && !params.swipeOnlyClose || isTouched) return;\n if ($('.modal-in:not(.toast):not(.notification), .photo-browser-in').length > 0) return;\n otherPanel = app.panel.get(side === 'left' ? 'right' : 'left') || {};\n const otherPanelOpened = otherPanel.opened && otherPanel.$el && !otherPanel.$el.hasClass('panel-in-breakpoint');\n if (!panel.opened && otherPanelOpened) {\n return;\n }\n if (!params.swipeOnlyClose) {\n if (otherPanelOpened) return;\n }\n if (e.target && e.target.nodeName.toLowerCase() === 'input' && e.target.type === 'range') return;\n if ($(e.target).closest('.range-slider, swiper-container.tabs, .calendar-months, .no-swipe-panel, .card-opened').length > 0) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n if (params.swipeOnlyClose && !panel.opened) {\n return;\n }\n if (params.swipeActiveArea && !panel.opened) {\n if (side === 'left') {\n if (touchesStart.x > params.swipeActiveArea) return;\n }\n if (side === 'right') {\n if (touchesStart.x < app.width - params.swipeActiveArea) return;\n }\n }\n touchMoves = 0;\n $viewEl = $(panel.getViewEl());\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n isInterrupted = false;\n touchStartTime = now();\n direction = undefined;\n }\n function handleTouchMove(e) {\n if (!isTouched || isGestureStarted || isInterrupted) return;\n touchMoves += 1;\n if (touchMoves < 2) return;\n if (e.f7PreventSwipePanel || app.preventSwipePanelBySwipeBack || app.preventSwipePanel) {\n isTouched = false;\n return;\n }\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n if (!direction) {\n if (pageX > touchesStart.x) {\n direction = 'to-right';\n } else {\n direction = 'to-left';\n }\n if (params.swipeActiveArea > 0 && !panel.opened) {\n if (side === 'left' && touchesStart.x > params.swipeActiveArea) {\n isTouched = false;\n return;\n }\n if (side === 'right' && touchesStart.x < app.width - params.swipeActiveArea) {\n isTouched = false;\n return;\n }\n }\n if ($el.hasClass('panel-in-breakpoint')) {\n isTouched = false;\n return;\n }\n if (side === 'left' && direction === 'to-left' && !$el.hasClass('panel-in') || side === 'right' && direction === 'to-right' && !$el.hasClass('panel-in')) {\n isTouched = false;\n return;\n }\n }\n let threshold = panel.opened ? 0 : -params.swipeThreshold;\n if (side === 'right') threshold = -threshold;\n if (!isMoved) {\n if (!panel.opened) {\n panel.insertToRoot();\n $el.addClass('panel-in-swipe');\n if ($backdropEl) $backdropEl.css('visibility', 'visible');\n $el.trigger('panel:swipeopen');\n panel.emit('local::swipeOpen panelSwipeOpen', panel);\n }\n panelWidth = $el[0].offsetWidth;\n if (effect === 'reveal' && $el.hasClass('panel-in-collapsed')) {\n panelWidth -= parseFloat($viewEl.css(`margin-${side}`));\n }\n $el.transition(0);\n }\n isMoved = true;\n if (e.cancelable) {\n e.preventDefault();\n }\n touchesDiff = pageX - touchesStart.x + threshold;\n const startTranslate = effect === 'floating' ? 8 : 0;\n if (side === 'right') {\n if (effect === 'cover' || effect === 'push' || effect === 'floating') {\n translate = touchesDiff + (panel.opened ? startTranslate : panelWidth);\n if (translate < 0 - startTranslate) translate = -startTranslate;\n if (translate > panelWidth) {\n translate = panelWidth;\n }\n } else {\n translate = touchesDiff - (panel.opened ? panelWidth : 0);\n if (translate > 0) translate = 0;\n if (translate < -panelWidth) {\n translate = -panelWidth;\n }\n }\n } else {\n translate = touchesDiff + (panel.opened ? panelWidth : startTranslate);\n if (translate < 0) translate = 0;\n if (translate > panelWidth + startTranslate) {\n translate = panelWidth + startTranslate;\n }\n }\n const noFollowProgress = Math.abs(translate / panelWidth);\n if (effect === 'reveal') {\n if (!params.swipeNoFollow) {\n $viewEl.transform(`translate3d(${translate}px,0,0)`).transition(0);\n if ($backdropEl) $backdropEl.transform(`translate3d(${translate}px,0,0)`).transition(0);\n }\n $el.trigger('panel:swipe', Math.abs(translate / panelWidth));\n panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));\n } else {\n if (side === 'left') translate -= panelWidth;\n if (!params.swipeNoFollow) {\n backdropOpacity = 1 - Math.abs(translate / panelWidth);\n if ($backdropEl) {\n $backdropEl.transition(0);\n $backdropEl.css({\n opacity: backdropOpacity\n });\n }\n $el.transform(`translate3d(${translate}px,0,0)`).transition(0);\n if (effect === 'push') {\n const viewTranslate = side === 'left' ? translate + panelWidth : translate - panelWidth;\n $viewEl.transform(`translate3d(${viewTranslate}px,0,0)`).transition(0);\n if ($backdropEl) {\n $backdropEl.transform(`translate3d(${viewTranslate}px,0,0)`).transition(0);\n }\n }\n }\n $el.trigger('panel:swipe', Math.abs(translate / panelWidth));\n panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));\n }\n if (params.swipeNoFollow) {\n const stateChanged = panel.opened && noFollowProgress === 0 || !panel.opened && noFollowProgress === 1;\n if (stateChanged) {\n isInterrupted = true;\n // eslint-disable-next-line\n handleTouchEnd(e);\n }\n }\n }\n function handleTouchEnd(e) {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n const isGesture = e.type === 'gesturestart' || isGestureStarted;\n isTouched = false;\n isMoved = false;\n const timeDiff = new Date().getTime() - touchStartTime;\n let action;\n const startTranslate = effect === 'floating' ? side === 'left' ? 8 : -8 : 0;\n const edge = (translate === startTranslate || Math.abs(translate) === panelWidth) && !params.swipeNoFollow;\n const threshold = params.swipeThreshold || 0;\n if (isGesture) {\n action = 'reset';\n } else if (!panel.opened) {\n if (Math.abs(touchesDiff) < threshold) {\n action = 'reset';\n } else if (effect === 'cover' || effect === 'push' || effect === 'floating') {\n if (translate === 0 + startTranslate) {\n action = 'swap'; // open\n } else if (timeDiff < 300 && Math.abs(translate) > 0) {\n action = 'swap'; // open\n } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {\n action = 'swap'; // open\n } else {\n action = 'reset'; // close\n }\n } else if (translate === 0) {\n action = 'reset';\n } else if (timeDiff < 300 && Math.abs(translate) > 0 || timeDiff >= 300 && Math.abs(translate) >= panelWidth / 2) {\n action = 'swap';\n } else {\n action = 'reset';\n }\n } else if (effect === 'cover' || effect === 'push' || effect === 'floating') {\n if (translate === 0) {\n action = 'reset'; // open\n } else if (timeDiff < 300 && Math.abs(translate) > 0) {\n action = 'swap'; // open\n } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {\n action = 'reset'; // open\n } else {\n action = 'swap'; // close\n }\n } else if (translate === -panelWidth) {\n action = 'reset';\n } else if (timeDiff < 300 && Math.abs(translate) >= 0 || timeDiff >= 300 && Math.abs(translate) <= panelWidth / 2) {\n if (side === 'left' && translate === panelWidth) action = 'reset';else action = 'swap';\n } else {\n action = 'reset';\n }\n if (action === 'swap') {\n if (panel.opened) {\n panel.close(!edge);\n } else {\n panel.open(!edge);\n }\n }\n let removePanelInClass = true;\n if (action === 'reset') {\n if (!panel.opened) {\n if (edge) {\n // edge position\n $el.removeClass('panel-in-swipe');\n } else {\n removePanelInClass = false;\n const target = effect === 'reveal' ? $viewEl : $el;\n panel.setStateClasses('before-closing');\n target.transitionEnd(() => {\n if ($el.hasClass('panel-in')) return;\n $el.removeClass('panel-in-swipe');\n panel.setStateClasses('after-closing');\n });\n }\n }\n }\n if (effect === 'reveal' || effect === 'push') {\n nextFrame(() => {\n $viewEl.transition('');\n $viewEl.transform('');\n });\n }\n if (removePanelInClass) {\n $el.removeClass('panel-in-swipe');\n }\n $el.transition('').transform('');\n if ($backdropEl) {\n $backdropEl.transform('').transition('').css({\n opacity: '',\n visibility: ''\n });\n }\n }\n function handleGestureStart(e) {\n isGestureStarted = true;\n handleTouchEnd(e);\n }\n function handleGestureEnd() {\n isGestureStarted = false;\n }\n\n // Add Events\n app.on('touchstart:passive', handleTouchStart);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('gesturestart', handleGestureStart);\n app.on('gestureend', handleGestureEnd);\n panel.on('panelDestroy', () => {\n app.off('touchstart:passive', handleTouchStart);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('gesturestart', handleGestureStart);\n app.off('gestureend', handleGestureEnd);\n });\n}\nexport default swipePanel;","import $ from '../../shared/dom7.js';\nimport { extend, nextFrame } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nfunction resizablePanel(panel) {\n const app = panel.app;\n const support = getSupport();\n if (panel.resizableInitialized) return;\n extend(panel, {\n resizable: true,\n resizableWidth: null,\n resizableInitialized: true\n });\n const $htmlEl = $('html');\n const {\n $el,\n $backdropEl,\n side,\n effect\n } = panel;\n if (!$el) return;\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let touchesDiff;\n let panelWidth;\n let $viewEl;\n let panelMinWidth;\n let panelMaxWidth;\n let visibleByBreakpoint;\n const isPushingPanel = effect !== 'cover' && effect !== 'floating';\n function transformCSSWidth(v) {\n if (!v) return null;\n if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {\n return parseInt(v, 10) / 100 * app.width;\n }\n const newV = parseInt(v, 10);\n if (Number.isNaN(newV)) return null;\n return newV;\n }\n function isResizable() {\n return panel.resizable && $el.hasClass('panel-resizable');\n }\n function handleTouchStart(e) {\n if (!isResizable()) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isMoved = false;\n isTouched = true;\n panelMinWidth = transformCSSWidth($el.css('min-width'));\n panelMaxWidth = transformCSSWidth($el.css('max-width'));\n visibleByBreakpoint = $el.hasClass('panel-in-breakpoint');\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n if (!isMoved) {\n panelWidth = $el[0].offsetWidth;\n $el.transition(0);\n $el.addClass('panel-resizing');\n $htmlEl.css('cursor', 'col-resize');\n if (isPushingPanel || visibleByBreakpoint) {\n $viewEl = $(panel.getViewEl());\n if (panel.$containerEl && panel.$containerEl.hasClass('page')) {\n $viewEl.add(panel.$containerEl.children('.page-content, .tabs, .fab'));\n }\n }\n if (isPushingPanel && !visibleByBreakpoint) {\n $backdropEl.transition(0);\n $viewEl.transition(0);\n }\n }\n isMoved = true;\n e.preventDefault();\n touchesDiff = pageX - touchesStart.x;\n let newPanelWidth = side === 'left' ? panelWidth + touchesDiff : panelWidth - touchesDiff;\n if (panelMinWidth && !Number.isNaN(panelMinWidth)) {\n newPanelWidth = Math.max(newPanelWidth, panelMinWidth);\n }\n if (panelMaxWidth && !Number.isNaN(panelMaxWidth)) {\n newPanelWidth = Math.min(newPanelWidth, panelMaxWidth);\n }\n newPanelWidth = Math.min(Math.max(newPanelWidth, 0), app.width);\n panel.resizableWidth = newPanelWidth;\n $el[0].style.width = `${newPanelWidth}px`;\n if (isPushingPanel && !visibleByBreakpoint) {\n if ($viewEl) {\n $viewEl.transform(`translate3d(${side === 'left' ? newPanelWidth : -newPanelWidth}px, 0, 0)`);\n }\n if ($backdropEl) {\n $backdropEl.transform(`translate3d(${side === 'left' ? newPanelWidth : -newPanelWidth}px, 0, 0)`);\n }\n } else if (visibleByBreakpoint && $viewEl) {\n $viewEl.css(`margin-${side}`, `${newPanelWidth}px`);\n }\n $el.trigger('panel:resize', newPanelWidth);\n panel.emit('local::resize panelResize', panel, newPanelWidth);\n }\n function handleTouchEnd() {\n $('html').css('cursor', '');\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n $htmlEl[0].style.setProperty(`--f7-panel-${side}-width`, `${panel.resizableWidth}px`);\n $el[0].style.width = '';\n if (isPushingPanel && !visibleByBreakpoint) {\n $viewEl.transform('');\n $backdropEl.transform('');\n }\n $el.removeClass('panel-resizing');\n nextFrame(() => {\n $el.transition('');\n if (isPushingPanel) {\n $backdropEl.transition('');\n if ($viewEl) $viewEl.transition('');\n }\n });\n }\n function handleResize() {\n if (!panel.opened || !panel.resizableWidth) return;\n panelMinWidth = transformCSSWidth($el.css('min-width'));\n panelMaxWidth = transformCSSWidth($el.css('max-width'));\n if (panelMinWidth && !Number.isNaN(panelMinWidth) && panel.resizableWidth < panelMinWidth) {\n panel.resizableWidth = Math.max(panel.resizableWidth, panelMinWidth);\n }\n if (panelMaxWidth && !Number.isNaN(panelMaxWidth) && panel.resizableWidth > panelMaxWidth) {\n panel.resizableWidth = Math.min(panel.resizableWidth, panelMaxWidth);\n }\n panel.resizableWidth = Math.min(Math.max(panel.resizableWidth, 0), app.width);\n $htmlEl[0].style.setProperty(`--f7-panel-${side}-width`, `${panel.resizableWidth}px`);\n }\n if (panel.$el.find('.panel-resize-handler').length === 0) {\n panel.$el.append('
                      ');\n }\n panel.$resizeHandlerEl = panel.$el.children('.panel-resize-handler');\n $el.addClass('panel-resizable');\n\n // Add Events\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n panel.$el.on(app.touchEvents.start, '.panel-resize-handler', handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n panel.on('beforeOpen', handleResize);\n panel.once('panelDestroy', () => {\n $el.removeClass('panel-resizable');\n panel.$resizeHandlerEl.remove();\n panel.$el.off(app.touchEvents.start, '.panel-resize-handler', handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n panel.off('beforeOpen', handleResize);\n });\n}\nexport default resizablePanel;","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport swipePanel from './swipe-panel.js';\nimport resizablePanel from './resizable-panel.js';\nclass Panel extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n const extendedParams = extend({\n on: {}\n }, app.params.panel, params);\n super(extendedParams, [app]);\n const panel = this;\n panel.params = extendedParams;\n panel.$containerEl = panel.params.containerEl ? $(panel.params.containerEl).eq(0) : app.$el;\n panel.containerEl = panel.$containerEl[0];\n if (!panel.containerEl) {\n panel.$containerEl = app.$el;\n panel.containerEl = app.$el[0];\n }\n let $el;\n if (panel.params.el) {\n $el = $(panel.params.el).eq(0);\n } else if (panel.params.content) {\n $el = $(panel.params.content).filter(node => node.nodeType === 1).eq(0);\n }\n if ($el.length === 0) return panel;\n if ($el[0].f7Panel) return $el[0].f7Panel;\n $el[0].f7Panel = panel;\n let {\n side,\n effect,\n resizable\n } = panel.params;\n if (typeof side === 'undefined') side = $el.hasClass('panel-left') ? 'left' : 'right';\n if (typeof effect === 'undefined')\n // eslint-disable-next-line\n effect = $el.hasClass('panel-cover') ? 'cover' : $el.hasClass('panel-push') ? 'push' : $el.hasClass('panel-floating') ? 'floating' : 'reveal';\n if (typeof resizable === 'undefined') resizable = $el.hasClass('panel-resizable');\n let $backdropEl;\n if (panel.params.backdrop && panel.params.backdropEl) {\n $backdropEl = $(panel.params.backdropEl);\n } else if (panel.params.backdrop) {\n $backdropEl = panel.$containerEl.children('.panel-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('
                      ');\n panel.$containerEl.prepend($backdropEl);\n }\n }\n extend(panel, {\n app,\n side,\n effect,\n resizable,\n $el,\n el: $el[0],\n opened: false,\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0]\n });\n\n // Install Modules\n panel.useModules();\n\n // Init\n panel.init();\n return panel;\n }\n getViewEl() {\n const panel = this;\n let viewEl;\n if (panel.$containerEl.children('.views').length > 0) {\n viewEl = panel.$containerEl.children('.views')[0];\n } else {\n viewEl = panel.$containerEl.children('.view')[0];\n }\n return viewEl;\n }\n setStateClasses(state) {\n const panel = this;\n const {\n side,\n el,\n effect\n } = panel;\n const viewEl = panel.getViewEl();\n const panelInView = viewEl && viewEl.contains(el);\n const $targetEl = !viewEl || panelInView ? panel.$containerEl : $('html');\n if (state === 'open') {\n $targetEl.addClass(`with-panel with-panel-${panel.side}-${panel.effect}`);\n }\n if (state === 'before-closing') {\n $targetEl.addClass('with-panel-closing');\n }\n if (state === 'closing') {\n $targetEl.addClass('with-panel-closing');\n $targetEl.removeClass(`with-panel with-panel-${panel.side}-${panel.effect}`);\n }\n if (state === 'after-closing') {\n $targetEl.removeClass('with-panel-closing');\n }\n if (state === 'closed') {\n $targetEl.removeClass(`with-panel-${side}-${effect}`);\n }\n }\n enableVisibleBreakpoint() {\n const panel = this;\n panel.visibleBreakpointDisabled = false;\n panel.setVisibleBreakpoint();\n return panel;\n }\n disableVisibleBreakpoint() {\n const panel = this;\n panel.visibleBreakpointDisabled = true;\n panel.setVisibleBreakpoint();\n return panel;\n }\n toggleVisibleBreakpoint() {\n const panel = this;\n panel.visibleBreakpointDisabled = !panel.visibleBreakpointDisabled;\n panel.setVisibleBreakpoint();\n return panel;\n }\n setVisibleBreakpoint(emitEvents) {\n if (emitEvents === void 0) {\n emitEvents = true;\n }\n const panel = this;\n const app = panel.app;\n if (!panel.visibleBreakpointResizeHandler) {\n panel.visibleBreakpointResizeHandler = function visibleBreakpointResizeHandler() {\n panel.setVisibleBreakpoint();\n };\n app.on('resize', panel.visibleBreakpointResizeHandler);\n }\n const {\n side,\n $el,\n $containerEl,\n params,\n visibleBreakpointDisabled\n } = panel;\n const breakpoint = params.visibleBreakpoint;\n const $viewEl = $(panel.getViewEl());\n const wasVisible = $el.hasClass('panel-in-breakpoint');\n if ($containerEl && $containerEl.hasClass('page')) {\n $viewEl.add($containerEl.children('.page-content, .tabs, .fab'));\n }\n if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null && !visibleBreakpointDisabled) {\n if (!wasVisible) {\n panel.setStateClasses('closed');\n $el.addClass('panel-in-breakpoint').removeClass('panel-in panel-in-collapsed');\n panel.onOpen(false);\n panel.onOpened();\n $viewEl.css({\n [`margin-${side}`]: `${$el.width()}px`\n });\n app.allowPanelOpen = true;\n if (emitEvents) {\n panel.emit('local::breakpoint panelBreakpoint', panel);\n panel.$el.trigger('panel:breakpoint');\n }\n } else {\n $viewEl.css({\n [`margin-${side}`]: `${$el.width()}px`\n });\n }\n } else if (wasVisible) {\n $el.removeClass('panel-in-breakpoint panel-in');\n panel.onClose();\n panel.onClosed();\n $viewEl.css({\n [`margin-${side}`]: ''\n });\n if (emitEvents) {\n panel.emit('local::breakpoint panelBreakpoint', panel);\n panel.$el.trigger('panel:breakpoint');\n }\n }\n }\n enableCollapsedBreakpoint() {\n const panel = this;\n panel.collapsedBreakpointDisabled = false;\n panel.setCollapsedBreakpoint();\n return panel;\n }\n disableCollapsedBreakpoint() {\n const panel = this;\n panel.collapsedBreakpointDisabled = true;\n panel.setCollapsedBreakpoint();\n return panel;\n }\n toggleCollapsedBreakpoint() {\n const panel = this;\n panel.collapsedBreakpointDisabled = !panel.collapsedBreakpointDisabled;\n panel.setCollapsedBreakpoint();\n return panel;\n }\n setCollapsedBreakpoint(emitEvents) {\n if (emitEvents === void 0) {\n emitEvents = true;\n }\n const panel = this;\n const app = panel.app;\n if (!panel.collapsedBreakpointResizeHandler) {\n panel.collapsedBreakpointResizeHandler = function collapsedBreakpointResizeHandler() {\n panel.setCollapsedBreakpoint();\n };\n app.on('resize', panel.collapsedBreakpointResizeHandler);\n }\n const {\n $el,\n params,\n collapsedBreakpointDisabled\n } = panel;\n if ($el.hasClass('panel-in-breakpoint')) return;\n const breakpoint = params.collapsedBreakpoint;\n const wasVisible = $el.hasClass('panel-in-collapsed');\n if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null && !collapsedBreakpointDisabled) {\n if (!wasVisible) {\n panel.setStateClasses('closed');\n $el.addClass('panel-in-collapsed').removeClass('panel-in');\n panel.collapsed = true;\n app.allowPanelOpen = true;\n if (emitEvents) {\n panel.emit('local::collapsedBreakpoint panelCollapsedBreakpoint', panel);\n panel.$el.trigger('panel:collapsedbreakpoint');\n }\n }\n } else if (wasVisible) {\n $el.removeClass('panel-in-collapsed panel-in');\n panel.collapsed = false;\n if (emitEvents) {\n panel.emit('local::collapsedBreakpoint panelCollapsedBreakpoint', panel);\n panel.$el.trigger('panel:collapsedbreakpoint');\n }\n }\n }\n enableResizable() {\n const panel = this;\n if (panel.resizableInitialized) {\n panel.resizable = true;\n panel.$el.addClass('panel-resizable');\n } else {\n resizablePanel(panel);\n }\n return panel;\n }\n disableResizable() {\n const panel = this;\n panel.resizable = false;\n panel.$el.removeClass('panel-resizable');\n return panel;\n }\n enableSwipe() {\n const panel = this;\n if (panel.swipeInitialized) {\n panel.swipeable = true;\n } else {\n swipePanel(panel);\n }\n return panel;\n }\n disableSwipe() {\n const panel = this;\n panel.swipeable = false;\n return panel;\n }\n onOpen(modifyHtmlClasses) {\n if (modifyHtmlClasses === void 0) {\n modifyHtmlClasses = true;\n }\n const panel = this;\n // eslint-disable-next-line\n panel._openTransitionStarted = false;\n const app = panel.app;\n panel.opened = true;\n app.panel.allowOpen = false;\n panel.$el.trigger('panel:beforeopen');\n panel.emit('local::beforeOpen panelBeforeOpen', panel);\n if (modifyHtmlClasses) {\n panel.setStateClasses('open');\n }\n panel.$el.trigger('panel:open');\n panel.emit('local::open panelOpen', panel);\n }\n onOpened() {\n const panel = this;\n const app = panel.app;\n app.panel.allowOpen = true;\n panel.$el.trigger('panel:opened');\n panel.emit('local::opened panelOpened', panel);\n }\n onClose() {\n const panel = this;\n const app = panel.app;\n panel.opened = false;\n app.panel.allowOpen = false;\n panel.$el.trigger('panel:beforeclose');\n panel.emit('local::beforeClose panelBeforeClose', panel);\n panel.setStateClasses('closing');\n panel.$el.trigger('panel:close');\n panel.emit('local::close panelClose', panel);\n }\n onClosed() {\n const panel = this;\n const app = panel.app;\n app.panel.allowOpen = true;\n panel.setStateClasses('after-closing');\n panel.$el.removeClass('panel-out');\n if (panel.$backdropEl) {\n const otherPanel = app.panel.get('.panel-in');\n const shouldHideBackdrop = !otherPanel || otherPanel && !otherPanel.$backdropEl;\n if (shouldHideBackdrop) {\n panel.$backdropEl.removeClass('panel-backdrop-in');\n }\n }\n panel.$el.trigger('panel:closed');\n panel.emit('local::closed panelClosed', panel);\n }\n toggle(animate) {\n if (animate === void 0) {\n animate = true;\n }\n const panel = this;\n const breakpoint = panel.params.visibleBreakpoint;\n const app = panel.app;\n if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null) {\n return panel.toggleVisibleBreakpoint();\n }\n if (panel.opened) panel.close(animate);else panel.open(animate);\n return panel;\n }\n insertToRoot() {\n const panel = this;\n const document = getDocument();\n const {\n $el,\n $backdropEl,\n $containerEl\n } = panel;\n const $panelParentEl = $el.parent();\n const wasInDom = $el.parents(document).length > 0;\n if (!$panelParentEl.is($containerEl) || $el.prevAll('.views, .view').length) {\n const $insertBeforeEl = $containerEl.children('.panel, .views, .view').eq(0);\n const $insertAfterEl = $containerEl.children('.panel-backdrop').eq(0);\n if ($insertBeforeEl.length) {\n $el.insertBefore($insertBeforeEl);\n } else if ($insertAfterEl) {\n $el.insertBefore($insertAfterEl);\n } else {\n $containerEl.prepend($el);\n }\n if ($backdropEl && $backdropEl.length && (!$backdropEl.parent().is($containerEl) && $backdropEl.nextAll('.panel').length === 0 || $backdropEl.parent().is($containerEl) && $backdropEl.nextAll('.panel').length === 0)) {\n $backdropEl.insertBefore($el);\n }\n panel.once('panelClosed', () => {\n if (wasInDom) {\n $panelParentEl.append($el);\n } else {\n $el.remove();\n }\n });\n }\n }\n open(animate) {\n if (animate === void 0) {\n animate = true;\n }\n const panel = this;\n const app = panel.app;\n if (!app.panel.allowOpen) return false;\n const {\n effect,\n $el,\n $backdropEl,\n opened,\n $containerEl\n } = panel;\n if (!$el || $el.hasClass('panel-in')) {\n return panel;\n }\n panel.insertToRoot();\n\n // Ignore if opened\n if (opened || $el.hasClass('panel-in-breakpoint') || $el.hasClass('panel-in')) return false;\n\n // Close if some panel is opened\n const otherOpenedPanel = app.panel.get('.panel-in');\n if (otherOpenedPanel && otherOpenedPanel !== panel) {\n otherOpenedPanel.close(animate);\n }\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n $el.addClass('panel-in');\n if ($backdropEl) {\n $backdropEl.addClass('panel-backdrop-in');\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n }\n if (['cover', 'push', 'floating'].includes(panel.effect)) {\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n panel._clientLeft = $el[0].clientLeft;\n }\n\n // Transitionend\n const $viewEl = $(panel.getViewEl());\n if ($containerEl && $containerEl.hasClass('page')) {\n $viewEl.add($containerEl.children('.page-content, .tabs'));\n }\n const transitionEndTarget = effect === 'reveal' ? $viewEl : $el;\n function panelTransitionStart() {\n transitionEndTarget.transitionStart(() => {\n // eslint-disable-next-line\n panel._openTransitionStarted = true;\n });\n }\n function panelTransitionEnd() {\n transitionEndTarget.transitionEnd(e => {\n if ($(e.target).is(transitionEndTarget)) {\n if ($el.hasClass('panel-out')) {\n panel.onClosed();\n } else {\n panel.onOpened();\n }\n } else panelTransitionEnd();\n });\n }\n if (animate) {\n if ($backdropEl) {\n $backdropEl.removeClass('not-animated');\n }\n panelTransitionStart();\n panelTransitionEnd();\n $el.removeClass('panel-out not-animated').addClass('panel-in');\n panel.onOpen();\n } else {\n if ($backdropEl) {\n $backdropEl.addClass('not-animated');\n }\n $el.removeClass('panel-out').addClass('panel-in not-animated');\n panel.onOpen();\n panel.onOpened();\n // eslint-disable-next-line\n panel._openTransitionStarted = true;\n }\n return true;\n }\n close(animate) {\n if (animate === void 0) {\n animate = true;\n }\n const panel = this;\n const {\n effect,\n $el,\n $backdropEl,\n opened,\n $containerEl\n } = panel;\n if (!opened || $el.hasClass('panel-in-breakpoint') || !$el.hasClass('panel-in')) return panel;\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n if ($backdropEl) {\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n }\n const $viewEl = $(panel.getViewEl());\n if ($containerEl && $containerEl.hasClass('page')) {\n $viewEl.add($containerEl.children('.page-content, .tabs'));\n }\n const transitionEndTarget = effect === 'reveal' ? $viewEl : $el;\n // eslint-disable-next-line\n if (!panel._openTransitionStarted) {\n // eslint-disable-next-line\n animate = false;\n }\n function transitionEnd() {\n if ($el.hasClass('panel-out')) {\n panel.onClosed();\n } else if ($el.hasClass('panel-in')) {\n panel.onOpened();\n }\n panel.setStateClasses('after-closing');\n }\n if (animate) {\n transitionEndTarget.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('panel-in').addClass('panel-out');\n // Emit close\n panel.onClose();\n } else {\n $el.addClass('not-animated').removeClass('panel-in').addClass('panel-out');\n // Emit close\n panel.onClose();\n panel.onClosed();\n }\n return panel;\n }\n init() {\n const panel = this;\n // const app = panel.app;\n if (typeof panel.params.visibleBreakpoint !== 'undefined') {\n panel.setVisibleBreakpoint();\n }\n if (typeof panel.params.collapsedBreakpoint !== 'undefined') {\n panel.setCollapsedBreakpoint();\n }\n if (panel.params.swipe) {\n panel.enableSwipe();\n }\n if (panel.resizable) {\n panel.enableResizable();\n }\n }\n destroy() {\n let panel = this;\n const app = panel.app;\n const {\n $containerEl\n } = panel;\n if (!panel.$el) {\n // Panel already destroyed\n return;\n }\n panel.emit('local::beforeDestroy panelBeforeDestroy', panel);\n panel.$el.trigger('panel:beforedestroy');\n if (panel.visibleBreakpointResizeHandler) {\n app.off('resize', panel.visibleBreakpointResizeHandler);\n }\n if (panel.collapsedBreakpointResizeHandler) {\n app.off('resize', panel.collapsedBreakpointResizeHandler);\n }\n if (panel.$el.hasClass('panel-in-breakpoint') || panel.$el.hasClass('panel-in-collapsed')) {\n const $viewEl = $(panel.getViewEl());\n if ($containerEl && $containerEl.hasClass('page')) {\n $viewEl.add($containerEl.children('.page-content, .tabs'));\n }\n panel.$el.removeClass('panel-in-breakpoint panel-in-collapsed panel-in');\n $viewEl.css({\n [`margin-${panel.side}`]: ''\n });\n panel.emit('local::breakpoint panelBreakpoint', panel);\n panel.$el.trigger('panel:breakpoint');\n }\n panel.$el.trigger('panel:destroy');\n panel.emit('local::destroy panelDestroy', panel);\n if (panel.el) {\n panel.el.f7Panel = null;\n delete panel.el.f7Panel;\n }\n deleteProps(panel);\n panel = null;\n }\n}\nexport default Panel;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Panel from './panel-class.js';\nexport default {\n name: 'panel',\n params: {\n panel: {\n opened: undefined,\n // default based on panel-in class\n side: undefined,\n // default based on panel class\n effect: undefined,\n // default based on panel class\n resizable: undefined,\n // default based on panel-resizable class\n backdrop: true,\n backdropEl: undefined,\n visibleBreakpoint: undefined,\n collapsedBreakpoint: undefined,\n swipe: false,\n // or true\n swipeNoFollow: false,\n // or true\n swipeOnlyClose: false,\n swipeActiveArea: 0,\n swipeThreshold: 0,\n closeByBackdropClick: true,\n containerEl: undefined\n }\n },\n static: {\n Panel\n },\n create() {\n const app = this;\n extend(app, {\n panel: {\n allowOpen: true,\n create(params) {\n return new Panel(app, params);\n },\n get(el) {\n if (el === void 0) {\n el = '.panel';\n }\n if (el instanceof Panel) return el;\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n const $el = $(el);\n if ($el.length === 0 || $el.length > 1) return undefined;\n return $el[0].f7Panel;\n },\n destroy(el) {\n if (el === void 0) {\n el = '.panel';\n }\n const panel = app.panel.get(el);\n if (panel && panel.destroy) return panel.destroy();\n return undefined;\n },\n open(el, animate) {\n if (el === void 0) {\n el = '.panel';\n }\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n let panel = app.panel.get(el);\n if (panel && panel.open) return panel.open(animate);\n if (!panel) {\n panel = app.panel.create({\n el\n });\n return panel.open(animate);\n }\n return undefined;\n },\n close(el, animate) {\n if (el === void 0) {\n el = '.panel-in';\n }\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n let panel = app.panel.get(el);\n if (panel && panel.open) return panel.close(animate);\n if (!panel) {\n panel = app.panel.create({\n el\n });\n return panel.close(animate);\n }\n return undefined;\n },\n toggle(el, animate) {\n if (el === void 0) {\n el = '.panel';\n }\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n let panel = app.panel.get(el);\n if (panel && panel.toggle) return panel.toggle(animate);\n if (!panel) {\n panel = app.panel.create({\n el\n });\n return panel.toggle(animate);\n }\n return undefined;\n }\n }\n });\n },\n on: {\n init() {\n const app = this;\n $('.panel-init').each(panelEl => {\n const params = Object.assign({\n el: panelEl\n }, $(panelEl).dataset() || {});\n app.panel.create(params);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.panel-init').each(panelEl => {\n const params = Object.assign({\n el: panelEl\n }, $(panelEl).dataset() || {});\n app.panel.create(params);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.panel-init').each(panelEl => {\n const panel = app.panel.get(panelEl);\n if (panel && panel.destroy) panel.destroy();\n });\n }\n },\n vnode: {\n 'panel-init': {\n insert(vnode) {\n const app = this;\n const panelEl = vnode.elm;\n const params = Object.assign({\n el: panelEl\n }, $(panelEl).dataset() || {});\n app.panel.create(params);\n },\n destroy(vnode) {\n const app = this;\n const panelEl = vnode.elm;\n const panel = app.panel.get(panelEl);\n if (panel && panel.destroy) panel.destroy();\n }\n }\n },\n clicks: {\n '.panel-open': function open(clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.panel.open(data.panel, data.animate);\n },\n '.panel-close': function close(clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.panel.close(data.panel, data.animate);\n },\n '.panel-toggle': function close(clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.panel.toggle(data.panel, data.animate);\n },\n '.panel-backdrop': function close() {\n const app = this;\n const $panelEl = $('.panel-in:not(.panel-out)');\n if (!$panelEl.length) return;\n const instance = $panelEl[0] && $panelEl[0].f7Panel;\n $panelEl.trigger('panel:backdrop-click');\n if (instance) {\n instance.emit('backdropClick', instance);\n }\n app.emit('panelBackdropClick', instance || $panelEl[0]);\n if (instance && instance.params.closeByBackdropClick === false) return;\n if (app.params.panel.closeByBackdropClick) app.panel.close();\n }\n }\n};","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport $ from '../../shared/dom7.js';\nconst CardExpandable = {\n open(cardEl, animate) {\n if (cardEl === void 0) {\n cardEl = '.card-expandable';\n }\n if (animate === void 0) {\n animate = true;\n }\n const app = this;\n const device = getDevice();\n const document = getDocument();\n const support = getSupport();\n const $cardEl = $(cardEl).eq(0);\n if (!$cardEl || !$cardEl.length) return;\n if ($cardEl.hasClass('card-opened') || $cardEl.hasClass('card-opening') || $cardEl.hasClass('card-closing')) return;\n const $pageEl = $cardEl.parents('.page').eq(0);\n if (!$pageEl.length) return;\n if ($pageEl.find('.card-opened').length) {\n return;\n }\n let prevented;\n function prevent() {\n prevented = true;\n }\n $cardEl.trigger('card:beforeopen', {\n prevent\n });\n app.emit('cardBeforeOpen', $cardEl[0], prevent);\n if (prevented) return;\n const cardParams = Object.assign({\n animate\n }, app.params.card, $cardEl.dataset());\n const $pageContentEl = $cardEl.parents('.page-content');\n let $backdropEl;\n if ($cardEl.attr('data-backdrop-el')) {\n $backdropEl = $($cardEl.attr('data-backdrop-el'));\n }\n if (!$backdropEl && cardParams.backdrop) {\n $backdropEl = $pageContentEl.find('.card-backdrop');\n if (!$backdropEl.length) {\n $backdropEl = $('
                      ');\n $pageContentEl.append($backdropEl);\n }\n }\n let $navbarEl;\n let $toolbarEl;\n if (cardParams.hideNavbarOnOpen) {\n $navbarEl = $pageEl.children('.navbar');\n if (!$navbarEl.length) {\n if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;\n }\n }\n if (cardParams.hideToolbarOnOpen) {\n $toolbarEl = $pageEl.children('.toolbar');\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n }\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.views').children('.toolbar');\n }\n }\n const currTransform = $cardEl.css('transform');\n let hasTransform;\n if (currTransform && currTransform.match(/[2-9]/)) {\n hasTransform = true;\n }\n const $cardContentEl = $cardEl.children('.card-content');\n const $cardSizeEl = $(document.createElement('div')).addClass('card-expandable-size');\n $cardEl.append($cardSizeEl);\n let cardWidth = $cardEl[0].offsetWidth;\n let cardHeight = $cardEl[0].offsetHeight;\n let pageWidth = $pageEl[0].offsetWidth;\n let pageHeight = $pageEl[0].offsetHeight;\n let maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;\n let maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;\n let statusbarHeight;\n if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {\n statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);\n if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;\n }\n if (statusbarHeight) {\n maxHeight -= statusbarHeight;\n }\n let scaleX = maxWidth / cardWidth;\n let scaleY = maxHeight / cardHeight;\n let offset = $cardEl.offset();\n let pageOffset = $pageEl.offset();\n if (statusbarHeight) {\n pageOffset.top += statusbarHeight / 2;\n }\n offset.left -= pageOffset.left;\n let cardLeftOffset;\n let cardTopOffset;\n if (hasTransform) {\n const transformValues = currTransform.replace(/matrix\\(|\\)/g, '').split(',').map(el => el.trim());\n if (transformValues && transformValues.length > 1) {\n const scale = parseFloat(transformValues[0]);\n cardLeftOffset = offset.left - cardWidth * (1 - scale) / 2;\n cardTopOffset = offset.top - pageOffset.top - cardHeight * (1 - scale) / 2;\n if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n } else {\n cardLeftOffset = $cardEl[0].offsetLeft;\n cardTopOffset = $cardEl[0].offsetTop - ($pageContentEl.length ? $pageContentEl[0].scrollTop : 0);\n }\n } else {\n cardLeftOffset = offset.left;\n cardTopOffset = offset.top - pageOffset.top;\n if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n }\n cardLeftOffset -= (pageWidth - maxWidth) / 2;\n cardTopOffset -= (pageHeight - maxHeight) / 2;\n let cardRightOffset = maxWidth - cardWidth - cardLeftOffset;\n if (app.rtl) {\n [cardLeftOffset, cardRightOffset] = [cardRightOffset, cardLeftOffset];\n }\n let cardBottomOffset = maxHeight - cardHeight - cardTopOffset;\n let translateX = (cardRightOffset - cardLeftOffset) / 2;\n let translateY = (cardBottomOffset - cardTopOffset) / 2;\n if (cardParams.hideNavbarOnOpen && $navbarEl && $navbarEl.length) {\n if ($navbarEl.closest('.navbar-hidden').length) {\n // Was hidden\n $cardEl[0].f7KeepNavbarOnClose = true;\n } else {\n delete $cardEl[0].f7KeepNavbarOnClose;\n app.navbar.hide($navbarEl, cardParams.animate, cardParams.hideStatusbarOnOpen, true);\n }\n }\n if (cardParams.hideToolbarOnOpen && $toolbarEl && $toolbarEl.length) {\n if ($toolbarEl.closest('.toolbar-hidden').length) {\n // Was hidden\n $cardEl[0].f7KeepToolbarOnClose = true;\n } else {\n delete $cardEl[0].f7KeepToolbarOnClose;\n app.toolbar.hide($toolbarEl, cardParams.animate);\n }\n }\n if ($backdropEl) {\n $backdropEl.removeClass('card-backdrop-out').addClass('card-backdrop-in');\n }\n $cardEl.removeClass('card-transitioning');\n if (cardParams.animate) {\n $cardEl.addClass('card-opening');\n }\n $cardEl.trigger('card:open');\n app.emit('cardOpen', $cardEl[0]);\n function transitionEnd() {\n $pageEl.addClass('page-with-card-opened');\n if (device.ios && $pageContentEl.length) {\n $pageContentEl.css('height', `${$pageContentEl[0].offsetHeight + 1}px`);\n setTimeout(() => {\n $pageContentEl.css('height', '');\n });\n }\n $cardEl.addClass('card-opened');\n $cardEl.removeClass('card-opening');\n $cardEl.trigger('card:opened');\n app.emit('cardOpened', $cardEl[0], $pageEl[0]);\n }\n $cardContentEl.css({\n width: `${maxWidth}px`,\n height: `${maxHeight}px`\n }).transform(`translate3d(${app.rtl ? cardLeftOffset + translateX : -cardLeftOffset - translateX}px, 0px, 0) scale(${1 / scaleX}, ${1 / scaleY})`);\n $cardEl.transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);\n if (cardParams.animate) {\n $cardEl.transitionEnd(() => {\n transitionEnd();\n });\n } else {\n transitionEnd();\n }\n function onResize() {\n $cardEl.removeClass('card-transitioning');\n cardWidth = $cardEl[0].offsetWidth;\n cardHeight = $cardEl[0].offsetHeight;\n pageWidth = $pageEl[0].offsetWidth;\n pageHeight = $pageEl[0].offsetHeight;\n maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;\n maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;\n statusbarHeight = 0;\n if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {\n statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);\n if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;\n }\n if (statusbarHeight) {\n maxHeight -= statusbarHeight;\n }\n scaleX = maxWidth / cardWidth;\n scaleY = maxHeight / cardHeight;\n $cardEl.transform('translate3d(0px, 0px, 0) scale(1)');\n offset = $cardEl.offset();\n pageOffset = $pageEl.offset();\n if (statusbarHeight) {\n pageOffset.top += statusbarHeight / 2;\n }\n offset.left -= pageOffset.left;\n offset.top -= pageOffset.top;\n cardLeftOffset = offset.left - (pageWidth - maxWidth) / 2;\n if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n cardTopOffset = offset.top - (pageHeight - maxHeight) / 2;\n cardRightOffset = maxWidth - cardWidth - cardLeftOffset;\n cardBottomOffset = maxHeight - cardHeight - cardTopOffset;\n if (app.rtl) {\n [cardLeftOffset, cardRightOffset] = [cardRightOffset, cardLeftOffset];\n }\n translateX = (cardRightOffset - cardLeftOffset) / 2;\n translateY = (cardBottomOffset - cardTopOffset) / 2;\n $cardEl.transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);\n $cardContentEl.css({\n width: `${maxWidth}px`,\n height: `${maxHeight}px`\n }).transform(`translate3d(${app.rtl ? cardLeftOffset + translateX : -cardLeftOffset - translateX}px, 0px, 0) scale(${1 / scaleX}, ${1 / scaleY})`);\n }\n let cardScrollTop;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchEndX;\n let touchEndY;\n let isScrolling;\n let progress;\n let isV;\n let isH;\n let $cardScrollableEl;\n function onTouchStart(e) {\n if (!$(e.target).closest($cardEl).length || !e.isTrusted) return;\n if (!$cardEl.hasClass('card-opened')) return;\n $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);\n if ($cardScrollableEl[0] && $cardScrollableEl[0] !== $cardContentEl[0] && !$cardScrollableEl[0].contains(e.target)) {\n cardScrollTop = 0;\n } else {\n cardScrollTop = $cardScrollableEl.scrollTop();\n }\n isTouched = true;\n touchStartX = e.targetTouches[0].pageX;\n touchStartY = e.targetTouches[0].pageY;\n isScrolling = undefined;\n isV = false;\n isH = false;\n }\n function onTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n touchEndX = e.targetTouches[0].pageX;\n touchEndY = e.targetTouches[0].pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(touchEndY - touchStartY) > Math.abs(touchEndX - touchStartX));\n }\n if (!isH && !isV) {\n if (!isScrolling && e.targetTouches[0].clientX <= 50) {\n isH = true;\n } else {\n isV = true;\n }\n }\n if (!(isH || isV) || isV && cardScrollTop !== 0) {\n isTouched = true;\n isMoved = true;\n return;\n }\n if (!isMoved) {\n $cardEl.removeClass('card-transitioning');\n }\n isMoved = true;\n progress = isV ? Math.max((touchEndY - touchStartY) / 150, 0) : Math.max((touchEndX - touchStartX) / (cardWidth / 2), 0);\n if (progress > 0 && isV || isH) {\n if (isV && device.ios && $cardScrollableEl[0] === $cardContentEl[0]) {\n $cardScrollableEl.css('-webkit-overflow-scrolling', 'auto');\n $cardScrollableEl.scrollTop(0);\n }\n e.preventDefault();\n }\n if (progress > 1) progress **= 0.3;\n if (progress > (isV ? 1.3 : 1.1)) {\n isTouched = false;\n isMoved = false;\n app.card.close($cardEl);\n } else {\n $cardEl.transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX * (1 - progress * 0.2)}, ${scaleY * (1 - progress * 0.2)})`);\n }\n }\n function onTouchEnd(e) {\n if (!isTouched || !isMoved || !e.isTrusted) return;\n isTouched = false;\n isMoved = false;\n if (device.ios) {\n $cardScrollableEl.css('-webkit-overflow-scrolling', '');\n }\n if (progress >= 0.8) {\n app.card.close($cardEl);\n } else {\n $cardEl.addClass('card-transitioning').transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);\n }\n }\n $cardEl[0].detachEventHandlers = function detachEventHandlers() {\n app.off('resize', onResize);\n if (support.touch && cardParams.swipeToClose) {\n app.off('touchstart:passive', onTouchStart);\n app.off('touchmove:active', onTouchMove);\n app.off('touchend:passive', onTouchEnd);\n }\n };\n app.on('resize', onResize);\n if (support.touch && cardParams.swipeToClose) {\n app.on('touchstart:passive', onTouchStart);\n app.on('touchmove:active', onTouchMove);\n app.on('touchend:passive', onTouchEnd);\n }\n },\n close(cardEl, animate) {\n if (cardEl === void 0) {\n cardEl = '.card-expandable.card-opened';\n }\n if (animate === void 0) {\n animate = true;\n }\n const app = this;\n const device = getDevice();\n const $cardEl = $(cardEl).eq(0);\n if (!$cardEl || !$cardEl.length) return;\n if (!$cardEl.hasClass('card-opened') || $cardEl.hasClass('card-opening') || $cardEl.hasClass('card-closing')) return;\n const $cardContentEl = $cardEl.children('.card-content');\n const $pageContentEl = $cardEl.parents('.page-content');\n const $pageEl = $cardEl.parents('.page').eq(0);\n if (!$pageEl.length) return;\n const cardParams = Object.assign({\n animate\n }, app.params.card, $cardEl.dataset());\n const $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);\n let $navbarEl;\n let $toolbarEl;\n let $backdropEl;\n if ($cardEl.attr('data-backdrop-el')) {\n $backdropEl = $($cardEl.attr('data-backdrop-el'));\n }\n if (cardParams.backdrop) {\n $backdropEl = $cardEl.parents('.page-content').find('.card-backdrop');\n }\n if (cardParams.hideNavbarOnOpen) {\n $navbarEl = $pageEl.children('.navbar');\n if (!$navbarEl.length) {\n if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;\n }\n if ($navbarEl && $navbarEl.length && !$cardEl[0].f7KeepNavbarOnClose) {\n app.navbar.show($navbarEl, cardParams.animate, true);\n }\n }\n if (cardParams.hideToolbarOnOpen) {\n $toolbarEl = $pageEl.children('.toolbar');\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n }\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.views').children('.toolbar');\n }\n if ($toolbarEl && $toolbarEl.length && !$cardEl[0].f7KeepToolbarOnClose) {\n app.toolbar.show($toolbarEl, cardParams.animate);\n }\n }\n $pageEl.removeClass('page-with-card-opened');\n if (device.ios && $pageContentEl.length) {\n $pageContentEl.css('height', `${$pageContentEl[0].offsetHeight + 1}px`);\n setTimeout(() => {\n $pageContentEl.css('height', '');\n });\n }\n if ($backdropEl && $backdropEl.length) {\n $backdropEl.removeClass('card-backdrop-in').addClass('card-backdrop-out');\n }\n $cardEl.removeClass('card-opened card-transitioning');\n if (cardParams.animate) {\n $cardEl.addClass('card-closing');\n } else {\n $cardEl.addClass('card-no-transition');\n }\n $cardEl.transform('');\n $cardEl.trigger('card:close');\n app.emit('cardClose', $cardEl[0], $pageEl[0]);\n const animateWidth = $cardEl.hasClass('card-expandable-animate-width');\n function transitionEnd() {\n if (!animateWidth) {\n $cardContentEl.css({\n width: '',\n height: ''\n });\n }\n if ($backdropEl && $backdropEl.length) {\n $backdropEl.removeClass('card-backdrop-in card-backdrop-out');\n }\n $cardEl.removeClass('card-closing card-no-transition');\n $cardEl.trigger('card:closed');\n $cardEl.find('.card-expandable-size').remove();\n app.emit('cardClosed', $cardEl[0], $pageEl[0]);\n }\n if (animateWidth) {\n $cardContentEl.css({\n width: '',\n height: ''\n });\n }\n $cardContentEl.transform('').scrollTop(0, animate ? 300 : 0);\n if ($cardScrollableEl.length && $cardScrollableEl[0] !== $cardContentEl[0]) {\n $cardScrollableEl.scrollTop(0, animate ? 300 : 0);\n }\n if (animate) {\n $cardContentEl.transitionEnd(() => {\n transitionEnd();\n });\n } else {\n transitionEnd();\n }\n if ($cardEl[0].detachEventHandlers) {\n $cardEl[0].detachEventHandlers();\n delete $cardEl[0].detachEventHandlers;\n }\n },\n toggle(cardEl, animate) {\n if (cardEl === void 0) {\n cardEl = '.card-expandable';\n }\n const app = this;\n const $cardEl = $(cardEl).eq(0);\n if (!$cardEl.length) return;\n if ($cardEl.hasClass('card-opened')) {\n app.card.close($cardEl, animate);\n } else {\n app.card.open($cardEl, animate);\n }\n }\n};\nexport default {\n name: 'card',\n params: {\n card: {\n hideNavbarOnOpen: true,\n hideStatusbarOnOpen: true,\n hideToolbarOnOpen: true,\n scrollableEl: '.card-content',\n swipeToClose: true,\n closeByBackdropClick: true,\n backdrop: true\n }\n },\n create() {\n const app = this;\n bindMethods(app, {\n card: CardExpandable\n });\n },\n on: {\n pageBeforeIn(page) {\n const app = this;\n if (app.params.card.hideNavbarOnOpen && page.navbarEl && page.$el.find('.card-opened.card-expandable').length) {\n app.navbar.hide(page.navbarEl, true, app.params.card.hideStatusbarOnOpen, true);\n }\n if (app.params.card.hideToolbarOnOpen && page.$el.find('.card-opened.card-expandable').length) {\n let $toolbarEl = page.$el.children('.toolbar');\n if (!$toolbarEl.length) {\n $toolbarEl = page.$el.parents('.view').children('.toolbar');\n }\n if (!$toolbarEl.length) {\n $toolbarEl = page.$el.parents('.views').children('.toolbar');\n }\n if ($toolbarEl && $toolbarEl.length) {\n app.toolbar.hide($toolbarEl);\n }\n }\n }\n },\n clicks: {\n '.card-close': function closeCard($clickedEl, data) {\n const app = this;\n app.card.close(data.card, data.animate);\n },\n '.card-open': function closeCard($clickedEl, data) {\n const app = this;\n app.card.open(data.card, data.animate);\n },\n '.card-expandable': function toggleExpandableCard($clickedEl, data, e) {\n const app = this;\n if ($clickedEl.hasClass('card-opened') || $clickedEl.hasClass('card-opening') || $clickedEl.hasClass('card-closing')) return;\n if ($(e.target).closest('.card-prevent-open, .card-close').length) return;\n app.card.open($clickedEl);\n },\n '.card-backdrop-in': function onBackdropClick() {\n const app = this;\n let needToClose = false;\n if (app.params.card.closeByBackdropClick) needToClose = true;\n const $openedCardEl = $('.card-opened');\n if (!$openedCardEl.length) return;\n if ($openedCardEl.attr('data-close-by-backdrop-click') === 'true') {\n needToClose = true;\n } else if ($openedCardEl.attr('data-close-by-backdrop-click') === 'false') {\n needToClose = false;\n }\n if (needToClose) app.card.close($openedCardEl);\n }\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, serializeObject } from '../../shared/utils.js';\n\n// Form Data\nconst FormData = {\n store(form, data) {\n const app = this;\n const window = getWindow();\n let formId = form;\n const $formEl = $(form);\n if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n formId = $formEl.attr('id');\n }\n // Store form data in app.formsData\n app.form.data[`form-${formId}`] = data;\n\n // Store form data in local storage also\n window.localStorage[`f7form-${formId}`] = JSON.stringify(data);\n },\n get(form) {\n const app = this;\n const window = getWindow();\n let formId = form;\n const $formEl = $(form);\n if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n formId = $formEl.attr('id');\n }\n if (window.localStorage[`f7form-${formId}`]) {\n return JSON.parse(window.localStorage[`f7form-${formId}`]);\n }\n if (app.form.data[`form-${formId}`]) {\n return app.form.data[`form-${formId}`];\n }\n return undefined;\n },\n remove(form) {\n const app = this;\n const window = getWindow();\n let formId = form;\n const $formEl = $(form);\n if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n formId = $formEl.attr('id');\n }\n\n // Delete form data from app.formsData\n if (app.form.data[`form-${formId}`]) {\n app.form.data[`form-${formId}`] = '';\n delete app.form.data[`form-${formId}`];\n }\n\n // Delete form data from local storage also\n if (window.localStorage[`f7form-${formId}`]) {\n window.localStorage[`f7form-${formId}`] = '';\n window.localStorage.removeItem(`f7form-${formId}`);\n }\n }\n};\n\n// Form Storage\nconst FormStorage = {\n init(formEl) {\n const app = this;\n const $formEl = $(formEl);\n const formId = $formEl.attr('id');\n if (!formId) return;\n const initialData = app.form.getFormData(formId);\n if (initialData) {\n app.form.fillFromData($formEl, initialData);\n }\n function store() {\n const data = app.form.convertToData($formEl);\n if (!data) return;\n app.form.storeFormData(formId, data);\n $formEl.trigger('form:storedata', data);\n app.emit('formStoreData', $formEl[0], data);\n }\n $formEl.on('change submit', store);\n },\n destroy(formEl) {\n const $formEl = $(formEl);\n $formEl.off('change submit');\n }\n};\n\n// Form To/From Data\nfunction formToData(formEl) {\n const app = this;\n const $formEl = $(formEl).eq(0);\n if ($formEl.length === 0) return undefined;\n\n // Form data\n const data = {};\n\n // Skip input types\n const skipTypes = ['submit', 'image', 'button', 'file'];\n const skipNames = [];\n $formEl.find('input, select, textarea').each(inputEl => {\n const $inputEl = $(inputEl);\n if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {\n return;\n }\n const name = $inputEl.attr('name');\n const type = $inputEl.attr('type');\n const tag = inputEl.nodeName.toLowerCase();\n if (skipTypes.indexOf(type) >= 0) return;\n if (skipNames.indexOf(name) >= 0 || !name) return;\n if (tag === 'select' && $inputEl.prop('multiple')) {\n skipNames.push(name);\n data[name] = [];\n $formEl.find(`select[name=\"${name}\"] option`).each(el => {\n if (el.selected) data[name].push(el.value);\n });\n } else {\n switch (type) {\n case 'checkbox':\n skipNames.push(name);\n data[name] = [];\n $formEl.find(`input[name=\"${name}\"]`).each(el => {\n if (el.checked) data[name].push(el.value);\n });\n break;\n case 'radio':\n skipNames.push(name);\n $formEl.find(`input[name=\"${name}\"]`).each(el => {\n if (el.checked) data[name] = el.value;\n });\n break;\n default:\n data[name] = $inputEl.val();\n break;\n }\n }\n });\n $formEl.trigger('form:todata', data);\n app.emit('formToData', $formEl[0], data);\n return data;\n}\nfunction formFromData(formEl, formData) {\n const app = this;\n const $formEl = $(formEl).eq(0);\n if (!$formEl.length) return;\n let data = formData;\n const formId = $formEl.attr('id');\n if (!data && formId) {\n data = app.form.getFormData(formId);\n }\n if (!data) return;\n\n // Skip input types\n const skipTypes = ['submit', 'image', 'button', 'file'];\n const skipNames = [];\n $formEl.find('input, select, textarea').each(inputEl => {\n const $inputEl = $(inputEl);\n if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {\n return;\n }\n const name = $inputEl.attr('name');\n const type = $inputEl.attr('type');\n const tag = inputEl.nodeName.toLowerCase();\n if (typeof data[name] === 'undefined' || data[name] === null) return;\n if (skipTypes.indexOf(type) >= 0) return;\n if (skipNames.indexOf(name) >= 0 || !name) return;\n if (tag === 'select' && $inputEl.prop('multiple')) {\n skipNames.push(name);\n $formEl.find(`select[name=\"${name}\"] option`).each(el => {\n const selectEl = el;\n if (data[name].indexOf(el.value) >= 0) selectEl.selected = true;else selectEl.selected = false;\n });\n } else {\n switch (type) {\n case 'checkbox':\n skipNames.push(name);\n $formEl.find(`input[name=\"${name}\"]`).each(el => {\n const checkboxEl = el;\n if (data[name].indexOf(el.value) >= 0) checkboxEl.checked = true;else checkboxEl.checked = false;\n });\n break;\n case 'radio':\n skipNames.push(name);\n $formEl.find(`input[name=\"${name}\"]`).each(el => {\n const radioEl = el;\n if (data[name] === el.value) radioEl.checked = true;else radioEl.checked = false;\n });\n break;\n default:\n $inputEl.val(data[name]);\n break;\n }\n }\n if (tag === 'select' || tag === 'input' || tag === 'textarea') {\n $inputEl.trigger('change', 'fromdata');\n }\n });\n $formEl.trigger('form:fromdata', data);\n app.emit('formFromData', $formEl[0], data);\n}\nfunction initAjaxForm() {\n const app = this;\n const window = getWindow();\n const document = getDocument();\n function onSubmitChange(e, fromData) {\n const $formEl = $(this);\n if (e.type === 'change' && !$formEl.hasClass('form-ajax-submit-onchange')) return;\n if (e.type === 'submit') e.preventDefault();\n if (e.type === 'change' && fromData === 'fromdata') return;\n const method = ($formEl.attr('method') || 'GET').toUpperCase();\n const contentType = $formEl.attr('enctype') || $formEl.prop('enctype');\n let url = $formEl.attr('action');\n if (!url) return;\n let data;\n if (method === 'POST') {\n if (contentType === 'application/x-www-form-urlencoded' || contentType === 'application/json') {\n data = app.form.convertToData($formEl[0]);\n if (contentType === 'application/json') {\n data = JSON.stringify(data);\n }\n } else {\n data = new window.FormData($formEl[0]);\n }\n } else {\n data = serializeObject(app.form.convertToData($formEl[0]));\n if (url.includes('?')) {\n url += `&${data}`;\n } else {\n url += `?${data}`;\n }\n }\n $formEl.trigger('formajax:beforesend', {\n data\n });\n app.emit('formAjaxBeforeSend', $formEl[0], data);\n fetch(url, {\n method,\n headers: {\n 'Content-Type': contentType || 'application/x-www-form-urlencoded'\n },\n ...(method === 'POST' || method === 'PUT' ? {\n body: data\n } : {})\n }).then(response => {\n $formEl.trigger('formajax:complete', {\n data,\n response\n });\n app.emit('formAjaxComplete', $formEl[0], data, response);\n $formEl.trigger('formajax:success', {\n data,\n response\n });\n app.emit('formAjaxSuccess', $formEl[0], data, response);\n }).catch(error => {\n $formEl.trigger('formajax:error', {\n data,\n error\n });\n app.emit('formAjaxError', $formEl[0], data, error);\n });\n }\n $(document).on('submit change', 'form.form-ajax-submit, form.form-ajax-submit-onchange', onSubmitChange);\n}\nexport default {\n name: 'form',\n create() {\n const app = this;\n extend(app, {\n form: {\n data: {},\n storeFormData: FormData.store.bind(app),\n getFormData: FormData.get.bind(app),\n removeFormData: FormData.remove.bind(app),\n convertToData: formToData.bind(app),\n fillFromData: formFromData.bind(app),\n storage: {\n init: FormStorage.init.bind(app),\n destroy: FormStorage.destroy.bind(app)\n }\n }\n });\n },\n on: {\n init() {\n const app = this;\n initAjaxForm.call(app);\n },\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.form-store-data').each(formEl => {\n app.form.storage.destroy(formEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.form-store-data').each(formEl => {\n app.form.storage.init(formEl);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.form-store-data').each(formEl => {\n app.form.storage.destroy(formEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.form-store-data').each(formEl => {\n app.form.storage.init(formEl);\n });\n }\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nconst Input = {\n ignoreTypes: ['checkbox', 'button', 'submit', 'range', 'radio', 'image'],\n createTextareaResizableShadow() {\n const document = getDocument();\n const $shadowEl = $(document.createElement('textarea'));\n $shadowEl.addClass('textarea-resizable-shadow');\n $shadowEl.prop({\n disabled: true,\n readonly: true\n });\n Input.textareaResizableShadow = $shadowEl;\n },\n textareaResizableShadow: undefined,\n resizeTextarea(textareaEl) {\n const app = this;\n const window = getWindow();\n const $textareaEl = $(textareaEl);\n if (!Input.textareaResizableShadow) {\n Input.createTextareaResizableShadow();\n }\n const $shadowEl = Input.textareaResizableShadow;\n if (!$textareaEl.length) return;\n if (!$textareaEl.hasClass('resizable')) return;\n if (Input.textareaResizableShadow.parents().length === 0) {\n app.$el.append($shadowEl);\n }\n const styles = window.getComputedStyle($textareaEl[0]);\n 'padding-top padding-bottom padding-left padding-right margin-left margin-right margin-top margin-bottom width font-size font-family font-style font-weight line-height font-variant text-transform letter-spacing border box-sizing display'.split(' ').forEach(style => {\n let styleValue = styles[style];\n if ('font-size line-height letter-spacing width'.split(' ').indexOf(style) >= 0) {\n styleValue = styleValue.replace(',', '.');\n }\n $shadowEl.css(style, styleValue);\n });\n const currentHeight = $textareaEl[0].clientHeight;\n $shadowEl.val('');\n const initialHeight = $shadowEl[0].scrollHeight;\n $shadowEl.val($textareaEl.val());\n $shadowEl.css('height', 0);\n const scrollHeight = $shadowEl[0].scrollHeight;\n if (currentHeight !== scrollHeight) {\n if (scrollHeight > initialHeight) {\n $textareaEl.css('height', `${scrollHeight}px`);\n } else if (scrollHeight < currentHeight) {\n $textareaEl.css('height', '');\n }\n if (scrollHeight > initialHeight || scrollHeight < currentHeight) {\n $textareaEl.trigger('textarea:resize', {\n initialHeight,\n currentHeight,\n scrollHeight\n });\n app.emit('textareaResize', {\n initialHeight,\n currentHeight,\n scrollHeight\n });\n }\n }\n },\n validate(inputEl) {\n const $inputEl = $(inputEl);\n if (!$inputEl.length) return true;\n const $itemInputEl = $inputEl.parents('.item-input');\n const $inputWrapEl = $inputEl.parents('.input');\n function unsetReadonly() {\n if ($inputEl[0].f7ValidateReadonly) {\n $inputEl[0].readOnly = false;\n }\n }\n function setReadonly() {\n if ($inputEl[0].f7ValidateReadonly) {\n $inputEl[0].readOnly = true;\n }\n }\n unsetReadonly();\n const validity = $inputEl[0].validity;\n const validationMessage = $inputEl.dataset().errorMessage || $inputEl[0].validationMessage || '';\n if (!validity) {\n setReadonly();\n return true;\n }\n if (!validity.valid) {\n let $errorEl = $inputEl.nextAll('.item-input-error-message, .input-error-message');\n if (validationMessage) {\n if ($errorEl.length === 0) {\n $errorEl = $(`
                      `);\n $errorEl.insertAfter($inputEl);\n }\n $errorEl.text(validationMessage);\n }\n if ($errorEl.length > 0) {\n $itemInputEl.addClass('item-input-with-error-message');\n $inputWrapEl.addClass('input-with-error-message');\n }\n $itemInputEl.addClass('item-input-invalid');\n $inputWrapEl.addClass('input-invalid');\n $inputEl.addClass('input-invalid');\n setReadonly();\n return false;\n }\n $itemInputEl.removeClass('item-input-invalid item-input-with-error-message');\n $inputWrapEl.removeClass('input-invalid input-with-error-message');\n $inputEl.removeClass('input-invalid');\n setReadonly();\n return true;\n },\n validateInputs(el) {\n const app = this;\n const validates = $(el).find('input, textarea, select').map(inputEl => app.input.validate(inputEl));\n return validates.indexOf(false) < 0;\n },\n focus(inputEl) {\n const $inputEl = $(inputEl);\n const type = $inputEl.attr('type');\n if (Input.ignoreTypes.indexOf(type) >= 0) return;\n $inputEl.parents('.item-input').addClass('item-input-focused');\n $inputEl.parents('.input').addClass('input-focused');\n $inputEl.addClass('input-focused');\n },\n blur(inputEl) {\n const $inputEl = $(inputEl);\n $inputEl.parents('.item-input').removeClass('item-input-focused');\n $inputEl.parents('.input').removeClass('input-focused');\n $inputEl.removeClass('input-focused');\n },\n checkEmptyState(inputEl) {\n const app = this;\n let $inputEl = $(inputEl);\n if (!$inputEl.is('input, select, textarea, .item-input [contenteditable]')) {\n $inputEl = $inputEl.find('input, select, textarea, .item-input [contenteditable]').eq(0);\n }\n if (!$inputEl.length) return;\n const isContentEditable = $inputEl[0].hasAttribute('contenteditable');\n let value;\n if (isContentEditable) {\n if ($inputEl.find('.text-editor-placeholder').length) value = '';else value = $inputEl.html();\n } else {\n value = $inputEl.val();\n }\n const $itemInputEl = $inputEl.parents('.item-input');\n const $inputWrapEl = $inputEl.parents('.input');\n if (value && typeof value === 'string' && value.trim() !== '' || Array.isArray(value) && value.length > 0) {\n $itemInputEl.addClass('item-input-with-value');\n $inputWrapEl.addClass('input-with-value');\n $inputEl.addClass('input-with-value');\n $inputEl.trigger('input:notempty');\n app.emit('inputNotEmpty', $inputEl[0]);\n } else {\n $itemInputEl.removeClass('item-input-with-value');\n $inputWrapEl.removeClass('input-with-value');\n $inputEl.removeClass('input-with-value');\n $inputEl.trigger('input:empty');\n app.emit('inputEmpty', $inputEl[0]);\n }\n },\n scrollIntoView(inputEl, duration, centered, force) {\n if (duration === void 0) {\n duration = 0;\n }\n const $inputEl = $(inputEl);\n const $scrollableEl = $inputEl.parents('.page-content, .panel, .card-expandable .card-content').eq(0);\n if (!$scrollableEl.length) {\n return false;\n }\n const contentHeight = $scrollableEl[0].offsetHeight;\n const contentScrollTop = $scrollableEl[0].scrollTop;\n const contentPaddingTop = parseInt($scrollableEl.css('padding-top'), 10);\n const contentPaddingBottom = parseInt($scrollableEl.css('padding-bottom'), 10);\n const contentOffsetTop = $scrollableEl.offset().top - contentScrollTop;\n const inputOffsetTop = $inputEl.offset().top - contentOffsetTop;\n const inputHeight = $inputEl[0].offsetHeight;\n const min = inputOffsetTop + contentScrollTop - contentPaddingTop;\n const max = inputOffsetTop + contentScrollTop - contentHeight + contentPaddingBottom + inputHeight;\n const centeredPosition = min + (max - min) / 2;\n if (contentScrollTop > min) {\n $scrollableEl.scrollTop(centered ? centeredPosition : min, duration);\n return true;\n }\n if (contentScrollTop < max) {\n $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);\n return true;\n }\n if (force) {\n $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);\n }\n return false;\n },\n init() {\n const app = this;\n const device = getDevice();\n const window = getWindow();\n const document = getDocument();\n Input.createTextareaResizableShadow();\n function onFocus() {\n const inputEl = this;\n if (app.params.input.scrollIntoViewOnFocus) {\n if (device.android) {\n $(window).once('resize', () => {\n if (document && document.activeElement === inputEl) {\n app.input.scrollIntoView(inputEl, app.params.input.scrollIntoViewDuration, app.params.input.scrollIntoViewCentered, app.params.input.scrollIntoViewAlways);\n }\n });\n } else {\n app.input.scrollIntoView(inputEl, app.params.input.scrollIntoViewDuration, app.params.input.scrollIntoViewCentered, app.params.input.scrollIntoViewAlways);\n }\n }\n app.input.focus(inputEl);\n }\n function onBlur() {\n const $inputEl = $(this);\n const tag = $inputEl[0].nodeName.toLowerCase();\n app.input.blur($inputEl);\n if ($inputEl.dataset().validate || $inputEl.attr('validate') !== null || $inputEl.attr('data-validate-on-blur') !== null) {\n app.input.validate($inputEl);\n }\n // Resize textarea\n if (tag === 'textarea' && $inputEl.hasClass('resizable')) {\n if (Input.textareaResizableShadow) Input.textareaResizableShadow.remove();\n }\n }\n function onChange() {\n const $inputEl = $(this);\n const type = $inputEl.attr('type');\n const tag = $inputEl[0].nodeName.toLowerCase();\n const isContentEditable = $inputEl[0].hasAttribute('contenteditable');\n if (Input.ignoreTypes.indexOf(type) >= 0) return;\n\n // Check Empty State\n app.input.checkEmptyState($inputEl);\n if (isContentEditable) return;\n\n // Check validation\n if ($inputEl.attr('data-validate-on-blur') === null && ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)) {\n app.input.validate($inputEl);\n }\n\n // Resize textarea\n if (tag === 'textarea' && $inputEl.hasClass('resizable')) {\n app.input.resizeTextarea($inputEl);\n }\n }\n function onInvalid(e) {\n const $inputEl = $(this);\n if ($inputEl.attr('data-validate-on-blur') === null && ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)) {\n e.preventDefault();\n app.input.validate($inputEl);\n }\n }\n function clearInput() {\n const $clicked = $(this);\n const $inputEl = $clicked.siblings('input, textarea').eq(0);\n const previousValue = $inputEl.val();\n $inputEl.val('').trigger('input change').focus().trigger('input:clear', previousValue);\n app.emit('inputClear', previousValue);\n }\n function preventDefault(e) {\n e.preventDefault();\n }\n $(document).on('click', '.input-clear-button', clearInput);\n $(document).on('mousedown', '.input-clear-button', preventDefault);\n $(document).on('change input', 'input, textarea, select, .item-input [contenteditable]', onChange, true);\n $(document).on('focus', 'input, textarea, select, .item-input [contenteditable]', onFocus, true);\n $(document).on('blur', 'input, textarea, select, .item-input [contenteditable]', onBlur, true);\n $(document).on('invalid', 'input, textarea, select', onInvalid, true);\n }\n};\nexport default {\n name: 'input',\n params: {\n input: {\n scrollIntoViewOnFocus: undefined,\n scrollIntoViewCentered: false,\n scrollIntoViewDuration: 0,\n scrollIntoViewAlways: false\n }\n },\n create() {\n const app = this;\n if (typeof app.params.input.scrollIntoViewOnFocus === 'undefined') {\n app.params.input.scrollIntoViewOnFocus = getDevice().android;\n }\n bindMethods(app, {\n input: Input\n });\n },\n on: {\n init() {\n const app = this;\n app.input.init();\n },\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n $tabEl.find('.item-input, .input').each(itemInputEl => {\n const $itemInputEl = $(itemInputEl);\n $itemInputEl.find('input, select, textarea, [contenteditable]').each(inputEl => {\n const $inputEl = $(inputEl);\n if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;\n app.input.checkEmptyState($inputEl);\n });\n });\n $tabEl.find('textarea.resizable').each(textareaEl => {\n app.input.resizeTextarea(textareaEl);\n });\n },\n pageInit(page) {\n const app = this;\n const $pageEl = page.$el;\n $pageEl.find('.item-input, .input').each(itemInputEl => {\n const $itemInputEl = $(itemInputEl);\n $itemInputEl.find('input, select, textarea, [contenteditable]').each(inputEl => {\n const $inputEl = $(inputEl);\n if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;\n app.input.checkEmptyState($inputEl);\n });\n });\n $pageEl.find('textarea.resizable').each(textareaEl => {\n app.input.resizeTextarea(textareaEl);\n });\n },\n 'panelBreakpoint panelCollapsedBreakpoint panelResize panelOpen panelSwipeOpen resize viewMasterDetailBreakpoint': function onPanelOpen(instance) {\n const app = this;\n if (instance && instance.$el) {\n instance.$el.find('textarea.resizable').each(textareaEl => {\n app.input.resizeTextarea(textareaEl);\n });\n } else {\n $('textarea.resizable').each(textareaEl => {\n app.input.resizeTextarea(textareaEl);\n });\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, now, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\nclass Toggle extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const toggle = this;\n const support = getSupport();\n const defaults = {};\n\n // Extend defaults with modules params\n toggle.useModulesParams(defaults);\n toggle.params = extend(defaults, params);\n const el = toggle.params.el;\n if (!el) return toggle;\n const $el = $(el);\n if ($el.length === 0) return toggle;\n if ($el[0].f7Toggle) return $el[0].f7Toggle;\n const $inputEl = $el.children('input[type=\"checkbox\"]');\n extend(toggle, {\n app,\n $el,\n el: $el[0],\n $inputEl,\n inputEl: $inputEl[0],\n disabled: $el.hasClass('disabled') || $inputEl.hasClass('disabled') || $inputEl.attr('disabled') || $inputEl[0].disabled\n });\n Object.defineProperty(toggle, 'checked', {\n enumerable: true,\n configurable: true,\n set(checked) {\n if (!toggle || typeof toggle.$inputEl === 'undefined') return;\n if (toggle.checked === checked) return;\n $inputEl[0].checked = checked;\n toggle.$inputEl.trigger('change');\n },\n get() {\n return $inputEl[0].checked;\n }\n });\n $el[0].f7Toggle = toggle;\n let isTouched;\n const touchesStart = {};\n let isScrolling;\n let touchesDiff;\n let toggleWidth;\n let touchStartTime;\n let touchStartChecked;\n function handleTouchStart(e) {\n if (isTouched || toggle.disabled) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchesDiff = 0;\n isTouched = true;\n isScrolling = undefined;\n touchStartTime = now();\n touchStartChecked = toggle.checked;\n toggleWidth = $el[0].offsetWidth;\n nextTick(() => {\n if (isTouched) {\n $el.addClass('toggle-active-state');\n }\n });\n }\n function handleTouchMove(e) {\n if (!isTouched || toggle.disabled) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n const inverter = app.rtl ? -1 : 1;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n touchesDiff = pageX - touchesStart.x;\n let changed;\n if (touchesDiff * inverter < 0 && Math.abs(touchesDiff) > toggleWidth / 3 && touchStartChecked) {\n changed = true;\n }\n if (touchesDiff * inverter > 0 && Math.abs(touchesDiff) > toggleWidth / 3 && !touchStartChecked) {\n changed = true;\n }\n if (changed) {\n touchesStart.x = pageX;\n toggle.checked = !touchStartChecked;\n touchStartChecked = !touchStartChecked;\n }\n }\n function handleTouchEnd() {\n if (!isTouched || toggle.disabled) {\n if (isScrolling) $el.removeClass('toggle-active-state');\n isTouched = false;\n return;\n }\n const inverter = app.rtl ? -1 : 1;\n isTouched = false;\n $el.removeClass('toggle-active-state');\n let changed;\n if (now() - touchStartTime < 300) {\n if (touchesDiff * inverter < 0 && touchStartChecked) {\n changed = true;\n }\n if (touchesDiff * inverter > 0 && !touchStartChecked) {\n changed = true;\n }\n if (changed) {\n toggle.checked = !touchStartChecked;\n }\n }\n }\n function handleInputChange() {\n toggle.$el.trigger('toggle:change');\n toggle.emit('local::change toggleChange', toggle);\n }\n toggle.attachEvents = function attachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n toggle.$inputEl.on('change', handleInputChange);\n };\n toggle.detachEvents = function detachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n toggle.$inputEl.off('change', handleInputChange);\n };\n\n // Install Modules\n toggle.useModules();\n\n // Init\n toggle.init();\n }\n toggle() {\n const toggle = this;\n toggle.checked = !toggle.checked;\n }\n init() {\n const toggle = this;\n toggle.attachEvents();\n }\n destroy() {\n let toggle = this;\n toggle.$el.trigger('toggle:beforedestroy');\n toggle.emit('local::beforeDestroy toggleBeforeDestroy', toggle);\n delete toggle.$el[0].f7Toggle;\n toggle.detachEvents();\n deleteProps(toggle);\n toggle = null;\n }\n}\nexport default Toggle;","import $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport Toggle from './toggle-class.js';\nexport default {\n name: 'toggle',\n create() {\n const app = this;\n app.toggle = ConstructorMethods({\n defaultSelector: '.toggle',\n constructor: Toggle,\n app,\n domProp: 'f7Toggle'\n });\n },\n static: {\n Toggle\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.toggle-init').each(toggleEl => app.toggle.create({\n el: toggleEl\n }));\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.toggle-init').each(toggleEl => {\n if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.toggle-init').each(toggleEl => app.toggle.create({\n el: toggleEl\n }));\n },\n pageBeforeRemove(page) {\n page.$el.find('.toggle-init').each(toggleEl => {\n if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n });\n }\n },\n vnode: {\n 'toggle-init': {\n insert(vnode) {\n const app = this;\n const toggleEl = vnode.elm;\n app.toggle.create({\n el: toggleEl\n });\n },\n destroy(vnode) {\n const toggleEl = vnode.elm;\n if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\nclass Range extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n const range = this;\n const support = getSupport();\n const defaults = {\n el: null,\n inputEl: null,\n dual: false,\n step: 1,\n label: false,\n min: 0,\n max: 100,\n value: 0,\n draggableBar: true,\n vertical: false,\n verticalReversed: false,\n formatLabel: null,\n scale: false,\n scaleSteps: 5,\n scaleSubSteps: 0,\n formatScaleLabel: null,\n limitKnobPosition: app.theme === 'ios'\n };\n\n // Extend defaults with modules params\n range.useModulesParams(defaults);\n range.params = extend(defaults, params);\n const el = range.params.el;\n if (!el) return range;\n const $el = $(el);\n if ($el.length === 0) return range;\n if ($el[0].f7Range) return $el[0].f7Range;\n const dataset = $el.dataset();\n 'step min max value scaleSteps scaleSubSteps'.split(' ').forEach(paramName => {\n if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {\n range.params[paramName] = parseFloat(dataset[paramName]);\n }\n });\n 'dual label vertical verticalReversed scale'.split(' ').forEach(paramName => {\n if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {\n range.params[paramName] = dataset[paramName];\n }\n });\n if (!range.params.value) {\n if (typeof dataset.value !== 'undefined') range.params.value = dataset.value;\n if (typeof dataset.valueLeft !== 'undefined' && typeof dataset.valueRight !== 'undefined') {\n range.params.value = [parseFloat(dataset.valueLeft), parseFloat(dataset.valueRight)];\n }\n }\n let $inputEl;\n if (!range.params.dual) {\n if (range.params.inputEl) {\n $inputEl = $(range.params.inputEl);\n } else if ($el.find('input[type=\"range\"]').length) {\n $inputEl = $el.find('input[type=\"range\"]').eq(0);\n }\n }\n const {\n dual,\n step,\n label,\n min,\n max,\n value,\n vertical,\n verticalReversed,\n scale,\n scaleSteps,\n scaleSubSteps,\n limitKnobPosition\n } = range.params;\n extend(range, {\n app,\n $el,\n el: $el[0],\n $inputEl,\n inputEl: $inputEl ? $inputEl[0] : undefined,\n dual,\n step,\n label,\n min,\n max,\n value,\n previousValue: value,\n vertical,\n verticalReversed,\n scale,\n scaleSteps,\n scaleSubSteps,\n limitKnobPosition\n });\n if ($inputEl) {\n 'step min max'.split(' ').forEach(paramName => {\n if (!params[paramName] && $inputEl.attr(paramName)) {\n range.params[paramName] = parseFloat($inputEl.attr(paramName));\n range[paramName] = parseFloat($inputEl.attr(paramName));\n }\n });\n if (typeof $inputEl.val() !== 'undefined') {\n range.params.value = parseFloat($inputEl.val());\n range.value = parseFloat($inputEl.val());\n }\n }\n\n // Dual\n if (range.dual) {\n $el.addClass('range-slider-dual');\n }\n if (range.label) {\n $el.addClass('range-slider-label');\n }\n\n // Vertical\n if (range.vertical) {\n $el.addClass('range-slider-vertical');\n if (range.verticalReversed) {\n $el.addClass('range-slider-vertical-reversed');\n }\n } else {\n $el.addClass('range-slider-horizontal');\n }\n\n // Check for layout\n const $barEl = $('
                      ');\n const $barActiveEl = $('
                      ');\n $barEl.append($barActiveEl);\n\n // Create Knobs\n // prettier-ignore\n const knobHTML = `\n
                      \n
                      \n ${range.label ? '
                      ' : ''}\n
                      \n `;\n const knobs = [$(knobHTML)];\n if (range.dual) {\n knobs.push($(knobHTML));\n }\n $el.append($barEl);\n knobs.forEach($knobEl => {\n $el.append($knobEl);\n });\n\n // Labels\n const labels = [];\n if (range.label) {\n labels.push(knobs[0].find('.range-knob-label'));\n if (range.dual) {\n labels.push(knobs[1].find('.range-knob-label'));\n }\n }\n\n // Scale\n let $scaleEl;\n if (range.scale && range.scaleSteps >= 1) {\n $scaleEl = $(`\n
                      \n ${range.renderScale()}\n
                      \n `);\n $el.append($scaleEl);\n }\n extend(range, {\n knobs,\n labels,\n $barEl,\n $barActiveEl,\n $scaleEl\n });\n $el[0].f7Range = range;\n\n // Touch Events\n let isTouched;\n const touchesStart = {};\n let isScrolling;\n let rangeOffset;\n let rangeOffsetLeft;\n let rangeOffsetTop;\n let $touchedKnobEl;\n let dualValueIndex;\n let valueChangedByTouch;\n let targetTouchIdentifier;\n function onTouchChange() {\n valueChangedByTouch = true;\n }\n function handleTouchStart(e) {\n if (isTouched) return;\n if (!range.params.draggableBar) {\n if ($(e.target).closest('.range-knob').length === 0) {\n return;\n }\n }\n valueChangedByTouch = false;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n if (e.type === 'touchstart') {\n targetTouchIdentifier = e.targetTouches[0].identifier;\n }\n isTouched = true;\n isScrolling = undefined;\n rangeOffset = $el.offset();\n rangeOffsetLeft = rangeOffset.left;\n rangeOffsetTop = rangeOffset.top;\n let progress;\n if (range.vertical) {\n progress = (touchesStart.y - rangeOffsetTop) / range.rangeHeight;\n if (!range.verticalReversed) progress = 1 - progress;\n } else if (range.app.rtl) {\n progress = (rangeOffsetLeft + range.rangeWidth - touchesStart.x) / range.rangeWidth;\n } else {\n progress = (touchesStart.x - rangeOffsetLeft) / range.rangeWidth;\n }\n let newValue = progress * (range.max - range.min) + range.min;\n if (range.dual) {\n if (Math.abs(range.value[0] - newValue) < Math.abs(range.value[1] - newValue)) {\n dualValueIndex = 0;\n $touchedKnobEl = range.knobs[0];\n newValue = [newValue, range.value[1]];\n } else {\n dualValueIndex = 1;\n $touchedKnobEl = range.knobs[1];\n newValue = [range.value[0], newValue];\n }\n } else {\n $touchedKnobEl = range.knobs[0];\n newValue = progress * (range.max - range.min) + range.min;\n }\n nextTick(() => {\n if (isTouched) $touchedKnobEl.addClass('range-knob-active-state');\n }, 70);\n range.on('change', onTouchChange);\n range.setValue(newValue, true);\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n let pageX;\n let pageY;\n if (e.type === 'touchmove') {\n for (let i = 0; i < e.targetTouches.length; i += 1) {\n if (e.targetTouches[i].identifier === targetTouchIdentifier) {\n pageX = e.targetTouches[i].pageX;\n pageY = e.targetTouches[i].pageY;\n }\n }\n } else {\n pageX = e.pageX;\n pageY = e.pageY;\n }\n if (typeof pageX === 'undefined' && typeof pageY === 'undefined') return;\n if (typeof isScrolling === 'undefined' && !range.vertical) {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n let progress;\n if (range.vertical) {\n progress = (pageY - rangeOffsetTop) / range.rangeHeight;\n if (!range.verticalReversed) progress = 1 - progress;\n } else if (range.app.rtl) {\n progress = (rangeOffsetLeft + range.rangeWidth - pageX) / range.rangeWidth;\n } else {\n progress = (pageX - rangeOffsetLeft) / range.rangeWidth;\n }\n let newValue = progress * (range.max - range.min) + range.min;\n if (range.dual) {\n let leftValue;\n let rightValue;\n if (dualValueIndex === 0) {\n leftValue = newValue;\n rightValue = range.value[1];\n if (leftValue > rightValue) {\n rightValue = leftValue;\n }\n } else {\n leftValue = range.value[0];\n rightValue = newValue;\n if (rightValue < leftValue) {\n leftValue = rightValue;\n }\n }\n newValue = [leftValue, rightValue];\n }\n range.setValue(newValue, true);\n }\n function handleTouchEnd(e) {\n if (e.type === 'touchend') {\n let touchEnded;\n for (let i = 0; i < e.changedTouches.length; i += 1) {\n if (e.changedTouches[i].identifier === targetTouchIdentifier) touchEnded = true;\n }\n if (!touchEnded) return;\n }\n if (!isTouched) {\n if (isScrolling) $touchedKnobEl.removeClass('range-knob-active-state');\n isTouched = false;\n return;\n }\n range.off('change', onTouchChange);\n isTouched = false;\n $touchedKnobEl.removeClass('range-knob-active-state');\n if (valueChangedByTouch && range.$inputEl && !range.dual) {\n range.$inputEl.trigger('change');\n }\n valueChangedByTouch = false;\n if (typeof range.previousValue !== 'undefined') {\n if (range.dual && (range.previousValue[0] !== range.value[0] || range.previousValue[1] !== range.value[1]) || !range.dual && range.previousValue !== range.value) {\n range.$el.trigger('range:changed', range.value);\n range.emit('local::changed rangeChanged', range, range.value);\n }\n }\n }\n function handleResize() {\n range.calcSize();\n range.layout();\n }\n let parentModals;\n let parentPanel;\n let parentPage;\n range.attachEvents = function attachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n range.$el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('tabShow', handleResize);\n app.on('resize', handleResize);\n parentModals = range.$el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast');\n parentModals.on('modal:open', handleResize);\n parentPanel = range.$el.parents('.panel');\n parentPanel.on('panel:open panel:resize', handleResize);\n parentPage = range.$el.parents('.page').eq(0);\n parentPage.on('page:reinit', handleResize);\n };\n range.detachEvents = function detachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n range.$el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('tabShow', handleResize);\n app.off('resize', handleResize);\n if (parentModals) {\n parentModals.off('modal:open', handleResize);\n }\n if (parentPanel) {\n parentPanel.off('panel:open panel:resize', handleResize);\n }\n if (parentPage) {\n parentPage.off('page:reinit', handleResize);\n }\n parentModals = null;\n parentPanel = null;\n parentPage = null;\n };\n\n // Install Modules\n range.useModules();\n\n // Init\n range.init();\n return range;\n }\n calcSize() {\n const range = this;\n if (range.vertical) {\n const height = range.$el.outerHeight();\n if (height === 0) return;\n range.rangeHeight = height;\n range.knobHeight = range.knobs[0].outerHeight();\n } else {\n const width = range.$el.outerWidth();\n if (width === 0) return;\n range.rangeWidth = width;\n range.knobWidth = range.knobs[0].outerWidth();\n }\n }\n layout() {\n const range = this;\n const {\n app,\n knobWidth,\n knobHeight,\n rangeWidth,\n rangeHeight,\n min,\n max,\n knobs,\n $barActiveEl,\n value,\n label,\n labels,\n vertical,\n verticalReversed,\n limitKnobPosition\n } = range;\n const knobSize = vertical ? knobHeight : knobWidth;\n const rangeSize = vertical ? rangeHeight : rangeWidth;\n // eslint-disable-next-line\n const positionProperty = vertical ? verticalReversed ? 'top' : 'bottom' : app.rtl ? 'right' : 'left';\n if (range.dual) {\n const progress = [(value[0] - min) / (max - min), (value[1] - min) / (max - min)];\n $barActiveEl.css({\n [positionProperty]: `${progress[0] * 100}%`,\n [vertical ? 'height' : 'width']: `${(progress[1] - progress[0]) * 100}%`\n });\n knobs.forEach(($knobEl, knobIndex) => {\n let startPos = rangeSize * progress[knobIndex];\n if (limitKnobPosition) {\n const realStartPos = rangeSize * progress[knobIndex] - knobSize / 2;\n if (realStartPos < 0) startPos = knobSize / 2;\n if (realStartPos + knobSize > rangeSize) startPos = rangeSize - knobSize / 2;\n }\n $knobEl.css(positionProperty, `${startPos}px`);\n if (label) labels[knobIndex].text(range.formatLabel(value[knobIndex], labels[knobIndex][0]));\n });\n } else {\n const progress = (value - min) / (max - min);\n $barActiveEl.css(vertical ? 'height' : 'width', `${progress * 100}%`);\n let startPos = rangeSize * progress;\n if (limitKnobPosition) {\n const realStartPos = rangeSize * progress - knobSize / 2;\n if (realStartPos < 0) startPos = knobSize / 2;\n if (realStartPos + knobSize > rangeSize) startPos = rangeSize - knobSize / 2;\n }\n knobs[0].css(positionProperty, `${startPos}px`);\n if (label) labels[0].text(range.formatLabel(value, labels[0][0]));\n }\n if (range.dual && value.indexOf(min) >= 0 || !range.dual && value === min) {\n range.$el.addClass('range-slider-min');\n } else {\n range.$el.removeClass('range-slider-min');\n }\n if (range.dual && value.indexOf(max) >= 0 || !range.dual && value === max) {\n range.$el.addClass('range-slider-max');\n } else {\n range.$el.removeClass('range-slider-max');\n }\n }\n setValue(newValue, byTouchMove) {\n const range = this;\n const {\n step,\n min,\n max\n } = range;\n let valueChanged;\n let oldValue;\n if (range.dual) {\n oldValue = [range.value[0], range.value[1]];\n let newValues = newValue;\n if (!Array.isArray(newValues)) newValues = [newValue, newValue];\n if (newValue[0] > newValue[1]) {\n newValues = [newValues[0], newValues[0]];\n }\n newValues = newValues.map(value => Math.max(Math.min(Math.round(value / step) * step, max), min));\n if (newValues[0] === range.value[0] && newValues[1] === range.value[1]) {\n return range;\n }\n newValues.forEach((value, valueIndex) => {\n range.value[valueIndex] = value;\n });\n valueChanged = oldValue[0] !== newValues[0] || oldValue[1] !== newValues[1];\n range.layout();\n } else {\n oldValue = range.value;\n const value = Math.max(Math.min(Math.round(newValue / step) * step, max), min);\n range.value = value;\n range.layout();\n valueChanged = oldValue !== value;\n }\n if (valueChanged) {\n range.previousValue = oldValue;\n }\n // Events\n if (!valueChanged) return range;\n range.$el.trigger('range:change', range.value);\n if (range.$inputEl && !range.dual) {\n range.$inputEl.val(range.value);\n if (!byTouchMove) {\n range.$inputEl.trigger('input change');\n } else {\n range.$inputEl.trigger('input');\n }\n }\n if (!byTouchMove) {\n range.$el.trigger('range:changed', range.value);\n range.emit('local::changed rangeChanged', range, range.value);\n }\n range.emit('local::change rangeChange', range, range.value);\n return range;\n }\n getValue() {\n return this.value;\n }\n formatLabel(value, labelEl) {\n const range = this;\n if (range.params.formatLabel) return range.params.formatLabel.call(range, value, labelEl);\n return value;\n }\n formatScaleLabel(value) {\n const range = this;\n if (range.params.formatScaleLabel) return range.params.formatScaleLabel.call(range, value);\n return value;\n }\n renderScale() {\n const range = this;\n const {\n app,\n verticalReversed,\n vertical\n } = range;\n\n // eslint-disable-next-line\n const positionProperty = vertical ? verticalReversed ? 'top' : 'bottom' : app.rtl ? 'right' : 'left';\n let html = '';\n Array.from({\n length: range.scaleSteps + 1\n }).forEach((scaleEl, index) => {\n const scaleStepValue = (range.max - range.min) / range.scaleSteps;\n const scaleValue = range.min + scaleStepValue * index;\n const progress = (scaleValue - range.min) / (range.max - range.min);\n html += `
                      ${range.formatScaleLabel(scaleValue)}
                      `;\n if (range.scaleSubSteps && range.scaleSubSteps > 1 && index < range.scaleSteps) {\n Array.from({\n length: range.scaleSubSteps - 1\n }).forEach((subStepEl, subIndex) => {\n const subStep = scaleStepValue / range.scaleSubSteps;\n const scaleSubValue = scaleValue + subStep * (subIndex + 1);\n const subProgress = (scaleSubValue - range.min) / (range.max - range.min);\n html += `
                      `;\n });\n }\n });\n return html;\n }\n updateScale() {\n const range = this;\n if (!range.scale || range.scaleSteps < 1) {\n if (range.$scaleEl) range.$scaleEl.remove();\n delete range.$scaleEl;\n return;\n }\n if (!range.$scaleEl) {\n range.$scaleEl = $('
                      ');\n range.$el.append(range.$scaleEl);\n }\n range.$scaleEl.html(range.renderScale());\n }\n init() {\n const range = this;\n range.calcSize();\n range.layout();\n range.attachEvents();\n return range;\n }\n destroy() {\n let range = this;\n range.$el.trigger('range:beforedestroy');\n range.emit('local::beforeDestroy rangeBeforeDestroy', range);\n delete range.$el[0].f7Range;\n range.detachEvents();\n deleteProps(range);\n range = null;\n }\n}\nexport default Range;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Range from './range-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'range',\n create() {\n const app = this;\n app.range = extend(ConstructorMethods({\n defaultSelector: '.range-slider',\n constructor: Range,\n app,\n domProp: 'f7Range'\n }), {\n getValue(el) {\n if (el === void 0) {\n el = '.range-slider';\n }\n const range = app.range.get(el);\n if (range) return range.getValue();\n return undefined;\n },\n setValue(el, value) {\n if (el === void 0) {\n el = '.range-slider';\n }\n const range = app.range.get(el);\n if (range) return range.setValue(value);\n return undefined;\n }\n });\n },\n static: {\n Range\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.range-slider-init').each(rangeEl => new Range(app, {\n el: rangeEl\n }));\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.range-slider-init').each(rangeEl => {\n if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.range-slider-init').each(rangeEl => new Range(app, {\n el: rangeEl\n }));\n },\n pageBeforeRemove(page) {\n page.$el.find('.range-slider-init').each(rangeEl => {\n if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n });\n }\n },\n vnode: {\n 'range-slider-init': {\n insert(vnode) {\n const rangeEl = vnode.elm;\n const app = this;\n app.range.create({\n el: rangeEl\n });\n },\n destroy(vnode) {\n const rangeEl = vnode.elm;\n if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n }\n }\n }\n};","/* eslint no-control-regex: \"off\" */\nconst defaultDiacriticsRemovalap = [{\n base: 'A',\n letters: '\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F'\n}, {\n base: 'AA',\n letters: '\\uA732'\n}, {\n base: 'AE',\n letters: '\\u00C6\\u01FC\\u01E2'\n}, {\n base: 'AO',\n letters: '\\uA734'\n}, {\n base: 'AU',\n letters: '\\uA736'\n}, {\n base: 'AV',\n letters: '\\uA738\\uA73A'\n}, {\n base: 'AY',\n letters: '\\uA73C'\n}, {\n base: 'B',\n letters: '\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181'\n}, {\n base: 'C',\n letters: '\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E'\n}, {\n base: 'D',\n letters: '\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779'\n}, {\n base: 'DZ',\n letters: '\\u01F1\\u01C4'\n}, {\n base: 'Dz',\n letters: '\\u01F2\\u01C5'\n}, {\n base: 'E',\n letters: '\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E'\n}, {\n base: 'F',\n letters: '\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B'\n}, {\n base: 'G',\n letters: '\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E'\n}, {\n base: 'H',\n letters: '\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D'\n}, {\n base: 'I',\n letters: '\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197'\n}, {\n base: 'J',\n letters: '\\u004A\\u24BF\\uFF2A\\u0134\\u0248'\n}, {\n base: 'K',\n letters: '\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2'\n}, {\n base: 'L',\n letters: '\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780'\n}, {\n base: 'LJ',\n letters: '\\u01C7'\n}, {\n base: 'Lj',\n letters: '\\u01C8'\n}, {\n base: 'M',\n letters: '\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C'\n}, {\n base: 'N',\n letters: '\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4'\n}, {\n base: 'NJ',\n letters: '\\u01CA'\n}, {\n base: 'Nj',\n letters: '\\u01CB'\n}, {\n base: 'O',\n letters: '\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C'\n}, {\n base: 'OI',\n letters: '\\u01A2'\n}, {\n base: 'OO',\n letters: '\\uA74E'\n}, {\n base: 'OU',\n letters: '\\u0222'\n}, {\n base: 'OE',\n letters: '\\u008C\\u0152'\n}, {\n base: 'oe',\n letters: '\\u009C\\u0153'\n}, {\n base: 'P',\n letters: '\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754'\n}, {\n base: 'Q',\n letters: '\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A'\n}, {\n base: 'R',\n letters: '\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782'\n}, {\n base: 'S',\n letters: '\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784'\n}, {\n base: 'T',\n letters: '\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786'\n}, {\n base: 'TZ',\n letters: '\\uA728'\n}, {\n base: 'U',\n letters: '\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244'\n}, {\n base: 'V',\n letters: '\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245'\n}, {\n base: 'VY',\n letters: '\\uA760'\n}, {\n base: 'W',\n letters: '\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72'\n}, {\n base: 'X',\n letters: '\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C'\n}, {\n base: 'Y',\n letters: '\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE'\n}, {\n base: 'Z',\n letters: '\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762'\n}, {\n base: 'a',\n letters: '\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250'\n}, {\n base: 'aa',\n letters: '\\uA733'\n}, {\n base: 'ae',\n letters: '\\u00E6\\u01FD\\u01E3'\n}, {\n base: 'ao',\n letters: '\\uA735'\n}, {\n base: 'au',\n letters: '\\uA737'\n}, {\n base: 'av',\n letters: '\\uA739\\uA73B'\n}, {\n base: 'ay',\n letters: '\\uA73D'\n}, {\n base: 'b',\n letters: '\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253'\n}, {\n base: 'c',\n letters: '\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184'\n}, {\n base: 'd',\n letters: '\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A'\n}, {\n base: 'dz',\n letters: '\\u01F3\\u01C6'\n}, {\n base: 'e',\n letters: '\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD'\n}, {\n base: 'f',\n letters: '\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C'\n}, {\n base: 'g',\n letters: '\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F'\n}, {\n base: 'h',\n letters: '\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265'\n}, {\n base: 'hv',\n letters: '\\u0195'\n}, {\n base: 'i',\n letters: '\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131'\n}, {\n base: 'j',\n letters: '\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249'\n}, {\n base: 'k',\n letters: '\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3'\n}, {\n base: 'l',\n letters: '\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747'\n}, {\n base: 'lj',\n letters: '\\u01C9'\n}, {\n base: 'm',\n letters: '\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F'\n}, {\n base: 'n',\n letters: '\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5'\n}, {\n base: 'nj',\n letters: '\\u01CC'\n}, {\n base: 'o',\n letters: '\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275'\n}, {\n base: 'oi',\n letters: '\\u01A3'\n}, {\n base: 'ou',\n letters: '\\u0223'\n}, {\n base: 'oo',\n letters: '\\uA74F'\n}, {\n base: 'p',\n letters: '\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755'\n}, {\n base: 'q',\n letters: '\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759'\n}, {\n base: 'r',\n letters: '\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783'\n}, {\n base: 's',\n letters: '\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B'\n}, {\n base: 't',\n letters: '\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787'\n}, {\n base: 'tz',\n letters: '\\uA729'\n}, {\n base: 'u',\n letters: '\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289'\n}, {\n base: 'v',\n letters: '\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C'\n}, {\n base: 'vy',\n letters: '\\uA761'\n}, {\n base: 'w',\n letters: '\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73'\n}, {\n base: 'x',\n letters: '\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D'\n}, {\n base: 'y',\n letters: '\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF'\n}, {\n base: 'z',\n letters: '\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763'\n}];\nconst diacriticsMap = {};\nfor (let i = 0; i < defaultDiacriticsRemovalap.length; i += 1) {\n const letters = defaultDiacriticsRemovalap[i].letters;\n for (let j = 0; j < letters.length; j += 1) {\n diacriticsMap[letters[j]] = defaultDiacriticsRemovalap[i].base;\n }\n}\nfunction removeDiacritics(str) {\n return str.replace(/[^\\u0000-\\u007E]/g, a => diacriticsMap[a] || a);\n}\nexport default removeDiacritics;","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nclass Stepper extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n const stepper = this;\n const defaults = {\n el: null,\n inputEl: null,\n valueEl: null,\n value: 0,\n formatValue: null,\n step: 1,\n min: 0,\n max: 100,\n watchInput: true,\n autorepeat: false,\n autorepeatDynamic: false,\n wraps: false,\n manualInputMode: false,\n decimalPoint: 4,\n buttonsEndInputMode: true\n };\n\n // Extend defaults with modules params\n stepper.useModulesParams(defaults);\n stepper.params = extend(defaults, params);\n if (stepper.params.value < stepper.params.min) {\n stepper.params.value = stepper.params.min;\n }\n if (stepper.params.value > stepper.params.max) {\n stepper.params.value = stepper.params.max;\n }\n const el = stepper.params.el;\n if (!el) return stepper;\n const $el = $(el);\n if ($el.length === 0) return stepper;\n if ($el[0].f7Stepper) return $el[0].f7Stepper;\n let $inputEl;\n if (stepper.params.inputEl) {\n $inputEl = $(stepper.params.inputEl);\n } else if ($el.find('.stepper-input-wrap').find('input, textarea').length) {\n $inputEl = $el.find('.stepper-input-wrap').find('input, textarea').eq(0);\n }\n if ($inputEl && $inputEl.length) {\n 'step min max'.split(' ').forEach(paramName => {\n if (!params[paramName] && $inputEl.attr(paramName)) {\n stepper.params[paramName] = parseFloat($inputEl.attr(paramName));\n }\n });\n const decimalPoint = parseInt(stepper.params.decimalPoint, 10);\n if (Number.isNaN(decimalPoint)) {\n stepper.params.decimalPoint = 0;\n } else {\n stepper.params.decimalPoint = decimalPoint;\n }\n const inputValue = parseFloat($inputEl.val());\n if (typeof params.value === 'undefined' && !Number.isNaN(inputValue) && (inputValue || inputValue === 0)) {\n stepper.params.value = inputValue;\n }\n }\n let $valueEl;\n if (stepper.params.valueEl) {\n $valueEl = $(stepper.params.valueEl);\n } else if ($el.find('.stepper-value').length) {\n $valueEl = $el.find('.stepper-value').eq(0);\n }\n const $buttonPlusEl = $el.find('.stepper-button-plus');\n const $buttonMinusEl = $el.find('.stepper-button-minus');\n const {\n step,\n min,\n max,\n value,\n decimalPoint\n } = stepper.params;\n extend(stepper, {\n app,\n $el,\n el: $el[0],\n $buttonPlusEl,\n buttonPlusEl: $buttonPlusEl[0],\n $buttonMinusEl,\n buttonMinusEl: $buttonMinusEl[0],\n $inputEl,\n inputEl: $inputEl ? $inputEl[0] : undefined,\n $valueEl,\n valueEl: $valueEl ? $valueEl[0] : undefined,\n step,\n min,\n max,\n value,\n decimalPoint,\n typeModeChanged: false\n });\n $el[0].f7Stepper = stepper;\n\n // Handle Events\n const touchesStart = {};\n let isTouched;\n let isScrolling;\n let preventButtonClick;\n let intervalId;\n let timeoutId;\n let autorepeatAction = null;\n let autorepeatInAction = false;\n let manualInput = false;\n function dynamicRepeat(current, progressions, startsIn, progressionStep, repeatEvery, action) {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n if (current === 1) {\n preventButtonClick = true;\n autorepeatInAction = true;\n }\n clearInterval(intervalId);\n action();\n intervalId = setInterval(() => {\n action();\n }, repeatEvery);\n if (current < progressions) {\n dynamicRepeat(current + 1, progressions, startsIn, progressionStep, repeatEvery / 2, action);\n }\n }, current === 1 ? startsIn : progressionStep);\n }\n function onTouchStart(e) {\n if (isTouched) return;\n if (manualInput) {\n return;\n }\n if ($(e.target).closest($buttonPlusEl).length) {\n autorepeatAction = 'increment';\n } else if ($(e.target).closest($buttonMinusEl).length) {\n autorepeatAction = 'decrement';\n }\n if (!autorepeatAction) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isTouched = true;\n isScrolling = undefined;\n const progressions = stepper.params.autorepeatDynamic ? 4 : 1;\n dynamicRepeat(1, progressions, 500, 1000, 300, () => {\n stepper[autorepeatAction]();\n });\n }\n function onTouchMove(e) {\n if (!isTouched) return;\n if (manualInput) {\n return;\n }\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined' && !autorepeatInAction) {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n const distance = ((pageX - touchesStart.x) ** 2 + (pageY - touchesStart.y) ** 2) ** 0.5;\n if (isScrolling || distance > 20) {\n isTouched = false;\n clearTimeout(timeoutId);\n clearInterval(intervalId);\n }\n }\n function onTouchEnd() {\n clearTimeout(timeoutId);\n clearInterval(intervalId);\n autorepeatAction = null;\n autorepeatInAction = false;\n isTouched = false;\n }\n function onMinusClick() {\n if (manualInput) {\n if (stepper.params.buttonsEndInputMode) {\n manualInput = false;\n stepper.endTypeMode(true);\n }\n return;\n }\n if (preventButtonClick) {\n preventButtonClick = false;\n return;\n }\n stepper.decrement(true);\n }\n function onPlusClick() {\n if (manualInput) {\n if (stepper.params.buttonsEndInputMode) {\n manualInput = false;\n stepper.endTypeMode(true);\n }\n return;\n }\n if (preventButtonClick) {\n preventButtonClick = false;\n return;\n }\n stepper.increment(true);\n }\n function onInputClick(e) {\n if (!e.target.readOnly && stepper.params.manualInputMode) {\n manualInput = true;\n if (typeof e.target.selectionStart === 'number') {\n e.target.selectionStart = e.target.value.length;\n e.target.selectionEnd = e.target.value.length;\n }\n }\n }\n function onInputKey(e) {\n if (e.keyCode === 13 || e.which === 13) {\n e.preventDefault();\n manualInput = false;\n stepper.endTypeMode();\n }\n }\n function onInputBlur() {\n manualInput = false;\n stepper.endTypeMode(true);\n }\n function onInput(e) {\n if (manualInput) {\n stepper.typeValue(e.target.value);\n return;\n }\n if (e.detail && e.detail.sentByF7Stepper) return;\n stepper.setValue(e.target.value, true);\n }\n stepper.attachEvents = function attachEvents() {\n $buttonMinusEl.on('click', onMinusClick);\n $buttonPlusEl.on('click', onPlusClick);\n if (stepper.params.watchInput && $inputEl && $inputEl.length) {\n $inputEl.on('input', onInput);\n $inputEl.on('click', onInputClick);\n $inputEl.on('blur', onInputBlur);\n $inputEl.on('keyup', onInputKey);\n }\n if (stepper.params.autorepeat) {\n app.on('touchstart:passive', onTouchStart);\n app.on('touchmove:active', onTouchMove);\n app.on('touchend:passive', onTouchEnd);\n }\n };\n stepper.detachEvents = function detachEvents() {\n $buttonMinusEl.off('click', onMinusClick);\n $buttonPlusEl.off('click', onPlusClick);\n if (stepper.params.watchInput && $inputEl && $inputEl.length) {\n $inputEl.off('input', onInput);\n $inputEl.off('click', onInputClick);\n $inputEl.off('blur', onInputBlur);\n $inputEl.off('keyup', onInputKey);\n }\n };\n\n // Install Modules\n stepper.useModules();\n\n // Init\n stepper.init();\n return stepper;\n }\n minus() {\n return this.decrement();\n }\n plus() {\n return this.increment();\n }\n decrement() {\n const stepper = this;\n return stepper.setValue(stepper.value - stepper.step, false, true);\n }\n increment() {\n const stepper = this;\n return stepper.setValue(stepper.value + stepper.step, false, true);\n }\n setValue(newValue, forceUpdate, withWraps) {\n const stepper = this;\n const {\n step,\n min,\n max\n } = stepper;\n const oldValue = stepper.value;\n let value = Math.round(newValue / step) * step;\n if (stepper.params.wraps && withWraps) {\n if (value > max) value = min;\n if (value < min) value = max;\n } else {\n value = Math.max(Math.min(value, max), min);\n }\n if (Number.isNaN(value)) {\n value = oldValue;\n }\n stepper.value = value;\n const valueChanged = oldValue !== value;\n\n // Events\n if (!valueChanged && !forceUpdate) return stepper;\n stepper.$el.trigger('stepper:change', stepper.value);\n const formattedValue = stepper.formatValue(stepper.value);\n if (stepper.$inputEl && stepper.$inputEl.length) {\n stepper.$inputEl.val(formattedValue);\n stepper.$inputEl.trigger('input change', {\n sentByF7Stepper: true\n });\n }\n if (stepper.$valueEl && stepper.$valueEl.length) {\n stepper.$valueEl.html(formattedValue);\n }\n stepper.emit('local::change stepperChange', stepper, stepper.value);\n return stepper;\n }\n endTypeMode(noBlur) {\n const stepper = this;\n const {\n min,\n max\n } = stepper;\n let value = parseFloat(stepper.value);\n if (Number.isNaN(value)) value = 0;\n value = Math.max(Math.min(value, max), min);\n stepper.value = value;\n if (!stepper.typeModeChanged) {\n if (stepper.$inputEl && stepper.$inputEl.length && !noBlur) {\n stepper.$inputEl.blur();\n }\n return stepper;\n }\n stepper.typeModeChanged = false;\n stepper.$el.trigger('stepper:change', stepper.value);\n const formattedValue = stepper.formatValue(stepper.value);\n if (stepper.$inputEl && stepper.$inputEl.length) {\n stepper.$inputEl.val(formattedValue);\n stepper.$inputEl.trigger('input change', {\n sentByF7Stepper: true\n });\n if (!noBlur) stepper.$inputEl.blur();\n }\n if (stepper.$valueEl && stepper.$valueEl.length) {\n stepper.$valueEl.html(formattedValue);\n }\n stepper.emit('local::change stepperChange', stepper, stepper.value);\n return stepper;\n }\n typeValue(value) {\n const stepper = this;\n stepper.typeModeChanged = true;\n let inputTxt = String(value);\n if (inputTxt.length === 1 && inputTxt === '-') return stepper;\n if (inputTxt.lastIndexOf('.') + 1 === inputTxt.length || inputTxt.lastIndexOf(',') + 1 === inputTxt.length) {\n if (inputTxt.lastIndexOf('.') !== inputTxt.indexOf('.') || inputTxt.lastIndexOf(',') !== inputTxt.indexOf(',')) {\n inputTxt = inputTxt.slice(0, -1);\n stepper.value = inputTxt;\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n } else {\n let newValue = parseFloat(inputTxt.replace(',', '.'));\n if (newValue === 0) {\n stepper.value = inputTxt.replace(',', '.');\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n if (Number.isNaN(newValue)) {\n stepper.value = 0;\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n const powVal = 10 ** stepper.params.decimalPoint;\n newValue = Math.round(newValue * powVal).toFixed(stepper.params.decimalPoint + 1) / powVal;\n stepper.value = parseFloat(String(newValue).replace(',', '.'));\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n stepper.value = inputTxt;\n stepper.$inputEl.val(inputTxt);\n return stepper;\n }\n getValue() {\n return this.value;\n }\n formatValue(value) {\n const stepper = this;\n if (!stepper.params.formatValue) return value;\n return stepper.params.formatValue.call(stepper, value);\n }\n init() {\n const stepper = this;\n stepper.attachEvents();\n if (stepper.$valueEl && stepper.$valueEl.length) {\n const formattedValue = stepper.formatValue(stepper.value);\n stepper.$valueEl.html(formattedValue);\n }\n return stepper;\n }\n destroy() {\n let stepper = this;\n stepper.$el.trigger('stepper:beforedestroy');\n stepper.emit('local::beforeDestroy stepperBeforeDestroy', stepper);\n delete stepper.$el[0].f7Stepper;\n stepper.detachEvents();\n deleteProps(stepper);\n stepper = null;\n }\n}\nexport default Stepper;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Stepper from './stepper-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'stepper',\n create() {\n const app = this;\n app.stepper = extend(ConstructorMethods({\n defaultSelector: '.stepper',\n constructor: Stepper,\n app,\n domProp: 'f7Stepper'\n }), {\n getValue(el) {\n if (el === void 0) {\n el = '.stepper';\n }\n const stepper = app.stepper.get(el);\n if (stepper) return stepper.getValue();\n return undefined;\n },\n setValue(el, value) {\n if (el === void 0) {\n el = '.stepper';\n }\n const stepper = app.stepper.get(el);\n if (stepper) return stepper.setValue(value);\n return undefined;\n }\n });\n },\n static: {\n Stepper\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.stepper-init').each(stepperEl => {\n const dataset = $(stepperEl).dataset();\n app.stepper.create(extend({\n el: stepperEl\n }, dataset || {}));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.stepper-init').each(stepperEl => {\n if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.stepper-init').each(stepperEl => {\n const dataset = $(stepperEl).dataset();\n app.stepper.create(extend({\n el: stepperEl\n }, dataset || {}));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.stepper-init').each(stepperEl => {\n if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n });\n }\n },\n vnode: {\n 'stepper-init': {\n insert(vnode) {\n const app = this;\n const stepperEl = vnode.elm;\n const dataset = $(stepperEl).dataset();\n app.stepper.create(extend({\n el: stepperEl\n }, dataset || {}));\n },\n destroy(vnode) {\n const stepperEl = vnode.elm;\n if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps, id, nextTick } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport removeDiacritics from '../searchbar/remove-diacritics.js';\n\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass SmartSelect extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const ss = this;\n const defaults = extend({\n on: {}\n }, app.params.smartSelect);\n\n // Extend defaults with modules params\n ss.useModulesParams(defaults);\n ss.params = extend({}, defaults, params);\n ss.app = app;\n const $el = $(ss.params.el).eq(0);\n if ($el.length === 0) return ss;\n if ($el[0].f7SmartSelect) return $el[0].f7SmartSelect;\n const $selectEl = $el.find('select').eq(0);\n if ($selectEl.length === 0) return ss;\n let $valueEl;\n if (ss.params.setValueText) {\n $valueEl = $(ss.params.valueEl);\n if ($valueEl.length === 0) {\n $valueEl = $el.find('.item-after');\n }\n if ($valueEl.length === 0) {\n $valueEl = $('
                      ');\n $valueEl.insertAfter($el.find('.item-title'));\n }\n }\n\n // Url\n let url = params.url;\n if (!url) {\n if ($el.attr('href') && $el.attr('href') !== '#') url = $el.attr('href');else if ($selectEl.attr('name')) url = `${$selectEl.attr('name').toLowerCase()}-select/`;\n }\n if (!url) url = ss.params.url;\n const multiple = $selectEl[0].multiple;\n const inputType = multiple ? 'checkbox' : 'radio';\n const selectId = id();\n extend(ss, {\n $el,\n el: $el[0],\n $selectEl,\n selectEl: $selectEl[0],\n $valueEl,\n valueEl: $valueEl && $valueEl[0],\n url,\n multiple,\n inputType,\n id: selectId,\n inputName: `${inputType}-${selectId}`,\n selectName: $selectEl.attr('name'),\n maxLength: $selectEl.attr('maxlength') || params.maxLength\n });\n $el[0].f7SmartSelect = ss;\n\n // Events\n function onClick() {\n ss.open();\n }\n function onChange() {\n const value = ss.$selectEl.val();\n ss.$el.trigger('smartselect:change', value);\n ss.emit('local::change smartSelectChange', ss, value);\n if (ss.vl) {\n ss.vl.clearCache();\n }\n ss.setValueText();\n }\n ss.attachEvents = function attachEvents() {\n $el.on('click', onClick);\n $el.on('change', 'select', onChange);\n };\n ss.detachEvents = function detachEvents() {\n $el.off('click', onClick);\n $el.off('change', 'select', onChange);\n };\n function handleInputChange() {\n let optionEl;\n let text;\n const inputEl = this;\n const value = inputEl.value;\n let optionText = [];\n let displayAs;\n if (inputEl.type === 'checkbox') {\n for (let i = 0; i < ss.selectEl.options.length; i += 1) {\n optionEl = ss.selectEl.options[i];\n if (optionEl.value === value) {\n optionEl.selected = inputEl.checked;\n }\n if (optionEl.selected) {\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-value-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText.push(text.trim());\n }\n }\n if (ss.maxLength) {\n ss.checkMaxLength();\n }\n } else {\n optionEl = ss.$selectEl.find(`option[value=\"${value}\"]`)[0];\n if (!optionEl) {\n optionEl = ss.$selectEl.find('option').filter(optEl => optEl.value === value)[0];\n }\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText = [text];\n ss.selectEl.value = value;\n }\n ss.$selectEl.trigger('change');\n if (ss.params.setValueText) {\n ss.formatValueTextContent(optionText);\n }\n if (ss.params.closeOnSelect && ss.inputType === 'radio') {\n ss.close();\n }\n }\n ss.attachInputsEvents = function attachInputsEvents() {\n ss.$containerEl.on('change', 'input[type=\"checkbox\"], input[type=\"radio\"]', handleInputChange);\n };\n ss.detachInputsEvents = function detachInputsEvents() {\n ss.$containerEl.off('change', 'input[type=\"checkbox\"], input[type=\"radio\"]', handleInputChange);\n };\n\n // Install Modules\n ss.useModules();\n\n // Init\n ss.init();\n return ss;\n }\n setValue(value) {\n const ss = this;\n let newValue = value;\n let optionText = [];\n let optionEl;\n let displayAs;\n let text;\n if (ss.multiple) {\n if (!Array.isArray(newValue)) newValue = [newValue];\n for (let i = 0; i < ss.selectEl.options.length; i += 1) {\n optionEl = ss.selectEl.options[i];\n if (newValue.indexOf(optionEl.value) >= 0) {\n optionEl.selected = true;\n } else {\n optionEl.selected = false;\n }\n if (optionEl.selected) {\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-value-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText.push(text.trim());\n }\n }\n } else {\n optionEl = ss.$selectEl.find(`option[value=\"${newValue}\"]`)[0];\n if (optionEl) {\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText = [text];\n }\n ss.selectEl.value = newValue;\n }\n if (ss.params.setValueText) {\n ss.formatValueTextContent(optionText);\n }\n ss.$selectEl.trigger('change');\n return ss;\n }\n unsetValue() {\n const ss = this;\n if (ss.params.setValueText) {\n ss.formatValueTextContent([]);\n }\n ss.$selectEl.find('option').each(optionEl => {\n optionEl.selected = false;\n optionEl.checked = false;\n });\n ss.$selectEl[0].value = null;\n if (ss.$containerEl) {\n ss.$containerEl.find(`input[name=\"${ss.inputName}\"][type=\"checkbox\"], input[name=\"${ss.inputName}\"][type=\"radio\"]`).prop('checked', false);\n }\n ss.$selectEl.trigger('change');\n }\n getValue() {\n const ss = this;\n return ss.$selectEl.val();\n }\n get view() {\n const {\n params,\n $el\n } = this;\n let view;\n if (params.view) {\n view = params.view;\n }\n if (!view) {\n view = $el.parents('.view').length && $el.parents('.view')[0].f7View;\n }\n if (!view && params.openIn === 'page') {\n throw Error('Smart Select requires initialized View');\n }\n return view;\n }\n checkMaxLength() {\n const ss = this;\n const $containerEl = ss.$containerEl;\n if (ss.selectEl.selectedOptions.length >= ss.maxLength) {\n $containerEl.find('input[type=\"checkbox\"]').each(inputEl => {\n if (!inputEl.checked) {\n $(inputEl).parents('li').addClass('disabled');\n } else {\n $(inputEl).parents('li').removeClass('disabled');\n }\n });\n } else {\n $containerEl.find('.disabled').removeClass('disabled');\n }\n }\n formatValueTextContent(values) {\n const ss = this;\n const valueFormatted = ss.formatValueText(values);\n if (valueFormatted.includes('<') && valueFormatted.includes('>')) {\n ss.$valueEl.html(valueFormatted);\n } else {\n ss.$valueEl.text(valueFormatted);\n }\n }\n formatValueText(values) {\n const ss = this;\n let textValue;\n if (ss.params.formatValueText) {\n textValue = ss.params.formatValueText.call(ss, values, ss);\n } else {\n textValue = values.join(', ');\n }\n return textValue;\n }\n setValueText(value) {\n const ss = this;\n let valueArray = [];\n if (typeof value !== 'undefined') {\n if (Array.isArray(value)) {\n valueArray = value;\n } else {\n valueArray = [value];\n }\n } else {\n ss.$selectEl.find('option').each(optionEl => {\n const $optionEl = $(optionEl);\n if (optionEl.selected) {\n const displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $optionEl.data('display-value-as');\n if (displayAs && typeof displayAs !== 'undefined') {\n valueArray.push(displayAs);\n } else {\n valueArray.push(optionEl.textContent.trim());\n }\n }\n });\n }\n if (ss.params.setValueText) {\n ss.formatValueTextContent(valueArray);\n }\n }\n getItemsData() {\n const ss = this;\n const theme = ss.app.theme;\n const items = [];\n let previousGroupEl;\n ss.$selectEl.find('option').each(optionEl => {\n const $optionEl = $(optionEl);\n const optionData = $optionEl.dataset();\n const optionImage = optionData.optionImage || ss.params.optionImage;\n const optionIcon = optionData.optionIcon || ss.params.optionIcon;\n const optionIconIos = theme === 'ios' && (optionData.optionIconIos || ss.params.optionIconIos);\n const optionIconMd = theme === 'md' && (optionData.optionIconMd || ss.params.optionIconMd);\n const optionInputIconPosition = optionData.inputIconPosition || ss.params.inputIconPosition || '';\n const optionHasMedia = optionImage || optionIcon || optionIconIos || optionIconMd;\n const optionColor = optionData.optionColor;\n let optionClassName = optionData.optionClass || '';\n if ($optionEl[0].disabled) optionClassName += ' disabled';\n const optionGroupEl = $optionEl.parent('optgroup')[0];\n const optionGroupLabel = optionGroupEl && optionGroupEl.label;\n let optionIsLabel = false;\n if (optionGroupEl && optionGroupEl !== previousGroupEl) {\n optionIsLabel = true;\n previousGroupEl = optionGroupEl;\n items.push({\n groupLabel: optionGroupLabel,\n isLabel: optionIsLabel\n });\n }\n items.push({\n value: $optionEl[0].value,\n text: $optionEl[0].textContent.trim(),\n selected: $optionEl[0].selected,\n groupEl: optionGroupEl,\n groupLabel: optionGroupLabel,\n image: optionImage,\n icon: optionIcon,\n iconIos: optionIconIos,\n iconMd: optionIconMd,\n inputIconPosition: optionInputIconPosition,\n color: optionColor,\n className: optionClassName,\n disabled: $optionEl[0].disabled,\n id: ss.id,\n hasMedia: optionHasMedia,\n checkbox: ss.inputType === 'checkbox',\n radio: ss.inputType === 'radio',\n inputName: ss.inputName,\n inputType: ss.inputType\n });\n });\n ss.items = items;\n return items;\n }\n renderSearchbar() {\n const ss = this;\n if (ss.params.renderSearchbar) return ss.params.renderSearchbar.call(ss);\n return $jsx(\"form\", {\n class: \"searchbar\"\n }, $jsx(\"div\", {\n class: \"searchbar-inner\"\n }, $jsx(\"div\", {\n class: \"searchbar-input-wrap\"\n }, $jsx(\"input\", {\n type: \"search\",\n spellcheck: ss.params.searchbarSpellcheck || 'false',\n placeholder: ss.params.searchbarPlaceholder\n }), $jsx(\"i\", {\n class: \"searchbar-icon\"\n }), $jsx(\"span\", {\n class: \"input-clear-button\"\n })), ss.params.searchbarDisableButton && $jsx(\"span\", {\n class: \"searchbar-disable-button\"\n }, ss.params.searchbarDisableText)));\n }\n renderItem(item, index) {\n const ss = this;\n if (ss.params.renderItem) return ss.params.renderItem.call(ss, item, index);\n function getIconContent(iconValue) {\n if (iconValue === void 0) {\n iconValue = '';\n }\n if (iconValue.indexOf(':') >= 0) {\n return iconValue.split(':')[1];\n }\n return '';\n }\n function getIconClass(iconValue) {\n if (iconValue === void 0) {\n iconValue = '';\n }\n if (iconValue.indexOf(':') >= 0) {\n let className = iconValue.split(':')[0];\n if (className === 'f7') className = 'f7-icons';\n if (className === 'material') className = 'material-icons';\n return className;\n }\n return iconValue;\n }\n let itemHtml;\n if (item.isLabel) {\n itemHtml = `
                    • ${item.groupLabel}
                    • `;\n } else {\n let selected = item.selected;\n let disabled;\n if (ss.params.virtualList) {\n const ssValue = ss.getValue();\n selected = ss.multiple ? ssValue.indexOf(item.value) >= 0 : ssValue === item.value;\n if (ss.multiple) {\n disabled = ss.multiple && !selected && ssValue.length === parseInt(ss.maxLength, 10);\n }\n }\n const {\n icon,\n iconIos,\n iconMd\n } = item;\n const hasIcon = icon || iconIos || iconMd;\n const iconContent = getIconContent(icon || iconIos || iconMd || '');\n const iconClass = getIconClass(icon || iconIos || iconMd || '');\n itemHtml = $jsx(\"li\", {\n class: `${item.className || ''}${disabled ? ' disabled' : ''}`\n }, $jsx(\"label\", {\n class: `item-${item.inputType} ${item.inputIconPosition ? `item-${item.inputType}-icon-${item.inputIconPosition}` : ''} item-content`\n }, $jsx(\"input\", {\n type: item.inputType,\n name: item.inputName,\n value: item.value,\n _checked: selected\n }), $jsx(\"i\", {\n class: `icon icon-${item.inputType}`\n }), item.hasMedia && $jsx(\"div\", {\n class: \"item-media\"\n }, hasIcon && $jsx(\"i\", {\n class: `icon ${iconClass}`\n }, iconContent), item.image && $jsx(\"img\", {\n src: item.image\n })), $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: `item-title${item.color ? ` text-color-${item.color}` : ''}`\n }, item.text))));\n }\n return itemHtml;\n }\n renderItems() {\n const ss = this;\n if (ss.params.renderItems) return ss.params.renderItems.call(ss, ss.items);\n const itemsHtml = `\n ${ss.items.map((item, index) => `${ss.renderItem(item, index)}`).join('')}\n `;\n return itemsHtml;\n }\n renderPage() {\n const ss = this;\n if (ss.params.renderPage) return ss.params.renderPage.call(ss, ss.items);\n let pageTitle = ss.params.pageTitle;\n if (typeof pageTitle === 'undefined') {\n const $itemTitleEl = ss.$el.find('.item-title');\n pageTitle = $itemTitleEl.length ? $itemTitleEl.text().trim() : '';\n }\n const cssClass = ss.params.cssClass;\n return $jsx(\"div\", {\n class: `page smart-select-page ${cssClass}`,\n \"data-name\": \"smart-select-page\",\n \"data-select-name\": ss.selectName\n }, $jsx(\"div\", {\n class: `navbar ${ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''}`\n }, $jsx(\"div\", {\n class: \"navbar-bg\"\n }), $jsx(\"div\", {\n class: `navbar-inner sliding ${ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''}`\n }, $jsx(\"div\", {\n class: \"left\"\n }, $jsx(\"a\", {\n class: \"link back\"\n }, $jsx(\"i\", {\n class: \"icon icon-back\"\n }), $jsx(\"span\", {\n class: \"if-not-md\"\n }, ss.params.pageBackLinkText))), pageTitle && $jsx(\"div\", {\n class: \"title\"\n }, pageTitle), ss.params.searchbar && $jsx(\"div\", {\n class: \"subnavbar\"\n }, ss.renderSearchbar()))), ss.params.searchbar && $jsx(\"div\", {\n class: \"searchbar-backdrop\"\n }), $jsx(\"div\", {\n class: \"page-content\"\n }, $jsx(\"div\", {\n class: `list list-outline-ios list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`\n }, $jsx(\"ul\", null, !ss.params.virtualList && ss.renderItems(ss.items)))));\n }\n renderPopup() {\n const ss = this;\n if (ss.params.renderPopup) return ss.params.renderPopup.call(ss, ss.items);\n let pageTitle = ss.params.pageTitle;\n if (typeof pageTitle === 'undefined') {\n const $itemTitleEl = ss.$el.find('.item-title');\n pageTitle = $itemTitleEl.length ? $itemTitleEl.text().trim() : '';\n }\n const cssClass = ss.params.cssClass || '';\n return $jsx(\"div\", {\n class: `popup smart-select-popup ${cssClass} ${ss.params.popupTabletFullscreen ? 'popup-tablet-fullscreen' : ''}`,\n \"data-select-name\": ss.selectName\n }, $jsx(\"div\", {\n class: \"view\"\n }, $jsx(\"div\", {\n class: `page smart-select-page ${ss.params.searchbar ? 'page-with-subnavbar' : ''}`,\n \"data-name\": \"smart-select-page\"\n }, $jsx(\"div\", {\n class: `navbar ${ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''}`\n }, $jsx(\"div\", {\n class: \"navbar-bg\"\n }), $jsx(\"div\", {\n class: \"navbar-inner sliding\"\n }, pageTitle && $jsx(\"div\", {\n class: \"title\"\n }, pageTitle), $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link popup-close\",\n \"data-popup\": `.smart-select-popup[data-select-name='${ss.selectName}']`\n }, ss.params.popupCloseLinkText)), ss.params.searchbar && $jsx(\"div\", {\n class: \"subnavbar\"\n }, ss.renderSearchbar()))), ss.params.searchbar && $jsx(\"div\", {\n class: \"searchbar-backdrop\"\n }), $jsx(\"div\", {\n class: \"page-content\"\n }, $jsx(\"div\", {\n class: `list list-outline-ios list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`\n }, $jsx(\"ul\", null, !ss.params.virtualList && ss.renderItems(ss.items)))))));\n }\n renderSheet() {\n const ss = this;\n if (ss.params.renderSheet) return ss.params.renderSheet.call(ss, ss.items);\n const cssClass = ss.params.cssClass;\n // prettier-ignore\n return $jsx(\"div\", {\n class: `sheet-modal smart-select-sheet ${cssClass}`,\n \"data-select-name\": ss.selectName\n }, $jsx(\"div\", {\n class: `toolbar toolbar-top ${ss.params.toolbarColorTheme ? `color-${ss.params.toolbarColorTheme}` : ''}`\n }, $jsx(\"div\", {\n class: \"toolbar-inner\"\n }, $jsx(\"div\", {\n class: \"left\"\n }), $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link sheet-close\"\n }, ss.params.sheetCloseLinkText)))), $jsx(\"div\", {\n class: \"sheet-modal-inner\"\n }, $jsx(\"div\", {\n class: \"page-content\"\n }, $jsx(\"div\", {\n class: `list list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`\n }, $jsx(\"ul\", null, !ss.params.virtualList && ss.renderItems(ss.items))))));\n }\n renderPopover() {\n const ss = this;\n if (ss.params.renderPopover) return ss.params.renderPopover.call(ss, ss.items);\n const cssClass = ss.params.cssClass;\n // prettier-ignore\n return $jsx(\"div\", {\n class: `popover smart-select-popover ${cssClass}`,\n \"data-select-name\": ss.selectName\n }, $jsx(\"div\", {\n class: \"popover-inner\"\n }, $jsx(\"div\", {\n class: `list list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`\n }, $jsx(\"ul\", null, !ss.params.virtualList && ss.renderItems(ss.items)))));\n }\n scrollToSelectedItem() {\n const ss = this;\n const {\n params,\n $containerEl\n } = ss;\n if (!ss.opened) return ss;\n if (params.virtualList) {\n let selectedIndex;\n ss.vl.items.forEach((item, index) => {\n if (typeof selectedIndex === 'undefined' && item.selected) {\n selectedIndex = index;\n }\n });\n if (typeof selectedIndex !== 'undefined') {\n ss.vl.scrollToItem(selectedIndex);\n }\n } else {\n const $selectedItemEl = $containerEl.find('input:checked').parents('li');\n if (!$selectedItemEl.length) return ss;\n const $scrollableEl = $containerEl.find('.page-content, .popover-inner');\n if (!$scrollableEl.length) return ss;\n $scrollableEl.scrollTop($selectedItemEl.offset().top - $scrollableEl.offset().top - parseInt($scrollableEl.css('padding-top'), 10));\n }\n return ss;\n }\n onOpen(type, containerEl) {\n const ss = this;\n const app = ss.app;\n const $containerEl = $(containerEl);\n ss.$containerEl = $containerEl;\n ss.openedIn = type;\n ss.opened = true;\n\n // Init VL\n if (ss.params.virtualList) {\n ss.vl = app.virtualList.create({\n el: $containerEl.find('.virtual-list'),\n items: ss.items,\n renderItem: ss.renderItem.bind(ss),\n height: ss.params.virtualListHeight,\n searchByItem(query, item) {\n if (item.text && removeDiacritics(item.text).toLowerCase().indexOf(query.trim().toLowerCase()) >= 0) return true;\n return false;\n }\n });\n }\n if (ss.params.scrollToSelectedItem) {\n ss.scrollToSelectedItem();\n }\n\n // Init SB\n if (ss.params.searchbar) {\n let $searchbarEl = $containerEl.find('.searchbar');\n if (type === 'page' && app.theme === 'ios') {\n $searchbarEl = $(app.navbar.getElByPage($containerEl)).find('.searchbar');\n }\n if (ss.params.appendSearchbarNotFound && (type === 'page' || type === 'popup')) {\n let $notFoundEl = null;\n if (typeof ss.params.appendSearchbarNotFound === 'string') {\n $notFoundEl = $(`
                      ${ss.params.appendSearchbarNotFound}
                      `);\n } else if (typeof ss.params.appendSearchbarNotFound === 'boolean') {\n $notFoundEl = $('
                      Nothing found
                      ');\n } else {\n $notFoundEl = ss.params.appendSearchbarNotFound;\n }\n if ($notFoundEl) {\n $containerEl.find('.page-content').append($notFoundEl[0]);\n }\n }\n const searchbarParams = extend({\n el: $searchbarEl,\n backdropEl: $containerEl.find('.searchbar-backdrop'),\n searchContainer: `.smart-select-list-${ss.id}`,\n searchIn: '.item-title'\n }, typeof ss.params.searchbar === 'object' ? ss.params.searchbar : {});\n ss.searchbar = app.searchbar.create(searchbarParams);\n }\n\n // Check for max length\n if (ss.maxLength) {\n ss.checkMaxLength();\n }\n\n // Close on select\n if (ss.params.closeOnSelect) {\n ss.$containerEl.find(`input[type=\"radio\"][name=\"${ss.inputName}\"]:checked`).parents('label').once('click', () => {\n ss.close();\n });\n }\n\n // Attach input events\n ss.attachInputsEvents();\n ss.$el.trigger('smartselect:open');\n ss.emit('local::open smartSelectOpen', ss);\n }\n onOpened() {\n const ss = this;\n ss.$el.trigger('smartselect:opened');\n ss.emit('local::opened smartSelectOpened', ss);\n }\n onClose() {\n const ss = this;\n if (ss.destroyed) return;\n\n // Destroy VL\n if (ss.vl && ss.vl.destroy) {\n ss.vl.destroy();\n ss.vl = null;\n delete ss.vl;\n }\n\n // Destroy SB\n if (ss.searchbar && ss.searchbar.destroy) {\n ss.searchbar.destroy();\n ss.searchbar = null;\n delete ss.searchbar;\n }\n // Detach events\n ss.detachInputsEvents();\n ss.$el.trigger('smartselect:close');\n ss.emit('local::close smartSelectClose', ss);\n }\n onClosed() {\n const ss = this;\n if (ss.destroyed) return;\n ss.opened = false;\n ss.$containerEl = null;\n delete ss.$containerEl;\n ss.$el.trigger('smartselect:closed');\n ss.emit('local::closed smartSelectClosed', ss);\n }\n openPage() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const pageHtml = ss.renderPage(ss.items);\n ss.view.router.navigate({\n url: ss.url,\n route: {\n content: pageHtml,\n path: ss.url,\n on: {\n pageBeforeIn(e, page) {\n ss.onOpen('page', page.el);\n },\n pageAfterIn(e, page) {\n ss.onOpened('page', page.el);\n },\n pageBeforeOut(e, page) {\n ss.onClose('page', page.el);\n },\n pageAfterOut(e, page) {\n ss.onClosed('page', page.el);\n }\n }\n }\n });\n return ss;\n }\n openPopup() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const popupHtml = ss.renderPopup(ss.items);\n const popupParams = {\n content: popupHtml,\n push: ss.params.popupPush,\n swipeToClose: ss.params.popupSwipeToClose,\n closeByBackdropClick: ss.params.closeByBackdropClick,\n on: {\n popupOpen(popup) {\n ss.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n ss.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n ss.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n ss.onClosed('popup', popup.el);\n }\n }\n };\n if (ss.params.routableModals && ss.view) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n popup: popupParams\n }\n });\n } else {\n ss.modal = ss.app.popup.create(popupParams).open();\n }\n return ss;\n }\n openSheet() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const sheetHtml = ss.renderSheet(ss.items);\n const sheetParams = {\n content: sheetHtml,\n backdrop: ss.params.sheetBackdrop,\n scrollToEl: ss.$el,\n closeByOutsideClick: true,\n push: ss.params.sheetPush,\n swipeToClose: ss.params.sheetSwipeToClose,\n closeByBackdropClick: ss.params.closeByBackdropClick,\n on: {\n sheetOpen(sheet) {\n ss.onOpen('sheet', sheet.el);\n },\n sheetOpened(sheet) {\n ss.onOpened('sheet', sheet.el);\n },\n sheetClose(sheet) {\n ss.onClose('sheet', sheet.el);\n },\n sheetClosed(sheet) {\n ss.onClosed('sheet', sheet.el);\n }\n }\n };\n if (ss.params.routableModals && ss.view) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n sheet: sheetParams\n }\n });\n } else {\n ss.modal = ss.app.sheet.create(sheetParams).open();\n }\n return ss;\n }\n openPopover() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const popoverHtml = ss.renderPopover(ss.items);\n const popoverParams = {\n content: popoverHtml,\n targetEl: ss.$el,\n closeByBackdropClick: ss.params.closeByBackdropClick,\n on: {\n popoverOpen(popover) {\n ss.onOpen('popover', popover.el);\n },\n popoverOpened(popover) {\n ss.onOpened('popover', popover.el);\n },\n popoverClose(popover) {\n ss.onClose('popover', popover.el);\n },\n popoverClosed(popover) {\n ss.onClosed('popover', popover.el);\n }\n }\n };\n if (ss.params.routableModals && ss.view) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n popover: popoverParams\n }\n });\n } else {\n ss.modal = ss.app.popover.create(popoverParams).open();\n }\n return ss;\n }\n open(type) {\n const ss = this;\n if (ss.opened) return ss;\n let prevented = false;\n function prevent() {\n prevented = true;\n }\n if (ss.$el) {\n ss.$el.trigger('smartselect:beforeopen', {\n prevent\n });\n }\n ss.emit('local::beforeOpen smartSelectBeforeOpen', ss, prevent);\n if (prevented) return ss;\n const openIn = type || ss.params.openIn;\n ss[`open${openIn.split('').map((el, index) => {\n if (index === 0) return el.toUpperCase();\n return el;\n }).join('')}`]();\n return ss;\n }\n close() {\n const ss = this;\n if (!ss.opened) return ss;\n if (ss.params.routableModals && ss.view || ss.openedIn === 'page') {\n ss.view.router.back();\n } else {\n ss.modal.once('modalClosed', () => {\n nextTick(() => {\n if (ss.destroyed) return;\n ss.modal.destroy();\n delete ss.modal;\n });\n });\n ss.modal.close();\n }\n return ss;\n }\n init() {\n const ss = this;\n ss.attachEvents();\n ss.setValueText();\n }\n destroy() {\n const ss = this;\n ss.emit('local::beforeDestroy smartSelectBeforeDestroy', ss);\n ss.$el.trigger('smartselect:beforedestroy');\n ss.detachEvents();\n delete ss.$el[0].f7SmartSelect;\n deleteProps(ss);\n ss.destroyed = true;\n }\n}\nexport default SmartSelect;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport SmartSelect from './smart-select-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'smartSelect',\n params: {\n smartSelect: {\n el: undefined,\n valueEl: undefined,\n setValueText: true,\n formatValueText: null,\n openIn: 'page',\n // or 'popup' or 'sheet' or 'popover'\n popupPush: false,\n popupSwipeToClose: undefined,\n // defaults to app\n sheetPush: false,\n sheetSwipeToClose: undefined,\n // defaults to app\n sheetBackdrop: false,\n pageTitle: undefined,\n pageBackLinkText: 'Back',\n popupCloseLinkText: 'Close',\n popupTabletFullscreen: false,\n closeByBackdropClick: true,\n sheetCloseLinkText: 'Done',\n searchbar: false,\n searchbarPlaceholder: 'Search',\n searchbarDisableText: 'Cancel',\n searchbarDisableButton: true,\n searchbarSpellcheck: false,\n closeOnSelect: false,\n virtualList: false,\n virtualListHeight: undefined,\n scrollToSelectedItem: false,\n formColorTheme: undefined,\n navbarColorTheme: undefined,\n routableModals: false,\n url: 'select/',\n inputIconPosition: 'start',\n cssClass: '',\n /*\n Custom render functions\n */\n renderPage: undefined,\n renderPopup: undefined,\n renderSheet: undefined,\n renderPopover: undefined,\n renderItems: undefined,\n renderItem: undefined,\n renderSearchbar: undefined\n }\n },\n static: {\n SmartSelect\n },\n create() {\n const app = this;\n app.smartSelect = extend(ConstructorMethods({\n defaultSelector: '.smart-select',\n constructor: SmartSelect,\n app,\n domProp: 'f7SmartSelect'\n }), {\n open(smartSelectEl) {\n const ss = app.smartSelect.get(smartSelectEl);\n if (ss && ss.open) return ss.open();\n return undefined;\n },\n close(smartSelectEl) {\n const ss = app.smartSelect.get(smartSelectEl);\n if (ss && ss.close) return ss.close();\n return undefined;\n }\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.smart-select-init').each(smartSelectEl => {\n app.smartSelect.create(extend({\n el: smartSelectEl\n }, $(smartSelectEl).dataset()));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.smart-select-init').each(smartSelectEl => {\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.smart-select-init').each(smartSelectEl => {\n app.smartSelect.create(extend({\n el: smartSelectEl\n }, $(smartSelectEl).dataset()));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.smart-select-init').each(smartSelectEl => {\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n });\n }\n },\n clicks: {\n '.smart-select': function open($clickedEl, data) {\n const app = this;\n if (!$clickedEl[0].f7SmartSelect) {\n const ss = app.smartSelect.create(extend({\n el: $clickedEl\n }, data));\n ss.open();\n }\n }\n },\n vnode: {\n 'smart-select-init': {\n insert(vnode) {\n const app = this;\n const smartSelectEl = vnode.elm;\n app.smartSelect.create(extend({\n el: smartSelectEl\n }, $(smartSelectEl).dataset()));\n },\n destroy(vnode) {\n const smartSelectEl = vnode.elm;\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n }\n }\n }\n};","import { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport $ from '../../shared/dom7.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { getSupport } from '../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Calendar extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const calendar = this;\n calendar.params = extend({}, app.params.calendar, params);\n let $containerEl;\n if (calendar.params.containerEl) {\n $containerEl = $(calendar.params.containerEl);\n if ($containerEl.length === 0) return calendar;\n }\n let $inputEl;\n if (calendar.params.inputEl) {\n $inputEl = $(calendar.params.inputEl);\n }\n const isHorizontal = calendar.params.direction === 'horizontal';\n let inverter = 1;\n if (isHorizontal) {\n inverter = app.rtl ? -1 : 1;\n }\n extend(calendar, {\n app,\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n initialized: false,\n opened: false,\n url: calendar.params.url,\n isHorizontal,\n inverter,\n animating: false,\n allowTouchMove: true,\n hasTimePicker: calendar.params.timePicker && !calendar.params.rangePicker && !calendar.params.multiple\n });\n calendar.dayFormatter = date => {\n const formatter = new Intl.DateTimeFormat(calendar.params.locale, {\n day: 'numeric'\n });\n return formatter.format(date).replace(/日/, '');\n };\n calendar.monthFormatter = date => {\n const formatter = new Intl.DateTimeFormat(calendar.params.locale, {\n month: 'long'\n });\n return formatter.format(date);\n };\n calendar.yearFormatter = date => {\n const formatter = new Intl.DateTimeFormat(calendar.params.locale, {\n year: 'numeric'\n });\n return formatter.format(date);\n };\n calendar.timeSelectorFormatter = date => {\n const formatter = new Intl.DateTimeFormat(calendar.params.locale, calendar.params.timePickerFormat);\n return formatter.format(date);\n };\n const timeFormatCheckDate = calendar.timeSelectorFormatter(new Date()).toLowerCase();\n calendar.is12HoursFormat = timeFormatCheckDate.indexOf('pm') >= 0 || timeFormatCheckDate.indexOf('am') >= 0;\n\n // Auto names\n let {\n monthNames,\n monthNamesShort,\n dayNames,\n dayNamesShort\n } = calendar.params;\n const {\n monthNamesIntl,\n monthNamesShortIntl,\n dayNamesIntl,\n dayNamesShortIntl\n } = calendar.getIntlNames();\n if (monthNames === 'auto') monthNames = monthNamesIntl;\n if (monthNamesShort === 'auto') monthNamesShort = monthNamesShortIntl;\n if (dayNames === 'auto') dayNames = dayNamesIntl;\n if (dayNamesShort === 'auto') dayNamesShort = dayNamesShortIntl;\n extend(calendar, {\n monthNames,\n monthNamesShort,\n dayNames,\n dayNamesShort\n });\n function onInputClick() {\n calendar.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n function onInputClear() {\n calendar.setValue([]);\n if (calendar.opened) {\n calendar.update();\n }\n }\n function onHtmlClick(e) {\n const $targetEl = $(e.target);\n if (calendar.destroyed || !calendar.params) return;\n if (calendar.isPopover()) return;\n if (!calendar.opened || calendar.closing) return;\n if ($targetEl.closest('[class*=\"backdrop\"]').length) return;\n if (calendar.monthPickerPopover || calendar.yearPickerPopover || calendar.timePickerPopover) return;\n if ($inputEl && $inputEl.length > 0) {\n if ($targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal, .calendar-modal').length === 0) {\n calendar.close();\n }\n } else if ($(e.target).closest('.sheet-modal, .calendar-modal').length === 0) {\n calendar.close();\n }\n }\n\n // Events\n extend(calendar, {\n attachInputEvents() {\n calendar.$inputEl.on('click', onInputClick);\n calendar.$inputEl.on('input:clear', onInputClear);\n if (calendar.params.inputReadOnly) {\n calendar.$inputEl.on('focus mousedown', onInputFocus);\n if (calendar.$inputEl[0]) {\n calendar.$inputEl[0].f7ValidateReadonly = true;\n }\n }\n },\n detachInputEvents() {\n calendar.$inputEl.off('click', onInputClick);\n calendar.$inputEl.off('input:clear', onInputClear);\n if (calendar.params.inputReadOnly) {\n calendar.$inputEl.off('focus mousedown', onInputFocus);\n if (calendar.$inputEl[0]) {\n delete calendar.$inputEl[0].f7ValidateReadonly;\n }\n }\n },\n attachHtmlEvents() {\n app.on('click', onHtmlClick);\n },\n detachHtmlEvents() {\n app.off('click', onHtmlClick);\n }\n });\n calendar.attachCalendarEvents = function attachCalendarEvents() {\n let allowItemClick = true;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n let touchStartTime;\n let touchEndTime;\n let currentTranslate;\n let wrapperWidth;\n let wrapperHeight;\n let percentage;\n let touchesDiff;\n let isScrolling;\n const {\n $el,\n $wrapperEl\n } = calendar;\n function handleTouchStart(e) {\n if (isMoved || isTouched || !e.isTrusted) return;\n isTouched = true;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n touchStartTime = new Date().getTime();\n percentage = 0;\n allowItemClick = true;\n isScrolling = undefined;\n currentTranslate = calendar.monthsTranslate;\n }\n function handleTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n const {\n isHorizontal: isH\n } = calendar;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX));\n }\n if (isH && isScrolling || !calendar.allowTouchMove) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n if (calendar.animating) {\n isTouched = false;\n return;\n }\n allowItemClick = false;\n if (!isMoved) {\n // First move\n isMoved = true;\n wrapperWidth = $wrapperEl[0].offsetWidth;\n wrapperHeight = $wrapperEl[0].offsetHeight;\n $wrapperEl.transition(0);\n }\n touchesDiff = isH ? touchCurrentX - touchStartX : touchCurrentY - touchStartY;\n percentage = touchesDiff / (isH ? wrapperWidth : wrapperHeight);\n currentTranslate = (calendar.monthsTranslate * calendar.inverter + percentage) * 100;\n\n // Transform wrapper\n $wrapperEl.transform(`translate3d(${isH ? currentTranslate : 0}%, ${isH ? 0 : currentTranslate}%, 0)`);\n }\n function handleTouchEnd(e) {\n if (!isTouched || !isMoved || !e.isTrusted) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n touchEndTime = new Date().getTime();\n if (touchEndTime - touchStartTime < 300) {\n if (Math.abs(touchesDiff) < 10) {\n calendar.resetMonth();\n } else if (touchesDiff >= 10) {\n if (app.rtl) calendar.nextMonth();else calendar.prevMonth();\n } else if (app.rtl) calendar.prevMonth();else calendar.nextMonth();\n } else if (percentage <= -0.5) {\n if (app.rtl) calendar.prevMonth();else calendar.nextMonth();\n } else if (percentage >= 0.5) {\n if (app.rtl) calendar.nextMonth();else calendar.prevMonth();\n } else {\n calendar.resetMonth();\n }\n\n // Allow click\n setTimeout(() => {\n allowItemClick = true;\n }, 100);\n }\n function handleDayClick(e) {\n if (!allowItemClick) return;\n let $dayEl = $(e.target).parents('.calendar-day');\n if ($dayEl.length === 0 && $(e.target).hasClass('calendar-day')) {\n $dayEl = $(e.target);\n }\n if ($dayEl.length === 0) return;\n if ($dayEl.hasClass('calendar-day-disabled')) return;\n if (!calendar.params.rangePicker) {\n if ($dayEl.hasClass('calendar-day-next')) calendar.nextMonth();\n if ($dayEl.hasClass('calendar-day-prev')) calendar.prevMonth();\n }\n const dateYear = parseInt($dayEl.attr('data-year'), 10);\n const dateMonth = parseInt($dayEl.attr('data-month'), 10);\n const dateDay = parseInt($dayEl.attr('data-day'), 10);\n calendar.emit('local::dayClick calendarDayClick', calendar, $dayEl[0], dateYear, dateMonth, dateDay);\n if (!$dayEl.hasClass('calendar-day-selected') || calendar.params.multiple || calendar.params.rangePicker) {\n const valueToAdd = new Date(dateYear, dateMonth, dateDay, 0, 0, 0);\n if (calendar.hasTimePicker) {\n if (calendar.value && calendar.value[0]) {\n valueToAdd.setHours(calendar.value[0].getHours(), calendar.value[0].getMinutes());\n } else {\n valueToAdd.setHours(new Date().getHours(), new Date().getMinutes());\n }\n }\n calendar.addValue(valueToAdd);\n }\n if (calendar.params.closeOnSelect) {\n if (calendar.params.rangePicker && calendar.value.length === 2 || !calendar.params.rangePicker) {\n calendar.close();\n }\n }\n }\n function onNextMonthClick() {\n calendar.nextMonth();\n }\n function onPrevMonthClick() {\n calendar.prevMonth();\n }\n function onNextYearClick() {\n calendar.nextYear();\n }\n function onPrevYearClick() {\n calendar.prevYear();\n }\n function onMonthSelectorClick() {\n calendar.openMonthPicker();\n }\n function onYearSelectorClick() {\n calendar.openYearPicker();\n }\n function onTimeSelectorClick() {\n calendar.openTimePicker();\n }\n const passiveListener = app.touchEvents.start === 'touchstart' && getSupport().passiveListener ? {\n passive: true,\n capture: false\n } : false;\n // Selectors clicks\n $el.find('.calendar-prev-month-button').on('click', onPrevMonthClick);\n $el.find('.calendar-next-month-button').on('click', onNextMonthClick);\n $el.find('.calendar-prev-year-button').on('click', onPrevYearClick);\n $el.find('.calendar-next-year-button').on('click', onNextYearClick);\n if (calendar.params.monthPicker) {\n $el.find('.current-month-value').on('click', onMonthSelectorClick);\n }\n if (calendar.params.yearPicker) {\n $el.find('.current-year-value').on('click', onYearSelectorClick);\n }\n if (calendar.hasTimePicker) {\n $el.find('.calendar-time-selector a').on('click', onTimeSelectorClick);\n }\n // Day clicks\n $wrapperEl.on('click', handleDayClick);\n // Touch events\n if (calendar.params.touchMove) {\n $wrapperEl.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n calendar.detachCalendarEvents = function detachCalendarEvents() {\n $el.find('.calendar-prev-month-button').off('click', onPrevMonthClick);\n $el.find('.calendar-next-month-button').off('click', onNextMonthClick);\n $el.find('.calendar-prev-year-button').off('click', onPrevYearClick);\n $el.find('.calendar-next-year-button').off('click', onNextYearClick);\n if (calendar.params.monthPicker) {\n $el.find('.current-month-value').off('click', onMonthSelectorClick);\n }\n if (calendar.params.yearPicker) {\n $el.find('.current-year-value').off('click', onYearSelectorClick);\n }\n if (calendar.hasTimePicker) {\n $el.find('.calendar-time-selector a').off('click', onTimeSelectorClick);\n }\n $wrapperEl.off('click', handleDayClick);\n if (calendar.params.touchMove) {\n $wrapperEl.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n };\n };\n calendar.init();\n return calendar;\n }\n get view() {\n const {\n $inputEl,\n app,\n params\n } = this;\n let view;\n if (params.view) {\n view = params.view;\n } else if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view) view = app.views.main;\n return view;\n }\n getIntlNames() {\n const calendar = this;\n const locale = calendar.params.locale;\n const monthNamesIntl = [];\n const monthNamesShortIntl = [];\n const dayNamesIntl = [];\n const dayNamesShortIntl = [];\n const formatterMonthNames = new Intl.DateTimeFormat(locale, {\n month: 'long'\n });\n const formatterMonthNamesShort = new Intl.DateTimeFormat(locale, {\n month: 'short'\n });\n const formatterDayNames = new Intl.DateTimeFormat(locale, {\n weekday: 'long'\n });\n const formatterDayNamesShort = new Intl.DateTimeFormat(locale, {\n weekday: 'short'\n });\n let year;\n let yearStarted;\n let yearEnded;\n for (let i = 0; i < 24; i += 1) {\n const date = new Date().setMonth(i, 1);\n const currentYear = calendar.yearFormatter(date);\n if (year && currentYear !== year) {\n if (yearStarted) yearEnded = true;\n yearStarted = true;\n year = currentYear;\n }\n if (!year) {\n year = currentYear;\n }\n if (yearStarted && year === currentYear && !yearEnded) {\n monthNamesIntl.push(formatterMonthNames.format(date));\n monthNamesShortIntl.push(formatterMonthNamesShort.format(date));\n }\n }\n const weekDay = new Date().getDay();\n for (let i = 0; i < 7; i += 1) {\n const date = new Date().getTime() + (i - weekDay) * 24 * 60 * 60 * 1000;\n dayNamesIntl.push(formatterDayNames.format(date));\n dayNamesShortIntl.push(formatterDayNamesShort.format(date));\n }\n return {\n monthNamesIntl,\n monthNamesShortIntl,\n dayNamesIntl,\n dayNamesShortIntl\n };\n }\n normalizeDate(date) {\n const calendar = this;\n const d = new Date(date);\n if (calendar.hasTimePicker) {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes());\n }\n return new Date(d.getFullYear(), d.getMonth(), d.getDate());\n }\n normalizeValues(values) {\n const calendar = this;\n let newValues = [];\n if (values && Array.isArray(values)) {\n newValues = values.map(val => calendar.normalizeDate(val));\n }\n return newValues;\n }\n initInput() {\n const calendar = this;\n if (!calendar.$inputEl) return;\n if (calendar.params.inputReadOnly) calendar.$inputEl.prop('readOnly', true);\n }\n isPopover() {\n const calendar = this;\n const {\n app,\n modal,\n params\n } = calendar;\n const device = getDevice();\n if (params.openIn === 'sheet') return false;\n if (modal && modal.type !== 'popover') return false;\n if (!calendar.inline && calendar.inputEl) {\n if (params.openIn === 'popover') return true;\n if (device.ios) {\n return !!device.ipad;\n }\n if (app.width >= 768) {\n return true;\n }\n }\n return false;\n }\n formatDate(d) {\n const calendar = this;\n const date = new Date(d);\n const year = date.getFullYear();\n const month = date.getMonth();\n const month1 = month + 1;\n const day = date.getDate();\n const weekDay = date.getDay();\n const {\n monthNames,\n monthNamesShort,\n dayNames,\n dayNamesShort\n } = calendar;\n const {\n dateFormat,\n locale\n } = calendar.params;\n function twoDigits(number) {\n return number < 10 ? `0${number}` : number;\n }\n if (typeof dateFormat === 'string') {\n const tokens = {\n yyyy: year,\n yy: String(year).substring(2),\n mm: twoDigits(month1),\n m: month1,\n MM: monthNames[month],\n M: monthNamesShort[month],\n dd: twoDigits(day),\n d: day,\n DD: dayNames[weekDay],\n D: dayNamesShort[weekDay]\n };\n if (calendar.params.timePicker) {\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n let hours12 = hours;\n if (hours > 12) hours12 = hours - 12;\n if (hours === 0) hours12 = 12;\n const a = hours >= 12 && hours !== 0 ? 'pm' : 'am';\n Object.assign(tokens, {\n HH: twoDigits(hours),\n H: hours,\n hh: twoDigits(hours12),\n h: hours12,\n ss: twoDigits(seconds),\n s: seconds,\n ':mm': twoDigits(minutes),\n ':m': minutes,\n a,\n A: a.toUpperCase()\n });\n }\n const regexp = new RegExp(Object.keys(tokens).map(t => `(${t})`).join('|'), 'g');\n return dateFormat.replace(regexp, token => {\n if (token in tokens) return tokens[token];\n return token;\n });\n }\n if (typeof dateFormat === 'function') {\n return dateFormat(date);\n }\n // Intl Object\n const formatter = new Intl.DateTimeFormat(locale, dateFormat);\n return formatter.format(date);\n }\n formatValue() {\n const calendar = this;\n const {\n value\n } = calendar;\n if (calendar.params.formatValue) {\n return calendar.params.formatValue.call(calendar, value);\n }\n return value.map(v => calendar.formatDate(v)).join(calendar.params.rangePicker ? ' - ' : ', ');\n }\n addValue(newValue) {\n const calendar = this;\n const {\n multiple,\n rangePicker,\n rangePickerMinDays,\n rangePickerMaxDays\n } = calendar.params;\n if (multiple) {\n if (!calendar.value) calendar.value = [];\n let inValuesIndex;\n for (let i = 0; i < calendar.value.length; i += 1) {\n if (new Date(newValue).getTime() === new Date(calendar.value[i]).getTime()) {\n inValuesIndex = i;\n }\n }\n if (typeof inValuesIndex === 'undefined') {\n calendar.value.push(newValue);\n } else {\n calendar.value.splice(inValuesIndex, 1);\n }\n calendar.updateValue();\n } else if (rangePicker) {\n if (!calendar.value) calendar.value = [];\n if (calendar.value.length === 2 || calendar.value.length === 0) {\n calendar.value = [];\n }\n if (calendar.value.length === 0 || Math.abs(calendar.value[0].getTime() - newValue.getTime()) >= (rangePickerMinDays - 1) * 60 * 60 * 24 * 1000 && (rangePickerMaxDays === 0 || Math.abs(calendar.value[0].getTime() - newValue.getTime()) <= (rangePickerMaxDays - 1) * 60 * 60 * 24 * 1000)) calendar.value.push(newValue);else calendar.value = [];\n calendar.value.sort((a, b) => a - b);\n calendar.updateValue();\n } else {\n calendar.value = [newValue];\n calendar.updateValue();\n }\n }\n setValue(values) {\n const calendar = this;\n const currentValue = calendar.value;\n if (Array.isArray(currentValue) && Array.isArray(values) && currentValue.length === values.length) {\n let equal = true;\n currentValue.forEach((v, index) => {\n if (v !== values[index]) equal = false;\n });\n if (equal) return;\n }\n calendar.value = values;\n calendar.updateValue();\n }\n getValue() {\n const calendar = this;\n return calendar.value;\n }\n updateValue(onlyHeader) {\n const calendar = this;\n const {\n $el,\n $wrapperEl,\n $inputEl,\n value,\n params\n } = calendar;\n let i;\n if ($el && $el.length > 0) {\n $wrapperEl.find('.calendar-day-selected').removeClass('calendar-day-selected calendar-day-selected-range calendar-day-selected-left calendar-day-selected-right');\n let valueDate;\n if (params.rangePicker && value.length === 2) {\n const leftDate = new Date(value[0]).getTime();\n const rightDate = new Date(value[1]).getTime();\n for (i = leftDate; i <= rightDate; i += 24 * 60 * 60 * 1000) {\n valueDate = new Date(i);\n let addClass = 'calendar-day-selected';\n if (leftDate !== rightDate) {\n if (i !== leftDate && i !== rightDate) {\n addClass += ' calendar-day-selected-range';\n }\n if (i === leftDate) {\n addClass += ' calendar-day-selected-left';\n }\n if (i === rightDate) {\n addClass += ' calendar-day-selected-right';\n }\n }\n $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).addClass(addClass);\n }\n valueDate = new Date(leftDate);\n $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).removeClass('calendar-day-selected-range').addClass('calendar-day-selected calendar-day-selected-left');\n valueDate = new Date(rightDate);\n $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).removeClass('calendar-day-selected-range').addClass('calendar-day-selected calendar-day-selected-right');\n } else {\n for (i = 0; i < calendar.value.length; i += 1) {\n valueDate = new Date(value[i]);\n $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).addClass('calendar-day-selected');\n }\n }\n }\n if (!onlyHeader) {\n calendar.emit('local::change calendarChange', calendar, value);\n }\n if ($el && $el.length > 0 && calendar.hasTimePicker) {\n $el.find('.calendar-time-selector a').text(value && value.length ? calendar.timeSelectorFormatter(value[0]) : calendar.params.timePickerPlaceholder);\n }\n if ($inputEl && $inputEl.length || params.header) {\n const inputValue = calendar.formatValue(value);\n if (params.header && $el && $el.length) {\n $el.find('.calendar-selected-date').text(inputValue);\n }\n if ($inputEl && $inputEl.length && !onlyHeader) {\n $inputEl.val(inputValue);\n $inputEl.trigger('change');\n }\n }\n }\n updateCurrentMonthYear(dir) {\n const calendar = this;\n const {\n $months,\n $el,\n monthNames\n } = calendar;\n let currentLocaleMonth;\n let currentLocaleYear;\n if (typeof dir === 'undefined') {\n calendar.currentMonth = parseInt($months.eq(1).attr('data-month'), 10);\n calendar.currentYear = parseInt($months.eq(1).attr('data-year'), 10);\n currentLocaleMonth = $months.eq(1).attr('data-locale-month');\n currentLocaleYear = $months.eq(1).attr('data-locale-year');\n } else {\n calendar.currentMonth = parseInt($months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-month'), 10);\n calendar.currentYear = parseInt($months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-year'), 10);\n currentLocaleMonth = $months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-locale-month');\n currentLocaleYear = $months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-locale-year');\n }\n $el.find('.current-month-value').text(monthNames[currentLocaleMonth]);\n $el.find('.current-year-value').text(currentLocaleYear);\n }\n update() {\n const calendar = this;\n const {\n currentYear,\n currentMonth,\n $wrapperEl\n } = calendar;\n const currentDate = new Date(currentYear, currentMonth);\n const prevMonthHtml = calendar.renderMonth(currentDate, 'prev');\n const currentMonthHtml = calendar.renderMonth(currentDate);\n const nextMonthHtml = calendar.renderMonth(currentDate, 'next');\n $wrapperEl.transition(0).html(`${prevMonthHtml}${currentMonthHtml}${nextMonthHtml}`).transform('translate3d(0,0,0)');\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.monthsTranslate = 0;\n calendar.setMonthsTranslate();\n calendar.$months.each(monthEl => {\n calendar.emit('local::monthAdd calendarMonthAdd', monthEl);\n });\n }\n onMonthChangeStart(dir) {\n const calendar = this;\n const {\n $months,\n currentYear,\n currentMonth\n } = calendar;\n calendar.updateCurrentMonthYear(dir);\n $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');\n const currentIndex = dir === 'next' ? $months.length - 1 : 0;\n $months.eq(currentIndex).addClass('calendar-month-current');\n $months.eq(dir === 'next' ? currentIndex - 1 : currentIndex + 1).addClass(dir === 'next' ? 'calendar-month-prev' : 'calendar-month-next');\n calendar.emit('local::monthYearChangeStart calendarMonthYearChangeStart', calendar, currentYear, currentMonth);\n }\n onMonthChangeEnd(dir, rebuildBoth) {\n const calendar = this;\n const {\n currentYear,\n currentMonth,\n $wrapperEl,\n monthsTranslate\n } = calendar;\n calendar.animating = false;\n let nextMonthHtml;\n let prevMonthHtml;\n let currentMonthHtml;\n $wrapperEl.find('.calendar-month:not(.calendar-month-prev):not(.calendar-month-current):not(.calendar-month-next)').remove();\n if (typeof dir === 'undefined') {\n dir = 'next'; // eslint-disable-line\n rebuildBoth = true; // eslint-disable-line\n }\n\n if (!rebuildBoth) {\n currentMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), dir);\n } else {\n $wrapperEl.find('.calendar-month-next, .calendar-month-prev').remove();\n prevMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'prev');\n nextMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'next');\n }\n if (dir === 'next' || rebuildBoth) {\n $wrapperEl.append(currentMonthHtml || nextMonthHtml);\n }\n if (dir === 'prev' || rebuildBoth) {\n $wrapperEl.prepend(currentMonthHtml || prevMonthHtml);\n }\n const $months = $wrapperEl.find('.calendar-month');\n calendar.$months = $months;\n calendar.setMonthsTranslate(monthsTranslate);\n calendar.emit('local::monthAdd calendarMonthAdd', calendar, dir === 'next' ? $months.eq($months.length - 1)[0] : $months.eq(0)[0]);\n calendar.emit('local::monthYearChangeEnd calendarMonthYearChangeEnd', calendar, currentYear, currentMonth);\n }\n setMonthsTranslate(translate) {\n const calendar = this;\n const {\n $months,\n isHorizontal: isH,\n inverter\n } = calendar;\n // eslint-disable-next-line\n translate = translate || calendar.monthsTranslate || 0;\n if (typeof calendar.monthsTranslate === 'undefined') {\n calendar.monthsTranslate = translate;\n }\n $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');\n const prevMonthTranslate = -(translate + 1) * 100 * inverter;\n const currentMonthTranslate = -translate * 100 * inverter;\n const nextMonthTranslate = -(translate - 1) * 100 * inverter;\n $months.eq(0).transform(`translate3d(${isH ? prevMonthTranslate : 0}%, ${isH ? 0 : prevMonthTranslate}%, 0)`).addClass('calendar-month-prev');\n $months.eq(1).transform(`translate3d(${isH ? currentMonthTranslate : 0}%, ${isH ? 0 : currentMonthTranslate}%, 0)`).addClass('calendar-month-current');\n $months.eq(2).transform(`translate3d(${isH ? nextMonthTranslate : 0}%, ${isH ? 0 : nextMonthTranslate}%, 0)`).addClass('calendar-month-next');\n }\n nextMonth(transition) {\n const calendar = this;\n const {\n params,\n $wrapperEl,\n inverter,\n isHorizontal: isH\n } = calendar;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n transition = ''; // eslint-disable-line\n if (!params.animate) transition = 0; // eslint-disable-line\n }\n\n const nextMonth = parseInt(calendar.$months.eq(calendar.$months.length - 1).attr('data-month'), 10);\n const nextYear = parseInt(calendar.$months.eq(calendar.$months.length - 1).attr('data-year'), 10);\n const nextDate = new Date(nextYear, nextMonth);\n const nextDateTime = nextDate.getTime();\n const transitionEndCallback = !calendar.animating;\n if (params.maxDate) {\n if (nextDateTime > new Date(params.maxDate).getTime()) {\n calendar.resetMonth();\n return;\n }\n }\n calendar.monthsTranslate -= 1;\n if (nextMonth === calendar.currentMonth) {\n const nextMonthTranslate = -calendar.monthsTranslate * 100 * inverter;\n const nextMonthHtml = $(calendar.renderMonth(nextDateTime, 'next')).transform(`translate3d(${isH ? nextMonthTranslate : 0}%, ${isH ? 0 : nextMonthTranslate}%, 0)`).addClass('calendar-month-next');\n $wrapperEl.append(nextMonthHtml[0]);\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.emit('local::monthAdd calendarMonthAdd', calendar.$months.eq(calendar.$months.length - 1)[0]);\n }\n calendar.animating = true;\n calendar.onMonthChangeStart('next');\n const translate = calendar.monthsTranslate * 100 * inverter;\n $wrapperEl.transition(transition).transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(() => {\n calendar.onMonthChangeEnd('next');\n });\n }\n if (!params.animate) {\n calendar.onMonthChangeEnd('next');\n }\n }\n prevMonth(transition) {\n const calendar = this;\n const {\n params,\n $wrapperEl,\n inverter,\n isHorizontal: isH\n } = calendar;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n transition = ''; // eslint-disable-line\n if (!params.animate) transition = 0; // eslint-disable-line\n }\n\n const prevMonth = parseInt(calendar.$months.eq(0).attr('data-month'), 10);\n const prevYear = parseInt(calendar.$months.eq(0).attr('data-year'), 10);\n const prevDate = new Date(prevYear, prevMonth + 1, -1);\n const prevDateTime = prevDate.getTime();\n const transitionEndCallback = !calendar.animating;\n if (params.minDate) {\n let minDate = new Date(params.minDate);\n minDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);\n if (prevDateTime < minDate.getTime()) {\n calendar.resetMonth();\n return;\n }\n }\n calendar.monthsTranslate += 1;\n if (prevMonth === calendar.currentMonth) {\n const prevMonthTranslate = -calendar.monthsTranslate * 100 * inverter;\n const prevMonthHtml = $(calendar.renderMonth(prevDateTime, 'prev')).transform(`translate3d(${isH ? prevMonthTranslate : 0}%, ${isH ? 0 : prevMonthTranslate}%, 0)`).addClass('calendar-month-prev');\n $wrapperEl.prepend(prevMonthHtml[0]);\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.emit('local::monthAdd calendarMonthAdd', calendar.$months.eq(0)[0]);\n }\n calendar.animating = true;\n calendar.onMonthChangeStart('prev');\n const translate = calendar.monthsTranslate * 100 * inverter;\n $wrapperEl.transition(transition).transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(() => {\n calendar.onMonthChangeEnd('prev');\n });\n }\n if (!params.animate) {\n calendar.onMonthChangeEnd('prev');\n }\n }\n resetMonth(transition) {\n if (transition === void 0) {\n transition = '';\n }\n const calendar = this;\n const {\n $wrapperEl,\n inverter,\n isHorizontal: isH,\n monthsTranslate\n } = calendar;\n const translate = monthsTranslate * 100 * inverter;\n $wrapperEl.transition(transition).transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n }\n // eslint-disable-next-line\n setYearMonth(year, month, transition) {\n const calendar = this;\n const {\n params,\n isHorizontal: isH,\n $wrapperEl,\n inverter\n } = calendar;\n // eslint-disable-next-line\n if (typeof year === 'undefined') year = calendar.currentYear;\n // eslint-disable-next-line\n if (typeof month === 'undefined') month = calendar.currentMonth;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n // eslint-disable-next-line\n transition = '';\n // eslint-disable-next-line\n if (!params.animate) transition = 0;\n }\n let targetDate;\n if (year < calendar.currentYear) {\n targetDate = new Date(year, month + 1, -1).getTime();\n } else {\n targetDate = new Date(year, month).getTime();\n }\n if (params.maxDate && targetDate > new Date(params.maxDate).getTime()) {\n return false;\n }\n if (params.minDate) {\n let minDate = new Date(params.minDate);\n minDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);\n if (targetDate < minDate.getTime()) {\n return false;\n }\n }\n const currentDate = new Date(calendar.currentYear, calendar.currentMonth).getTime();\n const dir = targetDate > currentDate ? 'next' : 'prev';\n const newMonthHTML = calendar.renderMonth(new Date(year, month));\n calendar.monthsTranslate = calendar.monthsTranslate || 0;\n const prevTranslate = calendar.monthsTranslate;\n let monthTranslate;\n const transitionEndCallback = !calendar.animating && transition !== 0;\n if (targetDate > currentDate) {\n // To next\n calendar.monthsTranslate -= 1;\n if (!calendar.animating) calendar.$months.eq(calendar.$months.length - 1).remove();\n $wrapperEl.append(newMonthHTML);\n calendar.$months = $wrapperEl.find('.calendar-month');\n monthTranslate = -(prevTranslate - 1) * 100 * inverter;\n calendar.$months.eq(calendar.$months.length - 1).transform(`translate3d(${isH ? monthTranslate : 0}%, ${isH ? 0 : monthTranslate}%, 0)`).addClass('calendar-month-next');\n } else {\n // To prev\n calendar.monthsTranslate += 1;\n if (!calendar.animating) calendar.$months.eq(0).remove();\n $wrapperEl.prepend(newMonthHTML);\n calendar.$months = $wrapperEl.find('.calendar-month');\n monthTranslate = -(prevTranslate + 1) * 100 * inverter;\n calendar.$months.eq(0).transform(`translate3d(${isH ? monthTranslate : 0}%, ${isH ? 0 : monthTranslate}%, 0)`).addClass('calendar-month-prev');\n }\n calendar.emit('local::monthAdd calendarMonthAdd', dir === 'next' ? calendar.$months.eq(calendar.$months.length - 1)[0] : calendar.$months.eq(0)[0]);\n calendar.animating = true;\n calendar.onMonthChangeStart(dir);\n const wrapperTranslate = calendar.monthsTranslate * 100 * inverter;\n $wrapperEl.transition(transition).transform(`translate3d(${isH ? wrapperTranslate : 0}%, ${isH ? 0 : wrapperTranslate}%, 0)`);\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(() => {\n calendar.onMonthChangeEnd(dir, true);\n });\n }\n if (!params.animate || transition === 0) {\n calendar.onMonthChangeEnd(dir, true);\n }\n }\n nextYear() {\n const calendar = this;\n calendar.setYearMonth(calendar.currentYear + 1);\n }\n prevYear() {\n const calendar = this;\n calendar.setYearMonth(calendar.currentYear - 1);\n }\n // eslint-disable-next-line\n dateInRange(dayDate, range) {\n let match = false;\n let i;\n if (!range) return false;\n if (Array.isArray(range)) {\n for (i = 0; i < range.length; i += 1) {\n if (range[i].from || range[i].to) {\n if (range[i].from && range[i].to) {\n if (dayDate <= new Date(range[i].to).getTime() && dayDate >= new Date(range[i].from).getTime()) {\n match = true;\n }\n } else if (range[i].from) {\n if (dayDate >= new Date(range[i].from).getTime()) {\n match = true;\n }\n } else if (range[i].to) {\n if (dayDate <= new Date(range[i].to).getTime()) {\n match = true;\n }\n }\n } else if (range[i].date) {\n if (dayDate === new Date(range[i].date).getTime()) {\n match = true;\n }\n } else if (dayDate === new Date(range[i]).getTime()) {\n match = true;\n }\n }\n } else if (range.from || range.to) {\n if (range.from && range.to) {\n if (dayDate <= new Date(range.to).getTime() && dayDate >= new Date(range.from).getTime()) {\n match = true;\n }\n } else if (range.from) {\n if (dayDate >= new Date(range.from).getTime()) {\n match = true;\n }\n } else if (range.to) {\n if (dayDate <= new Date(range.to).getTime()) {\n match = true;\n }\n }\n } else if (range.date) {\n match = dayDate === new Date(range.date).getTime();\n } else if (typeof range === 'function') {\n match = range(new Date(dayDate));\n }\n return match;\n }\n // eslint-disable-next-line\n daysInMonth(date) {\n const d = new Date(date);\n return new Date(d.getFullYear(), d.getMonth() + 1, 0).getDate();\n }\n renderMonths(date) {\n const calendar = this;\n if (calendar.params.renderMonths) {\n return calendar.params.renderMonths.call(calendar, date);\n }\n return $jsx(\"div\", {\n class: \"calendar-months-wrapper\"\n }, calendar.renderMonth(date, 'prev'), calendar.renderMonth(date), calendar.renderMonth(date, 'next'));\n }\n renderMonth(d, offset) {\n const calendar = this;\n const {\n params,\n value\n } = calendar;\n if (params.renderMonth) {\n return params.renderMonth.call(calendar, d, offset);\n }\n let date = new Date(d);\n let year = date.getFullYear();\n let month = date.getMonth();\n let localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter(date));\n if (localeMonth < 0) localeMonth = month;\n let localeYear = calendar.yearFormatter(date);\n if (offset === 'next') {\n if (month === 11) date = new Date(year + 1, 0);else date = new Date(year, month + 1, 1);\n }\n if (offset === 'prev') {\n if (month === 0) date = new Date(year - 1, 11);else date = new Date(year, month - 1, 1);\n }\n if (offset === 'next' || offset === 'prev') {\n month = date.getMonth();\n year = date.getFullYear();\n localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter(date));\n if (localeMonth < 0) localeMonth = month;\n localeYear = calendar.yearFormatter(date);\n }\n const currentValues = [];\n const today = new Date().setHours(0, 0, 0, 0);\n const minDate = params.minDate ? new Date(params.minDate).getTime() : null;\n const maxDate = params.maxDate ? new Date(params.maxDate).getTime() : null;\n const rows = 6;\n const cols = 7;\n const daysInPrevMonth = calendar.daysInMonth(new Date(date.getFullYear(), date.getMonth()).getTime() - 10 * 24 * 60 * 60 * 1000);\n const daysInMonth = calendar.daysInMonth(date);\n const minDayNumber = params.firstDay === 6 ? 0 : 1;\n let monthHtml = '';\n let dayIndex = 0 + (params.firstDay - 1);\n let disabled;\n let hasEvents;\n let firstDayOfMonthIndex = new Date(date.getFullYear(), date.getMonth()).getDay();\n if (firstDayOfMonthIndex === 0) firstDayOfMonthIndex = 7;\n if (value && value.length) {\n for (let i = 0; i < value.length; i += 1) {\n currentValues.push(new Date(value[i]).setHours(0, 0, 0, 0));\n }\n }\n for (let row = 1; row <= rows; row += 1) {\n let rowHtml = '';\n for (let col = 1; col <= cols; col += 1) {\n dayIndex += 1;\n let dayDate;\n let dayNumber = dayIndex - firstDayOfMonthIndex;\n let addClass = '';\n if (row === 1 && col === 1 && dayNumber > minDayNumber && params.firstDay !== 1) {\n dayIndex -= 7;\n dayNumber = dayIndex - firstDayOfMonthIndex;\n }\n const weekDayIndex = col - 1 + params.firstDay > 6 ? col - 1 - 7 + params.firstDay : col - 1 + params.firstDay;\n if (dayNumber < 0) {\n dayNumber = daysInPrevMonth + dayNumber + 1;\n addClass += ' calendar-day-prev';\n dayDate = new Date(month - 1 < 0 ? year - 1 : year, month - 1 < 0 ? 11 : month - 1, dayNumber).getTime();\n } else {\n dayNumber += 1;\n if (dayNumber > daysInMonth) {\n dayNumber -= daysInMonth;\n addClass += ' calendar-day-next';\n dayDate = new Date(month + 1 > 11 ? year + 1 : year, month + 1 > 11 ? 0 : month + 1, dayNumber).getTime();\n } else {\n dayDate = new Date(year, month, dayNumber).getTime();\n }\n }\n // Today\n if (dayDate === today) addClass += ' calendar-day-today';\n\n // Selected\n if (params.rangePicker && currentValues.length === 2) {\n if (dayDate >= currentValues[0] && dayDate <= currentValues[1]) {\n addClass += ' calendar-day-selected';\n }\n if (currentValues[0] !== currentValues[1]) {\n if (dayDate > currentValues[0] && dayDate < currentValues[1]) {\n addClass += ' calendar-day-selected-range';\n }\n if (dayDate === currentValues[0]) {\n addClass += ' calendar-day-selected-left';\n }\n if (dayDate === currentValues[1]) {\n addClass += ' calendar-day-selected-right';\n }\n }\n } else if (currentValues.indexOf(dayDate) >= 0) addClass += ' calendar-day-selected';\n // Weekend\n if (params.weekendDays.indexOf(weekDayIndex) >= 0) {\n addClass += ' calendar-day-weekend';\n }\n // Events\n let eventsHtml = '';\n hasEvents = false;\n if (params.events) {\n if (calendar.dateInRange(dayDate, params.events)) {\n hasEvents = true;\n }\n }\n if (hasEvents) {\n addClass += ' calendar-day-has-events';\n // prettier-ignore\n eventsHtml = `\n \n \n \n `;\n if (Array.isArray(params.events)) {\n const eventDots = [];\n params.events.forEach(ev => {\n const color = ev.color || '';\n if (eventDots.indexOf(color) < 0 && calendar.dateInRange(dayDate, ev)) {\n eventDots.push(color);\n }\n });\n // prettier-ignore\n eventsHtml = `\n \n ${eventDots.map(color => `\n \n `.trim()).join('')}\n \n `;\n }\n }\n // Custom Ranges\n if (params.rangesClasses) {\n for (let k = 0; k < params.rangesClasses.length; k += 1) {\n if (calendar.dateInRange(dayDate, params.rangesClasses[k].range)) {\n addClass += ` ${params.rangesClasses[k].cssClass}`;\n }\n }\n }\n // Disabled\n disabled = false;\n if (minDate && dayDate < minDate || maxDate && dayDate > maxDate) {\n disabled = true;\n }\n if (params.disabled) {\n if (calendar.dateInRange(dayDate, params.disabled)) {\n disabled = true;\n }\n }\n if (disabled) {\n addClass += ' calendar-day-disabled';\n }\n dayDate = new Date(dayDate);\n const dayYear = dayDate.getFullYear();\n const dayMonth = dayDate.getMonth();\n const dayNumberDisplay = calendar.dayFormatter(dayDate);\n // prettier-ignore\n rowHtml += `\n
                      \n ${dayNumberDisplay}${eventsHtml}\n
                      `.trim();\n }\n monthHtml += `
                      ${rowHtml}
                      `;\n }\n monthHtml = `
                      ${monthHtml}
                      `;\n return monthHtml;\n }\n renderWeekHeader() {\n const calendar = this;\n if (calendar.params.renderWeekHeader) {\n return calendar.params.renderWeekHeader.call(calendar);\n }\n const {\n params\n } = calendar;\n let weekDaysHtml = '';\n for (let i = 0; i < 7; i += 1) {\n const dayIndex = i + params.firstDay > 6 ? i - 7 + params.firstDay : i + params.firstDay;\n const dayName = calendar.dayNamesShort[dayIndex];\n weekDaysHtml += `
                      ${dayName}
                      `;\n }\n return $jsx(\"div\", {\n class: \"calendar-week-header\"\n }, weekDaysHtml);\n }\n renderMonthSelector() {\n const calendar = this;\n if (calendar.params.renderMonthSelector) {\n return calendar.params.renderMonthSelector.call(calendar);\n }\n return $jsx(\"div\", {\n class: \"calendar-month-selector\"\n }, $jsx(\"a\", {\n class: \"link icon-only calendar-prev-month-button\"\n }, $jsx(\"i\", {\n class: \"icon icon-prev\"\n })), calendar.params.monthPicker ? $jsx(\"a\", {\n class: \"current-month-value link\"\n }) : $jsx(\"span\", {\n class: \"current-month-value\"\n }), $jsx(\"a\", {\n class: \"link icon-only calendar-next-month-button\"\n }, $jsx(\"i\", {\n class: \"icon icon-next\"\n })));\n }\n renderYearSelector() {\n const calendar = this;\n if (calendar.params.renderYearSelector) {\n return calendar.params.renderYearSelector.call(calendar);\n }\n return $jsx(\"div\", {\n class: \"calendar-year-selector\"\n }, $jsx(\"a\", {\n class: \"link icon-only calendar-prev-year-button\"\n }, $jsx(\"i\", {\n class: \"icon icon-prev\"\n })), calendar.params.yearPicker ? $jsx(\"a\", {\n class: \"current-year-value link\"\n }) : $jsx(\"span\", {\n class: \"current-year-value\"\n }), $jsx(\"a\", {\n class: \"link icon-only calendar-next-year-button\"\n }, $jsx(\"i\", {\n class: \"icon icon-next\"\n })));\n }\n\n // eslint-disable-next-line\n renderTimeSelector() {\n const calendar = this;\n const value = calendar.value && calendar.value[0];\n let timeString;\n if (value) timeString = calendar.timeSelectorFormatter(value);\n return $jsx(\"div\", {\n class: \"calendar-time-selector\"\n }, $jsx(\"span\", null, calendar.params.timePickerLabel), $jsx(\"a\", {\n class: \"link\"\n }, timeString || calendar.params.timePickerPlaceholder));\n }\n renderHeader() {\n const calendar = this;\n if (calendar.params.renderHeader) {\n return calendar.params.renderHeader.call(calendar);\n }\n return $jsx(\"div\", {\n class: \"calendar-header\"\n }, $jsx(\"div\", {\n class: \"calendar-selected-date\"\n }, calendar.params.headerPlaceholder));\n }\n renderFooter() {\n const calendar = this;\n const app = calendar.app;\n if (calendar.params.renderFooter) {\n return calendar.params.renderFooter.call(calendar);\n }\n return $jsx(\"div\", {\n class: \"calendar-footer\"\n }, $jsx(\"a\", {\n class: `${app.theme === 'md' ? 'button button-round' : 'link'} calendar-close sheet-close popover-close`\n }, calendar.params.toolbarCloseText));\n }\n renderToolbar() {\n const calendar = this;\n if (calendar.params.renderToolbar) {\n return calendar.params.renderToolbar.call(calendar, calendar);\n }\n // prettier-ignore\n return $jsx(\"div\", {\n class: \"toolbar toolbar-top\"\n }, $jsx(\"div\", {\n class: \"toolbar-inner\"\n }, calendar.params.monthSelector ? calendar.renderMonthSelector() : '', calendar.params.yearSelector ? calendar.renderYearSelector() : ''));\n }\n // eslint-disable-next-line\n renderInline() {\n const calendar = this;\n const {\n cssClass,\n toolbar,\n header,\n footer,\n rangePicker,\n weekHeader\n } = calendar.params;\n const {\n value,\n hasTimePicker\n } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n return $jsx(\"div\", {\n class: `calendar calendar-inline ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`\n }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx(\"div\", {\n class: \"calendar-months\"\n }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter());\n }\n renderCustomModal() {\n const calendar = this;\n const {\n cssClass,\n toolbar,\n header,\n footer,\n rangePicker,\n weekHeader\n } = calendar.params;\n const {\n value,\n hasTimePicker\n } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n return $jsx(\"div\", {\n class: `calendar calendar-modal ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`\n }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx(\"div\", {\n class: \"calendar-months\"\n }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter());\n }\n renderSheet() {\n const calendar = this;\n const {\n cssClass,\n toolbar,\n header,\n footer,\n rangePicker,\n weekHeader\n } = calendar.params;\n const {\n value,\n hasTimePicker\n } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n return $jsx(\"div\", {\n class: `sheet-modal calendar calendar-sheet ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`\n }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx(\"div\", {\n class: \"sheet-modal-inner calendar-months\"\n }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter());\n }\n renderPopover() {\n const calendar = this;\n const {\n cssClass,\n toolbar,\n header,\n footer,\n rangePicker,\n weekHeader\n } = calendar.params;\n const {\n value,\n hasTimePicker\n } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n return $jsx(\"div\", {\n class: \"popover calendar-popover\"\n }, $jsx(\"div\", {\n class: \"popover-inner\"\n }, $jsx(\"div\", {\n class: `calendar ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`\n }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx(\"div\", {\n class: \"calendar-months\"\n }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter())));\n }\n render() {\n const calendar = this;\n const {\n params\n } = calendar;\n if (params.render) return params.render.call(calendar);\n if (!calendar.inline) {\n let modalType = params.openIn;\n if (modalType === 'auto') modalType = calendar.isPopover() ? 'popover' : 'sheet';\n if (modalType === 'popover') return calendar.renderPopover();\n if (modalType === 'sheet') return calendar.renderSheet();\n return calendar.renderCustomModal();\n }\n return calendar.renderInline();\n }\n openMonthPicker() {\n const calendar = this;\n const {\n $el,\n app\n } = calendar;\n if (!$el || !$el.length) return;\n $el.append('
                      ');\n calendar.monthPickerPopover = app.popover.create({\n el: $el.find('.calendar-month-picker-popover'),\n targetEl: $el.find('.calendar-month-selector'),\n backdrop: true,\n backdropUnique: true,\n on: {\n close() {\n calendar.closeMonthPicker();\n },\n closed() {\n if (calendar.monthPickerPopover.$el) calendar.monthPickerPopover.$el.remove();\n calendar.monthPickerPopover.destroy();\n if (calendar.monthPickerInstance) {\n calendar.monthPickerInstance.close();\n calendar.monthPickerInstance.destroy();\n }\n delete calendar.monthPickerInstance;\n delete calendar.monthPickerPopover;\n }\n }\n });\n calendar.monthPickerPopover.open();\n const localeMonth = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);\n const values = [];\n const displayValues = [];\n calendar.monthNames.forEach((m, index) => {\n values.push(index);\n displayValues.push(m);\n });\n calendar.monthPickerInstance = app.picker.create({\n containerEl: calendar.monthPickerPopover.$el.find('.calendar-month-picker'),\n value: [localeMonth],\n toolbar: calendar.params.monthPickerToolbar,\n rotateEffect: false,\n toolbarCloseText: calendar.params.monthPickerCloseText,\n cols: [{\n values,\n displayValues\n }]\n });\n }\n closeMonthPicker() {\n const calendar = this;\n if (calendar.monthPickerPopover && calendar.monthPickerPopover.opened) calendar.monthPickerPopover.close();\n const index = calendar.monthPickerInstance.value[0];\n const localeMonthIndex = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);\n const monthIndex = calendar.currentMonth;\n const diff = localeMonthIndex - monthIndex;\n const diffIndex = index - diff;\n calendar.setYearMonth(calendar.currentYear, diffIndex, 0);\n }\n openYearPicker() {\n const calendar = this;\n const {\n $el,\n app\n } = calendar;\n if (!$el || !$el.length) return;\n $el.append('
                      ');\n calendar.yearPickerPopover = app.popover.create({\n el: $el.find('.calendar-year-picker-popover'),\n targetEl: $el.find('.calendar-year-selector'),\n backdrop: true,\n backdropUnique: true,\n on: {\n close() {\n calendar.closeYearPicker();\n },\n closed() {\n if (calendar.yearPickerPopover.$el) calendar.yearPickerPopover.$el.remove();\n calendar.yearPickerPopover.destroy();\n if (calendar.yearPickerInstance) {\n calendar.yearPickerInstance.close();\n calendar.yearPickerInstance.destroy();\n }\n delete calendar.yearPickerInstance;\n delete calendar.yearPickerPopover;\n }\n }\n });\n calendar.yearPickerPopover.open();\n const currentYear = calendar.currentYear;\n let yearMin = calendar.params.yearPickerMin || new Date().getFullYear() - 100;\n if (calendar.params.minDate) {\n yearMin = Math.max(yearMin, new Date(calendar.params.minDate).getFullYear());\n }\n let yearMax = calendar.params.yearPickerMax || new Date().getFullYear() + 100;\n if (calendar.params.maxDate) {\n yearMax = Math.min(yearMax, new Date(calendar.params.maxDate).getFullYear());\n }\n const years = [];\n for (let i = yearMin; i <= yearMax; i += 1) {\n years.push(i);\n }\n calendar.yearPickerInstance = app.picker.create({\n containerEl: calendar.yearPickerPopover.$el.find('.calendar-year-picker'),\n value: [currentYear],\n toolbar: calendar.params.yearPickerToolbar,\n rotateEffect: false,\n toolbarCloseText: calendar.params.yearPickerCloseText,\n cols: [{\n values: years\n }]\n });\n }\n closeYearPicker() {\n const calendar = this;\n if (calendar.yearPickerPopover && calendar.yearPickerPopover.opened) calendar.yearPickerPopover.close();\n calendar.setYearMonth(calendar.yearPickerInstance.value[0], undefined, 0);\n }\n openTimePicker() {\n const calendar = this;\n const {\n $el,\n app,\n is12HoursFormat\n } = calendar;\n if (!$el || !$el.length) return;\n $el.append('
                      ');\n const hoursArr = [];\n const minutesArr = [];\n const hoursMin = is12HoursFormat ? 1 : 0;\n const hoursMax = is12HoursFormat ? 12 : 23;\n for (let i = hoursMin; i <= hoursMax; i += 1) {\n hoursArr.push(i);\n }\n for (let i = 0; i <= 59; i += 1) {\n minutesArr.push(i);\n }\n let value;\n if (calendar.value && calendar.value.length) {\n value = [calendar.value[0].getHours(), calendar.value[0].getMinutes()];\n } else {\n value = [new Date().getHours(), new Date().getMinutes()];\n }\n if (is12HoursFormat) {\n value.push(value[0] < 12 ? 'AM' : 'PM');\n if (value[0] > 12) value[0] -= 12;\n if (value[0] === 0) value[0] = 12;\n }\n calendar.timePickerPopover = app.popover.create({\n el: $el.find('.calendar-time-picker-popover'),\n targetEl: $el.find('.calendar-time-selector .link'),\n backdrop: true,\n backdropUnique: true,\n on: {\n close() {\n calendar.closeTimePicker();\n },\n closed() {\n if (calendar.timePickerPopover.$el) calendar.timePickerPopover.$el.remove();\n calendar.timePickerPopover.destroy();\n if (calendar.timePickerInstance) {\n calendar.timePickerInstance.close();\n calendar.timePickerInstance.destroy();\n }\n delete calendar.timePickerInstance;\n delete calendar.timePickerPopover;\n }\n }\n });\n calendar.timePickerPopover.open();\n calendar.timePickerInstance = app.picker.create({\n containerEl: calendar.timePickerPopover.$el.find('.calendar-time-picker'),\n value,\n toolbar: calendar.params.timePickerToolbar,\n rotateEffect: false,\n toolbarCloseText: calendar.params.timePickerCloseText,\n cols: [{\n values: hoursArr\n }, {\n divider: true,\n content: ':'\n }, {\n values: minutesArr,\n displayValues: minutesArr.map(m => m < 10 ? `0${m}` : m)\n }, ...(is12HoursFormat ? [{\n values: ['AM', 'PM']\n }] : [])]\n });\n }\n closeTimePicker() {\n const calendar = this;\n const {\n is12HoursFormat\n } = calendar;\n if (calendar.timePickerInstance) {\n const timePickerValue = calendar.timePickerInstance.value;\n let hours = parseInt(timePickerValue[0], 10);\n const minutes = parseInt(timePickerValue[1], 10);\n const period = calendar.timePickerInstance.value[2];\n if (is12HoursFormat) {\n if (period === 'AM' && hours === 12) {\n hours = 0;\n } else if (period === 'PM' && hours !== 12) {\n hours += 12;\n }\n }\n let value = calendar.value && calendar.value.length && calendar.value[0];\n if (!value) {\n value = new Date();\n value.setHours(hours, minutes, 0, 0);\n } else {\n value = new Date(value);\n value.setHours(hours, minutes);\n }\n calendar.setValue([value]);\n if (calendar.timePickerPopover && calendar.timePickerPopover.opened) calendar.timePickerPopover.close();\n }\n }\n onOpen() {\n const calendar = this;\n const {\n initialized,\n $el,\n app,\n $inputEl,\n inline,\n value,\n params\n } = calendar;\n calendar.closing = false;\n calendar.opened = true;\n calendar.opening = true;\n\n // Init main events\n calendar.attachCalendarEvents();\n const updateValue = !value && params.value;\n\n // Set value\n if (!initialized) {\n if (value) calendar.setValue(value, 0);else if (params.value) {\n calendar.setValue(calendar.normalizeValues(params.value), 0);\n }\n } else if (value) {\n calendar.setValue(value, 0);\n }\n\n // Update current month and year\n calendar.updateCurrentMonthYear();\n\n // Set initial translate\n calendar.monthsTranslate = 0;\n calendar.setMonthsTranslate();\n\n // Update input value\n if (updateValue) calendar.updateValue();else if (params.header && value) {\n calendar.updateValue(true);\n }\n\n // Extra focus\n if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n calendar.initialized = true;\n calendar.$months.each(monthEl => {\n calendar.emit('local::monthAdd calendarMonthAdd', monthEl);\n });\n\n // Trigger events\n if ($el) {\n $el.trigger('calendar:open');\n }\n if ($inputEl) {\n $inputEl.trigger('calendar:open');\n }\n calendar.emit('local::open calendarOpen', calendar);\n }\n onOpened() {\n const calendar = this;\n calendar.opening = false;\n if (calendar.$el) {\n calendar.$el.trigger('calendar:opened');\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:opened');\n }\n calendar.emit('local::opened calendarOpened', calendar);\n }\n onClose() {\n const calendar = this;\n const app = calendar.app;\n calendar.opening = false;\n calendar.closing = true;\n if (calendar.$inputEl) {\n if (app.theme === 'md') {\n calendar.$inputEl.trigger('blur');\n } else {\n const validate = calendar.$inputEl.attr('validate');\n const required = calendar.$inputEl.attr('required');\n if (validate && required) {\n app.input.validate(calendar.$inputEl);\n }\n }\n }\n if (calendar.detachCalendarEvents) {\n calendar.detachCalendarEvents();\n }\n if (calendar.$el) {\n calendar.$el.trigger('calendar:close');\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:close');\n }\n calendar.emit('local::close calendarClose', calendar);\n }\n onClosed() {\n const calendar = this;\n calendar.opened = false;\n calendar.closing = false;\n if (!calendar.inline) {\n nextTick(() => {\n if (calendar.modal && calendar.modal.el && calendar.modal.destroy) {\n if (!calendar.params.routableModals) {\n calendar.modal.destroy();\n }\n }\n delete calendar.modal;\n });\n }\n if (calendar.timePickerInstance) {\n if (calendar.timePickerInstance.destroy) calendar.timePickerInstance.destroy();\n delete calendar.timePickerInstance;\n }\n if (calendar.$el) {\n calendar.$el.trigger('calendar:closed');\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:closed');\n }\n calendar.emit('local::closed calendarClosed', calendar);\n }\n open() {\n const calendar = this;\n const {\n app,\n opened,\n inline,\n $inputEl,\n params\n } = calendar;\n if (opened) return;\n if (inline) {\n calendar.$el = $(calendar.render());\n calendar.$el[0].f7Calendar = calendar;\n calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');\n calendar.$months = calendar.$wrapperEl.find('.calendar-month');\n calendar.$containerEl.append(calendar.$el);\n calendar.onOpen();\n calendar.onOpened();\n return;\n }\n let modalType = params.openIn;\n if (modalType === 'auto') {\n modalType = calendar.isPopover() ? 'popover' : 'sheet';\n }\n const modalContent = calendar.render();\n const modalParams = {\n targetEl: $inputEl,\n scrollToEl: params.scrollToInput ? $inputEl : undefined,\n content: modalContent,\n backdrop: params.backdrop === true || (modalType === 'popover' || modalType === 'customModal') && app.params.popover.backdrop !== false && params.backdrop !== false,\n closeByBackdropClick: params.closeByBackdropClick,\n on: {\n open() {\n const modal = this;\n calendar.modal = modal;\n calendar.$el = modalType === 'popover' ? modal.$el.find('.calendar') : modal.$el;\n calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');\n calendar.$months = calendar.$wrapperEl.find('.calendar-month');\n calendar.$el[0].f7Calendar = calendar;\n if (modalType === 'customModal') {\n $(calendar.$el).find('.calendar-close').once('click', () => {\n calendar.close();\n });\n }\n calendar.onOpen();\n },\n opened() {\n calendar.onOpened();\n },\n close() {\n calendar.onClose();\n },\n closed() {\n calendar.onClosed();\n }\n }\n };\n if (modalType === 'sheet') {\n modalParams.push = params.sheetPush;\n modalParams.swipeToClose = params.sheetSwipeToClose;\n }\n if (params.routableModals && calendar.view) {\n calendar.view.router.navigate({\n url: calendar.url,\n route: {\n path: calendar.url,\n [modalType]: modalParams\n }\n });\n } else {\n calendar.modal = app[modalType].create(modalParams);\n calendar.modal.open();\n }\n }\n close() {\n const calendar = this;\n const {\n opened,\n inline\n } = calendar;\n if (!opened) return;\n if (inline) {\n calendar.onClose();\n calendar.onClosed();\n return;\n }\n if (calendar.params.routableModals && calendar.view) {\n calendar.view.router.back();\n } else {\n calendar.modal.close();\n }\n }\n init() {\n const calendar = this;\n calendar.initInput();\n if (calendar.inline) {\n calendar.open();\n calendar.emit('local::init calendarInit', calendar);\n return;\n }\n if (!calendar.initialized && calendar.params.value) {\n calendar.setValue(calendar.normalizeValues(calendar.params.value));\n }\n\n // Attach input Events\n if (calendar.$inputEl) {\n calendar.attachInputEvents();\n }\n if (calendar.params.closeByOutsideClick) {\n calendar.attachHtmlEvents();\n }\n calendar.emit('local::init calendarInit', calendar);\n }\n destroy() {\n const calendar = this;\n if (calendar.destroyed) return;\n const {\n $el\n } = calendar;\n calendar.emit('local::beforeDestroy calendarBeforeDestroy', calendar);\n if ($el) $el.trigger('calendar:beforedestroy');\n calendar.close();\n\n // Detach Events\n if (calendar.$inputEl) {\n calendar.detachInputEvents();\n }\n if (calendar.params.closeByOutsideClick) {\n calendar.detachHtmlEvents();\n }\n if (calendar.timePickerInstance) {\n if (calendar.timePickerInstance.destroy) calendar.timePickerInstance.destroy();\n delete calendar.timePickerInstance;\n }\n if ($el && $el.length) delete calendar.$el[0].f7Calendar;\n deleteProps(calendar);\n calendar.destroyed = true;\n }\n}\nexport default Calendar;","import ConstructorMethods from '../../shared/constructor-methods.js';\nimport Calendar from './calendar-class.js';\nimport $ from '../../shared/dom7.js';\nexport default {\n name: 'calendar',\n static: {\n Calendar\n },\n create() {\n const app = this;\n app.calendar = ConstructorMethods({\n defaultSelector: '.calendar',\n constructor: Calendar,\n app,\n domProp: 'f7Calendar'\n });\n app.calendar.close = function close(el) {\n if (el === void 0) {\n el = '.calendar';\n }\n const $el = $(el);\n if ($el.length === 0) return;\n const calendar = $el[0].f7Calendar;\n if (!calendar || calendar && !calendar.opened) return;\n calendar.close();\n };\n },\n params: {\n calendar: {\n // Calendar settings\n dateFormat: undefined,\n monthNames: 'auto',\n monthNamesShort: 'auto',\n dayNames: 'auto',\n dayNamesShort: 'auto',\n locale: undefined,\n firstDay: 1,\n // First day of the week, Monday\n weekendDays: [0, 6],\n // Sunday and Saturday\n multiple: false,\n rangePicker: false,\n rangePickerMinDays: 1,\n // when calendar is used as rangePicker\n rangePickerMaxDays: 0,\n // when calendar is used as rangePicker, 0 means unlimited\n direction: 'horizontal',\n // or 'vertical'\n minDate: null,\n maxDate: null,\n disabled: null,\n // dates range of disabled days\n events: null,\n // dates range of days with events\n rangesClasses: null,\n // array with custom classes date ranges\n touchMove: true,\n animate: true,\n closeOnSelect: false,\n monthSelector: true,\n monthPicker: true,\n monthPickerToolbar: true,\n monthPickerCloseText: 'Done',\n yearSelector: true,\n yearPicker: true,\n yearPickerToolbar: true,\n yearPickerMin: undefined,\n yearPickerMax: undefined,\n yearPickerCloseText: 'Done',\n timePicker: false,\n timePickerToolbar: true,\n timePickerLabel: 'Time',\n timePickerFormat: {\n hour: 'numeric',\n minute: 'numeric'\n },\n timePickerPlaceholder: 'Select time',\n timePickerCloseText: 'Done',\n weekHeader: true,\n value: null,\n // Common opener settings\n containerEl: null,\n openIn: 'auto',\n // or 'popover' or 'sheet' or 'customModal'\n sheetPush: false,\n sheetSwipeToClose: undefined,\n formatValue: null,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n header: false,\n headerPlaceholder: 'Select date',\n toolbar: true,\n toolbarCloseText: 'Done',\n footer: false,\n cssClass: null,\n routableModals: false,\n view: null,\n url: 'date/',\n backdrop: null,\n closeByBackdropClick: true,\n // Render functions\n renderWeekHeader: null,\n renderMonths: null,\n renderMonth: null,\n renderMonthSelector: null,\n renderYearSelector: null,\n renderHeader: null,\n renderFooter: null,\n renderToolbar: null,\n renderInline: null,\n renderPopover: null,\n renderSheet: null,\n render: null\n }\n }\n};","import $ from '../../shared/dom7.js';\nexport default function pickerColumn(colEl, updateItems) {\n const picker = this;\n // const app = picker.app;\n const $colEl = $(colEl);\n const colIndex = $colEl.index();\n const col = picker.cols[colIndex];\n if (col.divider) return;\n col.$el = $colEl;\n col.el = $colEl[0];\n col.$itemsEl = col.$el.find('.picker-items');\n col.items = col.$itemsEl.find('.picker-item');\n let itemHeight;\n let colHeight;\n col.replaceValues = function replaceColValues(values, displayValues) {\n col.detachEvents();\n col.values = values;\n col.displayValues = displayValues;\n col.$itemsEl.html(picker.renderColumn(col, true));\n col.items = col.$itemsEl.find('.picker-item');\n col.calcSize();\n col.setValue(col.values[0], true);\n col.attachEvents();\n };\n col.calcSize = function calcColSize() {\n colHeight = col.$el[0].offsetHeight;\n itemHeight = col.items[0].offsetHeight;\n const hadPadding = col.el.style.getPropertyValue('--f7-picker-scroll-padding');\n col.el.style.setProperty('--f7-picker-scroll-padding', `${(colHeight - itemHeight) / 2}px`);\n if (!hadPadding) {\n col.$itemsEl[0].scrollTop = 0;\n }\n };\n col.setValue = function setColValue(newValue, valueCallbacks) {\n const newActiveIndex = col.$itemsEl.find(`.picker-item[data-picker-value=\"${newValue}\"]`).index();\n if (typeof newActiveIndex === 'undefined' || newActiveIndex === -1) {\n return;\n }\n const newScrollTop = newActiveIndex * itemHeight;\n col.$itemsEl[0].scrollTop = newScrollTop;\n\n // Update items\n col.updateItems(newActiveIndex, newScrollTop, valueCallbacks);\n };\n col.updateItems = function updateColItems(activeIndex, scrollTop, valueCallbacks) {\n if (typeof scrollTop === 'undefined') {\n // eslint-disable-next-line\n scrollTop = col.$itemsEl[0].scrollTop;\n }\n\n /* eslint-disable no-param-reassign */\n if (typeof activeIndex === 'undefined') {\n activeIndex = Math.round(scrollTop / itemHeight);\n }\n if (activeIndex < 0) activeIndex = 0;\n if (activeIndex >= col.items.length) activeIndex = col.items.length - 1;\n /* eslint-enable no-param-reassign */\n const previousActiveIndex = col.activeIndex;\n col.activeIndex = activeIndex;\n col.$itemsEl.find('.picker-item-selected').removeClass('picker-item-selected');\n const selectedItem = col.items.eq(activeIndex);\n selectedItem.addClass('picker-item-selected').children().transform('');\n // Set 3D rotate effect\n if (picker.params.rotateEffect) {\n col.items.each(itemEl => {\n const $itemEl = $(itemEl);\n const itemOffset = itemEl.offsetTop - (colHeight - itemHeight) / 2 - scrollTop;\n const percentage = itemOffset / itemHeight;\n const itemsFit = Math.ceil(col.height / itemHeight / 2) + 1;\n let angle = -24 * percentage;\n if (angle > 180) angle = 180;\n if (angle < -180) angle = -180;\n if (Math.abs(percentage) > itemsFit) {\n $itemEl.addClass('picker-item-far');\n } else {\n $itemEl.removeClass('picker-item-far');\n }\n $itemEl.children('span').transform(`translate3d(0, ${-percentage * itemHeight}px, -100px) rotateX(${angle}deg)`);\n });\n }\n if (valueCallbacks || typeof valueCallbacks === 'undefined') {\n // Update values\n col.value = selectedItem.attr('data-picker-value');\n col.displayValue = col.displayValues ? col.displayValues[activeIndex] : col.value;\n // On change callback\n if (previousActiveIndex !== activeIndex) {\n if (col.onChange) {\n col.onChange(picker, col.value, col.displayValue);\n }\n picker.updateValue();\n }\n }\n };\n function handleScroll() {\n col.updateItems();\n }\n function handleClick() {\n const value = $(this).attr('data-picker-value');\n col.setValue(value);\n }\n col.attachEvents = function attachColEvents() {\n col.$itemsEl.on('scroll', handleScroll);\n col.items.on('click', handleClick);\n };\n col.detachEvents = function detachColEvents() {\n col.items.off('click', handleClick);\n };\n col.init = function initCol() {\n col.calcSize();\n if (colIndex === 0) col.$el.addClass('picker-column-first');\n if (colIndex === picker.cols.length - 1) col.$el.addClass('picker-column-last');\n if (picker.params.freeMode) col.$el.addClass('picker-column-free-mode');\n // Update items on init\n if (updateItems) col.updateItems(0);\n col.attachEvents();\n };\n col.destroy = function destroyCol() {\n col.detachEvents();\n };\n col.init();\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport pickerColumn from './picker-column.js';\n\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Picker extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const picker = this;\n const device = getDevice();\n const window = getWindow();\n picker.params = extend({}, app.params.picker, params);\n let $containerEl;\n if (picker.params.containerEl) {\n $containerEl = $(picker.params.containerEl);\n if ($containerEl.length === 0) return picker;\n }\n let $inputEl;\n if (picker.params.inputEl) {\n $inputEl = $(picker.params.inputEl);\n }\n let $scrollToEl = picker.params.scrollToInput ? $inputEl : undefined;\n if (picker.params.scrollToEl) {\n const scrollToEl = $(picker.params.scrollToEl);\n if (scrollToEl.length > 0) {\n $scrollToEl = scrollToEl;\n }\n }\n extend(picker, {\n app,\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n needsOriginFix: device.ios || window.navigator.userAgent.toLowerCase().indexOf('safari') >= 0 && window.navigator.userAgent.toLowerCase().indexOf('chrome') < 0 && !device.android,\n cols: [],\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n $scrollToEl,\n initialized: false,\n opened: false,\n url: picker.params.url\n });\n function onResize() {\n picker.resizeCols();\n }\n function onInputClick() {\n picker.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n let htmlTouchStartTarget = null;\n function onHtmlTouchStart(e) {\n htmlTouchStartTarget = e.target;\n }\n function onHtmlClick(e) {\n if (picker.destroyed || !picker.params) return;\n const $targetEl = $(e.target);\n if (picker.isPopover()) return;\n if (!picker.opened || picker.closing) return;\n if ($targetEl.closest('[class*=\"backdrop\"]').length) return;\n if ($inputEl && $inputEl.length > 0) {\n if (htmlTouchStartTarget === e.target && $targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal').length === 0) {\n picker.close();\n }\n } else if ($(e.target).closest('.sheet-modal').length === 0) {\n picker.close();\n }\n }\n\n // Events\n extend(picker, {\n attachResizeEvent() {\n app.on('resize', onResize);\n },\n detachResizeEvent() {\n app.off('resize', onResize);\n },\n attachInputEvents() {\n picker.$inputEl.on('click', onInputClick);\n if (picker.params.inputReadOnly) {\n picker.$inputEl.on('focus mousedown', onInputFocus);\n if (picker.$inputEl[0]) {\n picker.$inputEl[0].f7ValidateReadonly = true;\n }\n }\n },\n detachInputEvents() {\n picker.$inputEl.off('click', onInputClick);\n if (picker.params.inputReadOnly) {\n picker.$inputEl.off('focus mousedown', onInputFocus);\n if (picker.$inputEl[0]) {\n delete picker.$inputEl[0].f7ValidateReadonly;\n }\n }\n },\n attachHtmlEvents() {\n app.on('click', onHtmlClick);\n app.on('touchstart', onHtmlTouchStart);\n },\n detachHtmlEvents() {\n app.off('click', onHtmlClick);\n app.off('touchstart', onHtmlTouchStart);\n }\n });\n picker.init();\n return picker;\n }\n get view() {\n const {\n app,\n params,\n $inputEl\n } = this;\n let view;\n if (params.view) {\n view = params.view;\n } else if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view) view = app.views.main;\n return view;\n }\n initInput() {\n const picker = this;\n if (!picker.$inputEl) return;\n if (picker.params.inputReadOnly) picker.$inputEl.prop('readOnly', true);\n }\n resizeCols() {\n const picker = this;\n if (!picker.opened) return;\n for (let i = 0; i < picker.cols.length; i += 1) {\n if (!picker.cols[i].divider) {\n picker.cols[i].calcSize();\n picker.cols[i].setValue(picker.cols[i].value, false);\n }\n }\n }\n isPopover() {\n const picker = this;\n const {\n app,\n modal,\n params\n } = picker;\n const device = getDevice();\n if (params.openIn === 'sheet') return false;\n if (modal && modal.type !== 'popover') return false;\n if (!picker.inline && picker.inputEl) {\n if (params.openIn === 'popover') return true;\n if (device.ios) {\n return !!device.ipad;\n }\n if (app.width >= 768) {\n return true;\n }\n }\n return false;\n }\n formatValue() {\n const picker = this;\n const {\n value,\n displayValue\n } = picker;\n if (picker.params.formatValue) {\n return picker.params.formatValue.call(picker, value, displayValue);\n }\n return value.join(' ');\n }\n setValue(values) {\n const picker = this;\n let valueIndex = 0;\n if (picker.cols.length === 0) {\n picker.value = values;\n picker.updateValue(values);\n return;\n }\n for (let i = 0; i < picker.cols.length; i += 1) {\n if (picker.cols[i] && !picker.cols[i].divider) {\n picker.cols[i].setValue(values[valueIndex]);\n valueIndex += 1;\n }\n }\n }\n getValue() {\n const picker = this;\n return picker.value;\n }\n updateValue(forceValues) {\n const picker = this;\n const newValue = forceValues || [];\n const newDisplayValue = [];\n let column;\n if (picker.cols.length === 0) {\n const noDividerColumns = picker.params.cols.filter(c => !c.divider);\n for (let i = 0; i < noDividerColumns.length; i += 1) {\n column = noDividerColumns[i];\n if (column.displayValues !== undefined && column.values !== undefined && column.values.indexOf(newValue[i]) !== -1) {\n newDisplayValue.push(column.displayValues[column.values.indexOf(newValue[i])]);\n } else {\n newDisplayValue.push(newValue[i]);\n }\n }\n } else {\n for (let i = 0; i < picker.cols.length; i += 1) {\n if (!picker.cols[i].divider) {\n newValue.push(picker.cols[i].value);\n newDisplayValue.push(picker.cols[i].displayValue);\n }\n }\n }\n if (newValue.indexOf(undefined) >= 0) {\n return;\n }\n picker.value = newValue;\n picker.displayValue = newDisplayValue;\n picker.emit('local::change pickerChange', picker, picker.value, picker.displayValue);\n if (picker.inputEl) {\n picker.$inputEl.val(picker.formatValue());\n picker.$inputEl.trigger('change');\n }\n }\n initColumn(colEl, updateItems) {\n const picker = this;\n pickerColumn.call(picker, colEl, updateItems);\n }\n // eslint-disable-next-line\n destroyColumn(colEl) {\n const picker = this;\n const $colEl = $(colEl);\n const index = $colEl.index();\n if (picker.cols[index] && picker.cols[index].destroy) {\n picker.cols[index].destroy();\n }\n }\n renderToolbar() {\n const picker = this;\n if (picker.params.renderToolbar) return picker.params.renderToolbar.call(picker, picker);\n return $jsx(\"div\", {\n class: \"toolbar toolbar-top\"\n }, $jsx(\"div\", {\n class: \"toolbar-inner\"\n }, $jsx(\"div\", {\n class: \"left\"\n }), $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link sheet-close popover-close\"\n }, picker.params.toolbarCloseText))));\n }\n // eslint-disable-next-line\n renderColumn(col, onlyItems) {\n const colClasses = `picker-column ${col.textAlign ? `picker-column-${col.textAlign}` : ''} ${col.cssClass || ''}`;\n let columnHtml;\n let columnItemsHtml;\n if (col.divider) {\n // prettier-ignore\n columnHtml = `\n
                      ${col.content}
                      \n `;\n } else {\n // prettier-ignore\n columnItemsHtml = col.values.map((value, index) => `\n
                      \n ${col.displayValues ? col.displayValues[index] : value}\n
                      \n `).join('');\n // prettier-ignore\n columnHtml = `\n
                      \n
                      ${columnItemsHtml}
                      \n
                      \n `;\n }\n return onlyItems ? columnItemsHtml.trim() : columnHtml.trim();\n }\n renderInline() {\n const picker = this;\n const {\n rotateEffect,\n cssClass,\n toolbar\n } = picker.params;\n const inlineHtml = $jsx(\"div\", {\n class: `picker picker-inline ${rotateEffect ? 'picker-3d' : ''} ${cssClass || ''}`\n }, toolbar && picker.renderToolbar(), $jsx(\"div\", {\n class: \"picker-columns\"\n }, picker.cols.map(col => picker.renderColumn(col)), $jsx(\"div\", {\n class: \"picker-center-highlight\"\n })));\n return inlineHtml;\n }\n renderSheet() {\n const picker = this;\n const {\n rotateEffect,\n cssClass,\n toolbar\n } = picker.params;\n const sheetHtml = $jsx(\"div\", {\n class: `sheet-modal picker picker-sheet ${rotateEffect ? 'picker-3d' : ''} ${cssClass || ''}`\n }, toolbar && picker.renderToolbar(), $jsx(\"div\", {\n class: \"sheet-modal-inner picker-columns\"\n }, picker.cols.map(col => picker.renderColumn(col)), $jsx(\"div\", {\n class: \"picker-center-highlight\"\n })));\n return sheetHtml;\n }\n renderPopover() {\n const picker = this;\n const {\n rotateEffect,\n cssClass,\n toolbar\n } = picker.params;\n const popoverHtml = $jsx(\"div\", {\n class: \"popover picker-popover\"\n }, $jsx(\"div\", {\n class: \"popover-inner\"\n }, $jsx(\"div\", {\n class: `picker ${rotateEffect ? 'picker-3d' : ''} ${cssClass || ''}`\n }, toolbar && picker.renderToolbar(), $jsx(\"div\", {\n class: \"picker-columns\"\n }, picker.cols.map(col => picker.renderColumn(col)), $jsx(\"div\", {\n class: \"picker-center-highlight\"\n })))));\n return popoverHtml;\n }\n render() {\n const picker = this;\n if (picker.params.render) return picker.params.render.call(picker);\n if (!picker.inline) {\n if (picker.isPopover()) return picker.renderPopover();\n return picker.renderSheet();\n }\n return picker.renderInline();\n }\n onOpen() {\n const picker = this;\n const {\n initialized,\n $el,\n app,\n $inputEl,\n inline,\n value,\n params\n } = picker;\n picker.opened = true;\n picker.closing = false;\n picker.opening = true;\n\n // Init main events\n picker.attachResizeEvent();\n\n // Init cols\n $el.find('.picker-column').each(colEl => {\n let updateItems = true;\n if (!initialized && params.value || initialized && value) {\n updateItems = false;\n }\n picker.initColumn(colEl, updateItems);\n });\n\n // Set value\n if (!initialized) {\n if (value) picker.setValue(value);else if (params.value) {\n picker.setValue(params.value);\n }\n } else if (value) {\n picker.setValue(value);\n }\n\n // Extra focus\n if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n picker.initialized = true;\n\n // Trigger events\n if ($el) {\n $el.trigger('picker:open');\n }\n if ($inputEl) {\n $inputEl.trigger('picker:open');\n }\n picker.emit('local::open pickerOpen', picker);\n }\n onOpened() {\n const picker = this;\n picker.opening = false;\n if (picker.$el) {\n picker.$el.trigger('picker:opened');\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:opened');\n }\n picker.emit('local::opened pickerOpened', picker);\n }\n onClose() {\n const picker = this;\n const app = picker.app;\n picker.opening = false;\n picker.closing = true;\n\n // Detach events\n picker.detachResizeEvent();\n picker.cols.forEach(col => {\n if (col.destroy) col.destroy();\n });\n if (picker.$inputEl) {\n if (app.theme === 'md') {\n picker.$inputEl.trigger('blur');\n } else {\n const validate = picker.$inputEl.attr('validate');\n const required = picker.$inputEl.attr('required');\n if (validate && required) {\n app.input.validate(picker.$inputEl);\n }\n }\n }\n if (picker.$el) {\n picker.$el.trigger('picker:close');\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:close');\n }\n picker.emit('local::close pickerClose', picker);\n }\n onClosed() {\n const picker = this;\n picker.opened = false;\n picker.closing = false;\n if (!picker.inline) {\n nextTick(() => {\n if (picker.modal && picker.modal.el && picker.modal.destroy) {\n if (!picker.params.routableModals) {\n picker.modal.destroy();\n }\n }\n delete picker.modal;\n });\n }\n if (picker.$el) {\n picker.$el.trigger('picker:closed');\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:closed');\n }\n picker.emit('local::closed pickerClosed', picker);\n }\n open() {\n const picker = this;\n const {\n app,\n opened,\n inline,\n $inputEl,\n $scrollToEl,\n params\n } = picker;\n if (opened) return;\n if (picker.cols.length === 0 && params.cols.length) {\n params.cols.forEach(col => {\n picker.cols.push(col);\n });\n }\n if (inline) {\n picker.$el = $(picker.render());\n picker.$el[0].f7Picker = picker;\n picker.$containerEl.append(picker.$el);\n picker.onOpen();\n picker.onOpened();\n return;\n }\n const isPopover = picker.isPopover();\n const modalType = isPopover ? 'popover' : 'sheet';\n const modalParams = {\n targetEl: $inputEl,\n scrollToEl: $scrollToEl,\n content: picker.render(),\n backdrop: typeof params.backdrop !== 'undefined' ? params.backdrop : isPopover,\n on: {\n open() {\n const modal = this;\n picker.modal = modal;\n picker.$el = isPopover ? modal.$el.find('.picker') : modal.$el;\n picker.$el[0].f7Picker = picker;\n picker.onOpen();\n },\n opened() {\n picker.onOpened();\n },\n close() {\n picker.onClose();\n },\n closed() {\n picker.onClosed();\n }\n }\n };\n if (modalType === 'sheet') {\n modalParams.push = params.sheetPush;\n modalParams.swipeToClose = params.sheetSwipeToClose;\n }\n if (params.routableModals && picker.view) {\n picker.view.router.navigate({\n url: picker.url,\n route: {\n path: picker.url,\n [modalType]: modalParams\n }\n });\n } else {\n picker.modal = app[modalType].create(modalParams);\n picker.modal.open();\n }\n }\n close() {\n const picker = this;\n const {\n opened,\n inline\n } = picker;\n if (!opened) return;\n if (inline) {\n picker.onClose();\n picker.onClosed();\n return;\n }\n if (picker.params.routableModals && picker.view) {\n picker.view.router.back();\n } else {\n picker.modal.close();\n }\n }\n init() {\n const picker = this;\n picker.initInput();\n if (picker.inline) {\n picker.open();\n picker.emit('local::init pickerInit', picker);\n return;\n }\n if (!picker.initialized && picker.params.value) {\n picker.setValue(picker.params.value);\n }\n\n // Attach input Events\n if (picker.$inputEl) {\n picker.attachInputEvents();\n }\n if (picker.params.closeByOutsideClick) {\n picker.attachHtmlEvents();\n }\n picker.emit('local::init pickerInit', picker);\n }\n destroy() {\n const picker = this;\n if (picker.destroyed) return;\n const {\n $el\n } = picker;\n picker.emit('local::beforeDestroy pickerBeforeDestroy', picker);\n if ($el) $el.trigger('picker:beforedestroy');\n picker.close();\n\n // Detach Events\n if (picker.$inputEl) {\n picker.detachInputEvents();\n }\n if (picker.params.closeByOutsideClick) {\n picker.detachHtmlEvents();\n }\n if ($el && $el.length) delete picker.$el[0].f7Picker;\n deleteProps(picker);\n picker.destroyed = true;\n }\n}\nexport default Picker;","import $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport Picker from './picker-class.js';\nexport default {\n name: 'picker',\n static: {\n Picker\n },\n create() {\n const app = this;\n app.picker = ConstructorMethods({\n defaultSelector: '.picker',\n constructor: Picker,\n app,\n domProp: 'f7Picker'\n });\n app.picker.close = function close(el) {\n if (el === void 0) {\n el = '.picker';\n }\n const $el = $(el);\n if ($el.length === 0) return;\n const picker = $el[0].f7Picker;\n if (!picker || picker && !picker.opened) return;\n picker.close();\n };\n },\n params: {\n picker: {\n // Picker settings\n rotateEffect: false,\n freeMode: false,\n cols: [],\n // Common opener settings\n containerEl: null,\n openIn: 'auto',\n // or 'popover' or 'sheet'\n sheetPush: false,\n sheetSwipeToClose: undefined,\n backdrop: undefined,\n // uses Popover or Sheet defaults\n formatValue: null,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n scrollToEl: undefined,\n toolbar: true,\n toolbarCloseText: 'Done',\n cssClass: null,\n routableModals: false,\n view: null,\n url: 'select/',\n // Render functions\n renderToolbar: null,\n render: null\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nconst InfiniteScroll = {\n handle(el, e) {\n const app = this;\n const $el = $(el);\n const scrollTop = $el[0].scrollTop;\n const scrollHeight = $el[0].scrollHeight;\n const height = $el[0].offsetHeight;\n let distance = $el[0].getAttribute('data-infinite-distance');\n const virtualListContainer = $el.find('.virtual-list');\n let virtualList;\n const onTop = $el.hasClass('infinite-scroll-top');\n if (!distance) distance = 50;\n if (typeof distance === 'string' && distance.indexOf('%') >= 0) {\n distance = parseInt(distance, 10) / 100 * height;\n }\n if (distance > height) distance = height;\n if (onTop) {\n if (scrollTop < distance) {\n $el.trigger('infinite', e);\n app.emit('infinite', $el[0], e);\n }\n } else if (scrollTop + height >= scrollHeight - distance) {\n if (virtualListContainer.length > 0) {\n virtualList = virtualListContainer.eq(-1)[0].f7VirtualList;\n if (virtualList && !virtualList.reachEnd && !virtualList.params.updatableScroll) {\n return;\n }\n }\n $el.trigger('infinite', e);\n app.emit('infinite', $el[0], e);\n }\n },\n create(el) {\n const $el = $(el);\n const app = this;\n function scrollHandler(e) {\n app.infiniteScroll.handle(this, e);\n }\n $el.each(element => {\n element.f7InfiniteScrollHandler = scrollHandler;\n element.addEventListener('scroll', element.f7InfiniteScrollHandler);\n });\n },\n destroy(el) {\n const $el = $(el);\n $el.each(element => {\n element.removeEventListener('scroll', element.f7InfiniteScrollHandler);\n delete element.f7InfiniteScrollHandler;\n });\n }\n};\nexport default {\n name: 'infiniteScroll',\n create() {\n const app = this;\n bindMethods(app, {\n infiniteScroll: InfiniteScroll\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n const $isEls = $tabEl.find('.infinite-scroll-content');\n if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);\n $isEls.each(el => {\n app.infiniteScroll.create(el);\n });\n },\n tabBeforeRemove(tabEl) {\n const $tabEl = $(tabEl);\n const app = this;\n const $isEls = $tabEl.find('.infinite-scroll-content');\n if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);\n $isEls.each(el => {\n app.infiniteScroll.destroy(el);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.infinite-scroll-content').each(el => {\n app.infiniteScroll.create(el);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.infinite-scroll-content').each(el => {\n app.infiniteScroll.destroy(el);\n });\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nclass PullToRefresh extends Framework7Class {\n constructor(app, el) {\n super({}, [app]);\n const ptr = this;\n const device = getDevice();\n const support = getSupport();\n const $el = $(el);\n const $preloaderEl = $el.find('.ptr-preloader');\n ptr.$el = $el;\n ptr.el = $el[0];\n ptr.app = app;\n ptr.bottom = ptr.$el.hasClass('ptr-bottom');\n\n // Extend defaults with modules params\n ptr.useModulesParams({});\n const isMaterial = app.theme === 'md';\n const isIos = app.theme === 'ios';\n\n // Done\n ptr.done = function done() {\n const $transitionTarget = isMaterial ? $preloaderEl : $el;\n const onTranstionEnd = e => {\n if ($(e.target).closest($preloaderEl).length) return;\n $el.removeClass('ptr-transitioning ptr-pull-up ptr-pull-down ptr-closing');\n $el.trigger('ptr:done');\n ptr.emit('local::done ptrDone', $el[0]);\n $transitionTarget.off('transitionend', onTranstionEnd);\n };\n $transitionTarget.on('transitionend', onTranstionEnd);\n $el.removeClass('ptr-refreshing').addClass('ptr-transitioning ptr-closing');\n return ptr;\n };\n ptr.refresh = function refresh() {\n if ($el.hasClass('ptr-refreshing')) return ptr;\n $el.addClass('ptr-transitioning ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n return ptr;\n };\n\n // Mousewheel\n ptr.mousewheel = $el.attr('data-ptr-mousewheel') === 'true';\n\n // Events handling\n let touchId;\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let isScrolling;\n let touchesDiff;\n let refresh = false;\n let useTranslate = false;\n let forceUseTranslate = false;\n let startTranslate = 0;\n let translate;\n let scrollTop;\n let wasScrolled;\n let triggerDistance;\n let dynamicTriggerDistance;\n let pullStarted;\n let hasNavbar = false;\n let scrollHeight;\n let offsetHeight;\n let maxScrollTop;\n const $pageEl = $el.parents('.page');\n if ($pageEl.find('.navbar').length > 0 || $pageEl.parents('.view').children('.navbars').length > 0) hasNavbar = true;\n if ($pageEl.hasClass('no-navbar')) hasNavbar = false;\n if (!ptr.bottom) {\n const pageNavbarEl = app.navbar.getElByPage($pageEl[0]);\n if (pageNavbarEl) {\n const $pageNavbarEl = $(pageNavbarEl);\n const isLargeTransparent = $pageNavbarEl.hasClass('navbar-large-transparent') || $pageNavbarEl.hasClass('navbar-large') && $pageNavbarEl.hasClass('navbar-transparent');\n const isTransparent = $pageNavbarEl.hasClass('navbar-transparent') && !$pageNavbarEl.hasClass('navbar-large');\n if (isLargeTransparent) {\n $el.addClass('ptr-with-navbar-large-transparent');\n } else if (isTransparent) {\n $el.addClass('ptr-with-navbar-transparent');\n }\n }\n }\n if (!hasNavbar && !ptr.bottom) $el.addClass('ptr-no-navbar');\n\n // Define trigger distance\n if ($el.attr('data-ptr-distance')) {\n dynamicTriggerDistance = true;\n } else if (isMaterial) {\n triggerDistance = 66;\n } else if (isIos) {\n triggerDistance = 44;\n }\n function setPreloaderProgress(progress) {\n if (progress === void 0) {\n progress = 0;\n }\n const $bars = $preloaderEl.find('.preloader-inner-line');\n const perBarProgress = 1 / $bars.length;\n $bars.forEach((barEl, barIndex) => {\n const barProgress = (progress - barIndex * perBarProgress) / perBarProgress;\n barEl.style.opacity = Math.max(Math.min(barProgress, 1), 0) * 0.27;\n });\n }\n function unsetPreloaderProgress() {\n $preloaderEl.find('.preloader-inner-line').css('opacity', '');\n }\n function handleTouchStart(e) {\n if (!e.isTrusted) return;\n if (isTouched) {\n if (device.os === 'android') {\n if ('targetTouches' in e && e.targetTouches.length > 1) return;\n } else return;\n }\n if ($el.hasClass('ptr-refreshing')) {\n return;\n }\n if ($(e.target).closest('.sortable-handler, .ptr-ignore, .card-expandable.card-opened').length) return;\n isMoved = false;\n pullStarted = false;\n isTouched = true;\n isScrolling = undefined;\n wasScrolled = undefined;\n if (e.type === 'touchstart') touchId = e.targetTouches[0].identifier;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function handleTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n let pageX;\n let pageY;\n let touch;\n if (e.type === 'touchmove') {\n if (touchId && e.touches) {\n for (let i = 0; i < e.touches.length; i += 1) {\n if (e.touches[i].identifier === touchId) {\n touch = e.touches[i];\n }\n }\n }\n if (!touch) touch = e.targetTouches[0];\n pageX = touch.pageX;\n pageY = touch.pageY;\n } else {\n pageX = e.pageX;\n pageY = e.pageY;\n }\n if (!pageX || !pageY) return;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (!isScrolling) {\n isTouched = false;\n return;\n }\n scrollTop = $el[0].scrollTop;\n if (!isMoved) {\n $el.removeClass('ptr-transitioning');\n if (isIos) {\n setPreloaderProgress(0);\n }\n let targetIsScrollable;\n scrollHeight = $el[0].scrollHeight;\n offsetHeight = $el[0].offsetHeight;\n if (ptr.bottom) {\n maxScrollTop = scrollHeight - offsetHeight;\n }\n if (scrollTop > scrollHeight) {\n isTouched = false;\n return;\n }\n const $ptrWatchScrollable = $(e.target).closest('.ptr-watch-scroll');\n if ($ptrWatchScrollable.length) {\n $ptrWatchScrollable.each(ptrScrollableEl => {\n if (ptrScrollableEl === el) return;\n if (ptrScrollableEl.scrollHeight > ptrScrollableEl.offsetHeight && $(ptrScrollableEl).css('overflow') === 'auto' && (!ptr.bottom && ptrScrollableEl.scrollTop > 0 || ptr.bottom && ptrScrollableEl.scrollTop < ptrScrollableEl.scrollHeight - ptrScrollableEl.offsetHeight)) {\n targetIsScrollable = true;\n }\n });\n }\n if (targetIsScrollable) {\n isTouched = false;\n return;\n }\n if (dynamicTriggerDistance) {\n triggerDistance = $el.attr('data-ptr-distance');\n if (triggerDistance.indexOf('%') >= 0) triggerDistance = scrollHeight * parseInt(triggerDistance, 10) / 100;\n }\n startTranslate = $el.hasClass('ptr-refreshing') ? triggerDistance : 0;\n if (scrollHeight === offsetHeight || device.os !== 'ios' || isMaterial) {\n useTranslate = true;\n } else {\n useTranslate = false;\n }\n forceUseTranslate = false;\n }\n isMoved = true;\n touchesDiff = pageY - touchesStart.y;\n if (typeof wasScrolled === 'undefined' && (ptr.bottom ? scrollTop !== maxScrollTop : scrollTop !== 0)) wasScrolled = true;\n const ptrStarted = ptr.bottom ? touchesDiff < 0 && scrollTop >= maxScrollTop || scrollTop > maxScrollTop : touchesDiff > 0 && scrollTop <= 0 || scrollTop < 0;\n if (ptrStarted) {\n // iOS 8 fix\n if (device.os === 'ios' && parseInt(device.osVersion.split('.')[0], 10) > 7) {\n if (!ptr.bottom && scrollTop === 0 && !wasScrolled) useTranslate = true;\n if (ptr.bottom && scrollTop === maxScrollTop && !wasScrolled) useTranslate = true;\n }\n if (!useTranslate && ptr.bottom && !isMaterial) {\n $el.css('-webkit-overflow-scrolling', 'auto');\n $el.scrollTop(maxScrollTop);\n forceUseTranslate = true;\n }\n if (useTranslate || forceUseTranslate) {\n if (e.cancelable) {\n e.preventDefault();\n }\n translate = (ptr.bottom ? -1 * Math.abs(touchesDiff) ** 0.85 : touchesDiff ** 0.85) + startTranslate;\n if (isMaterial) {\n $preloaderEl.transform(`translate3d(0,${translate}px,0)`).find('.ptr-arrow').transform(`rotate(${180 * (Math.abs(touchesDiff) / 66) + 100}deg)`);\n } else {\n // eslint-disable-next-line\n if (ptr.bottom || isIos) {\n $el.children().transform(`translate3d(0,${translate}px,0)`);\n } else {\n // eslint-disable-next-line\n $el.transform(`translate3d(0,${translate}px,0)`);\n }\n if (isIos) {\n $preloaderEl.transform(`translate3d(0,0px,0)`);\n }\n }\n } else if (isIos && !ptr.bottom) {\n $preloaderEl.transform(`translate3d(0,${scrollTop}px,0)`);\n }\n let progress;\n if (isIos && !refresh) {\n progress = useTranslate || forceUseTranslate ? Math.abs(touchesDiff) ** 0.85 / triggerDistance : Math.abs(touchesDiff) / (triggerDistance * 2);\n setPreloaderProgress(progress);\n }\n if ((useTranslate || forceUseTranslate) && Math.abs(touchesDiff) ** 0.85 > triggerDistance || !useTranslate && Math.abs(touchesDiff) >= triggerDistance * 2) {\n refresh = true;\n $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');\n unsetPreloaderProgress();\n } else {\n refresh = false;\n $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');\n }\n if (!pullStarted) {\n $el.trigger('ptr:pullstart');\n ptr.emit('local::pullStart ptrPullStart', $el[0]);\n pullStarted = true;\n }\n $el.trigger('ptr:pullmove', {\n event: e,\n scrollTop,\n translate,\n touchesDiff\n });\n ptr.emit('local::pullMove ptrPullMove', $el[0], {\n event: e,\n scrollTop,\n translate,\n touchesDiff\n });\n } else {\n pullStarted = false;\n $el.removeClass('ptr-pull-up ptr-pull-down');\n refresh = false;\n }\n }\n function handleTouchEnd(e) {\n if (!e.isTrusted) return;\n if (e.type === 'touchend' && e.changedTouches && e.changedTouches.length > 0 && touchId) {\n if (e.changedTouches[0].identifier !== touchId) {\n isTouched = false;\n isScrolling = false;\n isMoved = false;\n touchId = null;\n return;\n }\n }\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n if (translate) {\n $el.addClass('ptr-transitioning');\n translate = 0;\n }\n if (isMaterial) {\n $preloaderEl.transform('').find('.ptr-arrow').transform('');\n } else {\n $preloaderEl.transform('');\n if (ptr.bottom || isIos) {\n $el.children().transform('');\n } else {\n $el.transform('');\n }\n }\n if (!useTranslate && ptr.bottom && !isMaterial) {\n $el.css('-webkit-overflow-scrolling', '');\n }\n if (refresh) {\n $el.addClass('ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n } else {\n $el.removeClass('ptr-pull-down');\n }\n isTouched = false;\n isMoved = false;\n if (pullStarted) {\n $el.trigger('ptr:pullend');\n ptr.emit('local::pullEnd ptrPullEnd', $el[0]);\n }\n }\n let mousewheelTimeout;\n let mousewheelMoved;\n let mousewheelAllow = true;\n let mousewheelTranslate = 0;\n function handleMouseWheelRelease() {\n mousewheelAllow = true;\n mousewheelMoved = false;\n mousewheelTranslate = 0;\n if (translate) {\n $el.addClass('ptr-transitioning');\n translate = 0;\n }\n if (isMaterial) {\n $preloaderEl.transform('').find('.ptr-arrow').transform('');\n } else {\n $preloaderEl.transform('');\n if (ptr.bottom) {\n $el.children().transform('');\n } else {\n $el.transform('');\n }\n }\n if (refresh) {\n $el.addClass('ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n } else {\n $el.removeClass('ptr-pull-down');\n }\n if (pullStarted) {\n $el.trigger('ptr:pullend');\n ptr.emit('local::pullEnd ptrPullEnd', $el[0]);\n }\n }\n function handleMouseWheel(e) {\n if (!mousewheelAllow) return;\n const {\n deltaX,\n deltaY\n } = e;\n if (Math.abs(deltaX) > Math.abs(deltaY)) return;\n if ($el.hasClass('ptr-refreshing')) {\n return;\n }\n if ($(e.target).closest('.sortable-handler, .ptr-ignore, .card-expandable.card-opened').length) return;\n clearTimeout(mousewheelTimeout);\n scrollTop = $el[0].scrollTop;\n if (!mousewheelMoved) {\n $el.removeClass('ptr-transitioning');\n if (isIos) {\n setPreloaderProgress(0);\n }\n let targetIsScrollable;\n scrollHeight = $el[0].scrollHeight;\n offsetHeight = $el[0].offsetHeight;\n if (ptr.bottom) {\n maxScrollTop = scrollHeight - offsetHeight;\n }\n if (scrollTop > scrollHeight) {\n mousewheelAllow = false;\n return;\n }\n const $ptrWatchScrollable = $(e.target).closest('.ptr-watch-scroll');\n if ($ptrWatchScrollable.length) {\n $ptrWatchScrollable.each(ptrScrollableEl => {\n if (ptrScrollableEl === el) return;\n if (ptrScrollableEl.scrollHeight > ptrScrollableEl.offsetHeight && $(ptrScrollableEl).css('overflow') === 'auto' && (!ptr.bottom && ptrScrollableEl.scrollTop > 0 || ptr.bottom && ptrScrollableEl.scrollTop < ptrScrollableEl.scrollHeight - ptrScrollableEl.offsetHeight)) {\n targetIsScrollable = true;\n }\n });\n }\n if (targetIsScrollable) {\n mousewheelAllow = false;\n return;\n }\n if (dynamicTriggerDistance) {\n triggerDistance = $el.attr('data-ptr-distance');\n if (triggerDistance.indexOf('%') >= 0) triggerDistance = scrollHeight * parseInt(triggerDistance, 10) / 100;\n }\n }\n isMoved = true;\n mousewheelTranslate -= deltaY;\n touchesDiff = mousewheelTranslate; // pageY - touchesStart.y;\n\n if (typeof wasScrolled === 'undefined' && (ptr.bottom ? scrollTop !== maxScrollTop : scrollTop !== 0)) wasScrolled = true;\n const ptrStarted = ptr.bottom ? touchesDiff < 0 && scrollTop >= maxScrollTop || scrollTop > maxScrollTop : touchesDiff > 0 && scrollTop <= 0 || scrollTop < 0;\n if (ptrStarted) {\n if (e.cancelable) {\n e.preventDefault();\n }\n translate = touchesDiff;\n if (Math.abs(translate) > triggerDistance) {\n translate = triggerDistance + (Math.abs(translate) - triggerDistance) ** 0.7;\n if (ptr.bottom) translate = -translate;\n }\n if (isMaterial) {\n $preloaderEl.transform(`translate3d(0,${translate}px,0)`).find('.ptr-arrow').transform(`rotate(${180 * (Math.abs(touchesDiff) / 66) + 100}deg)`);\n } else {\n // eslint-disable-next-line\n if (ptr.bottom) {\n $el.children().transform(`translate3d(0,${translate}px,0)`);\n } else {\n $el.transform(`translate3d(0,${translate}px,0)`);\n if (isIos) {\n $preloaderEl.transform(`translate3d(0,${-translate}px,0)`);\n }\n }\n }\n let progress;\n if (isIos && !refresh) {\n progress = Math.abs(translate) / triggerDistance;\n setPreloaderProgress(progress);\n }\n if (Math.abs(translate) > triggerDistance) {\n refresh = true;\n $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');\n unsetPreloaderProgress();\n } else {\n refresh = false;\n $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');\n }\n if (!pullStarted) {\n $el.trigger('ptr:pullstart');\n ptr.emit('local::pullStart ptrPullStart', $el[0]);\n pullStarted = true;\n }\n $el.trigger('ptr:pullmove', {\n event: e,\n scrollTop,\n translate,\n touchesDiff\n });\n ptr.emit('local::pullMove ptrPullMove', $el[0], {\n event: e,\n scrollTop,\n translate,\n touchesDiff\n });\n } else {\n pullStarted = false;\n $el.removeClass('ptr-pull-up ptr-pull-down');\n refresh = false;\n }\n mousewheelTimeout = setTimeout(handleMouseWheelRelease, 300);\n }\n if (!$pageEl.length || !$el.length) return ptr;\n $el[0].f7PullToRefresh = ptr;\n\n // Events\n ptr.attachEvents = function attachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n if (ptr.mousewheel && !ptr.bottom) {\n $el.on('wheel', handleMouseWheel);\n }\n };\n ptr.detachEvents = function detachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n if (ptr.mousewheel && !ptr.bottom) {\n $el.off('wheel', handleMouseWheel);\n }\n };\n\n // Install Modules\n ptr.useModules();\n\n // Init\n ptr.init();\n return ptr;\n }\n init() {\n const ptr = this;\n ptr.attachEvents();\n }\n destroy() {\n let ptr = this;\n ptr.emit('local::beforeDestroy ptrBeforeDestroy', ptr);\n ptr.$el.trigger('ptr:beforedestroy');\n delete ptr.el.f7PullToRefresh;\n ptr.detachEvents();\n deleteProps(ptr);\n ptr = null;\n }\n}\nexport default PullToRefresh;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport PullToRefresh from './pull-to-refresh-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'pullToRefresh',\n create() {\n const app = this;\n app.ptr = extend(ConstructorMethods({\n defaultSelector: '.ptr-content',\n constructor: PullToRefresh,\n app,\n domProp: 'f7PullToRefresh'\n }), {\n done(el) {\n const ptr = app.ptr.get(el);\n if (ptr) return ptr.done();\n return undefined;\n },\n refresh(el) {\n const ptr = app.ptr.get(el);\n if (ptr) return ptr.refresh();\n return undefined;\n }\n });\n },\n static: {\n PullToRefresh\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n const $ptrEls = $tabEl.find('.ptr-content');\n if ($tabEl.is('.ptr-content')) $ptrEls.add($tabEl);\n $ptrEls.each(el => {\n app.ptr.create(el);\n });\n },\n tabBeforeRemove(tabEl) {\n const $tabEl = $(tabEl);\n const app = this;\n const $ptrEls = $tabEl.find('.ptr-content');\n if ($tabEl.is('.ptr-content')) $ptrEls.add($tabEl);\n $ptrEls.each(el => {\n app.ptr.destroy(el);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.ptr-content').each(el => {\n app.ptr.create(el);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.ptr-content').each(el => {\n app.ptr.destroy(el);\n });\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nclass DataTable extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const table = this;\n const defaults = {};\n\n // Extend defaults with modules params\n table.useModulesParams(defaults);\n table.params = extend(defaults, params);\n\n // El\n const $el = $(table.params.el);\n if ($el.length === 0) return undefined;\n table.$el = $el;\n table.el = $el[0];\n if (table.$el[0].f7DataTable) {\n const instance = table.$el[0].f7DataTable;\n table.destroy();\n return instance;\n }\n table.$el[0].f7DataTable = table;\n extend(table, {\n collapsible: $el.hasClass('data-table-collapsible'),\n // Headers\n $headerEl: $el.find('.data-table-header'),\n $headerSelectedEl: $el.find('.data-table-header-selected')\n });\n\n // Events\n function handleChange(e) {\n if (e.detail && e.detail.sentByF7DataTable) {\n // Scripted event, don't do anything\n return;\n }\n const $inputEl = $(this);\n const checked = $inputEl[0].checked;\n const columnIndex = $inputEl.parents('td,th').index();\n if ($inputEl.parents('thead').length > 0) {\n if (columnIndex === 0) {\n $el.find('tbody tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');\n }\n $el.find(`tbody tr td:nth-child(${columnIndex + 1}) input`).prop('checked', checked).trigger('change', {\n sentByF7DataTable: true\n });\n $inputEl.prop('indeterminate', false);\n } else {\n if (columnIndex === 0) {\n $inputEl.parents('tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');\n }\n const checkedRows = $el.find(`tbody .checkbox-cell:nth-child(${columnIndex + 1}) input[type=\"checkbox\"]:checked`).length;\n const totalRows = $el.find('tbody tr').length;\n const $headCheckboxEl = $el.find(`thead .checkbox-cell:nth-child(${columnIndex + 1}) input[type=\"checkbox\"]`);\n if (!checked) {\n $headCheckboxEl.prop('checked', false);\n } else if (checkedRows === totalRows) {\n $headCheckboxEl.prop('checked', true).trigger('change', {\n sentByF7DataTable: true\n });\n }\n $headCheckboxEl.prop('indeterminate', checkedRows > 0 && checkedRows < totalRows);\n }\n table.checkSelectedHeader();\n }\n function handleSortableClick() {\n const $cellEl = $(this);\n const isActive = $cellEl.hasClass('sortable-cell-active');\n const currentSort = $cellEl.hasClass('sortable-desc') ? 'desc' : 'asc';\n let newSort;\n if (isActive) {\n newSort = currentSort === 'desc' ? 'asc' : 'desc';\n $cellEl.removeClass('sortable-desc sortable-asc').addClass(`sortable-${newSort}`);\n } else {\n $el.find('thead .sortable-cell-active').removeClass('sortable-cell-active');\n $cellEl.addClass('sortable-cell-active');\n newSort = currentSort;\n }\n $cellEl.trigger('datatable:sort', newSort);\n table.emit('local::sort dataTableSort', table, newSort);\n }\n table.attachEvents = function attachEvents() {\n table.$el.on('change', '.checkbox-cell input[type=\"checkbox\"]', handleChange);\n table.$el.find('thead .sortable-cell').on('click', handleSortableClick);\n };\n table.detachEvents = function detachEvents() {\n table.$el.off('change', '.checkbox-cell input[type=\"checkbox\"]', handleChange);\n table.$el.find('thead .sortable-cell').off('click', handleSortableClick);\n };\n\n // Install Modules\n table.useModules();\n\n // Init\n table.init();\n return table;\n }\n setCollapsibleLabels() {\n const table = this;\n if (!table.collapsible) return;\n table.$el.find('tbody td:not(.checkbox-cell)').each(el => {\n const $el = $(el);\n const elIndex = $el.index();\n const collapsibleTitle = $el.attr('data-collapsible-title');\n if (!collapsibleTitle && collapsibleTitle !== '') {\n $el.attr('data-collapsible-title', table.$el.find('thead th').eq(elIndex).text());\n }\n });\n }\n checkSelectedHeader() {\n const table = this;\n if (table.$headerEl.length > 0 && table.$headerSelectedEl.length > 0) {\n const checkedItems = table.$el.find('tbody .checkbox-cell input:checked').length;\n table.$el[checkedItems > 0 ? 'addClass' : 'removeClass']('data-table-has-checked');\n table.$headerSelectedEl.find('.data-table-selected-count').text(checkedItems);\n }\n }\n init() {\n const table = this;\n table.attachEvents();\n table.setCollapsibleLabels();\n table.checkSelectedHeader();\n }\n destroy() {\n let table = this;\n table.$el.trigger('datatable:beforedestroy');\n table.emit('local::beforeDestroy dataTableBeforeDestroy', table);\n table.detachEvents();\n if (table.$el[0]) {\n table.$el[0].f7DataTable = null;\n delete table.$el[0].f7DataTable;\n }\n deleteProps(table);\n table = null;\n }\n}\nexport default DataTable;","import $ from '../../shared/dom7.js';\nimport DataTable from './data-table-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'dataTable',\n static: {\n DataTable\n },\n create() {\n const app = this;\n app.dataTable = ConstructorMethods({\n defaultSelector: '.data-table',\n constructor: DataTable,\n app,\n domProp: 'f7DataTable'\n });\n },\n on: {\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.data-table-init').each(tableEl => {\n app.dataTable.destroy(tableEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.data-table-init').each(tableEl => {\n app.dataTable.create({\n el: tableEl\n });\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.data-table-init').each(tableEl => {\n app.dataTable.destroy(tableEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.data-table-init').each(tableEl => {\n app.dataTable.create({\n el: tableEl\n });\n });\n }\n },\n vnode: {\n 'data-table-init': {\n insert(vnode) {\n const app = this;\n const tableEl = vnode.elm;\n app.dataTable.create({\n el: tableEl\n });\n },\n destroy(vnode) {\n const app = this;\n const tableEl = vnode.elm;\n app.dataTable.destroy(tableEl);\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { bindMethods, getTranslate, nextFrame } from '../../shared/utils.js';\nconst Fab = {\n morphOpen(fabEl, targetEl) {\n const app = this;\n const $fabEl = $(fabEl);\n const $targetEl = $(targetEl);\n if ($targetEl.length === 0) return;\n $targetEl.transition(0).addClass('fab-morph-target-visible');\n const target = {\n width: $targetEl[0].offsetWidth,\n height: $targetEl[0].offsetHeight,\n offset: $targetEl.offset(),\n borderRadius: $targetEl.css('border-radius'),\n zIndex: $targetEl.css('z-index')\n };\n const fab = {\n width: $fabEl[0].offsetWidth,\n height: $fabEl[0].offsetHeight,\n offset: $fabEl.offset(),\n translateX: getTranslate($fabEl[0], 'x'),\n translateY: getTranslate($fabEl[0], 'y')\n };\n $fabEl[0].f7FabMorphData = {\n $targetEl,\n target,\n fab\n };\n const diffX = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;\n const diffY = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;\n const scaleX = target.width / fab.width;\n const scaleY = target.height / fab.height;\n let borderRadius = Math.ceil(parseInt(target.borderRadius, 10) / Math.max(scaleX, scaleY));\n if (borderRadius > 0) borderRadius += 2;\n $fabEl[0].f7FabMorphResizeHandler = function resizeHandler() {\n $fabEl.transition(0).transform('');\n $targetEl.transition(0);\n target.width = $targetEl[0].offsetWidth;\n target.height = $targetEl[0].offsetHeight;\n target.offset = $targetEl.offset();\n fab.offset = $fabEl.offset();\n const diffXNew = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;\n const diffYNew = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;\n const scaleXNew = target.width / fab.width;\n const scaleYNew = target.height / fab.height;\n $fabEl.transform(`translate3d(${-diffXNew}px, ${-diffYNew}px, 0) scale(${scaleXNew}, ${scaleYNew})`);\n };\n $targetEl.css('opacity', 0).transform(`scale(${1 / scaleX}, ${1 / scaleY})`);\n $fabEl.addClass('fab-opened').css('z-index', target.zIndex - 1).transform(`translate3d(${-diffX}px, ${-diffY}px, 0)`);\n $fabEl.transitionEnd(() => {\n $targetEl.transition('');\n nextFrame(() => {\n $targetEl.css('opacity', 1).transform('scale(1,1)');\n $fabEl.transform(`translate3d(${-diffX}px, ${-diffY}px, 0) scale(${scaleX}, ${scaleY})`).css('border-radius', `${borderRadius}px`).css('box-shadow', 'none').css('opacity', '0');\n });\n app.on('resize', $fabEl[0].f7FabMorphResizeHandler);\n if ($targetEl.parents('.page-content').length > 0) {\n $targetEl.parents('.page-content').on('scroll', $fabEl[0].f7FabMorphResizeHandler);\n }\n });\n },\n morphClose(fabEl) {\n const app = this;\n const $fabEl = $(fabEl);\n const morphData = $fabEl[0].f7FabMorphData;\n if (!morphData) return;\n const {\n $targetEl,\n target,\n fab\n } = morphData;\n if ($targetEl.length === 0) return;\n const diffX = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;\n const diffY = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;\n const scaleX = target.width / fab.width;\n const scaleY = target.height / fab.height;\n app.off('resize', $fabEl[0].f7FabMorphResizeHandler);\n if ($targetEl.parents('.page-content').length > 0) {\n $targetEl.parents('.page-content').off('scroll', $fabEl[0].f7FabMorphResizeHandler);\n }\n $targetEl.css('opacity', 0).transform(`scale(${1 / scaleX}, ${1 / scaleY})`);\n $fabEl.transition('').css('box-shadow', '').css('border-radius', '').css('opacity', '1').transform(`translate3d(${-diffX}px, ${-diffY}px, 0)`);\n $fabEl.transitionEnd(() => {\n $fabEl.css('z-index', '').removeClass('fab-opened').transform('');\n nextFrame(() => {\n $fabEl.transitionEnd(() => {\n $targetEl.removeClass('fab-morph-target-visible').css('opacity', '').transform('').transition('');\n });\n });\n });\n },\n open(fabEl, targetEl) {\n const app = this;\n const $fabEl = $(fabEl).eq(0);\n const $buttonsEl = $fabEl.find('.fab-buttons');\n if (!$fabEl.length) return;\n if ($fabEl.hasClass('fab-opened')) return;\n if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;\n if (app.fab.openedEl) {\n if (app.fab.openedEl === $fabEl[0]) return;\n app.fab.close(app.fab.openedEl);\n }\n app.fab.openedEl = $fabEl[0];\n if ($fabEl.hasClass('fab-morph')) {\n app.fab.morphOpen($fabEl, targetEl || $fabEl.attr('data-morph-to'));\n } else {\n $fabEl.addClass('fab-opened');\n }\n $fabEl.siblings('.fab-backdrop').addClass('backdrop-in');\n $fabEl.trigger('fab:open');\n },\n close(fabEl) {\n if (fabEl === void 0) {\n fabEl = '.fab-opened';\n }\n const app = this;\n const $fabEl = $(fabEl).eq(0);\n const $buttonsEl = $fabEl.find('.fab-buttons');\n if (!$fabEl.length) return;\n if (!$fabEl.hasClass('fab-opened')) return;\n if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;\n app.fab.openedEl = null;\n if ($fabEl.hasClass('fab-morph')) {\n app.fab.morphClose($fabEl);\n } else {\n $fabEl.removeClass('fab-opened');\n }\n $fabEl.siblings('.fab-backdrop').removeClass('backdrop-in');\n $fabEl.trigger('fab:close');\n },\n toggle(fabEl) {\n const app = this;\n const $fabEl = $(fabEl);\n if (!$fabEl.hasClass('fab-opened')) app.fab.open(fabEl);else app.fab.close(fabEl);\n }\n};\nexport default {\n name: 'fab',\n create() {\n const app = this;\n bindMethods(app, {\n fab: {\n openedEl: null,\n ...Fab\n }\n });\n },\n clicks: {\n '.fab > a': function open($clickedEl) {\n const app = this;\n app.fab.toggle($clickedEl.parents('.fab'));\n },\n '.fab-open': function open($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.fab.open(data.fab);\n },\n '.fab-close': function close($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.fab.close(data.fab);\n },\n '.fab-backdrop': function close() {\n const app = this;\n app.fab.close();\n }\n }\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport FrameworkClass from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport removeDiacritics from './remove-diacritics.js';\nclass Searchbar extends FrameworkClass {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const sb = this;\n const defaults = {\n el: undefined,\n inputEl: undefined,\n inputEvents: 'change input compositionend',\n disableButton: true,\n disableButtonEl: undefined,\n backdropEl: undefined,\n searchContainer: undefined,\n // container to search, HTMLElement or CSS selector\n searchItem: 'li',\n // single item selector, CSS selector\n searchIn: undefined,\n // where to search in item, CSS selector\n searchGroup: '.list-group',\n searchGroupTitle: '.list-group-title',\n ignore: '.searchbar-ignore',\n foundEl: '.searchbar-found',\n notFoundEl: '.searchbar-not-found',\n hideOnEnableEl: '.searchbar-hide-on-enable',\n hideOnSearchEl: '.searchbar-hide-on-search',\n backdrop: true,\n removeDiacritics: true,\n customSearch: false,\n hideGroupTitles: true,\n hideGroups: true,\n disableOnBackdropClick: true,\n expandable: false,\n inline: false\n };\n\n // Extend defaults with modules params\n sb.useModulesParams(defaults);\n sb.params = extend(defaults, params);\n const $el = $(sb.params.el);\n if ($el.length === 0) return sb;\n if ($el[0].f7Searchbar) return $el[0].f7Searchbar;\n $el[0].f7Searchbar = sb;\n let $pageEl;\n const $navbarEl = $el.parents('.navbar');\n if ($el.parents('.page').length > 0) {\n $pageEl = $el.parents('.page');\n } else if ($navbarEl.length > 0) {\n $pageEl = $(app.navbar.getPageByEl($navbarEl[0]));\n if (!$pageEl.length) {\n const $currentPageEl = $el.parents('.view').find('.page-current');\n if ($currentPageEl[0] && $currentPageEl[0].f7Page && $currentPageEl[0].f7Page.navbarEl === $navbarEl[0]) {\n $pageEl = $currentPageEl;\n }\n }\n }\n let $foundEl;\n if (params.foundEl) {\n $foundEl = $(params.foundEl);\n } else if (typeof sb.params.foundEl === 'string' && $pageEl) {\n $foundEl = $pageEl.find(sb.params.foundEl);\n }\n let $notFoundEl;\n if (params.notFoundEl) {\n $notFoundEl = $(params.notFoundEl);\n } else if (typeof sb.params.notFoundEl === 'string' && $pageEl) {\n $notFoundEl = $pageEl.find(sb.params.notFoundEl);\n }\n let $hideOnEnableEl;\n if (params.hideOnEnableEl) {\n $hideOnEnableEl = $(params.hideOnEnableEl);\n } else if (typeof sb.params.hideOnEnableEl === 'string' && $pageEl) {\n $hideOnEnableEl = $pageEl.find(sb.params.hideOnEnableEl);\n }\n let $hideOnSearchEl;\n if (params.hideOnSearchEl) {\n $hideOnSearchEl = $(params.hideOnSearchEl);\n } else if (typeof sb.params.hideOnSearchEl === 'string' && $pageEl) {\n $hideOnSearchEl = $pageEl.find(sb.params.hideOnSearchEl);\n }\n const expandable = sb.params.expandable || $el.hasClass('searchbar-expandable');\n const inline = sb.params.inline || $el.hasClass('searchbar-inline');\n if (typeof sb.params.backdrop === 'undefined') {\n sb.params.backdrop = !inline;\n }\n let $backdropEl;\n if (sb.params.backdrop) {\n if (sb.params.backdropEl) {\n $backdropEl = $(sb.params.backdropEl);\n } else if ($pageEl && $pageEl.length > 0) {\n $backdropEl = $pageEl.find('.searchbar-backdrop');\n } else {\n $backdropEl = $el.siblings('.searchbar-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('
                      ');\n if ($pageEl && $pageEl.length) {\n if ($el.parents($pageEl).length > 0 && $navbarEl && $el.parents($navbarEl).length === 0) {\n $backdropEl.insertBefore($el);\n } else {\n $backdropEl.insertBefore($pageEl.find('.page-content').eq(0));\n }\n } else {\n $backdropEl.insertBefore($el);\n }\n }\n }\n let $searchContainer;\n if (sb.params.searchContainer) {\n $searchContainer = $(sb.params.searchContainer);\n }\n let $inputEl;\n if (sb.params.inputEl) {\n $inputEl = $(sb.params.inputEl);\n } else {\n $inputEl = $el.find('input[type=\"search\"]').eq(0);\n }\n let $disableButtonEl;\n if (sb.params.disableButton) {\n if (sb.params.disableButtonEl) {\n $disableButtonEl = $(sb.params.disableButtonEl);\n } else {\n $disableButtonEl = $el.find('.searchbar-disable-button');\n }\n }\n extend(sb, {\n app,\n view: app.views.get($el.parents('.view')),\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n $searchContainer,\n searchContainer: $searchContainer && $searchContainer[0],\n $inputEl,\n inputEl: $inputEl[0],\n $disableButtonEl,\n disableButtonEl: $disableButtonEl && $disableButtonEl[0],\n disableButtonHasMargin: false,\n $pageEl,\n pageEl: $pageEl && $pageEl[0],\n $navbarEl,\n navbarEl: $navbarEl && $navbarEl[0],\n $foundEl,\n foundEl: $foundEl && $foundEl[0],\n $notFoundEl,\n notFoundEl: $notFoundEl && $notFoundEl[0],\n $hideOnEnableEl,\n hideOnEnableEl: $hideOnEnableEl && $hideOnEnableEl[0],\n $hideOnSearchEl,\n hideOnSearchEl: $hideOnSearchEl && $hideOnSearchEl[0],\n previousQuery: '',\n query: '',\n isVirtualList: $searchContainer && $searchContainer.hasClass('virtual-list'),\n virtualList: undefined,\n enabled: false,\n expandable,\n inline\n });\n\n // Events\n function preventSubmit(e) {\n e.preventDefault();\n }\n function onInputFocus(e) {\n sb.enable(e);\n sb.$el.addClass('searchbar-focused');\n }\n function onInputBlur() {\n sb.$el.removeClass('searchbar-focused');\n }\n function onInputChange() {\n const value = sb.$inputEl.val().trim();\n if (sb.$searchContainer && sb.$searchContainer.length > 0 && (sb.params.searchIn || sb.isVirtualList || sb.params.searchIn === sb.params.searchItem) || sb.params.customSearch) {\n sb.search(value, true);\n }\n }\n function onInputClear(e, previousValue) {\n sb.$el.trigger('searchbar:clear', previousValue);\n sb.emit('local::clear searchbarClear', sb, previousValue);\n }\n function disableOnClick(e) {\n sb.disable(e);\n }\n function onPageBeforeOut() {\n if (!sb || sb && !sb.$el) return;\n if (sb.enabled) {\n sb.$el.removeClass('searchbar-enabled');\n if (sb.expandable) {\n sb.$el.parents('.navbar').removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition');\n }\n }\n }\n function onPageBeforeIn() {\n if (!sb || sb && !sb.$el) return;\n if (sb.enabled) {\n sb.$el.addClass('searchbar-enabled');\n if (sb.expandable) {\n sb.$el.parents('.navbar').addClass('with-searchbar-expandable-enabled-no-transition');\n }\n }\n }\n sb.attachEvents = function attachEvents() {\n $el.on('submit', preventSubmit);\n if (sb.params.disableButton) {\n sb.$disableButtonEl.on('click', disableOnClick);\n }\n if (sb.params.disableOnBackdropClick && sb.$backdropEl) {\n sb.$backdropEl.on('click', disableOnClick);\n }\n if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {\n sb.$pageEl.on('page:beforeout', onPageBeforeOut);\n sb.$pageEl.on('page:beforein', onPageBeforeIn);\n }\n sb.$inputEl.on('focus', onInputFocus);\n sb.$inputEl.on('blur', onInputBlur);\n sb.$inputEl.on(sb.params.inputEvents, onInputChange);\n sb.$inputEl.on('input:clear', onInputClear);\n };\n sb.detachEvents = function detachEvents() {\n $el.off('submit', preventSubmit);\n if (sb.params.disableButton) {\n sb.$disableButtonEl.off('click', disableOnClick);\n }\n if (sb.params.disableOnBackdropClick && sb.$backdropEl) {\n sb.$backdropEl.off('click', disableOnClick);\n }\n if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {\n sb.$pageEl.off('page:beforeout', onPageBeforeOut);\n sb.$pageEl.off('page:beforein', onPageBeforeIn);\n }\n sb.$inputEl.off('focus', onInputFocus);\n sb.$inputEl.off('blur', onInputBlur);\n sb.$inputEl.off(sb.params.inputEvents, onInputChange);\n sb.$inputEl.off('input:clear', onInputClear);\n };\n\n // Install Modules\n sb.useModules();\n\n // Init\n sb.init();\n return sb;\n }\n clear(e) {\n const sb = this;\n if (!sb.query && e && $(e.target).hasClass('searchbar-clear')) {\n sb.disable();\n return sb;\n }\n const previousQuery = sb.value;\n sb.$inputEl.val('').trigger('change').focus();\n sb.$el.trigger('searchbar:clear', previousQuery);\n sb.emit('local::clear searchbarClear', sb, previousQuery);\n return sb;\n }\n setDisableButtonMargin() {\n const sb = this;\n if (sb.expandable) return;\n const app = sb.app;\n sb.$disableButtonEl.transition(0).show();\n sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, `${-sb.disableButtonEl.offsetWidth}px`);\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n sb._clientLeft = sb.$disableButtonEl[0].clientLeft;\n sb.$disableButtonEl.transition('');\n sb.disableButtonHasMargin = true;\n }\n enable(setFocus) {\n const sb = this;\n if (sb.enabled) return sb;\n const app = sb.app;\n const document = getDocument();\n const device = getDevice();\n sb.enabled = true;\n function enable() {\n if (sb.$backdropEl && (sb.$searchContainer && sb.$searchContainer.length || sb.params.customSearch) && !sb.$el.hasClass('searchbar-enabled') && !sb.query) {\n sb.backdropShow();\n }\n sb.$el.addClass('searchbar-enabled');\n if (!sb.$disableButtonEl || sb.$disableButtonEl && sb.$disableButtonEl.length === 0) {\n sb.$el.addClass('searchbar-enabled-no-disable-button');\n }\n if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme !== 'md') {\n if (!sb.disableButtonHasMargin) {\n sb.setDisableButtonMargin();\n }\n sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, '0px');\n }\n if (sb.expandable) {\n const $navbarEl = sb.$el.parents('.navbar');\n if ($navbarEl.hasClass('navbar-large') && sb.$pageEl) {\n const $pageContentEl = sb.$pageEl.find('.page-content');\n const $titleLargeEl = $navbarEl.find('.title-large');\n $pageContentEl.addClass('with-searchbar-expandable-enabled');\n if ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-large-collapsed') && $titleLargeEl.length && $pageContentEl.length) {\n $pageContentEl.transition(0);\n $pageContentEl[0].scrollTop -= $titleLargeEl[0].offsetHeight;\n setTimeout(() => {\n $pageContentEl.transition('');\n }, 200);\n }\n }\n if (app.theme === 'md' && $navbarEl.length) {\n $navbarEl.addClass('with-searchbar-expandable-enabled');\n } else {\n $navbarEl.addClass('with-searchbar-expandable-enabled');\n if ($navbarEl.hasClass('navbar-large')) {\n $navbarEl.addClass('navbar-large-collapsed');\n }\n }\n }\n if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.addClass('hidden-by-searchbar');\n sb.$el.trigger('searchbar:enable');\n sb.emit('local::enable searchbarEnable', sb);\n }\n let needsFocus = false;\n if (setFocus === true) {\n if (document.activeElement !== sb.inputEl) {\n needsFocus = true;\n }\n }\n const isIos = device.ios && app.theme === 'ios';\n if (isIos) {\n if (sb.expandable) {\n if (needsFocus) sb.$inputEl.focus();\n enable();\n } else {\n if (needsFocus) sb.$inputEl.focus();\n if (setFocus && (setFocus.type === 'focus' || setFocus === true)) {\n nextTick(() => {\n enable();\n }, 400);\n } else {\n enable();\n }\n }\n } else {\n if (needsFocus) sb.$inputEl.focus();\n if (app.theme === 'md' && sb.expandable) {\n sb.$el.parents('.page, .view, .navbar-inner, .navbar').scrollLeft(app.rtl ? 100 : 0);\n }\n enable();\n }\n return sb;\n }\n disable() {\n const sb = this;\n if (!sb.enabled) return sb;\n const app = sb.app;\n sb.$inputEl.val('').trigger('change');\n sb.$el.removeClass('searchbar-enabled searchbar-focused searchbar-enabled-no-disable-button');\n if (sb.expandable) {\n const $navbarEl = sb.$el.parents('.navbar');\n const $pageContentEl = sb.$pageEl && sb.$pageEl.find('.page-content');\n if ($navbarEl.hasClass('navbar-large') && $pageContentEl.length) {\n const $titleLargeEl = $navbarEl.find('.title-large');\n sb.$el.transitionEnd(() => {\n $pageContentEl.removeClass('with-searchbar-expandable-closing');\n });\n if ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-large-collapsed') && $titleLargeEl.length) {\n const scrollTop = $pageContentEl[0].scrollTop;\n const titleLargeHeight = $titleLargeEl[0].offsetHeight;\n if (scrollTop > titleLargeHeight) {\n $pageContentEl.transition(0);\n $pageContentEl[0].scrollTop = scrollTop + titleLargeHeight;\n setTimeout(() => {\n $pageContentEl.transition('');\n }, 200);\n }\n }\n $pageContentEl.removeClass('with-searchbar-expandable-enabled').addClass('with-searchbar-expandable-closing');\n }\n if (app.theme === 'md' && $navbarEl.length) {\n $navbarEl.removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition').addClass('with-searchbar-expandable-closing');\n sb.$el.transitionEnd(() => {\n $navbarEl.removeClass('with-searchbar-expandable-closing');\n });\n } else {\n $navbarEl.removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition').addClass('with-searchbar-expandable-closing');\n sb.$el.transitionEnd(() => {\n $navbarEl.removeClass('with-searchbar-expandable-closing');\n });\n if (sb.$pageEl) {\n sb.$pageEl.find('.page-content').trigger('scroll');\n }\n }\n }\n if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme !== 'md') {\n sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, `${-sb.disableButtonEl.offsetWidth}px`);\n }\n if (sb.$backdropEl && (sb.$searchContainer && sb.$searchContainer.length || sb.params.customSearch)) {\n sb.backdropHide();\n }\n sb.enabled = false;\n sb.$inputEl.blur();\n if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.removeClass('hidden-by-searchbar');\n sb.$el.trigger('searchbar:disable');\n sb.emit('local::disable searchbarDisable', sb);\n return sb;\n }\n toggle() {\n const sb = this;\n if (sb.enabled) sb.disable();else sb.enable(true);\n return sb;\n }\n backdropShow() {\n const sb = this;\n if (sb.$backdropEl) {\n sb.$backdropEl.addClass('searchbar-backdrop-in');\n }\n return sb;\n }\n backdropHide() {\n const sb = this;\n if (sb.$backdropEl) {\n sb.$backdropEl.removeClass('searchbar-backdrop-in');\n }\n return sb;\n }\n search(query, internal) {\n const sb = this;\n sb.previousQuery = sb.query || '';\n if (query === sb.previousQuery) return sb;\n if (!internal) {\n if (!sb.enabled) {\n sb.enable();\n }\n sb.$inputEl.val(query);\n sb.$inputEl.trigger('input');\n }\n sb.query = query;\n sb.value = query;\n const {\n $searchContainer,\n $el,\n $foundEl,\n $notFoundEl,\n $hideOnSearchEl,\n isVirtualList\n } = sb;\n\n // Hide on search element\n if (query.length > 0 && $hideOnSearchEl) {\n $hideOnSearchEl.addClass('hidden-by-searchbar');\n } else if ($hideOnSearchEl) {\n $hideOnSearchEl.removeClass('hidden-by-searchbar');\n }\n // Add active/inactive classes on overlay\n if ($searchContainer && $searchContainer.length && $el.hasClass('searchbar-enabled') || sb.params.customSearch && $el.hasClass('searchbar-enabled')) {\n if (query.length === 0) {\n sb.backdropShow();\n } else {\n sb.backdropHide();\n }\n }\n if (sb.params.customSearch) {\n $el.trigger('searchbar:search', {\n query,\n previousQuery: sb.previousQuery\n });\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);\n return sb;\n }\n let foundItems = [];\n let vlQuery;\n if (isVirtualList) {\n sb.virtualList = $searchContainer[0].f7VirtualList;\n if (query.trim() === '') {\n sb.virtualList.resetFilter();\n if ($notFoundEl) $notFoundEl.hide();\n if ($foundEl) $foundEl.show();\n $el.trigger('searchbar:search', {\n query,\n previousQuery: sb.previousQuery\n });\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);\n return sb;\n }\n vlQuery = sb.params.removeDiacritics ? removeDiacritics(query) : query;\n if (sb.virtualList.params.searchAll) {\n foundItems = sb.virtualList.params.searchAll(vlQuery, sb.virtualList.items) || [];\n } else if (sb.virtualList.params.searchByItem) {\n for (let i = 0; i < sb.virtualList.items.length; i += 1) {\n if (sb.virtualList.params.searchByItem(vlQuery, sb.virtualList.items[i], i)) {\n foundItems.push(i);\n }\n }\n }\n } else {\n let values;\n if (sb.params.removeDiacritics) values = removeDiacritics(query.trim().toLowerCase()).split(' ');else {\n values = query.trim().toLowerCase().split(' ');\n }\n $searchContainer.find(sb.params.searchItem).removeClass('hidden-by-searchbar').each(itemEl => {\n const $itemEl = $(itemEl);\n let compareWithText = [];\n let $searchIn = sb.params.searchIn ? $itemEl.find(sb.params.searchIn) : $itemEl;\n if (sb.params.searchIn === sb.params.searchItem) {\n $searchIn = $itemEl;\n }\n $searchIn.each(searchInEl => {\n let itemText = $(searchInEl).text().trim().toLowerCase();\n if (sb.params.removeDiacritics) itemText = removeDiacritics(itemText);\n compareWithText.push(itemText);\n });\n compareWithText = compareWithText.join(' ');\n let wordsMatch = 0;\n for (let i = 0; i < values.length; i += 1) {\n if (compareWithText.indexOf(values[i]) >= 0) wordsMatch += 1;\n }\n if (wordsMatch !== values.length && !(sb.params.ignore && $itemEl.is(sb.params.ignore))) {\n $itemEl.addClass('hidden-by-searchbar');\n } else {\n foundItems.push($itemEl[0]);\n }\n });\n if (sb.params.hideGroupTitles) {\n $searchContainer.find(sb.params.searchGroupTitle).each(titleEl => {\n const $titleEl = $(titleEl);\n const $nextElements = $titleEl.nextAll(sb.params.searchItem);\n let hide = true;\n for (let i = 0; i < $nextElements.length; i += 1) {\n const $nextEl = $nextElements.eq(i);\n if ($nextEl.is(sb.params.searchGroupTitle)) break;\n if (!$nextEl.hasClass('hidden-by-searchbar')) {\n hide = false;\n }\n }\n const ignore = sb.params.ignore && $titleEl.is(sb.params.ignore);\n if (hide && !ignore) $titleEl.addClass('hidden-by-searchbar');else $titleEl.removeClass('hidden-by-searchbar');\n });\n }\n if (sb.params.hideGroups) {\n $searchContainer.find(sb.params.searchGroup).each(groupEl => {\n const $groupEl = $(groupEl);\n const ignore = sb.params.ignore && $groupEl.is(sb.params.ignore);\n // eslint-disable-next-line\n const notHidden = $groupEl.find(sb.params.searchItem).filter(el => {\n return !$(el).hasClass('hidden-by-searchbar');\n });\n if (notHidden.length === 0 && !ignore) {\n $groupEl.addClass('hidden-by-searchbar');\n } else {\n $groupEl.removeClass('hidden-by-searchbar');\n }\n });\n }\n }\n if (foundItems.length === 0) {\n if ($notFoundEl) $notFoundEl.show();\n if ($foundEl) $foundEl.hide();\n } else {\n if ($notFoundEl) $notFoundEl.hide();\n if ($foundEl) $foundEl.show();\n }\n if (isVirtualList && sb.virtualList) {\n sb.virtualList.filterItems(foundItems);\n }\n $el.trigger('searchbar:search', {\n query,\n previousQuery: sb.previousQuery,\n foundItems\n });\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery, foundItems);\n return sb;\n }\n init() {\n const sb = this;\n if (sb.expandable && sb.$el) sb.$el.addClass('searchbar-expandable');\n if (sb.inline && sb.$el) sb.$el.addClass('searchbar-inline');\n sb.attachEvents();\n }\n destroy() {\n const sb = this;\n sb.emit('local::beforeDestroy searchbarBeforeDestroy', sb);\n sb.$el.trigger('searchbar:beforedestroy');\n sb.detachEvents();\n if (sb.$el[0]) {\n sb.$el[0].f7Searchbar = null;\n delete sb.$el[0].f7Searchbar;\n }\n deleteProps(sb);\n }\n}\nexport default Searchbar;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Searchbar from './searchbar-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'searchbar',\n static: {\n Searchbar\n },\n create() {\n const app = this;\n app.searchbar = ConstructorMethods({\n defaultSelector: '.searchbar',\n constructor: Searchbar,\n app,\n domProp: 'f7Searchbar',\n addMethods: 'clear enable disable toggle search'.split(' ')\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.searchbar-init').each(searchbarEl => {\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(extend($searchbarEl.dataset(), {\n el: searchbarEl\n }));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.searchbar-init').each(searchbarEl => {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.searchbar-init').each(searchbarEl => {\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(extend($searchbarEl.dataset(), {\n el: searchbarEl\n }));\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.searchbar-init').each(searchbarEl => {\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(extend($searchbarEl.dataset(), {\n el: searchbarEl\n }));\n });\n }\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.searchbar-init').each(searchbarEl => {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.searchbar-init').each(searchbarEl => {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n }\n }\n },\n clicks: {\n '.searchbar-clear': function clear($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.clear();\n },\n '.searchbar-enable': function enable($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.enable(true);\n },\n '.searchbar-disable': function disable($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.disable();\n },\n '.searchbar-toggle': function toggle($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.toggle();\n }\n },\n vnode: {\n 'searchbar-init': {\n insert(vnode) {\n const app = this;\n const searchbarEl = vnode.elm;\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(extend($searchbarEl.dataset(), {\n el: searchbarEl\n }));\n },\n destroy(vnode) {\n const searchbarEl = vnode.elm;\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n }\n }\n }\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Messages extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const m = this;\n const defaults = {\n autoLayout: true,\n messages: [],\n newMessagesFirst: false,\n scrollMessages: true,\n scrollMessagesOnEdge: true,\n firstMessageRule: undefined,\n lastMessageRule: undefined,\n tailMessageRule: undefined,\n sameNameMessageRule: undefined,\n sameHeaderMessageRule: undefined,\n sameFooterMessageRule: undefined,\n sameAvatarMessageRule: undefined,\n customClassMessageRule: undefined,\n renderMessage: undefined\n };\n\n // Extend defaults with modules params\n m.useModulesParams(defaults);\n m.params = extend(defaults, params);\n const $el = $(params.el).eq(0);\n if ($el.length === 0) return m;\n if ($el[0].f7Messages) return $el[0].f7Messages;\n $el[0].f7Messages = m;\n const $pageContentEl = $el.closest('.page-content').eq(0);\n extend(m, {\n messages: m.params.messages,\n $el,\n el: $el[0],\n $pageContentEl,\n pageContentEl: $pageContentEl[0]\n });\n // Install Modules\n m.useModules();\n\n // Init\n m.init();\n return m;\n }\n // eslint-disable-next-line\n getMessageData(messageEl) {\n const $messageEl = $(messageEl);\n const data = {\n name: $messageEl.find('.message-name').html(),\n header: $messageEl.find('.message-header').html(),\n textHeader: $messageEl.find('.message-text-header').html(),\n textFooter: $messageEl.find('.message-text-footer').html(),\n footer: $messageEl.find('.message-footer').html(),\n isTitle: $messageEl.hasClass('messages-title'),\n type: $messageEl.hasClass('message-sent') ? 'sent' : 'received',\n text: $messageEl.find('.message-text').html(),\n image: $messageEl.find('.message-image').html(),\n imageSrc: $messageEl.find('.message-image img').attr('src'),\n typing: $messageEl.hasClass('message-typing')\n };\n if (data.isTitle) {\n data.text = $messageEl.html();\n }\n if (data.text && data.textHeader) {\n data.text = data.text.replace(`
                      ${data.textHeader}
                      `, '');\n }\n if (data.text && data.textFooter) {\n data.text = data.text.replace(`
                      ${data.textFooter}
                      `, '');\n }\n let avatar = $messageEl.find('.message-avatar').css('background-image');\n if (avatar === 'none' || avatar === '') avatar = undefined;\n if (avatar && typeof avatar === 'string') {\n avatar = avatar.replace('url(', '').replace(')', '').replace(/\"/g, '').replace(/'/g, '');\n } else {\n avatar = undefined;\n }\n data.avatar = avatar;\n return data;\n }\n getMessagesData() {\n const m = this;\n const data = [];\n m.$el.find('.message, .messages-title').each(messageEl => {\n data.push(m.getMessageData(messageEl));\n });\n return data;\n }\n renderMessage(messageToRender) {\n const m = this;\n const message = extend({\n type: 'sent',\n attrs: {}\n }, messageToRender);\n if (m.params.renderMessage) {\n return m.params.renderMessage.call(m, message);\n }\n if (message.isTitle) {\n return `
                      ${message.text}
                      `;\n }\n return $jsx(\"div\", _extends({\n class: `message message-${message.type} ${message.isTyping ? 'message-typing' : ''} ${message.cssClass || ''}`\n }, message.attrs), message.avatar && $jsx(\"div\", {\n class: \"message-avatar\",\n style: `background-image:url(${message.avatar})`\n }), $jsx(\"div\", {\n class: \"message-content\"\n }, message.name && $jsx(\"div\", {\n class: \"message-name\"\n }, message.name), message.header && $jsx(\"div\", {\n class: \"message-header\"\n }, message.header), $jsx(\"div\", {\n class: \"message-bubble\"\n }, message.textHeader && $jsx(\"div\", {\n class: \"message-text-header\"\n }, message.textHeader), message.image && $jsx(\"div\", {\n class: \"message-image\"\n }, message.image), message.imageSrc && !message.image && $jsx(\"div\", {\n class: \"message-image\"\n }, $jsx(\"img\", {\n src: message.imageSrc\n })), (message.text || message.isTyping) && $jsx(\"div\", {\n class: \"message-text\"\n }, message.text || '', message.isTyping && $jsx(\"div\", {\n class: \"message-typing-indicator\"\n }, $jsx(\"div\", null), $jsx(\"div\", null), $jsx(\"div\", null))), message.textFooter && $jsx(\"div\", {\n class: \"message-text-footer\"\n }, message.textFooter)), message.footer && $jsx(\"div\", {\n class: \"message-footer\"\n }, message.footer)));\n }\n renderMessages(messagesToRender, method) {\n if (messagesToRender === void 0) {\n messagesToRender = this.messages;\n }\n if (method === void 0) {\n method = this.params.newMessagesFirst ? 'prepend' : 'append';\n }\n const m = this;\n const html = messagesToRender.map(message => m.renderMessage(message)).join('');\n m.$el[method](html);\n }\n isFirstMessage() {\n const m = this;\n if (m.params.firstMessageRule) return m.params.firstMessageRule(...arguments);\n return false;\n }\n isLastMessage() {\n const m = this;\n if (m.params.lastMessageRule) return m.params.lastMessageRule(...arguments);\n return false;\n }\n isTailMessage() {\n const m = this;\n if (m.params.tailMessageRule) return m.params.tailMessageRule(...arguments);\n return false;\n }\n isSameNameMessage() {\n const m = this;\n if (m.params.sameNameMessageRule) return m.params.sameNameMessageRule(...arguments);\n return false;\n }\n isSameHeaderMessage() {\n const m = this;\n if (m.params.sameHeaderMessageRule) return m.params.sameHeaderMessageRule(...arguments);\n return false;\n }\n isSameFooterMessage() {\n const m = this;\n if (m.params.sameFooterMessageRule) return m.params.sameFooterMessageRule(...arguments);\n return false;\n }\n isSameAvatarMessage() {\n const m = this;\n if (m.params.sameAvatarMessageRule) return m.params.sameAvatarMessageRule(...arguments);\n return false;\n }\n isCustomClassMessage() {\n const m = this;\n if (m.params.customClassMessageRule) return m.params.customClassMessageRule(...arguments);\n return undefined;\n }\n layout() {\n const m = this;\n m.$el.find('.message, .messages-title').each((messageEl, index) => {\n const $messageEl = $(messageEl);\n if (!m.messages) {\n m.messages = m.getMessagesData();\n }\n const classes = [];\n const message = m.messages[index];\n const previousMessage = m.messages[index - 1];\n const nextMessage = m.messages[index + 1];\n if (m.isFirstMessage(message, previousMessage, nextMessage)) {\n classes.push('message-first');\n }\n if (m.isLastMessage(message, previousMessage, nextMessage)) {\n classes.push('message-last');\n }\n if (m.isTailMessage(message, previousMessage, nextMessage)) {\n classes.push('message-tail');\n }\n if (m.isSameNameMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-name');\n }\n if (m.isSameHeaderMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-header');\n }\n if (m.isSameFooterMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-footer');\n }\n if (m.isSameAvatarMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-avatar');\n }\n let customMessageClasses = m.isCustomClassMessage(message, previousMessage, nextMessage);\n if (customMessageClasses && customMessageClasses.length) {\n if (typeof customMessageClasses === 'string') {\n customMessageClasses = customMessageClasses.split(' ');\n }\n customMessageClasses.forEach(customClass => {\n classes.push(customClass);\n });\n }\n $messageEl.removeClass('message-first message-last message-tail message-same-name message-same-header message-same-footer message-same-avatar');\n classes.forEach(className => {\n $messageEl.addClass(className);\n });\n });\n }\n clear() {\n const m = this;\n m.messages = [];\n m.$el.html('');\n }\n removeMessage(messageToRemove, layout) {\n if (layout === void 0) {\n layout = true;\n }\n const m = this;\n // Index or El\n let index;\n let $el;\n if (typeof messageToRemove === 'number') {\n index = messageToRemove;\n $el = m.$el.find('.message, .messages-title').eq(index);\n } else if (m.messages && m.messages.indexOf(messageToRemove) >= 0) {\n index = m.messages.indexOf(messageToRemove);\n $el = m.$el.children().eq(index);\n } else {\n $el = $(messageToRemove);\n index = $el.index();\n }\n if ($el.length === 0) {\n return m;\n }\n $el.remove();\n m.messages.splice(index, 1);\n if (m.params.autoLayout && layout) m.layout();\n return m;\n }\n removeMessages(messagesToRemove, layout) {\n if (layout === void 0) {\n layout = true;\n }\n const m = this;\n if (Array.isArray(messagesToRemove)) {\n const messagesToRemoveEls = [];\n messagesToRemove.forEach(messageToRemoveIndex => {\n messagesToRemoveEls.push(m.$el.find('.message, .messages-title').eq(messageToRemoveIndex));\n });\n messagesToRemoveEls.forEach(messageToRemove => {\n m.removeMessage(messageToRemove, false);\n });\n } else {\n $(messagesToRemove).each(messageToRemove => {\n m.removeMessage(messageToRemove, false);\n });\n }\n if (m.params.autoLayout && layout) m.layout();\n return m;\n }\n addMessage() {\n const m = this;\n let messageToAdd;\n let animate;\n let method;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[1] === 'boolean') {\n [messageToAdd, animate, method] = args;\n } else {\n [messageToAdd, method, animate] = args;\n }\n if (typeof animate === 'undefined') {\n animate = true;\n }\n if (typeof method === 'undefined') {\n method = m.params.newMessagesFirst ? 'prepend' : 'append';\n }\n return m.addMessages([messageToAdd], animate, method);\n }\n setScrollData() {\n const m = this;\n // Define scroll positions before new messages added\n const scrollHeightBefore = m.pageContentEl.scrollHeight;\n const heightBefore = m.pageContentEl.offsetHeight;\n const scrollBefore = m.pageContentEl.scrollTop;\n m.scrollData = {\n scrollHeightBefore,\n heightBefore,\n scrollBefore\n };\n return {\n scrollHeightBefore,\n heightBefore,\n scrollBefore\n };\n }\n addMessages() {\n const m = this;\n let messagesToAdd;\n let animate;\n let method;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[1] === 'boolean') {\n [messagesToAdd, animate, method] = args;\n } else {\n [messagesToAdd, method, animate] = args;\n }\n if (typeof animate === 'undefined') {\n animate = true;\n }\n if (typeof method === 'undefined') {\n method = m.params.newMessagesFirst ? 'prepend' : 'append';\n }\n const {\n scrollHeightBefore,\n scrollBefore\n } = m.setScrollData();\n\n // Add message to DOM and data\n let messagesHTML = '';\n const typingMessage = m.messages.filter(el => el.isTyping)[0];\n messagesToAdd.forEach(messageToAdd => {\n if (typingMessage) {\n if (method === 'append') {\n m.messages.splice(m.messages.indexOf(typingMessage), 0, messageToAdd);\n } else {\n m.messages.splice(m.messages.indexOf(typingMessage) + 1, 0, messageToAdd);\n }\n } else {\n m.messages[method === 'append' ? 'push' : 'unshift'](messageToAdd);\n }\n messagesHTML += m.renderMessage(messageToAdd);\n });\n const $messagesEls = $(messagesHTML);\n if (animate) {\n if (method === 'append' && !m.params.newMessagesFirst) {\n $messagesEls.addClass('message-appear-from-bottom');\n }\n if (method === 'prepend' && m.params.newMessagesFirst) {\n $messagesEls.addClass('message-appear-from-top');\n }\n }\n if (typingMessage) {\n if (method === 'append') {\n $messagesEls.insertBefore(m.$el.find('.message-typing'));\n } else {\n $messagesEls.insertAfter(m.$el.find('.message-typing'));\n }\n } else {\n m.$el[method]($messagesEls);\n }\n\n // Layout\n if (m.params.autoLayout) m.layout();\n if (method === 'prepend' && !typingMessage) {\n m.pageContentEl.scrollTop = scrollBefore + (m.pageContentEl.scrollHeight - scrollHeightBefore);\n }\n if (m.params.scrollMessages && (method === 'append' && !m.params.newMessagesFirst || method === 'prepend' && m.params.newMessagesFirst && !typingMessage)) {\n m.scrollWithEdgeCheck(animate);\n }\n return m;\n }\n showTyping(message) {\n if (message === void 0) {\n message = {};\n }\n const m = this;\n const typingMessage = m.messages.filter(el => el.isTyping)[0];\n if (typingMessage) {\n m.removeMessage(m.messages.indexOf(typingMessage));\n }\n m.addMessage(extend({\n type: 'received',\n isTyping: true\n }, message));\n return m;\n }\n hideTyping() {\n const m = this;\n let typingMessageIndex;\n let typingFound;\n m.messages.forEach((message, index) => {\n if (message.isTyping) typingMessageIndex = index;\n });\n if (typeof typingMessageIndex !== 'undefined') {\n if (m.$el.find('.message').eq(typingMessageIndex).hasClass('message-typing')) {\n typingFound = true;\n m.removeMessage(typingMessageIndex);\n }\n }\n if (!typingFound) {\n const $typingMessageEl = m.$el.find('.message-typing');\n if ($typingMessageEl.length) {\n m.removeMessage($typingMessageEl);\n }\n }\n return m;\n }\n scrollWithEdgeCheck(animate) {\n const m = this;\n const {\n scrollBefore,\n scrollHeightBefore,\n heightBefore\n } = m.scrollData;\n if (m.params.scrollMessagesOnEdge) {\n let onEdge = false;\n if (m.params.newMessagesFirst && scrollBefore === 0) {\n onEdge = true;\n }\n if (!m.params.newMessagesFirst && scrollBefore - (scrollHeightBefore - heightBefore) >= -10) {\n onEdge = true;\n }\n if (onEdge) m.scroll(animate ? undefined : 0);\n } else {\n m.scroll(animate ? undefined : 0);\n }\n }\n scroll(duration, scrollTop) {\n if (duration === void 0) {\n duration = 300;\n }\n const m = this;\n const currentScroll = m.pageContentEl.scrollTop;\n let newScrollTop;\n if (typeof scrollTop !== 'undefined') newScrollTop = scrollTop;else {\n newScrollTop = m.params.newMessagesFirst ? 0 : m.pageContentEl.scrollHeight - m.pageContentEl.offsetHeight;\n if (newScrollTop === currentScroll) return m;\n }\n m.$pageContentEl.scrollTop(newScrollTop, duration);\n return m;\n }\n init() {\n const m = this;\n if (!m.messages || m.messages.length === 0) {\n m.messages = m.getMessagesData();\n }\n if (m.params.messages && m.params.messages.length) {\n m.renderMessages();\n }\n if (m.params.autoLayout) m.layout();\n if (m.params.scrollMessages) m.scroll(0);\n }\n destroy() {\n const m = this;\n m.emit('local::beforeDestroy messagesBeforeDestroy', m);\n m.$el.trigger('messages:beforedestroy');\n if (m.$el[0]) {\n m.$el[0].f7Messages = null;\n delete m.$el[0].f7Messages;\n }\n deleteProps(m);\n }\n}\nexport default Messages;","import $ from '../../shared/dom7.js';\nimport Messages from './messages-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'messages',\n static: {\n Messages\n },\n create() {\n const app = this;\n app.messages = ConstructorMethods({\n defaultSelector: '.messages',\n constructor: Messages,\n app,\n domProp: 'f7Messages',\n addMethods: 'renderMessages layout scroll clear removeMessage removeMessages addMessage addMessages'.split(' ')\n });\n },\n on: {\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.messages-init').each(messagesEl => {\n app.messages.destroy(messagesEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.messages-init').each(messagesEl => {\n app.messages.create({\n el: messagesEl\n });\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.messages-init').each(messagesEl => {\n app.messages.destroy(messagesEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.messages-init').each(messagesEl => {\n app.messages.create({\n el: messagesEl\n });\n });\n }\n },\n vnode: {\n 'messages-init': {\n insert(vnode) {\n const app = this;\n const messagesEl = vnode.elm;\n app.messages.create({\n el: messagesEl\n });\n },\n destroy(vnode) {\n const app = this;\n const messagesEl = vnode.elm;\n app.messages.destroy(messagesEl);\n }\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nclass Messagebar extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const messagebar = this;\n const defaults = {\n top: false,\n topOffset: 0,\n bottomOffset: 0,\n attachments: [],\n renderAttachments: undefined,\n renderAttachment: undefined,\n maxHeight: null,\n resizePage: true\n };\n\n // Extend defaults with modules params\n messagebar.useModulesParams(defaults);\n messagebar.params = extend(defaults, params);\n\n // El\n const $el = $(messagebar.params.el);\n if ($el.length === 0) return messagebar;\n if ($el[0].f7Messagebar) return $el[0].f7Messagebar;\n $el[0].f7Messagebar = messagebar;\n\n // Page and PageContent\n const $pageEl = $el.parents('.page').eq(0);\n const $pageContentEl = $pageEl.find('.page-content').eq(0);\n\n // Area\n const $areaEl = $el.find('.messagebar-area');\n\n // Textarea\n let $textareaEl;\n if (messagebar.params.textareaEl) {\n $textareaEl = $(messagebar.params.textareaEl);\n } else {\n $textareaEl = $el.find('textarea');\n }\n\n // Attachments & Library\n const $attachmentsEl = $el.find('.messagebar-attachments');\n const $sheetEl = $el.find('.messagebar-sheet');\n if (messagebar.params.top) {\n $el.addClass('messagebar-top');\n }\n extend(messagebar, {\n $el,\n el: $el[0],\n $areaEl,\n areaEl: $areaEl[0],\n $textareaEl,\n textareaEl: $textareaEl[0],\n $attachmentsEl,\n attachmentsEl: $attachmentsEl[0],\n attachmentsVisible: $attachmentsEl.hasClass('messagebar-attachments-visible'),\n $sheetEl,\n sheetEl: $sheetEl[0],\n sheetVisible: $sheetEl.hasClass('messagebar-sheet-visible'),\n $pageEl,\n pageEl: $pageEl[0],\n $pageContentEl,\n pageContentEl: $pageContentEl,\n top: $el.hasClass('messagebar-top') || messagebar.params.top,\n attachments: []\n });\n\n // Events\n function onAppResize() {\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n }\n function onSubmit(e) {\n e.preventDefault();\n }\n function onAttachmentClick(e) {\n const index = $(this).index();\n if ($(e.target).closest('.messagebar-attachment-delete').length) {\n $(this).trigger('messagebar:attachmentdelete', index);\n messagebar.emit('local::attachmentDelete messagebarAttachmentDelete', messagebar, this, index);\n } else {\n $(this).trigger('messagebar:attachmentclick', index);\n messagebar.emit('local::attachmentClick messagebarAttachmentClick', messagebar, this, index);\n }\n }\n function onTextareaChange() {\n messagebar.checkEmptyState();\n messagebar.$el.trigger('messagebar:change');\n messagebar.emit('local::change messagebarChange', messagebar);\n }\n function onTextareaFocus() {\n messagebar.sheetHide();\n messagebar.$el.addClass('messagebar-focused');\n messagebar.$el.trigger('messagebar:focus');\n messagebar.emit('local::focus messagebarFocus', messagebar);\n }\n function onTextareaBlur() {\n messagebar.$el.removeClass('messagebar-focused');\n messagebar.$el.trigger('messagebar:blur');\n messagebar.emit('local::blur messagebarBlur', messagebar);\n }\n messagebar.attachEvents = function attachEvents() {\n $el.on('textarea:resize', onAppResize);\n $el.on('submit', onSubmit);\n $el.on('click', '.messagebar-attachment', onAttachmentClick);\n $textareaEl.on('change input', onTextareaChange);\n $textareaEl.on('focus', onTextareaFocus);\n $textareaEl.on('blur', onTextareaBlur);\n app.on('resize', onAppResize);\n };\n messagebar.detachEvents = function detachEvents() {\n $el.off('textarea:resize', onAppResize);\n $el.off('submit', onSubmit);\n $el.off('click', '.messagebar-attachment', onAttachmentClick);\n $textareaEl.off('change input', onTextareaChange);\n $textareaEl.off('focus', onTextareaFocus);\n $textareaEl.off('blur', onTextareaBlur);\n app.off('resize', onAppResize);\n };\n\n // Install Modules\n messagebar.useModules();\n\n // Init\n messagebar.init();\n return messagebar;\n }\n focus() {\n const messagebar = this;\n messagebar.$textareaEl.focus();\n return messagebar;\n }\n blur() {\n const messagebar = this;\n messagebar.$textareaEl.blur();\n return messagebar;\n }\n clear() {\n const messagebar = this;\n messagebar.$textareaEl.val('').trigger('change');\n return messagebar;\n }\n getValue() {\n const messagebar = this;\n return messagebar.$textareaEl.val().trim();\n }\n setValue(value) {\n const messagebar = this;\n messagebar.$textareaEl.val(value).trigger('change');\n return messagebar;\n }\n setPlaceholder(placeholder) {\n const messagebar = this;\n messagebar.$textareaEl.attr('placeholder', placeholder);\n return messagebar;\n }\n resizePage() {\n const messagebar = this;\n const {\n params,\n $el,\n top,\n $pageEl,\n $pageContentEl,\n $areaEl,\n $textareaEl,\n $sheetEl,\n $attachmentsEl\n } = messagebar;\n const elHeight = $el[0].offsetHeight;\n let maxHeight = params.maxHeight;\n if (top) {\n /*\n Disable at the moment\n const requiredPaddingTop = elHeight + params.topOffset;\n const currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n if (requiredPaddingTop !== currentPaddingTop) {\n if (!maxHeight) {\n maxHeight = $pageEl[0].offsetHeight - currentPaddingTop - $sheetEl.outerHeight() - $attachmentsEl.outerHeight() - parseInt($areaEl.css('margin-top'), 10) - parseInt($areaEl.css('margin-bottom'), 10);\n }\n $textareaEl.css('max-height', `${maxHeight}px`);\n $pageContentEl.css('padding-top', `${requiredPaddingTop}px`);\n $el.trigger('messagebar:resizePage');\n messagebar.emit('local::resizepage messagebarResizePage');\n }\n */\n } else {\n const currentPaddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n const requiredPaddingBottom = elHeight + params.bottomOffset;\n if (requiredPaddingBottom !== currentPaddingBottom && $pageContentEl.length) {\n const currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const pageScrollHeight = $pageContentEl[0].scrollHeight;\n const pageOffsetHeight = $pageContentEl[0].offsetHeight;\n const pageScrollTop = $pageContentEl[0].scrollTop;\n const scrollOnBottom = pageScrollTop === pageScrollHeight - pageOffsetHeight;\n if (!maxHeight) {\n maxHeight = $pageEl[0].offsetHeight - currentPaddingTop - $sheetEl.outerHeight() - $attachmentsEl.outerHeight() - parseInt($areaEl.css('margin-top'), 10) - parseInt($areaEl.css('margin-bottom'), 10);\n }\n $textareaEl.css('max-height', `${maxHeight}px`);\n $pageContentEl.css('padding-bottom', `${requiredPaddingBottom}px`);\n if (scrollOnBottom) {\n $pageContentEl.scrollTop($pageContentEl[0].scrollHeight - pageOffsetHeight);\n }\n $el.trigger('messagebar:resizepage');\n messagebar.emit('local::resizePage messagebarResizePage', messagebar);\n }\n }\n }\n checkEmptyState() {\n const messagebar = this;\n const {\n $el,\n $textareaEl\n } = messagebar;\n const value = $textareaEl.val().trim();\n if (value && value.length) {\n $el.addClass('messagebar-with-value');\n } else {\n $el.removeClass('messagebar-with-value');\n }\n }\n attachmentsCreate(innerHTML) {\n if (innerHTML === void 0) {\n innerHTML = '';\n }\n const messagebar = this;\n const $attachmentsEl = $(`
                      ${innerHTML}
                      `);\n $attachmentsEl.insertBefore(messagebar.$textareaEl);\n extend(messagebar, {\n $attachmentsEl,\n attachmentsEl: $attachmentsEl[0]\n });\n return messagebar;\n }\n attachmentsShow(innerHTML) {\n if (innerHTML === void 0) {\n innerHTML = '';\n }\n const messagebar = this;\n messagebar.$attachmentsEl = messagebar.$el.find('.messagebar-attachments');\n if (messagebar.$attachmentsEl.length === 0) {\n messagebar.attachmentsCreate(innerHTML);\n }\n messagebar.$el.addClass('messagebar-attachments-visible');\n messagebar.attachmentsVisible = true;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n attachmentsHide() {\n const messagebar = this;\n messagebar.$el.removeClass('messagebar-attachments-visible');\n messagebar.attachmentsVisible = false;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n attachmentsToggle() {\n const messagebar = this;\n if (messagebar.attachmentsVisible) {\n messagebar.attachmentsHide();\n } else {\n messagebar.attachmentsShow();\n }\n return messagebar;\n }\n renderAttachment(attachment) {\n const messagebar = this;\n if (messagebar.params.renderAttachment) {\n return messagebar.params.renderAttachment.call(messagebar, attachment);\n }\n return `\n
                      \n \n \n
                      \n `;\n }\n renderAttachments() {\n const messagebar = this;\n let html;\n if (messagebar.params.renderAttachments) {\n html = messagebar.params.renderAttachments.call(messagebar, messagebar.attachments);\n } else {\n html = `${messagebar.attachments.map(attachment => messagebar.renderAttachment(attachment)).join('')}`;\n }\n if (messagebar.$attachmentsEl.length === 0) {\n messagebar.attachmentsCreate(html);\n } else {\n messagebar.$attachmentsEl.html(html);\n }\n }\n sheetCreate(innerHTML) {\n if (innerHTML === void 0) {\n innerHTML = '';\n }\n const messagebar = this;\n const $sheetEl = $(`
                      ${innerHTML}
                      `);\n messagebar.$el.append($sheetEl);\n extend(messagebar, {\n $sheetEl,\n sheetEl: $sheetEl[0]\n });\n return messagebar;\n }\n sheetShow(innerHTML) {\n if (innerHTML === void 0) {\n innerHTML = '';\n }\n const messagebar = this;\n messagebar.$sheetEl = messagebar.$el.find('.messagebar-sheet');\n if (messagebar.$sheetEl.length === 0) {\n messagebar.sheetCreate(innerHTML);\n }\n messagebar.$el.addClass('messagebar-sheet-visible');\n messagebar.sheetVisible = true;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n sheetHide() {\n const messagebar = this;\n messagebar.$el.removeClass('messagebar-sheet-visible');\n messagebar.sheetVisible = false;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n sheetToggle() {\n const messagebar = this;\n if (messagebar.sheetVisible) {\n messagebar.sheetHide();\n } else {\n messagebar.sheetShow();\n }\n return messagebar;\n }\n init() {\n const messagebar = this;\n messagebar.attachEvents();\n messagebar.checkEmptyState();\n return messagebar;\n }\n destroy() {\n const messagebar = this;\n messagebar.emit('local::beforeDestroy messagebarBeforeDestroy', messagebar);\n messagebar.$el.trigger('messagebar:beforedestroy');\n messagebar.detachEvents();\n if (messagebar.$el[0]) {\n messagebar.$el[0].f7Messagebar = null;\n delete messagebar.$el[0].f7Messagebar;\n }\n deleteProps(messagebar);\n }\n}\nexport default Messagebar;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Messagebar from './messagebar-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'messagebar',\n static: {\n Messagebar\n },\n create() {\n const app = this;\n app.messagebar = ConstructorMethods({\n defaultSelector: '.messagebar',\n constructor: Messagebar,\n app,\n domProp: 'f7Messagebar',\n addMethods: 'clear getValue setValue setPlaceholder resizePage focus blur attachmentsCreate attachmentsShow attachmentsHide attachmentsToggle renderAttachments sheetCreate sheetShow sheetHide sheetToggle'.split(' ')\n });\n },\n on: {\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.messagebar-init').each(messagebarEl => {\n app.messagebar.destroy(messagebarEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.messagebar-init').each(messagebarEl => {\n app.messagebar.create(extend({\n el: messagebarEl\n }, $(messagebarEl).dataset()));\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.messagebar-init').each(messagebarEl => {\n app.messagebar.destroy(messagebarEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.messagebar-init').each(messagebarEl => {\n app.messagebar.create(extend({\n el: messagebarEl\n }, $(messagebarEl).dataset()));\n });\n }\n },\n vnode: {\n 'messagebar-init': {\n insert(vnode) {\n const app = this;\n const messagebarEl = vnode.elm;\n app.messagebar.create(extend({\n el: messagebarEl\n }, $(messagebarEl).dataset()));\n },\n destroy(vnode) {\n const app = this;\n const messagebarEl = vnode.elm;\n app.messagebar.destroy(messagebarEl);\n }\n }\n }\n};","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : [classes]));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, elementIndex as g, getTranslate as h, elementTransitionEnd as i, isObject as j, getSlideTransformEl as k, elementStyle as l, elementNextAll as m, nextTick as n, elementPrevAll as o, animateCSSModeScroll as p, extend as q, deleteProps as r, setCSSProperty as s };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, l as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, m as elementNextAll, o as elementPrevAll, h as getTranslate, p as animateCSSModeScroll, n as nextTick, d as now, q as extend, g as elementIndex, c as createElement, r as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n return {\n isSafari: needPerspectiveFix || isSafari(),\n needPerspectiveFix,\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass);\n });\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides[i].classList.add(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n });\n let activeSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n activeSlide = slides[activeIndex];\n }\n if (activeSlide) {\n // Active classes\n activeSlide.classList.add(params.slideActiveClass);\n\n // Next Slide\n let nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n }\n return;\n }\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (swiper.slides[activeIndex]) {\n realIndex = parseInt(swiper.slides[activeIndex].getAttribute('data-swiper-slide-index') || activeIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled) return swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10));\n let loopedSlides = params.loopedSlides || slidesPerView;\n if (loopedSlides % params.slidesPerGroup !== 0) {\n loopedSlides += params.slidesPerGroup - loopedSlides % params.slidesPerGroup;\n }\n swiper.loopedSlides = loopedSlides;\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(swiper.slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n // prepend last slides before start\n if (activeSlideIndex < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeSlideIndex; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n prependSlidesIndexes.push(slides.length - index - 1);\n }\n } else if (activeSlideIndex /* + slidesPerView */ > swiper.slides.length - loopedSlides * 2) {\n slidesAppended = Math.max(activeSlideIndex - (swiper.slides.length - loopedSlides * 2), params.slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlidesIndexes.push(index);\n }\n }\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else {\n if (setTranslate) {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n data.evCache.push(event);\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) data.evCache[pointerIndex] = e;\n const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n prevX: swiper.touches.currentX,\n prevY: swiper.touches.currentY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled && data.evCache.length > 1) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.swipeDirection === 'next' && swiper.allowSlideNext || swiper.swipeDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n // need another loop fix\n swiper.loopFix({\n direction: swiper.swipeDirection,\n setTranslate: true\n });\n loopFixed = true;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === event.pointerId);\n if (pointerIndex >= 0) {\n data.evCache.splice(pointerIndex, 1);\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(event.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(event.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopedSlides: null,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n evCache: []\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","function appendSlide(slides) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n const appendElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.append(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.append(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) appendElement(slides[i]);\n }\n } else {\n appendElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n}\n\nfunction prependSlide(slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n const prependElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.prepend(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.prepend(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) prependElement(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n prependElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide(index, slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.recalcSlides();\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides[i];\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) slidesEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n slidesEl.append(slides);\n }\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n slidesEl.append(slidesBuffer[i]);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n\nfunction Manipulation(_ref) {\n let {\n swiper\n } = _ref;\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}\n\nexport { Manipulation as default };\n","function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n\nexport { effectInit as e };\n","import { k as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}\n\nexport { effectTarget as e };\n","import { i as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformElements,\n allSlides\n } = _ref;\n const {\n activeIndex\n } = swiper;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) {\n transitionEndTarget = transformElements;\n } else {\n transitionEndTarget = transformElements.filter(transformEl => {\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n }\n transitionEndTarget.forEach(el => {\n elementTransitionEnd(el, () => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n}\n\nexport { effectVirtualTransitionEnd as e };\n","import { k as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n const shadowContainer = getSlideTransformEl(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n if (!shadowEl) {\n shadowEl = createElement('div', shadowClass.split(' '));\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\n}\n\nexport { createShadow as c };\n","/**\n * Swiper 10.3.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: September 28, 2023\n */\n\nimport { S as Swiper } from './shared/swiper-core.mjs';\nimport Virtual from './modules/virtual.mjs';\nimport Keyboard from './modules/keyboard.mjs';\nimport Mousewheel from './modules/mousewheel.mjs';\nimport Navigation from './modules/navigation.mjs';\nimport Pagination from './modules/pagination.mjs';\nimport Scrollbar from './modules/scrollbar.mjs';\nimport Parallax from './modules/parallax.mjs';\nimport Zoom from './modules/zoom.mjs';\nimport Controller from './modules/controller.mjs';\nimport A11y from './modules/a11y.mjs';\nimport History from './modules/history.mjs';\nimport HashNavigation from './modules/hash-navigation.mjs';\nimport Autoplay from './modules/autoplay.mjs';\nimport Thumb from './modules/thumbs.mjs';\nimport freeMode from './modules/free-mode.mjs';\nimport Grid from './modules/grid.mjs';\nimport Manipulation from './modules/manipulation.mjs';\nimport EffectFade from './modules/effect-fade.mjs';\nimport EffectCube from './modules/effect-cube.mjs';\nimport EffectFlip from './modules/effect-flip.mjs';\nimport EffectCoverflow from './modules/effect-coverflow.mjs';\nimport EffectCreative from './modules/effect-creative.mjs';\nimport EffectCards from './modules/effect-cards.mjs';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n\nexport { Swiper, Swiper as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n const document = getDocument();\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n const tempDOM = document.createElement('div');\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n // eslint-disable-next-line\n let slideEl;\n if (params.renderSlide) {\n slideEl = params.renderSlide.call(swiper, slide, index);\n if (typeof slideEl === 'string') {\n tempDOM.innerHTML = slideEl;\n slideEl = tempDOM.children[0];\n }\n } else if (swiper.isElement) {\n slideEl = createElement('swiper-slide');\n } else {\n slideEl = createElement('div', swiper.params.slideClass);\n }\n slideEl.setAttribute('data-swiper-slide-index', index);\n if (!params.renderSlide) {\n slideEl.innerHTML = slide;\n }\n if (params.cache) {\n swiper.virtual.cache[index] = slideEl;\n }\n return slideEl;\n }\n function update(force) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides,\n loop: isLoop\n } = swiper.params;\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n }\n let from = activeIndex - slidesBefore;\n let to = activeIndex + slidesAfter;\n if (!isLoop) {\n from = Math.max(from, 0);\n to = Math.min(to, slides.length - 1);\n }\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n if (isLoop && activeIndex >= slidesBefore) {\n from -= slidesBefore;\n if (!centeredSlides) offset += swiper.slidesGrid[0];\n } else if (isLoop && activeIndex < slidesBefore) {\n from = -slidesBefore;\n if (centeredSlides) offset += swiper.slidesGrid[0];\n }\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n slidesBefore,\n slidesAfter\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n emit('virtualUpdate');\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n if (force) {\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\n slideEl.remove();\n });\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n const slideIndex = getSlideIndex(i);\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\n slideEl.remove();\n });\n }\n }\n }\n const loopFrom = isLoop ? -slides.length : 0;\n const loopTo = isLoop ? slides.length * 2 : slides.length;\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n const slideIndex = getSlideIndex(i);\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(slideIndex);\n } else {\n if (i > previousTo) appendIndexes.push(slideIndex);\n if (i < previousFrom) prependIndexes.push(slideIndex);\n }\n }\n }\n appendIndexes.forEach(index => {\n swiper.slidesEl.append(renderSlide(slides[index], index));\n });\n if (isLoop) {\n for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n const index = prependIndexes[i];\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n }\n } else {\n prependIndexes.sort((a, b) => b - a);\n prependIndexes.forEach(index => {\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n });\n }\n elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n onRendered();\n }\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const cachedEl = cache[cachedIndex];\n const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n if (cachedElIndex) {\n cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n let domSlidesAssigned;\n if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n if (slides && slides.length) {\n swiper.virtual.slides = [...slides];\n domSlidesAssigned = true;\n slides.forEach((slideEl, slideIndex) => {\n slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n swiper.virtual.cache[slideIndex] = slideEl;\n slideEl.remove();\n });\n }\n }\n if (!domSlidesAssigned) {\n swiper.virtual.slides = swiper.params.virtual.slides;\n }\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n update();\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}\n\nexport { Virtual as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl) swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}\n\nexport { Keyboard as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n noMousewheelClass: 'swiper-no-mousewheel'\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\n if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0) return true;\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.loop) {\n swiper.loopFix({\n direction: newEvent.direction < 0 ? 'next' : 'prev',\n byMousewheel: true\n });\n }\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n return true;\n }\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n targetEl[method]('mouseenter', handleMouseEnter);\n targetEl[method]('mouseleave', handleMouseLeave);\n targetEl[method]('wheel', handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('addEventListener');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('removeEventListener');\n swiper.mousewheel.enabled = false;\n return true;\n }\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}\n\nexport { Mousewheel as default };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { f as elementOuterSize, g as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const realIndex = swiper.realIndex;\n const newSlideIndex = swiper.getSlideIndexByData(index);\n const currentSlideIndex = swiper.getSlideIndexByData(swiper.realIndex);\n const loopFix = dir => {\n const indexBeforeLoopFix = swiper.activeIndex;\n swiper.loopFix({\n direction: dir,\n activeSlideIndex: newSlideIndex,\n slideTo: false\n });\n const indexAfterFix = swiper.activeIndex;\n if (indexBeforeLoopFix === indexAfterFix) {\n swiper.slideToLoop(realIndex, 0, false, true);\n }\n };\n if (newSlideIndex > swiper.slides.length - swiper.loopedSlides) {\n loopFix(newSlideIndex > currentSlideIndex ? 'next' : 'prev');\n } else if (swiper.params.centeredSlides) {\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (newSlideIndex < Math.floor(slidesPerView / 2)) {\n loopFix('prev');\n }\n }\n swiper.slideToLoop(index);\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\n\nfunction Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n } else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n } else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const {\n scrollbar,\n params\n } = swiper;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const {\n scrollbar,\n el: swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = document.querySelectorAll(params.el);\n } else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(`.${swiper.params.scrollbar.dragClass}`);\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n disableDraggable();\n }\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n el\n } = swiper.scrollbar;\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}\n\nexport { Scrollbar as default };\n","import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n parallax: {\n enabled: false\n }\n });\n const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const rtlFactor = rtl ? -1 : 1;\n const p = el.getAttribute('data-swiper-parallax') || '0';\n let x = el.getAttribute('data-swiper-parallax-x');\n let y = el.getAttribute('data-swiper-parallax-y');\n const scale = el.getAttribute('data-swiper-parallax-scale');\n const opacity = el.getAttribute('data-swiper-parallax-opacity');\n const rotate = el.getAttribute('data-swiper-parallax-rotate');\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n el.style.opacity = currentOpacity;\n }\n let transform = `translate3d(${x}, ${y}, 0px)`;\n if (typeof scale !== 'undefined' && scale !== null) {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n transform += ` scale(${currentScale})`;\n }\n if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n const currentRotate = rotate * progress * -1;\n transform += ` rotate(${currentRotate}deg)`;\n }\n el.style.transform = transform;\n };\n const setTranslate = () => {\n const {\n el,\n slides,\n progress,\n snapGrid,\n isElement\n } = swiper;\n const elements = elementChildren(el, elementsSelector);\n if (swiper.isElement) {\n elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n }\n elements.forEach(subEl => {\n setTransform(subEl, progress);\n });\n slides.forEach((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n setTransform(subEl, slideProgress);\n });\n });\n };\n const setTransition = function (duration) {\n if (duration === void 0) {\n duration = swiper.params.speed;\n }\n const {\n el,\n hostEl\n } = swiper;\n const elements = [...el.querySelectorAll(elementsSelector)];\n if (swiper.isElement) {\n elements.push(...hostEl.querySelectorAll(elementsSelector));\n }\n elements.forEach(parallaxEl => {\n let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n });\n };\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n\nexport { Parallax as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, h as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n originX: 0,\n originY: 0,\n slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n imageEl: undefined,\n imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2) return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) {\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n } else if (zoom.scale <= 1 && gesture.slideEl) {\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n }\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !gesture.slideEl) return;\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth;\n image.height = gesture.imageEl.offsetHeight;\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n if (touchesDiff > 5) {\n swiper.allowClick = false;\n }\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n image.isMoved = true;\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n const {\n originX,\n originY\n } = gesture;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n if (gesture.imageEl) {\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n }\n if (gesture.imageWrapEl) {\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n }\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n }\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n }\n zoom.scale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n currentScale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth;\n imageHeight = gesture.imageEl.offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd();\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}\n\nexport { Zoom as default };\n","import { n as nextTick, i as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n }\n });\n\n swiper.controller = {\n control: undefined\n };\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n }\n function getInterpolateFunction(c) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n if (c.destroyed) return;\n\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n multiplier = 1;\n }\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n if (c.destroyed) return;\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n elementTransitionEnd(c.wrapperEl, () => {\n if (!controlled) return;\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n if (typeof window !== 'undefined' && (\n // eslint-disable-line\n typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n const controlElement = document.querySelector(swiper.params.controller.control);\n if (controlElement && controlElement.swiper) {\n swiper.controller.control = controlElement.swiper;\n } else if (controlElement) {\n const onControllerSwiper = e => {\n swiper.controller.control = e.detail[0];\n swiper.update();\n controlElement.removeEventListener('init', onControllerSwiper);\n };\n controlElement.addEventListener('init', onControllerSwiper);\n }\n return;\n }\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}\n\nexport { Controller as default };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, g as elementIndex } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = () => {\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\nexport { A11y as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.slides[index];\n let value = slugify(slide.getAttribute('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key ? `${key}/` : ''}${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key ? `${key}/` : ''}${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides[i];\n const slideHistory = slugify(slide.getAttribute('data-history'));\n if (slideHistory === value) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) {\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n return;\n }\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n\nexport { History as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n on\n } = _ref;\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n getSlideIndex(_s, hash) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];\n if (!slideWithHash) return 0;\n const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n return index;\n }\n return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n }\n }\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n emit('hashSet');\n } else {\n document.location.hash = activeSlideHash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n }\n if (swiper.params.hashNavigation.watchState) {\n window.addEventListener('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n window.removeEventListener('hashchange', onHashChange);\n }\n };\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n\nexport { HashNavigation as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime;\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n autoplayStartTime = new Date().getTime();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { j as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener('init', onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener('init', onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\n\nexport { Thumb as default };\n","import { d as now, i as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n function onTouchStart() {\n if (swiper.params.cssMode) return;\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n function onTouchMove() {\n if (swiper.params.cssMode) return;\n const {\n touchEventsData: data,\n touches\n } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n if (swiper.params.cssMode) return;\n const {\n params,\n wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}\n\nexport { freeMode as default };\n","function Grid(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n let wasMultiRow;\n const getSpaceBetween = () => {\n let spaceBetween = swiper.params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n return spaceBetween;\n };\n const initSlides = slidesLength => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n slidesPerRow = slidesNumberEvenToRows / rows;\n };\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const {\n slidesPerGroup\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows,\n fill\n } = swiper.params.grid;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.style.order = newSlideOrderIndex;\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.row = row;\n slide.column = column;\n slide.style[getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n };\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const {\n centeredSlides,\n roundLengths\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n if (centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.splice(0, snapGrid.length);\n snapGrid.push(...newSlidesGrid);\n }\n };\n const onInit = () => {\n wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n };\n const onUpdate = () => {\n const {\n params,\n el\n } = swiper;\n const isMultiRow = params.grid && params.grid.rows > 1;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n numFullColumns = 1;\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n wasMultiRow = isMultiRow;\n };\n on('init', onInit);\n on('update', onUpdate);\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize\n };\n}\n\nexport { Grid as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFade as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n const createSlideShadows = (slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n slideEl.append(shadowAfter);\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.forEach(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress, isHorizontal);\n });\n };\n const setTranslate = () => {\n const {\n el,\n wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n swiper.wrapperEl.append(cubeShadowEl);\n }\n cubeShadowEl.style.height = `${swiperWidth}px`;\n } else {\n cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n el.append(cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n slideEl.style.transform = transform;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, isHorizontal);\n }\n }\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`;\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`;\n wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = duration => {\n const {\n el,\n slides\n } = swiper;\n slides.forEach(slideEl => {\n slideEl.style.transitionDuration = `${duration}ms`;\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n subEl.style.transitionDuration = `${duration}ms`;\n });\n });\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n const shadowEl = el.querySelector('.swiper-cube-shadow');\n if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n }\n };\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}\n\nexport { EffectCube as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress) => {\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (!shadowAfter) {\n shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // Set shadows\n swiper.params.flipEffect;\n swiper.slides.forEach(slideEl => {\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows(slideEl, progress);\n });\n };\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n const offset = slideEl.swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFlip as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBeforeEl) {\n shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n };\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}\n\nexport { EffectCoverflow as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n creativeEffect: {\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n const setTranslate = () => {\n const {\n slides,\n wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n }\n const offset = slideEl.swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if (custom && data.shadow || !custom) {\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl && data.shadow) {\n shadowEl = createShadow('creative', slideEl);\n }\n if (shadowEl) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n targetEl.style.opacity = opacityString;\n if (data.origin) {\n targetEl.style.transformOrigin = data.origin;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCreative as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n const setTranslate = () => {\n const {\n slides,\n activeIndex,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = slideEl.swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n if (progress < 0) {\n // next\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n /* eslint-disable */\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n scale(${scaleString})\n `;\n /* eslint-enable */\n\n if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl) {\n shadowEl = createShadow('cards', slideEl);\n }\n if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCards as default };\n","/* underscore in name -> watch for changes */\nconst paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopedSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideNextClass', 'slidePrevClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren',\n// modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control'];\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__;\n}\nfunction extend(target, src) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\nfunction needsNavigation(params) {\n if (params === void 0) {\n params = {};\n }\n return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\nfunction needsPagination(params) {\n if (params === void 0) {\n params = {};\n }\n return params.pagination && typeof params.pagination.el === 'undefined';\n}\nfunction needsScrollbar(params) {\n if (params === void 0) {\n params = {};\n }\n return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\nfunction uniqueClasses(classNames) {\n if (classNames === void 0) {\n classNames = '';\n }\n const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n const unique = [];\n classes.forEach(c => {\n if (unique.indexOf(c) < 0) unique.push(c);\n });\n return unique.join(' ');\n}\nfunction attrToProp(attrName) {\n if (attrName === void 0) {\n attrName = '';\n }\n return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', ''));\n}\nfunction wrapperClass(className) {\n if (className === void 0) {\n className = '';\n }\n if (!className) return 'swiper-wrapper';\n if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`;\n return className;\n}\n\nfunction updateSwiper(_ref) {\n let {\n swiper,\n slides,\n passedParams,\n changedParams,\n nextEl,\n prevEl,\n scrollbarEl,\n paginationEl\n } = _ref;\n const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass');\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs\n } = swiper;\n let needThumbsInit;\n let needControllerInit;\n let needPaginationInit;\n let needScrollbarInit;\n let needNavigationInit;\n let loopNeedDestroy;\n let loopNeedEnable;\n let loopNeedReloop;\n if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) {\n needThumbsInit = true;\n }\n if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n needControllerInit = true;\n }\n if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n needPaginationInit = true;\n }\n if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n needScrollbarInit = true;\n }\n if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n needNavigationInit = true;\n }\n const destroyModule = mod => {\n if (!swiper[mod]) return;\n swiper[mod].destroy();\n if (mod === 'navigation') {\n if (swiper.isElement) {\n swiper[mod].prevEl.remove();\n swiper[mod].nextEl.remove();\n }\n currentParams[mod].prevEl = undefined;\n currentParams[mod].nextEl = undefined;\n swiper[mod].prevEl = undefined;\n swiper[mod].nextEl = undefined;\n } else {\n if (swiper.isElement) {\n swiper[mod].el.remove();\n }\n currentParams[mod].el = undefined;\n swiper[mod].el = undefined;\n }\n };\n if (changedParams.includes('loop') && swiper.isElement) {\n if (currentParams.loop && !passedParams.loop) {\n loopNeedDestroy = true;\n } else if (!currentParams.loop && passedParams.loop) {\n loopNeedEnable = true;\n } else {\n loopNeedReloop = true;\n }\n }\n updateParams.forEach(key => {\n if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n extend(currentParams[key], passedParams[key]);\n if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) {\n destroyModule(key);\n }\n } else {\n const newValue = passedParams[key];\n if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n if (newValue === false) {\n destroyModule(key);\n }\n } else {\n currentParams[key] = passedParams[key];\n }\n }\n });\n if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {\n virtual.slides = slides;\n virtual.update(true);\n }\n if (changedParams.includes('children') && slides && currentParams.loop) {\n loopNeedReloop = true;\n }\n if (needThumbsInit) {\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n if (needControllerInit) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (needPaginationInit) {\n if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) {\n paginationEl = document.createElement('div');\n paginationEl.classList.add('swiper-pagination');\n paginationEl.part.add('pagination');\n swiper.el.appendChild(paginationEl);\n }\n if (paginationEl) currentParams.pagination.el = paginationEl;\n pagination.init();\n pagination.render();\n pagination.update();\n }\n if (needScrollbarInit) {\n if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) {\n scrollbarEl = document.createElement('div');\n scrollbarEl.classList.add('swiper-scrollbar');\n scrollbarEl.part.add('scrollbar');\n swiper.el.appendChild(scrollbarEl);\n }\n if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n if (needNavigationInit) {\n if (swiper.isElement) {\n if (!nextEl || typeof nextEl === 'string') {\n nextEl = document.createElement('div');\n nextEl.classList.add('swiper-button-next');\n nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg;\n nextEl.part.add('button-next');\n swiper.el.appendChild(nextEl);\n }\n if (!prevEl || typeof prevEl === 'string') {\n prevEl = document.createElement('div');\n prevEl.classList.add('swiper-button-prev');\n prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg;\n prevEl.part.add('button-prev');\n swiper.el.appendChild(prevEl);\n }\n }\n if (nextEl) currentParams.navigation.nextEl = nextEl;\n if (prevEl) currentParams.navigation.prevEl = prevEl;\n navigation.init();\n navigation.update();\n }\n if (changedParams.includes('allowSlideNext')) {\n swiper.allowSlideNext = passedParams.allowSlideNext;\n }\n if (changedParams.includes('allowSlidePrev')) {\n swiper.allowSlidePrev = passedParams.allowSlidePrev;\n }\n if (changedParams.includes('direction')) {\n swiper.changeDirection(passedParams.direction, false);\n }\n if (loopNeedDestroy || loopNeedReloop) {\n swiper.loopDestroy();\n }\n if (loopNeedEnable || loopNeedReloop) {\n swiper.loopCreate();\n }\n swiper.update();\n}\n\nexport { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w };\n","import { e as extend, i as isObject, c as attrToProp, p as paramsList } from './update-swiper.mjs';\nimport { d as defaults } from './swiper-core.mjs';\n\nconst formatValue = val => {\n if (parseFloat(val) === Number(val)) return Number(val);\n if (val === 'true') return true;\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'null') return null;\n if (val === 'undefined') return undefined;\n if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('\"')) {\n let v;\n try {\n v = JSON.parse(val);\n } catch (err) {\n v = val;\n }\n return v;\n }\n return val;\n};\nconst modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom'];\nfunction getParams(element, propName, propValue) {\n const params = {};\n const passedParams = {};\n extend(params, defaults);\n const localParamsList = [...paramsList, 'on'];\n const allowedParams = localParamsList.map(key => key.replace(/_/, ''));\n\n // First check props\n localParamsList.forEach(paramName => {\n paramName = paramName.replace('_', '');\n if (typeof element[paramName] !== 'undefined') {\n passedParams[paramName] = element[paramName];\n }\n });\n\n // Attributes\n const attrsList = [...element.attributes];\n if (typeof propName === 'string' && typeof propValue !== 'undefined') {\n attrsList.push({\n name: propName,\n value: isObject(propValue) ? {\n ...propValue\n } : propValue\n });\n }\n attrsList.forEach(attr => {\n const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0];\n if (moduleParam) {\n const parentObjName = attrToProp(moduleParam);\n const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]);\n if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {};\n if (passedParams[parentObjName] === true) {\n passedParams[parentObjName] = {\n enabled: true\n };\n }\n passedParams[parentObjName][subObjName] = formatValue(attr.value);\n } else {\n const name = attrToProp(attr.name);\n if (!allowedParams.includes(name)) return;\n const value = formatValue(attr.value);\n if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) {\n if (passedParams[name].constructor !== Object) {\n passedParams[name] = {};\n }\n passedParams[name].enabled = !!value;\n } else {\n passedParams[name] = value;\n }\n }\n });\n extend(params, passedParams);\n if (params.navigation) {\n params.navigation = {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next',\n ...(params.navigation !== true ? params.navigation : {})\n };\n } else if (params.navigation === false) {\n delete params.navigation;\n }\n if (params.scrollbar) {\n params.scrollbar = {\n el: '.swiper-scrollbar',\n ...(params.scrollbar !== true ? params.scrollbar : {})\n };\n } else if (params.scrollbar === false) {\n delete params.scrollbar;\n }\n if (params.pagination) {\n params.pagination = {\n el: '.swiper-pagination',\n ...(params.pagination !== true ? params.pagination : {})\n };\n } else if (params.pagination === false) {\n delete params.pagination;\n }\n return {\n params,\n passedParams\n };\n}\n\nexport { getParams as g };\n","/**\n * Swiper Custom Element 10.3.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: September 28, 2023\n */\n\nimport './swiper-bundle.mjs';\nimport { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs';\nimport { g as getParams } from './shared/get-element-params.mjs';\nimport { S as Swiper } from './shared/swiper-core.mjs';\n\n/* eslint-disable spaced-comment */\n\nconst SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;overflow:clip;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}`\nconst SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`\n\nclass DummyHTMLElement {}\nconst ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement;\nconst arrowSvg = `\n `;\nconst addStyle = (shadowRoot, styles) => {\n if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) {\n const styleSheet = new CSSStyleSheet();\n styleSheet.replaceSync(styles);\n shadowRoot.adoptedStyleSheets = [styleSheet];\n } else {\n const style = document.createElement('style');\n style.rel = 'stylesheet';\n style.textContent = styles;\n shadowRoot.appendChild(style);\n }\n};\nclass SwiperContainer extends ClassToExtend {\n constructor() {\n super();\n this.attachShadow({\n mode: 'open'\n });\n }\n static get nextButtonSvg() {\n return arrowSvg;\n }\n static get prevButtonSvg() {\n return arrowSvg.replace('/>', ' transform-origin=\"center\" transform=\"rotate(180)\"/>');\n }\n cssStyles() {\n return [SwiperCSS,\n // eslint-disable-line\n ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\\n');\n }\n cssLinks() {\n return this.injectStylesUrls || [];\n }\n calcSlideSlots() {\n const currentSideSlots = this.slideSlots || 0;\n // slide slots\n const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => {\n return parseInt(child.getAttribute('slot').split('slide-')[1], 10);\n });\n this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0;\n if (!this.rendered) return;\n if (this.slideSlots > currentSideSlots) {\n for (let i = currentSideSlots; i < this.slideSlots; i += 1) {\n const slideEl = document.createElement('swiper-slide');\n slideEl.setAttribute('part', `slide slide-${i + 1}`);\n const slotEl = document.createElement('slot');\n slotEl.setAttribute('name', `slide-${i + 1}`);\n slideEl.appendChild(slotEl);\n this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl);\n }\n } else if (this.slideSlots < currentSideSlots) {\n const slides = this.swiper.slides;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (i > this.slideSlots) {\n slides[i].remove();\n }\n }\n }\n }\n render() {\n if (this.rendered) return;\n this.calcSlideSlots();\n\n // local styles\n let localStyles = this.cssStyles();\n if (this.slideSlots > 0) {\n localStyles = localStyles.replace(/::slotted\\(([a-z-0-9.]*)\\)/g, '$1');\n }\n if (localStyles.length) {\n addStyle(this.shadowRoot, localStyles);\n }\n this.cssLinks().forEach(url => {\n const linkExists = this.shadowRoot.querySelector(`link[href=\"${url}\"]`);\n if (linkExists) return;\n const linkEl = document.createElement('link');\n linkEl.rel = 'stylesheet';\n linkEl.href = url;\n this.shadowRoot.appendChild(linkEl);\n });\n // prettier-ignore\n const el = document.createElement('div');\n el.classList.add('swiper');\n el.part = 'container';\n\n // prettier-ignore\n el.innerHTML = `\n \n
                      \n \n ${Array.from({\n length: this.slideSlots\n }).map((_, index) => `\n \n \n \n `).join('')}\n
                      \n \n ${needsNavigation(this.passedParams) ? `\n
                      ${this.constructor.prevButtonSvg}
                      \n
                      ${this.constructor.nextButtonSvg}
                      \n ` : ''}\n ${needsPagination(this.passedParams) ? `\n
                      \n ` : ''}\n ${needsScrollbar(this.passedParams) ? `\n
                      \n ` : ''}\n `;\n this.shadowRoot.appendChild(el);\n this.rendered = true;\n }\n initialize() {\n var _this = this;\n if (this.initialized) return;\n this.initialized = true;\n const {\n params: swiperParams,\n passedParams\n } = getParams(this);\n this.swiperParams = swiperParams;\n this.passedParams = passedParams;\n delete this.swiperParams.init;\n this.render();\n\n // eslint-disable-next-line\n this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), {\n ...(swiperParams.virtual ? {} : {\n observer: true,\n observeSlideChildren: this.slideSlots > 0\n }),\n ...swiperParams,\n touchEventsTarget: 'container',\n onAny: function (name) {\n if (name === 'observerUpdate') {\n _this.calcSlideSlots();\n }\n const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase();\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n const event = new CustomEvent(eventName, {\n detail: args,\n bubbles: name !== 'hashChange',\n cancelable: true\n });\n _this.dispatchEvent(event);\n }\n });\n }\n connectedCallback() {\n if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) {\n return;\n }\n if (this.init === false || this.getAttribute('init') === 'false') {\n return;\n }\n this.initialize();\n }\n disconnectedCallback() {\n if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) {\n return;\n }\n if (this.swiper && this.swiper.destroy) {\n this.swiper.destroy();\n }\n this.initialized = false;\n }\n updateSwiperOnPropChange(propName, propValue) {\n const {\n params: swiperParams,\n passedParams\n } = getParams(this, propName, propValue);\n this.passedParams = passedParams;\n this.swiperParams = swiperParams;\n updateSwiper({\n swiper: this.swiper,\n passedParams: this.passedParams,\n changedParams: [attrToProp(propName)],\n ...(propName === 'navigation' && passedParams[propName] ? {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next'\n } : {}),\n ...(propName === 'pagination' && passedParams[propName] ? {\n paginationEl: '.swiper-pagination'\n } : {}),\n ...(propName === 'scrollbar' && passedParams[propName] ? {\n scrollbarEl: '.swiper-scrollbar'\n } : {})\n });\n }\n attributeChangedCallback(attr, prevValue, newValue) {\n if (!this.initialized) return;\n if (prevValue === 'true' && newValue === null) {\n newValue = false;\n }\n this.updateSwiperOnPropChange(attr, newValue);\n }\n static get observedAttributes() {\n const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase());\n return attrs;\n }\n}\nparamsList.forEach(paramName => {\n if (paramName === 'init') return;\n paramName = paramName.replace('_', '');\n Object.defineProperty(SwiperContainer.prototype, paramName, {\n configurable: true,\n get() {\n return (this.passedParams || {})[paramName];\n },\n set(value) {\n if (!this.passedParams) this.passedParams = {};\n this.passedParams[paramName] = value;\n if (!this.initialized) return;\n this.updateSwiperOnPropChange(paramName, value);\n }\n });\n});\nclass SwiperSlide extends ClassToExtend {\n constructor() {\n super();\n this.attachShadow({\n mode: 'open'\n });\n }\n render() {\n const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true';\n addStyle(this.shadowRoot, SwiperSlideCSS);\n this.shadowRoot.appendChild(document.createElement('slot'));\n if (lazy) {\n const lazyDiv = document.createElement('div');\n lazyDiv.classList.add('swiper-lazy-preloader');\n lazyDiv.part.add('preloader');\n this.shadowRoot.appendChild(lazyDiv);\n }\n }\n initialize() {\n this.render();\n }\n connectedCallback() {\n this.initialize();\n }\n}\n\n// eslint-disable-next-line\nconst register = () => {\n if (typeof window === 'undefined') return;\n if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer);\n if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide);\n};\nif (typeof window !== 'undefined') {\n window.SwiperElementRegisterParams = params => {\n paramsList.push(...params);\n };\n}\n\nexport { SwiperContainer, SwiperSlide, register };\n","// eslint-disable-next-line\nimport Swiper from 'swiper/bundle';\n// eslint-disable-next-line\nimport { register } from 'swiper/element/bundle';\nimport $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nregister();\n\n\n\nfunction initSwiper(swiperEl) {\n const app = this;\n const $swiperEl = $(swiperEl);\n if ($swiperEl.length === 0) return;\n const isElement = $swiperEl[0].swiper && $swiperEl[0].swiper.isElement;\n if ($swiperEl[0].swiper && !$swiperEl[0].swiper.isElement) return;\n let initialSlide;\n let params = {};\n let isTabs;\n let isRoutableTabs;\n if ($swiperEl.hasClass('tabs')) {\n initialSlide = $swiperEl.children('swiper-slide').indexOf($swiperEl.children('.tab-active')[0]);\n isTabs = true;\n isRoutableTabs = $swiperEl.find('.tabs-routable').length > 0;\n }\n if ($swiperEl.attr('data-swiper')) {\n params = JSON.parse($swiperEl.attr('data-swiper'));\n } else if ($swiperEl[0].f7SwiperParams) {\n params = $swiperEl[0].f7SwiperParams;\n } else {\n params = $swiperEl.dataset();\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (typeof value === 'string' && value.indexOf('{') === 0 && value.indexOf('}') > 0) {\n try {\n params[key] = JSON.parse(value);\n } catch (e) {\n // not JSON\n }\n }\n });\n }\n if (typeof params.initialSlide === 'undefined' && typeof initialSlide !== 'undefined') {\n params.initialSlide = initialSlide;\n }\n const swiper = isElement ? $swiperEl[0].swiper : app.swiper.create($swiperEl[0], params);\n if (isElement) {\n swiper.slideTo(initialSlide, 0);\n }\n function updateSwiper() {\n swiper.update();\n }\n const $tabEl = $swiperEl.parents('.tab').filter(tabEl => {\n return $(tabEl).parent('.tabs').parent('.tabs-animated-wrap, swiper-container.tabs').length === 0;\n }).eq(0);\n $swiperEl.parents('.popup, .login-screen, .sheet-modal, .popover').on('modal:open', updateSwiper);\n $swiperEl.parents('.panel').on('panel:open', updateSwiper);\n if ($tabEl && $tabEl.length) {\n $tabEl.on('tab:show', updateSwiper);\n }\n swiper.on('beforeDestroy', () => {\n $swiperEl.parents('.popup, .login-screen, .sheet-modal, .popover').off('modal:open', updateSwiper);\n $swiperEl.parents('.panel').off('panel:open', updateSwiper);\n if ($tabEl && $tabEl.length) {\n $tabEl.off('tab:show', updateSwiper);\n }\n });\n if (isTabs) {\n swiper.on('slideChange', () => {\n if (isRoutableTabs) {\n let view = app.views.get($swiperEl.parents('.view'));\n if (!view) view = app.views.main;\n const router = view.router;\n const tabRouteUrl = router.findTabRouteUrl($(swiper.slides).eq(swiper.activeIndex)[0]);\n if (tabRouteUrl) {\n setTimeout(() => {\n router.navigate(tabRouteUrl);\n }, 0);\n }\n } else {\n app.tab.show({\n tabEl: $(swiper.slides).eq(swiper.activeIndex)\n });\n }\n });\n }\n}\nexport default {\n name: 'swiper',\n static: {\n Swiper\n },\n create() {\n const app = this;\n app.swiper = ConstructorMethods({\n defaultSelector: '.swiper',\n constructor: Swiper,\n domProp: 'swiper'\n });\n },\n on: {\n pageMounted(page) {\n const app = this;\n page.$el.find('swiper-container.tabs').each(swiperEl => {\n initSwiper.call(app, swiperEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('swiper-container.tabs').each(swiperEl => {\n initSwiper.call(app, swiperEl);\n });\n },\n pageReinit(page) {\n const app = this;\n page.$el.find('swiper-container.tabs').each(swiperEl => {\n const swiper = app.swiper.get(swiperEl);\n if (swiper && swiper.update) swiper.update();\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('swiper-container.tabs').each(swiperEl => {\n initSwiper.call(app, swiperEl);\n });\n },\n tabShow(tabEl) {\n const app = this;\n $(tabEl).find('swiper-container.tabs').each(swiperEl => {\n const swiper = app.swiper.get(swiperEl);\n if (swiper && swiper.update) swiper.update();\n });\n },\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('swiper-container.tabs').each(swiperEl => {\n app.swiper.destroy(swiperEl);\n });\n }\n }\n};","/* eslint indent: [\"off\"] */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, now, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass PhotoBrowser extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const pb = this;\n pb.app = app;\n const defaults = extend({\n on: {}\n }, app.params.photoBrowser);\n\n // Extend defaults with modules params\n pb.useModulesParams(defaults);\n pb.params = extend(defaults, params);\n extend(pb, {\n exposed: false,\n opened: false,\n activeIndex: pb.params.swiper.initialSlide,\n url: pb.params.url,\n swipeToClose: {\n allow: true,\n isTouched: false,\n diff: undefined,\n start: undefined,\n current: undefined,\n started: false,\n activeSlide: undefined,\n timeStart: undefined\n }\n });\n\n // Install Modules\n pb.useModules();\n\n // Init\n pb.init();\n }\n get view() {\n const {\n params,\n app\n } = this;\n return params.view || app.views.main;\n }\n onSlideChange(swiper) {\n const pb = this;\n pb.activeIndex = swiper.activeIndex;\n let current = swiper.activeIndex + 1;\n let total = pb.params.virtualSlides ? pb.params.photos.length : swiper.slides.length;\n if (swiper.params.loop) {\n total -= 2;\n current -= swiper.loopedSlides;\n if (current < 1) current = total + current;\n if (current > total) current -= total;\n }\n const $activeSlideEl = pb.params.virtualSlides ? $(swiper.wrapperEl).find(`.swiper-slide[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : $(swiper.slides).eq(swiper.activeIndex);\n const $previousSlideEl = pb.params.virtualSlides ? $(swiper.wrapperEl).find(`.swiper-slide[data-swiper-slide-index=\"${swiper.previousIndex}\"]`) : $(swiper.slides).eq(swiper.previousIndex);\n let $currentEl = pb.$el.find('.photo-browser-current');\n let $totalEl = pb.$el.find('.photo-browser-total');\n let navbarEl;\n if (pb.params.type === 'page' && pb.params.navbar && $currentEl.length === 0 && pb.app.theme === 'ios') {\n navbarEl = pb.app.navbar.getElByPage(pb.$el);\n if (navbarEl) {\n $currentEl = $(navbarEl).find('.photo-browser-current');\n $totalEl = $(navbarEl).find('.photo-browser-total');\n }\n }\n if ($currentEl.length && $totalEl.length) {\n $currentEl.text(current);\n $totalEl.text(total);\n if (!navbarEl) navbarEl = $currentEl.parents('.navbar')[0];\n if (navbarEl) {\n pb.app.navbar.size(navbarEl);\n }\n }\n\n // Update captions\n if (pb.captions.length > 0) {\n const captionIndex = swiper.params.loop ? $activeSlideEl.attr('data-swiper-slide-index') : pb.activeIndex;\n pb.$captionsContainerEl.find('.photo-browser-caption-active').removeClass('photo-browser-caption-active');\n pb.$captionsContainerEl.find(`[data-caption-index=\"${captionIndex}\"]`).addClass('photo-browser-caption-active');\n }\n\n // Stop Video\n const previousSlideVideo = $previousSlideEl.find('video');\n if (previousSlideVideo.length > 0) {\n if ('pause' in previousSlideVideo[0]) previousSlideVideo[0].pause();\n }\n }\n onTouchStart() {\n const pb = this;\n const swipeToClose = pb.swipeToClose;\n if (!swipeToClose.allow) return;\n swipeToClose.isTouched = true;\n }\n onTouchMove(e) {\n const pb = this;\n const swipeToClose = pb.swipeToClose;\n if (!swipeToClose.isTouched) return;\n if (!swipeToClose.started) {\n swipeToClose.started = true;\n swipeToClose.start = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (pb.params.virtualSlides) {\n swipeToClose.activeSlide = $(pb.swiper.wrapperEl).children('.swiper-slide-active');\n } else {\n swipeToClose.activeSlide = $(pb.swiper.slides).eq(pb.swiper.activeIndex);\n }\n swipeToClose.timeStart = now();\n }\n e.preventDefault();\n swipeToClose.current = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n swipeToClose.diff = swipeToClose.start - swipeToClose.current;\n pb.$el.transition(0).transform(`translate3d(0,${-swipeToClose.diff}px,0)`);\n }\n onTouchEnd() {\n const pb = this;\n const swipeToClose = pb.swipeToClose;\n swipeToClose.isTouched = false;\n if (!swipeToClose.started) {\n swipeToClose.started = false;\n return;\n }\n swipeToClose.started = false;\n swipeToClose.allow = false;\n const diff = Math.abs(swipeToClose.diff);\n const timeDiff = new Date().getTime() - swipeToClose.timeStart;\n if (timeDiff < 300 && diff > 20 || timeDiff >= 300 && diff > 100) {\n nextTick(() => {\n if (pb.$el) {\n if (swipeToClose.diff < 0) pb.$el.addClass('swipe-close-to-bottom');else pb.$el.addClass('swipe-close-to-top');\n }\n pb.emit('local::swipeToClose', pb);\n pb.$el.transform('').transition('');\n pb.close();\n swipeToClose.allow = true;\n });\n return;\n }\n if (diff !== 0) {\n pb.$el.addClass('photo-browser-transitioning').transitionEnd(() => {\n swipeToClose.allow = true;\n pb.$el.removeClass('photo-browser-transitioning');\n });\n } else {\n swipeToClose.allow = true;\n }\n nextTick(() => {\n pb.$el.transform('').transition('');\n });\n }\n\n // Render Functions\n renderNavbar() {\n const pb = this;\n if (pb.params.renderNavbar) return pb.params.renderNavbar.call(pb);\n const iconsColor = pb.params.iconsColor;\n const pageBackLinkText = pb.app.theme === 'ios' && pb.params.pageBackLinkText ? pb.params.pageBackLinkText : '';\n const renderNavbarCount = typeof pb.params.navbarShowCount === 'undefined' ? pb.params.photos.length > 1 : pb.params.navbarShowCount;\n const isPopup = pb.params.type !== 'page';\n return $jsx(\"div\", {\n class: `navbar navbar-photo-browser ${pb.params.theme === 'dark' ? 'navbar-photo-browser-dark' : ''}`\n }, $jsx(\"div\", {\n class: \"navbar-bg\"\n }), $jsx(\"div\", {\n class: \"navbar-inner navbar-inner-centered-title sliding\"\n }, !isPopup && $jsx(\"div\", {\n class: \"left\"\n }, $jsx(\"a\", {\n class: `link ${!pageBackLinkText ? 'icon-only' : ''} back`\n }, $jsx(\"i\", {\n class: `icon icon-back ${iconsColor ? `color-${iconsColor}` : ''}`\n }), pageBackLinkText && $jsx(\"span\", null, pageBackLinkText))), renderNavbarCount && $jsx(\"div\", {\n class: \"title\"\n }, $jsx(\"span\", {\n class: \"photo-browser-current\"\n }), $jsx(\"span\", {\n class: \"photo-browser-of\"\n }, pb.params.navbarOfText), $jsx(\"span\", {\n class: \"photo-browser-total\"\n })), isPopup && (pb.params.popupCloseLinkText || pb.params.popupCloseLinkIcon) && $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link popup-close\",\n \"data-popup\": \".photo-browser-popup\"\n }, pb.params.popupCloseLinkIcon && pb.app.theme === 'ios' && $jsx(\"i\", null, $jsx(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"56\",\n height: \"56\",\n viewBox: \"0 0 56 56\"\n }, $jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M 10.0234 43.0234 C 9.2266 43.8203 9.2031 45.1797 10.0234 45.9766 C 10.8438 46.7734 12.1797 46.7734 13.0000 45.9766 L 28.0000 30.9766 L 43.0000 45.9766 C 43.7969 46.7734 45.1563 46.7969 45.9766 45.9766 C 46.7734 45.1562 46.7734 43.8203 45.9766 43.0234 L 30.9531 28.0000 L 45.9766 13.0000 C 46.7734 12.2031 46.7969 10.8437 45.9766 10.0469 C 45.1328 9.2266 43.7969 9.2266 43.0000 10.0469 L 28.0000 25.0469 L 13.0000 10.0469 C 12.1797 9.2266 10.8203 9.2031 10.0234 10.0469 C 9.2266 10.8672 9.2266 12.2031 10.0234 13.0000 L 25.0234 28.0000 Z\"\n }))), pb.params.popupCloseLinkIcon && pb.app.theme === 'md' && $jsx(\"i\", null, $jsx(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n height: \"24px\",\n viewBox: \"0 0 24 24\",\n width: \"24px\",\n fill: \"currentColor\"\n }, $jsx(\"path\", {\n d: \"M0 0h24v24H0V0z\",\n fill: \"none\"\n }), $jsx(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z\"\n }))), pb.params.popupCloseLinkText && $jsx(\"span\", null, pb.params.popupCloseLinkText)))));\n }\n renderToolbar() {\n const pb = this;\n if (pb.params.renderToolbar) return pb.params.renderToolbar.call(pb);\n const iconsColor = pb.params.iconsColor;\n return $jsx(\"div\", {\n class: \"toolbar toolbar-bottom tabbar\"\n }, $jsx(\"div\", {\n class: \"toolbar-inner\"\n }, $jsx(\"a\", {\n class: \"link photo-browser-prev\"\n }, $jsx(\"i\", {\n class: `icon icon-back ${iconsColor ? `color-${iconsColor}` : ''}`\n })), $jsx(\"a\", {\n class: \"link photo-browser-next\"\n }, $jsx(\"i\", {\n class: `icon icon-forward ${iconsColor ? `color-${iconsColor}` : ''}`\n }))));\n }\n renderThumbs() {\n const pb = this;\n return $jsx(\"div\", {\n class: \"toolbar toolbar-bottom photo-browser-thumbs\"\n }, $jsx(\"div\", {\n class: \"swiper\"\n }, $jsx(\"div\", {\n class: \"swiper-wrapper\"\n }, pb.params.thumbs.map((thumb, index) => pb.renderThumb(thumb, index)))));\n }\n renderCaption(caption, index) {\n const pb = this;\n if (pb.params.renderCaption) return pb.params.renderCaption.call(pb, caption, index);\n return $jsx(\"div\", {\n class: \"photo-browser-caption\",\n \"data-caption-index\": index\n }, caption);\n }\n renderObject(photo, index) {\n const pb = this;\n if (pb.params.renderObject) return pb.params.renderObject.call(pb, photo, index);\n return $jsx(\"div\", {\n class: \"photo-browser-slide photo-browser-object-slide swiper-slide\",\n \"data-swiper-slide-index\": index\n }, photo.html ? photo.html : photo);\n }\n renderLazyPhoto(photo, index) {\n const pb = this;\n if (pb.params.renderLazyPhoto) return pb.params.renderLazyPhoto.call(pb, photo, index);\n return $jsx(\"div\", {\n class: \"photo-browser-slide photo-browser-slide-lazy swiper-slide\",\n \"data-swiper-slide-index\": index\n }, $jsx(\"div\", {\n class: \"swiper-lazy-preloader\"\n }), $jsx(\"span\", {\n class: \"swiper-zoom-container\"\n }, $jsx(\"img\", {\n loading: \"lazy\",\n src: photo.url ? photo.url : photo\n })));\n }\n renderPhoto(photo, index) {\n const pb = this;\n if (pb.params.renderPhoto) return pb.params.renderPhoto.call(pb, photo, index);\n return $jsx(\"div\", {\n class: \"photo-browser-slide swiper-slide\",\n \"data-swiper-slide-index\": index\n }, $jsx(\"span\", {\n class: \"swiper-zoom-container\"\n }, $jsx(\"img\", {\n src: photo.url ? photo.url : photo\n })));\n }\n renderThumb(thumb, index) {\n const pb = this;\n const url = typeof thumb === 'string' ? thumb : thumb.url;\n if (pb.params.renderThumb) return pb.params.renderThumb.call(pb, thumb, index);\n return $jsx(\"div\", {\n class: \"photo-browser-thumbs-slide swiper-slide\",\n \"data-swiper-slide-index\": index\n }, url && $jsx(\"img\", {\n src: url,\n loading: \"lazy\"\n }));\n }\n render() {\n const pb = this;\n if (pb.params.render) return pb.params.render.call(pb, pb.params);\n return $jsx(\"div\", {\n class: `photo-browser photo-browser-${pb.params.theme}`\n }, $jsx(\"div\", {\n class: \"view\"\n }, $jsx(\"div\", {\n class: `page photo-browser-page photo-browser-page-${pb.params.theme} no-toolbar ${!pb.params.navbar ? 'no-navbar' : ''}`,\n \"data-name\": \"photo-browser-page\"\n }, pb.params.navbar && pb.renderNavbar(), pb.params.toolbar && pb.renderToolbar(), pb.params.thumbs && pb.params.thumbs.length && pb.renderThumbs(), $jsx(\"div\", {\n class: `photo-browser-captions photo-browser-captions-${pb.params.captionsTheme || pb.params.theme}`\n }, pb.params.photos.map((photo, index) => {\n if (photo.caption) return pb.renderCaption(photo.caption, index);\n return '';\n })), $jsx(\"div\", {\n class: \"photo-browser-swiper-container swiper\"\n }, $jsx(\"div\", {\n class: \"photo-browser-swiper-wrapper swiper-wrapper\"\n }, !pb.params.virtualSlides && pb.params.photos.map((photo, index) => {\n if (photo.html || (typeof photo === 'string' || photo instanceof String) && photo.indexOf('<') >= 0 && photo.indexOf('>') >= 0) {\n return pb.renderObject(photo, index);\n }\n if (pb.params.lazy === true) {\n return pb.renderLazyPhoto(photo, index);\n }\n return pb.renderPhoto(photo, index);\n }))))));\n }\n renderStandalone() {\n const pb = this;\n if (pb.params.renderStandalone) return pb.params.renderStandalone.call(pb);\n const standaloneHtml = `
                      ${pb.render()}
                      `;\n return standaloneHtml;\n }\n renderPage() {\n const pb = this;\n if (pb.params.renderPage) return pb.params.renderPage.call(pb);\n const pageHtml = pb.render();\n return pageHtml;\n }\n renderPopup() {\n const pb = this;\n if (pb.params.renderPopup) return pb.params.renderPopup.call(pb);\n const popupHtml = `
                      ${pb.render()}
                      `;\n return popupHtml;\n }\n\n // Callbacks\n onOpen(type, el) {\n const pb = this;\n const app = pb.app;\n const $el = $(el);\n $el[0].f7PhotoBrowser = pb;\n pb.$el = $el;\n pb.el = $el[0];\n pb.openedIn = type;\n pb.opened = true;\n pb.$swiperContainerEl = pb.$el.find('.photo-browser-swiper-container');\n pb.$swiperWrapperEl = pb.$el.find('.photo-browser-swiper-wrapper');\n pb.slides = pb.$el.find('.photo-browser-slide');\n pb.$captionsContainerEl = pb.$el.find('.photo-browser-captions');\n pb.captions = pb.$el.find('.photo-browser-caption');\n const hasThumbs = pb.params.thumbs && pb.params.thumbs.length > 0;\n\n // Init Swiper\n let clickTimeout;\n let preventThumbsSlide;\n let preventMainSlide;\n const initialSlide = pb.activeIndex;\n const swiperParams = extend({}, pb.params.swiper, {\n initialSlide,\n // cssMode:\n // typeof pb.params.swiper.cssMode === 'undefined' && (app.device.ios || app.device.android)\n // ? true\n // : pb.params.swiper.cssMode,\n on: {\n click(e) {\n clearTimeout(clickTimeout);\n if (pb.params.exposition) {\n clickTimeout = setTimeout(() => {\n pb.expositionToggle();\n }, 350);\n }\n pb.emit('local::tap', e);\n pb.emit('local::click', e);\n },\n doubleClick(e) {\n clearTimeout(clickTimeout);\n pb.emit('local::doubleTap', e);\n pb.emit('local::doubleClick', e);\n },\n slideChange() {\n const swiper = this;\n if (hasThumbs && pb.thumbsSwiper && !preventMainSlide) {\n preventThumbsSlide = true;\n pb.thumbsSwiper.slideTo(pb.swiper.activeIndex);\n setTimeout(() => {\n preventThumbsSlide = false;\n });\n }\n pb.onSlideChange(swiper);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n pb.emit('local::slideChange', ...args);\n },\n transitionStart() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n pb.emit('local::transitionStart', ...args);\n },\n transitionEnd() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n pb.emit('local::transitionEnd', ...args);\n },\n slideChangeTransitionStart() {\n const swiper = this;\n pb.onSlideChange(swiper);\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n pb.emit('local::slideChangeTransitionStart', ...args);\n },\n slideChangeTransitionEnd() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n pb.emit('local::slideChangeTransitionEnd', ...args);\n }\n }\n });\n if (pb.params.swipeToClose && pb.params.type !== 'page') {\n extend(swiperParams.on, {\n touchStart(swiper, e) {\n pb.onTouchStart(e);\n pb.emit('local::touchStart', e);\n },\n touchMoveOpposite(swiper, e) {\n pb.onTouchMove(e);\n pb.emit('local::touchMoveOpposite', e);\n },\n touchEnd(swiper, e) {\n pb.onTouchEnd(e);\n pb.emit('local::touchEnd', e);\n }\n });\n }\n if (pb.params.virtualSlides) {\n extend(swiperParams, {\n virtual: {\n slides: pb.params.photos,\n renderSlide(photo, index) {\n if (photo.html || (typeof photo === 'string' || photo instanceof String) && photo.indexOf('<') >= 0 && photo.indexOf('>') >= 0) {\n return pb.renderObject(photo, index);\n }\n if (pb.params.lazy === true) {\n return pb.renderLazyPhoto(photo, index);\n }\n return pb.renderPhoto(photo, index);\n }\n }\n });\n }\n const window = getWindow();\n pb.swiper = app.swiper ? app.swiper.create(pb.$swiperContainerEl[0], swiperParams) : new window.Swiper(pb.$swiperContainerEl[0], swiperParams);\n if (pb.activeIndex === 0 || pb.params.virtualSlides) {\n pb.onSlideChange(pb.swiper);\n }\n if (hasThumbs) {\n const thumbsSwiperParams = {\n el: pb.$el.find('.photo-browser-thumbs .swiper')[0],\n slidesPerView: 'auto',\n centeredSlides: true,\n spaceBetween: 4,\n watchSlidesProgress: true,\n initialSlide,\n on: {\n touchMove() {\n preventMainSlide = true;\n },\n touchEnd() {\n preventMainSlide = false;\n },\n slideChange(s) {\n if (preventThumbsSlide) return;\n pb.swiper.slideTo(s.activeIndex, 0);\n },\n click(s) {\n if (!s.clickedSlide) return;\n const index = parseInt($(s.clickedSlide).attr('data-swiper-slide-index'), 10);\n s.slideTo(index, 0);\n }\n }\n };\n pb.thumbsSwiper = app.swiper ? app.swiper.create(thumbsSwiperParams) : new window.Swiper(thumbsSwiperParams);\n }\n if (pb.$el) {\n pb.$el.trigger('photobrowser:open');\n }\n pb.emit('local::open photoBrowserOpen', pb);\n }\n onOpened() {\n const pb = this;\n if (pb.$el && pb.params.type === 'standalone') {\n pb.$el.css('animation', 'none');\n }\n if (pb.$el) {\n pb.$el.trigger('photobrowser:opened');\n }\n pb.emit('local::opened photoBrowserOpened', pb);\n }\n onClose() {\n const pb = this;\n if (pb.destroyed) return;\n\n // Destroy Swiper\n if (pb.swiper && pb.swiper.destroy) {\n pb.swiper.destroy(true, false);\n pb.swiper = null;\n delete pb.swiper;\n }\n if (pb.thumbsSwiper && pb.thumbsSwiper.destroy) {\n pb.thumbsSwiper.destroy(true, false);\n pb.thumbsSwiper = null;\n delete pb.thumbsSwiper;\n }\n if (pb.$el) {\n pb.$el.trigger('photobrowser:close');\n }\n pb.emit('local::close photoBrowserClose', pb);\n }\n onClosed() {\n const pb = this;\n if (pb.destroyed) return;\n pb.opened = false;\n pb.$el = null;\n pb.el = null;\n delete pb.$el;\n delete pb.el;\n if (pb.$el) {\n pb.$el.trigger('photobrowser:closed');\n }\n pb.emit('local::closed photoBrowserClosed', pb);\n }\n\n // Open\n openPage() {\n const pb = this;\n if (pb.opened) return pb;\n const pageHtml = pb.renderPage();\n pb.view.router.navigate({\n url: pb.url,\n route: {\n content: pageHtml,\n path: pb.url,\n on: {\n pageBeforeIn(e, page) {\n pb.view.$el.addClass(`with-photo-browser-page with-photo-browser-page-${pb.params.theme}`);\n pb.onOpen('page', page.el);\n },\n pageAfterIn(e, page) {\n pb.onOpened('page', page.el);\n },\n pageBeforeOut(e, page) {\n pb.view.$el.removeClass(`with-photo-browser-page with-photo-browser-page-exposed with-photo-browser-page-${pb.params.theme}`);\n pb.onClose('page', page.el);\n },\n pageAfterOut(e, page) {\n pb.onClosed('page', page.el);\n }\n }\n }\n });\n return pb;\n }\n openStandalone() {\n const pb = this;\n if (pb.opened) return pb;\n const standaloneHtml = pb.renderStandalone();\n const popupParams = {\n backdrop: false,\n content: standaloneHtml,\n on: {\n popupOpen(popup) {\n pb.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n pb.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n pb.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n pb.onClosed('popup', popup.el);\n }\n }\n };\n if (pb.params.routableModals && pb.view) {\n pb.view.router.navigate({\n url: pb.url,\n route: {\n path: pb.url,\n popup: popupParams\n }\n });\n } else {\n pb.modal = pb.app.popup.create(popupParams).open();\n }\n return pb;\n }\n openPopup() {\n const pb = this;\n if (pb.opened) return pb;\n const popupHtml = pb.renderPopup();\n const popupParams = {\n content: popupHtml,\n push: pb.params.popupPush,\n closeByBackdropClick: pb.params.closeByBackdropClick,\n on: {\n popupOpen(popup) {\n pb.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n pb.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n pb.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n pb.onClosed('popup', popup.el);\n }\n }\n };\n if (pb.params.routableModals && pb.view) {\n pb.view.router.navigate({\n url: pb.url,\n route: {\n path: pb.url,\n popup: popupParams\n }\n });\n } else {\n pb.modal = pb.app.popup.create(popupParams).open();\n }\n return pb;\n }\n\n // Exposition\n expositionEnable() {\n const pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.addClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) pb.$el.addClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.addClass('photo-browser-captions-exposed');\n pb.exposed = true;\n return pb;\n }\n expositionDisable() {\n const pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.removeClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) pb.$el.removeClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.removeClass('photo-browser-captions-exposed');\n pb.exposed = false;\n return pb;\n }\n expositionToggle() {\n const pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.toggleClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) pb.$el.toggleClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.toggleClass('photo-browser-captions-exposed');\n pb.exposed = !pb.exposed;\n return pb;\n }\n open(index) {\n const pb = this;\n const type = pb.params.type;\n if (pb.opened) {\n if (pb.swiper && typeof index !== 'undefined') {\n pb.swiper.slideTo(parseInt(index, 10));\n }\n return pb;\n }\n if (typeof index !== 'undefined') {\n pb.activeIndex = index;\n }\n if (type === 'standalone') {\n pb.openStandalone();\n }\n if (type === 'page') {\n pb.openPage();\n }\n if (type === 'popup') {\n pb.openPopup();\n }\n return pb;\n }\n close() {\n const pb = this;\n if (!pb.opened) return pb;\n if (pb.params.routableModals && pb.view || pb.openedIn === 'page') {\n pb.view.router.back();\n } else {\n pb.modal.once('modalClosed', () => {\n nextTick(() => {\n if (pb.destroyed) return;\n pb.modal.destroy();\n delete pb.modal;\n });\n });\n pb.modal.close();\n }\n return pb;\n }\n // eslint-disable-next-line\n init() {}\n destroy() {\n let pb = this;\n pb.emit('local::beforeDestroy photoBrowserBeforeDestroy', pb);\n if (pb.$el) {\n pb.$el.trigger('photobrowser:beforedestroy');\n pb.$el[0].f7PhotoBrowser = null;\n delete pb.$el[0].f7PhotoBrowser;\n }\n deleteProps(pb);\n pb.destroyed = true;\n pb = null;\n }\n}\nexport default PhotoBrowser;","import PhotoBrowser from './photo-browser-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'photoBrowser',\n params: {\n photoBrowser: {\n photos: [],\n thumbs: [],\n exposition: true,\n expositionHideCaptions: false,\n type: 'standalone',\n navbar: true,\n toolbar: true,\n theme: 'light',\n captionsTheme: undefined,\n iconsColor: undefined,\n popupPush: false,\n swipeToClose: true,\n pageBackLinkText: 'Back',\n popupCloseLinkText: undefined,\n popupCloseLinkIcon: true,\n navbarOfText: 'of',\n navbarShowCount: undefined,\n view: undefined,\n url: 'photos/',\n routableModals: false,\n virtualSlides: true,\n lazy: true,\n closeByBackdropClick: true,\n renderNavbar: undefined,\n renderToolbar: undefined,\n renderCaption: undefined,\n renderObject: undefined,\n renderLazyPhoto: undefined,\n renderPhoto: undefined,\n renderThumb: undefined,\n renderPage: undefined,\n renderPopup: undefined,\n renderStandalone: undefined,\n swiper: {\n cssMode: false,\n initialSlide: 0,\n spaceBetween: 20,\n speed: 300,\n loop: false,\n keyboard: {\n enabled: true\n },\n navigation: {\n nextEl: '.photo-browser-next',\n prevEl: '.photo-browser-prev'\n },\n zoom: {\n enabled: true,\n maxRatio: 3,\n minRatio: 1\n }\n }\n }\n },\n create() {\n const app = this;\n app.photoBrowser = ConstructorMethods({\n defaultSelector: '.photo-browser-popup, .photo-browser-page',\n constructor: PhotoBrowser,\n app,\n domProp: 'f7PhotoBrowser'\n });\n },\n static: {\n PhotoBrowser\n }\n};","import $ from '../../shared/dom7.js';\nimport { extend, now, nextTick } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Notification extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.notification, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const notification = this;\n notification.app = app;\n notification.params = extendedParams;\n const {\n icon,\n title,\n titleRightText,\n subtitle,\n text,\n closeButton,\n closeTimeout,\n cssClass,\n closeOnClick\n } = notification.params;\n let $el;\n if (!notification.params.el) {\n // Find Element\n const notificationHtml = notification.render({\n icon,\n title,\n titleRightText,\n subtitle,\n text,\n closeButton,\n cssClass\n });\n $el = $(notificationHtml);\n } else {\n $el = $(notification.params.el);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return notification.destroy();\n }\n extend(notification, {\n $el,\n el: $el[0],\n type: 'notification'\n });\n $el[0].f7Modal = notification;\n if (closeButton) {\n $el.find('.notification-close-button').on('click', () => {\n notification.close();\n });\n }\n $el.on('click', e => {\n if (closeButton && $(e.target).closest('.notification-close-button').length) {\n return;\n }\n notification.emit('local::click notificationClick', notification);\n if (closeOnClick) notification.close();\n });\n notification.on('beforeDestroy', () => {\n $el.off('click');\n });\n\n /* Touch Events */\n let isTouched;\n let isMoved;\n let isScrolling;\n let touchesDiff;\n let touchStartTime;\n let notificationHeight;\n const touchesStart = {};\n function handleTouchStart(e) {\n if (isTouched) return;\n isTouched = true;\n isMoved = false;\n isScrolling = undefined;\n touchStartTime = now();\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) < Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n if (!isMoved) {\n notification.$el.removeClass('notification-transitioning');\n notification.$el.transition(0);\n notificationHeight = notification.$el[0].offsetHeight / 2;\n }\n isMoved = true;\n touchesDiff = pageY - touchesStart.y;\n let newTranslate = touchesDiff;\n if (touchesDiff > 0) {\n newTranslate = touchesDiff ** 0.8;\n }\n notification.$el.transform(`translate3d(0, ${newTranslate}px, 0)`);\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n if (touchesDiff === 0) {\n return;\n }\n const timeDiff = now() - touchStartTime;\n notification.$el.transition('');\n notification.$el.addClass('notification-transitioning');\n notification.$el.transform('');\n if (touchesDiff < -10 && timeDiff < 300 || -touchesDiff >= notificationHeight / 1) {\n notification.close();\n }\n }\n function attachTouchEvents() {\n notification.$el.on(app.touchEvents.start, handleTouchStart, {\n passive: true\n });\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n function detachTouchEvents() {\n notification.$el.off(app.touchEvents.start, handleTouchStart, {\n passive: true\n });\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n let timeoutId;\n function closeOnTimeout() {\n timeoutId = nextTick(() => {\n if (isTouched && isMoved) {\n closeOnTimeout();\n return;\n }\n notification.close();\n }, closeTimeout);\n }\n notification.on('open', () => {\n if (notification.params.swipeToClose) {\n attachTouchEvents();\n }\n $('.notification.modal-in').each(openedEl => {\n const notificationInstance = app.notification.get(openedEl);\n if (openedEl !== notification.el && notificationInstance) {\n notificationInstance.close();\n }\n });\n if (closeTimeout) {\n closeOnTimeout();\n }\n });\n notification.on('close beforeDestroy', () => {\n if (notification.params.swipeToClose) {\n detachTouchEvents();\n }\n clearTimeout(timeoutId);\n });\n return notification;\n }\n render() {\n const notification = this;\n if (notification.params.render) return notification.params.render.call(notification, notification);\n const {\n icon,\n title,\n titleRightText,\n subtitle,\n text,\n closeButton,\n cssClass\n } = notification.params;\n return $jsx(\"div\", {\n class: `notification ${icon ? 'notification-with-icon' : ''} ${cssClass || ''}`\n }, $jsx(\"div\", {\n class: \"notification-header\"\n }, icon && $jsx(\"div\", {\n class: \"notification-icon\"\n }, icon), title && $jsx(\"div\", {\n class: \"notification-title\"\n }, title), titleRightText && $jsx(\"div\", {\n class: \"notification-title-right-text\"\n }, titleRightText), closeButton && $jsx(\"span\", {\n class: \"notification-close-button\"\n })), $jsx(\"div\", {\n class: \"notification-content\"\n }, subtitle && $jsx(\"div\", {\n class: \"notification-subtitle\"\n }, subtitle), text && $jsx(\"div\", {\n class: \"notification-text\"\n }, text)));\n }\n}\nexport default Notification;","import { extend } from '../../shared/utils.js';\nimport Notification from './notification-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'notification',\n static: {\n Notification\n },\n create() {\n const app = this;\n app.notification = extend({}, ModalMethods({\n app,\n constructor: Notification,\n defaultSelector: '.notification.modal-in'\n }));\n },\n params: {\n notification: {\n icon: null,\n title: null,\n titleRightText: null,\n subtitle: null,\n text: null,\n closeButton: false,\n closeTimeout: null,\n closeOnClick: false,\n swipeToClose: true,\n cssClass: null,\n render: null,\n containerEl: null\n }\n }\n};","/* eslint \"no-useless-escape\": \"off\" */\nimport $ from '../../shared/dom7.js';\nimport { extend, id, nextTick, deleteProps, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Autocomplete extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const ac = this;\n ac.app = app;\n const device = getDevice();\n const defaults = extend({\n on: {}\n }, app.params.autocomplete);\n\n // Extend defaults with modules params\n ac.useModulesParams(defaults);\n ac.params = extend(defaults, params);\n let $openerEl;\n if (ac.params.openerEl) {\n $openerEl = $(ac.params.openerEl);\n if ($openerEl.length) $openerEl[0].f7Autocomplete = ac;\n }\n let $inputEl;\n if (ac.params.inputEl) {\n $inputEl = $(ac.params.inputEl);\n if ($inputEl.length) $inputEl[0].f7Autocomplete = ac;\n }\n const uniqueId = id();\n let url = params.url;\n if (!url && $openerEl && $openerEl.length) {\n if ($openerEl.attr('href')) url = $openerEl.attr('href');else if ($openerEl.find('a').length > 0) {\n url = $openerEl.find('a').attr('href');\n }\n }\n if (!url || url === '#' || url === '') url = ac.params.url;\n const inputType = ac.params.multiple ? 'checkbox' : 'radio';\n extend(ac, {\n $openerEl,\n openerEl: $openerEl && $openerEl[0],\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n id: uniqueId,\n url,\n value: ac.params.value || [],\n inputType,\n inputName: `${inputType}-${uniqueId}`,\n $modalEl: undefined,\n $dropdownEl: undefined\n });\n let previousQuery = '';\n function onInputChange() {\n let query = ac.$inputEl.val().trim();\n if (!ac.params.source) return;\n ac.params.source.call(ac, query, items => {\n let itemsHTML = '';\n const limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;\n ac.items = items;\n let regExp;\n if (ac.params.highlightMatches) {\n query = query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n regExp = new RegExp(`(${query})`, 'i');\n }\n let firstValue;\n let firstItem;\n for (let i = 0; i < limit; i += 1) {\n const itemValue = typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];\n const itemText = typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i];\n if (i === 0) {\n firstValue = itemValue;\n firstItem = ac.items[i];\n }\n itemsHTML += ac.renderItem({\n value: itemValue,\n text: ac.params.highlightMatches ? itemText.replace(regExp, '$1') : itemText\n }, i);\n }\n if (itemsHTML === '' && query === '' && ac.params.dropdownPlaceholderText) {\n itemsHTML += ac.renderItem({\n placeholder: true,\n text: ac.params.dropdownPlaceholderText\n });\n }\n ac.$dropdownEl.find('ul').html(itemsHTML);\n if (ac.params.typeahead) {\n if (!firstValue || !firstItem) {\n return;\n }\n if (firstValue.toLowerCase().indexOf(query.toLowerCase()) !== 0) {\n return;\n }\n if (previousQuery.toLowerCase() === query.toLowerCase()) {\n ac.value = [];\n return;\n }\n if (previousQuery.toLowerCase().indexOf(query.toLowerCase()) === 0) {\n previousQuery = query;\n ac.value = [];\n return;\n }\n $inputEl.val(firstValue);\n $inputEl[0].setSelectionRange(query.length, firstValue.length);\n const previousValue = typeof ac.value[0] === 'object' ? ac.value[0][ac.params.valueProperty] : ac.value[0];\n if (!previousValue || firstValue.toLowerCase() !== previousValue.toLowerCase()) {\n ac.value = [firstItem];\n ac.emit('local::change autocompleteChange', [firstItem]);\n }\n }\n previousQuery = query;\n });\n }\n function onPageInputChange() {\n const inputEl = this;\n const value = inputEl.value;\n const isValues = $(inputEl).parents('.autocomplete-values').length > 0;\n let item;\n let itemValue;\n let aValue;\n if (isValues) {\n if (ac.inputType === 'checkbox' && !inputEl.checked) {\n for (let i = 0; i < ac.value.length; i += 1) {\n aValue = typeof ac.value[i] === 'string' ? ac.value[i] : ac.value[i][ac.params.valueProperty];\n if (aValue === value || aValue * 1 === value * 1) {\n ac.value.splice(i, 1);\n }\n }\n ac.updateValues();\n ac.emit('local::change autocompleteChange', ac.value);\n }\n return;\n }\n\n // Find Related Item\n for (let i = 0; i < ac.items.length; i += 1) {\n itemValue = typeof ac.items[i] === 'object' ? ac.items[i][ac.params.valueProperty] : ac.items[i];\n if (itemValue === value || itemValue * 1 === value * 1) item = ac.items[i];\n }\n if (ac.inputType === 'radio') {\n ac.value = [item];\n } else if (inputEl.checked) {\n ac.value.push(item);\n } else {\n for (let i = 0; i < ac.value.length; i += 1) {\n aValue = typeof ac.value[i] === 'object' ? ac.value[i][ac.params.valueProperty] : ac.value[i];\n if (aValue === value || aValue * 1 === value * 1) {\n ac.value.splice(i, 1);\n }\n }\n }\n\n // Update Values Block\n ac.updateValues();\n\n // On Select Callback\n if (ac.inputType === 'radio' && inputEl.checked || ac.inputType === 'checkbox') {\n ac.emit('local::change autocompleteChange', ac.value);\n }\n }\n function onHtmlClick(e) {\n const $targetEl = $(e.target);\n if ($targetEl.is(ac.$inputEl[0]) || ac.$dropdownEl && $targetEl.closest(ac.$dropdownEl[0]).length) return;\n ac.close();\n }\n function onOpenerClick() {\n ac.open();\n }\n function onInputFocus() {\n ac.open();\n }\n function onInputBlur() {\n if (ac.$dropdownEl.find('label.active-state').length > 0) return;\n setTimeout(() => {\n ac.close();\n }, 0);\n }\n function onResize() {\n ac.positionDropdown();\n }\n function onKeyDown(e) {\n if (!ac.opened) return;\n if (e.keyCode === 27) {\n // ESC\n e.preventDefault();\n ac.$inputEl.blur();\n return;\n }\n if (e.keyCode === 13) {\n // Enter\n const $selectedItemLabel = ac.$dropdownEl.find('.autocomplete-dropdown-selected label');\n if ($selectedItemLabel.length) {\n e.preventDefault();\n $selectedItemLabel.trigger('click');\n ac.$inputEl.blur();\n return;\n }\n if (ac.params.typeahead) {\n e.preventDefault();\n ac.$inputEl.blur();\n }\n return;\n }\n if (e.keyCode !== 40 && e.keyCode !== 38) return;\n e.preventDefault();\n const $selectedItem = ac.$dropdownEl.find('.autocomplete-dropdown-selected');\n let $newItem;\n if ($selectedItem.length) {\n $newItem = $selectedItem[e.keyCode === 40 ? 'next' : 'prev']('li');\n if (!$newItem.length) {\n $newItem = ac.$dropdownEl.find('li').eq(e.keyCode === 40 ? 0 : ac.$dropdownEl.find('li').length - 1);\n }\n } else {\n $newItem = ac.$dropdownEl.find('li').eq(e.keyCode === 40 ? 0 : ac.$dropdownEl.find('li').length - 1);\n }\n if ($newItem.hasClass('autocomplete-dropdown-placeholder')) return;\n $selectedItem.removeClass('autocomplete-dropdown-selected');\n $newItem.addClass('autocomplete-dropdown-selected');\n }\n function onDropdownClick() {\n const $clickedEl = $(this);\n let clickedItem;\n for (let i = 0; i < ac.items.length; i += 1) {\n const itemValue = typeof ac.items[i] === 'object' ? ac.items[i][ac.params.valueProperty] : ac.items[i];\n const value = $clickedEl.attr('data-value');\n if (itemValue === value || itemValue * 1 === value * 1) {\n clickedItem = ac.items[i];\n }\n }\n if (ac.params.updateInputValueOnSelect) {\n ac.$inputEl.val(typeof clickedItem === 'object' ? clickedItem[ac.params.valueProperty] : clickedItem);\n ac.$inputEl.trigger('input change');\n }\n ac.value = [clickedItem];\n ac.emit('local::change autocompleteChange', [clickedItem]);\n ac.close();\n }\n ac.attachEvents = function attachEvents() {\n if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {\n ac.$openerEl.on('click', onOpenerClick);\n }\n if (ac.params.openIn === 'dropdown' && ac.$inputEl) {\n ac.$inputEl.on('focus', onInputFocus);\n ac.$inputEl.on(ac.params.inputEvents, onInputChange);\n if (device.android) {\n $('html').on('click', onHtmlClick);\n } else {\n ac.$inputEl.on('blur', onInputBlur);\n }\n ac.$inputEl.on('keydown', onKeyDown);\n }\n };\n ac.detachEvents = function attachEvents() {\n if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {\n ac.$openerEl.off('click', onOpenerClick);\n }\n if (ac.params.openIn === 'dropdown' && ac.$inputEl) {\n ac.$inputEl.off('focus', onInputFocus);\n ac.$inputEl.off(ac.params.inputEvents, onInputChange);\n if (device.android) {\n $('html').off('click', onHtmlClick);\n } else {\n ac.$inputEl.off('blur', onInputBlur);\n }\n ac.$inputEl.off('keydown', onKeyDown);\n }\n };\n ac.attachDropdownEvents = function attachDropdownEvents() {\n ac.$dropdownEl.on('click', 'label', onDropdownClick);\n app.on('resize', onResize);\n };\n ac.detachDropdownEvents = function detachDropdownEvents() {\n ac.$dropdownEl.off('click', 'label', onDropdownClick);\n app.off('resize', onResize);\n };\n ac.attachPageEvents = function attachPageEvents() {\n ac.$el.on('change', 'input[type=\"radio\"], input[type=\"checkbox\"]', onPageInputChange);\n if (ac.params.closeOnSelect && !ac.params.multiple) {\n ac.$el.once('click', '.list label', () => {\n nextTick(() => {\n ac.close();\n });\n });\n }\n };\n ac.detachPageEvents = function detachPageEvents() {\n ac.$el.off('change', 'input[type=\"radio\"], input[type=\"checkbox\"]', onPageInputChange);\n };\n\n // Install Modules\n ac.useModules();\n\n // Init\n ac.init();\n return ac;\n }\n get view() {\n const ac = this;\n const {\n $openerEl,\n $inputEl,\n app\n } = ac;\n let view;\n if (ac.params.view) {\n view = ac.params.view;\n } else if ($openerEl || $inputEl) {\n const $el = $openerEl || $inputEl;\n view = $el.closest('.view').length && $el.closest('.view')[0].f7View;\n }\n if (!view) view = app.views.main;\n return view;\n }\n positionDropdown() {\n const ac = this;\n const {\n $inputEl,\n app,\n $dropdownEl\n } = ac;\n const $pageContentEl = $inputEl.parents('.page-content');\n if ($pageContentEl.length === 0) return;\n const inputOffset = $inputEl.offset();\n const inputOffsetWidth = $inputEl[0].offsetWidth;\n const inputOffsetHeight = $inputEl[0].offsetHeight;\n const $listEl = $inputEl.parents('.list');\n let $listParent;\n $listEl.parents().each(parentEl => {\n if ($listParent) return;\n const $parentEl = $(parentEl);\n if ($parentEl.parent($pageContentEl).length) $listParent = $parentEl;\n });\n const listOffset = $listEl.offset();\n const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n const listOffsetLeft = $listEl.length > 0 ? listOffset.left - $pageContentEl.offset().left : 0;\n const inputOffsetLeft = inputOffset.left - ($listEl.length > 0 ? listOffset.left : 0) - (app.rtl ? 0 : 0);\n const inputOffsetTop = inputOffset.top - ($pageContentEl.offset().top - $pageContentEl[0].scrollTop);\n const maxHeight = $pageContentEl[0].scrollHeight - paddingBottom - (inputOffsetTop + $pageContentEl[0].scrollTop) - $inputEl[0].offsetHeight;\n const paddingProp = app.rtl ? 'padding-right' : 'padding-left';\n let paddingValue;\n if ($listEl.length) {\n paddingValue = (app.rtl ? $listEl[0].offsetWidth - inputOffsetLeft - inputOffsetWidth : inputOffsetLeft) - (app.theme === 'md' ? 16 : 15);\n }\n $dropdownEl.css({\n left: `${$listEl.length > 0 ? listOffsetLeft : inputOffsetLeft}px`,\n top: `${inputOffsetTop + $pageContentEl[0].scrollTop + inputOffsetHeight}px`,\n width: `${$listEl.length > 0 ? $listEl[0].offsetWidth : inputOffsetWidth}px`\n });\n $dropdownEl.children('.autocomplete-dropdown-inner').css({\n maxHeight: `${maxHeight}px`,\n [paddingProp]: $listEl.length > 0 ? `${paddingValue}px` : ''\n });\n }\n focus() {\n const ac = this;\n ac.$el.find('input[type=search]').focus();\n }\n source(query) {\n const ac = this;\n if (!ac.params.source) return;\n const {\n $el\n } = ac;\n ac.params.source.call(ac, query, items => {\n let itemsHTML = '';\n const limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;\n ac.items = items;\n for (let i = 0; i < limit; i += 1) {\n let selected = false;\n const itemValue = typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];\n for (let j = 0; j < ac.value.length; j += 1) {\n const aValue = typeof ac.value[j] === 'object' ? ac.value[j][ac.params.valueProperty] : ac.value[j];\n if (aValue === itemValue || aValue * 1 === itemValue * 1) selected = true;\n }\n itemsHTML += ac.renderItem({\n value: itemValue,\n text: typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i],\n inputType: ac.inputType,\n id: ac.id,\n inputName: ac.inputName,\n selected\n }, i);\n }\n $el.find('.autocomplete-found ul').html(itemsHTML);\n if (items.length === 0) {\n if (query.length !== 0) {\n $el.find('.autocomplete-not-found').show();\n $el.find('.autocomplete-found, .autocomplete-values').hide();\n } else {\n $el.find('.autocomplete-values').show();\n $el.find('.autocomplete-found, .autocomplete-not-found').hide();\n }\n } else {\n $el.find('.autocomplete-found').show();\n $el.find('.autocomplete-not-found, .autocomplete-values').hide();\n }\n });\n }\n updateValues() {\n const ac = this;\n let valuesHTML = '';\n for (let i = 0; i < ac.value.length; i += 1) {\n valuesHTML += ac.renderItem({\n value: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.valueProperty] : ac.value[i],\n text: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.textProperty] : ac.value[i],\n inputType: ac.inputType,\n id: ac.id,\n inputName: `${ac.inputName}-checked}`,\n selected: true\n }, i);\n }\n ac.$el.find('.autocomplete-values ul').html(valuesHTML);\n }\n preloaderHide() {\n const ac = this;\n if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {\n ac.$dropdownEl.find('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');\n } else {\n $('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');\n }\n }\n preloaderShow() {\n const ac = this;\n if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {\n ac.$dropdownEl.find('.autocomplete-preloader').addClass('autocomplete-preloader-visible');\n } else {\n $('.autocomplete-preloader').addClass('autocomplete-preloader-visible');\n }\n }\n renderPreloader() {\n const ac = this;\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n return $jsx(\"div\", {\n class: `autocomplete-preloader preloader ${ac.params.preloaderColor ? `color-${ac.params.preloaderColor}` : ''}`\n }, preloaders[`${ac.app.theme}PreloaderContent`] || '');\n }\n renderSearchbar() {\n const ac = this;\n if (ac.params.renderSearchbar) return ac.params.renderSearchbar.call(ac);\n return $jsx(\"form\", {\n class: \"searchbar\"\n }, $jsx(\"div\", {\n class: \"searchbar-inner\"\n }, $jsx(\"div\", {\n class: \"searchbar-input-wrap\"\n }, $jsx(\"input\", {\n type: \"search\",\n spellcheck: ac.params.searchbarSpellcheck || 'false',\n placeholder: ac.params.searchbarPlaceholder\n }), $jsx(\"i\", {\n class: \"searchbar-icon\"\n }), $jsx(\"span\", {\n class: \"input-clear-button\"\n })), ac.params.searchbarDisableButton && $jsx(\"span\", {\n class: \"searchbar-disable-button\"\n }, ac.params.searchbarDisableText)));\n }\n renderItem(item, index) {\n const ac = this;\n if (ac.params.renderItem) return ac.params.renderItem.call(ac, item, index);\n const itemValue = item.value && typeof item.value === 'string' ? item.value.replace(/\"/g, '"') : item.value;\n if (ac.params.openIn !== 'dropdown') {\n return $jsx(\"li\", null, $jsx(\"label\", {\n class: `item-${item.inputType} item-content`\n }, $jsx(\"input\", {\n type: item.inputType,\n name: item.inputName,\n value: itemValue,\n _checked: item.selected\n }), $jsx(\"i\", {\n class: `icon icon-${item.inputType}`\n }), $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: \"item-title\"\n }, item.text))));\n }\n // Dropdown\n if (!item.placeholder) {\n return $jsx(\"li\", null, $jsx(\"label\", {\n class: \"item-radio item-content\",\n \"data-value\": itemValue\n }, $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: \"item-title\"\n }, item.text))));\n }\n\n // Dropwdown placeholder\n return $jsx(\"li\", {\n class: \"autocomplete-dropdown-placeholder\"\n }, $jsx(\"label\", {\n class: \"item-content\"\n }, $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: \"item-title\"\n }, item.text))));\n }\n renderNavbar() {\n const ac = this;\n if (ac.params.renderNavbar) return ac.params.renderNavbar.call(ac);\n let pageTitle = ac.params.pageTitle;\n if (typeof pageTitle === 'undefined' && ac.$openerEl && ac.$openerEl.length) {\n pageTitle = ac.$openerEl.find('.item-title').text().trim();\n }\n const inPopup = ac.params.openIn === 'popup';\n\n // eslint-disable-next-line\n const navbarLeft = inPopup ? ac.params.preloader && $jsx(\"div\", {\n class: \"left\"\n }, ac.renderPreloader()) : $jsx(\"div\", {\n class: \"left sliding\"\n }, $jsx(\"a\", {\n class: \"link back\"\n }, $jsx(\"i\", {\n class: \"icon icon-back\"\n }), $jsx(\"span\", {\n class: \"if-not-md\"\n }, ac.params.pageBackLinkText)));\n const navbarRight = inPopup ? $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link popup-close\",\n \"data-popup\": \".autocomplete-popup\"\n }, ac.params.popupCloseLinkText)) : ac.params.preloader && $jsx(\"div\", {\n class: \"right\"\n }, ac.renderPreloader());\n return $jsx(\"div\", {\n class: `navbar ${ac.params.navbarColorTheme ? `color-${ac.params.navbarColorTheme}` : ''}`\n }, $jsx(\"div\", {\n class: \"navbar-bg\"\n }), $jsx(\"div\", {\n class: `navbar-inner ${ac.params.navbarColorTheme ? `color-${ac.params.navbarColorTheme}` : ''}`\n }, navbarLeft, pageTitle && $jsx(\"div\", {\n class: \"title sliding\"\n }, pageTitle), navbarRight, $jsx(\"div\", {\n class: \"subnavbar sliding\"\n }, ac.renderSearchbar())));\n }\n renderDropdown() {\n const ac = this;\n if (ac.params.renderDropdown) return ac.params.renderDropdown.call(ac, ac.items);\n return $jsx(\"div\", {\n class: \"autocomplete-dropdown\"\n }, $jsx(\"div\", {\n class: \"autocomplete-dropdown-inner\"\n }, $jsx(\"div\", {\n class: `list no-safe-areas`\n }, $jsx(\"ul\", null))), ac.params.preloader && ac.renderPreloader());\n }\n renderPage(inPopup) {\n const ac = this;\n if (ac.params.renderPage) return ac.params.renderPage.call(ac, ac.items);\n return $jsx(\"div\", {\n class: \"page page-with-subnavbar autocomplete-page\",\n \"data-name\": \"autocomplete-page\"\n }, ac.renderNavbar(inPopup), $jsx(\"div\", {\n class: \"searchbar-backdrop\"\n }), $jsx(\"div\", {\n class: \"page-content\"\n }, $jsx(\"div\", {\n class: `list autocomplete-list autocomplete-found autocomplete-list-${ac.id} ${ac.params.formColorTheme ? `color-${ac.params.formColorTheme}` : ''}`\n }, $jsx(\"ul\", null)), $jsx(\"div\", {\n class: \"list autocomplete-not-found\"\n }, $jsx(\"ul\", null, $jsx(\"li\", {\n class: \"item-content\"\n }, $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: \"item-title\"\n }, ac.params.notFoundText))))), $jsx(\"div\", {\n class: \"list autocomplete-values\"\n }, $jsx(\"ul\", null))));\n }\n renderPopup() {\n const ac = this;\n if (ac.params.renderPopup) return ac.params.renderPopup.call(ac, ac.items);\n return $jsx(\"div\", {\n class: \"popup autocomplete-popup\"\n }, $jsx(\"div\", {\n class: \"view\"\n }, ac.renderPage(true), \";\"));\n }\n onOpen(type, el) {\n const ac = this;\n const app = ac.app;\n const $el = $(el);\n ac.$el = $el;\n ac.el = $el[0];\n ac.openedIn = type;\n ac.opened = true;\n if (ac.params.openIn === 'dropdown') {\n ac.attachDropdownEvents();\n ac.$dropdownEl.addClass('autocomplete-dropdown-in');\n ac.$inputEl.trigger('input');\n } else {\n // Init SB\n let $searchbarEl = $el.find('.searchbar');\n if (ac.params.openIn === 'page' && app.theme === 'ios' && $searchbarEl.length === 0) {\n $searchbarEl = $(app.navbar.getElByPage($el)).find('.searchbar');\n }\n ac.searchbar = app.searchbar.create({\n el: $searchbarEl,\n backdropEl: $el.find('.searchbar-backdrop'),\n customSearch: true,\n on: {\n search(sb, query) {\n if (query.length === 0 && ac.searchbar.enabled) {\n ac.searchbar.backdropShow();\n } else {\n ac.searchbar.backdropHide();\n }\n ac.source(query);\n }\n }\n });\n\n // Attach page events\n ac.attachPageEvents();\n\n // Update Values On Page Init\n ac.updateValues();\n\n // Source on load\n if (ac.params.requestSourceOnOpen) ac.source('');\n }\n ac.emit('local::open autocompleteOpen', ac);\n }\n autoFocus() {\n const ac = this;\n if (ac.searchbar && ac.searchbar.$inputEl) {\n ac.searchbar.$inputEl.focus();\n }\n return ac;\n }\n onOpened() {\n const ac = this;\n if (ac.params.openIn !== 'dropdown' && ac.params.autoFocus) {\n ac.autoFocus();\n }\n ac.emit('local::opened autocompleteOpened', ac);\n }\n onClose() {\n const ac = this;\n if (ac.destroyed) return;\n\n // Destroy SB\n if (ac.searchbar && ac.searchbar.destroy) {\n ac.searchbar.destroy();\n ac.searchbar = null;\n delete ac.searchbar;\n }\n if (ac.params.openIn === 'dropdown') {\n ac.detachDropdownEvents();\n ac.$dropdownEl.removeClass('autocomplete-dropdown-in').remove();\n } else {\n ac.detachPageEvents();\n }\n ac.emit('local::close autocompleteClose', ac);\n }\n onClosed() {\n const ac = this;\n if (ac.destroyed) return;\n ac.opened = false;\n ac.$el = null;\n ac.el = null;\n delete ac.$el;\n delete ac.el;\n ac.emit('local::closed autocompleteClosed', ac);\n }\n openPage() {\n const ac = this;\n if (ac.opened) return ac;\n const pageHtml = ac.renderPage();\n ac.view.router.navigate({\n url: ac.url,\n route: {\n content: pageHtml,\n path: ac.url,\n on: {\n pageBeforeIn(e, page) {\n ac.onOpen('page', page.el);\n },\n pageAfterIn(e, page) {\n ac.onOpened('page', page.el);\n },\n pageBeforeOut(e, page) {\n ac.onClose('page', page.el);\n },\n pageAfterOut(e, page) {\n ac.onClosed('page', page.el);\n }\n },\n options: {\n animate: ac.params.animate\n }\n }\n });\n return ac;\n }\n openPopup() {\n const ac = this;\n if (ac.opened) return ac;\n const popupHtml = ac.renderPopup();\n const popupParams = {\n content: popupHtml,\n animate: ac.params.animate,\n push: ac.params.popupPush,\n swipeToClose: ac.params.popupSwipeToClose,\n on: {\n popupOpen(popup) {\n ac.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n ac.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n ac.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n ac.onClosed('popup', popup.el);\n }\n }\n };\n if (ac.params.routableModals && ac.view) {\n ac.view.router.navigate({\n url: ac.url,\n route: {\n path: ac.url,\n popup: popupParams\n }\n });\n } else {\n ac.modal = ac.app.popup.create(popupParams).open(ac.params.animate);\n }\n return ac;\n }\n openDropdown() {\n const ac = this;\n if (!ac.$dropdownEl) {\n ac.$dropdownEl = $(ac.renderDropdown());\n }\n const $pageContentEl = ac.$inputEl.parents('.page-content');\n if (ac.params.dropdownContainerEl) {\n $(ac.params.dropdownContainerEl).append(ac.$dropdownEl);\n } else if ($pageContentEl.length === 0) {\n ac.$dropdownEl.insertAfter(ac.$inputEl);\n } else {\n ac.positionDropdown();\n $pageContentEl.append(ac.$dropdownEl);\n }\n ac.onOpen('dropdown', ac.$dropdownEl);\n ac.onOpened('dropdown', ac.$dropdownEl);\n }\n open() {\n const ac = this;\n if (ac.opened) return ac;\n const openIn = ac.params.openIn;\n ac[`open${openIn.split('').map((el, index) => {\n if (index === 0) return el.toUpperCase();\n return el;\n }).join('')}`]();\n return ac;\n }\n close() {\n const ac = this;\n if (!ac.opened) return ac;\n if (ac.params.openIn === 'dropdown') {\n ac.onClose();\n ac.onClosed();\n } else if (ac.params.routableModals && ac.view || ac.openedIn === 'page') {\n ac.view.router.back({\n animate: ac.params.animate\n });\n } else {\n ac.modal.once('modalClosed', () => {\n nextTick(() => {\n if (ac.destroyed) return;\n ac.modal.destroy();\n delete ac.modal;\n });\n });\n ac.modal.close();\n }\n return ac;\n }\n init() {\n const ac = this;\n ac.attachEvents();\n }\n destroy() {\n const ac = this;\n ac.emit('local::beforeDestroy autocompleteBeforeDestroy', ac);\n ac.detachEvents();\n if (ac.$inputEl && ac.$inputEl[0]) {\n delete ac.$inputEl[0].f7Autocomplete;\n }\n if (ac.$openerEl && ac.$openerEl[0]) {\n delete ac.$openerEl[0].f7Autocomplete;\n }\n deleteProps(ac);\n ac.destroyed = true;\n }\n}\nexport default Autocomplete;","import { extend } from '../../shared/utils.js';\nimport Autocomplete from './autocomplete-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'autocomplete',\n params: {\n autocomplete: {\n openerEl: undefined,\n inputEl: undefined,\n view: undefined,\n // DropDown\n dropdownContainerEl: undefined,\n dropdownPlaceholderText: undefined,\n typeahead: false,\n highlightMatches: true,\n updateInputValueOnSelect: true,\n inputEvents: 'input',\n value: undefined,\n multiple: false,\n source: undefined,\n limit: undefined,\n valueProperty: 'id',\n textProperty: 'text',\n openIn: 'page',\n // or 'popup' or 'dropdown'\n pageBackLinkText: 'Back',\n popupCloseLinkText: 'Close',\n pageTitle: undefined,\n searchbarPlaceholder: 'Search...',\n searchbarDisableText: 'Cancel',\n searchbarDisableButton: true,\n searchbarSpellcheck: false,\n popupPush: false,\n popupSwipeToClose: undefined,\n animate: true,\n autoFocus: false,\n closeOnSelect: false,\n notFoundText: 'Nothing found',\n requestSourceOnOpen: false,\n // Preloader\n preloaderColor: undefined,\n preloader: false,\n // Colors\n formColorTheme: undefined,\n navbarColorTheme: undefined,\n // Routing\n routableModals: false,\n url: 'select/',\n // Custom render functions\n renderDropdown: undefined,\n renderPage: undefined,\n renderPopup: undefined,\n renderItem: undefined,\n renderSearchbar: undefined,\n renderNavbar: undefined\n }\n },\n static: {\n Autocomplete\n },\n create() {\n const app = this;\n app.autocomplete = extend(ConstructorMethods({\n defaultSelector: undefined,\n constructor: Autocomplete,\n app,\n domProp: 'f7Autocomplete'\n }), {\n open(autocompleteEl) {\n const ac = app.autocomplete.get(autocompleteEl);\n if (ac && ac.open) return ac.open();\n return undefined;\n },\n close(autocompleteEl) {\n const ac = app.autocomplete.get(autocompleteEl);\n if (ac && ac.close) return ac.close();\n return undefined;\n }\n });\n }\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport Framework7Class from '../../shared/class.js';\nclass Tooltip extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const tooltip = this;\n const support = getSupport();\n const defaults = extend({}, app.params.tooltip);\n const document = getDocument();\n\n // Extend defaults with modules params\n tooltip.useModulesParams(defaults);\n tooltip.params = extend(defaults, params);\n if (typeof params.offset === 'undefined' && support.touch && tooltip.params.trigger === 'hover') {\n tooltip.params.offset = 10;\n }\n const {\n targetEl,\n containerEl\n } = tooltip.params;\n if (!targetEl && !tooltip.params.delegated) return tooltip;\n const $targetEl = $(targetEl);\n if ($targetEl.length === 0 && !tooltip.params.delegated) return tooltip;\n if ($targetEl[0] && $targetEl[0].f7Tooltip && !tooltip.params.delegated) return $targetEl[0].f7Tooltip;\n let $containerEl = $(containerEl || app.$el).eq(0);\n if ($containerEl.length === 0) {\n $containerEl = app.$el;\n }\n const $el = $(tooltip.render()).eq(0);\n extend(tooltip, {\n app,\n $targetEl,\n targetEl: $targetEl && $targetEl[0],\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n $el,\n el: $el && $el[0],\n text: tooltip.params.text || '',\n visible: false,\n opened: false\n });\n if ($targetEl[0]) $targetEl[0].f7Tooltip = tooltip;\n const touchesStart = {};\n let isTouched;\n function handleClick() {\n if (tooltip.opened) tooltip.hide();else tooltip.show(this);\n }\n function handleClickOut(e) {\n if (tooltip.opened && ($(e.target).closest($targetEl).length || $(e.target).closest(tooltip.$el).length)) return;\n tooltip.hide();\n }\n function handleTouchStart(e) {\n if (isTouched) return;\n isTouched = true;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n tooltip.show(this);\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n const distance = ((x - touchesStart.x) ** 2 + (y - touchesStart.y) ** 2) ** 0.5;\n if (distance > 50) {\n isTouched = false;\n tooltip.hide();\n }\n }\n function handleTouchEnd() {\n if (!isTouched) return;\n isTouched = false;\n tooltip.hide();\n }\n function handleMouseEnter() {\n tooltip.show(this);\n }\n function handleMouseLeave() {\n tooltip.hide();\n }\n function handleTransitionEnd() {\n if (!$el.hasClass('tooltip-in')) {\n $el.removeClass('tooltip-out').remove();\n }\n }\n tooltip.attachEvents = function attachEvents() {\n $el.on('transitionend', handleTransitionEnd);\n if (tooltip.params.trigger === 'click') {\n if (tooltip.params.delegated) {\n $(document).on('click', tooltip.params.targetEl, handleClick);\n } else {\n tooltip.$targetEl.on('click', handleClick);\n }\n $('html').on('click', handleClickOut);\n return;\n }\n if (tooltip.params.trigger === 'manual') return;\n if (support.touch) {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n if (tooltip.params.delegated) {\n $(document).on(app.touchEvents.start, tooltip.params.targetEl, handleTouchStart, passive);\n } else {\n tooltip.$targetEl.on(app.touchEvents.start, handleTouchStart, passive);\n }\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n } else {\n // eslint-disable-next-line\n if (tooltip.params.delegated) {\n $(document).on(support.pointerEvents ? 'pointerenter' : 'mouseenter', tooltip.params.targetEl, handleMouseEnter, true);\n $(document).on(support.pointerEvents ? 'pointerleave' : 'mouseleave', tooltip.params.targetEl, handleMouseLeave, true);\n } else {\n tooltip.$targetEl.on(support.pointerEvents ? 'pointerenter' : 'mouseenter', handleMouseEnter);\n tooltip.$targetEl.on(support.pointerEvents ? 'pointerleave' : 'mouseleave', handleMouseLeave);\n }\n }\n };\n tooltip.detachEvents = function detachEvents() {\n $el.off('transitionend', handleTransitionEnd);\n if (tooltip.params.trigger === 'click') {\n if (tooltip.params.delegated) {\n $(document).on('click', tooltip.params.targetEl, handleClick);\n } else {\n tooltip.$targetEl.off('click', handleClick);\n }\n $('html').off('click', handleClickOut);\n return;\n }\n if (tooltip.params.trigger === 'manual') return;\n if (support.touch) {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n if (tooltip.params.delegated) {\n $(document).off(app.touchEvents.start, tooltip.params.targetEl, handleTouchStart, passive);\n } else {\n tooltip.$targetEl.off(app.touchEvents.start, handleTouchStart, passive);\n }\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n } else {\n // eslint-disable-next-line\n if (tooltip.params.delegated) {\n $(document).off(support.pointerEvents ? 'pointerenter' : 'mouseenter', tooltip.params.targetEl, handleMouseEnter, true);\n $(document).off(support.pointerEvents ? 'pointerleave' : 'mouseleave', tooltip.params.targetEl, handleMouseLeave, true);\n } else {\n tooltip.$targetEl.off(support.pointerEvents ? 'pointerenter' : 'mouseenter', handleMouseEnter);\n tooltip.$targetEl.off(support.pointerEvents ? 'pointerleave' : 'mouseleave', handleMouseLeave);\n }\n }\n };\n\n // Install Modules\n tooltip.useModules();\n tooltip.init();\n return tooltip;\n }\n setTargetEl(targetEl) {\n const tooltip = this;\n tooltip.detachEvents();\n tooltip.$targetEl = $(targetEl);\n tooltip.targetEl = tooltip.$targetEl[0];\n tooltip.attachEvents();\n return tooltip;\n }\n position(targetEl) {\n const tooltip = this;\n const {\n $el,\n app,\n $containerEl\n } = tooltip;\n const hasContainerEl = !!tooltip.params.containerEl;\n const tooltipOffset = tooltip.params.offset || 0;\n $el.css({\n left: '',\n top: ''\n });\n const $targetEl = $(targetEl || tooltip.targetEl);\n const [width, height] = [$el.width(), $el.height()];\n $el.css({\n left: '',\n top: ''\n });\n let targetWidth;\n let targetHeight;\n let targetOffsetLeft;\n let targetOffsetTop;\n const boundaries = hasContainerEl && $containerEl.length ? $containerEl[0].getBoundingClientRect() : app;\n if ($targetEl && $targetEl.length > 0) {\n targetWidth = $targetEl.outerWidth();\n targetHeight = $targetEl.outerHeight();\n if (typeof targetWidth === 'undefined' && typeof targetHeight === 'undefined') {\n const clientRect = $targetEl[0].getBoundingClientRect();\n targetWidth = clientRect.width;\n targetHeight = clientRect.height;\n }\n const targetOffset = $targetEl.offset();\n targetOffsetLeft = targetOffset.left - boundaries.left;\n targetOffsetTop = targetOffset.top - boundaries.top;\n const targetParentPage = $targetEl.parents('.page');\n if (targetParentPage.length > 0) {\n targetOffsetTop -= targetParentPage[0].scrollTop;\n }\n }\n let [left, top] = [0, 0, 0];\n\n // Top Position\n let position = 'top';\n if (height + tooltipOffset < targetOffsetTop) {\n // On top\n top = targetOffsetTop - height - tooltipOffset;\n } else if (height < boundaries.height - targetOffsetTop - targetHeight) {\n // On bottom\n position = 'bottom';\n top = targetOffsetTop + targetHeight + tooltipOffset;\n } else {\n // On middle\n position = 'middle';\n top = targetHeight / 2 + targetOffsetTop - height / 2;\n if (top <= 0) {\n top = 8;\n } else if (top + height >= boundaries.height) {\n top = boundaries.height - height - 8;\n }\n }\n\n // Horizontal Position\n if (position === 'top' || position === 'bottom') {\n left = targetWidth / 2 + targetOffsetLeft - width / 2;\n if (left < 8) left = 8;\n if (left + width > boundaries.width) left = boundaries.width - width - 8;\n if (left < 0) left = 0;\n } else if (position === 'middle') {\n left = targetOffsetLeft - width;\n if (left < 8 || left + width > boundaries.width) {\n if (left < 8) left = targetOffsetLeft + targetWidth;\n if (left + width > boundaries.width) left = boundaries.width - width - 8;\n }\n }\n\n // Apply Styles\n $el.css({\n top: `${top}px`,\n left: `${left}px`\n });\n }\n show(aroundEl) {\n const tooltip = this;\n const {\n $el,\n $targetEl,\n $containerEl\n } = tooltip;\n if ($containerEl[0] && $el[0] && !$containerEl[0].contains($el[0])) {\n $containerEl.append($el);\n }\n tooltip.position(aroundEl);\n const $aroundEl = $(aroundEl);\n tooltip.visible = true;\n tooltip.opened = true;\n $targetEl.trigger('tooltip:show');\n $el.trigger('tooltip:show');\n if ($aroundEl.length && $aroundEl[0] !== $targetEl[0]) {\n $aroundEl.trigger('tooltip:show');\n }\n tooltip.emit('local::show tooltipShow', tooltip);\n $el.removeClass('tooltip-out').addClass('tooltip-in');\n return tooltip;\n }\n hide() {\n const tooltip = this;\n const {\n $el,\n $targetEl\n } = tooltip;\n tooltip.visible = false;\n tooltip.opened = false;\n $targetEl.trigger('tooltip:hide');\n $el.trigger('tooltip:hide');\n tooltip.emit('local::hide tooltipHide', tooltip);\n $el.addClass('tooltip-out').removeClass('tooltip-in');\n return tooltip;\n }\n render() {\n const tooltip = this;\n if (tooltip.params.render) return tooltip.params.render.call(tooltip, tooltip);\n const {\n cssClass,\n text\n } = tooltip.params;\n return `\n
                      \n
                      ${text || ''}
                      \n
                      \n `.trim();\n }\n setText(newText) {\n const tooltip = this;\n if (typeof newText === 'undefined') {\n return tooltip;\n }\n tooltip.params.text = newText;\n tooltip.text = newText;\n if (tooltip.$el) {\n tooltip.$el.children('.tooltip-content').html(newText);\n }\n if (tooltip.opened) {\n tooltip.position();\n }\n return tooltip;\n }\n init() {\n const tooltip = this;\n tooltip.attachEvents();\n }\n destroy() {\n const tooltip = this;\n if (!tooltip.$targetEl || tooltip.destroyed) return;\n tooltip.$targetEl.trigger('tooltip:beforedestroy');\n tooltip.emit('local::beforeDestroy tooltipBeforeDestroy', tooltip);\n tooltip.$el.remove();\n if (tooltip.$targetEl[0]) delete tooltip.$targetEl[0].f7Tooltip;\n tooltip.detachEvents();\n deleteProps(tooltip);\n tooltip.destroyed = true;\n }\n}\nexport default Tooltip;","import $ from '../../shared/dom7.js';\nimport Tooltip from './tooltip-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'tooltip',\n static: {\n Tooltip\n },\n create() {\n const app = this;\n app.tooltip = ConstructorMethods({\n defaultSelector: '.tooltip',\n constructor: Tooltip,\n app,\n domProp: 'f7Tooltip'\n });\n app.tooltip.show = function show(el) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const tooltip = $el[0].f7Tooltip;\n if (!tooltip) return undefined;\n tooltip.show($el[0]);\n return tooltip;\n };\n app.tooltip.hide = function hide(el) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const tooltip = $el[0].f7Tooltip;\n if (!tooltip) return undefined;\n tooltip.hide();\n return tooltip;\n };\n app.tooltip.setText = function text(el, newText) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const tooltip = $el[0].f7Tooltip;\n if (!tooltip) return undefined;\n tooltip.setText(newText);\n return tooltip;\n };\n },\n params: {\n tooltip: {\n targetEl: null,\n delegated: false,\n text: null,\n cssClass: null,\n render: null,\n offset: 0,\n trigger: 'hover',\n containerEl: undefined\n }\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.tooltip-init').each(el => {\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({\n targetEl: el,\n text\n });\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.tooltip-init').each(el => {\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.tooltip-init').each(el => {\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({\n targetEl: el,\n text\n });\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.tooltip-init').each(el => {\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({\n targetEl: el,\n text\n });\n });\n }\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.tooltip-init').each(el => {\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.tooltip-init').each(el => {\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n });\n }\n }\n },\n vnode: {\n 'tooltip-init': {\n insert(vnode) {\n const app = this;\n const el = vnode.elm;\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({\n targetEl: el,\n text\n });\n },\n update(vnode) {\n const el = vnode.elm;\n if (!el.f7Tooltip) return;\n if (vnode && vnode.data && vnode.data.attrs && vnode.data.attrs['data-tooltip']) {\n el.f7Tooltip.setText(vnode.data.attrs['data-tooltip']);\n }\n },\n destroy(vnode) {\n const el = vnode.elm;\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n }\n }\n }\n};","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n sliderLabel,\n sliderValue,\n sliderValueEditable,\n alphaLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-alpha-slider\"\n }, $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, alphaLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-alpha\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.01\",\n min: \"0\",\n max: \"1\",\n class: \"color-picker-value-alpha\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-alpha\"\n }))));\n },\n init(self) {\n self.alphaRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-alpha'),\n min: 0,\n max: 1,\n step: 0.01,\n value: 1,\n on: {\n change(range, value) {\n const alpha = Math.floor(value * 100) / 100;\n self.setValue({\n alpha\n });\n }\n }\n });\n function handleInputChange(e) {\n const alpha = self.value.alpha;\n let value = parseFloat(e.target.value);\n if (Number.isNaN(value)) {\n e.target.value = alpha;\n return;\n }\n value = Math.max(0, Math.min(1, value));\n self.setValue({\n alpha: value\n });\n }\n self.$el.on('change', '.color-picker-module-alpha-slider input', handleInputChange);\n self.destroyAlphaSliderEvents = function destroyAlphaSliderEvents() {\n self.$el.off('change', '.color-picker-module-alpha-slider input', handleInputChange);\n };\n },\n update(self) {\n const {\n value\n } = self;\n const {\n sliderValue,\n sliderValueEditable\n } = self.params;\n const {\n alpha\n } = value;\n self.alphaRangeSlider.value = alpha;\n self.alphaRangeSlider.layout();\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-alpha').val(alpha);\n } else {\n self.$el.find('span.color-picker-value-alpha').text(alpha);\n }\n },\n destroy(self) {\n if (self.alphaRangeSlider && self.alphaRangeSlider.destroy) {\n self.alphaRangeSlider.destroy();\n }\n delete self.alphaRangeSlider;\n if (self.destroyAlphaSliderEvents) self.destroyAlphaSliderEvents();\n delete self.destroyAlphaSliderEvents;\n }\n};","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render() {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-current-color\"\n }, $jsx(\"div\", {\n class: \"color-picker-current-color\"\n }));\n },\n update(self) {\n self.$el.find('.color-picker-module-current-color .color-picker-current-color').css('background-color', self.value.hex);\n }\n};","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n hexLabel,\n hexLabelText,\n hexValueEditable\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-hex\"\n }, $jsx(\"div\", {\n class: \"color-picker-hex-wrap\"\n }, hexLabel && $jsx(\"div\", {\n class: \"color-picker-hex-label\"\n }, hexLabelText), $jsx(\"div\", {\n class: \"color-picker-hex-value\"\n }, hexValueEditable ? $jsx(\"input\", {\n type: \"text\",\n class: \"color-picker-value-hex\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-hex\"\n }))));\n },\n init(self) {\n function handleInputChange(e) {\n const hex = self.value.hex;\n let value = e.target.value.replace(/#/g, '');\n if (Number.isNaN(value) || !value || value.length !== 3 && value.length !== 6) {\n e.target.value = hex;\n return;\n }\n const min = 0;\n const current = parseInt(value, 16);\n const max = parseInt('ffffff', 16); // eslint-disable-line\n if (current > max) {\n value = 'fff';\n }\n if (current < min) {\n value = '000';\n }\n self.setValue({\n hex: value\n });\n }\n self.$el.on('change', '.color-picker-module-hex input', handleInputChange);\n self.destroyHexEvents = function destroyHexEvents() {\n self.$el.off('change', '.color-picker-module-hex input', handleInputChange);\n };\n },\n update(self) {\n const {\n value\n } = self;\n const {\n hexValueEditable\n } = self.params;\n const {\n hex\n } = value;\n if (hexValueEditable) {\n self.$el.find('input.color-picker-value-hex').val(hex);\n } else {\n self.$el.find('span.color-picker-value-hex').text(hex);\n }\n },\n destroy(self) {\n if (self.destroyHexEvents) self.destroyHexEvents();\n delete self.destroyHexEvents;\n }\n};","import $ from '../../../shared/dom7.js';\nimport { colorHsbToHsl } from '../../../shared/utils.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n sliderLabel,\n sliderValue,\n sliderValueEditable,\n hueLabelText,\n saturationLabelText,\n brightnessLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-hsb-sliders\"\n }, $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, hueLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-hue\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n max: \"360\",\n class: \"color-picker-value-hue\",\n \"data-color-index\": \"0\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-hue\"\n }))), $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, saturationLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-saturation\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n max: \"100\",\n class: \"color-picker-value-saturation\",\n \"data-color-index\": \"1\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-saturation\"\n }))), $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, brightnessLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-brightness\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n max: \"100\",\n class: \"color-picker-value-brightness\",\n \"data-color-index\": \"2\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-brightness\"\n }))));\n },\n init(self) {\n self.hueRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-hue'),\n min: 0,\n max: 360,\n step: 0.1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({\n hue: value\n });\n }\n }\n });\n self.saturationRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-saturation'),\n min: 0,\n max: 1,\n step: 0.001,\n value: 0,\n on: {\n change(range, value) {\n const s = Math.floor(value * 1000) / 1000;\n self.setValue({\n hsb: [self.value.hsb[0], s, self.value.hsb[2]]\n });\n }\n }\n });\n self.brightnessRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-brightness'),\n min: 0,\n max: 1,\n step: 0.001,\n value: 0,\n on: {\n change(range, value) {\n const b = Math.floor(value * 1000) / 1000;\n self.setValue({\n hsb: [self.value.hsb[0], self.value.hsb[1], b]\n });\n }\n }\n });\n function handleInputChange(e) {\n const hsb = [...self.value.hsb];\n const index = parseInt($(e.target).attr('data-color-index'), 10);\n let value = parseFloat(e.target.value);\n if (Number.isNaN(value)) {\n e.target.value = hsb[index];\n return;\n }\n if (index === 0) {\n value = Math.max(0, Math.min(360, value));\n } else {\n value = Math.max(0, Math.min(100, value)) / 100;\n }\n hsb[index] = value;\n self.setValue({\n hsb\n });\n }\n self.$el.on('change', '.color-picker-module-hsb-sliders input', handleInputChange);\n self.destroyHsbSlidersEvents = function destroyHsbSlidersEvents() {\n self.$el.off('change', '.color-picker-module-hsb-sliders input', handleInputChange);\n };\n },\n update(self) {\n const {\n app,\n value\n } = self;\n const {\n sliderValue,\n sliderValueEditable\n } = self.params;\n const {\n hsb,\n hue\n } = value;\n self.hueRangeSlider.value = hue;\n self.saturationRangeSlider.value = hsb[1];\n self.brightnessRangeSlider.value = hsb[2];\n self.hueRangeSlider.layout();\n self.saturationRangeSlider.layout();\n self.brightnessRangeSlider.layout();\n const hslCurrent = colorHsbToHsl(hsb[0], hsb[1], 1);\n const hslLeft = colorHsbToHsl(hsb[0], 0, 1);\n const hslRight = colorHsbToHsl(hsb[0], 1, 1);\n const brightness = hsb[2];\n self.hueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hue}, 100%, 50%)`);\n self.saturationRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hslCurrent[0]}, ${hslCurrent[1] * 100}%, ${hslCurrent[2] * 100}%)`);\n self.brightnessRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${brightness * 255}, ${brightness * 255}, ${brightness * 255})`);\n self.saturationRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${app.rtl ? 'to left' : 'to right'}, hsl(${hslLeft[0]}, ${hslLeft[1] * 100}%, ${hslLeft[2] * 100}%), hsl(${hslRight[0]}, ${hslRight[1] * 100}%, ${hslRight[2] * 100}%))`);\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-hue').val(`${hue}`);\n self.$el.find('input.color-picker-value-saturation').val(`${hsb[1] * 1000 / 10}`);\n self.$el.find('input.color-picker-value-brightness').val(`${hsb[2] * 1000 / 10}`);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-hue').text(`${hue}`);\n self.$el.find('span.color-picker-value-saturation').text(`${hsb[1] * 1000 / 10}`);\n self.$el.find('span.color-picker-value-brightness').text(`${hsb[2] * 1000 / 10}`);\n }\n },\n destroy(self) {\n if (self.hueRangeSlider && self.hueRangeSlider.destroy) {\n self.hueRangeSlider.destroy();\n }\n if (self.saturationRangeSlider && self.saturationRangeSlider.destroy) {\n self.saturationRangeSlider.destroy();\n }\n if (self.brightnessRangeSlider && self.brightnessRangeSlider.destroy) {\n self.brightnessRangeSlider.destroy();\n }\n delete self.hueRangeSlider;\n delete self.saturationRangeSlider;\n delete self.brightnessRangeSlider;\n if (self.destroyHsbSlidersEvents) self.destroyHsbSlidersEvents();\n delete self.destroyHsbSlidersEvents;\n }\n};","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n sliderLabel,\n sliderValue,\n sliderValueEditable,\n hueLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-hue-slider\"\n }, $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, hueLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-hue\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n max: \"360\",\n class: \"color-picker-value-hue\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-hue\"\n }))));\n },\n init(self) {\n self.hueRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-hue'),\n min: 0,\n max: 360,\n step: 0.1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({\n hue: value\n });\n }\n }\n });\n },\n update(self) {\n const {\n value\n } = self;\n const {\n sliderValue,\n sliderValueEditable\n } = self.params;\n const {\n hue\n } = value;\n self.hueRangeSlider.value = hue;\n self.hueRangeSlider.layout();\n self.hueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hue}, 100%, 50%)`);\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-hue').val(`${hue}`);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-hue').text(`${hue}`);\n }\n },\n destroy(self) {\n if (self.hueRangeSlider && self.hueRangeSlider.destroy) {\n self.hueRangeSlider.destroy();\n }\n delete self.hueRangeSlider;\n }\n};","import { colorHsbToHsl } from '../../../shared/utils.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n sliderLabel,\n sliderValue,\n sliderValueEditable,\n brightnessLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-brightness-slider\"\n }, $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, brightnessLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-brightness\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n max: \"100\",\n class: \"color-picker-value-brightness\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-brightness\"\n }))));\n },\n init(self) {\n self.brightnessRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-brightness'),\n min: 0,\n max: 1,\n step: 0.001,\n value: 0,\n on: {\n change(range, value) {\n const b = Math.floor(value * 1000) / 1000;\n self.setValue({\n hsb: [self.value.hsb[0], self.value.hsb[1], b]\n });\n }\n }\n });\n },\n update(self) {\n const {\n value,\n app\n } = self;\n const {\n sliderValue,\n sliderValueEditable\n } = self.params;\n const {\n hsb\n } = value;\n self.brightnessRangeSlider.value = hsb[2];\n self.brightnessRangeSlider.layout();\n const hslCurrent = colorHsbToHsl(hsb[0], hsb[1], hsb[2]);\n const hslLeft = colorHsbToHsl(hsb[0], hsb[1], 0);\n const hslRight = colorHsbToHsl(hsb[0], hsb[1], 1);\n self.brightnessRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hslCurrent[0]}, ${hslCurrent[1] * 100}%, ${hslCurrent[2] * 100}%)`);\n self.brightnessRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${app.rtl ? 'to left' : 'to right'}, hsl(${hslLeft[0]}, ${hslLeft[1] * 100}%, ${hslLeft[2] * 100}%), hsl(${hslRight[0]}, ${hslRight[1] * 100}%, ${hslRight[2] * 100}%))`);\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-brightness').val(`${hsb[2] * 1000 / 10}`);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-brightness').text(`${hsb[2] * 1000 / 10}`);\n }\n },\n destroy(self) {\n if (self.brightnessRangeSlider && self.brightnessRangeSlider.destroy) {\n self.brightnessRangeSlider.destroy();\n }\n delete self.brightnessRangeSlider;\n }\n};","/* eslint indent: [\"off\"] */\nimport $ from '../../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-palette\"\n }, $jsx(\"div\", {\n class: \"color-picker-palette\"\n }, self.params.palette.map(p => {\n if (Array.isArray(p)) {\n let row = '
                      ';\n // prettier-ignore\n row += p.map(c => `\n
                      \n `).join('');\n row += '
                      ';\n return row;\n }\n return $jsx(\"div\", {\n class: \"color-picker-palette-value\",\n \"data-palette-color\": p,\n style: `background-color: ${p}`\n });\n })));\n },\n init(self) {\n function handlePaletteClick(e) {\n const hex = $(e.target).attr('data-palette-color');\n self.setValue({\n hex\n });\n }\n self.$el.on('click', '.color-picker-module-palette .color-picker-palette-value', handlePaletteClick);\n self.destroyPaletteEvents = function destroyPaletteEvents() {\n self.$el.off('click', '.color-picker-module-hex input', handlePaletteClick);\n };\n },\n destroy(self) {\n if (self.destroyPaletteEvents) {\n self.destroyPaletteEvents();\n }\n delete self.destroyPaletteEvents;\n }\n};","/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render() {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-initial-current-colors\"\n }, $jsx(\"div\", {\n class: \"color-picker-initial-current-colors\"\n }, $jsx(\"div\", {\n class: \"color-picker-initial-color\"\n }), $jsx(\"div\", {\n class: \"color-picker-current-color\"\n })));\n },\n init(self) {\n function handleInitialColorClick() {\n if (self.initialValue) {\n const {\n hex,\n alpha\n } = self.initialValue;\n self.setValue({\n hex,\n alpha\n });\n }\n }\n self.$el.on('click', '.color-picker-initial-color', handleInitialColorClick);\n self.destroyInitialCurrentEvents = function destroyInitialCurrentEvents() {\n self.$el.off('click', '.color-picker-initial-color', handleInitialColorClick);\n };\n },\n update(self) {\n self.$el.find('.color-picker-module-initial-current-colors .color-picker-initial-color').css('background-color', self.initialValue.hex);\n self.$el.find('.color-picker-module-initial-current-colors .color-picker-current-color').css('background-color', self.value.hex);\n },\n destroy(self) {\n if (self.destroyInitialCurrentEvents) {\n self.destroyInitialCurrentEvents();\n }\n delete self.destroyInitialCurrentEvents;\n }\n};","import $ from '../../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n barLabel,\n barValue,\n barValueEditable,\n redLabelText,\n greenLabelText,\n blueLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-rgb-bars\"\n }, $jsx(\"div\", {\n class: \"color-picker-bar-wrap\"\n }, barLabel && $jsx(\"div\", {\n class: \"color-picker-bar-label\"\n }, redLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-bar color-picker-bar-red\"\n }), barValue && $jsx(\"div\", {\n class: \"color-picker-bar-value\"\n }, barValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-bar-red\",\n \"data-color-index\": \"0\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-bar-red\"\n }))), $jsx(\"div\", {\n class: \"color-picker-bar-wrap\"\n }, barLabel && $jsx(\"div\", {\n class: \"color-picker-bar-label\"\n }, greenLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-bar color-picker-bar-green\"\n }), barValue && $jsx(\"div\", {\n class: \"color-picker-bar-value\"\n }, barValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-bar-green\",\n \"data-color-index\": \"1\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-bar-green\"\n }))), $jsx(\"div\", {\n class: \"color-picker-bar-wrap\"\n }, barLabel && $jsx(\"div\", {\n class: \"color-picker-bar-label\"\n }, blueLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-bar color-picker-bar-blue\"\n }), barValue && $jsx(\"div\", {\n class: \"color-picker-bar-value\"\n }, barValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-bar-blue\",\n \"data-color-index\": \"2\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-bar-blue\"\n }))));\n },\n init(self) {\n self.redBar = self.app.range.create({\n el: self.$el.find('.color-picker-bar-red'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n vertical: true,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [value, self.value.rgb[1], self.value.rgb[2]]\n });\n }\n }\n });\n self.greenBar = self.app.range.create({\n el: self.$el.find('.color-picker-bar-green'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n vertical: true,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [self.value.rgb[0], value, self.value.rgb[2]]\n });\n }\n }\n });\n self.blueBar = self.app.range.create({\n el: self.$el.find('.color-picker-bar-blue'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n vertical: true,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [self.value.rgb[0], self.value.rgb[1], value]\n });\n }\n }\n });\n function handleInputChange(e) {\n const rgb = [...self.value.rgb];\n const index = parseInt($(e.target).attr('data-color-index'), 10);\n let value = parseInt(e.target.value, 10);\n if (Number.isNaN(value)) {\n e.target.value = rgb[index];\n return;\n }\n value = Math.max(0, Math.min(255, value));\n rgb[index] = value;\n self.setValue({\n rgb\n });\n }\n self.$el.on('change', '.color-picker-module-rgb-bars input', handleInputChange);\n self.destroyRgbBarsEvents = function destroyRgbBarsEvents() {\n self.$el.off('change', '.color-picker-module-rgb-bars input', handleInputChange);\n };\n },\n update(self) {\n const {\n value,\n redBar,\n greenBar,\n blueBar\n } = self;\n const {\n barValue,\n barValueEditable\n } = self.params;\n const {\n rgb\n } = value;\n redBar.value = rgb[0];\n greenBar.value = rgb[1];\n blueBar.value = rgb[2];\n redBar.layout();\n greenBar.layout();\n blueBar.layout();\n redBar.$el.find('.range-bar').css('background-image', `linear-gradient(to top, rgb(0, ${rgb[1]}, ${rgb[2]}), rgb(255, ${rgb[1]}, ${rgb[2]}))`);\n greenBar.$el.find('.range-bar').css('background-image', `linear-gradient(to top, rgb(${rgb[0]}, 0, ${rgb[2]}), rgb(${rgb[0]}, 255, ${rgb[2]}))`);\n blueBar.$el.find('.range-bar').css('background-image', `linear-gradient(to top, rgb(${rgb[0]}, ${rgb[1]}, 0), rgb(${rgb[0]}, ${rgb[1]}, 255))`);\n if (barValue && barValueEditable) {\n self.$el.find('input.color-picker-value-bar-red').val(rgb[0]);\n self.$el.find('input.color-picker-value-bar-green').val(rgb[1]);\n self.$el.find('input.color-picker-value-bar-blue').val(rgb[2]);\n } else if (barValue) {\n self.$el.find('span.color-picker-value-bar-red').text(rgb[0]);\n self.$el.find('span.color-picker-value-bar-green').text(rgb[1]);\n self.$el.find('span.color-picker-value-bar-blue').text(rgb[2]);\n }\n },\n destroy(self) {\n if (self.redBar && self.redBar.destroy) {\n self.redBar.destroy();\n }\n if (self.greenBar && self.greenBar.destroy) {\n self.greenBar.destroy();\n }\n if (self.blueBar && self.blueBar.destroy) {\n self.blueBar.destroy();\n }\n delete self.redBar;\n delete self.greenBar;\n delete self.blueBar;\n if (self.destroyRgbBarsEvents) self.destroyRgbBarsEvents();\n delete self.destroyRgbBarsEvents;\n }\n};","import $ from '../../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n sliderLabel,\n sliderValue,\n sliderValueEditable,\n redLabelText,\n greenLabelText,\n blueLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-rgb-sliders\"\n }, $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, redLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-red\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-red\",\n \"data-color-index\": \"0\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-red\"\n }))), $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, greenLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-green\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-green\",\n \"data-color-index\": \"1\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-green\"\n }))), $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, blueLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-blue\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-blue\",\n \"data-color-index\": \"2\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-blue\"\n }))));\n },\n init(self) {\n self.redRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-red'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [value, self.value.rgb[1], self.value.rgb[2]]\n });\n }\n }\n });\n self.greenRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-green'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [self.value.rgb[0], value, self.value.rgb[2]]\n });\n }\n }\n });\n self.blueRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-blue'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [self.value.rgb[0], self.value.rgb[1], value]\n });\n }\n }\n });\n function handleInputChange(e) {\n const rgb = [...self.value.rgb];\n const index = parseInt($(e.target).attr('data-color-index'), 10);\n let value = parseInt(e.target.value, 10);\n if (Number.isNaN(value)) {\n e.target.value = rgb[index];\n return;\n }\n value = Math.max(0, Math.min(255, value));\n rgb[index] = value;\n self.setValue({\n rgb\n });\n }\n self.$el.on('change', '.color-picker-module-rgb-sliders input', handleInputChange);\n self.destroyRgbSlidersEvents = function destroyRgbSlidersEvents() {\n self.$el.off('change', '.color-picker-module-rgb-sliders input', handleInputChange);\n };\n },\n update(self) {\n const {\n app,\n value,\n redRangeSlider,\n greenRangeSlider,\n blueRangeSlider\n } = self;\n const {\n sliderValue,\n sliderValueEditable\n } = self.params;\n const {\n rgb\n } = value;\n redRangeSlider.value = rgb[0];\n greenRangeSlider.value = rgb[1];\n blueRangeSlider.value = rgb[2];\n redRangeSlider.layout();\n greenRangeSlider.layout();\n blueRangeSlider.layout();\n redRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`);\n greenRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`);\n blueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`);\n const direction = app.rtl ? 'to left' : 'to right';\n redRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${direction}, rgb(0, ${rgb[1]}, ${rgb[2]}), rgb(255, ${rgb[1]}, ${rgb[2]}))`);\n greenRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${direction}, rgb(${rgb[0]}, 0, ${rgb[2]}), rgb(${rgb[0]}, 255, ${rgb[2]}))`);\n blueRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${direction}, rgb(${rgb[0]}, ${rgb[1]}, 0), rgb(${rgb[0]}, ${rgb[1]}, 255))`);\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-red').val(rgb[0]);\n self.$el.find('input.color-picker-value-green').val(rgb[1]);\n self.$el.find('input.color-picker-value-blue').val(rgb[2]);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-red').text(rgb[0]);\n self.$el.find('span.color-picker-value-green').text(rgb[1]);\n self.$el.find('span.color-picker-value-blue').text(rgb[2]);\n }\n },\n destroy(self) {\n if (self.redRangeSlider && self.redRangeSlider.destroy) {\n self.redRangeSlider.destroy();\n }\n if (self.greenRangeSlider && self.greenRangeSlider.destroy) {\n self.greenRangeSlider.destroy();\n }\n if (self.blueRangeSlider && self.blueRangeSlider.destroy) {\n self.blueRangeSlider.destroy();\n }\n delete self.redRangeSlider;\n delete self.greenRangeSlider;\n delete self.blueRangeSlider;\n if (self.destroyRgbSlidersEvents) self.destroyRgbSlidersEvents();\n delete self.destroyRgbSlidersEvents;\n }\n};","import $ from '../../../shared/dom7.js';\nimport { getSupport } from '../../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render() {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-sb-spectrum\"\n }, $jsx(\"div\", {\n class: \"color-picker-sb-spectrum\",\n style: \"background-color: hsl(0, 100%, 50%)\"\n }, $jsx(\"div\", {\n class: \"color-picker-sb-spectrum-handle\"\n })));\n },\n init(self) {\n const {\n app\n } = self;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n let specterRect;\n let specterIsTouched;\n let specterHandleIsTouched;\n const {\n $el\n } = self;\n function setSBFromSpecterCoords(x, y) {\n let s = (x - specterRect.left) / specterRect.width;\n let b = (y - specterRect.top) / specterRect.height;\n s = Math.max(0, Math.min(1, s));\n b = 1 - Math.max(0, Math.min(1, b));\n self.setValue({\n hsb: [self.value.hue, s, b]\n });\n }\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n const $targetEl = $(e.target);\n specterHandleIsTouched = $targetEl.closest('.color-picker-sb-spectrum-handle').length > 0;\n if (!specterHandleIsTouched) {\n specterIsTouched = $targetEl.closest('.color-picker-sb-spectrum').length > 0;\n }\n if (specterIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n setSBFromSpecterCoords(touchStartX, touchStartY);\n }\n if (specterHandleIsTouched || specterIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').addClass('color-picker-sb-spectrum-handle-pressed');\n }\n }\n function handleTouchMove(e) {\n if (!(specterIsTouched || specterHandleIsTouched)) return;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n if (!isMoved) {\n // First move\n isMoved = true;\n if (specterHandleIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n }\n }\n if (specterIsTouched || specterHandleIsTouched) {\n setSBFromSpecterCoords(touchCurrentX, touchCurrentY);\n }\n }\n function handleTouchEnd() {\n isMoved = false;\n if (specterIsTouched || specterHandleIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').removeClass('color-picker-sb-spectrum-handle-pressed');\n }\n specterIsTouched = false;\n specterHandleIsTouched = false;\n }\n function handleResize() {\n self.modules['sb-spectrum'].update(self);\n }\n const passiveListener = app.touchEvents.start === 'touchstart' && getSupport().passiveListener ? {\n passive: true,\n capture: false\n } : false;\n self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n self.destroySpectrumEvents = function destroySpectrumEvents() {\n self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n };\n },\n update(self) {\n const {\n value\n } = self;\n const {\n hsl,\n hsb\n } = value;\n const specterWidth = self.$el.find('.color-picker-sb-spectrum')[0].offsetWidth;\n const specterHeight = self.$el.find('.color-picker-sb-spectrum')[0].offsetHeight;\n self.$el.find('.color-picker-sb-spectrum').css('background-color', `hsl(${hsl[0]}, 100%, 50%)`);\n self.$el.find('.color-picker-sb-spectrum-handle').css('background-color', `hsl(${hsl[0]}, ${hsl[1] * 100}%, ${hsl[2] * 100}%)`).transform(`translate(${specterWidth * hsb[1]}px, ${specterHeight * (1 - hsb[2])}px)`);\n },\n destroy(self) {\n if (self.destroySpectrumEvents) self.destroySpectrumEvents();\n delete self.destroySpectrumEvents;\n }\n};","import $ from '../../../shared/dom7.js';\nimport { colorHsbToHsl } from '../../../shared/utils.js';\nimport { getSupport } from '../../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render() {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-hs-spectrum\"\n }, $jsx(\"div\", {\n class: \"color-picker-hs-spectrum\"\n }, $jsx(\"div\", {\n class: \"color-picker-hs-spectrum-handle\"\n })));\n },\n init(self) {\n const {\n app\n } = self;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n let specterRect;\n let specterIsTouched;\n let specterHandleIsTouched;\n const {\n $el\n } = self;\n function setHSFromSpecterCoords(x, y) {\n let h = (x - specterRect.left) / specterRect.width * 360;\n let s = (y - specterRect.top) / specterRect.height;\n h = Math.max(0, Math.min(360, h));\n s = 1 - Math.max(0, Math.min(1, s));\n self.setValue({\n hsb: [h, s, self.value.hsb[2]]\n });\n }\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n const $targetEl = $(e.target);\n specterHandleIsTouched = $targetEl.closest('.color-picker-hs-spectrum-handle').length > 0;\n if (!specterHandleIsTouched) {\n specterIsTouched = $targetEl.closest('.color-picker-hs-spectrum').length > 0;\n }\n if (specterIsTouched) {\n specterRect = $el.find('.color-picker-hs-spectrum')[0].getBoundingClientRect();\n setHSFromSpecterCoords(touchStartX, touchStartY);\n }\n if (specterHandleIsTouched || specterIsTouched) {\n $el.find('.color-picker-hs-spectrum-handle').addClass('color-picker-hs-spectrum-handle-pressed');\n }\n }\n function handleTouchMove(e) {\n if (!(specterIsTouched || specterHandleIsTouched)) return;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n if (!isMoved) {\n // First move\n isMoved = true;\n if (specterHandleIsTouched) {\n specterRect = $el.find('.color-picker-hs-spectrum')[0].getBoundingClientRect();\n }\n }\n if (specterIsTouched || specterHandleIsTouched) {\n setHSFromSpecterCoords(touchCurrentX, touchCurrentY);\n }\n }\n function handleTouchEnd() {\n isMoved = false;\n if (specterIsTouched || specterHandleIsTouched) {\n $el.find('.color-picker-hs-spectrum-handle').removeClass('color-picker-hs-spectrum-handle-pressed');\n }\n specterIsTouched = false;\n specterHandleIsTouched = false;\n }\n function handleResize() {\n self.modules['hs-spectrum'].update(self);\n }\n const passiveListener = app.touchEvents.start === 'touchstart' && getSupport().passiveListener ? {\n passive: true,\n capture: false\n } : false;\n self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n self.destroySpectrumEvents = function destroySpectrumEvents() {\n self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n };\n },\n update(self) {\n const {\n value\n } = self;\n const {\n hsb\n } = value;\n const specterWidth = self.$el.find('.color-picker-hs-spectrum')[0].offsetWidth;\n const specterHeight = self.$el.find('.color-picker-hs-spectrum')[0].offsetHeight;\n const hslBright = colorHsbToHsl(hsb[0], hsb[1], 1);\n self.$el.find('.color-picker-hs-spectrum-handle').css('background-color', `hsl(${hslBright[0]}, ${hslBright[1] * 100}%, ${hslBright[2] * 100}%)`).transform(`translate(${specterWidth * (hsb[0] / 360)}px, ${specterHeight * (1 - hsb[1])}px)`);\n },\n destroy(self) {\n if (self.destroySpectrumEvents) self.destroySpectrumEvents();\n delete self.destroySpectrumEvents;\n }\n};","import $ from '../../../shared/dom7.js';\nimport { getSupport } from '../../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nfunction svgWheelCircles() {\n const total = 256;\n let circles = '';\n for (let i = total; i > 0; i -= 1) {\n const angle = i * Math.PI / (total / 2);\n const hue = 360 / total * i;\n circles += ``;\n }\n return circles;\n}\nexport default {\n render() {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-wheel\"\n }, $jsx(\"div\", {\n class: \"color-picker-wheel\"\n }, $jsx(\"svg\", {\n viewBox: \"0 0 300 300\",\n width: \"300\",\n height: \"300\"\n }, svgWheelCircles()), $jsx(\"div\", {\n class: \"color-picker-wheel-handle\"\n }), $jsx(\"div\", {\n class: \"color-picker-sb-spectrum\",\n style: \"background-color: hsl(0, 100%, 50%)\"\n }, $jsx(\"div\", {\n class: \"color-picker-sb-spectrum-handle\"\n }))));\n },\n init(self) {\n const {\n app\n } = self;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n let wheelRect;\n let wheelIsTouched;\n let wheelHandleIsTouched;\n let specterRect;\n let specterIsTouched;\n let specterHandleIsTouched;\n const {\n $el\n } = self;\n function setHueFromWheelCoords(x, y) {\n const wheelCenterX = wheelRect.left + wheelRect.width / 2;\n const wheelCenterY = wheelRect.top + wheelRect.height / 2;\n const angleRad = Math.atan2(y - wheelCenterY, x - wheelCenterX);\n let angleDeg = angleRad * 180 / Math.PI + 90;\n if (angleDeg < 0) angleDeg += 360;\n angleDeg = 360 - angleDeg;\n self.setValue({\n hue: angleDeg\n });\n }\n function setSBFromSpecterCoords(x, y) {\n let s = (x - specterRect.left) / specterRect.width;\n let b = (y - specterRect.top) / specterRect.height;\n s = Math.max(0, Math.min(1, s));\n b = 1 - Math.max(0, Math.min(1, b));\n self.setValue({\n hsb: [self.value.hue, s, b]\n });\n }\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n const $targetEl = $(e.target);\n wheelHandleIsTouched = $targetEl.closest('.color-picker-wheel-handle').length > 0;\n wheelIsTouched = $targetEl.closest('circle').length > 0;\n specterHandleIsTouched = $targetEl.closest('.color-picker-sb-spectrum-handle').length > 0;\n if (!specterHandleIsTouched) {\n specterIsTouched = $targetEl.closest('.color-picker-sb-spectrum').length > 0;\n }\n if (wheelIsTouched) {\n wheelRect = $el.find('.color-picker-wheel')[0].getBoundingClientRect();\n setHueFromWheelCoords(touchStartX, touchStartY);\n }\n if (specterIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n setSBFromSpecterCoords(touchStartX, touchStartY);\n }\n if (specterHandleIsTouched || specterIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').addClass('color-picker-sb-spectrum-handle-pressed');\n }\n }\n function handleTouchMove(e) {\n if (!(wheelIsTouched || wheelHandleIsTouched) && !(specterIsTouched || specterHandleIsTouched)) return;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n if (!isMoved) {\n // First move\n isMoved = true;\n if (wheelHandleIsTouched) {\n wheelRect = $el.find('.color-picker-wheel')[0].getBoundingClientRect();\n }\n if (specterHandleIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n }\n }\n if (wheelIsTouched || wheelHandleIsTouched) {\n setHueFromWheelCoords(touchCurrentX, touchCurrentY);\n }\n if (specterIsTouched || specterHandleIsTouched) {\n setSBFromSpecterCoords(touchCurrentX, touchCurrentY);\n }\n }\n function handleTouchEnd() {\n isMoved = false;\n if (specterIsTouched || specterHandleIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').removeClass('color-picker-sb-spectrum-handle-pressed');\n }\n wheelIsTouched = false;\n wheelHandleIsTouched = false;\n specterIsTouched = false;\n specterHandleIsTouched = false;\n }\n function handleResize() {\n self.modules.wheel.update(self);\n }\n const passiveListener = app.touchEvents.start === 'touchstart' && getSupport().passiveListener ? {\n passive: true,\n capture: false\n } : false;\n self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n self.destroyWheelEvents = function destroyWheelEvents() {\n self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n };\n },\n update(self) {\n const {\n value\n } = self;\n const {\n hsl,\n hsb\n } = value;\n const specterWidth = self.$el.find('.color-picker-sb-spectrum')[0].offsetWidth;\n const specterHeight = self.$el.find('.color-picker-sb-spectrum')[0].offsetHeight;\n const wheelSize = self.$el.find('.color-picker-wheel')[0].offsetWidth;\n const wheelHalfSize = wheelSize / 2;\n const angleRad = value.hue * Math.PI / 180;\n const handleSize = wheelSize / 6;\n const handleHalfSize = handleSize / 2;\n const tX = wheelHalfSize - Math.sin(angleRad) * (wheelHalfSize - handleHalfSize) - handleHalfSize;\n const tY = wheelHalfSize - Math.cos(angleRad) * (wheelHalfSize - handleHalfSize) - handleHalfSize;\n self.$el.find('.color-picker-wheel-handle').css('background-color', `hsl(${hsl[0]}, 100%, 50%)`).transform(`translate(${tX}px, ${tY}px)`);\n self.$el.find('.color-picker-sb-spectrum').css('background-color', `hsl(${hsl[0]}, 100%, 50%)`);\n self.$el.find('.color-picker-sb-spectrum-handle').css('background-color', `hsl(${hsl[0]}, ${hsl[1] * 100}%, ${hsl[2] * 100}%)`).transform(`translate(${specterWidth * hsb[1]}px, ${specterHeight * (1 - hsb[2])}px)`);\n },\n destroy(self) {\n if (self.destroyWheelEvents) self.destroyWheelEvents();\n delete self.destroyWheelEvents;\n }\n};","import { extend, colorRgbToHex, colorRgbToHsl, colorHslToHsb, colorHslToRgb, colorHsbToHsl, colorHexToRgb, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport $ from '../../shared/dom7.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport moduleAlphaSlider from './modules/alpha-slider.js';\nimport moduleCurrentColor from './modules/current-color.js';\nimport moduleHex from './modules/hex.js';\nimport moduleHsbSliders from './modules/hsb-sliders.js';\nimport moduleHueSlider from './modules/hue-slider.js';\nimport moduleBrightnessSlider from './modules/brightness-slider.js';\nimport modulePalette from './modules/palette.js';\nimport moduleInitialCurrentColors from './modules/initial-current-colors.js';\nimport moduleRgbBars from './modules/rgb-bars.js';\nimport moduleRgbSliders from './modules/rgb-sliders.js';\nimport moduleSbSpectrum from './modules/sb-spectrum.js';\nimport moduleHsSpectrum from './modules/hs-spectrum.js';\nimport moduleWheel from './modules/wheel.js';\n\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass ColorPicker extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const self = this;\n self.params = extend({}, app.params.colorPicker, params);\n let $containerEl;\n if (self.params.containerEl) {\n $containerEl = $(self.params.containerEl);\n if ($containerEl.length === 0) return self;\n }\n let $inputEl;\n if (self.params.inputEl) {\n $inputEl = $(self.params.inputEl);\n }\n let $targetEl;\n if (self.params.targetEl) {\n $targetEl = $(self.params.targetEl);\n }\n extend(self, {\n app,\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n $targetEl,\n targetEl: $targetEl && $targetEl[0],\n initialized: false,\n opened: false,\n url: self.params.url,\n modules: {\n 'alpha-slider': moduleAlphaSlider,\n 'current-color': moduleCurrentColor,\n hex: moduleHex,\n // eslint-disable-line\n 'hsb-sliders': moduleHsbSliders,\n 'hue-slider': moduleHueSlider,\n 'brightness-slider': moduleBrightnessSlider,\n palette: modulePalette,\n // eslint-disable-line\n 'initial-current-colors': moduleInitialCurrentColors,\n 'rgb-bars': moduleRgbBars,\n 'rgb-sliders': moduleRgbSliders,\n 'sb-spectrum': moduleSbSpectrum,\n 'hs-spectrum': moduleHsSpectrum,\n wheel: moduleWheel // eslint-disable-line\n }\n });\n\n function onInputClick() {\n self.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n function onTargetClick() {\n self.open();\n }\n function onHtmlClick(e) {\n if (self.destroyed || !self.params) return;\n if (self.params.openIn === 'page') return;\n const $clickTargetEl = $(e.target);\n if (!self.opened || self.closing) return;\n if ($clickTargetEl.closest('[class*=\"backdrop\"]').length) return;\n if ($clickTargetEl.closest('.color-picker-popup, .color-picker-popover').length) return;\n if ($inputEl && $inputEl.length > 0) {\n if ($clickTargetEl[0] !== $inputEl[0] && $clickTargetEl.closest('.sheet-modal').length === 0) {\n self.close();\n }\n } else if ($(e.target).closest('.sheet-modal').length === 0) {\n self.close();\n }\n }\n\n // Events\n extend(self, {\n attachInputEvents() {\n self.$inputEl.on('click', onInputClick);\n if (self.params.inputReadOnly) {\n self.$inputEl.on('focus mousedown', onInputFocus);\n if (self.$inputEl[0]) {\n self.$inputEl[0].f7ValidateReadonly = true;\n }\n }\n },\n detachInputEvents() {\n self.$inputEl.off('click', onInputClick);\n if (self.params.inputReadOnly) {\n self.$inputEl.off('focus mousedown', onInputFocus);\n if (self.$inputEl[0]) {\n delete self.$inputEl[0].f7ValidateReadonly;\n }\n }\n },\n attachTargetEvents() {\n self.$targetEl.on('click', onTargetClick);\n },\n detachTargetEvents() {\n self.$targetEl.off('click', onTargetClick);\n },\n attachHtmlEvents() {\n app.on('click', onHtmlClick);\n },\n detachHtmlEvents() {\n app.off('click', onHtmlClick);\n }\n });\n self.init();\n return self;\n }\n get view() {\n const {\n $inputEl,\n $targetEl,\n app,\n params\n } = this;\n let view;\n if (params.view) {\n view = params.view;\n } else {\n if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view && $targetEl) {\n view = $targetEl.parents('.view').length && $targetEl.parents('.view')[0].f7View;\n }\n }\n if (!view) view = app.views.main;\n return view;\n }\n attachEvents() {\n const self = this;\n self.centerModules = self.centerModules.bind(self);\n if (self.params.centerModules) {\n self.app.on('resize', self.centerModules);\n }\n }\n detachEvents() {\n const self = this;\n if (self.params.centerModules) {\n self.app.off('resize', self.centerModules);\n }\n }\n centerModules() {\n const self = this;\n if (!self.opened || !self.$el || self.inline) return;\n const $pageContentEl = self.$el.find('.page-content');\n if (!$pageContentEl.length) return;\n const {\n scrollHeight,\n offsetHeight\n } = $pageContentEl[0];\n if (scrollHeight <= offsetHeight) {\n $pageContentEl.addClass('justify-content-center');\n } else {\n $pageContentEl.removeClass('justify-content-center');\n }\n }\n initInput() {\n const self = this;\n if (!self.$inputEl) return;\n if (self.params.inputReadOnly) self.$inputEl.prop('readOnly', true);\n }\n getModalType() {\n const self = this;\n const {\n app,\n modal,\n params\n } = self;\n const {\n openIn,\n openInPhone\n } = params;\n const device = getDevice();\n if (modal && modal.type) return modal.type;\n if (openIn !== 'auto') return openIn;\n if (self.inline) return null;\n if (device.ios) {\n return device.ipad ? 'popover' : openInPhone;\n }\n if (app.width >= 768) {\n return 'popover';\n }\n return openInPhone;\n }\n formatValue() {\n const self = this;\n const {\n value\n } = self;\n if (self.params.formatValue) {\n return self.params.formatValue.call(self, value);\n }\n return value.hex;\n }\n\n // eslint-disable-next-line\n normalizeHsValues(arr) {\n return [Math.floor(arr[0] * 10) / 10, Math.floor(arr[1] * 1000) / 1000, Math.floor(arr[2] * 1000) / 1000];\n }\n setValue(value, updateModules) {\n if (value === void 0) {\n value = {};\n }\n if (updateModules === void 0) {\n updateModules = true;\n }\n const self = this;\n if (typeof value === 'undefined') return;\n let {\n hex,\n rgb,\n hsl,\n hsb,\n alpha = 1,\n hue,\n rgba,\n hsla\n } = self.value || {};\n const needChangeEvent = self.value || !self.value && !self.params.value;\n let valueChanged;\n Object.keys(value).forEach(k => {\n if (!self.value || typeof self.value[k] === 'undefined') {\n valueChanged = true;\n return;\n }\n const v = value[k];\n if (Array.isArray(v)) {\n v.forEach((subV, subIndex) => {\n if (subV !== self.value[k][subIndex]) {\n valueChanged = true;\n }\n });\n } else if (v !== self.value[k]) {\n valueChanged = true;\n }\n });\n if (!valueChanged) return;\n if (value.rgb || value.rgba) {\n const [r, g, b, a = alpha] = value.rgb || value.rgba;\n rgb = [r, g, b];\n hex = colorRgbToHex(...rgb);\n hsl = colorRgbToHsl(...rgb);\n hsb = colorHslToHsb(...hsl);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n alpha = a;\n rgba = [rgb[0], rgb[1], rgb[2], a];\n hsla = [hsl[0], hsl[1], hsl[2], a];\n }\n if (value.hsl || value.hsla) {\n const [h, s, l, a = alpha] = value.hsl || value.hsla;\n hsl = [h, s, l];\n rgb = colorHslToRgb(...hsl);\n hex = colorRgbToHex(...rgb);\n hsb = colorHslToHsb(...hsl);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n alpha = a;\n rgba = [rgb[0], rgb[1], rgb[2], a];\n hsla = [hsl[0], hsl[1], hsl[2], a];\n }\n if (value.hsb) {\n const [h, s, b, a = alpha] = value.hsb;\n hsb = [h, s, b];\n hsl = colorHsbToHsl(...hsb);\n rgb = colorHslToRgb(...hsl);\n hex = colorRgbToHex(...rgb);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n alpha = a;\n rgba = [rgb[0], rgb[1], rgb[2], a];\n hsla = [hsl[0], hsl[1], hsl[2], a];\n }\n if (value.hex) {\n rgb = colorHexToRgb(value.hex);\n hex = colorRgbToHex(...rgb);\n hsl = colorRgbToHsl(...rgb);\n hsb = colorHslToHsb(...hsl);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n rgba = [rgb[0], rgb[1], rgb[2], alpha];\n hsla = [hsl[0], hsl[1], hsl[2], alpha];\n }\n if (typeof value.alpha !== 'undefined') {\n alpha = value.alpha;\n if (typeof rgb !== 'undefined') {\n rgba = [rgb[0], rgb[1], rgb[2], alpha];\n }\n if (typeof hsl !== 'undefined') {\n hsla = [hsl[0], hsl[1], hsl[2], alpha];\n }\n }\n if (typeof value.hue !== 'undefined') {\n const [h, s, l] = hsl; // eslint-disable-line\n hsl = [value.hue, s, l];\n hsb = colorHslToHsb(...hsl);\n rgb = colorHslToRgb(...hsl);\n hex = colorRgbToHex(...rgb);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n rgba = [rgb[0], rgb[1], rgb[2], alpha];\n hsla = [hsl[0], hsl[1], hsl[2], alpha];\n }\n self.value = {\n hex,\n alpha,\n hue,\n rgb,\n hsl,\n hsb,\n rgba,\n hsla\n };\n if (!self.initialValue) self.initialValue = extend({}, self.value);\n self.updateValue(needChangeEvent);\n if (self.opened && updateModules) {\n self.updateModules();\n }\n }\n getValue() {\n const self = this;\n return self.value;\n }\n updateValue(fireEvents) {\n if (fireEvents === void 0) {\n fireEvents = true;\n }\n const self = this;\n const {\n $inputEl,\n value,\n $targetEl\n } = self;\n if ($targetEl && self.params.targetElSetBackgroundColor) {\n const {\n rgba\n } = value;\n $targetEl.css('background-color', `rgba(${rgba.join(', ')})`);\n }\n if (fireEvents) {\n self.emit('local::change colorPickerChange', self, value);\n }\n if ($inputEl && $inputEl.length) {\n const inputValue = self.formatValue(value);\n if ($inputEl && $inputEl.length) {\n $inputEl.val(inputValue);\n if (fireEvents) {\n $inputEl.trigger('change');\n }\n }\n }\n }\n updateModules() {\n const self = this;\n const {\n modules\n } = self;\n self.params.modules.forEach(m => {\n if (typeof m === 'string' && modules[m] && modules[m].update) {\n modules[m].update(self);\n } else if (m && m.update) {\n m.update(self);\n }\n });\n }\n update() {\n const self = this;\n self.updateModules();\n }\n renderPicker() {\n const self = this;\n const {\n params,\n modules\n } = self;\n let html = '';\n params.modules.forEach(m => {\n if (typeof m === 'string' && modules[m] && modules[m].render) {\n html += modules[m].render(self);\n } else if (m && m.render) {\n html += m.render(self);\n }\n });\n return html;\n }\n renderNavbar() {\n const self = this;\n if (self.params.renderNavbar) {\n return self.params.renderNavbar.call(self, self);\n }\n const {\n openIn,\n navbarTitleText,\n navbarBackLinkText,\n navbarCloseText\n } = self.params;\n return $jsx(\"div\", {\n class: \"navbar\"\n }, $jsx(\"div\", {\n class: \"navbar-bg\"\n }), $jsx(\"div\", {\n class: \"navbar-inner sliding\"\n }, openIn === 'page' && $jsx(\"div\", {\n class: \"left\"\n }, $jsx(\"a\", {\n class: \"link back\"\n }, $jsx(\"i\", {\n class: \"icon icon-back\"\n }), $jsx(\"span\", {\n class: \"if-not-md\"\n }, navbarBackLinkText))), $jsx(\"div\", {\n class: \"title\"\n }, navbarTitleText), openIn !== 'page' && $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link popup-close\",\n \"data-popup\": \".color-picker-popup\"\n }, navbarCloseText))));\n }\n renderToolbar() {\n const self = this;\n if (self.params.renderToolbar) {\n return self.params.renderToolbar.call(self, self);\n }\n return $jsx(\"div\", {\n class: \"toolbar toolbar-top\"\n }, $jsx(\"div\", {\n class: \"toolbar-inner\"\n }, $jsx(\"div\", {\n class: \"left\"\n }), $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link sheet-close popover-close\",\n \"data-sheet\": \".color-picker-sheet-modal\",\n \"data-popover\": \".color-picker-popover\"\n }, self.params.toolbarCloseText))));\n }\n renderInline() {\n const self = this;\n const {\n cssClass,\n groupedModules\n } = self.params;\n return $jsx(\"div\", {\n class: `color-picker color-picker-inline ${groupedModules ? 'color-picker-grouped-modules' : ''} ${cssClass || ''}`\n }, self.renderPicker());\n }\n renderSheet() {\n const self = this;\n const {\n cssClass,\n toolbarSheet,\n groupedModules\n } = self.params;\n return $jsx(\"div\", {\n class: `sheet-modal color-picker color-picker-sheet-modal ${groupedModules ? 'color-picker-grouped-modules' : ''} ${cssClass || ''}`\n }, toolbarSheet && self.renderToolbar(), $jsx(\"div\", {\n class: \"sheet-modal-inner\"\n }, $jsx(\"div\", {\n class: \"page-content\"\n }, self.renderPicker())));\n }\n renderPopover() {\n const self = this;\n const {\n cssClass,\n toolbarPopover,\n groupedModules\n } = self.params;\n return $jsx(\"div\", {\n class: `popover color-picker-popover ${cssClass || ''}`\n }, $jsx(\"div\", {\n class: \"popover-inner\"\n }, $jsx(\"div\", {\n class: `color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}`\n }, toolbarPopover && self.renderToolbar(), $jsx(\"div\", {\n class: \"page-content\"\n }, self.renderPicker()))));\n }\n renderPopup() {\n const self = this;\n const {\n cssClass,\n navbarPopup,\n groupedModules\n } = self.params;\n return $jsx(\"div\", {\n class: `popup color-picker-popup ${cssClass || ''}`\n }, $jsx(\"div\", {\n class: \"page\"\n }, navbarPopup && self.renderNavbar(), $jsx(\"div\", {\n class: `color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}`\n }, $jsx(\"div\", {\n class: \"page-content\"\n }, self.renderPicker()))));\n }\n renderPage() {\n const self = this;\n const {\n cssClass,\n groupedModules\n } = self.params;\n return $jsx(\"div\", {\n class: `page color-picker-page ${cssClass || ''}`,\n \"data-name\": \"color-picker-page\"\n }, self.renderNavbar(), $jsx(\"div\", {\n class: `color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}`\n }, $jsx(\"div\", {\n class: \"page-content\"\n }, self.renderPicker())));\n }\n\n // eslint-disable-next-line\n render() {\n const self = this;\n const {\n params\n } = self;\n if (params.render) return params.render.call(self);\n if (self.inline) return self.renderInline();\n if (params.openIn === 'page') {\n return self.renderPage();\n }\n const modalType = self.getModalType();\n if (modalType === 'popover') return self.renderPopover();\n if (modalType === 'sheet') return self.renderSheet();\n if (modalType === 'popup') return self.renderPopup();\n }\n onOpen() {\n const self = this;\n const {\n initialized,\n $el,\n app,\n $inputEl,\n inline,\n value,\n params,\n modules\n } = self;\n self.closing = false;\n self.opened = true;\n self.opening = true;\n\n // Init main events\n self.attachEvents();\n params.modules.forEach(m => {\n if (typeof m === 'string' && modules[m] && modules[m].init) {\n modules[m].init(self);\n } else if (m && m.init) {\n m.init(self);\n }\n });\n const updateValue = !value && params.value;\n\n // Set value\n if (!initialized) {\n if (value) self.setValue(value);else if (params.value) {\n self.setValue(params.value, false);\n } else if (!params.value) {\n self.setValue({\n hex: '#ff0000'\n }, false);\n }\n } else if (value) {\n self.initialValue = extend({}, value);\n self.setValue(value, false);\n }\n\n // Update input value\n if (updateValue) self.updateValue();\n self.updateModules();\n\n // Center modules\n if (params.centerModules) {\n self.centerModules();\n }\n\n // Extra focus\n if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n self.initialized = true;\n\n // Trigger events\n if ($el) {\n $el.trigger('colorpicker:open');\n }\n if ($inputEl) {\n $inputEl.trigger('colorpicker:open');\n }\n self.emit('local::open colorPickerOpen', self);\n }\n onOpened() {\n const self = this;\n self.opening = false;\n if (self.$el) {\n self.$el.trigger('colorpicker:opened');\n }\n if (self.$inputEl) {\n self.$inputEl.trigger('colorpicker:opened');\n }\n self.emit('local::opened colorPickerOpened', self);\n }\n onClose() {\n const self = this;\n const {\n app,\n params,\n modules\n } = self;\n self.opening = false;\n self.closing = true;\n\n // Detach events\n self.detachEvents();\n if (self.$inputEl) {\n if (app.theme === 'md') {\n self.$inputEl.trigger('blur');\n } else {\n const validate = self.$inputEl.attr('validate');\n const required = self.$inputEl.attr('required');\n if (validate && required) {\n app.input.validate(self.$inputEl);\n }\n }\n }\n params.modules.forEach(m => {\n if (typeof m === 'string' && modules[m] && modules[m].destroy) {\n modules[m].destroy(self);\n } else if (m && m.destroy) {\n m.destroy(self);\n }\n });\n if (self.$el) {\n self.$el.trigger('colorpicker:close');\n }\n if (self.$inputEl) {\n self.$inputEl.trigger('colorpicker:close');\n }\n self.emit('local::close colorPickerClose', self);\n }\n onClosed() {\n const self = this;\n self.opened = false;\n self.closing = false;\n if (!self.inline) {\n nextTick(() => {\n if (self.modal && self.modal.el && self.modal.destroy) {\n if (!self.params.routableModals) {\n self.modal.destroy();\n }\n }\n delete self.modal;\n });\n }\n if (self.$el) {\n self.$el.trigger('colorpicker:closed');\n }\n if (self.$inputEl) {\n self.$inputEl.trigger('colorpicker:closed');\n }\n self.emit('local::closed colorPickerClosed', self);\n }\n open() {\n const self = this;\n const {\n app,\n opened,\n inline,\n $inputEl,\n $targetEl,\n params\n } = self;\n if (opened) return;\n if (inline) {\n self.$el = $(self.render());\n self.$el[0].f7ColorPicker = self;\n self.$containerEl.append(self.$el);\n self.onOpen();\n self.onOpened();\n return;\n }\n const colorPickerContent = self.render();\n if (params.openIn === 'page') {\n self.view.router.navigate({\n url: self.url,\n route: {\n content: colorPickerContent,\n path: self.url,\n on: {\n pageBeforeIn(e, page) {\n self.$el = page.$el.find('.color-picker');\n self.$el[0].f7ColorPicker = self;\n self.onOpen();\n },\n pageAfterIn() {\n self.onOpened();\n },\n pageBeforeOut() {\n self.onClose();\n },\n pageAfterOut() {\n self.onClosed();\n if (self.$el && self.$el[0]) {\n self.$el[0].f7ColorPicker = null;\n delete self.$el[0].f7ColorPicker;\n }\n }\n }\n }\n });\n } else {\n const modalType = self.getModalType();\n let backdrop = params.backdrop;\n if (backdrop === null || typeof backdrop === 'undefined') {\n if (modalType === 'popover' && app.params.popover.backdrop !== false) backdrop = true;\n if (modalType === 'popup') backdrop = true;\n }\n const modalParams = {\n targetEl: $targetEl || $inputEl,\n scrollToEl: params.scrollToInput ? $targetEl || $inputEl : undefined,\n content: colorPickerContent,\n backdrop,\n closeByBackdropClick: params.closeByBackdropClick,\n on: {\n open() {\n const modal = this;\n self.modal = modal;\n self.$el = modalType === 'popover' || modalType === 'popup' ? modal.$el.find('.color-picker') : modal.$el;\n self.$el[0].f7ColorPicker = self;\n self.onOpen();\n },\n opened() {\n self.onOpened();\n },\n close() {\n self.onClose();\n },\n closed() {\n self.onClosed();\n if (self.$el && self.$el[0]) {\n self.$el[0].f7ColorPicker = null;\n delete self.$el[0].f7ColorPicker;\n }\n }\n }\n };\n if (modalType === 'popup') {\n modalParams.push = params.popupPush;\n modalParams.swipeToClose = params.popupSwipeToClose;\n }\n if (modalType === 'sheet') {\n modalParams.push = params.sheetPush;\n modalParams.swipeToClose = params.sheetSwipeToClose;\n }\n if (params.routableModals && self.view) {\n self.view.router.navigate({\n url: self.url,\n route: {\n path: self.url,\n [modalType]: modalParams\n }\n });\n } else {\n self.modal = app[modalType].create(modalParams);\n self.modal.open();\n }\n }\n }\n close() {\n const self = this;\n const {\n opened,\n inline\n } = self;\n if (!opened) return;\n if (inline) {\n self.onClose();\n self.onClosed();\n return;\n }\n if (self.params.routableModals && self.view || self.params.openIn === 'page') {\n self.view.router.back();\n } else {\n self.modal.close();\n }\n }\n init() {\n const self = this;\n self.initInput();\n if (self.inline) {\n self.open();\n self.emit('local::init colorPickerInit', self);\n return;\n }\n if (!self.initialized && self.params.value) {\n self.setValue(self.params.value);\n }\n\n // Attach input Events\n if (self.$inputEl) {\n self.attachInputEvents();\n }\n if (self.$targetEl) {\n self.attachTargetEvents();\n }\n if (self.params.closeByOutsideClick) {\n self.attachHtmlEvents();\n }\n self.emit('local::init colorPickerInit', self);\n }\n destroy() {\n const self = this;\n if (self.destroyed) return;\n const {\n $el\n } = self;\n self.emit('local::beforeDestroy colorPickerBeforeDestroy', self);\n if ($el) $el.trigger('colorpicker:beforedestroy');\n self.close();\n\n // Detach Events\n self.detachEvents();\n if (self.$inputEl) {\n self.detachInputEvents();\n }\n if (self.$targetEl) {\n self.detachTargetEvents();\n }\n if (self.params.closeByOutsideClick) {\n self.detachHtmlEvents();\n }\n if ($el && $el.length) delete self.$el[0].f7ColorPicker;\n deleteProps(self);\n self.destroyed = true;\n }\n}\nexport default ColorPicker;","import $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport ColorPicker from './color-picker-class.js';\nexport default {\n name: 'colorPicker',\n static: {\n ColorPicker\n },\n create() {\n const app = this;\n app.colorPicker = ConstructorMethods({\n defaultSelector: '.color-picker',\n constructor: ColorPicker,\n app,\n domProp: 'f7ColorPicker'\n });\n app.colorPicker.close = function close(el) {\n if (el === void 0) {\n el = '.color-picker';\n }\n const $el = $(el);\n if ($el.length === 0) return;\n const colorPicker = $el[0].f7ColorPicker;\n if (!colorPicker || colorPicker && !colorPicker.opened) return;\n colorPicker.close();\n };\n },\n params: {\n colorPicker: {\n // Color picker settings\n value: null,\n modules: ['wheel'],\n palette: [['#FFEBEE', '#FFCDD2', '#EF9A9A', '#E57373', '#EF5350', '#F44336', '#E53935', '#D32F2F', '#C62828', '#B71C1C'], ['#F3E5F5', '#E1BEE7', '#CE93D8', '#BA68C8', '#AB47BC', '#9C27B0', '#8E24AA', '#7B1FA2', '#6A1B9A', '#4A148C'], ['#E8EAF6', '#C5CAE9', '#9FA8DA', '#7986CB', '#5C6BC0', '#3F51B5', '#3949AB', '#303F9F', '#283593', '#1A237E'], ['#E1F5FE', '#B3E5FC', '#81D4FA', '#4FC3F7', '#29B6F6', '#03A9F4', '#039BE5', '#0288D1', '#0277BD', '#01579B'], ['#E0F2F1', '#B2DFDB', '#80CBC4', '#4DB6AC', '#26A69A', '#009688', '#00897B', '#00796B', '#00695C', '#004D40'], ['#F1F8E9', '#DCEDC8', '#C5E1A5', '#AED581', '#9CCC65', '#8BC34A', '#7CB342', '#689F38', '#558B2F', '#33691E'], ['#FFFDE7', '#FFF9C4', '#FFF59D', '#FFF176', '#FFEE58', '#FFEB3B', '#FDD835', '#FBC02D', '#F9A825', '#F57F17'], ['#FFF3E0', '#FFE0B2', '#FFCC80', '#FFB74D', '#FFA726', '#FF9800', '#FB8C00', '#F57C00', '#EF6C00', '#E65100']],\n groupedModules: false,\n centerModules: true,\n sliderLabel: false,\n sliderValue: false,\n sliderValueEdiable: false,\n barLabel: false,\n barValue: false,\n barValueEdiable: false,\n hexLabel: false,\n hexValueEditable: false,\n redLabelText: 'R',\n greenLabelText: 'G',\n blueLabelText: 'B',\n hueLabelText: 'H',\n saturationLabelText: 'S',\n brightnessLabelText: 'B',\n hexLabelText: 'HEX',\n alphaLabelText: 'A',\n // Common opener settings\n containerEl: null,\n openIn: 'popover',\n // or 'popover' or 'sheet' or 'popup' or 'page' or 'auto'\n openInPhone: 'popup',\n // or 'popover' or 'sheet' or 'popup' or 'page'\n popupPush: false,\n popupSwipeToClose: undefined,\n sheetPush: false,\n sheetSwipeToClose: undefined,\n formatValue: null,\n targetEl: null,\n targetElSetBackgroundColor: false,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n toolbarSheet: true,\n toolbarPopover: false,\n toolbarCloseText: 'Done',\n navbarPopup: true,\n navbarCloseText: 'Done',\n navbarTitleText: 'Color',\n navbarBackLinkText: 'Back',\n cssClass: null,\n routableModals: false,\n view: null,\n url: 'color/',\n backdrop: null,\n closeByBackdropClick: true,\n // Render functions\n renderToolbar: null,\n renderNavbar: null,\n renderInline: null,\n renderPopover: null,\n renderSheet: null,\n renderPopup: null,\n render: null\n }\n }\n};","import $ from '../../shared/dom7.js';\nimport { bindMethods, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\nconst Treeview = {\n open(itemEl) {\n const app = this;\n const $itemEl = $(itemEl).eq(0);\n if (!$itemEl.length) return;\n $itemEl.addClass('treeview-item-opened');\n $itemEl.trigger('treeview:open');\n app.emit('treeviewOpen', $itemEl[0]);\n function done(cancel) {\n if (cancel) {\n $itemEl.removeClass('treeview-item-opened');\n $itemEl.trigger('treeview:close');\n app.emit('treeviewClose', $itemEl[0]);\n } else {\n $itemEl[0].f7TreeviewChildrenLoaded = true;\n }\n $itemEl.find('.treeview-toggle').removeClass('treeview-toggle-hidden');\n $itemEl.find('.treeview-preloader').remove();\n }\n if ($itemEl.hasClass('treeview-load-children') && !$itemEl[0].f7TreeviewChildrenLoaded) {\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n $itemEl.trigger('treeview:loadchildren', done);\n app.emit('treeviewLoadChildren', $itemEl[0], done);\n $itemEl.find('.treeview-toggle').addClass('treeview-toggle-hidden');\n $itemEl.find('.treeview-item-root').prepend(`
                      ${preloaders[`${app.theme}PreloaderContent`]}
                      `);\n }\n },\n close(itemEl) {\n const app = this;\n const $itemEl = $(itemEl).eq(0);\n if (!$itemEl.length) return;\n $itemEl.removeClass('treeview-item-opened');\n $itemEl.trigger('treeview:close');\n app.emit('treeviewClose', $itemEl[0]);\n },\n toggle(itemEl) {\n const app = this;\n const $itemEl = $(itemEl).eq(0);\n if (!$itemEl.length) return;\n const wasOpened = $itemEl.hasClass('treeview-item-opened');\n app.treeview[wasOpened ? 'close' : 'open']($itemEl);\n }\n};\nexport default {\n name: 'treeview',\n create() {\n const app = this;\n bindMethods(app, {\n treeview: Treeview\n });\n },\n clicks: {\n '.treeview-toggle': function toggle($clickedEl, clickedData, e) {\n const app = this;\n if ($clickedEl.parents('.treeview-item-toggle').length) return;\n const $treeviewItemEl = $clickedEl.parents('.treeview-item').eq(0);\n if (!$treeviewItemEl.length) return;\n e.preventF7Router = true;\n app.treeview.toggle($treeviewItemEl[0]);\n },\n '.treeview-item-toggle': function toggle($clickedEl, clickedData, e) {\n const app = this;\n const $treeviewItemEl = $clickedEl.closest('.treeview-item').eq(0);\n if (!$treeviewItemEl.length) return;\n e.preventF7Router = true;\n app.treeview.toggle($treeviewItemEl[0]);\n }\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\nconst textEditorButtonsMap = {\n // f7-icon, material-icon, command\n bold: ['bold', 'format_bold', 'bold'],\n italic: ['italic', 'format_italic', 'italic'],\n underline: ['underline', 'format_underlined', 'underline'],\n strikeThrough: ['strikethrough', 'strikethrough_s', 'strikeThrough'],\n orderedList: ['list_number', 'format_list_numbered', 'insertOrderedList'],\n unorderedList: ['list_bullet', 'format_list_bulleted', 'insertUnorderedList'],\n link: ['link', 'link', 'createLink'],\n image: ['photo', 'image', 'insertImage'],\n paragraph: ['paragraph', '', 'formatBlock.P'],\n h1: ['H1', 'H1', 'formatBlock.H1'],\n h2: ['H2', 'H2', 'formatBlock.H2'],\n h3: ['H3', 'H3', 'formatBlock.H3'],\n alignLeft: ['text_alignleft', 'format_align_left', 'justifyLeft'],\n alignCenter: ['text_aligncenter', 'format_align_center', 'justifyCenter'],\n alignRight: ['text_alignright', 'format_align_right', 'justifyRight'],\n alignJustify: ['text_justify', 'format_align_justify', 'justifyFull'],\n subscript: ['textformat_subscript', 'A1', 'subscript'],\n superscript: ['textformat_superscript', 'A1', 'superscript'],\n indent: ['increase_indent', 'format_indent_increase', 'indent'],\n outdent: ['decrease_indent', 'format_indent_decrease', 'outdent']\n};\nclass TextEditor extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n const self = this;\n const document = getDocument();\n const device = getDevice();\n const defaults = extend({}, app.params.textEditor);\n\n // Extend defaults with modules params\n self.useModulesParams(defaults);\n self.params = extend(defaults, params);\n const el = self.params.el;\n if (!el) return self;\n const $el = $(el);\n if ($el.length === 0) return self;\n if ($el[0].f7TextEditor) return $el[0].f7TextEditor;\n let $contentEl = $el.children('.text-editor-content');\n if (!$contentEl.length) {\n $el.append('
                      ');\n $contentEl = $el.children('.text-editor-content');\n }\n extend(self, {\n app,\n $el,\n el: $el[0],\n $contentEl,\n contentEl: $contentEl[0]\n });\n if ('value' in params) {\n self.value = self.params.value;\n }\n if (self.params.mode === 'keyboard-toolbar') {\n if (!(device.cordova || device.capacitor) && !device.android) {\n self.params.mode = 'popover';\n }\n }\n if (typeof self.params.buttons === 'string') {\n try {\n self.params.buttons = JSON.parse(self.params.buttons);\n } catch (err) {\n throw new Error('Framework7: TextEditor: wrong \"buttons\" parameter format');\n }\n }\n $el[0].f7TextEditor = self;\n\n // Bind\n self.onButtonClick = self.onButtonClick.bind(self);\n self.onFocus = self.onFocus.bind(self);\n self.onBlur = self.onBlur.bind(self);\n self.onInput = self.onInput.bind(self);\n self.onPaste = self.onPaste.bind(self);\n self.onSelectionChange = self.onSelectionChange.bind(self);\n self.closeKeyboardToolbar = self.closeKeyboardToolbar.bind(self);\n\n // Handle Events\n self.attachEvents = function attachEvents() {\n if (self.params.mode === 'toolbar') {\n self.$el.find('.text-editor-toolbar').on('click', 'button', self.onButtonClick);\n }\n if (self.params.mode === 'keyboard-toolbar') {\n self.$keyboardToolbarEl.on('click', 'button', self.onButtonClick);\n self.$el.parents('.page').on('page:beforeout', self.closeKeyboardToolbar);\n }\n if (self.params.mode === 'popover' && self.popover) {\n self.popover.$el.on('click', 'button', self.onButtonClick);\n }\n self.$contentEl.on('paste', self.onPaste);\n self.$contentEl.on('focus', self.onFocus);\n self.$contentEl.on('blur', self.onBlur);\n self.$contentEl.on('input', self.onInput, true);\n $(document).on('selectionchange', self.onSelectionChange);\n };\n self.detachEvents = function detachEvents() {\n if (self.params.mode === 'toolbar') {\n self.$el.find('.text-editor-toolbar').off('click', 'button', self.onButtonClick);\n }\n if (self.params.mode === 'keyboard-toolbar') {\n self.$keyboardToolbarEl.off('click', 'button', self.onButtonClick);\n self.$el.parents('.page').off('page:beforeout', self.closeKeyboardToolbar);\n }\n if (self.params.mode === 'popover' && self.popover) {\n self.popover.$el.off('click', 'button', self.onButtonClick);\n }\n self.$contentEl.off('paste', self.onPaste);\n self.$contentEl.off('focus', self.onFocus);\n self.$contentEl.off('blur', self.onBlur);\n self.$contentEl.off('input', self.onInput, true);\n $(document).off('selectionchange', self.onSelectionChange);\n };\n\n // Install Modules\n self.useModules();\n\n // Init\n self.init();\n return self;\n }\n setValue(newValue) {\n const self = this;\n const currentValue = self.value;\n if (currentValue === newValue) return self;\n self.value = newValue;\n self.$contentEl.html(newValue);\n self.$el.trigger('texteditor:change', self.value);\n self.emit('local::change textEditorChange', self, self.value);\n return self;\n }\n getValue() {\n const self = this;\n return self.value;\n }\n clearValue() {\n const self = this;\n self.setValue('');\n if (self.params.placeholder && !self.$contentEl.html()) {\n self.insertPlaceholder();\n }\n return self;\n }\n createLink() {\n const self = this;\n const window = getWindow();\n const document = getDocument();\n const currentSelection = window.getSelection();\n const selectedNodes = [];\n let $selectedLinks;\n if (currentSelection && currentSelection.anchorNode && $(currentSelection.anchorNode).parents(self.$el).length) {\n let anchorNode = currentSelection.anchorNode;\n while (anchorNode) {\n selectedNodes.push(anchorNode);\n if (!anchorNode.nextSibling || anchorNode === currentSelection.focusNode) {\n anchorNode = null;\n }\n if (anchorNode) {\n anchorNode = anchorNode.nextSibling;\n }\n }\n const selectedNodesLinks = [];\n const $selectedNodes = $(selectedNodes);\n for (let i = 0; i < $selectedNodes.length; i += 1) {\n const childNodes = $selectedNodes[i].children;\n if (childNodes) {\n for (let j = 0; j < childNodes.length; j += 1) {\n if ($(childNodes[j]).is('a')) {\n selectedNodesLinks.push(childNodes[j]);\n }\n }\n }\n }\n $selectedLinks = $selectedNodes.closest('a').add($(selectedNodesLinks));\n }\n if ($selectedLinks && $selectedLinks.length) {\n $selectedLinks.each(linkNode => {\n const selection = window.getSelection();\n const range = document.createRange();\n range.selectNodeContents(linkNode);\n selection.removeAllRanges();\n selection.addRange(range);\n document.execCommand('unlink', false);\n selection.removeAllRanges();\n });\n return self;\n }\n const currentRange = self.getSelectionRange();\n if (!currentRange) return self;\n const dialog = self.app.dialog.prompt('', self.params.linkUrlText, link => {\n if (link && link.trim().length) {\n self.setSelectionRange(currentRange);\n document.execCommand('createLink', false, link.trim());\n self.$el.trigger('texteditor:insertlink', {\n url: link.trim()\n });\n self.emit('local:insertLink textEditorInsertLink', self, link.trim());\n }\n });\n dialog.$el.find('input').focus();\n return self;\n }\n insertImage() {\n const self = this;\n const document = getDocument();\n const currentRange = self.getSelectionRange();\n if (!currentRange) return self;\n const dialog = self.app.dialog.prompt('', self.params.imageUrlText, imageUrl => {\n if (imageUrl && imageUrl.trim().length) {\n self.setSelectionRange(currentRange);\n document.execCommand('insertImage', false, imageUrl.trim());\n self.$el.trigger('texteditor:insertimage', {\n url: imageUrl.trim()\n });\n self.emit('local:insertImage textEditorInsertImage', self, imageUrl.trim());\n }\n });\n dialog.$el.find('input').focus();\n return self;\n }\n removePlaceholder() {\n const self = this;\n self.$contentEl.find('.text-editor-placeholder').remove();\n }\n insertPlaceholder() {\n const self = this;\n self.$contentEl.append(`
                      ${self.params.placeholder}
                      `);\n }\n onSelectionChange() {\n const self = this;\n const window = getWindow();\n const document = getDocument();\n if (self.params.mode === 'toolbar') return;\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n if (self.params.mode === 'keyboard-toolbar') {\n if (!selectionIsInContent) {\n self.closeKeyboardToolbar();\n } else {\n self.openKeyboardToolbar();\n }\n return;\n }\n if (self.params.mode === 'popover') {\n const selectionIsInPopover = $(selection.anchorNode).parents(self.popover.el).length || selection.anchorNode === self.popover.el;\n if (!selectionIsInContent && !selectionIsInPopover) {\n self.closePopover();\n return;\n }\n if (!selection.isCollapsed && selection.rangeCount) {\n const range = selection.getRangeAt(0);\n const rect = range.getBoundingClientRect();\n const rootEl = self.app.$el[0] || document.body;\n self.openPopover(rect.x + (window.scrollX || 0) - rootEl.offsetLeft, rect.y + (window.scrollY || 0) - rootEl.offsetTop, rect.width, rect.height);\n } else if (selection.isCollapsed) {\n self.closePopover();\n }\n }\n }\n onPaste(e) {\n const self = this;\n const document = getDocument();\n if (self.params.clearFormattingOnPaste && e.clipboardData && e.clipboardData.getData) {\n const text = e.clipboardData.getData('text/plain');\n e.preventDefault();\n document.execCommand('insertText', false, text);\n }\n }\n onInput() {\n const self = this;\n const value = self.$contentEl.html();\n self.value = value;\n self.$el.trigger('texteditor:input');\n self.emit('local:input textEditorInput', self, self.value);\n self.$el.trigger('texteditor:change', self.value);\n self.emit('local::change textEditorChange', self, self.value);\n }\n onFocus() {\n const self = this;\n self.removePlaceholder();\n self.$contentEl.focus();\n self.$el.trigger('texteditor:focus');\n self.emit('local::focus textEditorFocus', self);\n }\n onBlur() {\n const self = this;\n const window = getWindow();\n const document = getDocument();\n if (self.params.placeholder && self.$contentEl.html() === '') {\n self.insertPlaceholder();\n }\n if (self.params.mode === 'popover') {\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n const inPopover = document.activeElement && self.popover && $(document.activeElement).closest(self.popover.$el).length;\n if (!inPopover && !selectionIsInContent) {\n self.closePopover();\n }\n }\n if (self.params.mode === 'keyboard-toolbar') {\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n if (!selectionIsInContent) {\n self.closeKeyboardToolbar();\n }\n }\n self.$el.trigger('texteditor:blur');\n self.emit('local::blur textEditorBlur', self);\n }\n onButtonClick(e) {\n const self = this;\n const window = getWindow();\n const document = getDocument();\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n if (!selectionIsInContent) return;\n const $buttonEl = $(e.target).closest('button');\n if ($buttonEl.parents('form').length) {\n e.preventDefault();\n }\n const button = $buttonEl.attr('data-button');\n const buttonData = self.params.customButtons && self.params.customButtons[button];\n if (!button || !(textEditorButtonsMap[button] || buttonData)) return;\n $buttonEl.trigger('texteditor:buttonclick', button);\n self.emit('local::buttonClick textEditorButtonClick', self, button);\n if (buttonData) {\n if (buttonData.onClick) buttonData.onClick(self, $buttonEl[0]);\n return;\n }\n const command = textEditorButtonsMap[button][2];\n if (command === 'createLink') {\n self.createLink();\n return;\n }\n if (command === 'insertImage') {\n self.insertImage();\n return;\n }\n if (command.indexOf('formatBlock') === 0) {\n const tagName = command.split('.')[1];\n const $anchorNode = $(selection.anchorNode);\n if ($anchorNode.parents(tagName.toLowerCase()).length || $anchorNode.is(tagName)) {\n document.execCommand('formatBlock', false, 'div');\n } else {\n document.execCommand('formatBlock', false, tagName);\n }\n return;\n }\n document.execCommand(command, false);\n }\n\n // eslint-disable-next-line\n getSelectionRange() {\n const window = getWindow();\n const document = getDocument();\n if (window.getSelection) {\n const sel = window.getSelection();\n if (sel.getRangeAt && sel.rangeCount) {\n return sel.getRangeAt(0);\n }\n } else if (document.selection && document.selection.createRange) {\n return document.selection.createRange();\n }\n return null;\n }\n\n // eslint-disable-next-line\n setSelectionRange(range) {\n const window = getWindow();\n const document = getDocument();\n if (range) {\n if (window.getSelection) {\n const sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (document.selection && range.select) {\n range.select();\n }\n }\n }\n renderButtons() {\n const self = this;\n let html = '';\n function renderButton(button) {\n const iconClass = self.app.theme === 'md' ? 'material-icons' : 'f7-icons';\n if (self.params.customButtons && self.params.customButtons[button]) {\n const buttonData = self.params.customButtons[button];\n return ``;\n }\n if (!textEditorButtonsMap[button]) return '';\n const iconContent = textEditorButtonsMap[button][self.app.theme === 'md' ? 1 : 0];\n return ``.trim();\n }\n self.params.buttons.forEach((button, buttonIndex) => {\n if (Array.isArray(button)) {\n button.forEach(b => {\n html += renderButton(b);\n });\n if (buttonIndex < self.params.buttons.length - 1 && self.params.dividers) {\n html += '
                      ';\n }\n } else {\n html += renderButton(button);\n }\n });\n return html;\n }\n createToolbar() {\n const self = this;\n self.$el.prepend(`
                      ${self.renderButtons()}
                      `);\n }\n createKeyboardToolbar() {\n const self = this;\n self.$keyboardToolbarEl = $(`
                      ${self.renderButtons()}
                      `);\n }\n createPopover() {\n const self = this;\n self.popover = self.app.popover.create({\n content: `\n
                      \n
                      ${self.renderButtons()}
                      \n
                      \n `,\n closeByOutsideClick: false,\n backdrop: false\n });\n }\n openKeyboardToolbar() {\n const self = this;\n if (self.$keyboardToolbarEl.parent(self.app.$el).length) return;\n self.$el.trigger('texteditor:keyboardopen');\n self.emit('local::keyboardOpen textEditorKeyboardOpen', self);\n self.app.$el.append(self.$keyboardToolbarEl);\n }\n closeKeyboardToolbar() {\n const self = this;\n self.$keyboardToolbarEl.remove();\n self.$el.trigger('texteditor:keyboardclose');\n self.emit('local::keyboardClose textEditorKeyboardClose', self);\n }\n openPopover(targetX, targetY, targetWidth, targetHeight) {\n const self = this;\n if (!self.popover) return;\n Object.assign(self.popover.params, {\n targetX,\n targetY,\n targetWidth,\n targetHeight\n });\n clearTimeout(self.popoverTimeout);\n self.popoverTimeout = setTimeout(() => {\n if (!self.popover) return;\n if (self.popover.opened) {\n self.popover.resize();\n } else {\n self.$el.trigger('texteditor:popoveropen');\n self.emit('local::popoverOpen textEditorPopoverOpen', self);\n self.popover.open();\n }\n }, 400);\n }\n closePopover() {\n const self = this;\n clearTimeout(self.popoverTimeout);\n if (!self.popover || !self.popover.opened) return;\n self.popoverTimeout = setTimeout(() => {\n if (!self.popover) return;\n self.$el.trigger('texteditor:popoverclose');\n self.emit('local::popoverClose textEditorPopoverClose', self);\n self.popover.close();\n }, 400);\n }\n init() {\n const self = this;\n if (self.value) {\n self.$contentEl.html(self.value);\n } else {\n self.value = self.$contentEl.html();\n }\n if (self.params.placeholder && self.value === '') {\n self.insertPlaceholder();\n }\n if (self.params.mode === 'toolbar') {\n self.createToolbar();\n } else if (self.params.mode === 'popover') {\n self.createPopover();\n } else if (self.params.mode === 'keyboard-toolbar') {\n self.createKeyboardToolbar();\n }\n self.attachEvents();\n self.$el.trigger('texteditor:init');\n self.emit('local::init textEditorInit', self);\n return self;\n }\n destroy() {\n let self = this;\n self.$el.trigger('texteditor:beforedestroy');\n self.emit('local::beforeDestroy textEditorBeforeDestroy', self);\n self.detachEvents();\n if (self.params.mode === 'keyboard-toolbar' && self.$keyboardToolbarEl) {\n self.$keyboardToolbarEl.remove();\n }\n if (self.popover) {\n self.popover.close(false);\n self.popover.destroy();\n }\n delete self.$el[0].f7TextEditor;\n deleteProps(self);\n self = null;\n }\n}\nexport default TextEditor;","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport TextEditor from './text-editor-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'textEditor',\n params: {\n textEditor: {\n el: null,\n mode: 'toolbar',\n // or 'popover'\n value: undefined,\n // will use html content\n customButtons: null,\n buttons: [['bold', 'italic', 'underline', 'strikeThrough'], ['orderedList', 'unorderedList'], ['link', 'image'], ['paragraph', 'h1', 'h2', 'h3'], ['alignLeft', 'alignCenter', 'alignRight', 'alignJustify'], ['subscript', 'superscript'], ['indent', 'outdent']],\n dividers: true,\n imageUrlText: 'Insert image URL',\n linkUrlText: 'Insert link URL',\n placeholder: null,\n clearFormattingOnPaste: true\n }\n },\n create() {\n const app = this;\n app.textEditor = extend(ConstructorMethods({\n defaultSelector: '.text-editor',\n constructor: TextEditor,\n app,\n domProp: 'f7TextEditor'\n }));\n },\n static: {\n TextEditor\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.text-editor-init').each(editorEl => {\n const dataset = $(editorEl).dataset();\n app.textEditor.create(extend({\n el: editorEl\n }, dataset || {}));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.text-editor-init').each(editorEl => {\n if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.text-editor-init').each(editorEl => {\n const dataset = $(editorEl).dataset();\n app.textEditor.create(extend({\n el: editorEl\n }, dataset || {}));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.text-editor-init').each(editorEl => {\n if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n });\n }\n },\n vnode: {\n 'text-editor-init': {\n insert(vnode) {\n const app = this;\n const editorEl = vnode.elm;\n const dataset = $(editorEl).dataset();\n app.textEditor.create(extend({\n el: editorEl\n }, dataset || {}));\n },\n destroy(vnode) {\n const editorEl = vnode.elm;\n if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n }\n }\n }\n};","import { bindMethods } from '../../shared/utils.js';\nconst Breadcrumbs = {};\nexport default {\n name: 'breadrumbs',\n create() {\n const app = this;\n bindMethods(app, {\n breadrumbs: Breadcrumbs\n });\n }\n};","/**\n * Framework7 8.3.2\n * Full featured mobile HTML framework for building iOS & Android apps\n * https://framework7.io/\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 27, 2024\n */\n\nimport $ from './shared/dom7.js';\nimport Framework7 from './components/app/app-class.js';\nimport * as utils from './shared/utils.js';\nimport { getSupport } from './shared/get-support.js';\nimport { getDevice } from './shared/get-device.js';\nimport DeviceModule from './modules/device/device.js';\nimport SupportModule from './modules/support/support.js';\nimport UtilsModule from './modules/utils/utils.js';\nimport ResizeModule from './modules/resize/resize.js';\nimport TouchModule from './modules/touch/touch.js';\nimport ClicksModule from './modules/clicks/clicks.js';\nimport RouterModule from './modules/router/router.js';\nimport HistoryModule from './modules/history/history.js';\nimport ServiceWorkerModule from './modules/service-worker/service-worker.js';\nimport StoreModule, { createStore } from './modules/store/store.js';\nimport Statusbar from './components/statusbar/statusbar.js';\nimport View from './components/view/view.js';\nimport Navbar from './components/navbar/navbar.js';\nimport Toolbar from './components/toolbar/toolbar.js';\nimport Subnavbar from './components/subnavbar/subnavbar.js';\nimport TouchRipple from './components/touch-ripple/touch-ripple.js';\nimport Modal from './components/modal/modal.js';\nimport Dialog from './components/dialog/dialog.js';\nimport Popup from './components/popup/popup.js';\nimport LoginScreen from './components/login-screen/login-screen.js';\nimport Popover from './components/popover/popover.js';\nimport Actions from './components/actions/actions.js';\nimport Sheet from './components/sheet/sheet.js';\nimport Toast from './components/toast/toast.js';\nimport Preloader from './components/preloader/preloader.js';\nimport Progressbar from './components/progressbar/progressbar.js';\nimport Sortable from './components/sortable/sortable.js';\nimport Swipeout from './components/swipeout/swipeout.js';\nimport Accordion from './components/accordion/accordion.js';\nimport ContactsList from './components/contacts-list/contacts-list.js';\nimport VirtualList from './components/virtual-list/virtual-list.js';\nimport ListIndex from './components/list-index/list-index.js';\nimport Timeline from './components/timeline/timeline.js';\nimport Tabs from './components/tabs/tabs.js';\nimport Panel from './components/panel/panel.js';\nimport Card from './components/card/card.js';\nimport Chip from './components/chip/chip.js';\nimport Form from './components/form/form.js';\nimport Input from './components/input/input.js';\nimport Checkbox from './components/checkbox/checkbox.js';\nimport Radio from './components/radio/radio.js';\nimport Toggle from './components/toggle/toggle.js';\nimport Range from './components/range/range.js';\nimport Stepper from './components/stepper/stepper.js';\nimport SmartSelect from './components/smart-select/smart-select.js';\nimport Grid from './components/grid/grid.js';\nimport Calendar from './components/calendar/calendar.js';\nimport Picker from './components/picker/picker.js';\nimport InfiniteScroll from './components/infinite-scroll/infinite-scroll.js';\nimport PullToRefresh from './components/pull-to-refresh/pull-to-refresh.js';\nimport DataTable from './components/data-table/data-table.js';\nimport Fab from './components/fab/fab.js';\nimport Searchbar from './components/searchbar/searchbar.js';\nimport Messages from './components/messages/messages.js';\nimport Messagebar from './components/messagebar/messagebar.js';\nimport Swiper from './components/swiper/swiper.js';\nimport PhotoBrowser from './components/photo-browser/photo-browser.js';\nimport Notification from './components/notification/notification.js';\nimport Autocomplete from './components/autocomplete/autocomplete.js';\nimport Tooltip from './components/tooltip/tooltip.js';\nimport Skeleton from './components/skeleton/skeleton.js';\nimport ColorPicker from './components/color-picker/color-picker.js';\nimport Treeview from './components/treeview/treeview.js';\nimport TextEditor from './components/text-editor/text-editor.js';\nimport Breadcrumbs from './components/breadcrumbs/breadcrumbs.js';\nimport Typography from './components/typography/typography.js';\nFramework7.use([DeviceModule, SupportModule, UtilsModule, ResizeModule, TouchModule, ClicksModule, RouterModule, HistoryModule, ServiceWorkerModule, StoreModule, Statusbar, View, Navbar, Toolbar, Subnavbar, TouchRipple, Modal, Dialog, Popup, LoginScreen, Popover, Actions, Sheet, Toast, Preloader, Progressbar, Sortable, Swipeout, Accordion, ContactsList, VirtualList, ListIndex, Timeline, Tabs, Panel, Card, Chip, Form, Input, Checkbox, Radio, Toggle, Range, Stepper, SmartSelect, Grid, Calendar, Picker, InfiniteScroll, PullToRefresh, DataTable, Fab, Searchbar, Messages, Messagebar, Swiper, PhotoBrowser, Notification, Autocomplete, Tooltip, Skeleton, ColorPicker, Treeview, TextEditor, Breadcrumbs, Typography]);\nexport { $ as Dom7, utils, getDevice, getSupport, createStore };\nexport default Framework7;\n","export default {\n name: 'contactsList'\n};","export default {\n name: 'timeline'\n};","export default {\n name: 'chip'\n};","export default {\n name: 'checkbox'\n};","export default {\n name: 'radio'\n};","export default {\n name: 'grid'\n};","export default {\n name: 'skeleton'\n};","export default {\n name: 'typography'\n};","/**\n * Framework7 8.3.2\n * Full featured mobile HTML framework for building iOS & Android apps\n * https://framework7.io/\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 27, 2024\n */\n\nimport $ from './shared/dom7.js';\nimport Framework7 from './components/app/app-class.js';\nimport * as utils from './shared/utils.js';\nimport { getSupport } from './shared/get-support.js';\nimport { getDevice } from './shared/get-device.js';\nimport DeviceModule from './modules/device/device.js';\nimport SupportModule from './modules/support/support.js';\nimport UtilsModule from './modules/utils/utils.js';\nimport ResizeModule from './modules/resize/resize.js';\nimport TouchModule from './modules/touch/touch.js';\nimport ClicksModule from './modules/clicks/clicks.js';\nimport RouterModule from './modules/router/router.js';\nimport HistoryModule from './modules/history/history.js';\nimport ServiceWorkerModule from './modules/service-worker/service-worker.js';\nimport StoreModule, { createStore } from './modules/store/store.js';\nimport Statusbar from './components/statusbar/statusbar.js';\nimport View from './components/view/view.js';\nimport Navbar from './components/navbar/navbar.js';\nimport Toolbar from './components/toolbar/toolbar.js';\nimport Subnavbar from './components/subnavbar/subnavbar.js';\nimport TouchRipple from './components/touch-ripple/touch-ripple.js';\nimport Modal from './components/modal/modal.js';\nFramework7.use([DeviceModule, SupportModule, UtilsModule, ResizeModule, TouchModule, ClicksModule, RouterModule, HistoryModule, ServiceWorkerModule, StoreModule, Statusbar, View, Navbar, Toolbar, Subnavbar, TouchRipple, Modal]);\nexport { $ as Dom7, utils, getDevice, getSupport, createStore };\nexport default Framework7;\n","export function noUndefinedProps(obj) {\n const o = {};\n Object.keys(obj).forEach(key => {\n if (typeof obj[key] !== 'undefined') o[key] = obj[key];\n });\n return o;\n}\nexport function isStringProp(val) {\n return typeof val === 'string' && val !== '';\n}\nexport function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n}\nexport function now() {\n return Date.now();\n}\nexport function extend() {\n let deep = true;\n let to;\n let from;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[0] === 'boolean') {\n [deep, to] = args;\n args.splice(0, 2);\n from = args;\n } else {\n [to] = args;\n args.splice(0, 1);\n from = args;\n }\n for (let i = 0; i < from.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (!deep) {\n to[nextKey] = nextSource[nextKey];\n } else if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n extend(to[nextKey], nextSource[nextKey]);\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nexport function flattenArray() {\n const arr = [];\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n args.forEach(arg => {\n if (Array.isArray(arg)) arr.push(...flattenArray(...arg));else arr.push(arg);\n });\n return arr;\n}\nexport function classNames() {\n const classes = [];\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n args.forEach(arg => {\n if (typeof arg === 'object' && arg.constructor === Object) {\n Object.keys(arg).forEach(key => {\n if (arg[key]) classes.push(key);\n });\n } else if (arg) classes.push(arg);\n });\n const uniqueClasses = [];\n classes.forEach(c => {\n if (uniqueClasses.indexOf(c) < 0) uniqueClasses.push(c);\n });\n return uniqueClasses.join(' ');\n}\nexport function getSlots(props) {\n if (props === void 0) {\n props = {};\n }\n const slots = {};\n if (!props) return slots;\n const children = props.children;\n if (!children || children.length === 0) {\n return slots;\n }\n function addChildToSlot(name, child) {\n if (!slots[name]) slots[name] = [];\n slots[name].push(child);\n }\n if (Array.isArray(children)) {\n children.forEach(child => {\n if (!child) return;\n const slotName = child.props && child.props.slot || 'default';\n addChildToSlot(slotName, child);\n });\n } else {\n let slotName = 'default';\n if (children.props && children.props.slot) slotName = children.props.slot;\n addChildToSlot(slotName, children);\n }\n return slots;\n}\nexport function emit(props, events) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {\n args[_key4 - 2] = arguments[_key4];\n }\n if (!events || !events.trim().length || typeof events !== 'string') return;\n events.trim().split(' ').forEach(event => {\n let eventName = (event || '').trim();\n if (!eventName) return;\n eventName = eventName.charAt(0).toUpperCase() + eventName.slice(1);\n const propName = `on${eventName}`;\n if (props[propName]) props[propName](...args);\n });\n}\nexport function getExtraAttrs(props) {\n if (props === void 0) {\n props = {};\n }\n const extraAttrs = {};\n Object.keys(props).forEach(key => {\n if (key.indexOf('data-') === 0 || key.indexOf('aria-') === 0 || key === 'role') {\n extraAttrs[key] = props[key];\n }\n });\n return extraAttrs;\n}\nlet routerIdCounter = 0;\nlet routerComponentIdCounter = 0;\nexport function unsetRouterIds() {\n routerIdCounter = 0;\n routerComponentIdCounter = 0;\n}\nexport function getRouterId() {\n routerIdCounter += 1;\n return `${now()}_${routerIdCounter}`;\n}\nexport function getComponentId() {\n routerComponentIdCounter += 1;\n return `${now()}_${routerComponentIdCounter}`;\n}","/* eslint-disable import/no-mutable-exports */\nimport Framework7 from 'framework7/lite';\nimport { extend, unsetRouterIds } from './utils.js';\nlet f7;\nlet f7events;\nconst theme = {};\nconst f7routers = {\n views: [],\n tabs: [],\n modals: null\n};\nconst setTheme = () => {\n if (!f7) return;\n theme.ios = f7.theme === 'ios';\n theme.md = f7.theme === 'md';\n};\nconst cleanup = () => {\n unsetRouterIds();\n delete theme.ios;\n delete theme.md;\n f7routers.views = [];\n f7routers.tabs = [];\n f7routers.modals = null;\n};\nconst f7initEvents = () => {\n f7events = new Framework7.Events();\n};\nconst f7init = function (rootEl, params, init) {\n if (params === void 0) {\n params = {};\n }\n if (init === void 0) {\n init = true;\n }\n const f7Params = extend({}, params, {\n el: rootEl,\n init\n });\n if (typeof params.store !== 'undefined') f7Params.store = params.store;\n if (!f7Params.routes) f7Params.routes = [];\n if (f7Params.userAgent && (f7Params.theme === 'auto' || !f7Params.theme)) {\n const device = Framework7.getDevice({\n userAgent: f7Params.userAgent\n }, true);\n theme.ios = !!device.ios;\n theme.md = !theme.ios;\n }\n // eslint-disable-next-line\n if (f7 && typeof window !== 'undefined') return;\n // eslint-disable-next-line\n if (typeof window === 'undefined') cleanup();\n const instance = new Framework7(f7Params);\n f7 = instance;\n setTheme();\n if (instance.initialized) {\n f7 = instance;\n f7events.emit('ready', f7);\n } else {\n instance.on('init', () => {\n f7 = instance;\n f7events.emit('ready', f7);\n });\n }\n};\nconst f7ready = callback => {\n if (!callback) return;\n if (f7 && f7.initialized) callback(f7);else {\n f7events.once('ready', callback);\n }\n};\nexport { f7, theme, f7ready, f7events, f7init, f7routers, f7initEvents, setTheme };","import { isStringProp } from './utils.js';\nexport function colorClasses(props) {\n const {\n color,\n textColor,\n bgColor,\n borderColor,\n rippleColor,\n dark\n } = props;\n return {\n dark,\n [`color-${color}`]: color,\n [`text-color-${textColor}`]: textColor,\n [`bg-color-${bgColor}`]: bgColor,\n [`border-color-${borderColor}`]: borderColor,\n [`ripple-color-${rippleColor}`]: rippleColor\n };\n}\nexport function routerAttrs(props) {\n const {\n force,\n reloadCurrent,\n reloadPrevious,\n reloadAll,\n reloadDetail,\n animate,\n ignoreCache,\n routeTabId,\n view,\n transition,\n openIn\n } = props;\n let dataAnimate;\n if ('animate' in props && typeof animate !== 'undefined') {\n dataAnimate = animate.toString();\n }\n let dataReloadDetail;\n if ('reloadDetail' in props && typeof reloadDetail !== 'undefined') {\n dataReloadDetail = reloadDetail.toString();\n }\n return {\n 'data-force': force || undefined,\n 'data-reload-current': reloadCurrent || undefined,\n 'data-reload-all': reloadAll || undefined,\n 'data-reload-previous': reloadPrevious || undefined,\n 'data-reload-detail': dataReloadDetail,\n 'data-animate': dataAnimate,\n 'data-ignore-cache': ignoreCache || undefined,\n 'data-route-tab-id': routeTabId || undefined,\n 'data-view': isStringProp(view) ? view : undefined,\n 'data-transition': isStringProp(transition) ? transition : undefined,\n 'data-open-in': isStringProp(openIn) ? openIn : undefined\n };\n}\nexport function routerClasses(props) {\n const {\n back,\n linkBack,\n external,\n preventRouter\n } = props;\n return {\n back: back || linkBack,\n external,\n 'prevent-router': preventRouter\n };\n}\nexport function actionsAttrs(props) {\n const {\n searchbarEnable,\n searchbarDisable,\n searchbarClear,\n searchbarToggle,\n panelOpen,\n panelClose,\n panelToggle,\n popupOpen,\n popupClose,\n actionsOpen,\n actionsClose,\n popoverOpen,\n popoverClose,\n loginScreenOpen,\n loginScreenClose,\n sheetOpen,\n sheetClose,\n sortableEnable,\n sortableDisable,\n sortableToggle,\n cardOpen,\n cardClose\n } = props;\n return {\n 'data-searchbar': isStringProp(searchbarEnable) && searchbarEnable || isStringProp(searchbarDisable) && searchbarDisable || isStringProp(searchbarClear) && searchbarClear || isStringProp(searchbarToggle) && searchbarToggle || undefined,\n 'data-panel': isStringProp(panelOpen) && panelOpen || isStringProp(panelClose) && panelClose || isStringProp(panelToggle) && panelToggle || undefined,\n 'data-popup': isStringProp(popupOpen) && popupOpen || isStringProp(popupClose) && popupClose || undefined,\n 'data-actions': isStringProp(actionsOpen) && actionsOpen || isStringProp(actionsClose) && actionsClose || undefined,\n 'data-popover': isStringProp(popoverOpen) && popoverOpen || isStringProp(popoverClose) && popoverClose || undefined,\n 'data-sheet': isStringProp(sheetOpen) && sheetOpen || isStringProp(sheetClose) && sheetClose || undefined,\n 'data-login-screen': isStringProp(loginScreenOpen) && loginScreenOpen || isStringProp(loginScreenClose) && loginScreenClose || undefined,\n 'data-sortable': isStringProp(sortableEnable) && sortableEnable || isStringProp(sortableDisable) && sortableDisable || isStringProp(sortableToggle) && sortableToggle || undefined,\n 'data-card': isStringProp(cardOpen) && cardOpen || isStringProp(cardClose) && cardClose || undefined\n };\n}\nexport function actionsClasses(props) {\n const {\n searchbarEnable,\n searchbarDisable,\n searchbarClear,\n searchbarToggle,\n panelOpen,\n panelClose,\n panelToggle,\n popupOpen,\n popupClose,\n actionsClose,\n actionsOpen,\n popoverOpen,\n popoverClose,\n loginScreenOpen,\n loginScreenClose,\n sheetOpen,\n sheetClose,\n sortableEnable,\n sortableDisable,\n sortableToggle,\n cardOpen,\n cardPreventOpen,\n cardClose\n } = props;\n return {\n 'searchbar-enable': searchbarEnable || searchbarEnable === '',\n 'searchbar-disable': searchbarDisable || searchbarDisable === '',\n 'searchbar-clear': searchbarClear || searchbarClear === '',\n 'searchbar-toggle': searchbarToggle || searchbarToggle === '',\n 'panel-close': panelClose || panelClose === '',\n 'panel-open': panelOpen || panelOpen === '',\n 'panel-toggle': panelToggle || panelToggle === '',\n 'popup-close': popupClose || popupClose === '',\n 'popup-open': popupOpen || popupOpen === '',\n 'actions-close': actionsClose || actionsClose === '',\n 'actions-open': actionsOpen || actionsOpen === '',\n 'popover-close': popoverClose || popoverClose === '',\n 'popover-open': popoverOpen || popoverOpen === '',\n 'sheet-close': sheetClose || sheetClose === '',\n 'sheet-open': sheetOpen || sheetOpen === '',\n 'login-screen-close': loginScreenClose || loginScreenClose === '',\n 'login-screen-open': loginScreenOpen || loginScreenOpen === '',\n 'sortable-enable': sortableEnable || sortableEnable === '',\n 'sortable-disable': sortableDisable || sortableDisable === '',\n 'sortable-toggle': sortableToggle || sortableToggle === '',\n 'card-close': cardClose || cardClose === '',\n 'card-open': cardOpen || cardOpen === '',\n 'card-prevent-open': cardPreventOpen || cardPreventOpen === ''\n };\n}","export const modalStateClasses = function (_temp) {\n let {\n isOpened,\n isClosing\n } = _temp === void 0 ? {} : _temp;\n return {\n 'modal-in': isOpened.current && !isClosing.current,\n 'modal-out': isClosing.current\n };\n};","import { useEffect, useLayoutEffect } from 'react';\nfunction useIsomorphicLayoutEffect(callback, deps) {\n // eslint-disable-next-line\n if (typeof window === 'undefined') return useEffect(callback, deps);\n return useLayoutEffect(callback, deps);\n}\nexport { useIsomorphicLayoutEffect };","import { useRef } from 'react';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js';\nexport const watchProp = (value, callback) => {\n const valueRef = useRef(value);\n useIsomorphicLayoutEffect(() => {\n if (value !== valueRef.current && callback) {\n callback(value, valueRef.current);\n }\n valueRef.current = value;\n }, [value]);\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useImperativeHandle, useRef } from 'react';\nimport { f7, f7ready } from '../shared/f7.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { modalStateClasses } from '../shared/modal-state-classes.js';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, emit, getExtraAttrs } from '../shared/utils.js';\nimport { watchProp } from '../shared/watch-prop.js';\n\n\n\nconst Popup = /*#__PURE__*/forwardRef((props, ref) => {\n const f7Popup = useRef(null);\n const {\n className,\n id,\n style,\n children,\n tabletFullscreen,\n push,\n opened,\n closeByBackdropClick,\n backdrop,\n backdropEl,\n animate,\n closeOnEscape,\n swipeToClose = false,\n swipeHandler,\n containerEl\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const isOpened = useRef(opened);\n const isClosing = useRef(false);\n const onSwipeStart = instance => {\n emit(props, 'popupSwipeStart', instance);\n };\n const onSwipeMove = instance => {\n emit(props, 'popupSwipeMove', instance);\n };\n const onSwipeEnd = instance => {\n emit(props, 'popupSwipeEnd', instance);\n };\n const onSwipeClose = instance => {\n emit(props, 'popupSwipeClose', instance);\n };\n const onOpen = instance => {\n isOpened.current = true;\n isClosing.current = false;\n emit(props, 'popupOpen', instance);\n };\n const onOpened = instance => {\n emit(props, 'popupOpened', instance);\n };\n const onClose = instance => {\n isOpened.current = false;\n isClosing.current = true;\n emit(props, 'popupClose', instance);\n };\n const onClosed = instance => {\n isClosing.current = false;\n emit(props, 'popupClosed', instance);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7Popup: () => f7Popup.current\n }));\n watchProp(opened, value => {\n if (!f7Popup.current) return;\n if (value) {\n f7Popup.current.open();\n } else {\n f7Popup.current.close();\n }\n });\n const modalEvents = method => {\n if (!f7Popup.current) return;\n f7Popup.current[method]('swipeStart', onSwipeStart);\n f7Popup.current[method]('swipeMove', onSwipeMove);\n f7Popup.current[method]('swipeEnd', onSwipeEnd);\n f7Popup.current[method]('swipeClose', onSwipeClose);\n f7Popup.current[method]('open', onOpen);\n f7Popup.current[method]('opened', onOpened);\n f7Popup.current[method]('close', onClose);\n f7Popup.current[method]('closed', onClosed);\n };\n const onMount = () => {\n if (!elRef.current) return;\n const popupParams = {\n el: elRef.current\n };\n if ('closeByBackdropClick' in props) popupParams.closeByBackdropClick = closeByBackdropClick;\n if ('closeOnEscape' in props) popupParams.closeOnEscape = closeOnEscape;\n if ('animate' in props) popupParams.animate = animate;\n if ('backdrop' in props) popupParams.backdrop = backdrop;\n if ('backdropEl' in props) popupParams.backdropEl = backdropEl;\n if ('swipeToClose' in props) popupParams.swipeToClose = swipeToClose;\n if ('swipeHandler' in props) popupParams.swipeHandler = swipeHandler;\n if ('containerEl' in props) popupParams.containerEl = containerEl;\n f7ready(() => {\n f7Popup.current = f7.popup.create(popupParams);\n modalEvents('on');\n if (opened) {\n f7Popup.current.open(false, true);\n }\n });\n };\n const onDestroy = () => {\n if (f7Popup.current) {\n f7Popup.current.destroy();\n }\n f7Popup.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n modalEvents('on');\n return () => {\n modalEvents('off');\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n const classes = classNames(className, 'popup', {\n 'popup-tablet-fullscreen': tabletFullscreen,\n 'popup-push': push\n }, modalStateClasses({\n isOpened,\n isClosing\n }), colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children);\n});\nPopup.displayName = 'f7-popup';\nexport default Popup;","import { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js';\nimport { f7, f7ready } from './f7.js';\nimport { emit } from './utils.js';\nexport const useTab = (elRef, props) => {\n const onTabShow = el => {\n if (elRef.current !== el) return;\n emit(props, 'tabShow', el);\n };\n const onTabHide = el => {\n if (elRef.current !== el) return;\n emit(props, 'tabHide', el);\n };\n const attachEvents = () => {\n if (!elRef.current) return;\n f7ready(() => {\n f7.on('tabShow', onTabShow);\n f7.on('tabHide', onTabHide);\n });\n };\n const detachEvents = () => {\n if (!f7) return;\n f7.off('tabShow', onTabShow);\n f7.off('tabHide', onTabHide);\n };\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n return detachEvents;\n });\n};","import React, { lazy, Suspense } from 'react';\nexport const useAsyncComponent = (component, props, key) => {\n const Component = /*#__PURE__*/lazy(component);\n return /*#__PURE__*/React.createElement(Suspense, {\n fallback: null,\n key: key\n }, /*#__PURE__*/React.createElement(Component, props));\n};","import { getComponentId } from './utils.js';\nexport const getRouterInitialComponent = (router, initialComponent) => {\n let initialComponentData;\n const {\n initialUrl\n } = router.getInitialUrl();\n const initialRoute = router.findMatchingRoute(initialUrl);\n let routeProps = {};\n if (initialRoute && initialRoute.route && initialRoute.route.options) {\n routeProps = initialRoute.route.options.props;\n }\n const isMasterRoute = route => {\n if (route.master === true) return true;\n if (typeof route.master === 'function') return route.master(router.app);\n return false;\n };\n if (initialRoute && initialRoute.route && (initialRoute.route.component || initialRoute.route.asyncComponent) && !isMasterRoute(initialRoute.route)) {\n initialComponentData = {\n component: initialRoute.route.component || initialRoute.route.asyncComponent,\n initialComponent,\n id: getComponentId(),\n isAsync: !!initialRoute.route.asyncComponent,\n props: {\n f7route: initialRoute,\n f7router: router,\n ...routeProps,\n ...initialRoute.params\n }\n };\n }\n return {\n initialPage: initialComponentData,\n initialRoute\n };\n};","import React from 'react';\nconst RouterContext = /*#__PURE__*/React.createContext({\n route: null,\n router: null\n});\nexport { RouterContext };","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/* eslint-disable no-nested-ternary */\nimport React, { forwardRef, useRef, useImperativeHandle, useState } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, noUndefinedProps, emit, getRouterId } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7routers, f7, f7events } from '../shared/f7.js';\nimport { useTab } from '../shared/use-tab.js';\nimport { useAsyncComponent } from '../shared/use-async-component.js';\nimport { getRouterInitialComponent } from '../shared/get-router-initial-component.js';\nimport { RouterContext } from '../shared/router-context.js';\n\nconst View = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n init = true,\n main,\n tab,\n tabActive,\n url,\n initRouterOnTabShow,\n browserHistoryInitialMatch = true\n } = props;\n const childrenArray = React.Children.toArray(children);\n const initialPageComponent = childrenArray.filter(c => c.props && c.props.initialPage)[0];\n const restChildren = childrenArray.filter(c => !c.props || !c.props.initialPage);\n const shouldInitRouter = !(initRouterOnTabShow && tab && !tabActive);\n const extraAttrs = getExtraAttrs(props);\n const f7View = useRef(null);\n const elRef = useRef(null);\n const routerData = useRef(null);\n let initialPage;\n let initialRoute;\n const onViewInit = view => {\n emit(props, 'viewInit', view);\n if (!init) {\n routerData.current.instance = view;\n f7View.current = routerData.current.instance;\n }\n };\n if (f7 && !f7View.current && init) {\n const routerId = getRouterId();\n f7View.current = f7.views.create(elRef.current, {\n routerId,\n init: false,\n ...noUndefinedProps(props),\n browserHistoryInitialMatch,\n on: {\n init: onViewInit\n }\n });\n routerData.current = {\n routerId,\n instance: f7View.current\n };\n f7routers.views.push(routerData.current);\n if (shouldInitRouter && f7View.current && f7View.current.router && (url || main)) {\n const initialData = getRouterInitialComponent(f7View.current.router, initialPageComponent);\n initialPage = initialData.initialPage;\n initialRoute = initialData.initialRoute;\n if (initialRoute && initialRoute.route && initialRoute.route.masterRoute) {\n initialPage = undefined;\n initialRoute = undefined;\n }\n }\n }\n const [pages, setPages] = useState(initialPage ? [initialPage] : []);\n const onResize = (view, width) => {\n emit(props, 'viewResize', width);\n };\n const onSwipeBackMove = data => {\n const swipeBackData = data;\n emit(props, 'swipeBackMove', swipeBackData);\n };\n const onSwipeBackBeforeChange = data => {\n const swipeBackData = data;\n emit(props, 'swipeBackBeforeChange', swipeBackData);\n };\n const onSwipeBackAfterChange = data => {\n const swipeBackData = data;\n emit(props, 'swipeBackAfterChange', swipeBackData);\n };\n const onSwipeBackBeforeReset = data => {\n const swipeBackData = data;\n emit(props, 'swipeBackBeforeReset', swipeBackData);\n };\n const onSwipeBackAfterReset = data => {\n const swipeBackData = data;\n emit(props, 'swipeBackAfterReset', swipeBackData);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7View: () => f7View.current\n }));\n const onMount = () => {\n f7ready(() => {\n if (f7View.current) {\n routerData.current.el = elRef.current;\n routerData.current.pages = pages;\n routerData.current.setPages = newPages => {\n setPages([...newPages]);\n };\n if (initialPage && initialPage.isAsync && !initialPage.initialComponent) {\n initialPage.component().then(() => {\n setTimeout(() => {\n f7View.current.init(elRef.current);\n if (initialPage) {\n initialPage.el = f7View.current.router.currentPageEl;\n if (initialRoute && initialRoute.route && initialRoute.route.keepAlive) {\n initialRoute.route.keepAliveData = {\n pageEl: initialPage.el\n };\n }\n }\n }, 100);\n });\n } else {\n f7View.current.init(elRef.current);\n if (initialPage) {\n initialPage.el = f7View.current.router.currentPageEl;\n if (initialRoute && initialRoute.route && initialRoute.route.keepAlive) {\n initialRoute.route.keepAliveData = {\n pageEl: initialPage.el\n };\n }\n }\n }\n } else {\n const routerId = getRouterId();\n routerData.current = {\n el: elRef.current,\n routerId,\n pages,\n instance: f7View.current,\n setPages(newPages) {\n setPages([...newPages]);\n }\n };\n f7routers.views.push(routerData.current);\n routerData.current.instance = f7.views.create(elRef.current, {\n routerId,\n ...noUndefinedProps(props),\n browserHistoryInitialMatch,\n on: {\n init: onViewInit\n }\n });\n f7View.current = routerData.current.instance;\n }\n if (!init) return;\n f7View.current.on('resize', onResize);\n f7View.current.on('swipebackMove', onSwipeBackMove);\n f7View.current.on('swipebackBeforeChange', onSwipeBackBeforeChange);\n f7View.current.on('swipebackAfterChange', onSwipeBackAfterChange);\n f7View.current.on('swipebackBeforeReset', onSwipeBackBeforeReset);\n f7View.current.on('swipebackAfterReset', onSwipeBackAfterReset);\n });\n };\n const onDestroy = () => {\n if (f7View.current) {\n f7View.current.off('resize', onResize);\n f7View.current.off('swipebackMove', onSwipeBackMove);\n f7View.current.off('swipebackBeforeChange', onSwipeBackBeforeChange);\n f7View.current.off('swipebackAfterChange', onSwipeBackAfterChange);\n f7View.current.off('swipebackBeforeReset', onSwipeBackBeforeReset);\n f7View.current.off('swipebackAfterReset', onSwipeBackAfterReset);\n if (f7View.current.destroy) f7View.current.destroy();\n f7View.current = null;\n }\n f7routers.views.splice(f7routers.views.indexOf(routerData.current), 1);\n routerData.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n useIsomorphicLayoutEffect(() => {\n if (routerData.current && f7) {\n f7events.emit('viewRouterDidUpdate', routerData.current);\n }\n });\n useTab(elRef, props);\n const classes = classNames(className, 'view', {\n 'view-main': main,\n 'tab-active': tabActive,\n tab\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), restChildren, pages.map(_ref => {\n let {\n component: PageComponent,\n id: pageId,\n props: pageProps,\n isAsync,\n initialComponent\n } = _ref;\n return /*#__PURE__*/React.createElement(RouterContext.Provider, {\n key: pageId,\n value: {\n router: pageProps.f7router,\n route: pageProps.f7route\n }\n }, initialComponent ? /*#__PURE__*/React.cloneElement(initialComponent, {\n ...pageProps\n }) : isAsync ? useAsyncComponent(PageComponent, pageProps) : /*#__PURE__*/React.createElement(PageComponent, pageProps));\n }));\n});\nView.displayName = 'f7-view';\nexport default View;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { watchProp } from '../shared/watch-prop.js';\nimport { modalStateClasses } from '../shared/modal-state-classes.js';\n\n\nconst LoginScreen = /*#__PURE__*/forwardRef((props, ref) => {\n const f7LoginScreen = useRef(null);\n const {\n className,\n id,\n style,\n children,\n opened,\n animate,\n containerEl\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const isOpened = useRef(opened);\n const isClosing = useRef(false);\n const elRef = useRef(null);\n const onOpen = instance => {\n isOpened.current = true;\n isClosing.current = false;\n emit(props, 'loginScreenOpen', instance);\n };\n const onOpened = instance => {\n emit(props, 'loginScreenOpened', instance);\n };\n const onClose = instance => {\n isOpened.current = false;\n isClosing.current = true;\n emit(props, 'loginScreenClose', instance);\n };\n const onClosed = instance => {\n isClosing.current = false;\n emit(props, 'loginScreenClosed', instance);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7LoginScreen: () => f7LoginScreen.current\n }));\n\n // watch opened changes\n watchProp(opened, value => {\n if (!f7LoginScreen.current) return;\n if (value) {\n f7LoginScreen.current.open();\n } else {\n f7LoginScreen.current.close();\n }\n });\n const modalEvents = method => {\n if (!f7LoginScreen.current) return;\n f7LoginScreen.current[method]('open', onOpen);\n f7LoginScreen.current[method]('opened', onOpened);\n f7LoginScreen.current[method]('close', onClose);\n f7LoginScreen.current[method]('closed', onClosed);\n };\n const onMount = () => {\n if (!elRef.current) return;\n f7ready(() => {\n const loginScreenParams = {\n el: elRef.current\n };\n if ('animate' in props) loginScreenParams.animate = animate;\n if ('containerEl' in props) loginScreenParams.containerEl = containerEl;\n f7LoginScreen.current = f7.loginScreen.create(loginScreenParams);\n modalEvents('on');\n if (opened) {\n f7LoginScreen.current.open(false);\n }\n });\n };\n const onDestroy = () => {\n if (f7LoginScreen.current) {\n f7LoginScreen.current.destroy();\n }\n f7LoginScreen.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n modalEvents('on');\n return () => {\n modalEvents('off');\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n const classes = classNames(className, 'login-screen', modalStateClasses({\n isOpened,\n isClosing\n }), colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children);\n});\nLoginScreen.displayName = 'f7-login-screen';\nexport default LoginScreen;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit, getSlots } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { watchProp } from '../shared/watch-prop.js';\nimport { modalStateClasses } from '../shared/modal-state-classes.js';\n\n\n\nconst Sheet = /*#__PURE__*/forwardRef((props, ref) => {\n const f7Sheet = useRef(null);\n const {\n className,\n id,\n style,\n top,\n bottom,\n position,\n push,\n opened,\n animate,\n backdrop,\n backdropEl,\n closeByBackdropClick,\n closeByOutsideClick,\n closeOnEscape,\n swipeToClose,\n swipeToStep,\n swipeHandler,\n containerEl,\n breakpoints,\n backdropBreakpoint,\n pushBreakpoint\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const isOpened = useRef(opened);\n const isClosing = useRef(false);\n const onBreakpoint = (instance, breakpoint) => {\n emit(props, 'sheetBreakpoint', instance, breakpoint);\n };\n const onStepProgress = (instance, progress) => {\n emit(props, 'sheetStepProgress', instance, progress);\n };\n const onStepOpen = instance => {\n emit(props, 'sheetStepOpen', instance);\n };\n const onStepClose = instance => {\n emit(props, 'sheetStepClose', instance);\n };\n const onOpen = instance => {\n isOpened.current = true;\n isClosing.current = false;\n emit(props, 'sheetOpen', instance);\n };\n const onOpened = instance => {\n emit(props, 'sheetOpened', instance);\n };\n const onClose = instance => {\n isOpened.current = false;\n isClosing.current = true;\n emit(props, 'sheetClose', instance);\n };\n const onClosed = instance => {\n isClosing.current = false;\n emit(props, 'sheetClosed', instance);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7Sheet: () => f7Sheet.current\n }));\n const modalEvents = method => {\n if (!f7Sheet.current) return;\n f7Sheet.current[method]('open', onOpen);\n f7Sheet.current[method]('opened', onOpened);\n f7Sheet.current[method]('close', onClose);\n f7Sheet.current[method]('closed', onClosed);\n f7Sheet.current[method]('stepOpen', onStepOpen);\n f7Sheet.current[method]('stepClose', onStepClose);\n f7Sheet.current[method]('stepProgress', onStepProgress);\n f7Sheet.current[method]('breakpoint', onBreakpoint);\n };\n const onMount = () => {\n if (!elRef.current) return;\n const sheetParams = {\n el: elRef.current,\n breakpoints,\n backdropBreakpoint,\n pushBreakpoint\n };\n if ('animate' in props && typeof animate !== 'undefined') sheetParams.animate = animate;\n if ('backdrop' in props && typeof backdrop !== 'undefined') sheetParams.backdrop = backdrop;\n if ('backdropEl' in props) sheetParams.backdropEl = backdropEl;\n if ('closeByBackdropClick' in props) sheetParams.closeByBackdropClick = closeByBackdropClick;\n if ('closeByOutsideClick' in props) sheetParams.closeByOutsideClick = closeByOutsideClick;\n if ('closeOnEscape' in props) sheetParams.closeOnEscape = closeOnEscape;\n if ('swipeToClose' in props) sheetParams.swipeToClose = swipeToClose;\n if ('swipeToStep' in props) sheetParams.swipeToStep = swipeToStep;\n if ('swipeHandler' in props) sheetParams.swipeHandler = swipeHandler;\n if ('containerEl' in props) sheetParams.containerEl = containerEl;\n if ('breakpoints' in props) sheetParams.breakpoints = breakpoints;\n if ('backdropBreakpoint' in props) sheetParams.backdropBreakpoint = backdropBreakpoint;\n if ('pushBreakpoint' in props) sheetParams.pushBreakpoint = pushBreakpoint;\n f7ready(() => {\n f7Sheet.current = f7.sheet.create(sheetParams);\n modalEvents('on');\n if (opened) {\n f7Sheet.current.open(false);\n }\n });\n };\n const onDestroy = () => {\n if (f7Sheet.current) {\n f7Sheet.current.destroy();\n }\n f7Sheet.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n modalEvents('on');\n return () => {\n modalEvents('off');\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n watchProp(opened, value => {\n if (!f7Sheet.current) return;\n if (value) {\n f7Sheet.current.open();\n } else {\n f7Sheet.current.close();\n }\n });\n const slots = getSlots(props);\n const fixedList = [];\n const staticList = [];\n const fixedTags = 'navbar toolbar tabbar subnavbar searchbar messagebar fab list-index panel'.split(' ').map(tagName => `f7-${tagName}`);\n const slotsDefault = slots.default;\n if (slotsDefault && slotsDefault.length) {\n slotsDefault.forEach(child => {\n if (typeof child === 'undefined') return;\n let isFixedTag = false;\n const tag = child.type && (child.type.displayName || child.type.name);\n if (!tag) {\n staticList.push(child);\n return;\n }\n if (fixedTags.indexOf(tag) >= 0) {\n isFixedTag = true;\n }\n if (isFixedTag) fixedList.push(child);else staticList.push(child);\n });\n }\n const innerEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"sheet-modal-inner\"\n }, staticList, slots.static);\n let positionComputed = 'bottom';\n if (position) positionComputed = position;else if (top) positionComputed = 'top';else if (bottom) positionComputed = 'bottom';\n const classes = classNames(className, 'sheet-modal', `sheet-modal-${positionComputed}`, {\n 'sheet-modal-push': push\n }, modalStateClasses({\n isOpened,\n isClosing\n }), colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), fixedList, slots.fixed, innerEl);\n});\nSheet.displayName = 'f7-sheet';\nexport default Sheet;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { watchProp } from '../shared/watch-prop.js';\nimport { modalStateClasses } from '../shared/modal-state-classes.js';\n\n\n\nconst Popover = /*#__PURE__*/forwardRef((props, ref) => {\n const f7Popover = useRef(null);\n const {\n className,\n id,\n style,\n children,\n opened,\n animate,\n targetEl,\n arrow,\n backdrop,\n backdropEl,\n closeByBackdropClick,\n closeByOutsideClick,\n closeOnEscape,\n containerEl,\n verticalPosition\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const isOpened = useRef(opened);\n const isClosing = useRef(false);\n const onOpen = instance => {\n isOpened.current = true;\n isClosing.current = false;\n emit(props, 'popoverOpen', instance);\n };\n const onOpened = instance => {\n emit(props, 'popoverOpened', instance);\n };\n const onClose = instance => {\n isOpened.current = false;\n isClosing.current = true;\n emit(props, 'popoverClose', instance);\n };\n const onClosed = instance => {\n isClosing.current = false;\n emit(props, 'popoverClosed', instance);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7Popover: () => f7Popover.current\n }));\n watchProp(opened, value => {\n if (!f7Popover.current) return;\n if (value) {\n f7Popover.current.open();\n } else {\n f7Popover.current.close();\n }\n });\n const modalEvents = method => {\n if (!f7Popover.current) return;\n f7Popover.current[method]('open', onOpen);\n f7Popover.current[method]('opened', onOpened);\n f7Popover.current[method]('close', onClose);\n f7Popover.current[method]('closed', onClosed);\n };\n const onMount = () => {\n if (!elRef.current) return;\n const popoverParams = {\n el: elRef.current\n };\n if (targetEl) popoverParams.targetEl = targetEl;\n if ('closeByBackdropClick' in props) popoverParams.closeByBackdropClick = closeByBackdropClick;\n if ('closeByOutsideClick' in props) popoverParams.closeByOutsideClick = closeByOutsideClick;\n if ('closeOnEscape' in props) popoverParams.closeOnEscape = closeOnEscape;\n if ('arrow' in props) popoverParams.arrow = arrow;\n if ('backdrop' in props) popoverParams.backdrop = backdrop;\n if ('backdropEl' in props) popoverParams.backdropEl = backdropEl;\n if ('animate' in props) popoverParams.animate = animate;\n if ('containerEl' in props) popoverParams.containerEl = containerEl;\n if ('verticalPosition' in props) popoverParams.verticalPosition = verticalPosition;\n f7ready(() => {\n f7Popover.current = f7.popover.create(popoverParams);\n modalEvents('on');\n if (opened && targetEl) {\n f7Popover.current.open(targetEl, false);\n }\n });\n };\n const onDestroy = () => {\n if (f7Popover.current) {\n f7Popover.current.destroy();\n }\n f7Popover.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n modalEvents('on');\n return () => {\n modalEvents('off');\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n const classes = classNames(className, 'popover', modalStateClasses({\n isOpened,\n isClosing\n }), colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), arrow !== false && /*#__PURE__*/React.createElement(\"div\", {\n className: \"popover-arrow\"\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"popover-inner\"\n }, children));\n});\nPopover.displayName = 'f7-popover';\nexport default Popover;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, noUndefinedProps, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { watchProp } from '../shared/watch-prop.js';\n\n\n\nconst Panel = /*#__PURE__*/forwardRef((props, ref) => {\n const f7Panel = useRef(null);\n const {\n className,\n id,\n style,\n children,\n side,\n effect,\n // eslint-disable-next-line\n cover,\n reveal,\n push,\n floating,\n left,\n // right,\n opened,\n resizable,\n backdrop = true,\n backdropEl,\n containerEl,\n closeByBackdropClick,\n visibleBreakpoint,\n collapsedBreakpoint,\n swipe,\n swipeNoFollow,\n swipeOnlyClose,\n swipeActiveArea = 0,\n swipeThreshold = 0\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const isOpened = useRef(false);\n const isClosing = useRef(false);\n const isCollapsed = useRef(false);\n const isBreakpoint = useRef(false);\n const onOpen = event => {\n isOpened.current = true;\n isClosing.current = false;\n emit(props, 'panelOpen', event);\n };\n const onOpened = event => {\n emit(props, 'panelOpened', event);\n };\n const onClose = event => {\n isOpened.current = false;\n isClosing.current = true;\n emit(props, 'panelClose', event);\n };\n const onClosed = event => {\n isClosing.current = false;\n emit(props, 'panelClosed', event);\n };\n const onBackdropClick = event => {\n emit(props, 'click panelBackdropClick', event);\n };\n const onSwipe = event => {\n emit(props, 'panelSwipe', event);\n };\n const onSwipeOpen = event => {\n emit(props, 'panelSwipeOpen', event);\n };\n const onBreakpoint = event => {\n isBreakpoint.current = true;\n isCollapsed.current = false;\n emit(props, 'panelBreakpoint', event);\n };\n const onCollapsedBreakpoint = event => {\n isBreakpoint.current = false;\n isCollapsed.current = true;\n emit(props, 'panelCollapsedBreakpoint', event);\n };\n const onResize = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n emit(props, 'panelResize', ...args);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7Panel: () => f7Panel.current\n }));\n watchProp(resizable, newValue => {\n if (!f7Panel.current) return;\n if (newValue) f7Panel.current.enableResizable();else f7Panel.current.disableResizable();\n });\n watchProp(opened, newValue => {\n if (!f7Panel.current) return;\n if (newValue) {\n f7Panel.current.open();\n } else {\n f7Panel.current.close();\n }\n });\n const modalEvents = method => {\n if (!f7Panel.current) return;\n f7Panel.current[method]('open', onOpen);\n f7Panel.current[method]('opened', onOpened);\n f7Panel.current[method]('close', onClose);\n f7Panel.current[method]('closed', onClosed);\n f7Panel.current[method]('backdropClick', onBackdropClick);\n f7Panel.current[method]('swipe', onSwipe);\n f7Panel.current[method]('swipeOpen', onSwipeOpen);\n f7Panel.current[method]('collapsedBreakpoint', onCollapsedBreakpoint);\n f7Panel.current[method]('breakpoint', onBreakpoint);\n f7Panel.current[method]('resize', onResize);\n };\n const onMount = () => {\n f7ready(() => {\n const $ = f7.$;\n if (!$) return;\n if ($('.panel-backdrop').length === 0) {\n $('
                      ').insertBefore(elRef.current);\n }\n const params = noUndefinedProps({\n el: elRef.current,\n resizable,\n backdrop,\n backdropEl,\n containerEl,\n visibleBreakpoint,\n collapsedBreakpoint,\n swipe,\n swipeNoFollow,\n swipeOnlyClose,\n swipeActiveArea,\n swipeThreshold,\n closeByBackdropClick\n });\n f7Panel.current = f7.panel.create(params);\n modalEvents('on');\n if (opened) {\n f7Panel.current.open(false);\n }\n });\n };\n const onDestroy = () => {\n if (f7Panel.current && f7Panel.current.destroy) {\n f7Panel.current.destroy();\n }\n f7Panel.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n modalEvents('on');\n return () => {\n modalEvents('off');\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n const sideComputed = side || (left ? 'left' : 'right');\n // eslint-disable-next-line\n const effectComputed = effect || (reveal ? 'reveal' : push ? 'push' : floating ? 'floating' : 'cover');\n const classes = classNames(className, 'panel', {\n 'panel-in': isOpened.current && !isClosing.current && !isBreakpoint.current,\n 'panel-in-breakpoint': isBreakpoint.current,\n 'panel-in-collapsed': isCollapsed.current,\n 'panel-resizable': resizable,\n [`panel-${sideComputed}`]: sideComputed,\n [`panel-${effectComputed}`]: effectComputed\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children, resizable && /*#__PURE__*/React.createElement(\"div\", {\n className: \"panel-resize-handler\"\n }));\n});\nPanel.displayName = 'f7-panel';\nexport default Panel;","import React from 'react';\nimport Popup from '../components/popup.js';\nimport View from '../components/view.js';\nimport LoginScreen from '../components/login-screen.js';\nimport Sheet from '../components/sheet.js';\nimport Popover from '../components/popover.js';\nimport Panel from '../components/panel.js';\nexport const routerOpenIn = (router, url, options) => {\n const navigateOptions = {\n url,\n route: {\n path: url,\n options: {\n ...options,\n openIn: undefined\n }\n }\n };\n const params = {\n ...options\n };\n if (options.openIn === 'popup') {\n params.component = function DynamicPopup() {\n return /*#__PURE__*/React.createElement(Popup, {\n className: \"popup-router-open-in\",\n \"data-url\": url\n }, /*#__PURE__*/React.createElement(View, {\n linksView: router.view.selector,\n url: url,\n ignoreOpenIn: true\n }));\n };\n navigateOptions.route.popup = params;\n }\n if (options.openIn === 'loginScreen') {\n params.component = function DynamicPopover() {\n return /*#__PURE__*/React.createElement(LoginScreen, {\n className: \"login-screen-router-open-in\",\n \"data-url\": url\n }, /*#__PURE__*/React.createElement(View, {\n linksView: router.view.selector,\n url: url,\n ignoreOpenIn: true\n }));\n };\n navigateOptions.route.loginScreen = params;\n }\n if (options.openIn === 'sheet') {\n params.component = function DynamicSheet() {\n return /*#__PURE__*/React.createElement(Sheet, {\n className: \"sheet-modal-router-open-in\",\n \"data-url\": url\n }, /*#__PURE__*/React.createElement(View, {\n linksView: router.view.selector,\n url: url,\n ignoreOpenIn: true\n }));\n };\n navigateOptions.route.sheet = params;\n }\n if (options.openIn === 'popover') {\n params.targetEl = options.clickedEl || options.targetEl;\n params.component = function DynamicPopover() {\n return /*#__PURE__*/React.createElement(Popover, {\n className: \"popover-router-open-in\",\n targetEl: options.clickedEl || options.targetEl,\n \"data-url\": url\n }, /*#__PURE__*/React.createElement(View, {\n linksView: router.view.selector,\n url: url,\n ignoreOpenIn: true\n }));\n };\n navigateOptions.route.popover = params;\n }\n if (options.openIn.indexOf('panel') >= 0) {\n const parts = options.openIn.split(':');\n const side = parts[1] || 'left';\n const effect = parts[2] || 'cover';\n params.component = function DynamicPanel() {\n return /*#__PURE__*/React.createElement(Panel, {\n side: side,\n effect: effect,\n className: \"panel-router-open-in\",\n \"data-url\": url\n }, /*#__PURE__*/React.createElement(View, {\n linksView: router.view.selector,\n url: url,\n ignoreOpenIn: true\n }));\n };\n navigateOptions.route.panel = params;\n }\n return router.navigate(navigateOptions);\n};","/* eslint no-underscore-dangle: \"off\" */\nimport { f7events, f7routers } from './f7.js';\nimport { extend, getComponentId } from './utils.js';\nimport { routerOpenIn } from './router-open-in.js';\nconst getChildrenArray = el => {\n const arr = [];\n for (let i = 0; i < el.children.length; i += 1) {\n arr.push(el.children[i]);\n }\n return arr;\n};\nconst hasSameChildren = (childrenBefore, childrenAfter) => {\n if (childrenBefore.length !== childrenAfter.length) return false;\n const set = new Set([...childrenBefore, ...childrenAfter]);\n if (set.size === childrenBefore.length) return true;\n return false;\n};\nexport default {\n proto: {\n openIn(router, navigateUrl, options) {\n return routerOpenIn(router, navigateUrl, options);\n },\n pageComponentLoader(_ref) {\n let {\n routerEl,\n component,\n options,\n resolve,\n reject\n } = _ref;\n const router = this;\n const routerId = router.id;\n const el = routerEl;\n let viewRouter;\n f7routers.views.forEach(data => {\n if (data.el && data.el === routerEl || data.routerId && data.routerId === routerId) {\n viewRouter = data;\n }\n });\n if (!viewRouter) {\n reject();\n return;\n }\n const pageData = {\n component,\n id: getComponentId(),\n props: extend({\n f7route: options.route,\n f7router: router\n }, options.route.params, options.props || {})\n };\n let resolved;\n const childrenBefore = getChildrenArray(el);\n function onDidUpdate(componentRouterData) {\n if (componentRouterData !== viewRouter || resolved) return;\n const childrenAfter = getChildrenArray(el);\n if (hasSameChildren(childrenBefore, childrenAfter)) return;\n f7events.off('viewRouterDidUpdate', onDidUpdate);\n const pageEl = el.children[el.children.length - 1];\n pageData.el = pageEl;\n resolve(pageEl);\n resolved = true;\n }\n f7events.on('viewRouterDidUpdate', onDidUpdate);\n viewRouter.pages.push(pageData);\n viewRouter.setPages(viewRouter.pages);\n },\n removePage($pageEl) {\n if (!$pageEl) return;\n const router = this;\n let f7Page;\n if ('length' in $pageEl && $pageEl[0]) f7Page = $pageEl[0].f7Page;else f7Page = $pageEl.f7Page;\n if (f7Page && f7Page.route && f7Page.route.route && f7Page.route.route.keepAlive) {\n router.app.$($pageEl).remove();\n return;\n }\n let viewRouter;\n f7routers.views.forEach(data => {\n if (data.el && data.el === router.el) {\n viewRouter = data;\n }\n });\n let pageEl;\n if ('length' in $pageEl) {\n // Dom7\n if ($pageEl.length === 0) return;\n pageEl = $pageEl[0];\n } else {\n pageEl = $pageEl;\n }\n if (!pageEl) return;\n let pageComponentFound;\n viewRouter.pages.forEach((page, index) => {\n if (page.el === pageEl) {\n pageComponentFound = true;\n viewRouter.pages.splice(index, 1);\n viewRouter.setPages(viewRouter.pages);\n }\n });\n if (!pageComponentFound) {\n pageEl.parentNode.removeChild(pageEl);\n }\n },\n tabComponentLoader(_temp) {\n let {\n tabEl,\n component,\n options,\n resolve,\n reject\n } = _temp === void 0 ? {} : _temp;\n const router = this;\n if (!tabEl) reject();\n let tabRouter;\n f7routers.tabs.forEach(tabData => {\n if (tabData.el && tabData.el === tabEl) {\n tabRouter = tabData;\n }\n });\n if (!tabRouter) {\n reject();\n return;\n }\n const id = getComponentId();\n const tabContent = {\n id,\n component,\n props: extend({\n f7route: options.route,\n f7router: router\n }, options.route.route && options.route.route.tab && options.route.route.tab.options && options.route.route.tab.options.props || {}, options.route.params, options.props || {})\n };\n let resolved;\n function onDidUpdate(componentRouterData) {\n if (componentRouterData !== tabRouter || resolved) return;\n f7events.off('tabRouterDidUpdate', onDidUpdate);\n const tabContentEl = tabEl.children[0];\n resolve(tabContentEl);\n resolved = true;\n }\n f7events.on('tabRouterDidUpdate', onDidUpdate);\n tabRouter.setTabContent(tabContent);\n },\n removeTabContent(tabEl) {\n if (!tabEl) return;\n let tabRouter;\n f7routers.tabs.forEach(tabData => {\n if (tabData.el && tabData.el === tabEl) {\n tabRouter = tabData;\n }\n });\n if (!tabRouter) {\n tabEl.innerHTML = ''; // eslint-disable-line\n return;\n }\n tabRouter.setTabContent(null);\n },\n modalComponentLoader(_temp2) {\n let {\n component,\n options,\n resolve,\n reject\n } = _temp2 === void 0 ? {} : _temp2;\n const router = this;\n const modalsRouter = f7routers.modals;\n if (!modalsRouter) {\n reject();\n return;\n }\n const modalData = {\n component,\n id: getComponentId(),\n props: extend({\n f7route: options.route,\n f7router: router\n }, options.route.params, options.props || {})\n };\n let resolved;\n function onDidUpdate() {\n if (resolved) return;\n f7events.off('modalsRouterDidUpdate', onDidUpdate);\n const modalEl = modalsRouter.el.children[modalsRouter.el.children.length - 1];\n modalData.el = modalEl;\n resolve(modalEl);\n resolved = true;\n }\n f7events.on('modalsRouterDidUpdate', onDidUpdate);\n modalsRouter.modals.push(modalData);\n modalsRouter.setModals(modalsRouter.modals);\n },\n removeModal(modalEl) {\n const modalsRouter = f7routers.modals;\n if (!modalsRouter) return;\n let modalDataToRemove;\n modalsRouter.modals.forEach(modalData => {\n if (modalData.el === modalEl) modalDataToRemove = modalData;\n });\n modalsRouter.modals.splice(modalsRouter.modals.indexOf(modalDataToRemove), 1);\n modalsRouter.setModals(modalsRouter.modals);\n }\n }\n};","import Framework7 from 'framework7/lite';\nimport componentsRouter from './components-router.js';\nimport { f7, f7ready, theme, f7initEvents, setTheme } from './f7.js';\nconst Framework7React = {\n name: 'reactPlugin',\n installed: false,\n install(params) {\n if (params === void 0) {\n params = {};\n }\n if (Framework7React.installed) return;\n Framework7React.installed = true;\n f7initEvents();\n const {\n theme: paramsTheme,\n userAgent\n } = params;\n if (paramsTheme === 'md') theme.md = true;\n if (paramsTheme === 'ios') theme.ios = true;\n\n // eslint-disable-next-line\n const needThemeCalc = typeof window === 'undefined' ? !!userAgent : true;\n if (needThemeCalc && (!paramsTheme || paramsTheme === 'auto')) {\n const device = Framework7.getDevice({\n userAgent\n }, true);\n theme.ios = !!device.ios;\n theme.md = !theme.ios;\n }\n f7ready(() => {\n setTheme();\n });\n Framework7.Router.use(componentsRouter);\n }\n};\nexport { f7ready, f7, theme };\nexport default Framework7React;","/**\n * Framework7 React 8.3.2\n * Build full featured iOS & Android apps using Framework7 & React\n * https://framework7.io/react/\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 27, 2024\n */\nimport Framework7React from './shared/plugin.js';\nimport { f7, f7ready, theme } from './shared/f7.js';\nimport { useStore } from './shared/use-store.js';\n\nimport AccordionContent from './components/accordion-content.js';\nimport AccordionItem from './components/accordion-item.js';\nimport AccordionToggle from './components/accordion-toggle.js';\nimport Accordion from './components/accordion.js';\nimport ActionsButton from './components/actions-button.js';\nimport ActionsGroup from './components/actions-group.js';\nimport ActionsLabel from './components/actions-label.js';\nimport Actions from './components/actions.js';\nimport App from './components/app.js';\nimport AreaChart from './components/area-chart.js';\nimport Badge from './components/badge.js';\nimport BlockFooter from './components/block-footer.js';\nimport BlockHeader from './components/block-header.js';\nimport BlockTitle from './components/block-title.js';\nimport Block from './components/block.js';\nimport BreadcrumbsCollapsed from './components/breadcrumbs-collapsed.js';\nimport BreadcrumbsItem from './components/breadcrumbs-item.js';\nimport BreadcrumbsSeparator from './components/breadcrumbs-separator.js';\nimport Breadcrumbs from './components/breadcrumbs.js';\nimport Button from './components/button.js';\nimport CardContent from './components/card-content.js';\nimport CardFooter from './components/card-footer.js';\nimport CardHeader from './components/card-header.js';\nimport Card from './components/card.js';\nimport Checkbox from './components/checkbox.js';\nimport Chip from './components/chip.js';\nimport FabBackdrop from './components/fab-backdrop.js';\nimport FabButton from './components/fab-button.js';\nimport FabButtons from './components/fab-buttons.js';\nimport Fab from './components/fab.js';\nimport Gauge from './components/gauge.js';\nimport Icon from './components/icon.js';\nimport Input from './components/input.js';\nimport Link from './components/link.js';\nimport ListButton from './components/list-button.js';\nimport ListGroup from './components/list-group.js';\nimport ListIndex from './components/list-index.js';\nimport ListInput from './components/list-input.js';\nimport ListItemContent from './components/list-item-content.js';\nimport ListItem from './components/list-item.js';\nimport List from './components/list.js';\nimport LoginScreenTitle from './components/login-screen-title.js';\nimport LoginScreen from './components/login-screen.js';\nimport Message from './components/message.js';\nimport MessagebarAttachment from './components/messagebar-attachment.js';\nimport MessagebarAttachments from './components/messagebar-attachments.js';\nimport MessagebarSheetImage from './components/messagebar-sheet-image.js';\nimport MessagebarSheetItem from './components/messagebar-sheet-item.js';\nimport MessagebarSheet from './components/messagebar-sheet.js';\nimport Messagebar from './components/messagebar.js';\nimport MessagesTitle from './components/messages-title.js';\nimport Messages from './components/messages.js';\nimport NavLeft from './components/nav-left.js';\nimport NavRight from './components/nav-right.js';\nimport NavTitleLarge from './components/nav-title-large.js';\nimport NavTitle from './components/nav-title.js';\nimport Navbar from './components/navbar.js';\nimport PageContent from './components/page-content.js';\nimport Page from './components/page.js';\nimport Panel from './components/panel.js';\nimport PhotoBrowser from './components/photo-browser.js';\nimport PieChart from './components/pie-chart.js';\nimport Popover from './components/popover.js';\nimport Popup from './components/popup.js';\nimport Preloader from './components/preloader.js';\nimport Progressbar from './components/progressbar.js';\nimport Radio from './components/radio.js';\nimport Range from './components/range.js';\nimport RoutableModals from './components/routable-modals.js';\nimport Searchbar from './components/searchbar.js';\nimport Segmented from './components/segmented.js';\nimport Sheet from './components/sheet.js';\nimport SkeletonAvatar from './components/skeleton-avatar.js';\nimport SkeletonBlock from './components/skeleton-block.js';\nimport SkeletonImage from './components/skeleton-image.js';\nimport SkeletonText from './components/skeleton-text.js';\nimport Stepper from './components/stepper.js';\nimport Subnavbar from './components/subnavbar.js';\nimport SwipeoutActions from './components/swipeout-actions.js';\nimport SwipeoutButton from './components/swipeout-button.js';\nimport Tab from './components/tab.js';\nimport Tabs from './components/tabs.js';\nimport TextEditor from './components/text-editor.js';\nimport Toggle from './components/toggle.js';\nimport Toolbar from './components/toolbar.js';\nimport TreeviewItem from './components/treeview-item.js';\nimport Treeview from './components/treeview.js';\nimport View from './components/view.js';\nimport Views from './components/views.js';\n\nexport { AccordionContent, AccordionItem, AccordionToggle, Accordion, ActionsButton, ActionsGroup, ActionsLabel, Actions, App, AreaChart, Badge, BlockFooter, BlockHeader, BlockTitle, Block, BreadcrumbsCollapsed, BreadcrumbsItem, BreadcrumbsSeparator, Breadcrumbs, Button, CardContent, CardFooter, CardHeader, Card, Checkbox, Chip, FabBackdrop, FabButton, FabButtons, Fab, Gauge, Icon, Input, Link, ListButton, ListGroup, ListIndex, ListInput, ListItemContent, ListItem, List, LoginScreenTitle, LoginScreen, Message, MessagebarAttachment, MessagebarAttachments, MessagebarSheetImage, MessagebarSheetItem, MessagebarSheet, Messagebar, MessagesTitle, Messages, NavLeft, NavRight, NavTitleLarge, NavTitle, Navbar, PageContent, Page, Panel, PhotoBrowser, PieChart, Popover, Popup, Preloader, Progressbar, Radio, Range, RoutableModals, Searchbar, Segmented, Sheet, SkeletonAvatar, SkeletonBlock, SkeletonImage, SkeletonText, Stepper, Subnavbar, SwipeoutActions, SwipeoutButton, Tab, Tabs, TextEditor, Toggle, Toolbar, TreeviewItem, Treeview, View, Views }\nexport { f7, f7ready, theme, useStore };\nexport default Framework7React;\n","var __WEBPACK_NAMESPACE_OBJECT__ = jQuery;","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle, useState } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { f7events, f7routers, f7 } from '../shared/f7.js';\n\n\nconst RoutableModals = /*#__PURE__*/forwardRef((props, ref) => {\n const [modals, setModals] = useState([]);\n const elRef = useRef(null);\n const routerData = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const onMount = () => {\n routerData.current = {\n modals,\n el: elRef.current,\n setModals(newModals) {\n setModals([...newModals]);\n }\n };\n f7routers.modals = routerData.current;\n };\n const onDestroy = () => {\n if (!routerData.current) return;\n f7routers.modals = null;\n routerData.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n useIsomorphicLayoutEffect(() => {\n if (!routerData.current || !f7) return;\n f7events.emit('modalsRouterDidUpdate', routerData.current);\n });\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: elRef,\n className: \"framework7-modals\"\n }, modals.map(_ref => {\n let {\n component: ModalComponent,\n id: modalId,\n props: modalProps\n } = _ref;\n return /*#__PURE__*/React.createElement(ModalComponent, _extends({\n key: modalId\n }, modalProps));\n }));\n});\nRoutableModals.displayName = 'f7-routable-modals';\nexport default RoutableModals;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport RoutableModals from './routable-modals.js';\nimport { f7init, f7 } from '../shared/f7.js';\n\n\n\n\nconst App = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n style,\n children,\n ...rest\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const params = rest;\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const classes = classNames(className, 'framework7-root', colorClasses(props));\n\n // eslint-disable-next-line\n if (!f7 || typeof window === 'undefined') {\n f7init(elRef.current, params, false);\n }\n useIsomorphicLayoutEffect(() => {\n const parentEl = elRef.current && elRef.current.parentNode;\n /* eslint-disable no-restricted-globals */\n if (typeof document !== 'undefined' && parentEl && parentEl !== document.body && parentEl.parentNode === document.body) {\n parentEl.style.height = '100%';\n }\n /* eslint-enable no-restricted-globals */\n if (f7) {\n f7.init(elRef.current);\n return;\n }\n f7init(elRef.current, params, true);\n }, []);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: \"framework7-root\",\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children, /*#__PURE__*/React.createElement(RoutableModals, null));\n});\nApp.displayName = 'f7-app';\nexport default App;","import { useState } from 'react';\nimport { f7, f7ready, theme } from './f7.js';\nexport const useTheme = () => {\n const [t, setTheme] = useState(f7 ? theme : null);\n if (!f7) {\n f7ready(() => {\n setTheme(theme);\n });\n }\n return t;\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs, extend } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { useTheme } from '../shared/use-theme.js';\n\n\nconst Preloader = /*#__PURE__*/forwardRef((props, ref) => {\n const theme = useTheme();\n const {\n className,\n id,\n style,\n size\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const preloaderStyle = {};\n let sizeComputed = size;\n if (sizeComputed && typeof sizeComputed === 'string' && sizeComputed.indexOf('px') >= 0) {\n sizeComputed = sizeComputed.replace('px', '');\n }\n if (sizeComputed) {\n preloaderStyle.width = `${sizeComputed}px`;\n preloaderStyle.height = `${sizeComputed}px`;\n preloaderStyle['--f7-preloader-size'] = `${sizeComputed}px`;\n }\n if (style) extend(preloaderStyle, style || {});\n let innerEl;\n if (theme && theme.md) {\n innerEl = /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner\"\n }, /*#__PURE__*/React.createElement(\"svg\", {\n viewBox: \"0 0 36 36\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"18\",\n cy: \"18\",\n r: \"16\"\n })));\n } else if (theme && theme.ios) {\n innerEl = /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner\"\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner-line\"\n }));\n } else if (!theme) {\n innerEl = /*#__PURE__*/React.createElement(\"span\", {\n className: \"preloader-inner\"\n });\n }\n const classes = classNames(className, {\n preloader: true\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"span\", _extends({\n id: id,\n style: preloaderStyle,\n className: classes,\n ref: elRef\n }, extraAttrs), innerEl);\n});\nPreloader.displayName = 'f7-preloader';\nexport default Preloader;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport Preloader from './preloader.js';\nimport { useTab } from '../shared/use-tab.js';\nimport { f7ready, f7 } from '../shared/f7.js';\n\n\nconst PageContent = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n tab,\n tabActive,\n ptr,\n ptrDistance,\n ptrPreloader = true,\n ptrBottom,\n ptrMousewheel,\n infinite,\n infiniteTop,\n infiniteDistance,\n infinitePreloader = true,\n hideBarsOnScroll,\n hideNavbarOnScroll,\n hideToolbarOnScroll,\n messagesContent,\n loginScreen\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const onPtrPullStart = el => {\n if (elRef.current !== el) return;\n emit(props, 'ptrPullStart');\n };\n const onPtrPullMove = el => {\n if (elRef.current !== el) return;\n emit(props, 'ptrPullMove');\n };\n const onPtrPullEnd = el => {\n if (elRef.current !== el) return;\n emit(props, 'ptrPullEnd');\n };\n const onPtrRefresh = (el, done) => {\n if (elRef.current !== el) return;\n emit(props, 'ptrRefresh', done);\n };\n const onPtrDone = el => {\n if (elRef.current !== el) return;\n emit(props, 'ptrDone');\n };\n const onInfinite = el => {\n if (elRef.current !== el) return;\n emit(props, 'infinite');\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n useTab(elRef, props);\n const attachEvents = () => {\n f7ready(() => {\n if (ptr) {\n f7.on('ptrPullStart', onPtrPullStart);\n f7.on('ptrPullMove', onPtrPullMove);\n f7.on('ptrPullEnd', onPtrPullEnd);\n f7.on('ptrRefresh', onPtrRefresh);\n f7.on('ptrDone', onPtrDone);\n }\n if (infinite) {\n f7.on('infinite', onInfinite);\n }\n });\n };\n const detachEvents = () => {\n if (!f7) return;\n f7.off('ptrPullStart', onPtrPullStart);\n f7.off('ptrPullMove', onPtrPullMove);\n f7.off('ptrPullEnd', onPtrPullEnd);\n f7.off('ptrRefresh', onPtrRefresh);\n f7.off('ptrDone', onPtrDone);\n f7.off('infinite', onInfinite);\n };\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n return detachEvents;\n });\n let ptrEl;\n let infiniteEl;\n if (ptr && ptrPreloader) {\n ptrEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"ptr-preloader\"\n }, /*#__PURE__*/React.createElement(Preloader, null), /*#__PURE__*/React.createElement(\"div\", {\n className: \"ptr-arrow\"\n }));\n }\n if (infinite && infinitePreloader) {\n infiniteEl = /*#__PURE__*/React.createElement(Preloader, {\n className: \"infinite-scroll-preloader\"\n });\n }\n const classes = classNames(className, 'page-content', {\n tab,\n 'tab-active': tabActive,\n 'ptr-content': ptr,\n 'ptr-bottom': ptrBottom,\n 'infinite-scroll-content': infinite,\n 'infinite-scroll-top': infiniteTop,\n 'hide-bars-on-scroll': hideBarsOnScroll,\n 'hide-navbar-on-scroll': hideNavbarOnScroll,\n 'hide-toolbar-on-scroll': hideToolbarOnScroll,\n 'messages-content': messagesContent,\n 'login-screen-content': loginScreen\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n \"data-ptr-distance\": ptrDistance || undefined,\n \"data-ptr-mousewheel\": ptrMousewheel || undefined,\n \"data-infinite-distance\": infiniteDistance || undefined,\n ref: elRef\n }, extraAttrs), ptrBottom ? null : ptrEl, infiniteTop ? infiniteEl : null, children, infiniteTop ? null : infiniteEl, ptrBottom ? ptrEl : null);\n});\nPageContent.displayName = 'f7-page-content';\nexport default PageContent;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, getSlots, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport PageContent from './page-content.js';\n\n\nconst Page = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n name,\n withSubnavbar,\n subnavbar,\n withNavbarLarge,\n navbarLarge,\n noNavbar,\n noToolbar,\n tabs,\n pageContent = true,\n noSwipeback,\n ptr,\n ptrDistance,\n ptrPreloader = true,\n ptrBottom,\n ptrMousewheel,\n infinite,\n infiniteTop,\n infiniteDistance,\n infinitePreloader = true,\n hideBarsOnScroll,\n hideNavbarOnScroll,\n hideToolbarOnScroll,\n messagesContent,\n loginScreen,\n onPtrPullStart,\n onPtrPullMove,\n onPtrPullEnd,\n onPtrRefresh,\n onPtrDone,\n onInfinite\n } = props;\n const hasSubnavbar = useRef(false);\n const hasNavbarLarge = useRef(false);\n const hasNavbarLargeCollapsed = useRef(false);\n const hasCardExpandableOpened = useRef(false);\n const routerPositionClass = useRef('');\n const routerPageRole = useRef(null);\n const routerPageRoleDetailRoot = useRef(false);\n const routerPageMasterStack = useRef(false);\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n\n // Main Page Events\n const onPageMounted = page => {\n if (elRef.current !== page.el) return;\n emit(props, 'pageMounted', page);\n };\n const onPageInit = page => {\n if (elRef.current !== page.el) return;\n if (typeof withSubnavbar === 'undefined' && typeof subnavbar === 'undefined') {\n if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length || page.$el.children('.navbar').find('.subnavbar').length) {\n hasSubnavbar.current = true;\n }\n }\n if (typeof withNavbarLarge === 'undefined' && typeof navbarLarge === 'undefined') {\n if (page.$navbarEl && page.$navbarEl.hasClass('navbar-large')) {\n hasNavbarLarge.current = true;\n }\n }\n emit(props, 'pageInit', page);\n };\n const onPageReinit = page => {\n if (elRef.current !== page.el) return;\n emit(props, 'pageReinit', page);\n };\n const onPageBeforeIn = page => {\n if (elRef.current !== page.el) return;\n if (!page.swipeBack) {\n if (page.from === 'next') {\n routerPositionClass.current = 'page-next';\n }\n if (page.from === 'previous') {\n routerPositionClass.current = 'page-previous';\n }\n }\n emit(props, 'pageBeforeIn', page);\n };\n const onPageBeforeOut = page => {\n if (elRef.current !== page.el) return;\n emit(props, 'pageBeforeOut', page);\n };\n const onPageAfterOut = page => {\n if (elRef.current !== page.el) return;\n if (page.to === 'next') {\n routerPositionClass.current = 'page-next';\n }\n if (page.to === 'previous') {\n routerPositionClass.current = 'page-previous';\n }\n emit(props, 'pageAfterOut', page);\n };\n const onPageAfterIn = page => {\n if (elRef.current !== page.el) return;\n routerPositionClass.current = 'page-current';\n emit(props, 'pageAfterIn', page);\n };\n const onPageBeforeRemove = page => {\n if (elRef.current !== page.el) return;\n emit(props, 'pageBeforeRemove', page);\n };\n const onPageBeforeUnmount = page => {\n if (elRef.current !== page.el) return;\n emit(props, 'pageBeforeUnmount', page);\n };\n const onPagePosition = (pageEl, position) => {\n if (elRef.current !== pageEl) return;\n routerPositionClass.current = `page-${position}`;\n };\n const onPageRole = (pageEl, rolesData) => {\n if (elRef.current !== pageEl) return;\n routerPageRole.current = rolesData.role;\n routerPageRoleDetailRoot.current = rolesData.detailRoot;\n };\n const onPageMasterStack = pageEl => {\n if (elRef.current !== pageEl) return;\n routerPageMasterStack.current = true;\n };\n const onPageMasterUnstack = pageEl => {\n if (elRef.current !== pageEl) return;\n routerPageMasterStack.current = false;\n };\n const onPageNavbarLargeCollapsed = pageEl => {\n if (elRef.current !== pageEl) return;\n hasNavbarLargeCollapsed.current = true;\n };\n const onPageNavbarLargeExpanded = pageEl => {\n if (elRef.current !== pageEl) return;\n hasNavbarLargeCollapsed.current = false;\n };\n const onCardOpened = (cardEl, pageEl) => {\n if (elRef.current !== pageEl) return;\n hasCardExpandableOpened.current = true;\n };\n const onCardClose = (cardEl, pageEl) => {\n if (elRef.current !== pageEl) return;\n hasCardExpandableOpened.current = false;\n };\n const onPageTabShow = pageEl => {\n if (elRef.current !== pageEl) return;\n emit(props, 'pageTabShow');\n };\n const onPageTabHide = pageEl => {\n if (elRef.current !== pageEl) return;\n emit(props, 'pageTabHide');\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const attachEvents = () => {\n f7ready(() => {\n f7.on('pageMounted', onPageMounted);\n f7.on('pageInit', onPageInit);\n f7.on('pageReinit', onPageReinit);\n f7.on('pageBeforeIn', onPageBeforeIn);\n f7.on('pageBeforeOut', onPageBeforeOut);\n f7.on('pageAfterOut', onPageAfterOut);\n f7.on('pageAfterIn', onPageAfterIn);\n f7.on('pageBeforeRemove', onPageBeforeRemove);\n f7.on('pageBeforeUnmount', onPageBeforeUnmount);\n f7.on('pagePosition', onPagePosition);\n f7.on('pageRole', onPageRole);\n f7.on('pageMasterStack', onPageMasterStack);\n f7.on('pageMasterUnstack', onPageMasterUnstack);\n f7.on('pageNavbarLargeCollapsed', onPageNavbarLargeCollapsed);\n f7.on('pageNavbarLargeExpanded', onPageNavbarLargeExpanded);\n f7.on('cardOpened', onCardOpened);\n f7.on('cardClose', onCardClose);\n f7.on('pageTabShow', onPageTabShow);\n f7.on('pageTabHide', onPageTabHide);\n });\n };\n const detachEvents = () => {\n if (!f7) return;\n f7.off('pageMounted', onPageMounted);\n f7.off('pageInit', onPageInit);\n f7.off('pageReinit', onPageReinit);\n f7.off('pageBeforeIn', onPageBeforeIn);\n f7.off('pageBeforeOut', onPageBeforeOut);\n f7.off('pageAfterOut', onPageAfterOut);\n f7.off('pageAfterIn', onPageAfterIn);\n f7.off('pageBeforeRemove', onPageBeforeRemove);\n f7.off('pageBeforeUnmount', onPageBeforeUnmount);\n f7.off('pagePosition', onPagePosition);\n f7.off('pageRole', onPageRole);\n f7.off('pageMasterStack', onPageMasterStack);\n f7.off('pageMasterUnstack', onPageMasterUnstack);\n f7.off('pageNavbarLargeCollapsed', onPageNavbarLargeCollapsed);\n f7.off('pageNavbarLargeExpanded', onPageNavbarLargeExpanded);\n f7.off('cardOpened', onCardOpened);\n f7.off('cardClose', onCardClose);\n f7.off('pageTabShow', onPageTabShow);\n f7.off('pageTabHide', onPageTabHide);\n };\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n return detachEvents;\n });\n const slots = getSlots(props);\n const fixedList = [];\n const staticList = [];\n const {\n static: slotsStatic,\n fixed: slotsFixed,\n default: slotsDefault\n } = slots;\n const fixedTags = 'navbar toolbar tabbar subnavbar searchbar messagebar fab list-index panel'.split(' ').map(tagName => `f7-${tagName}`);\n let hasSubnavbarComputed;\n let hasNavbarLargeComputed;\n let hasMessages = messagesContent;\n if (slotsDefault) {\n slotsDefault.forEach(child => {\n if (typeof child === 'undefined') return;\n let isFixedTag = false;\n const tag = child.type && (child.type.displayName || child.type.name);\n if (!tag) {\n if (pageContent) staticList.push(child);\n return;\n }\n if (tag === 'f7-subnavbar') hasSubnavbarComputed = true;\n if (tag === 'f7-navbar') {\n if (child.props && child.props.large) hasNavbarLargeComputed = true;\n }\n if (typeof hasMessages === 'undefined' && tag === 'f7-messages') hasMessages = true;\n if (fixedTags.indexOf(tag) >= 0) {\n isFixedTag = true;\n }\n if (pageContent) {\n if (isFixedTag) fixedList.push(child);else staticList.push(child);\n }\n });\n }\n const forceSubnavbar = typeof subnavbar === 'undefined' && typeof withSubnavbar === 'undefined' ? hasSubnavbarComputed || hasSubnavbar.current : false;\n const forceNavbarLarge = typeof navbarLarge === 'undefined' && typeof withNavbarLarge === 'undefined' ? hasNavbarLargeComputed || hasNavbarLarge.current : false;\n const classes = classNames(className, 'page', routerPositionClass.current, {\n tabs,\n 'page-with-subnavbar': subnavbar || withSubnavbar || forceSubnavbar,\n 'page-with-navbar-large': navbarLarge || withNavbarLarge || forceNavbarLarge,\n 'no-navbar': noNavbar,\n 'no-toolbar': noToolbar,\n 'no-swipeback': noSwipeback,\n 'page-master': routerPageRole.current === 'master',\n 'page-master-detail': routerPageRole.current === 'detail',\n 'page-master-detail-root': routerPageRoleDetailRoot.current === true,\n 'page-master-stacked': routerPageMasterStack.current === true,\n 'page-with-navbar-large-collapsed': hasNavbarLargeCollapsed.current === true,\n 'page-with-card-opened': hasCardExpandableOpened.current === true,\n 'login-screen-page': loginScreen\n }, colorClasses(props));\n if (!pageContent) {\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n \"data-name\": name,\n ref: elRef\n }, extraAttrs), slotsFixed, slotsStatic, slotsDefault);\n }\n const pageContentEl = /*#__PURE__*/React.createElement(PageContent, {\n ptr: ptr,\n ptrDistance: ptrDistance,\n ptrPreloader: ptrPreloader,\n ptrBottom: ptrBottom,\n ptrMousewheel: ptrMousewheel,\n infinite: infinite,\n infiniteTop: infiniteTop,\n infiniteDistance: infiniteDistance,\n infinitePreloader: infinitePreloader,\n hideBarsOnScroll: hideBarsOnScroll,\n hideNavbarOnScroll: hideNavbarOnScroll,\n hideToolbarOnScroll: hideToolbarOnScroll,\n messagesContent: messagesContent || hasMessages,\n loginScreen: loginScreen,\n onPtrPullStart: onPtrPullStart,\n onPtrPullMove: onPtrPullMove,\n onPtrPullEnd: onPtrPullEnd,\n onPtrRefresh: onPtrRefresh,\n onPtrDone: onPtrDone,\n onInfinite: onInfinite\n }, slotsStatic, staticList);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n \"data-name\": name,\n ref: elRef\n }, extraAttrs), fixedList, slotsFixed, pageContentEl);\n});\nPage.displayName = 'f7-page';\nexport default Page;","import { useEffect, useRef } from 'react';\nimport { watchProp } from './watch-prop.js';\nimport { f7, f7ready } from './f7.js';\nexport const useTooltip = (elRef, props) => {\n const f7Tooltip = useRef(null);\n const {\n tooltip,\n tooltipTrigger\n } = props;\n const onMount = () => {\n if (!elRef.current) return;\n if (!tooltip) return;\n f7ready(() => {\n f7Tooltip.current = f7.tooltip.create({\n targetEl: elRef.current,\n text: tooltip,\n trigger: tooltipTrigger\n });\n });\n };\n const onDestroy = () => {\n if (f7Tooltip.current && f7Tooltip.current.destroy) {\n f7Tooltip.current.destroy();\n f7Tooltip.current = null;\n }\n };\n useEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n watchProp(tooltip, value => {\n if (!value && f7Tooltip.current) {\n f7Tooltip.current.destroy();\n f7Tooltip.current = null;\n return;\n }\n if (value && !f7Tooltip.current && f7) {\n f7Tooltip.current = f7.tooltip.create({\n targetEl: elRef.current,\n text: value,\n trigger: tooltipTrigger\n });\n return;\n }\n if (!value || !f7Tooltip.current) return;\n f7Tooltip.current.setText(value);\n });\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs, extend } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { useTooltip } from '../shared/use-tooltip.js';\nimport { useTheme } from '../shared/use-theme.js';\n\n\nconst Icon = /*#__PURE__*/forwardRef((props, ref) => {\n const theme = useTheme();\n const {\n className,\n id,\n style,\n children,\n material,\n f7,\n icon,\n md,\n ios,\n size\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n useTooltip(elRef, props);\n const getClasses = () => {\n let classes = {\n icon: true\n };\n let themeIcon;\n if (theme && theme.ios) themeIcon = ios;else if (theme && theme.md) themeIcon = md;\n if (themeIcon) {\n const parts = themeIcon.split(':');\n const prop = parts[0];\n const value = parts[1];\n if (prop === 'material' || prop === 'f7') {\n classes['material-icons'] = prop === 'material';\n classes['f7-icons'] = prop === 'f7';\n }\n if (prop === 'icon') {\n classes[value] = true;\n }\n if (icon) classes[icon] = true;\n } else {\n classes = {\n icon: true,\n 'material-icons': material,\n 'f7-icons': f7\n };\n if (icon) classes[icon] = true;\n }\n return classNames(className, classes, colorClasses(props));\n };\n const getIconText = () => {\n let text = material || f7;\n if (md && theme && theme.md && (md.indexOf('material:') >= 0 || md.indexOf('f7:') >= 0)) {\n text = md.split(':')[1];\n } else if (ios && theme && theme.ios && (ios.indexOf('material:') >= 0 || ios.indexOf('f7:') >= 0)) {\n text = ios.split(':')[1];\n }\n return text;\n };\n let sizeComputed = size;\n if (typeof size === 'number' || parseFloat(size) === size * 1) {\n sizeComputed = `${size}px`;\n }\n return /*#__PURE__*/React.createElement(\"i\", _extends({\n id: id,\n style: extend({\n fontSize: sizeComputed,\n width: sizeComputed,\n height: sizeComputed\n }, style),\n className: getClasses(),\n ref: elRef\n }, extraAttrs), getIconText(), children);\n});\nIcon.displayName = 'f7-icon';\nexport default Icon;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { useTooltip } from '../shared/use-tooltip.js';\n\n\n/* dts-instance\nf7Tooltip: Tooltip.Tooltip\n*/\n\n\nconst Badge = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n useTooltip(elRef, props);\n const classes = classNames(className, 'badge', colorClasses(props));\n return /*#__PURE__*/React.createElement(\"span\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children);\n});\nBadge.displayName = 'f7-badge';\nexport default Badge;","import React from 'react';\nimport Icon from '../components/icon.js';\nimport Badge from '../components/badge.js';\nexport const useIcon = function (props) {\n if (props === void 0) {\n props = {};\n }\n const {\n icon,\n iconMaterial,\n iconF7,\n iconMd,\n iconIos,\n iconColor,\n iconSize,\n iconBadge,\n badgeColor,\n iconBadgeColor\n } = props;\n if (icon || iconMaterial || iconF7 || iconMd || iconIos) {\n return /*#__PURE__*/React.createElement(Icon, {\n material: iconMaterial,\n f7: iconF7,\n icon: icon,\n md: iconMd,\n ios: iconIos,\n color: iconColor,\n size: iconSize\n }, (iconBadge || iconBadge === 0) && /*#__PURE__*/React.createElement(Badge, {\n color: badgeColor || iconBadgeColor\n }, iconBadge));\n }\n return null;\n};","import { useEffect } from 'react';\nexport const useRouteProps = function (elRef, _temp) {\n let {\n routeProps\n } = _temp === void 0 ? {} : _temp;\n useEffect(() => {\n if (elRef.current) {\n elRef.current.f7RouteProps = routeProps;\n }\n return () => {\n if (elRef.current && elRef.current.f7RouteProps) {\n delete elRef.current.f7RouteProps;\n }\n };\n }, [routeProps]);\n};","import React from 'react';\nconst TabbarContext = /*#__PURE__*/React.createContext({\n tabbarHasIcons: false\n});\nexport { TabbarContext };","import { useEffect } from 'react';\nimport { f7ready, f7 } from './f7.js';\nimport { extend } from './utils.js';\nexport const useSmartSelect = (smartSelect, smartSelectParams, f7SmartSelect, getEl) => {\n const onMount = () => {\n f7ready(() => {\n if (smartSelect) {\n const ssParams = extend({\n el: getEl()\n }, smartSelectParams || {});\n f7SmartSelect.current = f7.smartSelect.create(ssParams);\n }\n });\n };\n const onDestroy = () => {\n if (f7SmartSelect.current && f7SmartSelect.current.destroy) {\n f7SmartSelect.current.destroy();\n }\n f7SmartSelect.current = null;\n };\n useEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle, useContext } from 'react';\nimport { classNames, getExtraAttrs, isStringProp, emit } from '../shared/utils.js';\nimport { colorClasses, routerAttrs, routerClasses, actionsAttrs, actionsClasses } from '../shared/mixins.js';\nimport { useIcon } from '../shared/use-icon.js';\nimport { useRouteProps } from '../shared/use-route-props.js';\nimport { useTooltip } from '../shared/use-tooltip.js';\nimport { TabbarContext } from '../shared/tabbar-context.js';\nimport Badge from './badge.js';\nimport { useSmartSelect } from '../shared/use-smart-select.js';\n\n\n\nconst Link = /*#__PURE__*/forwardRef((props, ref) => {\n const f7SmartSelect = useRef(null);\n const {\n className,\n id,\n style,\n children,\n noLinkClass,\n text,\n tabLink,\n tabLinkActive,\n tabbarLabel,\n iconOnly,\n badge,\n badgeColor,\n href = '#',\n target,\n // Smart Select\n smartSelect,\n smartSelectParams\n } = props;\n const tabbarContext = useContext(TabbarContext);\n const isTabbarIcons = tabbarLabel || tabbarContext.tabbarHasIcons;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const onClick = e => {\n emit(props, 'click', e);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7SmartSelect: () => f7SmartSelect.current\n }));\n useTooltip(elRef, props);\n useRouteProps(elRef, props);\n useSmartSelect(smartSelect, smartSelectParams, f7SmartSelect, () => {\n return elRef.current;\n });\n let textEl;\n let badgeEl;\n if (text) {\n if (badge) badgeEl = /*#__PURE__*/React.createElement(Badge, {\n color: badgeColor\n }, badge);\n textEl = /*#__PURE__*/React.createElement(\"span\", {\n className: isTabbarIcons ? 'tabbar-label' : ''\n }, text, badgeEl);\n }\n const iconEl = useIcon(props);\n let iconOnlyComputed;\n if (iconOnly || !text && children && children.length === 0 || !text && !children) {\n iconOnlyComputed = true;\n } else {\n iconOnlyComputed = false;\n }\n const classes = classNames(className, {\n link: !(noLinkClass || isTabbarIcons),\n 'icon-only': iconOnlyComputed,\n 'tab-link': tabLink || tabLink === '',\n 'tab-link-active': tabLinkActive,\n 'smart-select': smartSelect\n }, colorClasses(props), routerClasses(props), actionsClasses(props));\n let hrefComputed = href;\n if (href === true) hrefComputed = '#';\n if (href === false) hrefComputed = undefined; // no href attribute\n const attrs = {\n href: hrefComputed,\n target,\n 'data-tab': isStringProp(tabLink) && tabLink || undefined,\n ...routerAttrs(props),\n ...actionsAttrs(props)\n };\n return /*#__PURE__*/React.createElement(\"a\", _extends({\n ref: elRef,\n id: id,\n style: style,\n className: classes\n }, attrs, extraAttrs, {\n onClick: onClick\n }), iconEl, textEl, children);\n});\nLink.displayName = 'f7-link';\nexport default Link;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { useTheme } from '../shared/use-theme.js';\nimport Link from './link.js';\n\n\nconst NavLeft = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n backLink,\n backLinkUrl,\n backLinkForce,\n backLinkShowText,\n sliding\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const onBackClick = event => {\n emit(props, 'backClick clickBack', event);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const theme = useTheme();\n let linkEl;\n let needBackLinkText = backLinkShowText;\n if (typeof needBackLinkText === 'undefined') needBackLinkText = !theme.md;\n if (backLink) {\n const text = backLink !== true && needBackLinkText ? backLink : undefined;\n linkEl = /*#__PURE__*/React.createElement(Link, {\n href: backLinkUrl || '#',\n back: true,\n icon: \"icon-back\",\n force: backLinkForce || undefined,\n className: !text ? 'icon-only' : undefined,\n text: text,\n onClick: onBackClick\n });\n }\n const classes = classNames(className, 'left', {\n sliding\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), linkEl, children);\n});\nNavLeft.displayName = 'f7-nav-left';\nexport default NavLeft;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\n\n\nconst NavTitle = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n title,\n subtitle,\n sliding\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n let subtitleEl;\n if (subtitle) {\n subtitleEl = /*#__PURE__*/React.createElement(\"span\", {\n className: \"subtitle\"\n }, subtitle);\n }\n const classes = classNames(className, 'title', {\n sliding\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children, title, subtitleEl);\n});\nNavTitle.displayName = 'f7-nav-title';\nexport default NavTitle;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\n\n\nconst NavRight = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n sliding\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const classes = classNames(className, 'right', {\n sliding\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children);\n});\nNavRight.displayName = 'f7-nav-right';\nexport default NavRight;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit, getSlots } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { useTheme } from '../shared/use-theme.js';\nimport NavLeft from './nav-left.js';\nimport NavTitle from './nav-title.js';\nimport NavRight from './nav-right.js';\n\n\nconst Navbar = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n sliding = true,\n large,\n largeTransparent,\n transparent,\n hidden,\n outline = true,\n backLink,\n backLinkForce,\n backLinkUrl,\n backLinkShowText,\n title,\n subtitle,\n titleLarge,\n innerClass,\n innerClassName\n } = props;\n const routerPositionClass = useRef('');\n const largeCollapsed = useRef(false);\n const routerNavbarRole = useRef(null);\n const routerNavbarRoleDetailRoot = useRef(false);\n const routerNavbarMasterStack = useRef(false);\n const transparentVisible = useRef(false);\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const theme = useTheme();\n const onHide = navbarEl => {\n if (elRef.current !== navbarEl) return;\n emit(props, 'navbarHide');\n };\n const onShow = navbarEl => {\n if (elRef.current !== navbarEl) return;\n emit(props, 'navbarShow');\n };\n const onExpand = navbarEl => {\n if (elRef.current !== navbarEl) return;\n largeCollapsed.current = false;\n emit(props, 'navbarExpand');\n };\n const onCollapse = navbarEl => {\n if (elRef.current !== navbarEl) return;\n largeCollapsed.current = true;\n emit(props, 'navbarCollapse');\n };\n const onNavbarTransparentShow = navbarEl => {\n if (elRef.current !== navbarEl) return;\n transparentVisible.current = true;\n emit(props, 'navbarTransparentShow');\n };\n const onNavbarTransparentHide = navbarEl => {\n if (elRef.current !== navbarEl) return;\n transparentVisible.current = false;\n emit(props, 'navbarTransparentHide');\n };\n const onNavbarPosition = (navbarEl, position) => {\n if (elRef.current !== navbarEl) return;\n routerPositionClass.current = position ? `navbar-${position}` : '';\n };\n const onNavbarRole = (navbarEl, rolesData) => {\n if (elRef.current !== navbarEl) return;\n routerNavbarRole.current = rolesData.role;\n routerNavbarRoleDetailRoot.current = rolesData.detailRoot;\n };\n const onNavbarMasterStack = navbarEl => {\n if (elRef.current !== navbarEl) return;\n routerNavbarMasterStack.current = true;\n };\n const onNavbarMasterUnstack = navbarEl => {\n if (elRef.current !== navbarEl) return;\n routerNavbarMasterStack.current = false;\n };\n const hide = animate => {\n if (!f7) return;\n f7.navbar.hide(elRef.current, animate);\n };\n const show = animate => {\n if (!f7) return;\n f7.navbar.show(elRef.current, animate);\n };\n const size = () => {\n if (!f7) return;\n f7.navbar.size(elRef.current);\n };\n const onBackClick = event => {\n emit(props, 'backClick clickBack', event);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n hide,\n show,\n size\n }));\n const attachEvents = () => {\n if (!elRef.current) return;\n f7ready(() => {\n f7.navbar.size(elRef.current);\n f7.on('navbarShow', onShow);\n f7.on('navbarHide', onHide);\n f7.on('navbarCollapse', onCollapse);\n f7.on('navbarExpand', onExpand);\n f7.on('navbarPosition', onNavbarPosition);\n f7.on('navbarRole', onNavbarRole);\n f7.on('navbarMasterStack', onNavbarMasterStack);\n f7.on('navbarMasterUnstack', onNavbarMasterUnstack);\n f7.on('navbarTransparentShow', onNavbarTransparentShow);\n f7.on('navbarTransparentHide', onNavbarTransparentHide);\n });\n };\n const detachEvents = () => {\n if (!f7) return;\n f7.off('navbarShow', onShow);\n f7.off('navbarHide', onHide);\n f7.off('navbarCollapse', onCollapse);\n f7.off('navbarExpand', onExpand);\n f7.off('navbarPosition', onNavbarPosition);\n f7.off('navbarRole', onNavbarRole);\n f7.off('navbarMasterStack', onNavbarMasterStack);\n f7.off('navbarMasterUnstack', onNavbarMasterUnstack);\n f7.off('navbarTransparentShow', onNavbarTransparentShow);\n f7.off('navbarTransparentHide', onNavbarTransparentHide);\n };\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n return detachEvents;\n });\n const slots = getSlots(props);\n let leftEl;\n let titleEl;\n let rightEl;\n let titleLargeEl;\n const addLeftTitleClass = theme && theme.ios && f7 && !f7.params.navbar.iosCenterTitle;\n const addCenterTitleClass = theme && theme.md && f7 && f7.params.navbar.mdCenterTitle;\n const isLarge = large || largeTransparent;\n const isTransparent = transparent || isLarge && largeTransparent;\n const isTransparentVisible = isTransparent && transparentVisible.current;\n const classes = classNames(className, 'navbar', routerPositionClass.current, {\n 'navbar-hidden': hidden,\n 'navbar-large': isLarge,\n 'navbar-large-collapsed': isLarge && largeCollapsed.current,\n 'navbar-transparent': isTransparent,\n 'navbar-transparent-visible': isTransparentVisible,\n 'navbar-master': routerNavbarRole.current === 'master',\n 'navbar-master-detail': routerNavbarRole.current === 'detail',\n 'navbar-master-detail-root': routerNavbarRoleDetailRoot.current === true,\n 'navbar-master-stacked': routerNavbarMasterStack.current === true,\n 'no-outline': !outline\n }, colorClasses(props));\n if (backLink || slots['nav-left'] || slots.left) {\n leftEl = /*#__PURE__*/React.createElement(NavLeft, {\n backLink: backLink,\n backLinkUrl: backLinkUrl,\n backLinkForce: backLinkForce,\n backLinkShowText: backLinkShowText,\n onBackClick: onBackClick\n }, slots['nav-left'], slots.left);\n }\n if (title || subtitle || slots.title) {\n titleEl = /*#__PURE__*/React.createElement(NavTitle, {\n title: title,\n subtitle: subtitle\n }, slots.title);\n }\n if (slots['nav-right'] || slots.right) {\n rightEl = /*#__PURE__*/React.createElement(NavRight, null, slots['nav-right'], slots.right);\n }\n let largeTitle = titleLarge;\n if (!largeTitle && large && title) largeTitle = title;\n if (largeTitle || slots['title-large']) {\n titleLargeEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"title-large\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"title-large-text\"\n }, largeTitle || '', slots['title-large']));\n }\n const innerEl = /*#__PURE__*/React.createElement(\"div\", {\n className: classNames('navbar-inner', innerClass, innerClassName, {\n sliding,\n 'navbar-inner-left-title': addLeftTitleClass,\n 'navbar-inner-centered-title': addCenterTitleClass\n })\n }, leftEl, titleEl, rightEl, titleLargeEl, slots.default);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), /*#__PURE__*/React.createElement(\"div\", {\n className: \"navbar-bg\"\n }), slots['before-inner'], innerEl, slots['after-inner']);\n});\nNavbar.displayName = 'f7-navbar';\nexport default Navbar;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\n\n\nconst Subnavbar = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n inner = true,\n title,\n sliding\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const classes = classNames(className, 'subnavbar', {\n sliding\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: classes,\n id: id,\n style: style,\n ref: elRef\n }, extraAttrs), inner ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"subnavbar-inner\"\n }, title && /*#__PURE__*/React.createElement(\"div\", {\n className: \"subnavbar-title\"\n }, title), children) : children);\n});\nSubnavbar.displayName = 'f7-subnavbar';\nexport default Subnavbar;","var niceErrors = {\n 0: \"Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'\",\n 1: function _(annotationType, key) {\n return \"Cannot apply '\" + annotationType + \"' to '\" + key.toString() + \"': Field not found.\";\n },\n /*\n 2(prop) {\n return `invalid decorator for '${prop.toString()}'`\n },\n 3(prop) {\n return `Cannot decorate '${prop.toString()}': action can only be used on properties with a function value.`\n },\n 4(prop) {\n return `Cannot decorate '${prop.toString()}': computed can only be used on getter properties.`\n },\n */\n 5: \"'keys()' can only be used on observable objects, arrays, sets and maps\",\n 6: \"'values()' can only be used on observable objects, arrays, sets and maps\",\n 7: \"'entries()' can only be used on observable objects, arrays and maps\",\n 8: \"'set()' can only be used on observable objects, arrays and maps\",\n 9: \"'remove()' can only be used on observable objects, arrays and maps\",\n 10: \"'has()' can only be used on observable objects, arrays and maps\",\n 11: \"'get()' can only be used on observable objects, arrays and maps\",\n 12: \"Invalid annotation\",\n 13: \"Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)\",\n 14: \"Intercept handlers should return nothing or a change object\",\n 15: \"Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)\",\n 16: \"Modification exception: the internal structure of an observable array was changed.\",\n 17: function _(index, length) {\n return \"[mobx.array] Index out of bounds, \" + index + \" is larger than \" + length;\n },\n 18: \"mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js\",\n 19: function _(other) {\n return \"Cannot initialize from classes that inherit from Map: \" + other.constructor.name;\n },\n 20: function _(other) {\n return \"Cannot initialize map from \" + other;\n },\n 21: function _(dataStructure) {\n return \"Cannot convert to map from '\" + dataStructure + \"'\";\n },\n 22: \"mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js\",\n 23: \"It is not possible to get index atoms from arrays\",\n 24: function _(thing) {\n return \"Cannot obtain administration from \" + thing;\n },\n 25: function _(property, name) {\n return \"the entry '\" + property + \"' does not exist in the observable map '\" + name + \"'\";\n },\n 26: \"please specify a property\",\n 27: function _(property, name) {\n return \"no observable property '\" + property.toString() + \"' found on the observable object '\" + name + \"'\";\n },\n 28: function _(thing) {\n return \"Cannot obtain atom from \" + thing;\n },\n 29: \"Expecting some object\",\n 30: \"invalid action stack. did you forget to finish an action?\",\n 31: \"missing option for computed: get\",\n 32: function _(name, derivation) {\n return \"Cycle detected in computation \" + name + \": \" + derivation;\n },\n 33: function _(name) {\n return \"The setter of computed value '\" + name + \"' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?\";\n },\n 34: function _(name) {\n return \"[ComputedValue '\" + name + \"'] It is not possible to assign a new value to a computed value.\";\n },\n 35: \"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`\",\n 36: \"isolateGlobalState should be called before MobX is running any reactions\",\n 37: function _(method) {\n return \"[mobx] `observableArray.\" + method + \"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice().\" + method + \"()` instead\";\n },\n 38: \"'ownKeys()' can only be used on observable objects\",\n 39: \"'defineProperty()' can only be used on observable objects\"\n};\nvar errors = process.env.NODE_ENV !== \"production\" ? niceErrors : {};\nfunction die(error) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (process.env.NODE_ENV !== \"production\") {\n var e = typeof error === \"string\" ? error : errors[error];\n if (typeof e === \"function\") e = e.apply(null, args);\n throw new Error(\"[MobX] \" + e);\n }\n throw new Error(typeof error === \"number\" ? \"[MobX] minified error nr: \" + error + (args.length ? \" \" + args.map(String).join(\",\") : \"\") + \". Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts\" : \"[MobX] \" + error);\n}\n\nvar mockGlobal = {};\nfunction getGlobal() {\n if (typeof globalThis !== \"undefined\") {\n return globalThis;\n }\n if (typeof window !== \"undefined\") {\n return window;\n }\n if (typeof global !== \"undefined\") {\n return global;\n }\n if (typeof self !== \"undefined\") {\n return self;\n }\n return mockGlobal;\n}\n\n// We shorten anything used > 5 times\nvar assign = Object.assign;\nvar getDescriptor = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar objectPrototype = Object.prototype;\nvar EMPTY_ARRAY = [];\nObject.freeze(EMPTY_ARRAY);\nvar EMPTY_OBJECT = {};\nObject.freeze(EMPTY_OBJECT);\nvar hasProxy = typeof Proxy !== \"undefined\";\nvar plainObjectString = /*#__PURE__*/Object.toString();\nfunction assertProxies() {\n if (!hasProxy) {\n die(process.env.NODE_ENV !== \"production\" ? \"`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`\" : \"Proxy not available\");\n }\n}\nfunction warnAboutProxyRequirement(msg) {\n if (process.env.NODE_ENV !== \"production\" && globalState.verifyProxies) {\n die(\"MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to \" + msg);\n }\n}\nfunction getNextId() {\n return ++globalState.mobxGuid;\n}\n/**\n * Makes sure that the provided function is invoked at most once.\n */\nfunction once(func) {\n var invoked = false;\n return function () {\n if (invoked) {\n return;\n }\n invoked = true;\n return func.apply(this, arguments);\n };\n}\nvar noop = function noop() {};\nfunction isFunction(fn) {\n return typeof fn === \"function\";\n}\nfunction isStringish(value) {\n var t = typeof value;\n switch (t) {\n case \"string\":\n case \"symbol\":\n case \"number\":\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && typeof value === \"object\";\n}\nfunction isPlainObject(value) {\n if (!isObject(value)) {\n return false;\n }\n var proto = Object.getPrototypeOf(value);\n if (proto == null) {\n return true;\n }\n var protoConstructor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof protoConstructor === \"function\" && protoConstructor.toString() === plainObjectString;\n}\n// https://stackoverflow.com/a/37865170\nfunction isGenerator(obj) {\n var constructor = obj == null ? void 0 : obj.constructor;\n if (!constructor) {\n return false;\n }\n if (\"GeneratorFunction\" === constructor.name || \"GeneratorFunction\" === constructor.displayName) {\n return true;\n }\n return false;\n}\nfunction addHiddenProp(object, propName, value) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: true,\n configurable: true,\n value: value\n });\n}\nfunction addHiddenFinalProp(object, propName, value) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: false,\n configurable: true,\n value: value\n });\n}\nfunction createInstanceofPredicate(name, theClass) {\n var propName = \"isMobX\" + name;\n theClass.prototype[propName] = true;\n return function (x) {\n return isObject(x) && x[propName] === true;\n };\n}\nfunction isES6Map(thing) {\n return thing instanceof Map;\n}\nfunction isES6Set(thing) {\n return thing instanceof Set;\n}\nvar hasGetOwnPropertySymbols = typeof Object.getOwnPropertySymbols !== \"undefined\";\n/**\n * Returns the following: own enumerable keys and symbols.\n */\nfunction getPlainObjectKeys(object) {\n var keys = Object.keys(object);\n // Not supported in IE, so there are not going to be symbol props anyway...\n if (!hasGetOwnPropertySymbols) {\n return keys;\n }\n var symbols = Object.getOwnPropertySymbols(object);\n if (!symbols.length) {\n return keys;\n }\n return [].concat(keys, symbols.filter(function (s) {\n return objectPrototype.propertyIsEnumerable.call(object, s);\n }));\n}\n// From Immer utils\n// Returns all own keys, including non-enumerable and symbolic\nvar ownKeys = typeof Reflect !== \"undefined\" && Reflect.ownKeys ? Reflect.ownKeys : hasGetOwnPropertySymbols ? function (obj) {\n return Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj));\n} : /* istanbul ignore next */Object.getOwnPropertyNames;\nfunction stringifyKey(key) {\n if (typeof key === \"string\") {\n return key;\n }\n if (typeof key === \"symbol\") {\n return key.toString();\n }\n return new String(key).toString();\n}\nfunction toPrimitive(value) {\n return value === null ? null : typeof value === \"object\" ? \"\" + value : value;\n}\nfunction hasProp(target, prop) {\n return objectPrototype.hasOwnProperty.call(target, prop);\n}\n// From Immer utils\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || function getOwnPropertyDescriptors(target) {\n // Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n var res = {};\n // Note: without polyfill for ownKeys, symbols won't be picked up\n ownKeys(target).forEach(function (key) {\n res[key] = getDescriptor(target, key);\n });\n return res;\n};\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nvar storedAnnotationsSymbol = /*#__PURE__*/Symbol(\"mobx-stored-annotations\");\n/**\n * Creates a function that acts as\n * - decorator\n * - annotation object\n */\nfunction createDecoratorAnnotation(annotation) {\n function decorator(target, property) {\n if (is20223Decorator(property)) {\n return annotation.decorate_20223_(target, property);\n } else {\n storeAnnotation(target, property, annotation);\n }\n }\n return Object.assign(decorator, annotation);\n}\n/**\n * Stores annotation to prototype,\n * so it can be inspected later by `makeObservable` called from constructor\n */\nfunction storeAnnotation(prototype, key, annotation) {\n if (!hasProp(prototype, storedAnnotationsSymbol)) {\n addHiddenProp(prototype, storedAnnotationsSymbol, _extends({}, prototype[storedAnnotationsSymbol]));\n }\n // @override must override something\n if (process.env.NODE_ENV !== \"production\" && isOverride(annotation) && !hasProp(prototype[storedAnnotationsSymbol], key)) {\n var fieldName = prototype.constructor.name + \".prototype.\" + key.toString();\n die(\"'\" + fieldName + \"' is decorated with 'override', \" + \"but no such decorated member was found on prototype.\");\n }\n // Cannot re-decorate\n assertNotDecorated(prototype, annotation, key);\n // Ignore override\n if (!isOverride(annotation)) {\n prototype[storedAnnotationsSymbol][key] = annotation;\n }\n}\nfunction assertNotDecorated(prototype, annotation, key) {\n if (process.env.NODE_ENV !== \"production\" && !isOverride(annotation) && hasProp(prototype[storedAnnotationsSymbol], key)) {\n var fieldName = prototype.constructor.name + \".prototype.\" + key.toString();\n var currentAnnotationType = prototype[storedAnnotationsSymbol][key].annotationType_;\n var requestedAnnotationType = annotation.annotationType_;\n die(\"Cannot apply '@\" + requestedAnnotationType + \"' to '\" + fieldName + \"':\" + (\"\\nThe field is already decorated with '@\" + currentAnnotationType + \"'.\") + \"\\nRe-decorating fields is not allowed.\" + \"\\nUse '@override' decorator for methods overridden by subclass.\");\n }\n}\n/**\n * Collects annotations from prototypes and stores them on target (instance)\n */\nfunction collectStoredAnnotations(target) {\n if (!hasProp(target, storedAnnotationsSymbol)) {\n // if (__DEV__ && !target[storedAnnotationsSymbol]) {\n // die(\n // `No annotations were passed to makeObservable, but no decorated members have been found either`\n // )\n // }\n // We need a copy as we will remove annotation from the list once it's applied.\n addHiddenProp(target, storedAnnotationsSymbol, _extends({}, target[storedAnnotationsSymbol]));\n }\n return target[storedAnnotationsSymbol];\n}\nfunction is20223Decorator(context) {\n return typeof context == \"object\" && typeof context[\"kind\"] == \"string\";\n}\nfunction assert20223DecoratorType(context, types) {\n if (process.env.NODE_ENV !== \"production\" && !types.includes(context.kind)) {\n die(\"The decorator applied to '\" + String(context.name) + \"' cannot be used on a \" + context.kind + \" element\");\n }\n}\n\nvar $mobx = /*#__PURE__*/Symbol(\"mobx administration\");\nvar Atom = /*#__PURE__*/function () {\n // for effective unobserving. BaseAtom has true, for extra optimization, so its onBecomeUnobserved never gets called, because it's not needed\n\n /**\n * Create a new atom. For debugging purposes it is recommended to give it a name.\n * The onBecomeObserved and onBecomeUnobserved callbacks can be used for resource management.\n */\n function Atom(name_) {\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"Atom@\" + getNextId() : \"Atom\";\n }\n this.name_ = void 0;\n this.isPendingUnobservation_ = false;\n this.isBeingObserved_ = false;\n this.observers_ = new Set();\n this.diffValue_ = 0;\n this.lastAccessedBy_ = 0;\n this.lowestObserverState_ = IDerivationState_.NOT_TRACKING_;\n this.onBOL = void 0;\n this.onBUOL = void 0;\n this.name_ = name_;\n }\n // onBecomeObservedListeners\n var _proto = Atom.prototype;\n _proto.onBO = function onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(function (listener) {\n return listener();\n });\n }\n };\n _proto.onBUO = function onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(function (listener) {\n return listener();\n });\n }\n }\n /**\n * Invoke this method to notify mobx that your atom has been used somehow.\n * Returns true if there is currently a reactive context.\n */;\n _proto.reportObserved = function reportObserved$1() {\n return reportObserved(this);\n }\n /**\n * Invoke this method _after_ this method has changed to signal mobx that all its observers should invalidate.\n */;\n _proto.reportChanged = function reportChanged() {\n startBatch();\n propagateChanged(this);\n endBatch();\n };\n _proto.toString = function toString() {\n return this.name_;\n };\n return Atom;\n}();\nvar isAtom = /*#__PURE__*/createInstanceofPredicate(\"Atom\", Atom);\nfunction createAtom(name, onBecomeObservedHandler, onBecomeUnobservedHandler) {\n if (onBecomeObservedHandler === void 0) {\n onBecomeObservedHandler = noop;\n }\n if (onBecomeUnobservedHandler === void 0) {\n onBecomeUnobservedHandler = noop;\n }\n var atom = new Atom(name);\n // default `noop` listener will not initialize the hook Set\n if (onBecomeObservedHandler !== noop) {\n onBecomeObserved(atom, onBecomeObservedHandler);\n }\n if (onBecomeUnobservedHandler !== noop) {\n onBecomeUnobserved(atom, onBecomeUnobservedHandler);\n }\n return atom;\n}\n\nfunction identityComparer(a, b) {\n return a === b;\n}\nfunction structuralComparer(a, b) {\n return deepEqual(a, b);\n}\nfunction shallowComparer(a, b) {\n return deepEqual(a, b, 1);\n}\nfunction defaultComparer(a, b) {\n if (Object.is) {\n return Object.is(a, b);\n }\n return a === b ? a !== 0 || 1 / a === 1 / b : a !== a && b !== b;\n}\nvar comparer = {\n identity: identityComparer,\n structural: structuralComparer,\n \"default\": defaultComparer,\n shallow: shallowComparer\n};\n\nfunction deepEnhancer(v, _, name) {\n // it is an observable already, done\n if (isObservable(v)) {\n return v;\n }\n // something that can be converted and mutated?\n if (Array.isArray(v)) {\n return observable.array(v, {\n name: name\n });\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, {\n name: name\n });\n }\n if (isES6Map(v)) {\n return observable.map(v, {\n name: name\n });\n }\n if (isES6Set(v)) {\n return observable.set(v, {\n name: name\n });\n }\n if (typeof v === \"function\" && !isAction(v) && !isFlow(v)) {\n if (isGenerator(v)) {\n return flow(v);\n } else {\n return autoAction(name, v);\n }\n }\n return v;\n}\nfunction shallowEnhancer(v, _, name) {\n if (v === undefined || v === null) {\n return v;\n }\n if (isObservableObject(v) || isObservableArray(v) || isObservableMap(v) || isObservableSet(v)) {\n return v;\n }\n if (Array.isArray(v)) {\n return observable.array(v, {\n name: name,\n deep: false\n });\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, {\n name: name,\n deep: false\n });\n }\n if (isES6Map(v)) {\n return observable.map(v, {\n name: name,\n deep: false\n });\n }\n if (isES6Set(v)) {\n return observable.set(v, {\n name: name,\n deep: false\n });\n }\n if (process.env.NODE_ENV !== \"production\") {\n die(\"The shallow modifier / decorator can only used in combination with arrays, objects, maps and sets\");\n }\n}\nfunction referenceEnhancer(newValue) {\n // never turn into an observable\n return newValue;\n}\nfunction refStructEnhancer(v, oldValue) {\n if (process.env.NODE_ENV !== \"production\" && isObservable(v)) {\n die(\"observable.struct should not be used with observable values\");\n }\n if (deepEqual(v, oldValue)) {\n return oldValue;\n }\n return v;\n}\n\nvar OVERRIDE = \"override\";\nvar override = /*#__PURE__*/createDecoratorAnnotation({\n annotationType_: OVERRIDE,\n make_: make_,\n extend_: extend_,\n decorate_20223_: decorate_20223_\n});\nfunction isOverride(annotation) {\n return annotation.annotationType_ === OVERRIDE;\n}\nfunction make_(adm, key) {\n // Must not be plain object\n if (process.env.NODE_ENV !== \"production\" && adm.isPlainObject_) {\n die(\"Cannot apply '\" + this.annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + this.annotationType_ + \"' cannot be used on plain objects.\"));\n }\n // Must override something\n if (process.env.NODE_ENV !== \"production\" && !hasProp(adm.appliedAnnotations_, key)) {\n die(\"'\" + adm.name_ + \".\" + key.toString() + \"' is annotated with '\" + this.annotationType_ + \"', \" + \"but no such annotated member was found on prototype.\");\n }\n return 0 /* MakeResult.Cancel */;\n}\n\nfunction extend_(adm, key, descriptor, proxyTrap) {\n die(\"'\" + this.annotationType_ + \"' can only be used with 'makeObservable'\");\n}\nfunction decorate_20223_(desc, context) {\n console.warn(\"'\" + this.annotationType_ + \"' cannot be used with decorators - this is a no-op\");\n}\n\nfunction createActionAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$1,\n extend_: extend_$1,\n decorate_20223_: decorate_20223_$1\n };\n}\nfunction make_$1(adm, key, descriptor, source) {\n var _this$options_;\n // bound\n if ((_this$options_ = this.options_) != null && _this$options_.bound) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* MakeResult.Cancel */ : 1 /* MakeResult.Break */;\n }\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* MakeResult.Cancel */ : 2 /* MakeResult.Continue */;\n }\n // prototype\n if (isAction(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return 1 /* MakeResult.Break */;\n }\n\n var actionDescriptor = createActionDescriptor(adm, this, key, descriptor, false);\n defineProperty(source, key, actionDescriptor);\n return 2 /* MakeResult.Continue */;\n}\n\nfunction extend_$1(adm, key, descriptor, proxyTrap) {\n var actionDescriptor = createActionDescriptor(adm, this, key, descriptor);\n return adm.defineProperty_(key, actionDescriptor, proxyTrap);\n}\nfunction decorate_20223_$1(mthd, context) {\n if (process.env.NODE_ENV !== \"production\") {\n assert20223DecoratorType(context, [\"method\", \"field\"]);\n }\n var kind = context.kind,\n name = context.name,\n addInitializer = context.addInitializer;\n var ann = this;\n var _createAction = function _createAction(m) {\n var _ann$options_$name, _ann$options_, _ann$options_$autoAct, _ann$options_2;\n return createAction((_ann$options_$name = (_ann$options_ = ann.options_) == null ? void 0 : _ann$options_.name) != null ? _ann$options_$name : name.toString(), m, (_ann$options_$autoAct = (_ann$options_2 = ann.options_) == null ? void 0 : _ann$options_2.autoAction) != null ? _ann$options_$autoAct : false);\n };\n // Backwards/Legacy behavior, expects makeObservable(this)\n if (kind == \"field\") {\n addInitializer(function () {\n storeAnnotation(this, name, ann);\n });\n return;\n }\n if (kind == \"method\") {\n var _this$options_2;\n if (!isAction(mthd)) {\n mthd = _createAction(mthd);\n }\n if ((_this$options_2 = this.options_) != null && _this$options_2.bound) {\n addInitializer(function () {\n var self = this;\n var bound = self[name].bind(self);\n bound.isMobxAction = true;\n self[name] = bound;\n });\n }\n return mthd;\n }\n die(\"Cannot apply '\" + ann.annotationType_ + \"' to '\" + String(name) + \"' (kind: \" + kind + \"):\" + (\"\\n'\" + ann.annotationType_ + \"' can only be used on properties with a function value.\"));\n}\nfunction assertActionDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var value = _ref2.value;\n if (process.env.NODE_ENV !== \"production\" && !isFunction(value)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on properties with a function value.\"));\n }\n}\nfunction createActionDescriptor(adm, annotation, key, descriptor,\n// provides ability to disable safeDescriptors for prototypes\nsafeDescriptors) {\n var _annotation$options_, _annotation$options_$, _annotation$options_2, _annotation$options_$2, _annotation$options_3, _annotation$options_4, _adm$proxy_2;\n if (safeDescriptors === void 0) {\n safeDescriptors = globalState.safeDescriptors;\n }\n assertActionDescriptor(adm, annotation, key, descriptor);\n var value = descriptor.value;\n if ((_annotation$options_ = annotation.options_) != null && _annotation$options_.bound) {\n var _adm$proxy_;\n value = value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n }\n return {\n value: createAction((_annotation$options_$ = (_annotation$options_2 = annotation.options_) == null ? void 0 : _annotation$options_2.name) != null ? _annotation$options_$ : key.toString(), value, (_annotation$options_$2 = (_annotation$options_3 = annotation.options_) == null ? void 0 : _annotation$options_3.autoAction) != null ? _annotation$options_$2 : false,\n // https://github.com/mobxjs/mobx/discussions/3140\n (_annotation$options_4 = annotation.options_) != null && _annotation$options_4.bound ? (_adm$proxy_2 = adm.proxy_) != null ? _adm$proxy_2 : adm.target_ : undefined),\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n };\n}\n\nfunction createFlowAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$2,\n extend_: extend_$2,\n decorate_20223_: decorate_20223_$2\n };\n}\nfunction make_$2(adm, key, descriptor, source) {\n var _this$options_;\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* MakeResult.Cancel */ : 2 /* MakeResult.Continue */;\n }\n // prototype\n // bound - must annotate protos to support super.flow()\n if ((_this$options_ = this.options_) != null && _this$options_.bound && (!hasProp(adm.target_, key) || !isFlow(adm.target_[key]))) {\n if (this.extend_(adm, key, descriptor, false) === null) {\n return 0 /* MakeResult.Cancel */;\n }\n }\n\n if (isFlow(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return 1 /* MakeResult.Break */;\n }\n\n var flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, false, false);\n defineProperty(source, key, flowDescriptor);\n return 2 /* MakeResult.Continue */;\n}\n\nfunction extend_$2(adm, key, descriptor, proxyTrap) {\n var _this$options_2;\n var flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, (_this$options_2 = this.options_) == null ? void 0 : _this$options_2.bound);\n return adm.defineProperty_(key, flowDescriptor, proxyTrap);\n}\nfunction decorate_20223_$2(mthd, context) {\n var _this$options_3;\n if (process.env.NODE_ENV !== \"production\") {\n assert20223DecoratorType(context, [\"method\"]);\n }\n var name = context.name,\n addInitializer = context.addInitializer;\n if (!isFlow(mthd)) {\n mthd = flow(mthd);\n }\n if ((_this$options_3 = this.options_) != null && _this$options_3.bound) {\n addInitializer(function () {\n var self = this;\n var bound = self[name].bind(self);\n bound.isMobXFlow = true;\n self[name] = bound;\n });\n }\n return mthd;\n}\nfunction assertFlowDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var value = _ref2.value;\n if (process.env.NODE_ENV !== \"production\" && !isFunction(value)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on properties with a generator function value.\"));\n }\n}\nfunction createFlowDescriptor(adm, annotation, key, descriptor, bound,\n// provides ability to disable safeDescriptors for prototypes\nsafeDescriptors) {\n if (safeDescriptors === void 0) {\n safeDescriptors = globalState.safeDescriptors;\n }\n assertFlowDescriptor(adm, annotation, key, descriptor);\n var value = descriptor.value;\n // In case of flow.bound, the descriptor can be from already annotated prototype\n if (!isFlow(value)) {\n value = flow(value);\n }\n if (bound) {\n var _adm$proxy_;\n // We do not keep original function around, so we bind the existing flow\n value = value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n // This is normally set by `flow`, but `bind` returns new function...\n value.isMobXFlow = true;\n }\n return {\n value: value,\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n };\n}\n\nfunction createComputedAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$3,\n extend_: extend_$3,\n decorate_20223_: decorate_20223_$3\n };\n}\nfunction make_$3(adm, key, descriptor) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* MakeResult.Cancel */ : 1 /* MakeResult.Break */;\n}\n\nfunction extend_$3(adm, key, descriptor, proxyTrap) {\n assertComputedDescriptor(adm, this, key, descriptor);\n return adm.defineComputedProperty_(key, _extends({}, this.options_, {\n get: descriptor.get,\n set: descriptor.set\n }), proxyTrap);\n}\nfunction decorate_20223_$3(get, context) {\n if (process.env.NODE_ENV !== \"production\") {\n assert20223DecoratorType(context, [\"getter\"]);\n }\n var ann = this;\n var key = context.name,\n addInitializer = context.addInitializer;\n addInitializer(function () {\n var adm = asObservableObject(this)[$mobx];\n var options = _extends({}, ann.options_, {\n get: get,\n context: this\n });\n options.name || (options.name = process.env.NODE_ENV !== \"production\" ? adm.name_ + \".\" + key.toString() : \"ObservableObject.\" + key.toString());\n adm.values_.set(key, new ComputedValue(options));\n });\n return function () {\n return this[$mobx].getObservablePropValue_(key);\n };\n}\nfunction assertComputedDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var get = _ref2.get;\n if (process.env.NODE_ENV !== \"production\" && !get) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on getter(+setter) properties.\"));\n }\n}\n\nfunction createObservableAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$4,\n extend_: extend_$4,\n decorate_20223_: decorate_20223_$4\n };\n}\nfunction make_$4(adm, key, descriptor) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* MakeResult.Cancel */ : 1 /* MakeResult.Break */;\n}\n\nfunction extend_$4(adm, key, descriptor, proxyTrap) {\n var _this$options_$enhanc, _this$options_;\n assertObservableDescriptor(adm, this, key, descriptor);\n return adm.defineObservableProperty_(key, descriptor.value, (_this$options_$enhanc = (_this$options_ = this.options_) == null ? void 0 : _this$options_.enhancer) != null ? _this$options_$enhanc : deepEnhancer, proxyTrap);\n}\nfunction decorate_20223_$4(desc, context) {\n if (process.env.NODE_ENV !== \"production\") {\n if (context.kind === \"field\") {\n throw die(\"Please use `@observable accessor \" + String(context.name) + \"` instead of `@observable \" + String(context.name) + \"`\");\n }\n assert20223DecoratorType(context, [\"accessor\"]);\n }\n var ann = this;\n var kind = context.kind,\n name = context.name;\n // The laziness here is not ideal... It's a workaround to how 2022.3 Decorators are implemented:\n // `addInitializer` callbacks are executed _before_ any accessors are defined (instead of the ideal-for-us right after each).\n // This means that, if we were to do our stuff in an `addInitializer`, we'd attempt to read a private slot\n // before it has been initialized. The runtime doesn't like that and throws a `Cannot read private member\n // from an object whose class did not declare it` error.\n // TODO: it seems that this will not be required anymore in the final version of the spec\n // See TODO: link\n var initializedObjects = new WeakSet();\n function initializeObservable(target, value) {\n var _ann$options_$enhance, _ann$options_;\n var adm = asObservableObject(target)[$mobx];\n var observable = new ObservableValue(value, (_ann$options_$enhance = (_ann$options_ = ann.options_) == null ? void 0 : _ann$options_.enhancer) != null ? _ann$options_$enhance : deepEnhancer, process.env.NODE_ENV !== \"production\" ? adm.name_ + \".\" + name.toString() : \"ObservableObject.\" + name.toString(), false);\n adm.values_.set(name, observable);\n initializedObjects.add(target);\n }\n if (kind == \"accessor\") {\n return {\n get: function get() {\n if (!initializedObjects.has(this)) {\n initializeObservable(this, desc.get.call(this));\n }\n return this[$mobx].getObservablePropValue_(name);\n },\n set: function set(value) {\n if (!initializedObjects.has(this)) {\n initializeObservable(this, value);\n }\n return this[$mobx].setObservablePropValue_(name, value);\n },\n init: function init(value) {\n if (!initializedObjects.has(this)) {\n initializeObservable(this, value);\n }\n return value;\n }\n };\n }\n return;\n}\nfunction assertObservableDescriptor(adm, _ref, key, descriptor) {\n var annotationType_ = _ref.annotationType_;\n if (process.env.NODE_ENV !== \"production\" && !(\"value\" in descriptor)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' cannot be used on getter/setter properties\"));\n }\n}\n\nvar AUTO = \"true\";\nvar autoAnnotation = /*#__PURE__*/createAutoAnnotation();\nfunction createAutoAnnotation(options) {\n return {\n annotationType_: AUTO,\n options_: options,\n make_: make_$5,\n extend_: extend_$5,\n decorate_20223_: decorate_20223_$5\n };\n}\nfunction make_$5(adm, key, descriptor, source) {\n var _this$options_3, _this$options_4;\n // getter -> computed\n if (descriptor.get) {\n return computed.make_(adm, key, descriptor, source);\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.make_\n var set = createAction(key.toString(), descriptor.set);\n // own\n if (source === adm.target_) {\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: set\n }) === null ? 0 /* MakeResult.Cancel */ : 2 /* MakeResult.Continue */;\n }\n // proto\n defineProperty(source, key, {\n configurable: true,\n set: set\n });\n return 2 /* MakeResult.Continue */;\n }\n // function on proto -> autoAction/flow\n if (source !== adm.target_ && typeof descriptor.value === \"function\") {\n var _this$options_2;\n if (isGenerator(descriptor.value)) {\n var _this$options_;\n var flowAnnotation = (_this$options_ = this.options_) != null && _this$options_.autoBind ? flow.bound : flow;\n return flowAnnotation.make_(adm, key, descriptor, source);\n }\n var actionAnnotation = (_this$options_2 = this.options_) != null && _this$options_2.autoBind ? autoAction.bound : autoAction;\n return actionAnnotation.make_(adm, key, descriptor, source);\n }\n // other -> observable\n // Copy props from proto as well, see test:\n // \"decorate should work with Object.create\"\n var observableAnnotation = ((_this$options_3 = this.options_) == null ? void 0 : _this$options_3.deep) === false ? observable.ref : observable;\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && (_this$options_4 = this.options_) != null && _this$options_4.autoBind) {\n var _adm$proxy_;\n descriptor.value = descriptor.value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n }\n return observableAnnotation.make_(adm, key, descriptor, source);\n}\nfunction extend_$5(adm, key, descriptor, proxyTrap) {\n var _this$options_5, _this$options_6;\n // getter -> computed\n if (descriptor.get) {\n return computed.extend_(adm, key, descriptor, proxyTrap);\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.extend_\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: createAction(key.toString(), descriptor.set)\n }, proxyTrap);\n }\n // other -> observable\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && (_this$options_5 = this.options_) != null && _this$options_5.autoBind) {\n var _adm$proxy_2;\n descriptor.value = descriptor.value.bind((_adm$proxy_2 = adm.proxy_) != null ? _adm$proxy_2 : adm.target_);\n }\n var observableAnnotation = ((_this$options_6 = this.options_) == null ? void 0 : _this$options_6.deep) === false ? observable.ref : observable;\n return observableAnnotation.extend_(adm, key, descriptor, proxyTrap);\n}\nfunction decorate_20223_$5(desc, context) {\n die(\"'\" + this.annotationType_ + \"' cannot be used as a decorator\");\n}\n\nvar OBSERVABLE = \"observable\";\nvar OBSERVABLE_REF = \"observable.ref\";\nvar OBSERVABLE_SHALLOW = \"observable.shallow\";\nvar OBSERVABLE_STRUCT = \"observable.struct\";\n// Predefined bags of create observable options, to avoid allocating temporarily option objects\n// in the majority of cases\nvar defaultCreateObservableOptions = {\n deep: true,\n name: undefined,\n defaultDecorator: undefined,\n proxy: true\n};\nObject.freeze(defaultCreateObservableOptions);\nfunction asCreateObservableOptions(thing) {\n return thing || defaultCreateObservableOptions;\n}\nvar observableAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE);\nvar observableRefAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_REF, {\n enhancer: referenceEnhancer\n});\nvar observableShallowAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_SHALLOW, {\n enhancer: shallowEnhancer\n});\nvar observableStructAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_STRUCT, {\n enhancer: refStructEnhancer\n});\nvar observableDecoratorAnnotation = /*#__PURE__*/createDecoratorAnnotation(observableAnnotation);\nfunction getEnhancerFromOptions(options) {\n return options.deep === true ? deepEnhancer : options.deep === false ? referenceEnhancer : getEnhancerFromAnnotation(options.defaultDecorator);\n}\nfunction getAnnotationFromOptions(options) {\n var _options$defaultDecor;\n return options ? (_options$defaultDecor = options.defaultDecorator) != null ? _options$defaultDecor : createAutoAnnotation(options) : undefined;\n}\nfunction getEnhancerFromAnnotation(annotation) {\n var _annotation$options_$, _annotation$options_;\n return !annotation ? deepEnhancer : (_annotation$options_$ = (_annotation$options_ = annotation.options_) == null ? void 0 : _annotation$options_.enhancer) != null ? _annotation$options_$ : deepEnhancer;\n}\n/**\n * Turns an object, array or function into a reactive structure.\n * @param v the value which should become observable.\n */\nfunction createObservable(v, arg2, arg3) {\n // @observable someProp; (2022.3 Decorators)\n if (is20223Decorator(arg2)) {\n return observableAnnotation.decorate_20223_(v, arg2);\n }\n // @observable someProp;\n if (isStringish(arg2)) {\n storeAnnotation(v, arg2, observableAnnotation);\n return;\n }\n // already observable - ignore\n if (isObservable(v)) {\n return v;\n }\n // plain object\n if (isPlainObject(v)) {\n return observable.object(v, arg2, arg3);\n }\n // Array\n if (Array.isArray(v)) {\n return observable.array(v, arg2);\n }\n // Map\n if (isES6Map(v)) {\n return observable.map(v, arg2);\n }\n // Set\n if (isES6Set(v)) {\n return observable.set(v, arg2);\n }\n // other object - ignore\n if (typeof v === \"object\" && v !== null) {\n return v;\n }\n // anything else\n return observable.box(v, arg2);\n}\nassign(createObservable, observableDecoratorAnnotation);\nvar observableFactories = {\n box: function box(value, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableValue(value, getEnhancerFromOptions(o), o.name, true, o.equals);\n },\n array: function array(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return (globalState.useProxies === false || o.proxy === false ? createLegacyArray : createObservableArray)(initialValues, getEnhancerFromOptions(o), o.name);\n },\n map: function map(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableMap(initialValues, getEnhancerFromOptions(o), o.name);\n },\n set: function set(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableSet(initialValues, getEnhancerFromOptions(o), o.name);\n },\n object: function object(props, decorators, options) {\n return initObservable(function () {\n return extendObservable(globalState.useProxies === false || (options == null ? void 0 : options.proxy) === false ? asObservableObject({}, options) : asDynamicObservableObject({}, options), props, decorators);\n });\n },\n ref: /*#__PURE__*/createDecoratorAnnotation(observableRefAnnotation),\n shallow: /*#__PURE__*/createDecoratorAnnotation(observableShallowAnnotation),\n deep: observableDecoratorAnnotation,\n struct: /*#__PURE__*/createDecoratorAnnotation(observableStructAnnotation)\n};\n// eslint-disable-next-line\nvar observable = /*#__PURE__*/assign(createObservable, observableFactories);\n\nvar COMPUTED = \"computed\";\nvar COMPUTED_STRUCT = \"computed.struct\";\nvar computedAnnotation = /*#__PURE__*/createComputedAnnotation(COMPUTED);\nvar computedStructAnnotation = /*#__PURE__*/createComputedAnnotation(COMPUTED_STRUCT, {\n equals: comparer.structural\n});\n/**\n * Decorator for class properties: @computed get value() { return expr; }.\n * For legacy purposes also invokable as ES5 observable created: `computed(() => expr)`;\n */\nvar computed = function computed(arg1, arg2) {\n if (is20223Decorator(arg2)) {\n // @computed (2022.3 Decorators)\n return computedAnnotation.decorate_20223_(arg1, arg2);\n }\n if (isStringish(arg2)) {\n // @computed\n return storeAnnotation(arg1, arg2, computedAnnotation);\n }\n if (isPlainObject(arg1)) {\n // @computed({ options })\n return createDecoratorAnnotation(createComputedAnnotation(COMPUTED, arg1));\n }\n // computed(expr, options?)\n if (process.env.NODE_ENV !== \"production\") {\n if (!isFunction(arg1)) {\n die(\"First argument to `computed` should be an expression.\");\n }\n if (isFunction(arg2)) {\n die(\"A setter as second argument is no longer supported, use `{ set: fn }` option instead\");\n }\n }\n var opts = isPlainObject(arg2) ? arg2 : {};\n opts.get = arg1;\n opts.name || (opts.name = arg1.name || \"\"); /* for generated name */\n return new ComputedValue(opts);\n};\nObject.assign(computed, computedAnnotation);\ncomputed.struct = /*#__PURE__*/createDecoratorAnnotation(computedStructAnnotation);\n\nvar _getDescriptor$config, _getDescriptor;\n// we don't use globalState for these in order to avoid possible issues with multiple\n// mobx versions\nvar currentActionId = 0;\nvar nextActionId = 1;\nvar isFunctionNameConfigurable = (_getDescriptor$config = (_getDescriptor = /*#__PURE__*/getDescriptor(function () {}, \"name\")) == null ? void 0 : _getDescriptor.configurable) != null ? _getDescriptor$config : false;\n// we can safely recycle this object\nvar tmpNameDescriptor = {\n value: \"action\",\n configurable: true,\n writable: false,\n enumerable: false\n};\nfunction createAction(actionName, fn, autoAction, ref) {\n if (autoAction === void 0) {\n autoAction = false;\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!isFunction(fn)) {\n die(\"`action` can only be invoked on functions\");\n }\n if (typeof actionName !== \"string\" || !actionName) {\n die(\"actions should have valid names, got: '\" + actionName + \"'\");\n }\n }\n function res() {\n return executeAction(actionName, autoAction, fn, ref || this, arguments);\n }\n res.isMobxAction = true;\n res.toString = function () {\n return fn.toString();\n };\n if (isFunctionNameConfigurable) {\n tmpNameDescriptor.value = actionName;\n defineProperty(res, \"name\", tmpNameDescriptor);\n }\n return res;\n}\nfunction executeAction(actionName, canRunAsDerivation, fn, scope, args) {\n var runInfo = _startAction(actionName, canRunAsDerivation, scope, args);\n try {\n return fn.apply(scope, args);\n } catch (err) {\n runInfo.error_ = err;\n throw err;\n } finally {\n _endAction(runInfo);\n }\n}\nfunction _startAction(actionName, canRunAsDerivation,\n// true for autoAction\nscope, args) {\n var notifySpy_ = process.env.NODE_ENV !== \"production\" && isSpyEnabled() && !!actionName;\n var startTime_ = 0;\n if (process.env.NODE_ENV !== \"production\" && notifySpy_) {\n startTime_ = Date.now();\n var flattenedArgs = args ? Array.from(args) : EMPTY_ARRAY;\n spyReportStart({\n type: ACTION,\n name: actionName,\n object: scope,\n arguments: flattenedArgs\n });\n }\n var prevDerivation_ = globalState.trackingDerivation;\n var runAsAction = !canRunAsDerivation || !prevDerivation_;\n startBatch();\n var prevAllowStateChanges_ = globalState.allowStateChanges; // by default preserve previous allow\n if (runAsAction) {\n untrackedStart();\n prevAllowStateChanges_ = allowStateChangesStart(true);\n }\n var prevAllowStateReads_ = allowStateReadsStart(true);\n var runInfo = {\n runAsAction_: runAsAction,\n prevDerivation_: prevDerivation_,\n prevAllowStateChanges_: prevAllowStateChanges_,\n prevAllowStateReads_: prevAllowStateReads_,\n notifySpy_: notifySpy_,\n startTime_: startTime_,\n actionId_: nextActionId++,\n parentActionId_: currentActionId\n };\n currentActionId = runInfo.actionId_;\n return runInfo;\n}\nfunction _endAction(runInfo) {\n if (currentActionId !== runInfo.actionId_) {\n die(30);\n }\n currentActionId = runInfo.parentActionId_;\n if (runInfo.error_ !== undefined) {\n globalState.suppressReactionErrors = true;\n }\n allowStateChangesEnd(runInfo.prevAllowStateChanges_);\n allowStateReadsEnd(runInfo.prevAllowStateReads_);\n endBatch();\n if (runInfo.runAsAction_) {\n untrackedEnd(runInfo.prevDerivation_);\n }\n if (process.env.NODE_ENV !== \"production\" && runInfo.notifySpy_) {\n spyReportEnd({\n time: Date.now() - runInfo.startTime_\n });\n }\n globalState.suppressReactionErrors = false;\n}\nfunction allowStateChanges(allowStateChanges, func) {\n var prev = allowStateChangesStart(allowStateChanges);\n try {\n return func();\n } finally {\n allowStateChangesEnd(prev);\n }\n}\nfunction allowStateChangesStart(allowStateChanges) {\n var prev = globalState.allowStateChanges;\n globalState.allowStateChanges = allowStateChanges;\n return prev;\n}\nfunction allowStateChangesEnd(prev) {\n globalState.allowStateChanges = prev;\n}\n\nvar _Symbol$toPrimitive;\nvar CREATE = \"create\";\n_Symbol$toPrimitive = Symbol.toPrimitive;\nvar ObservableValue = /*#__PURE__*/function (_Atom) {\n _inheritsLoose(ObservableValue, _Atom);\n function ObservableValue(value, enhancer, name_, notifySpy, equals) {\n var _this;\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"ObservableValue@\" + getNextId() : \"ObservableValue\";\n }\n if (notifySpy === void 0) {\n notifySpy = true;\n }\n if (equals === void 0) {\n equals = comparer[\"default\"];\n }\n _this = _Atom.call(this, name_) || this;\n _this.enhancer = void 0;\n _this.name_ = void 0;\n _this.equals = void 0;\n _this.hasUnreportedChange_ = false;\n _this.interceptors_ = void 0;\n _this.changeListeners_ = void 0;\n _this.value_ = void 0;\n _this.dehancer = void 0;\n _this.enhancer = enhancer;\n _this.name_ = name_;\n _this.equals = equals;\n _this.value_ = enhancer(value, undefined, name_);\n if (process.env.NODE_ENV !== \"production\" && notifySpy && isSpyEnabled()) {\n // only notify spy if this is a stand-alone observable\n spyReport({\n type: CREATE,\n object: _assertThisInitialized(_this),\n observableKind: \"value\",\n debugObjectName: _this.name_,\n newValue: \"\" + _this.value_\n });\n }\n return _this;\n }\n var _proto = ObservableValue.prototype;\n _proto.dehanceValue = function dehanceValue(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.set = function set(newValue) {\n var oldValue = this.value_;\n newValue = this.prepareNewValue_(newValue);\n if (newValue !== globalState.UNCHANGED) {\n var notifySpy = isSpyEnabled();\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart({\n type: UPDATE,\n object: this,\n observableKind: \"value\",\n debugObjectName: this.name_,\n newValue: newValue,\n oldValue: oldValue\n });\n }\n this.setNewValue_(newValue);\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n };\n _proto.prepareNewValue_ = function prepareNewValue_(newValue) {\n checkIfStateModificationsAreAllowed(this);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this,\n type: UPDATE,\n newValue: newValue\n });\n if (!change) {\n return globalState.UNCHANGED;\n }\n newValue = change.newValue;\n }\n // apply modifier\n newValue = this.enhancer(newValue, this.value_, this.name_);\n return this.equals(this.value_, newValue) ? globalState.UNCHANGED : newValue;\n };\n _proto.setNewValue_ = function setNewValue_(newValue) {\n var oldValue = this.value_;\n this.value_ = newValue;\n this.reportChanged();\n if (hasListeners(this)) {\n notifyListeners(this, {\n type: UPDATE,\n object: this,\n newValue: newValue,\n oldValue: oldValue\n });\n }\n };\n _proto.get = function get() {\n this.reportObserved();\n return this.dehanceValue(this.value_);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (fireImmediately) {\n listener({\n observableKind: \"value\",\n debugObjectName: this.name_,\n object: this,\n type: UPDATE,\n newValue: this.value_,\n oldValue: undefined\n });\n }\n return registerListener(this, listener);\n };\n _proto.raw = function raw() {\n // used by MST ot get undehanced value\n return this.value_;\n };\n _proto.toJSON = function toJSON() {\n return this.get();\n };\n _proto.toString = function toString() {\n return this.name_ + \"[\" + this.value_ + \"]\";\n };\n _proto.valueOf = function valueOf() {\n return toPrimitive(this.get());\n };\n _proto[_Symbol$toPrimitive] = function () {\n return this.valueOf();\n };\n return ObservableValue;\n}(Atom);\nvar isObservableValue = /*#__PURE__*/createInstanceofPredicate(\"ObservableValue\", ObservableValue);\n\nvar _Symbol$toPrimitive$1;\n/**\n * A node in the state dependency root that observes other nodes, and can be observed itself.\n *\n * ComputedValue will remember the result of the computation for the duration of the batch, or\n * while being observed.\n *\n * During this time it will recompute only when one of its direct dependencies changed,\n * but only when it is being accessed with `ComputedValue.get()`.\n *\n * Implementation description:\n * 1. First time it's being accessed it will compute and remember result\n * give back remembered result until 2. happens\n * 2. First time any deep dependency change, propagate POSSIBLY_STALE to all observers, wait for 3.\n * 3. When it's being accessed, recompute if any shallow dependency changed.\n * if result changed: propagate STALE to all observers, that were POSSIBLY_STALE from the last step.\n * go to step 2. either way\n *\n * If at any point it's outside batch and it isn't observed: reset everything and go to 1.\n */\n_Symbol$toPrimitive$1 = Symbol.toPrimitive;\nvar ComputedValue = /*#__PURE__*/function () {\n // nodes we are looking at. Our value depends on these nodes\n // during tracking it's an array with new observed observers\n\n // to check for cycles\n\n // N.B: unminified as it is used by MST\n\n /**\n * Create a new computed value based on a function expression.\n *\n * The `name` property is for debug purposes only.\n *\n * The `equals` property specifies the comparer function to use to determine if a newly produced\n * value differs from the previous value. Two comparers are provided in the library; `defaultComparer`\n * compares based on identity comparison (===), and `structuralComparer` deeply compares the structure.\n * Structural comparison can be convenient if you always produce a new aggregated object and\n * don't want to notify observers if it is structurally the same.\n * This is useful for working with vectors, mouse coordinates etc.\n */\n function ComputedValue(options) {\n this.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n this.observing_ = [];\n this.newObserving_ = null;\n this.isBeingObserved_ = false;\n this.isPendingUnobservation_ = false;\n this.observers_ = new Set();\n this.diffValue_ = 0;\n this.runId_ = 0;\n this.lastAccessedBy_ = 0;\n this.lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n this.unboundDepsCount_ = 0;\n this.value_ = new CaughtException(null);\n this.name_ = void 0;\n this.triggeredBy_ = void 0;\n this.isComputing_ = false;\n this.isRunningSetter_ = false;\n this.derivation = void 0;\n this.setter_ = void 0;\n this.isTracing_ = TraceMode.NONE;\n this.scope_ = void 0;\n this.equals_ = void 0;\n this.requiresReaction_ = void 0;\n this.keepAlive_ = void 0;\n this.onBOL = void 0;\n this.onBUOL = void 0;\n if (!options.get) {\n die(31);\n }\n this.derivation = options.get;\n this.name_ = options.name || (process.env.NODE_ENV !== \"production\" ? \"ComputedValue@\" + getNextId() : \"ComputedValue\");\n if (options.set) {\n this.setter_ = createAction(process.env.NODE_ENV !== \"production\" ? this.name_ + \"-setter\" : \"ComputedValue-setter\", options.set);\n }\n this.equals_ = options.equals || (options.compareStructural || options.struct ? comparer.structural : comparer[\"default\"]);\n this.scope_ = options.context;\n this.requiresReaction_ = options.requiresReaction;\n this.keepAlive_ = !!options.keepAlive;\n }\n var _proto = ComputedValue.prototype;\n _proto.onBecomeStale_ = function onBecomeStale_() {\n propagateMaybeChanged(this);\n };\n _proto.onBO = function onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(function (listener) {\n return listener();\n });\n }\n };\n _proto.onBUO = function onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(function (listener) {\n return listener();\n });\n }\n }\n /**\n * Returns the current value of this computed value.\n * Will evaluate its computation first if needed.\n */;\n _proto.get = function get() {\n if (this.isComputing_) {\n die(32, this.name_, this.derivation);\n }\n if (globalState.inBatch === 0 &&\n // !globalState.trackingDerivatpion &&\n this.observers_.size === 0 && !this.keepAlive_) {\n if (shouldCompute(this)) {\n this.warnAboutUntrackedRead_();\n startBatch(); // See perf test 'computed memoization'\n this.value_ = this.computeValue_(false);\n endBatch();\n }\n } else {\n reportObserved(this);\n if (shouldCompute(this)) {\n var prevTrackingContext = globalState.trackingContext;\n if (this.keepAlive_ && !prevTrackingContext) {\n globalState.trackingContext = this;\n }\n if (this.trackAndCompute()) {\n propagateChangeConfirmed(this);\n }\n globalState.trackingContext = prevTrackingContext;\n }\n }\n var result = this.value_;\n if (isCaughtException(result)) {\n throw result.cause;\n }\n return result;\n };\n _proto.set = function set(value) {\n if (this.setter_) {\n if (this.isRunningSetter_) {\n die(33, this.name_);\n }\n this.isRunningSetter_ = true;\n try {\n this.setter_.call(this.scope_, value);\n } finally {\n this.isRunningSetter_ = false;\n }\n } else {\n die(34, this.name_);\n }\n };\n _proto.trackAndCompute = function trackAndCompute() {\n // N.B: unminified as it is used by MST\n var oldValue = this.value_;\n var wasSuspended = /* see #1208 */this.dependenciesState_ === IDerivationState_.NOT_TRACKING_;\n var newValue = this.computeValue_(true);\n var changed = wasSuspended || isCaughtException(oldValue) || isCaughtException(newValue) || !this.equals_(oldValue, newValue);\n if (changed) {\n this.value_ = newValue;\n if (process.env.NODE_ENV !== \"production\" && isSpyEnabled()) {\n spyReport({\n observableKind: \"computed\",\n debugObjectName: this.name_,\n object: this.scope_,\n type: \"update\",\n oldValue: oldValue,\n newValue: newValue\n });\n }\n }\n return changed;\n };\n _proto.computeValue_ = function computeValue_(track) {\n this.isComputing_ = true;\n // don't allow state changes during computation\n var prev = allowStateChangesStart(false);\n var res;\n if (track) {\n res = trackDerivedFunction(this, this.derivation, this.scope_);\n } else {\n if (globalState.disableErrorBoundaries === true) {\n res = this.derivation.call(this.scope_);\n } else {\n try {\n res = this.derivation.call(this.scope_);\n } catch (e) {\n res = new CaughtException(e);\n }\n }\n }\n allowStateChangesEnd(prev);\n this.isComputing_ = false;\n return res;\n };\n _proto.suspend_ = function suspend_() {\n if (!this.keepAlive_) {\n clearObserving(this);\n this.value_ = undefined; // don't hold on to computed value!\n if (process.env.NODE_ENV !== \"production\" && this.isTracing_ !== TraceMode.NONE) {\n console.log(\"[mobx.trace] Computed value '\" + this.name_ + \"' was suspended and it will recompute on the next access.\");\n }\n }\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n var _this = this;\n var firstTime = true;\n var prevValue = undefined;\n return autorun(function () {\n // TODO: why is this in a different place than the spyReport() function? in all other observables it's called in the same place\n var newValue = _this.get();\n if (!firstTime || fireImmediately) {\n var prevU = untrackedStart();\n listener({\n observableKind: \"computed\",\n debugObjectName: _this.name_,\n type: UPDATE,\n object: _this,\n newValue: newValue,\n oldValue: prevValue\n });\n untrackedEnd(prevU);\n }\n firstTime = false;\n prevValue = newValue;\n });\n };\n _proto.warnAboutUntrackedRead_ = function warnAboutUntrackedRead_() {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n if (this.isTracing_ !== TraceMode.NONE) {\n console.log(\"[mobx.trace] Computed value '\" + this.name_ + \"' is being read outside a reactive context. Doing a full recompute.\");\n }\n if (typeof this.requiresReaction_ === \"boolean\" ? this.requiresReaction_ : globalState.computedRequiresReaction) {\n console.warn(\"[mobx] Computed value '\" + this.name_ + \"' is being read outside a reactive context. Doing a full recompute.\");\n }\n };\n _proto.toString = function toString() {\n return this.name_ + \"[\" + this.derivation.toString() + \"]\";\n };\n _proto.valueOf = function valueOf() {\n return toPrimitive(this.get());\n };\n _proto[_Symbol$toPrimitive$1] = function () {\n return this.valueOf();\n };\n return ComputedValue;\n}();\nvar isComputedValue = /*#__PURE__*/createInstanceofPredicate(\"ComputedValue\", ComputedValue);\n\nvar IDerivationState_;\n(function (IDerivationState_) {\n // before being run or (outside batch and not being observed)\n // at this point derivation is not holding any data about dependency tree\n IDerivationState_[IDerivationState_[\"NOT_TRACKING_\"] = -1] = \"NOT_TRACKING_\";\n // no shallow dependency changed since last computation\n // won't recalculate derivation\n // this is what makes mobx fast\n IDerivationState_[IDerivationState_[\"UP_TO_DATE_\"] = 0] = \"UP_TO_DATE_\";\n // some deep dependency changed, but don't know if shallow dependency changed\n // will require to check first if UP_TO_DATE or POSSIBLY_STALE\n // currently only ComputedValue will propagate POSSIBLY_STALE\n //\n // having this state is second big optimization:\n // don't have to recompute on every dependency change, but only when it's needed\n IDerivationState_[IDerivationState_[\"POSSIBLY_STALE_\"] = 1] = \"POSSIBLY_STALE_\";\n // A shallow dependency has changed since last computation and the derivation\n // will need to recompute when it's needed next.\n IDerivationState_[IDerivationState_[\"STALE_\"] = 2] = \"STALE_\";\n})(IDerivationState_ || (IDerivationState_ = {}));\nvar TraceMode;\n(function (TraceMode) {\n TraceMode[TraceMode[\"NONE\"] = 0] = \"NONE\";\n TraceMode[TraceMode[\"LOG\"] = 1] = \"LOG\";\n TraceMode[TraceMode[\"BREAK\"] = 2] = \"BREAK\";\n})(TraceMode || (TraceMode = {}));\nvar CaughtException = function CaughtException(cause) {\n this.cause = void 0;\n this.cause = cause;\n // Empty\n};\n\nfunction isCaughtException(e) {\n return e instanceof CaughtException;\n}\n/**\n * Finds out whether any dependency of the derivation has actually changed.\n * If dependenciesState is 1 then it will recalculate dependencies,\n * if any dependency changed it will propagate it by changing dependenciesState to 2.\n *\n * By iterating over the dependencies in the same order that they were reported and\n * stopping on the first change, all the recalculations are only called for ComputedValues\n * that will be tracked by derivation. That is because we assume that if the first x\n * dependencies of the derivation doesn't change then the derivation should run the same way\n * up until accessing x-th dependency.\n */\nfunction shouldCompute(derivation) {\n switch (derivation.dependenciesState_) {\n case IDerivationState_.UP_TO_DATE_:\n return false;\n case IDerivationState_.NOT_TRACKING_:\n case IDerivationState_.STALE_:\n return true;\n case IDerivationState_.POSSIBLY_STALE_:\n {\n // state propagation can occur outside of action/reactive context #2195\n var prevAllowStateReads = allowStateReadsStart(true);\n var prevUntracked = untrackedStart(); // no need for those computeds to be reported, they will be picked up in trackDerivedFunction.\n var obs = derivation.observing_,\n l = obs.length;\n for (var i = 0; i < l; i++) {\n var obj = obs[i];\n if (isComputedValue(obj)) {\n if (globalState.disableErrorBoundaries) {\n obj.get();\n } else {\n try {\n obj.get();\n } catch (e) {\n // we are not interested in the value *or* exception at this moment, but if there is one, notify all\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return true;\n }\n }\n // if ComputedValue `obj` actually changed it will be computed and propagated to its observers.\n // and `derivation` is an observer of `obj`\n // invariantShouldCompute(derivation)\n if (derivation.dependenciesState_ === IDerivationState_.STALE_) {\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return true;\n }\n }\n }\n changeDependenciesStateTo0(derivation);\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return false;\n }\n }\n}\nfunction isComputingDerivation() {\n return globalState.trackingDerivation !== null; // filter out actions inside computations\n}\n\nfunction checkIfStateModificationsAreAllowed(atom) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n var hasObservers = atom.observers_.size > 0;\n // Should not be possible to change observed state outside strict mode, except during initialization, see #563\n if (!globalState.allowStateChanges && (hasObservers || globalState.enforceActions === \"always\")) {\n console.warn(\"[MobX] \" + (globalState.enforceActions ? \"Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: \" : \"Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: \") + atom.name_);\n }\n}\nfunction checkIfStateReadsAreAllowed(observable) {\n if (process.env.NODE_ENV !== \"production\" && !globalState.allowStateReads && globalState.observableRequiresReaction) {\n console.warn(\"[mobx] Observable '\" + observable.name_ + \"' being read outside a reactive context.\");\n }\n}\n/**\n * Executes the provided function `f` and tracks which observables are being accessed.\n * The tracking information is stored on the `derivation` object and the derivation is registered\n * as observer of any of the accessed observables.\n */\nfunction trackDerivedFunction(derivation, f, context) {\n var prevAllowStateReads = allowStateReadsStart(true);\n // pre allocate array allocation + room for variation in deps\n // array will be trimmed by bindDependencies\n changeDependenciesStateTo0(derivation);\n derivation.newObserving_ = new Array(derivation.observing_.length + 100);\n derivation.unboundDepsCount_ = 0;\n derivation.runId_ = ++globalState.runId;\n var prevTracking = globalState.trackingDerivation;\n globalState.trackingDerivation = derivation;\n globalState.inBatch++;\n var result;\n if (globalState.disableErrorBoundaries === true) {\n result = f.call(context);\n } else {\n try {\n result = f.call(context);\n } catch (e) {\n result = new CaughtException(e);\n }\n }\n globalState.inBatch--;\n globalState.trackingDerivation = prevTracking;\n bindDependencies(derivation);\n warnAboutDerivationWithoutDependencies(derivation);\n allowStateReadsEnd(prevAllowStateReads);\n return result;\n}\nfunction warnAboutDerivationWithoutDependencies(derivation) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n if (derivation.observing_.length !== 0) {\n return;\n }\n if (typeof derivation.requiresObservable_ === \"boolean\" ? derivation.requiresObservable_ : globalState.reactionRequiresObservable) {\n console.warn(\"[mobx] Derivation '\" + derivation.name_ + \"' is created/updated without reading any observable value.\");\n }\n}\n/**\n * diffs newObserving with observing.\n * update observing to be newObserving with unique observables\n * notify observers that become observed/unobserved\n */\nfunction bindDependencies(derivation) {\n // invariant(derivation.dependenciesState !== IDerivationState.NOT_TRACKING, \"INTERNAL ERROR bindDependencies expects derivation.dependenciesState !== -1\");\n var prevObserving = derivation.observing_;\n var observing = derivation.observing_ = derivation.newObserving_;\n var lowestNewObservingDerivationState = IDerivationState_.UP_TO_DATE_;\n // Go through all new observables and check diffValue: (this list can contain duplicates):\n // 0: first occurrence, change to 1 and keep it\n // 1: extra occurrence, drop it\n var i0 = 0,\n l = derivation.unboundDepsCount_;\n for (var i = 0; i < l; i++) {\n var dep = observing[i];\n if (dep.diffValue_ === 0) {\n dep.diffValue_ = 1;\n if (i0 !== i) {\n observing[i0] = dep;\n }\n i0++;\n }\n // Upcast is 'safe' here, because if dep is IObservable, `dependenciesState` will be undefined,\n // not hitting the condition\n if (dep.dependenciesState_ > lowestNewObservingDerivationState) {\n lowestNewObservingDerivationState = dep.dependenciesState_;\n }\n }\n observing.length = i0;\n derivation.newObserving_ = null; // newObserving shouldn't be needed outside tracking (statement moved down to work around FF bug, see #614)\n // Go through all old observables and check diffValue: (it is unique after last bindDependencies)\n // 0: it's not in new observables, unobserve it\n // 1: it keeps being observed, don't want to notify it. change to 0\n l = prevObserving.length;\n while (l--) {\n var _dep = prevObserving[l];\n if (_dep.diffValue_ === 0) {\n removeObserver(_dep, derivation);\n }\n _dep.diffValue_ = 0;\n }\n // Go through all new observables and check diffValue: (now it should be unique)\n // 0: it was set to 0 in last loop. don't need to do anything.\n // 1: it wasn't observed, let's observe it. set back to 0\n while (i0--) {\n var _dep2 = observing[i0];\n if (_dep2.diffValue_ === 1) {\n _dep2.diffValue_ = 0;\n addObserver(_dep2, derivation);\n }\n }\n // Some new observed derivations may become stale during this derivation computation\n // so they have had no chance to propagate staleness (#916)\n if (lowestNewObservingDerivationState !== IDerivationState_.UP_TO_DATE_) {\n derivation.dependenciesState_ = lowestNewObservingDerivationState;\n derivation.onBecomeStale_();\n }\n}\nfunction clearObserving(derivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR clearObserving should be called only inside batch\");\n var obs = derivation.observing_;\n derivation.observing_ = [];\n var i = obs.length;\n while (i--) {\n removeObserver(obs[i], derivation);\n }\n derivation.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n}\nfunction untracked(action) {\n var prev = untrackedStart();\n try {\n return action();\n } finally {\n untrackedEnd(prev);\n }\n}\nfunction untrackedStart() {\n var prev = globalState.trackingDerivation;\n globalState.trackingDerivation = null;\n return prev;\n}\nfunction untrackedEnd(prev) {\n globalState.trackingDerivation = prev;\n}\nfunction allowStateReadsStart(allowStateReads) {\n var prev = globalState.allowStateReads;\n globalState.allowStateReads = allowStateReads;\n return prev;\n}\nfunction allowStateReadsEnd(prev) {\n globalState.allowStateReads = prev;\n}\n/**\n * needed to keep `lowestObserverState` correct. when changing from (2 or 1) to 0\n *\n */\nfunction changeDependenciesStateTo0(derivation) {\n if (derivation.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n return;\n }\n derivation.dependenciesState_ = IDerivationState_.UP_TO_DATE_;\n var obs = derivation.observing_;\n var i = obs.length;\n while (i--) {\n obs[i].lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n }\n}\n\n/**\n * These values will persist if global state is reset\n */\nvar persistentKeys = [\"mobxGuid\", \"spyListeners\", \"enforceActions\", \"computedRequiresReaction\", \"reactionRequiresObservable\", \"observableRequiresReaction\", \"allowStateReads\", \"disableErrorBoundaries\", \"runId\", \"UNCHANGED\", \"useProxies\"];\nvar MobXGlobals = function MobXGlobals() {\n this.version = 6;\n this.UNCHANGED = {};\n this.trackingDerivation = null;\n this.trackingContext = null;\n this.runId = 0;\n this.mobxGuid = 0;\n this.inBatch = 0;\n this.pendingUnobservations = [];\n this.pendingReactions = [];\n this.isRunningReactions = false;\n this.allowStateChanges = false;\n this.allowStateReads = true;\n this.enforceActions = true;\n this.spyListeners = [];\n this.globalReactionErrorHandlers = [];\n this.computedRequiresReaction = false;\n this.reactionRequiresObservable = false;\n this.observableRequiresReaction = false;\n this.disableErrorBoundaries = false;\n this.suppressReactionErrors = false;\n this.useProxies = true;\n this.verifyProxies = false;\n this.safeDescriptors = true;\n};\nvar canMergeGlobalState = true;\nvar isolateCalled = false;\nvar globalState = /*#__PURE__*/function () {\n var global = /*#__PURE__*/getGlobal();\n if (global.__mobxInstanceCount > 0 && !global.__mobxGlobals) {\n canMergeGlobalState = false;\n }\n if (global.__mobxGlobals && global.__mobxGlobals.version !== new MobXGlobals().version) {\n canMergeGlobalState = false;\n }\n if (!canMergeGlobalState) {\n // Because this is a IIFE we need to let isolateCalled a chance to change\n // so we run it after the event loop completed at least 1 iteration\n setTimeout(function () {\n if (!isolateCalled) {\n die(35);\n }\n }, 1);\n return new MobXGlobals();\n } else if (global.__mobxGlobals) {\n global.__mobxInstanceCount += 1;\n if (!global.__mobxGlobals.UNCHANGED) {\n global.__mobxGlobals.UNCHANGED = {};\n } // make merge backward compatible\n return global.__mobxGlobals;\n } else {\n global.__mobxInstanceCount = 1;\n return global.__mobxGlobals = /*#__PURE__*/new MobXGlobals();\n }\n}();\nfunction isolateGlobalState() {\n if (globalState.pendingReactions.length || globalState.inBatch || globalState.isRunningReactions) {\n die(36);\n }\n isolateCalled = true;\n if (canMergeGlobalState) {\n var global = getGlobal();\n if (--global.__mobxInstanceCount === 0) {\n global.__mobxGlobals = undefined;\n }\n globalState = new MobXGlobals();\n }\n}\nfunction getGlobalState() {\n return globalState;\n}\n/**\n * For testing purposes only; this will break the internal state of existing observables,\n * but can be used to get back at a stable state after throwing errors\n */\nfunction resetGlobalState() {\n var defaultGlobals = new MobXGlobals();\n for (var key in defaultGlobals) {\n if (persistentKeys.indexOf(key) === -1) {\n globalState[key] = defaultGlobals[key];\n }\n }\n globalState.allowStateChanges = !globalState.enforceActions;\n}\n\nfunction hasObservers(observable) {\n return observable.observers_ && observable.observers_.size > 0;\n}\nfunction getObservers(observable) {\n return observable.observers_;\n}\n// function invariantObservers(observable: IObservable) {\n// const list = observable.observers\n// const map = observable.observersIndexes\n// const l = list.length\n// for (let i = 0; i < l; i++) {\n// const id = list[i].__mapid\n// if (i) {\n// invariant(map[id] === i, \"INTERNAL ERROR maps derivation.__mapid to index in list\") // for performance\n// } else {\n// invariant(!(id in map), \"INTERNAL ERROR observer on index 0 shouldn't be held in map.\") // for performance\n// }\n// }\n// invariant(\n// list.length === 0 || Object.keys(map).length === list.length - 1,\n// \"INTERNAL ERROR there is no junk in map\"\n// )\n// }\nfunction addObserver(observable, node) {\n // invariant(node.dependenciesState !== -1, \"INTERNAL ERROR, can add only dependenciesState !== -1\");\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR add already added node\");\n // invariantObservers(observable);\n observable.observers_.add(node);\n if (observable.lowestObserverState_ > node.dependenciesState_) {\n observable.lowestObserverState_ = node.dependenciesState_;\n }\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR didn't add node\");\n}\n\nfunction removeObserver(observable, node) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR, remove should be called only inside batch\");\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR remove already removed node\");\n // invariantObservers(observable);\n observable.observers_[\"delete\"](node);\n if (observable.observers_.size === 0) {\n // deleting last observer\n queueForUnobservation(observable);\n }\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR remove already removed node2\");\n}\n\nfunction queueForUnobservation(observable) {\n if (observable.isPendingUnobservation_ === false) {\n // invariant(observable._observers.length === 0, \"INTERNAL ERROR, should only queue for unobservation unobserved observables\");\n observable.isPendingUnobservation_ = true;\n globalState.pendingUnobservations.push(observable);\n }\n}\n/**\n * Batch starts a transaction, at least for purposes of memoizing ComputedValues when nothing else does.\n * During a batch `onBecomeUnobserved` will be called at most once per observable.\n * Avoids unnecessary recalculations.\n */\nfunction startBatch() {\n globalState.inBatch++;\n}\nfunction endBatch() {\n if (--globalState.inBatch === 0) {\n runReactions();\n // the batch is actually about to finish, all unobserving should happen here.\n var list = globalState.pendingUnobservations;\n for (var i = 0; i < list.length; i++) {\n var observable = list[i];\n observable.isPendingUnobservation_ = false;\n if (observable.observers_.size === 0) {\n if (observable.isBeingObserved_) {\n // if this observable had reactive observers, trigger the hooks\n observable.isBeingObserved_ = false;\n observable.onBUO();\n }\n if (observable instanceof ComputedValue) {\n // computed values are automatically teared down when the last observer leaves\n // this process happens recursively, this computed might be the last observabe of another, etc..\n observable.suspend_();\n }\n }\n }\n globalState.pendingUnobservations = [];\n }\n}\nfunction reportObserved(observable) {\n checkIfStateReadsAreAllowed(observable);\n var derivation = globalState.trackingDerivation;\n if (derivation !== null) {\n /**\n * Simple optimization, give each derivation run an unique id (runId)\n * Check if last time this observable was accessed the same runId is used\n * if this is the case, the relation is already known\n */\n if (derivation.runId_ !== observable.lastAccessedBy_) {\n observable.lastAccessedBy_ = derivation.runId_;\n // Tried storing newObserving, or observing, or both as Set, but performance didn't come close...\n derivation.newObserving_[derivation.unboundDepsCount_++] = observable;\n if (!observable.isBeingObserved_ && globalState.trackingContext) {\n observable.isBeingObserved_ = true;\n observable.onBO();\n }\n }\n return observable.isBeingObserved_;\n } else if (observable.observers_.size === 0 && globalState.inBatch > 0) {\n queueForUnobservation(observable);\n }\n return false;\n}\n// function invariantLOS(observable: IObservable, msg: string) {\n// // it's expensive so better not run it in produciton. but temporarily helpful for testing\n// const min = getObservers(observable).reduce((a, b) => Math.min(a, b.dependenciesState), 2)\n// if (min >= observable.lowestObserverState) return // <- the only assumption about `lowestObserverState`\n// throw new Error(\n// \"lowestObserverState is wrong for \" +\n// msg +\n// \" because \" +\n// min +\n// \" < \" +\n// observable.lowestObserverState\n// )\n// }\n/**\n * NOTE: current propagation mechanism will in case of self reruning autoruns behave unexpectedly\n * It will propagate changes to observers from previous run\n * It's hard or maybe impossible (with reasonable perf) to get it right with current approach\n * Hopefully self reruning autoruns aren't a feature people should depend on\n * Also most basic use cases should be ok\n */\n// Called by Atom when its value changes\nfunction propagateChanged(observable) {\n // invariantLOS(observable, \"changed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return;\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_;\n // Ideally we use for..of here, but the downcompiled version is really slow...\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n if (process.env.NODE_ENV !== \"production\" && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable);\n }\n d.onBecomeStale_();\n }\n d.dependenciesState_ = IDerivationState_.STALE_;\n });\n // invariantLOS(observable, \"changed end\");\n}\n// Called by ComputedValue when it recalculate and its value changed\nfunction propagateChangeConfirmed(observable) {\n // invariantLOS(observable, \"confirmed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return;\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_;\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.POSSIBLY_STALE_) {\n d.dependenciesState_ = IDerivationState_.STALE_;\n if (process.env.NODE_ENV !== \"production\" && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable);\n }\n } else if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_ // this happens during computing of `d`, just keep lowestObserverState up to date.\n ) {\n observable.lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n }\n });\n // invariantLOS(observable, \"confirmed end\");\n}\n// Used by computed when its dependency changed, but we don't wan't to immediately recompute.\nfunction propagateMaybeChanged(observable) {\n // invariantLOS(observable, \"maybe start\");\n if (observable.lowestObserverState_ !== IDerivationState_.UP_TO_DATE_) {\n return;\n }\n observable.lowestObserverState_ = IDerivationState_.POSSIBLY_STALE_;\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n d.dependenciesState_ = IDerivationState_.POSSIBLY_STALE_;\n d.onBecomeStale_();\n }\n });\n // invariantLOS(observable, \"maybe end\");\n}\n\nfunction logTraceInfo(derivation, observable) {\n console.log(\"[mobx.trace] '\" + derivation.name_ + \"' is invalidated due to a change in: '\" + observable.name_ + \"'\");\n if (derivation.isTracing_ === TraceMode.BREAK) {\n var lines = [];\n printDepTree(getDependencyTree(derivation), lines, 1);\n // prettier-ignore\n new Function(\"debugger;\\n/*\\nTracing '\" + derivation.name_ + \"'\\n\\nYou are entering this break point because derivation '\" + derivation.name_ + \"' is being traced and '\" + observable.name_ + \"' is now forcing it to update.\\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\\n\\n\" + (derivation instanceof ComputedValue ? derivation.derivation.toString().replace(/[*]\\//g, \"/\") : \"\") + \"\\n\\nThe dependencies for this derivation are:\\n\\n\" + lines.join(\"\\n\") + \"\\n*/\\n \")();\n }\n}\nfunction printDepTree(tree, lines, depth) {\n if (lines.length >= 1000) {\n lines.push(\"(and many more)\");\n return;\n }\n lines.push(\"\" + \"\\t\".repeat(depth - 1) + tree.name);\n if (tree.dependencies) {\n tree.dependencies.forEach(function (child) {\n return printDepTree(child, lines, depth + 1);\n });\n }\n}\n\nvar Reaction = /*#__PURE__*/function () {\n // nodes we are looking at. Our value depends on these nodes\n\n function Reaction(name_, onInvalidate_, errorHandler_, requiresObservable_) {\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"Reaction@\" + getNextId() : \"Reaction\";\n }\n this.name_ = void 0;\n this.onInvalidate_ = void 0;\n this.errorHandler_ = void 0;\n this.requiresObservable_ = void 0;\n this.observing_ = [];\n this.newObserving_ = [];\n this.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n this.diffValue_ = 0;\n this.runId_ = 0;\n this.unboundDepsCount_ = 0;\n this.isDisposed_ = false;\n this.isScheduled_ = false;\n this.isTrackPending_ = false;\n this.isRunning_ = false;\n this.isTracing_ = TraceMode.NONE;\n this.name_ = name_;\n this.onInvalidate_ = onInvalidate_;\n this.errorHandler_ = errorHandler_;\n this.requiresObservable_ = requiresObservable_;\n }\n var _proto = Reaction.prototype;\n _proto.onBecomeStale_ = function onBecomeStale_() {\n this.schedule_();\n };\n _proto.schedule_ = function schedule_() {\n if (!this.isScheduled_) {\n this.isScheduled_ = true;\n globalState.pendingReactions.push(this);\n runReactions();\n }\n };\n _proto.isScheduled = function isScheduled() {\n return this.isScheduled_;\n }\n /**\n * internal, use schedule() if you intend to kick off a reaction\n */;\n _proto.runReaction_ = function runReaction_() {\n if (!this.isDisposed_) {\n startBatch();\n this.isScheduled_ = false;\n var prev = globalState.trackingContext;\n globalState.trackingContext = this;\n if (shouldCompute(this)) {\n this.isTrackPending_ = true;\n try {\n this.onInvalidate_();\n if (process.env.NODE_ENV !== \"production\" && this.isTrackPending_ && isSpyEnabled()) {\n // onInvalidate didn't trigger track right away..\n spyReport({\n name: this.name_,\n type: \"scheduled-reaction\"\n });\n }\n } catch (e) {\n this.reportExceptionInDerivation_(e);\n }\n }\n globalState.trackingContext = prev;\n endBatch();\n }\n };\n _proto.track = function track(fn) {\n if (this.isDisposed_) {\n return;\n // console.warn(\"Reaction already disposed\") // Note: Not a warning / error in mobx 4 either\n }\n\n startBatch();\n var notify = isSpyEnabled();\n var startTime;\n if (process.env.NODE_ENV !== \"production\" && notify) {\n startTime = Date.now();\n spyReportStart({\n name: this.name_,\n type: \"reaction\"\n });\n }\n this.isRunning_ = true;\n var prevReaction = globalState.trackingContext; // reactions could create reactions...\n globalState.trackingContext = this;\n var result = trackDerivedFunction(this, fn, undefined);\n globalState.trackingContext = prevReaction;\n this.isRunning_ = false;\n this.isTrackPending_ = false;\n if (this.isDisposed_) {\n // disposed during last run. Clean up everything that was bound after the dispose call.\n clearObserving(this);\n }\n if (isCaughtException(result)) {\n this.reportExceptionInDerivation_(result.cause);\n }\n if (process.env.NODE_ENV !== \"production\" && notify) {\n spyReportEnd({\n time: Date.now() - startTime\n });\n }\n endBatch();\n };\n _proto.reportExceptionInDerivation_ = function reportExceptionInDerivation_(error) {\n var _this = this;\n if (this.errorHandler_) {\n this.errorHandler_(error, this);\n return;\n }\n if (globalState.disableErrorBoundaries) {\n throw error;\n }\n var message = process.env.NODE_ENV !== \"production\" ? \"[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '\" + this + \"'\" : \"[mobx] uncaught error in '\" + this + \"'\";\n if (!globalState.suppressReactionErrors) {\n console.error(message, error);\n /** If debugging brought you here, please, read the above message :-). Tnx! */\n } else if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[mobx] (error in reaction '\" + this.name_ + \"' suppressed, fix error of causing action below)\");\n } // prettier-ignore\n if (process.env.NODE_ENV !== \"production\" && isSpyEnabled()) {\n spyReport({\n type: \"error\",\n name: this.name_,\n message: message,\n error: \"\" + error\n });\n }\n globalState.globalReactionErrorHandlers.forEach(function (f) {\n return f(error, _this);\n });\n };\n _proto.dispose = function dispose() {\n if (!this.isDisposed_) {\n this.isDisposed_ = true;\n if (!this.isRunning_) {\n // if disposed while running, clean up later. Maybe not optimal, but rare case\n startBatch();\n clearObserving(this);\n endBatch();\n }\n }\n };\n _proto.getDisposer_ = function getDisposer_(abortSignal) {\n var _this2 = this;\n var dispose = function dispose() {\n _this2.dispose();\n abortSignal == null ? void 0 : abortSignal.removeEventListener == null ? void 0 : abortSignal.removeEventListener(\"abort\", dispose);\n };\n abortSignal == null ? void 0 : abortSignal.addEventListener == null ? void 0 : abortSignal.addEventListener(\"abort\", dispose);\n dispose[$mobx] = this;\n return dispose;\n };\n _proto.toString = function toString() {\n return \"Reaction[\" + this.name_ + \"]\";\n };\n _proto.trace = function trace$1(enterBreakPoint) {\n if (enterBreakPoint === void 0) {\n enterBreakPoint = false;\n }\n trace(this, enterBreakPoint);\n };\n return Reaction;\n}();\nfunction onReactionError(handler) {\n globalState.globalReactionErrorHandlers.push(handler);\n return function () {\n var idx = globalState.globalReactionErrorHandlers.indexOf(handler);\n if (idx >= 0) {\n globalState.globalReactionErrorHandlers.splice(idx, 1);\n }\n };\n}\n/**\n * Magic number alert!\n * Defines within how many times a reaction is allowed to re-trigger itself\n * until it is assumed that this is gonna be a never ending loop...\n */\nvar MAX_REACTION_ITERATIONS = 100;\nvar reactionScheduler = function reactionScheduler(f) {\n return f();\n};\nfunction runReactions() {\n // Trampolining, if runReactions are already running, new reactions will be picked up\n if (globalState.inBatch > 0 || globalState.isRunningReactions) {\n return;\n }\n reactionScheduler(runReactionsHelper);\n}\nfunction runReactionsHelper() {\n globalState.isRunningReactions = true;\n var allReactions = globalState.pendingReactions;\n var iterations = 0;\n // While running reactions, new reactions might be triggered.\n // Hence we work with two variables and check whether\n // we converge to no remaining reactions after a while.\n while (allReactions.length > 0) {\n if (++iterations === MAX_REACTION_ITERATIONS) {\n console.error(process.env.NODE_ENV !== \"production\" ? \"Reaction doesn't converge to a stable state after \" + MAX_REACTION_ITERATIONS + \" iterations.\" + (\" Probably there is a cycle in the reactive function: \" + allReactions[0]) : \"[mobx] cycle in reaction: \" + allReactions[0]);\n allReactions.splice(0); // clear reactions\n }\n\n var remainingReactions = allReactions.splice(0);\n for (var i = 0, l = remainingReactions.length; i < l; i++) {\n remainingReactions[i].runReaction_();\n }\n }\n globalState.isRunningReactions = false;\n}\nvar isReaction = /*#__PURE__*/createInstanceofPredicate(\"Reaction\", Reaction);\nfunction setReactionScheduler(fn) {\n var baseScheduler = reactionScheduler;\n reactionScheduler = function reactionScheduler(f) {\n return fn(function () {\n return baseScheduler(f);\n });\n };\n}\n\nfunction isSpyEnabled() {\n return process.env.NODE_ENV !== \"production\" && !!globalState.spyListeners.length;\n}\nfunction spyReport(event) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n } // dead code elimination can do the rest\n if (!globalState.spyListeners.length) {\n return;\n }\n var listeners = globalState.spyListeners;\n for (var i = 0, l = listeners.length; i < l; i++) {\n listeners[i](event);\n }\n}\nfunction spyReportStart(event) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n var change = _extends({}, event, {\n spyReportStart: true\n });\n spyReport(change);\n}\nvar END_EVENT = {\n type: \"report-end\",\n spyReportEnd: true\n};\nfunction spyReportEnd(change) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n if (change) {\n spyReport(_extends({}, change, {\n type: \"report-end\",\n spyReportEnd: true\n }));\n } else {\n spyReport(END_EVENT);\n }\n}\nfunction spy(listener) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n console.warn(\"[mobx.spy] Is a no-op in production builds\");\n return function () {};\n } else {\n globalState.spyListeners.push(listener);\n return once(function () {\n globalState.spyListeners = globalState.spyListeners.filter(function (l) {\n return l !== listener;\n });\n });\n }\n}\n\nvar ACTION = \"action\";\nvar ACTION_BOUND = \"action.bound\";\nvar AUTOACTION = \"autoAction\";\nvar AUTOACTION_BOUND = \"autoAction.bound\";\nvar DEFAULT_ACTION_NAME = \"\";\nvar actionAnnotation = /*#__PURE__*/createActionAnnotation(ACTION);\nvar actionBoundAnnotation = /*#__PURE__*/createActionAnnotation(ACTION_BOUND, {\n bound: true\n});\nvar autoActionAnnotation = /*#__PURE__*/createActionAnnotation(AUTOACTION, {\n autoAction: true\n});\nvar autoActionBoundAnnotation = /*#__PURE__*/createActionAnnotation(AUTOACTION_BOUND, {\n autoAction: true,\n bound: true\n});\nfunction createActionFactory(autoAction) {\n var res = function action(arg1, arg2) {\n // action(fn() {})\n if (isFunction(arg1)) {\n return createAction(arg1.name || DEFAULT_ACTION_NAME, arg1, autoAction);\n }\n // action(\"name\", fn() {})\n if (isFunction(arg2)) {\n return createAction(arg1, arg2, autoAction);\n }\n // @action (2022.3 Decorators)\n if (is20223Decorator(arg2)) {\n return (autoAction ? autoActionAnnotation : actionAnnotation).decorate_20223_(arg1, arg2);\n }\n // @action\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, autoAction ? autoActionAnnotation : actionAnnotation);\n }\n // action(\"name\") & @action(\"name\")\n if (isStringish(arg1)) {\n return createDecoratorAnnotation(createActionAnnotation(autoAction ? AUTOACTION : ACTION, {\n name: arg1,\n autoAction: autoAction\n }));\n }\n if (process.env.NODE_ENV !== \"production\") {\n die(\"Invalid arguments for `action`\");\n }\n };\n return res;\n}\nvar action = /*#__PURE__*/createActionFactory(false);\nObject.assign(action, actionAnnotation);\nvar autoAction = /*#__PURE__*/createActionFactory(true);\nObject.assign(autoAction, autoActionAnnotation);\naction.bound = /*#__PURE__*/createDecoratorAnnotation(actionBoundAnnotation);\nautoAction.bound = /*#__PURE__*/createDecoratorAnnotation(autoActionBoundAnnotation);\nfunction runInAction(fn) {\n return executeAction(fn.name || DEFAULT_ACTION_NAME, false, fn, this, undefined);\n}\nfunction isAction(thing) {\n return isFunction(thing) && thing.isMobxAction === true;\n}\n\n/**\n * Creates a named reactive view and keeps it alive, so that the view is always\n * updated if one of the dependencies changes, even when the view is not further used by something else.\n * @param view The reactive view\n * @returns disposer function, which can be used to stop the view from being updated in the future.\n */\nfunction autorun(view, opts) {\n var _opts$name, _opts, _opts2, _opts2$signal, _opts3;\n if (opts === void 0) {\n opts = EMPTY_OBJECT;\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!isFunction(view)) {\n die(\"Autorun expects a function as first argument\");\n }\n if (isAction(view)) {\n die(\"Autorun does not accept actions since actions are untrackable\");\n }\n }\n var name = (_opts$name = (_opts = opts) == null ? void 0 : _opts.name) != null ? _opts$name : process.env.NODE_ENV !== \"production\" ? view.name || \"Autorun@\" + getNextId() : \"Autorun\";\n var runSync = !opts.scheduler && !opts.delay;\n var reaction;\n if (runSync) {\n // normal autorun\n reaction = new Reaction(name, function () {\n this.track(reactionRunner);\n }, opts.onError, opts.requiresObservable);\n } else {\n var scheduler = createSchedulerFromOptions(opts);\n // debounced autorun\n var isScheduled = false;\n reaction = new Reaction(name, function () {\n if (!isScheduled) {\n isScheduled = true;\n scheduler(function () {\n isScheduled = false;\n if (!reaction.isDisposed_) {\n reaction.track(reactionRunner);\n }\n });\n }\n }, opts.onError, opts.requiresObservable);\n }\n function reactionRunner() {\n view(reaction);\n }\n if (!((_opts2 = opts) != null && (_opts2$signal = _opts2.signal) != null && _opts2$signal.aborted)) {\n reaction.schedule_();\n }\n return reaction.getDisposer_((_opts3 = opts) == null ? void 0 : _opts3.signal);\n}\nvar run = function run(f) {\n return f();\n};\nfunction createSchedulerFromOptions(opts) {\n return opts.scheduler ? opts.scheduler : opts.delay ? function (f) {\n return setTimeout(f, opts.delay);\n } : run;\n}\nfunction reaction(expression, effect, opts) {\n var _opts$name2, _opts4, _opts4$signal, _opts5;\n if (opts === void 0) {\n opts = EMPTY_OBJECT;\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!isFunction(expression) || !isFunction(effect)) {\n die(\"First and second argument to reaction should be functions\");\n }\n if (!isPlainObject(opts)) {\n die(\"Third argument of reactions should be an object\");\n }\n }\n var name = (_opts$name2 = opts.name) != null ? _opts$name2 : process.env.NODE_ENV !== \"production\" ? \"Reaction@\" + getNextId() : \"Reaction\";\n var effectAction = action(name, opts.onError ? wrapErrorHandler(opts.onError, effect) : effect);\n var runSync = !opts.scheduler && !opts.delay;\n var scheduler = createSchedulerFromOptions(opts);\n var firstTime = true;\n var isScheduled = false;\n var value;\n var oldValue;\n var equals = opts.compareStructural ? comparer.structural : opts.equals || comparer[\"default\"];\n var r = new Reaction(name, function () {\n if (firstTime || runSync) {\n reactionRunner();\n } else if (!isScheduled) {\n isScheduled = true;\n scheduler(reactionRunner);\n }\n }, opts.onError, opts.requiresObservable);\n function reactionRunner() {\n isScheduled = false;\n if (r.isDisposed_) {\n return;\n }\n var changed = false;\n r.track(function () {\n var nextValue = allowStateChanges(false, function () {\n return expression(r);\n });\n changed = firstTime || !equals(value, nextValue);\n oldValue = value;\n value = nextValue;\n });\n if (firstTime && opts.fireImmediately) {\n effectAction(value, oldValue, r);\n } else if (!firstTime && changed) {\n effectAction(value, oldValue, r);\n }\n firstTime = false;\n }\n if (!((_opts4 = opts) != null && (_opts4$signal = _opts4.signal) != null && _opts4$signal.aborted)) {\n r.schedule_();\n }\n return r.getDisposer_((_opts5 = opts) == null ? void 0 : _opts5.signal);\n}\nfunction wrapErrorHandler(errorHandler, baseFn) {\n return function () {\n try {\n return baseFn.apply(this, arguments);\n } catch (e) {\n errorHandler.call(this, e);\n }\n };\n}\n\nvar ON_BECOME_OBSERVED = \"onBO\";\nvar ON_BECOME_UNOBSERVED = \"onBUO\";\nfunction onBecomeObserved(thing, arg2, arg3) {\n return interceptHook(ON_BECOME_OBSERVED, thing, arg2, arg3);\n}\nfunction onBecomeUnobserved(thing, arg2, arg3) {\n return interceptHook(ON_BECOME_UNOBSERVED, thing, arg2, arg3);\n}\nfunction interceptHook(hook, thing, arg2, arg3) {\n var atom = typeof arg3 === \"function\" ? getAtom(thing, arg2) : getAtom(thing);\n var cb = isFunction(arg3) ? arg3 : arg2;\n var listenersKey = hook + \"L\";\n if (atom[listenersKey]) {\n atom[listenersKey].add(cb);\n } else {\n atom[listenersKey] = new Set([cb]);\n }\n return function () {\n var hookListeners = atom[listenersKey];\n if (hookListeners) {\n hookListeners[\"delete\"](cb);\n if (hookListeners.size === 0) {\n delete atom[listenersKey];\n }\n }\n };\n}\n\nvar NEVER = \"never\";\nvar ALWAYS = \"always\";\nvar OBSERVED = \"observed\";\n// const IF_AVAILABLE = \"ifavailable\"\nfunction configure(options) {\n if (options.isolateGlobalState === true) {\n isolateGlobalState();\n }\n var useProxies = options.useProxies,\n enforceActions = options.enforceActions;\n if (useProxies !== undefined) {\n globalState.useProxies = useProxies === ALWAYS ? true : useProxies === NEVER ? false : typeof Proxy !== \"undefined\";\n }\n if (useProxies === \"ifavailable\") {\n globalState.verifyProxies = true;\n }\n if (enforceActions !== undefined) {\n var ea = enforceActions === ALWAYS ? ALWAYS : enforceActions === OBSERVED;\n globalState.enforceActions = ea;\n globalState.allowStateChanges = ea === true || ea === ALWAYS ? false : true;\n }\n [\"computedRequiresReaction\", \"reactionRequiresObservable\", \"observableRequiresReaction\", \"disableErrorBoundaries\", \"safeDescriptors\"].forEach(function (key) {\n if (key in options) {\n globalState[key] = !!options[key];\n }\n });\n globalState.allowStateReads = !globalState.observableRequiresReaction;\n if (process.env.NODE_ENV !== \"production\" && globalState.disableErrorBoundaries === true) {\n console.warn(\"WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled.\");\n }\n if (options.reactionScheduler) {\n setReactionScheduler(options.reactionScheduler);\n }\n}\n\nfunction extendObservable(target, properties, annotations, options) {\n if (process.env.NODE_ENV !== \"production\") {\n if (arguments.length > 4) {\n die(\"'extendObservable' expected 2-4 arguments\");\n }\n if (typeof target !== \"object\") {\n die(\"'extendObservable' expects an object as first argument\");\n }\n if (isObservableMap(target)) {\n die(\"'extendObservable' should not be used on maps, use map.merge instead\");\n }\n if (!isPlainObject(properties)) {\n die(\"'extendObservable' only accepts plain objects as second argument\");\n }\n if (isObservable(properties) || isObservable(annotations)) {\n die(\"Extending an object with another observable (object) is not supported\");\n }\n }\n // Pull descriptors first, so we don't have to deal with props added by administration ($mobx)\n var descriptors = getOwnPropertyDescriptors(properties);\n initObservable(function () {\n var adm = asObservableObject(target, options)[$mobx];\n ownKeys(descriptors).forEach(function (key) {\n adm.extend_(key, descriptors[key],\n // must pass \"undefined\" for { key: undefined }\n !annotations ? true : key in annotations ? annotations[key] : true);\n });\n });\n return target;\n}\n\nfunction getDependencyTree(thing, property) {\n return nodeToDependencyTree(getAtom(thing, property));\n}\nfunction nodeToDependencyTree(node) {\n var result = {\n name: node.name_\n };\n if (node.observing_ && node.observing_.length > 0) {\n result.dependencies = unique(node.observing_).map(nodeToDependencyTree);\n }\n return result;\n}\nfunction getObserverTree(thing, property) {\n return nodeToObserverTree(getAtom(thing, property));\n}\nfunction nodeToObserverTree(node) {\n var result = {\n name: node.name_\n };\n if (hasObservers(node)) {\n result.observers = Array.from(getObservers(node)).map(nodeToObserverTree);\n }\n return result;\n}\nfunction unique(list) {\n return Array.from(new Set(list));\n}\n\nvar generatorId = 0;\nfunction FlowCancellationError() {\n this.message = \"FLOW_CANCELLED\";\n}\nFlowCancellationError.prototype = /*#__PURE__*/Object.create(Error.prototype);\nfunction isFlowCancellationError(error) {\n return error instanceof FlowCancellationError;\n}\nvar flowAnnotation = /*#__PURE__*/createFlowAnnotation(\"flow\");\nvar flowBoundAnnotation = /*#__PURE__*/createFlowAnnotation(\"flow.bound\", {\n bound: true\n});\nvar flow = /*#__PURE__*/Object.assign(function flow(arg1, arg2) {\n // @flow (2022.3 Decorators)\n if (is20223Decorator(arg2)) {\n return flowAnnotation.decorate_20223_(arg1, arg2);\n }\n // @flow\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, flowAnnotation);\n }\n // flow(fn)\n if (process.env.NODE_ENV !== \"production\" && arguments.length !== 1) {\n die(\"Flow expects single argument with generator function\");\n }\n var generator = arg1;\n var name = generator.name || \"\";\n // Implementation based on https://github.com/tj/co/blob/master/index.js\n var res = function res() {\n var ctx = this;\n var args = arguments;\n var runId = ++generatorId;\n var gen = action(name + \" - runid: \" + runId + \" - init\", generator).apply(ctx, args);\n var rejector;\n var pendingPromise = undefined;\n var promise = new Promise(function (resolve, reject) {\n var stepId = 0;\n rejector = reject;\n function onFulfilled(res) {\n pendingPromise = undefined;\n var ret;\n try {\n ret = action(name + \" - runid: \" + runId + \" - yield \" + stepId++, gen.next).call(gen, res);\n } catch (e) {\n return reject(e);\n }\n next(ret);\n }\n function onRejected(err) {\n pendingPromise = undefined;\n var ret;\n try {\n ret = action(name + \" - runid: \" + runId + \" - yield \" + stepId++, gen[\"throw\"]).call(gen, err);\n } catch (e) {\n return reject(e);\n }\n next(ret);\n }\n function next(ret) {\n if (isFunction(ret == null ? void 0 : ret.then)) {\n // an async iterator\n ret.then(next, reject);\n return;\n }\n if (ret.done) {\n return resolve(ret.value);\n }\n pendingPromise = Promise.resolve(ret.value);\n return pendingPromise.then(onFulfilled, onRejected);\n }\n onFulfilled(undefined); // kick off the process\n });\n\n promise.cancel = action(name + \" - runid: \" + runId + \" - cancel\", function () {\n try {\n if (pendingPromise) {\n cancelPromise(pendingPromise);\n }\n // Finally block can return (or yield) stuff..\n var _res = gen[\"return\"](undefined);\n // eat anything that promise would do, it's cancelled!\n var yieldedPromise = Promise.resolve(_res.value);\n yieldedPromise.then(noop, noop);\n cancelPromise(yieldedPromise); // maybe it can be cancelled :)\n // reject our original promise\n rejector(new FlowCancellationError());\n } catch (e) {\n rejector(e); // there could be a throwing finally block\n }\n });\n\n return promise;\n };\n res.isMobXFlow = true;\n return res;\n}, flowAnnotation);\nflow.bound = /*#__PURE__*/createDecoratorAnnotation(flowBoundAnnotation);\nfunction cancelPromise(promise) {\n if (isFunction(promise.cancel)) {\n promise.cancel();\n }\n}\nfunction flowResult(result) {\n return result; // just tricking TypeScript :)\n}\n\nfunction isFlow(fn) {\n return (fn == null ? void 0 : fn.isMobXFlow) === true;\n}\n\nfunction interceptReads(thing, propOrHandler, handler) {\n var target;\n if (isObservableMap(thing) || isObservableArray(thing) || isObservableValue(thing)) {\n target = getAdministration(thing);\n } else if (isObservableObject(thing)) {\n if (process.env.NODE_ENV !== \"production\" && !isStringish(propOrHandler)) {\n return die(\"InterceptReads can only be used with a specific property, not with an object in general\");\n }\n target = getAdministration(thing, propOrHandler);\n } else if (process.env.NODE_ENV !== \"production\") {\n return die(\"Expected observable map, object or array as first array\");\n }\n if (process.env.NODE_ENV !== \"production\" && target.dehancer !== undefined) {\n return die(\"An intercept reader was already established\");\n }\n target.dehancer = typeof propOrHandler === \"function\" ? propOrHandler : handler;\n return function () {\n target.dehancer = undefined;\n };\n}\n\nfunction intercept(thing, propOrHandler, handler) {\n if (isFunction(handler)) {\n return interceptProperty(thing, propOrHandler, handler);\n } else {\n return interceptInterceptable(thing, propOrHandler);\n }\n}\nfunction interceptInterceptable(thing, handler) {\n return getAdministration(thing).intercept_(handler);\n}\nfunction interceptProperty(thing, property, handler) {\n return getAdministration(thing, property).intercept_(handler);\n}\n\nfunction _isComputed(value, property) {\n if (property === undefined) {\n return isComputedValue(value);\n }\n if (isObservableObject(value) === false) {\n return false;\n }\n if (!value[$mobx].values_.has(property)) {\n return false;\n }\n var atom = getAtom(value, property);\n return isComputedValue(atom);\n}\nfunction isComputed(value) {\n if (process.env.NODE_ENV !== \"production\" && arguments.length > 1) {\n return die(\"isComputed expects only 1 argument. Use isComputedProp to inspect the observability of a property\");\n }\n return _isComputed(value);\n}\nfunction isComputedProp(value, propName) {\n if (process.env.NODE_ENV !== \"production\" && !isStringish(propName)) {\n return die(\"isComputed expected a property name as second argument\");\n }\n return _isComputed(value, propName);\n}\n\nfunction _isObservable(value, property) {\n if (!value) {\n return false;\n }\n if (property !== undefined) {\n if (process.env.NODE_ENV !== \"production\" && (isObservableMap(value) || isObservableArray(value))) {\n return die(\"isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead.\");\n }\n if (isObservableObject(value)) {\n return value[$mobx].values_.has(property);\n }\n return false;\n }\n // For first check, see #701\n return isObservableObject(value) || !!value[$mobx] || isAtom(value) || isReaction(value) || isComputedValue(value);\n}\nfunction isObservable(value) {\n if (process.env.NODE_ENV !== \"production\" && arguments.length !== 1) {\n die(\"isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property\");\n }\n return _isObservable(value);\n}\nfunction isObservableProp(value, propName) {\n if (process.env.NODE_ENV !== \"production\" && !isStringish(propName)) {\n return die(\"expected a property name as second argument\");\n }\n return _isObservable(value, propName);\n}\n\nfunction keys(obj) {\n if (isObservableObject(obj)) {\n return obj[$mobx].keys_();\n }\n if (isObservableMap(obj) || isObservableSet(obj)) {\n return Array.from(obj.keys());\n }\n if (isObservableArray(obj)) {\n return obj.map(function (_, index) {\n return index;\n });\n }\n die(5);\n}\nfunction values(obj) {\n if (isObservableObject(obj)) {\n return keys(obj).map(function (key) {\n return obj[key];\n });\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(function (key) {\n return obj.get(key);\n });\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.values());\n }\n if (isObservableArray(obj)) {\n return obj.slice();\n }\n die(6);\n}\nfunction entries(obj) {\n if (isObservableObject(obj)) {\n return keys(obj).map(function (key) {\n return [key, obj[key]];\n });\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(function (key) {\n return [key, obj.get(key)];\n });\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.entries());\n }\n if (isObservableArray(obj)) {\n return obj.map(function (key, index) {\n return [index, key];\n });\n }\n die(7);\n}\nfunction set(obj, key, value) {\n if (arguments.length === 2 && !isObservableSet(obj)) {\n startBatch();\n var _values = key;\n try {\n for (var _key in _values) {\n set(obj, _key, _values[_key]);\n }\n } finally {\n endBatch();\n }\n return;\n }\n if (isObservableObject(obj)) {\n obj[$mobx].set_(key, value);\n } else if (isObservableMap(obj)) {\n obj.set(key, value);\n } else if (isObservableSet(obj)) {\n obj.add(key);\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10);\n }\n if (key < 0) {\n die(\"Invalid index: '\" + key + \"'\");\n }\n startBatch();\n if (key >= obj.length) {\n obj.length = key + 1;\n }\n obj[key] = value;\n endBatch();\n } else {\n die(8);\n }\n}\nfunction remove(obj, key) {\n if (isObservableObject(obj)) {\n obj[$mobx].delete_(key);\n } else if (isObservableMap(obj)) {\n obj[\"delete\"](key);\n } else if (isObservableSet(obj)) {\n obj[\"delete\"](key);\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10);\n }\n obj.splice(key, 1);\n } else {\n die(9);\n }\n}\nfunction has(obj, key) {\n if (isObservableObject(obj)) {\n return obj[$mobx].has_(key);\n } else if (isObservableMap(obj)) {\n return obj.has(key);\n } else if (isObservableSet(obj)) {\n return obj.has(key);\n } else if (isObservableArray(obj)) {\n return key >= 0 && key < obj.length;\n }\n die(10);\n}\nfunction get(obj, key) {\n if (!has(obj, key)) {\n return undefined;\n }\n if (isObservableObject(obj)) {\n return obj[$mobx].get_(key);\n } else if (isObservableMap(obj)) {\n return obj.get(key);\n } else if (isObservableArray(obj)) {\n return obj[key];\n }\n die(11);\n}\nfunction apiDefineProperty(obj, key, descriptor) {\n if (isObservableObject(obj)) {\n return obj[$mobx].defineProperty_(key, descriptor);\n }\n die(39);\n}\nfunction apiOwnKeys(obj) {\n if (isObservableObject(obj)) {\n return obj[$mobx].ownKeys_();\n }\n die(38);\n}\n\nfunction observe(thing, propOrCb, cbOrFire, fireImmediately) {\n if (isFunction(cbOrFire)) {\n return observeObservableProperty(thing, propOrCb, cbOrFire, fireImmediately);\n } else {\n return observeObservable(thing, propOrCb, cbOrFire);\n }\n}\nfunction observeObservable(thing, listener, fireImmediately) {\n return getAdministration(thing).observe_(listener, fireImmediately);\n}\nfunction observeObservableProperty(thing, property, listener, fireImmediately) {\n return getAdministration(thing, property).observe_(listener, fireImmediately);\n}\n\nfunction cache(map, key, value) {\n map.set(key, value);\n return value;\n}\nfunction toJSHelper(source, __alreadySeen) {\n if (source == null || typeof source !== \"object\" || source instanceof Date || !isObservable(source)) {\n return source;\n }\n if (isObservableValue(source) || isComputedValue(source)) {\n return toJSHelper(source.get(), __alreadySeen);\n }\n if (__alreadySeen.has(source)) {\n return __alreadySeen.get(source);\n }\n if (isObservableArray(source)) {\n var res = cache(__alreadySeen, source, new Array(source.length));\n source.forEach(function (value, idx) {\n res[idx] = toJSHelper(value, __alreadySeen);\n });\n return res;\n }\n if (isObservableSet(source)) {\n var _res = cache(__alreadySeen, source, new Set());\n source.forEach(function (value) {\n _res.add(toJSHelper(value, __alreadySeen));\n });\n return _res;\n }\n if (isObservableMap(source)) {\n var _res2 = cache(__alreadySeen, source, new Map());\n source.forEach(function (value, key) {\n _res2.set(key, toJSHelper(value, __alreadySeen));\n });\n return _res2;\n } else {\n // must be observable object\n var _res3 = cache(__alreadySeen, source, {});\n apiOwnKeys(source).forEach(function (key) {\n if (objectPrototype.propertyIsEnumerable.call(source, key)) {\n _res3[key] = toJSHelper(source[key], __alreadySeen);\n }\n });\n return _res3;\n }\n}\n/**\n * Recursively converts an observable to it's non-observable native counterpart.\n * It does NOT recurse into non-observables, these are left as they are, even if they contain observables.\n * Computed and other non-enumerable properties are completely ignored.\n * Complex scenarios require custom solution, eg implementing `toJSON` or using `serializr` lib.\n */\nfunction toJS(source, options) {\n if (process.env.NODE_ENV !== \"production\" && options) {\n die(\"toJS no longer supports options\");\n }\n return toJSHelper(source, new Map());\n}\n\nfunction trace() {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n var enterBreakPoint = false;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[args.length - 1] === \"boolean\") {\n enterBreakPoint = args.pop();\n }\n var derivation = getAtomFromArgs(args);\n if (!derivation) {\n return die(\"'trace(break?)' can only be used inside a tracked computed value or a Reaction. Consider passing in the computed value or reaction explicitly\");\n }\n if (derivation.isTracing_ === TraceMode.NONE) {\n console.log(\"[mobx.trace] '\" + derivation.name_ + \"' tracing enabled\");\n }\n derivation.isTracing_ = enterBreakPoint ? TraceMode.BREAK : TraceMode.LOG;\n}\nfunction getAtomFromArgs(args) {\n switch (args.length) {\n case 0:\n return globalState.trackingDerivation;\n case 1:\n return getAtom(args[0]);\n case 2:\n return getAtom(args[0], args[1]);\n }\n}\n\n/**\n * During a transaction no views are updated until the end of the transaction.\n * The transaction will be run synchronously nonetheless.\n *\n * @param action a function that updates some reactive state\n * @returns any value that was returned by the 'action' parameter.\n */\nfunction transaction(action, thisArg) {\n if (thisArg === void 0) {\n thisArg = undefined;\n }\n startBatch();\n try {\n return action.apply(thisArg);\n } finally {\n endBatch();\n }\n}\n\nfunction when(predicate, arg1, arg2) {\n if (arguments.length === 1 || arg1 && typeof arg1 === \"object\") {\n return whenPromise(predicate, arg1);\n }\n return _when(predicate, arg1, arg2 || {});\n}\nfunction _when(predicate, effect, opts) {\n var timeoutHandle;\n if (typeof opts.timeout === \"number\") {\n var error = new Error(\"WHEN_TIMEOUT\");\n timeoutHandle = setTimeout(function () {\n if (!disposer[$mobx].isDisposed_) {\n disposer();\n if (opts.onError) {\n opts.onError(error);\n } else {\n throw error;\n }\n }\n }, opts.timeout);\n }\n opts.name = process.env.NODE_ENV !== \"production\" ? opts.name || \"When@\" + getNextId() : \"When\";\n var effectAction = createAction(process.env.NODE_ENV !== \"production\" ? opts.name + \"-effect\" : \"When-effect\", effect);\n // eslint-disable-next-line\n var disposer = autorun(function (r) {\n // predicate should not change state\n var cond = allowStateChanges(false, predicate);\n if (cond) {\n r.dispose();\n if (timeoutHandle) {\n clearTimeout(timeoutHandle);\n }\n effectAction();\n }\n }, opts);\n return disposer;\n}\nfunction whenPromise(predicate, opts) {\n var _opts$signal;\n if (process.env.NODE_ENV !== \"production\" && opts && opts.onError) {\n return die(\"the options 'onError' and 'promise' cannot be combined\");\n }\n if (opts != null && (_opts$signal = opts.signal) != null && _opts$signal.aborted) {\n return Object.assign(Promise.reject(new Error(\"WHEN_ABORTED\")), {\n cancel: function cancel() {\n return null;\n }\n });\n }\n var cancel;\n var abort;\n var res = new Promise(function (resolve, reject) {\n var _opts$signal2;\n var disposer = _when(predicate, resolve, _extends({}, opts, {\n onError: reject\n }));\n cancel = function cancel() {\n disposer();\n reject(new Error(\"WHEN_CANCELLED\"));\n };\n abort = function abort() {\n disposer();\n reject(new Error(\"WHEN_ABORTED\"));\n };\n opts == null ? void 0 : (_opts$signal2 = opts.signal) == null ? void 0 : _opts$signal2.addEventListener == null ? void 0 : _opts$signal2.addEventListener(\"abort\", abort);\n })[\"finally\"](function () {\n var _opts$signal3;\n return opts == null ? void 0 : (_opts$signal3 = opts.signal) == null ? void 0 : _opts$signal3.removeEventListener == null ? void 0 : _opts$signal3.removeEventListener(\"abort\", abort);\n });\n res.cancel = cancel;\n return res;\n}\n\nfunction getAdm(target) {\n return target[$mobx];\n}\n// Optimization: we don't need the intermediate objects and could have a completely custom administration for DynamicObjects,\n// and skip either the internal values map, or the base object with its property descriptors!\nvar objectProxyTraps = {\n has: function has(target, name) {\n if (process.env.NODE_ENV !== \"production\" && globalState.trackingDerivation) {\n warnAboutProxyRequirement(\"detect new properties using the 'in' operator. Use 'has' from 'mobx' instead.\");\n }\n return getAdm(target).has_(name);\n },\n get: function get(target, name) {\n return getAdm(target).get_(name);\n },\n set: function set(target, name, value) {\n var _getAdm$set_;\n if (!isStringish(name)) {\n return false;\n }\n if (process.env.NODE_ENV !== \"production\" && !getAdm(target).values_.has(name)) {\n warnAboutProxyRequirement(\"add a new observable property through direct assignment. Use 'set' from 'mobx' instead.\");\n }\n // null (intercepted) -> true (success)\n return (_getAdm$set_ = getAdm(target).set_(name, value, true)) != null ? _getAdm$set_ : true;\n },\n deleteProperty: function deleteProperty(target, name) {\n var _getAdm$delete_;\n if (process.env.NODE_ENV !== \"production\") {\n warnAboutProxyRequirement(\"delete properties from an observable object. Use 'remove' from 'mobx' instead.\");\n }\n if (!isStringish(name)) {\n return false;\n }\n // null (intercepted) -> true (success)\n return (_getAdm$delete_ = getAdm(target).delete_(name, true)) != null ? _getAdm$delete_ : true;\n },\n defineProperty: function defineProperty(target, name, descriptor) {\n var _getAdm$definePropert;\n if (process.env.NODE_ENV !== \"production\") {\n warnAboutProxyRequirement(\"define property on an observable object. Use 'defineProperty' from 'mobx' instead.\");\n }\n // null (intercepted) -> true (success)\n return (_getAdm$definePropert = getAdm(target).defineProperty_(name, descriptor)) != null ? _getAdm$definePropert : true;\n },\n ownKeys: function ownKeys(target) {\n if (process.env.NODE_ENV !== \"production\" && globalState.trackingDerivation) {\n warnAboutProxyRequirement(\"iterate keys to detect added / removed properties. Use 'keys' from 'mobx' instead.\");\n }\n return getAdm(target).ownKeys_();\n },\n preventExtensions: function preventExtensions(target) {\n die(13);\n }\n};\nfunction asDynamicObservableObject(target, options) {\n var _target$$mobx, _target$$mobx$proxy_;\n assertProxies();\n target = asObservableObject(target, options);\n return (_target$$mobx$proxy_ = (_target$$mobx = target[$mobx]).proxy_) != null ? _target$$mobx$proxy_ : _target$$mobx.proxy_ = new Proxy(target, objectProxyTraps);\n}\n\nfunction hasInterceptors(interceptable) {\n return interceptable.interceptors_ !== undefined && interceptable.interceptors_.length > 0;\n}\nfunction registerInterceptor(interceptable, handler) {\n var interceptors = interceptable.interceptors_ || (interceptable.interceptors_ = []);\n interceptors.push(handler);\n return once(function () {\n var idx = interceptors.indexOf(handler);\n if (idx !== -1) {\n interceptors.splice(idx, 1);\n }\n });\n}\nfunction interceptChange(interceptable, change) {\n var prevU = untrackedStart();\n try {\n // Interceptor can modify the array, copy it to avoid concurrent modification, see #1950\n var interceptors = [].concat(interceptable.interceptors_ || []);\n for (var i = 0, l = interceptors.length; i < l; i++) {\n change = interceptors[i](change);\n if (change && !change.type) {\n die(14);\n }\n if (!change) {\n break;\n }\n }\n return change;\n } finally {\n untrackedEnd(prevU);\n }\n}\n\nfunction hasListeners(listenable) {\n return listenable.changeListeners_ !== undefined && listenable.changeListeners_.length > 0;\n}\nfunction registerListener(listenable, handler) {\n var listeners = listenable.changeListeners_ || (listenable.changeListeners_ = []);\n listeners.push(handler);\n return once(function () {\n var idx = listeners.indexOf(handler);\n if (idx !== -1) {\n listeners.splice(idx, 1);\n }\n });\n}\nfunction notifyListeners(listenable, change) {\n var prevU = untrackedStart();\n var listeners = listenable.changeListeners_;\n if (!listeners) {\n return;\n }\n listeners = listeners.slice();\n for (var i = 0, l = listeners.length; i < l; i++) {\n listeners[i](change);\n }\n untrackedEnd(prevU);\n}\n\nfunction makeObservable(target, annotations, options) {\n initObservable(function () {\n var _annotations;\n var adm = asObservableObject(target, options)[$mobx];\n if (process.env.NODE_ENV !== \"production\" && annotations && target[storedAnnotationsSymbol]) {\n die(\"makeObservable second arg must be nullish when using decorators. Mixing @decorator syntax with annotations is not supported.\");\n }\n // Default to decorators\n (_annotations = annotations) != null ? _annotations : annotations = collectStoredAnnotations(target);\n // Annotate\n ownKeys(annotations).forEach(function (key) {\n return adm.make_(key, annotations[key]);\n });\n });\n return target;\n}\n// proto[keysSymbol] = new Set()\nvar keysSymbol = /*#__PURE__*/Symbol(\"mobx-keys\");\nfunction makeAutoObservable(target, overrides, options) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!isPlainObject(target) && !isPlainObject(Object.getPrototypeOf(target))) {\n die(\"'makeAutoObservable' can only be used for classes that don't have a superclass\");\n }\n if (isObservableObject(target)) {\n die(\"makeAutoObservable can only be used on objects not already made observable\");\n }\n }\n // Optimization: avoid visiting protos\n // Assumes that annotation.make_/.extend_ works the same for plain objects\n if (isPlainObject(target)) {\n return extendObservable(target, target, overrides, options);\n }\n initObservable(function () {\n var adm = asObservableObject(target, options)[$mobx];\n // Optimization: cache keys on proto\n // Assumes makeAutoObservable can be called only once per object and can't be used in subclass\n if (!target[keysSymbol]) {\n var proto = Object.getPrototypeOf(target);\n var keys = new Set([].concat(ownKeys(target), ownKeys(proto)));\n keys[\"delete\"](\"constructor\");\n keys[\"delete\"]($mobx);\n addHiddenProp(proto, keysSymbol, keys);\n }\n target[keysSymbol].forEach(function (key) {\n return adm.make_(key,\n // must pass \"undefined\" for { key: undefined }\n !overrides ? true : key in overrides ? overrides[key] : true);\n });\n });\n return target;\n}\n\nvar SPLICE = \"splice\";\nvar UPDATE = \"update\";\nvar MAX_SPLICE_SIZE = 10000; // See e.g. https://github.com/mobxjs/mobx/issues/859\nvar arrayTraps = {\n get: function get(target, name) {\n var adm = target[$mobx];\n if (name === $mobx) {\n return adm;\n }\n if (name === \"length\") {\n return adm.getArrayLength_();\n }\n if (typeof name === \"string\" && !isNaN(name)) {\n return adm.get_(parseInt(name));\n }\n if (hasProp(arrayExtensions, name)) {\n return arrayExtensions[name];\n }\n return target[name];\n },\n set: function set(target, name, value) {\n var adm = target[$mobx];\n if (name === \"length\") {\n adm.setArrayLength_(value);\n }\n if (typeof name === \"symbol\" || isNaN(name)) {\n target[name] = value;\n } else {\n // numeric string\n adm.set_(parseInt(name), value);\n }\n return true;\n },\n preventExtensions: function preventExtensions() {\n die(15);\n }\n};\nvar ObservableArrayAdministration = /*#__PURE__*/function () {\n // this is the prop that gets proxied, so can't replace it!\n\n function ObservableArrayAdministration(name, enhancer, owned_, legacyMode_) {\n if (name === void 0) {\n name = process.env.NODE_ENV !== \"production\" ? \"ObservableArray@\" + getNextId() : \"ObservableArray\";\n }\n this.owned_ = void 0;\n this.legacyMode_ = void 0;\n this.atom_ = void 0;\n this.values_ = [];\n this.interceptors_ = void 0;\n this.changeListeners_ = void 0;\n this.enhancer_ = void 0;\n this.dehancer = void 0;\n this.proxy_ = void 0;\n this.lastKnownLength_ = 0;\n this.owned_ = owned_;\n this.legacyMode_ = legacyMode_;\n this.atom_ = new Atom(name);\n this.enhancer_ = function (newV, oldV) {\n return enhancer(newV, oldV, process.env.NODE_ENV !== \"production\" ? name + \"[..]\" : \"ObservableArray[..]\");\n };\n }\n var _proto = ObservableArrayAdministration.prototype;\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.dehanceValues_ = function dehanceValues_(values) {\n if (this.dehancer !== undefined && values.length > 0) {\n return values.map(this.dehancer);\n }\n return values;\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (fireImmediately === void 0) {\n fireImmediately = false;\n }\n if (fireImmediately) {\n listener({\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: \"splice\",\n index: 0,\n added: this.values_.slice(),\n addedCount: this.values_.length,\n removed: [],\n removedCount: 0\n });\n }\n return registerListener(this, listener);\n };\n _proto.getArrayLength_ = function getArrayLength_() {\n this.atom_.reportObserved();\n return this.values_.length;\n };\n _proto.setArrayLength_ = function setArrayLength_(newLength) {\n if (typeof newLength !== \"number\" || isNaN(newLength) || newLength < 0) {\n die(\"Out of range: \" + newLength);\n }\n var currentLength = this.values_.length;\n if (newLength === currentLength) {\n return;\n } else if (newLength > currentLength) {\n var newItems = new Array(newLength - currentLength);\n for (var i = 0; i < newLength - currentLength; i++) {\n newItems[i] = undefined;\n } // No Array.fill everywhere...\n this.spliceWithArray_(currentLength, 0, newItems);\n } else {\n this.spliceWithArray_(newLength, currentLength - newLength);\n }\n };\n _proto.updateArrayLength_ = function updateArrayLength_(oldLength, delta) {\n if (oldLength !== this.lastKnownLength_) {\n die(16);\n }\n this.lastKnownLength_ += delta;\n if (this.legacyMode_ && delta > 0) {\n reserveArrayBuffer(oldLength + delta + 1);\n }\n };\n _proto.spliceWithArray_ = function spliceWithArray_(index, deleteCount, newItems) {\n var _this = this;\n checkIfStateModificationsAreAllowed(this.atom_);\n var length = this.values_.length;\n if (index === undefined) {\n index = 0;\n } else if (index > length) {\n index = length;\n } else if (index < 0) {\n index = Math.max(0, length + index);\n }\n if (arguments.length === 1) {\n deleteCount = length - index;\n } else if (deleteCount === undefined || deleteCount === null) {\n deleteCount = 0;\n } else {\n deleteCount = Math.max(0, Math.min(deleteCount, length - index));\n }\n if (newItems === undefined) {\n newItems = EMPTY_ARRAY;\n }\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_,\n type: SPLICE,\n index: index,\n removedCount: deleteCount,\n added: newItems\n });\n if (!change) {\n return EMPTY_ARRAY;\n }\n deleteCount = change.removedCount;\n newItems = change.added;\n }\n newItems = newItems.length === 0 ? newItems : newItems.map(function (v) {\n return _this.enhancer_(v, undefined);\n });\n if (this.legacyMode_ || process.env.NODE_ENV !== \"production\") {\n var lengthDelta = newItems.length - deleteCount;\n this.updateArrayLength_(length, lengthDelta); // checks if internal array wasn't modified\n }\n\n var res = this.spliceItemsIntoValues_(index, deleteCount, newItems);\n if (deleteCount !== 0 || newItems.length !== 0) {\n this.notifyArraySplice_(index, newItems, res);\n }\n return this.dehanceValues_(res);\n };\n _proto.spliceItemsIntoValues_ = function spliceItemsIntoValues_(index, deleteCount, newItems) {\n if (newItems.length < MAX_SPLICE_SIZE) {\n var _this$values_;\n return (_this$values_ = this.values_).splice.apply(_this$values_, [index, deleteCount].concat(newItems));\n } else {\n // The items removed by the splice\n var res = this.values_.slice(index, index + deleteCount);\n // The items that that should remain at the end of the array\n var oldItems = this.values_.slice(index + deleteCount);\n // New length is the previous length + addition count - deletion count\n this.values_.length += newItems.length - deleteCount;\n for (var i = 0; i < newItems.length; i++) {\n this.values_[index + i] = newItems[i];\n }\n for (var _i = 0; _i < oldItems.length; _i++) {\n this.values_[index + newItems.length + _i] = oldItems[_i];\n }\n return res;\n }\n };\n _proto.notifyArrayChildUpdate_ = function notifyArrayChildUpdate_(index, newValue, oldValue) {\n var notifySpy = !this.owned_ && isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"array\",\n object: this.proxy_,\n type: UPDATE,\n debugObjectName: this.atom_.name_,\n index: index,\n newValue: newValue,\n oldValue: oldValue\n } : null;\n // The reason why this is on right hand side here (and not above), is this way the uglifier will drop it, but it won't\n // cause any runtime overhead in development mode without NODE_ENV set, unless spying is enabled\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(change);\n }\n this.atom_.reportChanged();\n if (notify) {\n notifyListeners(this, change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n };\n _proto.notifyArraySplice_ = function notifyArraySplice_(index, added, removed) {\n var notifySpy = !this.owned_ && isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: SPLICE,\n index: index,\n removed: removed,\n added: added,\n removedCount: removed.length,\n addedCount: added.length\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(change);\n }\n this.atom_.reportChanged();\n // conform: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/observe\n if (notify) {\n notifyListeners(this, change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n };\n _proto.get_ = function get_(index) {\n if (this.legacyMode_ && index >= this.values_.length) {\n console.warn(process.env.NODE_ENV !== \"production\" ? \"[mobx.array] Attempt to read an array index (\" + index + \") that is out of bounds (\" + this.values_.length + \"). Please check length first. Out of bound indices will not be tracked by MobX\" : \"[mobx] Out of bounds read: \" + index);\n return undefined;\n }\n this.atom_.reportObserved();\n return this.dehanceValue_(this.values_[index]);\n };\n _proto.set_ = function set_(index, newValue) {\n var values = this.values_;\n if (this.legacyMode_ && index > values.length) {\n // out of bounds\n die(17, index, values.length);\n }\n if (index < values.length) {\n // update at index in range\n checkIfStateModificationsAreAllowed(this.atom_);\n var oldValue = values[index];\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: UPDATE,\n object: this.proxy_,\n index: index,\n newValue: newValue\n });\n if (!change) {\n return;\n }\n newValue = change.newValue;\n }\n newValue = this.enhancer_(newValue, oldValue);\n var changed = newValue !== oldValue;\n if (changed) {\n values[index] = newValue;\n this.notifyArrayChildUpdate_(index, newValue, oldValue);\n }\n } else {\n // For out of bound index, we don't create an actual sparse array,\n // but rather fill the holes with undefined (same as setArrayLength_).\n // This could be considered a bug.\n var newItems = new Array(index + 1 - values.length);\n for (var i = 0; i < newItems.length - 1; i++) {\n newItems[i] = undefined;\n } // No Array.fill everywhere...\n newItems[newItems.length - 1] = newValue;\n this.spliceWithArray_(values.length, 0, newItems);\n }\n };\n return ObservableArrayAdministration;\n}();\nfunction createObservableArray(initialValues, enhancer, name, owned) {\n if (name === void 0) {\n name = process.env.NODE_ENV !== \"production\" ? \"ObservableArray@\" + getNextId() : \"ObservableArray\";\n }\n if (owned === void 0) {\n owned = false;\n }\n assertProxies();\n return initObservable(function () {\n var adm = new ObservableArrayAdministration(name, enhancer, owned, false);\n addHiddenFinalProp(adm.values_, $mobx, adm);\n var proxy = new Proxy(adm.values_, arrayTraps);\n adm.proxy_ = proxy;\n if (initialValues && initialValues.length) {\n adm.spliceWithArray_(0, 0, initialValues);\n }\n return proxy;\n });\n}\n// eslint-disable-next-line\nvar arrayExtensions = {\n clear: function clear() {\n return this.splice(0);\n },\n replace: function replace(newItems) {\n var adm = this[$mobx];\n return adm.spliceWithArray_(0, adm.values_.length, newItems);\n },\n // Used by JSON.stringify\n toJSON: function toJSON() {\n return this.slice();\n },\n /*\n * functions that do alter the internal structure of the array, (based on lib.es6.d.ts)\n * since these functions alter the inner structure of the array, the have side effects.\n * Because the have side effects, they should not be used in computed function,\n * and for that reason the do not call dependencyState.notifyObserved\n */\n splice: function splice(index, deleteCount) {\n for (var _len = arguments.length, newItems = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n newItems[_key - 2] = arguments[_key];\n }\n var adm = this[$mobx];\n switch (arguments.length) {\n case 0:\n return [];\n case 1:\n return adm.spliceWithArray_(index);\n case 2:\n return adm.spliceWithArray_(index, deleteCount);\n }\n return adm.spliceWithArray_(index, deleteCount, newItems);\n },\n spliceWithArray: function spliceWithArray(index, deleteCount, newItems) {\n return this[$mobx].spliceWithArray_(index, deleteCount, newItems);\n },\n push: function push() {\n var adm = this[$mobx];\n for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n adm.spliceWithArray_(adm.values_.length, 0, items);\n return adm.values_.length;\n },\n pop: function pop() {\n return this.splice(Math.max(this[$mobx].values_.length - 1, 0), 1)[0];\n },\n shift: function shift() {\n return this.splice(0, 1)[0];\n },\n unshift: function unshift() {\n var adm = this[$mobx];\n for (var _len3 = arguments.length, items = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n items[_key3] = arguments[_key3];\n }\n adm.spliceWithArray_(0, 0, items);\n return adm.values_.length;\n },\n reverse: function reverse() {\n // reverse by default mutates in place before returning the result\n // which makes it both a 'derivation' and a 'mutation'.\n if (globalState.trackingDerivation) {\n die(37, \"reverse\");\n }\n this.replace(this.slice().reverse());\n return this;\n },\n sort: function sort() {\n // sort by default mutates in place before returning the result\n // which goes against all good practices. Let's not change the array in place!\n if (globalState.trackingDerivation) {\n die(37, \"sort\");\n }\n var copy = this.slice();\n copy.sort.apply(copy, arguments);\n this.replace(copy);\n return this;\n },\n remove: function remove(value) {\n var adm = this[$mobx];\n var idx = adm.dehanceValues_(adm.values_).indexOf(value);\n if (idx > -1) {\n this.splice(idx, 1);\n return true;\n }\n return false;\n }\n};\n/**\n * Wrap function from prototype\n * Without this, everything works as well, but this works\n * faster as everything works on unproxied values\n */\naddArrayExtension(\"at\", simpleFunc);\naddArrayExtension(\"concat\", simpleFunc);\naddArrayExtension(\"flat\", simpleFunc);\naddArrayExtension(\"includes\", simpleFunc);\naddArrayExtension(\"indexOf\", simpleFunc);\naddArrayExtension(\"join\", simpleFunc);\naddArrayExtension(\"lastIndexOf\", simpleFunc);\naddArrayExtension(\"slice\", simpleFunc);\naddArrayExtension(\"toString\", simpleFunc);\naddArrayExtension(\"toLocaleString\", simpleFunc);\naddArrayExtension(\"toSorted\", simpleFunc);\naddArrayExtension(\"toSpliced\", simpleFunc);\naddArrayExtension(\"with\", simpleFunc);\n// map\naddArrayExtension(\"every\", mapLikeFunc);\naddArrayExtension(\"filter\", mapLikeFunc);\naddArrayExtension(\"find\", mapLikeFunc);\naddArrayExtension(\"findIndex\", mapLikeFunc);\naddArrayExtension(\"findLast\", mapLikeFunc);\naddArrayExtension(\"findLastIndex\", mapLikeFunc);\naddArrayExtension(\"flatMap\", mapLikeFunc);\naddArrayExtension(\"forEach\", mapLikeFunc);\naddArrayExtension(\"map\", mapLikeFunc);\naddArrayExtension(\"some\", mapLikeFunc);\naddArrayExtension(\"toReversed\", mapLikeFunc);\n// reduce\naddArrayExtension(\"reduce\", reduceLikeFunc);\naddArrayExtension(\"reduceRight\", reduceLikeFunc);\nfunction addArrayExtension(funcName, funcFactory) {\n if (typeof Array.prototype[funcName] === \"function\") {\n arrayExtensions[funcName] = funcFactory(funcName);\n }\n}\n// Report and delegate to dehanced array\nfunction simpleFunc(funcName) {\n return function () {\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n return dehancedValues[funcName].apply(dehancedValues, arguments);\n };\n}\n// Make sure callbacks recieve correct array arg #2326\nfunction mapLikeFunc(funcName) {\n return function (callback, thisArg) {\n var _this2 = this;\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n return dehancedValues[funcName](function (element, index) {\n return callback.call(thisArg, element, index, _this2);\n });\n };\n}\n// Make sure callbacks recieve correct array arg #2326\nfunction reduceLikeFunc(funcName) {\n return function () {\n var _this3 = this;\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n // #2432 - reduce behavior depends on arguments.length\n var callback = arguments[0];\n arguments[0] = function (accumulator, currentValue, index) {\n return callback(accumulator, currentValue, index, _this3);\n };\n return dehancedValues[funcName].apply(dehancedValues, arguments);\n };\n}\nvar isObservableArrayAdministration = /*#__PURE__*/createInstanceofPredicate(\"ObservableArrayAdministration\", ObservableArrayAdministration);\nfunction isObservableArray(thing) {\n return isObject(thing) && isObservableArrayAdministration(thing[$mobx]);\n}\n\nvar _Symbol$iterator, _Symbol$toStringTag;\nvar ObservableMapMarker = {};\nvar ADD = \"add\";\nvar DELETE = \"delete\";\n// just extend Map? See also https://gist.github.com/nestharus/13b4d74f2ef4a2f4357dbd3fc23c1e54\n// But: https://github.com/mobxjs/mobx/issues/1556\n_Symbol$iterator = Symbol.iterator;\n_Symbol$toStringTag = Symbol.toStringTag;\nvar ObservableMap = /*#__PURE__*/function () {\n // hasMap, not hashMap >-).\n\n function ObservableMap(initialData, enhancer_, name_) {\n var _this = this;\n if (enhancer_ === void 0) {\n enhancer_ = deepEnhancer;\n }\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"ObservableMap@\" + getNextId() : \"ObservableMap\";\n }\n this.enhancer_ = void 0;\n this.name_ = void 0;\n this[$mobx] = ObservableMapMarker;\n this.data_ = void 0;\n this.hasMap_ = void 0;\n this.keysAtom_ = void 0;\n this.interceptors_ = void 0;\n this.changeListeners_ = void 0;\n this.dehancer = void 0;\n this.enhancer_ = enhancer_;\n this.name_ = name_;\n if (!isFunction(Map)) {\n die(18);\n }\n initObservable(function () {\n _this.keysAtom_ = createAtom(process.env.NODE_ENV !== \"production\" ? _this.name_ + \".keys()\" : \"ObservableMap.keys()\");\n _this.data_ = new Map();\n _this.hasMap_ = new Map();\n if (initialData) {\n _this.merge(initialData);\n }\n });\n }\n var _proto = ObservableMap.prototype;\n _proto.has_ = function has_(key) {\n return this.data_.has(key);\n };\n _proto.has = function has(key) {\n var _this2 = this;\n if (!globalState.trackingDerivation) {\n return this.has_(key);\n }\n var entry = this.hasMap_.get(key);\n if (!entry) {\n var newEntry = entry = new ObservableValue(this.has_(key), referenceEnhancer, process.env.NODE_ENV !== \"production\" ? this.name_ + \".\" + stringifyKey(key) + \"?\" : \"ObservableMap.key?\", false);\n this.hasMap_.set(key, newEntry);\n onBecomeUnobserved(newEntry, function () {\n return _this2.hasMap_[\"delete\"](key);\n });\n }\n return entry.get();\n };\n _proto.set = function set(key, value) {\n var hasKey = this.has_(key);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: hasKey ? UPDATE : ADD,\n object: this,\n newValue: value,\n name: key\n });\n if (!change) {\n return this;\n }\n value = change.newValue;\n }\n if (hasKey) {\n this.updateValue_(key, value);\n } else {\n this.addValue_(key, value);\n }\n return this;\n };\n _proto[\"delete\"] = function _delete(key) {\n var _this3 = this;\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: DELETE,\n object: this,\n name: key\n });\n if (!change) {\n return false;\n }\n }\n if (this.has_(key)) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var _change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: this.data_.get(key).value_,\n name: key\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(_change);\n } // TODO fix type\n transaction(function () {\n var _this3$hasMap_$get;\n _this3.keysAtom_.reportChanged();\n (_this3$hasMap_$get = _this3.hasMap_.get(key)) == null ? void 0 : _this3$hasMap_$get.setNewValue_(false);\n var observable = _this3.data_.get(key);\n observable.setNewValue_(undefined);\n _this3.data_[\"delete\"](key);\n });\n if (notify) {\n notifyListeners(this, _change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n return true;\n }\n return false;\n };\n _proto.updateValue_ = function updateValue_(key, newValue) {\n var observable = this.data_.get(key);\n newValue = observable.prepareNewValue_(newValue);\n if (newValue !== globalState.UNCHANGED) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n oldValue: observable.value_,\n name: key,\n newValue: newValue\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(change);\n } // TODO fix type\n observable.setNewValue_(newValue);\n if (notify) {\n notifyListeners(this, change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n };\n _proto.addValue_ = function addValue_(key, newValue) {\n var _this4 = this;\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n transaction(function () {\n var _this4$hasMap_$get;\n var observable = new ObservableValue(newValue, _this4.enhancer_, process.env.NODE_ENV !== \"production\" ? _this4.name_ + \".\" + stringifyKey(key) : \"ObservableMap.key\", false);\n _this4.data_.set(key, observable);\n newValue = observable.value_; // value might have been changed\n (_this4$hasMap_$get = _this4.hasMap_.get(key)) == null ? void 0 : _this4$hasMap_$get.setNewValue_(true);\n _this4.keysAtom_.reportChanged();\n });\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n name: key,\n newValue: newValue\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(change);\n } // TODO fix type\n if (notify) {\n notifyListeners(this, change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n };\n _proto.get = function get(key) {\n if (this.has(key)) {\n return this.dehanceValue_(this.data_.get(key).get());\n }\n return this.dehanceValue_(undefined);\n };\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.keys = function keys() {\n this.keysAtom_.reportObserved();\n return this.data_.keys();\n };\n _proto.values = function values() {\n var self = this;\n var keys = this.keys();\n return makeIterable({\n next: function next() {\n var _keys$next = keys.next(),\n done = _keys$next.done,\n value = _keys$next.value;\n return {\n done: done,\n value: done ? undefined : self.get(value)\n };\n }\n });\n };\n _proto.entries = function entries() {\n var self = this;\n var keys = this.keys();\n return makeIterable({\n next: function next() {\n var _keys$next2 = keys.next(),\n done = _keys$next2.done,\n value = _keys$next2.value;\n return {\n done: done,\n value: done ? undefined : [value, self.get(value)]\n };\n }\n });\n };\n _proto[_Symbol$iterator] = function () {\n return this.entries();\n };\n _proto.forEach = function forEach(callback, thisArg) {\n for (var _iterator = _createForOfIteratorHelperLoose(this), _step; !(_step = _iterator()).done;) {\n var _step$value = _step.value,\n key = _step$value[0],\n value = _step$value[1];\n callback.call(thisArg, value, key, this);\n }\n }\n /** Merge another object into this object, returns this. */;\n _proto.merge = function merge(other) {\n var _this5 = this;\n if (isObservableMap(other)) {\n other = new Map(other);\n }\n transaction(function () {\n if (isPlainObject(other)) {\n getPlainObjectKeys(other).forEach(function (key) {\n return _this5.set(key, other[key]);\n });\n } else if (Array.isArray(other)) {\n other.forEach(function (_ref) {\n var key = _ref[0],\n value = _ref[1];\n return _this5.set(key, value);\n });\n } else if (isES6Map(other)) {\n if (other.constructor !== Map) {\n die(19, other);\n }\n other.forEach(function (value, key) {\n return _this5.set(key, value);\n });\n } else if (other !== null && other !== undefined) {\n die(20, other);\n }\n });\n return this;\n };\n _proto.clear = function clear() {\n var _this6 = this;\n transaction(function () {\n untracked(function () {\n for (var _iterator2 = _createForOfIteratorHelperLoose(_this6.keys()), _step2; !(_step2 = _iterator2()).done;) {\n var key = _step2.value;\n _this6[\"delete\"](key);\n }\n });\n });\n };\n _proto.replace = function replace(values) {\n var _this7 = this;\n // Implementation requirements:\n // - respect ordering of replacement map\n // - allow interceptors to run and potentially prevent individual operations\n // - don't recreate observables that already exist in original map (so we don't destroy existing subscriptions)\n // - don't _keysAtom.reportChanged if the keys of resulting map are indentical (order matters!)\n // - note that result map may differ from replacement map due to the interceptors\n transaction(function () {\n // Convert to map so we can do quick key lookups\n var replacementMap = convertToMap(values);\n var orderedData = new Map();\n // Used for optimization\n var keysReportChangedCalled = false;\n // Delete keys that don't exist in replacement map\n // if the key deletion is prevented by interceptor\n // add entry at the beginning of the result map\n for (var _iterator3 = _createForOfIteratorHelperLoose(_this7.data_.keys()), _step3; !(_step3 = _iterator3()).done;) {\n var key = _step3.value;\n // Concurrently iterating/deleting keys\n // iterator should handle this correctly\n if (!replacementMap.has(key)) {\n var deleted = _this7[\"delete\"](key);\n // Was the key removed?\n if (deleted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true;\n } else {\n // Delete prevented by interceptor\n var value = _this7.data_.get(key);\n orderedData.set(key, value);\n }\n }\n }\n // Merge entries\n for (var _iterator4 = _createForOfIteratorHelperLoose(replacementMap.entries()), _step4; !(_step4 = _iterator4()).done;) {\n var _step4$value = _step4.value,\n _key = _step4$value[0],\n _value = _step4$value[1];\n // We will want to know whether a new key is added\n var keyExisted = _this7.data_.has(_key);\n // Add or update value\n _this7.set(_key, _value);\n // The addition could have been prevent by interceptor\n if (_this7.data_.has(_key)) {\n // The update could have been prevented by interceptor\n // and also we want to preserve existing values\n // so use value from _data map (instead of replacement map)\n var _value2 = _this7.data_.get(_key);\n orderedData.set(_key, _value2);\n // Was a new key added?\n if (!keyExisted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true;\n }\n }\n }\n // Check for possible key order change\n if (!keysReportChangedCalled) {\n if (_this7.data_.size !== orderedData.size) {\n // If size differs, keys are definitely modified\n _this7.keysAtom_.reportChanged();\n } else {\n var iter1 = _this7.data_.keys();\n var iter2 = orderedData.keys();\n var next1 = iter1.next();\n var next2 = iter2.next();\n while (!next1.done) {\n if (next1.value !== next2.value) {\n _this7.keysAtom_.reportChanged();\n break;\n }\n next1 = iter1.next();\n next2 = iter2.next();\n }\n }\n }\n // Use correctly ordered map\n _this7.data_ = orderedData;\n });\n return this;\n };\n _proto.toString = function toString() {\n return \"[object ObservableMap]\";\n };\n _proto.toJSON = function toJSON() {\n return Array.from(this);\n };\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (process.env.NODE_ENV !== \"production\" && fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with maps.\");\n }\n return registerListener(this, listener);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _createClass(ObservableMap, [{\n key: \"size\",\n get: function get() {\n this.keysAtom_.reportObserved();\n return this.data_.size;\n }\n }, {\n key: _Symbol$toStringTag,\n get: function get() {\n return \"Map\";\n }\n }]);\n return ObservableMap;\n}();\n// eslint-disable-next-line\nvar isObservableMap = /*#__PURE__*/createInstanceofPredicate(\"ObservableMap\", ObservableMap);\nfunction convertToMap(dataStructure) {\n if (isES6Map(dataStructure) || isObservableMap(dataStructure)) {\n return dataStructure;\n } else if (Array.isArray(dataStructure)) {\n return new Map(dataStructure);\n } else if (isPlainObject(dataStructure)) {\n var map = new Map();\n for (var key in dataStructure) {\n map.set(key, dataStructure[key]);\n }\n return map;\n } else {\n return die(21, dataStructure);\n }\n}\n\nvar _Symbol$iterator$1, _Symbol$toStringTag$1;\nvar ObservableSetMarker = {};\n_Symbol$iterator$1 = Symbol.iterator;\n_Symbol$toStringTag$1 = Symbol.toStringTag;\nvar ObservableSet = /*#__PURE__*/function () {\n function ObservableSet(initialData, enhancer, name_) {\n var _this = this;\n if (enhancer === void 0) {\n enhancer = deepEnhancer;\n }\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"ObservableSet@\" + getNextId() : \"ObservableSet\";\n }\n this.name_ = void 0;\n this[$mobx] = ObservableSetMarker;\n this.data_ = new Set();\n this.atom_ = void 0;\n this.changeListeners_ = void 0;\n this.interceptors_ = void 0;\n this.dehancer = void 0;\n this.enhancer_ = void 0;\n this.name_ = name_;\n if (!isFunction(Set)) {\n die(22);\n }\n this.enhancer_ = function (newV, oldV) {\n return enhancer(newV, oldV, name_);\n };\n initObservable(function () {\n _this.atom_ = createAtom(_this.name_);\n if (initialData) {\n _this.replace(initialData);\n }\n });\n }\n var _proto = ObservableSet.prototype;\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.clear = function clear() {\n var _this2 = this;\n transaction(function () {\n untracked(function () {\n for (var _iterator = _createForOfIteratorHelperLoose(_this2.data_.values()), _step; !(_step = _iterator()).done;) {\n var value = _step.value;\n _this2[\"delete\"](value);\n }\n });\n });\n };\n _proto.forEach = function forEach(callbackFn, thisArg) {\n for (var _iterator2 = _createForOfIteratorHelperLoose(this), _step2; !(_step2 = _iterator2()).done;) {\n var value = _step2.value;\n callbackFn.call(thisArg, value, value, this);\n }\n };\n _proto.add = function add(value) {\n var _this3 = this;\n checkIfStateModificationsAreAllowed(this.atom_);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: ADD,\n object: this,\n newValue: value\n });\n if (!change) {\n return this;\n }\n // ideally, value = change.value would be done here, so that values can be\n // changed by interceptor. Same applies for other Set and Map api's.\n }\n\n if (!this.has(value)) {\n transaction(function () {\n _this3.data_.add(_this3.enhancer_(value, undefined));\n _this3.atom_.reportChanged();\n });\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n var notify = hasListeners(this);\n var _change = notify || notifySpy ? {\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n newValue: value\n } : null;\n if (notifySpy && process.env.NODE_ENV !== \"production\") {\n spyReportStart(_change);\n }\n if (notify) {\n notifyListeners(this, _change);\n }\n if (notifySpy && process.env.NODE_ENV !== \"production\") {\n spyReportEnd();\n }\n }\n return this;\n };\n _proto[\"delete\"] = function _delete(value) {\n var _this4 = this;\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: DELETE,\n object: this,\n oldValue: value\n });\n if (!change) {\n return false;\n }\n }\n if (this.has(value)) {\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n var notify = hasListeners(this);\n var _change2 = notify || notifySpy ? {\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: value\n } : null;\n if (notifySpy && process.env.NODE_ENV !== \"production\") {\n spyReportStart(_change2);\n }\n transaction(function () {\n _this4.atom_.reportChanged();\n _this4.data_[\"delete\"](value);\n });\n if (notify) {\n notifyListeners(this, _change2);\n }\n if (notifySpy && process.env.NODE_ENV !== \"production\") {\n spyReportEnd();\n }\n return true;\n }\n return false;\n };\n _proto.has = function has(value) {\n this.atom_.reportObserved();\n return this.data_.has(this.dehanceValue_(value));\n };\n _proto.entries = function entries() {\n var nextIndex = 0;\n var keys = Array.from(this.keys());\n var values = Array.from(this.values());\n return makeIterable({\n next: function next() {\n var index = nextIndex;\n nextIndex += 1;\n return index < values.length ? {\n value: [keys[index], values[index]],\n done: false\n } : {\n done: true\n };\n }\n });\n };\n _proto.keys = function keys() {\n return this.values();\n };\n _proto.values = function values() {\n this.atom_.reportObserved();\n var self = this;\n var nextIndex = 0;\n var observableValues = Array.from(this.data_.values());\n return makeIterable({\n next: function next() {\n return nextIndex < observableValues.length ? {\n value: self.dehanceValue_(observableValues[nextIndex++]),\n done: false\n } : {\n done: true\n };\n }\n });\n };\n _proto.replace = function replace(other) {\n var _this5 = this;\n if (isObservableSet(other)) {\n other = new Set(other);\n }\n transaction(function () {\n if (Array.isArray(other)) {\n _this5.clear();\n other.forEach(function (value) {\n return _this5.add(value);\n });\n } else if (isES6Set(other)) {\n _this5.clear();\n other.forEach(function (value) {\n return _this5.add(value);\n });\n } else if (other !== null && other !== undefined) {\n die(\"Cannot initialize set from \" + other);\n }\n });\n return this;\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n // ... 'fireImmediately' could also be true?\n if (process.env.NODE_ENV !== \"production\" && fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with sets.\");\n }\n return registerListener(this, listener);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.toJSON = function toJSON() {\n return Array.from(this);\n };\n _proto.toString = function toString() {\n return \"[object ObservableSet]\";\n };\n _proto[_Symbol$iterator$1] = function () {\n return this.values();\n };\n _createClass(ObservableSet, [{\n key: \"size\",\n get: function get() {\n this.atom_.reportObserved();\n return this.data_.size;\n }\n }, {\n key: _Symbol$toStringTag$1,\n get: function get() {\n return \"Set\";\n }\n }]);\n return ObservableSet;\n}();\n// eslint-disable-next-line\nvar isObservableSet = /*#__PURE__*/createInstanceofPredicate(\"ObservableSet\", ObservableSet);\n\nvar descriptorCache = /*#__PURE__*/Object.create(null);\nvar REMOVE = \"remove\";\nvar ObservableObjectAdministration = /*#__PURE__*/function () {\n function ObservableObjectAdministration(target_, values_, name_,\n // Used anytime annotation is not explicitely provided\n defaultAnnotation_) {\n if (values_ === void 0) {\n values_ = new Map();\n }\n if (defaultAnnotation_ === void 0) {\n defaultAnnotation_ = autoAnnotation;\n }\n this.target_ = void 0;\n this.values_ = void 0;\n this.name_ = void 0;\n this.defaultAnnotation_ = void 0;\n this.keysAtom_ = void 0;\n this.changeListeners_ = void 0;\n this.interceptors_ = void 0;\n this.proxy_ = void 0;\n this.isPlainObject_ = void 0;\n this.appliedAnnotations_ = void 0;\n this.pendingKeys_ = void 0;\n this.target_ = target_;\n this.values_ = values_;\n this.name_ = name_;\n this.defaultAnnotation_ = defaultAnnotation_;\n this.keysAtom_ = new Atom(process.env.NODE_ENV !== \"production\" ? this.name_ + \".keys\" : \"ObservableObject.keys\");\n // Optimization: we use this frequently\n this.isPlainObject_ = isPlainObject(this.target_);\n if (process.env.NODE_ENV !== \"production\" && !isAnnotation(this.defaultAnnotation_)) {\n die(\"defaultAnnotation must be valid annotation\");\n }\n if (process.env.NODE_ENV !== \"production\") {\n // Prepare structure for tracking which fields were already annotated\n this.appliedAnnotations_ = {};\n }\n }\n var _proto = ObservableObjectAdministration.prototype;\n _proto.getObservablePropValue_ = function getObservablePropValue_(key) {\n return this.values_.get(key).get();\n };\n _proto.setObservablePropValue_ = function setObservablePropValue_(key, newValue) {\n var observable = this.values_.get(key);\n if (observable instanceof ComputedValue) {\n observable.set(newValue);\n return true;\n }\n // intercept\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: UPDATE,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: newValue\n });\n if (!change) {\n return null;\n }\n newValue = change.newValue;\n }\n newValue = observable.prepareNewValue_(newValue);\n // notify spy & observers\n if (newValue !== globalState.UNCHANGED) {\n var notify = hasListeners(this);\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n var _change = notify || notifySpy ? {\n type: UPDATE,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n oldValue: observable.value_,\n name: key,\n newValue: newValue\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(_change);\n }\n observable.setNewValue_(newValue);\n if (notify) {\n notifyListeners(this, _change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n return true;\n };\n _proto.get_ = function get_(key) {\n if (globalState.trackingDerivation && !hasProp(this.target_, key)) {\n // Key doesn't exist yet, subscribe for it in case it's added later\n this.has_(key);\n }\n return this.target_[key];\n }\n /**\n * @param {PropertyKey} key\n * @param {any} value\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */;\n _proto.set_ = function set_(key, value, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n // Don't use .has(key) - we care about own\n if (hasProp(this.target_, key)) {\n // Existing prop\n if (this.values_.has(key)) {\n // Observable (can be intercepted)\n return this.setObservablePropValue_(key, value);\n } else if (proxyTrap) {\n // Non-observable - proxy\n return Reflect.set(this.target_, key, value);\n } else {\n // Non-observable\n this.target_[key] = value;\n return true;\n }\n } else {\n // New prop\n return this.extend_(key, {\n value: value,\n enumerable: true,\n writable: true,\n configurable: true\n }, this.defaultAnnotation_, proxyTrap);\n }\n }\n // Trap for \"in\"\n ;\n _proto.has_ = function has_(key) {\n if (!globalState.trackingDerivation) {\n // Skip key subscription outside derivation\n return key in this.target_;\n }\n this.pendingKeys_ || (this.pendingKeys_ = new Map());\n var entry = this.pendingKeys_.get(key);\n if (!entry) {\n entry = new ObservableValue(key in this.target_, referenceEnhancer, process.env.NODE_ENV !== \"production\" ? this.name_ + \".\" + stringifyKey(key) + \"?\" : \"ObservableObject.key?\", false);\n this.pendingKeys_.set(key, entry);\n }\n return entry.get();\n }\n /**\n * @param {PropertyKey} key\n * @param {Annotation|boolean} annotation true - use default annotation, false - ignore prop\n */;\n _proto.make_ = function make_(key, annotation) {\n if (annotation === true) {\n annotation = this.defaultAnnotation_;\n }\n if (annotation === false) {\n return;\n }\n assertAnnotable(this, annotation, key);\n if (!(key in this.target_)) {\n var _this$target_$storedA;\n // Throw on missing key, except for decorators:\n // Decorator annotations are collected from whole prototype chain.\n // When called from super() some props may not exist yet.\n // However we don't have to worry about missing prop,\n // because the decorator must have been applied to something.\n if ((_this$target_$storedA = this.target_[storedAnnotationsSymbol]) != null && _this$target_$storedA[key]) {\n return; // will be annotated by subclass constructor\n } else {\n die(1, annotation.annotationType_, this.name_ + \".\" + key.toString());\n }\n }\n var source = this.target_;\n while (source && source !== objectPrototype) {\n var descriptor = getDescriptor(source, key);\n if (descriptor) {\n var outcome = annotation.make_(this, key, descriptor, source);\n if (outcome === 0 /* MakeResult.Cancel */) {\n return;\n }\n if (outcome === 1 /* MakeResult.Break */) {\n break;\n }\n }\n source = Object.getPrototypeOf(source);\n }\n recordAnnotationApplied(this, annotation, key);\n }\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */;\n _proto.extend_ = function extend_(key, descriptor, annotation, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n if (annotation === true) {\n annotation = this.defaultAnnotation_;\n }\n if (annotation === false) {\n return this.defineProperty_(key, descriptor, proxyTrap);\n }\n assertAnnotable(this, annotation, key);\n var outcome = annotation.extend_(this, key, descriptor, proxyTrap);\n if (outcome) {\n recordAnnotationApplied(this, annotation, key);\n }\n return outcome;\n }\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */;\n _proto.defineProperty_ = function defineProperty_(key, descriptor, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n try {\n startBatch();\n // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n }\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: descriptor.value\n });\n if (!change) {\n return null;\n }\n var newValue = change.newValue;\n if (descriptor.value !== newValue) {\n descriptor = _extends({}, descriptor, {\n value: newValue\n });\n }\n }\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n // Notify\n this.notifyPropertyAddition_(key, descriptor.value);\n } finally {\n endBatch();\n }\n return true;\n }\n // If original descriptor becomes relevant, move this to annotation directly\n ;\n _proto.defineObservableProperty_ = function defineObservableProperty_(key, value, enhancer, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n try {\n startBatch();\n // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n }\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: value\n });\n if (!change) {\n return null;\n }\n value = change.newValue;\n }\n var cachedDescriptor = getCachedObservablePropDescriptor(key);\n var descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: true,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n };\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n var observable = new ObservableValue(value, enhancer, process.env.NODE_ENV !== \"production\" ? this.name_ + \".\" + key.toString() : \"ObservableObject.key\", false);\n this.values_.set(key, observable);\n // Notify (value possibly changed by ObservableValue)\n this.notifyPropertyAddition_(key, observable.value_);\n } finally {\n endBatch();\n }\n return true;\n }\n // If original descriptor becomes relevant, move this to annotation directly\n ;\n _proto.defineComputedProperty_ = function defineComputedProperty_(key, options, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n try {\n startBatch();\n // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n }\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: undefined\n });\n if (!change) {\n return null;\n }\n }\n options.name || (options.name = process.env.NODE_ENV !== \"production\" ? this.name_ + \".\" + key.toString() : \"ObservableObject.key\");\n options.context = this.proxy_ || this.target_;\n var cachedDescriptor = getCachedObservablePropDescriptor(key);\n var descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: false,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n };\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n this.values_.set(key, new ComputedValue(options));\n // Notify\n this.notifyPropertyAddition_(key, undefined);\n } finally {\n endBatch();\n }\n return true;\n }\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */;\n _proto.delete_ = function delete_(key, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n // No such prop\n if (!hasProp(this.target_, key)) {\n return true;\n }\n // Intercept\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: REMOVE\n });\n // Cancelled\n if (!change) {\n return null;\n }\n }\n // Delete\n try {\n var _this$pendingKeys_, _this$pendingKeys_$ge;\n startBatch();\n var notify = hasListeners(this);\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n var observable = this.values_.get(key);\n // Value needed for spies/listeners\n var value = undefined;\n // Optimization: don't pull the value unless we will need it\n if (!observable && (notify || notifySpy)) {\n var _getDescriptor;\n value = (_getDescriptor = getDescriptor(this.target_, key)) == null ? void 0 : _getDescriptor.value;\n }\n // delete prop (do first, may fail)\n if (proxyTrap) {\n if (!Reflect.deleteProperty(this.target_, key)) {\n return false;\n }\n } else {\n delete this.target_[key];\n }\n // Allow re-annotating this field\n if (process.env.NODE_ENV !== \"production\") {\n delete this.appliedAnnotations_[key];\n }\n // Clear observable\n if (observable) {\n this.values_[\"delete\"](key);\n // for computed, value is undefined\n if (observable instanceof ObservableValue) {\n value = observable.value_;\n }\n // Notify: autorun(() => obj[key]), see #1796\n propagateChanged(observable);\n }\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged();\n // Notify \"has\" observers\n // \"in\" as it may still exist in proto\n (_this$pendingKeys_ = this.pendingKeys_) == null ? void 0 : (_this$pendingKeys_$ge = _this$pendingKeys_.get(key)) == null ? void 0 : _this$pendingKeys_$ge.set(key in this.target_);\n // Notify spies/listeners\n if (notify || notifySpy) {\n var _change2 = {\n type: REMOVE,\n observableKind: \"object\",\n object: this.proxy_ || this.target_,\n debugObjectName: this.name_,\n oldValue: value,\n name: key\n };\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(_change2);\n }\n if (notify) {\n notifyListeners(this, _change2);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n } finally {\n endBatch();\n }\n return true;\n }\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */;\n _proto.observe_ = function observe_(callback, fireImmediately) {\n if (process.env.NODE_ENV !== \"production\" && fireImmediately === true) {\n die(\"`observe` doesn't support the fire immediately property for observable objects.\");\n }\n return registerListener(this, callback);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.notifyPropertyAddition_ = function notifyPropertyAddition_(key, value) {\n var _this$pendingKeys_2, _this$pendingKeys_2$g;\n var notify = hasListeners(this);\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n if (notify || notifySpy) {\n var change = notify || notifySpy ? {\n type: ADD,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: value\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(change);\n }\n if (notify) {\n notifyListeners(this, change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n (_this$pendingKeys_2 = this.pendingKeys_) == null ? void 0 : (_this$pendingKeys_2$g = _this$pendingKeys_2.get(key)) == null ? void 0 : _this$pendingKeys_2$g.set(true);\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged();\n };\n _proto.ownKeys_ = function ownKeys_() {\n this.keysAtom_.reportObserved();\n return ownKeys(this.target_);\n };\n _proto.keys_ = function keys_() {\n // Returns enumerable && own, but unfortunately keysAtom will report on ANY key change.\n // There is no way to distinguish between Object.keys(object) and Reflect.ownKeys(object) - both are handled by ownKeys trap.\n // We can either over-report in Object.keys(object) or under-report in Reflect.ownKeys(object)\n // We choose to over-report in Object.keys(object), because:\n // - typically it's used with simple data objects\n // - when symbolic/non-enumerable keys are relevant Reflect.ownKeys works as expected\n this.keysAtom_.reportObserved();\n return Object.keys(this.target_);\n };\n return ObservableObjectAdministration;\n}();\nfunction asObservableObject(target, options) {\n var _options$name;\n if (process.env.NODE_ENV !== \"production\" && options && isObservableObject(target)) {\n die(\"Options can't be provided for already observable objects.\");\n }\n if (hasProp(target, $mobx)) {\n if (process.env.NODE_ENV !== \"production\" && !(getAdministration(target) instanceof ObservableObjectAdministration)) {\n die(\"Cannot convert '\" + getDebugName(target) + \"' into observable object:\" + \"\\nThe target is already observable of different type.\" + \"\\nExtending builtins is not supported.\");\n }\n return target;\n }\n if (process.env.NODE_ENV !== \"production\" && !Object.isExtensible(target)) {\n die(\"Cannot make the designated object observable; it is not extensible\");\n }\n var name = (_options$name = options == null ? void 0 : options.name) != null ? _options$name : process.env.NODE_ENV !== \"production\" ? (isPlainObject(target) ? \"ObservableObject\" : target.constructor.name) + \"@\" + getNextId() : \"ObservableObject\";\n var adm = new ObservableObjectAdministration(target, new Map(), String(name), getAnnotationFromOptions(options));\n addHiddenProp(target, $mobx, adm);\n return target;\n}\nvar isObservableObjectAdministration = /*#__PURE__*/createInstanceofPredicate(\"ObservableObjectAdministration\", ObservableObjectAdministration);\nfunction getCachedObservablePropDescriptor(key) {\n return descriptorCache[key] || (descriptorCache[key] = {\n get: function get() {\n return this[$mobx].getObservablePropValue_(key);\n },\n set: function set(value) {\n return this[$mobx].setObservablePropValue_(key, value);\n }\n });\n}\nfunction isObservableObject(thing) {\n if (isObject(thing)) {\n return isObservableObjectAdministration(thing[$mobx]);\n }\n return false;\n}\nfunction recordAnnotationApplied(adm, annotation, key) {\n var _adm$target_$storedAn;\n if (process.env.NODE_ENV !== \"production\") {\n adm.appliedAnnotations_[key] = annotation;\n }\n // Remove applied decorator annotation so we don't try to apply it again in subclass constructor\n (_adm$target_$storedAn = adm.target_[storedAnnotationsSymbol]) == null ? true : delete _adm$target_$storedAn[key];\n}\nfunction assertAnnotable(adm, annotation, key) {\n // Valid annotation\n if (process.env.NODE_ENV !== \"production\" && !isAnnotation(annotation)) {\n die(\"Cannot annotate '\" + adm.name_ + \".\" + key.toString() + \"': Invalid annotation.\");\n }\n /*\n // Configurable, not sealed, not frozen\n // Possibly not needed, just a little better error then the one thrown by engine.\n // Cases where this would be useful the most (subclass field initializer) are not interceptable by this.\n if (__DEV__) {\n const configurable = getDescriptor(adm.target_, key)?.configurable\n const frozen = Object.isFrozen(adm.target_)\n const sealed = Object.isSealed(adm.target_)\n if (!configurable || frozen || sealed) {\n const fieldName = `${adm.name_}.${key.toString()}`\n const requestedAnnotationType = annotation.annotationType_\n let error = `Cannot apply '${requestedAnnotationType}' to '${fieldName}':`\n if (frozen) {\n error += `\\nObject is frozen.`\n }\n if (sealed) {\n error += `\\nObject is sealed.`\n }\n if (!configurable) {\n error += `\\nproperty is not configurable.`\n // Mention only if caused by us to avoid confusion\n if (hasProp(adm.appliedAnnotations!, key)) {\n error += `\\nTo prevent accidental re-definition of a field by a subclass, `\n error += `all annotated fields of non-plain objects (classes) are not configurable.`\n }\n }\n die(error)\n }\n }\n */\n // Not annotated\n if (process.env.NODE_ENV !== \"production\" && !isOverride(annotation) && hasProp(adm.appliedAnnotations_, key)) {\n var fieldName = adm.name_ + \".\" + key.toString();\n var currentAnnotationType = adm.appliedAnnotations_[key].annotationType_;\n var requestedAnnotationType = annotation.annotationType_;\n die(\"Cannot apply '\" + requestedAnnotationType + \"' to '\" + fieldName + \"':\" + (\"\\nThe field is already annotated with '\" + currentAnnotationType + \"'.\") + \"\\nRe-annotating fields is not allowed.\" + \"\\nUse 'override' annotation for methods overridden by subclass.\");\n }\n}\n\n// Bug in safari 9.* (or iOS 9 safari mobile). See #364\nvar ENTRY_0 = /*#__PURE__*/createArrayEntryDescriptor(0);\nvar safariPrototypeSetterInheritanceBug = /*#__PURE__*/function () {\n var v = false;\n var p = {};\n Object.defineProperty(p, \"0\", {\n set: function set() {\n v = true;\n }\n });\n /*#__PURE__*/Object.create(p)[\"0\"] = 1;\n return v === false;\n}();\n/**\n * This array buffer contains two lists of properties, so that all arrays\n * can recycle their property definitions, which significantly improves performance of creating\n * properties on the fly.\n */\nvar OBSERVABLE_ARRAY_BUFFER_SIZE = 0;\n// Typescript workaround to make sure ObservableArray extends Array\nvar StubArray = function StubArray() {};\nfunction inherit(ctor, proto) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(ctor.prototype, proto);\n } else if (ctor.prototype.__proto__ !== undefined) {\n ctor.prototype.__proto__ = proto;\n } else {\n ctor.prototype = proto;\n }\n}\ninherit(StubArray, Array.prototype);\n// Weex proto freeze protection was here,\n// but it is unclear why the hack is need as MobX never changed the prototype\n// anyway, so removed it in V6\nvar LegacyObservableArray = /*#__PURE__*/function (_StubArray, _Symbol$toStringTag, _Symbol$iterator) {\n _inheritsLoose(LegacyObservableArray, _StubArray);\n function LegacyObservableArray(initialValues, enhancer, name, owned) {\n var _this;\n if (name === void 0) {\n name = process.env.NODE_ENV !== \"production\" ? \"ObservableArray@\" + getNextId() : \"ObservableArray\";\n }\n if (owned === void 0) {\n owned = false;\n }\n _this = _StubArray.call(this) || this;\n initObservable(function () {\n var adm = new ObservableArrayAdministration(name, enhancer, owned, true);\n adm.proxy_ = _assertThisInitialized(_this);\n addHiddenFinalProp(_assertThisInitialized(_this), $mobx, adm);\n if (initialValues && initialValues.length) {\n // @ts-ignore\n _this.spliceWithArray(0, 0, initialValues);\n }\n if (safariPrototypeSetterInheritanceBug) {\n // Seems that Safari won't use numeric prototype setter untill any * numeric property is\n // defined on the instance. After that it works fine, even if this property is deleted.\n Object.defineProperty(_assertThisInitialized(_this), \"0\", ENTRY_0);\n }\n });\n return _this;\n }\n var _proto = LegacyObservableArray.prototype;\n _proto.concat = function concat() {\n this[$mobx].atom_.reportObserved();\n for (var _len = arguments.length, arrays = new Array(_len), _key = 0; _key < _len; _key++) {\n arrays[_key] = arguments[_key];\n }\n return Array.prototype.concat.apply(this.slice(),\n //@ts-ignore\n arrays.map(function (a) {\n return isObservableArray(a) ? a.slice() : a;\n }));\n };\n _proto[_Symbol$iterator] = function () {\n var self = this;\n var nextIndex = 0;\n return makeIterable({\n next: function next() {\n return nextIndex < self.length ? {\n value: self[nextIndex++],\n done: false\n } : {\n done: true,\n value: undefined\n };\n }\n });\n };\n _createClass(LegacyObservableArray, [{\n key: \"length\",\n get: function get() {\n return this[$mobx].getArrayLength_();\n },\n set: function set(newLength) {\n this[$mobx].setArrayLength_(newLength);\n }\n }, {\n key: _Symbol$toStringTag,\n get: function get() {\n return \"Array\";\n }\n }]);\n return LegacyObservableArray;\n}(StubArray, Symbol.toStringTag, Symbol.iterator);\nObject.entries(arrayExtensions).forEach(function (_ref) {\n var prop = _ref[0],\n fn = _ref[1];\n if (prop !== \"concat\") {\n addHiddenProp(LegacyObservableArray.prototype, prop, fn);\n }\n});\nfunction createArrayEntryDescriptor(index) {\n return {\n enumerable: false,\n configurable: true,\n get: function get() {\n return this[$mobx].get_(index);\n },\n set: function set(value) {\n this[$mobx].set_(index, value);\n }\n };\n}\nfunction createArrayBufferItem(index) {\n defineProperty(LegacyObservableArray.prototype, \"\" + index, createArrayEntryDescriptor(index));\n}\nfunction reserveArrayBuffer(max) {\n if (max > OBSERVABLE_ARRAY_BUFFER_SIZE) {\n for (var index = OBSERVABLE_ARRAY_BUFFER_SIZE; index < max + 100; index++) {\n createArrayBufferItem(index);\n }\n OBSERVABLE_ARRAY_BUFFER_SIZE = max;\n }\n}\nreserveArrayBuffer(1000);\nfunction createLegacyArray(initialValues, enhancer, name) {\n return new LegacyObservableArray(initialValues, enhancer, name);\n}\n\nfunction getAtom(thing, property) {\n if (typeof thing === \"object\" && thing !== null) {\n if (isObservableArray(thing)) {\n if (property !== undefined) {\n die(23);\n }\n return thing[$mobx].atom_;\n }\n if (isObservableSet(thing)) {\n return thing.atom_;\n }\n if (isObservableMap(thing)) {\n if (property === undefined) {\n return thing.keysAtom_;\n }\n var observable = thing.data_.get(property) || thing.hasMap_.get(property);\n if (!observable) {\n die(25, property, getDebugName(thing));\n }\n return observable;\n }\n if (isObservableObject(thing)) {\n if (!property) {\n return die(26);\n }\n var _observable = thing[$mobx].values_.get(property);\n if (!_observable) {\n die(27, property, getDebugName(thing));\n }\n return _observable;\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing;\n }\n } else if (isFunction(thing)) {\n if (isReaction(thing[$mobx])) {\n // disposer function\n return thing[$mobx];\n }\n }\n die(28);\n}\nfunction getAdministration(thing, property) {\n if (!thing) {\n die(29);\n }\n if (property !== undefined) {\n return getAdministration(getAtom(thing, property));\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing;\n }\n if (isObservableMap(thing) || isObservableSet(thing)) {\n return thing;\n }\n if (thing[$mobx]) {\n return thing[$mobx];\n }\n die(24, thing);\n}\nfunction getDebugName(thing, property) {\n var named;\n if (property !== undefined) {\n named = getAtom(thing, property);\n } else if (isAction(thing)) {\n return thing.name;\n } else if (isObservableObject(thing) || isObservableMap(thing) || isObservableSet(thing)) {\n named = getAdministration(thing);\n } else {\n // valid for arrays as well\n named = getAtom(thing);\n }\n return named.name_;\n}\n/**\n * Helper function for initializing observable structures, it applies:\n * 1. allowStateChanges so we don't violate enforceActions.\n * 2. untracked so we don't accidentaly subscribe to anything observable accessed during init in case the observable is created inside derivation.\n * 3. batch to avoid state version updates\n */\nfunction initObservable(cb) {\n var derivation = untrackedStart();\n var allowStateChanges = allowStateChangesStart(true);\n startBatch();\n try {\n return cb();\n } finally {\n endBatch();\n allowStateChangesEnd(allowStateChanges);\n untrackedEnd(derivation);\n }\n}\n\nvar toString = objectPrototype.toString;\nfunction deepEqual(a, b, depth) {\n if (depth === void 0) {\n depth = -1;\n }\n return eq(a, b, depth);\n}\n// Copied from https://github.com/jashkenas/underscore/blob/5c237a7c682fb68fd5378203f0bf22dce1624854/underscore.js#L1186-L1289\n// Internal recursive comparison function for `isEqual`.\nfunction eq(a, b, depth, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) {\n return a !== 0 || 1 / a === 1 / b;\n }\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) {\n return false;\n }\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) {\n return b !== b;\n }\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== \"function\" && type !== \"object\" && typeof b != \"object\") {\n return false;\n }\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) {\n return false;\n }\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case \"[object RegExp]\":\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case \"[object String]\":\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return \"\" + a === \"\" + b;\n case \"[object Number]\":\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) {\n return +b !== +b;\n }\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case \"[object Date]\":\n case \"[object Boolean]\":\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case \"[object Symbol]\":\n return typeof Symbol !== \"undefined\" && Symbol.valueOf.call(a) === Symbol.valueOf.call(b);\n case \"[object Map]\":\n case \"[object Set]\":\n // Maps and Sets are unwrapped to arrays of entry-pairs, adding an incidental level.\n // Hide this extra level by increasing the depth.\n if (depth >= 0) {\n depth++;\n }\n break;\n }\n // Unwrap any wrapped objects.\n a = unwrap(a);\n b = unwrap(b);\n var areArrays = className === \"[object Array]\";\n if (!areArrays) {\n if (typeof a != \"object\" || typeof b != \"object\") {\n return false;\n }\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor,\n bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor && isFunction(bCtor) && bCtor instanceof bCtor) && \"constructor\" in a && \"constructor\" in b) {\n return false;\n }\n }\n if (depth === 0) {\n return false;\n } else if (depth < 0) {\n depth = -1;\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) {\n return bStack[length] === b;\n }\n }\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) {\n return false;\n }\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], depth - 1, aStack, bStack)) {\n return false;\n }\n }\n } else {\n // Deep compare objects.\n var keys = Object.keys(a);\n var key;\n length = keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (Object.keys(b).length !== length) {\n return false;\n }\n while (length--) {\n // Deep compare each member\n key = keys[length];\n if (!(hasProp(b, key) && eq(a[key], b[key], depth - 1, aStack, bStack))) {\n return false;\n }\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\nfunction unwrap(a) {\n if (isObservableArray(a)) {\n return a.slice();\n }\n if (isES6Map(a) || isObservableMap(a)) {\n return Array.from(a.entries());\n }\n if (isES6Set(a) || isObservableSet(a)) {\n return Array.from(a.entries());\n }\n return a;\n}\n\nfunction makeIterable(iterator) {\n iterator[Symbol.iterator] = getSelf;\n return iterator;\n}\nfunction getSelf() {\n return this;\n}\n\nfunction isAnnotation(thing) {\n return (\n // Can be function\n thing instanceof Object && typeof thing.annotationType_ === \"string\" && isFunction(thing.make_) && isFunction(thing.extend_)\n );\n}\n\n/**\n * (c) Michel Weststrate 2015 - 2020\n * MIT Licensed\n *\n * Welcome to the mobx sources! To get a global overview of how MobX internally works,\n * this is a good place to start:\n * https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n *\n * Source folders:\n * ===============\n *\n * - api/ Most of the public static methods exposed by the module can be found here.\n * - core/ Implementation of the MobX algorithm; atoms, derivations, reactions, dependency trees, optimizations. Cool stuff can be found here.\n * - types/ All the magic that is need to have observable objects, arrays and values is in this folder. Including the modifiers like `asFlat`.\n * - utils/ Utility stuff.\n *\n */\n[\"Symbol\", \"Map\", \"Set\"].forEach(function (m) {\n var g = getGlobal();\n if (typeof g[m] === \"undefined\") {\n die(\"MobX requires global '\" + m + \"' to be available or polyfilled\");\n }\n});\nif (typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === \"object\") {\n // See: https://github.com/andykog/mobx-devtools/\n __MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({\n spy: spy,\n extras: {\n getDebugName: getDebugName\n },\n $mobx: $mobx\n });\n}\n\nexport { $mobx, FlowCancellationError, ObservableMap, ObservableSet, Reaction, allowStateChanges as _allowStateChanges, runInAction as _allowStateChangesInsideComputed, allowStateReadsEnd as _allowStateReadsEnd, allowStateReadsStart as _allowStateReadsStart, autoAction as _autoAction, _endAction, getAdministration as _getAdministration, getGlobalState as _getGlobalState, interceptReads as _interceptReads, isComputingDerivation as _isComputingDerivation, resetGlobalState as _resetGlobalState, _startAction, action, autorun, comparer, computed, configure, createAtom, apiDefineProperty as defineProperty, entries, extendObservable, flow, flowResult, get, getAtom, getDebugName, getDependencyTree, getObserverTree, has, intercept, isAction, isObservableValue as isBoxedObservable, isComputed, isComputedProp, isFlow, isFlowCancellationError, isObservable, isObservableArray, isObservableMap, isObservableObject, isObservableProp, isObservableSet, keys, makeAutoObservable, makeObservable, observable, observe, onBecomeObserved, onBecomeUnobserved, onReactionError, override, apiOwnKeys as ownKeys, reaction, remove, runInAction, set, spy, toJS, trace, transaction, untracked, values, when };\n//# sourceMappingURL=mobx.esm.js.map\n","import { makeObservable } from \"mobx\";\nimport { useState } from \"react\";\nif (!useState) {\n throw new Error(\"mobx-react-lite requires React with Hooks support\");\n}\nif (!makeObservable) {\n throw new Error(\"mobx-react-lite@3 requires mobx at least version 6 to be available\");\n}\n//# sourceMappingURL=assertEnvironment.js.map","import { configure } from \"mobx\";\nexport function defaultNoopBatch(callback) {\n callback();\n}\nexport function observerBatching(reactionScheduler) {\n if (!reactionScheduler) {\n reactionScheduler = defaultNoopBatch;\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\"[MobX] Failed to get unstable_batched updates from react-dom / react-native\");\n }\n }\n configure({ reactionScheduler: reactionScheduler });\n}\nexport var isObserverBatched = function () {\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\"[MobX] Deprecated\");\n }\n return true;\n};\n//# sourceMappingURL=observerBatching.js.map","import { getDependencyTree } from \"mobx\";\nexport function printDebugValue(v) {\n return getDependencyTree(v);\n}\n//# sourceMappingURL=printDebugValue.js.map","var globalIsUsingStaticRendering = false;\nexport function enableStaticRendering(enable) {\n globalIsUsingStaticRendering = enable;\n}\nexport function isUsingStaticRendering() {\n return globalIsUsingStaticRendering;\n}\n//# sourceMappingURL=staticRendering.js.map","export var REGISTRY_FINALIZE_AFTER = 10000;\nexport var REGISTRY_SWEEP_INTERVAL = 10000;\nvar TimerBasedFinalizationRegistry = /** @class */ (function () {\n function TimerBasedFinalizationRegistry(finalize) {\n var _this = this;\n Object.defineProperty(this, \"finalize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: finalize\n });\n Object.defineProperty(this, \"registrations\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Map()\n });\n Object.defineProperty(this, \"sweepTimeout\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // Bound so it can be used directly as setTimeout callback.\n Object.defineProperty(this, \"sweep\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: function (maxAge) {\n if (maxAge === void 0) { maxAge = REGISTRY_FINALIZE_AFTER; }\n // cancel timeout so we can force sweep anytime\n clearTimeout(_this.sweepTimeout);\n _this.sweepTimeout = undefined;\n var now = Date.now();\n _this.registrations.forEach(function (registration, token) {\n if (now - registration.registeredAt >= maxAge) {\n _this.finalize(registration.value);\n _this.registrations.delete(token);\n }\n });\n if (_this.registrations.size > 0) {\n _this.scheduleSweep();\n }\n }\n });\n // Bound so it can be exported directly as clearTimers test utility.\n Object.defineProperty(this, \"finalizeAllImmediately\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: function () {\n _this.sweep(0);\n }\n });\n }\n // Token is actually required with this impl\n Object.defineProperty(TimerBasedFinalizationRegistry.prototype, \"register\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (target, value, token) {\n this.registrations.set(token, {\n value: value,\n registeredAt: Date.now()\n });\n this.scheduleSweep();\n }\n });\n Object.defineProperty(TimerBasedFinalizationRegistry.prototype, \"unregister\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (token) {\n this.registrations.delete(token);\n }\n });\n Object.defineProperty(TimerBasedFinalizationRegistry.prototype, \"scheduleSweep\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n if (this.sweepTimeout === undefined) {\n this.sweepTimeout = setTimeout(this.sweep, REGISTRY_SWEEP_INTERVAL);\n }\n }\n });\n return TimerBasedFinalizationRegistry;\n}());\nexport { TimerBasedFinalizationRegistry };\nexport var UniversalFinalizationRegistry = typeof FinalizationRegistry !== \"undefined\"\n ? FinalizationRegistry\n : TimerBasedFinalizationRegistry;\n//# sourceMappingURL=UniversalFinalizationRegistry.js.map","import { UniversalFinalizationRegistry } from \"./UniversalFinalizationRegistry\";\nexport var observerFinalizationRegistry = new UniversalFinalizationRegistry(function (adm) {\n var _a;\n (_a = adm.reaction) === null || _a === void 0 ? void 0 : _a.dispose();\n adm.reaction = null;\n});\n//# sourceMappingURL=observerFinalizationRegistry.js.map","import { Reaction } from \"mobx\";\nimport React from \"react\";\nimport { printDebugValue } from \"./utils/printDebugValue\";\nimport { isUsingStaticRendering } from \"./staticRendering\";\nimport { observerFinalizationRegistry } from \"./utils/observerFinalizationRegistry\";\nimport { useSyncExternalStore } from \"use-sync-external-store/shim\";\n// Required by SSR when hydrating #3669\nvar getServerSnapshot = function () { };\nfunction createReaction(adm) {\n adm.reaction = new Reaction(\"observer\".concat(adm.name), function () {\n var _a;\n adm.stateVersion = Symbol();\n // onStoreChange won't be available until the component \"mounts\".\n // If state changes in between initial render and mount,\n // `useSyncExternalStore` should handle that by checking the state version and issuing update.\n (_a = adm.onStoreChange) === null || _a === void 0 ? void 0 : _a.call(adm);\n });\n}\nexport function useObserver(render, baseComponentName) {\n if (baseComponentName === void 0) { baseComponentName = \"observed\"; }\n if (isUsingStaticRendering()) {\n return render();\n }\n var admRef = React.useRef(null);\n if (!admRef.current) {\n // First render\n var adm_1 = {\n reaction: null,\n onStoreChange: null,\n stateVersion: Symbol(),\n name: baseComponentName,\n subscribe: function (onStoreChange) {\n // Do NOT access admRef here!\n observerFinalizationRegistry.unregister(adm_1);\n adm_1.onStoreChange = onStoreChange;\n if (!adm_1.reaction) {\n // We've lost our reaction and therefore all subscriptions, occurs when:\n // 1. Timer based finalization registry disposed reaction before component mounted.\n // 2. React \"re-mounts\" same component without calling render in between (typically ).\n // We have to recreate reaction and schedule re-render to recreate subscriptions,\n // even if state did not change.\n createReaction(adm_1);\n // `onStoreChange` won't force update if subsequent `getSnapshot` returns same value.\n // So we make sure that is not the case\n adm_1.stateVersion = Symbol();\n }\n return function () {\n var _a;\n // Do NOT access admRef here!\n adm_1.onStoreChange = null;\n (_a = adm_1.reaction) === null || _a === void 0 ? void 0 : _a.dispose();\n adm_1.reaction = null;\n };\n },\n getSnapshot: function () {\n // Do NOT access admRef here!\n return adm_1.stateVersion;\n }\n };\n admRef.current = adm_1;\n }\n var adm = admRef.current;\n if (!adm.reaction) {\n // First render or reaction was disposed by registry before subscribe\n createReaction(adm);\n // StrictMode/ConcurrentMode/Suspense may mean that our component is\n // rendered and abandoned multiple times, so we need to track leaked\n // Reactions.\n observerFinalizationRegistry.register(admRef, adm, adm);\n }\n React.useDebugValue(adm.reaction, printDebugValue);\n useSyncExternalStore(\n // Both of these must be stable, otherwise it would keep resubscribing every render.\n adm.subscribe, adm.getSnapshot, getServerSnapshot);\n // render the original component, but have the\n // reaction track the observables, so that rendering\n // can be invalidated (see above) once a dependency changes\n var renderResult;\n var exception;\n adm.reaction.track(function () {\n try {\n renderResult = render();\n }\n catch (e) {\n exception = e;\n }\n });\n if (exception) {\n throw exception; // re-throw any exceptions caught during rendering\n }\n return renderResult;\n}\n//# sourceMappingURL=useObserver.js.map","import { forwardRef, memo } from \"react\";\nimport { isUsingStaticRendering } from \"./staticRendering\";\nimport { useObserver } from \"./useObserver\";\nvar warnObserverOptionsDeprecated = true;\nvar hasSymbol = typeof Symbol === \"function\" && Symbol.for;\n// Using react-is had some issues (and operates on elements, not on types), see #608 / #609\nvar ReactForwardRefSymbol = hasSymbol\n ? Symbol.for(\"react.forward_ref\")\n : typeof forwardRef === \"function\" && forwardRef(function (props) { return null; })[\"$$typeof\"];\nvar ReactMemoSymbol = hasSymbol\n ? Symbol.for(\"react.memo\")\n : typeof memo === \"function\" && memo(function (props) { return null; })[\"$$typeof\"];\n// n.b. base case is not used for actual typings or exported in the typing files\nexport function observer(baseComponent, \n// TODO remove in next major\noptions) {\n var _a;\n if (process.env.NODE_ENV !== \"production\" && warnObserverOptionsDeprecated && options) {\n warnObserverOptionsDeprecated = false;\n console.warn(\"[mobx-react-lite] `observer(fn, { forwardRef: true })` is deprecated, use `observer(React.forwardRef(fn))`\");\n }\n if (ReactMemoSymbol && baseComponent[\"$$typeof\"] === ReactMemoSymbol) {\n throw new Error(\"[mobx-react-lite] You are trying to use `observer` on a function component wrapped in either another `observer` or `React.memo`. The observer already applies 'React.memo' for you.\");\n }\n // The working of observer is explained step by step in this talk: https://www.youtube.com/watch?v=cPF4iBedoF0&feature=youtu.be&t=1307\n if (isUsingStaticRendering()) {\n return baseComponent;\n }\n var useForwardRef = (_a = options === null || options === void 0 ? void 0 : options.forwardRef) !== null && _a !== void 0 ? _a : false;\n var render = baseComponent;\n var baseComponentName = baseComponent.displayName || baseComponent.name;\n // If already wrapped with forwardRef, unwrap,\n // so we can patch render and apply memo\n if (ReactForwardRefSymbol && baseComponent[\"$$typeof\"] === ReactForwardRefSymbol) {\n useForwardRef = true;\n render = baseComponent[\"render\"];\n if (typeof render !== \"function\") {\n throw new Error(\"[mobx-react-lite] `render` property of ForwardRef was not a function\");\n }\n }\n var observerComponent = function (props, ref) {\n return useObserver(function () { return render(props, ref); }, baseComponentName);\n };\n observerComponent.displayName = baseComponent.displayName;\n Object.defineProperty(observerComponent, \"name\", {\n value: baseComponent.name,\n writable: true,\n configurable: true\n });\n // Support legacy context: `contextTypes` must be applied before `memo`\n if (baseComponent.contextTypes) {\n ;\n observerComponent.contextTypes = baseComponent.contextTypes;\n }\n if (useForwardRef) {\n // `forwardRef` must be applied prior `memo`\n // `forwardRef(observer(cmp))` throws:\n // \"forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))\"\n observerComponent = forwardRef(observerComponent);\n }\n // memo; we are not interested in deep updates\n // in props; we assume that if deep objects are changed,\n // this is in observables, which would have been tracked anyway\n observerComponent = memo(observerComponent);\n copyStaticProperties(baseComponent, observerComponent);\n if (\"production\" !== process.env.NODE_ENV) {\n Object.defineProperty(observerComponent, \"contextTypes\", {\n set: function () {\n var _a, _b;\n throw new Error(\"[mobx-react-lite] `\".concat(this.displayName || ((_a = this.type) === null || _a === void 0 ? void 0 : _a.displayName) || ((_b = this.type) === null || _b === void 0 ? void 0 : _b.name) || \"Component\", \".contextTypes` must be set before applying `observer`.\"));\n }\n });\n }\n return observerComponent;\n}\n// based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\nvar hoistBlackList = {\n $$typeof: true,\n render: true,\n compare: true,\n type: true,\n // Don't redefine `displayName`,\n // it's defined as getter-setter pair on `memo` (see #3192).\n displayName: true\n};\nfunction copyStaticProperties(base, target) {\n Object.keys(base).forEach(function (key) {\n if (!hoistBlackList[key]) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key));\n }\n });\n}\n//# sourceMappingURL=observer.js.map","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { useDeprecated } from \"./utils/utils\";\nimport { observable, runInAction } from \"mobx\";\nimport { useState } from \"react\";\nexport function useAsObservableSource(current) {\n if (\"production\" !== process.env.NODE_ENV)\n useDeprecated(\"[mobx-react-lite] 'useAsObservableSource' is deprecated, please store the values directly in an observable, for example by using 'useLocalObservable', and sync future updates using 'useEffect' when needed. See the README for examples.\");\n var _a = __read(useState(function () { return observable(current, {}, { deep: false }); }), 1), res = _a[0];\n runInAction(function () {\n Object.assign(res, current);\n });\n return res;\n}\n//# sourceMappingURL=useAsObservableSource.js.map","var _a;\nimport \"./utils/assertEnvironment\";\nimport { unstable_batchedUpdates as batch } from \"./utils/reactBatchedUpdates\";\nimport { observerBatching } from \"./utils/observerBatching\";\nimport { useDeprecated } from \"./utils/utils\";\nimport { useObserver as useObserverOriginal } from \"./useObserver\";\nimport { enableStaticRendering } from \"./staticRendering\";\nimport { observerFinalizationRegistry } from \"./utils/observerFinalizationRegistry\";\nobserverBatching(batch);\nexport { isUsingStaticRendering, enableStaticRendering } from \"./staticRendering\";\nexport { observer } from \"./observer\";\nexport { Observer } from \"./ObserverComponent\";\nexport { useLocalObservable } from \"./useLocalObservable\";\nexport { useLocalStore } from \"./useLocalStore\";\nexport { useAsObservableSource } from \"./useAsObservableSource\";\nexport { observerFinalizationRegistry as _observerFinalizationRegistry };\nexport var clearTimers = (_a = observerFinalizationRegistry[\"finalizeAllImmediately\"]) !== null && _a !== void 0 ? _a : (function () { });\nexport function useObserver(fn, baseComponentName) {\n if (baseComponentName === void 0) { baseComponentName = \"observed\"; }\n if (\"production\" !== process.env.NODE_ENV) {\n useDeprecated(\"[mobx-react-lite] 'useObserver(fn)' is deprecated. Use `{fn}` instead, or wrap the entire component in `observer`.\");\n }\n return useObserverOriginal(fn, baseComponentName);\n}\nexport { isObserverBatched, observerBatching } from \"./utils/observerBatching\";\nexport function useStaticRendering(enable) {\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\"[mobx-react-lite] 'useStaticRendering' is deprecated, use 'enableStaticRendering' instead\");\n }\n enableStaticRendering(enable);\n}\n//# sourceMappingURL=index.js.map","import { _getGlobalState, Reaction, _allowStateChanges, untracked, isObservableMap, isObservableObject, isObservableArray, observable } from 'mobx';\nimport React__default, { PureComponent, Component } from 'react';\nimport { isUsingStaticRendering, _observerFinalizationRegistry, observer as observer$1 } from 'mobx-react-lite';\nexport { Observer, enableStaticRendering, isUsingStaticRendering, observerBatching, useAsObservableSource, useLocalObservable, useLocalStore, useObserver, useStaticRendering } from 'mobx-react-lite';\n\nfunction shallowEqual(objA, objB) {\n //From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n if (is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) {\n return false;\n }\n for (var i = 0; i < keysA.length; i++) {\n if (!Object.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\nfunction is(x, y) {\n // From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n// based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\nvar hoistBlackList = {\n $$typeof: 1,\n render: 1,\n compare: 1,\n type: 1,\n childContextTypes: 1,\n contextType: 1,\n contextTypes: 1,\n defaultProps: 1,\n getDefaultProps: 1,\n getDerivedStateFromError: 1,\n getDerivedStateFromProps: 1,\n mixins: 1,\n displayName: 1,\n propTypes: 1\n};\nfunction copyStaticProperties(base, target) {\n var protoProps = Object.getOwnPropertyNames(Object.getPrototypeOf(base));\n Object.getOwnPropertyNames(base).forEach(function (key) {\n if (!hoistBlackList[key] && protoProps.indexOf(key) === -1) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key));\n }\n });\n}\n/**\n * Utilities for patching componentWillUnmount, to make sure @disposeOnUnmount works correctly icm with user defined hooks\n * and the handler provided by mobx-react\n */\nvar mobxMixins = /*#__PURE__*/Symbol(\"patchMixins\");\nvar mobxPatchedDefinition = /*#__PURE__*/Symbol(\"patchedDefinition\");\nfunction getMixins(target, methodName) {\n var mixins = target[mobxMixins] = target[mobxMixins] || {};\n var methodMixins = mixins[methodName] = mixins[methodName] || {};\n methodMixins.locks = methodMixins.locks || 0;\n methodMixins.methods = methodMixins.methods || [];\n return methodMixins;\n}\nfunction wrapper(realMethod, mixins) {\n var _this = this;\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n // locks are used to ensure that mixins are invoked only once per invocation, even on recursive calls\n mixins.locks++;\n try {\n var retVal;\n if (realMethod !== undefined && realMethod !== null) {\n retVal = realMethod.apply(this, args);\n }\n return retVal;\n } finally {\n mixins.locks--;\n if (mixins.locks === 0) {\n mixins.methods.forEach(function (mx) {\n mx.apply(_this, args);\n });\n }\n }\n}\nfunction wrapFunction(realMethod, mixins) {\n var fn = function fn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n wrapper.call.apply(wrapper, [this, realMethod, mixins].concat(args));\n };\n return fn;\n}\nfunction patch(target, methodName, mixinMethod) {\n var mixins = getMixins(target, methodName);\n if (mixins.methods.indexOf(mixinMethod) < 0) {\n mixins.methods.push(mixinMethod);\n }\n var oldDefinition = Object.getOwnPropertyDescriptor(target, methodName);\n if (oldDefinition && oldDefinition[mobxPatchedDefinition]) {\n // already patched definition, do not repatch\n return;\n }\n var originalMethod = target[methodName];\n var newDefinition = createDefinition(target, methodName, oldDefinition ? oldDefinition.enumerable : undefined, mixins, originalMethod);\n Object.defineProperty(target, methodName, newDefinition);\n}\nfunction createDefinition(target, methodName, enumerable, mixins, originalMethod) {\n var _ref;\n var wrappedFunc = wrapFunction(originalMethod, mixins);\n return _ref = {}, _ref[mobxPatchedDefinition] = true, _ref.get = function get() {\n return wrappedFunc;\n }, _ref.set = function set(value) {\n if (this === target) {\n wrappedFunc = wrapFunction(value, mixins);\n } else {\n // when it is an instance of the prototype/a child prototype patch that particular case again separately\n // since we need to store separate values depending on wether it is the actual instance, the prototype, etc\n // e.g. the method for super might not be the same as the method for the prototype which might be not the same\n // as the method for the instance\n var newDefinition = createDefinition(this, methodName, enumerable, mixins, value);\n Object.defineProperty(this, methodName, newDefinition);\n }\n }, _ref.configurable = true, _ref.enumerable = enumerable, _ref;\n}\n\nvar administrationSymbol = /*#__PURE__*/Symbol(\"ObserverAdministration\");\nvar isMobXReactObserverSymbol = /*#__PURE__*/Symbol(\"isMobXReactObserver\");\nvar observablePropDescriptors;\nif (process.env.NODE_ENV !== \"production\") {\n observablePropDescriptors = {\n props: /*#__PURE__*/createObservablePropDescriptor(\"props\"),\n state: /*#__PURE__*/createObservablePropDescriptor(\"state\"),\n context: /*#__PURE__*/createObservablePropDescriptor(\"context\")\n };\n}\nfunction getAdministration(component) {\n var _component$administra;\n // We create administration lazily, because we can't patch constructor\n // and the exact moment of initialization partially depends on React internals.\n // At the time of writing this, the first thing invoked is one of the observable getter/setter (state/props/context).\n return (_component$administra = component[administrationSymbol]) != null ? _component$administra : component[administrationSymbol] = {\n reaction: null,\n mounted: false,\n reactionInvalidatedBeforeMount: false,\n forceUpdate: null,\n name: getDisplayName(component.constructor),\n state: undefined,\n props: undefined,\n context: undefined\n };\n}\nfunction makeClassComponentObserver(componentClass) {\n var prototype = componentClass.prototype;\n if (componentClass[isMobXReactObserverSymbol]) {\n var displayName = getDisplayName(componentClass);\n throw new Error(\"The provided component class (\" + displayName + \") has already been declared as an observer component.\");\n } else {\n componentClass[isMobXReactObserverSymbol] = true;\n }\n if (prototype.componentWillReact) {\n throw new Error(\"The componentWillReact life-cycle event is no longer supported\");\n }\n if (componentClass[\"__proto__\"] !== PureComponent) {\n if (!prototype.shouldComponentUpdate) {\n prototype.shouldComponentUpdate = observerSCU;\n } else if (prototype.shouldComponentUpdate !== observerSCU) {\n // n.b. unequal check, instead of existence check, as @observer might be on superclass as well\n throw new Error(\"It is not allowed to use shouldComponentUpdate in observer based components.\");\n }\n }\n if (process.env.NODE_ENV !== \"production\") {\n Object.defineProperties(prototype, observablePropDescriptors);\n }\n var originalRender = prototype.render;\n if (typeof originalRender !== \"function\") {\n var _displayName = getDisplayName(componentClass);\n throw new Error(\"[mobx-react] class component (\" + _displayName + \") is missing `render` method.\" + \"\\n`observer` requires `render` being a function defined on prototype.\" + \"\\n`render = () => {}` or `render = function() {}` is not supported.\");\n }\n prototype.render = function () {\n Object.defineProperty(this, \"render\", {\n // There is no safe way to replace render, therefore it's forbidden.\n configurable: false,\n writable: false,\n value: isUsingStaticRendering() ? originalRender : createReactiveRender.call(this, originalRender)\n });\n return this.render();\n };\n var originalComponentDidMount = prototype.componentDidMount;\n prototype.componentDidMount = function () {\n var _this = this;\n if (process.env.NODE_ENV !== \"production\" && this.componentDidMount !== Object.getPrototypeOf(this).componentDidMount) {\n var _displayName2 = getDisplayName(componentClass);\n throw new Error(\"[mobx-react] `observer(\" + _displayName2 + \").componentDidMount` must be defined on prototype.\" + \"\\n`componentDidMount = () => {}` or `componentDidMount = function() {}` is not supported.\");\n }\n // `componentDidMount` may not be called at all. React can abandon the instance after `render`.\n // That's why we use finalization registry to dispose reaction created during render.\n // Happens with `` see #3492\n //\n // `componentDidMount` can be called immediately after `componentWillUnmount` without calling `render` in between.\n // Happens with ``see #3395.\n //\n // If `componentDidMount` is called, it's guaranteed to run synchronously with render (similary to `useLayoutEffect`).\n // Therefore we don't have to worry about external (observable) state being updated before mount (no state version checking).\n //\n // Things may change: \"In the future, React will provide a feature that lets components preserve state between unmounts\"\n var admin = getAdministration(this);\n admin.mounted = true;\n // Component instance committed, prevent reaction disposal.\n _observerFinalizationRegistry.unregister(this);\n // We don't set forceUpdate before mount because it requires a reference to `this`,\n // therefore `this` could NOT be garbage collected before mount,\n // preventing reaction disposal by FinalizationRegistry and leading to memory leak.\n // As an alternative we could have `admin.instanceRef = new WeakRef(this)`, but lets avoid it if possible.\n admin.forceUpdate = function () {\n return _this.forceUpdate();\n };\n if (!admin.reaction || admin.reactionInvalidatedBeforeMount) {\n // Missing reaction:\n // 1. Instance was unmounted (reaction disposed) and immediately remounted without running render #3395.\n // 2. Reaction was disposed by finalization registry before mount. Shouldn't ever happen for class components:\n // `componentDidMount` runs synchronously after render, but our registry are deferred (can't run in between).\n // In any case we lost subscriptions to observables, so we have to create new reaction and re-render to resubscribe.\n // The reaction will be created lazily by following render.\n // Reaction invalidated before mount:\n // 1. A descendant's `componenDidMount` invalidated it's parent #3730\n admin.forceUpdate();\n }\n return originalComponentDidMount == null ? void 0 : originalComponentDidMount.apply(this, arguments);\n };\n // TODO@major Overly complicated \"patch\" is only needed to support the deprecated @disposeOnUnmount\n patch(prototype, \"componentWillUnmount\", function () {\n var _admin$reaction;\n if (isUsingStaticRendering()) {\n return;\n }\n var admin = getAdministration(this);\n (_admin$reaction = admin.reaction) == null ? void 0 : _admin$reaction.dispose();\n admin.reaction = null;\n admin.forceUpdate = null;\n admin.mounted = false;\n admin.reactionInvalidatedBeforeMount = false;\n });\n return componentClass;\n}\n// Generates a friendly name for debugging\nfunction getDisplayName(componentClass) {\n return componentClass.displayName || componentClass.name || \"\";\n}\nfunction createReactiveRender(originalRender) {\n var boundOriginalRender = originalRender.bind(this);\n var admin = getAdministration(this);\n function reactiveRender() {\n if (!admin.reaction) {\n // Create reaction lazily to support re-mounting #3395\n admin.reaction = createReaction(admin);\n if (!admin.mounted) {\n // React can abandon this instance and never call `componentDidMount`/`componentWillUnmount`,\n // we have to make sure reaction will be disposed.\n _observerFinalizationRegistry.register(this, admin, this);\n }\n }\n var error = undefined;\n var renderResult = undefined;\n admin.reaction.track(function () {\n try {\n // TODO@major\n // Optimization: replace with _allowStateChangesStart/End (not available in mobx@6.0.0)\n renderResult = _allowStateChanges(false, boundOriginalRender);\n } catch (e) {\n error = e;\n }\n });\n if (error) {\n throw error;\n }\n return renderResult;\n }\n return reactiveRender;\n}\nfunction createReaction(admin) {\n return new Reaction(admin.name + \".render()\", function () {\n if (!admin.mounted) {\n // This is neccessary to avoid react warning about calling forceUpdate on component that isn't mounted yet.\n // This happens when component is abandoned after render - our reaction is already created and reacts to changes.\n // `componenDidMount` runs synchronously after `render`, so unlike functional component, there is no delay during which the reaction could be invalidated.\n // However `componentDidMount` runs AFTER it's descendants' `componentDidMount`, which CAN invalidate the reaction, see #3730. Therefore remember and forceUpdate on mount.\n admin.reactionInvalidatedBeforeMount = true;\n return;\n }\n try {\n admin.forceUpdate == null ? void 0 : admin.forceUpdate();\n } catch (error) {\n var _admin$reaction2;\n (_admin$reaction2 = admin.reaction) == null ? void 0 : _admin$reaction2.dispose();\n admin.reaction = null;\n }\n });\n}\nfunction observerSCU(nextProps, nextState) {\n if (isUsingStaticRendering()) {\n console.warn(\"[mobx-react] It seems that a re-rendering of a React component is triggered while in static (server-side) mode. Please make sure components are rendered only once server-side.\");\n }\n // update on any state changes (as is the default)\n if (this.state !== nextState) {\n return true;\n }\n // update if props are shallowly not equal, inspired by PureRenderMixin\n // we could return just 'false' here, and avoid the `skipRender` checks etc\n // however, it is nicer if lifecycle events are triggered like usually,\n // so we return true here if props are shallowly modified.\n return !shallowEqual(this.props, nextProps);\n}\nfunction createObservablePropDescriptor(key) {\n return {\n configurable: true,\n enumerable: true,\n get: function get() {\n var admin = getAdministration(this);\n var derivation = _getGlobalState().trackingDerivation;\n if (derivation && derivation !== admin.reaction) {\n throw new Error(\"[mobx-react] Cannot read \\\"\" + admin.name + \".\" + key + \"\\\" in a reactive context, as it isn't observable.\\n Please use component lifecycle method to copy the value into a local observable first.\\n See https://github.com/mobxjs/mobx/blob/main/packages/mobx-react/README.md#note-on-using-props-and-state-in-derivations\");\n }\n return admin[key];\n },\n set: function set(value) {\n getAdministration(this)[key] = value;\n }\n };\n}\n\nfunction observer(component, context) {\n if (context && context.kind !== \"class\") {\n throw new Error(\"The @observer decorator can be used on classes only\");\n }\n if (component[\"isMobxInjector\"] === true) {\n console.warn(\"Mobx observer: You are trying to use `observer` on a component that already has `inject`. Please apply `observer` before applying `inject`\");\n }\n if (Object.prototype.isPrototypeOf.call(Component, component) || Object.prototype.isPrototypeOf.call(PureComponent, component)) {\n // Class component\n return makeClassComponentObserver(component);\n } else {\n // Function component\n return observer$1(component);\n }\n}\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nvar _excluded = [\"children\"];\nvar MobXProviderContext = /*#__PURE__*/React__default.createContext({});\nfunction Provider(props) {\n var children = props.children,\n stores = _objectWithoutPropertiesLoose(props, _excluded);\n var parentValue = React__default.useContext(MobXProviderContext);\n var mutableProviderRef = React__default.useRef(_extends({}, parentValue, stores));\n var value = mutableProviderRef.current;\n if (process.env.NODE_ENV !== \"production\") {\n var newValue = _extends({}, value, stores); // spread in previous state for the context based stores\n if (!shallowEqual(value, newValue)) {\n throw new Error(\"MobX Provider: The set of provided stores has changed. See: https://github.com/mobxjs/mobx-react#the-set-of-provided-stores-has-changed-error.\");\n }\n }\n return React__default.createElement(MobXProviderContext.Provider, {\n value: value\n }, children);\n}\nProvider.displayName = \"MobXProvider\";\n\n/**\n * Store Injection\n */\nfunction createStoreInjector(grabStoresFn, component, injectNames, makeReactive) {\n // Support forward refs\n var Injector = React__default.forwardRef(function (props, ref) {\n var newProps = _extends({}, props);\n var context = React__default.useContext(MobXProviderContext);\n Object.assign(newProps, grabStoresFn(context || {}, newProps) || {});\n if (ref) {\n newProps.ref = ref;\n }\n return React__default.createElement(component, newProps);\n });\n if (makeReactive) Injector = observer(Injector);\n Injector[\"isMobxInjector\"] = true; // assigned late to suppress observer warning\n // Static fields from component should be visible on the generated Injector\n copyStaticProperties(component, Injector);\n Injector[\"wrappedComponent\"] = component;\n Injector.displayName = getInjectName(component, injectNames);\n return Injector;\n}\nfunction getInjectName(component, injectNames) {\n var displayName;\n var componentName = component.displayName || component.name || component.constructor && component.constructor.name || \"Component\";\n if (injectNames) displayName = \"inject-with-\" + injectNames + \"(\" + componentName + \")\";else displayName = \"inject(\" + componentName + \")\";\n return displayName;\n}\nfunction grabStoresByName(storeNames) {\n return function (baseStores, nextProps) {\n storeNames.forEach(function (storeName) {\n if (storeName in nextProps // prefer props over stores\n ) return;\n if (!(storeName in baseStores)) throw new Error(\"MobX injector: Store '\" + storeName + \"' is not available! Make sure it is provided by some Provider\");\n nextProps[storeName] = baseStores[storeName];\n });\n return nextProps;\n };\n}\n/**\n * higher order component that injects stores to a child.\n * takes either a varargs list of strings, which are stores read from the context,\n * or a function that manually maps the available stores from the context to props:\n * storesToProps(mobxStores, props, context) => newProps\n */\nfunction inject() {\n for (var _len = arguments.length, storeNames = new Array(_len), _key = 0; _key < _len; _key++) {\n storeNames[_key] = arguments[_key];\n }\n if (typeof arguments[0] === \"function\") {\n var grabStoresFn = arguments[0];\n return function (componentClass) {\n return createStoreInjector(grabStoresFn, componentClass, grabStoresFn.name, true);\n };\n } else {\n return function (componentClass) {\n return createStoreInjector(grabStoresByName(storeNames), componentClass, storeNames.join(\"-\"), false);\n };\n }\n}\n\nvar reactMajorVersion = /*#__PURE__*/Number.parseInt( /*#__PURE__*/React__default.version.split(\".\")[0]);\nvar warnedAboutDisposeOnUnmountDeprecated = false;\nvar protoStoreKey = /*#__PURE__*/Symbol(\"disposeOnUnmountProto\");\nvar instStoreKey = /*#__PURE__*/Symbol(\"disposeOnUnmountInst\");\nfunction runDisposersOnWillUnmount() {\n var _this = this;\n [].concat(this[protoStoreKey] || [], this[instStoreKey] || []).forEach(function (propKeyOrFunction) {\n var prop = typeof propKeyOrFunction === \"string\" ? _this[propKeyOrFunction] : propKeyOrFunction;\n if (prop !== undefined && prop !== null) {\n if (Array.isArray(prop)) prop.map(function (f) {\n return f();\n });else prop();\n }\n });\n}\n/**\n * @deprecated `disposeOnUnmount` is not compatible with React 18 and higher.\n */\nfunction disposeOnUnmount(target, propertyKeyOrFunction) {\n if (Array.isArray(propertyKeyOrFunction)) {\n return propertyKeyOrFunction.map(function (fn) {\n return disposeOnUnmount(target, fn);\n });\n }\n if (!warnedAboutDisposeOnUnmountDeprecated) {\n if (reactMajorVersion >= 18) {\n console.error(\"[mobx-react] disposeOnUnmount is not compatible with React 18 and higher. Don't use it.\");\n } else {\n console.warn(\"[mobx-react] disposeOnUnmount is deprecated. It won't work correctly with React 18 and higher.\");\n }\n warnedAboutDisposeOnUnmountDeprecated = true;\n }\n var c = Object.getPrototypeOf(target).constructor;\n var c2 = Object.getPrototypeOf(target.constructor);\n // Special case for react-hot-loader\n var c3 = Object.getPrototypeOf(Object.getPrototypeOf(target));\n if (!(c === React__default.Component || c === React__default.PureComponent || c2 === React__default.Component || c2 === React__default.PureComponent || c3 === React__default.Component || c3 === React__default.PureComponent)) {\n throw new Error(\"[mobx-react] disposeOnUnmount only supports direct subclasses of React.Component or React.PureComponent.\");\n }\n if (typeof propertyKeyOrFunction !== \"string\" && typeof propertyKeyOrFunction !== \"function\" && !Array.isArray(propertyKeyOrFunction)) {\n throw new Error(\"[mobx-react] disposeOnUnmount only works if the parameter is either a property key or a function.\");\n }\n // decorator's target is the prototype, so it doesn't have any instance properties like props\n var isDecorator = typeof propertyKeyOrFunction === \"string\";\n // add property key / function we want run (disposed) to the store\n var componentWasAlreadyModified = !!target[protoStoreKey] || !!target[instStoreKey];\n var store = isDecorator ?\n // decorators are added to the prototype store\n target[protoStoreKey] || (target[protoStoreKey] = []) :\n // functions are added to the instance store\n target[instStoreKey] || (target[instStoreKey] = []);\n store.push(propertyKeyOrFunction);\n // tweak the component class componentWillUnmount if not done already\n if (!componentWasAlreadyModified) {\n patch(target, \"componentWillUnmount\", runDisposersOnWillUnmount);\n }\n // return the disposer as is if invoked as a non decorator\n if (typeof propertyKeyOrFunction !== \"string\") {\n return propertyKeyOrFunction;\n }\n}\n\n// Copied from React.PropTypes\nfunction createChainableTypeChecker(validator) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = new Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n rest[_key - 6] = arguments[_key];\n }\n return untracked(function () {\n componentName = componentName || \"<>\";\n propFullName = propFullName || propName;\n if (props[propName] == null) {\n if (isRequired) {\n var actual = props[propName] === null ? \"null\" : \"undefined\";\n return new Error(\"The \" + location + \" `\" + propFullName + \"` is marked as required \" + \"in `\" + componentName + \"`, but its value is `\" + actual + \"`.\");\n }\n return null;\n } else {\n // @ts-ignore rest arg is necessary for some React internals - fails tests otherwise\n return validator.apply(void 0, [props, propName, componentName, location, propFullName].concat(rest));\n }\n });\n }\n var chainedCheckType = checkType.bind(null, false);\n // Add isRequired to satisfy Requirable\n chainedCheckType.isRequired = checkType.bind(null, true);\n return chainedCheckType;\n}\n// Copied from React.PropTypes\nfunction isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === \"symbol\") {\n return true;\n }\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue[\"@@toStringTag\"] === \"Symbol\") {\n return true;\n }\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === \"function\" && propValue instanceof Symbol) {\n return true;\n }\n return false;\n}\n// Copied from React.PropTypes\nfunction getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return \"array\";\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return \"object\";\n }\n if (isSymbol(propType, propValue)) {\n return \"symbol\";\n }\n return propType;\n}\n// This handles more types than `getPropType`. Only used for error messages.\n// Copied from React.PropTypes\nfunction getPreciseType(propValue) {\n var propType = getPropType(propValue);\n if (propType === \"object\") {\n if (propValue instanceof Date) {\n return \"date\";\n } else if (propValue instanceof RegExp) {\n return \"regexp\";\n }\n }\n return propType;\n}\nfunction createObservableTypeCheckerCreator(allowNativeType, mobxType) {\n return createChainableTypeChecker(function (props, propName, componentName, location, propFullName) {\n return untracked(function () {\n if (allowNativeType) {\n if (getPropType(props[propName]) === mobxType.toLowerCase()) return null;\n }\n var mobxChecker;\n switch (mobxType) {\n case \"Array\":\n mobxChecker = isObservableArray;\n break;\n case \"Object\":\n mobxChecker = isObservableObject;\n break;\n case \"Map\":\n mobxChecker = isObservableMap;\n break;\n default:\n throw new Error(\"Unexpected mobxType: \" + mobxType);\n }\n var propValue = props[propName];\n if (!mobxChecker(propValue)) {\n var preciseType = getPreciseType(propValue);\n var nativeTypeExpectationMessage = allowNativeType ? \" or javascript `\" + mobxType.toLowerCase() + \"`\" : \"\";\n return new Error(\"Invalid prop `\" + propFullName + \"` of type `\" + preciseType + \"` supplied to\" + \" `\" + componentName + \"`, expected `mobx.Observable\" + mobxType + \"`\" + nativeTypeExpectationMessage + \".\");\n }\n return null;\n });\n });\n}\nfunction createObservableArrayOfTypeChecker(allowNativeType, typeChecker) {\n return createChainableTypeChecker(function (props, propName, componentName, location, propFullName) {\n for (var _len2 = arguments.length, rest = new Array(_len2 > 5 ? _len2 - 5 : 0), _key2 = 5; _key2 < _len2; _key2++) {\n rest[_key2 - 5] = arguments[_key2];\n }\n return untracked(function () {\n if (typeof typeChecker !== \"function\") {\n return new Error(\"Property `\" + propFullName + \"` of component `\" + componentName + \"` has \" + \"invalid PropType notation.\");\n } else {\n var error = createObservableTypeCheckerCreator(allowNativeType, \"Array\")(props, propName, componentName, location, propFullName);\n if (error instanceof Error) return error;\n var propValue = props[propName];\n for (var i = 0; i < propValue.length; i++) {\n error = typeChecker.apply(void 0, [propValue, i, componentName, location, propFullName + \"[\" + i + \"]\"].concat(rest));\n if (error instanceof Error) return error;\n }\n return null;\n }\n });\n });\n}\nvar observableArray = /*#__PURE__*/createObservableTypeCheckerCreator(false, \"Array\");\nvar observableArrayOf = /*#__PURE__*/createObservableArrayOfTypeChecker.bind(null, false);\nvar observableMap = /*#__PURE__*/createObservableTypeCheckerCreator(false, \"Map\");\nvar observableObject = /*#__PURE__*/createObservableTypeCheckerCreator(false, \"Object\");\nvar arrayOrObservableArray = /*#__PURE__*/createObservableTypeCheckerCreator(true, \"Array\");\nvar arrayOrObservableArrayOf = /*#__PURE__*/createObservableArrayOfTypeChecker.bind(null, true);\nvar objectOrObservableObject = /*#__PURE__*/createObservableTypeCheckerCreator(true, \"Object\");\nvar PropTypes = {\n observableArray: observableArray,\n observableArrayOf: observableArrayOf,\n observableMap: observableMap,\n observableObject: observableObject,\n arrayOrObservableArray: arrayOrObservableArray,\n arrayOrObservableArrayOf: arrayOrObservableArrayOf,\n objectOrObservableObject: objectOrObservableObject\n};\n\nif (!Component) {\n throw new Error(\"mobx-react requires React to be available\");\n}\nif (!observable) {\n throw new Error(\"mobx-react requires mobx to be available\");\n}\n\nexport { MobXProviderContext, PropTypes, Provider, disposeOnUnmount, inject, observer };\n//# sourceMappingURL=mobxreact.esm.js.map\n","\nimport React from 'react';\nimport { f7 } from 'framework7-react';\nimport { Dom7 } from 'framework7'\n\nclass WrapDevice {\n constructor(){\n const ua = navigator.userAgent,\n isMobile = /Mobile(\\/|\\s|;)/.test(ua);\n\n this.isPhone = /(iPhone|iPod)/.test(ua) ||\n (!/(Silk)/.test(ua) && (/(Android)/.test(ua) && !/Galaxy Tab S6|SCH-I800|Lenovo YT-X705X/.test(ua) && (/(Android 2)/.test(ua) || isMobile))) ||\n (/(BlackBerry|BB)/.test(ua) && isMobile) ||\n /(Windows Phone)/.test(ua);\n\n this.isTablet = !this.isPhone && (/iPad/.test(ua) || /Android/.test(ua) || /(RIM Tablet OS)/.test(ua) ||\n (/MSIE 10/.test(ua) && /; Touch/.test(ua)));\n }\n\n initDom() {\n const $$ = Dom7;\n if ( this.sailfish ) {\n $$('html').addClass('sailfish');\n }\n\n $$('html').addClass(this.phone ? 'phone' : 'tablet');\n // $$(window).on('resize', _.bind(this.onWindowResize, this));\n }\n\n get phone() {\n return this.isPhone\n }\n\n get tablet() {\n return this.isTablet\n }\n\n get sailfish() {\n return /Sailfish/.test(navigator.userAgent) || /Jolla/.test(navigator.userAgent);\n }\n\n get android() {\n return f7.device.android;\n }\n\n get ios() {\n return f7.device.ios;\n }\n}\n\nconst device = new WrapDevice();\nexport {device as Device};\n","import e from\"void-elements\";var t=/\\s([^'\"/\\s><]+?)[\\s/>]|([^\\s=]+)=\\s?(\".*?\"|'.*?')/g;function n(n){var r={type:\"tag\",name:\"\",voidElement:!1,attrs:{},children:[]},i=n.match(/<\\/?([^\\s]+?)[/\\s>]/);if(i&&(r.name=i[1],(e[i[1]]||\"/\"===n.charAt(n.length-2))&&(r.voidElement=!0),r.name.startsWith(\"!--\"))){var s=n.indexOf(\"--\\x3e\");return{type:\"comment\",comment:-1!==s?n.slice(4,s):\"\"}}for(var a=new RegExp(t),c=null;null!==(c=a.exec(n));)if(c[0].trim())if(c[1]){var o=c[1].trim(),l=[o,\"\"];o.indexOf(\"=\")>-1&&(l=o.split(\"=\")),r.attrs[l[0]]=l[1],a.lastIndex--}else c[2]&&(r.attrs[c[2]]=c[3].trim().substring(1,c[3].length-1));return r}var r=/<[a-zA-Z0-9\\-\\!\\/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g,i=/^\\s*$/,s=Object.create(null);function a(e,t){switch(t.type){case\"text\":return e+t.content;case\"tag\":return e+=\"<\"+t.name+(t.attrs?function(e){var t=[];for(var n in e)t.push(n+'=\"'+e[n]+'\"');return t.length?\" \"+t.join(\" \"):\"\"}(t.attrs):\"\")+(t.voidElement?\"/>\":\">\"),t.voidElement?e:e+t.children.reduce(a,\"\")+\"\";case\"comment\":return e+\"\\x3c!--\"+t.comment+\"--\\x3e\"}}var c={parse:function(e,t){t||(t={}),t.components||(t.components=s);var a,c=[],o=[],l=-1,m=!1;if(0!==e.indexOf(\"<\")){var u=e.indexOf(\"<\");c.push({type:\"text\",content:-1===u?e:e.substring(0,u)})}return e.replace(r,function(r,s){if(m){if(r!==\"\")return;m=!1}var u,f=\"/\"!==r.charAt(1),h=r.startsWith(\"\\x3c!--\"),p=s+r.length,d=e.charAt(p);if(h){var v=n(r);return l<0?(c.push(v),c):((u=o[l]).children.push(v),c)}if(f&&(l++,\"tag\"===(a=n(r)).type&&t.components[a.name]&&(a.type=\"component\",m=!0),a.voidElement||m||!d||\"<\"===d||a.children.push({type:\"text\",content:e.slice(p,e.indexOf(\"<\",p))}),0===l&&c.push(a),(u=o[l-1])&&u.children.push(a),o[l]=a),(!f||a.voidElement)&&(l>-1&&(a.voidElement||a.name===r.slice(2,-1))&&(l--,a=-1===l?c:o[l]),!m&&\"<\"!==d&&d)){u=-1===l?c:o[l].children;var x=e.indexOf(\"<\",p),g=e.slice(p,-1===x?void 0:x);i.test(g)&&(g=\" \"),(x>-1&&l+u.length>=0||\" \"!==g)&&u.push({type:\"text\",content:g})}}),c},stringify:function(e){return e.reduce(function(e,t){return e+a(\"\",t)},\"\")}};export default c;\n//# sourceMappingURL=html-parse-stringify.module.js.map\n","export function warn() {\n if (console && console.warn) {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[0] === 'string') args[0] = `react-i18next:: ${args[0]}`;\n console.warn(...args);\n }\n}\nconst alreadyWarned = {};\nexport function warnOnce() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n warn(...args);\n}\nconst loadedClb = (i18n, cb) => () => {\n if (i18n.isInitialized) {\n cb();\n } else {\n const initialized = () => {\n setTimeout(() => {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n i18n.on('initialized', initialized);\n }\n};\nexport function loadNamespaces(i18n, ns, cb) {\n i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n}\nexport function loadLanguages(i18n, lng, ns, cb) {\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(n => {\n if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n });\n i18n.loadLanguages(lng, loadedClb(i18n, cb));\n}\nfunction oldI18nextHasLoadedNamespace(ns, i18n) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const lng = i18n.languages[0];\n const fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n const lastLng = i18n.languages[i18n.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = i18n.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 2;\n };\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n if (i18n.hasResourceBundle(lng, ns)) return true;\n if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n}\nexport function hasLoadedNamespace(ns, i18n) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce('i18n.languages were undefined or empty', i18n.languages);\n return true;\n }\n const isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;\n if (!isNewerI18next) {\n return oldI18nextHasLoadedNamespace(ns, i18n, options);\n }\n return i18n.hasLoadedNamespace(ns, {\n lng: options.lng,\n precheck: (i18nInstance, loadNotPending) => {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n}\nexport function getDisplayName(Component) {\n return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\n}","const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"',\n ' ': ' ',\n ' ': ' ',\n '©': '©',\n '©': '©',\n '®': '®',\n '®': '®',\n '…': '…',\n '…': '…',\n '/': '/',\n '/': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);","import { unescape } from './unescape.js';\nlet defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape\n};\nexport function setDefaults() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n defaultOptions = {\n ...defaultOptions,\n ...options\n };\n}\nexport function getDefaults() {\n return defaultOptions;\n}","let i18nInstance;\nexport function setI18n(instance) {\n i18nInstance = instance;\n}\nexport function getI18n() {\n return i18nInstance;\n}","import { setDefaults } from './defaults.js';\nimport { setI18n } from './i18nInstance.js';\nexport const initReactI18next = {\n type: '3rdParty',\n init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};","import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n constructor() {\n this.usedNamespaces = {};\n }\n addUsedNamespaces(namespaces) {\n namespaces.forEach(ns => {\n if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;\n });\n }\n getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n}\nexport function composeInitialProps(ForComponent) {\n return ctx => new Promise(resolve => {\n const i18nInitialProps = getInitialProps();\n if (ForComponent.getInitialProps) {\n ForComponent.getInitialProps(ctx).then(componentsInitialProps => {\n resolve({\n ...componentsInitialProps,\n ...i18nInitialProps\n });\n });\n } else {\n resolve(i18nInitialProps);\n }\n });\n}\nexport function getInitialProps() {\n const i18n = getI18n();\n const namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n const ret = {};\n const initialI18nStore = {};\n i18n.languages.forEach(l => {\n initialI18nStore[l] = {};\n namespaces.forEach(ns => {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n}","import { useState, useEffect, useContext, useRef, useCallback } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace } from './utils.js';\nconst usePrevious = (value, ignore) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = ignore ? ref.current : value;\n }, [value, ignore]);\n return ref.current;\n};\nfunction alwaysNewT(i18n, language, namespace, keyPrefix) {\n return i18n.getFixedT(language, namespace, keyPrefix);\n}\nfunction useMemoizedT(i18n, language, namespace, keyPrefix) {\n return useCallback(alwaysNewT(i18n, language, namespace, keyPrefix), [i18n, language, namespace, keyPrefix]);\n}\nexport function useTranslation(ns) {\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n i18n: i18nFromProps\n } = props;\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n if (!i18n) {\n warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n const notReadyT = (k, optsOrDefaultValue) => {\n if (typeof optsOrDefaultValue === 'string') return optsOrDefaultValue;\n if (optsOrDefaultValue && typeof optsOrDefaultValue === 'object' && typeof optsOrDefaultValue.defaultValue === 'string') return optsOrDefaultValue.defaultValue;\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n const retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n const i18nOptions = {\n ...getDefaults(),\n ...i18n.options.react,\n ...props\n };\n const {\n useSuspense,\n keyPrefix\n } = i18nOptions;\n let namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n const memoGetT = useMemoizedT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const getT = () => memoGetT;\n const getNewT = () => alwaysNewT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const [t, setT] = useState(getT);\n let joinedNS = namespaces.join();\n if (props.lng) joinedNS = `${props.lng}${joinedNS}`;\n const previousJoinedNS = usePrevious(joinedNS);\n const isMounted = useRef(true);\n useEffect(() => {\n const {\n bindI18n,\n bindI18nStore\n } = i18nOptions;\n isMounted.current = true;\n if (!ready && !useSuspense) {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => {\n if (isMounted.current) setT(getNewT);\n });\n } else {\n loadNamespaces(i18n, namespaces, () => {\n if (isMounted.current) setT(getNewT);\n });\n }\n }\n if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n setT(getNewT);\n }\n function boundReset() {\n if (isMounted.current) setT(getNewT);\n }\n if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n return () => {\n isMounted.current = false;\n if (bindI18n && i18n) bindI18n.split(' ').forEach(e => i18n.off(e, boundReset));\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));\n };\n }, [i18n, joinedNS]);\n const isInitial = useRef(true);\n useEffect(() => {\n if (isMounted.current && !isInitial.current) {\n setT(getT);\n }\n isInitial.current = false;\n }, [i18n, keyPrefix]);\n const ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(resolve => {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => resolve());\n } else {\n loadNamespaces(i18n, namespaces, () => resolve());\n }\n });\n}","import { createElement, forwardRef as forwardRefReact } from 'react';\nimport { useTranslation } from './useTranslation.js';\nimport { getDisplayName } from './utils.js';\nexport function withTranslation(ns) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function Extend(WrappedComponent) {\n function I18nextWithTranslation(_ref) {\n let {\n forwardedRef,\n ...rest\n } = _ref;\n const [t, i18n, ready] = useTranslation(ns, {\n ...rest,\n keyPrefix: options.keyPrefix\n });\n const passDownProps = {\n ...rest,\n t,\n i18n,\n tReady: ready\n };\n if (options.withRef && forwardedRef) {\n passDownProps.ref = forwardedRef;\n } else if (!options.withRef && forwardedRef) {\n passDownProps.forwardedRef = forwardedRef;\n }\n return createElement(WrappedComponent, passDownProps);\n }\n I18nextWithTranslation.displayName = `withI18nextTranslation(${getDisplayName(WrappedComponent)})`;\n I18nextWithTranslation.WrappedComponent = WrappedComponent;\n const forwardRef = (props, ref) => createElement(I18nextWithTranslation, Object.assign({}, props, {\n forwardedRef: ref\n }));\n return options.withRef ? forwardRefReact(forwardRef) : I18nextWithTranslation;\n };\n}","import { createElement, useMemo } from 'react';\nimport { I18nContext } from './context.js';\nexport function I18nextProvider(_ref) {\n let {\n i18n,\n defaultNS,\n children\n } = _ref;\n const value = useMemo(() => ({\n i18n,\n defaultNS\n }), [i18n, defaultNS]);\n return createElement(I18nContext.Provider, {\n value\n }, children);\n}","import React from 'react';\nconst ListContext = /*#__PURE__*/React.createContext({\n listIsMedia: false,\n listIsSimple: false,\n listIsSortable: false,\n listIsSortableOpposite: false\n});\nexport { ListContext };","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, getSlots, flattenArray, emit, extend } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7, f7ready } from '../shared/f7.js';\nimport { ListContext } from '../shared/list-context.js';\nimport { useTab } from '../shared/use-tab.js';\n\n\nconst List = /*#__PURE__*/forwardRef((props, ref) => {\n const f7VirtualList = useRef(null);\n const {\n className,\n id,\n style,\n inset,\n insetIos,\n insetMd,\n xsmallInset,\n xsmallInsetIos,\n xsmallInsetMd,\n smallInset,\n smallInsetIos,\n smallInsetMd,\n mediumInset,\n mediumInsetIos,\n mediumInsetMd,\n largeInset,\n largeInsetIos,\n largeInsetMd,\n xlargeInset,\n xlargeInsetIos,\n xlargeInsetMd,\n strong,\n strongIos,\n strongMd,\n outline,\n outlineIos,\n outlineMd,\n dividers,\n dividersIos,\n dividersMd,\n mediaList,\n sortable,\n sortableTapHold,\n sortableEnabled,\n sortableMoveElements,\n sortableOpposite,\n accordionList,\n accordionOpposite,\n contactsList,\n simpleList,\n linksList,\n menuList,\n noChevron,\n chevronCenter,\n tab,\n tabActive,\n form,\n formStoreData,\n virtualList,\n virtualListParams\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const onSubmit = event => {\n emit(props, 'submit', event);\n };\n const onSortableEnable = el => {\n if (elRef.current !== el) return;\n emit(props, 'sortableEnable');\n };\n const onSortableDisable = el => {\n if (elRef.current !== el) return;\n emit(props, 'sortableDisable');\n };\n const onSortableSort = (el, sortData, listEl) => {\n if (elRef.current !== listEl) return;\n emit(props, 'sortableSort', sortData);\n };\n const onSortableMove = (el, listEl) => {\n if (elRef.current !== listEl) return;\n emit(props, 'sortableMove', el, listEl);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7VirtualList: () => f7VirtualList.current\n }));\n useTab(elRef, props);\n const attachEvents = () => {\n f7ready(() => {\n f7.on('sortableEnable', onSortableEnable);\n f7.on('sortableDisable', onSortableDisable);\n f7.on('sortableSort', onSortableSort);\n f7.on('sortableMove', onSortableMove);\n });\n };\n const detachEvents = () => {\n if (!f7) return;\n f7.off('sortableEnable', onSortableEnable);\n f7.off('sortableDisable', onSortableDisable);\n f7.off('sortableSort', onSortableSort);\n f7.off('sortableMove', onSortableMove);\n };\n const onMount = () => {\n f7ready(() => {\n if (!virtualList) return;\n const vlParams = virtualListParams || {};\n if (!vlParams.renderItem && !vlParams.renderExternal) return;\n f7VirtualList.current = f7.virtualList.create(extend({\n el: elRef.current,\n on: {\n itemBeforeInsert(itemEl, item) {\n const vl = this;\n emit(props, 'virtualItemBeforeInsert', vl, itemEl, item);\n },\n beforeClear(fragment) {\n const vl = this;\n emit(props, 'virtualBeforeClear', vl, fragment);\n },\n itemsBeforeInsert(fragment) {\n const vl = this;\n emit(props, 'virtualItemsBeforeInsert', vl, fragment);\n },\n itemsAfterInsert(fragment) {\n const vl = this;\n emit(props, 'virtualItemsAfterInsert', vl, fragment);\n }\n }\n }, vlParams));\n });\n };\n const onDestroy = () => {\n if (!f7) return;\n if (!(virtualList && f7VirtualList.current)) return;\n if (f7VirtualList.current.destroy) f7VirtualList.current.destroy();\n f7VirtualList.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n return detachEvents;\n });\n const slots = getSlots(props);\n const {\n list: slotsList,\n default: slotsDefault\n } = slots;\n const rootChildrenBeforeList = [];\n const rootChildrenAfterList = [];\n const ulChildren = slotsList || [];\n const flattenSlots = flattenArray(slotsDefault);\n let wasUlChild = false;\n flattenSlots.forEach(child => {\n if (typeof child === 'undefined') return;\n let tag = child.type && (child.type.displayName || child.type.name);\n if (!tag && typeof child.type === 'string') {\n tag = child.type;\n }\n if (!tag || tag && !(tag === 'li' || tag.indexOf('f7-list-item') >= 0 || tag.indexOf('f7-list-button') >= 0 || tag.indexOf('f7-list-input') >= 0)) {\n if (wasUlChild) rootChildrenAfterList.push(child);else rootChildrenBeforeList.push(child);\n } else if (tag) {\n wasUlChild = true;\n ulChildren.push(child);\n }\n });\n const ListTag = form ? 'form' : 'div';\n const classes = classNames(className, 'list', {\n inset,\n 'inset-ios': insetIos,\n 'inset-md': insetMd,\n 'xsmall-inset': xsmallInset,\n 'xsmall-inset-ios': xsmallInsetIos,\n 'xsmall-inset-md': xsmallInsetMd,\n 'small-inset': smallInset,\n 'small-inset-ios': smallInsetIos,\n 'small-inset-md': smallInsetMd,\n 'medium-inset': mediumInset,\n 'medium-inset-ios': mediumInsetIos,\n 'medium-inset-md': mediumInsetMd,\n 'large-inset': largeInset,\n 'large-inset-ios': largeInsetIos,\n 'large-inset-md': largeInsetMd,\n 'xlarge-inset': xlargeInset,\n 'xlarge-inset-ios': xlargeInsetIos,\n 'xlarge-inset-md': xlargeInsetMd,\n 'list-strong': strong,\n 'list-strong-ios': strongIos,\n 'list-strong-md': strongMd,\n 'list-outline': outline,\n 'list-outline-ios': outlineIos,\n 'list-outline-md': outlineMd,\n 'list-dividers': dividers,\n 'list-dividers-ios': dividersIos,\n 'list-dividers-md': dividersMd,\n 'media-list': mediaList,\n 'simple-list': simpleList,\n 'links-list': linksList,\n 'menu-list': menuList,\n sortable,\n 'sortable-tap-hold': sortableTapHold,\n 'sortable-enabled': sortableEnabled,\n 'sortable-opposite': sortableOpposite,\n 'accordion-list': accordionList,\n 'accordion-opposite': accordionOpposite,\n 'contacts-list': contactsList,\n 'virtual-list': virtualList,\n tab,\n 'tab-active': tabActive,\n 'form-store-data': formStoreData,\n 'no-chevron': noChevron,\n 'chevron-center': chevronCenter\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(ListTag, _extends({\n id: id,\n ref: elRef,\n style: style,\n className: classes\n }, extraAttrs, {\n \"data-sortable-move-elements\": typeof sortableMoveElements !== 'undefined' ? sortableMoveElements.toString() : undefined,\n onSubmit: onSubmit\n }), /*#__PURE__*/React.createElement(ListContext.Provider, {\n value: {\n listIsMedia: mediaList,\n listIsSimple: simpleList,\n listIsSortable: sortable,\n listIsSortableOpposite: sortableOpposite\n }\n }, slots['before-list'], rootChildrenBeforeList, ulChildren.length > 0 && /*#__PURE__*/React.createElement(\"ul\", null, ulChildren), slots['after-list'], rootChildrenAfterList));\n});\nList.displayName = 'f7-list';\nexport default List;","import React, { useRef, useEffect } from 'react';\nimport { classNames } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport Badge from './badge.js';\nconst ListItemContent = props => {\n const {\n indeterminate,\n radio,\n checkbox,\n value,\n name,\n readonly,\n disabled,\n checked,\n defaultChecked,\n required,\n media,\n header,\n footer,\n title,\n subtitle,\n text,\n after,\n badge,\n badgeColor,\n checkboxIcon,\n radioIcon,\n swipeout,\n sortable,\n accordionItem,\n onChange,\n onClick,\n isMediaComputed,\n isSortableComputed,\n isSortableOppositeComputed,\n slots\n } = props;\n const inputElRef = useRef(null);\n useEffect(() => {\n if (inputElRef.current) {\n inputElRef.current.indeterminate = !!indeterminate;\n }\n }, [indeterminate]);\n let titleEl;\n let afterWrapEl;\n let afterEl;\n let badgeEl;\n let innerEl;\n let titleRowEl;\n let subtitleEl;\n let textEl;\n let mediaEl;\n let inputEl;\n let inputIconEl;\n let headerEl;\n let footerEl;\n\n // Input\n if (radio || checkbox) {\n inputEl = /*#__PURE__*/React.createElement(\"input\", {\n ref: inputElRef,\n value: value,\n name: name,\n checked: checked,\n defaultChecked: defaultChecked,\n readOnly: readonly,\n disabled: disabled,\n required: required,\n type: radio ? 'radio' : 'checkbox',\n onChange: onChange\n });\n inputIconEl = /*#__PURE__*/React.createElement(\"i\", {\n className: `icon icon-${radio ? 'radio' : 'checkbox'}`\n });\n }\n // Media\n if (media || slots.media) {\n let mediaImgEl;\n if (media) {\n mediaImgEl = /*#__PURE__*/React.createElement(\"img\", {\n src: media\n });\n }\n mediaEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-media\"\n }, mediaImgEl, slots.media);\n }\n // Inner Elements\n if (header || slots.header) {\n headerEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-header\"\n }, header, slots.header);\n }\n if (footer || slots.footer) {\n footerEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-footer\"\n }, footer, slots.footer);\n }\n if (title || slots.title || !isMediaComputed && headerEl || !isMediaComputed && footerEl) {\n titleEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-title\"\n }, !isMediaComputed && headerEl, title, slots.title, !isMediaComputed && footerEl);\n }\n if (subtitle || slots.subtitle) {\n subtitleEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-subtitle\"\n }, subtitle, slots.subtitle);\n }\n if (text || slots.text) {\n textEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-text\"\n }, text, slots.text);\n }\n if (after || badge || slots.after) {\n if (after) {\n afterEl = /*#__PURE__*/React.createElement(\"span\", null, after);\n }\n if (badge) {\n badgeEl = /*#__PURE__*/React.createElement(Badge, {\n color: badgeColor\n }, badge);\n }\n afterWrapEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-after\"\n }, slots['after-start'], afterEl, badgeEl, slots.after, slots['after-end']);\n }\n if (isMediaComputed) {\n titleRowEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-title-row\"\n }, slots['before-title'], titleEl, slots['after-title'], afterWrapEl);\n innerEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-inner\"\n }, slots['inner-start'], headerEl, titleRowEl, subtitleEl, textEl, swipeout || accordionItem ? null : slots.default, slots.inner, footerEl, slots['inner-end']);\n } else {\n innerEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"item-inner\"\n }, slots['inner-start'], slots['before-title'], titleEl, slots['after-title'], afterWrapEl, swipeout || accordionItem ? null : slots.default, slots.inner, slots['inner-end']);\n }\n const ItemContentTag = checkbox || radio ? 'label' : 'div';\n const classes = classNames('item-content', {\n 'item-checkbox': checkbox,\n 'item-radio': radio,\n 'item-checkbox-icon-start': checkbox && checkboxIcon === 'start',\n 'item-checkbox-icon-end': checkbox && checkboxIcon === 'end',\n 'item-radio-icon-start': radio && radioIcon === 'start',\n 'item-radio-icon-end': radio && radioIcon === 'end'\n }, colorClasses(props));\n return /*#__PURE__*/React.createElement(ItemContentTag, {\n className: classes,\n onClick: onClick\n }, isSortableComputed && sortable !== false && isSortableOppositeComputed && /*#__PURE__*/React.createElement(\"div\", {\n className: \"sortable-handler\"\n }), slots['content-start'], inputEl, inputIconEl, mediaEl, innerEl, slots.content, slots['content-end']);\n};\nListItemContent.displayName = 'f7-list-item-content';\nexport default ListItemContent;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle, useContext } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, getSlots, emit, isStringProp } from '../shared/utils.js';\nimport { colorClasses, actionsAttrs, actionsClasses, routerAttrs, routerClasses } from '../shared/mixins.js';\nimport { useRouteProps } from '../shared/use-route-props.js';\nimport { useSmartSelect } from '../shared/use-smart-select.js';\nimport { useTooltip } from '../shared/use-tooltip.js';\nimport { watchProp } from '../shared/watch-prop.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport ListItemContent from './list-item-content.js';\nimport { ListContext } from '../shared/list-context.js';\n\n\n\n/*\nconst ListItemContent = ({\n props,\n slots,\n inputElRef,\n onChange,\n onClick,\n isMediaComputed,\n isSortableComputed,\n isSortableOppositeComputed,\n} = {}) => {\n const {\n radio,\n checkbox,\n value,\n name,\n readonly,\n disabled,\n checked,\n defaultChecked,\n required,\n media,\n header,\n footer,\n title,\n subtitle,\n text,\n after,\n badge,\n badgeColor,\n checkboxIcon,\n radioIcon,\n swipeout,\n sortable,\n accordionItem,\n } = props;\n\n};\n*/\nconst ListItem = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n title,\n link,\n target,\n tabLink,\n tabLinkActive,\n selected,\n mediaItem,\n mediaList,\n groupTitle,\n swipeout,\n swipeoutOpened,\n sortable,\n sortableOpposite,\n accordionItem,\n accordionItemOpened,\n smartSelect,\n smartSelectParams,\n noChevron,\n chevronCenter,\n checkbox,\n radio,\n disabled,\n virtualListIndex,\n href\n } = props;\n const listContext = useContext(ListContext);\n const {\n listIsMedia = false,\n listIsSortable = false,\n listIsSortableOpposite = false,\n listIsSimple = false\n } = listContext || {};\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const linkElRef = useRef(null);\n const f7SmartSelect = useRef(null);\n const onClick = event => {\n if (event.target.tagName.toLowerCase() !== 'input') {\n emit(props, 'click', event);\n }\n };\n const onSwipeoutOverswipeEnter = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutOverswipeEnter');\n };\n const onSwipeoutOverswipeExit = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutOverswipeExit');\n };\n const onSwipeoutDeleted = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutDeleted');\n };\n const onSwipeoutDelete = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutDelete');\n };\n const onSwipeoutClose = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutClose');\n };\n const onSwipeoutClosed = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutClosed');\n };\n const onSwipeoutOpen = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutOpen');\n };\n const onSwipeoutOpened = el => {\n if (elRef.current !== el) return;\n emit(props, 'swipeoutOpened');\n };\n const onSwipeout = (el, progress) => {\n if (elRef.current !== el) return;\n emit(props, 'swipeout', progress);\n };\n const onAccBeforeClose = (el, prevent) => {\n if (elRef.current !== el) return;\n emit(props, 'accordionBeforeClose', prevent);\n };\n const onAccClose = el => {\n if (elRef.current !== el) return;\n emit(props, 'accordionClose');\n };\n const onAccClosed = el => {\n if (elRef.current !== el) return;\n emit(props, 'accordionClosed');\n };\n const onAccBeforeOpen = (el, prevent) => {\n if (elRef.current !== el) return;\n emit(props, 'accordionBeforeOpen', prevent);\n };\n const onAccOpen = el => {\n if (elRef.current !== el) return;\n emit(props, 'accordionOpen');\n };\n const onAccOpened = el => {\n if (elRef.current !== el) return;\n emit(props, 'accordionOpened');\n };\n const onChange = event => {\n emit(props, 'change', event);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7SmartSelect: () => f7SmartSelect.current\n }));\n useTooltip(elRef, props);\n useRouteProps(linkElRef, props);\n watchProp(swipeoutOpened, newValue => {\n if (!swipeout || !elRef.current || !f7) return;\n if (newValue) {\n f7.swipeout.open(elRef.current);\n } else {\n f7.swipeout.close(elRef.current);\n }\n });\n const attachEvents = () => {\n f7ready(() => {\n if (swipeout) {\n f7.on('swipeoutOpen', onSwipeoutOpen);\n f7.on('swipeoutOpened', onSwipeoutOpened);\n f7.on('swipeoutClose', onSwipeoutClose);\n f7.on('swipeoutClosed', onSwipeoutClosed);\n f7.on('swipeoutDelete', onSwipeoutDelete);\n f7.on('swipeoutDeleted', onSwipeoutDeleted);\n f7.on('swipeoutOverswipeEnter', onSwipeoutOverswipeEnter);\n f7.on('swipeoutOverswipeExit', onSwipeoutOverswipeExit);\n f7.on('swipeout', onSwipeout);\n }\n if (accordionItem) {\n f7.on('accordionBeforeOpen', onAccBeforeOpen);\n f7.on('accordionOpen', onAccOpen);\n f7.on('accordionOpened', onAccOpened);\n f7.on('accordionBeforeClose', onAccBeforeClose);\n f7.on('accordionClose', onAccClose);\n f7.on('accordionClosed', onAccClosed);\n }\n });\n };\n const detachEvents = () => {\n if (!f7) return;\n f7.off('swipeoutOpen', onSwipeoutOpen);\n f7.off('swipeoutOpened', onSwipeoutOpened);\n f7.off('swipeoutClose', onSwipeoutClose);\n f7.off('swipeoutClosed', onSwipeoutClosed);\n f7.off('swipeoutDelete', onSwipeoutDelete);\n f7.off('swipeoutDeleted', onSwipeoutDeleted);\n f7.off('swipeoutOverswipeEnter', onSwipeoutOverswipeEnter);\n f7.off('swipeoutOverswipeExit', onSwipeoutOverswipeExit);\n f7.off('swipeout', onSwipeout);\n f7.off('accordionBeforeOpen', onAccBeforeOpen);\n f7.off('accordionOpen', onAccOpen);\n f7.off('accordionOpened', onAccOpened);\n f7.off('accordionBeforeClose', onAccBeforeClose);\n f7.off('accordionClose', onAccClose);\n f7.off('accordionClosed', onAccClosed);\n };\n useSmartSelect(smartSelect, smartSelectParams, f7SmartSelect, () => elRef.current.querySelector('a.smart-select'));\n useIsomorphicLayoutEffect(() => {\n f7ready(() => {\n if (swipeout && swipeoutOpened) {\n f7.swipeout.open(elRef.current);\n }\n });\n }, []);\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n return detachEvents;\n });\n const slots = getSlots(props);\n let linkEl;\n let itemContentEl;\n const isMediaComputed = mediaItem || mediaList || listIsMedia;\n const isSortableComputed = sortable === true || sortable === false ? sortable : listIsSortable;\n const isSortableOppositeComputed = isSortableComputed && (sortableOpposite || listIsSortableOpposite);\n if (!listIsSimple) {\n // Item Content\n itemContentEl = /*#__PURE__*/React.createElement(ListItemContent, _extends({}, props, {\n slots: slots,\n onChange: onChange,\n onClick: link || href || accordionItem || smartSelect ? undefined : onClick,\n isMediaComputed: isMediaComputed,\n isSortableComputed: isSortableComputed,\n isSortableOppositeComputed: isSortableOppositeComputed\n }));\n\n // Link\n if (link || href || accordionItem || smartSelect) {\n const linkAttrs = {\n href: link === true ? '' : link || href,\n target,\n 'data-tab': isStringProp(tabLink) && tabLink || undefined,\n ...routerAttrs(props),\n ...actionsAttrs(props)\n };\n const linkClasses = classNames({\n 'item-link': true,\n 'smart-select': smartSelect,\n 'tab-link': tabLink || tabLink === '',\n 'tab-link-active': tabLinkActive,\n 'item-selected': selected\n }, routerClasses(props), actionsClasses(props));\n linkEl = /*#__PURE__*/React.createElement(\"a\", _extends({\n ref: linkElRef,\n className: linkClasses\n }, linkAttrs, {\n onClick: onClick\n }), itemContentEl);\n }\n }\n const liClasses = classNames(className, {\n 'list-group-title': groupTitle,\n 'media-item': isMediaComputed,\n swipeout,\n 'accordion-item': accordionItem,\n 'accordion-item-opened': accordionItemOpened,\n disabled: disabled && !(radio || checkbox),\n 'no-chevron': noChevron,\n 'chevron-center': chevronCenter,\n 'disallow-sorting': sortable === false\n }, colorClasses(props));\n if (groupTitle) {\n return /*#__PURE__*/React.createElement(\"li\", {\n ref: elRef,\n id: id,\n style: style,\n className: liClasses,\n \"data-virtual-list-index\": virtualListIndex,\n onClick: onClick\n }, /*#__PURE__*/React.createElement(\"span\", null, title, children));\n }\n if (listIsSimple) {\n return /*#__PURE__*/React.createElement(\"li\", {\n ref: elRef,\n id: id,\n style: style,\n className: liClasses,\n \"data-virtual-list-index\": virtualListIndex,\n onClick: onClick\n }, title, children);\n }\n const linkItemEl = link || href || smartSelect || accordionItem ? linkEl : itemContentEl;\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n ref: elRef,\n id: id,\n style: style,\n className: liClasses,\n \"data-virtual-list-index\": virtualListIndex\n }, extraAttrs), slots['root-start'], swipeout ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"swipeout-content\"\n }, linkItemEl) : linkItemEl, isSortableComputed && sortable !== false && !isSortableOppositeComputed && /*#__PURE__*/React.createElement(\"div\", {\n className: \"sortable-handler\"\n }), (swipeout || accordionItem) && slots.default, slots.root, slots['root-end']);\n});\nListItem.displayName = 'f7-list-item';\nexport default ListItem;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { watchProp } from '../shared/watch-prop.js';\nimport { useTooltip } from '../shared/use-tooltip.js';\n\n\nconst Toggle = /*#__PURE__*/forwardRef((props, ref) => {\n const f7Toggle = useRef(null);\n const {\n className,\n id,\n style,\n init = true,\n checked,\n defaultChecked,\n disabled,\n readonly,\n name,\n value\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const inputElRef = useRef(null);\n const onChange = event => {\n emit(props, 'change', event);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7Toggle: () => f7Toggle.current\n }));\n useTooltip(elRef, props);\n watchProp(checked, newValue => {\n if (!f7Toggle.current) return;\n f7Toggle.current.checked = newValue;\n });\n const onToggleChange = toggleInstance => {\n emit(props, 'toggleChange', toggleInstance.checked);\n };\n const toggleEvents = method => {\n if (!f7Toggle.current) return;\n f7Toggle.current[method]('toggleChange', onToggleChange);\n };\n const onMount = () => {\n f7ready(() => {\n if (!init || !elRef.current) return;\n f7Toggle.current = f7.toggle.create({\n el: elRef.current\n });\n toggleEvents('on');\n });\n };\n const onDestroy = () => {\n if (f7Toggle.current && f7Toggle.current.destroy && f7Toggle.current.$el) {\n f7Toggle.current.destroy();\n }\n f7Toggle.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n toggleEvents('on');\n if (inputElRef.current) {\n inputElRef.current.addEventListener('change', onChange);\n }\n return () => {\n toggleEvents('off');\n if (inputElRef.current) {\n inputElRef.current.removeEventListener('change', onChange);\n }\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n const labelClasses = classNames('toggle', className, {\n disabled\n }, colorClasses(props));\n const inputEl = /*#__PURE__*/React.createElement(\"input\", {\n ref: inputElRef,\n type: \"checkbox\",\n name: name,\n disabled: disabled,\n readOnly: readonly,\n checked: checked,\n defaultChecked: defaultChecked,\n value: value,\n onChange: () => {}\n });\n return /*#__PURE__*/React.createElement(\"label\", _extends({\n id: id,\n style: style,\n className: labelClasses,\n ref: elRef\n }, extraAttrs), inputEl, /*#__PURE__*/React.createElement(\"span\", {\n className: \"toggle-icon\"\n }));\n});\nToggle.displayName = 'f7-toggle';\nexport default Toggle;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, getSlots, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { useTheme } from '../shared/use-theme.js';\nimport { f7ready, f7 } from '../shared/f7.js';\nimport { TabbarContext } from '../shared/tabbar-context.js';\n\n\nconst Toolbar = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n tabbar,\n icons,\n scrollable,\n hidden,\n outline = true,\n position,\n topMd,\n topIos,\n top,\n bottomMd,\n bottomIos,\n bottom,\n inner = true\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const onHide = toolbarEl => {\n if (elRef.current !== toolbarEl) return;\n emit(props, 'toolbarHide');\n };\n const onShow = toolbarEl => {\n if (elRef.current !== toolbarEl) return;\n emit(props, 'toolbarShow');\n };\n const hide = animate => {\n if (!f7) return;\n f7.toolbar.hide(elRef.current, animate);\n };\n const show = animate => {\n if (!f7) return;\n f7.toolbar.show(elRef.current, animate);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n hide,\n show\n }));\n useIsomorphicLayoutEffect(() => {\n f7ready(() => {\n if (tabbar && f7 && elRef.current) {\n f7.toolbar.setHighlight(elRef.current);\n }\n f7.on('toolbarShow', onShow);\n f7.on('toolbarHide', onHide);\n });\n return () => {\n if (!f7) return;\n f7.off('toolbarShow', onShow);\n f7.off('toolbarHide', onHide);\n };\n });\n const theme = useTheme();\n const classes = classNames(className, 'toolbar', {\n tabbar,\n 'toolbar-bottom': theme && theme.md && bottomMd || theme && theme.ios && bottomIos || bottom || position === 'bottom',\n 'toolbar-top': theme && theme.md && topMd || theme && theme.ios && topIos || top || position === 'top',\n 'tabbar-icons': icons,\n 'tabbar-scrollable': scrollable,\n 'toolbar-hidden': hidden,\n 'no-outline': !outline\n }, colorClasses(props));\n const slots = getSlots(props);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), /*#__PURE__*/React.createElement(TabbarContext.Provider, {\n value: {\n tabbarHasIcons: icons\n }\n }, slots['before-inner'], inner ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"toolbar-inner\"\n }, slots.default) : slots.default, slots['after-inner']));\n});\nToolbar.displayName = 'f7-toolbar';\nexport default Toolbar;","import React, { Component, useEffect } from 'react';\nimport { observer, inject } from \"mobx-react\";\nimport { Page, Navbar, NavRight, List, ListItem, Icon, Toggle, Toolbar, Link } from 'framework7-react';\nimport { f7 } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from \"../../../utils/device\";\n\nconst PageReview = props => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const isProtected = props.isProtected;\n const isDisableAllSettings = props.isReviewOnly || props.displayMode === \"final\" || props.displayMode === \"original\";\n const canReview = !!props.canReview;\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {canReview &&\n \n props.onTrackChanges(!props.trackChanges)} />\n \n }\n {!props.isRestrictedEdit &&\n \n }\n \n \n \n \n \n {canReview && !props.canUseReviewPermissions && !isProtected &&\n {props.onAcceptAll();}}>\n \n \n }\n {canReview && !props.canUseReviewPermissions && !isProtected &&\n {props.onRejectAll();}}>\n \n \n }\n \n \n )\n};\n\nconst DisplayMode = props => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const mode = props.storeReview.displayMode;\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {\n props.onDisplayMode('markup');\n }}\n >\n {\n props.onDisplayMode('final');\n }}\n >\n {\n props.onDisplayMode('original');\n }}\n >\n \n \n )\n};\n\nconst PageReviewChange = inject(\"storeAppOptions\")(observer(props => {\n const isAndroid = Device.android;\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const change = props.change;\n const displayMode = props.displayMode;\n const isLockAcceptReject = (!change || (change && !change.editable) || (displayMode === \"final\" || displayMode === \"original\") || !props.canReview);\n const isLockPrevNext = (displayMode === \"final\" || displayMode === \"original\");\n const appOptions = props.storeAppOptions;\n const isProtected = appOptions.isProtected;\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n \n {(!props.isReviewOnly && !isProtected) &&\n \n {props.onAcceptCurrentChange()}}\n >{_t.textAccept}\n {props.onRejectCurrentChange()}}\n >{_t.textReject}\n \n }\n {!props.isReviewOnly && change && change?.editable &&\n \n {props.onDeleteChange()}}>{_t.textDelete}\n \n }\n {props.goto && {props.onGotoNextChange()}}>}\n \n \n {props.onPrevChange()}}\n className={isLockPrevNext && 'disabled'}\n >\n {props.onNextChange()}}\n className={isLockPrevNext && 'disabled'}\n >\n \n \n {change ?\n
                      \n
                      \n {isAndroid &&\n
                      {change.initials}
                      \n }\n
                      \n
                      {change.userName}
                      \n
                      {change.date}
                      \n
                      \n
                      \n
                      {change.text}
                      \n
                      :\n
                      {_t.textNoChanges}
                      \n }\n
                      \n )\n}));\n\nconst PageDisplayMode = inject(\"storeReview\")(observer(DisplayMode));\n\nexport {PageReview, PageDisplayMode, PageReviewChange};","\nclass LocalStorage {\n constructor() {\n Common.Gateway.on('internalcommand', data => {\n if (data.type == 'localstorage') {\n this._store = data.keys;\n }\n });\n\n this._store = {};\n this._prefix = 'mobile-';\n this._common_keys = ['guest-id', 'guest-username'];\n\n try {\n this._isAllowed = !!window.localStorage;\n } catch (e) {\n this._isAllowed = false;\n }\n }\n\n get id() {\n return this._storeName;\n }\n\n set id(name) {\n this._storeName = name;\n }\n\n set keysFilter(value) {\n this._filter = value;\n }\n\n get keysFilter() {\n return this._filter;\n }\n\n get prefix() {\n return this._prefix;\n }\n\n set prefix(p) {\n this._prefix = p;\n }\n\n sync() {\n if ( !this._isAllowed )\n Common.Gateway.internalMessage('localstorage', {cmd:'get', keys:this._filter});\n }\n\n save() {\n if ( !this._isAllowed )\n Common.Gateway.internalMessage('localstorage', {cmd:'set', keys:this._store});\n }\n\n setItem(name, value, just) {\n if ( !this._common_keys.includes(value) )\n name = this._prefix + name;\n\n if ( this._isAllowed ) {\n try {\n localStorage.setItem(name, value);\n } catch (error){}\n } else {\n this._store[name] = value;\n\n if ( just===true ) {\n Common.Gateway.internalMessage('localstorage', {cmd:'set', keys: {name: value}});\n }\n }\n }\n\n getItem(name) {\n if ( !this._common_keys.includes(name) )\n name = this._prefix + name;\n\n if ( this._isAllowed )\n return localStorage.getItem(name);\n else return this._store[name]===undefined ? null : this._store[name];\n };\n\n setBool(name, value, just) {\n this.setItem(name, value ? 1 : 0, just);\n }\n\n getBool(name, defValue) {\n const value = this.getItem(name);\n return (value !== null) ? (parseInt(value) != 0) : !!defValue;\n }\n\n itemExists(name) {\n return this.getItem(name) !== null;\n }\n}\n\nconst instance = new LocalStorage();\nexport {instance as LocalStorage};","import React, { Component } from 'react'\nimport Notifications from '../../../utils/notifications.js'\nimport {observer, inject} from \"mobx-react\"\nimport { withTranslation } from 'react-i18next';\n\nimport {PageReview, PageReviewChange} from \"../../view/collaboration/Review\";\nimport {LocalStorage} from \"../../../utils/LocalStorage.mjs\";\n\nclass InitReview extends Component {\n constructor(props){\n super(props);\n\n Common.Notifications.on('engineCreated', api => {\n api.asc_registerCallback('asc_onShowRevisionsChange', this.onChangeReview.bind(this));\n });\n\n Common.Notifications.on('document:ready', () => {\n const api = Common.EditorApi.get();\n const appOptions = props.storeAppOptions;\n const isProtected = appOptions.isProtected;\n\n let trackChanges = appOptions.customization && appOptions.customization.review ? appOptions.customization.review.trackChanges : undefined;\n (trackChanges===undefined) && (trackChanges = appOptions.customization ? appOptions.customization.trackChanges : undefined);\n trackChanges = appOptions.isReviewOnly || trackChanges === true || trackChanges !== false\n && LocalStorage.getBool(\"de-mobile-track-changes-\" + (appOptions.fileKey || ''));\n\n if(!isProtected) {\n api.asc_SetTrackRevisions(trackChanges);\n }\n \n // Init display mode\n\n const canViewReview = appOptions.canReview || appOptions.isEdit || api.asc_HaveRevisionsChanges(true);\n if (!appOptions.canReview)\n appOptions.setCanViewReview(canViewReview);\n if (canViewReview) {\n let viewReviewMode = (appOptions.isEdit || appOptions.isRestrictedEdit) ? null : LocalStorage.getItem(\"de-view-review-mode\");\n if (viewReviewMode === null) {\n viewReviewMode = appOptions.customization && appOptions.customization.review ? appOptions.customization.review.reviewDisplay : undefined;\n !viewReviewMode && (viewReviewMode = appOptions.customization ? appOptions.customization.reviewDisplay : undefined);\n viewReviewMode = /^(original|final|markup|simple)$/i.test(viewReviewMode) ? viewReviewMode.toLocaleLowerCase() : ( appOptions.isEdit || appOptions.isRestrictedEdit ? 'markup' : 'original');\n }\n let displayMode = viewReviewMode.toLocaleLowerCase();\n let type = Asc.c_oAscDisplayModeInReview.Edit;\n switch (displayMode) {\n case 'final':\n type = Asc.c_oAscDisplayModeInReview.Final;\n break;\n case 'original':\n type = Asc.c_oAscDisplayModeInReview.Original;\n break;\n }\n api.asc_SetDisplayModeInReview(type);\n props.storeReview.changeDisplayMode(displayMode);\n }\n });\n }\n\n onChangeReview (data, isShow) {\n const storeReview = this.props.storeReview;\n storeReview.changeArrReview(data);\n }\n\n render() {\n return null\n }\n}\n\nclass Review extends Component {\n constructor(props) {\n super(props);\n this.onTrackChanges = this.onTrackChanges.bind(this);\n this.onDisplayMode = this.onDisplayMode.bind(this);\n\n this.appConfig = props.storeAppOptions;\n this.editorPrefix = window.editorType || '';\n\n let trackChanges = this.appConfig.customization && this.appConfig.customization.review ? this.appConfig.customization.review.trackChanges : undefined;\n (trackChanges===undefined) && (trackChanges = this.appConfig.customization ? this.appConfig.customization.trackChanges : undefined);\n trackChanges = this.appConfig.isReviewOnly || trackChanges === true || trackChanges !== false\n && LocalStorage.getBool(`${this.editorPrefix}-mobile-track-changes-${this.appConfig.fileKey || ''}`);\n\n this.state = {\n trackChanges: trackChanges\n }\n }\n\n onTrackChanges (checked) {\n const api = Common.EditorApi.get();\n if ( this.appConfig.isReviewOnly ) {\n this.setState({trackChanges: true});\n } else {\n this.setState({trackChanges: checked});\n api.asc_SetTrackRevisions(checked);\n LocalStorage.setBool(`${this.editorPrefix}-mobile-track-changes-${this.appConfig.fileKey || ''}`, checked);\n }\n }\n\n onAcceptAll () {\n const api = Common.EditorApi.get();\n api.asc_AcceptAllChanges();\n }\n\n onRejectAll () {\n const api = Common.EditorApi.get();\n api.asc_RejectAllChanges();\n }\n\n onDisplayMode (mode) {\n const api = Common.EditorApi.get();\n let type = Asc.c_oAscDisplayModeInReview.Edit;\n switch (mode) {\n case 'final':\n type = Asc.c_oAscDisplayModeInReview.Final;\n break;\n case 'original':\n type = Asc.c_oAscDisplayModeInReview.Original;\n break;\n }\n api.asc_SetDisplayModeInReview(type);\n !this.appConfig.isEdit && !this.appConfig.isRestrictedEdit && LocalStorage.setItem(\"de-view-review-mode\", mode);\n this.props.storeReview.changeDisplayMode(mode);\n }\n\n render() {\n const displayMode = this.props.storeReview.displayMode;\n const isReviewOnly = this.appConfig.isReviewOnly;\n const isProtected = this.appConfig.isProtected;\n const canReview = this.appConfig.canReview;\n const canUseReviewPermissions = this.appConfig.canUseReviewPermissions;\n const isRestrictedEdit = this.appConfig.isRestrictedEdit;\n\n return (\n \n )\n }\n}\n\nclass ReviewChange extends Component {\n constructor (props) {\n super(props);\n this.onAcceptCurrentChange = this.onAcceptCurrentChange.bind(this);\n this.onRejectCurrentChange = this.onRejectCurrentChange.bind(this);\n this.onGotoNextChange = this.onGotoNextChange.bind(this);\n this.onDeleteChange = this.onDeleteChange.bind(this);\n\n this.appConfig = props.storeAppOptions;\n }\n \n dateToLocaleTimeString (date, lang) {\n const format = (date) => {\n let strTime,\n hours = date.getHours(),\n minutes = date.getMinutes(),\n ampm = hours >= 12 ? 'pm' : 'am';\n\n hours = hours % 12;\n hours = hours ? hours : 12; // the hour '0' should be '12'\n minutes = minutes < 10 ? '0' + minutes : minutes;\n strTime = hours + ':' + minutes + ' ' + ampm;\n\n return strTime;\n };\n\n lang = (lang || 'en').replace('_', '-').toLowerCase();\n try {\n return date.toLocaleString(lang, {dateStyle: 'short', timeStyle: 'short'});\n } catch (e) {\n lang = 'en';\n return date.toLocaleString(lang, {dateStyle: 'short', timeStyle: 'short'});\n }\n\n // MM/dd/yyyy hh:mm AM\n return (date.getMonth() + 1) + '/' + (date.getDate()) + '/' + date.getFullYear() + ' ' + format(date);\n }\n getArrChangeReview (data) {\n const api = Common.EditorApi.get();\n\n const { t } = this.props;\n const _t = t(\"Common.Collaboration\", { returnObjects: true });\n\n if (data.length === 0) return [];\n const arr = [];\n const c_paragraphLinerule = {\n LINERULE_LEAST: 0,\n LINERULE_AUTO: 1,\n LINERULE_EXACT: 2\n };\n data.forEach((item) => {\n let changeText = [], proptext = [],\n value = item.get_Value(),\n movetype = item.get_MoveType();\n switch (item.get_Type()) {\n case Asc.c_oAscRevisionsChangeType.TextAdd:\n changeText.push();\n if (typeof value == 'object') {\n value.forEach( (obj) => {\n if (typeof obj === 'string')\n changeText.push();\n else {\n switch (obj) {\n case 0:\n changeText.push();\n break;\n case 1:\n changeText.push();\n break;\n case 2:\n changeText.push();\n break;\n case 3:\n changeText.push();\n break;\n }\n }\n })\n } else if (typeof value === 'string') {\n changeText.push();\n }\n break;\n case Asc.c_oAscRevisionsChangeType.TextRem:\n changeText.push();\n if (typeof value == 'object') {\n value.forEach( (obj) => {\n if (typeof obj === 'string')\n changeText.push();\n else {\n switch (obj) {\n case 0:\n changeText.push();\n break;\n case 1:\n changeText.push();\n break;\n case 2:\n changeText.push();\n break;\n case 3:\n changeText.push();\n break;\n }\n }\n })\n } else if (typeof value === 'string') {\n changeText.push();\n }\n break;\n case Asc.c_oAscRevisionsChangeType.ParaAdd:\n changeText.push();\n break;\n case Asc.c_oAscRevisionsChangeType.ParaRem:\n changeText.push();\n break;\n case Asc.c_oAscRevisionsChangeType.TextPr:\n if (value.Get_Bold() !== undefined)\n proptext.push();\n if (value.Get_Italic() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Underline() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Strikeout() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_DStrikeout() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Caps() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_SmallCaps() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_VertAlign() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Color() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Highlight() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Shd() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_FontFamily() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_FontSize() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Spacing() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Position() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Lang() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n\n if (proptext.length > 0) {\n changeText.push();\n proptext.forEach((item) => {\n changeText.push(item);\n });\n } else {\n changeText.push();\n }\n break;\n case Asc.c_oAscRevisionsChangeType.ParaPr:\n if (value.Get_ContextualSpacing())\n proptext.push();\n if (value.Get_IndLeft() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_IndRight() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_IndFirstLine() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Jc() !== undefined) {\n switch (value.Get_Jc()) {\n case 0:\n proptext.length > 0 && proptext.push();\n proptext.push();\n break;\n case 1:\n proptext.length > 0 && proptext.push();\n proptext.push();\n break;\n case 2:\n proptext.length > 0 && proptext.push();\n proptext.push();\n break;\n case 3:\n proptext.length > 0 && proptext.push();\n proptext.push();\n break;\n }\n }\n if (value.Get_KeepLines() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_KeepNext()) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_PageBreakBefore()) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_SpacingLineRule() !== undefined && value.Get_SpacingLine() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n proptext.push();\n proptext.push();\n }\n if (value.Get_SpacingBeforeAutoSpacing()) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n else if (value.Get_SpacingBefore() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_SpacingAfterAutoSpacing()) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n else if (value.Get_SpacingAfter() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_WidowControl()) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_Tabs() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n if (value.Get_NumPr() !== undefined) {\n proptext.length > 0 && proptext.push();\n proptext.push()\n }\n if (value.Get_PStyle() !== undefined) {\n const style = api.asc_GetStyleNameById(value.Get_PStyle());\n if (style.length > 0) {\n proptext.length > 0 && proptext.push();\n proptext.push();\n }\n }\n\n if (proptext.length > 0) {\n changeText.push();\n proptext.forEach((item) => {\n changeText.push(item);\n });\n } else {\n changeText.push();\n }\n break;\n case Asc.c_oAscRevisionsChangeType.TablePr:\n changeText.push();\n break;\n case Asc.c_oAscRevisionsChangeType.RowsAdd:\n changeText.push();\n break;\n case Asc.c_oAscRevisionsChangeType.RowsRem:\n changeText.push();\n break;\n\n }\n let date = (item.get_DateTime() == '') ? new Date() : new Date(item.get_DateTime());\n const user = item.get_UserName();\n const userColor = item.get_UserColor();\n const goto = (item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveTo || item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveFrom);\n date = this.dateToLocaleTimeString(date, this.appConfig.lang);\n const editable = this.appConfig.isReviewOnly && (item.get_UserId() == this.appConfig.user.id) || !this.appConfig.isReviewOnly && (!this.appConfig.canUseReviewPermissions || AscCommon.UserInfoParser.canEditReview(item.get_UserName()));\n arr.push({date: date, user: user, userColor: userColor, changeText: changeText, goto: goto, editable: editable});\n });\n return arr;\n }\n\n onPrevChange () {\n const api = Common.EditorApi.get();\n api.asc_GetPrevRevisionsChange();\n }\n\n onNextChange () {\n const api = Common.EditorApi.get();\n api.asc_GetNextRevisionsChange();\n }\n\n onAcceptCurrentChange () {\n const api = Common.EditorApi.get();\n api.asc_AcceptChanges(this.dataChanges[0]);\n setTimeout(() => {\n api.asc_GetNextRevisionsChange();\n });\n }\n\n onRejectCurrentChange () {\n const api = Common.EditorApi.get();\n api.asc_RejectChanges(this.dataChanges[0]);\n setTimeout(() => {\n api.asc_GetNextRevisionsChange();\n });\n }\n\n onGotoNextChange () {\n const api = Common.EditorApi.get();\n api.asc_FollowRevisionMove(this.dataChanges[0]);\n }\n\n onDeleteChange () {\n const api = Common.EditorApi.get();\n api.asc_RejectChanges(this.dataChanges[0]);\n }\n\n render() {\n this.dataChanges = this.props.storeReview.dataChanges;\n const arrChangeReview = this.getArrChangeReview(this.dataChanges);\n let change;\n let goto = false;\n if (arrChangeReview.length > 0) {\n const name = AscCommon.UserInfoParser.getParsedName(arrChangeReview[0].user);\n change = {\n date: arrChangeReview[0].date,\n user: arrChangeReview[0].user,\n userName: Common.Utils.String.htmlEncode(name),\n color: arrChangeReview[0].userColor.get_hex(),\n text: arrChangeReview[0].changeText,\n initials: this.props.users.getInitials(name),\n editable: arrChangeReview[0].editable\n };\n goto = arrChangeReview[0].goto;\n }\n\n const isReviewOnly = this.appConfig.isReviewOnly;\n const canReview = this.appConfig.canReview;\n const displayMode = this.props.storeReview.displayMode;\n\n return (\n \n )\n }\n}\n\n\nconst InitReviewController = inject(\"storeAppOptions\", \"storeReview\")(observer(InitReview));\nconst ReviewController = inject(\"storeAppOptions\", \"storeReview\")(observer(Review));\nconst ReviewChangeController = withTranslation()(inject(\"storeAppOptions\", \"storeReview\", \"users\")(observer(ReviewChange)));\n\nexport {InitReviewController, ReviewController, ReviewChangeController};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { useIsomorphicLayoutEffect } from '../shared/use-isomorphic-layout-effect.js';\nimport { classNames, getExtraAttrs, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7, f7ready } from '../shared/f7.js';\nimport { watchProp } from '../shared/watch-prop.js';\nimport { modalStateClasses } from '../shared/modal-state-classes.js';\n\n\n\nconst Actions = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children,\n grid,\n opened = false,\n animate\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n const isOpened = useRef(opened);\n const isClosing = useRef(false);\n const f7Actions = useRef(null);\n const onOpen = instance => {\n isOpened.current = true;\n isClosing.current = false;\n emit(props, 'actionsOpen', instance);\n };\n const onOpened = instance => {\n emit(props, 'actionsOpened', instance);\n };\n const onClose = instance => {\n isOpened.current = false;\n isClosing.current = true;\n emit(props, 'actionsClose', instance);\n };\n const onClosed = instance => {\n isClosing.current = false;\n emit(props, 'actionsClosed', instance);\n };\n useImperativeHandle(ref, () => ({\n el: elRef.current,\n f7Actions: () => f7Actions.current\n }));\n\n // watch opened changes\n watchProp(opened, value => {\n if (!f7Actions.current) return;\n if (value) {\n f7Actions.current.open();\n } else {\n f7Actions.current.close();\n }\n });\n const modalEvents = method => {\n if (!f7Actions.current) return;\n f7Actions.current[method]('open', onOpen);\n f7Actions.current[method]('opened', onOpened);\n f7Actions.current[method]('close', onClose);\n f7Actions.current[method]('closed', onClosed);\n };\n const onMount = () => {\n if (!elRef.current) return;\n const {\n target,\n convertToPopover,\n forceToPopover,\n closeByBackdropClick,\n closeByOutsideClick,\n closeOnEscape,\n backdrop,\n backdropEl,\n containerEl\n } = props;\n const params = {\n el: elRef.current,\n grid\n };\n if (target) params.targetEl = target;\n if ('convertToPopover' in props) params.convertToPopover = convertToPopover;\n if ('forceToPopover' in props) params.forceToPopover = forceToPopover;\n if ('backdrop' in props) params.backdrop = backdrop;\n if ('backdropEl' in props) params.backdropEl = backdropEl;\n if ('closeByBackdropClick' in props) params.closeByBackdropClick = closeByBackdropClick;\n if ('closeByOutsideClick' in props) params.closeByOutsideClick = closeByOutsideClick;\n if ('closeOnEscape' in props) params.closeOnEscape = closeOnEscape;\n if ('animate' in props) params.animate = animate;\n if ('containerEl' in props) params.containerEl = containerEl;\n f7ready(() => {\n f7Actions.current = f7.actions.create(params);\n modalEvents('on');\n if (opened) {\n f7Actions.current.open(false);\n }\n });\n };\n const onDestroy = () => {\n if (f7Actions.current) f7Actions.current.destroy();\n f7Actions.current = null;\n };\n useIsomorphicLayoutEffect(() => {\n modalEvents('on');\n return () => {\n modalEvents('off');\n };\n });\n useIsomorphicLayoutEffect(() => {\n onMount();\n return onDestroy;\n }, []);\n const classes = classNames(className, 'actions-modal', {\n 'actions-grid': grid\n }, modalStateClasses({\n isOpened,\n isClosing\n }), colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children);\n});\nActions.displayName = 'f7-actions';\nexport default Actions;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\n\n\nconst ActionsGroup = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n children\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const classes = classNames(className, 'actions-group', colorClasses(props));\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs), children);\n});\nActionsGroup.displayName = 'f7-actions-group';\nexport default ActionsGroup;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { forwardRef, useRef, useImperativeHandle } from 'react';\nimport { classNames, getExtraAttrs, getSlots, emit } from '../shared/utils.js';\nimport { colorClasses } from '../shared/mixins.js';\nimport { f7 } from '../shared/f7.js';\n\n\nconst ComponentName = /*#__PURE__*/forwardRef((props, ref) => {\n const {\n className,\n id,\n style,\n strong,\n close = true\n } = props;\n const extraAttrs = getExtraAttrs(props);\n const elRef = useRef(null);\n useImperativeHandle(ref, () => ({\n el: elRef.current\n }));\n const classes = classNames(className, {\n 'actions-button': true,\n 'actions-button-strong': strong\n }, colorClasses(props));\n let mediaEl;\n const slots = getSlots(props);\n if (slots.media && slots.media.length) {\n mediaEl = /*#__PURE__*/React.createElement(\"div\", {\n className: \"actions-button-media\"\n }, slots.media);\n }\n const onClick = e => {\n if (elRef.current && close && f7) {\n f7.actions.close(f7.$(elRef.current).parents('.actions-modal'));\n }\n emit(props, 'click', e);\n };\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n id: id,\n style: style,\n className: classes,\n ref: elRef\n }, extraAttrs, {\n onClick: onClick\n }), mediaEl, /*#__PURE__*/React.createElement(\"div\", {\n className: \"actions-button-text\"\n }, slots.default));\n});\nComponentName.displayName = 'f7-actions-button';\nexport default ComponentName;","import React, {useState, useEffect, Fragment, useRef} from 'react';\nimport {observer, inject} from \"mobx-react\";\nimport { f7, Popup, Sheet, Popover, Page, Toolbar, Navbar, NavLeft, NavRight, NavTitle, Link, Input, Icon, List, ListItem, Actions, ActionsGroup, ActionsButton } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport {Device} from '../../../utils/device';\n\n// Utils\nconst sliceQuote = (text) => {\n if (text) {\n let sliced = text.slice(0, 100);\n if (sliced.length < text.length) {\n sliced += '...';\n return sliced;\n }\n return text;\n }\n};\n\n// Add comment\n\nconst AddCommentPopup = inject(\"storeComments\")(observer(props => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const userInfo = props.userInfo;\n const [stateText, setText] = useState('');\n let refInputComment = useRef(null);\n\n useEffect(() => {\n f7.popup.open('.add-comment-popup', false);\n\n if(refInputComment) {\n refInputComment.focus();\n }\n }, []);\n\n return (\n \n \n \n {\n f7.popup.close('.add-comment-popup');\n setTimeout(() => {\n props.closeAddComment();\n }, 500)\n }}>{_t.textCancel}\n \n {_t.textAddComment}\n \n {\n f7.popup.close('.add-comment-popup');\n setTimeout(() => {\n props.closeAddComment();\n props.onAddNewComment(stateText, false)\n }, 500);\n }}>\n {Device.android ? : _t.textDone}\n \n \n \n
                      \n
                      \n {Device.android &&\n
                      {userInfo.initials}
                      \n }\n
                      {userInfo.name}
                      \n
                      \n
                      \n \n
                      \n
                      \n
                      \n )\n}));\n\nconst AddCommentDialog = inject(\"storeComments\")(observer(props => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const userInfo = props.userInfo;\n const templateInitials = `
                      ${userInfo.initials}
                      `;\n let refContainerDialog = useRef(null);\n\n useEffect(() => {\n f7.dialog.create({\n destroyOnClose: true,\n containerEl: document.getElementById('add-comment-dialog'),\n content:\n `
                      \n
                      \n
                      \n \n
                      ${_t.textAddComment}
                      \n \n
                      \n
                      \n
                      \n
                      \n ${Device.android ? templateInitials : ''}\n
                      ${userInfo.name}
                      \n
                      \n
                      \n \n
                      \n
                      `,\n on: {\n opened: () => {\n const cancel = document.getElementById('comment-cancel');\n if(!Device.android) $$('#comment-text').focus();\n cancel.addEventListener('click', () => {\n f7.dialog.close();\n props.closeAddComment();\n });\n const done = document.getElementById('comment-done');\n done.addEventListener('click', () => {\n const value = document.getElementById('comment-text').value;\n if (value.length > 0) {\n f7.dialog.close();\n props.closeAddComment();\n props.onAddNewComment(value, false);\n }\n });\n const area = document.getElementById('comment-text');\n area.addEventListener('input', (event) => {\n if (event.target.value.length === 0 && !done.classList.contains('disabled')) {\n done.classList.add('disabled');\n } else if (event.target.value.length > 0 && done.classList.contains('disabled')) {\n done.classList.remove('disabled');\n }\n });\n done.classList.add('disabled');\n }\n }\n }).open();\n\n if(refContainerDialog) {\n const inputComment = refContainerDialog.querySelector('#comment-text');\n inputComment.focus();\n }\n }, []);\n\n return (\n
                      refContainerDialog = el} className=\"add-comment-dialog\">
                      \n );\n}));\n\nconst AddComment = props => {\n return (\n Device.phone ?\n :\n \n )\n};\n\n// Actions\nconst CommentActions = ({comment, onCommentMenuClick, opened, openActionComment}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n return (\n openActionComment(false)}>\n \n {comment && \n {comment.editable && {onCommentMenuClick('editComment', comment);}}>{_t.textEdit}}\n {!comment.resolved && comment.editable ?\n {onCommentMenuClick('resolve', comment);}}>{_t.textResolve} :\n comment.editable && {onCommentMenuClick('resolve', comment);}}>{_t.textReopen}\n }\n {onCommentMenuClick('addReply', comment);}}>{_t.textAddReply}\n {comment.removable && {onCommentMenuClick('deleteComment', comment);}}>{_t.textDeleteComment}}\n \n }\n \n \n {_t.textCancel}\n \n \n )\n};\n\nconst ReplyActions = ({comment, reply, onCommentMenuClick, opened, openActionReply}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n return (\n openActionReply(false)}>\n \n {reply && \n {reply.editable && {onCommentMenuClick('editReply', comment, reply);}}>{_t.textEdit}}\n {reply.removable && {onCommentMenuClick('deleteReply', comment, reply);}}>{_t.textDeleteReply}}\n \n }\n \n \n {_t.textCancel}\n \n \n )\n};\n\n// Edit comment\nconst EditCommentPopup = inject(\"storeComments\")(observer(({storeComments, comment, onEditComment}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const [stateText, setText] = useState(comment.comment);\n let refInputEditComment = useRef(null);\n\n useEffect(() => {\n f7.popup.open('.edit-comment-popup', false);\n\n if(refInputEditComment) {\n refInputEditComment.focus();\n }\n }, []);\n \n return (\n \n \n \n {\n f7.popup.close('.edit-comment-popup');\n setTimeout(() => {\n storeComments.openEditComment(false);\n }, 500);\n }}>{_t.textCancel}\n \n {_t.textEditComment}\n \n {\n f7.popup.close('.edit-comment-popup');\n setTimeout(() => {\n storeComments.openEditComment(false);\n onEditComment(comment, stateText);\n }, 500);\n }}\n >\n {Device.android ? : _t.textDone}\n \n \n \n
                      \n
                      \n {Device.android &&\n
                      {comment.userInitials}
                      \n }\n
                      \n
                      {comment.parsedName}
                      \n
                      {comment.date}
                      \n
                      \n
                      \n
                      \n \n
                      \n
                      \n
                      \n )\n}));\n\nconst EditCommentDialog = inject(\"storeComments\")(observer(({storeComments, comment, onEditComment}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const templateInitials = `
                      ${comment.userInitials}
                      `;\n let refContainerDialog = useRef(null);\n\n useEffect(() => {\n f7.dialog.create({\n destroyOnClose: true,\n containerEl: document.getElementById('edit-comment-dialog'),\n content:\n `
                      \n
                      \n
                      \n \n
                      ${_t.textEditComment}
                      \n \n
                      \n
                      \n
                      \n
                      \n ${Device.android ? templateInitials : ''}\n
                      \n
                      ${comment.parsedName}
                      \n
                      ${comment.date}
                      \n
                      \n
                      \n
                      \n \n
                      \n
                      `,\n on: {\n opened: () => {\n const cancel = document.getElementById('comment-cancel');\n cancel.addEventListener('click', () => {\n f7.dialog.close();\n storeComments.openEditComment(false);\n });\n const done = document.getElementById('comment-done');\n done.addEventListener('click', () => {\n const value = document.getElementById('comment-text').value;\n if (value.length > 0) {\n onEditComment(comment, value);\n f7.dialog.close();\n storeComments.openEditComment(false);\n }\n });\n const area = document.getElementById('comment-text');\n area.addEventListener('input', (event) => {\n if (event.target.value.length === 0 && !done.classList.contains('disabled')) {\n done.classList.add('disabled');\n } else if (event.target.value.length > 0 && done.classList.contains('disabled')) {\n done.classList.remove('disabled');\n }\n });\n },\n open: () => {\n $$('.dialog-backdrop.backdrop-in')[0].classList.add('over-popover');\n },\n closed: () => {\n $$('.dialog-backdrop.backdrop-in')[0].classList.remove('over-popover');\n }\n }\n }).open();\n\n if(refContainerDialog) {\n const inputComment = refContainerDialog.querySelector('#comment-text');\n inputComment.focus();\n }\n }, []);\n\n return (\n
                      refContainerDialog = el} className=\"edit-comment-dialog\">
                      \n );\n}));\n\nconst EditComment = ({comment, onEditComment}) => {\n return (\n Device.phone ?\n :\n \n )\n};\n\nconst AddReplyPopup = inject(\"storeComments\")(observer(({storeComments, userInfo, comment, onAddReply}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const [stateText, setText] = useState('');\n let refInputReplyComment = useRef(null);\n\n useEffect(() => {\n f7.popup.open('.add-reply-popup', false);\n\n if(refInputReplyComment) {\n refInputReplyComment.focus();\n }\n }, []);\n\n return (\n \n \n \n {\n f7.popup.close('.add-reply-popup');\n setTimeout(() => {\n storeComments.openAddReply(false);\n }, 500);\n }}>{_t.textCancel}\n \n {_t.textAddReply}\n \n {\n f7.popup.close('.add-reply-popup');\n setTimeout(() => {\n storeComments.openAddReply(false);\n onAddReply(comment, stateText);\n }, 500);\n }}>\n {Device.android ? : _t.textDone}\n \n \n \n
                      \n
                      \n {Device.android &&\n
                      {userInfo.initials}
                      \n }\n
                      {userInfo.name}
                      \n
                      \n
                      \n \n
                      \n
                      \n
                      \n )\n}));\n\nconst AddReplyDialog = inject(\"storeComments\")(observer(({storeComments, userInfo, comment, onAddReply}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const templateInitials = `
                      ${userInfo.initials}
                      `;\n let refContainerDialog = useRef(null);\n\n useEffect(() => {\n f7.dialog.create({\n destroyOnClose: true,\n containerEl: document.getElementById('add-reply-dialog'),\n content:\n `
                      \n
                      \n
                      \n \n
                      ${_t.textAddReply}
                      \n \n
                      \n
                      \n
                      \n
                      \n ${Device.android ? templateInitials : ''}\n
                      ${userInfo.name}
                      \n
                      \n
                      \n \n
                      \n
                      `,\n on: {\n opened: () => {\n const cancel = document.getElementById('reply-cancel');\n cancel.addEventListener('click', () => {\n f7.dialog.close();\n storeComments.openAddReply(false);\n });\n const done = document.getElementById('reply-done');\n done.addEventListener('click', () => {\n const value = document.getElementById('reply-text').value;\n if (value.length > 0) {\n onAddReply(comment, value);\n f7.dialog.close();\n storeComments.openAddReply(false);\n }\n });\n const area = document.getElementById('reply-text');\n area.addEventListener('input', (event) => {\n if (event.target.value.length === 0 && !done.classList.contains('disabled')) {\n done.classList.add('disabled');\n } else if (event.target.value.length > 0 && done.classList.contains('disabled')) {\n done.classList.remove('disabled');\n }\n });\n done.classList.add('disabled');\n },\n open: () => {\n $$('.dialog-backdrop.backdrop-in')[0].classList.add('over-popover');\n },\n closed: () => {\n $$('.dialog-backdrop.backdrop-in')[0].classList.remove('over-popover');\n }\n }\n }).open();\n\n if(refContainerDialog) {\n const inputReplyComment = refContainerDialog.querySelector('#reply-text');\n inputReplyComment.focus();\n }\n }, []);\n\n return (\n
                      refContainerDialog = el} className=\"add-reply-dialog\">
                      \n );\n}));\n\nconst AddReply = ({userInfo, comment, onAddReply}) => {\n return (\n Device.phone ?\n :\n \n )\n};\n\nconst EditReplyPopup = inject(\"storeComments\")(observer(({storeComments, comment, reply, onEditReply}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const [stateText, setText] = useState(reply.reply);\n let relInputReplyComment = useRef(null);\n\n useEffect(() => {\n f7.popup.open('.edit-reply-popup', false);\n\n if(relInputReplyComment) {\n relInputReplyComment.focus();\n }\n }, []);\n\n return (\n \n \n \n {\n f7.popup.close('.edit-reply-popup');\n setTimeout(() => {\n storeComments.openEditReply(false);\n }, 500);\n }}>{_t.textCancel}\n \n {_t.textEditReply}\n \n {\n f7.popup.close('.edit-reply-popup');\n setTimeout(() => {\n storeComments.openEditReply(false);\n onEditReply(comment, reply, stateText);\n }, 500);\n }}\n >\n {Device.android ? : _t.textDone}\n \n \n \n
                      \n
                      \n {Device.android &&\n
                      {reply.userInitials}
                      \n }\n
                      \n
                      {reply.parsedName}
                      \n
                      {reply.date}
                      \n
                      \n
                      \n
                      \n \n
                      \n
                      \n
                      \n )\n}));\n\nconst EditReplyDialog = inject(\"storeComments\")(observer(({storeComments, comment, reply, onEditReply}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const templateInitials = `
                      ${reply.userInitials}
                      `;\n let refContainerDialog = useRef(null);\n\n useEffect(() => {\n f7.dialog.create({\n destroyOnClose: true,\n containerEl: document.getElementById('edit-reply-dialog'),\n content:\n `
                      \n
                      \n
                      \n \n
                      ${_t.textEditReply}
                      \n \n
                      \n
                      \n
                      \n
                      \n ${Device.android ? templateInitials : ''}\n
                      \n
                      ${reply.parsedName}
                      \n
                      ${reply.date}
                      \n
                      \n
                      \n
                      \n \n
                      \n
                      `,\n on: {\n opened: () => {\n const cancel = document.getElementById('reply-cancel');\n cancel.addEventListener('click', () => {\n f7.dialog.close();\n storeComments.openEditReply(false);\n });\n const done = document.getElementById('reply-done');\n done.addEventListener('click', () => {\n const value = document.getElementById('reply-text').value;\n if (value.length > 0) {\n onEditReply(comment, reply, value);\n f7.dialog.close();\n storeComments.openEditReply(false);\n }\n });\n const area = document.getElementById('reply-text');\n area.addEventListener('input', (event) => {\n if (event.target.value.length === 0 && !done.classList.contains('disabled')) {\n done.classList.add('disabled');\n } else if (event.target.value.length > 0 && done.classList.contains('disabled')) {\n done.classList.remove('disabled');\n }\n });\n },\n open: () => {\n $$('.dialog-backdrop.backdrop-in')[0].classList.add('over-popover');\n },\n closed: () => {\n $$('.dialog-backdrop.backdrop-in')[0].classList.remove('over-popover');\n }\n }\n }).open();\n\n if(refContainerDialog) {\n const inputReplyComment = refContainerDialog.querySelector('#reply-text');\n inputReplyComment.focus();\n }\n }, []);\n\n return (\n
                      refContainerDialog = el} className=\"edit-reply-dialog\">
                      \n );\n}));\n\nconst EditReply = ({comment, reply, onEditReply}) => {\n return (\n Device.phone ?\n :\n \n )\n};\n\nconst pickLink = (message) => {\n let arrayComment = [], offset, len;\n message.replace(Common.Utils.ipStrongRe, function(subStr) {\n let result = /[\\.,\\?\\+;:=!\\(\\)]+$/.exec(subStr);\n if (result)\n subStr = subStr.substring(0, result.index);\n offset = arguments[arguments.length-2];\n arrayComment.push({start: offset, end: subStr.length+offset, str: window.open(subStr)} href={subStr} target=\"_blank\" data-can-copy=\"true\">{subStr}});\n return '';\n });\n\n if (message.length<1000 || message.search(/\\S{255,}/)<0)\n message.replace(Common.Utils.hostnameStrongRe, function(subStr) {\n let result = /[\\.,\\?\\+;:=!\\(\\)]+$/.exec(subStr);\n if (result)\n subStr = subStr.substring(0, result.index);\n let ref = (! /(((^https?)|(^ftp)):\\/\\/)/i.test(subStr) ) ? ('http://' + subStr) : subStr;\n offset = arguments[arguments.length-2];\n len = subStr.length;\n let elem = arrayComment.find(function(item){\n return ( (offset>=item.start) && (offsetitem.start));\n });\n if (!elem)\n arrayComment.push({start: offset, end: len+offset, str: window.open(ref)} href={ref} target=\"_blank\" data-can-copy=\"true\">{subStr}});\n return '';\n });\n\n message.replace(Common.Utils.emailStrongRe, function(subStr) {\n let ref = (! /((^mailto:)\\/\\/)/i.test(subStr) ) ? ('mailto:' + subStr) : subStr;\n offset = arguments[arguments.length-2];\n len = subStr.length;\n let elem = arrayComment.find(function(item){\n return ( (offset>=item.start) && (offsetitem.start));\n });\n if (!elem)\n arrayComment.push({start: offset, end: len+offset, str: window.open(ref)} href={ref}>{subStr}});\n return '';\n });\n\n arrayComment = arrayComment.sort(function(item1,item2){ return item1.start - item2.start; });\n \n let str_res = (arrayComment.length>0) ? : ;\n\n for (var i=1; i{str_res}{Common.Utils.String.htmlEncode(message.substring(arrayComment[i-1].end, arrayComment[i].start))}{arrayComment[i].str};\n }\n\n if (arrayComment.length>0) {\n str_res = ;\n }\n\n return str_res; \n}\n\n// View comments\n\nconst ViewComments = inject(\"storeComments\", \"storeAppOptions\", \"storeReview\")(observer(({storeComments, storeAppOptions, onCommentMenuClick, onResolveComment, showComment, storeReview, wsProps}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const isAndroid = Device.android;\n const displayMode = storeReview.displayMode;\n const isViewer = storeAppOptions.isViewer;\n const canEditComments = storeAppOptions.canEditComments;\n const viewMode = !storeAppOptions.canComments;\n const comments = storeComments.groupCollectionFilter || storeComments.collectionComments;\n const isEdit = storeAppOptions.isEdit || storeAppOptions.isRestrictedEdit;\n const sortComments = comments.length > 0 ? [...comments].sort((a, b) => a.time > b.time ? -1 : 1) : null;\n const isProtected = storeAppOptions.isProtected;\n const typeProtection = storeAppOptions.typeProtection;\n const isAvailableCommenting = !isProtected || typeProtection === Asc.c_oAscEDocProtect.TrackedChanges || typeProtection === Asc.c_oAscEDocProtect.Comments;\n\n const [clickComment, setComment] = useState();\n const [commentActionsOpened, openActionComment] = useState(false);\n\n const [reply, setReply] = useState();\n const [replyActionsOpened, openActionReply] = useState(false);\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n {!sortComments ?\n
                      {_t.textNoComments}
                      :\n \n {sortComments.map((comment, indexComment) => {\n return (\n !comment.hide &&\n {\n !e.target.closest('.comment-menu') && !e.target.closest('.reply-menu') ? showComment(comment) : null}}>\n
                      \n
                      \n {isAndroid &&
                      {comment.userInitials}
                      }\n
                      \n
                      {comment.parsedName}
                      \n
                      {comment.date}
                      \n
                      \n
                      \n {isEdit && !viewMode &&\n
                      \n {(comment.editable && displayMode === 'markup' && !wsProps?.Objects && (!isViewer || canEditComments) && isAvailableCommenting) &&
                      {onResolveComment(comment);}}>
                      }\n {(displayMode === 'markup' && !wsProps?.Objects && (!isViewer || canEditComments) && isAvailableCommenting) &&\n
                      {setComment(comment); openActionComment(true);}}>\n \n
                      \n }\n
                      \n }\n
                      \n
                      \n {comment.quote &&
                      {sliceQuote(comment.quote)}
                      }\n
                      {pickLink(comment.comment)}
                      \n {comment.replies.length > 0 &&\n
                        \n {comment.replies.map((reply, indexReply) => {\n return (\n
                      • \n
                        \n
                        \n
                        \n
                        \n
                        \n {isAndroid &&
                        {reply.userInitials}
                        }\n
                        \n
                        {reply.parsedName}
                        \n
                        {reply.date}
                        \n
                        \n
                        \n {isEdit && !viewMode && reply.editable && (!isViewer || canEditComments) && isAvailableCommenting &&\n
                        \n
                        {setComment(comment); setReply(reply); openActionReply(true);}}\n >\n \n
                        \n
                        \n }\n
                        \n
                        \n
                        {pickLink(reply.reply)}
                        \n
                        \n
                        \n
                        \n
                        \n
                      • \n )\n })}\n
                      \n }\n
                      \n
                      \n )\n })}\n
                      \n }\n\n \n \n
                      \n )\n}));\n\nconst CommentList = inject(\"storeComments\", \"storeAppOptions\", \"storeReview\")(observer(({storeComments, storeAppOptions, onCommentMenuClick, onResolveComment, storeReview, wsProps}) => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const isAndroid = Device.android;\n const displayMode = storeReview.displayMode;\n const isViewer = storeAppOptions.isViewer;\n const canEditComments = storeAppOptions.canEditComments;\n const viewMode = !storeAppOptions.canComments;\n const isEdit = storeAppOptions.isEdit || storeAppOptions.isRestrictedEdit;\n const comments = storeComments.showComments;\n const isProtected = storeAppOptions.isProtected;\n const typeProtection = storeAppOptions.typeProtection;\n const isAvailableCommenting = !isProtected || typeProtection === Asc.c_oAscEDocProtect.TrackedChanges || typeProtection === Asc.c_oAscEDocProtect.Comments;\n\n const [currentIndex, setCurrentIndex] = useState(0);\n const comment = comments[currentIndex];\n\n const [commentActionsOpened, openActionComment] = useState(false);\n\n const [reply, setReply] = useState();\n const [replyActionsOpened, openActionReply] = useState(false);\n\n const onViewPrevComment = () => {\n if (currentIndex - 1 < 0) {\n setCurrentIndex(comments.length - 1);\n } else {\n setCurrentIndex(currentIndex - 1);\n }\n };\n\n const onViewNextComment = () => {\n if (currentIndex + 1 >= comments.length) {\n setCurrentIndex(0);\n } else {\n setCurrentIndex(currentIndex + 1);\n }\n };\n\n if(!comment) {\n if (comments.length > 0) {\n onViewNextComment();\n }\n return null;\n }\n\n return (\n \n \n {isEdit && !viewMode &&\n {onCommentMenuClick('addReply', comment);}}>{_t.textAddReply}\n }\n {comments.length > 1 &&\n
                      \n \n \n
                      \n }\n
                      \n
                      \n \n \n \n
                      \n
                      \n {isAndroid &&
                      {comment.userInitials}
                      }\n
                      \n
                      {comment.parsedName}
                      \n
                      {comment.date}
                      \n
                      \n
                      \n {isEdit && !viewMode &&\n
                      \n {(comment.editable && displayMode === 'markup' && !wsProps?.Objects && (!isViewer || canEditComments) && isAvailableCommenting) &&
                      {onResolveComment(comment);}}>
                      }\n {(displayMode === 'markup' && !wsProps?.Objects && (!isViewer || canEditComments) && isAvailableCommenting) &&\n
                      {openActionComment(true);}}>\n \n
                      \n }\n
                      \n }\n
                      \n
                      \n {comment.quote &&
                      {sliceQuote(comment.quote)}
                      }\n
                      {pickLink(comment.comment)}
                      \n {comment.replies.length > 0 &&\n
                        \n {comment.replies.map((reply, indexReply) => {\n return (\n
                      • \n
                        \n
                        \n
                        \n
                        \n
                        \n {isAndroid &&
                        {reply.userInitials}
                        }\n
                        \n
                        {reply.parsedName}
                        \n
                        {reply.date}
                        \n
                        \n
                        \n {isEdit && !viewMode && reply.editable && (!isViewer || canEditComments) && isAvailableCommenting &&\n
                        \n
                        {setReply(reply); openActionReply(true);}}\n >\n \n
                        \n
                        \n }\n
                        \n
                        \n
                        {pickLink(reply.reply)}
                        \n
                        \n
                        \n
                        \n
                        \n
                      • \n )\n })}\n
                      \n }\n
                      \n
                      \n
                      \n \n \n
                      \n
                      \n
                      \n )\n\n}));\n\nconst ViewCommentSheet = ({closeCurComments, onCommentMenuClick, onResolveComment, wsProps}) => {\n useEffect(() => {\n f7.sheet.open('#view-comment-sheet');\n });\n\n const [stateHeight, setHeight] = useState('45%');\n const [stateOpacity, setOpacity] = useState(1);\n\n const [stateStartY, setStartY] = useState();\n const [isNeedClose, setNeedClose] = useState(false);\n\n const handleTouchStart = (event) => {\n const touchObj = event.changedTouches[0];\n setStartY(parseInt(touchObj.clientY));\n };\n const handleTouchMove = (event) => {\n const touchObj = event.changedTouches[0];\n const dist = parseInt(touchObj.clientY) - stateStartY;\n if (dist < 0) { // to top\n setHeight('90%');\n setOpacity(1);\n setNeedClose(false);\n } else if (dist < 80) {\n setHeight('45%');\n setOpacity(1);\n setNeedClose(false);\n } else {\n setNeedClose(true);\n setOpacity(0.6);\n }\n };\n const handleTouchEnd = (event) => {\n const touchObj = event.changedTouches[0];\n const swipeEnd = parseInt(touchObj.clientY);\n const dist = swipeEnd - stateStartY;\n if (isNeedClose) {\n closeCurComments();\n } else if (stateHeight === '90%' && dist > 20) {\n setHeight('45%');\n }\n };\n return (\n \n
                      \n \n
                      \n \n
                      \n )\n};\n\nconst ViewCommentPopover = ({onCommentMenuClick, onResolveComment, wsProps}) => {\n useEffect(() => {\n f7.popover.open('#view-comment-popover', '#btn-coauth');\n });\n\n return (\n \n \n \n )\n};\n\nconst ViewCurrentComments = props => {\n return (\n Device.phone ?\n :\n \n )\n};\n\nexport {\n AddComment,\n EditComment,\n AddReply,\n EditReply,\n ViewComments,\n ViewCurrentComments\n};\n","export const getUserColor = (id, intValue) => {\n\tconst api = Common.EditorApi.get();\n\tconst color = api.asc_getUserColorById(id);\n\tconst userColors = [\"#\" + (\"000000\" + color.toString(16)).slice(-6), color];\n\n\treturn intValue ? userColors[1] : userColors[0];\n}","import React, {Component, Fragment} from 'react';\nimport { inject, observer } from \"mobx-react\";\nimport { f7 } from 'framework7-react';\nimport {Device} from '../../../../../common/mobile/utils/device';\nimport { withTranslation} from 'react-i18next';\nimport { LocalStorage } from '../../../utils/LocalStorage.mjs';\n\nimport {AddComment, EditComment, AddReply, EditReply, ViewComments, ViewCurrentComments} from '../../view/collaboration/Comments';\nimport { getUserColor } from '../../../utils/getUserColor';\n\n// utils\nconst timeZoneOffsetInMs = (new Date()).getTimezoneOffset() * 60000;\nconst utcDateToString = (date) => {\n if (Object.prototype.toString.call(date) === '[object Date]')\n return (date.getTime() - timeZoneOffsetInMs).toString();\n return '';\n};\nconst ooDateToString = (date) => {\n if (Object.prototype.toString.call(date) === '[object Date]')\n return (date.getTime()).toString();\n return '';\n};\nconst stringOOToLocalDate = (date) => {\n if (typeof date === 'string')\n return parseInt(date);\n return 0;\n};\nconst stringUtcToLocalDate = (date) => {\n if (typeof date === 'string')\n return parseInt(date) + timeZoneOffsetInMs;\n return 0;\n};\nconst dateToLocaleTimeString = (date, lang) => {\n const format = (date) => {\n let hours = date.getHours();\n let minutes = date.getMinutes();\n let ampm = hours >= 12 ? 'pm' : 'am';\n\n hours = hours % 12;\n hours = hours ? hours : 12; // the hour '0' should be '12'\n minutes = minutes < 10 ? '0' + minutes : minutes;\n return hours + ':' + minutes + ' ' + ampm;\n };\n lang = (lang || 'en').replace('_', '-').toLowerCase();\n try {\n return date.toLocaleString(lang, {dateStyle: 'short', timeStyle: 'short'});\n } catch (e) {\n lang = 'en';\n return date.toLocaleString(lang, {dateStyle: 'short', timeStyle: 'short'});\n }\n\n // MM/dd/yyyy hh:mm AM\n return (date.getMonth() + 1) + '/' + (date.getDate()) + '/' + date.getFullYear() + ' ' + format(date);\n};\nconst parseUserName = name => {\n return AscCommon.UserInfoParser.getParsedName(name);\n};\n//end utils\n\nclass CommentsController extends Component {\n constructor(props) {\n super(props);\n this.usersStore = this.props.users;\n this.appOptions = this.props.storeAppOptions;\n this.storeComments = this.props.storeComments;\n this.storeApplicationSettings = this.props.storeApplicationSettings;\n\n Common.Notifications.on('engineCreated', api => {\n api.asc_registerCallback('asc_onAddComment', this.addComment.bind(this));\n api.asc_registerCallback('asc_onAddComments', this.addComments.bind(this));\n api.asc_registerCallback('asc_onRemoveComment', this.removeComment.bind(this));\n api.asc_registerCallback('asc_onRemoveComments', this.removeComments.bind(this));\n api.asc_registerCallback('asc_onChangeCommentData', this.changeCommentData.bind(this));\n api.asc_registerCallback('asc_onShowComment', this.changeShowComments.bind(this));\n api.asc_registerCallback('asc_onHideComment', this.hideComments.bind(this));\n\n if (window.editorType === 'sse') {\n api.asc_registerCallback('asc_onActiveSheetChanged', this.onApiActiveSheetChanged.bind(this));\n Common.Notifications.on('comments:filterchange', this.onFilterChange.bind(this));\n Common.Notifications.on('sheet:active', this.onApiActiveSheetChanged.bind(this));\n }\n });\n\n Common.Notifications.on('document:ready', () => {\n if (window.editorType === 'de' || window.editorType === 'sse') {\n const api = Common.EditorApi.get();\n /** coauthoring begin **/\n const isLiveCommenting = LocalStorage.getBool(`${window.editorType}-mobile-settings-livecomment`, true);\n const resolved = LocalStorage.getBool(`${window.editorType}-settings-resolvedcomment`);\n this.storeApplicationSettings.changeDisplayComments(isLiveCommenting);\n this.storeApplicationSettings.changeDisplayResolved(resolved);\n isLiveCommenting ? api.asc_showComments(resolved) : api.asc_hideComments();\n /** coauthoring end **/\n }\n\n this.curUserId = this.props.users.currentUser.asc_getIdOriginal();\n });\n }\n onApiActiveSheetChanged (index) {\n this.onFilterChange(['doc', 'sheet' + Common.EditorApi.get().asc_getWorksheetId(index)]);\n }\n addComment (id, data) {\n const comment = this.readSDKComment(id, data);\n \n if (comment) {\n this.storeComments.addComment(comment);\n this.changeShowComments([comment.uid]);\n }\n }\n addComments (data) {\n for (let i = 0; i < data.length; ++i) {\n const comment = this.readSDKComment(data[i].asc_getId(), data[i]);\n this.storeComments.addComment(comment);\n }\n }\n removeComment (id) {\n this.storeComments.removeComment(id);\n if (this.storeComments.showComments.length < 1) {\n Device.phone ? f7.sheet.close('#view-comment-sheet') : f7.popover.close('#view-comment-popover');\n }\n }\n removeComments (data) {\n for (let i = 0; i < data.length; i++) {\n this.removeComment(data[i]);\n }\n }\n changeShowComments (id) {\n this.storeComments.changeShowComment(id);\n }\n hideComments () {\n //Common.Notifications.trigger('closeviewcomment');\n }\n changeCommentData (id, data) {\n const changeComment = {};\n\n const date = (data.asc_getOnlyOfficeTime()) ? new Date(stringOOToLocalDate(data.asc_getOnlyOfficeTime())) :\n ((data.asc_getTime() === '') ? new Date() : new Date(stringUtcToLocalDate(data.asc_getTime())));\n\n const userId = data.asc_getUserId()\n const user = this.usersStore.searchUserById(userId);\n const name = data.asc_getUserName();\n const parsedName = parseUserName(name);\n\n changeComment.comment = data.asc_getText();\n changeComment.userId = userId;\n changeComment.userName = name;\n changeComment.parsedName = Common.Utils.String.htmlEncode(parsedName);\n changeComment.userInitials = this.usersStore.getInitials(parsedName);\n changeComment.userColor = (user) ? user.asc_getColor() : getUserColor(userId || name);\n changeComment.resolved = data.asc_getSolved();\n changeComment.quote = data.asc_getQuoteText();\n changeComment.time = date.getTime();\n changeComment.date = dateToLocaleTimeString(date, this.appOptions.lang);\n changeComment.editable = (this.appOptions.canEditComments || (data.asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canEditComment(name);\n changeComment.removable = (this.appOptions.canDeleteComments || (data.asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canDeleteComment(name);\n changeComment.hide = !AscCommon.UserInfoParser.canViewComment(name);\n\n let dateReply = null;\n const replies = [];\n\n const repliesCount = data.asc_getRepliesCount();\n for (let i = 0; i < repliesCount; ++i) {\n\n dateReply = (data.asc_getReply(i).asc_getOnlyOfficeTime()) ? new Date(stringOOToLocalDate(data.asc_getReply(i).asc_getOnlyOfficeTime())) :\n ((data.asc_getReply(i).asc_getTime() === '') ? new Date() : new Date(stringUtcToLocalDate(data.asc_getReply(i).asc_getTime())));\n\n const userId = data.asc_getReply(i).asc_getUserId();\n const user = this.usersStore.searchUserById(userId);\n const userName = data.asc_getReply(i).asc_getUserName();\n const parsedName = parseUserName(userName);\n\n replies.push({\n ind: i,\n userId,\n userName,\n parsedName: Common.Utils.String.htmlEncode(parsedName),\n userColor: (user) ? user.asc_getColor() : getUserColor(userId || userName),\n date: dateToLocaleTimeString(dateReply, this.appOptions.lang),\n reply: data.asc_getReply(i).asc_getText(),\n time: dateReply.getTime(),\n userInitials: this.usersStore.getInitials(parsedName),\n editable: (this.appOptions.canEditComments || (data.asc_getReply(i).asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canEditComment(userName),\n removable: (this.appOptions.canDeleteComments || (data.asc_getReply(i).asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canDeleteComment(userName)\n });\n }\n changeComment.replies = replies;\n\n this.props.storeComments.changeComment(id, changeComment);\n }\n onFilterChange (filter) {\n this.storeComments.changeFilter(filter);\n }\n readSDKComment (id, data) {\n const date = (data.asc_getOnlyOfficeTime()) ? new Date(stringOOToLocalDate(data.asc_getOnlyOfficeTime())) :\n ((data.asc_getTime() === '') ? new Date() : new Date(stringUtcToLocalDate(data.asc_getTime())));\n const userId = data.asc_getUserId();\n const user = this.usersStore.searchUserById(userId);\n const groupName = id.substr(0, id.lastIndexOf('_')+1).match(/^(doc|sheet[0-9_]+)_/);\n const userName = data.asc_getUserName();\n const parsedName = parseUserName(userName);\n const comment = {\n uid : id,\n userId,\n userName,\n parsedName,\n userColor : (user) ? user.asc_getColor() : getUserColor(userId || userName),\n date : dateToLocaleTimeString(date, this.appOptions.lang),\n quote : data.asc_getQuoteText(),\n comment : data.asc_getText(),\n resolved : data.asc_getSolved(),\n unattached : !!data.asc_getDocumentFlag ? data.asc_getDocumentFlag() : false,\n time : date.getTime(),\n replies : [],\n groupName : (groupName && groupName.length>1) ? groupName[1] : null,\n userInitials : this.usersStore.getInitials(parsedName),\n editable : (this.appOptions.canEditComments || (data.asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canEditComment(userName),\n removable : (this.appOptions.canDeleteComments || (data.asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canDeleteComment(userName),\n hide : !AscCommon.UserInfoParser.canViewComment(userName),\n };\n if (comment) {\n const replies = this.readSDKReplies(data);\n if (replies.length > 0) {\n comment.replies = replies;\n }\n }\n return comment;\n }\n readSDKReplies (data) {\n const replies = [];\n const repliesCount = data.asc_getRepliesCount();\n let i = 0;\n let date = null;\n if (repliesCount) {\n for (i = 0; i < repliesCount; ++i) {\n date = (data.asc_getReply(i).asc_getOnlyOfficeTime()) ? new Date(stringOOToLocalDate(data.asc_getReply(i).asc_getOnlyOfficeTime())) :\n ((data.asc_getReply(i).asc_getTime() === '') ? new Date() : new Date(stringUtcToLocalDate(data.asc_getReply(i).asc_getTime())));\n const userId = data.asc_getReply(i).asc_getUserId();\n const user = this.usersStore.searchUserById(userId);\n const userName = data.asc_getReply(i).asc_getUserName();\n const parsedName = parseUserName(userName);\n\n replies.push({\n ind : i,\n userId,\n userName,\n parsedName : Common.Utils.String.htmlEncode(parsedName),\n userColor : (user) ? user.asc_getColor() : getUserColor(userId || userName),\n date : dateToLocaleTimeString(date, this.appOptions.lang),\n reply : data.asc_getReply(i).asc_getText(),\n time : date.getTime(),\n userInitials : this.usersStore.getInitials(parsedName),\n editable : (this.appOptions.canEditComments || (data.asc_getReply(i).asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canEditComment(userName),\n removable : (this.appOptions.canDeleteComments || (data.asc_getReply(i).asc_getUserId() === this.curUserId)) && AscCommon.UserInfoParser.canDeleteComment(userName)\n });\n }\n }\n return replies;\n }\n render() {\n return null;\n }\n}\n\nclass AddCommentController extends Component {\n constructor(props) {\n super(props);\n this.closeAddComment = this.closeAddComment.bind(this);\n this.getUserInfo = this.getUserInfo.bind(this);\n this.onAddNewComment = this.onAddNewComment.bind(this);\n\n this.state = {\n isOpen: false\n };\n\n Common.Notifications.on('addcomment', () => {\n f7.popover.close('#idx-context-menu-popover'); //close context menu\n this.setState({isOpen: true});\n });\n }\n closeAddComment () {\n this.setState({isOpen: false});\n }\n getUserInfo () {\n this.currentUser = this.props.users.currentUser;\n if (!this.currentUser) {\n this.currentUser = this.props.users.setCurrentUser(this.props.storeAppOptions.user.id);\n }\n const name = parseUserName(this.currentUser.asc_getUserName());\n return {\n name: Common.Utils.String.htmlEncode(name),\n initials: this.props.users.getInitials(name),\n color: this.currentUser.asc_getColor()\n };\n }\n onAddNewComment (commentText, documentFlag) {\n const api = Common.EditorApi.get();\n let comment;\n if (typeof Asc.asc_CCommentDataWord !== 'undefined') {\n comment = new Asc.asc_CCommentDataWord(null);\n } else {\n comment = new Asc.asc_CCommentData(null);\n }\n if (commentText.length > 0) {\n comment.asc_putText(commentText);\n comment.asc_putTime(utcDateToString(new Date()));\n comment.asc_putOnlyOfficeTime(ooDateToString(new Date()));\n comment.asc_putUserId(this.currentUser.asc_getIdOriginal());\n comment.asc_putUserName(this.currentUser.asc_getUserName());\n comment.asc_putSolved(false);\n\n !!comment.asc_putDocumentFlag && comment.asc_putDocumentFlag(documentFlag);\n\n api.asc_addComment(comment);\n Common.Notifications.trigger('viewcomment');\n }\n }\n render() {\n return(\n this.state.isOpen ? : null\n )\n }\n}\n\nclass EditCommentController extends Component {\n constructor (props) {\n super(props);\n this.onEditComment = this.onEditComment.bind(this);\n this.onAddReply = this.onAddReply.bind(this);\n this.onEditReply = this.onEditReply.bind(this);\n }\n getUserInfo () {\n this.currentUser = this.props.users.currentUser;\n const name = parseUserName(this.currentUser.asc_getUserName());\n return {\n name: Common.Utils.String.htmlEncode(name),\n initials: this.props.users.getInitials(name),\n color: this.currentUser.asc_getColor()\n };\n }\n onChangeComment (comment) {\n const ascComment = typeof Asc.asc_CCommentDataWord !== 'undefined' ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null);\n if (ascComment && comment) {\n ascComment.asc_putText(comment.comment);\n ascComment.asc_putQuoteText(comment.quote);\n ascComment.asc_putTime(utcDateToString(new Date(comment.time)));\n ascComment.asc_putOnlyOfficeTime(ooDateToString(new Date(comment.time)));\n ascComment.asc_putUserId(comment.userId);\n ascComment.asc_putUserName(comment.userName);\n ascComment.asc_putSolved(comment.resolved);\n ascComment.asc_putGuid(comment.guid);\n\n if (!!ascComment.asc_putDocumentFlag) {\n ascComment.asc_putDocumentFlag(comment.unattached);\n }\n\n const reply = comment.replies;\n if (reply && reply.length > 0) {\n reply.forEach((reply) => {\n const addReply = (typeof Asc.asc_CCommentDataWord !== 'undefined' ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n if (addReply) {\n addReply.asc_putText(reply.reply);\n addReply.asc_putTime(utcDateToString(new Date(reply.time)));\n addReply.asc_putOnlyOfficeTime(ooDateToString(new Date(reply.time)));\n addReply.asc_putUserId(reply.userId);\n addReply.asc_putUserName(reply.userName);\n\n ascComment.asc_addReply(addReply);\n }\n });\n }\n const api = Common.EditorApi.get();\n api.asc_changeComment(comment.uid, ascComment);\n }\n }\n onEditComment (comment, text) {\n const changeComment = {...comment};\n changeComment.comment = text.trim();\n const user = this.props.users.currentUser;\n changeComment.userid = user.asc_getIdOriginal();\n changeComment.username = user.asc_getUserName();\n this.onChangeComment(changeComment);\n }\n onAddReply (comment, replyVal) {\n let reply = null;\n let addReply = null;\n const ascComment = (typeof Asc.asc_CCommentDataWord !== 'undefined' ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n\n if (ascComment) {\n ascComment.asc_putText(comment.comment);\n ascComment.asc_putQuoteText(comment.quote);\n ascComment.asc_putTime(utcDateToString(new Date(comment.time)));\n ascComment.asc_putOnlyOfficeTime(ooDateToString(new Date(comment.time)));\n ascComment.asc_putUserId(comment.userId);\n ascComment.asc_putUserName(comment.userName);\n ascComment.asc_putSolved(comment.resolved);\n ascComment.asc_putGuid(comment.guid);\n\n if (!!ascComment.asc_putDocumentFlag) {\n ascComment.asc_putDocumentFlag(comment.unattached);\n }\n\n reply = comment.replies;\n if (reply && reply.length) {\n reply.forEach(function (reply) {\n\n addReply = (typeof Asc.asc_CCommentDataWord !== 'undefined' ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n if (addReply) {\n addReply.asc_putText(reply.reply);\n addReply.asc_putTime(utcDateToString(new Date(reply.time)));\n addReply.asc_putOnlyOfficeTime(ooDateToString(new Date(reply.time)));\n addReply.asc_putUserId(reply.userId);\n addReply.asc_putUserName(reply.userName);\n\n ascComment.asc_addReply(addReply);\n }\n });\n }\n\n addReply = (typeof Asc.asc_CCommentDataWord !== 'undefined' ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n if (addReply) {\n addReply.asc_putText(replyVal);\n addReply.asc_putTime(utcDateToString(new Date()));\n addReply.asc_putOnlyOfficeTime(ooDateToString(new Date()));\n const currentUser = this.props.users.currentUser;\n addReply.asc_putUserId(currentUser.asc_getIdOriginal());\n addReply.asc_putUserName(currentUser.asc_getUserName());\n\n ascComment.asc_addReply(addReply);\n\n const api = Common.EditorApi.get();\n api.asc_changeComment(comment.uid, ascComment);\n }\n }\n }\n onEditReply (comment, reply, textReply) {\n const currentUser = this.props.users.currentUser;\n const indReply = reply.ind;\n const changeComment = {...comment};\n changeComment.replies = [...comment.replies];\n changeComment.replies[indReply] = {...reply};\n changeComment.replies[indReply].reply = textReply;\n changeComment.replies[indReply].userid = currentUser.asc_getIdOriginal();\n changeComment.replies[indReply].username = currentUser.asc_getUserName();\n this.onChangeComment(changeComment);\n }\n render() {\n const storeComments = this.props.storeComments;\n const comment = storeComments.currentComment;\n return (\n \n {storeComments.isOpenEditComment && }\n {storeComments.isOpenAddReply && }\n {storeComments.isOpenEditReply && }\n \n )\n }\n}\n\nclass ViewCommentsController extends Component {\n constructor (props) {\n super(props);\n this.onCommentMenuClick = this.onCommentMenuClick.bind(this);\n this.onResolveComment = this.onResolveComment.bind(this);\n this.closeViewCurComments = this.closeViewCurComments.bind(this);\n\n this.state = {\n isOpenViewCurComments: false\n };\n\n Common.Notifications.on('viewcomment', () => {\n this.setState({isOpenViewCurComments: true});\n });\n Common.Notifications.on('closeviewcomment', () => {\n this.closeViewCurComments();\n });\n }\n closeViewCurComments () {\n if (Device.phone) {\n f7.sheet.close('#view-comment-sheet');\n } else {\n f7.popover.close('#view-comment-popover');\n }\n this.setState({isOpenViewCurComments: false});\n }\n onResolveComment (comment) {\n let reply = null,\n addReply = null,\n ascComment = (typeof Asc.asc_CCommentDataWord !== 'undefined' ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n\n if (ascComment && comment) {\n ascComment.asc_putText(comment.comment);\n ascComment.asc_putQuoteText(comment.quote);\n ascComment.asc_putTime(utcDateToString(new Date(comment.time)));\n ascComment.asc_putOnlyOfficeTime(ooDateToString(new Date(comment.time)));\n ascComment.asc_putUserId(comment.userId);\n ascComment.asc_putUserName(comment.userName);\n ascComment.asc_putSolved(!comment.resolved);\n ascComment.asc_putGuid(comment.guid);\n\n if (!!ascComment.asc_putDocumentFlag) {\n ascComment.asc_putDocumentFlag(comment.unattached);\n }\n\n reply = comment.replies;\n if (reply && reply.length > 0) {\n reply.forEach((reply) => {\n addReply = (typeof Asc.asc_CCommentDataWord !== 'undefined' ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n if (addReply) {\n addReply.asc_putText(reply.reply);\n addReply.asc_putTime(utcDateToString(new Date(reply.time)));\n addReply.asc_putOnlyOfficeTime(ooDateToString(new Date(reply.time)));\n addReply.asc_putUserId(reply.userId);\n addReply.asc_putUserName(reply.userName);\n\n ascComment.asc_addReply(addReply);\n }\n });\n }\n const api = Common.EditorApi.get();\n api.asc_showComments(this.props.storeApplicationSettings.isResolvedComments);\n api.asc_changeComment(comment.uid, ascComment);\n\n if(!this.props.storeApplicationSettings.isResolvedComments) {\n this.closeViewCurComments();\n }\n }\n }\n deleteComment (comment) {\n const api = Common.EditorApi.get();\n comment && api.asc_removeComment(comment.uid);\n }\n deleteReply (comment, reply) {\n let replies = null,\n addReply = null,\n ascComment = (!!Asc.asc_CCommentDataWord ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n\n const indReply = reply.ind;\n\n if (ascComment && comment) {\n ascComment.asc_putText(comment.comment);\n ascComment.asc_putQuoteText(comment.quote);\n ascComment.asc_putTime(utcDateToString(new Date(comment.time)));\n ascComment.asc_putOnlyOfficeTime(ooDateToString(new Date(comment.time)));\n ascComment.asc_putUserId(comment.userId);\n ascComment.asc_putUserName(comment.userName);\n ascComment.asc_putSolved(comment.resolved);\n ascComment.asc_putGuid(comment.guid);\n\n if (!!ascComment.asc_putDocumentFlag) {\n ascComment.asc_putDocumentFlag(comment.unattached);\n }\n\n replies = comment.replies;\n if (replies && replies.length) {\n replies.forEach((reply) => {\n if (reply.ind !== indReply) {\n addReply = (!!Asc.asc_CCommentDataWord ? new Asc.asc_CCommentDataWord(null) : new Asc.asc_CCommentData(null));\n if (addReply) {\n addReply.asc_putText(reply.reply);\n addReply.asc_putTime(utcDateToString(new Date(reply.time)));\n addReply.asc_putOnlyOfficeTime(ooDateToString(new Date(reply.time)));\n addReply.asc_putUserId(reply.userId);\n addReply.asc_putUserName(reply.userName);\n\n ascComment.asc_addReply(addReply);\n }\n }\n });\n }\n const api = Common.EditorApi.get();\n api.asc_changeComment(comment.uid, ascComment);\n }\n }\n onCommentMenuClick (action, comment, reply) {\n const { t } = this.props;\n const _t = t(\"Common.Collaboration\", { returnObjects: true });\n switch (action) {\n case 'editComment':\n this.props.storeComments.openEditComment(true, comment);\n break;\n case 'resolve':\n this.onResolveComment(comment);\n break;\n case 'deleteComment':\n f7.dialog.create({\n title: _t.textDeleteComment,\n text: _t.textMessageDeleteComment,\n buttons: [\n {\n text: _t.textCancel\n },\n {\n text: _t.textOk,\n onClick: () => this.deleteComment(comment)\n }\n ]\n }).open();\n break;\n case 'editReply':\n this.props.storeComments.openEditReply(true, comment, reply);\n break;\n case 'deleteReply':\n f7.dialog.create({\n title: _t.textDeleteReply,\n text: _t.textMessageDeleteReply,\n buttons: [\n {\n text: _t.textCancel\n },\n {\n text: _t.textOk,\n onClick: () => this.deleteReply(comment, reply)\n }\n ]\n }).open();\n break;\n case 'addReply':\n this.props.storeComments.openAddReply(true, comment);\n break;\n }\n }\n\n showComment (comment) {\n const api = Common.EditorApi.get();\n\n api.asc_selectComment(comment.uid); \n api.asc_showComment(comment.uid, false);\n }\n\n\n render() {\n return(\n \n {this.props.allComments && }\n {this.state.isOpenViewCurComments && }\n \n )\n }\n}\n\nclass ViewCommentsSheetsController extends ViewCommentsController {\n constructor(props) {\n super(props);\n }\n}\n\nconst _CommentsController = inject('storeAppOptions', 'storeComments', 'users', \"storeApplicationSettings\")(observer(CommentsController));\nconst _AddCommentController = inject('storeAppOptions', 'storeComments', 'users')(observer(AddCommentController));\nconst _EditCommentController = inject('storeComments', 'users')(observer(EditCommentController));\nconst _ViewCommentsController = inject('storeComments', 'users', \"storeApplicationSettings\", \"storeReview\", \"storeAppOptions\")(observer(withTranslation()(ViewCommentsController)));\nconst _ViewCommentsSheetsController = inject('storeComments', 'users', \"storeApplicationSettings\", \"storeWorksheets\", \"storeReview\", \"storeAppOptions\")(observer(withTranslation()(ViewCommentsSheetsController)));\n\nexport {\n _CommentsController as CommentsController,\n _AddCommentController as AddCommentController,\n _EditCommentController as EditCommentController,\n _ViewCommentsController as ViewCommentsController,\n _ViewCommentsSheetsController as ViewCommentsSheetsController\n};","import React from 'react';\nimport { observer, inject } from \"mobx-react\";\nimport { List, ListItem, Navbar, NavRight, Page, Icon, Link } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport { Device } from \"../../utils/device\";\n\nconst CollaborationPage = props => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const appOptions = props.storeAppOptions;\n const isForm = appOptions.isForm;\n const sharingSettingsUrl = appOptions.sharingSettingsUrl;\n const isViewer = appOptions.isViewer;\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {(sharingSettingsUrl && !isForm) &&\n \n \n \n }\n {props.users.editUsers.length > 0 &&\n \n \n \n }\n {appOptions.canViewComments &&\n \n \n \n }\n {(window.editorType === 'de' && (appOptions.canReview || appOptions.canViewReview) && !isViewer) &&\n \n \n \n }\n \n \n )\n};\n\nlet storeInfo;\n\nswitch (window.asceditor) {\n case 'word':\n storeInfo = 'storeDocumentInfo';\n break;\n case 'slide':\n storeInfo = 'storePresentationInfo';\n break;\n case 'cell':\n storeInfo = 'storeSpreadsheetInfo';\n break;\n}\n\nconst Collaboration = inject('storeAppOptions', 'users', storeInfo)(observer(CollaborationPage));\n\nexport { Collaboration as CollaborationPage };","import React, { useEffect, useRef } from 'react';\nimport { Navbar, Page } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport { Device } from '../../utils/device';\n\nconst frameStyle = {\n width: '100%',\n height: '100%',\n minHeight: 380\n}\n\nconst ViewSharingSettings = props => {\n const { t } = useTranslation();\n const sharingSettingsUrl = props.sharingSettingsUrl;\n const _t = t('Common.Collaboration', {returnObjects: true});\n const ref = useRef(null);\n\n useEffect(() => {\n const coauthSheetElem = ref.current.closest('.coauth__sheet');\n\n if(Device.phone) {\n coauthSheetElem.style.height = '100%';\n coauthSheetElem.style.maxHeight = '100%';\n }\n\n return () => {\n if(Device.phone) {\n coauthSheetElem.style.height = null;\n coauthSheetElem.style.maxHeight = '65%';\n }\n }\n }, []);\n\n return (\n \n \n
                      \n \n
                      \n
                      \n )\n};\n\nexport default ViewSharingSettings;","import React, {useEffect} from 'react';\nimport ViewSharingSettings from \"../view/SharingSettings\";\nimport {observer, inject} from \"mobx-react\";\n\nconst SharingSettingsController = props => {\n const appOptions = props.storeAppOptions;\n const canRequestSharingSettings = appOptions.canRequestSharingSettings;\n const sharingSettingsUrl = appOptions.sharingSettingsUrl;\n\n const changeAccessRights = () => {\n if (canRequestSharingSettings) {\n Common.Gateway.requestSharingSettings();\n }\n };\n\n const setSharingSettings = data => {\n if (data) {\n Common.Notifications.trigger('collaboration:sharingupdate', data.sharingSettings);\n }\n }\n\n const onMessage = msg => {\n if(msg) {\n const msgData = JSON.parse(msg.data);\n\n if (msgData && msgData?.Referer == \"onlyoffice\") {\n if (msgData?.needUpdate) {\n setSharingSettings(msgData.sharingSettings);\n }\n props.f7router.back();\n }\n }\n };\n\n const bindWindowEvents = () => {\n if (window.addEventListener) {\n window.addEventListener(\"message\", onMessage, false);\n } else if (window.attachEvent) {\n window.attachEvent(\"onmessage\", onMessage);\n }\n };\n\n const unbindWindowEvents = () => {\n if (window.removeEventListener) {\n window.removeEventListener(\"message\", onMessage);\n } else if (window.detachEvent) {\n window.detachEvent(\"onmessage\", onMessage);\n }\n };\n\n useEffect(() => {\n bindWindowEvents();\n Common.Notifications.on('collaboration:sharing', changeAccessRights);\n\n if (!!sharingSettingsUrl && sharingSettingsUrl.length || canRequestSharingSettings) {\n Common.Gateway.on('showsharingsettings', changeAccessRights);\n Common.Gateway.on('setsharingsettings', setSharingSettings);\n }\n\n return () => {\n unbindWindowEvents();\n }\n }, []);\n\n return (\n \n );\n};\n\nexport default inject('storeAppOptions')(observer(SharingSettingsController));","import React from 'react';\nimport { observer, inject } from \"mobx-react\";\nimport { List, ListItem, Navbar, NavRight, Page, Icon, Link } from 'framework7-react';\nimport { useTranslation } from 'react-i18next';\nimport { Device } from \"../../utils/device\";\n\nconst UsersPage = inject(\"users\")(observer(props => {\n const { t } = useTranslation();\n const _t = t('Common.Collaboration', {returnObjects: true});\n const storeUsers = props.users;\n\n return (\n \n \n {Device.phone &&\n \n \n \n \n \n }\n \n \n {storeUsers.editUsers.map((user, i) => (\n 1 ? ` (${user.count})` : '')} key={i}>\n
                      \n {user.initials}\n
                      \n
                      \n ))}\n
                      \n
                      \n )\n}));\n\nexport default UsersPage;","import React, { useEffect } from 'react';\nimport { Popover, Sheet, f7, View } from 'framework7-react';\nimport { Device } from \"../../../utils/device\";\nimport { ReviewController, ReviewChangeController } from \"../../controller/collaboration/Review\";\nimport { PageDisplayMode } from \"./Review\";\nimport { ViewCommentsController, ViewCommentsSheetsController } from \"../../controller/collaboration/Comments\";\nimport SharingSettingsController from \"../../controller/SharingSettings\";\nimport { CollaborationPage } from '../../pages/CollaborationPage';\nimport UsersPage from '../../pages/UsersPage';\n\nconst routes = [\n {\n path: '/collaboration-page/',\n component: CollaborationPage,\n keepAlive: true\n },\n {\n path: '/users/',\n component: UsersPage\n },\n {\n path: '/review/',\n component: ReviewController\n },\n {\n path: '/cm-review/',\n component: ReviewController,\n options: {\n props: {\n noBack: true\n }\n }\n },\n {\n path: '/display-mode/',\n component: PageDisplayMode\n },\n {\n path: '/review-change/',\n component: ReviewChangeController\n },\n {\n path: '/cm-review-change/',\n component: ReviewChangeController,\n options: {\n props: {\n noBack: true\n }\n }\n },\n {\n path: '/comments/',\n asyncComponent: () => window.editorType == 'sse' ? ViewCommentsSheetsController : ViewCommentsController,\n options: {\n props: {\n allComments: true\n }\n }\n },\n {\n path: '/sharing-settings/',\n component: SharingSettingsController\n }\n];\n\nroutes.forEach(route => {\n route.options = {\n ...route.options,\n transition: 'f7-push'\n };\n});\n\nconst CollaborationView = props => {\n useEffect(() => {\n if(Device.phone) {\n f7.sheet.open('.coauth__sheet');\n } else {\n f7.popover.open('#coauth-popover', '#btn-coauth');\n }\n }, []);\n\n return (\n !Device.phone ?\n props.closeOptions('coauth')} closeByOutsideClick={false}>\n \n \n \n :\n props.closeOptions('coauth')}>\n \n \n \n \n )\n}\n\nexport default CollaborationView;\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","\nimport React, { Fragment, useState, useEffect } from 'react';\nimport { Input, View, Button, Link, Popover, ListItem, List, Icon, f7, Page, Navbar, NavRight } from 'framework7-react';\nimport {observer, inject} from \"mobx-react\";\n// import { __interactionsRef } from 'scheduler/tracing';\nimport { Device } from '../../../../common/mobile/utils/device';\nimport { useTranslation } from 'react-i18next';\n\nconst viewStyle = {\n height: 30\n};\n\nconst contentStyle = {\n flexGrow: 1\n};\n\nconst CellEditorView = props => {\n const [expanded, setExpanded] = useState(false);\n const isPhone = Device.isPhone;\n const storeAppOptions = props.storeAppOptions;\n const storeFunctions = props.storeFunctions;\n const storeWorksheets = props.storeWorksheets;\n const wsLock = storeWorksheets.wsLock;\n const {functionsDisable} = props.storeFocusObjects;\n const functions = storeFunctions.functions;\n const isEdit = storeAppOptions.isEdit;\n const funcArr = props.funcArr;\n const hintArr = props.hintArr;\n\n const expandClick = e => {\n setExpanded(!expanded);\n };\n\n return (\n <>\n \n \n
                      \n
                      \n